From d23b4d33622137f7245b628d77d15f8ecfef3a0d Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Mon, 4 Mar 2024 12:51:37 -0500 Subject: [PATCH 001/313] Memory queue: cancel in-progress writes on queue closed, not producer closed (#38094) Fixes a race condition that could lead to incorrect event totals and occasional panics #37702. Once a producer sends a get request to the memory queue, it must wait on the response unless the queue itself is closed, otherwise it can return a false failure. The previous code mistakenly waited on the done signal for the current producer rather than the queue. This PR adds the queue's done signal to the producer struct, and waits on that once the insert request is sent. --- CHANGELOG.next.asciidoc | 1 + libbeat/publisher/queue/memqueue/produce.go | 39 ++++-- .../publisher/queue/memqueue/queue_test.go | 121 +++++++++++++++--- 3 files changed, 131 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 7731d291ba4..77e78868b6a 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -96,6 +96,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Update github.com/lestrrat-go/jwx dependency. {pull}37799[37799] - [threatintel] MISP pagination fixes {pull}37898[37898] - Fix file handle leak when handling errors in filestream {pull}37973[37973] +- Fix a race condition that could crash Filebeat with a "negative WaitGroup counter" error {pull}38094[38094] - Prevent HTTPJSON holding response bodies between executions. {issue}35219[35219] {pull}38116[38116] - Fix "failed processing S3 event for object key" error on aws-s3 input when key contains the "+" character {issue}38012[38012] {pull}38125[38125] diff --git a/libbeat/publisher/queue/memqueue/produce.go b/libbeat/publisher/queue/memqueue/produce.go index 954ea055f4a..5ddea468e4c 100644 --- a/libbeat/publisher/queue/memqueue/produce.go +++ b/libbeat/publisher/queue/memqueue/produce.go @@ -36,9 +36,10 @@ type ackProducer struct { } type openState struct { - log *logp.Logger - done chan struct{} - events chan pushRequest + log *logp.Logger + done chan struct{} + queueDone <-chan struct{} + events chan pushRequest } // producerID stores the order of events within a single producer, so multiple @@ -58,9 +59,10 @@ type ackHandler func(count int) func newProducer(b *broker, cb ackHandler, dropCB func(interface{}), dropOnCancel bool) queue.Producer { openState := openState{ - log: b.logger, - done: make(chan struct{}), - events: b.pushChan, + log: b.logger, + done: make(chan struct{}), + queueDone: b.ctx.Done(), + events: b.pushChan, } if cb != nil { @@ -143,27 +145,40 @@ func (st *openState) Close() { func (st *openState) publish(req pushRequest) (queue.EntryID, bool) { select { case st.events <- req: - // If the output is blocked and the queue is full, `req` is written - // to `st.events`, however the queue never writes back to `req.resp`, - // which effectively blocks for ever. So we also need to select on the - // done channel to ensure we don't miss the shutdown signal. + // The events channel is buffered, which means we may successfully + // write to it even if the queue is shutting down. To avoid blocking + // forever during shutdown, we also have to wait on the queue's + // shutdown channel. select { case resp := <-req.resp: return resp, true - case <-st.done: + case <-st.queueDone: st.events = nil return 0, false } case <-st.done: st.events = nil return 0, false + case <-st.queueDone: + st.events = nil + return 0, false } } func (st *openState) tryPublish(req pushRequest) (queue.EntryID, bool) { select { case st.events <- req: - return <-req.resp, true + // The events channel is buffered, which means we may successfully + // write to it even if the queue is shutting down. To avoid blocking + // forever during shutdown, we also have to wait on the queue's + // shutdown channel. + select { + case resp := <-req.resp: + return resp, true + case <-st.queueDone: + st.events = nil + return 0, false + } case <-st.done: st.events = nil return 0, false diff --git a/libbeat/publisher/queue/memqueue/queue_test.go b/libbeat/publisher/queue/memqueue/queue_test.go index 141514483f3..53f8da4b77c 100644 --- a/libbeat/publisher/queue/memqueue/queue_test.go +++ b/libbeat/publisher/queue/memqueue/queue_test.go @@ -27,8 +27,7 @@ import ( "testing" "time" - "gotest.tools/assert" - + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/elastic/beats/v7/libbeat/publisher/queue" @@ -77,17 +76,17 @@ func TestProduceConsumer(t *testing.T) { t.Run("flush", testWith(makeTestQueue(bufferSize, batchSize/2, 100*time.Millisecond))) } -// TestProducerDoesNotBlockWhenCancelled ensures the producer Publish -// does not block indefinitely. +// TestProducerDoesNotBlockWhenQueueClosed ensures the producer Publish +// does not block indefinitely during queue shutdown. // -// Once we get a producer `p` from the queue we want to ensure +// Once we get a producer `p` from the queue `q` we want to ensure // that if p.Publish is called and blocks it will unblock once -// p.Cancel is called. +// `q.Close` is called. // // For this test we start a queue with size 2 and try to add more -// than 2 events to it, p.Publish will block, once we call p.Cancel, +// than 2 events to it, p.Publish will block, once we call q.Close, // we ensure the 3rd event was not successfully published. -func TestProducerDoesNotBlockWhenCancelled(t *testing.T) { +func TestProducerDoesNotBlockWhenQueueClosed(t *testing.T) { q := NewQueue(nil, nil, Settings{ Events: 2, // Queue size @@ -138,8 +137,12 @@ func TestProducerDoesNotBlockWhenCancelled(t *testing.T) { time.Millisecond, "the first two events were not successfully published") - // Cancel the producer, this should unblock its Publish method - p.Cancel() + // Close the queue, this should unblock the pending Publish call. + // It's not enough to just cancel the producer: once the producer + // has successfully sent a request to the queue, it must wait for + // the response unless the queue shuts down, otherwise the pipeline + // event totals will be wrong. + q.Close() require.Eventually( t, @@ -149,6 +152,88 @@ func TestProducerDoesNotBlockWhenCancelled(t *testing.T) { "test not flagged as successful, p.Publish likely blocked indefinitely") } +func TestProducerClosePreservesEventCount(t *testing.T) { + // Check for https://github.com/elastic/beats/issues/37702, a problem + // where canceling a producer while it was waiting on a response + // to an insert request could lead to inaccurate event totals. + + var activeEvents atomic.Int64 + + q := NewQueue(nil, nil, + Settings{ + Events: 3, // Queue size + MaxGetRequest: 2, + FlushTimeout: 10 * time.Millisecond, + }, 1) + + p := q.Producer(queue.ProducerConfig{ + ACK: func(count int) { + activeEvents.Add(-int64(count)) + }, + OnDrop: func(e interface{}) { + //activeEvents.Add(-1) + }, + DropOnCancel: false, + }) + + // Asynchronously, send 4 events to the queue. + // Three will be enqueued, and one will be buffered, + // until we start reading from the queue. + // This needs to run in a goroutine because the buffered + // event will block until the queue handles it. + var wgProducer sync.WaitGroup + wgProducer.Add(1) + go func() { + for i := 0; i < 4; i++ { + event := i + // For proper navigation of the race conditions inherent to this + // test: increment active events before the publish attempt, then + // decrement afterwards if it failed (otherwise the event count + // could become negative even under correct queue operation). + activeEvents.Add(1) + _, ok := p.Publish(event) + if !ok { + activeEvents.Add(-1) + } + } + wgProducer.Done() + }() + + // This sleep is regrettable, but there's no deterministic way to know when + // the producer code has buffered an event in the queue's channel. + // However, the test is written to produce false negatives only: + // - If this test fails, it _always_ indicates a bug. + // - If there is a bug, this test will _often_ fail. + time.Sleep(20 * time.Millisecond) + + // Cancel the producer, then read and acknowledge two batches. If the + // Publish calls and the queue code are working, activeEvents should + // _usually_ end up as 0, but _always_ end up non-negative. + p.Cancel() + + // The queue reads also need to be done in a goroutine, in case the + // producer cancellation signal went through before the Publish + // requests -- if only 2 events entered the queue, then the second + // Get call will block until the queue itself is cancelled. + go func() { + for i := 0; i < 2; i++ { + batch, err := q.Get(2) + // Only error to worry about is queue closing, which isn't + // a test failure. + if err == nil { + batch.Done() + } + } + }() + + // One last sleep to let things percolate, then we close the queue + // to unblock any helpers and verify that the final active event + // count isn't negative. + time.Sleep(10 * time.Millisecond) + q.Close() + assert.False(t, activeEvents.Load() < 0, "active event count should never be negative") +} + func TestQueueMetricsDirect(t *testing.T) { eventsToTest := 5 maxEvents := 10 @@ -190,7 +275,7 @@ func queueTestWithSettings(t *testing.T, settings Settings, eventsToTest int, te // Read events, don't yet ack them batch, err := testQueue.Get(eventsToTest) - assert.NilError(t, err, "error in Get") + assert.NoError(t, err, "error in Get") t.Logf("Got batch of %d events", batch.Count()) queueMetricsAreValid(t, testQueue, 5, settings.Events, 5, fmt.Sprintf("%s - Producer Getting events, no ACK", testName)) @@ -206,7 +291,7 @@ func queueMetricsAreValid(t *testing.T, q queue.Queue, evtCount, evtLimit, occup // wait briefly to avoid races across all the queue channels time.Sleep(time.Millisecond * 100) testMetrics, err := q.Metrics() - assert.NilError(t, err, "error calling metrics for test %s", test) + assert.NoError(t, err, "error calling metrics for test %s", test) assert.Equal(t, testMetrics.EventCount.ValueOr(0), uint64(evtCount), "incorrect EventCount for %s", test) assert.Equal(t, testMetrics.EventLimit.ValueOr(0), uint64(evtLimit), "incorrect EventLimit for %s", test) assert.Equal(t, testMetrics.UnackedConsumedEvents.ValueOr(0), uint64(occupied), "incorrect OccupiedRead for %s", test) @@ -266,18 +351,18 @@ func TestEntryIDs(t *testing.T) { for i := 0; i < entryCount; i++ { batch, err := q.Get(1) - assert.NilError(t, err, "Queue read should succeed") + assert.NoError(t, err, "Queue read should succeed") assert.Equal(t, batch.Count(), 1, "Returned batch should have 1 entry") metrics, err := q.Metrics() - assert.NilError(t, err, "Queue metrics call should succeed") + assert.NoError(t, err, "Queue metrics call should succeed") assert.Equal(t, metrics.OldestEntryID, queue.EntryID(i), fmt.Sprintf("Oldest entry ID before ACKing event %v should be %v", i, i)) batch.Done() waiter.waitForEvents(1) metrics, err = q.Metrics() - assert.NilError(t, err, "Queue metrics call should succeed") + assert.NoError(t, err, "Queue metrics call should succeed") assert.Equal(t, metrics.OldestEntryID, queue.EntryID(i+1), fmt.Sprintf("Oldest entry ID after ACKing event %v should be %v", i, i+1)) @@ -297,7 +382,7 @@ func TestEntryIDs(t *testing.T) { for i := 0; i < entryCount; i++ { batch, err := q.Get(1) - assert.NilError(t, err, "Queue read should succeed") + assert.NoError(t, err, "Queue read should succeed") assert.Equal(t, batch.Count(), 1, "Returned batch should have 1 entry") batches = append(batches, batch) } @@ -318,7 +403,7 @@ func TestEntryIDs(t *testing.T) { // the slight nondeterminism. time.Sleep(1 * time.Millisecond) metrics, err := q.Metrics() - assert.NilError(t, err, "Queue metrics call should succeed") + assert.NoError(t, err, "Queue metrics call should succeed") assert.Equal(t, metrics.OldestEntryID, queue.EntryID(0), fmt.Sprintf("Oldest entry ID after ACKing event %v should be 0", i)) } @@ -326,7 +411,7 @@ func TestEntryIDs(t *testing.T) { batches[0].Done() waiter.waitForEvents(100) metrics, err := q.Metrics() - assert.NilError(t, err, "Queue metrics call should succeed") + assert.NoError(t, err, "Queue metrics call should succeed") assert.Equal(t, metrics.OldestEntryID, queue.EntryID(100), fmt.Sprintf("Oldest entry ID after ACKing event 0 should be %v", queue.EntryID(entryCount))) From 0797a64da081ae1609fdbf831b6b3878b4075e88 Mon Sep 17 00:00:00 2001 From: Dan Kortschak <90160302+efd6@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:12:04 +1030 Subject: [PATCH 002/313] x-pack/filebeat/input/{cel,websocket}: prevent addition of regexp extension when no patterns are provided (#38181) In the case of cel, the extension was always being added, and then was conditionally added when a pattern was configured, resulting in a failed configuration. In the case of websocket the conditional addition was not being performed, so no failure occurred, but additional look-up load was being added. So unify the approaches to the correct conditional addition. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/cel/config_test.go | 14 ++++++++++++++ x-pack/filebeat/input/cel/input.go | 1 - x-pack/filebeat/input/websocket/cel.go | 4 +++- x-pack/filebeat/input/websocket/config_test.go | 13 +++++++++++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 77e78868b6a..f11f88e491c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -99,6 +99,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Fix a race condition that could crash Filebeat with a "negative WaitGroup counter" error {pull}38094[38094] - Prevent HTTPJSON holding response bodies between executions. {issue}35219[35219] {pull}38116[38116] - Fix "failed processing S3 event for object key" error on aws-s3 input when key contains the "+" character {issue}38012[38012] {pull}38125[38125] +- Fix duplicated addition of regexp extension in CEL input. {pull}38181[38181] *Heartbeat* diff --git a/x-pack/filebeat/input/cel/config_test.go b/x-pack/filebeat/input/cel/config_test.go index e4c98b78dc5..7acf74df08c 100644 --- a/x-pack/filebeat/input/cel/config_test.go +++ b/x-pack/filebeat/input/cel/config_test.go @@ -12,6 +12,7 @@ import ( "os" "reflect" "testing" + "time" "github.com/google/go-cmp/cmp" "golang.org/x/oauth2/google" @@ -38,6 +39,19 @@ func TestGetProviderIsCanonical(t *testing.T) { } } +func TestRegexpConfig(t *testing.T) { + cfg := config{ + Interval: time.Minute, + Program: `{}`, + Resource: &ResourceConfig{URL: &urlConfig{URL: &url.URL{}}}, + Regexps: map[string]string{"regex_cve": `[Cc][Vv][Ee]-[0-9]{4}-[0-9]{4,7}`}, + } + err := cfg.Validate() + if err != nil { + t.Errorf("failed to validate config with regexps: %v", err) + } +} + func TestIsEnabled(t *testing.T) { type enabler interface { isEnabled() bool diff --git a/x-pack/filebeat/input/cel/input.go b/x-pack/filebeat/input/cel/input.go index 12dd4c4dcec..edd7c053018 100644 --- a/x-pack/filebeat/input/cel/input.go +++ b/x-pack/filebeat/input/cel/input.go @@ -918,7 +918,6 @@ func newProgram(ctx context.Context, src, root string, client *http.Client, limi lib.Debug(debug(log, trace)), lib.File(mimetypes), lib.MIME(mimetypes), - lib.Regexp(patterns), lib.Limit(limitPolicies), lib.Globals(map[string]interface{}{ "useragent": userAgent, diff --git a/x-pack/filebeat/input/websocket/cel.go b/x-pack/filebeat/input/websocket/cel.go index 11c2e7ad8f1..0938da05353 100644 --- a/x-pack/filebeat/input/websocket/cel.go +++ b/x-pack/filebeat/input/websocket/cel.go @@ -63,11 +63,13 @@ func newProgram(ctx context.Context, src, root string, patterns map[string]*rege lib.Try(), lib.Debug(debug(log)), lib.MIME(mimetypes), - lib.Regexp(patterns), lib.Globals(map[string]interface{}{ "useragent": userAgent, }), } + if len(patterns) != 0 { + opts = append(opts, lib.Regexp(patterns)) + } env, err := cel.NewEnv(opts...) if err != nil { diff --git a/x-pack/filebeat/input/websocket/config_test.go b/x-pack/filebeat/input/websocket/config_test.go index 021bf89056f..c1aaac97328 100644 --- a/x-pack/filebeat/input/websocket/config_test.go +++ b/x-pack/filebeat/input/websocket/config_test.go @@ -6,6 +6,7 @@ package websocket import ( "fmt" + "net/url" "testing" "github.com/stretchr/testify/assert" @@ -119,3 +120,15 @@ func TestConfig(t *testing.T) { }) } } + +func TestRegexpConfig(t *testing.T) { + cfg := config{ + Program: `{}`, + URL: &urlConfig{URL: &url.URL{Scheme: "ws"}}, + Regexps: map[string]string{"regex_cve": `[Cc][Vv][Ee]-[0-9]{4}-[0-9]{4,7}`}, + } + err := cfg.Validate() + if err != nil { + t.Errorf("failed to validate config with regexps: %v", err) + } +} From a9dfc67bb4ab36baefe2838b044f8b64a107881e Mon Sep 17 00:00:00 2001 From: Kush Rana <89848966+kush-elastic@users.noreply.github.com> Date: Wed, 6 Mar 2024 10:55:45 +0530 Subject: [PATCH 003/313] [Metricbeat][Postgresql][Database] Fix fields not being parsed correctly (#37720) * change blk_read_time and blk_write_time from long to double type * add changelog entry * remove unnecessary changes --- CHANGELOG.next.asciidoc | 1 + metricbeat/docs/fields.asciidoc | 4 ++-- metricbeat/module/postgresql/database/_meta/fields.yml | 4 ++-- metricbeat/module/postgresql/database/data.go | 4 ++-- metricbeat/module/postgresql/fields.go | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f11f88e491c..2c2a762be6c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -109,6 +109,7 @@ fields added to events containing the Beats version. {pull}37553[37553] *Metricbeat* +- Fix fields not being parsed correctly in postgresql/database {issue}25301[25301] {pull}37720[37720] *Osquerybeat* diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index d96172d0bfc..435760b7406 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -56448,7 +56448,7 @@ type: long Time spent reading data file blocks by backends in this database, in milliseconds. -type: long +type: double -- @@ -56458,7 +56458,7 @@ type: long Time spent writing data file blocks by backends in this database, in milliseconds. -type: long +type: double -- diff --git a/metricbeat/module/postgresql/database/_meta/fields.yml b/metricbeat/module/postgresql/database/_meta/fields.yml index 2b08d1630de..7eb5ceca4f4 100644 --- a/metricbeat/module/postgresql/database/_meta/fields.yml +++ b/metricbeat/module/postgresql/database/_meta/fields.yml @@ -36,12 +36,12 @@ that a read was not necessary (this only includes hits in the PostgreSQL buffer cache, not the operating system's file system cache). - name: blocks.time.read.ms - type: long + type: double description: > Time spent reading data file blocks by backends in this database, in milliseconds. - name: blocks.time.write.ms - type: long + type: double description: > Time spent writing data file blocks by backends in this database, in milliseconds. diff --git a/metricbeat/module/postgresql/database/data.go b/metricbeat/module/postgresql/database/data.go index 99d2bdb643f..5a662a8aedb 100644 --- a/metricbeat/module/postgresql/database/data.go +++ b/metricbeat/module/postgresql/database/data.go @@ -37,8 +37,8 @@ var schema = s.Schema{ "read": c.Int("blks_read"), "hit": c.Int("blks_hit"), "time": s.Object{ - "read": s.Object{"ms": c.Int("blk_read_time")}, - "write": s.Object{"ms": c.Int("blk_write_time")}, + "read": s.Object{"ms": c.Float("blk_read_time")}, + "write": s.Object{"ms": c.Float("blk_write_time")}, }, }, "rows": s.Object{ diff --git a/metricbeat/module/postgresql/fields.go b/metricbeat/module/postgresql/fields.go index cd679d7edc2..2962ab237f2 100644 --- a/metricbeat/module/postgresql/fields.go +++ b/metricbeat/module/postgresql/fields.go @@ -32,5 +32,5 @@ func init() { // AssetPostgresql returns asset data. // This is the base64 encoded zlib format compressed contents of module/postgresql. func AssetPostgresql() string { - return "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" + return "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" } From 00e38f5a5f575c48746bad013c01106d57aa60a2 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 6 Mar 2024 09:36:00 +0100 Subject: [PATCH 004/313] github-action: install synthetics for running the UTs in x-pack/heartbeat (#38185) * install globally --- .github/workflows/macos-xpack-heartbeat.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/macos-xpack-heartbeat.yml b/.github/workflows/macos-xpack-heartbeat.yml index 502d10c1a3e..8a0c6c1897d 100644 --- a/.github/workflows/macos-xpack-heartbeat.yml +++ b/.github/workflows/macos-xpack-heartbeat.yml @@ -17,15 +17,17 @@ jobs: macos: runs-on: macos-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v4 with: go-version-file: .go-version - uses: actions/setup-python@v4 with: python-version: '3.9' - name: Install dependencies - run: go install github.com/magefile/mage + run: | + go install github.com/magefile/mage + cd ${{ env.BEAT_MODULE }} && npm install -g @elastic/synthetics - name: Run build run: cd ${{ env.BEAT_MODULE }} && mage build - name: Run test From ae312c5b288c8377ed1a87adda80e153c363cea5 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Wed, 6 Mar 2024 06:40:00 -0500 Subject: [PATCH 005/313] [Filebeat] ETW input - add basic metrics (#38017) Add input metrics to for ETW. Remove the very verbose debug message that was in the hot path for processing each event. I think more metrics taken from the ETW session itself should be added separately (e.g. events lost, buffers lost). This lays the ground works needed to expose those metrics. Closes #38007 --- .../filebeat/docs/inputs/input-etw.asciidoc | 100 ++++++++++++++---- x-pack/filebeat/input/etw/input.go | 65 +++++++++++- x-pack/filebeat/input/etw/input_test.go | 5 + 3 files changed, 148 insertions(+), 22 deletions(-) diff --git a/x-pack/filebeat/docs/inputs/input-etw.asciidoc b/x-pack/filebeat/docs/inputs/input-etw.asciidoc index 9ace3fdcc1b..27dadaca2b7 100644 --- a/x-pack/filebeat/docs/inputs/input-etw.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-etw.asciidoc @@ -11,13 +11,29 @@ beta[] -https://learn.microsoft.com/en-us/windows/win32/etw/event-tracing-portal[Event Tracing for Windows] is a powerful logging and tracing mechanism built into the Windows operating system. It provides a detailed view of application and system behavior, performance issues, and runtime diagnostics. Trace events contain an event header and provider-defined data that describes the current state of an application or operation. You can use the events to debug an application and perform capacity and performance analysis. - -The ETW input can interact with ETW in three distinct ways: it can create a new session to capture events from user-mode providers, attach to an already existing session to collect ongoing event data, or read events from a pre-recorded .etl file. This functionality enables the module to adapt to different scenarios, such as real-time event monitoring or analyzing historical data. - -This input currently supports manifest-based, MOF (classic) and TraceLogging providers while WPP providers are not supported. https://learn.microsoft.com/en-us/windows/win32/etw/about-event-tracing#types-of-providers[Here] you can find more information about the available types of providers. - -It has been tested in every Windows versions supported by Filebeat, starting from Windows 8.1 and Windows Server 2016. In addition, administrative privileges are required in order to control event tracing sessions. +https://learn.microsoft.com/en-us/windows/win32/etw/event-tracing-portal[Event +Tracing for Windows] is a powerful logging and tracing mechanism built into the +Windows operating system. It provides a detailed view of application and system +behavior, performance issues, and runtime diagnostics. Trace events contain an +event header and provider-defined data that describes the current state of an +application or operation. You can use the events to debug an application and +perform capacity and performance analysis. + +The ETW input can interact with ETW in three distinct ways: it can create a new +session to capture events from user-mode providers, attach to an already +existing session to collect ongoing event data, or read events from a +pre-recorded .etl file. This functionality enables the module to adapt to +different scenarios, such as real-time event monitoring or analyzing historical +data. + +This input currently supports manifest-based, MOF (classic) and TraceLogging +providers while WPP providers are not supported. +https://learn.microsoft.com/en-us/windows/win32/etw/about-event-tracing#types-of-providers[Here] +you can find more information about the available types of providers. + +It has been tested in the Windows versions supported by {beatname_uc}, starting +from Windows 10 and Windows Server 2016. In addition, administrative privileges +are required to control event tracing sessions. Example configurations: @@ -35,7 +51,7 @@ Read from a provider by name: match_all_keyword: 0 ---- -Same provider can be defined by its GUID: +Read from a provider by its GUID: ["source","yaml",subs="attributes"] ---- {beatname_lc}.inputs: @@ -49,7 +65,7 @@ Same provider can be defined by its GUID: match_all_keyword: 0 ---- -Read from a current session: +Read from an existing session: ["source","yaml",subs="attributes"] ---- {beatname_lc}.inputs: @@ -69,7 +85,9 @@ Read from a .etl file: file: "C\Windows\System32\Winevt\Logs\Logfile.etl" ---- -NOTE: Examples shown above are mutually exclusive, since the options `provider.name`, `provider.guid`, `session` and `file` cannot be present at the same time. Nevertheless, it is a requirement that one of them appears. +NOTE: Examples shown above are mutually exclusive, the options +`provider.name`, `provider.guid`, `session` and `file` cannot be present at the +same time. Nevertheless, it is a requirement that one of them is present. Multiple providers example: ["source","yaml",subs="attributes"] @@ -95,50 +113,90 @@ Multiple providers example: ==== Configuration options -The `ETW` input supports the following configuration options. +The `etw` input supports the following configuration options plus the +<<{beatname_lc}-input-{type}-common-options>> described later. [float] ==== `file` -Specifies the path to an .etl file for reading ETW events. This file format is commonly used for storing ETW event logs. +Specifies the path to an .etl file for reading ETW events. This file format is +commonly used for storing ETW event logs. [float] ==== `provider.guid` -Identifies the GUID of an ETW provider. To see available providers, use the command `logman query providers`. +Identifies the GUID of an ETW provider. To see available providers, use the +command `logman query providers`. [float] ==== `provider.name` -Specifies the name of the ETW provider. Available providers can be listed using `logman query providers`. +Specifies the name of the ETW provider. Available providers can be listed using +`logman query providers`. [float] ==== `session_name` -When specified a provider, a new session is created. It sets the name for a new ETW session associated with the provider. If not provided, the default is the provider ID prefixed with 'Elastic-'. +When specifying a provider, a new session is created. This controls the name for +the new ETW session it will create. If not specified, the session will be named +using the provider ID prefixed by 'Elastic-'. [float] ==== `trace_level` -Defines the filtering level for events based on severity. Valid options include critical, error, warning, informational, and verbose. +Defines the filtering level for events based on severity. Valid options include +critical, error, warning, informational, and verbose. [float] ==== `match_any_keyword` -An 8-byte bitmask used for filtering events from specific provider subcomponents based on keyword matching. Any matching keyword will enable the event to be written. Default value is `0xfffffffffffffffff` so it matches every available keyword. +An 8-byte bitmask used for filtering events from specific provider subcomponents +based on keyword matching. Any matching keyword will enable the event to be +written. Default value is `0xfffffffffffffffff` so it matches every available +keyword. -Run `logman query providers ""` to list the available keywords for a specific provider. +Run `logman query providers ""` to list the available keywords +for a specific provider. [float] ==== `match_all_keyword` -Similar to MatchAnyKeyword, this 8-byte bitmask filters events that match all specified keyword bits. Default value is `0` to let every event pass. +Similar to MatchAnyKeyword, this 8-byte bitmask filters events that match all +specified keyword bits. Default value is `0` to let every event pass. -Run `logman query providers ""` to list the available keywords for a specific provider. +Run `logman query providers ""` to list the available keywords +for a specific provider. [float] ==== `session` -Names an existing ETW session to read from. Existing sessions can be listed using `logman query -ets`. +Names an existing ETW session to read from. Existing sessions can be listed +using `logman query -ets`. + +[id="{beatname_lc}-input-{type}-common-options"] +include::../../../../filebeat/docs/inputs/input-common-options.asciidoc[] + +[float] +=== Metrics + +This input exposes metrics under the <>. +These metrics are exposed under the `/inputs/` path. They can be used to +observe the activity of the input. + +You must assign a unique `id` to the input to expose metrics. + +[options="header"] +|======= +| Metric | Description +| `session` | Name of the ETW session. +| `received_events_total` | Total number of events received. +| `discarded_events_total` | Total number of discarded events. +| `errors_total` | Total number of errors. +| `source_lag_time` | Histogram of the difference between timestamped event's creation and reading. +| `arrival_period` | Histogram of the elapsed time between event notification callbacks. +| `processing_time` | Histogram of the elapsed time between event notification callback and publication to the internal queue. +|======= + +Histogram metrics are aggregated over the previous 1024 events. :type!: diff --git a/x-pack/filebeat/input/etw/input.go b/x-pack/filebeat/input/etw/input.go index b5b331b3c92..021805ebdfa 100644 --- a/x-pack/filebeat/input/etw/input.go +++ b/x-pack/filebeat/input/etw/input.go @@ -17,11 +17,15 @@ import ( stateless "github.com/elastic/beats/v7/filebeat/input/v2/input-stateless" "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/feature" + "github.com/elastic/beats/v7/libbeat/monitoring/inputmon" "github.com/elastic/beats/v7/x-pack/libbeat/reader/etw" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/elastic-agent-libs/monitoring" + "github.com/elastic/elastic-agent-libs/monitoring/adapter" + "github.com/rcrowley/go-metrics" "golang.org/x/sync/errgroup" "golang.org/x/sys/windows" ) @@ -65,6 +69,7 @@ func (op *realSessionOperator) stopSession(session *etw.Session) error { // etwInput struct holds the configuration and state for the ETW input type etwInput struct { log *logp.Logger + metrics *inputMetrics config config etwSession *etw.Session publisher stateless.Publisher @@ -109,6 +114,8 @@ func (e *etwInput) Run(ctx input.Context, publisher stateless.Publisher) error { } e.etwSession.Callback = e.consumeEvent e.publisher = publisher + e.metrics = newInputMetrics(e.etwSession.Name, ctx.ID) + defer e.metrics.unregister() // Set up logger with session information e.log = ctx.Logger.With("session", e.etwSession.Name) @@ -149,6 +156,7 @@ func (e *etwInput) Run(ctx input.Context, publisher stateless.Publisher) error { e.log.Debug("starting ETW consumer") defer e.log.Debug("stopped ETW consumer") if err = e.operator.startConsumer(e.etwSession); err != nil { + e.metrics.errors.Inc() return fmt.Errorf("failed running ETW consumer: %w", err) } return nil @@ -239,20 +247,34 @@ func convertFileTimeToGoTime(fileTime64 uint64) time.Time { func (e *etwInput) consumeEvent(record *etw.EventRecord) uintptr { if record == nil { e.log.Error("received null event record") + e.metrics.errors.Inc() return 1 } - e.log.Debugf("received event with ID %d and user-data length %d", record.EventHeader.EventDescriptor.Id, record.UserDataLength) + start := time.Now() + defer func() { + elapsed := time.Since(start) + e.metrics.processingTime.Update(elapsed.Nanoseconds()) + }() data, err := etw.GetEventProperties(record) if err != nil { e.log.Errorw("failed to read event properties", "error", err) + e.metrics.errors.Inc() + e.metrics.dropped.Inc() return 1 } evt := buildEvent(data, record.EventHeader, e.etwSession, e.config) e.publisher.Publish(evt) + e.metrics.events.Inc() + e.metrics.sourceLag.Update(start.Sub(evt.Timestamp).Nanoseconds()) + if !e.metrics.lastCallback.IsZero() { + e.metrics.arrivalPeriod.Update(start.Sub(e.metrics.lastCallback).Nanoseconds()) + } + e.metrics.lastCallback = start + return 0 } @@ -260,7 +282,48 @@ func (e *etwInput) consumeEvent(record *etw.EventRecord) uintptr { func (e *etwInput) Close() { if err := e.operator.stopSession(e.etwSession); err != nil { e.log.Error("failed to shutdown ETW session") + e.metrics.errors.Inc() return } e.log.Info("successfully shutdown") } + +// inputMetrics handles event log metric reporting. +type inputMetrics struct { + unregister func() + + lastCallback time.Time + + name *monitoring.String // name of the etw session being read + events *monitoring.Uint // total number of events received + dropped *monitoring.Uint // total number of discarded events + errors *monitoring.Uint // total number of errors + sourceLag metrics.Sample // histogram of the difference between timestamped event's creation and reading + arrivalPeriod metrics.Sample // histogram of the elapsed time between callbacks. + processingTime metrics.Sample // histogram of the elapsed time between event callback receipt and publication. +} + +// newInputMetrics returns an input metric for windows ETW. +// If id is empty, a nil inputMetric is returned. +func newInputMetrics(session, id string) *inputMetrics { + reg, unreg := inputmon.NewInputRegistry(inputName, id, nil) + out := &inputMetrics{ + unregister: unreg, + name: monitoring.NewString(reg, "session"), + events: monitoring.NewUint(reg, "received_events_total"), + dropped: monitoring.NewUint(reg, "discarded_events_total"), + errors: monitoring.NewUint(reg, "errors_total"), + sourceLag: metrics.NewUniformSample(1024), + arrivalPeriod: metrics.NewUniformSample(1024), + processingTime: metrics.NewUniformSample(1024), + } + out.name.Set(session) + _ = adapter.NewGoMetrics(reg, "source_lag_time", adapter.Accept). + Register("histogram", metrics.NewHistogram(out.sourceLag)) + _ = adapter.NewGoMetrics(reg, "arrival_period", adapter.Accept). + Register("histogram", metrics.NewHistogram(out.arrivalPeriod)) + _ = adapter.NewGoMetrics(reg, "processing_time", adapter.Accept). + Register("histogram", metrics.NewHistogram(out.processingTime)) + + return out +} diff --git a/x-pack/filebeat/input/etw/input_test.go b/x-pack/filebeat/input/etw/input_test.go index fd2673278d3..95c9167a696 100644 --- a/x-pack/filebeat/input/etw/input_test.go +++ b/x-pack/filebeat/input/etw/input_test.go @@ -91,6 +91,7 @@ func Test_RunEtwInput_NewSessionError(t *testing.T) { MatchAllKeyword: 0, }, operator: mockOperator, + metrics: newInputMetrics("", ""), } // Run test @@ -131,6 +132,7 @@ func Test_RunEtwInput_AttachToExistingSessionError(t *testing.T) { MatchAllKeyword: 0, }, operator: mockOperator, + metrics: newInputMetrics("", ""), } // Run test @@ -175,6 +177,7 @@ func Test_RunEtwInput_CreateRealtimeSessionError(t *testing.T) { MatchAllKeyword: 0, }, operator: mockOperator, + metrics: newInputMetrics("", ""), } // Run test @@ -231,6 +234,7 @@ func Test_RunEtwInput_StartConsumerError(t *testing.T) { MatchAllKeyword: 0, }, operator: mockOperator, + metrics: newInputMetrics("", ""), } // Run test @@ -287,6 +291,7 @@ func Test_RunEtwInput_Success(t *testing.T) { MatchAllKeyword: 0, }, operator: mockOperator, + metrics: newInputMetrics("", ""), } // Run test From 07e231bd3842957119630d4b609b7653c34f5223 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Thu, 7 Mar 2024 09:23:06 -0500 Subject: [PATCH 006/313] [Automation] Bump Golang version to 1.21.8 (#38209) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Update stan Dockerfile Made with ❤️️ by updatecli * chore: Update Metricbeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update Auditbeat Dockerfile Made with ❤️️ by updatecli * chore: Update Filebeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update Packetbeat Dockerfile Made with ❤️️ by updatecli * chore: Update Heartbeat Dockerfile Made with ❤️️ by updatecli * chore: Update .golangci.yml Made with ❤️️ by updatecli * chore: Update NATS module Dockerfile Made with ❤️️ by updatecli * chore: Update .go-version Made with ❤️️ by updatecli * chore: Update version.asciidoc Made with ❤️️ by updatecli * chore: Update Metricbeat Dockerfile Made with ❤️️ by updatecli * chore: Update HTTP module Dockerfile Made with ❤️️ by updatecli * chore: Update Heartbeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update from vsphere Dockerfile Made with ❤️️ by updatecli * chore: Update Functionbeat Dockerfile Made with ❤️️ by updatecli * Update changelog. --------- Co-authored-by: apmmachine Co-authored-by: Craig MacKenzie --- .go-version | 2 +- .golangci.yml | 8 ++++---- CHANGELOG.next.asciidoc | 2 +- auditbeat/Dockerfile | 2 +- dev-tools/kubernetes/filebeat/Dockerfile.debug | 2 +- dev-tools/kubernetes/heartbeat/Dockerfile.debug | 2 +- dev-tools/kubernetes/metricbeat/Dockerfile.debug | 2 +- heartbeat/Dockerfile | 2 +- libbeat/docs/version.asciidoc | 2 +- metricbeat/Dockerfile | 2 +- metricbeat/module/http/_meta/Dockerfile | 2 +- metricbeat/module/nats/_meta/Dockerfile | 2 +- metricbeat/module/vsphere/_meta/Dockerfile | 2 +- packetbeat/Dockerfile | 2 +- x-pack/functionbeat/Dockerfile | 2 +- x-pack/metricbeat/module/stan/_meta/Dockerfile | 2 +- 16 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.go-version b/.go-version index 8819d012cee..428abfd24fb 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.21.7 +1.21.8 diff --git a/.golangci.yml b/.golangci.yml index 79b77eab0d1..4fd7b93f1b1 100755 --- a/.golangci.yml +++ b/.golangci.yml @@ -114,7 +114,7 @@ linters-settings: gosimple: # Select the Go version to target. The default is '1.13'. - go: "1.21.7" + go: "1.21.8" nakedret: # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 @@ -132,19 +132,19 @@ linters-settings: staticcheck: # Select the Go version to target. The default is '1.13'. - go: "1.21.7" + go: "1.21.8" checks: ["all"] stylecheck: # Select the Go version to target. The default is '1.13'. - go: "1.21.7" + go: "1.21.8" # Disabled: # ST1005: error strings should not be capitalized checks: ["all", "-ST1005"] unused: # Select the Go version to target. The default is '1.13'. - go: "1.21.7" + go: "1.21.8" gosec: excludes: diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 2c2a762be6c..faa7f439ce9 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -10,7 +10,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Affecting all Beats* -- Upgrade to Go 1.21.7. Removes support for Windows 8.1. See https://tip.golang.org/doc/go1.21#windows. {pull}37913[37913] +- Upgrade to Go 1.21.8. Removes support for Windows 8.1. See https://tip.golang.org/doc/go1.21#windows. {pull}38209[38209] - add_cloud_metadata processor: `huawei` provider is now treated as `openstack`. Huawei cloud runs on OpenStack platform, and when viewed from a metadata API standpoint, it is impossible to differentiate it from OpenStack. If you know that your deployments run on Huawei Cloud exclusively, and you wish to have `cloud.provider` value as `huawei`, diff --git a/auditbeat/Dockerfile b/auditbeat/Dockerfile index df038d2edf8..982680c7f63 100644 --- a/auditbeat/Dockerfile +++ b/auditbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.7 +FROM golang:1.21.8 RUN \ apt-get update \ diff --git a/dev-tools/kubernetes/filebeat/Dockerfile.debug b/dev-tools/kubernetes/filebeat/Dockerfile.debug index e8dfaf392ab..b46b2a73cc2 100644 --- a/dev-tools/kubernetes/filebeat/Dockerfile.debug +++ b/dev-tools/kubernetes/filebeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.7 as builder +FROM golang:1.21.8 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/dev-tools/kubernetes/heartbeat/Dockerfile.debug b/dev-tools/kubernetes/heartbeat/Dockerfile.debug index 473ce7484c8..e1e9dddabac 100644 --- a/dev-tools/kubernetes/heartbeat/Dockerfile.debug +++ b/dev-tools/kubernetes/heartbeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.7 as builder +FROM golang:1.21.8 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/dev-tools/kubernetes/metricbeat/Dockerfile.debug b/dev-tools/kubernetes/metricbeat/Dockerfile.debug index 8adf8a45901..0b81f3635d9 100644 --- a/dev-tools/kubernetes/metricbeat/Dockerfile.debug +++ b/dev-tools/kubernetes/metricbeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.7 as builder +FROM golang:1.21.8 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/heartbeat/Dockerfile b/heartbeat/Dockerfile index eb52ad4d130..7fc0102259c 100644 --- a/heartbeat/Dockerfile +++ b/heartbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.7 +FROM golang:1.21.8 RUN \ apt-get update \ diff --git a/libbeat/docs/version.asciidoc b/libbeat/docs/version.asciidoc index 1cae4fe1ad8..5cb4f7422b5 100644 --- a/libbeat/docs/version.asciidoc +++ b/libbeat/docs/version.asciidoc @@ -1,6 +1,6 @@ :stack-version: 8.13.0 :doc-branch: main -:go-version: 1.21.7 +:go-version: 1.21.8 :release-state: unreleased :python: 3.7 :docker: 1.12 diff --git a/metricbeat/Dockerfile b/metricbeat/Dockerfile index 31f13aeea2c..b6da0417316 100644 --- a/metricbeat/Dockerfile +++ b/metricbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.7 +FROM golang:1.21.8 RUN \ apt update \ diff --git a/metricbeat/module/http/_meta/Dockerfile b/metricbeat/module/http/_meta/Dockerfile index a46a3dbb3e2..e855e12fe03 100644 --- a/metricbeat/module/http/_meta/Dockerfile +++ b/metricbeat/module/http/_meta/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.7 +FROM golang:1.21.8 COPY test/main.go main.go diff --git a/metricbeat/module/nats/_meta/Dockerfile b/metricbeat/module/nats/_meta/Dockerfile index 4df0b81a912..8d06be18187 100644 --- a/metricbeat/module/nats/_meta/Dockerfile +++ b/metricbeat/module/nats/_meta/Dockerfile @@ -2,7 +2,7 @@ ARG NATS_VERSION=2.0.4 FROM nats:$NATS_VERSION # build stage -FROM golang:1.21.7 AS build-env +FROM golang:1.21.8 AS build-env RUN apt-get install git mercurial gcc RUN git clone https://github.com/nats-io/nats.go.git /nats-go RUN cd /nats-go/examples/nats-bench && git checkout tags/v1.10.0 && go build . diff --git a/metricbeat/module/vsphere/_meta/Dockerfile b/metricbeat/module/vsphere/_meta/Dockerfile index 3db3cccbab2..a5268391f73 100644 --- a/metricbeat/module/vsphere/_meta/Dockerfile +++ b/metricbeat/module/vsphere/_meta/Dockerfile @@ -1,5 +1,5 @@ ARG VSPHERE_GOLANG_VERSION -FROM golang:1.21.7 +FROM golang:1.21.8 RUN apt-get install curl git RUN go install github.com/vmware/govmomi/vcsim@v0.30.4 diff --git a/packetbeat/Dockerfile b/packetbeat/Dockerfile index 17075d9da65..e565e21af41 100644 --- a/packetbeat/Dockerfile +++ b/packetbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.7 +FROM golang:1.21.8 RUN \ apt-get update \ diff --git a/x-pack/functionbeat/Dockerfile b/x-pack/functionbeat/Dockerfile index b2c85869921..810dd6a9cf1 100644 --- a/x-pack/functionbeat/Dockerfile +++ b/x-pack/functionbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.7 +FROM golang:1.21.8 RUN \ apt-get update \ diff --git a/x-pack/metricbeat/module/stan/_meta/Dockerfile b/x-pack/metricbeat/module/stan/_meta/Dockerfile index ffce883a60c..14cf1ba2831 100644 --- a/x-pack/metricbeat/module/stan/_meta/Dockerfile +++ b/x-pack/metricbeat/module/stan/_meta/Dockerfile @@ -2,7 +2,7 @@ ARG STAN_VERSION=0.15.1 FROM nats-streaming:$STAN_VERSION # build stage -FROM golang:1.21.7 AS build-env +FROM golang:1.21.8 AS build-env RUN apt-get install git mercurial gcc RUN git clone https://github.com/nats-io/stan.go.git /stan-go RUN cd /stan-go/examples/stan-bench && git checkout tags/v0.5.2 && go build . From ca07b8e680c9029648fc401d1a25bffff59a2a91 Mon Sep 17 00:00:00 2001 From: Chris Berkhout Date: Fri, 8 Mar 2024 09:46:36 +0100 Subject: [PATCH 007/313] x-pack/filebeat/input/httpjson: Apply rate limiting to all responses (#38161) - Drain the body before rate limiting. - Apply rate limiting to all responses, waiting immediately. Retry if the response was not successful and there was a rate limit wait (even if immediately expired), otherwise return. - Improve names of variables `epoch` and `activeLimit`. Co-authored-by: Dan Kortschak --- .../filebeat/input/httpjson/rate_limiter.go | 73 +++++++++-------- .../input/httpjson/rate_limiter_test.go | 78 ++++++++++--------- x-pack/filebeat/input/httpjson/request.go | 22 +++--- 3 files changed, 93 insertions(+), 80 deletions(-) diff --git a/x-pack/filebeat/input/httpjson/rate_limiter.go b/x-pack/filebeat/input/httpjson/rate_limiter.go index 30c50ae3f05..d82f5829be8 100644 --- a/x-pack/filebeat/input/httpjson/rate_limiter.go +++ b/x-pack/filebeat/input/httpjson/rate_limiter.go @@ -42,35 +42,37 @@ func (r *rateLimiter) execute(ctx context.Context, f func() (*http.Response, err for { resp, err := f() if err != nil { - return nil, fmt.Errorf("failed to read http.response.body: %w", err) + return nil, err } - if r == nil || resp.StatusCode == http.StatusOK { + if r == nil { return resp, nil } - if resp.StatusCode != http.StatusTooManyRequests { - return nil, fmt.Errorf("http request was unsuccessful with a status code %d", resp.StatusCode) + applied, err := r.applyRateLimit(ctx, resp) + if err != nil { + return nil, fmt.Errorf("error applying rate limit: %w", err) } - if err := r.applyRateLimit(ctx, resp); err != nil { - return nil, err + if resp.StatusCode == http.StatusOK || !applied { + return resp, nil } } } -// applyRateLimit applies appropriate rate limit if specified in the HTTP Header of the response -func (r *rateLimiter) applyRateLimit(ctx context.Context, resp *http.Response) error { - epoch, err := r.getRateLimit(resp) +// applyRateLimit applies appropriate rate limit if specified in the HTTP Header of the response. +// It returns a bool indicating whether a limit was reached. +func (r *rateLimiter) applyRateLimit(ctx context.Context, resp *http.Response) (bool, error) { + limitReached, resumeAt, err := r.getRateLimit(resp) if err != nil { - return err + return limitReached, err } - t := time.Unix(epoch, 0) + t := time.Unix(resumeAt, 0) w := time.Until(t) - if epoch == 0 || w <= 0 { + if resumeAt == 0 || w <= 0 { r.log.Debugf("Rate Limit: No need to apply rate limit.") - return nil + return limitReached, nil } r.log.Debugf("Rate Limit: Wait until %v for the rate limit to reset.", t) timer := time.NewTimer(w) @@ -80,24 +82,25 @@ func (r *rateLimiter) applyRateLimit(ctx context.Context, resp *http.Response) e <-timer.C } r.log.Info("Context done.") - return nil + return limitReached, nil case <-timer.C: r.log.Debug("Rate Limit: time is up.") - return nil + return limitReached, nil } } // getRateLimit gets the rate limit value if specified in the response, -// and returns an int64 value in seconds since unix epoch for rate limit reset time. +// and returns a bool indicating whether a limit was reached, and +// an int64 value in seconds since unix epoch for rate limit reset time. // When there is a remaining rate limit quota, or when the rate limit reset time has expired, it // returns 0 for the epoch value. -func (r *rateLimiter) getRateLimit(resp *http.Response) (int64, error) { +func (r *rateLimiter) getRateLimit(resp *http.Response) (bool, int64, error) { if r == nil { - return 0, nil + return false, 0, nil } if r.remaining == nil { - return 0, nil + return false, 0, nil } tr := transformable{} @@ -106,16 +109,17 @@ func (r *rateLimiter) getRateLimit(resp *http.Response) (int64, error) { remaining, _ := r.remaining.Execute(ctx, tr, "rate-limit_remaining", nil, r.log) if remaining == "" { - return 0, errors.New("remaining value is empty") + r.log.Infow("get rate limit", "error", errors.New("remaining value is empty")) + return false, 0, nil } m, err := strconv.ParseInt(remaining, 10, 64) if err != nil { - return 0, fmt.Errorf("failed to parse rate-limit remaining value: %w", err) + return false, 0, fmt.Errorf("failed to parse rate-limit remaining value: %w", err) } // by default, httpjson will continue requests until Limit is 0 // can optionally stop requests "early" - var activeLimit int64 = 0 + var minRemaining int64 = 0 if r.earlyLimit != nil { earlyLimit := *r.earlyLimit if earlyLimit > 0 && earlyLimit < 1 { @@ -123,37 +127,38 @@ func (r *rateLimiter) getRateLimit(resp *http.Response) (int64, error) { if limit != "" { l, err := strconv.ParseInt(limit, 10, 64) if err == nil { - activeLimit = l - int64(earlyLimit*float64(l)) + minRemaining = l - int64(earlyLimit*float64(l)) } } } else if earlyLimit >= 1 { - activeLimit = int64(earlyLimit) + minRemaining = int64(earlyLimit) } } - r.log.Debugf("Rate Limit: Using active Early Limit: %f", activeLimit) - if m > activeLimit { - return 0, nil + r.log.Debugf("Rate Limit: Using active Early Limit: %d", minRemaining) + if m > minRemaining { + return false, 0, nil } if r.reset == nil { r.log.Warn("reset rate limit is not set") - return 0, nil + return false, 0, nil } reset, _ := r.reset.Execute(ctx, tr, "rate-limit_reset", nil, r.log) if reset == "" { - return 0, errors.New("reset value is empty") + r.log.Infow("get rate limit", "error", errors.New("reset value is empty")) + return false, 0, nil } - epoch, err := strconv.ParseInt(reset, 10, 64) + resumeAt, err := strconv.ParseInt(reset, 10, 64) if err != nil { - return 0, fmt.Errorf("failed to parse rate-limit reset value: %w", err) + return false, 0, fmt.Errorf("failed to parse rate-limit reset value: %w", err) } - if timeNow().Unix() > epoch { - return 0, nil + if timeNow().Unix() > resumeAt { + return true, 0, nil } - return epoch, nil + return true, resumeAt, nil } diff --git a/x-pack/filebeat/input/httpjson/rate_limiter_test.go b/x-pack/filebeat/input/httpjson/rate_limiter_test.go index fe928eb4f3d..3fdb73fc44c 100644 --- a/x-pack/filebeat/input/httpjson/rate_limiter_test.go +++ b/x-pack/filebeat/input/httpjson/rate_limiter_test.go @@ -16,7 +16,7 @@ import ( ) // Test getRateLimit function with a remaining quota, expect to receive 0, nil. -func TestGetRateLimitReturns0IfRemainingQuota(t *testing.T) { +func TestGetRateLimitReturnsFalse0IfRemainingQuota(t *testing.T) { header := make(http.Header) header.Add("X-Rate-Limit-Limit", "120") header.Add("X-Rate-Limit-Remaining", "118") @@ -34,12 +34,13 @@ func TestGetRateLimitReturns0IfRemainingQuota(t *testing.T) { log: logp.NewLogger(""), } resp := &http.Response{Header: header} - epoch, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, 0, epoch) + assert.False(t, applied) + assert.EqualValues(t, 0, resumeAt) } -func TestGetRateLimitReturns0IfEpochInPast(t *testing.T) { +func TestGetRateLimitReturnsTrue0IfResumeAtInPast(t *testing.T) { header := make(http.Header) header.Add("X-Rate-Limit-Limit", "10") header.Add("X-Rate-Limit-Remaining", "0") @@ -57,20 +58,21 @@ func TestGetRateLimitReturns0IfEpochInPast(t *testing.T) { log: logp.NewLogger(""), } resp := &http.Response{Header: header} - epoch, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, 0, epoch) + assert.True(t, applied) + assert.EqualValues(t, 0, resumeAt) } func TestGetRateLimitReturnsResetValue(t *testing.T) { - epoch := int64(1604582732 + 100) + reset := int64(1604582732 + 100) timeNow = func() time.Time { return time.Unix(1604582732, 0).UTC() } t.Cleanup(func() { timeNow = time.Now }) header := make(http.Header) header.Add("X-Rate-Limit-Limit", "10") header.Add("X-Rate-Limit-Remaining", "0") - header.Add("X-Rate-Limit-Reset", strconv.FormatInt(epoch, 10)) + header.Add("X-Rate-Limit-Reset", strconv.FormatInt(reset, 10)) tplLimit := &valueTpl{} tplReset := &valueTpl{} tplRemaining := &valueTpl{} @@ -84,22 +86,23 @@ func TestGetRateLimitReturnsResetValue(t *testing.T) { log: logp.NewLogger(""), } resp := &http.Response{Header: header} - epoch2, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, 1604582832, epoch2) + assert.True(t, applied) + assert.EqualValues(t, reset, resumeAt) } // Test getRateLimit function with a remaining quota, using default early limit -// expect to receive 0, nil. +// expect to receive false, 0, nil. func TestGetRateLimitReturns0IfEarlyLimit0(t *testing.T) { - resetEpoch := int64(1634579974 + 100) + resetAt := int64(1634579974 + 100) timeNow = func() time.Time { return time.Unix(1634579974, 0).UTC() } t.Cleanup(func() { timeNow = time.Now }) header := make(http.Header) header.Add("X-Rate-Limit-Limit", "120") header.Add("X-Rate-Limit-Remaining", "1") - header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetEpoch, 10)) + header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetAt, 10)) tplLimit := &valueTpl{} tplReset := &valueTpl{} tplRemaining := &valueTpl{} @@ -115,22 +118,23 @@ func TestGetRateLimitReturns0IfEarlyLimit0(t *testing.T) { earlyLimit: earlyLimit, } resp := &http.Response{Header: header} - epoch, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, 0, epoch) + assert.False(t, applied) + assert.EqualValues(t, 0, resumeAt) } // Test getRateLimit function with a remaining limit, but early limit -// expect to receive Reset Time +// expect to receive true, Reset Time func TestGetRateLimitReturnsResetValueIfEarlyLimit1(t *testing.T) { - resetEpoch := int64(1634579974 + 100) + resetAt := int64(1634579974 + 100) timeNow = func() time.Time { return time.Unix(1634579974, 0).UTC() } t.Cleanup(func() { timeNow = time.Now }) header := make(http.Header) header.Add("X-Rate-Limit-Limit", "120") header.Add("X-Rate-Limit-Remaining", "1") - header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetEpoch, 10)) + header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetAt, 10)) tplLimit := &valueTpl{} tplReset := &valueTpl{} tplRemaining := &valueTpl{} @@ -146,22 +150,23 @@ func TestGetRateLimitReturnsResetValueIfEarlyLimit1(t *testing.T) { earlyLimit: earlyLimit, } resp := &http.Response{Header: header} - epoch, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, resetEpoch, epoch) + assert.True(t, applied) + assert.EqualValues(t, resetAt, resumeAt) } // Test getRateLimit function with a remaining quota, using 90% early limit -// expect to receive 0, nil. +// expect to receive false, 0, nil. func TestGetRateLimitReturns0IfEarlyLimitPercent(t *testing.T) { - resetEpoch := int64(1634579974 + 100) + resetAt := int64(1634579974 + 100) timeNow = func() time.Time { return time.Unix(1634579974, 0).UTC() } t.Cleanup(func() { timeNow = time.Now }) header := make(http.Header) header.Add("X-Rate-Limit-Limit", "120") header.Add("X-Rate-Limit-Remaining", "13") - header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetEpoch, 10)) + header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetAt, 10)) tplLimit := &valueTpl{} tplReset := &valueTpl{} tplRemaining := &valueTpl{} @@ -177,22 +182,23 @@ func TestGetRateLimitReturns0IfEarlyLimitPercent(t *testing.T) { earlyLimit: earlyLimit, } resp := &http.Response{Header: header} - epoch, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, 0, epoch) + assert.False(t, applied) + assert.EqualValues(t, 0, resumeAt) } // Test getRateLimit function with a remaining limit, but early limit of 90% -// expect to receive Reset Time +// expect to receive true, Reset Time func TestGetRateLimitReturnsResetValueIfEarlyLimitPercent(t *testing.T) { - resetEpoch := int64(1634579974 + 100) + resetAt := int64(1634579974 + 100) timeNow = func() time.Time { return time.Unix(1634579974, 0).UTC() } t.Cleanup(func() { timeNow = time.Now }) header := make(http.Header) header.Add("X-Rate-Limit-Limit", "120") header.Add("X-Rate-Limit-Remaining", "12") - header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetEpoch, 10)) + header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetAt, 10)) tplLimit := &valueTpl{} tplReset := &valueTpl{} tplRemaining := &valueTpl{} @@ -208,21 +214,22 @@ func TestGetRateLimitReturnsResetValueIfEarlyLimitPercent(t *testing.T) { earlyLimit: earlyLimit, } resp := &http.Response{Header: header} - epoch, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, resetEpoch, epoch) + assert.True(t, applied) + assert.EqualValues(t, resetAt, resumeAt) } // Test getRateLimit function when "Limit" header is missing, when using a Percentage early-limit -// expect to receive 0, nil. (default rate-limiting) +// expect to receive false, 0, nil. (default rate-limiting) func TestGetRateLimitWhenMissingLimit(t *testing.T) { - resetEpoch := int64(1634579974 + 100) + reset := int64(1634579974 + 100) timeNow = func() time.Time { return time.Unix(1634579974, 0).UTC() } t.Cleanup(func() { timeNow = time.Now }) header := make(http.Header) header.Add("X-Rate-Limit-Remaining", "1") - header.Add("X-Rate-Limit-Reset", strconv.FormatInt(resetEpoch, 10)) + header.Add("X-Rate-Limit-Reset", strconv.FormatInt(reset, 10)) tplReset := &valueTpl{} tplRemaining := &valueTpl{} earlyLimit := func(i float64) *float64 { return &i }(0.9) @@ -236,7 +243,8 @@ func TestGetRateLimitWhenMissingLimit(t *testing.T) { earlyLimit: earlyLimit, } resp := &http.Response{Header: header} - epoch, err := rateLimit.getRateLimit(resp) + applied, resumeAt, err := rateLimit.getRateLimit(resp) assert.NoError(t, err) - assert.EqualValues(t, 0, epoch) + assert.False(t, applied) + assert.EqualValues(t, 0, resumeAt) } diff --git a/x-pack/filebeat/input/httpjson/request.go b/x-pack/filebeat/input/httpjson/request.go index 5612f2dc641..9e60d22ac49 100644 --- a/x-pack/filebeat/input/httpjson/request.go +++ b/x-pack/filebeat/input/httpjson/request.go @@ -236,19 +236,17 @@ func (rf *requestFactory) collectResponse(ctx context.Context, trCtx *transformC func (c *httpClient) do(ctx context.Context, req *http.Request) (*http.Response, error) { resp, err := c.limiter.execute(ctx, func() (*http.Response, error) { - return c.client.Do(req) + resp, err := c.client.Do(req) + if err == nil { + // Read the whole resp.Body so we can release the connection. + // This implementation is inspired by httputil.DumpResponse + resp.Body, err = drainBody(resp.Body) + } + return resp, err }) if err != nil { return nil, err } - defer resp.Body.Close() - - // Read the whole resp.Body so we can release the connection. - // This implementation is inspired by httputil.DumpResponse - resp.Body, err = drainBody(resp.Body) - if err != nil { - return nil, fmt.Errorf("failed to read response body: %w", err) - } if resp.StatusCode >= http.StatusBadRequest { body, _ := io.ReadAll(resp.Body) @@ -939,6 +937,8 @@ func cloneResponse(source *http.Response) (*http.Response, error) { // // This function is a modified version of drainBody from the http/httputil package. func drainBody(b io.ReadCloser) (r1 io.ReadCloser, err error) { + defer b.Close() + if b == nil || b == http.NoBody { // No copying needed. Preserve the magic sentinel meaning of NoBody. return http.NoBody, nil @@ -946,10 +946,10 @@ func drainBody(b io.ReadCloser) (r1 io.ReadCloser, err error) { var buf bytes.Buffer if _, err = buf.ReadFrom(b); err != nil { - return b, err + return b, fmt.Errorf("failed to read http.response.body: %w", err) } if err = b.Close(); err != nil { - return b, err + return b, fmt.Errorf("failed to close http.response.body: %w", err) } return io.NopCloser(&buf), nil From 6d8882b5d653176f2355f317754e6967773fabcf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Mar 2024 12:14:42 -0500 Subject: [PATCH 008/313] build(deps): bump github.com/elastic/elastic-agent-system-metrics from 0.9.1 to 0.9.2 (#38229) * build(deps): bump github.com/elastic/elastic-agent-system-metrics Bumps [github.com/elastic/elastic-agent-system-metrics](https://github.com/elastic/elastic-agent-system-metrics) from 0.9.1 to 0.9.2. - [Release notes](https://github.com/elastic/elastic-agent-system-metrics/releases) - [Changelog](https://github.com/elastic/elastic-agent-system-metrics/blob/main/CHANGELOG.md) - [Commits](https://github.com/elastic/elastic-agent-system-metrics/compare/v0.9.1...v0.9.2) --- updated-dependencies: - dependency-name: github.com/elastic/elastic-agent-system-metrics dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index c038c7027e3..f1895fdc1ef 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -13041,11 +13041,11 @@ these terms. -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-system-metrics -Version: v0.9.1 +Version: v0.9.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-system-metrics@v0.9.1/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-system-metrics@v0.9.2/LICENSE.txt: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index d087675031e..0c1f181033b 100644 --- a/go.mod +++ b/go.mod @@ -204,7 +204,7 @@ require ( github.com/elastic/elastic-agent-autodiscover v0.6.7 github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 - github.com/elastic/elastic-agent-system-metrics v0.9.1 + github.com/elastic/elastic-agent-system-metrics v0.9.2 github.com/elastic/go-elasticsearch/v8 v8.12.0 github.com/elastic/mito v1.9.0 github.com/elastic/tk-btf v0.1.0 diff --git a/go.sum b/go.sum index 746d5023ae9..c7dea61a762 100644 --- a/go.sum +++ b/go.sum @@ -673,8 +673,8 @@ github.com/elastic/elastic-agent-libs v0.7.5 h1:4UMqB3BREvhwecYTs/L23oQp1hs/XUkc github.com/elastic/elastic-agent-libs v0.7.5/go.mod h1:pGMj5myawdqu+xE+WKvM5FQzKQ/MonikkWOzoFTJxaU= github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 h1:sb+25XJn/JcC9/VL8HX4r4QXSUq4uTNzGS2kxOE7u1U= github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3/go.mod h1:rWarFM7qYxJKsi9WcV6ONcFjH/NA3niDNpTxO+8/GVI= -github.com/elastic/elastic-agent-system-metrics v0.9.1 h1:r0ofKHgPpl+W09ie7tzGcCDC0d4NZbQUv37rSgHf4FM= -github.com/elastic/elastic-agent-system-metrics v0.9.1/go.mod h1:9C1UEfj0P687HAzZepHszN6zXA+2tN2Lx3Osvq1zby8= +github.com/elastic/elastic-agent-system-metrics v0.9.2 h1:/tvTKOt55EerU0WwGFoDhBlyWLgxyv7d8xCbny0bciw= +github.com/elastic/elastic-agent-system-metrics v0.9.2/go.mod h1:VfJnKw4Jqrd9ddljXCwaGKJgN+7ADyyGk089NaXVsf0= github.com/elastic/elastic-transport-go/v8 v8.4.0 h1:EKYiH8CHd33BmMna2Bos1rDNMM89+hdgcymI+KzJCGE= github.com/elastic/elastic-transport-go/v8 v8.4.0/go.mod h1:YLHer5cj0csTzNFXoNQ8qhtGY1GTvSqPnKWKaqQE3Hk= github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270 h1:cWPqxlPtir4RoQVCpGSRXmLqjEHpJKbR60rxh1nQZY4= From 7987272fc0dde1e123b3ecf5662977b83c3a460d Mon Sep 17 00:00:00 2001 From: Michael Katsoulis Date: Mon, 11 Mar 2024 16:14:07 +0200 Subject: [PATCH 009/313] add_cloud_metadata - Retrieve AKS cluster name and id (#37685) * Retrieve aks cluster name and id --------- Co-authored-by: Tetiana Kravchenko Co-authored-by: Andrew Kroh --- CHANGELOG.next.asciidoc | 1 + NOTICE.txt | 140 +++++++++++++- auditbeat/include/fields.go | 2 +- filebeat/include/fields.go | 2 +- go.mod | 9 +- go.sum | 24 ++- heartbeat/include/fields.go | 2 +- .../add_cloud_metadata/_meta/fields.yml | 3 - .../docs/add_cloud_metadata.asciidoc | 5 + .../add_cloud_metadata/provider_azure_vm.go | 182 +++++++++++++++++- .../provider_azure_vm_test.go | 81 ++++++++ metricbeat/include/fields/fields.go | 2 +- packetbeat/include/fields.go | 2 +- winlogbeat/include/fields.go | 2 +- x-pack/functionbeat/include/fields.go | 2 +- x-pack/heartbeat/include/fields.go | 2 +- x-pack/osquerybeat/include/fields.go | 2 +- 17 files changed, 424 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index faa7f439ce9..248a4e0fae7 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -140,6 +140,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - The Elasticsearch output can now configure performance presets with the `preset` configuration field. {pull}37259[37259] - Upgrade to elastic-agent-libs v0.7.3 and golang.org/x/crypto v0.17.0. {pull}37544[37544] - Make more selective the Pod autodiscovery upon node and namespace update events. {issue}37338[37338] {pull}37431[37431] +- Enhance add_cloud_metadata processor with `orchestrator.cluster.name`, `orchestrator.cluster.id` and `azure.resourcegroup.name` when running inside an AKS cluster. {issue}33081[33081] {pull}37685[37685] - Upgrade go-sysinfo from 1.12.0 to 1.13.1. {pull}37996[37996] - Make `range` condition work with numeric values as strings. {pull}38080[38080] diff --git a/NOTICE.txt b/NOTICE.txt index f1895fdc1ef..2f66d290a43 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1773,11 +1773,11 @@ SOFTWARE -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-sdk-for-go/sdk/azidentity -Version: v1.2.2 +Version: v1.4.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/azidentity@v1.2.2/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/azidentity@v1.4.0/LICENSE.txt: MIT License @@ -1832,6 +1832,36 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 +Version: v4.6.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4@v4.6.0/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement Version: v1.1.0 @@ -1894,11 +1924,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources -Version: v1.0.0 +Version: v1.1.1 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources@v1.0.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources@v1.1.1/LICENSE.txt: MIT License @@ -29549,6 +29579,98 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal +Version: v1.1.2 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/internal@v1.1.2/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE + + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 +Version: v2.0.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2@v2.0.0/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE + + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups +Version: v1.0.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups@v1.0.0/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + -------------------------------------------------------------------------------- Dependency : github.com/Azure/go-amqp Version: v0.16.0 @@ -31253,11 +31375,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/AzureAD/microsoft-authentication-library-for-go -Version: v0.9.0 +Version: v1.1.1 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure!a!d/microsoft-authentication-library-for-go@v0.9.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure!a!d/microsoft-authentication-library-for-go@v1.1.1/LICENSE: MIT License @@ -39522,12 +39644,12 @@ Contents of probable licence file $GOMODCACHE/github.com/godror/knownpb@v0.1.0/L -------------------------------------------------------------------------------- -Dependency : github.com/golang-jwt/jwt/v4 -Version: v4.5.0 +Dependency : github.com/golang-jwt/jwt/v5 +Version: v5.0.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/golang-jwt/jwt/v4@v4.5.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/golang-jwt/jwt/v5@v5.0.0/LICENSE: Copyright (c) 2012 Dave Grijalva Copyright (c) 2021 golang-jwt maintainers diff --git a/auditbeat/include/fields.go b/auditbeat/include/fields.go index 4a32bb2836e..c98c1ed1901 100644 --- a/auditbeat/include/fields.go +++ b/auditbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/filebeat/include/fields.go b/filebeat/include/fields.go index ad9a4b87c8c..07cff58f8cd 100644 --- a/filebeat/include/fields.go +++ b/filebeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/go.mod b/go.mod index 0c1f181033b..fc7c97929b2 100644 --- a/go.mod +++ b/go.mod @@ -185,11 +185,12 @@ require ( cloud.google.com/go/compute v1.23.0 cloud.google.com/go/redis v1.13.1 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/consumption/armconsumption v1.1.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 v4.6.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement v1.1.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.8.0 - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 github.com/Azure/go-autorest/autorest/adal v0.9.14 github.com/apache/arrow/go/v14 v14.0.2 @@ -249,7 +250,7 @@ require ( github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c // indirect github.com/andybalholm/brotli v1.0.5 // indirect github.com/antlr4-go/antlr/v4 v4.13.0 // indirect @@ -294,7 +295,7 @@ require ( github.com/gobuffalo/here v0.6.7 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/godror/knownpb v0.1.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect diff --git a/go.sum b/go.sum index c7dea61a762..f95a7973ed8 100644 --- a/go.sum +++ b/go.sum @@ -105,20 +105,28 @@ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 v4.6.0 h1:AAIdAyPkFff6XTct2lQCxOWN/+LnA41S7kIkzKaMbyE= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4 v4.6.0/go.mod h1:noQIdW75SiQFB3mSFJBr4iRRH83S9skaFiBv4C0uEs0= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement v1.1.0 h1:1MRED2aeLx/BPHC23XRtr8Mk6zcc70HNRYPQ73R0gHw= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/costmanagement/armcostmanagement v1.1.0/go.mod h1:Am1cUioOk0HdZIsjpXJkQ4RIeQbwYsW6LkNIc5z/5XY= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 h1:mLY+pNLjCUeKhgnAJWAKhEUQM+RJQo2H1fuGSw1Ky1E= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2/go.mod h1:FbdwsQ2EzwvXxOPcMFYO8ogEc9uMMIj3YkmCdXdAFmk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0/go.mod h1:mLfWfj8v3jfWKsL9G4eoBoXVcsqcIUTapmdKy7uGOp0= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.8.0 h1:dKxKBzh+XIEoYNmx/c8HeiwghuRExXf61WmVotWESeA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.8.0/go.mod h1:kzRLpzzlw6eBUXE7eBw3oqfmKR/kxaHOk4+h9sAe6Yo= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 h1:ECsQtyERDVz3NP3kvDOTLvbQhqWp/x9EsGKtb4ogUr8= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= github.com/Azure/azure-storage-blob-go v0.6.0/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= @@ -181,8 +189,8 @@ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBp github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8= github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -987,8 +995,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= diff --git a/heartbeat/include/fields.go b/heartbeat/include/fields.go index d5323f72605..4a975fc8820 100644 --- a/heartbeat/include/fields.go +++ b/heartbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/libbeat/processors/add_cloud_metadata/_meta/fields.yml b/libbeat/processors/add_cloud_metadata/_meta/fields.yml index 5f756b47bb4..67cd1a1935a 100644 --- a/libbeat/processors/add_cloud_metadata/_meta/fields.yml +++ b/libbeat/processors/add_cloud_metadata/_meta/fields.yml @@ -9,7 +9,6 @@ example: ami-abcd1234 description: > Image ID for the cloud instance. - # Alias for old fields - name: meta.cloud.provider default_field: true @@ -52,5 +51,3 @@ type: alias path: cloud.region migration: true - - diff --git a/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc b/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc index c6dbdd5600a..f2c8db13730 100644 --- a/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc +++ b/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc @@ -55,6 +55,11 @@ List of names the `providers` setting supports: - "alibaba", or "ecs" for the Alibaba Cloud provider (disabled by default). - "azure" for Azure Virtual Machine (enabled by default). + If the virtual machine is part of an AKS managed cluster, the fields + `orchestrator.cluster.name` and `orchestrator.cluster.id` can also be + retrieved. "TENANT_ID", "CLIENT_ID" and "CLIENT_SECRET" environment + variables need to be set for authentication purposes. If not set we + fallback to https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication?tabs=bash#2-authenticate-with-azure[DefaultAzureCredential] and user can choose different authentication methods (e.g. workload identity). - "digitalocean" for Digital Ocean (enabled by default). - "aws", or "ec2" for Amazon Web Services (enabled by default). - "gcp" for Google Copmute Enging (enabled by default). diff --git a/libbeat/processors/add_cloud_metadata/provider_azure_vm.go b/libbeat/processors/add_cloud_metadata/provider_azure_vm.go index 0e562e1ef99..788519352a8 100644 --- a/libbeat/processors/add_cloud_metadata/provider_azure_vm.go +++ b/libbeat/processors/add_cloud_metadata/provider_azure_vm.go @@ -18,12 +18,46 @@ package add_cloud_metadata import ( + "context" + "fmt" + "net/http" + "os" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4" + s "github.com/elastic/beats/v7/libbeat/common/schema" c "github.com/elastic/beats/v7/libbeat/common/schema/mapstriface" conf "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" ) +type azureMetadataFetcher struct { + provider string + httpMetadataFetcher *httpMetadataFetcher + genericMetadataFetcher *genericFetcher + httpMeta mapstr.M +} + +func newAzureMetadataFetcher( + provider string, + httpMetadataFetcher *httpMetadataFetcher, +) (*azureMetadataFetcher, error) { + + azFetcher := &azureMetadataFetcher{ + provider: provider, + httpMetadataFetcher: httpMetadataFetcher, + } + return azFetcher, nil +} + +// NewClusterClient variable is assigned an anonymous function that returns a new ManagedClustersClient. +var NewClusterClient func(clientFactory *armcontainerservice.ClientFactory) *armcontainerservice.ManagedClustersClient = func(clientFactory *armcontainerservice.ClientFactory) *armcontainerservice.ManagedClustersClient { + return clientFactory.NewManagedClustersClient() +} + // Azure VM Metadata Service var azureVMMetadataFetcher = provider{ Name: "azure-compute", @@ -33,9 +67,9 @@ var azureVMMetadataFetcher = provider{ Create: func(_ string, config *conf.C) (metadataFetcher, error) { azMetadataURI := "/metadata/instance/compute?api-version=2021-02-01" azHeaders := map[string]string{"Metadata": "true"} - azSchema := func(m map[string]interface{}) mapstr.M { + azHttpSchema := func(m map[string]interface{}) mapstr.M { m["serviceName"] = "Virtual Machines" - out, _ := s.Schema{ + cloud, _ := s.Schema{ "account": s.Object{ "id": c.Str("subscriptionId"), }, @@ -49,12 +83,148 @@ var azureVMMetadataFetcher = provider{ "service": s.Object{ "name": c.Str("serviceName"), }, - "region": c.Str("location"), + "region": c.Str("location"), + "resourcegroup": c.Str("resourceGroupName"), }.Apply(m) - return mapstr.M{"cloud": out} + + return mapstr.M{"cloud": cloud} + } + + azGenSchema := func(m map[string]interface{}) mapstr.M { + orchestrator := mapstr.M{ + "orchestrator": mapstr.M{}, + } + + orchestrator.DeepUpdate(m) + return orchestrator } - fetcher, err := newMetadataFetcher(config, "azure", azHeaders, metadataHost, azSchema, azMetadataURI) - return fetcher, err + // hfetcher represents an http fetcher to retrieve metadata from azure metadata endpoint + hfetcher, err := newMetadataFetcher(config, "azure", azHeaders, metadataHost, azHttpSchema, azMetadataURI) + if err != nil { + return hfetcher, fmt.Errorf("failed to create new http metadata fetcher: %w", err) + } + // fetcher represents an azure metadata fetcher. The struct includes two types of fetchers. + // 1. An http fetcher(hfetcher) which retrieves metadata from azure metadata endpoint and + // 2. A generic fetcher(gfetcher) which uses azure sdk to retrieve metadata of azure managed clusters. + fetcher, err := newAzureMetadataFetcher("azure", hfetcher) + if err != nil { + return fetcher, fmt.Errorf("failed to create new azure metadata fetcher: %w", err) + } + // gfetcher is created and assinged to fetcher after the fetcher is created in order the + // fetchAzureClusterMeta to be a method of fetcher. This is needed so that the generic fetcher + // can use the results/metadata that are already retrieved from http fetcher. SubscriptionId and + // resourceGroupName are then used to filter azure managed clusters results. + gfetcher, err := newGenericMetadataFetcher(config, "azure", azGenSchema, fetcher.fetchAzureClusterMeta) + if err != nil { + return fetcher, fmt.Errorf("failed to create new generic metadata fetcher: %w", err) + } + fetcher.genericMetadataFetcher = gfetcher + return fetcher, nil }, } + +// fetchMetadata fetches azure vm metadata from +// 1. Azure metadata endpoint with httpMetadataFetcher +// 2. Azure Managed Clusters using azure sdk with genericMetadataFetcher +func (az *azureMetadataFetcher) fetchMetadata(ctx context.Context, client http.Client) result { + res := result{provider: az.provider, metadata: mapstr.M{}, err: nil} + logger := logp.NewLogger("add_cloud_metadata") + httpRes := az.httpMetadataFetcher.fetchMetadata(ctx, client) + if httpRes.err != nil { + res.err = httpRes.err + return res + } + res.metadata = httpRes.metadata + az.httpMeta = httpRes.metadata + gRes := az.genericMetadataFetcher.fetchMetadata(ctx, client) + if gRes.err != nil { + logger.Warnf("Failed to get additional AKS Cluster meta: %+v", gRes.err) + return res + } + + res.metadata.DeepUpdate(gRes.metadata) + return res +} + +// getAzureCredentials returns credentials to connect to Azure +// env vars TENANT_ID, CLIENT_ID and CLIENT_SECRET are required +// if not set, NewDefaultAzureCredential method will be used +func getAzureCredentials(logger *logp.Logger) (azcore.TokenCredential, error) { + if os.Getenv("TENANT_ID") != "" && os.Getenv("CLIENT_ID") != "" && os.Getenv("CLIENT_SECRET") != "" { + return azidentity.NewClientSecretCredential(os.Getenv("TENANT_ID"), os.Getenv("CLIENT_ID"), os.Getenv("CLIENT_SECRET"), nil) + } else { + logger.Debugf("No Client or Tenant configuration provided. Retrieving default Azure credentials") + return azidentity.NewDefaultAzureCredential(nil) + } +} + +// getAKSClusterNameID returns the AKS cluster name and ID for a given resourceGroup +func getAKSClusterNameID(ctx context.Context, clusterClient *armcontainerservice.ManagedClustersClient, resourceGroupName string) (string, string, error) { + pager := clusterClient.NewListPager(nil) + for pager.More() { + page, err := pager.NextPage(ctx) + if err != nil { + return "", "", fmt.Errorf("failed to advance page: %w", err) + } + for _, v := range page.Value { + if *v.Properties.NodeResourceGroup == resourceGroupName { + return *v.Name, *v.ID, nil + } + + } + } + return "", "", nil +} + +// fetchAzureClusterMeta fetches metadata of Azure Managed Clusters using azure sdk. +func (az *azureMetadataFetcher) fetchAzureClusterMeta( + ctx context.Context, + client http.Client, + result *result, +) { + logger := logp.NewLogger("add_cloud_metadata") + subscriptionID, _ := az.httpMeta.GetValue("cloud.account.id") + resourceGroupName, _ := az.httpMeta.GetValue("cloud.resourcegroup") + strResourceGroupName := "" + if val, ok := resourceGroupName.(string); ok { + strResourceGroupName = val + } + // Drop cloud.resourcegroup field as we do not want the cloud provider to populate this field + az.httpMeta.Delete("cloud.resourcegroup") + + strSubscriptionID := "" + if val, ok := subscriptionID.(string); ok { + strSubscriptionID = val + } + // if subscriptionID cannot be retrieved from metadata endpoint return an error + if strSubscriptionID == "" { + logger.Debugf("subscriptionID cannot be retrieved from metadata endpoint") + result.err = fmt.Errorf("subscriptionID is required to create a new azure client") + return + } + + if strResourceGroupName == "" { + result.err = fmt.Errorf("resourceGroupName is required to fetch AKS cluster name and cluster ID") + return + } + cred, err := getAzureCredentials(logger) + if err != nil { + result.err = fmt.Errorf("failed to obtain azure credentials: %w", err) + return + } + clientFactory, err := armcontainerservice.NewClientFactory(strSubscriptionID, cred, nil) + if err != nil { + result.err = fmt.Errorf("failed to create new armcontainerservice client factory: %w", err) + return + } + + clusterClient := NewClusterClient(clientFactory) + clusterName, clusterID, err := getAKSClusterNameID(ctx, clusterClient, strResourceGroupName) + if err == nil { + _, _ = result.metadata.Put("orchestrator.cluster.id", clusterID) + _, _ = result.metadata.Put("orchestrator.cluster.name", clusterName) + } else { + result.err = fmt.Errorf("failed to get AKS cluster name and ID: %w", err) + } +} diff --git a/libbeat/processors/add_cloud_metadata/provider_azure_vm_test.go b/libbeat/processors/add_cloud_metadata/provider_azure_vm_test.go index 658e9939289..0e7fde69982 100644 --- a/libbeat/processors/add_cloud_metadata/provider_azure_vm_test.go +++ b/libbeat/processors/add_cloud_metadata/provider_azure_vm_test.go @@ -18,18 +18,38 @@ package add_cloud_metadata import ( + "context" + "fmt" "net/http" "net/http/httptest" "testing" + "time" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice/v4/fake" "github.com/stretchr/testify/assert" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/elastic/beats/v7/libbeat/beat" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" ) +var cluster1Name = "testcluster1Name" +var cluster1ID = "testcluster1ID" + +var cluster1 = armcontainerservice.ManagedCluster{ + ID: to.Ptr(cluster1ID), + Name: to.Ptr(cluster1Name), + Properties: &armcontainerservice.ManagedClusterProperties{NodeResourceGroup: to.Ptr("MC_myname_group_myname_eastus")}, +} + const azInstanceIdentityDocument = `{ "azEnvironment": "AzurePublicCloud", "customData": "", @@ -87,7 +107,62 @@ func initAzureTestServer() *httptest.Server { })) } +// NewTokenCredential creates an instance of the TokenCredential type. +func newTokenCredential() *TokenCredential { + return &TokenCredential{} +} + +// TokenCredential is a fake credential that implements the azcore.TokenCredential interface. +type TokenCredential struct { + err error +} + +// SetError sets the specified error to be returned from GetToken(). +// Use this to simulate an error during authentication. +func (t *TokenCredential) SetError(err error) { + t.err = fmt.Errorf("Token cannot be created") +} + +// GetToken implements the azcore.TokenCredential for the TokenCredential type. +func (t *TokenCredential) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) { + if t.err != nil { + return azcore.AccessToken{}, t.err + } + return azcore.AccessToken{Token: "fake_token", ExpiresOn: time.Now().Add(24 * time.Hour)}, nil +} + func TestRetrieveAzureMetadata(t *testing.T) { + + fakeMCServer := fake.ManagedClustersServer{ + NewListPager: func(options *armcontainerservice.ManagedClustersClientListOptions) (resp azfake.PagerResponder[armcontainerservice.ManagedClustersClientListResponse]) { + + page := armcontainerservice.ManagedClustersClientListResponse{ + ManagedClusterListResult: armcontainerservice.ManagedClusterListResult{ + Value: []*armcontainerservice.ManagedCluster{ + &cluster1, + }, + }, + } + resp.AddPage(http.StatusOK, page, nil) + return resp + }, + } + cred := newTokenCredential() + clusterClient, _ := armcontainerservice.NewManagedClustersClient("subscriptionID", cred, &arm.ClientOptions{ + ClientOptions: azcore.ClientOptions{ + Transport: fake.NewManagedClustersServerTransport(&fakeMCServer), + }, + }) + + NewClusterClient = func(clientFactory *armcontainerservice.ClientFactory) *armcontainerservice.ManagedClustersClient { + return clusterClient + } + defer func() { + NewClusterClient = func(clientFactory *armcontainerservice.ClientFactory) *armcontainerservice.ManagedClustersClient { + return clientFactory.NewManagedClustersClient() + } + }() + logp.TestingSetup() server := initAzureTestServer() @@ -128,6 +203,12 @@ func TestRetrieveAzureMetadata(t *testing.T) { }, "region": "eastus", }, + "orchestrator": mapstr.M{ + "cluster": mapstr.M{ + "id": "testcluster1ID", + "name": "testcluster1Name", + }, + }, } assert.Equal(t, expected, actual.Fields) } diff --git a/metricbeat/include/fields/fields.go b/metricbeat/include/fields/fields.go index 8809b1fb119..fd17140c6a6 100644 --- a/metricbeat/include/fields/fields.go +++ b/metricbeat/include/fields/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "eJzsvft7GzeyKPh7/gqsZr+VlEO2SL0sa+/sXkWSE33HD40lT+Yknk8Eu0ESoybQAdCSmbPnf98PVQAa/ZBMyaJjZ3xvjociu4GqQqFQVajHX8jPR29fn73+8f8gJ5IIaQjLuCFmxjWZ8JyRjCuWmnzRI9yQW6rJlAmmqGEZGS+ImTFyenxBCiX/xVLT++4vZEw1y4gU8P0NU5pLQQ6SQTLoZ+wm+e4v5DxnVDNywzU3ZGZMoQ+3tqbczMpxksr5FsupNjzdYqkmRhJdTqdMG5LOqJgy+MoOPeEsz3Ty3Xd9cs0Wh4Sl+jtCDDc5O7QPfEdIxnSqeGG4FPAVeeHeIe7tw+8I6RNB5+yQrP9vw+dMGzov1r8jhJCc3bD8kKRSMfhbsd9Krlh2SIwq8SuzKNghyajBP2vzrZ9Qw7bsmOR2xgSQit0wYYhUfMqFJWHyHbxHyKWlN9fwUBbeYx+Moqkl9UTJeTVCz07MU5rnC6JYoZhmwnAxhYnciNV0nYumZalSFuY/m0Qv4G9kRjUR0kObk0CeHrLHDc1LBkAHYApZlLmdxg3rJptwpQ283wBLsZTxmwqqghcs56KC662jOa4XmUhFaJ7jCDrBdWIf6Lywi76+PRju9wd7/e2dy8HB4WDvcGc3Odjb+WXdrc6Elrm5gqHCIvrlz+mY5bpz4XGV5dhyOHyBH6/w+2u2uJUq62CA41IbObcPbCGtCsqVDrgdU0HGjJR2uxhJaJaROTOUcDGRak7tIPZ7hyu5mMkyz2CLplIYygURTNslRXCAre3/O8pzXBtNqGJEG2kJSLWHNABw6gk3ymR6zdSIUJGR0fWBHjlytCj832u0KHKeAnRrh2RtImV/TNVaj6wxcWO/KZTMyhR+/59lCD9nWtMpu4fyc2rS2ZUU+eLKsA+mg9IvpCK5nDpaASu5YR3jOIrhT/ZJ93OPyMLwOf89sKxlsRvObu124oJQeNp+wVQgnJ1OG1WmprSkzeVUk1tuZrI0hIpqx9Rg6BFpZkw5yUNSXP1UipQaJqJNY6QFYk4omZVzKvqK0YyOc0Z0OZ9TtSAy2qzxDp6XueFFHnDXhH3g2kqLGVtUE87HXLCMcGEkkSI83Vzrn1ieS/KzVHm2xCoaOr1v88SbhE+FVOyKjuUNOyTDwfZue0Vfcm0snu49HXaJoVPCaDrz2NfZ89eY+5Alt9f+uQwX0ikTyFnuBDkKX0yVLItDst3Bd5czhm+GVXU708lxSujYMgVK3Im5tRvSympjz9OJWzoqFnaNqN3YeW63co9kzOAHqYgca6Zu7HIie0vLljNpV1YqYug102TOqC4Vm9sH3LDhseaG14SLNC8zRn5g1IoWwFWTOV0QmmtJVCns225epRM4PAHR5HuHqhtSz6w8HrNK9MNOsPBTnmvPq0gkVQph95VEAlnYIvyUG/J2xlR8UMxoUTDLsRZZ2NkBVThELAGE496JlEZIY3nBI3tIznC61CodcoJIwz63G7dXwZdYViBO8RkzapJovx+dvwIVyB3SdYTcitOi2LKo8JQlpOKNWKBnknnSgSQHnYbwCXIL18Qe5cTMlCynM/JbyUo7vl5ow+aa5Pyakf+kk2vaI29ZxpE/CiVTpjUXU78o7nFdpjMr+F/KqTZUzwjiQS6A3I5kuEGBye/ZJ7HGVO2accnzLPHyzs3elABdMuBOKdDcYacfDBOZ1RDsVDVSThw/4Np5Hne6FIp9q1QJN4CRYXdSsegYD3YgxYVAFSgMaXdGoeQNz1jP6kS6YCmf8JTg26B7cR00REfZSDLNmVE8tTwVVOJnyX4yIBt0nu3vbvZIzsfwM3796z7d3mEHk4PJzmCyNxgMx3Rnd5ftsr3d7CB7no4PttPxcPAsDSBafAzZHmwP+oPt/mCPbO8cDgeHwwH5j8FgMCDvLo//GShcW+EJzTWrLSsrZmzOFM2veFZfVOaW4wkW1s9BeGYl4oQzhdKCa7dvNvgEDig4xfRmc4m5VYbUHBRPbxvQVEltF0Ibqqz4HJeGjJBDeDaC7Wc3XnuFDuiuJfSkRogm+k/D0+8E/81qzg/HO2hsViKhHIP3bkE1HDMCUot3MKBDL6uhZ/9dBYJO8QVxGh8ArRXUhOJTePqhhjLlNww0Xyrca/i0+3nG8mJS5lZmWgngMAwDm1tJXjj5TbjQhorUacKN40fbieEMskzitC1SaVusoAokQxibayIYy9C8vZ3xdNaeKgjyVM7tZNZyi/A+m1j54Q8aQBVPIP+VnBgmSM4mhrB5YRbtpZxIWVtFu1CrWMXLRXHP8vnDzU5AaH5LF5poY/8NtLXWhJ551sRldYYevmuVuqQijQhHdKBq9SyyuJtozKpHQGPhk9rCVyvWZIDa4s9pOrPWZpvE8Tiezk5wr4DUf3dHQp3YDZj2wYWi0u1Ya9U1lbU0Usi5LDW5AA3gI+rrkSC0egWVBrJxdLGJG9Mpow6wVArBwBdxJgxTghlyrqSRqfTn/sbZ+SZRsoTTsFBswj8wTUqRMTyn7emrZG4Hs9JNKjKXihHBzK1U10QWTFEjldVvvfuAzWg+sS9QYtWbnBGazbng2tideeN1aTtWJueoeFNDnEcEkZjPpeiRNGdU5YvqBAQbKEArc54uwL6YMVAZLILJJ+tHopyPg1573xGay6C81ZbIHRU4DqF5LlPQsR2kreVzamf4OmwEt7puoI2ji9ebpITB80V1Emm0rcKS4F45q9EjYsnh3nD/eQ1hqaZU8N9BbCbt4+VT1Aewbq9iKkci0LsFyL1Og47lq5SfBuXfRJjALC3sf5TScuTLl8fRjkxz3jAkj6tv7rEkj9ybdut57qTasSM33O4M3Ah+cdyGdJqwBw4tRMWmVGVgOVjDQArdi55Hq2HM0bXLpaA5meTyliiWWmO75ue4PD53o+I5VYHZgs1+YR+PIIPtqJkI9qJ95uK/XpOCptfMbOjNBGZB10jhBEprKnRfWkWvNqk3dBVo3kxbOJwp5qlkFBWaAjAJuZBzFoyjUqORaZiakzXvk5VqrXLDKDbxssuBIhoIatxw7mfnBMCVHbNgBIMTICKA24wWLDH1y1xNEcOPbg7HRH4Ce5aVurQEcaNW1jcXFrx/lQIXAIxxNK+9x7xjsIq+QprWkFbNwvXqwz72LsngyMTxtvw8wSUNmwcVN5plRLM5FYancBKwD8bpeOwDau89VKm8HNBB0zOS3HCLLv+dVZ4ViyhTYM9pbkrqluNsQhayVGGOCc1zz3z+fLAydCrVomcf9SqKNjzPCRO6VE4fdX5wq8ZkTBvLHpaklmATnudBjNGiULJQnBqWL57AqqZZppjWq7K8YBega8XxnJvQaUlB/MzHfFrKUucL5HJ4JwjSW0suLecM7gVIzjU4P8/Oe9aIxtNYKkLtMfOBaGn5JyHkvyqKB62x0qFwfyh662Hy+2GUuC9GSLK6LioIN5GqmZXoo8aDcpTwYmRBGSUI1qhHMlYwkTljADV5KSogwM/jVrLStZJ/u+Oc6uTf9kSPvFwLw/RH1P5oxdEnVH+tBsgP9gd09IV7PbcTHSOgIG0v0MFuDTBk55XYflbK4h6OrXgHpWPOhjWPd1xzurBbED3P8LKVB5PSHi6/WRk+4SyLxwZlhArUAOxLYVRB0YIGeuJWqObImLIGQCBguHTxd6wARZa5y9MwKBOKp7O5PVW7LOvE/ZGk7h1P6ymTScrN4mpFTpNja8d0cuUrazcx516tgSOF4YIJc5XKbBUwXd7Kfs6MYfY4zVj9rjnMvq674X599N1HNmg3Misi8OuYj/1kbaClMjNyNGeKp7QDyFIYtbjiWq6K5sc4BTm7eANEb0F4fHQnWKtiTQdS5yofU0GzNqXgZPu4t2TK5FUheVAr6peAUky5KTNUwXJq4I8WBOv/TdZyuI3uP9tJ9oe7BzuDHlnLqVk7JLt7yd5g7/nwgPzPegvIpz3OGk5ezVTfq1LRT2jEefL0iHNyoWItJ2SqqChzqrhZxDrRgqRWNwNLIhK8x17lCS5E5HCuUElOmT3snT01yaVUTmfogctsxitrpVIuELycFLOF5vaDv7FMvYzSEQivpYkiQOCelqNjaQ66zZRJj21b4o6lNlL0s7S1NoXUhuar2mXr5zA8ijWqtUx5dXeJMQIO5ArRv7uYikrbd1dQ4bopXKCOGbkW8lZY244SiwpMJBX55eycRDgRYG1QpW+oWpBbnlkNDk41t6vx4go+tun3fHewO3iImFVsyqVYpQB7CzPcJ7/6fzu+C64VSTAHU6cA+1vJxqzNf9aq+b2yCZ70WJ0xDIb6HfygkxrD9cKt7dnR66PouU7g3UG1daSmcCzTrR9KJqS+OuIqUj4/whi8+AiW4YEaHmfnwUqr64cbZ+c3u5bbz85v9jeT2lxzmq5iP786Ou4GpnFpIaQJt8dz6hTwty+OybPB7jbcv2O0IcsOyak1nmRqmCEb4BDgukcO+mNeqahWx9/Eq1+nGrlgtltJfi2LgqmUavZPMmMfaMZSPqc5yfiUG7j7sWqU8VptGNOBjxNbASJIKTSfuqAdNmUqIRdlCnf+N+5BF+uFd1YIAw0jzhbFjHVI38GgPxj0907h353+9k5tpQQ1SZMzOs/Hbu5Yv1RUaPQgnZ1brJw/BQNEXx9dBuck2WDJNHF+dyuVK5cpQU+cd8nXLoHDoRP544hRFC5qxJTkkmZkTHMqUjgDJ1yxW5rn6P9UsrRHY8PKt0gXUpmHGfne5NNG8W7LP6aGHf9roQf6/R5g/dawPse3H2XrbtfhaK3JMib43etx7tYgFhTxfPY80oYpll11WdlPpydaoTTj0xnTJprU0wjn7gEiRcEyD7Iux/hTtP4vqttw1Pei4Zy9bfWVtYaVu2bF11r8Rbdh767fM2aYmoNWWyiWcm31FVCbKPoAIUYJgnnLcc5TosvJhH8II8IzGzNjisOtLXwEn0ikmm4m5FItQCxKVLQ+cKtFopI1XhDN50W+IIZeV+uKPsOcagNiFyNXUacS0hBwfd2yPAfsL1+eVHFRa6lMyuu1tmC8ywkQyL5KbgiTANMHk+EeF4qP54tU+Dz3rAL6OmEfUlaYKuwOXqvuZlvsnsB9PCUFVYZHFw2kBQEID45z2f9zv6M2U9k1YICUdk3szCkV1U0DqfNVL6JAiNttITRmubztZvPuPVHfNzFt125vbxNGtUnmCzcCMgbuDKrNWhSlgEC4UWZUV2G3gCuoH2GaSptb0+V4O9HleFjbfL0aE1fgoUHhXNo+bq0aY62He05IK+B5DpfYTHHZEfpjEVhWEzSyuAI0PoPUY5OJPaRumJ3VMYrDfoNdvjzZ7KExFSypiu6BaCg6ev46EoSAZVnPK9EmSdoCsjlvGDYKLLKrBHzwdUtGkIp3CcVqJZYTj/B9jW9KzVSyWpaJ/Xd4cy0V3gfbyTFkZc7gPkRO7joWqSAvT47OIRAWMT4JQ8W8st7Gjs0pz1eE3DuLAUzgjZikDYCVnh0G8ld0A2PRXNfVMQBOKHpDeU7HeYdxm4+ZMuSUC22YY6waReB69Q9jO5h99XyHSK4sELcdjOrjqhE/Hy8HVz5bRU6NVa472BPhXKFLNV4JnKwNxIzq2ao4wVEKpI2dBx1zSjFr1bUi06kTS4JQIcUiTjFC+yRilXeauYjWEWDBM7yvhj8sdqOgAqRSTHCtaF6bk4qsQ6uCCMsOplpJYPMdcc1IstbuvugP+3v97WF/e7C9u737fLj97OBZf3v/+fbu9vPdwW5/e2dv+Hxv/9nBfn84GAzaSDyds/Azy8GLmbU+0V0PWShc3EsqmrA7ZaCSefNy+slY/kgpCulmwMowk7+vAL9kPRGtAfT6r2vXfEwFvYKYzbUeWVMMtG4xvbID+sSsO+lWxdTJEgEPIXX+i7sj6jDVl+DuDBEWMBQYLGKiaMjhq9BAPxrGbntnAkRwkzuziybkVZXdwXUcZk4FOT3eRovLbtAJM+mMabibiUYn3GiX0FUBaTd3PW+xllDGdQhfroPgxlWlcJliis2lCcHORJZG84xFMzUhQ5gocalMHiHPOqJ61d0r1VMscdBqIMjZcpN7h48dlusKVEewKB/aA+ei1FxYgWb5pO/SXtF6hadcClLyPYpB+MpQNWUm+Z4QI2vMPfbBApg9Z5/yMK2v64j6XrR6jF1EmZxYItRYRCpL1qm0WLhQRN0jiukC9ep8kZCf5C27YSoimWZGkw4E3KANNOalNdulcVmjE7hpC/dVSkrjQA+DE+e0hlPACwNZUaHigAg1iENKTUnzsFCO0pimh7didoE8A/vZGojYFbMiMuQ4OzLGk3kyBqJV9PSpvNInXsVRHgZDW8OatRcNw0U8bHdQdAkIW8tawXYHRdsc1QHdEwQJpnApuDrFcL3ag24uYPM4iIpnIS/XHfoLkvHJhKnYXQ23xxyyTq2qbI/avmGCCkOYuOFKinn9nqaSrUc/X4TJedbzAVog/8mbtz+SswwzZCF4qGzqH23LdX9//9mzZwcHB8+fP+8k5ypDAtoE9SoAzTnV99Ay0DDQ6NNoicZXi5oZ10VOF7EpEvuRsCxHP2M3y7qTnG3Hc24WV+3b1KdTVKJ58LaU+7BOOCnxbFUMb1yAZapTiLgozJYGU+o+o9r0h/XbYZ9TtLqtd+Zzyc5OvEgGFcIf+E1AeX+4vbNrVeXnAzpOMzYZdEO8Qu4OMMfxgm2oo2tg+LKdvPZkEL3yOkeUx3YvGc12MmcZL+s+f3egfZO3TyJvlxAaDYJ/k8hPKZE9cf9Mgnl5tL8e0f0InP544b480F+++F8eF1f77LOcDG6uWOZ2SZaaHDkP7/TI0e+lYtE3HZUqFn03ySPJ8HnktScERsUtSwKUsnUidIvW+YI8mgzWWl0mS+iTo9g9JWDCxCMfF/+it7pHqMW3R6ZpUd02S4VxaDSXKaOi7XK8XTp60CGOEZwrQtsFcD7p4fFA/Hxhn8/D3x4RXxYiLmOTcW24mJZcz/xzuuGkg+pPlbLir22wTBloKp5teoRNQRM5Pd4mN5q8pPNxRnvkx+Nz8uPxKbmpNJyjoiCnYspF2EN/f2Vfsd+7kkJdO5EWBWHuNfvZgdxzmKpS9MiEqik1rEdymL69H/H7ZZfs310k/7vL4j+ZEI6DEr8+ERuC574J0K9GgDof+Tenx+dyejQI/s3p8ZROD0/cfzOnh0P7T+X0aOL0VTg9HNB/CqeHw+XfXcNukOHfVdGuyPBn0reXR/zr1MiXx++bzv6l6+whSE5m7ErzqaCm9KXXXbSczBi5qP1yd9jc5Yxp1qxmXoszhfizMRdULTB9PkyqP71gYsanTJsrmk+l4mY2XyXPzaieQf01P1nQfC1GmKiBlbXvTvuocWWgAzb8oNhAhWvikndDohBUzApD+o4clunhSQUFaV3mSMXPSJsK3Da/6Bnd3ttfdotjeeE6hVsBtGMpc0ZFFxF/wJ8gDJoWEEbJsVKno4NF3WVFt6NDLRt8JP4zch3wqd3nKyxHbRkiClxelhN4h7nkKsH7LhlkTkU5oa5XxHhhKeRbAdwwkUmVRGOyqnK5Yjm7oZgoe1RYvvn+zQUErHVl5MwTOydLPhSpPY4/LJamraGmXFmxuaMs467EZFuKwHnOlMF0QeZA6abxpMx9zf4plB9Si8LIqaLFjKeEKSWVrsIh41FvaM6zuJyKVFYIaePnIy8ZvWGkFFEVxYlPzIdXq1e8FlKNH4a9tbazSGcsve4qAX/69u2bt1fvXl++fXdxeXpy9fbNm8ul16jEjjMrKo9xgcPXS3150R60uqogFU+VtDxMjqUqZK1I9scVC0bnK97Hdoqn3MwwnlRut7pyxH4Lu4YjUbxp5Rx52B4+/dtP//jl4NXB0d+XpqXvyLQENbOKVWsUO7FbhIqM1DtV1U/2Rg8pKOwNZ1pbrm8Ptof9gf3vcrh9OBwc7gx+WVrOwx5jyzDHPefS+oWR9hCGpYv2ecfeJemsni/8d7vhMby4ev2u93xQeirnvt5kD0k549XxXsvk9eHGlaSxp7+UuXbtJ1y4OAExgnoBCqkWuzzsBAVJ9ol07T7wMTEOrKr60X/DFOaJ0ynlIqrrZ98ICqRV8WNPYacspjXif0TQLkOYSmsGDdfJuKAwx1/eU7Q5PFgvzOtK5raaeUW9gFz/EAdkgCJE7JvQog3D5KvI8e+8wIr09BnLiygVDVIvsKpIGFm7pA6xsLaH3etPEIOeFmVShuZd9zOWTmnOsqtJLmlnsbf1c6ZSq+Yen79DGqLRy7Xr8sF/r/rEubqncgJP2zMwKn0gMsINUdgQBLAeWJYdJuQipZApb7UxqewpMhgE/tH441X847K7K+P6OlGMZklHrdAHVYiF80vavVThCGOSjSktp2wTGlQQjeV/sCbEBp1OFZtGLcRcWhHNcwBNbxLNRcqqdHDsRxOV+F/alwmo3ipu2GfA1c5jmPgD0V1lomS17XlWj47mczpdqdMl9qjBZCHDCQGyIhY7Cnla1UEzdLoiyCqZ6uCi00YyfNSp8f7po46N9/RsbHr9YVbX/rA275zNpVo8ncB7BeMRGI8UKP3sx+UFWGD/JxNkK2S5amFFqGQXpsUK1QmbQu2DpxAsd4kUKEVlz2F7IOd5KI4NFbUmNG07Zqpd8WRSxePLxeoQDr1VPeZ/JMJO51gRa73F0cmcCjpF3Z3rCo2WkYLtTiM10GpMV9ooRuexInhiFamL6uuPdIKMRvGamaHXDAvScIGF9b1pIditazVXjR9KXut0xqIrnjPR9Ur94aqQYKhWET0aHLrQ/NMTXDbLxvrMz/hVlxQ5kXkuoSvqnArB1CEZ/XeEMFxq/k+/9pX9rJlpfAvlmwqasv8ZVcoshw6WLs856pAK9lKofTCj0A5ZeWNJOQ8NodpX/anoyMDgizDRCXklVaMrh2MVrOAzkaVwWaBch87UUB0Kgw6SVG6NczndoqLPhQm9RvtG9s2M9UNsAjW0j7P2cZX6uEq/2rcdjIXU5p9hjY8EOcW3NaMqndXWIJVCc0g+rfdOGtP0GvtPZjxlGq3PcGFQZxWoVjvXtfJIjfddbV9yUjJkDtxFN0xAZdL2uBqzkqFMEzKIHYp98KypmLYSw2BrjlpFlE7eZ9rVsAgdSkfvRz0y2rL/fG//+X/tP2v2n/9l//l/7D//n/2HjMgGsFXFJpse4lFvBBdlo7+MEt99XDPcMnWiQ8cXZoUe1PConJd3MMO05BnbYsL3LMdhtsIwW2mpFBNmy1G4nypGDesDlZKZmed/afxCC94vqJn1C6roXP8ak/CfT2CzuU25hCS2TGeoMFf3aEtrlcfa7qGowaaZoaSjhsyhQ61mQjPvhnOutffh6HkfmbteeCXvRatj7UhMufiQULAH7LoXSs6ZmbES/mIig3Lio3hkZlJkvhrnAmgQ03XLwZQ22C0Svs+wF/6M3jBPMaKZiUe9ZaGFEIrd92vgIePp+7VQQ8e/C08kZISlMty3I+cVikeFGcN1EA5MNRl1yNVR8l78wBYSHE4NRo6H7DgyUmu/KU4tkiwjcLxiYYJRgA3nnlEdbYN42JgxD98LQr4nr3yJAs8Ho/4If3ktQXdBD4ewKmkkzdea53O8xg/RXGH/PxVnH2HVE1/CPYyfgPEEH4PDx3UpoiABYV9yMY2J5U6i5L14RQVUSVea0Nza8gsf7shc4XYvjLGzJ114nyJyU23LdOkBQt76e243xphpQwpLbJ4yLEnuyJkQC048JEIGdeK8By6ucA4XLCP39ihx7SyRVZz7HLokQ9eleFx70kAznvDu3cxbP0PqvBqP6dh2FJYmZlrQZir5fQ+3xkN+IuNW3ceXZdslY8GW4dj1I0HkDVOWhCB7FwWrCSLHL3H7ADyd8gWyLsviMJq1XE71GjDfGmr+ei0hPzPCPhQsxe5d9uCnWUbWjLL7Ya3mhVvTC2FmzK7rWtXXjCoyKU2pOuKP7ITL+W2jflw1hb3x9T0Ke/RopXCiU7upIDJvS9U78AXosX3ZFpZKTuquWbgiqjqpYWGdWnO3nquxbDUU76uASGPXogs50i5o1FOddja48wvbgVvUMu5jzeLwHHbN4ip3813t0KIJQE3NoBIrapea5VzUGsFizy836tg3UgMfv6hjrO+a0JOhTky/XeJ+f2dRfSrk1TC2vx50d/T1+vUAb9ySHkpfwQEpup/zVAhYYhOIQOmvqitcrdndUq3hwrbHAZ6qNVwYFlrE4U781hruW2u4f6/WcPF29DXzQTJ+ef3hYlC/NYl7erp/axL3rUnctyZx35rEfWsS961J3Lcmcd+axH2VTeJiJfHL6BQXQfStXdwX0C6OF+Awj/jkIz3SWK05WqH4jRW8J69+2exqj1ZVTv6iOsRBS7Io8NNhCuGgFW2MtItlKXHCIDXv6TFcRc+3Bxixn6/xW23fky+o+1vN3fmtBdy3FnDfWsB9awH3rQXctxZw31rAfWsB91XftHxrAfetBdy3FnDfWsB9awH3rQXcA1rAZTmeuz7O6+VL+PP+hIxlCtmAyz3nY0UVZ5pkC0Hn6ETxBJU0Q0+a9HUD4GbD/QzhnLJgyvWkAhmpMY7cSoc1PaPQz702zxoqhVVtFzBovCEw9mkJzgJgBsfTLsY02FI+JePQQ/M9OUEE+jkX126+BdkYJVmejzZJKudzSKkAB5EU5GcuMnmrq/cvENw3WBBiY5Ro2fXeO8E/9EGZbeHegqUGxiLn464B5zR9c/EEGcm1KkjJt3JCn6+cUIP0X1F1oQbk34oNra7YUJPU32oPffG1h5pL9ucpRdTA7FtloqerTNQk7Z+tUFETv291i1ZUt6hB6G9ljO6gk9U+k3m2tyLp9epkD6d4EDx6RocrAujip6Ph4yCqVNoVwLS9t/84qPbctfdKoNobbj8GKp0xtozEfhRUFyenp+cPg2pFKkfNv+ts1eYBjEdKni/InBa6q3ICGGdQf1hftzfzNVOC5TvbiXdkLIFuQc2qHJkvyjxHiO0kLdwbwB8fvnd+gvcXYOPvbL9/FEIsgdxEw9JQiXgFdWbO35F4Gt+Q2/u0LdotFD/s7z4AC3twUrFYEQKYhANxpzBNi816Pr83I9TAUzxnfajp9qT6ccGSCLBVY9sIf34Esuc0jhH/OHJ2+KsbpvRnwM5N80jM9pOd5Pn+YJAMn+0O9x6AIp8Xq7wPOcJbkFBIrJDKuBY856e408iRIA4K0u9DoAg8RiK4iP3FXaF7O2fCxZSpQnHhqo1DztoNE4RODFNEMaSYy9/07XmsvtgHPCs9TVGhg/mvscSCTKEyR9ZzKX63GGUBmbxYW8UoWlX/sNBjanRdx1MCH6amViFkwhVjCxAUWC/GzBSjpq+YKxCyPRjubg2GW0ZhBZb+nObWaOsjcfrOmQgVQjoCMdP9g8FOusueb28P7YcspXvP93cozXb2s2zyAAbxGVFXsBlWeHUXdsKnSLOL86Oz15fJ6T9OH4Cis4NXjZeb5lPwWwvi+v2Ho1PvnIfPb4KbHY/gtfsJEO5NBBp0/t7k9QX8ec+9yQu8MXEJH3bCk9cX5LeSwQaE+kJC3zJVbQT7O9z/hPRnxmEvhiBncNuKac7CWAtSKC7hhmTKDODlhnWDbowyoaGo1CE8P9okeH4v/CTx6BBO4BPx8R7U3fiYkJyM04bcfo2xL7QWV+ZgQJv2lqETBdcuZHHAOG0o8dXR5lNketcosXSFw1YxCAp3d1EBASrcGxjyQ9OZm4torOdGFDOlEtE1tb9NaHa6uJwxAjEL12zh6FUlWfuFQfpr5mat55CPF+T0+KJyR79lqVSZGwtkNEjW2HM7r9DBH/3kgtzat06PL9zwzdwju8aW97AMBgQeQ0g9w6KhtYIP9jnP4+TIkDkXfF7Oe+7LMK5HCkpgRfyGNXRGFjgoQdBCg+sq4qVnDYowJIQSpnCgcvDMWYyoJoXUmo8xiiSDghtWL4zKm/hyczJi4xagVJO01Eb6cnDNLHaHc5rTlZUZwF4vFFMvwoL4Sn1V7TXf3waOedX23p297gTdjrYqXcdX+ItFI8ae+kD2+uZgFPac9Bl0+GrBRKZ9RA1UaAFp5UkSD+hxbx3/w0Hi/+ukwiozFpuJ30bGzYkaoJOCKYjdjWhzBm4wcEPKCTl+ffTqlECNIlcvTuY3ViuLhNP6usYaP6NIxJio6IQUDKUGhOLoQloSh+uYaBDYlwk5C7JKSOOjJptj+kzx0W8l06HCwcgeOyyq6BEtC4QQ3xE17pfGmGXiB+8tmMwh2NswdQP3WlZ0A8JAgc5V8O5ems5iyc4mIJhq1TG4TqnKWJaQX5iSvhrQHNylMxf3gTK0IuC4ohpO0VGXoJtRV9gI73JWNcF7pIwB3qzBPWM0Y+pqktPp6i4tfcDNNnFZ9VZM4swEZq71mypYamplmw7J0VGPXB73yNuTHnl71CNHJz1yfNIjJ286nMy/rr09WeuRtbdHPhbnrsrXT7o0FidMM4qvw6h2oQ1O6yiUnCo6R9YLtzqVYQepBkxhDZp4IKhbWfCqfAqKBd1hWW8Ph/U2xbLoSHp9cuRd2IwUeIGFChR2BXBXQNdcQK4P6q01VZaQOdOaTlkSB5BwDaFCjnZOgBl/LYjDoGoMlIGIpnjMO2n0t3enb/+rRqMgEz+brqCcdojnBJojH1ULaqJ7lSciHIUN0OITLziLXalMn9IipOiDi8OqgnF92w3MbdnZhronFgIy3N7fjFNFpK69UQnxOLeUasJ0Sgu7p6hmZDjwOaGabLw/OTnZrBTwH2h6TXRO9cwZer+VEqrRhJHdUAm5pGPdIylVitMpc1aDKz+b86ha0oSxLB4Bqskql8f43vTIe4VvvRfAf8zdIz7sdA3r/Ifn7X3L1fuScvUCX3zmpD1ecyo4DO/LtGsJi68ot+z29rab6N8SyVAEfkske1giWcVAn8c8cFbS/ZrF0dFRvaSSN1WvPqXmwVHLQ5fn5OzcKnIMGv+OYs/GqOFi8D+OvKfP8Q6fTHha5uBAKjXrkTFLaamDV/qGKs7MwptGMafOqdHWJIyKeSfk9IOB4sEBvqgqpAfUzJhiWOBX6CQizqjSWaEMODfBmwXhbFDq18zYHKqZREOjXoAvwe+Mag5B9WHEG65LaAzl1BWr4U6k6jRzIqeJtXeqP4dNw8frwZ/DDPBzdVfBef0GAjdr0K1wU6zHuyJ49X2QVNZzFIZKfJbx6sfWQpYqKuIe3QpA8NiU3zBtH4rvE3rwRRxjhlXww7iZ0GGUCcLWvBhYFooKAO/ld3cANSAa80vhi6IWTDn8N2SBXtd8YYfQUoYTxdlquC02E3IkMkKdhyaM2arrazfV3bcT3o9vrTgnDFr8HRy+obdvWrv3OT3+2L3PK2ZoP3ZS+xZ1zgv96a2dOy/aowAexX4ruWLxMJ/EzKfHF+HWHQ62QHfsg2FkQkYs1Yl7aIR5nB6MSiqCqgSyqNQGuybDFXfuykjGDpmfZ0zgWsLCpkrqSIPzld37fec0dRcaFiAIA875dGbyRZWlUXl6Kmzg/Sg/KGcGW6VPlbvhptm/LKi+zko6Y3PaoD+pZW51sNQwGSSDmKPySY2jXr4gP4FT6iOM1ZmH9ZKL8gM5/cDSEk3fl1xcw4cXWGdp4/Tli03ooAhl8z+Z+T5D3NErms6g2HUce+SIbKnVHXd0sN9fPvRovDDsSqpsqULDj8Hhh4VhRLPfSmiBIid3A/6SG5MzcioyTpcPuC/KqxWeX8fn78LxdS/Vz4RhS0etwYnApbiKAtMfE7/utChobMlEpQSFEkkW1HVdMT05s+KCGpcAFjYuN3F7PuVDCjK42LCKm68uOKHX6Et1wSWIilR66YhL9gEiepbAepJTY1h1c1yv0ckxGh2HYxlhOZuHtEcMPV8UbHm40B2e0DFfcfzW3+thW5ajjqJsqx8w/PvMt1IjG0c/nG0+FI1VOlFRRtcvGJv7Ylk4V3i7Cp3W8CiIgHTzPhBMJoxaxPVin6xEmyNmNcGnUtQ1pVwtD6+vDT4MsSVRuNX0AFcH/9Ig6ys65isC9eN7y1McNYg3Fw+l+AqPH8cd951Ay0L52YXaA3eai/R8qnMBh3uCc8GFMS0DmGBRxtajQqd8zFRrrcNJbe3pT4mP0uW4j9psGBK8yIJRMyMjlk8Sj3Hy/Wj5rRxeSmd8mbSTDiFZ63dR18JmvK9/K10G4piOec7NAlLbFR+XMcn0A7uIBritBJbFMgH4DwL9YkaFkIK44UlK87R0EcZBTXs00KsMG7DMd+H4EXaVixR4KIwrvChtgRjXKl4eQl9v/EpOJsv1MXwSYHG2TwBX89+XoexDmoW0gAy12O1kD4d1hWdjC1Q71MMhvOHKlDS/Wr4X0oP0uxaUbr56RbbHAPz41X8EtA9c/ak9cj/XkQmT/dFHJmL8wCPTvfQAFeOxG8VRzRMrMNODYV3xhm7A+bAtDXWGrkJFpBWB6TVMV4WpKvQEaUYQKsV1hMzS8BuWT1aYWeWHJ3oxH0uXgGS30ZIWRXDgKOW6Cnq/bfhi6dpZVES5Fq7YCVxGLCBGLWzed9gNd47bHZ9zwfxFwaCXWs7IhBlsT+mvdaBAXko1urlUHIaLHntuNMsnUR1ggaM/QabFirpbAJExsK8RLI6A122pbAUQ3F3SsQMCF0z4ETC6K9514O1jE+v73dD0+gq6hC6xZW55nqU04PyZa/NdYvWKFJpr+pbUXCPpLLcWOaR6sA+mjuRnClgIy9iLg0uw1gf4+eIUNKz6HRkswQv+L3pDk5yKafK6zPNzCUHlp/7xWIjc+JsoL0TCF/cLEbeBay1IXSoVVMz4YO4ozFQ1yQd+MoqnNWFQdc23jxJoUOQ6U+pWI9FG61ToS1k1J0fhVEV8vJRBNMF9n288HioeUhMyHiBiRkyrMUjoVy4nERJuPD8U9WV+LJdBMURisYeq7L2otasLkMbAlNBOwY3p05gghiduGICt8sIgqRTCKYljZm4ZVJKL+pfSeqdTnIwLbrDXkV2qXGqL25FfiY+TG1rW+CEh/0mU2IQmJ3NGdanAz6NDZ+s2ZaPH4LrD0GsWeDgmc8weFY3nbC4hy5BpO4wfLqso7frK3vAgkQybQ1R2qVhCLhiuuWvZbk+6EaLNMYnL3Sp7LxAUfA0JWWELx4llDlIoSmSoady9ftL1ZtrO0H+6Ro84eogD8RHmruZnpLrHjcIwIzzOehPRW+TMWDYC1qgiDWZUeHqn1LCphPAOP35YdCtIRkCoPs2yUY+M3H7qw35i8JVVkvoYzZGN4r6QUYkjYYHL80VsQLhEdnREso5YolIz1S+o1paYfUw5rS/GlAlzxbOrFVe3m+IOspvL4+HCifBeUSpfrslrHyMALeFZFZSFIQRAmdAv2XWQxabXkarGoUW2v6S5qZecqjclwn49Elq8zawOknomqJdINlUzZddcOYQ1YDRbZcW5ugCKTXLoPj5jRJYmlf6ooyaAJO/q/+DqPAEZ1td1LBy5jmH17XPmly8vvJAKIzqAU6aiZtV23LOTkEg8ZVharRJo8LiVZFzrEjtkV3e69dXxnCo85V1kn6sV5StRNat72QWsjejTt6w+hPR1u6vBooehyBUGwUBDVBc9gj3Kw7BQZeGWWwO8akuGpRcaLeQr2x0qUNeitISM1goKeTJlGcORxV2HRyHKY0bknBvDGt2dO/rWH1YPjCq0+i5iMpA4YnwkEHRIidOpiBy7jLFab1jLJVFkSjXZnGsY6COTZZJpiJsNy9KYt6J1PP+982oupm5aVwNPyPb8sQS2y+uWIHa/jOwsV36Wq7uGrsECJhyytns+3uYV3YJ2h5vj7KQtW/16LWuF+1NiNScfFl50fD6RpYIorGOc03eLxnoJGKzKQ8BGLC4w/M8Fh7s1sAN54MmMM0VVOourTjWPwcoER1GzNuZTMi6h1dYaROpUI3Km6wHqkbTPDVNO4WxMcegO0RFZOH09BLgRKHDvAsbdY9W6pobfcLNwuWihoiyojXAmhcZlbka7KCNfeMWXtqRxa1Fdjj1YTQUjjO8DI928EI4O0sBCWDAVqPF7aPGvQ497HclJaixnwdKESL2Iku1gy9qR9hF/wtOd92fOlk+jtMFQlAKltD3fIGIVai9HlIua+/viB6VmQW/PmK6VFnUWvCaliDr994hiU6qyPF59UMDhaWJNydJ+kIpY9MAHDJGIqOvLG6ZA0YeaQP5I9sY117Wjy9U+QVOzU1bs7u8e1ImPyt5HZMFd4VnrbjfgIPVz3b6zVS87iqSzMm/CVVQUUjGKdZcFijmwxsYLjEsueMFyLtidPI31v1PXN+9/h7KpKDaoib+q2uk6WGv0A2hZCDm7owN6fCoLMrdWkeamxDDSnvO0m1tJwrRuo41ZR7Aqatn+zzROC6+VdvLXqmhgZSyH/HS0TeP4bZfx6+4SGopIzXKEZYFX8WyBNQnl+jPCjZMSDUjmUnAjq0oZ1RBWO5TVitk//U22keSasYKUBeqI8FK8uepUTal23oM6Ha3ijjsupXkvXtmG5tTOZtgeDPf7g73+9s7l4OBwsHe4s5sc7D37pZ7HYM/m1g3p01dMdNM0SjyIGkUwSwkSS7G2lrX0oGyDc2nlcmrJ7Y4bbO1J09o5k8tpz7ngcjnd7MWTxwWS0ZxcuOMFa0NUoi6ulG83RQw2LDrUFZuDzIa6+VZT8zHhMLw1MWtzg7ctlJuYy6zMK9bHHkfYqcFXZM+k6VV6bjxMx2FT0HTGkogWYXlLtUzz9I4rxcabXBSluQrREVRIV1LCu+BKEz9A9Sue57zzGcxVAx4ZdjLOiZu6Fn1OIKsuTFvnJJRTSHW75/FvJjLYQJjPZ6r8uVqFkC5Z5AUNzC4y742xa8pb3ZeYWKYIwl1HSgVq6zRpHiTIb/bg9N97tSoAbs8aSL+TY/DYZXXf8wovo36iekY2CqZmtNB282kD11FVhT4Iy1P01p1kBsKPKaZ4Re73uRTaKIs+eG0hZcFqjk2mH27v7O7tPzt4Puj6dPTD8UkN9VXeoJydWGy8Vyv2ezVgPqC7k73BIKtDJqasXRh8eZ3kMpwJ2ALES1WqFL9hwaJLmTCK5q4yi5GqpWGAbuE7f4AyMKoOnFgXb/ClVxfyRaiYmDhJWZ3EuZat0WvaVDzBnLmi8772Ntr69ry2AEXnuzvLNb3tdDeeCef3srsL/a7WDNO6nFuNQUhicQNrpxc0BXf2+mSvmZJC5nJa6/hjjxp57TNsuT6s0Yr8ryZy1Td+uUdLndl7yXAwXL7k/DVvCqMvzM719RAeZeiifx1z9OxAfT9K83oICr15tSH+OQaldiGhMZndvuyuUqLUNmwhANXbdb2ZVbcF7fxM3mpBeRe37aE5U8YrMrAXahcUDfeVczRN2o7PquEDpofNsNWtxsIwAEGt6GJ0wJEZFRkkhFzO2AKSzG6tqQxNf/w2VcziDPdF1ZeoZgBBlMwrrLmBUWCnz1heYEyNNpYZbmcM3H+hNFQq5+gDItRAQt20zKkKNasq01FZ5apD5bEUrLF+TadamSKLs0TV2qCKEODS1BRdnqkzH8BAQVlVFlgC17EVNFy2JjIMjRZFXk5BE2h7UqpEVwo7QXjtGfXhI1AF4fzd7Pl9gyOPGqUcaqZgdRsMNy72+bv0zBrVvex/EN3r5H1rZTf7YIKPwHKtMFyFTfbOcfmdykHMLiE+BAt+2uf8wBuunJkuco71RLmxFlrs1CmoMnrTcnK8Wbxy3yNA5YlURDFIS7/TTLc2ATzhWoxkMr2qHNBWHFjdJyRkYZE0gqV/WVZtK2tfuGR7AMQozm68tT66wtUfwb1MqRn0GMKek/KGKcUzx6w0Si72+fQe3B4pcmYtUM0YGb1AcQXJNouC6ZEX06NTq1ryFGEkb5lTmztOsgtWkOFzMjg43N4/HA7wLvX49MXh4P/6y3B79/++YGlpFw7/Ilj5eE4FnTKF3w0T9+hw4D5USq4VdboEMYTdzrWRRcEy/wL+r1bpX4eDxP7/Icm0+et2Mky2k21dmL8Ot3e2v4uI0Qj0CEvVdca6C6Uv+pi1huRjT1mH38hX+MiYkC6/MMhwPDsjdzP1CwKBBZX1THlu9bfgWiqY8gWcwkkqDHhM7JmN9ZHxhqelzL2WxhVBc73uXL1gqN1Nww2d18Oz2r5GuYk1IxsqgD21fAuW6JyrTvEGYXr2CHS+S9QOeOUdihCMQD+yh6II8HuVnGK9DTgOC1l6y5VsBNzcPQwWrkRNJQxaFf1B5dThCF6PqjFkFR0buswEPwRqFnb0SNjpUM0BjygrR2iexwu81LLexKnpbmHjchAvSgX8VJFFuCK87owDJyIU+bV6vtYydeEmuA53KF+mJoWrnhx28IoEk0bMkOUMPyvEAIdLiEOrW4168RFDxSIob3DicKhDGq6ao9u762p1NBO641B1ZK2JGFdQelUZ3OsXofZF1z5DdzrsKlRUfH2ei4V2Pri29/2lnEbe5jmqjTUVoyq44U3UkIzsjOY4JC10KLunrqPbLHAkXyz03OqpM2OKbBM86tjprBy7UAV/D93oRRpG3MB2Jb2qH0bfodj3x1X/qLRGpJhu3tW9pbaMilG9uozNtzA6uZ0t4tIVPsysLaTajueOYBw7GtDN6kE8BaXciVZLUcfgIcqnFq8Txv0ZVDAfRgBvj+oyxQ0Z5Ie7mnKvIN1GFWjV0T9bVL3ELPIh6KvRR53csjGBrpOuIpZowBMNaXdvxgR3x47V9awQDMZMOBsa4AUxWltnBBKZcjTOJQRjaG7YqINpLqGAl2tDR0oRLvnrav9H7X7F6i7MFTCbm4C8e/uS5Fxc+9Jg9/fP9HzZ5Do/CrYrhlA3nsahcyGeFgXFUWQx94LSUytBHzkJDsE8tAe1Yni6zqWA20w4csONKNCzvSq+SwcKiLhW3hbMsfWXwQB8jUsvD9fXVzrSEe/SGie5pJ1R02+5viYwAtiHikvFsTpXUxBqJ6uIljkkUuqofOc7zdztGaAG91furg91AbtzkztgvxJSLdMd+U4k1l+DL47/zjIY9iMI9TAOU6cUroADEgPLM8PBoMN/OafcNYx2jfIXsoR1r98ouRMBJQnUE9YRQLp+gWiHuHX+SGsgUedSBDSQaq6GD2hJ2OC6cUfgy6UsQb0HpXetX/g6LJiweteRDtHqjUehkhHC72/eMDuqFQfQg2tQel2vfs4+0NQQqDTjatg7nSgKCIjDATxs1R1muAlqUeuGRWb9A26t7qEUlODFAOMwQX3/1A7M+y5sfw5VzoOxEEaMq6FHtfbwKX+v5OMrYqPcSyeduEvGsvAHdxRqGlYCApbdrNz5FFIpNNcm1rsdZ8auRhMaf3e1JHA6XsBnzCyZoV/TKJfTRMPvif89SWXGRokXvv7r6niNvflVhhDmSLspWopK7VYYpdqEK3ZL88jdeHZysRmiUWtvBPXbsTXhRhN5K8KMWMzNnu9VlbYwbioLDPC9G90oTCkg3D5FntV52lC1TCLy/feEeAn50ZtCF+Ic3xVGHIF3hlVcyh2XhXaf/i7FCgsJ3m+k1lCyG6ISHHaFA0LoaHMJGA7mui6SK0Yzr5O5w9ozenXhEx2TuAE9c1TxrLFFn6aswGI0YVJfGxMq7FO7/aUA0+/sxE2+dloqWbCto7k2TGV0vhaV66bjsWI3aOP6xy8u1zbR5CQ//XQ4n1fChNPcP9Uf7B0OBmubDTHazjT6wrxUZsbVI2MeITyw7oBqhPKt6XLcx+DHNTjpe8hSGEgYnR2kUuRbAZVRTK7uESbseusoQtLJ1QwCDGTk+EKkoG5uoeySgtLpnDq+JGkzCv0zxi46vxIUTqlzTamW6T7yKMZpmg4CxobGaF4jkyDcuIDI9humDZ967OoeniWsCoEh525ovBfgop+xwsxao+OR5C79KmcP3meLOMHP1TsVYHiSIqcpu9M+ucMuqbb8J9kn80WHhQJTbO1tPxtmLBv3J3vjQX93e3jQP3g2GfR3abp78GxAdw4m7H7rxfPDhNJamdAXlH6sTqjVI0rNlE/qC5ER3Yl8k1KgNU+1yzSL0q3AXVrvRN/wOHxabm+eLXsy39Mu3HcL9ykZsPpw4wczuNgh8Kt4ZB9QXo+lZTuG60mTRsMcUXYKMr6pVic81AproZPn2R6lu326f7DX3033Jn26vT3u7+7uTg4G45003T5YFl2j+HS6lOfz7koTJ7WMuhqLueGXT+F3zzun0NVKG95UxHfTBl9Uz99h9rxpzEx6d0jUQ7FbYU7y2mWETmiv3Oap96KrT9F78T7IyveEfA+i772wn4pyrMsxfobwSFD+8W+rkSn8CGfAWpcEXVL8cRdU4MWf//uerOYjbJvdSIGFxjuteBTILtZkbM3CenC6y9K1v0Ksvs9LhZJ8KPf98fcC+oq7YifO6owuTEC/gStYf0D5xF//NxXZllQVsqQWZdtznWTC7dx4gVOe+Qt48qqKcvj1xdmrf/pOp7pK8XWCXW8m+LI7HNxdRyMNFpzE0CWAZUjNBj7hfKii0NyFzpOkymJM+CfYa+svqYtWc8FrOSZG+aE77zX9BVi1xBrDyKEFMBwgeAfXEYZKDZZOW1mZlKrrGK5HmC+2isKXrjwfaK03VC0szxQ5NZb3E/ITUxguD92N2IcZLTVcHuauFgvKgLoSa5Wl4CDncR6oq918w3pwkwq9AbIeybhiqZFqYVX3VC0KEwdWoOxhPTLjWcZED9Iy8F8p8kXPKY49cqu46bi4W/91zT+71iNr+LTvE7BMXprM2JXmU4HJ5Bmf2gOG5lalN7NlHK2P70qEnaNJmKwKjOdTNMTcBcTdDUjieLaAhfZX814Aul5twe4AczsM6RvHgjfKPqkg3MX1MKn8ZkibCtyOW9QZ3d7bfyTpMRXqI6byEupfFLDK4e7RzwDZq2iptg7tdSuJHss09hMX09WpJeuNpnnL8kmUaxEyxkCmR8Vb51SUE5qGegG0uvS9YSKTKql5JoNhHNsCR4Xlqu/fXEBniK7OMfPEzsmSD0WawIXgY0m92kT9+6/RaincBEHpJvmkxBY7uZxO7RYHsSenihYznvqKS8HhEY8Kmb6NYDqjSm38fOQlozeMlKJy0nHfLAZfrV7xRkQ1fuVtoZqUwqWpt1cMuplcvXt9+fbdxeXpydXbN28uH7tkJZZObhesfBJH2AUOXwtbgIxLFGVNxEJYATmWqpC19JqHYmYYna9409spnnLnw3hSua3tgjP8fnfaYlJt9DDoAzf86d9++scvB68Ojv7+WNJ6h/AnKH8ndj9B8mEtHzQwBx4KdiOEwBbMMYLTsn1EbA+2h/2B/e9yuH04HBzuDJbPCWjiZ/fnUqrtPSfe+oWRPpYjlhEd+x77OEdc8vd6TZC75IXr/+z7Ess5HhwQ2QJpnVEycO0WAVoE1a4SrJohZa6r0JEbli+wUgYqICjg2irep5zNIBQ/kczdmgVePU65gTqekY7hSyP44h+R/szIGGulu0SGaEE6xTqtrcVHZPYD6dSVg/0w4woMSN90A62hZe0pSH1CZqu9X7em0ijP6KnMv8picsYqVsbA6kDdBiH+Fnr2wzBuAdG0Kgu4/xvN7VQjd1XA7V5hmowAiyjUyWVlY8K9ZRNT6d/20R7RXKRhOH8L4eH2uxRqSzbyiOMaWU/e+AEGD77gejBhAKhlEmS0DqK3BlcFpR8/TkFwZlAuQXTFbeXjmnGZ4jdR8Da09HbXVdEVUgvDrZmcsy2ae8oHTO1wVzjMpyLbydwnCmx1bD1+D7b1Cy0QzP4sr7RM4SNJO9Oeojz3omAqpZrhAVC79oXDNQ+BJHGD9mWlEssnyZ+jA5TF5GvvAmVx+Co7QQHg/87doPJJ8qV2hLKw/Um6QkWofPGdoSJYv/TuUBGoX0OHqAjcr6lLVAz2V9opKkLhC+8WFUH6pXeMsqB+qV2j4j5KSwD379w5qvbiV9Y9qgb719RBqgb4F9xFqgbnF9tJqgbl19FNqhvkL7ejVA3eL7arVA3Kr6WzVCfQX253qbjf0mc6Wr/WDlO1F7+CLlM1eL/gTlMA51febcri8IV3nIqjmg0Tq7RU4YYozNIj7EOal5m/dMwZhc+ZvKfASHBpwwX/jOoofcIPrMmGD743VCXT3zd74OcOY8JsUJFRxM7skEG/sTb9fa0H3uw1HGGtI0+8cPI3RKVKdd0R1vCE8SgwhSv07yNT4LqqGVcaB6QGlg3ovxFoW/egyJe7tfFDh5ACuJJrTtQaPQzqZiEuzpbmt3ShYYGosUvrqA3T+JBjGNLagsAN0NSm2YgFTrxrDVfOEBJWx+P15YuLnq9DTaiguZzK0qWakKMcMlkMQ0fUhVGMzsnG0cnFZi/UIXbbIozqajHCo9AbJlyh/KuEMix5zjLyf54cXR4l5BcpWHJWBWRg5bG5dAnPtVx4X5vDSBc6GsrXZfJW5JJmcb1ncIoIZqDm9tHJBVyy+VoeFdXdXZtU80MyOj58X1Aze2/kewszaNdhVxxqOWdXgUlHSIFR49swsrvTq6rR+I1SVV6o3kqwbUt9wlGzwF30phVLMRStl5oPVw9APErFHWWeE4u06xyT2M+jHl6rxldRwHjdpXrjRYysw49Iy+nKQn3OFZ9TtcA4achT/PHsZPPee9X14WAwrN/+VlHWq4YwjrXqhK59G2oPqWSe7a0IvlcnezhFe1I9o8MVzXrx09HwnmmrWNgVTLy9t3/P1HvDZfw9j5x6b7h959Q6Y2xVTHhxcXJ6eh5NvcSm5WJ1jR7O7NhV+qtXa/D0qDQXnybS3MHbe/s7Bzv1PTznc7bK69ZXZ69O0ZPtAyDi6EC0NeOdTaTyR6Oc1LwRhJTQQManQd7e3iacCppINd3Cch5gcGzNWcZpH/y88efkw8zM81/Pjl4fRYfbhKec5ugV/mfPRTX4K9eE/Gw1wo669FYVwGuGcc56tfRmbJUQ6shGqId+R0uy0nx1nPTKMlJMdi6ITA3NK+6inUl/64P93UGDhT4xaKojZioEO1EoSwrRbfXNv0It+HXjsHGHfOjTWlkXvnYwRua5OKAWybyl0NTm5a1YWZwGpobZCdZB4VaxH/SeU9PqNk8H0mduzvrCa2px4FyvsXzBtOuIyqqZb1kU7fSwqKytu1a8YJ8j1uj4/F09zshQNWWmSsPsjDVaPtCogIzzgopVhdShYQLV22GalvrX8+mDEMvowlr6GA/awOuTwu8LlkSArRrb6NtHIntOq7iFZZCzw684diBgd1O/J34gZvvJTvJ8fzBIhs92h3sPQJHPixV6xtaP0BnmkHK32FDfnJyf4k6z1rWDgvT70BEPHovbchD7S6O4e9RDA4O4OcMyFIRODCSJI8VcKQvlWi2mMmNYIb+SZooKHbKLNBZX9T0bfP+FW9f2gIqpr5umaHDNAPSYnVkPIVdOPaKmpphNuGJsgaUpxrmcbmGt575VLaxs2toeDHe3BsMt8FNwMe270LM+EqfvchUTq7O17elBun8w2El32fPt7aH9kKV07/n+DqXZzn6WTR7AID6i5Qo2wwrVirATPkWaXZwfnb2+TE7/cfoAFF2azarxctN8Cn5rQVy//3B06v1Z8PlNKOB6gSm3yxLg4TdgHS5lO4jd1mCQ1ByEUXAzKgnoJMJKRVyTNfvnWpuFh/s7B7s1QPGYvvqqVbBLVDVACYPSR4s5VOb5bM3wYbXA6NpA3su4goIKDpLNFs+F6gehFNJKq31AhZyzE7LxDjxuqqrcGWXdbVw03HGoyy/jlPuwN3ieUOeW5jco0lZ+q+VyIqN5XcjVxsXR680EbSowskNZgK4kUVqaGVYEpSKrpSLBko5LUzm/3WUvOTv3N+VM98jJ6wsSY0zIBnQi4XmWUpVp55Znc8rz6r02Yb9PGLY9SFK59D0t0B56OKsE4VzlgeKJ7+pIgdjdOH4NfGOBgDzgiISBuC1sXft08PKRn/h0Ro60LhUVKSMXTN0wRY6PHkeEUpiVpd5UBIBZyMbxJnYsbeL37uIxwEelDli2yoU8iSdy63jymHU8/uu7ix5581e/nmci7ZE37/5qNbKoWFiPHL/+6z1rHrbOJ619LlOat8q5Pvni+2m8vHm52VKaLHtYSfF3zm4fg4lUUypcvb0VYxNPpcnGm0/YzGci/VRkaX5VCr4qxbELZ5oTO6NF/d0jcG8w+mPw14ZCDtUVKK2rq60ejk47HxbDxvnCwXnZIxegupy3WPqY5nwileD0QSgKaa7AeFwCp7u8tZd8DtYeWo3N7G3ogAS6NJiiQvOMKSzuxdsZ7tuD7UF/8Kw/3CeDncPh3uHO8/8YDA4HgwdjhS2eVokW1sxdAqXh8/7gAFAaHu4ODrf3HoESlDBOr67ZYuWVgY5axYB8cQIs9wCQ2JFbqL69eNi5ECGVlupmVRvrEqsY3rAotIoRluf2gdT9VKEVlReCxNVw+HEdFUry9zktIgiuTbG3PXwsJdiHQgr20GyjRr4gDhEWMGPgum4sX6jTsQRW+3t7O8881ZftlPUI7D/RNof69tYyd5ZStKq6oCla7Ny01fvtwe7SpSkBZs0Up/lVLbr/qRnXtZXFqapy/bqsuLj7FIQmKKEKfLqImjNO4gbIsPbFjLp6+D3C4yBXdBD6AC8JplZutRBrL4Us7DB0OqOQpara1N3be/HDD8+Pn52c/vBi8Pxg8PxkuH18fPQwaREqXKxcAkbBVRNLyLjkUiizEUmJn1nVCRzvpANR8OieQE8vLsiPkrykYkqOoRqTC/pcJOSCseAtnXIzK8fgKJ3KnIrp1lRujXM53prKYTLc3dIq3cJyTluWMPBPMpV/ebmz86z/cmdvp0V/DNboP1Q+OyP+j7FcdTBdPRhNrDByNpnmckzzoOUJtvSFRwPJP8Iy/UTD1AP/JVimrepkzgWEff3uME0vLv9aqa498vKvF1SQF9bo5DqVkenas+ZLAobq0677F2OV1jB/FCp/tFl610atLeEnY/YF2KANRB+Gy5/ZnnR3uqtVi6IEYzup01NaXLdzP+QhZpXhZnN1nX90f95T1vlHJn3R4hS6+yi1cDHxUKaRVsFeUAHHwqoYVtSCIHEPaa11ASjjUybDK3H9R99BiGErf4zYZukMFMSqMaOF7Ozca3tSudtj1ddlUeQ8lOz6pFL53CxWVUnx2AvI9j2nFEYxWu+riC0imDBXaSsw7kngubyVfVfdKG0FWobZ13U3zK+X1rYqRFZE2Ne10pRusjbAUpkZOQJbgDYABLXlimu5KlofO83o7OINELutMBx1grQqVnTgdK7sMRW0UVXMb9uPgDJl8iouJlKX2FJMuSkzrBmZUwN/tK+i/pus5VKsHZL+s51kf7h7sDPokbWcmrVDsruX7A32ng8PyP/UrwFXmSX0zsoYn/bYiFqigTQ9X2cOm+LICZkqKsqc1lq3mxlbWJnKUJpGV+vH3jBt9IjlCqVvCp3RdA/vSHMplbOZe8HsbXcSRfDyKnkZ1dUeyDk8KeuZYVVGDLpXuLCGt5yDeI/kd/uCfyy1kaKfpbV1KaQ2NF/Vrlo/h+FRfDVTtmAtPLi1wpzQd6HRtChqqBxaoo4ZuRby1rVssajARFKRX87OYwMHWyhWVeBvecbyBR5k3iaCpj/wsU2757uD3aU9popNrRKyQmH1Fma4T1b1/3bcBdOKpJWDp1NY/a1kY1bnue6Wbk9zZLrOjuR31xYsZrJe0FTOjl4fRc91Au4Ooq0jNYUjl279UDIh9dURV+wjLXHbGUlevwtf3N+3CNOMnJpnpVFH90J4RldNCRo1DZ+2RVEm55SvLE02VhBC4Dr8hYSAJqFz5nqLxt3ba+2WBXl5cnRu9/8RNoGvimEi/HE6XEiQWVV0jfOf8ro7r0JKYoYMZsdsha4Un+vYjGkOACXf1XOZYr79yf99j2HiWzp4tq04NWo9ys0t1+654MOMW5DiidoI7YQmfsGbqbyjzo7CXHcY8upkrwcJaZsES/IwpxIk5CjLPFCT0AgGw1PdEOMFyeUtuJR9YH4dRDzxqfewYh0FbBysWUEVlCd0I9P66bWhBb3Gnmo9gs2RZ3Tnam+4vRkQrHK+q3NOMxPSk9tIw8NRWeoSOvPcBLOXEgWhs1bPYQL6zWKwIDkFFaMfrEQ3oJeN/6I7LigYKRCkMvSYy6rELgQRsnvDLeXCmZpkw+ToqS9YjyhmJ8N615tPYAR+7jTKz59B+cckT/4xeZNfSMpkEH3SVSz3os//fW+rLehr1Wy1hTfXudufVmxwoQ0VUbvj0+MLeDf53kuozi60Vl9ut6aCSaWotp/XYaAV1YwWBRMsAx8bqLpVMMGcUV0qrEV3SzU0kRQJ4OrCIuspSDOqsluqWC/U1pljBWHdIycyvcboCkO5ABPIbvz/LMeQzg9dkLNQmPFT9v3dyUpPojxWId2ujkQ8X1c15Kv9esR0WpRJqel0mSMb+slnV3d3qT9nypqUkD4FZwCuHkS0hMbv7h62artun4bu8TXLhxs8DVzvbWxdH6lRFynNLd4TarUlS6FaX/tIyzqEPygxtxLmAR7sxbe6Ff9Cp50bpujUKxqVme1e173QjXwAkA6D8aURpqsYpmVNsIzr60QxmiVxxu5jr/SNNNUFuM8CJhtTWk7ZJnTqsodnyrSelNYw36DTqWLTqLsAQbrTPAfQ9KarcB/KsmDPOJLKPH9gxT1AFXuDrR5XO49h4o9E9/PZIWgxyEkkNr2U98bIXZZIVU0ed0Yabwk7yPq6vstGCSNKRV4z88PZm4ua9QIzYaXY9tgV0NFMYUSwjlzyi+ooUv/m9eWbizfLLsWUyeQLcscDOH8Wl3wdmS/ULY9AfnGu+RisL8Q9b0H64l30Fshvbvov001v1+abq/7JXfWWrF+iuz6C68tw2VuA/vxu+7oTYEWUX//JjR1radGmOjPOwKtyCjW5nTmpOPKQjcAfaPeKYqZUQnt/Muiozjr/iKv7afBxfm7UjeMGYkc60BHNVuOLJJbwSs/KRt9nPVxjzBkVXEwnZW6l5kKWijBxw5WEckrR8Kd+yV2EvcKYc2dtjsaMGqy416RC8REq8KILT/CN8KKZpBl8kjRdFbOQV0fH8bSBAhZxIY2r2Y61q0BQvn1xTJ4Ndreh93E5nUKt4kNyStMZkalhhmy4NmY9ctAf8yqx2tp7m9jt0mm2zstwK8mvIer6n2TGPtCMpXxOc2wCqMmU33jfOaxpZcggn+PEFJq5lcK1ZObCsClTCblAk5LfuAfx2sv51l1n3jDibFHMWMfhuf7r2mDQHwz6e6fw705/e2etR1pf7voG2XffszzN8r2+d59D/JZLG4YdHu3uaFe/E/yDc0l5vQUM799KmkMpqjBmZCeC14+iBuRc/ZW/qNSW5JCuYJU7RexSZtCvyZq69eUz0j7f2ESudX/CplAT/ClcD3c5HeAKSZbg6aR57qcG1oEmKq1O3iCKnszl0EC1oOk1W6pE+HLIuvG+OHS5WN3SKpYyCCX0SH8huK56bQPefxC+UicTOuf5qsLN31wQHJ9seJ1NsWxGTY9kbMyp6JGJYmyssx65RQdZuwAGPtmCu8zzp4P6M5chad0soISuV4ILFamcb6nb9UVTS+VX8l/0prW210wJ9oRUuh8HnC2ADYadoreuUUML8t1kNxn0h8PtvruPbkL/tL6HL2OF44qMjlB3Lek/mvTwESGfaz39fG7vpkwYqXukHJfClPftV6pueWu/rrCmzvo7jdJw5OYZOW8D9Kc2bCoV/x2fkE0kuTCyUkwrY3OsJM3ApGIKKrCCHOON4kr+cc3IROa5vLUjOwOmXlSVbPh4ErZ5SHIsPj+nKVBU8A9VTuRtq+3sGYL05sJaP+vr0NMD7+fAGeNMKReHkXO8f2P19uP2iXGlw4Wr5ISc54xqKCRJSg1OGXvWyIL5PiWQ4olTnR5f9CxVCyULqRnhJvKJucL1bS0c0HzAkbTain8tPl9WYA0HyXA3GdagbXP109gJl663XsNGeCEVOc5lmYVbG3+hhBkZcJXvWvlCRaKcXzMyMtvJnGW8nI8Sy0w384rb2ldG4d6+h61pwh2Wr+AXZ4JUxnkYsctIr9sKZbFkRd67lKoLlkqR6UohmlFNxowJglFr9WXb2d6LwzmMqUVg/nR5eQ5/3x3O8cLHr4WkGfsSduyH/OYgf0qVe9mjmQlNJDxS1tJSuRcxiv1WMv0EsZh+oLHMFo9Rzz/aW+siri7XAJ/ArE2iHxw8uxtEVz15CSB9Waw/5gy/dJY1Lve9+P7E8lySW6lcs4cW3itYlUu4mtf3rc2GBRYc6NjzsuO0Hu7udC/VyuJg14+cv68ZCgtdsGq0Bse+ciGEuZxqHx0S1jLNOTQQsThqKAcF5U2hpCj1baHC03ZFeVaFSaKkw+sYIqToa0NFRlWGYCDRKn/z6B/9twhZ/+ykahQilf3l2AHKpbC/dlRU3N5hu3v7z/rs4Pm4P9zOdvp0d2+/v7u9vz/cHT7bfUBAi1+kOTMzubKFqq0FTnVfN3zFwHPFjT2PICo29HIJfXkx/LweHTH68fRyVB1JoykzvivKj+xyBI4/ax03i9t4Tat+x9Qm/Pmbi8tu6q24ucD6K+7KCga10u7HpvyPKBqipuYlhPLli3rg35hq9Bb4kzpqGBcLqIqaVvFzz4+O8YX+JejIrg0uOZbzgipvdc5jkGkY1Kp/kdIQZltf1yQe1o3qFZIZywvnuc+YYanrCaEYNZqE0GtC5lynUkz4FLpPuU3dXkk+p1O2NeVLF9D1NFZswpRaWQ7wWzd8xYrx1mnJXF9bY5zLaVwPbKsBuy6k0Oyzn+s47bIHewzk13qy34fx3Ue7x/xzn+0O2scd7g7oP1r0OTCeTvZFS/iEws+N2iH98JfHiL+arAujOuXlSWSeI6421JS6I4rh01us1vcNTtQdzLA7qMdEr9a4B7jucqwNwXivGiE5H3tsDZ7Vvrw/Jy8MEOfl+RpniqVSWcUSLhKwpi9+rM9LauY0FOhWzDWHHy+wTSyyhktrmnDFbmme94iSJbT+yCW1myOnImVqM4xabZMPYZuEsWZUZOBBouHOIZVCuOsDQs7c61TbreDGpMQqdXk0TEUCBM6PpZnQUsGtBtEFFdDicBP3dAyHv2jpIEVH2sOnW8o053RVtaYD6+AseNdRrWSV2tfrCAbzq1p5USzLzn2bI9RxgcQcdOAekaVxHxTJ5r9b6wgi0aolEXTe5cZyLy4rTVZmBlb0OjtpEqvG9hW1Ll6/Om/tH0LOTjpOvqVNqRWGOJ7Fa8Hu5oh2SyYz+wj8VaGHaSy/Xro/78lNOmmlDYFNZk+yXE6ncEKxdEYF13PLXP5LMKkt9FGNGDDKq1QlKwCr1fpoulJrOjeul6GpNRMgtHXLqtV+/iiNuW5H6oXO5TRMNGbRkQb5mWRkwcXHku9HNUT8W1VnNOn8mJA85XrE1jG06oVFgmXx+N8HW3ZcGqKoc5qSEcL8/QjSKYXzpp4eXzjyPUFCVOj/uSqtrtXCyhIcGgCA1YO0Si2zW9O/caMZNux9Pa6W6m1Vbf1JxQ3klmqxvm4wAwczTgJ8PZJJWK/QVfU+j8HWDVVbuZxuTUoBnUB04jfaEhIl7m7zpLcCb7wXxWIV4qH9MtQLOAXaOM6VMaXc7YF2BHJDKTC1oFE+u2EKAppNo+QsnN7C5SZPJSQGItvDIHjBAPvGzZtJhquCG2th364U9IUswRtXlCbebWGvW6nkgSHQ+xAVjQvc6v6nzTh3Tc6ZX0kUSaNbqsSoR0ZMKfs/HP6pdA2ad3jrmFLOPxGJ2mnTg/Bk0a5xAChO5E56exa6Vo6om/kyuaUuQQjFGyseJc2p9gFcXHDDXYpgNQPoDs5SoSQttZHz7igDqaa+3wT2R0rGUhptFC2SH/ynGrHQ4QcdvJKcN4OEHxxCY4eI4mhqjRgpF95+czwH4RKIuXM8xrlojf3SQHV3+048VpkM0eSBp8IufN9VUcBfHYdiIq7/e02yY1wguOFTg+9Vk3W/YscFmVD1o25vsMA3yb/oDe0keinSFRaPbJHcTWd3BTq7W1T+CO9wXwgypLKDmFoCfuwdfxeUTtrNmaGQsxLLcpemEp2BKD3n3MRsccOpGybc+GvGyNsXx5rs7W7vWqR3hvu7SQf8yYSmPOdmkazClbAeYegqPxM/Yet4A2zpDeU5HeexInCUWnsbdoqMsLJ2t0XrjoxkKnzAcZV2HIa0727vtBl3e+deGq1QSkSUsid1Hz1iSxOrgQekMD3rwqVQXKrlitA+bKkby+znaTP0I5eYVUNyTQ7I9xVx/iMoC0kYEY7SUMjcvq+gTwNhHwqWurt+H5BNHfc08tOfDztu+nb2usgaAHj4NvrojglK0tI7pqY6u6MFCtRDY8NIYMTaYlW5pzlxJWmASk1n1dnJxWYvVgytZtcC3u3MqbSEd/aS/3GU3Au61TPhMPN6pgVWGy5SE6mzVt+0Go8sUPHLK7hTWaBN3tAtO0FpLXmnTAgLvmrN4Y9mhjBhPVNgKSYA/+QdHBDZFX/g4kdQtNb91JkJjQjy2CfzOvrqI+WyQvx3rXAMOnLn81I4IwAtcHnDlNNQaFWlBsIR/Dhx4Rddc3f4SPfHlJnxo/sAKDdsM0mUCqcmPUGhl8oAWtU2gk76Ua3kaErsgqhueAqabYhacU6GeMmRl7wjPdBuA/l0K2PakLNz3QOHuO7FFeo1mGO3XPlWF5uNKD1U2Z2+jVwRAWm3UgXneig5EMaoucraMRkVWrq2yBE2Y+ZjOiodqSLYLRtXVLKkHME196hjpJ6LS5zQlI2lvB7FoQAjc2tVVzVqhJog+tEN4ZjFlW+MDBXbMOv4t5KpBRfT9p6lfF7jro4L3JZd/5DL23W8vcVbW2xuzJRCR/9Y2i0FJT4asUlnEzJCNsEb5RFGwFiWscaHtf3998olT/fIyO9j9xNqMbyipi7nHYfV/kGNAE64mMXVKoO+fCdq70oVkPXvkbPbAgvE4c6gmtyyPHfyL+BTKGlkKvMqjb4uGqM2QsRImffpVEht7KHoQ7uM9Lxeyf9JXg+57u4cHfVCsQyS8+nMbAXi9XkGRfQ69MHD2Zv/0K93f/qPVz/uvfqvrYPZmfrH+W/p7i9/+33w19pSBNZYgZ9p7cQP7hUDvzWNopMJT5P34q3vHMNCeBVV7PC9IO8Dcd6T7/3F5ntByPfuZhM/czGWpcjwD1ma6C/uOjG7lz74v+KRyfekFMDc78V7AUJ5TovCCh4QU9o7du2B5wyguRTcSOVLrrAPphcP2eHxrQLToCSOJlBhw1LlhrPbnqvpGDJXNXm/5hFei4eWirxfc9ivJffC60ktFSmY4nNmmGrBH4/tUbkf/hrgzWUNE9Xo0YkcLtNaj7xfC4sGf4VFW3PY+mWLCJG8F5V7qfaKczClSmqYNUBEYApoGo+hflyjGyqGFHqFYe2NhgLkjTBzK2EJNagc7tI7TJKg14vmWtaGRTArTMLktRndpuiYy+emx4P60fzFSATEZRVjH0XUu8yQSZnDt2cX5/YAj4f8+/nrcKKGeP9kre11AlrWxMhEqluqMpZdfUp2e9W6GO9gIidk9JO7FSiU/NCOnho+306GyTCpe1U5FXS1XTmgNMS5Pyxeo42/4QX57e1tYmFIpJpuUa35FPIU9JY/XvoIXPuL5MPMzPPNyhy5cMcKKCG5a3Li39Ju8WnOp8IdaKAbv2bmRS5vMWwZPrnsgjAuRDujdl+69IIunNqt8eqEFmIpEt/tf3wdUmIFU/FFL80ydwK7xB/L+V4ducmpcA/HzuJqb0H8jGBqbvns7y+PXiOH/dbnov8bfmEoXg9zTVzpgYQc5VbJi+rKITz+7tBOm/AMyAqf3SUjwB7B1LjHtbpEGBLg0Exk7tIbZAAsGgQp2p17MNhOhr8RJlJa6DJ3IRpGRmIeI2AalvAvjF33yM9cMT2j6jrZDAT/WBCGRSBx2K1oxwDN26EYtXCd1u5eOsoiwmCFzpA3zrJHZO4KurgTnQeGxqwQEagTMeU3TLhkPCwoDRlFznSo6lj5TddE50eI3P6ZT3gN7M6k9vsMni7jxmeyP8a8ce92GDjVLx0mjv8xDOmNnW4jZ7sed+hF8gr06nUXLffm4v9n7+2b28iRPOH/71MgtBcnux+yROrNliIm7mhJbitGlmVR7u7t0QYFVoEkRkWADaAksTf2uz+BxEuhWCWZIllu2c25vRlZIoHMBJDITGT+8hR95AlJjaV2H1bVdYJwwhmeEuEJiqo9dPCebxroJmHyBkIDN1KO6nOKfV2cT7t2b/B1SKxrj6YHXMgNggakzVAmFcFJYKz+08wTnjoPJZPnBqUg21dZMmkgFU8aiE7u9ps0Hk8aiKg4el2X/FQ8I76aKkPn2Gv2yjb7LNIS2DVyCBqvTiSJG2hCxyCWuoSipy5I5Xu+wn6Ey8u/sNtR4NM2Tv0p/N1T4OZBcuYswjlEA7EHMmno2yoz0XcuKsK4CQHvJu8MrUisGm58k6BisgC/OmKzaEFb71tfMQYfRRZ72/maZ5/54jDNzaCYxcRAJllWwenzhcalDH7FkcjY/AJAkg+Uni5ywGWzGOvu3UQ2ILaq/SvwlilTIpM2vGwu2q2JAH5hXAcM5UzRPLxgBza2qR02JCmYEfIMUi7B9i4NraXaufjoixb+V648/P4MXhZwmj7xsGB1uEuOpgOEma/hAKkbPqXfF9LlhJq9IXO7+wl5Axd2VJPhIWgcoY9EAkTcHxnJzMDo5OoMIPqha7n0kcaJ4IBIlod2/DC+04cgJt6RVyo6eUCi3MlRdwWvISTMmV/Mq3Nn3YJYoRE3blSefw8R+iCZ3HjQWjyAZOIvDK0VzYYADMZwCMVNEhodTF3xgws0ItQ1pQRYjAsRMD+uq7mddalmigrcuxWUFmhHeba0AAX4HiEYiCVkXuVvwb68QKJ1KcGz/aWSDH/42oISx99nsUGJoe/ZjAtZ+M6tuRJTZTje1UUkrBZ2iLzulcCHyJ7g7jEdDGUX+QsgFgRyG4t3he2RdWofFRroxEba8zvo+OPvDfThsoHOyFB/Qjt6swK9yPopjXtmmPmbs6+bGqybGqybGqybGqybGqybGqybGqybGqybGsyHwzDT06Bo5+aPgiuMZDh/v/ZQhg8sfK+xDIduvQ5mLIOLUBLiDx/NKLP8vYczHEffczyjwMMPE9BwXH3DiAZlMR+HST+LRTRypAhsRp25Lay2KkUzIIrhB/1KNOP44+9zS3KxBMA8wS+HHqu+xWvqdFNoclOmwEtq3fRmZm+ssOnN6vzioxxd4Mm1dLn78EFYHgtQYJKhFA9vPJdaWwRbC3Jsc7NhkGfv+VdO//Ko5xpDMoWH8NK+LENcDDGjf866hKcDxHgImAB5zoQkJAmh1y1dKRkoRMYTVeHItXuQNtv9ubAQ67Yc9g8vo2nDui3Hui3Hui3Hui3Hui3H99KWYyJ4ksXz4BAvGsizMzxi0MyQKLctsrvHByCC4rTeChgXGLOT2bBX0XSvrX3JqIj9m7tNI2JeKCADb+zqiYvmvLDtQdFEEPeU4ipr8pGmEyKjKrQvV/skQkx5Z/QB9Fci4X8m8D9ggMEPPE0JAISZ6Jz+KU9yq6j9LwSncnxblvA6UMJ+gYHn23Dd6RgzNRPerjy/KyHNb7Xg7syxnOIRkQrqF+C7Ltt09vdf7b9iUwGDCiJBjLPtCqV865rCrE7HjTGDXrAC4VihbOLu+OWACWivXr3YuTj1qtAU4Ht4TCzEFDmzBYdVw34j3LX7ROH2vFo+TjOpiKgzjFR4j7fTPZe8TNRlPX+5PHPEacE7UdutswzN9e6Sq9AxWUy48MA7yaPFdSw8jI+gu60+r/m+hVoefAslwimOyw7VbdYnTWMZzG2yBM57XXdsMAXCg4EBjbKxQgOr8WrAhfFymoowzFRZIyLIyVbZpMJqt6iL8/LsNOK3OsFuPquaMPCfq9awPoZI1ZzwpBkn8f3cZqfnp0Y/xfVam58XW5Q9LxM10h7eou7EG8vLVJzqYyMYAXQZxsc4gbBFyrNkwDOWiGl5x+VfeZq/R4+Zv+Bnfv8V7KNwHFc6QJjQegIsRuNUBW+yOSBRzMcTzFy0jAubuVKwNmeyPUIwJOkR/EcknQBMFBYCM2MsDGiqhQrjQDc3FxykLCEP4JQx+KALMHoycn5Wge1c2/PUl8pmXGpmSaLSZbE6cr51ECjcaS58lzu6hU3svdJufvc83Rbik8Pz9siB1Zt2NuaxvDH6XcaM1wHjrwSMv+No8fetJVYcKv6O48TrIPE6SDxXhfRLjxCHEBh4SMKb/iL41ZMXfG4tPn6/g3UoFU5TkvhCXzero+9UuREkAu0JWWqlodzX8gxRo4iCa0XSP8NRIRfZD20JMWPamtt8LEg0hS4vcWDmLRUSE/GIKhKrTNSlNOxaFaYqrfrD2/3efhF9oJ/RNKk5XrfZsWepcjVBPWkqZqM1frvkx9ztFv+bAB/EY0JpLUcV6n7omAoDZgrhCQDLuSEqACAHu4M35O1Bkuy3+62Dt2/77W1CWq1W/+Dtwf7+2/03b9qtOJn34McjEt/KrK677cgOXxKW4xA8ljsiDJRq1ZW8/7a/s32Q4IO3BztkZ7d1cBC/Sd7iZC/uH8QHu8XnmWDymjg6LlaGAH5aUTt4yj9NCPOQzIIPBR7Du0mK2TCDqCS3W0pCcuyWICnF/ZRskcGAxjSvekc55kDRszTi7MmY13bPn7IEloYN0YjfhwxDywK/orbaL5NENKEcpYGGKe/jtCQX8+sqRsg8nnKCVaXZd6UVImCAVdJXlFxKY8JkbbbRmRneNpfKY6YhZe6wB3pCm1RYGw9C2bsCZGosDDNi6OwLPkbdi+PfkJvujEqlRSBCm0NK2k9JDqEnJ8kDwOfZIeXW67Ke6UxwPCJ+4O2oVaN/UHlFBFPkO4cXDfP6+mVdYDUykiysGy1tqLD3VCbFFmz9rSOSplhsDflWO2pvRwez/YEBfb22gP0HPtYkmyiYnyx8IvGWDdivVOamiu9Wip5oQOFhdbnWZXozzXvfaINnDq6f1ZzC7ZhC093yPbK9vdP+Zs6RC02XbQFIfLT+gbNDwy1merJNJ6ThOtCpES5+xDxq5U8QEJfwYDSHSEzGDZRMbocN1BfkvoGY/sWQjBuIZfDrf2NRPvNiMvcLTb2WmFvQ4ixhN9jt6CB0Cor+wAn6AL18F/EIfjV+ILrgQumtj04eSJyZH19dnLz2rXy+C3P76OJLYRqksBgS5cPE0OWpZH7v785tPRbC97UUkjAo+oRpChkUpjWgBddNEFbwKZoS6PpXDuzQWHCt9dARFxMuilBWX2GzfqvSs5qUzctncnqBw+rsr3Cmx67ZrfKszfhNz2RrP9qJDvZbraj9Zre9Ny9/dDwZYVlbU80cGh+cmzEg4Bts+4sT24OtwxwVqNmEBqLwMRTQhfRfbM65S1wYUDYkYiIoU6hPGeBtw8M0wgNFBLSp1uLyfS5MU9KYJ6QZtrFEFujTubMSjTAUKcSZENpqN8apgSGMR/B2Buj5SmDvDgP1JsL2Vaj9+/v7aEAFIVMCePv9lA+31EgQrJqCmCaEW9ut9u5Wq72lBI5vKRs2xzjV9kjTCKepJ6RsGI3UOC1fVK14/21rJ94lB9vbbf1DEuO9g/0djJOd/SSZu9+666PRg2NQd0mcFuQyGqx70Tk9v4pOfjuZl796kyk9U1UZlc9kbsPr5+uHzom7heHn2Ye8jae5D3iPXYWyMwyCXz39pD1XpNBNUf0grY+zf5SGHozQCcCizhV7x0PPHTccoslWsBWDbrhjA3gXmcqpGzf9hCY3iA8UYUgqPJUuJm2mQlRJkg4QZn51NVcTatSM/qDxx11/AnjsMuTmceXl7JxhXRXKmx0h8NTitoPwsBhmAAjf0MIQysfrIWOpL3maKeL6IOcqckQQ8YZeoOI+4qlWyiaTwEhsIri2pqAQnCp6Vyg3r6zpAr+wT9mWlKONBtpopvq/M0mE/t92K9L/r70/W9Sl5dYDIInnOUwzkQjChspfUW7P6LEhVWI665kUCqCCLgcOKta2wdAc63/1s/iWKIQZTqeSSsQZGvF7P+RYm21+TdC99qe9UlDcrFFwlNBHuE38F8ZG/pj5EakNRxlDQmZyQmPKM+l7WpWX4BnmbEJ6kg4Zhrh0QodEqh5Oh1xQNaorRgo5NPbCQ34ybwhoegprN7NgBu1XL5hpnDbMqBwhz4VtAIF9e1dbueiL6qBJth/SVWhrVQ6fFADqbFVU3jfOyCYntyx1OcLbe/sLip48UPlVoPM+5ynBrEqm78yfwja3dIBwLpawN0HpyGp1trkg5fonyoY19mPS2yWIAs67T6j0H3VNlGY7kenjmg0wuIqmZDUPFJns+LADJ8lbEQuSkjvbhaUz0bvqp09dQMMo74uYjyM9J4keJnEEOfyLilphldV3tXztNSjoAIcMKdUidxo05aYrRiymE8WHAk9GNDbdymV+R4Wj3uGUJiGulHbbRSaVm0+b4HcEZSwH6LU9hd1X86+45OJ8fD/sPZYoY/AURCp66p9cXn667H05v7r80r06Oe5dfvp0teiSZQAHUxdsUNcMX7BEIXPHqLKVBgVmOFMEj2s+9HqKVZ58GA+e36A+BV4h8ydvY9RH+UHPr+DnHfiTzx9++/3tx7edXxYVrb6hFB5P5hDuY49Dx/o8YZaYZ3PfE8lvDnMp6INgHvT1UYIWP3Bblq+I7dZ2u9nS/3fV3j5stw53Wr8vemXA+Zzr6euJG2+zq7hrLhnqiIpzr918OgOURhPjY+Vff+x7zibT/hxcHCQx0EtqRHM7opAGA7BIBRhxbWZwnrqGXNp0I+nUvEYbA8QouLI5vczdDEpxSTFXWxaQr0yHVOG0aGOYp229mYaYMqkKLgfEdaamX1yh5X+lWseFtfiKzn6unMZjzJJeSufCbLmnaRJjr8JWkt5XlPL7LE0dVUhTZTYKuAu2mb9VdrM5m87H85NaX2/GxzNbFqdp7mwE8ofaxJIXsoQXGLqAqAk9MAXynt+8y0TSQfQNXg0+4nikRV54ObDq4OTs/SOvBm/3m/M/HGhO+lNFelwktdXRvptqy4z8kcHrJx88TvwZVSol6IQlFM9tAGge4knWq/EZ8ejiS6Ea91EGTpnyEd/5CBcEtmovuDAXuVdPHpQw9TYm88JlG/g2l5rcTZk/m7l8EuuY5kaFApXWz2iqTMI1hAuTCLLtMPM4nQN8ay4QGzI2rSR43stiLv7JA8Tq5+B8kGKlCCNJFftntrjZDEcSRAzGnanJM9cilDs/h7YRvF5GuF93heovxRcZvbvCblfvzPWU47m96rw7fb0IK4DAWBMT5q3XgDw+dk6eQ6vepTWReowVRuYtOSDUzrsAqYQpMQ3RmFeWUmGFmk+wCskaKNC6szg3Wg/tDXC4fZt0R3RuTz6LbNnDfVoTuV8/b07yZ5RlD+hTdxHJ13hF2Z3y1C31HEq/ucJb4PTZd95V3R1muBXdHa7H5BzEMRJ4naVGYfA44J6/bE2COcAGpg3HI9fQsrzuQfyB6IWyfl5enGFDr/apCgBz9dAGB8Qhh/SnSGb95kwzWkipZERb9Tchx9FPN8873v6L8YhuL6ZACzAwM4nPtCn/yGwkpY/7NKVqCiF6QftZKDZLx0LLDFcAn8yTgfMs8rsjzBhnyA6PYpzGtl1ubtotRfggxbU9C+qN2LV7E04ZTLYYnTVmBZTIDOsLn0elQ/7v8cFAkrpe/EsEm9mWJHnxlFBI9JyLUN8ZISy4eR69Nd6hJXL1UItReUeFynDas/irq7YLS5Ta+Rze63JE15Ec/CjFC+yEIYSDvtHVCpP91Ver4XiBq9V+8RnmyKIHx0rOCcxvqoXorfmQz9D6/GM+woIkvZT2BSQE1kSqs0zNdMhPZ56RIEWAyoChZ/GgSDqoMSfTDY/kdNznNnVRH6vneyVsqWok1zMkiFUj+HrVY1J7v9naa27vXLXeHrb2Dnd2o7d7O/M/KBnUlBqfHx9HGql6cyQzzR6MFjMvkdBmF15E+gHMi6mSMw3EZQgM6EflA3QPoNKF+m4o0IE+S46QZv5+9+XL6XEDdadyzJlL/kM/fzk9lnndN/QJdkm8MHMGrKZT/1Zqeqf5prLwTFrm+ogzqUQWwysatjl16dQOF0oOULJjPtZUTQSOFY2hFHBMFR2Gz/IXp8dIkEwCXP89SVMo+w0ecbGTZux3GAeERTomDYRjwaWcBbdBrs2Jlh6XquKNLd6Od/f2koPBwcHOm725S0nzx5XV7cJvjBzRmUkQLB7eIEFwRmLh886MTGhVs7/npfBdwcsVVea1upjJl7cFg22liBi7poyAYhZVNYjPjQXcN7YCjOnRO/PJ3Cm3iGhQjRhm1ur/wKNcRQlhe+fNvFtHH8BonOzVpL4+Hu+ZKcqTypHHWFz1rN0PnfYT0+bJcTVMvL23/8TUe+154h0LTr3X3n50apkQMk8Wx0JTd49PTi6CqefYd981zM2mu9JM2MB/v8vHBFJmUGxL7U3tuc2KEkjSMU2rCgBntdcEC61C1gncz0vgnqcyI5fsOsX7W6Z4W8GvM73/skzv6hX4jhK+qxlY533Xl/f9iMTX6d8vPv37kZX7cbLAqxlcJ4OvLhn8EQn/aDnhj7C5Tg2vKTW8Wt7rDPGviWudKP4dJIrb1fpx8sUDhr73tPGAle8yezyk/2+cRB6I4aXmkgck/iAp5WWOXnxmeZnkl55gXqb4e8gzL1P9PaWbV1D/nWadlzl54cnnZYJfeg56QPFLTUUPSFxnpC8qse8tMb2Khe8pP72K/hecpl5F7ovNVq8i9vtIWn+S8pebu15F9otNYa8i9nvJZH+K9peb0F6gep3XvpjEvof09iqyX3CWe0jud57sHrDy3eS8O5q/n9R3T/E6A36dAf8XZ8C7vfhSE+HryXV/jmDW2fDzS+ubJsU/k6xvlzb/fMK+YWL984n7hqn3zyXupSXnW+JeYI7+N0rDn19GE/It3vnr7iaTM/M36SuTM/zjdpjJefzRe83knK67zqy7zsyzT374/jOe079jJ5qyHIZzhSeeFQ0+zb1qyy80aQkq6mzir/Ps+kSPr73o5xpik1nqS8n6z+va6NvdlNZgd3t3+5nEgds1h3CfFbOyWaT1Ra1AQSXR6rfFFQyMTo9XIVtLZY36yZIbvih6gs3szdZziabqZcdfvN8AlM5EJvQOhN83TEjOOBK+Xg9Lv0dBZugoyG30pXuHfshB0H8co77g95IIJIkCbUaVJcJFge5J37SPhduaqXSK+ISwIIt83lXIJpry5+3uouNIYs6SogobYa3GCEPZpLRb2jvbzzXY7rnQxkAvoYLEiosVuh2r3zV6c1iCkSd4tvR3VihbIz4mWzilMZlbNj+GR/n3cSV/aB/yb+A8rr1GtPYan94gP7y7+Lf3E1+ig+iJ+/bun5v6JTl33nz7C123GRpegmPmSXqBbtcTJ+/H8cmcVP46j8tR8NL9qfm3wwqcLUedIEMqlZWF7Ud9Gf7u8YbU74FdZBpIg71lLxs/gN4Jxl2w5Bj2F2vXDAWWYXbyyi3RT65QCmZB94IqRWwb7D6WZH8XERbzRBtV+RF8z4VnXJQZbyCZxSN9CrtE/aLNv5MHKFy5JMPPGRFT+7tGEYwAWl3LidnxPE/HgmI0k6J1k056+nc3kUfQ4BNrbPYz5UyGAFmJKGf13hHhKiwAOSLPZvV1+1oPXJ783Ht3et65/E/DOUmcBVuyJ3///C7rHLU6v3x+d9XpdDrwb/Off8xrZ8ASmxvoa5BLMxX8xYU8MrAEpmpXL6M+KGZcVy/khXLhGcYSYZcsXPVNkL9dC7fQESy/pGwYpHHZz/vNAFOiV1qY3d8bINST3y4658e97u+vzbqHyT6eBqpy54YzYse1U9o6cMh6sxPCRtWjf/xydnUKc8HYbrg0Rf2cyjssKFRkpgDTZoZl2ZgIGgOv+c7VYx7/+uny2Gzck597n/W/CqQHuyzYRB4/KCExHeMUCWLzpY3P9YpEQ3Sz0d64qUhN2vzXxtHhtVD4WpCkp9Tkuk/Z9XiKJ5OIPJBnwNrBxipnF68G1UdhlmCRFNfbXKNWWzicDDnLodkS83Ixond1MNDp9wW5o7Be4Hi4KJeer3SNfPjn2cd5Cb4l0xro/UDvSBNuHXpnswT5AFLzS8R2P72/+rVzeXKdO0VOVZ9fXR8Zi8UWPl6fjrUZ856mBJ1AmqHeoJ9gUnl9T5kmVO+7ub0mrEY1sA/IInrsEDhEL1VDDwcnFHR01cJdLy0Qf8wrBHN9TPrZcBhUxn1FQiGdqxTReeA+G3BCe5eXNsh8FOfGEmi1oq2U/+pxU2kzwLeUROmrekwsMtUAx/oixoqgCb3jJktZ8IwlCKMJJYD14ejTeszdXYDxAh+ASyBEg7NxMKlNY4A/YlM0SbH+JGX6hjk56trMU3QVkmCHNhEmTYnVBeMGkgqCVO524gMAn4EpjE1g70YqAuMl9yUtNh9DN1aK0Y3npKMVZCyI8tnlWkKnF67miUgXYnMBPpYQAUnSDcT7kog7IhouVT3fEcom2TZQnFLCVAO5j+pTwojSRnQ04OIei4QkPTqJ0OkATXmG8GRCLL7O6YXT24rn1NPJTQM+qUlS2lwwQgOJYTSkd4RpFpSgdxSn6bSBGNeWvzbB7kfEb3OqYDIMgcT+NEc7DaY6bB9sR61oO2rvucqgZUzpGsO5nTQ1dweWIyLN9uBMC0q4DWctLoN35I5FA2TotUsmjbMJyHG5XO2oWuQjkk70dpJUZTYoC1LVU20KvUUkoKSNcBG5CsKwOcYpleiVQQIjggw4fENvNK1K4TL0BMyPBgLJ+zXKV49vCuB9yFr/KqhkqBb8iTlbXhzh581VQtD7z8fnsoESPsaUmTL7Bvia0lps9ld6k6cUy2fU3tN5knj9h0pcW31+elHJXDHWIGsDYXL7G/CvZhYBfle1CD43/yuy8vdMZlfJXTLu30/cMPoz9rBD2Y17A3FQbxAPsjUpplSGTb3uRNzJCw+146QJsIWOrmgH4ZQIFXDLuAF0AcZyj8puMpgiKCCyo5knEucfGFcqINzuwkOnmx1RyZhKePrShrTgqb7MlL7uZMN9VBMGp+D0uLt1etHN/zCggtzjNNUbmfTdkAHSSPCBTKQWJU02EGGJwX5JiLKFrVpVmKtNEvTq5PjyNZIQS/eFS0TFK9DQOFMjXtce1uaRPsFDzOif9oLkAk0kyRLOpmN31AwRcNThJ61huUGkIklBqcIauh3ndwxo98K+D127rsKiecZF8gw/LsaKDFcauSsebjeBFYs1Hu1QQeElsZ1t7D3lROBlou+qfNO4GrtqUXSUIuOJdr5OAwvujODbub3b2h/Yr8CDL72tw7Lb5XZyqGbyXcrjWyTIHxmRCizFSdZPaYyOz7umMu7D1dVFF22hq7MuYBPymKdy7qulrvLKjuHx9NioLypd1eA9VSNT8Y1kzA3Mj7aNh2Bmeps0j984tVm5cZ61Ydqt9rxySWlMmKzrESZ0s+xM1jI3NtTTmsGLxlStaZcIJwThO0zTygK/zgTHI4K2o7lT7mp9gCKFV1rgE0KBDkJ1vnNx9unon73j825PH4Le1Vl3Xt4EgYebuC4GNy/dBOjL5ZlePfw15PFwrf3qVt4G/q9ajHp4bdGbu9YGWA3c8+amRAmPs7xeuTgbuGv6ZG5u5vuJcZXvooZ2IkKERYxSym6BH5N2YQhMzSOWEUHf+Sb5JWeRvMAIKkcqXd4GYdE9vaUTklAccTHc0v/aWmh5tQVWG/bM+czOlUQ10ISnNJ42jMViLAJIRPS3rna34GQ/6+43Ja9jMu7nUGJ5gM4GT3sXVuX33hvra145ZdkL0f0Q1+HCZzF4GcGVIPM7wThPwWVgMB2+fh0UFWb5Wmi3Wub/zyu7etPWruAUm4y1LSTIHZWzpkOfaK5h70DUxHZyKbMWfYUnn5ABEg5dp27+myecp479nF5kB9mCpX3pgUCW/htD2DsVMWfMLs/AG+rGFUKCDLGAsKwk4LbIRvB5s/59ah5ujT4dpPwe3uVEkntS77lAV0cXdtSGhQ5zZBraYkLv8gwayqiiOEXd/zxHExzfEvVKOsREO6geMKfFPPqYveiNrtmZrIJMpyV5/K9cCzi5QKIctoNDhNL6RwjHKjO4C5JYZH8xRht+vA2tP+BWC4Z1VLAZwqWB/Ld/tt6jVd5aiytMU5lfFnZEQwpgt7OhW+B8ipAPGzLpFiYwfjVwYUcMYM7BOf13xsymgIcvE3W0364aLBct46o05ABUsF5Gk40462ofmeG3HAvFtzUTJsNJgiQZY6ZobJ6hHuCOxQyRB5Oq2CgodSohtDbIUv2xO6rZpX+S/AVaM0qEwoXYm4ubCj/HQDvUbkxmVKi7SEzg1D55SkXTFBETrjPYShAxAF87COKCwAY0Tb1uwpOJ4BNBsSK+pcNSTvfciF4LGVRwGsyVaBfMh7cLWFF43KfDjGcynZpdDt/x2h/ecaUv4k6pVHo1Ty8aCLu4HYSgM0YfkOR6/0QI/WcucZze46k0Af3iVY7vHU3uPNxE9hc3RmRF241p6yp/uk4y114BQuURndxoUm4iQ9ZNAyVkQuBVAHFrSyDOgoikvmZnEoewjAp4i4vkDlmQHDMOwmnKPZU20MEZH/NMWhVh5J7/2hNoNYgd6FWne/66BEsDScY4HuWRKSNKk+VJKm7uvfb+wSzPYXjmJWINzJ+t9CngpDpj72fOhylBZ2dHBSlUJPvMk9v5KILhO0jrASiVAIsTTqLdCEZhlxfo7W4x4ALb+SuULdxBJ4i954inQKXdnJXt11y7OhMEZRDiw2iQ6cvlD63DAdkpGNvE8Fn+fpA7UHhsn/7G2PbWyedIiKB3AQS+R5c2mk2bNkQrEX1/CT7OjVYmaDzSjlzZfRpwHtl/RLH9jpP1kPAopmpaV1OmI6qm1bvyI2dKEJyWyeFMUUZYFWbQSmi6uufN1CRrAb6Pv9hdLgnMvimr6T7vzOsAFJmpScDnhW5XdrIy0VyoEepA9hGuIDJjSkx7VPK6ZH5kpkCn3U8g9BKFR51Hyapra1qSKlf5CDOclCUFN1vJqSuRMyS8FwLnF5EHORtSlSXGBEuxgn+UY/j/jTZSzjYOUfPNTrTf3n2702qgjRSrjUO0uxfttfYO2m/R/2yWiKwxLrf5RRLRdKbUTMwaIyeeBsImimQMaz5AQ4FZlmIR9rVTIzJFMYDYaU+igClnTR5VjANSYYzkmDDzhgQVHCk3qXV9InIkMOet5MaFIS/NgXVNrLiBYqejwsTFcw4QlvqDxqkCH0TbLGOwbYaEO27LGrfPpeKsmcSltZlwqXBa1ynbvIDhjVrDUvKYFvMEPcmFVl+ZNpFza99mpfiUGn0vufjeLeP3DHI5kWbFgLEJ9PvpBQp4QrC1wZS+w2KK7mmiLTi41eyphsdT82NZfge7rd25w9BarIIMKWd1KrBLmOEp/dX8fPQYXTVpMEtTpQL7nJE+Ke8/7dX8yWe7eK3mWnXlNnp8/3DhNYLLdj3tnHeCz1USby+qrY4YwrWMt95lhHHZ61BB5n+2mnyFy+psiDwxasY+fHV6cberd/vpxd3+62JOxBjHdZznj52jamJmgvyM2wC+sSrNSbt8f4TetHa3AX00Gw4BxfkQnWjniceKKPTKhl4b6G2zT3MTVdv4r02PR2sa2afZe47+lU0mRMRYkv9CI/KAXeoxdLmTaEjvXKw1zD9EjnwzsUkGz5jtVUyZIkMiItTN4phISe/sB43rLskEC9clEPsRR9PJiFRo31ar2Wo1907gv3ea2zuFlWJYRUvkymxeCcykDUpBPV0YROljfVGcd658bNLiRVLrneaXH0cTQe+0uj3++PvrYDmLlw6o7pTjBPVxilkM116QUsEFEjzTt+GMY6/5nPC5CuieVagWCgCqhF+uCEx07xk+brFU0Xx7IY+2WLBXXoYliyit2EN1gNBs1RERJOlV+dIrbmxOhyMiVTCpk5GZuwGMTCYk8SRnffOnmTIfK75GUAICw1mvWlslGzO+7IZWUhvhLx7vnm4i14ANC7CMJKZSWyW29TlE+lJ6a8tFTf6EzAYD+uBHhM+8Gik1OdzaMh8xn4i4GL6O0JVJLVXcmFMPdOwf6/pTJOl4kk6Rwrf5uprIYIqlAuWa4j5JpbGcGFeQGmgQkDX3V2fH0t+jGzGPstuNsvp7zNX3Yq9zN/hJYNN7x+CJQInLSgsM9Twd0aQAkoeYTIxD4cMvNhWiuFXsdo8QOmXaQsVC0eA5AZUoAOVh27Tq/2//bjPXvPcCbkaW2sr4GLP8PQEV91UjkIBtiSDLDPVJyu+rt3n1mSiem1C2G/f39xHBUkXjqR3BbAxzMrBUG3kX91PbkNaMMsI5SLbh1ZQ7uWlym21DZv3tSGb9duHwNQqbOCevALBspRCMsdEwZ45xpASmqT4yEyIor2hXqxmY195TfNIDNr6B1iODAYEexXpWu1Es96/I1dnx64Zxmby/lMvdC82ojoZ7bgQloLes2yvBIYnKCnJ2Xj9sUGGsVwn2wfetGUErPqYU85WYTz3C7wv7JpNERPVumTBKl5cU+0znIIcD8cFj1yJm6Oy4c6FVVsdwfOyHCvfKZpk7MsY0rYm5L5oDmKDYRKdAgNaeK8Yu+cbvLJrNTZlfAxBqeiKdLu0TodAJZVIRu7EKEoFH1L9s25k8mtr3nWGythyix7tz2Dwhm0YEDztbLqu9YnsaOmsMnIYrYSYrE1EnDJSVFGgbqNGB8JswNVCFhENTYGXUEkOYcTYd0z+DjHQjQv/PL5IMslQfhhvggibmVRr+obm78SZAzNnArNVskiNLKqwq7fxVbaqvItKsZivZ1YIpZ093t9lu7jW3283t1vbu9u5Be/vN2zfN7f2D7d3tg93WbnN7Z699sLf/5u1+s91qtcpMrC4k+I31YHekvU9m0exTPqTsSVHhiDyqAwVPa8Ob6Lg6StjKMJN7lYDoo6X50QKKW9rHDPdwMqZso4E2BAGrmw17esCvVlWEOXMOgDFImnO/erKolbhvl1KwVPg3U0QCEYo8MzxoN32PJYp5mpIYgI/sb6+gm5odGMr9pjxDA8oScxy9ckj5UFqt4LvuuLmhHNpkIdqTOuBcMa7IIaqg376iS5IOmqapnHXj7Ocs1ln0k4HNsL806JDRTyhPfPaCMF/Q/FsMSfsln2HjEqaghDfm8PSuBZapITcwEqZoooEg986YkunU7YgP/J5ASatyjWOkiQnNQ+84084qV5pnrfu0QnNrok1r4wFyrmbkRFSeE2szfwsrb3L9ClvLdruzabDmjSdvdiNzweQk68XQasBD+hUlZocN5eYLTLjw2ZiztNmEBYPsYblySanm61G+AcvU5Wv9FfL0oKVFdDSLx6izm+RJyl5wjlvHPgWYUlx4CnVJmNRvyuJ5B70w6/oFcCjoy+VpXszn3hpe0cnd7qEJ7wr0Lzq52/8v+Odrk/wmiMki9MMCTsQrkw4nq/ogvdmOtvejVrR9uLe7MzcUNWF3VHA2JnP1oF9Ipqd5WpmpPPMzWjGHupZKJDLGihBFNqoCcGDugyJjoII8Alg4sESvLBSheRlTeEjZsIE+dxrBdXxHUj4ZQ8ETUXH0ulGiT/vuvieayTTSVy12wDWOqjziYE9ZDlJm7GSvNLUaC2o3ZRD31twFk5eXOGdp7tWdjMiYCJzW2MDvxM1RMu2CE/OKDgACiDxQqbfvzHGhCWLaVk3TqcUfla7JnCAAKChNB78bJ2BtBCecSK39y5J6i3cHe63WoCCMWqzaiv6FvkIAtnG+JU4Hszs95uOJoDIw/fnAgF0wnhCbfVFgOdcrfsuA4QCBm4TICsHar5SaD4bEWASuMb7V97pCEy4l7RuQPG+n5KEoba/ojTwmStDY2C4A8DRjvRQhI7ThBAHjOEuxAHr9kGRMFSS05gaj/9s5VzaxmhpsC0bMlS0Jyb9gT1KBDIhl84LY8/MfpHCbimnjzGKFbvT3rGelHS34p5Y+mNm4Ioia7Lwhe6Q/IC1M9uPdgzfbSZ8cDFrtN7u4vb/zpt9/u737ZrBf2I815SwUYhJus5nM9ydvLVLK2LS71J9MsPMBGMTuF5ym/N4sv+9zH2xmr/RAqiIDLAEfDweUiaKXbCwFV4/g9Cy8d+YnhPkwf3hDWNMFS+DgJMVS0dgibxROkXOYw8i5eWjMpPJJ2igICr8jWMmqQUxo1Sph6Lw58SiG/qN6IW9y196gyAz0wTBvM0Hf0orgfMhH0x634ibiCak1H83tJuy3BEw5o2eCnaDuudFF4QUZXtvMps/7v8ExDUouQ1xPSK8CQ9vAmzSCRXCse7WYp5P1XbdVP6i9TjxlDuLGjTbfXppRyQEJ5R01Q4D+rFnzoP6uuFHtHow0CXp6WWEg6UuPbW7mYQWA8rZ2O7ziAXN+tsbMqx4XjkgLABKCjueRDA4nmrJhRuXIr1p+KOFI6/sCZZPCVW/vOS41qSgMOFk8RysXBlYw5C14lVC2rSp3Ta5g3O55jZpGK3gZW6bGmJmiLUkqzAQ3X7Nl/9Muamjrya19jtX6HFasa9fjR3Y93CKvPZDniGvto6x9lJfgo8y/Y9dezNqLWdiLecY2W/s5az9n7ees1s+Z//jJAFx3pSWCBrEZwfgz0pgbmNPSWBM+OjwTO/ykZ99G8MWZtl7GLq94Ay7YK95SKDxCGk6CSU7cIp8OzCBc+DGwIDPUzZ7yRxT8vbPgbgq6++Yruv2ZC1aJ37OaNful2GrOLZl7t5/Dm7aaXnGUcn6LsL4aDR4oUebZdObFPuhu5++Qsrx2ou1o7jaLf92p8+kt5rV4HQFZbQTEinUdAfmRIyBukdcRkOeIax0BWUdAvpMIiN2x6wjIOgJSZwTEbbN1BGQdAVlHQL55BMQevxcdAbE0riMg30sExC7YOgLyNTmtd/RL2NFPIm7/TfarD8rlESJXbpT/5olqI/MpV6jj2hqVoJ6RJKbOZBCgdTuo4y0DuBIUeMhC06QAe1lvDFyEg25YvJYQwB1AL62ZEIKhGKoKRITQ2HkPv5CpAF/6K8jSIZ6NhZfOeXoMQDmYJeZM0gRQHbTMtGuRUkbCZsAGJdiO2nfQy1BTzIp8y8cmdGIoCtPt9RAp/DSodTOhJz+2izlYyAuHJGmwr11Vk3dYoIzONJOr/pyTgufSwMZ5cX9fONJW7msc6TWO9BpH+i/FkTYn0bVqz5XgCwSTNqSuwaRXL/I1mPQaTHoNJr0Gk16DSa/BpNdg0msw6e8TTNrYhy8ETBqIWYNJvxgwabs7vgKirLUyRF7y6497fOVKIOWgtxtSAkNskQ1fPLD0o+KIlpTHCwSWnt/F/Ybo0lY/oJeELm0EtUaXXqNLr9Gl1+jSa3TpNbr0Gl16jS69Rpdeo0uv0aXX6NJrdOk1uvTfBl1ajQTBRso22+sq/83j2V4b702Wjj6mKZaSDqauAAaK0FIi9I9xzEXiDCs7F1L4gTM+nl5bCq+9UaQZ/nh6dXmCOldX/+fon9cPnRM0EHhMtE0VXbNSQpjWBprfAiX5wJYOk9/kvRwqbAjAxcROj7sNdP7z+19trZ7La8co5uOx1tKW5CgfGuLLwFCkcKxoHP0UEjYmmEEjf5cIp2wswhrFrtU+4oN8TOXHtIRdb9DxBMfqeuN1VJiRxCNQCE9Pmo9sUnBuKYMoB9i4OB55fOj+1D1TKZN/aOZpwLrFMR9PUirhzSYfcshx6skkLIEXRpQQprWn9tNMwqEmfeN/oSVTtvKEgnnOo0EGrzx1xhPQMsjfoyhLtEvNhUS8/28SK2nnc6Fjm12IWVIw/gMgaYhcuyEpZ1tBBsS8/mHAY+RJmoNbQ3MVt5/gL0H64yNcV3C7HNXR3ymZaxkhvfTsr+USvBaWjLPE4rrs3Y28bvy6p9Va746whIsmI5kS8GbtKLjuCQCjv+5lEv4n0IJaD55zRrbO+P3WR5LQbLz1gQ5H1z0Z4zRP9aQMdSaQEfmAOu5q716d/oa2o3Z4wwXj/mII8tncOUUIBvfNEEz+FZYozqTiY5dvfM1OHiagzcNR7+z7uiCH1wyhnyCzoOsq+9yvGDE/nfF784PhzfysGdyYXXnzgeVWPVihmpb92KVhmKvWFkiYJGct4CSL3dtiftnOsnp6gR4i+H+QtG8aJkD+SUrviHBqtMOGKRHo5J9LqlIIXdSMUBGgKHgzzVNgn0cLIRT0ioq824XfX3xg/XjK2euS4CYjKkf/bzb+v7BgBjQlEYYXWjKPB5/kBW5F5/MMnje00Q2BdJoaLA43dGUROOMKLEr9aXO/SHRLyAQpgeNbs6v012Hc6CvG+HycKlu4XB9MiXNJQAT5fIEAOv6X9qkgz6rpT5GPYKAPRJDNTQnlm6xJHkY4kxCaceaX0UOBOaXtJ0EQsTrL5KW7pJ9DhEU8onekYdAKYF0aecyogQiLxXSiSJIH/ckDiTNFGmhEk4SwBhIEJ+a/9TXXsHZBA90LqioKYzb/teE+qx0s8+mvOlZzrWXME9KTdMiwNtOjhA6JVD2cDrmgajSua4HhPRRLsPT8ZL7ES9NjQuiCxxAm9aKcCciHBbWeCyjx1T4T7B4qkc2m8E84UMeQB1CmQUm1/qQA8A0b08+BV4xscnLL6yRHeHtv7nLX+VfF4Ih8JQjS5zwlmFWJ+535U+gEUqjEcjNoIdmElrKHr92hGraa/omyYY1YLXqTBWGqeXdX0KqogA0S4NlADfQAx5oRk3yDJB+oe603jPkWBWMSB2IgkSApubOucWei9+JPn7pQMlf1/jKO9JwkepjE0UTwh2kNq6CwyuqEm6L6x9kopi/Bi4mwFVsEGVKqV2OQmTeslA+HkI2uVSwfCjwZ0RgRIbTz6LM5w1HvcEqTMLuWC+3gS+XmQ2cE3xGUsaCObuDytOCr+VdcPnk+vh9W39MZi0ckvq3CpTi5vPx02ftyfnX5pXt1cty7/PTpqobVzMDPriuvsmuGL9SIQKarUZslS5zGgutzgY64mHCBn9VQZ26mFcHjmrWInmKVqgTG48LqClsW6xSIxb8Kep75QZ+pQU4+f/jt97cf33Z+qUHq+g5VeDxPxuBj9u6xPqCYJcbkvfeVmG5LmbtJn6whYcRkOkJ9Jtzn5Ztqu7Xdbrb0/121tw/brcOd1u813FygC+Yy9J+4kze7igvn/gX6qELHoHhUzHf5RSsm05cu//pj33POuYmdQuCqYYQ+orkRVMhEcb3qco2obSTOU4tRgm1nQQTqzlhPRpmWTdearAfQzUuuQLVZZJ6Ah1ThtGggaY8aMqLwEFMWFK5BXTRl2vWAQGwBravydsGFZfrK1bE6EWpvejkH9b22qGEcfY+DRzmvTwrFv2aLFr6/Es70SCt2vHOv04JCYFNiA/AA1a64A/OzcWEYxu4I455mE00BuhnrqW4sJhjV55JIdANcBDAS+hsQVfs36Bv3KAeOiv5oA0nKYj8cJCmwnG6fj6cltAopJySA0lh9QMyiUJhmoUEacchGyeNK8CoYc957Xbz5LJAce8r5pvYtIUKnvq7d5nkaTSTCqJapzmxY/zavTCrJZWvEx2QLp/l6LSUfTUTPTL6siCqP3zEU99ra0ydkdJUXX1FprilnD+X2PUO/UpbwezlTC2KiBjl2gK/XMNeh1lmh5GOeVpWwLfmeAPIk6SCCMJIi4ELWtO0+4ngEUB3BVO40nZy9rz5RD2/3m/tzowZ9hcn+VJEeF8ny2+YRFt9NteNI/sjgNYIPHufrjCqVEnTCEopX4YRo9uJJ1ivjJq2MuaOLLwXopEd5O2WKpKviyV7OvaSEwvasK/XkQQkM8VNQVh5B1ReJ6Bk3pb9YI3RqiLHhu9znUWAg9TOaKoO0N57Q1GrM2OEP9wka4FtjqY5xCo4UsMKFXPLZw4uGPEy4mOvZf5BipQirfvk/s4FnMxxJEEkJwDCbODaY5tMJWRnZI4ITIiLcp71KVKmV7dcZYCm9XTtBzOydMZHhHXuAY4Jedd6dvl4xl5B5UxN/H2AKk9zz2JlcERtBy/uVGyPailVYn8WABzvvarkgTIlpWO+/sgI7uxT5BDWvh8lsqfn8bG60HtobBj3awZs4fuRKLPiQI9nDfVoTJ18/9m69zijLHtCn7orXq8Zb2W69py7mFTHxzbX1apUAHa/0ujTD1X9dSltbPAfdj2f3bXYYwvCIHaa8MZshZ8pxcDxCdrLyRip4LrdkaiNvufdin+ssapokPmEwBHbrT5HM+k2Th+OHhIJARrAaoZuQ4+inm5VpGT9mPKLbi2n/Qtpe0TAe0ab8I7PB8j7u05SqaY6oXkC3jMPC45WxpW8ePpknYPAszrojzBhnyA6PYpzGWWrrDXx5dU08DVI8rMt20ju7azc7nGiYbOUs1FiYUuIgzDtcGQMOhKfHBwNJ6mpWU+LFzFYfN5L+Oc+6PAdbr8SDxy/Sk62clRotihInBqR4xQzcUaEynPbmz997lkVeYsLOVyx1rIGfxbfWAsysdmsNly8jmN/QgMn+akPDcLxaQ8OO+Qy7bdFDaoXqZOm34qpZqVnXzLCxUm0zwoIkvZT2BRa0tgRR5xOY6ZCfrlhDlPO6KvYUSQc1Fp+64ZGcjvs8NfWn+giv1MHU1NYZxYA3Yj9LA5GHOM0Sl6yQEgw/J7y6p5XPAoHHH8g0KsBv+IEleuUSuBUW0fDP1w14EfJjelQE6APg9Zl96k/Qq43hnxsNePfZMCNsVPQdnAQ3xOJCH3Bxu+Kq/plrQO+TW3gCznPuTH/HGbhDHLzK++PhhfaJmZBMI+jR6If2aU/wlD87UWl0P6idBXXsy7pBA9fLipXeEHaNYBpXlw5DWvgW80CXz+cH1t8w1SeQIlvk4/zqfbdhNAG8jOOUD3kGr/OYoU4KaFuKmIBoVwmCx+hV57j72qXHELfkflTT5MB81JR/uyfKf2dSaW8tJQn638edq06EfueMRKd50phpcDeGV8tCY6D+1L1YQuYApO3btAGJEn7PUo4dsHGxFAx1GOocd+HB3OGB5VK37+ZcjA/RzdHh9QSr0bXi15pmcF78WTqUfEx6fpPeGAnczPzWj2zf582DamguuCQXdJN/K0I35Qldeyk/ZPBNfV5CKkpfmv1w/gHImct3R5am0Fe0YT+of75pmMSK8KkXNl6AzBAc/3ARA5d9cU0wrC1T8ULQMRZTi+hweoxe/Xx6/PrJ9InNdqvVXoUlltfS1s1XmHtaydOqkh705RuNk72auPp4vAf3+yqudBhHjnC7Jlq7HzrtlRObV0rUQO723v7KCd5rzxPIXJDgvfb2igmWCSF1Hclu9/jk5GJlBFNWwiZeXUEhK0HZ56lFuaXpehzMKsjtvf2dtzurUJFjOiZ1Zot8PP14Yl6lXBpZmHFu8W8DxYm4cKYMHxTCbAhBfTEaKTWRh1tb9/f3EcUMR1wMt7CUdGi6T2+NSUJxE15fwp+jh5Eap/867fiWANoYGdCY4tS81fxXw2Z5ubSQCP2q7f6xSRHFDOxBYIZKV3jTt4BufswxlyrvMRWy7jBxVrFs9W3NjwASPijsRx4rnObbtRo1dbO1v9tayZ5cMm+2Im3W57tqp40npk3rCkj9RpBTdh1CjzVwZbWL40qXfNJoaXmcW7oa15Hfs9rS58BVhwk2wbsTlVgKq7KotPm9OkZWjyrx3vkLYQJ3Y2Y3+LBERcZuIfSQBDmtz8vY3VrtBpqQb5FsenTxpZhoahpven++Otl0JZmmEyjhn2BWV/72qUfmNtOUnJCGa8QLSfo2Q7FpyiNmWK6rKG5CvgFqhRfETIeTBeRwgcM2MEvxrf+35tQsz/hdMWvmmUzvRzvRwX6rFbXf7Lb3VsM9HU/qxEPsmCi05dfm9ADgIbo4MacadRiyVKBmE4Ci4WMooAvpv8x0ch1QNiRiIihTpn4KoI/utKIcKCKQIEaYtp2j66QZ84Q0gc9c3wrMpK8vlqZ/N4/jTAiSNCzmmGnLamp0rKUpsA9hAvUGC6JYvSWsWYpVwSAeUEHIFDTPVj/lwy0DVtLUdpvWg1vbrfbuVqu9BfE8yoZNm5bcNMJpWviDSNvKFb0a4v23rZ14lxxsb7f1D0mM9w72dzBOdvaTZLCavePSDHtwhGo0sfz5WUZzdi86p+dX0clvJ6vh3hba1s2ynWYZ1jf8rQFAhDZaDD9/mhCDCoW6BhZkBbJ5/pN6xQuQHkTrCfAsC5H5oGrH2EUmOqsHhSK2Df3PCkDq9v7O21XYC8Yy6b10c/TKGFBgkGorSk7HKWW3K3lurjEOAYsPzvgrs8sTKqB7gKW/jMakP7YCnrLaIutXDn789Bi9+gJBdYEkiTNB1TTEBXjVnYm4G+eqvrj7w17rIML2KYveGR1e+6u7hYEI5rXJuK+6nfPXkXGoIdDjAZmqIDNwpkYcRAiwxkFFNGyffqbyBzOHjJw3oSKygY7PuyjkGKFXtsFaEmORSPuUVwAMyzOF8+X4KbKd2KOYr2xZqJQZEZFhoc7L1a2LhYiFe+bV0TlsRE0EAKYE0vVyLwnCtsOHCDqg66GOlJnALCaoa5piH83d5nNu+UCzu9plY7rrvTp6DQaknGX9S3fFfAXQVCSpc/mPw4ns6h8vsvpH//jSbaBP/3C74JTFDfTpyz+gcUqOlddAR+f/eGKn+LNY146BdpU5pE9dW8ZN43Tb2euSRao3ldZKv1Byv2ImQzzWmhkNp5Lo1aclFMcpi2uUA057GaN1GexV4sAp0jNqqXxZQCwzJ2fFopEKQ3l1D/yI+iBq/b2v59Omj5vP3/pXDdQFG++idEaOcEoHXDC6CqAG4J5x1YMAwRzsPvZwcUXH4NGbyMAsbg6ViHFwbyDcwCRNoPEUgM6UFnm7td1qtt402/uotXPY3jvcOfj/Wq3D1tyNWudhuE8GfK7Y7cIcD6iQah5u2wfN1lvgtn242zrc3lstt6YnUu+WTGuHoeyUkCcdzlTYwOmWlA/2ZXdll1rAb5yJu7oOsfZhYPwgR5Ygkqb6A7H9U85xAHMJqBv+UqcyAOx0j68l+TAq1WRvu12DkMjDhDPy3JLiGWwCM4Rf9oTAY83MonsMtzkY3t/b23njFoQl5GGmMQiPeya4ONswZHWCWTJqA00J6Z8+RBXsBTnBsYnlUFX2nrZbu29XxY4kguK0Nzdi/xINbMxUDosfrlR/LKpvd2j2BApSKsLiaQ7w65qrm4xI2DGTEWYZtGtuIBrWU5gwtUvH5eDkptrw0p6qx6TxQ8cjDDgaoiz4vb33794dHL05Pnn3vnXwtnVw3N4+OuqsTDN59LPaFfFpsS9VARXUQ7AFGulXYh4HxkTLTIa98IxJMuAZA+Tmnzk6w2yIjgAw1FYKTCPUJcSH84dUjbI+RPKHPMVsuDXkW/2U97eGvB21d7ekiLcM4uiWFgz8VzTk/3G2s/Omebazt1NuewQpaM0VXhM26PLXhBOkjyc4MmYZNpUY0TDlfZx6m5eRVTzxzfD/V4QL6osWOL5eQrighMhrA336cD4aL+he/SO38Rvo7B9dzNB7gVlMZcyDeEJDe4cRRA++2W55MaGCglBWzeVfHSt4TCkUFr5Opl9AYGBGBitj82/q5Ns8i3otwQACRU9qTbPSNt5ZlikhVU8SMs/ZfNR9NyVRs3DJlCntwg1NMx5brQWOvOnCRwAseaSK3YK1V+PJm+V2E+IZ7XaztXfVfnO4vXe4+yZqtZZGUh4SHsVUTesCJz9y+recOMCZEgQviZAH9HOmqPYce3EpLXglTFzd86aFwYxLeet+9k1Zzej5ktZmkcWa1um8AB5vJyuzwoUaoQ44UEsqFcMV2HM9KnldS3dkTcbT7idYu7K5tJLVMXzUdYYsD5W76wgzvCzcruYB0FxLlkqJ/iHhvRA7rnhbcTakKkuMPkyxgn+Uddl/o42Us41D1HyzE+23d9/utBpoI8Vq4xDt7kV7rb2D9lv0PytQbXUW936RRDQd1MJM6iVGTp4NBxBt+nryARoKzLIUi7D9hRqRKYqx9qf7PAtLZo9chEKPESQrUWHqXmPCFBHSNNUfpJwLGzxp+PhH4rqa+UENeWkOzmJ8iQaKvblcLAPPC1lNdI4yaKQ4hgLmIeGO23J6UJ9LxVkzWfIFSi/mhEuF07o0xeYFDG80/Gx5Niyg47EA+Q/d8vIMcptZ7QGRx3jqoVBvGb9n0C0NaVZgIi7Q76cXoTeLkE2WsH2z7mlC0qkpM3YOMHS/hh/LAj/Ybe0uGfbXwhZkqC29GlXzJczwlGZufl4S1zlgpCbdbJmoVM2fM9InK9j32rD8k7NaLBvXTlqP7+7/XHW5xsunnfNO8LlKbq1VsNURQ7CM8Na7jDAuex0qAqyohaRA5ymZ9B96duvCPH2p2LcQ8YE/lE/0LWxH29FOtGQOZIq/qTsCEBwvzhsZY3FL2TBSaV01shtXAg8GNEZnmmV0IbjiMU8hUqqteUuBjNClC2WbR9e8K2rYLhX9hH79cHp1Yjqf/nx5cnJufux8fHdyaX68PDkutUP9dUTVkq9Nroyvh+eJsKxqy7hZw85hXh7+7vv2O0dv5DnE8Ngz29e1BKCe+B7RC2iJ3d0lIxY2L72usMtV0b7M2d+ULiW+vJyp+LOXiXSEsyU1vCDQz7G2QNqlGx99uTxDKWW3UDrIQ7ycqmZ4T25m91Rly9SDnKIt/6WtVqvV3t5Z8nbQRozU5h6A8odl4St3az45kGuYBZqfKsKMGdzHkuzvIsJinmg9nVvC77nwcDmOWMRNFQRnMjclukSB1XzyACrnkgw/Z0RM7e8axf5XMYdzxlni2/dYBCKtoOBh+Cad9PTvbvLEAD6xC9rPlNu6QWNRE8gRJOZ3RDiUWmhglqPr+bZQWqVdnvzce3d63rn8T8O5vxAqgGk+v8s6R63OL5/fXXU6nQ782/znH6vcAQYk8WvNR13GdeU6H7mScK3v9SrrA2HGddDNXmYXXh7GYDLYhlXfhOWxS+VJht0hKRumuZNjP+/3iklMf6Vl3f29ATI/+e2ic37c6/7+2gJG5QuU00BVXswGkGIwrp3StiCRJoQOE8I+1qN//HJ2dQpzwdhuOOju5Ee8w4ICKH9K2FCNzLA2gwB4zTe2HvP410+Xx2Zfn/zc+6z/VSA92ITBHvMeZkJiOi4BDaBXJBqim432xk0FEtrmvzaODq+FwteCJD2lJtd9yq7HUzyZROSBLN2PuLjvyhUqq2lhqTBLsEiK28HgZFpd47G3ZgVgdsyKmBzR2VSvlfDX6fcFuTPxBLhjXf21nq90rXz459nHFfFzS6Y1sPOB3pGmIKkpMoFSKD4AmNJyysWn91e/di5PrvNaOXdNnF9dH2VCEKbsi8/16RgPiSlVOoHm3Hr3f4JJ5fU9ZZpQvalXJJxyqdlKpPM+BzjLQQpMc3JI4WP2+qha9uul5eVVTIXcro9JPxsOl0VM8wIM2ajrMcIkb1krpLS9VsOQjDFjRPSkwnMB/z7mRUCgXhPe+WXr5PjSNpJ12L0ZNPwfZGk6RQlRpo39GKc0pjyTYb0dtEP+cnlW9iGW5NO6+cvweG48IL06dAydUkMTGQBmeF8ScUcSrbKTLLboTuBTQY/SqqyV7SVDljWWTm5c2aYiBYfQ39HGDD2aaql8As7BYKAMda9Of0PbUSsKIwblsMKhCRPgTHHGxzyTTeNP2F8LRQc4VuZfHt6mFIZI+BhT1tQyMh+F8romThJh/q33l/mJTu52gz/Qyd2+/efMmGMcB58bZ4o8mB+1L2x/Mi2WzT9cs2Tzr0yk1wyFQ/4E9ZpNHEPw2nzq3mi3plMqzVsyNX952GsdNIPEp1IQxfOx3NbJRBoZ6dXlUh3D6E6jZSLNrcYNKEbxZY4bgdF9ypDkY4JiLCEsoR3XMZ4icJUtXurphb5Ptrgw4QmzPdJpjomEUYE15EBymDm4ptEioJfmMVADyTDkzo6/MUPcmCeNkELDkCbMVoJqOlOqiMApOr242/djEhan3Ka43/zrxmCI/tcNenV6cvUeXb4/8oNuv9nZfm1oCj+YZ9w6N8A9q3joYAsc58jNw1JAdslyLkp++T1UO4Sz7zyeS9tXNPvJczxa361KaDco6IwMG3Ae/Oer8uiuwackCtEBospg/MqG3syMK0TuiJjqKQyS8Mz3ZwZ3006IoDxB40yaLsV9h/ZFEuNyEZezlpsE8OE+QRsTNtzIk74BODrSv/t7AFnrnTcQGEDj69p4FwbwOVBgFgsGjtt/3ATqTPHJxswi3/zHjandUmiCRY52aIletucACCBL0zmYn4mHrB4c4nRg4I2/XJ6ZTgwGVQYzpXXplGdC34C51p0GGwfgu/MIAWXoxrF2A0hlALOjCr12BYk5k0pkYEtCemDYFgJge3I2TBz/0ShmUR8e7u7ubBnQnP/7xz/s782//0PxyfJr5tTTS1i3zS/MP2x4tQnbXCJJ4D0kl6eXY4V6oQwxou65uEVjzqjigrKh0VreKnb3eJ9o9Wi3i4XexDLcABg8BpTyoc3v0F/VGnigCDPg5qEZap4psBoVDmC4X8bEbkX/NT8slq6nqyO0Aeg3KTGJp4yrsvZaaOvo0R758/K7aoKlDBTcylGv7fBOidmrdcn8YkP4XLg3T4V0L2wgJiAs0MxW5BuroPXZj21fb+6j75hHid/dLRfzLP2epjn5IyO1Va2AvQYT2APo87CASfMXG5WuYtyfYb16MweldMf+X7hjjVEXNiUIZ4n0/YSL5jrj+rugXUQefjCl1gHtkbX1hamjg/n6mfKfagSTGWaNWehHNG0oGCLjicrpAdLNJ2/st2fQ6BI6gIc7BclVfaLuSdCFWk+q7rlxkVZhSBgvlAiS9Op1Ca8g+DscEdDhblK4c8zEDRDSZEK8rpFZ3/xp5tmtYBsHY5kPQ6h5Y8B5+Dy5AYBe4S9mrwxjY9vFSIgiYgx5jhNBYipJOnWNRVIqFUrpbaFOV2aDAX3wI8JnXunL4nBry3zEfCLiYvg6Qldi6l5jJxPBH+jYFHtTCS2s6HiSTpHCt8UMFWt+6/VPcZ+k0rzeaDsTLuB7kqbA/dXZscz1YMyj7LYCx2xliBB6H8l4ROrLPO3C6I+reriWZ/0f88J/c1hpjBt6H7ngVyAOt3XrPE5+EtegxiTimoDrHxlOjX1nPwOun3Uyg8TYNHUiMQU25CEmE2MljbhtL2k6qM0cN6svIojbYBAuLTR+maUAinaomcsoT/i77c/ss4XBVdJGIswcY8Z4buAWzmYjkEAejpllqE9Sfl+tKqr1SlH3hLI1sSssVTSe2hHM4TLaBUvljQ0fK7KjFHxu4FXaci2v/dxmlll/W2+gdkGBNQqKICfPXD7Wq3LwZPkYGyYypu8tJTBN8+BDhULAcsnKR731FZ/0gMFvcKGQwcCmJGkz22whK5dX5Ors+HXDBM18InK+IrmTCIq54boJgYoNNUVwfCpCM7Pz5jG4/JN6/WCHfN/3Dtw5j105+UrMd/nA75ffbA4svqZN9sUOv1rvZ42W+NLQEtdAiXOK5ofASFzDI9YAj/ijIyOuQRHXeIhflcrfCiXh74SC+LcBQPwbYR+uYQ+fJ5814mFZJt8v2OEa5/Bl4ByuIQ5fBsTh3xjd8AcENlxjGta5R16Mf79COMO/G5Lhjw9i+PfFL/wxoAshjZEkEVZ8TOO67SHz+mfmCgpfjIkJqY6WHo8lRdgdFZyNw4xTwhIo1YYEQpsXCTmUJZH0cdL0b8gLhaCcfODD30Y85rHZXmclWVVJKZCMl9YzpARInNDfX47w9t7+MnKqrS/bjJB6NClBSmg/NLO8a8p8U+9qrgcHO5iQvebbfdxu7uL9drPfIvvNVpzEO+2dpNXuL9S11UtC+8nfShh6rmXlQVPSJ1g130atqNXcbm23o9ZetL3TbLVarfZCcQ4nixrr6GZEoWxVHcxsDkuMTSDEZ1orKPAxdAa58b5gfkjvIDnbinFWUP4PPZMDLrL5WxoOBB4TfRRrkkZY42qLI/2UeS/eTJjmulgR7YP+aXB64hRLSQfFWhSFY0Vjg+ND4pEJM/iHegv0ZGaKtJVop7Jj0bgI5WMzMHwv1L6rWQWsB6hPlA1E9H1gcCEUomxIpIKyULjQBVGCO5CcsHAGD4eGPVjkcmTh4+nV5QnqXF39n6N/FtZkKHg2iXBKcV3pARtXWpPrCV4R6T0VmBcCBBgKn/gAQfU71JwpkcGd70pbw4JH2NXY9DSOb40YceGh2xYW+LaV+m/a+ptG1+zXEdQocRUOKcgfGYX+yVOewTJlkiBcEBq0oDVEe16iUvnk5r/Qxkc8JDEWCv0Mn97fQPPjRZjVqO0agaXI745nrQEIPpTa8muQCz4cd641oElZ+D+3Wj5OO6eka/TUN2bBn77jHQ+ZaSV5vz89n9taMuKuG5EKZC4KsFTPEH5hc4e7fnHh50NWbPr5ZF9gp7wILu6JlcLxbTSmShDtbG/Bt+UWHIqteZcpd/CwjOZ26x57e7BxeRuQxymAYJprCqx7X51vbz9TvJD/2gvP/NkjxXW656+1P/9HRtKgK7FEBMcjb+5zsy6mOzkpm3ztvfb+wUKCCSMLK1Yhq6/D+xQQW40y+jPnw5Sgs7O5kWFzacScDfQC1HekcxP3uqdG5LpnEECajGRKALawo+C6Z/rDX/fgFcF8PDjT55yRrTN+v/WRJDQbb32gw9F1T8Y4JchhTlOGOpMJYQl9QB2nPCzoRDu3JgvwE78Ygtz7YUARgsGlL01MElNSGGdS8bHxdWV0zU4eJgBdEo5awMdE6CeAjO6aOUjifsUsMMQZvzc/GN7Mz5rBksIwH3j+SgerUtNSHxdquZwvgwH70eGe5C961uyeZe/0Aj1E8P+KuCkJSekdEc4L7LBhSgQ6+efcEcBcEpA2Gtm00fodu0chdgvpq0X8TL+P+OAp/MzJiMrR/1sgT2mmkYkpqiXzmK2PJa1snmHr6ORQAnoB3dCVpcH6OsVpCp+2DhS6JWRiLmuze6DcV487fy3bLHdKCdrPasSH7ABQHh8YtvP5AqY7/pc2zJujmfenaJJiNeBiHKEPRJDNTb1rGGdN8jDCmYRM7NSGjY1eCdxca98Qq4OMPeMqnA8RFrEB2or5eAKJ0kkjx8xpIMLgNZUk+eM5AeAs0kAjmiSENZAgODH/ra+qhr3PGwBBVVEhtfmvDffZjQbaMJ9+BurezPrFPCE9//QcJVT71LU/g5tyRCwh8IRLOUiaHpOQYdB+Hi/aCN4W8wd0aVA3LBYIlfAXkuQFQIAk5Ye0OlNqexU+KSCN3tZ9+IJQZGQTvM6X1uZ5QdKnV6JQz/oY2Fmf85RgViXid+ZPAN1vIEIQHWgD36cZUOngG8rJ/UpkZEVbSv9E2bBXm+O+aRx3n1gx7y6i0n/UfttsBDyZpK4sboxZNsCxQVgB78ZhTlmwtSgYk4RAGSm5s9gHnYnecz996gKeS1UtzjjSc5LoYRJHE8EfpiuSvMIqq08vPw1kPPPeDqRUr8AgMzVMKR8OIYkYElCGAk9GNEZECC5kHoINR4XUzLCtCRdI+6vKzYfOCL4jKGM5+Cn1MH/w1fwr5SwBP6y+azMWj4h2cssLeHJ5+emy9+X86vJL9+rkuHf56dPVilbQPJ/W1Uyia7MgWKEZU+LUYMk6dhCR6IiLCRdhBHdJRhXB45o1hJ5ilWoCxuPC6gFT++uVw0RwbZFHuVbwgz5TO5x8/vDb728/vu38siJJ67tP4fE8DQ8es0ePywD+ha1j7hd9alw2cWIAr+EersTobzdb+v+u2tuH7dbhzjPw+b/Crj7bcxnfT9ylm13FhXO9Av1SlVkUj4qVzb9oRYOV860e0zXme84ZBiAc+H1iqvEKKOWFmmOo9CvAO2t7hvPUwoBi+xyCQH0ZS8cox7JpucJbH/TrklKvNmGgKJgOqcJp0ZjRHizUu+MhpizAn9Pf6FOm3QEL6hysT+UNgQtL8xX1v5zYtPe6nHMIeLwwjr5/wZub1x8EDDCzFQvfX5gb/e0VO7q5x6e17ZgobPqQjTAbPuL6mr95CH8YJnbw89o1zCbQg+RmrKfySP76zBGJboCLHM7RYrQjnPwbdIlrsAYOg3l9lJBiZIeDjGiW0+1RFbSEFpVsQu5obXHEYxjcIooZNWd7sISkl7yd+dsAzjLjPOS6+HHjG5CzfBNQiWycPUKnPk3donIYzSLCCJFpwtmw/mTeda0ki60RH5MtnOZr9GyZ6Il7ZsJlxVJ5tI6h1MO2FX1CLkUEN7henL2S29nMNd+YwYUynnme/u8z/M01pnVQKG2oBShr1AVi7SBDkg4iCMkoAi5bTdvrI45HlBEUTuVOysnZ++rT8vB2v7k/N552BWP9KWRQ1teQ591UO2q2hYXm51FezqhSKUEnLKF4UQdAsxRPsl6NCUBHF198pPzJtTlliszdF7iKD3t59oJ7bZHr7+RBQfVLYhTOhEtJ+ynJ0dX0jJvSX4IROjXE2JBX7mMYZMV+RlPI8tP2JE2t1ov15WSxjAfYPtuOcQqOC7DC8/KbRcRBHiZczAVsP0ixUoT531bm8prhSIJISiBnzcR4wSw2fWMWJ3VEcEJEhPu0ZxN2a9qLQaau24qdIM70zpin8B47wDFBrzrvTl+vgDNIt6qJpw8whcnoeuyMLUG63uF1GQjQNQhw8wO67bzLU06YEtOwa/HKUCutyPMJapA7NzGnes/D5kbrob0BcT8PgOt4eAay4hNcyB7u05qo//rRdetyRln2gD51V7AuNd6Udls9dVkuQfg316zLH2SDo72yK8wMV88VJs0D9jy0MhLEwmai+a7BmQWNgoc5howuMBBjOB4hO1l5kxS8gFsydU1o8hZ3BaRwSezQBrbcZZj0p0hm/abJ/fBDAvwhI1iN0E3IcfTTzVKawo8Tj+j2Ypq6kAZWND5HtCn/yGwwuO/6/iVUmrBAIEVLxyo2AVw9fDKPY/0sbrojzBhnyA6PYpzGWWoUoLdOV8nHIMVztQ1aRGPoXdu1GxlOKEy2ErJrzJktUR3mqy1FtOvK3+ODgSR1lR6W6DezrZaD5wNCuL0f9jh9mm43GUBHrIT8Gm/2EvV6qJUQfUeFynDamz/X61mWbolwO5/L6VopD4tvmwUYWH7bQB+Tb3Xhw2R/9YVvOF7+wrfjPMNmWvTQWUE6+fkttwrya9YXM6QvrTEAEqFnEElo/UirMB3y0wWQT1QG/C3DkiLpYITlPA00FmHFDY/kdNzn0NlqBEdyaaes7pZh7wvdt+br+vVDNMuaEfSAi9s6oU42O3o/3MJTY56HBQ+jWEoe07zRMw5efP3W94L6xEyIooEwEsS++rmhfYoMPBPPTlQa3Q9qZ0Ed+4Kb3uOpNP3ZlN4Edl1gGteZ2PZZB7B381iUz+cH1t8wFQOQHlnk4/zqfdd2v4YXWJzyIc+k7VzYscDLxAT/ukoQPEavOsfd1y7Fgrhl9qMCUdJ81NRHuecyaIYU4zQlCfrfx52rToR+54xEAcATlTkUcyaDcuL+1LeuV9ymY7tu0yjh9yzluNBUxZfpoA5DneMuPNJOJ9oIDfa8e6vlYnyIbo4OrydYja4Vv9Y0g7Pgz8+h5GPS85v0xkjgZua3fmT7JhyAMdgj5ZIm0E3+rQjdlCe8mW1IHnxTn5eQitKXZj+cfwDyq/LdkTdCNh/UP980zAN++OwIGw8ILDfUDxZx/ja/M6d/WFsm24WgYyymtvzt9Bi9+vn0+PWTz/Sb7VarvajVBPN8E17CHMRKPpZ5XAcIi3GyVxMnH4/34I5e9Fp2CBvtmujrfui0V0Jgnt1eA4nbe/srIXKvPU8wb0Ei99rbKyBSJoTUday63eOTk4uliKQsx4RbefGWHjvvB+hMQ3Ov5tafLXotKbPtvf2dtzuLqrMxHZM6Mw4+nn48Ma8oLrUozBg2MYNQySEunHnBB4UQFDJoj4WOhxQzDOXLWEo6BCwfuTUmCcVNeEUIf44eRmqc/uu0c94JDIQBjSlOzZvDf9kWkD7NIEK/avt7bFICMQMbDZjR5pR58erbxit+zDGXyqPDFli3TdUW3YPj+rbgR70Dw1WgDPFYQediuy1xGMjOd19rf7e18N5bMjeyIjXS5zRqJ8n2E11U3jU6K+czV7u1xTzoUO4uOoxYk+Nrk/hKy+Bcv8XdM37PakujAhcYJtgED0pU1pUvY83M2brzL6uqf+/s8DABtzGz6t7Fr8jELLjxSZC3+LxMzK3lN8qEfIuEwqOLL8VkQoXFkCjvG1cnFC6cTTiBcuYJZnXl3xp/FfAHYJqScd/IgZ6wctlpTZO6PsPmKouOJuQbVOp75oPfLsj7Bc5TiBbgVf9vzWk8ntm7YhbGMxndj3aig/1WK2q/2W3Pja1X5piOJzWGZTc7JhLr0PRMjgg0zkYXJ+aUog5DlgrUbELLRfgYCuhC+i8zfWcHlA2JmAjKlKlVAciWO63soPM9oIBPqH1y5wJxA9TGE9IEPnOdKTCTvh5TohG+I4jHcSYAV8c0vrg3/QqhTsJafAL78B5Qb2rhi5UywpqHWBUM0wEVhExBq2z1Uz7cMqAMTW1Lab22td1q72612lsQ66Js2LTppk0jnKYtBY+0zVqOybTi/betnXiXHGxvt/UPSYz3DvZ3ME529pNksPh+calnPTgqNZpA/pwsowm7F53T86vo5LeTxTm2hYl1s2mnWYbdDa/5AfDJRkzh508TYtBsUNfAHywojyXbR5jXDmggQZnx3goR6aBywtgtJiqpB4UioQ39z4rmjO39nbeL3u3Gcui9dBPxyhg4YCRqK0dOxylltws/j9bo08Mig2P7yuzghArAm7Q0l5Fj9McW5COrLXJ8NYLLRkDQ+AsEjUWOyxbURb/qzkSUjTOz2rjyugcnYn9VD86qpfi7N998UibfWdfNJ3h5Ca04vrN2m09I88X04Vioz+YTjP3V/Tdqb7A5J+8voBfHN+ms+YQ4ftDGHVUc/3C9NB9j8sdpolnF4Y/WPfMrPP5922Z+RTB/r36ZXxHG99Aos4qFdYfMb9ghs3IB1q0xv11rzMoF+MF7Yj7N8/fVDPMpXl6C6/39dMF8SpIvxu1eqP3lU5z91X73SvtezsvoC3Cyn9vw8inW/kYO83fZ4jJkREjVk4TMc9YedYVN6cosHCplSrtJQ9PowlbVgFPsW6NJOhyp0GoxlSuevFkONyEe0G43W3tX7TeH23uHu2+iVmshpNQh4VFM1bQuYOEjpzfLj9icKUHwAmhbQDNnimqPrBeX0kNXQvjVPW9aiLy4lKfsZ9+U1cydL2DpFdmqaT3OCwDPdrIy+VyoEeqAk7KAYjCcgC3Vo5LXtURH1lw77X6CNSqbLQuvgqG9rjNh6a7cOUeY4UXgNDXdgNxYshhKNA8J74WYVMXbhLMhVVli9FiKFfyjrIP+G22knG0couabnWi/vft2p9VAGylWG4dody/aa+0dtN+i/1lQJdVZMPlFEtF0ZeczqXmmWa6tPFS2VPWOpPpvQ4FZlmIRwsyrEZmiGGt/tM+zsAzxyHn1qtjgjgpTSxgTpl33hnlcTzkXNuDQ8DGDxHX68YO6jsceeMLY6w0Ue/O0WE6bFweayBVl0DhsDEWhQ8Idt+XUkz6XirNmssBLil7ACZcKp3Wd/M0LGN5o5tkyV1g0x1cBfhs6ReUZwzar1oOcjvHUwyHeMn7PoIMQ0qzARFyg308vQs8QIftYb3vM3NOEpFNTrumcScXdj2UhH+y2dhcIcWsBCzLUFleN6vUSZnhKuzY/L4DPGhBfk361hFeq188Z6ZMF97Q26v7krBZrY2QApJEe393PuSqSWTzSm/G0c94JPlfJob21tzpiCNYK3nqXEcZlr0NFgGszN+d0nvI0/6Fnt+fK02GKvbkQH/hD9kRvrna0He1EC+TIpfibmvwAQfAiLP4xFreUDSOV1lV3uHEl8GBAY3Sm2UQXgise8xQihNp6thTI6JpduriteRnMW/mFPf7QT+jXD6dXJ6Zd38+XJyfn5sfOx3cnl+bHy5PjUg8/+NICArL1Uz08TyhiVXvDzRq20PEy8BfVt9kiepfOwfpjb0RfP/YA7+AblS5w7Hd3F3DzbcJxXfGJ2U7GfuJN6XKdy8uWij97mUhHOFtANdfdKPiy0CM4pewWarZ4CABS1fHpyY3q3llsXW+QpLLlv7TVarXa2zsLqHVtWUhtawEqdlhHu3I/4pNDq4VZoEufIszYoH0syf4uIizmiVa2uRn6nguP+eGIRdyksXMm87u+SxSYrCcPoEIuyfBzRsTU/q5RbAQTczhDnCW+14WFUdEKB14vb9JJT//uJn+l5hO7iP1MuS0adMMz0Q9BYn5HhIOthO49ObSX75WiVdTlyc+9d6fnncv/NJx7pV6BrvH5XdY5anV++fzuqtPpdODf5j//WHbVDRLb1zrmuRTbyrU9cvW0WmfrldUb34zrcFq9nC68DIxFY8DUqr4JS2KXx5MMO0JSNkxzr8J+3u8Pk4n8Ssu3+3sD5Hzy20Xn/LjX/f21RbrJFyWngaq80gjwj2BcO6XF95cmdgwTwt7Vo3/8cnZ1CnPB2G44aH/iR7zDggJydkrYUI3MsPZpG3jNN7Me8/jXT5fHZi+f/Nz7rP9VID3YeMG+8i5dQmI6LlVmo1ckGqKbjfbGTQVs0+a/No4Or4XC14IkPaUm133KrsdTPJlE5IEs1CyzuNfK5Qar6cemMEuwSIpbwIDxWZ3igYJmmTa7ZAnGRnQ2j2glPHX6fUHujKMO96QratXzla6JD/88+7gED7dkWgMLH+gdaUJHfG2qQM0KHwDmYfnN/9P7q187lyfXefGSU/vnV9dHmRCEKfukcX06xkNi6ktOoCus3tmfYFJ5fU+ZJlRv2CUEUq4DWolE3udIS3lVt+mEC3lgzF4BVct7vbSMvMqokNX1Melnw+Ei0E1eaCHpdUXhTWaQtR5K22hxJmSMGSOiJxWeCyH0MWseotWa2M4vWyfHl7bLoQP5zKBz9CBL0ylKiDK9kcc4pTHlmQwLoKAn55fLs7ItvwBv1n9ehq9z433oVaBjaOkXmq3Ftui2rbpBLAB/BprpVaVKbC8Qz6uxZm3jyiL5Fxwwf4ca0/BoqiXxCbiFC50y182/Ff3/7H3rctu40uD/eQqUp2pjn5VoSb5na/aUYzvfeI8zycbOzNmd75QNkZCEY4pgCNCO5te+xr7ePskWugEQvMimbMu3JDU1ZUkk0N1oNLobffFt8bq5brru01yJRExFLruo15uvM8VHNFT4ydXxqJn3kZhSnnQ1XfBRyHfq0ijK8LPmI/yLp1eb3g88vdo2HytjTmnoPTfNFfuGf2rb0/yFfT7xg+3YiZ/yLP7PhPhD/g2S5ro0BG8uPnWN0qprBUb3ks3wl29bvb2uF2FTc044PBZnlzyLA6TYskybQxjdSqg8iwtNbgUyC1yu2YqnCB8nRIopIyGVYPpro3FKZwTMVFN88fiTPhPWRYYuAGSJeFYUfKGkhBqxlUFMu3XsIAalEAvHIeawj4XVrS9wiAv06/sQIkIaMJOOp+GMuWIZjcnxp6ttNyZLwliYWOeLPy+wIOG/Lsjq8dHZe/L5/YEbdLCzMVhDmPwHi/BMq5rbuwVXe9RUubLgFu4eALumzZYpfze+WXrd16L5taOwSx91kxcFLV3Ll0ybI16rTmC6NkVjz+qj2251kinCR4QrLBIqO5qBE6EIu2LZTE+BpUgr71cGt9OmLOMiItNcYgvNoS1fxCI0fZgNjiqOdXh4yMhKmoxXiqhgqDYb6O9eb/VbzW2jjELl6GUx2yesEusJKlMkA7bVzxee2FIiXaks7MXPF5iIo0hKs6IcmwH6LgXGAek8jlsgXPE/PHxm/fEI66B++XyCpdaxxIbpNj0TOXS+LiTqzGMQqPNbWOQ8IRcWtQsovQQ1R1SpQWTGQpFIleWgA0Icml/3HWqYFGig73uud7As695ubm6sYwWRv3/9xXyPn39WIr3bOlnR8xzW6s2XxF0AOJEI7CyJZHBvUNDQ0a5BdPCEJExdi+ySTEXClch4MkaJ5LRZey4PmRZ9hkVMDUAq/UWnoN2TWIxNoIJ+VUvXkWIJVj72VUl07VM1qXZOdzwyZYb93GtuWCpts0ILaAe7XzOMakyEqkumO7GLHm3Oz3fjpJRK6QmvBy+Pa4a3AsoclXcIUkVgWxUEuck9+sk4PjxgPElrSLtyV/gWvny6vQOHPifmAry5Wc/YuNP9kob+a86WlqYAuhVMYDaUCxACxPAX48ltQtbtSb1KFcavnY1/h7MRFTC/Ark/S6DPGFpWpxOh3wVpkRWmP+a7erAHRhfHhu0U5hvmyj3V8SZDZFGFcyNizfmEsGmqCngAdHzywrxdKa8V8RFcaimIABoydc28dqnQmP9aoAlzVwUArUGWseh8uWbaGThPxxMGcthOCucGTtwBwqQpc7JD5kP8qXIlVdJdvbHwYXDVroyE8K/rVqBykf9FVeyjDmwWIGKKZVMIukszFnLJ4pntHBBzqUjML0sJlTIfjfg3NyI8s6oF/tv1dXwEnwhENl4LyFk2s7eTaZqJb3yK2bdcQm8ZPk3jGVH0shx2YdRjveYxHbJY4i2H1gnhEL1mcQzYn50cykLGhSLILxsKNt0r5V7zjgwnbHmhj6cw+nzRDcdp1SbBm+2Lt43KMsI752C+Iwksiy5z27hJbKcJjP5ER+bXnMaoi5lnwAQzxp4XjRnHlgyYacG+hSxFjWYiTF82bGFU2VZGLgTgM6FAUF7q4FCFALI3OM6FghF+N41HXYgqmC9aoYOZQ5okolBGS3uw41GgcIVUERqyWFw3i4Rm+VGWMT5t0W9EpQqmMzMCbiKUIlQqpzA4P40ZpWT7Aq7S5Oo4KWcZWObDgWagfklQdUobvgAPDxZj9dj6TMUYK+iV0meSyiiPCydAw8an8g4pbZrdlUjPAalHOCzYaGTCbLQajGxjaLHKzk4O1zropHLRr8UqFIYbCN2ObQUC4tOXCN6WaXCLVOctfF7Fk3rNgCte9pkC58m846RYiXYHC3x/NwazlaeXxFhfzPD3t05+lIJ7DqXgflSBu4EcL7YA3I/abw9U++01ln37Tiu+/Sj21kSJV5+2/tpLvL3q6m6vvLDbj5put9Pkey3n9rIruf0o4vZ0Rdx+1G97uvpt31nptldSte1HwbaH5oVnYyvfs1bb91Cm7XVWaPu+irO93LpsNhA/oDGny3L/r2j1FyZYZdJJWDu1afEvGawdJHxBuLbKckDVZn/4+QEQfkexf1p4icomLfm1TQyfa7Wjf9PMPQv+M/ljAqG+QvlDZuxrzqFX20zkcOeVS0Yo+XB89vmI7J+d/ZeDf0AbLK8EjkPBQzeoZR+8+ZOs/LO7P2aJWiHtsyDd0iytORGsC49qC1KYqHDvCDk4UFkHEnPIkE3oFReZTz133TIVEYuZUS1rxPOJ30xxf9AG4jsYeVQn9Glva2uwMHmXqGOsVMsUvCgSw61yjcj70XueRAtTOY2p0sJqqTLGTfK49PYztX73M7X2/zitpUrt/5XbvCf4k+wfmlorB5/wjxOe5CZ9akrDj6f4528YaQwf/CE/jkY8ZGRjewufO6XUvGF79yW3coRlA3/cJo5w9G0WcmbCOwm5ZZfXAP7ISjU2FuMRnzaWXe6/J0sMN//McTCWMKivgrXLqVI0vAymXGUMetfbAdZBRq4vvDxLzZqcmHt7rbotuGHdCviEXGjDoqMQd8wH7I+KH86EiEu7NyEtt1HjymkM6wumJ2m7GEprQuHjqAMwVdMiBOR/3YhwSUuDUTqlcCOyyr4F8/kUX5HrZ/u9Xm+wTtbqFINfmgizzIPcTyK3vNqaSD5NagxyfyLVaVTO2a+Q6ZElbZ7Fz4lY/vB1wrUdpUxXFk7AD/44W9POdu/daQdajJz2Lbl+1u9t7TVwH3w/h0IPu0cfJDfsBsl7ozq/8DrM0a6Wtg4HYjqlSQSXIaeIRTLGZtFpxux1fH2NnkhAtKbnLfbL0ujZ/t05hJX58LFkBQSmo8DwZ72v/PXHuh95e73+PNER9Hqtb67nEPcZipn5kmTBBbrZVFvyAn0S1yw7nbC4vdbavEJPI2Rak9on7zzNfsmkXuz9m5fDLUaM/hfFFWy3E7yuG2ciT98S1Korbdg10zuvrBKE6re0HZZgvVDIA5SmDoUkIxHmkgj0vtrxCUltXVquJItHcCZxKKkG9w7xjNArwSNJeNKNWArphjSeSS6LUHcE4Vuw1dszo/qXdCMe2wBtU3lfI/VTA1FUZupM+TvaUijk6WRp3vtTzBc1Fwe21AZOiewY5Zn7Gkty+aSuicuT0/Ojg8Nfj84/n+6f/3F89uv5/tHpeX+we37w7uAcr9LbbtQw5ixRQT3e/sFTrI8+dG3JSqloEnVpLJLylauAxNEiiARhq8VC5TIH5pnmCv7oQg6txNq25KKO0nk4gWI1Eq6FikATNyik5GBSK94hUAWZK/WWKsfHQdD6ZmweJEsi8T7UkBSjEq29yU1FsSm9ZCRPqxfejhgA4k1rcac1KGrv2FWgyoT7FKE9WJEFIh79MEiUKwBXPRnjzxVclJUOsX+190QaOCdUToJptLWkhTkoSaxkrFVxDrFxdtt/ONwiER8zvMo8PPrs1s9cMDrqiVGbLVMJtMKMLQElRTSuxv/lZ+254KumQCssu+piq2CM2kr03u9sH+y8Hxxsbb17f7hzuHu0+273/ea79+/e9w72jlo3MvDXRE5o/8kW5fTX/f6LX5W9o429jcO9jf7G7u7u7uFgd3ewvX0wONzrbw36m4f9w/7BwdG7Qeu4q8rqFEfNk6zPYGu7eYUcDa+Ku/P7r1AxKq7Uw+yb7d2d99vb2/u9rc2j9/2d/d7u0eD9oL89ONp/t3nw7qB3ONjeOuof7uzubL072tl8937jYKc/ONjfGxzuv28d4m1wxCSEJS1aQ3yVlwFoy7YDBPYTqHaNB1GpgqK3SjWXR5GS9FkIRQ72IXXpOBllFKsl5RkjZ4xOO+Tw4BeXLXt48MsCuRxm8n/TjWUd3ygEsMhQUeAf55VQ8DzSOvYEE8ZnJGWZZjXNYqenJ+uF3k3IhCaRnNDLevmnaJNtDfu70fZwayvc6Q92Brt7G4NBP9zbHtJB+145hhwPkeVxSBVbh0wIT0eGCm04SZukD39nNuRHvBn0Bv1uT/93BnkRb3u9xXo3ePjeO+tjUYSrSSC3Idvf2+k9BLJQJCpbZjzmvla8QxrHWlgm5PS3YyNTFYtjaYJ5IJMQM2QmQiqQKkrgN95ZaeUDhI8rxabo+sT7Q21MESUC8gdW/ivFml9RHtOhFgku0NyNO2aa8ilHO/giYlrAYecrU1SyOVls4SqSluYoK59SPtckciGJHVlulcjTGf4GovhQhPnUFZR/IEks8xSb/ZyjLb2sIBNnVplpmnWHkhGP30xYHIsmg2WOBT/Y2j7/j4MP2oLf2N3U9kzx4NHB4U2PunVZuZP986MuwNPVBfCX4HsvCtBIixdWEaABh+eQ3vDCygE0UPHZ5DfcqRZAA0JPnduw9EIAt+D8DHIdHqUKQAMZXmlyhI/pq8v/ryL3epL/fcxeW+b/HNy+37T/OQT5vnL+5xDhJST8+6D/yPZ/xGz/EuF/pPo/Xqp/ifCvPM+/GdeXleTfhMNzMIFfToZ/EwWfjfl7p/T+Joye2v590Nz+2xB8Bsbuoon9TSh9B4bri0zpX6Y9MyeAsbBwbJvZMb9iibkm6eCFJk3TmId0GNdvoiUL08HWdtbacmFS0WEMgr0FpkMhYkaTJoTe4U9kFNMSWqb8+9nJKUnYWCiO91XXVHptOLXi6VQqldFEQqN2EyebEJaAPqQ/50nC4tbbLWHf1LkNmX3UpXRxukMGXwHcLArIJ1NXH20swsttPI73f9sv2iev+p2COE0ohC1TqbXUKUuUXFex7LrGahqHLo4794fg20RN459pnCZdC2OXR3KtEiJlOrIURkMsrlkGLUYa21+t94PWTJcxmU+XynBcVoKrgeHMvNAWxmGr2esbKjhVLm3NZnif/jwjfg1si0b81lF6qojfeZAsicTLjPj11+JOa/A8I34NnK8m4tcu00uO+PXX5HVE/D7lqjx0xG9ldV5JxG/LFSpGfYERvwbHpUb8ni4U21uL6S3OCIS1Zso9SmyvmfzfdGNpQWTNwb048YMF927sbW5u9ulwe2tna5MNBr2dYZ/1h5tbO8ON7c1++wJOSI+HusKVik7TWqyrCex8DsG9Hr4Pcqu7CMKPHtxrkF1uoOlp65DSikBuEAC1oKOlCYAfcZBPFwfpL8H3HgfZSIsXFgfZgMNzuAR6YXGQDVR8NhdBd4qDbEDoqe+Blh4HeQvOz+Bq6FHiIBvI8Eqvk3xMX10cZBW51xMH6WP22uIg5+D2/cZBziHI9xUHOYcILyEO0gf9RxzkI8ZBlgj/Iw7y8eIgS4R/5XGQzbi+rDjIJhyegwn8cuIgmyj4bMzfO8VBNmH01Pbvg8ZB3obgMzB2F42DbELpOzBcX2QcZPma/qGh/Q1VM5LSzF1t2OvmlGbSxGvB9yLjY66ZD6PTGi5ygkFr57hdiyWHB/6mqR/zv1iEIXRwhe2iA+EQ8dG8DUVbeHQugo7tUprY2shNONUxmoNPCZs3RmXnhepou3+kNAE92jaMCgVW99diQmU0ZMFPBvJ9fDhj5sIK7vdFqs1zCNXDQShGglKI3+sQmYcTCAWAlhFMKowNhbACM67eaTxksHMpiaiiQ03srznLZgHyRcH9o9Ee3d3b7Q93wjDaon5tVwD2EUlXpQ58xrKrEmsmpzEj7ApIFfNL5lPGxKMNmbYciRJjpimCFpK9uTMjU209Z45+E5pEMVpabhKeKJZ1TdwkiyxJZZV8m8PR3mC0sbWzM9zYjOg23QjZ3mAv6rEe29zZ2P6pgUNNuViPzBaHRya2nbY1u/rvcCyhNOHjiSYigKzfuxbZJZkyKvPMGJTAw44nDf+6pfC52J4RFSL3eqPe9g6lvSHd6w2GOy2Immcox0xd4i+fT+Dj/LrEXz6f2IrDcAxGWneFIkBoEwoNijkmaaa0nf7l84nEW0vzpEVK02WYMXrJkzGJxHWi2UkQGU7YlHUI1nbqkJSqiXlfEBtle59SwzjwkuT3m0MY3bJPnsWFLFopl6VacSxDyHFCpJgyCJjWQkvTeUpnWEnbhLUff9JUWNek1fSOeMZCFc86zh1By6ihmR3oscHHocfuYNi4u3Mm1+DdGAs9h/7pwpTUQsr5ECJCGjBzda3hjLliGY3J8aerbTcmS8JYGH/jxZ8XsHYX/7ogq8dHZ+/J5/cHbtDBzsZgDWHyHyxcJ9b9AsHCQ02fVMGOMfvQgutGRLDfVM/BhoJgLqfBhr0viyOgL4AGqyAcxtxqKW0nb9BazJZ3qAEvQchvZKPxYkYj3D3KW6qz+uhcEog6kEwRrqWWibzuaL5MhNLHRTaDcu0TODXL71cGt9OmLOMiItNcKhhkqE8EDR+LyidKkcKADw8ZWUmTsVc1S7++EujvvLl+E8oELV9jzTiDF6hBGs7itLOQSrJqrVxFs2D811oHMHdjAtmoVukTP37QMdbqyvivlQ7CgyOsrNX5KTXOLMtEo4yOp+181nfioU8iU0ZJN2KFwI0WboKfLzwho0S6Ulmvi58v8IpKlfRmC7RBz+GSx220WxuTYr585J4wxyPstaFPF+hIyqdaKtIEjsiZyKGweyHzZt5aSyX8KC+ekIs8iwM93gUkTUHsKchM3LdcgiczwWgnFqEVCMqoFUSgbrkhpcizsDnzxebnFNLo7ebmxrpkNAsnf//6i/keP/+sRFpaGyscnv36vPmSTEWkVamokGjAtpJIxpIS3Ry9GnY+T0iCLRjJVCRcCW3noEARQ1CEIndaDpmWXIYtYCUzRqW/0BRyyEgsxrLjzjNodqBYQv6tZZOzM0wsMSggpQ3l88WUGZZzr7lhqdRy9ppKB2inpCAlQtUFy51YRI825+cS96RUSk/2PHi6kRm+aB0BB1hQgUFNFufeyjxqUpnDk3+GECuVaUW24IUi+kHeGsu6EQ5RyNIaHJub9QuHzc2NElBgai5T7YAJDLPir0OG2gf+YtL2mnBw/K5pWmGq2vnydzhfUDfxPTD+LIGW2bSsQCZCvws7MStuzjCawoM9MNpnhld0MN8wV+6pjjcZIovajRsRUgpoQtg0VQU8ADo+eWHeDmmipYi7NuaQspAoThUjQ6auGStnYKprgUp75RDFpEyWseh8ufbGmWddFpOCqLUWlMY3TVnRcDof4k/eMta0NW8sfBgMvJWREH7g0YpekBX/i6qkRK3P0DViimVTnrBIn58hlyw2+R4Ucv+Mu6K4sJb5aMS/uRHhGUhzfbu+jo/gE4HIxmsBOctmpuAwTdNMfONTDOHgUtsikk/TeEYUWJx1hVAvZUyHLJZa+sSgLsG5c83iGLA/OzmUhaAJRZBfrtRFeDUuy7nYwLBdFh+cwujzxSIcLFXlGgMFLt42qocI75wjqoyZZahlMrmbBGS5UYbxuJ+RrzmNUdkwzyTYjB4EUiEHaBxb7NB5z76FLMUjeyK0FaNfy5PIaNa1XRyAqU6tc8OzK6oQgFvRpLOjdILfQ3RaOj+Qsk3jYOaQJokolK3Sjul4FCgs8CpCQxZj/kp9Azfv9rJE8GmL7goqVTCdmRGQ5XHPU6lWgqp7wIxSss0AV2mufZxMsnwp8+EgkPmwXxIrndL2LMBD6W5UeRtCX4yxgs4QfTCojPK4MFIbtimVrW9BlUjPAY1HEOZsNGIhpCBozQ4ZxWC/ys5ODtc66A25TMR1oklY0L2wP0Aodqz3EcSbv7W9TdJgqFfnLZwrXrO1UEyBD162zAd5P0/cFyvRTvDD9yW+ySXLlhhh8MUM36Bw+xCgx9S4eO3n+T5e4EJw/RtPr9UcCU9QKdYCgg5FjoITHkVbDTrWsSvqTGHjVQQrz3GJaW6n+WNCrxh4YhhEfIjMc+kkKuNMGrURJgGxIjKwDBN4jUdWUlh3NE0IhZx8Yz3iCeAJyqlZuHt1q5vQZMxksFxp4De/Rm+vyGYFyUEVnjKIghOjebocTcjJ4f4nTdp9ZOZDN5QvBtpXSze4Qw7SEhm7nOTUvmSSAU8fqg8c3fPw/Ug1nm9koQB0tMbgmmHU7Mf9eMgyRY54IhXjyaIkAV5/Mp6F2Z+aaZEES+sBXL9GdIWZAHvTn1POpGLT9TSmSgvUhXkbsVjiweKvIk62KIhe5v6D89gX10fW1HCABjMZdiotHVIjuNpHaZkQmohkNuV/eb5fJL/7+EWyUR7rTXihXwp4dKF5ED9oBC+c0hmKZITrTOPywZhEDXp8Llm0OLtWGTUs0jwekkntrYJsyP497fa7W91BvzvoDTYHm3v9wc7uTnewvTfYHOxt9ja7g42t/t7W9s7udrffW6DitUGxzsV3RfLhxfPpRGTGJhQZicXYu9htohUN2B1FcybipWU5uxJFGM6hZyIUVTfFi31udLQKSm/+XLnkQ5rQcxpNebLSISsZAyMxGZ/rARco/PPqtCV3hWwNhe9SISywf6YqYQHgD6WwgSjfsVpYJcJLVQyreDxL1bAA8odyeB/lsKDjK1YPCyS/bwWxoMN3oSI+hQbhxz09R+WgfdDNA2gOFrrXqhSU8XuW530ZxMc/yu38P07puae0JdFLPYBdwfPndba2l3T3PHhdlM73cKYqmo2Z+i5dEwb1Z+qXMNA9V73jCZwShiKvVflYlALPUj1ZFIln6YswEP5Qce7jiDBEfKlKUHsMn5ma9MguCEOEV6wr+cFS53RsM3m8kClSfNsicArHsOFTCaT0Q8nfKcPYeEqGmbj2sqvd7j6bsJnJRpETcU30SZSQaza0qcGQu6KH4sm4CLQ3NQFyB6oNcr9/rFPE9LSPJcbNbNU15p8mImG32C5LAaggaV3q0BHNeAmoBfKznk6VSzxuOS9xSxXDD+IvHsd0fSvokVVcg/9GDj59MetBPp6S/uC8jyGcH2iov/jnGtlP05j9wYb/4Gp9u7cV9IP+loNz9R+/nn046eA7/8HCS7Fma5Cs9wdBj3wQQx6z9f7WUX9z1xB5fbu3aTpGOVLLYESnPF5WAs3HU4Ljk1Ub+ZmxaEJVh0RsyGnSIaOMsaGMOuSaJ5G4lms1AuKTNbjbZVg+T9P7I1beSMZGPbTmQOInJrsOIBlU8EIluMZdyDAfxL/pFavS6JJlCVuW0VbDAWdzYGPhEHo9b19sBptBr9vvD7pQJ5SHVeifoTl37xW2ZQa89Z23pP+s0sOaEI+1nnY+s3dDlighOyQf5onKb9qvNLvmtf2qAVuamSAx+P3CzGMqL4C1QBUbi4z/hU+IKpI8UcItrhbH5sgaZoJGUC2QZaFW/EGOcSY9G+Kje1wyMhJxLK71yKbNYJErDZlwq64U0dpbEvMk/9YhUxoCRRP+rUjWMHStl434eEpmIn/zJtMnPIW8DEgBMGlHJhk45lJ1TJq/l+eBpQXckKlIc21DRQH5FDMqGYmZIrmEjAgynGlCJXoGmmB1UJzq6OC0o6maZiIVkhHu5QfSKIIWkvWYfkCzraYsZLDc6lc1Pm8rsPq9oF89QJcLqldW7BY1Sh/6nhJ+FZsD06jfv5/s/9ZG8dbPWZWbZkUOpzEhZ2S3Nwj6X4mi41W5hsljKQ0vmXIFjyTmflBJeDKGUibQbAP/hPGplCLkpnifHiKxyd1gu4Nxr7F2G5O6isJmMjwSbaNJt1N+wxz3QGPfhEXGQpFFejiejGODraJjSDMD6ZBDOQjobmkXb4IFEDSgX7s86X4lLAlpKnOEUnaM66EJMlLKW1ezlIdevpvJtoASL9Ql6EuWSJGRVRaMA/K/GbvskD94xuSEZpdrkH3Or1g8I848A0dTRkdQcLlCCZ4kLJu7qjgEwYcMcsUCS7Jq80jMqOa3Mv5rc5C8GT3Ez4y7KJY3oIfS7icrzuOZk788cRJK45408IpmdGx2xCw5FB2PQRaYIT8ObTcyj7kt9wY+l5tToIH/7ONmSMfbvmsJarW4XWHqkFmHVMRlmDFwgFV3mBkTIPDGm7cuI56xaxrHskMyYH7ZQQ8IjciQxjQJWSYfwP5dmhMWED0+RMNCs0pRxtqtSl2Otz2Llmgef0xNUU/AAFxPi+AgciV5dEuBdHca5HHCMjrkruCsPRZqP8w/H/TxUBqoRWYbbZia1NLcbMfpwjF1r7QyVPiWWhICOlGJkVUgtPzPwglXDNt4AYKqRi8KYUiyyPc9A8XRFF2x2nbXyYPVkX9LcghWsJ7r9Mvp0Zr+A/srxPCgG7R4wRZjFBl5b/b5WilTtWh2/TWn8UyOc5pFAf4NRcK/XrPhhMXp+kicQ2WgeF3rhzGLxkwPvV5C8Nzq2kwGEzX983/CQA6wMjGKZ/+11lgXxta4srmIdbXyzZ8rFq8FbnLDWB8uNol8SVwCPSNKE7k6qyUqyFBkhSZaWpzC1+OXs4EeItCSPLyScr1eK/f309aFvT2In5mZXaOl90UzIWHLmZNNuoOexnBm+tM2vT1nU4RXLJhylTFsAa8l2vqIfgXmjn8Or9g5JNyee8DJ8zBj2qz68wDqzLtpfUnLGZ7YR99SIbW8OPj9yMfwX7VVPU60DfXxlGCTGjII+oNgu+OXcymTw9iCnz8dLND1m0HLhmVvCys7vVsp0I/w8pTLG5amviWalqhhTxy1JcHS9BSNucXYCITV48M1W1zA9OEoFeVoOjoJ5ngH5NhPyyZ5+aLPTGAGtbfSdbpWz4y2rH89oeqcy3O9BXi0Zni9yuOFY6DK68eH/2pYoy42Pur1eq2b30BlT7a8suX7JGNYVm2+gClp2UbaYKnVKVd8jEaSo4VdDMf9UWVdqoRpXpFwzLtDnuhvwSscjvnf9R+/ODpu9/sLkFEz3vlSmd/YmiIjMqRJM6s2tsLq9/q7wSJMocdPWBZcsSQSyyr4fmaKxcw71gEEgiDU0DpjCR3G7bsbhSJjwbDoi3MTMqNY0MZj9M2pHgYrRmQ0GZtb1F7Q0/p3vxf0TN0X/ScZMnsLMRVSEcmuWObXFnynFUtpRhTaRtV6mpRMyilc24LUTmPBlSXKlKmMh5KsUqVoeEmuIMSn8HtiWb9vXM06JM34FY/ZmJmqxyauQ7EMS0KvdQifpjRUxah+lIYew42rXxtnMKweysRbAUymEywUop6jBDQoXVZBB9btRiLMNcprNf10K9habIlZcsUzkejRWt1+PtJaH/lg3bboNJkRV7QSuMSsUIfcZYXgbp9nTI8vn8ESKTZNRfacVufMQHTbwsAV4pSqHAmtSRpxr5BWp3Re27UKH25ftKTwcj3qYL7/ZhuqlPwfhcG8+tvvh2vFYQ9VxxR0tHY0gmUA/qTJJU/G4MheORHXKx2y8oFFPJ+uIDev/MrHkxVYAm2ckauBXlQnPt2IwAmy6qaECMJiLgVTFWNtBD1TvWoGnsaIjXhSLsurRygeLq2Rx0XwBJdEXCcsQu2FJnSMnqj3x59Pz4KP2Rh76JBV+EILT/LltItN/xORdNNMjLhnanndazrkeiK0MODS1tJWgkxYnILcB7+7ZCEwp9ZsQU5o7SsVidcPTjE6lYSGmZCoOF+LLI7msGhyFQUJlyoYiyvwVHSNKAJ2rQsDvEJpx6pmSZaoXbhVb9QwoO6Tph4ICnsIUmgFB/3XY0ezNOMi48osBMnYmGYQY+CJgLtRsKbE62lCN/UtXslvW7093xkJjXMOKh3hb7yv4lJrATEeDnhTg5aI3ljWPak3y7dK235Zas3p+y05dvuIZyQW47HpKkHOTk6JFqZ43xPxMYeT0DbsK7rwOYqwMFdaxyNDntCMaz3mdP3D8Yej8myJiXofigiegQOUxjMJ5ZShULuFUoDf/9Lt2T9sNXe/BxoGxkrscKHf7kAFb3cbDBGBF/oHaI50EcAwZsQJlRMmLb8dHn3uskSfGuUu/FrMuJh103ZAv3kB3V+gOH7pEmbIistmdzuIt1sIiH45kBM62Nq+WHPoHV2ZRaWqCMT1++nWnM32hqm4fpOdMiiWFNiiCenh16k07mi92saBRS5ULAOvndSFaR9hRoSfw5izRBmC3v+uhMawgfVxAxkNy4oXdT25TN88b15TB3P1dP+3tQAj+fQ8klzRbKZPhLCyTUFtsK1CUYHw1gpcPkPo9am3J0Rx4ooWTTQ09x/+dkp8jAlZ1UPZMtbSqOulRBFW7wz65m9e1e/W2odp5f0knShdI8q79XBvaNW/eIt+h/9TdKeUVdTat6c0cD+HjpSLrR42pHQNJ7Vq1SEfv/xSaUsPLShvWGm3V+664s+mE+UHzRRaKvzO2fWCSDx188m7bdzjJLwHns+gB+ViaFc4e0HUX2mvykSoc2hD0wKdqDhvy/YCnzICHX54OKkphdgKIBbJmJkO3hFUtL6iMY8afK6DXre30+1vk97G2/7W2429/9rrvW2f76MRwnuqZWIEvoc22PT3ur1dwKb/drP3drC1GDZeO/ll9wbfdw30bcAQXvCrWs/9KpYLdN/28Anz7GpZmwguwPX4iIsJZ2FxrB8IzU9eQ32v5blnmRHsJm/JYp0XNfy1jZpuDVpfEXhEYN9SkbRrOuX1NSnhemSGKDpesAxKj5cXDYMb2iG0vbW1sePM04h9q0Sai/Ac48uqEejtEZf8rzaLPw9pcFHwv9wFiLeWMqWhNtDIkKu6dj7obe62d7NknMbLbd1rkiRxKntnCkeOY9vm0w1cJiCApGJJ6PuzR+YmG0q4w4qnE5pg190O4cqLDUcrVhlPgwAjKdaKBVx7pCmGjLuhi65+NcJubb1/927vYOfw6N373t5ub++wPzg42G/fl9+6M5Yu6I7LKdOlJu4WCF8i/MEgdHI6ZXAV5BehxyPZul/IfwhyQpMxOchmqRIk5sOMZrOAnDLmblLHXE3yIcQ3jUVMk/H6WKwPYzFcH4t+0N9cl1m4HsIA69qmh/8FY/HzycbGTvdkY6vek0ir5Vvb3QXEsG3A/STmpnT25rye6fdvee/wewpz8u7WpIX7OZiTVdFjHTV688y1J0/Pfil00A45+aXU39+zN9GXD9blg632szElS0gvisVT25LzNmVp4e6D1DMwHCs4tkbjlRqBtjH+UjUdL5sIPeCgetTYbOMmoLt65rdkyOBqmybhRGT4sRvaiEdzn/MOnymB8N9h7APbecmcSfp1dz9hrxbgJjSOTXNLcD9rUBs95pASNRFSeYIa6URj7ppXplRN7MPegw0A6n+HLM1YCLcWXbg5KF6Eaxr4xMvZUTSx6Vkl+DR+geJT9pfNv58PHkbBVx6e8jHGZZqrg9LoSJHSsAI2i/kKP5w38c0c1N36QNgNhAKM8wwWBSdrwq8F6fUK+c/diBYMetc1vXFkTVyt7jMZ8EQqz4l6K43ALYHvEvsu4ZHdFmEs8qjYAQf6o40jyMiUKRpRRZs3xQfzKwaDhKVXIeCwsEdoFJ3DA+d2SP1kyKTEYDN/j5Qwh5cCPqVjr+7tvLspv97JlHfpMIz6g41GyVKwzrEemxwfukBHRMTSyjDOz2RfryE8JOLIZ2ELqsYsQHgtFW6Fdx57NA5zI4t4s1vQz1sQ7GYAHBHcSAvDUBJb94Si7Xbx4JjScMITdu7lct8VDDOUnxbeFgo/Puzck5J3BWXeeG3hSTMBEvbeDGIGWpw/MjYudNW7zl4apHFmK+YiEV7CPjJy7tB+bhAK+BvoUfq8j2MGzb9ByOFvWmLJicjUOZ40hX5k1Qucr+tk3Bw1wIHVhgrF3Xx5sJK4xHMQqoO5H5vI6JGy+ZVGcs6ZSkvQxWcDme5t6QVnrbzZbtK7T2daxJKfydnHw49vya/iWitSU5piNYW/12ApqTTkZrWGzD+fiDujEITA8rTWNH6axzaGz3+1z9SGPk5Gwuduc/hBO1Qr6TyG1t83srM5HY8OTv18bduzUwYslMFsGgfmOUwgpBn6mhORdIs3K3WIxbxGna12xvylLNXYs0MMhYgZTVoux6igFaQyFWxSn1fIYJjzuD5lnQOc9rLS3z3s9/ZW2oHz8ZTADH6EUTMgoYhY4765CRapMqbCSXtg7CxYLDSZOY69zIcsS5iC4AnDof/wv2sYt/jdaaNl1bIYlPj8ebN8Ll66VUaXgL4rN1bXIhVRswBbSCx4tEkFuuLqy66nyhtOg7vO9ElE5MvxYfNEPK3NU/qq/RTHn+ozgCMjpeHDka0YsT6ZiGrH0z0nsyWx5kxWMR3vP6EdsClPX8/4//7P/5WmBlYdJHPa/O3e55r38/mUpilPxubZlb+1FCoeTuYcntK0DjIUNkXP5LOD24OtGXjJYkgven6gO8iaAc9YGvOQynLFVHJv7i3GnbNpIpbGYjatOFLuP3Ex7pyJwcU6yuMHR9kbeM7Ut+i/d53YDWvucyI+gjxVhT2XbaP5ovJolieKT9maPdrNKVqc65/cFw0QmB+LE925U5pO4GJs8kDHL/vW1nQwcwdFfPwN5kN1GnGdsKw2kQ9gbYUsZeDVskJXvFFFizTlg9/GGOQmL3wjbK2KM5ehqTDpveFpqtVQnbNUPKE8a+NPicimlaiURvRblly2/wpXJBTF/8nulH+LWFxy2qW5EhGXkPxWbJv/gb+SQ/PLjPjPEc8jeKtDtmEoX282cLgh511VmOcC9FiXc91u24utfPf2kscEsoiRA80rHNcMTWv/VStAjmg4MWWUJ7RUpMAE9YU0IUNGGFeTYi0iEuVYEUXRTOWp5QkciEOd9ynWR3D3EpADktKMTpnSKGcmZxLWmikwybEDPnyhP3ZMEj6ABplWNNZDKImRTcef8AkjsAiPOpAeA0mUJZAg5UpJoEwzcU32SJqJKA/bGuGtSAxBdu6sMRNoM9FhfRNAS2C+EkBvpKusuOrBtHYLUF7S/oPBhKO6mApHMo+zpD6EoeIlT5ohzLM5iW13h+vL5xMyEdcYLYaAmF0BMN60hGGesbb7teyOmQPPHxMGG7GgyTWVbpMZpxbN1USfV7amUUYSoZxHonoD7GrgtLgDXvD6t0QVk5TIVDAVUR7fcrFbLd2A72CmmQ24jeql8m++sC1NfJvb3gB7+x10DVT77g3QzpksZRkX5RgCSLv3HObNd8F5BpornITGwwnyFsYrqvbgOvGETHkcc8lCkdTuiU31/appPmfmX4VUZezRkUquoeoRZkZjOf9i91Zm9G6XTCGBOTecjlDy9hWxme0o88l+fE1nEhIflSArkQhXqnhDda8oGGV0rF8815zTVmJATV9RLiJmBoSYGuIGq07nxfi0mgVG8wlupzFk/un/BwAA//9h/Fuy" + return "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" } diff --git a/packetbeat/include/fields.go b/packetbeat/include/fields.go index d114451345a..bb474be4c4a 100644 --- a/packetbeat/include/fields.go +++ b/packetbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/winlogbeat/include/fields.go b/winlogbeat/include/fields.go index e888326abec..b40185bdf54 100644 --- a/winlogbeat/include/fields.go +++ b/winlogbeat/include/fields.go @@ -32,5 +32,5 @@ func init() { // AssetBuildFieldsFieldsCommonYml returns asset data. // This is the base64 encoded zlib format compressed contents of build/fields/fields.common.yml. func AssetBuildFieldsFieldsCommonYml() string { - return "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" + return "eJzsvft7GzeyKPh7/gqsZr+VlEO2SL0sa+/sXkWSE33HD40lT+Yknk8Eu0ESoybQAdCSmbPnf98PVQAa/ZBMyaJjZ3xvjociu4GqQqFQVajHX8jPR29fn73+8f8gJ5IIaQjLuCFmxjWZ8JyRjCuWmnzRI9yQW6rJlAmmqGEZGS+ImTFyenxBCiX/xVLT++4vZEw1y4gU8P0NU5pLQQ6SQTLoZ+wm+e4v5DxnVDNywzU3ZGZMoQ+3tqbczMpxksr5FsupNjzdYqkmRhJdTqdMG5LOqJgy+MoOPeEsz3Ty3Xd9cs0Wh4Sl+jtCDDc5O7QPfEdIxnSqeGG4FPAVeeHeIe7tw+8I6RNB5+yQrP9vw+dMGzov1r8jhJCc3bD8kKRSMfhbsd9Krlh2SIwq8SuzKNghyajBP2vzrZ9Qw7bsmOR2xgSQit0wYYhUfMqFJWHyHbxHyKWlN9fwUBbeYx+Moqkl9UTJeTVCz07MU5rnC6JYoZhmwnAxhYnciNV0nYumZalSFuY/m0Qv4G9kRjUR0kObk0CeHrLHDc1LBkAHYApZlLmdxg3rJptwpQ283wBLsZTxmwqqghcs56KC662jOa4XmUhFaJ7jCDrBdWIf6Lywi76+PRju9wd7/e2dy8HB4WDvcGc3Odjb+WXdrc6Elrm5gqHCIvrlz+mY5bpz4XGV5dhyOHyBH6/w+2u2uJUq62CA41IbObcPbCGtCsqVDrgdU0HGjJR2uxhJaJaROTOUcDGRak7tIPZ7hyu5mMkyz2CLplIYygURTNslRXCAre3/O8pzXBtNqGJEG2kJSLWHNABw6gk3ymR6zdSIUJGR0fWBHjlytCj832u0KHKeAnRrh2RtImV/TNVaj6wxcWO/KZTMyhR+/59lCD9nWtMpu4fyc2rS2ZUU+eLKsA+mg9IvpCK5nDpaASu5YR3jOIrhT/ZJ93OPyMLwOf89sKxlsRvObu124oJQeNp+wVQgnJ1OG1WmprSkzeVUk1tuZrI0hIpqx9Rg6BFpZkw5yUNSXP1UipQaJqJNY6QFYk4omZVzKvqK0YyOc0Z0OZ9TtSAy2qzxDp6XueFFHnDXhH3g2kqLGVtUE87HXLCMcGEkkSI83Vzrn1ieS/KzVHm2xCoaOr1v88SbhE+FVOyKjuUNOyTDwfZue0Vfcm0snu49HXaJoVPCaDrz2NfZ89eY+5Alt9f+uQwX0ikTyFnuBDkKX0yVLItDst3Bd5czhm+GVXU708lxSujYMgVK3Im5tRvSympjz9OJWzoqFnaNqN3YeW63co9kzOAHqYgca6Zu7HIie0vLljNpV1YqYug102TOqC4Vm9sH3LDhseaG14SLNC8zRn5g1IoWwFWTOV0QmmtJVCns225epRM4PAHR5HuHqhtSz6w8HrNK9MNOsPBTnmvPq0gkVQph95VEAlnYIvyUG/J2xlR8UMxoUTDLsRZZ2NkBVThELAGE496JlEZIY3nBI3tIznC61CodcoJIwz63G7dXwZdYViBO8RkzapJovx+dvwIVyB3SdYTcitOi2LKo8JQlpOKNWKBnknnSgSQHnYbwCXIL18Qe5cTMlCynM/JbyUo7vl5ow+aa5Pyakf+kk2vaI29ZxpE/CiVTpjUXU78o7nFdpjMr+F/KqTZUzwjiQS6A3I5kuEGBye/ZJ7HGVO2accnzLPHyzs3elABdMuBOKdDcYacfDBOZ1RDsVDVSThw/4Np5Hne6FIp9q1QJN4CRYXdSsegYD3YgxYVAFSgMaXdGoeQNz1jP6kS6YCmf8JTg26B7cR00REfZSDLNmVE8tTwVVOJnyX4yIBt0nu3vbvZIzsfwM3796z7d3mEHk4PJzmCyNxgMx3Rnd5ftsr3d7CB7no4PttPxcPAsDSBafAzZHmwP+oPt/mCPbO8cDgeHwwH5j8FgMCDvLo//GShcW+EJzTWrLSsrZmzOFM2veFZfVOaW4wkW1s9BeGYl4oQzhdKCa7dvNvgEDig4xfRmc4m5VYbUHBRPbxvQVEltF0Ibqqz4HJeGjJBDeDaC7Wc3XnuFDuiuJfSkRogm+k/D0+8E/81qzg/HO2hsViKhHIP3bkE1HDMCUot3MKBDL6uhZ/9dBYJO8QVxGh8ArRXUhOJTePqhhjLlNww0Xyrca/i0+3nG8mJS5lZmWgngMAwDm1tJXjj5TbjQhorUacKN40fbieEMskzitC1SaVusoAokQxibayIYy9C8vZ3xdNaeKgjyVM7tZNZyi/A+m1j54Q8aQBVPIP+VnBgmSM4mhrB5YRbtpZxIWVtFu1CrWMXLRXHP8vnDzU5AaH5LF5poY/8NtLXWhJ551sRldYYevmuVuqQijQhHdKBq9SyyuJtozKpHQGPhk9rCVyvWZIDa4s9pOrPWZpvE8Tiezk5wr4DUf3dHQp3YDZj2wYWi0u1Ya9U1lbU0Usi5LDW5AA3gI+rrkSC0egWVBrJxdLGJG9Mpow6wVArBwBdxJgxTghlyrqSRqfTn/sbZ+SZRsoTTsFBswj8wTUqRMTyn7emrZG4Hs9JNKjKXihHBzK1U10QWTFEjldVvvfuAzWg+sS9QYtWbnBGazbng2tideeN1aTtWJueoeFNDnEcEkZjPpeiRNGdU5YvqBAQbKEArc54uwL6YMVAZLILJJ+tHopyPg1573xGay6C81ZbIHRU4DqF5LlPQsR2kreVzamf4OmwEt7puoI2ji9ebpITB80V1Emm0rcKS4F45q9EjYsnh3nD/eQ1hqaZU8N9BbCbt4+VT1Aewbq9iKkci0LsFyL1Og47lq5SfBuXfRJjALC3sf5TScuTLl8fRjkxz3jAkj6tv7rEkj9ybdut57qTasSM33O4M3Ah+cdyGdJqwBw4tRMWmVGVgOVjDQArdi55Hq2HM0bXLpaA5meTyliiWWmO75ue4PD53o+I5VYHZgs1+YR+PIIPtqJkI9qJ95uK/XpOCptfMbOjNBGZB10jhBEprKnRfWkWvNqk3dBVo3kxbOJwp5qlkFBWaAjAJuZBzFoyjUqORaZiakzXvk5VqrXLDKDbxssuBIhoIatxw7mfnBMCVHbNgBIMTICKA24wWLDH1y1xNEcOPbg7HRH4Ce5aVurQEcaNW1jcXFrx/lQIXAIxxNK+9x7xjsIq+QprWkFbNwvXqwz72LsngyMTxtvw8wSUNmwcVN5plRLM5FYancBKwD8bpeOwDau89VKm8HNBB0zOS3HCLLv+dVZ4ViyhTYM9pbkrqluNsQhayVGGOCc1zz3z+fLAydCrVomcf9SqKNjzPCRO6VE4fdX5wq8ZkTBvLHpaklmATnudBjNGiULJQnBqWL57AqqZZppjWq7K8YBega8XxnJvQaUlB/MzHfFrKUucL5HJ4JwjSW0suLecM7gVIzjU4P8/Oe9aIxtNYKkLtMfOBaGn5JyHkvyqKB62x0qFwfyh662Hy+2GUuC9GSLK6LioIN5GqmZXoo8aDcpTwYmRBGSUI1qhHMlYwkTljADV5KSogwM/jVrLStZJ/u+Oc6uTf9kSPvFwLw/RH1P5oxdEnVH+tBsgP9gd09IV7PbcTHSOgIG0v0MFuDTBk55XYflbK4h6OrXgHpWPOhjWPd1xzurBbED3P8LKVB5PSHi6/WRk+4SyLxwZlhArUAOxLYVRB0YIGeuJWqObImLIGQCBguHTxd6wARZa5y9MwKBOKp7O5PVW7LOvE/ZGk7h1P6ymTScrN4mpFTpNja8d0cuUrazcx516tgSOF4YIJc5XKbBUwXd7Kfs6MYfY4zVj9rjnMvq674X599N1HNmg3Misi8OuYj/1kbaClMjNyNGeKp7QDyFIYtbjiWq6K5sc4BTm7eANEb0F4fHQnWKtiTQdS5yofU0GzNqXgZPu4t2TK5FUheVAr6peAUky5KTNUwXJq4I8WBOv/TdZyuI3uP9tJ9oe7BzuDHlnLqVk7JLt7yd5g7/nwgPzPegvIpz3OGk5ezVTfq1LRT2jEefL0iHNyoWItJ2SqqChzqrhZxDrRgqRWNwNLIhK8x17lCS5E5HCuUElOmT3snT01yaVUTmfogctsxitrpVIuELycFLOF5vaDv7FMvYzSEQivpYkiQOCelqNjaQ66zZRJj21b4o6lNlL0s7S1NoXUhuar2mXr5zA8ijWqtUx5dXeJMQIO5ArRv7uYikrbd1dQ4bopXKCOGbkW8lZY244SiwpMJBX55eycRDgRYG1QpW+oWpBbnlkNDk41t6vx4go+tun3fHewO3iImFVsyqVYpQB7CzPcJ7/6fzu+C64VSTAHU6cA+1vJxqzNf9aq+b2yCZ70WJ0xDIb6HfygkxrD9cKt7dnR66PouU7g3UG1daSmcCzTrR9KJqS+OuIqUj4/whi8+AiW4YEaHmfnwUqr64cbZ+c3u5bbz85v9jeT2lxzmq5iP786Ou4GpnFpIaQJt8dz6hTwty+OybPB7jbcv2O0IcsOyak1nmRqmCEb4BDgukcO+mNeqahWx9/Eq1+nGrlgtltJfi2LgqmUavZPMmMfaMZSPqc5yfiUG7j7sWqU8VptGNOBjxNbASJIKTSfuqAdNmUqIRdlCnf+N+5BF+uFd1YIAw0jzhbFjHVI38GgPxj0907h353+9k5tpQQ1SZMzOs/Hbu5Yv1RUaPQgnZ1brJw/BQNEXx9dBuck2WDJNHF+dyuVK5cpQU+cd8nXLoHDoRP544hRFC5qxJTkkmZkTHMqUjgDJ1yxW5rn6P9UsrRHY8PKt0gXUpmHGfne5NNG8W7LP6aGHf9roQf6/R5g/dawPse3H2XrbtfhaK3JMib43etx7tYgFhTxfPY80oYpll11WdlPpydaoTTj0xnTJprU0wjn7gEiRcEyD7Iux/hTtP4vqttw1Pei4Zy9bfWVtYaVu2bF11r8Rbdh767fM2aYmoNWWyiWcm31FVCbKPoAIUYJgnnLcc5TosvJhH8II8IzGzNjisOtLXwEn0ikmm4m5FItQCxKVLQ+cKtFopI1XhDN50W+IIZeV+uKPsOcagNiFyNXUacS0hBwfd2yPAfsL1+eVHFRa6lMyuu1tmC8ywkQyL5KbgiTANMHk+EeF4qP54tU+Dz3rAL6OmEfUlaYKuwOXqvuZlvsnsB9PCUFVYZHFw2kBQEID45z2f9zv6M2U9k1YICUdk3szCkV1U0DqfNVL6JAiNttITRmubztZvPuPVHfNzFt125vbxNGtUnmCzcCMgbuDKrNWhSlgEC4UWZUV2G3gCuoH2GaSptb0+V4O9HleFjbfL0aE1fgoUHhXNo+bq0aY62He05IK+B5DpfYTHHZEfpjEVhWEzSyuAI0PoPUY5OJPaRumJ3VMYrDfoNdvjzZ7KExFSypiu6BaCg6ev46EoSAZVnPK9EmSdoCsjlvGDYKLLKrBHzwdUtGkIp3CcVqJZYTj/B9jW9KzVSyWpaJ/Xd4cy0V3gfbyTFkZc7gPkRO7joWqSAvT47OIRAWMT4JQ8W8st7Gjs0pz1eE3DuLAUzgjZikDYCVnh0G8ld0A2PRXNfVMQBOKHpDeU7HeYdxm4+ZMuSUC22YY6waReB69Q9jO5h99XyHSK4sELcdjOrjqhE/Hy8HVz5bRU6NVa472BPhXKFLNV4JnKwNxIzq2ao4wVEKpI2dBx1zSjFr1bUi06kTS4JQIcUiTjFC+yRilXeauYjWEWDBM7yvhj8sdqOgAqRSTHCtaF6bk4qsQ6uCCMsOplpJYPMdcc1IstbuvugP+3v97WF/e7C9u737fLj97OBZf3v/+fbu9vPdwW5/e2dv+Hxv/9nBfn84GAzaSDyds/Azy8GLmbU+0V0PWShc3EsqmrA7ZaCSefNy+slY/kgpCulmwMowk7+vAL9kPRGtAfT6r2vXfEwFvYKYzbUeWVMMtG4xvbID+sSsO+lWxdTJEgEPIXX+i7sj6jDVl+DuDBEWMBQYLGKiaMjhq9BAPxrGbntnAkRwkzuziybkVZXdwXUcZk4FOT3eRovLbtAJM+mMabibiUYn3GiX0FUBaTd3PW+xllDGdQhfroPgxlWlcJliis2lCcHORJZG84xFMzUhQ5gocalMHiHPOqJ61d0r1VMscdBqIMjZcpN7h48dlusKVEewKB/aA+ei1FxYgWb5pO/SXtF6hadcClLyPYpB+MpQNWUm+Z4QI2vMPfbBApg9Z5/yMK2v64j6XrR6jF1EmZxYItRYRCpL1qm0WLhQRN0jiukC9ep8kZCf5C27YSoimWZGkw4E3KANNOalNdulcVmjE7hpC/dVSkrjQA+DE+e0hlPACwNZUaHigAg1iENKTUnzsFCO0pimh7didoE8A/vZGojYFbMiMuQ4OzLGk3kyBqJV9PSpvNInXsVRHgZDW8OatRcNw0U8bHdQdAkIW8tawXYHRdsc1QHdEwQJpnApuDrFcL3ag24uYPM4iIpnIS/XHfoLkvHJhKnYXQ23xxyyTq2qbI/avmGCCkOYuOFKinn9nqaSrUc/X4TJedbzAVog/8mbtz+SswwzZCF4qGzqH23LdX9//9mzZwcHB8+fP+8k5ypDAtoE9SoAzTnV99Ay0DDQ6NNoicZXi5oZ10VOF7EpEvuRsCxHP2M3y7qTnG3Hc24WV+3b1KdTVKJ58LaU+7BOOCnxbFUMb1yAZapTiLgozJYGU+o+o9r0h/XbYZ9TtLqtd+Zzyc5OvEgGFcIf+E1AeX+4vbNrVeXnAzpOMzYZdEO8Qu4OMMfxgm2oo2tg+LKdvPZkEL3yOkeUx3YvGc12MmcZL+s+f3egfZO3TyJvlxAaDYJ/k8hPKZE9cf9Mgnl5tL8e0f0InP544b480F+++F8eF1f77LOcDG6uWOZ2SZaaHDkP7/TI0e+lYtE3HZUqFn03ySPJ8HnktScERsUtSwKUsnUidIvW+YI8mgzWWl0mS+iTo9g9JWDCxCMfF/+it7pHqMW3R6ZpUd02S4VxaDSXKaOi7XK8XTp60CGOEZwrQtsFcD7p4fFA/Hxhn8/D3x4RXxYiLmOTcW24mJZcz/xzuuGkg+pPlbLir22wTBloKp5teoRNQRM5Pd4mN5q8pPNxRnvkx+Nz8uPxKbmpNJyjoiCnYspF2EN/f2Vfsd+7kkJdO5EWBWHuNfvZgdxzmKpS9MiEqik1rEdymL69H/H7ZZfs310k/7vL4j+ZEI6DEr8+ERuC574J0K9GgDof+Tenx+dyejQI/s3p8ZROD0/cfzOnh0P7T+X0aOL0VTg9HNB/CqeHw+XfXcNukOHfVdGuyPBn0reXR/zr1MiXx++bzv6l6+whSE5m7ErzqaCm9KXXXbSczBi5qP1yd9jc5Yxp1qxmXoszhfizMRdULTB9PkyqP71gYsanTJsrmk+l4mY2XyXPzaieQf01P1nQfC1GmKiBlbXvTvuocWWgAzb8oNhAhWvikndDohBUzApD+o4clunhSQUFaV3mSMXPSJsK3Da/6Bnd3ttfdotjeeE6hVsBtGMpc0ZFFxF/wJ8gDJoWEEbJsVKno4NF3WVFt6NDLRt8JP4zch3wqd3nKyxHbRkiClxelhN4h7nkKsH7LhlkTkU5oa5XxHhhKeRbAdwwkUmVRGOyqnK5Yjm7oZgoe1RYvvn+zQUErHVl5MwTOydLPhSpPY4/LJamraGmXFmxuaMs467EZFuKwHnOlMF0QeZA6abxpMx9zf4plB9Si8LIqaLFjKeEKSWVrsIh41FvaM6zuJyKVFYIaePnIy8ZvWGkFFEVxYlPzIdXq1e8FlKNH4a9tbazSGcsve4qAX/69u2bt1fvXl++fXdxeXpy9fbNm8ul16jEjjMrKo9xgcPXS3150R60uqogFU+VtDxMjqUqZK1I9scVC0bnK97Hdoqn3MwwnlRut7pyxH4Lu4YjUbxp5Rx52B4+/dtP//jl4NXB0d+XpqXvyLQENbOKVWsUO7FbhIqM1DtV1U/2Rg8pKOwNZ1pbrm8Ptof9gf3vcrh9OBwc7gx+WVrOwx5jyzDHPefS+oWR9hCGpYv2ecfeJemsni/8d7vhMby4ev2u93xQeirnvt5kD0k549XxXsvk9eHGlaSxp7+UuXbtJ1y4OAExgnoBCqkWuzzsBAVJ9ol07T7wMTEOrKr60X/DFOaJ0ynlIqrrZ98ICqRV8WNPYacspjXif0TQLkOYSmsGDdfJuKAwx1/eU7Q5PFgvzOtK5raaeUW9gFz/EAdkgCJE7JvQog3D5KvI8e+8wIr09BnLiygVDVIvsKpIGFm7pA6xsLaH3etPEIOeFmVShuZd9zOWTmnOsqtJLmlnsbf1c6ZSq+Yen79DGqLRy7Xr8sF/r/rEubqncgJP2zMwKn0gMsINUdgQBLAeWJYdJuQipZApb7UxqewpMhgE/tH441X847K7K+P6OlGMZklHrdAHVYiF80vavVThCGOSjSktp2wTGlQQjeV/sCbEBp1OFZtGLcRcWhHNcwBNbxLNRcqqdHDsRxOV+F/alwmo3ipu2GfA1c5jmPgD0V1lomS17XlWj47mczpdqdMl9qjBZCHDCQGyIhY7Cnla1UEzdLoiyCqZ6uCi00YyfNSp8f7po46N9/RsbHr9YVbX/rA275zNpVo8ncB7BeMRGI8UKP3sx+UFWGD/JxNkK2S5amFFqGQXpsUK1QmbQu2DpxAsd4kUKEVlz2F7IOd5KI4NFbUmNG07Zqpd8WRSxePLxeoQDr1VPeZ/JMJO51gRa73F0cmcCjpF3Z3rCo2WkYLtTiM10GpMV9ooRuexInhiFamL6uuPdIKMRvGamaHXDAvScIGF9b1pIditazVXjR9KXut0xqIrnjPR9Ur94aqQYKhWET0aHLrQ/NMTXDbLxvrMz/hVlxQ5kXkuoSvqnArB1CEZ/XeEMFxq/k+/9pX9rJlpfAvlmwqasv8ZVcoshw6WLs856pAK9lKofTCj0A5ZeWNJOQ8NodpX/anoyMDgizDRCXklVaMrh2MVrOAzkaVwWaBch87UUB0Kgw6SVG6NczndoqLPhQm9RvtG9s2M9UNsAjW0j7P2cZX6uEq/2rcdjIXU5p9hjY8EOcW3NaMqndXWIJVCc0g+rfdOGtP0GvtPZjxlGq3PcGFQZxWoVjvXtfJIjfddbV9yUjJkDtxFN0xAZdL2uBqzkqFMEzKIHYp98KypmLYSw2BrjlpFlE7eZ9rVsAgdSkfvRz0y2rL/fG//+X/tP2v2n/9l//l/7D//n/2HjMgGsFXFJpse4lFvBBdlo7+MEt99XDPcMnWiQ8cXZoUe1PConJd3MMO05BnbYsL3LMdhtsIwW2mpFBNmy1G4nypGDesDlZKZmed/afxCC94vqJn1C6roXP8ak/CfT2CzuU25hCS2TGeoMFf3aEtrlcfa7qGowaaZoaSjhsyhQ61mQjPvhnOutffh6HkfmbteeCXvRatj7UhMufiQULAH7LoXSs6ZmbES/mIig3Lio3hkZlJkvhrnAmgQ03XLwZQ22C0Svs+wF/6M3jBPMaKZiUe9ZaGFEIrd92vgIePp+7VQQ8e/C08kZISlMty3I+cVikeFGcN1EA5MNRl1yNVR8l78wBYSHE4NRo6H7DgyUmu/KU4tkiwjcLxiYYJRgA3nnlEdbYN42JgxD98LQr4nr3yJAs8Ho/4If3ktQXdBD4ewKmkkzdea53O8xg/RXGH/PxVnH2HVE1/CPYyfgPEEH4PDx3UpoiABYV9yMY2J5U6i5L14RQVUSVea0Nza8gsf7shc4XYvjLGzJ114nyJyU23LdOkBQt76e243xphpQwpLbJ4yLEnuyJkQC048JEIGdeK8By6ucA4XLCP39ihx7SyRVZz7HLokQ9eleFx70kAznvDu3cxbP0PqvBqP6dh2FJYmZlrQZir5fQ+3xkN+IuNW3ceXZdslY8GW4dj1I0HkDVOWhCB7FwWrCSLHL3H7ADyd8gWyLsviMJq1XE71GjDfGmr+ei0hPzPCPhQsxe5d9uCnWUbWjLL7Ya3mhVvTC2FmzK7rWtXXjCoyKU2pOuKP7ITL+W2jflw1hb3x9T0Ke/RopXCiU7upIDJvS9U78AXosX3ZFpZKTuquWbgiqjqpYWGdWnO3nquxbDUU76uASGPXogs50i5o1FOddja48wvbgVvUMu5jzeLwHHbN4ip3813t0KIJQE3NoBIrapea5VzUGsFizy836tg3UgMfv6hjrO+a0JOhTky/XeJ+f2dRfSrk1TC2vx50d/T1+vUAb9ySHkpfwQEpup/zVAhYYhOIQOmvqitcrdndUq3hwrbHAZ6qNVwYFlrE4U781hruW2u4f6/WcPF29DXzQTJ+ef3hYlC/NYl7erp/axL3rUnctyZx35rEfWsS961J3Lcmcd+axH2VTeJiJfHL6BQXQfStXdwX0C6OF+Awj/jkIz3SWK05WqH4jRW8J69+2exqj1ZVTv6iOsRBS7Io8NNhCuGgFW2MtItlKXHCIDXv6TFcRc+3Bxixn6/xW23fky+o+1vN3fmtBdy3FnDfWsB9awH3rQXctxZw31rAfWsB91XftHxrAfetBdy3FnDfWsB9awH3rQXcA1rAZTmeuz7O6+VL+PP+hIxlCtmAyz3nY0UVZ5pkC0Hn6ETxBJU0Q0+a9HUD4GbD/QzhnLJgyvWkAhmpMY7cSoc1PaPQz702zxoqhVVtFzBovCEw9mkJzgJgBsfTLsY02FI+JePQQ/M9OUEE+jkX126+BdkYJVmejzZJKudzSKkAB5EU5GcuMnmrq/cvENw3WBBiY5Ro2fXeO8E/9EGZbeHegqUGxiLn464B5zR9c/EEGcm1KkjJt3JCn6+cUIP0X1F1oQbk34oNra7YUJPU32oPffG1h5pL9ucpRdTA7FtloqerTNQk7Z+tUFETv291i1ZUt6hB6G9ljO6gk9U+k3m2tyLp9epkD6d4EDx6RocrAujip6Ph4yCqVNoVwLS9t/84qPbctfdKoNobbj8GKp0xtozEfhRUFyenp+cPg2pFKkfNv+ts1eYBjEdKni/InBa6q3ICGGdQf1hftzfzNVOC5TvbiXdkLIFuQc2qHJkvyjxHiO0kLdwbwB8fvnd+gvcXYOPvbL9/FEIsgdxEw9JQiXgFdWbO35F4Gt+Q2/u0LdotFD/s7z4AC3twUrFYEQKYhANxpzBNi816Pr83I9TAUzxnfajp9qT6ccGSCLBVY9sIf34Esuc0jhH/OHJ2+KsbpvRnwM5N80jM9pOd5Pn+YJAMn+0O9x6AIp8Xq7wPOcJbkFBIrJDKuBY856e408iRIA4K0u9DoAg8RiK4iP3FXaF7O2fCxZSpQnHhqo1DztoNE4RODFNEMaSYy9/07XmsvtgHPCs9TVGhg/mvscSCTKEyR9ZzKX63GGUBmbxYW8UoWlX/sNBjanRdx1MCH6amViFkwhVjCxAUWC/GzBSjpq+YKxCyPRjubg2GW0ZhBZb+nObWaOsjcfrOmQgVQjoCMdP9g8FOusueb28P7YcspXvP93cozXb2s2zyAAbxGVFXsBlWeHUXdsKnSLOL86Oz15fJ6T9OH4Cis4NXjZeb5lPwWwvi+v2Ho1PvnIfPb4KbHY/gtfsJEO5NBBp0/t7k9QX8ec+9yQu8MXEJH3bCk9cX5LeSwQaE+kJC3zJVbQT7O9z/hPRnxmEvhiBncNuKac7CWAtSKC7hhmTKDODlhnWDbowyoaGo1CE8P9okeH4v/CTx6BBO4BPx8R7U3fiYkJyM04bcfo2xL7QWV+ZgQJv2lqETBdcuZHHAOG0o8dXR5lNketcosXSFw1YxCAp3d1EBASrcGxjyQ9OZm4torOdGFDOlEtE1tb9NaHa6uJwxAjEL12zh6FUlWfuFQfpr5mat55CPF+T0+KJyR79lqVSZGwtkNEjW2HM7r9DBH/3kgtzat06PL9zwzdwju8aW97AMBgQeQ0g9w6KhtYIP9jnP4+TIkDkXfF7Oe+7LMK5HCkpgRfyGNXRGFjgoQdBCg+sq4qVnDYowJIQSpnCgcvDMWYyoJoXUmo8xiiSDghtWL4zKm/hyczJi4xagVJO01Eb6cnDNLHaHc5rTlZUZwF4vFFMvwoL4Sn1V7TXf3waOedX23p297gTdjrYqXcdX+ItFI8ae+kD2+uZgFPac9Bl0+GrBRKZ9RA1UaAFp5UkSD+hxbx3/w0Hi/+ukwiozFpuJ30bGzYkaoJOCKYjdjWhzBm4wcEPKCTl+ffTqlECNIlcvTuY3ViuLhNP6usYaP6NIxJio6IQUDKUGhOLoQloSh+uYaBDYlwk5C7JKSOOjJptj+kzx0W8l06HCwcgeOyyq6BEtC4QQ3xE17pfGmGXiB+8tmMwh2NswdQP3WlZ0A8JAgc5V8O5ems5iyc4mIJhq1TG4TqnKWJaQX5iSvhrQHNylMxf3gTK0IuC4ohpO0VGXoJtRV9gI73JWNcF7pIwB3qzBPWM0Y+pqktPp6i4tfcDNNnFZ9VZM4swEZq71mypYamplmw7J0VGPXB73yNuTHnl71CNHJz1yfNIjJ286nMy/rr09WeuRtbdHPhbnrsrXT7o0FidMM4qvw6h2oQ1O6yiUnCo6R9YLtzqVYQepBkxhDZp4IKhbWfCqfAqKBd1hWW8Ph/U2xbLoSHp9cuRd2IwUeIGFChR2BXBXQNdcQK4P6q01VZaQOdOaTlkSB5BwDaFCjnZOgBl/LYjDoGoMlIGIpnjMO2n0t3enb/+rRqMgEz+brqCcdojnBJojH1ULaqJ7lSciHIUN0OITLziLXalMn9IipOiDi8OqgnF92w3MbdnZhronFgIy3N7fjFNFpK69UQnxOLeUasJ0Sgu7p6hmZDjwOaGabLw/OTnZrBTwH2h6TXRO9cwZer+VEqrRhJHdUAm5pGPdIylVitMpc1aDKz+b86ha0oSxLB4Bqskql8f43vTIe4VvvRfAf8zdIz7sdA3r/Ifn7X3L1fuScvUCX3zmpD1ecyo4DO/LtGsJi68ot+z29rab6N8SyVAEfkske1giWcVAn8c8cFbS/ZrF0dFRvaSSN1WvPqXmwVHLQ5fn5OzcKnIMGv+OYs/GqOFi8D+OvKfP8Q6fTHha5uBAKjXrkTFLaamDV/qGKs7MwptGMafOqdHWJIyKeSfk9IOB4sEBvqgqpAfUzJhiWOBX6CQizqjSWaEMODfBmwXhbFDq18zYHKqZREOjXoAvwe+Mag5B9WHEG65LaAzl1BWr4U6k6jRzIqeJtXeqP4dNw8frwZ/DDPBzdVfBef0GAjdr0K1wU6zHuyJ49X2QVNZzFIZKfJbx6sfWQpYqKuIe3QpA8NiU3zBtH4rvE3rwRRxjhlXww7iZ0GGUCcLWvBhYFooKAO/ld3cANSAa80vhi6IWTDn8N2SBXtd8YYfQUoYTxdlquC02E3IkMkKdhyaM2arrazfV3bcT3o9vrTgnDFr8HRy+obdvWrv3OT3+2L3PK2ZoP3ZS+xZ1zgv96a2dOy/aowAexX4ruWLxMJ/EzKfHF+HWHQ62QHfsg2FkQkYs1Yl7aIR5nB6MSiqCqgSyqNQGuybDFXfuykjGDpmfZ0zgWsLCpkrqSIPzld37fec0dRcaFiAIA875dGbyRZWlUXl6Kmzg/Sg/KGcGW6VPlbvhptm/LKi+zko6Y3PaoD+pZW51sNQwGSSDmKPySY2jXr4gP4FT6iOM1ZmH9ZKL8gM5/cDSEk3fl1xcw4cXWGdp4/Tli03ooAhl8z+Z+T5D3NErms6g2HUce+SIbKnVHXd0sN9fPvRovDDsSqpsqULDj8Hhh4VhRLPfSmiBIid3A/6SG5MzcioyTpcPuC/KqxWeX8fn78LxdS/Vz4RhS0etwYnApbiKAtMfE7/utChobMlEpQSFEkkW1HVdMT05s+KCGpcAFjYuN3F7PuVDCjK42LCKm68uOKHX6Et1wSWIilR66YhL9gEiepbAepJTY1h1c1yv0ckxGh2HYxlhOZuHtEcMPV8UbHm40B2e0DFfcfzW3+thW5ajjqJsqx8w/PvMt1IjG0c/nG0+FI1VOlFRRtcvGJv7Ylk4V3i7Cp3W8CiIgHTzPhBMJoxaxPVin6xEmyNmNcGnUtQ1pVwtD6+vDT4MsSVRuNX0AFcH/9Ig6ys65isC9eN7y1McNYg3Fw+l+AqPH8cd951Ay0L52YXaA3eai/R8qnMBh3uCc8GFMS0DmGBRxtajQqd8zFRrrcNJbe3pT4mP0uW4j9psGBK8yIJRMyMjlk8Sj3Hy/Wj5rRxeSmd8mbSTDiFZ63dR18JmvK9/K10G4piOec7NAlLbFR+XMcn0A7uIBritBJbFMgH4DwL9YkaFkIK44UlK87R0EcZBTXs00KsMG7DMd+H4EXaVixR4KIwrvChtgRjXKl4eQl9v/EpOJsv1MXwSYHG2TwBX89+XoexDmoW0gAy12O1kD4d1hWdjC1Q71MMhvOHKlDS/Wr4X0oP0uxaUbr56RbbHAPz41X8EtA9c/ak9cj/XkQmT/dFHJmL8wCPTvfQAFeOxG8VRzRMrMNODYV3xhm7A+bAtDXWGrkJFpBWB6TVMV4WpKvQEaUYQKsV1hMzS8BuWT1aYWeWHJ3oxH0uXgGS30ZIWRXDgKOW6Cnq/bfhi6dpZVES5Fq7YCVxGLCBGLWzed9gNd47bHZ9zwfxFwaCXWs7IhBlsT+mvdaBAXko1urlUHIaLHntuNMsnUR1ggaM/QabFirpbAJExsK8RLI6A122pbAUQ3F3SsQMCF0z4ETC6K9514O1jE+v73dD0+gq6hC6xZW55nqU04PyZa/NdYvWKFJpr+pbUXCPpLLcWOaR6sA+mjuRnClgIy9iLg0uw1gf4+eIUNKz6HRkswQv+L3pDk5yKafK6zPNzCUHlp/7xWIjc+JsoL0TCF/cLEbeBay1IXSoVVMz4YO4ozFQ1yQd+MoqnNWFQdc23jxJoUOQ6U+pWI9FG61ToS1k1J0fhVEV8vJRBNMF9n288HioeUhMyHiBiRkyrMUjoVy4nERJuPD8U9WV+LJdBMURisYeq7L2otasLkMbAlNBOwY3p05gghiduGICt8sIgqRTCKYljZm4ZVJKL+pfSeqdTnIwLbrDXkV2qXGqL25FfiY+TG1rW+CEh/0mU2IQmJ3NGdanAz6NDZ+s2ZaPH4LrD0GsWeDgmc8weFY3nbC4hy5BpO4wfLqso7frK3vAgkQybQ1R2qVhCLhiuuWvZbk+6EaLNMYnL3Sp7LxAUfA0JWWELx4llDlIoSmSoady9ftL1ZtrO0H+6Ro84eogD8RHmruZnpLrHjcIwIzzOehPRW+TMWDYC1qgiDWZUeHqn1LCphPAOP35YdCtIRkCoPs2yUY+M3H7qw35i8JVVkvoYzZGN4r6QUYkjYYHL80VsQLhEdnREso5YolIz1S+o1paYfUw5rS/GlAlzxbOrFVe3m+IOspvL4+HCifBeUSpfrslrHyMALeFZFZSFIQRAmdAv2XWQxabXkarGoUW2v6S5qZecqjclwn49Elq8zawOknomqJdINlUzZddcOYQ1YDRbZcW5ugCKTXLoPj5jRJYmlf6ooyaAJO/q/+DqPAEZ1td1LBy5jmH17XPmly8vvJAKIzqAU6aiZtV23LOTkEg8ZVharRJo8LiVZFzrEjtkV3e69dXxnCo85V1kn6sV5StRNat72QWsjejTt6w+hPR1u6vBooehyBUGwUBDVBc9gj3Kw7BQZeGWWwO8akuGpRcaLeQr2x0qUNeitISM1goKeTJlGcORxV2HRyHKY0bknBvDGt2dO/rWH1YPjCq0+i5iMpA4YnwkEHRIidOpiBy7jLFab1jLJVFkSjXZnGsY6COTZZJpiJsNy9KYt6J1PP+982oupm5aVwNPyPb8sQS2y+uWIHa/jOwsV36Wq7uGrsECJhyytns+3uYV3YJ2h5vj7KQtW/16LWuF+1NiNScfFl50fD6RpYIorGOc03eLxnoJGKzKQ8BGLC4w/M8Fh7s1sAN54MmMM0VVOourTjWPwcoER1GzNuZTMi6h1dYaROpUI3Km6wHqkbTPDVNO4WxMcegO0RFZOH09BLgRKHDvAsbdY9W6pobfcLNwuWihoiyojXAmhcZlbka7KCNfeMWXtqRxa1Fdjj1YTQUjjO8DI928EI4O0sBCWDAVqPF7aPGvQ497HclJaixnwdKESL2Iku1gy9qR9hF/wtOd92fOlk+jtMFQlAKltD3fIGIVai9HlIua+/viB6VmQW/PmK6VFnUWvCaliDr994hiU6qyPF59UMDhaWJNydJ+kIpY9MAHDJGIqOvLG6ZA0YeaQP5I9sY117Wjy9U+QVOzU1bs7u8e1ImPyt5HZMFd4VnrbjfgIPVz3b6zVS87iqSzMm/CVVQUUjGKdZcFijmwxsYLjEsueMFyLtidPI31v1PXN+9/h7KpKDaoib+q2uk6WGv0A2hZCDm7owN6fCoLMrdWkeamxDDSnvO0m1tJwrRuo41ZR7Aqatn+zzROC6+VdvLXqmhgZSyH/HS0TeP4bZfx6+4SGopIzXKEZYFX8WyBNQnl+jPCjZMSDUjmUnAjq0oZ1RBWO5TVitk//U22keSasYKUBeqI8FK8uepUTal23oM6Ha3ijjsupXkvXtmG5tTOZtgeDPf7g73+9s7l4OBwsHe4s5sc7D37pZ7HYM/m1g3p01dMdNM0SjyIGkUwSwkSS7G2lrX0oGyDc2nlcmrJ7Y4bbO1J09o5k8tpz7ngcjnd7MWTxwWS0ZxcuOMFa0NUoi6ulG83RQw2LDrUFZuDzIa6+VZT8zHhMLw1MWtzg7ctlJuYy6zMK9bHHkfYqcFXZM+k6VV6bjxMx2FT0HTGkogWYXlLtUzz9I4rxcabXBSluQrREVRIV1LCu+BKEz9A9Sue57zzGcxVAx4ZdjLOiZu6Fn1OIKsuTFvnJJRTSHW75/FvJjLYQJjPZ6r8uVqFkC5Z5AUNzC4y742xa8pb3ZeYWKYIwl1HSgVq6zRpHiTIb/bg9N97tSoAbs8aSL+TY/DYZXXf8wovo36iekY2CqZmtNB282kD11FVhT4Iy1P01p1kBsKPKaZ4Re73uRTaKIs+eG0hZcFqjk2mH27v7O7tPzt4Puj6dPTD8UkN9VXeoJydWGy8Vyv2ezVgPqC7k73BIKtDJqasXRh8eZ3kMpwJ2ALES1WqFL9hwaJLmTCK5q4yi5GqpWGAbuE7f4AyMKoOnFgXb/ClVxfyRaiYmDhJWZ3EuZat0WvaVDzBnLmi8772Ntr69ry2AEXnuzvLNb3tdDeeCef3srsL/a7WDNO6nFuNQUhicQNrpxc0BXf2+mSvmZJC5nJa6/hjjxp57TNsuT6s0Yr8ryZy1Td+uUdLndl7yXAwXL7k/DVvCqMvzM719RAeZeiifx1z9OxAfT9K83oICr15tSH+OQaldiGhMZndvuyuUqLUNmwhANXbdb2ZVbcF7fxM3mpBeRe37aE5U8YrMrAXahcUDfeVczRN2o7PquEDpofNsNWtxsIwAEGt6GJ0wJEZFRkkhFzO2AKSzG6tqQxNf/w2VcziDPdF1ZeoZgBBlMwrrLmBUWCnz1heYEyNNpYZbmcM3H+hNFQq5+gDItRAQt20zKkKNasq01FZ5apD5bEUrLF+TadamSKLs0TV2qCKEODS1BRdnqkzH8BAQVlVFlgC17EVNFy2JjIMjRZFXk5BE2h7UqpEVwo7QXjtGfXhI1AF4fzd7Pl9gyOPGqUcaqZgdRsMNy72+bv0zBrVvex/EN3r5H1rZTf7YIKPwHKtMFyFTfbOcfmdykHMLiE+BAt+2uf8wBuunJkuco71RLmxFlrs1CmoMnrTcnK8Wbxy3yNA5YlURDFIS7/TTLc2ATzhWoxkMr2qHNBWHFjdJyRkYZE0gqV/WVZtK2tfuGR7AMQozm68tT66wtUfwb1MqRn0GMKek/KGKcUzx6w0Si72+fQe3B4pcmYtUM0YGb1AcQXJNouC6ZEX06NTq1ryFGEkb5lTmztOsgtWkOFzMjg43N4/HA7wLvX49MXh4P/6y3B79/++YGlpFw7/Ilj5eE4FnTKF3w0T9+hw4D5USq4VdboEMYTdzrWRRcEy/wL+r1bpX4eDxP7/Icm0+et2Mky2k21dmL8Ot3e2v4uI0Qj0CEvVdca6C6Uv+pi1huRjT1mH38hX+MiYkC6/MMhwPDsjdzP1CwKBBZX1THlu9bfgWiqY8gWcwkkqDHhM7JmN9ZHxhqelzL2WxhVBc73uXL1gqN1Nww2d18Oz2r5GuYk1IxsqgD21fAuW6JyrTvEGYXr2CHS+S9QOeOUdihCMQD+yh6II8HuVnGK9DTgOC1l6y5VsBNzcPQwWrkRNJQxaFf1B5dThCF6PqjFkFR0buswEPwRqFnb0SNjpUM0BjygrR2iexwu81LLexKnpbmHjchAvSgX8VJFFuCK87owDJyIU+bV6vtYydeEmuA53KF+mJoWrnhx28IoEk0bMkOUMPyvEAIdLiEOrW4168RFDxSIob3DicKhDGq6ao9u762p1NBO641B1ZK2JGFdQelUZ3OsXofZF1z5DdzrsKlRUfH2ei4V2Pri29/2lnEbe5jmqjTUVoyq44U3UkIzsjOY4JC10KLunrqPbLHAkXyz03OqpM2OKbBM86tjprBy7UAV/D93oRRpG3MB2Jb2qH0bfodj3x1X/qLRGpJhu3tW9pbaMilG9uozNtzA6uZ0t4tIVPsysLaTajueOYBw7GtDN6kE8BaXciVZLUcfgIcqnFq8Txv0ZVDAfRgBvj+oyxQ0Z5Ie7mnKvIN1GFWjV0T9bVL3ELPIh6KvRR53csjGBrpOuIpZowBMNaXdvxgR3x47V9awQDMZMOBsa4AUxWltnBBKZcjTOJQRjaG7YqINpLqGAl2tDR0oRLvnrav9H7X7F6i7MFTCbm4C8e/uS5Fxc+9Jg9/fP9HzZ5Do/CrYrhlA3nsahcyGeFgXFUWQx94LSUytBHzkJDsE8tAe1Yni6zqWA20w4csONKNCzvSq+SwcKiLhW3hbMsfWXwQB8jUsvD9fXVzrSEe/SGie5pJ1R02+5viYwAtiHikvFsTpXUxBqJ6uIljkkUuqofOc7zdztGaAG91furg91AbtzkztgvxJSLdMd+U4k1l+DL47/zjIY9iMI9TAOU6cUroADEgPLM8PBoMN/OafcNYx2jfIXsoR1r98ouRMBJQnUE9YRQLp+gWiHuHX+SGsgUedSBDSQaq6GD2hJ2OC6cUfgy6UsQb0HpXetX/g6LJiweteRDtHqjUehkhHC72/eMDuqFQfQg2tQel2vfs4+0NQQqDTjatg7nSgKCIjDATxs1R1muAlqUeuGRWb9A26t7qEUlODFAOMwQX3/1A7M+y5sfw5VzoOxEEaMq6FHtfbwKX+v5OMrYqPcSyeduEvGsvAHdxRqGlYCApbdrNz5FFIpNNcm1rsdZ8auRhMaf3e1JHA6XsBnzCyZoV/TKJfTRMPvif89SWXGRokXvv7r6niNvflVhhDmSLspWopK7VYYpdqEK3ZL88jdeHZysRmiUWtvBPXbsTXhRhN5K8KMWMzNnu9VlbYwbioLDPC9G90oTCkg3D5FntV52lC1TCLy/feEeAn50ZtCF+Ic3xVGHIF3hlVcyh2XhXaf/i7FCgsJ3m+k1lCyG6ISHHaFA0LoaHMJGA7mui6SK0Yzr5O5w9ozenXhEx2TuAE9c1TxrLFFn6aswGI0YVJfGxMq7FO7/aUA0+/sxE2+dloqWbCto7k2TGV0vhaV66bjsWI3aOP6xy8u1zbR5CQ//XQ4n1fChNPcP9Uf7B0OBmubDTHazjT6wrxUZsbVI2MeITyw7oBqhPKt6XLcx+DHNTjpe8hSGEgYnR2kUuRbAZVRTK7uESbseusoQtLJ1QwCDGTk+EKkoG5uoeySgtLpnDq+JGkzCv0zxi46vxIUTqlzTamW6T7yKMZpmg4CxobGaF4jkyDcuIDI9humDZ967OoeniWsCoEh525ovBfgop+xwsxao+OR5C79KmcP3meLOMHP1TsVYHiSIqcpu9M+ucMuqbb8J9kn80WHhQJTbO1tPxtmLBv3J3vjQX93e3jQP3g2GfR3abp78GxAdw4m7H7rxfPDhNJamdAXlH6sTqjVI0rNlE/qC5ER3Yl8k1KgNU+1yzSL0q3AXVrvRN/wOHxabm+eLXsy39Mu3HcL9ykZsPpw4wczuNgh8Kt4ZB9QXo+lZTuG60mTRsMcUXYKMr6pVic81AproZPn2R6lu326f7DX3033Jn26vT3u7+7uTg4G45003T5YFl2j+HS6lOfz7koTJ7WMuhqLueGXT+F3zzun0NVKG95UxHfTBl9Uz99h9rxpzEx6d0jUQ7FbYU7y2mWETmiv3Oap96KrT9F78T7IyveEfA+i772wn4pyrMsxfobwSFD+8W+rkSn8CGfAWpcEXVL8cRdU4MWf//uerOYjbJvdSIGFxjuteBTILtZkbM3CenC6y9K1v0Ksvs9LhZJ8KPf98fcC+oq7YifO6owuTEC/gStYf0D5xF//NxXZllQVsqQWZdtznWTC7dx4gVOe+Qt48qqKcvj1xdmrf/pOp7pK8XWCXW8m+LI7HNxdRyMNFpzE0CWAZUjNBj7hfKii0NyFzpOkymJM+CfYa+svqYtWc8FrOSZG+aE77zX9BVi1xBrDyKEFMBwgeAfXEYZKDZZOW1mZlKrrGK5HmC+2isKXrjwfaK03VC0szxQ5NZb3E/ITUxguD92N2IcZLTVcHuauFgvKgLoSa5Wl4CDncR6oq918w3pwkwq9AbIeybhiqZFqYVX3VC0KEwdWoOxhPTLjWcZED9Iy8F8p8kXPKY49cqu46bi4W/91zT+71iNr+LTvE7BMXprM2JXmU4HJ5Bmf2gOG5lalN7NlHK2P70qEnaNJmKwKjOdTNMTcBcTdDUjieLaAhfZX814Aul5twe4AczsM6RvHgjfKPqkg3MX1MKn8ZkibCtyOW9QZ3d7bfyTpMRXqI6byEupfFLDK4e7RzwDZq2iptg7tdSuJHss09hMX09WpJeuNpnnL8kmUaxEyxkCmR8Vb51SUE5qGegG0uvS9YSKTKql5JoNhHNsCR4Xlqu/fXEBniK7OMfPEzsmSD0WawIXgY0m92kT9+6/RaincBEHpJvmkxBY7uZxO7RYHsSenihYznvqKS8HhEY8Kmb6NYDqjSm38fOQlozeMlKJy0nHfLAZfrV7xRkQ1fuVtoZqUwqWpt1cMuplcvXt9+fbdxeXpydXbN28uH7tkJZZObhesfBJH2AUOXwtbgIxLFGVNxEJYATmWqpC19JqHYmYYna9409spnnLnw3hSua3tgjP8fnfaYlJt9DDoAzf86d9++scvB68Ojv7+WNJ6h/AnKH8ndj9B8mEtHzQwBx4KdiOEwBbMMYLTsn1EbA+2h/2B/e9yuH04HBzuDJbPCWjiZ/fnUqrtPSfe+oWRPpYjlhEd+x77OEdc8vd6TZC75IXr/+z7Ess5HhwQ2QJpnVEycO0WAVoE1a4SrJohZa6r0JEbli+wUgYqICjg2irep5zNIBQ/kczdmgVePU65gTqekY7hSyP44h+R/szIGGulu0SGaEE6xTqtrcVHZPYD6dSVg/0w4woMSN90A62hZe0pSH1CZqu9X7em0ijP6KnMv8picsYqVsbA6kDdBiH+Fnr2wzBuAdG0Kgu4/xvN7VQjd1XA7V5hmowAiyjUyWVlY8K9ZRNT6d/20R7RXKRhOH8L4eH2uxRqSzbyiOMaWU/e+AEGD77gejBhAKhlEmS0DqK3BlcFpR8/TkFwZlAuQXTFbeXjmnGZ4jdR8Da09HbXVdEVUgvDrZmcsy2ae8oHTO1wVzjMpyLbydwnCmx1bD1+D7b1Cy0QzP4sr7RM4SNJO9Oeojz3omAqpZrhAVC79oXDNQ+BJHGD9mWlEssnyZ+jA5TF5GvvAmVx+Co7QQHg/87doPJJ8qV2hLKw/Um6QkWofPGdoSJYv/TuUBGoX0OHqAjcr6lLVAz2V9opKkLhC+8WFUH6pXeMsqB+qV2j4j5KSwD379w5qvbiV9Y9qgb719RBqgb4F9xFqgbnF9tJqgbl19FNqhvkL7ejVA3eL7arVA3Kr6WzVCfQX253qbjf0mc6Wr/WDlO1F7+CLlM1eL/gTlMA51febcri8IV3nIqjmg0Tq7RU4YYozNIj7EOal5m/dMwZhc+ZvKfASHBpwwX/jOoofcIPrMmGD743VCXT3zd74OcOY8JsUJFRxM7skEG/sTb9fa0H3uw1HGGtI0+8cPI3RKVKdd0R1vCE8SgwhSv07yNT4LqqGVcaB6QGlg3ovxFoW/egyJe7tfFDh5ACuJJrTtQaPQzqZiEuzpbmt3ShYYGosUvrqA3T+JBjGNLagsAN0NSm2YgFTrxrDVfOEBJWx+P15YuLnq9DTaiguZzK0qWakKMcMlkMQ0fUhVGMzsnG0cnFZi/UIXbbIozqajHCo9AbJlyh/KuEMix5zjLyf54cXR4l5BcpWHJWBWRg5bG5dAnPtVx4X5vDSBc6GsrXZfJW5JJmcb1ncIoIZqDm9tHJBVyy+VoeFdXdXZtU80MyOj58X1Aze2/kewszaNdhVxxqOWdXgUlHSIFR49swsrvTq6rR+I1SVV6o3kqwbUt9wlGzwF30phVLMRStl5oPVw9APErFHWWeE4u06xyT2M+jHl6rxldRwHjdpXrjRYysw49Iy+nKQn3OFZ9TtcA4achT/PHsZPPee9X14WAwrN/+VlHWq4YwjrXqhK59G2oPqWSe7a0IvlcnezhFe1I9o8MVzXrx09HwnmmrWNgVTLy9t3/P1HvDZfw9j5x6b7h959Q6Y2xVTHhxcXJ6eh5NvcSm5WJ1jR7O7NhV+qtXa/D0qDQXnybS3MHbe/s7Bzv1PTznc7bK69ZXZ69O0ZPtAyDi6EC0NeOdTaTyR6Oc1LwRhJTQQManQd7e3iacCppINd3Cch5gcGzNWcZpH/y88efkw8zM81/Pjl4fRYfbhKec5ugV/mfPRTX4K9eE/Gw1wo669FYVwGuGcc56tfRmbJUQ6shGqId+R0uy0nx1nPTKMlJMdi6ITA3NK+6inUl/64P93UGDhT4xaKojZioEO1EoSwrRbfXNv0It+HXjsHGHfOjTWlkXvnYwRua5OKAWybyl0NTm5a1YWZwGpobZCdZB4VaxH/SeU9PqNk8H0mduzvrCa2px4FyvsXzBtOuIyqqZb1kU7fSwqKytu1a8YJ8j1uj4/F09zshQNWWmSsPsjDVaPtCogIzzgopVhdShYQLV22GalvrX8+mDEMvowlr6GA/awOuTwu8LlkSArRrb6NtHIntOq7iFZZCzw684diBgd1O/J34gZvvJTvJ8fzBIhs92h3sPQJHPixV6xtaP0BnmkHK32FDfnJyf4k6z1rWDgvT70BEPHovbchD7S6O4e9RDA4O4OcMyFIRODCSJI8VcKQvlWi2mMmNYIb+SZooKHbKLNBZX9T0bfP+FW9f2gIqpr5umaHDNAPSYnVkPIVdOPaKmpphNuGJsgaUpxrmcbmGt575VLaxs2toeDHe3BsMt8FNwMe270LM+EqfvchUTq7O17elBun8w2El32fPt7aH9kKV07/n+DqXZzn6WTR7AID6i5Qo2wwrVirATPkWaXZwfnb2+TE7/cfoAFF2azarxctN8Cn5rQVy//3B06v1Z8PlNKOB6gSm3yxLg4TdgHS5lO4jd1mCQ1ByEUXAzKgnoJMJKRVyTNfvnWpuFh/s7B7s1QPGYvvqqVbBLVDVACYPSR4s5VOb5bM3wYbXA6NpA3su4goIKDpLNFs+F6gehFNJKq31AhZyzE7LxDjxuqqrcGWXdbVw03HGoyy/jlPuwN3ieUOeW5jco0lZ+q+VyIqN5XcjVxsXR680EbSowskNZgK4kUVqaGVYEpSKrpSLBko5LUzm/3WUvOTv3N+VM98jJ6wsSY0zIBnQi4XmWUpVp55Znc8rz6r02Yb9PGLY9SFK59D0t0B56OKsE4VzlgeKJ7+pIgdjdOH4NfGOBgDzgiISBuC1sXft08PKRn/h0Ro60LhUVKSMXTN0wRY6PHkeEUpiVpd5UBIBZyMbxJnYsbeL37uIxwEelDli2yoU8iSdy63jymHU8/uu7ix5581e/nmci7ZE37/5qNbKoWFiPHL/+6z1rHrbOJ619LlOat8q5Pvni+2m8vHm52VKaLHtYSfF3zm4fg4lUUypcvb0VYxNPpcnGm0/YzGci/VRkaX5VCr4qxbELZ5oTO6NF/d0jcG8w+mPw14ZCDtUVKK2rq60ejk47HxbDxvnCwXnZIxegupy3WPqY5nwileD0QSgKaa7AeFwCp7u8tZd8DtYeWo3N7G3ogAS6NJiiQvOMKSzuxdsZ7tuD7UF/8Kw/3CeDncPh3uHO8/8YDA4HgwdjhS2eVokW1sxdAqXh8/7gAFAaHu4ODrf3HoESlDBOr67ZYuWVgY5axYB8cQIs9wCQ2JFbqL69eNi5ECGVlupmVRvrEqsY3rAotIoRluf2gdT9VKEVlReCxNVw+HEdFUry9zktIgiuTbG3PXwsJdiHQgr20GyjRr4gDhEWMGPgum4sX6jTsQRW+3t7O8881ZftlPUI7D/RNof69tYyd5ZStKq6oCla7Ny01fvtwe7SpSkBZs0Up/lVLbr/qRnXtZXFqapy/bqsuLj7FIQmKKEKfLqImjNO4gbIsPbFjLp6+D3C4yBXdBD6AC8JplZutRBrL4Us7DB0OqOQpara1N3be/HDD8+Pn52c/vBi8Pxg8PxkuH18fPQwaREqXKxcAkbBVRNLyLjkUiizEUmJn1nVCRzvpANR8OieQE8vLsiPkrykYkqOoRqTC/pcJOSCseAtnXIzK8fgKJ3KnIrp1lRujXM53prKYTLc3dIq3cJyTluWMPBPMpV/ebmz86z/cmdvp0V/DNboP1Q+OyP+j7FcdTBdPRhNrDByNpnmckzzoOUJtvSFRwPJP8Iy/UTD1AP/JVimrepkzgWEff3uME0vLv9aqa498vKvF1SQF9bo5DqVkenas+ZLAobq0677F2OV1jB/FCp/tFl610atLeEnY/YF2KANRB+Gy5/ZnnR3uqtVi6IEYzup01NaXLdzP+QhZpXhZnN1nX90f95T1vlHJn3R4hS6+yi1cDHxUKaRVsFeUAHHwqoYVtSCIHEPaa11ASjjUybDK3H9R99BiGErf4zYZukMFMSqMaOF7Ozca3tSudtj1ddlUeQ8lOz6pFL53CxWVUnx2AvI9j2nFEYxWu+riC0imDBXaSsw7kngubyVfVfdKG0FWobZ13U3zK+X1rYqRFZE2Ne10pRusjbAUpkZOQJbgDYABLXlimu5KlofO83o7OINELutMBx1grQqVnTgdK7sMRW0UVXMb9uPgDJl8iouJlKX2FJMuSkzrBmZUwN/tK+i/pus5VKsHZL+s51kf7h7sDPokbWcmrVDsruX7A32ng8PyP/UrwFXmSX0zsoYn/bYiFqigTQ9X2cOm+LICZkqKsqc1lq3mxlbWJnKUJpGV+vH3jBt9IjlCqVvCp3RdA/vSHMplbOZe8HsbXcSRfDyKnkZ1dUeyDk8KeuZYVVGDLpXuLCGt5yDeI/kd/uCfyy1kaKfpbV1KaQ2NF/Vrlo/h+FRfDVTtmAtPLi1wpzQd6HRtChqqBxaoo4ZuRby1rVssajARFKRX87OYwMHWyhWVeBvecbyBR5k3iaCpj/wsU2757uD3aU9popNrRKyQmH1Fma4T1b1/3bcBdOKpJWDp1NY/a1kY1bnue6Wbk9zZLrOjuR31xYsZrJe0FTOjl4fRc91Au4Ooq0jNYUjl279UDIh9dURV+wjLXHbGUlevwtf3N+3CNOMnJpnpVFH90J4RldNCRo1DZ+2RVEm55SvLE02VhBC4Dr8hYSAJqFz5nqLxt3ba+2WBXl5cnRu9/8RNoGvimEi/HE6XEiQWVV0jfOf8ro7r0JKYoYMZsdsha4Un+vYjGkOACXf1XOZYr79yf99j2HiWzp4tq04NWo9ys0t1+654MOMW5DiidoI7YQmfsGbqbyjzo7CXHcY8upkrwcJaZsES/IwpxIk5CjLPFCT0AgGw1PdEOMFyeUtuJR9YH4dRDzxqfewYh0FbBysWUEVlCd0I9P66bWhBb3Gnmo9gs2RZ3Tnam+4vRkQrHK+q3NOMxPSk9tIw8NRWeoSOvPcBLOXEgWhs1bPYQL6zWKwIDkFFaMfrEQ3oJeN/6I7LigYKRCkMvSYy6rELgQRsnvDLeXCmZpkw+ToqS9YjyhmJ8N615tPYAR+7jTKz59B+cckT/4xeZNfSMpkEH3SVSz3os//fW+rLehr1Wy1hTfXudufVmxwoQ0VUbvj0+MLeDf53kuozi60Vl9ut6aCSaWotp/XYaAV1YwWBRMsAx8bqLpVMMGcUV0qrEV3SzU0kRQJ4OrCIuspSDOqsluqWC/U1pljBWHdIycyvcboCkO5ABPIbvz/LMeQzg9dkLNQmPFT9v3dyUpPojxWId2ujkQ8X1c15Kv9esR0WpRJqel0mSMb+slnV3d3qT9nypqUkD4FZwCuHkS0hMbv7h62artun4bu8TXLhxs8DVzvbWxdH6lRFynNLd4TarUlS6FaX/tIyzqEPygxtxLmAR7sxbe6Ff9Cp50bpujUKxqVme1e173QjXwAkA6D8aURpqsYpmVNsIzr60QxmiVxxu5jr/SNNNUFuM8CJhtTWk7ZJnTqsodnyrSelNYw36DTqWLTqLsAQbrTPAfQ9KarcB/KsmDPOJLKPH9gxT1AFXuDrR5XO49h4o9E9/PZIWgxyEkkNr2U98bIXZZIVU0ed0Yabwk7yPq6vstGCSNKRV4z88PZm4ua9QIzYaXY9tgV0NFMYUSwjlzyi+ooUv/m9eWbizfLLsWUyeQLcscDOH8Wl3wdmS/ULY9AfnGu+RisL8Q9b0H64l30Fshvbvov001v1+abq/7JXfWWrF+iuz6C68tw2VuA/vxu+7oTYEWUX//JjR1radGmOjPOwKtyCjW5nTmpOPKQjcAfaPeKYqZUQnt/Muiozjr/iKv7afBxfm7UjeMGYkc60BHNVuOLJJbwSs/KRt9nPVxjzBkVXEwnZW6l5kKWijBxw5WEckrR8Kd+yV2EvcKYc2dtjsaMGqy416RC8REq8KILT/CN8KKZpBl8kjRdFbOQV0fH8bSBAhZxIY2r2Y61q0BQvn1xTJ4Ndreh93E5nUKt4kNyStMZkalhhmy4NmY9ctAf8yqx2tp7m9jt0mm2zstwK8mvIer6n2TGPtCMpXxOc2wCqMmU33jfOaxpZcggn+PEFJq5lcK1ZObCsClTCblAk5LfuAfx2sv51l1n3jDibFHMWMfhuf7r2mDQHwz6e6fw705/e2etR1pf7voG2XffszzN8r2+d59D/JZLG4YdHu3uaFe/E/yDc0l5vQUM799KmkMpqjBmZCeC14+iBuRc/ZW/qNSW5JCuYJU7RexSZtCvyZq69eUz0j7f2ESudX/CplAT/ClcD3c5HeAKSZbg6aR57qcG1oEmKq1O3iCKnszl0EC1oOk1W6pE+HLIuvG+OHS5WN3SKpYyCCX0SH8huK56bQPefxC+UicTOuf5qsLN31wQHJ9seJ1NsWxGTY9kbMyp6JGJYmyssx65RQdZuwAGPtmCu8zzp4P6M5chad0soISuV4ILFamcb6nb9UVTS+VX8l/0prW210wJ9oRUuh8HnC2ADYadoreuUUML8t1kNxn0h8PtvruPbkL/tL6HL2OF44qMjlB3Lek/mvTwESGfaz39fG7vpkwYqXukHJfClPftV6pueWu/rrCmzvo7jdJw5OYZOW8D9Kc2bCoV/x2fkE0kuTCyUkwrY3OsJM3ApGIKKrCCHOON4kr+cc3IROa5vLUjOwOmXlSVbPh4ErZ5SHIsPj+nKVBU8A9VTuRtq+3sGYL05sJaP+vr0NMD7+fAGeNMKReHkXO8f2P19uP2iXGlw4Wr5ISc54xqKCRJSg1OGXvWyIL5PiWQ4olTnR5f9CxVCyULqRnhJvKJucL1bS0c0HzAkbTain8tPl9WYA0HyXA3GdagbXP109gJl663XsNGeCEVOc5lmYVbG3+hhBkZcJXvWvlCRaKcXzMyMtvJnGW8nI8Sy0w384rb2ldG4d6+h61pwh2Wr+AXZ4JUxnkYsctIr9sKZbFkRd67lKoLlkqR6UohmlFNxowJglFr9WXb2d6LwzmMqUVg/nR5eQ5/3x3O8cLHr4WkGfsSduyH/OYgf0qVe9mjmQlNJDxS1tJSuRcxiv1WMv0EsZh+oLHMFo9Rzz/aW+siri7XAJ/ArE2iHxw8uxtEVz15CSB9Waw/5gy/dJY1Lve9+P7E8lySW6lcs4cW3itYlUu4mtf3rc2GBRYc6NjzsuO0Hu7udC/VyuJg14+cv68ZCgtdsGq0Bse+ciGEuZxqHx0S1jLNOTQQsThqKAcF5U2hpCj1baHC03ZFeVaFSaKkw+sYIqToa0NFRlWGYCDRKn/z6B/9twhZ/+ykahQilf3l2AHKpbC/dlRU3N5hu3v7z/rs4Pm4P9zOdvp0d2+/v7u9vz/cHT7bfUBAi1+kOTMzubKFqq0FTnVfN3zFwHPFjT2PICo29HIJfXkx/LweHTH68fRyVB1JoykzvivKj+xyBI4/ax03i9t4Tat+x9Qm/Pmbi8tu6q24ucD6K+7KCga10u7HpvyPKBqipuYlhPLli3rg35hq9Bb4kzpqGBcLqIqaVvFzz4+O8YX+JejIrg0uOZbzgipvdc5jkGkY1Kp/kdIQZltf1yQe1o3qFZIZywvnuc+YYanrCaEYNZqE0GtC5lynUkz4FLpPuU3dXkk+p1O2NeVLF9D1NFZswpRaWQ7wWzd8xYrx1mnJXF9bY5zLaVwPbKsBuy6k0Oyzn+s47bIHewzk13qy34fx3Ue7x/xzn+0O2scd7g7oP1r0OTCeTvZFS/iEws+N2iH98JfHiL+arAujOuXlSWSeI6421JS6I4rh01us1vcNTtQdzLA7qMdEr9a4B7jucqwNwXivGiE5H3tsDZ7Vvrw/Jy8MEOfl+RpniqVSWcUSLhKwpi9+rM9LauY0FOhWzDWHHy+wTSyyhktrmnDFbmme94iSJbT+yCW1myOnImVqM4xabZMPYZuEsWZUZOBBouHOIZVCuOsDQs7c61TbreDGpMQqdXk0TEUCBM6PpZnQUsGtBtEFFdDicBP3dAyHv2jpIEVH2sOnW8o053RVtaYD6+AseNdRrWSV2tfrCAbzq1p5USzLzn2bI9RxgcQcdOAekaVxHxTJ5r9b6wgi0aolEXTe5cZyLy4rTVZmBlb0OjtpEqvG9hW1Ll6/Om/tH0LOTjpOvqVNqRWGOJ7Fa8Hu5oh2SyYz+wj8VaGHaSy/Xro/78lNOmmlDYFNZk+yXE6ncEKxdEYF13PLXP5LMKkt9FGNGDDKq1QlKwCr1fpoulJrOjeul6GpNRMgtHXLqtV+/iiNuW5H6oXO5TRMNGbRkQb5mWRkwcXHku9HNUT8W1VnNOn8mJA85XrE1jG06oVFgmXx+N8HW3ZcGqKoc5qSEcL8/QjSKYXzpp4eXzjyPUFCVOj/uSqtrtXCyhIcGgCA1YO0Si2zW9O/caMZNux9Pa6W6m1Vbf1JxQ3klmqxvm4wAwczTgJ8PZJJWK/QVfU+j8HWDVVbuZxuTUoBnUB04jfaEhIl7m7zpLcCb7wXxWIV4qH9MtQLOAXaOM6VMaXc7YF2BHJDKTC1oFE+u2EKAppNo+QsnN7C5SZPJSQGItvDIHjBAPvGzZtJhquCG2th364U9IUswRtXlCbebWGvW6nkgSHQ+xAVjQvc6v6nzTh3Tc6ZX0kUSaNbqsSoR0ZMKfs/HP6pdA2ad3jrmFLOPxGJ2mnTg/Bk0a5xAChO5E56exa6Vo6om/kyuaUuQQjFGyseJc2p9gFcXHDDXYpgNQPoDs5SoSQttZHz7igDqaa+3wT2R0rGUhptFC2SH/ynGrHQ4QcdvJKcN4OEHxxCY4eI4mhqjRgpF95+czwH4RKIuXM8xrlojf3SQHV3+048VpkM0eSBp8IufN9VUcBfHYdiIq7/e02yY1wguOFTg+9Vk3W/YscFmVD1o25vsMA3yb/oDe0keinSFRaPbJHcTWd3BTq7W1T+CO9wXwgypLKDmFoCfuwdfxeUTtrNmaGQsxLLcpemEp2BKD3n3MRsccOpGybc+GvGyNsXx5rs7W7vWqR3hvu7SQf8yYSmPOdmkazClbAeYegqPxM/Yet4A2zpDeU5HeexInCUWnsbdoqMsLJ2t0XrjoxkKnzAcZV2HIa0727vtBl3e+deGq1QSkSUsid1Hz1iSxOrgQekMD3rwqVQXKrlitA+bKkby+znaTP0I5eYVUNyTQ7I9xVx/iMoC0kYEY7SUMjcvq+gTwNhHwqWurt+H5BNHfc08tOfDztu+nb2usgaAHj4NvrojglK0tI7pqY6u6MFCtRDY8NIYMTaYlW5pzlxJWmASk1n1dnJxWYvVgytZtcC3u3MqbSEd/aS/3GU3Au61TPhMPN6pgVWGy5SE6mzVt+0Go8sUPHLK7hTWaBN3tAtO0FpLXmnTAgLvmrN4Y9mhjBhPVNgKSYA/+QdHBDZFX/g4kdQtNb91JkJjQjy2CfzOvrqI+WyQvx3rXAMOnLn81I4IwAtcHnDlNNQaFWlBsIR/Dhx4Rddc3f4SPfHlJnxo/sAKDdsM0mUCqcmPUGhl8oAWtU2gk76Ua3kaErsgqhueAqabYhacU6GeMmRl7wjPdBuA/l0K2PakLNz3QOHuO7FFeo1mGO3XPlWF5uNKD1U2Z2+jVwRAWm3UgXneig5EMaoucraMRkVWrq2yBE2Y+ZjOiodqSLYLRtXVLKkHME196hjpJ6LS5zQlI2lvB7FoQAjc2tVVzVqhJog+tEN4ZjFlW+MDBXbMOv4t5KpBRfT9p6lfF7jro4L3JZd/5DL23W8vcVbW2xuzJRCR/9Y2i0FJT4asUlnEzJCNsEb5RFGwFiWscaHtf3998olT/fIyO9j9xNqMbyipi7nHYfV/kGNAE64mMXVKoO+fCdq70oVkPXvkbPbAgvE4c6gmtyyPHfyL+BTKGlkKvMqjb4uGqM2QsRImffpVEht7KHoQ7uM9Lxeyf9JXg+57u4cHfVCsQyS8+nMbAXi9XkGRfQ69MHD2Zv/0K93f/qPVz/uvfqvrYPZmfrH+W/p7i9/+33w19pSBNZYgZ9p7cQP7hUDvzWNopMJT5P34q3vHMNCeBVV7PC9IO8Dcd6T7/3F5ntByPfuZhM/czGWpcjwD1ma6C/uOjG7lz74v+KRyfekFMDc78V7AUJ5TovCCh4QU9o7du2B5wyguRTcSOVLrrAPphcP2eHxrQLToCSOJlBhw1LlhrPbnqvpGDJXNXm/5hFei4eWirxfc9ivJffC60ktFSmY4nNmmGrBH4/tUbkf/hrgzWUNE9Xo0YkcLtNaj7xfC4sGf4VFW3PY+mWLCJG8F5V7qfaKczClSmqYNUBEYApoGo+hflyjGyqGFHqFYe2NhgLkjTBzK2EJNagc7tI7TJKg14vmWtaGRTArTMLktRndpuiYy+emx4P60fzFSATEZRVjH0XUu8yQSZnDt2cX5/YAj4f8+/nrcKKGeP9kre11AlrWxMhEqluqMpZdfUp2e9W6GO9gIidk9JO7FSiU/NCOnho+306GyTCpe1U5FXS1XTmgNMS5Pyxeo42/4QX57e1tYmFIpJpuUa35FPIU9JY/XvoIXPuL5MPMzPPNyhy5cMcKKCG5a3Li39Ju8WnOp8IdaKAbv2bmRS5vMWwZPrnsgjAuRDujdl+69IIunNqt8eqEFmIpEt/tf3wdUmIFU/FFL80ydwK7xB/L+V4ducmpcA/HzuJqb0H8jGBqbvns7y+PXiOH/dbnov8bfmEoXg9zTVzpgYQc5VbJi+rKITz+7tBOm/AMyAqf3SUjwB7B1LjHtbpEGBLg0Exk7tIbZAAsGgQp2p17MNhOhr8RJlJa6DJ3IRpGRmIeI2AalvAvjF33yM9cMT2j6jrZDAT/WBCGRSBx2K1oxwDN26EYtXCd1u5eOsoiwmCFzpA3zrJHZO4KurgTnQeGxqwQEagTMeU3TLhkPCwoDRlFznSo6lj5TddE50eI3P6ZT3gN7M6k9vsMni7jxmeyP8a8ce92GDjVLx0mjv8xDOmNnW4jZ7sed+hF8gr06nUXLffm4v9n7+2b28iRPOH/71MgtBcnux+yROrNliIm7mhJbitGlmVR7u7t0QYFVoEkRkWADaAksTf2uz+BxEuhWCWZIllu2c25vRlZIoHMBJDITGT+8hR95AlJjaV2H1bVdYJwwhmeEuEJiqo9dPCebxroJmHyBkIDN1KO6nOKfV2cT7t2b/B1SKxrj6YHXMgNggakzVAmFcFJYKz+08wTnjoPJZPnBqUg21dZMmkgFU8aiE7u9ps0Hk8aiKg4el2X/FQ8I76aKkPn2Gv2yjb7LNIS2DVyCBqvTiSJG2hCxyCWuoSipy5I5Xu+wn6Ey8u/sNtR4NM2Tv0p/N1T4OZBcuYswjlEA7EHMmno2yoz0XcuKsK4CQHvJu8MrUisGm58k6BisgC/OmKzaEFb71tfMQYfRRZ72/maZ5/54jDNzaCYxcRAJllWwenzhcalDH7FkcjY/AJAkg+Uni5ywGWzGOvu3UQ2ILaq/SvwlilTIpM2vGwu2q2JAH5hXAcM5UzRPLxgBza2qR02JCmYEfIMUi7B9i4NraXaufjoixb+V648/P4MXhZwmj7xsGB1uEuOpgOEma/hAKkbPqXfF9LlhJq9IXO7+wl5Axd2VJPhIWgcoY9EAkTcHxnJzMDo5OoMIPqha7n0kcaJ4IBIlod2/DC+04cgJt6RVyo6eUCi3MlRdwWvISTMmV/Mq3Nn3YJYoRE3blSefw8R+iCZ3HjQWjyAZOIvDK0VzYYADMZwCMVNEhodTF3xgws0ItQ1pQRYjAsRMD+uq7mddalmigrcuxWUFmhHeba0AAX4HiEYiCVkXuVvwb68QKJ1KcGz/aWSDH/42oISx99nsUGJoe/ZjAtZ+M6tuRJTZTje1UUkrBZ2iLzulcCHyJ7g7jEdDGUX+QsgFgRyG4t3he2RdWofFRroxEba8zvo+OPvDfThsoHOyFB/Qjt6swK9yPopjXtmmPmbs6+bGqybGqybGqybGqybGqybGqybGqybGqybGsyHwzDT06Bo5+aPgiuMZDh/v/ZQhg8sfK+xDIduvQ5mLIOLUBLiDx/NKLP8vYczHEffczyjwMMPE9BwXH3DiAZlMR+HST+LRTRypAhsRp25Lay2KkUzIIrhB/1KNOP44+9zS3KxBMA8wS+HHqu+xWvqdFNoclOmwEtq3fRmZm+ssOnN6vzioxxd4Mm1dLn78EFYHgtQYJKhFA9vPJdaWwRbC3Jsc7NhkGfv+VdO//Ko5xpDMoWH8NK+LENcDDGjf866hKcDxHgImAB5zoQkJAmh1y1dKRkoRMYTVeHItXuQNtv9ubAQ67Yc9g8vo2nDui3Hui3Hui3Hui3Hui3H99KWYyJ4ksXz4BAvGsizMzxi0MyQKLctsrvHByCC4rTeChgXGLOT2bBX0XSvrX3JqIj9m7tNI2JeKCADb+zqiYvmvLDtQdFEEPeU4ipr8pGmEyKjKrQvV/skQkx5Z/QB9Fci4X8m8D9ggMEPPE0JAISZ6Jz+KU9yq6j9LwSncnxblvA6UMJ+gYHn23Dd6RgzNRPerjy/KyHNb7Xg7syxnOIRkQrqF+C7Ltt09vdf7b9iUwGDCiJBjLPtCqV865rCrE7HjTGDXrAC4VihbOLu+OWACWivXr3YuTj1qtAU4Ht4TCzEFDmzBYdVw34j3LX7ROH2vFo+TjOpiKgzjFR4j7fTPZe8TNRlPX+5PHPEacE7UdutswzN9e6Sq9AxWUy48MA7yaPFdSw8jI+gu60+r/m+hVoefAslwimOyw7VbdYnTWMZzG2yBM57XXdsMAXCg4EBjbKxQgOr8WrAhfFymoowzFRZIyLIyVbZpMJqt6iL8/LsNOK3OsFuPquaMPCfq9awPoZI1ZzwpBkn8f3cZqfnp0Y/xfVam58XW5Q9LxM10h7eou7EG8vLVJzqYyMYAXQZxsc4gbBFyrNkwDOWiGl5x+VfeZq/R4+Zv+Bnfv8V7KNwHFc6QJjQegIsRuNUBW+yOSBRzMcTzFy0jAubuVKwNmeyPUIwJOkR/EcknQBMFBYCM2MsDGiqhQrjQDc3FxykLCEP4JQx+KALMHoycn5Wge1c2/PUl8pmXGpmSaLSZbE6cr51ECjcaS58lzu6hU3svdJufvc83Rbik8Pz9siB1Zt2NuaxvDH6XcaM1wHjrwSMv+No8fetJVYcKv6O48TrIPE6SDxXhfRLjxCHEBh4SMKb/iL41ZMXfG4tPn6/g3UoFU5TkvhCXzero+9UuREkAu0JWWqlodzX8gxRo4iCa0XSP8NRIRfZD20JMWPamtt8LEg0hS4vcWDmLRUSE/GIKhKrTNSlNOxaFaYqrfrD2/3efhF9oJ/RNKk5XrfZsWepcjVBPWkqZqM1frvkx9ztFv+bAB/EY0JpLUcV6n7omAoDZgrhCQDLuSEqACAHu4M35O1Bkuy3+62Dt2/77W1CWq1W/+Dtwf7+2/03b9qtOJn34McjEt/KrK677cgOXxKW4xA8ljsiDJRq1ZW8/7a/s32Q4IO3BztkZ7d1cBC/Sd7iZC/uH8QHu8XnmWDymjg6LlaGAH5aUTt4yj9NCPOQzIIPBR7Du0mK2TCDqCS3W0pCcuyWICnF/ZRskcGAxjSvekc55kDRszTi7MmY13bPn7IEloYN0YjfhwxDywK/orbaL5NENKEcpYGGKe/jtCQX8+sqRsg8nnKCVaXZd6UVImCAVdJXlFxKY8JkbbbRmRneNpfKY6YhZe6wB3pCm1RYGw9C2bsCZGosDDNi6OwLPkbdi+PfkJvujEqlRSBCm0NK2k9JDqEnJ8kDwOfZIeXW67Ke6UxwPCJ+4O2oVaN/UHlFBFPkO4cXDfP6+mVdYDUykiysGy1tqLD3VCbFFmz9rSOSplhsDflWO2pvRwez/YEBfb22gP0HPtYkmyiYnyx8IvGWDdivVOamiu9Wip5oQOFhdbnWZXozzXvfaINnDq6f1ZzC7ZhC093yPbK9vdP+Zs6RC02XbQFIfLT+gbNDwy1merJNJ6ThOtCpES5+xDxq5U8QEJfwYDSHSEzGDZRMbocN1BfkvoGY/sWQjBuIZfDrf2NRPvNiMvcLTb2WmFvQ4ixhN9jt6CB0Cor+wAn6AL18F/EIfjV+ILrgQumtj04eSJyZH19dnLz2rXy+C3P76OJLYRqksBgS5cPE0OWpZH7v785tPRbC97UUkjAo+oRpChkUpjWgBddNEFbwKZoS6PpXDuzQWHCt9dARFxMuilBWX2GzfqvSs5qUzctncnqBw+rsr3Cmx67ZrfKszfhNz2RrP9qJDvZbraj9Zre9Ny9/dDwZYVlbU80cGh+cmzEg4Bts+4sT24OtwxwVqNmEBqLwMRTQhfRfbM65S1wYUDYkYiIoU6hPGeBtw8M0wgNFBLSp1uLyfS5MU9KYJ6QZtrFEFujTubMSjTAUKcSZENpqN8apgSGMR/B2Buj5SmDvDgP1JsL2Vaj9+/v7aEAFIVMCePv9lA+31EgQrJqCmCaEW9ut9u5Wq72lBI5vKRs2xzjV9kjTCKepJ6RsGI3UOC1fVK14/21rJ94lB9vbbf1DEuO9g/0djJOd/SSZu9+666PRg2NQd0mcFuQyGqx70Tk9v4pOfjuZl796kyk9U1UZlc9kbsPr5+uHzom7heHn2Ye8jae5D3iPXYWyMwyCXz39pD1XpNBNUf0grY+zf5SGHozQCcCizhV7x0PPHTccoslWsBWDbrhjA3gXmcqpGzf9hCY3iA8UYUgqPJUuJm2mQlRJkg4QZn51NVcTatSM/qDxx11/AnjsMuTmceXl7JxhXRXKmx0h8NTitoPwsBhmAAjf0MIQysfrIWOpL3maKeL6IOcqckQQ8YZeoOI+4qlWyiaTwEhsIri2pqAQnCp6Vyg3r6zpAr+wT9mWlKONBtpopvq/M0mE/t92K9L/r70/W9Sl5dYDIInnOUwzkQjChspfUW7P6LEhVWI665kUCqCCLgcOKta2wdAc63/1s/iWKIQZTqeSSsQZGvF7P+RYm21+TdC99qe9UlDcrFFwlNBHuE38F8ZG/pj5EakNRxlDQmZyQmPKM+l7WpWX4BnmbEJ6kg4Zhrh0QodEqh5Oh1xQNaorRgo5NPbCQ34ybwhoegprN7NgBu1XL5hpnDbMqBwhz4VtAIF9e1dbueiL6qBJth/SVWhrVQ6fFADqbFVU3jfOyCYntyx1OcLbe/sLip48UPlVoPM+5ynBrEqm78yfwja3dIBwLpawN0HpyGp1trkg5fonyoY19mPS2yWIAs67T6j0H3VNlGY7kenjmg0wuIqmZDUPFJns+LADJ8lbEQuSkjvbhaUz0bvqp09dQMMo74uYjyM9J4keJnEEOfyLilphldV3tXztNSjoAIcMKdUidxo05aYrRiymE8WHAk9GNDbdymV+R4Wj3uGUJiGulHbbRSaVm0+b4HcEZSwH6LU9hd1X86+45OJ8fD/sPZYoY/AURCp66p9cXn667H05v7r80r06Oe5dfvp0teiSZQAHUxdsUNcMX7BEIXPHqLKVBgVmOFMEj2s+9HqKVZ58GA+e36A+BV4h8ydvY9RH+UHPr+DnHfiTzx9++/3tx7edXxYVrb6hFB5P5hDuY49Dx/o8YZaYZ3PfE8lvDnMp6INgHvT1UYIWP3Bblq+I7dZ2u9nS/3fV3j5stw53Wr8vemXA+Zzr6euJG2+zq7hrLhnqiIpzr918OgOURhPjY+Vff+x7zibT/hxcHCQx0EtqRHM7opAGA7BIBRhxbWZwnrqGXNp0I+nUvEYbA8QouLI5vczdDEpxSTFXWxaQr0yHVOG0aGOYp229mYaYMqkKLgfEdaamX1yh5X+lWseFtfiKzn6unMZjzJJeSufCbLmnaRJjr8JWkt5XlPL7LE0dVUhTZTYKuAu2mb9VdrM5m87H85NaX2/GxzNbFqdp7mwE8ofaxJIXsoQXGLqAqAk9MAXynt+8y0TSQfQNXg0+4nikRV54ObDq4OTs/SOvBm/3m/M/HGhO+lNFelwktdXRvptqy4z8kcHrJx88TvwZVSol6IQlFM9tAGge4knWq/EZ8ejiS6Ea91EGTpnyEd/5CBcEtmovuDAXuVdPHpQw9TYm88JlG/g2l5rcTZk/m7l8EuuY5kaFApXWz2iqTMI1hAuTCLLtMPM4nQN8ay4QGzI2rSR43stiLv7JA8Tq5+B8kGKlCCNJFftntrjZDEcSRAzGnanJM9cilDs/h7YRvF5GuF93heovxRcZvbvCblfvzPWU47m96rw7fb0IK4DAWBMT5q3XgDw+dk6eQ6vepTWReowVRuYtOSDUzrsAqYQpMQ3RmFeWUmGFmk+wCskaKNC6szg3Wg/tDXC4fZt0R3RuTz6LbNnDfVoTuV8/b07yZ5RlD+hTdxHJ13hF2Z3y1C31HEq/ucJb4PTZd95V3R1muBXdHa7H5BzEMRJ4naVGYfA44J6/bE2COcAGpg3HI9fQsrzuQfyB6IWyfl5enGFDr/apCgBz9dAGB8Qhh/SnSGb95kwzWkipZERb9Tchx9FPN8873v6L8YhuL6ZACzAwM4nPtCn/yGwkpY/7NKVqCiF6QftZKDZLx0LLDFcAn8yTgfMs8rsjzBhnyA6PYpzGtl1ubtotRfggxbU9C+qN2LV7E04ZTLYYnTVmBZTIDOsLn0elQ/7v8cFAkrpe/EsEm9mWJHnxlFBI9JyLUN8ZISy4eR69Nd6hJXL1UItReUeFynDas/irq7YLS5Ta+Rze63JE15Ec/CjFC+yEIYSDvtHVCpP91Ver4XiBq9V+8RnmyKIHx0rOCcxvqoXorfmQz9D6/GM+woIkvZT2BSQE1kSqs0zNdMhPZ56RIEWAyoChZ/GgSDqoMSfTDY/kdNznNnVRH6vneyVsqWok1zMkiFUj+HrVY1J7v9naa27vXLXeHrb2Dnd2o7d7O/M/KBnUlBqfHx9HGql6cyQzzR6MFjMvkdBmF15E+gHMi6mSMw3EZQgM6EflA3QPoNKF+m4o0IE+S46QZv5+9+XL6XEDdadyzJlL/kM/fzk9lnndN/QJdkm8MHMGrKZT/1Zqeqf5prLwTFrm+ogzqUQWwysatjl16dQOF0oOULJjPtZUTQSOFY2hFHBMFR2Gz/IXp8dIkEwCXP89SVMo+w0ecbGTZux3GAeERTomDYRjwaWcBbdBrs2Jlh6XquKNLd6Od/f2koPBwcHOm725S0nzx5XV7cJvjBzRmUkQLB7eIEFwRmLh886MTGhVs7/npfBdwcsVVea1upjJl7cFg22liBi7poyAYhZVNYjPjQXcN7YCjOnRO/PJ3Cm3iGhQjRhm1ur/wKNcRQlhe+fNvFtHH8BonOzVpL4+Hu+ZKcqTypHHWFz1rN0PnfYT0+bJcTVMvL23/8TUe+154h0LTr3X3n50apkQMk8Wx0JTd49PTi6CqefYd981zM2mu9JM2MB/v8vHBFJmUGxL7U3tuc2KEkjSMU2rCgBntdcEC61C1gncz0vgnqcyI5fsOsX7W6Z4W8GvM73/skzv6hX4jhK+qxlY533Xl/f9iMTX6d8vPv37kZX7cbLAqxlcJ4OvLhn8EQn/aDnhj7C5Tg2vKTW8Wt7rDPGviWudKP4dJIrb1fpx8sUDhr73tPGAle8yezyk/2+cRB6I4aXmkgck/iAp5WWOXnxmeZnkl55gXqb4e8gzL1P9PaWbV1D/nWadlzl54cnnZYJfeg56QPFLTUUPSFxnpC8qse8tMb2Khe8pP72K/hecpl5F7ovNVq8i9vtIWn+S8pebu15F9otNYa8i9nvJZH+K9peb0F6gep3XvpjEvof09iqyX3CWe0jud57sHrDy3eS8O5q/n9R3T/E6A36dAf8XZ8C7vfhSE+HryXV/jmDW2fDzS+ubJsU/k6xvlzb/fMK+YWL984n7hqn3zyXupSXnW+JeYI7+N0rDn19GE/It3vnr7iaTM/M36SuTM/zjdpjJefzRe83knK67zqy7zsyzT374/jOe079jJ5qyHIZzhSeeFQ0+zb1qyy80aQkq6mzir/Ps+kSPr73o5xpik1nqS8n6z+va6NvdlNZgd3t3+5nEgds1h3CfFbOyWaT1Ra1AQSXR6rfFFQyMTo9XIVtLZY36yZIbvih6gs3szdZziabqZcdfvN8AlM5EJvQOhN83TEjOOBK+Xg9Lv0dBZugoyG30pXuHfshB0H8co77g95IIJIkCbUaVJcJFge5J37SPhduaqXSK+ISwIIt83lXIJpry5+3uouNIYs6SogobYa3GCEPZpLRb2jvbzzXY7rnQxkAvoYLEiosVuh2r3zV6c1iCkSd4tvR3VihbIz4mWzilMZlbNj+GR/n3cSV/aB/yb+A8rr1GtPYan94gP7y7+Lf3E1+ig+iJ+/bun5v6JTl33nz7C123GRpegmPmSXqBbtcTJ+/H8cmcVP46j8tR8NL9qfm3wwqcLUedIEMqlZWF7Ud9Gf7u8YbU74FdZBpIg71lLxs/gN4Jxl2w5Bj2F2vXDAWWYXbyyi3RT65QCmZB94IqRWwb7D6WZH8XERbzRBtV+RF8z4VnXJQZbyCZxSN9CrtE/aLNv5MHKFy5JMPPGRFT+7tGEYwAWl3LidnxPE/HgmI0k6J1k056+nc3kUfQ4BNrbPYz5UyGAFmJKGf13hHhKiwAOSLPZvV1+1oPXJ783Ht3et65/E/DOUmcBVuyJ3///C7rHLU6v3x+d9XpdDrwb/Off8xrZ8ASmxvoa5BLMxX8xYU8MrAEpmpXL6M+KGZcVy/khXLhGcYSYZcsXPVNkL9dC7fQESy/pGwYpHHZz/vNAFOiV1qY3d8bINST3y4658e97u+vzbqHyT6eBqpy54YzYse1U9o6cMh6sxPCRtWjf/xydnUKc8HYbrg0Rf2cyjssKFRkpgDTZoZl2ZgIGgOv+c7VYx7/+uny2Gzck597n/W/CqQHuyzYRB4/KCExHeMUCWLzpY3P9YpEQ3Sz0d64qUhN2vzXxtHhtVD4WpCkp9Tkuk/Z9XiKJ5OIPJBnwNrBxipnF68G1UdhlmCRFNfbXKNWWzicDDnLodkS83Ixond1MNDp9wW5o7Be4Hi4KJeer3SNfPjn2cd5Cb4l0xro/UDvSBNuHXpnswT5AFLzS8R2P72/+rVzeXKdO0VOVZ9fXR8Zi8UWPl6fjrUZ856mBJ1AmqHeoJ9gUnl9T5kmVO+7ub0mrEY1sA/IInrsEDhEL1VDDwcnFHR01cJdLy0Qf8wrBHN9TPrZcBhUxn1FQiGdqxTReeA+G3BCe5eXNsh8FOfGEmi1oq2U/+pxU2kzwLeUROmrekwsMtUAx/oixoqgCb3jJktZ8IwlCKMJJYD14ejTeszdXYDxAh+ASyBEg7NxMKlNY4A/YlM0SbH+JGX6hjk56trMU3QVkmCHNhEmTYnVBeMGkgqCVO524gMAn4EpjE1g70YqAuMl9yUtNh9DN1aK0Y3npKMVZCyI8tnlWkKnF67miUgXYnMBPpYQAUnSDcT7kog7IhouVT3fEcom2TZQnFLCVAO5j+pTwojSRnQ04OIei4QkPTqJ0OkATXmG8GRCLL7O6YXT24rn1NPJTQM+qUlS2lwwQgOJYTSkd4RpFpSgdxSn6bSBGNeWvzbB7kfEb3OqYDIMgcT+NEc7DaY6bB9sR61oO2rvucqgZUzpGsO5nTQ1dweWIyLN9uBMC0q4DWctLoN35I5FA2TotUsmjbMJyHG5XO2oWuQjkk70dpJUZTYoC1LVU20KvUUkoKSNcBG5CsKwOcYpleiVQQIjggw4fENvNK1K4TL0BMyPBgLJ+zXKV49vCuB9yFr/KqhkqBb8iTlbXhzh581VQtD7z8fnsoESPsaUmTL7Bvia0lps9ld6k6cUy2fU3tN5knj9h0pcW31+elHJXDHWIGsDYXL7G/CvZhYBfle1CD43/yuy8vdMZlfJXTLu30/cMPoz9rBD2Y17A3FQbxAPsjUpplSGTb3uRNzJCw+146QJsIWOrmgH4ZQIFXDLuAF0AcZyj8puMpgiKCCyo5knEucfGFcqINzuwkOnmx1RyZhKePrShrTgqb7MlL7uZMN9VBMGp+D0uLt1etHN/zCggtzjNNUbmfTdkAHSSPCBTKQWJU02EGGJwX5JiLKFrVpVmKtNEvTq5PjyNZIQS/eFS0TFK9DQOFMjXtce1uaRPsFDzOif9oLkAk0kyRLOpmN31AwRcNThJ61huUGkIklBqcIauh3ndwxo98K+D127rsKiecZF8gw/LsaKDFcauSsebjeBFYs1Hu1QQeElsZ1t7D3lROBlou+qfNO4GrtqUXSUIuOJdr5OAwvujODbub3b2h/Yr8CDL72tw7Lb5XZyqGbyXcrjWyTIHxmRCizFSdZPaYyOz7umMu7D1dVFF22hq7MuYBPymKdy7qulrvLKjuHx9NioLypd1eA9VSNT8Y1kzA3Mj7aNh2Bmeps0j984tVm5cZ61Ydqt9rxySWlMmKzrESZ0s+xM1jI3NtTTmsGLxlStaZcIJwThO0zTygK/zgTHI4K2o7lT7mp9gCKFV1rgE0KBDkJ1vnNx9unon73j825PH4Le1Vl3Xt4EgYebuC4GNy/dBOjL5ZlePfw15PFwrf3qVt4G/q9ajHp4bdGbu9YGWA3c8+amRAmPs7xeuTgbuGv6ZG5u5vuJcZXvooZ2IkKERYxSym6BH5N2YQhMzSOWEUHf+Sb5JWeRvMAIKkcqXd4GYdE9vaUTklAccTHc0v/aWmh5tQVWG/bM+czOlUQ10ISnNJ42jMViLAJIRPS3rna34GQ/6+43Ja9jMu7nUGJ5gM4GT3sXVuX33hvra145ZdkL0f0Q1+HCZzF4GcGVIPM7wThPwWVgMB2+fh0UFWb5Wmi3Wub/zyu7etPWruAUm4y1LSTIHZWzpkOfaK5h70DUxHZyKbMWfYUnn5ABEg5dp27+myecp479nF5kB9mCpX3pgUCW/htD2DsVMWfMLs/AG+rGFUKCDLGAsKwk4LbIRvB5s/59ah5ujT4dpPwe3uVEkntS77lAV0cXdtSGhQ5zZBraYkLv8gwayqiiOEXd/zxHExzfEvVKOsREO6geMKfFPPqYveiNrtmZrIJMpyV5/K9cCzi5QKIctoNDhNL6RwjHKjO4C5JYZH8xRht+vA2tP+BWC4Z1VLAZwqWB/Ld/tt6jVd5aiytMU5lfFnZEQwpgt7OhW+B8ipAPGzLpFiYwfjVwYUcMYM7BOf13xsymgIcvE3W0364aLBct46o05ABUsF5Gk40462ofmeG3HAvFtzUTJsNJgiQZY6ZobJ6hHuCOxQyRB5Oq2CgodSohtDbIUv2xO6rZpX+S/AVaM0qEwoXYm4ubCj/HQDvUbkxmVKi7SEzg1D55SkXTFBETrjPYShAxAF87COKCwAY0Tb1uwpOJ4BNBsSK+pcNSTvfciF4LGVRwGsyVaBfMh7cLWFF43KfDjGcynZpdDt/x2h/ecaUv4k6pVHo1Ty8aCLu4HYSgM0YfkOR6/0QI/WcucZze46k0Af3iVY7vHU3uPNxE9hc3RmRF241p6yp/uk4y114BQuURndxoUm4iQ9ZNAyVkQuBVAHFrSyDOgoikvmZnEoewjAp4i4vkDlmQHDMOwmnKPZU20MEZH/NMWhVh5J7/2hNoNYgd6FWne/66BEsDScY4HuWRKSNKk+VJKm7uvfb+wSzPYXjmJWINzJ+t9CngpDpj72fOhylBZ2dHBSlUJPvMk9v5KILhO0jrASiVAIsTTqLdCEZhlxfo7W4x4ALb+SuULdxBJ4i954inQKXdnJXt11y7OhMEZRDiw2iQ6cvlD63DAdkpGNvE8Fn+fpA7UHhsn/7G2PbWyedIiKB3AQS+R5c2mk2bNkQrEX1/CT7OjVYmaDzSjlzZfRpwHtl/RLH9jpP1kPAopmpaV1OmI6qm1bvyI2dKEJyWyeFMUUZYFWbQSmi6uufN1CRrAb6Pv9hdLgnMvimr6T7vzOsAFJmpScDnhW5XdrIy0VyoEepA9hGuIDJjSkx7VPK6ZH5kpkCn3U8g9BKFR51Hyapra1qSKlf5CDOclCUFN1vJqSuRMyS8FwLnF5EHORtSlSXGBEuxgn+UY/j/jTZSzjYOUfPNTrTf3n2702qgjRSrjUO0uxfttfYO2m/R/2yWiKwxLrf5RRLRdKbUTMwaIyeeBsImimQMaz5AQ4FZlmIR9rVTIzJFMYDYaU+igClnTR5VjANSYYzkmDDzhgQVHCk3qXV9InIkMOet5MaFIS/NgXVNrLiBYqejwsTFcw4QlvqDxqkCH0TbLGOwbYaEO27LGrfPpeKsmcSltZlwqXBa1ynbvIDhjVrDUvKYFvMEPcmFVl+ZNpFza99mpfiUGn0vufjeLeP3DHI5kWbFgLEJ9PvpBQp4QrC1wZS+w2KK7mmiLTi41eyphsdT82NZfge7rd25w9BarIIMKWd1KrBLmOEp/dX8fPQYXTVpMEtTpQL7nJE+Ke8/7dX8yWe7eK3mWnXlNnp8/3DhNYLLdj3tnHeCz1USby+qrY4YwrWMt95lhHHZ61BB5n+2mnyFy+psiDwxasY+fHV6cberd/vpxd3+62JOxBjHdZznj52jamJmgvyM2wC+sSrNSbt8f4TetHa3AX00Gw4BxfkQnWjniceKKPTKhl4b6G2zT3MTVdv4r02PR2sa2afZe47+lU0mRMRYkv9CI/KAXeoxdLmTaEjvXKw1zD9EjnwzsUkGz5jtVUyZIkMiItTN4phISe/sB43rLskEC9clEPsRR9PJiFRo31ar2Wo1907gv3ea2zuFlWJYRUvkymxeCcykDUpBPV0YROljfVGcd658bNLiRVLrneaXH0cTQe+0uj3++PvrYDmLlw6o7pTjBPVxilkM116QUsEFEjzTt+GMY6/5nPC5CuieVagWCgCqhF+uCEx07xk+brFU0Xx7IY+2WLBXXoYliyit2EN1gNBs1RERJOlV+dIrbmxOhyMiVTCpk5GZuwGMTCYk8SRnffOnmTIfK75GUAICw1mvWlslGzO+7IZWUhvhLx7vnm4i14ANC7CMJKZSWyW29TlE+lJ6a8tFTf6EzAYD+uBHhM+8Gik1OdzaMh8xn4i4GL6O0JVJLVXcmFMPdOwf6/pTJOl4kk6Rwrf5uprIYIqlAuWa4j5JpbGcGFeQGmgQkDX3V2fH0t+jGzGPstuNsvp7zNX3Yq9zN/hJYNN7x+CJQInLSgsM9Twd0aQAkoeYTIxD4cMvNhWiuFXsdo8QOmXaQsVC0eA5AZUoAOVh27Tq/2//bjPXvPcCbkaW2sr4GLP8PQEV91UjkIBtiSDLDPVJyu+rt3n1mSiem1C2G/f39xHBUkXjqR3BbAxzMrBUG3kX91PbkNaMMsI5SLbh1ZQ7uWlym21DZv3tSGb9duHwNQqbOCevALBspRCMsdEwZ45xpASmqT4yEyIor2hXqxmY195TfNIDNr6B1iODAYEexXpWu1Es96/I1dnx64Zxmby/lMvdC82ojoZ7bgQloLes2yvBIYnKCnJ2Xj9sUGGsVwn2wfetGUErPqYU85WYTz3C7wv7JpNERPVumTBKl5cU+0znIIcD8cFj1yJm6Oy4c6FVVsdwfOyHCvfKZpk7MsY0rYm5L5oDmKDYRKdAgNaeK8Yu+cbvLJrNTZlfAxBqeiKdLu0TodAJZVIRu7EKEoFH1L9s25k8mtr3nWGythyix7tz2Dwhm0YEDztbLqu9YnsaOmsMnIYrYSYrE1EnDJSVFGgbqNGB8JswNVCFhENTYGXUEkOYcTYd0z+DjHQjQv/PL5IMslQfhhvggibmVRr+obm78SZAzNnArNVskiNLKqwq7fxVbaqvItKsZivZ1YIpZ093t9lu7jW3283t1vbu9u5Be/vN2zfN7f2D7d3tg93WbnN7Z699sLf/5u1+s91qtcpMrC4k+I31YHekvU9m0exTPqTsSVHhiDyqAwVPa8Ob6Lg6StjKMJN7lYDoo6X50QKKW9rHDPdwMqZso4E2BAGrmw17esCvVlWEOXMOgDFImnO/erKolbhvl1KwVPg3U0QCEYo8MzxoN32PJYp5mpIYgI/sb6+gm5odGMr9pjxDA8oScxy9ckj5UFqt4LvuuLmhHNpkIdqTOuBcMa7IIaqg376iS5IOmqapnHXj7Ocs1ln0k4HNsL806JDRTyhPfPaCMF/Q/FsMSfsln2HjEqaghDfm8PSuBZapITcwEqZoooEg986YkunU7YgP/J5ASatyjWOkiQnNQ+84084qV5pnrfu0QnNrok1r4wFyrmbkRFSeE2szfwsrb3L9ClvLdruzabDmjSdvdiNzweQk68XQasBD+hUlZocN5eYLTLjw2ZiztNmEBYPsYblySanm61G+AcvU5Wv9FfL0oKVFdDSLx6izm+RJyl5wjlvHPgWYUlx4CnVJmNRvyuJ5B70w6/oFcCjoy+VpXszn3hpe0cnd7qEJ7wr0Lzq52/8v+Odrk/wmiMki9MMCTsQrkw4nq/ogvdmOtvejVrR9uLe7MzcUNWF3VHA2JnP1oF9Ipqd5WpmpPPMzWjGHupZKJDLGihBFNqoCcGDugyJjoII8Alg4sESvLBSheRlTeEjZsIE+dxrBdXxHUj4ZQ8ETUXH0ulGiT/vuvieayTTSVy12wDWOqjziYE9ZDlJm7GSvNLUaC2o3ZRD31twFk5eXOGdp7tWdjMiYCJzW2MDvxM1RMu2CE/OKDgACiDxQqbfvzHGhCWLaVk3TqcUfla7JnCAAKChNB78bJ2BtBCecSK39y5J6i3cHe63WoCCMWqzaiv6FvkIAtnG+JU4Hszs95uOJoDIw/fnAgF0wnhCbfVFgOdcrfsuA4QCBm4TICsHar5SaD4bEWASuMb7V97pCEy4l7RuQPG+n5KEoba/ojTwmStDY2C4A8DRjvRQhI7ThBAHjOEuxAHr9kGRMFSS05gaj/9s5VzaxmhpsC0bMlS0Jyb9gT1KBDIhl84LY8/MfpHCbimnjzGKFbvT3rGelHS34p5Y+mNm4Ioia7Lwhe6Q/IC1M9uPdgzfbSZ8cDFrtN7u4vb/zpt9/u737ZrBf2I815SwUYhJus5nM9ydvLVLK2LS71J9MsPMBGMTuF5ym/N4sv+9zH2xmr/RAqiIDLAEfDweUiaKXbCwFV4/g9Cy8d+YnhPkwf3hDWNMFS+DgJMVS0dgibxROkXOYw8i5eWjMpPJJ2igICr8jWMmqQUxo1Sph6Lw58SiG/qN6IW9y196gyAz0wTBvM0Hf0orgfMhH0x634ibiCak1H83tJuy3BEw5o2eCnaDuudFF4QUZXtvMps/7v8ExDUouQ1xPSK8CQ9vAmzSCRXCse7WYp5P1XbdVP6i9TjxlDuLGjTbfXppRyQEJ5R01Q4D+rFnzoP6uuFHtHow0CXp6WWEg6UuPbW7mYQWA8rZ2O7ziAXN+tsbMqx4XjkgLABKCjueRDA4nmrJhRuXIr1p+KOFI6/sCZZPCVW/vOS41qSgMOFk8RysXBlYw5C14lVC2rSp3Ta5g3O55jZpGK3gZW6bGmJmiLUkqzAQ3X7Nl/9Muamjrya19jtX6HFasa9fjR3Y93CKvPZDniGvto6x9lJfgo8y/Y9dezNqLWdiLecY2W/s5az9n7ees1s+Z//jJAFx3pSWCBrEZwfgz0pgbmNPSWBM+OjwTO/ykZ99G8MWZtl7GLq94Ay7YK95SKDxCGk6CSU7cIp8OzCBc+DGwIDPUzZ7yRxT8vbPgbgq6++Yruv2ZC1aJ37OaNful2GrOLZl7t5/Dm7aaXnGUcn6LsL4aDR4oUebZdObFPuhu5++Qsrx2ou1o7jaLf92p8+kt5rV4HQFZbQTEinUdAfmRIyBukdcRkOeIax0BWUdAvpMIiN2x6wjIOgJSZwTEbbN1BGQdAVlHQL55BMQevxcdAbE0riMg30sExC7YOgLyNTmtd/RL2NFPIm7/TfarD8rlESJXbpT/5olqI/MpV6jj2hqVoJ6RJKbOZBCgdTuo4y0DuBIUeMhC06QAe1lvDFyEg25YvJYQwB1AL62ZEIKhGKoKRITQ2HkPv5CpAF/6K8jSIZ6NhZfOeXoMQDmYJeZM0gRQHbTMtGuRUkbCZsAGJdiO2nfQy1BTzIp8y8cmdGIoCtPt9RAp/DSodTOhJz+2izlYyAuHJGmwr11Vk3dYoIzONJOr/pyTgufSwMZ5cX9fONJW7msc6TWO9BpH+i/FkTYn0bVqz5XgCwSTNqSuwaRXL/I1mPQaTHoNJr0Gk16DSa/BpNdg0msw6e8TTNrYhy8ETBqIWYNJvxgwabs7vgKirLUyRF7y6497fOVKIOWgtxtSAkNskQ1fPLD0o+KIlpTHCwSWnt/F/Ybo0lY/oJeELm0EtUaXXqNLr9Gl1+jSa3TpNbr0Gl16jS69Rpdeo0uv0aXX6NJrdOk1uvTfBl1ajQTBRso22+sq/83j2V4b702Wjj6mKZaSDqauAAaK0FIi9I9xzEXiDCs7F1L4gTM+nl5bCq+9UaQZ/nh6dXmCOldX/+fon9cPnRM0EHhMtE0VXbNSQpjWBprfAiX5wJYOk9/kvRwqbAjAxcROj7sNdP7z+19trZ7La8co5uOx1tKW5CgfGuLLwFCkcKxoHP0UEjYmmEEjf5cIp2wswhrFrtU+4oN8TOXHtIRdb9DxBMfqeuN1VJiRxCNQCE9Pmo9sUnBuKYMoB9i4OB55fOj+1D1TKZN/aOZpwLrFMR9PUirhzSYfcshx6skkLIEXRpQQprWn9tNMwqEmfeN/oSVTtvKEgnnOo0EGrzx1xhPQMsjfoyhLtEvNhUS8/28SK2nnc6Fjm12IWVIw/gMgaYhcuyEpZ1tBBsS8/mHAY+RJmoNbQ3MVt5/gL0H64yNcV3C7HNXR3ymZaxkhvfTsr+USvBaWjLPE4rrs3Y28bvy6p9Va746whIsmI5kS8GbtKLjuCQCjv+5lEv4n0IJaD55zRrbO+P3WR5LQbLz1gQ5H1z0Z4zRP9aQMdSaQEfmAOu5q716d/oa2o3Z4wwXj/mII8tncOUUIBvfNEEz+FZYozqTiY5dvfM1OHiagzcNR7+z7uiCH1wyhnyCzoOsq+9yvGDE/nfF784PhzfysGdyYXXnzgeVWPVihmpb92KVhmKvWFkiYJGct4CSL3dtiftnOsnp6gR4i+H+QtG8aJkD+SUrviHBqtMOGKRHo5J9LqlIIXdSMUBGgKHgzzVNgn0cLIRT0ioq824XfX3xg/XjK2euS4CYjKkf/bzb+v7BgBjQlEYYXWjKPB5/kBW5F5/MMnje00Q2BdJoaLA43dGUROOMKLEr9aXO/SHRLyAQpgeNbs6v012Hc6CvG+HycKlu4XB9MiXNJQAT5fIEAOv6X9qkgz6rpT5GPYKAPRJDNTQnlm6xJHkY4kxCaceaX0UOBOaXtJ0EQsTrL5KW7pJ9DhEU8onekYdAKYF0aecyogQiLxXSiSJIH/ckDiTNFGmhEk4SwBhIEJ+a/9TXXsHZBA90LqioKYzb/teE+qx0s8+mvOlZzrWXME9KTdMiwNtOjhA6JVD2cDrmgajSua4HhPRRLsPT8ZL7ES9NjQuiCxxAm9aKcCciHBbWeCyjx1T4T7B4qkc2m8E84UMeQB1CmQUm1/qQA8A0b08+BV4xscnLL6yRHeHtv7nLX+VfF4Ih8JQjS5zwlmFWJ+535U+gEUqjEcjNoIdmElrKHr92hGraa/omyYY1YLXqTBWGqeXdX0KqogA0S4NlADfQAx5oRk3yDJB+oe603jPkWBWMSB2IgkSApubOucWei9+JPn7pQMlf1/jKO9JwkepjE0UTwh2kNq6CwyuqEm6L6x9kopi/Bi4mwFVsEGVKqV2OQmTeslA+HkI2uVSwfCjwZ0RgRIbTz6LM5w1HvcEqTMLuWC+3gS+XmQ2cE3xGUsaCObuDytOCr+VdcPnk+vh9W39MZi0ckvq3CpTi5vPx02ftyfnX5pXt1cty7/PTpqobVzMDPriuvsmuGL9SIQKarUZslS5zGgutzgY64mHCBn9VQZ26mFcHjmrWInmKVqgTG48LqClsW6xSIxb8Kep75QZ+pQU4+f/jt97cf33Z+qUHq+g5VeDxPxuBj9u6xPqCYJcbkvfeVmG5LmbtJn6whYcRkOkJ9Jtzn5Ztqu7Xdbrb0/121tw/brcOd1u813FygC+Yy9J+4kze7igvn/gX6qELHoHhUzHf5RSsm05cu//pj33POuYmdQuCqYYQ+orkRVMhEcb3qco2obSTOU4tRgm1nQQTqzlhPRpmWTdearAfQzUuuQLVZZJ6Ah1ThtGggaY8aMqLwEFMWFK5BXTRl2vWAQGwBravydsGFZfrK1bE6EWpvejkH9b22qGEcfY+DRzmvTwrFv2aLFr6/Es70SCt2vHOv04JCYFNiA/AA1a64A/OzcWEYxu4I455mE00BuhnrqW4sJhjV55JIdANcBDAS+hsQVfs36Bv3KAeOiv5oA0nKYj8cJCmwnG6fj6cltAopJySA0lh9QMyiUJhmoUEacchGyeNK8CoYc957Xbz5LJAce8r5pvYtIUKnvq7d5nkaTSTCqJapzmxY/zavTCrJZWvEx2QLp/l6LSUfTUTPTL6siCqP3zEU99ra0ydkdJUXX1FprilnD+X2PUO/UpbwezlTC2KiBjl2gK/XMNeh1lmh5GOeVpWwLfmeAPIk6SCCMJIi4ELWtO0+4ngEUB3BVO40nZy9rz5RD2/3m/tzowZ9hcn+VJEeF8ny2+YRFt9NteNI/sjgNYIPHufrjCqVEnTCEopX4YRo9uJJ1ivjJq2MuaOLLwXopEd5O2WKpKviyV7OvaSEwvasK/XkQQkM8VNQVh5B1ReJ6Bk3pb9YI3RqiLHhu9znUWAg9TOaKoO0N57Q1GrM2OEP9wka4FtjqY5xCo4UsMKFXPLZw4uGPEy4mOvZf5BipQirfvk/s4FnMxxJEEkJwDCbODaY5tMJWRnZI4ITIiLcp71KVKmV7dcZYCm9XTtBzOydMZHhHXuAY4Jedd6dvl4xl5B5UxN/H2AKk9zz2JlcERtBy/uVGyPailVYn8WABzvvarkgTIlpWO+/sgI7uxT5BDWvh8lsqfn8bG60HtobBj3awZs4fuRKLPiQI9nDfVoTJ18/9m69zijLHtCn7orXq8Zb2W69py7mFTHxzbX1apUAHa/0ujTD1X9dSltbPAfdj2f3bXYYwvCIHaa8MZshZ8pxcDxCdrLyRip4LrdkaiNvufdin+ssapokPmEwBHbrT5HM+k2Th+OHhIJARrAaoZuQ4+inm5VpGT9mPKLbi2n/Qtpe0TAe0ab8I7PB8j7u05SqaY6oXkC3jMPC45WxpW8ePpknYPAszrojzBhnyA6PYpzGWWrrDXx5dU08DVI8rMt20ju7azc7nGiYbOUs1FiYUuIgzDtcGQMOhKfHBwNJ6mpWU+LFzFYfN5L+Oc+6PAdbr8SDxy/Sk62clRotihInBqR4xQzcUaEynPbmz997lkVeYsLOVyx1rIGfxbfWAsysdmsNly8jmN/QgMn+akPDcLxaQ8OO+Qy7bdFDaoXqZOm34qpZqVnXzLCxUm0zwoIkvZT2BRa0tgRR5xOY6ZCfrlhDlPO6KvYUSQc1Fp+64ZGcjvs8NfWn+giv1MHU1NYZxYA3Yj9LA5GHOM0Sl6yQEgw/J7y6p5XPAoHHH8g0KsBv+IEleuUSuBUW0fDP1w14EfJjelQE6APg9Zl96k/Qq43hnxsNePfZMCNsVPQdnAQ3xOJCH3Bxu+Kq/plrQO+TW3gCznPuTH/HGbhDHLzK++PhhfaJmZBMI+jR6If2aU/wlD87UWl0P6idBXXsy7pBA9fLipXeEHaNYBpXlw5DWvgW80CXz+cH1t8w1SeQIlvk4/zqfbdhNAG8jOOUD3kGr/OYoU4KaFuKmIBoVwmCx+hV57j72qXHELfkflTT5MB81JR/uyfKf2dSaW8tJQn638edq06EfueMRKd50phpcDeGV8tCY6D+1L1YQuYApO3btAGJEn7PUo4dsHGxFAx1GOocd+HB3OGB5VK37+ZcjA/RzdHh9QSr0bXi15pmcF78WTqUfEx6fpPeGAnczPzWj2zf582DamguuCQXdJN/K0I35Qldeyk/ZPBNfV5CKkpfmv1w/gHImct3R5am0Fe0YT+of75pmMSK8KkXNl6AzBAc/3ARA5d9cU0wrC1T8ULQMRZTi+hweoxe/Xx6/PrJ9InNdqvVXoUlltfS1s1XmHtaydOqkh705RuNk72auPp4vAf3+yqudBhHjnC7Jlq7HzrtlRObV0rUQO723v7KCd5rzxPIXJDgvfb2igmWCSF1Hclu9/jk5GJlBFNWwiZeXUEhK0HZ56lFuaXpehzMKsjtvf2dtzurUJFjOiZ1Zot8PP14Yl6lXBpZmHFu8W8DxYm4cKYMHxTCbAhBfTEaKTWRh1tb9/f3EcUMR1wMt7CUdGi6T2+NSUJxE15fwp+jh5Eap/867fiWANoYGdCY4tS81fxXw2Z5ubSQCP2q7f6xSRHFDOxBYIZKV3jTt4BufswxlyrvMRWy7jBxVrFs9W3NjwASPijsRx4rnObbtRo1dbO1v9tayZ5cMm+2Im3W57tqp40npk3rCkj9RpBTdh1CjzVwZbWL40qXfNJoaXmcW7oa15Hfs9rS58BVhwk2wbsTlVgKq7KotPm9OkZWjyrx3vkLYQJ3Y2Y3+LBERcZuIfSQBDmtz8vY3VrtBpqQb5FsenTxpZhoahpven++Otl0JZmmEyjhn2BWV/72qUfmNtOUnJCGa8QLSfo2Q7FpyiNmWK6rKG5CvgFqhRfETIeTBeRwgcM2MEvxrf+35tQsz/hdMWvmmUzvRzvRwX6rFbXf7Lb3VsM9HU/qxEPsmCi05dfm9ADgIbo4MacadRiyVKBmE4Ci4WMooAvpv8x0ch1QNiRiIihTpn4KoI/utKIcKCKQIEaYtp2j66QZ84Q0gc9c3wrMpK8vlqZ/N4/jTAiSNCzmmGnLamp0rKUpsA9hAvUGC6JYvSWsWYpVwSAeUEHIFDTPVj/lwy0DVtLUdpvWg1vbrfbuVqu9BfE8yoZNm5bcNMJpWviDSNvKFb0a4v23rZ14lxxsb7f1D0mM9w72dzBOdvaTZLCavePSDHtwhGo0sfz5WUZzdi86p+dX0clvJ6vh3hba1s2ynWYZ1jf8rQFAhDZaDD9/mhCDCoW6BhZkBbJ5/pN6xQuQHkTrCfAsC5H5oGrH2EUmOqsHhSK2Df3PCkDq9v7O21XYC8Yy6b10c/TKGFBgkGorSk7HKWW3K3lurjEOAYsPzvgrs8sTKqB7gKW/jMakP7YCnrLaIutXDn789Bi9+gJBdYEkiTNB1TTEBXjVnYm4G+eqvrj7w17rIML2KYveGR1e+6u7hYEI5rXJuK+6nfPXkXGoIdDjAZmqIDNwpkYcRAiwxkFFNGyffqbyBzOHjJw3oSKygY7PuyjkGKFXtsFaEmORSPuUVwAMyzOF8+X4KbKd2KOYr2xZqJQZEZFhoc7L1a2LhYiFe+bV0TlsRE0EAKYE0vVyLwnCtsOHCDqg66GOlJnALCaoa5piH83d5nNu+UCzu9plY7rrvTp6DQaknGX9S3fFfAXQVCSpc/mPw4ns6h8vsvpH//jSbaBP/3C74JTFDfTpyz+gcUqOlddAR+f/eGKn+LNY146BdpU5pE9dW8ZN43Tb2euSRao3ldZKv1Byv2ImQzzWmhkNp5Lo1aclFMcpi2uUA057GaN1GexV4sAp0jNqqXxZQCwzJ2fFopEKQ3l1D/yI+iBq/b2v59Omj5vP3/pXDdQFG++idEaOcEoHXDC6CqAG4J5x1YMAwRzsPvZwcUXH4NGbyMAsbg6ViHFwbyDcwCRNoPEUgM6UFnm7td1qtt402/uotXPY3jvcOfj/Wq3D1tyNWudhuE8GfK7Y7cIcD6iQah5u2wfN1lvgtn242zrc3lstt6YnUu+WTGuHoeyUkCcdzlTYwOmWlA/2ZXdll1rAb5yJu7oOsfZhYPwgR5Ygkqb6A7H9U85xAHMJqBv+UqcyAOx0j68l+TAq1WRvu12DkMjDhDPy3JLiGWwCM4Rf9oTAY83MonsMtzkY3t/b23njFoQl5GGmMQiPeya4ONswZHWCWTJqA00J6Z8+RBXsBTnBsYnlUFX2nrZbu29XxY4kguK0Nzdi/xINbMxUDosfrlR/LKpvd2j2BApSKsLiaQ7w65qrm4xI2DGTEWYZtGtuIBrWU5gwtUvH5eDkptrw0p6qx6TxQ8cjDDgaoiz4vb33794dHL05Pnn3vnXwtnVw3N4+OuqsTDN59LPaFfFpsS9VARXUQ7AFGulXYh4HxkTLTIa98IxJMuAZA+Tmnzk6w2yIjgAw1FYKTCPUJcSH84dUjbI+RPKHPMVsuDXkW/2U97eGvB21d7ekiLcM4uiWFgz8VzTk/3G2s/Omebazt1NuewQpaM0VXhM26PLXhBOkjyc4MmYZNpUY0TDlfZx6m5eRVTzxzfD/V4QL6osWOL5eQrighMhrA336cD4aL+he/SO38Rvo7B9dzNB7gVlMZcyDeEJDe4cRRA++2W55MaGCglBWzeVfHSt4TCkUFr5Opl9AYGBGBitj82/q5Ns8i3otwQACRU9qTbPSNt5ZlikhVU8SMs/ZfNR9NyVRs3DJlCntwg1NMx5brQWOvOnCRwAseaSK3YK1V+PJm+V2E+IZ7XaztXfVfnO4vXe4+yZqtZZGUh4SHsVUTesCJz9y+recOMCZEgQviZAH9HOmqPYce3EpLXglTFzd86aFwYxLeet+9k1Zzej5ktZmkcWa1um8AB5vJyuzwoUaoQ44UEsqFcMV2HM9KnldS3dkTcbT7idYu7K5tJLVMXzUdYYsD5W76wgzvCzcruYB0FxLlkqJ/iHhvRA7rnhbcTakKkuMPkyxgn+Uddl/o42Us41D1HyzE+23d9/utBpoI8Vq4xDt7kV7rb2D9lv0PytQbXUW936RRDQd1MJM6iVGTp4NBxBt+nryARoKzLIUi7D9hRqRKYqx9qf7PAtLZo9chEKPESQrUWHqXmPCFBHSNNUfpJwLGzxp+PhH4rqa+UENeWkOzmJ8iQaKvblcLAPPC1lNdI4yaKQ4hgLmIeGO23J6UJ9LxVkzWfIFSi/mhEuF07o0xeYFDG80/Gx5Niyg47EA+Q/d8vIMcptZ7QGRx3jqoVBvGb9n0C0NaVZgIi7Q76cXoTeLkE2WsH2z7mlC0qkpM3YOMHS/hh/LAj/Ybe0uGfbXwhZkqC29GlXzJczwlGZufl4S1zlgpCbdbJmoVM2fM9InK9j32rD8k7NaLBvXTlqP7+7/XHW5xsunnfNO8LlKbq1VsNURQ7CM8Na7jDAuex0qAqyohaRA5ymZ9B96duvCPH2p2LcQ8YE/lE/0LWxH29FOtGQOZIq/qTsCEBwvzhsZY3FL2TBSaV01shtXAg8GNEZnmmV0IbjiMU8hUqqteUuBjNClC2WbR9e8K2rYLhX9hH79cHp1Yjqf/nx5cnJufux8fHdyaX68PDkutUP9dUTVkq9Nroyvh+eJsKxqy7hZw85hXh7+7vv2O0dv5DnE8Ngz29e1BKCe+B7RC2iJ3d0lIxY2L72usMtV0b7M2d+ULiW+vJyp+LOXiXSEsyU1vCDQz7G2QNqlGx99uTxDKWW3UDrIQ7ycqmZ4T25m91Rly9SDnKIt/6WtVqvV3t5Z8nbQRozU5h6A8odl4St3az45kGuYBZqfKsKMGdzHkuzvIsJinmg9nVvC77nwcDmOWMRNFQRnMjclukSB1XzyACrnkgw/Z0RM7e8axf5XMYdzxlni2/dYBCKtoOBh+Cad9PTvbvLEAD6xC9rPlNu6QWNRE8gRJOZ3RDiUWmhglqPr+bZQWqVdnvzce3d63rn8T8O5vxAqgGk+v8s6R63OL5/fXXU6nQ782/znH6vcAQYk8WvNR13GdeU6H7mScK3v9SrrA2HGddDNXmYXXh7GYDLYhlXfhOWxS+VJht0hKRumuZNjP+/3iklMf6Vl3f29ATI/+e2ic37c6/7+2gJG5QuU00BVXswGkGIwrp3StiCRJoQOE8I+1qN//HJ2dQpzwdhuOOju5Ee8w4ICKH9K2FCNzLA2gwB4zTe2HvP410+Xx2Zfn/zc+6z/VSA92ITBHvMeZkJiOi4BDaBXJBqim432xk0FEtrmvzaODq+FwteCJD2lJtd9yq7HUzyZROSBLN2PuLjvyhUqq2lhqTBLsEiK28HgZFpd47G3ZgVgdsyKmBzR2VSvlfDX6fcFuTPxBLhjXf21nq90rXz459nHFfFzS6Y1sPOB3pGmIKkpMoFSKD4AmNJyysWn91e/di5PrvNaOXdNnF9dH2VCEKbsi8/16RgPiSlVOoHm3Hr3f4JJ5fU9ZZpQvalXJJxyqdlKpPM+BzjLQQpMc3JI4WP2+qha9uul5eVVTIXcro9JPxsOl0VM8wIM2ajrMcIkb1krpLS9VsOQjDFjRPSkwnMB/z7mRUCgXhPe+WXr5PjSNpJ12L0ZNPwfZGk6RQlRpo39GKc0pjyTYb0dtEP+cnlW9iGW5NO6+cvweG48IL06dAydUkMTGQBmeF8ScUcSrbKTLLboTuBTQY/SqqyV7SVDljWWTm5c2aYiBYfQ39HGDD2aaql8As7BYKAMda9Of0PbUSsKIwblsMKhCRPgTHHGxzyTTeNP2F8LRQc4VuZfHt6mFIZI+BhT1tQyMh+F8romThJh/q33l/mJTu52gz/Qyd2+/efMmGMcB58bZ4o8mB+1L2x/Mi2WzT9cs2Tzr0yk1wyFQ/4E9ZpNHEPw2nzq3mi3plMqzVsyNX952GsdNIPEp1IQxfOx3NbJRBoZ6dXlUh3D6E6jZSLNrcYNKEbxZY4bgdF9ypDkY4JiLCEsoR3XMZ4icJUtXurphb5Ptrgw4QmzPdJpjomEUYE15EBymDm4ptEioJfmMVADyTDkzo6/MUPcmCeNkELDkCbMVoJqOlOqiMApOr242/djEhan3Ka43/zrxmCI/tcNenV6cvUeXb4/8oNuv9nZfm1oCj+YZ9w6N8A9q3joYAsc58jNw1JAdslyLkp++T1UO4Sz7zyeS9tXNPvJczxa361KaDco6IwMG3Ae/Oer8uiuwackCtEBospg/MqG3syMK0TuiJjqKQyS8Mz3ZwZ3006IoDxB40yaLsV9h/ZFEuNyEZezlpsE8OE+QRsTNtzIk74BODrSv/t7AFnrnTcQGEDj69p4FwbwOVBgFgsGjtt/3ATqTPHJxswi3/zHjandUmiCRY52aIletucACCBL0zmYn4mHrB4c4nRg4I2/XJ6ZTgwGVQYzpXXplGdC34C51p0GGwfgu/MIAWXoxrF2A0hlALOjCr12BYk5k0pkYEtCemDYFgJge3I2TBz/0ShmUR8e7u7ubBnQnP/7xz/s782//0PxyfJr5tTTS1i3zS/MP2x4tQnbXCJJ4D0kl6eXY4V6oQwxou65uEVjzqjigrKh0VreKnb3eJ9o9Wi3i4XexDLcABg8BpTyoc3v0F/VGnigCDPg5qEZap4psBoVDmC4X8bEbkX/NT8slq6nqyO0Aeg3KTGJp4yrsvZaaOvo0R758/K7aoKlDBTcylGv7fBOidmrdcn8YkP4XLg3T4V0L2wgJiAs0MxW5BuroPXZj21fb+6j75hHid/dLRfzLP2epjn5IyO1Va2AvQYT2APo87CASfMXG5WuYtyfYb16MweldMf+X7hjjVEXNiUIZ4n0/YSL5jrj+rugXUQefjCl1gHtkbX1hamjg/n6mfKfagSTGWaNWehHNG0oGCLjicrpAdLNJ2/st2fQ6BI6gIc7BclVfaLuSdCFWk+q7rlxkVZhSBgvlAiS9Op1Ca8g+DscEdDhblK4c8zEDRDSZEK8rpFZ3/xp5tmtYBsHY5kPQ6h5Y8B5+Dy5AYBe4S9mrwxjY9vFSIgiYgx5jhNBYipJOnWNRVIqFUrpbaFOV2aDAX3wI8JnXunL4nBry3zEfCLiYvg6Qldi6l5jJxPBH+jYFHtTCS2s6HiSTpHCt8UMFWt+6/VPcZ+k0rzeaDsTLuB7kqbA/dXZscz1YMyj7LYCx2xliBB6H8l4ROrLPO3C6I+reriWZ/0f88J/c1hpjBt6H7ngVyAOt3XrPE5+EtegxiTimoDrHxlOjX1nPwOun3Uyg8TYNHUiMQU25CEmE2MljbhtL2k6qM0cN6svIojbYBAuLTR+maUAinaomcsoT/i77c/ss4XBVdJGIswcY8Z4buAWzmYjkEAejpllqE9Sfl+tKqr1SlH3hLI1sSssVTSe2hHM4TLaBUvljQ0fK7KjFHxu4FXaci2v/dxmlll/W2+gdkGBNQqKICfPXD7Wq3LwZPkYGyYypu8tJTBN8+BDhULAcsnKR731FZ/0gMFvcKGQwcCmJGkz22whK5dX5Ors+HXDBM18InK+IrmTCIq54boJgYoNNUVwfCpCM7Pz5jG4/JN6/WCHfN/3Dtw5j105+UrMd/nA75ffbA4svqZN9sUOv1rvZ42W+NLQEtdAiXOK5ofASFzDI9YAj/ijIyOuQRHXeIhflcrfCiXh74SC+LcBQPwbYR+uYQ+fJ5814mFZJt8v2OEa5/Bl4ByuIQ5fBsTh3xjd8AcENlxjGta5R16Mf79COMO/G5Lhjw9i+PfFL/wxoAshjZEkEVZ8TOO67SHz+mfmCgpfjIkJqY6WHo8lRdgdFZyNw4xTwhIo1YYEQpsXCTmUJZH0cdL0b8gLhaCcfODD30Y85rHZXmclWVVJKZCMl9YzpARInNDfX47w9t7+MnKqrS/bjJB6NClBSmg/NLO8a8p8U+9qrgcHO5iQvebbfdxu7uL9drPfIvvNVpzEO+2dpNXuL9S11UtC+8nfShh6rmXlQVPSJ1g130atqNXcbm23o9ZetL3TbLVarfZCcQ4nixrr6GZEoWxVHcxsDkuMTSDEZ1orKPAxdAa58b5gfkjvIDnbinFWUP4PPZMDLrL5WxoOBB4TfRRrkkZY42qLI/2UeS/eTJjmulgR7YP+aXB64hRLSQfFWhSFY0Vjg+ND4pEJM/iHegv0ZGaKtJVop7Jj0bgI5WMzMHwv1L6rWQWsB6hPlA1E9H1gcCEUomxIpIKyULjQBVGCO5CcsHAGD4eGPVjkcmTh4+nV5QnqXF39n6N/FtZkKHg2iXBKcV3pARtXWpPrCV4R6T0VmBcCBBgKn/gAQfU71JwpkcGd70pbw4JH2NXY9DSOb40YceGh2xYW+LaV+m/a+ptG1+zXEdQocRUOKcgfGYX+yVOewTJlkiBcEBq0oDVEe16iUvnk5r/Qxkc8JDEWCv0Mn97fQPPjRZjVqO0agaXI745nrQEIPpTa8muQCz4cd641oElZ+D+3Wj5OO6eka/TUN2bBn77jHQ+ZaSV5vz89n9taMuKuG5EKZC4KsFTPEH5hc4e7fnHh50NWbPr5ZF9gp7wILu6JlcLxbTSmShDtbG/Bt+UWHIqteZcpd/CwjOZ26x57e7BxeRuQxymAYJprCqx7X51vbz9TvJD/2gvP/NkjxXW656+1P/9HRtKgK7FEBMcjb+5zsy6mOzkpm3ztvfb+wUKCCSMLK1Yhq6/D+xQQW40y+jPnw5Sgs7O5kWFzacScDfQC1HekcxP3uqdG5LpnEECajGRKALawo+C6Z/rDX/fgFcF8PDjT55yRrTN+v/WRJDQbb32gw9F1T8Y4JchhTlOGOpMJYQl9QB2nPCzoRDu3JgvwE78Ygtz7YUARgsGlL01MElNSGGdS8bHxdWV0zU4eJgBdEo5awMdE6CeAjO6aOUjifsUsMMQZvzc/GN7Mz5rBksIwH3j+SgerUtNSHxdquZwvgwH70eGe5C961uyeZe/0Aj1E8P+KuCkJSekdEc4L7LBhSgQ6+efcEcBcEpA2Gtm00fodu0chdgvpq0X8TL+P+OAp/MzJiMrR/1sgT2mmkYkpqiXzmK2PJa1snmHr6ORQAnoB3dCVpcH6OsVpCp+2DhS6JWRiLmuze6DcV487fy3bLHdKCdrPasSH7ABQHh8YtvP5AqY7/pc2zJujmfenaJJiNeBiHKEPRJDNTb1rGGdN8jDCmYRM7NSGjY1eCdxca98Qq4OMPeMqnA8RFrEB2or5eAKJ0kkjx8xpIMLgNZUk+eM5AeAs0kAjmiSENZAgODH/ra+qhr3PGwBBVVEhtfmvDffZjQbaMJ9+BurezPrFPCE9//QcJVT71LU/g5tyRCwh8IRLOUiaHpOQYdB+Hi/aCN4W8wd0aVA3LBYIlfAXkuQFQIAk5Ye0OlNqexU+KSCN3tZ9+IJQZGQTvM6X1uZ5QdKnV6JQz/oY2Fmf85RgViXid+ZPAN1vIEIQHWgD36cZUOngG8rJ/UpkZEVbSv9E2bBXm+O+aRx3n1gx7y6i0n/UfttsBDyZpK4sboxZNsCxQVgB78ZhTlmwtSgYk4RAGSm5s9gHnYnecz996gKeS1UtzjjSc5LoYRJHE8EfpiuSvMIqq08vPw1kPPPeDqRUr8AgMzVMKR8OIYkYElCGAk9GNEZECC5kHoINR4XUzLCtCRdI+6vKzYfOCL4jKGM5+Cn1MH/w1fwr5SwBP6y+azMWj4h2cssLeHJ5+emy9+X86vJL9+rkuHf56dPVilbQPJ/W1Uyia7MgWKEZU+LUYMk6dhCR6IiLCRdhBHdJRhXB45o1hJ5ilWoCxuPC6gFT++uVw0RwbZFHuVbwgz5TO5x8/vDb728/vu38siJJ67tP4fE8DQ8es0ePywD+ha1j7hd9alw2cWIAr+EersTobzdb+v+u2tuH7dbhzjPw+b/Crj7bcxnfT9ylm13FhXO9Av1SlVkUj4qVzb9oRYOV860e0zXme84ZBiAc+H1iqvEKKOWFmmOo9CvAO2t7hvPUwoBi+xyCQH0ZS8cox7JpucJbH/TrklKvNmGgKJgOqcJp0ZjRHizUu+MhpizAn9Pf6FOm3QEL6hysT+UNgQtL8xX1v5zYtPe6nHMIeLwwjr5/wZub1x8EDDCzFQvfX5gb/e0VO7q5x6e17ZgobPqQjTAbPuL6mr95CH8YJnbw89o1zCbQg+RmrKfySP76zBGJboCLHM7RYrQjnPwbdIlrsAYOg3l9lJBiZIeDjGiW0+1RFbSEFpVsQu5obXHEYxjcIooZNWd7sISkl7yd+dsAzjLjPOS6+HHjG5CzfBNQiWycPUKnPk3donIYzSLCCJFpwtmw/mTeda0ki60RH5MtnOZr9GyZ6Il7ZsJlxVJ5tI6h1MO2FX1CLkUEN7henL2S29nMNd+YwYUynnme/u8z/M01pnVQKG2oBShr1AVi7SBDkg4iCMkoAi5bTdvrI45HlBEUTuVOysnZ++rT8vB2v7k/N552BWP9KWRQ1teQ591UO2q2hYXm51FezqhSKUEnLKF4UQdAsxRPsl6NCUBHF198pPzJtTlliszdF7iKD3t59oJ7bZHr7+RBQfVLYhTOhEtJ+ynJ0dX0jJvSX4IROjXE2JBX7mMYZMV+RlPI8tP2JE2t1ov15WSxjAfYPtuOcQqOC7DC8/KbRcRBHiZczAVsP0ixUoT531bm8prhSIJISiBnzcR4wSw2fWMWJ3VEcEJEhPu0ZxN2a9qLQaau24qdIM70zpin8B47wDFBrzrvTl+vgDNIt6qJpw8whcnoeuyMLUG63uF1GQjQNQhw8wO67bzLU06YEtOwa/HKUCutyPMJapA7NzGnes/D5kbrob0BcT8PgOt4eAay4hNcyB7u05qo//rRdetyRln2gD51V7AuNd6Udls9dVkuQfg316zLH2SDo72yK8wMV88VJs0D9jy0MhLEwmai+a7BmQWNgoc5howuMBBjOB4hO1l5kxS8gFsydU1o8hZ3BaRwSezQBrbcZZj0p0hm/abJ/fBDAvwhI1iN0E3IcfTTzVKawo8Tj+j2Ypq6kAZWND5HtCn/yGwwuO/6/iVUmrBAIEVLxyo2AVw9fDKPY/0sbrojzBhnyA6PYpzGWWoUoLdOV8nHIMVztQ1aRGPoXdu1GxlOKEy2ErJrzJktUR3mqy1FtOvK3+ODgSR1lR6W6DezrZaD5wNCuL0f9jh9mm43GUBHrIT8Gm/2EvV6qJUQfUeFynDamz/X61mWbolwO5/L6VopD4tvmwUYWH7bQB+Tb3Xhw2R/9YVvOF7+wrfjPMNmWvTQWUE6+fkttwrya9YXM6QvrTEAEqFnEElo/UirMB3y0wWQT1QG/C3DkiLpYITlPA00FmHFDY/kdNzn0NlqBEdyaaes7pZh7wvdt+br+vVDNMuaEfSAi9s6oU42O3o/3MJTY56HBQ+jWEoe07zRMw5efP3W94L6xEyIooEwEsS++rmhfYoMPBPPTlQa3Q9qZ0Ed+4Kb3uOpNP3ZlN4Edl1gGteZ2PZZB7B381iUz+cH1t8wFQOQHlnk4/zqfdd2v4YXWJzyIc+k7VzYscDLxAT/ukoQPEavOsfd1y7Fgrhl9qMCUdJ81NRHuecyaIYU4zQlCfrfx52rToR+54xEAcATlTkUcyaDcuL+1LeuV9ymY7tu0yjh9yzluNBUxZfpoA5DneMuPNJOJ9oIDfa8e6vlYnyIbo4OrydYja4Vv9Y0g7Pgz8+h5GPS85v0xkjgZua3fmT7JhyAMdgj5ZIm0E3+rQjdlCe8mW1IHnxTn5eQitKXZj+cfwDyq/LdkTdCNh/UP980zAN++OwIGw8ILDfUDxZx/ja/M6d/WFsm24WgYyymtvzt9Bi9+vn0+PWTz/Sb7VarvajVBPN8E17CHMRKPpZ5XAcIi3GyVxMnH4/34I5e9Fp2CBvtmujrfui0V0Jgnt1eA4nbe/srIXKvPU8wb0Ei99rbKyBSJoTUday63eOTk4uliKQsx4RbefGWHjvvB+hMQ3Ov5tafLXotKbPtvf2dtzuLqrMxHZM6Mw4+nn48Ma8oLrUozBg2MYNQySEunHnBB4UQFDJoj4WOhxQzDOXLWEo6BCwfuTUmCcVNeEUIf44eRmqc/uu0c94JDIQBjSlOzZvDf9kWkD7NIEK/avt7bFICMQMbDZjR5pR58erbxit+zDGXyqPDFli3TdUW3YPj+rbgR70Dw1WgDPFYQediuy1xGMjOd19rf7e18N5bMjeyIjXS5zRqJ8n2E11U3jU6K+czV7u1xTzoUO4uOoxYk+Nrk/hKy+Bcv8XdM37PakujAhcYJtgED0pU1pUvY83M2brzL6uqf+/s8DABtzGz6t7Fr8jELLjxSZC3+LxMzK3lN8qEfIuEwqOLL8VkQoXFkCjvG1cnFC6cTTiBcuYJZnXl3xp/FfAHYJqScd/IgZ6wctlpTZO6PsPmKouOJuQbVOp75oPfLsj7Bc5TiBbgVf9vzWk8ntm7YhbGMxndj3aig/1WK2q/2W3Pja1X5piOJzWGZTc7JhLr0PRMjgg0zkYXJ+aUog5DlgrUbELLRfgYCuhC+i8zfWcHlA2JmAjKlKlVAciWO63soPM9oIBPqH1y5wJxA9TGE9IEPnOdKTCTvh5TohG+I4jHcSYAV8c0vrg3/QqhTsJafAL78B5Qb2rhi5UywpqHWBUM0wEVhExBq2z1Uz7cMqAMTW1Lab22td1q72612lsQ66Js2LTppk0jnKYtBY+0zVqOybTi/betnXiXHGxvt/UPSYz3DvZ3ME529pNksPh+calnPTgqNZpA/pwsowm7F53T86vo5LeTxTm2hYl1s2mnWYbdDa/5AfDJRkzh508TYtBsUNfAHywojyXbR5jXDmggQZnx3goR6aBywtgtJiqpB4UioQ39z4rmjO39nbeL3u3Gcui9dBPxyhg4YCRqK0dOxylltws/j9bo08Mig2P7yuzghArAm7Q0l5Fj9McW5COrLXJ8NYLLRkDQ+AsEjUWOyxbURb/qzkSUjTOz2rjyugcnYn9VD86qpfi7N998UibfWdfNJ3h5Ca04vrN2m09I88X04Vioz+YTjP3V/Tdqb7A5J+8voBfHN+ms+YQ4ftDGHVUc/3C9NB9j8sdpolnF4Y/WPfMrPP5922Z+RTB/r36ZXxHG99Aos4qFdYfMb9ghs3IB1q0xv11rzMoF+MF7Yj7N8/fVDPMpXl6C6/39dMF8SpIvxu1eqP3lU5z91X73SvtezsvoC3Cyn9vw8inW/kYO83fZ4jJkREjVk4TMc9YedYVN6cosHCplSrtJQ9PowlbVgFPsW6NJOhyp0GoxlSuevFkONyEe0G43W3tX7TeH23uHu2+iVmshpNQh4VFM1bQuYOEjpzfLj9icKUHwAmhbQDNnimqPrBeX0kNXQvjVPW9aiLy4lKfsZ9+U1cydL2DpFdmqaT3OCwDPdrIy+VyoEeqAk7KAYjCcgC3Vo5LXtURH1lw77X6CNSqbLQuvgqG9rjNh6a7cOUeY4UXgNDXdgNxYshhKNA8J74WYVMXbhLMhVVli9FiKFfyjrIP+G22knG0couabnWi/vft2p9VAGylWG4dody/aa+0dtN+i/1lQJdVZMPlFEtF0ZeczqXmmWa6tPFS2VPWOpPpvQ4FZlmIRwsyrEZmiGGt/tM+zsAzxyHn1qtjgjgpTSxgTpl33hnlcTzkXNuDQ8DGDxHX68YO6jsceeMLY6w0Ue/O0WE6bFweayBVl0DhsDEWhQ8Idt+XUkz6XirNmssBLil7ACZcKp3Wd/M0LGN5o5tkyV1g0x1cBfhs6ReUZwzar1oOcjvHUwyHeMn7PoIMQ0qzARFyg308vQs8QIftYb3vM3NOEpFNTrumcScXdj2UhH+y2dhcIcWsBCzLUFleN6vUSZnhKuzY/L4DPGhBfk361hFeq188Z6ZMF97Q26v7krBZrY2QApJEe393PuSqSWTzSm/G0c94JPlfJob21tzpiCNYK3nqXEcZlr0NFgGszN+d0nvI0/6Fnt+fK02GKvbkQH/hD9kRvrna0He1EC+TIpfibmvwAQfAiLP4xFreUDSOV1lV3uHEl8GBAY3Sm2UQXgise8xQihNp6thTI6JpduriteRnMW/mFPf7QT+jXD6dXJ6Zd38+XJyfn5sfOx3cnl+bHy5PjUg8/+NICArL1Uz08TyhiVXvDzRq20PEy8BfVt9kiepfOwfpjb0RfP/YA7+AblS5w7Hd3F3DzbcJxXfGJ2U7GfuJN6XKdy8uWij97mUhHOFtANdfdKPiy0CM4pewWarZ4CABS1fHpyY3q3llsXW+QpLLlv7TVarXa2zsLqHVtWUhtawEqdlhHu3I/4pNDq4VZoEufIszYoH0syf4uIizmiVa2uRn6nguP+eGIRdyksXMm87u+SxSYrCcPoEIuyfBzRsTU/q5RbAQTczhDnCW+14WFUdEKB14vb9JJT//uJn+l5hO7iP1MuS0adMMz0Q9BYn5HhIOthO49ObSX75WiVdTlyc+9d6fnncv/NJx7pV6BrvH5XdY5anV++fzuqtPpdODf5j//WHbVDRLb1zrmuRTbyrU9cvW0WmfrldUb34zrcFq9nC68DIxFY8DUqr4JS2KXx5MMO0JSNkxzr8J+3u8Pk4n8Ssu3+3sD5Hzy20Xn/LjX/f21RbrJFyWngaq80gjwj2BcO6XF95cmdgwTwt7Vo3/8cnZ1CnPB2G44aH/iR7zDggJydkrYUI3MsPZpG3jNN7Me8/jXT5fHZi+f/Nz7rP9VID3YeMG+8i5dQmI6LlVmo1ckGqKbjfbGTQVs0+a/No4Or4XC14IkPaUm133KrsdTPJlE5IEs1CyzuNfK5Qar6cemMEuwSIpbwIDxWZ3igYJmmTa7ZAnGRnQ2j2glPHX6fUHujKMO96QratXzla6JD/88+7gED7dkWgMLH+gdaUJHfG2qQM0KHwDmYfnN/9P7q187lyfXefGSU/vnV9dHmRCEKfukcX06xkNi6ktOoCus3tmfYFJ5fU+ZJlRv2CUEUq4DWolE3udIS3lVt+mEC3lgzF4BVct7vbSMvMqokNX1Melnw+Ei0E1eaCHpdUXhTWaQtR5K22hxJmSMGSOiJxWeCyH0MWseotWa2M4vWyfHl7bLoQP5zKBz9CBL0ylKiDK9kcc4pTHlmQwLoKAn55fLs7ItvwBv1n9ehq9z433oVaBjaOkXmq3Ftui2rbpBLAB/BprpVaVKbC8Qz6uxZm3jyiL5Fxwwf4ca0/BoqiXxCbiFC50y182/Ff3/7H1tUyM50uD3/RUKJuIa9mxjm/e+mNuggd7llu7maeiZfW6eXZCrZFtLuVQjqQDPp/sb9/ful1woU6pSvRjKBe6m32JiAttVqcxUKpVK5Yt/Fq8e123XfZpqEYuZSFUX7Xr7tdR8TAONn7I6HpXjfShmlMddwxd8FPKdujQMJX42coR/8eR22/uBJ7e79mMJ5owG3nOzVLN7/NOcPe1f2OcTP7iOnfgpldF/xcQH+WdImuvSALy5+NQdaquuUxjdGzbHX+53+gddL8Km4pzI6FheXFIZ9ZBjqzraHAN0p6FSGeWW3BpkFmS5ZmueIXwaEyVmjARUwdHfHBpndE7gmGqLL56emz1hU0h0AaBIRPO84AslBdKIqwxi261jBzEohZg7DjGHfSKcbX2NIK7Rr+9jiAQZxGw6nsEz4ppJGpHT89vdDCaLg0jYWOfr366xIOE/r8n66cnlW/Lx7VEGdLi3NdxAnPwH8/BMZ5q7u4Ws9qitcuXQzd09gHbFmi1yvp3crLzua978OuNwlj6aDZ4XtMxavkhzHPFadYLQNSkae1mF7rrVKaYJHxOusUio6hgBjoUm7JbJuRkCS5GW3i8Bd8MmTHIRklmqsIXmyJUvYiEefZgLjsq3dXh4xMhaEk/W8qhgqDbbM999u9VvjbSNJYXK0asStnOsEuspKlskA5bVT9ee2tIiWStN7PVP15iIo0lCZV6OzSLdpsA4EJ1GUQOCS/6H58+sPx1jHdRPH8+w1DqW2LDdpucihc7XuUadewICdX7zEzmPybUj7RpKL0HNEV1oEClZIGKlZQo2IMSh+XXfoYZJTgb6vhd6B4u67vX29tYmVhD5y+8/2+/x809aJO3myamelzBXrz7F2QVAphJBnBVRDO4Nch5mvKtRHTwmMdN3Qt6QmYi5FpLHE9RImTXr9uURM6rPioitAUiVP+kUrHsSiYkNVDCvGu061izGyse+KYmufaqn5c7pmYzMmBW/7LUMLFWuWaFDtIPdrxlGNcZCVzVTK3Ex0Bb83E6SEqqUp7yevTyuBe8UlN0qWwSpIrKNCoI85B49t44PDxlP01rWrrXFb+nLp8c7cJh9YiHC29vVjI1W90sG+99TtrI0BbCtYAC7oLIAISAMf7Ge3DpiszVpZqkk+JW98S+wN6IB5lcg90fpmT2GFs3pWJh3QVvI/OiP+a4e7j1ri2PDdgrjjVKdPdXxBkNi0YTLIGLN+ZiwWaJzfAB1fPLavl0qrxXyMVxqaYgAGjF9x7x2qdCY/07gEaatAYCnQSZZeLXaY9olOE8nUwZ62A0K+wYO3AHGJAnLdIdKR/hT6UqqYLt6sPBhcNWujYXwr+vWoHKR/0VZ7aMNbCcgZJrJGQTdJZIFXLFo7joHRFxpEvGbQkKlSsdjfp9BhGfWjcJ/vbmJj+ATPSEnGz1yKefudjJJpLjnM8y+5Qp6y/BZEs2JpjfFsAtrHps5j+iIRQpvOYxNCJvoHYsioP7y7FjlOi4QvfSmpmDTk1LujeyoYMpWF/p4AdAXq27YTstnErzZvn5daywjvgs25pYscCK6ymWTDeI6TWD0Jzoyf09phLaYfQaOYPaw50VjRpFjA2ZasPuAJWjRTIXty4YtjErLyuqFHvhMKDCUFzo4lDGA7A2OY6FihN9t49EsRBWOL8agg5EDGsciN0YLa7DjcSB3hZQJGrFI3NWrhHr9UdQxPm/Rb0SV7s3mFgIuItQiVOnMYMj8NBZK4ewLtCqbq5NpOSfAKh0NjQANCoqqU1jwOXq4sdhTj6vPlMNYQ6+U2ZO0pDzKnQA1C5+qFiltRty1SK6AqM+wWbDx2IbZGDMYxcbyYp1dnh1vdNBJlUW/5rOQH9xA6XZcKxBQn75G8JZMjVukPG7u88qfNHMGUvF17ymwnyzaTvKZaLaxwPftBMxVnl6RYH2y4J9+OvlRCu4llIL7UQXuAXZ8tQXgftR+e6bab99i2bfvtOLbj2JvdZz45tPWv/USb990dbdvvLDbj5puj/Pkey3n9nVXcvtRxO3LFXH7Ub/ty9Vv+85Kt30jVdt+FGx7bll4MWflJ9Zq+x7KtH2bFdq+r+JsX29dNheI36MRp6ty/68Z8xcGWGcq07BuaNviXzGYO0j4gnBtLVMg1WV/+PkBEH5HsX9acIPGJi34tW0MX9Zqx/xmhHve+6/41ymE+grtg5Ts95RDr7a5SOHOK1WMUPLu9PLjCTm8vPxvR3+HNlheCZyMBI/cXiX74NVvZO0f3cMJi/UaaZ4FmU3NypoTwbzwsDIh+REV7h0hBwcq60BiDhmxKb3lQvrcy65bZiJkEbOmZYV5PvPrOe4DrWF+hiMPq4y+6O/sDJdm7wptjLVymYKvisVwq1xh8mH4lsfh0lxOIqqNslqpjskG+bz89jO1fvEztQ5/vaikSh3+kbq8J/iTHB7bWitH5/jHGY9Tmz41o8GHC/zzPUYawwcf5IfxmAeMbO3u4HMXlNo3XO+++FGJcGLgw62TiIy/9UrODthKya26vAbIhyzU2FhORnzeOHF5+posCNziPSfDsUBBdRbcuZxqTYOb3oxryaB3vQOwCTpyc+npWWnW5NTe2xvTbckFm82Az8ilFiw6CnHFvMP+qPjhUoiosHpj0nAZ1c6cobA6YWaQppOhjSUUfB5zAIaqm4Qe+c8HCS5YaQClUwg3IuvsvrdYTvEVtXl52O/3h5tko8ox+KWOMavcyP0kcierjZnk86QiIE9nUpVHxZz9Eps+s6ZNZfSSmOWDrzKuKZQiX1kwBT/451mabrQnr04HaDl2urfU5uWgv3NQI33w/QIOPe8afZbcsAc074Pm/NLzsMC6Wtk8HInZjMYhXIZcIBXxBJtFJ5K56/jqHH0hBdGYn4+cX1bGz+bvLmCsSkefS1dAYDoqDH/Up+pfH9bT2NvvDxapjl6/3/jmegFzX6CaWaxJlpygh49qK56gc3HH5MWURc2t1voZ+jJKpjGrffYusuxXzOrl3n94OrLJiND/ormG5XaG13UTKdLkNUGrutSG3Qh95pXVglDzljmHxVgvFPIAla1DochYBKkiAr2vDj4hiatLy7Vi0Rj2JA4l1eDeIZoTeit4qAiPuyFLIN2QRnPFVR7qjijc93b6Bxaqf0k35pEL0LaV9w1Rf6phipa2zpS/oh2HAp5MV+a9v8B8UXtx4Ept4JAojmEqs6+xJJfP6oq6PLu4Ojk6/tvJ1ceLw6tfTy//dnV4cnE1GO5fHb05usKr9KYLNYg4i3WvGm//7CnWJ++6rmSl0jQOuzQScfHKVUDiaB5EgrhVYqFSlYLwzFINf3Qhh1ZhbVtyXSXpKphCsRoF10J5oEkGFFJyMKkV7xCohsyVakuV09Ner/HN2CJMVsTiQ6ghKcYFXnuD24piM3rDSJqUL7wzZgCKD81FqznIa++4WaDahvvkoT1YkQUiHv0wSNQrgFc1GeO3NZyUtQ5xfzX3RFo8p1RNe7NwZ0UTc1TQWPHEmOIcYuPcsn93vENCPmF4lXl88jGbP3vBmHFPjJssmVKgFWZsCSgpYmi1/i8/ay8LvqoLtMKyq1lsFcCozET/7d7u0d7b4dHOzpu3x3vH+yf7b/bfbr95++Zt/+jgpHEjA39O1JQOvtikXPztcPDVz8rBydbB1vHB1mBrf39//3i4vz/c3T0aHh8MdoaD7ePB8eDo6OTNsHHcVWl28q3mi8zPcGe3foYyHt7md+dPn6EcKs7U86yb3f29t7u7u4f9ne2Tt4O9w/7+yfDtcLA7PDl8s3305qh/PNzdORkc7+3v7bw52dt+83braG8wPDo8GB4fvm0c4m1pxCSEFU1aTXyVlwHoyrYDBu4TmHa1G1GhgqI3SxWXR56S9FEITY4OIXXpNB5LitWSUsnIJaOzDjk++jnLlj0++nmJXA47+L/p1qq2b1QCWGQoL/CP4yooeB4aG3uKCeNzkjBpRM2I2MXF2WZudxMypXGopvSmWv4p3GY7o8F+uDva2Qn2BsO94f7B1nA4CA52R3TYvFeOZcdzZHkcU802IRPCs5GhQhsO0iTpw1+ZNfkRr4b94aDbN/9dQl7E635/ud4NHr1PzvpYluByEshjxA4O9vrPQSwUiZKrjMc8NIZ3QKPIKMuYXLw/tTpVsyhSNpgHMgkxQ2YqlAatogV+4+2VTj9A+LjWbIauT7w/NIcpokWP/IqV/wqx5reUR3RkVEIWaJ7BnTDD+YTjOfg6ZEbBYecrW1SyPlls6SqSjueoK7+kfq5o5FwTZ2x5VCPP5vgbqOJjEaSzrKD8M2lilSbY7OcKz9KrCjLJjlV2mHrboXCIx2+mLIpE3YFlwQl+uLN79dejd+YEv7W/bc4z+YMnR8cPPZrNy1qr88+PugBfri6APwXfe1GAWl58ZRUBamh4CekNX1k5gBouvpj8hla1AGoI+tK5DSsvBPAIzS8g1+GzVAGoYcM3mhzhU/rN5f+Xift2kv99yr61zP8FtH2/af8LGPJ95fwvYMLXkPDvo/4j2/8zZvsXGP8j1f/zpfoXGP+N5/nX0/p1JfnX0fASjsBfT4Z/HQdfzPG3VXp/HUVf+vz7rLn9jxH4Ag67yyb215H0HRxcv8qU/lWeZxYEMOYnHNdmdsJvWWyvSTp4oUmTJOIBHUXVm2jFgmS4sysbn1yY0nQUgWJvQOlIiIjRuI6gN/gTGUe0QJYt/355dkFiNhGa433VHVVeG05jeGYmlZY0VtCo3cbJxoTFYA+Zz2kcs6jxcovZvb5yIbOfdSqzON0Rg68Abxb2yLmtq49nLMKLbTxOD98f5u2T1/1OQZzGFMKWqTJW6ozFWm3qSHWzxmqGhi7CXfhD736qZ9FPNErirsOxy0O1UQqRsh1Z8kNDJO6YhBYjte2vNge9xkInmUpnKxU4rkrB1SBwdlxoC5NRa8TrHg2cspQ2FjO8T3+ZEb8Wt2UjfqskfamI30WYrIjFq4z49eei1Ry8zIhfi+c3E/Hrpulrjvj15+TbiPj9krPy3BG/pdn5RiJ+G85QDvUrjPi1NK404vdiqdjeSkxvvkcgrpWj3GeJ7bWD/5turSyIrD64Fwd+tuDerYPt7e0BHe3u7O1ss+GwvzcasMFoe2dvtLW7PWhewAn58VxXuErTWVKJdbWBnS8huNej91ludZch+LMH91piVxtoetE4pLSkkGsUQCXoaGUK4Ecc5JeLg/Sn4HuPg6zlxVcWB1lDw0u4BPrK4iBruPhiLoJaxUHWEPSl74FWHgf5CM0v4Gros8RB1rDhG71O8in95uIgy8R9O3GQPmXfWhzkAtq+3zjIBQz5vuIgFzDha4iD9FH/EQf5GeMgC4z/EQf5+eIgC4z/xuMg62n9uuIg62h4CUfgrycOso6DL+b42yoOso6iL33+fdY4yMcIfAGH3WXjIOtI+g4Orl9lHGTxmv65sX2PphlJqMyuNtx1c0KlsvFa8L2QfMKN8GF0Ws1FTm/Y2Dnu5mLF4YHvDfcj/gcLMYQOrrCz6EDYRHwyHyPRFR5dSGAmdgmNXW3kOpqqFC2gp0DNK2uy89x0dN0/EhqDHe0aRgUCq/sbNaElDVjvTxbzQ3xYMnthBff7IjHHcwjVQyAUI0EpxO91iEqDKYQCQMsIpjTGhkJYgYVrVhoPGKxcSkKq6cgw+/eUyXkP5SKX/vH4gO4f7A9Ge0EQ7lC/tisg+xlZV+YOfMayqwprJicRI+wWWBXxG+ZzxsajjZg5ORItJsxwBE9I7ubOQqbm9Cwz/k1pHEZ40soG4bFmsmvjJlnoWKrK7NsejQ+G462dvb3R1nZId+lWwA6GB2Gf9dn23tbun2ok1JaL9djsaPjMzHbDNhZX/x2OJZSmfDI1TASUzXt3Qt6QGaMqlfZACTKcyaSV32wqfCl2e0SJyf3+uL+7R2l/RA/6w9FeA6amEvWYrUv86eMZfFxcl/jTxzNXcRi2wdDYrlAECM+EwqBit0kqtTmnf/p4pvDW0j7piDJ8GUlGb3g8IaG4i404CaKCKZuxDsHaTh2SUD217wviomyfUmoYAa9If786BuhOfFIZ5bporViWai0TGUJOY6LEjEHAtFFahs8zOsdK2jas/fTccGHTsNbwO+SSBTqadzJ3BC2ShsfsnoENPg4Du4Nh49mdM7kD78ZEmDHMT9e2pBZyzscQCTKI2atrg2fENZM0Iqfnt7sZTBYHkbD+xuvfrmHurv95TdZPTy7fko9vjzKgw72t4Qbi5D+Yu06c+wWChUeGP4mGFWPXoUM3g4hovyrvgzUFwbKcBhf2viqJgL4ABq2ccRhza7S0G7zGarFLPiMNZAlCfkMXjRcxGuLq0d5UXVahc0Ug6kAxTbjRWjbyumPkMhbabBdyDuXap7BrFt8vAXfDJkxyEZJZqjQAGZkdweDHwuKOkqcw4MMjRtaSeOJVzTKvr/XMd95Y74W2Qct3WDPO0gVmkMEz3+0cpoqsu1OuprI3+WOjA5RnMIFt1Jj0sR8/mAnW+trkj7UO4oMQ1jaq8pRYZ5YTorGkk1kzn3UrGToXUlsj3aoVAjdauAh+uvaUjBbJWmm+rn+6xisqXbCbHdKWvIyWNGpi3bqYFPvlZ+4JczrGXhtmd4GOpHxmtCKNYYucixQKu+c6b+7NtdLCj/LiMblOZdQz8K4haQpiT0Fn4rrlCjyZMUY7sRBPgWCMOkUE5lYGUolUBvWZLy4/J9dGr7e3tzYVozKY/uX3n+33+PknLZLC3Djl8OLn59WneCZCY0qFuUYDsVVEMRYX+Jbxq2bl85jE2IKRzETMtTDnHFQoYgSGUJjtliNmNJcVC5hJyajyJ5pCDhmJxER1sv0Mmh1oFpN/G92UnTNsLDEYIIUF5cvFjFmRy17LwFJl9OwdVRminYKBFAtdVSytRMRAW/BzQXoSqpSne5493ciCz1tHwAbWK+Ggp8tLb2kcPS2N4ek/y4i10rBCLnmhiH6Q1/ZkXYuHyHVpBY/t7eqFw/b2VgEpOGqu0uyAAayw4q8jhtYH/mLT9upoyOTd8LQkVJX95S+wv6Bt4ntg/FF6RmfTogEZC/MurESZ35xhNIWHe89anxKv6GC8UaqzpzreYEgsWjcZREgpoDFhs0Tn+ADq+OS1fTugsdEi2bUxh5SFWHOqGRkxfcdYMQNT3wk02kubKCZlMsnCq9WeNy6902U+KKhad4Iy9CYJyxtOpyP8yZvGirXmwcKH4YC3NhbCDzxaMxOy5n9R1pRo9Vm+hkwzOeMxC83+GXDFIpvvQSH3z7or8gtrlY7H/D6DCM9AmuvrzU18BJ/oCTnZ6JFLObcFh2mSSHHPZxjCwZU5iyg+S6I50XDirBqEZiojOmKRMtonAnMJ9p07FkVA/eXZscoVTSB66c1aVYWX47IyFxscbFclBxcAfbFahI2lbFxjoMD161rzEPFdsEUVKXMCtUohzwYBXW6NYdzu5+T3lEZobNhnYmxGDwop1wM0ihx16Lxn9wFLcMueCnOKMa+lcWgt68oq7sFRnTrnhneuKGMAbkWbzo7aCX4P0GmZ+YG0axoHIwc0jkVubBVWTMfjQH4CLxM0YhHmr1QXcP1qL2oEn7forqBK92ZzCwFFHtc8VXqtV3YPWCiFsxnQquy1T6aTnFyqdDTsqXQ0KKiVTmF55uihdremvAuhz2GsoTPEbAxaUh7lh9SaZUpV41tQLZIrIOMzKHM2HrMAUhCMZYeCYqlfZ5dnxxsd9IbcxOIuNizM+Z6fP0Apdpz3EdSbv7S9RVJzUC+PmztXvGZrgZiBHHzdOh/0/SJ1n89EM8UP3xfkJlVMrjDC4JMFX2Nw+xigx9S6eN3nxT5ekEJw/VtPr7McCY/RKDYKgo5EiooTHsWzGnSsY7c0OwpbryKc8jIpsc3tjHxM6S0DTwyDiA8hPZdOrCVnypqNMAioFSHhZBjDazx0msK5o2lMKOTk29Mj7gCeopzZiXtSt7opjSdM9VarDfzm1+jtFXKesxxM4RmDKDgxXmTL0ZicHR+eG9YeojAfZ6B8NdC8WrqlHXKQVijYxSSn5iWTLHpmU33m6J7n70dq6HylcgOgYyyGrBlG5fx4GI2Y1OSEx0ozHi/LEpD1LyazMPqXFlpkwcp6AFevEbPCTEC97c+p5kqz2WYSUW0U6tKyjVSscGPxZxEHWxZFL3P/2WXsU9ZH1tZwgAYzEjuVFjapMVzto7aMCY1FPJ/xPzzfL7I/+/hJsXEamUV4bV7q8fDayCB+MAReZ0ZnIOIxzjONihtjHNbY8ali4fLiWhbUIE/zeE4hdbcKqib796I76O50h4PusD/cHm4fDIZ7+3vd4e7BcHt4sN3f7g63dgYHO7t7+7vdQX+JiteWxKoUtyXy+dXzxVRIeyYUkkRi4l3s1vGK9lhL1SxFtLIs56xEEYZzmJEIRdNN83ydWxutRNKr39Zu+IjG9IqGMx6vdciaZHBIjCdXBuAShX++OWspu0J2B4Xv0iDMqX+hJmGO4A+jsIYp37FZWGbC12oYlul4kaZhjuQP4/ApxmHOx2/YPMyJ/L4NxJwP34WJ+CUsCD/u6SUaB82Dbp7BcnDYfatGQZG+F7nfF1H8/Fu5G//HLr1wl3Ys+lo34Kzg+cvaW5truiduvFmUzvewp2oqJ0x/l64JS/oL9UtY7F6q3fEFnBKWI9+q8bEsB16kebIsES/SF2Ex/GHiPMURYZn4tRpBzSl8YWbSZ3ZBWCZ8w7aSHyx1RScuk8cLmSL5tw0CpxCGC5+KIaUfSv7OGMbGUzKS4s7Lrs5W9+WUzW02ipqKO2J2opjcsZFLDYbcFQOKx5M80N7WBEgzVF2Q+9NjnUJmhv1catyOVp5jfj4VMXvk7LIShHKWVrUOHVPJC0gtkZ/15Uy52JOWq4K0lCl8J/7gUUQ3d3p9so5z8D/I0fknOx/kwwUZDK8GGML5jgbmi39skMMkidivbPR3rjd3+zu9QW+wk+G5/ve/Xb476+A7f2XBjdhwNUg2B8Nen7wTIx6xzcHOyWB73zJ5c7e/bTtGZaxWvTGd8WhVCTQfLgjCJ+su8lOycEp1h4RsxGncIWPJ2EiFHXLH41DcqY0KA/HJCt7NMixf5tH7A1beiCfWPHTHgdhPTM46gEio4IVGcEW6UGDeiX/TW1bm0Q2TMVvVoa1CA46WoY2FQ+jdonWx3dvu9buDwbALdUJ5UMb+BR7nnjzDrsyAN7+LpvQfZX64I8Tnmk83nl27AYu1UB2SjtJYpw+tVyrveGW9GsRWdkxQGPx+bcexlRfgtEA1mwjJ/8AnRJlIHmuRTa5Rx3bLGklBQ6gWyGRgDH/QY5wp7wzxIXtcMTIWUSTuDGTbZjDPlYZMuPWsFNHGaxLxOL3vkBkNgKMxv8+TNSxfq2UjPlyQuUhfvZJmh6eQlwEpADbtyCYDR1zpjk3z9/I8sLRABjIRSWrOUGGPnEeMKkYipkmqICOCjOaGUbEZgcZYHRSHOjm66BiuJlIkQjHCvfxAGobQQrIa0w9kNrWUheqttvpVRc6bKqxBvzcob6CrRdUrK/aIGWU2fc8Iv43shmnN71/ODt83MbzNc87kpjLP4bRHyDnZ7w97g9+JppN1tYHJYwkNbpjOCh4pzP2givB4AqVMoNkG/gnwqVIi4LZ4nwERu+RuOLvD4d5QnS1MmlUUtoPhlugaTWYr5T3muPcM9XVUSBYIGRpwPJ5EllpNJ5BmBtohhXIQ0N3STd4UCyAYRH/v8rj7O2FxQBOVIpaqY10PdZiRQt66nic88PLdbLYFlHihWYK+YrESkqyz3qRH/jdjNx3yK5dMTam82YDsc37LojnJjmfgaJJ0DAWXS5zgcczkwllFEAQfssTlE6zIussjsVDtb0X6NxYQ+TB5SJ+FuyyVD5CH2u5PTp1H80z/8jjTUIb2uEZWjKBjsyPm2KHpZAK6wIL8MHLdyDzhdtLb86Xc7gI18ucetyAz2fZdS1CrJVsVtg6Zc0iFXAWSgQOsvMIsTMDAg7doXsZcsjsaRapDJAi/6qAHhIZkRCMaB0yqZzj/rswJC4SeHuPBwohKXsY6m5WqHm+6F63wePwhsUU9gQJwPS1Dg0i14uEjBdKz3SCNYibpiGcFZ922UPlh8f5gtocCoAaZbbRmaFJJc3Mdp3PH1JPSytDgW2lJCOhEJcbOgDD6XwZTrhm28QICdYVfFMKQVJ7vewmGoy264qztbqYP1sf+LckxnILNWBefLk42zB/YXyGCBzOg+QuuGKOQ5K1d5xuFTNW82fXvKY3mapJSGfbwbygS/vsdG01ZlGyOxRVUBoo2jX0YsXDCDOjNAoFXztZmqjfVs9/+AwBliBWZkT/7z43aujCuxpXLRayala9+W3N0LXGTG0Rmc3FJ5CuSEugZURgoq7Na4IIKhMwt0cLk5L4ev5wN9BCBluTBrVKb1Vq5v1w0LuztYfzCjtkVXnpf1DMSlpzd2VS20dMI9kx/2Lq3FyyK4Jb1ZlxLhi3gjUbbHNPfQbijn4JbdgUJt1cecuoqkMwcq347gjrz2bC+puUMd+yT+0Qooy+OfjnxKfxnZVZPY3OG+nBBsEkNGfYGw95uxy/nUmSHPQt+PD9aous3g5YNq14WTnd6t1JgH+HlKVcPTE11SdRNUc2aOGnKgpXZKYZyR7FVCOunxxuuuIDtw1EoylG3dRLM8e6RUz8tm6TFiz47gAXqbqWrfC3vGU1F/25K9RVXV2YJ8HDDynpZxnPHQFnWT4//WTNHXWx81O/3Gze/gcqebHVlyw+JZFhWbbGCKVjZVttgqdUZ13yCh6SMF24yMukPS/NSZkz9jAQT3h3x2HwLXuFgwv9i/vg54+PuYLAEG43gXa1U+O1ZU0iiAhrXi2ptK6xBf7DfW0YoDPyYyd4ti0OxqoLvl7ZYzKJtHVAgiEKFrEsW01HUvLtRICTrjfK+OA8RM44Erd1GX10YMFgxQtJ4Ym9R+72+sb8H/V7f1n0xf5IRc7cQM6E0UeyWSb+24BtjWCoLUZgzqrHTlGJKzeDaFrR2EgmuHVNmTEseKLJOtabBDbmFEJ/c74ll/e65nndIIvktj9iE2arHNq5DM4kloTc6hM8SGugcqh+lYWBkcM1rEwlgDSgbbwU42U6wUIh6gRFQY3Q5Ax1EtxuKIDUkb1Ts053eznJTzOJbLkVsoDW6/fxMc33io/XYpNN4TrKilSAldoY6pM0Mwd0+l8zAVy9gijSbJUK+pNm5tBg9NjFwhTijOkVGG5aG3Cuk1Sns126ugudbFw05vFqPOhzf37uGKgX/R35gXn//y/FGvtlD1TENHa0zHsE0gHzS+IbHE3Bkr52Ju7UOWXvHQp7O1lCa1/7GJ9M1mAJzOCO3QzOpmfrMIIIkqLKbEiII87E0DJXD2ur1bfWqOXgaQzbmcbEsr4GQP1yYI0+K4AmuiLiLWYjWC43pBD1Rb08/Xlz2PsgJ9tAh6/CFUZ7k00UXm/7HIu4mUoy5d9Tyutd0yN1UGGXAlaulrQWZsigBvQ9+d8UCEE5j2YKeMNZXImKvH5xmdKYIDaRQaDjfCRmFC0Q0vg17MVe6NxG34KnoWlUE4lpVBniF0kxU7ZSs0LrIZr3WwoC6T4Z7oCjcJkihFRz0X48yniWSC8m1nQgi2YRKiDHwVEA7DlaMeDNMkA39iFfyfqd/4DsjoXHOUakj/IP3VVwZKyDCzQFvavAkYhaWc0+axXJfatuvCq05fb8lx24f0ZxEYjKxXSXI5dkFMcoU73tCPuGwE7qGfXkXvowjLEi1sfHIiMdUcmPHXGy+O313UhwttlHvIxHCM7CB0miuoJwyFGp3WArw+99ka/ZXV83d74GGgbEKO1yYtztQwTu7DYaIwGvzAzRHuu4BGAtxStWUKSdvxycfuyw2u0axC79RM1nMum07YN68hu4vUBy/cAkzYvllc3Y7iLdbiIh5uaemdLize72RkXdyayeV6jwQ1++nW3E2uxum/PpNdYqoOFZgiybkh1+n0rqjzWxbBxa51pHqee2krm37CAsRfg4izmJtGfr0uxIawQI22w1kNKwqXjTryWX75nnj2jqY6xeH7zd6GMlnxlHklsq52RGC0jIFs8G1CkUDwpsrcPmMoNenWZ4QxYkzmjfRMNJ//P6C+BQTsm5AuTLWyprrhUQRVu0M+urPXtXvxtaHbeX9RTpRZo0o2/Vwr2nVv3yL/oz+L9GdUpVJa96e0uL9EjpSLjd72JAyazhpTKsO+fDp51JbemhB+cBMZ2ul7Yy/mE6U74xQGK3wC2d3SxLxpZtPtlu4p3HwBDpfQA/K5cguSfaSpH+jvSpjoa+gDU0DcsJ8vy2eF/iMEejww4NpxSjEVgCRiCfMdvAOoaL1LY14WONzHfa7/b3uYJf0t14Pdl5vHfz3fv9183wfQxDeU62SIvA9NKFmcNDt7wM1g9fb/dfDneWo8drJr7o3+GHWQN8FDOEFv6703C9TuUT3bY+eIJW3q1pEcAFu4CMtNpyFRZF5ILA/eQ31vZbn3smMYDd5xxbnvKjQb86oyc6w8RWBxwR2n4i4WdMpr69JgdYTCyLveMEklB4vThoGNzQjaHdnZ2svO56G7L4UaS6CK4wvK0egNydc8T+aTP4iosFFwf/ILkC8uVQJDcwBjYy4rlrnw/72fnM3i+Q0Wm3rXpskiUO5O1PYcjKxrd/dwGUCCkhpFge+P3tsb7KhhDvMeDKlMXbd7RCuvdhwPMVq62kQcEiKjGEB1x5JgiHjGei8q1+FsTs7b9+8OTjaOz5587Z/sN8/OB4Mj44Om/fld+6MlSu602LKdKGJu0PC1wi/MgidnM0YXAX5RehxS3buF/JXQc5oPCFHcp5oQSI+klTOe+SCsewmdcL1NB1BfNNERDSebE7E5igSo82JGPQG25tKBpsBANg0Z3r4X28ifjrb2trrnm3tVHsSGbN8Z7e7hBp2Dbi/yHFTZefNRT3Tn97yPqPvSxwn258mHd4v4ThZVj3OUWMWz8Lz5MXlz7kN2iFnPxf6+3vnTfTlw+ny2Wb7xRwlC0QvS8WXPksuWpSFiXsKUS/g4FiisTEZ3+gh0DXGX6ml42UToQccTI+KmG09hHTXjPyajBhcbdM4mAqJH7uBi3i09zlv8JkCCv8TYB+5zkt2TzKvZ/cT7moBbkKjyDa3BPezQbXWYw4pUVOhtKeokU804lnzyoTqqXvYe7AGQfPvmCWSBXBr0YWbg/xFuKaBT7yYHUVjl55VwM/Q19N8xv5w+feL0cMo+NLDMz7BuEx7dVCAjhwpgBWwWOxX+OGqTm4WkJ7ND4TdQCjAJJUwKThYHX0NWG9myH/uQbIAaNs5fRCyYa4x95nq8Vhpz4n6KI/ALYHvEvcu4aFbFkEk0jBfAUfmo4sjkGTGNA2ppvWL4p39FYNBgsKrEHCYn0doGF7BA1cOpHkyYEphsJm/RgqUw0s9PqMTr+7torspv97JjHfpKAgHw61azZKLzqmBTU6Ps0BHJMTxCpXNT+TQTCE8I6LQl2CHqSGsh+g6JjyK7iLpqAXzoIR4ozvMrxrw62EEMh5kkJbGoaC1nohF09Xi4TGjwZTH7MpL5W6LhgXlZ4U3xcIPD7vylGRbVBbBa4pPIgUo2CcLiAW0vHxINslN1bajF4CUR7b6LRTBDawgq+CO3ecabYC/gQFlNvooYtD1G7Qb/maUgZoKqa9wi8kNI2dX4HjdTLkt2P8ztJrQn1/KF4EV9CRugFAWLPuxjoEeE+tfqZ3CBUMZ1bn8aKDMvcW85KilN5sN2n442xuW/EQuPxx/eE3+Ju6MBTWjCZZR+EsFl4ItQx62Z8jijYlkmxOi0HMybUyMPy0SGyvnf3PPVECfxmPhS7fd9aAPqtNxnkCb72vF2e6LJ0cXfqK2a9apeixQvfkscvsnZg5SiU7mWMTd/M1SAWKxqENno5WxeCoLxfUciJEQEaNxw+kY57yCHKZcTKrjCtUbpTyqDlmVgMxsWRvsHw/6B2vN0PlwQWAEP7SoHpFAhKx23TyEi9KS6WDaHBk3ClYJjeeZxN6kIyZjpiFqwkro3/3vauDmv2dmaNGmzIESXz4f1s/5S4/q6ALSbaWxPBeJCOsV2FJqweNNItAHV512M1Rasxu0HelchOTT6XH9QDypjFP4qvkQp+fVEcCDkdDg+diWQ6wOJsLK9vTEwVwtrAWDlc6MTx/QAaxL0Dcj/r//83+VLX5VRcnuNn9+8r7m/Xw1o0nC44l9du3PDZWKR5Pdh2c0qaIMFU3RJfni8PZwq0desQjyil4e6hlm9YhLlkQ8oKpYKpU8WXpzuAsWTciSSMxnJQ/K0wfO4S4YGHyr4zR6dpI9wAuGfsT+bTtwBtZe5IR8DAmqGpstuw7zeclRmcaaz9iG29rtLprv6+fZFzUY2B/zHT1zpNTtwDls8kzbL7tvenSwY/fywPgHjg/lYcRdzGRlIB/Bygw5zsCrRYMuf6NMFqlLBH9MMMhD7vda3BpVZS5iUxLSJ+NTV6ShPGahakJx1NqfYiFnpXCUWvIb1lp2/3IfJFTD/5NbKf8WkbjhtEtTLUKuIOstXzb/C38lx/aXOfGfI54v8FFPbA0o3262eGQgF91R2Od66KouJrk9thYbOe3d7Y6NYBHjDDWvYlw9No09V40QOaHB1NZPntJCdQIbzRfQmIwYYVxP87kISZhiKRRNpU4TJxMIiEOB9xkWRsguJCD5I6GSzpg2JEubLAlzzTQcybH1PXxhPnZs9j2gBilWNDIgtMKQptNzfMIqLMLDDuTFQPZkASXItdIKOFPPXJs2kkgRpkHTQ3gjFkN0XbbX2AHMMTGj+iGEViB8BYReqayk4rqH08YjSHnZ+s+GE0LNgikylnmSpcwmDKUueVyPYSoXZLS1x+vTxzMyFXcYJoaI2FUBOD40hUEqWdP1WnTHLMDn1ymDhZjz5I6qbJFZpxZN9dTsV66YkSSx0JlH4o7HkZjk6nftV/hixKheq9exb21ynjOEfsWip5j2Rc7EpFd2jmVGB1yQlmqEG8V8J7lmBSY8MAGS3pF/vDsz1rFkisW6UKQJ75zFCKTF+qwthqX4VKxVxRXWGswvrw2sUp1RRVSauGqGHs254nS0k8PzU7L+jgdSKDHWGXN+4UpTUDwxu2Nyo+fXy8IqsBkwWx0G9ikrJpjWa8tqYQkK+FkxDThd23eu7mcR8vE6A0dVRfEKLMeESf9QOPGWhyl1N/aRmPhZ6lP2KL85XDiP0wjdqFKko4ipqRDaj/hLUpkIhSmcDHMObZazdZz6R/RcDvP1NUuo9FyXNsnaB2QQ1YKEnE5ioWAzGEVsVr72zqSe1BqlC6TvMIqyYpWu0pvFobII/JxuMoW8f0/s6tyzNOGeAWWLJ4Qlw/rB48xlNh+RlURI38trWNLQpksGQoY4C4lQihuxz4teFmCu3fEYYEZispY5yavkmtGELDzeZfcJkxyLT+C7ftFhAiZi/kSeELzIf0sDzW+5nl81cublHCwbtg+w8JBgKF00L1dmAjVLdf7Zpi2nEk6JDjfgapFGLx3WCAWEW0PIICQowz7iDQKPUKndAlPlA0Q2Ut3ZGPPxrxoejdsKWeyVz8lqAACBLu2hKGiQ8AzRvxXNmXHIyMcdprd3kCkwiln7eBZHXX5djBi6foALH2w8qN9H62HBaOFCAE2Gna6cjRlATCvyw+zHcOjo5KVVhCQhi5jGyrZeY5fHKOHNxLsFFUuLPTbFydqVPIZ5SR6ffQYcz0FknoHx8P2Vjfgp4rasJ7KVGso0eV5S1CBTthpmqU5h0th9EKWK32Kt9wIoaIsFpFzDgWouUtAxAU00Httw+cEuKmJn/yssPlEApUXRnum43jt4ioMKKNc5665hHMPQkFzDU4PrThE3+HZ4bWs5CSLiDhmxgKbK38m8EaAmc4wwC4uaEEZlxKFylyVAjDPLb6kZftA9VZ4nmxcEF7nsfkpTBVn4kQ1C9VDPNgBb07oAyPEVN4seeTMnU3przU3F8oK9aFBY8dVslkQ2yWxegGdNJlc+O6RqOhJUhsoWiIHr7W7EqITz07/FSDX1rx0WzhPnNLihE/Z+GTeXg/SGx1TOW7ymIwgb+aSYPI2TVF/yNqMLod/lGQfLvXiZBz8t8WLKo/CXwhG++ctHNIouZfHqr+GbUOTiNB6L5V81Jne8/BQd+ceNFm9LmcJ6O4RiIBfaL1bRGIpkMPwnHbSSj+NKjd1l3tV5y9VlXjPbaau1lL96xuJJaQ9oDqAlp8yrVrDf0X+Xto3lQfC4DQjJb1vyzrwpn/hqW7abX36hy8vKSazl/MhYPcu/ajaZVhoM3nxfE4TQ8PV7LWkrRfSW8iiV7abXe7flJL3lEWurt9/ymEZGg6Vq6Xf/KmmsWXgYeLd/y7xdtGOavXUaRuy0cBJvBQJ0djvxPJ0lTCoRw+Bn7JYtvzhOXVnKlq8nh1iiqMWb50IuT/Lf2bylaJ5RpY1B8lchmt97+i9fTFMdiru4HYDZU+y/MzER8V/TJS5sC2+etnzP3jC3R7mV6oR9sa0SeUfv+SydnTMJ1+FxwM6ZDFiLxfUOWnq3oh1fvWgxXe94/FzoI6TLqRRaR08B034yWjHvPbuzctdCbPOX2459EUzZjLVaa+/Z3eVUMhq2Q7yVRflezMy2+RbaA8fB8geQ9342ZvPXPkThEzj1IQpbUWvb2rUQxQ/2Ls0YKK1E45y22HO8dfxES+FcslsuUvXUs5qD0/JlW7H8jKvlVUn7Vf2UJW3fbTd99t0WEn5eCIhY4r2UtrMFz1N6LiIezFvw9z/GrY32/0hZC8fUR0ZVi8FA49C2qF6Ak+JNJIKby2pwV4P3sa96Kym077ZGHevyLv+eNVnRO9TKGnMg4EB71MYL6CC0nXRXLaf9my0PleZ9tvxqutBU6rbHInj5bRoHrXYJePudCNOoBbfMu622hXZex7aTokXSDkusrnEMV5DtFjFCaHuksq9/Ui1PFd77bY4WlxctcL6E28sn8AwBnJbSPpd6t40XDF9tf2z23m/NNWs9/PXT6fHTILTGAKvlPmHeWstq/norUWUSTjV222tDv7hh8UnEbmnrje9S0ljNuNYstLv38sqq1cBtudbWuPhVyBvV8liCl9XtXhu2e22r3Wvl9ICGr+20e2233Wt77V7bf/C1P5XfwRv9JUPD2gTX5aExGEKX1YosBwXa/nN+pGRNJIJFTy2F95KxJG6MQk9r2+V07nXwrSAXTGkcFzzoz83T2I8lw9Ew0svVD4Z2w9B9+w6yOGlow2Ac3wsgRZxBi7HApItTtpEpkZioa5f3bzt52Ajz/Mq6hhOIw2rly9J5elyMro3EpBCziQWUHVOkUeZFHed1ZYaXcxbaFJMBRtwIiB7Hn1A28PfS8UCBF05zGkXznsv9LwKUjAZTGxs2Q2e1nZ/14b+2hv8qwHNRpFn06ITHGEFqkBr+a3f7Xw9Hmm4Uw4hgstm9LuF0x6OIjBjp184mdDW5eokhpQ4nM42wCArgAhFrKSJYDNps5mMmJSzonpUh7Ndiw07voFqtnrKYTClUNi4tGD/0FMbnklx7bLn29V1NTYUkKJ6en1134Qjl0CdUWOSSqhsUZXwK6mpk/fKtpqujF1PAIhFQXwnQBDJuMToelRCzlTpwNd3RIvew1VANX1xS2dWkWemBzyNaWUEz+BGRryylRXuBywRNagjyak0/abLtGFc8dCoQo5dci4yPmHXrfJgPMT5ebQx0zebuKWqyXhYnIYlCgxuYXyNFnlrdqCFMU3WzynVm4L/sVYa5ath9fl6oTl/dSdZFTBLJigGrRUuhnOQDLZ3tdoomnIu1rZsNPmOuY3hlVsKi5+hpIcAksJcjMGYdKjJV+lBryUdpw3EXCc9jge4s4DMa2Z1djAl1o2JFwJjdITbEcga7mWF8/CLMj7lkZb/g82PuBjFYN0XT/Duv5seQ68uPny4ur45PP54cXZ5+eH91fHpx+Obs5Pi6U/3t9P2bD5/eH5cjn8uPffh0ic/BOqv8/OY0+/vw7HoBJ0vn8hcbZf8IXy//8/zk6vjDr+/PTn45Oct5Ct9/Orff1rETnnh3ellgIoI7OqnhmtvRNNxv11WMe2Rfq0DMgu0rkD5v3gB5et6AF8hfs3Qh4T+3Np60MeW1v7uD7k53OOhu7WwPtrf6B8P97rC/M9gbDIaDfnewdTDY2t/e2j3oDvKu4g1Y4jaBvE1pbiatX5web5Rzd6hSIuDU9XYomUhc1Yr06biUtBgL6IMqIttR5OL0GDVNDLXBtGsDCSkakCNTFmv4AfWSTZLArwyPr11SgDvnCHTr5Sdei2QJx7lISVZOwUM4x9bsiRenx6pDJLvlRlnCJj4xOr54FsGlq/CkQrWzMUcRm5EZnZNR3X6VUfs0jfTecxxAtePSpNVPVAGJSmrYsy9GmxqmHXMWCJiHK6aTzJgtBbEIdV3U9c9vDc4T3OEfRbgGw9uKz/YppwSsBlAukZEJ+CubFsOt48aWKLYmiXnMK1Rss95dimqe937GJjQoZB27cjiLUuDxAaYIdlEWsf/ybu8eJz0RPNbOIej1tc3O4bd5aff8/Z5XJhJrllgI0FEoz/u5cy1gr7NKPL3dKy2u9nqYJW6TwcE7yfQCX1d92RNPwnD2quVnMY26l2cuP1j2tupreQxu5YUH4ddlvz4yQt0rD45RcjI/Ar709IOQS27gRyCXnn4QciQmy7Ck4PF9pI6xUnTCrpiU2cawCDo807NvNAFu/a2FtgqPoF520T4Cf5EH8NFRFr344HgFR9kjQxSefRBqnZvpEeB1rzw2hvXJNB6g5Cd6EDw6UpaQ0DoPz8NdA3LPySOgvScfhggHhqU5Uj5nPDhGvYW9aCQ3VP1bjw/UXNuXH38QdtESeARy8eEH4d7PoscUTl2xmTLM/x8AAP//6/oIFQ==" } diff --git a/x-pack/functionbeat/include/fields.go b/x-pack/functionbeat/include/fields.go index d901da6e195..b58f331ad47 100644 --- a/x-pack/functionbeat/include/fields.go +++ b/x-pack/functionbeat/include/fields.go @@ -19,5 +19,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/x-pack/heartbeat/include/fields.go b/x-pack/heartbeat/include/fields.go index 5952fb2168d..906331fdde3 100644 --- a/x-pack/heartbeat/include/fields.go +++ b/x-pack/heartbeat/include/fields.go @@ -19,5 +19,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } diff --git a/x-pack/osquerybeat/include/fields.go b/x-pack/osquerybeat/include/fields.go index abfa41111f4..fd9ed97a8c6 100644 --- a/x-pack/osquerybeat/include/fields.go +++ b/x-pack/osquerybeat/include/fields.go @@ -19,5 +19,5 @@ func init() { // AssetFieldsYml returns asset data. // This is the base64 encoded zlib format compressed contents of fields.yml. func AssetFieldsYml() string { - return "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" + return "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" } From 4340e022fef7d21de2f691c6e2a1c28d507a70ca Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Mon, 11 Mar 2024 18:08:42 -0700 Subject: [PATCH 010/313] libbeat outputs: support `worker` or `workers` settings (#38257) * Support worker or workers * Update docs * Add CHANGELOG entry * Add license header * Fix imports --- CHANGELOG.next.asciidoc | 1 + .../elasticsearch/docs/elasticsearch.asciidoc | 2 +- libbeat/outputs/hosts.go | 52 ++++++++--- libbeat/outputs/hosts_test.go | 90 +++++++++++++++++++ .../outputs/logstash/docs/logstash.asciidoc | 2 +- libbeat/outputs/redis/docs/redis.asciidoc | 2 +- 6 files changed, 134 insertions(+), 15 deletions(-) create mode 100644 libbeat/outputs/hosts_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 248a4e0fae7..36808ed17a1 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -143,6 +143,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Enhance add_cloud_metadata processor with `orchestrator.cluster.name`, `orchestrator.cluster.id` and `azure.resourcegroup.name` when running inside an AKS cluster. {issue}33081[33081] {pull}37685[37685] - Upgrade go-sysinfo from 1.12.0 to 1.13.1. {pull}37996[37996] - Make `range` condition work with numeric values as strings. {pull}38080[38080] +- Allow users to configure number of output workers (for outputs that support workers) with either `worker` or `workers`. {pull}38257[38257] *Auditbeat* diff --git a/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc b/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc index 046c45a34dc..3b010b7ed36 100644 --- a/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc +++ b/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc @@ -116,7 +116,7 @@ The default value is `false`. [[worker-option]] -===== `worker` +===== `worker` or `workers` The number of workers per configured host publishing events to Elasticsearch. This is best used with load balancing mode enabled. Example: If you have 2 hosts and diff --git a/libbeat/outputs/hosts.go b/libbeat/outputs/hosts.go index 0cd1d566466..2bfa5085c00 100644 --- a/libbeat/outputs/hosts.go +++ b/libbeat/outputs/hosts.go @@ -17,33 +17,61 @@ package outputs -import "github.com/elastic/elastic-agent-libs/config" +import ( + "github.com/elastic/elastic-agent-libs/config" +) + +type hostWorkerCfg struct { + Hosts []string `config:"hosts" validate:"required"` + + // Worker is the number of output workers desired. + Worker int `config:"worker"` + + // Workers is an alias for Worker. If both Worker and Workers are set, + // the value of Worker should take precedence. To always retrieve the correct + // value, use the NumWorkers() method. + Workers int `config:"workers"` +} + +// NumWorkers returns the number of output workers desired. +func (hwc hostWorkerCfg) NumWorkers() int { + // Both Worker and Workers are set; give precedence to Worker. + if hwc.Worker != 0 && hwc.Workers != 0 { + return hwc.Worker + } + + // Only one is set; figure out which one and return its value. + if hwc.Worker != 0 { + return hwc.Worker + } + + return hwc.Workers +} // ReadHostList reads a list of hosts to connect to from an configuration // object. If the `worker` settings is > 1, each host is duplicated in the final // host list by the number of `worker`. func ReadHostList(cfg *config.C) ([]string, error) { - config := struct { - Hosts []string `config:"hosts" validate:"required"` - Worker int `config:"worker" validate:"min=1"` - }{ - Worker: 1, - } - + var config hostWorkerCfg err := cfg.Unpack(&config) if err != nil { return nil, err } + // Default to one worker + if config.NumWorkers() < 1 { + config.Worker = 1 + } + lst := config.Hosts - if len(lst) == 0 || config.Worker <= 1 { + if len(lst) == 0 || config.NumWorkers() <= 1 { return lst, nil } - // duplicate entries config.Worker times - hosts := make([]string, 0, len(lst)*config.Worker) + // duplicate entries config.NumWorkers() times + hosts := make([]string, 0, len(lst)*config.NumWorkers()) for _, entry := range lst { - for i := 0; i < config.Worker; i++ { + for i := 0; i < config.NumWorkers(); i++ { hosts = append(hosts, entry) } } diff --git a/libbeat/outputs/hosts_test.go b/libbeat/outputs/hosts_test.go new file mode 100644 index 00000000000..5b881c48226 --- /dev/null +++ b/libbeat/outputs/hosts_test.go @@ -0,0 +1,90 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package outputs + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/elastic/elastic-agent-libs/config" +) + +func TestHostsNumWorkers(t *testing.T) { + tests := map[string]struct { + hwc hostWorkerCfg + expectedNumWorkers int + }{ + "worker_set": {hwc: hostWorkerCfg{Worker: 17}, expectedNumWorkers: 17}, + "workers_set": {hwc: hostWorkerCfg{Workers: 23}, expectedNumWorkers: 23}, + "both_set": {hwc: hostWorkerCfg{Worker: 17, Workers: 23}, expectedNumWorkers: 17}, + } + + for name, test := range tests { + t.Run(name, func(t *testing.T) { + require.Equal(t, test.expectedNumWorkers, test.hwc.NumWorkers()) + }) + } +} + +func TestReadHostList(t *testing.T) { + tests := map[string]struct { + cfg map[string]interface{} + expectedHosts []string + }{ + "one_host_no_worker_set": { + cfg: map[string]interface{}{ + "hosts": []string{"foo.bar"}, + }, + expectedHosts: []string{"foo.bar"}, + }, + "one_host_worker_set": { + cfg: map[string]interface{}{ + "hosts": []string{"foo.bar"}, + "worker": 3, + }, + expectedHosts: []string{"foo.bar", "foo.bar", "foo.bar"}, + }, + "one_host_workers_set": { + cfg: map[string]interface{}{ + "hosts": []string{"foo.bar"}, + "workers": 2, + }, + expectedHosts: []string{"foo.bar", "foo.bar"}, + }, + "one_host_worker_workers_both_set": { + cfg: map[string]interface{}{ + "hosts": []string{"foo.bar"}, + "worker": 3, + "workers": 2, + }, + expectedHosts: []string{"foo.bar", "foo.bar", "foo.bar"}, + }, + } + + for name, test := range tests { + t.Run(name, func(t *testing.T) { + cfg, err := config.NewConfigFrom(test.cfg) + require.NoError(t, err) + + hosts, err := ReadHostList(cfg) + require.NoError(t, err) + require.Equal(t, test.expectedHosts, hosts) + }) + } +} diff --git a/libbeat/outputs/logstash/docs/logstash.asciidoc b/libbeat/outputs/logstash/docs/logstash.asciidoc index 95ff399645b..5fa2fc5a028 100644 --- a/libbeat/outputs/logstash/docs/logstash.asciidoc +++ b/libbeat/outputs/logstash/docs/logstash.asciidoc @@ -262,7 +262,7 @@ Configure escaping of HTML in strings. Set to `true` to enable escaping. The default value is `false`. -===== `worker` +===== `worker` or `workers` The number of workers per configured host publishing events to {ls}. This is best used with load balancing mode enabled. Example: If you have 2 hosts and diff --git a/libbeat/outputs/redis/docs/redis.asciidoc b/libbeat/outputs/redis/docs/redis.asciidoc index cc7ab1ce655..0b758e524cb 100644 --- a/libbeat/outputs/redis/docs/redis.asciidoc +++ b/libbeat/outputs/redis/docs/redis.asciidoc @@ -158,7 +158,7 @@ Output codec configuration. If the `codec` section is missing, events will be js See <> for more information. -===== `worker` +===== `worker` or `workers` The number of workers to use for each host configured to publish events to Redis. Use this setting along with the `loadbalance` option. For example, if you have 2 hosts and 3 workers, in total 6 workers are started (3 for each host). From 3f462221002e595c5763bc626f1dc1a8e1b508e2 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 12 Mar 2024 10:04:33 +0100 Subject: [PATCH 011/313] dependabot: for GitHub actions (#38184) --- .github/CODEOWNERS | 2 +- .github/dependabot.yml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c10616bd3d6..771a2474620 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -19,7 +19,7 @@ CHANGELOG* /NOTICE.txt @elastic/beats-tech-leads /.ci/ @elastic/elastic-agent-data-plane @elastic/ingest-eng-prod -/.github/ @elastic/elastic-agent-data-plane +/.github/ @elastic/ingest-eng-prod /auditbeat/ @elastic/sec-linux-platform /deploy/ @elastic/elastic-agent-data-plane /deploy/kubernetes @elastic/elastic-agent-data-plane @elastic/obs-cloudnative-monitoring diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 304f3add387..7fcaca8ac9e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -38,3 +38,19 @@ updates: # Skip github.com/elastic/mito because it requires documentation updates. - dependency-name: github.com/elastic/mito open-pull-requests-limit: 2 + + # GitHub actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + day: "sunday" + time: "22:00" + labels: + - automation + - dependabot + groups: + github-actions: + patterns: + - "*" + open-pull-requests-limit: 5 From 843010c1cbddd201bb4c08a79fd649a0af3c04ce Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Tue, 12 Mar 2024 16:42:06 +0200 Subject: [PATCH 012/313] migrate xpack-metricbeat (#38081) * migrate xpack-metricbeat --- .buildkite/hooks/pre-command | 30 ++- .buildkite/scripts/cloud_tests.sh | 24 +++ .buildkite/scripts/common.sh | 171 ++++++++++++++-- .../scripts/generate_metricbeat_pipeline.sh | 4 +- .../scripts/generate_packetbeat_pipeline.sh | 6 +- .../scripts/generate_winlogbeat_pipeline.sh | 2 +- .../generate_xpack_metricbeat_pipeline.sh | 190 ++++++++++++++++++ .buildkite/scripts/setenv.sh | 21 +- .buildkite/x-pack/pipeline.xpack.libbeat.yml | 8 +- .../x-pack/pipeline.xpack.metricbeat.yml | 60 +++++- 10 files changed, 487 insertions(+), 29 deletions(-) create mode 100755 .buildkite/scripts/cloud_tests.sh create mode 100755 .buildkite/scripts/generate_xpack_metricbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 0ac7c51099c..282fb5a0085 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -2,6 +2,27 @@ set -euo pipefail +AWS_SERVICE_ACCOUNT_SECRET_PATH="kv/ci-shared/platform-ingest/aws_account_auth" + +retry() { + local retries=$1 + shift + local count=0 + until "$@"; do + exit=$? + wait=$((2 ** count)) + count=$((count + 1)) + if [ $count -lt "$retries" ]; then + >&2 echo "Retry $count/$retries exited $exit, retrying in $wait seconds..." + sleep $wait + else + >&2 echo "Retry $count/$retries exited $exit, no more retries left." + return $exit + fi + done + return 0 +} + if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" ]]; then source .buildkite/env-scripts/env.sh source .buildkite/env-scripts/util.sh @@ -12,10 +33,17 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then source .buildkite/scripts/setenv.sh if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" exit 0 fi fi + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" && "$BUILDKITE_STEP_KEY" == "extended-cloud-test" ]]; then + BEATS_AWS_SECRET_KEY=$(retry 5 vault kv get -field secret_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) + export BEATS_AWS_SECRET_KEY + BEATS_AWS_ACCESS_KEY=$(retry 5 vault kv get -field access_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) + export BEATS_AWS_ACCESS_KEY +fi diff --git a/.buildkite/scripts/cloud_tests.sh b/.buildkite/scripts/cloud_tests.sh new file mode 100755 index 00000000000..9e7ce95be66 --- /dev/null +++ b/.buildkite/scripts/cloud_tests.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# What Terraform Module will run +export MODULE_DIR="x-pack/metricbeat/module/aws" + +source .buildkite/scripts/install_tools.sh + +set -euo pipefail + +trap 'teardown || true; unset_secrets' EXIT + +# Set the MODULE env variable if possible +defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" + +# Prepare the cloud resources using Terraform +startCloudTestEnv "${MODULE_DIR}" + +# Run tests +echo "--- Run Cloud Tests for $BEATS_PROJECT_NAME" +pushd "${BEATS_PROJECT_NAME}" > /dev/null + +mage build test + +popd > /dev/null diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index b797ec718aa..ebb15c937dd 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -9,6 +9,8 @@ arch_type="$(uname -m)" GITHUB_PR_TRIGGER_COMMENT=${GITHUB_PR_TRIGGER_COMMENT:-""} GITHUB_PR_LABELS=${GITHUB_PR_LABELS:-""} ONLY_DOCS=${ONLY_DOCS:-"true"} +OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" +XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_libbeat+x}" ] && run_libbeat="$(buildkite-agent meta-data get run_libbeat --default "false")" [ -z "${run_metricbeat+x}" ] && run_metricbeat="$(buildkite-agent meta-data get run_metricbeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" @@ -17,6 +19,9 @@ ONLY_DOCS=${ONLY_DOCS:-"true"} [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" [ -z "${run_metricbeat_macos_tests+x}" ] && run_metricbeat_macos_tests="$(buildkite-agent meta-data get run_metricbeat_macos_tests --default "false")" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" +[ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" +[ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" +[ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" metricbeat_changeset=( "^metricbeat/.*" @@ -81,6 +86,30 @@ packaging_changeset=( ".go-version" ) +case "${BUILDKITE_PIPELINE_SLUG}" in + "beats-metricbeat") + BEAT_CHANGESET_REFERENCE=${metricbeat_changeset[@]} + ;; + "beats-libbeat") + BEAT_CHANGESET_REFERENCE=${libbeat_changeset[@]} + ;; + "beats-packetbeat") + BEAT_CHANGESET_REFERENCE=${packetbeat_changeset[@]} + ;; + "beats-winlogbeat") + BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} + ;; + "beats-xpack-libbeat") + BEAT_CHANGESET_REFERENCE=${xpack_libbeat_changeset[@]} + ;; + "beats-xpack-metricbeat") + BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} + ;; + *) + echo "The changeset for the ${BUILDKITE_PIPELINE_SLUG} pipeline hasn't been defined yet." + ;; +esac + check_and_set_beat_vars() { if [[ -n "$BEATS_PROJECT_NAME" && "$BEATS_PROJECT_NAME" == *"x-pack/"* ]]; then BEATS_XPACK_PROJECT_NAME=${BEATS_PROJECT_NAME//-/} #remove - @@ -89,8 +118,8 @@ check_and_set_beat_vars() { BEATS_GH_LABEL=${BEATS_XPACK_LABEL_PROJECT_NAME} TRIGGER_SPECIFIC_BEAT="run_${BEATS_XPACK_PROJECT_NAME}" TRIGGER_SPECIFIC_ARM_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_arm_tests" + TRIGGER_SPECIFIC_AWS_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_aws_tests" TRIGGER_SPECIFIC_MACOS_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_macos_tests" - declare -n BEAT_CHANGESET_REFERENCE="${BEATS_XPACK_PROJECT_NAME}_changeset" echo "Beats project name is $BEATS_XPACK_PROJECT_NAME" mandatory_changeset=( "${BEAT_CHANGESET_REFERENCE[@]}" @@ -101,8 +130,8 @@ check_and_set_beat_vars() { BEATS_GH_LABEL=${BEATS_PROJECT_NAME} TRIGGER_SPECIFIC_BEAT="run_${BEATS_PROJECT_NAME}" TRIGGER_SPECIFIC_ARM_TESTS="run_${BEATS_PROJECT_NAME}_arm_tests" + TRIGGER_SPECIFIC_AWS_TESTS="run_${BEATS_PROJECT_NAME}_aws_tests" TRIGGER_SPECIFIC_MACOS_TESTS="run_${BEATS_PROJECT_NAME}_macos_tests" - declare -n BEAT_CHANGESET_REFERENCE="${BEATS_PROJECT_NAME}_changeset" echo "Beats project name is $BEATS_PROJECT_NAME" mandatory_changeset=( "${BEAT_CHANGESET_REFERENCE[@]}" @@ -113,8 +142,10 @@ check_and_set_beat_vars() { BEATS_GH_COMMENT="/test ${BEATS_PROJECT_NAME}" BEATS_GH_MACOS_COMMENT="${BEATS_GH_COMMENT} for macos" BEATS_GH_ARM_COMMENT="${BEATS_GH_COMMENT} for arm" - BAETS_GH_MACOS_LABEL="macOS" - BAETS_GH_ARM_LABEL="arm" + BEATS_GH_AWS_COMMENT="${BEATS_GH_COMMENT} for aws cloud" + BEATS_GH_MACOS_LABEL="macOS" + BEATS_GH_ARM_LABEL="arm" + BEATS_GH_AWS_LABEL="aws" } with_docker_compose() { @@ -127,6 +158,19 @@ with_docker_compose() { docker-compose version } +with_Terraform() { + echo "Setting up the Terraform environment..." + local path_to_file="${WORKSPACE}/terraform.zip" + create_workspace + check_platform_architeture + retry 5 curl -sSL -o ${path_to_file} "https://releases.hashicorp.com/terraform/${ASDF_TERRAFORM_VERSION}/terraform_${ASDF_TERRAFORM_VERSION}_${platform_type_lowercase}_${go_arch_type}.zip" + unzip -q ${path_to_file} -d ${BIN}/ + rm ${path_to_file} + chmod +x ${BIN}/terraform + export PATH="${BIN}:${PATH}" + terraform version +} + create_workspace() { if [[ ! -d "${BIN}" ]]; then mkdir -p "${BIN}" @@ -168,6 +212,8 @@ with_mage() { for pkg in "${install_packages[@]}"; do go install "${pkg}@latest" done + echo "Download modules to local cache" + retry 3 go mod download } with_go() { @@ -283,9 +329,15 @@ are_paths_changed() { are_changed_only_paths() { local patterns=("${@}") - local changelist=() - local changed_files=$(git diff --name-only HEAD@{1} HEAD) - if [ -z "$changed_files" ] || grep -qE "$(IFS=\|; echo "${patterns[*]}")" <<< "$changed_files"; then + local changed_files=($(git diff --name-only HEAD@{1} HEAD)) + local matched_files=() + for pattern in "${patterns[@]}"; do + local matched=($(grep -E "${pattern}" <<< "${changed_files[@]}")) + if [ "${#matched[@]}" -gt 0 ]; then + matched_files+=("${matched[@]}") + fi + done + if [ "${#matched_files[@]}" -eq "${#changed_files[@]}" ] || [ "${#changed_files[@]}" -eq 0 ]; then return 0 fi return 1 @@ -301,7 +353,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" ]]; then - if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ "${BAETS_GH_ARM_LABEL}" || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then + if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi fi @@ -311,8 +363,19 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" ]]; then - if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ "${BAETS_GH_MACOS_LABEL}" || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 + return 0 + fi + fi + fi + return 1 +} + +are_conditions_met_aws_tests() { + if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_AWS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_AWS_LABEL} || "${!TRIGGER_SPECIFIC_AWS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi fi @@ -336,19 +399,101 @@ config_git() { fi } +defineModuleFromTheChangeSet() { + # This method gathers the module name, if required, in order to run the ITs only if the changeset affects a specific module. + # For such, it's required to look for changes under the module folder and exclude anything else such as asciidoc and png files. + # This method defines and exports the MODULE variable with a particular module name or '' if changeset doesn't affect a specific module + local project_path=$1 + local project_path_transformed=$(echo "$project_path" | sed 's/\//\\\//g') + local project_path_exclussion="((?!^${project_path_transformed}\\/).)*\$" + local exclude=("^(${project_path_exclussion}|((?!\\/module\\/).)*\$|.*\\.asciidoc|.*\\.png)") + + if [[ "$project_path" == *"x-pack/"* ]]; then + local pattern=("$XPACK_MODULE_PATTERN") + else + local pattern=("$OSS_MODULE_PATTERN") + fi + local changed_modules="" + local module_dirs=$(find "$project_path/module" -mindepth 1 -maxdepth 1 -type d) + for module_dir in $module_dirs; do + if are_paths_changed $module_dir && ! are_changed_only_paths "${exclude[@]}"; then + if [[ -z "$changed_modules" ]]; then + changed_modules=$(basename "$module_dir") + else + changed_modules+=",$(basename "$module_dir")" + fi + fi + done + if [[ -z "$changed_modules" ]]; then # TODO: remove this condition and uncomment the line below when the issue https://github.com/elastic/ingest-dev/issues/2993 is solved + export MODULE="aws" + else + export MODULE="${changed_modules}" # TODO: remove this line and uncomment the line below when the issue https://github.com/elastic/ingest-dev/issues/2993 is solved + # export MODULE="${changed_modules}" # TODO: uncomment the line when the issue https://github.com/elastic/ingest-dev/issues/2993 is solved + fi +} + +terraformInit() { + local dir=$1 + echo "Terraform Init on $dir" + pushd "${dir}" > /dev/null + terraform init + popd > /dev/null +} + +withAWS() { + # This method gathers the masked AWS credentials from pre-command hook and sets the right AWS variable names. + export AWS_ACCESS_KEY_ID=$BEATS_AWS_ACCESS_KEY + export AWS_SECRET_ACCESS_KEY=$BEATS_AWS_SECRET_KEY + export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}aws" +} + +startCloudTestEnv() { + local dir=$1 + withAWS + echo "--- Run docker-compose services for emulated cloud env" + docker-compose -f .ci/jobs/docker-compose.yml up -d #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK + with_Terraform + terraformInit "$dir" + export TF_VAR_BRANCH=$(echo "${BUILDKITE_BRANCH}" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9-]/-/g') + export TF_VAR_BUILD_ID="${BUILDKITE_BUILD_ID}" + export TF_VAR_CREATED_DATE=$(date +%s) + export TF_VAR_ENVIRONMENT="ci" + export TF_VAR_REPO="${REPO}" + pushd "${dir}" > /dev/null + terraform apply -auto-approve + popd > /dev/null +} + +teardown() { + # Teardown resources after using them + echo "---Terraform Cleanup" + .ci/scripts/terraform-cleanup.sh "${MODULE_DIR}" #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK + + echo "---Docker Compose Cleanup" + docker-compose -f .ci/jobs/docker-compose.yml down -v #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK +} + +unset_secrets () { + for var in $(printenv | sed 's;=.*;;' | sort); do + if [[ "$var" == AWS_* || "$var" == BEATS_AWS_* ]]; then + unset "$var" + fi + done +} + if ! are_changed_only_paths "${docs_changeset[@]}" ; then - ONLY_DOCS="false" + export ONLY_DOCS="false" echo "Changes include files outside the docs_changeset vairiabe. ONLY_DOCS=$ONLY_DOCS." else echo "All changes are related to DOCS. ONLY_DOCS=$ONLY_DOCS." fi if are_paths_changed "${go_mod_changeset[@]}" ; then - GO_MOD_CHANGES="true" + export GO_MOD_CHANGES="true" fi if are_paths_changed "${packaging_changeset[@]}" ; then - PACKAGING_CHANGES="true" + export PACKAGING_CHANGES="true" fi check_and_set_beat_vars diff --git a/.buildkite/scripts/generate_metricbeat_pipeline.sh b/.buildkite/scripts/generate_metricbeat_pipeline.sh index e91896eb70c..477f8fb25a3 100755 --- a/.buildkite/scripts/generate_metricbeat_pipeline.sh +++ b/.buildkite/scripts/generate_metricbeat_pipeline.sh @@ -149,7 +149,7 @@ if are_conditions_met_packaging; then image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS: "${PACKAGING_PLATFORMS}" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -159,7 +159,7 @@ if are_conditions_met_packaging; then imagePrefix: "${IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" env: - PLATFORMS: "linux/arm64" + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" YAML diff --git a/.buildkite/scripts/generate_packetbeat_pipeline.sh b/.buildkite/scripts/generate_packetbeat_pipeline.sh index 89ea7a33e20..97bdb531a6b 100755 --- a/.buildkite/scripts/generate_packetbeat_pipeline.sh +++ b/.buildkite/scripts/generate_packetbeat_pipeline.sh @@ -92,7 +92,7 @@ else exit 0 fi -if are_conditions_met_arm_tests && are_conditions_met_macos_tests; then +if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then cat >> $pipelineName <<- YAML - group: "Extended Tests" @@ -150,7 +150,7 @@ if are_conditions_met_packaging; then image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS: "${PACKAGING_PLATFORMS}" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -160,7 +160,7 @@ if are_conditions_met_packaging; then imagePrefix: "${IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" env: - PLATFORMS: "linux/arm64" + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" YAML diff --git a/.buildkite/scripts/generate_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_winlogbeat_pipeline.sh index 1eb1b459c92..ce812016e79 100755 --- a/.buildkite/scripts/generate_winlogbeat_pipeline.sh +++ b/.buildkite/scripts/generate_winlogbeat_pipeline.sh @@ -96,7 +96,7 @@ if are_conditions_met_packaging; then image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS: "${PACKAGING_PLATFORMS}" YAML diff --git a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh new file mode 100755 index 00000000000..c9c65a5e757 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh @@ -0,0 +1,190 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-metricbeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: ".buildkite/scripts/go_int_tests.sh" + agents: + provider: "gcp" + image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":python: Python Integration Tests" + key: "mandatory-python-int-test" + command: ".buildkite/scripts/py_int_tests.sh" + agents: + provider: "gcp" + image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "mandatory-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_2016}" + - "${IMAGE_WIN_2022}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h + - group: "Extended Windows Tests" + key: "extended-win-tests" + steps: + - label: ":windows: Windows 10 Unit Tests" + key: "extended-win-10-unit-tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows: Windows 11 Unit Tests" + key: "extended-win-11-unit-tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows: Win 2019 Unit Tests" + key: "extended-win-2019-unit-tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +#TODO: replace by commented-out below condition when issues mentioned in the PR https://github.com/elastic/beats/pull/38081 are resolved +if [[ are_conditions_met_aws_tests || are_conditions_met_macos_tests ]]; then +# if [[ are_conditions_met_macos_tests ]]; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: + +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +if are_conditions_met_aws_tests; then + cat >> $pipelineName <<- YAML + - label: ":linux: Cloud Tests" + key: "extended-cloud-test" + command: ".buildkite/scripts/cloud_tests.sh" + agents: + provider: "gcp" + image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 25121de212f..974886061d4 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -1,13 +1,20 @@ #!/usr/bin/env bash set -euo pipefail - +REPO="beats" +TMP_FOLDER="tmp.${REPO}" +DOCKER_REGISTRY="docker.elastic.co" SETUP_GVM_VERSION="v0.5.1" DOCKER_COMPOSE_VERSION="1.21.0" DOCKER_COMPOSE_VERSION_AARCH64="v2.21.0" SETUP_WIN_PYTHON_VERSION="3.11.0" NMAP_WIN_VERSION="7.12" # Earlier versions of NMap provide WinPcap (the winpcap packages don't install nicely because they pop-up a UI) GO_VERSION=$(cat .go-version) +ASDF_MAGE_VERSION="1.15.0" +ASDF_TERRAFORM_VERSION="1.0.2" +PACKAGING_PLATFORMS="+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" +PACKAGING_ARM_PLATFORMS="linux/arm64" +AWS_REGION="eu-central-1" export SETUP_GVM_VERSION export DOCKER_COMPOSE_VERSION @@ -15,6 +22,14 @@ export DOCKER_COMPOSE_VERSION_AARCH64 export SETUP_WIN_PYTHON_VERSION export NMAP_WIN_VERSION export GO_VERSION +export ASDF_MAGE_VERSION +export PACKAGING_PLATFORMS +export PACKAGING_ARM_PLATFORMS +export REPO +export TMP_FOLDER +export DOCKER_REGISTRY +export ASDF_TERRAFORM_VERSION +export AWS_REGION exportVars() { local platform_type="$(uname)" @@ -41,10 +56,10 @@ exportVars() { fi } - -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then exportVars export RACE_DETECTOR="true" export TEST_COVERAGE="true" export DOCKER_PULL="0" + export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi diff --git a/.buildkite/x-pack/pipeline.xpack.libbeat.yml b/.buildkite/x-pack/pipeline.xpack.libbeat.yml index 01695fa4fb6..0c745b1a09d 100644 --- a/.buildkite/x-pack/pipeline.xpack.libbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.libbeat.yml @@ -20,7 +20,7 @@ steps: - input: "Input Parameters" key: "input-run-all-stages" fields: - - select: "Packetbeat - run_xpack_libbeat" + - select: "Libbeat - run_xpack_libbeat" key: "run_xpack_libbeat" options: - label: "True" @@ -28,7 +28,7 @@ steps: - label: "False" value: "false" default: "false" - - select: "Packetbeat - run_xpack_libbeat_arm_tests" + - select: "Libbeat - run_xpack_libbeat_arm_tests" key: "run_xpack_libbeat_arm_tests" options: - label: "True" @@ -42,8 +42,8 @@ steps: if: "build.source == 'ui'" allow_dependency_failure: false - - label: ":linux: Load dynamic packetbeat pipeline" - key: "packetbeat-pipeline" + - label: ":linux: Load dynamic x-pack libbeat pipeline" + key: "libbeat-pipeline" command: ".buildkite/scripts/generate_xpack_libbeat_pipeline.sh" notify: - github_commit_status: diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 34321b61161..81756564919 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -1,5 +1,61 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-metricbeat" + +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_WIN_10: "family/general-windows-10" + IMAGE_WIN_11: "family/general-windows-11" + IMAGE_WIN_2016: "family/core-windows-2016" + IMAGE_WIN_2019: "family/core-windows-2019" + IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/metricbeat" steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Metricbeat - run_xpack_metricbeat" + key: "run_xpack_metricbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Metricbeat - run_xpack_metricbeat_macos_tests" + key: "run_xpack_metricbeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Metricbeat - run_xpack_metricbeat_aws_tests" + key: "run_xpack_metricbeat_aws_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack metricbeat pipeline" + key: "metricbeat-pipeline" + command: ".buildkite/scripts/generate_xpack_metricbeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" From 8af7d19d02c8516dcb28ab92fec2de578bc32ec8 Mon Sep 17 00:00:00 2001 From: muthu-mps <101238137+muthu-mps@users.noreply.github.com> Date: Wed, 13 Mar 2024 12:43:15 +0530 Subject: [PATCH 013/313] filebeat/module/{iis,o365}: Fix uri_parts ingest pipeline processor output wrong extension (#38216) * Fix incorrect values in url-extensions * updated the effected version in snapshots.yml --- CHANGELOG.next.asciidoc | 1 + .../module/iis/error/test/iis_error_url.log-expected.json | 4 +--- testing/environments/snapshot.yml | 6 +++--- .../o365/audit/test/13-dlp-exchange.log-expected.json | 3 +-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 36808ed17a1..2a4f76c2b69 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -100,6 +100,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Prevent HTTPJSON holding response bodies between executions. {issue}35219[35219] {pull}38116[38116] - Fix "failed processing S3 event for object key" error on aws-s3 input when key contains the "+" character {issue}38012[38012] {pull}38125[38125] - Fix duplicated addition of regexp extension in CEL input. {pull}38181[38181] +- Fix the incorrect values generated by the uri_parts processor. {pull}38216[38216] *Heartbeat* diff --git a/filebeat/module/iis/error/test/iis_error_url.log-expected.json b/filebeat/module/iis/error/test/iis_error_url.log-expected.json index cc721314175..88509d87dc5 100644 --- a/filebeat/module/iis/error/test/iis_error_url.log-expected.json +++ b/filebeat/module/iis/error/test/iis_error_url.log-expected.json @@ -39,7 +39,6 @@ "source.geo.region_name": "England", "source.ip": "81.2.69.145", "source.port": 12345, - "url.extension": "1", "url.original": "12.2.1", "url.path": "12.2.1" }, @@ -83,7 +82,6 @@ "source.geo.region_name": "England", "source.ip": "81.2.69.145", "source.port": 12345, - "url.extension": "/", "url.original": "./././././../../../../../../../../", "url.path": "./././././../../../../../../../../" }, @@ -343,4 +341,4 @@ "url.original": "/fee&fie=foe", "url.path": "/fee&fie=foe" } -] \ No newline at end of file +] diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index fd3c6007409..859e94b0672 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-74a79bf3-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-b9699c81-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-74a79bf3-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-b9699c81-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-74a79bf3-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-b9699c81-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" diff --git a/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json b/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json index 6eae8240451..c6d25a2cc57 100644 --- a/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json +++ b/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json @@ -792,7 +792,6 @@ "forwarded" ], "url.domain": "example.net", - "url.extension": "com/sharepoint", "url.original": "https://example.net/testsiem2.onmicrosoft.com/sharepoint", "url.path": "/testsiem2.onmicrosoft.com/sharepoint", "url.scheme": "https", @@ -801,4 +800,4 @@ "user.id": "alice@testsiem2.onmicrosoft.com", "user.name": "alice" } -] \ No newline at end of file +] From 1e2b57c5651a02b2c84cefcbbee53b084a5d131c Mon Sep 17 00:00:00 2001 From: Dan Kortschak <90160302+efd6@users.noreply.github.com> Date: Wed, 13 Mar 2024 18:26:55 +1030 Subject: [PATCH 014/313] changelog: add missing entry for httpjson rate-limit enhancement (#38237) --- CHANGELOG.next.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 2a4f76c2b69..24ccc48ffdc 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -200,6 +200,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Update CEL mito extensions to v1.9.0 to add keys/values helper. {pull}37971[37971] - Add logging for cache processor file reads and writes. {pull}38052[38052] - Add parseDateInTZ value template for the HTTPJSON input {pull}37738[37738] +- Improve rate limit handling by HTTPJSON {issue}36207[36207] {pull}38161[38161] {pull}38237[38237] *Auditbeat* From 2fca7cd55e8f2733a80c634efe727044681ac02f Mon Sep 17 00:00:00 2001 From: Kevin Lacabane Date: Wed, 13 Mar 2024 12:21:26 +0100 Subject: [PATCH 015/313] add logstash queue.capacity mappings (#38262) --- metricbeat/module/logstash/fields.go | 2 +- .../module/logstash/node_stats/_meta/fields.yml | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/metricbeat/module/logstash/fields.go b/metricbeat/module/logstash/fields.go index 1cdf0ce0e6a..d1550b9555c 100644 --- a/metricbeat/module/logstash/fields.go +++ b/metricbeat/module/logstash/fields.go @@ -32,5 +32,5 @@ func init() { // AssetLogstash returns asset data. // This is the base64 encoded zlib format compressed contents of module/logstash. func AssetLogstash() string { - return "eJzEWU2v4zQU3b9fcdU1E4kFmy4QC0AMAsFqNghFbnKb+D0nzvijw+PXo7RNGyf+bNwhiy6S+Jxzbef63tMP8Ibve2C8kYrI9gVAUcVwD7vfrrd2LwA1ykrQQVHe7+H7FwCA6TF0vNYMXwAEMiQS99CQFwCJStG+kXv4aycl230Du1apYff3+KzlQpUV74+02cORMDmOP1Jktdyf0T9ATzq86yqlIkqeHwGo92FkEVwP1zvzofPhinYoFemG25NpNGGUyNndgah2D7sfbiN2K7DXU7eCmYuwCZmP77Az7rswXDhzrBbJUGqJdUn78vCuUK5edUVqRjxNcNHzGovzLBevp67osCsiSAw9Hfnn6XKcHJMSPYxLOL7TUcboksotwi/ACTvx4gl7JTdtENpnEHvRUSywJgquVT6OJdhEUmtBxlSRdRGunB7sZc7YtBZa0zqD6tu9Fd5EdEIhKc+x8rd7S8iJaqADMtrjepf2KBXWqwF8236uBp0t4TFO6pKcUJAGnbnFBuwDnxN8+90yO5vYrrwF3jXhsqgGXczVFy6mm5KvJsSv46tNyILotn1sy/n4DqoGTapKFVqSBsue9DznITXGdVZVxPC4vxB/jL44DdyjLD9rrkjZ0UpYAw0HmxBwEUU4qRsBvIpcoYfCn5P0ujugKPmxREaGsYgZUFBeuyKNm4+UORnvFeky5rVrqVrBlWJYOzfsE7UnKVjP+7mUvo//v+bdJeN2KgpeobykpQFFhb2K7BZsUnxoE+NnjRqvBU1Zcb2J0AFmbaAwuYGaSobCqF7SNGJhQ1kxtLaS7QGOG46jHowPHhmRilYSiajaomJaKhS2mXjD9y9crGMb5QUrKEtvPV2L8WaDPV0u9TnIL203dKgErWSRrGWux1FPL+cOFgfFfWWzVQIrJX4186GLTZo2GIcWOxSElRsUHIiq2lLSf91lMON94xz/hYs3FO7SxztY4CBQYq/OPdhTShfHDENwguYg45ubQeydWTpOI8jgDylHvYN1Y3VdTCZ+eMXKVXwZoStaPYZ3W0guU72GcUgx/owIizc62lw6/z0ooZdPPXlsvH7hUsEKdFsLLlGcaIWrbjuD3Ju3+smCbbcjwbuZAny/fvodPvZHnphH3R9I6OMI6BkvW+hg1A3uHOpv36YSzY7gX7hI8X9eKODjj85zze6JPXKc2UxuE7W+l37r4et95JfjkwTxRqxJZD11wGuexykNqYVUUz1S9wo3YI5HwDqdZnOsayYitu1PZ2Tr9oTIVV952BGBResbr499xTvaN9dpgHPLg6Lwqlrb3rll/aFVw1NlHSlTKJytcS5tP19pkrQFTfwIlR5H3hy9Kc+snXoT/Nm1ntUtzxef3SMMY4fwId5djyeMIYUo193kbAk7lkfGncbhAvYpqHm0eu1tEynH0sbZ3iZv1Knm3pdxAcQEAemedkIkEOdJp4UEkWHBRq/aVBWMEx53ljcwPWIGR9DFWbcmUM31gbmrYNt/oybA4j/S+xWTxAPWDyQdVhkgsrgsZ+v5+caG3Se3E0ZlLo87BFETAMtJOPtxmbuGsWHICh7sHyDrujk7gQipEFW7JwJFV7SJuJdFGrRsy2dRBBqFCLRIZy+Q6iBh/Z81F9d8kGt7TYm/jEjREJ0dFr1ZGski0s0fwEJMBGzwpIFHZyIi7Cd+TwsxjzHdm6a+Ka+9dFiX95uCxFrY4o/bWcOrM0sNhDmPcxM1mGUEjh3l88+YI6FMi1wnrtTVWE5u9ee8f+9bcP4LAAD//53osjw=" + return "eJzEWk2P6zQU3c+vuOqaF4kFmy4QC0AMAsHqbRCKPM5t4hknzvNHH8OvR2mbNk5sx27cIYtZJPE551479r2n8wne8H0PXNRKE9U8AWimOe5h99vl1u4JoEJFJes1E90evn8CABgfQysqw/EJQCJHonAPNXkCUKg162q1h792SvHdN7BrtO53fw/PGiF1SUV3YPUeDoSrYfyBIa/U/oT+CTrS4k1XqTTR6vQIQL/3A4sUpr/cmQ6dDtesRaVJ21+fjKMJZ0RN7vZEN3vY/XAdsVuAvR7bBcxUhEvIdHyLrXXfh+HDmWI1SPrSKKxK1pUv7xrV4lVfpHbEY4KLTlRYnLJcvB7bosW2iCCx9LTkn4fL8XKMSkw/TOHwTss4Z3Mqv4iwAC/syItH7LTatEBYl0HsWUcxwxophNH5OOZgI0llJBm2iqyTcOEMYM/3jE1zYQyrMqi+3lvgjURHlIqJHDN/vTeHHKl61iNnHS5XaYdKY7UYILatZ9qbbBseF6QqyRElqdG7t7iAQ+BTgm+/m+/ONrZv34LgnAhV0N4UU/WFj+mq5MOEhHV8WEJmRNfl45rO+1cQ7Q2hVBdGkRrLjnQi5yE1xHVSVcTw+L+QcIyhOC3cgyq/GKFJ2TIqnYGuB5sQcBFFOKobAIKKfKGvhT8l6Uz7grIUhxI56YcipkfJROWLNC4fKTkZ7hXpMqa1a6kbKbTmWHkX7AO1JylY5v1USt/G/19598m4nopSUFTnbalHSbHTkd2CS0oIbWT8YtDgpaApqTCbCD1gzgYKkxuosWQorOolTSMWLpQFQ+Mq2e7guOJ46sH44JETpRlVSCRtCsqN0ihdmXjD969CLmMb5K1WUI7eerxm4+0Ge7x86nOQn9tuaFFLRlWRrGWqx1NPz3MHs4PiNrPZKoGFkrCa6dDZIk0bjH2DLUrCyw0KXoimTanYv/4ymIuu9o7/KuQbSn/pExwssZeosNOnHuwhpYsnw7CaoCnI8OZmEHdnlo5TS9KHQ8pR72BVO10Xm0m8vCL1FV9W6JrR+/CuEylUqtcwDCmGPwPC7I2W1efOfw9amvnTwD42XL8IpWEBuq0FVyiPjOKi284g9+qtfnZgu+1ICC6mFb5fP/8Oz91BJO6j/g9k7eNY0TNcrtDBqhv8e2i4fRtLNDdCeOIixf95poDnH73nmtsTu+c4c5ncNmp1K/2Ww5frKCwnJAnijVibyHnqQNA8j1O6phZSTfVI3QvcFXM8AtbrNNtjfZmIWLY/nZCdyxMiZ33hYUcEFq1vuJ47KlrW1Zc0wKnlQVkEVS1t79yy/jC6FqmyDoxrlN7WOJe2ny80SdpWTfwIlQFH3h69aZ9ZOvU2+KNrPadbni8+t0e4jr2GD/HuejxhDClEue42Z0P4oTxw4TUOZ7APQc2jNWhv20g5pjbO9rZ5o041/7qMCyAmCEj3tBMigThPOi0kiAwLNnrVtqrVOOF+Z3kD0z1mcARdnHVrA1XCvHB/Fez6bdQGmP1GertiNvEV6weSDqsMEFlclpP1/Hhjw+2Tuwmjdq6AOwRRCYB5Ek5+XOauYWgYHgZOSU8o0+8fuoOnRxQZ1ZzEdBJJVXobpQ3w/XCKjtl7UAjZc7TaOULWL9bbA0ZIhaiuLREoupdJxD1PVG9UUz6KYqVFjECL9HRXDjlImP9H5eJyEuRaXuORX0YczhB9Lsy68jSSWaSbP4CZmAjY1RoD7s1ERNgP/J5mYu5jurXLXV1eXJR1XcFvChLPUMcvI27W9dmZbA2Eews5G3V1l5HIBfE2LvnOmANh3Mhc5ZAydGgktjqzwX/scOD8FwAA//81Lx/S" } diff --git a/metricbeat/module/logstash/node_stats/_meta/fields.yml b/metricbeat/module/logstash/node_stats/_meta/fields.yml index 8e37a165659..202907fdc29 100644 --- a/metricbeat/module/logstash/node_stats/_meta/fields.yml +++ b/metricbeat/module/logstash/node_stats/_meta/fields.yml @@ -161,6 +161,17 @@ type: long - name: max_queue_size_in_bytes type: long + - name: capacity + type: group + fields: + - name: max_queue_size_in_bytes + type: long + - name: max_unread_events + type: long + - name: page_capacity_in_bytes + type: long + - name: queue_size_in_bytes + type: long - name: events type: group fields: From 8e790dec0ea050057d011b36262647d2111a517d Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Wed, 13 Mar 2024 13:18:07 +0100 Subject: [PATCH 016/313] [CI] xpack/elastic-agent DRA pipeline for 7.17 (#38191) * [CI] xpack/elastic-agent DRA pipeline for 7.17 * Update catalog-info.yaml Co-authored-by: Victor Martinez --------- Co-authored-by: Victor Martinez --- catalog-info.yaml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/catalog-info.yaml b/catalog-info.yaml index 5e0f94fd2df..f52f80df3c7 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -693,3 +693,38 @@ spec: access_level: BUILD_AND_READ everyone: access_level: READ_ONLY +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-elastic-agent-binary-dra-7-17 + description: Buildkite pipeline for packaging Elastic Agent core binary and publish it to DRA + links: + - title: Pipeline + url: https://buildkite.com/elastic/buildkite-elastic-agent-binary-dra-7-17 + +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: buildkite-elastic-agent-binary-dra-7-17 + description: Buildkite pipeline for packaging Elastic Agent core binary and publish it to DRA + spec: + pipeline_file: ".buildkite/x-pack/elastic-agent/.buildkite/pipeline.xpack.elastic-agent-binary-dra.yml" + provider_settings: + build_branches: true + build_pull_requests: true + cancel_deleted_branch_builds: true + filter_condition: 'build.branch == "7.17" || build.pull_request.base_branch == "7.17"' + filter_enabled: true + repository: elastic/beats + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ From bc5a97fa159208311cef5b484b038d6dec90dccb Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:12:22 -0400 Subject: [PATCH 017/313] [updatecli] update elastic stack version for testing 8.14.0-14244116 (#38122) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Update snapshot.yml Made with ❤️️ by updatecli --------- Co-authored-by: apmmachine Co-authored-by: Denis --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 859e94b0672..7f78746abe0 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-b9699c81-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-faa2d2d3-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-b9699c81-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-faa2d2d3-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-b9699c81-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-faa2d2d3-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From fb2594a36c7c0e7aa973f7f44e990938506ee801 Mon Sep 17 00:00:00 2001 From: Dan Kortschak <90160302+efd6@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:17:28 +1030 Subject: [PATCH 018/313] x-pack/filebeat/input/http_endpoint: generalise event path using CEL (#38193) Allow users to handle events where multiple events are provided via single JSON objects in an array field. This is enabled by providing an optional CEL program with only minimal support for CEL evaluations; no extensions from the mito lib extensions are made available. --- CHANGELOG.next.asciidoc | 2 + .../docs/inputs/input-http-endpoint.asciidoc | 5 + x-pack/filebeat/input/http_endpoint/config.go | 1 + .../filebeat/input/http_endpoint/handler.go | 113 +++++++++++++++++- .../input/http_endpoint/handler_test.go | 38 +++++- x-pack/filebeat/input/http_endpoint/input.go | 15 ++- 6 files changed, 163 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 24ccc48ffdc..7fa92411e0f 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -201,6 +201,8 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Add logging for cache processor file reads and writes. {pull}38052[38052] - Add parseDateInTZ value template for the HTTPJSON input {pull}37738[37738] - Improve rate limit handling by HTTPJSON {issue}36207[36207] {pull}38161[38161] {pull}38237[38237] +- Add parseDateInTZ value template for the HTTPJSON input. {pull}37738[37738] +- Add support for complex event objects in the HTTP Endpoint input. {issue}37910[37910] {pull}38193[38193] *Auditbeat* diff --git a/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc b/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc index b7a7ee06f70..7f3050d1f68 100644 --- a/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc @@ -227,6 +227,11 @@ The prefix for the signature. Certain webhooks prefix the HMAC signature with a By default the input expects the incoming POST to include a Content-Type of `application/json` to try to enforce the incoming data to be valid JSON. In certain scenarios when the source of the request is not able to do that, it can be overwritten with another value or set to null. +[float] +==== `program` + +The normal operation of the input treats the body either as a single event when the body is an object, or as a set of events when the body is an array. If the body should be treated handled differently, for example a set of events in an array field of an object to be handled as a set of events, then a https://opensource.google.com/projects/cel[Common Expression Language (CEL)] program can be provided through this configuration field. No CEL extensions are provided beyond the function in the CEL https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard[standard library]. CEL https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes[optional types] are supported. + [float] ==== `response_code` diff --git a/x-pack/filebeat/input/http_endpoint/config.go b/x-pack/filebeat/input/http_endpoint/config.go index 3b0c97741de..1618dc90758 100644 --- a/x-pack/filebeat/input/http_endpoint/config.go +++ b/x-pack/filebeat/input/http_endpoint/config.go @@ -37,6 +37,7 @@ type config struct { URL string `config:"url" validate:"required"` Prefix string `config:"prefix"` ContentType string `config:"content_type"` + Program string `config:"program"` SecretHeader string `config:"secret.header"` SecretValue string `config:"secret.value"` HMACHeader string `config:"hmac.header"` diff --git a/x-pack/filebeat/input/http_endpoint/handler.go b/x-pack/filebeat/input/http_endpoint/handler.go index 0e2620b5b65..3d0948489ac 100644 --- a/x-pack/filebeat/input/http_endpoint/handler.go +++ b/x-pack/filebeat/input/http_endpoint/handler.go @@ -12,10 +12,16 @@ import ( "io" "net" "net/http" + "reflect" "time" + "github.com/google/cel-go/cel" + "github.com/google/cel-go/checker/decls" + "github.com/google/cel-go/common/types" + "github.com/google/cel-go/common/types/ref" "go.uber.org/zap" "go.uber.org/zap/zapcore" + "google.golang.org/protobuf/types/known/structpb" stateless "github.com/elastic/beats/v7/filebeat/input/v2/input-stateless" "github.com/elastic/beats/v7/libbeat/beat" @@ -24,6 +30,7 @@ import ( "github.com/elastic/beats/v7/x-pack/filebeat/input/internal/httplog" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/mito/lib" ) const headerContentEncoding = "Content-Encoding" @@ -43,6 +50,7 @@ type handler struct { reqLogger *zap.Logger host, scheme string + program *program messageField string responseCode int responseBody string @@ -80,7 +88,7 @@ func (h *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { r.Body = io.NopCloser(&buf) } - objs, _, status, err := httpReadJSON(body) + objs, _, status, err := httpReadJSON(body, h.program) if err != nil { h.sendAPIErrorResponse(w, r, h.log, status, err) h.metrics.apiErrors.Add(1) @@ -218,22 +226,22 @@ func (h *handler) publishEvent(obj, headers mapstr.M) error { return nil } -func httpReadJSON(body io.Reader) (objs []mapstr.M, rawMessages []json.RawMessage, status int, err error) { +func httpReadJSON(body io.Reader, prg *program) (objs []mapstr.M, rawMessages []json.RawMessage, status int, err error) { if body == http.NoBody { return nil, nil, http.StatusNotAcceptable, errBodyEmpty } - obj, rawMessage, err := decodeJSON(body) + obj, rawMessage, err := decodeJSON(body, prg) if err != nil { return nil, nil, http.StatusBadRequest, err } return obj, rawMessage, http.StatusOK, err } -func decodeJSON(body io.Reader) (objs []mapstr.M, rawMessages []json.RawMessage, err error) { +func decodeJSON(body io.Reader, prg *program) (objs []mapstr.M, rawMessages []json.RawMessage, err error) { decoder := json.NewDecoder(body) for decoder.More() { var raw json.RawMessage - if err := decoder.Decode(&raw); err != nil { + if err = decoder.Decode(&raw); err != nil { if err == io.EOF { //nolint:errorlint // This will never be a wrapped error. break } @@ -241,9 +249,22 @@ func decodeJSON(body io.Reader) (objs []mapstr.M, rawMessages []json.RawMessage, } var obj interface{} - if err := newJSONDecoder(bytes.NewReader(raw)).Decode(&obj); err != nil { + if err = newJSONDecoder(bytes.NewReader(raw)).Decode(&obj); err != nil { return nil, nil, fmt.Errorf("malformed JSON object at stream position %d: %w", decoder.InputOffset(), err) } + + if prg != nil { + obj, err = prg.eval(obj) + if err != nil { + return nil, nil, err + } + // Re-marshal to ensure the raw bytes agree with the constructed object. + raw, err = json.Marshal(obj) + if err != nil { + return nil, nil, fmt.Errorf("failed to remarshal object: %w", err) + } + } + switch v := obj.(type) { case map[string]interface{}: objs = append(objs, v) @@ -265,6 +286,86 @@ func decodeJSON(body io.Reader) (objs []mapstr.M, rawMessages []json.RawMessage, return objs, rawMessages, nil } +type program struct { + prg cel.Program + ast *cel.Ast +} + +func newProgram(src string) (*program, error) { + if src == "" { + return nil, nil + } + + registry, err := types.NewRegistry() + if err != nil { + return nil, fmt.Errorf("failed to create env: %w", err) + } + env, err := cel.NewEnv( + cel.Declarations(decls.NewVar("obj", decls.Dyn)), + cel.OptionalTypes(cel.OptionalTypesVersion(lib.OptionalTypesVersion)), + cel.CustomTypeAdapter(&numberAdapter{registry}), + cel.CustomTypeProvider(registry), + ) + if err != nil { + return nil, fmt.Errorf("failed to create env: %w", err) + } + + ast, iss := env.Compile(src) + if iss.Err() != nil { + return nil, fmt.Errorf("failed compilation: %w", iss.Err()) + } + + prg, err := env.Program(ast) + if err != nil { + return nil, fmt.Errorf("failed program instantiation: %w", err) + } + return &program{prg: prg, ast: ast}, nil +} + +var _ types.Adapter = (*numberAdapter)(nil) + +type numberAdapter struct { + fallback types.Adapter +} + +func (a *numberAdapter) NativeToValue(value any) ref.Val { + if n, ok := value.(json.Number); ok { + var errs []error + i, err := n.Int64() + if err == nil { + return types.Int(i) + } + errs = append(errs, err) + f, err := n.Float64() + if err == nil { + return types.Double(f) + } + errs = append(errs, err) + return types.NewErr("%v", errors.Join(errs...)) + } + return a.fallback.NativeToValue(value) +} + +func (p *program) eval(obj interface{}) (interface{}, error) { + out, _, err := p.prg.Eval(map[string]interface{}{"obj": obj}) + if err != nil { + err = lib.DecoratedError{AST: p.ast, Err: err} + return nil, fmt.Errorf("failed eval: %w", err) + } + + v, err := out.ConvertToNative(reflect.TypeOf((*structpb.Value)(nil))) + if err != nil { + return nil, fmt.Errorf("failed proto conversion: %w", err) + } + switch v := v.(type) { + case *structpb.Value: + return v.AsInterface(), nil + default: + // This should never happen. + return nil, fmt.Errorf("unexpected native conversion type: %T", v) + } +} + func decodeJSONArray(raw *bytes.Reader) (objs []mapstr.M, rawMessages []json.RawMessage, err error) { dec := newJSONDecoder(raw) token, err := dec.Token() diff --git a/x-pack/filebeat/input/http_endpoint/handler_test.go b/x-pack/filebeat/input/http_endpoint/handler_test.go index 6660508b15b..cb911f8ab18 100644 --- a/x-pack/filebeat/input/http_endpoint/handler_test.go +++ b/x-pack/filebeat/input/http_endpoint/handler_test.go @@ -38,6 +38,7 @@ func Test_httpReadJSON(t *testing.T) { tests := []struct { name string body string + program string wantObjs []mapstr.M wantStatus int wantErr bool @@ -135,10 +136,43 @@ func Test_httpReadJSON(t *testing.T) { }, wantStatus: http.StatusOK, }, + { + name: "kinesis", + body: `{ + "requestId": "ed4acda5-034f-9f42-bba1-f29aea6d7d8f", + "timestamp": 1578090901599, + "records": [ + { + "data": "aGVsbG8=" + }, + { + "data": "aGVsbG8gd29ybGQ=" + } + ] +}`, + program: `obj.records.map(r, { + "requestId": obj.requestId, + "timestamp": string(obj.timestamp), // leave timestamp in unix milli for ingest to handle. + "event": r, + })`, + wantRawMessage: []json.RawMessage{ + []byte(`{"event":{"data":"aGVsbG8="},"requestId":"ed4acda5-034f-9f42-bba1-f29aea6d7d8f","timestamp":"1578090901599"}`), + []byte(`{"event":{"data":"aGVsbG8gd29ybGQ="},"requestId":"ed4acda5-034f-9f42-bba1-f29aea6d7d8f","timestamp":"1578090901599"}`), + }, + wantObjs: []mapstr.M{ + {"event": map[string]any{"data": "aGVsbG8="}, "requestId": "ed4acda5-034f-9f42-bba1-f29aea6d7d8f", "timestamp": "1578090901599"}, + {"event": map[string]any{"data": "aGVsbG8gd29ybGQ="}, "requestId": "ed4acda5-034f-9f42-bba1-f29aea6d7d8f", "timestamp": "1578090901599"}, + }, + wantStatus: http.StatusOK, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - gotObjs, rawMessages, gotStatus, err := httpReadJSON(strings.NewReader(tt.body)) + prg, err := newProgram(tt.program) + if err != nil { + t.Fatalf("failed to compile program: %v", err) + } + gotObjs, rawMessages, gotStatus, err := httpReadJSON(strings.NewReader(tt.body), prg) if (err != nil) != tt.wantErr { t.Errorf("httpReadJSON() error = %v, wantErr %v", err, tt.wantErr) return @@ -344,7 +378,7 @@ func Test_apiResponse(t *testing.T) { pub := new(publisher) metrics := newInputMetrics("") defer metrics.Close() - apiHandler := newHandler(ctx, tracerConfig(tc.name, tc.conf, *withTraces), pub, logp.NewLogger("http_endpoint.test"), metrics) + apiHandler := newHandler(ctx, tracerConfig(tc.name, tc.conf, *withTraces), nil, pub, logp.NewLogger("http_endpoint.test"), metrics) // Execute handler. respRec := httptest.NewRecorder() diff --git a/x-pack/filebeat/input/http_endpoint/input.go b/x-pack/filebeat/input/http_endpoint/input.go index ca648b69747..7d5055ebe65 100644 --- a/x-pack/filebeat/input/http_endpoint/input.go +++ b/x-pack/filebeat/input/http_endpoint/input.go @@ -131,6 +131,14 @@ func (p *pool) serve(ctx v2.Context, e *httpEndpoint, pub stateless.Publisher, m metrics.route.Set(u.Path) metrics.isTLS.Set(e.tlsConfig != nil) + var prg *program + if e.config.Program != "" { + prg, err = newProgram(e.config.Program) + if err != nil { + return err + } + } + p.mu.Lock() s, ok := p.servers[e.addr] if ok { @@ -149,7 +157,7 @@ func (p *pool) serve(ctx v2.Context, e *httpEndpoint, pub stateless.Publisher, m return err } log.Infof("Adding %s end point to server on %s", pattern, e.addr) - s.mux.Handle(pattern, newHandler(s.ctx, e.config, pub, log, metrics)) + s.mux.Handle(pattern, newHandler(s.ctx, e.config, prg, pub, log, metrics)) s.idOf[pattern] = ctx.ID p.mu.Unlock() <-s.ctx.Done() @@ -165,7 +173,7 @@ func (p *pool) serve(ctx v2.Context, e *httpEndpoint, pub stateless.Publisher, m srv: srv, } s.ctx, s.cancel = ctxtool.WithFunc(ctx.Cancelation, func() { srv.Close() }) - mux.Handle(pattern, newHandler(s.ctx, e.config, pub, log, metrics)) + mux.Handle(pattern, newHandler(s.ctx, e.config, prg, pub, log, metrics)) p.servers[e.addr] = s p.mu.Unlock() @@ -287,7 +295,7 @@ func (s *server) getErr() error { return s.err } -func newHandler(ctx context.Context, c config, pub stateless.Publisher, log *logp.Logger, metrics *inputMetrics) http.Handler { +func newHandler(ctx context.Context, c config, prg *program, pub stateless.Publisher, log *logp.Logger, metrics *inputMetrics) http.Handler { h := &handler{ log: log, publisher: pub, @@ -305,6 +313,7 @@ func newHandler(ctx context.Context, c config, pub stateless.Publisher, log *log hmacType: c.HMACType, hmacPrefix: c.HMACPrefix, }, + program: prg, messageField: c.Prefix, responseCode: c.ResponseCode, responseBody: c.ResponseBody, From e0d5fe5fefaf3ad12cf68b7c89f3da4b4f435cae Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Thu, 14 Mar 2024 10:05:05 +0200 Subject: [PATCH 019/313] Migrate xpack packetbeat (#38135) * migrate xpack-metricbeat --------- Co-authored-by: Victor Martinez Co-authored-by: Julien Lind --- .buildkite/hooks/pre-command | 10 +- .buildkite/scripts/common.sh | 5 + .../generate_xpack_metricbeat_pipeline.sh | 11 +- .../generate_xpack_packetbeat_pipeline.sh | 195 ++++++++++++++++++ .buildkite/scripts/setenv.sh | 2 +- .buildkite/scripts/win_unit_tests.ps1 | 42 +++- .../x-pack/pipeline.xpack.packetbeat.yml | 60 +++++- x-pack/packetbeat/magefile.go | 10 +- 8 files changed, 318 insertions(+), 17 deletions(-) create mode 100644 .buildkite/scripts/generate_xpack_packetbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 282fb5a0085..c23f5c3af64 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -3,6 +3,7 @@ set -euo pipefail AWS_SERVICE_ACCOUNT_SECRET_PATH="kv/ci-shared/platform-ingest/aws_account_auth" +PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-ingest-ci-service-account" retry() { local retries=$1 @@ -33,7 +34,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then source .buildkite/scripts/setenv.sh if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" @@ -47,3 +48,10 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" && "$BUILDKITE_STEP BEATS_AWS_ACCESS_KEY=$(retry 5 vault kv get -field access_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) export BEATS_AWS_ACCESS_KEY fi + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then + if [[ "$BUILDKITE_STEP_KEY" == "extended-win-10-system-tests" || "$BUILDKITE_STEP_KEY" == "mandatory-win-2022-system-tests" ]]; then + PRIVATE_CI_GCS_CREDENTIALS_SECRET=$(retry 5 vault kv get -field plaintext -format=json ${PRIVATE_CI_GCS_CREDENTIALS_PATH}) + export PRIVATE_CI_GCS_CREDENTIALS_SECRET + fi +fi diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index ebb15c937dd..d6a91a48243 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -22,6 +22,8 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" +[ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" +[ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" metricbeat_changeset=( "^metricbeat/.*" @@ -105,6 +107,9 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-metricbeat") BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} ;; + "beats-xpack-packetbeat") + BEAT_CHANGESET_REFERENCE=${xpack_packetbeat_changeset[@]} + ;; *) echo "The changeset for the ${BUILDKITE_PIPELINE_SLUG} pipeline hasn't been defined yet." ;; diff --git a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh index c9c65a5e757..af116b17209 100755 --- a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh @@ -31,8 +31,6 @@ steps: provider: "gcp" image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" - label: ":python: Python Integration Tests" @@ -42,8 +40,6 @@ steps: provider: "gcp" image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" - label: ":windows: Windows Unit Tests - {{matrix.image}}" @@ -106,8 +102,7 @@ else fi #TODO: replace by commented-out below condition when issues mentioned in the PR https://github.com/elastic/beats/pull/38081 are resolved -if [[ are_conditions_met_aws_tests || are_conditions_met_macos_tests ]]; then -# if [[ are_conditions_met_macos_tests ]]; then +if are_conditions_met_aws_tests || are_conditions_met_macos_tests ; then cat >> $pipelineName <<- YAML - group: "Extended Tests" @@ -140,8 +135,6 @@ if are_conditions_met_aws_tests; then provider: "gcp" image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" YAML @@ -166,6 +159,8 @@ if are_conditions_met_packaging; then provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" diff --git a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh new file mode 100644 index 00000000000..4eb2a1c3e04 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh @@ -0,0 +1,195 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-packetbeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":linux: Ubuntu System Tests" + key: "mandatory-linux-system-test" + command: "cd $BEATS_PROJECT_NAME && mage systemTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":rhel: RHEL-9 Unit Tests" + key: "mandatory-rhel9-unit-test" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "gcp" + image: "${IMAGE_RHEL9_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "mandatory-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_2016}" + - "${IMAGE_WIN_2022}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + ## TODO: uncomment when the issue https://github.com/elastic/beats/issues/38142 is solved + # - label: ":windows: Windows 2022 System Tests" + # key: "mandatory-win-2022-system-tests" + # command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" + # agents: + # provider: "gcp" + # image: "${IMAGE_WIN_2022}" + # machineType: "${GCP_WIN_MACHINE_TYPE}" + # disk_size: 100 + # disk_type: "pd-ssd" + # artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h + + - group: "Extended Windows Tests" + key: "extended-win-tests" + steps: + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "extended-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + ## TODO: uncomment when the issue https://github.com/elastic/beats/issues/38142 is solved + # - label: ":windows: Windows 10 System Tests" + # key: "extended-win-10-system-tests" + # command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" + # agents: + # provider: "gcp" + # image: "${IMAGE_WIN_10}" + # machineType: "${GCP_WIN_MACHINE_TYPE}" + # disk_size: 100 + # disk_type: "pd-ssd" + # artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +if are_conditions_met_arm_tests || are_conditions_met_macos_tests ; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: + +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + - label: ":linux: ARM Ubuntu Unit Tests" + key: "extended-arm64-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 974886061d4..29a8a05446e 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -11,9 +11,9 @@ SETUP_WIN_PYTHON_VERSION="3.11.0" NMAP_WIN_VERSION="7.12" # Earlier versions of NMap provide WinPcap (the winpcap packages don't install nicely because they pop-up a UI) GO_VERSION=$(cat .go-version) ASDF_MAGE_VERSION="1.15.0" -ASDF_TERRAFORM_VERSION="1.0.2" PACKAGING_PLATFORMS="+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" PACKAGING_ARM_PLATFORMS="linux/arm64" +ASDF_TERRAFORM_VERSION="1.0.2" AWS_REGION="eu-central-1" export SETUP_GVM_VERSION diff --git a/.buildkite/scripts/win_unit_tests.ps1 b/.buildkite/scripts/win_unit_tests.ps1 index b3c5c58fac0..b61e4107c3c 100644 --- a/.buildkite/scripts/win_unit_tests.ps1 +++ b/.buildkite/scripts/win_unit_tests.ps1 @@ -1,3 +1,7 @@ +param( + [string]$testType = "unittest" +) + $ErrorActionPreference = "Stop" # set -e $WorkFolder = $env:BEATS_PROJECT_NAME $WORKSPACE = Get-Location @@ -120,6 +124,23 @@ function withNmap($version) { } Start-Process -FilePath $nmapDownloadPath -ArgumentList "/S" -Wait } +function google_cloud_auth { + $tempFileName = "google-cloud-credentials.json" + $secretFileLocation = Join-Path $env:TEMP $tempFileName + $null = New-Item -ItemType File -Path $secretFileLocation + Set-Content -Path $secretFileLocation -Value $env:PRIVATE_CI_GCS_CREDENTIALS_SECRET + gcloud auth activate-service-account --key-file $secretFileLocation > $null 2>&1 + $env:GOOGLE_APPLICATION_CREDENTIALS = $secretFileLocation +} + +function google_cloud_auth_cleanup { + if (Test-Path $env:GOOGLE_APPLICATION_CREDENTIALS) { + Remove-Item $env:GOOGLE_APPLICATION_CREDENTIALS -Force + Remove-Item Env:\GOOGLE_APPLICATION_CREDENTIALS + } else { + Write-Host "No GCP credentials were added" + } +} fixCRLF @@ -142,10 +163,23 @@ $env:MAGEFILE_CACHE = $magefile New-Item -ItemType Directory -Force -Path "build" -if ($env:BUILDKITE_PIPELINE_SLUG -eq "beats-xpack-libbeat") { - mage -w reader/etw build goUnitTest -} else { - mage build unitTest +if ($testType -eq "unittest") { + if ($env:BUILDKITE_PIPELINE_SLUG -eq "beats-xpack-libbeat") { + mage -w reader/etw build goUnitTest + } else { + mage build unitTest + } +} +elseif ($testType -eq "systemtest") { + try { + google_cloud_auth + mage systemTest + } finally { + google_cloud_auth_cleanup + } +} +else { + Write-Host "Unknown test type. Please specify 'unittest' or 'systemtest'." } $EXITCODE=$LASTEXITCODE diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 34321b61161..750b59e716d 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -1,5 +1,61 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-packetbeat" + +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_WIN_10: "family/general-windows-10" + IMAGE_WIN_11: "family/general-windows-11" + IMAGE_WIN_2016: "family/core-windows-2016" + IMAGE_WIN_2019: "family/core-windows-2019" + IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/packetbeat" steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Packetbeat - run_xpack_packetbeat" + key: "run_xpack_packetbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Packetbeat - run_xpack_packetbeat_macos_tests" + key: "run_xpack_packetbeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Packetbeat - run_xpack_packetbeat_arm_tests" + key: "run_xpack_packetbeat_arm_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack packetbeat pipeline" + key: "packetbeat-pipeline" + command: ".buildkite/scripts/generate_xpack_packetbeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/x-pack/packetbeat/magefile.go b/x-pack/packetbeat/magefile.go index 03104ab9157..357e5e23585 100644 --- a/x-pack/packetbeat/magefile.go +++ b/x-pack/packetbeat/magefile.go @@ -172,6 +172,13 @@ func SystemTest(ctx context.Context) error { return devtools.GoTest(ctx, args) } +func getBucketName() string { + if os.Getenv("BUILDKITE") == "true" { + return "ingest-buildkite-ci" + } + return "obs-ci-cache" +} + // getNpcapInstaller gets the installer from the Google Cloud Storage service. // // On Windows platforms, if getNpcapInstaller is invoked with the environment variables @@ -198,7 +205,8 @@ func getNpcapInstaller() error { return err } } + ciBucketName := getBucketName() fmt.Printf("getting %s from private cache\n", installer) - return sh.RunV("gsutil", "cp", "gs://obs-ci-cache/private/"+installer, dstPath) + return sh.RunV("gsutil", "cp", "gs://"+ciBucketName+"/private/"+installer, dstPath) } From 1e05407b636800139bf59889c88cd6831ab620c2 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Thu, 14 Mar 2024 10:07:17 +0200 Subject: [PATCH 020/313] Use native support BK-pr-bot support for merge commits (#38305) When implementing the migration from Jenkins to Buildkite, we implemented the default behavior of Jenkins GitHub Pull Request plugin i.e. to use merge commits, rather than HEAD, via a post-checkout script. Since then, native support has been added[^1], so there's no need for this script anymore. This commit forces the BK PR Bot to use merge commits. [^1]: https://github.com/elastic/buildkite-pr-bot/pull/7 --- .buildkite/hooks/post-checkout | 53 -------------------------------- .buildkite/pull-requests.json | 56 +++++++++++++++++++++++++--------- 2 files changed, 42 insertions(+), 67 deletions(-) delete mode 100644 .buildkite/hooks/post-checkout diff --git a/.buildkite/hooks/post-checkout b/.buildkite/hooks/post-checkout deleted file mode 100644 index b6cc7ad60bd..00000000000 --- a/.buildkite/hooks/post-checkout +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -checkout_merge() { - local target_branch=$1 - local pr_commit=$2 - local merge_branch=$3 - - if [[ -z "${target_branch}" ]]; then - echo "No pull request target branch" - exit 1 - fi - - git fetch -v origin "${target_branch}" - git checkout FETCH_HEAD - echo "Current branch: $(git rev-parse --abbrev-ref HEAD)" - - # create temporal branch to merge the PR with the target branch - git checkout -b ${merge_branch} - echo "New branch created: $(git rev-parse --abbrev-ref HEAD)" - - # set author identity so it can be run git merge - git config user.name "github-merged-pr-post-checkout" - git config user.email "auto-merge@buildkite" - - git merge --no-edit "${BUILDKITE_COMMIT}" || { - local merge_result=$? - echo "Merge failed: ${merge_result}" - git merge --abort - exit ${merge_result} - } -} - -pull_request="${BUILDKITE_PULL_REQUEST:-false}" - -if [[ "${pull_request}" == "false" ]]; then - echo "Not a pull request, skipping" - exit 0 -fi - -TARGET_BRANCH="${BUILDKITE_PULL_REQUEST_BASE_BRANCH:-master}" -PR_COMMIT="${BUILDKITE_COMMIT}" -PR_ID=${BUILDKITE_PULL_REQUEST} -MERGE_BRANCH="pr_merge_${PR_ID}" - -checkout_merge "${TARGET_BRANCH}" "${PR_COMMIT}" "${MERGE_BRANCH}" - -echo "Commit information" -git --no-pager log --format=%B -n 1 - -# Ensure buildkite groups are rendered -echo "" diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 8018411a743..26f785b7522 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -14,7 +14,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ ] + "always_require_ci_on_changed": [ ], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -30,7 +32,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^filebeat/.*", ".buildkite/filebeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*" ] + "always_require_ci_on_changed": ["^filebeat/.*", ".buildkite/filebeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*" ], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -46,7 +50,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^metricbeat/.*", ".buildkite/metricbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] + "always_require_ci_on_changed": [ "^metricbeat/.*", ".buildkite/metricbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -62,7 +68,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^auditbeat/.*", ".buildkite/auditbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] + "always_require_ci_on_changed": [ "^auditbeat/.*", ".buildkite/auditbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -78,7 +86,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^heartbeat/.*", ".buildkite/heartbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] + "always_require_ci_on_changed": [ "^heartbeat/.*", ".buildkite/heartbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -94,7 +104,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^deploy/kubernetes/.*", ".buildkite/deploy/kubernetes/.*", "^libbeat/docs/version.asciidoc"] + "always_require_ci_on_changed": [ "^deploy/kubernetes/.*", ".buildkite/deploy/kubernetes/.*", "^libbeat/docs/version.asciidoc"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -110,7 +122,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] + "always_require_ci_on_changed": ["^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -126,7 +140,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^packetbeat/.*", ".buildkite/packetbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] + "always_require_ci_on_changed": ["^packetbeat/.*", ".buildkite/packetbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -142,7 +158,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": ["^x-pack/elastic-agent/README.md", "^x-pack/elastic-agent/docs/.*", "^x-pack/elastic-agent/devtools/.*" ], - "always_require_ci_on_changed": ["^x-pack/elastic-agent/.*", ".buildkite/x-pack/elastic-agent/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] + "always_require_ci_on_changed": ["^x-pack/elastic-agent/.*", ".buildkite/x-pack/elastic-agent/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -158,7 +176,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^winlogbeat/.*", ".buildkite/winlogbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] + "always_require_ci_on_changed": ["^winlogbeat/.*", ".buildkite/winlogbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -174,7 +194,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/winlogbeat/.*", ".buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + "always_require_ci_on_changed": ["^x-pack/winlogbeat/.*", ".buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -190,7 +212,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/packetbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + "always_require_ci_on_changed": ["^x-pack/packetbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -206,7 +230,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true }, { "enabled": true, @@ -222,7 +248,9 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/metricbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + "always_require_ci_on_changed": ["^x-pack/metricbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], + "use_merge_commit": true, + "fail_on_not_mergeable": true } ] } From ffae5035204b2e0518c1b130c8e595752e56466c Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Thu, 14 Mar 2024 11:02:34 +0200 Subject: [PATCH 021/313] Revert "Use native support BK-pr-bot support for merge commits (#38305)" (#38317) After merging #38305 we've hit an issue with the commit that Buildkite PR Bot uses. e.g. using #38316 we see it's still using: ``` git fetch -v --prune -- origin refs/pull/38316/head ``` rather than the merge commit. Reverting for now, until a fix[^1] in the Buildkite PR bot has been merged. [^1]: https://github.com/elastic/buildkite-pr-bot/pull/12 --- .buildkite/hooks/post-checkout | 53 ++++++++++++++++++++++++++++++++ .buildkite/pull-requests.json | 56 +++++++++------------------------- 2 files changed, 67 insertions(+), 42 deletions(-) create mode 100644 .buildkite/hooks/post-checkout diff --git a/.buildkite/hooks/post-checkout b/.buildkite/hooks/post-checkout new file mode 100644 index 00000000000..b6cc7ad60bd --- /dev/null +++ b/.buildkite/hooks/post-checkout @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +set -euo pipefail + +checkout_merge() { + local target_branch=$1 + local pr_commit=$2 + local merge_branch=$3 + + if [[ -z "${target_branch}" ]]; then + echo "No pull request target branch" + exit 1 + fi + + git fetch -v origin "${target_branch}" + git checkout FETCH_HEAD + echo "Current branch: $(git rev-parse --abbrev-ref HEAD)" + + # create temporal branch to merge the PR with the target branch + git checkout -b ${merge_branch} + echo "New branch created: $(git rev-parse --abbrev-ref HEAD)" + + # set author identity so it can be run git merge + git config user.name "github-merged-pr-post-checkout" + git config user.email "auto-merge@buildkite" + + git merge --no-edit "${BUILDKITE_COMMIT}" || { + local merge_result=$? + echo "Merge failed: ${merge_result}" + git merge --abort + exit ${merge_result} + } +} + +pull_request="${BUILDKITE_PULL_REQUEST:-false}" + +if [[ "${pull_request}" == "false" ]]; then + echo "Not a pull request, skipping" + exit 0 +fi + +TARGET_BRANCH="${BUILDKITE_PULL_REQUEST_BASE_BRANCH:-master}" +PR_COMMIT="${BUILDKITE_COMMIT}" +PR_ID=${BUILDKITE_PULL_REQUEST} +MERGE_BRANCH="pr_merge_${PR_ID}" + +checkout_merge "${TARGET_BRANCH}" "${PR_COMMIT}" "${MERGE_BRANCH}" + +echo "Commit information" +git --no-pager log --format=%B -n 1 + +# Ensure buildkite groups are rendered +echo "" diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 26f785b7522..8018411a743 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -14,9 +14,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ ], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": [ ] }, { "enabled": true, @@ -32,9 +30,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^filebeat/.*", ".buildkite/filebeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*" ], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^filebeat/.*", ".buildkite/filebeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*" ] }, { "enabled": true, @@ -50,9 +46,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^metricbeat/.*", ".buildkite/metricbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": [ "^metricbeat/.*", ".buildkite/metricbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, { "enabled": true, @@ -68,9 +62,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^auditbeat/.*", ".buildkite/auditbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": [ "^auditbeat/.*", ".buildkite/auditbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, { "enabled": true, @@ -86,9 +78,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^heartbeat/.*", ".buildkite/heartbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": [ "^heartbeat/.*", ".buildkite/heartbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, { "enabled": true, @@ -104,9 +94,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^deploy/kubernetes/.*", ".buildkite/deploy/kubernetes/.*", "^libbeat/docs/version.asciidoc"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": [ "^deploy/kubernetes/.*", ".buildkite/deploy/kubernetes/.*", "^libbeat/docs/version.asciidoc"] }, { "enabled": true, @@ -122,9 +110,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, { "enabled": true, @@ -140,9 +126,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^packetbeat/.*", ".buildkite/packetbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^packetbeat/.*", ".buildkite/packetbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, { "enabled": true, @@ -158,9 +142,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": ["^x-pack/elastic-agent/README.md", "^x-pack/elastic-agent/docs/.*", "^x-pack/elastic-agent/devtools/.*" ], - "always_require_ci_on_changed": ["^x-pack/elastic-agent/.*", ".buildkite/x-pack/elastic-agent/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^x-pack/elastic-agent/.*", ".buildkite/x-pack/elastic-agent/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, { "enabled": true, @@ -176,9 +158,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^winlogbeat/.*", ".buildkite/winlogbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^winlogbeat/.*", ".buildkite/winlogbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, { "enabled": true, @@ -194,9 +174,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/winlogbeat/.*", ".buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^x-pack/winlogbeat/.*", ".buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] }, { "enabled": true, @@ -212,9 +190,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/packetbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^x-pack/packetbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] }, { "enabled": true, @@ -230,9 +206,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] }, { "enabled": true, @@ -248,9 +222,7 @@ "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/metricbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"], - "use_merge_commit": true, - "fail_on_not_mergeable": true + "always_require_ci_on_changed": ["^x-pack/metricbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] } ] } From 5bd33b7f3f93c7d09d31e93df6482bdd8ab3ad5c Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Thu, 14 Mar 2024 15:54:48 +0200 Subject: [PATCH 022/313] xpack pipelines initialization (#38319) * xpack pipelines initialization * update yaml-language-server --- .buildkite/pull-requests.json | 80 +++++ .../x-pack/pipeline.xpack.auditbeat.yml | 6 + .../x-pack/pipeline.xpack.dockerlogbeat.yml | 6 + .buildkite/x-pack/pipeline.xpack.filebeat.yml | 6 + .../x-pack/pipeline.xpack.heartbeat.yml | 6 + .../x-pack/pipeline.xpack.osquerybeat.yml | 6 + catalog-info.yaml | 294 ++++++++++++++++-- 7 files changed, 372 insertions(+), 32 deletions(-) create mode 100644 .buildkite/x-pack/pipeline.xpack.auditbeat.yml create mode 100644 .buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml create mode 100644 .buildkite/x-pack/pipeline.xpack.filebeat.yml create mode 100644 .buildkite/x-pack/pipeline.xpack.heartbeat.yml create mode 100644 .buildkite/x-pack/pipeline.xpack.osquerybeat.yml diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 8018411a743..669b70d6570 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -223,6 +223,86 @@ "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/metricbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + }, + { + "enabled": true, + "pipelineSlug": "beats-xpack-auditbeat", + "allow_org_users": true, + "allowed_repo_permissions": ["admin", "write"], + "allowed_list": [ ], + "set_commit_status": true, + "build_on_commit": true, + "build_on_comment": true, + "trigger_comment_regex": "^/test x-pack/auditbeat$", + "always_trigger_comment_regex": "^/test x-pack/auditbeat$", + "skip_ci_labels": [ ], + "skip_target_branches": [ ], + "skip_ci_on_only_changed": [ ], + "always_require_ci_on_changed": ["^x-pack/auditbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + }, + { + "enabled": true, + "pipelineSlug": "beats-xpack-dockerlogbeat", + "allow_org_users": true, + "allowed_repo_permissions": ["admin", "write"], + "allowed_list": [ ], + "set_commit_status": true, + "build_on_commit": true, + "build_on_comment": true, + "trigger_comment_regex": "^/test x-pack/dockerlogbeat$", + "always_trigger_comment_regex": "^/test x-pack/dockerlogbeat$", + "skip_ci_labels": [ ], + "skip_target_branches": [ ], + "skip_ci_on_only_changed": [ ], + "always_require_ci_on_changed": ["^x-pack/dockerlogbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + }, + { + "enabled": true, + "pipelineSlug": "beats-xpack-filebeat", + "allow_org_users": true, + "allowed_repo_permissions": ["admin", "write"], + "allowed_list": [ ], + "set_commit_status": true, + "build_on_commit": true, + "build_on_comment": true, + "trigger_comment_regex": "^/test x-pack/filebeat$", + "always_trigger_comment_regex": "^/test x-pack/filebeat$", + "skip_ci_labels": [ ], + "skip_target_branches": [ ], + "skip_ci_on_only_changed": [ ], + "always_require_ci_on_changed": ["^x-pack/filebeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + }, + { + "enabled": true, + "pipelineSlug": "beats-xpack-heartbeat", + "allow_org_users": true, + "allowed_repo_permissions": ["admin", "write"], + "allowed_list": [ ], + "set_commit_status": true, + "build_on_commit": true, + "build_on_comment": true, + "trigger_comment_regex": "^/test x-pack/heartbeat$", + "always_trigger_comment_regex": "^/test x-pack/heartbeat$", + "skip_ci_labels": [ ], + "skip_target_branches": [ ], + "skip_ci_on_only_changed": [ ], + "always_require_ci_on_changed": ["^x-pack/heartbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] + }, + { + "enabled": true, + "pipelineSlug": "beats-xpack-osquerybeat", + "allow_org_users": true, + "allowed_repo_permissions": ["admin", "write"], + "allowed_list": [ ], + "set_commit_status": true, + "build_on_commit": true, + "build_on_comment": true, + "trigger_comment_regex": "^/test x-pack/osquerybeat$", + "always_trigger_comment_regex": "^/test x-pack/osquerybeat$", + "skip_ci_labels": [ ], + "skip_target_branches": [ ], + "skip_ci_on_only_changed": [ ], + "always_require_ci_on_changed": ["^x-pack/osquerybeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] } ] } diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml new file mode 100644 index 00000000000..2343eb6a4dd --- /dev/null +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-auditbeat" + +steps: + - label: "Example test" + command: echo "Hello!" diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml new file mode 100644 index 00000000000..c4a0805615b --- /dev/null +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-dockerlogbeat" + +steps: + - label: "Example test" + command: echo "Hello!" diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml new file mode 100644 index 00000000000..6d3d7d9daee --- /dev/null +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-filebeat" + +steps: + - label: "Example test" + command: echo "Hello!" diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml new file mode 100644 index 00000000000..65175d3b029 --- /dev/null +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-heartbeat" + +steps: + - label: "Example test" + command: echo "Hello!" diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml new file mode 100644 index 00000000000..22297e33ab5 --- /dev/null +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-osquerybeat" + +steps: + - label: "Example test" + command: echo "Hello!" diff --git a/catalog-info.yaml b/catalog-info.yaml index f52f80df3c7..7f99ab9ce83 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -109,7 +109,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -155,7 +155,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -201,7 +201,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -247,7 +247,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -293,7 +293,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -339,7 +339,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -385,7 +385,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -430,7 +430,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -476,7 +476,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -497,9 +497,9 @@ spec: name: beats-xpack-winlogbeat description: "Beats x-pack winlogbeat pipeline" spec: - # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + branch_configuration: "main 7.17 8.*" pipeline_file: ".buildkite/x-pack/pipeline.xpack.winlogbeat.yml" - # maximum_timeout_in_minutes: 120 #TODO: uncomment after tests + maximum_timeout_in_minutes: 120 provider_settings: trigger_mode: none # don't trigger jobs from github activity build_pull_request_forks: false @@ -513,8 +513,8 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + ELASTIC_PR_COMMENTS_ENABLED: "true" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -522,7 +522,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -543,9 +543,9 @@ spec: name: beats-xpack-packetbeat description: "Beats x-pack packetbeat pipeline" spec: - # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + branch_configuration: "main 7.17 8.*" pipeline_file: ".buildkite/x-pack/pipeline.xpack.packetbeat.yml" - # maximum_timeout_in_minutes: 120 #TODO: uncomment after tests + maximum_timeout_in_minutes: 120 provider_settings: trigger_mode: none # don't trigger jobs from github activity build_pull_request_forks: false @@ -559,8 +559,8 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + ELASTIC_PR_COMMENTS_ENABLED: "true" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -568,7 +568,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -589,9 +589,9 @@ spec: name: beats-xpack-libbeat description: "Beats x-pack libbeat pipeline" spec: - # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + branch_configuration: "main 7.17 8.*" pipeline_file: ".buildkite/x-pack/pipeline.xpack.libbeat.yml" - # maximum_timeout_in_minutes: 120 #TODO: uncomment after tests + maximum_timeout_in_minutes: 120 provider_settings: trigger_mode: none # don't trigger jobs from github activity build_pull_request_forks: false @@ -605,8 +605,8 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + ELASTIC_PR_COMMENTS_ENABLED: "true" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -614,7 +614,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -635,9 +635,9 @@ spec: name: beats-xpack-metricbeat description: "Beats x-pack metricbeat pipeline" spec: - # branch_configuration: "7.17" #TODO: uncomment after tests + branch_configuration: "main 7.17 8.*" pipeline_file: ".buildkite/x-pack/pipeline.xpack.metricbeat.yml" - maximum_timeout_in_minutes: 480 + maximum_timeout_in_minutes: 120 provider_settings: trigger_mode: none # don't trigger jobs from github activity build_pull_request_forks: false @@ -648,11 +648,11 @@ spec: build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null) repository: elastic/beats cancel_intermediate_builds: true - cancel_intermediate_builds_branch_filter: "!7.17" + cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true - skip_intermediate_builds_branch_filter: "!7.17" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" + env: + ELASTIC_PR_COMMENTS_ENABLED: "true" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -660,7 +660,7 @@ spec: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -694,7 +694,7 @@ spec: everyone: access_level: READ_ONLY --- -# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/e57ee3bed7a6f73077a3f55a38e76e40ec87a7cf/rre.schema.json +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 kind: Resource metadata: @@ -728,3 +728,233 @@ spec: access_level: MANAGE_BUILD_AND_READ everyone: access_level: BUILD_AND_READ + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-pipeline-beats-xpack-auditbeat + description: "Beats x-pack auditbeat pipeline" + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-xpack-auditbeat + +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-xpack-auditbeat + description: "Beats x-pack auditbeat pipeline" + spec: + # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + pipeline_file: ".buildkite/x-pack/pipeline.xpack.auditbeat.yml" + maximum_timeout_in_minutes: 120 + provider_settings: + trigger_mode: none # don't trigger jobs from github activity + build_pull_request_forks: false + build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot + build_tags: true + filter_enabled: true + filter_condition: >- + build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null) + repository: elastic/beats + cancel_intermediate_builds: true + cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" + skip_intermediate_builds: true + skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" + # env: + # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-pipeline-beats-xpack-dockerlogbeat + description: "Beats x-pack dockerlogbeat pipeline" + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-xpack-dockerlogbeat + +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-xpack-dockerlogbeat + description: "Beats x-pack dockerlogbeat pipeline" + spec: + # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + pipeline_file: ".buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml" + maximum_timeout_in_minutes: 120 + provider_settings: + trigger_mode: none # don't trigger jobs from github activity + build_pull_request_forks: false + build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot + build_tags: true + filter_enabled: true + filter_condition: >- + build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null) + repository: elastic/beats + cancel_intermediate_builds: true + cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" + skip_intermediate_builds: true + skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" + # env: + # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-pipeline-beats-xpack-filebeat + description: "Beats x-pack filebeat pipeline" + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-xpack-filebeat + +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-xpack-filebeat + description: "Beats x-pack filebeat pipeline" + spec: + # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + pipeline_file: ".buildkite/x-pack/pipeline.xpack.filebeat.yml" + maximum_timeout_in_minutes: 120 + provider_settings: + trigger_mode: none # don't trigger jobs from github activity + build_pull_request_forks: false + build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot + build_tags: true + filter_enabled: true + filter_condition: >- + build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null) + repository: elastic/beats + cancel_intermediate_builds: true + cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" + skip_intermediate_builds: true + skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" + # env: + # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-pipeline-beats-xpack-heartbeat + description: "Beats x-pack heartbeat pipeline" + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-xpack-heartbeat + +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-xpack-heartbeat + description: "Beats x-pack heartbeat pipeline" + spec: + # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + pipeline_file: ".buildkite/x-pack/pipeline.xpack.heartbeat.yml" + maximum_timeout_in_minutes: 120 + provider_settings: + trigger_mode: none # don't trigger jobs from github activity + build_pull_request_forks: false + build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot + build_tags: true + filter_enabled: true + filter_condition: >- + build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null) + repository: elastic/beats + cancel_intermediate_builds: true + cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" + skip_intermediate_builds: true + skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" + # env: + # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: buildkite-pipeline-beats-xpack-osquerybeat + description: "Beats x-pack osquerybeat pipeline" + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-xpack-osquerybeat + +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-xpack-osquerybeat + description: "Beats x-pack osquerybeat pipeline" + spec: + # branch_configuration: "main 7.17 8.*" #TODO: uncomment after tests + pipeline_file: ".buildkite/x-pack/pipeline.xpack.osquerybeat.yml" + maximum_timeout_in_minutes: 120 + provider_settings: + trigger_mode: none # don't trigger jobs from github activity + build_pull_request_forks: false + build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot + build_tags: true + filter_enabled: true + filter_condition: >- + build.pull_request.id == null || (build.creator.name == 'elasticmachine' && build.pull_request.id != null) + repository: elastic/beats + cancel_intermediate_builds: true + cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" + skip_intermediate_builds: true + skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" + # env: + # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: READ_ONLY From e0675778b8eed65c6fff6a1d1911833c21563755 Mon Sep 17 00:00:00 2001 From: Yoel Spotts Date: Thu, 14 Mar 2024 10:25:16 -0400 Subject: [PATCH 023/313] support for Timestamp in file outputter path (#38029) * support for TIME_NOW var * fix import ordering * add documentation * add unit tests * fix linting error * path is a date time formatter * fmt * remove unneeded * update docs * add UTC * improve message * change link * create new Unpacker * fmt * description of the use case * unit tests --- libbeat/outputs/fileout/config.go | 28 +++-- libbeat/outputs/fileout/config_test.go | 100 ++++++++++++++++++ libbeat/outputs/fileout/docs/fileout.asciidoc | 8 ++ libbeat/outputs/fileout/file.go | 17 +-- libbeat/outputs/fileout/pathformatstring.go | 66 ++++++++++++ .../outputs/fileout/pathformatstring_test.go | 87 +++++++++++++++ 6 files changed, 290 insertions(+), 16 deletions(-) create mode 100644 libbeat/outputs/fileout/config_test.go create mode 100644 libbeat/outputs/fileout/pathformatstring.go create mode 100644 libbeat/outputs/fileout/pathformatstring_test.go diff --git a/libbeat/outputs/fileout/config.go b/libbeat/outputs/fileout/config.go index e72a9f87d6f..69af40e4289 100644 --- a/libbeat/outputs/fileout/config.go +++ b/libbeat/outputs/fileout/config.go @@ -26,14 +26,14 @@ import ( ) type fileOutConfig struct { - Path string `config:"path"` - Filename string `config:"filename"` - RotateEveryKb uint `config:"rotate_every_kb" validate:"min=1"` - NumberOfFiles uint `config:"number_of_files"` - Codec codec.Config `config:"codec"` - Permissions uint32 `config:"permissions"` - RotateOnStartup bool `config:"rotate_on_startup"` - Queue config.Namespace `config:"queue"` + Path *PathFormatString `config:"path"` + Filename string `config:"filename"` + RotateEveryKb uint `config:"rotate_every_kb" validate:"min=1"` + NumberOfFiles uint `config:"number_of_files"` + Codec codec.Config `config:"codec"` + Permissions uint32 `config:"permissions"` + RotateOnStartup bool `config:"rotate_on_startup"` + Queue config.Namespace `config:"queue"` } func defaultConfig() fileOutConfig { @@ -45,6 +45,18 @@ func defaultConfig() fileOutConfig { } } +func readConfig(cfg *config.C) (*fileOutConfig, error) { + foConfig := defaultConfig() + if err := cfg.Unpack(&foConfig); err != nil { + return nil, err + } + + // disable bulk support in publisher pipeline + _ = cfg.SetInt("bulk_max_size", -1, -1) + + return &foConfig, nil +} + func (c *fileOutConfig) Validate() error { if c.NumberOfFiles < 2 || c.NumberOfFiles > file.MaxBackupsLimit { return fmt.Errorf("the number_of_files to keep should be between 2 and %v", diff --git a/libbeat/outputs/fileout/config_test.go b/libbeat/outputs/fileout/config_test.go new file mode 100644 index 00000000000..7e149173f6d --- /dev/null +++ b/libbeat/outputs/fileout/config_test.go @@ -0,0 +1,100 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package fileout + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +func TestConfig(t *testing.T) { + for name, test := range map[string]struct { + config *config.C + useWindowsPath bool + assertion func(t *testing.T, config *fileOutConfig, err error) + }{ + "default config": { + config: config.MustNewConfigFrom([]byte(`{ }`)), + assertion: func(t *testing.T, actual *fileOutConfig, err error) { + expectedConfig := &fileOutConfig{ + NumberOfFiles: 7, + RotateEveryKb: 10 * 1024, + Permissions: 0600, + RotateOnStartup: true, + } + + assert.Equal(t, expectedConfig, actual) + assert.Nil(t, err) + }, + }, + "config given with posix path": { + config: config.MustNewConfigFrom(mapstr.M{ + "number_of_files": 10, + "rotate_every_kb": 5 * 1024, + "path": "/tmp/packetbeat/%{+yyyy-MM-dd-mm-ss-SSSSSS}", + "filename": "pb", + }), + assertion: func(t *testing.T, actual *fileOutConfig, err error) { + assert.Equal(t, uint(10), actual.NumberOfFiles) + assert.Equal(t, uint(5*1024), actual.RotateEveryKb) + assert.Equal(t, true, actual.RotateOnStartup) + assert.Equal(t, uint32(0600), actual.Permissions) + assert.Equal(t, "pb", actual.Filename) + + path, runErr := actual.Path.Run(time.Date(2024, 1, 2, 3, 4, 5, 67890, time.UTC)) + assert.Nil(t, runErr) + + assert.Equal(t, "/tmp/packetbeat/2024-01-02-04-05-000067", path) + assert.Nil(t, err) + }, + }, + "config given with windows path": { + useWindowsPath: true, + config: config.MustNewConfigFrom(mapstr.M{ + "number_of_files": 10, + "rotate_every_kb": 5 * 1024, + "path": "c:\\tmp\\packetbeat\\%{+yyyy-MM-dd-mm-ss-SSSSSS}", + "filename": "pb", + }), + assertion: func(t *testing.T, actual *fileOutConfig, err error) { + assert.Equal(t, uint(10), actual.NumberOfFiles) + assert.Equal(t, uint(5*1024), actual.RotateEveryKb) + assert.Equal(t, true, actual.RotateOnStartup) + assert.Equal(t, uint32(0600), actual.Permissions) + assert.Equal(t, "pb", actual.Filename) + + path, runErr := actual.Path.Run(time.Date(2024, 1, 2, 3, 4, 5, 67890, time.UTC)) + assert.Nil(t, runErr) + + assert.Equal(t, "c:\\tmp\\packetbeat\\2024-01-02-04-05-000067", path) + assert.Nil(t, err) + }, + }, + } { + t.Run(name, func(t *testing.T) { + isWindowsPath = test.useWindowsPath + cfg, err := readConfig(test.config) + test.assertion(t, cfg, err) + }) + } +} diff --git a/libbeat/outputs/fileout/docs/fileout.asciidoc b/libbeat/outputs/fileout/docs/fileout.asciidoc index 54dfdd0772a..bb2a953ec75 100644 --- a/libbeat/outputs/fileout/docs/fileout.asciidoc +++ b/libbeat/outputs/fileout/docs/fileout.asciidoc @@ -49,6 +49,14 @@ The default value is `true`. The path to the directory where the generated files will be saved. This option is mandatory. +The path may include the timestamp when the file output is initialized using the `+FORMAT` syntax where `FORMAT` is a +valid https://github.com/elastic/beats/blob/{doc-branch}/libbeat/common/dtfmt/doc.go[time format], +and enclosed with expansion braces: `%{+FORMAT}`. For example: + +``` +path: 'fileoutput-%{+yyyy.MM.dd}' +``` + ===== `filename` The name of the generated files. The default is set to the Beat name. For example, the files diff --git a/libbeat/outputs/fileout/file.go b/libbeat/outputs/fileout/file.go index 4ddc5955d6e..34c57f29791 100644 --- a/libbeat/outputs/fileout/file.go +++ b/libbeat/outputs/fileout/file.go @@ -52,20 +52,17 @@ func makeFileout( observer outputs.Observer, cfg *c.C, ) (outputs.Group, error) { - foConfig := defaultConfig() - if err := cfg.Unpack(&foConfig); err != nil { + foConfig, err := readConfig(cfg) + if err != nil { return outputs.Fail(err) } - // disable bulk support in publisher pipeline - _ = cfg.SetInt("bulk_max_size", -1, -1) - fo := &fileOutput{ log: logp.NewLogger("file"), beat: beat, observer: observer, } - if err := fo.init(beat, foConfig); err != nil { + if err = fo.init(beat, *foConfig); err != nil { return outputs.Fail(err) } @@ -74,10 +71,14 @@ func makeFileout( func (out *fileOutput) init(beat beat.Info, c fileOutConfig) error { var path string + configPath, runErr := c.Path.Run(time.Now().UTC()) + if runErr != nil { + return runErr + } if c.Filename != "" { - path = filepath.Join(c.Path, c.Filename) + path = filepath.Join(configPath, c.Filename) } else { - path = filepath.Join(c.Path, out.beat.Beat) + path = filepath.Join(configPath, out.beat.Beat) } out.filePath = path diff --git a/libbeat/outputs/fileout/pathformatstring.go b/libbeat/outputs/fileout/pathformatstring.go new file mode 100644 index 00000000000..acd2a7605fe --- /dev/null +++ b/libbeat/outputs/fileout/pathformatstring.go @@ -0,0 +1,66 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package fileout + +import ( + "os" + "strings" + "time" + + "github.com/elastic/beats/v7/libbeat/common/fmtstr" + + "github.com/elastic/beats/v7/libbeat/beat" +) + +var isWindowsPath = os.PathSeparator == '\\' + +// PathFormatString is a wrapper around EventFormatString for the +// handling paths with a format expression that has access to the timestamp format. +// It has special handling for paths, specifically for windows path separator +// which would be interpreted as an escape character. This formatter double escapes +// the path separator so it is properly interpreted by the fmtstr processor +type PathFormatString struct { + efs *fmtstr.EventFormatString +} + +// Run executes the format string returning a new expanded string or an error +// if execution or event field expansion fails. +func (fs *PathFormatString) Run(timestamp time.Time) (string, error) { + placeholderEvent := &beat.Event{ + Timestamp: timestamp, + } + return fs.efs.Run(placeholderEvent) +} + +// Unpack tries to initialize the PathFormatString from provided value +// (which must be a string). Unpack method satisfies go-ucfg.Unpacker interface +// required by config.C, in order to use PathFormatString with +// `common.(*Config).Unpack()`. +func (fs *PathFormatString) Unpack(v interface{}) error { + path, ok := v.(string) + if !ok { + return nil + } + + if isWindowsPath { + path = strings.ReplaceAll(path, "\\", "\\\\") + } + + fs.efs = &fmtstr.EventFormatString{} + return fs.efs.Unpack(path) +} diff --git a/libbeat/outputs/fileout/pathformatstring_test.go b/libbeat/outputs/fileout/pathformatstring_test.go new file mode 100644 index 00000000000..b8eee4e44ea --- /dev/null +++ b/libbeat/outputs/fileout/pathformatstring_test.go @@ -0,0 +1,87 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package fileout + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestPathFormatString(t *testing.T) { + tests := []struct { + title string + useWindowsPath bool + format string + timestamp time.Time + expected string + }{ + { + "empty string", + false, + "", + time.Time{}, + "", + }, + { + "no fields configured", + false, + "format string", + time.Time{}, + "format string", + }, + { + "test timestamp formatter", + false, + "timestamp: %{+YYYY.MM.dd}", + time.Date(2015, 5, 1, 20, 12, 34, 0, time.UTC), + "timestamp: 2015.05.01", + }, + { + "test timestamp formatter with posix path", + false, + "/tmp/%{+YYYY.MM.dd}", + time.Date(2015, 5, 1, 20, 12, 34, 0, time.UTC), + "/tmp/2015.05.01", + }, + { + "test timestamp formatter with windows path", + true, + "C:\\tmp\\%{+YYYY.MM.dd}", + time.Date(2015, 5, 1, 20, 12, 34, 0, time.UTC), + "C:\\tmp\\2015.05.01", + }, + } + + for i, test := range tests { + t.Logf("test(%v): %v", i, test.title) + isWindowsPath = test.useWindowsPath + pfs := &PathFormatString{} + err := pfs.Unpack(test.format) + if err != nil { + t.Error(err) + continue + } + + actual, err := pfs.Run(test.timestamp) + + assert.NoError(t, err) + assert.Equal(t, test.expected, actual) + } +} From 361a62fc17bd077ec6115696d4f1bd03f1d12f4c Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:27:34 -0400 Subject: [PATCH 024/313] chore: Update snapshot.yml (#38330) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 7f78746abe0..3e0cd8a6d90 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-faa2d2d3-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-bd8c2be5-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-faa2d2d3-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-bd8c2be5-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-faa2d2d3-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-bd8c2be5-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 9c9ae3568309bb4c715fe1c25834eafd06f0f82a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Alvarez=20Pi=C3=B1eiro?= <95703246+emilioalvap@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:21:44 +0100 Subject: [PATCH 025/313] [Heartbeat] Add prctl dumpable flag reset after cap drop (#38269) Enforce dumpable attribute on heartbeat process for /proc/io to be readable by elastic-agent. --------- Co-authored-by: Vignesh Shanmugam --- CHANGELOG.next.asciidoc | 1 + heartbeat/security/security.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 7fa92411e0f..be217566c4c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -107,6 +107,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Fix panics when parsing dereferencing invalid parsed url. {pull}34702[34702] - Fix setuid root when running under cgroups v2. {pull}37794[37794] - Adjust State loader to only retry when response code status is 5xx {pull}37981[37981] +- Reset prctl dumpable flag after cap drop. {pull}38269[38269] *Metricbeat* diff --git a/heartbeat/security/security.go b/heartbeat/security/security.go index 8e15102f7b8..597e3a5bda9 100644 --- a/heartbeat/security/security.go +++ b/heartbeat/security/security.go @@ -26,6 +26,7 @@ import ( "strconv" "syscall" + "golang.org/x/sys/unix" "kernel.org/pub/linux/libs/security/libcap/cap" ) @@ -46,6 +47,9 @@ func init() { // The beat should use `getcap` at a later point to examine available capabilities // rather than relying on errors from `setcap` _ = setCapabilities() + + // Make heartbeat dumpable so elastic-agent can access process metrics. + _ = setDumpable() } func setNodeProcAttr(localUserName string) error { @@ -99,3 +103,13 @@ func setCapabilities() error { return nil } + +// Enforce PR_SET_DUMPABLE=true to allow user-level access to /proc//io. +func setDumpable() error { + _, err := cap.Prctl(unix.PR_SET_DUMPABLE, 1) + if err != nil { + return fmt.Errorf("error setting dumpable flag via prctl: %w", err) + } + + return nil +} From 9172e9c8254b20e2ca4c9e349ebca0b17c58d919 Mon Sep 17 00:00:00 2001 From: Gabriel Pop <94497545+gpop63@users.noreply.github.com> Date: Fri, 15 Mar 2024 21:54:26 +0200 Subject: [PATCH 026/313] [metricbeat][mysql] Add SSL support (#37997) * add config * add ssl support for metricsets * update docs * add changelog entry * make update * fix config * add NewDB argument * fix imports * Update mysql.go * Update config.go * Update CHANGELOG.next.asciidoc Co-authored-by: Aman <38116245+devamanv@users.noreply.github.com> * add integration test with tls * add TLS MinVersion --------- Co-authored-by: Aman <38116245+devamanv@users.noreply.github.com> Co-authored-by: Pierre HILBERT --- CHANGELOG.next.asciidoc | 1 + metricbeat/docs/modules/mysql.asciidoc | 13 ++++- metricbeat/metricbeat.reference.yml | 11 ++++ metricbeat/module/mysql/_meta/Dockerfile | 4 ++ .../module/mysql/_meta/certs/client-cert.pem | 19 +++++++ .../module/mysql/_meta/certs/client-key.pem | 28 ++++++++++ .../module/mysql/_meta/certs/client-req.pem | 16 ++++++ .../module/mysql/_meta/certs/root-ca-key.pem | 28 ++++++++++ .../module/mysql/_meta/certs/root-ca.pem | 21 ++++++++ .../module/mysql/_meta/certs/server-cert.pem | 19 +++++++ .../module/mysql/_meta/certs/server-key.pem | 28 ++++++++++ .../module/mysql/_meta/certs/server-req.pem | 16 ++++++ .../module/mysql/_meta/config.reference.yml | 12 +++++ metricbeat/module/mysql/_meta/config.yml | 12 +++++ metricbeat/module/mysql/_meta/test.cnf | 4 ++ metricbeat/module/mysql/config.go | 32 +++++++++++ metricbeat/module/mysql/docker-compose.yml | 4 +- .../module/mysql/galera_status/status.go | 12 +++-- metricbeat/module/mysql/mysql.go | 53 +++++++++++++++--- .../module/mysql/mysql_integration_test.go | 54 ++++++++++++++++++- metricbeat/module/mysql/query/query.go | 27 ++++++++-- metricbeat/module/mysql/status/status.go | 11 ++-- metricbeat/modules.d/mysql.yml.disabled | 12 +++++ x-pack/metricbeat/metricbeat.reference.yml | 11 ++++ 24 files changed, 428 insertions(+), 20 deletions(-) create mode 100755 metricbeat/module/mysql/_meta/certs/client-cert.pem create mode 100755 metricbeat/module/mysql/_meta/certs/client-key.pem create mode 100755 metricbeat/module/mysql/_meta/certs/client-req.pem create mode 100755 metricbeat/module/mysql/_meta/certs/root-ca-key.pem create mode 100755 metricbeat/module/mysql/_meta/certs/root-ca.pem create mode 100755 metricbeat/module/mysql/_meta/certs/server-cert.pem create mode 100755 metricbeat/module/mysql/_meta/certs/server-key.pem create mode 100755 metricbeat/module/mysql/_meta/certs/server-req.pem create mode 100644 metricbeat/module/mysql/config.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index be217566c4c..d06ffb5f705 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -230,6 +230,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Add a `/inputs/` route to the HTTP monitoring endpoint that exposes metrics for each metricset instance. {pull}36971[36971] - Add linux IO metrics to system/process {pull}37213[37213] - Add new memory/cgroup metrics to Kibana module {pull}37232[37232] +- Add SSL support to mysql module {pull}37997[37997] *Metricbeat* diff --git a/metricbeat/docs/modules/mysql.asciidoc b/metricbeat/docs/modules/mysql.asciidoc index 0c5a793a29a..5433fe94224 100644 --- a/metricbeat/docs/modules/mysql.asciidoc +++ b/metricbeat/docs/modules/mysql.asciidoc @@ -89,7 +89,18 @@ metricbeat.modules: # By setting raw to true, all raw fields from the status metricset will be added to the event. #raw: false ----- + + # Optional SSL/TLS. By default is false. + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key"---- [float] === Metricsets diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 6659ca29276..59a8d5d6c38 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -764,6 +764,17 @@ metricbeat.modules: # By setting raw to true, all raw fields from the status metricset will be added to the event. #raw: false + # Optional SSL/TLS. By default is false. + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" #--------------------------------- NATS Module --------------------------------- - module: nats metricsets: diff --git a/metricbeat/module/mysql/_meta/Dockerfile b/metricbeat/module/mysql/_meta/Dockerfile index 2051c726595..b701ad617ea 100644 --- a/metricbeat/module/mysql/_meta/Dockerfile +++ b/metricbeat/module/mysql/_meta/Dockerfile @@ -5,4 +5,8 @@ ENV MYSQL_ROOT_PASSWORD test HEALTHCHECK --interval=1s --retries=90 CMD mysql -u root -p$MYSQL_ROOT_PASSWORD -h$HOSTNAME -P 3306 -e "SHOW STATUS" > /dev/null +COPY /certs/root-ca.pem /etc/certs/root-ca.pem +COPY /certs/server-cert.pem /etc/certs/server-cert.pem +COPY /certs/server-key.pem /etc/certs/server-key.pem + COPY test.cnf /etc/mysql/conf.d/test.cnf diff --git a/metricbeat/module/mysql/_meta/certs/client-cert.pem b/metricbeat/module/mysql/_meta/certs/client-cert.pem new file mode 100755 index 00000000000..df9c76e0862 --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/client-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDDCCAfQCAQEwDQYJKoZIhvcNAQELBQAwSjELMAkGA1UEBhMCVVMxEzARBgNV +BAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC1NhbnRhIENsYXJhMRAwDgYDVQQDDAdm +YWtlLUNBMB4XDTI0MDIxNTIzNTA0MloXDTMzMTIyNDIzNTA0MlowTjELMAkGA1UE +BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC1NhbnRhIENsYXJh +MRQwEgYDVQQDDAtmYWtlLWNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAIqHZbSUB1x/iW6DxaRlkFWjPuZ+F1wYTGvfpqnxZgZY1k5vSJTy3ETe +y3TelpEPBWEmsgHDx4bjuqeG+3my9dDEKEIYgXkfkfHREndVxPDfnRdfXPfp3qbm +wV2bdJnpSQzCg+lv8e8U+kMv0WcmwTuwlpVG0Rnb6vFdOs67/IIlBvI9sP5BKDYL +YFRxaoc8fLb8UMkfQ0BSmT4Rvmq5MSETh4re7OecV6pN0naEWhZf72mr/HiTAhb6 +xZJNSvNAzvdkQnhwt9aHemGQLRZD+4dduZYn27cwK4ySTZdyMoKn66HqMIfXPvr8 +LlICP4Gb8Df/JuUZVRbI13P+Xqujd8kCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA +gwA1+nZISC6QF9JtkOGrPpBZk6v1iy4iLsZSNaoinkB/FgesIpNrTFG0k6exSBV1 +pwQSmMVNSEsUOOjEq/Vk98014Kf8QVqfkdcujaBNPtxMqsocOO9Od78UuX5QdZXi +ayhkzrcPX4HTwjTqKFlJxb92rHrBx/GIWa68TeAjwbRiZmDASpVCEI2HnkBkFWTs +5Ux4wlC3JrnY3Jxb7QfDK94g9r5s1ljHeVki83cUYaI5TdY7F0uP+O6TvlhCPrjd +5708kRZJHnKThu3aE8HJYIbYhHocm9DszbnObd4SqECjfd6YNbREBhyaHJdCY/j2 +hm1zhBiW24dazs108uhFsQ== +-----END CERTIFICATE----- diff --git a/metricbeat/module/mysql/_meta/certs/client-key.pem b/metricbeat/module/mysql/_meta/certs/client-key.pem new file mode 100755 index 00000000000..33430372fd2 --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/client-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCKh2W0lAdcf4lu +g8WkZZBVoz7mfhdcGExr36ap8WYGWNZOb0iU8txE3st03paRDwVhJrIBw8eG47qn +hvt5svXQxChCGIF5H5Hx0RJ3VcTw350XX1z36d6m5sFdm3SZ6UkMwoPpb/HvFPpD +L9FnJsE7sJaVRtEZ2+rxXTrOu/yCJQbyPbD+QSg2C2BUcWqHPHy2/FDJH0NAUpk+ +Eb5quTEhE4eK3uznnFeqTdJ2hFoWX+9pq/x4kwIW+sWSTUrzQM73ZEJ4cLfWh3ph +kC0WQ/uHXbmWJ9u3MCuMkk2XcjKCp+uh6jCH1z76/C5SAj+Bm/A3/yblGVUWyNdz +/l6ro3fJAgMBAAECggEAEPRCAHQrA/k4c9oFBQoonHCMrNdDCuKO7NdsHYm1ucJi +5SnVxWQFTRkC59hrr1B6MTIUEGb6iyHhOOpqafI7B0xQnIlFBFLWsPSseMY6opvN +jTwew9k/xqfAg/E4F7OvXPRMAnSQ1LjZqcInE+Owe9qQjW/DvPFXS2fEgCOOA4vw +M6w6USf8UTsXBzMvRnDHMTQM0vfKNNSdopYDPeQc4YQ1A2AjkpYXZVWXFcFsE9zw +xFVZ9k6tP+gzk6shJjsbBoQ7qWwhdq1Q5tJ28FTaCVXDAp8l6yIFuZuI7r23O7+0 +ngxSejABJ3m9NmG0J7DPGU6zXhJW5nylWcSk5vwMkQKBgQDCWIRe4iSW0eGYBSe5 +hBoQgLe7aMAbsaCrHjTYQkKvI25YlfJ08OVU7oB/Bng/9AlpJlouGz67/W0PiRaz +jlP370p92IiwehUl9PkuVDpex4l2rDLCM1iVrPbxhbm/7+2nro2M/0/4iUyIK+Gr +Rpcqj2dQ3qarD+UmLXYPOoyRuQKBgQC2ec0sWyU67QuFaTemvTH8YFu68BfQqg6t +YQMc4+wj30ww0TZHFYVwyvR4agTOdFjwIUTERRN3EcFmlV5x+fGz/LfUdVYJj8B0 +lXakqeATsGJHngrdlyM+m+g+6JI1SUTshMa/xXVAUx8NZESOVE5JeZH6TD4/9Q3y +ijtithtekQKBgQCPeso/QrXAozLqCORLEjwr8tuygKNTzs/PhX1+K20P4BiXThyy +OScWjP5QyXX9wS0xdB8f6v1lzLO3xH3+EhXr9b4JKtO/dmImo7VTftuZHbde5cKT +nVTJK+kkZpW8HmZWZYgbkGJ6GuNlpP/2cycnRLgB/F8P66xBg06l75PYAQKBgGap +GhR1ZvnC+TNiocuuL5wkfhcrEsrzkfRbWwv68xSvgUcJvTa61etCU84XH4MjlBHt +NaoSjsPzelKDgLIxA5nWeXoPVYtlk8pDeI9lf0q0dmaCdOx8JnkH797Mq81M3nkO +rl6f8bpxyUuYeLV2muDdg5JFKNSEwwcMXCLJ/5XxAoGAKIkS02jWudDoBzubdFe/ +c5jSYufTZOmErnjnSKGkj9oZGVP6RYDhkHMPOxadO/4OLOKo6Phkg9yRmPG2tyKA ++ddgYP7zXEnsLxrjumoYTvcWgs1AHUUH4kA5SdImzYbSSfPW5h0KkvB+gYaukBGa +XHILry/59LkxU+nP1ZCVvt8= +-----END PRIVATE KEY----- diff --git a/metricbeat/module/mysql/_meta/certs/client-req.pem b/metricbeat/module/mysql/_meta/certs/client-req.pem new file mode 100755 index 00000000000..3295c803f8d --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/client-req.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICkzCCAXsCAQAwTjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx +FDASBgNVBAcMC1NhbnRhIENsYXJhMRQwEgYDVQQDDAtmYWtlLWNsaWVudDCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIqHZbSUB1x/iW6DxaRlkFWjPuZ+ +F1wYTGvfpqnxZgZY1k5vSJTy3ETey3TelpEPBWEmsgHDx4bjuqeG+3my9dDEKEIY +gXkfkfHREndVxPDfnRdfXPfp3qbmwV2bdJnpSQzCg+lv8e8U+kMv0WcmwTuwlpVG +0Rnb6vFdOs67/IIlBvI9sP5BKDYLYFRxaoc8fLb8UMkfQ0BSmT4Rvmq5MSETh4re +7OecV6pN0naEWhZf72mr/HiTAhb6xZJNSvNAzvdkQnhwt9aHemGQLRZD+4dduZYn +27cwK4ySTZdyMoKn66HqMIfXPvr8LlICP4Gb8Df/JuUZVRbI13P+Xqujd8kCAwEA +AaAAMA0GCSqGSIb3DQEBCwUAA4IBAQBr6+WE3t0KdMpEBBC81IUHkXNB9Mf5EYKG +d1ev6jq1bi2jw6WqAGbqYp1W0awEjZJZcS2skXoy8QIFDNjznHPgKEXB9b98nj34 +TLpszCrlcQteWmzRCspwkhdrXNGE4Z4UMgN+xoh2P/dujK4kGH6HFcF1Fo4ajDUX +HT5vybjQuQlPDgt6Ufs+Pjotr5uCzLbIsFN1QG6gKVY90WAzPsa0XYN1ehMpkLsM +8vbVP0uRT6/VXTenbTtqqQ5Y70gmeiF/EssnQ9rM3vkGUW1A/9j23agLmlOVaCWw +HSN5HqrFUIlsLFIDDTgi7icW4Uk+7qdMSF7ooMOJIm27PGc49u4U +-----END CERTIFICATE REQUEST----- diff --git a/metricbeat/module/mysql/_meta/certs/root-ca-key.pem b/metricbeat/module/mysql/_meta/certs/root-ca-key.pem new file mode 100755 index 00000000000..2343e39b149 --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/root-ca-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSrYQWHfzCy/+N +Nzbg03pW/xnJ4wsEOeSuaYJfrkzU87pwlOFY57bhxe+3rektDOOziwjCxo4a8rKu +YmHRYKx4XdBtTjPnimRiwymSnemZdABWLNuJyvWen6iNJQqrcSesvobAtaQ265A9 +faRPn/Hjx5CH5x52hLhcpo6Yg4Ae6K2dnGbahFb1DI7Btfcf+PYiUau5DRiJiIpU +9K9hBbPmPuo0hsGiAYCJkTspdDMrFsBA6hNadamzsXy6AzB82Pu19nckR20kJVlG +Ioebg6mlHlcTV1qCsiWZBR/ghGGNHBp15EIXvIDpEJ4rcuy4AER4lXIdpG2RPD7Y ++Y7EGi0zAgMBAAECggEAU/SCuR+dHPGXdqqEq4aK78U7/SiFuNrrRxfTtRZsFsbD +yt6BiODaD9HFrCBZVjMXQHLM/HWMpq+Fxhl9mqcYQ+U6zHxIEeKkC3lzhTJ5p0XD +ZpP8rsYbKGm+jPSwck6m/V91qrEX7izkb6S0iGiYR+m8rnPLP3a3U3CqTZvFwErG +n7jk7caLZcT9+p7/TLlDIyx4ha4+7RRaL9OC1dNH8ADOkSHk/vaE6aU8J8PJ4YZg +QvNfsuo7FtDMq3OIkMAsHseuX90X8c3ZS7lNdCTRU7YuC1+8+l6xGs1Arjv1jqnd +9gIo6kh88Ng8zi4TkGLVAnfc55eXmB+f7PPN93fMeQKBgQD0uqDSsvPNnaY6DJIF +Gyz4qExyYH/h2QFT5M4bb0hQNIkP187JhBZw8Et2AvBtSBhs8dXfBxu736KRs8XG +b60iw2qXqo1XUEUO7R0VMO6NcA8Hk206X+p7ukn5RExzv2MurD+3f8QM8CypFA57 +UnSWdDCrOAh6WU5zfcz9woOM2QKBgQDcYWvqbV8XoyhJBG5PkG3UzYtOi/Es/fGH +qt03ZyyfYdCbhAknqftuj6ZzlMfVV3xOSXX+sdr0rLzammnRdlPJtJfjk8lUYa/i +0hy4eTHm7o1iZJfMS9rCMH9uTwyNGnb67u8kW16BuzaLbJMtd7IKtEG69U63abZX +t+zqmxGy6wKBgQCD43w+cNCxdA+cYx/ifpXK4DBqx5TDq0Zq5vkokd1/1AA1uJEp +yvSpIucYD1dxHZSESgR/sH4Czu/249JnMdI11OjCGdkYQBsngyPUQs2dDdIbvBj2 +h7B/w5KQMn2dN3yFL7Ea/FE0w87dxABV98b7OlzsOUNgZHbCCP8LluN8aQKBgGS3 +RTly2JWV5DBSjRNhn0A026h+/i6gs8RbyxOp3FPOwSaBlimBXr4telWyNg2DGPUy +T3Gh2L4fP4PsM9YdbLdvCEdiYA1nQ5m2ipeoE61Fcmn4LQOZ2xUKUwKXr9XAtYWC +stn7w9ooNApOCYkq/bw0myGVQG9EKag3D1g8nD8XAoGAZLJlDhlfFaWa7jy1VF/g +JWcsN/+BfTjBY6t3npxzg4pdi7lHhuAZ45PLnQMTIdWCkqgigt224kcbUy3b351u +lzoSiLatNXj5Q3on85ZNRaOMLqp0ueIzOLWvC+CRp46wXlwxTrPxghXatUBPsG47 +mO/mtw9gmaJ8UBW/SuxS24g= +-----END PRIVATE KEY----- diff --git a/metricbeat/module/mysql/_meta/certs/root-ca.pem b/metricbeat/module/mysql/_meta/certs/root-ca.pem new file mode 100755 index 00000000000..9b3e4f60fe8 --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/root-ca.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgIUUp8x6W/bui3FjHLnJfIb7AsKBIwwDQYJKoZIhvcNAQEL +BQAwSjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAcM +C1NhbnRhIENsYXJhMRAwDgYDVQQDDAdmYWtlLUNBMB4XDTI0MDIxNTIzNTAzNVoX +DTMzMTIyNDIzNTAzNVowSjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3Ju +aWExFDASBgNVBAcMC1NhbnRhIENsYXJhMRAwDgYDVQQDDAdmYWtlLUNBMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0q2EFh38wsv/jTc24NN6Vv8ZyeML +BDnkrmmCX65M1PO6cJThWOe24cXvt63pLQzjs4sIwsaOGvKyrmJh0WCseF3QbU4z +54pkYsMpkp3pmXQAVizbicr1np+ojSUKq3EnrL6GwLWkNuuQPX2kT5/x48eQh+ce +doS4XKaOmIOAHuitnZxm2oRW9QyOwbX3H/j2IlGruQ0YiYiKVPSvYQWz5j7qNIbB +ogGAiZE7KXQzKxbAQOoTWnWps7F8ugMwfNj7tfZ3JEdtJCVZRiKHm4OppR5XE1da +grIlmQUf4IRhjRwadeRCF7yA6RCeK3LsuABEeJVyHaRtkTw+2PmOxBotMwIDAQAB +o1MwUTAdBgNVHQ4EFgQURA7Q9JPfB4mveB0vzmoqNJ2HSZUwHwYDVR0jBBgwFoAU +RA7Q9JPfB4mveB0vzmoqNJ2HSZUwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQsFAAOCAQEAB4NGJFZpzltHLqvInSU/EQxdIHgifihOFzsXTEXkdrmkfEw5puVL +fzg6qnLOunh3GAwLCnM0aIzDLS8WAS509Jwwidn7OtBpYV+jIzJrrTycWjAdvcHC +WToPTueXxwaAD3pCrus0w9H8egoQ1haNVmQm0OWcv3My82cNbZwViuQSCrky1srL +N5l7UM0gbXKeZjTGHIoTIjQJDgJT8PydsxpOZq7CcKRDBdF5nYMcUq8wltneb0Nh +7DuLLdxEM11XzIRT4GLRxT2xqwW7UpLfWpuo+niCvmNFY6SzyHFR1vFI3Kw1rYXh +3cbEtHtRvcNQg6Jp/zoHDcXMS3hDMeN2vQ== +-----END CERTIFICATE----- diff --git a/metricbeat/module/mysql/_meta/certs/server-cert.pem b/metricbeat/module/mysql/_meta/certs/server-cert.pem new file mode 100755 index 00000000000..1ca56e3f44f --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/server-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDDCCAfQCAQEwDQYJKoZIhvcNAQELBQAwSjELMAkGA1UEBhMCVVMxEzARBgNV +BAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC1NhbnRhIENsYXJhMRAwDgYDVQQDDAdm +YWtlLUNBMB4XDTI0MDIxNTIzNTAzOFoXDTMzMTIyNDIzNTAzOFowTjELMAkGA1UE +BhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFDASBgNVBAcMC1NhbnRhIENsYXJh +MRQwEgYDVQQDDAtmYWtlLXNlcnZlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMuPqkUt/Ax9s/h5LPxXU0m6OAEp1InLbR6x//hGVgmIiQu5/Fg1VfmZ +YbwraXxs4JDfMUyK6bd/bk2o71I1pnLmoFmQvawDRxOqkA1NLpF2FJtk0eevkF1D +crC9T1SfrzlwrucqqUXowdprVXFFVbFQTXsSyD8Nv/MGzDgmDtmMXQ8sLVqjGIEM +akuPMbNCVNTVnd/53WMaDzopnam/NCJNDGp2RVhf+KuOWLTURXFYN6j1z+f/1BNa +4QW+WtofzYkAWEcvCc8zeXUhwL6xE5gDyq1NkQ/ejqQq+iIJLd1FUFOH1jPSgmW5 +3CiWih2Is6VA0hCzDirdFtAHTui/OekCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA +vdGGVxaeSEfOkx+D7uYCx0blnobJoclggQP3fOIpyrU/LCeka+F8dvFvuGJLvn3A +JOMZZHCVnK6jjJYHFeolRCxd9iULYHD+dkWDr6uhvNMfwIt7UzUmtbznHAaD+ays +X0H70Z9+jmr3uFkevRbFkvDZqzdRYi/12oPM+0Skra3ouYen6zAtPU0Hruc0jyBP +W7V6mMSmCUPKTOJRZgDEIEBvu43rwEbQUG0ayqF1sLv+D6hjFrFJ2gCxgVH/+C9E +h0NF2Kdpb+jECCu3yhQA536Ugi9k96zJqJonu9jP4ODXMTG2qmsdFFW1zyFb9DbV +bjUsiDE7bEumHY2NEfzr3A== +-----END CERTIFICATE----- diff --git a/metricbeat/module/mysql/_meta/certs/server-key.pem b/metricbeat/module/mysql/_meta/certs/server-key.pem new file mode 100755 index 00000000000..d1a7d286a1c --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/server-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLj6pFLfwMfbP4 +eSz8V1NJujgBKdSJy20esf/4RlYJiIkLufxYNVX5mWG8K2l8bOCQ3zFMium3f25N +qO9SNaZy5qBZkL2sA0cTqpANTS6RdhSbZNHnr5BdQ3KwvU9Un685cK7nKqlF6MHa +a1VxRVWxUE17Esg/Db/zBsw4Jg7ZjF0PLC1aoxiBDGpLjzGzQlTU1Z3f+d1jGg86 +KZ2pvzQiTQxqdkVYX/irjli01EVxWDeo9c/n/9QTWuEFvlraH82JAFhHLwnPM3l1 +IcC+sROYA8qtTZEP3o6kKvoiCS3dRVBTh9Yz0oJludwoloodiLOlQNIQsw4q3RbQ +B07ovznpAgMBAAECggEADLAux9Me89ReBG3hLPVwfpb56LCny9L/QTuNHfecY0m8 +aRu1q/XfHwi9e9Ik6BmNQdp3ozLBcKujv3l5OWGYt27CrfKEsBUgOAyYoAugjHaU +wD7fipZ55CZRHs0eBcNSU70/Wa9iD7Z7Ztbr43yT49KCkdpQ2wVLYqWY0yMkJ9Eo +ZUJ8fL+yDMeJxnhQSIejK62TQI3FdMz+aNXA6AO0YiSfqagTS8GVNZQvZzvyxYS0 +DpiydzKSbS2RXkf3waClU5hDGwqhNxXa9bya/KrLvm4ag/VaV0O1M9jwFOKwfUGY +0SDELz/mxsOmGntTUbtuH7VSvnqkJHfACUcNkkIjAQKBgQD5pwIzrPnGrljDcFqu +OCRxhiRjgCNth4ObBbmj2n0BV5Uw33o1VlN/+GCfKcIQ1+tHOUrEtkwP5mMatUbf +4G4K/+bO3eWAf+ia5hkSVASbU0ui36iSkPWLYJr0oDx0N6Vw+ZK7oxqLGqW2dm4Y +Q1TFaIDd2wUGPYAuDaqPDHecCQKBgQDQvKXy9Ueh4iTbz3sH6Kp4wGN2BsjWWOVn +Hi4QoqnDoLrguhCe5vvNyxfayziu9hUKzP8kBHQOY/2xpKv+epPuw6hgaD0Mnh/w +UcWEqZs102y0zZcQISfG8TUoLHW31T87veB3YEVIB+8uZg1CWJ7aDKe8UmugVGV2 +k2sMG7fm4QKBgHq0z6w+lPZGs3I8QxXmmmMCH9iYHtGzDcigY8JZnZ+PQNEoxpR4 +vcnkdvlEORK2TfpP+qP9Rh16i7OQ7ikT0oKtjPCYuDkUpWudNS2BBlKh+kcvz1da +0JWVAhTCvXQR9cs1oB2B6YX9rv2j8DEUxxHQb6acBDgw+lOoe/CbnB6hAoGBAKxg +bcbjCcHFCF1BzT8tw8GuVzS7y5U/mkp64N26BunXzRwSa/FdnOpI4q07j9bkv2HJ +ApZS2yibKIFQFP01av8NMvpSer/1wThrvuqcSeG8dJQnB645QykGPrirZpdmki6a +0kijBvPCIaI2gpKcrqoxMz/Q7LJdn+C5Qvif11HhAoGAfai8GYFiXuShvf+8gjOt +qIsBMV3YexcX11qPD5vVJMCW1xLbpb9f3sPf8P31TB8tz5JA3aG24k8yURtgTA4Z +2I6Jo9vwMjAdOxHTalqMllDvBj5S5+cX38kGdcxdcbAiUHwIoXy6cjcGbeO/SesR +L1bbyZA45gpsWFxFr5V67G0= +-----END PRIVATE KEY----- diff --git a/metricbeat/module/mysql/_meta/certs/server-req.pem b/metricbeat/module/mysql/_meta/certs/server-req.pem new file mode 100755 index 00000000000..035ab7e2faf --- /dev/null +++ b/metricbeat/module/mysql/_meta/certs/server-req.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICkzCCAXsCAQAwTjELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx +FDASBgNVBAcMC1NhbnRhIENsYXJhMRQwEgYDVQQDDAtmYWtlLXNlcnZlcjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuPqkUt/Ax9s/h5LPxXU0m6OAEp +1InLbR6x//hGVgmIiQu5/Fg1VfmZYbwraXxs4JDfMUyK6bd/bk2o71I1pnLmoFmQ +vawDRxOqkA1NLpF2FJtk0eevkF1DcrC9T1SfrzlwrucqqUXowdprVXFFVbFQTXsS +yD8Nv/MGzDgmDtmMXQ8sLVqjGIEMakuPMbNCVNTVnd/53WMaDzopnam/NCJNDGp2 +RVhf+KuOWLTURXFYN6j1z+f/1BNa4QW+WtofzYkAWEcvCc8zeXUhwL6xE5gDyq1N +kQ/ejqQq+iIJLd1FUFOH1jPSgmW53CiWih2Is6VA0hCzDirdFtAHTui/OekCAwEA +AaAAMA0GCSqGSIb3DQEBCwUAA4IBAQAK3+eAfReXoGP3CQvTE/Bd6u+u5kG65stV +DONrBzhMQ4R36X+Q6q65qJ0rmvwZcUfkIauQzdNv9ZfCDT7pO1VtNT0R+H6+shz9 +JiwGOudAlFSt31Ps0+lDm6WjA6J1Nmr9N7XrsmfdW4z2n1UZSPS9mOZIj+PpUtQw +OzIwJ/+btS/RVO0cGGFkoFwhrYKilAbq+SsMxMVxPcXUP+xLFYn6FCNFbf5uBpLz +ZM7HBDh2uVfwsaptnY3v+EIELCsXsFm9uj4zG45fJmu4KARY6FAi9sEvfA1ieZuU +8hmovXhKq6eSU2fPoeurRV1gxuanuFObd39LRoCTy3fCnqTZFxXg +-----END CERTIFICATE REQUEST----- diff --git a/metricbeat/module/mysql/_meta/config.reference.yml b/metricbeat/module/mysql/_meta/config.reference.yml index 03880a5ad6a..f31774cb1be 100644 --- a/metricbeat/module/mysql/_meta/config.reference.yml +++ b/metricbeat/module/mysql/_meta/config.reference.yml @@ -21,3 +21,15 @@ # By setting raw to true, all raw fields from the status metricset will be added to the event. #raw: false + + # Optional SSL/TLS. By default is false. + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" \ No newline at end of file diff --git a/metricbeat/module/mysql/_meta/config.yml b/metricbeat/module/mysql/_meta/config.yml index 367b32e9173..a86258fca3b 100644 --- a/metricbeat/module/mysql/_meta/config.yml +++ b/metricbeat/module/mysql/_meta/config.yml @@ -18,3 +18,15 @@ # Password of hosts. Empty by default. #password: secret + + # Optional SSL/TLS. By default is false. + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" \ No newline at end of file diff --git a/metricbeat/module/mysql/_meta/test.cnf b/metricbeat/module/mysql/_meta/test.cnf index f759a49631d..24eec52dd05 100644 --- a/metricbeat/module/mysql/_meta/test.cnf +++ b/metricbeat/module/mysql/_meta/test.cnf @@ -1,2 +1,6 @@ [mysqld] bind-address = 0.0.0.0 +require_secure_transport = OFF +ssl-ca = /etc/certs/root-ca.pem +ssl-cert = /etc/certs/server-cert.pem +ssl-key = /etc/certs/server-key.pem \ No newline at end of file diff --git a/metricbeat/module/mysql/config.go b/metricbeat/module/mysql/config.go new file mode 100644 index 00000000000..96704bef479 --- /dev/null +++ b/metricbeat/module/mysql/config.go @@ -0,0 +1,32 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package mysql + +import ( + "crypto/tls" + + "github.com/elastic/elastic-agent-libs/transport/tlscommon" +) + +type Config struct { + Hosts []string `config:"hosts" validate:"required"` + Username string `config:"username"` + Password string `config:"password"` + TLS *tlscommon.Config `config:"ssl"` + TLSConfig *tls.Config +} diff --git a/metricbeat/module/mysql/docker-compose.yml b/metricbeat/module/mysql/docker-compose.yml index e112587fccd..0644d9568ad 100644 --- a/metricbeat/module/mysql/docker-compose.yml +++ b/metricbeat/module/mysql/docker-compose.yml @@ -2,10 +2,10 @@ version: '2.3' services: mysql: - image: docker.elastic.co/integrations-ci/beats-mysql:${MYSQL_VARIANT:-mysql}-${MYSQL_VERSION:-5.7.12}-1 + image: docker.elastic.co/integrations-ci/beats-mysql:${MYSQL_VARIANT:-mysql}-${MYSQL_VERSION:-8.0}-1 build: context: ./_meta args: - MYSQL_IMAGE: ${MYSQL_VARIANT:-mysql}:${MYSQL_VERSION:-5.7.12} + MYSQL_IMAGE: ${MYSQL_VARIANT:-mysql}:${MYSQL_VERSION:-8.0} ports: - 3306 diff --git a/metricbeat/module/mysql/galera_status/status.go b/metricbeat/module/mysql/galera_status/status.go index d1dc68cd0a2..6f27b8d4e8f 100644 --- a/metricbeat/module/mysql/galera_status/status.go +++ b/metricbeat/module/mysql/galera_status/status.go @@ -42,7 +42,7 @@ func init() { // MetricSet for fetching Galera-MySQL server status type MetricSet struct { - mb.BaseMetricSet + *mysql.Metricset db *sql.DB } @@ -50,7 +50,13 @@ type MetricSet struct { // Loads query_mode config setting from the config file func New(base mb.BaseMetricSet) (mb.MetricSet, error) { cfgwarn.Experimental("The galera_status metricset is experimental.") - return &MetricSet{BaseMetricSet: base}, nil + + ms, err := mysql.NewMetricset(base) + if err != nil { + return nil, err + } + + return &MetricSet{Metricset: ms, db: nil}, nil } // Fetch methods implements the data gathering and data conversion to the right format @@ -58,7 +64,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { func (m *MetricSet) Fetch(reporter mb.ReporterV2) error { if m.db == nil { var err error - m.db, err = mysql.NewDB(m.HostData().URI) + m.db, err = mysql.NewDB(m.HostData().URI, m.Metricset.Config.TLSConfig) if err != nil { return fmt.Errorf("Galera-status fetch failed: %w", err) } diff --git a/metricbeat/module/mysql/mysql.go b/metricbeat/module/mysql/mysql.go index 35388a9a1bd..23c0f8dda10 100644 --- a/metricbeat/module/mysql/mysql.go +++ b/metricbeat/module/mysql/mysql.go @@ -21,14 +21,18 @@ Package mysql is Metricbeat module for MySQL server. package mysql import ( + "crypto/tls" "database/sql" "fmt" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/elastic-agent-libs/transport/tlscommon" "github.com/go-sql-driver/mysql" ) +const TLSConfigKey = "custom" + func init() { // Register the ModuleFactory function for the "mysql" module. if err := mb.Registry.AddModule("mysql", NewModule); err != nil { @@ -38,16 +42,37 @@ func init() { func NewModule(base mb.BaseModule) (mb.Module, error) { // Validate that at least one host has been specified. - config := struct { - Hosts []string `config:"hosts" validate:"required"` - }{} - if err := base.UnpackConfig(&config); err != nil { + var c Config + if err := base.UnpackConfig(&c); err != nil { return nil, err } return &base, nil } +type Metricset struct { + mb.BaseMetricSet + Config Config +} + +func NewMetricset(base mb.BaseMetricSet) (*Metricset, error) { + var c Config + if err := base.Module().UnpackConfig(&c); err != nil { + return nil, fmt.Errorf("could not read config: %w", err) + } + + if c.TLS.IsEnabled() { + tlsConfig, err := tlscommon.LoadTLSConfig(c.TLS) + if err != nil { + return nil, fmt.Errorf("could not load provided TLS configuration: %w", err) + } + + c.TLSConfig = tlsConfig.ToConfig() + } + + return &Metricset{Config: c, BaseMetricSet: base}, nil +} + // ParseDSN creates a DSN (data source name) string by parsing the host. // It validates the resulting DSN and returns an error if the DSN is invalid. // @@ -55,9 +80,11 @@ func NewModule(base mb.BaseModule) (mb.Module, error) { // Example: root:test@tcp(127.0.0.1:3306)/ func ParseDSN(mod mb.Module, host string) (mb.HostData, error) { c := struct { - Username string `config:"username"` - Password string `config:"password"` + Username string `config:"username"` + Password string `config:"password"` + TLS *tlscommon.Config `config:"ssl"` }{} + if err := mod.UnpackConfig(&c); err != nil { return mb.HostData{}, err } @@ -86,6 +113,10 @@ func ParseDSN(mod mb.Module, host string) (mb.HostData, error) { noCredentialsConfig.User = "" noCredentialsConfig.Passwd = "" + if c.TLS.IsEnabled() { + config.TLSConfig = TLSConfigKey + } + return mb.HostData{ URI: config.FormatDSN(), SanitizedURI: noCredentialsConfig.FormatDSN(), @@ -99,10 +130,18 @@ func ParseDSN(mod mb.Module, host string) (mb.HostData, error) { // must be valid, otherwise an error will be returned. // // DSN Format: [username[:password]@][protocol[(address)]]/ -func NewDB(dsn string) (*sql.DB, error) { +func NewDB(dsn string, tlsConfig *tls.Config) (*sql.DB, error) { + if tlsConfig != nil { + err := mysql.RegisterTLSConfig(TLSConfigKey, tlsConfig) + if err != nil { + return nil, fmt.Errorf("registering custom tls config failed: %w", err) + } + } + db, err := sql.Open("mysql", dsn) if err != nil { return nil, fmt.Errorf("sql open failed: %w", err) } + return db, nil } diff --git a/metricbeat/module/mysql/mysql_integration_test.go b/metricbeat/module/mysql/mysql_integration_test.go index 5713a582149..2fc96475646 100644 --- a/metricbeat/module/mysql/mysql_integration_test.go +++ b/metricbeat/module/mysql/mysql_integration_test.go @@ -20,6 +20,9 @@ package mysql import ( + "crypto/tls" + "crypto/x509" + "os" "testing" "github.com/stretchr/testify/assert" @@ -31,9 +34,58 @@ import ( func TestNewDB(t *testing.T) { service := compose.EnsureUp(t, "mysql") - db, err := NewDB(GetMySQLEnvDSN(service.Host())) + db, err := NewDB(GetMySQLEnvDSN(service.Host()), nil) assert.NoError(t, err) err = db.Ping() assert.NoError(t, err) } + +func loadTLSConfig(caCertPath, clientCertPath, clientKeyPath string) (*tls.Config, error) { + caCert, err := os.ReadFile(caCertPath) + if err != nil { + return nil, err + } + caCertPool := x509.NewCertPool() + caCertPool.AppendCertsFromPEM(caCert) + + cert, err := tls.LoadX509KeyPair(clientCertPath, clientKeyPath) + if err != nil { + return nil, err + } + + tlsConfig := &tls.Config{ + Certificates: []tls.Certificate{cert}, + RootCAs: caCertPool, + MinVersion: tls.VersionTLS12, + } + + return tlsConfig, nil +} + +func TestNewDBWithSSL(t *testing.T) { + service := compose.EnsureUp(t, "mysql") + + tlsConfig, err := loadTLSConfig("_meta/certs/root-ca.pem", "_meta/certs/client-cert.pem", "_meta/certs/client-key.pem") + tlsConfig.InsecureSkipVerify = true + assert.NoError(t, err) + + db, err := NewDB(GetMySQLEnvDSN(service.Host())+"?tls=custom", tlsConfig) + assert.NoError(t, err) + + err = db.Ping() + assert.NoError(t, err) + + // Check if the current connection is using SSL + var sslCipher, variableName, value string + err = db.QueryRow(`show status like 'Ssl_cipher'`).Scan(&variableName, &sslCipher) + assert.NoError(t, err) + + // If sslCipher is not empty, then SSL is being used for the connection + assert.NotEmpty(t, variableName) + assert.NotEmpty(t, sslCipher) + + err = db.QueryRow(`show variables like 'have_ssl'`).Scan(&variableName, &value) + assert.NoError(t, err) + assert.Equal(t, "YES", value) +} diff --git a/metricbeat/module/mysql/query/query.go b/metricbeat/module/mysql/query/query.go index 35881d76401..d7bbaaa4cd7 100644 --- a/metricbeat/module/mysql/query/query.go +++ b/metricbeat/module/mysql/query/query.go @@ -25,13 +25,17 @@ package query import ( "context" + "crypto/tls" "fmt" + mysqlDriver "github.com/go-sql-driver/mysql" + "github.com/elastic/beats/v7/libbeat/common/cfgwarn" "github.com/elastic/beats/v7/metricbeat/helper/sql" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/metricbeat/module/mysql" "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/elastic-agent-libs/transport/tlscommon" ) func init() { @@ -57,8 +61,10 @@ type MetricSet struct { mb.BaseMetricSet db *sql.DbClient Config struct { - Queries []query `config:"queries" validate:"nonzero,required"` - Namespace string `config:"namespace" validate:"nonzero,required"` + Queries []query `config:"queries" validate:"nonzero,required"` + Namespace string `config:"namespace" validate:"nonzero,required"` + TLS *tlscommon.Config `config:"ssl"` + TLSConfig *tls.Config } } @@ -72,16 +78,31 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return nil, err } + if b.Config.TLS.IsEnabled() { + tlsConfig, err := tlscommon.LoadTLSConfig(b.Config.TLS) + if err != nil { + return nil, fmt.Errorf("could not load provided TLS configuration: %w", err) + } + + b.Config.TLSConfig = tlsConfig.ToConfig() + } + return b, nil } // Fetch fetches status messages from a mysql host. func (m *MetricSet) Fetch(ctx context.Context, reporter mb.ReporterV2) error { if m.db == nil { + if m.Config.TLSConfig != nil { + err := mysqlDriver.RegisterTLSConfig(mysql.TLSConfigKey, m.Config.TLSConfig) + if err != nil { + return fmt.Errorf("registering custom tls config failed: %w", err) + } + } var err error m.db, err = sql.NewDBClient("mysql", m.HostData().URI, m.Logger()) if err != nil { - return fmt.Errorf("mysql-status fetch failed: %w", err) + return fmt.Errorf("mysql-query fetch failed: %w", err) } } diff --git a/metricbeat/module/mysql/status/status.go b/metricbeat/module/mysql/status/status.go index dd57f7e23c9..ac3e5b83a18 100644 --- a/metricbeat/module/mysql/status/status.go +++ b/metricbeat/module/mysql/status/status.go @@ -40,20 +40,25 @@ func init() { // MetricSet for fetching MySQL server status. type MetricSet struct { - mb.BaseMetricSet + *mysql.Metricset db *sql.DB } // New creates and returns a new MetricSet instance. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - return &MetricSet{BaseMetricSet: base}, nil + ms, err := mysql.NewMetricset(base) + if err != nil { + return nil, err + } + + return &MetricSet{Metricset: ms, db: nil}, nil } // Fetch fetches status messages from a mysql host. func (m *MetricSet) Fetch(reporter mb.ReporterV2) error { if m.db == nil { var err error - m.db, err = mysql.NewDB(m.HostData().URI) + m.db, err = mysql.NewDB(m.HostData().URI, m.Metricset.Config.TLSConfig) if err != nil { return fmt.Errorf("mysql-status fetch failed: %w", err) } diff --git a/metricbeat/modules.d/mysql.yml.disabled b/metricbeat/modules.d/mysql.yml.disabled index 2913f5af8bc..27dcc1e59ea 100644 --- a/metricbeat/modules.d/mysql.yml.disabled +++ b/metricbeat/modules.d/mysql.yml.disabled @@ -21,3 +21,15 @@ # Password of hosts. Empty by default. #password: secret + + # Optional SSL/TLS. By default is false. + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" \ No newline at end of file diff --git a/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index 1e6abf11a60..313fc5491e0 100644 --- a/x-pack/metricbeat/metricbeat.reference.yml +++ b/x-pack/metricbeat/metricbeat.reference.yml @@ -1172,6 +1172,17 @@ metricbeat.modules: # By setting raw to true, all raw fields from the status metricset will be added to the event. #raw: false + # Optional SSL/TLS. By default is false. + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" #--------------------------------- NATS Module --------------------------------- - module: nats metricsets: From ffd9fd899b7a1955a6da14e5ca561d4b4e5780a6 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Sun, 17 Mar 2024 13:50:49 -0400 Subject: [PATCH 027/313] chore: Update snapshot.yml (#38352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 3e0cd8a6d90..693e6d2f748 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-bd8c2be5-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-a2d5464c-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-bd8c2be5-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-a2d5464c-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-bd8c2be5-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-a2d5464c-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 093ab5e824dd601c39a84cb50ef6c5934af2c3ff Mon Sep 17 00:00:00 2001 From: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> Date: Mon, 18 Mar 2024 09:28:37 -0400 Subject: [PATCH 028/313] Fix docs build break from SSL module page (#38367) * Fix docs build break from SSL module page * Update metricbeat/docs/modules/mysql.asciidoc Co-authored-by: Denis * Fix the config reference, so we can build the docs --------- Co-authored-by: Denis Co-authored-by: Denis Rechkunov --- metricbeat/docs/modules/mysql.asciidoc | 5 +++-- metricbeat/metricbeat.reference.yml | 3 ++- metricbeat/module/mysql/_meta/config.reference.yml | 4 ++-- x-pack/metricbeat/metricbeat.reference.yml | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/metricbeat/docs/modules/mysql.asciidoc b/metricbeat/docs/modules/mysql.asciidoc index 5433fe94224..8711359bf5f 100644 --- a/metricbeat/docs/modules/mysql.asciidoc +++ b/metricbeat/docs/modules/mysql.asciidoc @@ -98,9 +98,10 @@ metricbeat.modules: # Certificate for SSL/TLS client authentication #ssl.certificate: "/etc/pki/client/cert.crt" - + # Client certificate key file - #ssl.key: "/etc/pki/client/cert.key"---- + #ssl.key: "/etc/pki/client/cert.key" +---- [float] === Metricsets diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 59a8d5d6c38..3f9ccb0a9db 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -772,9 +772,10 @@ metricbeat.modules: # Certificate for SSL/TLS client authentication #ssl.certificate: "/etc/pki/client/cert.crt" - + # Client certificate key file #ssl.key: "/etc/pki/client/cert.key" + #--------------------------------- NATS Module --------------------------------- - module: nats metricsets: diff --git a/metricbeat/module/mysql/_meta/config.reference.yml b/metricbeat/module/mysql/_meta/config.reference.yml index f31774cb1be..4e5cc470aca 100644 --- a/metricbeat/module/mysql/_meta/config.reference.yml +++ b/metricbeat/module/mysql/_meta/config.reference.yml @@ -30,6 +30,6 @@ # Certificate for SSL/TLS client authentication #ssl.certificate: "/etc/pki/client/cert.crt" - + # Client certificate key file - #ssl.key: "/etc/pki/client/cert.key" \ No newline at end of file + #ssl.key: "/etc/pki/client/cert.key" diff --git a/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index 313fc5491e0..f71e58904fd 100644 --- a/x-pack/metricbeat/metricbeat.reference.yml +++ b/x-pack/metricbeat/metricbeat.reference.yml @@ -1180,9 +1180,10 @@ metricbeat.modules: # Certificate for SSL/TLS client authentication #ssl.certificate: "/etc/pki/client/cert.crt" - + # Client certificate key file #ssl.key: "/etc/pki/client/cert.key" + #--------------------------------- NATS Module --------------------------------- - module: nats metricsets: From 8ccfa43ef62c8022fc98be976cbdc8a3b450f6f5 Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Mon, 18 Mar 2024 17:30:49 +0200 Subject: [PATCH 029/313] migrate xpack-winlogbeat pipeline (#38348) * migrate xpack-winlogbeat pipeline * add generate_xpack_winlogbeat_pipeline.sh and cleanup setenv.sh * full test * full test * test xpack-packetbeat packaging * update comment --- .buildkite/hooks/pre-command | 2 +- .buildkite/scripts/cloud_tests.sh | 3 - .buildkite/scripts/common.sh | 12 ++ .../generate_xpack_metricbeat_pipeline.sh | 6 + .../generate_xpack_winlogbeat_pipeline.sh | 110 ++++++++++++++++++ .buildkite/scripts/setenv.sh | 2 +- .../x-pack/pipeline.xpack.metricbeat.yml | 2 +- .../x-pack/pipeline.xpack.winlogbeat.yml | 38 +++++- 8 files changed, 167 insertions(+), 8 deletions(-) create mode 100755 .buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index c23f5c3af64..1111caf5ac0 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -34,7 +34,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" ]]; then source .buildkite/scripts/setenv.sh if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" diff --git a/.buildkite/scripts/cloud_tests.sh b/.buildkite/scripts/cloud_tests.sh index 9e7ce95be66..3baeb1be1a3 100755 --- a/.buildkite/scripts/cloud_tests.sh +++ b/.buildkite/scripts/cloud_tests.sh @@ -9,9 +9,6 @@ set -euo pipefail trap 'teardown || true; unset_secrets' EXIT -# Set the MODULE env variable if possible -defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" - # Prepare the cloud resources using Terraform startCloudTestEnv "${MODULE_DIR}" diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index d6a91a48243..9e75d3535cd 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -15,6 +15,10 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_metricbeat+x}" ] && run_metricbeat="$(buildkite-agent meta-data get run_metricbeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" [ -z "${run_winlogbeat+x}" ] && run_winlogbeat="$(buildkite-agent meta-data get run_winlogbeat --default "false")" +[ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" +[ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" +[ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" +[ -z "${run_xpack_winlogbeat+x}" ] && run_xpack_winlogbeat="$(buildkite-agent meta-data get run_xpack_winlogbeat --default "false")" [ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" [ -z "${run_metricbeat_macos_tests+x}" ] && run_metricbeat_macos_tests="$(buildkite-agent meta-data get run_metricbeat_macos_tests --default "false")" @@ -110,6 +114,9 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-packetbeat") BEAT_CHANGESET_REFERENCE=${xpack_packetbeat_changeset[@]} ;; + "beats-xpack-winlogbeat") + BEAT_CHANGESET_REFERENCE=${xpack_winlogbeat_changeset[@]} + ;; *) echo "The changeset for the ${BUILDKITE_PIPELINE_SLUG} pipeline hasn't been defined yet." ;; @@ -501,4 +508,9 @@ if are_paths_changed "${packaging_changeset[@]}" ; then export PACKAGING_CHANGES="true" fi +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then + # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. + defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" +fi + check_and_set_beat_vars diff --git a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh index af116b17209..ddc3ce2c8f2 100755 --- a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh @@ -27,6 +27,8 @@ steps: - label: ":go: Go Integration Tests" key: "mandatory-int-test" command: ".buildkite/scripts/go_int_tests.sh" + env: + MODULE: $MODULE agents: provider: "gcp" image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" @@ -36,6 +38,8 @@ steps: - label: ":python: Python Integration Tests" key: "mandatory-python-int-test" command: ".buildkite/scripts/py_int_tests.sh" + env: + MODULE: $MODULE agents: provider: "gcp" image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" @@ -131,6 +135,8 @@ if are_conditions_met_aws_tests; then - label: ":linux: Cloud Tests" key: "extended-cloud-test" command: ".buildkite/scripts/cloud_tests.sh" + env: + MODULE: $MODULE agents: provider: "gcp" image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" diff --git a/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh new file mode 100755 index 00000000000..108a70c1562 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-winlogbeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + + - label: ":windows: Windows 2019 Unit (MODULE) Tests" + key: "mandatory-win-2019-unit-tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + env: + MODULE: $MODULE + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows: Windows 2016/2022 Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "mandatory-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_2016}" + - "${IMAGE_WIN_2022}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +# echo "Add the extended windows tests into the pipeline" +# TODO: ADD conditions from the main pipeline + + - group: "Extended Windows Tests" + key: "extended-win-tests" + steps: + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "extended-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 29a8a05446e..db86a7c9112 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -56,7 +56,7 @@ exportVars() { fi } -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" ]]; then exportVars export RACE_DETECTOR="true" export TEST_COVERAGE="true" diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 81756564919..216f3134344 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -54,7 +54,7 @@ steps: allow_dependency_failure: false - label: ":linux: Load dynamic x-pack metricbeat pipeline" - key: "metricbeat-pipeline" + key: "xpack-metricbeat-pipeline" command: ".buildkite/scripts/generate_xpack_metricbeat_pipeline.sh" notify: - github_commit_status: diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index 34321b61161..5c8acefd698 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -1,5 +1,39 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-xpack-winlogbeat" + +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/general-windows-10" + IMAGE_WIN_11: "family/general-windows-11" + IMAGE_WIN_2016: "family/core-windows-2016" + IMAGE_WIN_2019: "family/core-windows-2019" + IMAGE_WIN_2022: "family/core-windows-2022" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + BEATS_PROJECT_NAME: "x-pack/winlogbeat" steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Winlogbeat - run_xpack_winlogbeat" + key: "run_xpack_winlogbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack winlogbeat pipeline" + key: "xpack-winlogbeat-pipeline" + command: ".buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" From 202b4904d61c99463d122c92efd6a05a711f7e7a Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Mon, 18 Mar 2024 18:09:34 +0200 Subject: [PATCH 030/313] disabled buildvcs (#38366) Force merging this to unblock buildkite migration. --- dev-tools/mage/crossbuild.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-tools/mage/crossbuild.go b/dev-tools/mage/crossbuild.go index f500611e5cc..94b972ea25e 100644 --- a/dev-tools/mage/crossbuild.go +++ b/dev-tools/mage/crossbuild.go @@ -327,7 +327,7 @@ func (b GolangCrossBuilder) Build() error { args = append(args, "--rm", - "--env", "GOFLAGS=-mod=readonly", + "--env", "GOFLAGS=-mod=readonly -buildvcs=false", "--env", "MAGEFILE_VERBOSE="+verbose, "--env", "MAGEFILE_TIMEOUT="+EnvOr("MAGEFILE_TIMEOUT", ""), "--env", fmt.Sprintf("SNAPSHOT=%v", Snapshot), From 8289144f4c24ca591f56fb5b3ac909eb11e6d3c0 Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Mon, 18 Mar 2024 17:14:43 +0100 Subject: [PATCH 031/313] [Kafka output] Add config validation for topic and topics fields (#38058) This commit adds configuration validation for `topic` and `topics` fields from the Kafka output. Validation is performed for both cases: standalone Beat and running under Elastic-Agent. The latter does not support dynamic topics, hence setting `topics` is rejected by the validation. When running under Elastic-Agent the topic is validated using a regexpt taken from the Kafka source code: https://github.com/apache/kafka/blob/a126e3a622f2b7142f3543b9dbee54b6412ba9d8/clients/src/main/java/org/apache/kafka/common/internals/Topic.java#L33 --- CHANGELOG.next.asciidoc | 1 + libbeat/outputs/kafka/config.go | 30 +++++++++ libbeat/outputs/kafka/config_test.go | 95 +++++++++++++++++++++++++++- 3 files changed, 123 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index d06ffb5f705..6b2023ddcec 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -146,6 +146,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Upgrade go-sysinfo from 1.12.0 to 1.13.1. {pull}37996[37996] - Make `range` condition work with numeric values as strings. {pull}38080[38080] - Allow users to configure number of output workers (for outputs that support workers) with either `worker` or `workers`. {pull}38257[38257] +- Kafka output now validates the `topics` and `topic` configuration values {pull}38058[38058] *Auditbeat* diff --git a/libbeat/outputs/kafka/config.go b/libbeat/outputs/kafka/config.go index 8fff8dad0d5..3e2c836a06f 100644 --- a/libbeat/outputs/kafka/config.go +++ b/libbeat/outputs/kafka/config.go @@ -22,6 +22,7 @@ import ( "fmt" "math" "math/rand" + "regexp" "strings" "time" @@ -31,6 +32,7 @@ import ( "github.com/elastic/beats/v7/libbeat/common/fmtstr" "github.com/elastic/beats/v7/libbeat/common/kafka" "github.com/elastic/beats/v7/libbeat/common/transport/kerberos" + "github.com/elastic/beats/v7/libbeat/management" "github.com/elastic/beats/v7/libbeat/outputs/codec" "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" @@ -77,6 +79,11 @@ type kafkaConfig struct { Sasl kafka.SaslConfig `config:"sasl"` EnableFAST bool `config:"enable_krb5_fast"` Queue config.Namespace `config:"queue"` + + // Currently only used for validation. Those values are later + // unpacked into temporary structs whenever they're necessary. + Topic string `config:"topic"` + Topics []any `config:"topics"` } type metaConfig struct { @@ -102,6 +109,11 @@ var compressionModes = map[string]sarama.CompressionCodec{ "snappy": sarama.CompressionSnappy, } +// validTopicRegExp is used to validate the topic contains only valid characters +// when running under Elastic-Agent. The regexp is taken from: +// https://github.com/apache/kafka/blob/a126e3a622f2b7142f3543b9dbee54b6412ba9d8/clients/src/main/java/org/apache/kafka/common/internals/Topic.java#L33 +var validTopicRegExp = regexp.MustCompile("^[a-zA-Z0-9._-]+$") + func defaultConfig() kafkaConfig { return kafkaConfig{ Hosts: nil, @@ -169,6 +181,24 @@ func (c *kafkaConfig) Validate() error { return fmt.Errorf("compression_level must be between 0 and 9") } } + + if c.Topic == "" && len(c.Topics) == 0 { + return errors.New("either 'topic' or 'topics' must be defined") + } + + // When running under Elastic-Agent we do not support dynamic topic + // selection, so `topics` is not supported and `topic` is treated as an + // plain string + if management.UnderAgent() { + if len(c.Topics) != 0 { + return errors.New("'topics' is not supported when running under Elastic-Agent") + } + + if !validTopicRegExp.MatchString(c.Topic) { + return fmt.Errorf("topic '%s' is invalid, it must match '[a-zA-Z0-9._-]'", c.Topic) + } + } + return nil } diff --git a/libbeat/outputs/kafka/config_test.go b/libbeat/outputs/kafka/config_test.go index 25c0c5dce99..2435b274f6e 100644 --- a/libbeat/outputs/kafka/config_test.go +++ b/libbeat/outputs/kafka/config_test.go @@ -25,6 +25,7 @@ import ( "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/internal/testutil" + "github.com/elastic/beats/v7/libbeat/management" "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" @@ -32,16 +33,18 @@ import ( func TestConfigAcceptValid(t *testing.T) { tests := map[string]mapstr.M{ - "default config is valid": mapstr.M{}, "lz4 with 0.11": mapstr.M{ "compression": "lz4", "version": "0.11", + "topic": "foo", }, "lz4 with 1.0": mapstr.M{ "compression": "lz4", "version": "1.0.0", + "topic": "foo", }, "Kerberos with keytab": mapstr.M{ + "topic": "foo", "kerberos": mapstr.M{ "auth_type": "keytab", "username": "elastic", @@ -52,6 +55,7 @@ func TestConfigAcceptValid(t *testing.T) { }, }, "Kerberos with user and password pair": mapstr.M{ + "topic": "foo", "kerberos": mapstr.M{ "auth_type": "password", "username": "elastic", @@ -67,7 +71,9 @@ func TestConfigAcceptValid(t *testing.T) { test := test t.Run(name, func(t *testing.T) { c := config.MustNewConfigFrom(test) - c.SetString("hosts", 0, "localhost") + if err := c.SetString("hosts", 0, "localhost"); err != nil { + t.Fatalf("could not set 'hosts' on config: %s", err) + } cfg, err := readConfig(c) if err != nil { t.Fatalf("Can not create test configuration: %v", err) @@ -89,13 +95,17 @@ func TestConfigInvalid(t *testing.T) { "realm": "ELASTIC", }, }, + // The default config does not set `topic` nor `topics`. + "No topics or topic provided": mapstr.M{}, } for name, test := range tests { test := test t.Run(name, func(t *testing.T) { c := config.MustNewConfigFrom(test) - c.SetString("hosts", 0, "localhost") + if err := c.SetString("hosts", 0, "localhost"); err != nil { + t.Fatalf("could not set 'hosts' on config: %s", err) + } _, err := readConfig(c) if err == nil { t.Fatalf("Can create test configuration from invalid input") @@ -104,6 +114,84 @@ func TestConfigInvalid(t *testing.T) { } } +func TestConfigUnderElasticAgent(t *testing.T) { + oldUnderAgent := management.UnderAgent() + t.Cleanup(func() { + // Restore the previous value + management.SetUnderAgent(oldUnderAgent) + }) + + management.SetUnderAgent(true) + + tests := []struct { + name string + cfg mapstr.M + expectError bool + }{ + { + name: "topic with all valid characters", + cfg: mapstr.M{ + "topic": "abcdefghijklmnopqrstuvxz-ABCDEFGHIJKLMNOPQRSTUVXZ_01234567890.", + }, + }, + { + name: "topics is provided", + cfg: mapstr.M{ + "topics": []string{"foo", "bar"}, + }, + expectError: true, + }, + { + name: "topic cannot contain invalid characters", + cfg: mapstr.M{ + "topic": "foo bar", + }, + expectError: true, + }, + { + name: "topic with invalid characters", + cfg: mapstr.M{ + "topic": "foo + bar", + }, + expectError: true, + }, + { + name: "topic with invalid characters from dynamic topic selection", + cfg: mapstr.M{ + "topic": "%{event.field}", + }, + expectError: true, + }, + + // The default config does not set `topic` not `topics`. + { + name: "empty config is invalid", + cfg: mapstr.M{}, + expectError: true, + }, + } + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + c := config.MustNewConfigFrom(test.cfg) + if err := c.SetString("hosts", 0, "localhost"); err != nil { + t.Fatalf("could not set 'hosts' on config: %s", err) + } + + _, err := readConfig(c) + + if test.expectError && err == nil { + t.Fatalf("invalid configuration must not be created") + } + + if !test.expectError && err != nil { + t.Fatalf("could not create config: %s", err) + } + }) + } +} + func TestBackoffFunc(t *testing.T) { testutil.SeedPRNG(t) tests := map[int]backoffConfig{ @@ -178,6 +266,7 @@ func TestTopicSelection(t *testing.T) { for name, test := range cases { t.Run(name, func(t *testing.T) { + test := test selector, err := buildTopicSelector(config.MustNewConfigFrom(test.cfg)) if err != nil { t.Fatalf("Failed to parse configuration: %v", err) From 3809f4b270a3264ec8c9447b42d41bc5d2e02b01 Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Mon, 18 Mar 2024 19:15:37 +0200 Subject: [PATCH 032/313] migrate xpack dockerlogbeat pipeline (#38365) * migrate xpack dockerlogbeat pipeline * add pre-command * add common.sh to setenv.sh * add common.sh to setenv.sh * add arm image type --- .buildkite/hooks/pre-command | 2 +- .buildkite/scripts/common.sh | 9 +- .../generate_xpack_dockerlogbeat_pipeline.sh | 83 +++++++++++++++++++ .buildkite/scripts/setenv.sh | 6 ++ .../x-pack/pipeline.xpack.dockerlogbeat.yml | 36 +++++++- 5 files changed, 132 insertions(+), 4 deletions(-) create mode 100755 .buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 1111caf5ac0..465b0a7e85e 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -34,7 +34,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" ]]; then source .buildkite/scripts/setenv.sh if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 9e75d3535cd..3b9bd5e1585 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -45,6 +45,10 @@ winlogbeat_changeset=( "^winlogbeat/.*" ) +xpack_dockerlogbeat_changeset=( + "^x-pack/dockerlogbeat/.*" + ) + xpack_libbeat_changeset=( "^x-pack/libbeat/.*" ) @@ -105,6 +109,9 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-winlogbeat") BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} ;; + "beats-xpack-dockerlogbeat") + BEAT_CHANGESET_REFERENCE=${xpack_dockerlogbeat_changeset[@]} + ;; "beats-xpack-libbeat") BEAT_CHANGESET_REFERENCE=${xpack_libbeat_changeset[@]} ;; @@ -508,7 +515,7 @@ if are_paths_changed "${packaging_changeset[@]}" ; then export PACKAGING_CHANGES="true" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" fi diff --git a/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh new file mode 100755 index 00000000000..46e92f8ddf9 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-dockerlogbeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" + env: + MODULE: $MODULE + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index db86a7c9112..29acf0ec170 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -63,3 +63,9 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_S export DOCKER_PULL="0" export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi + +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then + # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. + source .buildkite/scripts/common.sh + defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" +fi diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index c4a0805615b..bcc2610e175 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -1,6 +1,38 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json name: "beats-xpack-dockerlogbeat" +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/dockerlogbeat" + steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Dockerlogbeat - run_xpack_dockerlogbeat" + key: "run_xpack_dockerlogbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack dockerlogbeat pipeline" + key: "xpack-dockerlogbeat-pipeline" + command: ".buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" From 6826980c55e4e89bff53821971e482d4f4c7e98d Mon Sep 17 00:00:00 2001 From: Dan Kortschak <90160302+efd6@users.noreply.github.com> Date: Tue, 19 Mar 2024 06:13:45 +1030 Subject: [PATCH 033/313] x-pack/filebeat/input/httpjson: fix handling of POST requests with empty object bodies (#38290) --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/httpjson/encoding.go | 6 ++++-- x-pack/filebeat/input/httpjson/input_test.go | 13 ++++++++++++- x-pack/filebeat/input/httpjson/request.go | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 6b2023ddcec..1422424e423 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -101,6 +101,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Fix "failed processing S3 event for object key" error on aws-s3 input when key contains the "+" character {issue}38012[38012] {pull}38125[38125] - Fix duplicated addition of regexp extension in CEL input. {pull}38181[38181] - Fix the incorrect values generated by the uri_parts processor. {pull}38216[38216] +- Fix HTTPJSON handling of empty object bodies in POST requests. {issue}33961[33961] {pull}38290[38290] *Heartbeat* diff --git a/x-pack/filebeat/input/httpjson/encoding.go b/x-pack/filebeat/input/httpjson/encoding.go index 5dd62f10535..a7da4f25c0d 100644 --- a/x-pack/filebeat/input/httpjson/encoding.go +++ b/x-pack/filebeat/input/httpjson/encoding.go @@ -16,6 +16,7 @@ import ( "net/http" "unicode" + "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/mito/lib/xml" ) @@ -64,13 +65,14 @@ type decoderFunc func(p []byte, dst *response) error // encodeAsJSON encodes trReq as a JSON message. func encodeAsJSON(trReq transformable) ([]byte, error) { - if len(trReq.body()) == 0 { + body, err := trReq.GetValue("body") + if err == mapstr.ErrKeyNotFound { return nil, nil } header := trReq.header() header.Set("Content-Type", "application/json") trReq.setHeader(header) - return json.Marshal(trReq.body()) + return json.Marshal(body) } // decodeAsJSON decodes the JSON message in p into dst. diff --git a/x-pack/filebeat/input/httpjson/input_test.go b/x-pack/filebeat/input/httpjson/input_test.go index 498ccc86183..6604c999d44 100644 --- a/x-pack/filebeat/input/httpjson/input_test.go +++ b/x-pack/filebeat/input/httpjson/input_test.go @@ -93,6 +93,17 @@ var testCases = []struct { handler: defaultHandler(http.MethodPost, `{"test":"abc"}`, ""), expected: []string{`{"hello":[{"world":"moon"},{"space":[{"cake":"pumpkin"}]}]}`}, }, + { + name: "POST_request_with_empty_object_body", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "interval": 1, + "request.method": http.MethodPost, + "request.body": map[string]interface{}{}, + }, + handler: defaultHandler(http.MethodPost, `{}`, ""), + expected: []string{`{"hello":[{"world":"moon"},{"space":[{"cake":"pumpkin"}]}]}`}, + }, { name: "repeated_POST_requests", setupServer: newTestServer(httptest.NewServer), @@ -1516,7 +1527,7 @@ func defaultHandler(expectedMethod, expectedBody, msg string) http.HandlerFunc { r.Body.Close() if expectedBody != string(body) { w.WriteHeader(http.StatusBadRequest) - msg = fmt.Sprintf(`{"error":"expected body was %q"}`, expectedBody) + msg = fmt.Sprintf(`{"error":"expected body was %q, but got %q"}`, expectedBody, body) } } diff --git a/x-pack/filebeat/input/httpjson/request.go b/x-pack/filebeat/input/httpjson/request.go index 9e60d22ac49..3e63f026716 100644 --- a/x-pack/filebeat/input/httpjson/request.go +++ b/x-pack/filebeat/input/httpjson/request.go @@ -440,7 +440,7 @@ func (rf *requestFactory) newRequest(ctx *transformContext) (transformable, erro req := transformable{} req.setURL(rf.url) - if rf.body != nil && len(*rf.body) > 0 { + if rf.body != nil { req.setBody(rf.body.Clone()) } From fe092972a481354a7c84c553ddad07f2ea5bbf34 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Mon, 18 Mar 2024 18:02:38 -0400 Subject: [PATCH 034/313] chore: Update snapshot.yml (#38372) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 693e6d2f748..5cae69cbdbe 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-a2d5464c-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-09a11c1c-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-a2d5464c-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-09a11c1c-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-a2d5464c-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-09a11c1c-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 51974d9f8857a0e52da7367054581d78eb3fe3d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 22:30:10 +0000 Subject: [PATCH 035/313] build(deps): bump github.com/elastic/go-ucfg from 0.8.6 to 0.8.7 (#38251) * build(deps): bump github.com/elastic/go-ucfg from 0.8.6 to 0.8.7 Bumps [github.com/elastic/go-ucfg](https://github.com/elastic/go-ucfg) from 0.8.6 to 0.8.7. - [Release notes](https://github.com/elastic/go-ucfg/releases) - [Changelog](https://github.com/elastic/go-ucfg/blob/main/CHANGELOG.md) - [Commits](https://github.com/elastic/go-ucfg/compare/v0.8.6...v0.8.7) --- updated-dependencies: - dependency-name: github.com/elastic/go-ucfg dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] Co-authored-by: Craig MacKenzie --- NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 2f66d290a43..ca91143b72c 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -15223,11 +15223,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-sysinfo@v1.1 -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-ucfg -Version: v0.8.6 +Version: v0.8.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-ucfg@v0.8.6/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-ucfg@v0.8.7/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index fc7c97929b2..a54aa532781 100644 --- a/go.mod +++ b/go.mod @@ -79,7 +79,7 @@ require ( github.com/elastic/go-seccomp-bpf v1.4.0 github.com/elastic/go-structform v0.0.10 github.com/elastic/go-sysinfo v1.13.1 - github.com/elastic/go-ucfg v0.8.6 + github.com/elastic/go-ucfg v0.8.7 github.com/elastic/gosigar v0.14.2 github.com/fatih/color v1.15.0 github.com/fearful-symmetry/gorapl v0.0.4 diff --git a/go.sum b/go.sum index f95a7973ed8..11a7f4c415b 100644 --- a/go.sum +++ b/go.sum @@ -710,8 +710,8 @@ github.com/elastic/go-structform v0.0.10 h1:oy08o/Ih2hHTkNcRY/1HhaYvIp5z6t8si8gn github.com/elastic/go-structform v0.0.10/go.mod h1:CZWf9aIRYY5SuKSmOhtXScE5uQiLZNqAFnwKR4OrIM4= github.com/elastic/go-sysinfo v1.13.1 h1:U5Jlx6c/rLkR72O8wXXXo1abnGlWGJU/wbzNJ2AfQa4= github.com/elastic/go-sysinfo v1.13.1/go.mod h1:GKqR8bbMK/1ITnez9NIsIfXQr25aLhRJa7AfT8HpBFQ= -github.com/elastic/go-ucfg v0.8.6 h1:stUeyh2goTgGX+/wb9gzKvTv0YB0231LTpKUgCKj4U0= -github.com/elastic/go-ucfg v0.8.6/go.mod h1:4E8mPOLSUV9hQ7sgLEJ4bvt0KhMuDJa8joDT2QGAEKA= +github.com/elastic/go-ucfg v0.8.7 h1:/bKaN553LY3MsfEIz2XOEEs+tRw03TzJCARrnVPpOyc= +github.com/elastic/go-ucfg v0.8.7/go.mod h1:4E8mPOLSUV9hQ7sgLEJ4bvt0KhMuDJa8joDT2QGAEKA= github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0= github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a h1:8WfL/X6fK11iyX5t3Dd9dDMMNqPfEZNc//JsWGIhEgQ= From c29075eea0e7a21500b15634ffa160080eb1a4e9 Mon Sep 17 00:00:00 2001 From: Dan Kortschak <90160302+efd6@users.noreply.github.com> Date: Tue, 19 Mar 2024 17:11:43 +1030 Subject: [PATCH 036/313] x-pack/filebeat/input/{cel,httpjson}: fix PEM key validation (#38405) Previously the validation was attempting to parse the PEM text as a key and was also attempting to parse the data as the wrong kind of key. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/cel/config_auth.go | 6 ++- x-pack/filebeat/input/cel/config_okta_auth.go | 20 ++++++--- x-pack/filebeat/input/cel/config_test.go | 41 +++++++++++++++++++ x-pack/filebeat/input/httpjson/config_auth.go | 8 ++-- .../input/httpjson/config_okta_auth.go | 20 ++++++--- x-pack/filebeat/input/httpjson/config_test.go | 41 +++++++++++++++++++ 7 files changed, 120 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 1422424e423..1cd8999245b 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -102,6 +102,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Fix duplicated addition of regexp extension in CEL input. {pull}38181[38181] - Fix the incorrect values generated by the uri_parts processor. {pull}38216[38216] - Fix HTTPJSON handling of empty object bodies in POST requests. {issue}33961[33961] {pull}38290[38290] +- Fix PEM key validation for CEL and HTTPJSON inputs. {pull}38405[38405] *Heartbeat* diff --git a/x-pack/filebeat/input/cel/config_auth.go b/x-pack/filebeat/input/cel/config_auth.go index d6b35d633e6..ac187f4ffa1 100644 --- a/x-pack/filebeat/input/cel/config_auth.go +++ b/x-pack/filebeat/input/cel/config_auth.go @@ -6,7 +6,6 @@ package cel import ( "context" - "crypto/x509" "encoding/json" "errors" "fmt" @@ -341,7 +340,10 @@ func (o *oAuth2Config) validateOktaProvider() error { } // jwk_pem if o.OktaJWKPEM != "" { - _, err := x509.ParsePKCS1PrivateKey([]byte(o.OktaJWKPEM)) + _, err := pemPKCS8PrivateKey([]byte(o.OktaJWKPEM)) + if err != nil { + return fmt.Errorf("okta validation error: %w", err) + } return err } // jwk_file diff --git a/x-pack/filebeat/input/cel/config_okta_auth.go b/x-pack/filebeat/input/cel/config_okta_auth.go index 74366afd3d5..0f18b12e66c 100644 --- a/x-pack/filebeat/input/cel/config_okta_auth.go +++ b/x-pack/filebeat/input/cel/config_okta_auth.go @@ -12,6 +12,7 @@ import ( "encoding/base64" "encoding/json" "encoding/pem" + "errors" "fmt" "math/big" "net/http" @@ -160,17 +161,24 @@ func (i *base64int) UnmarshalJSON(b []byte) error { } func generateOktaJWTPEM(pemdata string, cnf *oauth2.Config) (string, error) { - blk, rest := pem.Decode([]byte(pemdata)) - if rest := bytes.TrimSpace(rest); len(rest) != 0 { - return "", fmt.Errorf("PEM text has trailing data: %s", rest) - } - key, err := x509.ParsePKCS8PrivateKey(blk.Bytes) + key, err := pemPKCS8PrivateKey([]byte(pemdata)) if err != nil { return "", err } return signJWT(cnf, key) } +func pemPKCS8PrivateKey(pemdata []byte) (any, error) { + blk, rest := pem.Decode(pemdata) + if rest := bytes.TrimSpace(rest); len(rest) != 0 { + return nil, fmt.Errorf("PEM text has trailing data: %d bytes", len(rest)) + } + if blk == nil { + return nil, errors.New("no PEM data") + } + return x509.ParsePKCS8PrivateKey(blk.Bytes) +} + // signJWT creates a JWT token using required claims and sign it with the // private key. func signJWT(cnf *oauth2.Config, key any) (string, error) { @@ -182,7 +190,7 @@ func signJWT(cnf *oauth2.Config, key any) (string, error) { Expiration(now.Add(time.Hour)). Build() if err != nil { - return "", err + return "", fmt.Errorf("failed to create token: %w", err) } signedToken, err := jwt.Sign(tok, jwt.WithKey(jwa.RS256, key)) if err != nil { diff --git a/x-pack/filebeat/input/cel/config_test.go b/x-pack/filebeat/input/cel/config_test.go index 7acf74df08c..0a686df099c 100644 --- a/x-pack/filebeat/input/cel/config_test.go +++ b/x-pack/filebeat/input/cel/config_test.go @@ -539,6 +539,47 @@ var oAuth2ValidationTests = []struct { }, }, }, + { + name: "okta_successful_pem_oauth2_validation", + input: map[string]interface{}{ + "auth.oauth2": map[string]interface{}{ + "provider": "okta", + "client.id": "a_client_id", + "token_url": "localhost", + "scopes": []string{"foo"}, + "okta.jwk_pem": ` +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCOuef3HMRhohVT +5kSoAJgV+atpDjkwTwkOq+ImnbBlv75GaApG90w8VpjXjhqN/1KJmwfyrKiquiMq +OPu+o/672Dys5rUAaWSbT7wRF1GjLDDZrM0GHRdV4DGxM/LKI8I5yE1Mx3EzV+D5 +ZLmcRc5U4oEoMwtGpr0zRZ7uUr6a28UQwcUsVIPItc1/9rERlo1WTv8dcaj4ECC3 +2Sc0y/F+9XqwJvLd4Uv6ckzP0Sv4tbDA+7jpD9MneAIUiZ4LVj2cwbBd+YRY6jXx +MkevcCSmSX60clBY1cIFkw1DYHqtdHEwAQcQHLGMoi72xRP2qrdzIPsaTKVYoHVo +WA9vADdHAgMBAAECggEAIlx7jjCsztyYyeQsL05FTzUWoWo9NnYwtgmHnshkCXsK +MiUmJEOxZO1sSqj5l6oakupyFWigCspZYPbrFNCiqVK7+NxqQzkccY/WtT6p9uDS +ufUyPwCN96zMCd952lSVlBe3FH8Hr9a+YQxw60CbFjCZ67WuR0opTsi6JKJjJSDb +TQQZ4qJR97D05I1TgfmO+VO7G/0/dDaNHnnlYz0AnOgZPSyvrU2G5cYye4842EMB +ng81xjHD+xp55JNui/xYkhmYspYhrB2KlEjkKb08OInUjBeaLEAgA1r9yOHsfV/3 +DQzDPRO9iuqx5BfJhdIqUB1aifrye+sbxt9uMBtUgQKBgQDVdfO3GYT+ZycOQG9P +QtdMn6uiSddchVCGFpk331u6M6yafCKjI/MlJDl29B+8R5sVsttwo8/qnV/xd3cn +pY14HpKAsE4l6/Ciagzoj+0NqfPEDhEzbo8CyArcd7pSxt3XxECAfZe2+xivEPHe +gFO60vSFjFtvlLRMDMOmqX3kYQKBgQCrK1DISyQTnD6/axsgh2/ESOmT7n+JRMx/ +YzA7Lxu3zGzUC8/sRDa1C41t054nf5ZXJueYLDSc4kEAPddzISuCLxFiTD2FQ75P +lHWMgsEzQObDm4GPE9cdKOjoAvtAJwbvZcjDa029CDx7aCaDzbNvdmplZ7EUrznR +55U8Wsm8pwKBgBytxTmzZwfbCgdDJvFKNKzpwuCB9TpL+v6Y6Kr2Clfg+26iAPFU +MiWqUUInGGBuamqm5g6jI5sM28gQWeTsvC4IRXyes1Eq+uCHSQax15J/Y+3SSgNT +9kjUYYkvWMwoRcPobRYWSZze7XkP2L8hFJ7EGvAaZGqAWxzgliS9HtnhAoGAONZ/ +UqMw7Zoac/Ga5mhSwrj7ZvXxP6Gqzjofj+eKqrOlB5yMhIX6LJATfH6iq7cAMxxm +Fu/G4Ll4oB3o5wACtI3wldV/MDtYfJBtoCTjBqPsfNOsZ9hMvBATlsc2qwzKjsAb +tFhzTevoOYpSD75EcSS/G8Ec2iN9bagatBnpl00CgYBVqAOFZelNfP7dj//lpk8y +EUAw7ABOq0S9wkpFWTXIVPoBQUipm3iAUqGNPmvr/9ShdZC9xeu5AwKram4caMWJ +ExRhcDP1hFM6CdmSkIYEgBKvN9N0O4Lx1ba34gk74Hm65KXxokjJHOC0plO7c7ok +LNV/bIgMHOMoxiGrwyjAhg== +-----END PRIVATE KEY----- +`, + }, + }, + }, } func TestConfigOauth2Validation(t *testing.T) { diff --git a/x-pack/filebeat/input/httpjson/config_auth.go b/x-pack/filebeat/input/httpjson/config_auth.go index d05592dfa50..b25bab03dd3 100644 --- a/x-pack/filebeat/input/httpjson/config_auth.go +++ b/x-pack/filebeat/input/httpjson/config_auth.go @@ -6,7 +6,6 @@ package httpjson import ( "context" - "crypto/x509" "encoding/json" "errors" "fmt" @@ -309,8 +308,11 @@ func (o *oAuth2Config) validateOktaProvider() error { } // jwk_pem if o.OktaJWKPEM != "" { - _, err := x509.ParsePKCS1PrivateKey([]byte(o.OktaJWKPEM)) - return err + _, err := pemPKCS8PrivateKey([]byte(o.OktaJWKPEM)) + if err != nil { + return fmt.Errorf("okta validation error: %w", err) + } + return nil } // jwk_file if o.OktaJWKFile != "" { diff --git a/x-pack/filebeat/input/httpjson/config_okta_auth.go b/x-pack/filebeat/input/httpjson/config_okta_auth.go index c2b4289d9c9..8d2a8415c2e 100644 --- a/x-pack/filebeat/input/httpjson/config_okta_auth.go +++ b/x-pack/filebeat/input/httpjson/config_okta_auth.go @@ -12,6 +12,7 @@ import ( "encoding/base64" "encoding/json" "encoding/pem" + "errors" "fmt" "math/big" "net/http" @@ -158,17 +159,24 @@ func (i *base64int) UnmarshalJSON(b []byte) error { } func generateOktaJWTPEM(pemdata string, cnf *oauth2.Config) (string, error) { - blk, rest := pem.Decode([]byte(pemdata)) - if rest := bytes.TrimSpace(rest); len(rest) != 0 { - return "", fmt.Errorf("PEM text has trailing data: %s", rest) - } - key, err := x509.ParsePKCS8PrivateKey(blk.Bytes) + key, err := pemPKCS8PrivateKey([]byte(pemdata)) if err != nil { return "", err } return signJWT(cnf, key) } +func pemPKCS8PrivateKey(pemdata []byte) (any, error) { + blk, rest := pem.Decode(pemdata) + if rest := bytes.TrimSpace(rest); len(rest) != 0 { + return nil, fmt.Errorf("PEM text has trailing data: %d bytes", len(rest)) + } + if blk == nil { + return nil, errors.New("no PEM data") + } + return x509.ParsePKCS8PrivateKey(blk.Bytes) +} + // signJWT creates a JWT token using required claims and sign it with the private key. func signJWT(cnf *oauth2.Config, key any) (string, error) { now := time.Now() @@ -179,7 +187,7 @@ func signJWT(cnf *oauth2.Config, key any) (string, error) { Expiration(now.Add(time.Hour)). Build() if err != nil { - return "", err + return "", fmt.Errorf("failed to create token: %w", err) } signedToken, err := jwt.Sign(tok, jwt.WithKey(jwa.RS256, key)) if err != nil { diff --git a/x-pack/filebeat/input/httpjson/config_test.go b/x-pack/filebeat/input/httpjson/config_test.go index d88c6ac4a62..910510b6e9c 100644 --- a/x-pack/filebeat/input/httpjson/config_test.go +++ b/x-pack/filebeat/input/httpjson/config_test.go @@ -499,6 +499,47 @@ func TestConfigOauth2Validation(t *testing.T) { }, }, }, + { + name: "okta successful pem oauth2 validation", + input: map[string]interface{}{ + "auth.oauth2": map[string]interface{}{ + "provider": "okta", + "client.id": "a_client_id", + "token_url": "localhost", + "scopes": []string{"foo"}, + "okta.jwk_pem": ` +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCOuef3HMRhohVT +5kSoAJgV+atpDjkwTwkOq+ImnbBlv75GaApG90w8VpjXjhqN/1KJmwfyrKiquiMq +OPu+o/672Dys5rUAaWSbT7wRF1GjLDDZrM0GHRdV4DGxM/LKI8I5yE1Mx3EzV+D5 +ZLmcRc5U4oEoMwtGpr0zRZ7uUr6a28UQwcUsVIPItc1/9rERlo1WTv8dcaj4ECC3 +2Sc0y/F+9XqwJvLd4Uv6ckzP0Sv4tbDA+7jpD9MneAIUiZ4LVj2cwbBd+YRY6jXx +MkevcCSmSX60clBY1cIFkw1DYHqtdHEwAQcQHLGMoi72xRP2qrdzIPsaTKVYoHVo +WA9vADdHAgMBAAECggEAIlx7jjCsztyYyeQsL05FTzUWoWo9NnYwtgmHnshkCXsK +MiUmJEOxZO1sSqj5l6oakupyFWigCspZYPbrFNCiqVK7+NxqQzkccY/WtT6p9uDS +ufUyPwCN96zMCd952lSVlBe3FH8Hr9a+YQxw60CbFjCZ67WuR0opTsi6JKJjJSDb +TQQZ4qJR97D05I1TgfmO+VO7G/0/dDaNHnnlYz0AnOgZPSyvrU2G5cYye4842EMB +ng81xjHD+xp55JNui/xYkhmYspYhrB2KlEjkKb08OInUjBeaLEAgA1r9yOHsfV/3 +DQzDPRO9iuqx5BfJhdIqUB1aifrye+sbxt9uMBtUgQKBgQDVdfO3GYT+ZycOQG9P +QtdMn6uiSddchVCGFpk331u6M6yafCKjI/MlJDl29B+8R5sVsttwo8/qnV/xd3cn +pY14HpKAsE4l6/Ciagzoj+0NqfPEDhEzbo8CyArcd7pSxt3XxECAfZe2+xivEPHe +gFO60vSFjFtvlLRMDMOmqX3kYQKBgQCrK1DISyQTnD6/axsgh2/ESOmT7n+JRMx/ +YzA7Lxu3zGzUC8/sRDa1C41t054nf5ZXJueYLDSc4kEAPddzISuCLxFiTD2FQ75P +lHWMgsEzQObDm4GPE9cdKOjoAvtAJwbvZcjDa029CDx7aCaDzbNvdmplZ7EUrznR +55U8Wsm8pwKBgBytxTmzZwfbCgdDJvFKNKzpwuCB9TpL+v6Y6Kr2Clfg+26iAPFU +MiWqUUInGGBuamqm5g6jI5sM28gQWeTsvC4IRXyes1Eq+uCHSQax15J/Y+3SSgNT +9kjUYYkvWMwoRcPobRYWSZze7XkP2L8hFJ7EGvAaZGqAWxzgliS9HtnhAoGAONZ/ +UqMw7Zoac/Ga5mhSwrj7ZvXxP6Gqzjofj+eKqrOlB5yMhIX6LJATfH6iq7cAMxxm +Fu/G4Ll4oB3o5wACtI3wldV/MDtYfJBtoCTjBqPsfNOsZ9hMvBATlsc2qwzKjsAb +tFhzTevoOYpSD75EcSS/G8Ec2iN9bagatBnpl00CgYBVqAOFZelNfP7dj//lpk8y +EUAw7ABOq0S9wkpFWTXIVPoBQUipm3iAUqGNPmvr/9ShdZC9xeu5AwKram4caMWJ +ExRhcDP1hFM6CdmSkIYEgBKvN9N0O4Lx1ba34gk74Hm65KXxokjJHOC0plO7c7ok +LNV/bIgMHOMoxiGrwyjAhg== +-----END PRIVATE KEY----- +`, + }, + }, + }, } for _, c := range cases { From 51fb8b267ec9513dee87bd5963e7b3b7314c538d Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 19 Mar 2024 04:50:09 -0400 Subject: [PATCH 037/313] Add Saved Object name to Kibana audit logging (#38307) * Initial commit to add name to beats * adding PR * Output from go/mage commands? * changing test data * updating log offset * log offset of last event --------- Co-authored-by: Milton Hultgren Co-authored-by: sharbuz <87968844+sharbuz@users.noreply.github.com> --- CHANGELOG.next.asciidoc | 1 + filebeat/docs/fields.asciidoc | 11 ++ filebeat/module/kibana/_meta/fields.yml | 4 + .../kibana/audit/test/test-audit-814.log | 5 + .../test/test-audit-814.log-expected.json | 171 ++++++++++++++++++ filebeat/module/kibana/fields.go | 2 +- 6 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 filebeat/module/kibana/audit/test/test-audit-814.log create mode 100644 filebeat/module/kibana/audit/test/test-audit-814.log-expected.json diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 1cd8999245b..f494dd0eaf7 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -157,6 +157,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d *Filebeat* +- Adding Saved Object name field to Kibana audit logs {pull}38307[38307] - Update SQL input documentation regarding Oracle DSNs {pull}37590[37590] - add documentation for decode_xml_wineventlog processor field mappings. {pull}32456[32456] - httpjson input: Add request tracing logger. {issue}32402[32402] {pull}32412[32412] diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index ddc887d246f..4cf4b99b5e7 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -86793,6 +86793,17 @@ example: 6295bdd0-0a0e-11e7-825f-6748cda7d858 -- +*`kibana.saved_object.name`*:: ++ +-- +The name of the saved object associated with this event. + +type: keyword + +example: my-saved-object + +-- + *`kibana.add_to_spaces`*:: + -- diff --git a/filebeat/module/kibana/_meta/fields.yml b/filebeat/module/kibana/_meta/fields.yml index d4e664ade58..aed9252122c 100644 --- a/filebeat/module/kibana/_meta/fields.yml +++ b/filebeat/module/kibana/_meta/fields.yml @@ -27,6 +27,10 @@ description: "The id of the saved object associated with this event." example: "6295bdd0-0a0e-11e7-825f-6748cda7d858" type: keyword + - name: saved_object.name + description: "The name of the saved object associated with this event." + example: "my-saved-object" + type: keyword - name: add_to_spaces description: "The set of space ids that a saved object was shared to." example: "['default', 'marketing']" diff --git a/filebeat/module/kibana/audit/test/test-audit-814.log b/filebeat/module/kibana/audit/test/test-audit-814.log new file mode 100644 index 00000000000..97127ddcbf0 --- /dev/null +++ b/filebeat/module/kibana/audit/test/test-audit-814.log @@ -0,0 +1,5 @@ +{"event":{"action":"saved_object_create","category":["database"],"outcome":"unknown","type":["access"]},"kibana":{"saved_object":{"id":"fleet-default-settings","type":"ingest_manager_settings"}},"labels":{"application":"elastic/fleet"},"service":{"node":{"roles":["background_tasks","ui"]}},"ecs":{"version":"8.6.1"},"@timestamp":"2023-06-19T15:18:47.298+00:00","message":"User is accessing ingest_manager_settings [id=fleet-default-settings]","log":{"level":"INFO","logger":"plugins.security.audit.ecs"},"process":{"pid":7},"trace":{"id":"809d3449277aba205a3ac539d23dbf7e"},"transaction":{"id":"49a38064b0f1dc1e"}} +{"event":{"action":"saved_object_create","category":["database"],"outcome":"unknown","type":["access"]},"kibana":{"saved_object":{"id":"a09a5397-7b9a-5a73-a622-e29f4c635658","type":"ingest-outputs"}},"labels":{"application":"elastic/fleet"},"service":{"node":{"roles":["background_tasks","ui"]}},"ecs":{"version":"8.6.1"},"@timestamp":"2023-06-19T15:18:48.987+00:00","message":"User is accessing ingest-outputs [id=a09a5397-7b9a-5a73-a622-e29f4c635658]","log":{"level":"INFO","logger":"plugins.security.audit.ecs"},"process":{"pid":7},"trace":{"id":"809d3449277aba205a3ac539d23dbf7e"},"transaction":{"id":"49a38064b0f1dc1e"}} +{"event":{"action":"saved_object_create","category":["database"],"outcome":"unknown","type":["access"]},"kibana":{"saved_object":{"id":"synthetics","type":"epm-packages"}},"labels":{"application":"elastic/fleet"},"service":{"node":{"roles":["background_tasks","ui"]}},"ecs":{"version":"8.6.1"},"@timestamp":"2023-06-19T15:18:53.426+00:00","message":"User is accessing epm-packages [id=synthetics]","log":{"level":"INFO","logger":"plugins.security.audit.ecs"},"process":{"pid":7},"trace":{"id":"809d3449277aba205a3ac539d23dbf7e"},"transaction":{"id":"49a38064b0f1dc1e"}} +{"event":{"action":"http_request","category":["web"],"outcome":"unknown"},"http":{"request":{"method":"get"}},"url":{"domain":"kibana","path":"/api/features","port":5601,"scheme":"http"},"user":{"name":"elastic","roles":["superuser"]},"kibana":{"space_id":"default"},"trace":{"id":"e2792f3f-4cf1-4f6d-b4eb-5b491724c295"},"client":{"ip":"172.22.0.2"},"service":{"node":{"roles":["background_tasks","ui"]}},"ecs":{"version":"8.6.1"},"@timestamp":"2023-06-19T15:19:18.882+00:00","message":"User is requesting [/api/features] endpoint","log":{"level":"INFO","logger":"plugins.security.audit.ecs"},"process":{"pid":7},"transaction":{"id":"cf44f52888b9ec5a"}} +{"event":{"action":"saved_object_create","category":["database"],"outcome":"unknown","type":["access"]},"kibana":{"saved_object":{"id":"abcde-fghijk","type":"ingest_manager_settings","name":"fleet-object-name"}},"labels":{"application":"elastic/fleet"},"service":{"node":{"roles":["background_tasks","ui"]}},"ecs":{"version":"8.6.1"},"@timestamp":"2023-06-19T16:18:47.298+00:00","message":"User is accessing ingest_manager_settings [id=fleet-default-settings]","log":{"level":"INFO","logger":"plugins.security.audit.ecs"},"process":{"pid":7},"trace":{"id":"809d3449277aba205a3ac539d23dbf7e"},"transaction":{"id":"49a38064b0f1dc1e"}} diff --git a/filebeat/module/kibana/audit/test/test-audit-814.log-expected.json b/filebeat/module/kibana/audit/test/test-audit-814.log-expected.json new file mode 100644 index 00000000000..9ab233fea60 --- /dev/null +++ b/filebeat/module/kibana/audit/test/test-audit-814.log-expected.json @@ -0,0 +1,171 @@ +[ + { + "@timestamp": "2023-06-19T15:18:47.298+00:00", + "event.action": "saved_object_create", + "event.category": [ + "database" + ], + "event.dataset": "kibana.audit", + "event.kind": "event", + "event.module": "kibana", + "event.outcome": "unknown", + "event.timezone": "-02:00", + "event.type": [ + "access" + ], + "fileset.name": "audit", + "input.type": "log", + "kibana.saved_object.id": "fleet-default-settings", + "kibana.saved_object.type": "ingest_manager_settings", + "labels.application": "elastic/fleet", + "log.level": "INFO", + "log.logger": "plugins.security.audit.ecs", + "log.offset": 0, + "message": "User is accessing ingest_manager_settings [id=fleet-default-settings]", + "process.pid": 7, + "service.node.roles": [ + "background_tasks", + "ui" + ], + "service.type": "kibana", + "trace.id": "809d3449277aba205a3ac539d23dbf7e", + "transaction.id": "49a38064b0f1dc1e" + }, + { + "@timestamp": "2023-06-19T15:18:48.987+00:00", + "event.action": "saved_object_create", + "event.category": [ + "database" + ], + "event.dataset": "kibana.audit", + "event.kind": "event", + "event.module": "kibana", + "event.outcome": "unknown", + "event.timezone": "-02:00", + "event.type": [ + "access" + ], + "fileset.name": "audit", + "input.type": "log", + "kibana.saved_object.id": "a09a5397-7b9a-5a73-a622-e29f4c635658", + "kibana.saved_object.type": "ingest-outputs", + "labels.application": "elastic/fleet", + "log.level": "INFO", + "log.logger": "plugins.security.audit.ecs", + "log.offset": 616, + "message": "User is accessing ingest-outputs [id=a09a5397-7b9a-5a73-a622-e29f4c635658]", + "process.pid": 7, + "service.node.roles": [ + "background_tasks", + "ui" + ], + "service.type": "kibana", + "trace.id": "809d3449277aba205a3ac539d23dbf7e", + "transaction.id": "49a38064b0f1dc1e" + }, + { + "@timestamp": "2023-06-19T15:18:53.426+00:00", + "event.action": "saved_object_create", + "event.category": [ + "database" + ], + "event.dataset": "kibana.audit", + "event.kind": "event", + "event.module": "kibana", + "event.outcome": "unknown", + "event.timezone": "-02:00", + "event.type": [ + "access" + ], + "fileset.name": "audit", + "input.type": "log", + "kibana.saved_object.id": "synthetics", + "kibana.saved_object.type": "epm-packages", + "labels.application": "elastic/fleet", + "log.level": "INFO", + "log.logger": "plugins.security.audit.ecs", + "log.offset": 1242, + "message": "User is accessing epm-packages [id=synthetics]", + "process.pid": 7, + "service.node.roles": [ + "background_tasks", + "ui" + ], + "service.type": "kibana", + "trace.id": "809d3449277aba205a3ac539d23dbf7e", + "transaction.id": "49a38064b0f1dc1e" + }, + { + "@timestamp": "2023-06-19T15:19:18.882+00:00", + "client.ip": "172.22.0.2", + "event.action": "http_request", + "event.category": [ + "web" + ], + "event.dataset": "kibana.audit", + "event.kind": "event", + "event.module": "kibana", + "event.outcome": "unknown", + "event.timezone": "-02:00", + "fileset.name": "audit", + "http.request.method": "get", + "input.type": "log", + "kibana.space_id": "default", + "log.level": "INFO", + "log.logger": "plugins.security.audit.ecs", + "log.offset": 1812, + "message": "User is requesting [/api/features] endpoint", + "process.pid": 7, + "related.user": [ + "elastic" + ], + "service.node.roles": [ + "background_tasks", + "ui" + ], + "service.type": "kibana", + "trace.id": "e2792f3f-4cf1-4f6d-b4eb-5b491724c295", + "transaction.id": "cf44f52888b9ec5a", + "url.domain": "kibana", + "url.path": "/api/features", + "url.port": 5601, + "url.scheme": "http", + "user.name": "elastic", + "user.roles": [ + "superuser" + ] + }, + { + "@timestamp": "2023-06-19T16:18:47.298+00:00", + "event.action": "saved_object_create", + "event.category": [ + "database" + ], + "event.dataset": "kibana.audit", + "event.kind": "event", + "event.module": "kibana", + "event.outcome": "unknown", + "event.timezone": "-02:00", + "event.type": [ + "access" + ], + "fileset.name": "audit", + "input.type": "log", + "kibana.saved_object.id": "abcde-fghijk", + "kibana.saved_object.type": "ingest_manager_settings", + "kibana.saved_object.name": "fleet-object-name", + "labels.application": "elastic/fleet", + "log.level": "INFO", + "log.logger": "plugins.security.audit.ecs", + "log.offset": 2466, + "message": "User is accessing ingest_manager_settings [id=fleet-default-settings]", + "process.pid": 7, + "service.node.roles": [ + "background_tasks", + "ui" + ], + "service.type": "kibana", + "trace.id": "809d3449277aba205a3ac539d23dbf7e", + "transaction.id": "49a38064b0f1dc1e" + } +] diff --git a/filebeat/module/kibana/fields.go b/filebeat/module/kibana/fields.go index 504d1f6283e..fce968bbf78 100644 --- a/filebeat/module/kibana/fields.go +++ b/filebeat/module/kibana/fields.go @@ -32,5 +32,5 @@ func init() { // AssetKibana returns asset data. // This is the base64 encoded zlib format compressed contents of module/kibana. func AssetKibana() string { - return "eJy8ls9ymzAQxu9+ih1ffCmM7fhffMilzaHT6a23TodZowVUC4lIi928fUfguGBj4rhpOe7ut/v7hJAIYEvPa9jKDWocALBkRWsY1oHhAMCSInS0htTnBbnYyoKl0Wt4GADAQQtfjSgVDQASSUq4dZULQGNOa3BkdzKmUBtBoTWKXJUG4OeC1p5hb6xoSY5If8pSa8riEOkA8U9NAYmxUKB1UqfwpeZTJnXhoa6J2MZ0ThodSXFMnUz6lhF8/gQmAc4ISkf2RQTonIklMgnYS86AM+mAdqQ5hEeMM08gNSAz5QWDJVcqduBDUGr5VNKxlRRhA4B+YV5Ub2UyvaPZfLEMaHW/CSZTcRfgbL4IZtPFYjKbLGfj8XjYUJ6vbsttgTH1eB16s1K8mK3K+1wOO5kFJVgqfgMW7khEZvOTYg59aS+fLzgSeiXUyhtA0WUbg1bciHr9Qv4V5mJ6P98IMQ7GOKZgMqFlsJrOk2CxnK1igUuxmq+ud4BCRGyi6t26Xn5H7A3Uu0AKB5whA7bd7NGBy9CSADYXDHwfHbbE6AOMcrRbYqnT0Y/roQUpYooSa/J3JbeUGx/yjf8ZPJackWYZo0eMCmt2UpDtddDWwIvmbPPg4Yzp2z8bdDKe3Mz76gd5ibX6UG8GvpnXEqq8F/hRoWMZO0IbZ6f4lbzqDPtMxhkkpUqkUiSuYtfIckfXwytjtmXxZuhadoD9P5zpWW3zdj6DfmgkoHElg5KaXPO2O72bm2MZU9dKXOJ8laBNkfr/BN887BzrGJneb+7H0lrSXLf1J1MN0j07J8bO0fW5dZKqg1E33MX+oaWnMCMUZLuXN1H+r0WT6GvhrmzxOwAA//+jaglP" + return "eJy8ls1y2kAMx+88hYYLl9oDhK9wyKXNodPprbdOxyO8sr1lvevsytC8fWdtQm0wDqFpOUr6Sz8tQiiALT2vYSs3qHEAwJIVrWFYG4YDAEuK0NEaUu8X5GIrC5ZGr+FhAAAHLXw1olQ0AEgkKeHWlS8AjTmtwZHdyZhCbQSF1ihylRuAnwtae4a9saIlOSL9CUutKYuDpQPEf2oKSIyFAq2TOoUvNZ8yqQsPcU3ENqZz0uhIiqPrpNK3jODzJzAJcEZQOrIvIkDnTCyRScBecgacSQe0I80hPGKceQKpAZkpLxgsuVKxA2+CUsunko6ppAgbAPQL86L6VibTO5rNF8uAVvebYDIVdwHO5otgNl0sJrPJcjYej4cN5fnrtrotMKaeXoe+WSlemq3C+7ocdjILSrBU/AYs3JGIzOYnxRz60F4+H3Ak9EqolTeAoss2Bq24EfX6h/wrzMX0fr4RYhyMcUzBZELLYDWdJ8FiOVvFApdiNV/d2IE39fbgA96ni/w5qBIEdYLrgVGIiE1UDaPrhXXEnrUeWykccIYM2AbfowOXoSUBbC6wfh8dZnj0AUY52i2x1Onox/XQghQxRYk1+buSW8qNN/nE/wweS85Is4zRI0aFNTspyPZ20NbAi+ZsTvCwFPtGZYNOxpObeV/dIJdYq81yM/DNvJZQ5b3Ajwody9gR2jg7xa/k9Q91n8k4g6RUiVSKxFXsGlnu6Hp4Zcy2LN4MXcsOsP+HMz2LbZ4TZ9APDQc0bghQUpNr/j2fHhPNsoypazkucb5K0KZI/WHjk4edZR0j0/vV/VhaS5rrtH4z1SDdtXNi7Cxd760TV22MuuEu5g8tPYUZoSDb/byJ8meWJtGXwl2Z4ncAAAD//zz3P1Q=" } From 1b13c648feef40302b7f23f20f0d8780e48800cd Mon Sep 17 00:00:00 2001 From: Taylor Swanson <90622908+taylor-swanson@users.noreply.github.com> Date: Tue, 19 Mar 2024 08:00:44 -0500 Subject: [PATCH 038/313] [filebeat] Deprecate syslog input (#38277) - The syslog input has been deprecated in favor of the syslog processor. --- CHANGELOG.next.asciidoc | 1 + filebeat/docs/inputs/input-syslog.asciidoc | 4 ++++ filebeat/input/syslog/input.go | 13 ++++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f494dd0eaf7..a1b1f8e84eb 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -273,6 +273,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d *Filebeat* +- Deprecate `syslog` input in favor of `syslog` processor. {issue}37555[37555] {pull}38277[38277] *Heartbeat* diff --git a/filebeat/docs/inputs/input-syslog.asciidoc b/filebeat/docs/inputs/input-syslog.asciidoc index e43eabea378..3e0555d03b9 100644 --- a/filebeat/docs/inputs/input-syslog.asciidoc +++ b/filebeat/docs/inputs/input-syslog.asciidoc @@ -3,6 +3,10 @@ [id="{beatname_lc}-input-{type}"] === Syslog input +deprecated:[8.14.0] + +The syslog input is deprecated. Please use the <> processor for processing syslog messages. + ++++ Syslog ++++ diff --git a/filebeat/input/syslog/input.go b/filebeat/input/syslog/input.go index 702472794dd..c91158c0f89 100644 --- a/filebeat/input/syslog/input.go +++ b/filebeat/input/syslog/input.go @@ -28,6 +28,7 @@ import ( "github.com/elastic/beats/v7/filebeat/input" "github.com/elastic/beats/v7/filebeat/inputsource" "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common/cfgwarn" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" @@ -85,6 +86,8 @@ var ( "local6", "local7", } + + deprecatedNotificationOnce sync.Once ) func init() { @@ -112,6 +115,10 @@ func NewInput( ) (input.Input, error) { log := logp.NewLogger("syslog") + deprecatedNotificationOnce.Do(func() { + cfgwarn.Deprecate("", "Syslog input. Use Syslog processor instead.") + }) + out, err := outlet.Connect(cfg) if err != nil { return nil, err @@ -180,7 +187,7 @@ func GetCbByConfig(cfg config, forwarder *harvester.Forwarder, log *logp.Logger) case syslogFormatRFC5424: return func(data []byte, metadata inputsource.NetworkMetadata) { ev := parseAndCreateEvent5424(data, metadata, cfg.Timezone.Location(), log) - forwarder.Send(ev) + _ = forwarder.Send(ev) } case syslogFormatAuto: @@ -191,7 +198,7 @@ func GetCbByConfig(cfg config, forwarder *harvester.Forwarder, log *logp.Logger) } else { ev = parseAndCreateEvent3164(data, metadata, cfg.Timezone.Location(), log) } - forwarder.Send(ev) + _ = forwarder.Send(ev) } case syslogFormatRFC3164: break @@ -199,7 +206,7 @@ func GetCbByConfig(cfg config, forwarder *harvester.Forwarder, log *logp.Logger) return func(data []byte, metadata inputsource.NetworkMetadata) { ev := parseAndCreateEvent3164(data, metadata, cfg.Timezone.Location(), log) - forwarder.Send(ev) + _ = forwarder.Send(ev) } } From 45d5142abf39c0141ad9e75a993f7f8288da4bf1 Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Tue, 19 Mar 2024 17:06:43 +0200 Subject: [PATCH 039/313] Migrate xpack auditbeat pipeline (#38349) * migrate xpack-winlogbeat pipeline * add generate_xpack_winlogbeat_pipeline.sh and cleanup setenv.sh * full test * migrate xpack-auditbeat pipeline * add rpm-devel * add librpm-dev for ubuntu * debug * debug * debug * debug * debug * debug * debug python * debug python * debug python * debug python * debug python * add default ununtu image for tests * revert test changes * revert test changes * revert test changes --- .buildkite/hooks/pre-command | 2 +- .buildkite/scripts/common.sh | 33 +++- .../generate_xpack_auditbeat_pipeline.sh | 166 ++++++++++++++++++ .buildkite/scripts/setenv.sh | 2 +- .../x-pack/pipeline.xpack.auditbeat.yml | 60 ++++++- 5 files changed, 251 insertions(+), 12 deletions(-) create mode 100755 .buildkite/scripts/generate_xpack_auditbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 465b0a7e85e..7be1f965230 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -34,7 +34,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then source .buildkite/scripts/setenv.sh if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 3b9bd5e1585..b6170070836 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -11,6 +11,7 @@ GITHUB_PR_LABELS=${GITHUB_PR_LABELS:-""} ONLY_DOCS=${ONLY_DOCS:-"true"} OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" +# define if needed run the whole pipeline for the particular beat [ -z "${run_libbeat+x}" ] && run_libbeat="$(buildkite-agent meta-data get run_libbeat --default "false")" [ -z "${run_metricbeat+x}" ] && run_metricbeat="$(buildkite-agent meta-data get run_metricbeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" @@ -19,16 +20,25 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" [ -z "${run_xpack_winlogbeat+x}" ] && run_xpack_winlogbeat="$(buildkite-agent meta-data get run_xpack_winlogbeat --default "false")" +[ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" + +# define if needed run ARM platform-specific tests for the particular beat [ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" +[ -z "${run_xpack_auditbeat_arm_tests+x}" ] && run_xpack_auditbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_arm_tests --default "false")" +[ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" +[ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" + +# define if needed run MacOS platform-specific tests for the particular beat [ -z "${run_metricbeat_macos_tests+x}" ] && run_metricbeat_macos_tests="$(buildkite-agent meta-data get run_metricbeat_macos_tests --default "false")" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" -[ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" -[ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" +[ -z "${run_xpack_auditbeat_macos_tests+x}" ] && run_xpack_auditbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" -[ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" +# define if needed run cloud-specific tests for the particular beat +[ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" + metricbeat_changeset=( "^metricbeat/.*" ) @@ -45,6 +55,10 @@ winlogbeat_changeset=( "^winlogbeat/.*" ) +xpack_auditbeat_changeset=( + "^x-pack/auditbeat/.*" + ) + xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) @@ -109,6 +123,9 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-winlogbeat") BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} ;; + "beats-xpack-auditbeat") + BEAT_CHANGESET_REFERENCE=${xpack_auditbeat_changeset[@]} + ;; "beats-xpack-dockerlogbeat") BEAT_CHANGESET_REFERENCE=${xpack_dockerlogbeat_changeset[@]} ;; @@ -287,10 +304,10 @@ with_dependencies() { if [ "${platform_type}" == "Linux" ]; then if [ "${linuxType}" = "ubuntu" ]; then sudo apt-get update - sudo apt-get install -y libsystemd-dev libpcap-dev + sudo apt-get install -y libsystemd-dev libpcap-dev librpm-dev elif [ "${linuxType}" = "rhel" ]; then # sudo dnf update -y - sudo dnf install -y systemd-devel + sudo dnf install -y systemd-devel rpm-devel wget https://mirror.stream.centos.org/9-stream/CRB/${arch_type}/os/Packages/libpcap-devel-1.10.0-4.el9.${arch_type}.rpm #TODO: move this step to our own image sudo dnf install -y libpcap-devel-1.10.0-4.el9.${arch_type}.rpm #TODO: move this step to our own image fi @@ -371,7 +388,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -382,7 +399,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -515,7 +532,7 @@ if are_paths_changed "${packaging_changeset[@]}" ; then export PACKAGING_CHANGES="true" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-auditbeat-pipeline" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" fi diff --git a/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh new file mode 100755 index 00000000000..f29e6152e60 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh @@ -0,0 +1,166 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-auditbeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + + - label: ":linux: Ubuntu Unit (MODULE) Tests" + key: "mandatory-linux-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + env: + MODULE: $MODULE + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":rhel: RHEL-9 Unit Tests" + key: "mandatory-rhel9-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_RHEL9_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "mandatory-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_2016}" + - "${IMAGE_WIN_2022}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h + + - group: "Extended Windows Tests" + key: "extended-win-tests" + steps: + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "extended-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +if are_conditions_met_arm_tests || are_conditions_met_macos_tests ; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: + +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + - label: ":linux: ARM Ubuntu Unit Tests" + key: "extended-arm64-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 29acf0ec170..e40f858f1c4 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -56,7 +56,7 @@ exportVars() { fi } -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then exportVars export RACE_DETECTOR="true" export TEST_COVERAGE="true" diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index 2343eb6a4dd..d88bf2a4ff0 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -1,6 +1,62 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json name: "beats-xpack-auditbeat" +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_WIN_10: "family/general-windows-10" + IMAGE_WIN_11: "family/general-windows-11" + IMAGE_WIN_2016: "family/core-windows-2016" + IMAGE_WIN_2019: "family/core-windows-2019" + IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/auditbeat" + steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Auditbeat - run_xpack_auditbeat" + key: "run_xpack_auditbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Auditbeat - run_xpack_auditbeat_macos_tests" + key: "run_xpack_auditbeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Auditbeat - run_xpack_auditbeat_arm_tests" + key: "run_xpack_auditbeat_arm_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack auditbeat pipeline" + key: "xpack-auditbeat-pipeline" + command: ".buildkite/scripts/generate_xpack_auditbeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" From 15d6fd7dcaab8ed83f87eb4e9e0ad884a3f10244 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 16:12:14 +0000 Subject: [PATCH 040/313] build(deps): bump github.com/elastic/elastic-agent-client/v7 from 7.8.0 to 7.8.1 (#38412) * build(deps): bump github.com/elastic/elastic-agent-client/v7 Bumps [github.com/elastic/elastic-agent-client/v7](https://github.com/elastic/elastic-agent-client) from 7.8.0 to 7.8.1. - [Release notes](https://github.com/elastic/elastic-agent-client/releases) - [Commits](https://github.com/elastic/elastic-agent-client/compare/v7.8.0...v7.8.1) --- updated-dependencies: - dependency-name: github.com/elastic/elastic-agent-client/v7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- NOTICE.txt | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index ca91143b72c..2ce6e0e15c9 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -12524,11 +12524,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-a -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-client/v7 -Version: v7.8.0 +Version: v7.8.1 Licence type (autodetected): Elastic -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-client/v7@v7.8.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-client/v7@v7.8.1/LICENSE.txt: ELASTIC LICENSE AGREEMENT @@ -25852,11 +25852,11 @@ Contents of probable licence file $GOMODCACHE/google.golang.org/grpc@v1.58.3/LIC -------------------------------------------------------------------------------- Dependency : google.golang.org/protobuf -Version: v1.32.0 +Version: v1.33.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/google.golang.org/protobuf@v1.32.0/LICENSE: +Contents of probable licence file $GOMODCACHE/google.golang.org/protobuf@v1.33.0/LICENSE: Copyright (c) 2018 The Go Authors. All rights reserved. diff --git a/go.mod b/go.mod index a54aa532781..afe0c99b6d2 100644 --- a/go.mod +++ b/go.mod @@ -69,7 +69,7 @@ require ( github.com/dustin/go-humanize v1.0.1 github.com/eapache/go-resiliency v1.2.0 github.com/eclipse/paho.mqtt.golang v1.3.5 - github.com/elastic/elastic-agent-client/v7 v7.8.0 + github.com/elastic/elastic-agent-client/v7 v7.8.1 github.com/elastic/go-concert v0.2.0 github.com/elastic/go-libaudit/v2 v2.5.0 github.com/elastic/go-licenser v0.4.1 @@ -164,7 +164,7 @@ require ( google.golang.org/api v0.128.0 google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 // indirect google.golang.org/grpc v1.58.3 - google.golang.org/protobuf v1.32.0 + google.golang.org/protobuf v1.33.0 gopkg.in/inf.v0 v0.9.1 gopkg.in/jcmturner/aescts.v1 v1.0.1 // indirect gopkg.in/jcmturner/dnsutils.v1 v1.0.1 // indirect diff --git a/go.sum b/go.sum index 11a7f4c415b..47d892296a0 100644 --- a/go.sum +++ b/go.sum @@ -675,8 +675,8 @@ github.com/elastic/ebpfevents v0.4.0 h1:M80eAeJnzvGQgU9cjJqkjFca9pjM3aq/TuZxJeom github.com/elastic/ebpfevents v0.4.0/go.mod h1:o21z5xup/9dK8u0Hg9bZRflSqqj1Zu5h2dg2hSTcUPQ= github.com/elastic/elastic-agent-autodiscover v0.6.7 h1:+KVjltN0rPsBrU8b156gV4lOTBgG/vt0efFCFARrf3g= github.com/elastic/elastic-agent-autodiscover v0.6.7/go.mod h1:hFeFqneS2r4jD0/QzGkrNk0YVdN0JGh7lCWdsH7zcI4= -github.com/elastic/elastic-agent-client/v7 v7.8.0 h1:GHFzDJIWpdgI0qDk5EcqbQJGvwTsl2E2vQK3/xe+MYQ= -github.com/elastic/elastic-agent-client/v7 v7.8.0/go.mod h1:ihtjqJzYiIltlRhNruaSSc0ogxIhqPD5hOMKq16cI1s= +github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= +github.com/elastic/elastic-agent-client/v7 v7.8.1/go.mod h1:axl1nkdqc84YRFkeJGD9jExKNPUrOrzf3DFo2m653nY= github.com/elastic/elastic-agent-libs v0.7.5 h1:4UMqB3BREvhwecYTs/L23oQp1hs/XUkcunPlmTZn5yg= github.com/elastic/elastic-agent-libs v0.7.5/go.mod h1:pGMj5myawdqu+xE+WKvM5FQzKQ/MonikkWOzoFTJxaU= github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 h1:sb+25XJn/JcC9/VL8HX4r4QXSUq4uTNzGS2kxOE7u1U= @@ -2682,8 +2682,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 4a3da808e4760eedf8016a2d7d876bb3bfa40aa9 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Tue, 19 Mar 2024 12:47:21 -0600 Subject: [PATCH 041/313] [AWS] Support VPC endpoint for aws-s3 input SQS queue url (#38189) --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/awss3/input.go | 24 +++++++++++--- x-pack/filebeat/input/awss3/input_test.go | 39 ++++------------------- 3 files changed, 28 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index a1b1f8e84eb..0b33bffc31a 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -205,6 +205,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Update CEL mito extensions to v1.9.0 to add keys/values helper. {pull}37971[37971] - Add logging for cache processor file reads and writes. {pull}38052[38052] - Add parseDateInTZ value template for the HTTPJSON input {pull}37738[37738] +- Support VPC endpoint for aws-s3 input SQS queue url. {pull}38189[38189] - Improve rate limit handling by HTTPJSON {issue}36207[36207] {pull}38161[38161] {pull}38237[38237] - Add parseDateInTZ value template for the HTTPJSON input. {pull}37738[37738] - Add support for complex event objects in the HTTP Endpoint input. {issue}37910[37910] {pull}38193[38193] diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index 0b33ae042f9..5fc1c1f0491 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -317,18 +317,20 @@ func (in *s3Input) createS3Lister(ctx v2.Context, cancelCtx context.Context, cli return s3Poller, nil } -var errBadQueueURL = errors.New("QueueURL is not in format: https://sqs.{REGION_ENDPOINT}.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME}") +var errBadQueueURL = errors.New("QueueURL is not in format: https://sqs.{REGION_ENDPOINT}.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME} or https://{VPC_ENDPOINT}.sqs.{REGION_ENDPOINT}.vpce.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME}") func getRegionFromQueueURL(queueURL string, endpoint, defaultRegion string) (region string, err error) { // get region from queueURL - // Example: https://sqs.us-east-1.amazonaws.com/627959692251/test-s3-logs + // Example for sqs queue: https://sqs.us-east-1.amazonaws.com/12345678912/test-s3-logs + // Example for vpce: https://vpce-test.sqs.us-east-1.vpce.amazonaws.com/12345678912/sqs-queue u, err := url.Parse(queueURL) if err != nil { return "", fmt.Errorf(queueURL + " is not a valid URL") } if (u.Scheme == "https" || u.Scheme == "http") && u.Host != "" { queueHostSplit := strings.SplitN(u.Host, ".", 3) - if len(queueHostSplit) == 3 { + // check for sqs queue url + if len(queueHostSplit) == 3 && queueHostSplit[0] == "sqs" { if queueHostSplit[2] == endpoint || (endpoint == "" && strings.HasPrefix(queueHostSplit[2], "amazonaws.")) { region = queueHostSplit[1] if defaultRegion != "" && region != defaultRegion { @@ -336,7 +338,21 @@ func getRegionFromQueueURL(queueURL string, endpoint, defaultRegion string) (reg } return region, nil } - } else if defaultRegion != "" { + } + + // check for vpce url + queueHostSplitVPC := strings.SplitN(u.Host, ".", 5) + if len(queueHostSplitVPC) == 5 && queueHostSplitVPC[1] == "sqs" { + if queueHostSplitVPC[4] == endpoint || (endpoint == "" && strings.HasPrefix(queueHostSplitVPC[4], "amazonaws.")) { + region = queueHostSplitVPC[2] + if defaultRegion != "" && region != defaultRegion { + return defaultRegion, regionMismatchError{queueURLRegion: region, defaultRegion: defaultRegion} + } + return region, nil + } + } + + if defaultRegion != "" { return defaultRegion, nil } } diff --git a/x-pack/filebeat/input/awss3/input_test.go b/x-pack/filebeat/input/awss3/input_test.go index 8a195eb3084..abc9f5c9a6a 100644 --- a/x-pack/filebeat/input/awss3/input_test.go +++ b/x-pack/filebeat/input/awss3/input_test.go @@ -5,7 +5,6 @@ package awss3 import ( - "errors" "testing" "github.com/stretchr/testify/assert" @@ -76,40 +75,16 @@ func TestGetRegionFromQueueURL(t *testing.T) { wantErr: errBadQueueURL, }, { - name: "abc.xyz_and_domain_with_different_endpoint", - queueURL: "https://sqs.us-east-1.abc.xyz/627959692251/test-s3-logs", - endpoint: "googlecloud.com", - wantErr: errBadQueueURL, - }, - { - name: "mismatch_regions_no_default", - queueURL: "https://sqs.us-east-1.amazonaws.com/627959692251/test-s3-logs", + name: "vpce_endpoint", + queueURL: "https://vpce-test.sqs.us-east-2.vpce.amazonaws.com/12345678912/sqs-queue", deflt: "", - want: "us-east-1", - }, - { - name: "mismatch_regions", - queueURL: "https://sqs.us-east-1.amazonaws.com/627959692251/test-s3-logs", - deflt: "ap-west-1", - want: "ap-west-1", - wantErr: regionMismatchError{queueURLRegion: "us-east-1", defaultRegion: "ap-west-1"}, - }, - { - name: "localstack", - queueURL: "http://localhost:4566/000000000000/filebeat-s3-integtest-d9clk9", - deflt: "localstack", - want: "localstack", + want: "us-east-2", }, { - name: "localstack_sns", - queueURL: "http://localhost:4566/000000000000/filebeat-s3-integtest-sns-d9clk9", - deflt: "localstack_sns", - want: "localstack_sns", - }, - { - name: "invalid_queue_url", - queueURL: ":foo", - wantErr: errors.New(":foo is not a valid URL"), + name: "vpce_endpoint_with_endpoint", + queueURL: "https://vpce-test.sqs.us-east-1.vpce.amazonaws.com/12345678912/sqs-queue", + endpoint: "amazonaws.com", + want: "us-east-1", }, } From 08e59363b6410f1701c9902858b3c0149556ff10 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Tue, 19 Mar 2024 15:53:53 -0400 Subject: [PATCH 042/313] auditbeat - skip TestExeObjParser on CI (#38441) TestExeObjParser fails on Windows because Defender is removing the testdata that is required by the test. This adds a conditional test skip for CI when those files are missing. Closes #38211 --- auditbeat/module/file_integrity/exeobjparser_test.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/auditbeat/module/file_integrity/exeobjparser_test.go b/auditbeat/module/file_integrity/exeobjparser_test.go index 0958305afb8..f8ca144e4ed 100644 --- a/auditbeat/module/file_integrity/exeobjparser_test.go +++ b/auditbeat/module/file_integrity/exeobjparser_test.go @@ -19,8 +19,11 @@ package file_integrity import ( + "errors" "fmt" + "io/fs" "math" + "os" "reflect" "strconv" "testing" @@ -44,6 +47,12 @@ func TestExeObjParser(t *testing.T) { t.Skip("skipping test on garbled PE file: see https://github.com/elastic/beats/issues/35705") } + if _, ci := os.LookupEnv("CI"); ci { + if _, err := os.Stat(target); err != nil && errors.Is(fs.ErrNotExist, err) { + t.Skip("skipping test because target binary was not found: see https://github.com/elastic/beats/issues/38211") + } + } + got := make(mapstr.M) err := exeObjParser(nil).Parse(got, target) if err != nil { From d64ce48f566954b68eb84711ec1c61dffcf2899d Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Tue, 19 Mar 2024 18:02:34 -0400 Subject: [PATCH 043/313] go.mod - bump to github.com/lestrrat-go/jwx/v2 v2.0.21 (#38346) Bump to github.com/lestrrat-go/jwx/v2 v2.0.21. Filebeat is unaffected by CVE-2024-28122 which affected prior versions of github.com/lestrrat-go/jwx/v2, it does not use the affected github.com/lestrrat-go/jwx/v2/jwe package nor does process any JWE tokens. --- NOTICE.txt | 28 ++++++++++++++-------------- go.mod | 17 +++++++++-------- go.sum | 27 ++++++++++++++------------- 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 2ce6e0e15c9..f2e34a27813 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -20695,11 +20695,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/lestrrat-go/jwx/v2 -Version: v2.0.19 +Version: v2.0.21 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/lestrrat-go/jwx/v2@v2.0.19/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/lestrrat-go/jwx/v2@v2.0.21/LICENSE: The MIT License (MIT) @@ -24984,11 +24984,11 @@ THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : golang.org/x/crypto -Version: v0.17.0 +Version: v0.21.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/crypto@v0.17.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/crypto@v0.21.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. @@ -25095,11 +25095,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/net -Version: v0.19.0 +Version: v0.21.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/net@v0.19.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/net@v0.21.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. @@ -25206,11 +25206,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/sys -Version: v0.15.0 +Version: v0.18.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/sys@v0.15.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/sys@v0.18.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. @@ -46531,11 +46531,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/lestrrat-go/httprc -Version: v1.0.4 +Version: v1.0.5 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/lestrrat-go/httprc@v1.0.4/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/lestrrat-go/httprc@v1.0.5/LICENSE: MIT License @@ -50813,11 +50813,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/stretchr/objx -Version: v0.5.0 +Version: v0.5.2 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/stretchr/objx@v0.5.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/stretchr/objx@v0.5.2/LICENSE: The MIT License @@ -53894,11 +53894,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/term -Version: v0.15.0 +Version: v0.18.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/term@v0.15.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/term@v0.18.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. diff --git a/go.mod b/go.mod index afe0c99b6d2..cb6342852c4 100644 --- a/go.mod +++ b/go.mod @@ -139,7 +139,7 @@ require ( github.com/shopspring/decimal v1.3.1 // indirect github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/tsg/go-daemon v0.0.0-20200207173439-e704b93fd89b github.com/ugorji/go/codec v1.1.8 github.com/urso/sderr v0.0.0-20210525210834-52b04e8f5c71 @@ -151,13 +151,13 @@ require ( go.uber.org/atomic v1.11.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.26.0 - golang.org/x/crypto v0.17.0 + golang.org/x/crypto v0.21.0 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 golang.org/x/mod v0.14.0 - golang.org/x/net v0.19.0 + golang.org/x/net v0.21.0 golang.org/x/oauth2 v0.10.0 golang.org/x/sync v0.5.0 - golang.org/x/sys v0.15.0 + golang.org/x/sys v0.18.0 golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 golang.org/x/tools v0.16.0 @@ -218,7 +218,7 @@ require ( github.com/gorilla/mux v1.8.0 github.com/gorilla/websocket v1.4.2 github.com/icholy/digest v0.1.22 - github.com/lestrrat-go/jwx/v2 v2.0.19 + github.com/lestrrat-go/jwx/v2 v2.0.21 github.com/otiai10/copy v1.12.0 github.com/pierrec/lz4/v4 v4.1.18 github.com/pkg/xattr v0.4.9 @@ -330,7 +330,7 @@ require ( github.com/kylelemons/godebug v1.1.0 // indirect github.com/lestrrat-go/blackmagic v1.0.2 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect - github.com/lestrrat-go/httprc v1.0.4 // indirect + github.com/lestrrat-go/httprc v1.0.5 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect @@ -359,7 +359,7 @@ require ( github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/tklauser/go-sysconf v0.3.10 // indirect github.com/tklauser/numcpus v0.4.0 // indirect github.com/urso/diag v0.0.0-20200210123136-21b3cc8eb797 // indirect @@ -376,7 +376,7 @@ require ( go.opentelemetry.io/otel/metric v1.21.0 // indirect go.opentelemetry.io/otel/trace v1.21.0 // indirect golang.org/x/exp v0.0.0-20231127185646-65229373498e // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/term v0.18.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect @@ -420,6 +420,7 @@ replace ( github.com/google/gopacket => github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a github.com/insomniacslk/dhcp => github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 // indirect github.com/snowflakedb/gosnowflake => github.com/snowflakedb/gosnowflake v1.6.19 + github.com/stretchr/testify v1.9.0 => github.com/stretchr/testify v1.8.4 // Temporary fix for https://github.com/elastic/beats/pull/38436. github.com/tonistiigi/fifo => github.com/containerd/fifo v0.0.0-20190816180239-bda0ff6ed73c k8s.io/kubernetes v1.13.0 => k8s.io/kubernetes v1.24.15 ) diff --git a/go.sum b/go.sum index 47d892296a0..709e6f12d53 100644 --- a/go.sum +++ b/go.sum @@ -1379,12 +1379,12 @@ github.com/lestrrat-go/blackmagic v1.0.2 h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N github.com/lestrrat-go/blackmagic v1.0.2/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= -github.com/lestrrat-go/httprc v1.0.4 h1:bAZymwoZQb+Oq8MEbyipag7iSq6YIga8Wj6GOiJGdI8= -github.com/lestrrat-go/httprc v1.0.4/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= +github.com/lestrrat-go/httprc v1.0.5 h1:bsTfiH8xaKOJPrg1R+E3iE/AWZr/x0Phj9PBTG/OLUk= +github.com/lestrrat-go/httprc v1.0.5/go.mod h1:mwwz3JMTPBjHUkkDv/IGJ39aALInZLrhBp0X7KGUZlo= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx/v2 v2.0.19 h1:ekv1qEZE6BVct89QA+pRF6+4pCpfVrOnEJnTnT4RXoY= -github.com/lestrrat-go/jwx/v2 v2.0.19/go.mod h1:l3im3coce1lL2cDeAjqmaR+Awx+X8Ih+2k8BuHNJ4CU= +github.com/lestrrat-go/jwx/v2 v2.0.21 h1:jAPKupy4uHgrHFEdjVjNkUgoBKtVDgrQPB/h55FHrR0= +github.com/lestrrat-go/jwx/v2 v2.0.21/go.mod h1:09mLW8zto6bWL9GbwnqAli+ArLf+5M33QLQPDggkUWM= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1833,8 +1833,9 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -2067,8 +2068,8 @@ golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2210,8 +2211,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2379,8 +2380,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2390,8 +2391,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 4df595ff4f416586404d2040eb1e918c3e3af96d Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 20 Mar 2024 07:53:19 +0100 Subject: [PATCH 044/313] Make log messages in the file scanner less noisy (#38421) * Demote warning about empty files to the Debug level * Demote warnings about files too small to the Debug level * Improve wording, so it does not sound like an error --- CHANGELOG-developer.next.asciidoc | 1 + filebeat/input/filestream/fswatch.go | 13 +++++++-- filebeat/input/filestream/fswatch_test.go | 34 +++++++++++++++++++---- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 14901ead1bc..b617edfaf04 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -181,6 +181,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. - Elide retryable HTTP client construction in Filebeat HTTPJSON and CEL inputs if not needed. {pull}36916[36916] - Allow assignment of packetbeat protocols to interfaces. {issue}36574[36564] {pull}36852[36852] - Add Active Directory entity collector for Filebeat entity analytics. {pull}37854[37854] +- Make logs for empty and small files less noisy when using fingerprint file identity in filestream. {pull}38421[38421] ==== Deprecated diff --git a/filebeat/input/filestream/fswatch.go b/filebeat/input/filestream/fswatch.go index 454a5b428b0..c51d850bbd2 100644 --- a/filebeat/input/filestream/fswatch.go +++ b/filebeat/input/filestream/fswatch.go @@ -20,6 +20,7 @@ package filestream import ( "crypto/sha256" "encoding/hex" + "errors" "fmt" "hash" "io" @@ -45,6 +46,10 @@ const ( watcherDebugKey = "file_watcher" ) +var ( + errFileTooSmall = errors.New("file size is too small for ingestion") +) + type fileWatcherConfig struct { // Interval is the time between two scans. Interval time.Duration `config:"check_interval"` @@ -202,7 +207,7 @@ func (w *fileWatcher) watch(ctx unison.Canceler) { for path, fd := range newFilesByName { // no need to react on empty new files if fd.Info.Size() == 0 { - w.log.Warnf("file %q has no content yet, skipping", fd.Filename) + w.log.Debugf("file %q has no content yet, skipping", fd.Filename) delete(paths, path) continue } @@ -385,6 +390,10 @@ func (s *fileScanner) GetFiles() map[string]loginp.FileDescriptor { } fd, err := s.toFileDescriptor(&it) + if errors.Is(err, errFileTooSmall) { + s.log.Debugf("cannot start ingesting from file %q: %s", filename, err) + continue + } if err != nil { s.log.Warnf("cannot create a file descriptor for an ingest target %q: %s", filename, err) continue @@ -473,7 +482,7 @@ func (s *fileScanner) toFileDescriptor(it *ingestTarget) (fd loginp.FileDescript // we should not open the file if we know it's too small minSize := s.cfg.Fingerprint.Offset + s.cfg.Fingerprint.Length if fileSize < minSize { - return fd, fmt.Errorf("filesize of %q is %d bytes, expected at least %d bytes for fingerprinting", fd.Filename, fileSize, minSize) + return fd, fmt.Errorf("filesize of %q is %d bytes, expected at least %d bytes for fingerprinting: %w", fd.Filename, fileSize, minSize, errFileTooSmall) } file, err := os.Open(it.originalFilename) diff --git a/filebeat/input/filestream/fswatch_test.go b/filebeat/input/filestream/fswatch_test.go index 6c9d88b858e..3fab8bfd2bd 100644 --- a/filebeat/input/filestream/fswatch_test.go +++ b/filebeat/input/filestream/fswatch_test.go @@ -276,17 +276,20 @@ scanner: err := os.WriteFile(filename, nil, 0777) require.NoError(t, err) - t.Run("issues a warning in logs", func(t *testing.T) { - var lastWarning string + t.Run("issues a debug message in logs", func(t *testing.T) { expLogMsg := fmt.Sprintf("file %q has no content yet, skipping", filename) require.Eventually(t, func() bool { - logs := logp.ObserverLogs().FilterLevelExact(logp.WarnLevel.ZapLevel()).TakeAll() + logs := logp.ObserverLogs().FilterLevelExact(logp.DebugLevel.ZapLevel()).TakeAll() if len(logs) == 0 { return false } - lastWarning = logs[len(logs)-1].Message - return strings.Contains(lastWarning, expLogMsg) - }, 100*time.Millisecond, 10*time.Millisecond, "required a warning message %q but got %q", expLogMsg, lastWarning) + for _, l := range logs { + if strings.Contains(l.Message, expLogMsg) { + return true + } + } + return false + }, 100*time.Millisecond, 10*time.Millisecond, "required a debug message %q but never found", expLogMsg) }) t.Run("emits a create event once something is written to the empty file", func(t *testing.T) { @@ -797,6 +800,25 @@ scanner: }) } + t.Run("does not issue warnings when file is too small", func(t *testing.T) { + cfgStr := ` +scanner: + fingerprint: + enabled: true + offset: 0 + length: 1024 +` + logp.DevelopmentSetup(logp.ToObserverOutput()) + + // this file is 128 bytes long + paths := []string{filepath.Join(dir, undersizedBasename)} + s := createScannerWithConfig(t, paths, cfgStr) + files := s.GetFiles() + require.Empty(t, files) + logs := logp.ObserverLogs().FilterLevelExact(logp.WarnLevel.ZapLevel()).TakeAll() + require.Empty(t, logs, "there must be no warning logs for files too small") + }) + t.Run("returns error when creating scanner with a fingerprint too small", func(t *testing.T) { cfgStr := ` scanner: From 87b16ce0cc5f8087a2f4ad3b79e98be1e180e4f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Fred=C3=A9n?= <109296772+jfreden@users.noreply.github.com> Date: Wed, 20 Mar 2024 07:54:00 +0100 Subject: [PATCH 045/313] Add new slowlog fields to filebeat (#38295) --- CHANGELOG.next.asciidoc | 1 + filebeat/docs/fields.asciidoc | 55 ++++++++ filebeat/module/elasticsearch/fields.go | 2 +- .../elasticsearch/slowlog/_meta/fields.yml | 20 +++ .../slowlog/ingest/pipeline-json.yml | 20 +++ .../es814_index_indexing_slowlog-json.log | 4 + ...ex_indexing_slowlog-json.log-expected.json | 130 ++++++++++++++++++ .../test/es814_index_search_slowlog-json.log | 3 + ...ndex_search_slowlog-json.log-expected.json | 104 ++++++++++++++ 9 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log create mode 100644 filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log-expected.json create mode 100644 filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log create mode 100644 filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log-expected.json diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 0b33bffc31a..8a24d42a08b 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -209,6 +209,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Improve rate limit handling by HTTPJSON {issue}36207[36207] {pull}38161[38161] {pull}38237[38237] - Add parseDateInTZ value template for the HTTPJSON input. {pull}37738[37738] - Add support for complex event objects in the HTTP Endpoint input. {issue}37910[37910] {pull}38193[38193] +- Parse more fields from Elasticsearch slowlogs {pull}38295[38295] *Auditbeat* diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index 4cf4b99b5e7..5b03cdfb0a9 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -50730,6 +50730,61 @@ type: keyword -- +*`elasticsearch.slowlog.user.realm`*:: ++ +-- +The authentication realm the user was authenticated against + +type: keyword + +example: default_file + +-- + +*`elasticsearch.slowlog.user.effective.realm`*:: ++ +-- +The authentication realm the effective user was authenticated against + +type: keyword + +example: default_file + +-- + +*`elasticsearch.slowlog.auth.type`*:: ++ +-- +The authentication type used to authenticate the user. One of TOKEN | REALM | API_KEY + +type: keyword + +example: REALM + +-- + +*`elasticsearch.slowlog.apikey.id`*:: ++ +-- +The id of the API key used + +type: keyword + +example: WzL_kb6VSvOhAq0twPvHOQ + +-- + +*`elasticsearch.slowlog.apikey.name`*:: ++ +-- +The name of the API key used + +type: keyword + +example: my-api-key + +-- + [[exported-fields-envoyproxy]] == Envoyproxy fields diff --git a/filebeat/module/elasticsearch/fields.go b/filebeat/module/elasticsearch/fields.go index 525d0c50eac..4f27bd426ff 100644 --- a/filebeat/module/elasticsearch/fields.go +++ b/filebeat/module/elasticsearch/fields.go @@ -32,5 +32,5 @@ func init() { // AssetElasticsearch returns asset data. // This is the base64 encoded zlib format compressed contents of module/elasticsearch. func AssetElasticsearch() string { - return "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" + return "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" } diff --git a/filebeat/module/elasticsearch/slowlog/_meta/fields.yml b/filebeat/module/elasticsearch/slowlog/_meta/fields.yml index fa251b39789..0055a7df364 100644 --- a/filebeat/module/elasticsearch/slowlog/_meta/fields.yml +++ b/filebeat/module/elasticsearch/slowlog/_meta/fields.yml @@ -54,3 +54,23 @@ - name: source description: Source of document that was indexed type: keyword + - name: user.realm + description: The authentication realm the user was authenticated against + example: "default_file" + type: keyword + - name: user.effective.realm + description: The authentication realm the effective user was authenticated against + example: "default_file" + type: keyword + - name: auth.type + description: The authentication type used to authenticate the user. One of TOKEN | REALM | API_KEY + example: REALM + type: keyword + - name: apikey.id + description: The id of the API key used + example: "WzL_kb6VSvOhAq0twPvHOQ" + type: keyword + - name: apikey.name + description: The name of the API key used + example: "my-api-key" + type: keyword diff --git a/filebeat/module/elasticsearch/slowlog/ingest/pipeline-json.yml b/filebeat/module/elasticsearch/slowlog/ingest/pipeline-json.yml index 614c9f7aa43..8a3c8e4f6f0 100644 --- a/filebeat/module/elasticsearch/slowlog/ingest/pipeline-json.yml +++ b/filebeat/module/elasticsearch/slowlog/ingest/pipeline-json.yml @@ -10,3 +10,23 @@ processors: - pipeline: if: 'ctx.message.contains("ecs.version")' name: '{< IngestPipeline "pipeline-json-8" >}' + - rename: + field: auth.type + target_field: elasticsearch.slowlog.auth.type + ignore_missing: true + - rename: + field: user.realm + target_field: elasticsearch.slowlog.user.realm + ignore_missing: true + - rename: + field: user.effective.realm + target_field: elasticsearch.slowlog.user.effective.realm + ignore_missing: true + - rename: + field: apikey.id + target_field: elasticsearch.slowlog.user.apikey.id + ignore_missing: true + - rename: + field: apikey.name + target_field: elasticsearch.slowlog.user.apikey.name + ignore_missing: true diff --git a/filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log b/filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log new file mode 100644 index 00000000000..920951b8caf --- /dev/null +++ b/filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log @@ -0,0 +1,4 @@ +{"@timestamp":"2024-03-13T10:34:33.289Z", "log.level": "WARN", "auth.type":"REALM","elasticsearch.slowlog.id":"2","elasticsearch.slowlog.message":"[my-index/stZSoQ12R56VZORRItBKjA]","elasticsearch.slowlog.source":"{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}","elasticsearch.slowlog.took":"12.3ms","elasticsearch.slowlog.took_millis":"12","user.name":"elastic","user.realm":"reserved" , "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.index_indexing_slowlog","process.thread.name":"elasticsearch[runTask-0][write][T#7]","log.logger":"index.indexing.slowlog.index","elasticsearch.cluster.uuid":"0d2MZYNKR7Wqr2U6Cvpp7g","elasticsearch.node.id":"a8BUD2RfQSu4aqtpePX7BA","elasticsearch.node.name":"runTask-0","elasticsearch.cluster.name":"runTask"} +{"@timestamp":"2024-03-13T10:34:36.139Z", "log.level": "WARN", "auth.type":"REALM","elasticsearch.slowlog.id":"3","elasticsearch.slowlog.message":"[my-index/stZSoQ12R56VZORRItBKjA]","elasticsearch.slowlog.source":"{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}","elasticsearch.slowlog.took":"5.9ms","elasticsearch.slowlog.took_millis":"5","user.name":"elastic","user.realm":"reserved" , "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.index_indexing_slowlog","process.thread.name":"elasticsearch[runTask-0][write][T#9]","log.logger":"index.indexing.slowlog.index","elasticsearch.cluster.uuid":"0d2MZYNKR7Wqr2U6Cvpp7g","elasticsearch.node.id":"a8BUD2RfQSu4aqtpePX7BA","elasticsearch.node.name":"runTask-0","elasticsearch.cluster.name":"runTask"} +{"@timestamp":"2024-03-13T10:34:37.257Z", "log.level": "WARN", "auth.type":"REALM","elasticsearch.slowlog.id":"4","elasticsearch.slowlog.message":"[my-index/stZSoQ12R56VZORRItBKjA]","elasticsearch.slowlog.source":"{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}","elasticsearch.slowlog.took":"2.5ms","elasticsearch.slowlog.took_millis":"2","user.name":"elastic","user.realm":"reserved" , "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.index_indexing_slowlog","process.thread.name":"elasticsearch[runTask-0][write][T#12]","log.logger":"index.indexing.slowlog.index","elasticsearch.cluster.uuid":"0d2MZYNKR7Wqr2U6Cvpp7g","elasticsearch.node.id":"a8BUD2RfQSu4aqtpePX7BA","elasticsearch.node.name":"runTask-0","elasticsearch.cluster.name":"runTask"} +{"@timestamp":"2024-03-13T10:34:38.373Z", "log.level": "WARN", "auth.type":"REALM","elasticsearch.slowlog.id":"5","elasticsearch.slowlog.message":"[my-index/stZSoQ12R56VZORRItBKjA]","elasticsearch.slowlog.source":"{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}","elasticsearch.slowlog.took":"2.2ms","elasticsearch.slowlog.took_millis":"2","user.name":"elastic","user.realm":"reserved" , "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.index_indexing_slowlog","process.thread.name":"elasticsearch[runTask-0][write][T#3]","log.logger":"index.indexing.slowlog.index","elasticsearch.cluster.uuid":"0d2MZYNKR7Wqr2U6Cvpp7g","elasticsearch.node.id":"a8BUD2RfQSu4aqtpePX7BA","elasticsearch.node.name":"runTask-0","elasticsearch.cluster.name":"runTask"} diff --git a/filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log-expected.json b/filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log-expected.json new file mode 100644 index 00000000000..b24a197b41c --- /dev/null +++ b/filebeat/module/elasticsearch/slowlog/test/es814_index_indexing_slowlog-json.log-expected.json @@ -0,0 +1,130 @@ +[ + { + "@timestamp": "2024-03-13T10:34:33.289Z", + "log.level": "WARN", + "log.offset": 0, + "event.type": "info", + "event.kind": "event", + "fileset.name": "slowlog", + "elasticsearch.slowlog.auth.type": "REALM", + "elasticsearch.slowlog.id": "2", + "elasticsearch.index.id": "stZSoQ12R56VZORRItBKjA", + "elasticsearch.index.name": "my-index", + "message": "[my-index/stZSoQ12R56VZORRItBKjA]", + "elasticsearch.slowlog.source": "{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}", + "elasticsearch.slowlog.took": "12.3ms", + "host.id": "a8BUD2RfQSu4aqtpePX7BA", + "input.type": "log", + "event.category": "database", + "user.name": "elastic", + "elasticsearch.slowlog.user.realm": "reserved", + "ecs.version": "1.2.0", + "service.name": "ES_ECS", + "event.dataset": "elasticsearch.index_indexing_slowlog", + "event.duration": 12000000, + "event.module": "elasticsearch", + "process.thread.name": "elasticsearch[runTask-0][write][T#7]", + "log.logger": "index.indexing.slowlog.index", + "elasticsearch.cluster.uuid": "0d2MZYNKR7Wqr2U6Cvpp7g", + "elasticsearch.node.id": "a8BUD2RfQSu4aqtpePX7BA", + "elasticsearch.node.name": "runTask-0", + "elasticsearch.cluster.name": "runTask", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2024-03-13T10:34:36.139Z", + "log.level": "WARN", + "log.offset": 980, + "event.type": "info", + "event.kind": "event", + "fileset.name": "slowlog", + "elasticsearch.slowlog.auth.type": "REALM", + "elasticsearch.slowlog.id": "3", + "elasticsearch.index.id": "stZSoQ12R56VZORRItBKjA", + "elasticsearch.index.name": "my-index", + "message": "[my-index/stZSoQ12R56VZORRItBKjA]", + "elasticsearch.slowlog.source": "{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}", + "elasticsearch.slowlog.took": "5.9ms", + "host.id": "a8BUD2RfQSu4aqtpePX7BA", + "input.type": "log", + "event.category": "database", + "user.name": "elastic", + "elasticsearch.slowlog.user.realm": "reserved", + "ecs.version": "1.2.0", + "service.name": "ES_ECS", + "event.dataset": "elasticsearch.index_indexing_slowlog", + "event.duration": 5000000, + "event.module": "elasticsearch", + "process.thread.name": "elasticsearch[runTask-0][write][T#9]", + "log.logger": "index.indexing.slowlog.index", + "elasticsearch.cluster.uuid": "0d2MZYNKR7Wqr2U6Cvpp7g", + "elasticsearch.node.id": "a8BUD2RfQSu4aqtpePX7BA", + "elasticsearch.node.name": "runTask-0", + "elasticsearch.cluster.name": "runTask", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2024-03-13T10:34:37.257Z", + "log.level": "WARN", + "log.offset": 1958, + "event.type": "info", + "event.kind": "event", + "fileset.name": "slowlog", + "elasticsearch.slowlog.auth.type": "REALM", + "elasticsearch.slowlog.id": "4", + "elasticsearch.index.id": "stZSoQ12R56VZORRItBKjA", + "elasticsearch.index.name": "my-index", + "message": "[my-index/stZSoQ12R56VZORRItBKjA]", + "elasticsearch.slowlog.source": "{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}", + "elasticsearch.slowlog.took": "2.5ms", + "host.id": "a8BUD2RfQSu4aqtpePX7BA", + "input.type": "log", + "event.category": "database", + "user.name": "elastic", + "elasticsearch.slowlog.user.realm": "reserved", + "ecs.version": "1.2.0", + "service.name": "ES_ECS", + "event.dataset": "elasticsearch.index_indexing_slowlog", + "event.duration": 2000000, + "event.module": "elasticsearch", + "process.thread.name": "elasticsearch[runTask-0][write][T#12]", + "log.logger": "index.indexing.slowlog.index", + "elasticsearch.cluster.uuid": "0d2MZYNKR7Wqr2U6Cvpp7g", + "elasticsearch.node.id": "a8BUD2RfQSu4aqtpePX7BA", + "elasticsearch.node.name": "runTask-0", + "elasticsearch.cluster.name": "runTask", + "service.type": "elasticsearch" + }, + { + "@timestamp": "2024-03-13T10:34:38.373Z", + "log.level": "WARN", + "log.offset": 2937, + "event.type": "info", + "event.kind": "event", + "fileset.name": "slowlog", + "elasticsearch.slowlog.auth.type": "REALM", + "elasticsearch.slowlog.id": "5", + "elasticsearch.index.id": "stZSoQ12R56VZORRItBKjA", + "elasticsearch.index.name": "my-index", + "message": "[my-index/stZSoQ12R56VZORRItBKjA]", + "elasticsearch.slowlog.source": "{\\\"indices\\\":{\\\"field_security\\\":{\\\"grant\\\":\\\"read\\\",\\\"except\\\":\\\"confidential\\\"},\\\"names\\\":[\\\"foo\\\",\\\"bar\\\"],\\\"privileges\\\":\\\"admin\\\",\\\"query\\\":\\\"example\\\",\\\"allow_restricted_indices\\\":true}}", + "elasticsearch.slowlog.took": "2.2ms", + "host.id": "a8BUD2RfQSu4aqtpePX7BA", + "input.type": "log", + "event.category": "database", + "user.name": "elastic", + "elasticsearch.slowlog.user.realm": "reserved", + "ecs.version": "1.2.0", + "service.name": "ES_ECS", + "event.dataset": "elasticsearch.index_indexing_slowlog", + "event.duration": 2000000, + "event.module": "elasticsearch", + "process.thread.name": "elasticsearch[runTask-0][write][T#3]", + "log.logger": "index.indexing.slowlog.index", + "elasticsearch.cluster.uuid": "0d2MZYNKR7Wqr2U6Cvpp7g", + "elasticsearch.node.id": "a8BUD2RfQSu4aqtpePX7BA", + "elasticsearch.node.name": "runTask-0", + "elasticsearch.cluster.name": "runTask", + "service.type": "elasticsearch" + } +] diff --git a/filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log b/filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log new file mode 100644 index 00000000000..40e1a31906f --- /dev/null +++ b/filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log @@ -0,0 +1,3 @@ +{"@timestamp":"2024-03-13T09:42:41.350Z", "log.level": "WARN", "elasticsearch.slowlog.id":null,"elasticsearch.slowlog.message":"[my-index][0]","elasticsearch.slowlog.search_type":"QUERY_THEN_FETCH","elasticsearch.slowlog.source":"{\\\"query\\\":{\\\"match_none\\\":{\\\"boost\\\":1.0}}}","elasticsearch.slowlog.stats":"[]","elasticsearch.slowlog.took":"7.7ms","elasticsearch.slowlog.took_millis":7,"elasticsearch.slowlog.total_hits":"0 hits","elasticsearch.slowlog.total_shards":1 , "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.index_search_slowlog","process.thread.name":"elasticsearch[runTask-0][search][T#3]","log.logger":"index.search.slowlog.query","elasticsearch.cluster.uuid":"0d2MZYNKR7Wqr2U6Cvpp7g","elasticsearch.node.id":"a8BUD2RfQSu4aqtpePX7BA","elasticsearch.node.name":"runTask-0","elasticsearch.cluster.name":"runTask"} +{"@timestamp":"2024-03-13T09:43:56.663Z", "log.level": "WARN", "elasticsearch.slowlog.id":null,"elasticsearch.slowlog.message":"[my-index][0]","elasticsearch.slowlog.search_type":"QUERY_THEN_FETCH","elasticsearch.slowlog.source":"{\\\"query\\\":{\\\"match_none\\\":{\\\"boost\\\":1.0}}}","elasticsearch.slowlog.stats":"[]","elasticsearch.slowlog.took":"946.6micros","elasticsearch.slowlog.took_millis":0,"elasticsearch.slowlog.total_hits":"0 hits","elasticsearch.slowlog.total_shards":1 , "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.index_search_slowlog","process.thread.name":"elasticsearch[runTask-0][search][T#6]","log.logger":"index.search.slowlog.query","elasticsearch.cluster.uuid":"0d2MZYNKR7Wqr2U6Cvpp7g","elasticsearch.node.id":"a8BUD2RfQSu4aqtpePX7BA","elasticsearch.node.name":"runTask-0","elasticsearch.cluster.name":"runTask"} +{"@timestamp":"2024-03-13T09:44:20.724Z", "log.level": "WARN", "auth.type":"REALM","elasticsearch.slowlog.id":null,"elasticsearch.slowlog.message":"[my-index][0]","elasticsearch.slowlog.search_type":"QUERY_THEN_FETCH","elasticsearch.slowlog.source":"{\\\"query\\\":{\\\"match_none\\\":{\\\"boost\\\":1.0}}}","elasticsearch.slowlog.stats":"[]","elasticsearch.slowlog.took":"509.5micros","elasticsearch.slowlog.took_millis":0,"elasticsearch.slowlog.total_hits":"0 hits","elasticsearch.slowlog.total_shards":1,"user.name":"elastic","user.realm":"reserved" , "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.index_search_slowlog","process.thread.name":"elasticsearch[runTask-0][search][T#8]","log.logger":"index.search.slowlog.query","elasticsearch.cluster.uuid":"0d2MZYNKR7Wqr2U6Cvpp7g","elasticsearch.node.id":"a8BUD2RfQSu4aqtpePX7BA","elasticsearch.node.name":"runTask-0","elasticsearch.cluster.name":"runTask"} diff --git a/filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log-expected.json b/filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log-expected.json new file mode 100644 index 00000000000..651f6ce267f --- /dev/null +++ b/filebeat/module/elasticsearch/slowlog/test/es814_index_search_slowlog-json.log-expected.json @@ -0,0 +1,104 @@ +[ + { + "@timestamp": "2024-03-13T09:42:41.350Z", + "elasticsearch.cluster.name": "runTask", + "elasticsearch.cluster.uuid": "0d2MZYNKR7Wqr2U6Cvpp7g", + "elasticsearch.index.name": "my-index", + "elasticsearch.node.id": "a8BUD2RfQSu4aqtpePX7BA", + "elasticsearch.node.name": "runTask-0", + "elasticsearch.slowlog.id": null, + "elasticsearch.slowlog.search_type": "QUERY_THEN_FETCH", + "elasticsearch.slowlog.source": "{\\\"query\\\":{\\\"match_none\\\":{\\\"boost\\\":1.0}}}", + "elasticsearch.slowlog.took": "7.7ms", + "elasticsearch.slowlog.total_hits": "0 hits", + "elasticsearch.shard.id": "0", + "elasticsearch.slowlog.stats": "[]", + "elasticsearch.slowlog.total_shards": 1, + "event.dataset": "elasticsearch.index_search_slowlog", + "event.type": "info", + "event.kind": "event", + "fileset.name": "slowlog", + "host.id": "a8BUD2RfQSu4aqtpePX7BA", + "input.type": "log", + "log.level": "WARN", + "log.offset": 0, + "message": "[my-index][0]", + "service.type": "elasticsearch", + "event.category": "database", + "ecs.version": "1.2.0", + "service.name": "ES_ECS", + "event.duration": 7000000, + "event.module": "elasticsearch", + "process.thread.name": "elasticsearch[runTask-0][search][T#3]", + "log.logger": "index.search.slowlog.query" + }, + { + "@timestamp": "2024-03-13T09:43:56.663Z", + "elasticsearch.cluster.name": "runTask", + "elasticsearch.cluster.uuid": "0d2MZYNKR7Wqr2U6Cvpp7g", + "elasticsearch.index.name": "my-index", + "elasticsearch.node.id": "a8BUD2RfQSu4aqtpePX7BA", + "elasticsearch.node.name": "runTask-0", + "elasticsearch.slowlog.id": null, + "elasticsearch.slowlog.search_type": "QUERY_THEN_FETCH", + "elasticsearch.slowlog.source": "{\\\"query\\\":{\\\"match_none\\\":{\\\"boost\\\":1.0}}}", + "elasticsearch.slowlog.took": "946.6micros", + "elasticsearch.slowlog.total_hits": "0 hits", + "elasticsearch.shard.id": "0", + "elasticsearch.slowlog.total_shards": 1, + "elasticsearch.slowlog.stats": "[]", + "event.dataset": "elasticsearch.index_search_slowlog", + "event.type": "info", + "event.kind": "event", + "fileset.name": "slowlog", + "host.id": "a8BUD2RfQSu4aqtpePX7BA", + "input.type": "log", + "log.level": "WARN", + "log.offset": 869, + "message": "[my-index][0]", + "service.type": "elasticsearch", + "event.category": "database", + "ecs.version": "1.2.0", + "service.name": "ES_ECS", + "event.duration": 0, + "event.module": "elasticsearch", + "process.thread.name": "elasticsearch[runTask-0][search][T#6]", + "log.logger": "index.search.slowlog.query" + }, + { + "@timestamp": "2024-03-13T09:44:20.724Z", + "elasticsearch.cluster.name": "runTask", + "elasticsearch.cluster.uuid": "0d2MZYNKR7Wqr2U6Cvpp7g", + "elasticsearch.index.name": "my-index", + "elasticsearch.node.id": "a8BUD2RfQSu4aqtpePX7BA", + "elasticsearch.node.name": "runTask-0", + "elasticsearch.slowlog.id": null, + "elasticsearch.slowlog.search_type": "QUERY_THEN_FETCH", + "elasticsearch.slowlog.source": "{\\\"query\\\":{\\\"match_none\\\":{\\\"boost\\\":1.0}}}", + "elasticsearch.slowlog.took": "509.5micros", + "elasticsearch.slowlog.total_hits": "0 hits", + "elasticsearch.shard.id": "0", + "elasticsearch.slowlog.stats": "[]", + "elasticsearch.slowlog.total_shards": 1, + "event.type": "info", + "event.kind": "event", + "event.dataset": "elasticsearch.index_search_slowlog", + "fileset.name": "slowlog", + "host.id": "a8BUD2RfQSu4aqtpePX7BA", + "input.type": "log", + "log.level": "WARN", + "log.offset": 1744, + "message": "[my-index][0]", + "service.type": "elasticsearch", + "elasticsearch.slowlog.auth.type": "REALM", + "event.category": "database", + "user.name": "elastic", + "elasticsearch.slowlog.user.realm": "reserved", + "ecs.version": "1.2.0", + "service.name": "ES_ECS", + "event.duration": 0, + "event.module": "elasticsearch", + "process.thread.name": "elasticsearch[runTask-0][search][T#8]", + "log.logger": "index.search.slowlog.query" + } +] From 01f5a90209120459cfbbd090cb29fd803618b11a Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Wed, 20 Mar 2024 09:45:33 +0200 Subject: [PATCH 046/313] Snapshot packaging stage migration (#37827) --- .buildkite/auditbeat/auditbeat-pipeline.yml | 28 ++++++---- .buildkite/auditbeat/scripts/crosscompile.sh | 2 - .buildkite/auditbeat/scripts/package.sh | 13 ----- .../auditbeat/scripts/unit-tests-win.ps1 | 51 ------------------- .buildkite/auditbeat/scripts/unit-tests.sh | 2 - .buildkite/env-scripts/env.sh | 42 +++++++++++++-- .buildkite/env-scripts/linux-env.sh | 45 ---------------- .buildkite/env-scripts/util.sh | 26 +++++----- .buildkite/filebeat/filebeat-pipeline.yml | 31 ++++++----- .../filebeat/scripts/integration-gotests.sh | 2 - .../filebeat/scripts/integration-pytests.sh | 2 - .buildkite/filebeat/scripts/package-step.sh | 51 ------------------- .buildkite/filebeat/scripts/package.sh | 10 ---- .../filebeat/scripts/unit-tests-win.ps1 | 51 ------------------- .buildkite/filebeat/scripts/unit-tests.sh | 2 - .buildkite/heartbeat/heartbeat-pipeline.yml | 28 ++++++---- .../heartbeat/scripts/integration-gotests.sh | 3 -- .../heartbeat/scripts/integration-pytests.sh | 3 -- .buildkite/heartbeat/scripts/package-step.sh | 51 ------------------- .buildkite/heartbeat/scripts/package.sh | 13 ----- .../heartbeat/scripts/unit-tests-win.ps1 | 51 ------------------- .buildkite/heartbeat/scripts/unit-tests.sh | 3 -- .buildkite/hooks/post-checkout | 10 ++-- .buildkite/hooks/pre-command | 35 +++++++++++-- .buildkite/hooks/pre-exit | 15 ++++++ .buildkite/hooks/scripts/util.sh | 33 ++++++++++++ .../packaging}/package-step.sh | 27 +++++----- .buildkite/scripts/packaging/package-util.sh | 22 ++++++++ .buildkite/scripts/packaging/package.sh | 51 +++++++++++++++++++ .../module/file_integrity/metricset_test.go | 9 ++++ 30 files changed, 285 insertions(+), 427 deletions(-) delete mode 100755 .buildkite/auditbeat/scripts/package.sh delete mode 100644 .buildkite/auditbeat/scripts/unit-tests-win.ps1 delete mode 100644 .buildkite/env-scripts/linux-env.sh delete mode 100755 .buildkite/filebeat/scripts/package-step.sh delete mode 100755 .buildkite/filebeat/scripts/package.sh delete mode 100644 .buildkite/filebeat/scripts/unit-tests-win.ps1 delete mode 100755 .buildkite/heartbeat/scripts/package-step.sh delete mode 100755 .buildkite/heartbeat/scripts/package.sh delete mode 100644 .buildkite/heartbeat/scripts/unit-tests-win.ps1 create mode 100644 .buildkite/hooks/pre-exit create mode 100755 .buildkite/hooks/scripts/util.sh rename .buildkite/{auditbeat/scripts => scripts/packaging}/package-step.sh (55%) create mode 100755 .buildkite/scripts/packaging/package-util.sh create mode 100755 .buildkite/scripts/packaging/package.sh diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index 798939bbf32..be03d7843b2 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -1,13 +1,18 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "core-ubuntu-2004-aarch64" + BEATS_PROJECT_NAME: "auditbeat" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" IMAGE_WIN_2016: "family/core-windows-2016" IMAGE_WIN_2019: "family/core-windows-2019" IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_RHEL9: "family/core-rhel-9" + IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" steps: - group: "Auditbeat Mandatory Testing" @@ -24,6 +29,7 @@ steps: agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: - "auditbeat/build/*.xml" - "auditbeat/build/*.json" @@ -37,19 +43,20 @@ steps: agents: provider: "gcp" image: "${IMAGE_RHEL9}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: - "auditbeat/build/*.xml" - "auditbeat/build/*.json" - label: ":windows:-{{matrix.image}} Unit Tests" - command: ".buildkite/auditbeat/scripts/unit-tests-win.ps1" + command: ".buildkite/scripts/win_unit_tests.ps1" notify: - github_commit_status: context: "Auditbeat: windows/Unit Tests" agents: provider: "gcp" image: "{{matrix.image}}" - machine_type: "n2-standard-8" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 200 disk_type: "pd-ssd" matrix: @@ -72,6 +79,7 @@ steps: agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - group: "Extended Testing" key: "extended-tests" @@ -88,8 +96,8 @@ steps: context: "Auditbeat/Extended: Unit Tests ARM" agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "t4g.large" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" artifact_paths: "auditbeat/build/*.xml" - label: ":mac: MacOS Unit Tests" @@ -112,14 +120,14 @@ steps: steps: - label: ":windows: Win 2019 Unit Tests" key: "win-extended-2019" - command: ".buildkite/auditbeat/scripts/unit-tests-win.ps1" + command: ".buildkite/scripts/win_unit_tests.ps1" notify: - github_commit_status: context: "Auditbeat/Extended: Win-2019 Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2019}" - machine_type: "n2-standard-8" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 200 disk_type: "pd-ssd" artifact_paths: @@ -134,4 +142,4 @@ steps: steps: - label: Package pipeline - commands: ".buildkite/auditbeat/scripts/package-step.sh" + commands: ".buildkite/scripts/packaging/package-step.sh" diff --git a/.buildkite/auditbeat/scripts/crosscompile.sh b/.buildkite/auditbeat/scripts/crosscompile.sh index 866d6be4223..da8452d5380 100755 --- a/.buildkite/auditbeat/scripts/crosscompile.sh +++ b/.buildkite/auditbeat/scripts/crosscompile.sh @@ -2,7 +2,5 @@ set -euo pipefail -source .buildkite/env-scripts/linux-env.sh - echo "--- Executing Crosscompile" make -C auditbeat crosscompile diff --git a/.buildkite/auditbeat/scripts/package.sh b/.buildkite/auditbeat/scripts/package.sh deleted file mode 100755 index 71872ca15a3..00000000000 --- a/.buildkite/auditbeat/scripts/package.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/env-scripts/linux-env.sh - -echo "--- Docker Version: $(docker --version)" - -echo "--- Start Packaging" -cd auditbeat -umask 0022 -mage package - diff --git a/.buildkite/auditbeat/scripts/unit-tests-win.ps1 b/.buildkite/auditbeat/scripts/unit-tests-win.ps1 deleted file mode 100644 index 200627d518f..00000000000 --- a/.buildkite/auditbeat/scripts/unit-tests-win.ps1 +++ /dev/null @@ -1,51 +0,0 @@ -$ErrorActionPreference = "Stop" # set -e -$GoVersion = $env:GOLANG_VERSION # If Choco doesn't have the version specified in .go-version file, should be changed manually - -# Forcing to checkout again all the files with a correct autocrlf. -# Doing this here because we cannot set git clone options before. -function fixCRLF() { - Write-Host "--- Fixing CRLF in git checkout --" - git config core.autocrlf false - git rm --quiet --cached -r . - git reset --quiet --hard -} - -function withGolang() { - Write-Host "--- Install golang $GoVersion --" - choco install golang -y --version $GoVersion - - $choco = Convert-Path "$((Get-Command choco).Path)\..\.." - Import-Module "$choco\helpers\chocolateyProfile.psm1" - refreshenv - go version - go env -} - -function installGoDependencies() { - $installPackages = @( - "github.com/magefile/mage" - "github.com/elastic/go-licenser" - "golang.org/x/tools/cmd/goimports" - "github.com/jstemmer/go-junit-report" - "github.com/tebeka/go2xunit" - ) - foreach ($pkg in $installPackages) { - go install "$pkg" - } -} - -fixCRLF - -$ErrorActionPreference = "Continue" # set +e - -Set-Location -Path auditbeat -New-Item -ItemType Directory -Force -Path "build" -withGolang -installGoDependencies - -mage build unitTest - -$EXITCODE=$LASTEXITCODE -$ErrorActionPreference = "Stop" - -Exit $EXITCODE diff --git a/.buildkite/auditbeat/scripts/unit-tests.sh b/.buildkite/auditbeat/scripts/unit-tests.sh index c1f5685c77f..8a7514d747a 100755 --- a/.buildkite/auditbeat/scripts/unit-tests.sh +++ b/.buildkite/auditbeat/scripts/unit-tests.sh @@ -2,8 +2,6 @@ set -euo pipefail -source .buildkite/env-scripts/linux-env.sh - echo "--- Running Unit Tests" sudo chmod -R go-w auditbeat/ diff --git a/.buildkite/env-scripts/env.sh b/.buildkite/env-scripts/env.sh index 4dfc01bafc3..f28658a107d 100644 --- a/.buildkite/env-scripts/env.sh +++ b/.buildkite/env-scripts/env.sh @@ -1,19 +1,53 @@ #!/usr/bin/env bash -SETUP_GVM_VERSION="v0.5.1" +source .buildkite/env-scripts/util.sh + +DOCS_CHANGESET="^.*\.(asciidoc|md)$ +deploy/kubernetes/.*-kubernetes.yaml" +PACKAGING_CHANGESET="^dev-tools/packaging/ +^.go-version" + +REPO="beats" WORKSPACE="$(pwd)" BIN="${WORKSPACE}/bin" HW_TYPE="$(uname -m)" PLATFORM_TYPE="$(uname)" -REPO="beats" TMP_FOLDER="tmp.${REPO}" +SNAPSHOT="true" +PYTEST_ADDOPTS="" +OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" +XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" + +SETUP_GVM_VERSION="v0.5.1" +ASDF_MAGE_VERSION="1.14.0" +SETUP_WIN_PYTHON_VERSION="3.11.0" + +# Docker & DockerHub +DOCKER_COMPOSE_VERSION="1.21.0" DOCKER_REGISTRY="docker.elastic.co" -export SETUP_GVM_VERSION +ONLY_DOCS=$(changeset_applies "$DOCS_CHANGESET") +PACKAGING_CHANGES=$(changeset_applies "$PACKAGING_CHANGESET") +GO_MOD_CHANGES=$(changeset_applies "^go.mod") + +export REPO export WORKSPACE export BIN export HW_TYPE export PLATFORM_TYPE -export REPO export TMP_FOLDER +export SNAPSHOT +export PYTEST_ADDOPTS +export OSS_MODULE_PATTERN +export XPACK_MODULE_PATTERN + +export SETUP_GVM_VERSION +export ASDF_MAGE_VERSION +export SETUP_WIN_PYTHON_VERSION + +export DOCKER_COMPOSE_VERSION export DOCKER_REGISTRY + +export ONLY_DOCS +export PACKAGING_CHANGES +export GO_MOD_CHANGES diff --git a/.buildkite/env-scripts/linux-env.sh b/.buildkite/env-scripts/linux-env.sh deleted file mode 100644 index 1365aaace4a..00000000000 --- a/.buildkite/env-scripts/linux-env.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/env-scripts/util.sh - -DEBIAN_FRONTEND="noninteractive" - -sudo mkdir -p /etc/needrestart -echo "\$nrconf{restart} = 'a';" | sudo tee -a /etc/needrestart/needrestart.conf > /dev/null - -if [[ $PLATFORM_TYPE == "Linux" ]]; then - # Remove this code once beats specific agent is set up - if grep -q 'Ubuntu' /etc/*release; then - export DEBIAN_FRONTEND - - echo "--- Ubuntu - Installing libs" - sudo apt-get update - sudo apt-get install -y libsystemd-dev - sudo apt install -y python3-pip - sudo apt-get install -y python3-venv - fi - - # Remove this code once beats specific agent is set up - if grep -q 'Red Hat' /etc/*release; then - echo "--- RHL - Installing libs" - sudo yum update -y - sudo yum install -y systemd-devel - sudo yum install -y python3-pip - sudo yum install -y python3 - pip3 install virtualenv - fi -fi - -if [[ $PLATFORM_TYPE == Darwin* ]]; then - echo "--- Setting larger ulimit on MacOS" - # To bypass file descriptor errors like "Too many open files error" on MacOS - ulimit -Sn 50000 - echo "--- ULIMIT: $(ulimit -n)" -fi - -echo "--- Setting up environment" -add_bin_path -with_go -with_mage diff --git a/.buildkite/env-scripts/util.sh b/.buildkite/env-scripts/util.sh index 6a5c36bcd04..68fd08a75df 100644 --- a/.buildkite/env-scripts/util.sh +++ b/.buildkite/env-scripts/util.sh @@ -9,11 +9,11 @@ add_bin_path() { } with_go() { - local go_version="${GOLANG_VERSION}" + local go_version="${GO_VERSION}" echo "Setting up the Go environment..." create_bin check_platform_architecture - retry 5 curl -sL -o ${BIN}/gvm "https://github.com/andrewkroh/gvm/releases/download/${SETUP_GVM_VERSION}/gvm-${PLATFORM_TYPE}-${arch_type}" + retry_with_count 5 curl -sL -o ${BIN}/gvm "https://github.com/andrewkroh/gvm/releases/download/${SETUP_GVM_VERSION}/gvm-${PLATFORM_TYPE}-${arch_type}" export PATH="${PATH}:${BIN}" chmod +x ${BIN}/gvm eval "$(gvm "$go_version")" @@ -60,7 +60,7 @@ check_platform_architecture() { esac } -retry() { +retry_with_count() { local retries=$1 shift local count=0 @@ -89,16 +89,16 @@ are_files_changed() { fi } -cleanup() { - echo "Deleting temporary files..." - rm -rf ${BIN}/${TMP_FOLDER}.* - echo "Done." +changeset_applies() { + local changeset=$1 + if are_files_changed "$changeset"; then + echo true + else + echo false + fi } -unset_secrets () { - for var in $(printenv | sed 's;=.*;;' | sort); do - if [[ "$var" == *_SECRET || "$var" == *_TOKEN ]]; then - unset "$var" - fi - done +set_git_config() { + git config user.name "${GITHUB_USERNAME_SECRET}" + git config user.email "${GITHUB_EMAIL_SECRET}" } diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index e811d286953..ae22629e6ec 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -1,12 +1,17 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "core-ubuntu-2004-aarch64" + BEATS_PROJECT_NAME: "filebeat" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_WIN_2016: "family/core-windows-2016" IMAGE_WIN_2019: "family/core-windows-2019" IMAGE_WIN_2022: "family/core-windows-2022" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" steps: - group: "Filebeat Mandatory Testing" @@ -23,7 +28,7 @@ steps: agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" - machineType: "c2-standard-16" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: - "filebeat/build/*.xml" - "filebeat/build/*.json" @@ -37,7 +42,7 @@ steps: agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" - machineType: "c2-standard-16" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" artifact_paths: - "filebeat/build/*.xml" - "filebeat/build/*.json" @@ -49,22 +54,22 @@ steps: - github_commit_status: context: "Filebeat: Python Integration Tests" agents: - provider: "gcp" + provider: gcp image: "${IMAGE_UBUNTU_X86_64}" - machineType: "c2-standard-16" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" artifact_paths: - "filebeat/build/*.xml" - "filebeat/build/*.json" - label: ":windows:-{{matrix.image}} Unit Tests" - command: ".buildkite/filebeat/scripts/unit-tests-win.ps1" + command: ".buildkite/scripts/win_unit_tests.ps1" notify: - github_commit_status: context: "Filebeat: windows/Unit Tests" agents: provider: "gcp" image: "{{matrix.image}}" - machine_type: "n2-standard-8" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 200 disk_type: "pd-ssd" matrix: @@ -91,8 +96,8 @@ steps: context: "Filebeat/Extended: Unit Tests ARM" agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "t4g.large" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" artifact_paths: "filebeat/build/*.xml" - label: ":mac: MacOS Unit Tests" @@ -115,14 +120,14 @@ steps: steps: - label: ":windows: Win 2019 Unit Tests" key: "win-extended-2019" - command: ".buildkite/filebeat/scripts/unit-tests-win.ps1" + command: ".buildkite/scripts/win_unit_tests.ps1" notify: - github_commit_status: context: "Filebeat/Extended: Win-2019 Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2019}" - machine_type: "n2-standard-8" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 200 disk_type: "pd-ssd" artifact_paths: @@ -137,4 +142,4 @@ steps: steps: - label: Package pipeline - commands: ".buildkite/filebeat/scripts/package-step.sh" + commands: ".buildkite/scripts/packaging/package-step.sh" diff --git a/.buildkite/filebeat/scripts/integration-gotests.sh b/.buildkite/filebeat/scripts/integration-gotests.sh index d64ce7c98eb..6de39ff8817 100755 --- a/.buildkite/filebeat/scripts/integration-gotests.sh +++ b/.buildkite/filebeat/scripts/integration-gotests.sh @@ -2,8 +2,6 @@ set -euo pipefail -source .buildkite/env-scripts/linux-env.sh - echo "--- Executing Integration Tests" sudo chmod -R go-w filebeat/ diff --git a/.buildkite/filebeat/scripts/integration-pytests.sh b/.buildkite/filebeat/scripts/integration-pytests.sh index b51e8ae18a6..9aff8695c35 100755 --- a/.buildkite/filebeat/scripts/integration-pytests.sh +++ b/.buildkite/filebeat/scripts/integration-pytests.sh @@ -2,8 +2,6 @@ set -euo pipefail -source .buildkite/env-scripts/linux-env.sh - echo "--- Executing Integration Tests" sudo chmod -R go-w filebeat/ diff --git a/.buildkite/filebeat/scripts/package-step.sh b/.buildkite/filebeat/scripts/package-step.sh deleted file mode 100755 index f8fa02db81d..00000000000 --- a/.buildkite/filebeat/scripts/package-step.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/env-scripts/util.sh - -changeset="^filebeat/ -^go.mod -^pytest.ini -^dev-tools/ -^libbeat/ -^testing/ -^\.buildkite/filebeat/" - -if are_files_changed "$changeset"; then - bk_pipeline=$(cat <<-YAML - steps: - - label: ":ubuntu: Packaging Linux X86" - key: "package-linux-x86" - env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - command: - - ".buildkite/filebeat/scripts/package.sh" - notify: - - github_commit_status: - context: "Filebeat/Packaging: Linux X86" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - - - label: ":linux: Packaging Linux ARM" - key: "package-linux-arm" - env: - PLATFORMS: "linux/arm64" - PACKAGES: "docker" - command: - - ".buildkite/filebeat/scripts/package.sh" - notify: - - github_commit_status: - context: "Filebeat/Packaging: ARM" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "t4g.large" -YAML -) - echo "${bk_pipeline}" | buildkite-agent pipeline upload -else - buildkite-agent annotate "No required files changed. Skipped packaging" --style 'warning' --context 'ctx-warning' - exit 0 -fi diff --git a/.buildkite/filebeat/scripts/package.sh b/.buildkite/filebeat/scripts/package.sh deleted file mode 100755 index 0bb03250348..00000000000 --- a/.buildkite/filebeat/scripts/package.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/env-scripts/linux-env.sh - -echo "--- Start Packaging" -cd filebeat -umask 0022 -mage package diff --git a/.buildkite/filebeat/scripts/unit-tests-win.ps1 b/.buildkite/filebeat/scripts/unit-tests-win.ps1 deleted file mode 100644 index 8990eb30a09..00000000000 --- a/.buildkite/filebeat/scripts/unit-tests-win.ps1 +++ /dev/null @@ -1,51 +0,0 @@ -$ErrorActionPreference = "Stop" # set -e -$GoVersion = $env:GOLANG_VERSION # If Choco doesn't have the version specified in .go-version file, should be changed manually - -# Forcing to checkout again all the files with a correct autocrlf. -# Doing this here because we cannot set git clone options before. -function fixCRLF() { - Write-Host "-- Fixing CRLF in git checkout --" - git config core.autocrlf false - git rm --quiet --cached -r . - git reset --quiet --hard -} - -function withGolang() { - Write-Host "-- Install golang $GoVersion --" - choco install golang -y --version $GoVersion - - $choco = Convert-Path "$((Get-Command choco).Path)\..\.." - Import-Module "$choco\helpers\chocolateyProfile.psm1" - refreshenv - go version - go env -} - -function installGoDependencies() { - $installPackages = @( - "github.com/magefile/mage" - "github.com/elastic/go-licenser" - "golang.org/x/tools/cmd/goimports" - "github.com/jstemmer/go-junit-report" - "github.com/tebeka/go2xunit" - ) - foreach ($pkg in $installPackages) { - go install "$pkg" - } -} - -fixCRLF - -$ErrorActionPreference = "Continue" # set +e - -Set-Location -Path filebeat -New-Item -ItemType Directory -Force -Path "build" -withGolang -installGoDependencies - -mage build unitTest - -$EXITCODE=$LASTEXITCODE -$ErrorActionPreference = "Stop" - -Exit $EXITCODE diff --git a/.buildkite/filebeat/scripts/unit-tests.sh b/.buildkite/filebeat/scripts/unit-tests.sh index 08ce9d4ea1c..2efb6b1ff8e 100755 --- a/.buildkite/filebeat/scripts/unit-tests.sh +++ b/.buildkite/filebeat/scripts/unit-tests.sh @@ -2,8 +2,6 @@ set -euo pipefail -source .buildkite/env-scripts/linux-env.sh - echo "--- Executing Unit Tests" sudo chmod -R go-w filebeat/ diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index bf645a2b295..2b5f6195f45 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -1,13 +1,18 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "core-ubuntu-2004-aarch64" + BEATS_PROJECT_NAME: "heartbeat" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" IMAGE_WIN_2016: "family/core-windows-2016" IMAGE_WIN_2019: "family/core-windows-2019" IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_RHEL9: "family/core-rhel-9" + IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" steps: - group: "Heartbeat Mandatory Testing" @@ -24,6 +29,7 @@ steps: agents: provider: "gcp" image: "{{matrix.image}}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" matrix: setup: image: @@ -35,14 +41,14 @@ steps: - label: ":windows: Unit Tests / {{matrix.image}}" command: - - ".buildkite/heartbeat/scripts/unit-tests-win.ps1" + - ".buildkite/scripts/win_unit_tests.ps1" notify: - github_commit_status: context: "Heartbeat: windows/Unit Tests" agents: provider: "gcp" image: "{{matrix.image}}" - machine_type: "n2-standard-8" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_type: "pd-ssd" matrix: setup: @@ -62,6 +68,7 @@ steps: agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" @@ -75,6 +82,7 @@ steps: agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" @@ -94,8 +102,8 @@ steps: context: "Heartbeat/Extended: Unit Tests ARM" agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "t4g.large" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" artifact_paths: "heartbeat/build/*.xml" - label: ":mac: MacOS Unit Tests" @@ -118,14 +126,14 @@ steps: steps: - label: ":windows: Win 2019 Unit Tests" key: "win-extended-2019" - command: ".buildkite/heartbeat/scripts/unit-tests-win.ps1" + command: ".buildkite/scripts/win_unit_tests.ps1" notify: - github_commit_status: context: "Heartbeat/Extended: Win-2019 Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2019}" - machine_type: "n2-standard-8" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_type: "pd-ssd" artifact_paths: - "heartbeat/build/*.xml" @@ -139,4 +147,4 @@ steps: steps: - label: Package pipeline - commands: ".buildkite/heartbeat/scripts/package-step.sh" + commands: ".buildkite/scripts/packaging/package-step.sh" diff --git a/.buildkite/heartbeat/scripts/integration-gotests.sh b/.buildkite/heartbeat/scripts/integration-gotests.sh index 8eab0e8b5d8..c50dbf45347 100755 --- a/.buildkite/heartbeat/scripts/integration-gotests.sh +++ b/.buildkite/heartbeat/scripts/integration-gotests.sh @@ -2,9 +2,6 @@ set -euo pipefail -# Remove when custom image is set up -source .buildkite/env-scripts/linux-env.sh - echo "--- Executing Integration Tests" # Remove when custom image is set up sudo chmod -R go-w heartbeat/ diff --git a/.buildkite/heartbeat/scripts/integration-pytests.sh b/.buildkite/heartbeat/scripts/integration-pytests.sh index 729df5ae6f6..5875b5460ed 100755 --- a/.buildkite/heartbeat/scripts/integration-pytests.sh +++ b/.buildkite/heartbeat/scripts/integration-pytests.sh @@ -2,9 +2,6 @@ set -euo pipefail -# Remove when custom image is set up -source .buildkite/env-scripts/linux-env.sh - echo "--- Executing Integration Tests" # Remove when custom image is set up sudo chmod -R go-w heartbeat/ diff --git a/.buildkite/heartbeat/scripts/package-step.sh b/.buildkite/heartbeat/scripts/package-step.sh deleted file mode 100755 index 03790edfa5f..00000000000 --- a/.buildkite/heartbeat/scripts/package-step.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/env-scripts/util.sh - -changeset="^heartbeat/ -^go.mod -^pytest.ini -^dev-tools/ -^libbeat/ -^testing/ -^\.buildkite/heartbeat/" - -if are_files_changed "$changeset"; then - bk_pipeline=$(cat <<-YAML - steps: - - label: ":ubuntu: Packaging Linux X86" - key: "package-linux-x86" - env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - command: - - ".buildkite/heartbeat/scripts/package.sh" - notify: - - github_commit_status: - context: "heartbeat/Packaging: Linux X86" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - - - label: ":linux: Packaging Linux ARM" - key: "package-linux-arm" - env: - PLATFORMS: "linux/arm64" - PACKAGES: "docker" - command: - - ".buildkite/heartbeat/scripts/package.sh" - notify: - - github_commit_status: - context: "heartbeat/Packaging: ARM" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "t4g.large" -YAML -) - echo "${bk_pipeline}" | buildkite-agent pipeline upload -else - buildkite-agent annotate "No required files changed. Skipped packaging" --style 'warning' --context 'ctx-warning' - exit 0 -fi diff --git a/.buildkite/heartbeat/scripts/package.sh b/.buildkite/heartbeat/scripts/package.sh deleted file mode 100755 index 7f51a6b5ca1..00000000000 --- a/.buildkite/heartbeat/scripts/package.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/env-scripts/linux-env.sh - -echo "--- Docker Version: $(docker --version)" - -echo "--- Start Packaging" -cd heartbeat -umask 0022 -mage package - diff --git a/.buildkite/heartbeat/scripts/unit-tests-win.ps1 b/.buildkite/heartbeat/scripts/unit-tests-win.ps1 deleted file mode 100644 index 17282813e13..00000000000 --- a/.buildkite/heartbeat/scripts/unit-tests-win.ps1 +++ /dev/null @@ -1,51 +0,0 @@ -$ErrorActionPreference = "Stop" # set -e -$GoVersion = $env:GOLANG_VERSION # If Choco doesn't have the version specified in .go-version file, should be changed manually - -# Forcing to checkout again all the files with a correct autocrlf. -# Doing this here because we cannot set git clone options before. -function fixCRLF() { - Write-Host "--- Fixing CRLF in git checkout --" - git config core.autocrlf false - git rm --quiet --cached -r . - git reset --quiet --hard -} - -function withGolang() { - Write-Host "--- Install golang $GoVersion --" - choco install golang -y --version $GoVersion - - $choco = Convert-Path "$((Get-Command choco).Path)\..\.." - Import-Module "$choco\helpers\chocolateyProfile.psm1" - refreshenv - go version - go env -} - -function installGoDependencies() { - $installPackages = @( - "github.com/magefile/mage" - "github.com/elastic/go-licenser" - "golang.org/x/tools/cmd/goimports" - "github.com/jstemmer/go-junit-report" - "github.com/tebeka/go2xunit" - ) - foreach ($pkg in $installPackages) { - go install "$pkg" - } -} - -fixCRLF - -$ErrorActionPreference = "Continue" # set +e - -Set-Location -Path heartbeat -New-Item -ItemType Directory -Force -Path "build" -withGolang -installGoDependencies - -mage build unitTest - -$EXITCODE=$LASTEXITCODE -$ErrorActionPreference = "Stop" - -Exit $EXITCODE diff --git a/.buildkite/heartbeat/scripts/unit-tests.sh b/.buildkite/heartbeat/scripts/unit-tests.sh index 4b746da2d57..1d8de945788 100755 --- a/.buildkite/heartbeat/scripts/unit-tests.sh +++ b/.buildkite/heartbeat/scripts/unit-tests.sh @@ -2,9 +2,6 @@ set -euo pipefail -# Remove when custom image is set up -source .buildkite/env-scripts/linux-env.sh - echo "--- Running Unit Tests" # Remove when custom image is set up sudo chmod -R go-w heartbeat/ diff --git a/.buildkite/hooks/post-checkout b/.buildkite/hooks/post-checkout index b6cc7ad60bd..43881f6e2d8 100644 --- a/.buildkite/hooks/post-checkout +++ b/.buildkite/hooks/post-checkout @@ -8,7 +8,7 @@ checkout_merge() { local merge_branch=$3 if [[ -z "${target_branch}" ]]; then - echo "No pull request target branch" + echo "--- No pull request target branch" exit 1 fi @@ -24,9 +24,9 @@ checkout_merge() { git config user.name "github-merged-pr-post-checkout" git config user.email "auto-merge@buildkite" - git merge --no-edit "${BUILDKITE_COMMIT}" || { + git merge --no-edit "${pr_commit}" || { local merge_result=$? - echo "Merge failed: ${merge_result}" + echo "--- Merge failed: ${merge_result}" git merge --abort exit ${merge_result} } @@ -35,7 +35,7 @@ checkout_merge() { pull_request="${BUILDKITE_PULL_REQUEST:-false}" if [[ "${pull_request}" == "false" ]]; then - echo "Not a pull request, skipping" + echo "--- Not a pull request, skipping" exit 0 fi @@ -46,7 +46,7 @@ MERGE_BRANCH="pr_merge_${PR_ID}" checkout_merge "${TARGET_BRANCH}" "${PR_COMMIT}" "${MERGE_BRANCH}" -echo "Commit information" +echo "--- Commit information" git --no-pager log --format=%B -n 1 # Ensure buildkite groups are rendered diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 7be1f965230..9df1bed50a7 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -2,8 +2,13 @@ set -euo pipefail +# Secrets must be redacted +# https://buildkite.com/docs/pipelines/managing-log-output#redacted-environment-variables AWS_SERVICE_ACCOUNT_SECRET_PATH="kv/ci-shared/platform-ingest/aws_account_auth" PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-ingest-ci-service-account" +DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" +PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/private_ci_artifacts_gcs_credentials" +GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" retry() { local retries=$1 @@ -24,13 +29,35 @@ retry() { return 0 } -if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then source .buildkite/env-scripts/env.sh source .buildkite/env-scripts/util.sh - source .buildkite/env-scripts/win-env.sh - if [[ -z "${GOLANG_VERSION-""}" ]]; then - export GOLANG_VERSION=$(cat "${WORKSPACE}/.go-version") + if [[ -z "${GO_VERSION-""}" ]]; then + export GO_VERSION=$(cat "${WORKSPACE}/.go-version") + fi + + if [[ "$BUILDKITE_STEP_KEY" == macos* ]]; then + ulimit -Sn 30000 + + echo "--- Setting up environment" + add_bin_path + with_go + with_mage + fi + + if [[ "$BUILDKITE_STEP_KEY" == package* ]]; then + export DOCKER_USERNAME_SECRET=$(retry_with_count 5 vault kv get -field user "${DOCKER_REGISTRY_SECRET_PATH}") + export DOCKER_PASSWORD_SECRET=$(retry_with_count 5 vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") + export GITHUB_TOKEN_SECRET=$(retry_with_count 5 vault kv get -field token ${GITHUB_TOKEN_VAULT_PATH}) + + docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKER_REGISTRY}" 2>/dev/null + + github_username=$(retry_with_count 5 vault kv get -field username ${GITHUB_TOKEN_VAULT_PATH}) + github_email=$(retry_with_count 5 vault kv get -field email ${GITHUB_TOKEN_VAULT_PATH}) + + git config user.name "$github_username" + git config user.email "$github_email" fi fi diff --git a/.buildkite/hooks/pre-exit b/.buildkite/hooks/pre-exit new file mode 100644 index 00000000000..d1ff6e0ac1c --- /dev/null +++ b/.buildkite/hooks/pre-exit @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/hooks/scripts/util.sh + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then + if [[ "$BUILDKITE_STEP_KEY" == package* ]]; then + docker logout "${DOCKER_REGISTRY}" + fi + + # Ensure that any temporal files created during any step are removed + cleanup + unset_secrets +fi diff --git a/.buildkite/hooks/scripts/util.sh b/.buildkite/hooks/scripts/util.sh new file mode 100755 index 00000000000..07ab6cf4c9a --- /dev/null +++ b/.buildkite/hooks/scripts/util.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -euo pipefail + +unset_secrets () { + for var in $(printenv | sed 's;=.*;;' | sort); do + if [[ "$var" == *_SECRET || "$var" == *_TOKEN ]]; then + unset "$var" + fi + done +} + +google_cloud_logout_active_account() { + local active_account=$(gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>/dev/null) + if [[ -n "$active_account" && -n "${GOOGLE_APPLICATION_CREDENTIALS+x}" ]]; then + echo "Logging out from GCP for active account" + gcloud auth revoke $active_account > /dev/null 2>&1 + else + echo "No active GCP accounts found." + fi + if [ -n "${GOOGLE_APPLICATION_CREDENTIALS+x}" ]; then + unset GOOGLE_APPLICATION_CREDENTIALS + cleanup + fi +} + +cleanup() { + echo "Deleting temporary files..." + if [[ -e "${BIN}/${TMP_FOLDER}" ]]; then + rm -rf "${BIN}/${TMP_FOLDER}.*" + fi + echo "Done." +} diff --git a/.buildkite/auditbeat/scripts/package-step.sh b/.buildkite/scripts/packaging/package-step.sh similarity index 55% rename from .buildkite/auditbeat/scripts/package-step.sh rename to .buildkite/scripts/packaging/package-step.sh index cb06895879a..9eddfafcfba 100755 --- a/.buildkite/auditbeat/scripts/package-step.sh +++ b/.buildkite/scripts/packaging/package-step.sh @@ -4,44 +4,45 @@ set -euo pipefail source .buildkite/env-scripts/util.sh -changeset="^auditbeat/ +changeset="^${BEATS_PROJECT_NAME}/ ^go.mod ^pytest.ini ^dev-tools/ ^libbeat/ ^testing/ -^\.buildkite/auditbeat/" +^\.buildkite/${BEATS_PROJECT_NAME}/" if are_files_changed "$changeset"; then bk_pipeline=$(cat <<-YAML steps: - - label: ":ubuntu: Packaging Linux X86" + - label: ":ubuntu: ${BEATS_PROJECT_NAME}/Packaging Linux X86" key: "package-linux-x86" env: PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - command: - - ".buildkite/auditbeat/scripts/package.sh" + SNAPSHOT: true + command: ".buildkite/scripts/packaging/package.sh" notify: - github_commit_status: - context: "Auditbeat/Packaging: Linux X86" + context: "${BEATS_PROJECT_NAME}/Packaging: Linux X86" agents: - provider: "gcp" + provider: gcp image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - - label: ":linux: Packaging Linux ARM" + - label: ":linux: ${BEATS_PROJECT_NAME}/Packaging Linux ARM" key: "package-linux-arm" env: PLATFORMS: "linux/arm64" PACKAGES: "docker" - command: - - ".buildkite/auditbeat/scripts/package.sh" + SNAPSHOT: true + command: ".buildkite/scripts/packaging/package.sh" notify: - github_commit_status: - context: "Auditbeat/Packaging: ARM" + context: "${BEATS_PROJECT_NAME}/Packaging: ARM" agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "t4g.large" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" YAML ) echo "${bk_pipeline}" | buildkite-agent pipeline upload diff --git a/.buildkite/scripts/packaging/package-util.sh b/.buildkite/scripts/packaging/package-util.sh new file mode 100755 index 00000000000..4a50457cc9c --- /dev/null +++ b/.buildkite/scripts/packaging/package-util.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +set -euo pipefail + +is_pr() { + if [[ $BUILDKITE_PULL_REQUEST != false ]]; then + return 0 + else + return 1 + fi +} + +define_tags() { + aliasVersion="${VERSION%.*}${IMG_POSTFIX}" + tags=("${BUILDKITE_COMMIT}") + + if is_pr; then + tags+=("pr-${GITHUB_PR_NUMBER}") + else + tags+=("${SOURCE_TAG}" "${aliasVersion}") + fi +} diff --git a/.buildkite/scripts/packaging/package.sh b/.buildkite/scripts/packaging/package.sh new file mode 100755 index 00000000000..5744ee0776b --- /dev/null +++ b/.buildkite/scripts/packaging/package.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/packaging/package-util.sh + +IMG_POSTFIX="-SNAPSHOT" +VARIANTS=("" "-ubi" "-oss") +VERSION="$(make get-version)" +SOURCE_TAG+="${VERSION}${IMG_POSTFIX}" +TARGET="observability-ci/${BEATS_PROJECT_NAME}" + +echo "--- Creating package" +mage -d "${BEATS_PROJECT_NAME}" package + +echo "--- Distribution list" +dir="${BEATS_PROJECT_NAME}/build/distributions" +buildkite-agent artifact upload "$dir/*.tar.gz;$dir/*.tar.gz.sha512" + +echo "--- Docker image list" +docker images + +define_tags + +targetSuffix="" +if [[ ${HW_TYPE} == "aarch64" || ${HW_TYPE} == "arm64" ]]; then + targetSuffix="-arm64" +fi + +for variant in "${VARIANTS[@]}"; do + source="beats/${BEATS_PROJECT_NAME}${variant}" + + for tag in "${tags[@]}"; do + targetTag=$tag${targetSuffix} + + sourceName="${DOCKER_REGISTRY}/${source}:${SOURCE_TAG}" + targetName="${DOCKER_REGISTRY}/${TARGET}:${targetTag}" + #TODO Remove following line once beats fully migrated to Buildkite and Jenkins builds will be disabled + #Avoid clashing with the Jenkins produced images + targetName="${targetName}-buildkite" + + if docker image inspect "${sourceName}" &>/dev/null; then + echo "--- Tag & Push with target: $targetName" + echo "Source name: $sourceName" + docker tag "$sourceName" "$targetName" + docker push "$targetName" + else + echo "Docker image ${sourceName} does not exist" + fi + done +done diff --git a/auditbeat/module/file_integrity/metricset_test.go b/auditbeat/module/file_integrity/metricset_test.go index 4ad58aa89fa..2a6c33e1798 100644 --- a/auditbeat/module/file_integrity/metricset_test.go +++ b/auditbeat/module/file_integrity/metricset_test.go @@ -62,6 +62,7 @@ func TestData(t *testing.T) { func TestActions(t *testing.T) { skipOnCIForDarwinAMD64(t) + skipOnBuildkiteWindows(t) defer abtest.SetupDataDir(t)() @@ -154,6 +155,7 @@ func TestActions(t *testing.T) { func TestExcludedFiles(t *testing.T) { skipOnCIForDarwinAMD64(t) + skipOnBuildkiteWindows(t) defer abtest.SetupDataDir(t)() @@ -201,6 +203,7 @@ func TestExcludedFiles(t *testing.T) { func TestIncludedExcludedFiles(t *testing.T) { skipOnCIForDarwinAMD64(t) + skipOnBuildkiteWindows(t) defer abtest.SetupDataDir(t)() @@ -949,3 +952,9 @@ func skipOnCIForDarwinAMD64(t testing.TB) { t.Skip("Skip test on CI for darwin/amd64") } } + +func skipOnBuildkiteWindows(t testing.TB) { + if os.Getenv("BUILDKITE") == "true" && runtime.GOOS == "windows" { + t.Skip("Skip on Buildkite Windows: Shortened TMP problem") + } +} From 10ff99297a608def3f5933e72cd82cd4a2cf79ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constan=C3=A7a=20Manteigas?= <113898685+constanca-m@users.noreply.github.com> Date: Wed, 20 Mar 2024 09:06:34 +0100 Subject: [PATCH 047/313] [Metricbeat][Azure] Azure monitor/storage: Fix 429 Too Many Requests error (#38294) * Fiz azure too many requests error Signed-off-by: constanca * Add CHANGELOG.next.asciidoc entry Signed-off-by: constanca * Run mage check Signed-off-by: constanca * Get metrics 1 time for each namespace/id Signed-off-by: constanca * Add error comparison Signed-off-by: constanca * Move retry to monitor service Signed-off-by: constanca * Remove GetMetricDefinitions without retry Signed-off-by: constanca * fix storage unit tests Signed-off-by: constanca * fix monitor unit tests Signed-off-by: constanca * Remove unnecessary for cycle Signed-off-by: constanca --------- Signed-off-by: constanca --- CHANGELOG.next.asciidoc | 1 + .../metricbeat/module/azure/mock_service.go | 4 +- .../module/azure/monitor/client_helper.go | 20 ++++++-- .../azure/monitor/client_helper_test.go | 6 +-- .../module/azure/monitor_service.go | 51 +++++++++++++++++-- .../module/azure/service_interface.go | 2 +- .../module/azure/storage/client_helper.go | 6 +-- .../azure/storage/client_helper_test.go | 6 +-- 8 files changed, 76 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 8a24d42a08b..f3bb1acc9a3 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -113,6 +113,7 @@ fields added to events containing the Beats version. {pull}37553[37553] *Metricbeat* +- Fix Azure Monitor 429 error by causing metricbeat to retry the request again. {pull}38294[38294] - Fix fields not being parsed correctly in postgresql/database {issue}25301[25301] {pull}37720[37720] *Osquerybeat* diff --git a/x-pack/metricbeat/module/azure/mock_service.go b/x-pack/metricbeat/module/azure/mock_service.go index 65f606dde12..9626952fa6d 100644 --- a/x-pack/metricbeat/module/azure/mock_service.go +++ b/x-pack/metricbeat/module/azure/mock_service.go @@ -29,8 +29,8 @@ func (client *MockService) GetResourceDefinitions(id []string, group []string, r return args.Get(0).([]*armresources.GenericResourceExpanded), args.Error(1) } -// GetMetricDefinitions is a mock function for the azure service -func (client *MockService) GetMetricDefinitions(resourceId string, namespace string) (armmonitor.MetricDefinitionCollection, error) { +// GetMetricDefinitionsWithRetry is a mock function for the azure service +func (client *MockService) GetMetricDefinitionsWithRetry(resourceId string, namespace string) (armmonitor.MetricDefinitionCollection, error) { args := client.Called(resourceId, namespace) return args.Get(0).(armmonitor.MetricDefinitionCollection), args.Error(1) } diff --git a/x-pack/metricbeat/module/azure/monitor/client_helper.go b/x-pack/metricbeat/module/azure/monitor/client_helper.go index 9d69f67f687..5fa5b9964e6 100644 --- a/x-pack/metricbeat/module/azure/monitor/client_helper.go +++ b/x-pack/metricbeat/module/azure/monitor/client_helper.go @@ -20,12 +20,24 @@ const missingNamespace = "no metric definitions were found for resource %s and n // mapMetrics should validate and map the metric related configuration to relevant azure monitor api parameters func mapMetrics(client *azure.Client, resources []*armresources.GenericResourceExpanded, resourceConfig azure.ResourceConfig) ([]azure.Metric, error) { var metrics []azure.Metric + for _, resource := range resources { + + // We use this map to avoid calling the metrics definition function for the same namespace and same resource + // multiple times. + namespaceMetrics := make(map[string]armmonitor.MetricDefinitionCollection) + for _, metric := range resourceConfig.Metrics { - // get all metrics supported by the namespace provided - metricDefinitions, err := client.AzureMonitorService.GetMetricDefinitions(*resource.ID, metric.Namespace) - if err != nil { - return nil, fmt.Errorf("no metric definitions were found for resource %s and namespace %s %w", *resource.ID, metric.Namespace, err) + + var err error + + metricDefinitions, exists := namespaceMetrics[metric.Namespace] + if !exists { + metricDefinitions, err = client.AzureMonitorService.GetMetricDefinitionsWithRetry(*resource.ID, metric.Namespace) + if err != nil { + return nil, err + } + namespaceMetrics[metric.Namespace] = metricDefinitions } if len(metricDefinitions.Value) == 0 { diff --git a/x-pack/metricbeat/module/azure/monitor/client_helper_test.go b/x-pack/metricbeat/module/azure/monitor/client_helper_test.go index d5c89bbbd78..782d941166b 100644 --- a/x-pack/metricbeat/module/azure/monitor/client_helper_test.go +++ b/x-pack/metricbeat/module/azure/monitor/client_helper_test.go @@ -88,7 +88,7 @@ func TestMapMetric(t *testing.T) { client := azure.NewMockClient() t.Run("return error when no metric definitions were found", func(t *testing.T) { m := &azure.MockService{} - m.On("GetMetricDefinitions", mock.Anything, mock.Anything).Return(armmonitor.MetricDefinitionCollection{}, fmt.Errorf("invalid resource ID")) + m.On("GetMetricDefinitionsWithRetry", mock.Anything, mock.Anything).Return(armmonitor.MetricDefinitionCollection{}, fmt.Errorf("invalid resource ID")) client.AzureMonitorService = m metric, err := mapMetrics(client, []*armresources.GenericResourceExpanded{resource}, resourceConfig) assert.Error(t, err) @@ -97,7 +97,7 @@ func TestMapMetric(t *testing.T) { }) t.Run("return all metrics when all metric names and aggregations were configured", func(t *testing.T) { m := &azure.MockService{} - m.On("GetMetricDefinitions", mock.Anything, mock.Anything).Return(metricDefinitions, nil) + m.On("GetMetricDefinitionsWithRetry", mock.Anything, mock.Anything).Return(metricDefinitions, nil) client.AzureMonitorService = m metricConfig.Name = []string{"*"} resourceConfig.Metrics = []azure.MetricConfig{metricConfig} @@ -112,7 +112,7 @@ func TestMapMetric(t *testing.T) { }) t.Run("return all metrics when specific metric names and aggregations were configured", func(t *testing.T) { m := &azure.MockService{} - m.On("GetMetricDefinitions", mock.Anything, mock.Anything).Return(metricDefinitions, nil) + m.On("GetMetricDefinitionsWithRetry", mock.Anything, mock.Anything).Return(metricDefinitions, nil) client.AzureMonitorService = m metricConfig.Name = []string{"TotalRequests", "Capacity"} metricConfig.Aggregations = []string{"Average"} diff --git a/x-pack/metricbeat/module/azure/monitor_service.go b/x-pack/metricbeat/module/azure/monitor_service.go index 823a9cdf22a..70d79729920 100644 --- a/x-pack/metricbeat/module/azure/monitor_service.go +++ b/x-pack/metricbeat/module/azure/monitor_service.go @@ -6,8 +6,13 @@ package azure import ( "context" + "errors" "fmt" + "net/http" "strings" + "time" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/elastic/elastic-agent-libs/logp" @@ -195,8 +200,43 @@ func (service *MonitorService) GetMetricNamespaces(resourceId string) (armmonito return metricNamespaceCollection, nil } -// GetMetricDefinitions will return all supported metrics based on the resource id and namespace -func (service *MonitorService) GetMetricDefinitions(resourceId string, namespace string) (armmonitor.MetricDefinitionCollection, error) { +// sleepIfPossible will check for the error 429 in the azure response, and look for the retry after header. +// If the header is present, then metricbeat will sleep for that duration, otherwise it will return an error. +func (service *MonitorService) sleepIfPossible(err error, resourceId string, namespace string) error { + errorMsg := "no metric definitions were found for resource " + resourceId + " and namespace " + namespace + + var respError *azcore.ResponseError + ok := errors.As(err, &respError) + if !ok { + return fmt.Errorf("%s, failed to cast error to azcore.ResponseError", errorMsg) + } + // Check for TooManyRequests error and retry if it is the case + if respError.StatusCode != http.StatusTooManyRequests { + return fmt.Errorf("%s, %w", errorMsg, err) + } + + // Check if the error has the header Retry After. + // If it is present, then we should try to make this request again. + retryAfter := respError.RawResponse.Header.Get("Retry-After") + if retryAfter == "" { + return fmt.Errorf("%s %w, failed to find Retry-After header", errorMsg, err) + } + + duration, errD := time.ParseDuration(retryAfter + "s") + if errD != nil { + return fmt.Errorf("%s, failed to parse duration %s from header retry after", errorMsg, retryAfter) + } + + service.log.Infof("%s, metricbeat will try again after %s seconds", errorMsg, retryAfter) + time.Sleep(duration) + service.log.Infof("%s, metricbeat finished sleeping and will try again now", errorMsg) + + return nil +} + +// GetMetricDefinitionsWithRetry will return all supported metrics based on the resource id and namespace +// It will check for an error when moving the pager to the next page, and retry if possible. +func (service *MonitorService) GetMetricDefinitionsWithRetry(resourceId string, namespace string) (armmonitor.MetricDefinitionCollection, error) { opts := &armmonitor.MetricDefinitionsClientListOptions{} if namespace != "" { @@ -210,9 +250,12 @@ func (service *MonitorService) GetMetricDefinitions(resourceId string, namespace for pager.More() { nextPage, err := pager.NextPage(service.context) if err != nil { - return armmonitor.MetricDefinitionCollection{}, err + retryError := service.sleepIfPossible(err, resourceId, namespace) + if retryError != nil { + return armmonitor.MetricDefinitionCollection{}, err + } + continue } - metricDefinitionCollection.Value = append(metricDefinitionCollection.Value, nextPage.Value...) } diff --git a/x-pack/metricbeat/module/azure/service_interface.go b/x-pack/metricbeat/module/azure/service_interface.go index 39a7da63621..cb524c7f6ea 100644 --- a/x-pack/metricbeat/module/azure/service_interface.go +++ b/x-pack/metricbeat/module/azure/service_interface.go @@ -13,7 +13,7 @@ import ( type Service interface { GetResourceDefinitionById(id string) (armresources.GenericResource, error) GetResourceDefinitions(id []string, group []string, rType string, query string) ([]*armresources.GenericResourceExpanded, error) - GetMetricDefinitions(resourceId string, namespace string) (armmonitor.MetricDefinitionCollection, error) + GetMetricDefinitionsWithRetry(resourceId string, namespace string) (armmonitor.MetricDefinitionCollection, error) GetMetricNamespaces(resourceId string) (armmonitor.MetricNamespaceCollection, error) GetMetricValues(resourceId string, namespace string, timegrain string, timespan string, metricNames []string, aggregations string, filter string) ([]armmonitor.Metric, string, error) } diff --git a/x-pack/metricbeat/module/azure/storage/client_helper.go b/x-pack/metricbeat/module/azure/storage/client_helper.go index 393607be7ae..e60b9472a57 100644 --- a/x-pack/metricbeat/module/azure/storage/client_helper.go +++ b/x-pack/metricbeat/module/azure/storage/client_helper.go @@ -41,13 +41,13 @@ func mapMetrics(client *azure.Client, resources []*armresources.GenericResourceE } // get all metric definitions supported by the namespace provided - metricDefinitions, err := client.AzureMonitorService.GetMetricDefinitions(resourceID, namespace) + metricDefinitions, err := client.AzureMonitorService.GetMetricDefinitionsWithRetry(resourceID, namespace) if err != nil { - return nil, fmt.Errorf("no metric definitions were found for resource %s and namespace %s %w", resourceID, namespace, err) + return nil, err } if len(metricDefinitions.Value) == 0 { - return nil, fmt.Errorf("no metric definitions were found for resource %s and namespace %s %w", resourceID, namespace, err) + return nil, fmt.Errorf("no metric definitions were found for resource %s and namespace %s", resourceID, namespace) } var filteredMetricDefinitions []armmonitor.MetricDefinition diff --git a/x-pack/metricbeat/module/azure/storage/client_helper_test.go b/x-pack/metricbeat/module/azure/storage/client_helper_test.go index ecdf4941ac9..14121c3a0b3 100644 --- a/x-pack/metricbeat/module/azure/storage/client_helper_test.go +++ b/x-pack/metricbeat/module/azure/storage/client_helper_test.go @@ -119,17 +119,17 @@ func TestMapMetric(t *testing.T) { client := azure.NewMockClient() t.Run("return error when no metric definitions were found", func(t *testing.T) { m := &azure.MockService{} - m.On("GetMetricDefinitions", mock.Anything, mock.Anything).Return(emptyMetricDefinitions, nil) + m.On("GetMetricDefinitionsWithRetry", mock.Anything, mock.Anything).Return(emptyMetricDefinitions, nil) client.AzureMonitorService = m metric, err := mapMetrics(client, []*armresources.GenericResourceExpanded{resource}, resourceConfig) assert.Error(t, err) - assert.Equal(t, err.Error(), "no metric definitions were found for resource 123 and namespace Microsoft.Storage/storageAccounts %!w()") + assert.Equal(t, err.Error(), "no metric definitions were found for resource 123 and namespace Microsoft.Storage/storageAccounts") assert.Equal(t, metric, []azure.Metric(nil)) m.AssertExpectations(t) }) t.Run("return mapped metrics correctly", func(t *testing.T) { m := &azure.MockService{} - m.On("GetMetricDefinitions", mock.Anything, mock.Anything).Return(metricDefinitions, nil) + m.On("GetMetricDefinitionsWithRetry", mock.Anything, mock.Anything).Return(metricDefinitions, nil) client.AzureMonitorService = m metrics, err := mapMetrics(client, []*armresources.GenericResourceExpanded{resource}, resourceConfig) assert.NoError(t, err) From c6fd99cdaccff5009e6a5fec6e4281d2bafa41c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Sowi=C5=84ski?= Date: Wed, 20 Mar 2024 15:17:03 +0100 Subject: [PATCH 048/313] Filebeat gcs input addFiledJobs panic protection (#38407) * Filebeat gcs input addFiledJobs panic protection In case `obj, err := s.bucket.Object(name).Attrs(ctx)` return an error, obj will be probably `nil` in consequence the code below will panic `objectURI := "gs://" + s.src.BucketName + "/" + obj.Name` * Update CHANGELOG-developer.next.asciidoc --- CHANGELOG-developer.next.asciidoc | 1 + x-pack/filebeat/input/gcs/scheduler.go | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index b617edfaf04..9250671ce7f 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -92,6 +92,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. - Make winlogbeat/sys/wineventlog follow the unsafe.Pointer rules. {pull}36650[36650] - Cleaned up documentation errors & fixed a minor bug in Filebeat Azure blob storage input. {pull}36714[36714] - Fix copy arguments for strict aligned architectures. {pull}36976[36976] +- Fix filebit gcs input panic {pull}38407[38407] ==== Added diff --git a/x-pack/filebeat/input/gcs/scheduler.go b/x-pack/filebeat/input/gcs/scheduler.go index c68c3123cf2..ea992b49924 100644 --- a/x-pack/filebeat/input/gcs/scheduler.go +++ b/x-pack/filebeat/input/gcs/scheduler.go @@ -233,6 +233,7 @@ func (s *scheduler) addFailedJobs(ctx context.Context, jobs []*job) []*job { obj, err := s.bucket.Object(name).Attrs(ctx) if err != nil { s.log.Errorf("adding failed job %s to job list caused an error: %w", err) + continue } objectURI := "gs://" + s.src.BucketName + "/" + obj.Name From 4b7467b5c5a72bf867b73c9493b73d145f80ebb8 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 20 Mar 2024 15:27:41 +0100 Subject: [PATCH 049/313] Beats pipeline generator (#38162) This commit introduces a main pipeline generator similar to the one used with Jenkins #20104 to help with the migration to Buildkite. Co-authored-by: Pavel Zorin Co-authored-by: Alexandros Sapranidis --- .buildkite/auditbeat/scripts/unit-tests.sh | 3 +- .buildkite/buildkite.yml | 44 +++ .buildkite/hooks/pre-command | 3 +- .buildkite/pipeline.py | 431 +++++++++++++++++++++ .buildkite/pipeline.yml | 9 +- .buildkite/scripts/generate_pipeline.sh | 11 + auditbeat/buildkite.yml | 56 +++ filebeat/buildkite.yml | 53 +++ 8 files changed, 605 insertions(+), 5 deletions(-) create mode 100644 .buildkite/buildkite.yml create mode 100755 .buildkite/pipeline.py create mode 100755 .buildkite/scripts/generate_pipeline.sh create mode 100644 auditbeat/buildkite.yml create mode 100644 filebeat/buildkite.yml diff --git a/.buildkite/auditbeat/scripts/unit-tests.sh b/.buildkite/auditbeat/scripts/unit-tests.sh index 8a7514d747a..4b8e86243c9 100755 --- a/.buildkite/auditbeat/scripts/unit-tests.sh +++ b/.buildkite/auditbeat/scripts/unit-tests.sh @@ -5,6 +5,5 @@ set -euo pipefail echo "--- Running Unit Tests" sudo chmod -R go-w auditbeat/ -cd auditbeat umask 0022 -mage build unitTest +mage -d auditbeat build unitTest diff --git a/.buildkite/buildkite.yml b/.buildkite/buildkite.yml new file mode 100644 index 00000000000..4707707e07c --- /dev/null +++ b/.buildkite/buildkite.yml @@ -0,0 +1,44 @@ +projects: + - "auditbeat" + - "deploy/kubernetes" + - "filebeat" + - "heartbeat" + - "libbeat" + - "metricbeat" + - "packetbeat" + - "winlogbeat" + - "x-pack/auditbeat" + - "x-pack/dockerlogbeat" + - "x-pack/filebeat" + - "x-pack/functionbeat" + - "x-pack/heartbeat" + - "x-pack/libbeat" + - "x-pack/metricbeat" + - "x-pack/osquerybeat" + - "x-pack/packetbeat" + - "x-pack/winlogbeat" + +## Changeset macros that are defined here and used in each specific 3.0 pipeline. +changeset: + ci: + - "^Jenkinsfile" + - "^\\.ci/scripts/.*" + oss: + - "^go.mod" + - "^pytest.ini" + - "^dev-tools/.*" + - "^libbeat/.*" + - "^testing/.*" + xpack: + - "^go.mod" + - "^pytest.ini" + - "^dev-tools/.*" + - "^libbeat/.*" + - "^testing/.*" + - "^x-pack/libbeat/.*" + +disabled: + when: + labels: ## Skip the GitHub Pull Request builds if any of the given GitHub labels match with the assigned labels in the PR. + - skip-ci + draft: true ## Skip the GitHub Pull Request builds with Draft PRs. diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 9df1bed50a7..d7f4b336b9e 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -29,7 +29,8 @@ retry() { return 0 } -if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then source .buildkite/env-scripts/env.sh source .buildkite/env-scripts/util.sh diff --git a/.buildkite/pipeline.py b/.buildkite/pipeline.py new file mode 100755 index 00000000000..95530b89628 --- /dev/null +++ b/.buildkite/pipeline.py @@ -0,0 +1,431 @@ +#!/usr/bin/env python3 +from typing import Any +from ruamel.yaml import YAML +import os +import subprocess +import fnmatch +import sys + + +class Agent: + """Buildkite Agent object""" + + def __init__(self, image: str, provider: str): + self.image: str = image + self.provider: str = provider + + def create_entity(self): + raise NotImplementedError("Not implemented yet") + + +class AWSAgent(Agent): + """AWS Agent object""" + + def __init__(self, image: str, instance_type: str = None): + super().__init__(image, "aws") + if instance_type is None: + self.instance_type: str = "t4g.large" + else: + self.instance_type = instance_type + + def create_entity(self) -> dict[str, str]: + return { + "provider": self.provider, + "imagePrefix": self.image, + "instanceType": self.instance_type, + } + + +class GCPAgent(Agent): + """GCP Agent object""" + + def __init__(self, image: str): + super().__init__(image, "gcp") + + def create_entity(self) -> dict[str, str]: + return { + "provider": self.provider, + "image": self.image, + } + + +class OrkaAgent(Agent): + """Orka Agent object""" + + def __init__(self, image: str): + super().__init__(image, "orka") + + def create_entity(self) -> dict[str, str]: + return { + "provider": self.provider, + "imagePrefix": self.image, + } + + +class Step: + """Buildkite Step object""" + + def __init__( + self, + name: str, + project: str, + category: str, + agent: Agent, + definition: dict[str, Any], + ): + self.command = definition.get("command", "") + self.env = definition.get("env", {}) + self.agent: Agent = agent + self.name: str = name + self.project: str = project + self.category: str = category + self.comment = "/test " + self.project + " " + self.name + self.label = self.name + + def __lt__(self, other): + return self.name < other.name + + def step_command(self) -> list[str]: + commands = [ + f"cd {self.project}", + self.command, + ] + return commands + + def create_entity(self) -> dict[str, Any]: + data = { + "label": f"{self.project} {self.name}", + "command": self.step_command(), + "notify": [ + { + "github_commit_status": { + "context": f"{self.project.title()}: {self.name}", + } + } + ], + "agents": self.agent.create_entity(), + "artifact_paths": [ + f"{self.project}/build/*.xml", + f"{self.project}/build/*.json", + ], + } + if self.env: + data["env"] = self.env + return data + + +class Group: + """Buildkite Group object""" + + def __init__(self, project: str, category: str, steps: list[Step]): + self.project: str = project + self.category: str = category + self.steps: list[Step] = steps + + def __lt__(self, other): + return self.project < other.project + + def create_entity(self) -> dict[str, Any]: + if len(self.steps) == 0: + return {} + + data = { + "group": f"{self.project} {self.category}", + "key": f"{self.project}-{self.category}", + "steps": [step.create_entity() for step in self.steps], + } + + return data + + +class GitHelper: + def __init__(self): + self.files: list[str] = [] + + def get_pr_changeset(self) -> list[str]: + base_branch = os.getenv("BUILDKITE_PULL_REQUEST_BASE_BRANCH", "main") + diff_command = ["git", "diff", "--name-only", "{}...HEAD".format(base_branch)] + result = subprocess.run(diff_command, stdout=subprocess.PIPE) + if result.returncode == 0: + self.files = result.stdout.decode().splitlines() + else: + print(f"Detecting changed files failed, exiting [{result.returncode}]") + exit(result.returncode) + return self.files + + +class BuildkitePipeline: + """Buildkite Pipeline object""" + + def __init__(self, groups: list[Group] = None): + if groups is None: + groups = [] + self.groups: list[Group] = groups + + def create_entity(self): + data = {"steps": [group.create_entity() for group in self.groups]} + return data + + +def is_pr() -> bool: + return os.getenv("BUILDKITE_PULL_REQUEST") != "false" + + +def group_comment(group: Group) -> bool: + comment = os.getenv("GITHUB_PR_TRIGGER_COMMENT") + if comment: + # the comment should be a subset of the values + # in .buildkite/pull-requests.json + # TODO: change /test + comment_prefix = "buildkite test" + if group.category == "mandatory": + # i.e: /test filebeat + return comment_prefix + " " + group.project in comment + else: + # i.e: test filebeat extended + return ( + comment_prefix + " " + group.project + " " + group.category in comment + ) + + +def filter_files_by_glob(files, patterns: list[str]): + for pattern in patterns: + # TODO: Support glob extended patterns: ^ and etc. + # Now it supports only linux glob syntax + if fnmatch.filter(files, pattern): + return True + return False + + +def is_in_pr_changeset( + project_changeset_filters: list[str], changeset: list[str] +) -> bool: + return filter_files_by_glob(changeset, project_changeset_filters) + + +def is_group_enabled( + group: Group, changeset_filters: list[str], changeset: list[str] +) -> bool: + if not is_pr(): + return True + + if ( + is_pr() + and is_in_pr_changeset(changeset_filters, changeset) + and group.category.startswith("mandatory") + ): + return True + + return group_comment(group) + + +def fetch_stage(name: str, stage, project: str, category: str) -> Step: + """Create a step given the yaml object.""" + + agent: Agent = None + if ("provider" not in stage) or stage["provider"] == "gcp": + agent = GCPAgent(image=stage["platform"]) + elif stage["provider"] == "aws": + agent = AWSAgent( + image=stage["platform"], + ) + elif stage["provider"] == "orka": + agent = OrkaAgent(image=stage["platform"]) + + return Step( + category=category, name=name, agent=agent, project=project, definition=stage + ) + + +def fetch_group(stages, project: str, category: str) -> Group: + """Create a group given the yaml object.""" + + steps = [] + + for stage in stages: + steps.append( + fetch_stage( + category=category, name=stage, project=project, stage=stages[stage] + ) + ) + + return Group(project=project, category=category, steps=steps) + + +def fetch_pr_pipeline(yaml: YAML) -> list[Group]: + git_helper = GitHelper() + changeset = git_helper.get_pr_changeset() + groups: list[Group] = [] + doc = pipeline_loader(yaml) + for project in doc["projects"]: + project_file = os.path.join(project, "buildkite.yml") + if not os.path.isfile(project_file): + continue + project_obj = project_loader(yaml, project_file) + group = fetch_group( + stages=project_obj["stages"]["mandatory"], + project=project, + category="mandatory", + ) + + if is_group_enabled(group, project_obj["when"]["changeset"], changeset): + groups.append(group) + + group = fetch_group( + stages=project_obj["stages"]["extended"], + project=project, + category="extended", + ) + + if is_group_enabled(group, project_obj["when"]["changeset"], changeset): + groups.append(group) + + # TODO: improve this merging lists + all_groups = [] + for group in groups: + all_groups.append(group) + + return all_groups + + +class PRComment: + command: str + group: str + project: str + step: str + + def __init__(self, comment: str): + words = comment.split() + self.command = words.pop(0) if words else "" + self.project = words.pop(0) if words else "" + self.group = words.pop(0) if words else "" + self.step = words.pop(0) if words else "" + + +# A comment like "/test filebeat extended" +# Returns a group of steps corresponding to the comment +def fetch_pr_comment_group_pipeline(comment: PRComment, yaml: YAML) -> list[Group]: + groups = [] + doc = pipeline_loader(yaml) + if comment.project in doc["projects"]: + project_file = os.path.join(comment.project, "buildkite.yml") + if not os.path.isfile(project_file): + raise FileNotFoundError( + "buildkite.yml not found in: " + "{}".format(comment.project) + ) + project_obj = project_loader(yaml, project_file) + if not project_obj["stages"][comment.group]: + raise ValueError( + "Group not found in {} buildkite.yml: {}".format( + comment.project, comment.group + ) + ) + + group = fetch_group( + stages=project_obj["stages"][comment.group], + project=comment.project, + category="mandatory", + ) + groups.append(group) + + return groups + + +# A comment like "/test filebeat extended unitTest-macos" +def fetch_pr_comment_step_pipeline(comment: PRComment, yaml: YAML) -> list[Group]: + groups = [] + doc = pipeline_loader(yaml) + if comment.project in doc["projects"]: + project_file = os.path.join(comment.project, "buildkite.yml") + if not os.path.isfile(project_file): + raise FileNotFoundError( + "buildkite.yml not found in: " + "{}".format(comment.project) + ) + project_obj = project_loader(yaml, project_file) + if not project_obj["stages"][comment.group]: + raise ValueError( + "Group not found in {} buildkite.yml: {}".format( + comment.project, comment.group + ) + ) + group = fetch_group( + stages=project_obj["stages"][comment.group], + project=comment.project, + category="mandatory", + ) + + filtered_steps = list( + filter(lambda step: step.name == comment.step, group.steps) + ) + + if not filtered_steps: + raise ValueError( + "Step {} not found in {} buildkite.yml".format( + comment.step, comment.project + ) + ) + group.steps = filtered_steps + groups.append(group) + + return groups + + +def pr_comment_pipeline(pr_comment: PRComment, yaml: YAML) -> list[Group]: + + if pr_comment.command == "/test": + + # A comment like "/test" for a PR + # We rerun the PR pipeline + if not pr_comment.group: + return fetch_pr_pipeline(yaml) + + # A comment like "/test filebeat" + # We don't know what group to run hence raise an error + if pr_comment.project and not pr_comment.group: + raise ValueError( + "Specify group or/and step for {}".format(pr_comment.project) + ) + + # A comment like "/test filebeat extended" + # We rerun the filebeat extended pipeline for the PR + if pr_comment.group and not pr_comment.step: + return fetch_pr_comment_group_pipeline(pr_comment, yaml) + + # A comment like "/test filebeat extended unitTest-macos" + if pr_comment.step: + return fetch_pr_comment_step_pipeline(pr_comment, yaml) + + +# TODO: validate unique stages! +def main() -> None: + yaml = YAML(typ="safe") + all_groups = [] + if is_pr(): + if os.getenv("GITHUB_PR_TRIGGER_COMMENT"): + comment = PRComment(os.getenv("GITHUB_PR_TRIGGER_COMMENT")) + all_groups = pr_comment_pipeline(comment, yaml) + else: + all_groups = fetch_pr_pipeline(yaml) + # TODO what to load when not in PR + + # Produce the dynamic pipeline + print( + "# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json" + ) + yaml.dump(BuildkitePipeline(all_groups).create_entity(), sys.stdout) + + +def pipeline_loader(yaml: YAML = YAML(typ="safe")): + with open(".buildkite/buildkite.yml", "r", encoding="utf8") as file: + return yaml.load(file) + + +def project_loader(yaml: YAML = YAML(typ="safe"), project_file: str = ""): + with open(project_file, "r", encoding="utf8") as project_fp: + return yaml.load(project_fp) + + +if __name__ == "__main__": + + # pylint: disable=E1120 + main() diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 34321b61161..8f124fea4ae 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,5 +1,10 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +env: + ASDF_MAGE_VERSION: '1.15.0' steps: - - label: "Example test" - command: echo "Hello!" + - label: "Generate dynamic pipeline" + command: ".buildkite/scripts/generate_pipeline.sh" + agents: + provider: "gcp" + image: "family/platform-ingest-beats-ubuntu-2204" diff --git a/.buildkite/scripts/generate_pipeline.sh b/.buildkite/scripts/generate_pipeline.sh new file mode 100755 index 00000000000..342dc8bf7ac --- /dev/null +++ b/.buildkite/scripts/generate_pipeline.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "~~~ Install dependencies" +pip3 install --quiet "ruamel.yaml<0.18.0" + +echo "+++ Run pipeline generator in dry-run mode" +python3 .buildkite/pipeline.py | yq . + +echo "~~~ Upload pipeline" +python3 .buildkite/pipeline.py | buildkite-agent pipeline upload diff --git a/auditbeat/buildkite.yml b/auditbeat/buildkite.yml new file mode 100644 index 00000000000..2abf9d68407 --- /dev/null +++ b/auditbeat/buildkite.yml @@ -0,0 +1,56 @@ +when: + changeset: ## when PR contains any of those entries in the changeset + - "auditbeat/**" + - "@ci" ## special token regarding the changeset for the ci + - "@oss" ## special token regarding the changeset for the oss +stages: + # mandatory stage - it runs always for: + # - branches/tags + # - on PRs + # - GitHub comment /test auditbeat + # - GitHub label auditbeat + mandatory: + # NOTE: stage name should be unique! + unitTest: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-ubuntu-2204" + crosscompile: + command: "make crosscompile" + platform: "family/platform-ingest-beats-ubuntu-2204" + env: + GOX_FLAGS: "-arch amd64" + unitTest-rhel-9: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-rhel-9" + unitTest-windows-2022: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-2022" + unitTest-windows-2016: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-2016" + # optional stage - it runs on: + # - branches/tags + # - on PRs if: + # - GitHub comment /test auditbeat . i.e: /test auditbeat integTest + # - GitHub label . i.e: integTest or unitTest-arm or unitTest-macos ... + extended: + # NOTE: stage name should be unique! + integTest: + command: "mage build integTest" + platform: "platform-ingest-beats-ubuntu-2204-aarch64" + provider: "aws" + integTest-arm: + command: "mage build integTest" + platform: "platform-ingest-beats-ubuntu-2204-aarch64" + provider: "aws" + unitTest-arm: + command: "mage build unitTest" + platform: "platform-ingest-beats-ubuntu-2204-aarch64" + provider: "aws" + unitTest-macos: + command: "mage build unitTest" + platform: "generic-13-ventura-x64" + provider: "orka" + unitTest-windows-2019: + command: "mage build unitTest" + platform: "family/core-windows-2019" diff --git a/filebeat/buildkite.yml b/filebeat/buildkite.yml new file mode 100644 index 00000000000..372fbcf8caf --- /dev/null +++ b/filebeat/buildkite.yml @@ -0,0 +1,53 @@ +when: + changeset: ## when PR contains any of those entries in the changeset + - "filebeat/**" + - "@ci" ## special token regarding the changeset for the ci + - "@oss" ## special token regarding the changeset for the oss +stages: + # default stage - it runs always for: + # - branches/tags + # - on PRs + # - GitHub comment /test filebeat + # - GitHub label filebeat + mandatory: + # NOTE: stage name should be unique! + unitTest: + command: "mage unitTest" + platform: "family/platform-ingest-beats-ubuntu-2204" + crosscompile: + command: "make crosscompile" + platform: "family/platform-ingest-beats-ubuntu-2204" + env: + GOX_FLAGS: "-arch amd64" + goIntegTest: + command: "mage goIntegTest" + platform: "family/platform-ingest-beats-ubuntu-2204" + pythonIntegTest: + command: "mage pythonIntegTest" + platform: "family/platform-ingest-beats-ubuntu-2204" + rhel-9: + command: "mage unitTest" + platform: "family/platform-ingest-beats-rhel-9" + unitTest-windows-2022: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-2022" + unitTest-windows-2016: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-2016" + # optional stage - it runs on: + # - branches/tags + # - on PRs if: + # - GitHub comment /test filebeat . i.e: /test filebeat integTest + # - GitHub label . i.e: integTest or unitTest-arm or unitTest-macos ... + extended: + unitTest-arm: + command: ".buildkite/filebeat/scripts/unit-tests.sh" + platform: "platform-ingest-beats-ubuntu-2204-aarch64" + provider: "aws" + unitTest-macos: + command: ".buildkite/filebeat/scripts/unit-tests.sh" + platform: "generic-13-ventura-x64" + provider: "orka" + unitTest-windows-2019: + command: ".buildkite/filebeat/scripts/unit-tests-win.ps1" + platform: "family/platform-ingest-beats-windows-2019" From 22af217d8121186898440e60dbbf9e254c63e426 Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Wed, 20 Mar 2024 16:34:21 +0200 Subject: [PATCH 050/313] Migrate xpack filebeat pipeline (#38420) * migrate x-pack/filebeat pipeline * add generate_xxx.sh script * add aws condition * add MODULE * change images * fix MODULE_DIR and add nmap * add AWS credentials * change instance config * test * revert test --- .buildkite/hooks/pre-command | 16 +- .buildkite/scripts/cloud_tests.sh | 6 +- .buildkite/scripts/common.sh | 19 +- .../generate_xpack_filebeat_pipeline.sh | 190 ++++++++++++++++++ .buildkite/scripts/setenv.sh | 2 +- .buildkite/scripts/win_unit_tests.ps1 | 2 +- .buildkite/x-pack/pipeline.xpack.filebeat.yml | 67 +++++- 7 files changed, 287 insertions(+), 15 deletions(-) create mode 100755 .buildkite/scripts/generate_xpack_filebeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index d7f4b336b9e..3d953bdd3cc 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -62,7 +62,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then source .buildkite/scripts/setenv.sh if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" @@ -70,13 +70,17 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_S fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" && "$BUILDKITE_STEP_KEY" == "extended-cloud-test" ]]; then - BEATS_AWS_SECRET_KEY=$(retry 5 vault kv get -field secret_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) - export BEATS_AWS_SECRET_KEY - BEATS_AWS_ACCESS_KEY=$(retry 5 vault kv get -field access_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) - export BEATS_AWS_ACCESS_KEY +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_STEP_KEY" == "extended-cloud-test" ]]; then + BEATS_AWS_SECRET_KEY=$(retry 5 vault kv get -field secret_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) + export BEATS_AWS_SECRET_KEY + BEATS_AWS_ACCESS_KEY=$(retry 5 vault kv get -field access_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) + export BEATS_AWS_ACCESS_KEY + fi fi + + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then if [[ "$BUILDKITE_STEP_KEY" == "extended-win-10-system-tests" || "$BUILDKITE_STEP_KEY" == "mandatory-win-2022-system-tests" ]]; then PRIVATE_CI_GCS_CREDENTIALS_SECRET=$(retry 5 vault kv get -field plaintext -format=json ${PRIVATE_CI_GCS_CREDENTIALS_PATH}) diff --git a/.buildkite/scripts/cloud_tests.sh b/.buildkite/scripts/cloud_tests.sh index 3baeb1be1a3..d96baf670a9 100755 --- a/.buildkite/scripts/cloud_tests.sh +++ b/.buildkite/scripts/cloud_tests.sh @@ -1,7 +1,11 @@ #!/usr/bin/env bash # What Terraform Module will run -export MODULE_DIR="x-pack/metricbeat/module/aws" +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + export MODULE_DIR="x-pack/metricbeat/module/aws" +elif [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + export MODULE_DIR="x-pack/filebeat/input/awss3/_meta/terraform" +fi source .buildkite/scripts/install_tools.sh diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index b6170070836..4d687ce6464 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -21,11 +21,13 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" [ -z "${run_xpack_winlogbeat+x}" ] && run_xpack_winlogbeat="$(buildkite-agent meta-data get run_xpack_winlogbeat --default "false")" [ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" +[ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" [ -z "${run_xpack_auditbeat_arm_tests+x}" ] && run_xpack_auditbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_arm_tests --default "false")" +[ -z "${run_xpack_filebeat_arm_tests+x}" ] && run_xpack_filebeat_arm_tests="$(buildkite-agent meta-data get run_xpack_filebeat_arm_tests --default "false")" [ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" @@ -33,11 +35,13 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_metricbeat_macos_tests+x}" ] && run_metricbeat_macos_tests="$(buildkite-agent meta-data get run_metricbeat_macos_tests --default "false")" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_auditbeat_macos_tests+x}" ] && run_xpack_auditbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_macos_tests --default "false")" +[ -z "${run_xpack_filebeat_macos_tests+x}" ] && run_xpack_filebeat_macos_tests="$(buildkite-agent meta-data get run_xpack_filebeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" +[ -z "${run_xpack_filebeat_aws_tests+x}" ] && run_xpack_filebeat_aws_tests="$(buildkite-agent meta-data get run_xpack_filebeat_aws_tests --default "false")" metricbeat_changeset=( "^metricbeat/.*" @@ -63,6 +67,10 @@ xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) +xpack_filebeat_changeset=( + "^x-pack/filebeat/.*" + ) + xpack_libbeat_changeset=( "^x-pack/libbeat/.*" ) @@ -126,7 +134,10 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-auditbeat") BEAT_CHANGESET_REFERENCE=${xpack_auditbeat_changeset[@]} ;; - "beats-xpack-dockerlogbeat") + "beats-xpack-filebeat") + BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} + ;; +"beats-xpack-dockerlogbeat") BEAT_CHANGESET_REFERENCE=${xpack_dockerlogbeat_changeset[@]} ;; "beats-xpack-libbeat") @@ -388,7 +399,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -399,7 +410,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -410,7 +421,7 @@ are_conditions_met_macos_tests() { are_conditions_met_aws_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_AWS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_AWS_LABEL} || "${!TRIGGER_SPECIFIC_AWS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi diff --git a/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh b/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh new file mode 100755 index 00000000000..80d28770bf0 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh @@ -0,0 +1,190 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-filebeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":python: Python Integration Tests" + key: "mandatory-python-int-test" + command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "mandatory-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_2016}" + - "${IMAGE_WIN_2022}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h + + - group: "Extended Windows Tests" + key: "extended-win-tests" + steps: + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "extended-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +if are_conditions_met_arm_tests || are_conditions_met_macos_tests || are_conditions_met_aws_tests; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: + +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + - label: ":linux: ARM Ubuntu Unit Tests" + key: "extended-arm64-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +if are_conditions_met_aws_tests; then + cat >> $pipelineName <<- YAML + - label: ":linux: Cloud Tests" + key: "extended-cloud-test" + command: ".buildkite/scripts/cloud_tests.sh" + env: + MODULE: $MODULE + agents: + provider: "gcp" + image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index e40f858f1c4..b11bc4fe168 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -64,7 +64,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_S export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-filebeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. source .buildkite/scripts/common.sh defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" diff --git a/.buildkite/scripts/win_unit_tests.ps1 b/.buildkite/scripts/win_unit_tests.ps1 index b61e4107c3c..6c3af6e9321 100644 --- a/.buildkite/scripts/win_unit_tests.ps1 +++ b/.buildkite/scripts/win_unit_tests.ps1 @@ -150,7 +150,7 @@ withPython $env:SETUP_WIN_PYTHON_VERSION withMinGW -if ($env:BUILDKITE_PIPELINE_SLUG -eq "beats-packetbeat") { +if ($env:BUILDKITE_PIPELINE_SLUG -eq "beats-packetbeat" -or $env:BUILDKITE_PIPELINE_SLUG -eq "beats-xpack-filebeat") { withNmap $env:NMAP_WIN_VERSION } diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index 6d3d7d9daee..b0dd795c811 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -1,6 +1,69 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json name: "beats-xpack-filebeat" +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" + IMAGE_WIN_10: "family/general-windows-10" + IMAGE_WIN_11: "family/general-windows-11" + IMAGE_WIN_2016: "family/core-windows-2016" + IMAGE_WIN_2019: "family/core-windows-2019" + IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/filebeat" + steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Filebeat - run_xpack_filebeat" + key: "run_xpack_filebeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Filebeat - run_xpack_filebeat_macos_tests" + key: "run_xpack_filebeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Filebeat - run_xpack_filebeat_arm_tests" + key: "run_xpack_filebeat_arm_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Filebeat - run_xpack_filebeat_aws_tests" + key: "run_xpack_filebeat_aws_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack filebeat pipeline" + key: "xpack-filebeat-pipeline" + command: ".buildkite/scripts/generate_xpack_filebeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" \ No newline at end of file From 571569961df4932a8f133f6f248aa2a38e5406a9 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Wed, 20 Mar 2024 11:37:37 -0400 Subject: [PATCH 051/313] metricbeat/module/rabbitmq/queue: Fix data type for `consumers.utilisation.pct` (#38436) Fix mapping type for `rabbitmq.queue.consumers.utilisation.pct` to be `scaled_float` instead of `long` because the values range on `[0, 1.0]`. Previously, truncation converted the value to an integer so it either reported zero or one. There was a bug in the unit tests that did not catch this until we updated to testify 1.9.0 (https://github.com/stretchr/testify/pull/1531). This PR removes the temporary testify v1.8.4 pin. --- CHANGELOG.next.asciidoc | 3 ++- NOTICE.txt | 4 ++-- go.mod | 1 - go.sum | 4 ++-- metricbeat/docs/fields.asciidoc | 2 +- metricbeat/module/rabbitmq/fields.go | 2 +- metricbeat/module/rabbitmq/queue/_meta/data.json | 4 ++-- metricbeat/module/rabbitmq/queue/_meta/fields.yml | 3 ++- metricbeat/module/rabbitmq/queue/data.go | 2 +- metricbeat/module/rabbitmq/queue/queue_test.go | 2 +- 10 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f3bb1acc9a3..675c3cad1bb 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -109,12 +109,13 @@ fields added to events containing the Beats version. {pull}37553[37553] - Fix panics when parsing dereferencing invalid parsed url. {pull}34702[34702] - Fix setuid root when running under cgroups v2. {pull}37794[37794] - Adjust State loader to only retry when response code status is 5xx {pull}37981[37981] -- Reset prctl dumpable flag after cap drop. {pull}38269[38269] +- Reset prctl dumpable flag after cap drop. {pull}38269[38269] *Metricbeat* - Fix Azure Monitor 429 error by causing metricbeat to retry the request again. {pull}38294[38294] - Fix fields not being parsed correctly in postgresql/database {issue}25301[25301] {pull}37720[37720] +- rabbitmq/queue - Change the mapping type of `rabbitmq.queue.consumers.utilisation.pct` to `scaled_float` from `long` because the values fall within the range of `[0.0, 1.0]`. Previously, conversion to integer resulted in reporting either `0` or `1`. *Osquerybeat* diff --git a/NOTICE.txt b/NOTICE.txt index f2e34a27813..bc542437a72 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -22892,11 +22892,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : github.com/stretchr/testify -Version: v1.8.4 +Version: v1.9.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/stretchr/testify@v1.8.4/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/stretchr/testify@v1.9.0/LICENSE: MIT License diff --git a/go.mod b/go.mod index cb6342852c4..f8404d4c3c7 100644 --- a/go.mod +++ b/go.mod @@ -420,7 +420,6 @@ replace ( github.com/google/gopacket => github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a github.com/insomniacslk/dhcp => github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 // indirect github.com/snowflakedb/gosnowflake => github.com/snowflakedb/gosnowflake v1.6.19 - github.com/stretchr/testify v1.9.0 => github.com/stretchr/testify v1.8.4 // Temporary fix for https://github.com/elastic/beats/pull/38436. github.com/tonistiigi/fifo => github.com/containerd/fifo v0.0.0-20190816180239-bda0ff6ed73c k8s.io/kubernetes v1.13.0 => k8s.io/kubernetes v1.24.15 ) diff --git a/go.sum b/go.sum index 709e6f12d53..75b7cbc2c0f 100644 --- a/go.sum +++ b/go.sum @@ -1847,8 +1847,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 435760b7406..6694528df13 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -57758,7 +57758,7 @@ type: long Fraction of the time (between 0.0 and 1.0) that the queue is able to immediately deliver messages to consumers. This can be less than 1.0 if consumers are limited by network congestion or prefetch count. -type: long +type: scaled_float format: percent diff --git a/metricbeat/module/rabbitmq/fields.go b/metricbeat/module/rabbitmq/fields.go index 95345f6b335..a2d590d8109 100644 --- a/metricbeat/module/rabbitmq/fields.go +++ b/metricbeat/module/rabbitmq/fields.go @@ -32,5 +32,5 @@ func init() { // AssetRabbitmq returns asset data. // This is the base64 encoded zlib format compressed contents of module/rabbitmq. func AssetRabbitmq() string { - return "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" + return "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" } diff --git a/metricbeat/module/rabbitmq/queue/_meta/data.json b/metricbeat/module/rabbitmq/queue/_meta/data.json index 51f8696f24b..42992de9967 100644 --- a/metricbeat/module/rabbitmq/queue/_meta/data.json +++ b/metricbeat/module/rabbitmq/queue/_meta/data.json @@ -20,7 +20,7 @@ "consumers": { "count": 3, "utilisation": { - "pct": 0 + "pct": 0.7 } }, "disk": { @@ -68,4 +68,4 @@ "address": "127.0.0.1:55555", "type": "rabbitmq" } -} \ No newline at end of file +} diff --git a/metricbeat/module/rabbitmq/queue/_meta/fields.yml b/metricbeat/module/rabbitmq/queue/_meta/fields.yml index 93a496d5926..0376de9d367 100644 --- a/metricbeat/module/rabbitmq/queue/_meta/fields.yml +++ b/metricbeat/module/rabbitmq/queue/_meta/fields.yml @@ -45,7 +45,8 @@ description: > Number of consumers. - name: consumers.utilisation.pct - type: long + type: scaled_float + scaling_factor: 100 format: percent description: > Fraction of the time (between 0.0 and 1.0) that the queue is able to immediately deliver messages to consumers. This can be less than 1.0 if consumers are limited by network congestion or prefetch count. diff --git a/metricbeat/module/rabbitmq/queue/data.go b/metricbeat/module/rabbitmq/queue/data.go index 682abcbc194..35a4a772c0e 100644 --- a/metricbeat/module/rabbitmq/queue/data.go +++ b/metricbeat/module/rabbitmq/queue/data.go @@ -43,7 +43,7 @@ var ( "consumers": s.Object{ "count": c.Int("consumers"), "utilisation": s.Object{ - "pct": c.Int("consumer_utilisation", s.IgnoreAllErrors), + "pct": c.Float("consumer_utilisation", s.IgnoreAllErrors), }, }, "messages": s.Object{ diff --git a/metricbeat/module/rabbitmq/queue/queue_test.go b/metricbeat/module/rabbitmq/queue/queue_test.go index 4e0d08aba6f..41f0fd61b20 100644 --- a/metricbeat/module/rabbitmq/queue/queue_test.go +++ b/metricbeat/module/rabbitmq/queue/queue_test.go @@ -55,7 +55,7 @@ func TestFetchEventContents(t *testing.T) { consumers := event["consumers"].(mapstr.M) utilisation := consumers["utilisation"].(mapstr.M) assert.EqualValues(t, 3, consumers["count"]) - assert.EqualValues(t, 0.7, utilisation["pct"]) + assert.Equal(t, 0.7, utilisation["pct"]) memory := event["memory"].(mapstr.M) assert.EqualValues(t, 232720, memory["bytes"]) From 16f8d09fa3420c6fd4e09ef4d100f269551dc695 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Wed, 20 Mar 2024 18:21:31 +0200 Subject: [PATCH 052/313] Set the proper comment to trigger the central pipeline (#38487) The new main dynamic pipeline parses the comment and outputs what steps are needed, so we don't need the buildkite-pr-bot to control that anymore. Signed-off-by: Alexandros Sapranidis --- .buildkite/pull-requests.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 669b70d6570..8219bb2c9e9 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -9,8 +9,8 @@ "set_commit_status": true, "build_on_commit": true, "build_on_comment": true, - "trigger_comment_regex": "^(?:(?:buildkite\\W+)?(?:build|test)\\W+(?:this|it))|^/test$", - "always_trigger_comment_regex": "^(?:(?:buildkite\\W+)?(?:build|test)\\W+(?:this|it))|^/test$", + "trigger_comment_regex": "^/test .*$", + "always_trigger_comment_regex": "^/test .*$", "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], From 2e4cbdb3fedb93bea32c85d329f5741d61f8585c Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Wed, 20 Mar 2024 15:41:06 -0400 Subject: [PATCH 053/313] Release event pointers faster as they go through the pipeline (#38166) Make two changes to allow event data to be freed from memory faster: - Clear event pointers from the memory queue buffer when they are vended instead of when they're acknowledged. (The data will be preserved in the event batch structure until acknowledgment.) - Clear event pointers from the batch structure immediately after it is acknowledged instead of waiting for the batch to be freed naturally. In benchmarks of Filebeat with saturated Filestream input going to an Elasticsearch output, this lowered average memory footprint by ~10%. --- libbeat/publisher/pipeline/ttl_batch.go | 4 ++ libbeat/publisher/pipeline/ttl_batch_test.go | 45 +++++++++++++++++++ libbeat/publisher/queue/memqueue/broker.go | 8 +++- .../publisher/queue/memqueue/queue_test.go | 38 ++++++++++++++++ libbeat/publisher/queue/memqueue/runloop.go | 9 +--- 5 files changed, 95 insertions(+), 9 deletions(-) diff --git a/libbeat/publisher/pipeline/ttl_batch.go b/libbeat/publisher/pipeline/ttl_batch.go index c374ac88d72..dcc2790f231 100644 --- a/libbeat/publisher/pipeline/ttl_batch.go +++ b/libbeat/publisher/pipeline/ttl_batch.go @@ -93,10 +93,14 @@ func (b *ttlBatch) Events() []publisher.Event { } func (b *ttlBatch) ACK() { + // Help the garbage collector clean up the event data a little faster + b.events = nil b.done() } func (b *ttlBatch) Drop() { + // Help the garbage collector clean up the event data a little faster + b.events = nil b.done() } diff --git a/libbeat/publisher/pipeline/ttl_batch_test.go b/libbeat/publisher/pipeline/ttl_batch_test.go index a56f4b0fca1..5e277d5042c 100644 --- a/libbeat/publisher/pipeline/ttl_batch_test.go +++ b/libbeat/publisher/pipeline/ttl_batch_test.go @@ -18,6 +18,7 @@ package pipeline import ( + "fmt" "testing" "github.com/stretchr/testify/assert" @@ -91,6 +92,50 @@ func TestNestedBatchSplit(t *testing.T) { assert.True(t, doneWasCalled, "Original callback should be invoked when all children are") } +func TestBatchCallsDoneAndFreesEvents(t *testing.T) { + doneCalled := false + batch := &ttlBatch{ + done: func() { doneCalled = true }, + events: []publisher.Event{{}}, + } + require.NotNil(t, batch.events, "Initial batch events must be non-nil") + batch.ACK() + require.Nil(t, batch.events, "Calling batch.ACK should clear the events array") + require.True(t, doneCalled, "Calling batch.ACK should invoke the done callback") + + doneCalled = false + batch.events = []publisher.Event{{}} + require.NotNil(t, batch.events, "Initial batch events must be non-nil") + batch.Drop() + require.Nil(t, batch.events, "Calling batch.Drop should clear the events array") + require.True(t, doneCalled, "Calling batch.Drop should invoke the done callback") +} + +func TestNewBatchFreesEvents(t *testing.T) { + queueBatch := &mockQueueBatch{} + _ = newBatch(nil, queueBatch, 0) + assert.Equal(t, 1, queueBatch.freeEntriesCalled, "Creating a new ttlBatch should call FreeEntries on the underlying queue.Batch") +} + +type mockQueueBatch struct { + freeEntriesCalled int +} + +func (b *mockQueueBatch) Count() int { + return 1 +} + +func (b *mockQueueBatch) Done() { +} + +func (b *mockQueueBatch) Entry(i int) interface{} { + return fmt.Sprintf("event %v", i) +} + +func (b *mockQueueBatch) FreeEntries() { + b.freeEntriesCalled++ +} + type mockRetryer struct { batches []*ttlBatch } diff --git a/libbeat/publisher/queue/memqueue/broker.go b/libbeat/publisher/queue/memqueue/broker.go index e1d0fd46c00..1455745961c 100644 --- a/libbeat/publisher/queue/memqueue/broker.go +++ b/libbeat/publisher/queue/memqueue/broker.go @@ -403,8 +403,12 @@ func (b *batch) Entry(i int) interface{} { } func (b *batch) FreeEntries() { - // Memory queue can't release event references until they're fully acknowledged, - // so do nothing. + // This signals that the event data has been copied out of the batch, and is + // safe to free from the queue buffer, so set all the event pointers to nil. + for i := 0; i < b.count; i++ { + index := (b.start + i) % len(b.queue.buf) + b.queue.buf[index].event = nil + } } func (b *batch) Done() { diff --git a/libbeat/publisher/queue/memqueue/queue_test.go b/libbeat/publisher/queue/memqueue/queue_test.go index 53f8da4b77c..637e7ccd4fb 100644 --- a/libbeat/publisher/queue/memqueue/queue_test.go +++ b/libbeat/publisher/queue/memqueue/queue_test.go @@ -438,6 +438,44 @@ func TestEntryIDs(t *testing.T) { }) } +func TestBatchFreeEntries(t *testing.T) { + const queueSize = 10 + const batchSize = 5 + // 1. Add 10 events to the queue, request two batches with 5 events each + // 2. Make sure the queue buffer has 10 non-nil events + // 3. Call FreeEntries on the second batch + // 4. Make sure only events 6-10 are nil + // 5. Call FreeEntries on the first batch + // 6. Make sure all events are nil + testQueue := NewQueue(nil, nil, Settings{Events: queueSize, MaxGetRequest: batchSize, FlushTimeout: time.Second}, 0) + producer := testQueue.Producer(queue.ProducerConfig{}) + for i := 0; i < queueSize; i++ { + _, ok := producer.Publish(i) + require.True(t, ok, "Queue publish must succeed") + } + batch1, err := testQueue.Get(batchSize) + require.NoError(t, err, "Queue read must succeed") + require.Equal(t, batchSize, batch1.Count(), "Returned batch size must match request") + batch2, err := testQueue.Get(batchSize) + require.NoError(t, err, "Queue read must succeed") + require.Equal(t, batchSize, batch2.Count(), "Returned batch size must match request") + // Slight concurrency subtlety: we check events are non-nil after the queue + // reads, since if we do it before we have no way to be sure the insert + // has been completed. + for i := 0; i < queueSize; i++ { + require.NotNil(t, testQueue.buf[i].event, "All queue events must be non-nil") + } + batch2.FreeEntries() + for i := 0; i < batchSize; i++ { + require.NotNilf(t, testQueue.buf[i].event, "Queue index %v: batch 1's events should be unaffected by calling FreeEntries on Batch 2", i) + require.Nilf(t, testQueue.buf[batchSize+i].event, "Queue index %v: batch 2's events should be nil after FreeEntries", batchSize+i) + } + batch1.FreeEntries() + for i := 0; i < queueSize; i++ { + require.Nilf(t, testQueue.buf[i].event, "Queue index %v: all events should be nil after calling FreeEntries on both batches") + } +} + // producerACKWaiter is a helper that can listen to queue producer callbacks // and wait on them from the test thread, so we can test the queue's asynchronous // behavior without relying on time.Sleep. diff --git a/libbeat/publisher/queue/memqueue/runloop.go b/libbeat/publisher/queue/memqueue/runloop.go index 0f7788c6209..45ae3c0a1a2 100644 --- a/libbeat/publisher/queue/memqueue/runloop.go +++ b/libbeat/publisher/queue/memqueue/runloop.go @@ -187,13 +187,8 @@ func (l *runLoop) handleGetReply(req *getRequest) { } func (l *runLoop) handleDelete(count int) { - // Clear the internal event pointers so they can be garbage collected - for i := 0; i < count; i++ { - index := (l.bufPos + i) % len(l.broker.buf) - l.broker.buf[index].event = nil - } - - // Advance position and counters + // Advance position and counters. Event data was already cleared in + // batch.FreeEntries when the events were vended. l.bufPos = (l.bufPos + count) % len(l.broker.buf) l.eventCount -= count l.consumedCount -= count From a2f6d8ca376b403f9acd1be93e258a68e9cd4a7b Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Wed, 20 Mar 2024 18:02:24 -0400 Subject: [PATCH 054/313] [updatecli] update elastic stack version for testing 8.14.0-14d688f1 (#38426) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Update snapshot.yml Made with ❤️️ by updatecli * chore: Update snapshot.yml Made with ❤️️ by updatecli --------- Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 5cae69cbdbe..940d2e82782 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-09a11c1c-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-14d688f1-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-09a11c1c-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-14d688f1-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-09a11c1c-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-14d688f1-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 12ae03f48267f7af774b376d92168960c2129607 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Thu, 21 Mar 2024 19:03:17 +1030 Subject: [PATCH 055/313] mod: update elastic/mito to version v1.10.0 (#38504) --- CHANGELOG.next.asciidoc | 1 + NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- x-pack/filebeat/docs/inputs/input-cel.asciidoc | 4 +++- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 675c3cad1bb..adf3f72ee98 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -212,6 +212,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Add parseDateInTZ value template for the HTTPJSON input. {pull}37738[37738] - Add support for complex event objects in the HTTP Endpoint input. {issue}37910[37910] {pull}38193[38193] - Parse more fields from Elasticsearch slowlogs {pull}38295[38295] +- Update CEL mito extensions to v1.10.0 to add keys/values helper. {pull}38504[38504] *Auditbeat* diff --git a/NOTICE.txt b/NOTICE.txt index bc542437a72..32dc6c49da9 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -15645,11 +15645,11 @@ limitations under the License. -------------------------------------------------------------------------------- Dependency : github.com/elastic/mito -Version: v1.9.0 +Version: v1.10.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/mito@v1.9.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/mito@v1.10.0/LICENSE: Apache License diff --git a/go.mod b/go.mod index f8404d4c3c7..c722d1bdb81 100644 --- a/go.mod +++ b/go.mod @@ -207,7 +207,7 @@ require ( github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 github.com/elastic/go-elasticsearch/v8 v8.12.0 - github.com/elastic/mito v1.9.0 + github.com/elastic/mito v1.10.0 github.com/elastic/tk-btf v0.1.0 github.com/elastic/toutoumomoma v0.0.0-20221026030040-594ef30cb640 github.com/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15 diff --git a/go.sum b/go.sum index 75b7cbc2c0f..32a76ee6ab0 100644 --- a/go.sum +++ b/go.sum @@ -718,8 +718,8 @@ github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a h1:8WfL/X6fK11 github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a/go.mod h1:riddUzxTSBpJXk3qBHtYr4qOhFhT6k/1c0E3qkQjQpA= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= -github.com/elastic/mito v1.9.0 h1:gYB+0o5bhr5/XIlKuZOdeSFvWGTKpk0v73vsFRm98u8= -github.com/elastic/mito v1.9.0/go.mod h1:n7AvUVtYQQXb8fq87FI8z67TNzuhwBV3kHBkDT1qJYQ= +github.com/elastic/mito v1.10.0 h1:LhkzBXarU32zAf24k3HOWki0DIoxsNWbVYY6vyHk2RQ= +github.com/elastic/mito v1.10.0/go.mod h1:n7AvUVtYQQXb8fq87FI8z67TNzuhwBV3kHBkDT1qJYQ= github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3 h1:ChPwRVv1RR4a0cxoGjKcyWjTEpxYfm5gydMIzo32cAw= github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3/go.mod h1:RAy2GVV4sTWVlNMavv3xhLsk18rxhfhDnombTe6EF5c= github.com/elastic/sarama v1.19.1-0.20220310193331-ebc2b0d8eef3 h1:FzA0/n4iMt8ojGDGRoiFPSHFvvdVIvxOxyLtiFnrLBM= diff --git a/x-pack/filebeat/docs/inputs/input-cel.asciidoc b/x-pack/filebeat/docs/inputs/input-cel.asciidoc index 684ceb7aa18..7be120941c9 100644 --- a/x-pack/filebeat/docs/inputs/input-cel.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-cel.asciidoc @@ -1,7 +1,7 @@ [role="xpack"] :type: cel -:mito_version: v1.9.0 +:mito_version: v1.10.0 :mito_docs: https://pkg.go.dev/github.com/elastic/mito@{mito_version} [id="{beatname_lc}-input-{type}"] @@ -171,7 +171,9 @@ As noted above the `cel` input provides functions, macros, and global variables * {mito_docs}/lib#Crypto[Crypto] ** {mito_docs}/lib#hdr-Base64[Base64] +** {mito_docs}/lib#hdr-Base64_Decode[Base64 Decode] ** {mito_docs}/lib#hdr-Base64_Raw[Base64 Raw] +** {mito_docs}/lib#hdr-Base64_Raw_Decode[Base64 Raw Decode] ** {mito_docs}/lib#hdr-Hex[Hex] ** {mito_docs}/lib#hdr-MD5[MD5] ** {mito_docs}/lib#hdr-SHA_1[SHA-1] From a03d120305ebdb808f59a545d6142c6e9022e2db Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Thu, 21 Mar 2024 11:43:50 +0200 Subject: [PATCH 056/313] Filebeat sync the groups/stages/steps testing from Jenkins (#38484) This PR adds the missing steps and make sure its similar with the ones from the Jenkinsfile.yaml Signed-off-by: Alexandros Sapranidis --- filebeat/buildkite.yml | 109 ++++++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 51 deletions(-) diff --git a/filebeat/buildkite.yml b/filebeat/buildkite.yml index 372fbcf8caf..3fcabc5f1ce 100644 --- a/filebeat/buildkite.yml +++ b/filebeat/buildkite.yml @@ -1,53 +1,60 @@ when: - changeset: ## when PR contains any of those entries in the changeset - - "filebeat/**" - - "@ci" ## special token regarding the changeset for the ci - - "@oss" ## special token regarding the changeset for the oss + branches: true ## for all the branches + changeset: ## when PR contains any of those entries in the changeset + - "filebeat/**" + - "@ci" ## special token regarding the changeset for the ci + - "@oss" ## special token regarding the changeset for the oss stages: - # default stage - it runs always for: - # - branches/tags - # - on PRs - # - GitHub comment /test filebeat - # - GitHub label filebeat - mandatory: - # NOTE: stage name should be unique! - unitTest: - command: "mage unitTest" - platform: "family/platform-ingest-beats-ubuntu-2204" - crosscompile: - command: "make crosscompile" - platform: "family/platform-ingest-beats-ubuntu-2204" - env: - GOX_FLAGS: "-arch amd64" - goIntegTest: - command: "mage goIntegTest" - platform: "family/platform-ingest-beats-ubuntu-2204" - pythonIntegTest: - command: "mage pythonIntegTest" - platform: "family/platform-ingest-beats-ubuntu-2204" - rhel-9: - command: "mage unitTest" - platform: "family/platform-ingest-beats-rhel-9" - unitTest-windows-2022: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-2022" - unitTest-windows-2016: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-2016" - # optional stage - it runs on: - # - branches/tags - # - on PRs if: - # - GitHub comment /test filebeat . i.e: /test filebeat integTest - # - GitHub label . i.e: integTest or unitTest-arm or unitTest-macos ... - extended: - unitTest-arm: - command: ".buildkite/filebeat/scripts/unit-tests.sh" - platform: "platform-ingest-beats-ubuntu-2204-aarch64" - provider: "aws" - unitTest-macos: - command: ".buildkite/filebeat/scripts/unit-tests.sh" - platform: "generic-13-ventura-x64" - provider: "orka" - unitTest-windows-2019: - command: ".buildkite/filebeat/scripts/unit-tests-win.ps1" - platform: "family/platform-ingest-beats-windows-2019" + mandatory: + unitTest: + command: "mage unitTest" + platform: "family/platform-ingest-beats-ubuntu-2204" + goIntegTest: + command: "mage goIntegTest" + platform: "family/platform-ingest-beats-ubuntu-2204" + pythonIntegTest: + command: "mage pythonIntegTest" + platform: "family/platform-ingest-beats-ubuntu-2204" + unitTest-windows-2022: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-2022" + unitTest-windows-2016: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-2016" + + extended_win: + unitTest-windows-2019: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-2019" + unitTest-windows-11: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-11" + unitTest-windows-10: + command: "mage build unitTest" + platform: "family/platform-ingest-beats-windows-10" + extended: + unitTest-arm: + command: "mage build unitTest" + platform: "platform-ingest-beats-ubuntu-2204-aarch64" + provider: "aws" # move this inside the platform leaf + when: + comments: + - "/test filebeat for arm" + labels: + - "arm" + parameters: + - "armTest" + branches: true ## for all the branches + tags: true ## for all the tags + unitTest-macos: + command: ".buildkite/filebeat/scripts/unit-tests.sh" + platform: "generic-13-ventura-x64" + provider: "orka" + when: + comments: + - "/test filebeat for macos" + labels: + - "macOS" + parameters: + - "macosTest" + tags: true ## for all the tags From bd7b36c3444ea14a06d1e96864993502d4954b02 Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:44:16 +0200 Subject: [PATCH 057/313] migrate x-pack/osquerybeat pipeline (#38491) * migrate x-pack/osquerybeat pipeline * update images --- .buildkite/hooks/pre-command | 2 +- .buildkite/scripts/common.sh | 13 +- .../generate_xpack_osquerybeat_pipeline.sh | 130 ++++++++++++++++++ .../x-pack/pipeline.xpack.osquerybeat.yml | 48 ++++++- 4 files changed, 188 insertions(+), 5 deletions(-) create mode 100755 .buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 3d953bdd3cc..a68d98227d4 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -62,7 +62,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then source .buildkite/scripts/setenv.sh if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 4d687ce6464..060be87613c 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -22,6 +22,7 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_winlogbeat+x}" ] && run_xpack_winlogbeat="$(buildkite-agent meta-data get run_xpack_winlogbeat --default "false")" [ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" [ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" +[ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" @@ -38,6 +39,7 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_filebeat_macos_tests+x}" ] && run_xpack_filebeat_macos_tests="$(buildkite-agent meta-data get run_xpack_filebeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" +[ -z "${run_xpack_osquerybeat_macos_tests+x}" ] && run_xpack_osquerybeat_macos_tests="$(buildkite-agent meta-data get run_xpack_osquerybeat_macos_tests --default "false")" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" @@ -79,6 +81,10 @@ xpack_metricbeat_changeset=( "^x-pack/metricbeat/.*" ) +xpack_osquerybeat_changeset=( + "^x-pack/osquerybeat/.*" + ) + xpack_packetbeat_changeset=( "^x-pack/packetbeat/.*" ) @@ -137,7 +143,7 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-filebeat") BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} ;; -"beats-xpack-dockerlogbeat") + "beats-xpack-dockerlogbeat") BEAT_CHANGESET_REFERENCE=${xpack_dockerlogbeat_changeset[@]} ;; "beats-xpack-libbeat") @@ -146,6 +152,9 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-metricbeat") BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} ;; + "beats-xpack-osquerybeat") + BEAT_CHANGESET_REFERENCE=${xpack_osquerybeat_changeset[@]} + ;; "beats-xpack-packetbeat") BEAT_CHANGESET_REFERENCE=${xpack_packetbeat_changeset[@]} ;; @@ -410,7 +419,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi diff --git a/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh b/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh new file mode 100755 index 00000000000..d6887c4c382 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh @@ -0,0 +1,130 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-osquerybeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "mandatory-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_2016}" + - "${IMAGE_WIN_2022}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h + + - group: "Extended Windows Tests" + key: "extended-win-tests" + steps: + + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: ".buildkite/scripts/win_unit_tests.ps1" + key: "extended-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: + + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index 22297e33ab5..57726c03828 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -1,6 +1,50 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json name: "beats-xpack-osquerybeat" +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/general-windows-10" + IMAGE_WIN_11: "family/general-windows-11" + IMAGE_WIN_2016: "family/core-windows-2016" + IMAGE_WIN_2019: "family/core-windows-2019" + IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + BEATS_PROJECT_NAME: "x-pack/osquerybeat" + steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Osquerybeat - run_xpack_osquerybeat" + key: "run_xpack_osquerybeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Osquerybeat - run_xpack_osquerybeat_macos_tests" + key: "run_xpack_osquerybeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack osquerybeat pipeline" + key: "xpack-osquerybeat-pipeline" + command: ".buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" From 542452422a68835194d9ccc1d1a3160c29f0b09d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:32:15 +0000 Subject: [PATCH 058/313] build(deps): bump github.com/elastic/gosigar from 0.14.2 to 0.14.3 (#38464) --- NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 32dc6c49da9..e5cf2df78b6 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -15434,11 +15434,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-ucfg@v0.8.7/ -------------------------------------------------------------------------------- Dependency : github.com/elastic/gosigar -Version: v0.14.2 +Version: v0.14.3 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/gosigar@v0.14.2/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/gosigar@v0.14.3/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index c722d1bdb81..538eb2fbdce 100644 --- a/go.mod +++ b/go.mod @@ -80,7 +80,7 @@ require ( github.com/elastic/go-structform v0.0.10 github.com/elastic/go-sysinfo v1.13.1 github.com/elastic/go-ucfg v0.8.7 - github.com/elastic/gosigar v0.14.2 + github.com/elastic/gosigar v0.14.3 github.com/fatih/color v1.15.0 github.com/fearful-symmetry/gorapl v0.0.4 github.com/fsnotify/fsevents v0.1.1 diff --git a/go.sum b/go.sum index 32a76ee6ab0..7623c476c43 100644 --- a/go.sum +++ b/go.sum @@ -716,8 +716,8 @@ github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUt github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a h1:8WfL/X6fK11iyX5t3Dd9dDMMNqPfEZNc//JsWGIhEgQ= github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a/go.mod h1:riddUzxTSBpJXk3qBHtYr4qOhFhT6k/1c0E3qkQjQpA= -github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= -github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/elastic/gosigar v0.14.3 h1:xwkKwPia+hSfg9GqrCUKYdId102m9qTJIIr7egmK/uo= +github.com/elastic/gosigar v0.14.3/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/mito v1.10.0 h1:LhkzBXarU32zAf24k3HOWki0DIoxsNWbVYY6vyHk2RQ= github.com/elastic/mito v1.10.0/go.mod h1:n7AvUVtYQQXb8fq87FI8z67TNzuhwBV3kHBkDT1qJYQ= github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3 h1:ChPwRVv1RR4a0cxoGjKcyWjTEpxYfm5gydMIzo32cAw= From 4b9fe7c6564dcbefcff86240616126bfbcd24ac8 Mon Sep 17 00:00:00 2001 From: ShourieG <105607378+ShourieG@users.noreply.github.com> Date: Thu, 21 Mar 2024 17:46:59 +0530 Subject: [PATCH 059/313] fixed changelog update for gcs bugfix (#38512) --- CHANGELOG-developer.next.asciidoc | 1 - CHANGELOG.next.asciidoc | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 9250671ce7f..b617edfaf04 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -92,7 +92,6 @@ The list below covers the major changes between 7.0.0-rc2 and main only. - Make winlogbeat/sys/wineventlog follow the unsafe.Pointer rules. {pull}36650[36650] - Cleaned up documentation errors & fixed a minor bug in Filebeat Azure blob storage input. {pull}36714[36714] - Fix copy arguments for strict aligned architectures. {pull}36976[36976] -- Fix filebit gcs input panic {pull}38407[38407] ==== Added diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index adf3f72ee98..5e115d2c3c7 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -103,6 +103,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Fix the incorrect values generated by the uri_parts processor. {pull}38216[38216] - Fix HTTPJSON handling of empty object bodies in POST requests. {issue}33961[33961] {pull}38290[38290] - Fix PEM key validation for CEL and HTTPJSON inputs. {pull}38405[38405] +- Fix filebeat gcs input panic {pull}38407[38407] *Heartbeat* From c91eaeecc669cfa12df0292f26da855b638d3da6 Mon Sep 17 00:00:00 2001 From: Milton Hultgren Date: Thu, 21 Mar 2024 13:19:44 +0100 Subject: [PATCH 060/313] [elasticsearch] Allow closed indices (#38408) * [elasticsearch] Allow closed indices * Apply same change to index_summary * Fix formatting * Update unit tests --- .../module/elasticsearch/index/index.go | 6 ++- .../module/elasticsearch/index/index_test.go | 3 +- .../index_summary/index_summary.go | 39 +++++++++++++++++-- 3 files changed, 42 insertions(+), 6 deletions(-) diff --git a/metricbeat/module/elasticsearch/index/index.go b/metricbeat/module/elasticsearch/index/index.go index 050ad311c85..d32982ad7b6 100644 --- a/metricbeat/module/elasticsearch/index/index.go +++ b/metricbeat/module/elasticsearch/index/index.go @@ -41,8 +41,9 @@ const ( expandWildcards = "expand_wildcards=open" statsPath = "/_stats/" + statsMetrics + "?filter_path=indices&" + expandWildcards - bulkSuffix = ",bulk" - hiddenSuffix = ",hidden" + bulkSuffix = ",bulk" + hiddenSuffix = ",hidden" + allowClosedIndices = "&forbid_closed_indices=false" ) // MetricSet type defines all fields of the MetricSet @@ -107,6 +108,7 @@ func getServicePath(esVersion version.V) (string, error) { if !esVersion.LessThan(elasticsearch.BulkStatsAvailableVersion) { u.Path += bulkSuffix + u.RawQuery += allowClosedIndices } if !esVersion.LessThan(elasticsearch.ExpandWildcardsHiddenAvailableVersion) { diff --git a/metricbeat/module/elasticsearch/index/index_test.go b/metricbeat/module/elasticsearch/index/index_test.go index f4ec196c3aa..4b7f46e23b6 100644 --- a/metricbeat/module/elasticsearch/index/index_test.go +++ b/metricbeat/module/elasticsearch/index/index_test.go @@ -29,7 +29,7 @@ import ( func TestGetServiceURIExpectedPath(t *testing.T) { path770 := strings.Replace(statsPath, expandWildcards, expandWildcards+hiddenSuffix, 1) - path800 := strings.Replace(path770, statsMetrics, statsMetrics+bulkSuffix, 1) + path800 := strings.Replace(path770, statsMetrics, statsMetrics+bulkSuffix, 1) + allowClosedIndices tests := map[string]struct { esVersion *version.V @@ -65,6 +65,7 @@ func TestGetServiceURIExpectedPath(t *testing.T) { func TestGetServiceURIMultipleCalls(t *testing.T) { path := strings.Replace(statsPath, expandWildcards, expandWildcards+hiddenSuffix, 1) path = strings.Replace(path, statsMetrics, statsMetrics+bulkSuffix, 1) + path += allowClosedIndices err := quick.Check(func(r uint) bool { numCalls := 2 + (r % 10) // between 2 and 11 diff --git a/metricbeat/module/elasticsearch/index_summary/index_summary.go b/metricbeat/module/elasticsearch/index_summary/index_summary.go index c74b744f238..d3a91b44247 100644 --- a/metricbeat/module/elasticsearch/index_summary/index_summary.go +++ b/metricbeat/module/elasticsearch/index_summary/index_summary.go @@ -19,10 +19,13 @@ package index_summary import ( "fmt" + "net/url" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/metricbeat/mb/parse" "github.com/elastic/beats/v7/metricbeat/module/elasticsearch" + + "github.com/elastic/elastic-agent-libs/version" ) // init registers the MetricSet with the central registry. @@ -36,6 +39,8 @@ func init() { const ( statsPath = "/_stats" + + allowClosedIndices = "forbid_closed_indices=false" ) var ( @@ -70,15 +75,43 @@ func (m *MetricSet) Fetch(r mb.ReporterV2) error { return nil } - content, err := m.HTTP.FetchContent() + info, err := elasticsearch.GetInfo(m.HTTP, m.HostData().SanitizedURI+statsPath) if err != nil { + return fmt.Errorf("failed to get info from Elasticsearch: %w", err) + } + + if err := m.updateServicePath(*info.Version.Number); err != nil { return err } - info, err := elasticsearch.GetInfo(m.HTTP, m.HostData().SanitizedURI+statsPath) + content, err := m.HTTP.FetchContent() if err != nil { - return fmt.Errorf("failed to get info from Elasticsearch: %w", err) + return err } return eventMapping(r, info, content, m.XPackEnabled) } + +func (m *MetricSet) updateServicePath(esVersion version.V) error { + p, err := getServicePath(esVersion) + if err != nil { + return err + } + + m.SetServiceURI(p) + return nil +} + +func getServicePath(esVersion version.V) (string, error) { + currPath := statsPath + u, err := url.Parse(currPath) + if err != nil { + return "", err + } + + if !esVersion.LessThan(elasticsearch.BulkStatsAvailableVersion) { + u.RawQuery += allowClosedIndices + } + + return u.String(), nil +} From b98b7633cc6f68d105112237c8f8853fbc7cd73e Mon Sep 17 00:00:00 2001 From: kvalliyurnatt <135071014+kvalliyurnatt@users.noreply.github.com> Date: Thu, 21 Mar 2024 17:27:14 -0400 Subject: [PATCH 061/313] Add an option to report deltas during a flow period instead of cumulative stats (#38223) * add an option to report delta flows * adding unit test and doc update * fix linting issues * fix imports * addressing review comments --- packetbeat/config/config.go | 2 + packetbeat/docs/packetbeat-options.asciidoc | 6 +++ packetbeat/flows/flows.go | 2 +- packetbeat/flows/worker.go | 38 +++++++++++-------- packetbeat/flows/worker_test.go | 41 ++++++++++++++++++--- 5 files changed, 68 insertions(+), 21 deletions(-) diff --git a/packetbeat/config/config.go b/packetbeat/config/config.go index 7d579af635b..427df6cd117 100644 --- a/packetbeat/config/config.go +++ b/packetbeat/config/config.go @@ -144,6 +144,8 @@ type Flows struct { KeepNull bool `config:"keep_null"` // Index is used to overwrite the index where flows are published Index string `config:"index"` + // DeltaFlowReports when enabled will report flow network stats(bytes, packets) as delta values + EnableDeltaFlowReports bool `config:"enable_delta_flow_reports"` } type ProtocolCommon struct { diff --git a/packetbeat/docs/packetbeat-options.asciidoc b/packetbeat/docs/packetbeat-options.asciidoc index c48b4a1b01d..aaa598b612c 100644 --- a/packetbeat/docs/packetbeat-options.asciidoc +++ b/packetbeat/docs/packetbeat-options.asciidoc @@ -461,6 +461,12 @@ in time. Periodical reporting can be disabled by setting the value to -1. If disabled, flows are still reported once being timed out. The default value is 10s. +[float] +==== `enable_delta_flow_reports` + +Configure network.bytes and network.packets to be a delta +value instead of a cumlative sum for each flow period. The default value is false. + [float] [[packetbeat-configuration-flows-fields]] ==== `fields` diff --git a/packetbeat/flows/flows.go b/packetbeat/flows/flows.go index b7b52217529..9df019af2d0 100644 --- a/packetbeat/flows/flows.go +++ b/packetbeat/flows/flows.go @@ -71,7 +71,7 @@ func NewFlows(pub Reporter, watcher *procs.ProcessesWatcher, config *config.Flow counter := &counterReg{} - worker, err := newFlowsWorker(pub, watcher, table, counter, timeout, period) + worker, err := newFlowsWorker(pub, watcher, table, counter, timeout, period, config.EnableDeltaFlowReports) if err != nil { logp.Err("failed to configure flows processing intervals: %v", err) return nil, err diff --git a/packetbeat/flows/worker.go b/packetbeat/flows/worker.go index e3a2008a059..46f7c0ca418 100644 --- a/packetbeat/flows/worker.go +++ b/packetbeat/flows/worker.go @@ -127,7 +127,7 @@ func (w *worker) periodically(tick time.Duration, fn func() error) { // reporting will be done at flow lifetime end. // Flows are published via the pub Reporter after being enriched with process information // by watcher. -func newFlowsWorker(pub Reporter, watcher *procs.ProcessesWatcher, table *flowMetaTable, counters *counterReg, timeout, period time.Duration) (*worker, error) { +func newFlowsWorker(pub Reporter, watcher *procs.ProcessesWatcher, table *flowMetaTable, counters *counterReg, timeout, period time.Duration, enableDeltaFlowReports bool) (*worker, error) { if timeout < time.Second { return nil, ErrInvalidTimeout } @@ -161,10 +161,11 @@ func newFlowsWorker(pub Reporter, watcher *procs.ProcessesWatcher, table *flowMe defaultBatchSize := 1024 processor := &flowsProcessor{ - table: table, - watcher: watcher, - counters: counters, - timeout: timeout, + table: table, + watcher: watcher, + counters: counters, + timeout: timeout, + enableDeltaFlowReporting: enableDeltaFlowReports, } processor.spool.init(pub, defaultBatchSize) @@ -221,11 +222,12 @@ func makeWorker(processor *flowsProcessor, tick time.Duration, timeout, period i } type flowsProcessor struct { - spool spool - watcher *procs.ProcessesWatcher - table *flowMetaTable - counters *counterReg - timeout time.Duration + spool spool + watcher *procs.ProcessesWatcher + table *flowMetaTable + counters *counterReg + timeout time.Duration + enableDeltaFlowReporting bool } func (fw *flowsProcessor) execute(w *worker, checkTimeout, handleReports, lastReport bool) { @@ -281,13 +283,13 @@ func (fw *flowsProcessor) execute(w *worker, checkTimeout, handleReports, lastRe } func (fw *flowsProcessor) report(w *worker, ts time.Time, flow *biFlow, isOver bool, intNames, uintNames, floatNames []string) { - event := createEvent(fw.watcher, ts, flow, isOver, intNames, uintNames, floatNames) + event := createEvent(fw.watcher, ts, flow, isOver, intNames, uintNames, floatNames, fw.enableDeltaFlowReporting) debugf("add event: %v", event) fw.spool.publish(event) } -func createEvent(watcher *procs.ProcessesWatcher, ts time.Time, f *biFlow, isOver bool, intNames, uintNames, floatNames []string) beat.Event { +func createEvent(watcher *procs.ProcessesWatcher, ts time.Time, f *biFlow, isOver bool, intNames, uintNames, floatNames []string, enableDeltaFlowReporting bool) beat.Event { timestamp := ts event := mapstr.M{ @@ -418,7 +420,7 @@ func createEvent(watcher *procs.ProcessesWatcher, ts time.Time, f *biFlow, isOve var totalBytes, totalPackets uint64 if f.stats[0] != nil { // Source stats. - stats := encodeStats(f.stats[0], intNames, uintNames, floatNames) + stats := encodeStats(f.stats[0], intNames, uintNames, floatNames, enableDeltaFlowReporting) for k, v := range stats { switch k { case "icmpV4TypeCode": @@ -449,7 +451,7 @@ func createEvent(watcher *procs.ProcessesWatcher, ts time.Time, f *biFlow, isOve } if f.stats[1] != nil { // Destination stats. - stats := encodeStats(f.stats[1], intNames, uintNames, floatNames) + stats := encodeStats(f.stats[1], intNames, uintNames, floatNames, enableDeltaFlowReporting) for k, v := range stats { switch k { case "icmpV4TypeCode", "icmpV6TypeCode": @@ -533,7 +535,7 @@ func formatHardwareAddr(addr net.HardwareAddr) string { return string(buf) } -func encodeStats(stats *flowStats, ints, uints, floats []string) map[string]interface{} { +func encodeStats(stats *flowStats, ints, uints, floats []string, enableDeltaFlowReporting bool) map[string]interface{} { report := make(map[string]interface{}) i := 0 @@ -551,6 +553,12 @@ func encodeStats(stats *flowStats, ints, uints, floats []string) map[string]inte for m := mask; m != 0; m >>= 1 { if (m & 1) == 1 { report[uints[i]] = stats.uints[i] + if enableDeltaFlowReporting && (uints[i] == "bytes" || uints[i] == "packets") { + // If Delta Flow Reporting is enabled, reset bytes and packets at each period. + // Only the bytes and packets received during the flow period will be reported. + // This should be thread safe as it is called under the flowmetadatatable lock. + stats.uints[i] = 0 + } } i++ } diff --git a/packetbeat/flows/worker_test.go b/packetbeat/flows/worker_test.go index ef0104adc92..d6e371cad87 100644 --- a/packetbeat/flows/worker_test.go +++ b/packetbeat/flows/worker_test.go @@ -21,16 +21,17 @@ import ( "encoding/json" "flag" "os" + "reflect" "testing" "time" - "github.com/elastic/go-lookslike/isdef" - - "github.com/elastic/go-lookslike" + "gotest.tools/assert" "github.com/elastic/beats/v7/libbeat/common" "github.com/elastic/beats/v7/packetbeat/procs" "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/go-lookslike" + "github.com/elastic/go-lookslike/isdef" ) // Use `go test -data` to update sample event files. @@ -65,7 +66,7 @@ func TestCreateEvent(t *testing.T) { } bif.stats[0] = &flowStats{uintFlags: []uint8{1, 1}, uints: []uint64{10, 1}} bif.stats[1] = &flowStats{uintFlags: []uint8{1, 1}, uints: []uint64{460, 2}} - event := createEvent(&procs.ProcessesWatcher{}, time.Now(), bif, true, nil, []string{"bytes", "packets"}, nil) + event := createEvent(&procs.ProcessesWatcher{}, time.Now(), bif, true, nil, []string{"bytes", "packets"}, nil, false) // Validate the contents of the event. validate := lookslike.MustCompile(map[string]interface{}{ @@ -116,7 +117,7 @@ func TestCreateEvent(t *testing.T) { // Write the event to disk if -data is used. if *dataFlag { - event.Fields.Put("@timestamp", common.Time(end)) //nolint:errcheck // Never fails. + event.Fields.Put("@timestamp", common.Time(end)) output, err := json.MarshalIndent(&event.Fields, "", " ") if err != nil { t.Fatal(err) @@ -126,4 +127,34 @@ func TestCreateEvent(t *testing.T) { t.Fatal(err) } } + + // when enableDeltaFlowReporting is true, the flow stats should be reset + expectbiFlow := &biFlow{ + id: id.rawFlowID, + killed: 1, + createTS: start, + ts: end, + dir: flowDirForward, + } + expectbiFlow.stats[0] = &flowStats{uintFlags: []uint8{1, 1}, uints: []uint64{0, 0}} + expectbiFlow.stats[1] = &flowStats{uintFlags: []uint8{1, 1}, uints: []uint64{0, 0}} + + // Assert the biflow is not 0 before the test + assert.Assert(t, !reflect.DeepEqual(expectbiFlow.stats[0].uints, bif.stats[0].uints)) + assert.Assert(t, !reflect.DeepEqual(expectbiFlow.stats[1].uints, bif.stats[1].uints)) + + event = createEvent(&procs.ProcessesWatcher{}, time.Now(), bif, true, nil, []string{"bytes", "packets"}, nil, true) + result = validate(event.Fields) + if errs := result.Errors(); len(errs) > 0 { + for _, err := range errs { + t.Error(err) + } + t.FailNow() + } + + // Assert the biflow is 0 after the test + assert.DeepEqual(t, expectbiFlow.stats[0].uintFlags, bif.stats[0].uintFlags) + assert.DeepEqual(t, expectbiFlow.stats[0].uints, bif.stats[0].uints) + assert.DeepEqual(t, expectbiFlow.stats[1].uintFlags, bif.stats[1].uintFlags) + assert.DeepEqual(t, expectbiFlow.stats[1].uints, bif.stats[1].uints) } From 8bf258131a76c534f7272baccb7bca7dc607d030 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Fri, 22 Mar 2024 18:02:11 +1030 Subject: [PATCH 062/313] x-pack/filebeat/input/entityanalytics/provider/activedirectory: new package (#37919) The activedirectory package provides an entity analytics provider for Active Directory. --- CHANGELOG.next.asciidoc | 1 + .../inputs/input-entity-analytics.asciidoc | 175 +++++++- .../activedirectory/activedirectory.go | 409 ++++++++++++++++++ .../activedirectory/activedirectory_test.go | 142 ++++++ .../provider/activedirectory/conf.go | 89 ++++ .../provider/activedirectory/conf_test.go | 57 +++ .../provider/activedirectory/metrics.go | 50 +++ .../provider/activedirectory/state_string.go | 30 ++ .../provider/activedirectory/statestore.go | 208 +++++++++ .../activedirectory/statestore_test.go | 246 +++++++++++ 10 files changed, 1406 insertions(+), 1 deletion(-) create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory_test.go create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf.go create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf_test.go create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/metrics.go create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/state_string.go create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore.go create mode 100644 x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 5e115d2c3c7..15ed3e8b2cb 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -214,6 +214,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Add support for complex event objects in the HTTP Endpoint input. {issue}37910[37910] {pull}38193[38193] - Parse more fields from Elasticsearch slowlogs {pull}38295[38295] - Update CEL mito extensions to v1.10.0 to add keys/values helper. {pull}38504[38504] +- Add support for Active Directory an entity analytics provider. {pull}37919[37919] *Auditbeat* diff --git a/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc b/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc index 86143f727bc..676925f7176 100644 --- a/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc @@ -16,6 +16,7 @@ external identity providers. The following identity providers are supported: +- <> - <> - <> @@ -27,7 +28,7 @@ the <<{beatname_lc}-input-{type}-common-options>> described later. [float] ==== `provider` -The identity provider. Must be one of: `azure-ad` or `okta`. +The identity provider. Must be one of: `activedirectory`, `azure-ad` or `okta`. [id="{beatname_lc}-input-{type}-common-options"] include::../../../../filebeat/docs/inputs/input-common-options.asciidoc[] @@ -35,6 +36,178 @@ include::../../../../filebeat/docs/inputs/input-common-options.asciidoc[] [float] === Providers +[id="provider-activedirectory"] +==== Active Directory (`activedirectory`) + +The `activedirectory` provider allows the input to retrieve users, with group +memberships, from Active Directory. + +[float] +==== Setup + +A user with appropriate permissions must be set up in the Active Directory +Server Manager in order for the provider to function properly. + +[float] +==== How It Works + +[float] +===== Overview + +The Active Directory provider periodically queries the Active Directory server, +retrieving updates for users and groups, updates its internal cache of user and +group metadata and group membership information, and ships updated user metadata +to Elasticsearch. + +Fetching and shipping updates occurs in one of two processes: *full +synchronizations* and *incremental updates*. Full synchronizations will send the +entire list of users and group membership in state, along with write markers to indicate +the start and end of the synchronization event. Incremental updates will only +send data for changed users during that event. Changes on a user can come in many +forms, whether it be a change to the user metadata, a user was added or modified, +or group membership was changed. + +[float] +===== Sending User and Device Metadata to Elasticsearch + +During a full synchronization, all users and groups stored in state will be sent +to the output, while incremental updates will only send users and group that have been +updated. Full synchronizations will be bounded on either side by write marker +documents, which will look something like this: + +["source","json",subs="attributes"] +---- +{ + "@timestamp": "2022-11-04T09:57:19.786056-05:00", + "event": { + "action": "started", + "start": "2022-11-04T09:57:19.786056-05:00" + }, + "labels": { + "identity_source": "activedirectory-1" + } +} +---- + +User documents will show the current state of the user. + +Example user document: + +["source","json",subs="attributes"] +---- +{ + "@timestamp": "2024-02-05T06:37:40.876026-05:00", + "event": { + "action": "user-discovered", + }, + "activedirectory": { + "id": "CN=Guest,CN=Users,DC=testserver,DC=local", + "user": { + "accountExpires": "2185-07-21T23:34:33.709551516Z", + "badPasswordTime": "0", + "badPwdCount": "0", + "cn": "Guest", + "codePage": "0", + "countryCode": "0", + "dSCorePropagationData": [ + "2024-01-22T06:37:40Z", + "1601-01-01T00:00:01Z" + ], + "description": "Built-in account for guest access to the computer/domain", + "distinguishedName": "CN=Guest,CN=Users,DC=testserver,DC=local", + "instanceType": "4", + "isCriticalSystemObject": true, + "lastLogoff": "0", + "lastLogon": "2185-07-21T23:34:33.709551616Z", + "logonCount": "0", + "memberOf": "CN=Guests,CN=Builtin,DC=testserver,DC=local", + "name": "Guest", + "objectCategory": "CN=Person,CN=Schema,CN=Configuration,DC=testserver,DC=local", + "objectClass": [ + "top", + "person", + "organizationalPerson", + "user" + ], + "objectGUID": "hSt/40XJQU6cf+J2XoYMHw==", + "objectSid": "AQUAAAAAAAUVAAAA0JU2Fq1k30YZ7UPx9QEAAA==", + "primaryGroupID": "514", + "pwdLastSet": "2185-07-21T23:34:33.709551616Z", + "sAMAccountName": "Guest", + "sAMAccountType": "805306368", + "uSNChanged": "8197", + "uSNCreated": "8197", + "userAccountControl": "66082", + "whenChanged": "2024-01-22T06:36:59Z", + "whenCreated": "2024-01-22T06:36:59Z" + }, + "whenChanged": "2024-01-22T06:36:59Z" + }, + "user": { + "id": "CN=Guest,CN=Users,DC=testserver,DC=local" + }, + "labels": { + "identity_source": "activedirectory-1" + } +} +---- + +[float] +==== Configuration + +Example configuration: + +["source","yaml",subs="attributes"] +---- +{beatname_lc}.inputs: +- type: entity-analytics + enabled: true + id: activedirectory-1 + provider: activedirectory + sync_interval: "12h" + update_interval: "30m" + ad_url: "ldaps://host.domain.tld" + ad_base_dn: "CN=Users,DC=SERVER,DC=DOMAIN" + ad_user: "USERNAME" + ad_password: "PASSWORD" +---- + +The `azure-ad` provider supports the following configuration: + +[float] +===== `ad_url` + +The Active Directory server URL. Field is required. + +[float] +===== `ad_base_dn` + +The Active Directory Base Distinguished Name. Field is required. + +[float] +===== `ad_user` + +The client user name. Used for authentication. The user must have Active Directory read access. Field is required. + +[float] +===== `ad_password` + +The client's password, used for authentication. Field is required. + +[float] +===== `sync_interval` + +The interval in which full synchronizations should occur. The interval must be +longer than the update interval (`update_interval`) Expressed as a duration +string (e.g., 1m, 3h, 24h). Defaults to `24h` (24 hours). + +[float] +===== `update_interval` + +The interval in which incremental updates should occur. The interval must be +shorter than the full synchronization interval (`sync_interval`). Expressed as a +duration string (e.g., 1m, 3h, 24h). Defaults to `15m` (15 minutes). + [id="provider-azure-ad"] ==== Azure Active Directory (`azure-ad`) diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go new file mode 100644 index 00000000000..fa8bc7325fa --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go @@ -0,0 +1,409 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +// Package activedirectory provides a user identity asset provider for Microsoft +// Active Directory. +package activedirectory + +import ( + "context" + "crypto/tls" + "errors" + "fmt" + "net" + "net/url" + "time" + + "github.com/go-ldap/ldap/v3" + + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/internal/kvstore" + "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/provider" + "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/provider/activedirectory/internal/activedirectory" + "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/elastic-agent-libs/transport/httpcommon" + "github.com/elastic/elastic-agent-libs/transport/tlscommon" + "github.com/elastic/go-concert/ctxtool" +) + +func init() { + err := provider.Register(Name, New) + if err != nil { + panic(err) + } +} + +// Name of this provider. +const Name = "activedirectory" + +// FullName of this provider, including the input name. Prefer using this +// value for full context, especially if the input name isn't present in an +// adjacent log field. +const FullName = "entity-analytics-" + Name + +// adInput implements the provider.Provider interface. +type adInput struct { + *kvstore.Manager + + cfg conf + baseDN *ldap.DN + tlsConfig *tls.Config + + metrics *inputMetrics + logger *logp.Logger +} + +// New creates a new instance of an Active Directory identity provider. +func New(logger *logp.Logger) (provider.Provider, error) { + p := adInput{ + cfg: defaultConfig(), + } + p.Manager = &kvstore.Manager{ + Logger: logger, + Type: FullName, + Configure: p.configure, + } + + return &p, nil +} + +// configure configures this provider using the given configuration. +func (p *adInput) configure(cfg *config.C) (kvstore.Input, error) { + err := cfg.Unpack(&p.cfg) + if err != nil { + return nil, fmt.Errorf("unable to unpack %s input config: %w", Name, err) + } + p.baseDN, err = ldap.ParseDN(p.cfg.BaseDN) + if err != nil { + return nil, err + } + u, err := url.Parse(p.cfg.URL) + if err != nil { + return nil, err + } + if p.cfg.TLS.IsEnabled() && u.Scheme == "ldaps" { + tlsConfig, err := tlscommon.LoadTLSConfig(p.cfg.TLS) + if err != nil { + return nil, err + } + host, _, err := net.SplitHostPort(u.Host) + var addrErr *net.AddrError + switch { + case err == nil: + case errors.As(err, &addrErr): + if addrErr.Err != "missing port in address" { + return nil, err + } + host = u.Host + default: + return nil, err + } + p.tlsConfig = tlsConfig.BuildModuleClientConfig(host) + } + return p, nil +} + +// Name returns the name of this provider. +func (p *adInput) Name() string { + return FullName +} + +func (*adInput) Test(v2.TestContext) error { return nil } + +// Run will start data collection on this provider. +func (p *adInput) Run(inputCtx v2.Context, store *kvstore.Store, client beat.Client) error { + p.logger = inputCtx.Logger.With("provider", Name, "domain", p.cfg.URL) + p.metrics = newMetrics(inputCtx.ID, nil) + defer p.metrics.Close() + + lastSyncTime, _ := getLastSync(store) + syncWaitTime := time.Until(lastSyncTime.Add(p.cfg.SyncInterval)) + lastUpdateTime, _ := getLastUpdate(store) + updateWaitTime := time.Until(lastUpdateTime.Add(p.cfg.UpdateInterval)) + + syncTimer := time.NewTimer(syncWaitTime) + updateTimer := time.NewTimer(updateWaitTime) + + for { + select { + case <-inputCtx.Cancelation.Done(): + if !errors.Is(inputCtx.Cancelation.Err(), context.Canceled) { + return inputCtx.Cancelation.Err() + } + return nil + case <-syncTimer.C: + start := time.Now() + if err := p.runFullSync(inputCtx, store, client); err != nil { + p.logger.Errorw("Error running full sync", "error", err) + p.metrics.syncError.Inc() + } + p.metrics.syncTotal.Inc() + p.metrics.syncProcessingTime.Update(time.Since(start).Nanoseconds()) + + syncTimer.Reset(p.cfg.SyncInterval) + p.logger.Debugf("Next sync expected at: %v", time.Now().Add(p.cfg.SyncInterval)) + + // Reset the update timer and wait the configured interval. If the + // update timer has already fired, then drain the timer's channel + // before resetting. + if !updateTimer.Stop() { + <-updateTimer.C + } + updateTimer.Reset(p.cfg.UpdateInterval) + p.logger.Debugf("Next update expected at: %v", time.Now().Add(p.cfg.UpdateInterval)) + case <-updateTimer.C: + start := time.Now() + if err := p.runIncrementalUpdate(inputCtx, store, client); err != nil { + p.logger.Errorw("Error running incremental update", "error", err) + p.metrics.updateError.Inc() + } + p.metrics.updateTotal.Inc() + p.metrics.updateProcessingTime.Update(time.Since(start).Nanoseconds()) + updateTimer.Reset(p.cfg.UpdateInterval) + p.logger.Debugf("Next update expected at: %v", time.Now().Add(p.cfg.UpdateInterval)) + } + } +} + +// clientOption returns constructed client configuration options, including +// setting up http+unix and http+npipe transports if requested. +func clientOptions(keepalive httpcommon.WithKeepaliveSettings) []httpcommon.TransportOption { + return []httpcommon.TransportOption{ + httpcommon.WithAPMHTTPInstrumentation(), + keepalive, + } +} + +// runFullSync performs a full synchronization. It will fetch user and group +// identities from Azure Active Directory, enrich users with group memberships, +// and publishes all known users (regardless if they have been modified) to the +// given beat.Client. +func (p *adInput) runFullSync(inputCtx v2.Context, store *kvstore.Store, client beat.Client) error { + p.logger.Debugf("Running full sync...") + + p.logger.Debugf("Opening new transaction...") + state, err := newStateStore(store) + if err != nil { + return fmt.Errorf("unable to begin transaction: %w", err) + } + p.logger.Debugf("Transaction opened") + defer func() { // If commit is successful, call to this close will be no-op. + closeErr := state.close(false) + if closeErr != nil { + p.logger.Errorw("Error rolling back full sync transaction", "error", closeErr) + } + }() + + ctx := ctxtool.FromCanceller(inputCtx.Cancelation) + p.logger.Debugf("Starting fetch...") + _, err = p.doFetchUsers(ctx, state, true) + if err != nil { + return err + } + + if len(state.users) != 0 { + tracker := kvstore.NewTxTracker(ctx) + + start := time.Now() + p.publishMarker(start, start, inputCtx.ID, true, client, tracker) + for _, u := range state.users { + p.publishUser(u, state, inputCtx.ID, client, tracker) + } + + end := time.Now() + p.publishMarker(end, end, inputCtx.ID, false, client, tracker) + + tracker.Wait() + } + + if ctx.Err() != nil { + return ctx.Err() + } + + state.lastSync = time.Now() + err = state.close(true) + if err != nil { + return fmt.Errorf("unable to commit state: %w", err) + } + + return nil +} + +// runIncrementalUpdate will run an incremental update. The process is similar +// to full synchronization, except only users which have changed (newly +// discovered, modified, or deleted) will be published. +func (p *adInput) runIncrementalUpdate(inputCtx v2.Context, store *kvstore.Store, client beat.Client) error { + p.logger.Debugf("Running incremental update...") + + state, err := newStateStore(store) + if err != nil { + return fmt.Errorf("unable to begin transaction: %w", err) + } + defer func() { // If commit is successful, call to this close will be no-op. + closeErr := state.close(false) + if closeErr != nil { + p.logger.Errorw("Error rolling back incremental update transaction", "error", closeErr) + } + }() + + ctx := ctxtool.FromCanceller(inputCtx.Cancelation) + updatedUsers, err := p.doFetchUsers(ctx, state, false) + if err != nil { + return err + } + + var tracker *kvstore.TxTracker + if len(updatedUsers) != 0 || state.len() != 0 { + // Active Directory does not have a notion of deleted users + // beyond absence from the directory, so compare found users + // with users already known by the state store and if any + // are in the store but not returned in the previous fetch, + // mark them as deleted and publish the deletion. We do not + // have the time of the deletion, so use now. + if state.len() != 0 { + found := make(map[string]bool) + for _, u := range updatedUsers { + found[u.ID] = true + } + deleted := make(map[string]*User) + now := time.Now() + state.forEach(func(u *User) { + if u.State == Deleted || found[u.ID] { + return + } + // This modifies the state store's copy since u + // is a pointer held by the state store map. + u.State = Deleted + u.WhenChanged = now + deleted[u.ID] = u + }) + for _, u := range deleted { + updatedUsers = append(updatedUsers, u) + } + } + if len(updatedUsers) != 0 { + tracker = kvstore.NewTxTracker(ctx) + for _, u := range updatedUsers { + p.publishUser(u, state, inputCtx.ID, client, tracker) + } + tracker.Wait() + } + } + + if ctx.Err() != nil { + return ctx.Err() + } + + state.lastUpdate = time.Now() + if err = state.close(true); err != nil { + return fmt.Errorf("unable to commit state: %w", err) + } + + return nil +} + +// doFetchUsers handles fetching user identities from Active Directory. If +// fullSync is true, then any existing whenChanged will be ignored, forcing a +// full synchronization from Active Directory. +// Returns a set of modified users by ID. +func (p *adInput) doFetchUsers(ctx context.Context, state *stateStore, fullSync bool) ([]*User, error) { + var since time.Time + if !fullSync { + since = state.whenChanged + } + + entries, err := activedirectory.GetDetails(p.cfg.URL, p.cfg.User, p.cfg.Password, p.baseDN, since, p.cfg.PagingSize, nil, p.tlsConfig) + p.logger.Debugf("received %d users from API", len(entries)) + if err != nil { + return nil, err + } + + var ( + users []*User + whenChanged time.Time + ) + if fullSync { + for _, u := range entries { + state.storeUser(u) + if u.WhenChanged.After(whenChanged) { + whenChanged = u.WhenChanged + } + } + } else { + users = make([]*User, 0, len(entries)) + for _, u := range entries { + users = append(users, state.storeUser(u)) + if u.WhenChanged.After(whenChanged) { + whenChanged = u.WhenChanged + } + } + p.logger.Debugf("processed %d users from API", len(users)) + } + if whenChanged.After(state.whenChanged) { + state.whenChanged = whenChanged + } + + return users, nil +} + +// publishMarker will publish a write marker document using the given beat.Client. +// If start is true, then it will be a start marker, otherwise an end marker. +func (p *adInput) publishMarker(ts, eventTime time.Time, inputID string, start bool, client beat.Client, tracker *kvstore.TxTracker) { + fields := mapstr.M{} + _, _ = fields.Put("labels.identity_source", inputID) + + if start { + _, _ = fields.Put("event.action", "started") + _, _ = fields.Put("event.start", eventTime) + } else { + _, _ = fields.Put("event.action", "completed") + _, _ = fields.Put("event.end", eventTime) + } + + event := beat.Event{ + Timestamp: ts, + Fields: fields, + Private: tracker, + } + tracker.Add() + if start { + p.logger.Debug("Publishing start write marker") + } else { + p.logger.Debug("Publishing end write marker") + } + + client.Publish(event) +} + +// publishUser will publish a user document using the given beat.Client. +func (p *adInput) publishUser(u *User, state *stateStore, inputID string, client beat.Client, tracker *kvstore.TxTracker) { + userDoc := mapstr.M{} + + _, _ = userDoc.Put("activedirectory", u.User) + _, _ = userDoc.Put("labels.identity_source", inputID) + _, _ = userDoc.Put("user.id", u.ID) + + switch u.State { + case Deleted: + _, _ = userDoc.Put("event.action", "user-deleted") + case Discovered: + _, _ = userDoc.Put("event.action", "user-discovered") + case Modified: + _, _ = userDoc.Put("event.action", "user-modified") + } + + event := beat.Event{ + Timestamp: time.Now(), + Fields: userDoc, + Private: tracker, + } + tracker.Add() + + p.logger.Debugf("Publishing user %q", u.ID) + + client.Publish(event) +} diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory_test.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory_test.go new file mode 100644 index 00000000000..e9a7573bb00 --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory_test.go @@ -0,0 +1,142 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package activedirectory + +import ( + "context" + "encoding/json" + "flag" + "os" + "sort" + "testing" + "time" + + "github.com/go-ldap/ldap/v3" + + "github.com/elastic/elastic-agent-libs/logp" +) + +var logResponses = flag.Bool("log_response", false, "use to log users/groups returned from the API") + +func TestActiveDirectoryDoFetch(t *testing.T) { + url, ok := os.LookupEnv("AD_URL") + if !ok { + t.Skip("activedirectory tests require ${AD_URL} to be set") + } + baseDN, ok := os.LookupEnv("AD_BASE") + if !ok { + t.Skip("activedirectory tests require ${AD_BASE} to be set") + } + user, ok := os.LookupEnv("AD_USER") + if !ok { + t.Skip("activedirectory tests require ${AD_USER} to be set") + } + pass, ok := os.LookupEnv("AD_PASS") + if !ok { + t.Skip("activedirectory tests require ${AD_PASS} to be set") + } + + base, err := ldap.ParseDN(baseDN) + if err != nil { + t.Fatalf("invalid base distinguished name: %v", err) + } + + const dbFilename = "TestActiveDirectoryDoFetch.db" + store := testSetupStore(t, dbFilename) + t.Cleanup(func() { + testCleanupStore(store, dbFilename) + }) + a := adInput{ + cfg: conf{ + BaseDN: baseDN, + URL: url, + User: user, + Password: pass, + }, + baseDN: base, + logger: logp.L(), + } + + ss, err := newStateStore(store) + if err != nil { + t.Fatalf("unexpected error making state store: %v", err) + } + defer ss.close(false) + + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + defer cancel() + + var times []time.Time + t.Run("full", func(t *testing.T) { + ss.whenChanged = time.Time{} // Reach back to the start of time. + + users, err := a.doFetchUsers(ctx, ss, false) // We are lying about fullSync since we are not getting users via the store. + if err != nil { + t.Fatalf("unexpected error from doFetch: %v", err) + } + + if len(users) == 0 { + t.Error("expected non-empty result from query") + } + found := false + var gotUsers []string + for _, e := range users { + gotUsers = append(gotUsers, e.ID) + if e.ID == user { + found = true + } + + times = append(times, e.WhenChanged) + } + if !found { + t.Errorf("expected login user to be found in directory: got:%q", gotUsers) + } + + if !*logResponses { + return + } + b, err := json.MarshalIndent(users, "", "\t") + if err != nil { + t.Errorf("failed to marshal users for logging: %v", err) + } + t.Logf("user: %s", b) + }) + if len(times) == 0 { + t.Fatal("no entries found") + } + + // Find the time of the first changed entry for later. + sort.Slice(times, func(i, j int) bool { return times[i].Before(times[j]) }) + since := times[0].Add(time.Second) // Step past first entry by a small amount within LDAP resolution. + var want int + // ... and count all entries since then. + for _, when := range times[1:] { + if !since.After(when) { + want++ + } + } + + t.Run("update", func(t *testing.T) { + ss.whenChanged = since // Reach back until after the first entry. + + users, err := a.doFetchUsers(ctx, ss, false) + if err != nil { + t.Fatalf("unexpected error from doFetchUsers: %v", err) + } + + if len(users) != want { + t.Errorf("unexpected number of results from query since %v: got:%d want:%d", since, len(users), want) + } + + if !*logResponses && !t.Failed() { + return + } + b, err := json.MarshalIndent(users, "", "\t") + if err != nil { + t.Errorf("failed to marshal users for logging: %v", err) + } + t.Logf("user: %s", b) + }) +} diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf.go new file mode 100644 index 00000000000..7dab7f5e456 --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf.go @@ -0,0 +1,89 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package activedirectory + +import ( + "errors" + "net" + "net/url" + "time" + + "github.com/go-ldap/ldap/v3" + + "github.com/elastic/elastic-agent-libs/transport/tlscommon" +) + +// defaultConfig returns a default configuration. +func defaultConfig() conf { + return conf{ + SyncInterval: 24 * time.Hour, + UpdateInterval: 15 * time.Minute, + } +} + +// conf contains parameters needed to configure the input. +type conf struct { + BaseDN string `config:"ad_base_dn" validate:"required"` + + URL string `config:"ad_url" validate:"required"` + User string `config:"ad_user" validate:"required"` + Password string `config:"ad_password" validate:"required"` + + PagingSize uint32 `config:"ad_paging_size"` + + // SyncInterval is the time between full + // synchronisation operations. + SyncInterval time.Duration `config:"sync_interval"` + // UpdateInterval is the time between + // incremental updated. + UpdateInterval time.Duration `config:"update_interval"` + + // TLS provides ssl/tls setup settings + TLS *tlscommon.Config `config:"ssl" yaml:"ssl,omitempty" json:"ssl,omitempty"` +} + +var ( + errInvalidSyncInterval = errors.New("zero or negative sync_interval") + errInvalidUpdateInterval = errors.New("zero or negative update_interval") + errSyncBeforeUpdate = errors.New("sync_interval not longer than update_interval") +) + +// Validate runs validation against the config. +func (c *conf) Validate() error { + switch { + case c.SyncInterval <= 0: + return errInvalidSyncInterval + case c.UpdateInterval <= 0: + return errInvalidUpdateInterval + case c.SyncInterval <= c.UpdateInterval: + return errSyncBeforeUpdate + } + _, err := ldap.ParseDN(c.BaseDN) + if err != nil { + return err + } + u, err := url.Parse(c.URL) + if err != nil { + return err + } + if c.TLS.IsEnabled() && u.Scheme == "ldaps" { + _, err := tlscommon.LoadTLSConfig(c.TLS) + if err != nil { + return err + } + _, _, err = net.SplitHostPort(u.Host) + var addrErr *net.AddrError + switch { + case err == nil: + case errors.As(err, &addrErr): + if addrErr.Err != "missing port in address" { + return err + } + default: + return err + } + } + return nil +} diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf_test.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf_test.go new file mode 100644 index 00000000000..c518c122635 --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/conf_test.go @@ -0,0 +1,57 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package activedirectory + +import ( + "testing" + "time" +) + +var validateTests = []struct { + name string + cfg conf + wantErr error +}{ + { + name: "default", + cfg: defaultConfig(), + wantErr: nil, + }, + { + name: "invalid_sync_interval", + cfg: conf{ + SyncInterval: 0, + UpdateInterval: time.Second * 2, + }, + wantErr: errInvalidSyncInterval, + }, + { + name: "invalid_update_interval", + cfg: conf{ + SyncInterval: time.Second, + UpdateInterval: 0, + }, + wantErr: errInvalidUpdateInterval, + }, + { + name: "invalid_relative_intervals", + cfg: conf{ + SyncInterval: time.Second, + UpdateInterval: time.Second * 2, + }, + wantErr: errSyncBeforeUpdate, + }, +} + +func TestConfValidate(t *testing.T) { + for _, test := range validateTests { + t.Run(test.name, func(t *testing.T) { + err := test.cfg.Validate() + if err != test.wantErr { + t.Errorf("unexpected error: got:%v want:%v", err, test.wantErr) + } + }) + } +} diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/metrics.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/metrics.go new file mode 100644 index 00000000000..070deab2886 --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/metrics.go @@ -0,0 +1,50 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package activedirectory + +import ( + "github.com/rcrowley/go-metrics" + + "github.com/elastic/beats/v7/libbeat/monitoring/inputmon" + "github.com/elastic/elastic-agent-libs/monitoring" + "github.com/elastic/elastic-agent-libs/monitoring/adapter" +) + +// inputMetrics defines metrics for this provider. +type inputMetrics struct { + unregister func() + + syncTotal *monitoring.Uint // The total number of full synchronizations. + syncError *monitoring.Uint // The number of full synchronizations that failed due to an error. + syncProcessingTime metrics.Sample // Histogram of the elapsed full synchronization times in nanoseconds (time of API contact to items sent to output). + updateTotal *monitoring.Uint // The total number of incremental updates. + updateError *monitoring.Uint // The number of incremental updates that failed due to an error. + updateProcessingTime metrics.Sample // Histogram of the elapsed incremental update times in nanoseconds (time of API contact to items sent to output). +} + +// Close removes metrics from the registry. +func (m *inputMetrics) Close() { + m.unregister() +} + +// newMetrics creates a new instance for gathering metrics. +func newMetrics(id string, optionalParent *monitoring.Registry) *inputMetrics { + reg, unreg := inputmon.NewInputRegistry(FullName, id, optionalParent) + + out := inputMetrics{ + unregister: unreg, + syncTotal: monitoring.NewUint(reg, "sync_total"), + syncError: monitoring.NewUint(reg, "sync_error"), + syncProcessingTime: metrics.NewUniformSample(1024), + updateTotal: monitoring.NewUint(reg, "update_total"), + updateError: monitoring.NewUint(reg, "update_error"), + updateProcessingTime: metrics.NewUniformSample(1024), + } + + adapter.NewGoMetrics(reg, "sync_processing_time", adapter.Accept).Register("histogram", metrics.NewHistogram(out.syncProcessingTime)) //nolint:errcheck // A unique namespace is used so name collisions are impossible. + adapter.NewGoMetrics(reg, "update_processing_time", adapter.Accept).Register("histogram", metrics.NewHistogram(out.updateProcessingTime)) //nolint:errcheck // A unique namespace is used so name collisions are impossible. + + return &out +} diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/state_string.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/state_string.go new file mode 100644 index 00000000000..2d0c77582fa --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/state_string.go @@ -0,0 +1,30 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +// Code generated by "stringer -type State"; DO NOT EDIT. + +package activedirectory + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[Discovered-1] + _ = x[Modified-2] + _ = x[Deleted-3] +} + +const _State_name = "DiscoveredModifiedDeleted" + +var _State_index = [...]uint8{0, 10, 18, 25} + +func (i State) String() string { + i -= 1 + if i < 0 || i >= State(len(_State_index)-1) { + return "State(" + strconv.FormatInt(int64(i+1), 10) + ")" + } + return _State_name[_State_index[i]:_State_index[i+1]] +} diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore.go new file mode 100644 index 00000000000..74486ebaac6 --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore.go @@ -0,0 +1,208 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package activedirectory + +import ( + "encoding/json" + "errors" + "fmt" + "time" + + "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/internal/kvstore" + "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/provider/activedirectory/internal/activedirectory" +) + +var ( + usersBucket = []byte("users") + stateBucket = []byte("state") + + whenChangedKey = []byte("when_changed") + lastSyncKey = []byte("last_sync") + lastUpdateKey = []byte("last_update") +) + +//go:generate stringer -type State +//go:generate go-licenser -license Elastic +type State int + +const ( + Discovered State = iota + 1 + Modified + Deleted +) + +type User struct { + activedirectory.Entry `json:"activedirectory"` + State State `json:"state"` +} + +// stateStore wraps a kvstore.Transaction and provides convenience methods for +// accessing and store relevant data within the kvstore database. +type stateStore struct { + tx *kvstore.Transaction + + // whenChanged is the last whenChanged time in the set of + // users and their associated groups. + whenChanged time.Time + + // lastSync and lastUpdate are the times of the first update + // or sync operation of users/groups. + lastSync time.Time + lastUpdate time.Time + users map[string]*User +} + +// newStateStore creates a new instance of stateStore. It will open a new write +// transaction on the kvstore and load values from the database. Since this +// opens a write transaction, only one instance of stateStore may be created +// at a time. The close function must be called to release the transaction lock +// on the kvstore database. +func newStateStore(store *kvstore.Store) (*stateStore, error) { + tx, err := store.BeginTx(true) + if err != nil { + return nil, fmt.Errorf("unable to open state store transaction: %w", err) + } + + s := stateStore{ + users: make(map[string]*User), + tx: tx, + } + + err = s.tx.Get(stateBucket, lastSyncKey, &s.lastSync) + if err != nil && !errIsItemNotFound(err) { + return nil, fmt.Errorf("unable to get last sync time from state: %w", err) + } + err = s.tx.Get(stateBucket, lastUpdateKey, &s.lastUpdate) + if err != nil && !errIsItemNotFound(err) { + return nil, fmt.Errorf("unable to get last update time from state: %w", err) + } + err = s.tx.Get(stateBucket, whenChangedKey, &s.whenChanged) + if err != nil && !errIsItemNotFound(err) { + return nil, fmt.Errorf("unable to get last change time from state: %w", err) + } + + err = s.tx.ForEach(usersBucket, func(key, value []byte) error { + var u User + err = json.Unmarshal(value, &u) + if err != nil { + return fmt.Errorf("unable to unmarshal user from state: %w", err) + } + s.users[u.ID] = &u + + return nil + }) + if err != nil && !errIsItemNotFound(err) { + return nil, fmt.Errorf("unable to get users from state: %w", err) + } + + return &s, nil +} + +// storeUser stores a user. If the user does not exist in the store, then the +// user will be marked as discovered. Otherwise, the user will be marked +// as modified. +func (s *stateStore) storeUser(u activedirectory.Entry) *User { + su := User{Entry: u} + if existing, ok := s.users[u.ID]; ok { + su.State = Modified + *existing = su + } else { + su.State = Discovered + s.users[u.ID] = &su + } + return &su +} + +// len returns the number of user entries in the state store. +func (s *stateStore) len() int { + return len(s.users) +} + +// forEach iterates over all users in the state store. Changes to the +// User's fields will be reflected in the state store. +func (s *stateStore) forEach(fn func(*User)) { + for _, u := range s.users { + fn(u) + } +} + +// close will close out the stateStore. If commit is true, the staged values on the +// stateStore will be set in the kvstore database, and the transaction will be +// committed. Otherwise, all changes will be discarded and the transaction will +// be rolled back. The stateStore must NOT be used after close is called, rather, +// a new stateStore should be created. +func (s *stateStore) close(commit bool) (err error) { + if !commit { + return s.tx.Rollback() + } + + // Fallback in case one of the statements below fails. If everything is + // successful and Commit is called, then this call to Rollback will be a no-op. + defer func() { + if err == nil { + return + } + rollbackErr := s.tx.Rollback() + if rollbackErr == nil { + err = fmt.Errorf("multiple errors during statestore close: %w", errors.Join(err, rollbackErr)) + } + }() + + if !s.lastSync.IsZero() { + err = s.tx.Set(stateBucket, lastSyncKey, &s.lastSync) + if err != nil { + return fmt.Errorf("unable to save last sync time to state: %w", err) + } + } + if !s.lastUpdate.IsZero() { + err = s.tx.Set(stateBucket, lastUpdateKey, &s.lastUpdate) + if err != nil { + return fmt.Errorf("unable to save last update time to state: %w", err) + } + } + if !s.whenChanged.IsZero() { + err = s.tx.Set(stateBucket, whenChangedKey, &s.whenChanged) + if err != nil { + return fmt.Errorf("unable to save last change time to state: %w", err) + } + } + + for key, value := range s.users { + err = s.tx.Set(usersBucket, []byte(key), value) + if err != nil { + return fmt.Errorf("unable to save user %q to state: %w", key, err) + } + } + + return s.tx.Commit() +} + +// getLastSync retrieves the last full synchronization time from the kvstore +// database. If the value doesn't exist, a zero time.Time is returned. +func getLastSync(store *kvstore.Store) (time.Time, error) { + var t time.Time + err := store.RunTransaction(false, func(tx *kvstore.Transaction) error { + return tx.Get(stateBucket, lastSyncKey, &t) + }) + + return t, err +} + +// getLastUpdate retrieves the last incremental update time from the kvstore +// database. If the value doesn't exist, a zero time.Time is returned. +func getLastUpdate(store *kvstore.Store) (time.Time, error) { + var t time.Time + err := store.RunTransaction(false, func(tx *kvstore.Transaction) error { + return tx.Get(stateBucket, lastUpdateKey, &t) + }) + + return t, err +} + +// errIsItemNotFound returns true if the error represents an item not found +// error (bucket not found or key not found). +func errIsItemNotFound(err error) bool { + return errors.Is(err, kvstore.ErrBucketNotFound) || errors.Is(err, kvstore.ErrKeyNotFound) +} diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore_test.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore_test.go new file mode 100644 index 00000000000..747acacd8e3 --- /dev/null +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/statestore_test.go @@ -0,0 +1,246 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package activedirectory + +import ( + "bytes" + "encoding/json" + "errors" + "os" + "testing" + "time" + + "github.com/google/go-cmp/cmp" + + "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/internal/kvstore" + "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/provider/activedirectory/internal/activedirectory" + "github.com/elastic/elastic-agent-libs/logp" +) + +func TestStateStore(t *testing.T) { + lastSync, err := time.Parse(time.RFC3339Nano, "2023-01-12T08:47:23.296794-05:00") + if err != nil { + t.Fatalf("failed to parse lastSync") + } + lastUpdate, err := time.Parse(time.RFC3339Nano, "2023-01-12T08:50:04.546457-05:00") + if err != nil { + t.Fatalf("failed to parse lastUpdate") + } + + t.Run("new", func(t *testing.T) { + dbFilename := "TestStateStore_New.db" + store := testSetupStore(t, dbFilename) + t.Cleanup(func() { + testCleanupStore(store, dbFilename) + }) + + // Inject test values into store. + data := []struct { + key []byte + val any + }{ + {key: lastSyncKey, val: lastSync}, + {key: lastUpdateKey, val: lastUpdate}, + } + for _, kv := range data { + err := store.RunTransaction(true, func(tx *kvstore.Transaction) error { + return tx.Set(stateBucket, kv.key, kv.val) + }) + if err != nil { + t.Fatalf("failed to set %s: %v", kv.key, err) + } + } + + ss, err := newStateStore(store) + if err != nil { + t.Fatalf("failed to make new store: %v", err) + } + defer ss.close(false) + + checks := []struct { + name string + got, want any + }{ + {name: "lastSync", got: ss.lastSync, want: lastSync}, + {name: "lastUpdate", got: ss.lastUpdate, want: lastUpdate}, + } + for _, c := range checks { + if !cmp.Equal(c.got, c.want) { + t.Errorf("unexpected results for %s: got:%#v want:%#v", c.name, c.got, c.want) + } + } + }) + + t.Run("close", func(t *testing.T) { + dbFilename := "TestStateStore_Close.db" + store := testSetupStore(t, dbFilename) + t.Cleanup(func() { + testCleanupStore(store, dbFilename) + }) + + wantUsers := map[string]*User{ + "userid": { + State: Discovered, + Entry: activedirectory.Entry{ + ID: "userid", + }, + }, + } + + ss, err := newStateStore(store) + if err != nil { + t.Fatalf("failed to make new store: %v", err) + } + ss.lastSync = lastSync + ss.lastUpdate = lastUpdate + ss.users = wantUsers + + err = ss.close(true) + if err != nil { + t.Fatalf("unexpected error closing: %v", err) + } + + roundTripChecks := []struct { + name string + key []byte + val any + }{ + {name: "lastSyncKey", key: lastSyncKey, val: &ss.lastSync}, + {name: "lastUpdateKey", key: lastUpdateKey, val: &ss.lastUpdate}, + } + for _, check := range roundTripChecks { + want, err := json.Marshal(check.val) + if err != nil { + t.Errorf("unexpected error marshaling %s: %v", check.name, err) + } + var got []byte + err = store.RunTransaction(false, func(tx *kvstore.Transaction) error { + got, err = tx.GetBytes(stateBucket, check.key) + return err + }) + if err != nil { + t.Errorf("unexpected error from store run transaction %s: %v", check.name, err) + } + if !bytes.Equal(got, want) { + t.Errorf("unexpected result after store round-trip for %s: got:%s want:%s", check.name, got, want) + } + } + + users := map[string]*User{} + err = store.RunTransaction(false, func(tx *kvstore.Transaction) error { + return tx.ForEach(usersBucket, func(key, value []byte) error { + var u User + err = json.Unmarshal(value, &u) + if err != nil { + return err + } + users[u.ID] = &u + return nil + }) + }) + if err != nil { + t.Errorf("unexpected error from store run transaction: %v", err) + } + if !cmp.Equal(wantUsers, users) { + t.Errorf("unexpected result:\n- want\n+ got\n%s", cmp.Diff(wantUsers, users)) + } + }) + + t.Run("get_last_sync", func(t *testing.T) { + dbFilename := "TestGetLastSync.db" + store := testSetupStore(t, dbFilename) + t.Cleanup(func() { + testCleanupStore(store, dbFilename) + }) + + err := store.RunTransaction(true, func(tx *kvstore.Transaction) error { + return tx.Set(stateBucket, lastSyncKey, lastSync) + }) + if err != nil { + t.Fatalf("failed to set value: %v", err) + } + + got, err := getLastSync(store) + if err != nil { + t.Errorf("unexpected error from getLastSync: %v", err) + } + if !lastSync.Equal(got) { + t.Errorf("unexpected result from getLastSync: got:%v want:%v", got, lastSync) + } + }) + + t.Run("get_last_update", func(t *testing.T) { + dbFilename := "TestGetLastUpdate.db" + store := testSetupStore(t, dbFilename) + t.Cleanup(func() { + testCleanupStore(store, dbFilename) + }) + + err := store.RunTransaction(true, func(tx *kvstore.Transaction) error { + return tx.Set(stateBucket, lastUpdateKey, lastUpdate) + }) + if err != nil { + t.Fatalf("failed to set value: %v", err) + } + + got, err := getLastUpdate(store) + if err != nil { + t.Errorf("unexpected error from getLastUpdate: %v", err) + } + if !lastUpdate.Equal(got) { + t.Errorf("unexpected result from getLastUpdate: got:%v want:%v", got, lastUpdate) + } + }) +} + +func TestErrIsItemFound(t *testing.T) { + tests := []struct { + name string + err error + want bool + }{ + { + name: "bucket-not-found", + err: kvstore.ErrBucketNotFound, + want: true, + }, + { + name: "key-not-found", + err: kvstore.ErrKeyNotFound, + want: true, + }, + { + name: "invalid error", + err: errors.New("test error"), + want: false, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + got := errIsItemNotFound(test.err) + if got != test.want { + t.Errorf("unexpected result for %s: got:%t want:%t", test.name, got, test.want) + } + }) + } +} + +func ptr[T any](v T) *T { return &v } + +func testSetupStore(t *testing.T, path string) *kvstore.Store { + t.Helper() + + store, err := kvstore.NewStore(logp.L(), path, 0644) + if err != nil { + t.Fatalf("unexpected error making store: %v", err) + } + return store +} + +func testCleanupStore(store *kvstore.Store, path string) { + _ = store.Close() + _ = os.Remove(path) +} From 62235efd7aa2ea74031981962580cac1dbf48977 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 22 Mar 2024 11:38:03 +0200 Subject: [PATCH 063/313] Add testing for buildkite dynamic pipeline generator (#38492) This PR changes the main dynamic pipeline to detect if there are changes in the Python or yaml scripts and runs some Python tests to make sure that everything works before moving into triggering the pipeline. This will ensure that we don't accidentally break the dynamic pipeline generator. Signed-off-by: Alexandros Sapranidis Co-authored-by: Dimitrios Liappis --- .buildkite/pipeline.yml | 3 - .buildkite/pytest.ini | 11 +++ .buildkite/scripts/generate_pipeline.sh | 7 +- .../scripts/run_dynamic_pipeline_tests.sh | 43 +++++++++++ .buildkite/test_pipeline.py | 71 +++++++++++++++++++ 5 files changed, 131 insertions(+), 4 deletions(-) create mode 100644 .buildkite/pytest.ini create mode 100755 .buildkite/scripts/run_dynamic_pipeline_tests.sh create mode 100644 .buildkite/test_pipeline.py diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 8f124fea4ae..84f725981fe 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -5,6 +5,3 @@ env: steps: - label: "Generate dynamic pipeline" command: ".buildkite/scripts/generate_pipeline.sh" - agents: - provider: "gcp" - image: "family/platform-ingest-beats-ubuntu-2204" diff --git a/.buildkite/pytest.ini b/.buildkite/pytest.ini new file mode 100644 index 00000000000..3eff7473d9f --- /dev/null +++ b/.buildkite/pytest.ini @@ -0,0 +1,11 @@ +[pytest] +junit_family=xunit1 + +addopts = --strict-markers +markers = + load: Load tests + tag(name): Tag tests with Go-like semantics + +# Ignore setup and teardown for the timeout +#timeout_func_only = True + diff --git a/.buildkite/scripts/generate_pipeline.sh b/.buildkite/scripts/generate_pipeline.sh index 342dc8bf7ac..877ea018f06 100755 --- a/.buildkite/scripts/generate_pipeline.sh +++ b/.buildkite/scripts/generate_pipeline.sh @@ -2,7 +2,12 @@ set -euo pipefail echo "~~~ Install dependencies" -pip3 install --quiet "ruamel.yaml<0.18.0" +python3 -mpip install --quiet "ruamel.yaml<0.18.0" +# temporary solution until we have this into a base container +curl -fsSL --retry-max-time 60 --retry 3 --retry-delay 5 -o /usr/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 +chmod a+x /usr/bin/yq + +.buildkite/scripts/run_dynamic_pipeline_tests.sh echo "+++ Run pipeline generator in dry-run mode" python3 .buildkite/pipeline.py | yq . diff --git a/.buildkite/scripts/run_dynamic_pipeline_tests.sh b/.buildkite/scripts/run_dynamic_pipeline_tests.sh new file mode 100755 index 00000000000..8eb72d7a96b --- /dev/null +++ b/.buildkite/scripts/run_dynamic_pipeline_tests.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +# Run tests for the dynamic pipeline generator only if it's a PR and related files have been changed +# this will allow us to fail fast, if e.g. a PR has broken the generator + +set -euo pipefail + +are_paths_changed() { + local patterns=("${@}") + local changelist=() + for pattern in "${patterns[@]}"; do + changed_files=($(git diff --name-only HEAD@{1} HEAD | grep -E "$pattern")) + if [ "${#changed_files[@]}" -gt 0 ]; then + changelist+=("${changed_files[@]}") + fi + done + + if [ "${#changelist[@]}" -gt 0 ]; then + echo "Files changed:" + echo "${changelist[*]}" + return 0 + else + echo "No files changed within specified changeset:" + echo "${patterns[*]}" + return 1 + fi +} + +pipeline_generator_changeset=( + "^.buildkite/pipeline.py" + "^*/buildkite.yml" +) + +if ! are_paths_changed "${pipeline_generator_changeset[@]}" || [[ "${BUILDKITE_PULL_REQUEST}" == "false" ]]; then + echo "~~~ Skipping pipeline generator tests" + exit +fi + +echo "~~~ Running pipeline generator tests" + +python3 -mpip install --quiet "pytest" +pushd .buildkite +pytest . +popd diff --git a/.buildkite/test_pipeline.py b/.buildkite/test_pipeline.py new file mode 100644 index 00000000000..75fd949ccc8 --- /dev/null +++ b/.buildkite/test_pipeline.py @@ -0,0 +1,71 @@ +import os + +import pytest +import pipeline + + +@pytest.fixture +def ubuntu2204_aws_agent(): + return { + "command": "fake-cmd", + "platform": "platform-ingest-beats-ubuntu-2204-aarch64", + "provider": "aws" + } + + +@pytest.fixture() +def fake_simple_group(): + return { + "unitTest": { + "command": "fake-cmd", + "platform": "family/platform-ingest-beats-ubuntu-2204", + }, + "integrationTest": { + "command": "fake-integration", + "platform": "family/platform-ingest-beats-ubuntu-2204", + "env": { + "FOO": "BAR", + }, + }, + } + + +def test_fetch_stage(ubuntu2204_aws_agent): + step = pipeline.fetch_stage("test", ubuntu2204_aws_agent, "fake", "fake-category") + assert step.create_entity() == { + "label": "fake test", + "command": ["cd fake", "fake-cmd"], + "notify": [ + { + "github_commit_status": { + "context": "Fake: test", + } + } + ], + "agents": { + "provider": "aws", + "imagePrefix": "platform-ingest-beats-ubuntu-2204-aarch64", + "instanceType": "t4g.large", + }, + "artifact_paths": [ + "fake/build/*.xml", + "fake/build/*.json", + ], + } + + +def test_fetch_group(fake_simple_group): + group = pipeline.fetch_group(fake_simple_group, "fake-project", "testing") + assert len(group.steps) == 2 + for step in group.steps: + assert "testing" == step.category + assert "gcp" == step.agent.provider + + assert group.steps[1].env.get("FOO") == "BAR" + + +def test_is_pr(): + os.environ["BUILDKITE_PULL_REQUEST"] = "1234" + assert pipeline.is_pr() is True + os.environ["BUILDKITE_PULL_REQUEST"] = "false" + assert pipeline.is_pr() is False From 55321809127d50eaf23b0254affdeb62635b1c64 Mon Sep 17 00:00:00 2001 From: Pierre HILBERT Date: Fri, 22 Mar 2024 15:34:01 +0100 Subject: [PATCH 064/313] Add CODEOWNERS entry for Aerospike (#38249) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 771a2474620..e189cdbf51c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -68,6 +68,7 @@ CHANGELOG* /metricbeat/ @elastic/elastic-agent-data-plane /metricbeat/docs/ # Listed without an owner to avoid maintaining doc ownership for each input and module. /metricbeat/helper/kubernetes @elastic/obs-cloudnative-monitoring +/metricbeat/module/aerospike @elastic/obs-infraobs-integrations /metricbeat/module/apache @elastic/obs-infraobs-integrations /metricbeat/module/beat/ @elastic/stack-monitoring /metricbeat/module/ceph @elastic/obs-infraobs-integrations From 06a11e7cec0f6d45a8de9c557e7586c7f6e558a8 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 22 Mar 2024 17:20:48 +0200 Subject: [PATCH 065/313] Disable Buildkite PR comments (#38554) This commit disables PR comments while the migration is ongoing. Relates: https://github.com/elastic/ingest-dev/issues/3001#issuecomment-2015048515 --- catalog-info.yaml | 76 +++++++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index 7f99ab9ce83..f6e78e87b7c 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -53,9 +53,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.* !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.* !8.*" - # TODO uncomment this environment variable when pipeline definition is updated - # env: - # ELASTIC_PR_COMMENTS_ENABLED: 'true' + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -101,7 +101,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.* !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to truue once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -147,7 +148,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.* !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to truue once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -192,8 +194,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.* !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.* !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" TODO: uncomment when pipeline is ready + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -239,7 +242,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.* !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -284,8 +288,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.* !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.* !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" TODO: uncomment when pipeline is ready + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -331,7 +336,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -377,7 +383,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -421,8 +428,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" TODO: uncomment when pipeline is ready + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -468,7 +476,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -514,7 +523,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -560,7 +570,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -606,7 +617,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -652,7 +664,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" env: - ELASTIC_PR_COMMENTS_ENABLED: "true" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -767,8 +780,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -813,8 +827,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -859,8 +874,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -905,8 +921,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -951,8 +968,9 @@ spec: cancel_intermediate_builds_branch_filter: "!main !7.17 !8.*" skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.17 !8.*" - # env: - # ELASTIC_PR_COMMENTS_ENABLED: "true" #TODO: uncomment after tests + env: + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ From 8bda9b26e2068ae0fff68a4082531f8ba3fd717a Mon Sep 17 00:00:00 2001 From: sharbuz <87968844+sharbuz@users.noreply.github.com> Date: Mon, 25 Mar 2024 10:27:39 +0200 Subject: [PATCH 066/313] migrate x-pack/heartbeat pipeline (#38490) * migrate x-pack/heartbeat pipeline --- .buildkite/hooks/pre-command | 4 +- .buildkite/scripts/common.sh | 61 +++++++- .../generate_xpack_heartbeat_pipeline.sh | 145 ++++++++++++++++++ .buildkite/scripts/install_tools.sh | 10 ++ .buildkite/scripts/setenv.sh | 14 +- .buildkite/x-pack/pipeline.xpack.filebeat.yml | 2 +- .../x-pack/pipeline.xpack.heartbeat.yml | 52 ++++++- 7 files changed, 279 insertions(+), 9 deletions(-) create mode 100755 .buildkite/scripts/generate_xpack_heartbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index a68d98227d4..2c69f322ad8 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -62,12 +62,12 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then - source .buildkite/scripts/setenv.sh +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then echo "Skipped pre-command when running the Upload pipeline" exit 0 fi + source .buildkite/scripts/setenv.sh fi if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 060be87613c..201fa8a42c7 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -22,6 +22,7 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_winlogbeat+x}" ] && run_xpack_winlogbeat="$(buildkite-agent meta-data get run_xpack_winlogbeat --default "false")" [ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" [ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" +[ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" [ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat @@ -39,6 +40,7 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_filebeat_macos_tests+x}" ] && run_xpack_filebeat_macos_tests="$(buildkite-agent meta-data get run_xpack_filebeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" +[ -z "${run_xpack_heartbeat_macos_tests+x}" ] && run_xpack_heartbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_heartbeat_macos_tests --default "false")" [ -z "${run_xpack_osquerybeat_macos_tests+x}" ] && run_xpack_osquerybeat_macos_tests="$(buildkite-agent meta-data get run_xpack_osquerybeat_macos_tests --default "false")" # define if needed run cloud-specific tests for the particular beat @@ -69,6 +71,10 @@ xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) +xpack_heartbeat_changeset=( + "^x-pack/heartbeat/.*" + ) + xpack_filebeat_changeset=( "^x-pack/filebeat/.*" ) @@ -140,11 +146,14 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-auditbeat") BEAT_CHANGESET_REFERENCE=${xpack_auditbeat_changeset[@]} ;; + "beats-xpack-dockerlogbeat") + BEAT_CHANGESET_REFERENCE=${xpack_dockerlogbeat_changeset[@]} + ;; "beats-xpack-filebeat") BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} ;; - "beats-xpack-dockerlogbeat") - BEAT_CHANGESET_REFERENCE=${xpack_dockerlogbeat_changeset[@]} + "beats-xpack-heartbeat") + BEAT_CHANGESET_REFERENCE=${xpack_heartbeat_changeset[@]} ;; "beats-xpack-libbeat") BEAT_CHANGESET_REFERENCE=${xpack_libbeat_changeset[@]} @@ -419,7 +428,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -520,6 +529,52 @@ startCloudTestEnv() { popd > /dev/null } +withNodeJSEnv() { + # HOME="${WORKSPACE}" + local version=$1 + # local nvmPath="${HOME}/.nvm/versions/node/${version}/bin" + echo "Installing nvm" + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + echo "Installing the NodeJs version $version" + nvm install "$version" + # export PATH="${nvmPath}:${PATH}" + nvm use "$version" + node --version +} + +installNodeJsDependencies() { + # Install dependencies to run browsers + if [ "${platform_type}" == "Linux" ]; then + sudo apt-get install -y \ + libatk1.0-0 \ + libatk-bridge2.0-0 \ + libcups2 \ + libxkbcommon0 \ + libatspi2.0-0 \ + libxcomposite1 \ + libxdamage1 \ + libxfixes3 \ + libxrandr2 \ + libgbm1 \ + libpango-1.0-0 \ + libcairo2 \ + libasound2 + if [ $? -ne 0 ]; then + echo "Error: Failed to install dependencies." + exit 1 + else + echo "Dependencies installed successfully." + fi + elif [ "${platform_type}" == "Darwin" ]; then + echo "TBD" + else + echo "Unsupported platform type." + exit 1 + fi +} + teardown() { # Teardown resources after using them echo "---Terraform Cleanup" diff --git a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh new file mode 100755 index 00000000000..b51ca0ab3b9 --- /dev/null +++ b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh @@ -0,0 +1,145 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.xpack-heartbeat-dynamic.yml" + +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "gcp" + image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: ".buildkite/scripts/go_int_tests.sh" + agents: + provider: "gcp" + image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + +# ## TODO: there are windows test failures already reported +# ## https://github.com/elastic/beats/issues/23957 and https://github.com/elastic/beats/issues/23958 +# ## waiting for being fixed. + +# - label: ":windows: Windows Unit Tests - {{matrix.image}}" +# command: ".buildkite/scripts/win_unit_tests.ps1" +# key: "mandatory-win-unit-tests" +# agents: +# provider: "gcp" +# image: "{{matrix.image}}" +# machineType: "${GCP_WIN_MACHINE_TYPE}" +# disk_size: 100 +# disk_type: "pd-ssd" +# matrix: +# setup: +# image: +# - "${IMAGE_WIN_2016}" +# - "${IMAGE_WIN_2022}" +# artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +# ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h + +# - group: "Extended Windows Tests" +# key: "extended-win-tests" +# steps: + +# - label: ":windows: Windows Unit Tests - {{matrix.image}}" +# command: ".buildkite/scripts/win_unit_tests.ps1" +# key: "extended-win-unit-tests" +# agents: +# provider: "gcp" +# image: "{{matrix.image}}" +# machineType: "${GCP_WIN_MACHINE_TYPE}" +# disk_size: 100 +# disk_type: "pd-ssd" +# matrix: +# setup: +# image: +# - "${IMAGE_WIN_10}" +# - "${IMAGE_WIN_11}" +# - "${IMAGE_WIN_2019}" +# artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: + + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then + cat >> $pipelineName <<- YAML + + - wait: ~ + depends_on: + - step: "mandatory-tests" + allow_failure: false + + - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/install_tools.sh b/.buildkite/scripts/install_tools.sh index 80e70ae96c5..3d25cf8e5c9 100755 --- a/.buildkite/scripts/install_tools.sh +++ b/.buildkite/scripts/install_tools.sh @@ -41,6 +41,16 @@ with_mage with_python with_dependencies config_git + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then + # Install NodeJS + withNodeJSEnv "${NODEJS_VERSION}" + installNodeJsDependencies + + echo "Install @elastic/synthetics" + npm i -g @elastic/synthetics +fi + mage dumpVariables #sudo command doesn't work at the "pre-command" hook because of another user environment (root with strange permissions) diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index b11bc4fe168..8da3796aa1e 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -15,6 +15,7 @@ PACKAGING_PLATFORMS="+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 dar PACKAGING_ARM_PLATFORMS="linux/arm64" ASDF_TERRAFORM_VERSION="1.0.2" AWS_REGION="eu-central-1" +NODEJS_VERSION="18.17.1" export SETUP_GVM_VERSION export DOCKER_COMPOSE_VERSION @@ -30,6 +31,7 @@ export TMP_FOLDER export DOCKER_REGISTRY export ASDF_TERRAFORM_VERSION export AWS_REGION +export NODEJS_VERSION exportVars() { local platform_type="$(uname)" @@ -64,7 +66,17 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_S export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-filebeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-filebeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then + source .buildkite/scripts/common.sh + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then + export ELASTIC_SYNTHETICS_CAPABLE=true + else + # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. + defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" + fi +fi + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. source .buildkite/scripts/common.sh defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index b0dd795c811..a324353b65f 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -66,4 +66,4 @@ steps: command: ".buildkite/scripts/generate_xpack_filebeat_pipeline.sh" notify: - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" \ No newline at end of file + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 65175d3b029..2804e98996a 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -1,6 +1,54 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json name: "beats-xpack-heartbeat" + +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" + IMAGE_WIN_10: "family/general-windows-10" + IMAGE_WIN_11: "family/general-windows-11" + IMAGE_WIN_2016: "family/core-windows-2016" + IMAGE_WIN_2019: "family/core-windows-2019" + IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/heartbeat" + steps: - - label: "Example test" - command: echo "Hello!" + + - input: "Input Parameters" + key: "force-run-stages" + fields: + - select: "Heartbeat - run_xpack_heartbeat" + key: "run_xpack_heartbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Heartbeat - run_xpack_heartbeat_macos_tests" + key: "run_xpack_heartbeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + + if: "build.source == 'ui'" + + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false + + - label: ":linux: Load dynamic x-pack heartbeat pipeline" + key: "xpack-heartbeat-pipeline" + command: ".buildkite/scripts/generate_xpack_heartbeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" From fe132dac9ecaec1efdd4ee3b5887ae63fdfa2832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chema=20Mart=C3=ADnez?= Date: Mon, 25 Mar 2024 12:31:38 +0100 Subject: [PATCH 067/313] x-pack/filebeat/input/etw: Rename activity_guid to activity_id in ETW events (#38530) Rename activity_guid to activity_id in generated ETW events to match mapping and other Windows inputs. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/docs/inputs/input-etw.asciidoc | 8 ++++---- x-pack/filebeat/input/etw/config.go | 2 +- x-pack/filebeat/input/etw/input.go | 2 +- x-pack/filebeat/input/etw/input_test.go | 10 +++++----- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 15ed3e8b2cb..e0653d6139f 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -104,6 +104,7 @@ fields added to events containing the Beats version. {pull}37553[37553] - Fix HTTPJSON handling of empty object bodies in POST requests. {issue}33961[33961] {pull}38290[38290] - Fix PEM key validation for CEL and HTTPJSON inputs. {pull}38405[38405] - Fix filebeat gcs input panic {pull}38407[38407] +- Rename `activity_guid` to `activity_id` in ETW input events to suit other Windows inputs. {pull}38530[38530] *Heartbeat* diff --git a/x-pack/filebeat/docs/inputs/input-etw.asciidoc b/x-pack/filebeat/docs/inputs/input-etw.asciidoc index 27dadaca2b7..c072542cf5a 100644 --- a/x-pack/filebeat/docs/inputs/input-etw.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-etw.asciidoc @@ -99,7 +99,7 @@ Multiple providers example: provider.name: Microsoft-Windows-DNSServer session_name: DNSServer-Analytical trace_level: verbose - match_any_keyword: 0xfffffffffffffffff + match_any_keyword: 0xffffffffffffffff match_all_keyword: 0 - type: etw id: etw-security @@ -107,7 +107,7 @@ Multiple providers example: provider.name: Microsoft-Windows-Security-Auditing session_name: Security-Auditing trace_level: warning - match_any_keyword: 0xffffffffffffffff + match_any_keyword: 0xfffffffffffffff match_all_keyword: 0 ---- @@ -145,14 +145,14 @@ using the provider ID prefixed by 'Elastic-'. ==== `trace_level` Defines the filtering level for events based on severity. Valid options include -critical, error, warning, informational, and verbose. +critical, error, warning, information, and verbose. [float] ==== `match_any_keyword` An 8-byte bitmask used for filtering events from specific provider subcomponents based on keyword matching. Any matching keyword will enable the event to be -written. Default value is `0xfffffffffffffffff` so it matches every available +written. Default value is `0xffffffffffffffff` so it matches every available keyword. Run `logman query providers ""` to list the available keywords diff --git a/x-pack/filebeat/input/etw/config.go b/x-pack/filebeat/input/etw/config.go index 2f3925884f3..4df10e268d3 100644 --- a/x-pack/filebeat/input/etw/config.go +++ b/x-pack/filebeat/input/etw/config.go @@ -35,7 +35,7 @@ type config struct { SessionName string `config:"session_name"` // TraceLevel filters all provider events with a level value // that is less than or equal to this level. - // Allowed values are critical, error, warning, informational, and verbose. + // Allowed values are critical, error, warning, information, and verbose. TraceLevel string `config:"trace_level"` // MatchAnyKeyword is an 8-byte bitmask that enables the filtering of // events from specific provider subcomponents. The provider will write diff --git a/x-pack/filebeat/input/etw/input.go b/x-pack/filebeat/input/etw/input.go index 021805ebdfa..f030ada04e0 100644 --- a/x-pack/filebeat/input/etw/input.go +++ b/x-pack/filebeat/input/etw/input.go @@ -182,7 +182,7 @@ var ( // buildEvent builds the final beat.Event emitted by this input. func buildEvent(data map[string]any, h etw.EventHeader, session *etw.Session, cfg config) beat.Event { winlog := map[string]any{ - "activity_guid": h.ActivityId.String(), + "activity_id": h.ActivityId.String(), "channel": strconv.FormatUint(uint64(h.EventDescriptor.Channel), 10), "event_data": data, "flags": strconv.FormatUint(uint64(h.Flags), 10), diff --git a/x-pack/filebeat/input/etw/input_test.go b/x-pack/filebeat/input/etw/input_test.go index 95c9167a696..a55d22c7b70 100644 --- a/x-pack/filebeat/input/etw/input_test.go +++ b/x-pack/filebeat/input/etw/input_test.go @@ -367,8 +367,8 @@ func Test_buildEvent(t *testing.T) { expected: mapstr.M{ "winlog": map[string]any{ - "activity_guid": "{12345678-1234-1234-1234-123456789ABC}", - "channel": "10", + "activity_id": "{12345678-1234-1234-1234-123456789ABC}", + "channel": "10", "event_data": map[string]any{ "key": "value", }, @@ -435,8 +435,8 @@ func Test_buildEvent(t *testing.T) { expected: mapstr.M{ "winlog": map[string]any{ - "activity_guid": "{12345678-1234-1234-1234-123456789ABC}", - "channel": "10", + "activity_id": "{12345678-1234-1234-1234-123456789ABC}", + "channel": "10", "event_data": map[string]any{ "key": "value", }, @@ -461,7 +461,7 @@ func Test_buildEvent(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { evt := buildEvent(tt.data, tt.header, tt.session, tt.cfg) - assert.Equal(t, tt.expected["winlog"].(map[string]any)["activity_guid"], evt.Fields["winlog"].(map[string]any)["activity_guid"]) + assert.Equal(t, tt.expected["winlog"].(map[string]any)["activity_id"], evt.Fields["winlog"].(map[string]any)["activity_id"]) assert.Equal(t, tt.expected["winlog"].(map[string]any)["channel"], evt.Fields["winlog"].(map[string]any)["channel"]) assert.Equal(t, tt.expected["winlog"].(map[string]any)["event_data"], evt.Fields["winlog"].(map[string]any)["event_data"]) assert.Equal(t, tt.expected["winlog"].(map[string]any)["flags"], evt.Fields["winlog"].(map[string]any)["flags"]) From 5750480ebf63a5f507b3b458fd64fb83f14162e9 Mon Sep 17 00:00:00 2001 From: Alex K <8418476+fearful-symmetry@users.noreply.github.com> Date: Mon, 25 Mar 2024 07:11:20 -0700 Subject: [PATCH 068/313] remove references to export template --index (#38563) --- libbeat/docs/command-reference.asciidoc | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/libbeat/docs/command-reference.asciidoc b/libbeat/docs/command-reference.asciidoc index 0c65e80dc6b..91daaf097be 100644 --- a/libbeat/docs/command-reference.asciidoc +++ b/libbeat/docs/command-reference.asciidoc @@ -336,8 +336,8 @@ If {kib} is not running on `localhost:5061`, you must also adjust the endif::no_dashboards[] [[template-subcommand]]*`template`*:: -Exports the index template to stdout. You can specify the `--es.version` and -`--index` flags to further define what gets exported. Furthermore you can export +Exports the index template to stdout. You can specify the `--es.version` +flag to further define what gets exported. Furthermore you can export the template to a file instead of `stdout` by defining a directory via `--dir`. [[ilm-policy-subcommand]] @@ -388,10 +388,6 @@ endif::export_pipeline[] *`-h, --help`*:: Shows help for the `export` command. -*`--index BASE_NAME`*:: -When used with <>, sets the base name to use for -the index template. If this flag is not specified, the default base name is -+{beatname_lc}+. *`--dir DIRNAME`*:: @@ -412,7 +408,7 @@ ifndef::no_dashboards[] ["source","sh",subs="attributes"] ----- {beatname_lc} export config -{beatname_lc} export template --es.version {version} --index myindexname +{beatname_lc} export template --es.version {version} {beatname_lc} export dashboard --id="a7b35890-8baa-11e8-9676-ef67484126fb" > dashboard.json ----- endif::no_dashboards[] @@ -421,7 +417,7 @@ ifdef::no_dashboards[] ["source","sh",subs="attributes"] ----- {beatname_lc} export config -{beatname_lc} export template --es.version {version} --index myindexname +{beatname_lc} export template --es.version {version} ----- endif::no_dashboards[] endif::serverless[] @@ -430,7 +426,7 @@ ifdef::serverless[] ["source","sh",subs="attributes"] ----- {beatname_lc} export config -{beatname_lc} export template --es.version {version} --index myindexname +{beatname_lc} export template --es.version {version} {beatname_lc} export function cloudwatch ----- endif::serverless[] From 9fc21609a40d2673998771f5a00d714b279cb8a6 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Tue, 26 Mar 2024 06:16:33 +1030 Subject: [PATCH 069/313] x-pack/filebeat/docs/input/http_endpoint: fix word salad (#38579) --- x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc b/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc index 7f3050d1f68..a669eae489a 100644 --- a/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-http-endpoint.asciidoc @@ -230,7 +230,7 @@ In certain scenarios when the source of the request is not able to do that, it c [float] ==== `program` -The normal operation of the input treats the body either as a single event when the body is an object, or as a set of events when the body is an array. If the body should be treated handled differently, for example a set of events in an array field of an object to be handled as a set of events, then a https://opensource.google.com/projects/cel[Common Expression Language (CEL)] program can be provided through this configuration field. No CEL extensions are provided beyond the function in the CEL https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard[standard library]. CEL https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes[optional types] are supported. +The normal operation of the input treats the body either as a single event when the body is an object, or as a set of events when the body is an array. If the body should be handled differently, for example a set of events in an array field of an object to be handled as a set of events, then a https://opensource.google.com/projects/cel[Common Expression Language (CEL)] program can be provided through this configuration field. No CEL extensions are provided beyond the function in the CEL https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard[standard library]. CEL https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes[optional types] are supported. [float] ==== `response_code` From 9e33668c82a9641b7e778483db3886215f5b7ea7 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Tue, 26 Mar 2024 14:10:08 +0200 Subject: [PATCH 070/313] Comment the buildkite upload step (#38610) This is done to disable the execution of the dynamic pipeline. Signed-off-by: Alexandros Sapranidis --- .buildkite/scripts/generate_pipeline.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.buildkite/scripts/generate_pipeline.sh b/.buildkite/scripts/generate_pipeline.sh index 877ea018f06..c5627aaf007 100755 --- a/.buildkite/scripts/generate_pipeline.sh +++ b/.buildkite/scripts/generate_pipeline.sh @@ -12,5 +12,6 @@ chmod a+x /usr/bin/yq echo "+++ Run pipeline generator in dry-run mode" python3 .buildkite/pipeline.py | yq . -echo "~~~ Upload pipeline" -python3 .buildkite/pipeline.py | buildkite-agent pipeline upload +# Temporary commenting this, until we restart this work-stream +#echo "~~~ Upload pipeline" +#python3 .buildkite/pipeline.py | buildkite-agent pipeline upload From a1c292dc65148aa6d27105b21996cbc6d49c9df3 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:32:28 +0100 Subject: [PATCH 071/313] [main](backport #38594) docs: Prepare Changelog for 8.13.0 (#38600) * docs: Prepare Changelog for 8.13.0 (#38594) * docs: Close changelog for 8.13.0 * Update CHANGELOG.asciidoc * Update CHANGELOG.asciidoc * Update release.asciidoc * Apply suggestions from code review Co-authored-by: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> --------- Co-authored-by: Pierre HILBERT Co-authored-by: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> (cherry picked from commit afca8bc0776fd99f715af93ea835e03bd4cbdeaa) # Conflicts: # CHANGELOG.asciidoc # libbeat/docs/release.asciidoc * Update release.asciidoc * Update CHANGELOG.asciidoc --------- Co-authored-by: Elastic Machine Co-authored-by: Pierre HILBERT Co-authored-by: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> --- CHANGELOG.asciidoc | 98 +++++++++++++++++++++++++++++++++++ CHANGELOG.next.asciidoc | 43 +-------------- libbeat/docs/release.asciidoc | 1 + 3 files changed, 100 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 611b3664c07..265d9a92f23 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -3,6 +3,103 @@ :issue: https://github.com/elastic/beats/issues/ :pull: https://github.com/elastic/beats/pull/ +[[release-notes-8.13.0]] +=== Beats version 8.13.0 +https://github.com/elastic/beats/compare/v8.12.2\...v8.13.0[View commits] + +==== Breaking changes + +*Affecting all Beats* + +- Upgrade Go version to 1.21.8. Removes support for Windows 8.1. See https://tip.golang.org/doc/go1.21#windows. {pull}38209[38209] +- The behavior of `queue.mem.flush.min_events` has been simplified. It now serves as a simple maximum on the size of all event batches. There are no longer performance implications in its relationship to `bulk_max_size`. {pull}37795[37795] + +*Auditbeat* + +- Add opt-in `KProbes` backend for file_integrity module. {pull}37796[37796] + +*Filebeat* + +- Convert netflow input to API v2 and disable event normalisation. {pull}37901[37901] + +*Winlogbeat* + +- Add "keystore.path" configuration settings to $workdir\data\{{.BeatName}}.keystore. {issue}12315[12315] {pull}37237[37237] + +==== Bugfixes + +*Affecting all Beats* +- Support Elastic Agent control protocol chunking support. {pull}37343[37343] +- Upgrade elastic-agent-libs to v0.7.5. Removes obsolete "Treating the CommonName field on X.509 certificates as a host name..." deprecation warning for 8.0. {pull}37755[37755] +- Fix the paths in the .cmd script added to the path by the Windows MSI to point to the new C:\Program Files installation location. https://github.com/elastic/elastic-stack-installers/pull/238 +- Upgrade elastic-agent-system-metrics to v0.9.2. Skips permissions errors when reading /proc/pid/io. {pull}38234[38234]. + +*Filebeat* + +- Fix a race condition that could crash Filebeat with a "negative WaitGroup counter" error. {pull}38094[38094] +- Fix "failed processing S3 event for object key" error on aws-s3 input when key contains the "+" character. {issue}38012[38012] {pull}38125[38125] +- Fix duplicated addition of regexp extension in CEL input. {pull}38181[38181] +- Fix HTTPJSON handling of empty object bodies in POST requests. {issue}33961[33961] {pull}38290[38290] +- Fix PEM key validation for CEL and HTTPJSON inputs. {pull}38405[38405] + +*Heartbeat* + +- Adjust State loader to only retry when response code status is 5xx. {pull}37981[37981] + +*Metricbeat* + +- Fix Azure Monitor 429 error by causing Metricbeat to retry the request again. {pull}38294[38294] +- Fix fields not being parsed correctly in postgresql/database. {issue}25301[25301] {pull}37720[37720] + +==== Added + +*Affecting all Beats* + +- Ignore Kubernetes node and namespace update events that do not change pod metadata. {issue}37338[37338] {pull}37431[37431] +- Enhance add_cloud_metadata processor with `orchestrator.cluster.name`, `orchestrator.cluster.id` and `azure.resourcegroup.name` when running inside an AKS cluster. {issue}33081[33081] {pull}37685[37685] +- Upgrade go-sysinfo from 1.12.0 to 1.13.1. {pull}37996[37996] +- Make `range` condition work with numeric values as strings. {pull}38080[38080] +- Allow users to configure number of output workers (for outputs that support workers) with either `worker` or `workers`. {pull}38257[38257] +- Kafka output now validates the `topics` and `topic` configuration values. {pull}38058[38058] + +*Auditbeat* + +- Add Linux capabilities to processes in the system/process. {pull}37453[37453] +- Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] + +*Filebeat* + +- Update SQL input documentation regarding Oracle DSNs {pull}37590[37590] +- Add support for complete URL replacement in HTTPJSON chain steps. {pull}37486[37486] +- Add support for user-defined query selection in EntraID entity analytics provider. {pull}37653[37653] +- Update CEL extensions library to v1.8.0 to provide runtime error location reporting. {issue}37304[37304] {pull}37718[37718] +- Add request trace logging for chained API requests. {issue}37551[36551] {pull}37682[37682] +- Add support for PEM-based Okta auth in HTTPJSON. {pull}37772[37772] +- Prevent complete loss of long request trace data. {issue}37826[37826] {pull}37836[37836] +- Added experimental version of the Websocket Input. {pull}37774[37774] +- Add support for PEM-based Okta auth in CEL. {pull}37813[37813] +- Add ETW input. {pull}36915[36915] +- Update CEL mito extensions to v1.9.0 to add keys/values helper. {pull}37971[37971] +- Add parseDateInTZ value template for the HTTPJSON input. {pull}37738[37738] +- Improve rate limit handling by HTTPJSON. {issue}36207[36207] {pull}38161[38161] {pull}38237[38237] + +*Libbeat* +- Add watcher that can be used to monitor Linux kernel events. {pull}37833[37833] +- Added support for ETW reader. {pull}36914[36914] + +*Heartbeat* +- Upgrade github.com/elastic/go-elasticsearch/v8 to v8.12.0. {pull}37673[37673] + +*Metricbeat* + +- Fix containerd metrics grouping for TSDB. {pull}37537[37537] + +*Packetbeat* + +- Bump Windows Npcap version to v1.79. {pull}37733[37733] +- Add support for pipeline loading. {pull}37291[37291] + + [[release-notes-8.12.2]] === Beats version 8.12.2 https://github.com/elastic/beats/compare/v8.12.1\...v8.12.2[View commits] @@ -76,6 +173,7 @@ you can achieve this by overwriting the value using an `add_fields` processor. { - Relax TCP/UDP metric polling expectations to improve metric collection. {pull}37714[37714] + [[release-notes-8.12.0]] === Beats version 8.12.0 https://github.com/elastic/beats/compare/v8.11.4\...v8.12.0[View commits] diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index e0653d6139f..988dca7934d 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -10,19 +10,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Affecting all Beats* -- Upgrade to Go 1.21.8. Removes support for Windows 8.1. See https://tip.golang.org/doc/go1.21#windows. {pull}38209[38209] -- add_cloud_metadata processor: `huawei` provider is now treated as `openstack`. Huawei cloud runs on OpenStack -platform, and when viewed from a metadata API standpoint, it is impossible to differentiate it from OpenStack. If you -know that your deployments run on Huawei Cloud exclusively, and you wish to have `cloud.provider` value as `huawei`, -you can achieve this by overwriting the value using an `add_fields` processor. {pull}35184[35184] -- In managed mode, Beats running under Elastic Agent will report the package -version of Elastic Agent as their own version. This includes all additional -fields added to events containing the Beats version. {pull}37553[37553] -- The behavior of `queue.mem.flush.min_events` has been simplified. It now serves as a simple maximum on the size of all event batches. There are no longer performance implications in its relationship to `bulk_max_size`. {pull}37795[37795] *Auditbeat* -- Add opt-in `KProbes` backend for file_integrity module. {pull}37796[37796] *Filebeat* @@ -44,7 +34,6 @@ fields added to events containing the Beats version. {pull}37553[37553] *Winlogbeat* - Add "event.category" and "event.type" to Sysmon module for EventIDs 8, 9, 19, 20, 27, 28, 255 {pull}35193[35193] -- Add "keystore.path" configuration settings to $workdir\data\{{.BeatName}}.keystore. Issue {issue}12315[12315] {pull}37237[37237] *Functionbeat* @@ -78,7 +67,6 @@ fields added to events containing the Beats version. {pull}37553[37553] *Filebeat* -- Fix nil pointer dereference in the httpjson input {pull}37591[37591] - [Gcs Input] - Added missing locks for safe concurrency {pull}34914[34914] - Fix the ignore_inactive option being ignored in Filebeat's filestream input {pull}34770[34770] - Fix TestMultiEventForEOFRetryHandlerInput unit test of CometD input {pull}34903[34903] @@ -138,26 +126,15 @@ fields added to events containing the Beats version. {pull}37553[37553] - Added append Processor which will append concrete values or values from a field to target. {issue}29934[29934] {pull}33364[33364] - dns processor: Add support for forward lookups (`A`, `AAAA`, and `TXT`). {issue}11416[11416] {pull}36394[36394] - [Enhanncement for host.ip and host.mac] Disabling netinfo.enabled option of add-host-metadata processor {pull}36506[36506] - Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will disable the netinfo.enabled option of add_host_metadata processor +Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will disable the netinfo.enabled option of add_host_metadata processor - allow `queue` configuration settings to be set under the output. {issue}35615[35615] {pull}36788[36788] - Beats will now connect to older Elasticsearch instances by default {pull}36884[36884] - Raise up logging level to warning when attempting to configure beats with unknown fields from autodiscovered events/environments - elasticsearch output now supports `idle_connection_timeout`. {issue}35616[35615] {pull}36843[36843] -- Upgrade golang/x/net to v0.17.0. Updates the publicsuffix table used by the registered_domain processor. {pull}36969[36969] Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will disable the netinfo.enabled option of add_host_metadata processor -- The Elasticsearch output can now configure performance presets with the `preset` configuration field. {pull}37259[37259] -- Upgrade to elastic-agent-libs v0.7.3 and golang.org/x/crypto v0.17.0. {pull}37544[37544] -- Make more selective the Pod autodiscovery upon node and namespace update events. {issue}37338[37338] {pull}37431[37431] -- Enhance add_cloud_metadata processor with `orchestrator.cluster.name`, `orchestrator.cluster.id` and `azure.resourcegroup.name` when running inside an AKS cluster. {issue}33081[33081] {pull}37685[37685] -- Upgrade go-sysinfo from 1.12.0 to 1.13.1. {pull}37996[37996] -- Make `range` condition work with numeric values as strings. {pull}38080[38080] -- Allow users to configure number of output workers (for outputs that support workers) with either `worker` or `workers`. {pull}38257[38257] -- Kafka output now validates the `topics` and `topic` configuration values {pull}38058[38058] *Auditbeat* -- Add linux capabilities to processes in the system/process. {pull}37453[37453] -- Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] *Filebeat* @@ -180,18 +157,9 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Added support for Okta OAuth2 provider in the CEL input. {issue}36336[36336] {pull}36521[36521] - Added support for new features & removed partial save mechanism in the Azure Blob Storage input. {issue}35126[35126] {pull}36690[36690] - Added support for new features and removed partial save mechanism in the GCS input. {issue}35847[35847] {pull}36713[36713] -- Re-use buffers to optimise memory allocation in fingerprint mode of filestream {pull}36736[36736] -- Allow http_endpoint input to receive PUT and PATCH requests. {pull}36734[36734] -- Add cache processor. {pull}36786[36786] -- Avoid unwanted publication of Azure entity records. {pull}36753[36753] -- Avoid unwanted publication of Okta entity records. {pull}36770[36770] -- Add support for Digest Authentication to CEL input. {issue}35514[35514] {pull}36932[36932] - Use filestream input with file_identity.fingerprint as default for hints autodiscover. {issue}35984[35984] {pull}36950[36950] -- Add network processor in addition to interface based direction resolution. {pull}37023[37023] - Add setup option `--force-enable-module-filesets`, that will act as if all filesets have been enabled in a module during setup. {issue}30915[30915] {pull}99999[99999] -- Make CEL input log current transaction ID when request tracing is turned on. {pull}37065[37065] - Made Azure Blob Storage input GA and updated docs accordingly. {pull}37128[37128] -- Add request trace logging to http_endpoint input. {issue}36951[36951] {pull}36957[36957] - Made GCS input GA and updated docs accordingly. {pull}37127[37127] - Suppress and log max HTTP request retry errors in CEL input. {pull}37160[37160] - Prevent CEL input from re-entering the eval loop when an evaluation failed. {pull}37161[37161] @@ -221,13 +189,10 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d *Libbeat* -- Add watcher that can be used to monitor Linux kernel events. {pull}37833[37833] -- Added support for ETW reader. {pull}36914[36914] *Heartbeat* - Added status to monitor run log report. -- Upgrade github.com/elastic/go-elasticsearch/v8 to v8.12.0. {pull}37673[37673] *Metricbeat* @@ -235,11 +200,8 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Add GCP CloudSQL metadata {pull}33066[33066] - Add GCP Carbon Footprint metricbeat data {pull}34820[34820] - Add event loop utilization metric to Kibana module {pull}35020[35020] -- Fix containerd metrics grouping for TSDB {pull}37537[37537] - Add metrics grouping by dimensions and time to Azure app insights {pull}36634[36634] - Align on the algorithm used to transform Prometheus histograms into Elasticsearch histograms {pull}36647[36647] -- Enhance GCP billing with detailed tables identification, additional fields, and optimized data handling. {pull}36902[36902] -- Add a `/inputs/` route to the HTTP monitoring endpoint that exposes metrics for each metricset instance. {pull}36971[36971] - Add linux IO metrics to system/process {pull}37213[37213] - Add new memory/cgroup metrics to Kibana module {pull}37232[37232] - Add SSL support to mysql module {pull}37997[37997] @@ -253,9 +215,6 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d *Packetbeat* -- Bump Windows Npcap version to v1.79. {pull}37733[37733] -- Add metrics for TCP flags. {issue}36992[36992] {pull}36975[36975] -- Add support for pipeline loading. {pull}37291[37291] *Packetbeat* diff --git a/libbeat/docs/release.asciidoc b/libbeat/docs/release.asciidoc index 55b9495a048..f62acc92d5d 100644 --- a/libbeat/docs/release.asciidoc +++ b/libbeat/docs/release.asciidoc @@ -8,6 +8,7 @@ This section summarizes the changes in each release. Also read <> for more detail about changes that affect upgrade. +* <> * <> * <> * <> From f87a5922620bea5afc9ebfc5f320871f7652f4cd Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 26 Mar 2024 18:20:09 +0200 Subject: [PATCH 072/313] Update chocolatey to latest version (#38617) This commit ensures that chocolatey is the latest version before installing Python on the Jenkins Windows workers. It fixes errors due to a outdated chocolatey versions looking like: ``` Failures - python (exited 1) - python not installed. An error occurred during installation: Unable to resolve dependency 'python3 (= 3.8.5)'. ``` --- .ci/scripts/install-tools.bat | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.ci/scripts/install-tools.bat b/.ci/scripts/install-tools.bat index 8cb837553dc..86572356da9 100644 --- a/.ci/scripts/install-tools.bat +++ b/.ci/scripts/install-tools.bat @@ -14,6 +14,10 @@ curl --version >nul 2>&1 && ( REM Set the USERPROFILE to the previous location to fix issues with chocolatey in windows 2019 SET PREVIOUS_USERPROFILE=%USERPROFILE% SET USERPROFILE=%OLD_USERPROFILE% + +echo "Upgrade chocolatey to latest version" +choco upgrade chocolatey -y + IF NOT EXIST C:\Python38\python.exe ( REM Install python 3.8 choco install python -y -r --no-progress --version 3.8.5 || exit /b 1 From 052efac60756238df5cea13819853d652f270527 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Tue, 26 Mar 2024 18:05:52 +0100 Subject: [PATCH 073/313] [CI] Bk migration. Audit/filebeat: Bash changesets revision (#38605) * [CI] Bk migration. Bash changesets revision * Added required UI triggers * Added required UI triggers * Added required UI triggers * Added required UI triggers * Added required UI triggers * filebeat * Cleanup * Cleanup * Notification contexts --- .buildkite/auditbeat/auditbeat-pipeline.yml | 185 +++++------------ .buildkite/filebeat/filebeat-pipeline.yml | 188 +++++------------- .buildkite/hooks/pre-command | 32 ++- .buildkite/hooks/scripts/util.sh | 1 + .buildkite/scripts/common.sh | 47 ++++- .../scripts/generate_auditbeat_pipeline.sh | 187 +++++++++++++++++ .../scripts/generate_filebeat_pipeline.sh | 168 ++++++++++++++++ 7 files changed, 532 insertions(+), 276 deletions(-) create mode 100644 .buildkite/scripts/generate_auditbeat_pipeline.sh create mode 100644 .buildkite/scripts/generate_filebeat_pipeline.sh diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index be03d7843b2..df5504f2fc0 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -1,145 +1,68 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-auditbeat" env: - BEATS_PROJECT_NAME: "auditbeat" - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + BEATS_PROJECT_NAME: "auditbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" steps: - - group: "Auditbeat Mandatory Testing" - key: "mandatory-tests" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "auditbeat" || build.env("BUILDKITE_PULL_REQUEST") != "false" - - steps: - - label: ":ubuntu: Unit Tests" - command: - - ".buildkite/auditbeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Auditbeat: linux/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" - - - label: ":rhel: Unit Tests" - command: - - ".buildkite/auditbeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Auditbeat: rhel/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_RHEL9}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" - - - label: ":windows:-{{matrix.image}} Unit Tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - notify: - - github_commit_status: - context: "Auditbeat: windows/Unit Tests" - agents: - provider: "gcp" - image: "{{matrix.image}}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" - - - label: ":linux: Crosscompile" - command: - - ".buildkite/auditbeat/scripts/crosscompile.sh" - env: - GOX_FLAGS: "-arch amd64" - notify: - - github_commit_status: - context: "Auditbeat: Crosscompile" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - - - group: "Extended Testing" - key: "extended-tests" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" || build.env("GITHUB_PR_TRIGGER_COMMENT") == "auditbeat for extended support" - - steps: - - label: ":linux: ARM64 Unit Tests" - key: "arm-extended" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "auditbeat for arm" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ - command: - - ".buildkite/auditbeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Auditbeat/Extended: Unit Tests ARM" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "auditbeat/build/*.xml" - - - label: ":mac: MacOS Unit Tests" - key: "macos-extended" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "auditbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - command: - - ".buildkite/auditbeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Auditbeat/Extended: MacOS Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "auditbeat/build/*.xml" - - - group: "Windows Extended Testing" - key: "extended-tests-win" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "auditbeat for windows" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ - - steps: - - label: ":windows: Win 2019 Unit Tests" - key: "win-extended-2019" - command: ".buildkite/scripts/win_unit_tests.ps1" - notify: - - github_commit_status: - context: "Auditbeat/Extended: Win-2019 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" + - input: "Input Parameters" + key: "run_auditbeat" + fields: + - select: "auditbeat - run_auditbeat" + key: "run_auditbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "auditbeat - run_auditbeat_macos_tests" + key: "run_auditbeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "auditbeat - run_auditbeat_arm_tests" + key: "run_auditbeat_arm_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "auditbeat - run_auditbeat_win_tests" + key: "run_auditbeat_win_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + if: "build.source == 'ui'" - - group: "Packaging" - key: "packaging" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" - depends_on: - - "mandatory-tests" + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false - steps: - - label: Package pipeline - commands: ".buildkite/scripts/packaging/package-step.sh" + - label: ":linux: Load dynamic auditbeat pipeline" + key: "auditbeat-pipeline" + command: ".buildkite/scripts/generate_auditbeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index ae22629e6ec..e240e47af45 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -1,145 +1,67 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +name: "beats-filebeat" env: - BEATS_PROJECT_NAME: "filebeat" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + BEATS_PROJECT_NAME: "filebeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" steps: - - group: "Filebeat Mandatory Testing" - key: "mandatory-tests" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "filebeat" || build.env("BUILDKITE_PULL_REQUEST") != "false" - - steps: - - label: ":ubuntu: Unit Tests" - command: - - ".buildkite/filebeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Filebeat: linux/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":ubuntu: Go Integration Tests" - command: - - ".buildkite/filebeat/scripts/integration-gotests.sh" - notify: - - github_commit_status: - context: "Filebeat: Go Integration Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":ubuntu: Python Integration Tests" - command: - - ".buildkite/filebeat/scripts/integration-pytests.sh" - notify: - - github_commit_status: - context: "Filebeat: Python Integration Tests" - agents: - provider: gcp - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":windows:-{{matrix.image}} Unit Tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - notify: - - github_commit_status: - context: "Filebeat: windows/Unit Tests" - agents: - provider: "gcp" - image: "{{matrix.image}}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - group: "Extended Testing" - key: "extended-tests" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" || build.env("GITHUB_PR_TRIGGER_COMMENT") == "filebeat for extended support" - - steps: - - label: ":linux: ARM64 Unit Tests" - key: "arm-extended" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "filebeat for arm" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ - command: - - ".buildkite/filebeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Filebeat/Extended: Unit Tests ARM" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "filebeat/build/*.xml" - - - label: ":mac: MacOS Unit Tests" - key: "macos-extended" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "filebeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - command: - - ".buildkite/filebeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Filebeat/Extended: MacOS Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "filebeat/build/*.xml" - - - group: "Windows Extended Testing" - key: "extended-tests-win" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "filebeat for windows" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ - - steps: - - label: ":windows: Win 2019 Unit Tests" - key: "win-extended-2019" - command: ".buildkite/scripts/win_unit_tests.ps1" - notify: - - github_commit_status: - context: "Filebeat/Extended: Win-2019 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" + - input: "Input Parameters" + key: "run_filebeat" + fields: + - select: "filebeat - run_filebeat" + key: "run_filebeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "filebeat - run_filebeat_macos_tests" + key: "run_filebeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "filebeat - run_filebeat_arm_tests" + key: "run_filebeat_arm_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "filebeat - run_filebeat_win_tests" + key: "run_filebeat_win_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + if: "build.source == 'ui'" - - group: "Packaging" - key: "packaging" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" - depends_on: - - "mandatory-tests" + - wait: ~ + if: "build.source == 'ui'" + allow_dependency_failure: false - steps: - - label: Package pipeline - commands: ".buildkite/scripts/packaging/package-step.sh" + - label: ":linux: Load dynamic filebeat pipeline" + key: "filebeat-pipeline" + command: ".buildkite/scripts/generate_filebeat_pipeline.sh" + notify: + - github_commit_status: + context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 2c69f322ad8..e03ade43af1 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -62,13 +62,31 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-dockerlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then - if [[ "${BUILDKITE_COMMAND}" =~ ^buildkite-agent ]]; then - echo "Skipped pre-command when running the Upload pipeline" - exit 0 +ENABLED_BEATS_PIPELINES_SLUGS=( + "auditbeat" + "filebeat" + "beats-metricbeat" + "beats-libbeat" + "beats-packetbeat" + "beats-winlogbeat" + "beats-winlogbeat" + "beats-xpack-libbeat" + "beats-xpack-metricbeat" + "beats-xpack-packetbeat" + "beats-xpack-winlogbeat" + "beats-xpack-dockerlogbeat" + "beats-xpack-auditbeat" + "beats-xpack-filebeat" + "beats-xpack-heartbeat" + "beats-xpack-osquerybeat" + ) + +for slug in "${ENABLED_BEATS_PIPELINES_SLUGS[@]}"; do + if [[ "$BUILDKITE_PIPELINE_SLUG" == "$slug" ]]; then + source .buildkite/scripts/setenv.sh + break fi - source .buildkite/scripts/setenv.sh -fi +done if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "$BUILDKITE_STEP_KEY" == "extended-cloud-test" ]]; then @@ -79,8 +97,6 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPE fi fi - - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then if [[ "$BUILDKITE_STEP_KEY" == "extended-win-10-system-tests" || "$BUILDKITE_STEP_KEY" == "mandatory-win-2022-system-tests" ]]; then PRIVATE_CI_GCS_CREDENTIALS_SECRET=$(retry 5 vault kv get -field plaintext -format=json ${PRIVATE_CI_GCS_CREDENTIALS_PATH}) diff --git a/.buildkite/hooks/scripts/util.sh b/.buildkite/hooks/scripts/util.sh index 07ab6cf4c9a..29ffb389914 100755 --- a/.buildkite/hooks/scripts/util.sh +++ b/.buildkite/hooks/scripts/util.sh @@ -25,6 +25,7 @@ google_cloud_logout_active_account() { } cleanup() { + # TODO: disable for upload pipeline echo "Deleting temporary files..." if [[ -e "${BIN}/${TMP_FOLDER}" ]]; then rm -rf "${BIN}/${TMP_FOLDER}.*" diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 201fa8a42c7..3c968af2088 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -12,6 +12,8 @@ ONLY_DOCS=${ONLY_DOCS:-"true"} OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat +[ -z "${run_auditbeat+x}" ] && run_auditbeat="$(buildkite-agent meta-data get run_auditbeat --default "false")" +[ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_libbeat+x}" ] && run_libbeat="$(buildkite-agent meta-data get run_libbeat --default "false")" [ -z "${run_metricbeat+x}" ] && run_metricbeat="$(buildkite-agent meta-data get run_metricbeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" @@ -26,6 +28,8 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat +[ -z "${run_auditbeat_arm_tests+x}" ] && run_auditbeat_arm_tests="$(buildkite-agent meta-data get run_auditbeat_arm_tests --default "false")" +[ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" [ -z "${run_xpack_auditbeat_arm_tests+x}" ] && run_xpack_auditbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_arm_tests --default "false")" @@ -34,6 +38,8 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" # define if needed run MacOS platform-specific tests for the particular beat +[ -z "${run_auditbeat_tests+x}" ] && run_auditbeat_macos_tests="$(buildkite-agent meta-data get run_auditbeat_macos_tests --default "false")" +[ -z "${run_filebeat_tests+x}" ] && run_filebeat_macos_tests="$(buildkite-agent meta-data get run_filebeat_macos_tests --default "false")" [ -z "${run_metricbeat_macos_tests+x}" ] && run_metricbeat_macos_tests="$(buildkite-agent meta-data get run_metricbeat_macos_tests --default "false")" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_auditbeat_macos_tests+x}" ] && run_xpack_auditbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_macos_tests --default "false")" @@ -43,10 +49,22 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_heartbeat_macos_tests+x}" ] && run_xpack_heartbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_heartbeat_macos_tests --default "false")" [ -z "${run_xpack_osquerybeat_macos_tests+x}" ] && run_xpack_osquerybeat_macos_tests="$(buildkite-agent meta-data get run_xpack_osquerybeat_macos_tests --default "false")" +# define if needed run Windows platform-specific tests for the particular beat +[ -z "${run_auditbeat_win_tests+x}" ] && run_auditbeat_win_tests="$(buildkite-agent meta-data get run_auditbeat_win_tests --default "false")" +[ -z "${run_filebeat_win_tests+x}" ] && run_filebeat_win_tests="$(buildkite-agent meta-data get run_filebeat_win_tests --default "false")" + # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" [ -z "${run_xpack_filebeat_aws_tests+x}" ] && run_xpack_filebeat_aws_tests="$(buildkite-agent meta-data get run_xpack_filebeat_aws_tests --default "false")" +auditbeat_changeset=( + "^auditbeat/.*" + ) + +filebeat_changeset=( + "^filebeat/.*" + ) + metricbeat_changeset=( "^metricbeat/.*" ) @@ -131,6 +149,12 @@ packaging_changeset=( ) case "${BUILDKITE_PIPELINE_SLUG}" in + "auditbeat") + BEAT_CHANGESET_REFERENCE=${auditbeat_changeset[@]} + ;; + "filebeat") + BEAT_CHANGESET_REFERENCE=${filebeat_changeset[@]} + ;; "beats-metricbeat") BEAT_CHANGESET_REFERENCE=${metricbeat_changeset[@]} ;; @@ -185,6 +209,7 @@ check_and_set_beat_vars() { TRIGGER_SPECIFIC_ARM_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_arm_tests" TRIGGER_SPECIFIC_AWS_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_aws_tests" TRIGGER_SPECIFIC_MACOS_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_macos_tests" + TRIGGER_SPECIFIC_WIN_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_win_tests" echo "Beats project name is $BEATS_XPACK_PROJECT_NAME" mandatory_changeset=( "${BEAT_CHANGESET_REFERENCE[@]}" @@ -197,6 +222,7 @@ check_and_set_beat_vars() { TRIGGER_SPECIFIC_ARM_TESTS="run_${BEATS_PROJECT_NAME}_arm_tests" TRIGGER_SPECIFIC_AWS_TESTS="run_${BEATS_PROJECT_NAME}_aws_tests" TRIGGER_SPECIFIC_MACOS_TESTS="run_${BEATS_PROJECT_NAME}_macos_tests" + TRIGGER_SPECIFIC_WIN_TESTS="run_${BEATS_PROJECT_NAME}_win_tests" echo "Beats project name is $BEATS_PROJECT_NAME" mandatory_changeset=( "${BEAT_CHANGESET_REFERENCE[@]}" @@ -208,9 +234,11 @@ check_and_set_beat_vars() { BEATS_GH_MACOS_COMMENT="${BEATS_GH_COMMENT} for macos" BEATS_GH_ARM_COMMENT="${BEATS_GH_COMMENT} for arm" BEATS_GH_AWS_COMMENT="${BEATS_GH_COMMENT} for aws cloud" + BEATS_GH_WIN_COMMENT="${BEATS_GH_COMMENT} for windows" BEATS_GH_MACOS_LABEL="macOS" BEATS_GH_ARM_LABEL="arm" BEATS_GH_AWS_LABEL="aws" + BEATS_GH_WIN_LABEL="windows" } with_docker_compose() { @@ -417,7 +445,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -428,7 +456,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -437,6 +465,17 @@ are_conditions_met_macos_tests() { return 1 } +are_conditions_met_win_tests() { + if are_conditions_met_mandatory_tests; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" ]]; then + if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_WIN_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_WIN_LABEL} || "${!TRIGGER_SPECIFIC_WIN_TESTS}" == "true" ]]; then + return 0 + fi + fi + fi + return 1 +} + are_conditions_met_aws_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then @@ -449,8 +488,8 @@ are_conditions_met_aws_tests() { } are_conditions_met_packaging() { - if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "${BUILDKITE_TAG}" == "" || "${BUILDKITE_PULL_REQUEST}" != "" ]]; then + if are_conditions_met_mandatory_tests; then + if [[ "${BUILDKITE_TAG}" == "" || "${BUILDKITE_PULL_REQUEST}" != "false" ]]; then return 0 fi fi diff --git a/.buildkite/scripts/generate_auditbeat_pipeline.sh b/.buildkite/scripts/generate_auditbeat_pipeline.sh new file mode 100644 index 00000000000..0ff26cda5d3 --- /dev/null +++ b/.buildkite/scripts/generate_auditbeat_pipeline.sh @@ -0,0 +1,187 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.auditbeat-dynamic.yml" + +# TODO: steps: must be always included +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + - group: "Auditbeat Mandatory Testing" + key: "mandatory-tests" + + steps: + - label: ":ubuntu: Unit Tests" + command: + - ".buildkite/auditbeat/scripts/unit-tests.sh" + notify: + - github_commit_status: + context: "Auditbeat: linux/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":rhel: Unit Tests" + command: + - ".buildkite/auditbeat/scripts/unit-tests.sh" + notify: + - github_commit_status: + context: "Auditbeat: rhel/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_RHEL9}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":windows:-2016 Unit Tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + notify: + - github_commit_status: + context: "Auditbeat: windows 2016/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":windows:-2022 Unit Tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + notify: + - github_commit_status: + context: "Auditbeat: windows 2022/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":linux: Crosscompile" + command: + - ".buildkite/auditbeat/scripts/crosscompile.sh" + env: + GOX_FLAGS: "-arch amd64" + notify: + - github_commit_status: + context: "Auditbeat: Crosscompile" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +echo "Check and add the Extended Tests into the pipeline" + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + - group: "Extended Tests" + key: "extended-tests-arm" + steps: + - label: ":arm: ARM64 Unit Tests" + key: "extended-arm64-unit-tests" + command: ".buildkite/scripts/unit_tests.sh" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_ARM64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + notify: + - github_commit_status: + context: "Auditbeat: ARM Unit tests" +YAML +fi + +if are_conditions_met_win_tests; then + cat >> $pipelineName <<- YAML + - group: "Windows Extended Testing" + key: "extended-tests-win" + steps: + - label: ":windows: Windows 2019 Unit Tests" + key: "extended-win-2019-unit-tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + notify: + - github_commit_status: + context: "Auditbeat: Windows 2019 Unit Tests" + + - label: ":windows: Windows 10 Unit Tests" + key: "extended-win-10-unit-tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + notify: + - github_commit_status: + context: "Auditbeat: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + key: "extended-win-11-unit-tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + notify: + - github_commit_status: + context: "Auditbeat: Windows 11 Unit Tests" +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then +cat >> $pipelineName <<- YAML + - group: "Packaging" + key: "packaging" + depends_on: + - "mandatory-tests" + steps: + - label: Package pipeline + commands: ".buildkite/scripts/packaging/package-step.sh" + notify: + - github_commit_status: + context: "Auditbeat: Packaging" + + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_filebeat_pipeline.sh b/.buildkite/scripts/generate_filebeat_pipeline.sh new file mode 100644 index 00000000000..63108d5aacd --- /dev/null +++ b/.buildkite/scripts/generate_filebeat_pipeline.sh @@ -0,0 +1,168 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.filebeat-dynamic.yml" + +# TODO: steps: must be always included +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + + +steps: + - group: "Filebeat Mandatory Testing" + key: "mandatory-tests" + if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "filebeat" || build.env("BUILDKITE_PULL_REQUEST") != "false" + + steps: + - label: ":ubuntu: Unit Tests" + command: + - ".buildkite/filebeat/scripts/unit-tests.sh" + notify: + - github_commit_status: + context: "Filebeat: linux/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + + - label: ":ubuntu: Go Integration Tests" + command: + - ".buildkite/filebeat/scripts/integration-gotests.sh" + notify: + - github_commit_status: + context: "Filebeat: Go Integration Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + + - label: ":ubuntu: Python Integration Tests" + command: + - ".buildkite/filebeat/scripts/integration-pytests.sh" + notify: + - github_commit_status: + context: "Filebeat: Python Integration Tests" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + + - label: ":windows:-2016 Unit Tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + notify: + - github_commit_status: + context: "Filebeat: windows/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + + - label: ":windows:-2022 Unit Tests" + command: ".buildkite/scripts/win_unit_tests.ps1" + notify: + - github_commit_status: + context: "Filebeat: windows 2022/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +echo "Check and add the Extended Tests into the pipeline" + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + - group: "Extended Tests: ARM" + key: "extended-tests-arm" + steps: + - label: ":linux: ARM64 Unit Tests" + key: "arm-extended" + command: + - ".buildkite/filebeat/scripts/unit-tests.sh" + notify: + - github_commit_status: + context: "Filebeat/Extended: Unit Tests ARM" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: "filebeat/build/*.xml" + +YAML +fi + +if are_conditions_met_win_tests; then + cat >> $pipelineName <<- YAML + - group: "Windows Extended Testing" + key: "extended-tests-win" + steps: + - label: ":windows: Win 2019 Unit Tests" + key: "win-extended-2019" + command: ".buildkite/scripts/win_unit_tests.ps1" + notify: + - github_commit_status: + context: "Filebeat/Extended: Win-2019 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then +cat >> $pipelineName <<- YAML + - group: "Packaging" + key: "packaging" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - "mandatory-tests" + + steps: + - label: Package pipeline + commands: ".buildkite/scripts/packaging/package-step.sh" + notify: + - github_commit_status: + context: "Filebeat: Packaging" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName From cd89cc463d9c3d573f66dbfc2932e4343d577ee1 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Tue, 26 Mar 2024 14:41:09 -0400 Subject: [PATCH 074/313] auditbeat TestExeObjParser - fix errors.Is argument order (#38606) The arguments to errors.Is are in the wrong order so the check is not working as designed and test is never skipped. Also stop the test after exeObjParser.Parse fails. Relates: #38211 --- auditbeat/module/file_integrity/exeobjparser_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/auditbeat/module/file_integrity/exeobjparser_test.go b/auditbeat/module/file_integrity/exeobjparser_test.go index f8ca144e4ed..9952cd7825b 100644 --- a/auditbeat/module/file_integrity/exeobjparser_test.go +++ b/auditbeat/module/file_integrity/exeobjparser_test.go @@ -48,7 +48,7 @@ func TestExeObjParser(t *testing.T) { } if _, ci := os.LookupEnv("CI"); ci { - if _, err := os.Stat(target); err != nil && errors.Is(fs.ErrNotExist, err) { + if _, err := os.Stat(target); err != nil && errors.Is(err, fs.ErrNotExist) { t.Skip("skipping test because target binary was not found: see https://github.com/elastic/beats/issues/38211") } } @@ -56,7 +56,7 @@ func TestExeObjParser(t *testing.T) { got := make(mapstr.M) err := exeObjParser(nil).Parse(got, target) if err != nil { - t.Errorf("unexpected error calling exeObjParser.Parse: %v", err) + t.Fatalf("unexpected error calling exeObjParser.Parse: %v", err) } fields := []struct { From 989d36fceb5a509b93e7dc508ce87bdce4ed4310 Mon Sep 17 00:00:00 2001 From: Craig MacKenzie Date: Tue, 26 Mar 2024 17:07:36 -0400 Subject: [PATCH 075/313] Remove references to min_events in bulk_max_size docs. (#38634) * Remove references to min_events in bulk_max_size docs. As of https://github.com/elastic/beats/pull/37795/files in 8.13.0 queue.flush.min_events is no longer relevant. * Fix whitespace Co-authored-by: Pierre HILBERT --------- Co-authored-by: Pierre HILBERT --- libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc | 6 ++---- libbeat/outputs/logstash/docs/logstash.asciidoc | 6 ++---- libbeat/outputs/redis/docs/redis.asciidoc | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc b/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc index 3b010b7ed36..0f7d7364985 100644 --- a/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc +++ b/libbeat/outputs/elasticsearch/docs/elasticsearch.asciidoc @@ -666,10 +666,8 @@ endif::[] The maximum number of events to bulk in a single Elasticsearch bulk API index request. The default is 1600. -Events can be collected into batches. When using the memory queue with `queue.mem.flush.min_events` -set to a value greater than `1`, the maximum batch is is the value of `queue.mem.flush.min_events`. -{beatname_uc} will split batches read from the queue which are larger than `bulk_max_size` into -multiple batches. +Events can be collected into batches. {beatname_uc} will split batches read from the queue which are +larger than `bulk_max_size` into multiple batches. Specifying a larger batch size can improve performance by lowering the overhead of sending events. However big batch sizes can also increase processing times, which might result in diff --git a/libbeat/outputs/logstash/docs/logstash.asciidoc b/libbeat/outputs/logstash/docs/logstash.asciidoc index 5fa2fc5a028..d5e2e2741a6 100644 --- a/libbeat/outputs/logstash/docs/logstash.asciidoc +++ b/libbeat/outputs/logstash/docs/logstash.asciidoc @@ -381,10 +381,8 @@ endif::[] The maximum number of events to bulk in a single {ls} request. The default is 2048. -Events can be collected into batches. When using the memory queue with `queue.mem.flush.min_events` -set to a value greater than `1`, the maximum batch is is the value of `queue.mem.flush.min_events`. -{beatname_uc} will split batches read from the queue which are larger than `bulk_max_size` into -multiple batches. +Events can be collected into batches. {beatname_uc} will split batches read from the queue which are +larger than `bulk_max_size` into multiple batches. Specifying a larger batch size can improve performance by lowering the overhead of sending events. However big batch sizes can also increase processing times, which might result in diff --git a/libbeat/outputs/redis/docs/redis.asciidoc b/libbeat/outputs/redis/docs/redis.asciidoc index 0b758e524cb..366d3cb832a 100644 --- a/libbeat/outputs/redis/docs/redis.asciidoc +++ b/libbeat/outputs/redis/docs/redis.asciidoc @@ -216,10 +216,8 @@ endif::[] The maximum number of events to bulk in a single Redis request or pipeline. The default is 2048. -Events can be collected into batches. When using the memory queue with `queue.mem.flush.min_events` -set to a value greater than `1`, the maximum batch is is the value of `queue.mem.flush.min_events`. -{beatname_uc} will split batches read from the queue which are larger than `bulk_max_size` into -multiple batches. +Events can be collected into batches. {beatname_uc} will split batches read from the queue which are +larger than `bulk_max_size` into multiple batches. Specifying a larger batch size can improve performance by lowering the overhead of sending events. However big batch sizes can also increase processing times, From 2913ab9e4e6c64f24463428238acac48ba9de67e Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Wed, 27 Mar 2024 08:32:12 +0100 Subject: [PATCH 076/313] [Release] Update docs for the 8.14.0 release (#38023) * docs: update docs * make check-ci --------- Co-authored-by: Pierre HILBERT --- deploy/kubernetes/auditbeat-kubernetes.yaml | 2 +- deploy/kubernetes/filebeat-kubernetes.yaml | 2 +- deploy/kubernetes/heartbeat-kubernetes.yaml | 2 +- deploy/kubernetes/metricbeat-kubernetes.yaml | 2 +- libbeat/docs/version.asciidoc | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy/kubernetes/auditbeat-kubernetes.yaml b/deploy/kubernetes/auditbeat-kubernetes.yaml index 79042c11390..eb668c11254 100644 --- a/deploy/kubernetes/auditbeat-kubernetes.yaml +++ b/deploy/kubernetes/auditbeat-kubernetes.yaml @@ -209,7 +209,7 @@ spec: dnsPolicy: ClusterFirstWithHostNet containers: - name: auditbeat - image: docker.elastic.co/beats/auditbeat:8.13.0 + image: docker.elastic.co/beats/auditbeat:8.14.0 args: [ "-c", "/etc/auditbeat.yml", "-e", diff --git a/deploy/kubernetes/filebeat-kubernetes.yaml b/deploy/kubernetes/filebeat-kubernetes.yaml index 554f89ec399..40855fcc9e2 100644 --- a/deploy/kubernetes/filebeat-kubernetes.yaml +++ b/deploy/kubernetes/filebeat-kubernetes.yaml @@ -183,7 +183,7 @@ spec: dnsPolicy: ClusterFirstWithHostNet containers: - name: filebeat - image: docker.elastic.co/beats/filebeat:8.13.0 + image: docker.elastic.co/beats/filebeat:8.14.0 args: [ "-c", "/etc/filebeat.yml", "-e", diff --git a/deploy/kubernetes/heartbeat-kubernetes.yaml b/deploy/kubernetes/heartbeat-kubernetes.yaml index f3294fe1c37..cec015a62fc 100644 --- a/deploy/kubernetes/heartbeat-kubernetes.yaml +++ b/deploy/kubernetes/heartbeat-kubernetes.yaml @@ -171,7 +171,7 @@ spec: dnsPolicy: ClusterFirstWithHostNet containers: - name: heartbeat - image: docker.elastic.co/beats/heartbeat:8.13.0 + image: docker.elastic.co/beats/heartbeat:8.14.0 args: [ "-c", "/etc/heartbeat.yml", "-e", diff --git a/deploy/kubernetes/metricbeat-kubernetes.yaml b/deploy/kubernetes/metricbeat-kubernetes.yaml index 040a493d4f4..9b9822323e6 100644 --- a/deploy/kubernetes/metricbeat-kubernetes.yaml +++ b/deploy/kubernetes/metricbeat-kubernetes.yaml @@ -291,7 +291,7 @@ spec: dnsPolicy: ClusterFirstWithHostNet containers: - name: metricbeat - image: docker.elastic.co/beats/metricbeat:8.13.0 + image: docker.elastic.co/beats/metricbeat:8.14.0 args: [ "-c", "/etc/metricbeat.yml", "-e", diff --git a/libbeat/docs/version.asciidoc b/libbeat/docs/version.asciidoc index 5cb4f7422b5..4f776705700 100644 --- a/libbeat/docs/version.asciidoc +++ b/libbeat/docs/version.asciidoc @@ -1,4 +1,4 @@ -:stack-version: 8.13.0 +:stack-version: 8.14.0 :doc-branch: main :go-version: 1.21.8 :release-state: unreleased From f502623a2fc3ca65fcb146fb0827d0242a1a0a15 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Wed, 27 Mar 2024 09:54:43 +0100 Subject: [PATCH 077/313] security: add permissions block to workflows (#38047) --- .github/workflows/check-auditbeat.yml | 3 +++ .github/workflows/check-dev-tools.yml | 3 +++ .github/workflows/check-filebeat.yml | 3 +++ .github/workflows/check-heartbeat.yml | 3 +++ .github/workflows/check-libbeat.yml | 3 +++ .github/workflows/check-metricbeat.yml | 3 +++ .github/workflows/check-packetbeat.yml | 3 +++ .github/workflows/check-winlogbeat.yml | 3 +++ .github/workflows/check-xpack-auditbeat.yml | 3 +++ .github/workflows/check-xpack-dockerlogbeat.yml | 3 +++ .github/workflows/check-xpack-filebeat.yml | 3 +++ .github/workflows/check-xpack-functionbeat.yml | 3 +++ .github/workflows/check-xpack-heartbeat.yml | 3 +++ .github/workflows/check-xpack-libbeat.yml | 3 +++ .github/workflows/check-xpack-metricbeat.yml | 3 +++ .github/workflows/check-xpack-osquerybeat.yml | 3 +++ .github/workflows/check-xpack-packetbeat.yml | 3 +++ .github/workflows/check-xpack-winlogbeat.yml | 3 +++ .github/workflows/macos-auditbeat.yml | 3 +++ .github/workflows/macos-filebeat.yml | 3 +++ .github/workflows/macos-heartbeat.yml | 3 +++ .github/workflows/macos-metricbeat.yml | 3 +++ .github/workflows/macos-packetbeat.yml | 3 +++ .github/workflows/macos-xpack-auditbeat.yml | 3 +++ .github/workflows/macos-xpack-filebeat.yml | 3 +++ .github/workflows/macos-xpack-functionbeat.yml | 3 +++ .github/workflows/macos-xpack-heartbeat.yml | 3 +++ .github/workflows/macos-xpack-metricbeat.yml | 3 +++ .github/workflows/macos-xpack-osquerybeat.yml | 3 +++ .github/workflows/macos-xpack-packetbeat.yml | 3 +++ .github/workflows/platform-ingest-project-board.yml | 3 +++ .github/workflows/post-dependabot.yml | 3 +++ 32 files changed, 96 insertions(+) diff --git a/.github/workflows/check-auditbeat.yml b/.github/workflows/check-auditbeat.yml index 3941fcdd492..bbc96242687 100644 --- a/.github/workflows/check-auditbeat.yml +++ b/.github/workflows/check-auditbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'auditbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-dev-tools.yml b/.github/workflows/check-dev-tools.yml index 4f0ba423466..6fa58fc319d 100644 --- a/.github/workflows/check-dev-tools.yml +++ b/.github/workflows/check-dev-tools.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'dev-tools' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-filebeat.yml b/.github/workflows/check-filebeat.yml index 0c08232e8af..930a04ec5e5 100644 --- a/.github/workflows/check-filebeat.yml +++ b/.github/workflows/check-filebeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'filebeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-heartbeat.yml b/.github/workflows/check-heartbeat.yml index c975398fc2b..ac7ad5725f5 100644 --- a/.github/workflows/check-heartbeat.yml +++ b/.github/workflows/check-heartbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'heartbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-libbeat.yml b/.github/workflows/check-libbeat.yml index 38b04932a86..27e03701b85 100644 --- a/.github/workflows/check-libbeat.yml +++ b/.github/workflows/check-libbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'libbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-metricbeat.yml b/.github/workflows/check-metricbeat.yml index 452f0dbedc1..709fa3a44bd 100644 --- a/.github/workflows/check-metricbeat.yml +++ b/.github/workflows/check-metricbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'metricbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-packetbeat.yml b/.github/workflows/check-packetbeat.yml index b084e4d962e..ba05b6c0160 100644 --- a/.github/workflows/check-packetbeat.yml +++ b/.github/workflows/check-packetbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'packetbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-winlogbeat.yml b/.github/workflows/check-winlogbeat.yml index e048d585fa8..a79c4bef209 100644 --- a/.github/workflows/check-winlogbeat.yml +++ b/.github/workflows/check-winlogbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'winlogbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-auditbeat.yml b/.github/workflows/check-xpack-auditbeat.yml index d0bf638796b..a4e6ae81563 100644 --- a/.github/workflows/check-xpack-auditbeat.yml +++ b/.github/workflows/check-xpack-auditbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/auditbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-dockerlogbeat.yml b/.github/workflows/check-xpack-dockerlogbeat.yml index 44760e6c5e6..258e5c6c3fa 100644 --- a/.github/workflows/check-xpack-dockerlogbeat.yml +++ b/.github/workflows/check-xpack-dockerlogbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/dockerlogbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-filebeat.yml b/.github/workflows/check-xpack-filebeat.yml index 73b5b21d323..0547fafb7e6 100644 --- a/.github/workflows/check-xpack-filebeat.yml +++ b/.github/workflows/check-xpack-filebeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/filebeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-functionbeat.yml b/.github/workflows/check-xpack-functionbeat.yml index 089828088d6..8ae83acd36f 100644 --- a/.github/workflows/check-xpack-functionbeat.yml +++ b/.github/workflows/check-xpack-functionbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/functionbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-heartbeat.yml b/.github/workflows/check-xpack-heartbeat.yml index c9b77cbebb3..3d6be31ef8b 100644 --- a/.github/workflows/check-xpack-heartbeat.yml +++ b/.github/workflows/check-xpack-heartbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/heartbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-libbeat.yml b/.github/workflows/check-xpack-libbeat.yml index 11359887ef0..28da0b1eb35 100644 --- a/.github/workflows/check-xpack-libbeat.yml +++ b/.github/workflows/check-xpack-libbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/libbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-metricbeat.yml b/.github/workflows/check-xpack-metricbeat.yml index f61967a5eec..8f107794bce 100644 --- a/.github/workflows/check-xpack-metricbeat.yml +++ b/.github/workflows/check-xpack-metricbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/metricbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-osquerybeat.yml b/.github/workflows/check-xpack-osquerybeat.yml index e5c87bcf5bd..73ba20e5a8c 100644 --- a/.github/workflows/check-xpack-osquerybeat.yml +++ b/.github/workflows/check-xpack-osquerybeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/osquerybeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-packetbeat.yml b/.github/workflows/check-xpack-packetbeat.yml index 3840d5598aa..e03d46d55e2 100644 --- a/.github/workflows/check-xpack-packetbeat.yml +++ b/.github/workflows/check-xpack-packetbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/packetbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/check-xpack-winlogbeat.yml b/.github/workflows/check-xpack-winlogbeat.yml index 8656675c3a1..2f3571c7d74 100644 --- a/.github/workflows/check-xpack-winlogbeat.yml +++ b/.github/workflows/check-xpack-winlogbeat.yml @@ -10,6 +10,9 @@ on: env: BEAT_MODULE: 'x-pack/winlogbeat' +permissions: + contents: read + jobs: check: runs-on: ubuntu-latest diff --git a/.github/workflows/macos-auditbeat.yml b/.github/workflows/macos-auditbeat.yml index 994ca6dbebc..39c97c8b719 100644 --- a/.github/workflows/macos-auditbeat.yml +++ b/.github/workflows/macos-auditbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'auditbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-filebeat.yml b/.github/workflows/macos-filebeat.yml index 6b43f5bb6c6..513b87be316 100644 --- a/.github/workflows/macos-filebeat.yml +++ b/.github/workflows/macos-filebeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'filebeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-heartbeat.yml b/.github/workflows/macos-heartbeat.yml index c8e346a4402..b707e9c7d42 100644 --- a/.github/workflows/macos-heartbeat.yml +++ b/.github/workflows/macos-heartbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'heartbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-metricbeat.yml b/.github/workflows/macos-metricbeat.yml index 59a225e1601..0f37cfb937b 100644 --- a/.github/workflows/macos-metricbeat.yml +++ b/.github/workflows/macos-metricbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'metricbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-packetbeat.yml b/.github/workflows/macos-packetbeat.yml index be5dc7377e6..bebbc5eed90 100644 --- a/.github/workflows/macos-packetbeat.yml +++ b/.github/workflows/macos-packetbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'packetbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-xpack-auditbeat.yml b/.github/workflows/macos-xpack-auditbeat.yml index 3adcb46f6da..e0484908a9e 100644 --- a/.github/workflows/macos-xpack-auditbeat.yml +++ b/.github/workflows/macos-xpack-auditbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'x-pack/auditbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-xpack-filebeat.yml b/.github/workflows/macos-xpack-filebeat.yml index 936c0913fa4..93950c24b57 100644 --- a/.github/workflows/macos-xpack-filebeat.yml +++ b/.github/workflows/macos-xpack-filebeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'x-pack/filebeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-xpack-functionbeat.yml b/.github/workflows/macos-xpack-functionbeat.yml index 26a3e311c92..430d8834bb4 100644 --- a/.github/workflows/macos-xpack-functionbeat.yml +++ b/.github/workflows/macos-xpack-functionbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'x-pack/functionbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-xpack-heartbeat.yml b/.github/workflows/macos-xpack-heartbeat.yml index 8a0c6c1897d..9c4995ce20d 100644 --- a/.github/workflows/macos-xpack-heartbeat.yml +++ b/.github/workflows/macos-xpack-heartbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'x-pack/heartbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-xpack-metricbeat.yml b/.github/workflows/macos-xpack-metricbeat.yml index 38f40b051bc..2d2531cd286 100644 --- a/.github/workflows/macos-xpack-metricbeat.yml +++ b/.github/workflows/macos-xpack-metricbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'x-pack/metricbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-xpack-osquerybeat.yml b/.github/workflows/macos-xpack-osquerybeat.yml index 1b3be3e3148..7678df4b2f2 100644 --- a/.github/workflows/macos-xpack-osquerybeat.yml +++ b/.github/workflows/macos-xpack-osquerybeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'x-pack/osquerybeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/macos-xpack-packetbeat.yml b/.github/workflows/macos-xpack-packetbeat.yml index 90d9f77e269..8167486eb0c 100644 --- a/.github/workflows/macos-xpack-packetbeat.yml +++ b/.github/workflows/macos-xpack-packetbeat.yml @@ -13,6 +13,9 @@ on: env: BEAT_MODULE: 'x-pack/packetbeat' +permissions: + contents: read + jobs: macos: runs-on: macos-latest diff --git a/.github/workflows/platform-ingest-project-board.yml b/.github/workflows/platform-ingest-project-board.yml index 9dd97b6747c..10a738c750c 100644 --- a/.github/workflows/platform-ingest-project-board.yml +++ b/.github/workflows/platform-ingest-project-board.yml @@ -16,6 +16,9 @@ env: AREA_FIELD_ID: 'PVTSSF_lADOAGc3Zs4AEzn4zgEgZSo' ELASTIC_AGENT_OPTION_ID: 'c1e1a30a' +permissions: + contents: read + jobs: add_to_ingest_project: runs-on: ubuntu-latest diff --git a/.github/workflows/post-dependabot.yml b/.github/workflows/post-dependabot.yml index 069f0d777e1..59d84b9bec3 100644 --- a/.github/workflows/post-dependabot.yml +++ b/.github/workflows/post-dependabot.yml @@ -9,6 +9,9 @@ on: branches: - 'dependabot/go_modules/**' +permissions: + contents: read + jobs: update-notice: permissions: From 23ec4e9a4368ccd5d075d7a263ab23dfc4d73b94 Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Wed, 27 Mar 2024 11:59:02 +0100 Subject: [PATCH 078/313] Skip failing/flaky nginx stubstatus integration tests (#38648) The integration test is failing and blocking CI, hence we're skipping it for now. More details on https://github.com/elastic/beats/issues/38569. Co-authored-by: subham sarkar --- .../module/nginx/stubstatus/stubstatus_integration_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/metricbeat/module/nginx/stubstatus/stubstatus_integration_test.go b/metricbeat/module/nginx/stubstatus/stubstatus_integration_test.go index 8ed94f8dcef..b144782a525 100644 --- a/metricbeat/module/nginx/stubstatus/stubstatus_integration_test.go +++ b/metricbeat/module/nginx/stubstatus/stubstatus_integration_test.go @@ -29,6 +29,7 @@ import ( ) func TestFetch(t *testing.T) { + t.Skip("Skipping due to flakiness, see 'https://github.com/elastic/beats/issues/38569'") service := compose.EnsureUp(t, "nginx") f := mbtest.NewReportingMetricSetV2Error(t, getConfig(service.Host())) @@ -46,6 +47,7 @@ func TestFetch(t *testing.T) { } func TestData(t *testing.T) { + t.Skip("Skipping due to flakiness, see 'https://github.com/elastic/beats/issues/38569'") service := compose.EnsureUp(t, "nginx") f := mbtest.NewReportingMetricSetV2Error(t, getConfig(service.Host())) From 4305f30214f97b37a3c98a45cc68a994df5bf81b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Alvarez=20Pi=C3=B1eiro?= <95703246+emilioalvap@users.noreply.github.com> Date: Wed, 27 Mar 2024 16:25:59 +0100 Subject: [PATCH 079/313] [Heartbeat] Fix reference yaml format (#38584) Fix heartbeat.reference.yml incorrect formatting. --- CHANGELOG.next.asciidoc | 1 + heartbeat/_meta/config/beat.reference.yml.tmpl | 2 +- heartbeat/heartbeat.reference.yml | 2 +- x-pack/heartbeat/heartbeat.reference.yml | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 988dca7934d..0d2feda7388 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -100,6 +100,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix setuid root when running under cgroups v2. {pull}37794[37794] - Adjust State loader to only retry when response code status is 5xx {pull}37981[37981] - Reset prctl dumpable flag after cap drop. {pull}38269[38269] +- Fix reference yaml format. {pull}38584[38584] *Metricbeat* diff --git a/heartbeat/_meta/config/beat.reference.yml.tmpl b/heartbeat/_meta/config/beat.reference.yml.tmpl index ec75513e3f0..1385201f252 100644 --- a/heartbeat/_meta/config/beat.reference.yml.tmpl +++ b/heartbeat/_meta/config/beat.reference.yml.tmpl @@ -226,7 +226,7 @@ heartbeat.monitors: # Parses the body as JSON, then checks against the given expression #json: #- description: Explanation of what the check does -- # expression: 'myField == "expectedValue"' + # expression: 'myField == "expectedValue"' # (Deprecated: see 'expression' above) Parses the body as JSON, then checks against the given condition expression #json: diff --git a/heartbeat/heartbeat.reference.yml b/heartbeat/heartbeat.reference.yml index 04df2d4dbcd..7407d213748 100644 --- a/heartbeat/heartbeat.reference.yml +++ b/heartbeat/heartbeat.reference.yml @@ -226,7 +226,7 @@ heartbeat.monitors: # Parses the body as JSON, then checks against the given expression #json: #- description: Explanation of what the check does -- # expression: 'myField == "expectedValue"' + # expression: 'myField == "expectedValue"' # (Deprecated: see 'expression' above) Parses the body as JSON, then checks against the given condition expression #json: diff --git a/x-pack/heartbeat/heartbeat.reference.yml b/x-pack/heartbeat/heartbeat.reference.yml index 04df2d4dbcd..7407d213748 100644 --- a/x-pack/heartbeat/heartbeat.reference.yml +++ b/x-pack/heartbeat/heartbeat.reference.yml @@ -226,7 +226,7 @@ heartbeat.monitors: # Parses the body as JSON, then checks against the given expression #json: #- description: Explanation of what the check does -- # expression: 'myField == "expectedValue"' + # expression: 'myField == "expectedValue"' # (Deprecated: see 'expression' above) Parses the body as JSON, then checks against the given condition expression #json: From 7648a2afc1f5708aa0e08b6f29764d2e4ca92929 Mon Sep 17 00:00:00 2001 From: Craig MacKenzie Date: Thu, 28 Mar 2024 09:31:49 -0400 Subject: [PATCH 080/313] Clarify that the keystore obfuscates secrets only. (#38667) --- libbeat/docs/keystore.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libbeat/docs/keystore.asciidoc b/libbeat/docs/keystore.asciidoc index 45eb297ac9c..24494939764 100644 --- a/libbeat/docs/keystore.asciidoc +++ b/libbeat/docs/keystore.asciidoc @@ -18,7 +18,7 @@ When you configure {beatname_uc}, you might need to specify sensitive settings, such as passwords. Rather than relying on file system permissions to protect -these values, you can use the {beatname_uc} keystore to securely store secret +these values, you can use the {beatname_uc} keystore to obfuscate stored secret values for use in configuration settings. After adding a key and its secret value to the keystore, you can use the key in From dafec8dfdad94f38a4e72929ba47c186e2b3c636 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Fri, 29 Mar 2024 11:31:21 +1030 Subject: [PATCH 081/313] x-pack/filebeat/input/{cel,httpjson,http_endpoint,internal/httplog}: add debugging bread crumbs (#38636) When debugging issues in cel and httpjson the request trace log facility can be very useful, but the separated nature of the log can add friction since the only tie between the agent logs and the request trace logs is the time stamp. This adds an additional log message to the agent logs at DEBUG that marks the creation of a request transaction, noting the transaction ID into the agent logs. A similar addition is made to http_endpoint. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/cel/input.go | 2 +- .../filebeat/input/http_endpoint/handler.go | 25 +++++++++++++++---- x-pack/filebeat/input/http_endpoint/input.go | 15 ++++++++++- x-pack/filebeat/input/httpjson/input.go | 2 +- .../input/internal/httplog/roundtripper.go | 17 ++++++++----- 6 files changed, 48 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 0d2feda7388..21edb3c2e94 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -185,6 +185,7 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d - Parse more fields from Elasticsearch slowlogs {pull}38295[38295] - Update CEL mito extensions to v1.10.0 to add keys/values helper. {pull}38504[38504] - Add support for Active Directory an entity analytics provider. {pull}37919[37919] +- Add debugging breadcrumb to logs when writing request trace log. {pull}38636[38636] *Auditbeat* diff --git a/x-pack/filebeat/input/cel/input.go b/x-pack/filebeat/input/cel/input.go index edd7c053018..3428a730ce3 100644 --- a/x-pack/filebeat/input/cel/input.go +++ b/x-pack/filebeat/input/cel/input.go @@ -725,7 +725,7 @@ func newClient(ctx context.Context, cfg config, log *logp.Logger) (*http.Client, const margin = 1e3 // 1OkB ought to be enough room for all the remainder of the trace details. maxSize := cfg.Resource.Tracer.MaxSize * 1e6 - trace = httplog.NewLoggingRoundTripper(c.Transport, traceLogger, max(0, maxSize-margin)) + trace = httplog.NewLoggingRoundTripper(c.Transport, traceLogger, max(0, maxSize-margin), log) c.Transport = trace } diff --git a/x-pack/filebeat/input/http_endpoint/handler.go b/x-pack/filebeat/input/http_endpoint/handler.go index 3d0948489ac..d21ac145174 100644 --- a/x-pack/filebeat/input/http_endpoint/handler.go +++ b/x-pack/filebeat/input/http_endpoint/handler.go @@ -13,12 +13,14 @@ import ( "net" "net/http" "reflect" + "strconv" "time" "github.com/google/cel-go/cel" "github.com/google/cel-go/checker/decls" "github.com/google/cel-go/common/types" "github.com/google/cel-go/common/types/ref" + "go.uber.org/atomic" "go.uber.org/zap" "go.uber.org/zap/zapcore" "google.golang.org/protobuf/types/known/structpb" @@ -42,10 +44,12 @@ var ( ) type handler struct { - metrics *inputMetrics - publisher stateless.Publisher - log *logp.Logger - validator apiValidator + metrics *inputMetrics + publisher stateless.Publisher + log *logp.Logger + validator apiValidator + txBaseID string // Random value to make transaction IDs unique. + txIDCounter *atomic.Uint64 // Transaction ID counter that is incremented for each request. reqLogger *zap.Logger host, scheme string @@ -185,9 +189,11 @@ func (h *handler) logRequest(r *http.Request, status int, respBody []byte) { zap.ByteString("http.response.body.content", respBody), ) } + txID := h.nextTxID() + h.log.Debugw("new request trace transaction", "id", txID) // Limit request logging body size to 10kiB. const maxBodyLen = 10 * (1 << 10) - httplog.LogRequest(h.reqLogger, r, maxBodyLen, extra...) + httplog.LogRequest(h.reqLogger.With(zap.String("transaction.id", txID)), r, maxBodyLen, extra...) if scheme != "" { r.URL.Scheme = scheme } @@ -196,6 +202,15 @@ func (h *handler) logRequest(r *http.Request, status int, respBody []byte) { } } +func (h *handler) nextTxID() string { + count := h.txIDCounter.Inc() + return h.formatTxID(count) +} + +func (h *handler) formatTxID(count uint64) string { + return h.txBaseID + "-" + strconv.FormatUint(count, 10) +} + func (h *handler) sendResponse(w http.ResponseWriter, status int, message string) { w.Header().Add("Content-Type", "application/json") w.WriteHeader(status) diff --git a/x-pack/filebeat/input/http_endpoint/input.go b/x-pack/filebeat/input/http_endpoint/input.go index 7d5055ebe65..6bb79ea72be 100644 --- a/x-pack/filebeat/input/http_endpoint/input.go +++ b/x-pack/filebeat/input/http_endpoint/input.go @@ -7,6 +7,8 @@ package http_endpoint import ( "context" "crypto/tls" + "encoding/base32" + "encoding/binary" "errors" "fmt" "net" @@ -18,6 +20,7 @@ import ( "github.com/rcrowley/go-metrics" "go.elastic.co/ecszap" + "go.uber.org/atomic" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -297,7 +300,10 @@ func (s *server) getErr() error { func newHandler(ctx context.Context, c config, prg *program, pub stateless.Publisher, log *logp.Logger, metrics *inputMetrics) http.Handler { h := &handler{ - log: log, + log: log, + txBaseID: newID(), + txIDCounter: atomic.NewUint64(0), + publisher: pub, metrics: metrics, validator: apiValidator{ @@ -344,6 +350,13 @@ func newHandler(ctx context.Context, c config, prg *program, pub stateless.Publi return h } +// newID returns an ID derived from the current time. +func newID() string { + var data [8]byte + binary.LittleEndian.PutUint64(data[:], uint64(time.Now().UnixNano())) + return base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(data[:]) +} + // inputMetrics handles the input's metric reporting. type inputMetrics struct { unregister func() diff --git a/x-pack/filebeat/input/httpjson/input.go b/x-pack/filebeat/input/httpjson/input.go index 6757883a8a1..0def1cbd8b6 100644 --- a/x-pack/filebeat/input/httpjson/input.go +++ b/x-pack/filebeat/input/httpjson/input.go @@ -264,7 +264,7 @@ func newNetHTTPClient(ctx context.Context, cfg *requestConfig, log *logp.Logger, if maxSize < 0 { maxSize = 0 } - netHTTPClient.Transport = httplog.NewLoggingRoundTripper(netHTTPClient.Transport, traceLogger, maxSize) + netHTTPClient.Transport = httplog.NewLoggingRoundTripper(netHTTPClient.Transport, traceLogger, maxSize, log) } if reg != nil { diff --git a/x-pack/filebeat/input/internal/httplog/roundtripper.go b/x-pack/filebeat/input/internal/httplog/roundtripper.go index eac54d7378f..e8d5f8765ca 100644 --- a/x-pack/filebeat/input/internal/httplog/roundtripper.go +++ b/x-pack/filebeat/input/internal/httplog/roundtripper.go @@ -17,6 +17,7 @@ import ( "strconv" "time" + "github.com/elastic/elastic-agent-libs/logp" "go.uber.org/atomic" "go.uber.org/zap" "go.uber.org/zap/zapcore" @@ -31,14 +32,15 @@ const TraceIDKey = contextKey("trace.id") type contextKey string // NewLoggingRoundTripper returns a LoggingRoundTripper that logs requests and -// responses to the provided logger. -func NewLoggingRoundTripper(next http.RoundTripper, logger *zap.Logger, maxBodyLen int) *LoggingRoundTripper { +// responses to the provided logger. Transaction creation is logged to log. +func NewLoggingRoundTripper(next http.RoundTripper, logger *zap.Logger, maxBodyLen int, log *logp.Logger) *LoggingRoundTripper { return &LoggingRoundTripper{ transport: next, maxBodyLen: maxBodyLen, - logger: logger, + txLog: logger, txBaseID: newID(), txIDCounter: atomic.NewUint64(0), + log: log, } } @@ -46,9 +48,10 @@ func NewLoggingRoundTripper(next http.RoundTripper, logger *zap.Logger, maxBodyL type LoggingRoundTripper struct { transport http.RoundTripper maxBodyLen int // The maximum length of a body. Longer bodies will be truncated. - logger *zap.Logger // Destination logger. + txLog *zap.Logger // Destination logger. txBaseID string // Random value to make transaction IDs unique. txIDCounter *atomic.Uint64 // Transaction ID counter that is incremented for each request. + log *logp.Logger } // RoundTrip implements the http.RoundTripper interface, logging @@ -80,8 +83,10 @@ type LoggingRoundTripper struct { // event.original (the response without body from httputil.DumpResponse) func (rt *LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { // Create a child logger for this request. - log := rt.logger.With( - zap.String("transaction.id", rt.nextTxID()), + txID := rt.nextTxID() + rt.log.Debugw("new request trace transaction", "id", txID) + log := rt.txLog.With( + zap.String("transaction.id", txID), ) if v := req.Context().Value(TraceIDKey); v != nil { From f871b5c5f76b45c5724599d49bd0b0909959783d Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Fri, 29 Mar 2024 11:31:45 +1030 Subject: [PATCH 082/313] x-pack/filebeat/input/entityanalytics{,/provider/activedirectory}: register and fix published entity (#38645) This adds a missing registration import and publishes the complete entry, not just the user component. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/entityanalytics/input.go | 1 + .../entityanalytics/provider/activedirectory/activedirectory.go | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 21edb3c2e94..6421eeb8e26 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -93,6 +93,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix PEM key validation for CEL and HTTPJSON inputs. {pull}38405[38405] - Fix filebeat gcs input panic {pull}38407[38407] - Rename `activity_guid` to `activity_id` in ETW input events to suit other Windows inputs. {pull}38530[38530] +- Add missing provider registration and fix published entity for Active Directory entityanalytics provider. {pull}38645[38645] *Heartbeat* diff --git a/x-pack/filebeat/input/entityanalytics/input.go b/x-pack/filebeat/input/entityanalytics/input.go index 25238fd305c..64b3ae46d33 100644 --- a/x-pack/filebeat/input/entityanalytics/input.go +++ b/x-pack/filebeat/input/entityanalytics/input.go @@ -15,6 +15,7 @@ import ( "github.com/elastic/go-concert/unison" // For provider registration. + _ "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/provider/activedirectory" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/provider/azuread" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics/provider/okta" ) diff --git a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go index fa8bc7325fa..fed77b48d67 100644 --- a/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go +++ b/x-pack/filebeat/input/entityanalytics/provider/activedirectory/activedirectory.go @@ -383,7 +383,7 @@ func (p *adInput) publishMarker(ts, eventTime time.Time, inputID string, start b func (p *adInput) publishUser(u *User, state *stateStore, inputID string, client beat.Client, tracker *kvstore.TxTracker) { userDoc := mapstr.M{} - _, _ = userDoc.Put("activedirectory", u.User) + _, _ = userDoc.Put("activedirectory", u.Entry) _, _ = userDoc.Put("labels.identity_source", inputID) _, _ = userDoc.Put("user.id", u.ID) From 1031241d675ad5dd42628a618a7dccebff2eb98a Mon Sep 17 00:00:00 2001 From: subham sarkar Date: Wed, 3 Apr 2024 11:37:35 +0530 Subject: [PATCH 083/313] Update CODEOWNERS for new Salesforce's filebeat input (#38670) --- .github/CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e189cdbf51c..95839ce006e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -106,6 +106,7 @@ CHANGELOG* /x-pack/elastic-agent/ @elastic/elastic-agent-control-plane /x-pack/filebeat @elastic/elastic-agent-data-plane /x-pack/filebeat/docs/ # Listed without an owner to avoid maintaining doc ownership for each input and module. +/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc @elastic/obs-infraobs-integrations /x-pack/filebeat/input/awscloudwatch/ @elastic/obs-cloud-monitoring /x-pack/filebeat/input/awss3/ @elastic/obs-cloud-monitoring /x-pack/filebeat/input/azureblobstorage/ @elastic/security-service-integrations @@ -123,6 +124,7 @@ CHANGELOG* /x-pack/filebeat/input/lumberjack/ @elastic/security-service-integrations /x-pack/filebeat/input/netflow/ @elastic/sec-deployment-and-devices /x-pack/filebeat/input/o365audit/ @elastic/security-service-integrations +/x-pack/filebeat/input/salesforce @elastic/obs-infraobs-integrations /x-pack/filebeat/input/websocket/ @elastic/security-service-integrations /x-pack/filebeat/module/activemq @elastic/obs-infraobs-integrations /x-pack/filebeat/module/aws @elastic/obs-cloud-monitoring From aaa482983c5423b50b660a7fe534782a2647cf9d Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Wed, 3 Apr 2024 15:40:28 +0300 Subject: [PATCH 084/313] Deploy K8S Pipeline migration (#38659) * updated auditbeat & deploy k8s pipelines * added kind & kuve env vars, set higer ulimit * added k8s env setup --- .buildkite/auditbeat/auditbeat-pipeline.yml | 10 +- .../generate_auditbeat_pipeline.sh | 143 +++++++----- .buildkite/auditbeat/scripts/crosscompile.sh | 6 - .buildkite/auditbeat/scripts/unit-tests.sh | 9 - .../deploy/kubernetes/deploy-k8s-pipeline.yml | 64 +++++- .../deploy/kubernetes/scripts/install-kind.sh | 40 ++++ .../kubernetes/scripts/install-kubectl.sh | 42 ++++ .../deploy/kubernetes/scripts/kind-setup.sh | 7 + .buildkite/deploy/kubernetes/scripts/make.sh | 7 + .../kubernetes/scripts/setup-k8s-env.sh | 40 ++++ .buildkite/env-scripts/env.sh | 8 + .buildkite/filebeat/filebeat-pipeline.yml | 10 +- .../filebeat/generate_filebeat_pipeline.sh | 213 ++++++++++++++++++ .../filebeat/scripts/integration-gotests.sh | 10 - .../filebeat/scripts/integration-pytests.sh | 10 - .buildkite/filebeat/scripts/unit-tests.sh | 9 - .buildkite/heartbeat/heartbeat-pipeline.yml | 136 +++++++---- .buildkite/hooks/pre-command | 70 +++--- .buildkite/pull-requests.json | 10 +- .../scripts/generate_filebeat_pipeline.sh | 168 -------------- .buildkite/scripts/setenv.sh | 1 + .../module/file_integrity/fileinfo_test.go | 12 + .../module/file_integrity/metricset_test.go | 18 ++ 23 files changed, 683 insertions(+), 360 deletions(-) rename .buildkite/{scripts => auditbeat}/generate_auditbeat_pipeline.sh (56%) delete mode 100755 .buildkite/auditbeat/scripts/crosscompile.sh delete mode 100755 .buildkite/auditbeat/scripts/unit-tests.sh create mode 100755 .buildkite/deploy/kubernetes/scripts/install-kind.sh create mode 100755 .buildkite/deploy/kubernetes/scripts/install-kubectl.sh create mode 100755 .buildkite/deploy/kubernetes/scripts/kind-setup.sh create mode 100755 .buildkite/deploy/kubernetes/scripts/make.sh create mode 100755 .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh create mode 100644 .buildkite/filebeat/generate_filebeat_pipeline.sh delete mode 100755 .buildkite/filebeat/scripts/integration-gotests.sh delete mode 100755 .buildkite/filebeat/scripts/integration-pytests.sh delete mode 100755 .buildkite/filebeat/scripts/unit-tests.sh delete mode 100644 .buildkite/scripts/generate_filebeat_pipeline.sh diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index df5504f2fc0..a8def81f1fa 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -2,9 +2,9 @@ name: "beats-auditbeat" env: - AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" + BEATS_PROJECT_NAME: "auditbeat" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" @@ -12,11 +12,11 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - BEATS_PROJECT_NAME: "auditbeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" steps: - input: "Input Parameters" @@ -62,7 +62,7 @@ steps: - label: ":linux: Load dynamic auditbeat pipeline" key: "auditbeat-pipeline" - command: ".buildkite/scripts/generate_auditbeat_pipeline.sh" + command: ".buildkite/auditbeat/generate_auditbeat_pipeline.sh" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/scripts/generate_auditbeat_pipeline.sh b/.buildkite/auditbeat/generate_auditbeat_pipeline.sh similarity index 56% rename from .buildkite/scripts/generate_auditbeat_pipeline.sh rename to .buildkite/auditbeat/generate_auditbeat_pipeline.sh index 0ff26cda5d3..56befb51d25 100644 --- a/.buildkite/scripts/generate_auditbeat_pipeline.sh +++ b/.buildkite/auditbeat/generate_auditbeat_pipeline.sh @@ -6,19 +6,18 @@ set -euo pipefail pipelineName="pipeline.auditbeat-dynamic.yml" -# TODO: steps: must be always included +# TODO: steps: must be always included echo "Add the mandatory and extended tests without additional conditions into the pipeline" if are_conditions_met_mandatory_tests; then cat > $pipelineName <<- YAML steps: - group: "Auditbeat Mandatory Testing" - key: "mandatory-tests" + key: "mandatory-tests" steps: - label: ":ubuntu: Unit Tests" - command: - - ".buildkite/auditbeat/scripts/unit-tests.sh" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" notify: - github_commit_status: context: "Auditbeat: linux/Unit Tests" @@ -26,13 +25,10 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - label: ":rhel: Unit Tests" - command: - - ".buildkite/auditbeat/scripts/unit-tests.sh" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" notify: - github_commit_status: context: "Auditbeat: rhel/Unit Tests" @@ -40,43 +36,39 @@ steps: provider: "gcp" image: "${IMAGE_RHEL9}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - label: ":windows:-2016 Unit Tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + key: "windows-2016" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" notify: - github_commit_status: - context: "Auditbeat: windows 2016/Unit Tests" + context: "Auditbeat: windows-2016/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2016}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - label: ":windows:-2022 Unit Tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + key: "windows-2022" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" notify: - github_commit_status: - context: "Auditbeat: windows 2022/Unit Tests" + context: "Auditbeat: windows-2022/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2022}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - label: ":linux: Crosscompile" command: - - ".buildkite/auditbeat/scripts/crosscompile.sh" + - "make -C auditbeat crosscompile" env: GOX_FLAGS: "-arch amd64" notify: @@ -94,22 +86,58 @@ fi echo "Check and add the Extended Tests into the pipeline" -if are_conditions_met_arm_tests; then +if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then cat >> $pipelineName <<- YAML + - group: "Extended Tests" - key: "extended-tests-arm" + key: "extended-tests" steps: - - label: ":arm: ARM64 Unit Tests" - key: "extended-arm64-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" + +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "macos-unit-tests-extended" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Auditbeat: MacOS Unit Tests" agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_ARM64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":mac: MacOS ARM Unit Tests" + key: "macos-arm64-unit-tests-extended" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Auditbeat: MacOS ARM Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +fi + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + - label: ":linux: ARM Ubuntu Unit Tests" + key: "extended-arm64-unit-test" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" notify: - github_commit_status: - context: "Auditbeat: ARM Unit tests" + context: "Auditbeat: Unit Tests ARM" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + YAML fi @@ -117,48 +145,49 @@ if are_conditions_met_win_tests; then cat >> $pipelineName <<- YAML - group: "Windows Extended Testing" key: "extended-tests-win" + steps: - - label: ":windows: Windows 2019 Unit Tests" - key: "extended-win-2019-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows:-2019 Unit Tests" + key: "windows-2019-extended" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Auditbeat: Win-2019 Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2019}" machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 + disk_size: 200 disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows:-11 Unit Tests" + key: "windows-11-extended" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" notify: - github_commit_status: - context: "Auditbeat: Windows 2019 Unit Tests" - - - label: ":windows: Windows 10 Unit Tests" - key: "extended-win-10-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + context: "Auditbeat: Win-11 Unit Tests" agents: provider: "gcp" - image: "${IMAGE_WIN_10}" + image: "${IMAGE_WIN_11}" machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 + disk_size: 200 disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows:-10 Unit Tests" + key: "windows-10-extended" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" notify: - github_commit_status: - context: "Auditbeat: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - key: "extended-win-11-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + context: "Auditbeat: Win-10 Unit Tests" agents: provider: "gcp" - image: "${IMAGE_WIN_11}" + image: "${IMAGE_WIN_10}" machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 + disk_size: 200 disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - notify: - - github_commit_status: - context: "Auditbeat: Windows 11 Unit Tests" YAML fi @@ -166,9 +195,10 @@ echo "Check and add the Packaging into the pipeline" if are_conditions_met_packaging; then cat >> $pipelineName <<- YAML - group: "Packaging" - key: "packaging" + key: "packaging" depends_on: - "mandatory-tests" + steps: - label: Package pipeline commands: ".buildkite/scripts/packaging/package-step.sh" @@ -176,7 +206,6 @@ cat >> $pipelineName <<- YAML - github_commit_status: context: "Auditbeat: Packaging" - YAML fi diff --git a/.buildkite/auditbeat/scripts/crosscompile.sh b/.buildkite/auditbeat/scripts/crosscompile.sh deleted file mode 100755 index da8452d5380..00000000000 --- a/.buildkite/auditbeat/scripts/crosscompile.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Executing Crosscompile" -make -C auditbeat crosscompile diff --git a/.buildkite/auditbeat/scripts/unit-tests.sh b/.buildkite/auditbeat/scripts/unit-tests.sh deleted file mode 100755 index 4b8e86243c9..00000000000 --- a/.buildkite/auditbeat/scripts/unit-tests.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Running Unit Tests" -sudo chmod -R go-w auditbeat/ - -umask 0022 -mage -d auditbeat build unitTest diff --git a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml index 34321b61161..246aac9f80a 100644 --- a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml +++ b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml @@ -1,5 +1,65 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +env: + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + steps: - - label: "Example test" - command: echo "Hello!" + - label: "Checks" + command: ".buildkite/deploy/kubernetes/scripts/make.sh" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" && build.env("GITHUB_PR_LABELS") == "kubernetes" + notify: + - github_commit_status: + context: "Deploy K8S/Checks" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - label: "K8S Test/K8S version: v1.29.0" + key: "k8s-test-129" + env: + K8S_VERSION: "v1.29.0" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - label: "K8S Test/K8S version: v1.28.0" + key: "k8s-test-128" + env: + K8S_VERSION: "v1.28.0" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - label: "K8S Test/K8S version: v1.27.3" + key: "k8s-test-1273" + env: + K8S_VERSION: "v1.27.3" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - label: "K8S Test/K8S version: v1.26.6" + key: "k8s-test-1266" + env: + K8S_VERSION: "v1.26.6" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" diff --git a/.buildkite/deploy/kubernetes/scripts/install-kind.sh b/.buildkite/deploy/kubernetes/scripts/install-kind.sh new file mode 100755 index 00000000000..8c399d2de37 --- /dev/null +++ b/.buildkite/deploy/kubernetes/scripts/install-kind.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +set -euo pipefail + +MSG="environment variable missing." +KIND_VERSION=${KIND_VERSION:?$MSG} +KIND_BINARY="${BIN}/kind" + +if command -v kind +then + set +e + echo "Found Kind. Checking version.." + FOUND_KIND_VERSION=$(kind --version 2>&1 >/dev/null | awk '{print $3}') + if [ "$FOUND_KIND_VERSION" == "$KIND_VERSION" ] + then + echo "--- Versions match. No need to install Kind. Exiting." + exit 0 + fi + set -e +fi + +echo "UNMET DEP: Installing Kind" + +OS=$(uname -s| tr '[:upper:]' '[:lower:]') +ARCH=$(uname -m| tr '[:upper:]' '[:lower:]') +if [ "${ARCH}" == "aarch64" ] ; then + ARCH_SUFFIX=arm64 +else + ARCH_SUFFIX=amd64 +fi + +if curl -sSLo "${KIND_BINARY}" "https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-${OS}-${ARCH_SUFFIX}" ; then + chmod +x "${KIND_BINARY}" + echo "Kind installed: ${KIND_VERSION}" +else + echo "Something bad with the download, let's delete the corrupted binary" + if [ -e "${KIND_BINARY}" ] ; then + rm "${KIND_BINARY}" + fi + exit 1 +fi diff --git a/.buildkite/deploy/kubernetes/scripts/install-kubectl.sh b/.buildkite/deploy/kubernetes/scripts/install-kubectl.sh new file mode 100755 index 00000000000..7f6c75bf3b9 --- /dev/null +++ b/.buildkite/deploy/kubernetes/scripts/install-kubectl.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +MSG="parameter missing." +K8S_VERSION=${K8S_VERSION:?$MSG} +KUBECTL_BINARY="${BIN}/kubectl" + +if command -v kubectl +then + set +e + echo "Found kubectl. Checking version.." + FOUND_KUBECTL_VERSION=$(kubectl version --client --short 2>&1 >/dev/null | awk '{print $3}') + if [ "${FOUND_KUBECTL_VERSION}" == "${K8S_VERSION}" ] + then + echo "Kubectl Versions match. No need to install kubectl. Exiting." + exit 0 + fi + set -e +fi + +echo "UNMET DEP: Installing kubectl" + +OS=$(uname -s| tr '[:upper:]' '[:lower:]') +ARCH=$(uname -m| tr '[:upper:]' '[:lower:]') +if [ "${ARCH}" == "aarch64" ] ; then + ARCH_SUFFIX=arm64 +else + ARCH_SUFFIX=amd64 +fi + +if curl -sSLo "${KUBECTL_BINARY}" "https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/${OS}/${ARCH_SUFFIX}/kubectl" ; then + chmod +x "${KUBECTL_BINARY}" + echo "Current K8S Version: ${K8S_VERSION}" + echo "Kubectl installed: ${KUBECTL_BINARY}" +else + echo "--- Something bad with the download, let's delete the corrupted binary" + if [ -e "${KUBECTL_BINARY}" ] ; then + rm "${KUBECTL_BINARY}" + fi + exit 1 +fi + diff --git a/.buildkite/deploy/kubernetes/scripts/kind-setup.sh b/.buildkite/deploy/kubernetes/scripts/kind-setup.sh new file mode 100755 index 00000000000..ca46cdb0fd8 --- /dev/null +++ b/.buildkite/deploy/kubernetes/scripts/kind-setup.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +kind create cluster --image kindest/node:${K8S_VERSION} + +echo "Cluster info: " +kubectl cluster-info diff --git a/.buildkite/deploy/kubernetes/scripts/make.sh b/.buildkite/deploy/kubernetes/scripts/make.sh new file mode 100755 index 00000000000..4c9120a2d90 --- /dev/null +++ b/.buildkite/deploy/kubernetes/scripts/make.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -euo pipefail + +echo "--- Checking K8S" +make -C deploy/kubernetes all +make check-no-changes diff --git a/.buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh b/.buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh new file mode 100755 index 00000000000..3656318bd64 --- /dev/null +++ b/.buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/env-scripts/util.sh + +echo "--- Installing kind & kubectl" +retry_with_count 5 .buildkite/deploy/kubernetes/scripts/install-kind.sh +retry_with_count 5 .buildkite/deploy/kubernetes/scripts/install-kubectl.sh + +echo "--- Setting up kind" +max_retries=3 +timeout=5 +retries=0 + +while true; do + echo "Creating cluster" + script_output=$(.buildkite/deploy/kubernetes/scripts/kind-setup.sh 2>&1) + exit_code=$? + + echo "Script Output: $script_output" + + if [ $exit_code -eq 0 ]; then + break + else + retries=$((retries + 1)) + + if [ $retries -gt $max_retries ]; then + kind delete cluster + echo "Kind setup FAILED: $script_output" + exit 1 + fi + + kind delete cluster + + sleep_time=$((timeout * retries)) + echo "Retry #$retries failed. Retrying after ${sleep_time}s..." + sleep $sleep_time + fi +done diff --git a/.buildkite/env-scripts/env.sh b/.buildkite/env-scripts/env.sh index f28658a107d..b30b26c3e8a 100644 --- a/.buildkite/env-scripts/env.sh +++ b/.buildkite/env-scripts/env.sh @@ -30,6 +30,9 @@ ONLY_DOCS=$(changeset_applies "$DOCS_CHANGESET") PACKAGING_CHANGES=$(changeset_applies "$PACKAGING_CHANGESET") GO_MOD_CHANGES=$(changeset_applies "^go.mod") +KIND_VERSION="v0.20.0" +KUBECONFIG="${WORKSPACE}/kubecfg" + export REPO export WORKSPACE export BIN @@ -51,3 +54,8 @@ export DOCKER_REGISTRY export ONLY_DOCS export PACKAGING_CHANGES export GO_MOD_CHANGES + +export KIND_VERSION +export KUBECONFIG + +add_bin_path diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index e240e47af45..9daeef287d9 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -2,20 +2,20 @@ name: "beats-filebeat" env: + BEATS_PROJECT_NAME: "filebeat" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - BEATS_PROJECT_NAME: "filebeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" steps: - input: "Input Parameters" @@ -61,7 +61,7 @@ steps: - label: ":linux: Load dynamic filebeat pipeline" key: "filebeat-pipeline" - command: ".buildkite/scripts/generate_filebeat_pipeline.sh" + command: ".buildkite/filebeat/generate_filebeat_pipeline.sh" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/filebeat/generate_filebeat_pipeline.sh b/.buildkite/filebeat/generate_filebeat_pipeline.sh new file mode 100644 index 00000000000..aa0a03eadc1 --- /dev/null +++ b/.buildkite/filebeat/generate_filebeat_pipeline.sh @@ -0,0 +1,213 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.filebeat-dynamic.yml" + +# TODO: steps: must be always included +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + - group: "Filebeat Mandatory Testing" + key: "mandatory-tests" + + steps: + - label: ":ubuntu: Unit Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Filebeat: linux/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":ubuntu: Go Integration Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage goIntegTest" + notify: + - github_commit_status: + context: "Filebeat: Go Integration Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":ubuntu: Python Integration Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage pythonIntegTest" + notify: + - github_commit_status: + context: "Filebeat: Python Integration Tests" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows:-2016 Unit Tests" + key: "windows-2016" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Filebeat: windows-2016/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows:-2022 Unit Tests" + key: "windows-2022" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Filebeat: windows-2022/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +echo "Check and add the Extended Tests into the pipeline" + +if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "macos-unit-tests-extended" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Filebeat: MacOS Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":mac: MacOS ARM Unit Tests" + key: "macos-arm64-unit-tests-extended" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Filebeat: MacOS ARM Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" +YAML +fi + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + + - label: ":linux: ARM Ubuntu Unit Tests" + key: "extended-arm64-unit-test" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Filebeat: Unit Tests ARM" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" +YAML +fi + +if are_conditions_met_win_tests; then + cat >> $pipelineName <<- YAML + + - group: "Windows Extended Testing" + key: "extended-tests-win" + steps: + - label: ":windows: Win 2019 Unit Tests" + key: "windows-extended-2019" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Filebeat: Win-2019 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows:-11 Unit Tests" + key: "windows-extended-11" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Filebeat: Win-11 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows:-10 Unit Tests" + key: "windows-extended-10" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Filebeat: Win-10 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then +cat >> $pipelineName <<- YAML + + - group: "Packaging" + key: "packaging" + depends_on: + - "mandatory-tests" + + steps: + - label: Package pipeline + commands: ".buildkite/scripts/packaging/package-step.sh" + notify: + - github_commit_status: + context: "Filebeat: Packaging" + +YAML +fi + +echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public +cat $pipelineName + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/filebeat/scripts/integration-gotests.sh b/.buildkite/filebeat/scripts/integration-gotests.sh deleted file mode 100755 index 6de39ff8817..00000000000 --- a/.buildkite/filebeat/scripts/integration-gotests.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Executing Integration Tests" -sudo chmod -R go-w filebeat/ - -cd filebeat -umask 0022 -mage goIntegTest diff --git a/.buildkite/filebeat/scripts/integration-pytests.sh b/.buildkite/filebeat/scripts/integration-pytests.sh deleted file mode 100755 index 9aff8695c35..00000000000 --- a/.buildkite/filebeat/scripts/integration-pytests.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Executing Integration Tests" -sudo chmod -R go-w filebeat/ - -cd filebeat -umask 0022 -mage pythonIntegTest diff --git a/.buildkite/filebeat/scripts/unit-tests.sh b/.buildkite/filebeat/scripts/unit-tests.sh deleted file mode 100755 index 2efb6b1ff8e..00000000000 --- a/.buildkite/filebeat/scripts/unit-tests.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Executing Unit Tests" -sudo chmod -R go-w filebeat/ - -umask 0022 -mage -d filebeat unitTest diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index 2b5f6195f45..e63fb1c60e2 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -3,16 +3,19 @@ env: BEATS_PROJECT_NAME: "heartbeat" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" steps: - group: "Heartbeat Mandatory Testing" @@ -20,48 +23,64 @@ steps: if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat" || build.env("BUILDKITE_PULL_REQUEST") != "false" steps: - - label: ":linux: Unit Tests / {{matrix.image}}" - command: - - ".buildkite/heartbeat/scripts/unit-tests.sh" + - label: ":ubuntu: Unit Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" notify: - github_commit_status: - context: "Heartbeat: linux/Unit Tests" + context: "Heartbeat: ubuntu/Unit Tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "heartbeat/build/*.xml" + - "heartbeat/build/*.json" + + - label: ":rhel:-9 Unit Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Heartbeat: rhel-9/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_RHEL9}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - matrix: - setup: - image: - - "${IMAGE_UBUNTU_X86_64}" - - "${IMAGE_RHEL9}" artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":windows: Unit Tests / {{matrix.image}}" - command: - - ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows:-2016 Unit Test" + key: "windows-2016" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Heartbeat: windows-2016/Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_type: "pd-ssd" + artifact_paths: + - "heartbeat/build/*.xml" + - "heartbeat/build/*.json" + + - label: ":windows:-2022 Unit Test" + key: "windows-2022" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" notify: - github_commit_status: - context: "Heartbeat: windows/Unit Tests" + context: "Heartbeat: windows-2022/Unit Tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2022}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - label: ":ubuntu: Go Integration Tests" - command: - - ".buildkite/heartbeat/scripts/integration-gotests.sh" + command: "cd ${BEATS_PROJECT_NAME} && mage goIntegTest" notify: - github_commit_status: context: "Heartbeat: Go Integration Tests" @@ -74,8 +93,7 @@ steps: - "heartbeat/build/*.json" - label: ":ubuntu: Python Integration Tests" - command: - - ".buildkite/heartbeat/scripts/integration-pytests.sh" + command: "cd ${BEATS_PROJECT_NAME} && mage pythonIntegTest" notify: - github_commit_status: context: "Heartbeat: Python Integration Tests" @@ -95,11 +113,10 @@ steps: - label: ":linux: ARM64 Unit Tests" key: "arm-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for arm" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ - command: - - ".buildkite/heartbeat/scripts/unit-tests.sh" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" notify: - github_commit_status: - context: "Heartbeat/Extended: Unit Tests ARM" + context: "Heartbeat: Unit Tests ARM" agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -109,27 +126,38 @@ steps: - label: ":mac: MacOS Unit Tests" key: "macos-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - command: - - ".buildkite/heartbeat/scripts/unit-tests.sh" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" notify: - github_commit_status: - context: "Heartbeat/Extended: MacOS Unit Tests" + context: "Heartbeat: MacOS Unit Tests" agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" artifact_paths: "heartbeat/build/*.xml" + - label: ":mac: MacOS ARM Unit Tests" + key: "macos-extended-arm" + if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "Heartbeat: MacOS ARM Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: "heartbeat/build/*.xml" + - group: "Windows Extended Testing" key: "extended-tests-win" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for windows" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ steps: - - label: ":windows: Win 2019 Unit Tests" - key: "win-extended-2019" - command: ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows:-2019 Unit Tests" + key: "windows-extended-2019" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" notify: - github_commit_status: - context: "Heartbeat/Extended: Win-2019 Unit Tests" + context: "Heartbeat: Win-2019 Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -139,6 +167,36 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + - label: ":windows:-11 Unit Tests" + key: "windows-extended-11" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Heartbeat: Win-11 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_type: "pd-ssd" + artifact_paths: + - "heartbeat/build/*.xml" + - "heartbeat/build/*.json" + + - label: ":windows:-10 Unit Tests" + key: "windows-extended-10" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + notify: + - github_commit_status: + context: "Heartbeat: Win-10 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_type: "pd-ssd" + artifact_paths: + - "heartbeat/build/*.xml" + - "heartbeat/build/*.json" + - group: "Packaging" key: "packaging" if: build.env("BUILDKITE_PULL_REQUEST") != "false" diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index e03ade43af1..5f625b35c59 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -2,44 +2,30 @@ set -euo pipefail +source .buildkite/env-scripts/util.sh + # Secrets must be redacted # https://buildkite.com/docs/pipelines/managing-log-output#redacted-environment-variables AWS_SERVICE_ACCOUNT_SECRET_PATH="kv/ci-shared/platform-ingest/aws_account_auth" PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-ingest-ci-service-account" DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" -PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/private_ci_artifacts_gcs_credentials" +#PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/private_ci_artifacts_gcs_credentials" GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" -retry() { - local retries=$1 - shift - local count=0 - until "$@"; do - exit=$? - wait=$((2 ** count)) - count=$((count + 1)) - if [ $count -lt "$retries" ]; then - >&2 echo "Retry $count/$retries exited $exit, retrying in $wait seconds..." - sleep $wait - else - >&2 echo "Retry $count/$retries exited $exit, no more retries left." - return $exit - fi - done - return 0 -} - - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then source .buildkite/env-scripts/env.sh - source .buildkite/env-scripts/util.sh - - if [[ -z "${GO_VERSION-""}" ]]; then - export GO_VERSION=$(cat "${WORKSPACE}/.go-version") - fi + # Images with prefix "platform-ingest-beats-*" has Go pre-setup. + # Image itself takes care of Go version download/installation based on .go-version file if [[ "$BUILDKITE_STEP_KEY" == macos* ]]; then - ulimit -Sn 30000 + if [[ -z "${GO_VERSION-""}" ]]; then + GO_VERSION=$(cat "${WORKSPACE}/.go-version") + export GO_VERSION + fi + + # To prevent "OSError: [Errno 24] Too many open files" + ulimit -Sn 150000 + echo "--- Ulimit: $(ulimit)" echo "--- Setting up environment" add_bin_path @@ -47,10 +33,20 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi with_mage fi + if [[ "$BUILDKITE_STEP_KEY" == windows* ]]; then + git config core.autocrlf false + git rm --quiet --cached -r . + git reset --quiet --hard + fi + if [[ "$BUILDKITE_STEP_KEY" == package* ]]; then - export DOCKER_USERNAME_SECRET=$(retry_with_count 5 vault kv get -field user "${DOCKER_REGISTRY_SECRET_PATH}") - export DOCKER_PASSWORD_SECRET=$(retry_with_count 5 vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") - export GITHUB_TOKEN_SECRET=$(retry_with_count 5 vault kv get -field token ${GITHUB_TOKEN_VAULT_PATH}) + DOCKER_USERNAME_SECRET=$(retry_with_count 5 vault kv get -field user "${DOCKER_REGISTRY_SECRET_PATH}") + DOCKER_PASSWORD_SECRET=$(retry_with_count 5 vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") + GITHUB_TOKEN_SECRET=$(retry_with_count 5 vault kv get -field token ${GITHUB_TOKEN_VAULT_PATH}) + + export DOCKER_USERNAME_SECRET + export DOCKER_PASSWORD_SECRET + export GITHUB_TOKEN_SECRET docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKER_REGISTRY}" 2>/dev/null @@ -60,6 +56,10 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi git config user.name "$github_username" git config user.email "$github_email" fi + + if [[ "$BUILDKITE_STEP_KEY" == k8s-test* ]]; then + .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh + fi fi ENABLED_BEATS_PIPELINES_SLUGS=( @@ -76,8 +76,8 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-xpack-winlogbeat" "beats-xpack-dockerlogbeat" "beats-xpack-auditbeat" - "beats-xpack-filebeat" - "beats-xpack-heartbeat" + "beats-xpack-filebeat" + "beats-xpack-heartbeat" "beats-xpack-osquerybeat" ) @@ -90,16 +90,16 @@ done if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "$BUILDKITE_STEP_KEY" == "extended-cloud-test" ]]; then - BEATS_AWS_SECRET_KEY=$(retry 5 vault kv get -field secret_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) + BEATS_AWS_SECRET_KEY=$(retry_with_count 5 vault kv get -field secret_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) export BEATS_AWS_SECRET_KEY - BEATS_AWS_ACCESS_KEY=$(retry 5 vault kv get -field access_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) + BEATS_AWS_ACCESS_KEY=$(retry_with_count 5 vault kv get -field access_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) export BEATS_AWS_ACCESS_KEY fi fi if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then if [[ "$BUILDKITE_STEP_KEY" == "extended-win-10-system-tests" || "$BUILDKITE_STEP_KEY" == "mandatory-win-2022-system-tests" ]]; then - PRIVATE_CI_GCS_CREDENTIALS_SECRET=$(retry 5 vault kv get -field plaintext -format=json ${PRIVATE_CI_GCS_CREDENTIALS_PATH}) + PRIVATE_CI_GCS_CREDENTIALS_SECRET=$(retry_with_count 5 vault kv get -field plaintext -format=json ${PRIVATE_CI_GCS_CREDENTIALS_PATH}) export PRIVATE_CI_GCS_CREDENTIALS_SECRET fi fi diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 8219bb2c9e9..abf9580c208 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -26,7 +26,7 @@ "build_on_commit": true, "build_on_comment": true, "trigger_comment_regex": "^/test filebeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", - "always_trigger_comment_regex": "^/test filebeat(for (arm|macos|windows|extended support))?$|^/package filebeat$", + "always_trigger_comment_regex": "^/test filebeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], @@ -57,8 +57,8 @@ "set_commit_status": true, "build_on_commit": true, "build_on_comment": true, - "trigger_comment_regex": "^/test auditbeat(for (arm|macos|windows|extended support))?$", - "always_trigger_comment_regex": "^/test auditbeat(for (arm|macos|windows|extended support))?$", + "trigger_comment_regex": "^/test auditbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", + "always_trigger_comment_regex": "^/test auditbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], @@ -73,8 +73,8 @@ "set_commit_status": true, "build_on_commit": true, "build_on_comment": true, - "trigger_comment_regex": "^/test heartbeat(for (arm|macos|windows|extended support))?$|^/package heartbeat$", - "always_trigger_comment_regex": "^/test heartbeat(for (arm|macos|windows|extended support))?$|^/package heartbeat$", + "trigger_comment_regex": "^/test heartbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", + "always_trigger_comment_regex": "^/test heartbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", "skip_ci_labels": [ ], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], diff --git a/.buildkite/scripts/generate_filebeat_pipeline.sh b/.buildkite/scripts/generate_filebeat_pipeline.sh deleted file mode 100644 index 63108d5aacd..00000000000 --- a/.buildkite/scripts/generate_filebeat_pipeline.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.filebeat-dynamic.yml" - -# TODO: steps: must be always included -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - - -steps: - - group: "Filebeat Mandatory Testing" - key: "mandatory-tests" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "filebeat" || build.env("BUILDKITE_PULL_REQUEST") != "false" - - steps: - - label: ":ubuntu: Unit Tests" - command: - - ".buildkite/filebeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Filebeat: linux/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":ubuntu: Go Integration Tests" - command: - - ".buildkite/filebeat/scripts/integration-gotests.sh" - notify: - - github_commit_status: - context: "Filebeat: Go Integration Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":ubuntu: Python Integration Tests" - command: - - ".buildkite/filebeat/scripts/integration-pytests.sh" - notify: - - github_commit_status: - context: "Filebeat: Python Integration Tests" - agents: - provider: gcp - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":windows:-2016 Unit Tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - notify: - - github_commit_status: - context: "Filebeat: windows/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":windows:-2022 Unit Tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - notify: - - github_commit_status: - context: "Filebeat: windows 2022/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - group: "Extended Tests: ARM" - key: "extended-tests-arm" - steps: - - label: ":linux: ARM64 Unit Tests" - key: "arm-extended" - command: - - ".buildkite/filebeat/scripts/unit-tests.sh" - notify: - - github_commit_status: - context: "Filebeat/Extended: Unit Tests ARM" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "filebeat/build/*.xml" - -YAML -fi - -if are_conditions_met_win_tests; then - cat >> $pipelineName <<- YAML - - group: "Windows Extended Testing" - key: "extended-tests-win" - steps: - - label: ":windows: Win 2019 Unit Tests" - key: "win-extended-2019" - command: ".buildkite/scripts/win_unit_tests.ps1" - notify: - - github_commit_status: - context: "Filebeat/Extended: Win-2019 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then -cat >> $pipelineName <<- YAML - - group: "Packaging" - key: "packaging" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" - depends_on: - - "mandatory-tests" - - steps: - - label: Package pipeline - commands: ".buildkite/scripts/packaging/package-step.sh" - notify: - - github_commit_status: - context: "Filebeat: Packaging" - -YAML -fi - -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 8da3796aa1e..f0116c6b308 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -euo pipefail + REPO="beats" TMP_FOLDER="tmp.${REPO}" DOCKER_REGISTRY="docker.elastic.co" diff --git a/auditbeat/module/file_integrity/fileinfo_test.go b/auditbeat/module/file_integrity/fileinfo_test.go index d2ac75821fc..4aa63d0a400 100644 --- a/auditbeat/module/file_integrity/fileinfo_test.go +++ b/auditbeat/module/file_integrity/fileinfo_test.go @@ -30,6 +30,9 @@ import ( ) func TestNewMetadata(t *testing.T) { + // Can be removed after https://github.com/elastic/beats/issues/37701 is solved + skipOnBuildkiteDarwin(t, "Group check") + f, err := os.CreateTemp(t.TempDir(), "metadata") if err != nil { t.Fatal(err) @@ -95,6 +98,9 @@ func TestNewMetadata(t *testing.T) { } func TestSetUIDSetGIDBits(t *testing.T) { + // Can be removed after https://github.com/elastic/beats/issues/37701 is solved + skipOnBuildkiteDarwin(t, "Wheel permission issue") + f, err := os.CreateTemp(t.TempDir(), "setuid") if err != nil { t.Fatal(err) @@ -148,3 +154,9 @@ func TestSetUIDSetGIDBits(t *testing.T) { assert.Equal(t, flags&os.ModeSetgid != 0, meta.SetGID) } } + +func skipOnBuildkiteDarwin(t testing.TB, reason string) { + if os.Getenv("BUILDKITE") == "true" && runtime.GOOS == "darwin" { + t.Skip("Skip test on Buildkite MacOS: Wheel permission while expected staff") + } +} diff --git a/auditbeat/module/file_integrity/metricset_test.go b/auditbeat/module/file_integrity/metricset_test.go index 2a6c33e1798..a7f0b922e15 100644 --- a/auditbeat/module/file_integrity/metricset_test.go +++ b/auditbeat/module/file_integrity/metricset_test.go @@ -62,7 +62,11 @@ func TestData(t *testing.T) { func TestActions(t *testing.T) { skipOnCIForDarwinAMD64(t) + + // Can be removed after https://github.com/elastic/ingest-dev/issues/3016 is solved skipOnBuildkiteWindows(t) + // Can be removed after https://github.com/elastic/ingest-dev/issues/3076 is solved + skipOnBuildkiteDarwinArm(t) defer abtest.SetupDataDir(t)() @@ -155,7 +159,11 @@ func TestActions(t *testing.T) { func TestExcludedFiles(t *testing.T) { skipOnCIForDarwinAMD64(t) + + // Can be removed after https://github.com/elastic/ingest-dev/issues/3016 is solved skipOnBuildkiteWindows(t) + // Can be removed after https://github.com/elastic/ingest-dev/issues/3076 is solved + skipOnBuildkiteDarwinArm(t) defer abtest.SetupDataDir(t)() @@ -203,7 +211,11 @@ func TestExcludedFiles(t *testing.T) { func TestIncludedExcludedFiles(t *testing.T) { skipOnCIForDarwinAMD64(t) + + // Can be removed after https://github.com/elastic/ingest-dev/issues/3016 is solved skipOnBuildkiteWindows(t) + // Can be removed after https://github.com/elastic/ingest-dev/issues/3076 is solved + skipOnBuildkiteDarwinArm(t) defer abtest.SetupDataDir(t)() @@ -958,3 +970,9 @@ func skipOnBuildkiteWindows(t testing.TB) { t.Skip("Skip on Buildkite Windows: Shortened TMP problem") } } + +func skipOnBuildkiteDarwinArm(t testing.TB) { + if os.Getenv("BUILDKITE") == "true" && runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { + t.Skip("Skip test on Buldkite: unexpected path error") + } +} From 460b5c4989d3288539305c53b20c983f0d1b1d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constan=C3=A7a=20Manteigas?= <113898685+constanca-m@users.noreply.github.com> Date: Wed, 3 Apr 2024 15:21:27 +0200 Subject: [PATCH 085/313] [Metricbeat][Kubernetes] Share watchers between metricsets (#37332) * Share watchers between metricsets. --------- Signed-off-by: constanca Co-authored-by: Michael Katsoulis Co-authored-by: Tetiana Kravchenko --- CHANGELOG-developer.next.asciidoc | 1 + NOTICE.txt | 4 +- go.mod | 2 +- go.sum | 4 +- .../providers/kubernetes/pod_test.go | 4 + .../helper/kubernetes/state_metricset.go | 17 +- .../module/kubernetes/container/container.go | 6 +- metricbeat/module/kubernetes/kubernetes.go | 8 + metricbeat/module/kubernetes/node/node.go | 6 +- metricbeat/module/kubernetes/pod/pod.go | 6 +- .../state_container/state_container.go | 6 +- .../module/kubernetes/util/kubernetes.go | 1205 +++++++++++------ .../module/kubernetes/util/kubernetes_test.go | 620 ++++++++- .../input/internal/httplog/roundtripper.go | 3 +- 14 files changed, 1446 insertions(+), 446 deletions(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index b617edfaf04..7434cd62fec 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -95,6 +95,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. ==== Added +- Update watchers to be shared between metricsets in Kubernetes module. {pull}37332[37332] - Add new metricset in Kubernetes module, `state_namespace`. {pull}36406[36406] - Add configuration for APM instrumentation and expose the tracer trough the Beat object. {pull}17938[17938] - Make the behavior of clientWorker and netClientWorker consistent when error is returned from publisher pipeline diff --git a/NOTICE.txt b/NOTICE.txt index e5cf2df78b6..c4ae3f617b5 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -12313,11 +12313,11 @@ various licenses: -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-autodiscover -Version: v0.6.7 +Version: v0.6.8 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-autodiscover@v0.6.7/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-autodiscover@v0.6.8/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index 538eb2fbdce..745d47673b6 100644 --- a/go.mod +++ b/go.mod @@ -202,7 +202,7 @@ require ( github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5 github.com/elastic/bayeux v1.0.5 github.com/elastic/ebpfevents v0.4.0 - github.com/elastic/elastic-agent-autodiscover v0.6.7 + github.com/elastic/elastic-agent-autodiscover v0.6.8 github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 diff --git a/go.sum b/go.sum index 7623c476c43..ff0abc92363 100644 --- a/go.sum +++ b/go.sum @@ -673,8 +673,8 @@ github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 h1:lnDkqiRFKm0rxdljqr github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3/go.mod h1:aPqzac6AYkipvp4hufTyMj5PDIphF3+At8zr7r51xjY= github.com/elastic/ebpfevents v0.4.0 h1:M80eAeJnzvGQgU9cjJqkjFca9pjM3aq/TuZxJeom4bI= github.com/elastic/ebpfevents v0.4.0/go.mod h1:o21z5xup/9dK8u0Hg9bZRflSqqj1Zu5h2dg2hSTcUPQ= -github.com/elastic/elastic-agent-autodiscover v0.6.7 h1:+KVjltN0rPsBrU8b156gV4lOTBgG/vt0efFCFARrf3g= -github.com/elastic/elastic-agent-autodiscover v0.6.7/go.mod h1:hFeFqneS2r4jD0/QzGkrNk0YVdN0JGh7lCWdsH7zcI4= +github.com/elastic/elastic-agent-autodiscover v0.6.8 h1:BSXz+QwjZAEt08G+T3GDGl14Bh9a6zD8luNCvZut/b8= +github.com/elastic/elastic-agent-autodiscover v0.6.8/go.mod h1:hFeFqneS2r4jD0/QzGkrNk0YVdN0JGh7lCWdsH7zcI4= github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= github.com/elastic/elastic-agent-client/v7 v7.8.1/go.mod h1:axl1nkdqc84YRFkeJGD9jExKNPUrOrzf3DFo2m653nY= github.com/elastic/elastic-agent-libs v0.7.5 h1:4UMqB3BREvhwecYTs/L23oQp1hs/XUkcunPlmTZn5yg= diff --git a/libbeat/autodiscover/providers/kubernetes/pod_test.go b/libbeat/autodiscover/providers/kubernetes/pod_test.go index 1718dbe0752..4cc2d8bb393 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod_test.go +++ b/libbeat/autodiscover/providers/kubernetes/pod_test.go @@ -2150,6 +2150,10 @@ func (s *mockUpdaterWatcher) Store() caches.Store { func (s *mockUpdaterWatcher) AddEventHandler(kubernetes.ResourceEventHandler) { } +func (s *mockUpdaterWatcher) GetEventHandler() kubernetes.ResourceEventHandler { + return nil +} + func (s *mockUpdaterStore) List() []interface{} { return s.objects } diff --git a/metricbeat/helper/kubernetes/state_metricset.go b/metricbeat/helper/kubernetes/state_metricset.go index 51929d73509..aad813e0099 100644 --- a/metricbeat/helper/kubernetes/state_metricset.go +++ b/metricbeat/helper/kubernetes/state_metricset.go @@ -29,8 +29,6 @@ import ( k8smod "github.com/elastic/beats/v7/metricbeat/module/kubernetes" ) -const prefix = "state_" - /* mappings stores the metrics for each metricset. The key of the map is the name of the metricset and the values are the mapping of the metricset metrics. @@ -45,7 +43,7 @@ var lock sync.RWMutex // The New method will be called after the setup of the module and before starting to fetch data func Init(name string, mapping *prometheus.MetricsMapping) { if name != util.NamespaceResource { - name = prefix + name + name = util.StateMetricsetPrefix + name } lock.Lock() mappings[name] = mapping @@ -79,16 +77,11 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { mapping := mappings[base.Name()] lock.Unlock() - resourceName := base.Name() - if resourceName != util.NamespaceResource { - resourceName = strings.ReplaceAll(resourceName, prefix, "") - } - return &MetricSet{ BaseMetricSet: base, prometheusClient: prometheusClient, prometheusMapping: mapping, - enricher: util.NewResourceMetadataEnricher(base, resourceName, mod.GetMetricsRepo(), false), + enricher: util.NewResourceMetadataEnricher(base, mod.GetMetricsRepo(), mod.GetResourceWatchers(), false), mod: mod, }, nil } @@ -103,12 +96,12 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) { // for the state_namespace metricset. resourceName := m.BaseMetricSet.Name() if resourceName != util.NamespaceResource { - resourceName = strings.ReplaceAll(resourceName, prefix, "") + resourceName = strings.ReplaceAll(resourceName, util.StateMetricsetPrefix, "") } else { resourceName = "state_namespace" } - m.enricher.Start() + m.enricher.Start(m.mod.GetResourceWatchers()) families, err := m.mod.GetStateMetricsFamilies(m.prometheusClient) if err != nil { @@ -139,6 +132,6 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) { // Close stops this metricset func (m *MetricSet) Close() error { - m.enricher.Stop() + m.enricher.Stop(m.mod.GetResourceWatchers()) return nil } diff --git a/metricbeat/module/kubernetes/container/container.go b/metricbeat/module/kubernetes/container/container.go index c277406faee..d1071f613de 100644 --- a/metricbeat/module/kubernetes/container/container.go +++ b/metricbeat/module/kubernetes/container/container.go @@ -75,7 +75,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return &MetricSet{ BaseMetricSet: base, http: http, - enricher: util.NewContainerMetadataEnricher(base, mod.GetMetricsRepo(), true), + enricher: util.NewContainerMetadataEnricher(base, mod.GetMetricsRepo(), mod.GetResourceWatchers(), true), mod: mod, }, nil } @@ -84,7 +84,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // format. It publishes the event which is then forwarded to the output. In case // of an error set the Error field of mb.Event or simply call report.Error(). func (m *MetricSet) Fetch(reporter mb.ReporterV2) { - m.enricher.Start() + m.enricher.Start(m.mod.GetResourceWatchers()) body, err := m.mod.GetKubeletStats(m.http) if err != nil { @@ -131,6 +131,6 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) { // Close stops this metricset func (m *MetricSet) Close() error { - m.enricher.Stop() + m.enricher.Stop(m.mod.GetResourceWatchers()) return nil } diff --git a/metricbeat/module/kubernetes/kubernetes.go b/metricbeat/module/kubernetes/kubernetes.go index 1cb9ca037f9..23611e0b63c 100644 --- a/metricbeat/module/kubernetes/kubernetes.go +++ b/metricbeat/module/kubernetes/kubernetes.go @@ -42,6 +42,7 @@ type Module interface { GetStateMetricsFamilies(prometheus p.Prometheus) ([]*p.MetricFamily, error) GetKubeletStats(http *helper.HTTP) ([]byte, error) GetMetricsRepo() *util.MetricsRepo + GetResourceWatchers() *util.Watchers } type familiesCache struct { @@ -86,6 +87,7 @@ type module struct { kubeStateMetricsCache *kubeStateMetricsCache kubeletStatsCache *kubeletStatsCache metricsRepo *util.MetricsRepo + resourceWatchers *util.Watchers cacheHash uint64 } @@ -97,6 +99,7 @@ func ModuleBuilder() func(base mb.BaseModule) (mb.Module, error) { cacheMap: make(map[uint64]*statsCache), } metricsRepo := util.NewMetricsRepo() + resourceWatchers := util.NewWatchers() return func(base mb.BaseModule) (mb.Module, error) { hash, err := generateCacheHash(base.Config().Hosts) if err != nil { @@ -108,6 +111,7 @@ func ModuleBuilder() func(base mb.BaseModule) (mb.Module, error) { kubeStateMetricsCache: kubeStateMetricsCache, kubeletStatsCache: kubeletStatsCache, metricsRepo: metricsRepo, + resourceWatchers: resourceWatchers, cacheHash: hash, } return &m, nil @@ -162,3 +166,7 @@ func generateCacheHash(host []string) (uint64, error) { func (m *module) GetMetricsRepo() *util.MetricsRepo { return m.metricsRepo } + +func (m *module) GetResourceWatchers() *util.Watchers { + return m.resourceWatchers +} diff --git a/metricbeat/module/kubernetes/node/node.go b/metricbeat/module/kubernetes/node/node.go index 69bfcc2139e..e862d83e92a 100644 --- a/metricbeat/module/kubernetes/node/node.go +++ b/metricbeat/module/kubernetes/node/node.go @@ -75,7 +75,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return &MetricSet{ BaseMetricSet: base, http: http, - enricher: util.NewResourceMetadataEnricher(base, util.NodeResource, mod.GetMetricsRepo(), false), + enricher: util.NewResourceMetadataEnricher(base, mod.GetMetricsRepo(), mod.GetResourceWatchers(), false), mod: mod, }, nil } @@ -84,7 +84,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // format. It publishes the event which is then forwarded to the output. In case // of an error set the Error field of mb.Event or simply call report.Error(). func (m *MetricSet) Fetch(reporter mb.ReporterV2) { - m.enricher.Start() + m.enricher.Start(m.mod.GetResourceWatchers()) body, err := m.mod.GetKubeletStats(m.http) if err != nil { @@ -115,6 +115,6 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) { // Close stops this metricset func (m *MetricSet) Close() error { - m.enricher.Stop() + m.enricher.Stop(m.mod.GetResourceWatchers()) return nil } diff --git a/metricbeat/module/kubernetes/pod/pod.go b/metricbeat/module/kubernetes/pod/pod.go index 485a72f11b7..fe20641b432 100644 --- a/metricbeat/module/kubernetes/pod/pod.go +++ b/metricbeat/module/kubernetes/pod/pod.go @@ -76,7 +76,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return &MetricSet{ BaseMetricSet: base, http: http, - enricher: util.NewResourceMetadataEnricher(base, util.PodResource, mod.GetMetricsRepo(), true), + enricher: util.NewResourceMetadataEnricher(base, mod.GetMetricsRepo(), mod.GetResourceWatchers(), true), mod: mod, }, nil } @@ -85,7 +85,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // format. It publishes the event which is then forwarded to the output. In case // of an error set the Error field of mb.Event or simply call report.Error(). func (m *MetricSet) Fetch(reporter mb.ReporterV2) { - m.enricher.Start() + m.enricher.Start(m.mod.GetResourceWatchers()) body, err := m.mod.GetKubeletStats(m.http) if err != nil { @@ -133,6 +133,6 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) { // Close stops this metricset func (m *MetricSet) Close() error { - m.enricher.Stop() + m.enricher.Stop(m.mod.GetResourceWatchers()) return nil } diff --git a/metricbeat/module/kubernetes/state_container/state_container.go b/metricbeat/module/kubernetes/state_container/state_container.go index 86ffb6c0782..0c46e60f51a 100644 --- a/metricbeat/module/kubernetes/state_container/state_container.go +++ b/metricbeat/module/kubernetes/state_container/state_container.go @@ -115,7 +115,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return &MetricSet{ BaseMetricSet: base, prometheus: prometheus, - enricher: util.NewContainerMetadataEnricher(base, mod.GetMetricsRepo(), false), + enricher: util.NewContainerMetadataEnricher(base, mod.GetMetricsRepo(), mod.GetResourceWatchers(), false), mod: mod, }, nil } @@ -124,7 +124,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { // format. It publishes the event which is then forwarded to the output. In case // of an error set the Error field of mb.Event or simply call report.Error(). func (m *MetricSet) Fetch(reporter mb.ReporterV2) error { - m.enricher.Start() + m.enricher.Start(m.mod.GetResourceWatchers()) families, err := m.mod.GetStateMetricsFamilies(m.prometheus) if err != nil { @@ -196,6 +196,6 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) error { // Close stops this metricset func (m *MetricSet) Close() error { - m.enricher.Stop() + m.enricher.Stop(m.mod.GetResourceWatchers()) return nil } diff --git a/metricbeat/module/kubernetes/util/kubernetes.go b/metricbeat/module/kubernetes/util/kubernetes.go index 60b3360ab89..d89ca006f0e 100644 --- a/metricbeat/module/kubernetes/util/kubernetes.go +++ b/metricbeat/module/kubernetes/util/kubernetes.go @@ -38,19 +38,6 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) -// Enricher takes Kubernetes events and enrich them with k8s metadata -type Enricher interface { - // Start will start the Kubernetes watcher on the first call, does nothing on the rest - // errors are logged as warning - Start() - - // Stop will stop the Kubernetes watcher - Stop() - - // Enrich the given list of events - Enrich([]mapstr.M) -} - type kubernetesConfig struct { KubeConfig string `config:"kube_config"` KubeClientOptions kubernetes.KubeClientOptions `config:"kube_client_options"` @@ -64,22 +51,60 @@ type kubernetesConfig struct { Namespace string `config:"namespace"` } +// Enricher takes Kubernetes events and enrich them with k8s metadata +type Enricher interface { + // Start will start the Kubernetes watcher on the first call, does nothing on the rest + // errors are logged as warning + Start(*Watchers) + + // Stop will stop the Kubernetes watcher + Stop(*Watchers) + + // Enrich the given list of events + Enrich([]mapstr.M) +} + type enricher struct { sync.RWMutex - metadata map[string]mapstr.M - index func(mapstr.M) string - watcher kubernetes.Watcher - watchersStarted bool - watchersStartedLock sync.Mutex - namespaceWatcher kubernetes.Watcher - nodeWatcher kubernetes.Watcher - replicasetWatcher kubernetes.Watcher - jobWatcher kubernetes.Watcher - isPod bool + metadata map[string]mapstr.M + index func(mapstr.M) string + updateFunc func(kubernetes.Resource) map[string]mapstr.M + deleteFunc func(kubernetes.Resource) []string + metricsetName string + resourceName string + isPod bool + config *kubernetesConfig + log *logp.Logger +} + +type nilEnricher struct{} + +func (*nilEnricher) Start(*Watchers) {} +func (*nilEnricher) Stop(*Watchers) {} +func (*nilEnricher) Enrich([]mapstr.M) {} + +type metaWatcher struct { + watcher kubernetes.Watcher // watcher responsible for watching a specific resource + started bool // true if watcher has started, false otherwise + + metricsetsUsing []string // list of metricsets using this shared watcher(e.g. pod, container, state_pod) + + enrichers map[string]*enricher // map of enrichers using this watcher. The key is the metricset name. Each metricset has its own enricher + metadataObjects map[string]bool // representation of a set of ids(in the form of namespace_name-resource_name) of each object received by the watcher's handler functions + + nodeScope bool // whether this watcher should watch for resources in current node or in whole cluster + restartWatcher kubernetes.Watcher // whether this watcher needs a restart. Only relevant in leader nodes due to metricsets with different nodescope(pod, state_pod) +} + +type Watchers struct { + metaWatchersMap map[string]*metaWatcher + lock sync.RWMutex } const selector = "kubernetes" +const StateMetricsetPrefix = "state_" + const ( PodResource = "pod" ServiceResource = "service" @@ -96,6 +121,13 @@ const ( NamespaceResource = "state_namespace" ) +func NewWatchers() *Watchers { + watchers := &Watchers{ + metaWatchersMap: make(map[string]*metaWatcher), + } + return watchers +} + func getResource(resourceName string) kubernetes.Resource { switch resourceName { case PodResource: @@ -129,155 +161,519 @@ func getResource(resourceName string) kubernetes.Resource { } } -// NewResourceMetadataEnricher returns an Enricher configured for kubernetes resource events +// getExtraWatchers returns a list of the extra resources to watch based on some resource. +// The full list can be seen in https://github.com/elastic/beats/issues/37243, at Expected Watchers section. +func getExtraWatchers(resourceName string, addResourceMetadata *metadata.AddResourceMetadataConfig) []string { + switch resourceName { + case PodResource: + extra := []string{NamespaceResource, NodeResource} + // We need to create watchers for ReplicaSets and Jobs that it might belong to, + // in order to be able to retrieve 2nd layer Owner metadata like in case of: + // Deployment -> Replicaset -> Pod + // CronJob -> job -> Pod + if addResourceMetadata != nil && addResourceMetadata.Deployment { + extra = append(extra, ReplicaSetResource) + } + if addResourceMetadata != nil && addResourceMetadata.CronJob { + extra = append(extra, JobResource) + } + return extra + case ServiceResource: + return []string{NamespaceResource} + case DeploymentResource: + return []string{NamespaceResource} + case ReplicaSetResource: + return []string{NamespaceResource} + case StatefulSetResource: + return []string{NamespaceResource} + case DaemonSetResource: + return []string{NamespaceResource} + case JobResource: + return []string{NamespaceResource} + case CronJobResource: + return []string{NamespaceResource} + case PersistentVolumeResource: + return []string{} + case PersistentVolumeClaimResource: + return []string{NamespaceResource} + case StorageClassResource: + return []string{} + case NodeResource: + return []string{} + case NamespaceResource: + return []string{} + default: + return []string{} + } +} + +// getResourceName returns the name of the resource for a metricset. +// Example: state_pod metricset uses pod resource. +// Exception is state_namespace. +func getResourceName(metricsetName string) string { + resourceName := metricsetName + if resourceName != NamespaceResource { + resourceName = strings.ReplaceAll(resourceName, StateMetricsetPrefix, "") + } + return resourceName +} + +// getWatchOptions builds the kubernetes.WatchOptions{} needed for the watcher based on the config and nodeScope. +func getWatchOptions(config *kubernetesConfig, nodeScope bool, client k8sclient.Interface, log *logp.Logger) (*kubernetes.WatchOptions, error) { + var err error + options := kubernetes.WatchOptions{ + SyncTimeout: config.SyncPeriod, + } + + // Watch objects in the node only. + if nodeScope { + nd := &kubernetes.DiscoverKubernetesNodeParams{ + ConfigHost: config.Node, + Client: client, + IsInCluster: kubernetes.IsInCluster(config.KubeConfig), + HostUtils: &kubernetes.DefaultDiscoveryUtils{}, + } + options.Node, err = kubernetes.DiscoverKubernetesNode(log, nd) + if err != nil { + return nil, fmt.Errorf("couldn't discover kubernetes node: %w", err) + } + } + return &options, err +} + +func isNamespaced(resourceName string) bool { + if resourceName == NodeResource || resourceName == PersistentVolumeResource || resourceName == StorageClassResource || + resourceName == NamespaceResource { + return false + } + return true +} + +// createWatcher creates a watcher for a specific resource if not already created and stores it in the resourceWatchers map. +// resourceName is the key in the resourceWatchers map where the created watcher gets stored. +// options are the watch options for a specific watcher. +// For example a watcher can be configured through options to watch only for resources on a specific node/namespace or in whole cluster. +// resourceWatchers is the store for all created watchers. +// extraWatcher bool sets apart the watchers that are created as main watcher for a resource and the ones that are created as an extra watcher. +func createWatcher( + resourceName string, + resource kubernetes.Resource, + options kubernetes.WatchOptions, + client k8sclient.Interface, + resourceWatchers *Watchers, + namespace string, + extraWatcher bool) (bool, error) { + + // We need to check the node scope to decide on whether a watcher should be updated or not. + nodeScope := false + if options.Node != "" { + nodeScope = true + } + // The nodescope for extra watchers node, namespace, replicaset and job should be always false. + if extraWatcher { + nodeScope = false + options.Node = "" + } + + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + // Check if a watcher for the specific resource already exists. + resourceMetaWatcher, ok := resourceWatchers.metaWatchersMap[resourceName] + + // If it does not exist, create the resourceMetaWatcher. + if !ok { + // Check if we need to add namespace to the watcher's options. + if isNamespaced(resourceName) { + options.Namespace = namespace + } + watcher, err := kubernetes.NewNamedWatcher(resourceName, client, resource, options, nil) + if err != nil { + return false, err + } + resourceWatchers.metaWatchersMap[resourceName] = &metaWatcher{ + watcher: watcher, + started: false, // not started yet + metadataObjects: make(map[string]bool), + enrichers: make(map[string]*enricher), + metricsetsUsing: make([]string, 0), + restartWatcher: nil, + nodeScope: nodeScope, + } + return true, nil + } else if resourceMetaWatcher.nodeScope != nodeScope && resourceMetaWatcher.nodeScope { + // It might happen that the watcher already exists, but is only being used to monitor the resources + // of a single node(e.g. created by pod metricset). In that case, we need to check if we are trying to create a new watcher that will track + // the resources of whole cluster(e.g. in case of state_pod metricset). + // If it is the case, then we need to update the watcher by changing its watch options (removing options.Node) + // A running watcher cannot be updated directly. Instead, we must create a new one with the correct watch options. + // The new restartWatcher must be identical to the old watcher, including the same handler function, with the only difference being the watch options. + + if isNamespaced(resourceName) { + options.Namespace = namespace + } + restartWatcher, err := kubernetes.NewNamedWatcher(resourceName, client, resource, options, nil) + if err != nil { + return false, err + } + // update the handler of the restartWatcher to match the current watcher's handler. + restartWatcher.AddEventHandler(resourceMetaWatcher.watcher.GetEventHandler()) + resourceMetaWatcher.restartWatcher = restartWatcher + resourceMetaWatcher.nodeScope = nodeScope + } + return false, nil +} + +// addToMetricsetsUsing adds metricset identified by metricsetUsing to the list of resources using the shared watcher +// identified by resourceName. The caller of this function should not be holding the lock. +func addToMetricsetsUsing(resourceName string, metricsetUsing string, resourceWatchers *Watchers) { + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + data, ok := resourceWatchers.metaWatchersMap[resourceName] + if ok { + contains := false + for _, which := range data.metricsetsUsing { + if which == metricsetUsing { + contains = true + break + } + } + // add this resource to the list of resources using it + if !contains { + data.metricsetsUsing = append(data.metricsetsUsing, metricsetUsing) + } + } +} + +// removeFromMetricsetsUsing removes the metricset from the list of resources using the shared watcher. +// It returns true if element was removed and new size of array. +// The cache should be locked when called. +func removeFromMetricsetsUsing(resourceName string, notUsingName string, resourceWatchers *Watchers) (bool, int) { + data, ok := resourceWatchers.metaWatchersMap[resourceName] + removed := false + if ok { + newIndex := 0 + for i, which := range data.metricsetsUsing { + if which == notUsingName { + removed = true + } else { + data.metricsetsUsing[newIndex] = data.metricsetsUsing[i] + newIndex++ + } + } + data.metricsetsUsing = data.metricsetsUsing[:newIndex] + return removed, len(data.metricsetsUsing) + } + return removed, 0 +} + +// createAllWatchers creates all the watchers required by a metricset +func createAllWatchers( + client k8sclient.Interface, + metricsetName string, + resourceName string, + nodeScope bool, + config *kubernetesConfig, + log *logp.Logger, + resourceWatchers *Watchers, +) error { + res := getResource(resourceName) + if res == nil { + return fmt.Errorf("resource for name %s does not exist. Watcher cannot be created", resourceName) + } + + options, err := getWatchOptions(config, nodeScope, client, log) + if err != nil { + return err + } + // Create the main watcher for the given resource. + // For example pod metricset's main watcher will be pod watcher. + // If it fails, we return an error, so we can stop the extra watchers from creating. + created, err := createWatcher(resourceName, res, *options, client, resourceWatchers, config.Namespace, false) + if err != nil { + return fmt.Errorf("error initializing Kubernetes watcher %s, required by %s: %w", resourceName, metricsetName, err) + } else if created { + log.Debugf("Created watcher %s successfully, created by %s.", resourceName, metricsetName) + } + // add this metricset to the ones using the watcher + addToMetricsetsUsing(resourceName, metricsetName, resourceWatchers) + + // Create any extra watchers required by this resource + // For example pod requires also namespace and node watcher and possibly replicaset and job watcher. + extraWatchers := getExtraWatchers(resourceName, config.AddResourceMetadata) + for _, extra := range extraWatchers { + extraRes := getResource(extra) + if extraRes != nil { + created, err = createWatcher(extra, extraRes, *options, client, resourceWatchers, config.Namespace, true) + if err != nil { + log.Errorf("Error initializing Kubernetes watcher %s, required by %s: %s", extra, metricsetName, err) + } else { + if created { + log.Debugf("Created watcher %s successfully, created by %s.", extra, metricsetName) + } + // add this metricset to the ones using the extra watchers + addToMetricsetsUsing(extra, metricsetName, resourceWatchers) + } + } else { + log.Errorf("Resource for name %s does not exist. Watcher cannot be created.", extra) + } + } + + return nil +} + +// createMetadataGen creates and returns the metadata generator for resources other than pod and service +// metaGen is a struct of type Resource and implements Generate method for metadata generation for a given resource kind. +func createMetadataGen(client k8sclient.Interface, commonConfig *conf.C, addResourceMetadata *metadata.AddResourceMetadataConfig, + resourceName string, resourceWatchers *Watchers) (*metadata.Resource, error) { + + resourceWatchers.lock.RLock() + defer resourceWatchers.lock.RUnlock() + + resourceMetaWatcher := resourceWatchers.metaWatchersMap[resourceName] + // This should not be possible since the watchers should have been created before + if resourceMetaWatcher == nil { + return nil, fmt.Errorf("could not create the metadata generator, as the watcher for %s does not exist", resourceName) + } + + var metaGen *metadata.Resource + + namespaceMetaWatcher := resourceWatchers.metaWatchersMap[NamespaceResource] + if namespaceMetaWatcher != nil { + n := metadata.NewNamespaceMetadataGenerator(addResourceMetadata.Namespace, + (*namespaceMetaWatcher).watcher.Store(), client) + metaGen = metadata.NewNamespaceAwareResourceMetadataGenerator(commonConfig, client, n) + } else { + metaGen = metadata.NewResourceMetadataGenerator(commonConfig, client) + } + + return metaGen, nil +} + +// createMetadataGenSpecific creates and returns the metadata generator for a specific resource - pod or service +// A metaGen struct implements a MetaGen interface and is designed to utilize the necessary watchers to collect(Generate) metadata for a specific resource. +func createMetadataGenSpecific(client k8sclient.Interface, commonConfig *conf.C, addResourceMetadata *metadata.AddResourceMetadataConfig, + resourceName string, resourceWatchers *Watchers) (metadata.MetaGen, error) { + + resourceWatchers.lock.RLock() + defer resourceWatchers.lock.RUnlock() + // The watcher for the resource needs to exist + resourceMetaWatcher := resourceWatchers.metaWatchersMap[resourceName] + if resourceMetaWatcher == nil { + return nil, fmt.Errorf("could not create the metadata generator, as the watcher for %s does not exist", resourceName) + } + mainWatcher := (*resourceMetaWatcher).watcher + if (*resourceMetaWatcher).restartWatcher != nil { + mainWatcher = (*resourceMetaWatcher).restartWatcher + } + + var metaGen metadata.MetaGen + if resourceName == PodResource { + var nodeWatcher kubernetes.Watcher + if nodeMetaWatcher := resourceWatchers.metaWatchersMap[NodeResource]; nodeMetaWatcher != nil { + nodeWatcher = (*nodeMetaWatcher).watcher + } + var namespaceWatcher kubernetes.Watcher + if namespaceMetaWatcher := resourceWatchers.metaWatchersMap[NamespaceResource]; namespaceMetaWatcher != nil { + namespaceWatcher = (*namespaceMetaWatcher).watcher + } + var replicaSetWatcher kubernetes.Watcher + if replicasetMetaWatcher := resourceWatchers.metaWatchersMap[ReplicaSetResource]; replicasetMetaWatcher != nil { + replicaSetWatcher = (*replicasetMetaWatcher).watcher + } + var jobWatcher kubernetes.Watcher + if jobMetaWatcher := resourceWatchers.metaWatchersMap[JobResource]; jobMetaWatcher != nil { + jobWatcher = (*jobMetaWatcher).watcher + } + // For example for pod named redis in namespace default, the generator uses the pod watcher for pod metadata, + // collects all node metadata using the node watcher's store and all namespace metadata using the namespacewatcher's store. + metaGen = metadata.GetPodMetaGen(commonConfig, mainWatcher, nodeWatcher, namespaceWatcher, replicaSetWatcher, + jobWatcher, addResourceMetadata) + return metaGen, nil + } else if resourceName == ServiceResource { + namespaceMetaWatcher := resourceWatchers.metaWatchersMap[NamespaceResource] + if namespaceMetaWatcher == nil { + return nil, fmt.Errorf("could not create the metadata generator, as the watcher for namespace does not exist") + } + namespaceMeta := metadata.NewNamespaceMetadataGenerator(addResourceMetadata.Namespace, + (*namespaceMetaWatcher).watcher.Store(), client) + metaGen = metadata.NewServiceMetadataGenerator(commonConfig, (*resourceMetaWatcher).watcher.Store(), + namespaceMeta, client) + return metaGen, nil + } + + // Should never reach this part, as this function is only for service or pod resources + return metaGen, fmt.Errorf("failed to create a metadata generator for resource %s", resourceName) +} + +// NewResourceMetadataEnricher returns a metadata enricher for a given resource +// For the metadata enrichment, resource watchers are used which are shared between +// the different metricsets. For example for pod metricset, a pod watcher, a namespace and +// node watcher are by default needed in addition to job and replicaset watcher according +// to configuration. These watchers will be also used by other metricsets that require them +// like state_pod, state_container, node etc. func NewResourceMetadataEnricher( base mb.BaseMetricSet, - resourceName string, metricsRepo *MetricsRepo, + resourceWatchers *Watchers, nodeScope bool) Enricher { + log := logp.NewLogger(selector) - var replicaSetWatcher, jobWatcher kubernetes.Watcher - + // metricset configuration config, err := GetValidatedConfig(base) if err != nil { - logp.Info("Kubernetes metricset enriching is disabled") + log.Info("Kubernetes metricset enriching is disabled") return &nilEnricher{} } - res := getResource(resourceName) - if res == nil { + // This type of config is needed for the metadata generator + // and includes detailed settings for metadata enrichment + commonMetaConfig := metadata.Config{} + if err := base.Module().UnpackConfig(&commonMetaConfig); err != nil { + log.Errorf("Error initializing Kubernetes metadata enricher: %s", err) return &nilEnricher{} } + commonConfig, _ := conf.NewConfigFrom(&commonMetaConfig) client, err := kubernetes.GetKubernetesClient(config.KubeConfig, config.KubeClientOptions) if err != nil { - logp.Err("Error creating Kubernetes client: %s", err) + log.Errorf("Error creating Kubernetes client: %s", err) return &nilEnricher{} } - watcher, nodeWatcher, namespaceWatcher := getResourceMetadataWatchers(config, res, client, nodeScope) - - if watcher == nil { + metricsetName := base.Name() + resourceName := getResourceName(metricsetName) + // Create all watchers needed for this metricset + err = createAllWatchers(client, metricsetName, resourceName, nodeScope, config, log, resourceWatchers) + if err != nil { + log.Errorf("Error starting the watchers: %s", err) return &nilEnricher{} } - // commonMetaConfig stores the metadata configuration of the resource itself - commonMetaConfig := metadata.Config{} - if err := base.Module().UnpackConfig(&commonMetaConfig); err != nil { - logp.Err("Error initializing Kubernetes metadata enricher: %s", err) + var specificMetaGen metadata.MetaGen + var generalMetaGen *metadata.Resource + // Create the metadata generator to be used in the watcher's event handler. + // Both specificMetaGen and generalMetaGen implement Generate method for metadata collection. + if resourceName == ServiceResource || resourceName == PodResource { + specificMetaGen, err = createMetadataGenSpecific(client, commonConfig, config.AddResourceMetadata, resourceName, resourceWatchers) + } else { + generalMetaGen, err = createMetadataGen(client, commonConfig, config.AddResourceMetadata, resourceName, resourceWatchers) + } + if err != nil { + log.Errorf("Error trying to create the metadata generators: %s", err) return &nilEnricher{} } - cfg, _ := conf.NewConfigFrom(&commonMetaConfig) - // if Resource is Pod then we need to create watchers for Replicasets and Jobs that it might belongs to - // in order to be able to retrieve 2nd layer Owner metadata like in case of: - // Deployment -> Replicaset -> Pod - // CronJob -> job -> Pod - if resourceName == PodResource { - if config.AddResourceMetadata.Deployment { - replicaSetWatcher, err = kubernetes.NewNamedWatcher("resource_metadata_enricher_rs", client, &kubernetes.ReplicaSet{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - }, nil) - if err != nil { - logp.Err("Error creating watcher for %T due to error %+v", &kubernetes.ReplicaSet{}, err) - return &nilEnricher{} - } + // updateFunc to be used as the resource watcher's add and update handler. + // The handler function is executed when a watcher is triggered(i.e. new/updated resource). + // It is responsible for generating the metadata for a detected resource by executing the metadata generator's Generate method. + // It is a common handler for all resource watchers. The kind of resource(e.g. pod or deployment) is checked inside the function. + // It returns a map of a resourse identifier(i.e namespace-resource_name) as key and the metadata as value. + updateFunc := func(r kubernetes.Resource) map[string]mapstr.M { + accessor, _ := meta.Accessor(r) + id := accessor.GetName() + namespace := accessor.GetNamespace() + if namespace != "" { + id = join(namespace, id) } - if config.AddResourceMetadata.CronJob { - jobWatcher, err = kubernetes.NewNamedWatcher("resource_metadata_enricher_job", client, &kubernetes.Job{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - }, nil) - if err != nil { - logp.Err("Error creating watcher for %T due to error %+v", &kubernetes.Job{}, err) - return &nilEnricher{} + switch r := r.(type) { + case *kubernetes.Pod: + return map[string]mapstr.M{id: specificMetaGen.Generate(r)} + + case *kubernetes.Node: + nodeName := r.GetObjectMeta().GetName() + metrics := NewNodeMetrics() + if cpu, ok := r.Status.Capacity["cpu"]; ok { + if q, err := resource.ParseQuantity(cpu.String()); err == nil { + metrics.CoresAllocatable = NewFloat64Metric(float64(q.MilliValue()) / 1000) + } + } + if memory, ok := r.Status.Capacity["memory"]; ok { + if q, err := resource.ParseQuantity(memory.String()); err == nil { + metrics.MemoryAllocatable = NewFloat64Metric(float64(q.Value())) + } } + nodeStore, _ := metricsRepo.AddNodeStore(nodeName) + nodeStore.SetNodeMetrics(metrics) + + return map[string]mapstr.M{id: generalMetaGen.Generate(NodeResource, r)} + case *kubernetes.Deployment: + return map[string]mapstr.M{id: generalMetaGen.Generate(DeploymentResource, r)} + case *kubernetes.Job: + return map[string]mapstr.M{id: generalMetaGen.Generate(JobResource, r)} + case *kubernetes.CronJob: + return map[string]mapstr.M{id: generalMetaGen.Generate(CronJobResource, r)} + case *kubernetes.Service: + return map[string]mapstr.M{id: specificMetaGen.Generate(r)} + case *kubernetes.StatefulSet: + return map[string]mapstr.M{id: generalMetaGen.Generate(StatefulSetResource, r)} + case *kubernetes.Namespace: + return map[string]mapstr.M{id: generalMetaGen.Generate(NamespaceResource, r)} + case *kubernetes.ReplicaSet: + return map[string]mapstr.M{id: generalMetaGen.Generate(ReplicaSetResource, r)} + case *kubernetes.DaemonSet: + return map[string]mapstr.M{id: generalMetaGen.Generate(DaemonSetResource, r)} + case *kubernetes.PersistentVolume: + return map[string]mapstr.M{id: generalMetaGen.Generate(PersistentVolumeResource, r)} + case *kubernetes.PersistentVolumeClaim: + return map[string]mapstr.M{id: generalMetaGen.Generate(PersistentVolumeClaimResource, r)} + case *kubernetes.StorageClass: + return map[string]mapstr.M{id: generalMetaGen.Generate(StorageClassResource, r)} + default: + return map[string]mapstr.M{id: generalMetaGen.Generate(r.GetObjectKind().GroupVersionKind().Kind, r)} } } - podMetaGen := metadata.GetPodMetaGen(cfg, watcher, nodeWatcher, namespaceWatcher, replicaSetWatcher, jobWatcher, config.AddResourceMetadata) - - namespaceMeta := metadata.NewNamespaceMetadataGenerator(config.AddResourceMetadata.Namespace, namespaceWatcher.Store(), watcher.Client()) - serviceMetaGen := metadata.NewServiceMetadataGenerator(cfg, watcher.Store(), namespaceMeta, watcher.Client()) - - metaGen := metadata.NewNamespaceAwareResourceMetadataGenerator(cfg, watcher.Client(), namespaceMeta) + // deleteFunc to be used as the resource watcher's delete handler. + // The deleteFunc is executed when a watcher is triggered for a resource deletion(e.g. pod deleted). + // It returns the identifier of the resource. + deleteFunc := func(r kubernetes.Resource) []string { + accessor, _ := meta.Accessor(r) - enricher := buildMetadataEnricher(watcher, nodeWatcher, namespaceWatcher, replicaSetWatcher, jobWatcher, - // update - func(m map[string]mapstr.M, r kubernetes.Resource) { - accessor, _ := meta.Accessor(r) - id := join(accessor.GetNamespace(), accessor.GetName()) - - switch r := r.(type) { - case *kubernetes.Pod: - m[id] = podMetaGen.Generate(r) + switch r := r.(type) { + case *kubernetes.Node: + nodeName := r.GetObjectMeta().GetName() + metricsRepo.DeleteNodeStore(nodeName) + } - case *kubernetes.Node: - nodeName := r.GetObjectMeta().GetName() - metrics := NewNodeMetrics() - if cpu, ok := r.Status.Capacity["cpu"]; ok { - if q, err := resource.ParseQuantity(cpu.String()); err == nil { - metrics.CoresAllocatable = NewFloat64Metric(float64(q.MilliValue()) / 1000) - } - } - if memory, ok := r.Status.Capacity["memory"]; ok { - if q, err := resource.ParseQuantity(memory.String()); err == nil { - metrics.MemoryAllocatable = NewFloat64Metric(float64(q.Value())) - } - } - nodeStore, _ := metricsRepo.AddNodeStore(nodeName) - nodeStore.SetNodeMetrics(metrics) - - m[id] = metaGen.Generate(NodeResource, r) - - case *kubernetes.Deployment: - m[id] = metaGen.Generate(DeploymentResource, r) - case *kubernetes.Job: - m[id] = metaGen.Generate(JobResource, r) - case *kubernetes.CronJob: - m[id] = metaGen.Generate(CronJobResource, r) - case *kubernetes.Service: - m[id] = serviceMetaGen.Generate(r) - case *kubernetes.StatefulSet: - m[id] = metaGen.Generate(StatefulSetResource, r) - case *kubernetes.Namespace: - m[id] = metaGen.Generate(NamespaceResource, r) - case *kubernetes.ReplicaSet: - m[id] = metaGen.Generate(ReplicaSetResource, r) - case *kubernetes.DaemonSet: - m[id] = metaGen.Generate(DaemonSetResource, r) - case *kubernetes.PersistentVolume: - m[id] = metaGen.Generate(PersistentVolumeResource, r) - case *kubernetes.PersistentVolumeClaim: - m[id] = metaGen.Generate(PersistentVolumeClaimResource, r) - case *kubernetes.StorageClass: - m[id] = metaGen.Generate(StorageClassResource, r) - default: - m[id] = metaGen.Generate(r.GetObjectKind().GroupVersionKind().Kind, r) - } - }, - // delete - func(m map[string]mapstr.M, r kubernetes.Resource) { - accessor, _ := meta.Accessor(r) - - switch r := r.(type) { - case *kubernetes.Node: - nodeName := r.GetObjectMeta().GetName() - metricsRepo.DeleteNodeStore(nodeName) - } + id := accessor.GetName() + namespace := accessor.GetNamespace() + if namespace != "" { + id = join(namespace, id) + } + return []string{id} + } - id := join(accessor.GetNamespace(), accessor.GetName()) - delete(m, id) - }, - // index - func(e mapstr.M) string { - return join(getString(e, mb.ModuleDataKey+".namespace"), getString(e, "name")) - }, - ) + // indexFunc constructs and returns the resource identifier from a given event. + // If a resource is namespaced(e.g. pod) the identifier is in the form of namespace-resource_name. + // If it is not namespaced(e.g. node) the identifier is the resource's name. + indexFunc := func(e mapstr.M) string { + name := getString(e, "name") + namespace := getString(e, mb.ModuleDataKey+".namespace") + id := "" + if name != "" && namespace != "" { + id = join(namespace, name) + } else if namespace != "" { + id = namespace + } else { + id = name + } + return id + } - // Configure the enricher for Pods, so pod specific metadata ends up in the right place when - // calling Enrich - if _, ok := res.(*kubernetes.Pod); ok { + // create a metadata enricher for this metricset + enricher := buildMetadataEnricher( + metricsetName, + resourceName, + resourceWatchers, + config, + updateFunc, + deleteFunc, + indexFunc, + log) + if resourceName == PodResource { enricher.isPod = true } @@ -288,197 +684,138 @@ func NewResourceMetadataEnricher( func NewContainerMetadataEnricher( base mb.BaseMetricSet, metricsRepo *MetricsRepo, + resourceWatchers *Watchers, nodeScope bool) Enricher { - var replicaSetWatcher, jobWatcher kubernetes.Watcher + log := logp.NewLogger(selector) + config, err := GetValidatedConfig(base) if err != nil { - logp.Info("Kubernetes metricset enriching is disabled") + log.Info("Kubernetes metricset enriching is disabled") return &nilEnricher{} } - client, err := kubernetes.GetKubernetesClient(config.KubeConfig, config.KubeClientOptions) - if err != nil { - logp.Err("Error creating Kubernetes client: %s", err) + // This type of config is needed for the metadata generator + commonMetaConfig := metadata.Config{} + if err := base.Module().UnpackConfig(&commonMetaConfig); err != nil { + log.Errorf("Error initializing Kubernetes metadata enricher: %s", err) return &nilEnricher{} } + commonConfig, _ := conf.NewConfigFrom(&commonMetaConfig) - watcher, nodeWatcher, namespaceWatcher := getResourceMetadataWatchers(config, &kubernetes.Pod{}, client, nodeScope) - if watcher == nil { + client, err := kubernetes.GetKubernetesClient(config.KubeConfig, config.KubeClientOptions) + if err != nil { + log.Errorf("Error creating Kubernetes client: %s", err) return &nilEnricher{} } - // commonMetaConfig stores the metadata configuration of the resource itself - commonMetaConfig := metadata.Config{} - if err := base.Module().UnpackConfig(&commonMetaConfig); err != nil { - logp.Err("Error initializing Kubernetes metadata enricher: %s", err) + metricsetName := base.Name() + + err = createAllWatchers(client, metricsetName, PodResource, nodeScope, config, log, resourceWatchers) + if err != nil { + log.Errorf("Error starting the watchers: %s", err) return &nilEnricher{} } - cfg, _ := conf.NewConfigFrom(&commonMetaConfig) - // Resource is Pod so we need to create watchers for Replicasets and Jobs that it might belongs to - // in order to be able to retrieve 2nd layer Owner metadata like in case of: - // Deployment -> Replicaset -> Pod - // CronJob -> job -> Pod - if config.AddResourceMetadata.Deployment { - replicaSetWatcher, err = kubernetes.NewNamedWatcher("resource_metadata_enricher_rs", client, &kubernetes.ReplicaSet{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - }, nil) - if err != nil { - logp.Err("Error creating watcher for %T due to error %+v", &kubernetes.Namespace{}, err) - return &nilEnricher{} - } - } - if config.AddResourceMetadata.CronJob { - jobWatcher, err = kubernetes.NewNamedWatcher("resource_metadata_enricher_job", client, &kubernetes.Job{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - }, nil) - if err != nil { - logp.Err("Error creating watcher for %T due to error %+v", &kubernetes.Job{}, err) - return &nilEnricher{} - } + metaGen, err := createMetadataGenSpecific(client, commonConfig, config.AddResourceMetadata, PodResource, resourceWatchers) + if err != nil { + log.Errorf("Error trying to create the metadata generators: %s", err) + return &nilEnricher{} } - metaGen := metadata.GetPodMetaGen(cfg, watcher, nodeWatcher, namespaceWatcher, replicaSetWatcher, jobWatcher, config.AddResourceMetadata) + updateFunc := func(r kubernetes.Resource) map[string]mapstr.M { + metadataEvents := make(map[string]mapstr.M) - enricher := buildMetadataEnricher(watcher, nodeWatcher, namespaceWatcher, replicaSetWatcher, jobWatcher, - // update - func(m map[string]mapstr.M, r kubernetes.Resource) { - pod, ok := r.(*kubernetes.Pod) - if !ok { - base.Logger().Debugf("Error while casting event: %s", ok) - } - pmeta := metaGen.Generate(pod) + pod, ok := r.(*kubernetes.Pod) + if !ok { + base.Logger().Debugf("Error while casting event: %s", ok) + } + pmeta := metaGen.Generate(pod) - statuses := make(map[string]*kubernetes.PodContainerStatus) - mapStatuses := func(s []kubernetes.PodContainerStatus) { - for i := range s { - statuses[s[i].Name] = &s[i] - } + statuses := make(map[string]*kubernetes.PodContainerStatus) + mapStatuses := func(s []kubernetes.PodContainerStatus) { + for i := range s { + statuses[s[i].Name] = &s[i] } - mapStatuses(pod.Status.ContainerStatuses) - mapStatuses(pod.Status.InitContainerStatuses) + } + mapStatuses(pod.Status.ContainerStatuses) + mapStatuses(pod.Status.InitContainerStatuses) - nodeStore, _ := metricsRepo.AddNodeStore(pod.Spec.NodeName) - podId := NewPodId(pod.Namespace, pod.Name) - podStore, _ := nodeStore.AddPodStore(podId) + nodeStore, _ := metricsRepo.AddNodeStore(pod.Spec.NodeName) + podId := NewPodId(pod.Namespace, pod.Name) + podStore, _ := nodeStore.AddPodStore(podId) - for _, container := range append(pod.Spec.Containers, pod.Spec.InitContainers...) { - cmeta := mapstr.M{} - metrics := NewContainerMetrics() + for _, container := range append(pod.Spec.Containers, pod.Spec.InitContainers...) { + cmeta := mapstr.M{} + metrics := NewContainerMetrics() - if cpu, ok := container.Resources.Limits["cpu"]; ok { - if q, err := resource.ParseQuantity(cpu.String()); err == nil { - metrics.CoresLimit = NewFloat64Metric(float64(q.MilliValue()) / 1000) - } + if cpu, ok := container.Resources.Limits["cpu"]; ok { + if q, err := resource.ParseQuantity(cpu.String()); err == nil { + metrics.CoresLimit = NewFloat64Metric(float64(q.MilliValue()) / 1000) } - if memory, ok := container.Resources.Limits["memory"]; ok { - if q, err := resource.ParseQuantity(memory.String()); err == nil { - metrics.MemoryLimit = NewFloat64Metric(float64(q.Value())) - } + } + if memory, ok := container.Resources.Limits["memory"]; ok { + if q, err := resource.ParseQuantity(memory.String()); err == nil { + metrics.MemoryLimit = NewFloat64Metric(float64(q.Value())) } + } - containerStore, _ := podStore.AddContainerStore(container.Name) - containerStore.SetContainerMetrics(metrics) + containerStore, _ := podStore.AddContainerStore(container.Name) + containerStore.SetContainerMetrics(metrics) - if s, ok := statuses[container.Name]; ok { - // Extracting id and runtime ECS fields from ContainerID - // which is in the form of :// - split := strings.Index(s.ContainerID, "://") - if split != -1 { - kubernetes2.ShouldPut(cmeta, "container.id", s.ContainerID[split+3:], base.Logger()) + if s, ok := statuses[container.Name]; ok { + // Extracting id and runtime ECS fields from ContainerID + // which is in the form of :// + split := strings.Index(s.ContainerID, "://") + if split != -1 { + kubernetes2.ShouldPut(cmeta, "container.id", s.ContainerID[split+3:], base.Logger()) - kubernetes2.ShouldPut(cmeta, "container.runtime", s.ContainerID[:split], base.Logger()) - } + kubernetes2.ShouldPut(cmeta, "container.runtime", s.ContainerID[:split], base.Logger()) } - - id := join(pod.GetObjectMeta().GetNamespace(), pod.GetObjectMeta().GetName(), container.Name) - cmeta.DeepUpdate(pmeta) - m[id] = cmeta } - }, - // delete - func(m map[string]mapstr.M, r kubernetes.Resource) { - pod, ok := r.(*kubernetes.Pod) - if !ok { - base.Logger().Debugf("Error while casting event: %s", ok) - } - podId := NewPodId(pod.Namespace, pod.Name) - nodeStore := metricsRepo.GetNodeStore(pod.Spec.NodeName) - nodeStore.DeletePodStore(podId) - for _, container := range append(pod.Spec.Containers, pod.Spec.InitContainers...) { - id := join(pod.ObjectMeta.GetNamespace(), pod.GetObjectMeta().GetName(), container.Name) - delete(m, id) - } - }, - // index - func(e mapstr.M) string { - return join(getString(e, mb.ModuleDataKey+".namespace"), getString(e, mb.ModuleDataKey+".pod.name"), getString(e, "name")) - }, - ) - - return enricher -} + id := join(pod.GetObjectMeta().GetNamespace(), pod.GetObjectMeta().GetName(), container.Name) + cmeta.DeepUpdate(pmeta) -func getResourceMetadataWatchers( - config *kubernetesConfig, - resource kubernetes.Resource, - client k8sclient.Interface, nodeScope bool) (kubernetes.Watcher, kubernetes.Watcher, kubernetes.Watcher) { - - var err error - - options := kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - Namespace: config.Namespace, - } - - log := logp.NewLogger(selector) - - // Watch objects in the node only - if nodeScope { - nd := &kubernetes.DiscoverKubernetesNodeParams{ - ConfigHost: config.Node, - Client: client, - IsInCluster: kubernetes.IsInCluster(config.KubeConfig), - HostUtils: &kubernetes.DefaultDiscoveryUtils{}, - } - options.Node, err = kubernetes.DiscoverKubernetesNode(log, nd) - if err != nil { - logp.Err("Couldn't discover kubernetes node: %s", err) - return nil, nil, nil + metadataEvents[id] = cmeta } + return metadataEvents } - log.Debugf("Initializing a new Kubernetes watcher using host: %v", config.Node) + deleteFunc := func(r kubernetes.Resource) []string { + ids := make([]string, 0) + pod, ok := r.(*kubernetes.Pod) + if !ok { + base.Logger().Debugf("Error while casting event: %s", ok) + } + podId := NewPodId(pod.Namespace, pod.Name) + nodeStore := metricsRepo.GetNodeStore(pod.Spec.NodeName) + nodeStore.DeletePodStore(podId) - watcher, err := kubernetes.NewNamedWatcher("resource_metadata_enricher", client, resource, options, nil) - if err != nil { - logp.Err("Error initializing Kubernetes watcher: %s", err) - return nil, nil, nil - } + for _, container := range append(pod.Spec.Containers, pod.Spec.InitContainers...) { + id := join(pod.ObjectMeta.GetNamespace(), pod.GetObjectMeta().GetName(), container.Name) + ids = append(ids, id) + } - nodeWatcher, err := kubernetes.NewNamedWatcher("resource_metadata_enricher_node", client, &kubernetes.Node{}, options, nil) - if err != nil { - logp.Err("Error creating watcher for %T due to error %+v", &kubernetes.Node{}, err) - return watcher, nil, nil + return ids } - namespaceWatcher, err := kubernetes.NewNamedWatcher("resource_metadata_enricher_namespace", client, &kubernetes.Namespace{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - }, nil) - if err != nil { - logp.Err("Error creating watcher for %T due to error %+v", &kubernetes.Namespace{}, err) - return watcher, nodeWatcher, nil + indexFunc := func(e mapstr.M) string { + return join(getString(e, mb.ModuleDataKey+".namespace"), getString(e, mb.ModuleDataKey+".pod.name"), getString(e, "name")) } - return watcher, nodeWatcher, namespaceWatcher -} + enricher := buildMetadataEnricher( + metricsetName, + PodResource, + resourceWatchers, + config, + updateFunc, + deleteFunc, + indexFunc, + log, + ) -func GetDefaultDisabledMetaConfig() *kubernetesConfig { - return &kubernetesConfig{ - AddMetadata: false, - } + return enricher } func GetValidatedConfig(base mb.BaseMetricSet) (*kubernetesConfig, error) { @@ -531,114 +868,228 @@ func join(fields ...string) string { return strings.Join(fields, ":") } +// buildMetadataEnricher builds and returns a metadata enricher for a given metricset. +// It appends the new enricher to the watcher.enrichers map for the given resource watcher. +// It also updates the add, update and delete event handlers of the watcher in order to retrieve +// the metadata of all enrichers associated to that watcher. func buildMetadataEnricher( - watcher kubernetes.Watcher, - nodeWatcher kubernetes.Watcher, - namespaceWatcher kubernetes.Watcher, - replicasetWatcher kubernetes.Watcher, - jobWatcher kubernetes.Watcher, - update func(map[string]mapstr.M, kubernetes.Resource), - delete func(map[string]mapstr.M, kubernetes.Resource), - index func(e mapstr.M) string) *enricher { - - enricher := enricher{ - metadata: map[string]mapstr.M{}, - index: index, - watcher: watcher, - nodeWatcher: nodeWatcher, - namespaceWatcher: namespaceWatcher, - replicasetWatcher: replicasetWatcher, - jobWatcher: jobWatcher, - } - - watcher.AddEventHandler(kubernetes.ResourceEventHandlerFuncs{ - AddFunc: func(obj interface{}) { - enricher.Lock() - defer enricher.Unlock() - update(enricher.metadata, obj.(kubernetes.Resource)) - }, - UpdateFunc: func(obj interface{}) { - enricher.Lock() - defer enricher.Unlock() - update(enricher.metadata, obj.(kubernetes.Resource)) - }, - DeleteFunc: func(obj interface{}) { - enricher.Lock() - defer enricher.Unlock() - delete(enricher.metadata, obj.(kubernetes.Resource)) - }, - }) - - return &enricher -} + metricsetName string, + resourceName string, + resourceWatchers *Watchers, + config *kubernetesConfig, + updateFunc func(kubernetes.Resource) map[string]mapstr.M, + deleteFunc func(kubernetes.Resource) []string, + indexFunc func(e mapstr.M) string, + log *logp.Logger) *enricher { + + enricher := &enricher{ + metadata: map[string]mapstr.M{}, + index: indexFunc, + updateFunc: updateFunc, + deleteFunc: deleteFunc, + resourceName: resourceName, + metricsetName: metricsetName, + config: config, + log: log, + } -func (m *enricher) Start() { - m.watchersStartedLock.Lock() - defer m.watchersStartedLock.Unlock() - if !m.watchersStarted { - if m.nodeWatcher != nil { - if err := m.nodeWatcher.Start(); err != nil { - logp.Warn("Error starting node watcher: %s", err) + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + // Check if a watcher for this resource already exists. + resourceMetaWatcher := resourceWatchers.metaWatchersMap[resourceName] + if resourceMetaWatcher != nil { + // Append the new enricher to watcher's enrichers map. + resourceMetaWatcher.enrichers[metricsetName] = enricher + + // Check if this shared watcher has already detected resources and collected their + // metadata for another enricher. + // In that case, for each resource, call the updateFunc of the current enricher to + // generate its metadata. This is needed in cases where the watcher has already been + // notified for new/updated resources while the enricher for current metricset has not + // built yet (example is pod, state_pod metricsets). + for key := range resourceMetaWatcher.metadataObjects { + obj, exists, err := resourceMetaWatcher.watcher.Store().GetByKey(key) + if err != nil { + log.Errorf("Error trying to get the object from the store: %s", err) + } else { + if exists { + newMetadataEvents := enricher.updateFunc(obj.(kubernetes.Resource)) + // add the new metadata to the watcher received metadata + for id, metadata := range newMetadataEvents { + enricher.metadata[id] = metadata + } + } } } - if m.namespaceWatcher != nil { - if err := m.namespaceWatcher.Start(); err != nil { - logp.Warn("Error starting namespace watcher: %s", err) - } - } + // AddEventHandler sets add, update and delete methods of watcher. + // Those methods are triggered when an event is detected for a + // resource creation, update or deletion. + resourceMetaWatcher.watcher.AddEventHandler(kubernetes.ResourceEventHandlerFuncs{ + AddFunc: func(obj interface{}) { + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + // Add object(detected resource) to the list of metadata objects of this watcher, + // so it can be used by enrichers created after the event is triggered. + // The identifier of the object is in the form of namespace/name so that + // it can be easily fetched from watcher's store in previous step. + accessor, _ := meta.Accessor(obj.(kubernetes.Resource)) + id := accessor.GetName() + namespace := accessor.GetNamespace() + if namespace != "" { + id = namespace + "/" + id + } + resourceMetaWatcher.metadataObjects[id] = true + // Execute the updateFunc of each enricher associated to thos watcher. + for _, enricher := range resourceMetaWatcher.enrichers { + enricher.Lock() + newMetadataEvents := enricher.updateFunc(obj.(kubernetes.Resource)) + // add the new metadata to the watcher received metadata + for id, metadata := range newMetadataEvents { + enricher.metadata[id] = metadata + } + enricher.Unlock() + } + }, + UpdateFunc: func(obj interface{}) { + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + // Add object to the list of metadata objects of this watcher + accessor, _ := meta.Accessor(obj.(kubernetes.Resource)) + id := accessor.GetName() + namespace := accessor.GetNamespace() + if namespace != "" { + id = namespace + "/" + id + } + resourceMetaWatcher.metadataObjects[id] = true - if m.replicasetWatcher != nil { - if err := m.replicasetWatcher.Start(); err != nil { - logp.Warn("Error starting replicaset watcher: %s", err) - } - } + for _, enricher := range resourceMetaWatcher.enrichers { + enricher.Lock() + updatedMetadataEvents := enricher.updateFunc(obj.(kubernetes.Resource)) + for id, metadata := range updatedMetadataEvents { + enricher.metadata[id] = metadata + } + enricher.Unlock() + } + }, + DeleteFunc: func(obj interface{}) { + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + // Remove object from the list of metadata objects of this watcher + accessor, _ := meta.Accessor(obj.(kubernetes.Resource)) + id := accessor.GetName() + namespace := accessor.GetNamespace() + if namespace != "" { + id = namespace + "/" + id + } + delete(resourceMetaWatcher.metadataObjects, id) + + for _, enricher := range resourceMetaWatcher.enrichers { + enricher.Lock() + ids := enricher.deleteFunc(obj.(kubernetes.Resource)) + // update this watcher events by removing all the metadata[id] + for _, id := range ids { + delete(enricher.metadata, id) + } + enricher.Unlock() + } + }, + }) + } - if m.jobWatcher != nil { - if err := m.jobWatcher.Start(); err != nil { - logp.Warn("Error starting job watcher: %s", err) + return enricher +} + +// Start starts all the watchers associated with a given enricher's resource. +func (e *enricher) Start(resourceWatchers *Watchers) { + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + // Each resource may require multiple watchers. Firstly, we start the + // extra watchers as they are a dependency for the main resource watcher + // For example a pod watcher requires namespace and node watcher to be started + // first. + extras := getExtraWatchers(e.resourceName, e.config.AddResourceMetadata) + for _, extra := range extras { + extraWatcherMeta := resourceWatchers.metaWatchersMap[extra] + if extraWatcherMeta != nil && !extraWatcherMeta.started { + if err := extraWatcherMeta.watcher.Start(); err != nil { + e.log.Warnf("Error starting %s watcher: %s", extra, err) + } else { + extraWatcherMeta.started = true } } + } - err := m.watcher.Start() - if err != nil { - logp.Warn("Error starting Kubernetes watcher: %s", err) + // Start the main watcher if not already started. + // If there is a restartWatcher defined, stop the old watcher if started and start the restartWatcher. + // restartWatcher replaces the old watcher and resourceMetaWatcher.restartWatcher is set to nil. + resourceMetaWatcher := resourceWatchers.metaWatchersMap[e.resourceName] + if resourceMetaWatcher != nil { + if resourceMetaWatcher.restartWatcher != nil { + if resourceMetaWatcher.started { + resourceMetaWatcher.watcher.Stop() + } + if err := resourceMetaWatcher.restartWatcher.Start(); err != nil { + e.log.Warnf("Error restarting %s watcher: %s", e.resourceName, err) + } else { + resourceMetaWatcher.watcher = resourceMetaWatcher.restartWatcher + resourceMetaWatcher.restartWatcher = nil + resourceMetaWatcher.started = true + } + } else { + if !resourceMetaWatcher.started { + if err := resourceMetaWatcher.watcher.Start(); err != nil { + e.log.Warnf("Error starting %s watcher: %s", e.resourceName, err) + } else { + resourceMetaWatcher.started = true + } + } } - m.watchersStarted = true } } -func (m *enricher) Stop() { - m.watchersStartedLock.Lock() - defer m.watchersStartedLock.Unlock() - if m.watchersStarted { - m.watcher.Stop() - - if m.namespaceWatcher != nil { - m.namespaceWatcher.Stop() - } - - if m.nodeWatcher != nil { - m.nodeWatcher.Stop() - } - - if m.replicasetWatcher != nil { - m.replicasetWatcher.Stop() +// Stop removes the enricher's metricset as a user of the associated watchers. +// If no metricset is using the watchers anymore, the watcher gets stopped. +func (e *enricher) Stop(resourceWatchers *Watchers) { + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + resourceMetaWatcher := resourceWatchers.metaWatchersMap[e.resourceName] + if resourceMetaWatcher != nil && resourceMetaWatcher.started { + _, size := removeFromMetricsetsUsing(e.resourceName, e.metricsetName, resourceWatchers) + if size == 0 { + resourceMetaWatcher.watcher.Stop() + resourceMetaWatcher.started = false } + } - if m.jobWatcher != nil { - m.jobWatcher.Stop() + extras := getExtraWatchers(e.resourceName, e.config.AddResourceMetadata) + for _, extra := range extras { + extraMetaWatcher := resourceWatchers.metaWatchersMap[extra] + if extraMetaWatcher != nil && extraMetaWatcher.started { + _, size := removeFromMetricsetsUsing(extra, e.metricsetName, resourceWatchers) + if size == 0 { + extraMetaWatcher.watcher.Stop() + extraMetaWatcher.started = false + } } - - m.watchersStarted = false } } -func (m *enricher) Enrich(events []mapstr.M) { - m.RLock() - defer m.RUnlock() +// Enrich enriches events with metadata saved in the enricher.metadata map +// This method is executed whenever a new event is created and about to be published. +// The enricher's index method is used to retrieve the resource identifier from each event. +func (e *enricher) Enrich(events []mapstr.M) { + e.RLock() + defer e.RUnlock() + for _, event := range events { - if meta := m.metadata[m.index(event)]; meta != nil { + if meta := e.metadata[e.index(event)]; meta != nil { k8s, err := meta.GetValue("kubernetes") if err != nil { continue @@ -648,7 +1099,7 @@ func (m *enricher) Enrich(events []mapstr.M) { continue } - if m.isPod { + if e.isPod { // apply pod meta at metricset level if podMeta, ok := k8sMeta["pod"].(mapstr.M); ok { event.DeepUpdate(podMeta) @@ -672,12 +1123,6 @@ func (m *enricher) Enrich(events []mapstr.M) { } } -type nilEnricher struct{} - -func (*nilEnricher) Start() {} -func (*nilEnricher) Stop() {} -func (*nilEnricher) Enrich([]mapstr.M) {} - func CreateEvent(event mapstr.M, namespace string) (mb.Event, error) { var moduleFieldsMapStr mapstr.M moduleFields, ok := event[mb.ModuleDataKey] diff --git a/metricbeat/module/kubernetes/util/kubernetes_test.go b/metricbeat/module/kubernetes/util/kubernetes_test.go index 92d60b28b2d..b4e528100a6 100644 --- a/metricbeat/module/kubernetes/util/kubernetes_test.go +++ b/metricbeat/module/kubernetes/util/kubernetes_test.go @@ -20,34 +20,451 @@ package util import ( "fmt" "testing" + "time" - k8s "k8s.io/client-go/kubernetes" - "k8s.io/client-go/tools/cache" - - "github.com/stretchr/testify/assert" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "github.com/elastic/elastic-agent-autodiscover/kubernetes" - "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/elastic-agent-libs/mapstr" + "k8s.io/apimachinery/pkg/api/meta" + "k8s.io/apimachinery/pkg/runtime" + k8s "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/cache" kubernetes2 "github.com/elastic/beats/v7/libbeat/autodiscover/providers/kubernetes" -) + "github.com/elastic/elastic-agent-autodiscover/kubernetes/metadata" + conf "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/mapstr" -var ( - logger = logp.NewLogger("kubernetes") + "github.com/stretchr/testify/require" + k8sfake "k8s.io/client-go/kubernetes/fake" + + "github.com/elastic/elastic-agent-autodiscover/kubernetes" + "github.com/elastic/elastic-agent-libs/logp" ) -func TestBuildMetadataEnricher(t *testing.T) { - watcher := mockWatcher{} - nodeWatcher := mockWatcher{} - namespaceWatcher := mockWatcher{} - rsWatcher := mockWatcher{} - jobWatcher := mockWatcher{} +func TestWatchOptions(t *testing.T) { + log := logp.NewLogger("test") + + client := k8sfake.NewSimpleClientset() + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + } + + options, err := getWatchOptions(config, false, client, log) + require.NoError(t, err) + require.Equal(t, options.SyncTimeout, config.SyncPeriod) + require.NotEqual(t, options.Node, config.Node) + + options, err = getWatchOptions(config, true, client, log) + require.NoError(t, err) + require.Equal(t, options.SyncTimeout, config.SyncPeriod) + require.Equal(t, options.Node, config.Node) +} + +func TestCreateWatcher(t *testing.T) { + resourceWatchers := NewWatchers() + + client := k8sfake.NewSimpleClientset() + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + } + log := logp.NewLogger("test") + + options, err := getWatchOptions(config, false, client, log) + require.NoError(t, err) + + created, err := createWatcher(NamespaceResource, &kubernetes.Node{}, *options, client, resourceWatchers, config.Namespace, false) + require.True(t, created) + require.NoError(t, err) + + resourceWatchers.lock.Lock() + require.Equal(t, 1, len(resourceWatchers.metaWatchersMap)) + require.NotNil(t, resourceWatchers.metaWatchersMap[NamespaceResource]) + require.NotNil(t, resourceWatchers.metaWatchersMap[NamespaceResource].watcher) + resourceWatchers.lock.Unlock() + + created, err = createWatcher(NamespaceResource, &kubernetes.Namespace{}, *options, client, resourceWatchers, config.Namespace, true) + require.False(t, created) + require.NoError(t, err) + + resourceWatchers.lock.Lock() + require.Equal(t, 1, len(resourceWatchers.metaWatchersMap)) + require.NotNil(t, resourceWatchers.metaWatchersMap[NamespaceResource]) + require.NotNil(t, resourceWatchers.metaWatchersMap[NamespaceResource].watcher) + resourceWatchers.lock.Unlock() + + created, err = createWatcher(DeploymentResource, &kubernetes.Deployment{}, *options, client, resourceWatchers, config.Namespace, false) + require.True(t, created) + require.NoError(t, err) + + resourceWatchers.lock.Lock() + require.Equal(t, 2, len(resourceWatchers.metaWatchersMap)) + require.NotNil(t, resourceWatchers.metaWatchersMap[DeploymentResource]) + require.NotNil(t, resourceWatchers.metaWatchersMap[NamespaceResource]) + resourceWatchers.lock.Unlock() +} + +func TestAddToMetricsetsUsing(t *testing.T) { + resourceWatchers := NewWatchers() + + client := k8sfake.NewSimpleClientset() + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + } + log := logp.NewLogger("test") + + options, err := getWatchOptions(config, false, client, log) + require.NoError(t, err) + + // Create the new entry with watcher and nil string array first + created, err := createWatcher(DeploymentResource, &kubernetes.Deployment{}, *options, client, resourceWatchers, config.Namespace, false) + require.True(t, created) + require.NoError(t, err) + + resourceWatchers.lock.Lock() + require.NotNil(t, resourceWatchers.metaWatchersMap[DeploymentResource].watcher) + require.Equal(t, []string{}, resourceWatchers.metaWatchersMap[DeploymentResource].metricsetsUsing) + resourceWatchers.lock.Unlock() + + metricsetDeployment := "state_deployment" + addToMetricsetsUsing(DeploymentResource, metricsetDeployment, resourceWatchers) + resourceWatchers.lock.Lock() + require.Equal(t, []string{metricsetDeployment}, resourceWatchers.metaWatchersMap[DeploymentResource].metricsetsUsing) + resourceWatchers.lock.Unlock() + + metricsetContainer := "container" + addToMetricsetsUsing(DeploymentResource, metricsetContainer, resourceWatchers) + resourceWatchers.lock.Lock() + require.Equal(t, []string{metricsetDeployment, metricsetContainer}, resourceWatchers.metaWatchersMap[DeploymentResource].metricsetsUsing) + resourceWatchers.lock.Unlock() +} + +func TestRemoveFromMetricsetsUsing(t *testing.T) { + resourceWatchers := NewWatchers() + + client := k8sfake.NewSimpleClientset() + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + } + log := logp.NewLogger("test") + + options, err := getWatchOptions(config, false, client, log) + require.NoError(t, err) + + // Create the new entry with watcher and nil string array first + created, err := createWatcher(DeploymentResource, &kubernetes.Deployment{}, *options, client, resourceWatchers, config.Namespace, false) + require.True(t, created) + require.NoError(t, err) + + metricsetDeployment := "state_deployment" + metricsetPod := "state_pod" + addToMetricsetsUsing(DeploymentResource, metricsetDeployment, resourceWatchers) + addToMetricsetsUsing(DeploymentResource, metricsetPod, resourceWatchers) + + resourceWatchers.lock.Lock() + defer resourceWatchers.lock.Unlock() + + removed, size := removeFromMetricsetsUsing(DeploymentResource, metricsetDeployment, resourceWatchers) + require.True(t, removed) + require.Equal(t, 1, size) + + removed, size = removeFromMetricsetsUsing(DeploymentResource, metricsetDeployment, resourceWatchers) + require.False(t, removed) + require.Equal(t, 1, size) + + removed, size = removeFromMetricsetsUsing(DeploymentResource, metricsetPod, resourceWatchers) + require.True(t, removed) + require.Equal(t, 0, size) +} + +func TestCreateAllWatchers(t *testing.T) { + resourceWatchers := NewWatchers() + + client := k8sfake.NewSimpleClientset() + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + AddResourceMetadata: &metadata.AddResourceMetadataConfig{ + CronJob: false, + Deployment: true, + }, + } + log := logp.NewLogger("test") + + // Start watchers based on a resource that does not exist should cause an error + err := createAllWatchers(client, "does-not-exist", "does-not-exist", false, config, log, resourceWatchers) + require.Error(t, err) + resourceWatchers.lock.Lock() + require.Equal(t, 0, len(resourceWatchers.metaWatchersMap)) + resourceWatchers.lock.Unlock() + + // Start watcher for a resource that requires other resources, should start all the watchers + metricsetPod := "pod" + extras := getExtraWatchers(PodResource, config.AddResourceMetadata) + err = createAllWatchers(client, metricsetPod, PodResource, false, config, log, resourceWatchers) + require.NoError(t, err) + + // Check that all the required watchers are in the map + resourceWatchers.lock.Lock() + // we add 1 to the expected result to represent the resource itself + require.Equal(t, len(extras)+1, len(resourceWatchers.metaWatchersMap)) + for _, extra := range extras { + require.NotNil(t, resourceWatchers.metaWatchersMap[extra]) + } + resourceWatchers.lock.Unlock() +} + +func TestCreateMetaGen(t *testing.T) { + resourceWatchers := NewWatchers() + + commonMetaConfig := metadata.Config{} + commonConfig, err := conf.NewConfigFrom(&commonMetaConfig) + require.NoError(t, err) + + log := logp.NewLogger("test") + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + AddResourceMetadata: &metadata.AddResourceMetadataConfig{ + CronJob: false, + Deployment: true, + }, + } + client := k8sfake.NewSimpleClientset() + + _, err = createMetadataGen(client, commonConfig, config.AddResourceMetadata, DeploymentResource, resourceWatchers) + // At this point, no watchers were created + require.Error(t, err) + + // Create the watchers necessary for the metadata generator + metricsetDeployment := "state_deployment" + err = createAllWatchers(client, metricsetDeployment, DeploymentResource, false, config, log, resourceWatchers) + require.NoError(t, err) + + // Create the generators, this time without error + _, err = createMetadataGen(client, commonConfig, config.AddResourceMetadata, DeploymentResource, resourceWatchers) + require.NoError(t, err) +} + +func TestCreateMetaGenSpecific(t *testing.T) { + resourceWatchers := NewWatchers() + + commonMetaConfig := metadata.Config{} + commonConfig, err := conf.NewConfigFrom(&commonMetaConfig) + require.NoError(t, err) + + log := logp.NewLogger("test") + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + AddResourceMetadata: &metadata.AddResourceMetadataConfig{ + CronJob: false, + Deployment: true, + }, + } + client := k8sfake.NewSimpleClientset() + + // For pod: + metricsetPod := "pod" + + _, err = createMetadataGenSpecific(client, commonConfig, config.AddResourceMetadata, PodResource, resourceWatchers) + // At this point, no watchers were created + require.Error(t, err) + + // Create the pod resource + the extras + err = createAllWatchers(client, metricsetPod, PodResource, false, config, log, resourceWatchers) + require.NoError(t, err) + + _, err = createMetadataGenSpecific(client, commonConfig, config.AddResourceMetadata, PodResource, resourceWatchers) + require.NoError(t, err) + + // For service: + _, err = createMetadataGenSpecific(client, commonConfig, config.AddResourceMetadata, ServiceResource, resourceWatchers) + // At this point, no watchers were created + require.Error(t, err) + + // Create the service resource + the extras + metricsetService := "state_service" + err = createAllWatchers(client, metricsetService, ServiceResource, false, config, log, resourceWatchers) + require.NoError(t, err) + + _, err = createMetadataGenSpecific(client, commonConfig, config.AddResourceMetadata, ServiceResource, resourceWatchers) + require.NoError(t, err) +} + +func TestBuildMetadataEnricher_Start_Stop(t *testing.T) { + resourceWatchers := NewWatchers() + + metricsetNamespace := "state_namespace" + metricsetDeployment := "state_deployment" + + resourceWatchers.lock.Lock() + resourceWatchers.metaWatchersMap[NamespaceResource] = &metaWatcher{ + watcher: &mockWatcher{}, + started: false, + metricsetsUsing: []string{metricsetNamespace, metricsetDeployment}, + enrichers: make(map[string]*enricher), + } + resourceWatchers.metaWatchersMap[DeploymentResource] = &metaWatcher{ + watcher: &mockWatcher{}, + started: true, + metricsetsUsing: []string{metricsetDeployment}, + enrichers: make(map[string]*enricher), + } + resourceWatchers.lock.Unlock() + + funcs := mockFuncs{} + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + AddResourceMetadata: &metadata.AddResourceMetadataConfig{ + CronJob: false, + Deployment: false, + }, + } + + log := logp.NewLogger(selector) + + enricherNamespace := buildMetadataEnricher( + metricsetNamespace, + NamespaceResource, + resourceWatchers, + config, + funcs.update, + funcs.delete, + funcs.index, + log, + ) + resourceWatchers.lock.Lock() + watcher := resourceWatchers.metaWatchersMap[NamespaceResource] + require.False(t, watcher.started) + resourceWatchers.lock.Unlock() + + enricherNamespace.Start(resourceWatchers) + resourceWatchers.lock.Lock() + watcher = resourceWatchers.metaWatchersMap[NamespaceResource] + require.True(t, watcher.started) + resourceWatchers.lock.Unlock() + + // Stopping should not stop the watcher because it is still being used by deployment metricset + enricherNamespace.Stop(resourceWatchers) + resourceWatchers.lock.Lock() + watcher = resourceWatchers.metaWatchersMap[NamespaceResource] + require.True(t, watcher.started) + require.Equal(t, []string{metricsetDeployment}, watcher.metricsetsUsing) + resourceWatchers.lock.Unlock() + + // Stopping the deployment watcher should stop now both watchers + enricherDeployment := buildMetadataEnricher( + metricsetDeployment, + DeploymentResource, + resourceWatchers, + config, + funcs.update, + funcs.delete, + funcs.index, + log, + ) + enricherDeployment.Stop(resourceWatchers) + + resourceWatchers.lock.Lock() + watcher = resourceWatchers.metaWatchersMap[NamespaceResource] + + require.False(t, watcher.started) + require.Equal(t, []string{}, watcher.metricsetsUsing) + + watcher = resourceWatchers.metaWatchersMap[DeploymentResource] + require.False(t, watcher.started) + require.Equal(t, []string{}, watcher.metricsetsUsing) + + resourceWatchers.lock.Unlock() +} + +func TestBuildMetadataEnricher_Start_Stop_SameResources(t *testing.T) { + resourceWatchers := NewWatchers() + + metricsetPod := "pod" + metricsetStatePod := "state_pod" + + resourceWatchers.lock.Lock() + resourceWatchers.metaWatchersMap[PodResource] = &metaWatcher{ + watcher: &mockWatcher{}, + started: false, + metricsetsUsing: []string{metricsetStatePod, metricsetPod}, + enrichers: make(map[string]*enricher), + } + resourceWatchers.lock.Unlock() + + funcs := mockFuncs{} + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + AddResourceMetadata: &metadata.AddResourceMetadataConfig{ + CronJob: false, + Deployment: false, + }, + } + + log := logp.NewLogger(selector) + enricherPod := buildMetadataEnricher(metricsetPod, PodResource, resourceWatchers, config, + funcs.update, funcs.delete, funcs.index, log) + resourceWatchers.lock.Lock() + watcher := resourceWatchers.metaWatchersMap[PodResource] + require.False(t, watcher.started) + resourceWatchers.lock.Unlock() + + enricherPod.Start(resourceWatchers) + resourceWatchers.lock.Lock() + watcher = resourceWatchers.metaWatchersMap[PodResource] + require.True(t, watcher.started) + resourceWatchers.lock.Unlock() + + // Stopping should not stop the watcher because it is still being used by state_pod metricset + enricherPod.Stop(resourceWatchers) + resourceWatchers.lock.Lock() + watcher = resourceWatchers.metaWatchersMap[PodResource] + require.True(t, watcher.started) + require.Equal(t, []string{metricsetStatePod}, watcher.metricsetsUsing) + resourceWatchers.lock.Unlock() + + // Stopping the state_pod watcher should stop pod watcher + enricherStatePod := buildMetadataEnricher(metricsetStatePod, PodResource, resourceWatchers, config, + funcs.update, funcs.delete, funcs.index, log) + enricherStatePod.Stop(resourceWatchers) + + resourceWatchers.lock.Lock() + watcher = resourceWatchers.metaWatchersMap[PodResource] + require.False(t, watcher.started) + require.Equal(t, []string{}, watcher.metricsetsUsing) + resourceWatchers.lock.Unlock() +} + +func TestBuildMetadataEnricher_EventHandler(t *testing.T) { + resourceWatchers := NewWatchers() + + resourceWatchers.lock.Lock() + resourceWatchers.metaWatchersMap[PodResource] = &metaWatcher{ + watcher: &mockWatcher{}, + started: false, + metricsetsUsing: []string{"pod"}, + metadataObjects: make(map[string]bool), + enrichers: make(map[string]*enricher), + } + resourceWatchers.lock.Unlock() funcs := mockFuncs{} resource := &v1.Pod{ @@ -60,16 +477,44 @@ func TestBuildMetadataEnricher(t *testing.T) { Namespace: "default", }, } + id := "default/enrich" + metadataObjects := map[string]bool{id: true} + + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + AddResourceMetadata: &metadata.AddResourceMetadataConfig{ + CronJob: false, + Deployment: false, + }, + } + + metricset := "pod" + log := logp.NewLogger(selector) + + enricher := buildMetadataEnricher(metricset, PodResource, resourceWatchers, config, + funcs.update, funcs.delete, funcs.index, log) + resourceWatchers.lock.Lock() + wData := resourceWatchers.metaWatchersMap[PodResource] + mockW := wData.watcher.(*mockWatcher) + require.NotNil(t, mockW.handler) + resourceWatchers.lock.Unlock() - enricher := buildMetadataEnricher(&watcher, &nodeWatcher, &namespaceWatcher, &rsWatcher, &jobWatcher, funcs.update, funcs.delete, funcs.index) - assert.NotNil(t, watcher.handler) + enricher.Start(resourceWatchers) + resourceWatchers.lock.Lock() + watcher := resourceWatchers.metaWatchersMap[PodResource] + require.True(t, watcher.started) + mockW = watcher.watcher.(*mockWatcher) + resourceWatchers.lock.Unlock() - enricher.Start() - assert.True(t, watcher.started) + mockW.handler.OnAdd(resource) - // Emit an event - watcher.handler.OnAdd(resource) - assert.Equal(t, resource, funcs.updated) + resourceWatchers.lock.Lock() + require.Equal(t, metadataObjects, watcher.metadataObjects) + resourceWatchers.lock.Unlock() + + require.Equal(t, resource, funcs.updated) // Test enricher events := []mapstr.M{ @@ -78,7 +523,7 @@ func TestBuildMetadataEnricher(t *testing.T) { } enricher.Enrich(events) - assert.Equal(t, []mapstr.M{ + require.Equal(t, []mapstr.M{ {"name": "unknown"}, { "name": "enrich", @@ -95,7 +540,7 @@ func TestBuildMetadataEnricher(t *testing.T) { enricher.isPod = true enricher.Enrich(events) - assert.Equal(t, []mapstr.M{ + require.Equal(t, []mapstr.M{ {"name": "unknown"}, { "name": "enrich", @@ -106,8 +551,18 @@ func TestBuildMetadataEnricher(t *testing.T) { }, events) // Emit delete event - watcher.handler.OnDelete(resource) - assert.Equal(t, resource, funcs.deleted) + resourceWatchers.lock.Lock() + wData = resourceWatchers.metaWatchersMap[PodResource] + mockW = wData.watcher.(*mockWatcher) + resourceWatchers.lock.Unlock() + + mockW.handler.OnDelete(resource) + + resourceWatchers.lock.Lock() + require.Equal(t, map[string]bool{}, watcher.metadataObjects) + resourceWatchers.lock.Unlock() + + require.Equal(t, resource, funcs.deleted) events = []mapstr.M{ {"name": "unknown"}, @@ -115,10 +570,99 @@ func TestBuildMetadataEnricher(t *testing.T) { } enricher.Enrich(events) - assert.Equal(t, []mapstr.M{ + require.Equal(t, []mapstr.M{ {"name": "unknown"}, {"name": "enrich"}, }, events) + + enricher.Stop(resourceWatchers) + resourceWatchers.lock.Lock() + watcher = resourceWatchers.metaWatchersMap[PodResource] + require.False(t, watcher.started) + resourceWatchers.lock.Unlock() +} + +// Test if we can add metadata from past events to an enricher that is associated +// with a resource that had already triggered the handler functions +func TestBuildMetadataEnricher_EventHandler_PastObjects(t *testing.T) { + log := logp.NewLogger(selector) + + resourceWatchers := NewWatchers() + + resourceWatchers.lock.Lock() + resourceWatchers.metaWatchersMap[PodResource] = &metaWatcher{ + watcher: &mockWatcher{}, + started: false, + metricsetsUsing: []string{"pod", "state_pod"}, + metadataObjects: make(map[string]bool), + enrichers: make(map[string]*enricher), + } + resourceWatchers.lock.Unlock() + + funcs := mockFuncs{} + resource1 := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: types.UID("mockuid"), + Name: "enrich", + Labels: map[string]string{ + "label": "value", + }, + Namespace: "default", + }, + } + id1 := "default/enrich" + resource2 := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: types.UID("mockuid2"), + Name: "enrich-2", + Labels: map[string]string{ + "label": "value", + }, + Namespace: "default-2", + }, + } + id2 := "default-2/enrich-2" + + config := &kubernetesConfig{ + Namespace: "test-ns", + SyncPeriod: time.Minute, + Node: "test-node", + AddResourceMetadata: &metadata.AddResourceMetadataConfig{ + CronJob: false, + Deployment: false, + }, + } + + enricher := buildMetadataEnricher("pod", PodResource, resourceWatchers, config, + funcs.update, funcs.delete, funcs.index, log) + enricher.Start(resourceWatchers) + + resourceWatchers.lock.Lock() + + watcher := resourceWatchers.metaWatchersMap[PodResource] + mockW := watcher.watcher.(*mockWatcher) + resourceWatchers.lock.Unlock() + + mockW.handler.OnAdd(resource1) + + resourceWatchers.lock.Lock() + metadataObjects := map[string]bool{id1: true} + require.Equal(t, metadataObjects, watcher.metadataObjects) + resourceWatchers.lock.Unlock() + + mockW.handler.OnUpdate(resource2) + + resourceWatchers.lock.Lock() + metadataObjects[id2] = true + require.Equal(t, metadataObjects, watcher.metadataObjects) + resourceWatchers.lock.Unlock() + + mockW.handler.OnDelete(resource1) + + resourceWatchers.lock.Lock() + delete(metadataObjects, id1) + require.Equal(t, metadataObjects, watcher.metadataObjects) + resourceWatchers.lock.Unlock() } type mockFuncs struct { @@ -127,7 +671,7 @@ type mockFuncs struct { indexed mapstr.M } -func (f *mockFuncs) update(m map[string]mapstr.M, obj kubernetes.Resource) { +func (f *mockFuncs) update(obj kubernetes.Resource) map[string]mapstr.M { accessor, _ := meta.Accessor(obj) f.updated = obj meta := mapstr.M{ @@ -138,17 +682,19 @@ func (f *mockFuncs) update(m map[string]mapstr.M, obj kubernetes.Resource) { }, }, } + logger := logp.NewLogger("kubernetes") for k, v := range accessor.GetLabels() { kubernetes2.ShouldPut(meta, fmt.Sprintf("kubernetes.%v", k), v, logger) } kubernetes2.ShouldPut(meta, "orchestrator.cluster.name", "gke-4242", logger) - m[accessor.GetName()] = meta + id := accessor.GetName() + return map[string]mapstr.M{id: meta} } -func (f *mockFuncs) delete(m map[string]mapstr.M, obj kubernetes.Resource) { +func (f *mockFuncs) delete(obj kubernetes.Resource) []string { accessor, _ := meta.Accessor(obj) f.deleted = obj - delete(m, accessor.GetName()) + return []string{accessor.GetName()} } func (f *mockFuncs) index(m mapstr.M) string { @@ -158,11 +704,9 @@ func (f *mockFuncs) index(m mapstr.M) string { type mockWatcher struct { handler kubernetes.ResourceEventHandler - started bool } func (m *mockWatcher) Start() error { - m.started = true return nil } @@ -174,6 +718,10 @@ func (m *mockWatcher) AddEventHandler(r kubernetes.ResourceEventHandler) { m.handler = r } +func (m *mockWatcher) GetEventHandler() kubernetes.ResourceEventHandler { + return m.handler +} + func (m *mockWatcher) Store() cache.Store { return nil } diff --git a/x-pack/filebeat/input/internal/httplog/roundtripper.go b/x-pack/filebeat/input/internal/httplog/roundtripper.go index e8d5f8765ca..642245603f8 100644 --- a/x-pack/filebeat/input/internal/httplog/roundtripper.go +++ b/x-pack/filebeat/input/internal/httplog/roundtripper.go @@ -17,10 +17,11 @@ import ( "strconv" "time" - "github.com/elastic/elastic-agent-libs/logp" "go.uber.org/atomic" "go.uber.org/zap" "go.uber.org/zap/zapcore" + + "github.com/elastic/elastic-agent-libs/logp" ) var _ http.RoundTripper = (*LoggingRoundTripper)(nil) From 0959d568d633e38cfa117cd1acf04da78f62424f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 16:20:53 +0200 Subject: [PATCH 086/313] docs: Prepare Changelog for 8.13.1 (#38698) (#38704) * docs: Close changelog for 8.13.1 * Update CHANGELOG.asciidoc --------- Co-authored-by: Pierre HILBERT (cherry picked from commit fd74bf827c8590c03a87c463103b33a6d3b3a326) Co-authored-by: Elastic Machine Co-authored-by: Pierre HILBERT Co-authored-by: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> --- CHANGELOG.asciidoc | 15 +++++++++++++++ CHANGELOG.next.asciidoc | 8 ++++++-- libbeat/docs/release.asciidoc | 1 + 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 265d9a92f23..c44bd187427 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -3,6 +3,21 @@ :issue: https://github.com/elastic/beats/issues/ :pull: https://github.com/elastic/beats/pull/ +[[release-notes-8.13.1]] +=== Beats version 8.13.1 +https://github.com/elastic/beats/compare/v8.13.0\...v8.13.1[View commits] + +==== Bugfixes + +*Filebeat* + +- Fix Filebeat GCS input panic. {pull}38407[38407] + +*Heartbeat* + +- Reset prctl dumpable flag after cap drop. {pull}38269[38269] + + [[release-notes-8.13.0]] === Beats version 8.13.0 https://github.com/elastic/beats/compare/v8.12.2\...v8.13.0[View commits] diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 6421eeb8e26..78801d4a00e 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -101,6 +101,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix setuid root when running under cgroups v2. {pull}37794[37794] - Adjust State loader to only retry when response code status is 5xx {pull}37981[37981] - Reset prctl dumpable flag after cap drop. {pull}38269[38269] + +*Heartbeat* + - Fix reference yaml format. {pull}38584[38584] *Metricbeat* @@ -128,12 +131,10 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Added append Processor which will append concrete values or values from a field to target. {issue}29934[29934] {pull}33364[33364] - dns processor: Add support for forward lookups (`A`, `AAAA`, and `TXT`). {issue}11416[11416] {pull}36394[36394] - [Enhanncement for host.ip and host.mac] Disabling netinfo.enabled option of add-host-metadata processor {pull}36506[36506] -Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will disable the netinfo.enabled option of add_host_metadata processor - allow `queue` configuration settings to be set under the output. {issue}35615[35615] {pull}36788[36788] - Beats will now connect to older Elasticsearch instances by default {pull}36884[36884] - Raise up logging level to warning when attempting to configure beats with unknown fields from autodiscovered events/environments - elasticsearch output now supports `idle_connection_timeout`. {issue}35616[35615] {pull}36843[36843] -Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will disable the netinfo.enabled option of add_host_metadata processor *Auditbeat* @@ -312,6 +313,9 @@ Setting environmental variable ELASTIC_NETINFO:false in Elastic Agent pod will d + + + diff --git a/libbeat/docs/release.asciidoc b/libbeat/docs/release.asciidoc index f62acc92d5d..3b28359b01d 100644 --- a/libbeat/docs/release.asciidoc +++ b/libbeat/docs/release.asciidoc @@ -8,6 +8,7 @@ This section summarizes the changes in each release. Also read <> for more detail about changes that affect upgrade. +* <> * <> * <> * <> From 0ce396cba6114d1107e6eb7fddbc8259dcbe7371 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Thu, 4 Apr 2024 14:45:03 +0200 Subject: [PATCH 087/313] [CI] Comment trigger commands for main beats pipeline (#38707) * [CI] Comment trigger commands for main beats pipeline * Removed /package trigger --- .buildkite/pull-requests.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index abf9580c208..11fad2d1814 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -9,9 +9,9 @@ "set_commit_status": true, "build_on_commit": true, "build_on_comment": true, - "trigger_comment_regex": "^/test .*$", - "always_trigger_comment_regex": "^/test .*$", - "skip_ci_labels": [ ], + "trigger_comment_regex": "^/(?:test)", + "always_trigger_comment_regex": "^/(?:test)", + "skip_ci_labels": ["skip-ci"], "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": [ ] From 84ba1aba2bce84ceca19ff18f2ff759636f0fce1 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Thu, 4 Apr 2024 14:46:41 -0400 Subject: [PATCH 088/313] .golangci.yml- Disallow OSS -> x-pack dependencies (#38720) According to LICENSE.txt, the Beats project uses both Apache 2.0 (OSS) and Elastic licenses. The OSS code may not depend on the Elastic License code otherwise the OSS-only binaries become tainted. This makes golangci-lint emit warnings for OSS code that depends on x-pack code. Closes #38719 --- .golangci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.golangci.yml b/.golangci.yml index 4fd7b93f1b1..fc9f9e0fda0 100755 --- a/.golangci.yml +++ b/.golangci.yml @@ -66,9 +66,19 @@ linters: - wastedassign # wastedassign finds wasted assignment statements. - gomodguard # check for blocked dependencies - prealloc # Finds slice declarations that could potentially be pre-allocated + - depguard # all available settings of specific linters linters-settings: + depguard: + rules: + apache-licensed-code: + list-mode: lax + files: + - '!**/x-pack/**/*.go' + deny: + - pkg: github.com/elastic/beats/v7/x-pack + desc: Apache 2.0 licensed code cannot depend on Elastic licensed code (x-pack/). errcheck: # report about not checking of errors in type assertions: `a := b.(MyStruct)`; check-type-assertions: false From 80dab50f0ce3dafe3125a0587db9465dac5d4fa2 Mon Sep 17 00:00:00 2001 From: Siarhei Harbuz <87968844+sharbuz@users.noreply.github.com> Date: Fri, 5 Apr 2024 11:08:01 +0300 Subject: [PATCH 089/313] replace default images (#38583) * replace default images -------------------------- Signed-off-by: Alexandros Sapranidis Co-authored-by: Alexandros Sapranidis --- .buildkite/auditbeat/auditbeat-pipeline.yml | 27 +- .../auditbeat/generate_auditbeat_pipeline.sh | 216 -------------- .buildkite/filebeat/filebeat-pipeline.yml | 25 +- .buildkite/heartbeat/heartbeat-pipeline.yml | 50 ++-- .buildkite/hooks/pre-command | 4 +- .buildkite/libbeat/pipeline.libbeat.yml | 18 +- .buildkite/metricbeat/pipeline.yml | 26 +- .buildkite/packetbeat/pipeline.packetbeat.yml | 31 +- .buildkite/scripts/cloud_tests.sh | 52 +++- .buildkite/scripts/common.sh | 30 +- .../scripts/generate_auditbeat_pipeline.sh | 265 +++++++++++++++++ .../scripts/generate_filebeat_pipeline.sh | 266 ++++++++++++++++++ .../scripts/generate_libbeat_pipeline.sh | 58 +++- .../scripts/generate_metricbeat_pipeline.sh | 121 +++++--- .../scripts/generate_packetbeat_pipeline.sh | 116 +++++--- .../scripts/generate_winlogbeat_pipeline.sh | 64 +++-- .../generate_xpack_auditbeat_pipeline.sh | 67 ++++- .../generate_xpack_dockerlogbeat_pipeline.sh | 25 +- .../generate_xpack_filebeat_pipeline.sh | 80 +++++- .../generate_xpack_heartbeat_pipeline.sh | 56 +++- .../generate_xpack_libbeat_pipeline.sh | 98 ++++--- .../generate_xpack_metricbeat_pipeline.sh | 133 +++++---- .../generate_xpack_osquerybeat_pipeline.sh | 50 +++- .../generate_xpack_packetbeat_pipeline.sh | 84 ++++-- .../generate_xpack_winlogbeat_pipeline.sh | 40 ++- .buildkite/scripts/go_int_tests.sh | 12 - .buildkite/scripts/packaging/package-step.sh | 4 +- .buildkite/scripts/py_int_tests.sh | 13 - .buildkite/scripts/setenv.sh | 40 +-- .buildkite/scripts/win_unit_tests.ps1 | 188 ------------- .buildkite/winlogbeat/pipeline.winlogbeat.yml | 23 +- .../x-pack/pipeline.xpack.auditbeat.yml | 33 ++- .../x-pack/pipeline.xpack.dockerlogbeat.yml | 27 +- .buildkite/x-pack/pipeline.xpack.filebeat.yml | 32 ++- .../x-pack/pipeline.xpack.heartbeat.yml | 32 ++- .buildkite/x-pack/pipeline.xpack.libbeat.yml | 30 +- .../x-pack/pipeline.xpack.metricbeat.yml | 32 ++- .../x-pack/pipeline.xpack.osquerybeat.yml | 29 +- .../x-pack/pipeline.xpack.packetbeat.yml | 32 ++- .../x-pack/pipeline.xpack.winlogbeat.yml | 19 +- 40 files changed, 1616 insertions(+), 932 deletions(-) delete mode 100644 .buildkite/auditbeat/generate_auditbeat_pipeline.sh create mode 100644 .buildkite/scripts/generate_auditbeat_pipeline.sh create mode 100644 .buildkite/scripts/generate_filebeat_pipeline.sh delete mode 100755 .buildkite/scripts/go_int_tests.sh delete mode 100755 .buildkite/scripts/py_int_tests.sh delete mode 100644 .buildkite/scripts/win_unit_tests.ps1 diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index a8def81f1fa..edbb600e385 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -2,21 +2,28 @@ name: "beats-auditbeat" env: - BEATS_PROJECT_NAME: "auditbeat" - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + BEATS_PROJECT_NAME: "auditbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_MACOS_ARM: "generic-13-ventura-arm" - GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" - GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" - GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: - input: "Input Parameters" @@ -62,7 +69,9 @@ steps: - label: ":linux: Load dynamic auditbeat pipeline" key: "auditbeat-pipeline" - command: ".buildkite/auditbeat/generate_auditbeat_pipeline.sh" + command: ".buildkite/scripts/generate_auditbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/auditbeat/generate_auditbeat_pipeline.sh b/.buildkite/auditbeat/generate_auditbeat_pipeline.sh deleted file mode 100644 index 56befb51d25..00000000000 --- a/.buildkite/auditbeat/generate_auditbeat_pipeline.sh +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.auditbeat-dynamic.yml" - -# TODO: steps: must be always included -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - group: "Auditbeat Mandatory Testing" - key: "mandatory-tests" - - steps: - - label: ":ubuntu: Unit Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Auditbeat: linux/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":rhel: Unit Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Auditbeat: rhel/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_RHEL9}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-2016 Unit Tests" - key: "windows-2016" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Auditbeat: windows-2016/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-2022 Unit Tests" - key: "windows-2022" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Auditbeat: windows-2022/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":linux: Crosscompile" - command: - - "make -C auditbeat crosscompile" - env: - GOX_FLAGS: "-arch amd64" - notify: - - github_commit_status: - context: "Auditbeat: Crosscompile" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "macos-unit-tests-extended" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Auditbeat: MacOS Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":mac: MacOS ARM Unit Tests" - key: "macos-arm64-unit-tests-extended" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Auditbeat: MacOS ARM Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_ARM}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: ARM Ubuntu Unit Tests" - key: "extended-arm64-unit-test" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Auditbeat: Unit Tests ARM" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - -YAML -fi - -if are_conditions_met_win_tests; then - cat >> $pipelineName <<- YAML - - group: "Windows Extended Testing" - key: "extended-tests-win" - - steps: - - label: ":windows:-2019 Unit Tests" - key: "windows-2019-extended" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Auditbeat: Win-2019 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-11 Unit Tests" - key: "windows-11-extended" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Auditbeat: Win-11 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-10 Unit Tests" - key: "windows-10-extended" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Auditbeat: Win-10 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then -cat >> $pipelineName <<- YAML - - group: "Packaging" - key: "packaging" - depends_on: - - "mandatory-tests" - - steps: - - label: Package pipeline - commands: ".buildkite/scripts/packaging/package-step.sh" - notify: - - github_commit_status: - context: "Auditbeat: Packaging" - -YAML -fi - -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 9daeef287d9..a22e96c974a 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -2,20 +2,27 @@ name: "beats-filebeat" env: + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" BEATS_PROJECT_NAME: "filebeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_MACOS_ARM: "generic-13-ventura-arm" - GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" - GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" - GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: - input: "Input Parameters" @@ -61,7 +68,9 @@ steps: - label: ":linux: Load dynamic filebeat pipeline" key: "filebeat-pipeline" - command: ".buildkite/filebeat/generate_filebeat_pipeline.sh" + command: ".buildkite/scripts/generate_filebeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index e63fb1c60e2..9b1ea1984a7 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -4,12 +4,12 @@ env: BEATS_PROJECT_NAME: "heartbeat" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_MACOS_ARM: "generic-13-ventura-arm" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" @@ -17,6 +17,10 @@ env: GCP_WIN_MACHINE_TYPE: "n2-standard-8" AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + #Packaging + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PACKAGING_ARM_PLATFORMS: "linux/arm64" + steps: - group: "Heartbeat Mandatory Testing" key: "mandatory-tests" @@ -24,7 +28,7 @@ steps: steps: - label: ":ubuntu: Unit Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" notify: - github_commit_status: context: "Heartbeat: ubuntu/Unit Tests" @@ -37,7 +41,7 @@ steps: - "heartbeat/build/*.json" - label: ":rhel:-9 Unit Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" notify: - github_commit_status: context: "Heartbeat: rhel-9/Unit Tests" @@ -51,10 +55,12 @@ steps: - label: ":windows:-2016 Unit Test" key: "windows-2016" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest notify: - github_commit_status: - context: "Heartbeat: windows-2016/Unit Tests" + context: "Heartbeat: Windows 2016/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -66,10 +72,12 @@ steps: - label: ":windows:-2022 Unit Test" key: "windows-2022" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest notify: - github_commit_status: - context: "Heartbeat: windows-2022/Unit Tests" + context: "Heartbeat: Windows 2022/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -80,7 +88,7 @@ steps: - "heartbeat/build/*.json" - label: ":ubuntu: Go Integration Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage goIntegTest" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" notify: - github_commit_status: context: "Heartbeat: Go Integration Tests" @@ -93,7 +101,7 @@ steps: - "heartbeat/build/*.json" - label: ":ubuntu: Python Integration Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage pythonIntegTest" + command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" notify: - github_commit_status: context: "Heartbeat: Python Integration Tests" @@ -113,7 +121,7 @@ steps: - label: ":linux: ARM64 Unit Tests" key: "arm-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for arm" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" notify: - github_commit_status: context: "Heartbeat: Unit Tests ARM" @@ -126,7 +134,7 @@ steps: - label: ":mac: MacOS Unit Tests" key: "macos-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" notify: - github_commit_status: context: "Heartbeat: MacOS Unit Tests" @@ -138,7 +146,7 @@ steps: - label: ":mac: MacOS ARM Unit Tests" key: "macos-extended-arm" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" notify: - github_commit_status: context: "Heartbeat: MacOS ARM Unit Tests" @@ -154,10 +162,12 @@ steps: steps: - label: ":windows:-2019 Unit Tests" key: "windows-extended-2019" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest notify: - github_commit_status: - context: "Heartbeat: Win-2019 Unit Tests" + context: "Heartbeat: Windows 2019/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -169,10 +179,12 @@ steps: - label: ":windows:-11 Unit Tests" key: "windows-extended-11" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest notify: - github_commit_status: - context: "Heartbeat: Win-11 Unit Tests" + context: "Heartbeat: Windows 11/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -184,10 +196,12 @@ steps: - label: ":windows:-10 Unit Tests" key: "windows-extended-10" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest notify: - github_commit_status: - context: "Heartbeat: Win-10 Unit Tests" + context: "Heartbeat: Windows 10/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_10}" diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 5f625b35c59..52bee3fb674 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -9,11 +9,13 @@ source .buildkite/env-scripts/util.sh AWS_SERVICE_ACCOUNT_SECRET_PATH="kv/ci-shared/platform-ingest/aws_account_auth" PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-ingest-ci-service-account" DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" -#PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/private_ci_artifacts_gcs_credentials" GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then source .buildkite/env-scripts/env.sh + if [[ -z "${GO_VERSION-""}" ]]; then + export GO_VERSION=$(cat "${WORKSPACE}/.go-version") + fi # Images with prefix "platform-ingest-beats-*" has Go pre-setup. # Image itself takes care of Go version download/installation based on .go-version file diff --git a/.buildkite/libbeat/pipeline.libbeat.yml b/.buildkite/libbeat/pipeline.libbeat.yml index 83fda5662c7..46ddeca92a4 100644 --- a/.buildkite/libbeat/pipeline.libbeat.yml +++ b/.buildkite/libbeat/pipeline.libbeat.yml @@ -2,13 +2,19 @@ name: "beats-libbeat" env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "core-ubuntu-2004-aarch64" - GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" - GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" - GCP_WIN_MACHINE_TYPE: "n2-standard-8" AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" BEATS_PROJECT_NAME: "libbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -40,6 +46,8 @@ steps: - label: ":linux: Load dynamic Libbeat pipeline" key: "libbeat-pipeline" command: ".buildkite/scripts/generate_libbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index 04f3b44575e..c7dcc01e625 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -2,20 +2,26 @@ name: "beats-metricbeat" env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "core-ubuntu-2004-aarch64" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" BEATS_PROJECT_NAME: "metricbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -47,6 +53,8 @@ steps: - label: ":linux: Load dynamic metricbeat pipeline" key: "metricbeat-pipeline" command: ".buildkite/scripts/generate_metricbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index 8e606e16622..9247b144667 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -2,20 +2,27 @@ name: "beats-packetbeat" env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "core-ubuntu-2004-aarch64" - IMAGE_RHEL9_X86_64: "family/core-rhel-9" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" + BEATS_PROJECT_NAME: "packetbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "packetbeat" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -55,6 +62,8 @@ steps: - label: ":linux: Load dynamic packetbeat pipeline" key: "packetbeat-pipeline" command: ".buildkite/scripts/generate_packetbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/scripts/cloud_tests.sh b/.buildkite/scripts/cloud_tests.sh index d96baf670a9..3ca52305188 100755 --- a/.buildkite/scripts/cloud_tests.sh +++ b/.buildkite/scripts/cloud_tests.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +set -euo pipefail # What Terraform Module will run if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then @@ -7,19 +8,52 @@ elif [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then export MODULE_DIR="x-pack/filebeat/input/awss3/_meta/terraform" fi -source .buildkite/scripts/install_tools.sh +teardown() { + popd + # Teardown resources after using them + echo "~~~ Terraform Cleanup" + tf_cleanup "${MODULE_DIR}" #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK -set -euo pipefail + echo "~~~ Docker Compose Cleanup" + docker-compose -f .ci/jobs/docker-compose.yml down -v #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK +} + +tf_cleanup() { + DIRECTORY=${1:-.} -trap 'teardown || true; unset_secrets' EXIT + for tfstate in $(find $DIRECTORY -name terraform.tfstate); do + cd $(dirname $tfstate) + terraform init + if ! terraform destroy -auto-approve; then + echo "+++ Failed to Terraform destroy the resources" + fi + cd - + done +} + +trap 'teardown' EXIT # Prepare the cloud resources using Terraform -startCloudTestEnv "${MODULE_DIR}" +#startCloudTestEnv "${MODULE_DIR}" +echo "~~~ Loading creds" +set +o xtrace +export AWS_ACCESS_KEY_ID=$BEATS_AWS_ACCESS_KEY +export AWS_SECRET_ACCESS_KEY=$BEATS_AWS_SECRET_KEY +export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}aws" +set -o xtrace + +echo "~~~ Run docker-compose services for emulated cloud env" +docker-compose -f .ci/jobs/docker-compose.yml up -d #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK +echo "~~~ Initialize TF cloud resources" +pushd "$MODULE_DIR" +export TF_VAR_BRANCH=$(echo "${BUILDKITE_BRANCH}" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9-]/-/g') +export TF_VAR_BUILD_ID="${BUILDKITE_BUILD_ID}" +export TF_VAR_CREATED_DATE=$(date +%s) +export TF_VAR_ENVIRONMENT="ci" +export TF_VAR_REPO="${REPO}" +terraform init && terraform apply -auto-approve # Run tests -echo "--- Run Cloud Tests for $BEATS_PROJECT_NAME" -pushd "${BEATS_PROJECT_NAME}" > /dev/null - +echo "~~~ Run Cloud Tests for $BEATS_PROJECT_NAME" +pushd "${BEATS_PROJECT_NAME}" mage build test - -popd > /dev/null diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 3c968af2088..3875fc5955d 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -23,6 +23,7 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" [ -z "${run_xpack_winlogbeat+x}" ] && run_xpack_winlogbeat="$(buildkite-agent meta-data get run_xpack_winlogbeat --default "false")" [ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" +[ -z "${run_xpack_dockerlogbeat+x}" ] && run_xpack_dockerlogbeat="$(buildkite-agent meta-data get run_xpack_dockerlogbeat --default "false")" [ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" [ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" [ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" @@ -63,7 +64,7 @@ auditbeat_changeset=( filebeat_changeset=( "^filebeat/.*" - ) + ) metricbeat_changeset=( "^metricbeat/.*" @@ -195,7 +196,7 @@ case "${BUILDKITE_PIPELINE_SLUG}" in BEAT_CHANGESET_REFERENCE=${xpack_winlogbeat_changeset[@]} ;; *) - echo "The changeset for the ${BUILDKITE_PIPELINE_SLUG} pipeline hasn't been defined yet." + echo "~~~ The changeset for the ${BUILDKITE_PIPELINE_SLUG} pipeline hasn't been defined yet." ;; esac @@ -210,7 +211,7 @@ check_and_set_beat_vars() { TRIGGER_SPECIFIC_AWS_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_aws_tests" TRIGGER_SPECIFIC_MACOS_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_macos_tests" TRIGGER_SPECIFIC_WIN_TESTS="run_${BEATS_XPACK_PROJECT_NAME}_win_tests" - echo "Beats project name is $BEATS_XPACK_PROJECT_NAME" + echo "--- Beats project name is $BEATS_XPACK_PROJECT_NAME" mandatory_changeset=( "${BEAT_CHANGESET_REFERENCE[@]}" "${xpack_changeset[@]}" @@ -223,7 +224,7 @@ check_and_set_beat_vars() { TRIGGER_SPECIFIC_AWS_TESTS="run_${BEATS_PROJECT_NAME}_aws_tests" TRIGGER_SPECIFIC_MACOS_TESTS="run_${BEATS_PROJECT_NAME}_macos_tests" TRIGGER_SPECIFIC_WIN_TESTS="run_${BEATS_PROJECT_NAME}_win_tests" - echo "Beats project name is $BEATS_PROJECT_NAME" + echo "--- Beats project name is $BEATS_PROJECT_NAME" mandatory_changeset=( "${BEAT_CHANGESET_REFERENCE[@]}" "${oss_changeset[@]}" @@ -251,19 +252,6 @@ with_docker_compose() { docker-compose version } -with_Terraform() { - echo "Setting up the Terraform environment..." - local path_to_file="${WORKSPACE}/terraform.zip" - create_workspace - check_platform_architeture - retry 5 curl -sSL -o ${path_to_file} "https://releases.hashicorp.com/terraform/${ASDF_TERRAFORM_VERSION}/terraform_${ASDF_TERRAFORM_VERSION}_${platform_type_lowercase}_${go_arch_type}.zip" - unzip -q ${path_to_file} -d ${BIN}/ - rm ${path_to_file} - chmod +x ${BIN}/terraform - export PATH="${BIN}:${PATH}" - terraform version -} - create_workspace() { if [[ ! -d "${BIN}" ]]; then mkdir -p "${BIN}" @@ -466,7 +454,7 @@ are_conditions_met_macos_tests() { } are_conditions_met_win_tests() { - if are_conditions_met_mandatory_tests; then + if are_conditions_met_mandatory_tests; then if [[ "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_WIN_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_WIN_LABEL} || "${!TRIGGER_SPECIFIC_WIN_TESTS}" == "true" ]]; then return 0 @@ -529,7 +517,11 @@ defineModuleFromTheChangeSet() { fi done if [[ -z "$changed_modules" ]]; then # TODO: remove this condition and uncomment the line below when the issue https://github.com/elastic/ingest-dev/issues/2993 is solved - export MODULE="aws" + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + export MODULE="aws" + else + export MODULE="kubernetes" + fi else export MODULE="${changed_modules}" # TODO: remove this line and uncomment the line below when the issue https://github.com/elastic/ingest-dev/issues/2993 is solved # export MODULE="${changed_modules}" # TODO: uncomment the line when the issue https://github.com/elastic/ingest-dev/issues/2993 is solved diff --git a/.buildkite/scripts/generate_auditbeat_pipeline.sh b/.buildkite/scripts/generate_auditbeat_pipeline.sh new file mode 100644 index 00000000000..d514c5d79d8 --- /dev/null +++ b/.buildkite/scripts/generate_auditbeat_pipeline.sh @@ -0,0 +1,265 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.auditbeat-dynamic.yml" + +# TODO: steps: must be always included +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + +steps: + - group: "Mandatory Testing" + key: "mandatory-tests" + + steps: + - label: ":ubuntu: Ubuntu Unit Tests" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":rhel: RHEL Unit Tests" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_RHEL9}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":linux: Crosscompile" + command: "make -C $BEATS_PROJECT_NAME crosscompile" + env: + GOX_FLAGS: "-arch amd64" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Crosscompile" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +echo "Check and add the Extended Tests into the pipeline" + +if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: + +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "macos-unit-tests-extended" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":mac: MacOS ARM Unit Tests" + key: "macos-arm64-unit-tests-extended" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS ARM Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + +YAML +fi + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + - label: ":linux: Ubuntu ARM Unit Tests" + key: "extended-arm64-unit-test" + command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + +YAML +fi + +if are_conditions_met_win_tests; then + cat >> $pipelineName <<- YAML + - group: "Windows Extended Testing" + key: "extended-tests-win" + steps: + - label: ":windows: Windows 2019 Unit Tests" + key: "extended-win-2019-unit-tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" + + - label: ":windows: Windows 10 Unit Tests" + key: "extended-win-10-unit-tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + key: "extended-win-11-unit-tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then +cat >> $pipelineName <<- YAML + - group: "Packaging" + key: "packaging" + depends_on: + - "mandatory-tests" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" + + +YAML +fi + +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName \ No newline at end of file diff --git a/.buildkite/scripts/generate_filebeat_pipeline.sh b/.buildkite/scripts/generate_filebeat_pipeline.sh new file mode 100644 index 00000000000..a3fe1108dc3 --- /dev/null +++ b/.buildkite/scripts/generate_filebeat_pipeline.sh @@ -0,0 +1,266 @@ +#!/usr/bin/env bash + +source .buildkite/scripts/common.sh + +set -euo pipefail + +pipelineName="pipeline.filebeat-dynamic.yml" + +# TODO: steps: must be always included +echo "Add the mandatory and extended tests without additional conditions into the pipeline" +if are_conditions_met_mandatory_tests; then + cat > $pipelineName <<- YAML + + +steps: + - group: "Mandatory Testing" + key: "mandatory-tests" + + steps: + - label: ":ubuntu: Ubuntu Unit Tests" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ununtu Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + + - label: ":ubuntu: Ubuntu Go Integration Tests" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + + - label: ":ubuntu: Ubuntu Python Integration Tests" + command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Python Integration Tests" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + + - label: ":windows: Windows 2016 Unit Tests" + key: "windows-2016-unit-tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows: Windows 2022 Unit Tests" + key: "windows-2022-unit-tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + +YAML +else + echo "The conditions don't match to requirements for generating pipeline steps." + exit 0 +fi + +echo "Check and add the Extended Tests into the pipeline" + +if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - group: "Extended Tests" + key: "extended-tests" + steps: +YAML +fi + +if are_conditions_met_macos_tests; then + cat >> $pipelineName <<- YAML + + - label: ":mac: MacOS Unit Tests" + key: "macos-unit-tests-extended" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":mac: MacOS ARM Unit Tests" + key: "macos-arm64-unit-tests-extended" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS ARM Unit Tests" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" +YAML +fi + +if are_conditions_met_arm_tests; then + cat >> $pipelineName <<- YAML + + - label: ":linux: Ubuntu ARM Unit Tests" + key: "extended-arm64-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" +YAML +fi + +if are_conditions_met_win_tests; then + cat >> $pipelineName <<- YAML + + - group: "Windows Extended Testing" + key: "extended-tests-win" + steps: + - label: ":windows: Windows 2019 Unit Tests" + key: "windows-extended-2019" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":windows: Windows 11 Unit Tests" + key: "windows-extended-11" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + + - label: ":windows: Windows 10 Unit Tests" + key: "windows-extended-10" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" +YAML +fi + +echo "Check and add the Packaging into the pipeline" +if are_conditions_met_packaging; then +cat >> $pipelineName <<- YAML + + - group: "Packaging" + key: "packaging" + depends_on: + - "mandatory-tests" + + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" + +YAML +fi + +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P + +echo "--- Loading dynamic steps" +buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_libbeat_pipeline.sh b/.buildkite/scripts/generate_libbeat_pipeline.sh index 0674d0b186b..37132e74abf 100755 --- a/.buildkite/scripts/generate_libbeat_pipeline.sh +++ b/.buildkite/scripts/generate_libbeat_pipeline.sh @@ -17,48 +17,71 @@ steps: steps: - label: ":linux: Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ununtu Unit Tests" - label: ":go: Go Integration Tests" key: "mandatory-int-test" - command: ".buildkite/scripts/go_int_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" - label: ":python: Python Integration Tests" key: "mandatory-python-int-test" - command: ".buildkite/scripts/py_int_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Python Integration Tests" - label: ":negative_squared_cross_mark: Cross compile" key: "mandatory-cross-compile" - command: ".buildkite/scripts/crosscompile.sh" + command: "make -C $BEATS_PROJECT_NAME crosscompile" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: " ${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Cross compile" - label: ":testengine: Stress Tests" key: "mandatory-stress-test" - command: ".buildkite/scripts/stress_tests.sh" + command: "cd $BEATS_PROJECT_NAME && make STRESS_TEST_OPTIONS='-timeout=20m -race -v -parallel 1' GOTEST_OUTPUT_OPTIONS='| go-junit-report > libbeat-stress-test.xml' stress-tests" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: "${BEATS_PROJECT_NAME}/libbeat-stress-test.xml" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Stress Tests" YAML else @@ -73,20 +96,25 @@ if are_conditions_met_arm_tests; then - group: "Extended Tests" key: "extended-tests" steps: - - label: ":linux: Arm64 Unit Tests" + - label: ":linux: Ubuntu ARM64 Unit Tests" key: "extended-arm64-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM64 Unit Tests" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_metricbeat_pipeline.sh b/.buildkite/scripts/generate_metricbeat_pipeline.sh index 477f8fb25a3..a0386aeb1b7 100755 --- a/.buildkite/scripts/generate_metricbeat_pipeline.sh +++ b/.buildkite/scripts/generate_metricbeat_pipeline.sh @@ -17,42 +17,68 @@ steps: steps: - label: ":linux: Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ununtu Unit Tests" - label: ":go: Go Intergration Tests" key: "mandatory-int-test" - command: ".buildkite/scripts/go_int_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" + env: + MODULE: $MODULE agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" - label: ":python: Python Integration Tests" key: "mandatory-python-int-test" - command: ".buildkite/scripts/py_int_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" + env: + MODULE: $MODULE agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Python Integration Tests" - label: ":negative_squared_cross_mark: Cross compile" key: "mandatory-cross-compile" - command: ".buildkite/scripts/crosscompile.sh" + command: "make -C $BEATS_PROJECT_NAME crosscompile" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Cross compile" - label: ":windows: Windows 2016/2022 Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -65,7 +91,12 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" # echo "Add the extended windows tests into the pipeline" # TODO: ADD conditions from the main pipeline @@ -73,38 +104,30 @@ steps: - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - label: ":windows: Windows 2019 Unit Tests" - key: "extended-win-2019-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-unit-tests" agents: provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Windows 10 Unit Tests" - key: "extended-win-10-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" - - label: ":windows: Windows 11 Unit Tests" - key: "extended-win-11-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" YAML else echo "The conditions don't match to requirements for generating pipeline steps." @@ -124,7 +147,13 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" + YAML fi @@ -143,17 +172,22 @@ if are_conditions_met_packaging; then steps: - label: ":linux: Packaging Linux" key: "packaging-linux" - command: ".buildkite/scripts/packaging.sh" + command: "cd $BEATS_PROJECT_NAME && mage package" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" - command: ".buildkite/scripts/packaging.sh" + command: "cd $BEATS_PROJECT_NAME && mage package" agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" @@ -161,12 +195,15 @@ if are_conditions_met_packaging; then env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_packetbeat_pipeline.sh b/.buildkite/scripts/generate_packetbeat_pipeline.sh index 97bdb531a6b..e4870437ac1 100755 --- a/.buildkite/scripts/generate_packetbeat_pipeline.sh +++ b/.buildkite/scripts/generate_packetbeat_pipeline.sh @@ -17,25 +17,37 @@ steps: steps: - label: ":linux: Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":rhel: RHEL-9 Unit Tests" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" + + - label: ":rhel: RHEL9 Unit Tests" key: "mandatory-rhel9-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -48,43 +60,39 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" - group: "Extended Windowds Tests" key: "extended-win-tests" steps: - - label: ":windows: Win 2019 Unit Tests" - key: "extended-win-2019-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Windows 10 Unit Tests" - key: "extended-win-10-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Windows 11 Unit Tests" - key: "extended-win-11-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-unit-tests" agents: provider: "gcp" - image: "${IMAGE_WIN_11}" + image: "{{matrix.image}}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" YAML else @@ -111,21 +119,31 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" YAML fi if are_conditions_met_arm_tests; then cat >> $pipelineName <<- YAML - - label: ":linux: ARM Ubuntu Unit Tests" + - label: ":linux: Ubuntu ARM Unit Tests" key: "extended-arm64-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" YAML fi @@ -144,30 +162,38 @@ if are_conditions_met_packaging; then steps: - label: ":linux: Packaging Linux" key: "packaging-linux" - command: ".buildkite/scripts/packaging.sh" + command: "cd $BEATS_PROJECT_NAME && mage package" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" - command: ".buildkite/scripts/packaging.sh" + command: "cd $BEATS_PROJECT_NAME && mage package" agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_winlogbeat_pipeline.sh index ce812016e79..ede70538c2c 100755 --- a/.buildkite/scripts/generate_winlogbeat_pipeline.sh +++ b/.buildkite/scripts/generate_winlogbeat_pipeline.sh @@ -18,15 +18,22 @@ steps: - label: ":negative_squared_cross_mark: Cross compile" key: "mandatory-cross-compile" - command: ".buildkite/scripts/crosscompile.sh" + command: "make -C $BEATS_PROJECT_NAME crosscompile" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Cross compile" - label: ":windows: Windows 2016/2019/2022 Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -40,7 +47,12 @@ steps: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2019}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" # echo "Add the extended windows tests into the pipeline" # TODO: ADD conditions from the main pipeline @@ -48,28 +60,29 @@ steps: - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - - label: ":windows: Windows 10 Unit Tests" - key: "extended-win-10-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows: Windows 10/11 Unit Tests - {{matrix.image}}" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-unit-tests" agents: provider: "gcp" - image: "${IMAGE_WIN_10}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" - - label: ":windows: Windows 11 Unit Tests" - key: "extended-win-11-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" YAML else echo "The conditions don't match to requirements for generating pipeline steps." @@ -90,20 +103,23 @@ if are_conditions_met_packaging; then steps: - label: ":linux: Packaging Linux" key: "packaging-linux" - command: ".buildkite/scripts/packaging.sh" + command: "cd $BEATS_PROJECT_NAME && mage package" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh index f29e6152e60..eb9c8269f3d 100755 --- a/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh @@ -25,20 +25,32 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" - - - label: ":rhel: RHEL-9 Unit Tests" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit (MODULE) Tests" + + - label: ":rhel: RHEL9 Unit Tests" key: "mandatory-rhel9-unit-test" command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -51,7 +63,12 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h @@ -60,7 +77,9 @@ steps: steps: - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "extended-win-unit-tests" agents: provider: "gcp" @@ -74,8 +93,12 @@ steps: - "${IMAGE_WIN_10}" - "${IMAGE_WIN_11}" - "${IMAGE_WIN_2019}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" YAML else @@ -102,21 +125,31 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" YAML fi if are_conditions_met_arm_tests; then cat >> $pipelineName <<- YAML - - label: ":linux: ARM Ubuntu Unit Tests" + - label: ":linux: Ubuntu ARM Unit Tests" key: "extended-arm64-unit-test" command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" YAML fi @@ -144,6 +177,9 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -155,12 +191,15 @@ if are_conditions_met_packaging; then env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh index 46e92f8ddf9..f9ca4e7f767 100755 --- a/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh @@ -22,7 +22,13 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" + - label: ":go: Go Integration Tests" key: "mandatory-int-test" @@ -33,7 +39,12 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" YAML fi @@ -61,6 +72,9 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -72,12 +86,15 @@ if are_conditions_met_packaging; then env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh b/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh index 80d28770bf0..78a351a078d 100755 --- a/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh @@ -22,7 +22,12 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - label: ":go: Go Integration Tests" key: "mandatory-int-test" @@ -31,7 +36,12 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" - label: ":python: Python Integration Tests" key: "mandatory-python-int-test" @@ -42,10 +52,17 @@ steps: machineType: "${GCP_HI_PERF_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Python Integration Tests" - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -58,7 +75,12 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h @@ -67,7 +89,9 @@ steps: steps: - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "extended-win-unit-tests" agents: provider: "gcp" @@ -81,7 +105,12 @@ steps: - "${IMAGE_WIN_10}" - "${IMAGE_WIN_11}" - "${IMAGE_WIN_2019}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" YAML else @@ -108,21 +137,31 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" YAML fi if are_conditions_met_arm_tests; then cat >> $pipelineName <<- YAML - - label: ":linux: ARM Ubuntu Unit Tests" + - label: ":linux: Ubuntu ARM Unit Tests" key: "extended-arm64-unit-test" command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" YAML fi @@ -132,15 +171,22 @@ if are_conditions_met_aws_tests; then - label: ":linux: Cloud Tests" key: "extended-cloud-test" command: ".buildkite/scripts/cloud_tests.sh" + skip: "Temporary disable, additional conditions required, we hit AWS limits" env: MODULE: $MODULE + ASDF_TERRAFORM_VERSION: 1.0.2 agents: provider: "gcp" - image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Cloud Tests" YAML fi @@ -168,6 +214,9 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -179,12 +228,15 @@ if are_conditions_met_packaging; then env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh index b51ca0ab3b9..bec8e9bf96d 100755 --- a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh @@ -17,28 +17,40 @@ steps: steps: - label: ":linux: Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" - image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - label: ":go: Go Integration Tests" key: "mandatory-int-test" - command: ".buildkite/scripts/go_int_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" agents: provider: "gcp" - image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" # ## TODO: there are windows test failures already reported # ## https://github.com/elastic/beats/issues/23957 and https://github.com/elastic/beats/issues/23958 # ## waiting for being fixed. # - label: ":windows: Windows Unit Tests - {{matrix.image}}" -# command: ".buildkite/scripts/win_unit_tests.ps1" +# command: +# - "Set-Location -Path $BEATS_PROJECT_NAME" +# - "New-Item -ItemType Directory -Force -Path 'build'" +# - "mage unitTest" # key: "mandatory-win-unit-tests" # agents: # provider: "gcp" @@ -51,7 +63,9 @@ steps: # image: # - "${IMAGE_WIN_2016}" # - "${IMAGE_WIN_2022}" -# artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" # ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h @@ -60,7 +74,10 @@ steps: # steps: # - label: ":windows: Windows Unit Tests - {{matrix.image}}" -# command: ".buildkite/scripts/win_unit_tests.ps1" +# command: +# - "Set-Location -Path $BEATS_PROJECT_NAME" +# - "New-Item -ItemType Directory -Force -Path 'build'" +# - "mage unitTest" # key: "extended-win-unit-tests" # agents: # provider: "gcp" @@ -74,7 +91,9 @@ steps: # - "${IMAGE_WIN_10}" # - "${IMAGE_WIN_11}" # - "${IMAGE_WIN_2019}" -# artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" YAML else @@ -95,7 +114,12 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" YAML fi @@ -123,6 +147,9 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -134,12 +161,15 @@ if are_conditions_met_packaging; then env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh index 66f0750ab6f..7e3d5086288 100755 --- a/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh @@ -17,33 +17,50 @@ steps: steps: - label: ":linux: Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - label: ":go: Go Integration Tests" key: "mandatory-int-test" - command: ".buildkite/scripts/go_int_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" - label: ":python: Python Integration Tests" key: "mandatory-python-int-test" - command: ".buildkite/scripts/py_int_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Python Integration Tests" - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage -w reader/etw build goUnitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -56,44 +73,40 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" ### TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - label: ":windows: Win 2019 Unit Tests" - key: "extended-win-2019-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Windows 10 Unit Tests" - key: "extended-win-10-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Windows 11 Unit Tests" - key: "extended-win-11-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage -w reader\etw build goUnitTest + key: "extended-win-unit-tests" agents: provider: "gcp" - image: "${IMAGE_WIN_11}" + image: "{{matrix.image}}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" YAML else @@ -108,20 +121,25 @@ if are_conditions_met_arm_tests; then - group: "Extended Tests" key: "extended-tests" steps: - - label: ":linux: Arm64 Unit Tests" + - label: ":linux: Ubuntu ARM64 Unit Tests" key: "extended-arm64-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM64 Unit Tests" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh index ddc3ce2c8f2..d38c3123656 100755 --- a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh @@ -17,37 +17,60 @@ steps: steps: - label: ":linux: Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + command: | + cd $BEATS_PROJECT_NAME + mage build unitTest agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" - - - label: ":go: Go Integration Tests" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" + + - label: ":go: Go (MODULE) Integration Tests" key: "mandatory-int-test" - command: ".buildkite/scripts/go_int_tests.sh" + command: | + cd $BEATS_PROJECT_NAME + mage goIntegTest env: MODULE: $MODULE agents: provider: "gcp" - image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" - - - label: ":python: Python Integration Tests" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go (MODULE) Integration Tests" + + - label: ":python: Python (MODULE) Integration Tests" key: "mandatory-python-int-test" - command: ".buildkite/scripts/py_int_tests.sh" + command: | + cd $BEATS_PROJECT_NAME + mage pythonIntegTest env: MODULE: $MODULE agents: provider: "gcp" - image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Python (MODULE) Integration Tests" - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -60,44 +83,40 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - label: ":windows: Windows 10 Unit Tests" - key: "extended-win-10-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Windows 11 Unit Tests" - key: "extended-win-11-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Win 2019 Unit Tests" - key: "extended-win-2019-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-unit-tests" agents: provider: "gcp" - image: "${IMAGE_WIN_2019}" + image: "{{matrix.image}}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" YAML else @@ -125,23 +144,35 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" YAML fi if are_conditions_met_aws_tests; then cat >> $pipelineName <<- YAML - - label: ":linux: Cloud Tests" + - label: ":linux: Cloud (MODULE) Tests" key: "extended-cloud-test" command: ".buildkite/scripts/cloud_tests.sh" + skip: "Does not belong to a stage, exists but not run" env: MODULE: $MODULE + ASDF_TERRAFORM_VERSION: 1.0.2 agents: provider: "gcp" - image: "${DEFAULT_UBUNTU_X86_64_IMAGE}" + image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Cloud (MODULE) Tests" YAML fi @@ -169,6 +200,9 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -180,12 +214,15 @@ if are_conditions_met_packaging; then env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P -echo "--- Loading dynamic steps" +echo "~~~ Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh b/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh index d6887c4c382..5372d7f3faa 100755 --- a/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh @@ -22,7 +22,12 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - label: ":go: Go Integration Tests" key: "mandatory-int-test" @@ -31,10 +36,17 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -47,7 +59,12 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h @@ -56,7 +73,9 @@ steps: steps: - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "extended-win-unit-tests" agents: provider: "gcp" @@ -70,7 +89,12 @@ steps: - "${IMAGE_WIN_10}" - "${IMAGE_WIN_11}" - "${IMAGE_WIN_2019}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" YAML else @@ -91,7 +115,12 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" YAML fi @@ -119,12 +148,15 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh index 4eb2a1c3e04..c29b6c5d9bc 100644 --- a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh @@ -22,7 +22,12 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - label: ":linux: Ubuntu System Tests" key: "mandatory-linux-system-test" @@ -31,20 +36,33 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.xml" - - - label: ":rhel: RHEL-9 Unit Tests" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu System Tests" + + - label: ":rhel: RHEL9 Unit Tests" key: "mandatory-rhel9-unit-test" - command: ".buildkite/scripts/unit_tests.sh" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: + - "Set-Location -Path $BEATS_PROJECT_NAME" + - "New-Item -ItemType Directory -Force -Path 'build'" + - "mage unitTest" key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -57,7 +75,12 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" ## TODO: uncomment when the issue https://github.com/elastic/beats/issues/38142 is solved # - label: ":windows: Windows 2022 System Tests" @@ -69,7 +92,9 @@ steps: # machineType: "${GCP_WIN_MACHINE_TYPE}" # disk_size: 100 # disk_type: "pd-ssd" - # artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h @@ -78,7 +103,9 @@ steps: steps: - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "extended-win-unit-tests" agents: provider: "gcp" @@ -92,7 +119,12 @@ steps: - "${IMAGE_WIN_10}" - "${IMAGE_WIN_11}" - "${IMAGE_WIN_2019}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" ## TODO: uncomment when the issue https://github.com/elastic/beats/issues/38142 is solved # - label: ":windows: Windows 10 System Tests" @@ -104,7 +136,9 @@ steps: # machineType: "${GCP_WIN_MACHINE_TYPE}" # disk_size: 100 # disk_type: "pd-ssd" - # artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" YAML else @@ -131,21 +165,31 @@ if are_conditions_met_macos_tests; then agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" YAML fi if are_conditions_met_arm_tests; then cat >> $pipelineName <<- YAML - - label: ":linux: ARM Ubuntu Unit Tests" + - label: ":linux: Ubuntu ARM Unit Tests" key: "extended-arm64-unit-test" command: "cd $BEATS_PROJECT_NAME && mage build unitTest" agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" YAML fi @@ -173,6 +217,9 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" - label: ":linux: Packaging ARM" key: "packaging-arm" @@ -184,12 +231,15 @@ if are_conditions_met_packaging; then env: PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh index 108a70c1562..ad5ebd44583 100755 --- a/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh @@ -18,7 +18,9 @@ steps: - label: ":windows: Windows 2019 Unit (MODULE) Tests" key: "mandatory-win-2019-unit-tests" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest env: MODULE: $MODULE agents: @@ -27,10 +29,17 @@ steps: machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows (MODULE) {{matrix.image}} Unit Tests" - label: ":windows: Windows 2016/2022 Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "mandatory-win-unit-tests" agents: provider: "gcp" @@ -43,7 +52,12 @@ steps: image: - "${IMAGE_WIN_2016}" - "${IMAGE_WIN_2022}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" # echo "Add the extended windows tests into the pipeline" # TODO: ADD conditions from the main pipeline @@ -53,7 +67,9 @@ steps: steps: - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: ".buildkite/scripts/win_unit_tests.ps1" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest key: "extended-win-unit-tests" agents: provider: "gcp" @@ -67,7 +83,12 @@ steps: - "${IMAGE_WIN_10}" - "${IMAGE_WIN_11}" - "${IMAGE_WIN_2019}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" YAML else @@ -99,12 +120,15 @@ if are_conditions_met_packaging; then disk_type: "pd-ssd" env: PLATFORMS: "${PACKAGING_PLATFORMS}" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Packaging Linux" YAML fi -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName +echo "+++ Printing dynamic steps" +cat $pipelineName | yq . -P echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/go_int_tests.sh b/.buildkite/scripts/go_int_tests.sh deleted file mode 100755 index b4c519f4512..00000000000 --- a/.buildkite/scripts/go_int_tests.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/install_tools.sh - -set -euo pipefail - -echo "--- Run Go Intergration Tests for $BEATS_PROJECT_NAME" -pushd "${BEATS_PROJECT_NAME}" > /dev/null - -mage goIntegTest - -popd > /dev/null diff --git a/.buildkite/scripts/packaging/package-step.sh b/.buildkite/scripts/packaging/package-step.sh index 9eddfafcfba..5f04ed3849b 100755 --- a/.buildkite/scripts/packaging/package-step.sh +++ b/.buildkite/scripts/packaging/package-step.sh @@ -18,7 +18,7 @@ if are_files_changed "$changeset"; then - label: ":ubuntu: ${BEATS_PROJECT_NAME}/Packaging Linux X86" key: "package-linux-x86" env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS: $PACKAGING_PLATFORMS SNAPSHOT: true command: ".buildkite/scripts/packaging/package.sh" notify: @@ -32,7 +32,7 @@ if are_files_changed "$changeset"; then - label: ":linux: ${BEATS_PROJECT_NAME}/Packaging Linux ARM" key: "package-linux-arm" env: - PLATFORMS: "linux/arm64" + PLATFORMS: $PACKAGING_ARM_PLATFORMS PACKAGES: "docker" SNAPSHOT: true command: ".buildkite/scripts/packaging/package.sh" diff --git a/.buildkite/scripts/py_int_tests.sh b/.buildkite/scripts/py_int_tests.sh deleted file mode 100755 index 19fa8796c3e..00000000000 --- a/.buildkite/scripts/py_int_tests.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/install_tools.sh - -set -euo pipefail - -echo "--- Run Python Intergration Tests for $BEATS_PROJECT_NAME" - -pushd "${BEATS_PROJECT_NAME}" > /dev/null - -mage pythonIntegTest - -popd > /dev/null diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index f0116c6b308..f6b03f53f9b 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -2,37 +2,19 @@ set -euo pipefail -REPO="beats" -TMP_FOLDER="tmp.${REPO}" -DOCKER_REGISTRY="docker.elastic.co" -SETUP_GVM_VERSION="v0.5.1" -DOCKER_COMPOSE_VERSION="1.21.0" -DOCKER_COMPOSE_VERSION_AARCH64="v2.21.0" -SETUP_WIN_PYTHON_VERSION="3.11.0" -NMAP_WIN_VERSION="7.12" # Earlier versions of NMap provide WinPcap (the winpcap packages don't install nicely because they pop-up a UI) -GO_VERSION=$(cat .go-version) -ASDF_MAGE_VERSION="1.15.0" -PACKAGING_PLATFORMS="+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" -PACKAGING_ARM_PLATFORMS="linux/arm64" -ASDF_TERRAFORM_VERSION="1.0.2" -AWS_REGION="eu-central-1" -NODEJS_VERSION="18.17.1" +export REPO="beats" +export DOCKER_REGISTRY="docker.elastic.co" +export SETUP_GVM_VERSION="v0.5.1" +export DOCKER_COMPOSE_VERSION="1.21.0" +export DOCKER_COMPOSE_VERSION_AARCH64="v2.21.0" +export ASDF_NODEJS_VERSION="18.17.1" +export AWS_REGION="eu-central-1" -export SETUP_GVM_VERSION -export DOCKER_COMPOSE_VERSION -export DOCKER_COMPOSE_VERSION_AARCH64 -export SETUP_WIN_PYTHON_VERSION -export NMAP_WIN_VERSION +WORKSPACE=${WORKSPACE:-"$(pwd)"} +export WORKSPACE +GO_VERSION=$(cat .go-version) export GO_VERSION -export ASDF_MAGE_VERSION -export PACKAGING_PLATFORMS -export PACKAGING_ARM_PLATFORMS -export REPO -export TMP_FOLDER -export DOCKER_REGISTRY -export ASDF_TERRAFORM_VERSION -export AWS_REGION -export NODEJS_VERSION + exportVars() { local platform_type="$(uname)" diff --git a/.buildkite/scripts/win_unit_tests.ps1 b/.buildkite/scripts/win_unit_tests.ps1 deleted file mode 100644 index 6c3af6e9321..00000000000 --- a/.buildkite/scripts/win_unit_tests.ps1 +++ /dev/null @@ -1,188 +0,0 @@ -param( - [string]$testType = "unittest" -) - -$ErrorActionPreference = "Stop" # set -e -$WorkFolder = $env:BEATS_PROJECT_NAME -$WORKSPACE = Get-Location -# Forcing to checkout again all the files with a correct autocrlf. -# Doing this here because we cannot set git clone options before. -function fixCRLF { - Write-Host "-- Fixing CRLF in git checkout --" - git config core.autocrlf false - git rm --quiet --cached -r . - git reset --quiet --hard -} - -function retry { - param( - [int]$retries, - [ScriptBlock]$scriptBlock - ) - $count = 0 - while ($count -lt $retries) { - $count++ - try { - & $scriptBlock - return - } catch { - $exitCode = $_.Exception.ErrorCode - Write-Host "Retry $count/$retries exited $exitCode, retrying..." - Start-Sleep -Seconds ([Math]::Pow(2, $count)) - } - } - Write-Host "Retry $count/$retries exited, no more retries left." -} - -function verifyFileChecksum { - param ( - [string]$filePath, - [string]$checksumFilePath - ) - $actualHash = (Get-FileHash -Algorithm SHA256 -Path $filePath).Hash - $checksumData = Get-Content -Path $checksumFilePath - $expectedHash = ($checksumData -split "\s+")[0] - if ($actualHash -eq $expectedHash) { - Write-Host "CheckSum is checked. File is correct. Original checkSum is: $expectedHash " - return $true - } else { - Write-Host "CheckSum is wrong. File can be corrupted or modified. Current checksum is: $actualHash, the original checksum is: $expectedHash" - return $false - } -} - -function withGolang($version) { - Write-Host "-- Installing Go $version --" - $goDownloadPath = Join-Path $env:TEMP "go_installer.msi" - $goInstallerUrl = "https://golang.org/dl/go$version.windows-amd64.msi" - retry -retries 5 -scriptBlock { - Invoke-WebRequest -Uri $goInstallerUrl -OutFile $goDownloadPath - } - Start-Process -FilePath "msiexec.exe" -ArgumentList "/i $goDownloadPath /quiet" -Wait - $env:GOPATH = "${env:ProgramFiles}\Go" - $env:GOBIN = "${env:GOPATH}\bin" - $env:Path += ";$env:GOPATH;$env:GOBIN" - go version - installGoDependencies -} - -function withPython($version) { - Write-Host "-- Installing Python $version --" - [Net.ServicePointManager]::SecurityProtocol = "tls11, tls12, ssl3" - $pyDownloadPath = Join-Path $env:TEMP "python-$version-amd64.exe" - $pyInstallerUrl = "https://www.python.org/ftp/python/$version/python-$version-amd64.exe" - retry -retries 5 -scriptBlock { - Invoke-WebRequest -UseBasicParsing -Uri $pyInstallerUrl -OutFile $pyDownloadPath - } - Start-Process -FilePath $pyDownloadPath -ArgumentList "/quiet", "InstallAllUsers=1", "PrependPath=1", "Include_test=0" -Wait - $pyBinPath = "${env:ProgramFiles}\Python311" - $env:Path += ";$pyBinPath" - python --version -} - -function withMinGW { - Write-Host "-- Installing MinGW --" - [Net.ServicePointManager]::SecurityProtocol = "tls11, tls12, ssl3" - $gwInstallerUrl = "https://github.com/brechtsanders/winlibs_mingw/releases/download/12.1.0-14.0.6-10.0.0-ucrt-r3/winlibs-x86_64-posix-seh-gcc-12.1.0-llvm-14.0.6-mingw-w64ucrt-10.0.0-r3.zip" - $gwInstallerCheckSumUrl = "$gwInstallerUrl.sha256" - $gwDownloadPath = "$env:TEMP\winlibs-x86_64.zip" - $gwDownloadCheckSumPath = "$env:TEMP\winlibs-x86_64.zip.sha256" - retry -retries 5 -scriptBlock { - Invoke-WebRequest -Uri $gwInstallerUrl -OutFile $gwDownloadPath - Invoke-WebRequest -Uri $gwInstallerCheckSumUrl -OutFile $gwDownloadCheckSumPath - } - $comparingResult = verifyFileChecksum -filePath $gwDownloadPath -checksumFilePath $gwDownloadCheckSumPath - if ($comparingResult) { - Expand-Archive -Path $gwDownloadPath -DestinationPath "$env:TEMP" - $gwBinPath = "$env:TEMP\mingw64\bin" - $env:Path += ";$gwBinPath" - } else { - exit 1 - } - -} -function installGoDependencies { - $installPackages = @( - "github.com/magefile/mage" - "github.com/elastic/go-licenser" - "golang.org/x/tools/cmd/goimports" - "github.com/jstemmer/go-junit-report/v2" - "gotest.tools/gotestsum" - ) - foreach ($pkg in $installPackages) { - go install "$pkg@latest" - } -} - -function withNmap($version) { - Write-Host "-- Installing Nmap $version --" - [Net.ServicePointManager]::SecurityProtocol = "tls, tls11, tls12, ssl3" - $nmapInstallerUrl = "https://nmap.org/dist/nmap-$version-setup.exe" - $nmapDownloadPath = "$env:TEMP\nmap-$version-setup.exe" - retry -retries 5 -scriptBlock { - Invoke-WebRequest -UseBasicParsing -Uri $nmapInstallerUrl -OutFile $nmapDownloadPath - } - Start-Process -FilePath $nmapDownloadPath -ArgumentList "/S" -Wait -} -function google_cloud_auth { - $tempFileName = "google-cloud-credentials.json" - $secretFileLocation = Join-Path $env:TEMP $tempFileName - $null = New-Item -ItemType File -Path $secretFileLocation - Set-Content -Path $secretFileLocation -Value $env:PRIVATE_CI_GCS_CREDENTIALS_SECRET - gcloud auth activate-service-account --key-file $secretFileLocation > $null 2>&1 - $env:GOOGLE_APPLICATION_CREDENTIALS = $secretFileLocation -} - -function google_cloud_auth_cleanup { - if (Test-Path $env:GOOGLE_APPLICATION_CREDENTIALS) { - Remove-Item $env:GOOGLE_APPLICATION_CREDENTIALS -Force - Remove-Item Env:\GOOGLE_APPLICATION_CREDENTIALS - } else { - Write-Host "No GCP credentials were added" - } -} - -fixCRLF - -withGolang $env:GO_VERSION - -withPython $env:SETUP_WIN_PYTHON_VERSION - -withMinGW - -if ($env:BUILDKITE_PIPELINE_SLUG -eq "beats-packetbeat" -or $env:BUILDKITE_PIPELINE_SLUG -eq "beats-xpack-filebeat") { - withNmap $env:NMAP_WIN_VERSION -} - -$ErrorActionPreference = "Continue" # set +e - -Set-Location -Path $WorkFolder - -$magefile = "$WORKSPACE\$WorkFolder\.magefile" -$env:MAGEFILE_CACHE = $magefile - -New-Item -ItemType Directory -Force -Path "build" - -if ($testType -eq "unittest") { - if ($env:BUILDKITE_PIPELINE_SLUG -eq "beats-xpack-libbeat") { - mage -w reader/etw build goUnitTest - } else { - mage build unitTest - } -} -elseif ($testType -eq "systemtest") { - try { - google_cloud_auth - mage systemTest - } finally { - google_cloud_auth_cleanup - } -} -else { - Write-Host "Unknown test type. Please specify 'unittest' or 'systemtest'." -} - -$EXITCODE=$LASTEXITCODE -$ErrorActionPreference = "Stop" - -Exit $EXITCODE diff --git a/.buildkite/winlogbeat/pipeline.winlogbeat.yml b/.buildkite/winlogbeat/pipeline.winlogbeat.yml index 7c5ee4d1609..254370db030 100644 --- a/.buildkite/winlogbeat/pipeline.winlogbeat.yml +++ b/.buildkite/winlogbeat/pipeline.winlogbeat.yml @@ -2,16 +2,23 @@ name: "beats-winlogbeat" env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" + BEATS_PROJECT_NAME: "winlogbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - BEATS_PROJECT_NAME: "winlogbeat" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -35,6 +42,8 @@ steps: - label: ":linux: Load dynamic winlogbeat pipeline" key: "winlogbeat-pipeline" command: ".buildkite/scripts/generate_winlogbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index d88bf2a4ff0..c0c92cc3ae1 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -2,21 +2,28 @@ name: "beats-xpack-auditbeat" env: - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" - IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/auditbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/auditbeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -57,6 +64,8 @@ steps: - label: ":linux: Load dynamic x-pack auditbeat pipeline" key: "xpack-auditbeat-pipeline" command: ".buildkite/scripts/generate_xpack_auditbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index bcc2610e175..f55b812cd17 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -2,13 +2,28 @@ name: "beats-xpack-dockerlogbeat" env: - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" - GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" BEATS_PROJECT_NAME: "x-pack/dockerlogbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -33,6 +48,8 @@ steps: - label: ":linux: Load dynamic x-pack dockerlogbeat pipeline" key: "xpack-dockerlogbeat-pipeline" command: ".buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index a324353b65f..02b1cf0ddea 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -2,20 +2,28 @@ name: "beats-xpack-filebeat" env: - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/filebeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/filebeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -64,6 +72,8 @@ steps: - label: ":linux: Load dynamic x-pack filebeat pipeline" key: "xpack-filebeat-pipeline" command: ".buildkite/scripts/generate_xpack_filebeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 2804e98996a..3952b43c45e 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -3,20 +3,28 @@ name: "beats-xpack-heartbeat" env: - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/heartbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/heartbeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -49,6 +57,8 @@ steps: - label: ":linux: Load dynamic x-pack heartbeat pipeline" key: "xpack-heartbeat-pipeline" command: ".buildkite/scripts/generate_xpack_heartbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.libbeat.yml b/.buildkite/x-pack/pipeline.xpack.libbeat.yml index 0c745b1a09d..c029951f010 100644 --- a/.buildkite/x-pack/pipeline.xpack.libbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.libbeat.yml @@ -2,18 +2,28 @@ name: "beats-xpack-libbeat" env: - IMAGE_UBUNTU_X86_64: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "core-ubuntu-2004-aarch64" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/libbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/libbeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -45,6 +55,8 @@ steps: - label: ":linux: Load dynamic x-pack libbeat pipeline" key: "libbeat-pipeline" command: ".buildkite/scripts/generate_xpack_libbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 216f3134344..855c59b8bac 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -2,20 +2,28 @@ name: "beats-xpack-metricbeat" env: - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - DEFAULT_UBUNTU_X86_64_IMAGE: "family/core-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/metricbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/metricbeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -56,6 +64,8 @@ steps: - label: ":linux: Load dynamic x-pack metricbeat pipeline" key: "xpack-metricbeat-pipeline" command: ".buildkite/scripts/generate_xpack_metricbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index 57726c03828..7cd699b5331 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -2,17 +2,28 @@ name: "beats-xpack-osquerybeat" env: - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/osquerybeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - BEATS_PROJECT_NAME: "x-pack/osquerybeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -45,6 +56,8 @@ steps: - label: ":linux: Load dynamic x-pack osquerybeat pipeline" key: "xpack-osquerybeat-pipeline" command: ".buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 750b59e716d..5e3ce87e2bf 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -2,20 +2,28 @@ name: "beats-xpack-packetbeat" env: - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + BEATS_PROJECT_NAME: "x-pack/packetbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/packetbeat" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 steps: @@ -56,6 +64,8 @@ steps: - label: ":linux: Load dynamic x-pack packetbeat pipeline" key: "packetbeat-pipeline" command: ".buildkite/scripts/generate_xpack_packetbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index 5c8acefd698..80b70e287d9 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -3,15 +3,22 @@ name: "beats-xpack-winlogbeat" env: IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_WIN_10: "family/general-windows-10" - IMAGE_WIN_11: "family/general-windows-11" - IMAGE_WIN_2016: "family/core-windows-2016" - IMAGE_WIN_2019: "family/core-windows-2019" - IMAGE_WIN_2022: "family/core-windows-2022" + IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" + IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" + IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" + IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" + IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" BEATS_PROJECT_NAME: "x-pack/winlogbeat" + #Packaging + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PACKAGING_ARM_PLATFORMS: "linux/arm64" + + #Deps + ASDF_MAGE_VERSION: 1.15.0 + steps: - input: "Input Parameters" @@ -34,6 +41,8 @@ steps: - label: ":linux: Load dynamic x-pack winlogbeat pipeline" key: "xpack-winlogbeat-pipeline" command: ".buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh" + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" notify: - github_commit_status: context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" From dbdaac363e0d64d066c7c7a7f952957c7778fcf3 Mon Sep 17 00:00:00 2001 From: Mattia Meleleo Date: Fri, 5 Apr 2024 12:19:16 +0200 Subject: [PATCH 090/313] [Auditbeat] fim(ebpf): enrich file events with process data (#38199) * fim(ebpf): enrich file events with process data * apply review suggestions * apply review suggestions * fix(fim/ebpf): move process fields to event root and insert them so keys do not contain dots * fix(fim/ebpf): refactor HostID to utilise sync.OnceValue and expose boot time * fix(fim/ebpf): refactor TicksPerSecond to utilise sync.OnceValue * fix(fim/ebpf): remove empty slice allocation * chore: go mod tidy * fix: explicitly set go 1.21.8 in go.mod * fix(fim/ebpf): nil slice of errors in TestNewEventFromEbpfEvent * fix(fim/ebpf): remove re-declaration of already ecs included fields * fix(fim/ebpf): utilise OnceValues to declutter the code * fix(fim/ebpf): remove x-pack import from OSS package * fix(fim/ebpf): propagate process fields changes to integration tests * chore: go mod tidy * ci: temporary solution to outdated docker compose python library * ci: transition to a fixed tag for docker image instead of a rolling one --------- Co-authored-by: Panos Koutsovasilis Co-authored-by: Pierre HILBERT --- CHANGELOG.next.asciidoc | 3 + NOTICE.txt | 146 ++++++++++-------- auditbeat/module/file_integrity/event.go | 46 ++++++ .../module/file_integrity/event_linux.go | 95 +++++++++++- .../module/file_integrity/event_linux_test.go | 38 +++-- auditbeat/tests/system/test_file_integrity.py | 18 +++ go.mod | 8 +- go.sum | 18 ++- libbeat/ebpf/sys/sys.go | 68 ++++++++ libbeat/ebpf/sys/time.go | 74 +++++++++ libbeat/tests/system/requirements.txt | 8 +- libbeat/tests/system/requirements_aix.txt | 8 +- metricbeat/Dockerfile | 8 +- 13 files changed, 431 insertions(+), 107 deletions(-) create mode 100644 libbeat/ebpf/sys/sys.go create mode 100644 libbeat/ebpf/sys/time.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 78801d4a00e..f0ad6e6a5c1 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -138,6 +138,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Auditbeat* +- Add linux capabilities to processes in the system/process. {pull}37453[37453] +- Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] +- Add process data to file events (Linux only, eBPF backend). {pull}38199[38199] *Filebeat* diff --git a/NOTICE.txt b/NOTICE.txt index c4ae3f617b5..eb8588c7783 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -12287,11 +12287,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/elastic/ebpfevents -Version: v0.4.0 +Version: v0.5.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/ebpfevents@v0.4.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/ebpfevents@v0.5.0/LICENSE.txt: The https://github.com/elastic/ebpfevents repository contains source code under various licenses: @@ -22921,6 +22921,45 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Dependency : github.com/tklauser/go-sysconf +Version: v0.3.10 +Licence type (autodetected): BSD-3-Clause +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/tklauser/go-sysconf@v0.3.10/LICENSE: + +BSD 3-Clause License + +Copyright (c) 2018-2021, Tobias Klauser +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + -------------------------------------------------------------------------------- Dependency : github.com/tsg/go-daemon Version: v0.0.0-20200207173439-e704b93fd89b @@ -36661,11 +36700,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/cilium/ebpf -Version: v0.12.3 +Version: v0.13.2 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/cilium/ebpf@v0.12.3/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/cilium/ebpf@v0.13.2/LICENSE: MIT License @@ -38697,11 +38736,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : github.com/frankban/quicktest -Version: v1.14.5 +Version: v1.14.3 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/frankban/quicktest@v1.14.5/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/frankban/quicktest@v1.14.3/LICENSE: MIT License @@ -39304,6 +39343,37 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Dependency : github.com/go-quicktest/qt +Version: v1.101.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/go-quicktest/qt@v1.101.0/LICENSE: + +MIT License + +Copyright (c) 2017 Canonical Ltd. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + -------------------------------------------------------------------------------- Dependency : github.com/go-sourcemap/sourcemap Version: v2.1.2+incompatible @@ -49663,27 +49733,6 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- -Dependency : github.com/pkg/diff -Version: v0.0.0-20210226163009-20ebb0f2a09e -Licence type (autodetected): BSD-3-Clause --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e/LICENSE: - -Copyright 2018 Joshua Bleecher Snyder - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -------------------------------------------------------------------------------- Dependency : github.com/pmezard/go-difflib Version: v1.0.0 @@ -49967,11 +50016,11 @@ Contents of probable licence file $GOMODCACHE/github.com/prometheus/client_golan -------------------------------------------------------------------------------- Dependency : github.com/rogpeppe/go-internal -Version: v1.9.0 +Version: v1.11.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/rogpeppe/go-internal@v1.9.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/rogpeppe/go-internal@v1.11.0/LICENSE: Copyright (c) 2018 The Go Authors. All rights reserved. @@ -50873,45 +50922,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------------------------------- -Dependency : github.com/tklauser/go-sysconf -Version: v0.3.10 -Licence type (autodetected): BSD-3-Clause --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/tklauser/go-sysconf@v0.3.10/LICENSE: - -BSD 3-Clause License - -Copyright (c) 2018-2021, Tobias Klauser -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -------------------------------------------------------------------------------- Dependency : github.com/tklauser/numcpus Version: v0.4.0 diff --git a/auditbeat/module/file_integrity/event.go b/auditbeat/module/file_integrity/event.go index 22813a47f22..b282aaaf3d2 100644 --- a/auditbeat/module/file_integrity/event.go +++ b/auditbeat/module/file_integrity/event.go @@ -134,6 +134,7 @@ type Event struct { Action Action `json:"action"` // Action (like created, updated). Hashes map[HashType]Digest `json:"hash,omitempty"` // File hashes. ParserResults mapstr.M `json:"file,omitempty"` // Results from running file parsers. + Process *Process `json:"process,omitempty"` // Process data. Available only on Linux when using the eBPF backend. // Metadata rtt time.Duration // Time taken to collect the info. @@ -141,6 +142,33 @@ type Event struct { hashFailed bool // Set when hashing the file failed. } +// Process contain information about a process. +// These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +type Process struct { + // Unique identifier for the process. + // The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. + // Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. + EntityID string `json:"entity_id,omitempty"` + // Process name. Sometimes called program name or similar. + Name string `json:"name,omitempty"` + // The effective user (euid). + User struct { + // Unique identifier of the user. + ID string `json:"id,omitempty"` + // Short name or login of the user. + Name string `json:"name,omitempty"` + } `json:"user,omitempty"` + // The effective group (egid). + Group struct { + // Unique identifier for the group on the system/platform. + ID string `json:"id,omitempty"` + // Name of the group. + Name string `json:"name,omitempty"` + } `json:"group,omitempty"` + // Process id. + PID uint32 `json:"pid,omitempty"` +} + // Metadata contains file metadata. type Metadata struct { Inode uint64 `json:"inode"` @@ -354,6 +382,24 @@ func buildMetricbeatEvent(e *Event, existedBefore bool) mb.Event { } } + if e.Process != nil { + process := mapstr.M{ + "pid": e.Process.PID, + "name": e.Process.Name, + "entity_id": e.Process.EntityID, + "user": mapstr.M{ + "id": e.Process.User.ID, + "name": e.Process.User.Name, + }, + "group": mapstr.M{ + "id": e.Process.Group.ID, + "name": e.Process.Group.Name, + }, + } + + out.MetricSetFields.Put("process", process) + } + if len(e.Hashes) > 0 { hashes := make(mapstr.M, len(e.Hashes)) for hashType, digest := range e.Hashes { diff --git a/auditbeat/module/file_integrity/event_linux.go b/auditbeat/module/file_integrity/event_linux.go index 7643d03a6b4..c0eb2d57b15 100644 --- a/auditbeat/module/file_integrity/event_linux.go +++ b/auditbeat/module/file_integrity/event_linux.go @@ -26,6 +26,7 @@ import ( "strconv" "time" + "github.com/elastic/beats/v7/libbeat/ebpf/sys" "github.com/elastic/ebpfevents" ) @@ -41,7 +42,9 @@ func NewEventFromEbpfEvent( path, target string action Action metadata Metadata + process Process err error + errors []error ) switch ee.Type { case ebpfevents.EventTypeFileCreate: @@ -54,7 +57,16 @@ func NewEventFromEbpfEvent( return event, false } target = fileCreateEvent.SymlinkTargetPath + metadata, err = metadataFromFileCreate(fileCreateEvent) + if err != nil { + errors = append(errors, err) + } + + process, err = processFromFileCreate(fileCreateEvent) + if err != nil { + errors = append(errors, err) + } case ebpfevents.EventTypeFileRename: action = Moved @@ -65,7 +77,16 @@ func NewEventFromEbpfEvent( return event, false } target = fileRenameEvent.SymlinkTargetPath + metadata, err = metadataFromFileRename(fileRenameEvent) + if err != nil { + errors = append(errors, err) + } + + process, err = processFromFileRename(fileRenameEvent) + if err != nil { + errors = append(errors, err) + } case ebpfevents.EventTypeFileDelete: action = Deleted @@ -76,6 +97,11 @@ func NewEventFromEbpfEvent( return event, false } target = fileDeleteEvent.SymlinkTargetPath + + process, err = processFromFileDelete(fileDeleteEvent) + if err != nil { + errors = append(errors, err) + } case ebpfevents.EventTypeFileModify: fileModifyEvent := ee.Body.(*ebpfevents.FileModify) @@ -92,7 +118,16 @@ func NewEventFromEbpfEvent( return event, false } target = fileModifyEvent.SymlinkTargetPath + metadata, err = metadataFromFileModify(fileModifyEvent) + if err != nil { + errors = append(errors, err) + } + + process, err = processFromFileModify(fileModifyEvent) + if err != nil { + errors = append(errors, err) + } } event := Event{ @@ -102,10 +137,8 @@ func NewEventFromEbpfEvent( Info: &metadata, Source: SourceEBPF, Action: action, - errors: make([]error, 0), - } - if err != nil { - event.errors = append(event.errors, err) + Process: &process, + errors: errors, } if event.Action == Deleted { @@ -115,7 +148,6 @@ func NewEventFromEbpfEvent( case FileType: fillHashes(&event, path, maxFileSize, hashTypes, fileParsers) case SymlinkType: - var err error event.TargetPath, err = filepath.EvalSymlinks(event.Path) if err != nil { event.errors = append(event.errors, err) @@ -147,6 +179,59 @@ func metadataFromFileModify(evt *ebpfevents.FileModify) (Metadata, error) { return md, err } +func newProcess(pid uint32, start uint64, comm string, euid, egid uint32) (Process, error) { + var ( + p Process + err error + ) + + t, err := sys.TimeFromNsSinceBoot(start) + if err != nil { + return p, err + } + + p.EntityID, err = sys.EntityID(pid, t) + if err != nil { + return p, err + } + p.Name = comm + p.PID = pid + + p.User.ID = strconv.FormatUint(uint64(euid), 10) + u, err := user.LookupId(p.User.ID) + if err == nil { + p.User.Name = u.Username + } else { + p.User.Name = "n/a" + } + + p.Group.ID = strconv.FormatUint(uint64(egid), 10) + g, err := user.LookupGroupId(p.Group.ID) + if err == nil { + p.Group.Name = g.Name + } else { + p.Group.Name = "n/a" + } + + return p, nil +} + +func processFromFileCreate(evt *ebpfevents.FileCreate) (Process, error) { + return newProcess(evt.Pids.Tgid, evt.Pids.StartTimeNs, evt.Comm, evt.Creds.Euid, evt.Creds.Egid) +} + +func processFromFileRename(evt *ebpfevents.FileRename) (Process, error) { + return newProcess(evt.Pids.Tgid, evt.Pids.StartTimeNs, evt.Comm, evt.Creds.Euid, evt.Creds.Egid) +} + +func processFromFileModify(evt *ebpfevents.FileModify) (Process, error) { + return newProcess(evt.Pids.Tgid, evt.Pids.StartTimeNs, evt.Comm, evt.Creds.Euid, evt.Creds.Egid) +} + +func processFromFileDelete(evt *ebpfevents.FileDelete) (Process, error) { + return newProcess(evt.Pids.Tgid, evt.Pids.StartTimeNs, evt.Comm, evt.Creds.Euid, evt.Creds.Egid) +} + func fillFileInfo(md *Metadata, finfo ebpfevents.FileInfo) error { md.Inode = finfo.Inode md.UID = finfo.Uid diff --git a/auditbeat/module/file_integrity/event_linux_test.go b/auditbeat/module/file_integrity/event_linux_test.go index 1a440afb8f1..beac9878909 100644 --- a/auditbeat/module/file_integrity/event_linux_test.go +++ b/auditbeat/module/file_integrity/event_linux_test.go @@ -21,7 +21,6 @@ package file_integrity import ( "os" - "os/user" "testing" "github.com/stretchr/testify/assert" @@ -40,13 +39,25 @@ func TestNewEventFromEbpfEvent(t *testing.T) { Inode: 1234, Mode: os.FileMode(0o644), Size: 2345, - Uid: 3456, - Gid: 4567, + Uid: uint32(os.Geteuid()), + Gid: uint32(os.Getegid()), }, Path: "/foo", SymlinkTargetPath: "/bar", + Creds: ebpfevents.CredInfo{ + Ruid: 1, + Rgid: 2, + Euid: uint32(os.Geteuid()), + Egid: uint32(os.Getegid()), + Suid: 5, + Sgid: 6, + }, }, } + event, ok := NewEventFromEbpfEvent( + ebpfEvent, 0, []HashType{}, []FileParser{}, func(path string) bool { return false }) + assert.True(t, ok) + expectedEvent := Event{ Action: Created, Path: "/foo", @@ -54,21 +65,22 @@ func TestNewEventFromEbpfEvent(t *testing.T) { Info: &Metadata{ Type: FileType, Inode: 1234, - UID: 3456, - GID: 4567, + UID: uint32(os.Geteuid()), + GID: uint32(os.Getegid()), Size: 2345, - Owner: "n/a", - Group: "n/a", + Owner: event.Info.Owner, + Group: event.Info.Group, Mode: os.FileMode(0o644), }, - Source: SourceEBPF, - errors: []error{user.UnknownUserIdError(3456)}, + Process: event.Process, // 1:1 copy this as it changes on every machine + Source: SourceEBPF, + errors: nil, } - - event, ok := NewEventFromEbpfEvent( - ebpfEvent, 0, []HashType{}, []FileParser{}, func(path string) bool { return false }) - assert.True(t, ok) event.Timestamp = expectedEvent.Timestamp assert.Equal(t, expectedEvent, event) + assert.NotEqual(t, "", event.Process.EntityID) + assert.NotEqual(t, 0, event.Process.PID) + assert.NotEqual(t, 0, event.Process.User.ID) + assert.NotEqual(t, "", event.Process.User.Name) } diff --git a/auditbeat/tests/system/test_file_integrity.py b/auditbeat/tests/system/test_file_integrity.py index e6b03306c3a..64062dd0a77 100644 --- a/auditbeat/tests/system/test_file_integrity.py +++ b/auditbeat/tests/system/test_file_integrity.py @@ -5,6 +5,10 @@ from auditbeat import * +if platform.platform().split('-')[0] == 'Linux': + import pwd + + def is_root(): if 'geteuid' not in dir(os): return False @@ -100,6 +104,16 @@ def wait_startup(self, backend, dir): # may differ self.wait_log_contains(escape_path(dir), max_timeout=30, ignore_case=True) + def _assert_process_data(self, event, backend): + if backend != "ebpf": + return + assert event["process.entity_id"] != "" + assert event["process.executable"] == "pytest" + assert event["process.pid"] == os.getpid() + assert int(event["process.user.id"]) == os.geteuid() + assert event["process.user.name"] == pwd.getpwuid(os.geteuid()).pw_name + assert int(event["process.group.id"]) == os.getegid() + def _test_non_recursive(self, backend): """ file_integrity monitors watched directories (non recursive). @@ -172,6 +186,8 @@ def _test_non_recursive(self, backend): # assert file inside subdir is not reported assert self.log_contains(file3) is False + self._assert_process_data(objs[0], backend) + @unittest.skipIf(os.getenv("CI") is not None and platform.system() == 'Darwin', 'Flaky test: https://github.com/elastic/beats/issues/24678') def test_non_recursive__fsnotify(self): @@ -252,6 +268,8 @@ def _test_recursive(self, backend): file_events(objs, file1, ['created']) file_events(objs, file2, ['created']) + self._assert_process_data(objs[0], backend) + def test_recursive__fsnotify(self): self._test_recursive("fsnotify") diff --git a/go.mod b/go.mod index 745d47673b6..9e8c91fc742 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/elastic/beats/v7 -go 1.21 +go 1.21.8 require ( cloud.google.com/go/bigquery v1.55.0 @@ -201,7 +201,7 @@ require ( github.com/aws/smithy-go v1.13.5 github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5 github.com/elastic/bayeux v1.0.5 - github.com/elastic/ebpfevents v0.4.0 + github.com/elastic/ebpfevents v0.5.0 github.com/elastic/elastic-agent-autodiscover v0.6.8 github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 @@ -224,6 +224,7 @@ require ( github.com/pkg/xattr v0.4.9 github.com/sergi/go-diff v1.3.1 github.com/shirou/gopsutil/v3 v3.22.10 + github.com/tklauser/go-sysconf v0.3.10 go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8 go.elastic.co/apm/module/apmhttp/v2 v2.4.8 go.elastic.co/apm/v2 v2.4.8 @@ -271,7 +272,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect - github.com/cilium/ebpf v0.12.3 // indirect + github.com/cilium/ebpf v0.13.2 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect @@ -360,7 +361,6 @@ require ( github.com/sirupsen/logrus v1.9.0 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/tklauser/go-sysconf v0.3.10 // indirect github.com/tklauser/numcpus v0.4.0 // indirect github.com/urso/diag v0.0.0-20200210123136-21b3cc8eb797 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect diff --git a/go.sum b/go.sum index ff0abc92363..d839df6a98e 100644 --- a/go.sum +++ b/go.sum @@ -442,8 +442,8 @@ github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLI github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.12.3 h1:8ht6F9MquybnY97at+VDZb3eQQr8ev79RueWeVaEcG4= -github.com/cilium/ebpf v0.12.3/go.mod h1:TctK1ivibvI3znr66ljgi4hqOT8EYQjz1KWBfb1UVgM= +github.com/cilium/ebpf v0.13.2 h1:uhLimLX+jF9BTPPvoCUYh/mBeoONkjgaJ9w9fn0mRj4= +github.com/cilium/ebpf v0.13.2/go.mod h1:DHp1WyrLeiBh19Cf/tfiSMhqheEiK8fXFZ4No0P1Hso= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= @@ -671,8 +671,8 @@ github.com/elastic/bayeux v1.0.5 h1:UceFq01ipmT3S8DzFK+uVAkbCdiPR0Bqei8qIGmUeY0= github.com/elastic/bayeux v1.0.5/go.mod h1:CSI4iP7qeo5MMlkznGvYKftp8M7qqP/3nzmVZoXHY68= github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 h1:lnDkqiRFKm0rxdljqrj3lotWinO9+jFmeDXIC4gvIQs= github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3/go.mod h1:aPqzac6AYkipvp4hufTyMj5PDIphF3+At8zr7r51xjY= -github.com/elastic/ebpfevents v0.4.0 h1:M80eAeJnzvGQgU9cjJqkjFca9pjM3aq/TuZxJeom4bI= -github.com/elastic/ebpfevents v0.4.0/go.mod h1:o21z5xup/9dK8u0Hg9bZRflSqqj1Zu5h2dg2hSTcUPQ= +github.com/elastic/ebpfevents v0.5.0 h1:QkyMAYWo3fXFbYtXAXU8sZu2SQ4LXVYC6gLXIWXy02E= +github.com/elastic/ebpfevents v0.5.0/go.mod h1:ESG9gw7N+n5yCCMgdg1IIJENKWSmX7+X0Fi9GUs9nvU= github.com/elastic/elastic-agent-autodiscover v0.6.8 h1:BSXz+QwjZAEt08G+T3GDGl14Bh9a6zD8luNCvZut/b8= github.com/elastic/elastic-agent-autodiscover v0.6.8/go.mod h1:hFeFqneS2r4jD0/QzGkrNk0YVdN0JGh7lCWdsH7zcI4= github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= @@ -772,8 +772,8 @@ github.com/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= -github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/gabriel-vasile/mimetype v1.4.1/go.mod h1:05Vi0w3Y9c/lNvJOdmIwvrrAhX3rYhfQQCaf9VJcv7M= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= @@ -919,6 +919,8 @@ github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-sourcemap/sourcemap v2.1.2+incompatible h1:0b/xya7BKGhXuqFESKM4oIiRo9WOt2ebz7KxfreD6ug= github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= @@ -1639,7 +1641,6 @@ github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1732,8 +1733,9 @@ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rootless-containers/rootlesskit v1.1.0 h1:cRaRIYxY8oce4eE/zeAUZhgKu/4tU1p9YHN4+suwV7M= github.com/rootless-containers/rootlesskit v1.1.0/go.mod h1:H+o9ndNe7tS91WqU0/+vpvc+VaCd7TCIWaJjnV0ujUo= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/libbeat/ebpf/sys/sys.go b/libbeat/ebpf/sys/sys.go new file mode 100644 index 00000000000..4156321a321 --- /dev/null +++ b/libbeat/ebpf/sys/sys.go @@ -0,0 +1,68 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build linux + +package sys + +import ( + "crypto/sha256" + "encoding/base64" + "encoding/binary" + "sync" + "time" + + "github.com/elastic/go-sysinfo" + "github.com/elastic/go-sysinfo/types" +) + +var ( + hostInfoOnce = sync.OnceValues(func() (types.HostInfo, error) { + host, err := sysinfo.Host() + + if host == nil { + return types.HostInfo{}, err + } + + return host.Info(), err + }) +) + +// EntityID creates an ID that uniquely identifies this process across machines. +func EntityID(pid uint32, start time.Time) (string, error) { + info, err := hostInfoOnce() + if err != nil { + return "", err + } + + h := sha256.New() + if _, err := h.Write([]byte(info.UniqueID)); err != nil { + return "", err + } + if err := binary.Write(h, binary.LittleEndian, int64(pid)); err != nil { + return "", err + } + if err := binary.Write(h, binary.LittleEndian, int64(start.Nanosecond())); err != nil { + return "", err + } + + sum := h.Sum(nil) + if len(sum) > 12 { + sum = sum[:12] + } + return base64.RawStdEncoding.EncodeToString(sum), nil +} diff --git a/libbeat/ebpf/sys/time.go b/libbeat/ebpf/sys/time.go new file mode 100644 index 00000000000..7dca6454c32 --- /dev/null +++ b/libbeat/ebpf/sys/time.go @@ -0,0 +1,74 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build linux + +package sys + +import ( + "sync" + "time" + + "github.com/tklauser/go-sysconf" +) + +var ( + ticksPerSecondOnce = sync.OnceValues(func() (uint64, error) { + ticks, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) + if err != nil { + return 0, err + } + + return uint64(ticks), err + }) +) + +func TicksToNs(ticks uint64) (uint64, error) { + tps, err := ticksPerSecondOnce() + if err != nil { + return 0, err + } + + return ticks * uint64(time.Second.Nanoseconds()) / tps, nil +} + +func TimeFromNsSinceBoot(ns uint64) (time.Time, error) { + info, err := hostInfoOnce() + if err != nil { + return time.Time{}, err + } + + reduced, err := reduceTimestampPrecision(ns) + if err != nil { + return time.Time{}, err + } + + return info.BootTime.Add(time.Duration(reduced)), nil +} + +// When generating an `entity_id` in ECS we need to reduce the precision of a +// process's start time to that of procfs. Process start times can come from either +// eBPF (high precision) or other sources. We must reduce them all to the +// lowest common denominator such that entity ID's generated are always consistent. +func reduceTimestampPrecision(ns uint64) (uint64, error) { + tps, err := ticksPerSecondOnce() + if err != nil { + return 0, err + } + + return ns - (ns % (uint64(time.Second.Nanoseconds()) / tps)), nil +} diff --git a/libbeat/tests/system/requirements.txt b/libbeat/tests/system/requirements.txt index fc4227738c3..87133cda11d 100644 --- a/libbeat/tests/system/requirements.txt +++ b/libbeat/tests/system/requirements.txt @@ -1,3 +1,7 @@ +requests==2.31.0 +urllib3==1.26.18 +docker==6.1.3 +docker-compose @ git+https://github.com/pkoutsovasilis/compose@v1_fix async-timeout==4.0.3 attrs==19.3.0 autopep8==1.5.4 @@ -13,8 +17,6 @@ cryptography==42.0.4 deepdiff==4.2.0 Deprecated==1.2.14 distro==1.9.0 -docker==6.0.1 -docker-compose==1.29.2 docker-pycreds==0.4.0 dockerpty==0.4.1 docopt==0.6.2 @@ -58,7 +60,6 @@ pytest-timeout==1.4.2 python-dotenv==0.21.1 PyYAML==5.3.1 redis==4.4.4 -requests==2.31.0 semver==2.8.1 six==1.15.0 stomp.py==4.1.22 @@ -67,7 +68,6 @@ texttable==0.9.1 toml==0.10.1 tomli==2.0.1 typing_extensions==4.9.0 -urllib3==1.26.18 wcwidth==0.2.5 websocket-client==0.47.0 wrapt==1.16.0 diff --git a/libbeat/tests/system/requirements_aix.txt b/libbeat/tests/system/requirements_aix.txt index fc4227738c3..87133cda11d 100644 --- a/libbeat/tests/system/requirements_aix.txt +++ b/libbeat/tests/system/requirements_aix.txt @@ -1,3 +1,7 @@ +requests==2.31.0 +urllib3==1.26.18 +docker==6.1.3 +docker-compose @ git+https://github.com/pkoutsovasilis/compose@v1_fix async-timeout==4.0.3 attrs==19.3.0 autopep8==1.5.4 @@ -13,8 +17,6 @@ cryptography==42.0.4 deepdiff==4.2.0 Deprecated==1.2.14 distro==1.9.0 -docker==6.0.1 -docker-compose==1.29.2 docker-pycreds==0.4.0 dockerpty==0.4.1 docopt==0.6.2 @@ -58,7 +60,6 @@ pytest-timeout==1.4.2 python-dotenv==0.21.1 PyYAML==5.3.1 redis==4.4.4 -requests==2.31.0 semver==2.8.1 six==1.15.0 stomp.py==4.1.22 @@ -67,7 +68,6 @@ texttable==0.9.1 toml==0.10.1 tomli==2.0.1 typing_extensions==4.9.0 -urllib3==1.26.18 wcwidth==0.2.5 websocket-client==0.47.0 wrapt==1.16.0 diff --git a/metricbeat/Dockerfile b/metricbeat/Dockerfile index b6da0417316..a16b942032d 100644 --- a/metricbeat/Dockerfile +++ b/metricbeat/Dockerfile @@ -1,4 +1,5 @@ FROM golang:1.21.8 +COPY --from=docker:26.0.0-alpine3.19 /usr/local/bin/docker /usr/local/bin/ RUN \ apt update \ @@ -10,6 +11,8 @@ RUN \ python3-venv \ libaio-dev \ unzip \ + libssl-dev \ + libffi-dev \ && rm -rf /var/lib/apt/lists/* # Use a virtualenv to avoid the PEP668 "externally managed environment" error caused by conflicts @@ -19,9 +22,12 @@ RUN python3 -m venv $VIRTUAL_ENV ENV PATH="$VIRTUAL_ENV/bin:$PATH" RUN pip3 install --upgrade pip==20.1.1 -RUN pip3 install --upgrade docker-compose==1.23.2 RUN pip3 install --upgrade setuptools==47.3.2 RUN pip3 install --upgrade PyYAML==5.3.1 +RUN pip3 install requests==2.31.0 +RUN pip3 install urllib3==1.26.18 +RUN pip3 install docker==6.1.3 +RUN pip3 install git+https://github.com/pkoutsovasilis/compose@v1_fix # Oracle instant client RUN cd /usr/lib \ From a455d0508128ffc3bd2b37d6bdfe721d46b9caa6 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 5 Apr 2024 14:16:35 +0300 Subject: [PATCH 091/313] Fix the dynamic step for pipeline upload on the x-pack Heartbeat (#38736) Fix unbound BEATS_PROJECT_NAME Signed-off-by: Alexandros Sapranidis --- .buildkite/scripts/common.sh | 3 ++- .buildkite/x-pack/pipeline.xpack.heartbeat.yml | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 3875fc5955d..64b36131caf 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -201,7 +201,8 @@ case "${BUILDKITE_PIPELINE_SLUG}" in esac check_and_set_beat_vars() { - if [[ -n "$BEATS_PROJECT_NAME" && "$BEATS_PROJECT_NAME" == *"x-pack/"* ]]; then + local BEATS_PROJECT_NAME=${BEATS_PROJECT_NAME:=""} + if [[ "${BEATS_PROJECT_NAME:=""}" == *"x-pack/"* ]]; then BEATS_XPACK_PROJECT_NAME=${BEATS_PROJECT_NAME//-/} #remove - BEATS_XPACK_PROJECT_NAME=${BEATS_XPACK_PROJECT_NAME//\//_} #replace / to _ BEATS_XPACK_LABEL_PROJECT_NAME=${BEATS_PROJECT_NAME//\//-} #replace / to - for labels diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 3952b43c45e..1b04fcf9922 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -1,7 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json name: "beats-xpack-heartbeat" - env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" BEATS_PROJECT_NAME: "x-pack/heartbeat" From 65ca2de7efaf9d06126246eda5b5754fcae0f18c Mon Sep 17 00:00:00 2001 From: Luca Belluccini Date: Fri, 5 Apr 2024 16:00:18 +0200 Subject: [PATCH 092/313] Include plugin.id in the plain text log format (#36727) Co-authored-by: Nathan L Smith --- filebeat/module/logstash/log/ingest/pipeline-plaintext.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/filebeat/module/logstash/log/ingest/pipeline-plaintext.yml b/filebeat/module/logstash/log/ingest/pipeline-plaintext.yml index 4c75de47c99..e506b0bc97b 100644 --- a/filebeat/module/logstash/log/ingest/pipeline-plaintext.yml +++ b/filebeat/module/logstash/log/ingest/pipeline-plaintext.yml @@ -13,6 +13,8 @@ processors: (.| )* patterns: + - \[%{TIMESTAMP_ISO8601:logstash.log.timestamp}\]\[%{LOGSTASH_LOGLEVEL:log.level}\s?\]\[%{LOGSTASH_CLASS_MODULE:logstash.log.module}\s*\]\[%{NOTSPACE:logstash.log.pipeline_id}\]\[%{NOTSPACE:logstash.log.plugin_id}\] + %{GREEDYMULTILINE:message} - \[%{TIMESTAMP_ISO8601:logstash.log.timestamp}\]\[%{LOGSTASH_LOGLEVEL:log.level}\s?\]\[%{LOGSTASH_CLASS_MODULE:logstash.log.module}\s*\]\[%{NOTSPACE:logstash.log.pipeline_id}\] %{GREEDYMULTILINE:message} - \[%{TIMESTAMP_ISO8601:logstash.log.timestamp}\]\[%{LOGSTASH_LOGLEVEL:log.level}\s?\]\[%{LOGSTASH_CLASS_MODULE:logstash.log.module}\s*\] From d6d92ef11b71ada3fdfc03d7d1f2a114e32127b5 Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Fri, 5 Apr 2024 11:42:11 -0400 Subject: [PATCH 093/313] [libbeat] Delete proxy queue (#38570) Delete the proxy queue, a prototype written to reduce memory use in the old shipper project. Recent improvements to the memory queue (https://github.com/elastic/beats/pull/37795, https://github.com/elastic/beats/pull/38166) added support for the same early-free mechanisms as the proxy queue, so it is now redundant. The proxy queue was never used or exposed in a public release, so there are no compatibility concerns. (This is pre-cleanup for adding early-encoding support, to avoid implementing new functionality in a queue that is no longer used.) --- libbeat/outputs/shipper/shipper.go | 10 +- libbeat/publisher/queue/proxy/README.md | 68 -- libbeat/publisher/queue/proxy/batch.go | 110 --- libbeat/publisher/queue/proxy/broker.go | 286 ------ .../publisher/queue/proxy/diagrams/broker.d2 | 54 -- .../publisher/queue/proxy/diagrams/broker.svg | 847 ------------------ libbeat/publisher/queue/proxy/internal_api.go | 41 - libbeat/publisher/queue/proxy/produce.go | 81 -- libbeat/publisher/queue/proxy/queue_test.go | 232 ----- 9 files changed, 7 insertions(+), 1722 deletions(-) delete mode 100644 libbeat/publisher/queue/proxy/README.md delete mode 100644 libbeat/publisher/queue/proxy/batch.go delete mode 100644 libbeat/publisher/queue/proxy/broker.go delete mode 100644 libbeat/publisher/queue/proxy/diagrams/broker.d2 delete mode 100644 libbeat/publisher/queue/proxy/diagrams/broker.svg delete mode 100644 libbeat/publisher/queue/proxy/internal_api.go delete mode 100644 libbeat/publisher/queue/proxy/produce.go delete mode 100644 libbeat/publisher/queue/proxy/queue_test.go diff --git a/libbeat/outputs/shipper/shipper.go b/libbeat/outputs/shipper/shipper.go index fe19a36b31d..83955a80f4c 100644 --- a/libbeat/outputs/shipper/shipper.go +++ b/libbeat/outputs/shipper/shipper.go @@ -25,7 +25,7 @@ import ( "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/outputs" "github.com/elastic/beats/v7/libbeat/publisher" - proxyqueue "github.com/elastic/beats/v7/libbeat/publisher/queue/proxy" + "github.com/elastic/beats/v7/libbeat/publisher/queue/memqueue" "github.com/elastic/elastic-agent-shipper-client/pkg/helpers" sc "github.com/elastic/elastic-agent-shipper-client/pkg/proto" @@ -111,8 +111,12 @@ func makeShipper( return outputs.Group{ Clients: []outputs.Client{swb}, Retry: config.MaxRetries, - QueueFactory: proxyqueue.FactoryForSettings( - proxyqueue.Settings{BatchSize: config.BulkMaxSize}), + QueueFactory: memqueue.FactoryForSettings( + memqueue.Settings{ + Events: config.BulkMaxSize * 2, + MaxGetRequest: config.BulkMaxSize, + FlushTimeout: 0, + }), }, nil } diff --git a/libbeat/publisher/queue/proxy/README.md b/libbeat/publisher/queue/proxy/README.md deleted file mode 100644 index 0ff611fb238..00000000000 --- a/libbeat/publisher/queue/proxy/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Beats Proxy Queue - -The proxy queue is an implementation of the [beats Queue interface](https://github.com/elastic/beats/blob/main/libbeat/publisher/queue/queue.go) meant to work with the Shipper output. The Shipper output is unique because rather than sending events to a remote server it sends them to the Shipper, a local process that has its own queue where it stages events for delivery to their true destination upstream. This means that if the Shipper output is used with a conventional queue, events will remain queued in both Beats _and_ the shipper until they receive upstream acknowledgment, potentially doubling the memory needed for a given set of events. - -The solution to this is the proxy queue: from the perspective of the Beats pipeline, it behaves like a normal (albeit small) queue, but its buffer is immediately cleared on being read, and it provides a hook in its event batches for the output to free its contents once sent, while still preserving metadata so that inputs that require end-to-end acknowledgment of their events can receive the acknowledgments later, after the Shipper confirms upstream ingestion. - -## Limitations - -Some features present in other queues are unimplemented or ignored by the proxy queue since they are unneeded when ingesting via the Shipper output: - -- `queue.EntryID`: a `Publish` call to a normal queue returns an `EntryID`, a unique integer that is incremented with each event. This data is only used internally in the Shipper to track acknowledgments, and is unused by Beats. -- Producer cancel: When a `queue.Producer` (the API interface for adding data to a queue) is cancelled, the memory queue attempts to remove from its buffer any events sent by that producer that have not yet been consumed. This feature is only ever used during Beats shutdown, and since the proxy queue in particular never accumulates events itself but instead stores them in the Shipper's queue, it has no mechanism to cancel most outstanding events. -- Requested batch size: The queue interface reads event batches by specifying the desired number of events, which the queue will try to satisfy. Because batches from the proxy queue are being sent to a local process rather than over a network, there is less performance sensitivity to the batch size. Because the proxy queue optimizes its buffer by using it to directly store the batch contents, we can get simpler and more consistent performance by accumulating up to a maximum size and then sending that immediately when a batch is requested. Therefore the proxy queue has its own configurable target batch size, and ignores the parameter given by the consumer. -- Metrics: The proxy queue implements the usual queue metrics for the Beats pipeline, however it doesn't implement the `Metrics()` call, as that is only used by the Shipper (and its contents would be mostly meaningless in the proxy case since events are not allowed to accumulate). - -## Implementation - -The proxy queue is loosely based on the implementation of the memory queue, but with many simplifications enabled by its more limited scope. It has three control channels, `getChan`, `pushChan`, and `doneChan`, all unbuffered. Its internal state can only be changed by sending requests to those channels (or closing the channel in the case of `doneChan`), or by closing the done channel on batches it has returned. - -### The pipeline - -Here is the event data flow through the proxy queue, in the context of the Beats pipeline: - -![The proxy queue in context](diagrams/broker.svg) - -An input adds an event to the proxy queue by creating a `queue.Producer` via the queue's API and calling its `Publish` function. If the producer was created with an acknowledgment callback, then a pointer to the producer will be included in its event metadata so later stages of the pipeline can notify it when ingestion is complete. - -The producer passes an incoming event on to the queue by sending a `pushRequest` to the queue's `pushChan`. The request includes the event, the producer (if acknowledgment is required), a channel on which to receive the response (boolean indicating success or failure), and a flag indicating whether a full queue should block the request until there is room or return immediately with failure. `pushChan` is unbuffered, and any request sent through it is guaranteed to receive a response. If the request's `canBlock` flag is false, that response is guaranteed not to block. If `canBlock` is true, the response is guaranteed to be success unless the queue has been closed. - -On the other side of the queue, a worker routine (`queueReader`) requests batches from the queue via its `Get` function, which sends a `getRequest` to the queue's `getChan`. A `getRequest` always blocks until there is data to read or until the queue is closed; as with `pushRequest`, once it is accepted it always returns a response. If the request is successful, the response will be a `proxyqueue.batch` (implementing the `queue.Batch` interface). The `queueReader`'s job is to collect batches from the queue and wrap them in a `publisher.Batch` interface (concrete type `ttlBatch`) that tracks retry metadata used in the final stages of the pipeline. - -The wrapped batches generated by the `queueReader` are received by the `eventConsumer`, which is the worker that distributes pipeline batches among the output workers via their shared input channel, and handles retries for output workers that encounter errors. - -Only an output worker can complete the life cycle of a batch. In the proxy queue this happens in two stages: when the batch is successfully sent to the Shipper, its `FreeEntries` function is called, which clears the internal reference to the events -- once these are sent, they are no longer needed since they are already enqueued in the Shipper. Then, when the Shipper confirms (via its `PersistedIndex` API, see the Shipper repository for details) that all events from the batch have been processed, the batch's `Done` function is called, which closes the batch's internal channel, `doneChan`. - -Finally, the queue's broker routine monitors the `doneChan` of the oldest outstanding batch; when it is closed, the broker invokes the appropriate acknowledgment callbacks and advances to the next oldest batch. - -### Acknowledgment tracking - -As with other queues, acknowledgments of batches must be globally synchronized by the queue broker, since the pipeline API requires that acknowledgments are sent to producers in the same order the events were generated (out-of-order acknowledgments can cause data loss). The acknowledgments required by any one batch are stored within the batch itself (in the `producerACKs` helper object). The queue broker maintains an ordered linked list of all batches awaiting acknowledgment, and the `select` call in its main loop checks the oldest outstanding batch, calling the appropriate callbacks as it advances. - -### The broker loop - -All internal control logic is handled in the run loop `broker.run()` in `broker.go`. Its state is stored in these fields: - -```go - queuedEntries []queueEntry - blockedRequests blockedRequests - outstandingBatches batchList -``` - -- `queuedEntries` is a list of the events (and producers, if appropriate) currently stored by the queue. Its length is at most `batchSize`. -- `blockedRequests` is a linked list of pending `pushRequest`s from producers that could not be immediately handled because the queue was full. Each one contains a response channel, and the originating producer is listening on that channel waiting for space in the queue. When space is available, events in these requests will be added to `queuedEntries` and the result will be sent to their response channels. -- `outstandingBatches` is a linked list of batches that have been consumed from this queue but not yet acknowledged. It is in the same order as the batches were originally created, so the first entry in the list is always the oldest batch awaiting acknowledgment. - -The core loop calls `select` across up to four channels: - -- `putChan` accepts requests to add entries to the queue. If the queue is already full (`len(queuedEntries) == batchSize`), the request is either added to `blockedRequests` or returns with immediate failure (depending on the value of `canBlock`). Otherwise, the new entry is added to `queuedEntries` to be included in the next batch. -- `getChan` is enabled only if `queuedEntries` isn't empty (otherwise there would be nothing to return). In that case, a new batch is created with the contents of `queuedEntries`, and metadata for any required future acknowledgments is computed (so that acknowledgment data can persist after the events themselves are freed). -- `outstandingBatches.nextDoneChan()` returns the acknowledgment channel for the oldest outstanding batch; if a read on this channel goes through, it means the channel was closed and the batch has been acknowledged, so the producer and pipeline callbacks are invoked and we advance to the next outstanding batch. -- `doneChan` indicates closure of the queue. In this case we reject any remaining requests in `blockedRequests` and return. (We do not do anything with `outstandingBatches`, since batches that are still unacknowledged at this point should be considered dropped, so we do not want producers to believe they have sent successfully.) - -## Possible improvements - -The proxy queue is designed to minimize memory use while respecting the established API for the Beats pipeline. However, its inability to buffer incoming events means that raw latency may increase in some scenarios. If benchmarks show that the proxy queue is a CPU or latency bottleneck, there are some natural improvements that would likely yield significant improvements: - -- The proxy queue currently buffers at most one batch at a time. Buffering a small constant number of batches instead would potentially block the inputs less often, leading to steadier throughput. -- Unlike the other queues, the proxy queue handles acknowledgments on its main work loop. This may increase latency of control signals if it is given acknowledgment callbacks that perform significant work. In that case, we could add a standalone acknowledgment routine similar to the other queues, so slow acknowledgments do not delay the core control logic. \ No newline at end of file diff --git a/libbeat/publisher/queue/proxy/batch.go b/libbeat/publisher/queue/proxy/batch.go deleted file mode 100644 index 1747af527ec..00000000000 --- a/libbeat/publisher/queue/proxy/batch.go +++ /dev/null @@ -1,110 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package proxyqueue - -type batch struct { - entries []queueEntry - - // Original number of entries (persists even if entries are freed). - originalEntryCount int - - producerACKs []producerACKData - - // When a batch is acknowledged, doneChan is closed to tell - // the queue to call the appropriate producer and metrics callbacks. - doneChan chan struct{} - - // Batches are collected in linked lists to preserve the order of - // acknowledgments. This field should only be used by batchList. - next *batch -} - -type batchList struct { - first *batch - last *batch -} - -// producerACKData tracks the number of events that need to be acknowledged -// from a single batch targeting a single producer. -type producerACKData struct { - producer *producer - count int -} - -func (b *batch) Count() int { - return b.originalEntryCount -} - -func (b *batch) Entry(i int) interface{} { - return b.entries[i].event -} - -func (b *batch) FreeEntries() { - b.entries = nil -} - -func (b *batch) Done() { - close(b.doneChan) -} - -func acksForEntries(entries []queueEntry) []producerACKData { - results := []producerACKData{} - // We traverse the list back to front, so we can coalesce multiple events - // into a single entry in the ACK data. - for i := len(entries) - 1; i >= 0; i-- { - entry := entries[i] - if producer := entry.producer; producer != nil { - if producer.producedCount > producer.consumedCount { - results = append(results, producerACKData{ - producer: producer, - count: int(producer.producedCount - producer.consumedCount), - }) - producer.consumedCount = producer.producedCount - } - } - } - return results -} - -func (l *batchList) add(b *batch) { - b.next = nil // Should be unneeded but let's be cautious - if l.last != nil { - l.last.next = b - } else { - l.first = b - } - l.last = b -} - -func (l *batchList) remove() *batch { - result := l.first - if l.first != nil { - l.first = l.first.next - if l.first == nil { - l.last = nil - } - } - return result -} - -func (l *batchList) nextDoneChan() chan struct{} { - if l.first != nil { - return l.first.doneChan - } - return nil -} diff --git a/libbeat/publisher/queue/proxy/broker.go b/libbeat/publisher/queue/proxy/broker.go deleted file mode 100644 index 832739cc26d..00000000000 --- a/libbeat/publisher/queue/proxy/broker.go +++ /dev/null @@ -1,286 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package proxyqueue - -import ( - "io" - "sync" - - "github.com/elastic/beats/v7/libbeat/publisher/queue" - "github.com/elastic/elastic-agent-libs/logp" -) - -type broker struct { - doneChan chan struct{} - - logger *logp.Logger - - // The maximum number of events in any pending batch - batchSize int - - /////////////////////////// - // api channels - - // Producers send queue entries to pushChan to add them to the next batch. - pushChan chan *pushRequest - - // Consumers send requests to getChan to read entries from the queue. - getChan chan getRequest - - // A callback that should be invoked when ACKs are processed. - // This is used to forward notifications back to the pipeline observer, - // which updates the beats registry if needed. This callback is included - // in batches created by the proxy queue, so they can invoke it when they - // receive a Done call. - ackCallback func(eventCount int) - - // Internal state for the broker's run loop. - queuedEntries []queueEntry - blockedRequests blockedRequests - outstandingBatches batchList - - // wait group for worker shutdown - wg sync.WaitGroup -} - -type Settings struct { - BatchSize int -} - -type queueEntry struct { - event interface{} - - // The producer that generated this event, or nil if this producer does - // not require ack callbacks. - producer *producer -} - -type blockedRequest struct { - next *blockedRequest - request *pushRequest -} - -// linked list helper to store an ordered list of blocked requests -type blockedRequests struct { - first *blockedRequest - last *blockedRequest -} - -const QueueType = "proxy" - -// FactoryForSettings is a simple wrapper around NewQueue so a concrete -// Settings object can be wrapped in a queue-agnostic interface for -// later use by the pipeline. -func FactoryForSettings(settings Settings) queue.QueueFactory { - return func( - logger *logp.Logger, - ackCallback func(eventCount int), - inputQueueSize int, - ) (queue.Queue, error) { - return NewQueue(logger, ackCallback, settings), nil - } -} - -// NewQueue creates a new broker based in-memory queue holding up to sz number of events. -// If waitOnClose is set to true, the broker will block on Close, until all internal -// workers handling incoming messages and ACKs have been shut down. -func NewQueue( - logger *logp.Logger, - ackCallback func(eventCount int), - settings Settings, -) *broker { - if logger == nil { - logger = logp.NewLogger("proxyqueue") - } - - b := &broker{ - doneChan: make(chan struct{}), - logger: logger, - batchSize: settings.BatchSize, - - // broker API channels - pushChan: make(chan *pushRequest), - getChan: make(chan getRequest), - - ackCallback: ackCallback, - } - - b.wg.Add(1) - go func() { - defer b.wg.Done() - b.run() - }() - - return b -} - -func (b *broker) Close() error { - close(b.doneChan) - b.wg.Wait() - return nil -} - -func (b *broker) QueueType() string { - return QueueType -} - -func (b *broker) BufferConfig() queue.BufferConfig { - return queue.BufferConfig{} -} - -func (b *broker) Producer(cfg queue.ProducerConfig) queue.Producer { - return newProducer(b, cfg.ACK) -} - -func (b *broker) Get(_ int) (queue.Batch, error) { - // The response channel needs a buffer size of 1 to guarantee that the - // broker routine will not block when sending the response. - responseChan := make(chan *batch, 1) - select { - case <-b.doneChan: - return nil, io.EOF - case b.getChan <- getRequest{responseChan: responseChan}: - } - - // if request has been sent, we are guaranteed a response - return <-responseChan, nil -} - -// Metrics returns an empty response because the proxy queue -// doesn't accumulate batches; for the real metadata, use either the -// Beats pipeline metrics, or the queue metrics in the shipper, which -// is where pending events are really queued when the proxy queue is -// in use. -func (b *broker) Metrics() (queue.Metrics, error) { - return queue.Metrics{}, nil -} - -func (b *broker) run() { - for { - var getChan chan getRequest - // Get requests are enabled if the current pending batch is nonempty. - if len(b.queuedEntries) > 0 { - getChan = b.getChan - } - - select { - case <-b.doneChan: - // The queue is closing, reject any requests that were blocked - // waiting for space in the queue. - blocked := b.blockedRequests - for req := blocked.next(); req != nil; req = blocked.next() { - req.responseChan <- false - } - return - - case req := <-b.pushChan: // producer pushing new event - b.handlePushRequest(req) - - case req := <-getChan: // consumer asking for next batch - b.handleGetRequest(req) - - case <-b.outstandingBatches.nextDoneChan(): - ackedBatch := b.outstandingBatches.remove() - // Notify any listening producers - for _, ack := range ackedBatch.producerACKs { - ack.producer.ackHandler(ack.count) - } - // Notify the pipeline's metrics reporter - //nolint:typecheck // this nil check is ok - if b.ackCallback != nil { - b.ackCallback(ackedBatch.originalEntryCount) - } - } - } -} - -func (b *broker) handlePushRequest(req *pushRequest) { - if len(b.queuedEntries) < b.batchSize { - b.queuedEntries = append(b.queuedEntries, - queueEntry{event: req.event, producer: req.producer}) - if req.producer != nil { - req.producer.producedCount++ - } - req.responseChan <- true - } else if req.canBlock { - // If there isn't room for the event, but the producer wants - // to block until there is, add it to the queue. - b.blockedRequests.add(req) - } else { - // The pending batch is full, the producer doesn't want to - // block, so return immediate failure. - req.responseChan <- false - } -} - -func (b *broker) handleGetRequest(req getRequest) { - acks := acksForEntries(b.queuedEntries) - - newBatch := &batch{ - entries: b.queuedEntries, - originalEntryCount: len(b.queuedEntries), - producerACKs: acks, - doneChan: make(chan struct{}), - } - b.outstandingBatches.add(newBatch) - req.responseChan <- newBatch - - // Unblock any pending requests we can fit into the new batch. - entries := []queueEntry{} - for len(entries) < b.batchSize { - req := b.blockedRequests.next() - if req == nil { - // No more blocked requests - break - } - - entries = append(entries, - queueEntry{event: req.event, producer: req.producer}) - if req.producer != nil { - req.producer.producedCount++ - } - req.responseChan <- true - } - - // Reset the pending entries - b.queuedEntries = entries -} - -// Adds a new request to the end of the current list. -func (b *blockedRequests) add(request *pushRequest) { - blockedReq := &blockedRequest{request: request} - if b.first == nil { - b.first = blockedReq - } else { - b.last.next = blockedReq - } - b.last = blockedReq -} - -// Removes the oldest request from the list and returns it. -func (b *blockedRequests) next() *pushRequest { - var result *pushRequest - if b.first != nil { - result = b.first.request - b.first = b.first.next - if b.first == nil { - b.last = nil - } - } - return result -} diff --git a/libbeat/publisher/queue/proxy/diagrams/broker.d2 b/libbeat/publisher/queue/proxy/diagrams/broker.d2 deleted file mode 100644 index 7b2f1cccb32..00000000000 --- a/libbeat/publisher/queue/proxy/diagrams/broker.d2 +++ /dev/null @@ -1,54 +0,0 @@ -# A diagram of the Beats pipeline and the proxy queue's interaction -# with it. -# To regenerate the image after changing this file, run: -# d2 broker.d2 broker.svg -# To live-edit this file with immediate regeneration of the diagram, run: -# d2 --watch broker.d2 broker.svg - -Input - -producer { - ackHandler -} - -queue: Proxy Queue (broker) { - pushChan - getChan -} - -Input -> producer: Publish -producer.ackHandler -> Input: Event acknowledgment -producer -> queue.pushChan: pushRequest -queue.pushChan -> producer: result - -queueReader { - explanation: |md - `queueReader` is a worker that reads raw batches (satisfying the - `queue.Batch` interface, in this case via `proxyqueue.batch`) - from the queue, wraps them in a `publisher.Batch` interface - (`ttlBatch`) to support pipeline operations like retry/error - handling, and hands them off to `eventConsumer` which - distributes them to output workers. - | -} - -queueReader -> queue.getChan: getRequest -queue.getChan -> queueReader: proxyqueue\.batch - -eventConsumer -> queueReader: queueReaderRequest -queueReader -> eventConsumer: ttlBatch - -eventConsumer { - explanation: |md - `eventConsumer` is a worker that distributes event batches to - (potentially) multiple output workers. When a batch fails, the - output sends it back to `eventConsumer` for redistribution. - | -} - -out1: Output Worker -out2: ... - -eventConsumer -> out1: Publish(ttlBatch) -eventConsumer -> out2 - diff --git a/libbeat/publisher/queue/proxy/diagrams/broker.svg b/libbeat/publisher/queue/proxy/diagrams/broker.svg deleted file mode 100644 index 9e89cf65550..00000000000 --- a/libbeat/publisher/queue/proxy/diagrams/broker.svg +++ /dev/null @@ -1,847 +0,0 @@ - -InputproducerProxy Queue (broker)queueReadereventConsumerOutput Worker...ackHandlerpushChangetChan

queueReader is a worker that reads raw batches (satisfying the
-queue.Batch interface, in this case via proxyqueue.batch)
-from the queue, wraps them in a publisher.Batch interface
-(ttlBatch) to support pipeline operations like retry/error
-handling, and hands them off to eventConsumer which
-distributes them to output workers.

-

eventConsumer is a worker that distributes event batches to
-(potentially) multiple output workers. When a batch fails, the
-output sends it back to eventConsumer for redistribution.

-
PublishEvent acknowledgmentpushRequestresultgetRequestproxyqueue.batchqueueReaderRequestttlBatchPublish(ttlBatch) - - - - - - - - - - -
diff --git a/libbeat/publisher/queue/proxy/internal_api.go b/libbeat/publisher/queue/proxy/internal_api.go deleted file mode 100644 index 8e7e972ac21..00000000000 --- a/libbeat/publisher/queue/proxy/internal_api.go +++ /dev/null @@ -1,41 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package proxyqueue - -// producer -> broker API - -type pushRequest struct { - event interface{} - producer *producer - - // After receiving a request, the broker will respond on this channel - // with whether the new entry was accepted or not. - responseChan chan bool - - // If canBlock is true, then the broker will store this request until - // either the request can be accepted or the queue itself is closed. - // Otherwise it will immediately reject the requst if there is no - // space in the pending buffer. - canBlock bool -} - -// consumer -> broker API - -type getRequest struct { - responseChan chan *batch // channel to send response to -} diff --git a/libbeat/publisher/queue/proxy/produce.go b/libbeat/publisher/queue/proxy/produce.go deleted file mode 100644 index 87a01450e54..00000000000 --- a/libbeat/publisher/queue/proxy/produce.go +++ /dev/null @@ -1,81 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package proxyqueue - -import ( - "github.com/elastic/beats/v7/libbeat/publisher/queue" -) - -type producer struct { - broker *broker - cancelled bool - // If ackHandler is nil then this producer does not listen to acks. - ackHandler func(count int) - - // producedCount and consumedCount are used to assemble batches and - // should only be accessed by the broker's main loop. - producedCount uint64 - consumedCount uint64 -} - -func newProducer(b *broker, ackHandler func(count int)) queue.Producer { - return &producer{ - broker: b, - ackHandler: ackHandler} -} - -func (p *producer) makePushRequest(event interface{}, canBlock bool) *pushRequest { - req := &pushRequest{ - event: event, - responseChan: make(chan bool, 1), - canBlock: canBlock, - } - if p.ackHandler != nil { - req.producer = p - } - return req -} - -func (p *producer) Publish(event interface{}) (queue.EntryID, bool) { - if p.cancelled { - return 0, false - } - return 0, p.publish(p.makePushRequest(event, true)) -} - -func (p *producer) TryPublish(event interface{}) (queue.EntryID, bool) { - if p.cancelled { - return 0, false - } - return 0, p.publish(p.makePushRequest(event, false)) -} - -func (p *producer) Cancel() int { - p.cancelled = true - return 0 -} - -func (p *producer) publish(req *pushRequest) bool { - select { - case p.broker.pushChan <- req: - return <-req.responseChan - case <-p.broker.doneChan: - // The queue is shutting down - return false - } -} diff --git a/libbeat/publisher/queue/proxy/queue_test.go b/libbeat/publisher/queue/proxy/queue_test.go deleted file mode 100644 index 437216e2d7a..00000000000 --- a/libbeat/publisher/queue/proxy/queue_test.go +++ /dev/null @@ -1,232 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package proxyqueue - -import ( - "fmt" - "sync" - "testing" - "time" - - "github.com/stretchr/testify/assert" - - "github.com/elastic/elastic-agent-libs/logp" - - "github.com/elastic/beats/v7/libbeat/publisher/queue" -) - -// Because acknowledgments are partially asynchronous (acknowledging -// a batch notifies the queue, which then notifies the original producer -// callback), we can't make a fully deterministic test for ACK counts -// since in principle it depends on the scheduler. -// Nevertheless, in practice the latency should be very low. testACKListener -// is a helper object to track ACK state while allowing for timeouts when -// some propagation delay is unavoidable. -type testACKListener struct { - sync.Mutex - - ackedCount int - - // If not enough ACKs have been received yet, waitForTotalACKs sets - // waiting to true and listens on updateChan. - // If waiting is set when the ACK callback is called, then it sends - // on updateChan to wake up waitForTotalACKs. - waiting bool - updateChan chan struct{} -} - -func TestBasicEventFlow(t *testing.T) { - logger := logp.NewLogger("proxy-queue-tests") - - // Create a proxy queue where each batch is at most 2 events - testQueue := NewQueue(logger, nil, Settings{BatchSize: 2}) - defer testQueue.Close() - - listener := newTestACKListener() - producer := testQueue.Producer(queue.ProducerConfig{ - ACK: listener.ACK, - }) - // Try to publish 3 events, only the first two should succeed until we read a batch - _, success := producer.TryPublish(1) - assert.True(t, success) - _, success = producer.TryPublish(2) - assert.True(t, success) - _, success = producer.TryPublish(3) - assert.False(t, success, "Current batch should only fit two events") - - batch, err := testQueue.Get(0) - assert.NoError(t, err, "Should be able to read a batch") - assert.Equal(t, 0, listener.ackedCount, "No batches have been acked yet") - batch.Done() - assert.NoError(t, listener.waitForTotalACKs(2, time.Second)) - - // Make sure that reading an event unblocked the queue - _, success = producer.TryPublish(4) - assert.True(t, success, "Queue should accept incoming event") -} - -func TestBlockedProducers(t *testing.T) { - logger := logp.NewLogger("proxy-queue-tests") - - // Create a proxy queue where each batch is at most 2 events - testQueue := NewQueue(logger, nil, Settings{BatchSize: 2}) - defer testQueue.Close() - - listener := newTestACKListener() - - // Create many producer goroutines and send an event through each - // one. Only two events can be in the queue at any one time, so - // the rest of the producers will block until we read enough batches - // from the queue. - const PRODUCER_COUNT = 10 - for i := 0; i < PRODUCER_COUNT; i++ { - go func(producerID int) { - producer := testQueue.Producer(queue.ProducerConfig{ - ACK: listener.ACK, - }) - producer.Publish(producerID) - }(i) - } - - consumedEventCount := 0 - batches := []queue.Batch{} - // First, read all the events. We should be able to do this successfully - // even before any have been acknowledged. - for consumedEventCount < PRODUCER_COUNT { - batch, err := testQueue.Get(0) - assert.NoError(t, err) - consumedEventCount += batch.Count() - batches = append(batches, batch) - } - - assert.Equal(t, 0, listener.ackedCount, "No batches have been acked yet") - for _, batch := range batches { - batch.Done() - } - assert.NoError(t, listener.waitForTotalACKs(PRODUCER_COUNT, time.Second)) -} - -func TestOutOfOrderACK(t *testing.T) { - logger := logp.NewLogger("proxy-queue-tests") - - // Create a proxy queue where each batch is at most 2 events - testQueue := NewQueue(logger, nil, Settings{BatchSize: 2}) - defer testQueue.Close() - - listener := newTestACKListener() - producer := testQueue.Producer(queue.ProducerConfig{ - ACK: listener.ACK, - }) - - const BATCH_COUNT = 10 - batches := []queue.Batch{} - for i := 0; i < BATCH_COUNT; i++ { - // Publish two events - _, success := producer.Publish(0) - assert.True(t, success, "Publish should succeed") - _, success = producer.Publish(0) - assert.True(t, success, "Publish should succeed") - - // Consume a batch, which should contain the events we just published - batch, err := testQueue.Get(0) - assert.NoError(t, err) - batch.FreeEntries() - assert.Equal(t, 2, batch.Count()) - - batches = append(batches, batch) - } - - // Acknowledge all except the first batch - for _, batch := range batches[1:] { - batch.Done() - } - // Make sure that no ACKs come in even if we wait a bit - err := listener.waitForTotalACKs(1, 50*time.Millisecond) - assert.Error(t, err, "No ACK callbacks should have been called yet") - - // ACKing the first batch should unblock all the rest - batches[0].Done() - assert.NoError(t, listener.waitForTotalACKs(BATCH_COUNT*2, time.Second)) -} - -func TestWriteAfterClose(t *testing.T) { - logger := logp.NewLogger("proxy-queue-tests") - - testQueue := NewQueue(logger, nil, Settings{BatchSize: 2}) - producer := testQueue.Producer(queue.ProducerConfig{}) - testQueue.Close() - - // Make sure Publish fails instead of blocking - _, success := producer.Publish(1) - assert.False(t, success, "Publish should fail since queue is closed") -} - -func newTestACKListener() *testACKListener { - return &testACKListener{ - updateChan: make(chan struct{}, 1), - } -} - -// ACK should be provided to the queue producer. It can be safely called from -// multiple goroutines. -func (l *testACKListener) ACK(count int) { - l.Lock() - l.ackedCount += count - if l.waiting { - // If waitFortotalACKs is waiting on something, wake it up so it can retry. - l.waiting = false - l.updateChan <- struct{}{} - } - l.Unlock() -} - -// flush should be called on timeout, to clear updateChan if needed. -func (l *testACKListener) flush() { - l.Lock() - select { - case <-l.updateChan: - default: - } - l.waiting = false - l.Unlock() -} - -// waitForTotalACKs waits until the specified number of total ACKs have been -// received, or the timeout interval is exceeded. It should only be called -// from a single goroutine at once. -func (l *testACKListener) waitForTotalACKs(targetCount int, timeout time.Duration) error { - timeoutChan := time.After(timeout) - for { - l.Lock() - if l.ackedCount >= targetCount { - l.Unlock() - return nil - } - // Not enough ACKs have been sent yet, so we have to wait. - l.waiting = true - l.Unlock() - select { - case <-l.updateChan: - // New ACKs came in, retry - continue - case <-timeoutChan: - l.flush() - return fmt.Errorf("timed out waiting for acknowledgments: have %d, wanted %d", l.ackedCount, targetCount) - } - } -} From 3203e40d3a935d9cdc4db9a74eb109a6a1848d45 Mon Sep 17 00:00:00 2001 From: Michael Wolf Date: Fri, 5 Apr 2024 09:51:53 -0700 Subject: [PATCH 094/313] Auditbeat Processor to enrich auditd events with session view information (#37640) This adds a add_session_metadata processor to auditbeat which will enrich auditd process events with information needed to enable the Kibana session viewer on the events. In this implementation, eBPF is used to collect information on all processes running on the system, which are added to a process database. When a process event is run through the processor, the DB will be read to retrieve information on the processes related to the process in the event (the processes's parent, session leader,process group leader and entry leader will be retrieved). Then the event will be enriched with the metadata on these related processes, which can enable use of session view on the data --- CHANGELOG.next.asciidoc | 3 + x-pack/auditbeat/cmd/root.go | 3 + .../sessionmd/add_session_metadata.go | 215 +++ .../sessionmd/add_session_metadata_test.go | 378 +++++ .../auditbeat/processors/sessionmd/config.go | 22 + x-pack/auditbeat/processors/sessionmd/doc.go | 7 + .../processors/sessionmd/processdb/db.go | 668 +++++++++ .../processors/sessionmd/processdb/db_test.go | 24 + .../sessionmd/processdb/entry_leader_test.go | 1244 +++++++++++++++++ .../processors/sessionmd/procfs/mock.go | 42 + .../processors/sessionmd/procfs/procfs.go | 252 ++++ .../provider/ebpf_provider/ebpf_provider.go | 157 +++ .../processors/sessionmd/provider/provider.go | 15 + .../processors/sessionmd/timeutils/time.go | 77 + .../sessionmd/timeutils/time_test.go | 24 + .../processors/sessionmd/types/events.go | 94 ++ .../processors/sessionmd/types/process.go | 456 ++++++ 17 files changed, 3681 insertions(+) create mode 100644 x-pack/auditbeat/processors/sessionmd/add_session_metadata.go create mode 100644 x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go create mode 100644 x-pack/auditbeat/processors/sessionmd/config.go create mode 100644 x-pack/auditbeat/processors/sessionmd/doc.go create mode 100644 x-pack/auditbeat/processors/sessionmd/processdb/db.go create mode 100644 x-pack/auditbeat/processors/sessionmd/processdb/db_test.go create mode 100644 x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go create mode 100644 x-pack/auditbeat/processors/sessionmd/procfs/mock.go create mode 100644 x-pack/auditbeat/processors/sessionmd/procfs/procfs.go create mode 100644 x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go create mode 100644 x-pack/auditbeat/processors/sessionmd/provider/provider.go create mode 100644 x-pack/auditbeat/processors/sessionmd/timeutils/time.go create mode 100644 x-pack/auditbeat/processors/sessionmd/timeutils/time_test.go create mode 100644 x-pack/auditbeat/processors/sessionmd/types/events.go create mode 100644 x-pack/auditbeat/processors/sessionmd/types/process.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f0ad6e6a5c1..af97c40c0ac 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -138,6 +138,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Auditbeat* +- Added `add_session_metadata` processor, which enables session viewer on Auditbeat data. {pull}37640[37640] +- Add linux capabilities to processes in the system/process. {pull}37453[37453] +- Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] - Add linux capabilities to processes in the system/process. {pull}37453[37453] - Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] - Add process data to file events (Linux only, eBPF backend). {pull}38199[38199] diff --git a/x-pack/auditbeat/cmd/root.go b/x-pack/auditbeat/cmd/root.go index 60382602060..4a9b32b56f1 100644 --- a/x-pack/auditbeat/cmd/root.go +++ b/x-pack/auditbeat/cmd/root.go @@ -20,6 +20,9 @@ import ( // Register Auditbeat x-pack modules. _ "github.com/elastic/beats/v7/x-pack/auditbeat/include" _ "github.com/elastic/beats/v7/x-pack/libbeat/include" + + // Import processors + _ "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd" ) // Name of the beat diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go new file mode 100644 index 00000000000..50636f9d476 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go @@ -0,0 +1,215 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package sessionmd + +import ( + "context" + "fmt" + "reflect" + "strconv" + "time" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/processors" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/processdb" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/procfs" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/provider" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider" + cfg "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +const ( + processorName = "add_session_metadata" + logName = "processor." + processorName +) + +func init() { + processors.RegisterPlugin(processorName, New) +} + +type addSessionMetadata struct { + config config + logger *logp.Logger + db *processdb.DB + provider provider.Provider +} + +func New(cfg *cfg.C) (beat.Processor, error) { + c := defaultConfig() + if err := cfg.Unpack(&c); err != nil { + return nil, fmt.Errorf("fail to unpack the %v configuration: %w", processorName, err) + } + + logger := logp.NewLogger(logName) + + ctx := context.Background() + reader := procfs.NewProcfsReader(*logger) + db, err := processdb.NewDB(reader, *logger) + if err != nil { + return nil, fmt.Errorf("failed to create DB: %w", err) + } + + backfilledPIDs := db.ScrapeProcfs() + logger.Debugf("backfilled %d processes", len(backfilledPIDs)) + + switch c.Backend { + case "auto": + // "auto" always uses ebpf, as it's currently the only backend + fallthrough + case "ebpf": + p, err := ebpf_provider.NewProvider(ctx, logger, db) + if err != nil { + return nil, fmt.Errorf("failed to create ebpf provider: %w", err) + } + return &addSessionMetadata{ + config: c, + logger: logger, + db: db, + provider: p, + }, nil + default: + return nil, fmt.Errorf("unknown backend configuration") + } +} + +func (p *addSessionMetadata) Run(ev *beat.Event) (*beat.Event, error) { + _, err := ev.GetValue(p.config.PIDField) + if err != nil { + // Do not attempt to enrich events without PID; it's not a supported event + return ev, nil //nolint:nilerr // Running on events without PID is expected + } + + err = p.provider.UpdateDB(ev) + if err != nil { + return ev, err + } + + result, err := p.enrich(ev) + if err != nil { + return ev, fmt.Errorf("enriching event: %w", err) + } + return result, nil +} + +func (p *addSessionMetadata) String() string { + return fmt.Sprintf("%v=[backend=%s, pid_field=%s, replace_fields=%t]", + processorName, p.config.Backend, p.config.PIDField, p.config.ReplaceFields) +} + +func (p *addSessionMetadata) enrich(ev *beat.Event) (*beat.Event, error) { + pidIf, err := ev.GetValue(p.config.PIDField) + if err != nil { + return nil, err + } + pid, err := pidToUInt32(pidIf) + if err != nil { + return nil, fmt.Errorf("cannot parse pid field '%s': %w", p.config.PIDField, err) + } + + fullProcess, err := p.db.GetProcess(pid) + if err != nil { + return nil, fmt.Errorf("pid %v not found in db: %w", pid, err) + } + + processMap := fullProcess.ToMap() + + if b, err := ev.Fields.HasKey("process"); !b || err != nil { + return nil, fmt.Errorf("no process field in event") + } + m, ok := tryToMapStr(ev.Fields["process"]) + if !ok { + return nil, fmt.Errorf("process field type not supported") + } + + result := ev.Clone() + err = mapstr.MergeFieldsDeep(m, processMap, true) + if err != nil { + return nil, fmt.Errorf("merging enriched fields with event: %w", err) + } + result.Fields["process"] = m + + if p.config.ReplaceFields { + if err := p.replaceFields(result); err != nil { + return nil, fmt.Errorf("replace fields: %w", err) + } + } + return result, nil +} + +// pidToUInt32 converts PID value to uint32 +func pidToUInt32(value interface{}) (pid uint32, err error) { + switch v := value.(type) { + case string: + nr, err := strconv.Atoi(v) + if err != nil { + return 0, fmt.Errorf("error converting string to integer: %w", err) + } + pid = uint32(nr) + case uint32: + pid = v + case int, int8, int16, int32, int64: + pid64 := reflect.ValueOf(v).Int() + if pid = uint32(pid64); int64(pid) != pid64 { + return 0, fmt.Errorf("integer out of range: %d", pid64) + } + case uint, uintptr, uint8, uint16, uint64: + pidu64 := reflect.ValueOf(v).Uint() + if pid = uint32(pidu64); uint64(pid) != pidu64 { + return 0, fmt.Errorf("integer out of range: %d", pidu64) + } + default: + return 0, fmt.Errorf("not an integer or string, but %T", v) + } + return pid, nil +} + +// replaceFields replaces event fields with values suitable user with the session viewer in Kibana +// The current version of session view in Kibana expects different values than what are used by auditbeat +// for some fields. This function converts these field to have values that will work with session view. +// +// This function is temporary, and can be removed when this Kibana issue is completed: https://github.com/elastic/kibana/issues/179396. +func (p *addSessionMetadata) replaceFields(ev *beat.Event) error { + kind, err := ev.Fields.GetValue("event.kind") + if err != nil { + return err + } + isAuditdEvent, err := ev.Fields.HasKey("auditd") + if err != nil { + return err + } + if kind == "event" && isAuditdEvent { + // process start + syscall, err := ev.Fields.GetValue("auditd.data.syscall") + if err != nil { + return nil //nolint:nilerr // processor can be called on unsupported events; not an error + } + switch syscall { + case "execveat", "execve": + ev.Fields.Put("event.action", []string{"exec", "fork"}) + ev.Fields.Put("event.type", []string{"start"}) + + case "exit_group": + ev.Fields.Put("event.action", []string{"end"}) + ev.Fields.Put("event.type", []string{"end"}) + ev.Fields.Put("process.end", time.Now()) + } + } + return nil +} + +func tryToMapStr(v interface{}) (mapstr.M, bool) { + switch m := v.(type) { + case mapstr.M: + return m, true + case map[string]interface{}: + return mapstr.M(m), true + default: + return nil, false + } +} diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go new file mode 100644 index 00000000000..4890505aac4 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go @@ -0,0 +1,378 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package sessionmd + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/assert" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/processdb" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/procfs" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/types" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +var ( + enrichTests = []struct { + testName string + mockProcesses []types.ProcessExecEvent + config config + input beat.Event + expected beat.Event + expect_error bool + }{ + { + testName: "enrich process", + config: config{ + ReplaceFields: false, + PIDField: "process.pid", + }, + mockProcesses: []types.ProcessExecEvent{ + { + PIDs: types.PIDInfo{ + Tid: uint32(100), + Tgid: uint32(100), + Ppid: uint32(50), + Pgid: uint32(100), + Sid: uint32(40), + }, + CWD: "/", + Filename: "/bin/ls", + }, + { + PIDs: types.PIDInfo{ + Tid: uint32(50), + Tgid: uint32(50), + Ppid: uint32(40), + Sid: uint32(40), + }, + }, + { + PIDs: types.PIDInfo{ + Tid: uint32(40), + Tgid: uint32(40), + Ppid: uint32(1), + Sid: uint32(1), + }, + }, + }, + input: beat.Event{ + Fields: mapstr.M{ + "process": mapstr.M{ + "pid": uint32(100), + }, + }, + }, + expected: beat.Event{ + Fields: mapstr.M{ + "process": mapstr.M{ + "executable": "/bin/ls", + "working_directory": "/", + "pid": uint32(100), + "parent": mapstr.M{ + "pid": uint32(50), + }, + "session_leader": mapstr.M{ + "pid": uint32(40), + }, + "group_leader": mapstr.M{ + "pid": uint32(100), + }, + }, + }, + }, + expect_error: false, + }, + { + testName: "no PID field in event", + config: config{ + ReplaceFields: false, + PIDField: "process.pid", + }, + input: beat.Event{ + Fields: mapstr.M{ + "process": mapstr.M{ + "executable": "ls", + "working_directory": "/", + "parent": mapstr.M{ + "pid": uint32(100), + }, + }, + }, + }, + expect_error: true, + }, + { + testName: "PID not number", + config: config{ + ReplaceFields: false, + PIDField: "process.pid", + }, + input: beat.Event{ + Fields: mapstr.M{ + "process": mapstr.M{ + "pid": "xyz", + "executable": "ls", + "working_directory": "/", + "parent": mapstr.M{ + "pid": uint32(50), + }, + }, + }, + }, + expect_error: true, + }, + { + testName: "PID not in DB", + config: config{ + ReplaceFields: false, + PIDField: "process.pid", + }, + input: beat.Event{ + Fields: mapstr.M{ + "process": mapstr.M{ + "pid": "100", + "executable": "ls", + "working_directory": "/", + "parent": mapstr.M{ + "pid": uint32(100), + }, + }, + }, + }, + expect_error: true, + }, + { + testName: "process field not in event", + // This event, without a "process" field, is not supported by enrich, it should be handled gracefully + config: config{ + ReplaceFields: false, + PIDField: "action.pid", + }, + input: beat.Event{ + Fields: mapstr.M{ + "action": mapstr.M{ + "pid": "1010", + }, + }, + }, + expect_error: true, + }, + { + testName: "process field not mapstr", + // Unsupported process field type should be handled gracefully + config: config{ + ReplaceFields: false, + PIDField: "action.pid", + }, + input: beat.Event{ + Fields: mapstr.M{ + "action": mapstr.M{ + "pid": "100", + }, + "process": map[int]int{ + 10: 100, + 20: 200, + }, + }, + }, + expect_error: true, + }, + { + testName: "enrich event with map[string]any process field", + config: config{ + ReplaceFields: false, + PIDField: "process.pid", + }, + mockProcesses: []types.ProcessExecEvent{ + { + PIDs: types.PIDInfo{ + Tid: uint32(100), + Tgid: uint32(100), + Ppid: uint32(50), + Pgid: uint32(100), + Sid: uint32(40), + }, + CWD: "/", + Filename: "/bin/ls", + }, + { + PIDs: types.PIDInfo{ + Tid: uint32(50), + Tgid: uint32(50), + Ppid: uint32(40), + Sid: uint32(40), + }, + }, + { + PIDs: types.PIDInfo{ + Tid: uint32(40), + Tgid: uint32(40), + Ppid: uint32(1), + Sid: uint32(1), + }, + }, + }, + input: beat.Event{ + Fields: map[string]any{ + "process": map[string]any{ + "pid": uint32(100), + }, + }, + }, + expected: beat.Event{ + Fields: mapstr.M{ + "process": mapstr.M{ + "executable": "/bin/ls", + "working_directory": "/", + "pid": uint32(100), + "parent": mapstr.M{ + "pid": uint32(50), + }, + "session_leader": mapstr.M{ + "pid": uint32(40), + }, + "group_leader": mapstr.M{ + "pid": uint32(100), + }, + }, + }, + }, + expect_error: false, + }, + } + + filterTests = []struct { + testName string + mx mapstr.M + my mapstr.M + expected bool + }{ + { + testName: "equal", + mx: mapstr.M{ + "key1": "A", + "key2": mapstr.M{ + "key2_2": 2.0, + }, + "key3": 1, + }, + my: mapstr.M{ + "key1": "A", + "key2": mapstr.M{ + "key2_2": 2.0, + }, + "key3": 1, + }, + expected: true, + }, + { + testName: "mismatched values", + mx: mapstr.M{ + "key1": "A", + "key2": "B", + "key3": "C", + }, + my: mapstr.M{ + "key1": "A", + "key2": "X", + "key3": "C", + }, + expected: false, + }, + { + testName: "ignore key only in 2nd map", + mx: mapstr.M{ + "key1": "A", + "key2": "B", + }, + my: mapstr.M{ + "key1": "A", + "key2": "B", + "key3": "C", + }, + expected: true, + }, + { + testName: "nested mismatch", + mx: mapstr.M{ + "key1": "A", + "key2": mapstr.M{ + "key2_2": "B", + }, + }, + my: mapstr.M{ + "key1": "A", + "key2": mapstr.M{ + "key2_2": 2.0, + }, + "key3": 1, + }, + expected: false, + }, + } + + logger = logp.NewLogger("add_session_metadata_test") +) + +func TestEnrich(t *testing.T) { + for _, tt := range enrichTests { + reader := procfs.NewMockReader() + db, err := processdb.NewDB(reader, *logger) + assert.Nil(t, err) + + for _, ev := range tt.mockProcesses { + db.InsertExec(ev) + } + s := addSessionMetadata{ + logger: logger, + db: db, + config: tt.config, + } + + // avoid taking address of loop variable + i := tt.input + actual, err := s.enrich(&i) + if tt.expect_error { + assert.Error(t, err, "%s: error unexpectedly nil", tt.testName) + } else { + assert.Nil(t, err, "%s: enrich error: %w", tt.testName, err) + assert.NotNil(t, actual, "%s: returned nil event", tt.testName) + + //Validate output + if diff := cmp.Diff(tt.expected.Fields, actual.Fields, ignoreMissingFrom(tt.expected.Fields)); diff != "" { + t.Errorf("field mismatch:\n%s", diff) + } + } + } +} + +// IgnoreMissingFrom returns a filter that will ignore all fields missing from m +func ignoreMissingFrom(m mapstr.M) cmp.Option { + return cmp.FilterPath(func(p cmp.Path) bool { + mi, ok := p.Index(-1).(cmp.MapIndex) + if !ok { + return false + } + vx, _ := mi.Values() + return !vx.IsValid() + }, cmp.Ignore()) +} + +// TestFilter ensures `ignoreMissingFrom` filter is working as expected +// Note: This validates test code only +func TestFilter(t *testing.T) { + for _, tt := range filterTests { + if eq := cmp.Equal(tt.mx, tt.my, ignoreMissingFrom(tt.mx)); eq != tt.expected { + t.Errorf("%s: unexpected comparator result", tt.testName) + } + } +} diff --git a/x-pack/auditbeat/processors/sessionmd/config.go b/x-pack/auditbeat/processors/sessionmd/config.go new file mode 100644 index 00000000000..31c07c9065f --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/config.go @@ -0,0 +1,22 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package sessionmd + +// Config for add_session_metadata processor. +type config struct { + Backend string `config:"backend"` + ReplaceFields bool `config:"replace_fields"` + PIDField string `config:"pid_field"` +} + +func defaultConfig() config { + return config{ + Backend: "auto", + ReplaceFields: false, + PIDField: "process.pid", + } +} diff --git a/x-pack/auditbeat/processors/sessionmd/doc.go b/x-pack/auditbeat/processors/sessionmd/doc.go new file mode 100644 index 00000000000..6067081c82c --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/doc.go @@ -0,0 +1,7 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +// sessionmd provides a Beat processor that can enrich process event documents with +// additional session metadata for the processes. +package sessionmd diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/db.go b/x-pack/auditbeat/processors/sessionmd/processdb/db.go new file mode 100644 index 00000000000..6b2de897973 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/processdb/db.go @@ -0,0 +1,668 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package processdb + +import ( + "encoding/base64" + "errors" + "fmt" + "os" + "path" + "slices" + "sort" + "strconv" + "strings" + "sync" + "time" + + "github.com/elastic/beats/v7/libbeat/common/capabilities" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/procfs" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/timeutils" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/types" + "github.com/elastic/elastic-agent-libs/logp" +) + +type TTYType int + +const ( + TTYUnknown TTYType = iota + Pts + TTY + TTYConsole +) + +type EntryType string + +const ( + Init EntryType = "init" + Sshd EntryType = "sshd" + Ssm EntryType = "ssm" + Container EntryType = "container" + Terminal EntryType = "terminal" + EntryConsole EntryType = "console" + EntryUnknown EntryType = "unknown" +) + +var containerRuntimes = [...]string{ + "containerd-shim", + "runc", + "conmon", +} + +// "filtered" executables are executables that relate to internal +// implementation details of entry mechanisms. The set of circumstances under +// which they can become an entry leader are reduced compared to other binaries +// (see implementation and unit tests). +var filteredExecutables = [...]string{ + "runc", + "containerd-shim", + "calico-node", + "check-status", + "conmon", +} + +const ( + ptsMinMajor = 136 + ptsMaxMajor = 143 + ttyMajor = 4 + consoleMaxMinor = 63 + ttyMaxMinor = 255 +) + +type Process struct { + PIDs types.PIDInfo + Creds types.CredInfo + CTTY types.TTYDev + Argv []string + Cwd string + Env map[string]string + Filename string +} + +var ( + bootID string + pidNsInode uint64 + initError error + once sync.Once +) + +func readBootID() (string, error) { + bootID, err := os.ReadFile("/proc/sys/kernel/random/boot_id") + if err != nil { + panic(fmt.Sprintf("could not read /proc/sys/kernel/random/boot_id: %v", err)) + } + + return strings.TrimRight(string(bootID), "\n"), nil +} + +func readPIDNsInode() (uint64, error) { + var ret uint64 + + pidNsInodeRaw, err := os.Readlink("/proc/self/ns/pid") + if err != nil { + panic(fmt.Sprintf("could not read /proc/self/ns/pid: %v", err)) + } + + if _, err = fmt.Sscanf(pidNsInodeRaw, "pid:[%d]", &ret); err != nil { + panic(fmt.Sprintf("could not parse contents of /proc/self/ns/pid (%s): %v", pidNsInodeRaw, err)) + } + + return ret, nil +} + +func pidInfoFromProto(p types.PIDInfo) types.PIDInfo { + return types.PIDInfo{ + StartTimeNS: p.StartTimeNS, + Tid: p.Tid, + Tgid: p.Tgid, + Vpid: p.Vpid, + Ppid: p.Ppid, + Pgid: p.Pgid, + Sid: p.Sid, + } +} + +func credInfoFromProto(p types.CredInfo) types.CredInfo { + return types.CredInfo{ + Ruid: p.Ruid, + Rgid: p.Rgid, + Euid: p.Euid, + Egid: p.Egid, + Suid: p.Suid, + Sgid: p.Sgid, + CapPermitted: p.CapPermitted, + CapEffective: p.CapEffective, + } +} + +func ttyTermiosFromProto(p types.TTYTermios) types.TTYTermios { + return types.TTYTermios{ + CIflag: p.CIflag, + COflag: p.COflag, + CLflag: p.CLflag, + CCflag: p.CCflag, + } +} + +func ttyWinsizeFromProto(p types.TTYWinsize) types.TTYWinsize { + return types.TTYWinsize{ + Rows: p.Rows, + Cols: p.Cols, + } +} + +func ttyDevFromProto(p types.TTYDev) types.TTYDev { + return types.TTYDev{ + Major: p.Major, + Minor: p.Minor, + Winsize: ttyWinsizeFromProto(p.Winsize), + Termios: ttyTermiosFromProto(p.Termios), + } +} + +func initialize() { + var err error + bootID, err = readBootID() + if err != nil { + initError = err + return + } + pidNsInode, err = readPIDNsInode() + if err != nil { + initError = err + } +} + +type DB struct { + mutex sync.RWMutex + logger *logp.Logger + processes map[uint32]Process + entryLeaders map[uint32]EntryType + entryLeaderRelationships map[uint32]uint32 + procfs procfs.Reader +} + +func NewDB(reader procfs.Reader, logger logp.Logger) (*DB, error) { + once.Do(initialize) + if initError != nil { + return &DB{}, initError + } + return &DB{ + logger: logp.NewLogger("processdb"), + processes: make(map[uint32]Process), + entryLeaders: make(map[uint32]EntryType), + entryLeaderRelationships: make(map[uint32]uint32), + procfs: reader, + }, nil +} + +func (db *DB) calculateEntityIDv1(pid uint32, startTime time.Time) string { + return base64.StdEncoding.EncodeToString( + []byte( + fmt.Sprintf("%d__%s__%d__%d", + pidNsInode, + bootID, + uint64(pid), + uint64(startTime.Unix()), + ), + ), + ) +} + +// `path.Base` returns a '.' for empty strings, this just special cases that +// situation to return an empty string +func basename(pathStr string) string { + if pathStr == "" { + return "" + } + + return path.Base(pathStr) +} + +func (db *DB) InsertFork(fork types.ProcessForkEvent) { + db.mutex.Lock() + defer db.mutex.Unlock() + + pid := fork.ChildPIDs.Tgid + ppid := fork.ParentPIDs.Tgid + if entry, ok := db.processes[ppid]; ok { + entry.PIDs = pidInfoFromProto(fork.ChildPIDs) + entry.Creds = credInfoFromProto(fork.Creds) + db.processes[pid] = entry + if entryPID, ok := db.entryLeaderRelationships[ppid]; ok { + db.entryLeaderRelationships[pid] = entryPID + } + } else { + db.processes[pid] = Process{ + PIDs: pidInfoFromProto(fork.ChildPIDs), + Creds: credInfoFromProto(fork.Creds), + } + } +} + +func (db *DB) insertProcess(process Process) { + pid := process.PIDs.Tgid + db.processes[pid] = process + entryLeaderPID := db.evaluateEntryLeader(process) + if entryLeaderPID != nil { + db.entryLeaderRelationships[pid] = *entryLeaderPID + db.logger.Debugf("%v name: %s, entry_leader: %d, entry_type: %s", process.PIDs, process.Filename, *entryLeaderPID, string(db.entryLeaders[*entryLeaderPID])) + } else { + db.logger.Debugf("%v name: %s, NO ENTRY LEADER", process.PIDs, process.Filename) + } +} + +func (db *DB) InsertExec(exec types.ProcessExecEvent) { + db.mutex.Lock() + defer db.mutex.Unlock() + + proc := Process{ + PIDs: pidInfoFromProto(exec.PIDs), + Creds: credInfoFromProto(exec.Creds), + CTTY: ttyDevFromProto(exec.CTTY), + Argv: exec.Argv, + Cwd: exec.CWD, + Env: exec.Env, + Filename: exec.Filename, + } + + db.processes[exec.PIDs.Tgid] = proc + entryLeaderPID := db.evaluateEntryLeader(proc) + if entryLeaderPID != nil { + db.entryLeaderRelationships[exec.PIDs.Tgid] = *entryLeaderPID + } +} + +func (db *DB) createEntryLeader(pid uint32, entryType EntryType) { + db.entryLeaders[pid] = entryType + db.logger.Debugf("created entry leader %d: %s, name: %s", pid, string(entryType), db.processes[pid].Filename) +} + +// pid returned is a pointer type because its possible for no +func (db *DB) evaluateEntryLeader(p Process) *uint32 { + pid := p.PIDs.Tgid + + // init never has an entry leader or meta type + if p.PIDs.Tgid == 1 { + db.logger.Debugf("entry_eval %d: process is init, no entry type", p.PIDs.Tgid) + return nil + } + + // kernel threads also never have an entry leader or meta type kthreadd + // (always pid 2) is the parent of all kernel threads, by filtering pid == + // 2 || ppid == 2, we get rid of all of them + if p.PIDs.Tgid == 2 || p.PIDs.Ppid == 2 { + db.logger.Debugf("entry_eval %d: kernel threads never an entry type (parent is pid 2)", p.PIDs.Tgid) + return nil + } + + // could be an entry leader + if p.PIDs.Tgid == p.PIDs.Sid { + ttyType := getTTYType(p.CTTY.Major, p.CTTY.Minor) + + procBasename := basename(p.Filename) + switch { + case ttyType == TTY: + db.createEntryLeader(pid, Terminal) + db.logger.Debugf("entry_eval %d: entry type is terminal", p.PIDs.Tgid) + return &pid + case ttyType == TTYConsole && procBasename == "login": + db.createEntryLeader(pid, EntryConsole) + db.logger.Debugf("entry_eval %d: entry type is console", p.PIDs.Tgid) + return &pid + case p.PIDs.Ppid == 1: + db.createEntryLeader(pid, Init) + db.logger.Debugf("entry_eval %d: entry type is init", p.PIDs.Tgid) + return &pid + case !isFilteredExecutable(procBasename): + if parent, ok := db.processes[p.PIDs.Ppid]; ok { + parentBasename := basename(parent.Filename) + if ttyType == Pts && parentBasename == "ssm-session-worker" { + db.createEntryLeader(pid, Ssm) + db.logger.Debugf("entry_eval %d: entry type is ssm", p.PIDs.Tgid) + return &pid + } else if parentBasename == "sshd" && procBasename != "sshd" { + // TODO: get ip from env vars + db.createEntryLeader(pid, Sshd) + db.logger.Debugf("entry_eval %d: entry type is sshd", p.PIDs.Tgid) + return &pid + } else if isContainerRuntime(parentBasename) { + db.createEntryLeader(pid, Container) + db.logger.Debugf("entry_eval %d: entry type is container", p.PIDs.Tgid) + return &pid + } + } + default: + db.logger.Debugf("entry_eval %d: is a filtered executable: %s", p.PIDs.Tgid, procBasename) + } + } + + // if not a session leader or was not determined to be an entry leader, get + // it via parent, session leader, group leader (in that order) + relations := []struct { + pid uint32 + name string + }{ + { + pid: p.PIDs.Ppid, + name: "parent", + }, + { + pid: p.PIDs.Sid, + name: "session_leader", + }, + { + pid: p.PIDs.Pgid, + name: "group_leader", + }, + } + + for _, relation := range relations { + if entry, ok := db.entryLeaderRelationships[relation.pid]; ok { + entryType := db.entryLeaders[entry] + db.logger.Debugf("entry_eval %d: got entry_leader: %d (%s), from relative: %d (%s)", p.PIDs.Tgid, entry, string(entryType), relation.pid, relation.name) + return &entry + } else { + db.logger.Debugf("entry_eval %d: failed to find relative: %d (%s)", p.PIDs.Tgid, relation.pid, relation.name) + } + } + + // if it's a session leader, then make it its own entry leader with unknown + // entry type + if p.PIDs.Tgid == p.PIDs.Sid { + db.createEntryLeader(pid, EntryUnknown) + db.logger.Debugf("entry_eval %d: this is a session leader and no relative has an entry leader. entry type is unknown", p.PIDs.Tgid) + return &pid + } + + db.logger.Debugf("entry_eval %d: this is not a session leader and no relative has an entry leader, entry_leader will be unset", p.PIDs.Tgid) + return nil +} + +func (db *DB) InsertSetsid(setsid types.ProcessSetsidEvent) { + db.mutex.Lock() + defer db.mutex.Unlock() + + if entry, ok := db.processes[setsid.PIDs.Tgid]; ok { + entry.PIDs = pidInfoFromProto(setsid.PIDs) + db.processes[setsid.PIDs.Tgid] = entry + } else { + db.processes[setsid.PIDs.Tgid] = Process{ + PIDs: pidInfoFromProto(setsid.PIDs), + } + } +} + +func (db *DB) InsertExit(exit types.ProcessExitEvent) { + db.mutex.Lock() + defer db.mutex.Unlock() + + pid := exit.PIDs.Tgid + delete(db.processes, pid) + delete(db.entryLeaders, pid) + delete(db.entryLeaderRelationships, pid) +} + +func interactiveFromTTY(tty types.TTYDev) bool { + return TTYUnknown != getTTYType(tty.Major, tty.Minor) +} + +func fullProcessFromDBProcess(p Process) types.Process { + reducedPrecisionStartTime := timeutils.ReduceTimestampPrecision(p.PIDs.StartTimeNS) + interactive := interactiveFromTTY(p.CTTY) + + ret := types.Process{ + PID: p.PIDs.Tgid, + Start: timeutils.TimeFromNsSinceBoot(reducedPrecisionStartTime), + Name: basename(p.Filename), + Executable: p.Filename, + Args: p.Argv, + WorkingDirectory: p.Cwd, + Interactive: &interactive, + } + + euid := p.Creds.Euid + egid := p.Creds.Egid + ret.User.ID = strconv.FormatUint(uint64(euid), 10) + ret.Group.ID = strconv.FormatUint(uint64(egid), 10) + ret.Thread.Capabilities.Permitted, _ = capabilities.FromUint64(p.Creds.CapPermitted) + ret.Thread.Capabilities.Effective, _ = capabilities.FromUint64(p.Creds.CapEffective) + + return ret +} + +func fillParent(process *types.Process, parent Process) { + reducedPrecisionStartTime := timeutils.ReduceTimestampPrecision(parent.PIDs.StartTimeNS) + + interactive := interactiveFromTTY(parent.CTTY) + euid := parent.Creds.Euid + egid := parent.Creds.Egid + process.Parent.PID = parent.PIDs.Tgid + process.Parent.Start = timeutils.TimeFromNsSinceBoot(reducedPrecisionStartTime) + process.Parent.Name = basename(parent.Filename) + process.Parent.Executable = parent.Filename + process.Parent.Args = parent.Argv + process.Parent.WorkingDirectory = parent.Cwd + process.Parent.Interactive = &interactive + process.Parent.User.ID = strconv.FormatUint(uint64(euid), 10) + process.Parent.Group.ID = strconv.FormatUint(uint64(egid), 10) +} + +func fillGroupLeader(process *types.Process, groupLeader Process) { + reducedPrecisionStartTime := timeutils.ReduceTimestampPrecision(groupLeader.PIDs.StartTimeNS) + + interactive := interactiveFromTTY(groupLeader.CTTY) + euid := groupLeader.Creds.Euid + egid := groupLeader.Creds.Egid + process.GroupLeader.PID = groupLeader.PIDs.Tgid + process.GroupLeader.Start = timeutils.TimeFromNsSinceBoot(reducedPrecisionStartTime) + process.GroupLeader.Name = basename(groupLeader.Filename) + process.GroupLeader.Executable = groupLeader.Filename + process.GroupLeader.Args = groupLeader.Argv + process.GroupLeader.WorkingDirectory = groupLeader.Cwd + process.GroupLeader.Interactive = &interactive + process.GroupLeader.User.ID = strconv.FormatUint(uint64(euid), 10) + process.GroupLeader.Group.ID = strconv.FormatUint(uint64(egid), 10) +} + +func fillSessionLeader(process *types.Process, sessionLeader Process) { + reducedPrecisionStartTime := timeutils.ReduceTimestampPrecision(sessionLeader.PIDs.StartTimeNS) + + interactive := interactiveFromTTY(sessionLeader.CTTY) + euid := sessionLeader.Creds.Euid + egid := sessionLeader.Creds.Egid + process.SessionLeader.PID = sessionLeader.PIDs.Tgid + process.SessionLeader.Start = timeutils.TimeFromNsSinceBoot(reducedPrecisionStartTime) + process.SessionLeader.Name = basename(sessionLeader.Filename) + process.SessionLeader.Executable = sessionLeader.Filename + process.SessionLeader.Args = sessionLeader.Argv + process.SessionLeader.WorkingDirectory = sessionLeader.Cwd + process.SessionLeader.Interactive = &interactive + process.SessionLeader.User.ID = strconv.FormatUint(uint64(euid), 10) + process.SessionLeader.Group.ID = strconv.FormatUint(uint64(egid), 10) +} + +func fillEntryLeader(process *types.Process, entryType EntryType, entryLeader Process) { + reducedPrecisionStartTime := timeutils.ReduceTimestampPrecision(entryLeader.PIDs.StartTimeNS) + + interactive := interactiveFromTTY(entryLeader.CTTY) + euid := entryLeader.Creds.Euid + egid := entryLeader.Creds.Egid + process.EntryLeader.PID = entryLeader.PIDs.Tgid + process.EntryLeader.Start = timeutils.TimeFromNsSinceBoot(reducedPrecisionStartTime) + process.EntryLeader.Name = basename(entryLeader.Filename) + process.EntryLeader.Executable = entryLeader.Filename + process.EntryLeader.Args = entryLeader.Argv + process.EntryLeader.WorkingDirectory = entryLeader.Cwd + process.EntryLeader.Interactive = &interactive + process.EntryLeader.User.ID = strconv.FormatUint(uint64(euid), 10) + process.EntryLeader.Group.ID = strconv.FormatUint(uint64(egid), 10) + + process.EntryLeader.EntryMeta.Type = string(entryType) +} + +func (db *DB) setEntityID(process *types.Process) { + if process.PID != 0 && process.Start != nil { + process.EntityID = db.calculateEntityIDv1(process.PID, *process.Start) + } + + if process.Parent.PID != 0 && process.Parent.Start != nil { + process.Parent.EntityID = db.calculateEntityIDv1(process.Parent.PID, *process.Parent.Start) + } + + if process.GroupLeader.PID != 0 && process.GroupLeader.Start != nil { + process.GroupLeader.EntityID = db.calculateEntityIDv1(process.GroupLeader.PID, *process.GroupLeader.Start) + } + + if process.SessionLeader.PID != 0 && process.SessionLeader.Start != nil { + process.SessionLeader.EntityID = db.calculateEntityIDv1(process.SessionLeader.PID, *process.SessionLeader.Start) + } + + if process.EntryLeader.PID != 0 && process.EntryLeader.Start != nil { + process.EntryLeader.EntityID = db.calculateEntityIDv1(process.EntryLeader.PID, *process.EntryLeader.Start) + } +} + +func setSameAsProcess(process *types.Process) { + if process.GroupLeader.PID != 0 && process.GroupLeader.Start != nil { + sameAsProcess := process.PID == process.GroupLeader.PID + process.GroupLeader.SameAsProcess = &sameAsProcess + } + + if process.SessionLeader.PID != 0 && process.SessionLeader.Start != nil { + sameAsProcess := process.PID == process.SessionLeader.PID + process.SessionLeader.SameAsProcess = &sameAsProcess + } + + if process.EntryLeader.PID != 0 && process.EntryLeader.Start != nil { + sameAsProcess := process.PID == process.EntryLeader.PID + process.EntryLeader.SameAsProcess = &sameAsProcess + } +} + +func (db *DB) GetProcess(pid uint32) (types.Process, error) { + db.mutex.RLock() + defer db.mutex.RUnlock() + + process, ok := db.processes[pid] + if !ok { + return types.Process{}, errors.New("process not found") + } + + ret := fullProcessFromDBProcess(process) + + if parent, ok := db.processes[process.PIDs.Ppid]; ok { + fillParent(&ret, parent) + } + + if groupLeader, ok := db.processes[process.PIDs.Pgid]; ok { + fillGroupLeader(&ret, groupLeader) + } + + if sessionLeader, ok := db.processes[process.PIDs.Sid]; ok { + fillSessionLeader(&ret, sessionLeader) + } + + if entryLeaderPID, foundEntryLeaderPID := db.entryLeaderRelationships[process.PIDs.Tgid]; foundEntryLeaderPID { + if entryLeader, foundEntryLeader := db.processes[entryLeaderPID]; foundEntryLeader { + // if there is an entry leader then there is a matching member in the entryLeaders table + fillEntryLeader(&ret, db.entryLeaders[entryLeaderPID], entryLeader) + } else { + db.logger.Errorf("failed to find entry leader entry %d for %d (%s)", entryLeaderPID, pid, db.processes[pid].Filename) + } + } else { + db.logger.Errorf("failed to find entry leader for %d (%s)", pid, db.processes[pid].Filename) + } + + db.setEntityID(&ret) + setSameAsProcess(&ret) + + return ret, nil +} + +func (db *DB) GetEntryType(pid uint32) (EntryType, error) { + db.mutex.RLock() + defer db.mutex.RUnlock() + + if entryType, ok := db.entryLeaders[pid]; ok { + return entryType, nil + } + return EntryUnknown, nil +} + +func (db *DB) ScrapeProcfs() []uint32 { + db.mutex.Lock() + defer db.mutex.Unlock() + + procs, err := db.procfs.GetAllProcesses() + if err != nil { + db.logger.Errorf("failed to get processes from procfs: %v", err) + return make([]uint32, 0) + } + + // sorting the slice to make sure that parents, session leaders, group + // leaders come first in the queue + sort.Slice(procs, func(i, j int) bool { + return procs[i].PIDs.Tgid == procs[j].PIDs.Ppid || + procs[i].PIDs.Tgid == procs[j].PIDs.Sid || + procs[i].PIDs.Tgid == procs[j].PIDs.Pgid + }) + + pids := make([]uint32, 0) + for _, procInfo := range procs { + process := Process{ + PIDs: pidInfoFromProto(procInfo.PIDs), + Creds: credInfoFromProto(procInfo.Creds), + CTTY: ttyDevFromProto(procInfo.CTTY), + Argv: procInfo.Argv, + Cwd: procInfo.Cwd, + Env: procInfo.Env, + Filename: procInfo.Filename, + } + + db.insertProcess(process) + pids = append(pids, process.PIDs.Tgid) + } + + return pids +} + +func stringStartsWithEntryInList(str string, list []string) bool { + for _, entry := range list { + if strings.HasPrefix(str, entry) { + return true + } + } + + return false +} + +func isContainerRuntime(executable string) bool { + return slices.ContainsFunc(containerRuntimes[:], func(s string) bool { + return strings.HasPrefix(executable, s) + }) +} + +func isFilteredExecutable(executable string) bool { + return stringStartsWithEntryInList(executable, filteredExecutables[:]) +} + +func getTTYType(major uint16, minor uint16) TTYType { + if major >= ptsMinMajor && major <= ptsMaxMajor { + return Pts + } + + if ttyMajor == major { + if minor <= consoleMaxMinor { + return TTYConsole + } else if minor > consoleMaxMinor && minor <= ttyMaxMinor { + return TTY + } + } + + return TTYUnknown +} diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/db_test.go b/x-pack/auditbeat/processors/sessionmd/processdb/db_test.go new file mode 100644 index 00000000000..5e8001a68e5 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/processdb/db_test.go @@ -0,0 +1,24 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package processdb + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/elastic-agent-libs/logp" +) + +var logger = logp.NewLogger("processdb") + +func TestGetTTYType(t *testing.T) { + assert.Equal(t, TTYConsole, getTTYType(4, 0)) + assert.Equal(t, Pts, getTTYType(136, 0)) + assert.Equal(t, TTY, getTTYType(4, 64)) + assert.Equal(t, TTYUnknown, getTTYType(1000, 1000)) +} diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go b/x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go new file mode 100644 index 00000000000..15f98250f55 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go @@ -0,0 +1,1244 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package processdb + +import ( + "path" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/procfs" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/types" +) + +const ( + containerdShimPath = "/bin/containerd-shim-runc-v2" + containerdPath = "/bin/containerd" + sshdPath = "/usr/bin/sshd" + lsPath = "/usr/bin/ls" + bashPath = "/usr/bin/bash" + grepPath = "/usr/bin/grep" +) + +// Entry evaluation tests +// +// The entry leader isn't an entirely rigorous conceptual framework but that +// shortcoming is outweighted by the large and immediate value it provides. +// +// The idea is to assign two pieces of data to each process, the "entry meta" +// and "entry leader", the former of which describes how the user or system +// that was ultimately responsible for executing this process got into to the +// box (e.g. ssh, ssm, kubectl exec) and the latter of which describes the +// process associated with the user or system's initial entry into the "box" +// (be it a container, VM or otherwise). +// +// Generally speaking, the first session leader in a process lineage of an +// interactive session is an entry leader having an entry meta type depending +// on its lineage. For example, in the following process tree, "bash" is an +// entry leader with entry meta type "sshd": +// +// systemd (pid 1 sid 1) +// \___ sshd (pid 100 sid 100) +// \___ bash (pid 1000 sid 1000) +// \___ vim (pid 1001 sid 1000) +// +// Further entry meta types exist for ssm, container runtimes, serial consoles +// and other ways to get into a "box" (be it a container or actual machine). +// The entry meta type "init" is assigned to system processes created by the +// init service (e.g. rsyslogd, sshd). +// +// As should probably be apparent, the code to assign an entry meta type to a +// process is essentially a large amount of conditional logic with a ton of +// edge cases. It's something we "bolt on" to the linux process model, and thus +// finicky and highly subject to bugs. +// +// Thankfully, writing unit tests for entry leader evaluation is rather +// straightforward as it's basically a pure function that requires no external +// infrastructure to test (just create a mock process event with your desired +// fields set and pass it in). +// +// These tests should effectively serve as the spec for how we assign entry +// leaders. When further entry meta types or cases are added, tests should be + +func requireProcess(t *testing.T, db *DB, pid uint32, processPath string) { + t.Helper() + process, err := db.GetProcess(pid) + require.Nil(t, err) + require.Equal(t, pid, process.PID) + require.Equal(t, processPath, process.Executable) + if processPath == "" { + require.Equal(t, "", process.Name) + } else { + require.Equal(t, path.Base(processPath), process.Name) + } +} + +func requireParent(t *testing.T, db *DB, pid uint32, ppid uint32) { + t.Helper() + process, err := db.GetProcess(pid) + require.Nil(t, err) + require.Equal(t, ppid, process.Parent.PID) +} + +func requireParentUnset(t *testing.T, process types.Process) { + t.Helper() + require.Equal(t, "", process.Parent.EntityID) + require.Equal(t, uint32(0), process.Parent.PID) + require.Nil(t, process.Parent.Start) +} + +func requireSessionLeader(t *testing.T, db *DB, pid uint32, sid uint32) { + t.Helper() + process, err := db.GetProcess(pid) + require.Nil(t, err) + require.Equal(t, sid, process.SessionLeader.PID) + require.NotNil(t, process.SessionLeader.SameAsProcess) + require.Equal(t, pid == sid, *process.SessionLeader.SameAsProcess) +} + +func requireSessionLeaderUnset(t *testing.T, process types.Process) { + t.Helper() + require.Equal(t, "", process.SessionLeader.EntityID) + require.Equal(t, uint32(0), process.SessionLeader.PID) + require.Nil(t, process.SessionLeader.Start) +} + +func requireGroupLeader(t *testing.T, db *DB, pid uint32, pgid uint32) { + t.Helper() + process, err := db.GetProcess(pid) + require.Nil(t, err) + require.Equal(t, pgid, process.GroupLeader.PID) + require.NotNil(t, process.GroupLeader.SameAsProcess) + require.Equal(t, pid == pgid, *process.GroupLeader.SameAsProcess) +} + +func requireEntryLeader(t *testing.T, db *DB, pid uint32, entryPID uint32, expectedEntryType EntryType) { + t.Helper() + process, err := db.GetProcess(pid) + require.Nil(t, err) + require.Equal(t, entryPID, process.EntryLeader.PID) + require.NotNil(t, process.EntryLeader.SameAsProcess) + require.Equal(t, pid == entryPID, *process.EntryLeader.SameAsProcess) + + entryType, err := db.GetEntryType(entryPID) + require.Nil(t, err) + require.Equal(t, expectedEntryType, entryType) +} + +func requireEntryLeaderUnset(t *testing.T, process types.Process) { + t.Helper() + require.Equal(t, "", process.EntryLeader.EntityID) + require.Equal(t, uint32(0), process.EntryLeader.PID) + require.Nil(t, process.EntryLeader.Start) +} + +// tries to construct fork event from what's in the db +func insertForkAndExec(t *testing.T, db *DB, exec types.ProcessExecEvent) { + t.Helper() + var fork types.ProcessForkEvent + fork.ChildPIDs = exec.PIDs + parent, err := db.GetProcess(exec.PIDs.Ppid) + if err != nil { + fork.ParentPIDs = exec.PIDs + fork.ParentPIDs.Tgid = exec.PIDs.Ppid + fork.ParentPIDs.Ppid = 0 + fork.ParentPIDs.Pgid = 0 + + fork.ChildPIDs.Pgid = exec.PIDs.Ppid + + // if the exec makes itself a session and the parent is no where to be + // found we'll make the parent its own session + if exec.PIDs.Tgid == exec.PIDs.Sid { + fork.ParentPIDs.Sid = exec.PIDs.Ppid + } + } else { + fork.ParentPIDs.Tgid = parent.PID + fork.ParentPIDs.Ppid = parent.Parent.PID + fork.ParentPIDs.Sid = parent.SessionLeader.PID + + // keep group leader the same for now + fork.ParentPIDs.Pgid = exec.PIDs.Pgid + } + + if fork.ParentPIDs.Tgid != 0 { + db.InsertFork(fork) + } + + db.InsertExec(exec) +} + +var systemdPath = "/sbin/systemd" + +func populateProcfsWithInit(reader *procfs.MockReader) { + reader.AddEntry(1, procfs.ProcessInfo{ + PIDs: types.PIDInfo{ + Tid: 1, + Tgid: 1, + Pgid: 0, + Sid: 1, + }, + Filename: systemdPath, + }) +} + +func TestSingleProcessSessionLeaderEntryTypeTerminal(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + pid := uint32(1234) + procPath := "/bin/noproc" + db.InsertExec(types.ProcessExecEvent{ + Filename: procPath, + PIDs: types.PIDInfo{ + Tgid: pid, + Sid: pid, + }, + CTTY: types.TTYDev{ + Major: 4, + Minor: 64, + }, + }) + + requireProcess(t, db, 1234, procPath) + requireEntryLeader(t, db, 1234, 1234, Terminal) +} + +func TestSingleProcessSessionLeaderLoginProcess(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + pid := uint32(1234) + loginPath := "/bin/login" + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: loginPath, + PIDs: types.PIDInfo{ + Tgid: pid, + Sid: pid, + }, + CTTY: types.TTYDev{ + Major: 4, + Minor: 62, + }, + }) + + process, err := db.GetProcess(1234) + require.Nil(t, err) + requireParentUnset(t, process) + + requireProcess(t, db, pid, "/bin/login") + requireSessionLeader(t, db, pid, pid) + requireEntryLeader(t, db, pid, pid, EntryConsole) +} + +func TestSingleProcessSessionLeaderChildOfInit(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + pid := uint32(100) + rsyslogdPath := "/bin/rsyslogd" + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: rsyslogdPath, + PIDs: types.PIDInfo{ + Tgid: pid, + Sid: pid, + Ppid: 1, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + process, err := db.GetProcess(1234) + require.NotNil(t, err) + requireParentUnset(t, process) + + requireProcess(t, db, pid, rsyslogdPath) + requireSessionLeader(t, db, pid, pid) + requireEntryLeader(t, db, pid, pid, Init) +} + +func TestSingleProcessSessionLeaderChildOfSsmSessionWorker(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + ssmPID := uint32(999) + bashPID := uint32(1000) + ssmPath := "/usr/bin/ssm-session-worker" + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: ssmPath, + PIDs: types.PIDInfo{ + Tgid: ssmPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: ssmPID, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, ssmPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Ssm) +} + +func TestSingleProcessSessionLeaderChildOfSshd(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshdPID := uint32(999) + bashPID := uint32(1000) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshdPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshdPID, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshdPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) +} + +func TestSingleProcessSessionLeaderChildOfContainerdShim(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + containerdShimPID := uint32(999) + bashPID := uint32(1000) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: containerdShimPath, + PIDs: types.PIDInfo{ + Tgid: containerdShimPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: containerdShimPID, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, containerdShimPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Container) +} + +func TestSingleProcessSessionLeaderChildOfRunc(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + runcPID := uint32(999) + bashPID := uint32(1000) + runcPath := "/bin/runc" + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: runcPath, + PIDs: types.PIDInfo{ + Tgid: runcPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: runcPID, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, runcPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Container) +} + +func TestSingleProcessEmptyProcess(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + // No information in proc at all, entry type should be "unknown" + // and entry leader pid should be unset (since pid is not set) + pid := uint32(1000) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: pid, + Sid: pid, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + process, err := db.GetProcess(pid) + require.Nil(t, err) + requireParentUnset(t, process) + + requireProcess(t, db, pid, bashPath) + requireSessionLeader(t, db, pid, pid) + requireEntryLeader(t, db, pid, pid, EntryUnknown) +} + +// Entry evaluation code should overwrite an old EntryLeaderPID and +// EntryLeaderEntryMetaType +func TestSingleProcessOverwriteOldEntryLeader(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + ssmPID := uint32(999) + bashPID := uint32(1000) + ssmPath := "/usr/bin/ssm-session-worker" + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: ssmPath, + PIDs: types.PIDInfo{ + Tgid: ssmPID, + Sid: ssmPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: ssmPID, + Ppid: ssmPID, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + // bash is not a session leader so it shouldn't be an entry leader. Its + // entry leader should be ssm, which is an init entry leader + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, ssmPID) + requireSessionLeader(t, db, bashPID, ssmPID) + requireEntryLeader(t, db, bashPID, ssmPID, Init) + + // skiping setsid event and assuming the pids will be updated in this exec + db.InsertExec(types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: ssmPID, + }, + CTTY: types.TTYDev{ + Major: 136, + Minor: 62, + }, + }) + + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, ssmPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Ssm) +} + +// / (pid, sid, entry meta, entry leader) +// +// systemd (1, 1, none, none) +// +// \___ sshd (100, 100, "init", 100) +// \___ bash (1000, 1000, "sshd", 1000) +// \___ ls (1001, 1000, "sshd", 1000) +// +// This is unrealistic, sshd usually forks a bunch of sshd children before +// exec'ing bash (see subsequent tests) but is theoretically possible and +// thus something we should handle. +func TestInitSshdBashLs(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshdPID := uint32(100) + bashPID := uint32(1000) + lsPID := uint32(1001) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshdPID, + Sid: sshdPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshdPID, + Pgid: bashPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: lsPath, + PIDs: types.PIDInfo{ + Tgid: lsPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: lsPID, + }, + }) + + // systemd + systemd, err := db.GetProcess(1) + require.Nil(t, err) + requireParentUnset(t, systemd) + requireEntryLeaderUnset(t, systemd) + + requireProcess(t, db, 1, systemdPath) + requireSessionLeader(t, db, 1, 1) + + // sshd + requireProcess(t, db, sshdPID, sshdPath) + requireParent(t, db, sshdPID, 1) + requireSessionLeader(t, db, sshdPID, sshdPID) + requireEntryLeader(t, db, sshdPID, sshdPID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshdPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) + requireGroupLeader(t, db, bashPID, bashPID) + + // ls + requireProcess(t, db, lsPID, lsPath) + requireParent(t, db, lsPID, bashPID) + requireSessionLeader(t, db, lsPID, bashPID) + requireEntryLeader(t, db, lsPID, bashPID, Sshd) + requireGroupLeader(t, db, lsPID, lsPID) +} + +// / (pid, sid, entry meta, entry leader) +// +// systemd (1, 1, none, none) +// +// \___ sshd (100, 100, "init", 100) +// \___ sshd (101, 101, "init", 100) +// \___ bash (1000, 1000, "sshd", 1000) +// \___ ls (1001, 1000, "sshd", 1000) +// +// sshd will usually fork a bunch of sshd children before invoking a shell +// usually 2 if it's a root shell, or 3 if it's a non-root shell. All +// "intermediate" sshd's should have entry meta "init" and an entry leader +// pid of the topmost sshd. +func TestInitSshdSshdBashLs(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshd0PID := uint32(100) + sshd1PID := uint32(101) + bashPID := uint32(1000) + lsPID := uint32(1001) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd0PID, + Sid: sshd0PID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd1PID, + Sid: sshd1PID, + Ppid: sshd0PID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshd1PID, + Pgid: bashPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: lsPath, + PIDs: types.PIDInfo{ + Tgid: lsPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: lsPID, + }, + }) + + // systemd + systemd, err := db.GetProcess(1) + require.Nil(t, err) + requireParentUnset(t, systemd) + requireEntryLeaderUnset(t, systemd) + + requireProcess(t, db, 1, systemdPath) + requireSessionLeader(t, db, 1, 1) + + // sshd0 + requireProcess(t, db, sshd0PID, sshdPath) + requireParent(t, db, sshd0PID, 1) + requireSessionLeader(t, db, sshd0PID, sshd0PID) + requireEntryLeader(t, db, sshd0PID, sshd0PID, Init) + + // sshd1 + requireProcess(t, db, sshd1PID, sshdPath) + requireParent(t, db, sshd1PID, sshd0PID) + requireSessionLeader(t, db, sshd1PID, sshd1PID) + requireEntryLeader(t, db, sshd1PID, sshd0PID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshd1PID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) + + // ls + requireProcess(t, db, lsPID, lsPath) + requireParent(t, db, lsPID, bashPID) + requireSessionLeader(t, db, lsPID, bashPID) + requireEntryLeader(t, db, lsPID, bashPID, Sshd) +} + +// / (pid, sid, entry meta, entry leader) +// systemd (1, 1, none, none) +// +// \___ sshd (100, 100, "init", 100) +// \___ sshd (101, 101, "init", 100) +// \___ sshd (102, 101, "init", 100) +// \___ bash (1000, 1000, "sshd", 1000) +// \___ ls (1001, 1000, "sshd", 1000) +func TestInitSshdSshdSshdBashLs(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshd0PID := uint32(100) + sshd1PID := uint32(101) + sshd2PID := uint32(102) + bashPID := uint32(1000) + lsPID := uint32(1001) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd0PID, + Sid: sshd0PID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd1PID, + Sid: sshd1PID, + Ppid: sshd0PID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd2PID, + Sid: sshd1PID, + Ppid: sshd1PID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshd2PID, + Pgid: bashPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: lsPath, + PIDs: types.PIDInfo{ + Tgid: lsPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: lsPID, + }, + }) + + // systemd + systemd, err := db.GetProcess(1) + require.Nil(t, err) + requireParentUnset(t, systemd) + requireEntryLeaderUnset(t, systemd) + + requireProcess(t, db, 1, systemdPath) + requireSessionLeader(t, db, 1, 1) + + // sshd0 + requireProcess(t, db, sshd0PID, sshdPath) + requireParent(t, db, sshd0PID, 1) + requireSessionLeader(t, db, sshd0PID, sshd0PID) + requireEntryLeader(t, db, sshd0PID, sshd0PID, Init) + + // sshd1 + requireProcess(t, db, sshd1PID, sshdPath) + requireParent(t, db, sshd1PID, sshd0PID) + requireSessionLeader(t, db, sshd1PID, sshd1PID) + requireEntryLeader(t, db, sshd1PID, sshd0PID, Init) + + // sshd2 + requireProcess(t, db, sshd2PID, sshdPath) + requireParent(t, db, sshd2PID, sshd1PID) + requireSessionLeader(t, db, sshd2PID, sshd1PID) + requireEntryLeader(t, db, sshd2PID, sshd0PID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshd2PID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) + + // ls + requireProcess(t, db, lsPID, lsPath) + requireParent(t, db, lsPID, bashPID) + requireSessionLeader(t, db, lsPID, bashPID) + requireEntryLeader(t, db, lsPID, bashPID, Sshd) +} + +// / (pid, sid, entry meta, entry leader) +// +// systemd +// +// \___ containerd (100, 100, "init", 100) +// \___ containerd-shim-runc-v2 (1000, 100, "init", 100) +// +// containerd-shim-runc-v2 will reparent itself to init just prior to +// executing the containerized process. +func TestInitContainerdContainerdShim(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + containerdPID := uint32(100) + containerdShimPID := uint32(1000) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: containerdPath, + PIDs: types.PIDInfo{ + Tgid: containerdPID, + Sid: containerdPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: containerdShimPath, + PIDs: types.PIDInfo{ + Tgid: containerdShimPID, + Sid: containerdPID, + Ppid: containerdPID, + }, + }) + + // containerd + requireProcess(t, db, containerdPID, containerdPath) + requireParent(t, db, containerdPID, 1) + requireSessionLeader(t, db, containerdPID, containerdPID) + requireEntryLeader(t, db, containerdPID, containerdPID, Init) + + // containerd-shim-runc-v2 + requireProcess(t, db, containerdShimPID, containerdShimPath) + requireParent(t, db, containerdShimPID, containerdPID) + requireSessionLeader(t, db, containerdShimPID, containerdPID) + requireEntryLeader(t, db, containerdShimPID, containerdPID, Init) +} + +// / (pid, sid, entry meta, entry leader) +// +// systemd +// +// \___ containerd (100, 100, "init", 100) +// | +// \___ containerd-shim-runc-v2 (1000, 100, "init", 100) +// \___ bash (1001, 1001, "container", 1000) +// +// Note that containerd originally forks and exec's +// containerd-shim-runc-v2, which then forks such that it is reparented to +// init. +func TestInitContainerdShimBashContainerdShimIsReparentedToInit(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + containerdPID := uint32(100) + containerdShimPID := uint32(1000) + bashPID := uint32(1001) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: containerdPath, + PIDs: types.PIDInfo{ + Tgid: containerdPID, + Sid: containerdPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: containerdShimPath, + PIDs: types.PIDInfo{ + Tgid: containerdShimPID, + Sid: containerdPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: containerdShimPID, + }, + }) + + // containerd + requireProcess(t, db, containerdPID, containerdPath) + requireParent(t, db, containerdPID, 1) + requireSessionLeader(t, db, containerdPID, containerdPID) + requireEntryLeader(t, db, containerdPID, containerdPID, Init) + + // containerd-shim-runc-v2 + requireProcess(t, db, containerdShimPID, containerdShimPath) + requireParent(t, db, containerdShimPID, 1) + requireSessionLeader(t, db, containerdShimPID, containerdPID) + requireEntryLeader(t, db, containerdShimPID, containerdPID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, containerdShimPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Container) +} + +// / (pid, sid, entry meta, entry leader) +// +// systemd +// +// \___ containerd (100, 100, "init", 100) +// | +// \___ containerd-shim-runc-v2 (1000, 100, "init", 100) +// \___ pause (1001, 1001, "container", 1001) +// +// The pause binary is a Kubernetes internal binary that is exec'd in a +// container by the container runtime. It is responsible for holding +// open the pod sandbox while other containers start and stop +func TestInitContainerdShimPauseContainerdShimIsReparentedToInit(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + containerdPID := uint32(100) + containerdShimPID := uint32(1000) + pausePID := uint32(1001) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: containerdPath, + PIDs: types.PIDInfo{ + Tgid: containerdPID, + Sid: containerdPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: containerdShimPath, + PIDs: types.PIDInfo{ + Tgid: containerdShimPID, + Sid: containerdPID, + Ppid: 1, + }, + }) + + pausePath := "/usr/bin/pause" + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: pausePath, + PIDs: types.PIDInfo{ + Tgid: pausePID, + Sid: pausePID, + Ppid: containerdShimPID, + }, + }) + + // containerd + requireProcess(t, db, containerdPID, containerdPath) + requireParent(t, db, containerdPID, 1) + requireSessionLeader(t, db, containerdPID, containerdPID) + requireEntryLeader(t, db, containerdPID, containerdPID, Init) + + // containerd-shim-runc-v2 + requireProcess(t, db, containerdShimPID, containerdShimPath) + requireParent(t, db, containerdShimPID, 1) + requireSessionLeader(t, db, containerdShimPID, containerdPID) + requireEntryLeader(t, db, containerdShimPID, containerdPID, Init) + + // pause + requireProcess(t, db, pausePID, pausePath) + requireParent(t, db, pausePID, containerdShimPID) + requireSessionLeader(t, db, pausePID, pausePID) + requireEntryLeader(t, db, pausePID, pausePID, Container) +} + +// / (pid, sid, entry meta, entry leader) +// +// systemd (1, 1, none, none) +// +// \___ sshd (100, 100, "init", 100) +// \___ bash (1000, 1000, "sshd", 1000) +// \___ ls (1001, 1000, "sshd", 1000) +// | +// \___ grep (1002, 1000, "sshd", 1000) /* ppid/sid data is missing */ +// +// Grep does not have ppid or sid set, only pgid. Entry evaluation code +// should fallback to grabbing entry leader data from ls, the process group +// leader. +func TestInitSshdBashLsAndGrepGrepOnlyHasGroupLeader(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshdPID := uint32(100) + bashPID := uint32(1000) + lsPID := uint32(1001) + grepPID := uint32(1002) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshdPID, + Sid: sshdPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshdPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: lsPath, + PIDs: types.PIDInfo{ + Tgid: lsPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: lsPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: grepPath, + PIDs: types.PIDInfo{ + Tgid: grepPID, + Pgid: lsPID, + }, + }) + + // sshd + requireProcess(t, db, sshdPID, sshdPath) + requireParent(t, db, sshdPID, 1) + requireSessionLeader(t, db, sshdPID, sshdPID) + requireEntryLeader(t, db, sshdPID, sshdPID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshdPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) + + // ls + requireProcess(t, db, lsPID, lsPath) + requireParent(t, db, lsPID, bashPID) + requireSessionLeader(t, db, lsPID, bashPID) + requireEntryLeader(t, db, lsPID, bashPID, Sshd) + + // grep + grep, err := db.GetProcess(grepPID) + require.Nil(t, err) + requireParentUnset(t, grep) + + requireProcess(t, db, grepPID, grepPath) + requireEntryLeader(t, db, grepPID, bashPID, Sshd) +} + +// / (pid, sid, entry meta, entry leader) +// +// systemd (1, 1, none, none) +// +// \___ sshd (100, 100, "init", 100) +// \___ bash (1000, 1000, "sshd", 1000) +// \___ ls (1001, 1000, "sshd", 1000) +// | +// \___ grep (1002, 1000, "sshd", 1000) /* ppid/pgid data is missing */ +// +// Grep does not have ppid or pgid set, ppid. Entry evaluation code should +// fallback to grabbing entry leader data from sshd, the session leader. +func TestInitSshdBashLsAndGrepGrepOnlyHasSessionLeader(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshdPID := uint32(100) + bashPID := uint32(1000) + lsPID := uint32(1001) + grepPID := uint32(1002) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshdPID, + Sid: sshdPID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshdPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: lsPath, + PIDs: types.PIDInfo{ + Tgid: lsPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: lsPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: grepPath, + PIDs: types.PIDInfo{ + Tgid: grepPID, + Sid: bashPID, + }, + }) + + // sshd + requireProcess(t, db, sshdPID, sshdPath) + requireParent(t, db, sshdPID, 1) + requireSessionLeader(t, db, sshdPID, sshdPID) + requireEntryLeader(t, db, sshdPID, sshdPID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshdPID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) + + // ls + requireProcess(t, db, lsPID, lsPath) + requireParent(t, db, lsPID, bashPID) + requireSessionLeader(t, db, lsPID, bashPID) + requireEntryLeader(t, db, lsPID, bashPID, Sshd) + + // grep + grep, err := db.GetProcess(grepPID) + require.Nil(t, err) + requireParentUnset(t, grep) + + requireProcess(t, db, grepPID, grepPath) + requireSessionLeader(t, db, grepPID, bashPID) + requireEntryLeader(t, db, grepPID, bashPID, Sshd) +} + +// / (pid, sid, entry meta, entry leader) +// +// grep (1001, 1000, "unknown", 1001) +// +// No parent, session leader, or process group leader exists to draw +// on to get an entry leader for grep, fallback to assigning it an +// entry meta type of "unknown" and making it an entry leader. +func TestGrepInIsolation(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + grepPID := uint32(1001) + + db.InsertExec(types.ProcessExecEvent{ + Filename: grepPath, + PIDs: types.PIDInfo{ + Tgid: grepPID, + Ppid: 1000, + Sid: grepPID, + }, + }) + + process, err := db.GetProcess(grepPID) + require.Nil(t, err) + requireParentUnset(t, process) + + requireProcess(t, db, grepPID, grepPath) + requireSessionLeader(t, db, grepPID, grepPID) + requireEntryLeader(t, db, grepPID, grepPID, EntryUnknown) +} + +// / (pid, sid, entry meta, entry leader) +// +// kthreadd (2, 0, , ) +// +// \___ rcu_gp (3, 0, , ) +// +// Kernel threads should never have an entry meta type or entry leader set. +func TestKernelThreads(t *testing.T) { + reader := procfs.NewMockReader() + db, err := NewDB(reader, *logger) + require.Nil(t, err) + + kthreaddPID := uint32(2) + rcuGpPID := uint32(3) + + kthreaddPath := "kthreadd" + rcuGpPath := "rcu_gp" + + db.InsertExec(types.ProcessExecEvent{ + Filename: kthreaddPath, + PIDs: types.PIDInfo{ + Tgid: kthreaddPID, + Ppid: 1, + Sid: 0, + }, + }) + + db.InsertExec(types.ProcessExecEvent{ + Filename: rcuGpPath, + PIDs: types.PIDInfo{ + Tgid: rcuGpPID, + Ppid: kthreaddPID, + Sid: 0, + }, + }) + + // kthreadd + kthreadd, err := db.GetProcess(kthreaddPID) + require.Nil(t, err) + requireParentUnset(t, kthreadd) + requireSessionLeaderUnset(t, kthreadd) + requireEntryLeaderUnset(t, kthreadd) + + requireProcess(t, db, kthreaddPID, kthreaddPath) + + // rcu_gp + rcuGp, err := db.GetProcess(rcuGpPID) + require.Nil(t, err) + requireSessionLeaderUnset(t, rcuGp) + requireEntryLeaderUnset(t, rcuGp) + + requireProcess(t, db, rcuGpPID, rcuGpPath) + requireParent(t, db, rcuGpPID, kthreaddPID) +} diff --git a/x-pack/auditbeat/processors/sessionmd/procfs/mock.go b/x-pack/auditbeat/processors/sessionmd/procfs/mock.go new file mode 100644 index 00000000000..1689873044e --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/procfs/mock.go @@ -0,0 +1,42 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package procfs + +import ( + "fmt" +) + +type MockReader struct { + entries map[uint32]ProcessInfo +} + +func NewMockReader() *MockReader { + return &MockReader{ + entries: make(map[uint32]ProcessInfo), + } +} + +func (r *MockReader) AddEntry(pid uint32, entry ProcessInfo) { + r.entries[pid] = entry +} + +func (r *MockReader) GetProcess(pid uint32) (ProcessInfo, error) { + entry, ok := r.entries[pid] + if !ok { + return ProcessInfo{}, fmt.Errorf("not found") + } + return entry, nil +} + +func (r *MockReader) GetAllProcesses() ([]ProcessInfo, error) { + ret := make([]ProcessInfo, 0, len(r.entries)) + + for _, entry := range r.entries { + ret = append(ret, entry) + } + return ret, nil +} diff --git a/x-pack/auditbeat/processors/sessionmd/procfs/procfs.go b/x-pack/auditbeat/processors/sessionmd/procfs/procfs.go new file mode 100644 index 00000000000..f3a7d41d1d7 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/procfs/procfs.go @@ -0,0 +1,252 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package procfs + +import ( + "fmt" + "strconv" + "strings" + + "github.com/prometheus/procfs" + "golang.org/x/sys/unix" + + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/timeutils" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/types" + "github.com/elastic/elastic-agent-libs/logp" +) + +func MajorTTY(ttyNr uint32) uint16 { + return uint16((ttyNr >> 8) & 0xf) +} + +func MinorTTY(ttyNr uint32) uint16 { + return uint16(((ttyNr & 0xfff00000) >> 20) | (ttyNr & 0xff)) +} + +// this interface exists so that we can inject a mock procfs reader for deterministic testing +type Reader interface { + GetProcess(pid uint32) (ProcessInfo, error) + GetAllProcesses() ([]ProcessInfo, error) +} + +type ProcfsReader struct { + logger logp.Logger +} + +func NewProcfsReader(logger logp.Logger) ProcfsReader { + return ProcfsReader{ + logger: logger, + } +} + +type Stat procfs.ProcStat + +type ProcessInfo struct { + PIDs types.PIDInfo + Creds types.CredInfo + CTTY types.TTYDev + Argv []string + Cwd string + Env map[string]string + Filename string + CGroupPath string +} + +func credsFromProc(proc procfs.Proc) (types.CredInfo, error) { + status, err := proc.NewStatus() + if err != nil { + return types.CredInfo{}, err + } + + ruid, err := strconv.Atoi(status.UIDs[0]) + if err != nil { + return types.CredInfo{}, err + } + + euid, err := strconv.Atoi(status.UIDs[1]) + if err != nil { + return types.CredInfo{}, err + } + + suid, err := strconv.Atoi(status.UIDs[2]) + if err != nil { + return types.CredInfo{}, err + } + + rgid, err := strconv.Atoi(status.GIDs[0]) + if err != nil { + return types.CredInfo{}, err + } + + egid, err := strconv.Atoi(status.GIDs[1]) + if err != nil { + return types.CredInfo{}, err + } + + sgid, err := strconv.Atoi(status.GIDs[2]) + if err != nil { + return types.CredInfo{}, err + } + + // procfs library doesn't grab CapEff or CapPrm, make the direct syscall + hdr := unix.CapUserHeader{ + Version: unix.LINUX_CAPABILITY_VERSION_3, + Pid: int32(proc.PID), + } + var data [2]unix.CapUserData + err = unix.Capget(&hdr, &data[0]) + if err != nil { + return types.CredInfo{}, err + } + permitted := uint64(data[1].Permitted) << 32 + permitted += uint64(data[0].Permitted) + effective := uint64(data[1].Effective) << 32 + effective += uint64(data[0].Effective) + + return types.CredInfo{ + Ruid: uint32(ruid), + Euid: uint32(euid), + Suid: uint32(suid), + Rgid: uint32(rgid), + Egid: uint32(egid), + Sgid: uint32(sgid), + CapPermitted: permitted, + CapEffective: effective, + }, nil +} + +func (r ProcfsReader) getProcessInfo(proc procfs.Proc) (ProcessInfo, error) { + pid := uint32(proc.PID) + // All other info can be best effort, but failing to get pid info and + // start time is needed to register the process in the database + stat, err := proc.Stat() + if err != nil { + return ProcessInfo{}, fmt.Errorf("failed to read /proc/%d/stat: %w", pid, err) + } + + argv, err := proc.CmdLine() + if err != nil { + argv = []string{} + } + + exe, err := proc.Executable() + if err != nil { + if len(argv) > 0 { + r.logger.Debugf("pid %d: got executable from cmdline: %s", pid, argv[0]) + exe = argv[0] + } else { + r.logger.Debugf("pid %d: failed to get executable path: %v", pid, err) + exe = "" + } + } + + environ, err := r.getEnviron(pid) + if err != nil { + environ = nil + } + + cwd, err := proc.Cwd() + if err != nil { + cwd = "" + } + + creds, err := credsFromProc(proc) + if err != nil { + creds = types.CredInfo{} + } + + cGroupPath := "" + cgroups, err := proc.Cgroups() + if err == nil { + out: + // Find the cgroup path from the PID controller. + // NOTE: This does not support the unified hierarchy from cgroup v2, as bpf also does not currently support it. + // When support is added for unified hierarchies, it should be added in bpf and userspace at the same time. + // (Currently all supported cgroup v2 systems (GKE) are working as they send backwards compatible v1 hierarchies as well) + for _, cgroup := range cgroups { + for _, controller := range cgroup.Controllers { + if controller == "pids" { + cGroupPath = cgroup.Path + break out + } + } + } + } + + startTimeNs := timeutils.TicksToNs(stat.Starttime) + return ProcessInfo{ + PIDs: types.PIDInfo{ + StartTimeNS: startTimeNs, + Tid: pid, + Tgid: pid, + Ppid: uint32(stat.PPID), + Pgid: uint32(stat.PGRP), + Sid: uint32(stat.Session), + }, + Creds: creds, + CTTY: types.TTYDev{ + Major: MajorTTY(uint32(stat.TTY)), + Minor: MinorTTY(uint32(stat.TTY)), + }, + Cwd: cwd, + Argv: argv, + Env: environ, + Filename: exe, + CGroupPath: cGroupPath, + }, nil +} + +func (r ProcfsReader) GetProcess(pid uint32) (ProcessInfo, error) { + proc, err := procfs.NewProc(int(pid)) + if err != nil { + return ProcessInfo{}, err + } + return r.getProcessInfo(proc) +} + +// returns empty slice on error +func (r ProcfsReader) GetAllProcesses() ([]ProcessInfo, error) { + procs, err := procfs.AllProcs() + if err != nil { + return nil, err + } + + ret := make([]ProcessInfo, 0) + for _, proc := range procs { + process_info, err := r.getProcessInfo(proc) + if err != nil { + r.logger.Warnf("failed to read process info for %v", proc.PID) + } + ret = append(ret, process_info) + } + + return ret, nil +} + +func (r ProcfsReader) getEnviron(pid uint32) (map[string]string, error) { + proc, err := procfs.NewProc(int(pid)) + if err != nil { + return nil, err + } + + flatEnviron, err := proc.Environ() + if err != nil { + return nil, err + } + + ret := make(map[string]string) + for _, entry := range flatEnviron { + index := strings.Index(entry, "=") + if index == -1 { + continue + } + + ret[entry[0:index]] = entry[index:] + } + + return ret, nil +} diff --git a/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go b/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go new file mode 100644 index 00000000000..2b9b540e037 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go @@ -0,0 +1,157 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package ebpf_provider + +import ( + "context" + "fmt" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/ebpf" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/processdb" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/provider" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/types" + "github.com/elastic/ebpfevents" + "github.com/elastic/elastic-agent-libs/logp" +) + +const ( + name = "add_session_metadata" + eventMask = ebpf.EventMask(ebpfevents.EventTypeProcessFork | ebpfevents.EventTypeProcessExec | ebpfevents.EventTypeProcessExit) +) + +type prvdr struct { + ctx context.Context + logger *logp.Logger + db *processdb.DB +} + +func NewProvider(ctx context.Context, logger *logp.Logger, db *processdb.DB) (provider.Provider, error) { + p := prvdr{ + ctx: ctx, + logger: logger, + db: db, + } + + w, err := ebpf.GetWatcher() + if err != nil { + return nil, fmt.Errorf("get ebpf watcher: %w", err) + } + + records := w.Subscribe(name, eventMask) + + go func(logger logp.Logger) { + for { + r := <-records + if r.Error != nil { + logger.Warnw("received error from the ebpf subscription", "error", err) + continue + } + if r.Event == nil { + continue + } + ev := r.Event + switch ev.Type { + case ebpfevents.EventTypeProcessFork: + body, ok := ev.Body.(*ebpfevents.ProcessFork) + if !ok { + logger.Errorf("unexpected event body, got %T", ev.Body) + continue + } + pe := types.ProcessForkEvent{ + ParentPIDs: types.PIDInfo{ + Tid: body.ParentPids.Tid, + Tgid: body.ParentPids.Tgid, + Ppid: body.ParentPids.Ppid, + Pgid: body.ParentPids.Pgid, + Sid: body.ParentPids.Sid, + StartTimeNS: body.ParentPids.StartTimeNs, + }, + ChildPIDs: types.PIDInfo{ + Tid: body.ChildPids.Tid, + Tgid: body.ChildPids.Tgid, + Ppid: body.ChildPids.Ppid, + Pgid: body.ChildPids.Pgid, + Sid: body.ChildPids.Sid, + StartTimeNS: body.ChildPids.StartTimeNs, + }, + Creds: types.CredInfo{ + Ruid: body.Creds.Ruid, + Rgid: body.Creds.Rgid, + Euid: body.Creds.Euid, + Egid: body.Creds.Egid, + Suid: body.Creds.Suid, + Sgid: body.Creds.Sgid, + CapPermitted: body.Creds.CapPermitted, + CapEffective: body.Creds.CapEffective, + }, + } + p.db.InsertFork(pe) + case ebpfevents.EventTypeProcessExec: + body, ok := ev.Body.(*ebpfevents.ProcessExec) + if !ok { + logger.Errorf("unexpected event body") + continue + } + pe := types.ProcessExecEvent{ + PIDs: types.PIDInfo{ + Tid: body.Pids.Tid, + Tgid: body.Pids.Tgid, + Ppid: body.Pids.Ppid, + Pgid: body.Pids.Pgid, + Sid: body.Pids.Sid, + StartTimeNS: body.Pids.StartTimeNs, + }, + Creds: types.CredInfo{ + Ruid: body.Creds.Ruid, + Rgid: body.Creds.Rgid, + Euid: body.Creds.Euid, + Egid: body.Creds.Egid, + Suid: body.Creds.Suid, + Sgid: body.Creds.Sgid, + CapPermitted: body.Creds.CapPermitted, + CapEffective: body.Creds.CapEffective, + }, + CTTY: types.TTYDev{ + Major: body.CTTY.Major, + Minor: body.CTTY.Minor, + }, + CWD: body.Cwd, + Argv: body.Argv, + Env: body.Env, + Filename: body.Filename, + } + p.db.InsertExec(pe) + case ebpfevents.EventTypeProcessExit: + body, ok := ev.Body.(*ebpfevents.ProcessExit) + if !ok { + logger.Errorf("unexpected event body") + continue + } + pe := types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tid: body.Pids.Tid, + Tgid: body.Pids.Tgid, + Ppid: body.Pids.Ppid, + Pgid: body.Pids.Pgid, + Sid: body.Pids.Sid, + StartTimeNS: body.Pids.StartTimeNs, + }, + ExitCode: body.ExitCode, + } + p.db.InsertExit(pe) + } + } + }(*p.logger) + + return &p, nil +} + +func (s prvdr) UpdateDB(ev *beat.Event) error { + // no-op for ebpf, DB is updated from pushed ebpf events + return nil +} diff --git a/x-pack/auditbeat/processors/sessionmd/provider/provider.go b/x-pack/auditbeat/processors/sessionmd/provider/provider.go new file mode 100644 index 00000000000..e3fa1547806 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/provider/provider.go @@ -0,0 +1,15 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package provider + +import ( + "github.com/elastic/beats/v7/libbeat/beat" +) + +type Provider interface { + UpdateDB(*beat.Event) error +} diff --git a/x-pack/auditbeat/processors/sessionmd/timeutils/time.go b/x-pack/auditbeat/processors/sessionmd/timeutils/time.go new file mode 100644 index 00000000000..5c8dd7450df --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/timeutils/time.go @@ -0,0 +1,77 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package timeutils + +import ( + "fmt" + "sync" + "time" + + "github.com/prometheus/procfs" + "github.com/tklauser/go-sysconf" +) + +var ( + getBootTimeOnce = sync.OnceValues(getBootTime) + getTicksPerSecondOnce = sync.OnceValues(getTicksPerSecond) +) + +func getBootTime() (time.Time, error) { + fs, err := procfs.NewDefaultFS() + if err != nil { + return time.Time{}, fmt.Errorf("could not get procfs: %w", err) + } + + stat, err := fs.Stat() + if err != nil { + return time.Time{}, fmt.Errorf("could not read /proc/stat: %w", err) + } + return time.Unix(int64(stat.BootTime), 0), nil +} + +func getTicksPerSecond() (uint64, error) { + tps, err := sysconf.Sysconf(sysconf.SC_CLK_TCK) + if err != nil { + return 0, fmt.Errorf("sysconf(SC_CLK_TCK) failed: %w", err) + } + return uint64(tps), nil +} + +func TicksToNs(ticks uint64) uint64 { + ticksPerSecond, err := getTicksPerSecondOnce() + if err != nil { + return 0 + } + return ticks * uint64(time.Second.Nanoseconds()) / ticksPerSecond +} + +func TimeFromNsSinceBoot(t time.Duration) *time.Time { + bootTime, err := getBootTimeOnce() + if err != nil { + return nil + } + timestamp := bootTime.Add(t) + return ×tamp +} + +// When generating an `entity_id` in ECS we need to reduce the precision of a +// process's start time to that of procfs. Process start times can come from either +// BPF (high precision) or procfs (lower precision). We must reduce them all to the +// lowest common denominator such that entity ID's generated are always consistent. +// +// - Timestamps we get from the kernel are in nanosecond precision. +// - Timestamps we get from procfs are typically 1/100th second precision. We +// get this precision from `sysconf()` +// - We store timestamps as nanoseconds, but reduce the precision to 1/100th +// second +func ReduceTimestampPrecision(timeNs uint64) time.Duration { + ticksPerSecond, err := getTicksPerSecondOnce() + if err != nil { + return 0 + } + return time.Duration(timeNs).Truncate(time.Second / time.Duration(ticksPerSecond)) +} diff --git a/x-pack/auditbeat/processors/sessionmd/timeutils/time_test.go b/x-pack/auditbeat/processors/sessionmd/timeutils/time_test.go new file mode 100644 index 00000000000..1aa5abdf469 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/timeutils/time_test.go @@ -0,0 +1,24 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package timeutils + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestReduceTimestampPrecision(t *testing.T) { + oneSecond := time.Second.Nanoseconds() + result1 := ReduceTimestampPrecision(uint64(oneSecond)) + require.Equal(t, time.Duration(oneSecond), result1) + + oneSecondWithDelay := oneSecond + 10 + result2 := ReduceTimestampPrecision(uint64(oneSecondWithDelay)) + require.Equal(t, time.Duration(oneSecond), result2) +} diff --git a/x-pack/auditbeat/processors/sessionmd/types/events.go b/x-pack/auditbeat/processors/sessionmd/types/events.go new file mode 100644 index 00000000000..5f8d67d763f --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/types/events.go @@ -0,0 +1,94 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package types + +//go:generate stringer -linecomment=true -type=Type,HookPoint,Field -output=gen_types_string.go + +type Type uint64 + +const ( + ProcessFork Type = iota + ProcessExec + ProcessExit + ProcessSetsid +) + +type ( + Field uint32 +) + +const ( + CWD Field = iota + 1 + Argv + Env + Filename +) + +type PIDInfo struct { + StartTimeNS uint64 + Tid uint32 + Tgid uint32 + Vpid uint32 + Ppid uint32 + Pgid uint32 + Sid uint32 +} + +type CredInfo struct { + Ruid uint32 + Rgid uint32 + Euid uint32 + Egid uint32 + Suid uint32 + Sgid uint32 + CapPermitted uint64 + CapEffective uint64 +} + +type TTYWinsize struct { + Rows uint16 + Cols uint16 +} + +type TTYTermios struct { + CIflag uint32 + COflag uint32 + CLflag uint32 + CCflag uint32 +} + +type TTYDev struct { + Minor uint16 + Major uint16 + Winsize TTYWinsize + Termios TTYTermios +} + +type ProcessForkEvent struct { + ParentPIDs PIDInfo + ChildPIDs PIDInfo + Creds CredInfo +} + +type ProcessExecEvent struct { + PIDs PIDInfo + Creds CredInfo + CTTY TTYDev + + // varlen fields + CWD string + Argv []string + Env map[string]string + Filename string +} + +type ProcessExitEvent struct { + PIDs PIDInfo + ExitCode int32 +} + +type ProcessSetsidEvent struct { + PIDs PIDInfo +} diff --git a/x-pack/auditbeat/processors/sessionmd/types/process.go b/x-pack/auditbeat/processors/sessionmd/types/process.go new file mode 100644 index 00000000000..e5a07d09987 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/types/process.go @@ -0,0 +1,456 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package types + +import ( + "time" + + "github.com/elastic/elastic-agent-libs/mapstr" +) + +// These fields contain information about a process. +// These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +type Process struct { + // Unique identifier for the process. + // The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. + // Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. + EntityID string `json:"entity_id,omitempty"` + + // Absolute path to the process executable. + Executable string `json:"executable,omitempty"` + + // Process name. + // Sometimes called program name or similar. + Name string `json:"name,omitempty"` + + // The time the process started. + Start *time.Time `json:"start,omitempty"` + + // The time the process ended. + End *time.Time `json:"end,omitempty"` + + // The exit code of the process, if this is a termination event. + // The field should be absent if there is no exit code for the event (e.g. process start). + ExitCode *int64 `json:"exit_code,omitempty"` + + // Whether the process is connected to an interactive shell. + // Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive. + // Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. + Interactive *bool `json:"interactive,omitempty"` + + // The working directory of the process. + WorkingDirectory string `json:"working_directory,omitempty"` + + // The effective user (euid). + User struct { + // Unique identifier of the user. + ID string `json:"id,omitempty"` + + // Short name or login of the user. + Name string `json:"name,omitempty"` + } `json:"user,omitempty"` + + // The effective group (egid). + Group struct { + // Unique identifier for the group on the system/platform. + ID string `json:"id,omitempty"` + + // Name of the group. + Name string `json:"name,omitempty"` + } `json:"group,omitempty"` + + // Process id. + PID uint32 `json:"pid,omitempty"` + + Vpid uint32 `json:"vpid,omitempty"` + + // Array of process arguments, starting with the absolute path to the executable. + // May be filtered to protect sensitive information. + Args []string `json:"args,omitempty"` + + // An array of previous executions for the process, including the initial fork. Only executable and args are set. + Previous []struct { + // Absolute path to the process executable. + Executable string `json:"executable,omitempty"` + + // Array of process arguments, starting with the absolute path to the executable. + // May be filtered to protect sensitive information. + Args []string `json:"args,omitempty"` + } `json:"previous,omitempty"` + + Thread struct { + Capabilities struct { + Permitted []string `json:"permitted,omitempty"` + + Effective []string `json:"effective,omitempty"` + } `json:"capabilities,omitempty"` + } `json:"thread,omitempty"` + + // Information about the parent process. + Parent struct { + // Unique identifier for the process. + // The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. + // Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. + EntityID string `json:"entity_id,omitempty"` + + // Absolute path to the process executable. + Executable string `json:"executable,omitempty"` + + // Whether the process is connected to an interactive shell. + // Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive. + // Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. + Interactive *bool `json:"interactive,omitempty"` + + // Process name. + // Sometimes called program name or similar. + Name string `json:"name,omitempty"` + + // The time the process started. + Start *time.Time `json:"start,omitempty"` + + // The working directory of the process. + WorkingDirectory string `json:"working_directory,omitempty"` + + // The effective user (euid). + User struct { + // Unique identifier of the user. + ID string `json:"id,omitempty"` + + // Short name or login of the user. + Name string `json:"name,omitempty"` + } `json:"user,omitempty"` + + // The effective group (egid). + Group struct { + // Unique identifier for the group on the system/platform. + ID string `json:"id,omitempty"` + + // Name of the group. + Name string `json:"name,omitempty"` + } `json:"group,omitempty"` + + // Process id. + PID uint32 `json:"pid,omitempty"` + + // Array of process arguments, starting with the absolute path to the executable. + // May be filtered to protect sensitive information. + Args []string `json:"args,omitempty"` + + Thread struct { + Capabilities struct { + Permitted []string `json:"permitted,omitempty"` + + Effective []string `json:"effective,omitempty"` + } `json:"capabilities,omitempty"` + } `json:"thread,omitempty"` + } `json:"parent,omitempty"` + + // Information about the process group leader. In some cases this may be the same as the top level process. + GroupLeader struct { + // Unique identifier for the process. + // The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. + // Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. + EntityID string `json:"entity_id,omitempty"` + + // Absolute path to the process executable. + Executable string `json:"executable,omitempty"` + + // Whether the process is connected to an interactive shell. + // Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive. + // Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. + Interactive *bool `json:"interactive,omitempty"` + + // Process name. + // Sometimes called program name or similar. + Name string `json:"name,omitempty"` + + // The time the process started. + Start *time.Time `json:"start,omitempty"` + + // The working directory of the process. + WorkingDirectory string `json:"working_directory,omitempty"` + + // The effective user (euid). + User struct { + // Unique identifier of the user. + ID string `json:"id,omitempty"` + + // Short name or login of the user. + Name string `json:"name,omitempty"` + } `json:"user,omitempty"` + + // The effective group (egid). + Group struct { + // Unique identifier for the group on the system/platform. + ID string `json:"id,omitempty"` + + // Name of the group. + Name string `json:"name,omitempty"` + } `json:"group,omitempty"` + + // Process id. + PID uint32 `json:"pid,omitempty"` + + // Array of process arguments, starting with the absolute path to the executable. + // May be filtered to protect sensitive information. + Args []string `json:"args,omitempty"` + + // This boolean is used to identify if a leader process is the same as the top level process. + // For example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`. + // This field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader) + // Instead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true` + // Note: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`. + SameAsProcess *bool `json:"same_as_process,omitempty"` + } `json:"group_leader,omitempty"` + + // Often the same as entry_leader. When it differs, it represents a session started within another session. e.g. using tmux + SessionLeader struct { + // Unique identifier for the process. + // The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. + // Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. + EntityID string `json:"entity_id,omitempty"` + + // Absolute path to the process executable. + Executable string `json:"executable,omitempty"` + + // Whether the process is connected to an interactive shell. + // Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive. + // Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. + Interactive *bool `json:"interactive,omitempty"` + + // Process name. + // Sometimes called program name or similar. + Name string `json:"name,omitempty"` + + // The time the process started. + Start *time.Time `json:"start,omitempty"` + + // The working directory of the process. + WorkingDirectory string `json:"working_directory,omitempty"` + + // The effective user (euid). + User struct { + // Unique identifier of the user. + ID string `json:"id,omitempty"` + + // Short name or login of the user. + Name string `json:"name,omitempty"` + } `json:"user,omitempty"` + + // The effective group (egid). + Group struct { + // Unique identifier for the group on the system/platform. + ID string `json:"id,omitempty"` + + // Name of the group. + Name string `json:"name,omitempty"` + } `json:"group,omitempty"` + + // Process id. + PID uint32 `json:"pid,omitempty"` + + // Array of process arguments, starting with the absolute path to the executable. + // May be filtered to protect sensitive information. + Args []string `json:"args,omitempty"` + + // This boolean is used to identify if a leader process is the same as the top level process. + // For example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`. + // This field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader) + // Instead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true` + // Note: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`. + SameAsProcess *bool `json:"same_as_process,omitempty"` + } `json:"session_leader,omitempty"` + + // First process from terminal or remote access via SSH, SSM, etc OR a service directly started by the init process. + EntryLeader struct { + // Unique identifier for the process. + // The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. + // Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. + EntityID string `json:"entity_id,omitempty"` + + // Absolute path to the process executable. + Executable string `json:"executable,omitempty"` + + // Whether the process is connected to an interactive shell. + // Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive. + // Note: A non-interactive process can belong to an interactive session and is simply one that does not have open file descriptors reading the controlling TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A backgrounded process is still considered interactive if stdin and stderr are connected to the controlling TTY. + Interactive *bool `json:"interactive,omitempty"` + + // Process name. + // Sometimes called program name or similar. + Name string `json:"name,omitempty"` + + // The time the process started. + Start *time.Time `json:"start,omitempty"` + + // The working directory of the process. + WorkingDirectory string `json:"working_directory,omitempty"` + + EntryMeta struct { + // The entry type for the entry session leader. Values include: init(e.g systemd), sshd, ssm, kubelet, teleport, terminal, console + // Note: This field is only set on process.session_leader. + Type string `json:"type,omitempty"` + } `json:"entry_meta,omitempty"` + + // The effective user (euid). + User struct { + // Unique identifier of the user. + ID string `json:"id,omitempty"` + + // Short name or login of the user. + Name string `json:"name,omitempty"` + } `json:"user,omitempty"` + + // The effective group (egid). + Group struct { + // Unique identifier for the group on the system/platform. + ID string `json:"id,omitempty"` + + // Name of the group. + Name string `json:"name,omitempty"` + } `json:"group,omitempty"` + + // Process id. + PID uint32 `json:"pid,omitempty"` + + // Array of process arguments, starting with the absolute path to the executable. + // May be filtered to protect sensitive information. + Args []string `json:"args,omitempty"` + + // This boolean is used to identify if a leader process is the same as the top level process. + // For example, if `process.group_leader.same_as_process = true`, it means the process event in question is the leader of its process group. Details under `process.*` like `pid` would be the same under `process.group_leader.*` The same applies for both `process.session_leader` and `process.entry_leader`. + // This field exists to the benefit of EQL and other rule engines since it's not possible to compare equality between two fields in a single document. e.g `process.entity_id` = `process.group_leader.entity_id` (top level process is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` (top level process is the entry session leader) + // Instead these rules could be written like: `process.group_leader.same_as_process: true` OR `process.entry_leader.same_as_process: true` + // Note: This field is only set on `process.entry_leader`, `process.session_leader` and `process.group_leader`. + SameAsProcess *bool `json:"same_as_process,omitempty"` + } `json:"entry_leader,omitempty"` +} + +func (p *Process) ToMap() mapstr.M { + process := mapstr.M{ + "entity_id": p.EntityID, + "executable": p.Executable, + "name": p.Name, + "exit_code": p.ExitCode, + "interactive": p.Interactive, + "working_directory": p.WorkingDirectory, + "user": mapstr.M{ + "id": p.User.ID, + "name": p.User.Name, + }, + "group": mapstr.M{ + "id": p.Group.ID, + "name": p.Group.Name, + }, + "pid": p.PID, + "vpid": p.Vpid, + "args": p.Args, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "permitted": p.Thread.Capabilities.Permitted, + "effective": p.Thread.Capabilities.Effective, + }, + }, + "parent": mapstr.M{ + "entity_id": p.Parent.EntityID, + "executable": p.Parent.Executable, + "name": p.Parent.Name, + "interactive": p.Parent.Interactive, + "working_directory": p.Parent.WorkingDirectory, + "user": mapstr.M{ + "id": p.Parent.User.ID, + "name": p.Parent.User.Name, + }, + "group": mapstr.M{ + "id": p.Parent.Group.ID, + "name": p.Parent.Group.Name, + }, + "pid": p.Parent.PID, + "args": p.Parent.Args, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "permitted": p.Parent.Thread.Capabilities.Permitted, + "effective": p.Parent.Thread.Capabilities.Effective, + }, + }, + }, + "group_leader": mapstr.M{ + "entity_id": p.GroupLeader.EntityID, + "executable": p.GroupLeader.Executable, + "name": p.GroupLeader.Name, + "interactive": p.GroupLeader.Interactive, + "working_directory": p.GroupLeader.WorkingDirectory, + "user": mapstr.M{ + "id": p.GroupLeader.User.ID, + "name": p.GroupLeader.User.Name, + }, + "group": mapstr.M{ + "id": p.GroupLeader.Group.ID, + "name": p.GroupLeader.Group.Name, + }, + "pid": p.GroupLeader.PID, + "args": p.GroupLeader.Args, + "same_as_process": p.GroupLeader.SameAsProcess, + }, + "session_leader": mapstr.M{ + "entity_id": p.SessionLeader.EntityID, + "executable": p.SessionLeader.Executable, + "name": p.SessionLeader.Name, + "interactive": p.SessionLeader.Interactive, + "working_directory": p.SessionLeader.WorkingDirectory, + "user": mapstr.M{ + "id": p.SessionLeader.User.ID, + "name": p.SessionLeader.User.Name, + }, + "group": mapstr.M{ + "id": p.SessionLeader.Group.ID, + "name": p.SessionLeader.Group.Name, + }, + "pid": p.SessionLeader.PID, + "args": p.SessionLeader.Args, + "same_as_process": p.SessionLeader.SameAsProcess, + }, + "entry_leader": mapstr.M{ + "entity_id": p.EntryLeader.EntityID, + "executable": p.EntryLeader.Executable, + "name": p.EntryLeader.Name, + "interactive": p.EntryLeader.Interactive, + "working_directory": p.EntryLeader.WorkingDirectory, + "entry_meta": mapstr.M{ + "type": p.EntryLeader.EntryMeta.Type, + }, + "user": mapstr.M{ + "id": p.EntryLeader.User.ID, + "name": p.EntryLeader.User.Name, + }, + "group": mapstr.M{ + "id": p.EntryLeader.Group.ID, + "name": p.EntryLeader.Group.Name, + }, + "pid": p.EntryLeader.PID, + "args": p.EntryLeader.Args, + "same_as_process": p.EntryLeader.SameAsProcess, + }, + } + + // nil timestamps will cause a panic within the publisher, only add the mapping if it exists + if p.Start != nil { + process.Put("start", p.Start) + } + if p.Parent.Start != nil { + process.Put("parent.start", p.Parent.Start) + } + if p.GroupLeader.Start != nil { + process.Put("group_leader.start", p.GroupLeader.Start) + } + if p.SessionLeader.Start != nil { + process.Put("session_leader.start", p.SessionLeader.Start) + } + if p.EntryLeader.Start != nil { + process.Put("entry_leader.start", p.EntryLeader.Start) + } + + return process +} From bf3df96ca6e20b2fcd1e770721fe83cf4343a989 Mon Sep 17 00:00:00 2001 From: Kush Rana <89848966+kush-elastic@users.noreply.github.com> Date: Fri, 5 Apr 2024 23:01:39 +0530 Subject: [PATCH 095/313] x-pack/filebeat/input/salesforce: Implement a new Salesforce input (#37331) --------- Co-authored-by: subham sarkar Co-authored-by: Aman <38116245+devamanv@users.noreply.github.com> Co-authored-by: Pierre HILBERT --- CHANGELOG.next.asciidoc | 1 + NOTICE.txt | 142 +++- go.mod | 6 +- go.sum | 4 + .../docs/inputs/input-salesforce.asciidoc | 276 ++++++ .../input/default-inputs/inputs_other.go | 2 + x-pack/filebeat/input/salesforce/config.go | 131 +++ .../filebeat/input/salesforce/config_auth.go | 92 ++ .../input/salesforce/config_auth_test.go | 55 ++ .../filebeat/input/salesforce/config_test.go | 126 +++ x-pack/filebeat/input/salesforce/helper.go | 33 + x-pack/filebeat/input/salesforce/input.go | 573 +++++++++++++ .../input/salesforce/input_manager.go | 89 ++ .../input/salesforce/input_manager_test.go | 82 ++ .../filebeat/input/salesforce/input_test.go | 803 ++++++++++++++++++ x-pack/filebeat/input/salesforce/soql.go | 27 + x-pack/filebeat/input/salesforce/soql_test.go | 39 + x-pack/filebeat/input/salesforce/state.go | 49 ++ x-pack/filebeat/input/salesforce/value_tpl.go | 132 +++ 19 files changed, 2624 insertions(+), 38 deletions(-) create mode 100644 x-pack/filebeat/docs/inputs/input-salesforce.asciidoc create mode 100644 x-pack/filebeat/input/salesforce/config.go create mode 100644 x-pack/filebeat/input/salesforce/config_auth.go create mode 100644 x-pack/filebeat/input/salesforce/config_auth_test.go create mode 100644 x-pack/filebeat/input/salesforce/config_test.go create mode 100644 x-pack/filebeat/input/salesforce/helper.go create mode 100644 x-pack/filebeat/input/salesforce/input.go create mode 100644 x-pack/filebeat/input/salesforce/input_manager.go create mode 100644 x-pack/filebeat/input/salesforce/input_manager_test.go create mode 100644 x-pack/filebeat/input/salesforce/input_test.go create mode 100644 x-pack/filebeat/input/salesforce/soql.go create mode 100644 x-pack/filebeat/input/salesforce/soql_test.go create mode 100644 x-pack/filebeat/input/salesforce/state.go create mode 100644 x-pack/filebeat/input/salesforce/value_tpl.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index af97c40c0ac..525dee11d47 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -182,6 +182,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Prevent complete loss of long request trace data. {issue}37826[37826] {pull}37836[37836] - Added experimental version of the Websocket Input. {pull}37774[37774] - Add support for PEM-based Okta auth in CEL. {pull}37813[37813] +- Add Salesforce input. {pull}37331[37331] - Add ETW input. {pull}36915[36915] - Update CEL mito extensions to v1.9.0 to add keys/values helper. {pull}37971[37971] - Add logging for cache processor file reads and writes. {pull}38052[38052] diff --git a/NOTICE.txt b/NOTICE.txt index eb8588c7783..f846edfc9ec 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -16447,6 +16447,37 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +Dependency : github.com/elastic/go-sfdc +Version: v0.0.0-20201201191151-3190c381b3e1 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-sfdc@v0.0.0-20201201191151-3190c381b3e1/LICENSE.txt: + +MIT License + +Copyright (c) 2019 Robert Sean Justice + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + -------------------------------------------------------------------------------- Dependency : github.com/go-ldap/ldap/v3 Version: v3.4.6 @@ -17400,6 +17431,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +Dependency : github.com/golang-jwt/jwt +Version: v3.2.1+incompatible +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/golang-jwt/jwt@v3.2.1+incompatible/LICENSE: + +Copyright (c) 2012 Dave Grijalva +Copyright (c) 2021 golang-jwt maintainers + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + -------------------------------------------------------------------------------- Dependency : github.com/golang/mock Version: v1.6.0 @@ -25058,6 +25108,43 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +Dependency : golang.org/x/exp +Version: v0.0.0-20231127185646-65229373498e +Licence type (autodetected): BSD-3-Clause +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/golang.org/x/exp@v0.0.0-20231127185646-65229373498e/LICENSE: + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + -------------------------------------------------------------------------------- Dependency : golang.org/x/lint Version: v0.0.0-20210508222113-6edffad5e616 @@ -37123,6 +37210,24 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/ristretto@v0.1. END OF TERMS AND CONDITIONS +-------------------------------------------------------------------------------- +Dependency : github.com/dgrijalva/jwt-go +Version: v3.2.0+incompatible +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/dgrijalva/jwt-go@v3.2.0+incompatible/LICENSE: + +Copyright (c) 2012 Dave Grijalva + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + -------------------------------------------------------------------------------- Dependency : github.com/dgryski/go-farm Version: v0.0.0-20190423205320-6a90982ecee2 @@ -53865,43 +53970,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------------------------------- -Dependency : golang.org/x/exp -Version: v0.0.0-20231127185646-65229373498e -Licence type (autodetected): BSD-3-Clause --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/golang.org/x/exp@v0.0.0-20231127185646-65229373498e/LICENSE: - -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -------------------------------------------------------------------------------- Dependency : golang.org/x/term Version: v0.18.0 diff --git a/go.mod b/go.mod index 9e8c91fc742..a080de26a98 100644 --- a/go.mod +++ b/go.mod @@ -211,7 +211,9 @@ require ( github.com/elastic/tk-btf v0.1.0 github.com/elastic/toutoumomoma v0.0.0-20221026030040-594ef30cb640 github.com/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15 + github.com/g8rswimmer/go-sfdc v0.0.0-00010101000000-000000000000 github.com/go-ldap/ldap/v3 v3.4.6 + github.com/golang-jwt/jwt v3.2.1+incompatible github.com/google/cel-go v0.19.0 github.com/googleapis/gax-go/v2 v2.12.0 github.com/gorilla/handlers v1.5.1 @@ -229,6 +231,7 @@ require ( go.elastic.co/apm/module/apmhttp/v2 v2.4.8 go.elastic.co/apm/v2 v2.4.8 go.mongodb.org/mongo-driver v1.5.1 + golang.org/x/exp v0.0.0-20231127185646-65229373498e golang.org/x/tools/go/vcs v0.1.0-deprecated google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb gopkg.in/natefinch/lumberjack.v2 v2.0.0 @@ -277,6 +280,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect github.com/dnephin/pflag v1.0.7 // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect @@ -375,7 +379,6 @@ require ( go.opentelemetry.io/otel v1.21.0 // indirect go.opentelemetry.io/otel/metric v1.21.0 // indirect go.opentelemetry.io/otel/trace v1.21.0 // indirect - golang.org/x/exp v0.0.0-20231127185646-65229373498e // indirect golang.org/x/term v0.18.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -415,6 +418,7 @@ replace ( github.com/dop251/goja_nodejs => github.com/dop251/goja_nodejs v0.0.0-20171011081505-adff31b136e6 github.com/fsnotify/fsevents => github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270 github.com/fsnotify/fsnotify => github.com/adriansr/fsnotify v1.4.8-0.20211018144411-a81f2b630e7c + github.com/g8rswimmer/go-sfdc => github.com/elastic/go-sfdc v0.0.0-20201201191151-3190c381b3e1 github.com/godror/godror => github.com/godror/godror v0.33.2 // updating to v0.24.2 caused a breaking change github.com/golang/glog => github.com/elastic/glog v1.0.1-0.20210831205241-7d8b5c89dfc4 github.com/google/gopacket => github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a diff --git a/go.sum b/go.sum index d839df6a98e..7900b675836 100644 --- a/go.sum +++ b/go.sum @@ -598,6 +598,7 @@ github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2/go.mod h1:XG9mPq0dF github.com/dgraph-io/badger/v3 v3.2103.1 h1:zaX53IRg7ycxVlkd5pYdCeFp1FynD6qBGQoQql3R3Hk= github.com/dgraph-io/badger/v3 v3.2103.1/go.mod h1:dULbq6ehJ5K0cGW/1TQ9iSfUk0gbSiToDWmWmTsJ53E= github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= @@ -706,6 +707,8 @@ github.com/elastic/go-plugins-helpers v0.0.0-20200207104224-bdf17607b79f h1:Fvsq github.com/elastic/go-plugins-helpers v0.0.0-20200207104224-bdf17607b79f/go.mod h1:OPGqFNdTS34kMReS5hPFtBhD9J8itmSDurs1ix2wx7c= github.com/elastic/go-seccomp-bpf v1.4.0 h1:6y3lYrEHrLH9QzUgOiK8WDqmPaMnnB785WxibCNIOH4= github.com/elastic/go-seccomp-bpf v1.4.0/go.mod h1:wIMxjTbKpWGQk4CV9WltlG6haB4brjSH/dvAohBPM1I= +github.com/elastic/go-sfdc v0.0.0-20201201191151-3190c381b3e1 h1:KS+lvT/rUS8Z4++RoiM2pHOKmBv8mLERmgiX04VEgwk= +github.com/elastic/go-sfdc v0.0.0-20201201191151-3190c381b3e1/go.mod h1:/FB/tWFyF33vmdjwIwqAKu9QMVFVEjeoWi9V6eUcQEQ= github.com/elastic/go-structform v0.0.10 h1:oy08o/Ih2hHTkNcRY/1HhaYvIp5z6t8si8gnCJPDo1w= github.com/elastic/go-structform v0.0.10/go.mod h1:CZWf9aIRYY5SuKSmOhtXScE5uQiLZNqAFnwKR4OrIM4= github.com/elastic/go-sysinfo v1.13.1 h1:U5Jlx6c/rLkR72O8wXXXo1abnGlWGJU/wbzNJ2AfQa4= @@ -995,6 +998,7 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= diff --git a/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc b/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc new file mode 100644 index 00000000000..3b85b8511b6 --- /dev/null +++ b/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc @@ -0,0 +1,276 @@ +[role="xpack"] + +:type: salesforce + +[id="{beatname_lc}-input-{type}"] +=== Salesforce input + +++++ +Salesforce +++++ + +Use the `salesforce` input to monitor Salesforce events either via the https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm[Salesforce EventLogFile (ELF) API] or the https://developer.salesforce.com/blogs/2020/05/introduction-to-real-time-event-monitoring[Salesforce Real-time event monitoring API]. Both use REST API (to execute SOQL queries in the Salesforce instance) under the hood to query the relevant objects to fetch the events. + +Here the `input` have cursor state(s) that will be provided to the next execution of event monitoring to fetch the events from the last cursor state. The cursor states can be used to control the behaviour of the program. + +This input supports: + +* Auth +** OAuth2 +*** User-Password flow +*** JWT Bearer flow +* Event Monitoring +** EventLogFile (ELF) using REST API +** REST API for objects (Used for Setup Audit Trail and for monitoring real-time events) + +Event Monitoring methods are highly configurable and can be used to monitor any supported object or event log file. The input can be configured to monitor multiple objects or event log files at the same time. + +Example configurations: + +["source","yaml",subs="attributes"] +---- +filebeat.inputs: + - type: salesforce + enabled: true + version: 56 + auth.oauth2: + user_password_flow: + enabled: true + client.id: client-id + client.secret: client-secret + token_url: https://instance-id.develop.my.salesforce.com + username: salesforce-instance@user.in + password: salesforce-instance-password + jwt_bearer_flow: + enabled: true + client.id: client-id + client.username: salesforce-instance@user.in + client.key_path: server_client.key + url: https://login.salesforce.com + url: https://instance-id.develop.my.salesforce.com + event_monitoring_method: + event_log_file: + enabled: true + interval: 1h + query: + default: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' ORDER BY CreatedDate ASC NULLS FIRST" + value: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > [[ .cursor.event_log_file.last_event_time ]] ORDER BY CreatedDate ASC NULLS FIRST" + cursor: + field: "CreatedDate" + object: + enabled: true + interval: 5m + query: + default: "SELECT FIELDS(STANDARD) FROM LoginEvent" + value: "SELECT FIELDS(STANDARD) FROM LoginEvent WHERE EventDate > [[ .cursor.object.first_event_time ]]" + cursor: + field: "EventDate" +---- + + +==== Execution + +The `salesforce` input is a long-running program that retrieves events from a Salesforce instance and sends them to the specified output. The program executes in a loop, fetching events from the Salesforce instance at a preconfigured interval. Each event monitoring method can be configured to run separately and at different intervals. To prevent a sudden spike in memory usage, if multiple event monitoring methods are configured, they are scheduled to run one at a time. Even if the intervals overlap, only one method will be executed randomly, and the other will be executed after the first one completes. + +There are two methods to fetch the events from the Salesforce instance: + +- event_log_file: https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm[EventLogFile] is a standard object in Salesforce and the event monitoring method uses the REST API under the hood to gather the Salesforce org's operational events from the object. There is a field EventType that helps distinguish between the types of operational events like — Login, Logout, etc. Uses Salesforce's query language SOQL to query the object. + +- object: This method is a general way of retrieving events from a Salesforce instance by using the REST API. It can be used for the SetupAuditTrail and for monitoring objects in real-time. In real-time event monitoring, subscribing to the events is a common practice, but the events are also stored in Salesforce org (if configured), specifically in big object tables that are preconfigured for each event type. To query the object, Salesforce's query language SOQL is used. + +==== Configuration options + +The `salesforce` input supports the following configuration options plus the +<<{beatname_lc}-input-{type}-common-options>> described later. + +[bool] +==== `enabled` + +Whether the input is enabled or not. Default: `false`. + +[integer] +==== `version` + +The version of the Salesforce API to use. Minimum supported version is 46. + +[object] +==== `auth` + +The authentication settings for the Salesforce instance. + +[object] +==== `auth.oauth2` + +The OAuth2 authentication options for the Salesforce instance. + +There are two OAuth2 authentication flows supported: + +* `user_password_flow`: User-Password flow +* `jwt_bearer_flow`: JWT Bearer flow + +[bool] +==== `auth.oauth2.user_password_flow.enabled` + +Whether to use the user-password flow for authentication. Default: `false`. + +NOTE: Only one authentication flow can be enabled at a time. + +[string] +==== `auth.oauth2.user_password_flow.client.id` + +The client ID for the user-password flow. + +[string] +==== `auth.oauth2.user_password_flow.client.secret` + +The client secret for the user-password flow. + +[string] +==== `auth.oauth2.user_password_flow.token_url` + +The token URL for the user-password flow. + +[string] +==== `auth.oauth2.user_password_flow.username` + +The username for the user-password flow. + +[string] +==== `auth.oauth2.user_password_flow.password` + +The password for the user-password flow. + +[bool] +==== `auth.oauth2.jwt_bearer_flow.enabled` + +Whether to use the JWT bearer flow for authentication. Default: `false`. + +NOTE: Only one authentication flow can be enabled at a time. + +[string] +==== `auth.oauth2.jwt_bearer_flow.client.id` + +The client ID for the JWT bearer flow. + +[string] +==== `auth.oauth2.jwt_bearer_flow.client.username` + +The username for the JWT bearer flow. + +[string] +==== `auth.oauth2.jwt_bearer_flow.client.key_path` + +The path to the private key file for the JWT bearer flow. The file must be PEM encoded PKCS1 or PKCS8 private key and must have the right permissions set to have read access for the user running the program. + +[string] +==== `auth.oauth2.jwt_bearer_flow.url` + +The URL for the JWT bearer flow. + +[string] +==== `url` + +The URL of the Salesforce instance. Required. + +[[resource-parameters]] +[float] +==== `resource.timeout` + +Duration before declaring that the HTTP client connection has timed out. Valid time units are `ns`, `us`, `ms`, `s`, `m`, `h`. Default: `30s`. + +[float] +==== `resource.retry.max_attempts` + +The maximum number of retries for the HTTP client. Default: `5`. + +[float] +==== `resource.retry.wait_min` + +The minimum time to wait before a retry is attempted. Default: `1s`. + +[float] +==== `resource.retry.wait_max` + +The maximum time to wait before a retry is attempted. Default: `60s`. + +[object] +==== `event_monitoring_method` + +The event monitoring method to use. There are two event monitoring methods supported: + +* `event_log_file`: EventLogFile (ELF) using REST API + +* `object`: Real-time event monitoring using REST API (objects) + +[object] +==== `event_monitoring_method.event_log_file` + +The event monitoring method to use — event_log_file. Uses the EventLogFile API to fetch the events from the Salesforce instance. + +[bool] +==== `event_monitoring_method.event_log_file.enabled` + +Whether to use the EventLogFile API for event monitoring. Default: `false`. + +[duration] +==== `event_monitoring_method.event_log_file.interval` + +The interval to collect the events from the Salesforce instance using the EventLogFile API. + +[string] +==== `event_monitoring_method.event_log_file.query.default` + +The default query to fetch the events from the Salesforce instance using the EventLogFile API. + +In case the cursor state is not available, the default query will be used to fetch the events from the Salesforce instance. The default query must be a valid SOQL query. If the SOQL query in `event_monitoring_method.event_log_file.query.value` is not valid, the default query will be used to fetch the events from the Salesforce instance. + +[string] +==== `event_monitoring_method.event_log_file.query.value` + +The SOQL query to fetch the events from the Salesforce instance using the EventLogFile API but it uses the cursor state to fetch the events from the Salesforce instance. The SOQL query must be a valid SOQL query. If the SOQL query is not valid, the default query will be used to fetch the events from the Salesforce instance. + +In case of restarts or subsequent executions, the cursor state will be used to fetch the events from the Salesforce instance. The cursor state is the last event time of the last event fetched from the Salesforce instance. The cursor state is taken from `event_monitoring_method.event_log_file.cursor.field` field for the last event fetched from the Salesforce instance. + +[string] +==== `event_monitoring_method.event_log_file.cursor.field` + +The field to use to fetch the cursor state from the last event fetched from the Salesforce instance. The field must be a valid field in the SOQL query specified in `event_monitoring_method.event_log_file.query.default` and `event_monitoring_method.event_log_file.query.value` i.e., part of the selected fields in the SOQL query. + +[object] +==== `event_monitoring_method.object` + +The event monitoring method to use — object. Uses REST API to fetch the events directly from the objects from the Salesforce instance. This method is used for Setup Audit Trail and for monitoring real-time events. + +[bool] +==== `event_monitoring_method.object.enabled` + +Whether to use the REST API for objects for event monitoring. Default: `false`. + +[duration] +==== `event_monitoring_method.object.interval` + +The interval to collect the events from the Salesforce instance using the REST API from objects. + +[string] +==== `event_monitoring_method.object.query.default` + +The default SOQL query to fetch the events from the Salesforce instance using the REST API from objects. + +In case the cursor state is not available, the default query will be used to fetch the events from the Salesforce instance. The default query must be a valid SOQL query. If the SOQL query in `event_monitoring_method.object.query.value` is not valid, the default query will be used to fetch the events from the Salesforce instance. + +[string] +==== `event_monitoring_method.object.query.value` + +The SOQL query to fetch the events from the Salesforce instance using the REST API from objects but it uses the cursor state to fetch the events from the Salesforce instance. The SOQL query must be a valid SOQL query. If the SOQL query is not valid, the default query will be used to fetch the events from the Salesforce instance. + +In case of restarts or subsequent executions, the cursor state will be used to fetch the events from the Salesforce instance. The cursor state is the last event time of the last event fetched from the Salesforce instance. The cursor state is taken from `event_monitoring_method.object.cursor.field` field for the last event fetched from the Salesforce instance. + +[string] +==== `event_monitoring_method.object.cursor.field` + +The field to use to fetch the cursor state from the last event fetched from the Salesforce instance. The field must be a valid field in the SOQL query specified in `event_monitoring_method.object.query.default` and `event_monitoring_method.object.query.value` i.e., part of the selected fields in the SOQL query. + +[id="{beatname_lc}-input-{type}-common-options"] +include::../../../../filebeat/docs/inputs/input-common-options.asciidoc[] + +:type!: diff --git a/x-pack/filebeat/input/default-inputs/inputs_other.go b/x-pack/filebeat/input/default-inputs/inputs_other.go index 91d5917f261..ab682e4e001 100644 --- a/x-pack/filebeat/input/default-inputs/inputs_other.go +++ b/x-pack/filebeat/input/default-inputs/inputs_other.go @@ -22,6 +22,7 @@ import ( "github.com/elastic/beats/v7/x-pack/filebeat/input/lumberjack" "github.com/elastic/beats/v7/x-pack/filebeat/input/netflow" "github.com/elastic/beats/v7/x-pack/filebeat/input/o365audit" + "github.com/elastic/beats/v7/x-pack/filebeat/input/salesforce" "github.com/elastic/beats/v7/x-pack/filebeat/input/shipper" "github.com/elastic/beats/v7/x-pack/filebeat/input/websocket" "github.com/elastic/elastic-agent-libs/logp" @@ -40,6 +41,7 @@ func xpackInputs(info beat.Info, log *logp.Logger, store beater.StateStore) []v2 awss3.Plugin(store), awscloudwatch.Plugin(), lumberjack.Plugin(), + salesforce.Plugin(log, store), shipper.Plugin(log, store), websocket.Plugin(log, store), netflow.Plugin(log), diff --git a/x-pack/filebeat/input/salesforce/config.go b/x-pack/filebeat/input/salesforce/config.go new file mode 100644 index 00000000000..55ee1c81e83 --- /dev/null +++ b/x-pack/filebeat/input/salesforce/config.go @@ -0,0 +1,131 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "errors" + "fmt" + "time" + + "github.com/elastic/elastic-agent-libs/transport/httpcommon" +) + +type config struct { + Resource *resourceConfig `config:"resource"` + Auth *authConfig `config:"auth"` + EventMonitoringMethod *eventMonitoringMethod `config:"event_monitoring_method"` + URL string `config:"url" validate:"required"` + Version int `config:"version" validate:"required"` +} + +type resourceConfig struct { + Retry retryConfig `config:"retry"` + Transport httpcommon.HTTPTransportSettings `config:",inline"` +} + +type retryConfig struct { + MaxAttempts *int `config:"max_attempts"` + WaitMin *time.Duration `config:"wait_min"` + WaitMax *time.Duration `config:"wait_max"` +} + +func (c retryConfig) Validate() error { + switch { + case c.MaxAttempts != nil && *c.MaxAttempts <= 0: + return errors.New("max_attempts must be greater than zero") + case c.WaitMin != nil && *c.WaitMin <= 0: + return errors.New("wait_min must be greater than zero") + case c.WaitMax != nil && *c.WaitMax <= 0: + return errors.New("wait_max must be greater than zero") + } + return nil +} + +func (c retryConfig) getMaxAttempts() int { + if c.MaxAttempts == nil { + return 0 + } + return *c.MaxAttempts +} + +func (c retryConfig) getWaitMin() time.Duration { + if c.WaitMin == nil { + return 0 + } + return *c.WaitMin +} + +func (c retryConfig) getWaitMax() time.Duration { + if c.WaitMax == nil { + return 0 + } + return *c.WaitMax +} + +type eventMonitoringMethod struct { + EventLogFile EventMonitoringConfig `config:"event_log_file"` + Object EventMonitoringConfig `config:"object"` +} + +type EventMonitoringConfig struct { + Enabled *bool `config:"enabled"` + Query *QueryConfig `config:"query"` + Cursor *cursorConfig `config:"cursor"` + Interval time.Duration `config:"interval"` +} + +func (e *EventMonitoringConfig) isEnabled() bool { + return e != nil && (e.Enabled != nil && *e.Enabled) +} + +type cursorConfig struct { + Field string `config:"field"` +} + +// Validate validates the configuration. +func (c *config) Validate() error { + switch { + case !c.Auth.OAuth2.JWTBearerFlow.isEnabled() && !c.Auth.OAuth2.UserPasswordFlow.isEnabled(): + return errors.New("no auth provider enabled") + case c.Auth.OAuth2.JWTBearerFlow.isEnabled() && c.Auth.OAuth2.UserPasswordFlow.isEnabled(): + return errors.New("only one auth provider must be enabled") + case c.URL == "": + return errors.New("no instance url is configured") + case !c.EventMonitoringMethod.Object.isEnabled() && !c.EventMonitoringMethod.EventLogFile.isEnabled(): + return errors.New(`at least one of "event_monitoring_method.event_log_file.enabled" or "event_monitoring_method.object.enabled" must be set to true`) + case c.EventMonitoringMethod.EventLogFile.isEnabled() && c.EventMonitoringMethod.EventLogFile.Interval == 0: + return fmt.Errorf("not a valid interval %d", c.EventMonitoringMethod.EventLogFile.Interval) + case c.EventMonitoringMethod.Object.isEnabled() && c.EventMonitoringMethod.Object.Interval == 0: + return fmt.Errorf("not a valid interval %d", c.EventMonitoringMethod.Object.Interval) + + case c.Version < 46: + // - EventLogFile object is available in API version 32.0 or later + // - SetupAuditTrail object is available in API version 15.0 or later + // - Real-Time Event monitoring objects that were introduced as part of + // the beta release in API version 46.0 + // + // To keep things simple, only one version is entertained i.e., the + // minimum version supported by all objects for which we have support + // for. + // + // minimum_vesion_supported_by_all_objects([32.0, 15.0, 46.0]) = 46.0 + // + // (Objects like EventLogFile, SetupAuditTrail and Real-time monitoring + // objects are available in v46.0 and above) + + // References: + // https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm + // https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_setupaudittrail.htm + // https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_objects_monitoring.htm + return errors.New("not a valid version i.e., 46.0 or above") + } + + return nil +} + +type QueryConfig struct { + Default *valueTpl `config:"default"` + Value *valueTpl `config:"value"` +} diff --git a/x-pack/filebeat/input/salesforce/config_auth.go b/x-pack/filebeat/input/salesforce/config_auth.go new file mode 100644 index 00000000000..6e0f9361def --- /dev/null +++ b/x-pack/filebeat/input/salesforce/config_auth.go @@ -0,0 +1,92 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import "errors" + +type authConfig struct { + // See: https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_flows.htm&type=5 + // for more information about OAuth2 flows. + OAuth2 *OAuth2 `config:"oauth2"` +} + +type OAuth2 struct { + // See: https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_username_password_flow.htm&type=5 + UserPasswordFlow *UserPasswordFlow `config:"user_password_flow"` + // See: https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm&type=5 + JWTBearerFlow *JWTBearerFlow `config:"jwt_bearer_flow"` +} + +type UserPasswordFlow struct { + Enabled *bool `config:"enabled"` + + ClientID string `config:"client.id"` + ClientSecret string `config:"client.secret"` + Password string `config:"password"` + TokenURL string `config:"token_url"` + Username string `config:"username"` +} + +type JWTBearerFlow struct { + Enabled *bool `config:"enabled"` + + URL string `config:"url"` + ClientID string `config:"client.id"` + ClientUsername string `config:"client.username"` + ClientKeyPath string `config:"client.key_path"` +} + +// isEnabled returns true if the `enable` field is set to true in the yaml. +func (o *UserPasswordFlow) isEnabled() bool { + return o != nil && (o.Enabled != nil && *o.Enabled) +} + +// Validate checks if User Passworld Flow config is valid. +func (o *UserPasswordFlow) Validate() error { + if !o.isEnabled() { + return nil + } + + switch { + case o.TokenURL == "": + return errors.New("token_url must be provided") + case o.ClientID == "": + return errors.New("client.id must be provided") + case o.ClientSecret == "": + return errors.New("client.secret must be provided") + case o.Username == "": + return errors.New("username must be provided") + case o.Password == "": + return errors.New("password must be provided") + + } + + return nil +} + +// isEnabled returns true if the `enable` field is set to true in the yaml. +func (o *JWTBearerFlow) isEnabled() bool { + return o != nil && (o.Enabled != nil && *o.Enabled) +} + +// Validate checks if JWT Bearer Flow config is valid. +func (o *JWTBearerFlow) Validate() error { + if !o.isEnabled() { + return nil + } + + switch { + case o.URL == "": + return errors.New("url must be provided") + case o.ClientID == "": + return errors.New("client.id must be provided") + case o.ClientUsername == "": + return errors.New("client.username must be provided") + case o.ClientKeyPath == "": + return errors.New("client.key_path must be provided") + } + + return nil +} diff --git a/x-pack/filebeat/input/salesforce/config_auth_test.go b/x-pack/filebeat/input/salesforce/config_auth_test.go new file mode 100644 index 00000000000..0b378f7b47f --- /dev/null +++ b/x-pack/filebeat/input/salesforce/config_auth_test.go @@ -0,0 +1,55 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestOAuth2Config(t *testing.T) { + tests := map[string]struct { + wantErr error + config UserPasswordFlow + }{ + "auth disabled I": {config: UserPasswordFlow{}, wantErr: nil}, + "auth disabled II": {config: UserPasswordFlow{Enabled: pointer(false)}, wantErr: nil}, + "tokenURL missing": {config: UserPasswordFlow{Enabled: pointer(true), TokenURL: ""}, wantErr: errors.New("token_url must be provided")}, + "clientID missing": {config: UserPasswordFlow{Enabled: pointer(true), TokenURL: "https://salesforce.com", ClientID: ""}, wantErr: errors.New("client.id must be provided")}, + "clientSecret missing": {config: UserPasswordFlow{Enabled: pointer(true), TokenURL: "https://salesforce.com", ClientID: "xyz", ClientSecret: ""}, wantErr: errors.New("client.secret must be provided")}, + "username missing": {config: UserPasswordFlow{Enabled: pointer(true), TokenURL: "https://salesforce.com", ClientID: "xyz", ClientSecret: "abc", Username: ""}, wantErr: errors.New("username must be provided")}, + "password missing": {config: UserPasswordFlow{Enabled: pointer(true), TokenURL: "https://salesforce.com", ClientID: "xyz", ClientSecret: "abc", Username: "user", Password: ""}, wantErr: errors.New("password must be provided")}, + "all present": {config: UserPasswordFlow{Enabled: pointer(true), TokenURL: "https://salesforce.com", ClientID: "xyz", ClientSecret: "abc", Username: "user", Password: "pass"}, wantErr: nil}, + } + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + got := tc.config.Validate() + assert.Equal(t, tc.wantErr, got) + }) + } +} + +func TestJWTConfig(t *testing.T) { + tests := map[string]struct { + wantErr error + config JWTBearerFlow + }{ + "auth disabled I": {config: JWTBearerFlow{}, wantErr: nil}, + "auth disabled II": {config: JWTBearerFlow{Enabled: pointer(false)}, wantErr: nil}, + "url missing": {config: JWTBearerFlow{Enabled: pointer(true), URL: ""}, wantErr: errors.New("url must be provided")}, + "clientID missing": {config: JWTBearerFlow{Enabled: pointer(true), URL: "https://salesforce.com", ClientID: ""}, wantErr: errors.New("client.id must be provided")}, + "clientUsername missing": {config: JWTBearerFlow{Enabled: pointer(true), URL: "https://salesforce.com", ClientID: "xyz", ClientUsername: ""}, wantErr: errors.New("client.username must be provided")}, + "clientKeyPath missing": {config: JWTBearerFlow{Enabled: pointer(true), URL: "https://salesforce.com", ClientID: "xyz", ClientUsername: "abc", ClientKeyPath: ""}, wantErr: errors.New("client.key_path must be provided")}, + "all present": {config: JWTBearerFlow{Enabled: pointer(true), URL: "https://salesforce.com", ClientID: "xyz", ClientUsername: "abc", ClientKeyPath: "def"}, wantErr: nil}, + } + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + got := tc.config.Validate() + assert.Equal(t, tc.wantErr, got) + }) + } +} diff --git a/x-pack/filebeat/input/salesforce/config_test.go b/x-pack/filebeat/input/salesforce/config_test.go new file mode 100644 index 00000000000..b620d9bf9a9 --- /dev/null +++ b/x-pack/filebeat/input/salesforce/config_test.go @@ -0,0 +1,126 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "errors" + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestValidate(t *testing.T) { + tests := map[string]struct { + wantErr error + inputCfg config + }{ + "no auth provider enabled (no password or jwt)": { + inputCfg: config{ + Auth: &authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{}, + JWTBearerFlow: &JWTBearerFlow{}, + }, + }, + }, + wantErr: errors.New("no auth provider enabled"), + }, + "only one auth provider is allowed (either password or jwt)": { + inputCfg: config{ + Auth: &authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{Enabled: pointer(true)}, + JWTBearerFlow: &JWTBearerFlow{Enabled: pointer(true)}, + }, + }, + }, + wantErr: errors.New("only one auth provider must be enabled"), + }, + "no instance url is configured (empty url)": { + inputCfg: config{ + URL: "", + Auth: &authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{Enabled: pointer(true)}, + }, + }, + }, + wantErr: errors.New("no instance url is configured"), + }, + "no data collection method configured": { + inputCfg: config{ + EventMonitoringMethod: &eventMonitoringMethod{}, + URL: "https://some-dummy-subdomain.salesforce.com/services/oauth2/token", + Auth: &authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{Enabled: pointer(true)}, + }, + }, + }, + wantErr: errors.New(`at least one of "event_monitoring_method.event_log_file.enabled" or "event_monitoring_method.object.enabled" must be set to true`), + }, + "invalid elf interval (1h)": { + inputCfg: config{ + EventMonitoringMethod: &eventMonitoringMethod{ + EventLogFile: EventMonitoringConfig{ + Enabled: pointer(true), + Interval: time.Duration(0), + }, + }, + URL: "https://some-dummy-subdomain.salesforce.com/services/oauth2/token", + Auth: &authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{Enabled: pointer(true)}, + }, + }, + }, + wantErr: fmt.Errorf("not a valid interval %d", time.Duration(0)), + }, + "invalid object interval (1h)": { + inputCfg: config{ + EventMonitoringMethod: &eventMonitoringMethod{ + Object: EventMonitoringConfig{ + Enabled: pointer(true), + Interval: time.Duration(0), + }, + }, + URL: "https://some-dummy-subdomain.salesforce.com/services/oauth2/token", + Auth: &authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{Enabled: pointer(true)}, + }, + }, + }, + wantErr: fmt.Errorf("not a valid interval %d", time.Duration(0)), + }, + "invalid api version (v45)": { + inputCfg: config{ + Version: 45, + EventMonitoringMethod: &eventMonitoringMethod{ + Object: EventMonitoringConfig{ + Enabled: pointer(true), + Interval: time.Hour, + }, + }, + URL: "https://some-dummy-subdomain.salesforce.com/services/oauth2/token", + Auth: &authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{Enabled: pointer(true)}, + }, + }, + }, + wantErr: errors.New("not a valid version i.e., 46.0 or above"), + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + got := tc.inputCfg.Validate() + assert.Equal(t, tc.wantErr, got) + }) + } +} diff --git a/x-pack/filebeat/input/salesforce/helper.go b/x-pack/filebeat/input/salesforce/helper.go new file mode 100644 index 00000000000..8869ca9aa3f --- /dev/null +++ b/x-pack/filebeat/input/salesforce/helper.go @@ -0,0 +1,33 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import "time" + +// timeNow wraps time.Now to mock time for tests. +var timeNow = time.Now + +// mockTimeNow mocks timeNow for tests. +func mockTimeNow(t time.Time) { + timeNow = func() time.Time { + return t + } +} + +// resetTimeNow resets timeNow to time.Now. +func resetTimeNow() { + timeNow = time.Now +} + +// pointer returns a pointer to the given value. +// +// For example: Assigning &true to value of type *bool is not possible but +// pointer(true) is assignable to the same value of type *bool as address operator +// can be applied to pointer(true) as the returned value is an addressable value. +// +// See: https://go.dev/ref/spec#Address_operators +func pointer[T any](d T) *T { + return &d +} diff --git a/x-pack/filebeat/input/salesforce/input.go b/x-pack/filebeat/input/salesforce/input.go new file mode 100644 index 00000000000..1e893625ed2 --- /dev/null +++ b/x-pack/filebeat/input/salesforce/input.go @@ -0,0 +1,573 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "bytes" + "context" + "encoding/csv" + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + "os" + "time" + + "github.com/g8rswimmer/go-sfdc" + "github.com/g8rswimmer/go-sfdc/credentials" + "github.com/g8rswimmer/go-sfdc/session" + "github.com/g8rswimmer/go-sfdc/soql" + "github.com/golang-jwt/jwt" + "github.com/hashicorp/go-retryablehttp" + "go.uber.org/zap" + "golang.org/x/exp/slices" + + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + inputcursor "github.com/elastic/beats/v7/filebeat/input/v2/input-cursor" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/feature" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/go-concert/ctxtool" +) + +const ( + inputName = "salesforce" + formatRFC3339Like = "2006-01-02T15:04:05.999Z" +) + +type salesforceInput struct { + ctx context.Context + publisher inputcursor.Publisher + cancel context.CancelCauseFunc + cursor *state + srcConfig *config + sfdcConfig *sfdc.Configuration + log *logp.Logger + clientSession *session.Session + soqlr *soql.Resource + config +} + +// // The Filebeat user-agent is provided to the program as useragent. +// var userAgent = useragent.UserAgent("Filebeat", version.GetDefaultVersion(), version.Commit(), version.BuildTime().String()) + +// Plugin returns the input plugin. +func Plugin(log *logp.Logger, store inputcursor.StateStore) v2.Plugin { + return v2.Plugin{ + Name: inputName, + Stability: feature.Stable, + Manager: NewInputManager(log, store), + } +} + +func (s *salesforceInput) Name() string { return inputName } + +func (s *salesforceInput) Test(_ inputcursor.Source, _ v2.TestContext) error { + return nil +} + +// Run starts the input and blocks until it ends completes. It will return on +// context cancellation or type invalidity errors, any other error will be retried. +func (s *salesforceInput) Run(env v2.Context, src inputcursor.Source, cursor inputcursor.Cursor, pub inputcursor.Publisher) (err error) { + st := &state{} + if !cursor.IsNew() { + if err = cursor.Unpack(&st); err != nil { + return err + } + } + + if err = s.Setup(env, src, st, pub); err != nil { + return err + } + + return s.run() +} + +// Setup sets up the input. It will create a new SOQL resource and all other +// necessary configurations. +func (s *salesforceInput) Setup(env v2.Context, src inputcursor.Source, cursor *state, pub inputcursor.Publisher) (err error) { + cfg := src.(*source).cfg + + ctx := ctxtool.FromCanceller(env.Cancelation) + childCtx, cancel := context.WithCancelCause(ctx) + + s.srcConfig = &cfg + s.ctx = childCtx + s.cancel = cancel + s.publisher = pub + s.cursor = cursor + s.log = env.Logger.With("input_url", cfg.URL) + s.sfdcConfig, err = s.getSFDCConfig(&cfg) + if err != nil { + return fmt.Errorf("error with configuration: %w", err) + } + + s.soqlr, err = s.SetupSFClientConnection() // create a new SOQL resource + if err != nil { + return fmt.Errorf("error setting up connection to Salesforce: %w", err) + } + + return nil +} + +// run is the main loop of the input. It will run until the context is cancelled +// and based on the configuration, it will run the different methods -- EventLogFile +// or Object to collect events at defined intervals. +func (s *salesforceInput) run() error { + if s.srcConfig.EventMonitoringMethod.EventLogFile.isEnabled() { + err := s.RunEventLogFile() + if err != nil { + s.log.Errorf("Problem running EventLogFile collection: %s", err) + } + } + + if s.srcConfig.EventMonitoringMethod.Object.isEnabled() { + err := s.RunObject() + if err != nil { + s.log.Errorf("Problem running Object collection: %s", err) + } + } + + eventLogFileTicker, objectMethodTicker := &time.Ticker{}, &time.Ticker{} + eventLogFileTicker.C, objectMethodTicker.C = nil, nil + + if s.srcConfig.EventMonitoringMethod.EventLogFile.isEnabled() { + eventLogFileTicker = time.NewTicker(s.srcConfig.EventMonitoringMethod.EventLogFile.Interval) + defer eventLogFileTicker.Stop() + } + + if s.srcConfig.EventMonitoringMethod.Object.isEnabled() { + objectMethodTicker = time.NewTicker(s.srcConfig.EventMonitoringMethod.Object.Interval) + defer objectMethodTicker.Stop() + } + + for { + // Always check for cancel first, to not accidentally trigger another + // run if the context is already cancelled, but we have already received + // another ticker making the channel ready. + select { + case <-s.ctx.Done(): + return s.isError(s.ctx.Err()) + default: + } + + select { + case <-s.ctx.Done(): + return s.isError(s.ctx.Err()) + case <-eventLogFileTicker.C: + if err := s.RunEventLogFile(); err != nil { + s.log.Errorf("Problem running EventLogFile collection: %s", err) + } + case <-objectMethodTicker.C: + if err := s.RunObject(); err != nil { + s.log.Errorf("Problem running Object collection: %s", err) + } + } + } +} + +func (s *salesforceInput) isError(err error) error { + if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) { + s.log.Infof("input stopped because context was cancelled with: %v", err) + return nil + } + + return err +} + +func (s *salesforceInput) SetupSFClientConnection() (*soql.Resource, error) { + if s.sfdcConfig == nil { + return nil, errors.New("internal error: salesforce configuration is not set properly") + } + + // Open creates a session using the configuration. + session, err := session.Open(*s.sfdcConfig) + if err != nil { + return nil, err + } + + // Set clientSession for re-use. + s.clientSession = session + + // Create a new SOQL resource using the session. + soqlr, err := soql.NewResource(session) + if err != nil { + return nil, fmt.Errorf("error setting up salesforce SOQL resource: %w", err) + } + return soqlr, nil +} + +// FormQueryWithCursor takes a queryConfig and a cursor and returns a querier. +func (s *salesforceInput) FormQueryWithCursor(queryConfig *QueryConfig, cursor mapstr.M) (*querier, error) { + qr, err := parseCursor(queryConfig, cursor, s.log) + if err != nil { + return nil, err + } + + s.log.Infof("Salesforce query: %s", qr) + + return &querier{Query: qr}, err +} + +// isZero checks if the given value v is the zero value for its type. +// It compares v to the zero value obtained by new(T). +func isZero[T comparable](v T) bool { + return v == *new(T) +} + +// RunObject runs the Object method of the Event Monitoring API to collect events. +func (s *salesforceInput) RunObject() error { + s.log.Debugf("scrape object(s) every %s", s.srcConfig.EventMonitoringMethod.Object.Interval) + + var cursor mapstr.M + if !(isZero(s.cursor.Object.FirstEventTime) && isZero(s.cursor.Object.LastEventTime)) { + object := make(mapstr.M) + if !isZero(s.cursor.Object.FirstEventTime) { + object.Put("first_event_time", s.cursor.Object.FirstEventTime) + } + if !isZero(s.cursor.Object.LastEventTime) { + object.Put("last_event_time", s.cursor.Object.LastEventTime) + } + cursor = mapstr.M{"object": object} + } + + query, err := s.FormQueryWithCursor(s.config.EventMonitoringMethod.Object.Query, cursor) + if err != nil { + return fmt.Errorf("error forming query based on cursor: %w", err) + } + + res, err := s.soqlr.Query(query, false) + if err != nil { + return err + } + + totalEvents := 0 + firstEvent := true + + for res.TotalSize() > 0 { + for _, rec := range res.Records() { + val := rec.Record().Fields() + + jsonStrEvent, err := json.Marshal(val) + if err != nil { + return err + } + + if timestamp, ok := val[s.config.EventMonitoringMethod.Object.Cursor.Field].(string); ok { + if firstEvent { + s.cursor.Object.FirstEventTime = timestamp + } + s.cursor.Object.LastEventTime = timestamp + } + + err = publishEvent(s.publisher, s.cursor, jsonStrEvent, "Object") + if err != nil { + return err + } + firstEvent = false + totalEvents++ + } + + if !res.MoreRecords() { // returns true if there are more records. + break + } + + res, err = res.Next() + if err != nil { + return err + } + } + s.log.Debugf("Total events: %d", totalEvents) + + return nil +} + +// RunEventLogFile runs the EventLogFile method of the Event Monitoring API to +// collect events. +func (s *salesforceInput) RunEventLogFile() error { + s.log.Debugf("scrape eventLogFile(s) every %s", s.srcConfig.EventMonitoringMethod.EventLogFile.Interval) + + var cursor mapstr.M + if !(isZero(s.cursor.Object.FirstEventTime) && isZero(s.cursor.Object.LastEventTime)) { + eventLogFile := make(mapstr.M) + if !isZero(s.cursor.Object.FirstEventTime) { + eventLogFile.Put("first_event_time", s.cursor.EventLogFile.FirstEventTime) + } + if !isZero(s.cursor.Object.LastEventTime) { + eventLogFile.Put("last_event_time", s.cursor.EventLogFile.LastEventTime) + } + cursor = mapstr.M{"event_log_file": eventLogFile} + } + + query, err := s.FormQueryWithCursor(s.config.EventMonitoringMethod.EventLogFile.Query, cursor) + if err != nil { + return fmt.Errorf("error forming query based on cursor: %w", err) + } + + res, err := s.soqlr.Query(query, false) + if err != nil { + return err + } + + // NOTE: This is a failsafe check because the HTTP client is always set. + // This check allows unit tests to verify correct behavior when the HTTP + // client is nil. + if s.sfdcConfig.Client == nil { + return errors.New("internal error: salesforce configuration is not set properly") + } + + totalEvents, firstEvent := 0, true + for res.TotalSize() > 0 { + for _, rec := range res.Records() { + req, err := http.NewRequestWithContext(s.ctx, http.MethodGet, s.config.URL+rec.Record().Fields()["LogFile"].(string), nil) + if err != nil { + return err + } + + s.clientSession.AuthorizationHeader(req) + + // NOTE: If we ever see a production issue relaated to this, then only + // we should consider adding the header: "X-PrettyPrint:1" + // + // // NOTE: X-PrettyPrint:1 is for formatted response and ideally we do + // // not need it. But see: + // // https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_event_log_file_download.htm?q=X-PrettyPrint%3A1 + // req.Header.Add("X-PrettyPrint", "1") + + resp, err := s.sfdcConfig.Client.Do(req) + if err != nil { + return err + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + resp.Body.Close() + return err + } + resp.Body.Close() + + recs, err := decodeAsCSV(body) + if err != nil { + return err + } + + if timestamp, ok := rec.Record().Fields()[s.config.EventMonitoringMethod.EventLogFile.Cursor.Field].(string); ok { + if firstEvent { + s.cursor.EventLogFile.FirstEventTime = timestamp + } + s.cursor.EventLogFile.LastEventTime = timestamp + } + + for _, val := range recs { + jsonStrEvent, err := json.Marshal(val) + if err != nil { + return err + } + + err = publishEvent(s.publisher, s.cursor, jsonStrEvent, "EventLogFile") + if err != nil { + return err + } + totalEvents++ + } + firstEvent = false + } + + if !res.MoreRecords() { + break + } + + res, err = res.Next() + if err != nil { + return err + } + } + s.log.Debugf("Total events: %d", totalEvents) + + return nil +} + +// getSFDCConfig returns a new Salesforce configuration based on the configuration. +func (s *salesforceInput) getSFDCConfig(cfg *config) (*sfdc.Configuration, error) { + var ( + creds *credentials.Credentials + err error + ) + + if cfg.Auth == nil { + return nil, errors.New("no auth provider enabled") + } + + switch { + case cfg.Auth.OAuth2.JWTBearerFlow != nil && cfg.Auth.OAuth2.JWTBearerFlow.isEnabled(): + pemBytes, err := os.ReadFile(cfg.Auth.OAuth2.JWTBearerFlow.ClientKeyPath) + if err != nil { + return nil, fmt.Errorf("problem with client key path for JWT auth: %w", err) + } + + signKey, err := jwt.ParseRSAPrivateKeyFromPEM(pemBytes) + if err != nil { + return nil, fmt.Errorf("problem with client key for JWT auth: %w", err) + } + + passCreds := credentials.JwtCredentials{ + URL: cfg.Auth.OAuth2.JWTBearerFlow.URL, + ClientId: cfg.Auth.OAuth2.JWTBearerFlow.ClientID, + ClientUsername: cfg.Auth.OAuth2.JWTBearerFlow.ClientUsername, + ClientKey: signKey, + } + + creds, err = credentials.NewJWTCredentials(passCreds) + if err != nil { + return nil, fmt.Errorf("error creating jwt credentials: %w", err) + } + + case cfg.Auth.OAuth2.UserPasswordFlow != nil && cfg.Auth.OAuth2.UserPasswordFlow.isEnabled(): + passCreds := credentials.PasswordCredentials{ + URL: cfg.Auth.OAuth2.UserPasswordFlow.TokenURL, + Username: cfg.Auth.OAuth2.UserPasswordFlow.Username, + Password: cfg.Auth.OAuth2.UserPasswordFlow.Password, + ClientID: cfg.Auth.OAuth2.UserPasswordFlow.ClientID, + ClientSecret: cfg.Auth.OAuth2.UserPasswordFlow.ClientSecret, + } + + creds, err = credentials.NewPasswordCredentials(passCreds) + if err != nil { + return nil, fmt.Errorf("error creating password credentials: %w", err) + } + + } + + client, err := newClient(*cfg, s.log) + if err != nil { + return nil, fmt.Errorf("problem with client: %w", err) + } + + return &sfdc.Configuration{ + Credentials: creds, + Client: client, + Version: cfg.Version, + }, nil +} + +// retryLog is a shim for the retryablehttp.Client.Logger. +type retryLog struct{ log *logp.Logger } + +func newRetryLog(log *logp.Logger) *retryLog { + return &retryLog{log: log.Named("retryablehttp").WithOptions(zap.AddCallerSkip(1))} +} + +func (l *retryLog) Error(msg string, kv ...interface{}) { l.log.Errorw(msg, kv...) } +func (l *retryLog) Info(msg string, kv ...interface{}) { l.log.Infow(msg, kv...) } +func (l *retryLog) Debug(msg string, kv ...interface{}) { l.log.Debugw(msg, kv...) } +func (l *retryLog) Warn(msg string, kv ...interface{}) { l.log.Warnw(msg, kv...) } + +// retryErrorHandler returns a retryablehttp.ErrorHandler that will log retry resignation +// but return the last retry attempt's response and a nil error to allow the retryablehttp.Client +// evaluate the response status itself. Any error passed to the retryablehttp.ErrorHandler +// is returned unaltered. +func retryErrorHandler(max int, log *logp.Logger) retryablehttp.ErrorHandler { + return func(resp *http.Response, err error, numTries int) (*http.Response, error) { + log.Warnw("giving up retries", "method", resp.Request.Method, "url", resp.Request.URL, "retries", max+1) + return resp, err + } +} + +func newClient(cfg config, log *logp.Logger) (*http.Client, error) { + c, err := cfg.Resource.Transport.Client() + if err != nil { + return nil, err + } + + if maxAttempts := cfg.Resource.Retry.getMaxAttempts(); maxAttempts > 1 { + c = (&retryablehttp.Client{ + HTTPClient: c, + Logger: newRetryLog(log), + RetryWaitMin: cfg.Resource.Retry.getWaitMin(), + RetryWaitMax: cfg.Resource.Retry.getWaitMax(), + RetryMax: maxAttempts, + CheckRetry: retryablehttp.DefaultRetryPolicy, + Backoff: retryablehttp.DefaultBackoff, + ErrorHandler: retryErrorHandler(maxAttempts, log), + }).StandardClient() + + // BUG: retryablehttp ignores the timeout previously set. So, setting it + // again. + c.Timeout = cfg.Resource.Transport.Timeout + } + + return c, nil +} + +// publishEvent publishes an event using the configured publisher pub. +func publishEvent(pub inputcursor.Publisher, cursor *state, jsonStrEvent []byte, dataCollectionMethod string) error { + event := beat.Event{ + Timestamp: timeNow(), + Fields: mapstr.M{ + "message": string(jsonStrEvent), + "event": mapstr.M{ + "provider": dataCollectionMethod, + }, + }, + } + + return pub.Publish(event, cursor) +} + +type textContextError struct { + error + body []byte +} + +// decodeAsCSV decodes p as a headed CSV document into dst. +func decodeAsCSV(p []byte) ([]map[string]string, error) { + r := csv.NewReader(bytes.NewReader(p)) + + // To share the backing array for performance. + r.ReuseRecord = true + + // Header row is always expected, otherwise we can't map values to keys in + // the event. + header, err := r.Read() + if err != nil { + if err == io.EOF { //nolint:errorlint // csv.Reader never wraps io.EOF. + return nil, nil + } + return nil, err + } + + // As buffer reuse is enabled, copying header is important. + header = slices.Clone(header) + + var results []map[string]string //nolint:prealloc // not sure about the size to prealloc with + + // NOTE: + // + // Read sets `r.FieldsPerRecord` to the number of fields in the first record, + // so that future records must have the same field count. + // So, if len(header) != len(event), the Read will return an error and hence + // we need not put an explicit check. + event, err := r.Read() + for ; err == nil; event, err = r.Read() { + if err != nil { + continue + } + o := make(map[string]string, len(header)) + for i, h := range header { + o[h] = event[i] + } + results = append(results, o) + } + + if err != nil { + if err != io.EOF { //nolint:errorlint // csv.Reader never wraps io.EOF. + return nil, textContextError{error: err, body: p} + } + } + + return results, nil +} diff --git a/x-pack/filebeat/input/salesforce/input_manager.go b/x-pack/filebeat/input/salesforce/input_manager.go new file mode 100644 index 00000000000..1fb0ae42e91 --- /dev/null +++ b/x-pack/filebeat/input/salesforce/input_manager.go @@ -0,0 +1,89 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "fmt" + "time" + + "github.com/elastic/go-concert/unison" + + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + inputcursor "github.com/elastic/beats/v7/filebeat/input/v2/input-cursor" + conf "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/transport/httpcommon" +) + +// compile-time check if querier implements InputManager +var _ v2.InputManager = InputManager{} + +// InputManager wraps one stateless input manager +// and one cursor input manager. It will create one or the other +// based on the config that is passed. +type InputManager struct { + cursor *inputcursor.InputManager +} + +// NewInputManager creates a new input manager. +func NewInputManager(log *logp.Logger, store inputcursor.StateStore) InputManager { + return InputManager{ + cursor: &inputcursor.InputManager{ + Logger: log, + StateStore: store, + Type: inputName, + Configure: cursorConfigure, + }, + } +} + +func defaultConfig() config { + apiVersion := 58 + maxAttempts := 5 + waitMin := time.Second + waitMax := time.Minute + transport := httpcommon.DefaultHTTPTransportSettings() + transport.Timeout = 30 * time.Second + + return config{ + Version: apiVersion, + Resource: &resourceConfig{ + Transport: transport, + Retry: retryConfig{ + MaxAttempts: &maxAttempts, + WaitMin: &waitMin, + WaitMax: &waitMax, + }, + }, + } +} + +// cursorConfigure configures the cursor input manager. +func cursorConfigure(cfg *conf.C) ([]inputcursor.Source, inputcursor.Input, error) { + config := defaultConfig() + if err := cfg.Unpack(&config); err != nil { + return nil, nil, fmt.Errorf("reading config: %w", err) + } + sources := []inputcursor.Source{&source{cfg: config}} + return sources, &salesforceInput{config: config}, nil +} + +type source struct{ cfg config } + +func (s *source) Name() string { return s.cfg.URL } + +// Init initializes both wrapped input managers. +func (m InputManager) Init(grp unison.Group, mode v2.Mode) error { + return m.cursor.Init(grp, mode) +} + +// Create creates a cursor input manager. +func (m InputManager) Create(cfg *conf.C) (v2.Input, error) { + config := defaultConfig() + if err := cfg.Unpack(&config); err != nil { + return nil, err + } + return m.cursor.Create(cfg) +} diff --git a/x-pack/filebeat/input/salesforce/input_manager_test.go b/x-pack/filebeat/input/salesforce/input_manager_test.go new file mode 100644 index 00000000000..90647e9d302 --- /dev/null +++ b/x-pack/filebeat/input/salesforce/input_manager_test.go @@ -0,0 +1,82 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + cursor "github.com/elastic/beats/v7/filebeat/input/v2/input-cursor" + "github.com/elastic/beats/v7/libbeat/statestore" + "github.com/elastic/beats/v7/libbeat/statestore/storetest" + conf "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/go-concert/unison" +) + +func makeTestStore(data map[string]interface{}) *statestore.Store { + memstore := &storetest.MapStore{Table: data} + reg := statestore.NewRegistry(&storetest.MemoryStore{ + Stores: map[string]*storetest.MapStore{ + "test": memstore, + }, + }) + store, err := reg.Get("test") + if err != nil { + panic("failed to create test store") + } + return store +} + +type stateStore struct{} + +func (stateStore) Access() (*statestore.Store, error) { + return makeTestStore(map[string]interface{}{"hello": "world"}), nil +} +func (stateStore) CleanupInterval() time.Duration { return time.Duration(0) } + +// compile-time check if stateStore implements cursor.StateStore +var _ cursor.StateStore = stateStore{} + +func TestInputManager(t *testing.T) { + inputManager := NewInputManager(logp.NewLogger("salesforce_test"), stateStore{}) + + var inputTaskGroup unison.TaskGroup + defer inputTaskGroup.Stop() //nolint:errcheck // ignore error in test + + err := inputManager.Init(&inputTaskGroup, v2.ModeRun) + assert.NoError(t, err) + + config, err := conf.NewConfigFrom(map[string]interface{}{ + "url": "https://salesforce.com", + "version": 46, + "auth": &authConfig{ + OAuth2: &OAuth2{JWTBearerFlow: &JWTBearerFlow{ + Enabled: pointer(true), + URL: "https://salesforce.com", + ClientID: "xyz", + ClientUsername: "xyz", + ClientKeyPath: "xyz", + }}, + }, + "event_monitoring_method": &eventMonitoringMethod{ + Object: EventMonitoringConfig{Enabled: pointer(true), Interval: 4}, + }, + }) + assert.NoError(t, err) + + _, err = inputManager.Create(config) + assert.NoError(t, err) +} + +func TestSource(t *testing.T) { + want := "https://salesforce.com" + src := source{cfg: config{URL: want}} + got := src.Name() + assert.Equal(t, want, got) +} diff --git a/x-pack/filebeat/input/salesforce/input_test.go b/x-pack/filebeat/input/salesforce/input_test.go new file mode 100644 index 00000000000..a579036e4d8 --- /dev/null +++ b/x-pack/filebeat/input/salesforce/input_test.go @@ -0,0 +1,803 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "context" + "errors" + "fmt" + "net/http" + "net/http/httptest" + "reflect" + "sync" + "testing" + "time" + + "github.com/g8rswimmer/go-sfdc" + "github.com/g8rswimmer/go-sfdc/soql" + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/assert" + + inputcursor "github.com/elastic/beats/v7/filebeat/input/v2/input-cursor" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common/transform/typeconv" + conf "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/elastic-agent-libs/transport/httpcommon" +) + +const ( + PaginationFlow = "PaginationFlow" + NoPaginationFlow = "NoPaginationFlow" + IntervalFlow = "IntervalFlow" + BadReponseFlow = "BadReponseFlow" + + defaultLoginObjectQuery = "SELECT FIELDS(STANDARD) FROM LoginEvent" + valueLoginObjectQuery = "SELECT FIELDS(STANDARD) FROM LoginEvent WHERE EventDate > [[ .cursor.object.first_event_time ]]" + defaultLoginObjectQueryWithCursor = "SELECT FIELDS(STANDARD) FROM LoginEvent WHERE EventDate > 2023-12-06T05:44:24.973+0000" + + defaultLoginEventLogFileQuery = "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' ORDER BY CreatedDate ASC NULLS FIRST" + valueLoginEventLogFileQuery = "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > [[ .cursor.event_log_file.last_event_time ]] ORDER BY CreatedDate ASC NULLS FIRST" + + invalidDefaultLoginEventObjectQuery = "SELECT FIELDS(STANDARD) FROM LoginEvnt" + invalidDefaultLoginEventLogFileQuery = "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' ORDER BY ASC NULLS FIRST" + + invalidValueLoginObjectQuery = "SELECT FIELDS(STANDARD) FROM LoginEvent WHERE EventDate > [[ .cursor.object.first_event ]]" + invalidValueLoginEventLogFileQuery = "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > [[ .cursor.event_log_file.last_event ]] ORDER BY CreatedDate ASC NULLS FIRST" + + oneEventLogfileFirstResponseJSON = `{ "totalSize": 1, "done": true, "records": [ { "attributes": { "type": "EventLogFile", "url": "/services/data/v58.0/sobjects/EventLogFile/0AT5j00002LqQTxGAN" }, "Id": "0AT5j00002LqQTxGAN", "CreatedDate": "2023-12-19T21:04:35.000+0000", "LogDate": "2023-12-18T00:00:00.000+0000", "LogFile": "/services/data/v58.0/sobjects/EventLogFile/0AT5j00002LqQTxGAN/LogFile" } ] }` + oneEventLogfileSecondResponseCSV = `"EVENT_TYPE","TIMESTAMP","REQUEST_ID","ORGANIZATION_ID","USER_ID","RUN_TIME","CPU_TIME","URI","SESSION_KEY","LOGIN_KEY","USER_TYPE","REQUEST_STATUS","DB_TOTAL_TIME","LOGIN_TYPE","BROWSER_TYPE","API_TYPE","API_VERSION","USER_NAME","TLS_PROTOCOL","CIPHER_SUITE","AUTHENTICATION_METHOD_REFERENCE","LOGIN_SUB_TYPE","TIMESTAMP_DERIVED","USER_ID_DERIVED","CLIENT_IP","URI_ID_DERIVED","LOGIN_STATUS","SOURCE_IP" +"Login","20231218054831.655","4u6LyuMrDvb_G-l1cJIQk-","00D5j00000DgAYG","0055j00000AT6I1","1219","127","/services/oauth2/token","","bY5Wfv8t/Ith7WVE","Standard","","1051271151","i","Go-http-client/1.1","","9998.0","salesforceinstance@devtest.in","TLSv1.2","ECDHE-RSA-AES256-GCM-SHA384","","","2023-12-18T05:48:31.655Z","0055j00000AT6I1AAL","Salesforce.com IP","","LOGIN_NO_ERROR","103.108.207.58" +` + + expectedELFEvent = `{"API_TYPE":"","API_VERSION":"9998.0","AUTHENTICATION_METHOD_REFERENCE":"","BROWSER_TYPE":"Go-http-client/1.1","CIPHER_SUITE":"ECDHE-RSA-AES256-GCM-SHA384","CLIENT_IP":"Salesforce.com IP","CPU_TIME":"127","DB_TOTAL_TIME":"1051271151","EVENT_TYPE":"Login","LOGIN_KEY":"bY5Wfv8t/Ith7WVE","LOGIN_STATUS":"LOGIN_NO_ERROR","LOGIN_SUB_TYPE":"","LOGIN_TYPE":"i","ORGANIZATION_ID":"00D5j00000DgAYG","REQUEST_ID":"4u6LyuMrDvb_G-l1cJIQk-","REQUEST_STATUS":"","RUN_TIME":"1219","SESSION_KEY":"","SOURCE_IP":"103.108.207.58","TIMESTAMP":"20231218054831.655","TIMESTAMP_DERIVED":"2023-12-18T05:48:31.655Z","TLS_PROTOCOL":"TLSv1.2","URI":"/services/oauth2/token","URI_ID_DERIVED":"","USER_ID":"0055j00000AT6I1","USER_ID_DERIVED":"0055j00000AT6I1AAL","USER_NAME":"salesforceinstance@devtest.in","USER_TYPE":"Standard"}` + + oneObjectEvents = `{ "totalSize": 1, "done": true, "records": [ { "attributes": { "type": "LoginEvent", "url": "/services/data/v58.0/sobjects/LoginEvent/000000000000000AAA" }, "AdditionalInfo": "{}", "ApiType": "N/A", "ApiVersion": "N/A", "Application": "salesforce_test", "Browser": "Unknown", "CipherSuite": "ECDHE-RSA-AES256-GCM-SHA384", "City": "Mumbai", "ClientVersion": "N/A", "Country": "India", "CountryIso": "IN", "CreatedDate": "2023-12-06T05:44:34.942+0000", "EvaluationTime": 0, "EventDate": "2023-12-06T05:44:24.973+0000", "EventIdentifier": "00044326-ed4a-421a-a0a8-e62ea626f3af", "HttpMethod": "POST", "Id": "000000000000000AAA", "LoginGeoId": "04F5j00003NvV1cEAF", "LoginHistoryId": "0Ya5j00003k2scQCAQ", "LoginKey": "pgOVoLbV96U9o08W", "LoginLatitude": 19.0748, "LoginLongitude": 72.8856, "LoginType": "Remote Access 2.0", "LoginUrl": "login.salesforce.com", "Platform": "Unknown", "PostalCode": "400070", "SessionLevel": "STANDARD", "SourceIp": "134.238.252.19", "Status": "Success", "Subdivision": "Maharashtra", "TlsProtocol": "TLS 1.2", "UserId": "0055j00000AT6I1AAL", "UserType": "Standard", "Username": "salesforceinstance@devtest.in" } ] }` + oneObjectEventsPageOne = `{ "totalSize": 1, "done": true, "nextRecordsUrl": "/nextRecords/LoginEvents/ABCABCDABCDE", "records": [ { "attributes": { "type": "LoginEvent", "url": "/services/data/v58.0/sobjects/LoginEvent/000000000000000AAA" }, "AdditionalInfo": "{}", "ApiType": "N/A", "ApiVersion": "N/A", "Application": "salesforce_test", "Browser": "Unknown", "CipherSuite": "ECDHE-RSA-AES256-GCM-SHA384", "City": "Mumbai", "ClientVersion": "N/A", "Country": "India", "CountryIso": "IN", "CreatedDate": "2023-12-06T05:44:34.942+0000", "EvaluationTime": 0, "EventDate": "2023-12-06T05:44:24.973+0000", "EventIdentifier": "00044326-ed4a-421a-a0a8-e62ea626f3af", "HttpMethod": "POST", "Id": "000000000000000AAA", "LoginGeoId": "04F5j00003NvV1cEAF", "LoginHistoryId": "0Ya5j00003k2scQCAQ", "LoginKey": "pgOVoLbV96U9o08W", "LoginLatitude": 19.0748, "LoginLongitude": 72.8856, "LoginType": "Remote Access 2.0", "LoginUrl": "login.salesforce.com", "Platform": "Unknown", "PostalCode": "400070", "SessionLevel": "STANDARD", "SourceIp": "134.238.252.19", "Status": "Success", "Subdivision": "Maharashtra", "TlsProtocol": "TLS 1.2", "UserId": "0055j00000AT6I1AAL", "UserType": "Standard", "Username": "salesforceinstance@devtest.in" } ] }` + oneObjectEventsPageTwo = `{ "totalSize": 1, "done": true, "records": [ { "attributes": { "type": "LoginEvent", "url": "/services/data/v58.0/sobjects/LoginEvent/000000000000000AAA" }, "AdditionalInfo": "{}", "ApiType": "N/A", "ApiVersion": "N/A", "Application": "salesforce_test", "Browser": "Unknown", "CipherSuite": "ECDHE-RSA-AES256-GCM-SHA384", "City": "Mumbai", "ClientVersion": "N/A", "Country": "India", "CountryIso": "IN", "CreatedDate": "2023-12-06T05:44:34.942+0000", "EvaluationTime": 0, "EventDate": "2023-12-06T05:44:24.973+0000", "EventIdentifier": "00044326-ed4a-421a-a0a8-e62ea626f3af", "HttpMethod": "POST", "Id": "000000000000000AAA", "LoginGeoId": "04F5j00003NvV1cEAF", "LoginHistoryId": "0Ya5j00003k2scQCAQ", "LoginKey": "pgOVoLbV96U9o08W", "LoginLatitude": 19.0748, "LoginLongitude": 72.8856, "LoginType": "Remote Access 2.0", "LoginUrl": "login.salesforce.com", "Platform": "Unknown", "PostalCode": "400070", "SessionLevel": "STANDARD", "SourceIp": "134.238.252.19", "Status": "Success", "Subdivision": "Maharashtra", "TlsProtocol": "TLS 1.2", "UserId": "0055j00000AT6I1AAL", "UserType": "Standard", "Username": "salesforceinstance@devtest.in" } ] }` + + expectedObjectEvent = `{"AdditionalInfo":"{}","ApiType":"N/A","ApiVersion":"N/A","Application":"salesforce_test","Browser":"Unknown","CipherSuite":"ECDHE-RSA-AES256-GCM-SHA384","City":"Mumbai","ClientVersion":"N/A","Country":"India","CountryIso":"IN","CreatedDate":"2023-12-06T05:44:34.942+0000","EvaluationTime":0,"EventDate":"2023-12-06T05:44:24.973+0000","EventIdentifier":"00044326-ed4a-421a-a0a8-e62ea626f3af","HttpMethod":"POST","Id":"000000000000000AAA","LoginGeoId":"04F5j00003NvV1cEAF","LoginHistoryId":"0Ya5j00003k2scQCAQ","LoginKey":"pgOVoLbV96U9o08W","LoginLatitude":19.0748,"LoginLongitude":72.8856,"LoginType":"Remote Access 2.0","LoginUrl":"login.salesforce.com","Platform":"Unknown","PostalCode":"400070","SessionLevel":"STANDARD","SourceIp":"134.238.252.19","Status":"Success","Subdivision":"Maharashtra","TlsProtocol":"TLS 1.2","UserId":"0055j00000AT6I1AAL","UserType":"Standard","Username":"salesforceinstance@devtest.in"}` +) + +func TestFormQueryWithCursor(t *testing.T) { + logp.TestingSetup() + + mockTimeNow(time.Date(2023, time.May, 18, 12, 0, 0, 0, time.UTC)) + t.Cleanup(resetTimeNow) + + tests := map[string]struct { + wantErr error + cursor mapstr.M + defaultSOQLTemplate string + valueSOQLTemplate string + wantQuery string + initialInterval time.Duration + }{ + "valid soql templates with nil cursor": { // expect default query with LogDate > initialInterval + initialInterval: 60 * 24 * time.Hour, // 60 * 24h = 1440h = 60 days = 2 months + defaultSOQLTemplate: `SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND Logdate > [[ (formatTime (now.Add (parseDuration "-1440h")) "RFC3339") ]] ORDER BY CreatedDate ASC NULLS FIRST`, + valueSOQLTemplate: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > [[ .cursor.logdate ]] ORDER BY CreatedDate ASC NULLS FIRST", + wantQuery: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND Logdate > 2023-03-19T12:00:00Z ORDER BY CreatedDate ASC NULLS FIRST", + cursor: nil, + }, + "valid soql templates with non-empty .cursor.object.logdate": { // expect value SOQL query with .cursor.object.logdate set + initialInterval: 60 * 24 * time.Hour, // 60 * 24h = 1440h = 60 days = 2 months + defaultSOQLTemplate: `SELECT Id,CreatedDate,LogDate,LogFile FROM LoginEvent WHERE EventDate > [[ (formatTime (now.Add (parseDuration "-1440h")) "RFC3339") ]]`, + valueSOQLTemplate: "SELECT Id,CreatedDate,LogDate,LogFile FROM LoginEvent WHERE CreatedDate > [[ .cursor.object.logdate ]]", + wantQuery: "SELECT Id,CreatedDate,LogDate,LogFile FROM LoginEvent WHERE CreatedDate > 2023-05-18T12:00:00Z", + cursor: mapstr.M{"object": mapstr.M{"logdate": timeNow().Format(formatRFC3339Like)}}, + }, + "valid soql templates with non-empty .cursor.event_log_file.logdate": { // expect value SOQL query with .cursor.event_log_file.logdate set + initialInterval: 60 * 24 * time.Hour, // 60 * 24h = 1440h = 60 days = 2 months + defaultSOQLTemplate: `SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND Logdate > [[ (formatTime (now.Add (parseDuration "-1440h")) "RFC3339") ]] ORDER BY CreatedDate ASC NULLS FIRST`, + valueSOQLTemplate: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > [[ .cursor.event_log_file.logdate ]] ORDER BY CreatedDate ASC NULLS FIRST", + wantQuery: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > 2023-05-18T12:00:00Z ORDER BY CreatedDate ASC NULLS FIRST", + cursor: mapstr.M{"event_log_file": mapstr.M{"logdate": timeNow().Format(formatRFC3339Like)}}, + }, + "invalid soql templates wrong cursor name .cursor.event_log_file.logdate1": { // expect value SOQL query with .cursor.event_log_file.logdate set + initialInterval: 60 * 24 * time.Hour, // 60 * 24h = 1440h = 60 days = 2 months + defaultSOQLTemplate: `SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND Logdate > [[ (formatTime (now.Add (parseDuration "-1440h")) "RFC3339") ]] ORDER BY CreatedDate ASC NULLS FIRST`, + valueSOQLTemplate: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > [[ .cursor.event_log_file.logdate1 ]] ORDER BY CreatedDate ASC NULLS FIRST", + wantQuery: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE EventType = 'Login' AND CreatedDate > 2023-05-18T12:00:00Z ORDER BY CreatedDate ASC NULLS FIRST", + cursor: mapstr.M{"event_log_file": mapstr.M{"logdate": timeNow().Format(formatRFC3339Like)}}, + wantErr: errors.New(`template: :1:110: executing "" at <.cursor.event_log_file.logdate1>: map has no entry for key "logdate1"`), + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + v1, v2 := &valueTpl{}, &valueTpl{} + + err := v1.Unpack(tc.defaultSOQLTemplate) + assert.NoError(t, err) + + err = v2.Unpack(tc.valueSOQLTemplate) + assert.NoError(t, err) + + queryConfig := &QueryConfig{ + Default: v1, + Value: v2, + } + + sfInput := &salesforceInput{ + config: config{}, + log: logp.NewLogger("salesforce_test"), + } + + querier, err := sfInput.FormQueryWithCursor(queryConfig, tc.cursor) + if fmt.Sprint(tc.wantErr) != fmt.Sprint(err) { + t.Errorf("got error %v, want error %v", err, tc.wantErr) + } + if tc.wantErr != nil { + return + } + + assert.EqualValues(t, tc.wantQuery, querier.Query) + }) + } +} + +var ( + defaultUserPasswordFlowMap = map[string]interface{}{ + "user_password_flow": map[string]interface{}{ + "enabled": true, + "client.id": "clientid", + "client.secret": "clientsecret", + "token_url": "https://instance_id.develop.my.salesforce.com/services/oauth2/token", + "username": "username", + "password": "password", + }, + } + wrongUserPasswordFlowMap = map[string]interface{}{ + "user_password_flow": map[string]interface{}{ + "enabled": true, + "client.id": "clientid-wrong", + "client.secret": "clientsecret-wrong", + "token_url": "https://instance_id.develop.my.salesforce.com/services/oauth2/token", + "username": "username-wrong", + "password": "password-wrong", + }, + } + + defaultObjectMonitoringMethodConfigMap = map[string]interface{}{ + "interval": "5s", + "enabled": true, + "query": map[string]interface{}{ + "default": defaultLoginObjectQuery, + "value": valueLoginObjectQuery, + }, + "cursor": map[string]interface{}{ + "field": "EventDate", + }, + } + defaultEventLogFileMonitoringMethodMap = map[string]interface{}{ + "interval": "5s", + "enabled": true, + "query": map[string]interface{}{ + "default": defaultLoginEventLogFileQuery, + "value": valueLoginEventLogFileQuery, + }, + "cursor": map[string]interface{}{ + "field": "CreatedDate", + }, + } + + invalidObjectMonitoringMethodMap = map[string]interface{}{ + "interval": "5m", + "enabled": true, + "query": map[string]interface{}{ + "default": invalidDefaultLoginEventObjectQuery, + "value": valueLoginEventLogFileQuery, + }, + "cursor": map[string]interface{}{ + "field": "CreatedDate", + }, + } + invalidEventLogFileMonitoringMethodMap = map[string]interface{}{ + "interval": "5m", + "enabled": true, + "query": map[string]interface{}{ + "default": invalidDefaultLoginEventLogFileQuery, + "value": invalidValueLoginEventLogFileQuery, + }, + "cursor": map[string]interface{}{ + "field": "CreatedDate", + }, + } +) + +func TestInput(t *testing.T) { + logp.TestingSetup() + + tests := []struct { + setupServer func(testing.TB, http.HandlerFunc, map[string]interface{}) + baseConfig map[string]interface{} + handler http.HandlerFunc + persistentCursor *state + name string + expected []string + timeout time.Duration + wantErr bool + AuthFail bool + }{ + // Object + { + name: "Positive/event_monitoring_method_object_with_default_query_only", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "version": 56, + "auth.oauth2": defaultUserPasswordFlowMap, + "event_monitoring_method": map[string]interface{}{ + "object": defaultObjectMonitoringMethodConfigMap, + }, + }, + handler: defaultHandler(NoPaginationFlow, false, "", oneObjectEvents), + expected: []string{expectedObjectEvent}, + }, + { + name: "Negative/event_monitoring_method_object_with_error_in_data_collection", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "version": 56, + "auth.oauth2": defaultUserPasswordFlowMap, + "event_monitoring_method": map[string]interface{}{ + "object": invalidObjectMonitoringMethodMap, + }, + }, + handler: defaultHandler(NoPaginationFlow, false, "", `{"error": "invalid_query"}`), + wantErr: true, + }, + { + name: "Positive/event_monitoring_method_object_with_interval_5s", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "version": 56, + "auth.oauth2": defaultUserPasswordFlowMap, + "event_monitoring_method": map[string]interface{}{ + "object": defaultObjectMonitoringMethodConfigMap, + }, + }, + handler: defaultHandler(IntervalFlow, false, "", oneObjectEventsPageTwo), + expected: []string{expectedObjectEvent, expectedObjectEvent}, + timeout: 20 * time.Second, + }, + { + name: "Positive/event_monitoring_method_object_with_Pagination", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "version": 56, + "auth.oauth2": defaultUserPasswordFlowMap, + "event_monitoring_method": map[string]interface{}{ + "object": defaultObjectMonitoringMethodConfigMap, + }, + }, + handler: defaultHandler(PaginationFlow, false, oneObjectEventsPageOne, oneObjectEventsPageTwo), + expected: []string{expectedObjectEvent, expectedObjectEvent}, + }, + + // EventLogFile + { + name: "Positive/event_monitoring_method_elf_with_default_query_only", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "version": 56, + "auth.oauth2": defaultUserPasswordFlowMap, + "event_monitoring_method": map[string]interface{}{ + "event_log_file": defaultEventLogFileMonitoringMethodMap, + }, + }, + handler: defaultHandler(NoPaginationFlow, false, oneEventLogfileFirstResponseJSON, oneEventLogfileSecondResponseCSV), + expected: []string{expectedELFEvent}, + }, + { + name: "Negative/event_monitoring_method_elf_with_error_in_auth", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "version": 56, + "auth.oauth2": wrongUserPasswordFlowMap, + "event_monitoring_method": map[string]interface{}{ + "event_log_file": defaultEventLogFileMonitoringMethodMap, + }, + }, + handler: defaultHandler(NoPaginationFlow, false, "", `{"error": "invalid_client_id"}`), + wantErr: true, + AuthFail: true, + }, + { + name: "Negative/event_monitoring_method_elf_with_error_in_data_collection", + setupServer: newTestServer(httptest.NewServer), + baseConfig: map[string]interface{}{ + "version": 56, + "auth.oauth2": defaultUserPasswordFlowMap, + "event_monitoring_method": map[string]interface{}{ + "event_log_file": invalidEventLogFileMonitoringMethodMap, + }, + }, + handler: defaultHandler(NoPaginationFlow, false, "", `{"error": "invalid_query"}`), + wantErr: true, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + tc.setupServer(t, tc.handler, tc.baseConfig) + + cfg := defaultConfig() + err := conf.MustNewConfigFrom(tc.baseConfig).Unpack(&cfg) + assert.NoError(t, err) + timeout := 5 * time.Second + if tc.timeout != 0 { + timeout = tc.timeout + } + + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + + var client publisher + client.done = func() { + if len(client.published) >= len(tc.expected) { + cancel() + } + } + + salesforceInput := salesforceInput{config: cfg} + assert.Equal(t, "salesforce", salesforceInput.Name()) + + ctx, cancelClause := context.WithCancelCause(ctx) + + salesforceInput.cursor = &state{} + if tc.persistentCursor != nil { + salesforceInput.cursor = tc.persistentCursor + } + salesforceInput.ctx = ctx + salesforceInput.cancel = cancelClause + salesforceInput.srcConfig = &cfg + salesforceInput.publisher = &client + salesforceInput.log = logp.L().With("input_url", "salesforce") + + salesforceInput.sfdcConfig, err = salesforceInput.getSFDCConfig(&cfg) + assert.NoError(t, err) + + salesforceInput.soqlr, err = salesforceInput.SetupSFClientConnection() + if err != nil && !tc.wantErr { + t.Errorf("unexpected error from running input: %v", err) + } + if tc.wantErr && tc.AuthFail { + return + } + + err = salesforceInput.run() + if err != nil && !tc.wantErr { + t.Errorf("unexpected error from running input: %v", err) + } + if tc.wantErr { + return + } + + if len(client.published) < len(tc.expected) { + t.Errorf("unexpected number of published events: got:%d want at least:%d", len(client.published), len(tc.expected)) + tc.expected = tc.expected[:len(client.published)] + } + + client.published = client.published[:len(tc.expected)] + for i, got := range client.published { + if !reflect.DeepEqual(got.Fields["message"], tc.expected[i]) { + t.Errorf("unexpected result for event %d: got:- want:+\n%s", i, cmp.Diff(got.Fields, tc.expected[i])) + } + } + }) + } +} + +func defaultHandler(flow string, withoutQuery bool, msg1, msg2 string) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("content-type", "application/json") + switch { + case flow == PaginationFlow && r.FormValue("q") == defaultLoginObjectQuery: + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(msg1)) + case r.RequestURI == "/nextRecords/LoginEvents/ABCABCDABCDE": + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(msg2)) + case r.RequestURI == "/services/oauth2/token" && r.Method == http.MethodPost && r.FormValue("client_id") == "clientid": + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(`{"access_token":"abcd","instance_url":"http://` + r.Host + `","token_type":"Bearer","id_token":"abcd","refresh_token":"abcd"}`)) + case r.FormValue("client_id") == "clientid-wrong": + w.WriteHeader(http.StatusBadRequest) + _, _ = w.Write([]byte(msg2)) + case r.FormValue("q") == defaultLoginEventLogFileQuery: + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(msg1)) + case r.FormValue("q") == defaultLoginObjectQuery, r.FormValue("q") == defaultLoginObjectQueryWithCursor, r.RequestURI == "/services/data/v58.0/sobjects/EventLogFile/0AT5j00002LqQTxGAN/LogFile": + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(msg2)) + case r.FormValue("q") == invalidDefaultLoginEventLogFileQuery, r.FormValue("q") == invalidDefaultLoginEventObjectQuery: + w.WriteHeader(http.StatusBadRequest) + _, _ = w.Write([]byte(msg2)) + case flow == BadReponseFlow && (withoutQuery && r.FormValue("q") == ""): + w.WriteHeader(http.StatusBadRequest) + _, _ = w.Write([]byte(`{"error":"internal server error"}`)) + } + } +} + +func newTestServer(newServer func(http.Handler) *httptest.Server) func(testing.TB, http.HandlerFunc, map[string]interface{}) { + return func(t testing.TB, h http.HandlerFunc, config map[string]interface{}) { + server := newServer(h) + config["url"] = server.URL + config["auth.oauth2"].(map[string]interface{})["user_password_flow"].(map[string]interface{})["token_url"] = server.URL + t.Cleanup(server.Close) + } +} + +var _ inputcursor.Publisher = (*publisher)(nil) + +type publisher struct { + done func() + published []beat.Event + cursors []map[string]interface{} + mu sync.Mutex +} + +func (p *publisher) Publish(e beat.Event, cursor interface{}) error { + p.mu.Lock() + defer p.mu.Unlock() + + p.published = append(p.published, e) + if cursor != nil { + var cv map[string]interface{} + err := typeconv.Convert(&cv, cursor) + if err != nil { + return err + } + + p.cursors = append(p.cursors, cv) + } + p.done() + + return nil +} + +func TestDecodeAsCSV(t *testing.T) { + sampleELF := `"EVENT_TYPE","TIMESTAMP","REQUEST_ID","ORGANIZATION_ID","USER_ID","RUN_TIME","CPU_TIME","URI","SESSION_KEY","LOGIN_KEY","USER_TYPE","REQUEST_STATUS","DB_TOTAL_TIME","LOGIN_TYPE","BROWSER_TYPE","API_TYPE","API_VERSION","USER_NAME","TLS_PROTOCOL","CIPHER_SUITE","AUTHENTICATION_METHOD_REFERENCE","LOGIN_SUB_TYPE","TIMESTAMP_DERIVED","USER_ID_DERIVED","CLIENT_IP","URI_ID_DERIVED","LOGIN_STATUS","SOURCE_IP" +"Login","20231218054831.655","4u6LyuMrDvb_G-l1cJIQk-","00D5j00000DgAYG","0055j00000AT6I1","1219","127","/services/oauth2/token","","bY5Wfv8t/Ith7WVE","Standard","","1051271151","i","Go-http-client/1.1","","9998.0","salesforceinstance@devtest.in","TLSv1.2","ECDHE-RSA-AES256-GCM-SHA384","","","2023-12-18T05:48:31.655Z","0055j00000AT6I1AAL","Salesforce.com IP","","LOGIN_NO_ERROR","103.108.207.58" +"Login","20231218054832.003","4u6LyuHSDv8LLVl1cJOqGV","00D5j00000DgAYG","0055j00000AT6I1","1277","104","/services/oauth2/token","","u60el7VqW8CSSKcW","Standard","","674857427","i","Go-http-client/1.1","","9998.0","salesforceinstance@devtest.in","TLSv1.2","ECDHE-RSA-AES256-GCM-SHA384","","","2023-12-18T05:48:32.003Z","0055j00000AT6I1AAL","103.108.207.58","","LOGIN_NO_ERROR","103.108.207.58"` + + mp, err := decodeAsCSV([]byte(sampleELF)) + assert.NoError(t, err) + + wantNumOfEvents := 2 + gotNumOfEvents := len(mp) + assert.Equal(t, wantNumOfEvents, gotNumOfEvents) + + wantEventFields := map[string]string{ + "LOGIN_TYPE": "i", + "API_VERSION": "9998.0", + "TIMESTAMP_DERIVED": "2023-12-18T05:48:31.655Z", + "TIMESTAMP": "20231218054831.655", + "USER_NAME": "salesforceinstance@devtest.in", + "SOURCE_IP": "103.108.207.58", + "CPU_TIME": "127", + "REQUEST_STATUS": "", + "DB_TOTAL_TIME": "1051271151", + "TLS_PROTOCOL": "TLSv1.2", + "AUTHENTICATION_METHOD_REFERENCE": "", + "REQUEST_ID": "4u6LyuMrDvb_G-l1cJIQk-", + "USER_ID": "0055j00000AT6I1", + "RUN_TIME": "1219", + "CIPHER_SUITE": "ECDHE-RSA-AES256-GCM-SHA384", + "CLIENT_IP": "Salesforce.com IP", + "EVENT_TYPE": "Login", + "LOGIN_SUB_TYPE": "", + "USER_ID_DERIVED": "0055j00000AT6I1AAL", + "URI_ID_DERIVED": "", + "ORGANIZATION_ID": "00D5j00000DgAYG", + "URI": "/services/oauth2/token", + "LOGIN_KEY": "bY5Wfv8t/Ith7WVE", + "USER_TYPE": "Standard", + "API_TYPE": "", + "SESSION_KEY": "", + "BROWSER_TYPE": "Go-http-client/1.1", + "LOGIN_STATUS": "LOGIN_NO_ERROR", + } + + assert.Equal(t, wantEventFields, mp[0]) +} + +func TestSalesforceInputRunWithMethod(t *testing.T) { + var ( + defaultUserPassAuthConfig = authConfig{ + OAuth2: &OAuth2{ + UserPasswordFlow: &UserPasswordFlow{ + Enabled: pointer(true), + TokenURL: "https://instance_id.develop.my.salesforce.com/services/oauth2/token", + ClientID: "clientid", + ClientSecret: "clientsecret", + Username: "username", + Password: "password", + }, + }, + } + objectEventMonitotingConfig = eventMonitoringMethod{ + Object: EventMonitoringConfig{ + Enabled: pointer(true), + Interval: time.Second * 5, + Query: &QueryConfig{ + Default: getValueTpl(defaultLoginObjectQuery), + Value: getValueTpl(valueLoginObjectQuery), + }, + Cursor: &cursorConfig{Field: "EventDate"}, + }, + } + objectEventMonitoringWithWrongQuery = eventMonitoringMethod{ + Object: EventMonitoringConfig{ + Enabled: pointer(true), + Interval: time.Second * 5, + Query: &QueryConfig{ + Default: getValueTpl(invalidDefaultLoginEventObjectQuery), + Value: getValueTpl(invalidValueLoginObjectQuery), + }, + Cursor: &cursorConfig{Field: "EventDate"}, + }, + } + + elfEventMonitotingConfig = eventMonitoringMethod{ + EventLogFile: EventMonitoringConfig{ + Enabled: pointer(true), + Interval: time.Second * 5, + Query: &QueryConfig{ + Default: getValueTpl(defaultLoginEventLogFileQuery), + Value: getValueTpl(valueLoginEventLogFileQuery), + }, + Cursor: &cursorConfig{Field: "EventDate"}, + }, + } + elfEventMonitotingWithWrongQuery = eventMonitoringMethod{ + EventLogFile: EventMonitoringConfig{ + Enabled: pointer(true), + Interval: time.Second * 5, + Query: &QueryConfig{ + Default: getValueTpl(invalidDefaultLoginEventLogFileQuery), + Value: getValueTpl(invalidValueLoginEventLogFileQuery), + }, + Cursor: &cursorConfig{Field: "EventDate"}, + }, + } + ) + + type fields struct { + ctx context.Context + publisher inputcursor.Publisher + cancel context.CancelCauseFunc + cursor *state + srcConfig *config + sfdcConfig *sfdc.Configuration + soqlr *soql.Resource + config config + } + + defaultResource := resourceConfig{ + Retry: retryConfig{ + MaxAttempts: pointer(5), + WaitMin: pointer(time.Minute), + WaitMax: pointer(time.Minute), + }, + Transport: httpcommon.DefaultHTTPTransportSettings(), + } + + tests := []struct { + fields fields + setupServer func(testing.TB, http.HandlerFunc, *config) + handler http.HandlerFunc + method string + name string + expected []string + wantErr bool + AuthFail bool + ClientConnectionFail bool + }{ + // Object + { + name: "Positive/object_get_one_event", + method: "Object", + setupServer: newTestServerBasedOnConfig(httptest.NewServer), + handler: defaultHandler(NoPaginationFlow, false, "", oneObjectEvents), + fields: fields{ + config: config{ + Version: 56, + Auth: &defaultUserPassAuthConfig, + EventMonitoringMethod: &objectEventMonitotingConfig, + Resource: &defaultResource, + }, + cursor: &state{}, + }, + expected: []string{expectedObjectEvent}, + }, + { + name: "Negative/object_error_from_wrong_default_query", + method: "Object", + setupServer: newTestServerBasedOnConfig(httptest.NewServer), + handler: defaultHandler(NoPaginationFlow, false, "", oneObjectEvents), + fields: fields{ + config: config{ + Version: 56, + Auth: &defaultUserPassAuthConfig, + EventMonitoringMethod: &objectEventMonitoringWithWrongQuery, + Resource: &defaultResource, + }, + cursor: &state{}, + }, + wantErr: true, + }, + { + name: "Negative/object_error_from_wrong_value_query", + method: "Object", + setupServer: newTestServerBasedOnConfig(httptest.NewServer), + handler: defaultHandler(NoPaginationFlow, false, "", oneObjectEvents), + fields: fields{ + config: config{ + Version: 56, + Auth: &defaultUserPassAuthConfig, + EventMonitoringMethod: &objectEventMonitoringWithWrongQuery, + Resource: &defaultResource, + }, + cursor: &state{ + Object: dateTimeCursor{ + FirstEventTime: "2020-01-01T00:00:00Z", + LastEventTime: "2020-01-01T00:00:00Z", + }, + }, + }, + wantErr: true, + }, + + // EventLogFile + { + name: "Positive/elf_get_one_event", + method: "ELF", + setupServer: newTestServerBasedOnConfig(httptest.NewServer), + handler: defaultHandler(NoPaginationFlow, false, oneEventLogfileFirstResponseJSON, oneEventLogfileSecondResponseCSV), + fields: fields{ + config: config{ + Version: 56, + Auth: &defaultUserPassAuthConfig, + EventMonitoringMethod: &elfEventMonitotingConfig, + Resource: &defaultResource, + }, + cursor: &state{}, + }, + expected: []string{expectedELFEvent}, + }, + { + name: "Negative/elf_error_from_wrong_default_query", + method: "ELF", + setupServer: newTestServerBasedOnConfig(httptest.NewServer), + handler: defaultHandler(NoPaginationFlow, false, oneEventLogfileFirstResponseJSON, oneEventLogfileSecondResponseCSV), + fields: fields{ + config: config{ + Version: 56, + Auth: &defaultUserPassAuthConfig, + EventMonitoringMethod: &elfEventMonitotingWithWrongQuery, + Resource: &defaultResource, + }, + cursor: &state{}, + }, + wantErr: true, + }, + { + name: "Negative/elf_error_from_wrong_value_query", + method: "ELF", + setupServer: newTestServerBasedOnConfig(httptest.NewServer), + handler: defaultHandler(NoPaginationFlow, false, oneEventLogfileFirstResponseJSON, oneEventLogfileSecondResponseCSV), + fields: fields{ + config: config{ + Version: 56, + Auth: &defaultUserPassAuthConfig, + EventMonitoringMethod: &elfEventMonitotingWithWrongQuery, + Resource: &defaultResource, + }, + cursor: &state{ + EventLogFile: dateTimeCursor{ + FirstEventTime: "2020-01-01T00:00:00Z", + LastEventTime: "2020-01-01T00:00:00Z", + }, + }, + }, + wantErr: true, + }, + } + for _, tt := range tests { + config := tt.fields.config + + t.Run(tt.name, func(t *testing.T) { + tt.setupServer(t, tt.handler, &config) + + s := &salesforceInput{ + config: config, + ctx: tt.fields.ctx, + cancel: tt.fields.cancel, + publisher: tt.fields.publisher, + cursor: tt.fields.cursor, + srcConfig: tt.fields.srcConfig, + sfdcConfig: tt.fields.sfdcConfig, + log: logp.NewLogger("salesforceInput"), + soqlr: tt.fields.soqlr, + } + + ctx, cancel := context.WithCancelCause(context.Background()) + s.ctx = ctx + s.cancel = cancel + + var client publisher + client.done = func() { + if len(client.published) >= len(tt.expected) { + cancel(nil) + } + } + s.publisher = &client + s.srcConfig = &s.config + + var err error + s.sfdcConfig, err = s.getSFDCConfig(&s.config) + if err != nil && !tt.wantErr { + t.Errorf("unexpected error from running input: %v", err) + } + if tt.wantErr && tt.AuthFail { + return + } + + s.soqlr, err = s.SetupSFClientConnection() + if err != nil && !tt.wantErr { + t.Errorf("unexpected error from running input: %v", err) + } + if tt.wantErr && tt.ClientConnectionFail { + return + } + + if tt.method == "Object" { + if err := s.RunObject(); (err != nil) != tt.wantErr { + t.Errorf("salesforceInput.RunObject() error = %v, wantErr %v", err, tt.wantErr) + } + } else { + if err := s.RunEventLogFile(); (err != nil) != tt.wantErr { + t.Errorf("salesforceInput.RunEventLogFile() error = %v, wantErr %v", err, tt.wantErr) + } + } + + if len(client.published) < len(tt.expected) { + t.Errorf("unexpected number of published events: got:%d want at least:%d", len(client.published), len(tt.expected)) + tt.expected = tt.expected[:len(client.published)] + } + + client.published = client.published[:len(tt.expected)] + for i, got := range client.published { + if !reflect.DeepEqual(got.Fields["message"], tt.expected[i]) { + t.Errorf("unexpected result for event %d: got:- want:+\n%s", i, cmp.Diff(got.Fields, tt.expected[i])) + } + } + }) + } +} + +func getValueTpl(in string) *valueTpl { + vp := &valueTpl{} + vp.Unpack(in) //nolint:errcheck // ignore error in test + + return vp +} + +func newTestServerBasedOnConfig(newServer func(http.Handler) *httptest.Server) func(testing.TB, http.HandlerFunc, *config) { + return func(t testing.TB, h http.HandlerFunc, config *config) { + server := newServer(h) + config.URL = server.URL + config.Auth.OAuth2.UserPasswordFlow.TokenURL = server.URL + t.Cleanup(server.Close) + } +} + +func TestPlugin(t *testing.T) { + _ = Plugin(logp.NewLogger("salesforce_test"), stateStore{}) +} diff --git a/x-pack/filebeat/input/salesforce/soql.go b/x-pack/filebeat/input/salesforce/soql.go new file mode 100644 index 00000000000..44987644bdc --- /dev/null +++ b/x-pack/filebeat/input/salesforce/soql.go @@ -0,0 +1,27 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "errors" + "strings" + + "github.com/g8rswimmer/go-sfdc/soql" +) + +// compile-time check if querier implements soql.QueryFormatter +var _ soql.QueryFormatter = (*querier)(nil) + +type querier struct { + Query string +} + +// Format returns the query string. +func (q querier) Format() (string, error) { + if strings.TrimSpace(q.Query) == "" { + return "", errors.New("query is empty") + } + return q.Query, nil +} diff --git a/x-pack/filebeat/input/salesforce/soql_test.go b/x-pack/filebeat/input/salesforce/soql_test.go new file mode 100644 index 00000000000..137a59a91bd --- /dev/null +++ b/x-pack/filebeat/input/salesforce/soql_test.go @@ -0,0 +1,39 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestFormat(t *testing.T) { + tests := map[string]struct { + wantErr error + input string + wantStr string + }{ + "empty query": {input: "", wantStr: "", wantErr: errors.New("query is empty")}, + "valid query": {input: "SELECT FIELDS(STANDARD) FROM LoginEvent", wantStr: "SELECT FIELDS(STANDARD) FROM LoginEvent", wantErr: nil}, + "invalid query": {input: "SELECT ", wantStr: "SELECT ", wantErr: nil}, + } + + var q querier + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + q.Query = tc.input + got, gotErr := q.Format() + if !assert.Equal(t, tc.wantErr, gotErr) { + t.FailNow() + } + if !assert.EqualValues(t, tc.wantStr, got) { + t.FailNow() + } + }) + } +} diff --git a/x-pack/filebeat/input/salesforce/state.go b/x-pack/filebeat/input/salesforce/state.go new file mode 100644 index 00000000000..2d8a96b68bd --- /dev/null +++ b/x-pack/filebeat/input/salesforce/state.go @@ -0,0 +1,49 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +// state is the state of the salesforce module. It is used to watermark the state +// to avoid pulling duplicate data from Salesforce. The state is persisted separately +// for EventLogFile and Object. +type state struct { + Object dateTimeCursor `json:"object,omitempty"` + EventLogFile dateTimeCursor `json:"event_log_file,omitempty"` +} + +// dateTimeCursor maintains two distinct states for the event collection iteration. +// The initial state represents the time of the first event, while the subsequent state denotes the time of the last event. +// In certain SOQL queries for specific objects, sorting by all fields may not be feasible, and there may be no specific order. +// This design allows users to exert maximum control over the iteration process. +// For instance, the LoginEvent object only supports sorting based on EventIdentifier and EventDate. +// Furthermore, if we desire to sort based on EventDate, it only supports descending order sorting. +// In this case by using first_event_time we can get latest event EventDate to query next set of events. +// Reference to LoginEvent: https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/sforce_api_objects_loginevent.htm +type dateTimeCursor struct { + FirstEventTime string `struct:"first_event_time,omitempty"` + LastEventTime string `struct:"last_event_time,omitempty"` +} + +// parseCursor parses the cursor from the configuration and executes the +// template. If cursor is nil, the default templated query is used else +// the value templated query is used. See QueryConfig struct for more. +func parseCursor(cfg *QueryConfig, cursor mapstr.M, log *logp.Logger) (string, error) { + ctxTmpl := mapstr.M{"cursor": nil} + + if cursor != nil { + ctxTmpl["cursor"] = cursor + qr, err := cfg.Value.Execute(ctxTmpl, nil, log) + if err != nil { + return "", err + } + return qr, nil + } + + return cfg.Default.Execute(ctxTmpl, nil, log) +} diff --git a/x-pack/filebeat/input/salesforce/value_tpl.go b/x-pack/filebeat/input/salesforce/value_tpl.go new file mode 100644 index 00000000000..8a05ecc0686 --- /dev/null +++ b/x-pack/filebeat/input/salesforce/value_tpl.go @@ -0,0 +1,132 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package salesforce + +import ( + "errors" + "strings" + "text/template" + "time" + + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +type valueTpl struct { + *template.Template +} + +var ( + errEmptyTemplateResult = errors.New("template result is empty") + errExecuteTemplate = errors.New("template execution failed") +) + +// Execute executes the template with the given data. If the template execution +// fails, then the defaultVal is used if it is not nil. Execute will return +// variable substituted query with nil error. +func (t *valueTpl) Execute(data any, defaultVal *valueTpl, log *logp.Logger) (val string, err error) { + fallback := func(err error) (string, error) { + if defaultVal != nil { + log.Debugf("template execution error: %s", err) + log.Info("fallback to default template") + return defaultVal.Execute(mapstr.M{}, nil, log) + } + return "", err + } + + defer func() { + if r := recover(); r != nil { + val, err = fallback(errExecuteTemplate) + } + if err != nil { + log.Debugf("template execution failed %s", err) + } + }() + + buf := new(strings.Builder) + + err = t.Template.Execute(buf, data) + if err != nil { + return fallback(err) + } + + val = buf.String() + if val == "" { + return fallback(errEmptyTemplateResult) + } + + return val, nil +} + +// Unpack parses the given string as a template. +func (t *valueTpl) Unpack(in string) error { + // Custom delimiters to prevent issues when using template values as part of + // other Go templates. + const ( + leftDelim = "[[" + rightDelim = "]]" + ) + + tpl, err := template.New(""). + Option("missingkey=error"). + Funcs(template.FuncMap{ + "now": timeNow, + "parseDuration": parseDuration, + "parseTime": parseTime, + "formatTime": formatTime, + }). + Delims(leftDelim, rightDelim). + Parse(in) + if err != nil { + return err + } + + *t = valueTpl{Template: tpl} + + return nil +} + +// parseDuration parses a duration string and returns the time.Duration value. +func parseDuration(s string) time.Duration { + d, _ := time.ParseDuration(s) + return d +} + +// predefinedLayouts contains some predefined layouts that are commonly used. +var predefinedLayouts = map[string]string{ + "ANSIC": time.ANSIC, + "UnixDate": time.UnixDate, + "RubyDate": time.RubyDate, + "RFC822": time.RFC822, + "RFC822Z": time.RFC822Z, + "RFC850": time.RFC850, + "RFC1123": time.RFC1123, + "RFC1123Z": time.RFC1123Z, + "RFC3339": time.RFC3339, // 2006-01-02T15:04:05Z07:00 + "CustomRFC3339Like": formatRFC3339Like, // 2006-01-02T15:04:05.999Z + "RFC3339Nano": time.RFC3339Nano, + "Kitchen": time.Kitchen, +} + +// parseTime parses a time string using the given layout. There are also some +// predefined layouts that can be used; see predefinedLayouts for more. +func parseTime(ts, layout string) time.Time { + if found := predefinedLayouts[layout]; found != "" { + layout = found + } + + t, _ := time.Parse(layout, ts) + return t +} + +// formatTime formats a time using the given layout. There are also some +// predefined layouts that can be used; see predefinedLayouts for more. +func formatTime(t time.Time, layout string) string { + if found := predefinedLayouts[layout]; found != "" { + layout = found + } + + return t.Format(layout) +} From 3aa8556db591f590d89e68e95f498638b31e71d1 Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Fri, 5 Apr 2024 14:14:44 -0400 Subject: [PATCH 096/313] Clean up non-indexable policy handling in the ES output (#38591) Simplify non-indexable policy handling: - Replace the lookup table of generic factories and custom index selectors with a simple `deadLetterIndex` string, since the only valid non-indexable policies are to use a dead letter index or to drop the event if none is provided. - Make `elasticsearch.ClientSettings` and its fields internal rather than public, and clarify some field names. (Aside from better encapsulation, this makes it easier to see that this cleanup doesn't break anything else.) This is a preparation for the pending early-encoding change. The non-indexable policy code needs to be rewritten to support early encoding, so I split most of the cleanups out into this standalone PR to be kinder to code reviewers. This PR doesn't change any user-visible behavior. --- libbeat/outputs/elasticsearch/client.go | 91 +++++++------- .../elasticsearch/client_proxy_test.go | 16 +-- libbeat/outputs/elasticsearch/client_test.go | 114 ++++++++++-------- libbeat/outputs/elasticsearch/config_test.go | 17 +-- .../elasticsearch/dead_letter_index.go | 56 +++++++++ .../elasticsearch/death_letter_selector.go | 36 ------ .../outputs/elasticsearch/elasticsearch.go | 25 ++-- .../elasticsearch/elasticsearch_test.go | 22 ++-- .../elasticsearch/non_indexable_policy.go | 103 ---------------- 9 files changed, 204 insertions(+), 276 deletions(-) create mode 100644 libbeat/outputs/elasticsearch/dead_letter_index.go delete mode 100644 libbeat/outputs/elasticsearch/death_letter_selector.go delete mode 100644 libbeat/outputs/elasticsearch/non_indexable_policy.go diff --git a/libbeat/outputs/elasticsearch/client.go b/libbeat/outputs/elasticsearch/client.go index 8aeef2c623e..936bbea8ca4 100644 --- a/libbeat/outputs/elasticsearch/client.go +++ b/libbeat/outputs/elasticsearch/client.go @@ -49,22 +49,28 @@ var ( type Client struct { conn eslegclient.Connection - index outputs.IndexSelector - pipeline *outil.Selector + indexSelector outputs.IndexSelector + pipelineSelector *outil.Selector - observer outputs.Observer - NonIndexableAction string + observer outputs.Observer + + // If deadLetterIndex is set, events with bulk-ingest errors will be + // forwarded to this index. Otherwise, they will be dropped. + deadLetterIndex string log *logp.Logger } -// ClientSettings contains the settings for a client. -type ClientSettings struct { - eslegclient.ConnectionSettings - Index outputs.IndexSelector - Pipeline *outil.Selector - Observer outputs.Observer - NonIndexableAction string +// clientSettings contains the settings for a client. +type clientSettings struct { + connection eslegclient.ConnectionSettings + indexSelector outputs.IndexSelector + pipelineSelector *outil.Selector + observer outputs.Observer + + // If deadLetterIndex is set, events with bulk-ingest errors will be + // forwarded to this index. Otherwise, they will be dropped. + deadLetterIndex string } type bulkResultStats struct { @@ -81,29 +87,15 @@ const ( // NewClient instantiates a new client. func NewClient( - s ClientSettings, + s clientSettings, onConnect *callbacksRegistry, ) (*Client, error) { - pipeline := s.Pipeline + pipeline := s.pipelineSelector if pipeline != nil && pipeline.IsEmpty() { pipeline = nil } - conn, err := eslegclient.NewConnection(eslegclient.ConnectionSettings{ - URL: s.URL, - Beatname: s.Beatname, - Username: s.Username, - Password: s.Password, - APIKey: s.APIKey, - Headers: s.Headers, - Kerberos: s.Kerberos, - Observer: s.Observer, - Parameters: s.Parameters, - CompressionLevel: s.CompressionLevel, - EscapeHTML: s.EscapeHTML, - Transport: s.Transport, - IdleConnTimeout: s.IdleConnTimeout, - }) + conn, err := eslegclient.NewConnection(s.connection) if err != nil { return nil, err } @@ -134,11 +126,11 @@ func NewClient( } client := &Client{ - conn: *conn, - index: s.Index, - pipeline: pipeline, - observer: s.Observer, - NonIndexableAction: s.NonIndexableAction, + conn: *conn, + indexSelector: s.indexSelector, + pipelineSelector: pipeline, + observer: s.observer, + deadLetterIndex: s.deadLetterIndex, log: logp.NewLogger("elasticsearch"), } @@ -174,11 +166,11 @@ func (client *Client) Clone() *Client { client.conn.Transport.Proxy.Disable = client.conn.Transport.Proxy.URL == nil c, _ := NewClient( - ClientSettings{ - ConnectionSettings: connection, - Index: client.index, - Pipeline: client.pipeline, - NonIndexableAction: client.NonIndexableAction, + clientSettings{ + connection: connection, + indexSelector: client.indexSelector, + pipelineSelector: client.pipelineSelector, + deadLetterIndex: client.deadLetterIndex, }, nil, // XXX: do not pass connection callback? ) @@ -296,10 +288,7 @@ func (client *Client) publishEvents(ctx context.Context, data []publisher.Event) } if failed > 0 { - if sendErr == nil { - sendErr = eslegclient.ErrTempBulkFailure - } - return failedEvents, sendErr + return failedEvents, eslegclient.ErrTempBulkFailure } return nil, nil } @@ -339,7 +328,7 @@ func (client *Client) createEventBulkMeta(version version.V, event *beat.Event) return nil, err } - index, err := client.index.Select(event) + index, err := client.getIndex(event) if err != nil { err := fmt.Errorf("failed to select event index: %w", err) return nil, err @@ -371,6 +360,16 @@ func (client *Client) createEventBulkMeta(version version.V, event *beat.Event) return eslegclient.BulkIndexAction{Index: meta}, nil } +func (client *Client) getIndex(event *beat.Event) (string, error) { + // If this event has been dead-lettered, override its index + if event.Meta != nil { + if deadLetter, _ := event.Meta.HasKey(dead_letter_marker_field); deadLetter { + return client.deadLetterIndex, nil + } + } + return client.indexSelector.Select(event) +} + func (client *Client) getPipeline(event *beat.Event) (string, error) { if event.Meta != nil { pipeline, err := events.GetMetaStringValue(*event, events.FieldMetaPipeline) @@ -384,8 +383,8 @@ func (client *Client) getPipeline(event *beat.Event) (string, error) { return strings.ToLower(pipeline), nil } - if client.pipeline != nil { - return client.pipeline.Select(event) + if client.pipelineSelector != nil { + return client.pipelineSelector.Select(event) } return "", nil } @@ -434,7 +433,7 @@ func (client *Client) bulkCollectPublishFails(result eslegclient.BulkResult, dat client.log.Errorf("Can't deliver to dead letter index event (status=%v). Enable debug logs to view the event and cause.", status) client.log.Debugf("Can't deliver to dead letter index event %#v (status=%v): %s", data[i], status, msg) // poison pill - this will clog the pipeline if the underlying failure is non transient. - } else if client.NonIndexableAction == dead_letter_index { + } else if client.deadLetterIndex != "" { client.log.Warnf("Cannot index event (status=%v), trying dead letter index. Enable debug logs to view the event and cause.", status) client.log.Debugf("Cannot index event %#v (status=%v): %s, trying dead letter index", data[i], status, msg) if data[i].Content.Meta == nil { diff --git a/libbeat/outputs/elasticsearch/client_proxy_test.go b/libbeat/outputs/elasticsearch/client_proxy_test.go index e3fd914bbe7..c2f23f34052 100644 --- a/libbeat/outputs/elasticsearch/client_proxy_test.go +++ b/libbeat/outputs/elasticsearch/client_proxy_test.go @@ -165,7 +165,9 @@ func TestProxyDisableOverridesProxySettings(t *testing.T) { func execClient(t *testing.T, env ...string) { // The child process always runs only the TestClientPing test, which pings // the server at TEST_SERVER_URL and then terminates. - cmd := exec.Command(os.Args[0], "-test.run=TestClientPing") + executable, err := os.Executable() + require.NoError(t, err, "couldn't get current executable") + cmd := exec.Command(executable, "-test.run=TestClientPing") cmd.Env = append(append(os.Environ(), "TEST_START_CLIENT=1"), env...) @@ -173,7 +175,7 @@ func execClient(t *testing.T, env ...string) { cmd.Stderr = cmdOutput cmd.Stdout = cmdOutput - err := cmd.Run() + err = cmd.Run() if err != nil { t.Error("Error executing client:\n" + cmdOutput.String()) } @@ -185,8 +187,8 @@ func doClientPing(t *testing.T) { proxy := os.Getenv("TEST_PROXY_URL") // if TEST_PROXY_DISABLE is nonempty, set ClientSettings.ProxyDisable. proxyDisable := os.Getenv("TEST_PROXY_DISABLE") - clientSettings := ClientSettings{ - ConnectionSettings: eslegclient.ConnectionSettings{ + clientSettings := clientSettings{ + connection: eslegclient.ConnectionSettings{ URL: serverURL, Headers: map[string]string{headerTestField: headerTestValue}, Transport: httpcommon.HTTPTransportSettings{ @@ -195,14 +197,14 @@ func doClientPing(t *testing.T) { }, }, }, - Index: outil.MakeSelector(outil.ConstSelectorExpr("test", outil.SelectorLowerCase)), + indexSelector: outil.MakeSelector(outil.ConstSelectorExpr("test", outil.SelectorLowerCase)), } if proxy != "" { u, err := url.Parse(proxy) require.NoError(t, err) proxyURL := httpcommon.ProxyURI(*u) - clientSettings.Transport.Proxy.URL = &proxyURL + clientSettings.connection.Transport.Proxy.URL = &proxyURL } client, err := NewClient(clientSettings, nil) require.NoError(t, err) @@ -210,7 +212,7 @@ func doClientPing(t *testing.T) { // This ping won't succeed; we aren't testing end-to-end communication // (which would require a lot more setup work), we just want to make sure // the client is pointed at the right server or proxy. - client.Connect() + _ = client.Connect() } // serverState contains the state of the http listeners for proxy tests, diff --git a/libbeat/outputs/elasticsearch/client_test.go b/libbeat/outputs/elasticsearch/client_test.go index 58e5f3ee5e2..12493e28d02 100644 --- a/libbeat/outputs/elasticsearch/client_test.go +++ b/libbeat/outputs/elasticsearch/client_test.go @@ -90,10 +90,10 @@ func (bm *batchMock) RetryEvents(events []publisher.Event) { func TestPublish(t *testing.T) { makePublishTestClient := func(t *testing.T, url string) *Client { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - ConnectionSettings: eslegclient.ConnectionSettings{URL: url}, - Index: testIndexSelector{}, + clientSettings{ + observer: outputs.NewNilObserver(), + connection: eslegclient.ConnectionSettings{URL: url}, + indexSelector: testIndexSelector{}, }, nil, ) @@ -248,9 +248,8 @@ func TestPublish(t *testing.T) { func TestCollectPublishFailsNone(t *testing.T) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), }, nil, ) @@ -272,9 +271,8 @@ func TestCollectPublishFailsNone(t *testing.T) { func TestCollectPublishFailMiddle(t *testing.T) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), }, nil, ) @@ -302,9 +300,9 @@ func TestCollectPublishFailMiddle(t *testing.T) { func TestCollectPublishFailDeadLetterQueue(t *testing.T) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "dead_letter_index", + clientSettings{ + observer: outputs.NewNilObserver(), + deadLetterIndex: "test_index", }, nil, ) @@ -361,9 +359,9 @@ func TestCollectPublishFailDeadLetterQueue(t *testing.T) { func TestCollectPublishFailDrop(t *testing.T) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), + deadLetterIndex: "", }, nil, ) @@ -405,9 +403,8 @@ func TestCollectPublishFailDrop(t *testing.T) { func TestCollectPublishFailAll(t *testing.T) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), }, nil, ) @@ -434,9 +431,8 @@ func TestCollectPipelinePublishFail(t *testing.T) { logp.TestingSetup(logp.WithSelectors("elasticsearch")) client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), }, nil, ) @@ -481,9 +477,9 @@ func TestCollectPipelinePublishFail(t *testing.T) { func BenchmarkCollectPublishFailsNone(b *testing.B) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), + deadLetterIndex: "", }, nil, ) @@ -510,9 +506,8 @@ func BenchmarkCollectPublishFailsNone(b *testing.B) { func BenchmarkCollectPublishFailMiddle(b *testing.B) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), }, nil, ) @@ -540,9 +535,8 @@ func BenchmarkCollectPublishFailMiddle(b *testing.B) { func BenchmarkCollectPublishFailAll(b *testing.B) { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - NonIndexableAction: "drop", + clientSettings{ + observer: outputs.NewNilObserver(), }, nil, ) @@ -589,16 +583,16 @@ func TestClientWithHeaders(t *testing.T) { })) defer ts.Close() - client, err := NewClient(ClientSettings{ - Observer: outputs.NewNilObserver(), - ConnectionSettings: eslegclient.ConnectionSettings{ + client, err := NewClient(clientSettings{ + observer: outputs.NewNilObserver(), + connection: eslegclient.ConnectionSettings{ URL: ts.URL, Headers: map[string]string{ "host": "myhost.local", "X-Test": "testing value", }, }, - Index: outil.MakeSelector(outil.ConstSelectorExpr("test", outil.SelectorLowerCase)), + indexSelector: outil.MakeSelector(outil.ConstSelectorExpr("test", outil.SelectorLowerCase)), }, nil) assert.NoError(t, err) @@ -667,10 +661,10 @@ func TestBulkEncodeEvents(t *testing.T) { } client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - Index: index, - Pipeline: pipeline, + clientSettings{ + observer: outputs.NewNilObserver(), + indexSelector: index, + pipelineSelector: pipeline, }, nil, ) @@ -743,10 +737,10 @@ func TestBulkEncodeEventsWithOpType(t *testing.T) { } client, _ := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - Index: index, - Pipeline: pipeline, + clientSettings{ + observer: outputs.NewNilObserver(), + indexSelector: index, + pipelineSelector: pipeline, }, nil, ) @@ -786,9 +780,9 @@ func TestClientWithAPIKey(t *testing.T) { })) defer ts.Close() - client, err := NewClient(ClientSettings{ - Observer: outputs.NewNilObserver(), - ConnectionSettings: eslegclient.ConnectionSettings{ + client, err := NewClient(clientSettings{ + observer: outputs.NewNilObserver(), + connection: eslegclient.ConnectionSettings{ URL: ts.URL, APIKey: "hyokHG4BfWk5viKZ172X:o45JUkyuS--yiSAuuxl8Uw", }, @@ -806,13 +800,13 @@ func TestClientWithAPIKey(t *testing.T) { func TestPublishEventsWithBulkFiltering(t *testing.T) { makePublishTestClient := func(t *testing.T, url string, configParams map[string]string) *Client { client, err := NewClient( - ClientSettings{ - Observer: outputs.NewNilObserver(), - ConnectionSettings: eslegclient.ConnectionSettings{ + clientSettings{ + observer: outputs.NewNilObserver(), + connection: eslegclient.ConnectionSettings{ URL: url, Parameters: configParams, }, - Index: testIndexSelector{}, + indexSelector: testIndexSelector{}, }, nil, ) @@ -926,3 +920,23 @@ func TestPublishEventsWithBulkFiltering(t *testing.T) { require.Equal(t, len(recParams), 1) }) } + +func TestGetIndex(t *testing.T) { + dead_letter_index := "dead_index" + client := &Client{ + deadLetterIndex: dead_letter_index, + indexSelector: testIndexSelector{}, + } + + event := &beat.Event{ + Meta: make(map[string]interface{}), + } + index, err := client.getIndex(event) + require.NoError(t, err, "getIndex call must succeed") + assert.Equal(t, "test", index, "Event with no dead letter marker should use the client's index selector") + + event.Meta[dead_letter_marker_field] = true + index, err = client.getIndex(event) + require.NoError(t, err, "getIndex call must succeed") + assert.Equal(t, dead_letter_index, index, "Event with dead letter marker should use the client's dead letter index") +} diff --git a/libbeat/outputs/elasticsearch/config_test.go b/libbeat/outputs/elasticsearch/config_test.go index 32cb90c904c..c69cf229856 100644 --- a/libbeat/outputs/elasticsearch/config_test.go +++ b/libbeat/outputs/elasticsearch/config_test.go @@ -34,11 +34,11 @@ non_indexable_policy.drop: ~ if err != nil { t.Fatalf("Can't create test configuration from valid input") } - policy, err := newNonIndexablePolicy(elasticsearchOutputConfig.NonIndexablePolicy) + index, err := deadLetterIndexForPolicy(elasticsearchOutputConfig.NonIndexablePolicy) if err != nil { - t.Fatalf("Can't create test configuration from valid input") + t.Fatalf("Can't read non-indexable policy: %v", err.Error()) } - assert.Equal(t, drop, policy.action(), "action should be drop") + assert.Equal(t, "", index, "dead letter index should be empty string") } func TestDeadLetterIndexPolicyConfig(t *testing.T) { @@ -51,11 +51,11 @@ non_indexable_policy.dead_letter_index: if err != nil { t.Fatalf("Can't create test configuration from valid input") } - policy, err := newNonIndexablePolicy(elasticsearchOutputConfig.NonIndexablePolicy) + index, err := deadLetterIndexForPolicy(elasticsearchOutputConfig.NonIndexablePolicy) if err != nil { - t.Fatalf("Can't create test configuration from valid input") + t.Fatalf("Can't read non-indexable policy: %v", err.Error()) } - assert.Equal(t, "my-dead-letter-index", policy.index(), "index should match config") + assert.Equal(t, "my-dead-letter-index", index, "index should match config") } func TestInvalidNonIndexablePolicyConfig(t *testing.T) { @@ -88,9 +88,10 @@ non_indexable_policy.dead_letter_index: if err != nil { t.Fatalf("Can't create test configuration from valid input") } - _, err = newNonIndexablePolicy(elasticsearchOutputConfig.NonIndexablePolicy) + + _, err = deadLetterIndexForPolicy(elasticsearchOutputConfig.NonIndexablePolicy) if err == nil { - t.Fatalf("Can create test configuration from invalid input") + t.Fatalf("Invalid non-indexable policy config should produce an error") } t.Logf("error %s", err.Error()) }) diff --git a/libbeat/outputs/elasticsearch/dead_letter_index.go b/libbeat/outputs/elasticsearch/dead_letter_index.go new file mode 100644 index 00000000000..d2788205691 --- /dev/null +++ b/libbeat/outputs/elasticsearch/dead_letter_index.go @@ -0,0 +1,56 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package elasticsearch + +import ( + "fmt" + + "github.com/elastic/beats/v7/libbeat/common/cfgwarn" + "github.com/elastic/elastic-agent-libs/config" +) + +const ( + dead_letter_marker_field = "deadlettered" + drop = "drop" + dead_letter_index = "dead_letter_index" +) + +func deadLetterIndexForConfig(config *config.C) (string, error) { + var indexConfig struct { + Index string + } + err := config.Unpack(&indexConfig) + if err != nil { + return "", err + } + if indexConfig.Index == "" { + return "", fmt.Errorf("%s policy requires an `index` to be specified", dead_letter_index) + } + return indexConfig.Index, nil +} + +func deadLetterIndexForPolicy(configNamespace *config.Namespace) (string, error) { + if configNamespace == nil || configNamespace.Name() == drop { + return "", nil + } + if configNamespace.Name() == dead_letter_index { + cfgwarn.Beta("The non_indexable_policy dead_letter_index is beta.") + return deadLetterIndexForConfig(configNamespace.Config()) + } + return "", fmt.Errorf("no such policy type: %s", configNamespace.Name()) +} diff --git a/libbeat/outputs/elasticsearch/death_letter_selector.go b/libbeat/outputs/elasticsearch/death_letter_selector.go deleted file mode 100644 index 02bd3780cab..00000000000 --- a/libbeat/outputs/elasticsearch/death_letter_selector.go +++ /dev/null @@ -1,36 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package elasticsearch - -import ( - "github.com/elastic/beats/v7/libbeat/beat" - "github.com/elastic/beats/v7/libbeat/outputs" -) - -type DeadLetterSelector struct { - Selector outputs.IndexSelector - DeadLetterIndex string -} - -func (d DeadLetterSelector) Select(event *beat.Event) (string, error) { - result, _ := event.Meta.HasKey(dead_letter_marker_field) - if result { - return d.DeadLetterIndex, nil - } - return d.Selector.Select(event) -} diff --git a/libbeat/outputs/elasticsearch/elasticsearch.go b/libbeat/outputs/elasticsearch/elasticsearch.go index 649168eb11b..616e08e08f6 100644 --- a/libbeat/outputs/elasticsearch/elasticsearch.go +++ b/libbeat/outputs/elasticsearch/elasticsearch.go @@ -73,9 +73,9 @@ func makeES( return outputs.Fail(err) } - policy, err := newNonIndexablePolicy(esConfig.NonIndexablePolicy) + deadLetterIndex, err := deadLetterIndexForPolicy(esConfig.NonIndexablePolicy) if err != nil { - log.Errorf("error while creating file identifier: %v", err) + log.Errorf("error in non_indexable_policy: %v", err) return outputs.Fail(err) } @@ -94,13 +94,6 @@ func makeES( params = nil } - if policy.action() == dead_letter_index { - index = DeadLetterSelector{ - Selector: index, - DeadLetterIndex: policy.index(), - } - } - clients := make([]outputs.NetworkClient, len(hosts)) for i, host := range hosts { esURL, err := common.MakeURL(esConfig.Protocol, esConfig.Path, host, 9200) @@ -110,8 +103,8 @@ func makeES( } var client outputs.NetworkClient - client, err = NewClient(ClientSettings{ - ConnectionSettings: eslegclient.ConnectionSettings{ + client, err = NewClient(clientSettings{ + connection: eslegclient.ConnectionSettings{ URL: esURL, Beatname: beat.Beat, Kerberos: esConfig.Kerberos, @@ -126,10 +119,10 @@ func makeES( Transport: esConfig.Transport, IdleConnTimeout: esConfig.Transport.IdleConnTimeout, }, - Index: index, - Pipeline: pipeline, - Observer: observer, - NonIndexableAction: policy.action(), + indexSelector: index, + pipelineSelector: pipeline, + observer: observer, + deadLetterIndex: deadLetterIndex, }, &connectCallbackRegistry) if err != nil { return outputs.Fail(err) @@ -144,7 +137,7 @@ func makeES( func buildSelectors( im outputs.IndexManager, - beat beat.Info, + _ beat.Info, cfg *config.C, ) (index outputs.IndexSelector, pipeline *outil.Selector, err error) { index, err = im.BuildSelector(cfg) diff --git a/libbeat/outputs/elasticsearch/elasticsearch_test.go b/libbeat/outputs/elasticsearch/elasticsearch_test.go index 45db313d903..7950bdd6323 100644 --- a/libbeat/outputs/elasticsearch/elasticsearch_test.go +++ b/libbeat/outputs/elasticsearch/elasticsearch_test.go @@ -18,7 +18,6 @@ package elasticsearch import ( - "fmt" "testing" "github.com/stretchr/testify/assert" @@ -30,9 +29,9 @@ import ( ) func TestConnectCallbacksManagement(t *testing.T) { - f0 := func(client *eslegclient.Connection) error { fmt.Println("i am function #0"); return nil } - f1 := func(client *eslegclient.Connection) error { fmt.Println("i am function #1"); return nil } - f2 := func(client *eslegclient.Connection) error { fmt.Println("i am function #2"); return nil } + f0 := func(client *eslegclient.Connection) error { return nil } + f1 := func(client *eslegclient.Connection) error { return nil } + f2 := func(client *eslegclient.Connection) error { return nil } _, err := RegisterConnectCallback(f0) if err != nil { @@ -55,9 +54,9 @@ func TestConnectCallbacksManagement(t *testing.T) { } func TestGlobalConnectCallbacksManagement(t *testing.T) { - f0 := func(client *eslegclient.Connection) error { fmt.Println("i am function #0"); return nil } - f1 := func(client *eslegclient.Connection) error { fmt.Println("i am function #1"); return nil } - f2 := func(client *eslegclient.Connection) error { fmt.Println("i am function #2"); return nil } + f0 := func(client *eslegclient.Connection) error { return nil } + f1 := func(client *eslegclient.Connection) error { return nil } + f2 := func(client *eslegclient.Connection) error { return nil } _, err := RegisterGlobalCallback(f0) if err != nil { @@ -116,13 +115,16 @@ func TestPipelineSelection(t *testing.T) { }, } - for name, test := range cases { + for name, _test := range cases { + // de-alias loop variable + test := _test t.Run(name, func(t *testing.T) { selector, err := buildPipelineSelector(config.MustNewConfigFrom(test.cfg)) + assert.NoError(t, err) client, err := NewClient( - ClientSettings{ - Pipeline: &selector, + clientSettings{ + pipelineSelector: &selector, }, nil, ) diff --git a/libbeat/outputs/elasticsearch/non_indexable_policy.go b/libbeat/outputs/elasticsearch/non_indexable_policy.go deleted file mode 100644 index 5b588efb93f..00000000000 --- a/libbeat/outputs/elasticsearch/non_indexable_policy.go +++ /dev/null @@ -1,103 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package elasticsearch - -import ( - "fmt" - - "github.com/elastic/beats/v7/libbeat/common/cfgwarn" - "github.com/elastic/elastic-agent-libs/config" -) - -const ( - dead_letter_marker_field = "deadlettered" - drop = "drop" - dead_letter_index = "dead_letter_index" -) - -type DropPolicy struct{} - -func (d DropPolicy) action() string { - return drop -} - -func (d DropPolicy) index() string { - panic("drop policy doesn't have an target index") -} - -type DeadLetterIndexPolicy struct { - Index string -} - -func (d DeadLetterIndexPolicy) action() string { - return dead_letter_index -} - -func (d DeadLetterIndexPolicy) index() string { - return d.Index -} - -type nonIndexablePolicy interface { - action() string - index() string -} - -var ( - policyFactories = map[string]policyFactory{ - drop: newDropPolicy, - dead_letter_index: newDeadLetterIndexPolicy, - } -) - -func newDeadLetterIndexPolicy(config *config.C) (nonIndexablePolicy, error) { - cfgwarn.Beta("The non_indexable_policy dead_letter_index is beta.") - policy := DeadLetterIndexPolicy{} - err := config.Unpack(&policy) - if policy.index() == "" { - return nil, fmt.Errorf("%s policy requires an `index` to be specified specified", dead_letter_index) - } - return policy, err -} - -func newDropPolicy(*config.C) (nonIndexablePolicy, error) { - return defaultDropPolicy(), nil -} - -func defaultPolicy() nonIndexablePolicy { - return defaultDropPolicy() -} - -func defaultDropPolicy() nonIndexablePolicy { - return &DropPolicy{} -} - -type policyFactory func(config *config.C) (nonIndexablePolicy, error) - -func newNonIndexablePolicy(configNamespace *config.Namespace) (nonIndexablePolicy, error) { - if configNamespace == nil { - return defaultPolicy(), nil - } - - policyType := configNamespace.Name() - factory, ok := policyFactories[policyType] - if !ok { - return nil, fmt.Errorf("no such policy type: %s", policyType) - } - - return factory(configNamespace.Config()) -} From b1e4abc4b052bbd8533b3622746fe527f285f156 Mon Sep 17 00:00:00 2001 From: Marc Guasch Date: Fri, 5 Apr 2024 21:03:46 +0200 Subject: [PATCH 097/313] [libbeat] Cache processor docs and memory fixes. (#38561) Change cache processor documentation from write_period to write_interval. Fix expires heap cleanup on partial file writes: popping the expiries heap completely on every partial write caused a panic on the following put operations at the time of expiry check. Fix expires infinite growth when large TTLs and recurring keys are cached: when TTLs are large and keys are recurrent, we kept track of an arbitrary amount of expiry heap entries for the same key, causing memory to grow. --- CHANGELOG.next.asciidoc | 3 + libbeat/processors/cache/docs/cache.asciidoc | 2 +- libbeat/processors/cache/file_store.go | 4 +- libbeat/processors/cache/file_store_test.go | 103 +++++++++++++++++++ libbeat/processors/cache/mem_store.go | 20 ++-- libbeat/processors/cache/mem_store_test.go | 97 +++++++++++++++++ 6 files changed, 220 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 525dee11d47..d9f94a3e633 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -61,6 +61,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Lower logging level to debug when attempting to configure beats with unknown fields from autodiscovered events/environments {pull}[37816][37816] - Set timeout of 1 minute for FQDN requests {pull}37756[37756] - Fix the paths in the .cmd script added to the path by the Windows MSI to point to the new C:\Program Files installation location. https://github.com/elastic/elastic-stack-installers/pull/238 +- Change cache processor documentation from `write_period` to `write_interval`. {pull}38561[38561] +- Fix cache processor expiries heap cleanup on partial file writes. {pull}38561[38561] +- Fix cache processor expiries infinite growth when large a large TTL is used and recurring keys are cached. {pull}38561[38561] *Auditbeat* diff --git a/libbeat/processors/cache/docs/cache.asciidoc b/libbeat/processors/cache/docs/cache.asciidoc index 6c5ccf2d197..bdd9629dea2 100644 --- a/libbeat/processors/cache/docs/cache.asciidoc +++ b/libbeat/processors/cache/docs/cache.asciidoc @@ -54,7 +54,7 @@ One of `backend.memory.id` or `backend.file.id` must be provided. `backend.capacity`:: The number of elements that can be stored in the cache. `put` operations that would cause the capacity to be exceeded will result in evictions of the oldest elements. Values at or below zero indicate no limit. The capacity should not be lower than the number of elements that are expected to be referenced when processing the input as evicted elements are lost. The default is `0`, no limit. `backend.memory.id`:: The ID of a memory-based cache. Use the same ID across instance to reference the same cache. `backend.file.id`:: The ID of a file-based cache. Use the same ID across instance to reference the same cache. -`backend.file.write_period`:: The interval between periodic cache writes to the backing file. Valid time units are h, m, s, ms, us/µs and ns. Periodic writes are only made if `backend.file.write_period` is greater than zero. The contents are always written out to the backing file when the processor is closed. Default is zero, no periodic writes. +`backend.file.write_interval`:: The interval between periodic cache writes to the backing file. Valid time units are h, m, s, ms, us/µs and ns. Periodic writes are only made if `backend.file.write_interval` is greater than zero. The contents are always written out to the backing file when the processor is closed. Default is zero, no periodic writes. One of `put`, `get` or `delete` must be provided. diff --git a/libbeat/processors/cache/file_store.go b/libbeat/processors/cache/file_store.go index d3820600acf..884a80a2d1d 100644 --- a/libbeat/processors/cache/file_store.go +++ b/libbeat/processors/cache/file_store.go @@ -287,8 +287,8 @@ func (c *fileStore) writeState(final bool) { enc := json.NewEncoder(f) enc.SetEscapeHTML(false) now := time.Now() - for c.expiries.Len() != 0 { - e := c.expiries.pop() + for i := 0; i < c.expiries.Len(); i++ { + e := c.expiries[i] if e.Expires.Before(now) { // Don't write expired elements. continue diff --git a/libbeat/processors/cache/file_store_test.go b/libbeat/processors/cache/file_store_test.go index 22d43083e04..163899eca0b 100644 --- a/libbeat/processors/cache/file_store_test.go +++ b/libbeat/processors/cache/file_store_test.go @@ -352,6 +352,109 @@ var fileStoreTests = []struct { {Key: "three", Value: 3.0}, }, }, + { + name: "periodic_write", + cfg: config{ + Store: &storeConfig{ + File: &fileConfig{ID: "test"}, + Capacity: 1000, + Effort: 10, + }, + Get: &getConfig{}, + }, + want: &fileStore{path: "testdata/periodic_write", memStore: memStore{ + id: "test", + cache: map[string]*CacheEntry{}, + refs: 1, + // TTL, capacity and effort are set only by put. + ttl: -1, + cap: -1, + effort: -1, + }}, + steps: []fileStoreTestSteps{ + 0: { + doTo: func(s *fileStore) error { + putCfg := config{ + Store: &storeConfig{ + File: &fileConfig{ID: "test"}, + Capacity: 1000, + Effort: 10, + }, + Put: &putConfig{ + TTL: ptrTo(time.Second), + }, + } + s.add(putCfg) + return nil + }, + want: &fileStore{path: "testdata/periodic_write", memStore: memStore{ + id: "test", + cache: map[string]*CacheEntry{}, + refs: 2, + dirty: false, + ttl: time.Second, + cap: 1000, + effort: 10, + }}, + }, + 1: { + doTo: func(s *fileStore) error { + s.Put("one", 1) + s.Put("two", 2) + s.Put("three", 3) + return nil + }, + want: &fileStore{path: "testdata/periodic_write", memStore: memStore{ + id: "test", + cache: map[string]*CacheEntry{ + "one": {Key: "one", Value: int(1), index: 0}, + "two": {Key: "two", Value: int(2), index: 1}, + "three": {Key: "three", Value: int(3), index: 2}, + }, + expiries: expiryHeap{ + {Key: "one", Value: int(1), index: 0}, + {Key: "two", Value: int(2), index: 1}, + {Key: "three", Value: int(3), index: 2}, + }, + refs: 2, + dirty: true, + ttl: time.Second, + cap: 1000, + effort: 10, + }}, + }, + 2: { + doTo: func(s *fileStore) error { + s.writeState(false) + return nil + }, + want: &fileStore{path: "testdata/periodic_write", memStore: memStore{ + id: "test", + cache: map[string]*CacheEntry{ + "one": {Key: "one", Value: int(1), index: 0}, + "two": {Key: "two", Value: int(2), index: 1}, + "three": {Key: "three", Value: int(3), index: 2}, + }, + expiries: expiryHeap{ + {Key: "one", Value: int(1), index: 0}, + {Key: "two", Value: int(2), index: 1}, + {Key: "three", Value: int(3), index: 2}, + }, + refs: 2, + dirty: false, + ttl: time.Second, + cap: 1000, + effort: 10, + }}, + }, + }, + wantPersisted: []*CacheEntry{ + // Numeric values are float due to JSON round-trip. + {Key: "one", Value: 1.0}, + {Key: "two", Value: 2.0}, + {Key: "three", Value: 3.0}, + }, + }, } func TestFileStore(t *testing.T) { diff --git a/libbeat/processors/cache/mem_store.go b/libbeat/processors/cache/mem_store.go index a2fec841d27..09ea2c81f53 100644 --- a/libbeat/processors/cache/mem_store.go +++ b/libbeat/processors/cache/mem_store.go @@ -172,13 +172,21 @@ func (c *memStore) Put(key string, val any) error { defer c.mu.Unlock() now := time.Now() c.evictExpired(now) - e := &CacheEntry{ - Key: key, - Value: val, - Expires: now.Add(c.ttl), + // If the key is being overwritten we remove its previous expiry entry + // this will prevent expiries heap to grow with large TTLs and recurring keys. + if prev, found := c.cache[key]; found { + prev.Value = val + prev.Expires = now.Add(c.ttl) + heap.Fix(&c.expiries, prev.index) + } else { + e := &CacheEntry{ + Key: key, + Value: val, + Expires: now.Add(c.ttl), + } + c.cache[key] = e + heap.Push(&c.expiries, e) } - c.cache[key] = e - heap.Push(&c.expiries, e) c.dirty = true return nil } diff --git a/libbeat/processors/cache/mem_store_test.go b/libbeat/processors/cache/mem_store_test.go index 4a6cf500e05..d6ca53694ce 100644 --- a/libbeat/processors/cache/mem_store_test.go +++ b/libbeat/processors/cache/mem_store_test.go @@ -335,6 +335,103 @@ var memStoreTests = []struct { }, }, }, + { + name: "re-hit", + cfg: config{ + Store: &storeConfig{ + Memory: &memConfig{"test"}, + Capacity: 1000, + Effort: 10, + }, + Get: &getConfig{}, + }, + want: &memStore{ + id: "test", + cache: map[string]*CacheEntry{}, + refs: 1, + // TTL, capacity and effort are set only by put. + ttl: -1, + cap: -1, + effort: -1, + }, + steps: []memStoreTestSteps{ + 0: { + doTo: func(s *memStore) error { + putCfg := config{ + Store: &storeConfig{ + Memory: &memConfig{"test"}, + Capacity: 1000, + Effort: 10, + }, + Put: &putConfig{ + TTL: ptrTo(10 * time.Minute), + }, + } + s.add(putCfg) + return nil + }, + want: &memStore{ + id: "test", + cache: map[string]*CacheEntry{}, + refs: 2, + dirty: false, + ttl: 10 * time.Minute, + cap: 1000, + effort: 10, + }, + }, + 1: { + doTo: func(s *memStore) error { + s.Put("one", 1) + s.Put("two", 2) + s.Put("three", 3) + return nil + }, + want: &memStore{ + id: "test", + cache: map[string]*CacheEntry{ + "one": {Key: "one", Value: int(1), index: 0}, + "two": {Key: "two", Value: int(2), index: 1}, + "three": {Key: "three", Value: int(3), index: 2}, + }, + expiries: expiryHeap{ + {Key: "one", Value: int(1), index: 0}, + {Key: "two", Value: int(2), index: 1}, + {Key: "three", Value: int(3), index: 2}, + }, + refs: 2, + dirty: true, + ttl: 10 * time.Minute, + cap: 1000, + effort: 10, + }, + }, + 2: { + doTo: func(s *memStore) error { + s.Put("one", 1) + return nil + }, + want: &memStore{ + id: "test", + cache: map[string]*CacheEntry{ + "one": {Key: "one", Value: int(1), index: 1}, + "two": {Key: "two", Value: int(2), index: 0}, + "three": {Key: "three", Value: int(3), index: 2}, + }, + expiries: expiryHeap{ + {Key: "two", Value: int(2), index: 0}, + {Key: "one", Value: int(1), index: 1}, + {Key: "three", Value: int(3), index: 2}, + }, + refs: 2, + dirty: true, + ttl: 10 * time.Minute, + cap: 1000, + effort: 10, + }, + }, + }, + }, } func TestMemStore(t *testing.T) { From b08df788fb8f1db16d5dc235a09e488461fda216 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:02:56 -0400 Subject: [PATCH 098/313] [Automation] Bump Golang version to 1.21.9 (#38727) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Update Metricbeat Dockerfile Made with ❤️️ by updatecli * chore: Update Functionbeat Dockerfile Made with ❤️️ by updatecli * chore: Update NATS module Dockerfile Made with ❤️️ by updatecli * chore: Update Heartbeat Dockerfile Made with ❤️️ by updatecli * chore: Update HTTP module Dockerfile Made with ❤️️ by updatecli * chore: Update Heartbeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update Auditbeat Dockerfile Made with ❤️️ by updatecli * chore: Update .go-version Made with ❤️️ by updatecli * chore: Update Metricbeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update stan Dockerfile Made with ❤️️ by updatecli * chore: Update Packetbeat Dockerfile Made with ❤️️ by updatecli * chore: Update .golangci.yml Made with ❤️️ by updatecli * chore: Update version.asciidoc Made with ❤️️ by updatecli * chore: Update from vsphere Dockerfile Made with ❤️️ by updatecli * chore: Update Filebeat debug Dockerfile Made with ❤️️ by updatecli * Add changelog. * Update Go mod patch version. * Automatically bump golang patch version. --------- Co-authored-by: apmmachine Co-authored-by: Craig MacKenzie --- .ci/bump-golang.yml | 2 +- .go-version | 2 +- .golangci.yml | 8 ++++---- CHANGELOG.next.asciidoc | 1 + auditbeat/Dockerfile | 2 +- dev-tools/kubernetes/filebeat/Dockerfile.debug | 2 +- dev-tools/kubernetes/heartbeat/Dockerfile.debug | 2 +- dev-tools/kubernetes/metricbeat/Dockerfile.debug | 2 +- go.mod | 2 +- heartbeat/Dockerfile | 2 +- libbeat/docs/version.asciidoc | 2 +- metricbeat/Dockerfile | 2 +- metricbeat/module/http/_meta/Dockerfile | 2 +- metricbeat/module/nats/_meta/Dockerfile | 2 +- metricbeat/module/vsphere/_meta/Dockerfile | 2 +- packetbeat/Dockerfile | 2 +- x-pack/functionbeat/Dockerfile | 2 +- x-pack/metricbeat/module/stan/_meta/Dockerfile | 2 +- 18 files changed, 21 insertions(+), 20 deletions(-) diff --git a/.ci/bump-golang.yml b/.ci/bump-golang.yml index 8e23c2679c0..2957acd6223 100644 --- a/.ci/bump-golang.yml +++ b/.ci/bump-golang.yml @@ -92,7 +92,7 @@ targets: spec: content: 'go {{ source "gomod" }}' file: go.mod - matchpattern: 'go \d+.\d+' + matchpattern: 'go \d+.\d+.\d+' update-go-version: name: "Update .go-version" sourceid: latestGoVersion diff --git a/.go-version b/.go-version index 428abfd24fb..f124bfa1554 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.21.8 +1.21.9 diff --git a/.golangci.yml b/.golangci.yml index fc9f9e0fda0..fc58b57a4d1 100755 --- a/.golangci.yml +++ b/.golangci.yml @@ -124,7 +124,7 @@ linters-settings: gosimple: # Select the Go version to target. The default is '1.13'. - go: "1.21.8" + go: "1.21.9" nakedret: # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 @@ -142,19 +142,19 @@ linters-settings: staticcheck: # Select the Go version to target. The default is '1.13'. - go: "1.21.8" + go: "1.21.9" checks: ["all"] stylecheck: # Select the Go version to target. The default is '1.13'. - go: "1.21.8" + go: "1.21.9" # Disabled: # ST1005: error strings should not be capitalized checks: ["all", "-ST1005"] unused: # Select the Go version to target. The default is '1.13'. - go: "1.21.8" + go: "1.21.9" gosec: excludes: diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index d9f94a3e633..0ced1121560 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -138,6 +138,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Beats will now connect to older Elasticsearch instances by default {pull}36884[36884] - Raise up logging level to warning when attempting to configure beats with unknown fields from autodiscovered events/environments - elasticsearch output now supports `idle_connection_timeout`. {issue}35616[35615] {pull}36843[36843] +- Update to Go 1.21.9. {pulk}38727[38727] *Auditbeat* diff --git a/auditbeat/Dockerfile b/auditbeat/Dockerfile index 982680c7f63..f04ddebe848 100644 --- a/auditbeat/Dockerfile +++ b/auditbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.8 +FROM golang:1.21.9 RUN \ apt-get update \ diff --git a/dev-tools/kubernetes/filebeat/Dockerfile.debug b/dev-tools/kubernetes/filebeat/Dockerfile.debug index b46b2a73cc2..ba6e39d9f41 100644 --- a/dev-tools/kubernetes/filebeat/Dockerfile.debug +++ b/dev-tools/kubernetes/filebeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.8 as builder +FROM golang:1.21.9 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/dev-tools/kubernetes/heartbeat/Dockerfile.debug b/dev-tools/kubernetes/heartbeat/Dockerfile.debug index e1e9dddabac..44aa0dc1ece 100644 --- a/dev-tools/kubernetes/heartbeat/Dockerfile.debug +++ b/dev-tools/kubernetes/heartbeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.8 as builder +FROM golang:1.21.9 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/dev-tools/kubernetes/metricbeat/Dockerfile.debug b/dev-tools/kubernetes/metricbeat/Dockerfile.debug index 0b81f3635d9..bda15a5708a 100644 --- a/dev-tools/kubernetes/metricbeat/Dockerfile.debug +++ b/dev-tools/kubernetes/metricbeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.8 as builder +FROM golang:1.21.9 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/go.mod b/go.mod index a080de26a98..76f6f27c3ba 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/elastic/beats/v7 -go 1.21.8 +go 1.21.9 require ( cloud.google.com/go/bigquery v1.55.0 diff --git a/heartbeat/Dockerfile b/heartbeat/Dockerfile index 7fc0102259c..4d7d45237da 100644 --- a/heartbeat/Dockerfile +++ b/heartbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.8 +FROM golang:1.21.9 RUN \ apt-get update \ diff --git a/libbeat/docs/version.asciidoc b/libbeat/docs/version.asciidoc index 4f776705700..35201b36175 100644 --- a/libbeat/docs/version.asciidoc +++ b/libbeat/docs/version.asciidoc @@ -1,6 +1,6 @@ :stack-version: 8.14.0 :doc-branch: main -:go-version: 1.21.8 +:go-version: 1.21.9 :release-state: unreleased :python: 3.7 :docker: 1.12 diff --git a/metricbeat/Dockerfile b/metricbeat/Dockerfile index a16b942032d..fe700b0b6ce 100644 --- a/metricbeat/Dockerfile +++ b/metricbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.8 +FROM golang:1.21.9 COPY --from=docker:26.0.0-alpine3.19 /usr/local/bin/docker /usr/local/bin/ RUN \ diff --git a/metricbeat/module/http/_meta/Dockerfile b/metricbeat/module/http/_meta/Dockerfile index e855e12fe03..00c6518bf4c 100644 --- a/metricbeat/module/http/_meta/Dockerfile +++ b/metricbeat/module/http/_meta/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.8 +FROM golang:1.21.9 COPY test/main.go main.go diff --git a/metricbeat/module/nats/_meta/Dockerfile b/metricbeat/module/nats/_meta/Dockerfile index 8d06be18187..6459dc6bf6a 100644 --- a/metricbeat/module/nats/_meta/Dockerfile +++ b/metricbeat/module/nats/_meta/Dockerfile @@ -2,7 +2,7 @@ ARG NATS_VERSION=2.0.4 FROM nats:$NATS_VERSION # build stage -FROM golang:1.21.8 AS build-env +FROM golang:1.21.9 AS build-env RUN apt-get install git mercurial gcc RUN git clone https://github.com/nats-io/nats.go.git /nats-go RUN cd /nats-go/examples/nats-bench && git checkout tags/v1.10.0 && go build . diff --git a/metricbeat/module/vsphere/_meta/Dockerfile b/metricbeat/module/vsphere/_meta/Dockerfile index a5268391f73..62e7a752fbf 100644 --- a/metricbeat/module/vsphere/_meta/Dockerfile +++ b/metricbeat/module/vsphere/_meta/Dockerfile @@ -1,5 +1,5 @@ ARG VSPHERE_GOLANG_VERSION -FROM golang:1.21.8 +FROM golang:1.21.9 RUN apt-get install curl git RUN go install github.com/vmware/govmomi/vcsim@v0.30.4 diff --git a/packetbeat/Dockerfile b/packetbeat/Dockerfile index e565e21af41..686f97b947f 100644 --- a/packetbeat/Dockerfile +++ b/packetbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.8 +FROM golang:1.21.9 RUN \ apt-get update \ diff --git a/x-pack/functionbeat/Dockerfile b/x-pack/functionbeat/Dockerfile index 810dd6a9cf1..f97bf89cb7e 100644 --- a/x-pack/functionbeat/Dockerfile +++ b/x-pack/functionbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.8 +FROM golang:1.21.9 RUN \ apt-get update \ diff --git a/x-pack/metricbeat/module/stan/_meta/Dockerfile b/x-pack/metricbeat/module/stan/_meta/Dockerfile index 14cf1ba2831..2f5b44963d3 100644 --- a/x-pack/metricbeat/module/stan/_meta/Dockerfile +++ b/x-pack/metricbeat/module/stan/_meta/Dockerfile @@ -2,7 +2,7 @@ ARG STAN_VERSION=0.15.1 FROM nats-streaming:$STAN_VERSION # build stage -FROM golang:1.21.8 AS build-env +FROM golang:1.21.9 AS build-env RUN apt-get install git mercurial gcc RUN git clone https://github.com/nats-io/stan.go.git /stan-go RUN cd /stan-go/examples/stan-bench && git checkout tags/v0.5.2 && go build . From 7a815ff853d61dbf486ca546ed0ad0fa25fe3f01 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Fri, 5 Apr 2024 19:20:01 -0400 Subject: [PATCH 099/313] [updatecli] update elastic stack version for testing 8.14.0-e399a313 (#38521) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Update snapshot.yml Made with ❤️️ by updatecli --------- Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 940d2e82782..bc573ee0983 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-14d688f1-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-e399a313-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-14d688f1-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-e399a313-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-14d688f1-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-e399a313-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 8105935e24fb12a2120488290015a38f143d8471 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Sat, 6 Apr 2024 12:05:01 +1030 Subject: [PATCH 100/313] x-pack/filebeat/module/o365: fix handling of o365.audit.OperationProperties (#38709) In some cases, this field may be a string. This results in a mapping failure. So in cases where the field is a string, conditionally parse out the JSON. Use the ingest pipeline rather than modifying the js processor due to clarity. --- CHANGELOG.next.asciidoc | 1 + .../module/o365/audit/_meta/fields.yml | 30 +++++++ .../module/o365/audit/ingest/pipeline.yml | 10 +++ .../test/13-dlp-exchange.log-expected.json | 2 +- .../module/o365/audit/test/stringly-json.log | 1 + .../test/stringly-json.log-expected.json | 78 +++++++++++++++++++ x-pack/filebeat/module/o365/fields.go | 2 +- 7 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 x-pack/filebeat/module/o365/audit/test/stringly-json.log create mode 100644 x-pack/filebeat/module/o365/audit/test/stringly-json.log-expected.json diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 0ced1121560..70c129b8697 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -97,6 +97,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix filebeat gcs input panic {pull}38407[38407] - Rename `activity_guid` to `activity_id` in ETW input events to suit other Windows inputs. {pull}38530[38530] - Add missing provider registration and fix published entity for Active Directory entityanalytics provider. {pull}38645[38645] +- Fix handling of un-parsed JSON in O365 module. {issue}37800[37800] {pull}38709[38709] *Heartbeat* diff --git a/x-pack/filebeat/module/o365/audit/_meta/fields.yml b/x-pack/filebeat/module/o365/audit/_meta/fields.yml index 51c1ea67f77..5de72246f88 100644 --- a/x-pack/filebeat/module/o365/audit/_meta/fields.yml +++ b/x-pack/filebeat/module/o365/audit/_meta/fields.yml @@ -6,6 +6,9 @@ - name: AADGroupId type: keyword + - name: Activity + type: keyword + - name: Actor type: array fields: @@ -109,6 +112,9 @@ - name: ExceptionInfo.* type: object + - name: Experience + type: keyword + - name: ExtendedProperties.* type: object @@ -214,9 +220,21 @@ - name: ObjectId type: keyword + - name: ObjectDisplayName + type: keyword + + - name: ObjectType + type: keyword + - name: Operation type: keyword + - name: OperationId + type: keyword + + - name: OperationProperties + type: object + - name: OrganizationId type: keyword @@ -238,6 +256,9 @@ - name: RecordType type: keyword + - name: RequestId + type: keyword + - name: ResultStatus type: keyword @@ -304,6 +325,9 @@ - name: TemplateTypeId type: keyword + - name: Timestamp + type: keyword + - name: UniqueSharingId type: keyword @@ -328,5 +352,11 @@ - name: Workload type: keyword + - name: WorkspaceId + type: keyword + + - name: WorkspaceName + type: keyword + - name: YammerNetworkId type: keyword diff --git a/x-pack/filebeat/module/o365/audit/ingest/pipeline.yml b/x-pack/filebeat/module/o365/audit/ingest/pipeline.yml index c2d1a74c030..57692734fd1 100644 --- a/x-pack/filebeat/module/o365/audit/ingest/pipeline.yml +++ b/x-pack/filebeat/module/o365/audit/ingest/pipeline.yml @@ -7,6 +7,16 @@ processors: - user_agent: field: user_agent.original ignore_missing: true + - json: + tag: json-extract-stringly-OperationProperties + field: o365.audit.OperationProperties + if: ctx.o365?.audit?.OperationProperties instanceof String + on_failure: + - remove: + field: o365.audit.OperationProperties + - append: + field: error.message + value: 'Processor {{{_ingest.on_failure_processor_type}}} with tag {{{_ingest.on_failure_processor_tag}}} in pipeline {{{_ingest.pipeline}}} failed with message: {{{_ingest.on_failure_message}}}' # URL - uri_parts: field: url.original diff --git a/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json b/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json index c6d25a2cc57..0a860ab7141 100644 --- a/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json +++ b/x-pack/filebeat/module/o365/audit/test/13-dlp-exchange.log-expected.json @@ -800,4 +800,4 @@ "user.id": "alice@testsiem2.onmicrosoft.com", "user.name": "alice" } -] +] \ No newline at end of file diff --git a/x-pack/filebeat/module/o365/audit/test/stringly-json.log b/x-pack/filebeat/module/o365/audit/test/stringly-json.log new file mode 100644 index 00000000000..4b8a3225b6b --- /dev/null +++ b/x-pack/filebeat/module/o365/audit/test/stringly-json.log @@ -0,0 +1 @@ +{"Activity":"CreateArtifact","WorkspaceName":"obszar_robaczy","OrganizationId":"53d83e1d-xxx-xxx-84e9-01ec5045dd81","Operation":"CreateArtifact","Id":"a4420e70-b7a1-xxx-xxx-11e3364acd22","CreationTime":"2024-01-30T14:23:40","Timestamp":"2024-01-30T14:22:50","UserId":"username@domain.pl","ClientIP":"81.2.69.144","RecordType":20,"ResultStatus":"InProgress","ObjectDisplayName":"test_lakehouse","OperationId":"a84f7f73-xxxx-xxxx-8cf3-094f69c23756","Experience":"Lakehouse","WorkspaceId":"91dad513-xxxx-xxxx-94bb-f5cbf305691c","ObjectId":"0e00d1cf-825a-4d78-98ff-8a8199357669","UserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","Workload":"PowerBI","RequestId":"fcbbe282-xxx-xxxx-xxxx-dc1e6d9b090b","OperationProperties":"[{\"Name\":\"SystemArtifactType\",\"Value\":\"None\"}]","ObjectType":"Lakehouse","UserType":0,"UserKey":"xxxxxxxx"} diff --git a/x-pack/filebeat/module/o365/audit/test/stringly-json.log-expected.json b/x-pack/filebeat/module/o365/audit/test/stringly-json.log-expected.json new file mode 100644 index 00000000000..1ab31f8787e --- /dev/null +++ b/x-pack/filebeat/module/o365/audit/test/stringly-json.log-expected.json @@ -0,0 +1,78 @@ +[ + { + "@timestamp": "2024-01-30T14:23:40.000Z", + "client.address": "81.2.69.144", + "client.ip": "81.2.69.144", + "event.action": "CreateArtifact", + "event.category": "web", + "event.code": "PowerBIAudit", + "event.dataset": "o365.audit", + "event.id": "a4420e70-b7a1-xxx-xxx-11e3364acd22", + "event.kind": "event", + "event.module": "o365", + "event.outcome": "success", + "event.provider": "PowerBI", + "event.type": "info", + "fileset.name": "audit", + "host.id": "53d83e1d-xxx-xxx-84e9-01ec5045dd81", + "host.name": "domain.pl", + "input.type": "log", + "log.offset": 0, + "network.type": "ipv4", + "o365.audit.Activity": "CreateArtifact", + "o365.audit.ClientIP": "81.2.69.144", + "o365.audit.CreationTime": "2024-01-30T14:23:40", + "o365.audit.Experience": "Lakehouse", + "o365.audit.Id": "a4420e70-b7a1-xxx-xxx-11e3364acd22", + "o365.audit.ObjectDisplayName": "test_lakehouse", + "o365.audit.ObjectId": "0e00d1cf-825a-4d78-98ff-8a8199357669", + "o365.audit.ObjectType": "Lakehouse", + "o365.audit.Operation": "CreateArtifact", + "o365.audit.OperationId": "a84f7f73-xxxx-xxxx-8cf3-094f69c23756", + "o365.audit.OperationProperties": [ + { + "Name": "SystemArtifactType", + "Value": "None" + } + ], + "o365.audit.OrganizationId": "53d83e1d-xxx-xxx-84e9-01ec5045dd81", + "o365.audit.RecordType": 20, + "o365.audit.RequestId": "fcbbe282-xxx-xxxx-xxxx-dc1e6d9b090b", + "o365.audit.ResultStatus": "InProgress", + "o365.audit.Timestamp": "2024-01-30T14:22:50", + "o365.audit.UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + "o365.audit.UserId": "username@domain.pl", + "o365.audit.UserKey": "xxxxxxxx", + "o365.audit.UserType": 0, + "o365.audit.Workload": "PowerBI", + "o365.audit.WorkspaceId": "91dad513-xxxx-xxxx-94bb-f5cbf305691c", + "o365.audit.WorkspaceName": "obszar_robaczy", + "organization.id": "53d83e1d-xxx-xxx-84e9-01ec5045dd81", + "related.ip": "81.2.69.144", + "related.user": "username", + "service.type": "o365", + "source.geo.city_name": "London", + "source.geo.continent_name": "Europe", + "source.geo.country_iso_code": "GB", + "source.geo.country_name": "United Kingdom", + "source.geo.location.lat": 51.5142, + "source.geo.location.lon": -0.0931, + "source.geo.region_iso_code": "GB-ENG", + "source.geo.region_name": "England", + "source.ip": "81.2.69.144", + "tags": [ + "forwarded" + ], + "user.domain": "domain.pl", + "user.email": "username@domain.pl", + "user.id": "username@domain.pl", + "user.name": "username", + "user_agent.device.name": "Other", + "user_agent.name": "Chrome", + "user_agent.original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", + "user_agent.os.full": "Windows 10", + "user_agent.os.name": "Windows", + "user_agent.os.version": "10", + "user_agent.version": "120.0.0.0" + } +] \ No newline at end of file diff --git a/x-pack/filebeat/module/o365/fields.go b/x-pack/filebeat/module/o365/fields.go index 8226549ac91..7a0f190bf44 100644 --- a/x-pack/filebeat/module/o365/fields.go +++ b/x-pack/filebeat/module/o365/fields.go @@ -19,5 +19,5 @@ func init() { // AssetO365 returns asset data. // This is the base64 encoded zlib format compressed contents of module/o365. func AssetO365() string { - return "eJzUmUFv47YTxe/5FDz/gc3lj/bgQwHXThZG48SInC56pKmxMjVFqsORE+2nLyht4cSrNFk/X+qjhfnxaTR8nJE+mR11ExP///NPF8Yoq6eJudtu2ZEZ/ispOeFGOYaJ+eXCGGOWsWw9mW0U82hD6TlUxscqma3E+kX05YUxWyZfpkkfN/w+mWBrGta8tG3J+uKiMdo1NDGVxLZ59f+IjsPvul/leH2ztMFWVFNQM10tTL9Yr/TyVfz3Gg8qp9P556xlUR4tOejcUfcU5XBtnOE0ymi4FbHd0ZUxNQfWYn504UNKDvHrrqFTCK/uZRaD0rPCOVk007IUSgnkPCQSWMwftq4JR3kSvQrK2sEYGHDDYTee29eF9zZhpFx+RESD7Zum8exs3vJzTo233a2tMTn/8CBZX1uhqVPe05yFcu10V3sKYLKunt2jDRUtSe3cqr383ygrbv4kp/+OmlmlKsqxs/yAmJlnCgo+vwGyCNtYqHCoYNIKJ8CGM4t1PlDGCdkVjy6EKHWamK31id4nt+FbgWK1NIsi5OFKnwkNYhjZdrM2aawfAv/VEqImbwosGkvqPN5GnXNS4U2r1G/5UdomRk82vLPd+zMCtAyRKLdtvaHx9uJjkHwfWG57RBFbcZj/Ud/eZcMAzO/qWSmUVK4kNiTKlECYBOunzkGucS2xnjbN6eXSN6HY8YfsvUWdj07W4tEKIiE4LrMPI1LC8EhuYoXaZI8quqRUJ1CS2IEDYdI8uhvenF4lC6UaqPYhHATMYvuGL/r4ogd4Mx4scqUaK4obTvqrTbSmuvFW6Uw0mDKL/o0p8sOIhYsBJADlnePXrB7MQ37CeDPRu0d/foIM8MFmRJ45CwZuZmnZb+Lz5/YMkLunQLK0SUmmzuW9fA5pPfVsoIfVLQCi3C+dPBZ/CwdMchlL3vLrBgXAYX5516+A7KS7hqSfEgCEVDbwV3heeckB0yJccbDKoSpI9kh/vbJia1KsZlbRs+vmpJb9yaU7QJAE35OLUmKWd0+p9Vqo1RZoqAsKiZX3lKeFOSm5vnjSIjjflgTcY9/iriIHPcObmIJSAou6oD0JK/Ayp2AFnleOfhAPAMDBcIi/Zk/9aJcgqznAMIMYOPf9S5Y9mB90K7RNE0XX7HYEOfnaSkXjrft/70PFcDNn+FIxgHKPdidnmMK/w2FuuiYLTkyZgHWOLyclJNNDV5/9l0MFgRLJtHrr9dyHEaiE3wgw7QzASuN3Eswrv9AGScGXKDsfLUAYPsndkj5F2b0j5e8AAAD//+/DPVk=" + return "eJzUmUFv4zYQhe/5FTwX2FyK9uBDAddOFkbj2IicLnqkpbEyNUVqhyMn3l9fkNqtk6zSuH6+rI8W5tPTcOaRI30wW9qPTPj5118ujFFWRyOz2Gy4JNP/V1EshVvl4EfmtwtjjJmHqnNkNkHMg/WVY18bF+poNhKaZ9GXF8ZsmFwVRzmu/30w3jbU3/PSdhXrs4vG6L6lkakldO2L/wd0HH7X+S6v72/m1tuaGvJqxsuZyTfLSi9fxH+v8aByPJ5+TFpm1atb9jq3tH8Mcrg2zCiVd6x7iBBkMNyK2Nfgoec5sGbTVxeOUnKIX+1bOoXw4lkmwSs9KZjVILN2XFVCMYKc+0gCi/nLNg3hKEeiV15Z9zAGBtyw3w7n9mXhvU0YKJf/I6LFOq9tHZc2mcaUY+vs/tY2mJxvPEjWl04ouwJNWSjVzv5qRx5M1tVT+WB9TXNSO7VqL38aZIX131Tqf6MmVqkOAljWxDF5Bdevh8z8JhQq7GuYtMQJsOFMQpO2pGFCcsVXF3yQJo7MxrpI75M7/7VAsVqaBBFycKVPhHoxjLTdpIsamnvPnztC1KSmwKKxpE7DbdApRxVed0q55Qdp6xAcWf9Ou+c9ArQMkSC3XbOm4ePFcZD0HFhuM6IInZSY/1E+ICbDAMzv6qklYfKYFiVfUbWU0JIoU4QEKYm3blyWkPNcS2jGbXt6yeWjMLaFIv07a9L2y1o8WEEk+JKr5OWIFN8vyU2oUavNqGIflZoIShLbcyBMnIbyhtenV8lMqQGqvQ8HAZPQveGtLjw7R7wZDxa5UoMVxQ1H/d1GWlHTOqt0JhpMmQT3xiR6NGJWBg8SgPJO8StWB+YhrTB+IMnukfdgkAEubEKkubVg4GHmlt06PH3szgBZPHqSuY1KMi7L1MvnkJapZwPdL28BEKUz18mj9ddwwCTnoeINvzygADjMLxf5Dkgn9YSzDPk9CuuoRUuSB58zIKC0fIMclvnkJV5IbT1/wTU944ArJVyzt8q+Lkh2yAyztGIbUqynlsFxuZ+SWnYnt3YPQRJ8R2WQCivgO/rcEbbT3lHsnBZqtQNmloJ8ZOUdpaFuSkplrr8486XrKgL05SliGdjrGV6YFRQj2BcF7UigzwQFK7DkKfpeHAAA5/c+/pod5ek5QvZ5gGEe03Pu8ruwHZgftBW6tg2iKy63BHXmykpNw9PRj/c9qX+YM3xQ6kHpGLyQM7zo+A6HGfKKLDiUJgJ2OH8+jEKZ5oai2mb4TdRRiH72ShbOvka0pAUa12+9iD0agUr4gwDfTwCsuv4kwez2E62RFHwKsnXBgoTY2hIqzH8hWKf1H4JvSR+DbN/R808AAAD//1qh4Z8=" } From 6da14cc361f6f38e79eff12530e0da8a751317d3 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Mon, 8 Apr 2024 13:02:24 +0300 Subject: [PATCH 101/313] [CI Migration] x-pack heartbeat pipeline improvements (#38734) * Replace comment with skip This commit replaces the commented-out steps by using the Buildkite skip field. This way, the skipped step will show in the UI with the corresponding ticket to better help surface steps that have not yet been migrated. Signed-off-by: Alexandros Sapranidis --- .../generate_xpack_heartbeat_pipeline.sh | 104 ++++++++---------- .../generate_xpack_packetbeat_pipeline.sh | 52 ++++----- 2 files changed, 72 insertions(+), 84 deletions(-) diff --git a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh index bec8e9bf96d..f940789abfe 100755 --- a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh @@ -9,9 +9,7 @@ pipelineName="pipeline.xpack-heartbeat-dynamic.yml" echo "Add the mandatory and extended tests without additional conditions into the pipeline" if are_conditions_met_mandatory_tests; then cat > $pipelineName <<- YAML - steps: - - group: "Mandatory Tests" key: "mandatory-tests" steps: @@ -22,6 +20,7 @@ steps: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: @@ -42,59 +41,51 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Go Integration Tests" -# ## TODO: there are windows test failures already reported -# ## https://github.com/elastic/beats/issues/23957 and https://github.com/elastic/beats/issues/23958 -# ## waiting for being fixed. - -# - label: ":windows: Windows Unit Tests - {{matrix.image}}" -# command: -# - "Set-Location -Path $BEATS_PROJECT_NAME" -# - "New-Item -ItemType Directory -Force -Path 'build'" -# - "mage unitTest" -# key: "mandatory-win-unit-tests" -# agents: -# provider: "gcp" -# image: "{{matrix.image}}" -# machineType: "${GCP_WIN_MACHINE_TYPE}" -# disk_size: 100 -# disk_type: "pd-ssd" -# matrix: -# setup: -# image: -# - "${IMAGE_WIN_2016}" -# - "${IMAGE_WIN_2022}" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" - -# ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - -# - group: "Extended Windows Tests" -# key: "extended-win-tests" -# steps: - -# - label: ":windows: Windows Unit Tests - {{matrix.image}}" -# command: -# - "Set-Location -Path $BEATS_PROJECT_NAME" -# - "New-Item -ItemType Directory -Force -Path 'build'" -# - "mage unitTest" -# key: "extended-win-unit-tests" -# agents: -# provider: "gcp" -# image: "{{matrix.image}}" -# machineType: "${GCP_WIN_MACHINE_TYPE}" -# disk_size: 100 -# disk_type: "pd-ssd" -# matrix: -# setup: -# image: -# - "${IMAGE_WIN_10}" -# - "${IMAGE_WIN_11}" -# - "${IMAGE_WIN_2019}" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + skip: "see elastic/beats#23957 and elastic/beats#23958" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_2016}" + - "${IMAGE_WIN_2022}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + - group: "Extended Windows Tests" ## TODO: this condition will be changed in the Phase 3 + key: "extended-win-tests" + steps: + - label: ":windows: Windows Unit Tests - {{matrix.image}}" + skip: "see elastic/beats#23957 and elastic/beats#23958" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-unit-tests" + agents: + provider: "gcp" + image: "{{matrix.image}}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + matrix: + setup: + image: + - "${IMAGE_WIN_10}" + - "${IMAGE_WIN_11}" + - "${IMAGE_WIN_2019}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" YAML else echo "The conditions don't match to requirements for generating pipeline steps." @@ -103,11 +94,9 @@ fi if are_conditions_met_macos_tests; then cat >> $pipelineName <<- YAML - - group: "Extended Tests" key: "extended-tests" steps: - - label: ":mac: MacOS Unit Tests" key: "extended-macos-unit-tests" command: ".buildkite/scripts/unit_tests.sh" @@ -127,7 +116,6 @@ fi echo "Check and add the Packaging into the pipeline" if are_conditions_met_packaging; then cat >> $pipelineName <<- YAML - - wait: ~ depends_on: - step: "mandatory-tests" @@ -169,7 +157,7 @@ YAML fi echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P +yq . -P -e $pipelineName || (echo "Yaml formatting error, below is the YAML"; cat $pipelineName; exit 1) echo "--- Loading dynamic steps" buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh index c29b6c5d9bc..0655aac059c 100644 --- a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh @@ -82,19 +82,19 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" - ## TODO: uncomment when the issue https://github.com/elastic/beats/issues/38142 is solved - # - label: ":windows: Windows 2022 System Tests" - # key: "mandatory-win-2022-system-tests" - # command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" - # agents: - # provider: "gcp" - # image: "${IMAGE_WIN_2022}" - # machineType: "${GCP_WIN_MACHINE_TYPE}" - # disk_size: 100 - # disk_type: "pd-ssd" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" + - label: ":windows: Windows 2022 System Tests" + skip: "see https://github.com/elastic/beats/issues/38142" + key: "mandatory-win-2022-system-tests" + command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h @@ -126,19 +126,19 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" - ## TODO: uncomment when the issue https://github.com/elastic/beats/issues/38142 is solved - # - label: ":windows: Windows 10 System Tests" - # key: "extended-win-10-system-tests" - # command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" - # agents: - # provider: "gcp" - # image: "${IMAGE_WIN_10}" - # machineType: "${GCP_WIN_MACHINE_TYPE}" - # disk_size: 100 - # disk_type: "pd-ssd" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" + - label: ":windows: Windows 10 System Tests" + skip: "see https://github.com/elastic/beats/issues/38142" + key: "extended-win-10-system-tests" + command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" YAML else From 5947565307e3e034a9b5aaa8868a83dc6dafdbee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constan=C3=A7a=20Manteigas?= <113898685+constanca-m@users.noreply.github.com> Date: Mon, 8 Apr 2024 12:27:57 +0200 Subject: [PATCH 102/313] [Metricbeat][Autodiscover Kubernetes] Fix multiple instances reporting same metrics (#38471) * Fix event id Signed-off-by: constanca * Update changelog Signed-off-by: constanca * Update libbeat/autodiscover/providers/kubernetes/kubernetes.go Co-authored-by: Giuseppe Santoro * Update libbeat/autodiscover/providers/kubernetes/kubernetes.go Co-authored-by: Giuseppe Santoro * add space to log line Signed-off-by: constanca * change log.debug order Signed-off-by: constanca * - run leader elector until context is cancelled - add unit tests Signed-off-by: constanca * fix lint errors Signed-off-by: constanca * mage check Signed-off-by: constanca * use assert instead of require Signed-off-by: constanca * Update changelog Signed-off-by: constanca * Update changelog Signed-off-by: constanca * Add test comments Signed-off-by: constanca * Update docs Signed-off-by: constanca --------- Signed-off-by: constanca Co-authored-by: Giuseppe Santoro --- CHANGELOG-developer.next.asciidoc | 1 + CHANGELOG.next.asciidoc | 1 + .../providers/kubernetes/config.go | 10 +- .../providers/kubernetes/config_test.go | 52 +++- .../providers/kubernetes/kubernetes.go | 38 ++- .../providers/kubernetes/kubernetes_test.go | 236 ++++++++++++++++++ libbeat/docs/shared-autodiscover.asciidoc | 3 + 7 files changed, 326 insertions(+), 15 deletions(-) create mode 100644 libbeat/autodiscover/providers/kubernetes/kubernetes_test.go diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 7434cd62fec..8b0b0ab724f 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -69,6 +69,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. ==== Bugfixes +- Fix multiple metricbeat instances reporting same metrics when using autodiscover with provider kubernetes, and ensure leader elector is always running in autodiscover mode.{pull}38471[38471] - Fix how Prometheus histograms are calculated when percentiles are provide.{pull}36537[36537] - Stop using `mage:import` in community beats. This was ignoring the vendorized beats directory for some mage targets, using the code available in GOPATH, this causes inconsistencies and compilation problems if the version of the code in the GOPATH is different to the vendored one. Use of `mage:import` will continue to be unsupported in custom beats till beats is migrated to go modules, or mage supports vendored dependencies. {issue}13998[13998] {pull}14162[14162] - Metricbeat module builders call host parser only once when instantiating light modules. {pull}20149[20149] diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 70c129b8697..39b96748ce4 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -212,6 +212,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Metricbeat* +- Add new fields to configure the lease duration, retry and renew when using leader elector with kubernetes autodiscover.{pull}38471[38471] - Add per-thread metrics to system_summary {pull}33614[33614] - Add GCP CloudSQL metadata {pull}33066[33066] - Add GCP Carbon Footprint metricbeat data {pull}34820[34820] diff --git a/libbeat/autodiscover/providers/kubernetes/config.go b/libbeat/autodiscover/providers/kubernetes/config.go index b7b055509ba..760d181ae66 100644 --- a/libbeat/autodiscover/providers/kubernetes/config.go +++ b/libbeat/autodiscover/providers/kubernetes/config.go @@ -44,9 +44,14 @@ type Config struct { // Scope can be either node or cluster. Scope string `config:"scope"` Resource string `config:"resource"` + // Unique identifies if this provider enables its templates only when it is elected as leader in a k8s cluster Unique bool `config:"unique"` LeaderLease string `config:"leader_lease"` + //Parameters to configure election process + LeaseDuration time.Duration `config:"leader_leaseduration"` + RenewDeadline time.Duration `config:"leader_renewdeadline"` + RetryPeriod time.Duration `config:"leader_retryperiod"` Prefix string `config:"prefix"` Hints *config.C `config:"hints"` @@ -57,7 +62,7 @@ type Config struct { AddResourceMetadata *metadata.AddResourceMetadataConfig `config:"add_resource_metadata"` } -// Public variable, so specific beats (as Filebeat) can set a different cleanup timeout if they need it. +// DefaultCleanupTimeout Public variable, so specific beats (as Filebeat) can set a different cleanup timeout if they need it. var DefaultCleanupTimeout time.Duration = 0 func defaultConfig() *Config { @@ -68,6 +73,9 @@ func defaultConfig() *Config { Prefix: "co.elastic", Unique: false, AddResourceMetadata: metadata.GetDefaultResourceMetadataConfig(), + LeaseDuration: 15 * time.Second, + RenewDeadline: 10 * time.Second, + RetryPeriod: 2 * time.Second, } } diff --git a/libbeat/autodiscover/providers/kubernetes/config_test.go b/libbeat/autodiscover/providers/kubernetes/config_test.go index 710f69785bc..947cccda4c9 100644 --- a/libbeat/autodiscover/providers/kubernetes/config_test.go +++ b/libbeat/autodiscover/providers/kubernetes/config_test.go @@ -31,7 +31,8 @@ import ( ) func TestConfigWithCustomBuilders(t *testing.T) { - autodiscover.Registry.AddBuilder("mock", newMockBuilder) + err := autodiscover.Registry.AddBuilder("mock", newMockBuilder) + assert.NoError(t, err) cfg := mapstr.M{ "hints.enabled": false, @@ -44,13 +45,15 @@ func TestConfigWithCustomBuilders(t *testing.T) { config := conf.MustNewConfigFrom(&cfg) c := defaultConfig() - err := config.Unpack(&c) + err = config.Unpack(&c) assert.NoError(t, err) cfg1 := mapstr.M{ "hints.enabled": false, } config, err = conf.NewConfigFrom(&cfg1) + assert.NoError(t, err) + c = defaultConfig() err = config.Unpack(&c) assert.Error(t, err) @@ -72,6 +75,51 @@ func TestConfigWithIncorrectScope(t *testing.T) { assert.Equal(t, "cluster", c.Scope) } +func TestConfigLeaseFields(t *testing.T) { + cfg := mapstr.M{ + "scope": "cluster", + "unique": "true", + } + + tests := []struct { + LeaseDuration string + RenewDeadline string + RetryPeriod string + message string + }{ + { + LeaseDuration: "20seconds", + RenewDeadline: "15s", + RetryPeriod: "2s", + message: "incorrect lease duration, should be set to default", + }, + { + LeaseDuration: "20s", + RenewDeadline: "15minutes", + RetryPeriod: "2s", + message: "incorrect renew deadline, should be set to default", + }, + { + LeaseDuration: "20s", + RenewDeadline: "15s", + RetryPeriod: "2hrs", + message: "incorrect retry period, should be set to default", + }, + } + + for _, test := range tests { + cfg["leader_leaseduration"] = test.LeaseDuration + cfg["leader_renewdeadline"] = test.RenewDeadline + cfg["leader_retryperiod"] = test.RetryPeriod + + config := conf.MustNewConfigFrom(&cfg) + + c := defaultConfig() + err := config.Unpack(&c) + assert.Errorf(t, err, test.message) + } +} + type mockBuilder struct { } diff --git a/libbeat/autodiscover/providers/kubernetes/kubernetes.go b/libbeat/autodiscover/providers/kubernetes/kubernetes.go index 794d4dcb839..1ee4d01a06c 100644 --- a/libbeat/autodiscover/providers/kubernetes/kubernetes.go +++ b/libbeat/autodiscover/providers/kubernetes/kubernetes.go @@ -279,7 +279,9 @@ func NewLeaderElectionManager( Name: cfg.LeaderLease, Namespace: ns, } - metaUID := lease.GetObjectMeta().GetUID() + + var eventID string + leaseId := lease.Name + "-" + lease.Namespace lem.leaderElection = leaderelection.LeaderElectionConfig{ Lock: &resourcelock.LeaseLock{ LeaseMeta: lease, @@ -289,18 +291,17 @@ func NewLeaderElectionManager( }, }, ReleaseOnCancel: true, - LeaseDuration: 15 * time.Second, - RenewDeadline: 10 * time.Second, - RetryPeriod: 2 * time.Second, + LeaseDuration: cfg.LeaseDuration, + RenewDeadline: cfg.RenewDeadline, + RetryPeriod: cfg.RetryPeriod, Callbacks: leaderelection.LeaderCallbacks{ OnStartedLeading: func(ctx context.Context) { - logger.Debugf("leader election lock GAINED, id %v", id) - eventID := fmt.Sprintf("%v-%v", metaUID, time.Now().UnixNano()) + eventID = fmt.Sprintf("%v-%v", leaseId, time.Now().UnixNano()) + logger.Debugf("leader election lock GAINED, holder: %v, eventID: %v", id, eventID) startLeading(uuid.String(), eventID) }, OnStoppedLeading: func() { - logger.Debugf("leader election lock LOST, id %v", id) - eventID := fmt.Sprintf("%v-%v", metaUID, time.Now().UnixNano()) + logger.Debugf("leader election lock LOST, holder: %v, eventID: %v", id, eventID) stopLeading(uuid.String(), eventID) }, }, @@ -329,7 +330,7 @@ func (p *eventerManager) GenerateHints(event bus.Event) bus.Event { func (p *leaderElectionManager) Start() { ctx, cancel := context.WithCancel(context.TODO()) p.cancelLeaderElection = cancel - p.startLeaderElector(ctx, p.leaderElection) + p.startLeaderElectorIndefinitely(ctx, p.leaderElection) } // Stop signals the stop channel to force the leader election loop routine to stop. @@ -344,14 +345,27 @@ func (p *leaderElectionManager) GenerateHints(event bus.Event) bus.Event { return event } -// startLeaderElector starts a Leader Elector in the background with the provided config -func (p *leaderElectionManager) startLeaderElector(ctx context.Context, lec leaderelection.LeaderElectionConfig) { +// startLeaderElectorIndefinitely starts a Leader Elector in the background with the provided config. +// If this instance gets the lease lock and later loses it, we run the leader elector again. +func (p *leaderElectionManager) startLeaderElectorIndefinitely(ctx context.Context, lec leaderelection.LeaderElectionConfig) { le, err := leaderelection.NewLeaderElector(lec) if err != nil { p.logger.Errorf("error while creating Leader Elector: %w", err) } p.logger.Debugf("Starting Leader Elector") - go le.Run(ctx) + + go func() { + for { + le.Run(ctx) + select { + case <-ctx.Done(): + return + default: + // Run returned because the lease was lost. Run the leader elector again, so this instance + // is still a candidate to get the lease. + } + } + }() } func ShouldPut(event mapstr.M, field string, value interface{}, logger *logp.Logger) { diff --git a/libbeat/autodiscover/providers/kubernetes/kubernetes_test.go b/libbeat/autodiscover/providers/kubernetes/kubernetes_test.go new file mode 100644 index 00000000000..b767d87be04 --- /dev/null +++ b/libbeat/autodiscover/providers/kubernetes/kubernetes_test.go @@ -0,0 +1,236 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package kubernetes + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/gofrs/uuid" + "github.com/stretchr/testify/require" + v1 "k8s.io/api/coordination/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" + k8sfake "k8s.io/client-go/kubernetes/fake" + + "github.com/elastic/elastic-agent-libs/logp" +) + +const namespace = "default" +const leaseName = "metricbeat-lease-test" + +// createLease creates a new lease resource +func createLease() *v1.Lease { + lease := &v1.Lease{ + ObjectMeta: metav1.ObjectMeta{ + Name: leaseName, + Namespace: namespace, + }, + } + return lease +} + +// applyLease applies the lease +func applyLease(client kubernetes.Interface, lease *v1.Lease, firstTime bool) error { + var err error + if firstTime { + _, err = client.CoordinationV1().Leases(namespace).Create(context.Background(), lease, metav1.CreateOptions{}) + return err + } + _, err = client.CoordinationV1().Leases(namespace).Update(context.Background(), lease, metav1.UpdateOptions{}) + return err +} + +// TestLeaseConfigurableFields tests if the leader election is using the fields given in the configuration +func TestLeaseConfigurableFields(t *testing.T) { + client := k8sfake.NewSimpleClientset() + + uuid, err := uuid.NewV4() + require.NoError(t, err) + + startLeadingFunc := func(uuid string, eventID string) {} + stopLeadingFunc := func(uuid string, eventID string) {} + logger := logp.NewLogger("kubernetes-test") + + // the number of leader election managers corresponds to the number of nodes in a cluster with metricbeat + var leaseDuration time.Duration + var retryPeriod time.Duration + var renewDeadline time.Duration + + cfg := Config{ + Node: "node-1", + LeaderLease: leaseName, + LeaseDuration: 30 * time.Second, + RenewDeadline: 25 * time.Second, + RetryPeriod: 10 * time.Second, + } + + le, err := NewLeaderElectionManager(uuid, &cfg, client, startLeadingFunc, stopLeadingFunc, logger) + require.NoError(t, err) + + leaseDuration = le.(*leaderElectionManager).leaderElection.LeaseDuration + retryPeriod = le.(*leaderElectionManager).leaderElection.RetryPeriod + renewDeadline = le.(*leaderElectionManager).leaderElection.RenewDeadline + + require.Equalf(t, cfg.LeaseDuration, leaseDuration, "lease duration should be the same as the one provided in the configuration.") + require.Equalf(t, cfg.RetryPeriod, retryPeriod, "retry period should be the same as the one provided in the configuration.") + require.Equalf(t, cfg.RenewDeadline, renewDeadline, "renew deadline should be the same as the one provided in the configuration.") +} + +// TestNewLeaderElectionManager will test the leader elector. +// This tests aims to check two things: +// 1. The event id used to stop the leader is the same as the event id that was used to start it. +// 2. The leader elector runs again after it stops. The only way for it to stop, is to stop the event manager as well - this +// could be caused by the provider stopping, for example. +func TestNewLeaderElectionManager(t *testing.T) { + client := k8sfake.NewSimpleClientset() + + lease := createLease() + // create the lease that leader election will be using + err := applyLease(client, lease, true) + require.NoError(t, err) + + uuid, err := uuid.NewV4() + require.NoError(t, err) + + waitForNewLeader := make(chan string) + waitForLosingLeader := make(chan string) + + startLeadingFunc := func(uuid string, eventID string) { + waitForNewLeader <- eventID + } + stopLeadingFunc := func(uuid string, eventID string) { + waitForLosingLeader <- eventID + } + logger := logp.NewLogger("kubernetes-test") + + cfg := Config{ + LeaderLease: leaseName, + RenewDeadline: 30 * time.Millisecond, + RetryPeriod: 10 * time.Millisecond, + LeaseDuration: 1 * time.Second, + } + + // the number of leader election managers corresponds to the number of nodes in a cluster with metricbeat + numberNodes := 2 + les := make([]*EventManager, numberNodes) + nodeNames := make([]string, numberNodes) + var leaseDuration time.Duration + var retryPeriod time.Duration + for i := 0; i < numberNodes; i++ { + nodeName := "node-" + fmt.Sprint(i) + nodeNames[i] = nodeName + cfg.Node = nodeName + + le, err := NewLeaderElectionManager(uuid, &cfg, client, startLeadingFunc, stopLeadingFunc, logger) + require.NoError(t, err) + + leaseDuration = le.(*leaderElectionManager).leaderElection.LeaseDuration + retryPeriod = le.(*leaderElectionManager).leaderElection.RetryPeriod + + les[i] = &le + } + + for _, le := range les { + (*le).Start() + } + + // It is possible that startLeading is triggered more than one time before stopLeading is called. + // Example of a situation like this: + // 1. node-1 is elected as leader, and startLeading already executed. + // 2. node-1 loses the leader lock, and stopLeading is starting to get executed. + // 3. node-2 calls startLeading before the execution of two ends. + // This situation was observed in this unit test. So to check we are receiving correct event ids and without + // knowing the right order, we have to save the ones we received from startLeading in a map. + expectedLoosingEventIds := make(map[string]bool) + + finished := make(chan int) + endedRequests := make(chan int) + + checkLoosingLeaders := func(eventId string) { + _, exists := expectedLoosingEventIds[eventId] + if exists { + t.Fatalf("The new leader produced the same event id as the previous one.") + } + expectedLoosingEventIds[eventId] = true + + // wait for loosing leader + loosingEventId := <-waitForLosingLeader + _, exists = expectedLoosingEventIds[loosingEventId] + if !exists { + t.Fatalf("The loosing leader used an unexpected event id %s.", eventId) + } + } + + go func() { + // wait for first leader + newEventId := <-waitForNewLeader + expectedLoosingEventIds[newEventId] = true + + // every time there is a new leader, we should check the event id emitted from the stopLeading + waitForRenewals: + for { + select { + case eventId := <-waitForNewLeader: + checkLoosingLeaders(eventId) + case <-endedRequests: + // once we receive something in this channel, we know the lease is no longer being modified, + // so we can finish this goroutine + finished <- 1 + break waitForRenewals + } + } + }() + + renewals := 5 + // cause lease renewals + for i := 0; i < renewals; i++ { + // Force the lease to be applied again, so a new leader is elected. + newHolder := "does-not-matter-" + fmt.Sprint(i) + lease.Spec.HolderIdentity = &newHolder + err = applyLease(client, lease, false) + require.NoError(t, err) + + // wait some time to ensure lease renewal + <-time.After((retryPeriod + leaseDuration) * 2) + } + endedRequests <- 1 + + <-finished + + // Wait for some to ensure we are not having lease fail renewal, and there is no new leader. + <-time.After((retryPeriod + leaseDuration) * 2) + + // waitForNewLeader channel should be empty, because we removed it just before ending the for cycle. + require.Equalf(t, 0, len(waitForNewLeader), "waitForNewLeader channel should be empty.") + + // waitForLosingLeader channel should be empty, because the last leader did not lose the lease lock yet. + require.Equalf(t, 0, len(waitForLosingLeader), "waitForLosingLeader channel should be empty.") + + for _, le := range les { + (*le).Stop() + } + + // When the context gets cancelled, stopLeading is always called. + // Let's check that the leaders electors are correctly stopping. + for i := 0; i < numberNodes; i++ { + <-waitForLosingLeader + } +} diff --git a/libbeat/docs/shared-autodiscover.asciidoc b/libbeat/docs/shared-autodiscover.asciidoc index e27c055cc95..1e1ea567b7c 100644 --- a/libbeat/docs/shared-autodiscover.asciidoc +++ b/libbeat/docs/shared-autodiscover.asciidoc @@ -202,6 +202,9 @@ Example: One can monitor the status of the lease with `kubectl describe lease beats-cluster-leader`. Different Beats that refer to the same leader lease will be competitors in holding the lease and only one will be elected as leader each time. +`leader_leaseduration`:: (Optional) Duration that non-leader candidates will wait to force acquire the lease leadership. Defaults to `15s`. +`leader_renewdeadline`:: (Optional) Duration that the leader will retry refreshing its leadership before giving up. Defaults to `10s`. +`leader_retryperiod`:: (Optional) Duration that the metricbeat instances running to acquire the lease should wait between tries of actions. Defaults to `2s`. Configuration templates can contain variables from the autodiscover event. These variables can be accessed under the `data` namespace, e.g. to access Pod IP: `${data.kubernetes.pod.ip}`. From 0ca93e17624e7d2333f6712b51991a7886dbe36a Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Mon, 8 Apr 2024 13:38:50 -0400 Subject: [PATCH 103/313] chore: Update snapshot.yml (#38764) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index bc573ee0983..cd88a7a5374 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-e399a313-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-34b4df0a-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-e399a313-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-34b4df0a-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-e399a313-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-34b4df0a-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 5b0b68240dcf277c728885a793fb84bb33a58eb6 Mon Sep 17 00:00:00 2001 From: Mattia Meleleo Date: Mon, 8 Apr 2024 19:40:22 +0200 Subject: [PATCH 104/313] [Auditbeat] fim(ebpf): enrich file events with container id (#38328) * fim(ebpf): enrich file events with container id * fix(fim/ebpf): make container id event field ecs-compliant --------- Co-authored-by: Panos Koutsovasilis --- CHANGELOG.next.asciidoc | 1 + NOTICE.txt | 4 +- auditbeat/module/file_integrity/event.go | 23 +++++---- .../module/file_integrity/event_linux.go | 49 +++++++++++++------ .../module/file_integrity/event_linux_test.go | 9 ++-- go.mod | 2 +- go.sum | 4 +- 7 files changed, 61 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 39b96748ce4..377c3c9f133 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -149,6 +149,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add linux capabilities to processes in the system/process. {pull}37453[37453] - Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] - Add process data to file events (Linux only, eBPF backend). {pull}38199[38199] +- Add container id to file events (Linux only, eBPF backend). {pull}38328[38328] *Filebeat* diff --git a/NOTICE.txt b/NOTICE.txt index f846edfc9ec..97385dbd48d 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -12287,11 +12287,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/elastic/ebpfevents -Version: v0.5.0 +Version: v0.6.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/ebpfevents@v0.5.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/ebpfevents@v0.6.0/LICENSE.txt: The https://github.com/elastic/ebpfevents repository contains source code under various licenses: diff --git a/auditbeat/module/file_integrity/event.go b/auditbeat/module/file_integrity/event.go index b282aaaf3d2..63463acbe0d 100644 --- a/auditbeat/module/file_integrity/event.go +++ b/auditbeat/module/file_integrity/event.go @@ -126,15 +126,16 @@ func (d Digest) MarshalText() ([]byte, error) { return []byte(d.String()), nil } // Event describes the filesystem change and includes metadata about the file. type Event struct { - Timestamp time.Time `json:"timestamp"` // Time of event. - Path string `json:"path"` // The path associated with the event. - TargetPath string `json:"target_path,omitempty"` // Target path for symlinks. - Info *Metadata `json:"info"` // File metadata (if the file exists). - Source Source `json:"source"` // Source of the event. - Action Action `json:"action"` // Action (like created, updated). - Hashes map[HashType]Digest `json:"hash,omitempty"` // File hashes. - ParserResults mapstr.M `json:"file,omitempty"` // Results from running file parsers. - Process *Process `json:"process,omitempty"` // Process data. Available only on Linux when using the eBPF backend. + Timestamp time.Time `json:"timestamp"` // Time of event. + Path string `json:"path"` // The path associated with the event. + TargetPath string `json:"target_path,omitempty"` // Target path for symlinks. + Info *Metadata `json:"info"` // File metadata (if the file exists). + Source Source `json:"source"` // Source of the event. + Action Action `json:"action"` // Action (like created, updated). + Hashes map[HashType]Digest `json:"hash,omitempty"` // File hashes. + ParserResults mapstr.M `json:"file,omitempty"` // Results from running file parsers. + Process *Process `json:"process,omitempty"` // Process data. Available only on Linux when using the eBPF backend. + ContainerID string `json:"container_id,omitempty"` // Unique container ID. Available only on Linux when using the eBPF backend. // Metadata rtt time.Duration // Time taken to collect the info. @@ -400,6 +401,10 @@ func buildMetricbeatEvent(e *Event, existedBefore bool) mb.Event { out.MetricSetFields.Put("process", process) } + if e.ContainerID != "" { + out.MetricSetFields.Put("container.id", e.ContainerID) + } + if len(e.Hashes) > 0 { hashes := make(mapstr.M, len(e.Hashes)) for hashType, digest := range e.Hashes { diff --git a/auditbeat/module/file_integrity/event_linux.go b/auditbeat/module/file_integrity/event_linux.go index c0eb2d57b15..3f849e359b1 100644 --- a/auditbeat/module/file_integrity/event_linux.go +++ b/auditbeat/module/file_integrity/event_linux.go @@ -23,6 +23,7 @@ import ( "os" "os/user" "path/filepath" + "regexp" "strconv" "time" @@ -30,6 +31,9 @@ import ( "github.com/elastic/ebpfevents" ) +// cgroupRegex captures 64-character lowercase hexadecimal container IDs found in cgroup paths. +var cgroupRegex = regexp.MustCompile(`[-/]([0-9a-f]{64})(\.scope)?$`) + // NewEventFromEbpfEvent creates a new Event from an ebpfevents.Event. func NewEventFromEbpfEvent( ee ebpfevents.Event, @@ -39,12 +43,12 @@ func NewEventFromEbpfEvent( isExcludedPath func(string) bool, ) (Event, bool) { var ( - path, target string - action Action - metadata Metadata - process Process - err error - errors []error + path, target, cgroupPath string + action Action + metadata Metadata + process Process + err error + errors []error ) switch ee.Type { case ebpfevents.EventTypeFileCreate: @@ -67,6 +71,8 @@ func NewEventFromEbpfEvent( if err != nil { errors = append(errors, err) } + + cgroupPath = fileCreateEvent.CgroupPath case ebpfevents.EventTypeFileRename: action = Moved @@ -87,6 +93,8 @@ func NewEventFromEbpfEvent( if err != nil { errors = append(errors, err) } + + cgroupPath = fileRenameEvent.CgroupPath case ebpfevents.EventTypeFileDelete: action = Deleted @@ -102,6 +110,8 @@ func NewEventFromEbpfEvent( if err != nil { errors = append(errors, err) } + + cgroupPath = fileDeleteEvent.CgroupPath case ebpfevents.EventTypeFileModify: fileModifyEvent := ee.Body.(*ebpfevents.FileModify) @@ -128,17 +138,20 @@ func NewEventFromEbpfEvent( if err != nil { errors = append(errors, err) } + + cgroupPath = fileModifyEvent.CgroupPath } event := Event{ - Timestamp: time.Now().UTC(), - Path: path, - TargetPath: target, - Info: &metadata, - Source: SourceEBPF, - Action: action, - Process: &process, - errors: errors, + Timestamp: time.Now().UTC(), + Path: path, + TargetPath: target, + Info: &metadata, + Source: SourceEBPF, + Action: action, + Process: &process, + ContainerID: containerIDFromCgroupPath(cgroupPath), + errors: errors, } if event.Action == Deleted { @@ -158,6 +171,14 @@ func NewEventFromEbpfEvent( return event, true } +func containerIDFromCgroupPath(path string) string { + matches := cgroupRegex.FindStringSubmatch(path) + if len(matches) > 1 { + return matches[1] + } + return "" +} + func metadataFromFileCreate(evt *ebpfevents.FileCreate) (Metadata, error) { var md Metadata fillExtendedAttributes(&md, evt.Path) diff --git a/auditbeat/module/file_integrity/event_linux_test.go b/auditbeat/module/file_integrity/event_linux_test.go index beac9878909..fec2e6f70a6 100644 --- a/auditbeat/module/file_integrity/event_linux_test.go +++ b/auditbeat/module/file_integrity/event_linux_test.go @@ -29,6 +29,7 @@ import ( ) func TestNewEventFromEbpfEvent(t *testing.T) { + containerID := "d12fe576354a1805165303a4e34a69e5fe8db791ceb7e545f17811d1fbfba68f" ebpfEvent := ebpfevents.Event{ Header: ebpfevents.Header{ Type: ebpfevents.EventTypeFileCreate, @@ -52,6 +53,7 @@ func TestNewEventFromEbpfEvent(t *testing.T) { Suid: 5, Sgid: 6, }, + CgroupPath: "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod123.slice/cri-containerd-" + containerID + ".scope", }, } event, ok := NewEventFromEbpfEvent( @@ -72,9 +74,10 @@ func TestNewEventFromEbpfEvent(t *testing.T) { Group: event.Info.Group, Mode: os.FileMode(0o644), }, - Process: event.Process, // 1:1 copy this as it changes on every machine - Source: SourceEBPF, - errors: nil, + Process: event.Process, // 1:1 copy this as it changes on every machine + ContainerID: containerID, + Source: SourceEBPF, + errors: nil, } event.Timestamp = expectedEvent.Timestamp diff --git a/go.mod b/go.mod index 76f6f27c3ba..8d635c7fc96 100644 --- a/go.mod +++ b/go.mod @@ -201,7 +201,7 @@ require ( github.com/aws/smithy-go v1.13.5 github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5 github.com/elastic/bayeux v1.0.5 - github.com/elastic/ebpfevents v0.5.0 + github.com/elastic/ebpfevents v0.6.0 github.com/elastic/elastic-agent-autodiscover v0.6.8 github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 diff --git a/go.sum b/go.sum index 7900b675836..e16a2e8839b 100644 --- a/go.sum +++ b/go.sum @@ -672,8 +672,8 @@ github.com/elastic/bayeux v1.0.5 h1:UceFq01ipmT3S8DzFK+uVAkbCdiPR0Bqei8qIGmUeY0= github.com/elastic/bayeux v1.0.5/go.mod h1:CSI4iP7qeo5MMlkznGvYKftp8M7qqP/3nzmVZoXHY68= github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 h1:lnDkqiRFKm0rxdljqrj3lotWinO9+jFmeDXIC4gvIQs= github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3/go.mod h1:aPqzac6AYkipvp4hufTyMj5PDIphF3+At8zr7r51xjY= -github.com/elastic/ebpfevents v0.5.0 h1:QkyMAYWo3fXFbYtXAXU8sZu2SQ4LXVYC6gLXIWXy02E= -github.com/elastic/ebpfevents v0.5.0/go.mod h1:ESG9gw7N+n5yCCMgdg1IIJENKWSmX7+X0Fi9GUs9nvU= +github.com/elastic/ebpfevents v0.6.0 h1:BrL3m7JFK7U6h2jkbk3xAWWs//IZnugCHEDds5u2v68= +github.com/elastic/ebpfevents v0.6.0/go.mod h1:ESG9gw7N+n5yCCMgdg1IIJENKWSmX7+X0Fi9GUs9nvU= github.com/elastic/elastic-agent-autodiscover v0.6.8 h1:BSXz+QwjZAEt08G+T3GDGl14Bh9a6zD8luNCvZut/b8= github.com/elastic/elastic-agent-autodiscover v0.6.8/go.mod h1:hFeFqneS2r4jD0/QzGkrNk0YVdN0JGh7lCWdsH7zcI4= github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= From 8efb36685ea9213a7f0f9ad583698cdf85394d3e Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Tue, 9 Apr 2024 07:54:04 +0200 Subject: [PATCH 105/313] Fix Filestream store GC, entries are now removed when they TTL expires (#38488) The resources from Filestream registry have a counter to indicate how many 'owners' have got a hold of that resource, this counter was not correctly decremented. Because it never reached zero, no entry was ever removed from the in-memory store and even though the store GC would run periodically, no resource could be removed. That caused the in-memory store to be ever growing and the `op: remove` never to be seen in the registry log file. This commit fixes this bug by correctly calling Released in every resource that is retained. --- CHANGELOG.next.asciidoc | 1 + .../internal/input-logfile/clean.go | 4 + .../internal/input-logfile/store.go | 2 + filebeat/tests/integration/store_test.go | 145 ++++++++++++++++++ libbeat/tests/integration/framework.go | 39 ++++- 5 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 filebeat/tests/integration/store_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 377c3c9f133..3b95d21f759 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -98,6 +98,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Rename `activity_guid` to `activity_id` in ETW input events to suit other Windows inputs. {pull}38530[38530] - Add missing provider registration and fix published entity for Active Directory entityanalytics provider. {pull}38645[38645] - Fix handling of un-parsed JSON in O365 module. {issue}37800[37800] {pull}38709[38709] +- Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] *Heartbeat* diff --git a/filebeat/input/filestream/internal/input-logfile/clean.go b/filebeat/input/filestream/internal/input-logfile/clean.go index a96f5529895..c87997a0afa 100644 --- a/filebeat/input/filestream/internal/input-logfile/clean.go +++ b/filebeat/input/filestream/internal/input-logfile/clean.go @@ -79,6 +79,10 @@ func gcStore(log *logp.Logger, started time.Time, store *store) { if err := gcClean(store, keys); err != nil { log.Errorf("Failed to remove all entries from the registry: %+v", err) } + + // The main reason for this log entry is to enable tests that want to observe + // if the resources are correctly removed from the store. + log.Debugf("%d entries removed", len(keys)) } // gcFind searches the store of resources that can be removed. A set of keys to delete is returned. diff --git a/filebeat/input/filestream/internal/input-logfile/store.go b/filebeat/input/filestream/internal/input-logfile/store.go index 2b5b272fbcc..024ca5c9bfd 100644 --- a/filebeat/input/filestream/internal/input-logfile/store.go +++ b/filebeat/input/filestream/internal/input-logfile/store.go @@ -335,6 +335,7 @@ func (s *store) updateMetadata(key string, meta interface{}) error { resource.cursorMeta = meta s.writeState(resource) + resource.Release() return nil } @@ -384,6 +385,7 @@ func (s *store) remove(key string) error { return fmt.Errorf("resource '%s' not found", key) } s.UpdateTTL(resource, 0) + resource.Release() return nil } diff --git a/filebeat/tests/integration/store_test.go b/filebeat/tests/integration/store_test.go new file mode 100644 index 00000000000..c3ddb1ca759 --- /dev/null +++ b/filebeat/tests/integration/store_test.go @@ -0,0 +1,145 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build integration + +package integration + +import ( + "bufio" + "encoding/json" + "fmt" + "os" + "path" + "path/filepath" + "testing" + "time" + + "github.com/elastic/beats/v7/libbeat/tests/integration" +) + +var testStoreCfg = ` +filebeat.inputs: + - type: filestream + id: test-clean-removed + enabled: true + clean_removed: true + close.on_state_change.inactive: 8s + ignore_older: 9s + prospector.scanner.check_interval: 1s + paths: + - %s + +filebeat.registry: + cleanup_interval: 5s + flush: 1s + +queue.mem: + flush.min_events: 8 + flush.timeout: 0.1s + +path.home: %s + +output.file: + path: ${path.home} + filename: "output-file" + rotate_every_kb: 10000 + +logging: + level: debug + selectors: + - input + - input.filestream +` + +func TestStore(t *testing.T) { + numLogFiles := 10 + filebeat := integration.NewBeat( + t, + "filebeat", + "../../filebeat.test", + ) + tempDir := filebeat.TempDir() + + // 1. Create some log files and write data to them + logsFolder := filepath.Join(tempDir, "logs") + if err := os.MkdirAll(logsFolder, 0755); err != nil { + t.Fatalf("could not create logs folder '%s': %s", logsFolder, err) + } + + for i := 0; i < numLogFiles; i++ { + logFile := path.Join(logsFolder, fmt.Sprintf("log-%d.log", i)) + integration.GenerateLogFile(t, logFile, 10, false) + } + logsFolderGlob := filepath.Join(logsFolder, "*") + filebeat.WriteConfigFile(fmt.Sprintf(testStoreCfg, logsFolderGlob, tempDir)) + + // 2. Ingest the file and stop Filebeat + filebeat.Start() + + for i := 0; i < numLogFiles; i++ { + // Files can be ingested out of order, so we cannot specify their path. + // There will be more than one log line per file, but that at least gives us + // some assurance the files were read + filebeat.WaitForLogs("Closing reader of filestream", 30*time.Second, "Filebeat did not finish reading the log file") + } + + // 3. Remove files so their state can be cleaned + if err := os.RemoveAll(logsFolder); err != nil { + t.Fatalf("could not remove logs folder '%s': %s", logsFolder, err) + } + filebeat.WaitForLogs(fmt.Sprintf("%d entries removed", numLogFiles), 30*time.Second, "store entries not removed") + filebeat.Stop() + + registryLogFile := filepath.Join(tempDir, "data/registry/filebeat/log.json") + readFilestreamRegistryLog(t, registryLogFile, "remove", 10) +} + +func readFilestreamRegistryLog(t *testing.T, path, op string, expectedCount int) { + file, err := os.Open(path) + if err != nil { + t.Fatalf("could not open file '%s': %s", path, err) + } + + s := bufio.NewScanner(file) + count := 0 + for s.Scan() { + line := s.Bytes() + + registryOp := struct { + Op string `json:"op"` + ID int `json:"id"` + }{} + + if err := json.Unmarshal(line, ®istryOp); err != nil { + t.Fatalf("could not read line '%s': %s", string(line), err) + } + + // Skips registry log entries that are not operation count + if registryOp.Op == "" { + continue + } + + if registryOp.Op == op { + count++ + } + } + + if count != expectedCount { + t.Errorf("expecting %d '%s' operations, got %d instead", expectedCount, op, count) + } +} diff --git a/libbeat/tests/integration/framework.go b/libbeat/tests/integration/framework.go index 9657fbaeaff..6017c63fd87 100644 --- a/libbeat/tests/integration/framework.go +++ b/libbeat/tests/integration/framework.go @@ -26,7 +26,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "net/http" "net/url" "os" @@ -115,6 +114,7 @@ func NewBeat(t *testing.T, beatName, binary string, args ...string) *BeatProc { "--path.logs", tempDir, "-E", "logging.to_files=true", "-E", "logging.files.rotateeverybytes=104857600", // About 100MB + "-E", "logging.files.rotateonstartup=false", }, args...), tempDir: tempDir, beatName: beatName, @@ -524,7 +524,7 @@ func (b *BeatProc) LoadMeta() (Meta, error) { } defer metaFile.Close() - metaBytes, err := ioutil.ReadAll(metaFile) + metaBytes, err := io.ReadAll(metaFile) require.NoError(b.t, err, "error reading meta file") err = json.Unmarshal(metaBytes, &m) require.NoError(b.t, err, "error unmarshalling meta data") @@ -685,3 +685,38 @@ func readLastNBytes(filename string, numBytes int64) ([]byte, error) { } return io.ReadAll(f) } + +// GenerateLogFile writes count lines to path, each line is 50 bytes. +// Each line contains the current time (RFC3339) and a counter +func GenerateLogFile(t *testing.T, path string, count int, append bool) { + var file *os.File + var err error + if !append { + file, err = os.Create(path) + if err != nil { + t.Fatalf("could not create file '%s': %s", path, err) + } + } else { + file, err = os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666) + if err != nil { + t.Fatalf("could not open or create file: '%s': %s", path, err) + } + } + + defer func() { + if err := file.Close(); err != nil { + t.Fatalf("could not close file: %s", err) + } + }() + defer func() { + if err := file.Sync(); err != nil { + t.Fatalf("could not sync file: %s", err) + } + }() + now := time.Now().Format(time.RFC3339) + for i := 0; i < count; i++ { + if _, err := fmt.Fprintf(file, "%s %13d\n", now, i); err != nil { + t.Fatalf("could not write line %d to file: %s", count+1, err) + } + } +} From 7c4db8f4e6980e69974ba7bf859a37789293e2bf Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Tue, 9 Apr 2024 10:03:01 -0600 Subject: [PATCH 106/313] [AWS] Fix rds field description aws.rds.cpu.total.pct (#38706) --- filebeat/docs/fields.asciidoc | 70 +++++++++++++++++++ metricbeat/docs/fields.asciidoc | 2 +- x-pack/metricbeat/module/aws/fields.go | 2 +- .../module/aws/rds/_meta/fields.yml | 2 +- 4 files changed, 73 insertions(+), 3 deletions(-) diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index 5b03cdfb0a9..0c897ca3b1e 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -111136,6 +111136,13 @@ type: keyword -- +*`o365.audit.Activity`*:: ++ +-- +type: keyword + +-- + *`o365.audit.Actor`*:: + -- @@ -111360,6 +111367,13 @@ type: object -- +*`o365.audit.Experience`*:: ++ +-- +type: keyword + +-- + *`o365.audit.ExtendedProperties.*`*:: + -- @@ -111605,6 +111619,20 @@ type: keyword -- +*`o365.audit.ObjectDisplayName`*:: ++ +-- +type: keyword + +-- + +*`o365.audit.ObjectType`*:: ++ +-- +type: keyword + +-- + *`o365.audit.Operation`*:: + -- @@ -111612,6 +111640,20 @@ type: keyword -- +*`o365.audit.OperationId`*:: ++ +-- +type: keyword + +-- + +*`o365.audit.OperationProperties`*:: ++ +-- +type: object + +-- + *`o365.audit.OrganizationId`*:: + -- @@ -111661,6 +111703,13 @@ type: keyword -- +*`o365.audit.RequestId`*:: ++ +-- +type: keyword + +-- + *`o365.audit.ResultStatus`*:: + -- @@ -111801,6 +111850,13 @@ type: keyword -- +*`o365.audit.Timestamp`*:: ++ +-- +type: keyword + +-- + *`o365.audit.UniqueSharingId`*:: + -- @@ -111857,6 +111913,20 @@ type: keyword -- +*`o365.audit.WorkspaceId`*:: ++ +-- +type: keyword + +-- + +*`o365.audit.WorkspaceName`*:: ++ +-- +type: keyword + +-- + *`o365.audit.YammerNetworkId`*:: + -- diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 6694528df13..a8434858115 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -3536,7 +3536,7 @@ format: percent *`aws.rds.cpu.total.pct`*:: + -- -The percentage of CPU utilization. +CPU utilization with value range from 0 to 1. type: scaled_float diff --git a/x-pack/metricbeat/module/aws/fields.go b/x-pack/metricbeat/module/aws/fields.go index 713690883f3..0af54980375 100644 --- a/x-pack/metricbeat/module/aws/fields.go +++ b/x-pack/metricbeat/module/aws/fields.go @@ -19,5 +19,5 @@ func init() { // AssetAws returns asset data. // This is the base64 encoded zlib format compressed contents of module/aws. func AssetAws() string { - return "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" + return "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" } diff --git a/x-pack/metricbeat/module/aws/rds/_meta/fields.yml b/x-pack/metricbeat/module/aws/rds/_meta/fields.yml index 79d1c20b3ab..d1e828e90d2 100644 --- a/x-pack/metricbeat/module/aws/rds/_meta/fields.yml +++ b/x-pack/metricbeat/module/aws/rds/_meta/fields.yml @@ -13,7 +13,7 @@ type: scaled_float format: percent description: > - The percentage of CPU utilization. + CPU utilization with value range from 0 to 1. - name: cpu.credit_usage type: long description: > From d0a3b457ec2423007bf55dbfa0234fad2bb5c20a Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Tue, 9 Apr 2024 21:43:41 +0200 Subject: [PATCH 107/313] Single pipeline entrypoint (#38783) * Single pipeline entrypoint * Fix indentations * Notifications --- .buildkite/auditbeat/auditbeat-pipeline.yml | 227 +++++++++++---- .buildkite/heartbeat/heartbeat-pipeline.yml | 123 ++++---- .buildkite/hooks/pre-command | 1 + .buildkite/pipeline.yml | 49 +++- .buildkite/pull-requests.json | 32 --- .buildkite/scripts/common.sh | 18 +- .../scripts/generate_auditbeat_pipeline.sh | 265 ------------------ 7 files changed, 275 insertions(+), 440 deletions(-) delete mode 100644 .buildkite/scripts/generate_auditbeat_pipeline.sh diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index edbb600e385..c88d6451953 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -2,12 +2,17 @@ name: "beats-auditbeat" env: + BEATS_PROJECT_NAME: "auditbeat" + + ASDF_MAGE_VERSION: 1.15.0 + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - BEATS_PROJECT_NAME: "auditbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" @@ -22,56 +27,174 @@ env: PACKAGING_ARM_PLATFORMS: "linux/arm64" PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - #Deps - ASDF_MAGE_VERSION: 1.15.0 +notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME" steps: - - input: "Input Parameters" - key: "run_auditbeat" - fields: - - select: "auditbeat - run_auditbeat" - key: "run_auditbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "auditbeat - run_auditbeat_macos_tests" - key: "run_auditbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "auditbeat - run_auditbeat_arm_tests" - key: "run_auditbeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "auditbeat - run_auditbeat_win_tests" - key: "run_auditbeat_win_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" - - - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic auditbeat pipeline" - key: "auditbeat-pipeline" - command: ".buildkite/scripts/generate_auditbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + - group: "Auditbeat Mandatory Testing" + key: "auditbeat-mandatory-tests" + + steps: + - label: ":ubuntu: Auditbeat Unit Tests" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":ubuntu: Auditbeat Unit Tests" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":rhel: Auditbeat Unit Tests" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_RHEL9}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":windows: Auditbeat Win-2016 Auditbeat Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":windows: Auditbeat Win-2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + + - label: ":linux: Auditbeat Crosscompile" + command: "make -C $BEATS_PROJECT_NAME crosscompile" + env: + GOX_FLAGS: "-arch amd64" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - group: "Auditbeat ARM Tests" + key: "auditbeat-extended-tests-arm" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + steps: + - label: ":arm: ARM64 Unit Tests" + key: "auditbeat-extended-arm64-unit-tests" + command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - group: "Heartbeat MacOS Extended" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: + - label: ":mac: MacOS Unit Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":mac: MacOS ARM Unit Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - group: "Auditbeat Windows Extended Testing" + key: "auditbeat-extended-tests-win" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ + steps: + - label: ":windows: Auditbeat Windows 2019 Unit Tests" + key: "auditbeat-extended-win-2019-unit-tests" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows: Auditbeat Windows 10 Unit Tests" + key: "auditbeat-extended-win-10-unit-tests" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - label: ":windows: Windows 11 Unit Tests" + key: "auditbeat-extended-win-11-unit-tests" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + + - group: "Auditbeat Packaging" + key: "auditbeat-packaging" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - "auditbeat-mandatory-tests" + steps: + - label: ":ubuntu: Auditbeat/Packaging Linux X86" + key: "auditbeat-package-linux-x86" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + SNAPSHOT: true + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - label: ":linux: Auditbeat/Packaging Linux ARM" + key: "auditbeat-package-linux-arm" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + SNAPSHOT: true + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index 9b1ea1984a7..d7425490421 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -2,6 +2,9 @@ env: BEATS_PROJECT_NAME: "heartbeat" + + ASDF_MAGE_VERSION: 1.15.0 + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" @@ -12,26 +15,22 @@ env: IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_MACOS_ARM: "generic-13-ventura-arm" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" - #Packaging - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - PACKAGING_ARM_PLATFORMS: "linux/arm64" +notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME" steps: - group: "Heartbeat Mandatory Testing" - key: "mandatory-tests" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat" || build.env("BUILDKITE_PULL_REQUEST") != "false" - + key: "heartbeat-mandatory-tests" steps: - label: ":ubuntu: Unit Tests" command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "Heartbeat: ubuntu/Unit Tests" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -42,9 +41,6 @@ steps: - label: ":rhel:-9 Unit Tests" command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "Heartbeat: rhel-9/Unit Tests" agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -58,12 +54,9 @@ steps: command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - notify: - - github_commit_status: - context: "Heartbeat: Windows 2016/Unit Tests" agents: provider: "gcp" - image: "${IMAGE_WIN_2016}" + image: "${IMAGE_WIN_2016}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_type: "pd-ssd" artifact_paths: @@ -75,9 +68,6 @@ steps: command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - notify: - - github_commit_status: - context: "Heartbeat: Windows 2022/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -88,10 +78,7 @@ steps: - "heartbeat/build/*.json" - label: ":ubuntu: Go Integration Tests" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - notify: - - github_commit_status: - context: "Heartbeat: Go Integration Tests" + command: "cd ${BEATS_PROJECT_NAME} && mage goIntegTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -102,9 +89,6 @@ steps: - label: ":ubuntu: Python Integration Tests" command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" - notify: - - github_commit_status: - context: "Heartbeat: Python Integration Tests" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -113,61 +97,41 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - group: "Extended Testing" - key: "extended-tests" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" || build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for extended support" - + - group: "Heartbeat ARM Tests" + key: "heartbeat-extended-tests-arm" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ steps: - label: ":linux: ARM64 Unit Tests" key: "arm-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for arm" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "Heartbeat: Unit Tests ARM" agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" artifact_paths: "heartbeat/build/*.xml" + - group: "Heartbeat Extended Testing MacOS" + key: "heartbeat-extended-tests-macos" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: - label: ":mac: MacOS Unit Tests" key: "macos-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" - notify: - - github_commit_status: - context: "Heartbeat: MacOS Unit Tests" agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" artifact_paths: "heartbeat/build/*.xml" - - label: ":mac: MacOS ARM Unit Tests" - key: "macos-extended-arm" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" - notify: - - github_commit_status: - context: "Heartbeat: MacOS ARM Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_ARM}" - artifact_paths: "heartbeat/build/*.xml" - - - group: "Windows Extended Testing" - key: "extended-tests-win" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for windows" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ + - group: "Heartbeat Windows Extended Testing" + key: "heartbeat-extended-tests-win" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ steps: - - label: ":windows:-2019 Unit Tests" - key: "windows-extended-2019" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "Heartbeat: Windows 2019/Unit Tests" + - label: ":windows: Win 2019 Unit Tests" + key: "heartbeat-win-extended-2019" + command: "mage -d ${BEATS_PROJECT_NAME} unitTest" agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -178,13 +142,10 @@ steps: - "heartbeat/build/*.json" - label: ":windows:-11 Unit Tests" - key: "windows-extended-11" + key: "heartbeat-windows-extended-11" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - notify: - - github_commit_status: - context: "Heartbeat: Windows 11/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -195,13 +156,10 @@ steps: - "heartbeat/build/*.json" - label: ":windows:-10 Unit Tests" - key: "windows-extended-10" + key: "heartbeat-windows-extended-10" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - notify: - - github_commit_status: - context: "Heartbeat: Windows 10/Unit Tests" agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -211,12 +169,31 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - group: "Packaging" - key: "packaging" + - group: "Heartbeat Packaging" + key: "heartbeat-packaging" if: build.env("BUILDKITE_PULL_REQUEST") != "false" depends_on: - - "mandatory-tests" - + - "heartbeat-mandatory-tests" steps: - - label: Package pipeline - commands: ".buildkite/scripts/packaging/package-step.sh" + - label: ":ubuntu: Packaging Linux X86" + key: "heartbeat-package-linux-x86" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + SNAPSHOT: true + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - label: ":linux: Packaging Linux ARM" + key: "heartbeat-package-linux-arm" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + SNAPSHOT: true + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 52bee3fb674..01d56d54363 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -65,6 +65,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi fi ENABLED_BEATS_PIPELINES_SLUGS=( + "beats" "auditbeat" "filebeat" "beats-metricbeat" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 84f725981fe..8515ebc7652 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,7 +1,48 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json -env: - ASDF_MAGE_VERSION: '1.15.0' steps: - - label: "Generate dynamic pipeline" - command: ".buildkite/scripts/generate_pipeline.sh" + - label: "Trigger Auditbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only HEAD~1" + watch: + - path: + - auditbeat/ + - .buildkite/auditbeat/ + #OSS + - go.mod + - pytest.ini + - dev-tools/** + - libbeat/** + - testing/** + config: + trigger: "auditbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger Heartbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only HEAD~1" + watch: + - path: + - heartbeat/ + - .buildkite/heartbeat/ + #OSS + - go.mod + - pytest.ini + - dev-tools/** + - libbeat/** + - testing/** + config: + trigger: "heartbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 11fad2d1814..ba73203ec68 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -48,38 +48,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": [ "^metricbeat/.*", ".buildkite/metricbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, - { - "enabled": true, - "pipelineSlug": "auditbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test auditbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", - "always_trigger_comment_regex": "^/test auditbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^auditbeat/.*", ".buildkite/auditbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] - }, - { - "enabled": true, - "pipelineSlug": "heartbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test heartbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", - "always_trigger_comment_regex": "^/test heartbeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^heartbeat/.*", ".buildkite/heartbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] - }, { "enabled": true, "pipelineSlug": "deploy-k8s", diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 64b36131caf..49e6d794c26 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -12,7 +12,6 @@ ONLY_DOCS=${ONLY_DOCS:-"true"} OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat -[ -z "${run_auditbeat+x}" ] && run_auditbeat="$(buildkite-agent meta-data get run_auditbeat --default "false")" [ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_libbeat+x}" ] && run_libbeat="$(buildkite-agent meta-data get run_libbeat --default "false")" [ -z "${run_metricbeat+x}" ] && run_metricbeat="$(buildkite-agent meta-data get run_metricbeat --default "false")" @@ -29,7 +28,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat -[ -z "${run_auditbeat_arm_tests+x}" ] && run_auditbeat_arm_tests="$(buildkite-agent meta-data get run_auditbeat_arm_tests --default "false")" [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" @@ -39,7 +37,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" # define if needed run MacOS platform-specific tests for the particular beat -[ -z "${run_auditbeat_tests+x}" ] && run_auditbeat_macos_tests="$(buildkite-agent meta-data get run_auditbeat_macos_tests --default "false")" [ -z "${run_filebeat_tests+x}" ] && run_filebeat_macos_tests="$(buildkite-agent meta-data get run_filebeat_macos_tests --default "false")" [ -z "${run_metricbeat_macos_tests+x}" ] && run_metricbeat_macos_tests="$(buildkite-agent meta-data get run_metricbeat_macos_tests --default "false")" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" @@ -58,10 +55,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" [ -z "${run_xpack_filebeat_aws_tests+x}" ] && run_xpack_filebeat_aws_tests="$(buildkite-agent meta-data get run_xpack_filebeat_aws_tests --default "false")" -auditbeat_changeset=( - "^auditbeat/.*" - ) - filebeat_changeset=( "^filebeat/.*" ) @@ -149,10 +142,7 @@ packaging_changeset=( ".go-version" ) -case "${BUILDKITE_PIPELINE_SLUG}" in - "auditbeat") - BEAT_CHANGESET_REFERENCE=${auditbeat_changeset[@]} - ;; +case "${BUILDKITE_PIPELINE_SLUG}" in "filebeat") BEAT_CHANGESET_REFERENCE=${filebeat_changeset[@]} ;; @@ -434,7 +424,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -445,7 +435,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -456,7 +446,7 @@ are_conditions_met_macos_tests() { are_conditions_met_win_tests() { if are_conditions_met_mandatory_tests; then - if [[ "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_WIN_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_WIN_LABEL} || "${!TRIGGER_SPECIFIC_WIN_TESTS}" == "true" ]]; then return 0 fi diff --git a/.buildkite/scripts/generate_auditbeat_pipeline.sh b/.buildkite/scripts/generate_auditbeat_pipeline.sh deleted file mode 100644 index d514c5d79d8..00000000000 --- a/.buildkite/scripts/generate_auditbeat_pipeline.sh +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.auditbeat-dynamic.yml" - -# TODO: steps: must be always included -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - group: "Mandatory Testing" - key: "mandatory-tests" - - steps: - - label: ":ubuntu: Ubuntu Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":rhel: RHEL Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_RHEL9}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":linux: Crosscompile" - command: "make -C $BEATS_PROJECT_NAME crosscompile" - env: - GOX_FLAGS: "-arch amd64" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Crosscompile" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "macos-unit-tests-extended" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":mac: MacOS ARM Unit Tests" - key: "macos-arm64-unit-tests-extended" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS ARM Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_ARM}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: Ubuntu ARM Unit Tests" - key: "extended-arm64-unit-test" - command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - -YAML -fi - -if are_conditions_met_win_tests; then - cat >> $pipelineName <<- YAML - - group: "Windows Extended Testing" - key: "extended-tests-win" - steps: - - label: ":windows: Windows 2019 Unit Tests" - key: "extended-win-2019-unit-tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - - - label: ":windows: Windows 10 Unit Tests" - key: "extended-win-10-unit-tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - key: "extended-win-11-unit-tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then -cat >> $pipelineName <<- YAML - - group: "Packaging" - key: "packaging" - depends_on: - - "mandatory-tests" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName \ No newline at end of file From 6f4a5d3466754ba30f68e5deaa29d6bc14e71575 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Apr 2024 23:32:22 +0000 Subject: [PATCH 108/313] build(deps): bump github.com/elastic/go-ucfg from 0.8.7 to 0.8.8 (#38683) * build(deps): bump github.com/elastic/go-ucfg from 0.8.7 to 0.8.8 Bumps [github.com/elastic/go-ucfg](https://github.com/elastic/go-ucfg) from 0.8.7 to 0.8.8. - [Release notes](https://github.com/elastic/go-ucfg/releases) - [Changelog](https://github.com/elastic/go-ucfg/blob/main/CHANGELOG.md) - [Commits](https://github.com/elastic/go-ucfg/compare/v0.8.7...v0.8.8) --- updated-dependencies: - dependency-name: github.com/elastic/go-ucfg dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] Co-authored-by: Craig MacKenzie --- NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 97385dbd48d..a7644ba5e56 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -15223,11 +15223,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-sysinfo@v1.1 -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-ucfg -Version: v0.8.7 +Version: v0.8.8 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-ucfg@v0.8.7/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-ucfg@v0.8.8/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index 8d635c7fc96..5d284dfbb91 100644 --- a/go.mod +++ b/go.mod @@ -79,7 +79,7 @@ require ( github.com/elastic/go-seccomp-bpf v1.4.0 github.com/elastic/go-structform v0.0.10 github.com/elastic/go-sysinfo v1.13.1 - github.com/elastic/go-ucfg v0.8.7 + github.com/elastic/go-ucfg v0.8.8 github.com/elastic/gosigar v0.14.3 github.com/fatih/color v1.15.0 github.com/fearful-symmetry/gorapl v0.0.4 diff --git a/go.sum b/go.sum index e16a2e8839b..5e1125cea1b 100644 --- a/go.sum +++ b/go.sum @@ -713,8 +713,8 @@ github.com/elastic/go-structform v0.0.10 h1:oy08o/Ih2hHTkNcRY/1HhaYvIp5z6t8si8gn github.com/elastic/go-structform v0.0.10/go.mod h1:CZWf9aIRYY5SuKSmOhtXScE5uQiLZNqAFnwKR4OrIM4= github.com/elastic/go-sysinfo v1.13.1 h1:U5Jlx6c/rLkR72O8wXXXo1abnGlWGJU/wbzNJ2AfQa4= github.com/elastic/go-sysinfo v1.13.1/go.mod h1:GKqR8bbMK/1ITnez9NIsIfXQr25aLhRJa7AfT8HpBFQ= -github.com/elastic/go-ucfg v0.8.7 h1:/bKaN553LY3MsfEIz2XOEEs+tRw03TzJCARrnVPpOyc= -github.com/elastic/go-ucfg v0.8.7/go.mod h1:4E8mPOLSUV9hQ7sgLEJ4bvt0KhMuDJa8joDT2QGAEKA= +github.com/elastic/go-ucfg v0.8.8 h1:54KIF/2zFKfl0MzsSOCGOsZ3O2bnjFQJ0nDJcLhviyk= +github.com/elastic/go-ucfg v0.8.8/go.mod h1:4E8mPOLSUV9hQ7sgLEJ4bvt0KhMuDJa8joDT2QGAEKA= github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0= github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a h1:8WfL/X6fK11iyX5t3Dd9dDMMNqPfEZNc//JsWGIhEgQ= From 2f5ee744ecea47e66eab17491723f1227eaa09a4 Mon Sep 17 00:00:00 2001 From: Panos Koutsovasilis Date: Wed, 10 Apr 2024 09:14:28 +0300 Subject: [PATCH 109/313] [filebeat/netflow]: set event normalisation to true (#38780) * fix(input/netflow): revert event normalisation to true for netflow input * doc: update CHANGELOG.next.asciidoc * fix: update fields.asciidoc (unrelated to this work) * doc: remove irrelevant comment --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/netflow/input.go | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 3b95d21f759..6a8d7b5991e 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -99,6 +99,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add missing provider registration and fix published entity for Active Directory entityanalytics provider. {pull}38645[38645] - Fix handling of un-parsed JSON in O365 module. {issue}37800[37800] {pull}38709[38709] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] +- Fix indexing failures by re-enabling event normalisation in netflow input. {issue}38703[38703] {pull}38780[38780] *Heartbeat* diff --git a/x-pack/filebeat/input/netflow/input.go b/x-pack/filebeat/input/netflow/input.go index a87fe6a0d76..52c6f8a7684 100644 --- a/x-pack/filebeat/input/netflow/input.go +++ b/x-pack/filebeat/input/netflow/input.go @@ -116,9 +116,7 @@ func (n *netflowInput) Run(ctx v2.Context, connector beat.PipelineConnector) err client, err := connector.ConnectWith(beat.ClientConfig{ PublishMode: beat.DefaultGuarantees, Processing: beat.ProcessingConfig{ - // This input only produces events with basic types so normalization - // is not required. - EventNormalization: boolPtr(false), + EventNormalization: boolPtr(true), }, CloseRef: ctx.Cancelation, EventListener: nil, From c749dacac11cd3b6cdfa9e18a0295dd89fc26493 Mon Sep 17 00:00:00 2001 From: Siarhei Harbuz <87968844+sharbuz@users.noreply.github.com> Date: Wed, 10 Apr 2024 10:31:27 +0300 Subject: [PATCH 110/313] Split windows steps (#38782) * add MacOS Arm tests * split windows steps * fix pipelines key names * comment-out xpack/heartbeat windows steps * fix xpack/libbeat tests * remove MacOs changes --- .buildkite/metricbeat/pipeline.yml | 33 ++--- .buildkite/packetbeat/pipeline.packetbeat.yml | 49 +++---- .../scripts/generate_metricbeat_pipeline.sh | 81 +++++++--- .../scripts/generate_packetbeat_pipeline.sh | 82 ++++++++--- .../scripts/generate_winlogbeat_pipeline.sh | 81 +++++++--- .../generate_xpack_auditbeat_pipeline.sh | 81 +++++++--- .../generate_xpack_dockerlogbeat_pipeline.sh | 1 - .../generate_xpack_filebeat_pipeline.sh | 82 ++++++++--- .../generate_xpack_heartbeat_pipeline.sh | 138 ++++++++++++------ .../generate_xpack_libbeat_pipeline.sh | 85 ++++++++--- .../generate_xpack_metricbeat_pipeline.sh | 83 ++++++++--- .../generate_xpack_osquerybeat_pipeline.sh | 82 ++++++++--- .../generate_xpack_packetbeat_pipeline.sh | 88 ++++++++--- .../generate_xpack_winlogbeat_pipeline.sh | 82 ++++++++--- 14 files changed, 758 insertions(+), 290 deletions(-) diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index c7dcc01e625..2ec8ef4f323 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -24,26 +24,25 @@ env: ASDF_MAGE_VERSION: 1.15.0 steps: - - input: "Input Parameters" key: "run_metricbeat" fields: - - select: "Metricbeat - run_metricbeat" - key: "run_metricbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Metricbeat - run_metricbeat_macos_tests" - key: "run_metricbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" + - select: "Metricbeat - run_metricbeat" + key: "run_metricbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Metricbeat - run_metricbeat_macos_tests" + key: "run_metricbeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" if: "build.source == 'ui'" - wait: ~ diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index 9247b144667..82630978bd3 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -25,34 +25,33 @@ env: ASDF_MAGE_VERSION: 1.15.0 steps: - - input: "Input Parameters" key: "input-run-all-stages" fields: - - select: "Packetbeat - run_packetbeat" - key: "run_packetbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Packetbeat - run_packetbeat_arm_tests" - key: "run_packetbeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Packetbeat - run_packetbeat_macos_tests" - key: "run_packetbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" + - select: "Packetbeat - run_packetbeat" + key: "run_packetbeat" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Packetbeat - run_packetbeat_arm_tests" + key: "run_packetbeat_arm_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" + - select: "Packetbeat - run_packetbeat_macos_tests" + key: "run_packetbeat_macos_tests" + options: + - label: "True" + value: "true" + - label: "False" + value: "false" + default: "false" if: "build.source == 'ui'" - wait: ~ diff --git a/.buildkite/scripts/generate_metricbeat_pipeline.sh b/.buildkite/scripts/generate_metricbeat_pipeline.sh index a0386aeb1b7..f419f330f63 100755 --- a/.buildkite/scripts/generate_metricbeat_pipeline.sh +++ b/.buildkite/scripts/generate_metricbeat_pipeline.sh @@ -75,28 +75,41 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Cross compile" - - label: ":windows: Windows 2016/2022 Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2016-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2016}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" # echo "Add the extended windows tests into the pipeline" # TODO: ADD conditions from the main pipeline @@ -104,29 +117,59 @@ steps: - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_packetbeat_pipeline.sh b/.buildkite/scripts/generate_packetbeat_pipeline.sh index e4870437ac1..2a5011e46ac 100755 --- a/.buildkite/scripts/generate_packetbeat_pipeline.sh +++ b/.buildkite/scripts/generate_packetbeat_pipeline.sh @@ -43,56 +43,98 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2022 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2022-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - group: "Extended Windowds Tests" key: "extended-win-tests" steps: - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_winlogbeat_pipeline.sh index ede70538c2c..62fe899c5dd 100755 --- a/.buildkite/scripts/generate_winlogbeat_pipeline.sh +++ b/.buildkite/scripts/generate_winlogbeat_pipeline.sh @@ -30,29 +30,59 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Cross compile" - - label: ":windows: Windows 2016/2019/2022 Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2016-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2016}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2019}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" # echo "Add the extended windows tests into the pipeline" # TODO: ADD conditions from the main pipeline @@ -60,28 +90,41 @@ steps: - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - label: ":windows: Windows 10/11 Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-11-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_11}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh index eb9c8269f3d..f1b40d992d7 100755 --- a/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh @@ -46,59 +46,100 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2022 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2022-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - group: "Extended Windows Tests" key: "extended-win-tests" steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh index f9ca4e7f767..bf8908cb609 100755 --- a/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh @@ -29,7 +29,6 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - label: ":go: Go Integration Tests" key: "mandatory-int-test" command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" diff --git a/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh b/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh index 78a351a078d..7e3e4aa5f39 100755 --- a/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh @@ -59,58 +59,100 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Python Integration Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2016-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - group: "Extended Windows Tests" key: "extended-win-tests" steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh index f940789abfe..94eed4f7c6a 100755 --- a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh @@ -41,51 +41,101 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" - skip: "see elastic/beats#23957 and elastic/beats#23958" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-unit-tests" - agents: - provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" + ####### skip: "see elastic/beats#23957 and elastic/beats#23958" + # - label: ":windows: Windows 2016 Unit Tests" + # command: | + # Set-Location -Path $BEATS_PROJECT_NAME + # mage build unitTest + # key: "mandatory-win-2016-unit-tests" + # agents: + # provider: "gcp" + # image: "${IMAGE_WIN_2016}" + # machine_type: "${GCP_WIN_MACHINE_TYPE}" + # disk_size: 100 + # disk_type: "pd-ssd" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" + # notify: + # - github_commit_status: + # context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + # - label: ":windows: Windows 2022 Unit Tests" + # command: | + # Set-Location -Path $BEATS_PROJECT_NAME + # mage build unitTest + # key: "mandatory-win-2022-unit-tests" + # agents: + # provider: "gcp" + # image: "${IMAGE_WIN_2022}" + # machine_type: "${GCP_WIN_MACHINE_TYPE}" + # disk_size: 100 + # disk_type: "pd-ssd" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" + # notify: + # - github_commit_status: + # context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" + + # - group: "Extended Windows Tests" ## TODO: this condition will be changed in the Phase 3 + # key: "extended-win-tests" + # steps: + # - label: ":windows: Windows 10 Unit Tests" + # command: | + # Set-Location -Path $BEATS_PROJECT_NAME + # mage build unitTest + # key: "extended-win-10-unit-tests" + # agents: + # provider: "gcp" + # image: "${IMAGE_WIN_10}" + # machineType: "${GCP_WIN_MACHINE_TYPE}" + # disk_size: 100 + # disk_type: "pd-ssd" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" + # notify: + # - github_commit_status: + # context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + # - label: ":windows: Windows 11 Unit Tests" + # command: | + # Set-Location -Path $BEATS_PROJECT_NAME + # mage build unitTest + # key: "extended-win-11-unit-tests" + # agents: + # provider: "gcp" + # image: "${IMAGE_WIN_11}" + # machineType: "${GCP_WIN_MACHINE_TYPE}" + # disk_size: 100 + # disk_type: "pd-ssd" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" + # notify: + # - github_commit_status: + # context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" + + # - label: ":windows: Windows 2019 Unit Tests" + # command: | + # Set-Location -Path $BEATS_PROJECT_NAME + # mage build unitTest + # key: "extended-win-2019-unit-tests" + # agents: + # provider: "gcp" + # image: "${IMAGE_WIN_2019}" + # machineType: "${GCP_WIN_MACHINE_TYPE}" + # disk_size: 100 + # disk_type: "pd-ssd" + # artifact_paths: + # - "$BEATS_PROJECT_NAME/build/*.xml" + # - "$BEATS_PROJECT_NAME/build/*.json" + # notify: + # - github_commit_status: + # context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" + ####### skip: "see elastic/beats#23957 and elastic/beats#23958" - - group: "Extended Windows Tests" ## TODO: this condition will be changed in the Phase 3 - key: "extended-win-tests" - steps: - - label: ":windows: Windows Unit Tests - {{matrix.image}}" - skip: "see elastic/beats#23957 and elastic/beats#23958" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-unit-tests" - agents: - provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" YAML else echo "The conditions don't match to requirements for generating pipeline steps." diff --git a/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh index 7e3d5086288..a99564e8613 100755 --- a/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh @@ -57,56 +57,99 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Python Integration Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME - mage -w reader/etw build goUnitTest - key: "mandatory-win-unit-tests" + mage -w reader\etw build goUnitTest + key: "mandatory-win-2016-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage -w reader\etw build goUnitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" ### TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage -w reader\etw build goUnitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage -w reader\etw build goUnitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage -w reader\etw build goUnitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh index d38c3123656..788cfba1e54 100755 --- a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh @@ -67,56 +67,99 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Python (MODULE) Integration Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2016-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - group: "Extended Windows Tests" key: "extended-win-tests" steps: - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh b/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh index 5372d7f3faa..4f1afc440ef 100755 --- a/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh @@ -43,58 +43,100 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2016-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" ## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - group: "Extended Windows Tests" key: "extended-win-tests" steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else diff --git a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh index 0655aac059c..97f37ca734b 100644 --- a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh @@ -57,30 +57,41 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" - command: - - "Set-Location -Path $BEATS_PROJECT_NAME" - - "New-Item -ItemType Directory -Force -Path 'build'" - - "mage unitTest" - key: "mandatory-win-unit-tests" + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2022-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" - machineType: "${GCP_WIN_MACHINE_TYPE}" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - label: ":windows: Windows 2022 System Tests" skip: "see https://github.com/elastic/beats/issues/38142" @@ -101,30 +112,59 @@ steps: - group: "Extended Windows Tests" key: "extended-win-tests" steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2019 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-2019-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - label: ":windows: Windows 10 System Tests" skip: "see https://github.com/elastic/beats/issues/38142" diff --git a/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh index ad5ebd44583..60aff562d17 100755 --- a/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh +++ b/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh @@ -17,7 +17,7 @@ steps: steps: - label: ":windows: Windows 2019 Unit (MODULE) Tests" - key: "mandatory-win-2019-unit-tests" + key: "mandatory-win-2019-module-unit-tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest @@ -36,28 +36,41 @@ steps: - github_commit_status: context: "$BEATS_PROJECT_NAME: Windows (MODULE) {{matrix.image}} Unit Tests" - - label: ":windows: Windows 2016/2022 Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "mandatory-win-unit-tests" + key: "mandatory-win-2016-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_2016}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_2016}" - - "${IMAGE_WIN_2022}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" # echo "Add the extended windows tests into the pipeline" # TODO: ADD conditions from the main pipeline @@ -65,30 +78,59 @@ steps: - group: "Extended Windows Tests" key: "extended-win-tests" steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - label: ":windows: Windows Unit Tests - {{matrix.image}}" + - label: ":windows: Windows 11 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest - key: "extended-win-unit-tests" + key: "extended-win-11-unit-tests" agents: provider: "gcp" - image: "{{matrix.image}}" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path $BEATS_PROJECT_NAME + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" machineType: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - matrix: - setup: - image: - - "${IMAGE_WIN_10}" - - "${IMAGE_WIN_11}" - - "${IMAGE_WIN_2019}" artifact_paths: - "$BEATS_PROJECT_NAME/build/*.xml" - "$BEATS_PROJECT_NAME/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows {{matrix.image}} Unit Tests" + context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" YAML else From a559e6d795952e3a3fa638f6af76a21d3301945b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 10:35:13 +0200 Subject: [PATCH 111/313] docs: Prepare Changelog for 8.13.2 (#38774) (#38808) * docs: Close changelog for 8.13.2 * Update CHANGELOG.asciidoc --------- Co-authored-by: Pierre HILBERT (cherry picked from commit 5743a678fc2d5bbc6e4969e693ba4bc830a24d6f) Co-authored-by: Elastic Machine --- CHANGELOG.asciidoc | 11 +++++++++++ CHANGELOG.next.asciidoc | 4 +++- libbeat/docs/release.asciidoc | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index c44bd187427..6718437a76a 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -3,6 +3,17 @@ :issue: https://github.com/elastic/beats/issues/ :pull: https://github.com/elastic/beats/pull/ +[[release-notes-8.13.2]] +=== Beats version 8.13.2 +https://github.com/elastic/beats/compare/v8.13.1\...v8.13.2[View commits] + +==== Bugfixes + +*Heartbeat* + +- Fix reference yaml format. {pull}38584[38584] + + [[release-notes-8.13.1]] === Beats version 8.13.1 https://github.com/elastic/beats/compare/v8.13.0\...v8.13.1[View commits] diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 6a8d7b5991e..819a668b149 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -110,7 +110,6 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Heartbeat* -- Fix reference yaml format. {pull}38584[38584] *Metricbeat* @@ -332,6 +331,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] + + + diff --git a/libbeat/docs/release.asciidoc b/libbeat/docs/release.asciidoc index 3b28359b01d..69cb6b5925f 100644 --- a/libbeat/docs/release.asciidoc +++ b/libbeat/docs/release.asciidoc @@ -8,6 +8,7 @@ This section summarizes the changes in each release. Also read <> for more detail about changes that affect upgrade. +* <> * <> * <> * <> From b2edf8ae32ed1277eabd33e58bffdc6ae28bdfdc Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Wed, 10 Apr 2024 11:45:03 +0300 Subject: [PATCH 112/313] Remove the beats pipeline slug from sourcing envs (#38801) * Remove the beats pipeline slug from sourcing ENV vars This simplifies the mental model about what is needed and what not for the pipeline execution. The Beats pipeline is basically a pipeline generator and does not need any of those env vars. Having this makes it more complecated in the future where we want to simplify. Signed-off-by: Alexandros Sapranidis --- .buildkite/hooks/pre-command | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 01d56d54363..c754b5865fa 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -11,7 +11,7 @@ PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-inges DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then source .buildkite/env-scripts/env.sh if [[ -z "${GO_VERSION-""}" ]]; then export GO_VERSION=$(cat "${WORKSPACE}/.go-version") @@ -65,7 +65,6 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "fi fi ENABLED_BEATS_PIPELINES_SLUGS=( - "beats" "auditbeat" "filebeat" "beats-metricbeat" From e798bb158c3ce8ae2fccdf0024da32136ed5217b Mon Sep 17 00:00:00 2001 From: Andrew Gizas Date: Wed, 10 Apr 2024 11:56:21 +0300 Subject: [PATCH 113/313] Setting Prometheus Remote_write Period default value to 1m (#38553) * Correcting period for Prometheus remote_write * Update CHANGELOG.next.asciidoc --- CHANGELOG.next.asciidoc | 2 +- .../prometheus/remote_write/_meta/docs.asciidoc | 7 +++++++ .../module/prometheus/remote_write/config.go | 17 +++++++++++++++-- .../module/prometheus/remote_write/data.go | 3 ++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 819a668b149..56bf83702fb 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -23,7 +23,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Heartbeat* *Metricbeat* - +- Setting period for counter cache for Prometheus remote_write at least to 60sec {pull}38553[38553] *Osquerybeat* diff --git a/metricbeat/module/prometheus/remote_write/_meta/docs.asciidoc b/metricbeat/module/prometheus/remote_write/_meta/docs.asciidoc index 2e1cc2ca4f0..d99f9837160 100644 --- a/metricbeat/module/prometheus/remote_write/_meta/docs.asciidoc +++ b/metricbeat/module/prometheus/remote_write/_meta/docs.asciidoc @@ -86,6 +86,9 @@ metricbeat.modules: metricsets: ["remote_write"] host: "localhost" port: "9201" + use_types: true + rate_counters: true + period: 60s ------------------------------------------------------------------------------------- `use_types` parameter (default: false) enables a different layout for metrics storage, leveraging Elasticsearch @@ -95,6 +98,10 @@ types, including https://www.elastic.co/guide/en/elasticsearch/reference/current the counter increment since the last collection. This metric should make some aggregations easier and with better performance. This parameter can only be enabled in combination with `use_types`. +`period` parameter (default: 60s) configures the timeout of internal cache, which stores counter values in order to calculate rates between consecutive fetches. The parameter will be validated and all values lower than 60sec will be reset to the default value. + +Note that by default prometheus pushes data with the interval of 60s (in remote write). In case that prometheus push rate is changed, the `period` parameter needs to be configured accordingly. + When `use_types` and `rate_counters` are enabled, metrics are stored like this: [source,json] diff --git a/x-pack/metricbeat/module/prometheus/remote_write/config.go b/x-pack/metricbeat/module/prometheus/remote_write/config.go index 8c5fe12a659..9e86facb1d0 100644 --- a/x-pack/metricbeat/module/prometheus/remote_write/config.go +++ b/x-pack/metricbeat/module/prometheus/remote_write/config.go @@ -4,12 +4,16 @@ package remote_write -import "errors" +import ( + "errors" + "time" +) type config struct { UseTypes bool `config:"use_types"` RateCounters bool `config:"rate_counters"` TypesPatterns TypesPatterns `config:"types_patterns" yaml:"types_patterns,omitempty"` + Period time.Duration `config:"period" validate:"positive"` } type TypesPatterns struct { @@ -21,12 +25,21 @@ var defaultConfig = config{ TypesPatterns: TypesPatterns{ CounterPatterns: nil, HistogramPatterns: nil}, + Period: time.Second * 60, } func (c *config) Validate() error { if c.RateCounters && !c.UseTypes { return errors.New("'rate_counters' can only be enabled when `use_types` is also enabled") } - + duration, err := time.ParseDuration(c.Period.String()) + { + if err != nil { + return err + } else if duration < 60*time.Second { + // by default prometheus push data with the interval 60s, in order to calculate counter rate we are setting Period to 60secs accordingly + c.Period = time.Second * 60 + } + } return nil } diff --git a/x-pack/metricbeat/module/prometheus/remote_write/data.go b/x-pack/metricbeat/module/prometheus/remote_write/data.go index a1bdbd58c20..5161d785fb0 100644 --- a/x-pack/metricbeat/module/prometheus/remote_write/data.go +++ b/x-pack/metricbeat/module/prometheus/remote_write/data.go @@ -44,9 +44,10 @@ func remoteWriteEventsGeneratorFactory(base mb.BaseMetricSet) (remote_write.Remo } if config.UseTypes { + logp.Debug("prometheus.remote_write.cache", "Period for counter cache for remote_write: %v", config.Period.String()) // use a counter cache with a timeout of 5x the period, as a safe value // to make sure that all counters are available between fetches - counters := collector.NewCounterCache(base.Module().Config().Period * 5) + counters := collector.NewCounterCache(config.Period * 5) g := remoteWriteTypedGenerator{ counterCache: counters, From 8051e6bf44877ce89fa75c6e2f456d2793dcce46 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Wed, 10 Apr 2024 14:12:27 +0300 Subject: [PATCH 114/313] Clean BK scripts (#38812) This commit removes the need to configure git for Windows, since we migrated to the custom Windows images and removed the config_git, which was defined 2 times on the single file. Signed-off-by: Alexandros Sapranidis --- .buildkite/hooks/pre-command | 6 ------ .buildkite/scripts/common.sh | 7 ------- 2 files changed, 13 deletions(-) diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index c754b5865fa..49167cbeb89 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -35,12 +35,6 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == with_mage fi - if [[ "$BUILDKITE_STEP_KEY" == windows* ]]; then - git config core.autocrlf false - git rm --quiet --cached -r . - git reset --quiet --hard - fi - if [[ "$BUILDKITE_STEP_KEY" == package* ]]; then DOCKER_USERNAME_SECRET=$(retry_with_count 5 vault kv get -field user "${DOCKER_REGISTRY_SECRET_PATH}") DOCKER_PASSWORD_SECRET=$(retry_with_count 5 vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 49e6d794c26..07de21a2dbc 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -475,13 +475,6 @@ are_conditions_met_packaging() { return 1 } -config_git() { - if [ -z "$(git config --get user.email)" ]; then - git config --global user.email "beatsmachine@users.noreply.github.com" - git config --global user.name "beatsmachine" - fi -} - defineModuleFromTheChangeSet() { # This method gathers the module name, if required, in order to run the ITs only if the changeset affects a specific module. # For such, it's required to look for changes under the module folder and exclude anything else such as asciidoc and png files. From d0dda41b3a078cd51390589f1e4dc7d7f1afebe3 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Wed, 10 Apr 2024 14:33:21 +0300 Subject: [PATCH 115/313] Dedicated script for detecting changesets on Buildkite (#38814) After the introduction of a centralized beats pipeline and statically defined changeset rules in #38783, we still need a way to grab changes for modules for IT tests. Currently this is done in common.sh#defineModuleFromTheChangeSet(). This commit adds a new script that has only the changeset related functionality, required to build the `MODULE` env var. The functions themselves, are copied from common.sh (with minor enhancements in documentation), paving the way to sunset common.sh in the future. Relates: https://github.com/elastic/ingest-dev/issues/3072 --- .buildkite/scripts/changesets.sh | 77 ++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .buildkite/scripts/changesets.sh diff --git a/.buildkite/scripts/changesets.sh b/.buildkite/scripts/changesets.sh new file mode 100644 index 00000000000..c7c557d196e --- /dev/null +++ b/.buildkite/scripts/changesets.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash + +# This script contains helper functions related to what should be run depending on Git changes + +are_paths_changed() { + local patterns=("${@}") + local changelist=() + for pattern in "${patterns[@]}"; do + changed_files=($(git diff --name-only HEAD@{1} HEAD | grep -E "$pattern")) + if [ "${#changed_files[@]}" -gt 0 ]; then + changelist+=("${changed_files[@]}") + fi + done + + if [ "${#changelist[@]}" -gt 0 ]; then + echo "Files changed:" + echo "${changelist[*]}" + return 0 + else + echo "No files changed within specified changeset:" + echo "${patterns[*]}" + return 1 + fi +} + +are_changed_only_paths() { + local patterns=("${@}") + local changed_files=($(git diff --name-only HEAD@{1} HEAD)) + local matched_files=() + for pattern in "${patterns[@]}"; do + local matched=($(grep -E "${pattern}" <<< "${changed_files[@]}")) + if [ "${#matched[@]}" -gt 0 ]; then + matched_files+=("${matched[@]}") + fi + done + if [ "${#matched_files[@]}" -eq "${#changed_files[@]}" ] || [ "${#changed_files[@]}" -eq 0 ]; then + return 0 + fi + return 1 +} + +defineModuleFromTheChangeSet() { + # This function sets a `MODULE` env var, required by IT tests, containing a comma separated list of modules for a given beats project (specified via the first argument). + # The list is built depending on directories that have changed under `modules/` excluding anything else such as asciidoc and png files. + # `MODULE` will empty if no changes apply. + local project_path=$1 + local project_path_transformed=$(echo "$project_path" | sed 's/\//\\\//g') + local project_path_exclussion="((?!^${project_path_transformed}\\/).)*\$" + local exclude=("^(${project_path_exclussion}|((?!\\/module\\/).)*\$|.*\\.asciidoc|.*\\.png)") + + if [[ "$project_path" == *"x-pack/"* ]]; then + local pattern=("$XPACK_MODULE_PATTERN") + else + local pattern=("$OSS_MODULE_PATTERN") + fi + local changed_modules="" + local module_dirs=$(find "$project_path/module" -mindepth 1 -maxdepth 1 -type d) + for module_dir in $module_dirs; do + if are_paths_changed $module_dir && ! are_changed_only_paths "${exclude[@]}"; then + if [[ -z "$changed_modules" ]]; then + changed_modules=$(basename "$module_dir") + else + changed_modules+=",$(basename "$module_dir")" + fi + fi + done + + if [[ -z "$changed_modules" ]]; then # TODO: remove this conditional when issue https://github.com/elastic/ingest-dev/issues/2993 gets resolved + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + export MODULE="aws" + else + export MODULE="kubernetes" + fi + else + export MODULE="${changed_modules}" # TODO: once https://github.com/elastic/ingest-dev/issues/2993 gets resolved, this should be the only thing we export + fi +} From ec59705ce662ef653e5e579d6eba61d6141b8658 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Wed, 10 Apr 2024 14:46:53 +0300 Subject: [PATCH 116/313] Remove Buildkite pipeline trigger (#38816) This is needed to land in main before migrating the pipeline because the bot expects to find this in main. Follow-up work will happen to migrate the pipeline. Signed-off-by: Alexandros Sapranidis --- .buildkite/pull-requests.json | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index ba73203ec68..1cc18f0f0b1 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -16,22 +16,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": [ ] }, - { - "enabled": true, - "pipelineSlug": "filebeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test filebeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", - "always_trigger_comment_regex": "^/test filebeat(for (arm|macos|windows|extended support))?$|^/packag[ing|e]$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^filebeat/.*", ".buildkite/filebeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*" ] - }, { "enabled": true, "pipelineSlug": "beats-metricbeat", From 63378fef0f5d417d7654ad255784b112194baaed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Apr 2024 13:38:26 +0000 Subject: [PATCH 117/313] build(deps): bump github.com/elastic/go-elasticsearch/v8 from 8.12.0 to 8.13.0 (#38815) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- NOTICE.txt | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index a7644ba5e56..1d38346ab57 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -13493,11 +13493,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-concert@v0.2 -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-elasticsearch/v8 -Version: v8.12.0 +Version: v8.13.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-elasticsearch/v8@v8.12.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-elasticsearch/v8@v8.13.0/LICENSE: Apache License Version 2.0, January 2004 @@ -38051,11 +38051,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-transport-go/v8 -Version: v8.4.0 +Version: v8.5.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-transport-go/v8@v8.4.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-transport-go/v8@v8.5.0/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index 5d284dfbb91..01ab48460c5 100644 --- a/go.mod +++ b/go.mod @@ -206,7 +206,7 @@ require ( github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 - github.com/elastic/go-elasticsearch/v8 v8.12.0 + github.com/elastic/go-elasticsearch/v8 v8.13.0 github.com/elastic/mito v1.10.0 github.com/elastic/tk-btf v0.1.0 github.com/elastic/toutoumomoma v0.0.0-20221026030040-594ef30cb640 @@ -285,7 +285,7 @@ require ( github.com/docker/go-metrics v0.0.1 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect github.com/eapache/queue v1.1.0 // indirect - github.com/elastic/elastic-transport-go/v8 v8.4.0 // indirect + github.com/elastic/elastic-transport-go/v8 v8.5.0 // indirect github.com/elastic/go-windows v1.0.1 // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/fearful-symmetry/gomsr v0.0.1 // indirect diff --git a/go.sum b/go.sum index 5e1125cea1b..773389a8b04 100644 --- a/go.sum +++ b/go.sum @@ -684,15 +684,15 @@ github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b6 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3/go.mod h1:rWarFM7qYxJKsi9WcV6ONcFjH/NA3niDNpTxO+8/GVI= github.com/elastic/elastic-agent-system-metrics v0.9.2 h1:/tvTKOt55EerU0WwGFoDhBlyWLgxyv7d8xCbny0bciw= github.com/elastic/elastic-agent-system-metrics v0.9.2/go.mod h1:VfJnKw4Jqrd9ddljXCwaGKJgN+7ADyyGk089NaXVsf0= -github.com/elastic/elastic-transport-go/v8 v8.4.0 h1:EKYiH8CHd33BmMna2Bos1rDNMM89+hdgcymI+KzJCGE= -github.com/elastic/elastic-transport-go/v8 v8.4.0/go.mod h1:YLHer5cj0csTzNFXoNQ8qhtGY1GTvSqPnKWKaqQE3Hk= +github.com/elastic/elastic-transport-go/v8 v8.5.0 h1:v5membAl7lvQgBTexPRDBO/RdnlQX+FM9fUVDyXxvH0= +github.com/elastic/elastic-transport-go/v8 v8.5.0/go.mod h1:YLHer5cj0csTzNFXoNQ8qhtGY1GTvSqPnKWKaqQE3Hk= github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270 h1:cWPqxlPtir4RoQVCpGSRXmLqjEHpJKbR60rxh1nQZY4= github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270/go.mod h1:Msl1pdboCbArMF/nSCDUXgQuWTeoMmE/z8607X+k7ng= github.com/elastic/glog v1.0.1-0.20210831205241-7d8b5c89dfc4/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/elastic/go-concert v0.2.0 h1:GAQrhRVXprnNjtvTP9pWJ1d4ToEA4cU5ci7TwTa20xg= github.com/elastic/go-concert v0.2.0/go.mod h1:HWjpO3IAEJUxOeaJOWXWEp7imKd27foxz9V5vegC/38= -github.com/elastic/go-elasticsearch/v8 v8.12.0 h1:krkiCf4peJa7bZwGegy01b5xWWaYpik78wvisTeRO1U= -github.com/elastic/go-elasticsearch/v8 v8.12.0/go.mod h1:wSzJYrrKPZQ8qPuqAqc6KMR4HrBfHnZORvyL+FMFqq0= +github.com/elastic/go-elasticsearch/v8 v8.13.0 h1:YXPAWpvbYX0mWSNG9tnEpvs4h1stgMy5JUeKZECYYB8= +github.com/elastic/go-elasticsearch/v8 v8.13.0/go.mod h1:DIn7HopJs4oZC/w0WoJR13uMUxtHeq92eI5bqv5CRfI= github.com/elastic/go-libaudit/v2 v2.5.0 h1:5OK919QRnGtcjVBz3n/cs5F42im1mPlVTA9TyIn2K54= github.com/elastic/go-libaudit/v2 v2.5.0/go.mod h1:AjlnhinP+kKQuUJoXLVrqxBM8uyhQmkzoV6jjsCFP4Q= github.com/elastic/go-licenser v0.4.1 h1:1xDURsc8pL5zYT9R29425J3vkHdt4RT5TNEMeRN48x4= From a3f7baece42f691111a556b68825509c22218c67 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Wed, 10 Apr 2024 17:35:41 +0300 Subject: [PATCH 118/313] Fix missing vars in buildkite changesets.sh (#38830) PR #38814 missed a couple of patterns required by the `defineModuleFromTheChangeSet()` function. This commit adds the missing regex patters needed for identifying module changesets. --- .buildkite/scripts/changesets.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.buildkite/scripts/changesets.sh b/.buildkite/scripts/changesets.sh index c7c557d196e..3b7ed5d7ec0 100644 --- a/.buildkite/scripts/changesets.sh +++ b/.buildkite/scripts/changesets.sh @@ -2,6 +2,9 @@ # This script contains helper functions related to what should be run depending on Git changes +OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" +XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" + are_paths_changed() { local patterns=("${@}") local changelist=() From f61930528c463fdb2301966c05913f97d57ff2b6 Mon Sep 17 00:00:00 2001 From: Andrew Gizas Date: Wed, 10 Apr 2024 18:55:54 +0300 Subject: [PATCH 119/313] Correcting typos in awscloudwatch (#38415) * correcting typos * running make update --- x-pack/filebeat/input/awscloudwatch/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/filebeat/input/awscloudwatch/config.go b/x-pack/filebeat/input/awscloudwatch/config.go index 16c802d2077..438aceeb19e 100644 --- a/x-pack/filebeat/input/awscloudwatch/config.go +++ b/x-pack/filebeat/input/awscloudwatch/config.go @@ -49,7 +49,7 @@ func (c *config) Validate() error { } if c.LogGroupARN == "" && c.LogGroupName == "" && c.LogGroupNamePrefix == "" { - return errors.New("log_group_arn, log_group_name and log_group_name_prefix config parameter" + + return errors.New("log_group_arn, log_group_name and log_group_name_prefix config parameter " + "cannot all be empty") } From c9e768d3e06ed557bd55157964a7503bc23f7deb Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Wed, 10 Apr 2024 13:04:52 -0400 Subject: [PATCH 120/313] [libbeat] Implement early event encoding for the Elasticsearch output (#38572) Add early-encoding support to the queue and the Elasticsearch output. Early event encoding lets outputs provide helpers that can perform output serialization on an event while it is still in the queue. This early encoding is done in the memory queue's producers, and in the disk queue's reader loop. Benchmarks while writing to Elasticsearch showed significant improvements (reported numbers were measured on Filebeat with a filestream input). Memory reduction in each preset relative to past versions: | Preset | `main` | 8.13.2 | 8.12.2 | | ---------- | ------ | ------ | ------ | | balanced | 21% | 31% | 41% | | throughput | 43% | 47% | 56% | | scale | 23% | 35% | 46% | | latency | 24% | 24% | 41% | CPU reduction for each preset relative to `main` (earlier versions had negligible difference): | Preset | CPU reduction | | ---------- | ------------- | | balanced | 7% | | throughput | 19% | | scale | 7% | | latency | 9% | --- CHANGELOG.next.asciidoc | 1 + libbeat/esleg/eslegclient/enc.go | 11 ++ libbeat/outputs/console/console.go | 2 +- libbeat/outputs/elasticsearch/client.go | 96 +++++----- .../elasticsearch/client_integration_test.go | 72 +++----- libbeat/outputs/elasticsearch/client_test.go | 168 +++++++++--------- .../elasticsearch/dead_letter_index.go | 5 +- .../outputs/elasticsearch/elasticsearch.go | 15 +- .../elasticsearch/elasticsearch_test.go | 14 +- .../outputs/elasticsearch/event_encoder.go | 138 ++++++++++++++ .../elasticsearch/event_encoder_test.go | 142 +++++++++++++++ libbeat/outputs/fileout/file.go | 2 +- libbeat/outputs/kafka/kafka.go | 2 +- libbeat/outputs/logstash/logstash.go | 2 +- .../logstash/logstash_integration_test.go | 36 +++- libbeat/outputs/output_reg.go | 16 ++ libbeat/outputs/redis/redis.go | 2 +- libbeat/outputs/util.go | 17 +- libbeat/publisher/event.go | 6 + libbeat/publisher/pipeline/client_test.go | 4 +- libbeat/publisher/pipeline/controller.go | 8 +- libbeat/publisher/pipeline/controller_test.go | 2 +- libbeat/publisher/pipeline/pipeline.go | 2 +- libbeat/publisher/pipeline/pipeline_test.go | 10 +- libbeat/publisher/pipeline/stress/out.go | 2 +- libbeat/publisher/pipeline/ttl_batch_test.go | 3 +- .../queue/diskqueue/benchmark_test.go | 4 +- libbeat/publisher/queue/diskqueue/consumer.go | 2 +- libbeat/publisher/queue/diskqueue/frames.go | 4 +- libbeat/publisher/queue/diskqueue/producer.go | 6 +- libbeat/publisher/queue/diskqueue/queue.go | 11 +- .../publisher/queue/diskqueue/queue_test.go | 4 +- .../publisher/queue/diskqueue/reader_loop.go | 22 ++- libbeat/publisher/queue/memqueue/broker.go | 25 ++- .../publisher/queue/memqueue/internal_api.go | 6 +- libbeat/publisher/queue/memqueue/produce.go | 28 ++- .../publisher/queue/memqueue/queue_test.go | 22 +-- .../publisher/queue/memqueue/runloop_test.go | 8 +- libbeat/publisher/queue/queue.go | 55 ++++-- 39 files changed, 678 insertions(+), 297 deletions(-) create mode 100644 libbeat/outputs/elasticsearch/event_encoder.go create mode 100644 libbeat/outputs/elasticsearch/event_encoder_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 56bf83702fb..37fc00bd926 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -141,6 +141,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Raise up logging level to warning when attempting to configure beats with unknown fields from autodiscovered events/environments - elasticsearch output now supports `idle_connection_timeout`. {issue}35616[35615] {pull}36843[36843] - Update to Go 1.21.9. {pulk}38727[38727] +- Enable early event encoding in the Elasticsearch output, improving cpu and memory use {pull}38572[38572] *Auditbeat* diff --git a/libbeat/esleg/eslegclient/enc.go b/libbeat/esleg/eslegclient/enc.go index 644a2b7d8cc..27e409f9172 100644 --- a/libbeat/esleg/eslegclient/enc.go +++ b/libbeat/esleg/eslegclient/enc.go @@ -109,6 +109,13 @@ func (b *jsonEncoder) Marshal(obj interface{}) error { return b.AddRaw(obj) } +// RawEncoding is used to wrap objects that have already been json-encoded, +// so the encoder knows to append them directly instead of treating them +// like a string. +type RawEncoding struct { + Encoding []byte +} + func (b *jsonEncoder) AddRaw(obj interface{}) error { var err error switch v := obj.(type) { @@ -116,6 +123,8 @@ func (b *jsonEncoder) AddRaw(obj interface{}) error { err = b.folder.Fold(event{Timestamp: v.Timestamp, Fields: v.Fields}) case *beat.Event: err = b.folder.Fold(event{Timestamp: v.Timestamp, Fields: v.Fields}) + case RawEncoding: + _, err = b.buf.Write(v.Encoding) default: err = b.folder.Fold(obj) } @@ -199,6 +208,8 @@ func (g *gzipEncoder) AddRaw(obj interface{}) error { err = g.folder.Fold(event{Timestamp: v.Timestamp, Fields: v.Fields}) case *beat.Event: err = g.folder.Fold(event{Timestamp: v.Timestamp, Fields: v.Fields}) + case RawEncoding: + _, err = g.gzip.Write(v.Encoding) default: err = g.folder.Fold(obj) } diff --git a/libbeat/outputs/console/console.go b/libbeat/outputs/console/console.go index b81bf336348..f723bf818c9 100644 --- a/libbeat/outputs/console/console.go +++ b/libbeat/outputs/console/console.go @@ -85,7 +85,7 @@ func makeConsole( } } - return outputs.Success(config.Queue, config.BatchSize, 0, c) + return outputs.Success(config.Queue, config.BatchSize, 0, nil, c) } func newConsole(index string, observer outputs.Observer, codec codec.Codec) (*console, error) { diff --git a/libbeat/outputs/elasticsearch/client.go b/libbeat/outputs/elasticsearch/client.go index 936bbea8ca4..504aac710af 100644 --- a/libbeat/outputs/elasticsearch/client.go +++ b/libbeat/outputs/elasticsearch/client.go @@ -299,60 +299,57 @@ func (client *Client) bulkEncodePublishRequest(version version.V, data []publish okEvents := data[:0] bulkItems := []interface{}{} for i := range data { - event := &data[i].Content + if data[i].EncodedEvent == nil { + client.log.Error("Elasticsearch output received unencoded publisher.Event") + continue + } + event := data[i].EncodedEvent.(*encodedEvent) + if event.err != nil { + // This means there was an error when encoding the event and it isn't + // ingestable, so report the error and continue. + client.log.Error(event.err) + continue + } meta, err := client.createEventBulkMeta(version, event) if err != nil { client.log.Errorf("Failed to encode event meta data: %+v", err) continue } - if opType := events.GetOpType(*event); opType == events.OpTypeDelete { + if event.opType == events.OpTypeDelete { // We don't include the event source in a bulk DELETE bulkItems = append(bulkItems, meta) } else { - bulkItems = append(bulkItems, meta, event) + // Wrap the encoded event in a RawEncoding so the Elasticsearch client + // knows not to re-encode it + bulkItems = append(bulkItems, meta, eslegclient.RawEncoding{Encoding: event.encoding}) } okEvents = append(okEvents, data[i]) } return okEvents, bulkItems } -func (client *Client) createEventBulkMeta(version version.V, event *beat.Event) (interface{}, error) { +func (client *Client) createEventBulkMeta(version version.V, event *encodedEvent) (interface{}, error) { eventType := "" if version.Major < 7 { eventType = defaultEventType } - pipeline, err := client.getPipeline(event) - if err != nil { - err := fmt.Errorf("failed to select pipeline: %w", err) - return nil, err - } - - index, err := client.getIndex(event) - if err != nil { - err := fmt.Errorf("failed to select event index: %w", err) - return nil, err - } - - id, _ := events.GetMetaStringValue(*event, events.FieldMetaID) - opType := events.GetOpType(*event) - meta := eslegclient.BulkMeta{ - Index: index, + Index: event.index, DocType: eventType, - Pipeline: pipeline, - ID: id, + Pipeline: event.pipeline, + ID: event.id, } - if opType == events.OpTypeDelete { - if id != "" { + if event.opType == events.OpTypeDelete { + if event.id != "" { return eslegclient.BulkDeleteAction{Delete: meta}, nil } else { return nil, fmt.Errorf("%s %s requires _id", events.FieldMetaOpType, events.OpTypeDelete) } } - if id != "" || version.Major > 7 || (version.Major == 7 && version.Minor >= 5) { - if opType == events.OpTypeIndex { + if event.id != "" || version.Major > 7 || (version.Major == 7 && version.Minor >= 5) { + if event.opType == events.OpTypeIndex { return eslegclient.BulkIndexAction{Index: meta}, nil } return eslegclient.BulkCreateAction{Create: meta}, nil @@ -360,17 +357,7 @@ func (client *Client) createEventBulkMeta(version version.V, event *beat.Event) return eslegclient.BulkIndexAction{Index: meta}, nil } -func (client *Client) getIndex(event *beat.Event) (string, error) { - // If this event has been dead-lettered, override its index - if event.Meta != nil { - if deadLetter, _ := event.Meta.HasKey(dead_letter_marker_field); deadLetter { - return client.deadLetterIndex, nil - } - } - return client.indexSelector.Select(event) -} - -func (client *Client) getPipeline(event *beat.Event) (string, error) { +func getPipeline(event *beat.Event, defaultSelector *outil.Selector) (string, error) { if event.Meta != nil { pipeline, err := events.GetMetaStringValue(*event, events.FieldMetaPipeline) if errors.Is(err, mapstr.ErrKeyNotFound) { @@ -383,8 +370,8 @@ func (client *Client) getPipeline(event *beat.Event) (string, error) { return strings.ToLower(pipeline), nil } - if client.pipelineSelector != nil { - return client.pipelineSelector.Select(event) + if defaultSelector != nil { + return defaultSelector.Select(event) } return "", nil } @@ -427,8 +414,8 @@ func (client *Client) bulkCollectPublishFails(result eslegclient.BulkResult, dat stats.tooMany++ } else { // hard failure, apply policy action - result, _ := data[i].Content.Meta.HasKey(dead_letter_marker_field) - if result { + encodedEvent := data[i].EncodedEvent.(*encodedEvent) + if encodedEvent.deadLetter { stats.nonIndexable++ client.log.Errorf("Can't deliver to dead letter index event (status=%v). Enable debug logs to view the event and cause.", status) client.log.Debugf("Can't deliver to dead letter index event %#v (status=%v): %s", data[i], status, msg) @@ -436,18 +423,7 @@ func (client *Client) bulkCollectPublishFails(result eslegclient.BulkResult, dat } else if client.deadLetterIndex != "" { client.log.Warnf("Cannot index event (status=%v), trying dead letter index. Enable debug logs to view the event and cause.", status) client.log.Debugf("Cannot index event %#v (status=%v): %s, trying dead letter index", data[i], status, msg) - if data[i].Content.Meta == nil { - data[i].Content.Meta = mapstr.M{ - dead_letter_marker_field: true, - } - } else { - data[i].Content.Meta[dead_letter_marker_field] = true - } - data[i].Content.Fields = mapstr.M{ - "message": data[i].Content.Fields.String(), - "error.type": status, - "error.message": string(msg), - } + client.setDeadLetter(encodedEvent, status, string(msg)) } else { // drop stats.nonIndexable++ client.log.Warnf("Cannot index event (status=%v): dropping event! Enable debug logs to view the event and cause.", status) @@ -465,6 +441,20 @@ func (client *Client) bulkCollectPublishFails(result eslegclient.BulkResult, dat return failed, stats } +func (client *Client) setDeadLetter( + encodedEvent *encodedEvent, errType int, errMsg string, +) { + encodedEvent.deadLetter = true + encodedEvent.index = client.deadLetterIndex + deadLetterReencoding := mapstr.M{ + "@timestamp": encodedEvent.timestamp, + "message": string(encodedEvent.encoding), + "error.type": errType, + "error.message": errMsg, + } + encodedEvent.encoding = []byte(deadLetterReencoding.String()) +} + func (client *Client) Connect() error { return client.conn.Connect() } diff --git a/libbeat/outputs/elasticsearch/client_integration_test.go b/libbeat/outputs/elasticsearch/client_integration_test.go index 7a8a06becca..56567931ee4 100644 --- a/libbeat/outputs/elasticsearch/client_integration_test.go +++ b/libbeat/outputs/elasticsearch/client_integration_test.go @@ -22,11 +22,7 @@ package elasticsearch import ( "context" "fmt" - "io/ioutil" "math/rand" - "net/http" - "net/http/httptest" - "net/url" "testing" "time" @@ -85,15 +81,15 @@ func testPublishEvent(t *testing.T, index string, cfg map[string]interface{}) { output, client := connectTestEsWithStats(t, cfg, index) // drop old index preparing test - client.conn.Delete(index, "", "", nil) + _, _, _ = client.conn.Delete(index, "", "", nil) - batch := outest.NewBatch(beat.Event{ + batch := encodeBatch(client, outest.NewBatch(beat.Event{ Timestamp: time.Now(), Fields: mapstr.M{ "type": "libbeat", "message": "Test message from libbeat", }, - }) + })) err := output.Publish(context.Background(), batch) if err != nil { @@ -131,7 +127,7 @@ func TestClientPublishEventWithPipeline(t *testing.T) { "index": index, "pipeline": "%{[pipeline]}", }) - client.conn.Delete(index, "", "", nil) + _, _, _ = client.conn.Delete(index, "", "", nil) // Check version if client.conn.GetVersion().Major < 5 { @@ -139,7 +135,8 @@ func TestClientPublishEventWithPipeline(t *testing.T) { } publish := func(event beat.Event) { - err := output.Publish(context.Background(), outest.NewBatch(event)) + batch := encodeBatch(client, outest.NewBatch(event)) + err := output.Publish(context.Background(), batch) if err != nil { t.Fatal(err) } @@ -167,7 +164,7 @@ func TestClientPublishEventWithPipeline(t *testing.T) { }, } - client.conn.DeletePipeline(pipeline, nil) + _, _, _ = client.conn.DeletePipeline(pipeline, nil) _, resp, err := client.conn.CreatePipeline(pipeline, nil, pipelineBody) if err != nil { t.Fatal(err) @@ -217,10 +214,10 @@ func TestClientBulkPublishEventsWithDeadletterIndex(t *testing.T) { }, }, }) - client.conn.Delete(index, "", "", nil) - client.conn.Delete(deadletterIndex, "", "", nil) + _, _, _ = client.conn.Delete(index, "", "", nil) + _, _, _ = client.conn.Delete(deadletterIndex, "", "", nil) - err := output.Publish(context.Background(), outest.NewBatch(beat.Event{ + batch := encodeBatch(client, outest.NewBatch(beat.Event{ Timestamp: time.Now(), Fields: mapstr.M{ "type": "libbeat", @@ -228,18 +225,19 @@ func TestClientBulkPublishEventsWithDeadletterIndex(t *testing.T) { "testfield": 0, }, })) + err := output.Publish(context.Background(), batch) if err != nil { t.Fatal(err) } - batch := outest.NewBatch(beat.Event{ + batch = encodeBatch(client, outest.NewBatch(beat.Event{ Timestamp: time.Now(), Fields: mapstr.M{ "type": "libbeat", "message": "Test message 2", "testfield": "foo0", }, - }) + })) err = output.Publish(context.Background(), batch) if err == nil { t.Fatal("Expecting mapping conflict") @@ -277,14 +275,15 @@ func TestClientBulkPublishEventsWithPipeline(t *testing.T) { "index": index, "pipeline": "%{[pipeline]}", }) - client.conn.Delete(index, "", "", nil) + _, _, _ = client.conn.Delete(index, "", "", nil) if client.conn.GetVersion().Major < 5 { t.Skip("Skipping tests as pipeline not available in <5.x releases") } publish := func(events ...beat.Event) { - err := output.Publish(context.Background(), outest.NewBatch(events...)) + batch := encodeBatch(client, outest.NewBatch(events...)) + err := output.Publish(context.Background(), batch) if err != nil { t.Fatal(err) } @@ -312,7 +311,7 @@ func TestClientBulkPublishEventsWithPipeline(t *testing.T) { }, } - client.conn.DeletePipeline(pipeline, nil) + _, _, _ = client.conn.DeletePipeline(pipeline, nil) _, resp, err := client.conn.CreatePipeline(pipeline, nil, pipelineBody) if err != nil { t.Fatal(err) @@ -354,14 +353,14 @@ func TestClientPublishTracer(t *testing.T) { "index": index, }) - client.conn.Delete(index, "", "", nil) + _, _, _ = client.conn.Delete(index, "", "", nil) - batch := outest.NewBatch(beat.Event{ + batch := encodeBatch(client, outest.NewBatch(beat.Event{ Timestamp: time.Now(), Fields: mapstr.M{ "message": "Hello world", }, - }) + })) tx, spans, _ := apmtest.WithTransaction(func(ctx context.Context) { err := output.Publish(ctx, batch) @@ -434,7 +433,7 @@ func connectTestEs(t *testing.T, cfg interface{}, stats outputs.Observer) (outpu client := randomClient(output).(clientWrap).Client().(*Client) // Load version number - client.Connect() + _ = client.Connect() return client, client } @@ -475,32 +474,3 @@ func randomClient(grp outputs.Group) outputs.NetworkClient { client := grp.Clients[rand.Intn(L)] return client.(outputs.NetworkClient) } - -// startTestProxy starts a proxy that redirects all connections to the specified URL -func startTestProxy(t *testing.T, redirectURL string) *httptest.Server { - t.Helper() - - realURL, err := url.Parse(redirectURL) - require.NoError(t, err) - - proxy := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - req := r.Clone(context.Background()) - req.RequestURI = "" - req.URL.Scheme = realURL.Scheme - req.URL.Host = realURL.Host - - resp, err := http.DefaultClient.Do(req) - require.NoError(t, err) - defer resp.Body.Close() - - body, err := ioutil.ReadAll(resp.Body) - require.NoError(t, err) - - for _, header := range []string{"Content-Encoding", "Content-Type"} { - w.Header().Set(header, resp.Header.Get(header)) - } - w.WriteHeader(resp.StatusCode) - w.Write(body) - })) - return proxy -} diff --git a/libbeat/outputs/elasticsearch/client_test.go b/libbeat/outputs/elasticsearch/client_test.go index 12493e28d02..28033ff3cb2 100644 --- a/libbeat/outputs/elasticsearch/client_test.go +++ b/libbeat/outputs/elasticsearch/client_test.go @@ -20,7 +20,9 @@ package elasticsearch import ( + "bytes" "context" + "encoding/json" "fmt" "io" "net/http" @@ -50,12 +52,6 @@ import ( libversion "github.com/elastic/elastic-agent-libs/version" ) -type testIndexSelector struct{} - -func (testIndexSelector) Select(event *beat.Event) (string, error) { - return "test", nil -} - type batchMock struct { events []publisher.Event ack bool @@ -117,20 +113,20 @@ func TestPublish(t *testing.T) { client := makePublishTestClient(t, esMock.URL) // Try publishing a batch that can be split - batch := &batchMock{ + batch := encodeBatch(client, &batchMock{ events: []publisher.Event{event1}, canSplit: true, - } + }) err := client.Publish(ctx, batch) assert.NoError(t, err, "Publish should split the batch without error") assert.True(t, batch.didSplit, "batch should be split") // Try publishing a batch that cannot be split - batch = &batchMock{ + batch = encodeBatch(client, &batchMock{ events: []publisher.Event{event1}, canSplit: false, - } + }) err = client.Publish(ctx, batch) assert.NoError(t, err, "Publish should drop the batch without error") @@ -145,9 +141,9 @@ func TestPublish(t *testing.T) { defer esMock.Close() client := makePublishTestClient(t, esMock.URL) - batch := &batchMock{ + batch := encodeBatch(client, &batchMock{ events: []publisher.Event{event1, event2}, - } + }) err := client.Publish(ctx, batch) @@ -171,7 +167,7 @@ func TestPublish(t *testing.T) { // test results directly without atomics/mutexes. done := false retryCount := 0 - batch := pipeline.NewBatchForTesting( + batch := encodeBatch(client, pipeline.NewBatchForTesting( []publisher.Event{event1, event2, event3}, func(b publisher.Batch) { // The retry function sends the batch back through Publish. @@ -179,11 +175,13 @@ func TestPublish(t *testing.T) { // first and then back to Publish when an output worker was // available. retryCount++ + // We shouldn't need to re-encode the events since that was done + // before the initial Publish call err := client.Publish(ctx, b) assert.NoError(t, err, "Publish should return without error") }, func() { done = true }, - ) + )) err := client.Publish(ctx, batch) assert.NoError(t, err, "Publish should return without error") @@ -220,7 +218,7 @@ func TestPublish(t *testing.T) { // test results directly without atomics/mutexes. done := false retryCount := 0 - batch := pipeline.NewBatchForTesting( + batch := encodeBatch(client, pipeline.NewBatchForTesting( []publisher.Event{event1, event2, event3}, func(b publisher.Batch) { // The retry function sends the batch back through Publish. @@ -232,7 +230,7 @@ func TestPublish(t *testing.T) { assert.NoError(t, err, "Publish should return without error") }, func() { done = true }, - ) + )) err := client.Publish(ctx, batch) assert.NoError(t, err, "Publish should return without error") @@ -308,24 +306,25 @@ func TestCollectPublishFailDeadLetterQueue(t *testing.T) { ) assert.NoError(t, err) + parseError := `{ + "root_cause" : [ + { + "type" : "mapper_parsing_exception", + "reason" : "failed to parse field [bar] of type [long] in document with id '1'. Preview of field's value: 'bar1'" + } + ], + "type" : "mapper_parsing_exception", + "reason" : "failed to parse field [bar] of type [long] in document with id '1'. Preview of field's value: 'bar1'", + "caused_by" : { + "type" : "illegal_argument_exception", + "reason" : "For input string: \"bar1\"" + } + }` response := []byte(` { "items": [ {"create": {"status": 200}}, {"create": { - "error" : { - "root_cause" : [ - { - "type" : "mapper_parsing_exception", - "reason" : "failed to parse field [bar] of type [long] in document with id '1'. Preview of field's value: 'bar1'" - } - ], - "type" : "mapper_parsing_exception", - "reason" : "failed to parse field [bar] of type [long] in document with id '1'. Preview of field's value: 'bar1'", - "caused_by" : { - "type" : "illegal_argument_exception", - "reason" : "For input string: \"bar1\"" - } - }, + "error" : ` + parseError + `, "status" : 400 } }, @@ -334,24 +333,18 @@ func TestCollectPublishFailDeadLetterQueue(t *testing.T) { `) event := publisher.Event{Content: beat.Event{Fields: mapstr.M{"bar": 1}}} + event2 := publisher.Event{Content: beat.Event{Fields: mapstr.M{"bar": 2}}} eventFail := publisher.Event{Content: beat.Event{Fields: mapstr.M{"bar": "bar1"}}} - events := []publisher.Event{event, eventFail, event} + events := encodeEvents(client, []publisher.Event{event, eventFail, event2}) res, stats := client.bulkCollectPublishFails(response, events) assert.Equal(t, 1, len(res)) if len(res) == 1 { - expected := publisher.Event{ - Content: beat.Event{ - Fields: mapstr.M{ - "message": "{\"bar\":\"bar1\"}", - "error.type": 400, - "error.message": "{\n\t\t\t\"root_cause\" : [\n\t\t\t {\n\t\t\t\t\"type\" : \"mapper_parsing_exception\",\n\t\t\t\t\"reason\" : \"failed to parse field [bar] of type [long] in document with id '1'. Preview of field's value: 'bar1'\"\n\t\t\t }\n\t\t\t],\n\t\t\t\"type\" : \"mapper_parsing_exception\",\n\t\t\t\"reason\" : \"failed to parse field [bar] of type [long] in document with id '1'. Preview of field's value: 'bar1'\",\n\t\t\t\"caused_by\" : {\n\t\t\t \"type\" : \"illegal_argument_exception\",\n\t\t\t \"reason\" : \"For input string: \\\"bar1\\\"\"\n\t\t\t}\n\t\t }", - }, - Meta: mapstr.M{ - dead_letter_marker_field: true, - }, - }, - } + expected := encodeEvent(client, eventFail) + encodedEvent := expected.EncodedEvent.(*encodedEvent) + // Mark the encoded event with the expected error + client.setDeadLetter(encodedEvent, 400, parseError) + assert.Equal(t, expected, res[0]) } assert.Equal(t, bulkResultStats{acked: 2, fails: 1, nonIndexable: 0}, stats) @@ -394,7 +387,7 @@ func TestCollectPublishFailDrop(t *testing.T) { event := publisher.Event{Content: beat.Event{Fields: mapstr.M{"bar": 1}}} eventFail := publisher.Event{Content: beat.Event{Fields: mapstr.M{"bar": "bar1"}}} - events := []publisher.Event{event, eventFail, event} + events := encodeEvents(client, []publisher.Event{event, eventFail, event}) res, stats := client.bulkCollectPublishFails(response, events) assert.Equal(t, 0, len(res)) @@ -419,7 +412,7 @@ func TestCollectPublishFailAll(t *testing.T) { `) event := publisher.Event{Content: beat.Event{Fields: mapstr.M{"field": 2}}} - events := []publisher.Event{event, event, event} + events := encodeEvents(client, []publisher.Event{event, event, event}) res, stats := client.bulkCollectPublishFails(response, events) assert.Equal(t, 3, len(res)) @@ -468,7 +461,7 @@ func TestCollectPipelinePublishFail(t *testing.T) { }`) event := publisher.Event{Content: beat.Event{Fields: mapstr.M{"field": 2}}} - events := []publisher.Event{event} + events := encodeEvents(client, []publisher.Event{event}) res, _ := client.bulkCollectPublishFails(response, events) assert.Equal(t, 1, len(res)) @@ -494,7 +487,7 @@ func BenchmarkCollectPublishFailsNone(b *testing.B) { `) event := publisher.Event{Content: beat.Event{Fields: mapstr.M{"field": 1}}} - events := []publisher.Event{event, event, event} + events := encodeEvents(client, []publisher.Event{event, event, event}) for i := 0; i < b.N; i++ { res, _ := client.bulkCollectPublishFails(response, events) @@ -523,7 +516,7 @@ func BenchmarkCollectPublishFailMiddle(b *testing.B) { event := publisher.Event{Content: beat.Event{Fields: mapstr.M{"field": 1}}} eventFail := publisher.Event{Content: beat.Event{Fields: mapstr.M{"field": 2}}} - events := []publisher.Event{event, eventFail, event} + events := encodeEvents(client, []publisher.Event{event, eventFail, event}) for i := 0; i < b.N; i++ { res, _ := client.bulkCollectPublishFails(response, events) @@ -551,7 +544,7 @@ func BenchmarkCollectPublishFailAll(b *testing.B) { `) event := publisher.Event{Content: beat.Event{Fields: mapstr.M{"field": 2}}} - events := []publisher.Event{event, event, event} + events := encodeEvents(client, []publisher.Event{event, event, event}) for i := 0; i < b.N; i++ { res, _ := client.bulkCollectPublishFails(response, events) @@ -608,7 +601,7 @@ func TestClientWithHeaders(t *testing.T) { "message": "Test message from libbeat", }} - batch := outest.NewBatch(event, event, event) + batch := encodeBatch(client, outest.NewBatch(event, event, event)) err = client.Publish(context.Background(), batch) assert.NoError(t, err) assert.Equal(t, 2, requestCount) @@ -650,16 +643,6 @@ func TestBulkEncodeEvents(t *testing.T) { index, pipeline, err := buildSelectors(im, info, cfg) require.NoError(t, err) - events := make([]publisher.Event, len(test.events)) - for i, fields := range test.events { - events[i] = publisher.Event{ - Content: beat.Event{ - Timestamp: time.Now(), - Fields: fields, - }, - } - } - client, err := NewClient( clientSettings{ observer: outputs.NewNilObserver(), @@ -670,6 +653,17 @@ func TestBulkEncodeEvents(t *testing.T) { ) assert.NoError(t, err) + events := make([]publisher.Event, len(test.events)) + for i, fields := range test.events { + events[i] = publisher.Event{ + Content: beat.Event{ + Timestamp: time.Now(), + Fields: fields, + }, + } + } + encodeEvents(client, events) + encoded, bulkItems := client.bulkEncodePublishRequest(*libversion.MustNew(test.version), events) assert.Equal(t, len(events), len(encoded), "all events should have been encoded") assert.Equal(t, 2*len(events), len(bulkItems), "incomplete bulk") @@ -717,6 +711,15 @@ func TestBulkEncodeEventsWithOpType(t *testing.T) { index, pipeline, err := buildSelectors(im, info, cfg) require.NoError(t, err) + client, _ := NewClient( + clientSettings{ + observer: outputs.NewNilObserver(), + indexSelector: index, + pipelineSelector: pipeline, + }, + nil, + ) + events := make([]publisher.Event, len(cases)) for i, fields := range cases { meta := mapstr.M{ @@ -735,15 +738,7 @@ func TestBulkEncodeEventsWithOpType(t *testing.T) { }, } } - - client, _ := NewClient( - clientSettings{ - observer: outputs.NewNilObserver(), - indexSelector: index, - pipelineSelector: pipeline, - }, - nil, - ) + encodeEvents(client, events) encoded, bulkItems := client.bulkEncodePublishRequest(*libversion.MustNew(version.GetDefaultVersion()), events) require.Equal(t, len(events)-1, len(encoded), "all events should have been encoded") @@ -841,7 +836,7 @@ func TestPublishEventsWithBulkFiltering(t *testing.T) { client := makePublishTestClient(t, esMock.URL, nil) // Try publishing a batch that can be split - events := []publisher.Event{event1} + events := encodeEvents(client, []publisher.Event{event1}) evt, err := client.publishEvents(ctx, events) require.NoError(t, err) require.Equal(t, len(recParams), len(expectedFilteringParams)) @@ -872,7 +867,7 @@ func TestPublishEventsWithBulkFiltering(t *testing.T) { client := makePublishTestClient(t, esMock.URL, configParams) // Try publishing a batch that can be split - events := []publisher.Event{event1} + events := encodeEvents(client, []publisher.Event{event1}) evt, err := client.publishEvents(ctx, events) require.NoError(t, err) require.Equal(t, len(recParams), len(expectedFilteringParams)+len(configParams)) @@ -914,29 +909,36 @@ func TestPublishEventsWithBulkFiltering(t *testing.T) { client := makePublishTestClient(t, esMock.URL, nil) // Try publishing a batch that can be split - events := []publisher.Event{event1} + events := encodeEvents(client, []publisher.Event{event1}) _, err := client.publishEvents(ctx, events) require.NoError(t, err) require.Equal(t, len(recParams), 1) }) } -func TestGetIndex(t *testing.T) { +func TestSetDeadLetter(t *testing.T) { dead_letter_index := "dead_index" client := &Client{ deadLetterIndex: dead_letter_index, indexSelector: testIndexSelector{}, } - event := &beat.Event{ - Meta: make(map[string]interface{}), + e := &encodedEvent{ + index: "original_index", + } + errType := 123 + errStr := "test error string" + client.setDeadLetter(e, errType, errStr) + + assert.True(t, e.deadLetter, "setDeadLetter should set the event's deadLetter flag") + assert.Equal(t, dead_letter_index, e.index, "setDeadLetter should overwrite the event's original index") + + var errFields struct { + ErrType int `json:"error.type"` + ErrMessage string `json:"error.message"` } - index, err := client.getIndex(event) - require.NoError(t, err, "getIndex call must succeed") - assert.Equal(t, "test", index, "Event with no dead letter marker should use the client's index selector") - - event.Meta[dead_letter_marker_field] = true - index, err = client.getIndex(event) - require.NoError(t, err, "getIndex call must succeed") - assert.Equal(t, dead_letter_index, index, "Event with dead letter marker should use the client's dead letter index") + err := json.NewDecoder(bytes.NewReader(e.encoding)).Decode(&errFields) + require.NoError(t, err, "json decoding of encoded event should succeed") + assert.Equal(t, errType, errFields.ErrType, "encoded error.type should match value in setDeadLetter") + assert.Equal(t, errStr, errFields.ErrMessage, "encoded error.message should match value in setDeadLetter") } diff --git a/libbeat/outputs/elasticsearch/dead_letter_index.go b/libbeat/outputs/elasticsearch/dead_letter_index.go index d2788205691..43541831478 100644 --- a/libbeat/outputs/elasticsearch/dead_letter_index.go +++ b/libbeat/outputs/elasticsearch/dead_letter_index.go @@ -25,9 +25,8 @@ import ( ) const ( - dead_letter_marker_field = "deadlettered" - drop = "drop" - dead_letter_index = "dead_letter_index" + drop = "drop" + dead_letter_index = "dead_letter_index" ) func deadLetterIndexForConfig(config *config.C) (string, error) { diff --git a/libbeat/outputs/elasticsearch/elasticsearch.go b/libbeat/outputs/elasticsearch/elasticsearch.go index 616e08e08f6..9bc8498afe4 100644 --- a/libbeat/outputs/elasticsearch/elasticsearch.go +++ b/libbeat/outputs/elasticsearch/elasticsearch.go @@ -35,7 +35,7 @@ const logSelector = "elasticsearch" func makeES( im outputs.IndexManager, - beat beat.Info, + beatInfo beat.Info, observer outputs.Observer, cfg *config.C, ) (outputs.Group, error) { @@ -46,7 +46,7 @@ func makeES( } } - index, pipeline, err := buildSelectors(im, beat, cfg) + indexSelector, pipelineSelector, err := buildSelectors(im, beatInfo, cfg) if err != nil { return outputs.Fail(err) } @@ -94,6 +94,9 @@ func makeES( params = nil } + encoderFactory := newEventEncoderFactory( + esConfig.EscapeHTML, indexSelector, pipelineSelector) + clients := make([]outputs.NetworkClient, len(hosts)) for i, host := range hosts { esURL, err := common.MakeURL(esConfig.Protocol, esConfig.Path, host, 9200) @@ -106,7 +109,7 @@ func makeES( client, err = NewClient(clientSettings{ connection: eslegclient.ConnectionSettings{ URL: esURL, - Beatname: beat.Beat, + Beatname: beatInfo.Beat, Kerberos: esConfig.Kerberos, Username: esConfig.Username, Password: esConfig.Password, @@ -119,8 +122,8 @@ func makeES( Transport: esConfig.Transport, IdleConnTimeout: esConfig.Transport.IdleConnTimeout, }, - indexSelector: index, - pipelineSelector: pipeline, + indexSelector: indexSelector, + pipelineSelector: pipelineSelector, observer: observer, deadLetterIndex: deadLetterIndex, }, &connectCallbackRegistry) @@ -132,7 +135,7 @@ func makeES( clients[i] = client } - return outputs.SuccessNet(esConfig.Queue, esConfig.LoadBalance, esConfig.BulkMaxSize, esConfig.MaxRetries, clients) + return outputs.SuccessNet(esConfig.Queue, esConfig.LoadBalance, esConfig.BulkMaxSize, esConfig.MaxRetries, encoderFactory, clients) } func buildSelectors( diff --git a/libbeat/outputs/elasticsearch/elasticsearch_test.go b/libbeat/outputs/elasticsearch/elasticsearch_test.go index 7950bdd6323..25902801cbb 100644 --- a/libbeat/outputs/elasticsearch/elasticsearch_test.go +++ b/libbeat/outputs/elasticsearch/elasticsearch_test.go @@ -20,7 +20,7 @@ package elasticsearch import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/esleg/eslegclient" @@ -120,21 +120,13 @@ func TestPipelineSelection(t *testing.T) { test := _test t.Run(name, func(t *testing.T) { selector, err := buildPipelineSelector(config.MustNewConfigFrom(test.cfg)) - assert.NoError(t, err) - - client, err := NewClient( - clientSettings{ - pipelineSelector: &selector, - }, - nil, - ) - assert.NoError(t, err) + require.NoError(t, err) if err != nil { t.Fatalf("Failed to parse configuration: %v", err) } - got, err := client.getPipeline(&test.event) + got, err := getPipeline(&test.event, &selector) if err != nil { t.Fatalf("Failed to create pipeline name: %v", err) } diff --git a/libbeat/outputs/elasticsearch/event_encoder.go b/libbeat/outputs/elasticsearch/event_encoder.go new file mode 100644 index 00000000000..0441695d53c --- /dev/null +++ b/libbeat/outputs/elasticsearch/event_encoder.go @@ -0,0 +1,138 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package elasticsearch + +import ( + "bytes" + "fmt" + "time" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/beat/events" + "github.com/elastic/beats/v7/libbeat/esleg/eslegclient" + "github.com/elastic/beats/v7/libbeat/outputs" + "github.com/elastic/beats/v7/libbeat/outputs/outil" + "github.com/elastic/beats/v7/libbeat/publisher" + "github.com/elastic/beats/v7/libbeat/publisher/queue" +) + +type eventEncoder struct { + buf *bytes.Buffer + enc eslegclient.BodyEncoder + pipelineSelector *outil.Selector + indexSelector outputs.IndexSelector +} + +type encodedEvent struct { + // If err is set, the event couldn't be encoded, and other fields should + // not be relied on. + err error + + // If deadLetter is true, this event produced an ingestion error on a + // previous attempt, and is now being retried as a bare event with all + // contents included as a raw string in the "message" field. + deadLetter bool + + // timestamp is the timestamp from the source beat.Event. It's only used + // when reencoding for the dead letter index, so it isn't strictly needed + // but it avoids deserializing the encoded event to recover one field if + // there's an ingestion error. + timestamp time.Time + + id string + opType events.OpType + pipeline string + index string + encoding []byte +} + +func newEventEncoderFactory( + escapeHTML bool, + indexSelector outputs.IndexSelector, + pipelineSelector *outil.Selector, +) queue.EncoderFactory { + return func() queue.Encoder { + return newEventEncoder(escapeHTML, indexSelector, pipelineSelector) + } +} + +func newEventEncoder(escapeHTML bool, + indexSelector outputs.IndexSelector, + pipelineSelector *outil.Selector, +) queue.Encoder { + buf := bytes.NewBuffer(nil) + enc := eslegclient.NewJSONEncoder(buf, escapeHTML) + return &eventEncoder{ + buf: buf, + enc: enc, + pipelineSelector: pipelineSelector, + indexSelector: indexSelector, + } +} + +func (pe *eventEncoder) EncodeEntry(entry queue.Entry) (queue.Entry, int) { + e, ok := entry.(publisher.Event) + if !ok { + // Currently all queue entries are publisher.Events but let's be cautious. + return entry, 0 + } + + encodedEvent := pe.encodeRawEvent(&e.Content) + e.EncodedEvent = encodedEvent + e.Content = beat.Event{} + return e, len(encodedEvent.encoding) +} + +// Note: we can't early-encode the bulk metadata that goes with an event, +// because it depends on the upstream Elasticsearch version and thus requires +// a live client connection. However, benchmarks show that even for a known +// version, encoding the bulk metadata and the event together gives slightly +// worse performance, so there's no reason to try optimizing around this +// dependency. +func (pe *eventEncoder) encodeRawEvent(e *beat.Event) *encodedEvent { + opType := events.GetOpType(*e) + pipeline, err := getPipeline(e, pe.pipelineSelector) + if err != nil { + return &encodedEvent{err: fmt.Errorf("failed to select event pipeline: %w", err)} + } + var index string + if pe.indexSelector != nil { + index, err = pe.indexSelector.Select(e) + if err != nil { + return &encodedEvent{err: fmt.Errorf("failed to select event index: %w", err)} + } + } + + id, _ := events.GetMetaStringValue(*e, events.FieldMetaID) + + err = pe.enc.Marshal(e) + if err != nil { + return &encodedEvent{err: fmt.Errorf("failed to encode event for output: %w", err)} + } + bufBytes := pe.buf.Bytes() + bytes := make([]byte, len(bufBytes)) + copy(bytes, bufBytes) + return &encodedEvent{ + id: id, + timestamp: e.Timestamp, + opType: opType, + pipeline: pipeline, + index: index, + encoding: bytes, + } +} diff --git a/libbeat/outputs/elasticsearch/event_encoder_test.go b/libbeat/outputs/elasticsearch/event_encoder_test.go new file mode 100644 index 00000000000..a3aef08ca23 --- /dev/null +++ b/libbeat/outputs/elasticsearch/event_encoder_test.go @@ -0,0 +1,142 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package elasticsearch + +import ( + "encoding/json" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/beat/events" + "github.com/elastic/beats/v7/libbeat/publisher" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +type testIndexSelector struct{} + +func (testIndexSelector) Select(event *beat.Event) (string, error) { + return "test", nil +} + +func TestEncodeEntry(t *testing.T) { + indexSelector := testIndexSelector{} + + encoder := newEventEncoder(true, indexSelector, nil) + + timestamp := time.Date(1980, time.January, 1, 0, 0, 0, 0, time.UTC) + pubEvent := publisher.Event{ + Content: beat.Event{ + Timestamp: timestamp, + Fields: mapstr.M{ + "test_field": "test_value", + "number_field": 5, + "nested": mapstr.M{ + "nested_field": "nested_value", + }, + }, + Meta: mapstr.M{ + events.FieldMetaOpType: "create", + events.FieldMetaPipeline: "TEST_PIPELINE", + events.FieldMetaID: "test_id", + }, + }, + } + + encoded, encodedSize := encoder.EncodeEntry(pubEvent) + encPubEvent, ok := encoded.(publisher.Event) + + // Check the resulting publisher.Event + require.True(t, ok, "EncodeEntry must return a publisher.Event") + require.NotNil(t, encPubEvent.EncodedEvent, "EncodeEntry must set EncodedEvent") + assert.Nil(t, encPubEvent.Content.Fields, "EncodeEntry should clear event.Content") + + // Check the inner encodedEvent + encBeatEvent, ok := encPubEvent.EncodedEvent.(*encodedEvent) + require.True(t, ok, "EncodeEntry should set EncodedEvent to a *encodedEvent") + require.Equal(t, len(encBeatEvent.encoding), encodedSize, "Reported size should match encoded buffer") + + // Check event metadata + assert.Equal(t, "test_id", encBeatEvent.id, "Event id should match original metadata") + assert.Equal(t, "test", encBeatEvent.index, "Event should have the index set by its selector") + assert.Equal(t, "test_pipeline", encBeatEvent.pipeline, "Event pipeline should match original metadata") + assert.Equal(t, timestamp, encBeatEvent.timestamp, "encodedEvent.timestamp should match the original event") + assert.Equal(t, events.OpTypeCreate, encBeatEvent.opType, "encoded opType should match the original metadata") + assert.False(t, encBeatEvent.deadLetter, "encoded event shouldn't have deadLetter flag set") + + // Check encoded fields + var eventContent struct { + Timestamp time.Time `json:"@timestamp"` + TestField string `json:"test_field"` + NumberField int `json:"number_field"` + Nested struct { + NestedField string `json:"nested_field"` + } `json:"nested"` + } + err := json.Unmarshal(encBeatEvent.encoding, &eventContent) + require.NoError(t, err, "encoding should contain valid json") + assert.Equal(t, timestamp, eventContent.Timestamp, "Encoded timestamp should match original") + assert.Equal(t, "test_value", eventContent.TestField, "Encoded field should match original") + assert.Equal(t, 5, eventContent.NumberField, "Encoded field should match original") + assert.Equal(t, "nested_value", eventContent.Nested.NestedField, "Encoded field should match original") +} + +// encodeBatch encodes a publisher.Batch so it can be provided to +// Client.Publish and other helpers. +// This modifies the batch in place, but also returns its input batch +// to allow for easy chaining while creating test batches. +func encodeBatch[B publisher.Batch](client *Client, batch B) B { + encodeEvents(client, batch.Events()) + return batch +} + +// A test helper to encode an event array for an Elasticsearch client. +// This isn't particularly efficient since it creates a new encoder object +// for every set of events, but it's much easier and the difference is +// negligible for any non-benchmark tests. +// This modifies the slice in place, but also returns its input slice +// to allow for easy chaining while creating test events. +func encodeEvents(client *Client, events []publisher.Event) []publisher.Event { + encoder := newEventEncoder( + client.conn.EscapeHTML, + client.indexSelector, + client.pipelineSelector, + ) + for i := range events { + // Skip encoding if there's already encoded data present + if events[i].EncodedEvent == nil { + encoded, _ := encoder.EncodeEntry(events[i]) + event := encoded.(publisher.Event) + events[i] = event + } + } + return events +} + +func encodeEvent(client *Client, event publisher.Event) publisher.Event { + encoder := newEventEncoder( + client.conn.EscapeHTML, + client.indexSelector, + client.pipelineSelector, + ) + encoded, _ := encoder.EncodeEntry(event) + return encoded.(publisher.Event) +} diff --git a/libbeat/outputs/fileout/file.go b/libbeat/outputs/fileout/file.go index 34c57f29791..d14bd99d69a 100644 --- a/libbeat/outputs/fileout/file.go +++ b/libbeat/outputs/fileout/file.go @@ -66,7 +66,7 @@ func makeFileout( return outputs.Fail(err) } - return outputs.Success(foConfig.Queue, -1, 0, fo) + return outputs.Success(foConfig.Queue, -1, 0, nil, fo) } func (out *fileOutput) init(beat beat.Info, c fileOutConfig) error { diff --git a/libbeat/outputs/kafka/kafka.go b/libbeat/outputs/kafka/kafka.go index d004bd16ba3..cb23823a95a 100644 --- a/libbeat/outputs/kafka/kafka.go +++ b/libbeat/outputs/kafka/kafka.go @@ -84,7 +84,7 @@ func makeKafka( if kConfig.MaxRetries < 0 { retry = -1 } - return outputs.Success(kConfig.Queue, kConfig.BulkMaxSize, retry, client) + return outputs.Success(kConfig.Queue, kConfig.BulkMaxSize, retry, nil, client) } // buildTopicSelector builds the topic selector for standalone Beat and when diff --git a/libbeat/outputs/logstash/logstash.go b/libbeat/outputs/logstash/logstash.go index 072ec049f6f..c4c51ae5437 100644 --- a/libbeat/outputs/logstash/logstash.go +++ b/libbeat/outputs/logstash/logstash.go @@ -85,5 +85,5 @@ func makeLogstash( clients[i] = client } - return outputs.SuccessNet(lsConfig.Queue, lsConfig.LoadBalance, lsConfig.BulkMaxSize, lsConfig.MaxRetries, clients) + return outputs.SuccessNet(lsConfig.Queue, lsConfig.LoadBalance, lsConfig.BulkMaxSize, lsConfig.MaxRetries, nil, clients) } diff --git a/libbeat/outputs/logstash/logstash_integration_test.go b/libbeat/outputs/logstash/logstash_integration_test.go index 2cfbcd03974..442145835df 100644 --- a/libbeat/outputs/logstash/logstash_integration_test.go +++ b/libbeat/outputs/logstash/logstash_integration_test.go @@ -38,6 +38,8 @@ import ( _ "github.com/elastic/beats/v7/libbeat/outputs/elasticsearch" "github.com/elastic/beats/v7/libbeat/outputs/outest" "github.com/elastic/beats/v7/libbeat/outputs/outil" + "github.com/elastic/beats/v7/libbeat/publisher" + "github.com/elastic/beats/v7/libbeat/publisher/queue" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/elastic-agent-libs/transport/httpcommon" @@ -61,6 +63,7 @@ type esConnection struct { type testOutputer struct { outputs.NetworkClient *esConnection + encoder queue.Encoder } type esSource interface { @@ -161,7 +164,7 @@ func newTestLogstashOutput(t *testing.T, test string, tls bool) *testOutputer { index := testLogstashIndex(test) connection := esConnect(t, index) - return &testOutputer{output, connection} + return &testOutputer{output, connection, nil} } func newTestElasticsearchOutput(t *testing.T, test string) *testOutputer { @@ -201,6 +204,9 @@ func newTestElasticsearchOutput(t *testing.T, test string) *testOutputer { es := &testOutputer{} es.NetworkClient = grp.Clients[0].(outputs.NetworkClient) es.esConnection = connection + // The Elasticsearch output requires events to be encoded + // before calling Publish, so create an event encoder. + es.encoder = grp.EncoderFactory() es.Connect() return es @@ -552,12 +558,13 @@ func checkEvent(t *testing.T, ls, es map[string]interface{}) { } func (t *testOutputer) PublishEvent(event beat.Event) { - t.Publish(context.Background(), outest.NewBatch(event)) + batch := encodeBatch(t.encoder, outest.NewBatch(event)) + t.Publish(context.Background(), batch) } func (t *testOutputer) BulkPublish(events []beat.Event) bool { ok := false - batch := outest.NewBatch(events...) + batch := encodeBatch(t.encoder, outest.NewBatch(events...)) var wg sync.WaitGroup wg.Add(1) @@ -570,3 +577,26 @@ func (t *testOutputer) BulkPublish(events []beat.Event) bool { wg.Wait() return ok } + +// encodeBatch encodes a publisher.Batch so it can be provided to +// Client.Publish and other helpers. +// This modifies the batch in place, but also returns its input batch +// to allow for easy chaining while creating test batches. +func encodeBatch[B publisher.Batch](encoder queue.Encoder, batch B) B { + if encoder != nil { + encodeEvents(encoder, batch.Events()) + } + return batch +} + +func encodeEvents(encoder queue.Encoder, events []publisher.Event) []publisher.Event { + for i := range events { + // Skip encoding if there's already encoded data present + if events[i].EncodedEvent == nil { + encoded, _ := encoder.EncodeEntry(events[i]) + event := encoded.(publisher.Event) + events[i] = event + } + } + return events +} diff --git a/libbeat/outputs/output_reg.go b/libbeat/outputs/output_reg.go index 3d2675c2ce2..fdd8e22a663 100644 --- a/libbeat/outputs/output_reg.go +++ b/libbeat/outputs/output_reg.go @@ -59,6 +59,22 @@ type Group struct { BatchSize int Retry int QueueFactory queue.QueueFactory + + // If the output supports early encoding (where events are converted to their + // output-serialized form before entering the queue) it should provide an + // encoder factory here. Events will be processed using the resulting encoders + // before being returned from the queue. This can provide significant cpu and + // memory savings for outputs that support it. + // - Each encoder will be accessed from only one goroutine at a time. + // - Encoders should add the event's output-serialized form, along with any + // metadata needed to handle a Publish call, to the EncodedEvent field of + // the underlying publisher.Event. + // - Encoders should clear the Content field of the underlying publisher.Event + // so memory can be reclaimed for the unencoded version. + // - If there is a fatal error in encoding, provide a non-nil EncodedEvent + // and clear Content anyway. Metadata about the error should be saved in + // EncodedEvent and reported when Publish is called. + EncoderFactory queue.EncoderFactory } // RegisterType registers a new output type. diff --git a/libbeat/outputs/redis/redis.go b/libbeat/outputs/redis/redis.go index 9814d6abee7..d0cba1e7061 100644 --- a/libbeat/outputs/redis/redis.go +++ b/libbeat/outputs/redis/redis.go @@ -165,7 +165,7 @@ func makeRedis( clients[i] = newBackoffClient(client, rConfig.Backoff.Init, rConfig.Backoff.Max) } - return outputs.SuccessNet(rConfig.Queue, rConfig.LoadBalance, rConfig.BulkMaxSize, rConfig.MaxRetries, clients) + return outputs.SuccessNet(rConfig.Queue, rConfig.LoadBalance, rConfig.BulkMaxSize, rConfig.MaxRetries, nil, clients) } func buildKeySelector(cfg *config.C) (outil.Selector, error) { diff --git a/libbeat/outputs/util.go b/libbeat/outputs/util.go index cab6b99aebe..8b3d96fcaa5 100644 --- a/libbeat/outputs/util.go +++ b/libbeat/outputs/util.go @@ -35,7 +35,7 @@ func Fail(err error) (Group, error) { return Group{}, err } // instances. The first argument is expected to contain a queue // config.Namespace. The queue config is passed to assign the queue // factory when elastic-agent reloads the output. -func Success(cfg config.Namespace, batchSize, retry int, clients ...Client) (Group, error) { +func Success(cfg config.Namespace, batchSize, retry int, encoderFactory queue.EncoderFactory, clients ...Client) (Group, error) { var q queue.QueueFactory if cfg.IsSet() && cfg.Config().Enabled() { switch cfg.Name() { @@ -59,10 +59,11 @@ func Success(cfg config.Namespace, batchSize, retry int, clients ...Client) (Gro } } return Group{ - Clients: clients, - BatchSize: batchSize, - Retry: retry, - QueueFactory: q, + Clients: clients, + BatchSize: batchSize, + Retry: retry, + QueueFactory: q, + EncoderFactory: encoderFactory, }, nil } @@ -79,12 +80,12 @@ func NetworkClients(netclients []NetworkClient) []Client { // The first argument is expected to contain a queue config.Namespace. // The queue config is passed to assign the queue factory when // elastic-agent reloads the output. -func SuccessNet(cfg config.Namespace, loadbalance bool, batchSize, retry int, netclients []NetworkClient) (Group, error) { +func SuccessNet(cfg config.Namespace, loadbalance bool, batchSize, retry int, encoderFactory queue.EncoderFactory, netclients []NetworkClient) (Group, error) { if !loadbalance { - return Success(cfg, batchSize, retry, NewFailoverClient(netclients)) + return Success(cfg, batchSize, retry, encoderFactory, NewFailoverClient(netclients)) } clients := NetworkClients(netclients) - return Success(cfg, batchSize, retry, clients...) + return Success(cfg, batchSize, retry, encoderFactory, clients...) } diff --git a/libbeat/publisher/event.go b/libbeat/publisher/event.go index 83dbb22f777..77ab6716f99 100644 --- a/libbeat/publisher/event.go +++ b/libbeat/publisher/event.go @@ -68,6 +68,12 @@ type Event struct { Content beat.Event Flags EventFlags Cache EventCache + + // If the output provides an early encoder for incoming events, + // it should store the encoded form in EncodedEvent and clear Content + // to free the unencoded data. The updated event will be provided to + // output workers when calling Publish. + EncodedEvent interface{} } // EventFlags provides additional flags/option types for used with the outputs. diff --git a/libbeat/publisher/pipeline/client_test.go b/libbeat/publisher/pipeline/client_test.go index 015d8f70c9d..4ed45d25628 100644 --- a/libbeat/publisher/pipeline/client_test.go +++ b/libbeat/publisher/pipeline/client_test.go @@ -131,7 +131,7 @@ func TestClient(t *testing.T) { Events: 5, MaxGetRequest: 1, FlushTimeout: time.Millisecond, - }, 5) + }, 5, nil) // model a processor that we're going to make produce errors after p := &testProcessor{} @@ -243,7 +243,7 @@ func TestClientWaitClose(t *testing.T) { } logp.TestingSetup() - q := memqueue.NewQueue(logp.L(), nil, memqueue.Settings{Events: 1}, 0) + q := memqueue.NewQueue(logp.L(), nil, memqueue.Settings{Events: 1}, 0, nil) pipeline := makePipeline(Settings{}, q) defer pipeline.Close() diff --git a/libbeat/publisher/pipeline/controller.go b/libbeat/publisher/pipeline/controller.go index 1c480c01bce..bb75c9619c5 100644 --- a/libbeat/publisher/pipeline/controller.go +++ b/libbeat/publisher/pipeline/controller.go @@ -267,11 +267,11 @@ func (c *outputController) createQueueIfNeeded(outGrp outputs.Group) { factory = c.queueFactory } - queue, err := factory(logger, c.onACK, c.inputQueueSize) + queue, err := factory(logger, c.onACK, c.inputQueueSize, outGrp.EncoderFactory) if err != nil { logger.Errorf("queue creation failed, falling back to default memory queue, check your queue configuration") s, _ := memqueue.SettingsForUserConfig(nil) - queue = memqueue.NewQueue(logger, c.onACK, s, c.inputQueueSize) + queue = memqueue.NewQueue(logger, c.onACK, s, c.inputQueueSize, outGrp.EncoderFactory) } c.queue = queue @@ -295,11 +295,11 @@ func (c *outputController) createQueueIfNeeded(outGrp outputs.Group) { // a producer for a nonexistent queue. type emptyProducer struct{} -func (emptyProducer) Publish(_ interface{}) (queue.EntryID, bool) { +func (emptyProducer) Publish(_ queue.Entry) (queue.EntryID, bool) { return 0, false } -func (emptyProducer) TryPublish(_ interface{}) (queue.EntryID, bool) { +func (emptyProducer) TryPublish(_ queue.Entry) (queue.EntryID, bool) { return 0, false } diff --git a/libbeat/publisher/pipeline/controller_test.go b/libbeat/publisher/pipeline/controller_test.go index 7384e5f7128..6834af2c7f3 100644 --- a/libbeat/publisher/pipeline/controller_test.go +++ b/libbeat/publisher/pipeline/controller_test.go @@ -189,7 +189,7 @@ func TestOutputQueueFactoryTakesPrecedence(t *testing.T) { func TestFailedQueueFactoryRevertsToDefault(t *testing.T) { defaultSettings, _ := memqueue.SettingsForUserConfig(nil) - failedFactory := func(_ *logp.Logger, _ func(int), _ int) (queue.Queue, error) { + failedFactory := func(_ *logp.Logger, _ func(int), _ int, _ queue.EncoderFactory) (queue.Queue, error) { return nil, fmt.Errorf("This queue creation intentionally failed") } controller := outputController{ diff --git a/libbeat/publisher/pipeline/pipeline.go b/libbeat/publisher/pipeline/pipeline.go index cf03163750e..37bf437395c 100644 --- a/libbeat/publisher/pipeline/pipeline.go +++ b/libbeat/publisher/pipeline/pipeline.go @@ -255,7 +255,7 @@ func (p *Pipeline) ConnectWith(cfg beat.ClientConfig) (beat.Client, error) { producerCfg := queue.ProducerConfig{} if client.eventWaitGroup != nil || cfg.ClientListener != nil { - producerCfg.OnDrop = func(event interface{}) { + producerCfg.OnDrop = func(event queue.Entry) { publisherEvent, _ := event.(publisher.Event) if cfg.ClientListener != nil { cfg.ClientListener.DroppedOnPublish(publisherEvent.Content) diff --git a/libbeat/publisher/pipeline/pipeline_test.go b/libbeat/publisher/pipeline/pipeline_test.go index 1278f5196ab..5a236acc9c0 100644 --- a/libbeat/publisher/pipeline/pipeline_test.go +++ b/libbeat/publisher/pipeline/pipeline_test.go @@ -32,7 +32,7 @@ type testQueue struct { } type testProducer struct { - publish func(try bool, event interface{}) (queue.EntryID, bool) + publish func(try bool, event queue.Entry) (queue.EntryID, bool) cancel func() int } @@ -72,14 +72,14 @@ func (q *testQueue) Get(sz int) (queue.Batch, error) { return nil, nil } -func (p *testProducer) Publish(event interface{}) (queue.EntryID, bool) { +func (p *testProducer) Publish(event queue.Entry) (queue.EntryID, bool) { if p.publish != nil { return p.publish(false, event) } return 0, false } -func (p *testProducer) TryPublish(event interface{}) (queue.EntryID, bool) { +func (p *testProducer) TryPublish(event queue.Entry) (queue.EntryID, bool) { if p.publish != nil { return p.publish(true, event) } @@ -118,7 +118,7 @@ func makeTestQueue() queue.Queue { var producer *testProducer p := blockingProducer(cfg) producer = &testProducer{ - publish: func(try bool, event interface{}) (queue.EntryID, bool) { + publish: func(try bool, event queue.Entry) (queue.EntryID, bool) { if try { return p.TryPublish(event) } @@ -150,7 +150,7 @@ func blockingProducer(_ queue.ProducerConfig) queue.Producer { waiting := atomic.MakeInt(0) return &testProducer{ - publish: func(_ bool, _ interface{}) (queue.EntryID, bool) { + publish: func(_ bool, _ queue.Entry) (queue.EntryID, bool) { waiting.Inc() <-sig return 0, false diff --git a/libbeat/publisher/pipeline/stress/out.go b/libbeat/publisher/pipeline/stress/out.go index d1014b8d782..03ea06d3be8 100644 --- a/libbeat/publisher/pipeline/stress/out.go +++ b/libbeat/publisher/pipeline/stress/out.go @@ -67,7 +67,7 @@ func makeTestOutput(_ outputs.IndexManager, beat beat.Info, observer outputs.Obs clients[i] = client } - return outputs.Success(config.Queue, config.BulkMaxSize, config.Retry, clients...) + return outputs.Success(config.Queue, config.BulkMaxSize, config.Retry, nil, clients...) } func (*testOutput) Close() error { return nil } diff --git a/libbeat/publisher/pipeline/ttl_batch_test.go b/libbeat/publisher/pipeline/ttl_batch_test.go index 5e277d5042c..4c5207acbb0 100644 --- a/libbeat/publisher/pipeline/ttl_batch_test.go +++ b/libbeat/publisher/pipeline/ttl_batch_test.go @@ -25,6 +25,7 @@ import ( "github.com/stretchr/testify/require" "github.com/elastic/beats/v7/libbeat/publisher" + "github.com/elastic/beats/v7/libbeat/publisher/queue" ) func TestBatchSplitRetry(t *testing.T) { @@ -128,7 +129,7 @@ func (b *mockQueueBatch) Count() int { func (b *mockQueueBatch) Done() { } -func (b *mockQueueBatch) Entry(i int) interface{} { +func (b *mockQueueBatch) Entry(i int) queue.Entry { return fmt.Sprintf("event %v", i) } diff --git a/libbeat/publisher/queue/diskqueue/benchmark_test.go b/libbeat/publisher/queue/diskqueue/benchmark_test.go index 8bd2a23276c..1ac91e57ce1 100644 --- a/libbeat/publisher/queue/diskqueue/benchmark_test.go +++ b/libbeat/publisher/queue/diskqueue/benchmark_test.go @@ -100,7 +100,7 @@ func setup(b *testing.B, encrypt bool, compress bool, protobuf bool) (*diskQueue } s.UseCompression = compress s.UseProtobuf = protobuf - q, err := NewQueue(logp.L(), nil, s) + q, err := NewQueue(logp.L(), nil, s, nil) if err != nil { panic(err) } @@ -118,7 +118,7 @@ func setup(b *testing.B, encrypt bool, compress bool, protobuf bool) (*diskQueue func publishEvents(p queue.Producer, num int, protobuf bool) { for i := 0; i < num; i++ { - var e interface{} + var e queue.Entry if protobuf { e = makeMessagesEvent() } else { diff --git a/libbeat/publisher/queue/diskqueue/consumer.go b/libbeat/publisher/queue/diskqueue/consumer.go index 3515d0d2820..0ebdcef5ad3 100644 --- a/libbeat/publisher/queue/diskqueue/consumer.go +++ b/libbeat/publisher/queue/diskqueue/consumer.go @@ -86,7 +86,7 @@ func (batch *diskQueueBatch) Count() int { return len(batch.frames) } -func (batch *diskQueueBatch) Entry(i int) interface{} { +func (batch *diskQueueBatch) Entry(i int) queue.Entry { return batch.frames[i].event } diff --git a/libbeat/publisher/queue/diskqueue/frames.go b/libbeat/publisher/queue/diskqueue/frames.go index f0bd7d3b0b6..2043c5b649b 100644 --- a/libbeat/publisher/queue/diskqueue/frames.go +++ b/libbeat/publisher/queue/diskqueue/frames.go @@ -17,6 +17,8 @@ package diskqueue +import "github.com/elastic/beats/v7/libbeat/publisher/queue" + // Every data frame read from the queue is assigned a unique sequential // integer, which is used to keep track of which frames have been // acknowledged. @@ -52,7 +54,7 @@ type readFrame struct { id frameID // The event decoded from the data frame. - event interface{} + event queue.Entry // How much space this frame occupied on disk (before deserialization), // including the frame header / footer. diff --git a/libbeat/publisher/queue/diskqueue/producer.go b/libbeat/publisher/queue/diskqueue/producer.go index 7471c2b4701..69725c62ccc 100644 --- a/libbeat/publisher/queue/diskqueue/producer.go +++ b/libbeat/publisher/queue/diskqueue/producer.go @@ -49,16 +49,16 @@ type producerWriteRequest struct { // diskQueueProducer implementation of the queue.Producer interface // -func (producer *diskQueueProducer) Publish(event interface{}) (queue.EntryID, bool) { +func (producer *diskQueueProducer) Publish(event queue.Entry) (queue.EntryID, bool) { return 0, producer.publish(event, true) } -func (producer *diskQueueProducer) TryPublish(event interface{}) (queue.EntryID, bool) { +func (producer *diskQueueProducer) TryPublish(event queue.Entry) (queue.EntryID, bool) { return 0, producer.publish(event, false) } func (producer *diskQueueProducer) publish( - event interface{}, shouldBlock bool, + event queue.Entry, shouldBlock bool, ) bool { if producer.cancelled { return false diff --git a/libbeat/publisher/queue/diskqueue/queue.go b/libbeat/publisher/queue/diskqueue/queue.go index 74fff3fea64..5c04f9a0385 100644 --- a/libbeat/publisher/queue/diskqueue/queue.go +++ b/libbeat/publisher/queue/diskqueue/queue.go @@ -110,8 +110,9 @@ func FactoryForSettings(settings Settings) queue.QueueFactory { logger *logp.Logger, ackCallback func(eventCount int), inputQueueSize int, + encoderFactory queue.EncoderFactory, ) (queue.Queue, error) { - return NewQueue(logger, ackCallback, settings) + return NewQueue(logger, ackCallback, settings, encoderFactory) } } @@ -121,6 +122,7 @@ func NewQueue( logger *logp.Logger, writeToDiskCallback func(eventCount int), settings Settings, + encoderFactory queue.EncoderFactory, ) (*diskQueue, error) { logger = logger.Named("diskqueue") logger.Debugf( @@ -212,6 +214,11 @@ func NewQueue( activeFrameCount -= int(nextReadPosition.frameIndex) logger.Infof("Found %d existing events on queue start", activeFrameCount) + var encoder queue.Encoder + if encoderFactory != nil { + encoder = encoderFactory() + } + queue := &diskQueue{ logger: logger, settings: settings, @@ -225,7 +232,7 @@ func NewQueue( acks: newDiskQueueACKs(logger, nextReadPosition, positionFile), - readerLoop: newReaderLoop(settings), + readerLoop: newReaderLoop(settings, encoder), writerLoop: newWriterLoop(logger, writeToDiskCallback, settings), deleterLoop: newDeleterLoop(settings), diff --git a/libbeat/publisher/queue/diskqueue/queue_test.go b/libbeat/publisher/queue/diskqueue/queue_test.go index c0b780ffb38..f6a4c406ed3 100644 --- a/libbeat/publisher/queue/diskqueue/queue_test.go +++ b/libbeat/publisher/queue/diskqueue/queue_test.go @@ -89,7 +89,7 @@ func TestMetrics(t *testing.T) { // lower max segment size so we can get multiple segments settings.MaxSegmentSize = 100 - testQueue, err := NewQueue(logp.L(), nil, settings) + testQueue, err := NewQueue(logp.L(), nil, settings, nil) require.NoError(t, err) defer testQueue.Close() @@ -124,7 +124,7 @@ func makeTestQueue() queuetest.QueueFactory { } settings := DefaultSettings() settings.Path = dir - queue, _ := NewQueue(logp.L(), nil, settings) + queue, _ := NewQueue(logp.L(), nil, settings, nil) return testQueue{ diskQueue: queue, teardown: func() { diff --git a/libbeat/publisher/queue/diskqueue/reader_loop.go b/libbeat/publisher/queue/diskqueue/reader_loop.go index 644e378f301..0dae48732b3 100644 --- a/libbeat/publisher/queue/diskqueue/reader_loop.go +++ b/libbeat/publisher/queue/diskqueue/reader_loop.go @@ -21,6 +21,8 @@ import ( "encoding/binary" "fmt" "io" + + "github.com/elastic/beats/v7/libbeat/publisher/queue" ) // startPosition and endPosition are absolute byte offsets into the segment @@ -67,16 +69,22 @@ type readerLoop struct { // The helper object to deserialize binary blobs from the queue into // publisher.Event objects that can be returned in a readFrame. decoder *eventDecoder + + // If set, this encoding helper is called on events after loading + // them from disk, to convert them to their final output serialization + // format. + outputEncoder queue.Encoder } -func newReaderLoop(settings Settings) *readerLoop { +func newReaderLoop(settings Settings, outputEncoder queue.Encoder) *readerLoop { return &readerLoop{ settings: settings, - requestChan: make(chan readerLoopRequest, 1), - responseChan: make(chan readerLoopResponse), - output: make(chan *readFrame, settings.ReadAheadLimit), - decoder: newEventDecoder(), + requestChan: make(chan readerLoopRequest, 1), + responseChan: make(chan readerLoopResponse), + output: make(chan *readFrame, settings.ReadAheadLimit), + decoder: newEventDecoder(), + outputEncoder: outputEncoder, } } @@ -124,6 +132,10 @@ func (rl *readerLoop) processRequest(request readerLoopRequest) readerLoopRespon frame.segment = request.segment frame.id = nextFrameID nextFrameID++ + // If an output encoder is configured, apply it now + if rl.outputEncoder != nil { + frame.event, _ = rl.outputEncoder.EncodeEntry(frame.event) + } // We've read the frame, try sending it to the output channel. select { case rl.output <- frame: diff --git a/libbeat/publisher/queue/memqueue/broker.go b/libbeat/publisher/queue/memqueue/broker.go index 1455745961c..23569f02150 100644 --- a/libbeat/publisher/queue/memqueue/broker.go +++ b/libbeat/publisher/queue/memqueue/broker.go @@ -54,6 +54,9 @@ type broker struct { // wait group for queue workers (runLoop and ackLoop) wg sync.WaitGroup + // The factory used to create an event encoder when creating a producer + encoderFactory queue.EncoderFactory + /////////////////////////// // api channels @@ -113,7 +116,7 @@ type Settings struct { } type queueEntry struct { - event interface{} + event queue.Entry id queue.EntryID producer *ackProducer @@ -147,8 +150,9 @@ func FactoryForSettings(settings Settings) queue.QueueFactory { logger *logp.Logger, ackCallback func(eventCount int), inputQueueSize int, + encoderFactory queue.EncoderFactory, ) (queue.Queue, error) { - return NewQueue(logger, ackCallback, settings, inputQueueSize), nil + return NewQueue(logger, ackCallback, settings, inputQueueSize, encoderFactory), nil } } @@ -160,8 +164,9 @@ func NewQueue( ackCallback func(eventCount int), settings Settings, inputQueueSize int, + encoderFactory queue.EncoderFactory, ) *broker { - b := newQueue(logger, ackCallback, settings, inputQueueSize) + b := newQueue(logger, ackCallback, settings, inputQueueSize, encoderFactory) // Start the queue workers b.wg.Add(2) @@ -186,6 +191,7 @@ func newQueue( ackCallback func(eventCount int), settings Settings, inputQueueSize int, + encoderFactory queue.EncoderFactory, ) *broker { chanSize := AdjustInputQueueSize(inputQueueSize, settings.Events) @@ -213,6 +219,8 @@ func newQueue( buf: make([]queueEntry, settings.Events), + encoderFactory: encoderFactory, + // broker API channels pushChan: make(chan pushRequest, chanSize), getChan: make(chan getRequest), @@ -249,7 +257,14 @@ func (b *broker) BufferConfig() queue.BufferConfig { } func (b *broker) Producer(cfg queue.ProducerConfig) queue.Producer { - return newProducer(b, cfg.ACK, cfg.OnDrop, cfg.DropOnCancel) + // If we were given an encoder factory to allow producers to encode + // events for output before they entered the queue, then create an + // encoder for the new producer. + var encoder queue.Encoder + if b.encoderFactory != nil { + encoder = b.encoderFactory() + } + return newProducer(b, cfg.ACK, cfg.OnDrop, cfg.DropOnCancel, encoder) } func (b *broker) Get(count int) (queue.Batch, error) { @@ -398,7 +413,7 @@ func (b *batch) rawEntry(i int) *queueEntry { } // Return the event referenced by the i-th element of this batch -func (b *batch) Entry(i int) interface{} { +func (b *batch) Entry(i int) queue.Entry { return b.rawEntry(i).event } diff --git a/libbeat/publisher/queue/memqueue/internal_api.go b/libbeat/publisher/queue/memqueue/internal_api.go index ae93a5df0d5..95b5e0eba90 100644 --- a/libbeat/publisher/queue/memqueue/internal_api.go +++ b/libbeat/publisher/queue/memqueue/internal_api.go @@ -22,7 +22,11 @@ import "github.com/elastic/beats/v7/libbeat/publisher/queue" // producer -> broker API type pushRequest struct { - event interface{} + event queue.Entry + + // The event's encoded size in bytes if the configured output supports + // early encoding, 0 otherwise. + eventSize int // The producer that generated this event, or nil if this producer does // not require ack callbacks. diff --git a/libbeat/publisher/queue/memqueue/produce.go b/libbeat/publisher/queue/memqueue/produce.go index 5ddea468e4c..55f15a8cc86 100644 --- a/libbeat/publisher/queue/memqueue/produce.go +++ b/libbeat/publisher/queue/memqueue/produce.go @@ -40,6 +40,7 @@ type openState struct { done chan struct{} queueDone <-chan struct{} events chan pushRequest + encoder queue.Encoder } // producerID stores the order of events within a single producer, so multiple @@ -50,19 +51,20 @@ type producerID uint64 type produceState struct { cb ackHandler - dropCB func(interface{}) + dropCB func(queue.Entry) cancelled bool lastACK producerID } type ackHandler func(count int) -func newProducer(b *broker, cb ackHandler, dropCB func(interface{}), dropOnCancel bool) queue.Producer { +func newProducer(b *broker, cb ackHandler, dropCB func(queue.Entry), dropOnCancel bool, encoder queue.Encoder) queue.Producer { openState := openState{ log: b.logger, done: make(chan struct{}), queueDone: b.ctx.Done(), events: b.pushChan, + encoder: encoder, } if cb != nil { @@ -74,18 +76,18 @@ func newProducer(b *broker, cb ackHandler, dropCB func(interface{}), dropOnCance return &forgetfulProducer{broker: b, openState: openState} } -func (p *forgetfulProducer) makePushRequest(event interface{}) pushRequest { +func (p *forgetfulProducer) makePushRequest(event queue.Entry) pushRequest { resp := make(chan queue.EntryID, 1) return pushRequest{ event: event, resp: resp} } -func (p *forgetfulProducer) Publish(event interface{}) (queue.EntryID, bool) { +func (p *forgetfulProducer) Publish(event queue.Entry) (queue.EntryID, bool) { return p.openState.publish(p.makePushRequest(event)) } -func (p *forgetfulProducer) TryPublish(event interface{}) (queue.EntryID, bool) { +func (p *forgetfulProducer) TryPublish(event queue.Entry) (queue.EntryID, bool) { return p.openState.tryPublish(p.makePushRequest(event)) } @@ -94,7 +96,7 @@ func (p *forgetfulProducer) Cancel() int { return 0 } -func (p *ackProducer) makePushRequest(event interface{}) pushRequest { +func (p *ackProducer) makePushRequest(event queue.Entry) pushRequest { resp := make(chan queue.EntryID, 1) return pushRequest{ event: event, @@ -105,7 +107,7 @@ func (p *ackProducer) makePushRequest(event interface{}) pushRequest { resp: resp} } -func (p *ackProducer) Publish(event interface{}) (queue.EntryID, bool) { +func (p *ackProducer) Publish(event queue.Entry) (queue.EntryID, bool) { id, published := p.openState.publish(p.makePushRequest(event)) if published { p.producedCount++ @@ -113,7 +115,7 @@ func (p *ackProducer) Publish(event interface{}) (queue.EntryID, bool) { return id, published } -func (p *ackProducer) TryPublish(event interface{}) (queue.EntryID, bool) { +func (p *ackProducer) TryPublish(event queue.Entry) (queue.EntryID, bool) { id, published := p.openState.tryPublish(p.makePushRequest(event)) if published { p.producedCount++ @@ -143,6 +145,11 @@ func (st *openState) Close() { } func (st *openState) publish(req pushRequest) (queue.EntryID, bool) { + // If we were given an encoder callback for incoming events, apply it before + // sending the entry to the queue. + if st.encoder != nil { + req.event, req.eventSize = st.encoder.EncodeEntry(req.event) + } select { case st.events <- req: // The events channel is buffered, which means we may successfully @@ -166,6 +173,11 @@ func (st *openState) publish(req pushRequest) (queue.EntryID, bool) { } func (st *openState) tryPublish(req pushRequest) (queue.EntryID, bool) { + // If we were given an encoder callback for incoming events, apply it before + // sending the entry to the queue. + if st.encoder != nil { + req.event, req.eventSize = st.encoder.EncodeEntry(req.event) + } select { case st.events <- req: // The events channel is buffered, which means we may successfully diff --git a/libbeat/publisher/queue/memqueue/queue_test.go b/libbeat/publisher/queue/memqueue/queue_test.go index 637e7ccd4fb..df2d16d0dec 100644 --- a/libbeat/publisher/queue/memqueue/queue_test.go +++ b/libbeat/publisher/queue/memqueue/queue_test.go @@ -92,12 +92,12 @@ func TestProducerDoesNotBlockWhenQueueClosed(t *testing.T) { Events: 2, // Queue size MaxGetRequest: 1, // make sure the queue won't buffer events FlushTimeout: time.Millisecond, - }, 0) + }, 0, nil) p := q.Producer(queue.ProducerConfig{ // We do not read from the queue, so the callbacks are never called ACK: func(count int) {}, - OnDrop: func(e interface{}) {}, + OnDrop: func(e queue.Entry) {}, DropOnCancel: false, }) @@ -164,13 +164,13 @@ func TestProducerClosePreservesEventCount(t *testing.T) { Events: 3, // Queue size MaxGetRequest: 2, FlushTimeout: 10 * time.Millisecond, - }, 1) + }, 1, nil) p := q.Producer(queue.ProducerConfig{ ACK: func(count int) { activeEvents.Add(-int64(count)) }, - OnDrop: func(e interface{}) { + OnDrop: func(e queue.Entry) { //activeEvents.Add(-1) }, DropOnCancel: false, @@ -263,7 +263,7 @@ func TestQueueMetricsBuffer(t *testing.T) { } func queueTestWithSettings(t *testing.T, settings Settings, eventsToTest int, testName string) { - testQueue := NewQueue(nil, nil, settings, 0) + testQueue := NewQueue(nil, nil, settings, 0, nil) defer testQueue.Close() // Send events to queue @@ -307,7 +307,7 @@ func makeTestQueue(sz, minEvents int, flushTimeout time.Duration) queuetest.Queu Events: sz, MaxGetRequest: minEvents, FlushTimeout: flushTimeout, - }, 0) + }, 0, nil) } } @@ -418,22 +418,22 @@ func TestEntryIDs(t *testing.T) { } t.Run("acking in forward order with directEventLoop reports the right event IDs", func(t *testing.T) { - testQueue := NewQueue(nil, nil, Settings{Events: 1000}, 0) + testQueue := NewQueue(nil, nil, Settings{Events: 1000}, 0, nil) testForward(testQueue) }) t.Run("acking in reverse order with directEventLoop reports the right event IDs", func(t *testing.T) { - testQueue := NewQueue(nil, nil, Settings{Events: 1000}, 0) + testQueue := NewQueue(nil, nil, Settings{Events: 1000}, 0, nil) testBackward(testQueue) }) t.Run("acking in forward order with bufferedEventLoop reports the right event IDs", func(t *testing.T) { - testQueue := NewQueue(nil, nil, Settings{Events: 1000, MaxGetRequest: 2, FlushTimeout: time.Microsecond}, 0) + testQueue := NewQueue(nil, nil, Settings{Events: 1000, MaxGetRequest: 2, FlushTimeout: time.Microsecond}, 0, nil) testForward(testQueue) }) t.Run("acking in reverse order with bufferedEventLoop reports the right event IDs", func(t *testing.T) { - testQueue := NewQueue(nil, nil, Settings{Events: 1000, MaxGetRequest: 2, FlushTimeout: time.Microsecond}, 0) + testQueue := NewQueue(nil, nil, Settings{Events: 1000, MaxGetRequest: 2, FlushTimeout: time.Microsecond}, 0, nil) testBackward(testQueue) }) } @@ -447,7 +447,7 @@ func TestBatchFreeEntries(t *testing.T) { // 4. Make sure only events 6-10 are nil // 5. Call FreeEntries on the first batch // 6. Make sure all events are nil - testQueue := NewQueue(nil, nil, Settings{Events: queueSize, MaxGetRequest: batchSize, FlushTimeout: time.Second}, 0) + testQueue := NewQueue(nil, nil, Settings{Events: queueSize, MaxGetRequest: batchSize, FlushTimeout: time.Second}, 0, nil) producer := testQueue.Producer(queue.ProducerConfig{}) for i := 0; i < queueSize; i++ { _, ok := producer.Publish(i) diff --git a/libbeat/publisher/queue/memqueue/runloop_test.go b/libbeat/publisher/queue/memqueue/runloop_test.go index 9b3a467647a..d25537265ea 100644 --- a/libbeat/publisher/queue/memqueue/runloop_test.go +++ b/libbeat/publisher/queue/memqueue/runloop_test.go @@ -42,9 +42,9 @@ func TestFlushSettingsDoNotBlockFullBatches(t *testing.T) { MaxGetRequest: 500, FlushTimeout: 10 * time.Second, }, - 10) + 10, nil) - producer := newProducer(broker, nil, nil, false) + producer := newProducer(broker, nil, nil, false, nil) rl := broker.runLoop for i := 0; i < 100; i++ { // Pair each publish call with an iteration of the run loop so we @@ -81,9 +81,9 @@ func TestFlushSettingsBlockPartialBatches(t *testing.T) { MaxGetRequest: 500, FlushTimeout: 10 * time.Second, }, - 10) + 10, nil) - producer := newProducer(broker, nil, nil, false) + producer := newProducer(broker, nil, nil, false, nil) rl := broker.runLoop for i := 0; i < 100; i++ { // Pair each publish call with an iteration of the run loop so we diff --git a/libbeat/publisher/queue/queue.go b/libbeat/publisher/queue/queue.go index 101a3290117..e691c2888f6 100644 --- a/libbeat/publisher/queue/queue.go +++ b/libbeat/publisher/queue/queue.go @@ -25,6 +25,12 @@ import ( "github.com/elastic/elastic-agent-libs/opt" ) +// Entry is a placeholder type for the objects contained by the queue, which +// can be anything (but right now is always a publisher.Event). We could just +// use interface{} everywhere but this makes the API's intentions clearer +// and reduces accidental type mismatches. +type Entry interface{} + // Metrics is a set of basic-user friendly metrics that report the current state of the queue. These metrics are meant to be relatively generic and high-level, and when reported directly, can be comprehensible to a user. type Metrics struct { //EventCount is the total events currently in the queue @@ -74,7 +80,14 @@ type Queue interface { Metrics() (Metrics, error) } -type QueueFactory func(logger *logp.Logger, ack func(eventCount int), inputQueueSize int) (Queue, error) +// If encoderFactory is provided, then the resulting queue must use it to +// encode queued events before returning them. +type QueueFactory func( + logger *logp.Logger, + ack func(eventCount int), + inputQueueSize int, + encoderFactory EncoderFactory, +) (Queue, error) // BufferConfig returns the pipelines buffering settings, // for the pipeline to use. @@ -98,7 +111,7 @@ type ProducerConfig struct { // the queue. Currently this can only happen when a Publish call is sent // to the memory queue's request channel but the producer is cancelled // before it reaches the queue buffer. - OnDrop func(interface{}) + OnDrop func(Entry) // DropOnCancel is a hint to the queue to drop events if the producer disconnects // via Cancel. @@ -110,35 +123,49 @@ type EntryID uint64 // Producer is an interface to be used by the pipelines client to forward // events to a queue. type Producer interface { - // Publish adds an event to the queue, blocking if necessary, and returns + // Publish adds an entry to the queue, blocking if necessary, and returns // the new entry's id and true on success. - Publish(event interface{}) (EntryID, bool) + Publish(entry Entry) (EntryID, bool) - // TryPublish adds an event to the queue if doing so will not block the + // TryPublish adds an entry to the queue if doing so will not block the // caller, otherwise it immediately returns. The reasons a publish attempt // might block are defined by the specific queue implementation and its // configuration. If the event was successfully added, returns true with // the event's assigned ID, and false otherwise. - TryPublish(event interface{}) (EntryID, bool) + TryPublish(entry Entry) (EntryID, bool) // Cancel closes this Producer endpoint. If the producer is configured to - // drop its events on Cancel, the number of dropped events is returned. + // drop its entries on Cancel, the number of dropped entries is returned. // Note: A queue may still send ACK signals even after Cancel is called on // the originating Producer. The pipeline client must accept and // discard these ACKs. Cancel() int } -// Batch of events to be returned to Consumers. The `Done` method will tell the -// queue that the batch has been consumed and its events can be discarded. +// Batch of entries (usually publisher.Event) to be returned to Consumers. +// The `Done` method will tell the queue that the batch has been consumed and +// its entries can be acknowledged and discarded. type Batch interface { Count() int - Entry(i int) interface{} - // Release the internal references to the contained events. + Entry(i int) Entry + // Release the internal references to the contained events, if + // supported (the disk queue does not yet implement it). // Count() and Entry() cannot be used after this call. - // This is only guaranteed to release references when using the - // proxy queue, where it is used to avoid keeping multiple copies - // of events that have already been queued by the shipper. FreeEntries() Done() } + +// Outputs can provide an EncoderFactory to enable early encoding, in which +// case the queue will run the given encoder on events before they reach +// consumers. +// Encoders are provided as factories so each worker goroutine can have its own +type EncoderFactory func() Encoder + +type Encoder interface { + // Return the encoded form of the entry that the output workers can use, + // and the in-memory size of the encoded buffer. + // EncodeEntry should return a valid Entry when given one, even if the + // encoding fails. In that case, the returned Entry should contain the + // metadata needed to report the error when the entry is consumed. + EncodeEntry(Entry) (Entry, int) +} From 9c75e3a6d861327e9664e62956dd7215298d97d8 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Wed, 10 Apr 2024 15:51:40 -0400 Subject: [PATCH 121/313] chore: Update snapshot.yml (#38837) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index cd88a7a5374..c0376964c40 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-34b4df0a-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-3c0002e4-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-34b4df0a-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-3c0002e4-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-34b4df0a-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-3c0002e4-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From af67c7dd891302e20cdaf7a04c090bb56391dabb Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Thu, 11 Apr 2024 10:43:52 +0300 Subject: [PATCH 122/313] Moved deploy-k8s pipeline to central pipeline (#38805) * moved deploy-k8s pipeline to central pipeline * test - added empty file * removed test dummy file * restored snapshot packaging step * added GH notify * enabled gh notifications * dummy file to test packaging * pr fixes * fixing packaging step --- .buildkite/auditbeat/auditbeat-pipeline.yml | 12 +- .../deploy/kubernetes/deploy-k8s-pipeline.yml | 127 ++++++++++-------- .buildkite/heartbeat/heartbeat-pipeline.yml | 23 ++-- .../heartbeat/scripts/integration-gotests.sh | 12 -- .../heartbeat/scripts/integration-pytests.sh | 12 -- .buildkite/heartbeat/scripts/unit-tests.sh | 12 -- .buildkite/hooks/pre-command | 18 ++- .buildkite/pipeline.yml | 18 +++ .buildkite/pull-requests.json | 16 --- .buildkite/scripts/packaging.sh | 12 -- 10 files changed, 122 insertions(+), 140 deletions(-) delete mode 100755 .buildkite/heartbeat/scripts/integration-gotests.sh delete mode 100755 .buildkite/heartbeat/scripts/integration-pytests.sh delete mode 100755 .buildkite/heartbeat/scripts/unit-tests.sh delete mode 100755 .buildkite/scripts/packaging.sh diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index c88d6451953..5ba4b48e9d6 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -116,7 +116,7 @@ steps: instanceType: "${AWS_ARM_INSTANCE_TYPE}" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - group: "Heartbeat MacOS Extended" + - group: "Auditbeat MacOS Extended" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - label: ":mac: MacOS Unit Tests" @@ -137,7 +137,7 @@ steps: key: "auditbeat-extended-tests-win" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ steps: - - label: ":windows: Auditbeat Windows 2019 Unit Tests" + - label: ":windows: Auditbeat Win-2019 Unit Tests" key: "auditbeat-extended-win-2019-unit-tests" command: "mage -d ${BEATS_PROJECT_NAME} unitTest" agents: @@ -148,7 +148,7 @@ steps: disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - label: ":windows: Auditbeat Windows 10 Unit Tests" + - label: ":windows: Auditbeat Win-10 Unit Tests" key: "auditbeat-extended-win-10-unit-tests" command: "mage -d ${BEATS_PROJECT_NAME} unitTest" agents: @@ -159,7 +159,7 @@ steps: disk_type: "pd-ssd" artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - label: ":windows: Windows 11 Unit Tests" + - label: ":windows: Auditbeat Win-11 Unit Tests" key: "auditbeat-extended-win-11-unit-tests" command: "mage -d ${BEATS_PROJECT_NAME} unitTest" agents: @@ -179,7 +179,7 @@ steps: - label: ":ubuntu: Auditbeat/Packaging Linux X86" key: "auditbeat-package-linux-x86" env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS: "${PACKAGING_PLATFORMS}" SNAPSHOT: true command: "cd $BEATS_PROJECT_NAME && mage package" agents: @@ -190,7 +190,7 @@ steps: - label: ":linux: Auditbeat/Packaging Linux ARM" key: "auditbeat-package-linux-arm" env: - PLATFORMS: "linux/arm64" + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" SNAPSHOT: true command: "cd $BEATS_PROJECT_NAME && mage package" diff --git a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml index 246aac9f80a..82959ec7067 100644 --- a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml +++ b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml @@ -4,62 +4,81 @@ env: IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" +notify: + - github_commit_status: + context: "Deploy/K8S" + steps: - - label: "Checks" - command: ".buildkite/deploy/kubernetes/scripts/make.sh" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" && build.env("GITHUB_PR_LABELS") == "kubernetes" - notify: - - github_commit_status: - context: "Deploy K8S/Checks" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + - group: "Depoy/K8S" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" && build.env("GITHUB_PR_LABELS") =~ /.*kubernetes.*/ + + steps: + - label: "Checks" + command: ".buildkite/deploy/kubernetes/scripts/make.sh" + notify: + - github_commit_status: + context: "Deploy/k8s-checks" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - - label: "K8S Test/K8S version: v1.29.0" - key: "k8s-test-129" - env: - K8S_VERSION: "v1.29.0" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + - label: "K8S Test/K8S version: v1.29.0" + key: "k8s-test-129" + env: + K8S_VERSION: "v1.29.0" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.29.0" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - - label: "K8S Test/K8S version: v1.28.0" - key: "k8s-test-128" - env: - K8S_VERSION: "v1.28.0" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + - label: "K8S Test/K8S version: v1.28.0" + key: "k8s-test-128" + env: + K8S_VERSION: "v1.28.0" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.28.0" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - - label: "K8S Test/K8S version: v1.27.3" - key: "k8s-test-1273" - env: - K8S_VERSION: "v1.27.3" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + - label: "K8S Test/K8S version: v1.27.3" + key: "k8s-test-1273" + env: + K8S_VERSION: "v1.27.3" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.27.3" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - - label: "K8S Test/K8S version: v1.26.6" - key: "k8s-test-1266" - env: - K8S_VERSION: "v1.26.6" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + - label: "K8S Test/K8S version: v1.26.6" + key: "k8s-test-1266" + env: + K8S_VERSION: "v1.26.6" + commands: + - "MODULE=kubernetes make -C metricbeat integration-tests" + - "make -C deploy/kubernetes test" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.26.6" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index d7425490421..ee3f1d649ce 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -5,21 +5,26 @@ env: ASDF_MAGE_VERSION: 1.15.0 - IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + GCP_WIN_MACHINE_TYPE: "n2-standard-8" + + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_RHEL9: "family/platform-ingest-beats-rhel-9" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_MACOS_ARM: "generic-13-ventura-arm" - GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" - GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" - GCP_WIN_MACHINE_TYPE: "n2-standard-8" - AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + #Packaging + PACKAGING_ARM_PLATFORMS: "linux/arm64" + PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" notify: - github_commit_status: @@ -178,7 +183,7 @@ steps: - label: ":ubuntu: Packaging Linux X86" key: "heartbeat-package-linux-x86" env: - PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS: "${PACKAGING_PLATFORMS}" SNAPSHOT: true command: "cd $BEATS_PROJECT_NAME && mage package" agents: @@ -189,7 +194,7 @@ steps: - label: ":linux: Packaging Linux ARM" key: "heartbeat-package-linux-arm" env: - PLATFORMS: "linux/arm64" + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" PACKAGES: "docker" SNAPSHOT: true command: "cd $BEATS_PROJECT_NAME && mage package" diff --git a/.buildkite/heartbeat/scripts/integration-gotests.sh b/.buildkite/heartbeat/scripts/integration-gotests.sh deleted file mode 100755 index c50dbf45347..00000000000 --- a/.buildkite/heartbeat/scripts/integration-gotests.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Executing Integration Tests" -# Remove when custom image is set up -sudo chmod -R go-w heartbeat/ - -cd heartbeat -# Remove when custom image is set up -umask 0022 -mage goIntegTest diff --git a/.buildkite/heartbeat/scripts/integration-pytests.sh b/.buildkite/heartbeat/scripts/integration-pytests.sh deleted file mode 100755 index 5875b5460ed..00000000000 --- a/.buildkite/heartbeat/scripts/integration-pytests.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Executing Integration Tests" -# Remove when custom image is set up -sudo chmod -R go-w heartbeat/ - -cd heartbeat -# Remove when custom image is set up -umask 0022 -mage pythonIntegTest diff --git a/.buildkite/heartbeat/scripts/unit-tests.sh b/.buildkite/heartbeat/scripts/unit-tests.sh deleted file mode 100755 index 1d8de945788..00000000000 --- a/.buildkite/heartbeat/scripts/unit-tests.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Running Unit Tests" -# Remove when custom image is set up -sudo chmod -R go-w heartbeat/ - -cd heartbeat -# Remove when custom image is set up -umask 0022 -mage build unitTest diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 49167cbeb89..00234e4a1bb 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -11,7 +11,7 @@ PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-inges DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" -if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" ]]; then source .buildkite/env-scripts/env.sh if [[ -z "${GO_VERSION-""}" ]]; then export GO_VERSION=$(cat "${WORKSPACE}/.go-version") @@ -35,7 +35,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == with_mage fi - if [[ "$BUILDKITE_STEP_KEY" == package* ]]; then + if [[ "$BUILDKITE_STEP_KEY" == *packaging* ]]; then DOCKER_USERNAME_SECRET=$(retry_with_count 5 vault kv get -field user "${DOCKER_REGISTRY_SECRET_PATH}") DOCKER_PASSWORD_SECRET=$(retry_with_count 5 vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") GITHUB_TOKEN_SECRET=$(retry_with_count 5 vault kv get -field token ${GITHUB_TOKEN_VAULT_PATH}) @@ -52,10 +52,6 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == git config user.name "$github_username" git config user.email "$github_email" fi - - if [[ "$BUILDKITE_STEP_KEY" == k8s-test* ]]; then - .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh - fi fi ENABLED_BEATS_PIPELINES_SLUGS=( @@ -75,7 +71,8 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-xpack-filebeat" "beats-xpack-heartbeat" "beats-xpack-osquerybeat" - ) + "deploy-k8s" +) for slug in "${ENABLED_BEATS_PIPELINES_SLUGS[@]}"; do if [[ "$BUILDKITE_PIPELINE_SLUG" == "$slug" ]]; then @@ -99,3 +96,10 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then export PRIVATE_CI_GCS_CREDENTIALS_SECRET fi fi + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then + source .buildkite/env-scripts/env.sh + if [[ "$BUILDKITE_STEP_KEY" == k8s-test* ]]; then + .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh + fi +fi diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 8515ebc7652..b327c41519a 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -46,3 +46,21 @@ steps: env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger Deploy/K8S" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only HEAD~1" + watch: + - path: + - .buildkite/deploy/kubernetes/** + - deploy/kubernetes/** + - libbeat/docs/version.asciidoc + config: + trigger: "deploy-k8s" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 1cc18f0f0b1..e452f6b10af 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -32,22 +32,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": [ "^metricbeat/.*", ".buildkite/metricbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, - { - "enabled": true, - "pipelineSlug": "deploy-k8s", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test deploy/kubernetes$", - "always_trigger_comment_regex": "^/test deploy/kubernetes$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^deploy/kubernetes/.*", ".buildkite/deploy/kubernetes/.*", "^libbeat/docs/version.asciidoc"] - }, { "enabled": true, "pipelineSlug": "beats-libbeat", diff --git a/.buildkite/scripts/packaging.sh b/.buildkite/scripts/packaging.sh deleted file mode 100755 index 1539d3ab430..00000000000 --- a/.buildkite/scripts/packaging.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/install_tools.sh - -set -euo pipefail - -echo "--- Run Packaging for $BEATS_PROJECT_NAME" -pushd "${BEATS_PROJECT_NAME}" > /dev/null - -mage package - -popd > /dev/null From daf0219e3479c69479c5390cdeea7e6dfcd13a91 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Thu, 11 Apr 2024 12:02:30 +0300 Subject: [PATCH 123/313] Tool setup for macOS workers on Buildkite (#38848) This commit adds a stand alone script that can be sourced before executing mage commands on macOS (Orka) workers. For now it only supports macOS x86_64. --- .buildkite/scripts/install_macos_tools.sh | 113 ++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100755 .buildkite/scripts/install_macos_tools.sh diff --git a/.buildkite/scripts/install_macos_tools.sh b/.buildkite/scripts/install_macos_tools.sh new file mode 100755 index 00000000000..c9d27cbc9db --- /dev/null +++ b/.buildkite/scripts/install_macos_tools.sh @@ -0,0 +1,113 @@ +#!/usr/bin/env bash + +set -euo pipefail + +GO_VERSION=$(cat .go-version) +SETUP_GVM_VERSION="v0.5.1" +PLATFORM_TYPE_LOWERCASE=$(uname | tr '[:upper:]' '[:lower:]') + +export BIN=${WORKSPACE:-$PWD}/bin + +retry() { + local retries=$1 + shift + local count=0 + until "$@"; do + exit=$? + wait=$((2 ** count)) + count=$((count + 1)) + if [ $count -lt "$retries" ]; then + >&2 echo "Retry $count/$retries exited $exit, retrying in $wait seconds..." + sleep $wait + else + >&2 echo "Retry $count/$retries exited $exit, no more retries left." + return $exit + fi + done + return 0 +} + +define_arch() { + local platform_type="$(uname)" + local arch_type="$(uname -m)" + if [ "${arch_type}" == "x86_64" ]; then + export GOX_FLAGS="-arch amd64" + go_arch_type="amd64" + elif [[ "${arch_type}" == "aarch64" || "${arch_type}" == "arm64" ]]; then + export GOX_FLAGS="-arch arm" + go_arch_type="arm64" + else + echo "+++ Unsupported OS archictecture; uname: $platform_type and uname -m: $arch_type" + exit 1 + fi +} + +create_workspace() { + if [[ ! -d "${BIN}" ]]; then + mkdir -p "${BIN}" + fi +} + +with_docker_compose() { + local version=$1 + echo "Setting up the Docker-compose environment..." + create_workspace + retry 3 curl -sSL -o ${BIN}/docker-compose "https://github.com/docker/compose/releases/download/${version}/docker-compose-${PLATFORM_TYPE_LOWERCASE}-${arch_type}" + chmod +x ${BIN}/docker-compose + export PATH="${BIN}:${PATH}" + docker-compose version +} + +add_bin_path() { + echo "Adding PATH to the environment variables..." + create_workspace + export PATH="${BIN}:${PATH}" +} + +with_mage() { + local install_packages=( + "github.com/magefile/mage" + "github.com/elastic/go-licenser" + "golang.org/x/tools/cmd/goimports" + "github.com/jstemmer/go-junit-report" + "gotest.tools/gotestsum" + ) + create_workspace + for pkg in "${install_packages[@]}"; do + go install "${pkg}@latest" + done + echo "Download modules to local cache" + retry 3 go mod download +} + +with_go() { + echo "Setting up the Go environment..." + create_workspace + define_arch + retry 5 curl -sL -o "${BIN}/gvm" "https://github.com/andrewkroh/gvm/releases/download/${SETUP_GVM_VERSION}/gvm-${PLATFORM_TYPE_LOWERCASE}-${go_arch_type}" + chmod +x "${BIN}/gvm" + eval "$(gvm $GO_VERSION)" + go version + which go + local go_path="$(go env GOPATH):$(go env GOPATH)/bin" + export PATH="${go_path}:${PATH}" +} + +with_python() { + brew update + pip3 install virtualenv + ulimit -Sn 10000 +} + +config_git() { + if [ -z "$(git config --get user.email)" ]; then + git config --global user.email "beatsmachine@users.noreply.github.com" + git config --global user.name "beatsmachine" + fi +} + +add_bin_path +with_go "${GO_VERSION}" +with_mage +with_python +config_git From 22de138c88142f6740c11a18233a2656f9fe3a29 Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Thu, 11 Apr 2024 15:29:41 +0300 Subject: [PATCH 124/313] Moved xpack/dockerlogbeat pipeline to central pipeline (#38826) * test - added empty file * removed test dummy file * restored snapshot packaging step * dummy file to test packaging * pr fixes * fixing packaging step * fixing packaging step * moved xpack dockerlogbeat to main pipeline * removed xp-dockerlogbeat generation script * added pr fixes --- .buildkite/auditbeat/auditbeat-pipeline.yml | 3 +- .buildkite/pipeline.yml | 27 ++++- .buildkite/pull-requests.json | 16 --- .../generate_xpack_dockerlogbeat_pipeline.sh | 99 ----------------- .../x-pack/pipeline.xpack.dockerlogbeat.yml | 100 ++++++++++++------ 5 files changed, 96 insertions(+), 149 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index 5ba4b48e9d6..1fa682d76f2 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -66,7 +66,7 @@ steps: - "auditbeat/build/*.xml" - "auditbeat/build/*.json" - - label: ":windows: Auditbeat Win-2016 Auditbeat Unit Tests" + - label: ":windows: Auditbeat Win-2016 Unit Tests" command: | Set-Location -Path $BEATS_PROJECT_NAME mage build unitTest @@ -175,6 +175,7 @@ steps: if: build.env("BUILDKITE_PULL_REQUEST") != "false" depends_on: - "auditbeat-mandatory-tests" + steps: - label: ":ubuntu: Auditbeat/Packaging Linux X86" key: "auditbeat-package-linux-x86" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index b327c41519a..5033d936e35 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -12,7 +12,7 @@ steps: #OSS - go.mod - pytest.ini - - dev-tools/** + - dev-tools/ - libbeat/** - testing/** config: @@ -35,7 +35,7 @@ steps: #OSS - go.mod - pytest.ini - - dev-tools/** + - dev-tools/ - libbeat/** - testing/** config: @@ -47,6 +47,29 @@ steps: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Xpack/Dockerlogbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only ${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/dockerlogbeat/ + - .buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/** + - testing/** + config: + trigger: "beats-xpack-dockerlogbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Deploy/K8S" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index e452f6b10af..3f4b7db4379 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -176,22 +176,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/auditbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-dockerlogbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/dockerlogbeat$", - "always_trigger_comment_regex": "^/test x-pack/dockerlogbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/dockerlogbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, { "enabled": true, "pipelineSlug": "beats-xpack-filebeat", diff --git a/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh deleted file mode 100755 index bf8908cb609..00000000000 --- a/.buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-dockerlogbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":go: Go Integration Tests" - key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - env: - MODULE: $MODULE - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index f55b812cd17..d9bc53d6c39 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -2,15 +2,20 @@ name: "beats-xpack-dockerlogbeat" env: - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" BEATS_PROJECT_NAME: "x-pack/dockerlogbeat" + + ASDF_MAGE_VERSION: 1.15.0 + + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" @@ -22,34 +27,67 @@ env: PACKAGING_ARM_PLATFORMS: "linux/arm64" PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - #Deps - ASDF_MAGE_VERSION: 1.15.0 - steps: - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Dockerlogbeat - run_xpack_dockerlogbeat" - key: "run_xpack_dockerlogbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - if: "build.source == 'ui'" - - - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack dockerlogbeat pipeline" - key: "xpack-dockerlogbeat-pipeline" - command: ".buildkite/scripts/generate_xpack_dockerlogbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + - group: "Xpack/Dockerlogbeat Mandatory Tests" + key: "xpack-dockerlogbeat-mandatory-tests" + steps: + - label: ":ubuntu: Xpack/Dockerlogbeat Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" + + - label: ":ubuntu: Xpack/Dockerlogbeat Go Integration Tests" + key: "mandatory-int-test" + command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" + env: + MODULE: $MODULE + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "$BEATS_PROJECT_NAME/build/*.xml" + - "$BEATS_PROJECT_NAME/build/*.json" + notify: + - github_commit_status: + context: "$BEATS_PROJECT_NAME: Go Integration Tests" + + - group: "Xpack/Dockerlogbeat Packaging" + key: "xpack-dockerlogbeat-packaging" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - "xpack-dockerlogbeat-mandatory-tests" + + steps: + - label: ":ubuntu: Xpack/Dockerlogbeat Packaging Linux X86" + key: "auditbeat-package-linux-x86" + env: + PLATFORMS: "${PACKAGING_PLATFORMS}" + SNAPSHOT: true + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + + - label: ":linux: Xpack/Dockerlogbeat Packaging Linux ARM" + key: "auditbeat-package-linux-arm" + env: + PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PACKAGES: "docker" + SNAPSHOT: true + command: "cd $BEATS_PROJECT_NAME && mage package" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" From 60b377470fa332fbe2d268a774d440bc5f6c8315 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Thu, 11 Apr 2024 16:06:46 +0300 Subject: [PATCH 125/313] Move to static BK pipeline for metricbeat (#38827) This commit refactors the metricbeat pipeline to the pipeline selector approach as laid out in #38783 Relates: https://github.com/elastic/ingest-dev/issues/3072#issuecomment-2046970938 --- .buildkite/hooks/pre-command | 1 - .buildkite/metricbeat/pipeline.yml | 283 +++++++++++++++--- .buildkite/pipeline.yml | 24 ++ .buildkite/pull-requests.json | 16 - .buildkite/scripts/common.sh | 11 +- .../scripts/generate_metricbeat_pipeline.sh | 252 ---------------- 6 files changed, 272 insertions(+), 315 deletions(-) delete mode 100755 .buildkite/scripts/generate_metricbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 00234e4a1bb..6843a8ed540 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -57,7 +57,6 @@ fi ENABLED_BEATS_PIPELINES_SLUGS=( "auditbeat" "filebeat" - "beats-metricbeat" "beats-libbeat" "beats-packetbeat" "beats-winlogbeat" diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index 2ec8ef4f323..9412502250c 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -3,10 +3,11 @@ name: "beats-metricbeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "metricbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" @@ -16,44 +17,254 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + # Integration Tests + K8S_VERSION: "v1.29.0" + ASDF_KIND_VERSION: "0.20.0" - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 steps: - - input: "Input Parameters" - key: "run_metricbeat" - fields: - - select: "Metricbeat - run_metricbeat" - key: "run_metricbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Metricbeat - run_metricbeat_macos_tests" - key: "run_metricbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" + - group: "Metricbeat Mandatory Tests" + key: "metricbeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: "cd metricbeat && mage build unitTest" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Ubuntu Unit Tests" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet metricbeat + echo "~~~ Will run tests with env var MODULE=$$MODULE" + + # TODO move this section to base image / pre-command hook + echo "~~~ Installing kind" + asdf plugin add kind + asdf install kind $ASDF_KIND_VERSION + + .buildkite/deploy/kubernetes/scripts/kind-setup.sh + + echo "~~~ Running tests" + export KUBECONFIG="$$PWD/kubecfg" + cd metricbeat && mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Go Integration Tests" + + - label: ":python: Python Integration Tests" + key: "mandatory-python-int-test" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet metricbeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + + # TODO move this section to base image / pre-command hook + echo "~~~ Installing kind" + asdf plugin add kind + asdf install kind $ASDF_KIND_VERSION + + .buildkite/deploy/kubernetes/scripts/kind-setup.sh + + echo "~~~ Running tests" + export KUBECONFIG="$$PWD/kubecfg" + cd metricbeat && mage pythonIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Python Integration Tests" + + - label: ":negative_squared_cross_mark: Cross compile" + key: "mandatory-cross-compile" + command: "make -C metricbeat crosscompile" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Cross compile" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path metricbeat + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path metricbeat + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Windows 2022 Unit Tests" + + - group: "Metricbeat Extended Windows Tests" + key: "metricbeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path metricbeat + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Extended Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path metricbeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Extended Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path metricbeat + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Extended Windows 2019 Unit Tests" + + - group: "Metricbeat Extended MacOS Tests" + key: "metricbeat-extended-macos-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd metricbeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Extended MacOS Unit Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic metricbeat pipeline" - key: "metricbeat-pipeline" - command: ".buildkite/scripts/generate_metricbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: "metricbeat-mandatory-tests" + + - group: "Metricbeat Packaging" + key: "metricbeat-packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: "cd metricbeat && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "metricbeat: Packaging Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: "cd metricbeat && mage package" + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "metricbeat: Packaging Linux ARM" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 5033d936e35..97219757d81 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -70,6 +70,30 @@ steps: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Metricbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only ${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - metricbeat/ + - .buildkite/metricbeat/ + - .buildkite/scripts + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/** + - testing/** + config: + trigger: "beats-metricbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Deploy/K8S" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 3f4b7db4379..d40b5dc5fa0 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -16,22 +16,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": [ ] }, - { - "enabled": true, - "pipelineSlug": "beats-metricbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test metricbeat$", - "always_trigger_comment_regex": "^/test metricbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": [ "^metricbeat/.*", ".buildkite/metricbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] - }, { "enabled": true, "pipelineSlug": "beats-libbeat", diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 07de21a2dbc..0af5f732ea9 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -14,7 +14,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat [ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_libbeat+x}" ] && run_libbeat="$(buildkite-agent meta-data get run_libbeat --default "false")" -[ -z "${run_metricbeat+x}" ] && run_metricbeat="$(buildkite-agent meta-data get run_metricbeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" [ -z "${run_winlogbeat+x}" ] && run_winlogbeat="$(buildkite-agent meta-data get run_winlogbeat --default "false")" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" @@ -38,7 +37,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run MacOS platform-specific tests for the particular beat [ -z "${run_filebeat_tests+x}" ] && run_filebeat_macos_tests="$(buildkite-agent meta-data get run_filebeat_macos_tests --default "false")" -[ -z "${run_metricbeat_macos_tests+x}" ] && run_metricbeat_macos_tests="$(buildkite-agent meta-data get run_metricbeat_macos_tests --default "false")" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_auditbeat_macos_tests+x}" ] && run_xpack_auditbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_macos_tests --default "false")" [ -z "${run_xpack_filebeat_macos_tests+x}" ] && run_xpack_filebeat_macos_tests="$(buildkite-agent meta-data get run_xpack_filebeat_macos_tests --default "false")" @@ -59,10 +57,6 @@ filebeat_changeset=( "^filebeat/.*" ) -metricbeat_changeset=( - "^metricbeat/.*" - ) - libbeat_changeset=( "^libbeat/.*" ) @@ -146,9 +140,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "filebeat") BEAT_CHANGESET_REFERENCE=${filebeat_changeset[@]} ;; - "beats-metricbeat") - BEAT_CHANGESET_REFERENCE=${metricbeat_changeset[@]} - ;; "beats-libbeat") BEAT_CHANGESET_REFERENCE=${libbeat_changeset[@]} ;; @@ -435,7 +426,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi diff --git a/.buildkite/scripts/generate_metricbeat_pipeline.sh b/.buildkite/scripts/generate_metricbeat_pipeline.sh deleted file mode 100755 index f419f330f63..00000000000 --- a/.buildkite/scripts/generate_metricbeat_pipeline.sh +++ /dev/null @@ -1,252 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.metricbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ununtu Unit Tests" - - - label: ":go: Go Intergration Tests" - key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - env: - MODULE: $MODULE - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - - label: ":python: Python Integration Tests" - key: "mandatory-python-int-test" - command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" - env: - MODULE: $MODULE - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Python Integration Tests" - - - label: ":negative_squared_cross_mark: Cross compile" - key: "mandatory-cross-compile" - command: "make -C $BEATS_PROJECT_NAME crosscompile" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Cross compile" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -# echo "Add the extended windows tests into the pipeline" -# TODO: ADD conditions from the main pipeline - - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML - -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName From aff4f8d8364f4d94075efa65584f6d7affb41e5b Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Thu, 11 Apr 2024 17:18:59 +0300 Subject: [PATCH 126/313] Centralised pipeline xpack/dockerlogbeat fixes (#38862) * test - added empty file * removed test dummy file * restored snapshot packaging step * dummy file to test packaging * pr fixes * fixing packaging step * fixing packaging step * moved xpack dockerlogbeat to main pipeline * added fixes from dockerlogbeat pr * updated packaging step * restored winlogbeat pipeline --- .../x-pack/pipeline.xpack.dockerlogbeat.yml | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index d9bc53d6c39..05aee81e4d8 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -2,8 +2,6 @@ name: "beats-xpack-dockerlogbeat" env: - BEATS_PROJECT_NAME: "x-pack/dockerlogbeat" - ASDF_MAGE_VERSION: 1.15.0 AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" @@ -23,32 +21,27 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - steps: - - group: "Xpack/Dockerlogbeat Mandatory Tests" key: "xpack-dockerlogbeat-mandatory-tests" steps: - label: ":ubuntu: Xpack/Dockerlogbeat Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + command: "cd x-pack/dockerlogbeat && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" + - "x-pack/dockerlogbeat/build/*.xml" + - "x-pack/dockerlogbeat/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" + context: "x-pack/dockerlogbeat: Ubuntu Unit Tests" - label: ":ubuntu: Xpack/Dockerlogbeat Go Integration Tests" key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" + command: "cd x-pack/dockerlogbeat && mage goIntegTest" env: MODULE: $MODULE agents: @@ -56,25 +49,30 @@ steps: image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" + - "x-pack/dockerlogbeat/build/*.xml" + - "x-pack/dockerlogbeat/build/*.json" notify: - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" + context: "x-pack/dockerlogbeat: Go Integration Tests" - - group: "Xpack/Dockerlogbeat Packaging" - key: "xpack-dockerlogbeat-packaging" + - wait: ~ + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests if: build.env("BUILDKITE_PULL_REQUEST") != "false" depends_on: - "xpack-dockerlogbeat-mandatory-tests" + - group: "Xpack/Dockerlogbeat Packaging" + key: "xpack-dockerlogbeat-packaging" + steps: - label: ":ubuntu: Xpack/Dockerlogbeat Packaging Linux X86" key: "auditbeat-package-linux-x86" env: - PLATFORMS: "${PACKAGING_PLATFORMS}" + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" SNAPSHOT: true - command: "cd $BEATS_PROJECT_NAME && mage package" + command: "cd x-pack/dockerlogbeat && mage package" agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" @@ -83,10 +81,10 @@ steps: - label: ":linux: Xpack/Dockerlogbeat Packaging Linux ARM" key: "auditbeat-package-linux-arm" env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PLATFORMS: "linux/arm64" PACKAGES: "docker" SNAPSHOT: true - command: "cd $BEATS_PROJECT_NAME && mage package" + command: "cd x-pack/dockerlogbeat && mage package" agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" From 8fc385b44de4818c0bb8191b4e62e09893e6cfba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 14:17:05 -0400 Subject: [PATCH 127/313] build(deps): bump go.elastic.co/apm/module/apmhttp/v2 from 2.4.8 to 2.5.0 (#38852) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- NOTICE.txt | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 1d38346ab57..e7271092f87 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -23900,11 +23900,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmelasti -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmhttp/v2 -Version: v2.4.8 +Version: v2.5.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v2@v2.4.8/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v2@v2.5.0/LICENSE: Apache License Version 2.0, January 2004 @@ -24111,11 +24111,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/v2 -Version: v2.4.8 +Version: v2.5.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/v2@v2.4.8/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/v2@v2.5.0/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index 01ab48460c5..223ac2aa968 100644 --- a/go.mod +++ b/go.mod @@ -228,8 +228,8 @@ require ( github.com/shirou/gopsutil/v3 v3.22.10 github.com/tklauser/go-sysconf v0.3.10 go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8 - go.elastic.co/apm/module/apmhttp/v2 v2.4.8 - go.elastic.co/apm/v2 v2.4.8 + go.elastic.co/apm/module/apmhttp/v2 v2.5.0 + go.elastic.co/apm/v2 v2.5.0 go.mongodb.org/mongo-driver v1.5.1 golang.org/x/exp v0.0.0-20231127185646-65229373498e golang.org/x/tools/go/vcs v0.1.0-deprecated diff --git a/go.sum b/go.sum index 773389a8b04..0da5aa83458 100644 --- a/go.sum +++ b/go.sum @@ -1952,10 +1952,10 @@ github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8 h1:4j3wI1e+WV6u+9ZR7lorkJI2rnJfjOWtkMeZG08PbRI= go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8/go.mod h1:C9ajbSjZ3akTrFOjBr+pMq8bPVOH9vhIG+knZAuPW3s= -go.elastic.co/apm/module/apmhttp/v2 v2.4.8 h1:C1piLq4wcFHFB7jpFW1WPEyEl6zbRpf9SAY8S8tX7Qk= -go.elastic.co/apm/module/apmhttp/v2 v2.4.8/go.mod h1:FzO5ptAs5oKB3xE1/hpxMA0a7mLIycp2RZdBtp4+uTA= -go.elastic.co/apm/v2 v2.4.8 h1:3RuqxDjhgumT1BYxJGnVPdGY12lCzF+KGyvtSTynCYo= -go.elastic.co/apm/v2 v2.4.8/go.mod h1:+CiBUdrrAGnGCL9TNx7tQz3BrfYV23L8Ljvotoc87so= +go.elastic.co/apm/module/apmhttp/v2 v2.5.0 h1:4AWlw8giL7hRYBQiwF1/Thm0GDsbQH/Ofe4eySAnURo= +go.elastic.co/apm/module/apmhttp/v2 v2.5.0/go.mod h1:ZP7gLEzY/OAPTqNZjp8AzA06HF82zfwXEpKI2sSVTgk= +go.elastic.co/apm/v2 v2.5.0 h1:UYqdu/bjcubcP9BIy5+os2ExRzw03yOQFG+sRGGhVlQ= +go.elastic.co/apm/v2 v2.5.0/go.mod h1:+CiBUdrrAGnGCL9TNx7tQz3BrfYV23L8Ljvotoc87so= go.elastic.co/ecszap v1.0.2 h1:iW5OGx8IiokiUzx/shD4AJCPFMC9uUtr7ycaiEIU++I= go.elastic.co/ecszap v1.0.2/go.mod h1:dJkSlK3BTiwG/qXhCwe50Mz/jwu854vSip8sIeQhNZg= go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= From e06b8efa3bc97391be1d2727b1f58004d184f5c0 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 12 Apr 2024 12:22:51 +0300 Subject: [PATCH 128/313] Fix the monorepo diff command for PR triggers (#38870) This commit fixes the buildkite plugin monorepo-diff so that it correctly detects the changed files and properly propagates the env vars to the triggering pipelines. Fixes: elastic/ingest-dev#3159 Signed-off-by: Alexandros Sapranidis --- .buildkite/pipeline.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 97219757d81..d29544997f3 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -4,7 +4,7 @@ steps: - label: "Trigger Auditbeat" plugins: - monorepo-diff#v1.0.1: - diff: "git diff --name-only HEAD~1" + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" watch: - path: - auditbeat/ @@ -22,12 +22,13 @@ steps: branch: "${BUILDKITE_BRANCH}" env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} - label: "Trigger Heartbeat" plugins: - monorepo-diff#v1.0.1: - diff: "git diff --name-only HEAD~1" + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" watch: - path: - heartbeat/ @@ -45,12 +46,13 @@ steps: branch: "${BUILDKITE_BRANCH}" env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} - label: "Trigger Xpack/Dockerlogbeat" plugins: - monorepo-diff#v1.0.1: - diff: "git diff --name-only ${GITHUB_PR_TARGET_BRANCH}...HEAD" + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" watch: - path: - x-pack/dockerlogbeat/ @@ -68,12 +70,13 @@ steps: branch: "${BUILDKITE_BRANCH}" env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} - label: "Trigger Metricbeat" plugins: - monorepo-diff#v1.0.1: - diff: "git diff --name-only ${GITHUB_PR_TARGET_BRANCH}...HEAD" + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" watch: - path: - metricbeat/ @@ -92,12 +95,13 @@ steps: branch: "${BUILDKITE_BRANCH}" env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} - label: "Trigger Deploy/K8S" plugins: - monorepo-diff#v1.0.1: - diff: "git diff --name-only HEAD~1" + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" watch: - path: - .buildkite/deploy/kubernetes/** @@ -110,4 +114,5 @@ steps: branch: "${BUILDKITE_BRANCH}" env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} From 640574da8a9ddb87317489c20378e9da4c2a7e5b Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Fri, 12 Apr 2024 11:53:58 +0200 Subject: [PATCH 129/313] Fix handling of truncated files for Filestream input (#38416) This commit fixes the handling of file truncation in the Filestream input. In some file truncation cases Filebeat would detect the truncation but it would not set the offset to zero, leading to the registry offset always increasing and causing the file to be re-ingested every time Filebeat was restarted. --- CHANGELOG.next.asciidoc | 1 + filebeat/input/filestream/input.go | 65 +++-- .../integration/filestream_truncation_test.go | 225 ++++++++++++++++++ filebeat/tests/integration/store_test.go | 4 +- libbeat/tests/integration/framework.go | 8 + 5 files changed, 281 insertions(+), 22 deletions(-) create mode 100644 filebeat/tests/integration/filestream_truncation_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 37fc00bd926..c5160e8f3a4 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -100,6 +100,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix handling of un-parsed JSON in O365 module. {issue}37800[37800] {pull}38709[38709] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] - Fix indexing failures by re-enabling event normalisation in netflow input. {issue}38703[38703] {pull}38780[38780] +- Fix handling of truncated files in Filestream {issue}38070[38070] {pull}38416[38416] *Heartbeat* diff --git a/filebeat/input/filestream/input.go b/filebeat/input/filestream/input.go index 43c6ddcb19f..0136b062b48 100644 --- a/filebeat/input/filestream/input.go +++ b/filebeat/input/filestream/input.go @@ -114,7 +114,7 @@ func (inp *filestream) Test(src loginp.Source, ctx input.TestContext) error { return fmt.Errorf("not file source") } - reader, err := inp.open(ctx.Logger, ctx.Cancelation, fs, 0) + reader, _, err := inp.open(ctx.Logger, ctx.Cancelation, fs, 0) if err != nil { return err } @@ -136,12 +136,16 @@ func (inp *filestream) Run( log := ctx.Logger.With("path", fs.newPath).With("state-id", src.Name()) state := initState(log, cursor, fs) - r, err := inp.open(log, ctx.Cancelation, fs, state.Offset) + r, truncated, err := inp.open(log, ctx.Cancelation, fs, state.Offset) if err != nil { log.Errorf("File could not be opened for reading: %v", err) return err } + if truncated { + state.Offset = 0 + } + metrics.FilesActive.Inc() metrics.HarvesterRunning.Inc() defer metrics.FilesActive.Dec() @@ -173,10 +177,20 @@ func initState(log *logp.Logger, c loginp.Cursor, s fileSource) state { return state } -func (inp *filestream) open(log *logp.Logger, canceler input.Canceler, fs fileSource, offset int64) (reader.Reader, error) { - f, encoding, err := inp.openFile(log, fs.newPath, offset) +func (inp *filestream) open( + log *logp.Logger, + canceler input.Canceler, + fs fileSource, + offset int64, +) (reader.Reader, bool, error) { + + f, encoding, truncated, err := inp.openFile(log, fs.newPath, offset) if err != nil { - return nil, err + return nil, truncated, err + } + + if truncated { + offset = 0 } ok := false // used for cleanup @@ -201,12 +215,12 @@ func (inp *filestream) open(log *logp.Logger, canceler input.Canceler, fs fileSo // don't require 'complicated' logic. logReader, err := newFileReader(log, canceler, f, inp.readerConfig, closerCfg) if err != nil { - return nil, err + return nil, truncated, err } dbgReader, err := debug.AppendReaders(logReader) if err != nil { - return nil, err + return nil, truncated, err } // Configure MaxBytes limit for EncodeReader as multiplied by 4 @@ -223,7 +237,7 @@ func (inp *filestream) open(log *logp.Logger, canceler input.Canceler, fs fileSo MaxBytes: encReaderMaxBytes, }) if err != nil { - return nil, err + return nil, truncated, err } r = readfile.NewStripNewline(r, inp.readerConfig.LineTerminator) @@ -235,61 +249,72 @@ func (inp *filestream) open(log *logp.Logger, canceler input.Canceler, fs fileSo r = readfile.NewLimitReader(r, inp.readerConfig.MaxBytes) ok = true // no need to close the file - return r, nil + return r, truncated, nil } // openFile opens a file and checks for the encoding. In case the encoding cannot be detected // or the file cannot be opened because for example of failing read permissions, an error // is returned and the harvester is closed. The file will be picked up again the next time -// the file system is scanned -func (inp *filestream) openFile(log *logp.Logger, path string, offset int64) (*os.File, encoding.Encoding, error) { +// the file system is scanned. +// +// openFile will also detect and hadle file truncation. If a file is truncated +// then the 3rd return value is true. +func (inp *filestream) openFile( + log *logp.Logger, + path string, + offset int64, +) (*os.File, encoding.Encoding, bool, error) { fi, err := os.Stat(path) if err != nil { - return nil, nil, fmt.Errorf("failed to stat source file %s: %w", path, err) + return nil, nil, false, fmt.Errorf("failed to stat source file %s: %w", path, err) } // it must be checked if the file is not a named pipe before we try to open it // if it is a named pipe os.OpenFile fails, so there is no need to try opening it. if fi.Mode()&os.ModeNamedPipe != 0 { - return nil, nil, fmt.Errorf("failed to open file %s, named pipes are not supported", fi.Name()) + return nil, nil, false, fmt.Errorf("failed to open file %s, named pipes are not supported", fi.Name()) } f, err := file.ReadOpen(path) if err != nil { - return nil, nil, fmt.Errorf("failed opening %s: %w", path, err) + return nil, nil, false, fmt.Errorf("failed opening %s: %w", path, err) } ok := false defer cleanup.IfNot(&ok, cleanup.IgnoreError(f.Close)) fi, err = f.Stat() if err != nil { - return nil, nil, fmt.Errorf("failed to stat source file %s: %w", path, err) + return nil, nil, false, fmt.Errorf("failed to stat source file %s: %w", path, err) } err = checkFileBeforeOpening(fi) if err != nil { - return nil, nil, err + return nil, nil, false, err } + truncated := false if fi.Size() < offset { + // if the file was truncated we need to reset the offset and notify + // all callers so they can also reset their offsets + truncated = true log.Infof("File was truncated. Reading file from offset 0. Path=%s", path) offset = 0 } err = inp.initFileOffset(f, offset) if err != nil { - return nil, nil, err + return nil, nil, truncated, err } encoding, err := inp.encodingFactory(f) if err != nil { if errors.Is(err, transform.ErrShortSrc) { - return nil, nil, fmt.Errorf("initialising encoding for '%v' failed due to file being too short", f) + return nil, nil, truncated, fmt.Errorf("initialising encoding for '%v' failed due to file being too short", f) } - return nil, nil, fmt.Errorf("initialising encoding for '%v' failed: %w", f, err) + return nil, nil, truncated, fmt.Errorf("initialising encoding for '%v' failed: %w", f, err) } ok = true // no need to close the file - return f, encoding, nil + return f, encoding, truncated, nil } func checkFileBeforeOpening(fi os.FileInfo) error { diff --git a/filebeat/tests/integration/filestream_truncation_test.go b/filebeat/tests/integration/filestream_truncation_test.go new file mode 100644 index 00000000000..98db9a6ad23 --- /dev/null +++ b/filebeat/tests/integration/filestream_truncation_test.go @@ -0,0 +1,225 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build integration + +package integration + +import ( + "bufio" + "encoding/json" + "fmt" + "os" + "path" + "path/filepath" + "testing" + "time" + + "github.com/elastic/beats/v7/libbeat/tests/integration" +) + +var truncationCfg = ` +filebeat.inputs: + - type: filestream + id: a-unique-filestream-input-id + enabled: true + prospector.scanner.check_interval: 30s + paths: + - %s +output: + file: + enabled: true + codec.json: + pretty: false + path: %s + filename: "output" + rotate_on_startup: true +queue.mem: + flush: + timeout: 1s + min_events: 32 +filebeat.registry.flush: 1s +path.home: %s +logging: + level: debug + selectors: + - file_watcher + - input.filestream + - input.harvester + metrics: + enabled: false +` + +func TestFilestreamLiveFileTruncation(t *testing.T) { + filebeat := integration.NewBeat( + t, + "filebeat", + "../../filebeat.test", + ) + + tempDir := filebeat.TempDir() + logFile := path.Join(tempDir, "log.log") + registryLogFile := filepath.Join(tempDir, "data/registry/filebeat/log.json") + filebeat.WriteConfigFile(fmt.Sprintf(truncationCfg, logFile, tempDir, tempDir)) + + // 1. Create a log file and let Filebeat harvest all contents + integration.GenerateLogFile(t, logFile, 200, false) + filebeat.Start() + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + + // 2. Truncate the file and wait Filebeat to close the file + if err := os.Truncate(logFile, 0); err != nil { + t.Fatalf("could not truncate log file: %s", err) + } + + // 3. Ensure Filebeat detected the file truncation + filebeat.WaitForLogs("File was truncated as offset (10000) > size (0)", 20*time.Second, "file was not truncated") + filebeat.WaitForLogs("File was truncated, nothing to read", 20*time.Second, "reader loop did not stop") + filebeat.WaitForLogs("Stopped harvester for file", 20*time.Second, "harvester did not stop") + filebeat.WaitForLogs("Closing reader of filestream", 20*time.Second, "reader did not close") + + // 4. Now we need to stop Filebeat before the next scan cycle + filebeat.Stop() + + // Assert we offset in the registry + assertLastOffset(t, registryLogFile, 10_000) + + // Open for appending because the file has already been truncated + integration.GenerateLogFile(t, logFile, 10, true) + + // 5. Start Filebeat again. + filebeat.Start() + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + + assertLastOffset(t, registryLogFile, 500) +} + +func TestFilestreamOfflineFileTruncation(t *testing.T) { + filebeat := integration.NewBeat( + t, + "filebeat", + "../../filebeat.test", + ) + + tempDir := filebeat.TempDir() + logFile := path.Join(tempDir, "log.log") + registryLogFile := filepath.Join(tempDir, "data/registry/filebeat/log.json") + filebeat.WriteConfigFile(fmt.Sprintf(truncationCfg, logFile, tempDir, tempDir)) + + // 1. Create a log file with some lines + integration.GenerateLogFile(t, logFile, 10, false) + + // 2. Ingest the file and stop Filebeat + filebeat.Start() + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + filebeat.Stop() + + // 3. Assert the offset is correctly set in the registry + assertLastOffset(t, registryLogFile, 500) + + // 4. Truncate the file and write some data (less than before) + if err := os.Truncate(logFile, 0); err != nil { + t.Fatalf("could not truncate log file: %s", err) + } + integration.GenerateLogFile(t, logFile, 5, true) + + // 5. Read the file again and stop Filebeat + filebeat.Start() + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + filebeat.WaitForLogs("End of file reached", 30*time.Second, "Filebeat did not finish reading the log file") + filebeat.Stop() + + // 6. Assert the registry offset is new, smaller file size. + assertLastOffset(t, registryLogFile, 250) +} + +func assertLastOffset(t *testing.T, path string, offset int) { + t.Helper() + entries := readFilestreamRegistryLog(t, path) + lastEntry := entries[len(entries)-1] + if lastEntry.Offset != offset { + t.Errorf("expecting offset %d got %d instead", offset, lastEntry.Offset) + t.Log("last registry entries:") + + max := len(entries) + if max > 10 { + max = 10 + } + for _, e := range entries[:max] { + t.Logf("%+v\n", e) + } + + t.FailNow() + } +} + +type registryEntry struct { + Key string + Offset int + Filename string + TTL time.Duration +} + +func readFilestreamRegistryLog(t *testing.T, path string) []registryEntry { + file, err := os.Open(path) + if err != nil { + t.Fatalf("could not open file '%s': %s", path, err) + } + + entries := []registryEntry{} + s := bufio.NewScanner(file) + + for s.Scan() { + line := s.Bytes() + + e := entry{} + if err := json.Unmarshal(line, &e); err != nil { + t.Fatalf("could not read line '%s': %s", string(line), err) + } + + // Skips registry log entries containing the operation ID like: + // '{"op":"set","id":46}' + if e.Key == "" { + continue + } + + entries = append(entries, registryEntry{ + Key: e.Key, + Offset: e.Value.Cursor.Offset, + TTL: e.Value.TTL, + Filename: e.Value.Meta.Source, + }) + } + + return entries +} + +type entry struct { + Key string `json:"k"` + Value struct { + Cursor struct { + Offset int `json:"offset"` + } `json:"cursor"` + Meta struct { + Source string `json:"source"` + } `json:"meta"` + TTL time.Duration `json:"ttl"` + } `json:"v"` +} diff --git a/filebeat/tests/integration/store_test.go b/filebeat/tests/integration/store_test.go index c3ddb1ca759..d4ee36298d5 100644 --- a/filebeat/tests/integration/store_test.go +++ b/filebeat/tests/integration/store_test.go @@ -106,10 +106,10 @@ func TestStore(t *testing.T) { filebeat.Stop() registryLogFile := filepath.Join(tempDir, "data/registry/filebeat/log.json") - readFilestreamRegistryLog(t, registryLogFile, "remove", 10) + countOperationsFromFilestreamRegistry(t, registryLogFile, "remove", 10) } -func readFilestreamRegistryLog(t *testing.T, path, op string, expectedCount int) { +func countOperationsFromFilestreamRegistry(t *testing.T, path, op string, expectedCount int) { file, err := os.Open(path) if err != nil { t.Fatalf("could not open file '%s': %s", path, err) diff --git a/libbeat/tests/integration/framework.go b/libbeat/tests/integration/framework.go index 6017c63fd87..b3bb33883b9 100644 --- a/libbeat/tests/integration/framework.go +++ b/libbeat/tests/integration/framework.go @@ -714,6 +714,14 @@ func GenerateLogFile(t *testing.T, path string, count int, append bool) { } }() now := time.Now().Format(time.RFC3339) + // If the length is different, e.g when there is no offset from UTC. + // add some padding so the length is predictable + if len(now) != len(time.RFC3339) { + paddingNeeded := len(time.RFC3339) - len(now) + for i := 0; i < paddingNeeded; i++ { + now += "-" + } + } for i := 0; i < count; i++ { if _, err := fmt.Fprintf(file, "%s %13d\n", now, i); err != nil { t.Fatalf("could not write line %d to file: %s", count+1, err) From 91532757393692e6656e6b2f9665a558c3ec04f6 Mon Sep 17 00:00:00 2001 From: Christiano Haesbaert Date: Fri, 12 Apr 2024 13:25:35 +0200 Subject: [PATCH 130/313] =?UTF-8?q?libbeat/processors/add=5Fprocess=5Fmeta?= =?UTF-8?q?da:=20add=20capabilities=20to=20process=20me=E2=80=A6=20(#38252?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * libbeat/processors/add_process_metada: add capabilities to process metadata Extends process metadata with effective and permitted capabilities. --- CHANGELOG.next.asciidoc | 2 +- .../add_process_metadata.go | 7 ++ .../add_process_metadata_test.go | 65 ++++++++++++++++--- .../processors/add_process_metadata/config.go | 6 ++ .../gosysinfo_provider.go | 29 ++++++--- 5 files changed, 88 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index c5160e8f3a4..978309d1f70 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -209,7 +209,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Libbeat* - +- Add support for linux capabilities in add_process_metadata. {pull}38252[38252] *Heartbeat* - Added status to monitor run log report. diff --git a/libbeat/processors/add_process_metadata/add_process_metadata.go b/libbeat/processors/add_process_metadata/add_process_metadata.go index 60a533a8e77..054d6d133e6 100644 --- a/libbeat/processors/add_process_metadata/add_process_metadata.go +++ b/libbeat/processors/add_process_metadata/add_process_metadata.go @@ -73,6 +73,7 @@ type processMetadata struct { env map[string]string startTime time.Time pid, ppid int + capEffective, capPermitted []string // fields mapstr.M } @@ -332,6 +333,12 @@ func (p *processMetadata) toMap() mapstr.M { } process["owner"] = user } + if len(p.capEffective) > 0 { + process.Put("thread.capabilities.effective", p.capEffective) + } + if len(p.capPermitted) > 0 { + process.Put("thread.capabilities.permitted", p.capPermitted) + } return mapstr.M{ "process": process, diff --git a/libbeat/processors/add_process_metadata/add_process_metadata_test.go b/libbeat/processors/add_process_metadata/add_process_metadata_test.go index 9dd1a7eb4dd..81816f1a87a 100644 --- a/libbeat/processors/add_process_metadata/add_process_metadata_test.go +++ b/libbeat/processors/add_process_metadata/add_process_metadata_test.go @@ -30,6 +30,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common/capabilities" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" @@ -40,6 +41,10 @@ import ( func TestAddProcessMetadata(t *testing.T) { logp.TestingSetup(logp.WithSelectors(processorName)) + capMock, err := capabilities.FromUint64(0xabacabb) + if err != nil { + t.Fatalf("could not instantiate capabilities: %s", err) + } startTime := time.Now() testProcs := testProvider{ 1: { @@ -53,11 +58,13 @@ func TestAddProcessMetadata(t *testing.T) { "BOOT_IMAGE": "/boot/vmlinuz-4.11.8-300.fc26.x86_64", "LANG": "en_US.UTF-8", }, - pid: 1, - ppid: 0, - startTime: startTime, - username: "root", - userid: "0", + pid: 1, + ppid: 0, + startTime: startTime, + username: "root", + userid: "0", + capEffective: capMock, + capPermitted: capMock, }, 3: { name: "systemd", @@ -70,11 +77,13 @@ func TestAddProcessMetadata(t *testing.T) { "BOOT_IMAGE": "/boot/vmlinuz-4.11.8-300.fc26.x86_64", "LANG": "en_US.UTF-8", }, - pid: 1, - ppid: 0, - startTime: startTime, - username: "user", - userid: "1001", + pid: 1, + ppid: 0, + startTime: startTime, + username: "user", + userid: "1001", + capEffective: capMock, + capPermitted: capMock, }, } @@ -162,6 +171,12 @@ func TestAddProcessMetadata(t *testing.T) { "name": "root", "id": "0", }, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "effective": capMock, + "permitted": capMock, + }, + }, }, "container": mapstr.M{ "id": "b5285682fba7449c86452b89a800609440ecc88a7ba5f2d38bedfb85409b30b1", @@ -247,6 +262,12 @@ func TestAddProcessMetadata(t *testing.T) { "name": "root", "id": "0", }, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "effective": capMock, + "permitted": capMock, + }, + }, }, "container": mapstr.M{ "id": "b5285682fba7449c86452b89a800609440ecc88a7ba5f2d38bedfb85409b30b1", @@ -287,6 +308,12 @@ func TestAddProcessMetadata(t *testing.T) { "name": "root", "id": "0", }, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "effective": capMock, + "permitted": capMock, + }, + }, }, "container": mapstr.M{ "id": "b5285682fba7449c86452b89a800609440ecc88a7ba5f2d38bedfb85409b30b1", @@ -328,6 +355,12 @@ func TestAddProcessMetadata(t *testing.T) { "name": "root", "id": "0", }, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "effective": capMock, + "permitted": capMock, + }, + }, }, }, }, @@ -520,6 +553,12 @@ func TestAddProcessMetadata(t *testing.T) { "name": "root", "id": "0", }, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "effective": capMock, + "permitted": capMock, + }, + }, }, "container": mapstr.M{ "id": "b5285682fba7449c86452b89a800609440ecc88a7ba5f2d38bedfb85409b30b1", @@ -645,6 +684,12 @@ func TestAddProcessMetadata(t *testing.T) { "name": "user", "id": "1001", }, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "effective": capMock, + "permitted": capMock, + }, + }, }, }, }, diff --git a/libbeat/processors/add_process_metadata/config.go b/libbeat/processors/add_process_metadata/config.go index f16ba6771a8..1f2e9920da1 100644 --- a/libbeat/processors/add_process_metadata/config.go +++ b/libbeat/processors/add_process_metadata/config.go @@ -85,6 +85,12 @@ var defaultFields = mapstr.M{ "name": nil, "id": nil, }, + "thread": mapstr.M{ + "capabilities": mapstr.M{ + "effective": nil, + "permitted": nil, + }, + }, }, "container": mapstr.M{ "id": nil, diff --git a/libbeat/processors/add_process_metadata/gosysinfo_provider.go b/libbeat/processors/add_process_metadata/gosysinfo_provider.go index ecc94233dce..70d6e2a2c33 100644 --- a/libbeat/processors/add_process_metadata/gosysinfo_provider.go +++ b/libbeat/processors/add_process_metadata/gosysinfo_provider.go @@ -21,6 +21,7 @@ import ( "os/user" "strings" + "github.com/elastic/beats/v7/libbeat/common/capabilities" "github.com/elastic/go-sysinfo" "github.com/elastic/go-sysinfo/types" ) @@ -52,17 +53,25 @@ func (p gosysinfoProvider) GetProcessMetadata(pid int) (result *processMetadata, } } + // Capabilities are linux only and other systems will fail + // with ErrUnsupported. In the event of any errors, we simply + // don't report the capabilities. + capPermitted, _ := capabilities.FromPid(capabilities.Permitted, pid) + capEffective, _ := capabilities.FromPid(capabilities.Effective, pid) + r := processMetadata{ - name: info.Name, - args: info.Args, - env: env, - title: strings.Join(info.Args, " "), - exe: info.Exe, - pid: info.PID, - ppid: info.PPID, - startTime: info.StartTime, - username: username, - userid: userid, + name: info.Name, + args: info.Args, + env: env, + title: strings.Join(info.Args, " "), + exe: info.Exe, + pid: info.PID, + ppid: info.PPID, + capEffective: capEffective, + capPermitted: capPermitted, + startTime: info.StartTime, + username: username, + userid: userid, } r.fields = r.toMap() return &r, nil From fbae2851d537f19aee80a557a6ba2975ac7d116f Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Fri, 12 Apr 2024 14:58:19 +0300 Subject: [PATCH 131/313] Moved xpack/winlogbeat pipeline to central pipeline (#38851) * test - added empty file * removed test dummy file * restored snapshot packaging step * dummy file to test packaging * pr fixes * fixing packaging step * fixing packaging step * moved xpack dockerlogbeat to main pipeline * updated packaging step * restored winlogbeat pipeline * restored snapshot packaging step * fixing packaging step * moved xpack-winlogbeat to main pipeline * pr fixes * updated main pipeline --- .buildkite/pipeline.yml | 24 +++ .buildkite/pull-requests.json | 16 -- .buildkite/scripts/common.sh | 10 +- .../generate_xpack_winlogbeat_pipeline.sh | 176 ------------------ .../x-pack/pipeline.xpack.winlogbeat.yml | 175 ++++++++++++++--- 5 files changed, 170 insertions(+), 231 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index d29544997f3..7183c89219b 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -98,6 +98,30 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Xpack/Winlogbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/winlogbeat/ + - .buildkite/x-pack/pipeline.xpack.winlogbeat.yml + #OSS + - go.mod + - pytest.ini + - dev-tools/** + - libbeat/** + - testing/** + config: + trigger: "beats-xpack-winlogbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Deploy/K8S" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index d40b5dc5fa0..d3e77326c35 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -80,22 +80,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^winlogbeat/.*", ".buildkite/winlogbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-winlogbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/winlogbeat$", - "always_trigger_comment_regex": "^/test x-pack/winlogbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/winlogbeat/.*", ".buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, { "enabled": true, "pipelineSlug": "beats-xpack-packetbeat", diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 0af5f732ea9..c1c009141c7 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -19,9 +19,7 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" -[ -z "${run_xpack_winlogbeat+x}" ] && run_xpack_winlogbeat="$(buildkite-agent meta-data get run_xpack_winlogbeat --default "false")" [ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" -[ -z "${run_xpack_dockerlogbeat+x}" ] && run_xpack_dockerlogbeat="$(buildkite-agent meta-data get run_xpack_dockerlogbeat --default "false")" [ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" [ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" [ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" @@ -136,7 +134,7 @@ packaging_changeset=( ".go-version" ) -case "${BUILDKITE_PIPELINE_SLUG}" in +case "${BUILDKITE_PIPELINE_SLUG}" in "filebeat") BEAT_CHANGESET_REFERENCE=${filebeat_changeset[@]} ;; @@ -152,9 +150,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-auditbeat") BEAT_CHANGESET_REFERENCE=${xpack_auditbeat_changeset[@]} ;; - "beats-xpack-dockerlogbeat") - BEAT_CHANGESET_REFERENCE=${xpack_dockerlogbeat_changeset[@]} - ;; "beats-xpack-filebeat") BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} ;; @@ -173,9 +168,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-packetbeat") BEAT_CHANGESET_REFERENCE=${xpack_packetbeat_changeset[@]} ;; - "beats-xpack-winlogbeat") - BEAT_CHANGESET_REFERENCE=${xpack_winlogbeat_changeset[@]} - ;; *) echo "~~~ The changeset for the ${BUILDKITE_PIPELINE_SLUG} pipeline hasn't been defined yet." ;; diff --git a/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh deleted file mode 100755 index 60aff562d17..00000000000 --- a/.buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-winlogbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - - label: ":windows: Windows 2019 Unit (MODULE) Tests" - key: "mandatory-win-2019-module-unit-tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - env: - MODULE: $MODULE - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows (MODULE) {{matrix.image}} Unit Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -# echo "Add the extended windows tests into the pipeline" -# TODO: ADD conditions from the main pipeline - - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index 80b70e287d9..e1e2ec3e045 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -8,41 +8,156 @@ env: IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - BEATS_PROJECT_NAME: "x-pack/winlogbeat" - - #Packaging - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - PACKAGING_ARM_PLATFORMS: "linux/arm64" + GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "Mandatory Tests" + key: "xpack-winlogbeat-mandatory-tests" + steps: + + - label: ":windows: Xpack/Winlogbeat Win-2019 Unit (MODULE) Tests" + key: "mandatory-win-2019-module-unit-tests" + command: | + Set-Location -Path x-pack/winlogbeat + mage build unitTest + env: + MODULE: $MODULE + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/winlogbeat/build/*.xml" + - "x-pack/winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Xpack/Winlogbeat Win-2019 Unit (MODULE) Tests" + + - label: ":windows: Xpack/Winlogbeat Win-2016 Unit Tests" + command: | + Set-Location -Path x-pack/winlogbeat + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/winlogbeat/build/*.xml" + - "x-pack/winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Xpack/Winlogbeat Win-2016 Unit Tests" + + - label: ":windows: Xpack/Winlogbeat Win-2022 Unit Tests" + command: | + Set-Location -Path x-pack/winlogbeat + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/winlogbeat/build/*.xml" + - "x-pack/winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Xpack/Winlogbeat Win-2022 Unit Tests" - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Winlogbeat - run_xpack_winlogbeat" - key: "run_xpack_winlogbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" + - group: "Extended Windows Tests" + key: "extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + + steps: + - label: ":windows: Xpack/Winlogbeat Win-10 Unit Tests" + command: | + Set-Location -Path x-pack/winlogbeat + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/winlogbeat/build/*.xml" + - "x-pack/winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Xpack/Winlogbeat Win-10 Unit Tests" + + - label: ":windows: Xpack/Winlogbeat Win-11 Unit Tests" + command: | + Set-Location -Path x-pack/winlogbeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/winlogbeat/build/*.xml" + - "x-pack/winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Xpack/Winlogbeat Win-11 Unit Tests" + + - label: ":windows: Xpack/Winlogbeat Win-2019 Unit Tests" + command: | + Set-Location -Path x-pack/winlogbeat + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/winlogbeat/build/*.xml" + - "x-pack/winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/winlogbeat: Win-2019 Unit Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack winlogbeat pipeline" - key: "xpack-winlogbeat-pipeline" - command: ".buildkite/scripts/generate_xpack_winlogbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - "xpack-winlogbeat-mandatory-tests" + + - group: "Xpack/Winlogbeat Packaging" + key: "xpack-winlogbeat-packaging" + + steps: + - label: ":ubuntu: Packaging Linux" + key: "packaging-linux" + command: "cd x-pack/winlogbeat && mage package" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "Xpack/Winlogbeat Packaging" + From 212c1bdfb02a8979678050a6be0516e00c166abf Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 12 Apr 2024 14:12:05 +0200 Subject: [PATCH 132/313] [CI] Agentbeat package pipeline resource (#38865) * [CI] Agentbeat package pipeline resource * Update catalog-info.yaml Co-authored-by: Victor Martinez --------- Co-authored-by: Victor Martinez --- catalog-info.yaml | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index f6e78e87b7c..ee78918453d 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -195,8 +195,8 @@ spec: skip_intermediate_builds: true skip_intermediate_builds_branch_filter: "!main !7.* !8.*" env: - # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved - ELASTIC_PR_COMMENTS_ENABLED: "false" + # TODO set to true once https://github.com/elastic/ingest-dev/issues/3001 has been resolved + ELASTIC_PR_COMMENTS_ENABLED: "false" teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -976,3 +976,42 @@ spec: access_level: MANAGE_BUILD_AND_READ everyone: access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: beats-xpack-agentbeat-package + description: Buildkite pipeline for packaging and publishing agentbeat + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-xpack-agentbeat-package +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-xpack-agentbeat-package + description: Buildkite pipeline for packaging and publishing agentbeat + spec: + repository: elastic/beats + pipeline_file: ".buildkite/x-pack/agentbeat/pipeline.xpack.agentbeat.package.yml" + # todo release branched must be 8.14+ + branch_configuration: "main 8.14" + cancel_intermediate_builds: false + skip_intermediate_builds: false + provider_settings: + trigger_mode: code + build_pull_requests: false + build_branches: true + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + release-eng: + access_level: BUILD_AND_READ + everyone: + access_level: READ_ONLY From 695f2cc7cf5daa98ab4d3c7947657050a4f2ceb2 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 12 Apr 2024 15:26:15 +0300 Subject: [PATCH 133/313] Adjust the Beats pipelines branch configuraiton (#38875) This commit adjust the branch configuration of the Beats Buildkite pipelines to be triggerable from branches existing on upstream comming from mergify. Signed-off-by: Alexandros Sapranidis --- catalog-info.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index ee78918453d..cd61cf0bccf 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -39,7 +39,7 @@ spec: name: beats description: "Beats Main pipeline" spec: - branch_configuration: "main 7.17 8.*" + branch_configuration: "main 7.17 8.* mergify*" pipeline_file: ".buildkite/pipeline.yml" provider_settings: build_pull_request_forks: false From c1b16f059db06eeecc246db242144ed13e65ee0a Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 12 Apr 2024 16:07:32 +0300 Subject: [PATCH 134/313] Set Buildkite to trigger builds with labels (#38881) * Set Buildkite to trigger builds with labels This is something that we would want to enable, especially if we want to have steps conditionally be triggered if labels are defined or not. Signed-off-by: Alexandros Sapranidis --- catalog-info.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/catalog-info.yaml b/catalog-info.yaml index cd61cf0bccf..fb6f04b236b 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -43,6 +43,7 @@ spec: pipeline_file: ".buildkite/pipeline.yml" provider_settings: build_pull_request_forks: false + build_pull_request_labels_changed: true # automatically re trigger build if GH labels change build_pull_requests: true # requires filter_enabled and filter_condition settings as below when used with buildkite-pr-bot build_tags: true filter_enabled: true From 2a144f3e67ff15c6d0ca1b23d8fee1965e4d1db6 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 12 Apr 2024 16:29:24 +0300 Subject: [PATCH 135/313] Add scripts folder to trigger all projects (#38883) This way any change under the script folder that is what most of the CI project use to run their step is broken we will know about it. Signed-off-by: Alexandros Sapranidis --- .buildkite/pipeline.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 7183c89219b..f424b30f45c 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -9,6 +9,7 @@ steps: - path: - auditbeat/ - .buildkite/auditbeat/ + - .buildkite/scripts #OSS - go.mod - pytest.ini @@ -33,6 +34,7 @@ steps: - path: - heartbeat/ - .buildkite/heartbeat/ + - .buildkite/scripts #OSS - go.mod - pytest.ini @@ -57,6 +59,7 @@ steps: - path: - x-pack/dockerlogbeat/ - .buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml + - .buildkite/scripts #OSS - go.mod - pytest.ini @@ -106,6 +109,7 @@ steps: - path: - x-pack/winlogbeat/ - .buildkite/x-pack/pipeline.xpack.winlogbeat.yml + - .buildkite/scripts #OSS - go.mod - pytest.ini @@ -131,6 +135,7 @@ steps: - .buildkite/deploy/kubernetes/** - deploy/kubernetes/** - libbeat/docs/version.asciidoc + - .buildkite/scripts config: trigger: "deploy-k8s" build: From e5e85adb39667724d6ca91d015e4e255fec59900 Mon Sep 17 00:00:00 2001 From: Lee E Hinman <57081003+leehinman@users.noreply.github.com> Date: Fri, 12 Apr 2024 09:25:08 -0500 Subject: [PATCH 136/313] filebeat benchmark input and discard output (#37437) * filebeat benchmark input and discard output simple input that generates synthetic events, useful for benchmarking and testing outputs, and simple output that discards all data, useful for benchmarking and testing inputs --- CHANGELOG.next.asciidoc | 2 + filebeat/docs/filebeat-options.asciidoc | 3 + libbeat/docs/outputs-list.asciidoc | 10 + libbeat/outputs/discard/config.go | 30 +++ libbeat/outputs/discard/discard.go | 79 ++++++++ libbeat/outputs/discard/docs/discard.asciidoc | 34 ++++ libbeat/publisher/includes/includes.go | 1 + .../docs/inputs/input-benchmark.asciidoc | 93 +++++++++ x-pack/filebeat/input/benchmark/config.go | 31 +++ .../filebeat/input/benchmark/config_test.go | 37 ++++ x-pack/filebeat/input/benchmark/input.go | 176 ++++++++++++++++++ .../input/default-inputs/inputs_other.go | 2 + 12 files changed, 498 insertions(+) create mode 100644 libbeat/outputs/discard/config.go create mode 100644 libbeat/outputs/discard/discard.go create mode 100644 libbeat/outputs/discard/docs/discard.asciidoc create mode 100644 x-pack/filebeat/docs/inputs/input-benchmark.asciidoc create mode 100644 x-pack/filebeat/input/benchmark/config.go create mode 100644 x-pack/filebeat/input/benchmark/config_test.go create mode 100644 x-pack/filebeat/input/benchmark/input.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 978309d1f70..0c9b3d89cb2 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -204,6 +204,8 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Update CEL mito extensions to v1.10.0 to add keys/values helper. {pull}38504[38504] - Add support for Active Directory an entity analytics provider. {pull}37919[37919] - Add debugging breadcrumb to logs when writing request trace log. {pull}38636[38636] +- added benchmark input {pull}37437[37437] +- added benchmark input and discard output {pull}37437[37437] *Auditbeat* diff --git a/filebeat/docs/filebeat-options.asciidoc b/filebeat/docs/filebeat-options.asciidoc index 1e9f9cac6e0..13e4ffde499 100644 --- a/filebeat/docs/filebeat-options.asciidoc +++ b/filebeat/docs/filebeat-options.asciidoc @@ -70,6 +70,7 @@ You can configure {beatname_uc} to use the following inputs: * <<{beatname_lc}-input-aws-s3>> * <<{beatname_lc}-input-azure-eventhub>> * <<{beatname_lc}-input-azure-blob-storage>> +* <<{beatname_lc}-input-benchmark>> * <<{beatname_lc}-input-cel>> * <<{beatname_lc}-input-cloudfoundry>> * <<{beatname_lc}-input-cometd>> @@ -104,6 +105,8 @@ include::../../x-pack/filebeat/docs/inputs/input-azure-eventhub.asciidoc[] include::../../x-pack/filebeat/docs/inputs/input-azure-blob-storage.asciidoc[] +include::../../x-pack/filebeat/docs/inputs/input-benchmark.asciidoc[] + include::../../x-pack/filebeat/docs/inputs/input-cel.asciidoc[] include::../../x-pack/filebeat/docs/inputs/input-cloudfoundry.asciidoc[] diff --git a/libbeat/docs/outputs-list.asciidoc b/libbeat/docs/outputs-list.asciidoc index 4181c10f64f..bf6bda35094 100644 --- a/libbeat/docs/outputs-list.asciidoc +++ b/libbeat/docs/outputs-list.asciidoc @@ -24,6 +24,9 @@ endif::[] ifndef::no_console_output[] * <> endif::[] +ifndef::no_discard_output[] +* <> +endif::[] //# end::outputs-list[] @@ -77,6 +80,13 @@ endif::[] include::{libbeat-outputs-dir}/console/docs/console.asciidoc[] endif::[] +ifndef::no_discard_output[] +ifdef::requires_xpack[] +[role="xpack"] +endif::[] +include::{libbeat-outputs-dir}/discard/docs/discard.asciidoc[] +endif::[] + ifndef::no_codec[] ifdef::requires_xpack[] [role="xpack"] diff --git a/libbeat/outputs/discard/config.go b/libbeat/outputs/discard/config.go new file mode 100644 index 00000000000..ffdb6c038b3 --- /dev/null +++ b/libbeat/outputs/discard/config.go @@ -0,0 +1,30 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package discard + +import ( + "github.com/elastic/elastic-agent-libs/config" +) + +type discardOutConfig struct { + Queue config.Namespace `config:"queue"` +} + +func defaultConfig() discardOutConfig { + return discardOutConfig{} +} diff --git a/libbeat/outputs/discard/discard.go b/libbeat/outputs/discard/discard.go new file mode 100644 index 00000000000..c9a51b0f33d --- /dev/null +++ b/libbeat/outputs/discard/discard.go @@ -0,0 +1,79 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package discard + +import ( + "context" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/outputs" + "github.com/elastic/beats/v7/libbeat/publisher" + "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" +) + +func init() { + outputs.RegisterType("discard", makeDiscard) +} + +type discardOutput struct { + log *logp.Logger + beat beat.Info + observer outputs.Observer +} + +func makeDiscard( + _ outputs.IndexManager, + beat beat.Info, + observer outputs.Observer, + cfg *config.C, +) (outputs.Group, error) { + out := &discardOutput{ + log: logp.NewLogger("discard"), + beat: beat, + observer: observer, + } + doConfig := defaultConfig() + if err := cfg.Unpack(&doConfig); err != nil { + return outputs.Fail(err) + } + + // disable bulk support in publisher pipeline + _ = cfg.SetInt("bulk_max_size", -1, -1) + out.log.Infof("Initialized discard output") + return outputs.Success(doConfig.Queue, -1, 0, nil, out) +} + +// Implement Outputer +func (out *discardOutput) Close() error { + return nil +} + +func (out *discardOutput) Publish(_ context.Context, batch publisher.Batch) error { + defer batch.ACK() + + st := out.observer + events := batch.Events() + st.NewBatch(len(events)) + st.Acked(len(events)) + return nil +} + +func (out *discardOutput) String() string { + return "discard" +} diff --git a/libbeat/outputs/discard/docs/discard.asciidoc b/libbeat/outputs/discard/docs/discard.asciidoc new file mode 100644 index 00000000000..3e2990cb93b --- /dev/null +++ b/libbeat/outputs/discard/docs/discard.asciidoc @@ -0,0 +1,34 @@ +[[discard-output]] +=== Configure the Discard output + +++++ +Discard +++++ + +The Discard output throws away data. + +WARNING: The Discard output should be used only for development or +debugging issues. Data is lost. + +This can be useful if you want to work on your input configuration +without needing to configure an output. It can also be useful to test +how changes in input and processor configuration affect performance. + +Example configuration: + +["source","yaml",subs="attributes"] +------------------------------------------------------------------------------ +output.discard: + enabled: true +------------------------------------------------------------------------------ + +==== Configuration options + +You can specify the following `output.discard` options in the +{beatname_lc}.yml+ config file: + +===== `enabled` + +The enabled config is a boolean setting to enable or disable the output. If set +to false, the output is disabled. + +The default value is `true`. diff --git a/libbeat/publisher/includes/includes.go b/libbeat/publisher/includes/includes.go index 84622ad10f1..c1e2d02e3cf 100644 --- a/libbeat/publisher/includes/includes.go +++ b/libbeat/publisher/includes/includes.go @@ -22,6 +22,7 @@ import ( _ "github.com/elastic/beats/v7/libbeat/outputs/codec/format" _ "github.com/elastic/beats/v7/libbeat/outputs/codec/json" _ "github.com/elastic/beats/v7/libbeat/outputs/console" + _ "github.com/elastic/beats/v7/libbeat/outputs/discard" _ "github.com/elastic/beats/v7/libbeat/outputs/elasticsearch" _ "github.com/elastic/beats/v7/libbeat/outputs/fileout" _ "github.com/elastic/beats/v7/libbeat/outputs/kafka" diff --git a/x-pack/filebeat/docs/inputs/input-benchmark.asciidoc b/x-pack/filebeat/docs/inputs/input-benchmark.asciidoc new file mode 100644 index 00000000000..db803697335 --- /dev/null +++ b/x-pack/filebeat/docs/inputs/input-benchmark.asciidoc @@ -0,0 +1,93 @@ +[role="xpack"] + +:type: benchmark + +[id="{beatname_lc}-input-{type}"] +=== Benchmark input + +++++ +Benchmark +++++ + +beta[] + +The Benchmark input generates generic events and sends them to the output. This can be useful when you want to benchmark the difference between outputs or output settings. + +Example configurations: + +Basic example, infinite events as quickly as possible: +["source","yaml",subs="attributes"] +---- +{beatname_lc}.inputs: +- type: benchmark + enabled: true + message: "test message" + threads: 1 +---- + +Send 1024 events and stop example: +["source","yaml",subs="attributes"] +---- +{beatname_lc}.inputs: +- type: benchmark + enabled: true + message: "test message" + threads: 1 + count: 1024 +---- + +Send 5 events per second example: +["source","yaml",subs="attributes"] +---- +{beatname_lc}.inputs: +- type: benchmark + enabled: true + message: "test message" + threads: 1 + eps: 5 +---- + +==== Configuration options + +The Benchmark input supports the following configuration options plus the +<<{beatname_lc}-input-{type}-common-options>> described later. + +[float] +==== `message` + +This is the value that will be in the `message` field of the json document. + +[float] +==== `threads` + +This is the number of goroutines that will be started generating messages. Normally 1 thread can saturate an output but if necessary this can be increased. + +[float] +==== `count` + +This is the number of messages to send. 0 represents sending infinite messages. This is mutually exclusive with the `eps` option. + +[float] +==== `eps` + +This is the number of events per second to send. 0 represents sending as quickly as possible. This is mutually exclusive with the `count` option. + + +[float] +=== Metrics + +This input exposes metrics under the <>. +These metrics are exposed under the `/inputs` path. They can be used to +observe the activity of the input. + +[options="header"] +|======= +| Metric | Description +| `events_published_total` | Number of events published. +| `publishing_time` | Histogram of the elapsed in nanoseconds (time of publisher.Publish). +|======= + +[id="{beatname_lc}-input-{type}-common-options"] +include::../../../../filebeat/docs/inputs/input-common-options.asciidoc[] + +:type!: diff --git a/x-pack/filebeat/input/benchmark/config.go b/x-pack/filebeat/input/benchmark/config.go new file mode 100644 index 00000000000..e26182476a9 --- /dev/null +++ b/x-pack/filebeat/input/benchmark/config.go @@ -0,0 +1,31 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package benchmark + +import "fmt" + +type benchmarkConfig struct { + Message string `config:"message"` + Count uint64 `config:"count"` + Threads uint8 `config:"threads"` + Eps uint64 `config:"eps"` +} + +var ( + defaultConfig = benchmarkConfig{ + Message: "generic benchmark message", + Threads: 1, + } +) + +func (c *benchmarkConfig) Validate() error { + if c.Count > 0 && c.Eps > 0 { + return fmt.Errorf("only one of count or eps may be specified, not both") + } + if c.Message == "" { + return fmt.Errorf("message must be specified") + } + return nil +} diff --git a/x-pack/filebeat/input/benchmark/config_test.go b/x-pack/filebeat/input/benchmark/config_test.go new file mode 100644 index 00000000000..0481485d7e8 --- /dev/null +++ b/x-pack/filebeat/input/benchmark/config_test.go @@ -0,0 +1,37 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package benchmark + +import ( + "strings" + "testing" +) + +func TestValidate(t *testing.T) { + tests := map[string]struct { + cfg benchmarkConfig + expectError bool + errorString string + }{ + "default": {cfg: defaultConfig}, + "countAndEps": {cfg: benchmarkConfig{Message: "a", Count: 1, Eps: 1}, expectError: true, errorString: "only one of count or eps may be specified"}, + "empty": {cfg: benchmarkConfig{}, expectError: true, errorString: "message must be specified"}, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + err := tc.cfg.Validate() + if err == nil && tc.expectError == true { + t.Fatalf("expected validation error, didn't get it") + } + if err != nil && tc.expectError == false { + t.Fatalf("unexpected validation error: %s", err) + } + if err != nil && !strings.Contains(err.Error(), tc.errorString) { + t.Fatalf("error: '%s' didn't contain expected string: '%s'", err, tc.errorString) + } + }) + } +} diff --git a/x-pack/filebeat/input/benchmark/input.go b/x-pack/filebeat/input/benchmark/input.go new file mode 100644 index 00000000000..dd6d198cc40 --- /dev/null +++ b/x-pack/filebeat/input/benchmark/input.go @@ -0,0 +1,176 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package benchmark + +import ( + "sync" + "time" + + "github.com/rcrowley/go-metrics" + + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + stateless "github.com/elastic/beats/v7/filebeat/input/v2/input-stateless" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/feature" + "github.com/elastic/beats/v7/libbeat/monitoring/inputmon" + "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/elastic-agent-libs/monitoring" + "github.com/elastic/elastic-agent-libs/monitoring/adapter" +) + +const ( + inputName = "benchmark" +) + +// Plugin registers the input +func Plugin() v2.Plugin { + return v2.Plugin{ + Name: inputName, + Stability: feature.Experimental, + Manager: stateless.NewInputManager(configure), + } +} + +func configure(cfg *config.C) (stateless.Input, error) { + bConf := defaultConfig + if err := cfg.Unpack(&bConf); err != nil { + return nil, err + } + return &benchmarkInput{cfg: bConf}, nil +} + +// benchmarkInput is the main runtime object for the input +type benchmarkInput struct { + cfg benchmarkConfig +} + +// Name returns the name of the input +func (bi *benchmarkInput) Name() string { + return inputName +} + +// Test validates the configuration +func (bi *benchmarkInput) Test(ctx v2.TestContext) error { + return bi.cfg.Validate() +} + +// Run starts the data generation. +func (bi *benchmarkInput) Run(ctx v2.Context, publisher stateless.Publisher) error { + var wg sync.WaitGroup + metrics := newInputMetrics(ctx.ID) + + for i := uint8(0); i < bi.cfg.Threads; i++ { + wg.Add(1) + go func(thread uint8) { + defer wg.Done() + runThread(ctx, publisher, thread, bi.cfg, metrics) + }(i) + } + wg.Wait() + return ctx.Cancelation.Err() +} + +func runThread(ctx v2.Context, publisher stateless.Publisher, thread uint8, cfg benchmarkConfig, metrics *inputMetrics) { + ctx.Logger.Infof("starting benchmark input thread: %d", thread) + defer ctx.Logger.Infof("stopping benchmark input thread: %d", thread) + + var line uint64 + var name uint64 + + switch { + case cfg.Count > 0: + for { + select { + case <-ctx.Cancelation.Done(): + return + default: + publishEvt(publisher, cfg.Message, line, name, thread, metrics) + line++ + if line == cfg.Count { + return + } + } + } + case cfg.Eps > 0: + ticker := time.NewTicker(1 * time.Second) + pubChan := make(chan bool, int(cfg.Eps)) + for { + select { + case <-ctx.Cancelation.Done(): + ticker.Stop() + return + case <-ticker.C: + //don't want to block on filling doPublish channel + //so only send as many as it can hold right now + numToSend := cap(pubChan) - len(pubChan) + for i := 0; i < numToSend; i++ { + pubChan <- true + } + case <-pubChan: + publishEvt(publisher, cfg.Message, line, name, thread, metrics) + line++ + if line == 0 { + name++ + } + } + } + default: + for { + select { + case <-ctx.Cancelation.Done(): + return + default: + publishEvt(publisher, cfg.Message, line, name, thread, metrics) + line++ + if line == 0 { + name++ + } + } + } + } +} + +func publishEvt(publisher stateless.Publisher, msg string, line uint64, filename uint64, thread uint8, metrics *inputMetrics) { + timestamp := time.Now() + evt := beat.Event{ + Timestamp: timestamp, + Fields: mapstr.M{ + "message": msg, + "line": line, + "filename": filename, + "thread": thread, + }, + } + publisher.Publish(evt) + metrics.publishingTime.Update(time.Since(timestamp).Nanoseconds()) + metrics.eventsPublished.Add(1) +} + +type inputMetrics struct { + unregister func() + + eventsPublished *monitoring.Uint // number of events published + publishingTime metrics.Sample // histogram of the elapsed times in nanoseconds (time of publisher.Publish) +} + +// newInputMetrics returns an input metric for the benchmark processor. +func newInputMetrics(id string) *inputMetrics { + reg, unreg := inputmon.NewInputRegistry(inputName, id, nil) + out := &inputMetrics{ + unregister: unreg, + eventsPublished: monitoring.NewUint(reg, "events_published_total"), + publishingTime: metrics.NewUniformSample(1024), + } + + _ = adapter.NewGoMetrics(reg, "publishing_time", adapter.Accept). + Register("histogram", metrics.NewHistogram(out.publishingTime)) + + return out +} + +func (m *inputMetrics) Close() { + m.unregister() +} diff --git a/x-pack/filebeat/input/default-inputs/inputs_other.go b/x-pack/filebeat/input/default-inputs/inputs_other.go index ab682e4e001..e53538fbcef 100644 --- a/x-pack/filebeat/input/default-inputs/inputs_other.go +++ b/x-pack/filebeat/input/default-inputs/inputs_other.go @@ -13,6 +13,7 @@ import ( "github.com/elastic/beats/v7/x-pack/filebeat/input/awscloudwatch" "github.com/elastic/beats/v7/x-pack/filebeat/input/awss3" "github.com/elastic/beats/v7/x-pack/filebeat/input/azureblobstorage" + "github.com/elastic/beats/v7/x-pack/filebeat/input/benchmark" "github.com/elastic/beats/v7/x-pack/filebeat/input/cel" "github.com/elastic/beats/v7/x-pack/filebeat/input/cloudfoundry" "github.com/elastic/beats/v7/x-pack/filebeat/input/entityanalytics" @@ -45,5 +46,6 @@ func xpackInputs(info beat.Info, log *logp.Logger, store beater.StateStore) []v2 shipper.Plugin(log, store), websocket.Plugin(log, store), netflow.Plugin(log), + benchmark.Plugin(), } } From ed78778fa52e145830d1dad8fffd5632147290a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Apr 2024 10:34:08 -0400 Subject: [PATCH 137/313] build(deps): bump go.elastic.co/apm/v2 from 2.5.0 to 2.6.0 (#38876) * build(deps): bump go.elastic.co/apm/v2 from 2.5.0 to 2.6.0 Bumps [go.elastic.co/apm/v2](https://github.com/elastic/apm-agent-go) from 2.5.0 to 2.6.0. - [Release notes](https://github.com/elastic/apm-agent-go/releases) - [Changelog](https://github.com/elastic/apm-agent-go/blob/main/CHANGELOG.asciidoc) - [Commits](https://github.com/elastic/apm-agent-go/compare/v2.5.0...v2.6.0) --- updated-dependencies: - dependency-name: go.elastic.co/apm/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index e7271092f87..51e374a9f86 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -24111,11 +24111,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/v2 -Version: v2.5.0 +Version: v2.6.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/v2@v2.5.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/v2@v2.6.0/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index 223ac2aa968..4bdd52f1cd7 100644 --- a/go.mod +++ b/go.mod @@ -229,7 +229,7 @@ require ( github.com/tklauser/go-sysconf v0.3.10 go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8 go.elastic.co/apm/module/apmhttp/v2 v2.5.0 - go.elastic.co/apm/v2 v2.5.0 + go.elastic.co/apm/v2 v2.6.0 go.mongodb.org/mongo-driver v1.5.1 golang.org/x/exp v0.0.0-20231127185646-65229373498e golang.org/x/tools/go/vcs v0.1.0-deprecated diff --git a/go.sum b/go.sum index 0da5aa83458..83453f9727f 100644 --- a/go.sum +++ b/go.sum @@ -1954,8 +1954,8 @@ go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8 h1:4j3wI1e+WV6u+9ZR7lorkJI2r go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8/go.mod h1:C9ajbSjZ3akTrFOjBr+pMq8bPVOH9vhIG+knZAuPW3s= go.elastic.co/apm/module/apmhttp/v2 v2.5.0 h1:4AWlw8giL7hRYBQiwF1/Thm0GDsbQH/Ofe4eySAnURo= go.elastic.co/apm/module/apmhttp/v2 v2.5.0/go.mod h1:ZP7gLEzY/OAPTqNZjp8AzA06HF82zfwXEpKI2sSVTgk= -go.elastic.co/apm/v2 v2.5.0 h1:UYqdu/bjcubcP9BIy5+os2ExRzw03yOQFG+sRGGhVlQ= -go.elastic.co/apm/v2 v2.5.0/go.mod h1:+CiBUdrrAGnGCL9TNx7tQz3BrfYV23L8Ljvotoc87so= +go.elastic.co/apm/v2 v2.6.0 h1:VieBMLQFtXua2YxpYxaSdYGnmmxhLT46gosI5yErJgY= +go.elastic.co/apm/v2 v2.6.0/go.mod h1:33rOXgtHwbgZcDgi6I/GtCSMZQqgxkHC0IQT3gudKvo= go.elastic.co/ecszap v1.0.2 h1:iW5OGx8IiokiUzx/shD4AJCPFMC9uUtr7ycaiEIU++I= go.elastic.co/ecszap v1.0.2/go.mod h1:dJkSlK3BTiwG/qXhCwe50Mz/jwu854vSip8sIeQhNZg= go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= From e5f14b3fb0403e6d0233873b7f772631f6507c4f Mon Sep 17 00:00:00 2001 From: Geoff Rowland <70981735+rowlandgeoff@users.noreply.github.com> Date: Fri, 12 Apr 2024 10:34:21 -0400 Subject: [PATCH 138/313] Update CODEOWNERS - catalog-info (#38893) Correct a typo in the catalog-info codeowners config --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 95839ce006e..2cc538d33aa 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -229,6 +229,6 @@ CHANGELOG* # Ownership of CI or related files by the Ingest Eng Prod team /.buildkite @elastic/ingest-eng-prod -/catalog-info.yml @elastic/ingest-eng-prod +/catalog-info.yaml @elastic/ingest-eng-prod /libbeat/scripts @elastic/ingest-eng-prod /metricbeat/tests @elastic/ingest-eng-prod From a32566b2de07752eb075b890a84a39798572cd9f Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 12 Apr 2024 17:35:18 +0300 Subject: [PATCH 139/313] Revert branch_configuration for beats pipeline (#38894) Signed-off-by: Alexandros Sapranidis --- catalog-info.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index fb6f04b236b..92af68f805f 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -39,7 +39,7 @@ spec: name: beats description: "Beats Main pipeline" spec: - branch_configuration: "main 7.17 8.* mergify*" + branch_configuration: "main 7.17 8.*" pipeline_file: ".buildkite/pipeline.yml" provider_settings: build_pull_request_forks: false From c42795d38a9cdce0c8bd4822f2944ed6a3203e45 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 12 Apr 2024 17:35:38 +0300 Subject: [PATCH 140/313] macOS arm64 CI for metricbeat (#38889) This commit adds support for running metricbeat CI for the arm64 CPU architecture on macOS agents. Currently we skip the run due to #33035 --- .buildkite/metricbeat/pipeline.yml | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index 9412502250c..1fb6bfcc237 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -8,6 +8,7 @@ env: GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" @@ -214,8 +215,8 @@ steps: key: "metricbeat-extended-macos-tests" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" + - label: ":mac: MacOS x64_64 Unit Tests" + key: "extended-macos-x64-64-unit-tests" command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -228,7 +229,25 @@ steps: - "metricbeat/build/*.json" notify: - github_commit_status: - context: "metricbeat: Extended MacOS Unit Tests" + context: "metricbeat: Extended MacOS x86_64 Unit Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + key: "extended-macos-arm64-unit-tests" + skip: "due to https://github.com/elastic/beats/issues/33035" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd metricbeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "metricbeat: Extended MacOS arm64 Unit Tests" + - wait: ~ # with PRs, we want to run packaging only if mandatory tests succeed From 84d0eec2bdc581d747fa26723abbb9f205e22ddd Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 12 Apr 2024 17:58:36 +0300 Subject: [PATCH 141/313] Allow mergify bot to trigger builds (#38895) Signed-off-by: Alexandros Sapranidis --- .buildkite/pull-requests.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index d3e77326c35..2d63d9b7fcb 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -5,7 +5,7 @@ "pipelineSlug": "beats", "allow_org_users": true, "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], + "allowed_list": [ "mergify[bot]" ], "set_commit_status": true, "build_on_commit": true, "build_on_comment": true, From e993e09c5e6b1a3d61c824f16e2fe43d57b2b99d Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Fri, 12 Apr 2024 17:05:04 +0200 Subject: [PATCH 142/313] Fix panic when more than 32767 pipeline clients are active (#38556) The publishing pipeline would panic when more than 32767 clients were active, that happened because each client would add two channels to a slice and an infinity loop would use reflect.Select on this list. reflect.Select supports a maximum of 65536 cases, if there are more it panics. This PR fixes this by removing the need for this list. The pipeline used an infinity loop to detect if the CloseRef from the pipeline client was closed, if it happened, then it would call client.Close. By analysing the code setting CloseRef we identified there was no need for the pipeline to be responsible for propagating this signal, most of the times the pipeline client was created, there was already a defer to close it, in the few places where it was not present we added one. Now the pipeline is not responsible for closing any client, whomever creates a client is responsible for correctly closing it. --- CHANGELOG-developer.next.asciidoc | 2 + CHANGELOG.next.asciidoc | 1 + .../internal/input-logfile/harvester.go | 1 - filebeat/input/kafka/input.go | 2 +- filebeat/input/v2/input-cursor/input.go | 1 - .../input/v2/input-stateless/stateless.go | 3 - .../v2/input-stateless/stateless_test.go | 9 +- libbeat/beat/pipeline.go | 9 -- libbeat/publisher/pipeline/client.go | 8 +- libbeat/publisher/pipeline/client_test.go | 15 +-- libbeat/publisher/pipeline/pipeline.go | 92 +------------------ libbeat/publisher/pipeline/pipeline_test.go | 92 +++++++++++++++++++ libbeat/publisher/testing/testing.go | 7 +- x-pack/filebeat/input/awscloudwatch/input.go | 1 - x-pack/filebeat/input/awss3/input.go | 1 - .../entityanalytics/internal/kvstore/input.go | 5 +- x-pack/filebeat/input/lumberjack/input.go | 1 - x-pack/filebeat/input/netflow/input.go | 2 +- x-pack/filebeat/input/shipper/input.go | 3 +- 19 files changed, 121 insertions(+), 134 deletions(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 8b0b0ab724f..8875b834e66 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -66,6 +66,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. - Rename `queue.Batch.ACK()` to `queue.Batch.Done()`. {pull}31903[31903] - `queue.ACKListener` has been removed. Queue configurations now accept an explicit callback function for ACK handling. {pull}35078[35078] - Split split httpmon out of x-pack/filebeat/input/internal/httplog. {pull}36385[36385] +- Beats publishing pipeline does not propagate the close signal to its clients any more. It's responsibility of the user to close the pipeline client. {issue}38197[38197] {pull}38556[38556] ==== Bugfixes @@ -93,6 +94,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. - Make winlogbeat/sys/wineventlog follow the unsafe.Pointer rules. {pull}36650[36650] - Cleaned up documentation errors & fixed a minor bug in Filebeat Azure blob storage input. {pull}36714[36714] - Fix copy arguments for strict aligned architectures. {pull}36976[36976] +- Fix panic when more than 32767 pipeline clients are active. {issue}38197[38197] {pull}38556[38556] ==== Added diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 0c9b3d89cb2..1b61e70423c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -101,6 +101,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] - Fix indexing failures by re-enabling event normalisation in netflow input. {issue}38703[38703] {pull}38780[38780] - Fix handling of truncated files in Filestream {issue}38070[38070] {pull}38416[38416] +- Fix panic when more than 32767 pipeline clients are active. {issue}38197[38197] {pull}38556[38556] *Heartbeat* diff --git a/filebeat/input/filestream/internal/input-logfile/harvester.go b/filebeat/input/filestream/internal/input-logfile/harvester.go index b3f54e65594..41cfc83857f 100644 --- a/filebeat/input/filestream/internal/input-logfile/harvester.go +++ b/filebeat/input/filestream/internal/input-logfile/harvester.go @@ -219,7 +219,6 @@ func startHarvester( defer releaseResource(resource) client, err := hg.pipeline.ConnectWith(beat.ClientConfig{ - CloseRef: ctx.Cancelation, EventListener: newInputACKHandler(hg.ackCH), }) if err != nil { diff --git a/filebeat/input/kafka/input.go b/filebeat/input/kafka/input.go index 83114f2c630..e2a04b5fa49 100644 --- a/filebeat/input/kafka/input.go +++ b/filebeat/input/kafka/input.go @@ -120,12 +120,12 @@ func (input *kafkaInput) Run(ctx input.Context, pipeline beat.Pipeline) error { } }), ), - CloseRef: ctx.Cancelation, WaitClose: input.config.WaitClose, }) if err != nil { return err } + defer client.Close() log.Info("Starting Kafka input") defer log.Info("Kafka input stopped") diff --git a/filebeat/input/v2/input-cursor/input.go b/filebeat/input/v2/input-cursor/input.go index 88e28dde2fb..37036e983c6 100644 --- a/filebeat/input/v2/input-cursor/input.go +++ b/filebeat/input/v2/input-cursor/input.go @@ -146,7 +146,6 @@ func (inp *managedInput) runSource( }() client, err := pipeline.ConnectWith(beat.ClientConfig{ - CloseRef: ctx.Cancelation, EventListener: newInputACKHandler(ctx.Logger), }) if err != nil { diff --git a/filebeat/input/v2/input-stateless/stateless.go b/filebeat/input/v2/input-stateless/stateless.go index c9d51143de3..4bc6c79c243 100644 --- a/filebeat/input/v2/input-stateless/stateless.go +++ b/filebeat/input/v2/input-stateless/stateless.go @@ -85,9 +85,6 @@ func (si configuredInput) Run(ctx v2.Context, pipeline beat.PipelineConnector) ( client, err := pipeline.ConnectWith(beat.ClientConfig{ PublishMode: beat.DefaultGuarantees, - - // configure pipeline to disconnect input on stop signal. - CloseRef: ctx.Cancelation, }) if err != nil { return err diff --git a/filebeat/input/v2/input-stateless/stateless_test.go b/filebeat/input/v2/input-stateless/stateless_test.go index 13627338c69..2febcb7e1b6 100644 --- a/filebeat/input/v2/input-stateless/stateless_test.go +++ b/filebeat/input/v2/input-stateless/stateless_test.go @@ -107,6 +107,9 @@ func TestStateless_Run(t *testing.T) { }, }), nil) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + // connector creates a client the blocks forever until the shutdown signal is received var publishCalls atomic.Int connector := pubtest.FakeConnector{ @@ -114,15 +117,13 @@ func TestStateless_Run(t *testing.T) { return &pubtest.FakeClient{ PublishFunc: func(event beat.Event) { publishCalls.Inc() - <-config.CloseRef.Done() + // Unlock Publish once the input has been cancelled + <-ctx.Done() }, }, nil }, } - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - var wg sync.WaitGroup var err error wg.Add(1) diff --git a/libbeat/beat/pipeline.go b/libbeat/beat/pipeline.go index 8e8b285042c..0917001a86c 100644 --- a/libbeat/beat/pipeline.go +++ b/libbeat/beat/pipeline.go @@ -49,8 +49,6 @@ type ClientConfig struct { Processing ProcessingConfig - CloseRef CloseRef - // WaitClose sets the maximum duration to wait on ACK, if client still has events // active non-acknowledged events in the publisher pipeline. // WaitClose is only effective if one of ACKCount, ACKEvents and ACKLastEvents @@ -91,13 +89,6 @@ type EventListener interface { ClientClosed() } -// CloseRef allows users to close the client asynchronously. -// A CloseRef implements a subset of function required for context.Context. -type CloseRef interface { - Done() <-chan struct{} - Err() error -} - // ProcessingConfig provides additional event processing settings a client can // pass to the publisher pipeline on Connect. type ProcessingConfig struct { diff --git a/libbeat/publisher/pipeline/client.go b/libbeat/publisher/pipeline/client.go index c566a07942f..a5c02faace6 100644 --- a/libbeat/publisher/pipeline/client.go +++ b/libbeat/publisher/pipeline/client.go @@ -42,10 +42,8 @@ type client struct { eventWaitGroup *sync.WaitGroup // Open state, signaling, and sync primitives for coordinating client Close. - isOpen atomic.Bool // set to false during shutdown, such that no new events will be accepted anymore. - closeOnce sync.Once // closeOnce ensure that the client shutdown sequence is only executed once - closeRef beat.CloseRef // extern closeRef for sending a signal that the client should be closed. - done chan struct{} // the done channel will be closed if the closeReg gets closed, or Close is run. + isOpen atomic.Bool // set to false during shutdown, such that no new events will be accepted anymore. + closeOnce sync.Once // closeOnce ensure that the client shutdown sequence is only executed once observer observer eventListener beat.EventListener @@ -137,8 +135,6 @@ func (c *client) Close() error { // first stop ack handling. ACK handler might block on wait (with timeout), waiting // for pending events to be ACKed. c.closeOnce.Do(func() { - close(c.done) - c.isOpen.Store(false) c.onClosing() diff --git a/libbeat/publisher/pipeline/client_test.go b/libbeat/publisher/pipeline/client_test.go index 4ed45d25628..25080c90615 100644 --- a/libbeat/publisher/pipeline/client_test.go +++ b/libbeat/publisher/pipeline/client_test.go @@ -18,7 +18,6 @@ package pipeline import ( - "context" "errors" "io" "sync" @@ -95,15 +94,7 @@ func TestClient(t *testing.T) { pipeline := makePipeline(t, Settings{}, makeTestQueue()) defer pipeline.Close() - var ctx context.Context - var cancel func() - if test.context { - ctx, cancel = context.WithCancel(context.Background()) - } - - client, err := pipeline.ConnectWith(beat.ClientConfig{ - CloseRef: ctx, - }) + client, err := pipeline.ConnectWith(beat.ClientConfig{}) if err != nil { t.Fatal(err) } @@ -116,7 +107,9 @@ func TestClient(t *testing.T) { client.Publish(beat.Event{}) }() - test.close(client, cancel) + test.close(client, func() { + client.Close() + }) wg.Wait() }) } diff --git a/libbeat/publisher/pipeline/pipeline.go b/libbeat/publisher/pipeline/pipeline.go index 37bf437395c..85eeb0e6497 100644 --- a/libbeat/publisher/pipeline/pipeline.go +++ b/libbeat/publisher/pipeline/pipeline.go @@ -22,7 +22,6 @@ package pipeline import ( "fmt" - "reflect" "sync" "time" @@ -197,9 +196,6 @@ func (p *Pipeline) Close() error { p.outputController.Close() p.observer.cleanup() - if p.sigNewClient != nil { - close(p.sigNewClient) - } return nil } @@ -212,6 +208,8 @@ func (p *Pipeline) Connect() (beat.Client, error) { // The client behavior on close and ACK handling can be configured by setting // the appropriate fields in the passed ClientConfig. // If not set otherwise the defaut publish mode is OutputChooses. +// +// It is responsibility of the caller to close the client. func (p *Pipeline) ConnectWith(cfg beat.ClientConfig) (beat.Client, error) { var ( canDrop bool @@ -239,8 +237,6 @@ func (p *Pipeline) ConnectWith(cfg beat.ClientConfig) (beat.Client, error) { client := &client{ logger: p.monitors.Logger, - closeRef: cfg.CloseRef, - done: make(chan struct{}), isOpen: atomic.MakeBool(true), clientListener: cfg.ClientListener, processors: processors, @@ -295,93 +291,9 @@ func (p *Pipeline) ConnectWith(cfg beat.ClientConfig) (beat.Client, error) { } p.observer.clientConnected() - - if client.closeRef != nil { - p.registerSignalPropagation(client) - } - return client, nil } -func (p *Pipeline) registerSignalPropagation(c *client) { - p.guardStartSigPropagation.Do(func() { - p.sigNewClient = make(chan *client, 1) - go p.runSignalPropagation() - }) - p.sigNewClient <- c -} - -func (p *Pipeline) runSignalPropagation() { - var channels []reflect.SelectCase - var clients []*client - - channels = append(channels, reflect.SelectCase{ - Dir: reflect.SelectRecv, - Chan: reflect.ValueOf(p.sigNewClient), - }) - - for { - chosen, recv, recvOK := reflect.Select(channels) - if chosen == 0 { - if !recvOK { - // sigNewClient was closed - return - } - - // new client -> register client for signal propagation. - if client := recv.Interface().(*client); client != nil { - channels = append(channels, - reflect.SelectCase{ - Dir: reflect.SelectRecv, - Chan: reflect.ValueOf(client.closeRef.Done()), - }, - reflect.SelectCase{ - Dir: reflect.SelectRecv, - Chan: reflect.ValueOf(client.done), - }, - ) - clients = append(clients, client) - } - continue - } - - // find client we received a signal for. If client.done was closed, then - // we have to remove the client only. But if closeRef did trigger the signal, then - // we have to propagate the async close to the client. - // In either case, the client will be removed - - i := (chosen - 1) / 2 - isSig := (chosen & 1) == 1 - if isSig { - client := clients[i] - client.Close() - } - - // remove: - last := len(clients) - 1 - ch1 := i*2 + 1 - ch2 := ch1 + 1 - lastCh1 := last*2 + 1 - lastCh2 := lastCh1 + 1 - - clients[i], clients[last] = clients[last], nil - channels[ch1], channels[lastCh1] = channels[lastCh1], reflect.SelectCase{} - channels[ch2], channels[lastCh2] = channels[lastCh2], reflect.SelectCase{} - - clients = clients[:last] - channels = channels[:lastCh1] - if cap(clients) > 10 && len(clients) <= cap(clients)/2 { - clientsTmp := make([]*client, len(clients)) - copy(clientsTmp, clients) - clients = clientsTmp - - channelsTmp := make([]reflect.SelectCase, len(channels)) - copy(channelsTmp, channels) - channels = channelsTmp - } - } -} - func (p *Pipeline) createEventProcessing(cfg beat.ProcessingConfig, noPublish bool) (beat.Processor, error) { if p.processors == nil { return nil, nil diff --git a/libbeat/publisher/pipeline/pipeline_test.go b/libbeat/publisher/pipeline/pipeline_test.go index 5a236acc9c0..feb01c4fa6e 100644 --- a/libbeat/publisher/pipeline/pipeline_test.go +++ b/libbeat/publisher/pipeline/pipeline_test.go @@ -18,12 +18,104 @@ package pipeline import ( + "runtime" "sync" + "testing" + "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/common/atomic" "github.com/elastic/beats/v7/libbeat/publisher/queue" + "github.com/elastic/beats/v7/libbeat/tests/resources" + "github.com/elastic/elastic-agent-libs/mapstr" ) +func TestPipelineAcceptsAnyNumberOfClients(t *testing.T) { + routinesChecker := resources.NewGoroutinesChecker() + defer routinesChecker.Check(t) + + pipeline := makePipeline(t, Settings{}, makeDiscardQueue()) + + defer pipeline.Close() + + n := 66000 + clients := []beat.Client{} + for i := 0; i < n; i++ { + c, err := pipeline.ConnectWith(beat.ClientConfig{}) + if err != nil { + t.Fatalf("Could not connect to pipeline: %s", err) + } + clients = append(clients, c) + } + + for i, c := range clients { + c.Publish(beat.Event{ + Fields: mapstr.M{ + "count": i, + }, + }) + } + + // Close the first 105 clients + nn := 105 + clientsToClose := clients[:n] + clients = clients[nn:] + + for _, c := range clientsToClose { + c.Close() + } + + // Let other goroutines run + runtime.Gosched() + runtime.Gosched() + + // Make sure all clients are closed + for _, c := range clients { + c.Close() + } +} + +// makeDiscardQueue returns a queue that always discards all events +// the producers are assigned an unique incremental ID, when their +// close method is called, this ID is returned +func makeDiscardQueue() queue.Queue { + var wg sync.WaitGroup + producerID := atomic.NewInt(0) + + return &testQueue{ + close: func() error { + // Wait for all producers to finish + wg.Wait() + return nil + }, + get: func(count int) (queue.Batch, error) { + return nil, nil + }, + + producer: func(cfg queue.ProducerConfig) queue.Producer { + producerID.Inc() + id := producerID.Load() + + // count is a counter that increments on every published event + // it's also the returned Event ID + count := uint64(0) + producer := &testProducer{ + publish: func(try bool, event queue.Entry) (queue.EntryID, bool) { + count++ + return queue.EntryID(count), true + }, + cancel: func() int { + + wg.Done() + return id + }, + } + + wg.Add(1) + return producer + }, + } +} + type testQueue struct { close func() error bufferConfig func() queue.BufferConfig diff --git a/libbeat/publisher/testing/testing.go b/libbeat/publisher/testing/testing.go index 0c64e4601d5..09c1fdb6b11 100644 --- a/libbeat/publisher/testing/testing.go +++ b/libbeat/publisher/testing/testing.go @@ -19,6 +19,8 @@ package testing // ChanClient implements Client interface, forwarding published events to some import ( + "sync" + "github.com/elastic/beats/v7/libbeat/beat" ) @@ -31,6 +33,7 @@ type ChanClient struct { done chan struct{} Channel chan beat.Event publishCallback func(event beat.Event) + closeOnce sync.Once } func PublisherWithClient(client beat.Client) beat.Pipeline { @@ -68,7 +71,9 @@ func NewChanClientWith(ch chan beat.Event) *ChanClient { } func (c *ChanClient) Close() error { - close(c.done) + c.closeOnce.Do(func() { + close(c.done) + }) return nil } diff --git a/x-pack/filebeat/input/awscloudwatch/input.go b/x-pack/filebeat/input/awscloudwatch/input.go index f9d69fe1184..4ee9daa05ad 100644 --- a/x-pack/filebeat/input/awscloudwatch/input.go +++ b/x-pack/filebeat/input/awscloudwatch/input.go @@ -112,7 +112,6 @@ func (in *cloudwatchInput) Run(inputContext v2.Context, pipeline beat.Pipeline) // Create client for publishing events and receive notification of their ACKs. client, err := pipeline.ConnectWith(beat.ClientConfig{ - CloseRef: inputContext.Cancelation, EventListener: awscommon.NewEventACKHandler(), }) if err != nil { diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index 5fc1c1f0491..855403e5dc4 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -156,7 +156,6 @@ func (in *s3Input) Run(inputContext v2.Context, pipeline beat.Pipeline) error { if in.config.BucketARN != "" || in.config.NonAWSBucketName != "" { // Create client for publishing events and receive notification of their ACKs. client, err := pipeline.ConnectWith(beat.ClientConfig{ - CloseRef: inputContext.Cancelation, EventListener: awscommon.NewEventACKHandler(), Processing: beat.ProcessingConfig{ // This input only produces events with basic types so normalization diff --git a/x-pack/filebeat/input/entityanalytics/internal/kvstore/input.go b/x-pack/filebeat/input/entityanalytics/internal/kvstore/input.go index b786acf29c7..8b9828980db 100644 --- a/x-pack/filebeat/input/entityanalytics/internal/kvstore/input.go +++ b/x-pack/filebeat/input/entityanalytics/internal/kvstore/input.go @@ -65,9 +65,12 @@ func (n *input) Run(runCtx v2.Context, connector beat.PipelineConnector) (err er }() client, err := connector.ConnectWith(beat.ClientConfig{ - CloseRef: runCtx.Cancelation, EventListener: NewTxACKHandler(), }) + if err != nil { + return fmt.Errorf("could not connect to publishing pipeline: %w", err) + } + defer client.Close() dataDir := paths.Resolve(paths.Data, "kvstore") if err = os.MkdirAll(dataDir, 0700); err != nil { diff --git a/x-pack/filebeat/input/lumberjack/input.go b/x-pack/filebeat/input/lumberjack/input.go index caa966a3814..d42ee406562 100644 --- a/x-pack/filebeat/input/lumberjack/input.go +++ b/x-pack/filebeat/input/lumberjack/input.go @@ -62,7 +62,6 @@ func (i *lumberjackInput) Run(inputCtx inputv2.Context, pipeline beat.Pipeline) // Create client for publishing events and receive notification of their ACKs. client, err := pipeline.ConnectWith(beat.ClientConfig{ - CloseRef: inputCtx.Cancelation, EventListener: newEventACKHandler(), }) if err != nil { diff --git a/x-pack/filebeat/input/netflow/input.go b/x-pack/filebeat/input/netflow/input.go index 52c6f8a7684..6d479bb243f 100644 --- a/x-pack/filebeat/input/netflow/input.go +++ b/x-pack/filebeat/input/netflow/input.go @@ -118,7 +118,6 @@ func (n *netflowInput) Run(ctx v2.Context, connector beat.PipelineConnector) err Processing: beat.ProcessingConfig{ EventNormalization: boolPtr(true), }, - CloseRef: ctx.Cancelation, EventListener: nil, }) if err != nil { @@ -126,6 +125,7 @@ func (n *netflowInput) Run(ctx v2.Context, connector beat.PipelineConnector) err n.stop() return err } + defer client.Close() const pollInterval = time.Minute udpMetrics := netmetrics.NewUDP("netflow", ctx.ID, n.cfg.Host, uint64(n.cfg.ReadBuffer), pollInterval, n.logger) diff --git a/x-pack/filebeat/input/shipper/input.go b/x-pack/filebeat/input/shipper/input.go index 5cece851d9c..f2472ccf7f2 100644 --- a/x-pack/filebeat/input/shipper/input.go +++ b/x-pack/filebeat/input/shipper/input.go @@ -173,12 +173,11 @@ func (in *shipperInput) Run(inputContext v2.Context, pipeline beat.Pipeline) err DisableHost: true, DisableType: true, }, - - CloseRef: inputContext.Cancelation, }) if err != nil { return fmt.Errorf("error creating client for stream %s: %w", streamID, err) } + defer client.Close() in.log.Infof("Creating beat client for stream %s", streamID) newStreamData := streamData{client: client, index: in.streams[streamID].index, processors: in.streams[streamID].processors} From 8f86989290529604fb3a7820449ab867dd12b373 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 12 Apr 2024 20:05:58 +0300 Subject: [PATCH 143/313] Add support for installing Node.js on macOS (#38903) This commit adds two new functions in `install_macos_tools.sh` that install nodejs and common nodejs dependencies. --- .buildkite/scripts/install_macos_tools.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.buildkite/scripts/install_macos_tools.sh b/.buildkite/scripts/install_macos_tools.sh index c9d27cbc9db..124025b4a5a 100755 --- a/.buildkite/scripts/install_macos_tools.sh +++ b/.buildkite/scripts/install_macos_tools.sh @@ -106,6 +106,28 @@ config_git() { fi } +withNodeJSEnv() { + local version=$1 + echo "~~~ Installing nvm and Node.js" + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash + export NVM_DIR="$HOME/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" + echo "Installing Node.js version: $version" + nvm install "$version" + # export PATH="${nvmPath}:${PATH}" + nvm use "$version" + node --version + echo "~~~ Resuming commands" +} + +installNodeJsDependencies() { + echo "~~~ Installing Node.js packages" + # needed for beats-xpack-heartbeat + echo "Install @elastic/synthetics" + npm i -g @elastic/synthetics + echo "~~~ Resuming commands" +} + add_bin_path with_go "${GO_VERSION}" with_mage From 930410642ebaf67a18c2a4e77256ac128b45bb21 Mon Sep 17 00:00:00 2001 From: Blake Rouse Date: Fri, 12 Apr 2024 14:39:06 -0400 Subject: [PATCH 144/313] Add new agentbeat with all beats shipped with Elastic Agent as a single beat (#38183) * Add new agentbeat. * Fix auditbeat test. * Fix imports. * Fix moduleName in audit/system/package. * Fix imports on osquerybeat. * Add agentbeat.spec.yml. * Adjust metrics registration to not collide. * Fix issue with management.ConfigTransform.SetTransform. * Fix lint in metricbeat. * Work on enabling system tests. * Add go integration tests for agentbeat. * Fix imports. * Fix kubernetes provider to work with agentbeat. * Adjustments for auditbeat. * Adjust auditbeat. * Adjust initialization. * More cleanup. * More adjustments. * Fix auditbeat show command. * Fix include list. * Fix auditbeat login test. * More auditbeat test fixes. --- Makefile | 4 +- auditbeat/ab/registry.go | 24 + auditbeat/cmd/root.go | 11 +- .../{module/auditd => cmd}/show_linux.go | 10 +- auditbeat/cmd/show_other.go | 24 + auditbeat/include/list.go | 2 +- auditbeat/main.go | 3 - auditbeat/module/auditd/audit_linux.go | 3 +- auditbeat/module/auditd/audit_linux_test.go | 11 +- auditbeat/module/auditd/audit_unsupported.go | 3 +- auditbeat/module/auditd/golden_files_test.go | 3 +- auditbeat/module/file_integrity/metricset.go | 3 +- .../module/file_integrity/metricset_test.go | 15 +- .../module_include_list.go | 58 +- dev-tools/mage/fields.go | 5 + dev-tools/mage/gotest.go | 2 + filebeat/autodiscover/builder/hints/logs.go | 15 +- .../autodiscover/builder/hints/logs_test.go | 4 + filebeat/autodiscover/defaults.go | 3 +- filebeat/autodiscover/defaults_aix.go | 25 + filebeat/cmd/root.go | 11 +- filebeat/fileset/factory.go | 9 +- filebeat/include/list.go | 15 +- filebeat/input/input.go | 8 +- filebeat/magefile.go | 8 +- .../add_kubernetes_metadata/matchers.go | 3 +- .../add_kubernetes_metadata/matchers_test.go | 4 + .../autodiscover/builder/hints/monitors.go | 12 +- heartbeat/cmd/root.go | 8 +- heartbeat/include/list.go | 38 ++ heartbeat/magefile.go | 8 +- heartbeat/security/security.go | 3 +- heartbeat/security/security_all.go | 9 +- libbeat/cmd/instance/beat.go | 9 +- libbeat/cmd/instance/beat_test.go | 16 +- libbeat/cmd/instance/settings.go | 3 + libbeat/cmd/setup.go | 2 +- libbeat/cmd/test/config.go | 2 +- libbeat/cmd/version.go | 2 +- libbeat/tests/integration/framework.go | 88 ++- .../appender/kubernetes/token/token.go | 12 +- .../appender/kubernetes/token/token_test.go | 4 + .../autodiscover/builder/hints/metrics.go | 15 +- .../builder/hints/metrics_test.go | 4 + metricbeat/beater/metricbeat.go | 26 +- metricbeat/cmd/root.go | 10 +- metricbeat/include/list_common.go | 2 +- metricbeat/include/list_docker.go | 2 +- metricbeat/include/list_init.go | 36 ++ metricbeat/mb/module/configuration.go | 6 +- metricbeat/mb/module/factory.go | 10 +- metricbeat/mb/module/runner.go | 13 +- metricbeat/mb/testing/modules.go | 38 +- .../add_kubernetes_metadata/indexers.go | 3 +- metricbeat/scripts/mage/fields.go | 21 +- packetbeat/cmd/root.go | 5 +- packetbeat/include/list.go | 10 +- packetbeat/magefile.go | 2 +- .../add_kubernetes_metadata/indexers.go | 3 +- packetbeat/scripts/mage/pcap.go | 14 +- x-pack/agentbeat/Makefile | 3 + x-pack/agentbeat/agentbeat.spec.yml | 567 ++++++++++++++++++ .../dev-tools/packaging/packages.yml | 135 +++++ x-pack/agentbeat/docker-compose.yml | 26 + x-pack/agentbeat/magefile.go | 194 ++++++ x-pack/agentbeat/main.go | 77 +++ x-pack/agentbeat/main_test.go | 35 ++ x-pack/auditbeat/cmd/root.go | 24 +- x-pack/auditbeat/include/list.go | 10 +- x-pack/auditbeat/magefile.go | 13 +- x-pack/auditbeat/main.go | 7 - x-pack/auditbeat/module/system/host/host.go | 11 +- .../auditbeat/module/system/host/host_test.go | 6 +- x-pack/auditbeat/module/system/login/login.go | 9 +- .../module/system/login/login_other.go | 7 +- .../module/system/login/login_test.go | 10 +- .../module/system/package/package.go | 6 +- .../system/package/package_homebrew_test.go | 5 +- .../module/system/package/package_test.go | 10 +- .../module/system/package/package_windows.go | 6 +- .../module/system/process/process.go | 8 +- .../module/system/process/process_test.go | 8 +- .../module/system/socket/socket_linux.go | 6 +- .../module/system/socket/socket_other.go | 7 +- .../module/system/socket/state_test.go | 3 +- x-pack/auditbeat/module/system/system.go | 8 +- x-pack/auditbeat/module/system/user/user.go | 10 +- .../auditbeat/module/system/user/user_test.go | 6 +- .../module/system/user/users_other.go | 7 +- .../sessionmd/add_session_metadata.go | 3 +- .../sessionmd/add_session_metadata_other.go | 12 + x-pack/filebeat/cmd/root.go | 14 +- x-pack/filebeat/include/list.go | 17 +- .../processors/add_nomad_metadata/matchers.go | 3 +- .../aws_vpcflow/parse_aws_vpc_flow_log.go | 3 +- .../processors/decode_cef/decode_cef.go | 3 +- .../integration/creator_agentbeat_test.go | 17 + .../tests/integration/creator_base_test.go | 17 + .../tests/integration/managerV2_test.go | 24 +- .../tests/integration/shipper_test.go | 12 +- x-pack/heartbeat/cmd/root.go | 7 +- x-pack/heartbeat/include/list.go | 12 + x-pack/heartbeat/magefile.go | 8 +- x-pack/heartbeat/main.go | 1 - x-pack/metricbeat/cmd/root.go | 5 +- x-pack/metricbeat/include/list.go | 2 +- x-pack/osquerybeat/beater/osquerybeat.go | 9 +- x-pack/osquerybeat/cmd/root.go | 21 +- x-pack/osquerybeat/magefile.go | 30 +- x-pack/osquerybeat/main.go | 11 - x-pack/packetbeat/cmd/root.go | 10 +- .../tests/system/app_run_agentbeat_test.go | 48 ++ .../packetbeat/tests/system/app_run_test.go | 48 ++ x-pack/packetbeat/tests/system/app_test.go | 32 - 114 files changed, 1968 insertions(+), 347 deletions(-) create mode 100644 auditbeat/ab/registry.go rename auditbeat/{module/auditd => cmd}/show_linux.go (97%) create mode 100644 auditbeat/cmd/show_other.go create mode 100644 filebeat/autodiscover/defaults_aix.go create mode 100644 heartbeat/include/list.go create mode 100644 metricbeat/include/list_init.go create mode 100644 x-pack/agentbeat/Makefile create mode 100644 x-pack/agentbeat/agentbeat.spec.yml create mode 100644 x-pack/agentbeat/dev-tools/packaging/packages.yml create mode 100644 x-pack/agentbeat/docker-compose.yml create mode 100644 x-pack/agentbeat/magefile.go create mode 100644 x-pack/agentbeat/main.go create mode 100644 x-pack/agentbeat/main_test.go create mode 100644 x-pack/auditbeat/processors/sessionmd/add_session_metadata_other.go create mode 100644 x-pack/filebeat/tests/integration/creator_agentbeat_test.go create mode 100644 x-pack/filebeat/tests/integration/creator_base_test.go create mode 100644 x-pack/heartbeat/include/list.go create mode 100644 x-pack/packetbeat/tests/system/app_run_agentbeat_test.go create mode 100644 x-pack/packetbeat/tests/system/app_run_test.go diff --git a/Makefile b/Makefile index 01be808fc80..b9be661dc25 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ BUILD_DIR=$(CURDIR)/build COVERAGE_DIR=$(BUILD_DIR)/coverage -BEATS?=auditbeat filebeat heartbeat metricbeat packetbeat winlogbeat x-pack/functionbeat x-pack/osquerybeat -PROJECTS=libbeat $(BEATS) +BEATS?=auditbeat filebeat heartbeat metricbeat packetbeat winlogbeat x-pack/agentbeat x-pack/auditbeat x-pack/dockerlogbeat x-pack/filebeat x-pack/functionbeat x-pack/heartbeat x-pack/metricbeat x-pack/osquerybeat x-pack/packetbeat x-pack/winlogbeat +PROJECTS=libbeat x-pack/libbeat $(BEATS) PROJECTS_ENV=libbeat filebeat metricbeat PYTHON_ENV?=$(BUILD_DIR)/python-env PYTHON_EXE?=python3 diff --git a/auditbeat/ab/registry.go b/auditbeat/ab/registry.go new file mode 100644 index 00000000000..be0e1256781 --- /dev/null +++ b/auditbeat/ab/registry.go @@ -0,0 +1,24 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package ab + +import "github.com/elastic/beats/v7/metricbeat/mb" + +// Registry is the singleton Register instance where all ModuleFactory's and +// MetricSetFactory's should be registered. +var Registry = mb.NewRegister() diff --git a/auditbeat/cmd/root.go b/auditbeat/cmd/root.go index 0ddc7b8674d..7b86111d56d 100644 --- a/auditbeat/cmd/root.go +++ b/auditbeat/cmd/root.go @@ -21,6 +21,9 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" + "github.com/elastic/elastic-agent-libs/mapstr" + + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/cmd/instance" @@ -29,7 +32,9 @@ import ( "github.com/elastic/beats/v7/libbeat/publisher/processing" "github.com/elastic/beats/v7/metricbeat/beater" "github.com/elastic/beats/v7/metricbeat/mb/module" - "github.com/elastic/elastic-agent-libs/mapstr" + + // Register required includes + _ "github.com/elastic/beats/v7/auditbeat/include" ) const ( @@ -66,7 +71,8 @@ func AuditbeatSettings(globals processors.PluginConfig) instance.Settings { // Initialize initializes the entrypoint commands for auditbeat func Initialize(settings instance.Settings) *cmd.BeatsRootCmd { - create := beater.Creator( + create := beater.CreatorWithRegistry( + ab.Registry, beater.WithModuleOptions( module.WithEventModifier(core.AddDatasetToEvent), ), @@ -78,4 +84,5 @@ func Initialize(settings instance.Settings) *cmd.BeatsRootCmd { func init() { RootCmd = Initialize(AuditbeatSettings(nil)) + initShowRules() } diff --git a/auditbeat/module/auditd/show_linux.go b/auditbeat/cmd/show_linux.go similarity index 97% rename from auditbeat/module/auditd/show_linux.go rename to auditbeat/cmd/show_linux.go index 9d40e514223..dc2168aee53 100644 --- a/auditbeat/module/auditd/show_linux.go +++ b/auditbeat/cmd/show_linux.go @@ -15,7 +15,9 @@ // specific language governing permissions and limitations // under the License. -package auditd +//go:build linux + +package cmd import ( "fmt" @@ -26,8 +28,6 @@ import ( "github.com/elastic/go-libaudit/v2" "github.com/elastic/go-libaudit/v2/rule" - - "github.com/elastic/beats/v7/auditbeat/cmd" ) var ( @@ -36,7 +36,7 @@ var ( singleLineStatus bool ) -func init() { +func initShowRules() { showRules := cobra.Command{ Use: "auditd-rules", Short: "Show currently installed auditd rules", @@ -63,7 +63,7 @@ func init() { }, } showStatus.Flags().BoolVarP(&singleLineStatus, "single-line", "s", false, "Output status as a single line") - cmd.ShowCmd.AddCommand(&showRules, &showStatus) + ShowCmd.AddCommand(&showRules, &showStatus) } func showAuditdRules(stdout, stderr io.Writer) error { diff --git a/auditbeat/cmd/show_other.go b/auditbeat/cmd/show_other.go new file mode 100644 index 00000000000..7e9b4c0f49f --- /dev/null +++ b/auditbeat/cmd/show_other.go @@ -0,0 +1,24 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build !linux + +package cmd + +func initShowRules() { + // do nothing +} diff --git a/auditbeat/include/list.go b/auditbeat/include/list.go index 737124691b1..c83f39b8bbe 100644 --- a/auditbeat/include/list.go +++ b/auditbeat/include/list.go @@ -20,7 +20,7 @@ package include import ( - // Import packages that need to register themselves. + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/auditbeat/module/auditd" _ "github.com/elastic/beats/v7/auditbeat/module/file_integrity" ) diff --git a/auditbeat/main.go b/auditbeat/main.go index 85353ea693e..48b9086acd2 100644 --- a/auditbeat/main.go +++ b/auditbeat/main.go @@ -21,9 +21,6 @@ import ( "os" "github.com/elastic/beats/v7/auditbeat/cmd" - - // Register includes. - _ "github.com/elastic/beats/v7/auditbeat/include" ) func main() { diff --git a/auditbeat/module/auditd/audit_linux.go b/auditbeat/module/auditd/audit_linux.go index 9a00b03c482..f627c0cbefd 100644 --- a/auditbeat/module/auditd/audit_linux.go +++ b/auditbeat/module/auditd/audit_linux.go @@ -28,6 +28,7 @@ import ( "syscall" "time" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/libbeat/common" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/metricbeat/mb/parse" @@ -72,7 +73,7 @@ var ( ) func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(moduleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithHostParser(parse.EmptyHostParser), mb.WithNamespace(namespace), diff --git a/auditbeat/module/auditd/audit_linux_test.go b/auditbeat/module/auditd/audit_linux_test.go index 85644ad022e..9f9950d1050 100644 --- a/auditbeat/module/auditd/audit_linux_test.go +++ b/auditbeat/module/auditd/audit_linux_test.go @@ -32,6 +32,7 @@ import ( "github.com/prometheus/procfs" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" "github.com/elastic/beats/v7/libbeat/mapping" "github.com/elastic/beats/v7/metricbeat/mb" @@ -89,7 +90,7 @@ func TestImmutable(t *testing.T) { config := getConfig() config["immutable"] = true - ms := mbtest.NewPushMetricSetV2(t, config) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, config, ab.Registry) auditMetricSet := ms.(*MetricSet) auditMetricSet.client.Close() auditMetricSet.client = &libaudit.AuditClient{Netlink: mock} @@ -122,7 +123,7 @@ func TestData(t *testing.T) { returnMessage(acceptMsgs...) // Replace the default AuditClient with a mock. - ms := mbtest.NewPushMetricSetV2(t, getConfig()) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, getConfig(), ab.Registry) auditMetricSet := ms.(*MetricSet) auditMetricSet.client.Close() auditMetricSet.client = &libaudit.AuditClient{Netlink: mock} @@ -155,7 +156,7 @@ func TestLoginType(t *testing.T) { returnMessage(userAuthMsg) // Replace the default AuditClient with a mock. - ms := mbtest.NewPushMetricSetV2(t, getConfig()) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, getConfig(), ab.Registry) auditMetricSet := ms.(*MetricSet) auditMetricSet.client.Close() auditMetricSet.client = &libaudit.AuditClient{Netlink: mock} @@ -274,7 +275,7 @@ func TestUnicastClient(t *testing.T) { // PPID filter we applied to the rule. time.AfterFunc(time.Second, func() { _, _ = exec.Command("cat", "/proc/self/status").Output() }) - ms := mbtest.NewPushMetricSetV2(t, c) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, c, ab.Registry) events := mbtest.RunPushMetricSetV2(5*time.Second, 0, ms) assertNoErrors(t, events) assertHasBinCatExecve(t, events) @@ -304,7 +305,7 @@ func TestMulticastClient(t *testing.T) { // PPID filter we applied to the rule. time.AfterFunc(time.Second, func() { _, _ = exec.Command("cat", "/proc/self/status").Output() }) - ms := mbtest.NewPushMetricSetV2(t, c) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, c, ab.Registry) events := mbtest.RunPushMetricSetV2(5*time.Second, 0, ms) assertNoErrors(t, events) assertHasBinCatExecve(t, events) diff --git a/auditbeat/module/auditd/audit_unsupported.go b/auditbeat/module/auditd/audit_unsupported.go index 154e291aef9..b100077c202 100644 --- a/auditbeat/module/auditd/audit_unsupported.go +++ b/auditbeat/module/auditd/audit_unsupported.go @@ -22,12 +22,13 @@ package auditd import ( "fmt" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/metricbeat/mb/parse" ) func init() { - mb.Registry.MustAddMetricSet(metricsetName, metricsetName, New, + ab.Registry.MustAddMetricSet(metricsetName, metricsetName, New, mb.DefaultMetricSet(), mb.WithHostParser(parse.EmptyHostParser), ) diff --git a/auditbeat/module/auditd/golden_files_test.go b/auditbeat/module/auditd/golden_files_test.go index cb3c0c0cd7a..096d53d1b90 100644 --- a/auditbeat/module/auditd/golden_files_test.go +++ b/auditbeat/module/auditd/golden_files_test.go @@ -37,6 +37,7 @@ import ( "github.com/elastic/go-libaudit/v2" "github.com/elastic/go-libaudit/v2/aucoalesce" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/metricbeat/mb" mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" ) @@ -201,7 +202,7 @@ func TestGoldenFiles(t *testing.T) { // Send stream terminator returnMessage(terminator) - ms := mbtest.NewPushMetricSetV2(t, configForGolden()) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, configForGolden(), ab.Registry) auditMetricSet := ms.(*MetricSet) auditMetricSet.client.Close() auditMetricSet.client = &libaudit.AuditClient{Netlink: mock} diff --git a/auditbeat/module/file_integrity/metricset.go b/auditbeat/module/file_integrity/metricset.go index eeaaa67b365..db507415cb4 100644 --- a/auditbeat/module/file_integrity/metricset.go +++ b/auditbeat/module/file_integrity/metricset.go @@ -26,6 +26,7 @@ import ( bolt "go.etcd.io/bbolt" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/datastore" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/metricbeat/mb/parse" @@ -44,7 +45,7 @@ const ( var underTest bool //nolint:unused // Used in Darwin-only builds. func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(moduleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithHostParser(parse.EmptyHostParser), mb.WithNamespace(namespace), diff --git a/auditbeat/module/file_integrity/metricset_test.go b/auditbeat/module/file_integrity/metricset_test.go index a7f0b922e15..b730d032b3b 100644 --- a/auditbeat/module/file_integrity/metricset_test.go +++ b/auditbeat/module/file_integrity/metricset_test.go @@ -30,6 +30,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" "github.com/elastic/beats/v7/auditbeat/datastore" abtest "github.com/elastic/beats/v7/auditbeat/testing" @@ -48,7 +49,7 @@ func TestData(t *testing.T) { require.NoError(t, os.WriteFile(file, []byte("hello world"), 0o600)) }() - ms := mbtest.NewPushMetricSetV2(t, getConfig(dir)) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, getConfig(dir), ab.Registry) events := mbtest.RunPushMetricSetV2(10*time.Second, 2, ms) for _, e := range events { if e.Error != nil { @@ -122,7 +123,7 @@ func TestActions(t *testing.T) { require.NoError(t, os.WriteFile(createdFilepath, []byte("hello world"), 0o600)) require.NoError(t, os.WriteFile(updatedFilepath, []byte("hello world"), 0o600)) - ms := mbtest.NewPushMetricSetV2(t, getConfig(dir, newDir)) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, getConfig(dir, newDir), ab.Registry) events := mbtest.RunPushMetricSetV2(10*time.Second, 5, ms) assert.Len(t, events, 5) @@ -175,7 +176,7 @@ func TestExcludedFiles(t *testing.T) { dir := t.TempDir() - ms := mbtest.NewPushMetricSetV2(t, getConfig(dir)) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, getConfig(dir), ab.Registry) go func() { for _, f := range []string{"FILE.TXT", "FILE.TXT.SWP", "file.txt.swo", ".git/HEAD", ".gitignore"} { @@ -235,7 +236,7 @@ func TestIncludedExcludedFiles(t *testing.T) { config := getConfig(dir) config["include_files"] = []string{`\.ssh`} config["recursive"] = true - ms := mbtest.NewPushMetricSetV2(t, config) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, config, ab.Registry) for _, f := range []string{"FILE.TXT", ".ssh/known_hosts", ".ssh/known_hosts.swp"} { file := filepath.Join(dir, f) @@ -297,7 +298,7 @@ func TestErrorReporting(t *testing.T) { config := getConfig(dir) config["scan_at_start"] = false - ms := mbtest.NewPushMetricSetV2(t, config) + ms := mbtest.NewPushMetricSetV2WithRegistry(t, config, ab.Registry) done := make(chan struct{}, 1) ready := make(chan struct{}, 1) @@ -472,7 +473,7 @@ func (e expectedEvents) validate(t *testing.T) { defer bucket.Close() config := getConfig("somepath") config["hash_types"] = []string{"sha1"} - ms, ok := mbtest.NewPushMetricSetV2(t, config).(*MetricSet) + ms, ok := mbtest.NewPushMetricSetV2WithRegistry(t, config, ab.Registry).(*MetricSet) if !assert.True(t, ok) { t.Fatal("can't create metricset") } @@ -745,7 +746,7 @@ func TestEventDelete(t *testing.T) { defer bucket.Close() config := getConfig("somepath") config["hash_types"] = []string{"sha1"} - ms, ok := mbtest.NewPushMetricSetV2(t, config).(*MetricSet) + ms, ok := mbtest.NewPushMetricSetV2WithRegistry(t, config, ab.Registry).(*MetricSet) if !assert.True(t, ok) { t.Fatal("can't create metricset") } diff --git a/dev-tools/cmd/module_include_list/module_include_list.go b/dev-tools/cmd/module_include_list/module_include_list.go index f3b6c79ad2b..4d222d2e707 100644 --- a/dev-tools/cmd/module_include_list/module_include_list.go +++ b/dev-tools/cmd/module_include_list/module_include_list.go @@ -55,6 +55,7 @@ var ( moduleDirs stringSliceFlag moduleExcludeDirs stringSliceFlag importDirs stringSliceFlag + skipInitModule bool ) func init() { @@ -65,6 +66,7 @@ func init() { flag.Var(&moduleDirs, "moduleDir", "Directory to search for modules to include") flag.Var(&moduleExcludeDirs, "moduleExcludeDirs", "Directory to exclude from the list") flag.Var(&importDirs, "import", "Directory to include") + flag.BoolVar(&skipInitModule, "skip-init-module", false, "Skip finding and importing modules with InitializeModule") flag.Usage = usageFlag } @@ -100,10 +102,12 @@ func main() { // Build import paths. var imports []string + var modules []string for _, dir := range dirs { // Skip packages without an init() function because that cannot register // anything as a side-effect of being imported (e.g. filebeat/input/file). var foundInitMethod bool + var foundInitModuleMethod bool goFiles, err := filepath.Glob(filepath.Join(dir, "*.go")) if err != nil { log.Fatalf("Failed checking for .go files in package dir: %v", err) @@ -113,15 +117,14 @@ func main() { if strings.HasSuffix(f, "_test.go") { continue } - if hasInitMethod(f) { + hasInit, hasInitModule := hasMethods(f) + if hasInit { foundInitMethod = true - break + } + if hasInitModule && !skipInitModule { + foundInitModuleMethod = true } } - if !foundInitMethod { - continue - } - importDir := dir if filepath.IsAbs(dir) { // Make it relative to the current package if it's absolute. @@ -131,8 +134,13 @@ func main() { } } - imports = append(imports, filepath.ToSlash( - filepath.Join(repo.ImportPath, importDir))) + if foundInitModuleMethod { + modules = append(modules, filepath.ToSlash( + filepath.Join(repo.ImportPath, importDir))) + } else if foundInitMethod { + imports = append(imports, filepath.ToSlash( + filepath.Join(repo.ImportPath, importDir))) + } } sort.Strings(imports) @@ -144,6 +152,7 @@ func main() { Package: pkg, BuildTags: buildTags, Imports: imports, + Modules: modules, }) if err != nil { log.Fatalf("Failed executing template: %v", err) @@ -175,11 +184,26 @@ var Template = template.Must(template.New("normalizations").Funcs(map[string]int package {{ .Package }} import ( - // Import packages that need to register themselves. +{{- if .Modules }} + // Import packages to perform 'func InitializeModule()' when in-use. +{{- range $i, $import := .Modules }} + m{{ $i }} "{{ $import }}" +{{- end }} +{{ end }} + // Import packages that perform 'func init()'. {{- range $import := .Imports }} _ "{{ $import }}" {{- end }} ) +{{- if .Modules }} + +// InitializeModules initialize all of the modules. +func InitializeModule() { +{{- range $i, $import := .Modules }} + m{{ $i }}.InitializeModule() +{{- end }} +} +{{- end }} `[1:])) type Data struct { @@ -187,6 +211,7 @@ type Data struct { Package string BuildTags string Imports []string + Modules []string } // stringSliceFlag is a flag type that allows more than one value to be specified. @@ -236,8 +261,8 @@ func findImports() ([]string, error) { return devtools.FindFiles(importDirs...) } -// hasInitMethod returns true if the file contains 'func init()'. -func hasInitMethod(file string) bool { +// hasMethods returns true if the file contains 'func init()' and/or `func InitializeModule()'. +func hasMethods(file string) (bool, bool) { f, err := os.Open(file) if err != nil { log.Fatalf("Failed to read from %v: %v", file, err) @@ -245,14 +270,21 @@ func hasInitMethod(file string) bool { defer f.Close() var initSignature = []byte("func init()") + var initModuleSignature = []byte("func InitializeModule()") + + hasInit := false + hasModuleInit := false scanner := bufio.NewScanner(f) for scanner.Scan() { if bytes.Contains(scanner.Bytes(), initSignature) { - return true + hasInit = true + } + if bytes.Contains(scanner.Bytes(), initModuleSignature) { + hasModuleInit = true } } if err := scanner.Err(); err != nil { log.Fatalf("Failed scanning %v: %v", file, err) } - return false + return hasInit, hasModuleInit } diff --git a/dev-tools/mage/fields.go b/dev-tools/mage/fields.go index b90e4e22fa5..d44f3b9cb75 100644 --- a/dev-tools/mage/fields.go +++ b/dev-tools/mage/fields.go @@ -44,6 +44,7 @@ type IncludeListOptions struct { Outfile string BuildTags string Pkg string + SkipInitModule bool } // DefaultIncludeListOptions initializes IncludeListOptions struct with default values @@ -55,6 +56,7 @@ func DefaultIncludeListOptions() IncludeListOptions { Outfile: "include/list.go", BuildTags: "", Pkg: "include", + SkipInitModule: false, } } @@ -194,6 +196,9 @@ func GenerateIncludeListGo(options IncludeListOptions) error { "-out", options.Outfile, "-buildTags", options.BuildTags, "-pkg", options.Pkg, } + if options.SkipInitModule { + cmd = append(cmd, "-skip-init-module") + } includeListCmd := sh.RunCmd("go", cmd...) diff --git a/dev-tools/mage/gotest.go b/dev-tools/mage/gotest.go index bc49c3e643c..fb03c8d48fa 100644 --- a/dev-tools/mage/gotest.go +++ b/dev-tools/mage/gotest.go @@ -55,6 +55,7 @@ type GoTestArgs struct { type TestBinaryArgs struct { Name string // Name of the binary to build InputFiles []string + ExtraFlags []string // Extra flags to pass to 'go test'. } func makeGoTestArgs(name string) GoTestArgs { @@ -389,6 +390,7 @@ func BuildSystemTestGoBinary(binArgs TestBinaryArgs) error { if TestCoverage { args = append(args, "-coverpkg", "./...") } + args = append(args, binArgs.ExtraFlags...) if len(binArgs.InputFiles) > 0 { args = append(args, binArgs.InputFiles...) } diff --git a/filebeat/autodiscover/builder/hints/logs.go b/filebeat/autodiscover/builder/hints/logs.go index c39bfd53353..cff38592c06 100644 --- a/filebeat/autodiscover/builder/hints/logs.go +++ b/filebeat/autodiscover/builder/hints/logs.go @@ -37,13 +37,6 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) -func init() { - err := autodiscover.Registry.AddBuilder("hints", NewLogHints) - if err != nil { - logp.Error(fmt.Errorf("could not add `hints` builder")) - } -} - const ( multiline = "multiline" includeLines = "include_lines" @@ -64,6 +57,14 @@ type logHints struct { log *logp.Logger } +// InitializeModule initializes this module. +func InitializeModule() { + err := autodiscover.Registry.AddBuilder("hints", NewLogHints) + if err != nil { + logp.Error(fmt.Errorf("could not add `hints` builder")) + } +} + // NewLogHints builds a log hints builder func NewLogHints(cfg *conf.C) (autodiscover.Builder, error) { config := defaultConfig() diff --git a/filebeat/autodiscover/builder/hints/logs_test.go b/filebeat/autodiscover/builder/hints/logs_test.go index 4dc889e44d7..5e76c8d5344 100644 --- a/filebeat/autodiscover/builder/hints/logs_test.go +++ b/filebeat/autodiscover/builder/hints/logs_test.go @@ -30,6 +30,10 @@ import ( "github.com/elastic/elastic-agent-libs/paths" ) +func TestMain(t *testing.M) { + InitializeModule() +} + func TestGenerateHints(t *testing.T) { customDockerCfg := conf.MustNewConfigFrom(map[string]interface{}{ "default_config": map[string]interface{}{ diff --git a/filebeat/autodiscover/defaults.go b/filebeat/autodiscover/defaults.go index 42264a9bd5c..9ab0c8f17de 100644 --- a/filebeat/autodiscover/defaults.go +++ b/filebeat/autodiscover/defaults.go @@ -26,7 +26,8 @@ import ( "github.com/elastic/beats/v7/libbeat/autodiscover/providers/kubernetes" ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { docker.DefaultCleanupTimeout = 60 * time.Second kubernetes.DefaultCleanupTimeout = 60 * time.Second } diff --git a/filebeat/autodiscover/defaults_aix.go b/filebeat/autodiscover/defaults_aix.go new file mode 100644 index 00000000000..713b13ca8b3 --- /dev/null +++ b/filebeat/autodiscover/defaults_aix.go @@ -0,0 +1,25 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build aix + +package autodiscover + +// InitializeModule initializes this module. +func InitializeModule() { + // does nothing on aix +} diff --git a/filebeat/cmd/root.go b/filebeat/cmd/root.go index 20e76e748f5..4a5a2607b18 100644 --- a/filebeat/cmd/root.go +++ b/filebeat/cmd/root.go @@ -23,8 +23,10 @@ import ( "github.com/spf13/pflag" "github.com/elastic/beats/v7/filebeat/beater" - - cmd "github.com/elastic/beats/v7/libbeat/cmd" + "github.com/elastic/beats/v7/filebeat/fileset" + "github.com/elastic/beats/v7/filebeat/include" + "github.com/elastic/beats/v7/filebeat/input" + "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/cmd/instance" // Import processors. @@ -47,6 +49,11 @@ func FilebeatSettings() instance.Settings { RunFlags: runFlags, Name: Name, HasDashboards: true, + Initialize: []func(){ + include.InitializeModule, + fileset.RegisterMonitoringModules, + input.RegisterMonitoringInputs, + }, } } diff --git a/filebeat/fileset/factory.go b/filebeat/fileset/factory.go index 0e5308946fa..1e1215d7cdd 100644 --- a/filebeat/fileset/factory.go +++ b/filebeat/fileset/factory.go @@ -19,6 +19,7 @@ package fileset import ( "fmt" + "sync" "github.com/gofrs/uuid" "github.com/mitchellh/hashstructure" @@ -33,9 +34,13 @@ import ( ) var moduleList = monitoring.NewUniqueList() +var moduleListMetricsOnce sync.Once -func init() { - monitoring.NewFunc(monitoring.GetNamespace("state").GetRegistry(), "module", moduleList.Report, monitoring.Report) +// RegisterMonitoringModules registers the modules list with the monitoring system. +func RegisterMonitoringModules() { + moduleListMetricsOnce.Do(func() { + monitoring.NewFunc(monitoring.GetNamespace("state").GetRegistry(), "module", moduleList.Report, monitoring.Report) + }) } // Factory for modules diff --git a/filebeat/include/list.go b/filebeat/include/list.go index 393a5097a80..d0c0ea511c4 100644 --- a/filebeat/include/list.go +++ b/filebeat/include/list.go @@ -20,7 +20,13 @@ package include import ( - // Import packages that need to register themselves. + // Import packages to perform 'func InitializeModule()' when in-use. + m0 "github.com/elastic/beats/v7/filebeat/autodiscover" + m1 "github.com/elastic/beats/v7/filebeat/autodiscover/builder/hints" + m2 "github.com/elastic/beats/v7/filebeat/processor/add_kubernetes_metadata" + + // Import packages that perform 'func init()'. + _ "github.com/elastic/beats/v7/filebeat/input" _ "github.com/elastic/beats/v7/filebeat/input/container" _ "github.com/elastic/beats/v7/filebeat/input/log" _ "github.com/elastic/beats/v7/filebeat/input/mqtt" @@ -48,3 +54,10 @@ import ( _ "github.com/elastic/beats/v7/filebeat/module/system" _ "github.com/elastic/beats/v7/filebeat/module/traefik" ) + +// InitializeModules initialize all of the modules. +func InitializeModule() { + m0.InitializeModule() + m1.InitializeModule() + m2.InitializeModule() +} diff --git a/filebeat/input/input.go b/filebeat/input/input.go index 74a45395563..d52d63e0f85 100644 --- a/filebeat/input/input.go +++ b/filebeat/input/input.go @@ -30,9 +30,13 @@ import ( ) var inputList = monitoring.NewUniqueList() +var inputListMetricsOnce sync.Once -func init() { - monitoring.NewFunc(monitoring.GetNamespace("state").GetRegistry(), "input", inputList.Report, monitoring.Report) +// RegisterMonitoringInputs registers the inputs list with the monitoring system. +func RegisterMonitoringInputs() { + inputListMetricsOnce.Do(func() { + monitoring.NewFunc(monitoring.GetNamespace("state").GetRegistry(), "input", inputList.Report, monitoring.Report) + }) } // Input is the interface common to all input diff --git a/filebeat/magefile.go b/filebeat/magefile.go index d96b44f4c25..a8defd10562 100644 --- a/filebeat/magefile.go +++ b/filebeat/magefile.go @@ -119,7 +119,7 @@ func TestPackages() error { // Update is an alias for executing fields, dashboards, config, includes. func Update() { - mg.SerialDeps(Fields, Dashboards, Config, includeList, fieldDocs, + mg.SerialDeps(Fields, Dashboards, Config, GenerateModuleIncludeListGo, fieldDocs, filebeat.CollectDocs, filebeat.PrepareModulePackagingOSS) } @@ -135,10 +135,10 @@ func configYML() error { return devtools.Config(devtools.AllConfigTypes, filebeat.OSSConfigFileParams(), ".") } -// includeList generates include/list.go with imports for inputs. -func includeList() error { +// GenerateModuleIncludeListGo generates include/list.go with imports for inputs. +func GenerateModuleIncludeListGo() error { options := devtools.DefaultIncludeListOptions() - options.ImportDirs = []string{"input/*"} + options.ImportDirs = []string{"autodiscover", "autodiscover/**/*", "input", "input/*", "processor/*"} return devtools.GenerateIncludeListGo(options) } diff --git a/filebeat/processor/add_kubernetes_metadata/matchers.go b/filebeat/processor/add_kubernetes_metadata/matchers.go index 30d68c01cbc..da1567e1d73 100644 --- a/filebeat/processor/add_kubernetes_metadata/matchers.go +++ b/filebeat/processor/add_kubernetes_metadata/matchers.go @@ -29,7 +29,8 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { add_kubernetes_metadata.Indexing.AddMatcher(LogPathMatcherName, newLogsPathMatcher) cfg := conf.NewConfig() diff --git a/filebeat/processor/add_kubernetes_metadata/matchers_test.go b/filebeat/processor/add_kubernetes_metadata/matchers_test.go index 8188aab0d56..1b219127867 100644 --- a/filebeat/processor/add_kubernetes_metadata/matchers_test.go +++ b/filebeat/processor/add_kubernetes_metadata/matchers_test.go @@ -34,6 +34,10 @@ const cid = "0069869de9adf97f574c62029aeba65d1ecd85a2a112e87fbc28afe4dec2b843" // A random pod UID that we use for our tests const puid = "005f3b90-4b9d-12f8-acf0-31020a840133" +func TestMain(m *testing.M) { + InitializeModule() +} + func TestLogsPathMatcher_InvalidSource1(t *testing.T) { cfgLogsPath := "" // use the default matcher configuration source := "/var/log/messages" diff --git a/heartbeat/autodiscover/builder/hints/monitors.go b/heartbeat/autodiscover/builder/hints/monitors.go index 66487868e91..33ebc409eb4 100644 --- a/heartbeat/autodiscover/builder/hints/monitors.go +++ b/heartbeat/autodiscover/builder/hints/monitors.go @@ -34,10 +34,6 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) -func init() { - _ = autodiscover.Registry.AddBuilder("hints", NewHeartbeatHints) -} - const ( schedule = "schedule" hosts = "hosts" @@ -50,6 +46,14 @@ type heartbeatHints struct { logger *logp.Logger } +// InitializeModule initializes this module. +func InitializeModule() { + err := autodiscover.Registry.AddBuilder("hints", NewHeartbeatHints) + if err != nil { + logp.Error(fmt.Errorf("could not add `hints` builder")) + } +} + // NewHeartbeatHints builds a heartbeat hints builder func NewHeartbeatHints(cfg *conf.C) (autodiscover.Builder, error) { config := defaultConfig() diff --git a/heartbeat/cmd/root.go b/heartbeat/cmd/root.go index 9ea81966b57..fd95013c6fe 100644 --- a/heartbeat/cmd/root.go +++ b/heartbeat/cmd/root.go @@ -18,12 +18,10 @@ package cmd import ( - - // include all heartbeat specific autodiscovery builders - _ "github.com/elastic/beats/v7/heartbeat/autodiscover/builder/hints" "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/beats/v7/heartbeat/beater" + "github.com/elastic/beats/v7/heartbeat/include" cmd "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/cmd/instance" "github.com/elastic/beats/v7/libbeat/ecs" @@ -33,6 +31,9 @@ import ( _ "github.com/elastic/beats/v7/heartbeat/monitors/active/http" _ "github.com/elastic/beats/v7/heartbeat/monitors/active/icmp" _ "github.com/elastic/beats/v7/heartbeat/monitors/active/tcp" + + // include all heartbeat specific autodiscovery builders + _ "github.com/elastic/beats/v7/heartbeat/autodiscover/builder/hints" ) const ( @@ -56,6 +57,7 @@ func HeartbeatSettings() instance.Settings { Name: Name, Processing: processing.MakeDefaultSupport(true, nil, withECSVersion, processing.WithAgentMeta()), HasDashboards: false, + Initialize: []func(){include.InitializeModule}, } } diff --git a/heartbeat/include/list.go b/heartbeat/include/list.go new file mode 100644 index 00000000000..14f4824803f --- /dev/null +++ b/heartbeat/include/list.go @@ -0,0 +1,38 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// Code generated by beats/dev-tools/cmd/module_include_list/module_include_list.go - DO NOT EDIT. + +package include + +import ( + // Import packages to perform 'func InitializeModule()' when in-use. + m0 "github.com/elastic/beats/v7/heartbeat/autodiscover/builder/hints" + m1 "github.com/elastic/beats/v7/heartbeat/security" + + // Import packages that perform 'func init()'. + _ "github.com/elastic/beats/v7/heartbeat/monitors/active/http" + _ "github.com/elastic/beats/v7/heartbeat/monitors/active/icmp" + _ "github.com/elastic/beats/v7/heartbeat/monitors/active/tcp" + _ "github.com/elastic/beats/v7/heartbeat/monitors/plugin" +) + +// InitializeModules initialize all of the modules. +func InitializeModule() { + m0.InitializeModule() + m1.InitializeModule() +} diff --git a/heartbeat/magefile.go b/heartbeat/magefile.go index 3311aea03a2..650cd421a21 100644 --- a/heartbeat/magefile.go +++ b/heartbeat/magefile.go @@ -81,9 +81,15 @@ func Fields() error { return heartbeat.Fields() } +func GenerateModuleIncludeListGo() error { + opts := devtools.DefaultIncludeListOptions() + opts.ImportDirs = append(opts.ImportDirs, "autodiscover/**/*", "monitors/*", "monitors/**/*", "security") + return devtools.GenerateIncludeListGo(opts) +} + // Update updates the generated files (aka make update). func Update() { - mg.SerialDeps(Fields, FieldDocs, Config) + mg.SerialDeps(Fields, FieldDocs, Config, GenerateModuleIncludeListGo) } func IntegTest() { diff --git a/heartbeat/security/security.go b/heartbeat/security/security.go index 597e3a5bda9..75c57ae405c 100644 --- a/heartbeat/security/security.go +++ b/heartbeat/security/security.go @@ -30,7 +30,8 @@ import ( "kernel.org/pub/linux/libs/security/libcap/cap" ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { // Here we set a bunch of linux specific security stuff. // In the context of a container, where users frequently run as root, we follow BEAT_SETUID_AS to setuid/gid // and add capabilities to make this actually run as a regular user. This also helps Node.js in synthetics, which diff --git a/heartbeat/security/security_all.go b/heartbeat/security/security_all.go index cd06d2c94d5..e374bdf6473 100644 --- a/heartbeat/security/security_all.go +++ b/heartbeat/security/security_all.go @@ -15,8 +15,11 @@ // specific language governing permissions and limitations // under the License. +//go:build !linux + package security -// Empty file so that non-linux platforms have *something* -// to import, thus preventing mage from complaining -// no files are imported from the package +// InitializeModule initializes this module. +func InitializeModule() { + // do nothing +} diff --git a/libbeat/cmd/instance/beat.go b/libbeat/cmd/instance/beat.go index f25a24d2d5a..8fa3678e042 100644 --- a/libbeat/cmd/instance/beat.go +++ b/libbeat/cmd/instance/beat.go @@ -224,7 +224,7 @@ func Run(settings Settings, bt beat.Creator) error { // NewInitializedBeat creates a new beat where all information and initialization is derived from settings func NewInitializedBeat(settings Settings) (*Beat, error) { - b, err := NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed) + b, err := NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed, settings.Initialize) if err != nil { return nil, err } @@ -235,7 +235,12 @@ func NewInitializedBeat(settings Settings) (*Beat, error) { } // NewBeat creates a new beat instance -func NewBeat(name, indexPrefix, v string, elasticLicensed bool) (*Beat, error) { +func NewBeat(name, indexPrefix, v string, elasticLicensed bool, initFuncs []func()) (*Beat, error) { + // call all initialization functions + for _, f := range initFuncs { + f() + } + if v == "" { v = version.GetDefaultVersion() } diff --git a/libbeat/cmd/instance/beat_test.go b/libbeat/cmd/instance/beat_test.go index 52e55941225..1a011b56daf 100644 --- a/libbeat/cmd/instance/beat_test.go +++ b/libbeat/cmd/instance/beat_test.go @@ -37,7 +37,7 @@ import ( ) func TestNewInstance(t *testing.T) { - b, err := NewBeat("testbeat", "testidx", "0.9", false) + b, err := NewBeat("testbeat", "testidx", "0.9", false, nil) if err != nil { panic(err) } @@ -51,7 +51,7 @@ func TestNewInstance(t *testing.T) { assert.Equal(t, 36, len(b.Info.ID.String())) // indexPrefix set to name if empty - b, err = NewBeat("testbeat", "", "0.9", false) + b, err = NewBeat("testbeat", "", "0.9", false, nil) if err != nil { panic(err) } @@ -61,7 +61,7 @@ func TestNewInstance(t *testing.T) { } func TestNewInstanceUUID(t *testing.T) { - b, err := NewBeat("testbeat", "", "0.9", false) + b, err := NewBeat("testbeat", "", "0.9", false, nil) if err != nil { panic(err) } @@ -75,7 +75,7 @@ func TestNewInstanceUUID(t *testing.T) { } func TestInitKibanaConfig(t *testing.T) { - b, err := NewBeat("filebeat", "testidx", "0.9", false) + b, err := NewBeat("filebeat", "testidx", "0.9", false, nil) if err != nil { panic(err) } @@ -118,7 +118,7 @@ func TestInitKibanaConfig(t *testing.T) { } func TestEmptyMetaJson(t *testing.T) { - b, err := NewBeat("filebeat", "testidx", "0.9", false) + b, err := NewBeat("filebeat", "testidx", "0.9", false, nil) if err != nil { panic(err) } @@ -139,7 +139,7 @@ func TestEmptyMetaJson(t *testing.T) { } func TestMetaJsonWithTimestamp(t *testing.T) { - firstBeat, err := NewBeat("filebeat", "testidx", "0.9", false) + firstBeat, err := NewBeat("filebeat", "testidx", "0.9", false, nil) if err != nil { panic(err) } @@ -155,7 +155,7 @@ func TestMetaJsonWithTimestamp(t *testing.T) { err = firstBeat.loadMeta(metaPath) assert.Equal(t, nil, err, "Unable to load meta file properly") - secondBeat, err := NewBeat("filebeat", "testidx", "0.9", false) + secondBeat, err := NewBeat("filebeat", "testidx", "0.9", false, nil) if err != nil { panic(err) } @@ -231,7 +231,7 @@ func TestSanitizeIPs(t *testing.T) { func TestReloader(t *testing.T) { t.Run("updates the output configuration on the beat", func(t *testing.T) { - b, err := NewBeat("testbeat", "testidx", "0.9", false) + b, err := NewBeat("testbeat", "testidx", "0.9", false, nil) require.NoError(t, err) cfg := ` diff --git a/libbeat/cmd/instance/settings.go b/libbeat/cmd/instance/settings.go index 5cf6b4eca19..d7359610504 100644 --- a/libbeat/cmd/instance/settings.go +++ b/libbeat/cmd/instance/settings.go @@ -50,4 +50,7 @@ type Settings struct { // publisher pipeline. This is only useful when the Beat plans to use // beat.DropIfFull PublishMode. Leave as zero for default. InputQueueSize int + + // Initialize functions that are called in-order to initialize unique items for the beat. + Initialize []func() } diff --git a/libbeat/cmd/setup.go b/libbeat/cmd/setup.go index 49a2cb5cfbe..64d1f41fdea 100644 --- a/libbeat/cmd/setup.go +++ b/libbeat/cmd/setup.go @@ -54,7 +54,7 @@ func genSetupCmd(settings instance.Settings, beatCreator beat.Creator) *cobra.Co * ILM policy (for Elasticsearch 6.5 and newer). `, Run: func(cmd *cobra.Command, args []string) { - beat, err := instance.NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed) + beat, err := instance.NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed, settings.Initialize) if err != nil { fmt.Fprintf(os.Stderr, "Error initializing beat: %s\n", err) os.Exit(1) diff --git a/libbeat/cmd/test/config.go b/libbeat/cmd/test/config.go index 7e93a618c56..0adef4da1e4 100644 --- a/libbeat/cmd/test/config.go +++ b/libbeat/cmd/test/config.go @@ -32,7 +32,7 @@ func GenTestConfigCmd(settings instance.Settings, beatCreator beat.Creator) *cob Use: "config", Short: "Test configuration settings", Run: func(cmd *cobra.Command, args []string) { - b, err := instance.NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed) + b, err := instance.NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed, settings.Initialize) if err != nil { fmt.Fprintf(os.Stderr, "Error initializing beat: %s\n", err) os.Exit(1) diff --git a/libbeat/cmd/version.go b/libbeat/cmd/version.go index 243c9e04c02..a26ed1a8089 100644 --- a/libbeat/cmd/version.go +++ b/libbeat/cmd/version.go @@ -35,7 +35,7 @@ func GenVersionCmd(settings instance.Settings) *cobra.Command { Short: "Show current version info", Run: cli.RunWith( func(_ *cobra.Command, args []string) error { - beat, err := instance.NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed) + beat, err := instance.NewBeat(settings.Name, settings.IndexPrefix, settings.Version, settings.ElasticLicensed, settings.Initialize) if err != nil { return fmt.Errorf("error initializing beat: %s", err) } diff --git a/libbeat/tests/integration/framework.go b/libbeat/tests/integration/framework.go index b3bb33883b9..229d855b9fa 100644 --- a/libbeat/tests/integration/framework.go +++ b/libbeat/tests/integration/framework.go @@ -127,31 +127,47 @@ func NewBeat(t *testing.T, beatName, binary string, args ...string) *BeatProc { if !t.Failed() { return } - var maxlen int64 = 2048 - stderr, err := readLastNBytes(filepath.Join(tempDir, "stderr"), maxlen) - if err != nil { - t.Logf("error reading stderr: %s", err) - } - t.Logf("Last %d bytes of stderr:\n%s", len(stderr), string(stderr)) + reportErrors(t, tempDir, beatName) + }) + return &p +} - stdout, err := readLastNBytes(filepath.Join(tempDir, "stdout"), maxlen) - if err != nil { - t.Logf("error reading stdout: %s", err) - } - t.Logf("Last %d bytes of stdout:\n%s", len(stdout), string(stdout)) +// NewAgentBeat creates a new agentbeat process that runs the beatName as a subcommand. +// See `NewBeat` for options and information for the parameters. +func NewAgentBeat(t *testing.T, beatName, binary string, args ...string) *BeatProc { + require.FileExistsf(t, binary, "agentbeat binary must exists") + tempDir := createTempDir(t) + configFile := filepath.Join(tempDir, beatName+".yml") - glob := fmt.Sprintf("%s-*.ndjson", filepath.Join(tempDir, beatName)) - files, err := filepath.Glob(glob) - if err != nil { - t.Logf("glob error with: %s: %s", glob, err) - } - for _, f := range files { - contents, err := readLastNBytes(f, maxlen) - if err != nil { - t.Logf("error reading %s: %s", f, err) - } - t.Logf("Last %d bytes of %s:\n%s", len(contents), f, string(contents)) + stdoutFile, err := os.Create(filepath.Join(tempDir, "stdout")) + require.NoError(t, err, "error creating stdout file") + stderrFile, err := os.Create(filepath.Join(tempDir, "stderr")) + require.NoError(t, err, "error creating stderr file") + + p := BeatProc{ + Binary: binary, + baseArgs: append([]string{ + "agentbeat", + "--systemTest", + beatName, + "--path.home", tempDir, + "--path.logs", tempDir, + "-E", "logging.to_files=true", + "-E", "logging.files.rotateeverybytes=104857600", // About 100MB + "-E", "logging.files.rotateonstartup=false", + }, args...), + tempDir: tempDir, + beatName: beatName, + configFile: configFile, + t: t, + stdout: stdoutFile, + stderr: stderrFile, + } + t.Cleanup(func() { + if !t.Failed() { + return } + reportErrors(t, tempDir, beatName) }) return &p } @@ -686,6 +702,34 @@ func readLastNBytes(filename string, numBytes int64) ([]byte, error) { return io.ReadAll(f) } +func reportErrors(t *testing.T, tempDir string, beatName string) { + var maxlen int64 = 2048 + stderr, err := readLastNBytes(filepath.Join(tempDir, "stderr"), maxlen) + if err != nil { + t.Logf("error reading stderr: %s", err) + } + t.Logf("Last %d bytes of stderr:\n%s", len(stderr), string(stderr)) + + stdout, err := readLastNBytes(filepath.Join(tempDir, "stdout"), maxlen) + if err != nil { + t.Logf("error reading stdout: %s", err) + } + t.Logf("Last %d bytes of stdout:\n%s", len(stdout), string(stdout)) + + glob := fmt.Sprintf("%s-*.ndjson", filepath.Join(tempDir, beatName)) + files, err := filepath.Glob(glob) + if err != nil { + t.Logf("glob error with: %s: %s", glob, err) + } + for _, f := range files { + contents, err := readLastNBytes(f, maxlen) + if err != nil { + t.Logf("error reading %s: %s", f, err) + } + t.Logf("Last %d bytes of %s:\n%s", len(contents), f, string(contents)) + } +} + // GenerateLogFile writes count lines to path, each line is 50 bytes. // Each line contains the current time (RFC3339) and a counter func GenerateLogFile(t *testing.T, path string, count int, append bool) { diff --git a/metricbeat/autodiscover/appender/kubernetes/token/token.go b/metricbeat/autodiscover/appender/kubernetes/token/token.go index 4c474d36b16..46569118bef 100644 --- a/metricbeat/autodiscover/appender/kubernetes/token/token.go +++ b/metricbeat/autodiscover/appender/kubernetes/token/token.go @@ -30,15 +30,19 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) -func init() { - autodiscover.Registry.AddAppender("kubernetes.token", NewTokenAppender) -} - type tokenAppender struct { TokenPath string Condition conditions.Condition } +// InitializeModule initializes this module. +func InitializeModule() { + err := autodiscover.Registry.AddAppender("kubernetes.token", NewTokenAppender) + if err != nil { + logp.Error(fmt.Errorf("could not add `kubernetes.token` appender")) + } +} + // NewTokenAppender creates a token appender that can append a bearer token required to authenticate with // protected endpoints func NewTokenAppender(cfg *conf.C) (autodiscover.Appender, error) { diff --git a/metricbeat/autodiscover/appender/kubernetes/token/token_test.go b/metricbeat/autodiscover/appender/kubernetes/token/token_test.go index 62243867958..aacf10b6bd0 100644 --- a/metricbeat/autodiscover/appender/kubernetes/token/token_test.go +++ b/metricbeat/autodiscover/appender/kubernetes/token/token_test.go @@ -29,6 +29,10 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) +func TestMain(m *testing.M) { + InitializeModule() +} + func TestTokenAppender(t *testing.T) { tests := []struct { eventConfig string diff --git a/metricbeat/autodiscover/builder/hints/metrics.go b/metricbeat/autodiscover/builder/hints/metrics.go index 5304fe0166f..b81eabf8a7b 100644 --- a/metricbeat/autodiscover/builder/hints/metrics.go +++ b/metricbeat/autodiscover/builder/hints/metrics.go @@ -37,13 +37,6 @@ import ( "github.com/elastic/beats/v7/metricbeat/mb" ) -func init() { - err := autodiscover.Registry.AddBuilder("hints", NewMetricHints) - if err != nil { - logp.Error(fmt.Errorf("could not add `hints` builder")) - } -} - const ( module = "module" namespace = "namespace" @@ -68,6 +61,14 @@ type metricHints struct { logger *logp.Logger } +// InitializeModule initializes this module. +func InitializeModule() { + err := autodiscover.Registry.AddBuilder("hints", NewMetricHints) + if err != nil { + logp.Error(fmt.Errorf("could not add `hints` builder")) + } +} + // NewMetricHints builds a new metrics builder based on hints func NewMetricHints(cfg *conf.C) (autodiscover.Builder, error) { config := defaultConfig() diff --git a/metricbeat/autodiscover/builder/hints/metrics_test.go b/metricbeat/autodiscover/builder/hints/metrics_test.go index 129997d867e..19d6963db1b 100644 --- a/metricbeat/autodiscover/builder/hints/metrics_test.go +++ b/metricbeat/autodiscover/builder/hints/metrics_test.go @@ -33,6 +33,10 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) +func TestMain(m *testing.M) { + InitializeModule() +} + func TestGenerateHints(t *testing.T) { tests := []struct { message string diff --git a/metricbeat/beater/metricbeat.go b/metricbeat/beater/metricbeat.go index acd4aa02b1e..ec307e2ff5b 100644 --- a/metricbeat/beater/metricbeat.go +++ b/metricbeat/beater/metricbeat.go @@ -49,6 +49,7 @@ type Metricbeat struct { stopOnce sync.Once // wraps the Stop() method runners []cfgfile.Runner // Active list of module runners. config Config + registry *mb.Register autodiscover *autodiscover.Autodiscover // Options @@ -79,7 +80,15 @@ func WithLightModules() Option { // Metricbeat framework with the given options. func Creator(options ...Option) beat.Creator { return func(b *beat.Beat, c *conf.C) (beat.Beater, error) { - return newMetricbeat(b, c, options...) + return newMetricbeat(b, c, mb.Registry, options...) + } +} + +// CreatorWithRegistry returns a beat.Creator for instantiating a new instance of the +// Metricbeat framework with a specific registry and the given options. +func CreatorWithRegistry(registry *mb.Register, options ...Option) beat.Creator { + return func(b *beat.Beat, c *conf.C) (beat.Beater, error) { + return newMetricbeat(b, c, registry, options...) } } @@ -129,7 +138,7 @@ func DefaultTestModulesCreator() beat.Creator { } // newMetricbeat creates and returns a new Metricbeat instance. -func newMetricbeat(b *beat.Beat, c *conf.C, options ...Option) (*Metricbeat, error) { +func newMetricbeat(b *beat.Beat, c *conf.C, registry *mb.Register, options ...Option) (*Metricbeat, error) { config := defaultConfig if err := c.Unpack(&config); err != nil { return nil, fmt.Errorf("error reading configuration file: %w", err) @@ -141,15 +150,16 @@ func newMetricbeat(b *beat.Beat, c *conf.C, options ...Option) (*Metricbeat, err } metricbeat := &Metricbeat{ - done: make(chan struct{}), - config: config, + done: make(chan struct{}), + config: config, + registry: registry, } for _, applyOption := range options { applyOption(metricbeat) } // List all registered modules and metricsets. - logp.Debug("modules", "Available modules and metricsets: %s", mb.Registry.String()) + logp.Debug("modules", "Available modules and metricsets: %s", registry.String()) if b.InSetupCmd { // Return without instantiating the metricsets. @@ -178,7 +188,7 @@ func newMetricbeat(b *beat.Beat, c *conf.C, options ...Option) (*Metricbeat, err []module.Option{module.WithMaxStartDelay(config.MaxStartDelay)}, metricbeat.moduleOptions...) - factory := module.NewFactory(b.Info, moduleOptions...) + factory := module.NewFactory(b.Info, registry, moduleOptions...) for _, moduleCfg := range config.Modules { if !moduleCfg.Enabled() { @@ -236,7 +246,7 @@ func (bt *Metricbeat) Run(b *beat.Beat) error { } // Centrally managed modules - factory := module.NewFactory(b.Info, bt.moduleOptions...) + factory := module.NewFactory(b.Info, bt.registry, bt.moduleOptions...) modules := cfgfile.NewRunnerList(management.DebugK, factory, b.Publisher) reload.RegisterV2.MustRegisterInput(modules) wg.Add(1) @@ -298,5 +308,5 @@ func (bt *Metricbeat) Stop() { // Modules return a list of all configured modules. func (bt *Metricbeat) Modules() ([]*module.Wrapper, error) { - return module.ConfiguredModules(bt.config.Modules, bt.config.ConfigModules, bt.moduleOptions) + return module.ConfiguredModules(bt.registry, bt.config.Modules, bt.config.ConfigModules, bt.moduleOptions) } diff --git a/metricbeat/cmd/root.go b/metricbeat/cmd/root.go index e124aacaa7f..97d57fda3fb 100644 --- a/metricbeat/cmd/root.go +++ b/metricbeat/cmd/root.go @@ -22,16 +22,18 @@ import ( "github.com/spf13/pflag" + "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/cmd/instance" "github.com/elastic/beats/v7/libbeat/ecs" "github.com/elastic/beats/v7/libbeat/publisher/processing" "github.com/elastic/beats/v7/metricbeat/beater" "github.com/elastic/beats/v7/metricbeat/cmd/test" - "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/beats/v7/metricbeat/include" + "github.com/elastic/beats/v7/metricbeat/mb/module" // import modules - _ "github.com/elastic/beats/v7/metricbeat/include" _ "github.com/elastic/beats/v7/metricbeat/include/fields" ) @@ -59,6 +61,10 @@ func MetricbeatSettings() instance.Settings { Name: Name, HasDashboards: true, Processing: processing.MakeDefaultSupport(true, nil, withECSVersion, processing.WithHost, processing.WithAgentMeta()), + Initialize: []func(){ + include.InitializeModule, + module.RegisterMonitoringModules, + }, } } diff --git a/metricbeat/include/list_common.go b/metricbeat/include/list_common.go index 434d2d7fc72..0d061e55e8d 100644 --- a/metricbeat/include/list_common.go +++ b/metricbeat/include/list_common.go @@ -20,7 +20,7 @@ package include import ( - // Import packages that need to register themselves. + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/metricbeat/module/aerospike" _ "github.com/elastic/beats/v7/metricbeat/module/aerospike/namespace" _ "github.com/elastic/beats/v7/metricbeat/module/apache" diff --git a/metricbeat/include/list_docker.go b/metricbeat/include/list_docker.go index fb79ffcca58..04c2aedaef4 100644 --- a/metricbeat/include/list_docker.go +++ b/metricbeat/include/list_docker.go @@ -22,7 +22,7 @@ package include import ( - // Import packages that need to register themselves. + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/metricbeat/module/docker/container" _ "github.com/elastic/beats/v7/metricbeat/module/docker/cpu" _ "github.com/elastic/beats/v7/metricbeat/module/docker/diskio" diff --git a/metricbeat/include/list_init.go b/metricbeat/include/list_init.go new file mode 100644 index 00000000000..037e00b2891 --- /dev/null +++ b/metricbeat/include/list_init.go @@ -0,0 +1,36 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// Code generated by beats/dev-tools/cmd/module_include_list/module_include_list.go - DO NOT EDIT. + +package include + +import ( + // Import packages to perform 'func InitializeModule()' when in-use. + m0 "github.com/elastic/beats/v7/metricbeat/autodiscover/builder/hints" + m1 "github.com/elastic/beats/v7/metricbeat/autodiscover/appender/kubernetes/token" + m2 "github.com/elastic/beats/v7/metricbeat/processor/add_kubernetes_metadata" + + // Import packages that perform 'func init()'. +) + +// InitializeModules initialize all of the modules. +func InitializeModule() { + m0.InitializeModule() + m1.InitializeModule() + m2.InitializeModule() +} diff --git a/metricbeat/mb/module/configuration.go b/metricbeat/mb/module/configuration.go index 1e69d6094c4..b0a2586863a 100644 --- a/metricbeat/mb/module/configuration.go +++ b/metricbeat/mb/module/configuration.go @@ -26,11 +26,11 @@ import ( ) // ConfiguredModules returns a list of all configured modules, including anyone present under dynamic config settings. -func ConfiguredModules(modulesData []*conf.C, configModulesData *conf.C, moduleOptions []Option) ([]*Wrapper, error) { +func ConfiguredModules(registry *mb.Register, modulesData []*conf.C, configModulesData *conf.C, moduleOptions []Option) ([]*Wrapper, error) { var modules []*Wrapper for _, moduleCfg := range modulesData { - module, err := NewWrapper(moduleCfg, mb.Registry, moduleOptions...) + module, err := NewWrapper(moduleCfg, registry, moduleOptions...) if err != nil { return nil, err } @@ -53,7 +53,7 @@ func ConfiguredModules(modulesData []*conf.C, configModulesData *conf.C, moduleO return nil, fmt.Errorf("error loading config files: %w", err) } for _, conf := range confs { - m, err := NewWrapper(conf, mb.Registry, moduleOptions...) + m, err := NewWrapper(conf, registry, moduleOptions...) if err != nil { return nil, fmt.Errorf("module initialization error: %w", err) } diff --git a/metricbeat/mb/module/factory.go b/metricbeat/mb/module/factory.go index be8999a84d1..91254194aeb 100644 --- a/metricbeat/mb/module/factory.go +++ b/metricbeat/mb/module/factory.go @@ -29,19 +29,21 @@ import ( type Factory struct { beatInfo beat.Info options []Option + registry *mb.Register } // NewFactory creates new Reloader instance for the given config -func NewFactory(beatInfo beat.Info, options ...Option) *Factory { +func NewFactory(beatInfo beat.Info, registry *mb.Register, options ...Option) *Factory { return &Factory{ beatInfo: beatInfo, options: options, + registry: registry, } } // Create creates a new metricbeat module runner reporting events to the passed pipeline. func (r *Factory) Create(p beat.PipelineConnector, c *conf.C) (cfgfile.Runner, error) { - module, metricSets, err := mb.NewModule(c, mb.Registry) + module, metricSets, err := mb.NewModule(c, r.registry) if err != nil { return nil, err } @@ -58,7 +60,7 @@ func (r *Factory) Create(p beat.PipelineConnector, c *conf.C) (cfgfile.Runner, e return nil, err } - err = connector.UseMetricSetProcessors(mb.Registry, module.Name(), metricSet.Name()) + err = connector.UseMetricSetProcessors(r.registry, module.Name(), metricSet.Name()) if err != nil { return nil, err } @@ -75,7 +77,7 @@ func (r *Factory) Create(p beat.PipelineConnector, c *conf.C) (cfgfile.Runner, e // CheckConfig checks if a config is valid or not func (r *Factory) CheckConfig(config *conf.C) error { - _, err := NewWrapper(config, mb.Registry, r.options...) + _, err := NewWrapper(config, r.registry, r.options...) if err != nil { return err } diff --git a/metricbeat/mb/module/runner.go b/metricbeat/mb/module/runner.go index f4848d11b29..1b0a621d705 100644 --- a/metricbeat/mb/module/runner.go +++ b/metricbeat/mb/module/runner.go @@ -28,13 +28,14 @@ import ( "github.com/elastic/elastic-agent-libs/monitoring" ) -var ( - moduleList *monitoring.UniqueList -) +var moduleList = monitoring.NewUniqueList() +var moduleListMetricsOnce sync.Once -func init() { - moduleList = monitoring.NewUniqueList() - monitoring.NewFunc(monitoring.GetNamespace("state").GetRegistry(), "module", moduleList.Report, monitoring.Report) +// RegisterMonitoringModules registers the modules list with the monitoring system. +func RegisterMonitoringModules() { + moduleListMetricsOnce.Do(func() { + monitoring.NewFunc(monitoring.GetNamespace("state").GetRegistry(), "module", moduleList.Report, monitoring.Report) + }) } // Runner is a facade for a Wrapper that provides a simple interface diff --git a/metricbeat/mb/testing/modules.go b/metricbeat/mb/testing/modules.go index e7b2c56c3a7..1dcc9b075b8 100644 --- a/metricbeat/mb/testing/modules.go +++ b/metricbeat/mb/testing/modules.go @@ -89,7 +89,13 @@ func NewTestModule(t testing.TB, config interface{}) *TestModule { // The ModuleFactory and MetricSetFactory are obtained from the global // Registry. func NewMetricSet(t testing.TB, config interface{}) mb.MetricSet { - metricsets := NewMetricSets(t, config) + return NewMetricSetWithRegistry(t, config, mb.Registry) +} + +// NewMetricSetWithRegistry instantiates a new MetricSet using the given configuration. +// The ModuleFactory and MetricSetFactory are obtained from the passed in registry. +func NewMetricSetWithRegistry(t testing.TB, config interface{}, registry *mb.Register) mb.MetricSet { + metricsets := NewMetricSetsWithRegistry(t, config, registry) if len(metricsets) != 1 { t.Fatal("invalid number of metricsets instantiated") @@ -105,11 +111,17 @@ func NewMetricSet(t testing.TB, config interface{}) mb.MetricSet { // NewMetricSets instantiates a list of new MetricSets using the given // module configuration. func NewMetricSets(t testing.TB, config interface{}) []mb.MetricSet { + return NewMetricSetsWithRegistry(t, config, mb.Registry) +} + +// NewMetricSetsWithRegistry instantiates a list of new MetricSets using the given +// module configuration and provided registry. +func NewMetricSetsWithRegistry(t testing.TB, config interface{}, registry *mb.Register) []mb.MetricSet { c, err := conf.NewConfigFrom(config) if err != nil { t.Fatal(err) } - m, metricsets, err := mb.NewModule(c, mb.Registry) + m, metricsets, err := mb.NewModule(c, registry) if err != nil { t.Fatal("failed to create new MetricSet", err) } @@ -142,7 +154,13 @@ func ReportingFetch(metricSet mb.ReportingMetricSet) ([]mapstr.M, []error) { // NewReportingMetricSetV2 returns a new ReportingMetricSetV2 instance. Then // you can use ReportingFetchV2 to perform a Fetch operation with the MetricSet. func NewReportingMetricSetV2(t testing.TB, config interface{}) mb.ReportingMetricSetV2 { - metricSet := NewMetricSet(t, config) + return NewReportingMetricSetV2WithRegistry(t, config, mb.Registry) +} + +// NewReportingMetricSetV2WithRegistry returns a new ReportingMetricSetV2 instance. Then +// you can use ReportingFetchV2 to perform a Fetch operation with the MetricSet. +func NewReportingMetricSetV2WithRegistry(t testing.TB, config interface{}, registry *mb.Register) mb.ReportingMetricSetV2 { + metricSet := NewMetricSetWithRegistry(t, config, registry) reportingMetricSetV2, ok := metricSet.(mb.ReportingMetricSetV2) if !ok { @@ -331,6 +349,20 @@ func NewPushMetricSetV2(t testing.TB, config interface{}) mb.PushMetricSetV2 { return pushMetricSet } +// NewPushMetricSetV2WithRegistry instantiates a new PushMetricSetV2 using the given +// configuration. The ModuleFactory and MetricSetFactory are obtained from the +// passed in the registry. +func NewPushMetricSetV2WithRegistry(t testing.TB, config interface{}, registry *mb.Register) mb.PushMetricSetV2 { + metricSet := NewMetricSetWithRegistry(t, config, registry) + + pushMetricSet, ok := metricSet.(mb.PushMetricSetV2) + if !ok { + t.Fatal("MetricSet does not implement PushMetricSetV2") + } + + return pushMetricSet +} + // NewPushMetricSetV2WithContext instantiates a new PushMetricSetV2WithContext // using the given configuration. The ModuleFactory and MetricSetFactory are // obtained from the global Registry. diff --git a/metricbeat/processor/add_kubernetes_metadata/indexers.go b/metricbeat/processor/add_kubernetes_metadata/indexers.go index a25c3d3627c..249f70238b7 100644 --- a/metricbeat/processor/add_kubernetes_metadata/indexers.go +++ b/metricbeat/processor/add_kubernetes_metadata/indexers.go @@ -22,7 +22,8 @@ import ( conf "github.com/elastic/elastic-agent-libs/config" ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { // Register default indexers cfg := conf.NewConfig() diff --git a/metricbeat/scripts/mage/fields.go b/metricbeat/scripts/mage/fields.go index 86f0fc0c078..487b1bc6fc5 100644 --- a/metricbeat/scripts/mage/fields.go +++ b/metricbeat/scripts/mage/fields.go @@ -32,7 +32,9 @@ func GenerateOSSMetricbeatModuleIncludeListGo() error { ModulesToExclude: []string{"module/docker", "module/kubernetes"}, Outfile: "include/list_common.go", BuildTags: "", - Pkg: "include"}) + Pkg: "include", + SkipInitModule: true, + }) if err != nil { return err } @@ -44,7 +46,22 @@ func GenerateOSSMetricbeatModuleIncludeListGo() error { ModulesToExclude: nil, Outfile: "include/list_docker.go", BuildTags: "\n//go:build linux || darwin || windows\n", - Pkg: "include"}) + Pkg: "include", + SkipInitModule: true, + }) + if err != nil { + return err + } + // generate include/list_init.go + err = devtools.GenerateIncludeListGo( + devtools.IncludeListOptions{ + ImportDirs: []string{"autodiscover/**/*", "autodiscover/**/*/*", "processor/*"}, + ModuleDirs: nil, + ModulesToExclude: nil, + Outfile: "include/list_init.go", + Pkg: "include", + SkipInitModule: false, + }) if err != nil { return err } diff --git a/packetbeat/cmd/root.go b/packetbeat/cmd/root.go index 4260a2e39e2..7b1c20b34c6 100644 --- a/packetbeat/cmd/root.go +++ b/packetbeat/cmd/root.go @@ -28,10 +28,8 @@ import ( "github.com/elastic/beats/v7/libbeat/processors" "github.com/elastic/beats/v7/libbeat/publisher/processing" "github.com/elastic/beats/v7/packetbeat/beater" + "github.com/elastic/beats/v7/packetbeat/include" "github.com/elastic/elastic-agent-libs/mapstr" - - // Register fields and protocol modules. - _ "github.com/elastic/beats/v7/packetbeat/include" ) const ( @@ -64,6 +62,7 @@ func PacketbeatSettings(globals processors.PluginConfig) instance.Settings { HasDashboards: true, Processing: processing.MakeDefaultSupport(true, globals, withECSVersion, processing.WithHost, processing.WithAgentMeta()), InputQueueSize: 400, + Initialize: []func(){include.InitializeModule}, } } diff --git a/packetbeat/include/list.go b/packetbeat/include/list.go index 748d525eb2f..3e1e5a391e6 100644 --- a/packetbeat/include/list.go +++ b/packetbeat/include/list.go @@ -20,7 +20,10 @@ package include import ( - // Import packages that need to register themselves. + // Import packages to perform 'func InitializeModule()' when in-use. + m0 "github.com/elastic/beats/v7/packetbeat/processor/add_kubernetes_metadata" + + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/packetbeat/protos/amqp" _ "github.com/elastic/beats/v7/packetbeat/protos/cassandra" _ "github.com/elastic/beats/v7/packetbeat/protos/dhcpv4" @@ -37,3 +40,8 @@ import ( _ "github.com/elastic/beats/v7/packetbeat/protos/thrift" _ "github.com/elastic/beats/v7/packetbeat/protos/tls" ) + +// InitializeModules initialize all of the modules. +func InitializeModule() { + m0.InitializeModule() +} diff --git a/packetbeat/magefile.go b/packetbeat/magefile.go index 00e4f9dd47b..1676118f706 100644 --- a/packetbeat/magefile.go +++ b/packetbeat/magefile.go @@ -122,7 +122,7 @@ func Config() error { func includeList() error { options := devtools.DefaultIncludeListOptions() - options.ImportDirs = []string{"protos/*"} + options.ImportDirs = []string{"processor/*", "protos/*"} options.ModuleDirs = nil return devtools.GenerateIncludeListGo(options) } diff --git a/packetbeat/processor/add_kubernetes_metadata/indexers.go b/packetbeat/processor/add_kubernetes_metadata/indexers.go index 6fa1b83805a..3e5414bd694 100644 --- a/packetbeat/processor/add_kubernetes_metadata/indexers.go +++ b/packetbeat/processor/add_kubernetes_metadata/indexers.go @@ -22,7 +22,8 @@ import ( conf "github.com/elastic/elastic-agent-libs/config" ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { // Register default indexers cfg := conf.NewConfig() diff --git a/packetbeat/scripts/mage/pcap.go b/packetbeat/scripts/mage/pcap.go index aab41c3d8fe..6c38bd38aba 100644 --- a/packetbeat/scripts/mage/pcap.go +++ b/packetbeat/scripts/mage/pcap.go @@ -26,6 +26,14 @@ import ( // GolangCrossBuild build the Beat binary inside of the golang-builder. // Do not use directly, use crossBuild instead. func GolangCrossBuild() error { + return multierr.Combine( + devtools.GolangCrossBuild(GolangCrossBuildArgs()), + devtools.TestLinuxForCentosGLIBC(), + ) +} + +// GolangCrossBuildArgs returns the correct build arguments for golang-crossbuild. +func GolangCrossBuildArgs() devtools.BuildArgs { params := devtools.DefaultGolangCrossBuildArgs() if flags, found := libpcapLDFLAGS[devtools.Platform.Name]; found { params.Env = map[string]string{ @@ -35,11 +43,7 @@ func GolangCrossBuild() error { if flags, found := libpcapCFLAGS[devtools.Platform.Name]; found { params.Env["CGO_CFLAGS"] = flags } - - return multierr.Combine( - devtools.GolangCrossBuild(params), - devtools.TestLinuxForCentosGLIBC(), - ) + return params } // ----------------------------------------------------------------------------- diff --git a/x-pack/agentbeat/Makefile b/x-pack/agentbeat/Makefile new file mode 100644 index 00000000000..019d3b9309a --- /dev/null +++ b/x-pack/agentbeat/Makefile @@ -0,0 +1,3 @@ +ES_BEATS ?= ../.. + +include $(ES_BEATS)/dev-tools/make/mage.mk diff --git a/x-pack/agentbeat/agentbeat.spec.yml b/x-pack/agentbeat/agentbeat.spec.yml new file mode 100644 index 00000000000..6321a478e6f --- /dev/null +++ b/x-pack/agentbeat/agentbeat.spec.yml @@ -0,0 +1,567 @@ +version: 2 +inputs: + - name: audit/auditd + description: "Auditd" + platforms: &platforms + - linux/amd64 + - linux/arm64 + - darwin/amd64 + - darwin/arm64 + - windows/amd64 + - container/amd64 + - container/arm64 + outputs: &outputs + - elasticsearch + - kafka + - logstash + - redis + command: &auditbeat_command + restart_monitoring_period: 5s + maximum_restarts_per_period: 1 + timeouts: + restart: 1s + name: "auditbeat" + args: + - "auditbeat" + - "-E" + - "setup.ilm.enabled=false" + - "-E" + - "setup.template.enabled=false" + - "-E" + - "management.enabled=true" + - "-E" + - "management.restart_on_output_change=true" + - "-E" + - "logging.level=info" + - "-E" + - "logging.to_stderr=true" + - "-E" + - "gc_percent=${AUDITBEAT_GOGC:100}" + - "-E" + - "auditbeat.config.modules.enabled=false" + - name: audit/file_integrity + description: "Audit File Integrity" + platforms: *platforms + outputs: *outputs + command: *auditbeat_command + - name: audit/system + description: "Audit System" + platforms: *platforms + outputs: *outputs + command: *auditbeat_command + - name: aws-cloudwatch + description: "AWS Cloudwatch" + platforms: *platforms + outputs: *outputs + command: &filebeat_command + restart_monitoring_period: 5s + maximum_restarts_per_period: 1 + timeouts: + restart: 1s + args: + - "filebeat" + - "-E" + - "setup.ilm.enabled=false" + - "-E" + - "setup.template.enabled=false" + - "-E" + - "management.enabled=true" + - "-E" + - "management.restart_on_output_change=true" + - "-E" + - "logging.level=info" + - "-E" + - "logging.to_stderr=true" + - "-E" + - "gc_percent=${FILEBEAT_GOGC:100}" + - "-E" + - "filebeat.config.modules.enabled=false" + - name: aws-s3 + description: "AWS S3" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: azure-blob-storage + description: "Azure Blob Storage" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: azure-eventhub + description: "Azure Eventhub" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: cel + description: "Common Expression Language Input" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: cloudfoundry + description: "PCF Cloudfoundry" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: cometd + description: "CometD input" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: container + description: "Container logs" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: docker + aliases: + - log/docker + description: "Docker logs" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: entity-analytics + description: "Entity Analytics" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: etw + description: "Event Tracing for Windows" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: gcp-pubsub + description: "GCP Pub-Sub" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: gcs + description: "Google Cloud Storage" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: http_endpoint + description: "HTTP Endpoint" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: httpjson + description: "HTTP JSON Endpoint" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: journald + description: "Journald" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: kafka + description: "Kafka" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: log + aliases: + - logfile + - event/file + description: "Logfile" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: lumberjack + description: "Lumberjack" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: mqtt + description: "MQTT" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: netflow + description: "Netflow" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: o365audit + description: "Office 365 Audit" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: redis + aliases: + - log/redis_slowlog + description: "Redis" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: syslog + aliases: + - log/syslog + description: "Syslog" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: tcp + aliases: + - event/tcp + description: "TCP" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: udp + aliases: + - event/udp + description: "UDP" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: unix + description: "Unix Socket" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: winlog + description: "Winlog" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: filestream + description: "Filestream" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: websocket + description: "Websocket" + platforms: *platforms + outputs: *outputs + command: *filebeat_command + - name: synthetics/browser + description: "Synthetics Browser Monitor" + platforms: *platforms + outputs: *outputs + command: &heartbeat_command + restart_monitoring_period: 5s + maximum_restarts_per_period: 1 + timeouts: + restart: 1s + name: "heartbeat" + args: + - "heartbeat" + - "-E" + - "setup.ilm.enabled=false" + - "-E" + - "setup.template.enabled=false" + - "-E" + - "management.enabled=true" + - "-E" + - "management.restart_on_output_change=true" + - "-E" + - "logging.level=info" + - "-E" + - "logging.to_stderr=true" + - "-E" + - "gc_percent=${HEARTBEAT_GOGC:100}" + - name: synthetics/http + description: "Synthetics HTTP Monitor" + platforms: *platforms + outputs: *outputs + command: *heartbeat_command + - name: synthetics/icmp + description: "Synthetics ICMP Monitor" + platforms: *platforms + outputs: *outputs + command: *heartbeat_command + - name: synthetics/tcp + description: "Synthetics TCP Monitor" + platforms: *platforms + outputs: *outputs + command: *heartbeat_command + - name: beat/metrics + description: "Beat metrics" + platforms: *platforms + outputs: *outputs + command: &metricbeat_command + restart_monitoring_period: 5s + maximum_restarts_per_period: 1 + timeouts: + restart: 1s + name: "metricbeat" + args: + - "metricbeat" + - "-E" + - "setup.ilm.enabled=false" + - "-E" + - "setup.template.enabled=false" + - "-E" + - "management.enabled=true" + - "-E" + - "management.restart_on_output_change=true" + - "-E" + - "logging.level=info" + - "-E" + - "logging.to_stderr=true" + - "-E" + - "gc_percent=${METRICBEAT_GOGC:100}" + - "-E" + - "metricbeat.config.modules.enabled=false" + - name: docker/metrics + description: "Docker metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: elasticsearch/metrics + description: "Elasticsearch metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: enterprisesearch/metrics + description: "Enterprise search metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: kibana/metrics + description: "Kibana metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: kubernetes/metrics + description: "Kubernetes metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: linux/metrics + description: "Linux metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: logstash/metrics + description: "Logstash metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: mongodb/metrics + description: "Mongodb metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: mysql/metrics + description: "MySQL metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: postgresql/metrics + description: "PostgreSQL metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: redis/metrics + description: "Redis metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: system/metrics + description: "System metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: uwsgi/metrics + description: "UWSGI metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: windows/metrics + description: "Windows metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: aws/metrics + description: "AWS metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: awsfargate/metrics + description: "AWS Fargate metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: azure/metrics + description: "Azure metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: cloudfoundry/metrics + description: "PCF Cloudfoundry metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: containerd/metrics + description: "Containerd metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: mssql/metrics + description: "Microsoft SQL Server metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: oracle/metrics + description: "Oracle Database metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: syncgateway/metrics + description: "Couchbase Sync Gateway metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: http/metrics + description: "HTTP metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: activemq/metrics + description: "ActiveMQ metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: apache/metrics + description: "Apache metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: etcd/metrics + description: "Etcd metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: gcp/metrics + description: "GCP metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: haproxy/metrics + description: "HAProxy metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: iis/metrics + description: "IIS metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: jolokia/metrics + description: "Jolokia metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: kafka/metrics + description: "Kafka metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: memcached/metrics + description: "Memcached metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: nats/metrics + description: "NATS metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: nginx/metrics + description: "NGINX metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: prometheus/metrics + description: "Prometheus metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: rabbitmq/metrics + description: "RabbitMQ metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: sql/metrics + description: "SQL metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: stan/metrics + description: "Stan metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: statsd/metrics + description: "Statsd metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: traefik/metrics + description: "Traefik metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: vsphere/metrics + description: "VSphere metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: zookeeper/metrics + description: "ZooKeeper metrics" + platforms: *platforms + outputs: *outputs + command: *metricbeat_command + - name: osquery + description: "Osquery" + platforms: *platforms + outputs: *outputs + command: + restart_monitoring_period: 5s + maximum_restarts_per_period: 1 + timeouts: + restart: 1s + name: "osquerybeat" + args: + - "osquerybeat" + - "-E" + - "setup.ilm.enabled=false" + - "-E" + - "setup.template.enabled=false" + - "-E" + - "management.enabled=true" + - "-E" + - "management.restart_on_output_change=true" + - "-E" + - "logging.level=info" + - "-E" + - "logging.to_stderr=true" + - "-E" + - "gc_percent=${OSQUERYBEAT_GOGC:100}" + - name: packet + description: "Packet Capture" + platforms: *platforms + outputs: *outputs + command: + restart_monitoring_period: 5s + maximum_restarts_per_period: 1 + timeouts: + restart: 1s + name: "packetbeat" + args: + - "packetbeat" + - "-E" + - "setup.ilm.enabled=false" + - "-E" + - "setup.template.enabled=false" + - "-E" + - "management.enabled=true" + - "-E" + - "management.restart_on_output_change=true" + - "-E" + - "logging.level=info" + - "-E" + - "logging.to_stderr=true" + - "-E" + - "gc_percent=${PACKETBEAT_GOGC:100}" diff --git a/x-pack/agentbeat/dev-tools/packaging/packages.yml b/x-pack/agentbeat/dev-tools/packaging/packages.yml new file mode 100644 index 00000000000..b753d88bf2a --- /dev/null +++ b/x-pack/agentbeat/dev-tools/packaging/packages.yml @@ -0,0 +1,135 @@ +--- + +# This file contains the package specifications for Agentbeat. + +shared: + - &common + name: '{{.BeatName}}' + service_name: '{{.BeatServiceName}}' + os: '{{.GOOS}}' + arch: '{{.PackageArch}}' + vendor: '{{.BeatVendor}}' + version: '{{ beat_version }}' + license: '{{.BeatLicense}}' + url: '{{.BeatURL}}' + description: '{{.BeatDescription}}' + + - &binary_files + '{{.BeatName}}{{.BinaryExt}}': + source: build/golang-crossbuild/{{.BeatName}}-{{.GOOS}}-{{.Platform.Arch}}{{.BinaryExt}} + mode: 0755 + LICENSE.txt: + source: '{{ repo.RootDir }}/licenses/ELASTIC-LICENSE.txt' + mode: 0644 + NOTICE.txt: + source: '{{ repo.RootDir }}/NOTICE.txt' + mode: 0644 + README.md: + template: '{{ elastic_beats_dir }}/dev-tools/packaging/templates/common/README.md.tmpl' + mode: 0644 + .build_hash.txt: + content: > + {{ commit }} + mode: 0644 + '{{.BeatName}}.spec.yml': + source: '{{.BeatName}}.spec.yml' + mode: 0644 + + - &config_files + 'auditbeat.yml': + source: '{{ repo.RootDir }}/x-pack/auditbeat/auditbeat.yml' + mode: 0600 + config: true + 'filebeat.yml': + source: '{{ repo.RootDir }}/x-pack/filebeat/filebeat.yml' + mode: 0600 + config: true + 'heartbeat.yml': + source: '{{ repo.RootDir }}/x-pack/heartbeat/heartbeat.yml' + mode: 0600 + config: true + 'metricbeat.yml': + source: '{{ repo.RootDir }}/x-pack/metricbeat/metricbeat.yml' + mode: 0600 + config: true + 'osquerybeat.yml': + source: '{{ repo.RootDir }}/x-pack/osquerybeat/osquerybeat.yml' + mode: 0600 + config: true + 'packetbeat.yml': + source: '{{ repo.RootDir }}/x-pack/packetbeat/packetbeat.yml' + mode: 0600 + config: true + + - &unix_osquery_files + 'osquery-extension.ext': + source: '{{ repo.RootDir }}/x-pack/osquerybeat/ext/osquery-extension/build/golang-crossbuild/osquery-extension-{{.GOOS}}-{{.Platform.Arch}}{{.BinaryExt}}' + mode: 0755 + + - &windows_osquery_files + 'osquery-extension{{.BinaryExt}}': + source: '{{ repo.RootDir }}/x-pack/osquerybeat/ext/osquery-extension/build/golang-crossbuild/osquery-extension-{{.GOOS}}-{{.Platform.Arch}}{{.BinaryExt}}' + mode: 0755 + + # Binary package spec (tar.gz for linux/darwin) + - &unix_binary_spec + <<: *common + files: + <<: *binary_files + <<: *config_files + <<: *unix_osquery_files + + - &windows_binary_spec + <<: *common + files: + <<: *binary_files + <<: *config_files + <<: *windows_osquery_files + + # License modifiers for the Elastic License + - &elastic_license_for_binaries + license: "Elastic License" + files: + LICENSE.txt: + source: '{{ repo.RootDir }}/licenses/ELASTIC-LICENSE.txt' + mode: 0644 + +# specs is a list of named packaging "flavors". +specs: + agentbeat: + ### + # Elastic Licensed Packages + ### + - os: windows + types: [zip] + spec: + <<: *windows_binary_spec + <<: *elastic_license_for_binaries + + - os: darwin + arch: amd64 + types: [tgz] + spec: + <<: *unix_binary_spec + <<: *elastic_license_for_binaries + + - os: darwin + arch: arm64 + types: [tgz] + spec: + <<: *unix_binary_spec + <<: *elastic_license_for_binaries + + - os: linux + arch: amd64 + types: [tgz] + spec: + <<: *unix_binary_spec + <<: *elastic_license_for_binaries + + - os: linux + arch: arm64 + types: [tgz] + spec: + <<: *unix_binary_spec + <<: *elastic_license_for_binaries diff --git a/x-pack/agentbeat/docker-compose.yml b/x-pack/agentbeat/docker-compose.yml new file mode 100644 index 00000000000..5c98c9b459c --- /dev/null +++ b/x-pack/agentbeat/docker-compose.yml @@ -0,0 +1,26 @@ +version: '2.3' +services: + # This is a proxy used to block beats until all services are healthy. + # See: https://github.com/docker/compose/issues/4369 + proxy_dep: + image: busybox + depends_on: + elasticsearch: { condition: service_healthy } + cometd: { condition: service_healthy } + + elasticsearch: + extends: + file: ${ES_BEATS}/testing/environments/${STACK_ENVIRONMENT}.yml + service: elasticsearch + healthcheck: + test: ["CMD-SHELL", "curl -u admin:testing -s http://localhost:9200/_cat/health?h=status | grep -q green"] + retries: 300 + interval: 1s + ports: + - 9200:9200 + + cometd: + build: ${ES_BEATS}/testing/environments/docker/cometd + hostname: cometd + ports: + - 8080:8080 diff --git a/x-pack/agentbeat/magefile.go b/x-pack/agentbeat/magefile.go new file mode 100644 index 00000000000..571f87f7445 --- /dev/null +++ b/x-pack/agentbeat/magefile.go @@ -0,0 +1,194 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build mage + +package main + +import ( + "context" + "fmt" + "os" + "path/filepath" + "time" + + "github.com/magefile/mage/sh" + "go.uber.org/multierr" + + "github.com/magefile/mage/mg" + + devtools "github.com/elastic/beats/v7/dev-tools/mage" + "github.com/elastic/beats/v7/dev-tools/mage/target/build" + packetbeat "github.com/elastic/beats/v7/packetbeat/scripts/mage" + osquerybeat "github.com/elastic/beats/v7/x-pack/osquerybeat/scripts/mage" + + //mage:import + "github.com/elastic/beats/v7/dev-tools/mage/target/common" + //mage:import + _ "github.com/elastic/beats/v7/dev-tools/mage/target/integtest/docker" + //mage:import + _ "github.com/elastic/beats/v7/dev-tools/mage/target/test" +) + +// beats are the beats the agentbeat combines +var beats = []string{ + "auditbeat", + "filebeat", + "heartbeat", + "metricbeat", + "osquerybeat", + "packetbeat", +} + +func init() { + common.RegisterCheckDeps(Update) + + devtools.BeatDescription = "Combined beat ran only by the Elastic Agent" + devtools.BeatLicense = "Elastic License" + + // disabled from auditbeat (not supported by Elastic Agent either) + devtools.Platforms = devtools.Platforms.Filter("!linux/ppc64 !linux/mips64") +} + +// Build builds the Beat binary. +func Build() error { + args := devtools.DefaultBuildArgs() + if devtools.Platform.GOOS == "linux" { + args.ExtraFlags = append(args.ExtraFlags, "-tags=agentbeat,withjournald") + } else { + args.ExtraFlags = append(args.ExtraFlags, "-tags=agentbeat") + } + return devtools.Build(args) +} + +// BuildSystemTestBinary builds a binary instrumented for use with Python system tests. +func BuildSystemTestBinary() error { + args := devtools.DefaultTestBinaryArgs() + args.ExtraFlags = append(args.ExtraFlags, "-tags=agentbeat") + return devtools.BuildSystemTestGoBinary(args) +} + +// GolangCrossBuild build the Beat binary inside of the golang-builder. +// Do not use directly, use crossBuild instead. +func GolangCrossBuild() error { + // need packetbeat build arguments as it address the requirements for libpcap + args := packetbeat.GolangCrossBuildArgs() + if devtools.Platform.GOOS == "linux" { + args.ExtraFlags = append(args.ExtraFlags, "-tags=agentbeat,withjournald") + } else { + args.ExtraFlags = append(args.ExtraFlags, "-tags=agentbeat") + } + return multierr.Combine( + devtools.GolangCrossBuild(args), + devtools.TestLinuxForCentosGLIBC(), + ) +} + +// CrossBuild cross-builds the beat for all target platforms. +func CrossBuild() error { + return devtools.CrossBuild() +} + +// BuildGoDaemon builds the go-daemon binary (use crossBuildGoDaemon). +func BuildGoDaemon() error { + return devtools.BuildGoDaemon() +} + +// CrossBuildGoDaemon cross-builds the go-daemon binary using Docker. +func CrossBuildGoDaemon() error { + return devtools.CrossBuildGoDaemon() +} + +// AssembleDarwinUniversal merges the darwin/amd64 and darwin/arm64 into a single +// universal binary using `lipo`. It assumes the darwin/amd64 and darwin/arm64 +// were built and only performs the merge. +func AssembleDarwinUniversal() error { + return build.AssembleDarwinUniversal() +} + +// CrossBuildDeps cross-builds the required dependencies. +func CrossBuildDeps() error { + return callForBeat("crossBuildExt", "osquerybeat") +} + +// Package packages the Beat for distribution. +// Use SNAPSHOT=true to build snapshots. +// Use PLATFORMS to control the target platforms. +// Use VERSION_QUALIFIER to control the version qualifier. +func Package() { + start := time.Now() + defer func() { fmt.Println("package ran for", time.Since(start)) }() + + // specific packaging just for agentbeat + devtools.MustUsePackaging("agentbeat", "x-pack/agentbeat/dev-tools/packaging/packages.yml") + + // Add osquery distro binaries, required for the osquerybeat subcommand. + osquerybeat.CustomizePackaging() + + mg.SerialDeps(Update, osquerybeat.FetchOsqueryDistros, CrossBuildDeps, CrossBuild, devtools.Package, TestPackages) +} + +// TestPackages tests the generated packages (i.e. file modes, owners, groups). +func TestPackages() error { + return devtools.TestPackages() +} + +// Update is an alias for running fields, dashboards, config. +func Update() { + callForEachBeat("update") +} + +func callForEachBeat(target string) error { + for _, beat := range beats { + err := callForBeat(target, beat) + if err != nil { + return fmt.Errorf("failed to perform mage %s for beat %s: %w", target, beat, err) + } + } + return nil +} + +func callForBeat(target string, beat string) error { + path, err := os.Getwd() + if err != nil { + return fmt.Errorf("failed to getwd: %w", err) + } + path, err = filepath.Abs(path) + if err != nil { + return fmt.Errorf("failed to get abs path: %w", err) + } + fmt.Printf(">> Changing into %s directory\n", beat) + err = os.Chdir(filepath.Join("..", beat)) + if err != nil { + return fmt.Errorf("failed to chdir to %s: %w") + } + defer os.Chdir(path) + + fmt.Printf(">> Executing mage %s for %s\n", target, beat) + err = sh.RunV("mage", target) + if err != nil { + return fmt.Errorf("failed to exec: %w", err) + } + return nil +} + +// IntegTest executes integration tests (it uses Docker to run the tests). +func IntegTest() { + mg.SerialDeps(GoIntegTest, PythonIntegTest) +} + +// GoIntegTest starts the docker containers and executes the Go integration tests. +func GoIntegTest(ctx context.Context) error { + mg.Deps(BuildSystemTestBinary) + args := devtools.DefaultGoTestIntegrationFromHostArgs() + args.Tags = append(args.Tags, "agentbeat") + args.Packages = append(args.Packages, "../auditbeat/...", "../filebeat/...", "../heartbeat/...", "../metricbeat/...", "../osquerybeat/...", "../packetbeat/...") + return devtools.GoIntegTestFromHost(ctx, args) +} + +// PythonIntegTest starts the docker containers and executes the Python integration tests. +func PythonIntegTest(ctx context.Context) error { + mg.Deps(BuildSystemTestBinary) + return devtools.PythonIntegTestFromHost(devtools.DefaultPythonTestIntegrationFromHostArgs()) +} diff --git a/x-pack/agentbeat/main.go b/x-pack/agentbeat/main.go new file mode 100644 index 00000000000..d567e2eed08 --- /dev/null +++ b/x-pack/agentbeat/main.go @@ -0,0 +1,77 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package main + +import ( + "fmt" + "os" + + "github.com/elastic/beats/v7/libbeat/cfgfile" + "github.com/elastic/beats/v7/libbeat/cmd" + + "github.com/spf13/cobra" + + auditbeat "github.com/elastic/beats/v7/x-pack/auditbeat/cmd" + filebeat "github.com/elastic/beats/v7/x-pack/filebeat/cmd" + heartbeat "github.com/elastic/beats/v7/x-pack/heartbeat/cmd" + metricbeat "github.com/elastic/beats/v7/x-pack/metricbeat/cmd" + osquerybeat "github.com/elastic/beats/v7/x-pack/osquerybeat/cmd" + packetbeat "github.com/elastic/beats/v7/x-pack/packetbeat/cmd" +) + +func main() { + rootCmd := AgentBeat() + if err := rootCmd.Execute(); err != nil { + os.Exit(1) + } +} + +func AgentBeat() *cobra.Command { + rootCmd := &cobra.Command{ + Use: "agentbeat", + Short: "Combined beat ran only by the Elastic Agent", + Long: `Combines auditbeat, filebeat, heartbeat, metricbeat, osquerybeat, and packetbeat +into a single agentbeat binary.`, + Example: "agentbeat filebeat run", + } + + rootCmd.AddCommand( + prepareCommand(auditbeat.RootCmd), + prepareCommand(filebeat.Filebeat()), + prepareCommand(heartbeat.RootCmd), + prepareCommand(metricbeat.RootCmd), + prepareCommand(osquerybeat.RootCmd), + prepareCommand(packetbeat.RootCmd), + ) + + return rootCmd +} + +func prepareCommand(rootCmd *cmd.BeatsRootCmd) *cobra.Command { + var origPersistentPreRun func(cmd *cobra.Command, args []string) + var origPersistentPreRunE func(cmd *cobra.Command, args []string) error + origPersistentPreRun = rootCmd.PersistentPreRun + origPersistentPreRunE = rootCmd.PersistentPreRunE + rootCmd.PersistentPreRun = nil + rootCmd.PersistentPreRunE = func(cmd *cobra.Command, args []string) error { + // same logic is used inside of *cobra.Command; if both are set the E version is used instead + if origPersistentPreRunE != nil { + if err := origPersistentPreRunE(cmd, args); err != nil { + // no context is added by cobra, same approach here + return err + } + } else if origPersistentPreRun != nil { + origPersistentPreRun(cmd, args) + } + // must be set to the correct file before the actual Run is performed otherwise it will not be the correct + // filename, as all the beats set this in the initialization. + err := cfgfile.ChangeDefaultCfgfileFlag(rootCmd.Use) + if err != nil { + panic(fmt.Errorf("failed to set default config file path: %v", err)) + } + return nil + } + return &rootCmd.Command +} diff --git a/x-pack/agentbeat/main_test.go b/x-pack/agentbeat/main_test.go new file mode 100644 index 00000000000..4201d651666 --- /dev/null +++ b/x-pack/agentbeat/main_test.go @@ -0,0 +1,35 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. +package main + +// This file is mandatory as otherwise the agentbeat.test binary is not generated correctly. +import ( + "flag" + "os" + "testing" + + "github.com/spf13/cobra" +) + +var ( + systemTest *bool + abCommand *cobra.Command +) + +func init() { + testing.Init() + systemTest = flag.Bool("systemTest", false, "Set to true when running system tests") + abCommand = AgentBeat() + abCommand.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("systemTest")) + abCommand.PersistentFlags().AddGoFlag(flag.CommandLine.Lookup("test.coverprofile")) +} + +// Test started when the test binary is started. Only calls main. +func TestSystem(t *testing.T) { + if *systemTest { + if err := abCommand.Execute(); err != nil { + os.Exit(1) + } + } +} diff --git a/x-pack/auditbeat/cmd/root.go b/x-pack/auditbeat/cmd/root.go index 4a9b32b56f1..4e229c84922 100644 --- a/x-pack/auditbeat/cmd/root.go +++ b/x-pack/auditbeat/cmd/root.go @@ -8,21 +8,24 @@ import ( "fmt" "strings" + "github.com/spf13/cobra" + + "github.com/elastic/elastic-agent-client/v7/pkg/client" + "github.com/elastic/elastic-agent-client/v7/pkg/proto" + "github.com/elastic/elastic-agent-libs/mapstr" + auditbeatcmd "github.com/elastic/beats/v7/auditbeat/cmd" "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/common/reload" "github.com/elastic/beats/v7/libbeat/processors" + "github.com/elastic/beats/v7/x-pack/auditbeat/include" "github.com/elastic/beats/v7/x-pack/libbeat/management" - "github.com/elastic/elastic-agent-client/v7/pkg/client" - "github.com/elastic/elastic-agent-client/v7/pkg/proto" - "github.com/elastic/elastic-agent-libs/mapstr" - // Register Auditbeat x-pack modules. - _ "github.com/elastic/beats/v7/x-pack/auditbeat/include" - _ "github.com/elastic/beats/v7/x-pack/libbeat/include" + // Register base auditbeat includes. + _ "github.com/elastic/beats/v7/auditbeat/include" - // Import processors - _ "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd" + // Register libbeat x-pack modules. + _ "github.com/elastic/beats/v7/x-pack/libbeat/include" ) // Name of the beat @@ -57,14 +60,17 @@ func auditbeatCfg(rawIn *proto.UnitExpectedConfig, agentInfo *client.AgentInfo) } func init() { - management.ConfigTransform.SetTransform(auditbeatCfg) globalProcs, err := processors.NewPluginConfigFromList(defaultProcessors()) if err != nil { // these are hard-coded, shouldn't fail panic(fmt.Errorf("error creating global processors: %w", err)) } settings := auditbeatcmd.AuditbeatSettings(globalProcs) settings.ElasticLicensed = true + settings.Initialize = append(settings.Initialize, include.InitializeModule) RootCmd = auditbeatcmd.Initialize(settings) + RootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) { + management.ConfigTransform.SetTransform(auditbeatCfg) + } } func defaultProcessors() []mapstr.M { diff --git a/x-pack/auditbeat/include/list.go b/x-pack/auditbeat/include/list.go index ef700145292..d1f2add177b 100644 --- a/x-pack/auditbeat/include/list.go +++ b/x-pack/auditbeat/include/list.go @@ -7,7 +7,10 @@ package include import ( - // Import packages that need to register themselves. + // Import packages to perform 'func InitializeModule()' when in-use. + m0 "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd" + + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" _ "github.com/elastic/beats/v7/x-pack/auditbeat/module/system/host" _ "github.com/elastic/beats/v7/x-pack/auditbeat/module/system/login" @@ -16,3 +19,8 @@ import ( _ "github.com/elastic/beats/v7/x-pack/auditbeat/module/system/socket" _ "github.com/elastic/beats/v7/x-pack/auditbeat/module/system/user" ) + +// InitializeModules initialize all of the modules. +func InitializeModule() { + m0.InitializeModule() +} diff --git a/x-pack/auditbeat/magefile.go b/x-pack/auditbeat/magefile.go index 8ffbcc36e18..8ffcbf84c89 100644 --- a/x-pack/auditbeat/magefile.go +++ b/x-pack/auditbeat/magefile.go @@ -74,6 +74,15 @@ func AssembleDarwinUniversal() error { return build.AssembleDarwinUniversal() } +// GenerateIncludeListGo generates an include/list.go file containing imports +// for the packages that match the paths (or globs) in importDirs (optional) +// and moduleDirs (optional). +func GenerateModuleIncludeListGo() error { + opts := devtools.DefaultIncludeListOptions() + opts.ImportDirs = []string{"processors/*"} + return devtools.GenerateIncludeListGo(opts) +} + // Package packages the Beat for distribution. // Use SNAPSHOT=true to build snapshots. // Use PLATFORMS to control the target platforms. @@ -86,7 +95,7 @@ func Package() { devtools.PackageKibanaDashboardsFromBuildDir() auditbeat.CustomizePackaging(auditbeat.XPackPackaging) - mg.SerialDeps(Fields, Dashboards, Config, devtools.GenerateModuleIncludeListGo) + mg.SerialDeps(Update) mg.Deps(CrossBuild, CrossBuildGoDaemon) mg.SerialDeps(devtools.Package, TestPackages) } @@ -107,7 +116,7 @@ func TestPackages() error { // Update is an alias for running fields, dashboards, config. func Update() { - mg.SerialDeps(Fields, Dashboards, Config, devtools.GenerateModuleIncludeListGo) + mg.SerialDeps(Fields, Dashboards, Config, GenerateModuleIncludeListGo) } // Config generates both the short and reference configs. diff --git a/x-pack/auditbeat/main.go b/x-pack/auditbeat/main.go index 1c735eb34f1..d08d6d4c31a 100644 --- a/x-pack/auditbeat/main.go +++ b/x-pack/auditbeat/main.go @@ -8,13 +8,6 @@ import ( "os" "github.com/elastic/beats/v7/x-pack/auditbeat/cmd" - - // Register modules. - _ "github.com/elastic/beats/v7/auditbeat/module/auditd" - _ "github.com/elastic/beats/v7/auditbeat/module/file_integrity" - - // Register includes. - _ "github.com/elastic/beats/v7/auditbeat/include" ) func main() { diff --git a/x-pack/auditbeat/module/system/host/host.go b/x-pack/auditbeat/module/system/host/host.go index 1ce6b6be3dc..8ea3a899de2 100644 --- a/x-pack/auditbeat/module/system/host/host.go +++ b/x-pack/auditbeat/module/system/host/host.go @@ -18,9 +18,11 @@ import ( "github.com/cespare/xxhash/v2" "github.com/joeshaw/multierror" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/datastore" "github.com/elastic/beats/v7/libbeat/common/cfgwarn" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/go-sysinfo" @@ -28,7 +30,6 @@ import ( ) const ( - moduleName = "system" metricsetName = "host" namespace = "system.audit.host" @@ -181,7 +182,7 @@ func formatHardwareAddr(addr net.HardwareAddr) string { } func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithNamespace(namespace), ) @@ -199,11 +200,11 @@ type MetricSet struct { // New constructs a new MetricSet. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - cfgwarn.Beta("The %v/%v dataset is beta", moduleName, metricsetName) + cfgwarn.Beta("The %v/%v dataset is beta", system.ModuleName, metricsetName) config := defaultConfig() if err := base.Module().UnpackConfig(&config); err != nil { - return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", moduleName, metricsetName, err) + return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", system.ModuleName, metricsetName, err) } bucket, err := datastore.OpenBucket(bucketName) @@ -214,7 +215,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { ms := &MetricSet{ BaseMetricSet: base, config: config, - log: logp.NewLogger(moduleName), + log: logp.NewLogger(system.ModuleName), bucket: bucket, } diff --git a/x-pack/auditbeat/module/system/host/host_test.go b/x-pack/auditbeat/module/system/host/host_test.go index 813be7798a8..1d950e96cb5 100644 --- a/x-pack/auditbeat/module/system/host/host_test.go +++ b/x-pack/auditbeat/module/system/host/host_test.go @@ -7,15 +7,17 @@ package host import ( "testing" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" abtest "github.com/elastic/beats/v7/auditbeat/testing" mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" ) func TestData(t *testing.T) { defer abtest.SetupDataDir(t)() - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) events, errs := mbtest.ReportingFetchV2(f) if len(errs) > 0 { t.Fatalf("received error: %+v", errs[0]) @@ -29,7 +31,7 @@ func TestData(t *testing.T) { func getConfig() map[string]interface{} { return map[string]interface{}{ - "module": "system", + "module": system.ModuleName, "metricsets": []string{"host"}, } } diff --git a/x-pack/auditbeat/module/system/login/login.go b/x-pack/auditbeat/module/system/login/login.go index 1b63d3120bc..c61b9094545 100644 --- a/x-pack/auditbeat/module/system/login/login.go +++ b/x-pack/auditbeat/module/system/login/login.go @@ -11,15 +11,16 @@ import ( "net" "time" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/datastore" "github.com/elastic/beats/v7/libbeat/common/cfgwarn" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" ) const ( - moduleName = "system" metricsetName = "login" namespace = "system.audit.login" @@ -74,7 +75,7 @@ type LoginRecord struct { } func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithNamespace(namespace), ) @@ -90,11 +91,11 @@ type MetricSet struct { // New constructs a new MetricSet. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - cfgwarn.Beta("The %v/%v dataset is beta", moduleName, metricsetName) + cfgwarn.Beta("The %v/%v dataset is beta", system.ModuleName, metricsetName) config := defaultConfig() if err := base.Module().UnpackConfig(&config); err != nil { - return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", moduleName, metricsetName, err) + return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", system.ModuleName, metricsetName, err) } bucket, err := datastore.OpenBucket(bucketName) diff --git a/x-pack/auditbeat/module/system/login/login_other.go b/x-pack/auditbeat/module/system/login/login_other.go index d8fffef455c..d8ff9d5cc09 100644 --- a/x-pack/auditbeat/module/system/login/login_other.go +++ b/x-pack/auditbeat/module/system/login/login_other.go @@ -9,21 +9,22 @@ package login import ( "fmt" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" ) const ( - moduleName = "system" metricsetName = "login" ) func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), ) } // New returns an error. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", moduleName, metricsetName) + return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", system.ModuleName, metricsetName) } diff --git a/x-pack/auditbeat/module/system/login/login_test.go b/x-pack/auditbeat/module/system/login/login_test.go index d929a6f88d4..6a68f5cd11d 100644 --- a/x-pack/auditbeat/module/system/login/login_test.go +++ b/x-pack/auditbeat/module/system/login/login_test.go @@ -18,9 +18,11 @@ import ( "github.com/stretchr/testify/assert" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" abtest "github.com/elastic/beats/v7/auditbeat/testing" mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" "github.com/elastic/elastic-agent-libs/mapstr" ) @@ -34,7 +36,7 @@ func TestData(t *testing.T) { config := getBaseConfig() config["login.wtmp_file_pattern"] = "./testdata/wtmp" config["login.btmp_file_pattern"] = "" - f := mbtest.NewReportingMetricSetV2(t, config) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, config, ab.Registry) defer f.(*MetricSet).utmpReader.bucket.DeleteBucket() events, errs := mbtest.ReportingFetchV2(f) @@ -68,7 +70,7 @@ func TestWtmp(t *testing.T) { config := getBaseConfig() config["login.wtmp_file_pattern"] = wtmpFilepath config["login.btmp_file_pattern"] = "" - f := mbtest.NewReportingMetricSetV2(t, config) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, config, ab.Registry) defer f.(*MetricSet).utmpReader.bucket.DeleteBucket() events, errs := mbtest.ReportingFetchV2(f) @@ -180,7 +182,7 @@ func TestBtmp(t *testing.T) { config := getBaseConfig() config["login.wtmp_file_pattern"] = "" config["login.btmp_file_pattern"] = "./testdata/btmp*" - f := mbtest.NewReportingMetricSetV2(t, config) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, config, ab.Registry) defer f.(*MetricSet).utmpReader.bucket.DeleteBucket() events, errs := mbtest.ReportingFetchV2(f) @@ -268,7 +270,7 @@ func checkFieldValue(t *testing.T, mapstr mapstr.M, fieldName string, fieldValue func getBaseConfig() map[string]interface{} { return map[string]interface{}{ - "module": "system", + "module": system.ModuleName, "datasets": []string{"login"}, } } diff --git a/x-pack/auditbeat/module/system/package/package.go b/x-pack/auditbeat/module/system/package/package.go index 5af102fe28c..66d85bb7f17 100644 --- a/x-pack/auditbeat/module/system/package/package.go +++ b/x-pack/auditbeat/module/system/package/package.go @@ -26,6 +26,7 @@ import ( "github.com/joeshaw/multierror" "go.etcd.io/bbolt" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/datastore" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/x-pack/auditbeat/cache" @@ -35,7 +36,6 @@ import ( ) const ( - moduleName = "system" metricsetName = "package" namespace = "system.audit.package" @@ -93,7 +93,7 @@ func (action eventAction) Type() string { } func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithNamespace(namespace), ) @@ -203,7 +203,7 @@ func (pkg Package) entityID(hostID string) string { func New(base mb.BaseMetricSet) (mb.MetricSet, error) { config := defaultConfig() if err := base.Module().UnpackConfig(&config); err != nil { - return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", moduleName, metricsetName, err) + return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", system.ModuleName, metricsetName, err) } if err := datastore.Update(migrateDatastoreSchema); err != nil { diff --git a/x-pack/auditbeat/module/system/package/package_homebrew_test.go b/x-pack/auditbeat/module/system/package/package_homebrew_test.go index ab7a861aaff..3eeb7f3d14e 100644 --- a/x-pack/auditbeat/module/system/package/package_homebrew_test.go +++ b/x-pack/auditbeat/module/system/package/package_homebrew_test.go @@ -13,6 +13,7 @@ import ( "github.com/stretchr/testify/assert" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" abtest "github.com/elastic/beats/v7/auditbeat/testing" "github.com/elastic/beats/v7/libbeat/beat" @@ -41,7 +42,7 @@ func TestHomebrew(t *testing.T) { // Test whole dataset if on Darwin if runtime.GOOS == "darwin" { - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) defer deleteBucket(t, f) events, errs := mbtest.ReportingFetchV2(f) @@ -95,7 +96,7 @@ func TestHomebrewNotExist(t *testing.T) { // Test whole dataset if on Darwin if runtime.GOOS == "darwin" { - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) defer deleteBucket(t, f) events, errs := mbtest.ReportingFetchV2(f) diff --git a/x-pack/auditbeat/module/system/package/package_test.go b/x-pack/auditbeat/module/system/package/package_test.go index 55bbe56435b..f01c94aed71 100644 --- a/x-pack/auditbeat/module/system/package/package_test.go +++ b/x-pack/auditbeat/module/system/package/package_test.go @@ -17,18 +17,20 @@ import ( "github.com/stretchr/testify/assert" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" "github.com/elastic/beats/v7/auditbeat/datastore" abtest "github.com/elastic/beats/v7/auditbeat/testing" "github.com/elastic/beats/v7/metricbeat/mb" mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" "github.com/elastic/elastic-agent-libs/logp" ) func TestData(t *testing.T) { defer abtest.SetupDataDir(t)() - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) defer deleteBucket(t, f) events, errs := mbtest.ReportingFetchV2(f) @@ -67,7 +69,7 @@ func TestDpkg(t *testing.T) { t.Fatal(err) } - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) defer deleteBucket(t, f) events, errs := mbtest.ReportingFetchV2(f) @@ -126,7 +128,7 @@ func TestDpkgInstalledSize(t *testing.T) { t.Fatal(err) } - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) defer deleteBucket(t, f) events, errs := mbtest.ReportingFetchV2(f) @@ -158,7 +160,7 @@ func TestDpkgInstalledSize(t *testing.T) { func getConfig() map[string]interface{} { return map[string]interface{}{ - "module": "system", + "module": system.ModuleName, "datasets": []string{"package"}, } } diff --git a/x-pack/auditbeat/module/system/package/package_windows.go b/x-pack/auditbeat/module/system/package/package_windows.go index f484e61a5ba..7243ed4107e 100644 --- a/x-pack/auditbeat/module/system/package/package_windows.go +++ b/x-pack/auditbeat/module/system/package/package_windows.go @@ -10,20 +10,20 @@ import ( "fmt" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" ) const ( - moduleName = "system" metricsetName = "package" ) func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + mb.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), ) } // New returns an error. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - return nil, fmt.Errorf("the %v/%v dataset is not supported on Windows", moduleName, metricsetName) + return nil, fmt.Errorf("the %v/%v dataset is not supported on Windows", system.ModuleName, metricsetName) } diff --git a/x-pack/auditbeat/module/system/process/process.go b/x-pack/auditbeat/module/system/process/process.go index 08a72fe562e..b835a03bfb9 100644 --- a/x-pack/auditbeat/module/system/process/process.go +++ b/x-pack/auditbeat/module/system/process/process.go @@ -16,6 +16,7 @@ import ( "github.com/cespare/xxhash/v2" "github.com/gofrs/uuid" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/datastore" "github.com/elastic/beats/v7/auditbeat/helper/hasher" "github.com/elastic/beats/v7/libbeat/common/capabilities" @@ -30,7 +31,6 @@ import ( ) const ( - moduleName = "system" metricsetName = "process" namespace = "system.audit.process" @@ -81,7 +81,7 @@ func (action eventAction) Type() string { } func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithNamespace(namespace), ) @@ -146,11 +146,11 @@ func (p Process) entityID(hostID string) string { // New constructs a new MetricSet. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - cfgwarn.Beta("The %v/%v dataset is beta", moduleName, metricsetName) + cfgwarn.Beta("The %v/%v dataset is beta", system.ModuleName, metricsetName) config := defaultConfig if err := base.Module().UnpackConfig(&config); err != nil { - return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", moduleName, metricsetName, err) + return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", system.ModuleName, metricsetName, err) } bucket, err := datastore.OpenBucket(bucketName) diff --git a/x-pack/auditbeat/module/system/process/process_test.go b/x-pack/auditbeat/module/system/process/process_test.go index 1740667bf70..25508072f02 100644 --- a/x-pack/auditbeat/module/system/process/process_test.go +++ b/x-pack/auditbeat/module/system/process/process_test.go @@ -11,10 +11,12 @@ import ( "github.com/stretchr/testify/assert" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" "github.com/elastic/beats/v7/auditbeat/helper/hasher" abtest "github.com/elastic/beats/v7/auditbeat/testing" mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/go-sysinfo/types" ) @@ -22,7 +24,7 @@ import ( func TestData(t *testing.T) { defer abtest.SetupDataDir(t)() - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) // Set lastState and add test process to cache so it will be reported as stopped. f.(*MetricSet).lastState = time.Now() @@ -44,7 +46,7 @@ func TestData(t *testing.T) { func getConfig() map[string]interface{} { return map[string]interface{}{ - "module": "system", + "module": system.ModuleName, "datasets": []string{"process"}, // To speed things up during testing, we effectively @@ -54,7 +56,7 @@ func getConfig() map[string]interface{} { } func TestProcessEvent(t *testing.T) { - ms := mbtest.NewReportingMetricSetV2(t, getConfig()).(*MetricSet) + ms := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry).(*MetricSet) eventType := eventTypeEvent eventAction := eventActionProcessStarted diff --git a/x-pack/auditbeat/module/system/socket/socket_linux.go b/x-pack/auditbeat/module/system/socket/socket_linux.go index b334b848892..cae8aaa9d80 100644 --- a/x-pack/auditbeat/module/system/socket/socket_linux.go +++ b/x-pack/auditbeat/module/system/socket/socket_linux.go @@ -23,6 +23,7 @@ import ( "golang.org/x/sys/unix" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/tracing" "github.com/elastic/beats/v7/libbeat/common" "github.com/elastic/beats/v7/libbeat/common/cfgwarn" @@ -42,9 +43,8 @@ import ( ) const ( - moduleName = "system" metricsetName = "socket" - fullName = moduleName + "/" + metricsetName + fullName = system.ModuleName + "/" + metricsetName namespace = "system.audit.socket" detailSelector = metricsetName + "detailed" groupNamePrefix = "auditbeat_" @@ -80,7 +80,7 @@ type MetricSet struct { } func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithNamespace(namespace), ) diff --git a/x-pack/auditbeat/module/system/socket/socket_other.go b/x-pack/auditbeat/module/system/socket/socket_other.go index f2541119378..8e584ab3fda 100644 --- a/x-pack/auditbeat/module/system/socket/socket_other.go +++ b/x-pack/auditbeat/module/system/socket/socket_other.go @@ -9,21 +9,22 @@ package socket import ( "fmt" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" ) const ( - moduleName = "system" metricsetName = "socket" ) func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), ) } // New returns an error. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", moduleName, metricsetName) + return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", system.ModuleName, metricsetName) } diff --git a/x-pack/auditbeat/module/system/socket/state_test.go b/x-pack/auditbeat/module/system/socket/state_test.go index fd3e125cc40..73c52c80af7 100644 --- a/x-pack/auditbeat/module/system/socket/state_test.go +++ b/x-pack/auditbeat/module/system/socket/state_test.go @@ -21,6 +21,7 @@ import ( "github.com/elastic/beats/v7/auditbeat/tracing" "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" "github.com/elastic/beats/v7/x-pack/auditbeat/module/system/socket/dns" ) @@ -50,7 +51,7 @@ type testingState struct { } func (ts *testingState) Event(event mb.Event) bool { - ts.flows = append(ts.flows, event.BeatEvent(moduleName, metricsetName)) + ts.flows = append(ts.flows, event.BeatEvent(system.ModuleName, metricsetName)) return true } diff --git a/x-pack/auditbeat/module/system/system.go b/x-pack/auditbeat/module/system/system.go index f9b82604f6e..41da45a9751 100644 --- a/x-pack/auditbeat/module/system/system.go +++ b/x-pack/auditbeat/module/system/system.go @@ -5,18 +5,20 @@ package system import ( + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/go-sysinfo" ) const ( - moduleName = "system" + // ModuleName is the name for this module. + ModuleName = "system" ) func init() { // Register the custom ModuleFactory function for the system module. - if err := mb.Registry.AddModule(moduleName, NewModule); err != nil { + if err := ab.Registry.AddModule(ModuleName, NewModule); err != nil { panic(err) } } @@ -52,7 +54,7 @@ func NewModule(base mb.BaseModule) (mb.Module, error) { return nil, err } - log := logp.NewLogger(moduleName) + log := logp.NewLogger(ModuleName) var hostID string if hostInfo, err := sysinfo.Host(); err != nil { diff --git a/x-pack/auditbeat/module/system/user/user.go b/x-pack/auditbeat/module/system/user/user.go index c65f8a8ad29..3220c7ffeb4 100644 --- a/x-pack/auditbeat/module/system/user/user.go +++ b/x-pack/auditbeat/module/system/user/user.go @@ -22,6 +22,7 @@ import ( "github.com/gofrs/uuid" "github.com/joeshaw/multierror" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/datastore" "github.com/elastic/beats/v7/libbeat/common/cfgwarn" "github.com/elastic/beats/v7/metricbeat/mb" @@ -32,7 +33,6 @@ import ( ) const ( - moduleName = "system" metricsetName = "user" namespace = "system.audit.user" @@ -208,7 +208,7 @@ func (u User) entityID(hostID string) string { } func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), mb.WithNamespace(namespace), ) @@ -228,14 +228,14 @@ type MetricSet struct { // New constructs a new MetricSet. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - cfgwarn.Beta("The %v/%v dataset is beta", moduleName, metricsetName) + cfgwarn.Beta("The %v/%v dataset is beta", system.ModuleName, metricsetName) if runtime.GOOS != "linux" { - return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", moduleName, metricsetName) + return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", system.ModuleName, metricsetName) } config := defaultConfig() if err := base.Module().UnpackConfig(&config); err != nil { - return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", moduleName, metricsetName, err) + return nil, fmt.Errorf("failed to unpack the %v/%v config: %w", system.ModuleName, metricsetName, err) } bucket, err := datastore.OpenBucket(bucketName) diff --git a/x-pack/auditbeat/module/system/user/user_test.go b/x-pack/auditbeat/module/system/user/user_test.go index e8e40ab63b1..fbab00d8b48 100644 --- a/x-pack/auditbeat/module/system/user/user_test.go +++ b/x-pack/auditbeat/module/system/user/user_test.go @@ -13,15 +13,17 @@ import ( "github.com/stretchr/testify/require" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/core" abtest "github.com/elastic/beats/v7/auditbeat/testing" mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" ) func TestData(t *testing.T) { defer abtest.SetupDataDir(t)() - f := mbtest.NewReportingMetricSetV2(t, getConfig()) + f := mbtest.NewReportingMetricSetV2WithRegistry(t, getConfig(), ab.Registry) // Set lastState and add test process to cache so it will be reported as stopped. f.(*MetricSet).lastState = time.Now() @@ -78,7 +80,7 @@ func testUser() *User { func getConfig() map[string]interface{} { return map[string]interface{}{ - "module": "system", + "module": system.ModuleName, "metricsets": []string{"user"}, // Would require root access to /etc/shadow diff --git a/x-pack/auditbeat/module/system/user/users_other.go b/x-pack/auditbeat/module/system/user/users_other.go index a492a284e3b..86dc09a0a1a 100644 --- a/x-pack/auditbeat/module/system/user/users_other.go +++ b/x-pack/auditbeat/module/system/user/users_other.go @@ -9,21 +9,22 @@ package user import ( "fmt" + "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/auditbeat/module/system" ) const ( - moduleName = "system" metricsetName = "user" ) func init() { - mb.Registry.MustAddMetricSet(moduleName, metricsetName, New, + ab.Registry.MustAddMetricSet(system.ModuleName, metricsetName, New, mb.DefaultMetricSet(), ) } // New returns an error. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", moduleName, metricsetName) + return nil, fmt.Errorf("the %v/%v dataset is only supported on Linux", system.ModuleName, metricsetName) } diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go index 50636f9d476..4cc2d64a47b 100644 --- a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go @@ -29,7 +29,8 @@ const ( logName = "processor." + processorName ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { processors.RegisterPlugin(processorName, New) } diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata_other.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_other.go new file mode 100644 index 00000000000..89e96f82f91 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_other.go @@ -0,0 +1,12 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build !linux + +package sessionmd + +// InitializeModule initializes this module. +func InitializeModule() { + // does nothing +} diff --git a/x-pack/filebeat/cmd/root.go b/x-pack/filebeat/cmd/root.go index 77dadde7b16..b348647b508 100644 --- a/x-pack/filebeat/cmd/root.go +++ b/x-pack/filebeat/cmd/root.go @@ -8,16 +8,19 @@ import ( "fmt" "os" + "github.com/spf13/cobra" + + "github.com/elastic/elastic-agent-libs/mapstr" + fbcmd "github.com/elastic/beats/v7/filebeat/cmd" cmd "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/processors" "github.com/elastic/beats/v7/libbeat/publisher/processing" + "github.com/elastic/beats/v7/x-pack/filebeat/include" + inputs "github.com/elastic/beats/v7/x-pack/filebeat/input/default-inputs" "github.com/elastic/beats/v7/x-pack/libbeat/management" - "github.com/elastic/elastic-agent-libs/mapstr" // Register the includes. - _ "github.com/elastic/beats/v7/x-pack/filebeat/include" - inputs "github.com/elastic/beats/v7/x-pack/filebeat/input/default-inputs" _ "github.com/elastic/beats/v7/x-pack/libbeat/include" ) @@ -26,7 +29,6 @@ const Name = fbcmd.Name // Filebeat build the beat root command for executing filebeat and it's subcommands. func Filebeat() *cmd.BeatsRootCmd { - management.ConfigTransform.SetTransform(filebeatCfg) settings := fbcmd.FilebeatSettings() globalProcs, err := processors.NewPluginConfigFromList(defaultProcessors()) if err != nil { // these are hard-coded, shouldn't fail @@ -34,7 +36,11 @@ func Filebeat() *cmd.BeatsRootCmd { } settings.Processing = processing.MakeDefaultSupport(true, globalProcs, processing.WithECS, processing.WithHost, processing.WithAgentMeta()) settings.ElasticLicensed = true + settings.Initialize = append(settings.Initialize, include.InitializeModule) command := fbcmd.Filebeat(inputs.Init, settings) + command.PersistentPreRun = func(cmd *cobra.Command, args []string) { + management.ConfigTransform.SetTransform(filebeatCfg) + } return command } diff --git a/x-pack/filebeat/include/list.go b/x-pack/filebeat/include/list.go index 43b6758766e..dea47c250cb 100644 --- a/x-pack/filebeat/include/list.go +++ b/x-pack/filebeat/include/list.go @@ -7,7 +7,12 @@ package include import ( - // Import packages that need to register themselves. + // Import packages to perform 'func InitializeModule()' when in-use. + m0 "github.com/elastic/beats/v7/x-pack/filebeat/processors/add_nomad_metadata" + m1 "github.com/elastic/beats/v7/x-pack/filebeat/processors/aws_vpcflow" + m2 "github.com/elastic/beats/v7/x-pack/filebeat/processors/decode_cef" + + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/x-pack/filebeat/input/awscloudwatch" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/awss3" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/azureeventhub" @@ -65,7 +70,11 @@ import ( _ "github.com/elastic/beats/v7/x-pack/filebeat/module/zookeeper" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/zoom" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/zscaler" - _ "github.com/elastic/beats/v7/x-pack/filebeat/processors/add_nomad_metadata" - _ "github.com/elastic/beats/v7/x-pack/filebeat/processors/aws_vpcflow" - _ "github.com/elastic/beats/v7/x-pack/filebeat/processors/decode_cef" ) + +// InitializeModules initialize all of the modules. +func InitializeModule() { + m0.InitializeModule() + m1.InitializeModule() + m2.InitializeModule() +} diff --git a/x-pack/filebeat/processors/add_nomad_metadata/matchers.go b/x-pack/filebeat/processors/add_nomad_metadata/matchers.go index 55c5252f7c0..4c6c3c7159c 100644 --- a/x-pack/filebeat/processors/add_nomad_metadata/matchers.go +++ b/x-pack/filebeat/processors/add_nomad_metadata/matchers.go @@ -26,7 +26,8 @@ const ( // const allocIDTypeRegex = "([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}).*(stdout|stderr)" -func init() { +// InitializeModule initializes all the options for the `add_nomad_metadata` process for filebeat. +func InitializeModule() { add_nomad_metadata.Indexing.AddMatcher(LogPathMatcherName, newLogsPathMatcher) cfg := conf.NewConfig() diff --git a/x-pack/filebeat/processors/aws_vpcflow/parse_aws_vpc_flow_log.go b/x-pack/filebeat/processors/aws_vpcflow/parse_aws_vpc_flow_log.go index 8cd12ca325e..c1ff1632699 100644 --- a/x-pack/filebeat/processors/aws_vpcflow/parse_aws_vpc_flow_log.go +++ b/x-pack/filebeat/processors/aws_vpcflow/parse_aws_vpc_flow_log.go @@ -24,7 +24,8 @@ const ( logName = "processor." + procName ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { processors.RegisterPlugin(procName, New) jsprocessor.RegisterPlugin("ParseAWSVPCFlowLog", New) } diff --git a/x-pack/filebeat/processors/decode_cef/decode_cef.go b/x-pack/filebeat/processors/decode_cef/decode_cef.go index 338b44056d5..2e42f846eae 100644 --- a/x-pack/filebeat/processors/decode_cef/decode_cef.go +++ b/x-pack/filebeat/processors/decode_cef/decode_cef.go @@ -25,7 +25,8 @@ const ( logName = "processor." + procName ) -func init() { +// InitializeModule initializes this module. +func InitializeModule() { processors.RegisterPlugin(procName, New) } diff --git a/x-pack/filebeat/tests/integration/creator_agentbeat_test.go b/x-pack/filebeat/tests/integration/creator_agentbeat_test.go new file mode 100644 index 00000000000..3a62d20732b --- /dev/null +++ b/x-pack/filebeat/tests/integration/creator_agentbeat_test.go @@ -0,0 +1,17 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build integration && agentbeat + +package integration + +import ( + "testing" + + "github.com/elastic/beats/v7/libbeat/tests/integration" +) + +func NewFilebeat(t *testing.T) *integration.BeatProc { + return integration.NewAgentBeat(t, "filebeat", "../../../agentbeat/agentbeat.test") +} diff --git a/x-pack/filebeat/tests/integration/creator_base_test.go b/x-pack/filebeat/tests/integration/creator_base_test.go new file mode 100644 index 00000000000..b278563255c --- /dev/null +++ b/x-pack/filebeat/tests/integration/creator_base_test.go @@ -0,0 +1,17 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build integration && !agentbeat + +package integration + +import ( + "testing" + + "github.com/elastic/beats/v7/libbeat/tests/integration" +) + +func NewFilebeat(t *testing.T) *integration.BeatProc { + return integration.NewBeat(t, "filebeat", "../../filebeat.test") +} diff --git a/x-pack/filebeat/tests/integration/managerV2_test.go b/x-pack/filebeat/tests/integration/managerV2_test.go index b541b8d5409..1a35aae7d0a 100644 --- a/x-pack/filebeat/tests/integration/managerV2_test.go +++ b/x-pack/filebeat/tests/integration/managerV2_test.go @@ -72,11 +72,7 @@ func TestInputReloadUnderElasticAgent(t *testing.T) { // what caused it is going through Filebeat's logs. integration.EnsureESIsRunning(t) - filebeat := integration.NewBeat( - t, - "filebeat", - "../../filebeat.test", - ) + filebeat := NewFilebeat(t) logFilePath := filepath.Join(filebeat.TempDir(), "flog.log") generateLogFile(t, logFilePath) @@ -290,11 +286,7 @@ func TestFailedOutputReportsUnhealthy(t *testing.T) { // If ES is not running, the test will timeout and the only way to know // what caused it is going through Filebeat's logs. integration.EnsureESIsRunning(t) - filebeat := integration.NewBeat( - t, - "filebeat", - "../../filebeat.test", - ) + filebeat := NewFilebeat(t) finalStateReached := atomic.Bool{} var units = []*proto.UnitExpected{ @@ -375,11 +367,7 @@ func TestFailedOutputReportsUnhealthy(t *testing.T) { } func TestRecoverFromInvalidOutputConfiguration(t *testing.T) { - filebeat := integration.NewBeat( - t, - "filebeat", - "../../filebeat.test", - ) + filebeat := NewFilebeat(t) // Having the log file enables the inputs to start, while it is not // strictly necessary for testing output issues, it allows for the @@ -533,11 +521,7 @@ func TestRecoverFromInvalidOutputConfiguration(t *testing.T) { func TestAgentPackageVersionOnStartUpInfo(t *testing.T) { wantVersion := "8.13.0+build20131123" - filebeat := integration.NewBeat( - t, - "filebeat", - "../../filebeat.test", - ) + filebeat := NewFilebeat(t) logFilePath := filepath.Join(filebeat.TempDir(), "logs-to-ingest.log") generateLogFile(t, logFilePath) diff --git a/x-pack/filebeat/tests/integration/shipper_test.go b/x-pack/filebeat/tests/integration/shipper_test.go index 9b650c525b8..803258bd8cc 100644 --- a/x-pack/filebeat/tests/integration/shipper_test.go +++ b/x-pack/filebeat/tests/integration/shipper_test.go @@ -64,7 +64,7 @@ func TestShipperInputOutput(t *testing.T) { cfg := `filebeat.inputs: - type: filestream - id: my-filestream-id + id: my-filestream-id paths: - %s output.elasticsearch: @@ -99,7 +99,7 @@ processors: type: metricbeat ` // check that file can be ingested normally and found in elasticsearch - filebeat := integration.NewBeat(t, "filebeat", "../../filebeat.test") + filebeat := NewFilebeat(t) filebeat.WriteConfigFile(fmt.Sprintf(cfg, inputFilePath, esURL.Host, esURL.User.Username(), esPassword, kURL.Host, kUserInfo.Username(), kPassword, uniqMsg)) filebeat.Start() filebeat.WaitForLogs("Publish event: ", 10*time.Second) @@ -125,7 +125,7 @@ processors: shipperCfg := `filebeat.inputs: - type: shipper server: unix://%s - id: my-shipper-id + id: my-shipper-id data_stream: data_set: generic type: log @@ -148,14 +148,14 @@ queue.mem: flush.min_events: 0 ` // start a shipper filebeat, wait until gRPC service starts - shipper := integration.NewBeat(t, "filebeat", "../../filebeat.test") + shipper := NewFilebeat(t) shipper.WriteConfigFile(fmt.Sprintf(shipperCfg, gRpcPath, esURL.Host, esURL.User.Username(), esPassword, kURL.Host, kUserInfo.Username(), kPassword)) shipper.Start() shipper.WaitForLogs("done setting up gRPC server", 30*time.Second) fb2shipperCfg := `filebeat.inputs: - type: filestream - id: my-filestream-id + id: my-filestream-id paths: - %s output.shipper: @@ -191,7 +191,7 @@ processors: type: metricbeat ` // start filebeat with shipper output, make doc is ingested into elasticsearch - fb2shipper := integration.NewBeat(t, "filebeat", "../../filebeat.test") + fb2shipper := NewFilebeat(t) fb2shipper.WriteConfigFile(fmt.Sprintf(fb2shipperCfg, inputFilePath, gRpcPath, kURL.Host, kUserInfo.Username(), kPassword, uniqMsg)) fb2shipper.Start() fb2shipper.WaitForLogs("Publish event: ", 10*time.Second) diff --git a/x-pack/heartbeat/cmd/root.go b/x-pack/heartbeat/cmd/root.go index 32e73104a01..a51397cd697 100644 --- a/x-pack/heartbeat/cmd/root.go +++ b/x-pack/heartbeat/cmd/root.go @@ -7,12 +7,15 @@ package cmd import ( "fmt" + "github.com/spf13/cobra" + heartbeatCmd "github.com/elastic/beats/v7/heartbeat/cmd" "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/common/reload" "github.com/elastic/elastic-agent-client/v7/pkg/client" "github.com/elastic/elastic-agent-client/v7/pkg/proto" + _ "github.com/elastic/beats/v7/heartbeat/include" _ "github.com/elastic/beats/v7/x-pack/libbeat/include" "github.com/elastic/beats/v7/x-pack/libbeat/management" ) @@ -42,8 +45,10 @@ func TransformRawIn(rawIn *proto.UnitExpectedConfig) []map[string]interface{} { } func init() { - management.ConfigTransform.SetTransform(heartbeatCfg) settings := heartbeatCmd.HeartbeatSettings() settings.ElasticLicensed = true RootCmd = heartbeatCmd.Initialize(settings) + RootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) { + management.ConfigTransform.SetTransform(heartbeatCfg) + } } diff --git a/x-pack/heartbeat/include/list.go b/x-pack/heartbeat/include/list.go new file mode 100644 index 00000000000..20ea9d71688 --- /dev/null +++ b/x-pack/heartbeat/include/list.go @@ -0,0 +1,12 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +// Code generated by beats/dev-tools/cmd/module_include_list/module_include_list.go - DO NOT EDIT. + +package include + +import ( + // Import packages that perform 'func init()'. + _ "github.com/elastic/beats/v7/x-pack/heartbeat/monitors/browser" +) diff --git a/x-pack/heartbeat/magefile.go b/x-pack/heartbeat/magefile.go index cca60d23417..8e7cd7f664f 100644 --- a/x-pack/heartbeat/magefile.go +++ b/x-pack/heartbeat/magefile.go @@ -74,9 +74,15 @@ func TestPackages() error { return devtools.TestPackages(devtools.WithMonitorsD()) } +func GenerateModuleIncludeListGo() error { + opts := devtools.DefaultIncludeListOptions() + opts.ImportDirs = append(opts.ImportDirs, "monitors/*") + return devtools.GenerateIncludeListGo(opts) +} + // Update updates the generated files (aka make update). func Update() { - mg.SerialDeps(Fields, FieldDocs, Config) + mg.SerialDeps(Fields, FieldDocs, Config, GenerateModuleIncludeListGo) } func IntegTest() { diff --git a/x-pack/heartbeat/main.go b/x-pack/heartbeat/main.go index 2cd061dff30..c7bab476499 100644 --- a/x-pack/heartbeat/main.go +++ b/x-pack/heartbeat/main.go @@ -7,7 +7,6 @@ package main import ( "os" - _ "github.com/elastic/beats/v7/heartbeat/include" "github.com/elastic/beats/v7/x-pack/heartbeat/cmd" ) diff --git a/x-pack/metricbeat/cmd/root.go b/x-pack/metricbeat/cmd/root.go index 455eb335e19..76ac0929440 100644 --- a/x-pack/metricbeat/cmd/root.go +++ b/x-pack/metricbeat/cmd/root.go @@ -8,6 +8,7 @@ import ( "flag" "fmt" + "github.com/spf13/cobra" "github.com/spf13/pflag" "github.com/elastic/beats/v7/libbeat/cmd" @@ -46,7 +47,6 @@ var withECSVersion = processing.WithFields(mapstr.M{ }) func init() { - management.ConfigTransform.SetTransform(metricbeatCfg) var runFlags = pflag.NewFlagSet(Name, pflag.ExitOnError) runFlags.AddGoFlag(flag.CommandLine.Lookup("system.hostfs")) globalProcs, err := processors.NewPluginConfigFromList(defaultProcessors()) @@ -63,6 +63,9 @@ func init() { RootCmd = cmd.GenRootCmdWithSettings(beater.DefaultCreator(), settings) RootCmd.AddCommand(cmd.GenModulesCmd(Name, "", mbcmd.BuildModulesManager)) RootCmd.TestCmd.AddCommand(test.GenTestModulesCmd(Name, "", beater.DefaultTestModulesCreator())) + RootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) { + management.ConfigTransform.SetTransform(metricbeatCfg) + } } func defaultProcessors() []mapstr.M { diff --git a/x-pack/metricbeat/include/list.go b/x-pack/metricbeat/include/list.go index 0cbedc06dd4..dc482961ebc 100644 --- a/x-pack/metricbeat/include/list.go +++ b/x-pack/metricbeat/include/list.go @@ -7,7 +7,7 @@ package include import ( - // Import packages that need to register themselves. + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/activemq" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/airflow" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws" diff --git a/x-pack/osquerybeat/beater/osquerybeat.go b/x-pack/osquerybeat/beater/osquerybeat.go index 3ed9c44133b..bb82525a5d5 100644 --- a/x-pack/osquerybeat/beater/osquerybeat.go +++ b/x-pack/osquerybeat/beater/osquerybeat.go @@ -18,9 +18,10 @@ import ( klogger "github.com/osquery/osquery-go/plugin/logger" "golang.org/x/sync/errgroup" - "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/x-pack/libbeat/common/proc" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/config" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/distro" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/osqd" @@ -128,6 +129,12 @@ func (bt *osquerybeat) close() { // Run starts osquerybeat. func (bt *osquerybeat) Run(b *beat.Beat) error { + pj, err := proc.CreateJobObject() + if err != nil { + return fmt.Errorf("failed to create process JobObject: %w", err) + } + defer pj.Close() + ctx, err := bt.init() if err != nil { return err diff --git a/x-pack/osquerybeat/cmd/root.go b/x-pack/osquerybeat/cmd/root.go index 75bee5a6552..73584ec06f1 100644 --- a/x-pack/osquerybeat/cmd/root.go +++ b/x-pack/osquerybeat/cmd/root.go @@ -7,6 +7,13 @@ package cmd import ( "fmt" + "github.com/spf13/cobra" + + "github.com/elastic/elastic-agent-client/v7/pkg/client" + "github.com/elastic/elastic-agent-client/v7/pkg/proto" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" + cmd "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/cmd/instance" "github.com/elastic/beats/v7/libbeat/common/cli" @@ -14,16 +21,10 @@ import ( "github.com/elastic/beats/v7/libbeat/ecs" "github.com/elastic/beats/v7/libbeat/processors" "github.com/elastic/beats/v7/libbeat/publisher/processing" - "github.com/elastic/beats/v7/x-pack/libbeat/management" - "github.com/elastic/elastic-agent-client/v7/pkg/client" - "github.com/elastic/elastic-agent-client/v7/pkg/proto" - "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/elastic-agent-libs/mapstr" - - "github.com/spf13/cobra" - _ "github.com/elastic/beats/v7/x-pack/libbeat/include" + "github.com/elastic/beats/v7/x-pack/libbeat/management" "github.com/elastic/beats/v7/x-pack/osquerybeat/beater" + _ "github.com/elastic/beats/v7/x-pack/osquerybeat/include" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/config" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/install" ) @@ -43,7 +44,6 @@ var withECSVersion = processing.WithFields(mapstr.M{ var RootCmd = Osquerybeat() func Osquerybeat() *cmd.BeatsRootCmd { - management.ConfigTransform.SetTransform(osquerybeatCfg) globalProcs, err := processors.NewPluginConfigFromList(defaultProcessors()) if err != nil { // these are hard-coded, shouldn't fail panic(fmt.Errorf("error creating global processors: %w", err)) @@ -54,6 +54,9 @@ func Osquerybeat() *cmd.BeatsRootCmd { ElasticLicensed: true, } command := cmd.GenRootCmdWithSettings(beater.New, settings) + command.PersistentPreRun = func(cmd *cobra.Command, args []string) { + management.ConfigTransform.SetTransform(osquerybeatCfg) + } // Add verify command command.AddCommand(genVerifyCmd(settings)) diff --git a/x-pack/osquerybeat/magefile.go b/x-pack/osquerybeat/magefile.go index 842f9333e02..7a21869ffd1 100644 --- a/x-pack/osquerybeat/magefile.go +++ b/x-pack/osquerybeat/magefile.go @@ -39,23 +39,34 @@ func init() { devtools.BeatLicense = "Elastic License" } +func Fmt() { + mg.Deps(devtools.Format) +} + +func AddLicenseHeaders() { + mg.Deps(devtools.AddLicenseHeaders) +} + func Check() error { return devtools.Check() } func Build() error { - params := devtools.DefaultBuildArgs() - // Building osquerybeat - err := devtools.Build(params) + err := devtools.Build(devtools.DefaultBuildArgs()) if err != nil { return err } + return BuildExt() +} +// BuildExt builds the osquery-extension. +func BuildExt() error { + params := devtools.DefaultBuildArgs() params.InputFiles = []string{"./ext/osquery-extension/."} params.Name = "osquery-extension" params.CGO = false - err = devtools.Build(params) + err := devtools.Build(params) if err != nil { return err } @@ -67,7 +78,6 @@ func Build() error { return err } } - return nil } @@ -182,12 +192,12 @@ func CrossBuild() error { if err != nil { return err } + return CrossBuildExt() +} - err = devtools.CrossBuild(devtools.InDir("x-pack", "osquerybeat", "ext", "osquery-extension")) - if err != nil { - return err - } - return nil +// CrossBuildExt cross-builds the osquery-extension. +func CrossBuildExt() error { + return devtools.CrossBuild(devtools.InDir("x-pack", "osquerybeat", "ext", "osquery-extension")) } // CrossBuildGoDaemon cross-builds the go-daemon binary using Docker. diff --git a/x-pack/osquerybeat/main.go b/x-pack/osquerybeat/main.go index cd21e4f9bca..ee2d6597729 100644 --- a/x-pack/osquerybeat/main.go +++ b/x-pack/osquerybeat/main.go @@ -5,23 +5,12 @@ package main import ( - "fmt" "os" "github.com/elastic/beats/v7/x-pack/osquerybeat/cmd" - - "github.com/elastic/beats/v7/x-pack/libbeat/common/proc" - - _ "github.com/elastic/beats/v7/x-pack/osquerybeat/include" ) func main() { - pj, err := proc.CreateJobObject() - if err != nil { - fmt.Fprintf(os.Stderr, "Failed to create process JobObject: %v\n", err) - os.Exit(1) - } - defer pj.Close() if err := cmd.RootCmd.Execute(); err != nil { os.Exit(1) } diff --git a/x-pack/packetbeat/cmd/root.go b/x-pack/packetbeat/cmd/root.go index 8611fe8d115..523676b7252 100644 --- a/x-pack/packetbeat/cmd/root.go +++ b/x-pack/packetbeat/cmd/root.go @@ -7,6 +7,8 @@ package cmd import ( "fmt" + "github.com/spf13/cobra" + "github.com/elastic/beats/v7/libbeat/cmd" "github.com/elastic/beats/v7/libbeat/common/reload" "github.com/elastic/beats/v7/libbeat/processors" @@ -55,9 +57,6 @@ func packetbeatCfg(rawIn *proto.UnitExpectedConfig, agentInfo *client.AgentInfo) } func init() { - // Register packetbeat with central management to perform any needed config - // transformations before agent configs are sent to the beat during reload. - management.ConfigTransform.SetTransform(packetbeatCfg) globalProcs, err := processors.NewPluginConfigFromList(defaultProcessors()) if err != nil { // these are hard-coded, shouldn't fail panic(fmt.Errorf("error creating global processors: %w", err)) @@ -65,6 +64,11 @@ func init() { settings := packetbeatCmd.PacketbeatSettings(globalProcs) settings.ElasticLicensed = true RootCmd = packetbeatCmd.Initialize(settings) + RootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) { + // Register packetbeat with central management to perform any needed config + // transformations before agent configs are sent to the beat during reload. + management.ConfigTransform.SetTransform(packetbeatCfg) + } } func defaultProcessors() []mapstr.M { diff --git a/x-pack/packetbeat/tests/system/app_run_agentbeat_test.go b/x-pack/packetbeat/tests/system/app_run_agentbeat_test.go new file mode 100644 index 00000000000..487fe6d8c04 --- /dev/null +++ b/x-pack/packetbeat/tests/system/app_run_agentbeat_test.go @@ -0,0 +1,48 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build integration && agentbeat +// +build integration,agentbeat + +package system + +import ( + "bytes" + "context" + "os" + "os/exec" + "path/filepath" + "strings" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func runPacketbeat(t testing.TB, args ...string) (stdout, stderr string, err error) { + t.Helper() + + agentbeatPath, err := filepath.Abs("../../../agentbeat/agentbeat.test") + require.NoError(t, err) + + if _, err := os.Stat(agentbeatPath); err != nil { + t.Fatalf("%v binary not found: %v", filepath.Base(agentbeatPath), err) + } + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) + defer cancel() + + conf, err := filepath.Abs("../../packetbeat.yml") + if err != nil { + return "", "", err + } + cmd := exec.CommandContext(ctx, agentbeatPath, append([]string{"-systemTest", "packetbeat", "-c", conf}, args...)...) + cmd.Dir = t.TempDir() + var stdoutBuf, stderrBuf bytes.Buffer + cmd.Stdout = &stdoutBuf + cmd.Stderr = &stderrBuf + err = cmd.Run() + + return strings.TrimSpace(stdoutBuf.String()), strings.TrimSpace(stderrBuf.String()), err +} diff --git a/x-pack/packetbeat/tests/system/app_run_test.go b/x-pack/packetbeat/tests/system/app_run_test.go new file mode 100644 index 00000000000..6e4c1f31a5b --- /dev/null +++ b/x-pack/packetbeat/tests/system/app_run_test.go @@ -0,0 +1,48 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build integration && !agentbeat +// +build integration,!agentbeat + +package system + +import ( + "bytes" + "context" + "os" + "os/exec" + "path/filepath" + "strings" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func runPacketbeat(t testing.TB, args ...string) (stdout, stderr string, err error) { + t.Helper() + + packetbeatPath, err := filepath.Abs("../../packetbeat.test") + require.NoError(t, err) + + if _, err := os.Stat(packetbeatPath); err != nil { + t.Fatalf("%v binary not found: %v", filepath.Base(packetbeatPath), err) + } + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) + defer cancel() + + conf, err := filepath.Abs("../../packetbeat.yml") + if err != nil { + return "", "", err + } + cmd := exec.CommandContext(ctx, packetbeatPath, append([]string{"-systemTest", "-c", conf}, args...)...) + cmd.Dir = t.TempDir() + var stdoutBuf, stderrBuf bytes.Buffer + cmd.Stdout = &stdoutBuf + cmd.Stderr = &stderrBuf + err = cmd.Run() + + return strings.TrimSpace(stdoutBuf.String()), strings.TrimSpace(stderrBuf.String()), err +} diff --git a/x-pack/packetbeat/tests/system/app_test.go b/x-pack/packetbeat/tests/system/app_test.go index 0f366882083..214cd9c2369 100644 --- a/x-pack/packetbeat/tests/system/app_test.go +++ b/x-pack/packetbeat/tests/system/app_test.go @@ -8,19 +8,14 @@ package system import ( - "bytes" - "context" "errors" "fmt" "io/fs" "net" "os" - "os/exec" - "path/filepath" "runtime" "strings" "testing" - "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -74,30 +69,3 @@ func TestDevices(t *testing.T) { assert.Contains(t, stdout, ifc.Name) } } - -func runPacketbeat(t testing.TB, args ...string) (stdout, stderr string, err error) { - t.Helper() - - packetbeatPath, err := filepath.Abs("../../packetbeat.test") - require.NoError(t, err) - - if _, err := os.Stat(packetbeatPath); err != nil { - t.Fatalf("%v binary not found: %v", filepath.Base(packetbeatPath), err) - } - - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute) - defer cancel() - - conf, err := filepath.Abs("../../packetbeat.yml") - if err != nil { - return "", "", err - } - cmd := exec.CommandContext(ctx, packetbeatPath, append([]string{"-systemTest", "-c", conf}, args...)...) - cmd.Dir = t.TempDir() - var stdoutBuf, stderrBuf bytes.Buffer - cmd.Stdout = &stdoutBuf - cmd.Stderr = &stderrBuf - err = cmd.Run() - - return strings.TrimSpace(stdoutBuf.String()), strings.TrimSpace(stderrBuf.String()), err -} From ccd7b135df70358f8a02393d9bd8b716428b8048 Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Fri, 12 Apr 2024 21:49:23 +0200 Subject: [PATCH 145/313] Fix clean_inactive for Filestream input (#38632) * Add tests for store GC * Add changelog * Run mage check and update all necessary files * Improve changelog entry * Fix `clean_inactive` for Filestream input The `clean_inactive` parameter was being parsed with the wrong key. It is parsed/used by an anonymous struct on `input-logfile/manager.go`, there it was parsed and used as `CleanTimeout` (`clean_timeout`). This `CleanTimeout` setting has got exactly the same effect as the `clean_inactive` described in our documentation. This commit fixes this bug by renaming `clean_timeout` to `clean_inactive` so the configuration value can have effect. * Add tests for `clean_inactive` and fix documentation * Add changelog * Update test config * Add licence headers and build tags * PR improvements - Rename `CleanTimeout` to `CleanInactive` - Remove commented out code * Fix rebase conflicts * Fix lint errors * Jenkins test this PR --- CHANGELOG.next.asciidoc | 2 + .../input-filestream-file-options.asciidoc | 13 ++- .../internal/input-logfile/clean.go | 2 +- .../internal/input-logfile/manager.go | 6 +- filebeat/input/v2/input-cursor/clean.go | 3 +- filebeat/input/v2/input-cursor/manager.go | 8 +- filebeat/tests/integration/filestream_test.go | 107 ++++++++++++++++++ 7 files changed, 126 insertions(+), 15 deletions(-) create mode 100644 filebeat/tests/integration/filestream_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 1b61e70423c..f03115b6b05 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -102,6 +102,8 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix indexing failures by re-enabling event normalisation in netflow input. {issue}38703[38703] {pull}38780[38780] - Fix handling of truncated files in Filestream {issue}38070[38070] {pull}38416[38416] - Fix panic when more than 32767 pipeline clients are active. {issue}38197[38197] {pull}38556[38556] +- Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] + *Heartbeat* diff --git a/filebeat/docs/inputs/input-filestream-file-options.asciidoc b/filebeat/docs/inputs/input-filestream-file-options.asciidoc index a3be665e28e..47a8c819d9e 100644 --- a/filebeat/docs/inputs/input-filestream-file-options.asciidoc +++ b/filebeat/docs/inputs/input-filestream-file-options.asciidoc @@ -440,12 +440,12 @@ WARNING: Only use this option if you understand that data loss is a potential side effect. When this option is enabled, {beatname_uc} removes the state of a file after the -specified period of inactivity has elapsed. The state can only be removed if +specified period of inactivity has elapsed. The state can only be removed if the file is already ignored by {beatname_uc} (the file is older than `ignore_older`). The `clean_inactive` setting must be greater than `ignore_older + prospector.scanner.check_interval` to make sure that no states are removed while a file is still being harvested. Otherwise, the setting could result in {beatname_uc} resending -the full content constantly because `clean_inactive` removes state for files +the full content constantly because `clean_inactive` removes state for files that are still detected by {beatname_uc}. If a file is updated or appears again, the file is read from the beginning. @@ -461,10 +461,11 @@ for `clean_inactive` starts at 0 again. TIP: During testing, you might notice that the registry contains state entries that should be removed based on the `clean_inactive` setting. This happens -because {beatname_uc} doesn't remove the entries until it opens the registry -again to read a different file. If you are testing the `clean_inactive` setting, -make sure {beatname_uc} is configured to read from more than one file, or the -file state will never be removed from the registry. +because {beatname_uc} doesn't remove the entries until the registry garbage +collector (GC) runs. Once the TTL for a state expired, there are no active +harvesters for the file and the registry GC runs, then, and only then +the state is removed from memory and an `op: remove` is added to the registry +log file. [float] [id="{beatname_lc}-input-{type}-clean-removed"] diff --git a/filebeat/input/filestream/internal/input-logfile/clean.go b/filebeat/input/filestream/internal/input-logfile/clean.go index c87997a0afa..36f429f3f86 100644 --- a/filebeat/input/filestream/internal/input-logfile/clean.go +++ b/filebeat/input/filestream/internal/input-logfile/clean.go @@ -36,7 +36,7 @@ type cleaner struct { // run starts a loop that tries to clean entries from the registry. // The cleaner locks the store, such that no new states can be created // during the cleanup phase. Only resources that are finished and whose TTL -// (clean_timeout setting) has expired will be removed. +// (clean_inactive setting) has expired will be removed. // // Resources are considered "Finished" if they do not have a current owner (active input), and // if they have no pending updates that still need to be written to the registry file after associated diff --git a/filebeat/input/filestream/internal/input-logfile/manager.go b/filebeat/input/filestream/internal/input-logfile/manager.go index c95efd1c5a1..ec25ff60b2f 100644 --- a/filebeat/input/filestream/internal/input-logfile/manager.go +++ b/filebeat/input/filestream/internal/input-logfile/manager.go @@ -165,9 +165,9 @@ func (cim *InputManager) Create(config *conf.C) (v2.Input, error) { settings := struct { ID string `config:"id"` - CleanTimeout time.Duration `config:"clean_timeout"` + CleanInactive time.Duration `config:"clean_inactive"` HarvesterLimit uint64 `config:"harvester_limit"` - }{CleanTimeout: cim.DefaultCleanTimeout} + }{CleanInactive: cim.DefaultCleanTimeout} if err := config.Unpack(&settings); err != nil { return nil, err } @@ -230,7 +230,7 @@ func (cim *InputManager) Create(config *conf.C) (v2.Input, error) { prospector: prospector, harvester: harvester, sourceIdentifier: sourceIdentifier, - cleanTimeout: settings.CleanTimeout, + cleanTimeout: settings.CleanInactive, harvesterLimit: settings.HarvesterLimit, }, nil } diff --git a/filebeat/input/v2/input-cursor/clean.go b/filebeat/input/v2/input-cursor/clean.go index 92124f4e3fb..179110ea624 100644 --- a/filebeat/input/v2/input-cursor/clean.go +++ b/filebeat/input/v2/input-cursor/clean.go @@ -34,7 +34,7 @@ type cleaner struct { // run starts a loop that tries to clean entries from the registry. // The cleaner locks the store, such that no new states can be created // during the cleanup phase. Only resources that are finished and whos TTL -// (clean_timeout setting) has expired will be removed. +// (clean_inactive setting) has expired will be removed. // // Resources are considered "Finished" if they do not have a current owner (active input), and // if they have no pending updates that still need to be written to the registry file after associated @@ -44,6 +44,7 @@ type cleaner struct { // once the last event has been ACKed. func (c *cleaner) run(canceler unison.Canceler, store *store, interval time.Duration) { started := time.Now() + //nolint: errcheck // gcStore does not return an error timed.Periodic(canceler, interval, func() error { gcStore(c.log, started, store) return nil diff --git a/filebeat/input/v2/input-cursor/manager.go b/filebeat/input/v2/input-cursor/manager.go index bb0b526a7bf..74dd8a3bd34 100644 --- a/filebeat/input/v2/input-cursor/manager.go +++ b/filebeat/input/v2/input-cursor/manager.go @@ -153,9 +153,9 @@ func (cim *InputManager) Create(config *conf.C) (v2.Input, error) { } settings := struct { - ID string `config:"id"` - CleanTimeout time.Duration `config:"clean_timeout"` - }{ID: "", CleanTimeout: cim.DefaultCleanTimeout} + ID string `config:"id"` + CleanInactive time.Duration `config:"clean_inactive"` + }{ID: "", CleanInactive: cim.DefaultCleanTimeout} if err := config.Unpack(&settings); err != nil { return nil, err } @@ -176,7 +176,7 @@ func (cim *InputManager) Create(config *conf.C) (v2.Input, error) { userID: settings.ID, sources: sources, input: inp, - cleanTimeout: settings.CleanTimeout, + cleanTimeout: settings.CleanInactive, }, nil } diff --git a/filebeat/tests/integration/filestream_test.go b/filebeat/tests/integration/filestream_test.go new file mode 100644 index 00000000000..3ddb04a2c20 --- /dev/null +++ b/filebeat/tests/integration/filestream_test.go @@ -0,0 +1,107 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +//go:build integration + +package integration + +import ( + "fmt" + "path" + "path/filepath" + "testing" + "time" + + "github.com/elastic/beats/v7/libbeat/tests/integration" +) + +var filestreamCleanInactiveCfg = ` +filebeat.inputs: + - type: filestream + id: "test-clean-inactive" + paths: + - %s + + clean_inactive: 3s + ignore_older: 2s + close.on_state_change.inactive: 1s + prospector.scanner.check_interval: 1s + +filebeat.registry: + cleanup_interval: 5s + flush: 1s + +queue.mem: + events: 32 + flush.min_events: 8 + flush.timeout: 0.1s + +path.home: %s + +output.file: + path: ${path.home} + filename: "output-file" + rotate_every_kb: 10000 + +logging: + level: debug + selectors: + - input + - input.filestream + metrics: + enabled: false +` + +func TestFilestreamCleanInactive(t *testing.T) { + filebeat := integration.NewBeat( + t, + "filebeat", + "../../filebeat.test", + ) + tempDir := filebeat.TempDir() + + // 1. Generate the log file path, but do not write data to it + logFilePath := path.Join(tempDir, "log.log") + + // 2. Write configuration file ans start Filebeat + filebeat.WriteConfigFile(fmt.Sprintf(filestreamCleanInactiveCfg, logFilePath, tempDir)) + filebeat.Start() + + // 3. Create the log file + integration.GenerateLogFile(t, logFilePath, 10, false) + + // 4. Wait for Filebeat to start scanning for files + // + filebeat.WaitForLogs( + fmt.Sprintf("A new file %s has been found", logFilePath), + 10*time.Second, + "Filebeat did not start looking for files to ingest") + + filebeat.WaitForLogs( + fmt.Sprintf("Reader was closed. Closing. Path='%s", logFilePath), + 10*time.Second, "Filebeat did not close the file") + + // 5. Now that the reader has been closed, nothing is holding the state + // of the file, so once the TTL of its state expires and the store GC runs, + // it will be removed from the registry. + // Wait for the log message stating 1 entry has been removed from the registry + filebeat.WaitForLogs("1 entries removed", 20*time.Second, "entry was not removed from registtry") + + // 6. Then assess it has been removed in the registry + registryFile := filepath.Join(filebeat.TempDir(), "data", "registry", "filebeat", "log.json") + filebeat.WaitFileContains(registryFile, `"op":"remove"`, time.Second) +} From ca4adcecac031b8c7ba83a16d1803140b018f3a1 Mon Sep 17 00:00:00 2001 From: Panos Koutsovasilis Date: Sat, 13 Apr 2024 05:40:07 +0300 Subject: [PATCH 146/313] [Auditbeat] fim(kprobes): enrich file events by coupling add_process_metadata processor (#38776) * feat(processors/process_metadata): support reporting group id and name * feat(processors/process_metadata): support reporting process entity_id * feat(fim/kprobes): allow metricsSets to expose beat processors after initialisation * doc: update CHANGELOG.next.asciidoc * fix(linter): SA1015 prevent leaking the ticker * fix(linter): SA1019 mark metricbeat/mb deprecation warnings that are not removed yet * fix(linter): check for return err * fix(linter): prealloc slices * fix(linter): remove unused field * fix(linter): G601 prevent implicit memory aliasing in for loop * doc: update CHANGELOG.next.asciidoc * fix: update filebaet fields.asciidoc (unrelated to this work) * doc: remove irrelevant changes from CHANGELOG.next.asciidoc * feat(processor/metadata): introduce new type based allocation func * feat(fim/kprobe): instantiate new processor alongside a new kprobes event reader * fix(fim): remove redundant whitespace * doc(metricbeat): enrich documentation about Processors attached to a Metricbeat * fix(fim): gofumpt eventreader_kprobes.go * fix(add_process_metadata): gofmt add_process_metadata.go gosysinfo_provider.go * fix(lint): goimports eventreader_kprobes.go * fix(winlogbeat): generate include list [unrelated to this PR] --- CHANGELOG.next.asciidoc | 1 + .../file_integrity/eventreader_kprobes.go | 37 +++++++++++- .../file_integrity/eventreader_linux.go | 6 +- auditbeat/module/file_integrity/metricset.go | 20 +++++++ .../add_process_metadata.go | 58 +++++++++++++++---- .../add_process_metadata_test.go | 50 +++++++++++----- .../processors/add_process_metadata/cache.go | 2 +- .../add_process_metadata/cache_test.go | 5 +- .../processors/add_process_metadata/config.go | 19 ++++++ .../gosysinfo_provider.go | 58 ++++++++++++++++++- metricbeat/mb/module/configuration.go | 6 +- metricbeat/mb/module/connector.go | 12 +++- metricbeat/mb/module/connector_test.go | 3 +- metricbeat/mb/module/factory.go | 14 ++++- metricbeat/mb/module/runner_group.go | 2 +- metricbeat/mb/module/runner_group_test.go | 8 +-- metricbeat/mb/module/testing.go | 5 +- metricbeat/mb/module/wrapper.go | 10 ++-- x-pack/winlogbeat/include/list.go | 2 +- 19 files changed, 264 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f03115b6b05..b58ec371cff 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -156,6 +156,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] - Add process data to file events (Linux only, eBPF backend). {pull}38199[38199] - Add container id to file events (Linux only, eBPF backend). {pull}38328[38328] +- Add process.entity_id, process.group.name and process.group.id in add_process_metadata processor. Make fim module with kprobes backend to always add an appropriately configured add_process_metadata processor to enrich file events {pull}38776[38776] *Filebeat* diff --git a/auditbeat/module/file_integrity/eventreader_kprobes.go b/auditbeat/module/file_integrity/eventreader_kprobes.go index 7cddd7f60cd..e5cdd76f4b7 100644 --- a/auditbeat/module/file_integrity/eventreader_kprobes.go +++ b/auditbeat/module/file_integrity/eventreader_kprobes.go @@ -26,10 +26,12 @@ import ( "time" "github.com/elastic/beats/v7/auditbeat/module/file_integrity/kprobes" - - "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/processors/add_process_metadata" "golang.org/x/sys/unix" + + "github.com/elastic/elastic-agent-libs/logp" ) type kProbesReader struct { @@ -39,6 +41,30 @@ type kProbesReader struct { log *logp.Logger parsers []FileParser + + processor beat.Processor +} + +func newKProbesReader(config Config, l *logp.Logger, parsers []FileParser) (*kProbesReader, error) { + processor, err := add_process_metadata.NewWithConfig( + add_process_metadata.ConfigOverwriteKeys(true), + add_process_metadata.ConfigMatchPIDs([]string{"process.pid"}), + ) + if err != nil { + return nil, err + } + + return &kProbesReader{ + config: config, + eventC: make(chan Event), + log: l, + parsers: parsers, + processor: processor, + }, nil +} + +func (r kProbesReader) Processor() beat.Processor { + return r.processor } func (r kProbesReader) Start(done <-chan struct{}) (<-chan Event, error) { @@ -152,6 +178,13 @@ func (r kProbesReader) nextEvent(done <-chan struct{}) *Event { start := time.Now() e := NewEvent(event.Path, kProbeTypeToAction(event.Op), SourceKProbes, r.config.MaxFileSizeBytes, r.config.HashTypes, r.parsers) + + if e.Process == nil { + e.Process = &Process{} + } + + e.Process.PID = event.PID + e.rtt = time.Since(start) return &e diff --git a/auditbeat/module/file_integrity/eventreader_linux.go b/auditbeat/module/file_integrity/eventreader_linux.go index ac9ce7de60d..c6b3d330c77 100644 --- a/auditbeat/module/file_integrity/eventreader_linux.go +++ b/auditbeat/module/file_integrity/eventreader_linux.go @@ -58,11 +58,7 @@ func NewEventReader(c Config, logger *logp.Logger) (EventProducer, error) { if c.Backend == BackendKprobes { l := logger.Named("kprobes") l.Info("selected backend: kprobes") - return &kProbesReader{ - config: c, - log: l, - parsers: FileParsers(c), - }, nil + return newKProbesReader(c, l, FileParsers(c)) } // unimplemented diff --git a/auditbeat/module/file_integrity/metricset.go b/auditbeat/module/file_integrity/metricset.go index db507415cb4..e9cc7b2265a 100644 --- a/auditbeat/module/file_integrity/metricset.go +++ b/auditbeat/module/file_integrity/metricset.go @@ -28,6 +28,7 @@ import ( "github.com/elastic/beats/v7/auditbeat/ab" "github.com/elastic/beats/v7/auditbeat/datastore" + "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/metricbeat/mb/parse" "github.com/elastic/elastic-agent-libs/logp" @@ -63,6 +64,11 @@ type EventProducer interface { Start(done <-chan struct{}) (<-chan Event, error) } +// eventProducerWithProcessor is an EventProducer that requires a Processor +type eventProducerWithProcessor interface { + Processor() beat.Processor +} + // MetricSet for monitoring file integrity. type MetricSet struct { mb.BaseMetricSet @@ -79,6 +85,9 @@ type MetricSet struct { // Used when a hash can't be calculated nullHashes map[HashType]Digest + + // Processors + processors []beat.Processor } // New returns a new file.MetricSet. @@ -106,6 +115,13 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { log: logger, } + // reader supports a processor + if rWithProcessor, ok := r.(eventProducerWithProcessor); ok { + if proc := rWithProcessor.Processor(); proc != nil { + ms.processors = append(ms.processors, proc) + } + } + ms.nullHashes = make(map[HashType]Digest, len(config.HashTypes)) for _, hashType := range ms.config.HashTypes { // One byte is enough so that the hashes are persisted to the datastore. @@ -118,6 +134,10 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return ms, nil } +func (ms *MetricSet) Processors() []beat.Processor { + return ms.processors +} + // Run runs the MetricSet. The method will not return control to the caller // until it is finished (to stop it close the reporter.Done() channel). func (ms *MetricSet) Run(reporter mb.PushReporterV2) { diff --git a/libbeat/processors/add_process_metadata/add_process_metadata.go b/libbeat/processors/add_process_metadata/add_process_metadata.go index 054d6d133e6..8bb8ecea5a9 100644 --- a/libbeat/processors/add_process_metadata/add_process_metadata.go +++ b/libbeat/processors/add_process_metadata/add_process_metadata.go @@ -34,6 +34,7 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/elastic-agent-system-metrics/metric/system/cgroup" "github.com/elastic/elastic-agent-system-metrics/metric/system/resolve" + "github.com/elastic/go-sysinfo" ) const ( @@ -65,17 +66,19 @@ type addProcessMetadata struct { cidProvider cidProvider log *logp.Logger mappings mapstr.M + uniqueID []byte } type processMetadata struct { + entityID string name, title, exe, username, userid string args []string env map[string]string startTime time.Time pid, ppid int + groupname, groupid string capEffective, capPermitted []string - // - fields mapstr.M + fields mapstr.M } type processMetadataProvider interface { @@ -93,33 +96,48 @@ func init() { // New constructs a new add_process_metadata processor. func New(cfg *conf.C) (beat.Processor, error) { - return newProcessMetadataProcessorWithProvider(cfg, &procCache, false) + config := defaultConfig() + if err := cfg.Unpack(&config); err != nil { + return nil, fmt.Errorf("fail to unpack the %v configuration: %w", processorName, err) + } + + return newProcessMetadataProcessorWithProvider(config, &procCache, false) } // NewWithCache construct a new add_process_metadata processor with cache for container IDs. // Resulting processor implements `Close()` to release the cache resources. func NewWithCache(cfg *conf.C) (beat.Processor, error) { + config := defaultConfig() + if err := cfg.Unpack(&config); err != nil { + return nil, fmt.Errorf("fail to unpack the %v configuration: %w", processorName, err) + } + + return newProcessMetadataProcessorWithProvider(config, &procCache, true) +} + +func NewWithConfig(opts ...ConfigOption) (beat.Processor, error) { + cfg := defaultConfig() + + for _, o := range opts { + o(&cfg) + } + return newProcessMetadataProcessorWithProvider(cfg, &procCache, true) } -func newProcessMetadataProcessorWithProvider(cfg *conf.C, provider processMetadataProvider, withCache bool) (proc beat.Processor, err error) { +func newProcessMetadataProcessorWithProvider(config config, provider processMetadataProvider, withCache bool) (proc beat.Processor, err error) { // Logging (each processor instance has a unique ID). var ( id = int(instanceID.Inc()) log = logp.NewLogger(processorName).With("instance_id", id) ) - config := defaultConfig() - if err = cfg.Unpack(&config); err != nil { - return nil, fmt.Errorf("fail to unpack the %v configuration: %w", processorName, err) - } - // If neither option is configured, then add a default. A default cgroup_regex // cannot be added to the struct returned by defaultConfig() because if // config_regex is set, it would take precedence over any user-configured // cgroup_prefixes. - hasCgroupPrefixes, _ := cfg.Has("cgroup_prefixes", -1) - hasCgroupRegex, _ := cfg.Has("cgroup_regex", -1) + hasCgroupPrefixes := len(config.CgroupPrefixes) > 0 + hasCgroupRegex := config.CgroupRegex != nil if !hasCgroupPrefixes && !hasCgroupRegex { config.CgroupRegex = defaultCgroupRegex } @@ -135,6 +153,13 @@ func newProcessMetadataProcessorWithProvider(cfg *conf.C, provider processMetada log: log, mappings: mappings, } + + if host, _ := sysinfo.Host(); host != nil { + if uniqueID := host.Info().UniqueID; uniqueID != "" { + p.uniqueID = []byte(uniqueID) + } + } + // don't use cgroup.ProcessCgroupPaths to save it from doing the work when container id disabled if ok := containsValue(mappings, "container.id"); ok { if withCache && config.CgroupCacheExpireTime != 0 { @@ -312,6 +337,7 @@ func (p *addProcessMetadata) String() string { func (p *processMetadata) toMap() mapstr.M { process := mapstr.M{ + "entity_id": p.entityID, "name": p.name, "title": p.title, "executable": p.exe, @@ -339,6 +365,16 @@ func (p *processMetadata) toMap() mapstr.M { if len(p.capPermitted) > 0 { process.Put("thread.capabilities.permitted", p.capPermitted) } + if p.groupname != "" || p.groupid != "" { + group := mapstr.M{} + if p.groupname != "" { + group["name"] = p.groupname + } + if p.groupid != "" { + group["id"] = p.groupid + } + process["group"] = group + } return mapstr.M{ "process": process, diff --git a/libbeat/processors/add_process_metadata/add_process_metadata_test.go b/libbeat/processors/add_process_metadata/add_process_metadata_test.go index 81816f1a87a..977a554f320 100644 --- a/libbeat/processors/add_process_metadata/add_process_metadata_test.go +++ b/libbeat/processors/add_process_metadata/add_process_metadata_test.go @@ -48,10 +48,11 @@ func TestAddProcessMetadata(t *testing.T) { startTime := time.Now() testProcs := testProvider{ 1: { - name: "systemd", - title: "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", - exe: "/usr/lib/systemd/systemd", - args: []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, + name: "systemd", + entityID: "XCOVE56SVVEOKBNX", + title: "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", + exe: "/usr/lib/systemd/systemd", + args: []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, env: map[string]string{ "HOME": "/", "TERM": "linux", @@ -67,10 +68,11 @@ func TestAddProcessMetadata(t *testing.T) { capPermitted: capMock, }, 3: { - name: "systemd", - title: "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", - exe: "/usr/lib/systemd/systemd", - args: []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, + name: "systemd", + entityID: "XCOVE56SVVEOKBNX", + title: "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", + exe: "/usr/lib/systemd/systemd", + args: []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, env: map[string]string{ "HOME": "/", "TERM": "linux", @@ -159,6 +161,7 @@ func TestAddProcessMetadata(t *testing.T) { }, "process": mapstr.M{ "name": "systemd", + "entity_id": "XCOVE56SVVEOKBNX", "title": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", "executable": "/usr/lib/systemd/systemd", "args": []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, @@ -250,6 +253,7 @@ func TestAddProcessMetadata(t *testing.T) { "parent": mapstr.M{ "process": mapstr.M{ "name": "systemd", + "entity_id": "XCOVE56SVVEOKBNX", "title": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", "executable": "/usr/lib/systemd/systemd", "args": []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, @@ -290,6 +294,7 @@ func TestAddProcessMetadata(t *testing.T) { "parent": mapstr.M{ "process": mapstr.M{ "name": "systemd", + "entity_id": "XCOVE56SVVEOKBNX", "title": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", "executable": "/usr/lib/systemd/systemd", "args": []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, @@ -337,6 +342,7 @@ func TestAddProcessMetadata(t *testing.T) { "parent": mapstr.M{ "process": mapstr.M{ "name": "systemd", + "entity_id": "XCOVE56SVVEOKBNX", "title": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", "executable": "/usr/lib/systemd/systemd", "args": []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, @@ -541,6 +547,7 @@ func TestAddProcessMetadata(t *testing.T) { }, "process": mapstr.M{ "name": "systemd", + "entity_id": "XCOVE56SVVEOKBNX", "title": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", "executable": "/usr/lib/systemd/systemd", "args": []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, @@ -672,6 +679,7 @@ func TestAddProcessMetadata(t *testing.T) { }, "process": mapstr.M{ "name": "systemd", + "entity_id": "XCOVE56SVVEOKBNX", "title": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22", "executable": "/usr/lib/systemd/systemd", "args": []string{"/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"}, @@ -768,7 +776,7 @@ func TestAddProcessMetadata(t *testing.T) { config: mapstr.M{ "cgroup_regex": "", }, - initErr: errors.New("fail to unpack the add_process_metadata configuration: cgroup_regexp must contain exactly one capturing group for the container ID accessing config"), + initErr: errors.New("cgroup_regexp must contain exactly one capturing group for the container ID accessing config"), }, { description: "cgroup_prefixes configured", @@ -789,17 +797,23 @@ func TestAddProcessMetadata(t *testing.T) { }, } { t.Run(test.description, func(t *testing.T) { - config, err := conf.NewConfigFrom(test.config) - if err != nil { - t.Fatal(err) + configC, err := conf.NewConfigFrom(test.config) + assert.NoError(t, err) + + config := defaultConfig() + if err := configC.Unpack(&config); err != nil { + if test.initErr == nil { + t.Fatal(err) + } + assert.EqualError(t, err, test.initErr.Error()) + return } proc, err := newProcessMetadataProcessorWithProvider(config, testProcs, true) - if test.initErr == nil { - if err != nil { + if err != nil { + if test.initErr == nil { t.Fatal(err) } - } else { assert.EqualError(t, err, test.initErr.Error()) return } @@ -830,7 +844,11 @@ func TestAddProcessMetadata(t *testing.T) { "include_fields": []string{"process.name"}, } - config, err := conf.NewConfigFrom(c) + configC, err := conf.NewConfigFrom(c) + assert.NoError(t, err) + + config := defaultConfig() + err = configC.Unpack(&config) assert.NoError(t, err) proc, err := newProcessMetadataProcessorWithProvider(config, testProcs, true) diff --git a/libbeat/processors/add_process_metadata/cache.go b/libbeat/processors/add_process_metadata/cache.go index e3435aa92af..713c2bb730e 100644 --- a/libbeat/processors/add_process_metadata/cache.go +++ b/libbeat/processors/add_process_metadata/cache.go @@ -53,7 +53,7 @@ func (pc *processCache) getEntryUnlocked(pid int) (entry processCacheEntry, vali if entry, valid = pc.cache[pid]; valid { valid = entry.expiration.After(time.Now()) } - return + return entry, valid } func (pc *processCache) GetProcessMetadata(pid int) (*processMetadata, error) { diff --git a/libbeat/processors/add_process_metadata/cache_test.go b/libbeat/processors/add_process_metadata/cache_test.go index 9d9886d9932..882349b6ae6 100644 --- a/libbeat/processors/add_process_metadata/cache_test.go +++ b/libbeat/processors/add_process_metadata/cache_test.go @@ -21,6 +21,8 @@ import ( "math/rand" "testing" "time" + + "github.com/stretchr/testify/require" ) var cacheEvictionTests = []struct { @@ -96,7 +98,8 @@ func TestCacheEviction(t *testing.T) { for i := 0; i < test.iters; i++ { pid := rnd.Intn(test.maxPID) - c.GetProcessMetadata(pid) + _, err := c.GetProcessMetadata(pid) + require.NoError(t, err) if len(c.cache) > test.cap { t.Errorf("cache overflow for %s after %d iterations", test.name, i) break diff --git a/libbeat/processors/add_process_metadata/config.go b/libbeat/processors/add_process_metadata/config.go index 1f2e9920da1..7eeddff04e6 100644 --- a/libbeat/processors/add_process_metadata/config.go +++ b/libbeat/processors/add_process_metadata/config.go @@ -80,11 +80,16 @@ var defaultFields = mapstr.M{ "parent": mapstr.M{ "pid": nil, }, + "entity_id": nil, "start_time": nil, "owner": mapstr.M{ "name": nil, "id": nil, }, + "group": mapstr.M{ + "name": nil, + "id": nil, + }, "thread": mapstr.M{ "capabilities": mapstr.M{ "effective": nil, @@ -120,6 +125,20 @@ func defaultConfig() config { } } +type ConfigOption func(c *config) + +func ConfigOverwriteKeys(overwriteKeys bool) ConfigOption { + return func(c *config) { + c.OverwriteKeys = overwriteKeys + } +} + +func ConfigMatchPIDs(matchPIDs []string) ConfigOption { + return func(c *config) { + c.MatchPIDs = matchPIDs + } +} + func (c *config) getMappings() (mappings mapstr.M, err error) { mappings = mapstr.M{} validFields := defaultFields diff --git a/libbeat/processors/add_process_metadata/gosysinfo_provider.go b/libbeat/processors/add_process_metadata/gosysinfo_provider.go index 70d6e2a2c33..350acc81000 100644 --- a/libbeat/processors/add_process_metadata/gosysinfo_provider.go +++ b/libbeat/processors/add_process_metadata/gosysinfo_provider.go @@ -18,14 +18,30 @@ package add_process_metadata import ( + "crypto/sha256" + "encoding/base64" + "encoding/binary" "os/user" "strings" + "sync" + "time" "github.com/elastic/beats/v7/libbeat/common/capabilities" "github.com/elastic/go-sysinfo" "github.com/elastic/go-sysinfo/types" ) +var hostInfoOnce = sync.OnceValues(func() ([]byte, error) { + host, err := sysinfo.Host() + if err == nil { + if uniqueID := host.Info().UniqueID; uniqueID != "" { + return []byte(uniqueID), err + } + } + + return nil, err +}) + type gosysinfoProvider struct{} func (p gosysinfoProvider) GetProcessMetadata(pid int) (result *processMetadata, err error) { @@ -45,14 +61,21 @@ func (p gosysinfoProvider) GetProcessMetadata(pid int) (result *processMetadata, env, _ = e.Environment() } - username, userid := "", "" + username, userid, groupname, groupid := "", "", "", "" if userInfo, err := proc.User(); err == nil { userid = userInfo.UID if u, err := user.LookupId(userInfo.UID); err == nil { username = u.Username } + + groupid = userInfo.GID + if g, err := user.LookupGroupId(userInfo.GID); err == nil { + groupname = g.Name + } } + eID, _ := entityID(pid, info.StartTime) + // Capabilities are linux only and other systems will fail // with ErrUnsupported. In the event of any errors, we simply // don't report the capabilities. @@ -60,6 +83,7 @@ func (p gosysinfoProvider) GetProcessMetadata(pid int) (result *processMetadata, capEffective, _ := capabilities.FromPid(capabilities.Effective, pid) r := processMetadata{ + entityID: eID, name: info.Name, args: info.Args, env: env, @@ -72,7 +96,39 @@ func (p gosysinfoProvider) GetProcessMetadata(pid int) (result *processMetadata, startTime: info.StartTime, username: username, userid: userid, + groupname: groupname, + groupid: groupid, } + r.fields = r.toMap() return &r, nil } + +// entityID creates an ID that uniquely identifies this process across machines. +func entityID(pid int, start time.Time) (string, error) { + uniqueID, err := hostInfoOnce() + if err != nil && len(uniqueID) == 0 { + return "", err + } + + if len(uniqueID) == 0 || start.IsZero() { + return "", nil + } + + h := sha256.New() + if _, err := h.Write(uniqueID); err != nil { + return "", err + } + if err := binary.Write(h, binary.LittleEndian, int64(pid)); err != nil { + return "", err + } + if err := binary.Write(h, binary.LittleEndian, int64(start.Nanosecond())); err != nil { + return "", err + } + + sum := h.Sum(nil) + if len(sum) > 12 { + sum = sum[:12] + } + return base64.RawStdEncoding.EncodeToString(sum), nil +} diff --git a/metricbeat/mb/module/configuration.go b/metricbeat/mb/module/configuration.go index b0a2586863a..04031e42e7c 100644 --- a/metricbeat/mb/module/configuration.go +++ b/metricbeat/mb/module/configuration.go @@ -27,7 +27,7 @@ import ( // ConfiguredModules returns a list of all configured modules, including anyone present under dynamic config settings. func ConfiguredModules(registry *mb.Register, modulesData []*conf.C, configModulesData *conf.C, moduleOptions []Option) ([]*Wrapper, error) { - var modules []*Wrapper + var modules []*Wrapper //nolint:prealloc //can't be preallocated for _, moduleCfg := range modulesData { module, err := NewWrapper(moduleCfg, registry, moduleOptions...) @@ -40,7 +40,9 @@ func ConfiguredModules(registry *mb.Register, modulesData []*conf.C, configModul // Add dynamic modules if configModulesData.Enabled() { config := cfgfile.DefaultDynamicConfig - configModulesData.Unpack(&config) + if err := configModulesData.Unpack(&config); err != nil { + return nil, err + } modulesManager, err := cfgfile.NewGlobManager(config.Path, ".yml", ".disabled") if err != nil { diff --git a/metricbeat/mb/module/connector.go b/metricbeat/mb/module/connector.go index 6e6b0ca6113..960280bc747 100644 --- a/metricbeat/mb/module/connector.go +++ b/metricbeat/mb/module/connector.go @@ -34,7 +34,6 @@ type Connector struct { pipeline beat.PipelineConnector processors *processors.Processors eventMeta mapstr.EventMetadata - timeSeries bool keepNull bool } @@ -97,6 +96,17 @@ func (c *Connector) UseMetricSetProcessors(r metricSetRegister, moduleName, metr return nil } +// addProcessors appends processors to the connector properties. +func (c *Connector) addProcessors(procs []beat.Processor) { + if c.processors == nil { + c.processors = processors.NewList(nil) + } + + for _, p := range procs { + c.processors.AddProcessor(p) + } +} + func (c *Connector) Connect() (beat.Client, error) { return c.pipeline.ConnectWith(beat.ClientConfig{ Processing: beat.ProcessingConfig{ diff --git a/metricbeat/mb/module/connector_test.go b/metricbeat/mb/module/connector_test.go index ed7008889c0..5079fbb23f9 100644 --- a/metricbeat/mb/module/connector_test.go +++ b/metricbeat/mb/module/connector_test.go @@ -67,7 +67,8 @@ func TestProcessorsForConfig(t *testing.T) { t.Errorf("[%s] %v", description, err) continue } - processedEvent, err := processors.Run(&test.event) + testEvent := testCases[description].event + processedEvent, err := processors.Run(&testEvent) // We don't check if err != nil, because we are testing the final outcome // of running the processors, including when some of them fail. if processedEvent == nil { diff --git a/metricbeat/mb/module/factory.go b/metricbeat/mb/module/factory.go index 91254194aeb..4bf8509204a 100644 --- a/metricbeat/mb/module/factory.go +++ b/metricbeat/mb/module/factory.go @@ -32,6 +32,14 @@ type Factory struct { registry *mb.Register } +// metricSetWithProcessors is an interface to check if a MetricSet has directly attached Processors +// NOTE: Processors that implement the Closer interface are going to be closed from the pipeline when required, +// namely during dynamic configuration reloading. Thus, it is critical for the Metricset to always instantiate +// properly the processor and not consider it as always running. +type metricSetWithProcessors interface { + Processors() []beat.Processor +} + // NewFactory creates new Reloader instance for the given config func NewFactory(beatInfo beat.Info, registry *mb.Register, options ...Option) *Factory { return &Factory{ @@ -48,7 +56,7 @@ func (r *Factory) Create(p beat.PipelineConnector, c *conf.C) (cfgfile.Runner, e return nil, err } - var runners []cfgfile.Runner + runners := make([]cfgfile.Runner, 0, len(metricSets)) for _, metricSet := range metricSets { wrapper, err := NewWrapperForMetricSet(module, metricSet, r.options...) if err != nil { @@ -65,6 +73,10 @@ func (r *Factory) Create(p beat.PipelineConnector, c *conf.C) (cfgfile.Runner, e return nil, err } + if msWithProcs, ok := metricSet.(metricSetWithProcessors); ok { + connector.addProcessors(msWithProcs.Processors()) + } + client, err := connector.Connect() if err != nil { return nil, err diff --git a/metricbeat/mb/module/runner_group.go b/metricbeat/mb/module/runner_group.go index 542926325f6..e020cd87d55 100644 --- a/metricbeat/mb/module/runner_group.go +++ b/metricbeat/mb/module/runner_group.go @@ -57,7 +57,7 @@ func (rg *runnerGroup) Stop() { } func (rg *runnerGroup) String() string { - var entries []string + entries := make([]string, 0, len(rg.runners)) for _, runner := range rg.runners { entries = append(entries, runner.String()) } diff --git a/metricbeat/mb/module/runner_group_test.go b/metricbeat/mb/module/runner_group_test.go index 036396a3103..1d462359968 100644 --- a/metricbeat/mb/module/runner_group_test.go +++ b/metricbeat/mb/module/runner_group_test.go @@ -79,7 +79,7 @@ func TestStartStop(t *testing.T) { startCounter := atomic.NewInt(0) stopCounter := atomic.NewInt(0) - var runners []cfgfile.Runner + runners := make([]cfgfile.Runner, 0, fakeRunnersNum) for i := 0; i < fakeRunnersNum; i++ { runners = append(runners, &fakeRunner{ id: i, @@ -98,7 +98,7 @@ func TestStartStop(t *testing.T) { } func TestDiagnosticsUnsupported(t *testing.T) { - var runners []cfgfile.Runner + runners := make([]cfgfile.Runner, 0, fakeRunnersNum) for i := 0; i < fakeRunnersNum; i++ { runners = append(runners, &fakeRunner{ id: i, @@ -119,7 +119,7 @@ func TestDiagnosticsUnsupported(t *testing.T) { } func TestDiagosticsSupported(t *testing.T) { - var runners []cfgfile.Runner + runners := make([]cfgfile.Runner, 0, fakeRunnersNum) for i := 0; i < fakeRunnersNum; i++ { runners = append(runners, &fakeRunnerDiag{ id: i, @@ -134,7 +134,7 @@ func TestDiagosticsSupported(t *testing.T) { } func TestString(t *testing.T) { - var runners []cfgfile.Runner + runners := make([]cfgfile.Runner, 0, fakeRunnersNum) for i := 0; i < fakeRunnersNum; i++ { runners = append(runners, &fakeRunner{ id: i, diff --git a/metricbeat/mb/module/testing.go b/metricbeat/mb/module/testing.go index 6d903fe62e5..779a630dd96 100644 --- a/metricbeat/mb/module/testing.go +++ b/metricbeat/mb/module/testing.go @@ -36,8 +36,11 @@ func receiveOneEvent(d testing.Driver, events <-chan beat.Event, timeout time.Du go func() { defer close(done) + ticker := time.NewTicker(timeout) + defer ticker.Stop() + select { - case <-time.Tick(timeout): + case <-ticker.C: d.Error("error", errors.New("timeout waiting for an event")) case event, ok := <-events: if !ok { diff --git a/metricbeat/mb/module/wrapper.go b/metricbeat/mb/module/wrapper.go index 6df0aaa2364..d41bdf01497 100644 --- a/metricbeat/mb/module/wrapper.go +++ b/metricbeat/mb/module/wrapper.go @@ -199,13 +199,13 @@ func (msw *metricSetWrapper) run(done <-chan struct{}, out chan<- beat.Event) { } switch ms := msw.MetricSet.(type) { - case mb.PushMetricSet: + case mb.PushMetricSet: //nolint:staticcheck // PushMetricSet is deprecated but not removed ms.Run(reporter.V1()) case mb.PushMetricSetV2: ms.Run(reporter.V2()) case mb.PushMetricSetV2WithContext: ms.Run(&channelContext{done}, reporter.V2()) - case mb.ReportingMetricSet, mb.ReportingMetricSetV2, mb.ReportingMetricSetV2Error, mb.ReportingMetricSetV2WithContext: + case mb.ReportingMetricSet, mb.ReportingMetricSetV2, mb.ReportingMetricSetV2Error, mb.ReportingMetricSetV2WithContext: //nolint:staticcheck // ReportingMetricSet is deprecated but not removed msw.startPeriodicFetching(&channelContext{done}, reporter) default: // Earlier startup stages prevent this from happening. @@ -242,7 +242,7 @@ func (msw *metricSetWrapper) startPeriodicFetching(ctx context.Context, reporter // and log a stack track if one occurs. func (msw *metricSetWrapper) fetch(ctx context.Context, reporter reporter) { switch fetcher := msw.MetricSet.(type) { - case mb.ReportingMetricSet: + case mb.ReportingMetricSet: //nolint:staticcheck // ReportingMetricSet is deprecated but not removed reporter.StartFetchTimer() fetcher.Fetch(reporter.V1()) case mb.ReportingMetricSetV2: @@ -292,7 +292,7 @@ func (msw *metricSetWrapper) Test(d testing.Driver) { type reporter interface { StartFetchTimer() - V1() mb.PushReporter + V1() mb.PushReporter //nolint:staticcheck // PushReporter is deprecated but not removed V2() mb.PushReporterV2 } @@ -309,7 +309,7 @@ type eventReporter struct { // startFetchTimer demarcates the start of a new fetch. The elapsed time of a // fetch is computed based on the time of this call. func (r *eventReporter) StartFetchTimer() { r.start = time.Now() } -func (r *eventReporter) V1() mb.PushReporter { +func (r *eventReporter) V1() mb.PushReporter { //nolint:staticcheck // PushReporter is deprecated but not removed return reporterV1{v2: r.V2(), module: r.msw.module.Name()} } func (r *eventReporter) V2() mb.PushReporterV2 { return reporterV2{r} } diff --git a/x-pack/winlogbeat/include/list.go b/x-pack/winlogbeat/include/list.go index af2071e249e..6ee9c51eefb 100644 --- a/x-pack/winlogbeat/include/list.go +++ b/x-pack/winlogbeat/include/list.go @@ -7,7 +7,7 @@ package include import ( - // Import packages that need to register themselves. + // Import packages that perform 'func init()'. _ "github.com/elastic/beats/v7/x-pack/winlogbeat/module/powershell" _ "github.com/elastic/beats/v7/x-pack/winlogbeat/module/security" _ "github.com/elastic/beats/v7/x-pack/winlogbeat/module/sysmon" From 5b67a542997cfcbbdaf79ba5d41ee892106ad852 Mon Sep 17 00:00:00 2001 From: Mirko Bez Date: Sat, 13 Apr 2024 11:22:03 +0200 Subject: [PATCH 147/313] [Metricbeat][Aerospike Module] Add support for TLS (#38126) * Add TLS Support for Metricbeat module aerospike * Module aerospike: add support for basic auth * Move the initialization of the clientpolicy from the metricset to the module * Aerospike: add test to check the initialization of ssl and user/password in the clientpolicy * Aerospike: Add support for cluster_name setting * Aerospike: Add test for ClusterName * Aerospike module: add commented username, password, cluster_name and TLS in the aerospike.yml.disabled config * Aerospike Module: Fix unit test * Fix test to avoid using hard-coded value * Adjust configuration of aerospike to show username/password and TLS settings * Executed goimports -w -local github.com/elastic metricbeat/module/aerospike * Improve Test error messages to provide more context * Drop support for Basic Auth that would require an upgrade of the dependencies * Fix Documentation by adding SSL reference - Add to config and config.reference ssl examples - Adjust the fields.yml to contain reference to ssl * Update metricbeat/module/aerospike/aerospike_test.go Co-authored-by: subham sarkar * Address reviewer's request: - [reference-config] add empty line after hosts list - [test] remove empty line after function header - [test] use generic pointer instead of custom one * Run mage config * mage check * Replace "Optional SSL/TLS. By default is off." with disabled by default * Convert ClusterName to a simple string instead of pointer to a string * Update x-pack/metricbeat.reference.yml --------- Co-authored-by: subham sarkar Co-authored-by: subham sarkar --- metricbeat/docs/modules/aerospike.asciidoc | 17 +++++ metricbeat/metricbeat.reference.yml | 15 +++++ .../aerospike/_meta/config.reference.yml | 15 +++++ metricbeat/module/aerospike/_meta/config.yml | 15 +++++ metricbeat/module/aerospike/_meta/fields.yml | 1 + metricbeat/module/aerospike/aerospike.go | 28 ++++++++ metricbeat/module/aerospike/aerospike_test.go | 67 +++++++++++++++++++ metricbeat/module/aerospike/fields.go | 2 +- .../module/aerospike/namespace/namespace.go | 15 +++-- metricbeat/modules.d/aerospike.yml.disabled | 15 +++++ x-pack/metricbeat/metricbeat.reference.yml | 15 +++++ 11 files changed, 200 insertions(+), 5 deletions(-) diff --git a/metricbeat/docs/modules/aerospike.asciidoc b/metricbeat/docs/modules/aerospike.asciidoc index b900aae5a13..a2c873665e1 100644 --- a/metricbeat/docs/modules/aerospike.asciidoc +++ b/metricbeat/docs/modules/aerospike.asciidoc @@ -41,8 +41,25 @@ metricbeat.modules: enabled: true period: 10s hosts: ["localhost:3000"] + + # Aerospike Cluster Name + #cluster_name: myclustername + + # Optional SSL/TLS (disabled by default) + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" ---- +This module supports TLS connections when using `ssl` config field, as described in <>. + [float] === Metricsets diff --git a/metricbeat/metricbeat.reference.yml b/metricbeat/metricbeat.reference.yml index 3f9ccb0a9db..2538bef77d3 100644 --- a/metricbeat/metricbeat.reference.yml +++ b/metricbeat/metricbeat.reference.yml @@ -149,6 +149,21 @@ metricbeat.modules: period: 10s hosts: ["localhost:3000"] + # Aerospike Cluster Name + #cluster_name: myclustername + + # Optional SSL/TLS (disabled by default) + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" + #-------------------------------- Apache Module -------------------------------- - module: apache metricsets: ["status"] diff --git a/metricbeat/module/aerospike/_meta/config.reference.yml b/metricbeat/module/aerospike/_meta/config.reference.yml index 38aca68f951..cca162aa3db 100644 --- a/metricbeat/module/aerospike/_meta/config.reference.yml +++ b/metricbeat/module/aerospike/_meta/config.reference.yml @@ -3,3 +3,18 @@ enabled: true period: 10s hosts: ["localhost:3000"] + + # Aerospike Cluster Name + #cluster_name: myclustername + + # Optional SSL/TLS (disabled by default) + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" diff --git a/metricbeat/module/aerospike/_meta/config.yml b/metricbeat/module/aerospike/_meta/config.yml index a4e7384ed55..42db4e48332 100644 --- a/metricbeat/module/aerospike/_meta/config.yml +++ b/metricbeat/module/aerospike/_meta/config.yml @@ -3,3 +3,18 @@ # - namespace period: 10s hosts: ["localhost:3000"] + + # Aerospike Cluster Name + #cluster_name: myclustername + + # Optional SSL/TLS (disabled by default) + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" diff --git a/metricbeat/module/aerospike/_meta/fields.yml b/metricbeat/module/aerospike/_meta/fields.yml index 2f6aa736c7a..496aa734452 100644 --- a/metricbeat/module/aerospike/_meta/fields.yml +++ b/metricbeat/module/aerospike/_meta/fields.yml @@ -3,6 +3,7 @@ description: > Aerospike module release: ga + settings: ["ssl"] fields: - name: aerospike type: group diff --git a/metricbeat/module/aerospike/aerospike.go b/metricbeat/module/aerospike/aerospike.go index 65cfabf6239..745914c055d 100644 --- a/metricbeat/module/aerospike/aerospike.go +++ b/metricbeat/module/aerospike/aerospike.go @@ -22,9 +22,37 @@ import ( "strconv" "strings" + "github.com/elastic/elastic-agent-libs/transport/tlscommon" + as "github.com/aerospike/aerospike-client-go" ) +type Config struct { + ClusterName string `config:"cluster_name"` + TLS *tlscommon.Config `config:"ssl"` +} + +// DefaultConfig return default config for the aerospike module. +func DefaultConfig() Config { + return Config{} +} + +func ParseClientPolicy(config Config) (*as.ClientPolicy, error) { + clientPolicy := as.NewClientPolicy() + if config.TLS.IsEnabled() { + tlsconfig, err := tlscommon.LoadTLSConfig(config.TLS) + if err != nil { + return nil, fmt.Errorf("could not initialize TLS configurations %w", err) + } + clientPolicy.TlsConfig = tlsconfig.ToConfig() + } + + if config.ClusterName != "" { + clientPolicy.ClusterName = config.ClusterName + } + return clientPolicy, nil +} + func ParseHost(host string) (*as.Host, error) { pieces := strings.Split(host, ":") if len(pieces) != 2 { diff --git a/metricbeat/module/aerospike/aerospike_test.go b/metricbeat/module/aerospike/aerospike_test.go index cb533e5a6bf..9dbcbeec4a5 100644 --- a/metricbeat/module/aerospike/aerospike_test.go +++ b/metricbeat/module/aerospike/aerospike_test.go @@ -23,6 +23,8 @@ import ( "github.com/stretchr/testify/assert" + "github.com/elastic/elastic-agent-libs/transport/tlscommon" + as "github.com/aerospike/aerospike-client-go" ) @@ -96,3 +98,68 @@ func TestParseInfo(t *testing.T) { assert.Equal(t, test.expected, result, test.Name) } } + +func pointer[T any](d T) *T { + return &d +} + +func TestParseClientPolicy(t *testing.T) { + sampleClusterName := "TestCluster" + + TLSPolicy := as.NewClientPolicy() + tlsconfig, _ := tlscommon.LoadTLSConfig(&tlscommon.Config{Enabled: pointer(true)}) + TLSPolicy.TlsConfig = tlsconfig.ToConfig() + + ClusterNamePolicy := as.NewClientPolicy() + ClusterNamePolicy.ClusterName = sampleClusterName + + tests := []struct { + Name string + Config Config + expectedClientPolicy *as.ClientPolicy + expectedErr error + }{ + { + Name: "Empty configuration leads to default policy", + Config: Config{}, + expectedClientPolicy: as.NewClientPolicy(), + expectedErr: nil, + }, + { + Name: "TLS Declaration", + Config: Config{ + TLS: &tlscommon.Config{ + Enabled: pointer(true), + }, + }, + expectedClientPolicy: TLSPolicy, + expectedErr: nil, + }, + { + Name: "Cluster Name Setting", + Config: Config{ + ClusterName: sampleClusterName, + }, + expectedClientPolicy: ClusterNamePolicy, + expectedErr: nil, + }, + } + + for _, test := range tests { + result, err := ParseClientPolicy(test.Config) + if err != nil { + if test.expectedErr != nil { + assert.Equalf(t, test.expectedErr.Error(), err.Error(), + "Aerospike policy the error produced is not the one expected: got '%s', expected '%s'", err.Error(), test.expectedErr.Error()) + continue + } + t.Error(err) + continue + } + assert.Equalf(t, test.expectedClientPolicy.ClusterName, result.ClusterName, + "Aerospike policy cluster name is wrong. Got '%s' expected '%s'", result.ClusterName, test.expectedClientPolicy.ClusterName) + if test.Config.TLS.IsEnabled() { + assert.NotNil(t, result.TlsConfig, "Aerospike policy: TLS is not set even though TLS is specified in the configuration") + } + } +} diff --git a/metricbeat/module/aerospike/fields.go b/metricbeat/module/aerospike/fields.go index 7fe2567ee93..d7ac01c3283 100644 --- a/metricbeat/module/aerospike/fields.go +++ b/metricbeat/module/aerospike/fields.go @@ -32,5 +32,5 @@ func init() { // AssetAerospike returns asset data. // This is the base64 encoded zlib format compressed contents of module/aerospike. func AssetAerospike() string { - return "eJzUmMGO4zYMhu95CmIve2nyADkUWLSXHnZRFL0VxYCR6FgdWTQkalIDffhCdjzj2HKSycxuPDrkYEvk/8mkRGYNj9RsAclzqM0jrQDEiKUtfPrSP/u0AtAUlDe1GHZb+HkFAPD8HirW0aalnixhoC3scQVQGLI6bNvJa3BY0amjNKSp03TPsT4+yXg6NTU0l35DjYqe3+RMzprtRs7IKUk/xjKGUpQ15OTk1ZyWC3rS+KW1BkFQwmb0NqdiqESTJaHJ63NqrlA0UNU5APHoAqq0IOSVnlM7VEzes8/O6EVbdvuZCVfoTuNbrHbkgYvjl8pSSIkCBRpLGg5GSkDXicuRDcKQ5aHg6PRiGDyFaIU0GAeY9EGr7zxGiEpRCD8M4uiviPYMz3nJYiriOE677yf50r4nPRo4ylR2L9kT5uLkvZIzmf/oqTlm6FRcCIW7JeFE7SQDP0z+TYJnkdmX3/ArUu/gzXe9GFv7Hz35MhA3Xov3j+cpyyIDem7LZ0L6pdB7MmoczzeXnL+a8AhB2OOeurB9Zd2JT2gs7ixtapXbwk5ZUGhJPxSWMTepYF+hbKEmr6b19BUYaXwlDNFT2kWCyjhTxQoUOzH7yDGAblFTyQ+oPIcAaG37NBwLpr4lmD9LCk/3B/29W5y+GBcdlsIalZGmFZi8gJQmXEMkLGg3u0Yol7Jng7+HmVt8BcqfyXtn4Jnl+ImsZYXpKhUewUB7+KcnrM+QxUB6gWBJFuya65l6nvJQPew8oSppXO10NDtmS+hedwD8VoD4SD8NOvsSA/SO4HNp9uX6gEJ+/VfC+K+iin3z97pW8vliqPXiu0XvdWp9ba2dnluvbZgXmMrdJl1M5tfEv0bBuyXBl4qjkwEZKxVr08V/UvZGOOM0/btMunQHtfLeiBgWzBhIsdPom46UwhtZF3UVHXlvPq3Tb/a4e6TmwH58gl8Q+O3Z88TuSyesaVNyyP8beZtX1gQTkycO3xkzOZwl5N0/pCYF6s2XyB+k2OuZZu3S7VFhEMp1aWfD9IowfGkT/FHfMNbgUBpVAvpUw4p5oqOQTIdzUuD9EKHGjdPk5TyYzZMgXD+0rVD+w76lqBnLMQFU9J6c2Kb9eyYVmQfj9l0vFjar/wMAAP//lvJazw==" + return "eJzUmMFu4zYQhu9+ikEue6n9AD4UWLSXHnZRFL0tFsGYHFlsKFLgDOMK6MMXlKxElijbcbIbhQcfRHHm/6gZcsZreKBmC0jBc20eaAUgRixt4e5z/+xuBaCJVTC1GO+28OsKAOBpHiqvo01LA1lCpi3scQXAJGLcnrfw7Y7Z3n1fARSGrOZta2ANDis6dZ6GNHUyEXysj08y3k9NDc2lX65R0dNMzuSs2W7kjJzS9WMsYyhFWUNOTqbmtFzQk8ZvrTVgQeHNaDanYqhEkyWhyfQ5NVcoGqjqHIAEdIwqLeC80nNqh4opBB+yb/SirXf7mReu0J3G11jtKIAvjl8qSyElChRoLGk4GCkBXScuRzYIQy/3hY9OL4YhEEcrpME4wKQPWn3nMTgqRcw/DeLor4j2DM95yWIq8nGcdj9O8qV9T3o0+ChT2b3kQJiLk7dKzmT+o6fmmKFTcSEU3i0JJ2onGfhh8m8SPIvMvvyGX5F6h2B+6MXY2v/oyZeBuPFafP94nrIsMqDntnwmpJ8LvUejxvF8c8n5u+EHYPEB99SF7QvrTnxEY3FnaVOr3BZ2ylihJX1fWI+5lwofKpQt1BTUtJ6+AiONL4QcA6VdJKiMM1WsQHknZh99ZNAtair5AVXwzIDWtk/5WDD1LcH8WVIEen/QP7vF6Yv5osNSWKMy0rQCkxeQ0vA1ROIF7WbXCOVS9mzw9zBzi69A+Tt57ww8sRw/kbVeYbpKxY9goD380xOvz5BFJr1AsCQLds31TD1Peajud4FQlTSudjqanfeW0L3sAPijAAmRfhl0+yUy9I7gU2n25fqAQmH9LWH8V1HlQ/N9XSv5dDHUevHdorc6tb601k7PrZc2zAtM5W6TLibzS+Jfo+C7JcHnykcnAzKvVKxNF/9J2SvhjNP07zLp0h3UynslIi+YkUl5pzE0HSnxK1kXdRUdeW8+rdNv9rh7oObgw/gEvyDw65Pnid3nTljTpvSc/zfyNq9eE0xMnjh8Y8zkcJbQ7/4hNSlQb75E/iLlg55p1i7dHhWyUK5LOxumV4Thc5sQjvqGsQaH0qgSMKQaVswjHYVkOpyTAu+nCDVunCbP58FsnrD4+r5thfIf9jVFzViOYVAxBHJim/bvmVRkHozbd70Yb1b/BwAA//89umEy" } diff --git a/metricbeat/module/aerospike/namespace/namespace.go b/metricbeat/module/aerospike/namespace/namespace.go index 97beb050ce1..265db9f933b 100644 --- a/metricbeat/module/aerospike/namespace/namespace.go +++ b/metricbeat/module/aerospike/namespace/namespace.go @@ -42,15 +42,16 @@ func init() { // multiple fetch calls. type MetricSet struct { mb.BaseMetricSet - host *as.Host - client *as.Client + host *as.Host + clientPolicy *as.ClientPolicy + client *as.Client } // New create a new instance of the MetricSet // Part of new is also setting up the configuration by processing additional // configuration entries if needed. func New(base mb.BaseMetricSet) (mb.MetricSet, error) { - config := struct{}{} + config := aerospike.DefaultConfig() if err := base.Module().UnpackConfig(&config); err != nil { return nil, err } @@ -60,9 +61,15 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { return nil, fmt.Errorf("Invalid host format, expected hostname:port: %w", err) } + clientPolicy, err := aerospike.ParseClientPolicy(config) + if err != nil { + return nil, fmt.Errorf("could not initialize aerospike client policy: %w", err) + } + return &MetricSet{ BaseMetricSet: base, host: host, + clientPolicy: clientPolicy, }, nil } @@ -105,7 +112,7 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) error { // create an aerospike client if it doesn't exist yet func (m *MetricSet) connect() error { if m.client == nil { - client, err := as.NewClientWithPolicyAndHost(as.NewClientPolicy(), m.host) + client, err := as.NewClientWithPolicyAndHost(m.clientPolicy, m.host) if err != nil { return err } diff --git a/metricbeat/modules.d/aerospike.yml.disabled b/metricbeat/modules.d/aerospike.yml.disabled index 5294b90301e..35aad6b8e40 100644 --- a/metricbeat/modules.d/aerospike.yml.disabled +++ b/metricbeat/modules.d/aerospike.yml.disabled @@ -6,3 +6,18 @@ # - namespace period: 10s hosts: ["localhost:3000"] + + # Aerospike Cluster Name + #cluster_name: myclustername + + # Optional SSL/TLS (disabled by default) + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" diff --git a/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index f71e58904fd..6877f2b4534 100644 --- a/x-pack/metricbeat/metricbeat.reference.yml +++ b/x-pack/metricbeat/metricbeat.reference.yml @@ -158,6 +158,21 @@ metricbeat.modules: period: 10s hosts: ["localhost:3000"] + # Aerospike Cluster Name + #cluster_name: myclustername + + # Optional SSL/TLS (disabled by default) + #ssl.enabled: true + + # List of root certificates for SSL/TLS server verification + #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"] + + # Certificate for SSL/TLS client authentication + #ssl.certificate: "/etc/pki/client/cert.crt" + + # Client certificate key file + #ssl.key: "/etc/pki/client/cert.key" + #------------------------------- Airflow Module ------------------------------- - module: airflow host: "localhost" From 692658c9fed090600bfdc067b0a44eff8f6dbe4c Mon Sep 17 00:00:00 2001 From: Chris Berkhout Date: Mon, 15 Apr 2024 19:12:39 +1000 Subject: [PATCH 148/313] [filebeat][threatintel] MISP splitting fix for empty responses (#38917) Two fixes related to empty server responses: - Set `response.split.ignore_empty_value` to `true` to avoid indexing `{response:[]}`, which is the MISP server's empty response body. According to the `response.split` [documentation][1], "If the split target is empty the parent document will be kept. If documents with empty splits should be dropped, the `ignore_empty_value` option should be set to `true`." - Use the null-safe operator for a chained method invocation following a null-safe field access. All other null-safe operator usages were also reviewed and corrected where necessary. [1]: https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-httpjson.html#response-split --------- Co-authored-by: Dan Kortschak --- CHANGELOG.next.asciidoc | 2 +- .../module/threatintel/misp/config/config.yml | 1 + .../threatintel/misp/ingest/pipeline.yml | 36 +++++++++---------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index b58ec371cff..cecdeefd875 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -103,7 +103,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix handling of truncated files in Filestream {issue}38070[38070] {pull}38416[38416] - Fix panic when more than 32767 pipeline clients are active. {issue}38197[38197] {pull}38556[38556] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] - +- [threatintel] MISP splitting fix for empty responses {issue}38739[38739] {pull}38917[38917] *Heartbeat* diff --git a/x-pack/filebeat/module/threatintel/misp/config/config.yml b/x-pack/filebeat/module/threatintel/misp/config/config.yml index 9ad66efcf54..2f6a2f0e12f 100644 --- a/x-pack/filebeat/module/threatintel/misp/config/config.yml +++ b/x-pack/filebeat/module/threatintel/misp/config/config.yml @@ -49,6 +49,7 @@ request.transforms: response.split: target: body.response + ignore_empty_value: true split: target: body.Event.Attribute ignore_empty_value: true diff --git a/x-pack/filebeat/module/threatintel/misp/ingest/pipeline.yml b/x-pack/filebeat/module/threatintel/misp/ingest/pipeline.yml index 3cdc64d8703..8caba8e738c 100644 --- a/x-pack/filebeat/module/threatintel/misp/ingest/pipeline.yml +++ b/x-pack/filebeat/module/threatintel/misp/ingest/pipeline.yml @@ -63,12 +63,12 @@ processors: field: - misp.Attribute ignore_missing: true - if: ctx.misp?.Attribute.size() == 0 + if: ctx.misp?.Attribute?.size() == 0 - remove: field: - misp.Object ignore_missing: true - if: ctx.misp?.Object.size() == 0 + if: ctx.misp?.Object?.size() == 0 - date: field: misp.timestamp formats: @@ -144,12 +144,12 @@ processors: - set: field: threat.indicator.type value: file - if: "ctx.misp?.attribute?.type != null && (['md5', 'impfuzzy', 'imphash', 'pehash', 'sha1', 'sha224', 'sha256', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'sha384', 'sha512', 'sha512/224', 'sha512/256', 'ssdeep', 'tlsh', 'vhash'].contains(ctx.misp?.attribute?.type) || ctx.misp?.attribute?.type.startsWith('filename'))" + if: "['md5', 'impfuzzy', 'imphash', 'pehash', 'sha1', 'sha224', 'sha256', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'sha384', 'sha512', 'sha512/224', 'sha512/256', 'ssdeep', 'tlsh', 'vhash'].contains(ctx.misp?.attribute?.type) || ctx.misp?.attribute?.type?.startsWith('filename') == true" - rename: field: misp.attribute.value target_field: "threat.indicator.file.hash.{{misp.attribute.type}}" ignore_missing: true - if: "ctx.threat?.indicator?.type == 'file' && ctx.misp?.attribute?.type != null && !ctx.misp?.attribute?.type.startsWith('filename')" + if: "ctx.threat?.indicator?.type == 'file' && ctx.misp?.attribute?.type != null && !ctx.misp.attribute.type.startsWith('filename')" - rename: field: misp.attribute.value target_field: threat.indicator.file.name @@ -160,23 +160,23 @@ processors: patterns: - "%{WORD}\\|%{WORD:_tmp.hashtype}" ignore_missing: true - if: ctx.misp?.attribute?.type != null && ctx.misp?.attribute?.type.startsWith('filename|') + if: ctx.misp?.attribute?.type?.startsWith('filename|') == true - grok: field: misp.attribute.value patterns: - "%{DATA:threat.indicator.file.name}\\|%{GREEDYDATA:_tmp.hashvalue}" ignore_missing: true - if: ctx.misp?.attribute?.type != null && ctx.misp?.attribute?.type.startsWith('filename|') + if: ctx.misp?.attribute?.type?.startsWith('filename|') == true - set: field: threat.indicator.file.hash.{{_tmp.hashtype}} value: "{{_tmp.hashvalue}}" - if: "ctx.misp?.attribute?.type != null && ctx.misp?.attribute?.type.startsWith('filename|') && ctx?._tmp?.hashvalue != null && ctx?._tmp?.hashtype != null" + if: "ctx.misp?.attribute?.type?.startsWith('filename|') == true && ctx._tmp?.hashvalue != null && ctx._tmp?.hashtype != null" ## URL/URI indicator operations - set: field: threat.indicator.type value: url - if: "ctx.misp?.attribute?.type != null && ['url', 'link', 'uri'].contains(ctx.misp?.attribute?.type)" + if: "['url', 'link', 'uri'].contains(ctx.misp?.attribute?.type)" - uri_parts: field: misp.attribute.value target_field: threat.indicator.url @@ -193,7 +193,7 @@ processors: - set: field: threat.indicator.type value: windows-registry-key - if: "ctx.misp?.attribute?.type != null && ctx.misp?.attribute?.type.startsWith('regkey')" + if: "ctx.misp?.attribute?.type?.startsWith('regkey') == true" - rename: field: misp.attribute.value target_field: threat.indicator.registry.key @@ -210,7 +210,7 @@ processors: - set: field: threat.indicator.type value: autonomous-system - if: "ctx.misp?.attribute?.type != null && ctx.misp?.attribute?.type == 'AS'" + if: "ctx.misp?.attribute?.type == 'AS'" - convert: field: misp.attribute.value type: long @@ -222,11 +222,11 @@ processors: - set: field: threat.indicator.type value: domain-name - if: "ctx.misp?.attribute?.type != null && (ctx.misp?.attribute?.type == 'hostname' || ctx.misp?.attribute?.type.startsWith('domain'))" + if: "ctx.misp?.attribute?.type == 'hostname' || ctx.misp?.attribute?.type?.startsWith('domain') == true" - set: field: threat.indicator.type value: ipv4-addr - if: "ctx.misp?.attribute?.type != null && ['ip-src', 'ip-src|port', 'ip-dst', 'ip-dst|port'].contains(ctx.misp?.attribute?.type)" + if: "['ip-src', 'ip-src|port', 'ip-dst', 'ip-dst|port'].contains(ctx.misp?.attribute?.type)" - rename: field: misp.attribute.value target_field: threat.indicator.url.domain @@ -257,11 +257,11 @@ processors: - set: field: threat.indicator.type value: email-addr - if: "ctx.misp?.attribute?.type != null && ['email-dst', 'email-src'].contains(ctx.misp?.attribute?.type)" + if: "['email-dst', 'email-src'].contains(ctx.misp?.attribute?.type)" - set: field: threat.indicator.type value: email-message - if: "ctx.misp?.attribute?.type != null && ctx.misp?.attribute?.type.startsWith('email') && !['email-dst', 'email-src'].contains(ctx.misp?.attribute?.type)" + if: "ctx.misp?.attribute?.type?.startsWith('email') == true && !['email-dst', 'email-src'].contains(ctx.misp.attribute.type)" - rename: field: misp.attribute.value target_field: threat.indicator.email.address @@ -274,13 +274,13 @@ processors: - append: field: user.roles value: "reporting_user" - if: ctx?.user?.email != null + if: ctx.user?.email != null ## MAC Address indicator operations - set: field: threat.indicator.type value: mac-addr - if: "ctx.misp?.attribute?.type != null && ['mac-address', 'mac-eui-64'].contains(ctx.misp?.attribute?.type)" + if: "['mac-address', 'mac-eui-64'].contains(ctx.misp?.attribute?.type)" - rename: field: misp.attribute.value target_field: threat.indicator.mac @@ -337,12 +337,12 @@ processors: ###################### - remove: field: event.original - if: "ctx?.tags == null || !(ctx.tags.contains('preserve_original_event'))" + if: "ctx.tags == null || !(ctx.tags.contains('preserve_original_event'))" ignore_failure: true ignore_missing: true - script: lang: painless - if: ctx?.misp != null + if: ctx.misp != null source: | void handleMap(Map map) { for (def x : map.values()) { From d9b5f78c57ae3678ec9eda4a2c3cc35990b2b6c1 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Mon, 15 Apr 2024 12:49:53 +0300 Subject: [PATCH 149/313] Fix macOS failures with auditbeat (#38925) and refactor the pipeline to be similar to other ones wrt notifications, build commands and no usage of BEATS_PROJECT_NAME --- .buildkite/auditbeat/auditbeat-pipeline.yml | 160 +++++++++++++------- .buildkite/pipeline.yml | 1 + 2 files changed, 106 insertions(+), 55 deletions(-) diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index 1fa682d76f2..801768c271e 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -2,11 +2,8 @@ name: "beats-auditbeat" env: - BEATS_PROJECT_NAME: "auditbeat" - - ASDF_MAGE_VERSION: 1.15.0 - AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" @@ -23,13 +20,8 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - -notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME" + # Other deps + ASDF_MAGE_VERSION: 1.15.0 steps: - group: "Auditbeat Mandatory Testing" @@ -37,17 +29,9 @@ steps: steps: - label: ":ubuntu: Auditbeat Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "auditbeat/build/*.xml" - - "auditbeat/build/*.json" - - - label: ":ubuntu: Auditbeat Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + command: | + cd auditbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -55,9 +39,14 @@ steps: artifact_paths: - "auditbeat/build/*.xml" - "auditbeat/build/*.json" + notify: + - github_commit_status: + context: "auditbeat: Ubuntu Unit Tests" - label: ":rhel: Auditbeat Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + command: | + cd auditbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -65,10 +54,13 @@ steps: artifact_paths: - "auditbeat/build/*.xml" - "auditbeat/build/*.json" + notify: + - github_commit_status: + context: "auditbeat: RHEL Unit Tests" - label: ":windows: Auditbeat Win-2016 Unit Tests" command: | - Set-Location -Path $BEATS_PROJECT_NAME + Set-Location -Path auditbeat mage build unitTest agents: provider: "gcp" @@ -79,10 +71,13 @@ steps: artifact_paths: - "auditbeat/build/*.xml" - "auditbeat/build/*.json" + notify: + - github_commit_status: + context: "auditbeat: Windows 2016 Unit Tests" - label: ":windows: Auditbeat Win-2022 Unit Tests" command: | - Set-Location -Path $BEATS_PROJECT_NAME + Set-Location -Path auditbeat mage build unitTest agents: provider: "gcp" @@ -93,109 +88,164 @@ steps: artifact_paths: - "auditbeat/build/*.xml" - "auditbeat/build/*.json" + notify: + - github_commit_status: + context: "auditbeat: Windows 2022 Unit Tests" - label: ":linux: Auditbeat Crosscompile" - command: "make -C $BEATS_PROJECT_NAME crosscompile" + command: | + make -C auditbeat crosscompile env: GOX_FLAGS: "-arch amd64" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "auditbeat: Cross compile" - - group: "Auditbeat ARM Tests" - key: "auditbeat-extended-tests-arm" + - group: "Auditbeat Linux arm64 Tests" + key: "auditbeat-extended-tests-linux-arm64" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ steps: - - label: ":arm: ARM64 Unit Tests" + - label: ":linux: Auditbeat Linux arm64 Unit Tests" key: "auditbeat-extended-arm64-unit-tests" - command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" + command: | + set -euo pipefail + cd auditbeat + mage unitTest agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: "auditbeat/build/*.*" + notify: + - github_commit_status: + context: "metricbeat: Linux arm64 tests" - group: "Auditbeat MacOS Extended" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - - label: ":mac: MacOS Unit Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + - label: ":mac: Auditbeat macOS x86_64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd auditbeat + mage unitTest agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: "auditbeat/build/*.*" + notify: + - github_commit_status: + context: "auditbeat: Extended MacOS x86_64 Unit Tests" - - label: ":mac: MacOS ARM Unit Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" + - label: ":mac: Auditbeat macOS arm64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd auditbeat + mage unitTest agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: "auditbeat/build/*.*" + notify: + - github_commit_status: + context: "auditbeat: Extended MacOS arm64 Unit Tests" - group: "Auditbeat Windows Extended Testing" key: "auditbeat-extended-tests-win" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ steps: - label: ":windows: Auditbeat Win-2019 Unit Tests" key: "auditbeat-extended-win-2019-unit-tests" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path auditbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_WIN_2019}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: "auditbeat/build/*.*" + notify: + - github_commit_status: + context: "auditbeat: Extended Windows 2019 Unit Tests" - label: ":windows: Auditbeat Win-10 Unit Tests" key: "auditbeat-extended-win-10-unit-tests" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path auditbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_WIN_10}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: "auditbeat/build/*.*" + notify: + - github_commit_status: + context: "auditbeat: Extended Windows 10 Unit Tests" - label: ":windows: Auditbeat Win-11 Unit Tests" key: "auditbeat-extended-win-11-unit-tests" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path auditbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_WIN_11}" machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" + artifact_paths: "auditbeat/build/*.*" + notify: + - github_commit_status: + context: "auditbeat: Extended Windows 11 Unit Tests" + + - wait: ~ + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: "auditbeat-mandatory-tests" - group: "Auditbeat Packaging" key: "auditbeat-packaging" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" - depends_on: - - "auditbeat-mandatory-tests" - steps: - - label: ":ubuntu: Auditbeat/Packaging Linux X86" + - label: ":ubuntu: Auditbeat/Packaging Linux" key: "auditbeat-package-linux-x86" env: - PLATFORMS: "${PACKAGING_PLATFORMS}" + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" SNAPSHOT: true - command: "cd $BEATS_PROJECT_NAME && mage package" + command: | + cd auditbeat + mage package agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "auditbeat: Packaging Linux" - - label: ":linux: Auditbeat/Packaging Linux ARM" - key: "auditbeat-package-linux-arm" + - label: ":linux: Auditbeat/Packaging Linux arm64" + key: "auditbeat-package-linux-arm64" env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PLATFORMS: "linux/arm64" PACKAGES: "docker" SNAPSHOT: true - command: "cd $BEATS_PROJECT_NAME && mage package" + command: | + cd auditbeat + mage package agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" + notify: + - github_commit_status: + context: "auditbeat: Packaging Linux arm64" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index f424b30f45c..369812c4ac9 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -10,6 +10,7 @@ steps: - auditbeat/ - .buildkite/auditbeat/ - .buildkite/scripts + - .buildkite/hooks/ #OSS - go.mod - pytest.ini From 4f4fad607566fd824cfd689c2d7a38b13b9a026d Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Mon, 15 Apr 2024 13:08:28 +0300 Subject: [PATCH 150/313] Move to static BK pipeline for x-pack/metricbeat (#38913) This commit refactors the x-pack/metricbeat pipeline to the pipeline selector approach, as laid out in #38783 Relates: https://github.com/elastic/ingest-dev/issues/3072 --- .buildkite/hooks/pre-command | 5 +- .buildkite/pipeline.yml | 27 ++ .buildkite/pull-requests.json | 16 - .buildkite/scripts/cloud_tests.sh | 4 +- .buildkite/scripts/common.sh | 4 - .../generate_xpack_metricbeat_pipeline.sh | 271 -------------- .../x-pack/pipeline.xpack.metricbeat.yml | 340 +++++++++++++++--- 7 files changed, 323 insertions(+), 344 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_metricbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 6843a8ed540..f3e74714e94 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -62,7 +62,6 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-winlogbeat" "beats-winlogbeat" "beats-xpack-libbeat" - "beats-xpack-metricbeat" "beats-xpack-packetbeat" "beats-xpack-winlogbeat" "beats-xpack-dockerlogbeat" @@ -80,8 +79,8 @@ for slug in "${ENABLED_BEATS_PIPELINES_SLUGS[@]}"; do fi done -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then - if [[ "$BUILDKITE_STEP_KEY" == "extended-cloud-test" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == *"xpack-metricbeat"* || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_STEP_KEY" == *"extended-cloud-test"* ]]; then BEATS_AWS_SECRET_KEY=$(retry_with_count 5 vault kv get -field secret_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) export BEATS_AWS_SECRET_KEY BEATS_AWS_ACCESS_KEY=$(retry_with_count 5 vault kv get -field access_key ${AWS_SERVICE_ACCOUNT_SECRET_PATH}) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 369812c4ac9..978949b51d0 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -102,6 +102,33 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger x-pack/metricbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/metricbeat/ + - x-pack/libbeat/common/aws + - .buildkite/x-pack/pipeline.xpack.metricbeat.yml + - .buildkite/scripts + - .buildkite/hooks/ + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/** + - testing/** + config: + trigger: "beats-xpack-metricbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Xpack/Winlogbeat" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 2d63d9b7fcb..d787efb5a69 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -112,22 +112,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-metricbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/metricbeat$", - "always_trigger_comment_regex": "^/test x-pack/metricbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/metricbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, { "enabled": true, "pipelineSlug": "beats-xpack-auditbeat", diff --git a/.buildkite/scripts/cloud_tests.sh b/.buildkite/scripts/cloud_tests.sh index 3ca52305188..3deeb89671f 100755 --- a/.buildkite/scripts/cloud_tests.sh +++ b/.buildkite/scripts/cloud_tests.sh @@ -2,9 +2,7 @@ set -euo pipefail # What Terraform Module will run -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then - export MODULE_DIR="x-pack/metricbeat/module/aws" -elif [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then export MODULE_DIR="x-pack/filebeat/input/awss3/_meta/terraform" fi diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index c1c009141c7..386bc5aaf42 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -87,10 +87,6 @@ xpack_libbeat_changeset=( "^x-pack/libbeat/.*" ) -xpack_metricbeat_changeset=( - "^x-pack/metricbeat/.*" - ) - xpack_osquerybeat_changeset=( "^x-pack/osquerybeat/.*" ) diff --git a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh deleted file mode 100755 index 788cfba1e54..00000000000 --- a/.buildkite/scripts/generate_xpack_metricbeat_pipeline.sh +++ /dev/null @@ -1,271 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-metricbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: | - cd $BEATS_PROJECT_NAME - mage build unitTest - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":go: Go (MODULE) Integration Tests" - key: "mandatory-int-test" - command: | - cd $BEATS_PROJECT_NAME - mage goIntegTest - env: - MODULE: $MODULE - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go (MODULE) Integration Tests" - - - label: ":python: Python (MODULE) Integration Tests" - key: "mandatory-python-int-test" - command: | - cd $BEATS_PROJECT_NAME - mage pythonIntegTest - env: - MODULE: $MODULE - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Python (MODULE) Integration Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -#TODO: replace by commented-out below condition when issues mentioned in the PR https://github.com/elastic/beats/pull/38081 are resolved -if are_conditions_met_aws_tests || are_conditions_met_macos_tests ; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML -fi - -if are_conditions_met_aws_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: Cloud (MODULE) Tests" - key: "extended-cloud-test" - command: ".buildkite/scripts/cloud_tests.sh" - skip: "Does not belong to a stage, exists but not run" - env: - MODULE: $MODULE - ASDF_TERRAFORM_VERSION: 1.0.2 - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Cloud (MODULE) Tests" - -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "~~~ Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 855c59b8bac..3b79117e46b 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -3,13 +3,13 @@ name: "beats-xpack-metricbeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/metricbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" @@ -18,54 +18,300 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "x-pack/metricbeat Mandatory Tests" + key: "x-pack-metricbeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: | + cd x-pack/metricbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Ubuntu Unit Tests" + + - label: ":go: Go (MODULE) Integration Tests" + key: "mandatory-int-test" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/metricbeat + echo "~~~ Will run tests with env var MODULE=$$MODULE" + cd x-pack/metricbeat && mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Go (MODULE) Integration Tests" + + - label: ":python: Python (MODULE) Integration Tests" + key: "mandatory-python-int-test" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/metricbeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + cd x-pack/metricbeat && mage pythonIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Python (MODULE) Integration Tests" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path x-pack/metricbeat + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path x-pack/metricbeat + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Windows 2022 Unit Tests" + + - group: "x-pack/metricbeat Extended Windows Tests" + key: "x-pack-metricbeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path x-pack/metricbeat + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Windows 10 Unit Tests" - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Metricbeat - run_xpack_metricbeat" - key: "run_xpack_metricbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Metricbeat - run_xpack_metricbeat_macos_tests" - key: "run_xpack_metricbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Metricbeat - run_xpack_metricbeat_aws_tests" - key: "run_xpack_metricbeat_aws_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - if: "build.source == 'ui'" + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path x-pack/metricbeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path x-pack/metricbeat + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Windows 2019 Unit Tests" + + - group: "x-pack/metricbeat Extended Tests" + key: "x-pack-metricbeat-extended-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS|aws).*/ + steps: + - label: ":mac: MacOS x86_64 Unit Tests" + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/metricbeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: MacOS x86_64 Unit Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + skip: "https://github.com/elastic/beats/issues/33036" + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/metricbeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: MacOS arm64 Unit Tests" + + - label: ":linux: Cloud (MODULE) Tests" + key: "x-pack-metricbeat-extended-cloud-test" + skip: "doesn't belong in a stage in Jenkins, thus skipped" + # see link in Jenkins: https://github.com/elastic/beats/blob/ccd7b135df70358f8a02393d9bd8b716428b8048/x-pack/metricbeat/Jenkinsfile.yml#L39 + # additionally skipping due to https://github.com/elastic/ingest-dev/issues/3170 + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/metricbeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + + .buildkite/scripts/cloud_tests.sh + env: + ASDF_TERRAFORM_VERSION: 1.0.2 + AWS_REGION: "eu-central-1" + BEATS_PROJECT_NAME: x-pack/metricbeat + MODULE_DIR: x-pack/metricbeat/module/aws + REPO: beats + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Cloud (MODULE) Tests" + + - label: ":linux: Cloud AWS (MODULE) Tests" + key: "x-pack-metricbeat-extended-cloud-test-aws" + if: build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ + skip: "https://github.com/elastic/beats/issues/36425" + # see commented out section in Jenkins: https://github.com/elastic/beats/blob/main/x-pack/metricbeat/Jenkinsfile.yml#L41-L52 + # additionally skipping due to https://github.com/elastic/ingest-dev/issues/3170 + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/metricbeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + .buildkite/scripts/cloud_tests.sh + env: + ASDF_TERRAFORM_VERSION: 1.0.2 + AWS_REGION: "eu-central-1" + BEATS_PROJECT_NAME: x-pack/metricbeat + MODULE_DIR: x-pack/metricbeat/module/aws + REPO: beats + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "x-pack/metricbeat/build/*.xml" + - "x-pack/metricbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Cloud AWS (MODULE) Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack metricbeat pipeline" - key: "xpack-metricbeat-pipeline" - command: ".buildkite/scripts/generate_xpack_metricbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - step: "x-pack-metricbeat-mandatory-tests" + + - group: "x-pack/metricbeat Packaging" + key: "x-pack-metricbeat-packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd x-pack/metricbeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Packaging Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: | + cd x-pack/metricbeat + mage package + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "x-pack/metricbeat: Packaging Linux ARM" From 0f118b18d36ce1627af73104c98b109e5d5f91f4 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Mon, 15 Apr 2024 14:00:35 +0300 Subject: [PATCH 151/313] Migrate filebeat-pipeline.yaml (#38825) This commit migrate the filebeat pipeline into the main one Signed-off-by: Alexandros Sapranidis --- .buildkite/filebeat/filebeat-pipeline.yml | 319 +++++++++++++++--- .../filebeat/generate_filebeat_pipeline.sh | 213 ------------ .buildkite/pipeline.yml | 27 ++ .buildkite/scripts/common.sh | 25 +- .../scripts/generate_filebeat_pipeline.sh | 266 --------------- 5 files changed, 296 insertions(+), 554 deletions(-) delete mode 100644 .buildkite/filebeat/generate_filebeat_pipeline.sh delete mode 100644 .buildkite/scripts/generate_filebeat_pipeline.sh diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index a22e96c974a..1cc2f158538 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -4,7 +4,6 @@ name: "beats-filebeat" env: AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" - BEATS_PROJECT_NAME: "filebeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" @@ -17,60 +16,276 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - #Deps ASDF_MAGE_VERSION: 1.15.0 + # Integration Tests + K8S_VERSION: "v1.29.0" + ASDF_KIND_VERSION: "0.20.0" steps: - - input: "Input Parameters" - key: "run_filebeat" - fields: - - select: "filebeat - run_filebeat" - key: "run_filebeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "filebeat - run_filebeat_macos_tests" - key: "run_filebeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "filebeat - run_filebeat_arm_tests" - key: "run_filebeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "filebeat - run_filebeat_win_tests" - key: "run_filebeat_win_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" + - group: "Filebeat Mandatory Tests" + key: "filebeat-mandatory-tests" + steps: + - label: ":ubuntu: Ubuntu Unit Tests" + command: | + cd filebeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Ubuntu Unit Tests" + + - label: ":ubuntu: Ubuntu Go Integration Tests" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet filebeat + echo "~~~ Will run tests with env var MODULE=$$MODULE" + # TODO move this section to base image / pre-command hook + echo "~~~ Installing kind" + asdf plugin add kind + asdf install kind $ASDF_KIND_VERSION + .buildkite/deploy/kubernetes/scripts/kind-setup.sh + + export KUBECONFIG="$$PWD/kubecfg" + echo "~~~ Running tests" + cd filebeat + mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Ubuntu Go Integration Tests" + + - label: ":ubuntu: Ubuntu Python Integration Tests" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet filebeat + echo "~~~ Will run tests with env var MODULE=$$MODULE" + # TODO move this section to base image / pre-command hook + echo "~~~ Installing kind" + asdf plugin add kind + asdf install kind $ASDF_KIND_VERSION + .buildkite/deploy/kubernetes/scripts/kind-setup.sh + + export KUBECONFIG="$$PWD/kubecfg" + echo "~~~ Running tests" + cd filebeat + mage pythonIntegTest + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Python Integration Tests" + + - label: ":windows: Windows 2016 Unit Tests" + key: "windows-2016-unit-tests" + command: | + Set-Location -Path filebeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + key: "windows-2022-unit-tests" + command: | + Set-Location -Path filebeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Windows 2022 Unit Tests" + + - group: "Filebeat Extended Tests" + key: "filebeat-extended-tests" + steps: + - label: ":mac: MacOS x64_64 Unit Tests" + key: "macos-unit-tests-extended" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd filebeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Extended MacOS Unit Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + key: "macos-arm64-unit-tests-extended" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd filebeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Extended MacOS ARM Unit Tests" + + - label: ":linux: Ubuntu ARM Unit Tests" + key: "extended-arm64-unit-test" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + command: | + cd filebeat + mage build unitTest + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Extended Ubuntu ARM Unit Tests" + + - group: "Extended Windows Tests" + key: "filebeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 2019 Unit Tests" + key: "windows-extended-2019" + command: | + Set-Location -Path filebeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Extended Windows 2019 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + key: "windows-extended-11" + command: | + Set-Location -Path filebeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Extended Windows 11 Unit Tests" + + - label: ":windows: Windows 10 Unit Tests" + key: "windows-extended-10" + command: | + Set-Location -Path filebeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 200 + disk_type: "pd-ssd" + artifact_paths: + - "filebeat/build/*.xml" + - "filebeat/build/*.json" + notify: + - github_commit_status: + context: "filebeat: Extended Windows 10 Unit Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic filebeat pipeline" - key: "filebeat-pipeline" - command: ".buildkite/scripts/generate_filebeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: "filebeat-mandatory-tests" + + - group: "Filebeat Packaging" + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd filebeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "filebeat: Packaging" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: | + cd filebeat + mage package + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "filebeat: Packaging ARM" diff --git a/.buildkite/filebeat/generate_filebeat_pipeline.sh b/.buildkite/filebeat/generate_filebeat_pipeline.sh deleted file mode 100644 index aa0a03eadc1..00000000000 --- a/.buildkite/filebeat/generate_filebeat_pipeline.sh +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.filebeat-dynamic.yml" - -# TODO: steps: must be always included -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - group: "Filebeat Mandatory Testing" - key: "mandatory-tests" - - steps: - - label: ":ubuntu: Unit Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Filebeat: linux/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":ubuntu: Go Integration Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage goIntegTest" - notify: - - github_commit_status: - context: "Filebeat: Go Integration Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":ubuntu: Python Integration Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage pythonIntegTest" - notify: - - github_commit_status: - context: "Filebeat: Python Integration Tests" - agents: - provider: gcp - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-2016 Unit Tests" - key: "windows-2016" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Filebeat: windows-2016/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-2022 Unit Tests" - key: "windows-2022" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Filebeat: windows-2022/Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "macos-unit-tests-extended" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Filebeat: MacOS Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":mac: MacOS ARM Unit Tests" - key: "macos-arm64-unit-tests-extended" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Filebeat: MacOS ARM Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_ARM}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - - label: ":linux: ARM Ubuntu Unit Tests" - key: "extended-arm64-unit-test" - command: "cd ${BEATS_PROJECT_NAME} && mage unitTest" - notify: - - github_commit_status: - context: "Filebeat: Unit Tests ARM" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" -YAML -fi - -if are_conditions_met_win_tests; then - cat >> $pipelineName <<- YAML - - - group: "Windows Extended Testing" - key: "extended-tests-win" - steps: - - label: ":windows: Win 2019 Unit Tests" - key: "windows-extended-2019" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Filebeat: Win-2019 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-11 Unit Tests" - key: "windows-extended-11" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Filebeat: Win-11 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows:-10 Unit Tests" - key: "windows-extended-10" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" - notify: - - github_commit_status: - context: "Filebeat: Win-10 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then -cat >> $pipelineName <<- YAML - - - group: "Packaging" - key: "packaging" - depends_on: - - "mandatory-tests" - - steps: - - label: Package pipeline - commands: ".buildkite/scripts/packaging/package-step.sh" - notify: - - github_commit_status: - context: "Filebeat: Packaging" - -YAML -fi - -echo "--- Printing dynamic steps" #TODO: remove if the pipeline is public -cat $pipelineName - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 978949b51d0..1b4abe72e1c 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -52,6 +52,33 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Filebeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - filebeat/ + - .buildkite/filebeat/ + # CI related scripts + - .buildkite/scripts + - .buildkite/hooks/ + #OSS + - go.mod + - pytest.ini + - dev-tools + - libbeat/** + - testing/** + config: + trigger: "filebeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Xpack/Dockerlogbeat" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 386bc5aaf42..d69ae12db45 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -12,7 +12,6 @@ ONLY_DOCS=${ONLY_DOCS:-"true"} OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat -[ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_libbeat+x}" ] && run_libbeat="$(buildkite-agent meta-data get run_libbeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" [ -z "${run_winlogbeat+x}" ] && run_winlogbeat="$(buildkite-agent meta-data get run_winlogbeat --default "false")" @@ -25,7 +24,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat -[ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" [ -z "${run_xpack_auditbeat_arm_tests+x}" ] && run_xpack_auditbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_arm_tests --default "false")" @@ -34,7 +32,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" # define if needed run MacOS platform-specific tests for the particular beat -[ -z "${run_filebeat_tests+x}" ] && run_filebeat_macos_tests="$(buildkite-agent meta-data get run_filebeat_macos_tests --default "false")" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_auditbeat_macos_tests+x}" ] && run_xpack_auditbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_macos_tests --default "false")" [ -z "${run_xpack_filebeat_macos_tests+x}" ] && run_xpack_filebeat_macos_tests="$(buildkite-agent meta-data get run_xpack_filebeat_macos_tests --default "false")" @@ -45,15 +42,11 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run Windows platform-specific tests for the particular beat [ -z "${run_auditbeat_win_tests+x}" ] && run_auditbeat_win_tests="$(buildkite-agent meta-data get run_auditbeat_win_tests --default "false")" -[ -z "${run_filebeat_win_tests+x}" ] && run_filebeat_win_tests="$(buildkite-agent meta-data get run_filebeat_win_tests --default "false")" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" [ -z "${run_xpack_filebeat_aws_tests+x}" ] && run_xpack_filebeat_aws_tests="$(buildkite-agent meta-data get run_xpack_filebeat_aws_tests --default "false")" -filebeat_changeset=( - "^filebeat/.*" - ) libbeat_changeset=( "^libbeat/.*" @@ -131,9 +124,6 @@ packaging_changeset=( ) case "${BUILDKITE_PIPELINE_SLUG}" in - "filebeat") - BEAT_CHANGESET_REFERENCE=${filebeat_changeset[@]} - ;; "beats-libbeat") BEAT_CHANGESET_REFERENCE=${libbeat_changeset[@]} ;; @@ -403,7 +393,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -414,7 +404,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -423,17 +413,6 @@ are_conditions_met_macos_tests() { return 1 } -are_conditions_met_win_tests() { - if are_conditions_met_mandatory_tests; then - if [[ "$BUILDKITE_PIPELINE_SLUG" == "filebeat" ]]; then - if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_WIN_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_WIN_LABEL} || "${!TRIGGER_SPECIFIC_WIN_TESTS}" == "true" ]]; then - return 0 - fi - fi - fi - return 1 -} - are_conditions_met_aws_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then diff --git a/.buildkite/scripts/generate_filebeat_pipeline.sh b/.buildkite/scripts/generate_filebeat_pipeline.sh deleted file mode 100644 index a3fe1108dc3..00000000000 --- a/.buildkite/scripts/generate_filebeat_pipeline.sh +++ /dev/null @@ -1,266 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.filebeat-dynamic.yml" - -# TODO: steps: must be always included -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - - -steps: - - group: "Mandatory Testing" - key: "mandatory-tests" - - steps: - - label: ":ubuntu: Ubuntu Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ununtu Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":ubuntu: Ubuntu Go Integration Tests" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":ubuntu: Ubuntu Python Integration Tests" - command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Python Integration Tests" - agents: - provider: gcp - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "filebeat/build/*.xml" - - "filebeat/build/*.json" - - - label: ":windows: Windows 2016 Unit Tests" - key: "windows-2016-unit-tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - - - label: ":windows: Windows 2022 Unit Tests" - key: "windows-2022-unit-tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: "${BEATS_PROJECT_NAME}/build/*.*" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "macos-unit-tests-extended" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":mac: MacOS ARM Unit Tests" - key: "macos-arm64-unit-tests-extended" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS ARM Unit Tests" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_ARM}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - - label: ":linux: Ubuntu ARM Unit Tests" - key: "extended-arm64-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" -YAML -fi - -if are_conditions_met_win_tests; then - cat >> $pipelineName <<- YAML - - - group: "Windows Extended Testing" - key: "extended-tests-win" - steps: - - label: ":windows: Windows 2019 Unit Tests" - key: "windows-extended-2019" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":windows: Windows 11 Unit Tests" - key: "windows-extended-11" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - - - label: ":windows: Windows 10 Unit Tests" - key: "windows-extended-10" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 200 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then -cat >> $pipelineName <<- YAML - - - group: "Packaging" - key: "packaging" - depends_on: - - "mandatory-tests" - - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName From fe8ebd00df0a897d6d14e7aba0061c6a61a40ac9 Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Mon, 15 Apr 2024 15:10:02 +0300 Subject: [PATCH 152/313] Buildkite pipeline unification fixes (#38871) * test - added empty file * removed test dummy file * restored snapshot packaging step * dummy file to test packaging * pr fixes * fixing packaging step * fixing packaging step * moved xpack dockerlogbeat to main pipeline * restored snapshot packaging step * fixing packaging step * moved xpack-winlogbeat to main pipeline * general pipeline fixes --- .../deploy/kubernetes/deploy-k8s-pipeline.yml | 36 +++++----- .buildkite/heartbeat/heartbeat-pipeline.yml | 65 ++++++++----------- .buildkite/pipeline.yml | 7 +- 3 files changed, 50 insertions(+), 58 deletions(-) diff --git a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml index 82959ec7067..d8a5354b1ef 100644 --- a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml +++ b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml @@ -4,24 +4,20 @@ env: IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" -notify: - - github_commit_status: - context: "Deploy/K8S" - steps: - - group: "Depoy/K8S" + - group: "Deploy/K8S" if: build.env("BUILDKITE_PULL_REQUEST") != "false" && build.env("GITHUB_PR_LABELS") =~ /.*kubernetes.*/ steps: - label: "Checks" command: ".buildkite/deploy/kubernetes/scripts/make.sh" - notify: - - github_commit_status: - context: "Deploy/k8s-checks" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "Deploy/k8s-checks" - label: "K8S Test/K8S version: v1.29.0" key: "k8s-test-129" @@ -30,13 +26,13 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" - notify: - - github_commit_status: - context: "Deploy/k8s-test v1.29.0" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.29.0" - label: "K8S Test/K8S version: v1.28.0" key: "k8s-test-128" @@ -45,13 +41,13 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" - notify: - - github_commit_status: - context: "Deploy/k8s-test v1.28.0" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.28.0" - label: "K8S Test/K8S version: v1.27.3" key: "k8s-test-1273" @@ -60,13 +56,13 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" - notify: - - github_commit_status: - context: "Deploy/k8s-test v1.27.3" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.27.3" - label: "K8S Test/K8S version: v1.26.6" key: "k8s-test-1266" @@ -75,10 +71,10 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" - notify: - - github_commit_status: - context: "Deploy/k8s-test v1.26.6" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "Deploy/k8s-test v1.26.6" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index ee3f1d649ce..0ab91594c25 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -1,10 +1,6 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json env: - BEATS_PROJECT_NAME: "heartbeat" - - ASDF_MAGE_VERSION: 1.15.0 - AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" @@ -22,20 +18,15 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - -notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME" + # Other deps + ASDF_MAGE_VERSION: 1.15.0 steps: - group: "Heartbeat Mandatory Testing" key: "heartbeat-mandatory-tests" steps: - label: ":ubuntu: Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + command: "cd heartbeat && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -44,8 +35,8 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":rhel:-9 Unit Tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + - label: ":rhel: Heartbeat Rhel9 Unit Tests" + command: "cd heartbeat && mage build unitTest" agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -54,10 +45,10 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":windows:-2016 Unit Test" + - label: ":windows: Heartbeat Win-2016 Unit Test" key: "windows-2016" command: | - Set-Location -Path $BEATS_PROJECT_NAME + Set-Location -Path heartbeat mage build unitTest agents: provider: "gcp" @@ -68,10 +59,10 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":windows:-2022 Unit Test" + - label: ":windows: Heartbeat Win-2022 Unit Test" key: "windows-2022" command: | - Set-Location -Path $BEATS_PROJECT_NAME + Set-Location -Path heartbeat mage build unitTest agents: provider: "gcp" @@ -82,8 +73,8 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":ubuntu: Go Integration Tests" - command: "cd ${BEATS_PROJECT_NAME} && mage goIntegTest" + - label: ":ubuntu: Heartbeat Go Integration Tests" + command: "cd heartbeat && mage goIntegTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -92,8 +83,8 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":ubuntu: Python Integration Tests" - command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" + - label: ":ubuntu: Heartbeat Python Integration Tests" + command: "cd heartbeat && mage pythonIntegTest" agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -106,10 +97,10 @@ steps: key: "heartbeat-extended-tests-arm" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ steps: - - label: ":linux: ARM64 Unit Tests" + - label: ":linux: Heartbeat ARM64 Unit Tests" key: "arm-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for arm" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" + command: "cd heartbeat && mage build unitTest" agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -120,7 +111,7 @@ steps: key: "heartbeat-extended-tests-macos" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - - label: ":mac: MacOS Unit Tests" + - label: ":mac: Heartbeat MacOS Unit Tests" key: "macos-extended" if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" @@ -131,10 +122,10 @@ steps: - group: "Heartbeat Windows Extended Testing" key: "heartbeat-extended-tests-win" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*windows.*/ + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ steps: - - label: ":windows: Win 2019 Unit Tests" + - label: ":windows: Heartbeat Win-2019 Unit Tests" key: "heartbeat-win-extended-2019" command: "mage -d ${BEATS_PROJECT_NAME} unitTest" agents: @@ -146,10 +137,10 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":windows:-11 Unit Tests" + - label: ":windows: Heartbeat Win-11 Unit Tests" key: "heartbeat-windows-extended-11" command: | - Set-Location -Path $BEATS_PROJECT_NAME + Set-Location -Path heartbeat mage build unitTest agents: provider: "gcp" @@ -160,10 +151,10 @@ steps: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" - - label: ":windows:-10 Unit Tests" + - label: ":windows: Heartbeat Win-10 Unit Tests" key: "heartbeat-windows-extended-10" command: | - Set-Location -Path $BEATS_PROJECT_NAME + Set-Location -Path heartbeat mage build unitTest agents: provider: "gcp" @@ -180,24 +171,24 @@ steps: depends_on: - "heartbeat-mandatory-tests" steps: - - label: ":ubuntu: Packaging Linux X86" + - label: ":ubuntu: Heartbeat Packaging Linux X86" key: "heartbeat-package-linux-x86" env: - PLATFORMS: "${PACKAGING_PLATFORMS}" + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" SNAPSHOT: true - command: "cd $BEATS_PROJECT_NAME && mage package" + command: "cd heartbeat && mage package" agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - - label: ":linux: Packaging Linux ARM" + - label: ":linux: Heartbeat Packaging Linux ARM" key: "heartbeat-package-linux-arm" env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" + PLATFORMS: "linux/arm64" PACKAGES: "docker" SNAPSHOT: true - command: "cd $BEATS_PROJECT_NAME && mage package" + command: "cd heartbeat && mage package" agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 1b4abe72e1c..35c6e327523 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -36,6 +36,7 @@ steps: - heartbeat/ - .buildkite/heartbeat/ - .buildkite/scripts + - .buildkite/hooks/ #OSS - go.mod - pytest.ini @@ -87,6 +88,7 @@ steps: - path: - x-pack/dockerlogbeat/ - .buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml + - .buildkite/hooks/ - .buildkite/scripts #OSS - go.mod @@ -113,6 +115,7 @@ steps: - metricbeat/ - .buildkite/metricbeat/ - .buildkite/scripts + - .buildkite/hooks/ #OSS - go.mod - pytest.ini @@ -165,6 +168,7 @@ steps: - x-pack/winlogbeat/ - .buildkite/x-pack/pipeline.xpack.winlogbeat.yml - .buildkite/scripts + - .buildkite/hooks/ #OSS - go.mod - pytest.ini @@ -188,9 +192,10 @@ steps: watch: - path: - .buildkite/deploy/kubernetes/** + - .buildkite/hooks/ + - .buildkite/scripts - deploy/kubernetes/** - libbeat/docs/version.asciidoc - - .buildkite/scripts config: trigger: "deploy-k8s" build: From 7387eb36b596b8d043d257b3adad97468e8a7aa1 Mon Sep 17 00:00:00 2001 From: Michael Katsoulis Date: Mon, 15 Apr 2024 16:48:23 +0300 Subject: [PATCH 153/313] Add a markdown with high level kubernetes metadata enrichment explanation (#38757) * Add a markdown with high level kubernetes metadata enrichment explanation * Updates * Update * Add table of watchers * Update metricbeat/module/kubernetes/util/enrichers.md Co-authored-by: Andrew Gizas * Update metricbeat/module/kubernetes/util/enrichers.md Co-authored-by: Andrew Gizas * Minor changes --------- Co-authored-by: Andrew Gizas --- .../kubernetes/_meta/images/enrichers.png | Bin 0 -> 76328 bytes .../module/kubernetes/util/enrichers.md | 89 ++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 metricbeat/module/kubernetes/_meta/images/enrichers.png create mode 100644 metricbeat/module/kubernetes/util/enrichers.md diff --git a/metricbeat/module/kubernetes/_meta/images/enrichers.png b/metricbeat/module/kubernetes/_meta/images/enrichers.png new file mode 100644 index 0000000000000000000000000000000000000000..8afb991e489b7feac0e3c9245287f9a5c73209c6 GIT binary patch literal 76328 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%0AgTPZ$ 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 c{BZp)lNI$8QM< Date: Mon, 15 Apr 2024 18:52:43 +0300 Subject: [PATCH 154/313] Remove RSA2ELK deprecated modules (#38037) * feat: remove deprecated sophos utm * feat: remove deprecated barracuda * feat: remove deprecated bluecoat * feat: remove deprecated cisco meraki and nexus * feat: remove deprecated cylance * feat: remove deprecated f5 * feat: remove deprecated fortinet clientendpoint, fortimail, fortimanager * feat: remove deprecated impreva * feat: remove deprecated infoblox * feat: remove deprecated juniper junos and netscreen * feat: remove deprecated microsoft dhcp * feat: remove deprecated netscout * feat: remove deprecated proofpoint * feat: remove deprecated radware * feat: remove deprecated snort * feat: remove deprecated sonicwall * feat: remove deprecated squid * feat: remove deprecated tomcat * feat: remove deprecated zscaler * doc: update CHANGELOG-developer.next.asciidoc * Relocate changelog entries to CHANGELOG.next.asciidoc * fix: merge conflict errors --------- Co-authored-by: Taylor Swanson --- CHANGELOG.next.asciidoc | 24 + filebeat/docs/fields.asciidoc | 148491 +++------------ filebeat/docs/modules/cisco.asciidoc | 96 - filebeat/docs/modules/fortinet.asciidoc | 144 - filebeat/docs/modules/juniper.asciidoc | 95 - filebeat/docs/modules/microsoft.asciidoc | 47 - filebeat/docs/modules/sophos.asciidoc | 48 - filebeat/docs/modules_list.asciidoc | 28 - x-pack/filebeat/filebeat.reference.yml | 505 +- x-pack/filebeat/include/list.go | 14 - x-pack/filebeat/module/barracuda/README.md | 7 - .../module/barracuda/_meta/config.yml | 38 - .../module/barracuda/_meta/docs.asciidoc | 115 - .../module/barracuda/_meta/fields.yml | 5 - x-pack/filebeat/module/barracuda/fields.go | 23 - .../barracuda/spamfirewall/_meta/fields.yml | 2635 - .../barracuda/spamfirewall/config/input.yml | 87 - .../spamfirewall/config/liblogparser.js | 2514 - .../barracuda/spamfirewall/config/pipeline.js | 780 - .../spamfirewall/ingest/pipeline.yml | 64 - .../barracuda/spamfirewall/manifest.yml | 31 - .../barracuda/spamfirewall/test/generated.log | 100 - .../test/generated.log-expected.json | 3207 - .../module/barracuda/waf/_meta/fields.yml | 2635 - .../module/barracuda/waf/config/input.yml | 87 - .../barracuda/waf/config/liblogparser.js | 2514 - .../module/barracuda/waf/config/pipeline.js | 1344 - .../module/barracuda/waf/ingest/pipeline.yml | 64 - .../module/barracuda/waf/manifest.yml | 31 - .../module/barracuda/waf/test/generated.log | 100 - .../waf/test/generated.log-expected.json | 1963 - x-pack/filebeat/module/bluecoat/README.md | 7 - .../filebeat/module/bluecoat/_meta/config.yml | 19 - .../module/bluecoat/_meta/docs.asciidoc | 70 - .../filebeat/module/bluecoat/_meta/fields.yml | 5 - .../module/bluecoat/director/_meta/fields.yml | 2635 - .../module/bluecoat/director/config/input.yml | 87 - .../bluecoat/director/config/liblogparser.js | 2514 - .../bluecoat/director/config/pipeline.js | 1223 - .../bluecoat/director/ingest/pipeline.yml | 64 - .../module/bluecoat/director/manifest.yml | 31 - .../bluecoat/director/test/generated.log | 100 - .../director/test/generated.log-expected.json | 2295 - x-pack/filebeat/module/bluecoat/fields.go | 23 - x-pack/filebeat/module/cisco/_meta/config.yml | 38 - .../filebeat/module/cisco/_meta/docs.asciidoc | 96 - x-pack/filebeat/module/cisco/fields.go | 2 +- .../module/cisco/meraki/_meta/fields.yml | 2635 - .../module/cisco/meraki/config/input.yml | 87 - .../cisco/meraki/config/liblogparser.js | 2514 - .../module/cisco/meraki/config/pipeline.js | 662 - .../module/cisco/meraki/ingest/pipeline.yml | 83 - .../filebeat/module/cisco/meraki/manifest.yml | 31 - .../module/cisco/meraki/test/generated.log | 100 - .../meraki/test/generated.log-expected.json | 3357 - .../module/cisco/nexus/_meta/fields.yml | 2635 - .../module/cisco/nexus/config/input.yml | 87 - .../module/cisco/nexus/config/liblogparser.js | 2514 - .../module/cisco/nexus/config/pipeline.js | 4585 - .../module/cisco/nexus/ingest/pipeline.yml | 64 - .../filebeat/module/cisco/nexus/manifest.yml | 31 - .../module/cisco/nexus/test/nexus.log | 15 - .../cisco/nexus/test/nexus.log-expected.json | 482 - x-pack/filebeat/module/cylance/README.md | 7 - .../filebeat/module/cylance/_meta/config.yml | 19 - .../module/cylance/_meta/docs.asciidoc | 70 - .../filebeat/module/cylance/_meta/fields.yml | 5 - x-pack/filebeat/module/cylance/fields.go | 23 - .../module/cylance/protect/_meta/fields.yml | 2635 - .../module/cylance/protect/config/input.yml | 87 - .../cylance/protect/config/liblogparser.js | 2514 - .../module/cylance/protect/config/pipeline.js | 998 - .../cylance/protect/ingest/pipeline.yml | 64 - .../module/cylance/protect/manifest.yml | 31 - .../module/cylance/protect/test/generated.log | 100 - .../protect/test/generated.log-expected.json | 3554 - x-pack/filebeat/module/f5/README.md | 7 - x-pack/filebeat/module/f5/_meta/config.yml | 38 - x-pack/filebeat/module/f5/_meta/docs.asciidoc | 119 - x-pack/filebeat/module/f5/_meta/fields.yml | 5 - .../module/f5/bigipafm/_meta/fields.yml | 2635 - .../module/f5/bigipafm/config/input.yml | 87 - .../module/f5/bigipafm/config/liblogparser.js | 2514 - .../module/f5/bigipafm/config/pipeline.js | 110 - .../module/f5/bigipafm/ingest/pipeline.yml | 88 - .../filebeat/module/f5/bigipafm/manifest.yml | 31 - .../module/f5/bigipafm/test/generated.log | 100 - .../bigipafm/test/generated.log-expected.json | 6560 - .../module/f5/bigipapm/_meta/fields.yml | 2635 - .../module/f5/bigipapm/config/input.yml | 87 - .../module/f5/bigipapm/config/liblogparser.js | 2514 - .../module/f5/bigipapm/config/pipeline.js | 1073 - .../module/f5/bigipapm/ingest/pipeline.yml | 88 - .../filebeat/module/f5/bigipapm/manifest.yml | 31 - .../module/f5/bigipapm/test/generated.log | 100 - .../bigipapm/test/generated.log-expected.json | 2633 - x-pack/filebeat/module/f5/fields.go | 23 - .../filebeat/module/fortinet/_meta/config.yml | 57 - .../module/fortinet/_meta/docs.asciidoc | 144 - .../fortinet/clientendpoint/_meta/fields.yml | 2635 - .../fortinet/clientendpoint/config/input.yml | 93 - .../clientendpoint/config/liblogparser.js | 2514 - .../clientendpoint/config/pipeline.js | 180 - .../clientendpoint/ingest/pipeline.yml | 64 - .../fortinet/clientendpoint/manifest.yml | 31 - .../clientendpoint/test/generated.log | 100 - .../test/generated.log-expected.json | 5781 - x-pack/filebeat/module/fortinet/fields.go | 2 +- .../fortinet/fortimail/_meta/fields.yml | 2635 - .../fortinet/fortimail/config/input.yml | 87 - .../fortinet/fortimail/config/liblogparser.js | 2514 - .../fortinet/fortimail/config/pipeline.js | 1706 - .../fortinet/fortimail/ingest/pipeline.yml | 69 - .../module/fortinet/fortimail/manifest.yml | 31 - .../fortinet/fortimail/test/generated.log | 100 - .../test/generated.log-expected.json | 4091 - .../fortinet/fortimanager/_meta/fields.yml | 2635 - .../fortinet/fortimanager/config/input.yml | 87 - .../fortimanager/config/liblogparser.js | 2514 - .../fortinet/fortimanager/config/pipeline.js | 506 - .../fortinet/fortimanager/ingest/pipeline.yml | 93 - .../module/fortinet/fortimanager/manifest.yml | 31 - .../fortinet/fortimanager/test/generated.log | 100 - .../test/generated.log-expected.json | 8095 - x-pack/filebeat/module/imperva/README.md | 7 - .../filebeat/module/imperva/_meta/config.yml | 19 - .../module/imperva/_meta/docs.asciidoc | 70 - .../filebeat/module/imperva/_meta/fields.yml | 5 - x-pack/filebeat/module/imperva/fields.go | 23 - .../imperva/securesphere/_meta/fields.yml | 2635 - .../imperva/securesphere/config/input.yml | 87 - .../securesphere/config/liblogparser.js | 2514 - .../imperva/securesphere/config/pipeline.js | 316 - .../imperva/securesphere/ingest/pipeline.yml | 88 - .../module/imperva/securesphere/manifest.yml | 31 - .../imperva/securesphere/test/generated.log | 100 - .../test/generated.log-expected.json | 5716 - x-pack/filebeat/module/infoblox/README.md | 7 - .../filebeat/module/infoblox/_meta/config.yml | 19 - .../module/infoblox/_meta/docs.asciidoc | 70 - .../filebeat/module/infoblox/_meta/fields.yml | 5 - x-pack/filebeat/module/infoblox/fields.go | 23 - .../module/infoblox/nios/_meta/fields.yml | 2635 - .../module/infoblox/nios/config/input.yml | 87 - .../infoblox/nios/config/liblogparser.js | 2514 - .../module/infoblox/nios/config/pipeline.js | 3697 - .../module/infoblox/nios/ingest/pipeline.yml | 64 - .../module/infoblox/nios/manifest.yml | 31 - .../module/infoblox/nios/test/generated.log | 100 - .../nios/test/generated.log-expected.json | 2722 - .../filebeat/module/juniper/_meta/config.yml | 38 - .../module/juniper/_meta/docs.asciidoc | 95 - x-pack/filebeat/module/juniper/fields.go | 2 +- .../module/juniper/junos/_meta/fields.yml | 2635 - .../module/juniper/junos/config/input.yml | 87 - .../juniper/junos/config/liblogparser.js | 2514 - .../module/juniper/junos/config/pipeline.js | 9978 - .../module/juniper/junos/ingest/pipeline.yml | 64 - .../module/juniper/junos/manifest.yml | 31 - .../module/juniper/junos/test/generated.log | 100 - .../junos/test/generated.log-expected.json | 2698 - .../module/juniper/netscreen/_meta/fields.yml | 2635 - .../module/juniper/netscreen/config/input.yml | 87 - .../juniper/netscreen/config/liblogparser.js | 2514 - .../juniper/netscreen/config/pipeline.js | 23763 --- .../juniper/netscreen/ingest/pipeline.yml | 64 - .../module/juniper/netscreen/manifest.yml | 31 - .../juniper/netscreen/test/generated.log | 100 - .../test/generated.log-expected.json | 2520 - .../module/microsoft/_meta/config.yml | 20 +- .../module/microsoft/_meta/docs.asciidoc | 47 - .../module/microsoft/dhcp/_meta/fields.yml | 2635 - .../module/microsoft/dhcp/config/input.yml | 87 - .../microsoft/dhcp/config/liblogparser.js | 2514 - .../module/microsoft/dhcp/config/pipeline.js | 1057 - .../module/microsoft/dhcp/ingest/pipeline.yml | 64 - .../module/microsoft/dhcp/manifest.yml | 31 - .../module/microsoft/dhcp/test/generated.log | 100 - .../dhcp/test/generated.log-expected.json | 3234 - x-pack/filebeat/module/microsoft/fields.go | 2 +- x-pack/filebeat/module/netscout/README.md | 7 - .../filebeat/module/netscout/_meta/config.yml | 19 - .../module/netscout/_meta/docs.asciidoc | 68 - .../filebeat/module/netscout/_meta/fields.yml | 5 - x-pack/filebeat/module/netscout/fields.go | 23 - .../netscout/sightline/_meta/fields.yml | 2635 - .../netscout/sightline/config/input.yml | 87 - .../netscout/sightline/config/liblogparser.js | 2514 - .../netscout/sightline/config/pipeline.js | 1036 - .../netscout/sightline/ingest/pipeline.yml | 88 - .../module/netscout/sightline/manifest.yml | 31 - .../netscout/sightline/test/generated.log | 100 - .../test/generated.log-expected.json | 2449 - x-pack/filebeat/module/proofpoint/README.md | 7 - .../module/proofpoint/_meta/config.yml | 19 - .../module/proofpoint/_meta/docs.asciidoc | 70 - .../module/proofpoint/_meta/fields.yml | 5 - .../proofpoint/emailsecurity/_meta/fields.yml | 2635 - .../proofpoint/emailsecurity/config/input.yml | 87 - .../emailsecurity/config/liblogparser.js | 2514 - .../emailsecurity/config/pipeline.js | 2989 - .../emailsecurity/ingest/pipeline.yml | 64 - .../proofpoint/emailsecurity/manifest.yml | 31 - .../emailsecurity/test/generated.log | 100 - .../test/generated.log-expected.json | 2555 - x-pack/filebeat/module/proofpoint/fields.go | 23 - x-pack/filebeat/module/radware/README.md | 7 - .../filebeat/module/radware/_meta/config.yml | 19 - .../module/radware/_meta/docs.asciidoc | 70 - .../filebeat/module/radware/_meta/fields.yml | 5 - .../radware/defensepro/_meta/fields.yml | 2635 - .../radware/defensepro/config/input.yml | 87 - .../radware/defensepro/config/liblogparser.js | 2514 - .../radware/defensepro/config/pipeline.js | 920 - .../radware/defensepro/ingest/pipeline.yml | 64 - .../module/radware/defensepro/manifest.yml | 31 - x-pack/filebeat/module/radware/fields.go | 23 - x-pack/filebeat/module/snort/README.md | 7 - x-pack/filebeat/module/snort/_meta/config.yml | 19 - .../filebeat/module/snort/_meta/docs.asciidoc | 72 - x-pack/filebeat/module/snort/_meta/fields.yml | 5 - x-pack/filebeat/module/snort/fields.go | 23 - .../module/snort/log/_meta/fields.yml | 2635 - .../module/snort/log/config/input.yml | 87 - .../module/snort/log/config/liblogparser.js | 2514 - .../module/snort/log/config/pipeline.js | 137498 ------------- .../module/snort/log/ingest/pipeline.yml | 64 - x-pack/filebeat/module/snort/log/manifest.yml | 31 - .../module/snort/log/test/generated.log | 100 - .../log/test/generated.log-expected.json | 3784 - x-pack/filebeat/module/sonicwall/README.md | 7 - .../module/sonicwall/_meta/config.yml | 19 - .../module/sonicwall/_meta/docs.asciidoc | 70 - .../module/sonicwall/_meta/fields.yml | 5 - x-pack/filebeat/module/sonicwall/fields.go | 23 - .../sonicwall/firewall/_meta/fields.yml | 2635 - .../sonicwall/firewall/config/input.yml | 87 - .../sonicwall/firewall/config/liblogparser.js | 2514 - .../sonicwall/firewall/config/pipeline.js | 7145 - .../sonicwall/firewall/ingest/pipeline.yml | 64 - .../module/sonicwall/firewall/manifest.yml | 31 - .../sonicwall/firewall/test/general.log | 21 - .../firewall/test/general.log-expected.json | 595 - .../sonicwall/firewall/test/generated.log | 100 - .../firewall/test/generated.log-expected.json | 2712 - .../filebeat/module/sophos/_meta/config.yml | 19 - .../module/sophos/_meta/docs.asciidoc | 48 - x-pack/filebeat/module/sophos/fields.go | 2 +- .../module/sophos/utm/_meta/fields.yml | 2635 - .../module/sophos/utm/config/input.yml | 87 - .../module/sophos/utm/config/liblogparser.js | 2514 - .../module/sophos/utm/config/pipeline.js | 2478 - .../module/sophos/utm/ingest/pipeline.yml | 88 - .../filebeat/module/sophos/utm/manifest.yml | 31 - .../module/sophos/utm/test/generated.log | 100 - .../utm/test/generated.log-expected.json | 3704 - x-pack/filebeat/module/squid/README.md | 7 - x-pack/filebeat/module/squid/_meta/config.yml | 19 - .../filebeat/module/squid/_meta/docs.asciidoc | 70 - x-pack/filebeat/module/squid/_meta/fields.yml | 5 - x-pack/filebeat/module/squid/fields.go | 23 - .../module/squid/log/_meta/fields.yml | 2635 - .../module/squid/log/config/input.yml | 87 - .../module/squid/log/config/liblogparser.js | 2514 - .../module/squid/log/config/pipeline.js | 463 - .../module/squid/log/ingest/pipeline.yml | 92 - x-pack/filebeat/module/squid/log/manifest.yml | 31 - .../module/squid/log/test/access1.log | 100 - .../squid/log/test/access1.log-expected.json | 6062 - .../module/squid/log/test/generated.log | 100 - .../log/test/generated.log-expected.json | 7403 - x-pack/filebeat/module/tomcat/README.md | 7 - .../filebeat/module/tomcat/_meta/config.yml | 20 - .../module/tomcat/_meta/docs.asciidoc | 74 - .../filebeat/module/tomcat/_meta/fields.yml | 5 - x-pack/filebeat/module/tomcat/fields.go | 23 - .../module/tomcat/log/_meta/fields.yml | 2635 - .../module/tomcat/log/config/input.yml | 87 - .../module/tomcat/log/config/liblogparser.js | 2514 - .../module/tomcat/log/config/pipeline.js | 173 - .../module/tomcat/log/ingest/pipeline.yml | 64 - .../filebeat/module/tomcat/log/manifest.yml | 31 - .../module/tomcat/log/test/generated.log | 100 - .../log/test/generated.log-expected.json | 6144 - x-pack/filebeat/module/zscaler/README.md | 7 - .../filebeat/module/zscaler/_meta/config.yml | 19 - .../module/zscaler/_meta/docs.asciidoc | 76 - .../filebeat/module/zscaler/_meta/fields.yml | 5 - x-pack/filebeat/module/zscaler/fields.go | 23 - .../module/zscaler/zia/_meta/fields.yml | 2635 - .../module/zscaler/zia/config/input.yml | 87 - .../module/zscaler/zia/config/liblogparser.js | 2514 - .../module/zscaler/zia/config/pipeline.js | 61 - .../module/zscaler/zia/ingest/pipeline.yml | 88 - .../filebeat/module/zscaler/zia/manifest.yml | 31 - .../module/zscaler/zia/test/generated.log | 100 - .../zia/test/generated.log-expected.json | 7776 - .../filebeat/module/zscaler/zia/test/test.log | 1 - .../zscaler/zia/test/test.log-expected.json | 60 - .../filebeat/modules.d/barracuda.yml.disabled | 41 - .../filebeat/modules.d/bluecoat.yml.disabled | 22 - x-pack/filebeat/modules.d/cisco.yml.disabled | 38 - .../filebeat/modules.d/cylance.yml.disabled | 22 - x-pack/filebeat/modules.d/f5.yml.disabled | 41 - .../filebeat/modules.d/fortinet.yml.disabled | 57 - .../filebeat/modules.d/imperva.yml.disabled | 22 - .../filebeat/modules.d/infoblox.yml.disabled | 22 - .../filebeat/modules.d/juniper.yml.disabled | 38 - .../filebeat/modules.d/microsoft.yml.disabled | 20 +- .../filebeat/modules.d/netscout.yml.disabled | 22 - .../modules.d/proofpoint.yml.disabled | 22 - .../filebeat/modules.d/radware.yml.disabled | 22 - x-pack/filebeat/modules.d/snort.yml.disabled | 22 - .../filebeat/modules.d/sonicwall.yml.disabled | 22 - x-pack/filebeat/modules.d/sophos.yml.disabled | 19 - x-pack/filebeat/modules.d/squid.yml.disabled | 22 - x-pack/filebeat/modules.d/tomcat.yml.disabled | 23 - .../filebeat/modules.d/zscaler.yml.disabled | 22 - 318 files changed, 22665 insertions(+), 572673 deletions(-) delete mode 100644 x-pack/filebeat/module/barracuda/README.md delete mode 100644 x-pack/filebeat/module/barracuda/_meta/config.yml delete mode 100644 x-pack/filebeat/module/barracuda/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/barracuda/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/barracuda/fields.go delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/config/input.yml delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/config/pipeline.js delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/manifest.yml delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log delete mode 100644 x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/barracuda/waf/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/barracuda/waf/config/input.yml delete mode 100644 x-pack/filebeat/module/barracuda/waf/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/barracuda/waf/config/pipeline.js delete mode 100644 x-pack/filebeat/module/barracuda/waf/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/barracuda/waf/manifest.yml delete mode 100644 x-pack/filebeat/module/barracuda/waf/test/generated.log delete mode 100644 x-pack/filebeat/module/barracuda/waf/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/bluecoat/README.md delete mode 100644 x-pack/filebeat/module/bluecoat/_meta/config.yml delete mode 100644 x-pack/filebeat/module/bluecoat/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/bluecoat/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/bluecoat/director/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/bluecoat/director/config/input.yml delete mode 100644 x-pack/filebeat/module/bluecoat/director/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/bluecoat/director/config/pipeline.js delete mode 100644 x-pack/filebeat/module/bluecoat/director/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/bluecoat/director/manifest.yml delete mode 100644 x-pack/filebeat/module/bluecoat/director/test/generated.log delete mode 100644 x-pack/filebeat/module/bluecoat/director/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/bluecoat/fields.go delete mode 100644 x-pack/filebeat/module/cisco/meraki/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/cisco/meraki/config/input.yml delete mode 100644 x-pack/filebeat/module/cisco/meraki/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/cisco/meraki/config/pipeline.js delete mode 100644 x-pack/filebeat/module/cisco/meraki/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/cisco/meraki/manifest.yml delete mode 100644 x-pack/filebeat/module/cisco/meraki/test/generated.log delete mode 100644 x-pack/filebeat/module/cisco/meraki/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/cisco/nexus/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/cisco/nexus/config/input.yml delete mode 100644 x-pack/filebeat/module/cisco/nexus/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/cisco/nexus/config/pipeline.js delete mode 100644 x-pack/filebeat/module/cisco/nexus/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/cisco/nexus/manifest.yml delete mode 100644 x-pack/filebeat/module/cisco/nexus/test/nexus.log delete mode 100644 x-pack/filebeat/module/cisco/nexus/test/nexus.log-expected.json delete mode 100644 x-pack/filebeat/module/cylance/README.md delete mode 100644 x-pack/filebeat/module/cylance/_meta/config.yml delete mode 100644 x-pack/filebeat/module/cylance/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/cylance/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/cylance/fields.go delete mode 100644 x-pack/filebeat/module/cylance/protect/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/cylance/protect/config/input.yml delete mode 100644 x-pack/filebeat/module/cylance/protect/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/cylance/protect/config/pipeline.js delete mode 100644 x-pack/filebeat/module/cylance/protect/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/cylance/protect/manifest.yml delete mode 100644 x-pack/filebeat/module/cylance/protect/test/generated.log delete mode 100644 x-pack/filebeat/module/cylance/protect/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/f5/README.md delete mode 100644 x-pack/filebeat/module/f5/_meta/config.yml delete mode 100644 x-pack/filebeat/module/f5/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/f5/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/f5/bigipafm/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/f5/bigipafm/config/input.yml delete mode 100644 x-pack/filebeat/module/f5/bigipafm/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/f5/bigipafm/config/pipeline.js delete mode 100644 x-pack/filebeat/module/f5/bigipafm/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/f5/bigipafm/manifest.yml delete mode 100644 x-pack/filebeat/module/f5/bigipafm/test/generated.log delete mode 100644 x-pack/filebeat/module/f5/bigipafm/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/f5/bigipapm/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/f5/bigipapm/config/input.yml delete mode 100644 x-pack/filebeat/module/f5/bigipapm/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/f5/bigipapm/config/pipeline.js delete mode 100644 x-pack/filebeat/module/f5/bigipapm/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/f5/bigipapm/manifest.yml delete mode 100644 x-pack/filebeat/module/f5/bigipapm/test/generated.log delete mode 100644 x-pack/filebeat/module/f5/bigipapm/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/f5/fields.go delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/config/input.yml delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/config/pipeline.js delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/manifest.yml delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log delete mode 100644 x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/config/input.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/config/pipeline.js delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/manifest.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/test/generated.log delete mode 100644 x-pack/filebeat/module/fortinet/fortimail/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/config/input.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/config/pipeline.js delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/manifest.yml delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/test/generated.log delete mode 100644 x-pack/filebeat/module/fortinet/fortimanager/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/imperva/README.md delete mode 100644 x-pack/filebeat/module/imperva/_meta/config.yml delete mode 100644 x-pack/filebeat/module/imperva/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/imperva/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/imperva/fields.go delete mode 100644 x-pack/filebeat/module/imperva/securesphere/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/imperva/securesphere/config/input.yml delete mode 100644 x-pack/filebeat/module/imperva/securesphere/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/imperva/securesphere/config/pipeline.js delete mode 100644 x-pack/filebeat/module/imperva/securesphere/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/imperva/securesphere/manifest.yml delete mode 100644 x-pack/filebeat/module/imperva/securesphere/test/generated.log delete mode 100644 x-pack/filebeat/module/imperva/securesphere/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/infoblox/README.md delete mode 100644 x-pack/filebeat/module/infoblox/_meta/config.yml delete mode 100644 x-pack/filebeat/module/infoblox/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/infoblox/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/infoblox/fields.go delete mode 100644 x-pack/filebeat/module/infoblox/nios/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/infoblox/nios/config/input.yml delete mode 100644 x-pack/filebeat/module/infoblox/nios/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/infoblox/nios/config/pipeline.js delete mode 100644 x-pack/filebeat/module/infoblox/nios/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/infoblox/nios/manifest.yml delete mode 100644 x-pack/filebeat/module/infoblox/nios/test/generated.log delete mode 100644 x-pack/filebeat/module/infoblox/nios/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/juniper/junos/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/juniper/junos/config/input.yml delete mode 100644 x-pack/filebeat/module/juniper/junos/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/juniper/junos/config/pipeline.js delete mode 100644 x-pack/filebeat/module/juniper/junos/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/juniper/junos/manifest.yml delete mode 100644 x-pack/filebeat/module/juniper/junos/test/generated.log delete mode 100644 x-pack/filebeat/module/juniper/junos/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/juniper/netscreen/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/juniper/netscreen/config/input.yml delete mode 100644 x-pack/filebeat/module/juniper/netscreen/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/juniper/netscreen/config/pipeline.js delete mode 100644 x-pack/filebeat/module/juniper/netscreen/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/juniper/netscreen/manifest.yml delete mode 100644 x-pack/filebeat/module/juniper/netscreen/test/generated.log delete mode 100644 x-pack/filebeat/module/juniper/netscreen/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/config/input.yml delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/config/pipeline.js delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/manifest.yml delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/test/generated.log delete mode 100644 x-pack/filebeat/module/microsoft/dhcp/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/netscout/README.md delete mode 100644 x-pack/filebeat/module/netscout/_meta/config.yml delete mode 100644 x-pack/filebeat/module/netscout/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/netscout/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/netscout/fields.go delete mode 100644 x-pack/filebeat/module/netscout/sightline/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/netscout/sightline/config/input.yml delete mode 100644 x-pack/filebeat/module/netscout/sightline/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/netscout/sightline/config/pipeline.js delete mode 100644 x-pack/filebeat/module/netscout/sightline/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/netscout/sightline/manifest.yml delete mode 100644 x-pack/filebeat/module/netscout/sightline/test/generated.log delete mode 100644 x-pack/filebeat/module/netscout/sightline/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/proofpoint/README.md delete mode 100644 x-pack/filebeat/module/proofpoint/_meta/config.yml delete mode 100644 x-pack/filebeat/module/proofpoint/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/proofpoint/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/config/input.yml delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/config/pipeline.js delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/manifest.yml delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log delete mode 100644 x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/proofpoint/fields.go delete mode 100644 x-pack/filebeat/module/radware/README.md delete mode 100644 x-pack/filebeat/module/radware/_meta/config.yml delete mode 100644 x-pack/filebeat/module/radware/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/radware/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/radware/defensepro/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/radware/defensepro/config/input.yml delete mode 100644 x-pack/filebeat/module/radware/defensepro/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/radware/defensepro/config/pipeline.js delete mode 100644 x-pack/filebeat/module/radware/defensepro/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/radware/defensepro/manifest.yml delete mode 100644 x-pack/filebeat/module/radware/fields.go delete mode 100644 x-pack/filebeat/module/snort/README.md delete mode 100644 x-pack/filebeat/module/snort/_meta/config.yml delete mode 100644 x-pack/filebeat/module/snort/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/snort/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/snort/fields.go delete mode 100644 x-pack/filebeat/module/snort/log/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/snort/log/config/input.yml delete mode 100644 x-pack/filebeat/module/snort/log/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/snort/log/config/pipeline.js delete mode 100644 x-pack/filebeat/module/snort/log/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/snort/log/manifest.yml delete mode 100644 x-pack/filebeat/module/snort/log/test/generated.log delete mode 100644 x-pack/filebeat/module/snort/log/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/sonicwall/README.md delete mode 100644 x-pack/filebeat/module/sonicwall/_meta/config.yml delete mode 100644 x-pack/filebeat/module/sonicwall/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/sonicwall/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/sonicwall/fields.go delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/config/input.yml delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/config/pipeline.js delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/manifest.yml delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/test/general.log delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/test/general.log-expected.json delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/test/generated.log delete mode 100644 x-pack/filebeat/module/sonicwall/firewall/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/sophos/utm/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/sophos/utm/config/input.yml delete mode 100644 x-pack/filebeat/module/sophos/utm/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/sophos/utm/config/pipeline.js delete mode 100644 x-pack/filebeat/module/sophos/utm/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/sophos/utm/manifest.yml delete mode 100644 x-pack/filebeat/module/sophos/utm/test/generated.log delete mode 100644 x-pack/filebeat/module/sophos/utm/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/squid/README.md delete mode 100644 x-pack/filebeat/module/squid/_meta/config.yml delete mode 100644 x-pack/filebeat/module/squid/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/squid/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/squid/fields.go delete mode 100644 x-pack/filebeat/module/squid/log/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/squid/log/config/input.yml delete mode 100644 x-pack/filebeat/module/squid/log/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/squid/log/config/pipeline.js delete mode 100644 x-pack/filebeat/module/squid/log/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/squid/log/manifest.yml delete mode 100644 x-pack/filebeat/module/squid/log/test/access1.log delete mode 100644 x-pack/filebeat/module/squid/log/test/access1.log-expected.json delete mode 100644 x-pack/filebeat/module/squid/log/test/generated.log delete mode 100644 x-pack/filebeat/module/squid/log/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/tomcat/README.md delete mode 100644 x-pack/filebeat/module/tomcat/_meta/config.yml delete mode 100644 x-pack/filebeat/module/tomcat/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/tomcat/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/tomcat/fields.go delete mode 100644 x-pack/filebeat/module/tomcat/log/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/tomcat/log/config/input.yml delete mode 100644 x-pack/filebeat/module/tomcat/log/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/tomcat/log/config/pipeline.js delete mode 100644 x-pack/filebeat/module/tomcat/log/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/tomcat/log/manifest.yml delete mode 100644 x-pack/filebeat/module/tomcat/log/test/generated.log delete mode 100644 x-pack/filebeat/module/tomcat/log/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/zscaler/README.md delete mode 100644 x-pack/filebeat/module/zscaler/_meta/config.yml delete mode 100644 x-pack/filebeat/module/zscaler/_meta/docs.asciidoc delete mode 100644 x-pack/filebeat/module/zscaler/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/zscaler/fields.go delete mode 100644 x-pack/filebeat/module/zscaler/zia/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/zscaler/zia/config/input.yml delete mode 100644 x-pack/filebeat/module/zscaler/zia/config/liblogparser.js delete mode 100644 x-pack/filebeat/module/zscaler/zia/config/pipeline.js delete mode 100644 x-pack/filebeat/module/zscaler/zia/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/zscaler/zia/manifest.yml delete mode 100644 x-pack/filebeat/module/zscaler/zia/test/generated.log delete mode 100644 x-pack/filebeat/module/zscaler/zia/test/generated.log-expected.json delete mode 100644 x-pack/filebeat/module/zscaler/zia/test/test.log delete mode 100644 x-pack/filebeat/module/zscaler/zia/test/test.log-expected.json delete mode 100644 x-pack/filebeat/modules.d/barracuda.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/bluecoat.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/cylance.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/f5.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/imperva.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/infoblox.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/netscout.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/proofpoint.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/radware.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/snort.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/sonicwall.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/squid.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/tomcat.yml.disabled delete mode 100644 x-pack/filebeat/modules.d/zscaler.yml.disabled diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index cecdeefd875..df8257750b6 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -17,6 +17,30 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Filebeat* - Convert netflow input to API v2 and disable event normalisation {pull}37901[37901] +- Removed deprecated ZScaler from Beats. Use the https://docs.elastic.co/integrations/zscaler_zia[Zscaler Internet Access] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Tomcat from Beats. Use the https://docs.elastic.co/integrations/apache_tomcat[Apache Tomcat] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Squid from Beats. See <> for migration options. {pull}38037[38037] +- Removed deprecated SonicWall from Beats. Use the https://docs.elastic.co/integrations/sonicwall[SonicWall Firewall] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Sonicwall from Beats. Use the https://docs.elastic.co/integrations/sonicwall[SonicWall Firewall] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Snort from Beats. Use the https://docs.elastic.co/integrations/snort[Snort] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Radware from Beats. See <> for migration options. {pull}38037[38037] +- Removed deprecated Proofpoint from Beats. Use the https://docs.elastic.co/integrations/proofpoint_tap[Proofpoint TAP] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Netscout from Beats. See <> for migration options. {pull}38037[38037] +- Removed deprecated Microsoft DHCP from Beats. Use the https://docs.elastic.co/integrations/microsoft_dhcp[Microsoft DHCP] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Juniper Junos from Beats. Use the https://docs.elastic.co/integrations/juniper_srx[Juniper SRX] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Juniper Netscreen from Beats. See <> for migration options. {pull}38037[38037] +- Removed deprecated Infoblox from Beats. Use the https://docs.elastic.co/integrations/infoblox_nios[Infoblox NIOS] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Impreva from Beats. See <> for migration options. {pull}38037[38037] +- Removed deprecated Fortinet Client Endpoint from Beats. Use the https://docs.elastic.co/integrations/fortinet_forticlient[Fortinet FortiClient Logs] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Fortinet Fortimail from Beats. Use the https://docs.elastic.co/integrations/fortinet_fortimail[Fortinet FortiMail] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Fortinet Fortimanager from Beats. Use the https://docs.elastic.co/integrations/fortinet_fortimanager[Fortinet FortiManager Logs] Elastic integration instead. {pull}38037[38037] +- Removed deprecated F5 from Beats. Use the https://docs.elastic.co/integrations/f5_bigip[F5 BIG-IP] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Cylance from Beats. See <> for migration options. {pull}38037[38037] +- Removed deprecated Cisco Meraki from Beats. Use the https://docs.elastic.co/integrations/cisco_meraki[Cisco Meraki] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Cisco Nexus from Beats. Use the https://docs.elastic.co/integrations/cisco_nexus[Cisco Nexus] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Bluecoat from Beats. See <> for migration options. {pull}38037[38037] +- Removed deprecated Barracuda from Beats. Use the https://docs.elastic.co/integrations/barracuda[Barracuda Web Application Firewall] Elastic integration instead. {pull}38037[38037] +- Removed deprecated Sophos UTM from Beats. Use the https://docs.elastic.co/integrations/sophos[Sophos] Elastic integration instead. {pull}38037[38037] - Introduce input/netmetrics and refactor netflow input metrics {pull}38055[38055] diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index 0c897ca3b1e..d6191d62e7b 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -21,9 +21,7 @@ grouped in the following categories: * <> * <> * <> -* <> * <> -* <> * <> * <> * <> @@ -32,12 +30,10 @@ grouped in the following categories: * <> * <> * <> -* <> * <> * <> * <> * <> -* <> * <> * <> * <> @@ -46,8 +42,6 @@ grouped in the following categories: * <> * <> * <> -* <> -* <> * <> * <> * <> @@ -65,7 +59,6 @@ grouped in the following categories: * <> * <> * <> -* <> * <> * <> * <> @@ -75,28 +68,21 @@ grouped in the following categories: * <> * <> * <> -* <> * <> -* <> * <> * <> * <> * <> -* <> * <> -* <> * <> -* <> * <> * <> * <> -* <> * <> * <> * <> * <> * <> -* <> -- [[exported-fields-activemq]] @@ -3591,159495 +3577,56267 @@ type: keyword -- -[[exported-fields-barracuda]] -== Barracuda Web Application Firewall fields +[[exported-fields-beat-common]] +== Beat fields -barracuda fields. +Contains common beat fields available in all event types. -*`network.interface.name`*:: +*`agent.hostname`*:: + -- -Name of the network interface where the traffic has been observed. - +Deprecated - use agent.name or agent.id to identify an agent. -type: keyword --- +type: alias +alias to: agent.name +-- -*`rsa.internal.msg`*:: +*`beat.timezone`*:: + -- -This key is used to capture the raw message that comes into the Log Decoder +type: alias -type: keyword +alias to: event.timezone -- -*`rsa.internal.messageid`*:: +*`fields`*:: + -- -type: keyword +Contains user configurable fields. --- -*`rsa.internal.event_desc`*:: -+ --- -type: keyword +type: object -- -*`rsa.internal.message`*:: +*`beat.name`*:: + -- -This key captures the contents of instant messages +type: alias -type: keyword +alias to: host.name -- -*`rsa.internal.time`*:: +*`beat.hostname`*:: + -- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. +type: alias -type: date +alias to: agent.name -- -*`rsa.internal.level`*:: +*`timeseries.instance`*:: + -- -Deprecated key defined only in table map. +Time series instance id -type: long +type: keyword -- -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +[[exported-fields-cef]] +== Decode CEF processor fields fields -type: keyword +Common Event Format (CEF) data. --- -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness -type: keyword +[float] +=== cef + +By default the `decode_cef` processor writes all data from the CEF message to this `cef` object. It contains the CEF header fields and the extension data. --- -*`rsa.internal.data`*:: + +*`cef.version`*:: + -- -Deprecated key defined only in table map. +Version of the CEF specification used by the message. + type: keyword -- -*`rsa.internal.obj_server`*:: +*`cef.device.vendor`*:: + -- -Deprecated key defined only in table map. +Vendor of the device that produced the message. + type: keyword -- -*`rsa.internal.obj_val`*:: +*`cef.device.product`*:: + -- -Deprecated key defined only in table map. +Product of the device that produced the message. + type: keyword -- -*`rsa.internal.resource`*:: +*`cef.device.version`*:: + -- -Deprecated key defined only in table map. +Version of the product that produced the message. + type: keyword -- -*`rsa.internal.obj_id`*:: +*`cef.device.event_class_id`*:: + -- -Deprecated key defined only in table map. +Unique identifier of the event type. + type: keyword -- -*`rsa.internal.statement`*:: +*`cef.severity`*:: + -- -Deprecated key defined only in table map. +Importance of the event. The valid string values are Unknown, Low, Medium, High, and Very-High. The valid integer values are 0-3=Low, 4-6=Medium, 7- 8=High, and 9-10=Very-High. + type: keyword +example: Very-High + -- -*`rsa.internal.audit_class`*:: +*`cef.name`*:: + -- -Deprecated key defined only in table map. +Short description of the event. + type: keyword -- -*`rsa.internal.entry`*:: +[float] +=== extensions + +Collection of key-value pairs carried in the CEF extension field. + + + +*`cef.extensions.agentAddress`*:: + -- -Deprecated key defined only in table map. +The IP address of the ArcSight connector that processed the event. -type: keyword +type: ip -- -*`rsa.internal.hcode`*:: +*`cef.extensions.agentDnsDomain`*:: + -- -Deprecated key defined only in table map. +The DNS domain name of the ArcSight connector that processed the event. type: keyword -- -*`rsa.internal.inode`*:: +*`cef.extensions.agentHostName`*:: + -- -Deprecated key defined only in table map. +The hostname of the ArcSight connector that processed the event. -type: long +type: keyword -- -*`rsa.internal.resource_class`*:: +*`cef.extensions.agentId`*:: + -- -Deprecated key defined only in table map. +The agent ID of the ArcSight connector that processed the event. type: keyword -- -*`rsa.internal.dead`*:: +*`cef.extensions.agentMacAddress`*:: + -- -Deprecated key defined only in table map. +The MAC address of the ArcSight connector that processed the event. -type: long +type: keyword -- -*`rsa.internal.feed_desc`*:: +*`cef.extensions.agentNtDomain`*:: + -- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +None type: keyword -- -*`rsa.internal.feed_name`*:: +*`cef.extensions.agentReceiptTime`*:: + -- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The time at which information about the event was received by the ArcSight connector. -type: keyword +type: date -- -*`rsa.internal.cid`*:: +*`cef.extensions.agentTimeZone`*:: + -- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The agent time zone of the ArcSight connector that processed the event. type: keyword -- -*`rsa.internal.device_class`*:: +*`cef.extensions.agentTranslatedAddress`*:: + -- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +None -type: keyword +type: ip -- -*`rsa.internal.device_group`*:: +*`cef.extensions.agentTranslatedZoneExternalID`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +None type: keyword -- -*`rsa.internal.device_host`*:: +*`cef.extensions.agentTranslatedZoneURI`*:: + -- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +None type: keyword -- -*`rsa.internal.device_ip`*:: +*`cef.extensions.agentType`*:: + -- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The agent type of the ArcSight connector that processed the event -type: ip +type: keyword -- -*`rsa.internal.device_ipv6`*:: +*`cef.extensions.agentVersion`*:: + -- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The version of the ArcSight connector that processed the event. -type: ip +type: keyword -- -*`rsa.internal.device_type`*:: +*`cef.extensions.agentZoneExternalID`*:: + -- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +None type: keyword -- -*`rsa.internal.device_type_id`*:: +*`cef.extensions.agentZoneURI`*:: + -- -Deprecated key defined only in table map. +None -type: long +type: keyword -- -*`rsa.internal.did`*:: +*`cef.extensions.applicationProtocol`*:: + -- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Application level protocol, example values are HTTP, HTTPS, SSHv2, Telnet, POP, IMPA, IMAPS, and so on. type: keyword -- -*`rsa.internal.entropy_req`*:: +*`cef.extensions.baseEventCount`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +A count associated with this event. How many times was this same event observed? Count can be omitted if it is 1. type: long -- -*`rsa.internal.entropy_res`*:: +*`cef.extensions.bytesIn`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +Number of bytes transferred inbound, relative to the source to destination relationship, meaning that data was flowing from source to destination. type: long -- -*`rsa.internal.event_name`*:: +*`cef.extensions.bytesOut`*:: + -- -Deprecated key defined only in table map. +Number of bytes transferred outbound relative to the source to destination relationship. For example, the byte number of data flowing from the destination to the source. -type: keyword +type: long -- -*`rsa.internal.feed_category`*:: +*`cef.extensions.customerExternalID`*:: + -- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +None type: keyword -- -*`rsa.internal.forward_ip`*:: +*`cef.extensions.customerURI`*:: + -- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. +None -type: ip +type: keyword -- -*`rsa.internal.forward_ipv6`*:: +*`cef.extensions.destinationAddress`*:: + -- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Identifies the destination address that the event refers to in an IP network. The format is an IPv4 address. type: ip -- -*`rsa.internal.header_id`*:: +*`cef.extensions.destinationDnsDomain`*:: + -- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The DNS domain part of the complete fully qualified domain name (FQDN). type: keyword -- -*`rsa.internal.lc_cid`*:: +*`cef.extensions.destinationGeoLatitude`*:: + -- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The latitudinal value from which the destination's IP address belongs. -type: keyword +type: double -- -*`rsa.internal.lc_ctime`*:: +*`cef.extensions.destinationGeoLongitude`*:: + -- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The longitudinal value from which the destination's IP address belongs. -type: date +type: double -- -*`rsa.internal.mcb_req`*:: +*`cef.extensions.destinationHostName`*:: + -- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most +Identifies the destination that an event refers to in an IP network. The format should be a fully qualified domain name (FQDN) associated with the destination node, when a node is available. -type: long +type: keyword -- -*`rsa.internal.mcb_res`*:: +*`cef.extensions.destinationMacAddress`*:: + -- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most +Six colon-seperated hexadecimal numbers. -type: long +type: keyword -- -*`rsa.internal.mcbc_req`*:: +*`cef.extensions.destinationNtDomain`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +The Windows domain name of the destination address. -type: long +type: keyword -- -*`rsa.internal.mcbc_res`*:: +*`cef.extensions.destinationPort`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +The valid port numbers are between 0 and 65535. type: long -- -*`rsa.internal.medium`*:: +*`cef.extensions.destinationProcessId`*:: + -- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session +Provides the ID of the destination process associated with the event. For example, if an event contains process ID 105, "105" is the process ID. type: long -- -*`rsa.internal.node_name`*:: +*`cef.extensions.destinationProcessName`*:: + -- -Deprecated key defined only in table map. +The name of the event's destination process. type: keyword -- -*`rsa.internal.nwe_callback_id`*:: +*`cef.extensions.destinationServiceName`*:: + -- -This key denotes that event is endpoint related +The service targeted by this event. type: keyword -- -*`rsa.internal.parse_error`*:: +*`cef.extensions.destinationTranslatedAddress`*:: + -- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Identifies the translated destination that the event refers to in an IP network. -type: keyword +type: ip -- -*`rsa.internal.payload_req`*:: +*`cef.extensions.destinationTranslatedPort`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +Port after it was translated; for example, a firewall. Valid port numbers are 0 to 65535. type: long -- -*`rsa.internal.payload_res`*:: +*`cef.extensions.destinationTranslatedZoneExternalID`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +None -type: long +type: keyword -- -*`rsa.internal.process_vid_dst`*:: +*`cef.extensions.destinationTranslatedZoneURI`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. +The URI for the Translated Zone that the destination asset has been assigned to in ArcSight. type: keyword -- -*`rsa.internal.process_vid_src`*:: +*`cef.extensions.destinationUserId`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. +Identifies the destination user by ID. For example, in UNIX, the root user is generally associated with user ID 0. type: keyword -- -*`rsa.internal.rid`*:: +*`cef.extensions.destinationUserName`*:: + -- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Identifies the destination user by name. This is the user associated with the event's destination. Email addresses are often mapped into the UserName fields. The recipient is a candidate to put into this field. -type: long +type: keyword -- -*`rsa.internal.session_split`*:: +*`cef.extensions.destinationUserPrivileges`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The typical values are "Administrator", "User", and "Guest". This identifies the destination user's privileges. In UNIX, for example, activity executed on the root user would be identified with destinationUser Privileges of "Administrator". type: keyword -- -*`rsa.internal.site`*:: +*`cef.extensions.destinationZoneExternalID`*:: + -- -Deprecated key defined only in table map. +None type: keyword -- -*`rsa.internal.size`*:: +*`cef.extensions.destinationZoneURI`*:: + -- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The URI for the Zone that the destination asset has been assigned to in ArcSight. -type: long +type: keyword -- -*`rsa.internal.sourcefile`*:: +*`cef.extensions.deviceAction`*:: + -- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Action taken by the device. type: keyword -- -*`rsa.internal.ubc_req`*:: +*`cef.extensions.deviceAddress`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +Identifies the device address that an event refers to in an IP network. -type: long +type: ip -- -*`rsa.internal.ubc_res`*:: +*`cef.extensions.deviceCustomFloatingPoint1Label`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. -type: long +type: keyword -- -*`rsa.internal.word`*:: +*`cef.extensions.deviceCustomFloatingPoint3Label`*:: + -- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- - -*`rsa.time.event_time`*:: +*`cef.extensions.deviceCustomFloatingPoint4Label`*:: + -- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. -type: date +type: keyword -- -*`rsa.time.duration_time`*:: +*`cef.extensions.deviceCustomDate1`*:: + -- -This key is used to capture the normalized duration/lifetime in seconds. +One of two timestamp fields available to map fields that do not apply to any other in this dictionary. -type: double +type: date -- -*`rsa.time.event_time_str`*:: +*`cef.extensions.deviceCustomDate1Label`*:: + -- -This key is used to capture the incomplete time mentioned in a session as a string +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- -*`rsa.time.starttime`*:: +*`cef.extensions.deviceCustomDate2`*:: + -- -This key is used to capture the Start time mentioned in a session in a standard form +One of two timestamp fields available to map fields that do not apply to any other in this dictionary. type: date -- -*`rsa.time.month`*:: +*`cef.extensions.deviceCustomDate2Label`*:: + -- -type: keyword - --- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. -*`rsa.time.day`*:: -+ --- type: keyword -- -*`rsa.time.endtime`*:: +*`cef.extensions.deviceCustomFloatingPoint1`*:: + -- -This key is used to capture the End time mentioned in a session in a standard form +One of four floating point fields available to map fields that do not apply to any other in this dictionary. -type: date +type: double -- -*`rsa.time.timezone`*:: +*`cef.extensions.deviceCustomFloatingPoint2`*:: + -- -This key is used to capture the timezone of the Event Time +One of four floating point fields available to map fields that do not apply to any other in this dictionary. -type: keyword +type: double -- -*`rsa.time.duration_str`*:: +*`cef.extensions.deviceCustomFloatingPoint2Label`*:: + -- -A text string version of the duration +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- -*`rsa.time.date`*:: +*`cef.extensions.deviceCustomFloatingPoint3`*:: + -- -type: keyword +One of four floating point fields available to map fields that do not apply to any other in this dictionary. + +type: double -- -*`rsa.time.year`*:: +*`cef.extensions.deviceCustomFloatingPoint4`*:: + -- -type: keyword +One of four floating point fields available to map fields that do not apply to any other in this dictionary. + +type: double -- -*`rsa.time.recorded_time`*:: +*`cef.extensions.deviceCustomIPv6Address1`*:: + -- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. +One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. -type: date +type: ip -- -*`rsa.time.datetime`*:: +*`cef.extensions.deviceCustomIPv6Address1Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.effective_time`*:: +*`cef.extensions.deviceCustomIPv6Address2`*:: + -- -This key is the effective time referenced by an individual event in a Standard Timestamp format +One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. -type: date +type: ip -- -*`rsa.time.expire_time`*:: +*`cef.extensions.deviceCustomIPv6Address2Label`*:: + -- -This key is the timestamp that explicitly refers to an expiration. +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. -type: date +type: keyword -- -*`rsa.time.process_time`*:: +*`cef.extensions.deviceCustomIPv6Address3`*:: + -- -Deprecated, use duration.time +One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. -type: keyword +type: ip -- -*`rsa.time.hour`*:: +*`cef.extensions.deviceCustomIPv6Address3Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.min`*:: +*`cef.extensions.deviceCustomIPv6Address4`*:: + -- -type: keyword +One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. + +type: ip -- -*`rsa.time.timestamp`*:: +*`cef.extensions.deviceCustomIPv6Address4Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.event_queue_time`*:: +*`cef.extensions.deviceCustomNumber1`*:: + -- -This key is the Time that the event was queued. +One of three number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. -type: date +type: long -- -*`rsa.time.p_time1`*:: +*`cef.extensions.deviceCustomNumber1Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.tzone`*:: +*`cef.extensions.deviceCustomNumber2`*:: + -- -type: keyword +One of three number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. + +type: long -- -*`rsa.time.eventtime`*:: +*`cef.extensions.deviceCustomNumber2Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.gmtdate`*:: +*`cef.extensions.deviceCustomNumber3`*:: + -- -type: keyword +One of three number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. + +type: long -- -*`rsa.time.gmttime`*:: +*`cef.extensions.deviceCustomNumber3Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.p_date`*:: +*`cef.extensions.deviceCustomString1`*:: + -- +One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. + type: keyword -- -*`rsa.time.p_month`*:: +*`cef.extensions.deviceCustomString1Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.p_time`*:: +*`cef.extensions.deviceCustomString2`*:: + -- +One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. + type: keyword -- -*`rsa.time.p_time2`*:: +*`cef.extensions.deviceCustomString2Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.time.p_year`*:: +*`cef.extensions.deviceCustomString3`*:: + -- +One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. + type: keyword -- -*`rsa.time.expire_time_str`*:: +*`cef.extensions.deviceCustomString3Label`*:: + -- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- -*`rsa.time.stamp`*:: +*`cef.extensions.deviceCustomString4`*:: + -- -Deprecated key defined only in table map. +One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. -type: date +type: keyword -- - -*`rsa.misc.action`*:: +*`cef.extensions.deviceCustomString4Label`*:: + -- +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. + type: keyword -- -*`rsa.misc.result`*:: +*`cef.extensions.deviceCustomString5`*:: + -- -This key is used to capture the outcome/result string value of an action in a session. +One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. type: keyword -- -*`rsa.misc.severity`*:: +*`cef.extensions.deviceCustomString5Label`*:: + -- -This key is used to capture the severity given the session +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- -*`rsa.misc.event_type`*:: +*`cef.extensions.deviceCustomString6`*:: + -- -This key captures the event category type as specified by the event source. +One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. type: keyword -- -*`rsa.misc.reference_id`*:: +*`cef.extensions.deviceCustomString6Label`*:: + -- -This key is used to capture an event id from the session directly +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- -*`rsa.misc.version`*:: +*`cef.extensions.deviceDirection`*:: + -- -This key captures Version of the application or OS which is generating the event. +Any information about what direction the observed communication has taken. The following values are supported - "0" for inbound or "1" for outbound. -type: keyword +type: long -- -*`rsa.misc.disposition`*:: +*`cef.extensions.deviceDnsDomain`*:: + -- -This key captures the The end state of an action. +The DNS domain part of the complete fully qualified domain name (FQDN). type: keyword -- -*`rsa.misc.result_code`*:: +*`cef.extensions.deviceEventCategory`*:: + -- -This key is used to capture the outcome/result numeric value of an action in a session +Represents the category assigned by the originating device. Devices often use their own categorization schema to classify event. Example "/Monitor/Disk/Read". type: keyword -- -*`rsa.misc.category`*:: +*`cef.extensions.deviceExternalId`*:: + -- -This key is used to capture the category of an event given by the vendor in the session +A name that uniquely identifies the device generating this event. type: keyword -- -*`rsa.misc.obj_name`*:: +*`cef.extensions.deviceFacility`*:: + -- -This is used to capture name of object +The facility generating this event. For example, Syslog has an explicit facility associated with every event. type: keyword -- -*`rsa.misc.obj_type`*:: +*`cef.extensions.deviceFlexNumber1`*:: + -- -This is used to capture type of object +One of two alternative number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. -type: keyword +type: long -- -*`rsa.misc.event_source`*:: +*`cef.extensions.deviceFlexNumber1Label`*:: + -- -This key captures Source of the event that’s not a hostname +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- -*`rsa.misc.log_session_id`*:: +*`cef.extensions.deviceFlexNumber2`*:: + -- -This key is used to capture a sessionid from the session directly +One of two alternative number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. -type: keyword +type: long -- -*`rsa.misc.group`*:: +*`cef.extensions.deviceFlexNumber2Label`*:: + -- -This key captures the Group Name value +All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. type: keyword -- -*`rsa.misc.policy_name`*:: +*`cef.extensions.deviceHostName`*:: + -- -This key is used to capture the Policy Name only. +The format should be a fully qualified domain name (FQDN) associated with the device node, when a node is available. type: keyword -- -*`rsa.misc.rule_name`*:: +*`cef.extensions.deviceInboundInterface`*:: + -- -This key captures the Rule Name +Interface on which the packet or data entered the device. type: keyword -- -*`rsa.misc.context`*:: +*`cef.extensions.deviceMacAddress`*:: + -- -This key captures Information which adds additional context to the event. +Six colon-separated hexadecimal numbers. type: keyword -- -*`rsa.misc.change_new`*:: +*`cef.extensions.deviceNtDomain`*:: + -- -This key is used to capture the new values of the attribute that’s changing in a session +The Windows domain name of the device address. type: keyword -- -*`rsa.misc.space`*:: +*`cef.extensions.deviceOutboundInterface`*:: + -- +Interface on which the packet or data left the device. + type: keyword -- -*`rsa.misc.client`*:: +*`cef.extensions.devicePayloadId`*:: + -- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. +Unique identifier for the payload associated with the event. type: keyword -- -*`rsa.misc.msgIdPart1`*:: +*`cef.extensions.deviceProcessId`*:: + -- -type: keyword +Provides the ID of the process on the device generating the event. + +type: long -- -*`rsa.misc.msgIdPart2`*:: +*`cef.extensions.deviceProcessName`*:: + -- +Process name associated with the event. An example might be the process generating the syslog entry in UNIX. + type: keyword -- -*`rsa.misc.change_old`*:: +*`cef.extensions.deviceReceiptTime`*:: + -- -This key is used to capture the old value of the attribute that’s changing in a session +The time at which the event related to the activity was received. The format is MMM dd yyyy HH:mm:ss or milliseconds since epoch (Jan 1st 1970) -type: keyword +type: date -- -*`rsa.misc.operation_id`*:: +*`cef.extensions.deviceTimeZone`*:: + -- -An alert number or operation number. The values should be unique and non-repeating. +The time zone for the device generating the event. type: keyword -- -*`rsa.misc.event_state`*:: +*`cef.extensions.deviceTranslatedAddress`*:: + -- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. +Identifies the translated device address that the event refers to in an IP network. -type: keyword +type: ip -- -*`rsa.misc.group_object`*:: +*`cef.extensions.deviceTranslatedZoneExternalID`*:: + -- -This key captures a collection/grouping of entities. Specific usage +None type: keyword -- -*`rsa.misc.node`*:: +*`cef.extensions.deviceTranslatedZoneURI`*:: + -- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. +The URI for the Translated Zone that the device asset has been assigned to in ArcSight. type: keyword -- -*`rsa.misc.rule`*:: +*`cef.extensions.deviceZoneExternalID`*:: + -- -This key captures the Rule number +None type: keyword -- -*`rsa.misc.device_name`*:: +*`cef.extensions.deviceZoneURI`*:: + -- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc +Thee URI for the Zone that the device asset has been assigned to in ArcSight. type: keyword -- -*`rsa.misc.param`*:: +*`cef.extensions.endTime`*:: + -- -This key is the parameters passed as part of a command or application, etc. +The time at which the activity related to the event ended. The format is MMM dd yyyy HH:mm:ss or milliseconds since epoch (Jan 1st1970). An example would be reporting the end of a session. -type: keyword +type: date -- -*`rsa.misc.change_attrib`*:: +*`cef.extensions.eventId`*:: + -- -This key is used to capture the name of the attribute that’s changing in a session +This is a unique ID that ArcSight assigns to each event. -type: keyword +type: long -- -*`rsa.misc.event_computer`*:: +*`cef.extensions.eventOutcome`*:: + -- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. +Displays the outcome, usually as 'success' or 'failure'. type: keyword -- -*`rsa.misc.reference_id1`*:: +*`cef.extensions.externalId`*:: + -- -This key is for Linked ID to be used as an addition to "reference.id" +The ID used by an originating device. They are usually increasing numbers, associated with events. type: keyword -- -*`rsa.misc.event_log`*:: +*`cef.extensions.fileCreateTime`*:: + -- -This key captures the Name of the event log +Time when the file was created. -type: keyword +type: date -- -*`rsa.misc.OS`*:: +*`cef.extensions.fileHash`*:: + -- -This key captures the Name of the Operating System +Hash of a file. type: keyword -- -*`rsa.misc.terminal`*:: +*`cef.extensions.fileId`*:: + -- -This key captures the Terminal Names only +An ID associated with a file could be the inode. type: keyword -- -*`rsa.misc.msgIdPart3`*:: +*`cef.extensions.fileModificationTime`*:: + -- -type: keyword +Time when the file was last modified. + +type: date -- -*`rsa.misc.filter`*:: +*`cef.extensions.filename`*:: + -- -This key captures Filter used to reduce result set +Name of the file only (without its path). type: keyword -- -*`rsa.misc.serial_number`*:: +*`cef.extensions.filePath`*:: + -- -This key is the Serial number associated with a physical asset. +Full path to the file, including file name itself. type: keyword -- -*`rsa.misc.checksum`*:: +*`cef.extensions.filePermission`*:: + -- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. +Permissions of the file. type: keyword -- -*`rsa.misc.event_user`*:: +*`cef.extensions.fileSize`*:: + -- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. +Size of the file. -type: keyword +type: long -- -*`rsa.misc.virusname`*:: +*`cef.extensions.fileType`*:: + -- -This key captures the name of the virus +Type of file (pipe, socket, etc.) type: keyword -- -*`rsa.misc.content_type`*:: +*`cef.extensions.flexDate1`*:: + -- -This key is used to capture Content Type only. +A timestamp field available to map a timestamp that does not apply to any other defined timestamp field in this dictionary. Use all flex fields sparingly and seek a more specific, dictionary supplied field when possible. These fields are typically reserved for customer use and should not be set by vendors unless necessary. -type: keyword +type: date -- -*`rsa.misc.group_id`*:: +*`cef.extensions.flexDate1Label`*:: + -- -This key captures Group ID Number (related to the group name) +The label field is a string and describes the purpose of the flex field. type: keyword -- -*`rsa.misc.policy_id`*:: +*`cef.extensions.flexString1`*:: + -- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise +One of four floating point fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. These fields are typically reserved for customer use and should not be set by vendors unless necessary. type: keyword -- -*`rsa.misc.vsys`*:: +*`cef.extensions.flexString2`*:: + -- -This key captures Virtual System Name +One of four floating point fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. These fields are typically reserved for customer use and should not be set by vendors unless necessary. type: keyword -- -*`rsa.misc.connection_id`*:: +*`cef.extensions.flexString1Label`*:: + -- -This key captures the Connection ID +The label field is a string and describes the purpose of the flex field. type: keyword -- -*`rsa.misc.reference_id2`*:: +*`cef.extensions.flexString2Label`*:: + -- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. +The label field is a string and describes the purpose of the flex field. type: keyword -- -*`rsa.misc.sensor`*:: +*`cef.extensions.message`*:: + -- -This key captures Name of the sensor. Typically used in IDS/IPS based devices +An arbitrary message giving more details about the event. Multi-line entries can be produced by using \n as the new line separator. type: keyword -- -*`rsa.misc.sig_id`*:: +*`cef.extensions.oldFileCreateTime`*:: + -- -This key captures IDS/IPS Int Signature ID +Time when old file was created. -type: long +type: date -- -*`rsa.misc.port_name`*:: +*`cef.extensions.oldFileHash`*:: + -- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). +Hash of the old file. type: keyword -- -*`rsa.misc.rule_group`*:: +*`cef.extensions.oldFileId`*:: + -- -This key captures the Rule group name +An ID associated with the old file could be the inode. type: keyword -- -*`rsa.misc.risk_num`*:: +*`cef.extensions.oldFileModificationTime`*:: + -- -This key captures a Numeric Risk value +Time when old file was last modified. -type: double +type: date -- -*`rsa.misc.trigger_val`*:: +*`cef.extensions.oldFileName`*:: + -- -This key captures the Value of the trigger or threshold condition. +Name of the old file. type: keyword -- -*`rsa.misc.log_session_id1`*:: +*`cef.extensions.oldFilePath`*:: + -- -This key is used to capture a Linked (Related) Session ID from the session directly +Full path to the old file, including the file name itself. type: keyword -- -*`rsa.misc.comp_version`*:: +*`cef.extensions.oldFilePermission`*:: + -- -This key captures the Version level of a sub-component of a product. +Permissions of the old file. type: keyword -- -*`rsa.misc.content_version`*:: +*`cef.extensions.oldFileSize`*:: + -- -This key captures Version level of a signature or database content. +Size of the old file. -type: keyword +type: long -- -*`rsa.misc.hardware_id`*:: +*`cef.extensions.oldFileType`*:: + -- -This key is used to capture unique identifier for a device or system (NOT a Mac address) +Type of the old file (pipe, socket, etc.) type: keyword -- -*`rsa.misc.risk`*:: +*`cef.extensions.rawEvent`*:: + -- -This key captures the non-numeric risk value +None type: keyword -- -*`rsa.misc.event_id`*:: +*`cef.extensions.Reason`*:: + -- +The reason an audit event was generated. For example "bad password" or "unknown user". This could also be an error or return code. Example "0x1234". + type: keyword -- -*`rsa.misc.reason`*:: +*`cef.extensions.requestClientApplication`*:: + -- +The User-Agent associated with the request. + type: keyword -- -*`rsa.misc.status`*:: +*`cef.extensions.requestContext`*:: + -- +Description of the content from which the request originated (for example, HTTP Referrer) + type: keyword -- -*`rsa.misc.mail_id`*:: +*`cef.extensions.requestCookies`*:: + -- -This key is used to capture the mailbox id/name +Cookies associated with the request. type: keyword -- -*`rsa.misc.rule_uid`*:: +*`cef.extensions.requestMethod`*:: + -- -This key is the Unique Identifier for a rule. +The HTTP method used to access a URL. type: keyword -- -*`rsa.misc.trigger_desc`*:: +*`cef.extensions.requestUrl`*:: + -- -This key captures the Description of the trigger or threshold condition. +In the case of an HTTP request, this field contains the URL accessed. The URL should contain the protocol as well. type: keyword -- -*`rsa.misc.inout`*:: +*`cef.extensions.sourceAddress`*:: + -- -type: keyword +Identifies the source that an event refers to in an IP network. + +type: ip -- -*`rsa.misc.p_msgid`*:: +*`cef.extensions.sourceDnsDomain`*:: + -- +The DNS domain part of the complete fully qualified domain name (FQDN). + type: keyword -- -*`rsa.misc.data_type`*:: +*`cef.extensions.sourceGeoLatitude`*:: + -- -type: keyword +None + +type: double -- -*`rsa.misc.msgIdPart4`*:: +*`cef.extensions.sourceGeoLongitude`*:: + -- -type: keyword +None + +type: double -- -*`rsa.misc.error`*:: +*`cef.extensions.sourceHostName`*:: + -- -This key captures All non successful Error codes or responses +Identifies the source that an event refers to in an IP network. The format should be a fully qualified domain name (FQDN) associated with the source node, when a mode is available. Examples: 'host' or 'host.domain.com'. + type: keyword -- -*`rsa.misc.index`*:: +*`cef.extensions.sourceMacAddress`*:: + -- +Six colon-separated hexadecimal numbers. + type: keyword +example: 00:0d:60:af:1b:61 + -- -*`rsa.misc.listnum`*:: +*`cef.extensions.sourceNtDomain`*:: + -- -This key is used to capture listname or listnumber, primarily for collecting access-list +The Windows domain name for the source address. type: keyword -- -*`rsa.misc.ntype`*:: +*`cef.extensions.sourcePort`*:: + -- -type: keyword +The valid port numbers are 0 to 65535. + +type: long -- -*`rsa.misc.observed_val`*:: +*`cef.extensions.sourceProcessId`*:: + -- -This key captures the Value observed (from the perspective of the device generating the log). +The ID of the source process associated with the event. -type: keyword +type: long -- -*`rsa.misc.policy_value`*:: +*`cef.extensions.sourceProcessName`*:: + -- -This key captures the contents of the policy. This contains details about the policy +The name of the event's source process. type: keyword -- -*`rsa.misc.pool_name`*:: +*`cef.extensions.sourceServiceName`*:: + -- -This key captures the name of a resource pool +The service that is responsible for generating this event. type: keyword -- -*`rsa.misc.rule_template`*:: +*`cef.extensions.sourceTranslatedAddress`*:: + -- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template +Identifies the translated source that the event refers to in an IP network. -type: keyword +type: ip -- -*`rsa.misc.count`*:: +*`cef.extensions.sourceTranslatedPort`*:: + -- -type: keyword +A port number after being translated by, for example, a firewall. Valid port numbers are 0 to 65535. + +type: long -- -*`rsa.misc.number`*:: +*`cef.extensions.sourceTranslatedZoneExternalID`*:: + -- +None + type: keyword -- -*`rsa.misc.sigcat`*:: +*`cef.extensions.sourceTranslatedZoneURI`*:: + -- +The URI for the Translated Zone that the destination asset has been assigned to in ArcSight. + type: keyword -- -*`rsa.misc.type`*:: +*`cef.extensions.sourceUserId`*:: + -- +Identifies the source user by ID. This is the user associated with the source of the event. For example, in UNIX, the root user is generally associated with user ID 0. + type: keyword -- -*`rsa.misc.comments`*:: +*`cef.extensions.sourceUserName`*:: + -- -Comment information provided in the log message +Identifies the source user by name. Email addresses are also mapped into the UserName fields. The sender is a candidate to put into this field. type: keyword -- -*`rsa.misc.doc_number`*:: +*`cef.extensions.sourceUserPrivileges`*:: + -- -This key captures File Identification number +The typical values are "Administrator", "User", and "Guest". It identifies the source user's privileges. In UNIX, for example, activity executed by the root user would be identified with "Administrator". -type: long +type: keyword -- -*`rsa.misc.expected_val`*:: +*`cef.extensions.sourceZoneExternalID`*:: + -- -This key captures the Value expected (from the perspective of the device generating the log). +None type: keyword -- -*`rsa.misc.job_num`*:: +*`cef.extensions.sourceZoneURI`*:: + -- -This key captures the Job Number +The URI for the Zone that the source asset has been assigned to in ArcSight. type: keyword -- -*`rsa.misc.spi_dst`*:: +*`cef.extensions.startTime`*:: + -- -Destination SPI Index +The time when the activity the event referred to started. The format is MMM dd yyyy HH:mm:ss or milliseconds since epoch (Jan 1st 1970) -type: keyword +type: date -- -*`rsa.misc.spi_src`*:: +*`cef.extensions.transportProtocol`*:: + -- -Source SPI Index +Identifies the Layer-4 protocol used. The possible values are protocols such as TCP or UDP. type: keyword -- -*`rsa.misc.code`*:: +*`cef.extensions.type`*:: + -- -type: keyword +0 means base event, 1 means aggregated, 2 means correlation, and 3 means action. This field can be omitted for base events (type 0). + +type: long -- -*`rsa.misc.agent_id`*:: +*`cef.extensions.categoryDeviceType`*:: + -- -This key is used to capture agent id +Device type. Examples - Proxy, IDS, Web Server type: keyword -- -*`rsa.misc.message_body`*:: +*`cef.extensions.categoryObject`*:: + -- -This key captures the The contents of the message body. +Object that the event is about. For example it can be an operating sytem, database, file, etc. type: keyword -- -*`rsa.misc.phone`*:: +*`cef.extensions.categoryBehavior`*:: + -- +Action or a behavior associated with an event. It's what is being done to the object. + type: keyword -- -*`rsa.misc.sig_id_str`*:: +*`cef.extensions.categoryTechnique`*:: + -- -This key captures a string object of the sigid variable. +Technique being used (e.g. /DoS). type: keyword -- -*`rsa.misc.cmd`*:: +*`cef.extensions.categoryDeviceGroup`*:: + -- +General device group like Firewall. + type: keyword -- -*`rsa.misc.misc`*:: +*`cef.extensions.categorySignificance`*:: + -- +Characterization of the importance of the event. + type: keyword -- -*`rsa.misc.name`*:: +*`cef.extensions.categoryOutcome`*:: + -- +Outcome of the event (e.g. sucess, failure, or attempt). + type: keyword -- -*`rsa.misc.cpu`*:: +*`cef.extensions.managerReceiptTime`*:: + -- -This key is the CPU time used in the execution of the event being recorded. +When the Arcsight ESM received the event. -type: long +type: date -- -*`rsa.misc.event_desc`*:: +*`source.service.name`*:: + -- -This key is used to capture a description of an event available directly or inferred +Service that is the source of the event. type: keyword -- -*`rsa.misc.sig_id1`*:: +*`destination.service.name`*:: + -- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id +Service that is the target of the event. -type: long +type: keyword -- -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword +[[exported-fields-cef-module]] +== CEF fields --- +Module for receiving CEF logs over Syslog. The module adds vendor specific fields in addition to the fields the decode_cef processor provides. + + + +[float] +=== forcepoint -*`rsa.misc.im_client`*:: +Fields for Forcepoint Custom String mappings + + + +*`forcepoint.virus_id`*:: + -- +Virus ID + + type: keyword -- -*`rsa.misc.im_userid`*:: +[float] +=== checkpoint + +Fields for Check Point custom string mappings. + + + +*`checkpoint.app_risk`*:: + -- +Application risk. + type: keyword -- -*`rsa.misc.pid`*:: +*`checkpoint.app_severity`*:: + -- +Application threat severity. + type: keyword -- -*`rsa.misc.priority`*:: +*`checkpoint.app_sig_id`*:: + -- +The signature ID which the application was detected by. + type: keyword -- -*`rsa.misc.context_subject`*:: +*`checkpoint.auth_method`*:: + -- -This key is to be used in an audit context where the subject is the object being identified +Password authentication protocol used. type: keyword -- -*`rsa.misc.context_target`*:: +*`checkpoint.category`*:: + -- +Category. + type: keyword -- -*`rsa.misc.cve`*:: +*`checkpoint.confidence_level`*:: + -- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. +Confidence level determined. -type: keyword +type: integer -- -*`rsa.misc.fcatnum`*:: +*`checkpoint.connectivity_state`*:: + -- -This key captures Filter Category Number. Legacy Usage +Connectivity state. type: keyword -- -*`rsa.misc.library`*:: +*`checkpoint.cookie`*:: + -- -This key is used to capture library information in mainframe devices +IKE cookie. type: keyword -- -*`rsa.misc.parent_node`*:: +*`checkpoint.dst_phone_number`*:: + -- -This key captures the Parent Node Name. Must be related to node variable. +Destination IP-Phone. type: keyword -- -*`rsa.misc.risk_info`*:: +*`checkpoint.email_control`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Engine name. type: keyword -- -*`rsa.misc.tcp_flags`*:: +*`checkpoint.email_id`*:: + -- -This key is captures the TCP flags set in any packet of session +Internal email ID. -type: long +type: keyword -- -*`rsa.misc.tos`*:: +*`checkpoint.email_recipients_num`*:: + -- -This key describes the type of service +Number of recipients. type: long -- -*`rsa.misc.vm_target`*:: +*`checkpoint.email_session_id`*:: + -- -VMWare Target **VMWARE** only varaible. +Internal email session ID. type: keyword -- -*`rsa.misc.workspace`*:: +*`checkpoint.email_spool_id`*:: + -- -This key captures Workspace Description +Internal email spool ID. type: keyword -- -*`rsa.misc.command`*:: +*`checkpoint.email_subject`*:: + -- -type: keyword - --- +Email subject. -*`rsa.misc.event_category`*:: -+ --- type: keyword -- -*`rsa.misc.facilityname`*:: +*`checkpoint.event_count`*:: + -- -type: keyword +Number of events associated with the log. + +type: long -- -*`rsa.misc.forensic_info`*:: +*`checkpoint.frequency`*:: + -- +Scan frequency. + type: keyword -- -*`rsa.misc.jobname`*:: +*`checkpoint.icmp_type`*:: + -- -type: keyword +ICMP type. + +type: long -- -*`rsa.misc.mode`*:: +*`checkpoint.icmp_code`*:: + -- -type: keyword +ICMP code. + +type: long -- -*`rsa.misc.policy`*:: +*`checkpoint.identity_type`*:: + -- +Identity type. + type: keyword -- -*`rsa.misc.policy_waiver`*:: +*`checkpoint.incident_extension`*:: + -- +Format of original data. + type: keyword -- -*`rsa.misc.second`*:: +*`checkpoint.integrity_av_invoke_type`*:: + -- +Scan invoke type. + type: keyword -- -*`rsa.misc.space1`*:: +*`checkpoint.malware_family`*:: + -- +Malware family. + type: keyword -- -*`rsa.misc.subcategory`*:: +*`checkpoint.peer_gateway`*:: + -- -type: keyword +Main IP of the peer Security Gateway. + +type: ip -- -*`rsa.misc.tbdstr2`*:: +*`checkpoint.performance_impact`*:: + -- -type: keyword +Protection performance impact. + +type: integer -- -*`rsa.misc.alert_id`*:: +*`checkpoint.protection_id`*:: + -- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Protection malware ID. type: keyword -- -*`rsa.misc.checksum_dst`*:: +*`checkpoint.protection_name`*:: + -- -This key is used to capture the checksum or hash of the the target entity such as a process or file. +Specific signature name of the attack. type: keyword -- -*`rsa.misc.checksum_src`*:: +*`checkpoint.protection_type`*:: + -- -This key is used to capture the checksum or hash of the source entity such as a file or process. +Type of protection used to detect the attack. type: keyword -- -*`rsa.misc.fresult`*:: +*`checkpoint.scan_result`*:: + -- -This key captures the Filter Result +Scan result. -type: long +type: keyword -- -*`rsa.misc.payload_dst`*:: +*`checkpoint.sensor_mode`*:: + -- -This key is used to capture destination payload +Sensor mode. type: keyword -- -*`rsa.misc.payload_src`*:: +*`checkpoint.severity`*:: + -- -This key is used to capture source payload +Threat severity. type: keyword -- -*`rsa.misc.pool_id`*:: +*`checkpoint.spyware_name`*:: + -- -This key captures the identifier (typically numeric field) of a resource pool +Spyware name. type: keyword -- -*`rsa.misc.process_id_val`*:: +*`checkpoint.spyware_status`*:: + -- -This key is a failure key for Process ID when it is not an integer value +Spyware status. type: keyword -- -*`rsa.misc.risk_num_comm`*:: +*`checkpoint.subs_exp`*:: + -- -This key captures Risk Number Community +The expiration date of the subscription. -type: double +type: date -- -*`rsa.misc.risk_num_next`*:: +*`checkpoint.tcp_flags`*:: + -- -This key captures Risk Number NextGen +TCP packet flags. -type: double +type: keyword -- -*`rsa.misc.risk_num_sand`*:: +*`checkpoint.termination_reason`*:: + -- -This key captures Risk Number SandBox +Termination reason. -type: double +type: keyword -- -*`rsa.misc.risk_num_static`*:: +*`checkpoint.update_status`*:: + -- -This key captures Risk Number Static +Update status. -type: double +type: keyword -- -*`rsa.misc.risk_suspicious`*:: +*`checkpoint.user_status`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +User response. type: keyword -- -*`rsa.misc.risk_warning`*:: +*`checkpoint.uuid`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +External ID. type: keyword -- -*`rsa.misc.snmp_oid`*:: +*`checkpoint.virus_name`*:: + -- -SNMP Object Identifier +Virus name. type: keyword -- -*`rsa.misc.sql`*:: +*`checkpoint.voip_log_type`*:: + -- -This key captures the SQL query +VoIP log types. type: keyword -- -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details +[float] +=== cef.extensions + +Extra vendor-specific extensions. -type: keyword --- -*`rsa.misc.acl_id`*:: +*`cef.extensions.cp_app_risk`*:: + -- type: keyword -- -*`rsa.misc.acl_op`*:: +*`cef.extensions.cp_severity`*:: + -- type: keyword -- -*`rsa.misc.acl_pos`*:: +*`cef.extensions.ifname`*:: + -- type: keyword -- -*`rsa.misc.acl_table`*:: +*`cef.extensions.inzone`*:: + -- type: keyword -- -*`rsa.misc.admin`*:: +*`cef.extensions.layer_uuid`*:: + -- type: keyword -- -*`rsa.misc.alarm_id`*:: +*`cef.extensions.layer_name`*:: + -- type: keyword -- -*`rsa.misc.alarmname`*:: +*`cef.extensions.logid`*:: + -- type: keyword -- -*`rsa.misc.app_id`*:: +*`cef.extensions.loguid`*:: + -- type: keyword -- -*`rsa.misc.audit`*:: +*`cef.extensions.match_id`*:: + -- type: keyword -- -*`rsa.misc.audit_object`*:: +*`cef.extensions.nat_addtnl_rulenum`*:: + -- type: keyword -- -*`rsa.misc.auditdata`*:: +*`cef.extensions.nat_rulenum`*:: + -- type: keyword -- -*`rsa.misc.benchmark`*:: +*`cef.extensions.origin`*:: + -- type: keyword -- -*`rsa.misc.bypass`*:: +*`cef.extensions.originsicname`*:: + -- type: keyword -- -*`rsa.misc.cache`*:: +*`cef.extensions.outzone`*:: + -- type: keyword -- -*`rsa.misc.cache_hit`*:: +*`cef.extensions.parent_rule`*:: + -- type: keyword -- -*`rsa.misc.cefversion`*:: +*`cef.extensions.product`*:: + -- type: keyword -- -*`rsa.misc.cfg_attr`*:: +*`cef.extensions.rule_action`*:: + -- type: keyword -- -*`rsa.misc.cfg_obj`*:: +*`cef.extensions.rule_uid`*:: + -- type: keyword -- -*`rsa.misc.cfg_path`*:: +*`cef.extensions.sequencenum`*:: + -- type: keyword -- -*`rsa.misc.changes`*:: +*`cef.extensions.service_id`*:: + -- type: keyword -- -*`rsa.misc.client_ip`*:: +*`cef.extensions.version`*:: + -- type: keyword -- -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword +[[exported-fields-checkpoint]] +== Checkpoint fields --- +Some checkpoint module -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword --- -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword +[float] +=== checkpoint --- +Module for parsing Checkpoint syslog. -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword --- -*`rsa.misc.cn_ctr_dst_code`*:: +*`checkpoint.confidence_level`*:: + -- -type: keyword +Confidence level determined by ThreatCloud. + + +type: integer -- -*`rsa.misc.cn_dst_tos`*:: +*`checkpoint.calc_desc`*:: + -- +Log description. + + type: keyword -- -*`rsa.misc.cn_dst_vlan`*:: +*`checkpoint.dst_country`*:: + -- +Destination country. + + type: keyword -- -*`rsa.misc.cn_engine_id`*:: +*`checkpoint.dst_user_name`*:: + -- +Connected user name on the destination IP. + + type: keyword -- -*`rsa.misc.cn_engine_type`*:: +*`checkpoint.email_id`*:: + -- +Email number in smtp connection. + + type: keyword -- -*`rsa.misc.cn_f_switch`*:: +*`checkpoint.email_subject`*:: + -- +Original email subject. + + type: keyword -- -*`rsa.misc.cn_flowsampid`*:: +*`checkpoint.email_session_id`*:: + -- +Connection uuid. + + type: keyword -- -*`rsa.misc.cn_flowsampintv`*:: +*`checkpoint.event_count`*:: + -- -type: keyword +Number of events associated with the log. + + +type: long -- -*`rsa.misc.cn_flowsampmode`*:: +*`checkpoint.sys_message`*:: + -- +System messages + + type: keyword -- -*`rsa.misc.cn_inacttimeout`*:: +*`checkpoint.logid`*:: + -- +System messages + + type: keyword -- -*`rsa.misc.cn_inpermbyts`*:: +*`checkpoint.failure_impact`*:: + -- +The impact of update service failure. + + type: keyword -- -*`rsa.misc.cn_inpermpckts`*:: +*`checkpoint.id`*:: + -- -type: keyword +Override application ID. + + +type: integer -- -*`rsa.misc.cn_invalid`*:: +*`checkpoint.identity_src`*:: + -- +The source for authentication identity information. + + type: keyword -- -*`rsa.misc.cn_ip_proto_ver`*:: +*`checkpoint.information`*:: + -- +Policy installation status for a specific blade. + + type: keyword -- -*`rsa.misc.cn_ipv4_ident`*:: +*`checkpoint.layer_name`*:: + -- +Layer name. + + type: keyword -- -*`rsa.misc.cn_l_switch`*:: +*`checkpoint.layer_uuid`*:: + -- +Layer UUID. + + type: keyword -- -*`rsa.misc.cn_log_did`*:: +*`checkpoint.log_id`*:: + -- -type: keyword +Unique identity for logs. + + +type: integer -- -*`rsa.misc.cn_log_rid`*:: +*`checkpoint.malware_family`*:: + -- +Additional information on protection. + + type: keyword -- -*`rsa.misc.cn_max_ttl`*:: +*`checkpoint.origin_sic_name`*:: + -- +Machine SIC. + + type: keyword -- -*`rsa.misc.cn_maxpcktlen`*:: +*`checkpoint.policy_mgmt`*:: + -- +Name of the Management Server that manages this Security Gateway. + + type: keyword -- -*`rsa.misc.cn_min_ttl`*:: +*`checkpoint.policy_name`*:: + -- +Name of the last policy that this Security Gateway fetched. + + type: keyword -- -*`rsa.misc.cn_minpcktlen`*:: +*`checkpoint.protection_id`*:: + -- +Protection malware id. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_1`*:: +*`checkpoint.protection_name`*:: + -- +Specific signature name of the attack. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_10`*:: +*`checkpoint.protection_type`*:: + -- +Type of protection used to detect the attack. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_2`*:: +*`checkpoint.protocol`*:: + -- +Protocol detected on the connection. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_3`*:: +*`checkpoint.proxy_src_ip`*:: + -- -type: keyword +Sender source IP (even when using proxy). + + +type: ip -- -*`rsa.misc.cn_mpls_lbl_4`*:: +*`checkpoint.rule`*:: + -- -type: keyword +Matched rule number. + + +type: integer -- -*`rsa.misc.cn_mpls_lbl_5`*:: +*`checkpoint.rule_action`*:: + -- +Action of the matched rule in the access policy. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_6`*:: +*`checkpoint.scan_direction`*:: + -- +Scan direction. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_7`*:: +*`checkpoint.session_id`*:: + -- +Log uuid. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_8`*:: +*`checkpoint.source_os`*:: + -- +OS which generated the attack. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_9`*:: +*`checkpoint.src_country`*:: + -- +Country name, derived from connection source IP address. + + type: keyword -- -*`rsa.misc.cn_mplstoplabel`*:: +*`checkpoint.src_user_name`*:: + -- +User name connected to source IP + + type: keyword -- -*`rsa.misc.cn_mplstoplabip`*:: +*`checkpoint.ticket_id`*:: + -- +Unique ID per file. + + type: keyword -- -*`rsa.misc.cn_mul_dst_byt`*:: +*`checkpoint.tls_server_host_name`*:: + -- +SNI/CN from encrypted TLS connection used by URLF for categorization. + + type: keyword -- -*`rsa.misc.cn_mul_dst_pks`*:: +*`checkpoint.verdict`*:: + -- +TE engine verdict Possible values: Malicious/Benign/Error. + + type: keyword -- -*`rsa.misc.cn_muligmptype`*:: +*`checkpoint.user`*:: + -- +Source user name. + + type: keyword -- -*`rsa.misc.cn_sampalgo`*:: +*`checkpoint.vendor_list`*:: + -- +The vendor name that provided the verdict for a malicious URL. + + type: keyword -- -*`rsa.misc.cn_sampint`*:: +*`checkpoint.web_server_type`*:: + -- +Web server detected in the HTTP response. + + type: keyword -- -*`rsa.misc.cn_seqctr`*:: +*`checkpoint.client_name`*:: + -- +Client Application or Software Blade that detected the event. + + type: keyword -- -*`rsa.misc.cn_spackets`*:: +*`checkpoint.client_version`*:: + -- +Build version of SandBlast Agent client installed on the computer. + + type: keyword -- -*`rsa.misc.cn_src_tos`*:: +*`checkpoint.extension_version`*:: + -- +Build version of the SandBlast Agent browser extension. + + type: keyword -- -*`rsa.misc.cn_src_vlan`*:: +*`checkpoint.host_time`*:: + -- +Local time on the endpoint computer. + + type: keyword -- -*`rsa.misc.cn_sysuptime`*:: +*`checkpoint.installed_products`*:: + -- +List of installed Endpoint Software Blades. + + type: keyword -- -*`rsa.misc.cn_template_id`*:: +*`checkpoint.cc`*:: + -- +The Carbon Copy address of the email. + + type: keyword -- -*`rsa.misc.cn_totbytsexp`*:: +*`checkpoint.parent_process_username`*:: + -- +Owner username of the parent process of the process that triggered the attack. + + type: keyword -- -*`rsa.misc.cn_totflowexp`*:: +*`checkpoint.process_username`*:: + -- +Owner username of the process that triggered the attack. + + type: keyword -- -*`rsa.misc.cn_totpcktsexp`*:: +*`checkpoint.audit_status`*:: + -- +Audit Status. Can be Success or Failure. + + type: keyword -- -*`rsa.misc.cn_unixnanosecs`*:: +*`checkpoint.objecttable`*:: + -- +Table of affected objects. + + type: keyword -- -*`rsa.misc.cn_v6flowlabel`*:: +*`checkpoint.objecttype`*:: + -- +The type of the affected object. + + type: keyword -- -*`rsa.misc.cn_v6optheaders`*:: +*`checkpoint.operation_number`*:: + -- +The operation nuber. + + type: keyword -- -*`rsa.misc.comp_class`*:: +*`checkpoint.email_recipients_num`*:: + -- -type: keyword +Amount of recipients whom the mail was sent to. --- -*`rsa.misc.comp_name`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.comp_rbytes`*:: +*`checkpoint.suppressed_logs`*:: + -- -type: keyword +Aggregated connections for five minutes on the same source, destination and port. + + +type: integer -- -*`rsa.misc.comp_sbytes`*:: +*`checkpoint.blade_name`*:: + -- +Blade name. + + type: keyword -- -*`rsa.misc.cpu_data`*:: +*`checkpoint.status`*:: + -- +Ok/Warning/Error. + + type: keyword -- -*`rsa.misc.criticality`*:: +*`checkpoint.short_desc`*:: + -- +Short description of the process that was executed. + + type: keyword -- -*`rsa.misc.cs_agency_dst`*:: +*`checkpoint.long_desc`*:: + -- +More information on the process (usually describing error reason in failure). + + type: keyword -- -*`rsa.misc.cs_analyzedby`*:: +*`checkpoint.scan_hosts_hour`*:: + -- -type: keyword +Number of unique hosts during the last hour. + + +type: integer -- -*`rsa.misc.cs_av_other`*:: +*`checkpoint.scan_hosts_day`*:: + -- -type: keyword +Number of unique hosts during the last day. + + +type: integer -- -*`rsa.misc.cs_av_primary`*:: +*`checkpoint.scan_hosts_week`*:: + -- -type: keyword +Number of unique hosts during the last week. + + +type: integer -- -*`rsa.misc.cs_av_secondary`*:: +*`checkpoint.unique_detected_hour`*:: + -- -type: keyword +Detected virus for a specific host during the last hour. + + +type: integer -- -*`rsa.misc.cs_bgpv6nxthop`*:: +*`checkpoint.unique_detected_day`*:: + -- -type: keyword +Detected virus for a specific host during the last day. + + +type: integer -- -*`rsa.misc.cs_bit9status`*:: +*`checkpoint.unique_detected_week`*:: + -- -type: keyword +Detected virus for a specific host during the last week. + + +type: integer -- -*`rsa.misc.cs_context`*:: +*`checkpoint.scan_mail`*:: + -- -type: keyword +Number of emails that were scanned by "AB malicious activity" engine. + + +type: integer -- -*`rsa.misc.cs_control`*:: +*`checkpoint.additional_ip`*:: + -- +DNS host name. + + type: keyword -- -*`rsa.misc.cs_data`*:: +*`checkpoint.description`*:: + -- +Additional explanation how the security gateway enforced the connection. + + type: keyword -- -*`rsa.misc.cs_datecret`*:: +*`checkpoint.email_spam_category`*:: + -- +Email categories. Possible values: spam/not spam/phishing. + + type: keyword -- -*`rsa.misc.cs_dst_tld`*:: +*`checkpoint.email_control_analysis`*:: + -- +Message classification, received from spam vendor engine. + + type: keyword -- -*`rsa.misc.cs_eth_dst_ven`*:: +*`checkpoint.scan_results`*:: + -- +"Infected"/description of a failure. + + type: keyword -- -*`rsa.misc.cs_eth_src_ven`*:: +*`checkpoint.original_queue_id`*:: + -- +Original postfix email queue id. + + type: keyword -- -*`rsa.misc.cs_event_uuid`*:: +*`checkpoint.risk`*:: + -- +Risk level we got from the engine. + + type: keyword -- -*`rsa.misc.cs_filetype`*:: +*`checkpoint.roles`*:: + -- +The role of identity. + + type: keyword -- -*`rsa.misc.cs_fld`*:: +*`checkpoint.observable_name`*:: + -- +IOC observable signature name. + + type: keyword -- -*`rsa.misc.cs_if_desc`*:: +*`checkpoint.observable_id`*:: + -- +IOC observable signature id. + + type: keyword -- -*`rsa.misc.cs_if_name`*:: +*`checkpoint.observable_comment`*:: + -- +IOC observable signature description. + + type: keyword -- -*`rsa.misc.cs_ip_next_hop`*:: +*`checkpoint.indicator_name`*:: + -- +IOC indicator name. + + type: keyword -- -*`rsa.misc.cs_ipv4dstpre`*:: +*`checkpoint.indicator_description`*:: + -- +IOC indicator description. + + type: keyword -- -*`rsa.misc.cs_ipv4srcpre`*:: +*`checkpoint.indicator_reference`*:: + -- +IOC indicator reference. + + type: keyword -- -*`rsa.misc.cs_lifetime`*:: +*`checkpoint.indicator_uuid`*:: + -- +IOC indicator uuid. + + type: keyword -- -*`rsa.misc.cs_log_medium`*:: +*`checkpoint.app_desc`*:: + -- +Application description. + + type: keyword -- -*`rsa.misc.cs_loginname`*:: +*`checkpoint.app_id`*:: + -- -type: keyword +Application ID. + + +type: integer -- -*`rsa.misc.cs_modulescore`*:: +*`checkpoint.app_sig_id`*:: + -- +IOC indicator description. + + type: keyword -- -*`rsa.misc.cs_modulesign`*:: +*`checkpoint.certificate_resource`*:: + -- +HTTPS resource Possible values: SNI or domain name (DN). + + type: keyword -- -*`rsa.misc.cs_opswatresult`*:: +*`checkpoint.certificate_validation`*:: + -- +Precise error, describing HTTPS certificate failure under "HTTPS categorize websites" feature. + + type: keyword -- -*`rsa.misc.cs_payload`*:: +*`checkpoint.browse_time`*:: + -- +Application session browse time. + + type: keyword -- -*`rsa.misc.cs_registrant`*:: +*`checkpoint.limit_requested`*:: + -- -type: keyword +Indicates whether data limit was requested for the session. + + +type: integer -- -*`rsa.misc.cs_registrar`*:: +*`checkpoint.limit_applied`*:: + -- -type: keyword +Indicates whether the session was actually date limited. + + +type: integer -- -*`rsa.misc.cs_represult`*:: +*`checkpoint.dropped_total`*:: + -- -type: keyword +Amount of dropped packets (both incoming and outgoing). + + +type: integer -- -*`rsa.misc.cs_rpayload`*:: +*`checkpoint.client_type_os`*:: + -- +Client OS detected in the HTTP request. + + type: keyword -- -*`rsa.misc.cs_sampler_name`*:: +*`checkpoint.name`*:: + -- +Application name. + + type: keyword -- -*`rsa.misc.cs_sourcemodule`*:: +*`checkpoint.properties`*:: + -- +Application categories. + + type: keyword -- -*`rsa.misc.cs_streams`*:: +*`checkpoint.sig_id`*:: + -- +Application's signature ID which how it was detected by. + + type: keyword -- -*`rsa.misc.cs_targetmodule`*:: +*`checkpoint.desc`*:: + -- +Override application description. + + type: keyword -- -*`rsa.misc.cs_v6nxthop`*:: +*`checkpoint.referrer_self_uid`*:: + -- +UUID of the current log. + + type: keyword -- -*`rsa.misc.cs_whois_server`*:: +*`checkpoint.referrer_parent_uid`*:: + -- +Log UUID of the referring application. + + type: keyword -- -*`rsa.misc.cs_yararesult`*:: +*`checkpoint.needs_browse_time`*:: + -- -type: keyword +Browse time required for the connection. + + +type: integer -- -*`rsa.misc.description`*:: +*`checkpoint.cluster_info`*:: + -- +Cluster information. Possible options: Failover reason/cluster state changes/CP cluster or 3rd party. + + type: keyword -- -*`rsa.misc.devvendor`*:: +*`checkpoint.sync`*:: + -- +Sync status and the reason (stable, at risk). + + type: keyword -- -*`rsa.misc.distance`*:: +*`checkpoint.file_direction`*:: + -- +File direction. Possible options: upload/download. + + type: keyword -- -*`rsa.misc.dstburb`*:: +*`checkpoint.invalid_file_size`*:: + -- -type: keyword +File_size field is valid only if this field is set to 0. + + +type: integer -- -*`rsa.misc.edomain`*:: +*`checkpoint.top_archive_file_name`*:: + -- +In case of archive file: the file that was sent/received. + + type: keyword -- -*`rsa.misc.edomaub`*:: +*`checkpoint.data_type_name`*:: + -- +Data type in rulebase that was matched. + + type: keyword -- -*`rsa.misc.euid`*:: +*`checkpoint.specific_data_type_name`*:: + -- +Compound/Group scenario, data type that was matched. + + type: keyword -- -*`rsa.misc.facility`*:: +*`checkpoint.word_list`*:: + -- +Words matched by data type. + + type: keyword -- -*`rsa.misc.finterface`*:: +*`checkpoint.info`*:: + -- +Special log message. + + type: keyword -- -*`rsa.misc.flags`*:: +*`checkpoint.outgoing_url`*:: + -- +URL related to this log (for HTTP). + + type: keyword -- -*`rsa.misc.gaddr`*:: +*`checkpoint.dlp_rule_name`*:: + -- +Matched rule name. + + type: keyword -- -*`rsa.misc.id3`*:: +*`checkpoint.dlp_recipients`*:: + -- +Mail recipients. + + type: keyword -- -*`rsa.misc.im_buddyname`*:: +*`checkpoint.dlp_subject`*:: + -- +Mail subject. + + type: keyword -- -*`rsa.misc.im_croomid`*:: +*`checkpoint.dlp_word_list`*:: + -- +Phrases matched by data type. + + type: keyword -- -*`rsa.misc.im_croomtype`*:: +*`checkpoint.dlp_template_score`*:: + -- +Template data type match score. + + type: keyword -- -*`rsa.misc.im_members`*:: +*`checkpoint.message_size`*:: + -- -type: keyword +Mail/post size. + + +type: integer -- -*`rsa.misc.im_username`*:: +*`checkpoint.dlp_incident_uid`*:: + -- +Unique ID of the matched rule. + + type: keyword -- -*`rsa.misc.ipkt`*:: +*`checkpoint.dlp_related_incident_uid`*:: + -- +Other ID related to this one. + + type: keyword -- -*`rsa.misc.ipscat`*:: +*`checkpoint.dlp_data_type_name`*:: + -- +Matched data type. + + type: keyword -- -*`rsa.misc.ipspri`*:: +*`checkpoint.dlp_data_type_uid`*:: + -- +Unique ID of the matched data type. + + type: keyword -- -*`rsa.misc.latitude`*:: +*`checkpoint.dlp_violation_description`*:: + -- +Violation descriptions described in the rulebase. + + type: keyword -- -*`rsa.misc.linenum`*:: +*`checkpoint.dlp_relevant_data_types`*:: + -- +In case of Compound/Group: the inner data types that were matched. + + type: keyword -- -*`rsa.misc.list_name`*:: +*`checkpoint.dlp_action_reason`*:: + -- +Action chosen reason. + + type: keyword -- -*`rsa.misc.load_data`*:: +*`checkpoint.dlp_categories`*:: + -- +Data type category. + + type: keyword -- -*`rsa.misc.location_floor`*:: +*`checkpoint.dlp_transint`*:: + -- +HTTP/SMTP/FTP. + + type: keyword -- -*`rsa.misc.location_mark`*:: +*`checkpoint.duplicate`*:: + -- +Log marked as duplicated, when mail is split and the Security Gateway sees it twice. + + type: keyword -- -*`rsa.misc.log_id`*:: +*`checkpoint.incident_extension`*:: + -- +Matched data type. + + type: keyword -- -*`rsa.misc.log_type`*:: +*`checkpoint.matched_file`*:: + -- +Unique ID of the matched data type. + + type: keyword -- -*`rsa.misc.logid`*:: +*`checkpoint.matched_file_text_segments`*:: + -- -type: keyword +Fingerprint: number of text segments matched by this traffic. + + +type: integer -- -*`rsa.misc.logip`*:: +*`checkpoint.matched_file_percentage`*:: + -- -type: keyword +Fingerprint: match percentage of the traffic. + + +type: integer -- -*`rsa.misc.logname`*:: +*`checkpoint.dlp_additional_action`*:: + -- +Watermark/None. + + type: keyword -- -*`rsa.misc.longitude`*:: +*`checkpoint.dlp_watermark_profile`*:: + -- +Watermark which was applied. + + type: keyword -- -*`rsa.misc.lport`*:: +*`checkpoint.dlp_repository_id`*:: + -- +ID of scanned repository. + + type: keyword -- -*`rsa.misc.mbug_data`*:: +*`checkpoint.dlp_repository_root_path`*:: + -- +Repository path. + + type: keyword -- -*`rsa.misc.misc_name`*:: +*`checkpoint.scan_id`*:: + -- +Sequential number of scan. + + type: keyword -- -*`rsa.misc.msg_type`*:: +*`checkpoint.special_properties`*:: + -- -type: keyword +If this field is set to '1' the log will not be shown (in use for monitoring scan progress). + + +type: integer -- -*`rsa.misc.msgid`*:: +*`checkpoint.dlp_repository_total_size`*:: + -- -type: keyword +Repository size. + + +type: integer -- -*`rsa.misc.netsessid`*:: +*`checkpoint.dlp_repository_files_number`*:: + -- -type: keyword +Number of files in repository. + + +type: integer -- -*`rsa.misc.num`*:: +*`checkpoint.dlp_repository_scanned_files_number`*:: + -- -type: keyword +Number of scanned files in repository. + + +type: integer -- -*`rsa.misc.number1`*:: +*`checkpoint.duration`*:: + -- +Scan duration. + + type: keyword -- -*`rsa.misc.number2`*:: +*`checkpoint.dlp_fingerprint_long_status`*:: + -- +Scan status - long format. + + type: keyword -- -*`rsa.misc.nwwn`*:: +*`checkpoint.dlp_fingerprint_short_status`*:: + -- +Scan status - short format. + + type: keyword -- -*`rsa.misc.object`*:: +*`checkpoint.dlp_repository_directories_number`*:: + -- -type: keyword +Number of directories in repository. + + +type: integer -- -*`rsa.misc.operation`*:: +*`checkpoint.dlp_repository_unreachable_directories_number`*:: + -- -type: keyword +Number of directories the Security Gateway was unable to read. + + +type: integer -- -*`rsa.misc.opkt`*:: +*`checkpoint.dlp_fingerprint_files_number`*:: + -- -type: keyword +Number of successfully scanned files in repository. + + +type: integer -- -*`rsa.misc.orig_from`*:: +*`checkpoint.dlp_repository_skipped_files_number`*:: + -- -type: keyword +Skipped number of files because of configuration. + + +type: integer -- -*`rsa.misc.owner_id`*:: +*`checkpoint.dlp_repository_scanned_directories_number`*:: + -- -type: keyword +Amount of directories scanned. + + +type: integer -- -*`rsa.misc.p_action`*:: +*`checkpoint.number_of_errors`*:: + -- -type: keyword +Number of files that were not scanned due to an error. + + +type: integer -- -*`rsa.misc.p_filter`*:: +*`checkpoint.next_scheduled_scan_date`*:: + -- +Next scan scheduled time according to time object. + + type: keyword -- -*`rsa.misc.p_group_object`*:: +*`checkpoint.dlp_repository_scanned_total_size`*:: + -- -type: keyword +Size scanned. + + +type: integer -- -*`rsa.misc.p_id`*:: +*`checkpoint.dlp_repository_reached_directories_number`*:: + -- -type: keyword +Number of scanned directories in repository. + + +type: integer -- -*`rsa.misc.p_msgid1`*:: +*`checkpoint.dlp_repository_not_scanned_directories_percentage`*:: + -- -type: keyword +Percentage of directories the Security Gateway was unable to read. + + +type: integer -- -*`rsa.misc.p_msgid2`*:: +*`checkpoint.speed`*:: + -- -type: keyword +Current scan speed. + + +type: integer -- -*`rsa.misc.p_result1`*:: +*`checkpoint.dlp_repository_scan_progress`*:: + -- -type: keyword +Scan percentage. + + +type: integer -- -*`rsa.misc.password_chg`*:: +*`checkpoint.sub_policy_name`*:: + -- +Layer name. + + type: keyword -- -*`rsa.misc.password_expire`*:: +*`checkpoint.sub_policy_uid`*:: + -- +Layer uid. + + type: keyword -- -*`rsa.misc.permgranted`*:: +*`checkpoint.fw_message`*:: + -- +Used for various firewall errors. + + type: keyword -- -*`rsa.misc.permwanted`*:: +*`checkpoint.message`*:: + -- +ISP link has failed. + + type: keyword -- -*`rsa.misc.pgid`*:: +*`checkpoint.isp_link`*:: + -- +Name of ISP link. + + type: keyword -- -*`rsa.misc.policyUUID`*:: +*`checkpoint.fw_subproduct`*:: + -- +Can be vpn/non vpn. + + type: keyword -- -*`rsa.misc.prog_asp_num`*:: +*`checkpoint.sctp_error`*:: + -- +Error information, what caused sctp to fail on out_of_state. + + type: keyword -- -*`rsa.misc.program`*:: +*`checkpoint.chunk_type`*:: + -- +Chunck of the sctp stream. + + type: keyword -- -*`rsa.misc.real_data`*:: +*`checkpoint.sctp_association_state`*:: + -- +The bad state you were trying to update to. + + type: keyword -- -*`rsa.misc.rec_asp_device`*:: +*`checkpoint.tcp_packet_out_of_state`*:: + -- +State violation. + + type: keyword -- -*`rsa.misc.rec_asp_num`*:: +*`checkpoint.tcp_flags`*:: + -- +TCP packet flags (SYN, ACK, etc.,). + + type: keyword -- -*`rsa.misc.rec_library`*:: +*`checkpoint.connectivity_level`*:: + -- +Log for a new connection in wire mode. + + type: keyword -- -*`rsa.misc.recordnum`*:: +*`checkpoint.ip_option`*:: + -- -type: keyword +IP option that was dropped. --- -*`rsa.misc.ruid`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.sburb`*:: +*`checkpoint.tcp_state`*:: + -- -type: keyword +Log reinting a tcp state change. --- -*`rsa.misc.sdomain_fld`*:: -+ --- type: keyword -- -*`rsa.misc.sec`*:: +*`checkpoint.expire_time`*:: + -- -type: keyword +Connection closing time. --- -*`rsa.misc.sensorname`*:: -+ --- type: keyword -- -*`rsa.misc.seqnum`*:: +*`checkpoint.icmp_type`*:: + -- -type: keyword +In case a connection is ICMP, type info will be added to the log. --- -*`rsa.misc.session`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.sessiontype`*:: +*`checkpoint.icmp_code`*:: + -- -type: keyword +In case a connection is ICMP, code info will be added to the log. --- -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.spi`*:: +*`checkpoint.rpc_prog`*:: + -- -type: keyword +Log for new RPC state - prog values. --- -*`rsa.misc.srcburb`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.srcdom`*:: +*`checkpoint.dce-rpc_interface_uuid`*:: + -- -type: keyword +Log for new RPC state - UUID values --- -*`rsa.misc.srcservice`*:: -+ --- type: keyword -- -*`rsa.misc.state`*:: +*`checkpoint.elapsed`*:: + -- -type: keyword +Time passed since start time. --- -*`rsa.misc.status1`*:: -+ --- type: keyword -- -*`rsa.misc.svcno`*:: +*`checkpoint.icmp`*:: + -- -type: keyword +Number of packets, received by the client. --- -*`rsa.misc.system`*:: -+ --- type: keyword -- -*`rsa.misc.tbdstr1`*:: +*`checkpoint.capture_uuid`*:: + -- -type: keyword +UUID generated for the capture. Used when enabling the capture when logging. --- -*`rsa.misc.tgtdom`*:: -+ --- type: keyword -- -*`rsa.misc.tgtdomain`*:: +*`checkpoint.diameter_app_ID`*:: + -- -type: keyword +The ID of diameter application. --- -*`rsa.misc.threshold`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.type1`*:: +*`checkpoint.diameter_cmd_code`*:: + -- -type: keyword +Diameter not allowed application command id. --- -*`rsa.misc.udb_class`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.url_fld`*:: +*`checkpoint.diameter_msg_type`*:: + -- -type: keyword +Diameter message type. --- -*`rsa.misc.user_div`*:: -+ --- type: keyword -- -*`rsa.misc.userid`*:: +*`checkpoint.cp_message`*:: + -- -type: keyword +Used to log a general message. --- -*`rsa.misc.username_fld`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.utcstamp`*:: +*`checkpoint.log_delay`*:: + -- -type: keyword +Time left before deleting template. + + +type: integer -- -*`rsa.misc.v_instafname`*:: +*`checkpoint.attack_status`*:: + -- +In case of a malicious event on an endpoint computer, the status of the attack. + + type: keyword -- -*`rsa.misc.virt_data`*:: +*`checkpoint.impacted_files`*:: + -- +In case of an infection on an endpoint computer, the list of files that the malware impacted. + + type: keyword -- -*`rsa.misc.vpnid`*:: +*`checkpoint.remediated_files`*:: + -- +In case of an infection and a successful cleaning of that infection, this is a list of remediated files on the computer. + + type: keyword -- -*`rsa.misc.autorun_type`*:: +*`checkpoint.triggered_by`*:: + -- -This is used to capture Auto Run type +The name of the mechanism that triggered the Software Blade to enforce a protection. + type: keyword -- -*`rsa.misc.cc_number`*:: +*`checkpoint.https_inspection_rule_id`*:: + -- -Valid Credit Card Numbers only +ID of the matched rule. -type: long + +type: keyword -- -*`rsa.misc.content`*:: +*`checkpoint.https_inspection_rule_name`*:: + -- -This key captures the content type from protocol headers +Name of the matched rule. + type: keyword -- -*`rsa.misc.ein_number`*:: +*`checkpoint.app_properties`*:: + -- -Employee Identification Numbers only +List of all found categories. -type: long + +type: keyword -- -*`rsa.misc.found`*:: +*`checkpoint.https_validation`*:: + -- -This is used to capture the results of regex match +Precise error, describing HTTPS inspection failure. + type: keyword -- -*`rsa.misc.language`*:: +*`checkpoint.https_inspection_action`*:: + -- -This is used to capture list of languages the client support and what it prefers +HTTPS inspection action (Inspect/Bypass/Error). + type: keyword -- -*`rsa.misc.lifetime`*:: +*`checkpoint.icap_service_id`*:: + -- -This key is used to capture the session lifetime in seconds. +Service ID, can work with multiple servers, treated as services. -type: long + +type: integer -- -*`rsa.misc.link`*:: +*`checkpoint.icap_server_name`*:: + -- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Server name. + type: keyword -- -*`rsa.misc.match`*:: +*`checkpoint.internal_error`*:: + -- -This key is for regex match name from search.ini +Internal error, for troubleshooting + type: keyword -- -*`rsa.misc.param_dst`*:: +*`checkpoint.icap_more_info`*:: + -- -This key captures the command line/launch argument of the target process or file +Free text for verdict. -type: keyword + +type: integer -- -*`rsa.misc.param_src`*:: +*`checkpoint.reply_status`*:: + -- -This key captures source parameter +ICAP reply status code, e.g. 200 or 204. -type: keyword + +type: integer -- -*`rsa.misc.search_text`*:: +*`checkpoint.icap_server_service`*:: + -- -This key captures the Search Text used +Service name, as given in the ICAP URI + type: keyword -- -*`rsa.misc.sig_name`*:: +*`checkpoint.mirror_and_decrypt_type`*:: + -- -This key is used to capture the Signature Name only. +Information about decrypt and forward. Possible values: Mirror only, Decrypt and mirror, Partial mirroring (HTTPS inspection Bypass). + type: keyword -- -*`rsa.misc.snmp_value`*:: +*`checkpoint.interface_name`*:: + -- -SNMP set request value +Designated interface for mirror And decrypt. + type: keyword -- -*`rsa.misc.streams`*:: +*`checkpoint.session_uid`*:: + -- -This key captures number of streams in session +HTTP session-id. -type: long --- +type: keyword +-- -*`rsa.db.index`*:: +*`checkpoint.broker_publisher`*:: + -- -This key captures IndexID of the index. +IP address of the broker publisher who shared the session information. -type: keyword + +type: ip -- -*`rsa.db.instance`*:: +*`checkpoint.src_user_dn`*:: + -- -This key is used to capture the database server instance name +User distinguished name connected to source IP. + type: keyword -- -*`rsa.db.database`*:: +*`checkpoint.proxy_user_name`*:: + -- -This key is used to capture the name of a database or an instance as seen in a session +User name connected to proxy IP. + type: keyword -- -*`rsa.db.transact_id`*:: +*`checkpoint.proxy_machine_name`*:: + -- -This key captures the SQL transantion ID of the current session +Machine name connected to proxy IP. -type: keyword + +type: integer -- -*`rsa.db.permissions`*:: +*`checkpoint.proxy_user_dn`*:: + -- -This key captures permission or privilege level assigned to a resource. +User distinguished name connected to proxy IP. + type: keyword -- -*`rsa.db.table_name`*:: +*`checkpoint.query`*:: + -- -This key is used to capture the table name +DNS query. + type: keyword -- -*`rsa.db.db_id`*:: +*`checkpoint.dns_query`*:: + -- -This key is used to capture the unique identifier for a database +DNS query. + type: keyword -- -*`rsa.db.db_pid`*:: +*`checkpoint.inspection_item`*:: + -- -This key captures the process id of a connection with database server +Blade element performed inspection. -type: long + +type: keyword -- -*`rsa.db.lread`*:: +*`checkpoint.performance_impact`*:: + -- -This key is used for the number of logical reads +Protection performance impact. -type: long + +type: integer -- -*`rsa.db.lwrite`*:: +*`checkpoint.inspection_category`*:: + -- -This key is used for the number of logical writes +Inspection category: protocol anomaly, signature etc. -type: long + +type: keyword -- -*`rsa.db.pread`*:: +*`checkpoint.inspection_profile`*:: + -- -This key is used for the number of physical writes +Profile which the activated protection belongs to. -type: long --- +type: keyword +-- -*`rsa.network.alias_host`*:: +*`checkpoint.summary`*:: + -- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. +Summary message of a non-compliant DNS traffic drops or detects. + type: keyword -- -*`rsa.network.domain`*:: +*`checkpoint.question_rdata`*:: + -- +List of question records domains. + + type: keyword -- -*`rsa.network.host_dst`*:: +*`checkpoint.answer_rdata`*:: + -- -This key should only be used when it’s a Destination Hostname +List of answer resource records to the questioned domains. + type: keyword -- -*`rsa.network.network_service`*:: +*`checkpoint.authority_rdata`*:: + -- -This is used to capture layer 7 protocols/service names +List of authoritative servers. + type: keyword -- -*`rsa.network.interface`*:: +*`checkpoint.additional_rdata`*:: + -- -This key should be used when the source or destination context of an interface is not clear +List of additional resource records. + type: keyword -- -*`rsa.network.network_port`*:: +*`checkpoint.files_names`*:: + -- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) +List of files requested by FTP. -type: long + +type: keyword -- -*`rsa.network.eth_host`*:: +*`checkpoint.ftp_user`*:: + -- -Deprecated, use alias.mac +FTP username. + type: keyword -- -*`rsa.network.sinterface`*:: +*`checkpoint.mime_from`*:: + -- -This key should only be used when it’s a Source Interface +Sender's address. + type: keyword -- -*`rsa.network.dinterface`*:: +*`checkpoint.mime_to`*:: + -- -This key should only be used when it’s a Destination Interface +List of receiver address. + type: keyword -- -*`rsa.network.vlan`*:: +*`checkpoint.bcc`*:: + -- -This key should only be used to capture the ID of the Virtual LAN +List of BCC addresses. -type: long + +type: keyword -- -*`rsa.network.zone_src`*:: +*`checkpoint.content_type`*:: + -- -This key should only be used when it’s a Source Zone. +Mail content type. Possible values: application/msword, text/html, image/gif etc. + type: keyword -- -*`rsa.network.zone`*:: +*`checkpoint.user_agent`*:: + -- -This key should be used when the source or destination context of a Zone is not clear +String identifying requesting software user agent. + type: keyword -- -*`rsa.network.zone_dst`*:: +*`checkpoint.referrer`*:: + -- -This key should only be used when it’s a Destination Zone. +Referrer HTTP request header, previous web page address. + type: keyword -- -*`rsa.network.gateway`*:: +*`checkpoint.http_location`*:: + -- -This key is used to capture the IP Address of the gateway +Response header, indicates the URL to redirect a page to. + type: keyword -- -*`rsa.network.icmp_type`*:: +*`checkpoint.content_disposition`*:: + -- -This key is used to capture the ICMP type only +Indicates how the content is expected to be displayed inline in the browser. -type: long + +type: keyword -- -*`rsa.network.mask`*:: +*`checkpoint.via`*:: + -- -This key is used to capture the device network IPmask. +Via header is added by proxies for tracking purposes to avoid sending reqests in loop. + type: keyword -- -*`rsa.network.icmp_code`*:: +*`checkpoint.http_server`*:: + -- -This key is used to capture the ICMP code only +Server HTTP header value, contains information about the software used by the origin server, which handles the request. -type: long + +type: keyword -- -*`rsa.network.protocol_detail`*:: +*`checkpoint.content_length`*:: + -- -This key should be used to capture additional protocol information +Indicates the size of the entity-body of the HTTP header. + type: keyword -- -*`rsa.network.dmask`*:: +*`checkpoint.authorization`*:: + -- -This key is used for Destionation Device network mask +Authorization HTTP header value. + type: keyword -- -*`rsa.network.port`*:: +*`checkpoint.http_host`*:: + -- -This key should only be used to capture a Network Port when the directionality is not clear +Domain name of the server that the HTTP request is sent to. -type: long + +type: keyword -- -*`rsa.network.smask`*:: +*`checkpoint.inspection_settings_log`*:: + -- -This key is used for capturing source Network Mask +Indicats that the log was released by inspection settings. + type: keyword -- -*`rsa.network.netname`*:: +*`checkpoint.cvpn_resource`*:: + -- -This key is used to capture the network name associated with an IP range. This is configured by the end user. +Mobile Access application. + type: keyword -- -*`rsa.network.paddr`*:: +*`checkpoint.cvpn_category`*:: + -- -Deprecated - -type: ip +Mobile Access application type. --- -*`rsa.network.faddr`*:: -+ --- type: keyword -- -*`rsa.network.lhost`*:: +*`checkpoint.url`*:: + -- -type: keyword +Translated URL. --- -*`rsa.network.origin`*:: -+ --- type: keyword -- -*`rsa.network.remote_domain_id`*:: +*`checkpoint.reject_id`*:: + -- -type: keyword +A reject ID that corresponds to the one presented in the Mobile Access error page. --- -*`rsa.network.addr`*:: -+ --- type: keyword -- -*`rsa.network.dns_a_record`*:: +*`checkpoint.fs-proto`*:: + -- -type: keyword +The file share protocol used in mobile acess file share application. --- -*`rsa.network.dns_ptr_record`*:: -+ --- type: keyword -- -*`rsa.network.fhost`*:: +*`checkpoint.app_package`*:: + -- -type: keyword +Unique identifier of the application on the protected mobile device. --- -*`rsa.network.fport`*:: -+ --- type: keyword -- -*`rsa.network.laddr`*:: +*`checkpoint.appi_name`*:: + -- -type: keyword +Name of application downloaded on the protected mobile device. --- -*`rsa.network.linterface`*:: -+ --- type: keyword -- -*`rsa.network.phost`*:: +*`checkpoint.app_repackaged`*:: + -- +Indicates whether the original application was repackage not by the official developer. + + type: keyword -- -*`rsa.network.ad_computer_dst`*:: +*`checkpoint.app_sid_id`*:: + -- -Deprecated, use host.dst +Unique SHA identifier of a mobile application. + type: keyword -- -*`rsa.network.eth_type`*:: +*`checkpoint.app_version`*:: + -- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only +Version of the application downloaded on the protected mobile device. -type: long + +type: keyword -- -*`rsa.network.ip_proto`*:: +*`checkpoint.developer_certificate_name`*:: + -- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long +Name of the developer's certificate that was used to sign the mobile application. --- -*`rsa.network.dns_cname_record`*:: -+ --- type: keyword -- -*`rsa.network.dns_id`*:: +*`checkpoint.email_control`*:: + -- +Engine name. + + type: keyword -- -*`rsa.network.dns_opcode`*:: +*`checkpoint.email_message_id`*:: + -- +Email session id (uniqe ID of the mail). + + type: keyword -- -*`rsa.network.dns_resp`*:: +*`checkpoint.email_queue_id`*:: + -- +Postfix email queue id. + + type: keyword -- -*`rsa.network.dns_type`*:: +*`checkpoint.email_queue_name`*:: + -- +Postfix email queue name. + + type: keyword -- -*`rsa.network.domain1`*:: +*`checkpoint.file_name`*:: + -- +Malicious file name. + + type: keyword -- -*`rsa.network.host_type`*:: +*`checkpoint.failure_reason`*:: + -- +MTA failure description. + + type: keyword -- -*`rsa.network.packet_length`*:: +*`checkpoint.email_headers`*:: + -- +String containing all the email headers. + + type: keyword -- -*`rsa.network.host_orig`*:: +*`checkpoint.arrival_time`*:: + -- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. +Email arrival timestamp. + type: keyword -- -*`rsa.network.rpayload`*:: +*`checkpoint.email_status`*:: + -- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. +Describes the email's state. Possible options: delivered, deferred, skipped, bounced, hold, new, scan_started, scan_ended + type: keyword -- -*`rsa.network.vlan_name`*:: +*`checkpoint.status_update`*:: + -- -This key should only be used to capture the name of the Virtual LAN +Last time log was updated. + type: keyword -- - -*`rsa.investigations.ec_activity`*:: +*`checkpoint.delivery_time`*:: + -- -This key captures the particular event activity(Ex:Logoff) +Timestamp of when email was delivered (MTA finished handling the email. + type: keyword -- -*`rsa.investigations.ec_theme`*:: +*`checkpoint.links_num`*:: + -- -This key captures the Theme of a particular Event(Ex:Authentication) +Number of links in the mail. -type: keyword + +type: integer -- -*`rsa.investigations.ec_subject`*:: +*`checkpoint.attachments_num`*:: + -- -This key captures the Subject of a particular Event(Ex:User) +Number of attachments in the mail. -type: keyword + +type: integer -- -*`rsa.investigations.ec_outcome`*:: +*`checkpoint.email_content`*:: + -- -This key captures the outcome of a particular Event(Ex:Success) +Mail contents. Possible options: attachments/links & attachments/links/text only. + type: keyword -- -*`rsa.investigations.event_cat`*:: +*`checkpoint.allocated_ports`*:: + -- -This key captures the Event category number +Amount of allocated ports. -type: long + +type: integer -- -*`rsa.investigations.event_cat_name`*:: +*`checkpoint.capacity`*:: + -- -This key captures the event category name corresponding to the event cat code +Capacity of the ports. -type: keyword + +type: integer -- -*`rsa.investigations.event_vcat`*:: +*`checkpoint.ports_usage`*:: + -- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. +Percentage of allocated ports. -type: keyword + +type: integer -- -*`rsa.investigations.analysis_file`*:: +*`checkpoint.nat_exhausted_pool`*:: + -- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file +4-tuple of an exhausted pool. + type: keyword -- -*`rsa.investigations.analysis_service`*:: +*`checkpoint.nat_rulenum`*:: + -- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service +NAT rulebase first matched rule. -type: keyword + +type: integer -- -*`rsa.investigations.analysis_session`*:: +*`checkpoint.nat_addtnl_rulenum`*:: + -- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session +When matching 2 automatic rules , second rule match will be shown otherwise field will be 0. -type: keyword + +type: integer -- -*`rsa.investigations.boc`*:: +*`checkpoint.message_info`*:: + -- -This is used to capture behaviour of compromise +Used for information messages, for example:NAT connection has ended. + type: keyword -- -*`rsa.investigations.eoc`*:: +*`checkpoint.nat46`*:: + -- -This is used to capture Enablers of Compromise +NAT 46 status, in most cases "enabled". + type: keyword -- -*`rsa.investigations.inv_category`*:: +*`checkpoint.end_time`*:: + -- -This used to capture investigation category +TCP connection end time. + type: keyword -- -*`rsa.investigations.inv_context`*:: +*`checkpoint.tcp_end_reason`*:: + -- -This used to capture investigation context +Reason for TCP connection closure. + type: keyword -- -*`rsa.investigations.ioc`*:: +*`checkpoint.cgnet`*:: + -- -This is key capture indicator of compromise +Describes NAT allocation for specific subscriber. + type: keyword -- - -*`rsa.counters.dclass_c1`*:: +*`checkpoint.subscriber`*:: + -- -This is a generic counter key that should be used with the label dclass.c1.str only +Source IP before CGNAT. -type: long + +type: ip -- -*`rsa.counters.dclass_c2`*:: +*`checkpoint.hide_ip`*:: + -- -This is a generic counter key that should be used with the label dclass.c2.str only +Source IP which will be used after CGNAT. -type: long + +type: ip -- -*`rsa.counters.event_counter`*:: +*`checkpoint.int_start`*:: + -- -This is used to capture the number of times an event repeated +Subscriber start int which will be used for NAT. -type: long + +type: integer -- -*`rsa.counters.dclass_r1`*:: +*`checkpoint.int_end`*:: + -- -This is a generic ratio key that should be used with the label dclass.r1.str only +Subscriber end int which will be used for NAT. -type: keyword + +type: integer -- -*`rsa.counters.dclass_c3`*:: +*`checkpoint.packet_amount`*:: + -- -This is a generic counter key that should be used with the label dclass.c3.str only +Amount of packets dropped. -type: long + +type: integer -- -*`rsa.counters.dclass_c1_str`*:: +*`checkpoint.monitor_reason`*:: + -- -This is a generic counter string key that should be used with the label dclass.c1 only +Aggregated logs of monitored packets. + type: keyword -- -*`rsa.counters.dclass_c2_str`*:: +*`checkpoint.drops_amount`*:: + -- -This is a generic counter string key that should be used with the label dclass.c2 only +Amount of multicast packets dropped. -type: keyword + +type: integer -- -*`rsa.counters.dclass_r1_str`*:: +*`checkpoint.securexl_message`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r1 only +Two options for a SecureXL message: 1. Missed accounting records after heavy load on logging system. 2. FW log message regarding a packet drop. + type: keyword -- -*`rsa.counters.dclass_r2`*:: +*`checkpoint.conns_amount`*:: + -- -This is a generic ratio key that should be used with the label dclass.r2.str only +Connections amount of aggregated log info. -type: keyword + +type: integer -- -*`rsa.counters.dclass_c3_str`*:: +*`checkpoint.scope`*:: + -- -This is a generic counter string key that should be used with the label dclass.c3 only +IP related to the attack. + type: keyword -- -*`rsa.counters.dclass_r3`*:: +*`checkpoint.analyzed_on`*:: + -- -This is a generic ratio key that should be used with the label dclass.r3.str only +Check Point ThreatCloud / emulator name. + type: keyword -- -*`rsa.counters.dclass_r2_str`*:: +*`checkpoint.detected_on`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r2 only +System and applications version the file was emulated on. + type: keyword -- -*`rsa.counters.dclass_r3_str`*:: +*`checkpoint.dropped_file_name`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r3 only +List of names dropped from the original file. + type: keyword -- - -*`rsa.identity.auth_method`*:: +*`checkpoint.dropped_file_type`*:: + -- -This key is used to capture authentication methods used only +List of file types dropped from the original file. + type: keyword -- -*`rsa.identity.user_role`*:: +*`checkpoint.dropped_file_hash`*:: + -- -This key is used to capture the Role of a user only +List of file hashes dropped from the original file. + type: keyword -- -*`rsa.identity.dn`*:: +*`checkpoint.dropped_file_verdict`*:: + -- -X.500 (LDAP) Distinguished Name +List of file verdics dropped from the original file. + type: keyword -- -*`rsa.identity.logon_type`*:: +*`checkpoint.emulated_on`*:: + -- -This key is used to capture the type of logon method used. +Images the files were emulated on. + type: keyword -- -*`rsa.identity.profile`*:: +*`checkpoint.extracted_file_type`*:: + -- -This key is used to capture the user profile +Types of extracted files in case of an archive. + type: keyword -- -*`rsa.identity.accesses`*:: +*`checkpoint.extracted_file_names`*:: + -- -This key is used to capture actual privileges used in accessing an object +Names of extracted files in case of an archive. + type: keyword -- -*`rsa.identity.realm`*:: +*`checkpoint.extracted_file_hash`*:: + -- -Radius realm or similar grouping of accounts +Archive hash in case of extracted files. + type: keyword -- -*`rsa.identity.user_sid_dst`*:: +*`checkpoint.extracted_file_verdict`*:: + -- -This key captures Destination User Session ID +Verdict of extracted files in case of an archive. + type: keyword -- -*`rsa.identity.dn_src`*:: +*`checkpoint.extracted_file_uid`*:: + -- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn +UID of extracted files in case of an archive. + type: keyword -- -*`rsa.identity.org`*:: +*`checkpoint.mitre_initial_access`*:: + -- -This key captures the User organization +The adversary is trying to break into your network. + type: keyword -- -*`rsa.identity.dn_dst`*:: +*`checkpoint.mitre_execution`*:: + -- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn +The adversary is trying to run malicious code. + type: keyword -- -*`rsa.identity.firstname`*:: +*`checkpoint.mitre_persistence`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +The adversary is trying to maintain his foothold. + type: keyword -- -*`rsa.identity.lastname`*:: +*`checkpoint.mitre_privilege_escalation`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +The adversary is trying to gain higher-level permissions. + type: keyword -- -*`rsa.identity.user_dept`*:: +*`checkpoint.mitre_defense_evasion`*:: + -- -User's Department Names only +The adversary is trying to avoid being detected. + type: keyword -- -*`rsa.identity.user_sid_src`*:: +*`checkpoint.mitre_credential_access`*:: + -- -This key captures Source User Session ID +The adversary is trying to steal account names and passwords. + type: keyword -- -*`rsa.identity.federated_sp`*:: +*`checkpoint.mitre_discovery`*:: + -- -This key is the Federated Service Provider. This is the application requesting authentication. +The adversary is trying to expose information about your environment. + type: keyword -- -*`rsa.identity.federated_idp`*:: +*`checkpoint.mitre_lateral_movement`*:: + -- -This key is the federated Identity Provider. This is the server providing the authentication. +The adversary is trying to explore your environment. + type: keyword -- -*`rsa.identity.logon_type_desc`*:: +*`checkpoint.mitre_collection`*:: + -- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. +The adversary is trying to collect data of interest to achieve his goal. + type: keyword -- -*`rsa.identity.middlename`*:: +*`checkpoint.mitre_command_and_control`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +The adversary is trying to communicate with compromised systems in order to control them. + type: keyword -- -*`rsa.identity.password`*:: +*`checkpoint.mitre_exfiltration`*:: + -- -This key is for Passwords seen in any session, plain text or encrypted +The adversary is trying to steal data. + type: keyword -- -*`rsa.identity.host_role`*:: +*`checkpoint.mitre_impact`*:: + -- -This key should only be used to capture the role of a Host Machine +The adversary is trying to manipulate, interrupt, or destroy your systems and data. + type: keyword -- -*`rsa.identity.ldap`*:: +*`checkpoint.parent_file_hash`*:: + -- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context +Archive's hash in case of extracted files. + type: keyword -- -*`rsa.identity.ldap_query`*:: +*`checkpoint.parent_file_name`*:: + -- -This key is the Search criteria from an LDAP search +Archive's name in case of extracted files. + type: keyword -- -*`rsa.identity.ldap_response`*:: +*`checkpoint.parent_file_uid`*:: + -- -This key is to capture Results from an LDAP search +Archive's UID in case of extracted files. + type: keyword -- -*`rsa.identity.owner`*:: +*`checkpoint.similiar_iocs`*:: + -- -This is used to capture username the process or service is running as, the author of the task +Other IoCs similar to the ones found, related to the malicious file. + type: keyword -- -*`rsa.identity.service_account`*:: +*`checkpoint.similar_hashes`*:: + -- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage +Hashes found similar to the malicious file. + type: keyword -- - -*`rsa.email.email_dst`*:: +*`checkpoint.similar_strings`*:: + -- -This key is used to capture the Destination email address only, when the destination context is not clear use email +Strings found similar to the malicious file. + type: keyword -- -*`rsa.email.email_src`*:: +*`checkpoint.similar_communication`*:: + -- -This key is used to capture the source email address only, when the source context is not clear use email +Network action found similar to the malicious file. + type: keyword -- -*`rsa.email.subject`*:: +*`checkpoint.te_verdict_determined_by`*:: + -- -This key is used to capture the subject string from an Email only. +Emulators determined file verdict. + type: keyword -- -*`rsa.email.email`*:: +*`checkpoint.packet_capture_unique_id`*:: + -- -This key is used to capture a generic email address where the source or destination context is not clear +Identifier of the packet capture files. + type: keyword -- -*`rsa.email.trans_from`*:: +*`checkpoint.total_attachments`*:: + -- -Deprecated key defined only in table map. +The number of attachments in an email. -type: keyword + +type: integer -- -*`rsa.email.trans_to`*:: +*`checkpoint.additional_info`*:: + -- -Deprecated key defined only in table map. +ID of original file/mail which are sent by admin. + type: keyword -- - -*`rsa.file.privilege`*:: +*`checkpoint.content_risk`*:: + -- -Deprecated, use permissions +File risk. -type: keyword + +type: integer -- -*`rsa.file.attachment`*:: +*`checkpoint.operation`*:: + -- -This key captures the attachment file name +Operation made by Threat Extraction. + type: keyword -- -*`rsa.file.filesystem`*:: +*`checkpoint.scrubbed_content`*:: + -- +Active content that was found. + + type: keyword -- -*`rsa.file.binary`*:: +*`checkpoint.scrub_time`*:: + -- -Deprecated key defined only in table map. +Extraction process duration. + type: keyword -- -*`rsa.file.filename_dst`*:: +*`checkpoint.scrub_download_time`*:: + -- -This is used to capture name of the file targeted by the action +File download time from resource. + type: keyword -- -*`rsa.file.filename_src`*:: +*`checkpoint.scrub_total_time`*:: + -- -This is used to capture name of the parent filename, the file which performed the action +Threat extraction total file handling time. + type: keyword -- -*`rsa.file.filename_tmp`*:: +*`checkpoint.scrub_activity`*:: + -- +The result of the extraction + + type: keyword -- -*`rsa.file.directory_dst`*:: +*`checkpoint.watermark`*:: + -- -This key is used to capture the directory of the target process or file +Reports whether watermark is added to the cleaned file. + type: keyword -- -*`rsa.file.directory_src`*:: +*`checkpoint.snid`*:: + -- -This key is used to capture the directory of the source process or file +The Check Point session ID. + type: keyword -- -*`rsa.file.file_entropy`*:: +*`checkpoint.source_object`*:: + -- -This is used to capture entropy vale of a file +Matched object name on source column. -type: double + +type: keyword -- -*`rsa.file.file_vendor`*:: +*`checkpoint.destination_object`*:: + -- -This is used to capture Company name of file located in version_info +Matched object name on destination column. + type: keyword -- -*`rsa.file.task_name`*:: +*`checkpoint.drop_reason`*:: + -- -This is used to capture name of the task +Drop reason description. + type: keyword -- - -*`rsa.web.fqdn`*:: +*`checkpoint.hit`*:: + -- -Fully Qualified Domain Names +Number of hits on a rule. -type: keyword + +type: integer -- -*`rsa.web.web_cookie`*:: +*`checkpoint.rulebase_id`*:: + -- -This key is used to capture the Web cookies specifically. +Layer number. -type: keyword + +type: integer -- -*`rsa.web.alias_host`*:: +*`checkpoint.first_hit_time`*:: + -- -type: keyword +First hit time in current interval. + + +type: integer -- -*`rsa.web.reputation_num`*:: +*`checkpoint.last_hit_time`*:: + -- -Reputation Number of an entity. Typically used for Web Domains +Last hit time in current interval. -type: double + +type: integer -- -*`rsa.web.web_ref_domain`*:: +*`checkpoint.rematch_info`*:: + -- -Web referer's domain +Information sent when old connections cannot be matched during policy installation. + type: keyword -- -*`rsa.web.web_ref_query`*:: +*`checkpoint.last_rematch_time`*:: + -- -This key captures Web referer's query portion of the URL +Connection rematched time. + type: keyword -- -*`rsa.web.remote_domain`*:: +*`checkpoint.action_reason`*:: + -- -type: keyword +Connection drop reason. + + +type: integer -- -*`rsa.web.web_ref_page`*:: +*`checkpoint.action_reason_msg`*:: + -- -This key captures Web referer's page information +Connection drop reason message. + type: keyword -- -*`rsa.web.web_ref_root`*:: +*`checkpoint.c_bytes`*:: + -- -Web referer's root URL path +Boolean value indicates whether bytes sent from the client side are used. -type: keyword + +type: integer -- -*`rsa.web.cn_asn_dst`*:: +*`checkpoint.context_num`*:: + -- -type: keyword +Serial number of the log for a specific connection. + + +type: integer -- -*`rsa.web.cn_rpackets`*:: +*`checkpoint.match_id`*:: + -- -type: keyword +Private key of the rule + + +type: integer -- -*`rsa.web.urlpage`*:: +*`checkpoint.alert`*:: + -- +Alert level of matched rule (for connection logs). + + type: keyword -- -*`rsa.web.urlroot`*:: +*`checkpoint.parent_rule`*:: + -- -type: keyword +Parent rule number, in case of inline layer. + + +type: integer -- -*`rsa.web.p_url`*:: +*`checkpoint.match_fk`*:: + -- -type: keyword +Rule number. + + +type: integer -- -*`rsa.web.p_user_agent`*:: +*`checkpoint.dropped_outgoing`*:: + -- -type: keyword +Number of outgoing bytes dropped when using UP-limit feature. + + +type: integer -- -*`rsa.web.p_web_cookie`*:: +*`checkpoint.dropped_incoming`*:: + -- -type: keyword +Number of incoming bytes dropped when using UP-limit feature. + + +type: integer -- -*`rsa.web.p_web_method`*:: +*`checkpoint.media_type`*:: + -- +Media used (audio, video, etc.) + + type: keyword -- -*`rsa.web.p_web_referer`*:: +*`checkpoint.sip_reason`*:: + -- +Explains why 'source_ip' isn't allowed to redirect (handover). + + type: keyword -- -*`rsa.web.web_extension_tmp`*:: +*`checkpoint.voip_method`*:: + -- +Registration request. + + type: keyword -- -*`rsa.web.web_page`*:: +*`checkpoint.registered_ip-phones`*:: + -- +Registered IP-Phones. + + type: keyword -- - -*`rsa.threat.threat_category`*:: +*`checkpoint.voip_reg_user_type`*:: + -- -This key captures Threat Name/Threat Category/Categorization of alert +Registered IP-Phone type. + type: keyword -- -*`rsa.threat.threat_desc`*:: +*`checkpoint.voip_call_id`*:: + -- -This key is used to capture the threat description from the session directly or inferred +Call-ID. + type: keyword -- -*`rsa.threat.alert`*:: +*`checkpoint.voip_reg_int`*:: + -- -This key is used to capture name of the alert +Registration port. -type: keyword + +type: integer -- -*`rsa.threat.threat_source`*:: +*`checkpoint.voip_reg_ipp`*:: + -- -This key is used to capture source of the threat +Registration IP protocol. -type: keyword --- +type: integer +-- -*`rsa.crypto.crypto`*:: +*`checkpoint.voip_reg_period`*:: + -- -This key is used to capture the Encryption Type or Encryption Key only +Registration period. -type: keyword + +type: integer -- -*`rsa.crypto.cipher_src`*:: +*`checkpoint.voip_log_type`*:: + -- -This key is for Source (Client) Cipher +VoIP log types. Possible values: reject, call, registration. + type: keyword -- -*`rsa.crypto.cert_subject`*:: +*`checkpoint.src_phone_number`*:: + -- -This key is used to capture the Certificate organization only +Source IP-Phone. + type: keyword -- -*`rsa.crypto.peer`*:: +*`checkpoint.voip_from_user_type`*:: + -- -This key is for Encryption peer's IP Address +Source IP-Phone type. + type: keyword -- -*`rsa.crypto.cipher_size_src`*:: +*`checkpoint.dst_phone_number`*:: + -- -This key captures Source (Client) Cipher Size +Destination IP-Phone. -type: long + +type: keyword -- -*`rsa.crypto.ike`*:: +*`checkpoint.voip_to_user_type`*:: + -- -IKE negotiation phase. +Destination IP-Phone type. + type: keyword -- -*`rsa.crypto.scheme`*:: +*`checkpoint.voip_call_dir`*:: + -- -This key captures the Encryption scheme used +Call direction: in/out. + type: keyword -- -*`rsa.crypto.peer_id`*:: +*`checkpoint.voip_call_state`*:: + -- -This key is for Encryption peer’s identity +Call state. Possible values: in/out. + type: keyword -- -*`rsa.crypto.sig_type`*:: +*`checkpoint.voip_call_term_time`*:: + -- -This key captures the Signature Type +Call termination time stamp. + type: keyword -- -*`rsa.crypto.cert_issuer`*:: +*`checkpoint.voip_duration`*:: + -- +Call duration (seconds). + + type: keyword -- -*`rsa.crypto.cert_host_name`*:: +*`checkpoint.voip_media_port`*:: + -- -Deprecated key defined only in table map. +Media int. + type: keyword -- -*`rsa.crypto.cert_error`*:: +*`checkpoint.voip_media_ipp`*:: + -- -This key captures the Certificate Error String +Media IP protocol. + type: keyword -- -*`rsa.crypto.cipher_dst`*:: +*`checkpoint.voip_est_codec`*:: + -- -This key is for Destination (Server) Cipher +Estimated codec. + type: keyword -- -*`rsa.crypto.cipher_size_dst`*:: +*`checkpoint.voip_exp`*:: + -- -This key captures Destination (Server) Cipher Size +Expiration. -type: long + +type: integer -- -*`rsa.crypto.ssl_ver_src`*:: +*`checkpoint.voip_attach_sz`*:: + -- -Deprecated, use version +Attachment size. -type: keyword + +type: integer -- -*`rsa.crypto.d_certauth`*:: +*`checkpoint.voip_attach_action_info`*:: + -- +Attachment action Info. + + type: keyword -- -*`rsa.crypto.s_certauth`*:: +*`checkpoint.voip_media_codec`*:: + -- +Estimated codec. + + type: keyword -- -*`rsa.crypto.ike_cookie1`*:: +*`checkpoint.voip_reject_reason`*:: + -- -ID of the negotiation — sent for ISAKMP Phase One +Reject reason. + type: keyword -- -*`rsa.crypto.ike_cookie2`*:: +*`checkpoint.voip_reason_info`*:: + -- -ID of the negotiation — sent for ISAKMP Phase Two +Information. + type: keyword -- -*`rsa.crypto.cert_checksum`*:: +*`checkpoint.voip_config`*:: + -- +Configuration. + + type: keyword -- -*`rsa.crypto.cert_host_cat`*:: +*`checkpoint.voip_reg_server`*:: + -- -This key is used for the hostname category value of a certificate +Registrar server IP address. -type: keyword + +type: ip -- -*`rsa.crypto.cert_serial`*:: +*`checkpoint.scv_user`*:: + -- -This key is used to capture the Certificate serial number only +Username whose packets are dropped on SCV. + type: keyword -- -*`rsa.crypto.cert_status`*:: +*`checkpoint.scv_message_info`*:: + -- -This key captures Certificate validation status +Drop reason. + type: keyword -- -*`rsa.crypto.ssl_ver_dst`*:: +*`checkpoint.ppp`*:: + -- -Deprecated, use version +Authentication status. + type: keyword -- -*`rsa.crypto.cert_keysize`*:: +*`checkpoint.scheme`*:: + -- +Describes the scheme used for the log. + + type: keyword -- -*`rsa.crypto.cert_username`*:: +*`checkpoint.auth_method`*:: + -- +Password authentication protocol used (PAP or EAP). + + type: keyword -- -*`rsa.crypto.https_insact`*:: +*`checkpoint.auth_status`*:: + -- +The authentication status for an event. + + type: keyword -- -*`rsa.crypto.https_valid`*:: +*`checkpoint.machine`*:: + -- +L2TP machine which triggered the log and the log refers to it. + + type: keyword -- -*`rsa.crypto.cert_ca`*:: +*`checkpoint.vpn_feature_name`*:: + -- -This key is used to capture the Certificate signing authority only +L2TP /IKE / Link Selection. + type: keyword -- -*`rsa.crypto.cert_common`*:: +*`checkpoint.reject_category`*:: + -- -This key is used to capture the Certificate common name only +Authentication failure reason. + type: keyword -- - -*`rsa.wireless.wlan_ssid`*:: +*`checkpoint.peer_ip_probing_status_update`*:: + -- -This key is used to capture the ssid of a Wireless Session +IP address response status. + type: keyword -- -*`rsa.wireless.access_point`*:: +*`checkpoint.peer_ip`*:: + -- -This key is used to capture the access point name. +IP address which the client connects to. + type: keyword -- -*`rsa.wireless.wlan_channel`*:: +*`checkpoint.peer_gateway`*:: + -- -This is used to capture the channel names +Main IP of the peer Security Gateway. -type: long + +type: ip -- -*`rsa.wireless.wlan_name`*:: +*`checkpoint.link_probing_status_update`*:: + -- -This key captures either WLAN number/name +IP address response status. + type: keyword -- - -*`rsa.storage.disk_volume`*:: +*`checkpoint.source_interface`*:: + -- -A unique name assigned to logical units (volumes) within a physical disk +External Interface name for source interface or Null if not found. + type: keyword -- -*`rsa.storage.lun`*:: +*`checkpoint.next_hop_ip`*:: + -- -Logical Unit Number.This key is a very useful concept in Storage. +Next hop IP address. + type: keyword -- -*`rsa.storage.pwwn`*:: +*`checkpoint.srckeyid`*:: + -- -This uniquely identifies a port on a HBA. +Initiator Spi ID. + type: keyword -- - -*`rsa.physical.org_dst`*:: +*`checkpoint.dstkeyid`*:: + -- -This is used to capture the destination organization based on the GEOPIP Maxmind database. +Responder Spi ID. + type: keyword -- -*`rsa.physical.org_src`*:: +*`checkpoint.encryption_failure`*:: + -- -This is used to capture the source organization based on the GEOPIP Maxmind database. +Message indicating why the encryption failed. + type: keyword -- - -*`rsa.healthcare.patient_fname`*:: +*`checkpoint.ike_ids`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +All QM ids. + type: keyword -- -*`rsa.healthcare.patient_id`*:: +*`checkpoint.community`*:: + -- -This key captures the unique ID for a patient +Community name for the IPSec key and the use of the IKEv. + type: keyword -- -*`rsa.healthcare.patient_lname`*:: +*`checkpoint.ike`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +IKEMode (PHASE1, PHASE2, etc..). + type: keyword -- -*`rsa.healthcare.patient_mname`*:: +*`checkpoint.cookieI`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +Initiator cookie. + type: keyword -- - -*`rsa.endpoint.host_state`*:: +*`checkpoint.cookieR`*:: + -- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on +Responder cookie. + type: keyword -- -*`rsa.endpoint.registry_key`*:: +*`checkpoint.msgid`*:: + -- -This key captures the path to the registry key +Message ID. + type: keyword -- -*`rsa.endpoint.registry_value`*:: +*`checkpoint.methods`*:: + -- -This key captures values or decorators used within a registry entry +IPSEc methods. + type: keyword -- -[[exported-fields-beat-common]] -== Beat fields - -Contains common beat fields available in all event types. - - - -*`agent.hostname`*:: +*`checkpoint.connection_uid`*:: + -- -Deprecated - use agent.name or agent.id to identify an agent. - +Calculation of md5 of the IP and user name as UID. -type: alias -alias to: agent.name +type: keyword -- -*`beat.timezone`*:: +*`checkpoint.site_name`*:: + -- -type: alias +Site name. -alias to: event.timezone + +type: keyword -- -*`fields`*:: +*`checkpoint.esod_rule_name`*:: + -- -Contains user configurable fields. +Unknown rule name. -type: object +type: keyword -- -*`beat.name`*:: +*`checkpoint.esod_rule_action`*:: + -- -type: alias +Unknown rule action. -alias to: host.name + +type: keyword -- -*`beat.hostname`*:: +*`checkpoint.esod_rule_type`*:: + -- -type: alias +Unknown rule type. -alias to: agent.name + +type: keyword -- -*`timeseries.instance`*:: +*`checkpoint.esod_noncompliance_reason`*:: + -- -Time series instance id +Non-compliance reason. + type: keyword -- -[[exported-fields-bluecoat]] -== Blue Coat Director fields - -bluecoat fields. - - - -*`network.interface.name`*:: +*`checkpoint.esod_associated_policies`*:: + -- -Name of the network interface where the traffic has been observed. +Associated policies. type: keyword -- - - -*`rsa.internal.msg`*:: +*`checkpoint.spyware_name`*:: + -- -This key is used to capture the raw message that comes into the Log Decoder +Spyware name. + type: keyword -- -*`rsa.internal.messageid`*:: +*`checkpoint.spyware_type`*:: + -- +Spyware type. + + type: keyword -- -*`rsa.internal.event_desc`*:: +*`checkpoint.anti_virus_type`*:: + -- +Anti virus type. + + type: keyword -- -*`rsa.internal.message`*:: +*`checkpoint.end_user_firewall_type`*:: + -- -This key captures the contents of instant messages +End user firewall type. + type: keyword -- -*`rsa.internal.time`*:: +*`checkpoint.esod_scan_status`*:: + -- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. +Scan failed. -type: date + +type: keyword -- -*`rsa.internal.level`*:: +*`checkpoint.esod_access_status`*:: + -- -Deprecated key defined only in table map. +Access denied. -type: long + +type: keyword -- -*`rsa.internal.msg_id`*:: +*`checkpoint.client_type`*:: + -- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Endpoint Connect. + type: keyword -- -*`rsa.internal.msg_vid`*:: +*`checkpoint.precise_error`*:: + -- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +HTTP parser error. + type: keyword -- -*`rsa.internal.data`*:: +*`checkpoint.method`*:: + -- -Deprecated key defined only in table map. +HTTP method. + type: keyword -- -*`rsa.internal.obj_server`*:: +*`checkpoint.trusted_domain`*:: + -- -Deprecated key defined only in table map. +In case of phishing event, the domain, which the attacker was impersonating. + type: keyword -- -*`rsa.internal.obj_val`*:: +*`checkpoint.comment`*:: + -- -Deprecated key defined only in table map. - type: keyword -- -*`rsa.internal.resource`*:: +*`checkpoint.conn_direction`*:: + -- -Deprecated key defined only in table map. +Connection direction type: keyword -- -*`rsa.internal.obj_id`*:: +*`checkpoint.db_ver`*:: + -- -Deprecated key defined only in table map. +Database version type: keyword -- -*`rsa.internal.statement`*:: +*`checkpoint.update_status`*:: + -- -Deprecated key defined only in table map. +Status of database update type: keyword -- -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword +[[exported-fields-cisco]] +== Cisco fields --- +Module for handling Cisco network device logs. -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. -type: keyword --- +[float] +=== cisco.amp -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. +Module for parsing Cisco AMP logs. -type: keyword --- -*`rsa.internal.inode`*:: +*`cisco.amp.timestamp_nanoseconds`*:: + -- -Deprecated key defined only in table map. +The timestamp in Epoch nanoseconds. -type: long + +type: date -- -*`rsa.internal.resource_class`*:: +*`cisco.amp.event_type_id`*:: + -- -Deprecated key defined only in table map. +A sub ID of the event, depending on event type. + type: keyword -- -*`rsa.internal.dead`*:: +*`cisco.amp.detection`*:: + -- -Deprecated key defined only in table map. - -type: long - --- +The name of the malware detected. -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness type: keyword -- -*`rsa.internal.feed_name`*:: +*`cisco.amp.detection_id`*:: + -- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The ID of the detection. + type: keyword -- -*`rsa.internal.cid`*:: +*`cisco.amp.connector_guid`*:: + -- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The GUID of the connector sending information to AMP. + type: keyword -- -*`rsa.internal.device_class`*:: +*`cisco.amp.group_guids`*:: + -- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +An array of group GUIDS related to the connector sending information to AMP. + type: keyword -- -*`rsa.internal.device_group`*:: +*`cisco.amp.vulnerabilities`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +An array of related vulnerabilities to the malicious event. -type: keyword + +type: flattened -- -*`rsa.internal.device_host`*:: +*`cisco.amp.scan.description`*:: + -- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Description of an event related to a scan being initiated, for example the specific directory name. + type: keyword -- -*`rsa.internal.device_ip`*:: +*`cisco.amp.scan.clean`*:: + -- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- +Boolean value if a scanned file was clean or not. -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness -type: ip +type: boolean -- -*`rsa.internal.device_type`*:: +*`cisco.amp.scan.scanned_files`*:: + -- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- +Count of files scanned in a directory. -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. type: long -- -*`rsa.internal.did`*:: +*`cisco.amp.scan.scanned_processes`*:: + -- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Count of processes scanned related to a single scan event. -type: keyword + +type: long -- -*`rsa.internal.entropy_req`*:: +*`cisco.amp.scan.scanned_paths`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +Count of different directories scanned related to a single scan event. + type: long -- -*`rsa.internal.entropy_res`*:: +*`cisco.amp.scan.malicious_detections`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +Count of malicious files or documents detected related to a single scan event. + type: long -- -*`rsa.internal.event_name`*:: +*`cisco.amp.computer.connector_guid`*:: + -- -Deprecated key defined only in table map. +The GUID of the connector, similar to top level connector_guid, but unique if multiple connectors are involved. + type: keyword -- -*`rsa.internal.feed_category`*:: +*`cisco.amp.computer.external_ip`*:: + -- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The external IP of the related host. -type: keyword + +type: ip -- -*`rsa.internal.forward_ip`*:: +*`cisco.amp.computer.active`*:: + -- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. +If the current endpoint is active or not. -type: ip + +type: boolean -- -*`rsa.internal.forward_ipv6`*:: +*`cisco.amp.computer.network_addresses`*:: + -- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +All network interface information on the related host. -type: ip + +type: flattened -- -*`rsa.internal.header_id`*:: +*`cisco.amp.file.disposition`*:: + -- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Categorization of file, for example "Malicious" or "Clean". + type: keyword -- -*`rsa.internal.lc_cid`*:: +*`cisco.amp.network_info.disposition`*:: + -- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Categorization of a network event related to a file, for example "Malicious" or "Clean". + type: keyword -- -*`rsa.internal.lc_ctime`*:: +*`cisco.amp.network_info.nfm.direction`*:: + -- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The current direction based on source and destination IP. -type: date + +type: keyword -- -*`rsa.internal.mcb_req`*:: +*`cisco.amp.related.mac`*:: + -- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most +An array of all related MAC addresses. -type: long + +type: keyword -- -*`rsa.internal.mcb_res`*:: +*`cisco.amp.related.cve`*:: + -- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most +An array of all related MAC addresses. -type: long + +type: keyword -- -*`rsa.internal.mcbc_req`*:: +*`cisco.amp.cloud_ioc.description`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +Description of the related IOC for specific IOC events from AMP. -type: long + +type: keyword -- -*`rsa.internal.mcbc_res`*:: +*`cisco.amp.cloud_ioc.short_description`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +Short description of the related IOC for specific IOC events from AMP. -type: long + +type: keyword -- -*`rsa.internal.medium`*:: +*`cisco.amp.network_info.parent.disposition`*:: + -- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session +Categorization of a IOC for example "Malicious" or "Clean". -type: long + +type: keyword -- -*`rsa.internal.node_name`*:: +*`cisco.amp.network_info.parent.identity.md5`*:: + -- -Deprecated key defined only in table map. +MD5 hash of the related IOC. + type: keyword -- -*`rsa.internal.nwe_callback_id`*:: +*`cisco.amp.network_info.parent.identity.sha1`*:: + -- -This key denotes that event is endpoint related +SHA1 hash of the related IOC. + type: keyword -- -*`rsa.internal.parse_error`*:: +*`cisco.amp.network_info.parent.identify.sha256`*:: + -- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +SHA256 hash of the related IOC. + type: keyword -- -*`rsa.internal.payload_req`*:: +*`cisco.amp.file.archived_file.disposition`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +Categorization of a file archive related to a file, for example "Malicious" or "Clean". -type: long + +type: keyword -- -*`rsa.internal.payload_res`*:: +*`cisco.amp.file.archived_file.identity.md5`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +MD5 hash of the archived file related to the malicious event. -type: long + +type: keyword -- -*`rsa.internal.process_vid_dst`*:: +*`cisco.amp.file.archived_file.identity.sha1`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. +SHA1 hash of the archived file related to the malicious event. + type: keyword -- -*`rsa.internal.process_vid_src`*:: +*`cisco.amp.file.archived_file.identity.sha256`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. +SHA256 hash of the archived file related to the malicious event. + type: keyword -- -*`rsa.internal.rid`*:: +*`cisco.amp.file.attack_details.application`*:: + -- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The application name related to Exploit Prevention events. -type: long + +type: keyword -- -*`rsa.internal.session_split`*:: +*`cisco.amp.file.attack_details.attacked_module`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Path to the executable or dll that was attacked and detected by Exploit Prevention. + type: keyword -- -*`rsa.internal.site`*:: +*`cisco.amp.file.attack_details.base_address`*:: + -- -Deprecated key defined only in table map. +The base memory address related to the exploit detected. + type: keyword -- -*`rsa.internal.size`*:: +*`cisco.amp.file.attack_details.suspicious_files`*:: + -- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +An array of related files when an attack is detected by Exploit Prevention. -type: long + +type: keyword -- -*`rsa.internal.sourcefile`*:: +*`cisco.amp.file.parent.disposition`*:: + -- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Categorization of parrent, for example "Malicious" or "Clean". + type: keyword -- -*`rsa.internal.ubc_req`*:: +*`cisco.amp.error.description`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +Description of an endpoint error event. -type: long + +type: keyword -- -*`rsa.internal.ubc_res`*:: +*`cisco.amp.error.error_code`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +The error code describing the related error event. -type: long + +type: keyword -- -*`rsa.internal.word`*:: +*`cisco.amp.threat_hunting.severity`*:: + -- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log +Severity result of the threat hunt registered to the malicious event. Can be Low-Critical. + type: keyword -- - -*`rsa.time.event_time`*:: +*`cisco.amp.threat_hunting.incident_report_guid`*:: + -- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form +The GUID of the related threat hunting report. -type: date + +type: keyword -- -*`rsa.time.duration_time`*:: +*`cisco.amp.threat_hunting.incident_hunt_guid`*:: + -- -This key is used to capture the normalized duration/lifetime in seconds. +The GUID of the related investigation tracking issue. -type: double + +type: keyword -- -*`rsa.time.event_time_str`*:: +*`cisco.amp.threat_hunting.incident_title`*:: + -- -This key is used to capture the incomplete time mentioned in a session as a string +Title of the incident related to the threat hunting activity. + type: keyword -- -*`rsa.time.starttime`*:: +*`cisco.amp.threat_hunting.incident_summary`*:: + -- -This key is used to capture the Start time mentioned in a session in a standard form +Summary of the outcome on the threat hunting activity. -type: date + +type: keyword -- -*`rsa.time.month`*:: +*`cisco.amp.threat_hunting.incident_remediation`*:: + -- +Recommendations to resolve the vulnerability or exploited host. + + type: keyword -- -*`rsa.time.day`*:: +*`cisco.amp.threat_hunting.incident_id`*:: + -- +The id of the related incident for the threat hunting activity. + + type: keyword -- -*`rsa.time.endtime`*:: +*`cisco.amp.threat_hunting.incident_end_time`*:: + -- -This key is used to capture the End time mentioned in a session in a standard form +When the threat hunt finalized or closed. + type: date -- -*`rsa.time.timezone`*:: +*`cisco.amp.threat_hunting.incident_start_time`*:: + -- -This key is used to capture the timezone of the Event Time +When the threat hunt was initiated. -type: keyword + +type: date -- -*`rsa.time.duration_str`*:: +*`cisco.amp.file.attack_details.indicators`*:: + -- -A text string version of the duration +Different indicator types that matches the exploit detected, for example different MITRE tactics. -type: keyword + +type: flattened -- -*`rsa.time.date`*:: +*`cisco.amp.threat_hunting.tactics`*:: + -- -type: keyword +List of all MITRE tactics related to the incident found. --- -*`rsa.time.year`*:: -+ --- -type: keyword +type: flattened -- -*`rsa.time.recorded_time`*:: +*`cisco.amp.threat_hunting.techniques`*:: + -- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. +List of all MITRE techniques related to the incident found. -type: date + +type: flattened -- -*`rsa.time.datetime`*:: +*`cisco.amp.tactics`*:: + -- -type: keyword +List of all MITRE tactics related to the incident found. + + +type: flattened -- -*`rsa.time.effective_time`*:: +*`cisco.amp.mitre_tactics`*:: + -- -This key is the effective time referenced by an individual event in a Standard Timestamp format +Array of all related mitre tactic ID's -type: date + +type: keyword -- -*`rsa.time.expire_time`*:: +*`cisco.amp.techniques`*:: + -- -This key is the timestamp that explicitly refers to an expiration. +List of all MITRE techniques related to the incident found. -type: date + +type: flattened -- -*`rsa.time.process_time`*:: +*`cisco.amp.mitre_techniques`*:: + -- -Deprecated, use duration.time +Array of all related mitre technique ID's + type: keyword -- -*`rsa.time.hour`*:: +*`cisco.amp.command_line.arguments`*:: + -- -type: keyword +The CLI arguments related to the Cloud Threat IOC reported by Cisco. --- -*`rsa.time.min`*:: -+ --- type: keyword -- -*`rsa.time.timestamp`*:: +*`cisco.amp.bp_data`*:: + -- -type: keyword +Endpoint isolation information --- -*`rsa.time.event_queue_time`*:: -+ +type: flattened + -- -This key is the Time that the event was queued. -type: date +[float] +=== cisco.asa --- +Fields for Cisco ASA Firewall. -*`rsa.time.p_time1`*:: -+ --- -type: keyword --- -*`rsa.time.tzone`*:: +*`cisco.asa.message_id`*:: + -- -type: keyword +The Cisco ASA message identifier. --- -*`rsa.time.eventtime`*:: -+ --- type: keyword -- -*`rsa.time.gmtdate`*:: +*`cisco.asa.suffix`*:: + -- -type: keyword +Optional suffix after %ASA identifier. --- -*`rsa.time.gmttime`*:: -+ --- type: keyword +example: session + -- -*`rsa.time.p_date`*:: +*`cisco.asa.source_interface`*:: + -- -type: keyword +Source interface for the flow or event. --- -*`rsa.time.p_month`*:: -+ --- type: keyword -- -*`rsa.time.p_time`*:: +*`cisco.asa.destination_interface`*:: + -- -type: keyword +Destination interface for the flow or event. --- -*`rsa.time.p_time2`*:: -+ --- type: keyword -- -*`rsa.time.p_year`*:: +*`cisco.asa.rule_name`*:: + -- +Name of the Access Control List rule that matched this event. + + type: keyword -- -*`rsa.time.expire_time_str`*:: +*`cisco.asa.source_username`*:: + -- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. +Name of the user that is the source for this event. + type: keyword -- -*`rsa.time.stamp`*:: +*`cisco.asa.source_user_security_group_tag`*:: + -- -Deprecated key defined only in table map. +The Security Group Tag for the source user. Security Group Tag are 16-bit identifiers used to represent logical group privilege. -type: date --- +type: long +-- -*`rsa.misc.action`*:: +*`cisco.asa.destination_username`*:: + -- +Name of the user that is the destination for this event. + + type: keyword -- -*`rsa.misc.result`*:: +*`cisco.asa.destination_user_security_group_tag`*:: + -- -This key is used to capture the outcome/result string value of an action in a session. +The Security Group Tag for the destination user. Security Group Tag are 16-bit identifiers used to represent logical group privilege. -type: keyword + +type: long -- -*`rsa.misc.severity`*:: +*`cisco.asa.mapped_source_ip`*:: + -- -This key is used to capture the severity given the session +The translated source IP address. -type: keyword + +type: ip -- -*`rsa.misc.event_type`*:: +*`cisco.asa.mapped_source_host`*:: + -- -This key captures the event category type as specified by the event source. +The translated source host. + type: keyword -- -*`rsa.misc.reference_id`*:: +*`cisco.asa.mapped_source_port`*:: + -- -This key is used to capture an event id from the session directly +The translated source port. -type: keyword + +type: long -- -*`rsa.misc.version`*:: +*`cisco.asa.mapped_destination_ip`*:: + -- -This key captures Version of the application or OS which is generating the event. +The translated destination IP address. -type: keyword + +type: ip -- -*`rsa.misc.disposition`*:: +*`cisco.asa.mapped_destination_host`*:: + -- -This key captures the The end state of an action. +The translated destination host. + type: keyword -- -*`rsa.misc.result_code`*:: +*`cisco.asa.mapped_destination_port`*:: + -- -This key is used to capture the outcome/result numeric value of an action in a session +The translated destination port. -type: keyword + +type: long -- -*`rsa.misc.category`*:: +*`cisco.asa.threat_level`*:: + -- -This key is used to capture the category of an event given by the vendor in the session +Threat level for malware / botnet traffic. One of very-low, low, moderate, high or very-high. + type: keyword -- -*`rsa.misc.obj_name`*:: +*`cisco.asa.threat_category`*:: + -- -This is used to capture name of object +Category for the malware / botnet traffic. For example: virus, botnet, trojan, etc. + type: keyword -- -*`rsa.misc.obj_type`*:: +*`cisco.asa.connection_id`*:: + -- -This is used to capture type of object +Unique identifier for a flow. + type: keyword -- -*`rsa.misc.event_source`*:: +*`cisco.asa.icmp_type`*:: + -- -This key captures Source of the event that’s not a hostname +ICMP type. -type: keyword + +type: short -- -*`rsa.misc.log_session_id`*:: +*`cisco.asa.icmp_code`*:: + -- -This key is used to capture a sessionid from the session directly +ICMP code. -type: keyword + +type: short -- -*`rsa.misc.group`*:: +*`cisco.asa.connection_type`*:: + -- -This key captures the Group Name value +The VPN connection type + type: keyword -- -*`rsa.misc.policy_name`*:: +*`cisco.asa.dap_records`*:: + -- -This key is used to capture the Policy Name only. +The assigned DAP records + type: keyword -- -*`rsa.misc.rule_name`*:: +*`cisco.asa.command_line_arguments`*:: + -- -This key captures the Rule Name +The command line arguments logged by the local audit log + type: keyword -- -*`rsa.misc.context`*:: +*`cisco.asa.assigned_ip`*:: + -- -This key captures Information which adds additional context to the event. +The IP address assigned to a VPN client successfully connecting -type: keyword + +type: ip -- -*`rsa.misc.change_new`*:: +*`cisco.asa.privilege.old`*:: + -- -This key is used to capture the new values of the attribute that’s changing in a session +When a users privilege is changed this is the old value + type: keyword -- -*`rsa.misc.space`*:: +*`cisco.asa.privilege.new`*:: + -- +When a users privilege is changed this is the new value + + type: keyword -- -*`rsa.misc.client`*:: +*`cisco.asa.burst.object`*:: + -- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. +The related object for burst warnings + type: keyword -- -*`rsa.misc.msgIdPart1`*:: +*`cisco.asa.burst.id`*:: + -- -type: keyword +The related rate ID for burst warnings --- -*`rsa.misc.msgIdPart2`*:: -+ --- type: keyword -- -*`rsa.misc.change_old`*:: +*`cisco.asa.burst.current_rate`*:: + -- -This key is used to capture the old value of the attribute that’s changing in a session +The current burst rate seen + type: keyword -- -*`rsa.misc.operation_id`*:: +*`cisco.asa.burst.configured_rate`*:: + -- -An alert number or operation number. The values should be unique and non-repeating. +The current configured burst rate + type: keyword -- -*`rsa.misc.event_state`*:: +*`cisco.asa.burst.avg_rate`*:: + -- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. +The current average burst rate seen + type: keyword -- -*`rsa.misc.group_object`*:: +*`cisco.asa.burst.configured_avg_rate`*:: + -- -This key captures a collection/grouping of entities. Specific usage +The current configured average burst rate allowed + type: keyword -- -*`rsa.misc.node`*:: +*`cisco.asa.burst.cumulative_count`*:: + -- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. +The total count of burst rate hits since the object was created or cleared + type: keyword -- -*`rsa.misc.rule`*:: +*`cisco.asa.termination_user`*:: + -- -This key captures the Rule number +AAA name of user requesting termination + type: keyword -- -*`rsa.misc.device_name`*:: +*`cisco.asa.webvpn.group_name`*:: + -- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc +The WebVPN group name the user belongs to + type: keyword -- -*`rsa.misc.param`*:: +*`cisco.asa.termination_initiator`*:: + -- -This key is the parameters passed as part of a command or application, etc. +Interface name of the side that initiated the teardown + type: keyword -- -*`rsa.misc.change_attrib`*:: +*`cisco.asa.tunnel_type`*:: + -- -This key is used to capture the name of the attribute that’s changing in a session +SA type (remote access or L2L) + type: keyword -- -*`rsa.misc.event_computer`*:: +*`cisco.asa.session_type`*:: + -- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. +Session type (for example, IPsec or UDP) + type: keyword -- -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" +[float] +=== cisco.ftd -type: keyword +Fields for Cisco Firepower Threat Defense Firewall. --- -*`rsa.misc.event_log`*:: + +*`cisco.ftd.message_id`*:: + -- -This key captures the Name of the event log +The Cisco FTD message identifier. + type: keyword -- -*`rsa.misc.OS`*:: +*`cisco.ftd.suffix`*:: + -- -This key captures the Name of the Operating System +Optional suffix after %FTD identifier. + type: keyword +example: session + -- -*`rsa.misc.terminal`*:: +*`cisco.ftd.source_interface`*:: + -- -This key captures the Terminal Names only +Source interface for the flow or event. + type: keyword -- -*`rsa.misc.msgIdPart3`*:: +*`cisco.ftd.destination_interface`*:: + -- +Destination interface for the flow or event. + + type: keyword -- -*`rsa.misc.filter`*:: +*`cisco.ftd.rule_name`*:: + -- -This key captures Filter used to reduce result set +Name of the Access Control List rule that matched this event. + type: keyword -- -*`rsa.misc.serial_number`*:: +*`cisco.ftd.source_username`*:: + -- -This key is the Serial number associated with a physical asset. +Name of the user that is the source for this event. + type: keyword -- -*`rsa.misc.checksum`*:: +*`cisco.ftd.destination_username`*:: + -- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. +Name of the user that is the destination for this event. + type: keyword -- -*`rsa.misc.event_user`*:: +*`cisco.ftd.mapped_source_ip`*:: + -- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. +The translated source IP address. Use ECS source.nat.ip. -type: keyword + +type: ip -- -*`rsa.misc.virusname`*:: +*`cisco.ftd.mapped_source_host`*:: + -- -This key captures the name of the virus +The translated source host. + type: keyword -- -*`rsa.misc.content_type`*:: +*`cisco.ftd.mapped_source_port`*:: + -- -This key is used to capture Content Type only. +The translated source port. Use ECS source.nat.port. -type: keyword + +type: long -- -*`rsa.misc.group_id`*:: +*`cisco.ftd.mapped_destination_ip`*:: + -- -This key captures Group ID Number (related to the group name) +The translated destination IP address. Use ECS destination.nat.ip. -type: keyword + +type: ip -- -*`rsa.misc.policy_id`*:: +*`cisco.ftd.mapped_destination_host`*:: + -- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise +The translated destination host. + type: keyword -- -*`rsa.misc.vsys`*:: +*`cisco.ftd.mapped_destination_port`*:: + -- -This key captures Virtual System Name +The translated destination port. Use ECS destination.nat.port. -type: keyword + +type: long -- -*`rsa.misc.connection_id`*:: +*`cisco.ftd.threat_level`*:: + -- -This key captures the Connection ID +Threat level for malware / botnet traffic. One of very-low, low, moderate, high or very-high. + type: keyword -- -*`rsa.misc.reference_id2`*:: +*`cisco.ftd.threat_category`*:: + -- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. +Category for the malware / botnet traffic. For example: virus, botnet, trojan, etc. + type: keyword -- -*`rsa.misc.sensor`*:: +*`cisco.ftd.connection_id`*:: + -- -This key captures Name of the sensor. Typically used in IDS/IPS based devices +Unique identifier for a flow. + type: keyword -- -*`rsa.misc.sig_id`*:: +*`cisco.ftd.icmp_type`*:: + -- -This key captures IDS/IPS Int Signature ID +ICMP type. -type: long + +type: short -- -*`rsa.misc.port_name`*:: +*`cisco.ftd.icmp_code`*:: + -- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). +ICMP code. -type: keyword + +type: short -- -*`rsa.misc.rule_group`*:: +*`cisco.ftd.security`*:: + -- -This key captures the Rule group name +Raw fields for Security Events. -type: keyword +type: object -- -*`rsa.misc.risk_num`*:: +*`cisco.ftd.connection_type`*:: + -- -This key captures a Numeric Risk value +The VPN connection type -type: double + +type: keyword -- -*`rsa.misc.trigger_val`*:: +*`cisco.ftd.dap_records`*:: + -- -This key captures the Value of the trigger or threshold condition. +The assigned DAP records + type: keyword -- -*`rsa.misc.log_session_id1`*:: +*`cisco.ftd.termination_user`*:: + -- -This key is used to capture a Linked (Related) Session ID from the session directly +AAA name of user requesting termination + type: keyword -- -*`rsa.misc.comp_version`*:: +*`cisco.ftd.webvpn.group_name`*:: + -- -This key captures the Version level of a sub-component of a product. +The WebVPN group name the user belongs to + type: keyword -- -*`rsa.misc.content_version`*:: +*`cisco.ftd.termination_initiator`*:: + -- -This key captures Version level of a signature or database content. +Interface name of the side that initiated the teardown + type: keyword -- -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) +[float] +=== cisco.ios -type: keyword +Fields for Cisco IOS logs. --- -*`rsa.misc.risk`*:: + +*`cisco.ios.access_list`*:: + -- -This key captures the non-numeric risk value +Name of the IP access list. + type: keyword -- -*`rsa.misc.event_id`*:: +*`cisco.ios.facility`*:: + -- -type: keyword +The facility to which the message refers (for example, SNMP, SYS, and so forth). A facility can be a hardware device, a protocol, or a module of the system software. It denotes the source or the cause of the system message. --- -*`rsa.misc.reason`*:: -+ --- type: keyword --- +example: SEC -*`rsa.misc.status`*:: -+ -- -type: keyword --- +[float] +=== cisco.umbrella -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name +Fields for Cisco Umbrella. -type: keyword --- -*`rsa.misc.rule_uid`*:: +*`cisco.umbrella.identities`*:: + -- -This key is the Unique Identifier for a rule. +An array of the different identities related to the event. + type: keyword -- -*`rsa.misc.trigger_desc`*:: +*`cisco.umbrella.categories`*:: + -- -This key captures the Description of the trigger or threshold condition. +The security or content categories that the destination matches. + type: keyword -- -*`rsa.misc.inout`*:: +*`cisco.umbrella.policy_identity_type`*:: + -- -type: keyword +The first identity type matched with this request. Available in version 3 and above. --- -*`rsa.misc.p_msgid`*:: -+ --- type: keyword -- -*`rsa.misc.data_type`*:: +*`cisco.umbrella.identity_types`*:: + -- -type: keyword +The type of identity that made the request. For example, Roaming Computer or Network. --- -*`rsa.misc.msgIdPart4`*:: -+ --- type: keyword -- -*`rsa.misc.error`*:: +*`cisco.umbrella.blocked_categories`*:: + -- -This key captures All non successful Error codes or responses +The categories that resulted in the destination being blocked. Available in version 4 and above. + type: keyword -- -*`rsa.misc.index`*:: +*`cisco.umbrella.content_type`*:: + -- +The type of web content, typically text/html. + + type: keyword -- -*`rsa.misc.listnum`*:: +*`cisco.umbrella.sha_sha256`*:: + -- -This key is used to capture listname or listnumber, primarily for collecting access-list +Hex digest of the response content. + type: keyword -- -*`rsa.misc.ntype`*:: +*`cisco.umbrella.av_detections`*:: + -- +The detection name according to the antivirus engine used in file inspection. + + type: keyword -- -*`rsa.misc.observed_val`*:: +*`cisco.umbrella.puas`*:: + -- -This key captures the Value observed (from the perspective of the device generating the log). +A list of all potentially unwanted application (PUA) results for the proxied file as returned by the antivirus scanner. + type: keyword -- -*`rsa.misc.policy_value`*:: +*`cisco.umbrella.amp_disposition`*:: + -- -This key captures the contents of the policy. This contains details about the policy +The status of the files proxied and scanned by Cisco Advanced Malware Protection (AMP) as part of the Umbrella File Inspection feature; can be Clean, Malicious or Unknown. + type: keyword -- -*`rsa.misc.pool_name`*:: +*`cisco.umbrella.amp_malware_name`*:: + -- -This key captures the name of a resource pool +If Malicious, the name of the malware according to AMP. + type: keyword -- -*`rsa.misc.rule_template`*:: +*`cisco.umbrella.amp_score`*:: + -- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template +The score of the malware from AMP. This field is not currently used and will be blank. + type: keyword -- -*`rsa.misc.count`*:: +*`cisco.umbrella.datacenter`*:: + -- -type: keyword +The name of the Umbrella Data Center that processed the user-generated traffic. --- -*`rsa.misc.number`*:: -+ --- type: keyword -- -*`rsa.misc.sigcat`*:: +*`cisco.umbrella.origin_id`*:: + -- -type: keyword +The unique identity of the network tunnel. --- -*`rsa.misc.type`*:: -+ --- type: keyword -- -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message +[[exported-fields-cloud]] +== Cloud provider metadata fields + +Metadata from cloud providers added by the add_cloud_metadata processor. -type: keyword --- -*`rsa.misc.doc_number`*:: +*`cloud.image.id`*:: + -- -This key captures File Identification number +Image ID for the cloud instance. -type: long + +example: ami-abcd1234 -- -*`rsa.misc.expected_val`*:: +*`meta.cloud.provider`*:: + -- -This key captures the Value expected (from the perspective of the device generating the log). +type: alias -type: keyword +alias to: cloud.provider -- -*`rsa.misc.job_num`*:: +*`meta.cloud.instance_id`*:: + -- -This key captures the Job Number +type: alias -type: keyword +alias to: cloud.instance.id -- -*`rsa.misc.spi_dst`*:: +*`meta.cloud.instance_name`*:: + -- -Destination SPI Index +type: alias -type: keyword +alias to: cloud.instance.name -- -*`rsa.misc.spi_src`*:: +*`meta.cloud.machine_type`*:: + -- -Source SPI Index +type: alias -type: keyword +alias to: cloud.machine.type -- -*`rsa.misc.code`*:: +*`meta.cloud.availability_zone`*:: + -- -type: keyword +type: alias + +alias to: cloud.availability_zone -- -*`rsa.misc.agent_id`*:: +*`meta.cloud.project_id`*:: + -- -This key is used to capture agent id +type: alias -type: keyword +alias to: cloud.project.id -- -*`rsa.misc.message_body`*:: +*`meta.cloud.region`*:: + -- -This key captures the The contents of the message body. +type: alias -type: keyword +alias to: cloud.region -- -*`rsa.misc.phone`*:: -+ --- -type: keyword +[[exported-fields-coredns]] +== Coredns fields --- +Module for handling logs produced by coredns -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. -type: keyword --- +[float] +=== coredns -*`rsa.misc.cmd`*:: -+ --- -type: keyword +coredns fields after normalization --- -*`rsa.misc.misc`*:: + +*`coredns.query.size`*:: + -- -type: keyword +size of the DNS query --- -*`rsa.misc.name`*:: -+ --- -type: keyword +type: integer + +format: bytes -- -*`rsa.misc.cpu`*:: +*`coredns.response.size`*:: + -- -This key is the CPU time used in the execution of the event being recorded. +size of the DNS response -type: long --- +type: integer + +format: bytes -*`rsa.misc.event_desc`*:: -+ -- -This key is used to capture a description of an event available directly or inferred -type: keyword +[[exported-fields-crowdstrike]] +== Crowdstrike fields --- +Module for collecting Crowdstrike events. -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id -type: long --- +[float] +=== crowdstrike -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword +Fields for Crowdstrike Falcon event and alert data. --- -*`rsa.misc.im_client`*:: -+ --- -type: keyword --- +[float] +=== metadata -*`rsa.misc.im_userid`*:: -+ --- -type: keyword +Meta data fields for each event that include type and timestamp. --- -*`rsa.misc.pid`*:: + +*`crowdstrike.metadata.eventType`*:: + -- -type: keyword +DetectionSummaryEvent, FirewallMatchEvent, IncidentSummaryEvent, RemoteResponseSessionStartEvent, RemoteResponseSessionEndEvent, AuthActivityAuditEvent, or UserActivityAuditEvent --- -*`rsa.misc.priority`*:: -+ --- type: keyword -- -*`rsa.misc.context_subject`*:: +*`crowdstrike.metadata.eventCreationTime`*:: + -- -This key is to be used in an audit context where the subject is the object being identified +The time this event occurred on the endpoint in UTC UNIX_MS format. -type: keyword + +type: date -- -*`rsa.misc.context_target`*:: +*`crowdstrike.metadata.offset`*:: + -- -type: keyword +Offset number that tracks the location of the event in stream. This is used to identify unique detection events. + + +type: integer -- -*`rsa.misc.cve`*:: +*`crowdstrike.metadata.customerIDString`*:: + -- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. +Customer identifier + type: keyword -- -*`rsa.misc.fcatnum`*:: +*`crowdstrike.metadata.version`*:: + -- -This key captures Filter Category Number. Legacy Usage +Schema version + type: keyword -- -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices +[float] +=== event + +Event data fields for each event and alert. -type: keyword --- -*`rsa.misc.parent_node`*:: +*`crowdstrike.event.ProcessStartTime`*:: + -- -This key captures the Parent Node Name. Must be related to node variable. +The process start time in UTC UNIX_MS format. -type: keyword + +type: date -- -*`rsa.misc.risk_info`*:: +*`crowdstrike.event.ProcessEndTime`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The process termination time in UTC UNIX_MS format. -type: keyword + +type: date -- -*`rsa.misc.tcp_flags`*:: +*`crowdstrike.event.ProcessId`*:: + -- -This key is captures the TCP flags set in any packet of session +Process ID related to the detection. -type: long + +type: integer -- -*`rsa.misc.tos`*:: +*`crowdstrike.event.ParentProcessId`*:: + -- -This key describes the type of service +Parent process ID related to the detection. -type: long + +type: integer -- -*`rsa.misc.vm_target`*:: +*`crowdstrike.event.ComputerName`*:: + -- -VMWare Target **VMWARE** only varaible. +Name of the computer where the detection occurred. + type: keyword -- -*`rsa.misc.workspace`*:: +*`crowdstrike.event.UserName`*:: + -- -This key captures Workspace Description +User name associated with the detection. + type: keyword -- -*`rsa.misc.command`*:: +*`crowdstrike.event.DetectName`*:: + -- +Name of the detection. + + type: keyword -- -*`rsa.misc.event_category`*:: +*`crowdstrike.event.DetectDescription`*:: + -- +Description of the detection. + + type: keyword -- -*`rsa.misc.facilityname`*:: +*`crowdstrike.event.Severity`*:: + -- -type: keyword +Severity score of the detection. + + +type: integer -- -*`rsa.misc.forensic_info`*:: +*`crowdstrike.event.SeverityName`*:: + -- +Severity score text. + + type: keyword -- -*`rsa.misc.jobname`*:: +*`crowdstrike.event.FileName`*:: + -- +File name of the associated process for the detection. + + type: keyword -- -*`rsa.misc.mode`*:: +*`crowdstrike.event.FilePath`*:: + -- +Path of the executable associated with the detection. + + type: keyword -- -*`rsa.misc.policy`*:: +*`crowdstrike.event.CommandLine`*:: + -- +Executable path with command line arguments. + + type: keyword -- -*`rsa.misc.policy_waiver`*:: +*`crowdstrike.event.SHA1String`*:: + -- +SHA1 sum of the executable associated with the detection. + + type: keyword -- -*`rsa.misc.second`*:: +*`crowdstrike.event.SHA256String`*:: + -- +SHA256 sum of the executable associated with the detection. + + type: keyword -- -*`rsa.misc.space1`*:: +*`crowdstrike.event.MD5String`*:: + -- +MD5 sum of the executable associated with the detection. + + type: keyword -- -*`rsa.misc.subcategory`*:: +*`crowdstrike.event.MachineDomain`*:: + -- +Domain for the machine associated with the detection. + + type: keyword -- -*`rsa.misc.tbdstr2`*:: +*`crowdstrike.event.FalconHostLink`*:: + -- +URL to view the detection in Falcon. + + type: keyword -- -*`rsa.misc.alert_id`*:: +*`crowdstrike.event.SensorId`*:: + -- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Unique ID associated with the Falcon sensor. + type: keyword -- -*`rsa.misc.checksum_dst`*:: +*`crowdstrike.event.DetectId`*:: + -- -This key is used to capture the checksum or hash of the the target entity such as a process or file. +Unique ID associated with the detection. + type: keyword -- -*`rsa.misc.checksum_src`*:: +*`crowdstrike.event.LocalIP`*:: + -- -This key is used to capture the checksum or hash of the source entity such as a file or process. +IP address of the host associated with the detection. + type: keyword -- -*`rsa.misc.fresult`*:: +*`crowdstrike.event.MACAddress`*:: + -- -This key captures the Filter Result +MAC address of the host associated with the detection. -type: long + +type: keyword -- -*`rsa.misc.payload_dst`*:: +*`crowdstrike.event.Tactic`*:: + -- -This key is used to capture destination payload +MITRE tactic category of the detection. + type: keyword -- -*`rsa.misc.payload_src`*:: +*`crowdstrike.event.Technique`*:: + -- -This key is used to capture source payload +MITRE technique category of the detection. + type: keyword -- -*`rsa.misc.pool_id`*:: +*`crowdstrike.event.Objective`*:: + -- -This key captures the identifier (typically numeric field) of a resource pool +Method of detection. + type: keyword -- -*`rsa.misc.process_id_val`*:: +*`crowdstrike.event.PatternDispositionDescription`*:: + -- -This key is a failure key for Process ID when it is not an integer value +Action taken by Falcon. + type: keyword -- -*`rsa.misc.risk_num_comm`*:: +*`crowdstrike.event.PatternDispositionValue`*:: + -- -This key captures Risk Number Community +Unique ID associated with action taken. -type: double + +type: integer -- -*`rsa.misc.risk_num_next`*:: +*`crowdstrike.event.PatternDispositionFlags`*:: + -- -This key captures Risk Number NextGen +Flags indicating actions taken. -type: double + +type: object -- -*`rsa.misc.risk_num_sand`*:: +*`crowdstrike.event.State`*:: + -- -This key captures Risk Number SandBox +Whether the incident summary is open and ongoing or closed. -type: double + +type: keyword -- -*`rsa.misc.risk_num_static`*:: +*`crowdstrike.event.IncidentStartTime`*:: + -- -This key captures Risk Number Static +Start time for the incident in UTC UNIX format. -type: double + +type: date -- -*`rsa.misc.risk_suspicious`*:: +*`crowdstrike.event.IncidentEndTime`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +End time for the incident in UTC UNIX format. -type: keyword + +type: date -- -*`rsa.misc.risk_warning`*:: +*`crowdstrike.event.FineScore`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Score for incident. -type: keyword + +type: float -- -*`rsa.misc.snmp_oid`*:: +*`crowdstrike.event.UserId`*:: + -- -SNMP Object Identifier +Email address or user ID associated with the event. + type: keyword -- -*`rsa.misc.sql`*:: +*`crowdstrike.event.UserIp`*:: + -- -This key captures the SQL query +IP address associated with the user. + type: keyword -- -*`rsa.misc.vuln_ref`*:: +*`crowdstrike.event.OperationName`*:: + -- -This key captures the Vulnerability Reference details +Event subtype. + type: keyword -- -*`rsa.misc.acl_id`*:: +*`crowdstrike.event.ServiceName`*:: + -- -type: keyword +Service associated with this event. --- -*`rsa.misc.acl_op`*:: -+ --- type: keyword -- -*`rsa.misc.acl_pos`*:: +*`crowdstrike.event.Success`*:: + -- -type: keyword +Indicator of whether or not this event was successful. --- -*`rsa.misc.acl_table`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.admin`*:: +*`crowdstrike.event.UTCTimestamp`*:: + -- -type: keyword +Timestamp associated with this event in UTC UNIX format. --- -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword +type: date -- -*`rsa.misc.alarmname`*:: +*`crowdstrike.event.AuditKeyValues`*:: + -- -type: keyword +Fields that were changed in this event. --- -*`rsa.misc.app_id`*:: -+ --- -type: keyword +type: nested -- -*`rsa.misc.audit`*:: +*`crowdstrike.event.ExecutablesWritten`*:: + -- -type: keyword +Detected executables written to disk by a process. + + +type: nested -- -*`rsa.misc.audit_object`*:: +*`crowdstrike.event.SessionId`*:: + -- +Session ID of the remote response session. + + type: keyword -- -*`rsa.misc.auditdata`*:: +*`crowdstrike.event.HostnameField`*:: + -- +Host name of the machine for the remote session. + + type: keyword -- -*`rsa.misc.benchmark`*:: +*`crowdstrike.event.StartTimestamp`*:: + -- -type: keyword +Start time for the remote session in UTC UNIX format. + + +type: date -- -*`rsa.misc.bypass`*:: +*`crowdstrike.event.EndTimestamp`*:: + -- -type: keyword +End time for the remote session in UTC UNIX format. + + +type: date -- -*`rsa.misc.cache`*:: +*`crowdstrike.event.LateralMovement`*:: + -- -type: keyword +Lateral movement field for incident. + + +type: long -- -*`rsa.misc.cache_hit`*:: +*`crowdstrike.event.ParentImageFileName`*:: + -- +Path to the parent process. + + type: keyword -- -*`rsa.misc.cefversion`*:: +*`crowdstrike.event.ParentCommandLine`*:: + -- +Parent process command line arguments. + + type: keyword -- -*`rsa.misc.cfg_attr`*:: +*`crowdstrike.event.GrandparentImageFileName`*:: + -- +Path to the grandparent process. + + type: keyword -- -*`rsa.misc.cfg_obj`*:: +*`crowdstrike.event.GrandparentCommandLine`*:: + -- +Grandparent process command line arguments. + + type: keyword -- -*`rsa.misc.cfg_path`*:: +*`crowdstrike.event.IOCType`*:: + -- +CrowdStrike type for indicator of compromise. + + type: keyword -- -*`rsa.misc.changes`*:: +*`crowdstrike.event.IOCValue`*:: + -- +CrowdStrike value for indicator of compromise. + + type: keyword -- -*`rsa.misc.client_ip`*:: +*`crowdstrike.event.CustomerId`*:: + -- +Customer identifier. + + type: keyword -- -*`rsa.misc.clustermembers`*:: +*`crowdstrike.event.DeviceId`*:: + -- +Device on which the event occurred. + + type: keyword -- -*`rsa.misc.cn_acttimeout`*:: +*`crowdstrike.event.Ipv`*:: + -- +Protocol for network request. + + type: keyword -- -*`rsa.misc.cn_asn_src`*:: +*`crowdstrike.event.ConnectionDirection`*:: + -- +Direction for network connection. + + type: keyword -- -*`rsa.misc.cn_bgpv4nxthop`*:: +*`crowdstrike.event.EventType`*:: + -- +CrowdStrike provided event type. + + type: keyword -- -*`rsa.misc.cn_ctr_dst_code`*:: +*`crowdstrike.event.HostName`*:: + -- +Host name of the local machine. + + type: keyword -- -*`rsa.misc.cn_dst_tos`*:: +*`crowdstrike.event.ICMPCode`*:: + -- +RFC2780 ICMP Code field. + + type: keyword -- -*`rsa.misc.cn_dst_vlan`*:: +*`crowdstrike.event.ICMPType`*:: + -- +RFC2780 ICMP Type field. + + type: keyword -- -*`rsa.misc.cn_engine_id`*:: +*`crowdstrike.event.ImageFileName`*:: + -- +File name of the associated process for the detection. + + type: keyword -- -*`rsa.misc.cn_engine_type`*:: +*`crowdstrike.event.PID`*:: + -- -type: keyword +Associated process id for the detection. --- -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.cn_flowsampid`*:: +*`crowdstrike.event.LocalAddress`*:: + -- -type: keyword +IP address of local machine. --- -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword +type: ip -- -*`rsa.misc.cn_flowsampmode`*:: +*`crowdstrike.event.LocalPort`*:: + -- -type: keyword +Port of local machine. --- -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.cn_inpermbyts`*:: +*`crowdstrike.event.RemoteAddress`*:: + -- -type: keyword +IP address of remote machine. --- -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword +type: ip -- -*`rsa.misc.cn_invalid`*:: +*`crowdstrike.event.RemotePort`*:: + -- -type: keyword +Port of remote machine. --- -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.cn_ipv4_ident`*:: +*`crowdstrike.event.RuleAction`*:: + -- -type: keyword +Firewall rule action. --- -*`rsa.misc.cn_l_switch`*:: -+ --- type: keyword -- -*`rsa.misc.cn_log_did`*:: +*`crowdstrike.event.RuleDescription`*:: + -- -type: keyword +Firewall rule description. --- -*`rsa.misc.cn_log_rid`*:: -+ --- type: keyword -- -*`rsa.misc.cn_max_ttl`*:: +*`crowdstrike.event.RuleFamilyID`*:: + -- -type: keyword +Firewall rule family id. --- -*`rsa.misc.cn_maxpcktlen`*:: -+ --- type: keyword -- -*`rsa.misc.cn_min_ttl`*:: +*`crowdstrike.event.RuleGroupName`*:: + -- -type: keyword +Firewall rule group name. --- -*`rsa.misc.cn_minpcktlen`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_1`*:: +*`crowdstrike.event.RuleName`*:: + -- -type: keyword +Firewall rule name. --- -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_2`*:: +*`crowdstrike.event.RuleId`*:: + -- -type: keyword +Firewall rule id. --- -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_4`*:: +*`crowdstrike.event.MatchCount`*:: + -- -type: keyword +Number of firewall rule matches. --- -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.cn_mpls_lbl_6`*:: +*`crowdstrike.event.MatchCountSinceLastReport`*:: + -- -type: keyword +Number of firewall rule matches since the last report. --- -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.cn_mpls_lbl_8`*:: +*`crowdstrike.event.Timestamp`*:: + -- -type: keyword +Firewall rule triggered timestamp. --- -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword +type: date -- -*`rsa.misc.cn_mplstoplabel`*:: +*`crowdstrike.event.Flags.Audit`*:: + -- -type: keyword +CrowdStrike audit flag. --- -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cn_mul_dst_byt`*:: +*`crowdstrike.event.Flags.Log`*:: + -- -type: keyword +CrowdStrike log flag. --- -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cn_muligmptype`*:: +*`crowdstrike.event.Flags.Monitor`*:: + -- -type: keyword +CrowdStrike monitor flag. --- -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cn_sampint`*:: +*`crowdstrike.event.Protocol`*:: + -- -type: keyword +CrowdStrike provided protocol. --- -*`rsa.misc.cn_seqctr`*:: -+ --- type: keyword -- -*`rsa.misc.cn_spackets`*:: +*`crowdstrike.event.NetworkProfile`*:: + -- -type: keyword +CrowdStrike network profile. --- -*`rsa.misc.cn_src_tos`*:: -+ --- type: keyword -- -*`rsa.misc.cn_src_vlan`*:: +*`crowdstrike.event.PolicyName`*:: + -- -type: keyword +CrowdStrike policy name. --- -*`rsa.misc.cn_sysuptime`*:: -+ --- type: keyword -- -*`rsa.misc.cn_template_id`*:: +*`crowdstrike.event.PolicyID`*:: + -- -type: keyword +CrowdStrike policy id. --- -*`rsa.misc.cn_totbytsexp`*:: -+ --- type: keyword -- -*`rsa.misc.cn_totflowexp`*:: +*`crowdstrike.event.Status`*:: + -- -type: keyword +CrowdStrike status. --- -*`rsa.misc.cn_totpcktsexp`*:: -+ --- type: keyword -- -*`rsa.misc.cn_unixnanosecs`*:: +*`crowdstrike.event.TreeID`*:: + -- -type: keyword +CrowdStrike tree id. --- -*`rsa.misc.cn_v6flowlabel`*:: -+ --- type: keyword -- -*`rsa.misc.cn_v6optheaders`*:: +*`crowdstrike.event.Commands`*:: + -- -type: keyword +Commands run in a remote session. --- -*`rsa.misc.comp_class`*:: -+ --- type: keyword -- -*`rsa.misc.comp_name`*:: -+ --- -type: keyword +[[exported-fields-cyberarkpas]] +== CyberArk PAS fields --- +cyberarkpas fields. -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword --- -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword --- +[float] +=== audit + +Cyberark Privileged Access Security Audit fields. -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword --- -*`rsa.misc.criticality`*:: +*`cyberarkpas.audit.action`*:: + -- +A description of the audit record. + type: keyword -- -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword +[float] +=== ca_properties --- +Account metadata. -*`rsa.misc.cs_analyzedby`*:: + +*`cyberarkpas.audit.ca_properties.address`*:: + -- type: keyword -- -*`rsa.misc.cs_av_other`*:: +*`cyberarkpas.audit.ca_properties.cpm_disabled`*:: + -- type: keyword -- -*`rsa.misc.cs_av_primary`*:: +*`cyberarkpas.audit.ca_properties.cpm_error_details`*:: + -- type: keyword -- -*`rsa.misc.cs_av_secondary`*:: +*`cyberarkpas.audit.ca_properties.cpm_status`*:: + -- type: keyword -- -*`rsa.misc.cs_bgpv6nxthop`*:: +*`cyberarkpas.audit.ca_properties.creation_method`*:: + -- type: keyword -- -*`rsa.misc.cs_bit9status`*:: +*`cyberarkpas.audit.ca_properties.customer`*:: + -- type: keyword -- -*`rsa.misc.cs_context`*:: +*`cyberarkpas.audit.ca_properties.database`*:: + -- type: keyword -- -*`rsa.misc.cs_control`*:: +*`cyberarkpas.audit.ca_properties.device_type`*:: + -- type: keyword -- -*`rsa.misc.cs_data`*:: +*`cyberarkpas.audit.ca_properties.dual_account_status`*:: + -- type: keyword -- -*`rsa.misc.cs_datecret`*:: +*`cyberarkpas.audit.ca_properties.group_name`*:: + -- type: keyword -- -*`rsa.misc.cs_dst_tld`*:: +*`cyberarkpas.audit.ca_properties.in_process`*:: + -- type: keyword -- -*`rsa.misc.cs_eth_dst_ven`*:: +*`cyberarkpas.audit.ca_properties.index`*:: + -- type: keyword -- -*`rsa.misc.cs_eth_src_ven`*:: +*`cyberarkpas.audit.ca_properties.last_fail_date`*:: + -- type: keyword -- -*`rsa.misc.cs_event_uuid`*:: +*`cyberarkpas.audit.ca_properties.last_success_change`*:: + -- type: keyword -- -*`rsa.misc.cs_filetype`*:: +*`cyberarkpas.audit.ca_properties.last_success_reconciliation`*:: + -- type: keyword -- -*`rsa.misc.cs_fld`*:: +*`cyberarkpas.audit.ca_properties.last_success_verification`*:: + -- type: keyword -- -*`rsa.misc.cs_if_desc`*:: +*`cyberarkpas.audit.ca_properties.last_task`*:: + -- type: keyword -- -*`rsa.misc.cs_if_name`*:: +*`cyberarkpas.audit.ca_properties.logon_domain`*:: + -- type: keyword -- -*`rsa.misc.cs_ip_next_hop`*:: +*`cyberarkpas.audit.ca_properties.policy_id`*:: + -- type: keyword -- -*`rsa.misc.cs_ipv4dstpre`*:: +*`cyberarkpas.audit.ca_properties.port`*:: + -- type: keyword -- -*`rsa.misc.cs_ipv4srcpre`*:: +*`cyberarkpas.audit.ca_properties.privcloud`*:: + -- type: keyword -- -*`rsa.misc.cs_lifetime`*:: +*`cyberarkpas.audit.ca_properties.reset_immediately`*:: + -- type: keyword -- -*`rsa.misc.cs_log_medium`*:: +*`cyberarkpas.audit.ca_properties.retries_count`*:: + -- type: keyword -- -*`rsa.misc.cs_loginname`*:: +*`cyberarkpas.audit.ca_properties.sequence_id`*:: + -- type: keyword -- -*`rsa.misc.cs_modulescore`*:: +*`cyberarkpas.audit.ca_properties.tags`*:: + -- type: keyword -- -*`rsa.misc.cs_modulesign`*:: +*`cyberarkpas.audit.ca_properties.user_dn`*:: + -- type: keyword -- -*`rsa.misc.cs_opswatresult`*:: +*`cyberarkpas.audit.ca_properties.user_name`*:: + -- type: keyword -- -*`rsa.misc.cs_payload`*:: +*`cyberarkpas.audit.ca_properties.virtual_username`*:: + -- type: keyword -- -*`rsa.misc.cs_registrant`*:: +*`cyberarkpas.audit.ca_properties.other`*:: + -- -type: keyword +type: flattened -- -*`rsa.misc.cs_registrar`*:: +*`cyberarkpas.audit.category`*:: + -- +The category name (for category-related operations). + type: keyword -- -*`rsa.misc.cs_represult`*:: +*`cyberarkpas.audit.desc`*:: + -- +A static value that displays a description of the audit codes. + type: keyword -- -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword +[float] +=== extra_details + +Specific extra details of the audit records. --- -*`rsa.misc.cs_sampler_name`*:: +*`cyberarkpas.audit.extra_details.ad_process_id`*:: + -- type: keyword -- -*`rsa.misc.cs_sourcemodule`*:: +*`cyberarkpas.audit.extra_details.ad_process_name`*:: + -- type: keyword -- -*`rsa.misc.cs_streams`*:: +*`cyberarkpas.audit.extra_details.application_type`*:: + -- type: keyword -- -*`rsa.misc.cs_targetmodule`*:: +*`cyberarkpas.audit.extra_details.command`*:: + -- type: keyword -- -*`rsa.misc.cs_v6nxthop`*:: +*`cyberarkpas.audit.extra_details.connection_component_id`*:: + -- type: keyword -- -*`rsa.misc.cs_whois_server`*:: +*`cyberarkpas.audit.extra_details.dst_host`*:: + -- type: keyword -- -*`rsa.misc.cs_yararesult`*:: +*`cyberarkpas.audit.extra_details.logon_account`*:: + -- type: keyword -- -*`rsa.misc.description`*:: +*`cyberarkpas.audit.extra_details.managed_account`*:: + -- type: keyword -- -*`rsa.misc.devvendor`*:: +*`cyberarkpas.audit.extra_details.process_id`*:: + -- type: keyword -- -*`rsa.misc.distance`*:: +*`cyberarkpas.audit.extra_details.process_name`*:: + -- type: keyword -- -*`rsa.misc.dstburb`*:: +*`cyberarkpas.audit.extra_details.protocol`*:: + -- type: keyword -- -*`rsa.misc.edomain`*:: +*`cyberarkpas.audit.extra_details.psmid`*:: + -- type: keyword -- -*`rsa.misc.edomaub`*:: +*`cyberarkpas.audit.extra_details.session_duration`*:: + -- type: keyword -- -*`rsa.misc.euid`*:: +*`cyberarkpas.audit.extra_details.session_id`*:: + -- type: keyword -- -*`rsa.misc.facility`*:: +*`cyberarkpas.audit.extra_details.src_host`*:: + -- type: keyword -- -*`rsa.misc.finterface`*:: +*`cyberarkpas.audit.extra_details.username`*:: + -- type: keyword -- -*`rsa.misc.flags`*:: +*`cyberarkpas.audit.extra_details.other`*:: + -- -type: keyword +type: flattened -- -*`rsa.misc.gaddr`*:: +*`cyberarkpas.audit.file`*:: + -- +The name of the target file. + type: keyword -- -*`rsa.misc.id3`*:: +*`cyberarkpas.audit.gateway_station`*:: + -- -type: keyword +The IP of the web application machine (PVWA). + +type: ip -- -*`rsa.misc.im_buddyname`*:: +*`cyberarkpas.audit.hostname`*:: + -- +The hostname, in upper case. + type: keyword +example: MY-COMPUTER + -- -*`rsa.misc.im_croomid`*:: +*`cyberarkpas.audit.iso_timestamp`*:: + -- -type: keyword +The timestamp, in ISO Timestamp format (RFC 3339). --- +type: date -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword +example: 2013-06-25 10:47:19+00:00 -- -*`rsa.misc.im_members`*:: +*`cyberarkpas.audit.issuer`*:: + -- +The Vault user who wrote the audit. This is usually the user who performed the operation. + type: keyword -- -*`rsa.misc.im_username`*:: +*`cyberarkpas.audit.location`*:: + -- +The target Location (for Location operations). + type: keyword +Field is not indexed. + -- -*`rsa.misc.ipkt`*:: +*`cyberarkpas.audit.message`*:: + -- +A description of the audit records (same information as in the Desc field). + type: keyword -- -*`rsa.misc.ipscat`*:: +*`cyberarkpas.audit.message_id`*:: + -- +The code ID of the audit records. + type: keyword -- -*`rsa.misc.ipspri`*:: +*`cyberarkpas.audit.product`*:: + -- +A static value that represents the product. + type: keyword -- -*`rsa.misc.latitude`*:: +*`cyberarkpas.audit.pvwa_details`*:: + -- -type: keyword +Specific details of the PVWA audit records. + +type: flattened -- -*`rsa.misc.linenum`*:: +*`cyberarkpas.audit.raw`*:: + -- -type: keyword +Raw XML for the original audit record. Only present when XSLT file has debugging enabled. --- -*`rsa.misc.list_name`*:: -+ --- type: keyword +Field is not indexed. + -- -*`rsa.misc.load_data`*:: +*`cyberarkpas.audit.reason`*:: + -- -type: keyword +The reason entered by the user. + +type: text -- -*`rsa.misc.location_floor`*:: +*`cyberarkpas.audit.rfc5424`*:: + -- -type: keyword +Whether the syslog format complies with RFC5424. --- +type: boolean -*`rsa.misc.location_mark`*:: -+ --- -type: keyword +example: True -- -*`rsa.misc.log_id`*:: +*`cyberarkpas.audit.safe`*:: + -- +The name of the target Safe. + type: keyword -- -*`rsa.misc.log_type`*:: +*`cyberarkpas.audit.severity`*:: + -- +The severity of the audit records. + type: keyword -- -*`rsa.misc.logid`*:: +*`cyberarkpas.audit.source_user`*:: + -- +The name of the Vault user who performed the operation. + type: keyword -- -*`rsa.misc.logip`*:: +*`cyberarkpas.audit.station`*:: + -- -type: keyword +The IP from where the operation was performed. For PVWA sessions, this will be the real client machine IP. + +type: ip -- -*`rsa.misc.logname`*:: +*`cyberarkpas.audit.target_user`*:: + -- +The name of the Vault user on which the operation was performed. + type: keyword -- -*`rsa.misc.longitude`*:: +*`cyberarkpas.audit.timestamp`*:: + -- +The timestamp, in MMM DD HH:MM:SS format. + type: keyword +example: Jun 25 10:47:19 + -- -*`rsa.misc.lport`*:: +*`cyberarkpas.audit.vendor`*:: + -- +A static value that represents the vendor. + type: keyword -- -*`rsa.misc.mbug_data`*:: +*`cyberarkpas.audit.version`*:: + -- +A static value that represents the version of the Vault. + type: keyword -- -*`rsa.misc.misc_name`*:: -+ --- -type: keyword +[[exported-fields-docker-processor]] +== Docker fields --- +Docker stats collected from Docker. -*`rsa.misc.msg_type`*:: -+ --- -type: keyword --- -*`rsa.misc.msgid`*:: + +*`docker.container.id`*:: + -- -type: keyword +type: alias + +alias to: container.id -- -*`rsa.misc.netsessid`*:: +*`docker.container.image`*:: + -- -type: keyword +type: alias + +alias to: container.image.name -- -*`rsa.misc.num`*:: +*`docker.container.name`*:: + -- -type: keyword +type: alias + +alias to: container.name -- -*`rsa.misc.number1`*:: +*`docker.container.labels`*:: + -- -type: keyword +Image labels. --- -*`rsa.misc.number2`*:: -+ --- -type: keyword +type: object -- -*`rsa.misc.nwwn`*:: -+ --- -type: keyword +[[exported-fields-ecs]] +== ECS fields --- -*`rsa.misc.object`*:: -+ --- -type: keyword +This section defines Elastic Common Schema (ECS) fields—a common set of fields +to be used when storing event data in {es}. --- +This is an exhaustive list, and fields listed here are not necessarily used by {beatname_uc}. +The goal of ECS is to enable and encourage users of {es} to normalize their event data, +so that they can better analyze, visualize, and correlate the data represented in their events. + +See the {ecs-ref}[ECS reference] for more information. -*`rsa.misc.operation`*:: +*`@timestamp`*:: + -- -type: keyword +Date/time when the event originated. +This is the date/time extracted from the event, typically representing when the event was generated by the source. +If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. +Required field for all events. --- +type: date -*`rsa.misc.opkt`*:: -+ --- -type: keyword +example: 2016-05-23T08:05:34.853Z + +required: True -- -*`rsa.misc.orig_from`*:: +*`labels`*:: + -- -type: keyword +Custom key/value pairs. +Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. +Example: `docker` and `k8s` labels. --- +type: object -*`rsa.misc.owner_id`*:: -+ --- -type: keyword +example: {"application": "foo-bar", "env": "production"} -- -*`rsa.misc.p_action`*:: +*`message`*:: + -- -type: keyword +For log events the message field contains the log message, optimized for viewing in a log viewer. +For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. +If multiple messages exist, they can be combined into one message. + +type: match_only_text + +example: Hello World -- -*`rsa.misc.p_filter`*:: +*`tags`*:: + -- +List of keywords used to tag each event. + type: keyword +example: ["production", "env2"] + -- -*`rsa.misc.p_group_object`*:: +[float] +=== agent + +The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. +Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. + + +*`agent.build.original`*:: + -- +Extended build information for the agent. +This field is intended to contain any build information that a data source may provide, no specific formatting is required. + type: keyword +example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] + -- -*`rsa.misc.p_id`*:: +*`agent.ephemeral_id`*:: + -- +Ephemeral identifier of this agent (if one exists). +This id normally changes across restarts, but `agent.id` does not. + type: keyword +example: 8a4f500f + -- -*`rsa.misc.p_msgid1`*:: +*`agent.id`*:: + -- +Unique identifier of this agent (if one exists). +Example: For Beats this would be beat.id. + type: keyword +example: 8a4f500d + -- -*`rsa.misc.p_msgid2`*:: +*`agent.name`*:: + -- +Custom name of the agent. +This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. +If no name is given, the name is often left empty. + type: keyword +example: foo + -- -*`rsa.misc.p_result1`*:: +*`agent.type`*:: + -- +Type of the agent. +The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. + type: keyword +example: filebeat + -- -*`rsa.misc.password_chg`*:: +*`agent.version`*:: + -- +Version of the agent. + type: keyword +example: 6.0.0-rc2 + -- -*`rsa.misc.password_expire`*:: +[float] +=== as + +An autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the internet. + + +*`as.number`*:: + -- -type: keyword +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. + +type: long + +example: 15169 -- -*`rsa.misc.permgranted`*:: +*`as.organization.name`*:: + -- +Organization name. + type: keyword +example: Google LLC + -- -*`rsa.misc.permwanted`*:: +*`as.organization.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- +[float] +=== client -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword +A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. --- -*`rsa.misc.prog_asp_num`*:: +*`client.address`*:: + -- +Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. + type: keyword -- -*`rsa.misc.program`*:: +*`client.as.number`*:: + -- -type: keyword +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. --- +type: long -*`rsa.misc.real_data`*:: -+ --- -type: keyword +example: 15169 -- -*`rsa.misc.rec_asp_device`*:: +*`client.as.organization.name`*:: + -- +Organization name. + type: keyword +example: Google LLC + -- -*`rsa.misc.rec_asp_num`*:: +*`client.as.organization.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.rec_library`*:: +*`client.bytes`*:: + -- -type: keyword +Bytes sent from the client to the server. --- +type: long -*`rsa.misc.recordnum`*:: -+ --- -type: keyword +example: 184 + +format: bytes -- -*`rsa.misc.ruid`*:: +*`client.domain`*:: + -- +The domain name of the client system. +This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. + type: keyword +example: foo.example.com + -- -*`rsa.misc.sburb`*:: +*`client.geo.city_name`*:: + -- +City name. + type: keyword +example: Montreal + -- -*`rsa.misc.sdomain_fld`*:: +*`client.geo.continent_code`*:: + -- +Two-letter code representing continent's name. + type: keyword +example: NA + -- -*`rsa.misc.sec`*:: +*`client.geo.continent_name`*:: + -- +Name of the continent. + type: keyword +example: North America + -- -*`rsa.misc.sensorname`*:: +*`client.geo.country_iso_code`*:: + -- +Country ISO code. + type: keyword +example: CA + -- -*`rsa.misc.seqnum`*:: +*`client.geo.country_name`*:: + -- +Country name. + type: keyword +example: Canada + -- -*`rsa.misc.session`*:: +*`client.geo.location`*:: + -- -type: keyword +Longitude and latitude. --- +type: geo_point -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`rsa.misc.sigUUID`*:: +*`client.geo.name`*:: + -- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + type: keyword +example: boston-dc + -- -*`rsa.misc.spi`*:: +*`client.geo.postal_code`*:: + -- +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + type: keyword +example: 94040 + -- -*`rsa.misc.srcburb`*:: +*`client.geo.region_iso_code`*:: + -- +Region ISO code. + type: keyword +example: CA-QC + -- -*`rsa.misc.srcdom`*:: +*`client.geo.region_name`*:: + -- +Region name. + type: keyword +example: Quebec + -- -*`rsa.misc.srcservice`*:: +*`client.geo.timezone`*:: + -- +The time zone of the location, such as IANA time zone name. + type: keyword +example: America/Argentina/Buenos_Aires + -- -*`rsa.misc.state`*:: +*`client.ip`*:: + -- -type: keyword +IP address of the client (IPv4 or IPv6). + +type: ip -- -*`rsa.misc.status1`*:: +*`client.mac`*:: + -- +MAC address of the client. +The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. + type: keyword +example: 00-00-5E-00-53-23 + -- -*`rsa.misc.svcno`*:: +*`client.nat.ip`*:: + -- -type: keyword +Translated IP of source based NAT sessions (e.g. internal client to internet). +Typically connections traversing load balancers, firewalls, or routers. + +type: ip -- -*`rsa.misc.system`*:: +*`client.nat.port`*:: + -- -type: keyword +Translated port of source based NAT sessions (e.g. internal client to internet). +Typically connections traversing load balancers, firewalls, or routers. --- +type: long -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword +format: string -- -*`rsa.misc.tgtdom`*:: +*`client.packets`*:: + -- -type: keyword +Packets sent from the client to the server. --- +type: long -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword +example: 12 -- -*`rsa.misc.threshold`*:: +*`client.port`*:: + -- -type: keyword +Port of the client. --- +type: long -*`rsa.misc.type1`*:: -+ --- -type: keyword +format: string -- -*`rsa.misc.udb_class`*:: +*`client.registered_domain`*:: + -- +The highest registered client domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". + type: keyword +example: example.com + -- -*`rsa.misc.url_fld`*:: +*`client.subdomain`*:: + -- +The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. + type: keyword +example: east + -- -*`rsa.misc.user_div`*:: +*`client.top_level_domain`*:: + -- +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". + type: keyword +example: co.uk + -- -*`rsa.misc.userid`*:: +*`client.user.domain`*:: + -- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.username_fld`*:: +*`client.user.email`*:: + -- +User email address. + type: keyword -- -*`rsa.misc.utcstamp`*:: +*`client.user.full_name`*:: + -- +User's full name, if available. + type: keyword +example: Albert Einstein + -- -*`rsa.misc.v_instafname`*:: +*`client.user.full_name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.virt_data`*:: +*`client.user.group.domain`*:: + -- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.vpnid`*:: +*`client.user.group.id`*:: + -- +Unique identifier for the group on the system/platform. + type: keyword -- -*`rsa.misc.autorun_type`*:: +*`client.user.group.name`*:: + -- -This is used to capture Auto Run type +Name of the group. type: keyword -- -*`rsa.misc.cc_number`*:: +*`client.user.hash`*:: + -- -Valid Credit Card Numbers only +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. -type: long +type: keyword -- -*`rsa.misc.content`*:: +*`client.user.id`*:: + -- -This key captures the content type from protocol headers +Unique identifier of the user. type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`rsa.misc.ein_number`*:: +*`client.user.name`*:: + -- -Employee Identification Numbers only +Short name or login of the user. -type: long +type: keyword + +example: a.einstein -- -*`rsa.misc.found`*:: +*`client.user.name.text`*:: + -- -This is used to capture the results of regex match - -type: keyword +type: match_only_text -- -*`rsa.misc.language`*:: +*`client.user.roles`*:: + -- -This is used to capture list of languages the client support and what it prefers +Array of user roles at the time of the event. type: keyword --- +example: ["kibana_admin", "reporting_user"] -*`rsa.misc.lifetime`*:: -+ -- -This key is used to capture the session lifetime in seconds. -type: long +[float] +=== cloud + +Fields related to the cloud or infrastructure the events are coming from. --- -*`rsa.misc.link`*:: +*`cloud.account.id`*:: + -- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. type: keyword +example: 666777888999 + -- -*`rsa.misc.match`*:: +*`cloud.account.name`*:: + -- -This key is for regex match name from search.ini +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. type: keyword +example: elastic-dev + -- -*`rsa.misc.param_dst`*:: +*`cloud.availability_zone`*:: + -- -This key captures the command line/launch argument of the target process or file +Availability zone in which this host, resource, or service is located. type: keyword +example: us-east-1c + -- -*`rsa.misc.param_src`*:: +*`cloud.instance.id`*:: + -- -This key captures source parameter +Instance ID of the host machine. type: keyword +example: i-1234567890abcdef0 + -- -*`rsa.misc.search_text`*:: +*`cloud.instance.name`*:: + -- -This key captures the Search Text used +Instance name of the host machine. type: keyword -- -*`rsa.misc.sig_name`*:: +*`cloud.machine.type`*:: + -- -This key is used to capture the Signature Name only. +Machine type of the host machine. type: keyword +example: t2.medium + -- -*`rsa.misc.snmp_value`*:: +*`cloud.origin.account.id`*:: + -- -SNMP set request value +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. type: keyword +example: 666777888999 + -- -*`rsa.misc.streams`*:: +*`cloud.origin.account.name`*:: + -- -This key captures number of streams in session +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. -type: long +type: keyword --- +example: elastic-dev +-- -*`rsa.db.index`*:: +*`cloud.origin.availability_zone`*:: + -- -This key captures IndexID of the index. +Availability zone in which this host, resource, or service is located. type: keyword +example: us-east-1c + -- -*`rsa.db.instance`*:: +*`cloud.origin.instance.id`*:: + -- -This key is used to capture the database server instance name +Instance ID of the host machine. type: keyword +example: i-1234567890abcdef0 + -- -*`rsa.db.database`*:: +*`cloud.origin.instance.name`*:: + -- -This key is used to capture the name of a database or an instance as seen in a session +Instance name of the host machine. type: keyword -- -*`rsa.db.transact_id`*:: +*`cloud.origin.machine.type`*:: + -- -This key captures the SQL transantion ID of the current session +Machine type of the host machine. type: keyword +example: t2.medium + -- -*`rsa.db.permissions`*:: +*`cloud.origin.project.id`*:: + -- -This key captures permission or privilege level assigned to a resource. +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. type: keyword +example: my-project + -- -*`rsa.db.table_name`*:: +*`cloud.origin.project.name`*:: + -- -This key is used to capture the table name +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. type: keyword +example: my project + -- -*`rsa.db.db_id`*:: +*`cloud.origin.provider`*:: + -- -This key is used to capture the unique identifier for a database +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. type: keyword +example: aws + -- -*`rsa.db.db_pid`*:: +*`cloud.origin.region`*:: + -- -This key captures the process id of a connection with database server +Region in which this host, resource, or service is located. -type: long +type: keyword + +example: us-east-1 -- -*`rsa.db.lread`*:: +*`cloud.origin.service.name`*:: + -- -This key is used for the number of logical reads +The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server. +Examples: app engine, app service, cloud run, fargate, lambda. -type: long +type: keyword + +example: lambda -- -*`rsa.db.lwrite`*:: +*`cloud.project.id`*:: + -- -This key is used for the number of logical writes +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. -type: long +type: keyword + +example: my-project -- -*`rsa.db.pread`*:: +*`cloud.project.name`*:: + -- -This key is used for the number of physical writes +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. -type: long +type: keyword --- +example: my project +-- -*`rsa.network.alias_host`*:: +*`cloud.provider`*:: + -- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. type: keyword +example: aws + -- -*`rsa.network.domain`*:: +*`cloud.region`*:: + -- +Region in which this host, resource, or service is located. + type: keyword +example: us-east-1 + -- -*`rsa.network.host_dst`*:: +*`cloud.service.name`*:: + -- -This key should only be used when it’s a Destination Hostname +The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server. +Examples: app engine, app service, cloud run, fargate, lambda. type: keyword +example: lambda + -- -*`rsa.network.network_service`*:: +*`cloud.target.account.id`*:: + -- -This is used to capture layer 7 protocols/service names +The cloud account or organization id used to identify different entities in a multi-tenant environment. +Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. type: keyword +example: 666777888999 + -- -*`rsa.network.interface`*:: +*`cloud.target.account.name`*:: + -- -This key should be used when the source or destination context of an interface is not clear +The cloud account name or alias used to identify different entities in a multi-tenant environment. +Examples: AWS account name, Google Cloud ORG display name. type: keyword +example: elastic-dev + -- -*`rsa.network.network_port`*:: +*`cloud.target.availability_zone`*:: + -- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) +Availability zone in which this host, resource, or service is located. -type: long +type: keyword + +example: us-east-1c -- -*`rsa.network.eth_host`*:: +*`cloud.target.instance.id`*:: + -- -Deprecated, use alias.mac +Instance ID of the host machine. type: keyword +example: i-1234567890abcdef0 + -- -*`rsa.network.sinterface`*:: +*`cloud.target.instance.name`*:: + -- -This key should only be used when it’s a Source Interface +Instance name of the host machine. type: keyword -- -*`rsa.network.dinterface`*:: +*`cloud.target.machine.type`*:: + -- -This key should only be used when it’s a Destination Interface +Machine type of the host machine. type: keyword +example: t2.medium + -- -*`rsa.network.vlan`*:: +*`cloud.target.project.id`*:: + -- -This key should only be used to capture the ID of the Virtual LAN +The cloud project identifier. +Examples: Google Cloud Project id, Azure Project id. -type: long +type: keyword + +example: my-project -- -*`rsa.network.zone_src`*:: +*`cloud.target.project.name`*:: + -- -This key should only be used when it’s a Source Zone. +The cloud project name. +Examples: Google Cloud Project name, Azure Project name. type: keyword +example: my project + -- -*`rsa.network.zone`*:: +*`cloud.target.provider`*:: + -- -This key should be used when the source or destination context of a Zone is not clear +Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. type: keyword +example: aws + -- -*`rsa.network.zone_dst`*:: +*`cloud.target.region`*:: + -- -This key should only be used when it’s a Destination Zone. +Region in which this host, resource, or service is located. type: keyword +example: us-east-1 + -- -*`rsa.network.gateway`*:: +*`cloud.target.service.name`*:: + -- -This key is used to capture the IP Address of the gateway +The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server. +Examples: app engine, app service, cloud run, fargate, lambda. type: keyword --- +example: lambda -*`rsa.network.icmp_type`*:: -+ -- -This key is used to capture the ICMP type only -type: long +[float] +=== code_signature --- +These fields contain information about binary code signatures. -*`rsa.network.mask`*:: + +*`code_signature.digest_algorithm`*:: + -- -This key is used to capture the device network IPmask. +The hashing algorithm used to sign the process. +This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. type: keyword +example: sha256 + -- -*`rsa.network.icmp_code`*:: +*`code_signature.exists`*:: + -- -This key is used to capture the ICMP code only +Boolean to capture if a signature is present. -type: long +type: boolean + +example: true -- -*`rsa.network.protocol_detail`*:: +*`code_signature.signing_id`*:: + -- -This key should be used to capture additional protocol information +The identifier used to sign the process. +This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. type: keyword +example: com.apple.xpc.proxy + -- -*`rsa.network.dmask`*:: +*`code_signature.status`*:: + -- -This key is used for Destionation Device network mask +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long +example: ERROR_UNTRUSTED_ROOT -- -*`rsa.network.smask`*:: +*`code_signature.subject_name`*:: + -- -This key is used for capturing source Network Mask +Subject name of the code signer type: keyword +example: Microsoft Corporation + -- -*`rsa.network.netname`*:: +*`code_signature.team_id`*:: + -- -This key is used to capture the network name associated with an IP range. This is configured by the end user. +The team identifier used to sign the process. +This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. type: keyword +example: EQHXZ8M8AV + -- -*`rsa.network.paddr`*:: +*`code_signature.timestamp`*:: + -- -Deprecated +Date and time when the code signature was generated and signed. -type: ip +type: date + +example: 2021-01-01T12:10:30Z -- -*`rsa.network.faddr`*:: +*`code_signature.trusted`*:: + -- -type: keyword +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. --- +type: boolean -*`rsa.network.lhost`*:: -+ --- -type: keyword +example: true -- -*`rsa.network.origin`*:: +*`code_signature.valid`*:: + -- -type: keyword +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. --- +type: boolean -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword +example: true -- -*`rsa.network.addr`*:: +[float] +=== container + +Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. + + +*`container.cpu.usage`*:: + -- -type: keyword +Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. Scaling factor: 1000. + +type: scaled_float -- -*`rsa.network.dns_a_record`*:: +*`container.disk.read.bytes`*:: + -- -type: keyword +The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection. + +type: long -- -*`rsa.network.dns_ptr_record`*:: +*`container.disk.write.bytes`*:: + -- -type: keyword +The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection. + +type: long -- -*`rsa.network.fhost`*:: +*`container.id`*:: + -- +Unique container id. + type: keyword -- -*`rsa.network.fport`*:: +*`container.image.name`*:: + -- +Name of the image the container was built on. + type: keyword -- -*`rsa.network.laddr`*:: +*`container.image.tag`*:: + -- +Container image tags. + type: keyword -- -*`rsa.network.linterface`*:: +*`container.labels`*:: + -- -type: keyword +Image labels. + +type: object -- -*`rsa.network.phost`*:: +*`container.memory.usage`*:: + -- -type: keyword +Memory usage percentage and it ranges from 0 to 1. Scaling factor: 1000. + +type: scaled_float -- -*`rsa.network.ad_computer_dst`*:: +*`container.name`*:: + -- -Deprecated, use host.dst +Container name. type: keyword -- -*`rsa.network.eth_type`*:: +*`container.network.egress.bytes`*:: + -- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only +The number of bytes (gauge) sent out on all network interfaces by the container since the last metric collection. type: long -- -*`rsa.network.ip_proto`*:: +*`container.network.ingress.bytes`*:: + -- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI +The number of bytes received (gauge) on all network interfaces by the container since the last metric collection. type: long -- -*`rsa.network.dns_cname_record`*:: +*`container.runtime`*:: + -- +Runtime managing this container. + type: keyword --- +example: docker -*`rsa.network.dns_id`*:: -+ -- -type: keyword --- +[float] +=== data_stream -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword +The data_stream fields take part in defining the new data stream naming scheme. +In the new data stream naming scheme the value of the data stream fields combine to the name of the actual data stream in the following manner: `{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. This means the fields can only contain characters that are valid as part of names of data streams. More details about this can be found in this https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme[blog post]. +An Elasticsearch data stream consists of one or more backing indices, and a data stream name forms part of the backing indices names. Due to this convention, data streams must also follow index naming restrictions. For example, data stream names cannot include `\`, `/`, `*`, `?`, `"`, `<`, `>`, `|`, ` ` (space character), `,`, or `#`. Please see the Elasticsearch reference for additional https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params[restrictions]. --- -*`rsa.network.dns_resp`*:: +*`data_stream.dataset`*:: + -- -type: keyword +The field can contain anything that makes sense to signify the source of the data. +Examples include `nginx.access`, `prometheus`, `endpoint` etc. For data streams that otherwise fit, but that do not have dataset set we use the value "generic" for the dataset value. `event.dataset` should have the same value as `data_stream.dataset`. +Beyond the Elasticsearch data stream naming criteria noted above, the `dataset` value has additional restrictions: + * Must not contain `-` + * No longer than 100 characters --- +type: constant_keyword -*`rsa.network.dns_type`*:: -+ --- -type: keyword +example: nginx.access -- -*`rsa.network.domain1`*:: +*`data_stream.namespace`*:: + -- -type: keyword +A user defined namespace. Namespaces are useful to allow grouping of data. +Many users already organize their indices this way, and the data stream naming scheme now provides this best practice as a default. Many users will populate this field with `default`. If no value is used, it falls back to `default`. +Beyond the Elasticsearch index naming criteria noted above, `namespace` value has the additional restrictions: + * Must not contain `-` + * No longer than 100 characters --- +type: constant_keyword -*`rsa.network.host_type`*:: -+ --- -type: keyword +example: production -- -*`rsa.network.packet_length`*:: +*`data_stream.type`*:: + -- -type: keyword +An overarching type for the data stream. +Currently allowed values are "logs" and "metrics". We expect to also add "traces" and "synthetics" in the near future. + +type: constant_keyword + +example: logs -- -*`rsa.network.host_orig`*:: +[float] +=== destination + +Destination fields capture details about the receiver of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction. +Destination fields are usually populated in conjunction with source fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated. + + +*`destination.address`*:: + -- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. +Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. type: keyword -- -*`rsa.network.rpayload`*:: +*`destination.as.number`*:: + -- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. -type: keyword +type: long + +example: 15169 -- -*`rsa.network.vlan_name`*:: +*`destination.as.organization.name`*:: + -- -This key should only be used to capture the name of the Virtual LAN +Organization name. type: keyword --- +example: Google LLC +-- -*`rsa.investigations.ec_activity`*:: +*`destination.as.organization.name.text`*:: + -- -This key captures the particular event activity(Ex:Logoff) - -type: keyword +type: match_only_text -- -*`rsa.investigations.ec_theme`*:: +*`destination.bytes`*:: + -- -This key captures the Theme of a particular Event(Ex:Authentication) +Bytes sent from the destination to the source. -type: keyword +type: long + +example: 184 + +format: bytes -- -*`rsa.investigations.ec_subject`*:: +*`destination.domain`*:: + -- -This key captures the Subject of a particular Event(Ex:User) +The domain name of the destination system. +This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. type: keyword +example: foo.example.com + -- -*`rsa.investigations.ec_outcome`*:: +*`destination.geo.city_name`*:: + -- -This key captures the outcome of a particular Event(Ex:Success) +City name. type: keyword +example: Montreal + -- -*`rsa.investigations.event_cat`*:: +*`destination.geo.continent_code`*:: + -- -This key captures the Event category number +Two-letter code representing continent's name. -type: long +type: keyword + +example: NA -- -*`rsa.investigations.event_cat_name`*:: +*`destination.geo.continent_name`*:: + -- -This key captures the event category name corresponding to the event cat code +Name of the continent. type: keyword +example: North America + -- -*`rsa.investigations.event_vcat`*:: +*`destination.geo.country_iso_code`*:: + -- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. +Country ISO code. type: keyword +example: CA + -- -*`rsa.investigations.analysis_file`*:: +*`destination.geo.country_name`*:: + -- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file +Country name. type: keyword +example: Canada + -- -*`rsa.investigations.analysis_service`*:: +*`destination.geo.location`*:: + -- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service +Longitude and latitude. -type: keyword +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`rsa.investigations.analysis_session`*:: +*`destination.geo.name`*:: + -- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`rsa.investigations.boc`*:: +*`destination.geo.postal_code`*:: + -- -This is used to capture behaviour of compromise +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. type: keyword +example: 94040 + -- -*`rsa.investigations.eoc`*:: +*`destination.geo.region_iso_code`*:: + -- -This is used to capture Enablers of Compromise +Region ISO code. type: keyword +example: CA-QC + -- -*`rsa.investigations.inv_category`*:: +*`destination.geo.region_name`*:: + -- -This used to capture investigation category +Region name. type: keyword +example: Quebec + -- -*`rsa.investigations.inv_context`*:: +*`destination.geo.timezone`*:: + -- -This used to capture investigation context +The time zone of the location, such as IANA time zone name. type: keyword +example: America/Argentina/Buenos_Aires + -- -*`rsa.investigations.ioc`*:: +*`destination.ip`*:: + -- -This is key capture indicator of compromise +IP address of the destination (IPv4 or IPv6). -type: keyword +type: ip -- - -*`rsa.counters.dclass_c1`*:: +*`destination.mac`*:: + -- -This is a generic counter key that should be used with the label dclass.c1.str only +MAC address of the destination. +The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. -type: long +type: keyword + +example: 00-00-5E-00-53-23 -- -*`rsa.counters.dclass_c2`*:: +*`destination.nat.ip`*:: + -- -This is a generic counter key that should be used with the label dclass.c2.str only +Translated ip of destination based NAT sessions (e.g. internet to private DMZ) +Typically used with load balancers, firewalls, or routers. -type: long +type: ip -- -*`rsa.counters.event_counter`*:: +*`destination.nat.port`*:: + -- -This is used to capture the number of times an event repeated +Port the source session is translated to by NAT Device. +Typically used with load balancers, firewalls, or routers. type: long +format: string + -- -*`rsa.counters.dclass_r1`*:: +*`destination.packets`*:: + -- -This is a generic ratio key that should be used with the label dclass.r1.str only +Packets sent from the destination to the source. -type: keyword +type: long + +example: 12 -- -*`rsa.counters.dclass_c3`*:: +*`destination.port`*:: + -- -This is a generic counter key that should be used with the label dclass.c3.str only +Port of the destination. type: long +format: string + -- -*`rsa.counters.dclass_c1_str`*:: +*`destination.registered_domain`*:: + -- -This is a generic counter string key that should be used with the label dclass.c1 only +The highest registered destination domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword +example: example.com + -- -*`rsa.counters.dclass_c2_str`*:: +*`destination.subdomain`*:: + -- -This is a generic counter string key that should be used with the label dclass.c2 only +The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. type: keyword +example: east + -- -*`rsa.counters.dclass_r1_str`*:: +*`destination.top_level_domain`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r1 only +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword +example: co.uk + -- -*`rsa.counters.dclass_r2`*:: +*`destination.user.domain`*:: + -- -This is a generic ratio key that should be used with the label dclass.r2.str only +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`rsa.counters.dclass_c3_str`*:: +*`destination.user.email`*:: + -- -This is a generic counter string key that should be used with the label dclass.c3 only +User email address. type: keyword -- -*`rsa.counters.dclass_r3`*:: +*`destination.user.full_name`*:: + -- -This is a generic ratio key that should be used with the label dclass.r3.str only +User's full name, if available. type: keyword +example: Albert Einstein + -- -*`rsa.counters.dclass_r2_str`*:: +*`destination.user.full_name.text`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword +type: match_only_text -- -*`rsa.counters.dclass_r3_str`*:: +*`destination.user.group.domain`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r3 only +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- - -*`rsa.identity.auth_method`*:: +*`destination.user.group.id`*:: + -- -This key is used to capture authentication methods used only +Unique identifier for the group on the system/platform. type: keyword -- -*`rsa.identity.user_role`*:: +*`destination.user.group.name`*:: + -- -This key is used to capture the Role of a user only +Name of the group. type: keyword -- -*`rsa.identity.dn`*:: +*`destination.user.hash`*:: + -- -X.500 (LDAP) Distinguished Name +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. type: keyword -- -*`rsa.identity.logon_type`*:: +*`destination.user.id`*:: + -- -This key is used to capture the type of logon method used. +Unique identifier of the user. type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`rsa.identity.profile`*:: +*`destination.user.name`*:: + -- -This key is used to capture the user profile +Short name or login of the user. type: keyword +example: a.einstein + -- -*`rsa.identity.accesses`*:: +*`destination.user.name.text`*:: + -- -This key is used to capture actual privileges used in accessing an object - -type: keyword +type: match_only_text -- -*`rsa.identity.realm`*:: +*`destination.user.roles`*:: + -- -Radius realm or similar grouping of accounts +Array of user roles at the time of the event. type: keyword --- +example: ["kibana_admin", "reporting_user"] -*`rsa.identity.user_sid_dst`*:: -+ -- -This key captures Destination User Session ID -type: keyword +[float] +=== dll + +These fields contain information about code libraries dynamically loaded into processes. + +Many operating systems refer to "shared code libraries" with different names, but this field set refers to all of the following: +* Dynamic-link library (`.dll`) commonly used on Windows +* Shared Object (`.so`) commonly used on Unix-like operating systems +* Dynamic library (`.dylib`) commonly used on macOS --- -*`rsa.identity.dn_src`*:: +*`dll.code_signature.digest_algorithm`*:: + -- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn +The hashing algorithm used to sign the process. +This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. type: keyword +example: sha256 + -- -*`rsa.identity.org`*:: +*`dll.code_signature.exists`*:: + -- -This key captures the User organization +Boolean to capture if a signature is present. -type: keyword +type: boolean + +example: true -- -*`rsa.identity.dn_dst`*:: +*`dll.code_signature.signing_id`*:: + -- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn +The identifier used to sign the process. +This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. type: keyword +example: com.apple.xpc.proxy + -- -*`rsa.identity.firstname`*:: +*`dll.code_signature.status`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword +example: ERROR_UNTRUSTED_ROOT + -- -*`rsa.identity.lastname`*:: +*`dll.code_signature.subject_name`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +Subject name of the code signer type: keyword +example: Microsoft Corporation + -- -*`rsa.identity.user_dept`*:: +*`dll.code_signature.team_id`*:: + -- -User's Department Names only +The team identifier used to sign the process. +This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. type: keyword +example: EQHXZ8M8AV + -- -*`rsa.identity.user_sid_src`*:: +*`dll.code_signature.timestamp`*:: + -- -This key captures Source User Session ID +Date and time when the code signature was generated and signed. -type: keyword +type: date + +example: 2021-01-01T12:10:30Z -- -*`rsa.identity.federated_sp`*:: +*`dll.code_signature.trusted`*:: + -- -This key is the Federated Service Provider. This is the application requesting authentication. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. -type: keyword +type: boolean + +example: true -- -*`rsa.identity.federated_idp`*:: +*`dll.code_signature.valid`*:: + -- -This key is the federated Identity Provider. This is the server providing the authentication. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. -type: keyword +type: boolean + +example: true -- -*`rsa.identity.logon_type_desc`*:: +*`dll.hash.md5`*:: + -- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. +MD5 hash. type: keyword -- -*`rsa.identity.middlename`*:: +*`dll.hash.sha1`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +SHA1 hash. type: keyword -- -*`rsa.identity.password`*:: +*`dll.hash.sha256`*:: + -- -This key is for Passwords seen in any session, plain text or encrypted +SHA256 hash. type: keyword -- -*`rsa.identity.host_role`*:: +*`dll.hash.sha512`*:: + -- -This key should only be used to capture the role of a Host Machine +SHA512 hash. type: keyword -- -*`rsa.identity.ldap`*:: +*`dll.hash.ssdeep`*:: + -- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context +SSDEEP hash. type: keyword -- -*`rsa.identity.ldap_query`*:: +*`dll.name`*:: + -- -This key is the Search criteria from an LDAP search +Name of the library. +This generally maps to the name of the file on disk. type: keyword +example: kernel32.dll + -- -*`rsa.identity.ldap_response`*:: +*`dll.path`*:: + -- -This key is to capture Results from an LDAP search +Full file path of the library. type: keyword +example: C:\Windows\System32\kernel32.dll + -- -*`rsa.identity.owner`*:: +*`dll.pe.architecture`*:: + -- -This is used to capture username the process or service is running as, the author of the task +CPU architecture target for the file. type: keyword +example: x64 + -- -*`rsa.identity.service_account`*:: +*`dll.pe.company`*:: + -- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage +Internal company name of the file, provided at compile-time. type: keyword --- +example: Microsoft Corporation +-- -*`rsa.email.email_dst`*:: +*`dll.pe.description`*:: + -- -This key is used to capture the Destination email address only, when the destination context is not clear use email +Internal description of the file, provided at compile-time. type: keyword +example: Paint + -- -*`rsa.email.email_src`*:: +*`dll.pe.file_version`*:: + -- -This key is used to capture the source email address only, when the source context is not clear use email +Internal version of the file, provided at compile-time. type: keyword +example: 6.3.9600.17415 + -- -*`rsa.email.subject`*:: +*`dll.pe.imphash`*:: + -- -This key is used to capture the subject string from an Email only. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword +example: 0c6803c4e922103c4dca5963aad36ddf + -- -*`rsa.email.email`*:: +*`dll.pe.original_file_name`*:: + -- -This key is used to capture a generic email address where the source or destination context is not clear +Internal name of the file, provided at compile-time. type: keyword +example: MSPAINT.EXE + -- -*`rsa.email.trans_from`*:: +*`dll.pe.product`*:: + -- -Deprecated key defined only in table map. +Internal product name of the file, provided at compile-time. type: keyword --- +example: Microsoft® Windows® Operating System -*`rsa.email.trans_to`*:: -+ -- -Deprecated key defined only in table map. -type: keyword +[float] +=== dns --- +Fields describing DNS queries and answers. +DNS events should either represent a single DNS query prior to getting answers (`dns.type:query`) or they should represent a full exchange and contain the query details as well as all of the answers that were provided for this query (`dns.type:answer`). -*`rsa.file.privilege`*:: +*`dns.answers`*:: + -- -Deprecated, use permissions +An array containing an object for each answer section returned by the server. +The main keys that should be present in these objects are defined by ECS. Records that have more information may contain more keys than what ECS defines. +Not all DNS data sources give all details about DNS answers. At minimum, answer objects must contain the `data` key. If more information is available, map as much of it to ECS as possible, and add any additional fields to the answer objects as custom fields. -type: keyword +type: object -- -*`rsa.file.attachment`*:: +*`dns.answers.class`*:: + -- -This key captures the attachment file name +The class of DNS data contained in this resource record. type: keyword +example: IN + -- -*`rsa.file.filesystem`*:: +*`dns.answers.data`*:: + -- +The data describing the resource. +The meaning of this data depends on the type and class of the resource record. + type: keyword +example: 10.10.10.10 + -- -*`rsa.file.binary`*:: +*`dns.answers.name`*:: + -- -Deprecated key defined only in table map. +The domain name to which this resource record pertains. +If a chain of CNAME is being resolved, each answer's `name` should be the one that corresponds with the answer's `data`. It should not simply be the original `question.name` repeated. type: keyword +example: www.example.com + -- -*`rsa.file.filename_dst`*:: +*`dns.answers.ttl`*:: + -- -This is used to capture name of the file targeted by the action +The time interval in seconds that this resource record may be cached before it should be discarded. Zero values mean that the data should not be cached. -type: keyword +type: long + +example: 180 -- -*`rsa.file.filename_src`*:: +*`dns.answers.type`*:: + -- -This is used to capture name of the parent filename, the file which performed the action +The type of data contained in this resource record. type: keyword +example: CNAME + -- -*`rsa.file.filename_tmp`*:: +*`dns.header_flags`*:: + -- +Array of 2 letter DNS header flags. +Expected values are: AA, TC, RD, RA, AD, CD, DO. + type: keyword +example: ["RD", "RA"] + -- -*`rsa.file.directory_dst`*:: +*`dns.id`*:: + -- -This key is used to capture the directory of the target process or file +The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response. type: keyword +example: 62111 + -- -*`rsa.file.directory_src`*:: +*`dns.op_code`*:: + -- -This key is used to capture the directory of the source process or file +The DNS operation code that specifies the kind of query in the message. This value is set by the originator of a query and copied into the response. type: keyword +example: QUERY + -- -*`rsa.file.file_entropy`*:: +*`dns.question.class`*:: + -- -This is used to capture entropy vale of a file +The class of records being queried. -type: double +type: keyword + +example: IN -- -*`rsa.file.file_vendor`*:: +*`dns.question.name`*:: + -- -This is used to capture Company name of file located in version_info +The name being queried. +If the name field contains non-printable characters (below 32 or above 126), those characters should be represented as escaped base 10 integers (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \t, \r, and \n respectively. type: keyword +example: www.example.com + -- -*`rsa.file.task_name`*:: +*`dns.question.registered_domain`*:: + -- -This is used to capture name of the task +The highest registered domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword --- +example: example.com +-- -*`rsa.web.fqdn`*:: +*`dns.question.subdomain`*:: + -- -Fully Qualified Domain Names +The subdomain is all of the labels under the registered_domain. +If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. type: keyword +example: www + -- -*`rsa.web.web_cookie`*:: +*`dns.question.top_level_domain`*:: + -- -This key is used to capture the Web cookies specifically. +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword +example: co.uk + -- -*`rsa.web.alias_host`*:: +*`dns.question.type`*:: + -- +The type of record being queried. + type: keyword +example: AAAA + -- -*`rsa.web.reputation_num`*:: +*`dns.resolved_ip`*:: + -- -Reputation Number of an entity. Typically used for Web Domains +Array containing all IPs seen in `answers.data`. +The `answers` array can be difficult to use, because of the variety of data formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` makes it possible to index them as IP addresses, and makes them easier to visualize and query for. -type: double +type: ip + +example: ["10.10.10.10", "10.10.10.11"] -- -*`rsa.web.web_ref_domain`*:: +*`dns.response_code`*:: + -- -Web referer's domain +The DNS response code. type: keyword +example: NOERROR + -- -*`rsa.web.web_ref_query`*:: +*`dns.type`*:: + -- -This key captures Web referer's query portion of the URL +The type of DNS event captured, query or answer. +If your source of DNS events only gives you DNS queries, you should only create dns events of type `dns.type:query`. +If your source of DNS events gives you answers as well, you should create one event per query (optionally as soon as the query is seen). And a second event containing all query details as well as an array of answers. type: keyword --- +example: answer -*`rsa.web.remote_domain`*:: -+ -- -type: keyword --- +[float] +=== ecs + +Meta-information specific to ECS. -*`rsa.web.web_ref_page`*:: + +*`ecs.version`*:: + -- -This key captures Web referer's page information +ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. +When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. type: keyword --- +example: 1.0.0 + +required: True -*`rsa.web.web_ref_root`*:: -+ -- -Web referer's root URL path -type: keyword +[float] +=== elf --- +These fields contain Linux Executable Linkable Format (ELF) metadata. -*`rsa.web.cn_asn_dst`*:: + +*`elf.architecture`*:: + -- +Machine architecture of the ELF file. + type: keyword +example: x86-64 + -- -*`rsa.web.cn_rpackets`*:: +*`elf.byte_order`*:: + -- +Byte sequence of ELF file. + type: keyword +example: Little Endian + -- -*`rsa.web.urlpage`*:: +*`elf.cpu_type`*:: + -- +CPU type of the ELF file. + type: keyword +example: Intel + -- -*`rsa.web.urlroot`*:: +*`elf.creation_date`*:: + -- -type: keyword +Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. + +type: date -- -*`rsa.web.p_url`*:: +*`elf.exports`*:: + -- -type: keyword +List of exported element names and types. + +type: flattened -- -*`rsa.web.p_user_agent`*:: +*`elf.header.abi_version`*:: + -- +Version of the ELF Application Binary Interface (ABI). + type: keyword -- -*`rsa.web.p_web_cookie`*:: +*`elf.header.class`*:: + -- +Header class of the ELF file. + type: keyword -- -*`rsa.web.p_web_method`*:: +*`elf.header.data`*:: + -- +Data table of the ELF header. + type: keyword -- -*`rsa.web.p_web_referer`*:: +*`elf.header.entrypoint`*:: + -- -type: keyword +Header entrypoint of the ELF file. --- +type: long -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword +format: string -- -*`rsa.web.web_page`*:: +*`elf.header.object_version`*:: + -- +"0x1" for original ELF files. + type: keyword -- - -*`rsa.threat.threat_category`*:: +*`elf.header.os_abi`*:: + -- -This key captures Threat Name/Threat Category/Categorization of alert +Application Binary Interface (ABI) of the Linux OS. type: keyword -- -*`rsa.threat.threat_desc`*:: +*`elf.header.type`*:: + -- -This key is used to capture the threat description from the session directly or inferred +Header type of the ELF file. type: keyword -- -*`rsa.threat.alert`*:: +*`elf.header.version`*:: + -- -This key is used to capture name of the alert +Version of the ELF header. type: keyword -- -*`rsa.threat.threat_source`*:: +*`elf.imports`*:: + -- -This key is used to capture source of the threat +List of imported element names and types. -type: keyword +type: flattened -- - -*`rsa.crypto.crypto`*:: +*`elf.sections`*:: + -- -This key is used to capture the Encryption Type or Encryption Key only +An array containing an object for each section of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. -type: keyword +type: nested -- -*`rsa.crypto.cipher_src`*:: +*`elf.sections.chi2`*:: + -- -This key is for Source (Client) Cipher +Chi-square probability distribution of the section. -type: keyword +type: long + +format: number -- -*`rsa.crypto.cert_subject`*:: +*`elf.sections.entropy`*:: + -- -This key is used to capture the Certificate organization only +Shannon entropy calculation from the section. -type: keyword +type: long + +format: number -- -*`rsa.crypto.peer`*:: +*`elf.sections.flags`*:: + -- -This key is for Encryption peer's IP Address +ELF Section List flags. type: keyword -- -*`rsa.crypto.cipher_size_src`*:: +*`elf.sections.name`*:: + -- -This key captures Source (Client) Cipher Size +ELF Section List name. -type: long +type: keyword -- -*`rsa.crypto.ike`*:: +*`elf.sections.physical_offset`*:: + -- -IKE negotiation phase. +ELF Section List offset. type: keyword -- -*`rsa.crypto.scheme`*:: +*`elf.sections.physical_size`*:: + -- -This key captures the Encryption scheme used +ELF Section List physical size. -type: keyword +type: long + +format: bytes -- -*`rsa.crypto.peer_id`*:: +*`elf.sections.type`*:: + -- -This key is for Encryption peer’s identity +ELF Section List type. type: keyword -- -*`rsa.crypto.sig_type`*:: +*`elf.sections.virtual_address`*:: + -- -This key captures the Signature Type +ELF Section List virtual address. -type: keyword +type: long + +format: string -- -*`rsa.crypto.cert_issuer`*:: +*`elf.sections.virtual_size`*:: + -- -type: keyword +ELF Section List virtual size. + +type: long + +format: string -- -*`rsa.crypto.cert_host_name`*:: +*`elf.segments`*:: + -- -Deprecated key defined only in table map. +An array containing an object for each segment of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. -type: keyword +type: nested -- -*`rsa.crypto.cert_error`*:: +*`elf.segments.sections`*:: + -- -This key captures the Certificate Error String +ELF object segment sections. type: keyword -- -*`rsa.crypto.cipher_dst`*:: +*`elf.segments.type`*:: + -- -This key is for Destination (Server) Cipher +ELF object segment type. type: keyword -- -*`rsa.crypto.cipher_size_dst`*:: +*`elf.shared_libraries`*:: + -- -This key captures Destination (Server) Cipher Size +List of shared libraries used by this ELF object. -type: long +type: keyword -- -*`rsa.crypto.ssl_ver_src`*:: +*`elf.telfhash`*:: + -- -Deprecated, use version +telfhash symbol hash for ELF file. type: keyword -- -*`rsa.crypto.d_certauth`*:: +[float] +=== error + +These fields can represent errors of any kind. +Use them for errors that happen while fetching events or in cases where the event itself contains an error. + + +*`error.code`*:: + -- +Error code describing the error. + type: keyword -- -*`rsa.crypto.s_certauth`*:: +*`error.id`*:: + -- +Unique identifier for the error. + type: keyword -- -*`rsa.crypto.ike_cookie1`*:: +*`error.message`*:: + -- -ID of the negotiation — sent for ISAKMP Phase One +Error message. -type: keyword +type: match_only_text -- -*`rsa.crypto.ike_cookie2`*:: +*`error.stack_trace`*:: + -- -ID of the negotiation — sent for ISAKMP Phase Two +The stack trace of this error in plain text. -type: keyword +type: wildcard -- -*`rsa.crypto.cert_checksum`*:: +*`error.stack_trace.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.crypto.cert_host_cat`*:: +*`error.type`*:: + -- -This key is used for the hostname category value of a certificate +The type of the error, for example the class name of the exception. type: keyword +example: java.lang.NullPointerException + -- -*`rsa.crypto.cert_serial`*:: +[float] +=== event + +The event fields are used for context information about the log or metric event itself. +A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host and device temperature. See the `event.kind` definition in this section for additional details about metric and state events. + + +*`event.action`*:: + -- -This key is used to capture the Certificate serial number only +The action captured by the event. +This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. type: keyword +example: user-password-change + -- -*`rsa.crypto.cert_status`*:: +*`event.agent_id_status`*:: + -- -This key captures Certificate validation status +Agents are normally responsible for populating the `agent.id` field value. If the system receiving events is capable of validating the value based on authentication information for the client then this field can be used to reflect the outcome of that validation. +For example if the agent's connection is authenticated with mTLS and the client cert contains the ID of the agent to which the cert was issued then the `agent.id` value in events can be checked against the certificate. If the values match then `event.agent_id_status: verified` is added to the event, otherwise one of the other allowed values should be used. +If no validation is performed then the field should be omitted. +The allowed values are: +`verified` - The `agent.id` field value matches expected value obtained from auth metadata. +`mismatch` - The `agent.id` field value does not match the expected value obtained from auth metadata. +`missing` - There was no `agent.id` field in the event to validate. +`auth_metadata_missing` - There was no auth metadata or it was missing information about the agent ID. type: keyword +example: verified + -- -*`rsa.crypto.ssl_ver_dst`*:: +*`event.category`*:: + -- -Deprecated, use version +This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy. +`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory. +This field is an array. This will allow proper categorization of some events that fall in multiple categories. type: keyword +example: authentication + -- -*`rsa.crypto.cert_keysize`*:: +*`event.code`*:: + -- +Identification code for this event, if one exists. +Some event sources use event codes to identify messages unambiguously, regardless of message language or wording adjustments over time. An example of this is the Windows Event ID. + type: keyword +example: 4648 + -- -*`rsa.crypto.cert_username`*:: +*`event.created`*:: + -- -type: keyword +event.created contains the date/time when the event was first read by an agent, or by your pipeline. +This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. +In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. +In case the two timestamps are identical, @timestamp should be used. + +type: date + +example: 2016-05-23T08:05:34.857Z -- -*`rsa.crypto.https_insact`*:: +*`event.dataset`*:: + -- +Name of the dataset. +If an event source publishes more than one type of log or events (e.g. access log, error log), the dataset is used to specify which one the event comes from. +It's recommended but not required to start the dataset name with the module name, followed by a dot, then the dataset name. + type: keyword +example: apache.access + -- -*`rsa.crypto.https_valid`*:: +*`event.duration`*:: + -- -type: keyword +Duration of the event in nanoseconds. +If event.start and event.end are known this value should be the difference between the end and start time. + +type: long + +format: duration -- -*`rsa.crypto.cert_ca`*:: +*`event.end`*:: + -- -This key is used to capture the Certificate signing authority only +event.end contains the date when the event ended or when the activity was last observed. -type: keyword +type: date -- -*`rsa.crypto.cert_common`*:: +*`event.hash`*:: + -- -This key is used to capture the Certificate common name only +Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. type: keyword --- +example: 123456789012345678901234567890ABCD +-- -*`rsa.wireless.wlan_ssid`*:: +*`event.id`*:: + -- -This key is used to capture the ssid of a Wireless Session +Unique ID to describe the event. type: keyword +example: 8a4f500d + -- -*`rsa.wireless.access_point`*:: +*`event.ingested`*:: + -- -This key is used to capture the access point name. +Timestamp when an event arrived in the central data store. +This is different from `@timestamp`, which is when the event originally occurred. It's also different from `event.created`, which is meant to capture the first time an agent saw the event. +In normal conditions, assuming no tampering, the timestamps should chronologically look like this: `@timestamp` < `event.created` < `event.ingested`. -type: keyword +type: date + +example: 2016-05-23T08:05:35.101Z -- -*`rsa.wireless.wlan_channel`*:: +*`event.kind`*:: + -- -This is used to capture the channel names +This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy. +`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events. +The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not. -type: long +type: keyword + +example: alert -- -*`rsa.wireless.wlan_name`*:: +*`event.module`*:: + -- -This key captures either WLAN number/name +Name of the module this data is coming from. +If your monitoring agent supports the concept of modules or plugins to process events of a given source (e.g. Apache logs), `event.module` should contain the name of this module. type: keyword --- +example: apache +-- -*`rsa.storage.disk_volume`*:: +*`event.original`*:: + -- -A unique name assigned to logical units (volumes) within a physical disk +Raw text message of entire event. Used to demonstrate log integrity or where the full log message (before splitting it up in multiple parts) may be required, e.g. for reindex. +This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. If users wish to override this and index this field, please see `Field data types` in the `Elasticsearch Reference`. type: keyword +example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + +Field is not indexed. + -- -*`rsa.storage.lun`*:: +*`event.outcome`*:: + -- -Logical Unit Number.This key is a very useful concept in Storage. +This is one of four ECS Categorization Fields, and indicates the lowest level in the ECS category hierarchy. +`event.outcome` simply denotes whether the event represents a success or a failure from the perspective of the entity that produced the event. +Note that when a single transaction is described in multiple events, each event may populate different values of `event.outcome`, according to their perspective. +Also note that in the case of a compound event (a single event that contains multiple logical events), this field should be populated with the value that best captures the overall success or failure from the perspective of the event producer. +Further note that not all events will have an associated outcome. For example, this field is generally not populated for metric events, events with `event.type:info`, or any events for which an outcome does not make logical sense. type: keyword +example: success + -- -*`rsa.storage.pwwn`*:: +*`event.provider`*:: + -- -This uniquely identifies a port on a HBA. +Source of the event. +Event transports such as Syslog or the Windows Event Log typically mention the source of an event. It can be the name of the software that generated the event (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing). type: keyword --- +example: kernel +-- -*`rsa.physical.org_dst`*:: +*`event.reason`*:: + -- -This is used to capture the destination organization based on the GEOPIP Maxmind database. +Reason why this event happened, according to the source. +This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). type: keyword +example: Terminated an unexpected process + -- -*`rsa.physical.org_src`*:: +*`event.reference`*:: + -- -This is used to capture the source organization based on the GEOPIP Maxmind database. +Reference URL linking to additional information about this event. +This URL links to a static definition of this event. Alert events, indicated by `event.kind:alert`, are a common use case for this field. type: keyword --- +example: https://system.example.com/event/#0001234 +-- -*`rsa.healthcare.patient_fname`*:: +*`event.risk_score`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +Risk score or priority of the event (e.g. security solutions). Use your system's original value here. -type: keyword +type: float -- -*`rsa.healthcare.patient_id`*:: +*`event.risk_score_norm`*:: + -- -This key captures the unique ID for a patient +Normalized risk score or priority of the event, on a scale of 0 to 100. +This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. -type: keyword +type: float -- -*`rsa.healthcare.patient_lname`*:: +*`event.sequence`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +Sequence number of the event. +The sequence number is a value published by some event sources, to make the exact ordering of events unambiguous, regardless of the timestamp precision. -type: keyword +type: long + +format: string -- -*`rsa.healthcare.patient_mname`*:: +*`event.severity`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +The numeric severity of the event according to your event source. +What the different severity values mean can be different between sources and use cases. It's up to the implementer to make sure severities are consistent across events from the same source. +The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is meant to represent the severity according to the event source (e.g. firewall, IDS). If the event source does not publish its own severity, you may optionally copy the `log.syslog.severity.code` to `event.severity`. -type: keyword +type: long --- +example: 7 + +format: string +-- -*`rsa.endpoint.host_state`*:: +*`event.start`*:: + -- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on +event.start contains the date when the event started or when the activity was first observed. -type: keyword +type: date -- -*`rsa.endpoint.registry_key`*:: +*`event.timezone`*:: + -- -This key captures the path to the registry key +This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. +Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). type: keyword -- -*`rsa.endpoint.registry_value`*:: +*`event.type`*:: + -- -This key captures values or decorators used within a registry entry +This is one of four ECS Categorization Fields, and indicates the third level in the ECS category hierarchy. +`event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization. +This field is an array. This will allow proper categorization of some events that fall in multiple event types. type: keyword -- -[[exported-fields-cef]] -== Decode CEF processor fields fields +*`event.url`*:: ++ +-- +URL linking to an external system to continue investigation of this event. +This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. -Common Event Format (CEF) data. +type: keyword +example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +-- [float] -=== cef - -By default the `decode_cef` processor writes all data from the CEF message to this `cef` object. It contains the CEF header fields and the extension data. +=== faas +The user fields describe information about the function as a service that is relevant to the event. -*`cef.version`*:: +*`faas.coldstart`*:: + -- -Version of the CEF specification used by the message. - +Boolean value indicating a cold start of a function. -type: keyword +type: boolean -- -*`cef.device.vendor`*:: +*`faas.execution`*:: + -- -Vendor of the device that produced the message. - +The execution ID of the current function execution. type: keyword +example: af9d5aa4-a685-4c5f-a22b-444f80b3cc28 + -- -*`cef.device.product`*:: +*`faas.trigger`*:: + -- -Product of the device that produced the message. - +Details about the function trigger. -type: keyword +type: nested -- -*`cef.device.version`*:: +*`faas.trigger.request_id`*:: + -- -Version of the product that produced the message. - +The ID of the trigger request , message, event, etc. type: keyword +example: 123456789 + -- -*`cef.device.event_class_id`*:: +*`faas.trigger.type`*:: + -- -Unique identifier of the event type. - +The trigger for the function execution. +Expected values are: + * http + * pubsub + * datasource + * timer + * other type: keyword --- +example: http -*`cef.severity`*:: -+ -- -Importance of the event. The valid string values are Unknown, Low, Medium, High, and Very-High. The valid integer values are 0-3=Low, 4-6=Medium, 7- 8=High, and 9-10=Very-High. +[float] +=== file -type: keyword +A file is defined as a set of information that has been created on, or has existed on a filesystem. +File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. -example: Very-High +*`file.accessed`*:: ++ -- +Last time the file was accessed. +Note that not all filesystems keep track of access time. + +type: date -*`cef.name`*:: -+ -- -Short description of the event. +*`file.attributes`*:: ++ +-- +Array of file attributes. +Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. type: keyword +example: ["readonly", "system"] + -- -[float] -=== extensions +*`file.code_signature.digest_algorithm`*:: ++ +-- +The hashing algorithm used to sign the process. +This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. -Collection of key-value pairs carried in the CEF extension field. +type: keyword +example: sha256 +-- -*`cef.extensions.agentAddress`*:: +*`file.code_signature.exists`*:: + -- -The IP address of the ArcSight connector that processed the event. +Boolean to capture if a signature is present. -type: ip +type: boolean + +example: true -- -*`cef.extensions.agentDnsDomain`*:: +*`file.code_signature.signing_id`*:: + -- -The DNS domain name of the ArcSight connector that processed the event. +The identifier used to sign the process. +This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. type: keyword +example: com.apple.xpc.proxy + -- -*`cef.extensions.agentHostName`*:: +*`file.code_signature.status`*:: + -- -The hostname of the ArcSight connector that processed the event. +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword +example: ERROR_UNTRUSTED_ROOT + -- -*`cef.extensions.agentId`*:: +*`file.code_signature.subject_name`*:: + -- -The agent ID of the ArcSight connector that processed the event. +Subject name of the code signer type: keyword +example: Microsoft Corporation + -- -*`cef.extensions.agentMacAddress`*:: +*`file.code_signature.team_id`*:: + -- -The MAC address of the ArcSight connector that processed the event. +The team identifier used to sign the process. +This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. type: keyword +example: EQHXZ8M8AV + -- -*`cef.extensions.agentNtDomain`*:: +*`file.code_signature.timestamp`*:: + -- -None +Date and time when the code signature was generated and signed. -type: keyword +type: date + +example: 2021-01-01T12:10:30Z -- -*`cef.extensions.agentReceiptTime`*:: +*`file.code_signature.trusted`*:: + -- -The time at which information about the event was received by the ArcSight connector. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. -type: date +type: boolean + +example: true -- -*`cef.extensions.agentTimeZone`*:: +*`file.code_signature.valid`*:: + -- -The agent time zone of the ArcSight connector that processed the event. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. -type: keyword +type: boolean + +example: true -- -*`cef.extensions.agentTranslatedAddress`*:: +*`file.created`*:: + -- -None +File creation time. +Note that not all filesystems store the creation time. -type: ip +type: date -- -*`cef.extensions.agentTranslatedZoneExternalID`*:: +*`file.ctime`*:: + -- -None +Last time the file attributes or metadata changed. +Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file. -type: keyword +type: date -- -*`cef.extensions.agentTranslatedZoneURI`*:: +*`file.device`*:: + -- -None +Device that is the source of the file. type: keyword +example: sda + -- -*`cef.extensions.agentType`*:: +*`file.directory`*:: + -- -The agent type of the ArcSight connector that processed the event +Directory where the file is located. It should include the drive letter, when appropriate. type: keyword +example: /home/alice + -- -*`cef.extensions.agentVersion`*:: +*`file.drive_letter`*:: + -- -The version of the ArcSight connector that processed the event. +Drive letter where the file is located. This field is only relevant on Windows. +The value should be uppercase, and not include the colon. type: keyword +example: C + -- -*`cef.extensions.agentZoneExternalID`*:: +*`file.elf.architecture`*:: + -- -None +Machine architecture of the ELF file. type: keyword +example: x86-64 + -- -*`cef.extensions.agentZoneURI`*:: +*`file.elf.byte_order`*:: + -- -None +Byte sequence of ELF file. type: keyword +example: Little Endian + -- -*`cef.extensions.applicationProtocol`*:: +*`file.elf.cpu_type`*:: + -- -Application level protocol, example values are HTTP, HTTPS, SSHv2, Telnet, POP, IMPA, IMAPS, and so on. +CPU type of the ELF file. type: keyword +example: Intel + -- -*`cef.extensions.baseEventCount`*:: +*`file.elf.creation_date`*:: + -- -A count associated with this event. How many times was this same event observed? Count can be omitted if it is 1. +Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. -type: long +type: date -- -*`cef.extensions.bytesIn`*:: +*`file.elf.exports`*:: + -- -Number of bytes transferred inbound, relative to the source to destination relationship, meaning that data was flowing from source to destination. +List of exported element names and types. -type: long +type: flattened -- -*`cef.extensions.bytesOut`*:: +*`file.elf.header.abi_version`*:: + -- -Number of bytes transferred outbound relative to the source to destination relationship. For example, the byte number of data flowing from the destination to the source. +Version of the ELF Application Binary Interface (ABI). -type: long +type: keyword -- -*`cef.extensions.customerExternalID`*:: +*`file.elf.header.class`*:: + -- -None +Header class of the ELF file. type: keyword -- -*`cef.extensions.customerURI`*:: +*`file.elf.header.data`*:: + -- -None +Data table of the ELF header. type: keyword -- -*`cef.extensions.destinationAddress`*:: +*`file.elf.header.entrypoint`*:: + -- -Identifies the destination address that the event refers to in an IP network. The format is an IPv4 address. +Header entrypoint of the ELF file. -type: ip +type: long + +format: string -- -*`cef.extensions.destinationDnsDomain`*:: +*`file.elf.header.object_version`*:: + -- -The DNS domain part of the complete fully qualified domain name (FQDN). +"0x1" for original ELF files. type: keyword -- -*`cef.extensions.destinationGeoLatitude`*:: +*`file.elf.header.os_abi`*:: + -- -The latitudinal value from which the destination's IP address belongs. +Application Binary Interface (ABI) of the Linux OS. -type: double +type: keyword -- -*`cef.extensions.destinationGeoLongitude`*:: +*`file.elf.header.type`*:: + -- -The longitudinal value from which the destination's IP address belongs. +Header type of the ELF file. -type: double +type: keyword -- -*`cef.extensions.destinationHostName`*:: +*`file.elf.header.version`*:: + -- -Identifies the destination that an event refers to in an IP network. The format should be a fully qualified domain name (FQDN) associated with the destination node, when a node is available. +Version of the ELF header. type: keyword -- -*`cef.extensions.destinationMacAddress`*:: +*`file.elf.imports`*:: + -- -Six colon-seperated hexadecimal numbers. +List of imported element names and types. -type: keyword +type: flattened -- -*`cef.extensions.destinationNtDomain`*:: +*`file.elf.sections`*:: + -- -The Windows domain name of the destination address. +An array containing an object for each section of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. -type: keyword +type: nested -- -*`cef.extensions.destinationPort`*:: +*`file.elf.sections.chi2`*:: + -- -The valid port numbers are between 0 and 65535. +Chi-square probability distribution of the section. type: long +format: number + -- -*`cef.extensions.destinationProcessId`*:: +*`file.elf.sections.entropy`*:: + -- -Provides the ID of the destination process associated with the event. For example, if an event contains process ID 105, "105" is the process ID. +Shannon entropy calculation from the section. type: long +format: number + -- -*`cef.extensions.destinationProcessName`*:: +*`file.elf.sections.flags`*:: + -- -The name of the event's destination process. +ELF Section List flags. type: keyword -- -*`cef.extensions.destinationServiceName`*:: +*`file.elf.sections.name`*:: + -- -The service targeted by this event. +ELF Section List name. type: keyword -- -*`cef.extensions.destinationTranslatedAddress`*:: +*`file.elf.sections.physical_offset`*:: + -- -Identifies the translated destination that the event refers to in an IP network. +ELF Section List offset. -type: ip +type: keyword -- -*`cef.extensions.destinationTranslatedPort`*:: +*`file.elf.sections.physical_size`*:: + -- -Port after it was translated; for example, a firewall. Valid port numbers are 0 to 65535. +ELF Section List physical size. type: long +format: bytes + -- -*`cef.extensions.destinationTranslatedZoneExternalID`*:: +*`file.elf.sections.type`*:: + -- -None +ELF Section List type. type: keyword -- -*`cef.extensions.destinationTranslatedZoneURI`*:: +*`file.elf.sections.virtual_address`*:: + -- -The URI for the Translated Zone that the destination asset has been assigned to in ArcSight. +ELF Section List virtual address. -type: keyword +type: long + +format: string -- -*`cef.extensions.destinationUserId`*:: +*`file.elf.sections.virtual_size`*:: + -- -Identifies the destination user by ID. For example, in UNIX, the root user is generally associated with user ID 0. +ELF Section List virtual size. -type: keyword +type: long + +format: string -- -*`cef.extensions.destinationUserName`*:: +*`file.elf.segments`*:: + -- -Identifies the destination user by name. This is the user associated with the event's destination. Email addresses are often mapped into the UserName fields. The recipient is a candidate to put into this field. +An array containing an object for each segment of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. -type: keyword +type: nested -- -*`cef.extensions.destinationUserPrivileges`*:: +*`file.elf.segments.sections`*:: + -- -The typical values are "Administrator", "User", and "Guest". This identifies the destination user's privileges. In UNIX, for example, activity executed on the root user would be identified with destinationUser Privileges of "Administrator". +ELF object segment sections. type: keyword -- -*`cef.extensions.destinationZoneExternalID`*:: +*`file.elf.segments.type`*:: + -- -None +ELF object segment type. type: keyword -- -*`cef.extensions.destinationZoneURI`*:: +*`file.elf.shared_libraries`*:: + -- -The URI for the Zone that the destination asset has been assigned to in ArcSight. +List of shared libraries used by this ELF object. type: keyword -- -*`cef.extensions.deviceAction`*:: +*`file.elf.telfhash`*:: + -- -Action taken by the device. +telfhash symbol hash for ELF file. type: keyword -- -*`cef.extensions.deviceAddress`*:: +*`file.extension`*:: + -- -Identifies the device address that an event refers to in an IP network. +File extension, excluding the leading dot. +Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). -type: ip +type: keyword + +example: png -- -*`cef.extensions.deviceCustomFloatingPoint1Label`*:: +*`file.fork_name`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +A fork is additional data associated with a filesystem object. +On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. +On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. type: keyword +example: Zone.Identifer + -- -*`cef.extensions.deviceCustomFloatingPoint3Label`*:: +*`file.gid`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Primary group ID (GID) of the file. type: keyword +example: 1001 + -- -*`cef.extensions.deviceCustomFloatingPoint4Label`*:: +*`file.group`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Primary group name of the file. type: keyword --- - -*`cef.extensions.deviceCustomDate1`*:: -+ --- -One of two timestamp fields available to map fields that do not apply to any other in this dictionary. - -type: date +example: alice -- -*`cef.extensions.deviceCustomDate1Label`*:: +*`file.hash.md5`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +MD5 hash. type: keyword -- -*`cef.extensions.deviceCustomDate2`*:: +*`file.hash.sha1`*:: + -- -One of two timestamp fields available to map fields that do not apply to any other in this dictionary. +SHA1 hash. -type: date +type: keyword -- -*`cef.extensions.deviceCustomDate2Label`*:: +*`file.hash.sha256`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +SHA256 hash. type: keyword -- -*`cef.extensions.deviceCustomFloatingPoint1`*:: +*`file.hash.sha512`*:: + -- -One of four floating point fields available to map fields that do not apply to any other in this dictionary. +SHA512 hash. -type: double +type: keyword -- -*`cef.extensions.deviceCustomFloatingPoint2`*:: +*`file.hash.ssdeep`*:: + -- -One of four floating point fields available to map fields that do not apply to any other in this dictionary. +SSDEEP hash. -type: double +type: keyword -- -*`cef.extensions.deviceCustomFloatingPoint2Label`*:: +*`file.inode`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Inode representing the file in the filesystem. type: keyword +example: 256383 + -- -*`cef.extensions.deviceCustomFloatingPoint3`*:: +*`file.mime_type`*:: + -- -One of four floating point fields available to map fields that do not apply to any other in this dictionary. +MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. -type: double +type: keyword -- -*`cef.extensions.deviceCustomFloatingPoint4`*:: +*`file.mode`*:: + -- -One of four floating point fields available to map fields that do not apply to any other in this dictionary. +Mode of the file in octal representation. -type: double +type: keyword + +example: 0640 -- -*`cef.extensions.deviceCustomIPv6Address1`*:: +*`file.mtime`*:: + -- -One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. +Last time the file content was modified. -type: ip +type: date -- -*`cef.extensions.deviceCustomIPv6Address1Label`*:: +*`file.name`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Name of the file including the extension, without the directory. type: keyword +example: example.png + -- -*`cef.extensions.deviceCustomIPv6Address2`*:: +*`file.owner`*:: + -- -One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. +File owner's username. -type: ip +type: keyword + +example: alice -- -*`cef.extensions.deviceCustomIPv6Address2Label`*:: +*`file.path`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Full path to the file, including the file name. It should include the drive letter, when appropriate. type: keyword +example: /home/alice/example.png + -- -*`cef.extensions.deviceCustomIPv6Address3`*:: +*`file.path.text`*:: + -- -One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. - -type: ip +type: match_only_text -- -*`cef.extensions.deviceCustomIPv6Address3Label`*:: +*`file.pe.architecture`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +CPU architecture target for the file. type: keyword +example: x64 + -- -*`cef.extensions.deviceCustomIPv6Address4`*:: +*`file.pe.company`*:: + -- -One of four IPv6 address fields available to map fields that do not apply to any other in this dictionary. +Internal company name of the file, provided at compile-time. -type: ip +type: keyword + +example: Microsoft Corporation -- -*`cef.extensions.deviceCustomIPv6Address4Label`*:: +*`file.pe.description`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Internal description of the file, provided at compile-time. type: keyword +example: Paint + -- -*`cef.extensions.deviceCustomNumber1`*:: +*`file.pe.file_version`*:: + -- -One of three number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +Internal version of the file, provided at compile-time. -type: long +type: keyword + +example: 6.3.9600.17415 -- -*`cef.extensions.deviceCustomNumber1Label`*:: +*`file.pe.imphash`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword +example: 0c6803c4e922103c4dca5963aad36ddf + -- -*`cef.extensions.deviceCustomNumber2`*:: +*`file.pe.original_file_name`*:: + -- -One of three number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +Internal name of the file, provided at compile-time. -type: long +type: keyword + +example: MSPAINT.EXE -- -*`cef.extensions.deviceCustomNumber2Label`*:: +*`file.pe.product`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Internal product name of the file, provided at compile-time. type: keyword +example: Microsoft® Windows® Operating System + -- -*`cef.extensions.deviceCustomNumber3`*:: +*`file.size`*:: + -- -One of three number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +File size in bytes. +Only relevant when `file.type` is "file". type: long +example: 16384 + -- -*`cef.extensions.deviceCustomNumber3Label`*:: +*`file.target_path`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Target path for symlinks. type: keyword -- -*`cef.extensions.deviceCustomString1`*:: +*`file.target_path.text`*:: + -- -One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. - -type: keyword +type: match_only_text -- -*`cef.extensions.deviceCustomString1Label`*:: +*`file.type`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +File type (file, dir, or symlink). type: keyword +example: file + -- -*`cef.extensions.deviceCustomString2`*:: +*`file.uid`*:: + -- -One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +The user ID (UID) or security identifier (SID) of the file owner. type: keyword +example: 1001 + -- -*`cef.extensions.deviceCustomString2Label`*:: +*`file.x509.alternative_names`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword +example: *.elastic.co + -- -*`cef.extensions.deviceCustomString3`*:: +*`file.x509.issuer.common_name`*:: + -- -One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +List of common name (CN) of issuing certificate authority. type: keyword +example: Example SHA2 High Assurance Server CA + -- -*`cef.extensions.deviceCustomString3Label`*:: +*`file.x509.issuer.country`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +List of country (C) codes type: keyword +example: US + -- -*`cef.extensions.deviceCustomString4`*:: +*`file.x509.issuer.distinguished_name`*:: + -- -One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +Distinguished name (DN) of issuing certificate authority. type: keyword +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + -- -*`cef.extensions.deviceCustomString4Label`*:: +*`file.x509.issuer.locality`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +List of locality names (L) type: keyword +example: Mountain View + -- -*`cef.extensions.deviceCustomString5`*:: +*`file.x509.issuer.organization`*:: + -- -One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +List of organizations (O) of issuing certificate authority. type: keyword +example: Example Inc + -- -*`cef.extensions.deviceCustomString5Label`*:: +*`file.x509.issuer.organizational_unit`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +List of organizational units (OU) of issuing certificate authority. type: keyword +example: www.example.com + -- -*`cef.extensions.deviceCustomString6`*:: +*`file.x509.issuer.state_or_province`*:: + -- -One of six strings available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`cef.extensions.deviceCustomString6Label`*:: +*`file.x509.not_after`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Time at which the certificate is no longer considered valid. -type: keyword +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`cef.extensions.deviceDirection`*:: +*`file.x509.not_before`*:: + -- -Any information about what direction the observed communication has taken. The following values are supported - "0" for inbound or "1" for outbound. +Time at which the certificate is first considered valid. -type: long +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`cef.extensions.deviceDnsDomain`*:: +*`file.x509.public_key_algorithm`*:: + -- -The DNS domain part of the complete fully qualified domain name (FQDN). +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`cef.extensions.deviceEventCategory`*:: +*`file.x509.public_key_curve`*:: + -- -Represents the category assigned by the originating device. Devices often use their own categorization schema to classify event. Example "/Monitor/Disk/Read". +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`cef.extensions.deviceExternalId`*:: +*`file.x509.public_key_exponent`*:: + -- -A name that uniquely identifies the device generating this event. +Exponent used to derive the public key. This is algorithm specific. -type: keyword +type: long + +example: 65537 + +Field is not indexed. -- -*`cef.extensions.deviceFacility`*:: +*`file.x509.public_key_size`*:: + -- -The facility generating this event. For example, Syslog has an explicit facility associated with every event. +The size of the public key space in bits. -type: keyword +type: long + +example: 2048 -- -*`cef.extensions.deviceFlexNumber1`*:: +*`file.x509.serial_number`*:: + -- -One of two alternative number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. -type: long +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA -- -*`cef.extensions.deviceFlexNumber1Label`*:: +*`file.x509.signature_algorithm`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword +example: SHA256-RSA + -- -*`cef.extensions.deviceFlexNumber2`*:: +*`file.x509.subject.common_name`*:: + -- -One of two alternative number fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. +List of common names (CN) of subject. -type: long +type: keyword + +example: shared.global.example.net -- -*`cef.extensions.deviceFlexNumber2Label`*:: +*`file.x509.subject.country`*:: + -- -All custom fields have a corresponding label field. Each of these fields is a string and describes the purpose of the custom field. +List of country (C) code type: keyword +example: US + -- -*`cef.extensions.deviceHostName`*:: +*`file.x509.subject.distinguished_name`*:: + -- -The format should be a fully qualified domain name (FQDN) associated with the device node, when a node is available. +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`cef.extensions.deviceInboundInterface`*:: +*`file.x509.subject.locality`*:: + -- -Interface on which the packet or data entered the device. +List of locality names (L) type: keyword +example: San Francisco + -- -*`cef.extensions.deviceMacAddress`*:: +*`file.x509.subject.organization`*:: + -- -Six colon-separated hexadecimal numbers. +List of organizations (O) of subject. type: keyword +example: Example, Inc. + -- -*`cef.extensions.deviceNtDomain`*:: +*`file.x509.subject.organizational_unit`*:: + -- -The Windows domain name of the device address. +List of organizational units (OU) of subject. type: keyword -- -*`cef.extensions.deviceOutboundInterface`*:: +*`file.x509.subject.state_or_province`*:: + -- -Interface on which the packet or data left the device. +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`cef.extensions.devicePayloadId`*:: +*`file.x509.version_number`*:: + -- -Unique identifier for the payload associated with the event. +Version of x509 format. type: keyword +example: 3 + -- -*`cef.extensions.deviceProcessId`*:: +[float] +=== geo + +Geo fields can carry data about a specific location related to an event. +This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. + + +*`geo.city_name`*:: + -- -Provides the ID of the process on the device generating the event. +City name. -type: long +type: keyword + +example: Montreal -- -*`cef.extensions.deviceProcessName`*:: +*`geo.continent_code`*:: + -- -Process name associated with the event. An example might be the process generating the syslog entry in UNIX. +Two-letter code representing continent's name. type: keyword +example: NA + -- -*`cef.extensions.deviceReceiptTime`*:: +*`geo.continent_name`*:: + -- -The time at which the event related to the activity was received. The format is MMM dd yyyy HH:mm:ss or milliseconds since epoch (Jan 1st 1970) +Name of the continent. -type: date +type: keyword + +example: North America -- -*`cef.extensions.deviceTimeZone`*:: +*`geo.country_iso_code`*:: + -- -The time zone for the device generating the event. +Country ISO code. type: keyword +example: CA + -- -*`cef.extensions.deviceTranslatedAddress`*:: +*`geo.country_name`*:: + -- -Identifies the translated device address that the event refers to in an IP network. +Country name. -type: ip +type: keyword + +example: Canada -- -*`cef.extensions.deviceTranslatedZoneExternalID`*:: +*`geo.location`*:: + -- -None +Longitude and latitude. -type: keyword +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`cef.extensions.deviceTranslatedZoneURI`*:: +*`geo.name`*:: + -- -The URI for the Translated Zone that the device asset has been assigned to in ArcSight. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`cef.extensions.deviceZoneExternalID`*:: +*`geo.postal_code`*:: + -- -None +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. type: keyword +example: 94040 + -- -*`cef.extensions.deviceZoneURI`*:: +*`geo.region_iso_code`*:: + -- -Thee URI for the Zone that the device asset has been assigned to in ArcSight. +Region ISO code. type: keyword +example: CA-QC + -- -*`cef.extensions.endTime`*:: +*`geo.region_name`*:: + -- -The time at which the activity related to the event ended. The format is MMM dd yyyy HH:mm:ss or milliseconds since epoch (Jan 1st1970). An example would be reporting the end of a session. +Region name. -type: date +type: keyword + +example: Quebec -- -*`cef.extensions.eventId`*:: +*`geo.timezone`*:: + -- -This is a unique ID that ArcSight assigns to each event. +The time zone of the location, such as IANA time zone name. -type: long +type: keyword + +example: America/Argentina/Buenos_Aires -- -*`cef.extensions.eventOutcome`*:: +[float] +=== group + +The group fields are meant to represent groups that are relevant to the event. + + +*`group.domain`*:: + -- -Displays the outcome, usually as 'success' or 'failure'. +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`cef.extensions.externalId`*:: +*`group.id`*:: + -- -The ID used by an originating device. They are usually increasing numbers, associated with events. +Unique identifier for the group on the system/platform. type: keyword -- -*`cef.extensions.fileCreateTime`*:: +*`group.name`*:: + -- -Time when the file was created. +Name of the group. -type: date +type: keyword -- -*`cef.extensions.fileHash`*:: +[float] +=== hash + +The hash fields represent different bitwise hash algorithms and their values. +Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +Note that this fieldset is used for common hashes that may be computed over a range of generic bytes. Entity-specific hashes such as ja3 or imphash are placed in the fieldsets to which they relate (tls and pe, respectively). + + +*`hash.md5`*:: + -- -Hash of a file. +MD5 hash. type: keyword -- -*`cef.extensions.fileId`*:: +*`hash.sha1`*:: + -- -An ID associated with a file could be the inode. +SHA1 hash. type: keyword -- -*`cef.extensions.fileModificationTime`*:: +*`hash.sha256`*:: + -- -Time when the file was last modified. +SHA256 hash. -type: date +type: keyword -- -*`cef.extensions.filename`*:: +*`hash.sha512`*:: + -- -Name of the file only (without its path). +SHA512 hash. type: keyword -- -*`cef.extensions.filePath`*:: +*`hash.ssdeep`*:: + -- -Full path to the file, including file name itself. +SSDEEP hash. type: keyword -- -*`cef.extensions.filePermission`*:: +[float] +=== host + +A host is defined as a general computing instance. +ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. + + +*`host.architecture`*:: + -- -Permissions of the file. +Operating system architecture. type: keyword +example: x86_64 + -- -*`cef.extensions.fileSize`*:: +*`host.cpu.usage`*:: + -- -Size of the file. +Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. +Scaling factor: 1000. +For example: For a two core host, this value should be the average of the two cores, between 0 and 1. -type: long +type: scaled_float -- -*`cef.extensions.fileType`*:: +*`host.disk.read.bytes`*:: + -- -Type of file (pipe, socket, etc.) +The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection. -type: keyword +type: long -- -*`cef.extensions.flexDate1`*:: +*`host.disk.write.bytes`*:: + -- -A timestamp field available to map a timestamp that does not apply to any other defined timestamp field in this dictionary. Use all flex fields sparingly and seek a more specific, dictionary supplied field when possible. These fields are typically reserved for customer use and should not be set by vendors unless necessary. +The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection. -type: date +type: long -- -*`cef.extensions.flexDate1Label`*:: +*`host.domain`*:: + -- -The label field is a string and describes the purpose of the flex field. +Name of the domain of which the host is a member. +For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. type: keyword +example: CONTOSO + -- -*`cef.extensions.flexString1`*:: +*`host.geo.city_name`*:: + -- -One of four floating point fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. These fields are typically reserved for customer use and should not be set by vendors unless necessary. +City name. type: keyword +example: Montreal + -- -*`cef.extensions.flexString2`*:: +*`host.geo.continent_code`*:: + -- -One of four floating point fields available to map fields that do not apply to any other in this dictionary. Use sparingly and seek a more specific, dictionary supplied field when possible. These fields are typically reserved for customer use and should not be set by vendors unless necessary. +Two-letter code representing continent's name. type: keyword +example: NA + -- -*`cef.extensions.flexString1Label`*:: +*`host.geo.continent_name`*:: + -- -The label field is a string and describes the purpose of the flex field. +Name of the continent. type: keyword +example: North America + -- -*`cef.extensions.flexString2Label`*:: +*`host.geo.country_iso_code`*:: + -- -The label field is a string and describes the purpose of the flex field. +Country ISO code. type: keyword +example: CA + -- -*`cef.extensions.message`*:: +*`host.geo.country_name`*:: + -- -An arbitrary message giving more details about the event. Multi-line entries can be produced by using \n as the new line separator. +Country name. type: keyword +example: Canada + -- -*`cef.extensions.oldFileCreateTime`*:: +*`host.geo.location`*:: + -- -Time when old file was created. +Longitude and latitude. -type: date +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`cef.extensions.oldFileHash`*:: +*`host.geo.name`*:: + -- -Hash of the old file. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`cef.extensions.oldFileId`*:: +*`host.geo.postal_code`*:: + -- -An ID associated with the old file could be the inode. +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. type: keyword +example: 94040 + -- -*`cef.extensions.oldFileModificationTime`*:: +*`host.geo.region_iso_code`*:: + -- -Time when old file was last modified. +Region ISO code. -type: date +type: keyword + +example: CA-QC -- -*`cef.extensions.oldFileName`*:: +*`host.geo.region_name`*:: + -- -Name of the old file. +Region name. type: keyword +example: Quebec + -- -*`cef.extensions.oldFilePath`*:: +*`host.geo.timezone`*:: + -- -Full path to the old file, including the file name itself. +The time zone of the location, such as IANA time zone name. type: keyword +example: America/Argentina/Buenos_Aires + -- -*`cef.extensions.oldFilePermission`*:: +*`host.hostname`*:: + -- -Permissions of the old file. +Hostname of the host. +It normally contains what the `hostname` command returns on the host machine. type: keyword -- -*`cef.extensions.oldFileSize`*:: +*`host.id`*:: + -- -Size of the old file. +Unique host id. +As hostname is not always unique, use values that are meaningful in your environment. +Example: The current usage of `beat.name`. -type: long +type: keyword -- -*`cef.extensions.oldFileType`*:: +*`host.ip`*:: + -- -Type of the old file (pipe, socket, etc.) +Host ip addresses. -type: keyword +type: ip -- -*`cef.extensions.rawEvent`*:: +*`host.mac`*:: + -- -None +Host MAC addresses. +The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. type: keyword +example: ["00-00-5E-00-53-23", "00-00-5E-00-53-24"] + -- -*`cef.extensions.Reason`*:: +*`host.name`*:: + -- -The reason an audit event was generated. For example "bad password" or "unknown user". This could also be an error or return code. Example "0x1234". +Name of the host. +It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. type: keyword -- -*`cef.extensions.requestClientApplication`*:: +*`host.network.egress.bytes`*:: + -- -The User-Agent associated with the request. +The number of bytes (gauge) sent out on all network interfaces by the host since the last metric collection. -type: keyword +type: long -- -*`cef.extensions.requestContext`*:: +*`host.network.egress.packets`*:: + -- -Description of the content from which the request originated (for example, HTTP Referrer) +The number of packets (gauge) sent out on all network interfaces by the host since the last metric collection. -type: keyword +type: long -- -*`cef.extensions.requestCookies`*:: +*`host.network.ingress.bytes`*:: + -- -Cookies associated with the request. +The number of bytes received (gauge) on all network interfaces by the host since the last metric collection. -type: keyword +type: long -- -*`cef.extensions.requestMethod`*:: +*`host.network.ingress.packets`*:: + -- -The HTTP method used to access a URL. +The number of packets (gauge) received on all network interfaces by the host since the last metric collection. -type: keyword +type: long -- -*`cef.extensions.requestUrl`*:: +*`host.os.family`*:: + -- -In the case of an HTTP request, this field contains the URL accessed. The URL should contain the protocol as well. +OS family (such as redhat, debian, freebsd, windows). type: keyword +example: debian + -- -*`cef.extensions.sourceAddress`*:: +*`host.os.full`*:: + -- -Identifies the source that an event refers to in an IP network. +Operating system name, including the version or code name. -type: ip +type: keyword + +example: Mac OS Mojave -- -*`cef.extensions.sourceDnsDomain`*:: +*`host.os.full.text`*:: + -- -The DNS domain part of the complete fully qualified domain name (FQDN). - -type: keyword +type: match_only_text -- -*`cef.extensions.sourceGeoLatitude`*:: +*`host.os.kernel`*:: + -- -None +Operating system kernel version as a raw string. -type: double +type: keyword + +example: 4.4.0-112-generic -- -*`cef.extensions.sourceGeoLongitude`*:: +*`host.os.name`*:: + -- -None +Operating system name, without the version. -type: double +type: keyword + +example: Mac OS X -- -*`cef.extensions.sourceHostName`*:: +*`host.os.name.text`*:: + -- -Identifies the source that an event refers to in an IP network. The format should be a fully qualified domain name (FQDN) associated with the source node, when a mode is available. Examples: 'host' or 'host.domain.com'. +type: match_only_text + +-- +*`host.os.platform`*:: ++ +-- +Operating system platform (such centos, ubuntu, windows). type: keyword +example: darwin + -- -*`cef.extensions.sourceMacAddress`*:: +*`host.os.type`*:: + -- -Six colon-separated hexadecimal numbers. +Use the `os.type` field to categorize the operating system into one of the broad commercial families. +One of these following values should be used (lowercase): linux, macos, unix, windows. +If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. type: keyword -example: 00:0d:60:af:1b:61 +example: macos -- -*`cef.extensions.sourceNtDomain`*:: +*`host.os.version`*:: + -- -The Windows domain name for the source address. +Operating system version as a raw string. type: keyword +example: 10.14.1 + -- -*`cef.extensions.sourcePort`*:: +*`host.type`*:: + -- -The valid port numbers are 0 to 65535. +Type of host. +For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. -type: long +type: keyword -- -*`cef.extensions.sourceProcessId`*:: +*`host.uptime`*:: + -- -The ID of the source process associated with the event. +Seconds the host has been up. type: long +example: 1325 + -- -*`cef.extensions.sourceProcessName`*:: +[float] +=== http + +Fields related to HTTP activity. Use the `url` field set to store the url of the request. + + +*`http.request.body.bytes`*:: + -- -The name of the event's source process. +Size in bytes of the request body. -type: keyword +type: long + +example: 887 + +format: bytes -- -*`cef.extensions.sourceServiceName`*:: +*`http.request.body.content`*:: + -- -The service that is responsible for generating this event. +The full HTTP request body. -type: keyword +type: wildcard + +example: Hello world -- -*`cef.extensions.sourceTranslatedAddress`*:: +*`http.request.body.content.text`*:: + -- -Identifies the translated source that the event refers to in an IP network. - -type: ip +type: match_only_text -- -*`cef.extensions.sourceTranslatedPort`*:: +*`http.request.bytes`*:: + -- -A port number after being translated by, for example, a firewall. Valid port numbers are 0 to 65535. +Total size in bytes of the request (body and headers). type: long +example: 1437 + +format: bytes + -- -*`cef.extensions.sourceTranslatedZoneExternalID`*:: +*`http.request.id`*:: + -- -None +A unique identifier for each HTTP request to correlate logs between clients and servers in transactions. +The id may be contained in a non-standard HTTP header, such as `X-Request-ID` or `X-Correlation-ID`. type: keyword +example: 123e4567-e89b-12d3-a456-426614174000 + -- -*`cef.extensions.sourceTranslatedZoneURI`*:: +*`http.request.method`*:: + -- -The URI for the Translated Zone that the destination asset has been assigned to in ArcSight. +HTTP request method. +The value should retain its casing from the original event. For example, `GET`, `get`, and `GeT` are all considered valid values for this field. type: keyword +example: POST + -- -*`cef.extensions.sourceUserId`*:: +*`http.request.mime_type`*:: + -- -Identifies the source user by ID. This is the user associated with the source of the event. For example, in UNIX, the root user is generally associated with user ID 0. +Mime type of the body of the request. +This value must only be populated based on the content of the request body, not on the `Content-Type` header. Comparing the mime type of a request with the request's Content-Type header can be helpful in detecting threats or misconfigured clients. type: keyword +example: image/gif + -- -*`cef.extensions.sourceUserName`*:: +*`http.request.referrer`*:: + -- -Identifies the source user by name. Email addresses are also mapped into the UserName fields. The sender is a candidate to put into this field. +Referrer for this HTTP request. type: keyword +example: https://blog.example.com/ + -- -*`cef.extensions.sourceUserPrivileges`*:: +*`http.response.body.bytes`*:: + -- -The typical values are "Administrator", "User", and "Guest". It identifies the source user's privileges. In UNIX, for example, activity executed by the root user would be identified with "Administrator". +Size in bytes of the response body. -type: keyword +type: long + +example: 887 + +format: bytes -- -*`cef.extensions.sourceZoneExternalID`*:: +*`http.response.body.content`*:: + -- -None +The full HTTP response body. -type: keyword +type: wildcard + +example: Hello world -- -*`cef.extensions.sourceZoneURI`*:: +*`http.response.body.content.text`*:: + -- -The URI for the Zone that the source asset has been assigned to in ArcSight. - -type: keyword +type: match_only_text -- -*`cef.extensions.startTime`*:: +*`http.response.bytes`*:: + -- -The time when the activity the event referred to started. The format is MMM dd yyyy HH:mm:ss or milliseconds since epoch (Jan 1st 1970) +Total size in bytes of the response (body and headers). -type: date +type: long + +example: 1437 + +format: bytes -- -*`cef.extensions.transportProtocol`*:: +*`http.response.mime_type`*:: + -- -Identifies the Layer-4 protocol used. The possible values are protocols such as TCP or UDP. +Mime type of the body of the response. +This value must only be populated based on the content of the response body, not on the `Content-Type` header. Comparing the mime type of a response with the response's Content-Type header can be helpful in detecting misconfigured servers. type: keyword +example: image/gif + -- -*`cef.extensions.type`*:: +*`http.response.status_code`*:: + -- -0 means base event, 1 means aggregated, 2 means correlation, and 3 means action. This field can be omitted for base events (type 0). +HTTP response status code. type: long +example: 404 + +format: string + -- -*`cef.extensions.categoryDeviceType`*:: +*`http.version`*:: + -- -Device type. Examples - Proxy, IDS, Web Server +HTTP version. type: keyword +example: 1.1 + -- -*`cef.extensions.categoryObject`*:: +[float] +=== interface + +The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated. + + +*`interface.alias`*:: + -- -Object that the event is about. For example it can be an operating sytem, database, file, etc. +Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. type: keyword +example: outside + -- -*`cef.extensions.categoryBehavior`*:: +*`interface.id`*:: + -- -Action or a behavior associated with an event. It's what is being done to the object. +Interface ID as reported by an observer (typically SNMP interface ID). type: keyword +example: 10 + -- -*`cef.extensions.categoryTechnique`*:: +*`interface.name`*:: + -- -Technique being used (e.g. /DoS). +Interface name as reported by the system. type: keyword +example: eth0 + -- -*`cef.extensions.categoryDeviceGroup`*:: +[float] +=== log + +Details about the event's logging mechanism or logging transport. +The log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`. +The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. + + +*`log.file.path`*:: + -- -General device group like Firewall. +Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. +If the event wasn't read from a log file, do not populate this field. type: keyword +example: /var/log/fun-times.log + -- -*`cef.extensions.categorySignificance`*:: +*`log.level`*:: + -- -Characterization of the importance of the event. +Original log level of the log event. +If the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity). +Some examples are `warn`, `err`, `i`, `informational`. type: keyword +example: error + -- -*`cef.extensions.categoryOutcome`*:: +*`log.logger`*:: + -- -Outcome of the event (e.g. sucess, failure, or attempt). +The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name. type: keyword +example: org.elasticsearch.bootstrap.Bootstrap + -- -*`cef.extensions.managerReceiptTime`*:: +*`log.origin.file.line`*:: + -- -When the Arcsight ESM received the event. +The line number of the file containing the source code which originated the log event. -type: date +type: long + +example: 42 -- -*`source.service.name`*:: +*`log.origin.file.name`*:: + -- -Service that is the source of the event. +The name of the file containing the source code which originated the log event. +Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. type: keyword +example: Bootstrap.java + -- -*`destination.service.name`*:: +*`log.origin.function`*:: + -- -Service that is the target of the event. +The name of the function or method which originated the log event. type: keyword --- +example: init -[[exported-fields-cef-module]] -== CEF fields +-- -Module for receiving CEF logs over Syslog. The module adds vendor specific fields in addition to the fields the decode_cef processor provides. +*`log.syslog`*:: ++ +-- +The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164. +type: object +-- -[float] -=== forcepoint - -Fields for Forcepoint Custom String mappings - - - -*`forcepoint.virus_id`*:: +*`log.syslog.facility.code`*:: + -- -Virus ID - - -type: keyword - --- +The Syslog numeric facility of the log event, if available. +According to RFCs 5424 and 3164, this value should be an integer between 0 and 23. -[float] -=== checkpoint +type: long -Fields for Check Point custom string mappings. +example: 23 +format: string +-- -*`checkpoint.app_risk`*:: +*`log.syslog.facility.name`*:: + -- -Application risk. +The Syslog text-based facility of the log event, if available. type: keyword +example: local7 + -- -*`checkpoint.app_severity`*:: +*`log.syslog.priority`*:: + -- -Application threat severity. +Syslog numeric priority of the event, if available. +According to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191. -type: keyword +type: long + +example: 135 + +format: string -- -*`checkpoint.app_sig_id`*:: +*`log.syslog.severity.code`*:: + -- -The signature ID which the application was detected by. +The Syslog numeric severity of the log event, if available. +If the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`. -type: keyword +type: long + +example: 3 -- -*`checkpoint.auth_method`*:: +*`log.syslog.severity.name`*:: + -- -Password authentication protocol used. +The Syslog numeric severity of the log event, if available. +If the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`. type: keyword --- +example: Error -*`checkpoint.category`*:: -+ -- -Category. -type: keyword +[float] +=== network --- +The network is defined as the communication path over which a host or network event happens. +The network.* fields should be populated with details about the network activity associated with an event. -*`checkpoint.confidence_level`*:: + +*`network.application`*:: + -- -Confidence level determined. +When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name. +For example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`. +The field value must be normalized to lowercase for querying. -type: integer +type: keyword + +example: aim -- -*`checkpoint.connectivity_state`*:: +*`network.bytes`*:: + -- -Connectivity state. +Total bytes transferred in both directions. +If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. -type: keyword +type: long + +example: 368 + +format: bytes -- -*`checkpoint.cookie`*:: +*`network.community_id`*:: + -- -IKE cookie. +A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. +Learn more at https://github.com/corelight/community-id-spec. type: keyword +example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + -- -*`checkpoint.dst_phone_number`*:: +*`network.direction`*:: + -- -Destination IP-Phone. +Direction of the network traffic. +Recommended values are: + * ingress + * egress + * inbound + * outbound + * internal + * external + * unknown + +When mapping events from a host-based monitoring context, populate this field from the host's point of view, using the values "ingress" or "egress". +When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of the network perimeter, using the values "inbound", "outbound", "internal" or "external". +Note that "internal" is not crossing perimeter boundaries, and is meant to describe communication between two hosts within the perimeter. Note also that "external" is meant to describe traffic between two hosts that are external to the perimeter. This could for example be useful for ISPs or VPN service providers. type: keyword +example: inbound + -- -*`checkpoint.email_control`*:: +*`network.forwarded_ip`*:: + -- -Engine name. +Host IP address when the source IP address is the proxy. -type: keyword +type: ip + +example: 192.1.1.2 -- -*`checkpoint.email_id`*:: +*`network.iana_number`*:: + -- -Internal email ID. +IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. type: keyword +example: 6 + -- -*`checkpoint.email_recipients_num`*:: +*`network.inner`*:: + -- -Number of recipients. +Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) -type: long +type: object -- -*`checkpoint.email_session_id`*:: +*`network.inner.vlan.id`*:: + -- -Internal email session ID. +VLAN ID as reported by the observer. type: keyword +example: 10 + -- -*`checkpoint.email_spool_id`*:: +*`network.inner.vlan.name`*:: + -- -Internal email spool ID. +Optional VLAN name as reported by the observer. type: keyword +example: outside + -- -*`checkpoint.email_subject`*:: +*`network.name`*:: + -- -Email subject. +Name given by operators to sections of their network. type: keyword +example: Guest Wifi + -- -*`checkpoint.event_count`*:: +*`network.packets`*:: + -- -Number of events associated with the log. +Total packets transferred in both directions. +If `source.packets` and `destination.packets` are known, `network.packets` is their sum. type: long +example: 24 + -- -*`checkpoint.frequency`*:: +*`network.protocol`*:: + -- -Scan frequency. +In the OSI Model this would be the Application Layer protocol. For example, `http`, `dns`, or `ssh`. +The field value must be normalized to lowercase for querying. type: keyword +example: http + -- -*`checkpoint.icmp_type`*:: +*`network.transport`*:: + -- -ICMP type. +Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) +The field value must be normalized to lowercase for querying. -type: long +type: keyword + +example: tcp -- -*`checkpoint.icmp_code`*:: +*`network.type`*:: + -- -ICMP code. +In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc +The field value must be normalized to lowercase for querying. -type: long +type: keyword + +example: ipv4 -- -*`checkpoint.identity_type`*:: +*`network.vlan.id`*:: + -- -Identity type. +VLAN ID as reported by the observer. type: keyword +example: 10 + -- -*`checkpoint.incident_extension`*:: +*`network.vlan.name`*:: + -- -Format of original data. +Optional VLAN name as reported by the observer. type: keyword +example: outside + -- -*`checkpoint.integrity_av_invoke_type`*:: +[float] +=== observer + +An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. +This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. + + +*`observer.egress`*:: + -- -Scan invoke type. +Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. -type: keyword +type: object -- -*`checkpoint.malware_family`*:: +*`observer.egress.interface.alias`*:: + -- -Malware family. +Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. type: keyword +example: outside + -- -*`checkpoint.peer_gateway`*:: +*`observer.egress.interface.id`*:: + -- -Main IP of the peer Security Gateway. +Interface ID as reported by an observer (typically SNMP interface ID). -type: ip +type: keyword + +example: 10 -- -*`checkpoint.performance_impact`*:: +*`observer.egress.interface.name`*:: + -- -Protection performance impact. +Interface name as reported by the system. -type: integer +type: keyword + +example: eth0 -- -*`checkpoint.protection_id`*:: +*`observer.egress.vlan.id`*:: + -- -Protection malware ID. +VLAN ID as reported by the observer. type: keyword +example: 10 + -- -*`checkpoint.protection_name`*:: +*`observer.egress.vlan.name`*:: + -- -Specific signature name of the attack. +Optional VLAN name as reported by the observer. type: keyword +example: outside + -- -*`checkpoint.protection_type`*:: +*`observer.egress.zone`*:: + -- -Type of protection used to detect the attack. +Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc. type: keyword +example: Public_Internet + -- -*`checkpoint.scan_result`*:: +*`observer.geo.city_name`*:: + -- -Scan result. +City name. type: keyword +example: Montreal + -- -*`checkpoint.sensor_mode`*:: +*`observer.geo.continent_code`*:: + -- -Sensor mode. +Two-letter code representing continent's name. type: keyword +example: NA + -- -*`checkpoint.severity`*:: +*`observer.geo.continent_name`*:: + -- -Threat severity. +Name of the continent. type: keyword +example: North America + -- -*`checkpoint.spyware_name`*:: +*`observer.geo.country_iso_code`*:: + -- -Spyware name. +Country ISO code. type: keyword +example: CA + -- -*`checkpoint.spyware_status`*:: +*`observer.geo.country_name`*:: + -- -Spyware status. +Country name. type: keyword +example: Canada + -- -*`checkpoint.subs_exp`*:: +*`observer.geo.location`*:: + -- -The expiration date of the subscription. +Longitude and latitude. -type: date +type: geo_point + +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`checkpoint.tcp_flags`*:: +*`observer.geo.name`*:: + -- -TCP packet flags. +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`checkpoint.termination_reason`*:: +*`observer.geo.postal_code`*:: + -- -Termination reason. +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. type: keyword +example: 94040 + -- -*`checkpoint.update_status`*:: +*`observer.geo.region_iso_code`*:: + -- -Update status. +Region ISO code. type: keyword +example: CA-QC + -- -*`checkpoint.user_status`*:: +*`observer.geo.region_name`*:: + -- -User response. +Region name. type: keyword +example: Quebec + -- -*`checkpoint.uuid`*:: +*`observer.geo.timezone`*:: + -- -External ID. +The time zone of the location, such as IANA time zone name. type: keyword +example: America/Argentina/Buenos_Aires + -- -*`checkpoint.virus_name`*:: +*`observer.hostname`*:: + -- -Virus name. +Hostname of the observer. type: keyword -- -*`checkpoint.voip_log_type`*:: +*`observer.ingress`*:: + -- -VoIP log types. +Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. -type: keyword +type: object -- -[float] -=== cef.extensions +*`observer.ingress.interface.alias`*:: ++ +-- +Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. -Extra vendor-specific extensions. +type: keyword +example: outside +-- -*`cef.extensions.cp_app_risk`*:: +*`observer.ingress.interface.id`*:: + -- +Interface ID as reported by an observer (typically SNMP interface ID). + type: keyword +example: 10 + -- -*`cef.extensions.cp_severity`*:: +*`observer.ingress.interface.name`*:: + -- +Interface name as reported by the system. + type: keyword +example: eth0 + -- -*`cef.extensions.ifname`*:: +*`observer.ingress.vlan.id`*:: + -- +VLAN ID as reported by the observer. + type: keyword +example: 10 + -- -*`cef.extensions.inzone`*:: +*`observer.ingress.vlan.name`*:: + -- +Optional VLAN name as reported by the observer. + type: keyword +example: outside + -- -*`cef.extensions.layer_uuid`*:: +*`observer.ingress.zone`*:: + -- +Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc. + type: keyword +example: DMZ + -- -*`cef.extensions.layer_name`*:: +*`observer.ip`*:: + -- -type: keyword +IP addresses of the observer. + +type: ip -- -*`cef.extensions.logid`*:: +*`observer.mac`*:: + -- +MAC addresses of the observer. +The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. + type: keyword +example: ["00-00-5E-00-53-23", "00-00-5E-00-53-24"] + -- -*`cef.extensions.loguid`*:: +*`observer.name`*:: + -- +Custom name of the observer. +This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. +If no custom name is needed, the field can be left empty. + type: keyword +example: 1_proxySG + -- -*`cef.extensions.match_id`*:: +*`observer.os.family`*:: + -- +OS family (such as redhat, debian, freebsd, windows). + type: keyword +example: debian + -- -*`cef.extensions.nat_addtnl_rulenum`*:: +*`observer.os.full`*:: + -- +Operating system name, including the version or code name. + type: keyword +example: Mac OS Mojave + -- -*`cef.extensions.nat_rulenum`*:: +*`observer.os.full.text`*:: + -- -type: keyword +type: match_only_text -- -*`cef.extensions.origin`*:: +*`observer.os.kernel`*:: + -- +Operating system kernel version as a raw string. + type: keyword +example: 4.4.0-112-generic + -- -*`cef.extensions.originsicname`*:: +*`observer.os.name`*:: + -- +Operating system name, without the version. + type: keyword +example: Mac OS X + -- -*`cef.extensions.outzone`*:: +*`observer.os.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`cef.extensions.parent_rule`*:: +*`observer.os.platform`*:: + -- +Operating system platform (such centos, ubuntu, windows). + type: keyword +example: darwin + -- -*`cef.extensions.product`*:: +*`observer.os.type`*:: + -- +Use the `os.type` field to categorize the operating system into one of the broad commercial families. +One of these following values should be used (lowercase): linux, macos, unix, windows. +If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. + type: keyword +example: macos + -- -*`cef.extensions.rule_action`*:: +*`observer.os.version`*:: + -- +Operating system version as a raw string. + type: keyword +example: 10.14.1 + -- -*`cef.extensions.rule_uid`*:: +*`observer.product`*:: + -- +The product name of the observer. + type: keyword +example: s200 + -- -*`cef.extensions.sequencenum`*:: +*`observer.serial_number`*:: + -- +Observer serial number. + type: keyword -- -*`cef.extensions.service_id`*:: +*`observer.type`*:: + -- +The type of the observer the data is coming from. +There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. + type: keyword +example: firewall + -- -*`cef.extensions.version`*:: +*`observer.vendor`*:: + -- +Vendor name of the observer. + type: keyword --- +example: Symantec -[[exported-fields-checkpoint]] -== Checkpoint fields +-- -Some checkpoint module +*`observer.version`*:: ++ +-- +Observer version. +type: keyword +-- [float] -=== checkpoint - -Module for parsing Checkpoint syslog. +=== orchestrator +Fields that describe the resources which container orchestrators manage or act upon. -*`checkpoint.confidence_level`*:: +*`orchestrator.api_version`*:: + -- -Confidence level determined by ThreatCloud. +API version being used to carry out the action +type: keyword -type: integer +example: v1beta1 -- -*`checkpoint.calc_desc`*:: +*`orchestrator.cluster.name`*:: + -- -Log description. - +Name of the cluster. type: keyword -- -*`checkpoint.dst_country`*:: +*`orchestrator.cluster.url`*:: + -- -Destination country. - +URL of the API used to manage the cluster. type: keyword -- -*`checkpoint.dst_user_name`*:: +*`orchestrator.cluster.version`*:: + -- -Connected user name on the destination IP. - +The version of the cluster. type: keyword -- -*`checkpoint.email_id`*:: +*`orchestrator.namespace`*:: + -- -Email number in smtp connection. - +Namespace in which the action is taking place. type: keyword +example: kube-system + -- -*`checkpoint.email_subject`*:: +*`orchestrator.organization`*:: + -- -Original email subject. - +Organization affected by the event (for multi-tenant orchestrator setups). type: keyword +example: elastic + -- -*`checkpoint.email_session_id`*:: +*`orchestrator.resource.name`*:: + -- -Connection uuid. - +Name of the resource being acted upon. type: keyword +example: test-pod-cdcws + -- -*`checkpoint.event_count`*:: +*`orchestrator.resource.type`*:: + -- -Number of events associated with the log. +Type of resource being acted upon. +type: keyword -type: long +example: service -- -*`checkpoint.sys_message`*:: +*`orchestrator.type`*:: + -- -System messages - +Orchestrator cluster type (e.g. kubernetes, nomad or cloudfoundry). type: keyword --- +example: kubernetes -*`checkpoint.logid`*:: -+ -- -System messages +[float] +=== organization -type: keyword +The organization fields enrich data with information about the company or entity the data is associated with. +These fields help you arrange or filter data stored in an index by one or multiple organizations. --- -*`checkpoint.failure_impact`*:: +*`organization.id`*:: + -- -The impact of update service failure. - +Unique identifier for the organization. type: keyword -- -*`checkpoint.id`*:: +*`organization.name`*:: + -- -Override application ID. - +Organization name. -type: integer +type: keyword -- -*`checkpoint.identity_src`*:: +*`organization.name.text`*:: + -- -The source for authentication identity information. +type: match_only_text +-- -type: keyword +[float] +=== os --- +The OS fields contain information about the operating system. -*`checkpoint.information`*:: + +*`os.family`*:: + -- -Policy installation status for a specific blade. - +OS family (such as redhat, debian, freebsd, windows). type: keyword +example: debian + -- -*`checkpoint.layer_name`*:: +*`os.full`*:: + -- -Layer name. - +Operating system name, including the version or code name. type: keyword +example: Mac OS Mojave + -- -*`checkpoint.layer_uuid`*:: +*`os.full.text`*:: + -- -Layer UUID. - - -type: keyword +type: match_only_text -- -*`checkpoint.log_id`*:: +*`os.kernel`*:: + -- -Unique identity for logs. +Operating system kernel version as a raw string. +type: keyword -type: integer +example: 4.4.0-112-generic -- -*`checkpoint.malware_family`*:: +*`os.name`*:: + -- -Additional information on protection. - +Operating system name, without the version. type: keyword +example: Mac OS X + -- -*`checkpoint.origin_sic_name`*:: +*`os.name.text`*:: + -- -Machine SIC. - - -type: keyword +type: match_only_text -- -*`checkpoint.policy_mgmt`*:: +*`os.platform`*:: + -- -Name of the Management Server that manages this Security Gateway. - +Operating system platform (such centos, ubuntu, windows). type: keyword +example: darwin + -- -*`checkpoint.policy_name`*:: +*`os.type`*:: + -- -Name of the last policy that this Security Gateway fetched. - +Use the `os.type` field to categorize the operating system into one of the broad commercial families. +One of these following values should be used (lowercase): linux, macos, unix, windows. +If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. type: keyword +example: macos + -- -*`checkpoint.protection_id`*:: +*`os.version`*:: + -- -Protection malware id. - +Operating system version as a raw string. type: keyword --- +example: 10.14.1 -*`checkpoint.protection_name`*:: -+ -- -Specific signature name of the attack. +[float] +=== package -type: keyword +These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location. --- -*`checkpoint.protection_type`*:: +*`package.architecture`*:: + -- -Type of protection used to detect the attack. - +Package architecture. type: keyword +example: x86_64 + -- -*`checkpoint.protocol`*:: +*`package.build_version`*:: + -- -Protocol detected on the connection. - +Additional information about the build version of the installed package. +For example use the commit SHA of a non-released package. type: keyword +example: 36f4f7e89dd61b0988b12ee000b98966867710cd + -- -*`checkpoint.proxy_src_ip`*:: +*`package.checksum`*:: + -- -Sender source IP (even when using proxy). +Checksum of the installed package for verification. +type: keyword -type: ip +example: 68b329da9893e34099c7d8ad5cb9c940 -- -*`checkpoint.rule`*:: +*`package.description`*:: + -- -Matched rule number. +Description of the package. +type: keyword -type: integer +example: Open source programming language to build simple/reliable/efficient software. -- -*`checkpoint.rule_action`*:: +*`package.install_scope`*:: + -- -Action of the matched rule in the access policy. - +Indicating how the package was installed, e.g. user-local, global. type: keyword +example: global + -- -*`checkpoint.scan_direction`*:: +*`package.installed`*:: + -- -Scan direction. - +Time when package was installed. -type: keyword +type: date -- -*`checkpoint.session_id`*:: +*`package.license`*:: + -- -Log uuid. - +License under which the package was released. +Use a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/). type: keyword +example: Apache License 2.0 + -- -*`checkpoint.source_os`*:: +*`package.name`*:: + -- -OS which generated the attack. - +Package name type: keyword +example: go + -- -*`checkpoint.src_country`*:: +*`package.path`*:: + -- -Country name, derived from connection source IP address. - +Path where the package is installed. type: keyword +example: /usr/local/Cellar/go/1.12.9/ + -- -*`checkpoint.src_user_name`*:: +*`package.reference`*:: + -- -User name connected to source IP - +Home page or reference URL of the software in this package, if available. type: keyword +example: https://golang.org + -- -*`checkpoint.ticket_id`*:: +*`package.size`*:: + -- -Unique ID per file. +Package size in bytes. +type: long -type: keyword +example: 62231 + +format: string -- -*`checkpoint.tls_server_host_name`*:: +*`package.type`*:: + -- -SNI/CN from encrypted TLS connection used by URLF for categorization. - +Type of package. +This should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar. type: keyword +example: rpm + -- -*`checkpoint.verdict`*:: +*`package.version`*:: + -- -TE engine verdict Possible values: Malicious/Benign/Error. - +Package version type: keyword --- +example: 1.12.9 -*`checkpoint.user`*:: -+ -- -Source user name. +[float] +=== pe -type: keyword +These fields contain Windows Portable Executable (PE) metadata. --- -*`checkpoint.vendor_list`*:: +*`pe.architecture`*:: + -- -The vendor name that provided the verdict for a malicious URL. - +CPU architecture target for the file. type: keyword +example: x64 + -- -*`checkpoint.web_server_type`*:: +*`pe.company`*:: + -- -Web server detected in the HTTP response. - +Internal company name of the file, provided at compile-time. type: keyword +example: Microsoft Corporation + -- -*`checkpoint.client_name`*:: +*`pe.description`*:: + -- -Client Application or Software Blade that detected the event. - +Internal description of the file, provided at compile-time. type: keyword +example: Paint + -- -*`checkpoint.client_version`*:: +*`pe.file_version`*:: + -- -Build version of SandBlast Agent client installed on the computer. - +Internal version of the file, provided at compile-time. type: keyword +example: 6.3.9600.17415 + -- -*`checkpoint.extension_version`*:: +*`pe.imphash`*:: + -- -Build version of the SandBlast Agent browser extension. - +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword +example: 0c6803c4e922103c4dca5963aad36ddf + -- -*`checkpoint.host_time`*:: +*`pe.original_file_name`*:: + -- -Local time on the endpoint computer. - +Internal name of the file, provided at compile-time. type: keyword +example: MSPAINT.EXE + -- -*`checkpoint.installed_products`*:: +*`pe.product`*:: + -- -List of installed Endpoint Software Blades. - +Internal product name of the file, provided at compile-time. type: keyword --- +example: Microsoft® Windows® Operating System -*`checkpoint.cc`*:: -+ -- -The Carbon Copy address of the email. +[float] +=== process -type: keyword +These fields contain information about a process. +These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. --- -*`checkpoint.parent_process_username`*:: +*`process.args`*:: + -- -Owner username of the parent process of the process that triggered the attack. - +Array of process arguments, starting with the absolute path to the executable. +May be filtered to protect sensitive information. type: keyword +example: ["/usr/bin/ssh", "-l", "user", "10.0.0.16"] + -- -*`checkpoint.process_username`*:: +*`process.args_count`*:: + -- -Owner username of the process that triggered the attack. +Length of the process.args array. +This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. +type: long -type: keyword +example: 4 -- -*`checkpoint.audit_status`*:: +*`process.code_signature.digest_algorithm`*:: + -- -Audit Status. Can be Success or Failure. - +The hashing algorithm used to sign the process. +This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. type: keyword +example: sha256 + -- -*`checkpoint.objecttable`*:: +*`process.code_signature.exists`*:: + -- -Table of affected objects. +Boolean to capture if a signature is present. +type: boolean -type: keyword +example: true -- -*`checkpoint.objecttype`*:: +*`process.code_signature.signing_id`*:: + -- -The type of the affected object. - +The identifier used to sign the process. +This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. type: keyword +example: com.apple.xpc.proxy + -- -*`checkpoint.operation_number`*:: +*`process.code_signature.status`*:: + -- -The operation nuber. - +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword +example: ERROR_UNTRUSTED_ROOT + -- -*`checkpoint.email_recipients_num`*:: +*`process.code_signature.subject_name`*:: + -- -Amount of recipients whom the mail was sent to. +Subject name of the code signer +type: keyword -type: integer +example: Microsoft Corporation -- -*`checkpoint.suppressed_logs`*:: +*`process.code_signature.team_id`*:: + -- -Aggregated connections for five minutes on the same source, destination and port. +The team identifier used to sign the process. +This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. +type: keyword -type: integer +example: EQHXZ8M8AV -- -*`checkpoint.blade_name`*:: +*`process.code_signature.timestamp`*:: + -- -Blade name. +Date and time when the code signature was generated and signed. +type: date -type: keyword +example: 2021-01-01T12:10:30Z -- -*`checkpoint.status`*:: +*`process.code_signature.trusted`*:: + -- -Ok/Warning/Error. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +type: boolean -type: keyword +example: true -- -*`checkpoint.short_desc`*:: +*`process.code_signature.valid`*:: + -- -Short description of the process that was executed. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. +type: boolean -type: keyword +example: true -- -*`checkpoint.long_desc`*:: +*`process.command_line`*:: + -- -More information on the process (usually describing error reason in failure). +Full command line that started the process, including the absolute path to the executable, and all arguments. +Some arguments may be filtered to protect sensitive information. +type: wildcard -type: keyword +example: /usr/bin/ssh -l user 10.0.0.16 -- -*`checkpoint.scan_hosts_hour`*:: +*`process.command_line.text`*:: + -- -Number of unique hosts during the last hour. - - -type: integer +type: match_only_text -- -*`checkpoint.scan_hosts_day`*:: +*`process.elf.architecture`*:: + -- -Number of unique hosts during the last day. +Machine architecture of the ELF file. +type: keyword -type: integer +example: x86-64 -- -*`checkpoint.scan_hosts_week`*:: +*`process.elf.byte_order`*:: + -- -Number of unique hosts during the last week. +Byte sequence of ELF file. +type: keyword -type: integer +example: Little Endian -- -*`checkpoint.unique_detected_hour`*:: +*`process.elf.cpu_type`*:: + -- -Detected virus for a specific host during the last hour. +CPU type of the ELF file. +type: keyword -type: integer +example: Intel -- -*`checkpoint.unique_detected_day`*:: +*`process.elf.creation_date`*:: + -- -Detected virus for a specific host during the last day. - +Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. -type: integer +type: date -- -*`checkpoint.unique_detected_week`*:: +*`process.elf.exports`*:: + -- -Detected virus for a specific host during the last week. - +List of exported element names and types. -type: integer +type: flattened -- -*`checkpoint.scan_mail`*:: +*`process.elf.header.abi_version`*:: + -- -Number of emails that were scanned by "AB malicious activity" engine. - +Version of the ELF Application Binary Interface (ABI). -type: integer +type: keyword -- -*`checkpoint.additional_ip`*:: +*`process.elf.header.class`*:: + -- -DNS host name. - +Header class of the ELF file. type: keyword -- -*`checkpoint.description`*:: +*`process.elf.header.data`*:: + -- -Additional explanation how the security gateway enforced the connection. - +Data table of the ELF header. type: keyword -- -*`checkpoint.email_spam_category`*:: +*`process.elf.header.entrypoint`*:: + -- -Email categories. Possible values: spam/not spam/phishing. +Header entrypoint of the ELF file. +type: long -type: keyword +format: string -- -*`checkpoint.email_control_analysis`*:: +*`process.elf.header.object_version`*:: + -- -Message classification, received from spam vendor engine. - +"0x1" for original ELF files. type: keyword -- -*`checkpoint.scan_results`*:: +*`process.elf.header.os_abi`*:: + -- -"Infected"/description of a failure. - +Application Binary Interface (ABI) of the Linux OS. type: keyword -- -*`checkpoint.original_queue_id`*:: +*`process.elf.header.type`*:: + -- -Original postfix email queue id. - +Header type of the ELF file. type: keyword -- -*`checkpoint.risk`*:: +*`process.elf.header.version`*:: + -- -Risk level we got from the engine. - +Version of the ELF header. type: keyword -- -*`checkpoint.roles`*:: +*`process.elf.imports`*:: + -- -The role of identity. - +List of imported element names and types. -type: keyword +type: flattened -- -*`checkpoint.observable_name`*:: +*`process.elf.sections`*:: + -- -IOC observable signature name. - +An array containing an object for each section of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. -type: keyword +type: nested -- -*`checkpoint.observable_id`*:: +*`process.elf.sections.chi2`*:: + -- -IOC observable signature id. +Chi-square probability distribution of the section. +type: long -type: keyword +format: number -- -*`checkpoint.observable_comment`*:: +*`process.elf.sections.entropy`*:: + -- -IOC observable signature description. +Shannon entropy calculation from the section. +type: long -type: keyword +format: number -- -*`checkpoint.indicator_name`*:: +*`process.elf.sections.flags`*:: + -- -IOC indicator name. - +ELF Section List flags. type: keyword -- -*`checkpoint.indicator_description`*:: +*`process.elf.sections.name`*:: + -- -IOC indicator description. - +ELF Section List name. type: keyword -- -*`checkpoint.indicator_reference`*:: +*`process.elf.sections.physical_offset`*:: + -- -IOC indicator reference. - +ELF Section List offset. type: keyword -- -*`checkpoint.indicator_uuid`*:: +*`process.elf.sections.physical_size`*:: + -- -IOC indicator uuid. +ELF Section List physical size. +type: long -type: keyword +format: bytes -- -*`checkpoint.app_desc`*:: +*`process.elf.sections.type`*:: + -- -Application description. - +ELF Section List type. type: keyword -- -*`checkpoint.app_id`*:: +*`process.elf.sections.virtual_address`*:: + -- -Application ID. +ELF Section List virtual address. +type: long -type: integer +format: string -- -*`checkpoint.app_sig_id`*:: +*`process.elf.sections.virtual_size`*:: + -- -IOC indicator description. +ELF Section List virtual size. +type: long -type: keyword +format: string -- -*`checkpoint.certificate_resource`*:: +*`process.elf.segments`*:: + -- -HTTPS resource Possible values: SNI or domain name (DN). - +An array containing an object for each segment of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. -type: keyword +type: nested -- -*`checkpoint.certificate_validation`*:: +*`process.elf.segments.sections`*:: + -- -Precise error, describing HTTPS certificate failure under "HTTPS categorize websites" feature. - +ELF object segment sections. type: keyword -- -*`checkpoint.browse_time`*:: +*`process.elf.segments.type`*:: + -- -Application session browse time. - +ELF object segment type. type: keyword -- -*`checkpoint.limit_requested`*:: +*`process.elf.shared_libraries`*:: + -- -Indicates whether data limit was requested for the session. - +List of shared libraries used by this ELF object. -type: integer +type: keyword -- -*`checkpoint.limit_applied`*:: +*`process.elf.telfhash`*:: + -- -Indicates whether the session was actually date limited. - +telfhash symbol hash for ELF file. -type: integer +type: keyword -- -*`checkpoint.dropped_total`*:: +*`process.end`*:: + -- -Amount of dropped packets (both incoming and outgoing). +The time the process ended. +type: date -type: integer +example: 2016-05-23T08:05:34.853Z -- -*`checkpoint.client_type_os`*:: +*`process.entity_id`*:: + -- -Client OS detected in the HTTP request. - +Unique identifier for the process. +The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. +Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. type: keyword +example: c2c455d9f99375d + -- -*`checkpoint.name`*:: +*`process.executable`*:: + -- -Application name. - +Absolute path to the process executable. type: keyword +example: /usr/bin/ssh + -- -*`checkpoint.properties`*:: +*`process.executable.text`*:: + -- -Application categories. - - -type: keyword +type: match_only_text -- -*`checkpoint.sig_id`*:: +*`process.exit_code`*:: + -- -Application's signature ID which how it was detected by. +The exit code of the process, if this is a termination event. +The field should be absent if there is no exit code for the event (e.g. process start). +type: long -type: keyword +example: 137 -- -*`checkpoint.desc`*:: +*`process.hash.md5`*:: + -- -Override application description. - +MD5 hash. type: keyword -- -*`checkpoint.referrer_self_uid`*:: +*`process.hash.sha1`*:: + -- -UUID of the current log. - +SHA1 hash. type: keyword -- -*`checkpoint.referrer_parent_uid`*:: +*`process.hash.sha256`*:: + -- -Log UUID of the referring application. - +SHA256 hash. type: keyword -- -*`checkpoint.needs_browse_time`*:: +*`process.hash.sha512`*:: + -- -Browse time required for the connection. - +SHA512 hash. -type: integer +type: keyword -- -*`checkpoint.cluster_info`*:: +*`process.hash.ssdeep`*:: + -- -Cluster information. Possible options: Failover reason/cluster state changes/CP cluster or 3rd party. - +SSDEEP hash. type: keyword -- -*`checkpoint.sync`*:: +*`process.name`*:: + -- -Sync status and the reason (stable, at risk). - +Process name. +Sometimes called program name or similar. type: keyword +example: ssh + -- -*`checkpoint.file_direction`*:: +*`process.name.text`*:: + -- -File direction. Possible options: upload/download. +type: match_only_text + +-- +*`process.parent.args`*:: ++ +-- +Array of process arguments, starting with the absolute path to the executable. +May be filtered to protect sensitive information. type: keyword +example: ["/usr/bin/ssh", "-l", "user", "10.0.0.16"] + -- -*`checkpoint.invalid_file_size`*:: +*`process.parent.args_count`*:: + -- -File_size field is valid only if this field is set to 0. +Length of the process.args array. +This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. +type: long -type: integer +example: 4 -- -*`checkpoint.top_archive_file_name`*:: +*`process.parent.code_signature.digest_algorithm`*:: + -- -In case of archive file: the file that was sent/received. - +The hashing algorithm used to sign the process. +This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. type: keyword +example: sha256 + -- -*`checkpoint.data_type_name`*:: +*`process.parent.code_signature.exists`*:: + -- -Data type in rulebase that was matched. +Boolean to capture if a signature is present. +type: boolean -type: keyword +example: true -- -*`checkpoint.specific_data_type_name`*:: +*`process.parent.code_signature.signing_id`*:: + -- -Compound/Group scenario, data type that was matched. - +The identifier used to sign the process. +This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. type: keyword +example: com.apple.xpc.proxy + -- -*`checkpoint.word_list`*:: +*`process.parent.code_signature.status`*:: + -- -Words matched by data type. - +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword +example: ERROR_UNTRUSTED_ROOT + -- -*`checkpoint.info`*:: +*`process.parent.code_signature.subject_name`*:: + -- -Special log message. - +Subject name of the code signer type: keyword +example: Microsoft Corporation + -- -*`checkpoint.outgoing_url`*:: +*`process.parent.code_signature.team_id`*:: + -- -URL related to this log (for HTTP). - +The team identifier used to sign the process. +This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. type: keyword +example: EQHXZ8M8AV + -- -*`checkpoint.dlp_rule_name`*:: +*`process.parent.code_signature.timestamp`*:: + -- -Matched rule name. +Date and time when the code signature was generated and signed. +type: date -type: keyword +example: 2021-01-01T12:10:30Z -- -*`checkpoint.dlp_recipients`*:: +*`process.parent.code_signature.trusted`*:: + -- -Mail recipients. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +type: boolean -type: keyword +example: true -- -*`checkpoint.dlp_subject`*:: +*`process.parent.code_signature.valid`*:: + -- -Mail subject. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. +type: boolean -type: keyword +example: true -- -*`checkpoint.dlp_word_list`*:: +*`process.parent.command_line`*:: + -- -Phrases matched by data type. +Full command line that started the process, including the absolute path to the executable, and all arguments. +Some arguments may be filtered to protect sensitive information. +type: wildcard -type: keyword +example: /usr/bin/ssh -l user 10.0.0.16 -- -*`checkpoint.dlp_template_score`*:: +*`process.parent.command_line.text`*:: + -- -Template data type match score. +type: match_only_text + +-- +*`process.parent.elf.architecture`*:: ++ +-- +Machine architecture of the ELF file. type: keyword +example: x86-64 + -- -*`checkpoint.message_size`*:: +*`process.parent.elf.byte_order`*:: + -- -Mail/post size. +Byte sequence of ELF file. +type: keyword -type: integer +example: Little Endian -- -*`checkpoint.dlp_incident_uid`*:: +*`process.parent.elf.cpu_type`*:: + -- -Unique ID of the matched rule. - +CPU type of the ELF file. type: keyword +example: Intel + -- -*`checkpoint.dlp_related_incident_uid`*:: +*`process.parent.elf.creation_date`*:: + -- -Other ID related to this one. - +Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. -type: keyword +type: date -- -*`checkpoint.dlp_data_type_name`*:: +*`process.parent.elf.exports`*:: + -- -Matched data type. - +List of exported element names and types. -type: keyword +type: flattened -- -*`checkpoint.dlp_data_type_uid`*:: +*`process.parent.elf.header.abi_version`*:: + -- -Unique ID of the matched data type. - +Version of the ELF Application Binary Interface (ABI). type: keyword -- -*`checkpoint.dlp_violation_description`*:: +*`process.parent.elf.header.class`*:: + -- -Violation descriptions described in the rulebase. - +Header class of the ELF file. type: keyword -- -*`checkpoint.dlp_relevant_data_types`*:: +*`process.parent.elf.header.data`*:: + -- -In case of Compound/Group: the inner data types that were matched. - +Data table of the ELF header. type: keyword -- -*`checkpoint.dlp_action_reason`*:: +*`process.parent.elf.header.entrypoint`*:: + -- -Action chosen reason. +Header entrypoint of the ELF file. +type: long -type: keyword +format: string -- -*`checkpoint.dlp_categories`*:: +*`process.parent.elf.header.object_version`*:: + -- -Data type category. - +"0x1" for original ELF files. type: keyword -- -*`checkpoint.dlp_transint`*:: +*`process.parent.elf.header.os_abi`*:: + -- -HTTP/SMTP/FTP. - +Application Binary Interface (ABI) of the Linux OS. type: keyword -- -*`checkpoint.duplicate`*:: +*`process.parent.elf.header.type`*:: + -- -Log marked as duplicated, when mail is split and the Security Gateway sees it twice. - +Header type of the ELF file. type: keyword -- -*`checkpoint.incident_extension`*:: +*`process.parent.elf.header.version`*:: + -- -Matched data type. - +Version of the ELF header. type: keyword -- -*`checkpoint.matched_file`*:: +*`process.parent.elf.imports`*:: + -- -Unique ID of the matched data type. - +List of imported element names and types. -type: keyword +type: flattened -- -*`checkpoint.matched_file_text_segments`*:: +*`process.parent.elf.sections`*:: + -- -Fingerprint: number of text segments matched by this traffic. - +An array containing an object for each section of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. -type: integer +type: nested -- -*`checkpoint.matched_file_percentage`*:: +*`process.parent.elf.sections.chi2`*:: + -- -Fingerprint: match percentage of the traffic. +Chi-square probability distribution of the section. +type: long -type: integer +format: number -- -*`checkpoint.dlp_additional_action`*:: +*`process.parent.elf.sections.entropy`*:: + -- -Watermark/None. +Shannon entropy calculation from the section. +type: long -type: keyword +format: number -- -*`checkpoint.dlp_watermark_profile`*:: +*`process.parent.elf.sections.flags`*:: + -- -Watermark which was applied. - +ELF Section List flags. type: keyword -- -*`checkpoint.dlp_repository_id`*:: +*`process.parent.elf.sections.name`*:: + -- -ID of scanned repository. - +ELF Section List name. type: keyword -- -*`checkpoint.dlp_repository_root_path`*:: +*`process.parent.elf.sections.physical_offset`*:: + -- -Repository path. - +ELF Section List offset. type: keyword -- -*`checkpoint.scan_id`*:: +*`process.parent.elf.sections.physical_size`*:: + -- -Sequential number of scan. +ELF Section List physical size. +type: long -type: keyword +format: bytes -- -*`checkpoint.special_properties`*:: +*`process.parent.elf.sections.type`*:: + -- -If this field is set to '1' the log will not be shown (in use for monitoring scan progress). - +ELF Section List type. -type: integer +type: keyword -- -*`checkpoint.dlp_repository_total_size`*:: +*`process.parent.elf.sections.virtual_address`*:: + -- -Repository size. +ELF Section List virtual address. +type: long -type: integer +format: string -- -*`checkpoint.dlp_repository_files_number`*:: +*`process.parent.elf.sections.virtual_size`*:: + -- -Number of files in repository. +ELF Section List virtual size. +type: long -type: integer +format: string -- -*`checkpoint.dlp_repository_scanned_files_number`*:: +*`process.parent.elf.segments`*:: + -- -Number of scanned files in repository. - +An array containing an object for each segment of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. -type: integer +type: nested -- -*`checkpoint.duration`*:: +*`process.parent.elf.segments.sections`*:: + -- -Scan duration. - +ELF object segment sections. type: keyword -- -*`checkpoint.dlp_fingerprint_long_status`*:: +*`process.parent.elf.segments.type`*:: + -- -Scan status - long format. - +ELF object segment type. type: keyword -- -*`checkpoint.dlp_fingerprint_short_status`*:: +*`process.parent.elf.shared_libraries`*:: + -- -Scan status - short format. - +List of shared libraries used by this ELF object. type: keyword -- -*`checkpoint.dlp_repository_directories_number`*:: +*`process.parent.elf.telfhash`*:: + -- -Number of directories in repository. - +telfhash symbol hash for ELF file. -type: integer +type: keyword -- -*`checkpoint.dlp_repository_unreachable_directories_number`*:: +*`process.parent.end`*:: + -- -Number of directories the Security Gateway was unable to read. +The time the process ended. +type: date -type: integer +example: 2016-05-23T08:05:34.853Z -- -*`checkpoint.dlp_fingerprint_files_number`*:: +*`process.parent.entity_id`*:: + -- -Number of successfully scanned files in repository. +Unique identifier for the process. +The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. +Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. +type: keyword -type: integer +example: c2c455d9f99375d -- -*`checkpoint.dlp_repository_skipped_files_number`*:: +*`process.parent.executable`*:: + -- -Skipped number of files because of configuration. +Absolute path to the process executable. +type: keyword -type: integer +example: /usr/bin/ssh -- -*`checkpoint.dlp_repository_scanned_directories_number`*:: +*`process.parent.executable.text`*:: + -- -Amount of directories scanned. - - -type: integer +type: match_only_text -- -*`checkpoint.number_of_errors`*:: +*`process.parent.exit_code`*:: + -- -Number of files that were not scanned due to an error. +The exit code of the process, if this is a termination event. +The field should be absent if there is no exit code for the event (e.g. process start). +type: long -type: integer +example: 137 -- -*`checkpoint.next_scheduled_scan_date`*:: +*`process.parent.hash.md5`*:: + -- -Next scan scheduled time according to time object. - +MD5 hash. type: keyword -- -*`checkpoint.dlp_repository_scanned_total_size`*:: +*`process.parent.hash.sha1`*:: + -- -Size scanned. - +SHA1 hash. -type: integer +type: keyword -- -*`checkpoint.dlp_repository_reached_directories_number`*:: +*`process.parent.hash.sha256`*:: + -- -Number of scanned directories in repository. - +SHA256 hash. -type: integer +type: keyword -- -*`checkpoint.dlp_repository_not_scanned_directories_percentage`*:: +*`process.parent.hash.sha512`*:: + -- -Percentage of directories the Security Gateway was unable to read. - +SHA512 hash. -type: integer +type: keyword -- -*`checkpoint.speed`*:: +*`process.parent.hash.ssdeep`*:: + -- -Current scan speed. - +SSDEEP hash. -type: integer +type: keyword -- -*`checkpoint.dlp_repository_scan_progress`*:: +*`process.parent.name`*:: + -- -Scan percentage. +Process name. +Sometimes called program name or similar. +type: keyword -type: integer +example: ssh -- -*`checkpoint.sub_policy_name`*:: +*`process.parent.name.text`*:: + -- -Layer name. - - -type: keyword +type: match_only_text -- -*`checkpoint.sub_policy_uid`*:: +*`process.parent.pe.architecture`*:: + -- -Layer uid. - +CPU architecture target for the file. type: keyword +example: x64 + -- -*`checkpoint.fw_message`*:: +*`process.parent.pe.company`*:: + -- -Used for various firewall errors. - +Internal company name of the file, provided at compile-time. type: keyword +example: Microsoft Corporation + -- -*`checkpoint.message`*:: +*`process.parent.pe.description`*:: + -- -ISP link has failed. - +Internal description of the file, provided at compile-time. type: keyword +example: Paint + -- -*`checkpoint.isp_link`*:: +*`process.parent.pe.file_version`*:: + -- -Name of ISP link. - +Internal version of the file, provided at compile-time. type: keyword +example: 6.3.9600.17415 + -- -*`checkpoint.fw_subproduct`*:: +*`process.parent.pe.imphash`*:: + -- -Can be vpn/non vpn. - +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword +example: 0c6803c4e922103c4dca5963aad36ddf + -- -*`checkpoint.sctp_error`*:: +*`process.parent.pe.original_file_name`*:: + -- -Error information, what caused sctp to fail on out_of_state. - +Internal name of the file, provided at compile-time. type: keyword +example: MSPAINT.EXE + -- -*`checkpoint.chunk_type`*:: +*`process.parent.pe.product`*:: + -- -Chunck of the sctp stream. - +Internal product name of the file, provided at compile-time. type: keyword +example: Microsoft® Windows® Operating System + -- -*`checkpoint.sctp_association_state`*:: +*`process.parent.pgid`*:: + -- -The bad state you were trying to update to. +Identifier of the group of processes the process belongs to. +type: long -type: keyword +format: string -- -*`checkpoint.tcp_packet_out_of_state`*:: +*`process.parent.pid`*:: + -- -State violation. +Process id. +type: long -type: keyword +example: 4242 + +format: string -- -*`checkpoint.tcp_flags`*:: +*`process.parent.start`*:: + -- -TCP packet flags (SYN, ACK, etc.,). +The time the process started. +type: date -type: keyword +example: 2016-05-23T08:05:34.853Z -- -*`checkpoint.connectivity_level`*:: +*`process.parent.thread.id`*:: + -- -Log for a new connection in wire mode. +Thread ID. +type: long -type: keyword +example: 4242 + +format: string -- -*`checkpoint.ip_option`*:: +*`process.parent.thread.name`*:: + -- -IP option that was dropped. +Thread name. +type: keyword -type: integer +example: thread-0 -- -*`checkpoint.tcp_state`*:: +*`process.parent.title`*:: + -- -Log reinting a tcp state change. - +Process title. +The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. type: keyword -- -*`checkpoint.expire_time`*:: +*`process.parent.title.text`*:: + -- -Connection closing time. - - -type: keyword +type: match_only_text -- -*`checkpoint.icmp_type`*:: +*`process.parent.uptime`*:: + -- -In case a connection is ICMP, type info will be added to the log. +Seconds the process has been up. +type: long -type: integer +example: 1325 -- -*`checkpoint.icmp_code`*:: +*`process.parent.working_directory`*:: + -- -In case a connection is ICMP, code info will be added to the log. +The working directory of the process. +type: keyword -type: integer +example: /home/alice -- -*`checkpoint.rpc_prog`*:: +*`process.parent.working_directory.text`*:: + -- -Log for new RPC state - prog values. - - -type: integer +type: match_only_text -- -*`checkpoint.dce-rpc_interface_uuid`*:: +*`process.pe.architecture`*:: + -- -Log for new RPC state - UUID values - +CPU architecture target for the file. type: keyword +example: x64 + -- -*`checkpoint.elapsed`*:: +*`process.pe.company`*:: + -- -Time passed since start time. - +Internal company name of the file, provided at compile-time. type: keyword +example: Microsoft Corporation + -- -*`checkpoint.icmp`*:: +*`process.pe.description`*:: + -- -Number of packets, received by the client. - +Internal description of the file, provided at compile-time. type: keyword +example: Paint + -- -*`checkpoint.capture_uuid`*:: +*`process.pe.file_version`*:: + -- -UUID generated for the capture. Used when enabling the capture when logging. - +Internal version of the file, provided at compile-time. type: keyword +example: 6.3.9600.17415 + -- -*`checkpoint.diameter_app_ID`*:: +*`process.pe.imphash`*:: + -- -The ID of diameter application. +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. +type: keyword -type: integer +example: 0c6803c4e922103c4dca5963aad36ddf -- -*`checkpoint.diameter_cmd_code`*:: +*`process.pe.original_file_name`*:: + -- -Diameter not allowed application command id. +Internal name of the file, provided at compile-time. +type: keyword -type: integer +example: MSPAINT.EXE -- -*`checkpoint.diameter_msg_type`*:: +*`process.pe.product`*:: + -- -Diameter message type. - +Internal product name of the file, provided at compile-time. type: keyword +example: Microsoft® Windows® Operating System + -- -*`checkpoint.cp_message`*:: +*`process.pgid`*:: + -- -Used to log a general message. +Identifier of the group of processes the process belongs to. +type: long -type: integer +format: string -- -*`checkpoint.log_delay`*:: +*`process.pid`*:: + -- -Time left before deleting template. +Process id. + +type: long +example: 4242 -type: integer +format: string -- -*`checkpoint.attack_status`*:: +*`process.start`*:: + -- -In case of a malicious event on an endpoint computer, the status of the attack. +The time the process started. +type: date -type: keyword +example: 2016-05-23T08:05:34.853Z -- -*`checkpoint.impacted_files`*:: +*`process.thread.id`*:: + -- -In case of an infection on an endpoint computer, the list of files that the malware impacted. +Thread ID. + +type: long +example: 4242 -type: keyword +format: string -- -*`checkpoint.remediated_files`*:: +*`process.thread.name`*:: + -- -In case of an infection and a successful cleaning of that infection, this is a list of remediated files on the computer. - +Thread name. type: keyword +example: thread-0 + -- -*`checkpoint.triggered_by`*:: +*`process.title`*:: + -- -The name of the mechanism that triggered the Software Blade to enforce a protection. - +Process title. +The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. type: keyword -- -*`checkpoint.https_inspection_rule_id`*:: +*`process.title.text`*:: + -- -ID of the matched rule. - - -type: keyword +type: match_only_text -- -*`checkpoint.https_inspection_rule_name`*:: +*`process.uptime`*:: + -- -Name of the matched rule. +Seconds the process has been up. +type: long -type: keyword +example: 1325 -- -*`checkpoint.app_properties`*:: +*`process.working_directory`*:: + -- -List of all found categories. - +The working directory of the process. type: keyword +example: /home/alice + -- -*`checkpoint.https_validation`*:: +*`process.working_directory.text`*:: + -- -Precise error, describing HTTPS inspection failure. +type: match_only_text +-- -type: keyword +[float] +=== registry --- +Fields related to Windows Registry operations. -*`checkpoint.https_inspection_action`*:: + +*`registry.data.bytes`*:: + -- -HTTPS inspection action (Inspect/Bypass/Error). - +Original bytes written with base64 encoding. +For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. type: keyword +example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= + -- -*`checkpoint.icap_service_id`*:: +*`registry.data.strings`*:: + -- -Service ID, can work with multiple servers, treated as services. +Content when writing string types. +Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). +type: wildcard -type: integer +example: ["C:\rta\red_ttp\bin\myapp.exe"] -- -*`checkpoint.icap_server_name`*:: +*`registry.data.type`*:: + -- -Server name. - +Standard registry type for encoding contents type: keyword +example: REG_SZ + -- -*`checkpoint.internal_error`*:: +*`registry.hive`*:: + -- -Internal error, for troubleshooting - +Abbreviated name for the hive. type: keyword +example: HKLM + -- -*`checkpoint.icap_more_info`*:: +*`registry.key`*:: + -- -Free text for verdict. +Hive-relative path of keys. +type: keyword -type: integer +example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe -- -*`checkpoint.reply_status`*:: +*`registry.path`*:: + -- -ICAP reply status code, e.g. 200 or 204. +Full path, including hive, key and value +type: keyword -type: integer +example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger -- -*`checkpoint.icap_server_service`*:: +*`registry.value`*:: + -- -Service name, as given in the ICAP URI - +Name of the value written. type: keyword --- +example: Debugger -*`checkpoint.mirror_and_decrypt_type`*:: -+ -- -Information about decrypt and forward. Possible values: Mirror only, Decrypt and mirror, Partial mirroring (HTTPS inspection Bypass). +[float] +=== related -type: keyword +This field set is meant to facilitate pivoting around a piece of data. +Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. +A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`. --- -*`checkpoint.interface_name`*:: +*`related.hash`*:: + -- -Designated interface for mirror And decrypt. - +All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). type: keyword -- -*`checkpoint.session_uid`*:: +*`related.hosts`*:: + -- -HTTP session-id. - +All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. type: keyword -- -*`checkpoint.broker_publisher`*:: +*`related.ip`*:: + -- -IP address of the broker publisher who shared the session information. - +All of the IPs seen on your event. type: ip -- -*`checkpoint.src_user_dn`*:: +*`related.user`*:: + -- -User distinguished name connected to source IP. - +All the user names or other user identifiers seen on the event. type: keyword -- -*`checkpoint.proxy_user_name`*:: -+ --- -User name connected to proxy IP. - +[float] +=== rule -type: keyword +Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events. +Examples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc. --- -*`checkpoint.proxy_machine_name`*:: +*`rule.author`*:: + -- -Machine name connected to proxy IP. +Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. +type: keyword -type: integer +example: ["Star-Lord"] -- -*`checkpoint.proxy_user_dn`*:: +*`rule.category`*:: + -- -User distinguished name connected to proxy IP. - +A categorization value keyword used by the entity using the rule for detection of this event. type: keyword +example: Attempted Information Leak + -- -*`checkpoint.query`*:: +*`rule.description`*:: + -- -DNS query. - +The description of the rule generating the event. type: keyword +example: Block requests to public DNS over HTTPS / TLS protocols + -- -*`checkpoint.dns_query`*:: +*`rule.id`*:: + -- -DNS query. - +A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event. type: keyword +example: 101 + -- -*`checkpoint.inspection_item`*:: +*`rule.license`*:: + -- -Blade element performed inspection. - +Name of the license under which the rule used to generate this event is made available. type: keyword +example: Apache 2.0 + -- -*`checkpoint.performance_impact`*:: +*`rule.name`*:: + -- -Protection performance impact. +The name of the rule or signature generating the event. +type: keyword -type: integer +example: BLOCK_DNS_over_TLS -- -*`checkpoint.inspection_category`*:: +*`rule.reference`*:: + -- -Inspection category: protocol anomaly, signature etc. - +Reference URL to additional information about the rule used to generate this event. +The URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert. type: keyword +example: https://en.wikipedia.org/wiki/DNS_over_TLS + -- -*`checkpoint.inspection_profile`*:: +*`rule.ruleset`*:: + -- -Profile which the activated protection belongs to. - +Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. type: keyword +example: Standard_Protocol_Filters + -- -*`checkpoint.summary`*:: +*`rule.uuid`*:: + -- -Summary message of a non-compliant DNS traffic drops or detects. - +A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. type: keyword +example: 1100110011 + -- -*`checkpoint.question_rdata`*:: +*`rule.version`*:: + -- -List of question records domains. - +The version / revision of the rule being used for analysis. type: keyword --- +example: 1.1 -*`checkpoint.answer_rdata`*:: -+ -- -List of answer resource records to the questioned domains. +[float] +=== server -type: keyword +A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. +For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. +Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. --- -*`checkpoint.authority_rdata`*:: +*`server.address`*:: + -- -List of authoritative servers. - +Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. type: keyword -- -*`checkpoint.additional_rdata`*:: +*`server.as.number`*:: + -- -List of additional resource records. +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +type: long -type: keyword +example: 15169 -- -*`checkpoint.files_names`*:: +*`server.as.organization.name`*:: + -- -List of files requested by FTP. - +Organization name. type: keyword +example: Google LLC + -- -*`checkpoint.ftp_user`*:: +*`server.as.organization.name.text`*:: + -- -FTP username. - - -type: keyword +type: match_only_text -- -*`checkpoint.mime_from`*:: +*`server.bytes`*:: + -- -Sender's address. +Bytes sent from the server to the client. +type: long -type: keyword +example: 184 + +format: bytes -- -*`checkpoint.mime_to`*:: +*`server.domain`*:: + -- -List of receiver address. - +The domain name of the server system. +This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. type: keyword +example: foo.example.com + -- -*`checkpoint.bcc`*:: +*`server.geo.city_name`*:: + -- -List of BCC addresses. - +City name. type: keyword +example: Montreal + -- -*`checkpoint.content_type`*:: +*`server.geo.continent_code`*:: + -- -Mail content type. Possible values: application/msword, text/html, image/gif etc. - +Two-letter code representing continent's name. type: keyword +example: NA + -- -*`checkpoint.user_agent`*:: +*`server.geo.continent_name`*:: + -- -String identifying requesting software user agent. - +Name of the continent. type: keyword +example: North America + -- -*`checkpoint.referrer`*:: +*`server.geo.country_iso_code`*:: + -- -Referrer HTTP request header, previous web page address. - +Country ISO code. type: keyword +example: CA + -- -*`checkpoint.http_location`*:: +*`server.geo.country_name`*:: + -- -Response header, indicates the URL to redirect a page to. - +Country name. type: keyword +example: Canada + -- -*`checkpoint.content_disposition`*:: +*`server.geo.location`*:: + -- -Indicates how the content is expected to be displayed inline in the browser. +Longitude and latitude. +type: geo_point -type: keyword +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`checkpoint.via`*:: +*`server.geo.name`*:: + -- -Via header is added by proxies for tracking purposes to avoid sending reqests in loop. - +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`checkpoint.http_server`*:: +*`server.geo.postal_code`*:: + -- -Server HTTP header value, contains information about the software used by the origin server, which handles the request. - +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. type: keyword +example: 94040 + -- -*`checkpoint.content_length`*:: +*`server.geo.region_iso_code`*:: + -- -Indicates the size of the entity-body of the HTTP header. - +Region ISO code. type: keyword +example: CA-QC + -- -*`checkpoint.authorization`*:: +*`server.geo.region_name`*:: + -- -Authorization HTTP header value. - +Region name. type: keyword +example: Quebec + -- -*`checkpoint.http_host`*:: +*`server.geo.timezone`*:: + -- -Domain name of the server that the HTTP request is sent to. - +The time zone of the location, such as IANA time zone name. type: keyword +example: America/Argentina/Buenos_Aires + -- -*`checkpoint.inspection_settings_log`*:: +*`server.ip`*:: + -- -Indicats that the log was released by inspection settings. - +IP address of the server (IPv4 or IPv6). -type: keyword +type: ip -- -*`checkpoint.cvpn_resource`*:: +*`server.mac`*:: + -- -Mobile Access application. - +MAC address of the server. +The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. type: keyword +example: 00-00-5E-00-53-23 + -- -*`checkpoint.cvpn_category`*:: +*`server.nat.ip`*:: + -- -Mobile Access application type. - +Translated ip of destination based NAT sessions (e.g. internet to private DMZ) +Typically used with load balancers, firewalls, or routers. -type: keyword +type: ip -- -*`checkpoint.url`*:: +*`server.nat.port`*:: + -- -Translated URL. +Translated port of destination based NAT sessions (e.g. internet to private DMZ) +Typically used with load balancers, firewalls, or routers. +type: long -type: keyword +format: string -- -*`checkpoint.reject_id`*:: +*`server.packets`*:: + -- -A reject ID that corresponds to the one presented in the Mobile Access error page. +Packets sent from the server to the client. +type: long -type: keyword +example: 12 -- -*`checkpoint.fs-proto`*:: +*`server.port`*:: + -- -The file share protocol used in mobile acess file share application. +Port of the server. +type: long -type: keyword +format: string -- -*`checkpoint.app_package`*:: +*`server.registered_domain`*:: + -- -Unique identifier of the application on the protected mobile device. - +The highest registered server domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword +example: example.com + -- -*`checkpoint.appi_name`*:: +*`server.subdomain`*:: + -- -Name of application downloaded on the protected mobile device. - +The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. type: keyword +example: east + -- -*`checkpoint.app_repackaged`*:: +*`server.top_level_domain`*:: + -- -Indicates whether the original application was repackage not by the official developer. - +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword +example: co.uk + -- -*`checkpoint.app_sid_id`*:: +*`server.user.domain`*:: + -- -Unique SHA identifier of a mobile application. - +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`checkpoint.app_version`*:: +*`server.user.email`*:: + -- -Version of the application downloaded on the protected mobile device. - +User email address. type: keyword -- -*`checkpoint.developer_certificate_name`*:: +*`server.user.full_name`*:: + -- -Name of the developer's certificate that was used to sign the mobile application. - +User's full name, if available. type: keyword +example: Albert Einstein + -- -*`checkpoint.email_control`*:: +*`server.user.full_name.text`*:: + -- -Engine name. - - -type: keyword +type: match_only_text -- -*`checkpoint.email_message_id`*:: +*`server.user.group.domain`*:: + -- -Email session id (uniqe ID of the mail). - +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`checkpoint.email_queue_id`*:: +*`server.user.group.id`*:: + -- -Postfix email queue id. - +Unique identifier for the group on the system/platform. type: keyword -- -*`checkpoint.email_queue_name`*:: +*`server.user.group.name`*:: + -- -Postfix email queue name. - +Name of the group. type: keyword -- -*`checkpoint.file_name`*:: +*`server.user.hash`*:: + -- -Malicious file name. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. type: keyword -- -*`checkpoint.failure_reason`*:: +*`server.user.id`*:: + -- -MTA failure description. - +Unique identifier of the user. type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`checkpoint.email_headers`*:: +*`server.user.name`*:: + -- -String containing all the email headers. - +Short name or login of the user. type: keyword +example: a.einstein + -- -*`checkpoint.arrival_time`*:: +*`server.user.name.text`*:: + -- -Email arrival timestamp. - - -type: keyword +type: match_only_text -- -*`checkpoint.email_status`*:: +*`server.user.roles`*:: + -- -Describes the email's state. Possible options: delivered, deferred, skipped, bounced, hold, new, scan_started, scan_ended - +Array of user roles at the time of the event. type: keyword --- +example: ["kibana_admin", "reporting_user"] -*`checkpoint.status_update`*:: -+ -- -Last time log was updated. +[float] +=== service -type: keyword +The service fields describe the service for or from which the data was collected. +These fields help you find and correlate logs for a specific service and version. --- -*`checkpoint.delivery_time`*:: +*`service.address`*:: + -- -Timestamp of when email was delivered (MTA finished handling the email. - +Address where data about this service was collected from. +This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). type: keyword +example: 172.26.0.2:5432 + -- -*`checkpoint.links_num`*:: +*`service.environment`*:: + -- -Number of links in the mail. +Identifies the environment where the service is running. +If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment. +type: keyword -type: integer +example: production -- -*`checkpoint.attachments_num`*:: +*`service.ephemeral_id`*:: + -- -Number of attachments in the mail. +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +type: keyword -type: integer +example: 8a4f500f -- -*`checkpoint.email_content`*:: +*`service.id`*:: + -- -Mail contents. Possible options: attachments/links & attachments/links/text only. - +Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. +This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. +Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. type: keyword +example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 + -- -*`checkpoint.allocated_ports`*:: +*`service.name`*:: + -- -Amount of allocated ports. +Name of the service data is collected from. +The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. +In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. +type: keyword -type: integer +example: elasticsearch-metrics -- -*`checkpoint.capacity`*:: +*`service.node.name`*:: + -- -Capacity of the ports. +Name of a service node. +This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. +In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. +type: keyword -type: integer +example: instance-0000000016 -- -*`checkpoint.ports_usage`*:: +*`service.origin.address`*:: + -- -Percentage of allocated ports. +Address where data about this service was collected from. +This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). +type: keyword -type: integer +example: 172.26.0.2:5432 -- -*`checkpoint.nat_exhausted_pool`*:: +*`service.origin.environment`*:: + -- -4-tuple of an exhausted pool. - +Identifies the environment where the service is running. +If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment. type: keyword +example: production + -- -*`checkpoint.nat_rulenum`*:: +*`service.origin.ephemeral_id`*:: + -- -NAT rulebase first matched rule. +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +type: keyword -type: integer +example: 8a4f500f -- -*`checkpoint.nat_addtnl_rulenum`*:: +*`service.origin.id`*:: + -- -When matching 2 automatic rules , second rule match will be shown otherwise field will be 0. +Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. +This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. +Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. +type: keyword -type: integer +example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 -- -*`checkpoint.message_info`*:: +*`service.origin.name`*:: + -- -Used for information messages, for example:NAT connection has ended. - +Name of the service data is collected from. +The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. +In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. type: keyword +example: elasticsearch-metrics + -- -*`checkpoint.nat46`*:: +*`service.origin.node.name`*:: + -- -NAT 46 status, in most cases "enabled". - +Name of a service node. +This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. +In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. type: keyword +example: instance-0000000016 + -- -*`checkpoint.end_time`*:: +*`service.origin.state`*:: + -- -TCP connection end time. - +Current state of the service. type: keyword -- -*`checkpoint.tcp_end_reason`*:: +*`service.origin.type`*:: + -- -Reason for TCP connection closure. - +The type of the service data is collected from. +The type can be used to group and correlate logs and metrics from one service type. +Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. type: keyword +example: elasticsearch + -- -*`checkpoint.cgnet`*:: +*`service.origin.version`*:: + -- -Describes NAT allocation for specific subscriber. - +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. type: keyword +example: 3.2.4 + -- -*`checkpoint.subscriber`*:: +*`service.state`*:: + -- -Source IP before CGNAT. - +Current state of the service. -type: ip +type: keyword -- -*`checkpoint.hide_ip`*:: +*`service.target.address`*:: + -- -Source IP which will be used after CGNAT. +Address where data about this service was collected from. +This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). +type: keyword -type: ip +example: 172.26.0.2:5432 -- -*`checkpoint.int_start`*:: +*`service.target.environment`*:: + -- -Subscriber start int which will be used for NAT. +Identifies the environment where the service is running. +If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment. +type: keyword -type: integer +example: production -- -*`checkpoint.int_end`*:: +*`service.target.ephemeral_id`*:: + -- -Subscriber end int which will be used for NAT. +Ephemeral identifier of this service (if one exists). +This id normally changes across restarts, but `service.id` does not. +type: keyword -type: integer +example: 8a4f500f -- -*`checkpoint.packet_amount`*:: +*`service.target.id`*:: + -- -Amount of packets dropped. +Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. +This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. +Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. +type: keyword -type: integer +example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 -- -*`checkpoint.monitor_reason`*:: +*`service.target.name`*:: + -- -Aggregated logs of monitored packets. - +Name of the service data is collected from. +The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. +In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. type: keyword +example: elasticsearch-metrics + -- -*`checkpoint.drops_amount`*:: +*`service.target.node.name`*:: + -- -Amount of multicast packets dropped. +Name of a service node. +This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. +In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. +type: keyword -type: integer +example: instance-0000000016 -- -*`checkpoint.securexl_message`*:: +*`service.target.state`*:: + -- -Two options for a SecureXL message: 1. Missed accounting records after heavy load on logging system. 2. FW log message regarding a packet drop. - +Current state of the service. type: keyword -- -*`checkpoint.conns_amount`*:: +*`service.target.type`*:: + -- -Connections amount of aggregated log info. +The type of the service data is collected from. +The type can be used to group and correlate logs and metrics from one service type. +Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. +type: keyword -type: integer +example: elasticsearch -- -*`checkpoint.scope`*:: +*`service.target.version`*:: + -- -IP related to the attack. - +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. type: keyword +example: 3.2.4 + -- -*`checkpoint.analyzed_on`*:: +*`service.type`*:: + -- -Check Point ThreatCloud / emulator name. - +The type of the service data is collected from. +The type can be used to group and correlate logs and metrics from one service type. +Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. type: keyword +example: elasticsearch + -- -*`checkpoint.detected_on`*:: +*`service.version`*:: + -- -System and applications version the file was emulated on. - +Version of the service the data was collected from. +This allows to look at a data set only for a specific version of a service. type: keyword --- +example: 3.2.4 -*`checkpoint.dropped_file_name`*:: -+ -- -List of names dropped from the original file. +[float] +=== source -type: keyword +Source fields capture details about the sender of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction. +Source fields are usually populated in conjunction with destination fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated. --- -*`checkpoint.dropped_file_type`*:: +*`source.address`*:: + -- -List of file types dropped from the original file. - +Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. +Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. type: keyword -- -*`checkpoint.dropped_file_hash`*:: +*`source.as.number`*:: + -- -List of file hashes dropped from the original file. +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +type: long -type: keyword +example: 15169 -- -*`checkpoint.dropped_file_verdict`*:: +*`source.as.organization.name`*:: + -- -List of file verdics dropped from the original file. - +Organization name. type: keyword +example: Google LLC + -- -*`checkpoint.emulated_on`*:: +*`source.as.organization.name.text`*:: + -- -Images the files were emulated on. - - -type: keyword +type: match_only_text -- -*`checkpoint.extracted_file_type`*:: +*`source.bytes`*:: + -- -Types of extracted files in case of an archive. +Bytes sent from the source to the destination. +type: long -type: keyword +example: 184 + +format: bytes -- -*`checkpoint.extracted_file_names`*:: +*`source.domain`*:: + -- -Names of extracted files in case of an archive. - +The domain name of the source system. +This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. type: keyword +example: foo.example.com + -- -*`checkpoint.extracted_file_hash`*:: +*`source.geo.city_name`*:: + -- -Archive hash in case of extracted files. - +City name. type: keyword +example: Montreal + -- -*`checkpoint.extracted_file_verdict`*:: +*`source.geo.continent_code`*:: + -- -Verdict of extracted files in case of an archive. - +Two-letter code representing continent's name. type: keyword +example: NA + -- -*`checkpoint.extracted_file_uid`*:: +*`source.geo.continent_name`*:: + -- -UID of extracted files in case of an archive. - +Name of the continent. type: keyword +example: North America + -- -*`checkpoint.mitre_initial_access`*:: +*`source.geo.country_iso_code`*:: + -- -The adversary is trying to break into your network. - +Country ISO code. type: keyword +example: CA + -- -*`checkpoint.mitre_execution`*:: +*`source.geo.country_name`*:: + -- -The adversary is trying to run malicious code. - +Country name. type: keyword +example: Canada + -- -*`checkpoint.mitre_persistence`*:: +*`source.geo.location`*:: + -- -The adversary is trying to maintain his foothold. +Longitude and latitude. +type: geo_point -type: keyword +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`checkpoint.mitre_privilege_escalation`*:: +*`source.geo.name`*:: + -- -The adversary is trying to gain higher-level permissions. - +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`checkpoint.mitre_defense_evasion`*:: +*`source.geo.postal_code`*:: + -- -The adversary is trying to avoid being detected. - +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. type: keyword --- - -*`checkpoint.mitre_credential_access`*:: -+ --- -The adversary is trying to steal account names and passwords. - - -type: keyword +example: 94040 -- -*`checkpoint.mitre_discovery`*:: +*`source.geo.region_iso_code`*:: + -- -The adversary is trying to expose information about your environment. - +Region ISO code. type: keyword +example: CA-QC + -- -*`checkpoint.mitre_lateral_movement`*:: +*`source.geo.region_name`*:: + -- -The adversary is trying to explore your environment. - +Region name. type: keyword +example: Quebec + -- -*`checkpoint.mitre_collection`*:: +*`source.geo.timezone`*:: + -- -The adversary is trying to collect data of interest to achieve his goal. - +The time zone of the location, such as IANA time zone name. type: keyword +example: America/Argentina/Buenos_Aires + -- -*`checkpoint.mitre_command_and_control`*:: +*`source.ip`*:: + -- -The adversary is trying to communicate with compromised systems in order to control them. - +IP address of the source (IPv4 or IPv6). -type: keyword +type: ip -- -*`checkpoint.mitre_exfiltration`*:: +*`source.mac`*:: + -- -The adversary is trying to steal data. - +MAC address of the source. +The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. type: keyword +example: 00-00-5E-00-53-23 + -- -*`checkpoint.mitre_impact`*:: +*`source.nat.ip`*:: + -- -The adversary is trying to manipulate, interrupt, or destroy your systems and data. - +Translated ip of source based NAT sessions (e.g. internal client to internet) +Typically connections traversing load balancers, firewalls, or routers. -type: keyword +type: ip -- -*`checkpoint.parent_file_hash`*:: +*`source.nat.port`*:: + -- -Archive's hash in case of extracted files. +Translated port of source based NAT sessions. (e.g. internal client to internet) +Typically used with load balancers, firewalls, or routers. +type: long -type: keyword +format: string -- -*`checkpoint.parent_file_name`*:: +*`source.packets`*:: + -- -Archive's name in case of extracted files. +Packets sent from the source to the destination. +type: long -type: keyword +example: 12 -- -*`checkpoint.parent_file_uid`*:: +*`source.port`*:: + -- -Archive's UID in case of extracted files. +Port of the source. +type: long -type: keyword +format: string -- -*`checkpoint.similiar_iocs`*:: +*`source.registered_domain`*:: + -- -Other IoCs similar to the ones found, related to the malicious file. - +The highest registered source domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword +example: example.com + -- -*`checkpoint.similar_hashes`*:: +*`source.subdomain`*:: + -- -Hashes found similar to the malicious file. - +The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. type: keyword +example: east + -- -*`checkpoint.similar_strings`*:: +*`source.top_level_domain`*:: + -- -Strings found similar to the malicious file. - +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword +example: co.uk + -- -*`checkpoint.similar_communication`*:: +*`source.user.domain`*:: + -- -Network action found similar to the malicious file. - +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`checkpoint.te_verdict_determined_by`*:: +*`source.user.email`*:: + -- -Emulators determined file verdict. - +User email address. type: keyword -- -*`checkpoint.packet_capture_unique_id`*:: +*`source.user.full_name`*:: + -- -Identifier of the packet capture files. - +User's full name, if available. type: keyword +example: Albert Einstein + -- -*`checkpoint.total_attachments`*:: +*`source.user.full_name.text`*:: + -- -The number of attachments in an email. - - -type: integer +type: match_only_text -- -*`checkpoint.additional_info`*:: +*`source.user.group.domain`*:: + -- -ID of original file/mail which are sent by admin. - +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. type: keyword -- -*`checkpoint.content_risk`*:: +*`source.user.group.id`*:: + -- -File risk. - +Unique identifier for the group on the system/platform. -type: integer +type: keyword -- -*`checkpoint.operation`*:: +*`source.user.group.name`*:: + -- -Operation made by Threat Extraction. - +Name of the group. type: keyword -- -*`checkpoint.scrubbed_content`*:: +*`source.user.hash`*:: + -- -Active content that was found. - +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. type: keyword -- -*`checkpoint.scrub_time`*:: +*`source.user.id`*:: + -- -Extraction process duration. - +Unique identifier of the user. type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`checkpoint.scrub_download_time`*:: +*`source.user.name`*:: + -- -File download time from resource. - +Short name or login of the user. type: keyword +example: a.einstein + -- -*`checkpoint.scrub_total_time`*:: +*`source.user.name.text`*:: + -- -Threat extraction total file handling time. - - -type: keyword +type: match_only_text -- -*`checkpoint.scrub_activity`*:: +*`source.user.roles`*:: + -- -The result of the extraction - +Array of user roles at the time of the event. type: keyword --- +example: ["kibana_admin", "reporting_user"] -*`checkpoint.watermark`*:: -+ -- -Reports whether watermark is added to the cleaned file. +[float] +=== threat -type: keyword +Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. +These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* fields are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). --- -*`checkpoint.snid`*:: +*`threat.enrichments`*:: + -- -The Check Point session ID. - +A list of associated indicators objects enriching the event, and the context of that association/enrichment. -type: keyword +type: nested -- -*`checkpoint.source_object`*:: +*`threat.enrichments.indicator`*:: + -- -Matched object name on source column. - +Object containing associated indicators enriching the event. -type: keyword +type: object -- -*`checkpoint.destination_object`*:: +*`threat.enrichments.indicator.as.number`*:: + -- -Matched object name on destination column. +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +type: long -type: keyword +example: 15169 -- -*`checkpoint.drop_reason`*:: +*`threat.enrichments.indicator.as.organization.name`*:: + -- -Drop reason description. - +Organization name. type: keyword +example: Google LLC + -- -*`checkpoint.hit`*:: +*`threat.enrichments.indicator.as.organization.name.text`*:: + -- -Number of hits on a rule. - - -type: integer +type: match_only_text -- -*`checkpoint.rulebase_id`*:: +*`threat.enrichments.indicator.confidence`*:: + -- -Layer number. +Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields. +Expected values are: + * Not Specified + * None + * Low + * Medium + * High +type: keyword -type: integer +example: Medium -- -*`checkpoint.first_hit_time`*:: +*`threat.enrichments.indicator.description`*:: + -- -First hit time in current interval. +Describes the type of action conducted by the threat. +type: keyword -type: integer +example: IP x.x.x.x was observed delivering the Angler EK. -- -*`checkpoint.last_hit_time`*:: +*`threat.enrichments.indicator.email.address`*:: + -- -Last hit time in current interval. +Identifies a threat indicator as an email address (irrespective of direction). +type: keyword -type: integer +example: phish@example.com -- -*`checkpoint.rematch_info`*:: +*`threat.enrichments.indicator.file.accessed`*:: + -- -Information sent when old connections cannot be matched during policy installation. - +Last time the file was accessed. +Note that not all filesystems keep track of access time. -type: keyword +type: date -- -*`checkpoint.last_rematch_time`*:: +*`threat.enrichments.indicator.file.attributes`*:: + -- -Connection rematched time. - +Array of file attributes. +Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. type: keyword +example: ["readonly", "system"] + -- -*`checkpoint.action_reason`*:: +*`threat.enrichments.indicator.file.code_signature.digest_algorithm`*:: + -- -Connection drop reason. +The hashing algorithm used to sign the process. +This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. +type: keyword -type: integer +example: sha256 -- -*`checkpoint.action_reason_msg`*:: +*`threat.enrichments.indicator.file.code_signature.exists`*:: + -- -Connection drop reason message. +Boolean to capture if a signature is present. +type: boolean -type: keyword +example: true -- -*`checkpoint.c_bytes`*:: +*`threat.enrichments.indicator.file.code_signature.signing_id`*:: + -- -Boolean value indicates whether bytes sent from the client side are used. +The identifier used to sign the process. +This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. +type: keyword -type: integer +example: com.apple.xpc.proxy -- -*`checkpoint.context_num`*:: +*`threat.enrichments.indicator.file.code_signature.status`*:: + -- -Serial number of the log for a specific connection. +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. +type: keyword -type: integer +example: ERROR_UNTRUSTED_ROOT -- -*`checkpoint.match_id`*:: +*`threat.enrichments.indicator.file.code_signature.subject_name`*:: + -- -Private key of the rule +Subject name of the code signer +type: keyword -type: integer +example: Microsoft Corporation -- -*`checkpoint.alert`*:: +*`threat.enrichments.indicator.file.code_signature.team_id`*:: + -- -Alert level of matched rule (for connection logs). - +The team identifier used to sign the process. +This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. type: keyword +example: EQHXZ8M8AV + -- -*`checkpoint.parent_rule`*:: +*`threat.enrichments.indicator.file.code_signature.timestamp`*:: + -- -Parent rule number, in case of inline layer. +Date and time when the code signature was generated and signed. +type: date -type: integer +example: 2021-01-01T12:10:30Z -- -*`checkpoint.match_fk`*:: +*`threat.enrichments.indicator.file.code_signature.trusted`*:: + -- -Rule number. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +type: boolean -type: integer +example: true -- -*`checkpoint.dropped_outgoing`*:: +*`threat.enrichments.indicator.file.code_signature.valid`*:: + -- -Number of outgoing bytes dropped when using UP-limit feature. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. +type: boolean -type: integer +example: true -- -*`checkpoint.dropped_incoming`*:: +*`threat.enrichments.indicator.file.created`*:: + -- -Number of incoming bytes dropped when using UP-limit feature. - +File creation time. +Note that not all filesystems store the creation time. -type: integer +type: date -- -*`checkpoint.media_type`*:: +*`threat.enrichments.indicator.file.ctime`*:: + -- -Media used (audio, video, etc.) - +Last time the file attributes or metadata changed. +Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file. -type: keyword +type: date -- -*`checkpoint.sip_reason`*:: +*`threat.enrichments.indicator.file.device`*:: + -- -Explains why 'source_ip' isn't allowed to redirect (handover). - +Device that is the source of the file. type: keyword +example: sda + -- -*`checkpoint.voip_method`*:: +*`threat.enrichments.indicator.file.directory`*:: + -- -Registration request. - +Directory where the file is located. It should include the drive letter, when appropriate. type: keyword +example: /home/alice + -- -*`checkpoint.registered_ip-phones`*:: +*`threat.enrichments.indicator.file.drive_letter`*:: + -- -Registered IP-Phones. - +Drive letter where the file is located. This field is only relevant on Windows. +The value should be uppercase, and not include the colon. type: keyword +example: C + -- -*`checkpoint.voip_reg_user_type`*:: +*`threat.enrichments.indicator.file.elf.architecture`*:: + -- -Registered IP-Phone type. - +Machine architecture of the ELF file. type: keyword +example: x86-64 + -- -*`checkpoint.voip_call_id`*:: +*`threat.enrichments.indicator.file.elf.byte_order`*:: + -- -Call-ID. - +Byte sequence of ELF file. type: keyword +example: Little Endian + -- -*`checkpoint.voip_reg_int`*:: +*`threat.enrichments.indicator.file.elf.cpu_type`*:: + -- -Registration port. +CPU type of the ELF file. +type: keyword -type: integer +example: Intel -- -*`checkpoint.voip_reg_ipp`*:: +*`threat.enrichments.indicator.file.elf.creation_date`*:: + -- -Registration IP protocol. - +Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. -type: integer +type: date -- -*`checkpoint.voip_reg_period`*:: +*`threat.enrichments.indicator.file.elf.exports`*:: + -- -Registration period. - +List of exported element names and types. -type: integer +type: flattened -- -*`checkpoint.voip_log_type`*:: +*`threat.enrichments.indicator.file.elf.header.abi_version`*:: + -- -VoIP log types. Possible values: reject, call, registration. - +Version of the ELF Application Binary Interface (ABI). type: keyword -- -*`checkpoint.src_phone_number`*:: +*`threat.enrichments.indicator.file.elf.header.class`*:: + -- -Source IP-Phone. - +Header class of the ELF file. type: keyword -- -*`checkpoint.voip_from_user_type`*:: +*`threat.enrichments.indicator.file.elf.header.data`*:: + -- -Source IP-Phone type. - +Data table of the ELF header. type: keyword -- -*`checkpoint.dst_phone_number`*:: +*`threat.enrichments.indicator.file.elf.header.entrypoint`*:: + -- -Destination IP-Phone. +Header entrypoint of the ELF file. +type: long -type: keyword +format: string -- -*`checkpoint.voip_to_user_type`*:: +*`threat.enrichments.indicator.file.elf.header.object_version`*:: + -- -Destination IP-Phone type. - +"0x1" for original ELF files. type: keyword -- -*`checkpoint.voip_call_dir`*:: +*`threat.enrichments.indicator.file.elf.header.os_abi`*:: + -- -Call direction: in/out. - +Application Binary Interface (ABI) of the Linux OS. type: keyword -- -*`checkpoint.voip_call_state`*:: +*`threat.enrichments.indicator.file.elf.header.type`*:: + -- -Call state. Possible values: in/out. - +Header type of the ELF file. type: keyword -- -*`checkpoint.voip_call_term_time`*:: +*`threat.enrichments.indicator.file.elf.header.version`*:: + -- -Call termination time stamp. - +Version of the ELF header. type: keyword -- -*`checkpoint.voip_duration`*:: +*`threat.enrichments.indicator.file.elf.imports`*:: + -- -Call duration (seconds). - +List of imported element names and types. -type: keyword +type: flattened -- -*`checkpoint.voip_media_port`*:: +*`threat.enrichments.indicator.file.elf.sections`*:: + -- -Media int. - +An array containing an object for each section of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. -type: keyword +type: nested -- -*`checkpoint.voip_media_ipp`*:: +*`threat.enrichments.indicator.file.elf.sections.chi2`*:: + -- -Media IP protocol. +Chi-square probability distribution of the section. +type: long -type: keyword +format: number -- -*`checkpoint.voip_est_codec`*:: +*`threat.enrichments.indicator.file.elf.sections.entropy`*:: + -- -Estimated codec. +Shannon entropy calculation from the section. +type: long -type: keyword +format: number -- -*`checkpoint.voip_exp`*:: +*`threat.enrichments.indicator.file.elf.sections.flags`*:: + -- -Expiration. - +ELF Section List flags. -type: integer +type: keyword -- -*`checkpoint.voip_attach_sz`*:: +*`threat.enrichments.indicator.file.elf.sections.name`*:: + -- -Attachment size. - +ELF Section List name. -type: integer +type: keyword -- -*`checkpoint.voip_attach_action_info`*:: +*`threat.enrichments.indicator.file.elf.sections.physical_offset`*:: + -- -Attachment action Info. - +ELF Section List offset. type: keyword -- -*`checkpoint.voip_media_codec`*:: +*`threat.enrichments.indicator.file.elf.sections.physical_size`*:: + -- -Estimated codec. +ELF Section List physical size. +type: long -type: keyword +format: bytes -- -*`checkpoint.voip_reject_reason`*:: +*`threat.enrichments.indicator.file.elf.sections.type`*:: + -- -Reject reason. - +ELF Section List type. type: keyword -- -*`checkpoint.voip_reason_info`*:: +*`threat.enrichments.indicator.file.elf.sections.virtual_address`*:: + -- -Information. +ELF Section List virtual address. +type: long -type: keyword +format: string -- -*`checkpoint.voip_config`*:: +*`threat.enrichments.indicator.file.elf.sections.virtual_size`*:: + -- -Configuration. +ELF Section List virtual size. +type: long -type: keyword +format: string -- -*`checkpoint.voip_reg_server`*:: +*`threat.enrichments.indicator.file.elf.segments`*:: + -- -Registrar server IP address. - +An array containing an object for each segment of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. -type: ip +type: nested -- -*`checkpoint.scv_user`*:: +*`threat.enrichments.indicator.file.elf.segments.sections`*:: + -- -Username whose packets are dropped on SCV. - +ELF object segment sections. type: keyword -- -*`checkpoint.scv_message_info`*:: +*`threat.enrichments.indicator.file.elf.segments.type`*:: + -- -Drop reason. - +ELF object segment type. type: keyword -- -*`checkpoint.ppp`*:: +*`threat.enrichments.indicator.file.elf.shared_libraries`*:: + -- -Authentication status. - +List of shared libraries used by this ELF object. type: keyword -- -*`checkpoint.scheme`*:: +*`threat.enrichments.indicator.file.elf.telfhash`*:: + -- -Describes the scheme used for the log. - +telfhash symbol hash for ELF file. type: keyword -- -*`checkpoint.auth_method`*:: +*`threat.enrichments.indicator.file.extension`*:: + -- -Password authentication protocol used (PAP or EAP). - +File extension, excluding the leading dot. +Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). type: keyword +example: png + -- -*`checkpoint.auth_status`*:: +*`threat.enrichments.indicator.file.fork_name`*:: + -- -The authentication status for an event. - +A fork is additional data associated with a filesystem object. +On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. +On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. type: keyword +example: Zone.Identifer + -- -*`checkpoint.machine`*:: +*`threat.enrichments.indicator.file.gid`*:: + -- -L2TP machine which triggered the log and the log refers to it. - +Primary group ID (GID) of the file. type: keyword +example: 1001 + -- -*`checkpoint.vpn_feature_name`*:: +*`threat.enrichments.indicator.file.group`*:: + -- -L2TP /IKE / Link Selection. - +Primary group name of the file. type: keyword +example: alice + -- -*`checkpoint.reject_category`*:: +*`threat.enrichments.indicator.file.hash.md5`*:: + -- -Authentication failure reason. - +MD5 hash. type: keyword -- -*`checkpoint.peer_ip_probing_status_update`*:: +*`threat.enrichments.indicator.file.hash.sha1`*:: + -- -IP address response status. - +SHA1 hash. type: keyword -- -*`checkpoint.peer_ip`*:: +*`threat.enrichments.indicator.file.hash.sha256`*:: + -- -IP address which the client connects to. - +SHA256 hash. type: keyword -- -*`checkpoint.peer_gateway`*:: +*`threat.enrichments.indicator.file.hash.sha512`*:: + -- -Main IP of the peer Security Gateway. - +SHA512 hash. -type: ip +type: keyword -- -*`checkpoint.link_probing_status_update`*:: +*`threat.enrichments.indicator.file.hash.ssdeep`*:: + -- -IP address response status. - +SSDEEP hash. type: keyword -- -*`checkpoint.source_interface`*:: +*`threat.enrichments.indicator.file.inode`*:: + -- -External Interface name for source interface or Null if not found. - +Inode representing the file in the filesystem. type: keyword +example: 256383 + -- -*`checkpoint.next_hop_ip`*:: +*`threat.enrichments.indicator.file.mime_type`*:: + -- -Next hop IP address. - +MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. type: keyword -- -*`checkpoint.srckeyid`*:: +*`threat.enrichments.indicator.file.mode`*:: + -- -Initiator Spi ID. - +Mode of the file in octal representation. type: keyword +example: 0640 + -- -*`checkpoint.dstkeyid`*:: +*`threat.enrichments.indicator.file.mtime`*:: + -- -Responder Spi ID. - +Last time the file content was modified. -type: keyword +type: date -- -*`checkpoint.encryption_failure`*:: +*`threat.enrichments.indicator.file.name`*:: + -- -Message indicating why the encryption failed. - +Name of the file including the extension, without the directory. type: keyword +example: example.png + -- -*`checkpoint.ike_ids`*:: +*`threat.enrichments.indicator.file.owner`*:: + -- -All QM ids. - +File owner's username. type: keyword +example: alice + -- -*`checkpoint.community`*:: +*`threat.enrichments.indicator.file.path`*:: + -- -Community name for the IPSec key and the use of the IKEv. - +Full path to the file, including the file name. It should include the drive letter, when appropriate. type: keyword +example: /home/alice/example.png + -- -*`checkpoint.ike`*:: +*`threat.enrichments.indicator.file.path.text`*:: + -- -IKEMode (PHASE1, PHASE2, etc..). - - -type: keyword +type: match_only_text -- -*`checkpoint.cookieI`*:: +*`threat.enrichments.indicator.file.pe.architecture`*:: + -- -Initiator cookie. - +CPU architecture target for the file. type: keyword +example: x64 + -- -*`checkpoint.cookieR`*:: +*`threat.enrichments.indicator.file.pe.company`*:: + -- -Responder cookie. - +Internal company name of the file, provided at compile-time. type: keyword +example: Microsoft Corporation + -- -*`checkpoint.msgid`*:: +*`threat.enrichments.indicator.file.pe.description`*:: + -- -Message ID. - +Internal description of the file, provided at compile-time. type: keyword +example: Paint + -- -*`checkpoint.methods`*:: +*`threat.enrichments.indicator.file.pe.file_version`*:: + -- -IPSEc methods. - +Internal version of the file, provided at compile-time. type: keyword +example: 6.3.9600.17415 + -- -*`checkpoint.connection_uid`*:: +*`threat.enrichments.indicator.file.pe.imphash`*:: + -- -Calculation of md5 of the IP and user name as UID. - +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword +example: 0c6803c4e922103c4dca5963aad36ddf + -- -*`checkpoint.site_name`*:: +*`threat.enrichments.indicator.file.pe.original_file_name`*:: + -- -Site name. - +Internal name of the file, provided at compile-time. type: keyword +example: MSPAINT.EXE + -- -*`checkpoint.esod_rule_name`*:: +*`threat.enrichments.indicator.file.pe.product`*:: + -- -Unknown rule name. - +Internal product name of the file, provided at compile-time. type: keyword +example: Microsoft® Windows® Operating System + -- -*`checkpoint.esod_rule_action`*:: +*`threat.enrichments.indicator.file.size`*:: + -- -Unknown rule action. +File size in bytes. +Only relevant when `file.type` is "file". +type: long -type: keyword +example: 16384 -- -*`checkpoint.esod_rule_type`*:: +*`threat.enrichments.indicator.file.target_path`*:: + -- -Unknown rule type. - +Target path for symlinks. type: keyword -- -*`checkpoint.esod_noncompliance_reason`*:: +*`threat.enrichments.indicator.file.target_path.text`*:: + -- -Non-compliance reason. - - -type: keyword +type: match_only_text -- -*`checkpoint.esod_associated_policies`*:: +*`threat.enrichments.indicator.file.type`*:: + -- -Associated policies. - +File type (file, dir, or symlink). type: keyword +example: file + -- -*`checkpoint.spyware_name`*:: +*`threat.enrichments.indicator.file.uid`*:: + -- -Spyware name. - +The user ID (UID) or security identifier (SID) of the file owner. type: keyword +example: 1001 + -- -*`checkpoint.spyware_type`*:: +*`threat.enrichments.indicator.file.x509.alternative_names`*:: + -- -Spyware type. - +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword +example: *.elastic.co + -- -*`checkpoint.anti_virus_type`*:: +*`threat.enrichments.indicator.file.x509.issuer.common_name`*:: + -- -Anti virus type. - +List of common name (CN) of issuing certificate authority. type: keyword +example: Example SHA2 High Assurance Server CA + -- -*`checkpoint.end_user_firewall_type`*:: +*`threat.enrichments.indicator.file.x509.issuer.country`*:: + -- -End user firewall type. - +List of country (C) codes type: keyword +example: US + -- -*`checkpoint.esod_scan_status`*:: +*`threat.enrichments.indicator.file.x509.issuer.distinguished_name`*:: + -- -Scan failed. - +Distinguished name (DN) of issuing certificate authority. type: keyword +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + -- -*`checkpoint.esod_access_status`*:: +*`threat.enrichments.indicator.file.x509.issuer.locality`*:: + -- -Access denied. - +List of locality names (L) type: keyword +example: Mountain View + -- -*`checkpoint.client_type`*:: +*`threat.enrichments.indicator.file.x509.issuer.organization`*:: + -- -Endpoint Connect. - +List of organizations (O) of issuing certificate authority. type: keyword +example: Example Inc + -- -*`checkpoint.precise_error`*:: +*`threat.enrichments.indicator.file.x509.issuer.organizational_unit`*:: + -- -HTTP parser error. - +List of organizational units (OU) of issuing certificate authority. type: keyword +example: www.example.com + -- -*`checkpoint.method`*:: +*`threat.enrichments.indicator.file.x509.issuer.state_or_province`*:: + -- -HTTP method. - +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`checkpoint.trusted_domain`*:: +*`threat.enrichments.indicator.file.x509.not_after`*:: + -- -In case of phishing event, the domain, which the attacker was impersonating. +Time at which the certificate is no longer considered valid. +type: date -type: keyword +example: 2020-07-16 03:15:39+00:00 -- -*`checkpoint.comment`*:: +*`threat.enrichments.indicator.file.x509.not_before`*:: + -- -type: keyword +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`checkpoint.conn_direction`*:: +*`threat.enrichments.indicator.file.x509.public_key_algorithm`*:: + -- -Connection direction +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`checkpoint.db_ver`*:: +*`threat.enrichments.indicator.file.x509.public_key_curve`*:: + -- -Database version +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword --- +example: nistp521 -*`checkpoint.update_status`*:: -+ -- -Status of database update - -type: keyword +*`threat.enrichments.indicator.file.x509.public_key_exponent`*:: ++ -- +Exponent used to derive the public key. This is algorithm specific. -[[exported-fields-cisco]] -== Cisco fields +type: long -Module for handling Cisco network device logs. +example: 65537 +Field is not indexed. +-- -[float] -=== cisco.amp +*`threat.enrichments.indicator.file.x509.public_key_size`*:: ++ +-- +The size of the public key space in bits. -Module for parsing Cisco AMP logs. +type: long +example: 2048 +-- -*`cisco.amp.timestamp_nanoseconds`*:: +*`threat.enrichments.indicator.file.x509.serial_number`*:: + -- -The timestamp in Epoch nanoseconds. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. +type: keyword -type: date +example: 55FBB9C7DEBF09809D12CCAA -- -*`cisco.amp.event_type_id`*:: +*`threat.enrichments.indicator.file.x509.signature_algorithm`*:: + -- -A sub ID of the event, depending on event type. - +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword +example: SHA256-RSA + -- -*`cisco.amp.detection`*:: +*`threat.enrichments.indicator.file.x509.subject.common_name`*:: + -- -The name of the malware detected. - +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`cisco.amp.detection_id`*:: +*`threat.enrichments.indicator.file.x509.subject.country`*:: + -- -The ID of the detection. - +List of country (C) code type: keyword +example: US + -- -*`cisco.amp.connector_guid`*:: +*`threat.enrichments.indicator.file.x509.subject.distinguished_name`*:: + -- -The GUID of the connector sending information to AMP. - +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`cisco.amp.group_guids`*:: +*`threat.enrichments.indicator.file.x509.subject.locality`*:: + -- -An array of group GUIDS related to the connector sending information to AMP. - +List of locality names (L) type: keyword +example: San Francisco + -- -*`cisco.amp.vulnerabilities`*:: +*`threat.enrichments.indicator.file.x509.subject.organization`*:: + -- -An array of related vulnerabilities to the malicious event. +List of organizations (O) of subject. +type: keyword -type: flattened +example: Example, Inc. -- -*`cisco.amp.scan.description`*:: +*`threat.enrichments.indicator.file.x509.subject.organizational_unit`*:: + -- -Description of an event related to a scan being initiated, for example the specific directory name. - +List of organizational units (OU) of subject. type: keyword -- -*`cisco.amp.scan.clean`*:: +*`threat.enrichments.indicator.file.x509.subject.state_or_province`*:: + -- -Boolean value if a scanned file was clean or not. +List of state or province names (ST, S, or P) +type: keyword -type: boolean +example: California -- -*`cisco.amp.scan.scanned_files`*:: +*`threat.enrichments.indicator.file.x509.version_number`*:: + -- -Count of files scanned in a directory. +Version of x509 format. +type: keyword -type: long +example: 3 -- -*`cisco.amp.scan.scanned_processes`*:: +*`threat.enrichments.indicator.first_seen`*:: + -- -Count of processes scanned related to a single scan event. +The date and time when intelligence source first reported sighting this indicator. +type: date -type: long +example: 2020-11-05T17:25:47.000Z -- -*`cisco.amp.scan.scanned_paths`*:: +*`threat.enrichments.indicator.geo.city_name`*:: + -- -Count of different directories scanned related to a single scan event. +City name. +type: keyword -type: long +example: Montreal -- -*`cisco.amp.scan.malicious_detections`*:: +*`threat.enrichments.indicator.geo.continent_code`*:: + -- -Count of malicious files or documents detected related to a single scan event. +Two-letter code representing continent's name. +type: keyword -type: long +example: NA -- -*`cisco.amp.computer.connector_guid`*:: +*`threat.enrichments.indicator.geo.continent_name`*:: + -- -The GUID of the connector, similar to top level connector_guid, but unique if multiple connectors are involved. - +Name of the continent. type: keyword +example: North America + -- -*`cisco.amp.computer.external_ip`*:: +*`threat.enrichments.indicator.geo.country_iso_code`*:: + -- -The external IP of the related host. +Country ISO code. +type: keyword -type: ip +example: CA -- -*`cisco.amp.computer.active`*:: +*`threat.enrichments.indicator.geo.country_name`*:: + -- -If the current endpoint is active or not. +Country name. +type: keyword -type: boolean +example: Canada -- -*`cisco.amp.computer.network_addresses`*:: +*`threat.enrichments.indicator.geo.location`*:: + -- -All network interface information on the related host. +Longitude and latitude. +type: geo_point -type: flattened +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`cisco.amp.file.disposition`*:: +*`threat.enrichments.indicator.geo.name`*:: + -- -Categorization of file, for example "Malicious" or "Clean". - +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. type: keyword +example: boston-dc + -- -*`cisco.amp.network_info.disposition`*:: +*`threat.enrichments.indicator.geo.postal_code`*:: + -- -Categorization of a network event related to a file, for example "Malicious" or "Clean". - +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. type: keyword +example: 94040 + -- -*`cisco.amp.network_info.nfm.direction`*:: +*`threat.enrichments.indicator.geo.region_iso_code`*:: + -- -The current direction based on source and destination IP. - +Region ISO code. type: keyword +example: CA-QC + -- -*`cisco.amp.related.mac`*:: +*`threat.enrichments.indicator.geo.region_name`*:: + -- -An array of all related MAC addresses. - +Region name. type: keyword +example: Quebec + -- -*`cisco.amp.related.cve`*:: +*`threat.enrichments.indicator.geo.timezone`*:: + -- -An array of all related MAC addresses. - +The time zone of the location, such as IANA time zone name. type: keyword +example: America/Argentina/Buenos_Aires + -- -*`cisco.amp.cloud_ioc.description`*:: +*`threat.enrichments.indicator.ip`*:: + -- -Description of the related IOC for specific IOC events from AMP. +Identifies a threat indicator as an IP address (irrespective of direction). +type: ip -type: keyword +example: 1.2.3.4 -- -*`cisco.amp.cloud_ioc.short_description`*:: +*`threat.enrichments.indicator.last_seen`*:: + -- -Short description of the related IOC for specific IOC events from AMP. +The date and time when intelligence source last reported sighting this indicator. +type: date -type: keyword +example: 2020-11-05T17:25:47.000Z -- -*`cisco.amp.network_info.parent.disposition`*:: +*`threat.enrichments.indicator.marking.tlp`*:: + -- -Categorization of a IOC for example "Malicious" or "Clean". - +Traffic Light Protocol sharing markings. Recommended values are: + * WHITE + * GREEN + * AMBER + * RED type: keyword +example: White + -- -*`cisco.amp.network_info.parent.identity.md5`*:: +*`threat.enrichments.indicator.modified_at`*:: + -- -MD5 hash of the related IOC. +The date and time when intelligence source last modified information for this indicator. +type: date -type: keyword +example: 2020-11-05T17:25:47.000Z -- -*`cisco.amp.network_info.parent.identity.sha1`*:: +*`threat.enrichments.indicator.port`*:: + -- -SHA1 hash of the related IOC. +Identifies a threat indicator as a port number (irrespective of direction). +type: long -type: keyword +example: 443 -- -*`cisco.amp.network_info.parent.identify.sha256`*:: +*`threat.enrichments.indicator.provider`*:: + -- -SHA256 hash of the related IOC. - +The name of the indicator's provider. type: keyword +example: lrz_urlhaus + -- -*`cisco.amp.file.archived_file.disposition`*:: +*`threat.enrichments.indicator.reference`*:: + -- -Categorization of a file archive related to a file, for example "Malicious" or "Clean". - +Reference URL linking to additional information about this indicator. type: keyword +example: https://system.example.com/indicator/0001234 + -- -*`cisco.amp.file.archived_file.identity.md5`*:: +*`threat.enrichments.indicator.registry.data.bytes`*:: + -- -MD5 hash of the archived file related to the malicious event. - +Original bytes written with base64 encoding. +For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. type: keyword +example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= + -- -*`cisco.amp.file.archived_file.identity.sha1`*:: +*`threat.enrichments.indicator.registry.data.strings`*:: + -- -SHA1 hash of the archived file related to the malicious event. +Content when writing string types. +Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). +type: wildcard -type: keyword +example: ["C:\rta\red_ttp\bin\myapp.exe"] -- -*`cisco.amp.file.archived_file.identity.sha256`*:: +*`threat.enrichments.indicator.registry.data.type`*:: + -- -SHA256 hash of the archived file related to the malicious event. - +Standard registry type for encoding contents type: keyword +example: REG_SZ + -- -*`cisco.amp.file.attack_details.application`*:: +*`threat.enrichments.indicator.registry.hive`*:: + -- -The application name related to Exploit Prevention events. - +Abbreviated name for the hive. type: keyword +example: HKLM + -- -*`cisco.amp.file.attack_details.attacked_module`*:: +*`threat.enrichments.indicator.registry.key`*:: + -- -Path to the executable or dll that was attacked and detected by Exploit Prevention. - +Hive-relative path of keys. type: keyword +example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe + -- -*`cisco.amp.file.attack_details.base_address`*:: +*`threat.enrichments.indicator.registry.path`*:: + -- -The base memory address related to the exploit detected. - +Full path, including hive, key and value type: keyword +example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger + -- -*`cisco.amp.file.attack_details.suspicious_files`*:: +*`threat.enrichments.indicator.registry.value`*:: + -- -An array of related files when an attack is detected by Exploit Prevention. - +Name of the value written. type: keyword +example: Debugger + -- -*`cisco.amp.file.parent.disposition`*:: +*`threat.enrichments.indicator.scanner_stats`*:: + -- -Categorization of parrent, for example "Malicious" or "Clean". +Count of AV/EDR vendors that successfully detected malicious file or URL. +type: long -type: keyword +example: 4 -- -*`cisco.amp.error.description`*:: +*`threat.enrichments.indicator.sightings`*:: + -- -Description of an endpoint error event. +Number of times this indicator was observed conducting threat activity. +type: long -type: keyword +example: 20 -- -*`cisco.amp.error.error_code`*:: +*`threat.enrichments.indicator.type`*:: + -- -The error code describing the related error event. - +Type of indicator as represented by Cyber Observable in STIX 2.0. Recommended values: + * autonomous-system + * artifact + * directory + * domain-name + * email-addr + * file + * ipv4-addr + * ipv6-addr + * mac-addr + * mutex + * port + * process + * software + * url + * user-account + * windows-registry-key + * x509-certificate type: keyword +example: ipv4-addr + -- -*`cisco.amp.threat_hunting.severity`*:: +*`threat.enrichments.indicator.url.domain`*:: + -- -Severity result of the threat hunt registered to the malicious event. Can be Low-Critical. - +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field. type: keyword +example: www.elastic.co + -- -*`cisco.amp.threat_hunting.incident_report_guid`*:: +*`threat.enrichments.indicator.url.extension`*:: + -- -The GUID of the related threat hunting report. - +The field contains the file extension from the original request url, excluding the leading dot. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". +Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). type: keyword +example: png + -- -*`cisco.amp.threat_hunting.incident_hunt_guid`*:: +*`threat.enrichments.indicator.url.fragment`*:: + -- -The GUID of the related investigation tracking issue. - +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. type: keyword -- -*`cisco.amp.threat_hunting.incident_title`*:: +*`threat.enrichments.indicator.url.full`*:: + -- -Title of the incident related to the threat hunting activity. +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. +type: wildcard -type: keyword +example: https://www.elastic.co:443/search?q=elasticsearch#top -- -*`cisco.amp.threat_hunting.incident_summary`*:: +*`threat.enrichments.indicator.url.full.text`*:: + -- -Summary of the outcome on the threat hunting activity. - - -type: keyword +type: match_only_text -- -*`cisco.amp.threat_hunting.incident_remediation`*:: +*`threat.enrichments.indicator.url.original`*:: + -- -Recommendations to resolve the vulnerability or exploited host. +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. +type: wildcard -type: keyword +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch -- -*`cisco.amp.threat_hunting.incident_id`*:: +*`threat.enrichments.indicator.url.original.text`*:: + -- -The id of the related incident for the threat hunting activity. - - -type: keyword +type: match_only_text -- -*`cisco.amp.threat_hunting.incident_end_time`*:: +*`threat.enrichments.indicator.url.password`*:: + -- -When the threat hunt finalized or closed. - +Password of the request. -type: date +type: keyword -- -*`cisco.amp.threat_hunting.incident_start_time`*:: +*`threat.enrichments.indicator.url.path`*:: + -- -When the threat hunt was initiated. - +Path of the request, such as "/search". -type: date +type: wildcard -- -*`cisco.amp.file.attack_details.indicators`*:: +*`threat.enrichments.indicator.url.port`*:: + -- -Different indicator types that matches the exploit detected, for example different MITRE tactics. +Port of the request, such as 443. +type: long -type: flattened +example: 443 + +format: string -- -*`cisco.amp.threat_hunting.tactics`*:: +*`threat.enrichments.indicator.url.query`*:: + -- -List of all MITRE tactics related to the incident found. - +The query field describes the query string of the request, such as "q=elasticsearch". +The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. -type: flattened +type: keyword -- -*`cisco.amp.threat_hunting.techniques`*:: +*`threat.enrichments.indicator.url.registered_domain`*:: + -- -List of all MITRE techniques related to the incident found. +The highest registered url domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". +type: keyword -type: flattened +example: example.com -- -*`cisco.amp.tactics`*:: +*`threat.enrichments.indicator.url.scheme`*:: + -- -List of all MITRE tactics related to the incident found. +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. +type: keyword -type: flattened +example: https -- -*`cisco.amp.mitre_tactics`*:: +*`threat.enrichments.indicator.url.subdomain`*:: + -- -Array of all related mitre tactic ID's - +The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. type: keyword +example: east + -- -*`cisco.amp.techniques`*:: +*`threat.enrichments.indicator.url.top_level_domain`*:: + -- -List of all MITRE techniques related to the incident found. +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". +type: keyword -type: flattened +example: co.uk -- -*`cisco.amp.mitre_techniques`*:: +*`threat.enrichments.indicator.url.username`*:: + -- -Array of all related mitre technique ID's - +Username of the request. type: keyword -- -*`cisco.amp.command_line.arguments`*:: +*`threat.enrichments.indicator.x509.alternative_names`*:: + -- -The CLI arguments related to the Cloud Threat IOC reported by Cisco. - +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword +example: *.elastic.co + -- -*`cisco.amp.bp_data`*:: +*`threat.enrichments.indicator.x509.issuer.common_name`*:: + -- -Endpoint isolation information +List of common name (CN) of issuing certificate authority. +type: keyword -type: flattened +example: Example SHA2 High Assurance Server CA -- -[float] -=== cisco.asa +*`threat.enrichments.indicator.x509.issuer.country`*:: ++ +-- +List of country (C) codes -Fields for Cisco ASA Firewall. +type: keyword +example: US +-- -*`cisco.asa.message_id`*:: +*`threat.enrichments.indicator.x509.issuer.distinguished_name`*:: + -- -The Cisco ASA message identifier. - +Distinguished name (DN) of issuing certificate authority. type: keyword +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + -- -*`cisco.asa.suffix`*:: +*`threat.enrichments.indicator.x509.issuer.locality`*:: + -- -Optional suffix after %ASA identifier. - +List of locality names (L) type: keyword -example: session +example: Mountain View -- -*`cisco.asa.source_interface`*:: +*`threat.enrichments.indicator.x509.issuer.organization`*:: + -- -Source interface for the flow or event. - +List of organizations (O) of issuing certificate authority. type: keyword +example: Example Inc + -- -*`cisco.asa.destination_interface`*:: +*`threat.enrichments.indicator.x509.issuer.organizational_unit`*:: + -- -Destination interface for the flow or event. - +List of organizational units (OU) of issuing certificate authority. type: keyword +example: www.example.com + -- -*`cisco.asa.rule_name`*:: +*`threat.enrichments.indicator.x509.issuer.state_or_province`*:: + -- -Name of the Access Control List rule that matched this event. - +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`cisco.asa.source_username`*:: +*`threat.enrichments.indicator.x509.not_after`*:: + -- -Name of the user that is the source for this event. +Time at which the certificate is no longer considered valid. +type: date -type: keyword +example: 2020-07-16 03:15:39+00:00 -- -*`cisco.asa.source_user_security_group_tag`*:: +*`threat.enrichments.indicator.x509.not_before`*:: + -- -The Security Group Tag for the source user. Security Group Tag are 16-bit identifiers used to represent logical group privilege. +Time at which the certificate is first considered valid. +type: date -type: long +example: 2019-08-16 01:40:25+00:00 -- -*`cisco.asa.destination_username`*:: +*`threat.enrichments.indicator.x509.public_key_algorithm`*:: + -- -Name of the user that is the destination for this event. - +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`cisco.asa.destination_user_security_group_tag`*:: +*`threat.enrichments.indicator.x509.public_key_curve`*:: + -- -The Security Group Tag for the destination user. Security Group Tag are 16-bit identifiers used to represent logical group privilege. +The curve used by the elliptic curve public key algorithm. This is algorithm specific. +type: keyword -type: long +example: nistp521 -- -*`cisco.asa.mapped_source_ip`*:: +*`threat.enrichments.indicator.x509.public_key_exponent`*:: + -- -The translated source IP address. +Exponent used to derive the public key. This is algorithm specific. +type: long -type: ip +example: 65537 + +Field is not indexed. -- -*`cisco.asa.mapped_source_host`*:: +*`threat.enrichments.indicator.x509.public_key_size`*:: + -- -The translated source host. +The size of the public key space in bits. +type: long -type: keyword +example: 2048 -- -*`cisco.asa.mapped_source_port`*:: +*`threat.enrichments.indicator.x509.serial_number`*:: + -- -The translated source port. +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. +type: keyword -type: long +example: 55FBB9C7DEBF09809D12CCAA -- -*`cisco.asa.mapped_destination_ip`*:: +*`threat.enrichments.indicator.x509.signature_algorithm`*:: + -- -The translated destination IP address. +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. +type: keyword -type: ip +example: SHA256-RSA -- -*`cisco.asa.mapped_destination_host`*:: +*`threat.enrichments.indicator.x509.subject.common_name`*:: + -- -The translated destination host. - +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`cisco.asa.mapped_destination_port`*:: +*`threat.enrichments.indicator.x509.subject.country`*:: + -- -The translated destination port. +List of country (C) code +type: keyword -type: long +example: US -- -*`cisco.asa.threat_level`*:: +*`threat.enrichments.indicator.x509.subject.distinguished_name`*:: + -- -Threat level for malware / botnet traffic. One of very-low, low, moderate, high or very-high. - +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`cisco.asa.threat_category`*:: +*`threat.enrichments.indicator.x509.subject.locality`*:: + -- -Category for the malware / botnet traffic. For example: virus, botnet, trojan, etc. - +List of locality names (L) type: keyword +example: San Francisco + -- -*`cisco.asa.connection_id`*:: +*`threat.enrichments.indicator.x509.subject.organization`*:: + -- -Unique identifier for a flow. - +List of organizations (O) of subject. type: keyword +example: Example, Inc. + -- -*`cisco.asa.icmp_type`*:: +*`threat.enrichments.indicator.x509.subject.organizational_unit`*:: + -- -ICMP type. - +List of organizational units (OU) of subject. -type: short +type: keyword -- -*`cisco.asa.icmp_code`*:: +*`threat.enrichments.indicator.x509.subject.state_or_province`*:: + -- -ICMP code. +List of state or province names (ST, S, or P) +type: keyword -type: short +example: California -- -*`cisco.asa.connection_type`*:: +*`threat.enrichments.indicator.x509.version_number`*:: + -- -The VPN connection type - +Version of x509 format. type: keyword +example: 3 + -- -*`cisco.asa.dap_records`*:: +*`threat.enrichments.matched.atomic`*:: + -- -The assigned DAP records - +Identifies the atomic indicator value that matched a local environment endpoint or network event. type: keyword +example: bad-domain.com + -- -*`cisco.asa.command_line_arguments`*:: +*`threat.enrichments.matched.field`*:: + -- -The command line arguments logged by the local audit log - +Identifies the field of the atomic indicator that matched a local environment endpoint or network event. type: keyword +example: file.hash.sha256 + -- -*`cisco.asa.assigned_ip`*:: +*`threat.enrichments.matched.id`*:: + -- -The IP address assigned to a VPN client successfully connecting +Identifies the _id of the indicator document enriching the event. +type: keyword -type: ip +example: ff93aee5-86a1-4a61-b0e6-0cdc313d01b5 -- -*`cisco.asa.privilege.old`*:: +*`threat.enrichments.matched.index`*:: + -- -When a users privilege is changed this is the old value - +Identifies the _index of the indicator document enriching the event. type: keyword +example: filebeat-8.0.0-2021.05.23-000011 + -- -*`cisco.asa.privilege.new`*:: +*`threat.enrichments.matched.type`*:: + -- -When a users privilege is changed this is the new value - +Identifies the type of match that caused the event to be enriched with the given indicator type: keyword +example: indicator_match_rule + -- -*`cisco.asa.burst.object`*:: +*`threat.framework`*:: + -- -The related object for burst warnings - +Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events. type: keyword +example: MITRE ATT&CK + -- -*`cisco.asa.burst.id`*:: +*`threat.group.alias`*:: + -- -The related rate ID for burst warnings - +The alias(es) of the group for a set of related intrusion activity that are tracked by a common name in the security community. +While not required, you can use a MITRE ATT&CK® group alias(es). type: keyword +example: [ "Magecart Group 6" ] + -- -*`cisco.asa.burst.current_rate`*:: +*`threat.group.id`*:: + -- -The current burst rate seen - +The id of the group for a set of related intrusion activity that are tracked by a common name in the security community. +While not required, you can use a MITRE ATT&CK® group id. type: keyword +example: G0037 + -- -*`cisco.asa.burst.configured_rate`*:: +*`threat.group.name`*:: + -- -The current configured burst rate - +The name of the group for a set of related intrusion activity that are tracked by a common name in the security community. +While not required, you can use a MITRE ATT&CK® group name. type: keyword +example: FIN6 + -- -*`cisco.asa.burst.avg_rate`*:: +*`threat.group.reference`*:: + -- -The current average burst rate seen - +The reference URL of the group for a set of related intrusion activity that are tracked by a common name in the security community. +While not required, you can use a MITRE ATT&CK® group reference URL. type: keyword +example: https://attack.mitre.org/groups/G0037/ + -- -*`cisco.asa.burst.configured_avg_rate`*:: +*`threat.indicator.as.number`*:: + -- -The current configured average burst rate allowed +Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +type: long -type: keyword +example: 15169 -- -*`cisco.asa.burst.cumulative_count`*:: +*`threat.indicator.as.organization.name`*:: + -- -The total count of burst rate hits since the object was created or cleared - +Organization name. type: keyword +example: Google LLC + -- -*`cisco.asa.termination_user`*:: +*`threat.indicator.as.organization.name.text`*:: + -- -AAA name of user requesting termination - - -type: keyword +type: match_only_text -- -*`cisco.asa.webvpn.group_name`*:: +*`threat.indicator.confidence`*:: + -- -The WebVPN group name the user belongs to - +Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields. +Expected values are: + * Not Specified + * None + * Low + * Medium + * High type: keyword +example: Medium + -- -*`cisco.asa.termination_initiator`*:: +*`threat.indicator.description`*:: + -- -Interface name of the side that initiated the teardown - +Describes the type of action conducted by the threat. type: keyword +example: IP x.x.x.x was observed delivering the Angler EK. + -- -*`cisco.asa.tunnel_type`*:: +*`threat.indicator.email.address`*:: + -- -SA type (remote access or L2L) - +Identifies a threat indicator as an email address (irrespective of direction). type: keyword +example: phish@example.com + -- -*`cisco.asa.session_type`*:: +*`threat.indicator.file.accessed`*:: + -- -Session type (for example, IPsec or UDP) - +Last time the file was accessed. +Note that not all filesystems keep track of access time. -type: keyword +type: date -- -[float] -=== cisco.ftd - -Fields for Cisco Firepower Threat Defense Firewall. - - - -*`cisco.ftd.message_id`*:: +*`threat.indicator.file.attributes`*:: + -- -The Cisco FTD message identifier. - +Array of file attributes. +Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. type: keyword +example: ["readonly", "system"] + -- -*`cisco.ftd.suffix`*:: +*`threat.indicator.file.code_signature.digest_algorithm`*:: + -- -Optional suffix after %FTD identifier. - +The hashing algorithm used to sign the process. +This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. type: keyword -example: session +example: sha256 -- -*`cisco.ftd.source_interface`*:: +*`threat.indicator.file.code_signature.exists`*:: + -- -Source interface for the flow or event. +Boolean to capture if a signature is present. +type: boolean -type: keyword +example: true -- -*`cisco.ftd.destination_interface`*:: +*`threat.indicator.file.code_signature.signing_id`*:: + -- -Destination interface for the flow or event. - +The identifier used to sign the process. +This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. type: keyword +example: com.apple.xpc.proxy + -- -*`cisco.ftd.rule_name`*:: +*`threat.indicator.file.code_signature.status`*:: + -- -Name of the Access Control List rule that matched this event. - +Additional information about the certificate status. +This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. type: keyword +example: ERROR_UNTRUSTED_ROOT + -- -*`cisco.ftd.source_username`*:: +*`threat.indicator.file.code_signature.subject_name`*:: + -- -Name of the user that is the source for this event. - +Subject name of the code signer type: keyword +example: Microsoft Corporation + -- -*`cisco.ftd.destination_username`*:: +*`threat.indicator.file.code_signature.team_id`*:: + -- -Name of the user that is the destination for this event. - +The team identifier used to sign the process. +This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. type: keyword +example: EQHXZ8M8AV + -- -*`cisco.ftd.mapped_source_ip`*:: +*`threat.indicator.file.code_signature.timestamp`*:: + -- -The translated source IP address. Use ECS source.nat.ip. +Date and time when the code signature was generated and signed. +type: date -type: ip +example: 2021-01-01T12:10:30Z -- -*`cisco.ftd.mapped_source_host`*:: +*`threat.indicator.file.code_signature.trusted`*:: + -- -The translated source host. +Stores the trust status of the certificate chain. +Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +type: boolean -type: keyword +example: true -- -*`cisco.ftd.mapped_source_port`*:: +*`threat.indicator.file.code_signature.valid`*:: + -- -The translated source port. Use ECS source.nat.port. +Boolean to capture if the digital signature is verified against the binary content. +Leave unpopulated if a certificate was unchecked. +type: boolean -type: long +example: true -- -*`cisco.ftd.mapped_destination_ip`*:: +*`threat.indicator.file.created`*:: + -- -The translated destination IP address. Use ECS destination.nat.ip. - +File creation time. +Note that not all filesystems store the creation time. -type: ip +type: date -- -*`cisco.ftd.mapped_destination_host`*:: +*`threat.indicator.file.ctime`*:: + -- -The translated destination host. - +Last time the file attributes or metadata changed. +Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file. -type: keyword +type: date -- -*`cisco.ftd.mapped_destination_port`*:: +*`threat.indicator.file.device`*:: + -- -The translated destination port. Use ECS destination.nat.port. +Device that is the source of the file. +type: keyword -type: long +example: sda -- -*`cisco.ftd.threat_level`*:: +*`threat.indicator.file.directory`*:: + -- -Threat level for malware / botnet traffic. One of very-low, low, moderate, high or very-high. - +Directory where the file is located. It should include the drive letter, when appropriate. type: keyword +example: /home/alice + -- -*`cisco.ftd.threat_category`*:: +*`threat.indicator.file.drive_letter`*:: + -- -Category for the malware / botnet traffic. For example: virus, botnet, trojan, etc. - +Drive letter where the file is located. This field is only relevant on Windows. +The value should be uppercase, and not include the colon. type: keyword +example: C + -- -*`cisco.ftd.connection_id`*:: +*`threat.indicator.file.elf.architecture`*:: + -- -Unique identifier for a flow. - +Machine architecture of the ELF file. type: keyword +example: x86-64 + -- -*`cisco.ftd.icmp_type`*:: +*`threat.indicator.file.elf.byte_order`*:: + -- -ICMP type. +Byte sequence of ELF file. +type: keyword -type: short +example: Little Endian -- -*`cisco.ftd.icmp_code`*:: +*`threat.indicator.file.elf.cpu_type`*:: + -- -ICMP code. +CPU type of the ELF file. +type: keyword -type: short +example: Intel -- -*`cisco.ftd.security`*:: +*`threat.indicator.file.elf.creation_date`*:: + -- -Raw fields for Security Events. +Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. -type: object +type: date -- -*`cisco.ftd.connection_type`*:: +*`threat.indicator.file.elf.exports`*:: + -- -The VPN connection type - +List of exported element names and types. -type: keyword +type: flattened -- -*`cisco.ftd.dap_records`*:: +*`threat.indicator.file.elf.header.abi_version`*:: + -- -The assigned DAP records - +Version of the ELF Application Binary Interface (ABI). type: keyword -- -*`cisco.ftd.termination_user`*:: +*`threat.indicator.file.elf.header.class`*:: + -- -AAA name of user requesting termination - +Header class of the ELF file. type: keyword -- -*`cisco.ftd.webvpn.group_name`*:: +*`threat.indicator.file.elf.header.data`*:: + -- -The WebVPN group name the user belongs to - +Data table of the ELF header. type: keyword -- -*`cisco.ftd.termination_initiator`*:: +*`threat.indicator.file.elf.header.entrypoint`*:: + -- -Interface name of the side that initiated the teardown +Header entrypoint of the ELF file. +type: long -type: keyword +format: string -- -[float] -=== cisco.ios - -Fields for Cisco IOS logs. - - - -*`cisco.ios.access_list`*:: +*`threat.indicator.file.elf.header.object_version`*:: + -- -Name of the IP access list. - +"0x1" for original ELF files. type: keyword -- -*`cisco.ios.facility`*:: +*`threat.indicator.file.elf.header.os_abi`*:: + -- -The facility to which the message refers (for example, SNMP, SYS, and so forth). A facility can be a hardware device, a protocol, or a module of the system software. It denotes the source or the cause of the system message. - +Application Binary Interface (ABI) of the Linux OS. type: keyword -example: SEC - -- -*`network.interface.name`*:: +*`threat.indicator.file.elf.header.type`*:: + -- -Name of the network interface where the traffic has been observed. - +Header type of the ELF file. type: keyword -- - - -*`rsa.internal.msg`*:: +*`threat.indicator.file.elf.header.version`*:: + -- -This key is used to capture the raw message that comes into the Log Decoder +Version of the ELF header. type: keyword -- -*`rsa.internal.messageid`*:: +*`threat.indicator.file.elf.imports`*:: + -- -type: keyword +List of imported element names and types. + +type: flattened -- -*`rsa.internal.event_desc`*:: +*`threat.indicator.file.elf.sections`*:: + -- -type: keyword +An array containing an object for each section of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. + +type: nested -- -*`rsa.internal.message`*:: +*`threat.indicator.file.elf.sections.chi2`*:: + -- -This key captures the contents of instant messages +Chi-square probability distribution of the section. -type: keyword +type: long + +format: number -- -*`rsa.internal.time`*:: +*`threat.indicator.file.elf.sections.entropy`*:: + -- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. +Shannon entropy calculation from the section. -type: date +type: long + +format: number -- -*`rsa.internal.level`*:: +*`threat.indicator.file.elf.sections.flags`*:: + -- -Deprecated key defined only in table map. +ELF Section List flags. -type: long +type: keyword -- -*`rsa.internal.msg_id`*:: +*`threat.indicator.file.elf.sections.name`*:: + -- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +ELF Section List name. type: keyword -- -*`rsa.internal.msg_vid`*:: +*`threat.indicator.file.elf.sections.physical_offset`*:: + -- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +ELF Section List offset. type: keyword -- -*`rsa.internal.data`*:: +*`threat.indicator.file.elf.sections.physical_size`*:: + -- -Deprecated key defined only in table map. +ELF Section List physical size. -type: keyword +type: long + +format: bytes -- -*`rsa.internal.obj_server`*:: +*`threat.indicator.file.elf.sections.type`*:: + -- -Deprecated key defined only in table map. +ELF Section List type. type: keyword -- -*`rsa.internal.obj_val`*:: +*`threat.indicator.file.elf.sections.virtual_address`*:: + -- -Deprecated key defined only in table map. +ELF Section List virtual address. -type: keyword +type: long + +format: string -- -*`rsa.internal.resource`*:: +*`threat.indicator.file.elf.sections.virtual_size`*:: + -- -Deprecated key defined only in table map. +ELF Section List virtual size. -type: keyword +type: long + +format: string -- -*`rsa.internal.obj_id`*:: +*`threat.indicator.file.elf.segments`*:: + -- -Deprecated key defined only in table map. +An array containing an object for each segment of the ELF file. +The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. -type: keyword +type: nested -- -*`rsa.internal.statement`*:: +*`threat.indicator.file.elf.segments.sections`*:: + -- -Deprecated key defined only in table map. +ELF object segment sections. type: keyword -- -*`rsa.internal.audit_class`*:: +*`threat.indicator.file.elf.segments.type`*:: + -- -Deprecated key defined only in table map. +ELF object segment type. type: keyword -- -*`rsa.internal.entry`*:: +*`threat.indicator.file.elf.shared_libraries`*:: + -- -Deprecated key defined only in table map. +List of shared libraries used by this ELF object. type: keyword -- -*`rsa.internal.hcode`*:: +*`threat.indicator.file.elf.telfhash`*:: + -- -Deprecated key defined only in table map. +telfhash symbol hash for ELF file. type: keyword -- -*`rsa.internal.inode`*:: +*`threat.indicator.file.extension`*:: + -- -Deprecated key defined only in table map. +File extension, excluding the leading dot. +Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). -type: long +type: keyword + +example: png -- -*`rsa.internal.resource_class`*:: +*`threat.indicator.file.fork_name`*:: + -- -Deprecated key defined only in table map. +A fork is additional data associated with a filesystem object. +On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. +On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. type: keyword +example: Zone.Identifer + -- -*`rsa.internal.dead`*:: +*`threat.indicator.file.gid`*:: + -- -Deprecated key defined only in table map. +Primary group ID (GID) of the file. -type: long +type: keyword + +example: 1001 -- -*`rsa.internal.feed_desc`*:: +*`threat.indicator.file.group`*:: + -- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Primary group name of the file. type: keyword +example: alice + -- -*`rsa.internal.feed_name`*:: +*`threat.indicator.file.hash.md5`*:: + -- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +MD5 hash. type: keyword -- -*`rsa.internal.cid`*:: +*`threat.indicator.file.hash.sha1`*:: + -- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +SHA1 hash. type: keyword -- -*`rsa.internal.device_class`*:: +*`threat.indicator.file.hash.sha256`*:: + -- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +SHA256 hash. type: keyword -- -*`rsa.internal.device_group`*:: +*`threat.indicator.file.hash.sha512`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +SHA512 hash. type: keyword -- -*`rsa.internal.device_host`*:: +*`threat.indicator.file.hash.ssdeep`*:: + -- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +SSDEEP hash. type: keyword -- -*`rsa.internal.device_ip`*:: +*`threat.indicator.file.inode`*:: + -- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Inode representing the file in the filesystem. -type: ip +type: keyword + +example: 256383 -- -*`rsa.internal.device_ipv6`*:: +*`threat.indicator.file.mime_type`*:: + -- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. -type: ip +type: keyword -- -*`rsa.internal.device_type`*:: +*`threat.indicator.file.mode`*:: + -- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Mode of the file in octal representation. type: keyword +example: 0640 + -- -*`rsa.internal.device_type_id`*:: +*`threat.indicator.file.mtime`*:: + -- -Deprecated key defined only in table map. +Last time the file content was modified. -type: long +type: date -- -*`rsa.internal.did`*:: +*`threat.indicator.file.name`*:: + -- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Name of the file including the extension, without the directory. type: keyword +example: example.png + -- -*`rsa.internal.entropy_req`*:: +*`threat.indicator.file.owner`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +File owner's username. -type: long +type: keyword + +example: alice -- -*`rsa.internal.entropy_res`*:: +*`threat.indicator.file.path`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +Full path to the file, including the file name. It should include the drive letter, when appropriate. -type: long +type: keyword + +example: /home/alice/example.png -- -*`rsa.internal.event_name`*:: +*`threat.indicator.file.path.text`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: match_only_text -- -*`rsa.internal.feed_category`*:: +*`threat.indicator.file.pe.architecture`*:: + -- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +CPU architecture target for the file. type: keyword +example: x64 + -- -*`rsa.internal.forward_ip`*:: +*`threat.indicator.file.pe.company`*:: + -- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. +Internal company name of the file, provided at compile-time. -type: ip +type: keyword + +example: Microsoft Corporation -- -*`rsa.internal.forward_ipv6`*:: +*`threat.indicator.file.pe.description`*:: + -- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Internal description of the file, provided at compile-time. -type: ip +type: keyword + +example: Paint -- -*`rsa.internal.header_id`*:: +*`threat.indicator.file.pe.file_version`*:: + -- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Internal version of the file, provided at compile-time. type: keyword +example: 6.3.9600.17415 + -- -*`rsa.internal.lc_cid`*:: +*`threat.indicator.file.pe.imphash`*:: + -- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. +Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. type: keyword +example: 0c6803c4e922103c4dca5963aad36ddf + -- -*`rsa.internal.lc_ctime`*:: +*`threat.indicator.file.pe.original_file_name`*:: + -- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Internal name of the file, provided at compile-time. -type: date +type: keyword + +example: MSPAINT.EXE -- -*`rsa.internal.mcb_req`*:: +*`threat.indicator.file.pe.product`*:: + -- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most +Internal product name of the file, provided at compile-time. -type: long +type: keyword + +example: Microsoft® Windows® Operating System -- -*`rsa.internal.mcb_res`*:: +*`threat.indicator.file.size`*:: + -- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most +File size in bytes. +Only relevant when `file.type` is "file". type: long +example: 16384 + -- -*`rsa.internal.mcbc_req`*:: +*`threat.indicator.file.target_path`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +Target path for symlinks. -type: long +type: keyword -- -*`rsa.internal.mcbc_res`*:: +*`threat.indicator.file.target_path.text`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long +type: match_only_text -- -*`rsa.internal.medium`*:: +*`threat.indicator.file.type`*:: + -- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session +File type (file, dir, or symlink). -type: long +type: keyword + +example: file -- -*`rsa.internal.node_name`*:: +*`threat.indicator.file.uid`*:: + -- -Deprecated key defined only in table map. +The user ID (UID) or security identifier (SID) of the file owner. type: keyword +example: 1001 + -- -*`rsa.internal.nwe_callback_id`*:: +*`threat.indicator.file.x509.alternative_names`*:: + -- -This key denotes that event is endpoint related +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword +example: *.elastic.co + -- -*`rsa.internal.parse_error`*:: +*`threat.indicator.file.x509.issuer.common_name`*:: + -- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +List of common name (CN) of issuing certificate authority. type: keyword +example: Example SHA2 High Assurance Server CA + -- -*`rsa.internal.payload_req`*:: +*`threat.indicator.file.x509.issuer.country`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +List of country (C) codes -type: long +type: keyword + +example: US -- -*`rsa.internal.payload_res`*:: +*`threat.indicator.file.x509.issuer.distinguished_name`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +Distinguished name (DN) of issuing certificate authority. -type: long +type: keyword + +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA -- -*`rsa.internal.process_vid_dst`*:: +*`threat.indicator.file.x509.issuer.locality`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. +List of locality names (L) type: keyword +example: Mountain View + -- -*`rsa.internal.process_vid_src`*:: +*`threat.indicator.file.x509.issuer.organization`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. +List of organizations (O) of issuing certificate authority. type: keyword +example: Example Inc + -- -*`rsa.internal.rid`*:: +*`threat.indicator.file.x509.issuer.organizational_unit`*:: + -- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +List of organizational units (OU) of issuing certificate authority. -type: long +type: keyword + +example: www.example.com -- -*`rsa.internal.session_split`*:: +*`threat.indicator.file.x509.issuer.state_or_province`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`rsa.internal.site`*:: +*`threat.indicator.file.x509.not_after`*:: + -- -Deprecated key defined only in table map. +Time at which the certificate is no longer considered valid. -type: keyword +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`rsa.internal.size`*:: +*`threat.indicator.file.x509.not_before`*:: + -- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Time at which the certificate is first considered valid. -type: long +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`rsa.internal.sourcefile`*:: +*`threat.indicator.file.x509.public_key_algorithm`*:: + -- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`rsa.internal.ubc_req`*:: +*`threat.indicator.file.x509.public_key_curve`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: long +type: keyword + +example: nistp521 -- -*`rsa.internal.ubc_res`*:: +*`threat.indicator.file.x509.public_key_exponent`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +Exponent used to derive the public key. This is algorithm specific. type: long --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log +example: 65537 -type: keyword +Field is not indexed. -- - -*`rsa.time.event_time`*:: +*`threat.indicator.file.x509.public_key_size`*:: + -- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- +The size of the public key space in bits. -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. +type: long -type: double +example: 2048 -- -*`rsa.time.event_time_str`*:: +*`threat.indicator.file.x509.serial_number`*:: + -- -This key is used to capture the incomplete time mentioned in a session as a string +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date +example: 55FBB9C7DEBF09809D12CCAA -- -*`rsa.time.month`*:: +*`threat.indicator.file.x509.signature_algorithm`*:: + -- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + type: keyword +example: SHA256-RSA + -- -*`rsa.time.day`*:: +*`threat.indicator.file.x509.subject.common_name`*:: + -- +List of common names (CN) of subject. + type: keyword +example: shared.global.example.net + -- -*`rsa.time.endtime`*:: +*`threat.indicator.file.x509.subject.country`*:: + -- -This key is used to capture the End time mentioned in a session in a standard form +List of country (C) code -type: date +type: keyword + +example: US -- -*`rsa.time.timezone`*:: +*`threat.indicator.file.x509.subject.distinguished_name`*:: + -- -This key is used to capture the timezone of the Event Time +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`rsa.time.duration_str`*:: +*`threat.indicator.file.x509.subject.locality`*:: + -- -A text string version of the duration +List of locality names (L) type: keyword +example: San Francisco + -- -*`rsa.time.date`*:: +*`threat.indicator.file.x509.subject.organization`*:: + -- +List of organizations (O) of subject. + type: keyword +example: Example, Inc. + -- -*`rsa.time.year`*:: +*`threat.indicator.file.x509.subject.organizational_unit`*:: + -- +List of organizational units (OU) of subject. + type: keyword -- -*`rsa.time.recorded_time`*:: +*`threat.indicator.file.x509.subject.state_or_province`*:: + -- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. +List of state or province names (ST, S, or P) -type: date +type: keyword + +example: California -- -*`rsa.time.datetime`*:: +*`threat.indicator.file.x509.version_number`*:: + -- +Version of x509 format. + type: keyword +example: 3 + -- -*`rsa.time.effective_time`*:: +*`threat.indicator.first_seen`*:: + -- -This key is the effective time referenced by an individual event in a Standard Timestamp format +The date and time when intelligence source first reported sighting this indicator. type: date +example: 2020-11-05T17:25:47.000Z + -- -*`rsa.time.expire_time`*:: +*`threat.indicator.geo.city_name`*:: + -- -This key is the timestamp that explicitly refers to an expiration. +City name. -type: date +type: keyword + +example: Montreal -- -*`rsa.time.process_time`*:: +*`threat.indicator.geo.continent_code`*:: + -- -Deprecated, use duration.time +Two-letter code representing continent's name. type: keyword +example: NA + -- -*`rsa.time.hour`*:: +*`threat.indicator.geo.continent_name`*:: + -- +Name of the continent. + type: keyword +example: North America + -- -*`rsa.time.min`*:: +*`threat.indicator.geo.country_iso_code`*:: + -- +Country ISO code. + type: keyword +example: CA + -- -*`rsa.time.timestamp`*:: +*`threat.indicator.geo.country_name`*:: + -- +Country name. + type: keyword +example: Canada + -- -*`rsa.time.event_queue_time`*:: +*`threat.indicator.geo.location`*:: + -- -This key is the Time that the event was queued. - -type: date +Longitude and latitude. --- +type: geo_point -*`rsa.time.p_time1`*:: -+ --- -type: keyword +example: { "lon": -73.614830, "lat": 45.505918 } -- -*`rsa.time.tzone`*:: +*`threat.indicator.geo.name`*:: + -- +User-defined description of a location, at the level of granularity they care about. +Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. +Not typically used in automated geolocation. + type: keyword +example: boston-dc + -- -*`rsa.time.eventtime`*:: +*`threat.indicator.geo.postal_code`*:: + -- +Postal code associated with the location. +Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + type: keyword +example: 94040 + -- -*`rsa.time.gmtdate`*:: +*`threat.indicator.geo.region_iso_code`*:: + -- +Region ISO code. + type: keyword +example: CA-QC + -- -*`rsa.time.gmttime`*:: +*`threat.indicator.geo.region_name`*:: + -- +Region name. + type: keyword +example: Quebec + -- -*`rsa.time.p_date`*:: +*`threat.indicator.geo.timezone`*:: + -- +The time zone of the location, such as IANA time zone name. + type: keyword +example: America/Argentina/Buenos_Aires + -- -*`rsa.time.p_month`*:: +*`threat.indicator.ip`*:: + -- -type: keyword +Identifies a threat indicator as an IP address (irrespective of direction). --- +type: ip -*`rsa.time.p_time`*:: -+ --- -type: keyword +example: 1.2.3.4 -- -*`rsa.time.p_time2`*:: +*`threat.indicator.last_seen`*:: + -- -type: keyword +The date and time when intelligence source last reported sighting this indicator. --- +type: date -*`rsa.time.p_year`*:: -+ --- -type: keyword +example: 2020-11-05T17:25:47.000Z -- -*`rsa.time.expire_time_str`*:: +*`threat.indicator.marking.tlp`*:: + -- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. +Traffic Light Protocol sharing markings. +Recommended values are: + * WHITE + * GREEN + * AMBER + * RED type: keyword +example: WHITE + -- -*`rsa.time.stamp`*:: +*`threat.indicator.modified_at`*:: + -- -Deprecated key defined only in table map. +The date and time when intelligence source last modified information for this indicator. type: date --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword +example: 2020-11-05T17:25:47.000Z -- -*`rsa.misc.result`*:: +*`threat.indicator.port`*:: + -- -This key is used to capture the outcome/result string value of an action in a session. +Identifies a threat indicator as a port number (irrespective of direction). -type: keyword +type: long + +example: 443 -- -*`rsa.misc.severity`*:: +*`threat.indicator.provider`*:: + -- -This key is used to capture the severity given the session +The name of the indicator's provider. type: keyword +example: lrz_urlhaus + -- -*`rsa.misc.event_type`*:: +*`threat.indicator.reference`*:: + -- -This key captures the event category type as specified by the event source. +Reference URL linking to additional information about this indicator. type: keyword +example: https://system.example.com/indicator/0001234 + -- -*`rsa.misc.reference_id`*:: +*`threat.indicator.registry.data.bytes`*:: + -- -This key is used to capture an event id from the session directly +Original bytes written with base64 encoding. +For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. type: keyword +example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= + -- -*`rsa.misc.version`*:: +*`threat.indicator.registry.data.strings`*:: + -- -This key captures Version of the application or OS which is generating the event. +Content when writing string types. +Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). -type: keyword +type: wildcard + +example: ["C:\rta\red_ttp\bin\myapp.exe"] -- -*`rsa.misc.disposition`*:: +*`threat.indicator.registry.data.type`*:: + -- -This key captures the The end state of an action. +Standard registry type for encoding contents type: keyword +example: REG_SZ + -- -*`rsa.misc.result_code`*:: +*`threat.indicator.registry.hive`*:: + -- -This key is used to capture the outcome/result numeric value of an action in a session +Abbreviated name for the hive. type: keyword +example: HKLM + -- -*`rsa.misc.category`*:: +*`threat.indicator.registry.key`*:: + -- -This key is used to capture the category of an event given by the vendor in the session +Hive-relative path of keys. type: keyword +example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe + -- -*`rsa.misc.obj_name`*:: +*`threat.indicator.registry.path`*:: + -- -This is used to capture name of object +Full path, including hive, key and value type: keyword +example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger + -- -*`rsa.misc.obj_type`*:: +*`threat.indicator.registry.value`*:: + -- -This is used to capture type of object +Name of the value written. type: keyword +example: Debugger + -- -*`rsa.misc.event_source`*:: +*`threat.indicator.scanner_stats`*:: + -- -This key captures Source of the event that’s not a hostname +Count of AV/EDR vendors that successfully detected malicious file or URL. -type: keyword +type: long + +example: 4 -- -*`rsa.misc.log_session_id`*:: +*`threat.indicator.sightings`*:: + -- -This key is used to capture a sessionid from the session directly +Number of times this indicator was observed conducting threat activity. -type: keyword +type: long + +example: 20 -- -*`rsa.misc.group`*:: +*`threat.indicator.type`*:: + -- -This key captures the Group Name value +Type of indicator as represented by Cyber Observable in STIX 2.0. +Recommended values: + * autonomous-system + * artifact + * directory + * domain-name + * email-addr + * file + * ipv4-addr + * ipv6-addr + * mac-addr + * mutex + * port + * process + * software + * url + * user-account + * windows-registry-key + * x509-certificate type: keyword +example: ipv4-addr + -- -*`rsa.misc.policy_name`*:: +*`threat.indicator.url.domain`*:: + -- -This key is used to capture the Policy Name only. +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field. type: keyword +example: www.elastic.co + -- -*`rsa.misc.rule_name`*:: +*`threat.indicator.url.extension`*:: + -- -This key captures the Rule Name +The field contains the file extension from the original request url, excluding the leading dot. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". +Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). type: keyword +example: png + -- -*`rsa.misc.context`*:: +*`threat.indicator.url.fragment`*:: + -- -This key captures Information which adds additional context to the event. +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. type: keyword -- -*`rsa.misc.change_new`*:: +*`threat.indicator.url.full`*:: + -- -This key is used to capture the new values of the attribute that’s changing in a session +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. -type: keyword +type: wildcard + +example: https://www.elastic.co:443/search?q=elasticsearch#top -- -*`rsa.misc.space`*:: +*`threat.indicator.url.full.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.client`*:: +*`threat.indicator.url.original`*:: + -- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. -type: keyword +type: wildcard + +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch -- -*`rsa.misc.msgIdPart1`*:: +*`threat.indicator.url.original.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.msgIdPart2`*:: +*`threat.indicator.url.password`*:: + -- +Password of the request. + type: keyword -- -*`rsa.misc.change_old`*:: +*`threat.indicator.url.path`*:: + -- -This key is used to capture the old value of the attribute that’s changing in a session +Path of the request, such as "/search". -type: keyword +type: wildcard -- -*`rsa.misc.operation_id`*:: +*`threat.indicator.url.port`*:: + -- -An alert number or operation number. The values should be unique and non-repeating. +Port of the request, such as 443. -type: keyword +type: long + +example: 443 + +format: string -- -*`rsa.misc.event_state`*:: +*`threat.indicator.url.query`*:: + -- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. +The query field describes the query string of the request, such as "q=elasticsearch". +The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. type: keyword -- -*`rsa.misc.group_object`*:: +*`threat.indicator.url.registered_domain`*:: + -- -This key captures a collection/grouping of entities. Specific usage +The highest registered url domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". type: keyword +example: example.com + -- -*`rsa.misc.node`*:: +*`threat.indicator.url.scheme`*:: + -- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. type: keyword +example: https + -- -*`rsa.misc.rule`*:: +*`threat.indicator.url.subdomain`*:: + -- -This key captures the Rule number +The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. type: keyword +example: east + -- -*`rsa.misc.device_name`*:: +*`threat.indicator.url.top_level_domain`*:: + -- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". type: keyword +example: co.uk + -- -*`rsa.misc.param`*:: +*`threat.indicator.url.username`*:: + -- -This key is the parameters passed as part of a command or application, etc. +Username of the request. type: keyword -- -*`rsa.misc.change_attrib`*:: +*`threat.indicator.x509.alternative_names`*:: + -- -This key is used to capture the name of the attribute that’s changing in a session +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword +example: *.elastic.co + -- -*`rsa.misc.event_computer`*:: +*`threat.indicator.x509.issuer.common_name`*:: + -- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. +List of common name (CN) of issuing certificate authority. type: keyword +example: Example SHA2 High Assurance Server CA + -- -*`rsa.misc.reference_id1`*:: +*`threat.indicator.x509.issuer.country`*:: + -- -This key is for Linked ID to be used as an addition to "reference.id" +List of country (C) codes type: keyword +example: US + -- -*`rsa.misc.event_log`*:: +*`threat.indicator.x509.issuer.distinguished_name`*:: + -- -This key captures the Name of the event log +Distinguished name (DN) of issuing certificate authority. type: keyword +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + -- -*`rsa.misc.OS`*:: +*`threat.indicator.x509.issuer.locality`*:: + -- -This key captures the Name of the Operating System +List of locality names (L) type: keyword +example: Mountain View + -- -*`rsa.misc.terminal`*:: +*`threat.indicator.x509.issuer.organization`*:: + -- -This key captures the Terminal Names only +List of organizations (O) of issuing certificate authority. type: keyword +example: Example Inc + -- -*`rsa.misc.msgIdPart3`*:: +*`threat.indicator.x509.issuer.organizational_unit`*:: + -- +List of organizational units (OU) of issuing certificate authority. + type: keyword +example: www.example.com + -- -*`rsa.misc.filter`*:: +*`threat.indicator.x509.issuer.state_or_province`*:: + -- -This key captures Filter used to reduce result set +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`rsa.misc.serial_number`*:: +*`threat.indicator.x509.not_after`*:: + -- -This key is the Serial number associated with a physical asset. +Time at which the certificate is no longer considered valid. -type: keyword +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`rsa.misc.checksum`*:: +*`threat.indicator.x509.not_before`*:: + -- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. +Time at which the certificate is first considered valid. -type: keyword +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`rsa.misc.event_user`*:: +*`threat.indicator.x509.public_key_algorithm`*:: + -- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`rsa.misc.virusname`*:: +*`threat.indicator.x509.public_key_curve`*:: + -- -This key captures the name of the virus +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`rsa.misc.content_type`*:: +*`threat.indicator.x509.public_key_exponent`*:: + -- -This key is used to capture Content Type only. +Exponent used to derive the public key. This is algorithm specific. -type: keyword +type: long + +example: 65537 + +Field is not indexed. -- -*`rsa.misc.group_id`*:: +*`threat.indicator.x509.public_key_size`*:: + -- -This key captures Group ID Number (related to the group name) +The size of the public key space in bits. -type: keyword +type: long + +example: 2048 -- -*`rsa.misc.policy_id`*:: +*`threat.indicator.x509.serial_number`*:: + -- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -*`rsa.misc.vsys`*:: +*`threat.indicator.x509.signature_algorithm`*:: + -- -This key captures Virtual System Name +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword +example: SHA256-RSA + -- -*`rsa.misc.connection_id`*:: +*`threat.indicator.x509.subject.common_name`*:: + -- -This key captures the Connection ID +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`rsa.misc.reference_id2`*:: +*`threat.indicator.x509.subject.country`*:: + -- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. +List of country (C) code type: keyword +example: US + -- -*`rsa.misc.sensor`*:: +*`threat.indicator.x509.subject.distinguished_name`*:: + -- -This key captures Name of the sensor. Typically used in IDS/IPS based devices +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`rsa.misc.sig_id`*:: +*`threat.indicator.x509.subject.locality`*:: + -- -This key captures IDS/IPS Int Signature ID +List of locality names (L) -type: long +type: keyword + +example: San Francisco -- -*`rsa.misc.port_name`*:: +*`threat.indicator.x509.subject.organization`*:: + -- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). +List of organizations (O) of subject. type: keyword +example: Example, Inc. + -- -*`rsa.misc.rule_group`*:: +*`threat.indicator.x509.subject.organizational_unit`*:: + -- -This key captures the Rule group name +List of organizational units (OU) of subject. type: keyword -- -*`rsa.misc.risk_num`*:: +*`threat.indicator.x509.subject.state_or_province`*:: + -- -This key captures a Numeric Risk value +List of state or province names (ST, S, or P) -type: double +type: keyword + +example: California -- -*`rsa.misc.trigger_val`*:: +*`threat.indicator.x509.version_number`*:: + -- -This key captures the Value of the trigger or threshold condition. +Version of x509 format. type: keyword +example: 3 + -- -*`rsa.misc.log_session_id1`*:: +*`threat.software.alias`*:: + -- -This key is used to capture a Linked (Related) Session ID from the session directly +The alias(es) of the software for a set of related intrusion activity that are tracked by a common name in the security community. +While not required, you can use a MITRE ATT&CK® associated software description. type: keyword +example: [ "X-Agent" ] + -- -*`rsa.misc.comp_version`*:: +*`threat.software.id`*:: + -- -This key captures the Version level of a sub-component of a product. +The id of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. +While not required, you can use a MITRE ATT&CK® software id. type: keyword +example: S0552 + -- -*`rsa.misc.content_version`*:: +*`threat.software.name`*:: + -- -This key captures Version level of a signature or database content. +The name of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. +While not required, you can use a MITRE ATT&CK® software name. type: keyword +example: AdFind + -- -*`rsa.misc.hardware_id`*:: +*`threat.software.platforms`*:: + -- -This key is used to capture unique identifier for a device or system (NOT a Mac address) +The platforms of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. +Recommended Values: + * AWS + * Azure + * Azure AD + * GCP + * Linux + * macOS + * Network + * Office 365 + * SaaS + * Windows + +While not required, you can use a MITRE ATT&CK® software platforms. type: keyword +example: [ "Windows" ] + -- -*`rsa.misc.risk`*:: +*`threat.software.reference`*:: + -- -This key captures the non-numeric risk value +The reference URL of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. +While not required, you can use a MITRE ATT&CK® software reference URL. type: keyword +example: https://attack.mitre.org/software/S0552/ + -- -*`rsa.misc.event_id`*:: +*`threat.software.type`*:: + -- -type: keyword +The type of software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. +Recommended values + * Malware + * Tool --- + While not required, you can use a MITRE ATT&CK® software type. -*`rsa.misc.reason`*:: -+ --- type: keyword +example: Tool + -- -*`rsa.misc.status`*:: +*`threat.tactic.id`*:: + -- +The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) + type: keyword +example: TA0002 + -- -*`rsa.misc.mail_id`*:: +*`threat.tactic.name`*:: + -- -This key is used to capture the mailbox id/name +Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/) type: keyword +example: Execution + -- -*`rsa.misc.rule_uid`*:: +*`threat.tactic.reference`*:: + -- -This key is the Unique Identifier for a rule. +The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) type: keyword +example: https://attack.mitre.org/tactics/TA0002/ + -- -*`rsa.misc.trigger_desc`*:: +*`threat.technique.id`*:: + -- -This key captures the Description of the trigger or threshold condition. +The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) type: keyword +example: T1059 + -- -*`rsa.misc.inout`*:: +*`threat.technique.name`*:: + -- +The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) + type: keyword +example: Command and Scripting Interpreter + -- -*`rsa.misc.p_msgid`*:: +*`threat.technique.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.data_type`*:: +*`threat.technique.reference`*:: + -- +The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) + type: keyword +example: https://attack.mitre.org/techniques/T1059/ + -- -*`rsa.misc.msgIdPart4`*:: +*`threat.technique.subtechnique.id`*:: + -- -type: keyword +The full id of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) + +type: keyword + +example: T1059.001 -- -*`rsa.misc.error`*:: +*`threat.technique.subtechnique.name`*:: + -- -This key captures All non successful Error codes or responses +The name of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) type: keyword +example: PowerShell + -- -*`rsa.misc.index`*:: +*`threat.technique.subtechnique.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.listnum`*:: +*`threat.technique.subtechnique.reference`*:: + -- -This key is used to capture listname or listnumber, primarily for collecting access-list +The reference url of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) type: keyword +example: https://attack.mitre.org/techniques/T1059/001/ + -- -*`rsa.misc.ntype`*:: +[float] +=== tls + +Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files. + + +*`tls.cipher`*:: + -- +String indicating the cipher used during the current connection. + type: keyword +example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + -- -*`rsa.misc.observed_val`*:: +*`tls.client.certificate`*:: + -- -This key captures the Value observed (from the perspective of the device generating the log). +PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. type: keyword +example: MII... + -- -*`rsa.misc.policy_value`*:: +*`tls.client.certificate_chain`*:: + -- -This key captures the contents of the policy. This contains details about the policy +Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. type: keyword +example: ["MII...", "MII..."] + -- -*`rsa.misc.pool_name`*:: +*`tls.client.hash.md5`*:: + -- -This key captures the name of a resource pool +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + -- -*`rsa.misc.rule_template`*:: +*`tls.client.hash.sha1`*:: + -- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. type: keyword +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + -- -*`rsa.misc.count`*:: +*`tls.client.hash.sha256`*:: + -- +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. + type: keyword +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + -- -*`rsa.misc.number`*:: +*`tls.client.issuer`*:: + -- +Distinguished name of subject of the issuer of the x.509 certificate presented by the client. + type: keyword +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + -- -*`rsa.misc.sigcat`*:: +*`tls.client.ja3`*:: + -- +A hash that identifies clients based on how they perform an SSL/TLS handshake. + type: keyword +example: d4e5b18d6b55c71272893221c96ba240 + -- -*`rsa.misc.type`*:: +*`tls.client.not_after`*:: + -- -type: keyword +Date/Time indicating when client certificate is no longer considered valid. + +type: date + +example: 2021-01-01T00:00:00.000Z -- -*`rsa.misc.comments`*:: +*`tls.client.not_before`*:: + -- -Comment information provided in the log message +Date/Time indicating when client certificate is first considered valid. -type: keyword +type: date + +example: 1970-01-01T00:00:00.000Z -- -*`rsa.misc.doc_number`*:: +*`tls.client.server_name`*:: + -- -This key captures File Identification number +Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. -type: long +type: keyword + +example: www.elastic.co -- -*`rsa.misc.expected_val`*:: +*`tls.client.subject`*:: + -- -This key captures the Value expected (from the perspective of the device generating the log). +Distinguished name of subject of the x.509 certificate presented by the client. type: keyword +example: CN=myclient, OU=Documentation Team, DC=example, DC=com + -- -*`rsa.misc.job_num`*:: +*`tls.client.supported_ciphers`*:: + -- -This key captures the Job Number +Array of ciphers offered by the client during the client hello. type: keyword +example: ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."] + -- -*`rsa.misc.spi_dst`*:: +*`tls.client.x509.alternative_names`*:: + -- -Destination SPI Index +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. type: keyword +example: *.elastic.co + -- -*`rsa.misc.spi_src`*:: +*`tls.client.x509.issuer.common_name`*:: + -- -Source SPI Index +List of common name (CN) of issuing certificate authority. type: keyword +example: Example SHA2 High Assurance Server CA + -- -*`rsa.misc.code`*:: +*`tls.client.x509.issuer.country`*:: + -- +List of country (C) codes + type: keyword +example: US + -- -*`rsa.misc.agent_id`*:: +*`tls.client.x509.issuer.distinguished_name`*:: + -- -This key is used to capture agent id +Distinguished name (DN) of issuing certificate authority. type: keyword +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + -- -*`rsa.misc.message_body`*:: +*`tls.client.x509.issuer.locality`*:: + -- -This key captures the The contents of the message body. +List of locality names (L) type: keyword +example: Mountain View + -- -*`rsa.misc.phone`*:: +*`tls.client.x509.issuer.organization`*:: + -- +List of organizations (O) of issuing certificate authority. + type: keyword +example: Example Inc + -- -*`rsa.misc.sig_id_str`*:: +*`tls.client.x509.issuer.organizational_unit`*:: + -- -This key captures a string object of the sigid variable. +List of organizational units (OU) of issuing certificate authority. type: keyword +example: www.example.com + -- -*`rsa.misc.cmd`*:: +*`tls.client.x509.issuer.state_or_province`*:: + -- +List of state or province names (ST, S, or P) + type: keyword +example: California + -- -*`rsa.misc.misc`*:: +*`tls.client.x509.not_after`*:: + -- -type: keyword +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`rsa.misc.name`*:: +*`tls.client.x509.not_before`*:: + -- -type: keyword +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`rsa.misc.cpu`*:: +*`tls.client.x509.public_key_algorithm`*:: + -- -This key is the CPU time used in the execution of the event being recorded. +Algorithm used to generate the public key. -type: long +type: keyword + +example: RSA -- -*`rsa.misc.event_desc`*:: +*`tls.client.x509.public_key_curve`*:: + -- -This key is used to capture a description of an event available directly or inferred +The curve used by the elliptic curve public key algorithm. This is algorithm specific. type: keyword +example: nistp521 + -- -*`rsa.misc.sig_id1`*:: +*`tls.client.x509.public_key_exponent`*:: + -- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id +Exponent used to derive the public key. This is algorithm specific. type: long +example: 65537 + +Field is not indexed. + -- -*`rsa.misc.im_buddyid`*:: +*`tls.client.x509.public_key_size`*:: + -- -type: keyword +The size of the public key space in bits. + +type: long + +example: 2048 -- -*`rsa.misc.im_client`*:: +*`tls.client.x509.serial_number`*:: + -- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -*`rsa.misc.im_userid`*:: +*`tls.client.x509.signature_algorithm`*:: + -- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + type: keyword +example: SHA256-RSA + -- -*`rsa.misc.pid`*:: +*`tls.client.x509.subject.common_name`*:: + -- +List of common names (CN) of subject. + type: keyword +example: shared.global.example.net + -- -*`rsa.misc.priority`*:: +*`tls.client.x509.subject.country`*:: + -- +List of country (C) code + type: keyword +example: US + -- -*`rsa.misc.context_subject`*:: +*`tls.client.x509.subject.distinguished_name`*:: + -- -This key is to be used in an audit context where the subject is the object being identified +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`rsa.misc.context_target`*:: +*`tls.client.x509.subject.locality`*:: + -- +List of locality names (L) + type: keyword +example: San Francisco + -- -*`rsa.misc.cve`*:: +*`tls.client.x509.subject.organization`*:: + -- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. +List of organizations (O) of subject. type: keyword +example: Example, Inc. + -- -*`rsa.misc.fcatnum`*:: +*`tls.client.x509.subject.organizational_unit`*:: + -- -This key captures Filter Category Number. Legacy Usage +List of organizational units (OU) of subject. type: keyword -- -*`rsa.misc.library`*:: +*`tls.client.x509.subject.state_or_province`*:: + -- -This key is used to capture library information in mainframe devices +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`rsa.misc.parent_node`*:: +*`tls.client.x509.version_number`*:: + -- -This key captures the Parent Node Name. Must be related to node variable. +Version of x509 format. type: keyword +example: 3 + -- -*`rsa.misc.risk_info`*:: +*`tls.curve`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +String indicating the curve used for the given cipher, when applicable. type: keyword +example: secp256r1 + -- -*`rsa.misc.tcp_flags`*:: +*`tls.established`*:: + -- -This key is captures the TCP flags set in any packet of session +Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. -type: long +type: boolean -- -*`rsa.misc.tos`*:: +*`tls.next_protocol`*:: + -- -This key describes the type of service +String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. -type: long +type: keyword + +example: http/1.1 -- -*`rsa.misc.vm_target`*:: +*`tls.resumed`*:: + -- -VMWare Target **VMWARE** only varaible. +Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -type: keyword +type: boolean -- -*`rsa.misc.workspace`*:: +*`tls.server.certificate`*:: + -- -This key captures Workspace Description +PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. type: keyword +example: MII... + -- -*`rsa.misc.command`*:: +*`tls.server.certificate_chain`*:: + -- +Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. + type: keyword +example: ["MII...", "MII..."] + -- -*`rsa.misc.event_category`*:: +*`tls.server.hash.md5`*:: + -- +Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + type: keyword +example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + -- -*`rsa.misc.facilityname`*:: +*`tls.server.hash.sha1`*:: + -- +Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + type: keyword +example: 9E393D93138888D288266C2D915214D1D1CCEB2A + -- -*`rsa.misc.forensic_info`*:: +*`tls.server.hash.sha256`*:: + -- +Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. + type: keyword +example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + -- -*`rsa.misc.jobname`*:: +*`tls.server.issuer`*:: + -- +Subject of the issuer of the x.509 certificate presented by the server. + type: keyword +example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + -- -*`rsa.misc.mode`*:: +*`tls.server.ja3s`*:: + -- +A hash that identifies servers based on how they perform an SSL/TLS handshake. + type: keyword +example: 394441ab65754e2207b1e1b457b3641d + -- -*`rsa.misc.policy`*:: +*`tls.server.not_after`*:: + -- -type: keyword +Timestamp indicating when server certificate is no longer considered valid. + +type: date + +example: 2021-01-01T00:00:00.000Z -- -*`rsa.misc.policy_waiver`*:: +*`tls.server.not_before`*:: + -- -type: keyword +Timestamp indicating when server certificate is first considered valid. + +type: date + +example: 1970-01-01T00:00:00.000Z -- -*`rsa.misc.second`*:: +*`tls.server.subject`*:: + -- +Subject of the x.509 certificate presented by the server. + type: keyword +example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + -- -*`rsa.misc.space1`*:: +*`tls.server.x509.alternative_names`*:: + -- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + type: keyword +example: *.elastic.co + -- -*`rsa.misc.subcategory`*:: +*`tls.server.x509.issuer.common_name`*:: + -- +List of common name (CN) of issuing certificate authority. + type: keyword +example: Example SHA2 High Assurance Server CA + -- -*`rsa.misc.tbdstr2`*:: +*`tls.server.x509.issuer.country`*:: + -- +List of country (C) codes + type: keyword +example: US + -- -*`rsa.misc.alert_id`*:: +*`tls.server.x509.issuer.distinguished_name`*:: + -- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Distinguished name (DN) of issuing certificate authority. type: keyword +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + -- -*`rsa.misc.checksum_dst`*:: +*`tls.server.x509.issuer.locality`*:: + -- -This key is used to capture the checksum or hash of the the target entity such as a process or file. +List of locality names (L) type: keyword +example: Mountain View + -- -*`rsa.misc.checksum_src`*:: +*`tls.server.x509.issuer.organization`*:: + -- -This key is used to capture the checksum or hash of the source entity such as a file or process. +List of organizations (O) of issuing certificate authority. type: keyword +example: Example Inc + -- -*`rsa.misc.fresult`*:: +*`tls.server.x509.issuer.organizational_unit`*:: + -- -This key captures the Filter Result +List of organizational units (OU) of issuing certificate authority. -type: long +type: keyword + +example: www.example.com -- -*`rsa.misc.payload_dst`*:: +*`tls.server.x509.issuer.state_or_province`*:: + -- -This key is used to capture destination payload +List of state or province names (ST, S, or P) type: keyword +example: California + -- -*`rsa.misc.payload_src`*:: +*`tls.server.x509.not_after`*:: + -- -This key is used to capture source payload +Time at which the certificate is no longer considered valid. -type: keyword +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`rsa.misc.pool_id`*:: +*`tls.server.x509.not_before`*:: + -- -This key captures the identifier (typically numeric field) of a resource pool +Time at which the certificate is first considered valid. -type: keyword +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`rsa.misc.process_id_val`*:: +*`tls.server.x509.public_key_algorithm`*:: + -- -This key is a failure key for Process ID when it is not an integer value +Algorithm used to generate the public key. type: keyword +example: RSA + -- -*`rsa.misc.risk_num_comm`*:: +*`tls.server.x509.public_key_curve`*:: + -- -This key captures Risk Number Community +The curve used by the elliptic curve public key algorithm. This is algorithm specific. -type: double +type: keyword + +example: nistp521 -- -*`rsa.misc.risk_num_next`*:: +*`tls.server.x509.public_key_exponent`*:: + -- -This key captures Risk Number NextGen +Exponent used to derive the public key. This is algorithm specific. -type: double +type: long + +example: 65537 + +Field is not indexed. -- -*`rsa.misc.risk_num_sand`*:: +*`tls.server.x509.public_key_size`*:: + -- -This key captures Risk Number SandBox +The size of the public key space in bits. -type: double +type: long + +example: 2048 -- -*`rsa.misc.risk_num_static`*:: +*`tls.server.x509.serial_number`*:: + -- -This key captures Risk Number Static +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. -type: double +type: keyword + +example: 55FBB9C7DEBF09809D12CCAA -- -*`rsa.misc.risk_suspicious`*:: +*`tls.server.x509.signature_algorithm`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. type: keyword +example: SHA256-RSA + -- -*`rsa.misc.risk_warning`*:: +*`tls.server.x509.subject.common_name`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +List of common names (CN) of subject. type: keyword +example: shared.global.example.net + -- -*`rsa.misc.snmp_oid`*:: +*`tls.server.x509.subject.country`*:: + -- -SNMP Object Identifier +List of country (C) code type: keyword +example: US + -- -*`rsa.misc.sql`*:: +*`tls.server.x509.subject.distinguished_name`*:: + -- -This key captures the SQL query +Distinguished name (DN) of the certificate subject entity. type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`rsa.misc.vuln_ref`*:: +*`tls.server.x509.subject.locality`*:: + -- -This key captures the Vulnerability Reference details +List of locality names (L) type: keyword +example: San Francisco + -- -*`rsa.misc.acl_id`*:: +*`tls.server.x509.subject.organization`*:: + -- +List of organizations (O) of subject. + type: keyword +example: Example, Inc. + -- -*`rsa.misc.acl_op`*:: +*`tls.server.x509.subject.organizational_unit`*:: + -- +List of organizational units (OU) of subject. + type: keyword -- -*`rsa.misc.acl_pos`*:: +*`tls.server.x509.subject.state_or_province`*:: + -- +List of state or province names (ST, S, or P) + type: keyword +example: California + -- -*`rsa.misc.acl_table`*:: +*`tls.server.x509.version_number`*:: + -- +Version of x509 format. + type: keyword +example: 3 + -- -*`rsa.misc.admin`*:: +*`tls.version`*:: + -- +Numeric part of the version parsed from the original string. + type: keyword +example: 1.2 + -- -*`rsa.misc.alarm_id`*:: +*`tls.version_protocol`*:: + -- +Normalized lowercase protocol name parsed from original string. + type: keyword +example: tls + -- -*`rsa.misc.alarmname`*:: +*`span.id`*:: + -- +Unique identifier of the span within the scope of its trace. +A span represents an operation within a transaction, such as a request to another service, or a database query. + type: keyword +example: 3ff9a8981b7ccd5a + -- -*`rsa.misc.app_id`*:: +*`trace.id`*:: + -- +Unique identifier of the trace. +A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. + type: keyword +example: 4bf92f3577b34da6a3ce929d0e0e4736 + -- -*`rsa.misc.audit`*:: +*`transaction.id`*:: + -- +Unique identifier of the transaction within the scope of its trace. +A transaction is the highest level of work measured within a service, such as a request to a server. + type: keyword +example: 00f067aa0ba902b7 + -- -*`rsa.misc.audit_object`*:: +[float] +=== url + +URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. + + +*`url.domain`*:: + -- +Domain of the url, such as "www.elastic.co". +In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. +If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field. + type: keyword +example: www.elastic.co + -- -*`rsa.misc.auditdata`*:: +*`url.extension`*:: + -- +The field contains the file extension from the original request url, excluding the leading dot. +The file extension is only set if it exists, as not every url has a file extension. +The leading period must not be included. For example, the value must be "png", not ".png". +Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). + type: keyword +example: png + -- -*`rsa.misc.benchmark`*:: +*`url.fragment`*:: + -- +Portion of the url after the `#`, such as "top". +The `#` is not part of the fragment. + type: keyword -- -*`rsa.misc.bypass`*:: +*`url.full`*:: + -- -type: keyword +If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. + +type: wildcard + +example: https://www.elastic.co:443/search?q=elasticsearch#top -- -*`rsa.misc.cache`*:: +*`url.full.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cache_hit`*:: +*`url.original`*:: + -- -type: keyword +Unmodified original url as seen in the event source. +Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. +This field is meant to represent the URL as it was observed, complete or not. + +type: wildcard + +example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch -- -*`rsa.misc.cefversion`*:: +*`url.original.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cfg_attr`*:: +*`url.password`*:: + -- +Password of the request. + type: keyword -- -*`rsa.misc.cfg_obj`*:: +*`url.path`*:: + -- -type: keyword +Path of the request, such as "/search". + +type: wildcard -- -*`rsa.misc.cfg_path`*:: +*`url.port`*:: + -- -type: keyword +Port of the request, such as 443. + +type: long + +example: 443 + +format: string -- -*`rsa.misc.changes`*:: +*`url.query`*:: + -- +The query field describes the query string of the request, such as "q=elasticsearch". +The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. + type: keyword -- -*`rsa.misc.client_ip`*:: +*`url.registered_domain`*:: + -- +The highest registered url domain, stripped of the subdomain. +For example, the registered domain for "foo.example.com" is "example.com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". + type: keyword +example: example.com + -- -*`rsa.misc.clustermembers`*:: +*`url.scheme`*:: + -- +Scheme of the request, such as "https". +Note: The `:` is not part of the scheme. + type: keyword +example: https + -- -*`rsa.misc.cn_acttimeout`*:: +*`url.subdomain`*:: + -- +The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. + type: keyword +example: east + -- -*`rsa.misc.cn_asn_src`*:: +*`url.top_level_domain`*:: + -- +The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". +This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". + type: keyword +example: co.uk + -- -*`rsa.misc.cn_bgpv4nxthop`*:: +*`url.username`*:: + -- +Username of the request. + type: keyword -- -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword +[float] +=== user --- +The user fields describe information about the user that is relevant to the event. +Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. -*`rsa.misc.cn_dst_tos`*:: + +*`user.changes.domain`*:: + -- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_dst_vlan`*:: +*`user.changes.email`*:: + -- +User email address. + type: keyword -- -*`rsa.misc.cn_engine_id`*:: +*`user.changes.full_name`*:: + -- +User's full name, if available. + type: keyword +example: Albert Einstein + -- -*`rsa.misc.cn_engine_type`*:: +*`user.changes.full_name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_f_switch`*:: +*`user.changes.group.domain`*:: + -- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_flowsampid`*:: +*`user.changes.group.id`*:: + -- +Unique identifier for the group on the system/platform. + type: keyword -- -*`rsa.misc.cn_flowsampintv`*:: +*`user.changes.group.name`*:: + -- +Name of the group. + type: keyword -- -*`rsa.misc.cn_flowsampmode`*:: +*`user.changes.hash`*:: + -- +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. + type: keyword -- -*`rsa.misc.cn_inacttimeout`*:: +*`user.changes.id`*:: + -- +Unique identifier of the user. + type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`rsa.misc.cn_inpermbyts`*:: +*`user.changes.name`*:: + -- +Short name or login of the user. + type: keyword +example: a.einstein + -- -*`rsa.misc.cn_inpermpckts`*:: +*`user.changes.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_invalid`*:: +*`user.changes.roles`*:: + -- +Array of user roles at the time of the event. + type: keyword +example: ["kibana_admin", "reporting_user"] + -- -*`rsa.misc.cn_ip_proto_ver`*:: +*`user.domain`*:: + -- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_ipv4_ident`*:: +*`user.effective.domain`*:: + -- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_l_switch`*:: +*`user.effective.email`*:: + -- +User email address. + type: keyword -- -*`rsa.misc.cn_log_did`*:: +*`user.effective.full_name`*:: + -- +User's full name, if available. + type: keyword +example: Albert Einstein + -- -*`rsa.misc.cn_log_rid`*:: +*`user.effective.full_name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_max_ttl`*:: +*`user.effective.group.domain`*:: + -- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_maxpcktlen`*:: +*`user.effective.group.id`*:: + -- +Unique identifier for the group on the system/platform. + type: keyword -- -*`rsa.misc.cn_min_ttl`*:: +*`user.effective.group.name`*:: + -- +Name of the group. + type: keyword -- -*`rsa.misc.cn_minpcktlen`*:: +*`user.effective.hash`*:: + -- +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. + type: keyword -- -*`rsa.misc.cn_mpls_lbl_1`*:: +*`user.effective.id`*:: + -- +Unique identifier of the user. + type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`rsa.misc.cn_mpls_lbl_10`*:: +*`user.effective.name`*:: + -- +Short name or login of the user. + type: keyword +example: a.einstein + -- -*`rsa.misc.cn_mpls_lbl_2`*:: +*`user.effective.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_mpls_lbl_3`*:: +*`user.effective.roles`*:: + -- +Array of user roles at the time of the event. + type: keyword +example: ["kibana_admin", "reporting_user"] + -- -*`rsa.misc.cn_mpls_lbl_4`*:: +*`user.email`*:: + -- +User email address. + type: keyword -- -*`rsa.misc.cn_mpls_lbl_5`*:: +*`user.full_name`*:: + -- +User's full name, if available. + type: keyword +example: Albert Einstein + -- -*`rsa.misc.cn_mpls_lbl_6`*:: +*`user.full_name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_mpls_lbl_7`*:: +*`user.group.domain`*:: + -- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_mpls_lbl_8`*:: +*`user.group.id`*:: + -- +Unique identifier for the group on the system/platform. + type: keyword -- -*`rsa.misc.cn_mpls_lbl_9`*:: +*`user.group.name`*:: + -- +Name of the group. + type: keyword -- -*`rsa.misc.cn_mplstoplabel`*:: +*`user.hash`*:: + -- +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. + type: keyword -- -*`rsa.misc.cn_mplstoplabip`*:: +*`user.id`*:: + -- +Unique identifier of the user. + type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`rsa.misc.cn_mul_dst_byt`*:: +*`user.name`*:: + -- +Short name or login of the user. + type: keyword +example: a.einstein + -- -*`rsa.misc.cn_mul_dst_pks`*:: +*`user.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_muligmptype`*:: +*`user.roles`*:: + -- +Array of user roles at the time of the event. + type: keyword +example: ["kibana_admin", "reporting_user"] + -- -*`rsa.misc.cn_sampalgo`*:: +*`user.target.domain`*:: + -- +Name of the directory the user is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_sampint`*:: +*`user.target.email`*:: + -- +User email address. + type: keyword -- -*`rsa.misc.cn_seqctr`*:: +*`user.target.full_name`*:: + -- +User's full name, if available. + type: keyword +example: Albert Einstein + -- -*`rsa.misc.cn_spackets`*:: +*`user.target.full_name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_src_tos`*:: +*`user.target.group.domain`*:: + -- +Name of the directory the group is a member of. +For example, an LDAP or Active Directory domain name. + type: keyword -- -*`rsa.misc.cn_src_vlan`*:: +*`user.target.group.id`*:: + -- +Unique identifier for the group on the system/platform. + type: keyword -- -*`rsa.misc.cn_sysuptime`*:: +*`user.target.group.name`*:: + -- +Name of the group. + type: keyword -- -*`rsa.misc.cn_template_id`*:: +*`user.target.hash`*:: + -- +Unique user hash to correlate information for a user in anonymized form. +Useful if `user.id` or `user.name` contain confidential information and cannot be used. + type: keyword -- -*`rsa.misc.cn_totbytsexp`*:: +*`user.target.id`*:: + -- +Unique identifier of the user. + type: keyword +example: S-1-5-21-202424912787-2692429404-2351956786-1000 + -- -*`rsa.misc.cn_totflowexp`*:: +*`user.target.name`*:: + -- +Short name or login of the user. + type: keyword +example: a.einstein + -- -*`rsa.misc.cn_totpcktsexp`*:: +*`user.target.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cn_unixnanosecs`*:: +*`user.target.roles`*:: + -- +Array of user roles at the time of the event. + type: keyword --- +example: ["kibana_admin", "reporting_user"] -*`rsa.misc.cn_v6flowlabel`*:: -+ -- -type: keyword --- +[float] +=== user_agent -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword +The user_agent fields normally come from a browser request. +They often show up in web service logs coming from the parsed user agent string. --- -*`rsa.misc.comp_class`*:: +*`user_agent.device.name`*:: + -- +Name of the device. + type: keyword +example: iPhone + -- -*`rsa.misc.comp_name`*:: +*`user_agent.name`*:: + -- +Name of the user agent. + type: keyword +example: Safari + -- -*`rsa.misc.comp_rbytes`*:: +*`user_agent.original`*:: + -- +Unparsed user_agent string. + type: keyword +example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + -- -*`rsa.misc.comp_sbytes`*:: +*`user_agent.original.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cpu_data`*:: +*`user_agent.os.family`*:: + -- +OS family (such as redhat, debian, freebsd, windows). + type: keyword +example: debian + -- -*`rsa.misc.criticality`*:: +*`user_agent.os.full`*:: + -- +Operating system name, including the version or code name. + type: keyword +example: Mac OS Mojave + -- -*`rsa.misc.cs_agency_dst`*:: +*`user_agent.os.full.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cs_analyzedby`*:: +*`user_agent.os.kernel`*:: + -- +Operating system kernel version as a raw string. + type: keyword +example: 4.4.0-112-generic + -- -*`rsa.misc.cs_av_other`*:: +*`user_agent.os.name`*:: + -- +Operating system name, without the version. + type: keyword +example: Mac OS X + -- -*`rsa.misc.cs_av_primary`*:: +*`user_agent.os.name.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cs_av_secondary`*:: +*`user_agent.os.platform`*:: + -- +Operating system platform (such centos, ubuntu, windows). + type: keyword +example: darwin + -- -*`rsa.misc.cs_bgpv6nxthop`*:: +*`user_agent.os.type`*:: + -- +Use the `os.type` field to categorize the operating system into one of the broad commercial families. +One of these following values should be used (lowercase): linux, macos, unix, windows. +If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. + type: keyword +example: macos + -- -*`rsa.misc.cs_bit9status`*:: +*`user_agent.os.version`*:: + -- +Operating system version as a raw string. + type: keyword +example: 10.14.1 + -- -*`rsa.misc.cs_context`*:: +*`user_agent.version`*:: + -- +Version of the user agent. + type: keyword --- +example: 12.0 -*`rsa.misc.cs_control`*:: -+ -- -type: keyword --- +[float] +=== vlan -*`rsa.misc.cs_data`*:: -+ --- -type: keyword +The VLAN fields are used to identify 802.1q tag(s) of a packet, as well as ingress and egress VLAN associations of an observer in relation to a specific packet or connection. +Network.vlan fields are used to record a single VLAN tag, or the outer tag in the case of q-in-q encapsulations, for a packet or connection as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. +Network.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should only be used in addition to network.vlan fields to indicate q-in-q tagging. +Observer.ingress and observer.egress VLAN values are used to record observer specific information when observer events contain discrete ingress and egress VLAN information, typically provided by firewalls, routers, or load balancers. --- -*`rsa.misc.cs_datecret`*:: +*`vlan.id`*:: + -- +VLAN ID as reported by the observer. + type: keyword +example: 10 + -- -*`rsa.misc.cs_dst_tld`*:: +*`vlan.name`*:: + -- +Optional VLAN name as reported by the observer. + type: keyword +example: outside + -- -*`rsa.misc.cs_eth_dst_ven`*:: +[float] +=== vulnerability + +The vulnerability fields describe information about a vulnerability that is relevant to an event. + + +*`vulnerability.category`*:: + -- +The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories]) +This field must be an array. + type: keyword +example: ["Firewall"] + -- -*`rsa.misc.cs_eth_src_ven`*:: +*`vulnerability.classification`*:: + -- +The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/) + type: keyword +example: CVSS + -- -*`rsa.misc.cs_event_uuid`*:: +*`vulnerability.description`*:: + -- +The description of the vulnerability that provides additional context of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common Vulnerabilities and Exposure CVE description]) + type: keyword +example: In macOS before 2.12.6, there is a vulnerability in the RPC... + -- -*`rsa.misc.cs_filetype`*:: +*`vulnerability.description.text`*:: + -- -type: keyword +type: match_only_text -- -*`rsa.misc.cs_fld`*:: +*`vulnerability.enumeration`*:: + -- +The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/) + type: keyword +example: CVE + -- -*`rsa.misc.cs_if_desc`*:: +*`vulnerability.id`*:: + -- +The identification (ID) is the number portion of a vulnerability entry. It includes a unique identification number for the vulnerability. For example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities and Exposure CVE ID] + type: keyword +example: CVE-2019-00001 + -- -*`rsa.misc.cs_if_name`*:: +*`vulnerability.reference`*:: + -- +A resource that provides additional information, context, and mitigations for the identified vulnerability. + type: keyword +example: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111 + -- -*`rsa.misc.cs_ip_next_hop`*:: +*`vulnerability.report_id`*:: + -- +The report or scan identification number. + type: keyword +example: 20191018.0001 + -- -*`rsa.misc.cs_ipv4dstpre`*:: +*`vulnerability.scanner.vendor`*:: + -- +The name of the vulnerability scanner vendor. + type: keyword +example: Tenable + -- -*`rsa.misc.cs_ipv4srcpre`*:: +*`vulnerability.score.base`*:: + -- -type: keyword +Scores can range from 0.0 to 10.0, with 10.0 being the most severe. +Base scores cover an assessment for exploitability metrics (attack vector, complexity, privileges, and user interaction), impact metrics (confidentiality, integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document) + +type: float + +example: 5.5 -- -*`rsa.misc.cs_lifetime`*:: +*`vulnerability.score.environmental`*:: + -- -type: keyword +Scores can range from 0.0 to 10.0, with 10.0 being the most severe. +Environmental scores cover an assessment for any modified Base metrics, confidentiality, integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document) + +type: float + +example: 5.5 -- -*`rsa.misc.cs_log_medium`*:: +*`vulnerability.score.temporal`*:: + -- -type: keyword +Scores can range from 0.0 to 10.0, with 10.0 being the most severe. +Temporal scores cover an assessment for code maturity, remediation level, and confidence. For example (https://www.first.org/cvss/specification-document) + +type: float -- -*`rsa.misc.cs_loginname`*:: +*`vulnerability.score.version`*:: + -- +The National Vulnerability Database (NVD) provides qualitative severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score ranges in addition to the severity ratings for CVSS v3.0 as they are defined in the CVSS v3.0 specification. +CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit organization, whose mission is to help computer security incident response teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss) + type: keyword +example: 2.0 + -- -*`rsa.misc.cs_modulescore`*:: +*`vulnerability.severity`*:: + -- +The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) + type: keyword +example: Critical + -- -*`rsa.misc.cs_modulesign`*:: +[float] +=== x509 + +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. +When the certificate relates to a file, use the fields at `file.x509`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). +Events that contain certificate information about network connections, should use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`. + + +*`x509.alternative_names`*:: + -- +List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. + type: keyword +example: *.elastic.co + -- -*`rsa.misc.cs_opswatresult`*:: +*`x509.issuer.common_name`*:: + -- +List of common name (CN) of issuing certificate authority. + type: keyword +example: Example SHA2 High Assurance Server CA + -- -*`rsa.misc.cs_payload`*:: +*`x509.issuer.country`*:: + -- +List of country (C) codes + type: keyword +example: US + -- -*`rsa.misc.cs_registrant`*:: +*`x509.issuer.distinguished_name`*:: + -- +Distinguished name (DN) of issuing certificate authority. + type: keyword +example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA + -- -*`rsa.misc.cs_registrar`*:: +*`x509.issuer.locality`*:: + -- +List of locality names (L) + type: keyword +example: Mountain View + -- -*`rsa.misc.cs_represult`*:: +*`x509.issuer.organization`*:: + -- +List of organizations (O) of issuing certificate authority. + type: keyword +example: Example Inc + -- -*`rsa.misc.cs_rpayload`*:: +*`x509.issuer.organizational_unit`*:: + -- +List of organizational units (OU) of issuing certificate authority. + type: keyword +example: www.example.com + -- -*`rsa.misc.cs_sampler_name`*:: +*`x509.issuer.state_or_province`*:: + -- +List of state or province names (ST, S, or P) + type: keyword +example: California + -- -*`rsa.misc.cs_sourcemodule`*:: +*`x509.not_after`*:: + -- -type: keyword +Time at which the certificate is no longer considered valid. + +type: date + +example: 2020-07-16 03:15:39+00:00 -- -*`rsa.misc.cs_streams`*:: +*`x509.not_before`*:: + -- -type: keyword +Time at which the certificate is first considered valid. + +type: date + +example: 2019-08-16 01:40:25+00:00 -- -*`rsa.misc.cs_targetmodule`*:: +*`x509.public_key_algorithm`*:: + -- +Algorithm used to generate the public key. + type: keyword +example: RSA + -- -*`rsa.misc.cs_v6nxthop`*:: +*`x509.public_key_curve`*:: + -- +The curve used by the elliptic curve public key algorithm. This is algorithm specific. + type: keyword +example: nistp521 + -- -*`rsa.misc.cs_whois_server`*:: +*`x509.public_key_exponent`*:: + -- -type: keyword +Exponent used to derive the public key. This is algorithm specific. + +type: long + +example: 65537 + +Field is not indexed. -- -*`rsa.misc.cs_yararesult`*:: +*`x509.public_key_size`*:: + -- -type: keyword +The size of the public key space in bits. + +type: long + +example: 2048 -- -*`rsa.misc.description`*:: +*`x509.serial_number`*:: + -- +Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. + type: keyword +example: 55FBB9C7DEBF09809D12CCAA + -- -*`rsa.misc.devvendor`*:: +*`x509.signature_algorithm`*:: + -- +Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + type: keyword +example: SHA256-RSA + -- -*`rsa.misc.distance`*:: +*`x509.subject.common_name`*:: + -- +List of common names (CN) of subject. + type: keyword +example: shared.global.example.net + -- -*`rsa.misc.dstburb`*:: +*`x509.subject.country`*:: + -- +List of country (C) code + type: keyword +example: US + -- -*`rsa.misc.edomain`*:: +*`x509.subject.distinguished_name`*:: + -- +Distinguished name (DN) of the certificate subject entity. + type: keyword +example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + -- -*`rsa.misc.edomaub`*:: +*`x509.subject.locality`*:: + -- +List of locality names (L) + type: keyword +example: San Francisco + -- -*`rsa.misc.euid`*:: +*`x509.subject.organization`*:: + -- +List of organizations (O) of subject. + type: keyword +example: Example, Inc. + -- -*`rsa.misc.facility`*:: +*`x509.subject.organizational_unit`*:: + -- +List of organizational units (OU) of subject. + type: keyword -- -*`rsa.misc.finterface`*:: +*`x509.subject.state_or_province`*:: + -- +List of state or province names (ST, S, or P) + type: keyword +example: California + -- -*`rsa.misc.flags`*:: +*`x509.version_number`*:: + -- +Version of x509 format. + type: keyword --- +example: 3 -*`rsa.misc.gaddr`*:: -+ -- -type: keyword --- +[[exported-fields-elasticsearch]] +== Elasticsearch fields -*`rsa.misc.id3`*:: -+ --- -type: keyword +elasticsearch Module --- -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword --- +[float] +=== elasticsearch -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword --- -*`rsa.misc.im_croomtype`*:: + +*`elasticsearch.component`*:: + -- +Elasticsearch component from where the log event originated + type: keyword +example: o.e.c.m.MetaDataCreateIndexService + -- -*`rsa.misc.im_members`*:: +*`elasticsearch.cluster.uuid`*:: + -- +UUID of the cluster + type: keyword +example: GmvrbHlNTiSVYiPf8kxg9g + -- -*`rsa.misc.im_username`*:: +*`elasticsearch.cluster.name`*:: + -- +Name of the cluster + type: keyword +example: docker-cluster + -- -*`rsa.misc.ipkt`*:: +*`elasticsearch.node.id`*:: + -- +ID of the node + type: keyword +example: DSiWcTyeThWtUXLB9J0BMw + -- -*`rsa.misc.ipscat`*:: +*`elasticsearch.node.name`*:: + -- +Name of the node + type: keyword +example: vWNJsZ3 + -- -*`rsa.misc.ipspri`*:: +*`elasticsearch.index.name`*:: + -- +Index name + type: keyword +example: filebeat-test-input + -- -*`rsa.misc.latitude`*:: +*`elasticsearch.index.id`*:: + -- +Index id + type: keyword +example: aOGgDwbURfCV57AScqbCgw + -- -*`rsa.misc.linenum`*:: +*`elasticsearch.shard.id`*:: + -- +Id of the shard + type: keyword +example: 0 + -- -*`rsa.misc.list_name`*:: +*`elasticsearch.elastic_product_origin`*:: + -- +Used by Elastic stack to identify which component of the stack sent the request + type: keyword +example: kibana + -- -*`rsa.misc.load_data`*:: +*`elasticsearch.http.request.x_opaque_id`*:: + -- +Used by Elasticsearch to throttle and deduplicate deprecation warnings + type: keyword +example: v7app + -- -*`rsa.misc.location_floor`*:: +*`elasticsearch.event.category`*:: + -- +Category of the deprecation event + type: keyword --- +example: compatible_api -*`rsa.misc.location_mark`*:: -+ -- -type: keyword --- -*`rsa.misc.log_id`*:: +*`elasticsearch.audit.layer`*:: + -- +The layer from which this event originated: rest, transport or ip_filter + type: keyword +example: rest + -- -*`rsa.misc.log_type`*:: +*`elasticsearch.audit.event_type`*:: + -- +The type of event that occurred: anonymous_access_denied, authentication_failed, access_denied, access_granted, connection_granted, connection_denied, tampered_request, run_as_granted, run_as_denied + type: keyword +example: access_granted + -- -*`rsa.misc.logid`*:: +*`elasticsearch.audit.origin.type`*:: + -- +Where the request originated: rest (request originated from a REST API request), transport (request was received on the transport channel), local_node (the local node issued the request) + type: keyword +example: local_node + -- -*`rsa.misc.logip`*:: +*`elasticsearch.audit.realm`*:: + -- +The authentication realm the authentication was validated against + type: keyword -- -*`rsa.misc.logname`*:: +*`elasticsearch.audit.user.realm`*:: + -- +The user's authentication realm, if authenticated + type: keyword -- -*`rsa.misc.longitude`*:: +*`elasticsearch.audit.user.roles`*:: + -- +Roles to which the principal belongs + type: keyword +example: ['kibana_admin', 'beats_admin'] + -- -*`rsa.misc.lport`*:: +*`elasticsearch.audit.user.run_as.name`*:: + -- type: keyword -- -*`rsa.misc.mbug_data`*:: +*`elasticsearch.audit.user.run_as.realm`*:: + -- type: keyword -- -*`rsa.misc.misc_name`*:: +*`elasticsearch.audit.component`*:: + -- type: keyword -- -*`rsa.misc.msg_type`*:: +*`elasticsearch.audit.action`*:: + -- +The name of the action that was executed + type: keyword +example: cluster:monitor/main + -- -*`rsa.misc.msgid`*:: +*`elasticsearch.audit.url.params`*:: + -- -type: keyword +REST URI parameters + +example: {username=jacknich2} -- -*`rsa.misc.netsessid`*:: +*`elasticsearch.audit.indices`*:: + -- +Indices accessed by action + type: keyword +example: ['foo-2019.01.04', 'foo-2019.01.03', 'foo-2019.01.06'] + -- -*`rsa.misc.num`*:: +*`elasticsearch.audit.request.id`*:: + -- +Unique ID of request + type: keyword +example: WzL_kb6VSvOhAq0twPvHOQ + -- -*`rsa.misc.number1`*:: +*`elasticsearch.audit.request.name`*:: + -- +The type of request that was executed + type: keyword +example: ClearScrollRequest + -- -*`rsa.misc.number2`*:: +*`elasticsearch.audit.request_body`*:: + -- -type: keyword +type: alias + +alias to: http.request.body.content -- -*`rsa.misc.nwwn`*:: +*`elasticsearch.audit.origin_address`*:: + -- -type: keyword +type: alias + +alias to: source.ip -- -*`rsa.misc.object`*:: +*`elasticsearch.audit.uri`*:: + -- -type: keyword +type: alias + +alias to: url.original -- -*`rsa.misc.operation`*:: +*`elasticsearch.audit.principal`*:: + -- -type: keyword +type: alias + +alias to: user.name -- -*`rsa.misc.opkt`*:: +*`elasticsearch.audit.message`*:: + -- -type: keyword +type: text -- -*`rsa.misc.orig_from`*:: +*`elasticsearch.audit.invalidate.apikeys.owned_by_authenticated_user`*:: + -- -type: keyword +type: boolean -- -*`rsa.misc.owner_id`*:: +*`elasticsearch.audit.authentication.type`*:: + -- type: keyword -- -*`rsa.misc.p_action`*:: +*`elasticsearch.audit.opaque_id`*:: + -- -type: keyword +type: text -- -*`rsa.misc.p_filter`*:: -+ --- -type: keyword +[float] +=== deprecation --- -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword --- +[float] +=== gc -*`rsa.misc.p_id`*:: -+ --- -type: keyword +GC fileset fields. --- -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword --- +[float] +=== phase + +Fields specific to GC phase. -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword --- -*`rsa.misc.p_result1`*:: +*`elasticsearch.gc.phase.name`*:: + -- -type: keyword +Name of the GC collection phase. --- -*`rsa.misc.password_chg`*:: -+ --- type: keyword -- -*`rsa.misc.password_expire`*:: +*`elasticsearch.gc.phase.duration_sec`*:: + -- -type: keyword +Collection phase duration according to the Java virtual machine. --- -*`rsa.misc.permgranted`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.permwanted`*:: +*`elasticsearch.gc.phase.scrub_symbol_table_time_sec`*:: + -- -type: keyword +Pause time in seconds cleaning up symbol tables. --- -*`rsa.misc.pgid`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.policyUUID`*:: +*`elasticsearch.gc.phase.scrub_string_table_time_sec`*:: + -- -type: keyword +Pause time in seconds cleaning up string tables. --- -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.program`*:: +*`elasticsearch.gc.phase.weak_refs_processing_time_sec`*:: + -- -type: keyword +Time spent processing weak references in seconds. --- -*`rsa.misc.real_data`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.rec_asp_device`*:: +*`elasticsearch.gc.phase.parallel_rescan_time_sec`*:: + -- -type: keyword +Time spent in seconds marking live objects while application is stopped. --- -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.rec_library`*:: +*`elasticsearch.gc.phase.class_unload_time_sec`*:: + -- -type: keyword +Time spent unloading unused classes in seconds. --- -*`rsa.misc.recordnum`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.ruid`*:: -+ --- -type: keyword +[float] +=== cpu_time --- +Process CPU time spent performing collections. -*`rsa.misc.sburb`*:: -+ --- -type: keyword --- -*`rsa.misc.sdomain_fld`*:: +*`elasticsearch.gc.phase.cpu_time.user_sec`*:: + -- -type: keyword +CPU time spent outside the kernel. --- -*`rsa.misc.sec`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.sensorname`*:: +*`elasticsearch.gc.phase.cpu_time.sys_sec`*:: + -- -type: keyword +CPU time spent inside the kernel. --- -*`rsa.misc.seqnum`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.session`*:: +*`elasticsearch.gc.phase.cpu_time.real_sec`*:: + -- -type: keyword +Total elapsed CPU time spent to complete the collection from start to finish. --- -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.sigUUID`*:: +*`elasticsearch.gc.jvm_runtime_sec`*:: + -- -type: keyword +The time from JVM start up in seconds, as a floating point number. --- -*`rsa.misc.spi`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.srcburb`*:: +*`elasticsearch.gc.threads_total_stop_time_sec`*:: + -- -type: keyword +Garbage collection threads total stop time seconds. --- -*`rsa.misc.srcdom`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.srcservice`*:: +*`elasticsearch.gc.stopping_threads_time_sec`*:: + -- -type: keyword +Time took to stop threads seconds. --- -*`rsa.misc.state`*:: -+ --- -type: keyword +type: float -- -*`rsa.misc.status1`*:: +*`elasticsearch.gc.tags`*:: + -- -type: keyword +GC logging tags. --- -*`rsa.misc.svcno`*:: -+ --- type: keyword -- -*`rsa.misc.system`*:: -+ --- -type: keyword +[float] +=== heap --- +Heap allocation and total size. -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword --- -*`rsa.misc.tgtdom`*:: +*`elasticsearch.gc.heap.size_kb`*:: + -- -type: keyword +Total heap size in kilobytes. --- -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.threshold`*:: +*`elasticsearch.gc.heap.used_kb`*:: + -- -type: keyword +Used heap in kilobytes. --- -*`rsa.misc.type1`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.udb_class`*:: -+ --- -type: keyword +[float] +=== old_gen --- +Old generation occupancy and total size. -*`rsa.misc.url_fld`*:: -+ --- -type: keyword --- -*`rsa.misc.user_div`*:: +*`elasticsearch.gc.old_gen.size_kb`*:: + -- -type: keyword +Total size of old generation in kilobytes. --- -*`rsa.misc.userid`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.username_fld`*:: +*`elasticsearch.gc.old_gen.used_kb`*:: + -- -type: keyword +Old generation occupancy in kilobytes. --- -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.v_instafname`*:: +[float] +=== young_gen + +Young generation occupancy and total size. + + + +*`elasticsearch.gc.young_gen.size_kb`*:: + -- -type: keyword +Total size of young generation in kilobytes. + + +type: integer -- -*`rsa.misc.virt_data`*:: +*`elasticsearch.gc.young_gen.used_kb`*:: + -- -type: keyword +Young generation occupancy in kilobytes. + + +type: integer -- -*`rsa.misc.vpnid`*:: +[float] +=== server + +Server log file + + +*`elasticsearch.server.stacktrace`*:: + -- -type: keyword +Field is not indexed. -- -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type +[float] +=== gc -type: keyword +GC log + + +[float] +=== young + +Young GC --- -*`rsa.misc.cc_number`*:: +*`elasticsearch.server.gc.young.one`*:: + -- -Valid Credit Card Numbers only + type: long +example: + -- -*`rsa.misc.content`*:: +*`elasticsearch.server.gc.young.two`*:: + -- -This key captures the content type from protocol headers -type: keyword + +type: long + +example: -- -*`rsa.misc.ein_number`*:: +*`elasticsearch.server.gc.overhead_seq`*:: + -- -Employee Identification Numbers only +Sequence number type: long +example: 3449992 + -- -*`rsa.misc.found`*:: +*`elasticsearch.server.gc.collection_duration.ms`*:: + -- -This is used to capture the results of regex match +Time spent in GC, in milliseconds -type: keyword +type: float + +example: 1600 -- -*`rsa.misc.language`*:: +*`elasticsearch.server.gc.observation_duration.ms`*:: + -- -This is used to capture list of languages the client support and what it prefers +Total time over which collection was observed, in milliseconds -type: keyword +type: float --- +example: 1800 -*`rsa.misc.lifetime`*:: -+ -- -This key is used to capture the session lifetime in seconds. -type: long +[float] +=== slowlog --- +Slowlog events from Elasticsearch -*`rsa.misc.link`*:: + +*`elasticsearch.slowlog.logger`*:: + -- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Logger name type: keyword +example: index.search.slowlog.fetch + -- -*`rsa.misc.match`*:: +*`elasticsearch.slowlog.took`*:: + -- -This key is for regex match name from search.ini +Time it took to execute the query type: keyword +example: 300ms + -- -*`rsa.misc.param_dst`*:: +*`elasticsearch.slowlog.types`*:: + -- -This key captures the command line/launch argument of the target process or file +Types type: keyword +example: + -- -*`rsa.misc.param_src`*:: +*`elasticsearch.slowlog.stats`*:: + -- -This key captures source parameter +Stats groups type: keyword +example: group1 + -- -*`rsa.misc.search_text`*:: +*`elasticsearch.slowlog.search_type`*:: + -- -This key captures the Search Text used +Search type type: keyword +example: QUERY_THEN_FETCH + -- -*`rsa.misc.sig_name`*:: +*`elasticsearch.slowlog.source_query`*:: + -- -This key is used to capture the Signature Name only. +Slow query type: keyword +example: {"query":{"match_all":{"boost":1.0}}} + -- -*`rsa.misc.snmp_value`*:: +*`elasticsearch.slowlog.extra_source`*:: + -- -SNMP set request value +Extra source information type: keyword +example: + -- -*`rsa.misc.streams`*:: +*`elasticsearch.slowlog.total_hits`*:: + -- -This key captures number of streams in session +Total hits -type: long +type: keyword --- +example: 42 +-- -*`rsa.db.index`*:: +*`elasticsearch.slowlog.total_shards`*:: + -- -This key captures IndexID of the index. +Total queried shards type: keyword +example: 22 + -- -*`rsa.db.instance`*:: +*`elasticsearch.slowlog.routing`*:: + -- -This key is used to capture the database server instance name +Routing type: keyword +example: s01HZ2QBk9jw4gtgaFtn + -- -*`rsa.db.database`*:: +*`elasticsearch.slowlog.id`*:: + -- -This key is used to capture the name of a database or an instance as seen in a session +Id type: keyword +example: + -- -*`rsa.db.transact_id`*:: +*`elasticsearch.slowlog.type`*:: + -- -This key captures the SQL transantion ID of the current session +Type type: keyword +example: doc + -- -*`rsa.db.permissions`*:: +*`elasticsearch.slowlog.source`*:: + -- -This key captures permission or privilege level assigned to a resource. +Source of document that was indexed type: keyword -- -*`rsa.db.table_name`*:: +*`elasticsearch.slowlog.user.realm`*:: + -- -This key is used to capture the table name +The authentication realm the user was authenticated against type: keyword +example: default_file + -- -*`rsa.db.db_id`*:: +*`elasticsearch.slowlog.user.effective.realm`*:: + -- -This key is used to capture the unique identifier for a database +The authentication realm the effective user was authenticated against type: keyword +example: default_file + -- -*`rsa.db.db_pid`*:: +*`elasticsearch.slowlog.auth.type`*:: + -- -This key captures the process id of a connection with database server +The authentication type used to authenticate the user. One of TOKEN | REALM | API_KEY -type: long +type: keyword + +example: REALM -- -*`rsa.db.lread`*:: +*`elasticsearch.slowlog.apikey.id`*:: + -- -This key is used for the number of logical reads +The id of the API key used -type: long +type: keyword + +example: WzL_kb6VSvOhAq0twPvHOQ -- -*`rsa.db.lwrite`*:: +*`elasticsearch.slowlog.apikey.name`*:: + -- -This key is used for the number of logical writes +The name of the API key used -type: long +type: keyword --- +example: my-api-key -*`rsa.db.pread`*:: -+ -- -This key is used for the number of physical writes -type: long +[[exported-fields-envoyproxy]] +== Envoyproxy fields --- +Module for handling logs produced by envoy -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. -type: keyword +[float] +=== envoyproxy --- +Fields from envoy proxy logs after normalization -*`rsa.network.domain`*:: -+ --- -type: keyword --- -*`rsa.network.host_dst`*:: +*`envoyproxy.log_type`*:: + -- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- +Envoy log type, normally ACCESS -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names type: keyword -- -*`rsa.network.interface`*:: +*`envoyproxy.response_flags`*:: + -- -This key should be used when the source or destination context of an interface is not clear +Response flags + type: keyword -- -*`rsa.network.network_port`*:: +*`envoyproxy.upstream_service_time`*:: + -- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) +Upstream service time in nanoseconds + type: long +format: duration + -- -*`rsa.network.eth_host`*:: +*`envoyproxy.request_id`*:: + -- -Deprecated, use alias.mac +ID of the request + type: keyword -- -*`rsa.network.sinterface`*:: +*`envoyproxy.authority`*:: + -- -This key should only be used when it’s a Source Interface +Envoy proxy authority field + type: keyword -- -*`rsa.network.dinterface`*:: +*`envoyproxy.proxy_type`*:: + -- -This key should only be used when it’s a Destination Interface +Envoy proxy type, tcp or http + type: keyword -- -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN +[[exported-fields-fortinet]] +== Fortinet fields -type: long +fortinet Module --- -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. -type: keyword +[float] +=== fortinet + +Fields from fortinet FortiOS + --- -*`rsa.network.zone`*:: +*`fortinet.file.hash.crc32`*:: + -- -This key should be used when the source or destination context of a Zone is not clear +CRC32 Hash of file + type: keyword -- -*`rsa.network.zone_dst`*:: +[float] +=== firewall + +Module for parsing Fortinet syslog. + + + +*`fortinet.firewall.acct_stat`*:: + -- -This key should only be used when it’s a Destination Zone. +Accounting state (RADIUS) + type: keyword -- -*`rsa.network.gateway`*:: +*`fortinet.firewall.acktime`*:: + -- -This key is used to capture the IP Address of the gateway +Alarm Acknowledge Time + type: keyword -- -*`rsa.network.icmp_type`*:: +*`fortinet.firewall.act`*:: + -- -This key is used to capture the ICMP type only +Action -type: long + +type: keyword -- -*`rsa.network.mask`*:: +*`fortinet.firewall.action`*:: + -- -This key is used to capture the device network IPmask. +Status of the session + type: keyword -- -*`rsa.network.icmp_code`*:: +*`fortinet.firewall.activity`*:: + -- -This key is used to capture the ICMP code only +HA activity message -type: long + +type: keyword -- -*`rsa.network.protocol_detail`*:: +*`fortinet.firewall.addr`*:: + -- -This key should be used to capture additional protocol information +IP Address -type: keyword + +type: ip -- -*`rsa.network.dmask`*:: +*`fortinet.firewall.addr_type`*:: + -- -This key is used for Destionation Device network mask +Address Type + type: keyword -- -*`rsa.network.port`*:: +*`fortinet.firewall.addrgrp`*:: + -- -This key should only be used to capture a Network Port when the directionality is not clear +Address Group -type: long + +type: keyword -- -*`rsa.network.smask`*:: +*`fortinet.firewall.adgroup`*:: + -- -This key is used for capturing source Network Mask +AD Group Name + type: keyword -- -*`rsa.network.netname`*:: +*`fortinet.firewall.admin`*:: + -- -This key is used to capture the network name associated with an IP range. This is configured by the end user. +Admin User + type: keyword -- -*`rsa.network.paddr`*:: +*`fortinet.firewall.age`*:: + -- -Deprecated +Time in seconds - time passed since last seen -type: ip + +type: integer -- -*`rsa.network.faddr`*:: +*`fortinet.firewall.agent`*:: + -- -type: keyword +User agent - eg. agent="Mozilla/5.0" --- -*`rsa.network.lhost`*:: -+ --- type: keyword -- -*`rsa.network.origin`*:: +*`fortinet.firewall.alarmid`*:: + -- -type: keyword +Alarm ID --- -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword +type: integer -- -*`rsa.network.addr`*:: +*`fortinet.firewall.alert`*:: + -- -type: keyword +Alert --- -*`rsa.network.dns_a_record`*:: -+ --- type: keyword -- -*`rsa.network.dns_ptr_record`*:: +*`fortinet.firewall.analyticscksum`*:: + -- -type: keyword +The checksum of the file submitted for analytics --- -*`rsa.network.fhost`*:: -+ --- type: keyword -- -*`rsa.network.fport`*:: +*`fortinet.firewall.analyticssubmit`*:: + -- -type: keyword +The flag for analytics submission --- -*`rsa.network.laddr`*:: -+ --- type: keyword -- -*`rsa.network.linterface`*:: +*`fortinet.firewall.ap`*:: + -- -type: keyword +Access Point --- -*`rsa.network.phost`*:: -+ --- type: keyword -- -*`rsa.network.ad_computer_dst`*:: +*`fortinet.firewall.app-type`*:: + -- -Deprecated, use host.dst +Address Type + type: keyword -- -*`rsa.network.eth_type`*:: +*`fortinet.firewall.appact`*:: + -- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only +The security action from app control -type: long + +type: keyword -- -*`rsa.network.ip_proto`*:: +*`fortinet.firewall.appid`*:: + -- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI +Application ID -type: long + +type: integer -- -*`rsa.network.dns_cname_record`*:: +*`fortinet.firewall.applist`*:: + -- -type: keyword +Application Control profile --- -*`rsa.network.dns_id`*:: -+ --- type: keyword -- -*`rsa.network.dns_opcode`*:: +*`fortinet.firewall.apprisk`*:: + -- -type: keyword +Application Risk Level --- -*`rsa.network.dns_resp`*:: -+ --- type: keyword -- -*`rsa.network.dns_type`*:: +*`fortinet.firewall.apscan`*:: + -- +The name of the AP, which scanned and detected the rogue AP + + type: keyword -- -*`rsa.network.domain1`*:: +*`fortinet.firewall.apsn`*:: + -- +Access Point + + type: keyword -- -*`rsa.network.host_type`*:: +*`fortinet.firewall.apstatus`*:: + -- +Access Point status + + type: keyword -- -*`rsa.network.packet_length`*:: +*`fortinet.firewall.aptype`*:: + -- +Access Point type + + type: keyword -- -*`rsa.network.host_orig`*:: +*`fortinet.firewall.assigned`*:: + -- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. +Assigned IP Address -type: keyword + +type: ip -- -*`rsa.network.rpayload`*:: +*`fortinet.firewall.assignip`*:: + -- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. +Assigned IP Address -type: keyword + +type: ip -- -*`rsa.network.vlan_name`*:: +*`fortinet.firewall.attachment`*:: + -- -This key should only be used to capture the name of the Virtual LAN +The flag for email attachement + type: keyword -- - -*`rsa.investigations.ec_activity`*:: +*`fortinet.firewall.attack`*:: + -- -This key captures the particular event activity(Ex:Logoff) +Attack Name + type: keyword -- -*`rsa.investigations.ec_theme`*:: +*`fortinet.firewall.attackcontext`*:: + -- -This key captures the Theme of a particular Event(Ex:Authentication) +The trigger patterns and the packetdata with base64 encoding + type: keyword -- -*`rsa.investigations.ec_subject`*:: +*`fortinet.firewall.attackcontextid`*:: + -- -This key captures the Subject of a particular Event(Ex:User) +Attack context id / total + type: keyword -- -*`rsa.investigations.ec_outcome`*:: +*`fortinet.firewall.attackid`*:: + -- -This key captures the outcome of a particular Event(Ex:Success) +Attack ID -type: keyword + +type: integer -- -*`rsa.investigations.event_cat`*:: +*`fortinet.firewall.auditid`*:: + -- -This key captures the Event category number +Audit ID + type: long -- -*`rsa.investigations.event_cat_name`*:: +*`fortinet.firewall.auditscore`*:: + -- -This key captures the event category name corresponding to the event cat code +The Audit Score + type: keyword -- -*`rsa.investigations.event_vcat`*:: +*`fortinet.firewall.audittime`*:: + -- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. +The time of the audit -type: keyword + +type: long -- -*`rsa.investigations.analysis_file`*:: +*`fortinet.firewall.authgrp`*:: + -- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file +Authorization Group + type: keyword -- -*`rsa.investigations.analysis_service`*:: +*`fortinet.firewall.authid`*:: + -- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service +Authentication ID + type: keyword -- -*`rsa.investigations.analysis_session`*:: +*`fortinet.firewall.authproto`*:: + -- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session +The protocol that initiated the authentication + type: keyword -- -*`rsa.investigations.boc`*:: +*`fortinet.firewall.authserver`*:: + -- -This is used to capture behaviour of compromise +Authentication server + type: keyword -- -*`rsa.investigations.eoc`*:: +*`fortinet.firewall.bandwidth`*:: + -- -This is used to capture Enablers of Compromise +Bandwidth + type: keyword -- -*`rsa.investigations.inv_category`*:: +*`fortinet.firewall.banned_rule`*:: + -- -This used to capture investigation category +NAC quarantine Banned Rule Name + type: keyword -- -*`rsa.investigations.inv_context`*:: +*`fortinet.firewall.banned_src`*:: + -- -This used to capture investigation context +NAC quarantine Banned Source IP + type: keyword -- -*`rsa.investigations.ioc`*:: +*`fortinet.firewall.banword`*:: + -- -This is key capture indicator of compromise +Banned word + type: keyword -- - -*`rsa.counters.dclass_c1`*:: +*`fortinet.firewall.botnetdomain`*:: + -- -This is a generic counter key that should be used with the label dclass.c1.str only +Botnet Domain Name -type: long + +type: keyword -- -*`rsa.counters.dclass_c2`*:: +*`fortinet.firewall.botnetip`*:: + -- -This is a generic counter key that should be used with the label dclass.c2.str only +Botnet IP Address -type: long + +type: ip -- -*`rsa.counters.event_counter`*:: +*`fortinet.firewall.bssid`*:: + -- -This is used to capture the number of times an event repeated +Service Set ID -type: long + +type: keyword -- -*`rsa.counters.dclass_r1`*:: +*`fortinet.firewall.call_id`*:: + -- -This is a generic ratio key that should be used with the label dclass.r1.str only +Caller ID + type: keyword -- -*`rsa.counters.dclass_c3`*:: +*`fortinet.firewall.carrier_ep`*:: + -- -This is a generic counter key that should be used with the label dclass.c3.str only +The FortiOS Carrier end-point identification -type: long + +type: keyword -- -*`rsa.counters.dclass_c1_str`*:: +*`fortinet.firewall.cat`*:: + -- -This is a generic counter string key that should be used with the label dclass.c1 only +DNS category ID -type: keyword + +type: integer -- -*`rsa.counters.dclass_c2_str`*:: +*`fortinet.firewall.category`*:: + -- -This is a generic counter string key that should be used with the label dclass.c2 only +Authentication category + type: keyword -- -*`rsa.counters.dclass_r1_str`*:: +*`fortinet.firewall.cc`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r1 only +CC Email Address + type: keyword -- -*`rsa.counters.dclass_r2`*:: +*`fortinet.firewall.cdrcontent`*:: + -- -This is a generic ratio key that should be used with the label dclass.r2.str only +Cdrcontent + type: keyword -- -*`rsa.counters.dclass_c3_str`*:: +*`fortinet.firewall.centralnatid`*:: + -- -This is a generic counter string key that should be used with the label dclass.c3 only +Central NAT ID -type: keyword + +type: integer -- -*`rsa.counters.dclass_r3`*:: +*`fortinet.firewall.cert`*:: + -- -This is a generic ratio key that should be used with the label dclass.r3.str only +Certificate + type: keyword -- -*`rsa.counters.dclass_r2_str`*:: +*`fortinet.firewall.cert-type`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r2 only +Certificate type + type: keyword -- -*`rsa.counters.dclass_r3_str`*:: +*`fortinet.firewall.certhash`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r3 only +Certificate hash + type: keyword -- - -*`rsa.identity.auth_method`*:: +*`fortinet.firewall.cfgattr`*:: + -- -This key is used to capture authentication methods used only +Configuration attribute + type: keyword -- -*`rsa.identity.user_role`*:: +*`fortinet.firewall.cfgobj`*:: + -- -This key is used to capture the Role of a user only +Configuration object + type: keyword -- -*`rsa.identity.dn`*:: +*`fortinet.firewall.cfgpath`*:: + -- -X.500 (LDAP) Distinguished Name +Configuration path + type: keyword -- -*`rsa.identity.logon_type`*:: +*`fortinet.firewall.cfgtid`*:: + -- -This key is used to capture the type of logon method used. +Configuration transaction ID + type: keyword -- -*`rsa.identity.profile`*:: +*`fortinet.firewall.cfgtxpower`*:: + -- -This key is used to capture the user profile +Configuration TX power -type: keyword + +type: integer -- -*`rsa.identity.accesses`*:: +*`fortinet.firewall.channel`*:: + -- -This key is used to capture actual privileges used in accessing an object +Wireless Channel -type: keyword + +type: integer -- -*`rsa.identity.realm`*:: +*`fortinet.firewall.channeltype`*:: + -- -Radius realm or similar grouping of accounts +SSH channel type + type: keyword -- -*`rsa.identity.user_sid_dst`*:: +*`fortinet.firewall.chassisid`*:: + -- -This key captures Destination User Session ID +Chassis ID -type: keyword + +type: integer -- -*`rsa.identity.dn_src`*:: +*`fortinet.firewall.checksum`*:: + -- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn +The checksum of the scanned file + type: keyword -- -*`rsa.identity.org`*:: +*`fortinet.firewall.chgheaders`*:: + -- -This key captures the User organization +HTTP Headers + type: keyword -- -*`rsa.identity.dn_dst`*:: +*`fortinet.firewall.cldobjid`*:: + -- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn +Connector object ID + type: keyword -- -*`rsa.identity.firstname`*:: +*`fortinet.firewall.client_addr`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +Wifi client address + type: keyword -- -*`rsa.identity.lastname`*:: +*`fortinet.firewall.cloudaction`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +Cloud Action + type: keyword -- -*`rsa.identity.user_dept`*:: +*`fortinet.firewall.clouduser`*:: + -- -User's Department Names only +Cloud User + type: keyword -- -*`rsa.identity.user_sid_src`*:: +*`fortinet.firewall.column`*:: + -- -This key captures Source User Session ID +VOIP Column -type: keyword + +type: integer -- -*`rsa.identity.federated_sp`*:: +*`fortinet.firewall.command`*:: + -- -This key is the Federated Service Provider. This is the application requesting authentication. +CLI Command + type: keyword -- -*`rsa.identity.federated_idp`*:: +*`fortinet.firewall.community`*:: + -- -This key is the federated Identity Provider. This is the server providing the authentication. +SNMP Community + type: keyword -- -*`rsa.identity.logon_type_desc`*:: +*`fortinet.firewall.configcountry`*:: + -- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. +Configuration country + type: keyword -- -*`rsa.identity.middlename`*:: +*`fortinet.firewall.connection_type`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +FortiClient Connection Type + type: keyword -- -*`rsa.identity.password`*:: +*`fortinet.firewall.conserve`*:: + -- -This key is for Passwords seen in any session, plain text or encrypted +Flag for conserve mode + type: keyword -- -*`rsa.identity.host_role`*:: +*`fortinet.firewall.constraint`*:: + -- -This key should only be used to capture the role of a Host Machine +WAF http protocol restrictions + type: keyword -- -*`rsa.identity.ldap`*:: +*`fortinet.firewall.contentdisarmed`*:: + -- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context +Email scanned content + type: keyword -- -*`rsa.identity.ldap_query`*:: +*`fortinet.firewall.contenttype`*:: + -- -This key is the Search criteria from an LDAP search +Content Type from HTTP header + type: keyword -- -*`rsa.identity.ldap_response`*:: +*`fortinet.firewall.cookies`*:: + -- -This key is to capture Results from an LDAP search +VPN Cookie + type: keyword -- -*`rsa.identity.owner`*:: +*`fortinet.firewall.count`*:: + -- -This is used to capture username the process or service is running as, the author of the task +Counts of action type -type: keyword + +type: integer -- -*`rsa.identity.service_account`*:: +*`fortinet.firewall.countapp`*:: + -- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage +Number of App Ctrl logs associated with the session -type: keyword --- +type: integer +-- -*`rsa.email.email_dst`*:: +*`fortinet.firewall.countav`*:: + -- -This key is used to capture the Destination email address only, when the destination context is not clear use email +Number of AV logs associated with the session -type: keyword + +type: integer -- -*`rsa.email.email_src`*:: +*`fortinet.firewall.countcifs`*:: + -- -This key is used to capture the source email address only, when the source context is not clear use email +Number of CIFS logs associated with the session -type: keyword + +type: integer -- -*`rsa.email.subject`*:: +*`fortinet.firewall.countdlp`*:: + -- -This key is used to capture the subject string from an Email only. +Number of DLP logs associated with the session -type: keyword + +type: integer -- -*`rsa.email.email`*:: +*`fortinet.firewall.countdns`*:: + -- -This key is used to capture a generic email address where the source or destination context is not clear +Number of DNS logs associated with the session -type: keyword + +type: integer -- -*`rsa.email.trans_from`*:: +*`fortinet.firewall.countemail`*:: + -- -Deprecated key defined only in table map. +Number of email logs associated with the session -type: keyword + +type: integer -- -*`rsa.email.trans_to`*:: +*`fortinet.firewall.countff`*:: + -- -Deprecated key defined only in table map. +Number of ff logs associated with the session -type: keyword --- +type: integer +-- -*`rsa.file.privilege`*:: +*`fortinet.firewall.countips`*:: + -- -Deprecated, use permissions +Number of IPS logs associated with the session -type: keyword + +type: integer -- -*`rsa.file.attachment`*:: +*`fortinet.firewall.countssh`*:: + -- -This key captures the attachment file name +Number of SSH logs associated with the session -type: keyword + +type: integer -- -*`rsa.file.filesystem`*:: +*`fortinet.firewall.countssl`*:: + -- -type: keyword +Number of SSL logs associated with the session + + +type: integer -- -*`rsa.file.binary`*:: +*`fortinet.firewall.countwaf`*:: + -- -Deprecated key defined only in table map. +Number of WAF logs associated with the session -type: keyword + +type: integer -- -*`rsa.file.filename_dst`*:: +*`fortinet.firewall.countweb`*:: + -- -This is used to capture name of the file targeted by the action +Number of Web filter logs associated with the session -type: keyword + +type: integer -- -*`rsa.file.filename_src`*:: +*`fortinet.firewall.cpu`*:: + -- -This is used to capture name of the parent filename, the file which performed the action +CPU Usage -type: keyword + +type: integer -- -*`rsa.file.filename_tmp`*:: +*`fortinet.firewall.craction`*:: + -- -type: keyword +Client Reputation Action + + +type: integer -- -*`rsa.file.directory_dst`*:: +*`fortinet.firewall.criticalcount`*:: + -- -This key is used to capture the directory of the target process or file +Number of critical ratings -type: keyword + +type: integer -- -*`rsa.file.directory_src`*:: +*`fortinet.firewall.crl`*:: + -- -This key is used to capture the directory of the source process or file +Client Reputation Level + type: keyword -- -*`rsa.file.file_entropy`*:: +*`fortinet.firewall.crlevel`*:: + -- -This is used to capture entropy vale of a file +Client Reputation Level -type: double + +type: keyword -- -*`rsa.file.file_vendor`*:: +*`fortinet.firewall.crscore`*:: + -- -This is used to capture Company name of file located in version_info +Some description -type: keyword + +type: integer -- -*`rsa.file.task_name`*:: +*`fortinet.firewall.cveid`*:: + -- -This is used to capture name of the task +CVE ID + type: keyword -- - -*`rsa.web.fqdn`*:: +*`fortinet.firewall.daemon`*:: + -- -Fully Qualified Domain Names +Daemon name + type: keyword -- -*`rsa.web.web_cookie`*:: +*`fortinet.firewall.datarange`*:: + -- -This key is used to capture the Web cookies specifically. +Data range for reports + type: keyword -- -*`rsa.web.alias_host`*:: +*`fortinet.firewall.date`*:: + -- +Date + + type: keyword -- -*`rsa.web.reputation_num`*:: +*`fortinet.firewall.ddnsserver`*:: + -- -Reputation Number of an entity. Typically used for Web Domains +DDNS server -type: double + +type: ip -- -*`rsa.web.web_ref_domain`*:: +*`fortinet.firewall.desc`*:: + -- -Web referer's domain +Description + type: keyword -- -*`rsa.web.web_ref_query`*:: +*`fortinet.firewall.detectionmethod`*:: + -- -This key captures Web referer's query portion of the URL - -type: keyword +Detection method --- -*`rsa.web.remote_domain`*:: -+ --- type: keyword -- -*`rsa.web.web_ref_page`*:: +*`fortinet.firewall.devcategory`*:: + -- -This key captures Web referer's page information +Device category + type: keyword -- -*`rsa.web.web_ref_root`*:: +*`fortinet.firewall.devintfname`*:: + -- -Web referer's root URL path +HA device Interface Name + type: keyword -- -*`rsa.web.cn_asn_dst`*:: +*`fortinet.firewall.devtype`*:: + -- -type: keyword +Device type --- -*`rsa.web.cn_rpackets`*:: -+ --- type: keyword -- -*`rsa.web.urlpage`*:: +*`fortinet.firewall.dhcp_msg`*:: + -- -type: keyword +DHCP Message --- -*`rsa.web.urlroot`*:: -+ --- type: keyword -- -*`rsa.web.p_url`*:: +*`fortinet.firewall.dintf`*:: + -- -type: keyword +Destination interface --- -*`rsa.web.p_user_agent`*:: -+ --- type: keyword -- -*`rsa.web.p_web_cookie`*:: +*`fortinet.firewall.disk`*:: + -- -type: keyword +Assosciated disk --- -*`rsa.web.p_web_method`*:: -+ --- type: keyword -- -*`rsa.web.p_web_referer`*:: +*`fortinet.firewall.disklograte`*:: + -- -type: keyword +Disk logging rate --- -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword +type: long -- -*`rsa.web.web_page`*:: +*`fortinet.firewall.dlpextra`*:: + -- +DLP extra information + + type: keyword -- - -*`rsa.threat.threat_category`*:: +*`fortinet.firewall.docsource`*:: + -- -This key captures Threat Name/Threat Category/Categorization of alert +DLP fingerprint document source + type: keyword -- -*`rsa.threat.threat_desc`*:: +*`fortinet.firewall.domainctrlauthstate`*:: + -- -This key is used to capture the threat description from the session directly or inferred +CIFS domain auth state -type: keyword + +type: integer -- -*`rsa.threat.alert`*:: +*`fortinet.firewall.domainctrlauthtype`*:: + -- -This key is used to capture name of the alert +CIFS domain auth type -type: keyword + +type: integer -- -*`rsa.threat.threat_source`*:: +*`fortinet.firewall.domainctrldomain`*:: + -- -This key is used to capture source of the threat +CIFS domain auth domain + type: keyword -- - -*`rsa.crypto.crypto`*:: +*`fortinet.firewall.domainctrlip`*:: + -- -This key is used to capture the Encryption Type or Encryption Key only +CIFS Domain IP -type: keyword + +type: ip -- -*`rsa.crypto.cipher_src`*:: +*`fortinet.firewall.domainctrlname`*:: + -- -This key is for Source (Client) Cipher +CIFS Domain name + type: keyword -- -*`rsa.crypto.cert_subject`*:: +*`fortinet.firewall.domainctrlprotocoltype`*:: + -- -This key is used to capture the Certificate organization only +CIFS Domain connection protocol -type: keyword + +type: integer -- -*`rsa.crypto.peer`*:: +*`fortinet.firewall.domainctrlusername`*:: + -- -This key is for Encryption peer's IP Address +CIFS Domain username + type: keyword -- -*`rsa.crypto.cipher_size_src`*:: +*`fortinet.firewall.domainfilteridx`*:: + -- -This key captures Source (Client) Cipher Size +Domain filter ID -type: long + +type: integer -- -*`rsa.crypto.ike`*:: +*`fortinet.firewall.domainfilterlist`*:: + -- -IKE negotiation phase. +Domain filter name + type: keyword -- -*`rsa.crypto.scheme`*:: +*`fortinet.firewall.ds`*:: + -- -This key captures the Encryption scheme used +Direction with distribution system + type: keyword -- -*`rsa.crypto.peer_id`*:: +*`fortinet.firewall.dst_int`*:: + -- -This key is for Encryption peer’s identity +Destination interface + type: keyword -- -*`rsa.crypto.sig_type`*:: +*`fortinet.firewall.dstintfrole`*:: + -- -This key captures the Signature Type - -type: keyword +Destination interface role --- -*`rsa.crypto.cert_issuer`*:: -+ --- type: keyword -- -*`rsa.crypto.cert_host_name`*:: +*`fortinet.firewall.dstcountry`*:: + -- -Deprecated key defined only in table map. +Destination country + type: keyword -- -*`rsa.crypto.cert_error`*:: +*`fortinet.firewall.dstdevcategory`*:: + -- -This key captures the Certificate Error String +Destination device category + type: keyword -- -*`rsa.crypto.cipher_dst`*:: +*`fortinet.firewall.dstdevtype`*:: + -- -This key is for Destination (Server) Cipher +Destination device type + type: keyword -- -*`rsa.crypto.cipher_size_dst`*:: +*`fortinet.firewall.dstfamily`*:: + -- -This key captures Destination (Server) Cipher Size +Destination OS family -type: long + +type: keyword -- -*`rsa.crypto.ssl_ver_src`*:: +*`fortinet.firewall.dsthwvendor`*:: + -- -Deprecated, use version +Destination HW vendor + type: keyword -- -*`rsa.crypto.d_certauth`*:: +*`fortinet.firewall.dsthwversion`*:: + -- -type: keyword +Destination HW version --- -*`rsa.crypto.s_certauth`*:: -+ --- type: keyword -- -*`rsa.crypto.ike_cookie1`*:: +*`fortinet.firewall.dstinetsvc`*:: + -- -ID of the negotiation — sent for ISAKMP Phase One +Destination interface service + type: keyword -- -*`rsa.crypto.ike_cookie2`*:: +*`fortinet.firewall.dstosname`*:: + -- -ID of the negotiation — sent for ISAKMP Phase Two +Destination OS name + type: keyword -- -*`rsa.crypto.cert_checksum`*:: +*`fortinet.firewall.dstosversion`*:: + -- +Destination OS version + + type: keyword -- -*`rsa.crypto.cert_host_cat`*:: +*`fortinet.firewall.dstserver`*:: + -- -This key is used for the hostname category value of a certificate +Destination server -type: keyword + +type: integer -- -*`rsa.crypto.cert_serial`*:: +*`fortinet.firewall.dstssid`*:: + -- -This key is used to capture the Certificate serial number only +Destination SSID + type: keyword -- -*`rsa.crypto.cert_status`*:: +*`fortinet.firewall.dstswversion`*:: + -- -This key captures Certificate validation status +Destination software version + type: keyword -- -*`rsa.crypto.ssl_ver_dst`*:: +*`fortinet.firewall.dstunauthusersource`*:: + -- -Deprecated, use version +Destination unauthenticated source + type: keyword -- -*`rsa.crypto.cert_keysize`*:: +*`fortinet.firewall.dstuuid`*:: + -- -type: keyword +UUID of the Destination IP address --- -*`rsa.crypto.cert_username`*:: -+ --- type: keyword -- -*`rsa.crypto.https_insact`*:: +*`fortinet.firewall.duid`*:: + -- -type: keyword +DHCP UID --- -*`rsa.crypto.https_valid`*:: -+ --- type: keyword -- -*`rsa.crypto.cert_ca`*:: +*`fortinet.firewall.eapolcnt`*:: + -- -This key is used to capture the Certificate signing authority only +EAPOL packet count -type: keyword + +type: integer -- -*`rsa.crypto.cert_common`*:: +*`fortinet.firewall.eapoltype`*:: + -- -This key is used to capture the Certificate common name only +EAPOL packet type + type: keyword -- - -*`rsa.wireless.wlan_ssid`*:: +*`fortinet.firewall.encrypt`*:: + -- -This key is used to capture the ssid of a Wireless Session +Whether the packet is encrypted or not -type: keyword + +type: integer -- -*`rsa.wireless.access_point`*:: +*`fortinet.firewall.encryption`*:: + -- -This key is used to capture the access point name. +Encryption method + type: keyword -- -*`rsa.wireless.wlan_channel`*:: +*`fortinet.firewall.epoch`*:: + -- -This is used to capture the channel names +Epoch used for locating file -type: long + +type: integer -- -*`rsa.wireless.wlan_name`*:: +*`fortinet.firewall.espauth`*:: + -- -This key captures either WLAN number/name +ESP Authentication + type: keyword -- - -*`rsa.storage.disk_volume`*:: +*`fortinet.firewall.esptransform`*:: + -- -A unique name assigned to logical units (volumes) within a physical disk +ESP Transform + type: keyword -- -*`rsa.storage.lun`*:: +*`fortinet.firewall.eventtype`*:: + -- -Logical Unit Number.This key is a very useful concept in Storage. +UTM Event Type + type: keyword -- -*`rsa.storage.pwwn`*:: +*`fortinet.firewall.exch`*:: + -- -This uniquely identifies a port on a HBA. +Mail Exchanges from DNS response answer section + type: keyword -- - -*`rsa.physical.org_dst`*:: +*`fortinet.firewall.exchange`*:: + -- -This is used to capture the destination organization based on the GEOPIP Maxmind database. +Mail Exchanges from DNS response answer section + type: keyword -- -*`rsa.physical.org_src`*:: +*`fortinet.firewall.expectedsignature`*:: + -- -This is used to capture the source organization based on the GEOPIP Maxmind database. +Expected SSL signature + type: keyword -- - -*`rsa.healthcare.patient_fname`*:: +*`fortinet.firewall.expiry`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +FortiGuard override expiry timestamp + type: keyword -- -*`rsa.healthcare.patient_id`*:: +*`fortinet.firewall.fams_pause`*:: + -- -This key captures the unique ID for a patient +Fortinet Analysis and Management Service Pause -type: keyword + +type: integer -- -*`rsa.healthcare.patient_lname`*:: +*`fortinet.firewall.fazlograte`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +FortiAnalyzer Logging Rate -type: keyword + +type: long -- -*`rsa.healthcare.patient_mname`*:: +*`fortinet.firewall.fctemssn`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +FortiClient Endpoint SSN + type: keyword -- - -*`rsa.endpoint.host_state`*:: +*`fortinet.firewall.fctuid`*:: + -- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on +FortiClient UID + type: keyword -- -*`rsa.endpoint.registry_key`*:: +*`fortinet.firewall.field`*:: + -- -This key captures the path to the registry key +NTP status field + type: keyword -- -*`rsa.endpoint.registry_value`*:: +*`fortinet.firewall.filefilter`*:: + -- -This key captures values or decorators used within a registry entry +The filter used to identify the affected file + type: keyword -- -[float] -=== cisco.umbrella - -Fields for Cisco Umbrella. - - - -*`cisco.umbrella.identities`*:: +*`fortinet.firewall.filehashsrc`*:: + -- -An array of the different identities related to the event. +Filehash source type: keyword -- -*`cisco.umbrella.categories`*:: +*`fortinet.firewall.filtercat`*:: + -- -The security or content categories that the destination matches. +DLP filter category type: keyword -- -*`cisco.umbrella.policy_identity_type`*:: +*`fortinet.firewall.filteridx`*:: + -- -The first identity type matched with this request. Available in version 3 and above. +DLP filter ID -type: keyword +type: integer -- -*`cisco.umbrella.identity_types`*:: +*`fortinet.firewall.filtername`*:: + -- -The type of identity that made the request. For example, Roaming Computer or Network. +DLP rule name type: keyword -- -*`cisco.umbrella.blocked_categories`*:: +*`fortinet.firewall.filtertype`*:: + -- -The categories that resulted in the destination being blocked. Available in version 4 and above. +DLP filter type type: keyword -- -*`cisco.umbrella.content_type`*:: +*`fortinet.firewall.fortiguardresp`*:: + -- -The type of web content, typically text/html. +Antispam ESP value type: keyword -- -*`cisco.umbrella.sha_sha256`*:: +*`fortinet.firewall.forwardedfor`*:: + -- -Hex digest of the response content. +Email address forwarded type: keyword -- -*`cisco.umbrella.av_detections`*:: +*`fortinet.firewall.fqdn`*:: + -- -The detection name according to the antivirus engine used in file inspection. +FQDN type: keyword -- -*`cisco.umbrella.puas`*:: +*`fortinet.firewall.frametype`*:: + -- -A list of all potentially unwanted application (PUA) results for the proxied file as returned by the antivirus scanner. +Wireless frametype type: keyword -- -*`cisco.umbrella.amp_disposition`*:: +*`fortinet.firewall.freediskstorage`*:: + -- -The status of the files proxied and scanned by Cisco Advanced Malware Protection (AMP) as part of the Umbrella File Inspection feature; can be Clean, Malicious or Unknown. +Free disk integer -type: keyword +type: integer -- -*`cisco.umbrella.amp_malware_name`*:: +*`fortinet.firewall.from`*:: + -- -If Malicious, the name of the malware according to AMP. +From email address type: keyword -- -*`cisco.umbrella.amp_score`*:: +*`fortinet.firewall.from_vcluster`*:: + -- -The score of the malware from AMP. This field is not currently used and will be blank. +Source virtual cluster number -type: keyword +type: integer -- -*`cisco.umbrella.datacenter`*:: +*`fortinet.firewall.fsaverdict`*:: + -- -The name of the Umbrella Data Center that processed the user-generated traffic. +FSA verdict type: keyword -- -*`cisco.umbrella.origin_id`*:: +*`fortinet.firewall.fwserver_name`*:: + -- -The unique identity of the network tunnel. +Web proxy server name type: keyword -- -[[exported-fields-cloud]] -== Cloud provider metadata fields - -Metadata from cloud providers added by the add_cloud_metadata processor. - - - -*`cloud.image.id`*:: +*`fortinet.firewall.gateway`*:: + -- -Image ID for the cloud instance. +Gateway ip address for PPPoE status report -example: ami-abcd1234 +type: ip -- -*`meta.cloud.provider`*:: +*`fortinet.firewall.green`*:: + -- -type: alias +Memory status -alias to: cloud.provider + +type: keyword -- -*`meta.cloud.instance_id`*:: +*`fortinet.firewall.groupid`*:: + -- -type: alias +User Group ID -alias to: cloud.instance.id + +type: integer -- -*`meta.cloud.instance_name`*:: +*`fortinet.firewall.ha-prio`*:: + -- -type: alias +HA Priority -alias to: cloud.instance.name + +type: integer -- -*`meta.cloud.machine_type`*:: +*`fortinet.firewall.ha_group`*:: + -- -type: alias +HA Group -alias to: cloud.machine.type + +type: keyword -- -*`meta.cloud.availability_zone`*:: +*`fortinet.firewall.ha_role`*:: + -- -type: alias +HA Role -alias to: cloud.availability_zone + +type: keyword -- -*`meta.cloud.project_id`*:: +*`fortinet.firewall.handshake`*:: + -- -type: alias +SSL Handshake -alias to: cloud.project.id --- +type: keyword -*`meta.cloud.region`*:: -+ -- -type: alias - -alias to: cloud.region +*`fortinet.firewall.hash`*:: ++ -- +Hash value of downloaded file -[[exported-fields-coredns]] -== Coredns fields - -Module for handling logs produced by coredns - - - -[float] -=== coredns - -coredns fields after normalization +type: keyword +-- -*`coredns.query.size`*:: +*`fortinet.firewall.hbdn_reason`*:: + -- -size of the DNS query - +Heartbeat down reason -type: integer -format: bytes +type: keyword -- -*`coredns.response.size`*:: +*`fortinet.firewall.highcount`*:: + -- -size of the DNS response +Highcount fabric summary type: integer -format: bytes - -- -[[exported-fields-crowdstrike]] -== Crowdstrike fields - -Module for collecting Crowdstrike events. - - - -[float] -=== crowdstrike - -Fields for Crowdstrike Falcon event and alert data. - - - -[float] -=== metadata - -Meta data fields for each event that include type and timestamp. - - - -*`crowdstrike.metadata.eventType`*:: +*`fortinet.firewall.host`*:: + -- -DetectionSummaryEvent, FirewallMatchEvent, IncidentSummaryEvent, RemoteResponseSessionStartEvent, RemoteResponseSessionEndEvent, AuthActivityAuditEvent, or UserActivityAuditEvent +Hostname type: keyword -- -*`crowdstrike.metadata.eventCreationTime`*:: +*`fortinet.firewall.iaid`*:: + -- -The time this event occurred on the endpoint in UTC UNIX_MS format. +DHCPv6 id -type: date +type: keyword -- -*`crowdstrike.metadata.offset`*:: +*`fortinet.firewall.icmpcode`*:: + -- -Offset number that tracks the location of the event in stream. This is used to identify unique detection events. +Destination Port of the ICMP message -type: integer +type: keyword -- -*`crowdstrike.metadata.customerIDString`*:: +*`fortinet.firewall.icmpid`*:: + -- -Customer identifier +Source port of the ICMP message type: keyword -- -*`crowdstrike.metadata.version`*:: +*`fortinet.firewall.icmptype`*:: + -- -Schema version +The type of ICMP message type: keyword -- -[float] -=== event +*`fortinet.firewall.identifier`*:: ++ +-- +Network traffic identifier -Event data fields for each event and alert. +type: integer +-- -*`crowdstrike.event.ProcessStartTime`*:: +*`fortinet.firewall.in_spi`*:: + -- -The process start time in UTC UNIX_MS format. +IPSEC inbound SPI -type: date +type: keyword -- -*`crowdstrike.event.ProcessEndTime`*:: +*`fortinet.firewall.incidentserialno`*:: + -- -The process termination time in UTC UNIX_MS format. +Incident serial number -type: date +type: integer -- -*`crowdstrike.event.ProcessId`*:: +*`fortinet.firewall.infected`*:: + -- -Process ID related to the detection. +Infected MMS type: integer -- -*`crowdstrike.event.ParentProcessId`*:: +*`fortinet.firewall.infectedfilelevel`*:: + -- -Parent process ID related to the detection. +DLP infected file level type: integer -- -*`crowdstrike.event.ComputerName`*:: +*`fortinet.firewall.informationsource`*:: + -- -Name of the computer where the detection occurred. +Information source type: keyword -- -*`crowdstrike.event.UserName`*:: +*`fortinet.firewall.init`*:: + -- -User name associated with the detection. +IPSEC init stage type: keyword -- -*`crowdstrike.event.DetectName`*:: +*`fortinet.firewall.initiator`*:: + -- -Name of the detection. +Original login user name for Fortiguard override type: keyword -- -*`crowdstrike.event.DetectDescription`*:: +*`fortinet.firewall.interface`*:: + -- -Description of the detection. +Related interface type: keyword -- -*`crowdstrike.event.Severity`*:: +*`fortinet.firewall.intf`*:: + -- -Severity score of the detection. +Related interface -type: integer +type: keyword -- -*`crowdstrike.event.SeverityName`*:: +*`fortinet.firewall.invalidmac`*:: + -- -Severity score text. +The MAC address with invalid OUI type: keyword -- -*`crowdstrike.event.FileName`*:: +*`fortinet.firewall.ip`*:: + -- -File name of the associated process for the detection. +Related IP -type: keyword +type: ip -- -*`crowdstrike.event.FilePath`*:: +*`fortinet.firewall.iptype`*:: + -- -Path of the executable associated with the detection. +Related IP type type: keyword -- -*`crowdstrike.event.CommandLine`*:: +*`fortinet.firewall.keyword`*:: + -- -Executable path with command line arguments. +Keyword used for search type: keyword -- -*`crowdstrike.event.SHA1String`*:: +*`fortinet.firewall.kind`*:: + -- -SHA1 sum of the executable associated with the detection. +VOIP kind type: keyword -- -*`crowdstrike.event.SHA256String`*:: +*`fortinet.firewall.lanin`*:: + -- -SHA256 sum of the executable associated with the detection. +LAN incoming traffic in bytes -type: keyword +type: long -- -*`crowdstrike.event.MD5String`*:: +*`fortinet.firewall.lanout`*:: + -- -MD5 sum of the executable associated with the detection. +LAN outbound traffic in bytes -type: keyword +type: long -- -*`crowdstrike.event.MachineDomain`*:: +*`fortinet.firewall.lease`*:: + -- -Domain for the machine associated with the detection. +DHCP lease -type: keyword +type: integer -- -*`crowdstrike.event.FalconHostLink`*:: +*`fortinet.firewall.license_limit`*:: + -- -URL to view the detection in Falcon. +Maximum Number of FortiClients for the License type: keyword -- -*`crowdstrike.event.SensorId`*:: +*`fortinet.firewall.limit`*:: + -- -Unique ID associated with the Falcon sensor. +Virtual Domain Resource Limit -type: keyword +type: integer -- -*`crowdstrike.event.DetectId`*:: +*`fortinet.firewall.line`*:: + -- -Unique ID associated with the detection. +VOIP line type: keyword -- -*`crowdstrike.event.LocalIP`*:: +*`fortinet.firewall.live`*:: + -- -IP address of the host associated with the detection. +Time in seconds -type: keyword +type: integer -- -*`crowdstrike.event.MACAddress`*:: +*`fortinet.firewall.local`*:: + -- -MAC address of the host associated with the detection. +Local IP for a PPPD Connection -type: keyword +type: ip -- -*`crowdstrike.event.Tactic`*:: +*`fortinet.firewall.log`*:: + -- -MITRE tactic category of the detection. +Log message type: keyword -- -*`crowdstrike.event.Technique`*:: +*`fortinet.firewall.login`*:: + -- -MITRE technique category of the detection. +SSH login type: keyword -- -*`crowdstrike.event.Objective`*:: +*`fortinet.firewall.lowcount`*:: + -- -Method of detection. +Fabric lowcount -type: keyword +type: integer -- -*`crowdstrike.event.PatternDispositionDescription`*:: +*`fortinet.firewall.mac`*:: + -- -Action taken by Falcon. +DHCP mac address type: keyword -- -*`crowdstrike.event.PatternDispositionValue`*:: +*`fortinet.firewall.malform_data`*:: + -- -Unique ID associated with action taken. +VOIP malformed data type: integer -- -*`crowdstrike.event.PatternDispositionFlags`*:: +*`fortinet.firewall.malform_desc`*:: + -- -Flags indicating actions taken. +VOIP malformed data description -type: object +type: keyword -- -*`crowdstrike.event.State`*:: +*`fortinet.firewall.manuf`*:: + -- -Whether the incident summary is open and ongoing or closed. +Manufacturer name type: keyword -- -*`crowdstrike.event.IncidentStartTime`*:: +*`fortinet.firewall.masterdstmac`*:: + -- -Start time for the incident in UTC UNIX format. +Master mac address for a host with multiple network interfaces -type: date +type: keyword -- -*`crowdstrike.event.IncidentEndTime`*:: +*`fortinet.firewall.mastersrcmac`*:: + -- -End time for the incident in UTC UNIX format. +The master MAC address for a host that has multiple network interfaces -type: date +type: keyword -- -*`crowdstrike.event.FineScore`*:: +*`fortinet.firewall.mediumcount`*:: + -- -Score for incident. +Fabric medium count -type: float +type: integer -- -*`crowdstrike.event.UserId`*:: +*`fortinet.firewall.mem`*:: + -- -Email address or user ID associated with the event. +Memory usage system statistics -type: keyword +type: integer -- -*`crowdstrike.event.UserIp`*:: +*`fortinet.firewall.meshmode`*:: + -- -IP address associated with the user. +Wireless mesh mode type: keyword -- -*`crowdstrike.event.OperationName`*:: +*`fortinet.firewall.message_type`*:: + -- -Event subtype. +VOIP message type type: keyword -- -*`crowdstrike.event.ServiceName`*:: +*`fortinet.firewall.method`*:: + -- -Service associated with this event. +HTTP method type: keyword -- -*`crowdstrike.event.Success`*:: +*`fortinet.firewall.mgmtcnt`*:: + -- -Indicator of whether or not this event was successful. +The number of unauthorized client flooding managemet frames -type: boolean +type: integer -- -*`crowdstrike.event.UTCTimestamp`*:: +*`fortinet.firewall.mode`*:: + -- -Timestamp associated with this event in UTC UNIX format. +IPSEC mode -type: date +type: keyword -- -*`crowdstrike.event.AuditKeyValues`*:: +*`fortinet.firewall.module`*:: + -- -Fields that were changed in this event. +PCI-DSS module -type: nested +type: keyword -- -*`crowdstrike.event.ExecutablesWritten`*:: +*`fortinet.firewall.monitor-name`*:: + -- -Detected executables written to disk by a process. +Health Monitor Name -type: nested +type: keyword -- -*`crowdstrike.event.SessionId`*:: +*`fortinet.firewall.monitor-type`*:: + -- -Session ID of the remote response session. +Health Monitor Type type: keyword -- -*`crowdstrike.event.HostnameField`*:: +*`fortinet.firewall.mpsk`*:: + -- -Host name of the machine for the remote session. +Wireless MPSK type: keyword -- -*`crowdstrike.event.StartTimestamp`*:: +*`fortinet.firewall.msgproto`*:: + -- -Start time for the remote session in UTC UNIX format. +Message Protocol Number -type: date +type: keyword -- -*`crowdstrike.event.EndTimestamp`*:: +*`fortinet.firewall.mtu`*:: + -- -End time for the remote session in UTC UNIX format. +Max Transmission Unit Value -type: date +type: integer -- -*`crowdstrike.event.LateralMovement`*:: +*`fortinet.firewall.name`*:: + -- -Lateral movement field for incident. +Name -type: long +type: keyword -- -*`crowdstrike.event.ParentImageFileName`*:: +*`fortinet.firewall.nat`*:: + -- -Path to the parent process. +NAT IP Address type: keyword -- -*`crowdstrike.event.ParentCommandLine`*:: +*`fortinet.firewall.netid`*:: + -- -Parent process command line arguments. +Connector NetID type: keyword -- -*`crowdstrike.event.GrandparentImageFileName`*:: +*`fortinet.firewall.new_status`*:: + -- -Path to the grandparent process. +New status on user change type: keyword -- -*`crowdstrike.event.GrandparentCommandLine`*:: +*`fortinet.firewall.new_value`*:: + -- -Grandparent process command line arguments. +New Virtual Domain Name type: keyword -- -*`crowdstrike.event.IOCType`*:: +*`fortinet.firewall.newchannel`*:: + -- -CrowdStrike type for indicator of compromise. +New Channel Number -type: keyword +type: integer -- -*`crowdstrike.event.IOCValue`*:: +*`fortinet.firewall.newchassisid`*:: + -- -CrowdStrike value for indicator of compromise. +New Chassis ID -type: keyword +type: integer -- -*`crowdstrike.event.CustomerId`*:: +*`fortinet.firewall.newslot`*:: + -- -Customer identifier. +New Slot Number -type: keyword +type: integer -- -*`crowdstrike.event.DeviceId`*:: +*`fortinet.firewall.nextstat`*:: + -- -Device on which the event occurred. +Time interval in seconds for the next statistics. -type: keyword +type: integer -- -*`crowdstrike.event.Ipv`*:: +*`fortinet.firewall.nf_type`*:: + -- -Protocol for network request. +Notification Type type: keyword -- -*`crowdstrike.event.ConnectionDirection`*:: +*`fortinet.firewall.noise`*:: + -- -Direction for network connection. +Wifi Noise -type: keyword +type: integer -- -*`crowdstrike.event.EventType`*:: +*`fortinet.firewall.old_status`*:: + -- -CrowdStrike provided event type. +Original Status type: keyword -- -*`crowdstrike.event.HostName`*:: +*`fortinet.firewall.old_value`*:: + -- -Host name of the local machine. +Original Virtual Domain name type: keyword -- -*`crowdstrike.event.ICMPCode`*:: +*`fortinet.firewall.oldchannel`*:: + -- -RFC2780 ICMP Code field. +Original channel -type: keyword +type: integer -- -*`crowdstrike.event.ICMPType`*:: +*`fortinet.firewall.oldchassisid`*:: + -- -RFC2780 ICMP Type field. +Original Chassis Number -type: keyword +type: integer -- -*`crowdstrike.event.ImageFileName`*:: +*`fortinet.firewall.oldslot`*:: + -- -File name of the associated process for the detection. +Original Slot Number -type: keyword +type: integer -- -*`crowdstrike.event.PID`*:: +*`fortinet.firewall.oldsn`*:: + -- -Associated process id for the detection. +Old Serial number -type: long +type: keyword -- -*`crowdstrike.event.LocalAddress`*:: +*`fortinet.firewall.oldwprof`*:: + -- -IP address of local machine. +Old Web Filter Profile -type: ip +type: keyword -- -*`crowdstrike.event.LocalPort`*:: +*`fortinet.firewall.onwire`*:: + -- -Port of local machine. +A flag to indicate if the AP is onwire or not -type: long +type: keyword -- -*`crowdstrike.event.RemoteAddress`*:: +*`fortinet.firewall.opercountry`*:: + -- -IP address of remote machine. +Operating Country -type: ip +type: keyword -- -*`crowdstrike.event.RemotePort`*:: +*`fortinet.firewall.opertxpower`*:: + -- -Port of remote machine. +Operating TX power -type: long +type: integer -- -*`crowdstrike.event.RuleAction`*:: +*`fortinet.firewall.osname`*:: + -- -Firewall rule action. +Operating System name type: keyword -- -*`crowdstrike.event.RuleDescription`*:: +*`fortinet.firewall.osversion`*:: + -- -Firewall rule description. +Operating System version type: keyword -- -*`crowdstrike.event.RuleFamilyID`*:: +*`fortinet.firewall.out_spi`*:: + -- -Firewall rule family id. +Out SPI type: keyword -- -*`crowdstrike.event.RuleGroupName`*:: +*`fortinet.firewall.outintf`*:: + -- -Firewall rule group name. +Out interface type: keyword -- -*`crowdstrike.event.RuleName`*:: +*`fortinet.firewall.passedcount`*:: + -- -Firewall rule name. +Fabric passed count -type: keyword +type: integer -- -*`crowdstrike.event.RuleId`*:: +*`fortinet.firewall.passwd`*:: + -- -Firewall rule id. +Changed user password information type: keyword -- -*`crowdstrike.event.MatchCount`*:: +*`fortinet.firewall.path`*:: + -- -Number of firewall rule matches. +Path of looped configuration for security fabric -type: long +type: keyword -- -*`crowdstrike.event.MatchCountSinceLastReport`*:: +*`fortinet.firewall.peer`*:: + -- -Number of firewall rule matches since the last report. +WAN optimization peer -type: long +type: keyword -- -*`crowdstrike.event.Timestamp`*:: +*`fortinet.firewall.peer_notif`*:: + -- -Firewall rule triggered timestamp. +VPN peer notification -type: date +type: keyword -- -*`crowdstrike.event.Flags.Audit`*:: +*`fortinet.firewall.phase2_name`*:: + -- -CrowdStrike audit flag. +VPN phase2 name -type: boolean +type: keyword -- -*`crowdstrike.event.Flags.Log`*:: +*`fortinet.firewall.phone`*:: + -- -CrowdStrike log flag. +VOIP Phone -type: boolean +type: keyword -- -*`crowdstrike.event.Flags.Monitor`*:: +*`fortinet.firewall.pid`*:: + -- -CrowdStrike monitor flag. +Process ID -type: boolean +type: integer -- -*`crowdstrike.event.Protocol`*:: +*`fortinet.firewall.policytype`*:: + -- -CrowdStrike provided protocol. +Policy Type type: keyword -- -*`crowdstrike.event.NetworkProfile`*:: +*`fortinet.firewall.poolname`*:: + -- -CrowdStrike network profile. +IP Pool name type: keyword -- -*`crowdstrike.event.PolicyName`*:: +*`fortinet.firewall.port`*:: + -- -CrowdStrike policy name. +Log upload error port -type: keyword +type: integer -- -*`crowdstrike.event.PolicyID`*:: +*`fortinet.firewall.portbegin`*:: + -- -CrowdStrike policy id. +IP Pool port number to begin -type: keyword +type: integer -- -*`crowdstrike.event.Status`*:: +*`fortinet.firewall.portend`*:: + -- -CrowdStrike status. +IP Pool port number to end -type: keyword +type: integer -- -*`crowdstrike.event.TreeID`*:: +*`fortinet.firewall.probeproto`*:: + -- -CrowdStrike tree id. +Link Monitor Probe Protocol type: keyword -- -*`crowdstrike.event.Commands`*:: +*`fortinet.firewall.process`*:: + -- -Commands run in a remote session. +URL Filter process type: keyword -- -[[exported-fields-cyberarkpas]] -== CyberArk PAS fields - -cyberarkpas fields. +*`fortinet.firewall.processtime`*:: ++ +-- +Process time for reports +type: integer +-- -[float] -=== audit +*`fortinet.firewall.profile`*:: ++ +-- +Profile Name -Cyberark Privileged Access Security Audit fields. +type: keyword +-- -*`cyberarkpas.audit.action`*:: +*`fortinet.firewall.profile_vd`*:: + -- -A description of the audit record. +Virtual Domain Name + type: keyword -- -[float] -=== ca_properties - -Account metadata. - - -*`cyberarkpas.audit.ca_properties.address`*:: +*`fortinet.firewall.profilegroup`*:: + -- +Profile Group Name + + type: keyword -- -*`cyberarkpas.audit.ca_properties.cpm_disabled`*:: +*`fortinet.firewall.profiletype`*:: + -- +Profile Type + + type: keyword -- -*`cyberarkpas.audit.ca_properties.cpm_error_details`*:: +*`fortinet.firewall.qtypeval`*:: + -- -type: keyword +DNS question type value + + +type: integer -- -*`cyberarkpas.audit.ca_properties.cpm_status`*:: +*`fortinet.firewall.quarskip`*:: + -- +Quarantine skip explanation + + type: keyword -- -*`cyberarkpas.audit.ca_properties.creation_method`*:: +*`fortinet.firewall.quotaexceeded`*:: + -- +If quota has been exceeded + + type: keyword -- -*`cyberarkpas.audit.ca_properties.customer`*:: +*`fortinet.firewall.quotamax`*:: + -- -type: keyword +Maximum quota allowed - in seconds if time-based - in bytes if traffic-based + + +type: long -- -*`cyberarkpas.audit.ca_properties.database`*:: +*`fortinet.firewall.quotatype`*:: + -- +Quota type + + type: keyword -- -*`cyberarkpas.audit.ca_properties.device_type`*:: +*`fortinet.firewall.quotaused`*:: + -- -type: keyword +Quota used - in seconds if time-based - in bytes if trafficbased) + + +type: long -- -*`cyberarkpas.audit.ca_properties.dual_account_status`*:: +*`fortinet.firewall.radioband`*:: + -- +Radio band + + type: keyword -- -*`cyberarkpas.audit.ca_properties.group_name`*:: +*`fortinet.firewall.radioid`*:: + -- -type: keyword +Radio ID + + +type: integer -- -*`cyberarkpas.audit.ca_properties.in_process`*:: +*`fortinet.firewall.radioidclosest`*:: + -- -type: keyword +Radio ID on the AP closest the rogue AP + + +type: integer -- -*`cyberarkpas.audit.ca_properties.index`*:: +*`fortinet.firewall.radioiddetected`*:: + -- -type: keyword +Radio ID on the AP which detected the rogue AP + + +type: integer -- -*`cyberarkpas.audit.ca_properties.last_fail_date`*:: +*`fortinet.firewall.rate`*:: + -- +Wireless rogue rate value + + type: keyword -- -*`cyberarkpas.audit.ca_properties.last_success_change`*:: +*`fortinet.firewall.rawdata`*:: + -- +Raw data value + + type: keyword -- -*`cyberarkpas.audit.ca_properties.last_success_reconciliation`*:: +*`fortinet.firewall.rawdataid`*:: + -- +Raw data ID + + type: keyword -- -*`cyberarkpas.audit.ca_properties.last_success_verification`*:: +*`fortinet.firewall.rcvddelta`*:: + -- +Received bytes delta + + type: keyword -- -*`cyberarkpas.audit.ca_properties.last_task`*:: +*`fortinet.firewall.reason`*:: + -- +Alert reason + + type: keyword -- -*`cyberarkpas.audit.ca_properties.logon_domain`*:: +*`fortinet.firewall.received`*:: + -- -type: keyword +Server key exchange received + + +type: integer -- -*`cyberarkpas.audit.ca_properties.policy_id`*:: +*`fortinet.firewall.receivedsignature`*:: + -- +Server key exchange received signature + + type: keyword -- -*`cyberarkpas.audit.ca_properties.port`*:: +*`fortinet.firewall.red`*:: + -- +Memory information in red + + type: keyword -- -*`cyberarkpas.audit.ca_properties.privcloud`*:: +*`fortinet.firewall.referralurl`*:: + -- -type: keyword +Web filter referralurl --- -*`cyberarkpas.audit.ca_properties.reset_immediately`*:: -+ --- type: keyword -- -*`cyberarkpas.audit.ca_properties.retries_count`*:: +*`fortinet.firewall.remote`*:: + -- -type: keyword +Remote PPP IP address --- -*`cyberarkpas.audit.ca_properties.sequence_id`*:: -+ --- -type: keyword +type: ip -- -*`cyberarkpas.audit.ca_properties.tags`*:: +*`fortinet.firewall.remotewtptime`*:: + -- -type: keyword +Remote Wifi Radius authentication time --- -*`cyberarkpas.audit.ca_properties.user_dn`*:: -+ --- type: keyword -- -*`cyberarkpas.audit.ca_properties.user_name`*:: +*`fortinet.firewall.reporttype`*:: + -- -type: keyword +Report type --- -*`cyberarkpas.audit.ca_properties.virtual_username`*:: -+ --- type: keyword -- -*`cyberarkpas.audit.ca_properties.other`*:: +*`fortinet.firewall.reqtype`*:: + -- -type: flattened +Request type + + +type: keyword -- -*`cyberarkpas.audit.category`*:: +*`fortinet.firewall.request_name`*:: + -- -The category name (for category-related operations). +VOIP request name + type: keyword -- -*`cyberarkpas.audit.desc`*:: +*`fortinet.firewall.result`*:: + -- -A static value that displays a description of the audit codes. +VPN phase result + type: keyword -- -[float] -=== extra_details - -Specific extra details of the audit records. - - -*`cyberarkpas.audit.extra_details.ad_process_id`*:: +*`fortinet.firewall.role`*:: + -- +VPN Phase 2 role + + type: keyword -- -*`cyberarkpas.audit.extra_details.ad_process_name`*:: +*`fortinet.firewall.rssi`*:: + -- -type: keyword +Received signal strength indicator + + +type: integer -- -*`cyberarkpas.audit.extra_details.application_type`*:: +*`fortinet.firewall.rsso_key`*:: + -- +RADIUS SSO attribute value + + type: keyword -- -*`cyberarkpas.audit.extra_details.command`*:: +*`fortinet.firewall.ruledata`*:: + -- +Rule data + + type: keyword -- -*`cyberarkpas.audit.extra_details.connection_component_id`*:: +*`fortinet.firewall.ruletype`*:: + -- +Rule type + + type: keyword -- -*`cyberarkpas.audit.extra_details.dst_host`*:: +*`fortinet.firewall.scanned`*:: + -- -type: keyword +Number of Scanned MMSs + + +type: integer -- -*`cyberarkpas.audit.extra_details.logon_account`*:: +*`fortinet.firewall.scantime`*:: + -- -type: keyword +Scanned time + + +type: long -- -*`cyberarkpas.audit.extra_details.managed_account`*:: +*`fortinet.firewall.scope`*:: + -- +FortiGuard Override Scope + + type: keyword -- -*`cyberarkpas.audit.extra_details.process_id`*:: +*`fortinet.firewall.security`*:: + -- +Wireless rogue security + + type: keyword -- -*`cyberarkpas.audit.extra_details.process_name`*:: +*`fortinet.firewall.sensitivity`*:: + -- +Sensitivity for document fingerprint + + type: keyword -- -*`cyberarkpas.audit.extra_details.protocol`*:: +*`fortinet.firewall.sensor`*:: + -- +NAC Sensor Name + + type: keyword -- -*`cyberarkpas.audit.extra_details.psmid`*:: +*`fortinet.firewall.sentdelta`*:: + -- +Sent bytes delta + + type: keyword -- -*`cyberarkpas.audit.extra_details.session_duration`*:: +*`fortinet.firewall.seq`*:: + -- +Sequence number + + type: keyword -- -*`cyberarkpas.audit.extra_details.session_id`*:: +*`fortinet.firewall.serial`*:: + -- +WAN optimisation serial + + type: keyword -- -*`cyberarkpas.audit.extra_details.src_host`*:: +*`fortinet.firewall.serialno`*:: + -- +Serial number + + type: keyword -- -*`cyberarkpas.audit.extra_details.username`*:: +*`fortinet.firewall.server`*:: + -- +AD server FQDN or IP + + type: keyword -- -*`cyberarkpas.audit.extra_details.other`*:: +*`fortinet.firewall.session_id`*:: + -- -type: flattened +Session ID + + +type: keyword -- -*`cyberarkpas.audit.file`*:: +*`fortinet.firewall.sessionid`*:: + -- -The name of the target file. +WAD Session ID -type: keyword + +type: integer -- -*`cyberarkpas.audit.gateway_station`*:: +*`fortinet.firewall.setuprate`*:: + -- -The IP of the web application machine (PVWA). +Session Setup Rate -type: ip + +type: long -- -*`cyberarkpas.audit.hostname`*:: +*`fortinet.firewall.severity`*:: + -- -The hostname, in upper case. +Severity -type: keyword -example: MY-COMPUTER +type: keyword -- -*`cyberarkpas.audit.iso_timestamp`*:: +*`fortinet.firewall.shaperdroprcvdbyte`*:: + -- -The timestamp, in ISO Timestamp format (RFC 3339). +Received bytes dropped by shaper -type: date -example: 2013-06-25 10:47:19+00:00 +type: integer -- -*`cyberarkpas.audit.issuer`*:: +*`fortinet.firewall.shaperdropsentbyte`*:: + -- -The Vault user who wrote the audit. This is usually the user who performed the operation. +Sent bytes dropped by shaper -type: keyword + +type: integer -- -*`cyberarkpas.audit.location`*:: +*`fortinet.firewall.shaperperipdropbyte`*:: + -- -The target Location (for Location operations). +Dropped bytes per IP by shaper -type: keyword -Field is not indexed. +type: integer -- -*`cyberarkpas.audit.message`*:: +*`fortinet.firewall.shaperperipname`*:: + -- -A description of the audit records (same information as in the Desc field). +Traffic shaper name (per IP) + type: keyword -- -*`cyberarkpas.audit.message_id`*:: +*`fortinet.firewall.shaperrcvdname`*:: + -- -The code ID of the audit records. +Traffic shaper name for received traffic + type: keyword -- -*`cyberarkpas.audit.product`*:: +*`fortinet.firewall.shapersentname`*:: + -- -A static value that represents the product. +Traffic shaper name for sent traffic + type: keyword -- -*`cyberarkpas.audit.pvwa_details`*:: +*`fortinet.firewall.shapingpolicyid`*:: + -- -Specific details of the PVWA audit records. +Traffic shaper policy ID -type: flattened + +type: integer -- -*`cyberarkpas.audit.raw`*:: +*`fortinet.firewall.signal`*:: + -- -Raw XML for the original audit record. Only present when XSLT file has debugging enabled. - +Wireless rogue API signal -type: keyword -Field is not indexed. +type: integer -- -*`cyberarkpas.audit.reason`*:: +*`fortinet.firewall.size`*:: + -- -The reason entered by the user. +Email size in bytes -type: text + +type: long -- -*`cyberarkpas.audit.rfc5424`*:: +*`fortinet.firewall.slot`*:: + -- -Whether the syslog format complies with RFC5424. +Slot number -type: boolean -example: True +type: integer -- -*`cyberarkpas.audit.safe`*:: +*`fortinet.firewall.sn`*:: + -- -The name of the target Safe. +Security fabric serial number + type: keyword -- -*`cyberarkpas.audit.severity`*:: +*`fortinet.firewall.snclosest`*:: + -- -The severity of the audit records. +SN of the AP closest to the rogue AP + type: keyword -- -*`cyberarkpas.audit.source_user`*:: +*`fortinet.firewall.sndetected`*:: + -- -The name of the Vault user who performed the operation. +SN of the AP which detected the rogue AP + type: keyword -- -*`cyberarkpas.audit.station`*:: +*`fortinet.firewall.snmeshparent`*:: + -- -The IP from where the operation was performed. For PVWA sessions, this will be the real client machine IP. +SN of the mesh parent -type: ip + +type: keyword -- -*`cyberarkpas.audit.target_user`*:: +*`fortinet.firewall.spi`*:: + -- -The name of the Vault user on which the operation was performed. +IPSEC SPI + type: keyword -- -*`cyberarkpas.audit.timestamp`*:: +*`fortinet.firewall.src_int`*:: + -- -The timestamp, in MMM DD HH:MM:SS format. +Source interface -type: keyword -example: Jun 25 10:47:19 +type: keyword -- -*`cyberarkpas.audit.vendor`*:: +*`fortinet.firewall.srcintfrole`*:: + -- -A static value that represents the vendor. +Source interface role + type: keyword -- -*`cyberarkpas.audit.version`*:: +*`fortinet.firewall.srccountry`*:: + -- -A static value that represents the version of the Vault. +Source country + type: keyword -- -[[exported-fields-cylance]] -== CylanceProtect fields - -cylance fields. - - - -*`network.interface.name`*:: +*`fortinet.firewall.srcfamily`*:: + -- -Name of the network interface where the traffic has been observed. +Source family type: keyword -- - - -*`rsa.internal.msg`*:: +*`fortinet.firewall.srchwvendor`*:: + -- -This key is used to capture the raw message that comes into the Log Decoder +Source hardware vendor + type: keyword -- -*`rsa.internal.messageid`*:: +*`fortinet.firewall.srchwversion`*:: + -- -type: keyword +Source hardware version --- -*`rsa.internal.event_desc`*:: -+ --- type: keyword -- -*`rsa.internal.message`*:: +*`fortinet.firewall.srcinetsvc`*:: + -- -This key captures the contents of instant messages +Source interface service + type: keyword -- -*`rsa.internal.time`*:: +*`fortinet.firewall.srcname`*:: + -- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. +Source name -type: date + +type: keyword -- -*`rsa.internal.level`*:: +*`fortinet.firewall.srcserver`*:: + -- -Deprecated key defined only in table map. +Source server -type: long + +type: integer -- -*`rsa.internal.msg_id`*:: +*`fortinet.firewall.srcssid`*:: + -- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Source SSID + type: keyword -- -*`rsa.internal.msg_vid`*:: +*`fortinet.firewall.srcswversion`*:: + -- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Source software version + type: keyword -- -*`rsa.internal.data`*:: +*`fortinet.firewall.srcuuid`*:: + -- -Deprecated key defined only in table map. +Source UUID + type: keyword -- -*`rsa.internal.obj_server`*:: +*`fortinet.firewall.sscname`*:: + -- -Deprecated key defined only in table map. +SSC name + type: keyword -- -*`rsa.internal.obj_val`*:: +*`fortinet.firewall.ssid`*:: + -- -Deprecated key defined only in table map. +Base Service Set ID + type: keyword -- -*`rsa.internal.resource`*:: +*`fortinet.firewall.sslaction`*:: + -- -Deprecated key defined only in table map. +SSL Action + type: keyword -- -*`rsa.internal.obj_id`*:: +*`fortinet.firewall.ssllocal`*:: + -- -Deprecated key defined only in table map. +WAD SSL local + type: keyword -- -*`rsa.internal.statement`*:: +*`fortinet.firewall.sslremote`*:: + -- -Deprecated key defined only in table map. +WAD SSL remote + type: keyword -- -*`rsa.internal.audit_class`*:: +*`fortinet.firewall.stacount`*:: + -- -Deprecated key defined only in table map. +Number of stations/clients -type: keyword + +type: integer -- -*`rsa.internal.entry`*:: +*`fortinet.firewall.stage`*:: + -- -Deprecated key defined only in table map. +IPSEC stage + type: keyword -- -*`rsa.internal.hcode`*:: +*`fortinet.firewall.stamac`*:: + -- -Deprecated key defined only in table map. +802.1x station mac + type: keyword -- -*`rsa.internal.inode`*:: +*`fortinet.firewall.state`*:: + -- -Deprecated key defined only in table map. - -type: long - --- +Admin login state -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. type: keyword -- -*`rsa.internal.dead`*:: +*`fortinet.firewall.status`*:: + -- -Deprecated key defined only in table map. +Status -type: long + +type: keyword -- -*`rsa.internal.feed_desc`*:: +*`fortinet.firewall.stitch`*:: + -- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Automation stitch triggered + type: keyword -- -*`rsa.internal.feed_name`*:: +*`fortinet.firewall.subject`*:: + -- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Email subject + type: keyword -- -*`rsa.internal.cid`*:: +*`fortinet.firewall.submodule`*:: + -- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Configuration Sub-Module Name + type: keyword -- -*`rsa.internal.device_class`*:: +*`fortinet.firewall.subservice`*:: + -- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +AV subservice + type: keyword -- -*`rsa.internal.device_group`*:: +*`fortinet.firewall.subtype`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Log subtype + type: keyword -- -*`rsa.internal.device_host`*:: +*`fortinet.firewall.suspicious`*:: + -- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Number of Suspicious MMSs -type: keyword + +type: integer -- -*`rsa.internal.device_ip`*:: +*`fortinet.firewall.switchproto`*:: + -- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Protocol change information -type: ip + +type: keyword -- -*`rsa.internal.device_ipv6`*:: +*`fortinet.firewall.sync_status`*:: + -- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The sync status with the master -type: ip + +type: keyword -- -*`rsa.internal.device_type`*:: +*`fortinet.firewall.sync_type`*:: + -- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The sync type with the master + type: keyword -- -*`rsa.internal.device_type_id`*:: +*`fortinet.firewall.sysuptime`*:: + -- -Deprecated key defined only in table map. +System uptime -type: long + +type: keyword -- -*`rsa.internal.did`*:: +*`fortinet.firewall.tamac`*:: + -- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +the MAC address of Transmitter, if none, then Receiver + type: keyword -- -*`rsa.internal.entropy_req`*:: +*`fortinet.firewall.threattype`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +WIDS threat type -type: long + +type: keyword -- -*`rsa.internal.entropy_res`*:: +*`fortinet.firewall.time`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +Time of the event -type: long + +type: keyword -- -*`rsa.internal.event_name`*:: +*`fortinet.firewall.to`*:: + -- -Deprecated key defined only in table map. +Email to field + type: keyword -- -*`rsa.internal.feed_category`*:: +*`fortinet.firewall.to_vcluster`*:: + -- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +destination virtual cluster number -type: keyword + +type: integer -- -*`rsa.internal.forward_ip`*:: +*`fortinet.firewall.total`*:: + -- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. +Total memory -type: ip + +type: integer -- -*`rsa.internal.forward_ipv6`*:: +*`fortinet.firewall.totalsession`*:: + -- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Total Number of Sessions -type: ip + +type: integer -- -*`rsa.internal.header_id`*:: +*`fortinet.firewall.trace_id`*:: + -- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Session clash trace ID + type: keyword -- -*`rsa.internal.lc_cid`*:: +*`fortinet.firewall.trandisp`*:: + -- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +NAT translation type + type: keyword -- -*`rsa.internal.lc_ctime`*:: +*`fortinet.firewall.transid`*:: + -- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +HTTP transaction ID -type: date + +type: integer -- -*`rsa.internal.mcb_req`*:: +*`fortinet.firewall.translationid`*:: + -- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most +DNS filter transaltion ID -type: long + +type: keyword -- -*`rsa.internal.mcb_res`*:: +*`fortinet.firewall.trigger`*:: + -- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most +Automation stitch trigger -type: long + +type: keyword -- -*`rsa.internal.mcbc_req`*:: +*`fortinet.firewall.trueclntip`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +File filter true client IP -type: long + +type: ip -- -*`rsa.internal.mcbc_res`*:: +*`fortinet.firewall.tunnelid`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +IPSEC tunnel ID -type: long + +type: integer -- -*`rsa.internal.medium`*:: +*`fortinet.firewall.tunnelip`*:: + -- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session +IPSEC tunnel IP -type: long + +type: ip -- -*`rsa.internal.node_name`*:: +*`fortinet.firewall.tunneltype`*:: + -- -Deprecated key defined only in table map. +IPSEC tunnel type + type: keyword -- -*`rsa.internal.nwe_callback_id`*:: +*`fortinet.firewall.type`*:: + -- -This key denotes that event is endpoint related +Module type + type: keyword -- -*`rsa.internal.parse_error`*:: +*`fortinet.firewall.ui`*:: + -- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Admin authentication UI type + type: keyword -- -*`rsa.internal.payload_req`*:: +*`fortinet.firewall.unauthusersource`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +Unauthenticated user source -type: long + +type: keyword -- -*`rsa.internal.payload_res`*:: +*`fortinet.firewall.unit`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +Power supply unit -type: long + +type: integer -- -*`rsa.internal.process_vid_dst`*:: +*`fortinet.firewall.urlfilteridx`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. +URL filter ID -type: keyword + +type: integer -- -*`rsa.internal.process_vid_src`*:: +*`fortinet.firewall.urlfilterlist`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. +URL filter list + type: keyword -- -*`rsa.internal.rid`*:: +*`fortinet.firewall.urlsource`*:: + -- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +URL filter source -type: long + +type: keyword -- -*`rsa.internal.session_split`*:: +*`fortinet.firewall.urltype`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +URL filter type + type: keyword -- -*`rsa.internal.site`*:: +*`fortinet.firewall.used`*:: + -- -Deprecated key defined only in table map. +Number of Used IPs -type: keyword + +type: integer -- -*`rsa.internal.size`*:: +*`fortinet.firewall.used_for_type`*:: + -- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Connection for the type -type: long + +type: integer -- -*`rsa.internal.sourcefile`*:: +*`fortinet.firewall.utmaction`*:: + -- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Security action performed by UTM + type: keyword -- -*`rsa.internal.ubc_req`*:: +*`fortinet.firewall.utmref`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +Reference to UTM -type: long + +type: keyword -- -*`rsa.internal.ubc_res`*:: +*`fortinet.firewall.vap`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +Virtual AP -type: long + +type: keyword -- -*`rsa.internal.word`*:: +*`fortinet.firewall.vapmode`*:: + -- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log +Virtual AP mode + type: keyword -- - -*`rsa.time.event_time`*:: +*`fortinet.firewall.vcluster`*:: + -- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form +virtual cluster id -type: date + +type: integer -- -*`rsa.time.duration_time`*:: +*`fortinet.firewall.vcluster_member`*:: + -- -This key is used to capture the normalized duration/lifetime in seconds. +Virtual cluster member -type: double + +type: integer -- -*`rsa.time.event_time_str`*:: +*`fortinet.firewall.vcluster_state`*:: + -- -This key is used to capture the incomplete time mentioned in a session as a string +Virtual cluster state + type: keyword -- -*`rsa.time.starttime`*:: +*`fortinet.firewall.vd`*:: + -- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date +Virtual Domain Name --- -*`rsa.time.month`*:: -+ --- type: keyword -- -*`rsa.time.day`*:: +*`fortinet.firewall.vdname`*:: + -- +Virtual Domain Name + + type: keyword -- -*`rsa.time.endtime`*:: +*`fortinet.firewall.vendorurl`*:: + -- -This key is used to capture the End time mentioned in a session in a standard form +Vulnerability scan vendor name -type: date + +type: keyword -- -*`rsa.time.timezone`*:: +*`fortinet.firewall.version`*:: + -- -This key is used to capture the timezone of the Event Time +Version + type: keyword -- -*`rsa.time.duration_str`*:: +*`fortinet.firewall.vip`*:: + -- -A text string version of the duration +Virtual IP + type: keyword -- -*`rsa.time.date`*:: +*`fortinet.firewall.virus`*:: + -- -type: keyword +Virus name --- -*`rsa.time.year`*:: -+ --- type: keyword -- -*`rsa.time.recorded_time`*:: +*`fortinet.firewall.virusid`*:: + -- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. +Virus ID (unique virus identifier) -type: date + +type: integer -- -*`rsa.time.datetime`*:: +*`fortinet.firewall.voip_proto`*:: + -- +VOIP protocol + + type: keyword -- -*`rsa.time.effective_time`*:: +*`fortinet.firewall.vpn`*:: + -- -This key is the effective time referenced by an individual event in a Standard Timestamp format +VPN description -type: date + +type: keyword -- -*`rsa.time.expire_time`*:: +*`fortinet.firewall.vpntunnel`*:: + -- -This key is the timestamp that explicitly refers to an expiration. +IPsec Vpn Tunnel Name -type: date + +type: keyword -- -*`rsa.time.process_time`*:: +*`fortinet.firewall.vpntype`*:: + -- -Deprecated, use duration.time +The type of the VPN tunnel + type: keyword -- -*`rsa.time.hour`*:: +*`fortinet.firewall.vrf`*:: + -- -type: keyword +VRF number --- -*`rsa.time.min`*:: -+ --- -type: keyword +type: integer -- -*`rsa.time.timestamp`*:: +*`fortinet.firewall.vulncat`*:: + -- +Vulnerability Category + + type: keyword -- -*`rsa.time.event_queue_time`*:: +*`fortinet.firewall.vulnid`*:: + -- -This key is the Time that the event was queued. +Vulnerability ID -type: date + +type: integer -- -*`rsa.time.p_time1`*:: +*`fortinet.firewall.vulnname`*:: + -- +Vulnerability name + + type: keyword -- -*`rsa.time.tzone`*:: +*`fortinet.firewall.vwlid`*:: + -- -type: keyword +VWL ID + + +type: integer -- -*`rsa.time.eventtime`*:: +*`fortinet.firewall.vwlquality`*:: + -- +VWL quality + + type: keyword -- -*`rsa.time.gmtdate`*:: +*`fortinet.firewall.vwlservice`*:: + -- +VWL service + + type: keyword -- -*`rsa.time.gmttime`*:: +*`fortinet.firewall.vwpvlanid`*:: + -- -type: keyword +VWP VLAN ID + + +type: integer -- -*`rsa.time.p_date`*:: +*`fortinet.firewall.wanin`*:: + -- -type: keyword +WAN incoming traffic in bytes + + +type: long -- -*`rsa.time.p_month`*:: +*`fortinet.firewall.wanoptapptype`*:: + -- +WAN Optimization Application type + + type: keyword -- -*`rsa.time.p_time`*:: +*`fortinet.firewall.wanout`*:: + -- -type: keyword +WAN outgoing traffic in bytes + + +type: long -- -*`rsa.time.p_time2`*:: +*`fortinet.firewall.weakwepiv`*:: + -- +Weak Wep Initiation Vector + + type: keyword -- -*`rsa.time.p_year`*:: +*`fortinet.firewall.xauthgroup`*:: + -- +XAuth Group Name + + type: keyword -- -*`rsa.time.expire_time_str`*:: +*`fortinet.firewall.xauthuser`*:: + -- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. +XAuth User Name + type: keyword -- -*`rsa.time.stamp`*:: +*`fortinet.firewall.xid`*:: + -- -Deprecated key defined only in table map. +Wireless X ID -type: date + +type: integer -- +[[exported-fields-gcp]] +== Google Cloud Platform (GCP) fields -*`rsa.misc.action`*:: -+ --- -type: keyword +Module for handling logs from Google Cloud. --- -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. -type: keyword +[float] +=== gcp + +Fields from Google Cloud logs. --- -*`rsa.misc.severity`*:: + +[float] +=== destination.instance + +If the destination of the connection was a VM located on the same VPC, this field is populated with VM instance details. In a Shared VPC configuration, project_id corresponds to the project that owns the instance, usually the service project. + + + +*`gcp.destination.instance.project_id`*:: + -- -This key is used to capture the severity given the session +ID of the project containing the VM. + type: keyword -- -*`rsa.misc.event_type`*:: +*`gcp.destination.instance.region`*:: + -- -This key captures the event category type as specified by the event source. +Region of the VM. + type: keyword -- -*`rsa.misc.reference_id`*:: +*`gcp.destination.instance.zone`*:: + -- -This key is used to capture an event id from the session directly +Zone of the VM. + type: keyword -- -*`rsa.misc.version`*:: +[float] +=== destination.vpc + +If the destination of the connection was a VM located on the same VPC, this field is populated with VPC network details. In a Shared VPC configuration, project_id corresponds to that of the host project. + + + +*`gcp.destination.vpc.project_id`*:: + -- -This key captures Version of the application or OS which is generating the event. +ID of the project containing the VM. + type: keyword -- -*`rsa.misc.disposition`*:: +*`gcp.destination.vpc.vpc_name`*:: + -- -This key captures the The end state of an action. +VPC on which the VM is operating. + type: keyword -- -*`rsa.misc.result_code`*:: +*`gcp.destination.vpc.subnetwork_name`*:: + -- -This key is used to capture the outcome/result numeric value of an action in a session +Subnetwork on which the VM is operating. + type: keyword -- -*`rsa.misc.category`*:: +[float] +=== source.instance + +If the source of the connection was a VM located on the same VPC, this field is populated with VM instance details. In a Shared VPC configuration, project_id corresponds to the project that owns the instance, usually the service project. + + + +*`gcp.source.instance.project_id`*:: + -- -This key is used to capture the category of an event given by the vendor in the session +ID of the project containing the VM. + type: keyword -- -*`rsa.misc.obj_name`*:: +*`gcp.source.instance.region`*:: + -- -This is used to capture name of object +Region of the VM. + type: keyword -- -*`rsa.misc.obj_type`*:: +*`gcp.source.instance.zone`*:: + -- -This is used to capture type of object +Zone of the VM. + type: keyword -- -*`rsa.misc.event_source`*:: +[float] +=== source.vpc + +If the source of the connection was a VM located on the same VPC, this field is populated with VPC network details. In a Shared VPC configuration, project_id corresponds to that of the host project. + + + +*`gcp.source.vpc.project_id`*:: + -- -This key captures Source of the event that’s not a hostname +ID of the project containing the VM. + type: keyword -- -*`rsa.misc.log_session_id`*:: +*`gcp.source.vpc.vpc_name`*:: + -- -This key is used to capture a sessionid from the session directly +VPC on which the VM is operating. + type: keyword -- -*`rsa.misc.group`*:: +*`gcp.source.vpc.subnetwork_name`*:: + -- -This key captures the Group Name value +Subnetwork on which the VM is operating. + type: keyword -- -*`rsa.misc.policy_name`*:: +[float] +=== audit + +Fields for Google Cloud audit logs. + + + +*`gcp.audit.type`*:: + -- -This key is used to capture the Policy Name only. +Type property. + type: keyword -- -*`rsa.misc.rule_name`*:: +[float] +=== authentication_info + +Authentication information. + + + +*`gcp.audit.authentication_info.principal_email`*:: + -- -This key captures the Rule Name +The email address of the authenticated user making the request. + type: keyword -- -*`rsa.misc.context`*:: +*`gcp.audit.authentication_info.authority_selector`*:: + -- -This key captures Information which adds additional context to the event. +The authority selector specified by the requestor, if any. It is not guaranteed that the principal was allowed to use this authority. + type: keyword -- -*`rsa.misc.change_new`*:: +*`gcp.audit.authorization_info`*:: + -- -This key is used to capture the new values of the attribute that’s changing in a session +Authorization information for the operation. -type: keyword + +type: array -- -*`rsa.misc.space`*:: +*`gcp.audit.method_name`*:: + -- +The name of the service method or operation. For API calls, this should be the name of the API method. For example, 'google.datastore.v1.Datastore.RunQuery'. + + type: keyword -- -*`rsa.misc.client`*:: +*`gcp.audit.num_response_items`*:: + -- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. +The number of items returned from a List or Query API method, if applicable. -type: keyword + +type: long -- -*`rsa.misc.msgIdPart1`*:: +[float] +=== request + +The operation request. + + + +*`gcp.audit.request.proto_name`*:: + -- +Type property of the request. + + type: keyword -- -*`rsa.misc.msgIdPart2`*:: +*`gcp.audit.request.filter`*:: + -- +Filter of the request. + + type: keyword -- -*`rsa.misc.change_old`*:: +*`gcp.audit.request.name`*:: + -- -This key is used to capture the old value of the attribute that’s changing in a session +Name of the request. + type: keyword -- -*`rsa.misc.operation_id`*:: +*`gcp.audit.request.resource_name`*:: + -- -An alert number or operation number. The values should be unique and non-repeating. +Name of the request resource. + type: keyword -- -*`rsa.misc.event_state`*:: +[float] +=== request_metadata + +Metadata about the request. + + + +*`gcp.audit.request_metadata.caller_ip`*:: + -- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. +The IP address of the caller. -type: keyword + +type: ip -- -*`rsa.misc.group_object`*:: +*`gcp.audit.request_metadata.caller_supplied_user_agent`*:: + -- -This key captures a collection/grouping of entities. Specific usage +The user agent of the caller. This information is not authenticated and should be treated accordingly. + type: keyword -- -*`rsa.misc.node`*:: +[float] +=== response + +The operation response. + + + +*`gcp.audit.response.proto_name`*:: + -- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. +Type property of the response. + type: keyword -- -*`rsa.misc.rule`*:: +[float] +=== details + +The details of the response. + + + +*`gcp.audit.response.details.group`*:: + -- -This key captures the Rule number +The name of the group. + type: keyword -- -*`rsa.misc.device_name`*:: +*`gcp.audit.response.details.kind`*:: + -- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc +The kind of the response details. + type: keyword -- -*`rsa.misc.param`*:: +*`gcp.audit.response.details.name`*:: + -- -This key is the parameters passed as part of a command or application, etc. +The name of the response details. + type: keyword -- -*`rsa.misc.change_attrib`*:: +*`gcp.audit.response.details.uid`*:: + -- -This key is used to capture the name of the attribute that’s changing in a session +The uid of the response details. + type: keyword -- -*`rsa.misc.event_computer`*:: +*`gcp.audit.response.status`*:: + -- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. +Status of the response. + type: keyword -- -*`rsa.misc.reference_id1`*:: +*`gcp.audit.resource_name`*:: + -- -This key is for Linked ID to be used as an addition to "reference.id" +The resource or collection that is the target of the operation. The name is a scheme-less URI, not including the API service name. For example, 'shelves/SHELF_ID/books'. + type: keyword -- -*`rsa.misc.event_log`*:: +[float] +=== resource_location + +The location of the resource. + + + +*`gcp.audit.resource_location.current_locations`*:: + -- -This key captures the Name of the event log +Current locations of the resource. + type: keyword -- -*`rsa.misc.OS`*:: +*`gcp.audit.service_name`*:: + -- -This key captures the Name of the Operating System +The name of the API service performing the operation. For example, datastore.googleapis.com. + type: keyword -- -*`rsa.misc.terminal`*:: +[float] +=== status + +The status of the overall operation. + + + +*`gcp.audit.status.code`*:: + -- -This key captures the Terminal Names only +The status code, which should be an enum value of google.rpc.Code. -type: keyword + +type: integer -- -*`rsa.misc.msgIdPart3`*:: +*`gcp.audit.status.message`*:: + -- +A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client. + + type: keyword -- -*`rsa.misc.filter`*:: +[float] +=== firewall + +Fields for Google Cloud Firewall logs. + + + +[float] +=== rule_details + +Description of the firewall rule that matched this connection. + + + +*`gcp.firewall.rule_details.priority`*:: + -- -This key captures Filter used to reduce result set +The priority for the firewall rule. -type: keyword +type: long -- -*`rsa.misc.serial_number`*:: +*`gcp.firewall.rule_details.action`*:: + -- -This key is the Serial number associated with a physical asset. +Action that the rule performs on match. type: keyword -- -*`rsa.misc.checksum`*:: +*`gcp.firewall.rule_details.direction`*:: + -- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. +Direction of traffic that matches this rule. type: keyword -- -*`rsa.misc.event_user`*:: +*`gcp.firewall.rule_details.reference`*:: + -- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. +Reference to the firewall rule. type: keyword -- -*`rsa.misc.virusname`*:: +*`gcp.firewall.rule_details.source_range`*:: + -- -This key captures the name of the virus +List of source ranges that the firewall rule applies to. type: keyword -- -*`rsa.misc.content_type`*:: +*`gcp.firewall.rule_details.destination_range`*:: + -- -This key is used to capture Content Type only. +List of destination ranges that the firewall applies to. type: keyword -- -*`rsa.misc.group_id`*:: +*`gcp.firewall.rule_details.source_tag`*:: + -- -This key captures Group ID Number (related to the group name) +List of all the source tags that the firewall rule applies to. + type: keyword -- -*`rsa.misc.policy_id`*:: +*`gcp.firewall.rule_details.target_tag`*:: + -- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise +List of all the target tags that the firewall rule applies to. + type: keyword -- -*`rsa.misc.vsys`*:: +*`gcp.firewall.rule_details.ip_port_info`*:: + -- -This key captures Virtual System Name +List of ip protocols and applicable port ranges for rules. -type: keyword + +type: array -- -*`rsa.misc.connection_id`*:: +*`gcp.firewall.rule_details.source_service_account`*:: + -- -This key captures the Connection ID +List of all the source service accounts that the firewall rule applies to. + type: keyword -- -*`rsa.misc.reference_id2`*:: +*`gcp.firewall.rule_details.target_service_account`*:: + -- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. +List of all the target service accounts that the firewall rule applies to. + type: keyword -- -*`rsa.misc.sensor`*:: +[float] +=== vpcflow + +Fields for Google Cloud VPC flow logs. + + + +*`gcp.vpcflow.reporter`*:: + -- -This key captures Name of the sensor. Typically used in IDS/IPS based devices +The side which reported the flow. Can be either 'SRC' or 'DEST'. + type: keyword -- -*`rsa.misc.sig_id`*:: +*`gcp.vpcflow.rtt.ms`*:: + -- -This key captures IDS/IPS Int Signature ID +Latency as measured (for TCP flows only) during the time interval. This is the time elapsed between sending a SEQ and receiving a corresponding ACK and it contains the network RTT as well as the application related delay. + type: long -- -*`rsa.misc.port_name`*:: +[[exported-fields-google_workspace]] +== google_workspace fields + +Google Workspace Module + + + +[float] +=== google_workspace + +Google Workspace specific fields. +More information about specific fields can be found at https://developers.google.com/admin-sdk/reports/v1/reference/activities/list + + + +*`google_workspace.actor.type`*:: + -- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). +The type of actor. +Values can be: + *USER*: Another user in the same domain. + *EXTERNAL_USER*: A user outside the domain. + *KEY*: A non-human actor. + type: keyword -- -*`rsa.misc.rule_group`*:: +*`google_workspace.actor.key`*:: + -- -This key captures the Rule group name +Only present when `actor.type` is `KEY`. Can be the `consumer_key` of the requestor for OAuth 2LO API requests or an identifier for robot accounts. + type: keyword -- -*`rsa.misc.risk_num`*:: +*`google_workspace.event.type`*:: + -- -This key captures a Numeric Risk value +The type of Google Workspace event, mapped from `items[].events[].type` in the original payload. Each fileset can have a different set of values for it, more details can be found at https://developers.google.com/admin-sdk/reports/v1/reference/activities/list -type: double + +type: keyword + +example: audit#activity -- -*`rsa.misc.trigger_val`*:: +*`google_workspace.kind`*:: + -- -This key captures the Value of the trigger or threshold condition. +The type of API resource, mapped from `kind` in the original payload. More details can be found at https://developers.google.com/admin-sdk/reports/v1/reference/activities/list + type: keyword +example: audit#activity + -- -*`rsa.misc.log_session_id1`*:: +*`google_workspace.organization.domain`*:: + -- -This key is used to capture a Linked (Related) Session ID from the session directly +The domain that is affected by the report's event. + type: keyword -- -*`rsa.misc.comp_version`*:: + +*`google_workspace.admin.application.edition`*:: + -- -This key captures the Version level of a sub-component of a product. +The Google Workspace edition. type: keyword -- -*`rsa.misc.content_version`*:: +*`google_workspace.admin.application.name`*:: + -- -This key captures Version level of a signature or database content. +The application's name. type: keyword -- -*`rsa.misc.hardware_id`*:: +*`google_workspace.admin.application.enabled`*:: + -- -This key is used to capture unique identifier for a device or system (NOT a Mac address) +The enabled application. type: keyword -- -*`rsa.misc.risk`*:: +*`google_workspace.admin.application.licences_order_number`*:: + -- -This key captures the non-numeric risk value +Order number used to redeem licenses. type: keyword -- -*`rsa.misc.event_id`*:: +*`google_workspace.admin.application.licences_purchased`*:: + -- +Number of licences purchased. + type: keyword -- -*`rsa.misc.reason`*:: +*`google_workspace.admin.application.id`*:: + -- +The application ID. + type: keyword -- -*`rsa.misc.status`*:: +*`google_workspace.admin.application.asp_id`*:: + -- +The application specific password ID. + type: keyword -- -*`rsa.misc.mail_id`*:: +*`google_workspace.admin.application.package_id`*:: + -- -This key is used to capture the mailbox id/name +The mobile application package ID. type: keyword -- -*`rsa.misc.rule_uid`*:: +*`google_workspace.admin.group.email`*:: + -- -This key is the Unique Identifier for a rule. +The group's primary email address. type: keyword -- -*`rsa.misc.trigger_desc`*:: +*`google_workspace.admin.new_value`*:: + -- -This key captures the Description of the trigger or threshold condition. +The new value for the setting. type: keyword -- -*`rsa.misc.inout`*:: +*`google_workspace.admin.old_value`*:: + -- +The old value for the setting. + type: keyword -- -*`rsa.misc.p_msgid`*:: +*`google_workspace.admin.org_unit.name`*:: + -- +The organizational unit name. + type: keyword -- -*`rsa.misc.data_type`*:: +*`google_workspace.admin.org_unit.full`*:: + -- +The org unit full path including the root org unit name. + type: keyword -- -*`rsa.misc.msgIdPart4`*:: +*`google_workspace.admin.setting.name`*:: + -- +The setting name. + type: keyword -- -*`rsa.misc.error`*:: +*`google_workspace.admin.user_defined_setting.name`*:: + -- -This key captures All non successful Error codes or responses +The name of the user-defined setting. type: keyword -- -*`rsa.misc.index`*:: +*`google_workspace.admin.setting.description`*:: + -- +The setting name. + type: keyword -- -*`rsa.misc.listnum`*:: +*`google_workspace.admin.group.priorities`*:: + -- -This key is used to capture listname or listnumber, primarily for collecting access-list +Group priorities. type: keyword -- -*`rsa.misc.ntype`*:: +*`google_workspace.admin.domain.alias`*:: + -- +The domain alias. + type: keyword -- -*`rsa.misc.observed_val`*:: +*`google_workspace.admin.domain.name`*:: + -- -This key captures the Value observed (from the perspective of the device generating the log). +The primary domain name. type: keyword -- -*`rsa.misc.policy_value`*:: +*`google_workspace.admin.domain.secondary_name`*:: + -- -This key captures the contents of the policy. This contains details about the policy +The secondary domain name. type: keyword -- -*`rsa.misc.pool_name`*:: +*`google_workspace.admin.managed_configuration`*:: + -- -This key captures the name of a resource pool +The name of the managed configuration. type: keyword -- -*`rsa.misc.rule_template`*:: +*`google_workspace.admin.non_featured_services_selection`*:: + -- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword +Non-featured services selection. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-application-settings#FLASHLIGHT_EDU_NON_FEATURED_SERVICES_SELECTED --- -*`rsa.misc.count`*:: -+ --- type: keyword -- -*`rsa.misc.number`*:: +*`google_workspace.admin.field`*:: + -- -type: keyword - --- +The name of the field. -*`rsa.misc.sigcat`*:: -+ --- type: keyword -- -*`rsa.misc.type`*:: +*`google_workspace.admin.resource.id`*:: + -- +The name of the resource identifier. + type: keyword -- -*`rsa.misc.comments`*:: +*`google_workspace.admin.user.email`*:: + -- -Comment information provided in the log message +The user's primary email address. type: keyword -- -*`rsa.misc.doc_number`*:: +*`google_workspace.admin.user.nickname`*:: + -- -This key captures File Identification number +The user's nickname. -type: long +type: keyword -- -*`rsa.misc.expected_val`*:: +*`google_workspace.admin.user.birthdate`*:: + -- -This key captures the Value expected (from the perspective of the device generating the log). +The user's birth date. -type: keyword +type: date -- -*`rsa.misc.job_num`*:: +*`google_workspace.admin.gateway.name`*:: + -- -This key captures the Job Number +Gateway name. Present on some chat settings. type: keyword -- -*`rsa.misc.spi_dst`*:: +*`google_workspace.admin.chrome_os.session_type`*:: + -- -Destination SPI Index +Chrome OS session type. type: keyword -- -*`rsa.misc.spi_src`*:: +*`google_workspace.admin.device.serial_number`*:: + -- -Source SPI Index +Device serial number. type: keyword -- -*`rsa.misc.code`*:: +*`google_workspace.admin.device.id`*:: + -- type: keyword -- -*`rsa.misc.agent_id`*:: +*`google_workspace.admin.device.type`*:: + -- -This key is used to capture agent id +Device type. type: keyword -- -*`rsa.misc.message_body`*:: +*`google_workspace.admin.print_server.name`*:: + -- -This key captures the The contents of the message body. +The name of the print server. type: keyword -- -*`rsa.misc.phone`*:: +*`google_workspace.admin.printer.name`*:: + -- +The name of the printer. + type: keyword -- -*`rsa.misc.sig_id_str`*:: +*`google_workspace.admin.device.command_details`*:: + -- -This key captures a string object of the sigid variable. +Command details. type: keyword -- -*`rsa.misc.cmd`*:: +*`google_workspace.admin.role.id`*:: + -- +Unique identifier for this role privilege. + type: keyword -- -*`rsa.misc.misc`*:: +*`google_workspace.admin.role.name`*:: + -- -type: keyword +The role name. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-delegated-admin-settings --- -*`rsa.misc.name`*:: -+ --- type: keyword -- -*`rsa.misc.cpu`*:: +*`google_workspace.admin.privilege.name`*:: + -- -This key is the CPU time used in the execution of the event being recorded. +Privilege name. -type: long +type: keyword -- -*`rsa.misc.event_desc`*:: +*`google_workspace.admin.service.name`*:: + -- -This key is used to capture a description of an event available directly or inferred +The service name. type: keyword -- -*`rsa.misc.sig_id1`*:: +*`google_workspace.admin.url.name`*:: + -- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- +The website name. -*`rsa.misc.im_buddyid`*:: -+ --- type: keyword -- -*`rsa.misc.im_client`*:: +*`google_workspace.admin.product.name`*:: + -- +The product name. + type: keyword -- -*`rsa.misc.im_userid`*:: +*`google_workspace.admin.product.sku`*:: + -- +The product SKU. + type: keyword -- -*`rsa.misc.pid`*:: +*`google_workspace.admin.bulk_upload.failed`*:: + -- -type: keyword +Number of failed records in bulk upload operation. + +type: long -- -*`rsa.misc.priority`*:: +*`google_workspace.admin.bulk_upload.total`*:: + -- -type: keyword +Number of total records in bulk upload operation. + +type: long -- -*`rsa.misc.context_subject`*:: +*`google_workspace.admin.group.allowed_list`*:: + -- -This key is to be used in an audit context where the subject is the object being identified +Names of allow-listed groups. type: keyword -- -*`rsa.misc.context_target`*:: +*`google_workspace.admin.email.quarantine_name`*:: + -- +The name of the quarantine. + type: keyword -- -*`rsa.misc.cve`*:: +*`google_workspace.admin.email.log_search_filter.message_id`*:: + -- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. +The log search filter's email message ID. type: keyword -- -*`rsa.misc.fcatnum`*:: +*`google_workspace.admin.email.log_search_filter.start_date`*:: + -- -This key captures Filter Category Number. Legacy Usage +The log search filter's start date. -type: keyword +type: date -- -*`rsa.misc.library`*:: +*`google_workspace.admin.email.log_search_filter.end_date`*:: + -- -This key is used to capture library information in mainframe devices +The log search filter's ending date. -type: keyword +type: date -- -*`rsa.misc.parent_node`*:: +*`google_workspace.admin.email.log_search_filter.recipient.value`*:: + -- -This key captures the Parent Node Name. Must be related to node variable. +The log search filter's email recipient. type: keyword -- -*`rsa.misc.risk_info`*:: +*`google_workspace.admin.email.log_search_filter.sender.value`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The log search filter's email sender. type: keyword -- -*`rsa.misc.tcp_flags`*:: +*`google_workspace.admin.email.log_search_filter.recipient.ip`*:: + -- -This key is captures the TCP flags set in any packet of session +The log search filter's email recipient's IP address. -type: long +type: ip -- -*`rsa.misc.tos`*:: +*`google_workspace.admin.email.log_search_filter.sender.ip`*:: + -- -This key describes the type of service +The log search filter's email sender's IP address. -type: long +type: ip -- -*`rsa.misc.vm_target`*:: +*`google_workspace.admin.chrome_licenses.enabled`*:: + -- -VMWare Target **VMWARE** only varaible. +Licences enabled. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-org-settings + type: keyword -- -*`rsa.misc.workspace`*:: +*`google_workspace.admin.chrome_licenses.allowed`*:: + -- -This key captures Workspace Description +Licences enabled. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-org-settings + type: keyword -- -*`rsa.misc.command`*:: +*`google_workspace.admin.oauth2.service.name`*:: + -- -type: keyword +OAuth2 service name. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-security-settings --- -*`rsa.misc.event_category`*:: -+ --- type: keyword -- -*`rsa.misc.facilityname`*:: +*`google_workspace.admin.oauth2.application.id`*:: + -- +OAuth2 application ID. + type: keyword -- -*`rsa.misc.forensic_info`*:: +*`google_workspace.admin.oauth2.application.name`*:: + -- +OAuth2 application name. + type: keyword -- -*`rsa.misc.jobname`*:: +*`google_workspace.admin.oauth2.application.type`*:: + -- -type: keyword +OAuth2 application type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-security-settings --- -*`rsa.misc.mode`*:: -+ --- type: keyword -- -*`rsa.misc.policy`*:: +*`google_workspace.admin.verification_method`*:: + -- -type: keyword +Related verification method. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-security-settings and https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-domain-settings --- -*`rsa.misc.policy_waiver`*:: -+ --- type: keyword -- -*`rsa.misc.second`*:: +*`google_workspace.admin.alert.name`*:: + -- +The alert name. + type: keyword -- -*`rsa.misc.space1`*:: +*`google_workspace.admin.rule.name`*:: + -- +The rule name. + type: keyword -- -*`rsa.misc.subcategory`*:: +*`google_workspace.admin.api.client.name`*:: + -- +The API client name. + type: keyword -- -*`rsa.misc.tbdstr2`*:: +*`google_workspace.admin.api.scopes`*:: + -- +The API scopes. + type: keyword -- -*`rsa.misc.alert_id`*:: +*`google_workspace.admin.mdm.token`*:: + -- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The MDM vendor enrollment token. type: keyword -- -*`rsa.misc.checksum_dst`*:: +*`google_workspace.admin.mdm.vendor`*:: + -- -This key is used to capture the checksum or hash of the the target entity such as a process or file. +The MDM vendor's name. type: keyword -- -*`rsa.misc.checksum_src`*:: +*`google_workspace.admin.info_type`*:: + -- -This key is used to capture the checksum or hash of the source entity such as a file or process. +This will be used to state what kind of information was changed. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-domain-settings + type: keyword -- -*`rsa.misc.fresult`*:: +*`google_workspace.admin.email_monitor.dest_email`*:: + -- -This key captures the Filter Result +The destination address of the email monitor. -type: long +type: keyword -- -*`rsa.misc.payload_dst`*:: +*`google_workspace.admin.email_monitor.level.chat`*:: + -- -This key is used to capture destination payload +The chat email monitor level. type: keyword -- -*`rsa.misc.payload_src`*:: +*`google_workspace.admin.email_monitor.level.draft`*:: + -- -This key is used to capture source payload +The draft email monitor level. type: keyword -- -*`rsa.misc.pool_id`*:: +*`google_workspace.admin.email_monitor.level.incoming`*:: + -- -This key captures the identifier (typically numeric field) of a resource pool +The incoming email monitor level. type: keyword -- -*`rsa.misc.process_id_val`*:: +*`google_workspace.admin.email_monitor.level.outgoing`*:: + -- -This key is a failure key for Process ID when it is not an integer value +The outgoing email monitor level. type: keyword -- -*`rsa.misc.risk_num_comm`*:: +*`google_workspace.admin.email_dump.include_deleted`*:: + -- -This key captures Risk Number Community +Indicates if deleted emails are included in the export. -type: double +type: boolean -- -*`rsa.misc.risk_num_next`*:: +*`google_workspace.admin.email_dump.package_content`*:: + -- -This key captures Risk Number NextGen +The contents of the mailbox package. -type: double +type: keyword -- -*`rsa.misc.risk_num_sand`*:: +*`google_workspace.admin.email_dump.query`*:: + -- -This key captures Risk Number SandBox +The search query used for the dump. -type: double +type: keyword -- -*`rsa.misc.risk_num_static`*:: +*`google_workspace.admin.request.id`*:: + -- -This key captures Risk Number Static +The request ID. -type: double +type: keyword -- -*`rsa.misc.risk_suspicious`*:: +*`google_workspace.admin.mobile.action.id`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The mobile device action's ID. type: keyword -- -*`rsa.misc.risk_warning`*:: +*`google_workspace.admin.mobile.action.type`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The mobile device action's type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-mobile-settings + type: keyword -- -*`rsa.misc.snmp_oid`*:: +*`google_workspace.admin.mobile.certificate.name`*:: + -- -SNMP Object Identifier +The mobile certificate common name. type: keyword -- -*`rsa.misc.sql`*:: +*`google_workspace.admin.mobile.company_owned_devices`*:: + -- -This key captures the SQL query +The number of devices a company owns. -type: keyword +type: long -- -*`rsa.misc.vuln_ref`*:: +*`google_workspace.admin.distribution.entity.name`*:: + -- -This key captures the Vulnerability Reference details +The distribution entity value, which can be a group name or an org-unit name. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-mobile-settings + type: keyword -- -*`rsa.misc.acl_id`*:: +*`google_workspace.admin.distribution.entity.type`*:: + -- -type: keyword +The distribution entity type, which can be a group or an org-unit. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-mobile-settings --- -*`rsa.misc.acl_op`*:: -+ --- type: keyword -- -*`rsa.misc.acl_pos`*:: + +*`google_workspace.drive.billable`*:: + -- -type: keyword +Whether this activity is billable. + +type: boolean -- -*`rsa.misc.acl_table`*:: +*`google_workspace.drive.source_folder_id`*:: + -- type: keyword -- -*`rsa.misc.admin`*:: +*`google_workspace.drive.source_folder_title`*:: + -- type: keyword -- -*`rsa.misc.alarm_id`*:: +*`google_workspace.drive.destination_folder_id`*:: + -- type: keyword -- -*`rsa.misc.alarmname`*:: +*`google_workspace.drive.destination_folder_title`*:: + -- type: keyword -- -*`rsa.misc.app_id`*:: +*`google_workspace.drive.file.id`*:: + -- type: keyword -- -*`rsa.misc.audit`*:: +*`google_workspace.drive.file.type`*:: + -- -type: keyword +Document Drive type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive --- -*`rsa.misc.audit_object`*:: -+ --- type: keyword -- -*`rsa.misc.auditdata`*:: +*`google_workspace.drive.originating_app_id`*:: + -- -type: keyword +The Google Cloud Project ID of the application that performed the action. --- -*`rsa.misc.benchmark`*:: -+ --- type: keyword -- -*`rsa.misc.bypass`*:: +*`google_workspace.drive.file.owner.email`*:: + -- type: keyword -- -*`rsa.misc.cache`*:: +*`google_workspace.drive.file.owner.is_shared_drive`*:: + -- -type: keyword +Boolean flag denoting whether owner is a shared drive. --- -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cefversion`*:: +*`google_workspace.drive.primary_event`*:: + -- -type: keyword +Whether this is a primary event. A single user action in Drive may generate several events. --- -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cfg_obj`*:: +*`google_workspace.drive.shared_drive_id`*:: + -- -type: keyword +The unique identifier of the Team Drive. Only populated for for events relating to a Team Drive or item contained inside a Team Drive. --- -*`rsa.misc.cfg_path`*:: -+ --- type: keyword -- -*`rsa.misc.changes`*:: +*`google_workspace.drive.visibility`*:: + -- -type: keyword +Visibility of target file. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive --- -*`rsa.misc.client_ip`*:: -+ --- type: keyword -- -*`rsa.misc.clustermembers`*:: +*`google_workspace.drive.new_value`*:: + -- -type: keyword +When a setting or property of the file changes, the new value for it will appear here. --- -*`rsa.misc.cn_acttimeout`*:: -+ --- type: keyword -- -*`rsa.misc.cn_asn_src`*:: +*`google_workspace.drive.old_value`*:: + -- -type: keyword +When a setting or property of the file changes, the old value for it will appear here. --- -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- type: keyword -- -*`rsa.misc.cn_ctr_dst_code`*:: +*`google_workspace.drive.sheets_import_range_recipient_doc`*:: + -- +Doc ID of the recipient of a sheets import range. + type: keyword -- -*`rsa.misc.cn_dst_tos`*:: +*`google_workspace.drive.old_visibility`*:: + -- -type: keyword +When visibility changes, this holds the old value. --- -*`rsa.misc.cn_dst_vlan`*:: -+ --- type: keyword -- -*`rsa.misc.cn_engine_id`*:: +*`google_workspace.drive.visibility_change`*:: + -- -type: keyword +When visibility changes, this holds the new overall visibility of the file. --- -*`rsa.misc.cn_engine_type`*:: -+ --- type: keyword -- -*`rsa.misc.cn_f_switch`*:: +*`google_workspace.drive.target_domain`*:: + -- -type: keyword +The domain for which the acccess scope was changed. This can also be the alias all to indicate the access scope was changed for all domains that have visibility for this document. --- -*`rsa.misc.cn_flowsampid`*:: -+ --- type: keyword -- -*`rsa.misc.cn_flowsampintv`*:: +*`google_workspace.drive.added_role`*:: + -- -type: keyword +Added membership role of a user/group in a Team Drive. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive --- -*`rsa.misc.cn_flowsampmode`*:: -+ --- type: keyword -- -*`rsa.misc.cn_inacttimeout`*:: +*`google_workspace.drive.membership_change_type`*:: + -- -type: keyword +Type of change in Team Drive membership of a user/group. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive --- -*`rsa.misc.cn_inpermbyts`*:: -+ --- type: keyword -- -*`rsa.misc.cn_inpermpckts`*:: +*`google_workspace.drive.shared_drive_settings_change_type`*:: + -- -type: keyword +Type of change in Team Drive settings. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive --- -*`rsa.misc.cn_invalid`*:: -+ --- type: keyword -- -*`rsa.misc.cn_ip_proto_ver`*:: +*`google_workspace.drive.removed_role`*:: + -- -type: keyword +Removed membership role of a user/group in a Team Drive. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive --- -*`rsa.misc.cn_ipv4_ident`*:: -+ --- type: keyword -- -*`rsa.misc.cn_l_switch`*:: +*`google_workspace.drive.target`*:: + -- +Target user or group. + type: keyword -- -*`rsa.misc.cn_log_did`*:: + +*`google_workspace.groups.acl_permission`*:: + -- -type: keyword +Group permission setting updated. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups --- -*`rsa.misc.cn_log_rid`*:: -+ --- type: keyword -- -*`rsa.misc.cn_max_ttl`*:: +*`google_workspace.groups.email`*:: + -- -type: keyword +Group email. --- -*`rsa.misc.cn_maxpcktlen`*:: -+ --- type: keyword -- -*`rsa.misc.cn_min_ttl`*:: +*`google_workspace.groups.member.email`*:: + -- -type: keyword +Member email. --- -*`rsa.misc.cn_minpcktlen`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_1`*:: +*`google_workspace.groups.member.role`*:: + -- -type: keyword +Member role. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups --- -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_2`*:: +*`google_workspace.groups.setting`*:: + -- -type: keyword +Group setting updated. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups --- -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_4`*:: +*`google_workspace.groups.new_value`*:: + -- -type: keyword +New value(s) of the group setting. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups --- -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_6`*:: +*`google_workspace.groups.old_value`*:: + -- +Old value(s) of the group setting. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups + type: keyword -- -*`rsa.misc.cn_mpls_lbl_7`*:: +*`google_workspace.groups.value`*:: + -- -type: keyword +Value of the group setting. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups --- -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_9`*:: +*`google_workspace.groups.message.id`*:: + -- -type: keyword +SMTP message Id of an email message. Present for moderation events. --- -*`rsa.misc.cn_mplstoplabel`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mplstoplabip`*:: +*`google_workspace.groups.message.moderation_action`*:: + -- -type: keyword +Message moderation action. Possible values are `approved` and `rejected`. --- -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mul_dst_pks`*:: +*`google_workspace.groups.status`*:: + -- -type: keyword +A status describing the output of an operation. Possible values are `failed` and `succeeded`. --- -*`rsa.misc.cn_muligmptype`*:: -+ --- type: keyword -- -*`rsa.misc.cn_sampalgo`*:: + +*`google_workspace.login.affected_email_address`*:: + -- type: keyword -- -*`rsa.misc.cn_sampint`*:: +*`google_workspace.login.challenge_method`*:: + -- -type: keyword +Login challenge method. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/login. --- -*`rsa.misc.cn_seqctr`*:: -+ --- type: keyword -- -*`rsa.misc.cn_spackets`*:: +*`google_workspace.login.failure_type`*:: + -- -type: keyword +Login failure type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/login. --- -*`rsa.misc.cn_src_tos`*:: -+ --- type: keyword -- -*`rsa.misc.cn_src_vlan`*:: +*`google_workspace.login.type`*:: + -- -type: keyword +Login credentials type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/login. --- -*`rsa.misc.cn_sysuptime`*:: -+ --- type: keyword -- -*`rsa.misc.cn_template_id`*:: +*`google_workspace.login.is_second_factor`*:: + -- -type: keyword +type: boolean -- -*`rsa.misc.cn_totbytsexp`*:: +*`google_workspace.login.is_suspicious`*:: + -- -type: keyword +type: boolean -- -*`rsa.misc.cn_totflowexp`*:: + +*`google_workspace.saml.application_name`*:: + -- -type: keyword +Saml SP application name. --- -*`rsa.misc.cn_totpcktsexp`*:: -+ --- type: keyword -- -*`rsa.misc.cn_unixnanosecs`*:: +*`google_workspace.saml.failure_type`*:: + -- -type: keyword +Login failure type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/saml. --- -*`rsa.misc.cn_v6flowlabel`*:: -+ --- type: keyword -- -*`rsa.misc.cn_v6optheaders`*:: +*`google_workspace.saml.initiated_by`*:: + -- +Requester of SAML authentication. + + type: keyword -- -*`rsa.misc.comp_class`*:: +*`google_workspace.saml.orgunit_path`*:: + -- +User orgunit. + + type: keyword -- -*`rsa.misc.comp_name`*:: +*`google_workspace.saml.status_code`*:: + -- +SAML status code. + + type: keyword -- -*`rsa.misc.comp_rbytes`*:: +*`google_workspace.saml.second_level_status_code`*:: + -- +SAML second level status code. + + type: keyword -- -*`rsa.misc.comp_sbytes`*:: +[[exported-fields-haproxy]] +== HAProxy fields + +haproxy Module + + + +[float] +=== haproxy + + + + +*`haproxy.frontend_name`*:: + -- -type: keyword +Name of the frontend (or listener) which received and processed the connection. -- -*`rsa.misc.cpu_data`*:: +*`haproxy.backend_name`*:: + -- -type: keyword +Name of the backend (or listener) which was selected to manage the connection to the server. -- -*`rsa.misc.criticality`*:: +*`haproxy.server_name`*:: + -- -type: keyword +Name of the last server to which the connection was sent. -- -*`rsa.misc.cs_agency_dst`*:: +*`haproxy.total_waiting_time_ms`*:: + -- -type: keyword +Total time in milliseconds spent waiting in the various queues + +type: long -- -*`rsa.misc.cs_analyzedby`*:: +*`haproxy.connection_wait_time_ms`*:: + -- -type: keyword +Total time in milliseconds spent waiting for the connection to establish to the final server + +type: long -- -*`rsa.misc.cs_av_other`*:: +*`haproxy.bytes_read`*:: + -- -type: keyword +Total number of bytes transmitted to the client when the log is emitted. + +type: long -- -*`rsa.misc.cs_av_primary`*:: +*`haproxy.time_queue`*:: + -- -type: keyword +Total time in milliseconds spent waiting in the various queues. + +type: long -- -*`rsa.misc.cs_av_secondary`*:: +*`haproxy.time_backend_connect`*:: + -- -type: keyword +Total time in milliseconds spent waiting for the connection to establish to the final server, including retries. + +type: long -- -*`rsa.misc.cs_bgpv6nxthop`*:: +*`haproxy.server_queue`*:: + -- -type: keyword +Total number of requests which were processed before this one in the server queue. + +type: long -- -*`rsa.misc.cs_bit9status`*:: +*`haproxy.backend_queue`*:: + -- -type: keyword +Total number of requests which were processed before this one in the backend's global queue. + +type: long -- -*`rsa.misc.cs_context`*:: +*`haproxy.bind_name`*:: + -- -type: keyword +Name of the listening address which received the connection. -- -*`rsa.misc.cs_control`*:: +*`haproxy.error_message`*:: + -- -type: keyword +Error message logged by HAProxy in case of error. + +type: text -- -*`rsa.misc.cs_data`*:: +*`haproxy.source`*:: + -- +The HAProxy source of the log + type: keyword -- -*`rsa.misc.cs_datecret`*:: +*`haproxy.termination_state`*:: + -- -type: keyword +Condition the session was in when the session ended. -- -*`rsa.misc.cs_dst_tld`*:: +*`haproxy.mode`*:: + -- +mode that the frontend is operating (TCP or HTTP) + type: keyword -- -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword +[float] +=== connections --- +Contains various counts of connections active in the process. -*`rsa.misc.cs_eth_src_ven`*:: + +*`haproxy.connections.active`*:: + -- -type: keyword +Total number of concurrent connections on the process when the session was logged. + +type: long -- -*`rsa.misc.cs_event_uuid`*:: +*`haproxy.connections.frontend`*:: + -- -type: keyword +Total number of concurrent connections on the frontend when the session was logged. + +type: long -- -*`rsa.misc.cs_filetype`*:: +*`haproxy.connections.backend`*:: + -- -type: keyword +Total number of concurrent connections handled by the backend when the session was logged. + +type: long -- -*`rsa.misc.cs_fld`*:: +*`haproxy.connections.server`*:: + -- -type: keyword +Total number of concurrent connections still active on the server when the session was logged. + +type: long -- -*`rsa.misc.cs_if_desc`*:: +*`haproxy.connections.retries`*:: + -- -type: keyword +Number of connection retries experienced by this session when trying to connect to the server. --- +type: long -*`rsa.misc.cs_if_name`*:: -+ -- -type: keyword --- +[float] +=== client -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword +Information about the client doing the request --- -*`rsa.misc.cs_ipv4dstpre`*:: +*`haproxy.client.ip`*:: + -- -type: keyword +type: alias + +alias to: source.address -- -*`rsa.misc.cs_ipv4srcpre`*:: +*`haproxy.client.port`*:: + -- -type: keyword +type: alias + +alias to: source.port -- -*`rsa.misc.cs_lifetime`*:: +*`haproxy.process_name`*:: + -- -type: keyword +type: alias + +alias to: process.name -- -*`rsa.misc.cs_log_medium`*:: +*`haproxy.pid`*:: + -- -type: keyword +type: alias --- +alias to: process.pid -*`rsa.misc.cs_loginname`*:: -+ -- -type: keyword --- +[float] +=== destination -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword +Destination information --- -*`rsa.misc.cs_modulesign`*:: +*`haproxy.destination.port`*:: + -- -type: keyword +type: alias + +alias to: destination.port -- -*`rsa.misc.cs_opswatresult`*:: +*`haproxy.destination.ip`*:: + -- -type: keyword +type: alias --- +alias to: destination.ip -*`rsa.misc.cs_payload`*:: -+ -- -type: keyword --- +[float] +=== geoip -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword +Contains GeoIP information gathered based on the client.ip field. Only present if the GeoIP Elasticsearch plugin is available and used. --- -*`rsa.misc.cs_registrar`*:: + +*`haproxy.geoip.continent_name`*:: + -- -type: keyword +type: alias + +alias to: source.geo.continent_name -- -*`rsa.misc.cs_represult`*:: +*`haproxy.geoip.country_iso_code`*:: + -- -type: keyword +type: alias + +alias to: source.geo.country_iso_code -- -*`rsa.misc.cs_rpayload`*:: +*`haproxy.geoip.location`*:: + -- -type: keyword +type: alias + +alias to: source.geo.location -- -*`rsa.misc.cs_sampler_name`*:: +*`haproxy.geoip.region_name`*:: + -- -type: keyword +type: alias + +alias to: source.geo.region_name -- -*`rsa.misc.cs_sourcemodule`*:: +*`haproxy.geoip.city_name`*:: + -- -type: keyword +type: alias + +alias to: source.geo.city_name -- -*`rsa.misc.cs_streams`*:: +*`haproxy.geoip.region_iso_code`*:: + -- -type: keyword +type: alias --- +alias to: source.geo.region_iso_code -*`rsa.misc.cs_targetmodule`*:: -+ -- -type: keyword --- +[float] +=== http -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword +Please add description --- -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword +[float] +=== response --- +Fields related to the HTTP response -*`rsa.misc.cs_yararesult`*:: + +*`haproxy.http.response.captured_cookie`*:: + -- -type: keyword +Optional "name=value" entry indicating that the client had this cookie in the response. + -- -*`rsa.misc.description`*:: +*`haproxy.http.response.captured_headers`*:: + -- -type: keyword +List of headers captured in the response due to the presence of the "capture response header" statement in the frontend. --- -*`rsa.misc.devvendor`*:: -+ --- type: keyword -- -*`rsa.misc.distance`*:: +*`haproxy.http.response.status_code`*:: + -- -type: keyword +type: alias --- +alias to: http.response.status_code -*`rsa.misc.dstburb`*:: -+ -- -type: keyword --- +[float] +=== request -*`rsa.misc.edomain`*:: -+ --- -type: keyword +Fields related to the HTTP request --- -*`rsa.misc.edomaub`*:: +*`haproxy.http.request.captured_cookie`*:: + -- -type: keyword +Optional "name=value" entry indicating that the server has returned a cookie with its request. + -- -*`rsa.misc.euid`*:: +*`haproxy.http.request.captured_headers`*:: + -- -type: keyword +List of headers captured in the request due to the presence of the "capture request header" statement in the frontend. --- -*`rsa.misc.facility`*:: -+ --- type: keyword -- -*`rsa.misc.finterface`*:: +*`haproxy.http.request.raw_request_line`*:: + -- +Complete HTTP request line, including the method, request and HTTP version string. + type: keyword -- -*`rsa.misc.flags`*:: +*`haproxy.http.request.time_wait_without_data_ms`*:: + -- -type: keyword +Total time in milliseconds spent waiting for the server to send a full HTTP response, not counting data. + +type: long -- -*`rsa.misc.gaddr`*:: +*`haproxy.http.request.time_wait_ms`*:: + -- -type: keyword +Total time in milliseconds spent waiting for a full HTTP request from the client (not counting body) after the first byte was received. --- +type: long -*`rsa.misc.id3`*:: -+ -- -type: keyword --- +[float] +=== tcp -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword +TCP log format --- -*`rsa.misc.im_croomid`*:: +*`haproxy.tcp.connection_waiting_time_ms`*:: + -- -type: keyword +Total time in milliseconds elapsed between the accept and the last close --- +type: long -*`rsa.misc.im_croomtype`*:: -+ -- -type: keyword --- +[[exported-fields-host-processor]] +== Host fields -*`rsa.misc.im_members`*:: -+ --- -type: keyword +Info collected for the host machine. --- -*`rsa.misc.im_username`*:: -+ --- -type: keyword --- -*`rsa.misc.ipkt`*:: +*`host.containerized`*:: + -- -type: keyword +If the host is a container. --- -*`rsa.misc.ipscat`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.ipspri`*:: +*`host.os.build`*:: + -- -type: keyword +OS build information. --- -*`rsa.misc.latitude`*:: -+ --- type: keyword +example: 18D109 + -- -*`rsa.misc.linenum`*:: +*`host.os.codename`*:: + -- -type: keyword +OS codename, if any. --- -*`rsa.misc.list_name`*:: -+ --- type: keyword --- +example: stretch -*`rsa.misc.load_data`*:: -+ -- -type: keyword --- +[[exported-fields-ibmmq]] +== ibmmq fields -*`rsa.misc.location_floor`*:: -+ --- -type: keyword +ibmmq Module --- -*`rsa.misc.location_mark`*:: -+ --- -type: keyword --- +[float] +=== ibmmq -*`rsa.misc.log_id`*:: -+ --- -type: keyword --- -*`rsa.misc.log_type`*:: -+ --- -type: keyword --- +[float] +=== errorlog -*`rsa.misc.logid`*:: -+ --- -type: keyword +IBM MQ error logs --- -*`rsa.misc.logip`*:: +*`ibmmq.errorlog.installation`*:: + -- -type: keyword +This is the installation name which can be given at installation time. +Each installation of IBM MQ on UNIX, Linux, and Windows, has a unique identifier known as an installation name. The installation name is used to associate things such as queue managers and configuration files with an installation. --- -*`rsa.misc.logname`*:: -+ --- type: keyword -- -*`rsa.misc.longitude`*:: +*`ibmmq.errorlog.qmgr`*:: + -- -type: keyword +Name of the queue manager. Queue managers provide queuing services to applications, and manages the queues that belong to them. --- -*`rsa.misc.lport`*:: -+ --- type: keyword -- -*`rsa.misc.mbug_data`*:: +*`ibmmq.errorlog.arithinsert`*:: + -- +Changing content based on error.id + type: keyword -- -*`rsa.misc.misc_name`*:: +*`ibmmq.errorlog.commentinsert`*:: + -- +Changing content based on error.id + type: keyword -- -*`rsa.misc.msg_type`*:: +*`ibmmq.errorlog.errordescription`*:: + -- -type: keyword +Please add description --- +type: text -*`rsa.misc.msgid`*:: -+ --- -type: keyword +example: Please add example -- -*`rsa.misc.netsessid`*:: +*`ibmmq.errorlog.explanation`*:: + -- +Explaines the error in more detail + type: keyword -- -*`rsa.misc.num`*:: +*`ibmmq.errorlog.action`*:: + -- +Defines what to do when the error occurs + type: keyword -- -*`rsa.misc.number1`*:: +*`ibmmq.errorlog.code`*:: + -- +Error code. + type: keyword -- -*`rsa.misc.number2`*:: -+ --- -type: keyword +[[exported-fields-icinga]] +== Icinga fields --- +Icinga Module -*`rsa.misc.nwwn`*:: -+ --- -type: keyword --- -*`rsa.misc.object`*:: -+ --- -type: keyword +[float] +=== icinga --- -*`rsa.misc.operation`*:: -+ --- -type: keyword --- -*`rsa.misc.opkt`*:: -+ --- -type: keyword +[float] +=== debug --- +Contains fields for the Icinga debug logs. -*`rsa.misc.orig_from`*:: -+ --- -type: keyword --- -*`rsa.misc.owner_id`*:: +*`icinga.debug.facility`*:: + -- -type: keyword +Specifies what component of Icinga logged the message. --- -*`rsa.misc.p_action`*:: -+ --- type: keyword -- -*`rsa.misc.p_filter`*:: +*`icinga.debug.severity`*:: + -- -type: keyword +type: alias + +alias to: log.level -- -*`rsa.misc.p_group_object`*:: +*`icinga.debug.message`*:: + -- -type: keyword +type: alias --- +alias to: message -*`rsa.misc.p_id`*:: -+ -- -type: keyword --- +[float] +=== main -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword +Contains fields for the Icinga main logs. --- -*`rsa.misc.p_msgid2`*:: + +*`icinga.main.facility`*:: + -- -type: keyword +Specifies what component of Icinga logged the message. --- -*`rsa.misc.p_result1`*:: -+ --- type: keyword -- -*`rsa.misc.password_chg`*:: +*`icinga.main.severity`*:: + -- -type: keyword +type: alias + +alias to: log.level -- -*`rsa.misc.password_expire`*:: +*`icinga.main.message`*:: + -- -type: keyword +type: alias --- +alias to: message -*`rsa.misc.permgranted`*:: -+ -- -type: keyword --- +[float] +=== startup + +Contains fields for the Icinga startup logs. -*`rsa.misc.permwanted`*:: -+ --- -type: keyword --- -*`rsa.misc.pgid`*:: +*`icinga.startup.facility`*:: + -- -type: keyword +Specifies what component of Icinga logged the message. --- -*`rsa.misc.policyUUID`*:: -+ --- type: keyword -- -*`rsa.misc.prog_asp_num`*:: +*`icinga.startup.severity`*:: + -- -type: keyword +type: alias + +alias to: log.level -- -*`rsa.misc.program`*:: +*`icinga.startup.message`*:: + -- -type: keyword +type: alias --- +alias to: message -*`rsa.misc.real_data`*:: -+ -- -type: keyword --- +[[exported-fields-iis]] +== IIS fields -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword +Module for parsing IIS log files. --- -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword --- +[float] +=== iis -*`rsa.misc.rec_library`*:: -+ --- -type: keyword +Fields from IIS log files. --- -*`rsa.misc.recordnum`*:: -+ --- -type: keyword --- +[float] +=== access -*`rsa.misc.ruid`*:: -+ --- -type: keyword +Contains fields for IIS access logs. --- -*`rsa.misc.sburb`*:: + +*`iis.access.sub_status`*:: + -- -type: keyword +The HTTP substatus code. --- -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.sec`*:: +*`iis.access.win32_status`*:: + -- -type: keyword +The Windows status code. + + +type: long -- -*`rsa.misc.sensorname`*:: +*`iis.access.site_name`*:: + -- +The site name and instance number. + + type: keyword -- -*`rsa.misc.seqnum`*:: +*`iis.access.server_name`*:: + -- +The name of the server on which the log file entry was generated. + + type: keyword -- -*`rsa.misc.session`*:: +*`iis.access.cookie`*:: + -- +The content of the cookie sent or received, if any. + + type: keyword -- -*`rsa.misc.sessiontype`*:: +*`iis.access.body_received.bytes`*:: + -- -type: keyword +type: alias + +alias to: http.request.body.bytes -- -*`rsa.misc.sigUUID`*:: +*`iis.access.body_sent.bytes`*:: + -- -type: keyword +type: alias + +alias to: http.response.body.bytes -- -*`rsa.misc.spi`*:: +*`iis.access.server_ip`*:: + -- -type: keyword +type: alias + +alias to: destination.address -- -*`rsa.misc.srcburb`*:: +*`iis.access.method`*:: + -- -type: keyword +type: alias + +alias to: http.request.method -- -*`rsa.misc.srcdom`*:: +*`iis.access.url`*:: + -- -type: keyword +type: alias + +alias to: url.path -- -*`rsa.misc.srcservice`*:: +*`iis.access.query_string`*:: + -- -type: keyword +type: alias + +alias to: url.query -- -*`rsa.misc.state`*:: +*`iis.access.port`*:: + -- -type: keyword +type: alias + +alias to: destination.port -- -*`rsa.misc.status1`*:: +*`iis.access.user_name`*:: + -- -type: keyword +type: alias + +alias to: user.name -- -*`rsa.misc.svcno`*:: +*`iis.access.remote_ip`*:: + -- -type: keyword +type: alias + +alias to: source.address -- -*`rsa.misc.system`*:: +*`iis.access.referrer`*:: + -- -type: keyword +type: alias + +alias to: http.request.referrer -- -*`rsa.misc.tbdstr1`*:: +*`iis.access.response_code`*:: + -- -type: keyword +type: alias + +alias to: http.response.status_code -- -*`rsa.misc.tgtdom`*:: +*`iis.access.http_version`*:: + -- -type: keyword +type: alias + +alias to: http.version -- -*`rsa.misc.tgtdomain`*:: +*`iis.access.hostname`*:: + -- -type: keyword +type: alias --- +alias to: host.hostname -*`rsa.misc.threshold`*:: -+ -- -type: keyword --- -*`rsa.misc.type1`*:: +*`iis.access.user_agent.device`*:: + -- -type: keyword +type: alias + +alias to: user_agent.device.name -- -*`rsa.misc.udb_class`*:: +*`iis.access.user_agent.name`*:: + -- -type: keyword +type: alias + +alias to: user_agent.name -- -*`rsa.misc.url_fld`*:: +*`iis.access.user_agent.os`*:: + -- -type: keyword +type: alias + +alias to: user_agent.os.full_name -- -*`rsa.misc.user_div`*:: +*`iis.access.user_agent.os_name`*:: + -- -type: keyword +type: alias + +alias to: user_agent.os.name -- -*`rsa.misc.userid`*:: +*`iis.access.user_agent.original`*:: + -- -type: keyword +type: alias --- +alias to: user_agent.original -*`rsa.misc.username_fld`*:: -+ -- -type: keyword --- -*`rsa.misc.utcstamp`*:: +*`iis.access.geoip.continent_name`*:: + -- -type: keyword +type: alias + +alias to: source.geo.continent_name -- -*`rsa.misc.v_instafname`*:: +*`iis.access.geoip.country_iso_code`*:: + -- -type: keyword +type: alias + +alias to: source.geo.country_iso_code -- -*`rsa.misc.virt_data`*:: +*`iis.access.geoip.location`*:: + -- -type: keyword +type: alias + +alias to: source.geo.location -- -*`rsa.misc.vpnid`*:: +*`iis.access.geoip.region_name`*:: + -- -type: keyword +type: alias + +alias to: source.geo.region_name -- -*`rsa.misc.autorun_type`*:: +*`iis.access.geoip.city_name`*:: + -- -This is used to capture Auto Run type +type: alias -type: keyword +alias to: source.geo.city_name -- -*`rsa.misc.cc_number`*:: +*`iis.access.geoip.region_iso_code`*:: + -- -Valid Credit Card Numbers only +type: alias -type: long +alias to: source.geo.region_iso_code -- -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers +[float] +=== error -type: keyword +Contains fields for IIS error logs. --- -*`rsa.misc.ein_number`*:: + +*`iis.error.reason_phrase`*:: + -- -Employee Identification Numbers only +The HTTP reason phrase. -type: long + +type: keyword -- -*`rsa.misc.found`*:: +*`iis.error.queue_name`*:: + -- -This is used to capture the results of regex match +The IIS application pool name. + type: keyword -- -*`rsa.misc.language`*:: +*`iis.error.remote_ip`*:: + -- -This is used to capture list of languages the client support and what it prefers +type: alias -type: keyword +alias to: source.address -- -*`rsa.misc.lifetime`*:: +*`iis.error.remote_port`*:: + -- -This key is used to capture the session lifetime in seconds. +type: alias -type: long +alias to: source.port -- -*`rsa.misc.link`*:: +*`iis.error.server_ip`*:: + -- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: keyword +alias to: destination.address -- -*`rsa.misc.match`*:: +*`iis.error.server_port`*:: + -- -This key is for regex match name from search.ini +type: alias -type: keyword +alias to: destination.port -- -*`rsa.misc.param_dst`*:: +*`iis.error.http_version`*:: + -- -This key captures the command line/launch argument of the target process or file +type: alias -type: keyword +alias to: http.version -- -*`rsa.misc.param_src`*:: +*`iis.error.method`*:: + -- -This key captures source parameter +type: alias -type: keyword +alias to: http.request.method -- -*`rsa.misc.search_text`*:: +*`iis.error.url`*:: + -- -This key captures the Search Text used +type: alias -type: keyword +alias to: url.original -- -*`rsa.misc.sig_name`*:: +*`iis.error.response_code`*:: + -- -This key is used to capture the Signature Name only. +type: alias -type: keyword +alias to: http.response.status_code -- -*`rsa.misc.snmp_value`*:: + +*`iis.error.geoip.continent_name`*:: + -- -SNMP set request value +type: alias -type: keyword +alias to: source.geo.continent_name -- -*`rsa.misc.streams`*:: +*`iis.error.geoip.country_iso_code`*:: + -- -This key captures number of streams in session +type: alias -type: long +alias to: source.geo.country_iso_code -- - -*`rsa.db.index`*:: +*`iis.error.geoip.location`*:: + -- -This key captures IndexID of the index. +type: alias -type: keyword +alias to: source.geo.location -- -*`rsa.db.instance`*:: +*`iis.error.geoip.region_name`*:: + -- -This key is used to capture the database server instance name +type: alias -type: keyword +alias to: source.geo.region_name -- -*`rsa.db.database`*:: +*`iis.error.geoip.city_name`*:: + -- -This key is used to capture the name of a database or an instance as seen in a session +type: alias -type: keyword +alias to: source.geo.city_name -- -*`rsa.db.transact_id`*:: +*`iis.error.geoip.region_iso_code`*:: + -- -This key captures the SQL transantion ID of the current session +type: alias -type: keyword +alias to: source.geo.region_iso_code -- -*`rsa.db.permissions`*:: +[[exported-fields-iptables]] +== iptables fields + +Module for handling the iptables logs. + + + +[float] +=== iptables + +Fields from the iptables logs. + + + +*`iptables.ether_type`*:: + -- -This key captures permission or privilege level assigned to a resource. +Value of the ethernet type field identifying the network layer protocol. -type: keyword + +type: long -- -*`rsa.db.table_name`*:: +*`iptables.flow_label`*:: + -- -This key is used to capture the table name +IPv6 flow label. -type: keyword + +type: integer -- -*`rsa.db.db_id`*:: +*`iptables.fragment_flags`*:: + -- -This key is used to capture the unique identifier for a database +IP fragment flags. A combination of CE, DF and MF. + type: keyword -- -*`rsa.db.db_pid`*:: +*`iptables.fragment_offset`*:: + -- -This key captures the process id of a connection with database server +Offset of the current IP fragment. + type: long -- -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads +[float] +=== icmp -type: long +ICMP fields. --- -*`rsa.db.lwrite`*:: + +*`iptables.icmp.code`*:: + -- -This key is used for the number of logical writes +ICMP code. + type: long -- -*`rsa.db.pread`*:: +*`iptables.icmp.id`*:: + -- -This key is used for the number of physical writes +ICMP ID. + type: long -- - -*`rsa.network.alias_host`*:: +*`iptables.icmp.parameter`*:: + -- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. +ICMP parameter. -type: keyword + +type: long -- -*`rsa.network.domain`*:: +*`iptables.icmp.redirect`*:: + -- -type: keyword +ICMP redirect address. + + +type: ip -- -*`rsa.network.host_dst`*:: +*`iptables.icmp.seq`*:: + -- -This key should only be used when it’s a Destination Hostname +ICMP sequence number. -type: keyword + +type: long -- -*`rsa.network.network_service`*:: +*`iptables.icmp.type`*:: + -- -This is used to capture layer 7 protocols/service names +ICMP type. -type: keyword + +type: long -- -*`rsa.network.interface`*:: +*`iptables.id`*:: + -- -This key should be used when the source or destination context of an interface is not clear +Packet identifier. -type: keyword + +type: long -- -*`rsa.network.network_port`*:: +*`iptables.incomplete_bytes`*:: + -- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) +Number of incomplete bytes. + type: long -- -*`rsa.network.eth_host`*:: +*`iptables.input_device`*:: + -- -Deprecated, use alias.mac +Device that received the packet. + type: keyword -- -*`rsa.network.sinterface`*:: +*`iptables.precedence_bits`*:: + -- -This key should only be used when it’s a Source Interface +IP precedence bits. -type: keyword + +type: short -- -*`rsa.network.dinterface`*:: +*`iptables.tos`*:: + -- -This key should only be used when it’s a Destination Interface +IP Type of Service field. -type: keyword + +type: long -- -*`rsa.network.vlan`*:: +*`iptables.length`*:: + -- -This key should only be used to capture the ID of the Virtual LAN +Packet length. + type: long -- -*`rsa.network.zone_src`*:: +*`iptables.output_device`*:: + -- -This key should only be used when it’s a Source Zone. +Device that output the packet. + type: keyword -- -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear +[float] +=== tcp + +TCP fields. -type: keyword --- -*`rsa.network.zone_dst`*:: +*`iptables.tcp.flags`*:: + -- -This key should only be used when it’s a Destination Zone. +TCP flags. + type: keyword -- -*`rsa.network.gateway`*:: +*`iptables.tcp.reserved_bits`*:: + -- -This key is used to capture the IP Address of the gateway +TCP reserved bits. -type: keyword + +type: short -- -*`rsa.network.icmp_type`*:: +*`iptables.tcp.seq`*:: + -- -This key is used to capture the ICMP type only +TCP sequence number. + type: long -- -*`rsa.network.mask`*:: +*`iptables.tcp.ack`*:: + -- -This key is used to capture the device network IPmask. +TCP Acknowledgment number. -type: keyword + +type: long -- -*`rsa.network.icmp_code`*:: +*`iptables.tcp.window`*:: + -- -This key is used to capture the ICMP code only +Advertised TCP window size. + type: long -- -*`rsa.network.protocol_detail`*:: +*`iptables.ttl`*:: + -- -This key should be used to capture additional protocol information +Time To Live field. -type: keyword --- +type: integer -*`rsa.network.dmask`*:: -+ -- -This key is used for Destionation Device network mask -type: keyword +[float] +=== udp --- +UDP fields. -*`rsa.network.port`*:: + + +*`iptables.udp.length`*:: + -- -This key should only be used to capture a Network Port when the directionality is not clear +Length of the UDP header and payload. + type: long -- -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask +[float] +=== ubiquiti -type: keyword +Fields for Ubiquiti network devices. --- -*`rsa.network.netname`*:: + +*`iptables.ubiquiti.input_zone`*:: + -- -This key is used to capture the network name associated with an IP range. This is configured by the end user. +Input zone. + type: keyword -- -*`rsa.network.paddr`*:: +*`iptables.ubiquiti.output_zone`*:: + -- -Deprecated - -type: ip +Output zone. --- -*`rsa.network.faddr`*:: -+ --- type: keyword -- -*`rsa.network.lhost`*:: +*`iptables.ubiquiti.rule_number`*:: + -- +The rule number within the rule set. + type: keyword -- -*`rsa.network.origin`*:: +*`iptables.ubiquiti.rule_set`*:: + -- +The rule set name. + type: keyword -- -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword +[[exported-fields-jolokia-autodiscover]] +== Jolokia Discovery autodiscover provider fields --- +Metadata from Jolokia Discovery added by the jolokia provider. -*`rsa.network.addr`*:: -+ --- -type: keyword --- -*`rsa.network.dns_a_record`*:: +*`jolokia.agent.version`*:: + -- -type: keyword +Version number of jolokia agent. --- -*`rsa.network.dns_ptr_record`*:: -+ --- type: keyword -- -*`rsa.network.fhost`*:: +*`jolokia.agent.id`*:: + -- -type: keyword +Each agent has a unique id which can be either provided during startup of the agent in form of a configuration parameter or being autodetected. If autodected, the id has several parts: The IP, the process id, hashcode of the agent and its type. --- -*`rsa.network.fport`*:: -+ --- type: keyword -- -*`rsa.network.laddr`*:: +*`jolokia.server.product`*:: + -- +The container product if detected. + + type: keyword -- -*`rsa.network.linterface`*:: +*`jolokia.server.version`*:: + -- +The container's version (if detected). + + type: keyword -- -*`rsa.network.phost`*:: +*`jolokia.server.vendor`*:: + -- +The vendor of the container the agent is running in. + + type: keyword -- -*`rsa.network.ad_computer_dst`*:: +*`jolokia.url`*:: + -- -Deprecated, use host.dst +The URL how this agent can be contacted. + type: keyword -- -*`rsa.network.eth_type`*:: +*`jolokia.secured`*:: + -- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only +Whether the agent was configured for authentication or not. -type: long --- +type: boolean -*`rsa.network.ip_proto`*:: -+ -- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI -type: long +[[exported-fields-juniper]] +== Juniper JUNOS fields + +juniper fields. + --- -*`rsa.network.dns_cname_record`*:: +[float] +=== juniper.srx + +Module for parsing junipersrx syslog. + + + +*`juniper.srx.reason`*:: + -- +reason + + type: keyword -- -*`rsa.network.dns_id`*:: +*`juniper.srx.connection_tag`*:: + -- +connection tag + + type: keyword -- -*`rsa.network.dns_opcode`*:: +*`juniper.srx.service_name`*:: + -- +service name + + type: keyword -- -*`rsa.network.dns_resp`*:: +*`juniper.srx.nat_connection_tag`*:: + -- +nat connection tag + + type: keyword -- -*`rsa.network.dns_type`*:: +*`juniper.srx.src_nat_rule_type`*:: + -- +src nat rule type + + type: keyword -- -*`rsa.network.domain1`*:: +*`juniper.srx.src_nat_rule_name`*:: + -- +src nat rule name + + type: keyword -- -*`rsa.network.host_type`*:: +*`juniper.srx.dst_nat_rule_type`*:: + -- +dst nat rule type + + type: keyword -- -*`rsa.network.packet_length`*:: +*`juniper.srx.dst_nat_rule_name`*:: + -- +dst nat rule name + + type: keyword -- -*`rsa.network.host_orig`*:: +*`juniper.srx.protocol_id`*:: + -- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. +protocol id + type: keyword -- -*`rsa.network.rpayload`*:: +*`juniper.srx.policy_name`*:: + -- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. +policy name + type: keyword -- -*`rsa.network.vlan_name`*:: +*`juniper.srx.session_id_32`*:: + -- -This key should only be used to capture the name of the Virtual LAN +session id 32 + type: keyword -- - -*`rsa.investigations.ec_activity`*:: +*`juniper.srx.session_id`*:: + -- -This key captures the particular event activity(Ex:Logoff) +session id + type: keyword -- -*`rsa.investigations.ec_theme`*:: +*`juniper.srx.outbound_packets`*:: + -- -This key captures the Theme of a particular Event(Ex:Authentication) +packets from client -type: keyword + +type: integer -- -*`rsa.investigations.ec_subject`*:: +*`juniper.srx.outbound_bytes`*:: + -- -This key captures the Subject of a particular Event(Ex:User) +bytes from client -type: keyword + +type: integer -- -*`rsa.investigations.ec_outcome`*:: +*`juniper.srx.inbound_packets`*:: + -- -This key captures the outcome of a particular Event(Ex:Success) +packets from server -type: keyword + +type: integer -- -*`rsa.investigations.event_cat`*:: +*`juniper.srx.inbound_bytes`*:: + -- -This key captures the Event category number +bytes from server -type: long + +type: integer -- -*`rsa.investigations.event_cat_name`*:: +*`juniper.srx.elapsed_time`*:: + -- -This key captures the event category name corresponding to the event cat code +elapsed time -type: keyword + +type: date -- -*`rsa.investigations.event_vcat`*:: +*`juniper.srx.application`*:: + -- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. +application + type: keyword -- -*`rsa.investigations.analysis_file`*:: +*`juniper.srx.nested_application`*:: + -- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file +nested application + type: keyword -- -*`rsa.investigations.analysis_service`*:: +*`juniper.srx.username`*:: + -- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service +username + type: keyword -- -*`rsa.investigations.analysis_session`*:: +*`juniper.srx.roles`*:: + -- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session +roles + type: keyword -- -*`rsa.investigations.boc`*:: +*`juniper.srx.encrypted`*:: + -- -This is used to capture behaviour of compromise +encrypted + type: keyword -- -*`rsa.investigations.eoc`*:: +*`juniper.srx.application_category`*:: + -- -This is used to capture Enablers of Compromise +application category + type: keyword -- -*`rsa.investigations.inv_category`*:: +*`juniper.srx.application_sub_category`*:: + -- -This used to capture investigation category +application sub category + type: keyword -- -*`rsa.investigations.inv_context`*:: +*`juniper.srx.application_characteristics`*:: + -- -This used to capture investigation context +application characteristics + type: keyword -- -*`rsa.investigations.ioc`*:: +*`juniper.srx.secure_web_proxy_session_type`*:: + -- -This is key capture indicator of compromise +secure web proxy session type + type: keyword -- - -*`rsa.counters.dclass_c1`*:: +*`juniper.srx.peer_session_id`*:: + -- -This is a generic counter key that should be used with the label dclass.c1.str only +peer session id -type: long + +type: keyword -- -*`rsa.counters.dclass_c2`*:: +*`juniper.srx.peer_source_address`*:: + -- -This is a generic counter key that should be used with the label dclass.c2.str only +peer source address -type: long + +type: ip -- -*`rsa.counters.event_counter`*:: +*`juniper.srx.peer_source_port`*:: + -- -This is used to capture the number of times an event repeated +peer source port -type: long + +type: integer -- -*`rsa.counters.dclass_r1`*:: +*`juniper.srx.peer_destination_address`*:: + -- -This is a generic ratio key that should be used with the label dclass.r1.str only +peer destination address -type: keyword + +type: ip -- -*`rsa.counters.dclass_c3`*:: +*`juniper.srx.peer_destination_port`*:: + -- -This is a generic counter key that should be used with the label dclass.c3.str only +peer destination port -type: long + +type: integer -- -*`rsa.counters.dclass_c1_str`*:: +*`juniper.srx.hostname`*:: + -- -This is a generic counter string key that should be used with the label dclass.c1 only +hostname + type: keyword -- -*`rsa.counters.dclass_c2_str`*:: +*`juniper.srx.src_vrf_grp`*:: + -- -This is a generic counter string key that should be used with the label dclass.c2 only +src_vrf_grp + type: keyword -- -*`rsa.counters.dclass_r1_str`*:: +*`juniper.srx.dst_vrf_grp`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r1 only +dst_vrf_grp + type: keyword -- -*`rsa.counters.dclass_r2`*:: +*`juniper.srx.icmp_type`*:: + -- -This is a generic ratio key that should be used with the label dclass.r2.str only +icmp type -type: keyword + +type: integer -- -*`rsa.counters.dclass_c3_str`*:: +*`juniper.srx.process`*:: + -- -This is a generic counter string key that should be used with the label dclass.c3 only +process that generated the message + type: keyword -- -*`rsa.counters.dclass_r3`*:: +*`juniper.srx.apbr_rule_type`*:: + -- -This is a generic ratio key that should be used with the label dclass.r3.str only +apbr rule type + type: keyword -- -*`rsa.counters.dclass_r2_str`*:: +*`juniper.srx.dscp_value`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r2 only +apbr rule type -type: keyword + +type: integer -- -*`rsa.counters.dclass_r3_str`*:: +*`juniper.srx.logical_system_name`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r3 only +logical system name + type: keyword -- - -*`rsa.identity.auth_method`*:: +*`juniper.srx.profile_name`*:: + -- -This key is used to capture authentication methods used only +profile name + type: keyword -- -*`rsa.identity.user_role`*:: +*`juniper.srx.routing_instance`*:: + -- -This key is used to capture the Role of a user only +routing instance + type: keyword -- -*`rsa.identity.dn`*:: +*`juniper.srx.rule_name`*:: + -- -X.500 (LDAP) Distinguished Name +rule name + type: keyword -- -*`rsa.identity.logon_type`*:: +*`juniper.srx.uplink_tx_bytes`*:: + -- -This key is used to capture the type of logon method used. +uplink tx bytes -type: keyword + +type: integer -- -*`rsa.identity.profile`*:: +*`juniper.srx.uplink_rx_bytes`*:: + -- -This key is used to capture the user profile +uplink rx bytes -type: keyword + +type: integer -- -*`rsa.identity.accesses`*:: +*`juniper.srx.obj`*:: + -- -This key is used to capture actual privileges used in accessing an object +url path + type: keyword -- -*`rsa.identity.realm`*:: +*`juniper.srx.url`*:: + -- -Radius realm or similar grouping of accounts +url domain + type: keyword -- -*`rsa.identity.user_sid_dst`*:: +*`juniper.srx.profile`*:: + -- -This key captures Destination User Session ID +filter profile + type: keyword -- -*`rsa.identity.dn_src`*:: +*`juniper.srx.category`*:: + -- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn +filter category + type: keyword -- -*`rsa.identity.org`*:: +*`juniper.srx.filename`*:: + -- -This key captures the User organization +filename + type: keyword -- -*`rsa.identity.dn_dst`*:: +*`juniper.srx.temporary_filename`*:: + -- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn +temporary_filename + type: keyword -- -*`rsa.identity.firstname`*:: +*`juniper.srx.name`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +name + type: keyword -- -*`rsa.identity.lastname`*:: +*`juniper.srx.error_message`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +error_message + type: keyword -- -*`rsa.identity.user_dept`*:: +*`juniper.srx.error_code`*:: + -- -User's Department Names only +error_code + type: keyword -- -*`rsa.identity.user_sid_src`*:: +*`juniper.srx.action`*:: + -- -This key captures Source User Session ID +action + type: keyword -- -*`rsa.identity.federated_sp`*:: +*`juniper.srx.protocol`*:: + -- -This key is the Federated Service Provider. This is the application requesting authentication. +protocol + type: keyword -- -*`rsa.identity.federated_idp`*:: +*`juniper.srx.protocol_name`*:: + -- -This key is the federated Identity Provider. This is the server providing the authentication. +protocol name + type: keyword -- -*`rsa.identity.logon_type_desc`*:: +*`juniper.srx.type`*:: + -- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. +type + type: keyword -- -*`rsa.identity.middlename`*:: +*`juniper.srx.repeat_count`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +repeat count -type: keyword + +type: integer -- -*`rsa.identity.password`*:: +*`juniper.srx.alert`*:: + -- -This key is for Passwords seen in any session, plain text or encrypted +repeat alert + type: keyword -- -*`rsa.identity.host_role`*:: +*`juniper.srx.message_type`*:: + -- -This key should only be used to capture the role of a Host Machine +message type + type: keyword -- -*`rsa.identity.ldap`*:: +*`juniper.srx.threat_severity`*:: + -- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context +threat severity + type: keyword -- -*`rsa.identity.ldap_query`*:: +*`juniper.srx.application_name`*:: + -- -This key is the Search criteria from an LDAP search +application name + type: keyword -- -*`rsa.identity.ldap_response`*:: +*`juniper.srx.attack_name`*:: + -- -This key is to capture Results from an LDAP search +attack name + type: keyword -- -*`rsa.identity.owner`*:: +*`juniper.srx.index`*:: + -- -This is used to capture username the process or service is running as, the author of the task +index + type: keyword -- -*`rsa.identity.service_account`*:: +*`juniper.srx.message`*:: + -- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage +mesagge + type: keyword -- - -*`rsa.email.email_dst`*:: +*`juniper.srx.epoch_time`*:: + -- -This key is used to capture the Destination email address only, when the destination context is not clear use email +epoch time -type: keyword + +type: date -- -*`rsa.email.email_src`*:: +*`juniper.srx.packet_log_id`*:: + -- -This key is used to capture the source email address only, when the source context is not clear use email +packet log id -type: keyword + +type: integer -- -*`rsa.email.subject`*:: +*`juniper.srx.export_id`*:: + -- -This key is used to capture the subject string from an Email only. +packet log id -type: keyword + +type: integer -- -*`rsa.email.email`*:: +*`juniper.srx.ddos_application_name`*:: + -- -This key is used to capture a generic email address where the source or destination context is not clear +ddos application name + type: keyword -- -*`rsa.email.trans_from`*:: +*`juniper.srx.connection_hit_rate`*:: + -- -Deprecated key defined only in table map. +connection hit rate -type: keyword + +type: integer -- -*`rsa.email.trans_to`*:: +*`juniper.srx.time_scope`*:: + -- -Deprecated key defined only in table map. +time scope + type: keyword -- - -*`rsa.file.privilege`*:: +*`juniper.srx.context_hit_rate`*:: + -- -Deprecated, use permissions +context hit rate -type: keyword + +type: integer -- -*`rsa.file.attachment`*:: +*`juniper.srx.context_value_hit_rate`*:: + -- -This key captures the attachment file name - -type: keyword +context value hit rate --- -*`rsa.file.filesystem`*:: -+ --- -type: keyword +type: integer -- -*`rsa.file.binary`*:: +*`juniper.srx.time_count`*:: + -- -Deprecated key defined only in table map. +time count -type: keyword + +type: integer -- -*`rsa.file.filename_dst`*:: +*`juniper.srx.time_period`*:: + -- -This is used to capture name of the file targeted by the action +time period -type: keyword + +type: integer -- -*`rsa.file.filename_src`*:: +*`juniper.srx.context_value`*:: + -- -This is used to capture name of the parent filename, the file which performed the action +context value + type: keyword -- -*`rsa.file.filename_tmp`*:: +*`juniper.srx.context_name`*:: + -- +context name + + type: keyword -- -*`rsa.file.directory_dst`*:: +*`juniper.srx.ruleebase_name`*:: + -- -This key is used to capture the directory of the target process or file +ruleebase name + type: keyword -- -*`rsa.file.directory_src`*:: +*`juniper.srx.verdict_source`*:: + -- -This key is used to capture the directory of the source process or file +verdict source + type: keyword -- -*`rsa.file.file_entropy`*:: +*`juniper.srx.verdict_number`*:: + -- -This is used to capture entropy vale of a file +verdict number -type: double + +type: integer -- -*`rsa.file.file_vendor`*:: +*`juniper.srx.file_category`*:: + -- -This is used to capture Company name of file located in version_info +file category + type: keyword -- -*`rsa.file.task_name`*:: +*`juniper.srx.sample_sha256`*:: + -- -This is used to capture name of the task +sample sha256 + type: keyword -- - -*`rsa.web.fqdn`*:: +*`juniper.srx.malware_info`*:: + -- -Fully Qualified Domain Names +malware info + type: keyword -- -*`rsa.web.web_cookie`*:: +*`juniper.srx.client_ip`*:: + -- -This key is used to capture the Web cookies specifically. +client ip -type: keyword + +type: ip -- -*`rsa.web.alias_host`*:: +*`juniper.srx.tenant_id`*:: + -- +tenant id + + type: keyword -- -*`rsa.web.reputation_num`*:: +*`juniper.srx.timestamp`*:: + -- -Reputation Number of an entity. Typically used for Web Domains +timestamp -type: double + +type: date -- -*`rsa.web.web_ref_domain`*:: +*`juniper.srx.th`*:: + -- -Web referer's domain +th + type: keyword -- -*`rsa.web.web_ref_query`*:: +*`juniper.srx.status`*:: + -- -This key captures Web referer's query portion of the URL +status + type: keyword -- -*`rsa.web.remote_domain`*:: +*`juniper.srx.state`*:: + -- +state + + type: keyword -- -*`rsa.web.web_ref_page`*:: +*`juniper.srx.file_hash_lookup`*:: + -- -This key captures Web referer's page information +file hash lookup + type: keyword -- -*`rsa.web.web_ref_root`*:: +*`juniper.srx.file_name`*:: + -- -Web referer's root URL path +file name + type: keyword -- -*`rsa.web.cn_asn_dst`*:: +*`juniper.srx.action_detail`*:: + -- -type: keyword +action detail --- -*`rsa.web.cn_rpackets`*:: -+ --- type: keyword -- -*`rsa.web.urlpage`*:: +*`juniper.srx.sub_category`*:: + -- -type: keyword +sub category --- -*`rsa.web.urlroot`*:: -+ --- type: keyword -- -*`rsa.web.p_url`*:: +*`juniper.srx.feed_name`*:: + -- -type: keyword +feed name --- -*`rsa.web.p_user_agent`*:: -+ --- type: keyword -- -*`rsa.web.p_web_cookie`*:: +*`juniper.srx.occur_count`*:: + -- -type: keyword +occur count + + +type: integer -- -*`rsa.web.p_web_method`*:: +*`juniper.srx.tag`*:: + -- +system log message tag, which uniquely identifies the message. + + type: keyword -- -*`rsa.web.p_web_referer`*:: +[[exported-fields-kafka]] +== Kafka fields + +Kafka module + + + +[float] +=== kafka + + + + +[float] +=== log + +Kafka log lines. + + + +*`kafka.log.component`*:: + -- +Component the log is coming from. + + type: keyword -- -*`rsa.web.web_extension_tmp`*:: +*`kafka.log.class`*:: + -- +Java class the log is coming from. + + type: keyword -- -*`rsa.web.web_page`*:: +*`kafka.log.thread`*:: + -- +Thread name the log is coming from. + + type: keyword -- +[float] +=== trace -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert +Trace in the log line. -type: keyword --- -*`rsa.threat.threat_desc`*:: +*`kafka.log.trace.class`*:: + -- -This key is used to capture the threat description from the session directly or inferred +Java class the trace is coming from. + type: keyword -- -*`rsa.threat.alert`*:: +*`kafka.log.trace.message`*:: + -- -This key is used to capture name of the alert +Message part of the trace. -type: keyword --- +type: text -*`rsa.threat.threat_source`*:: -+ -- -This key is used to capture source of the threat -type: keyword +[[exported-fields-kibana]] +== kibana fields --- +kibana Module -*`rsa.crypto.crypto`*:: + +*`service.node.roles`*:: + -- -This key is used to capture the Encryption Type or Encryption Key only - type: keyword -- -*`rsa.crypto.cipher_src`*:: +[float] +=== kibana + +Module for parsing Kibana logs. + + + +*`kibana.session_id`*:: + -- -This key is for Source (Client) Cipher +The ID of the user session associated with this event. Each login attempt results in a unique session id. type: keyword +example: 123e4567-e89b-12d3-a456-426614174000 + -- -*`rsa.crypto.cert_subject`*:: +*`kibana.space_id`*:: + -- -This key is used to capture the Certificate organization only +The id of the space associated with this event. type: keyword +example: default + -- -*`rsa.crypto.peer`*:: +*`kibana.saved_object.type`*:: + -- -This key is for Encryption peer's IP Address +The type of the saved object associated with this event. type: keyword +example: dashboard + -- -*`rsa.crypto.cipher_size_src`*:: +*`kibana.saved_object.id`*:: + -- -This key captures Source (Client) Cipher Size +The id of the saved object associated with this event. -type: long +type: keyword + +example: 6295bdd0-0a0e-11e7-825f-6748cda7d858 -- -*`rsa.crypto.ike`*:: +*`kibana.saved_object.name`*:: + -- -IKE negotiation phase. +The name of the saved object associated with this event. type: keyword +example: my-saved-object + -- -*`rsa.crypto.scheme`*:: +*`kibana.add_to_spaces`*:: + -- -This key captures the Encryption scheme used +The set of space ids that a saved object was shared to. type: keyword +example: ['default', 'marketing'] + -- -*`rsa.crypto.peer_id`*:: +*`kibana.delete_from_spaces`*:: + -- -This key is for Encryption peer’s identity +The set of space ids that a saved object was removed from. type: keyword +example: ['default', 'marketing'] + -- -*`rsa.crypto.sig_type`*:: +*`kibana.authentication_provider`*:: + -- -This key captures the Signature Type +The authentication provider associated with a login event. type: keyword +example: basic1 + -- -*`rsa.crypto.cert_issuer`*:: +*`kibana.authentication_type`*:: + -- +The authentication provider type associated with a login event. + type: keyword +example: basic + -- -*`rsa.crypto.cert_host_name`*:: +*`kibana.authentication_realm`*:: + -- -Deprecated key defined only in table map. +The Elasticsearch authentication realm name which fulfilled a login event. type: keyword +example: native + -- -*`rsa.crypto.cert_error`*:: +*`kibana.lookup_realm`*:: + -- -This key captures the Certificate Error String +The Elasticsearch lookup realm which fulfilled a login event. type: keyword +example: native + -- -*`rsa.crypto.cipher_dst`*:: +[float] +=== log + +Kibana log lines. + + + +*`kibana.log.tags`*:: + -- -This key is for Destination (Server) Cipher +Kibana logging tags. + type: keyword -- -*`rsa.crypto.cipher_size_dst`*:: +*`kibana.log.state`*:: + -- -This key captures Destination (Server) Cipher Size +Current state of Kibana. -type: long + +type: keyword -- -*`rsa.crypto.ssl_ver_src`*:: +*`kibana.log.meta`*:: + -- -Deprecated, use version - -type: keyword +type: object -- -*`rsa.crypto.d_certauth`*:: +*`kibana.log.meta.req.headers`*:: + -- -type: keyword +type: flattened -- -*`rsa.crypto.s_certauth`*:: +*`kibana.log.meta.res.headers`*:: + -- -type: keyword +type: flattened -- -*`rsa.crypto.ike_cookie1`*:: +[[exported-fields-kubernetes-processor]] +== Kubernetes fields + +Kubernetes metadata added by the kubernetes processor + + + + +*`kubernetes.pod.name`*:: + -- -ID of the negotiation — sent for ISAKMP Phase One +Kubernetes pod name + type: keyword -- -*`rsa.crypto.ike_cookie2`*:: +*`kubernetes.pod.uid`*:: + -- -ID of the negotiation — sent for ISAKMP Phase Two +Kubernetes Pod UID + type: keyword -- -*`rsa.crypto.cert_checksum`*:: +*`kubernetes.pod.ip`*:: + -- -type: keyword +Kubernetes Pod IP + + +type: ip -- -*`rsa.crypto.cert_host_cat`*:: +*`kubernetes.namespace`*:: + -- -This key is used for the hostname category value of a certificate +Kubernetes namespace + type: keyword -- -*`rsa.crypto.cert_serial`*:: +*`kubernetes.node.name`*:: + -- -This key is used to capture the Certificate serial number only +Kubernetes node name + type: keyword -- -*`rsa.crypto.cert_status`*:: +*`kubernetes.node.hostname`*:: + -- -This key captures Certificate validation status +Kubernetes hostname as reported by the node’s kernel + type: keyword -- -*`rsa.crypto.ssl_ver_dst`*:: +*`kubernetes.labels.*`*:: + -- -Deprecated, use version +Kubernetes labels map -type: keyword + +type: object -- -*`rsa.crypto.cert_keysize`*:: +*`kubernetes.annotations.*`*:: + -- -type: keyword +Kubernetes annotations map + + +type: object -- -*`rsa.crypto.cert_username`*:: +*`kubernetes.selectors.*`*:: + -- -type: keyword +Kubernetes selectors map + + +type: object -- -*`rsa.crypto.https_insact`*:: +*`kubernetes.replicaset.name`*:: + -- +Kubernetes replicaset name + + type: keyword -- -*`rsa.crypto.https_valid`*:: +*`kubernetes.deployment.name`*:: + -- +Kubernetes deployment name + + type: keyword -- -*`rsa.crypto.cert_ca`*:: +*`kubernetes.statefulset.name`*:: + -- -This key is used to capture the Certificate signing authority only +Kubernetes statefulset name + type: keyword -- -*`rsa.crypto.cert_common`*:: +*`kubernetes.container.name`*:: + -- -This key is used to capture the Certificate common name only +Kubernetes container name (different than the name from the runtime) + type: keyword -- +[[exported-fields-log]] +== Log file content fields -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session +Contains log file lines. -type: keyword --- -*`rsa.wireless.access_point`*:: +*`log.source.address`*:: + -- -This key is used to capture the access point name. +Source address from which the log event was read / sent from. + type: keyword +required: False + -- -*`rsa.wireless.wlan_channel`*:: +*`log.offset`*:: + -- -This is used to capture the channel names +The file offset the reported line starts at. + type: long +required: False + -- -*`rsa.wireless.wlan_name`*:: +*`stream`*:: + -- -This key captures either WLAN number/name +Log stream when reading container logs, can be 'stdout' or 'stderr' + type: keyword --- +required: False +-- -*`rsa.storage.disk_volume`*:: +*`input.type`*:: + -- -A unique name assigned to logical units (volumes) within a physical disk +The input type from which the event was generated. This field is set to the value specified for the `type` option in the input section of the Filebeat config file. -type: keyword + +required: True -- -*`rsa.storage.lun`*:: +*`syslog.facility`*:: + -- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword +The facility extracted from the priority. --- -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. +type: long -type: keyword +required: False -- - -*`rsa.physical.org_dst`*:: +*`syslog.priority`*:: + -- -This is used to capture the destination organization based on the GEOPIP Maxmind database. +The priority of the syslog event. -type: keyword + +type: long + +required: False -- -*`rsa.physical.org_src`*:: +*`syslog.severity_label`*:: + -- -This is used to capture the source organization based on the GEOPIP Maxmind database. +The human readable severity. + type: keyword --- +required: False +-- -*`rsa.healthcare.patient_fname`*:: +*`syslog.facility_label`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +The human readable facility. + type: keyword +required: False + -- -*`rsa.healthcare.patient_id`*:: +*`process.program`*:: + -- -This key captures the unique ID for a patient +The name of the program. + type: keyword +required: False + -- -*`rsa.healthcare.patient_lname`*:: +*`log.flags`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +This field contains the flags of the event. -type: keyword -- -*`rsa.healthcare.patient_mname`*:: +*`http.response.content_length`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +type: alias -type: keyword +alias to: http.response.body.bytes -- -*`rsa.endpoint.host_state`*:: + +*`user_agent.os.full_name`*:: + -- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - type: keyword -- -*`rsa.endpoint.registry_key`*:: +*`fileset.name`*:: + -- -This key captures the path to the registry key +The Filebeat fileset that generated this event. + type: keyword -- -*`rsa.endpoint.registry_value`*:: +*`fileset.module`*:: + -- -This key captures values or decorators used within a registry entry +type: alias -type: keyword +alias to: event.module -- -[[exported-fields-docker-processor]] -== Docker fields - -Docker stats collected from Docker. - +*`read_timestamp`*:: ++ +-- +type: alias +alias to: event.created +-- -*`docker.container.id`*:: +*`docker.attrs`*:: + -- -type: alias +docker.attrs contains labels and environment variables written by docker's JSON File logging driver. These fields are only available when they are configured in the logging driver options. -alias to: container.id + +type: object -- -*`docker.container.image`*:: +*`icmp.code`*:: + -- -type: alias +ICMP code. -alias to: container.image.name + +type: keyword -- -*`docker.container.name`*:: +*`icmp.type`*:: + -- -type: alias +ICMP type. -alias to: container.name + +type: keyword -- -*`docker.container.labels`*:: +*`igmp.type`*:: + -- -Image labels. +IGMP type. -type: object +type: keyword -- -[[exported-fields-ecs]] -== ECS fields +*`azure.eventhub`*:: ++ +-- +Name of the eventhub. -This section defines Elastic Common Schema (ECS) fields—a common set of fields -to be used when storing event data in {es}. -This is an exhaustive list, and fields listed here are not necessarily used by {beatname_uc}. -The goal of ECS is to enable and encourage users of {es} to normalize their event data, -so that they can better analyze, visualize, and correlate the data represented in their events. +type: keyword -See the {ecs-ref}[ECS reference] for more information. +-- -*`@timestamp`*:: +*`azure.offset`*:: + -- -Date/time when the event originated. -This is the date/time extracted from the event, typically representing when the event was generated by the source. -If the event source has no original timestamp, this value is typically populated by the first time the event was received by the pipeline. -Required field for all events. - -type: date +The offset. -example: 2016-05-23T08:05:34.853Z -required: True +type: long -- -*`labels`*:: +*`azure.enqueued_time`*:: + -- -Custom key/value pairs. -Can be used to add meta information to events. Should not contain nested objects. All values are stored as keyword. -Example: `docker` and `k8s` labels. +The enqueued time. -type: object -example: {"application": "foo-bar", "env": "production"} +type: date -- -*`message`*:: +*`azure.partition_id`*:: + -- -For log events the message field contains the log message, optimized for viewing in a log viewer. -For structured logs without an original message field, other fields can be concatenated to form a human-readable summary of the event. -If multiple messages exist, they can be combined into one message. +The partition id. -type: match_only_text -example: Hello World +type: long -- -*`tags`*:: +*`azure.consumer_group`*:: + -- -List of keywords used to tag each event. +The consumer group. + type: keyword -example: ["production", "env2"] +-- +*`azure.sequence_number`*:: ++ -- +The sequence number. -[float] -=== agent -The agent fields contain the data about the software entity, if any, that collects, detects, or observes events on a host, or takes measurements on a host. -Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +type: long +-- -*`agent.build.original`*:: + +*`kafka.topic`*:: + -- -Extended build information for the agent. -This field is intended to contain any build information that a data source may provide, no specific formatting is required. +Kafka topic -type: keyword -example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC] +type: keyword -- -*`agent.ephemeral_id`*:: +*`kafka.partition`*:: + -- -Ephemeral identifier of this agent (if one exists). -This id normally changes across restarts, but `agent.id` does not. +Kafka partition number -type: keyword -example: 8a4f500f +type: long -- -*`agent.id`*:: +*`kafka.offset`*:: + -- -Unique identifier of this agent (if one exists). -Example: For Beats this would be beat.id. +Kafka offset of this message -type: keyword -example: 8a4f500d +type: long -- -*`agent.name`*:: +*`kafka.key`*:: + -- -Custom name of the agent. -This is a name that can be given to an agent. This can be helpful if for example two Filebeat instances are running on the same host but a human readable separation is needed on which Filebeat instance data is coming from. -If no name is given, the name is often left empty. +Kafka key, corresponding to the Kafka value stored in the message -type: keyword -example: foo +type: keyword -- -*`agent.type`*:: +*`kafka.block_timestamp`*:: + -- -Type of the agent. -The agent type always stays the same and should be given by the agent used. In case of Filebeat the agent would always be Filebeat also if two Filebeat instances are run on the same machine. +Kafka outer (compressed) block timestamp -type: keyword -example: filebeat +type: date -- -*`agent.version`*:: +*`kafka.headers`*:: + -- -Version of the agent. +An array of Kafka header strings for this message, in the form ": ". -type: keyword -example: 6.0.0-rc2 +type: array -- +[[exported-fields-logstash]] +== logstash fields + +logstash Module + + + [float] -=== as +=== logstash -An autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the internet. -*`as.number`*:: + +[float] +=== log + +Fields from the Logstash logs. + + + +*`logstash.log.module`*:: + -- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +The module or class where the event originate. -type: long -example: 15169 +type: keyword -- -*`as.organization.name`*:: +*`logstash.log.thread`*:: + -- -Organization name. +Information about the running thread where the log originate. -type: keyword -example: Google LLC +type: keyword -- -*`as.organization.name.text`*:: +*`logstash.log.thread.text`*:: + -- -type: match_only_text +type: text -- -[float] -=== client +*`logstash.log.log_event`*:: ++ +-- +key and value debugging information. -A client is defined as the initiator of a network connection for events regarding sessions, connections, or bidirectional flow records. -For TCP events, the client is the initiator of the TCP connection that sends the SYN packet(s). For other protocols, the client is generally the initiator or requestor in the network transaction. Some systems use the term "originator" to refer the client in TCP connections. The client fields describe details about the system acting as the client in the network event. Client fields are usually populated in conjunction with server fields. Client fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +type: object + +-- -*`client.address`*:: +*`logstash.log.log_event.action`*:: + -- -Some event client addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - type: keyword -- -*`client.as.number`*:: +*`logstash.log.pipeline_id`*:: + -- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +The ID of the pipeline. -type: long -example: 15169 +type: keyword + +example: main -- -*`client.as.organization.name`*:: +*`logstash.log.message`*:: + -- -Organization name. - -type: keyword +type: alias -example: Google LLC +alias to: message -- -*`client.as.organization.name.text`*:: +*`logstash.log.level`*:: + -- -type: match_only_text +type: alias --- +alias to: log.level -*`client.bytes`*:: -+ -- -Bytes sent from the client to the server. -type: long +[float] +=== slowlog -example: 184 +slowlog -format: bytes --- -*`client.domain`*:: +*`logstash.slowlog.module`*:: + -- -The domain name of the client system. -This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. +The module or class where the event originate. -type: keyword -example: foo.example.com +type: keyword -- -*`client.geo.city_name`*:: +*`logstash.slowlog.thread`*:: + -- -City name. +Information about the running thread where the log originate. -type: keyword -example: Montreal +type: keyword -- -*`client.geo.continent_code`*:: +*`logstash.slowlog.thread.text`*:: + -- -Two-letter code representing continent's name. - -type: keyword - -example: NA +type: text -- -*`client.geo.continent_name`*:: +*`logstash.slowlog.event`*:: + -- -Name of the continent. +Raw dump of the original event -type: keyword -example: North America +type: keyword -- -*`client.geo.country_iso_code`*:: +*`logstash.slowlog.event.text`*:: + -- -Country ISO code. - -type: keyword - -example: CA +type: text -- -*`client.geo.country_name`*:: +*`logstash.slowlog.plugin_name`*:: + -- -Country name. +Name of the plugin -type: keyword -example: Canada +type: keyword -- -*`client.geo.location`*:: +*`logstash.slowlog.plugin_type`*:: + -- -Longitude and latitude. +Type of the plugin: Inputs, Filters, Outputs or Codecs. -type: geo_point -example: { "lon": -73.614830, "lat": 45.505918 } +type: keyword -- -*`client.geo.name`*:: +*`logstash.slowlog.took_in_millis`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +Execution time for the plugin in milliseconds. -type: keyword -example: boston-dc +type: long -- -*`client.geo.postal_code`*:: +*`logstash.slowlog.plugin_params`*:: + -- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. +String value of the plugin configuration -type: keyword -example: 94040 +type: keyword -- -*`client.geo.region_iso_code`*:: +*`logstash.slowlog.plugin_params.text`*:: + -- -Region ISO code. - -type: keyword - -example: CA-QC +type: text -- -*`client.geo.region_name`*:: +*`logstash.slowlog.plugin_params_object`*:: + -- -Region name. +key -> value of the configuration used by the plugin. -type: keyword -example: Quebec +type: object -- -*`client.geo.timezone`*:: +*`logstash.slowlog.level`*:: + -- -The time zone of the location, such as IANA time zone name. - -type: keyword +type: alias -example: America/Argentina/Buenos_Aires +alias to: log.level -- -*`client.ip`*:: +*`logstash.slowlog.took_in_nanos`*:: + -- -IP address of the client (IPv4 or IPv6). +type: alias -type: ip +alias to: event.duration -- -*`client.mac`*:: -+ --- -MAC address of the client. -The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. +[[exported-fields-lumberjack]] +== Lumberjack fields -type: keyword +Fields from Lumberjack input. -example: 00-00-5E-00-53-23 --- -*`client.nat.ip`*:: +*`lumberjack`*:: + -- -Translated IP of source based NAT sessions (e.g. internal client to internet). -Typically connections traversing load balancers, firewalls, or routers. +Structured data received in an event sent over the Lumberjack protocol. -type: ip --- +type: flattened -*`client.nat.port`*:: -+ -- -Translated port of source based NAT sessions (e.g. internal client to internet). -Typically connections traversing load balancers, firewalls, or routers. -type: long +[[exported-fields-microsoft]] +== Microsoft fields -format: string +Microsoft Module --- -*`client.packets`*:: + +[float] +=== microsoft.defender_atp + +Module for ingesting Microsoft Defender ATP. + + + +*`microsoft.defender_atp.lastUpdateTime`*:: + -- -Packets sent from the client to the server. +The date and time (in UTC) the alert was last updated. -type: long -example: 12 +type: date -- -*`client.port`*:: +*`microsoft.defender_atp.resolvedTime`*:: + -- -Port of the client. +The date and time in which the status of the alert was changed to 'Resolved'. -type: long -format: string +type: date -- -*`client.registered_domain`*:: +*`microsoft.defender_atp.incidentId`*:: + -- -The highest registered client domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". +The Incident ID of the Alert. -type: keyword -example: example.com +type: keyword -- -*`client.subdomain`*:: +*`microsoft.defender_atp.investigationId`*:: + -- -The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. -For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. +The Investigation ID related to the Alert. -type: keyword -example: east +type: keyword -- -*`client.top_level_domain`*:: +*`microsoft.defender_atp.investigationState`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". +The current state of the Investigation. -type: keyword -example: co.uk +type: keyword -- -*`client.user.domain`*:: +*`microsoft.defender_atp.assignedTo`*:: + -- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. +Owner of the alert. + type: keyword -- -*`client.user.email`*:: +*`microsoft.defender_atp.status`*:: + -- -User email address. +Specifies the current status of the alert. Possible values are: 'Unknown', 'New', 'InProgress' and 'Resolved'. + type: keyword -- -*`client.user.full_name`*:: +*`microsoft.defender_atp.classification`*:: + -- -User's full name, if available. +Specification of the alert. Possible values are: 'Unknown', 'FalsePositive', 'TruePositive'. -type: keyword -example: Albert Einstein +type: keyword -- -*`client.user.full_name.text`*:: +*`microsoft.defender_atp.determination`*:: + -- -type: match_only_text +Specifies the determination of the alert. Possible values are: 'NotAvailable', 'Apt', 'Malware', 'SecurityPersonnel', 'SecurityTesting', 'UnwantedSoftware', 'Other'. + + +type: keyword -- -*`client.user.group.domain`*:: +*`microsoft.defender_atp.threatFamilyName`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +Threat family. + type: keyword -- -*`client.user.group.id`*:: +*`microsoft.defender_atp.rbacGroupName`*:: + -- -Unique identifier for the group on the system/platform. +User group related to the alert + type: keyword -- -*`client.user.group.name`*:: +*`microsoft.defender_atp.evidence.domainName`*:: + -- -Name of the group. +Domain name related to the alert + type: keyword -- -*`client.user.hash`*:: +*`microsoft.defender_atp.evidence.ipAddress`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +IP address involved in the alert -type: keyword + +type: ip -- -*`client.user.id`*:: +*`microsoft.defender_atp.evidence.aadUserId`*:: + -- -Unique identifier of the user. +ID of the user involved in the alert -type: keyword -example: S-1-5-21-202424912787-2692429404-2351956786-1000 +type: keyword -- -*`client.user.name`*:: +*`microsoft.defender_atp.evidence.accountName`*:: + -- -Short name or login of the user. +Username of the user involved in the alert -type: keyword -example: a.einstein +type: keyword -- -*`client.user.name.text`*:: +*`microsoft.defender_atp.evidence.entityType`*:: + -- -type: match_only_text +The type of evidence + + +type: keyword -- -*`client.user.roles`*:: +*`microsoft.defender_atp.evidence.userPrincipalName`*:: + -- -Array of user roles at the time of the event. +Principal name of the user involved in the alert -type: keyword -example: ["kibana_admin", "reporting_user"] +type: keyword -- [float] -=== cloud +=== microsoft.m365_defender -Fields related to the cloud or infrastructure the events are coming from. +Module for ingesting Microsoft Defender ATP. -*`cloud.account.id`*:: + +*`microsoft.m365_defender.incidentId`*:: + -- -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +Unique identifier to represent the incident. -type: keyword -example: 666777888999 +type: keyword -- -*`cloud.account.name`*:: +*`microsoft.m365_defender.redirectIncidentId`*:: + -- -The cloud account name or alias used to identify different entities in a multi-tenant environment. -Examples: AWS account name, Google Cloud ORG display name. +Only populated in case an incident is being grouped together with another incident, as part of the incident processing logic. -type: keyword -example: elastic-dev +type: keyword -- -*`cloud.availability_zone`*:: +*`microsoft.m365_defender.incidentName`*:: + -- -Availability zone in which this host, resource, or service is located. +Name of the Incident. -type: keyword -example: us-east-1c +type: keyword -- -*`cloud.instance.id`*:: +*`microsoft.m365_defender.determination`*:: + -- -Instance ID of the host machine. +Specifies the determination of the incident. The property values are: NotAvailable, Apt, Malware, SecurityPersonnel, SecurityTesting, UnwantedSoftware, Other. -type: keyword -example: i-1234567890abcdef0 +type: keyword -- -*`cloud.instance.name`*:: +*`microsoft.m365_defender.investigationState`*:: + -- -Instance name of the host machine. +The current state of the Investigation. + type: keyword -- -*`cloud.machine.type`*:: +*`microsoft.m365_defender.assignedTo`*:: + -- -Machine type of the host machine. +Owner of the alert. -type: keyword -example: t2.medium +type: keyword -- -*`cloud.origin.account.id`*:: +*`microsoft.m365_defender.tags`*:: + -- -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +Array of custom tags associated with an incident, for example to flag a group of incidents with a common characteristic. -type: keyword -example: 666777888999 +type: keyword -- -*`cloud.origin.account.name`*:: +*`microsoft.m365_defender.status`*:: + -- -The cloud account name or alias used to identify different entities in a multi-tenant environment. -Examples: AWS account name, Google Cloud ORG display name. +Specifies the current status of the alert. Possible values are: 'Unknown', 'New', 'InProgress' and 'Resolved'. -type: keyword -example: elastic-dev +type: keyword -- -*`cloud.origin.availability_zone`*:: +*`microsoft.m365_defender.classification`*:: + -- -Availability zone in which this host, resource, or service is located. +Specification of the alert. Possible values are: 'Unknown', 'FalsePositive', 'TruePositive'. -type: keyword -example: us-east-1c +type: keyword -- -*`cloud.origin.instance.id`*:: +*`microsoft.m365_defender.alerts.incidentId`*:: + -- -Instance ID of the host machine. +Unique identifier to represent the incident this alert is associated with. -type: keyword -example: i-1234567890abcdef0 +type: keyword -- -*`cloud.origin.instance.name`*:: +*`microsoft.m365_defender.alerts.resolvedTime`*:: + -- -Instance name of the host machine. +Time when alert was resolved. -type: keyword + +type: date -- -*`cloud.origin.machine.type`*:: +*`microsoft.m365_defender.alerts.status`*:: + -- -Machine type of the host machine. +Categorize alerts (as New, Active, or Resolved). -type: keyword -example: t2.medium +type: keyword -- -*`cloud.origin.project.id`*:: +*`microsoft.m365_defender.alerts.severity`*:: + -- -The cloud project identifier. -Examples: Google Cloud Project id, Azure Project id. +The severity of the related alert. -type: keyword -example: my-project +type: keyword -- -*`cloud.origin.project.name`*:: +*`microsoft.m365_defender.alerts.creationTime`*:: + -- -The cloud project name. -Examples: Google Cloud Project name, Azure Project name. +Time when alert was first created. -type: keyword -example: my project +type: date -- -*`cloud.origin.provider`*:: +*`microsoft.m365_defender.alerts.lastUpdatedTime`*:: + -- -Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. +Time when alert was last updated. -type: keyword -example: aws +type: date -- -*`cloud.origin.region`*:: +*`microsoft.m365_defender.alerts.investigationId`*:: + -- -Region in which this host, resource, or service is located. +The automated investigation id triggered by this alert. -type: keyword -example: us-east-1 +type: keyword -- -*`cloud.origin.service.name`*:: +*`microsoft.m365_defender.alerts.userSid`*:: + -- -The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server. -Examples: app engine, app service, cloud run, fargate, lambda. +The SID of the related user -type: keyword -example: lambda +type: keyword -- -*`cloud.project.id`*:: +*`microsoft.m365_defender.alerts.detectionSource`*:: + -- -The cloud project identifier. -Examples: Google Cloud Project id, Azure Project id. +The service that initially detected the threat. -type: keyword -example: my-project +type: keyword -- -*`cloud.project.name`*:: +*`microsoft.m365_defender.alerts.classification`*:: + -- -The cloud project name. -Examples: Google Cloud Project name, Azure Project name. +The specification for the incident. The property values are: Unknown, FalsePositive, TruePositive or null. -type: keyword -example: my project +type: keyword -- -*`cloud.provider`*:: +*`microsoft.m365_defender.alerts.investigationState`*:: + -- -Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. +Information on the investigation's current status. -type: keyword -example: aws +type: keyword -- -*`cloud.region`*:: +*`microsoft.m365_defender.alerts.determination`*:: + -- -Region in which this host, resource, or service is located. +Specifies the determination of the incident. The property values are: NotAvailable, Apt, Malware, SecurityPersonnel, SecurityTesting, UnwantedSoftware, Other or null -type: keyword -example: us-east-1 +type: keyword -- -*`cloud.service.name`*:: +*`microsoft.m365_defender.alerts.assignedTo`*:: + -- -The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server. -Examples: app engine, app service, cloud run, fargate, lambda. +Owner of the incident, or null if no owner is assigned. -type: keyword -example: lambda +type: keyword -- -*`cloud.target.account.id`*:: +*`microsoft.m365_defender.alerts.actorName`*:: + -- -The cloud account or organization id used to identify different entities in a multi-tenant environment. -Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. +The activity group, if any, the associated with this alert. -type: keyword -example: 666777888999 +type: keyword -- -*`cloud.target.account.name`*:: +*`microsoft.m365_defender.alerts.threatFamilyName`*:: + -- -The cloud account name or alias used to identify different entities in a multi-tenant environment. -Examples: AWS account name, Google Cloud ORG display name. +Threat family associated with this alert. -type: keyword -example: elastic-dev +type: keyword -- -*`cloud.target.availability_zone`*:: +*`microsoft.m365_defender.alerts.mitreTechniques`*:: + -- -Availability zone in which this host, resource, or service is located. +The attack techniques, as aligned with the MITRE ATT&CK™ framework. -type: keyword -example: us-east-1c +type: keyword -- -*`cloud.target.instance.id`*:: +*`microsoft.m365_defender.alerts.entities.entityType`*:: + -- -Instance ID of the host machine. +Entities that have been identified to be part of, or related to, a given alert. The properties values are: User, Ip, Url, File, Process, MailBox, MailMessage, MailCluster, Registry. -type: keyword -example: i-1234567890abcdef0 +type: keyword -- -*`cloud.target.instance.name`*:: +*`microsoft.m365_defender.alerts.entities.accountName`*:: + -- -Instance name of the host machine. +Account name of the related user. + type: keyword -- -*`cloud.target.machine.type`*:: +*`microsoft.m365_defender.alerts.entities.mailboxDisplayName`*:: + -- -Machine type of the host machine. +The display name of the related mailbox. -type: keyword -example: t2.medium +type: keyword -- -*`cloud.target.project.id`*:: +*`microsoft.m365_defender.alerts.entities.mailboxAddress`*:: + -- -The cloud project identifier. -Examples: Google Cloud Project id, Azure Project id. +The mail address of the related mailbox. -type: keyword -example: my-project +type: keyword -- -*`cloud.target.project.name`*:: +*`microsoft.m365_defender.alerts.entities.clusterBy`*:: + -- -The cloud project name. -Examples: Google Cloud Project name, Azure Project name. +A list of metadata if the entityType is MailCluster. -type: keyword -example: my project +type: keyword -- -*`cloud.target.provider`*:: +*`microsoft.m365_defender.alerts.entities.sender`*:: + -- -Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. +The sender for the related email message. -type: keyword -example: aws +type: keyword -- -*`cloud.target.region`*:: +*`microsoft.m365_defender.alerts.entities.recipient`*:: + -- -Region in which this host, resource, or service is located. +The recipient for the related email message. -type: keyword -example: us-east-1 +type: keyword -- -*`cloud.target.service.name`*:: +*`microsoft.m365_defender.alerts.entities.subject`*:: + -- -The cloud service name is intended to distinguish services running on different platforms within a provider, eg AWS EC2 vs Lambda, GCP GCE vs App Engine, Azure VM vs App Server. -Examples: app engine, app service, cloud run, fargate, lambda. +The subject for the related email message. + type: keyword -example: lambda +-- +*`microsoft.m365_defender.alerts.entities.deliveryAction`*:: ++ -- +The delivery status for the related email message. -[float] -=== code_signature -These fields contain information about binary code signatures. +type: keyword +-- -*`code_signature.digest_algorithm`*:: +*`microsoft.m365_defender.alerts.entities.securityGroupId`*:: + -- -The hashing algorithm used to sign the process. -This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. +The Security Group ID for the user related to the email message. -type: keyword -example: sha256 +type: keyword -- -*`code_signature.exists`*:: +*`microsoft.m365_defender.alerts.entities.securityGroupName`*:: + -- -Boolean to capture if a signature is present. +The Security Group Name for the user related to the email message. -type: boolean -example: true +type: keyword -- -*`code_signature.signing_id`*:: +*`microsoft.m365_defender.alerts.entities.registryHive`*:: + -- -The identifier used to sign the process. -This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. +Reference to which Hive in registry the event is related to, if eventType is registry. Example: HKEY_LOCAL_MACHINE. -type: keyword -example: com.apple.xpc.proxy +type: keyword -- -*`code_signature.status`*:: +*`microsoft.m365_defender.alerts.entities.registryKey`*:: + -- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. +Reference to the related registry key to the event. -type: keyword -example: ERROR_UNTRUSTED_ROOT +type: keyword -- -*`code_signature.subject_name`*:: +*`microsoft.m365_defender.alerts.entities.registryValueType`*:: + -- -Subject name of the code signer +Value type of the registry key/value pair related to the event. -type: keyword -example: Microsoft Corporation +type: keyword -- -*`code_signature.team_id`*:: +*`microsoft.m365_defender.alerts.entities.deviceId`*:: + -- -The team identifier used to sign the process. -This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. +The unique ID of the device related to the event. -type: keyword -example: EQHXZ8M8AV +type: keyword -- -*`code_signature.timestamp`*:: +*`microsoft.m365_defender.alerts.entities.ipAddress`*:: + -- -Date and time when the code signature was generated and signed. +The related IP address to the event. -type: date -example: 2021-01-01T12:10:30Z +type: keyword -- -*`code_signature.trusted`*:: +*`microsoft.m365_defender.alerts.devices`*:: + -- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +The devices related to the investigation. -type: boolean -example: true +type: flattened -- -*`code_signature.valid`*:: -+ --- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. +[[exported-fields-misp]] +== MISP fields -type: boolean +Module for handling threat information from MISP. -example: true --- [float] -=== container +=== misp -Container fields are used for meta information about the specific container that is the source of information. These fields help correlate data based containers from any runtime. +Fields from MISP threat information. -*`container.cpu.usage`*:: -+ --- -Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. Scaling factor: 1000. -type: scaled_float +[float] +=== attack_pattern --- +Fields provide support for specifying information about attack patterns. -*`container.disk.read.bytes`*:: + + +*`misp.attack_pattern.id`*:: + -- -The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection. +Identifier of the threat indicator. -type: long + +type: keyword -- -*`container.disk.write.bytes`*:: +*`misp.attack_pattern.name`*:: + -- -The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection. +Name of the attack pattern. -type: long + +type: keyword -- -*`container.id`*:: +*`misp.attack_pattern.description`*:: + -- -Unique container id. +Description of the attack pattern. -type: keyword + +type: text -- -*`container.image.name`*:: +*`misp.attack_pattern.kill_chain_phases`*:: + -- -Name of the image the container was built on. +The kill chain phase(s) to which this attack pattern corresponds. + type: keyword -- -*`container.image.tag`*:: +[float] +=== campaign + +Fields provide support for specifying information about campaigns. + + + +*`misp.campaign.id`*:: + -- -Container image tags. +Identifier of the campaign. + type: keyword -- -*`container.labels`*:: +*`misp.campaign.name`*:: + -- -Image labels. +Name of the campaign. -type: object + +type: keyword -- -*`container.memory.usage`*:: +*`misp.campaign.description`*:: + -- -Memory usage percentage and it ranges from 0 to 1. Scaling factor: 1000. +Description of the campaign. -type: scaled_float + +type: text -- -*`container.name`*:: +*`misp.campaign.aliases`*:: + -- -Container name. +Alternative names used to identify this campaign. -type: keyword + +type: text -- -*`container.network.egress.bytes`*:: +*`misp.campaign.first_seen`*:: + -- -The number of bytes (gauge) sent out on all network interfaces by the container since the last metric collection. +The time that this Campaign was first seen, in RFC3339 format. -type: long + +type: date -- -*`container.network.ingress.bytes`*:: +*`misp.campaign.last_seen`*:: + -- -The number of bytes received (gauge) on all network interfaces by the container since the last metric collection. +The time that this Campaign was last seen, in RFC3339 format. -type: long + +type: date -- -*`container.runtime`*:: +*`misp.campaign.objective`*:: + -- -Runtime managing this container. +This field defines the Campaign's primary goal, objective, desired outcome, or intended effect. -type: keyword -example: docker +type: keyword -- [float] -=== data_stream +=== course_of_action -The data_stream fields take part in defining the new data stream naming scheme. -In the new data stream naming scheme the value of the data stream fields combine to the name of the actual data stream in the following manner: `{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. This means the fields can only contain characters that are valid as part of names of data streams. More details about this can be found in this https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme[blog post]. -An Elasticsearch data stream consists of one or more backing indices, and a data stream name forms part of the backing indices names. Due to this convention, data streams must also follow index naming restrictions. For example, data stream names cannot include `\`, `/`, `*`, `?`, `"`, `<`, `>`, `|`, ` ` (space character), `,`, or `#`. Please see the Elasticsearch reference for additional https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params[restrictions]. +A Course of Action is an action taken either to prevent an attack or to respond to an attack that is in progress. -*`data_stream.dataset`*:: + +*`misp.course_of_action.id`*:: + -- -The field can contain anything that makes sense to signify the source of the data. -Examples include `nginx.access`, `prometheus`, `endpoint` etc. For data streams that otherwise fit, but that do not have dataset set we use the value "generic" for the dataset value. `event.dataset` should have the same value as `data_stream.dataset`. -Beyond the Elasticsearch data stream naming criteria noted above, the `dataset` value has additional restrictions: - * Must not contain `-` - * No longer than 100 characters +Identifier of the Course of Action. -type: constant_keyword -example: nginx.access +type: keyword -- -*`data_stream.namespace`*:: +*`misp.course_of_action.name`*:: + -- -A user defined namespace. Namespaces are useful to allow grouping of data. -Many users already organize their indices this way, and the data stream naming scheme now provides this best practice as a default. Many users will populate this field with `default`. If no value is used, it falls back to `default`. -Beyond the Elasticsearch index naming criteria noted above, `namespace` value has the additional restrictions: - * Must not contain `-` - * No longer than 100 characters +The name used to identify the Course of Action. -type: constant_keyword -example: production +type: keyword -- -*`data_stream.type`*:: +*`misp.course_of_action.description`*:: + -- -An overarching type for the data stream. -Currently allowed values are "logs" and "metrics". We expect to also add "traces" and "synthetics" in the near future. +Description of the Course of Action. -type: constant_keyword -example: logs +type: text -- [float] -=== destination +=== identity -Destination fields capture details about the receiver of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction. -Destination fields are usually populated in conjunction with source fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated. +Identity can represent actual individuals, organizations, or groups, as well as classes of individuals, organizations, or groups. -*`destination.address`*:: + +*`misp.identity.id`*:: + -- -Some event destination addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. +Identifier of the Identity. + type: keyword -- -*`destination.as.number`*:: +*`misp.identity.name`*:: + -- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. +The name used to identify the Identity. -type: long -example: 15169 +type: keyword -- -*`destination.as.organization.name`*:: +*`misp.identity.description`*:: + -- -Organization name. +Description of the Identity. -type: keyword -example: Google LLC +type: text -- -*`destination.as.organization.name.text`*:: +*`misp.identity.identity_class`*:: + -- -type: match_only_text +The type of entity that this Identity describes, e.g., an individual or organization. Open Vocab - identity-class-ov + + +type: keyword -- -*`destination.bytes`*:: +*`misp.identity.labels`*:: + -- -Bytes sent from the destination to the source. +The list of roles that this Identity performs. -type: long -example: 184 +type: keyword + +example: CEO -format: bytes -- -*`destination.domain`*:: +*`misp.identity.sectors`*:: + -- -The domain name of the destination system. -This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. +The list of sectors that this Identity belongs to. Open Vocab - industry-sector-ov -type: keyword -example: foo.example.com +type: keyword -- -*`destination.geo.city_name`*:: +*`misp.identity.contact_information`*:: + -- -City name. +The contact information (e-mail, phone number, etc.) for this Identity. -type: keyword -example: Montreal +type: text -- -*`destination.geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. +[float] +=== intrusion_set -type: keyword +An Intrusion Set is a grouped set of adversary behavior and resources with common properties that is believed to be orchestrated by a single organization. -example: NA --- -*`destination.geo.continent_name`*:: +*`misp.intrusion_set.id`*:: + -- -Name of the continent. +Identifier of the Intrusion Set. -type: keyword -example: North America +type: keyword -- -*`destination.geo.country_iso_code`*:: +*`misp.intrusion_set.name`*:: + -- -Country ISO code. +The name used to identify the Intrusion Set. -type: keyword -example: CA +type: keyword -- -*`destination.geo.country_name`*:: +*`misp.intrusion_set.description`*:: + -- -Country name. +Description of the Intrusion Set. -type: keyword -example: Canada +type: text -- -*`destination.geo.location`*:: +*`misp.intrusion_set.aliases`*:: + -- -Longitude and latitude. +Alternative names used to identify the Intrusion Set. -type: geo_point -example: { "lon": -73.614830, "lat": 45.505918 } +type: text -- -*`destination.geo.name`*:: +*`misp.intrusion_set.first_seen`*:: + -- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. +The time that this Intrusion Set was first seen, in RFC3339 format. -type: keyword -example: boston-dc +type: date -- -*`destination.geo.postal_code`*:: +*`misp.intrusion_set.last_seen`*:: + -- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. +The time that this Intrusion Set was last seen, in RFC3339 format. -type: keyword -example: 94040 +type: date -- -*`destination.geo.region_iso_code`*:: +*`misp.intrusion_set.goals`*:: + -- -Region ISO code. +The high level goals of this Intrusion Set, namely, what are they trying to do. -type: keyword -example: CA-QC +type: text -- -*`destination.geo.region_name`*:: +*`misp.intrusion_set.resource_level`*:: + -- -Region name. +This defines the organizational level at which this Intrusion Set typically works. Open Vocab - attack-resource-level-ov -type: keyword -example: Quebec +type: text -- -*`destination.geo.timezone`*:: +*`misp.intrusion_set.primary_motivation`*:: + -- -The time zone of the location, such as IANA time zone name. +The primary reason, motivation, or purpose behind this Intrusion Set. Open Vocab - attack-motivation-ov -type: keyword -example: America/Argentina/Buenos_Aires +type: text -- -*`destination.ip`*:: +*`misp.intrusion_set.secondary_motivations`*:: + -- -IP address of the destination (IPv4 or IPv6). +The secondary reasons, motivations, or purposes behind this Intrusion Set. Open Vocab - attack-motivation-ov -type: ip --- +type: text -*`destination.mac`*:: -+ -- -MAC address of the destination. -The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. - -type: keyword - -example: 00-00-5E-00-53-23 --- +[float] +=== malware -*`destination.nat.ip`*:: -+ --- -Translated ip of destination based NAT sessions (e.g. internet to private DMZ) -Typically used with load balancers, firewalls, or routers. +Malware is a type of TTP that is also known as malicious code and malicious software, refers to a program that is inserted into a system, usually covertly, with the intent of compromising the confidentiality, integrity, or availability of the victim's data, applications, or operating system (OS) or of otherwise annoying or disrupting the victim. -type: ip --- -*`destination.nat.port`*:: +*`misp.malware.id`*:: + -- -Port the source session is translated to by NAT Device. -Typically used with load balancers, firewalls, or routers. +Identifier of the Malware. -type: long -format: string +type: keyword -- -*`destination.packets`*:: +*`misp.malware.name`*:: + -- -Packets sent from the destination to the source. +The name used to identify the Malware. -type: long -example: 12 +type: keyword -- -*`destination.port`*:: +*`misp.malware.description`*:: + -- -Port of the destination. +Description of the Malware. -type: long -format: string +type: text -- -*`destination.registered_domain`*:: +*`misp.malware.labels`*:: + -- -The highest registered destination domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". +The type of malware being described. Open Vocab - malware-label-ov. adware,backdoor,bot,ddos,dropper,exploit-kit,keylogger,ransomware, remote-access-trojan,resource-exploitation,rogue-security-software,rootkit, screen-capture,spyware,trojan,virus,worm -type: keyword -example: example.com +type: keyword -- -*`destination.subdomain`*:: +*`misp.malware.kill_chain_phases`*:: + -- -The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. -For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. +The list of kill chain phases for which this Malware instance can be used. + type: keyword -example: east +format: string -- -*`destination.top_level_domain`*:: -+ --- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". +[float] +=== note -type: keyword +A Note is a comment or note containing informative text to help explain the context of one or more STIX Objects (SDOs or SROs) or to provide additional analysis that is not contained in the original object. -example: co.uk --- -*`destination.user.domain`*:: +*`misp.note.id`*:: + -- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. +Identifier of the Note. + type: keyword -- -*`destination.user.email`*:: +*`misp.note.summary`*:: + -- -User email address. +A brief description used as a summary of the Note. + type: keyword -- -*`destination.user.full_name`*:: +*`misp.note.description`*:: + -- -User's full name, if available. +The content of the Note. -type: keyword -example: Albert Einstein +type: text -- -*`destination.user.full_name.text`*:: +*`misp.note.authors`*:: + -- -type: match_only_text +The name of the author(s) of this Note. + + +type: keyword -- -*`destination.user.group.domain`*:: +*`misp.note.object_refs`*:: + -- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. +The STIX Objects (SDOs and SROs) that the note is being applied to. + type: keyword -- -*`destination.user.group.id`*:: +[float] +=== threat_indicator + +Fields provide support for specifying information about threat indicators, and related matching patterns. + + + +*`misp.threat_indicator.labels`*:: + -- -Unique identifier for the group on the system/platform. +list of type open-vocab that specifies the type of indicator. + type: keyword +example: Domain Watchlist + + -- -*`destination.user.group.name`*:: +*`misp.threat_indicator.id`*:: + -- -Name of the group. +Identifier of the threat indicator. + type: keyword -- -*`destination.user.hash`*:: +*`misp.threat_indicator.version`*:: + -- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. +Version of the threat indicator. + type: keyword -- -*`destination.user.id`*:: +*`misp.threat_indicator.type`*:: + -- -Unique identifier of the user. +Type of the threat indicator. -type: keyword -example: S-1-5-21-202424912787-2692429404-2351956786-1000 +type: keyword -- -*`destination.user.name`*:: +*`misp.threat_indicator.description`*:: + -- -Short name or login of the user. +Description of the threat indicator. -type: keyword -example: a.einstein +type: text -- -*`destination.user.name.text`*:: +*`misp.threat_indicator.feed`*:: + -- -type: match_only_text +Name of the threat feed. + + +type: text -- -*`destination.user.roles`*:: +*`misp.threat_indicator.valid_from`*:: + -- -Array of user roles at the time of the event. +The time from which this Indicator should be considered valuable intelligence, in RFC3339 format. -type: keyword -example: ["kibana_admin", "reporting_user"] +type: date -- -[float] -=== dll +*`misp.threat_indicator.valid_until`*:: ++ +-- +The time at which this Indicator should no longer be considered valuable intelligence. If the valid_until property is omitted, then there is no constraint on the latest time for which the indicator should be used, in RFC3339 format. -These fields contain information about code libraries dynamically loaded into processes. -Many operating systems refer to "shared code libraries" with different names, but this field set refers to all of the following: -* Dynamic-link library (`.dll`) commonly used on Windows -* Shared Object (`.so`) commonly used on Unix-like operating systems -* Dynamic library (`.dylib`) commonly used on macOS +type: date +-- -*`dll.code_signature.digest_algorithm`*:: +*`misp.threat_indicator.severity`*:: + -- -The hashing algorithm used to sign the process. -This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. +Threat severity to which this indicator corresponds. + type: keyword -example: sha256 +example: high + +format: string -- -*`dll.code_signature.exists`*:: +*`misp.threat_indicator.confidence`*:: + -- -Boolean to capture if a signature is present. +Confidence level to which this indicator corresponds. -type: boolean -example: true +type: keyword + +example: high -- -*`dll.code_signature.signing_id`*:: +*`misp.threat_indicator.kill_chain_phases`*:: + -- -The identifier used to sign the process. -This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. +The kill chain phase(s) to which this indicator corresponds. + type: keyword -example: com.apple.xpc.proxy +format: string -- -*`dll.code_signature.status`*:: +*`misp.threat_indicator.mitre_tactic`*:: + -- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. +MITRE tactics to which this indicator corresponds. + type: keyword -example: ERROR_UNTRUSTED_ROOT +example: Initial Access + +format: string -- -*`dll.code_signature.subject_name`*:: +*`misp.threat_indicator.mitre_technique`*:: + -- -Subject name of the code signer +MITRE techniques to which this indicator corresponds. + type: keyword -example: Microsoft Corporation +example: Drive-by Compromise + +format: string -- -*`dll.code_signature.team_id`*:: +*`misp.threat_indicator.attack_pattern`*:: + -- -The team identifier used to sign the process. -This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. +The attack_pattern for this indicator is a STIX Pattern as specified in STIX Version 2.0 Part 5 - STIX Patterning. + type: keyword -example: EQHXZ8M8AV +example: [destination:ip = '91.219.29.188/32'] + -- -*`dll.code_signature.timestamp`*:: +*`misp.threat_indicator.attack_pattern_kql`*:: + -- -Date and time when the code signature was generated and signed. +The attack_pattern for this indicator is KQL query that matches the attack_pattern specified in the STIX Pattern format. -type: date -example: 2021-01-01T12:10:30Z +type: keyword + +example: destination.ip: "91.219.29.188/32" + -- -*`dll.code_signature.trusted`*:: +*`misp.threat_indicator.negate`*:: + -- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +When set to true, it specifies the absence of the attack_pattern. -type: boolean -example: true +type: boolean -- -*`dll.code_signature.valid`*:: +*`misp.threat_indicator.intrusion_set`*:: + -- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. +Name of the intrusion set if known. -type: boolean -example: true +type: keyword -- -*`dll.hash.md5`*:: +*`misp.threat_indicator.campaign`*:: + -- -MD5 hash. +Name of the attack campaign if known. + type: keyword -- -*`dll.hash.sha1`*:: +*`misp.threat_indicator.threat_actor`*:: + -- -SHA1 hash. +Name of the threat actor if known. + type: keyword -- -*`dll.hash.sha256`*:: -+ --- -SHA256 hash. +[float] +=== observed_data -type: keyword +Observed data conveys information that was observed on systems and networks, such as log data or network traffic, using the Cyber Observable specification. --- -*`dll.hash.sha512`*:: + +*`misp.observed_data.id`*:: + -- -SHA512 hash. +Identifier of the Observed Data. + type: keyword -- -*`dll.hash.ssdeep`*:: +*`misp.observed_data.first_observed`*:: + -- -SSDEEP hash. +The beginning of the time window that the data was observed, in RFC3339 format. -type: keyword + +type: date -- -*`dll.name`*:: +*`misp.observed_data.last_observed`*:: + -- -Name of the library. -This generally maps to the name of the file on disk. +The end of the time window that the data was observed, in RFC3339 format. -type: keyword -example: kernel32.dll +type: date -- -*`dll.path`*:: +*`misp.observed_data.number_observed`*:: + -- -Full file path of the library. +The number of times the data represented in the objects property was observed. This MUST be an integer between 1 and 999,999,999 inclusive. -type: keyword -example: C:\Windows\System32\kernel32.dll +type: integer -- -*`dll.pe.architecture`*:: +*`misp.observed_data.objects`*:: + -- -CPU architecture target for the file. +A dictionary of Cyber Observable Objects that describes the single fact that was observed. -type: keyword -example: x64 +type: keyword -- -*`dll.pe.company`*:: +[float] +=== report + +Reports are collections of threat intelligence focused on one or more topics, such as a description of a threat actor, malware, or attack technique, including context and related details. + + + +*`misp.report.id`*:: + -- -Internal company name of the file, provided at compile-time. +Identifier of the Report. -type: keyword -example: Microsoft Corporation +type: keyword -- -*`dll.pe.description`*:: +*`misp.report.labels`*:: + -- -Internal description of the file, provided at compile-time. +This field is an Open Vocabulary that specifies the primary subject of this report. Open Vocab - report-label-ov. threat-report,attack-pattern,campaign,identity,indicator,malware,observed-data,threat-actor,tool,vulnerability -type: keyword -example: Paint +type: keyword -- -*`dll.pe.file_version`*:: +*`misp.report.name`*:: + -- -Internal version of the file, provided at compile-time. +The name used to identify the Report. -type: keyword -example: 6.3.9600.17415 +type: keyword -- -*`dll.pe.imphash`*:: +*`misp.report.description`*:: + -- -A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. -Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. +A description that provides more details and context about Report. -type: keyword -example: 0c6803c4e922103c4dca5963aad36ddf +type: text -- -*`dll.pe.original_file_name`*:: +*`misp.report.published`*:: + -- -Internal name of the file, provided at compile-time. +The date that this report object was officially published by the creator of this report, in RFC3339 format. -type: keyword -example: MSPAINT.EXE +type: date -- -*`dll.pe.product`*:: +*`misp.report.object_refs`*:: + -- -Internal product name of the file, provided at compile-time. +Specifies the STIX Objects that are referred to by this Report. -type: keyword -example: Microsoft® Windows® Operating System +type: text -- [float] -=== dns +=== threat_actor -Fields describing DNS queries and answers. -DNS events should either represent a single DNS query prior to getting answers (`dns.type:query`) or they should represent a full exchange and contain the query details as well as all of the answers that were provided for this query (`dns.type:answer`). +Threat Actors are actual individuals, groups, or organizations believed to be operating with malicious intent. -*`dns.answers`*:: + +*`misp.threat_actor.id`*:: + -- -An array containing an object for each answer section returned by the server. -The main keys that should be present in these objects are defined by ECS. Records that have more information may contain more keys than what ECS defines. -Not all DNS data sources give all details about DNS answers. At minimum, answer objects must contain the `data` key. If more information is available, map as much of it to ECS as possible, and add any additional fields to the answer objects as custom fields. +Identifier of the Threat Actor. -type: object + +type: keyword -- -*`dns.answers.class`*:: +*`misp.threat_actor.labels`*:: + -- -The class of DNS data contained in this resource record. +This field specifies the type of threat actor. Open Vocab - threat-actor-label-ov. activist,competitor,crime-syndicate,criminal,hacker,insider-accidental,insider-disgruntled,nation-state,sensationalist,spy,terrorist -type: keyword -example: IN +type: keyword -- -*`dns.answers.data`*:: +*`misp.threat_actor.name`*:: + -- -The data describing the resource. -The meaning of this data depends on the type and class of the resource record. +The name used to identify this Threat Actor or Threat Actor group. -type: keyword -example: 10.10.10.10 +type: keyword -- -*`dns.answers.name`*:: +*`misp.threat_actor.description`*:: + -- -The domain name to which this resource record pertains. -If a chain of CNAME is being resolved, each answer's `name` should be the one that corresponds with the answer's `data`. It should not simply be the original `question.name` repeated. +A description that provides more details and context about the Threat Actor. -type: keyword -example: www.example.com +type: text -- -*`dns.answers.ttl`*:: +*`misp.threat_actor.aliases`*:: + -- -The time interval in seconds that this resource record may be cached before it should be discarded. Zero values mean that the data should not be cached. +A list of other names that this Threat Actor is believed to use. -type: long -example: 180 +type: text -- -*`dns.answers.type`*:: +*`misp.threat_actor.roles`*:: + -- -The type of data contained in this resource record. +This is a list of roles the Threat Actor plays. Open Vocab - threat-actor-role-ov. agent,director,independent,sponsor,infrastructure-operator,infrastructure-architect,malware-author -type: keyword -example: CNAME +type: text -- -*`dns.header_flags`*:: +*`misp.threat_actor.goals`*:: + -- -Array of 2 letter DNS header flags. -Expected values are: AA, TC, RD, RA, AD, CD, DO. +The high level goals of this Threat Actor, namely, what are they trying to do. -type: keyword -example: ["RD", "RA"] +type: text -- -*`dns.id`*:: +*`misp.threat_actor.sophistication`*:: + -- -The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response. +The skill, specific knowledge, special training, or expertise a Threat Actor must have to perform the attack. Open Vocab - threat-actor-sophistication-ov. none,minimal,intermediate,advanced,strategic,expert,innovator -type: keyword -example: 62111 +type: text -- -*`dns.op_code`*:: +*`misp.threat_actor.resource_level`*:: + -- -The DNS operation code that specifies the kind of query in the message. This value is set by the originator of a query and copied into the response. +This defines the organizational level at which this Threat Actor typically works. Open Vocab - attack-resource-level-ov. individual,club,contest,team,organization,government -type: keyword -example: QUERY +type: text -- -*`dns.question.class`*:: +*`misp.threat_actor.primary_motivation`*:: + -- -The class of records being queried. +The primary reason, motivation, or purpose behind this Threat Actor. Open Vocab - attack-motivation-ov. accidental,coercion,dominance,ideology,notoriety,organizational-gain,personal-gain,personal-satisfaction,revenge,unpredictable -type: keyword -example: IN +type: text -- -*`dns.question.name`*:: +*`misp.threat_actor.secondary_motivations`*:: + -- -The name being queried. -If the name field contains non-printable characters (below 32 or above 126), those characters should be represented as escaped base 10 integers (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \t, \r, and \n respectively. +The secondary reasons, motivations, or purposes behind this Threat Actor. Open Vocab - attack-motivation-ov. accidental,coercion,dominance,ideology,notoriety,organizational-gain,personal-gain,personal-satisfaction,revenge,unpredictable -type: keyword -example: www.example.com +type: text -- -*`dns.question.registered_domain`*:: +*`misp.threat_actor.personal_motivations`*:: + -- -The highest registered domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". +The personal reasons, motivations, or purposes of the Threat Actor regardless of organizational goals. Open Vocab - attack-motivation-ov. accidental,coercion,dominance,ideology,notoriety,organizational-gain,personal-gain,personal-satisfaction,revenge,unpredictable -type: keyword -example: example.com +type: text -- -*`dns.question.subdomain`*:: -+ --- -The subdomain is all of the labels under the registered_domain. -If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. +[float] +=== tool -type: keyword +Tools are legitimate software that can be used by threat actors to perform attacks. -example: www --- -*`dns.question.top_level_domain`*:: +*`misp.tool.id`*:: + -- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". +Identifier of the Tool. -type: keyword -example: co.uk +type: keyword -- -*`dns.question.type`*:: +*`misp.tool.labels`*:: + -- -The type of record being queried. +The kind(s) of tool(s) being described. Open Vocab - tool-label-ov. denial-of-service,exploitation,information-gathering,network-capture,credential-exploitation,remote-access,vulnerability-scanning -type: keyword -example: AAAA +type: keyword -- -*`dns.resolved_ip`*:: +*`misp.tool.name`*:: + -- -Array containing all IPs seen in `answers.data`. -The `answers` array can be difficult to use, because of the variety of data formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` makes it possible to index them as IP addresses, and makes them easier to visualize and query for. +The name used to identify the Tool. -type: ip -example: ["10.10.10.10", "10.10.10.11"] +type: keyword -- -*`dns.response_code`*:: +*`misp.tool.description`*:: + -- -The DNS response code. +A description that provides more details and context about the Tool. -type: keyword -example: NOERROR +type: text -- -*`dns.type`*:: +*`misp.tool.tool_version`*:: + -- -The type of DNS event captured, query or answer. -If your source of DNS events only gives you DNS queries, you should only create dns events of type `dns.type:query`. -If your source of DNS events gives you answers as well, you should create one event per query (optionally as soon as the query is seen). And a second event containing all query details as well as an array of answers. +The version identifier associated with the Tool. -type: keyword -example: answer +type: keyword -- -[float] -=== ecs - -Meta-information specific to ECS. - - -*`ecs.version`*:: +*`misp.tool.kill_chain_phases`*:: + -- -ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. -When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. - -type: keyword +The list of kill chain phases for which this Tool instance can be used. -example: 1.0.0 -required: True +type: text -- [float] -=== elf +=== vulnerability -These fields contain Linux Executable Linkable Format (ELF) metadata. +A Vulnerability is a mistake in software that can be directly used by a hacker to gain access to a system or network. -*`elf.architecture`*:: + +*`misp.vulnerability.id`*:: + -- -Machine architecture of the ELF file. +Identifier of the Vulnerability. -type: keyword -example: x86-64 +type: keyword -- -*`elf.byte_order`*:: +*`misp.vulnerability.name`*:: + -- -Byte sequence of ELF file. +The name used to identify the Vulnerability. -type: keyword -example: Little Endian +type: keyword -- -*`elf.cpu_type`*:: +*`misp.vulnerability.description`*:: + -- -CPU type of the ELF file. +A description that provides more details and context about the Vulnerability. -type: keyword -example: Intel +type: text -- -*`elf.creation_date`*:: -+ --- -Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. +[[exported-fields-mongodb]] +== mongodb fields -type: date +Module for parsing MongoDB log files. --- -*`elf.exports`*:: + +[float] +=== mongodb + +Fields from MongoDB logs. + + + +[float] +=== log + +Contains fields from MongoDB logs. + + + +*`mongodb.log.component`*:: + -- -List of exported element names and types. +Functional categorization of message -type: flattened + +type: keyword + +example: COMMAND -- -*`elf.header.abi_version`*:: +*`mongodb.log.context`*:: + -- -Version of the ELF Application Binary Interface (ABI). +Context of message + type: keyword +example: initandlisten + -- -*`elf.header.class`*:: +*`mongodb.log.severity`*:: + -- -Header class of the ELF file. +type: alias -type: keyword +alias to: log.level -- -*`elf.header.data`*:: +*`mongodb.log.message`*:: + -- -Data table of the ELF header. +type: alias -type: keyword +alias to: message -- -*`elf.header.entrypoint`*:: +*`mongodb.log.id`*:: + -- -Header entrypoint of the ELF file. +Integer representing the unique identifier of the log statement + type: long -format: string +example: 4615611 -- -*`elf.header.object_version`*:: -+ --- -"0x1" for original ELF files. +[[exported-fields-mssql]] +== mssql fields -type: keyword +MS SQL Filebeat Module --- -*`elf.header.os_abi`*:: -+ --- -Application Binary Interface (ABI) of the Linux OS. +[float] +=== mssql -type: keyword +Fields from the MSSQL log files --- -*`elf.header.type`*:: -+ --- -Header type of the ELF file. +[float] +=== log -type: keyword +Common log fields --- -*`elf.header.version`*:: +*`mssql.log.origin`*:: + -- -Version of the ELF header. +Origin of the message, usually the server but it can also be a recovery process type: keyword -- -*`elf.imports`*:: -+ --- -List of imported element names and types. +[[exported-fields-mysql]] +== MySQL fields -type: flattened +Module for parsing the MySQL log files. --- -*`elf.sections`*:: -+ --- -An array containing an object for each section of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. -type: nested +[float] +=== mysql --- +Fields from the MySQL log files. -*`elf.sections.chi2`*:: + + +*`mysql.thread_id`*:: + -- -Chi-square probability distribution of the section. +The connection or thread ID for the query. -type: long -format: number +type: long -- -*`elf.sections.entropy`*:: +[float] +=== error + +Contains fields from the MySQL error logs. + + + +*`mysql.error.thread_id`*:: + -- -Shannon entropy calculation from the section. - -type: long +type: alias -format: number +alias to: mysql.thread_id -- -*`elf.sections.flags`*:: +*`mysql.error.level`*:: + -- -ELF Section List flags. +type: alias -type: keyword +alias to: log.level -- -*`elf.sections.name`*:: +*`mysql.error.message`*:: + -- -ELF Section List name. +type: alias -type: keyword +alias to: message -- -*`elf.sections.physical_offset`*:: +[float] +=== slowlog + +Contains fields from the MySQL slow logs. + + + +*`mysql.slowlog.lock_time.sec`*:: + -- -ELF Section List offset. +The amount of time the query waited for the lock to be available. The value is in seconds, as a floating point number. -type: keyword + +type: float -- -*`elf.sections.physical_size`*:: +*`mysql.slowlog.rows_sent`*:: + -- -ELF Section List physical size. +The number of rows returned by the query. -type: long -format: bytes +type: long -- -*`elf.sections.type`*:: +*`mysql.slowlog.rows_examined`*:: + -- -ELF Section List type. +The number of rows scanned by the query. -type: keyword + +type: long -- -*`elf.sections.virtual_address`*:: +*`mysql.slowlog.rows_affected`*:: + -- -ELF Section List virtual address. +The number of rows modified by the query. -type: long -format: string +type: long -- -*`elf.sections.virtual_size`*:: +*`mysql.slowlog.bytes_sent`*:: + -- -ELF Section List virtual size. +The number of bytes sent to client. + type: long -format: string +format: bytes -- -*`elf.segments`*:: +*`mysql.slowlog.bytes_received`*:: + -- -An array containing an object for each segment of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. +The number of bytes received from client. -type: nested + +type: long + +format: bytes -- -*`elf.segments.sections`*:: +*`mysql.slowlog.query`*:: + -- -ELF object segment sections. +The slow query. -type: keyword -- -*`elf.segments.type`*:: +*`mysql.slowlog.id`*:: + -- -ELF object segment type. +type: alias -type: keyword +alias to: mysql.thread_id -- -*`elf.shared_libraries`*:: +*`mysql.slowlog.schema`*:: + -- -List of shared libraries used by this ELF object. +The schema where the slow query was executed. + type: keyword -- -*`elf.telfhash`*:: +*`mysql.slowlog.current_user`*:: + -- -telfhash symbol hash for ELF file. +Current authenticated user, used to determine access privileges. Can differ from the value for user. + type: keyword -- -[float] -=== error - -These fields can represent errors of any kind. -Use them for errors that happen while fetching events or in cases where the event itself contains an error. - - -*`error.code`*:: +*`mysql.slowlog.last_errno`*:: + -- -Error code describing the error. +Last SQL error seen. + type: keyword -- -*`error.id`*:: +*`mysql.slowlog.killed`*:: + -- -Unique identifier for the error. +Code of the reason if the query was killed. + type: keyword -- -*`error.message`*:: +*`mysql.slowlog.query_cache_hit`*:: + -- -Error message. +Whether the query cache was hit. -type: match_only_text + +type: boolean -- -*`error.stack_trace`*:: +*`mysql.slowlog.tmp_table`*:: + -- -The stack trace of this error in plain text. +Whether a temporary table was used to resolve the query. -type: wildcard + +type: boolean -- -*`error.stack_trace.text`*:: +*`mysql.slowlog.tmp_table_on_disk`*:: + -- -type: match_only_text +Whether the query needed temporary tables on disk. + + +type: boolean -- -*`error.type`*:: +*`mysql.slowlog.tmp_tables`*:: + -- -The type of the error, for example the class name of the exception. +Number of temporary tables created for this query -type: keyword -example: java.lang.NullPointerException +type: long -- -[float] -=== event - -The event fields are used for context information about the log or metric event itself. -A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host and device temperature. See the `event.kind` definition in this section for additional details about metric and state events. - - -*`event.action`*:: +*`mysql.slowlog.tmp_disk_tables`*:: + -- -The action captured by the event. -This describes the information in the event. It is more specific than `event.category`. Examples are `group-add`, `process-started`, `file-created`. The value is normally defined by the implementer. +Number of temporary tables created on disk for this query. -type: keyword -example: user-password-change +type: long -- -*`event.agent_id_status`*:: +*`mysql.slowlog.tmp_table_sizes`*:: + -- -Agents are normally responsible for populating the `agent.id` field value. If the system receiving events is capable of validating the value based on authentication information for the client then this field can be used to reflect the outcome of that validation. -For example if the agent's connection is authenticated with mTLS and the client cert contains the ID of the agent to which the cert was issued then the `agent.id` value in events can be checked against the certificate. If the values match then `event.agent_id_status: verified` is added to the event, otherwise one of the other allowed values should be used. -If no validation is performed then the field should be omitted. -The allowed values are: -`verified` - The `agent.id` field value matches expected value obtained from auth metadata. -`mismatch` - The `agent.id` field value does not match the expected value obtained from auth metadata. -`missing` - There was no `agent.id` field in the event to validate. -`auth_metadata_missing` - There was no auth metadata or it was missing information about the agent ID. +Size of temporary tables created for this query. -type: keyword +type: long -example: verified +format: bytes -- -*`event.category`*:: +*`mysql.slowlog.filesort`*:: + -- -This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy. -`event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory. -This field is an array. This will allow proper categorization of some events that fall in multiple categories. +Whether filesort optimization was used. -type: keyword -example: authentication +type: boolean -- -*`event.code`*:: +*`mysql.slowlog.filesort_on_disk`*:: + -- -Identification code for this event, if one exists. -Some event sources use event codes to identify messages unambiguously, regardless of message language or wording adjustments over time. An example of this is the Windows Event ID. +Whether filesort optimization was used and it needed temporary tables on disk. -type: keyword -example: 4648 +type: boolean -- -*`event.created`*:: +*`mysql.slowlog.priority_queue`*:: + -- -event.created contains the date/time when the event was first read by an agent, or by your pipeline. -This field is distinct from @timestamp in that @timestamp typically contain the time extracted from the original event. -In most situations, these two timestamps will be slightly different. The difference can be used to calculate the delay between your source generating an event, and the time when your agent first processed it. This can be used to monitor your agent's or pipeline's ability to keep up with your event source. -In case the two timestamps are identical, @timestamp should be used. +Whether a priority queue was used for filesort. -type: date -example: 2016-05-23T08:05:34.857Z +type: boolean -- -*`event.dataset`*:: +*`mysql.slowlog.full_scan`*:: + -- -Name of the dataset. -If an event source publishes more than one type of log or events (e.g. access log, error log), the dataset is used to specify which one the event comes from. -It's recommended but not required to start the dataset name with the module name, followed by a dot, then the dataset name. +Whether a full table scan was needed for the slow query. -type: keyword -example: apache.access +type: boolean -- -*`event.duration`*:: +*`mysql.slowlog.full_join`*:: + -- -Duration of the event in nanoseconds. -If event.start and event.end are known this value should be the difference between the end and start time. +Whether a full join was needed for the slow query (no indexes were used for joins). -type: long -format: duration +type: boolean -- -*`event.end`*:: +*`mysql.slowlog.merge_passes`*:: + -- -event.end contains the date when the event ended or when the activity was last observed. +Number of merge passes executed for the query. -type: date + +type: long -- -*`event.hash`*:: +*`mysql.slowlog.sort_merge_passes`*:: + -- -Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +Number of merge passes that the sort algorithm has had to do. -type: keyword -example: 123456789012345678901234567890ABCD +type: long -- -*`event.id`*:: +*`mysql.slowlog.sort_range_count`*:: + -- -Unique ID to describe the event. +Number of sorts that were done using ranges. -type: keyword -example: 8a4f500d +type: long -- -*`event.ingested`*:: +*`mysql.slowlog.sort_rows`*:: + -- -Timestamp when an event arrived in the central data store. -This is different from `@timestamp`, which is when the event originally occurred. It's also different from `event.created`, which is meant to capture the first time an agent saw the event. -In normal conditions, assuming no tampering, the timestamps should chronologically look like this: `@timestamp` < `event.created` < `event.ingested`. +Number of sorted rows. -type: date -example: 2016-05-23T08:05:35.101Z +type: long -- -*`event.kind`*:: +*`mysql.slowlog.sort_scan_count`*:: + -- -This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy. -`event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events. -The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not. +Number of sorts that were done by scanning the table. -type: keyword -example: alert +type: long -- -*`event.module`*:: +*`mysql.slowlog.log_slow_rate_type`*:: + -- -Name of the module this data is coming from. -If your monitoring agent supports the concept of modules or plugins to process events of a given source (e.g. Apache logs), `event.module` should contain the name of this module. +Type of slow log rate limit, it can be `session` if the rate limit is applied per session, or `query` if it applies per query. -type: keyword -example: apache +type: keyword -- -*`event.original`*:: +*`mysql.slowlog.log_slow_rate_limit`*:: + -- -Raw text message of entire event. Used to demonstrate log integrity or where the full log message (before splitting it up in multiple parts) may be required, e.g. for reindex. -This field is not indexed and doc_values are disabled. It cannot be searched, but it can be retrieved from `_source`. If users wish to override this and index this field, please see `Field data types` in the `Elasticsearch Reference`. - -type: keyword +Slow log rate limit, a value of 100 means that one in a hundred queries or sessions are being logged. -example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 -Field is not indexed. +type: keyword -- -*`event.outcome`*:: +*`mysql.slowlog.read_first`*:: + -- -This is one of four ECS Categorization Fields, and indicates the lowest level in the ECS category hierarchy. -`event.outcome` simply denotes whether the event represents a success or a failure from the perspective of the entity that produced the event. -Note that when a single transaction is described in multiple events, each event may populate different values of `event.outcome`, according to their perspective. -Also note that in the case of a compound event (a single event that contains multiple logical events), this field should be populated with the value that best captures the overall success or failure from the perspective of the event producer. -Further note that not all events will have an associated outcome. For example, this field is generally not populated for metric events, events with `event.type:info`, or any events for which an outcome does not make logical sense. +The number of times the first entry in an index was read. -type: keyword -example: success +type: long -- -*`event.provider`*:: +*`mysql.slowlog.read_last`*:: + -- -Source of the event. -Event transports such as Syslog or the Windows Event Log typically mention the source of an event. It can be the name of the software that generated the event (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing). +The number of times the last key in an index was read. -type: keyword -example: kernel +type: long -- -*`event.reason`*:: +*`mysql.slowlog.read_key`*:: + -- -Reason why this event happened, according to the source. -This describes the why of a particular action or outcome captured in the event. Where `event.action` captures the action from the event, `event.reason` describes why that action was taken. For example, a web proxy with an `event.action` which denied the request may also populate `event.reason` with the reason why (e.g. `blocked site`). +The number of requests to read a row based on a key. -type: keyword -example: Terminated an unexpected process +type: long -- -*`event.reference`*:: +*`mysql.slowlog.read_next`*:: + -- -Reference URL linking to additional information about this event. -This URL links to a static definition of this event. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +The number of requests to read the next row in key order. -type: keyword -example: https://system.example.com/event/#0001234 +type: long -- -*`event.risk_score`*:: +*`mysql.slowlog.read_prev`*:: + -- -Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +The number of requests to read the previous row in key order. -type: float + +type: long -- -*`event.risk_score_norm`*:: +*`mysql.slowlog.read_rnd`*:: + -- -Normalized risk score or priority of the event, on a scale of 0 to 100. -This is mainly useful if you use more than one system that assigns risk scores, and you want to see a normalized value across all systems. +The number of requests to read a row based on a fixed position. -type: float + +type: long -- -*`event.sequence`*:: +*`mysql.slowlog.read_rnd_next`*:: + -- -Sequence number of the event. -The sequence number is a value published by some event sources, to make the exact ordering of events unambiguous, regardless of the timestamp precision. - -type: long +The number of requests to read the next row in the data file. -format: string --- +type: long -*`event.severity`*:: -+ -- -The numeric severity of the event according to your event source. -What the different severity values mean can be different between sources and use cases. It's up to the implementer to make sure severities are consistent across events from the same source. -The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is meant to represent the severity according to the event source (e.g. firewall, IDS). If the event source does not publish its own severity, you may optionally copy the `log.syslog.severity.code` to `event.severity`. -type: long +[float] +=== innodb -example: 7 +Contains fields relative to InnoDB engine -format: string --- -*`event.start`*:: +*`mysql.slowlog.innodb.trx_id`*:: + -- -event.start contains the date when the event started or when the activity was first observed. +Transaction ID -type: date + +type: keyword -- -*`event.timezone`*:: +*`mysql.slowlog.innodb.io_r_ops`*:: + -- -This field should be populated when the event's timestamp does not include timezone information already (e.g. default Syslog timestamps). It's optional otherwise. -Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00"). +Number of page read operations. -type: keyword + +type: long -- -*`event.type`*:: +*`mysql.slowlog.innodb.io_r_bytes`*:: + -- -This is one of four ECS Categorization Fields, and indicates the third level in the ECS category hierarchy. -`event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization. -This field is an array. This will allow proper categorization of some events that fall in multiple event types. +Bytes read during page read operations. -type: keyword + +type: long + +format: bytes -- -*`event.url`*:: +*`mysql.slowlog.innodb.io_r_wait.sec`*:: + -- -URL linking to an external system to continue investigation of this event. -This URL links to another system where in-depth investigation of the specific occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, are a common use case for this field. +How long it took to read all needed data from storage. -type: keyword -example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe +type: long -- -[float] -=== faas +*`mysql.slowlog.innodb.rec_lock_wait.sec`*:: ++ +-- +How long the query waited for locks. -The user fields describe information about the function as a service that is relevant to the event. +type: long -*`faas.coldstart`*:: +-- + +*`mysql.slowlog.innodb.queue_wait.sec`*:: + -- -Boolean value indicating a cold start of a function. +How long the query waited to enter the InnoDB queue and to be executed once in the queue. -type: boolean + +type: long -- -*`faas.execution`*:: +*`mysql.slowlog.innodb.pages_distinct`*:: + -- -The execution ID of the current function execution. +Approximated count of pages accessed to execute the query. -type: keyword -example: af9d5aa4-a685-4c5f-a22b-444f80b3cc28 +type: long -- -*`faas.trigger`*:: +*`mysql.slowlog.user`*:: + -- -Details about the function trigger. +type: alias -type: nested +alias to: user.name -- -*`faas.trigger.request_id`*:: +*`mysql.slowlog.host`*:: + -- -The ID of the trigger request , message, event, etc. - -type: keyword +type: alias -example: 123456789 +alias to: source.domain -- -*`faas.trigger.type`*:: +*`mysql.slowlog.ip`*:: + -- -The trigger for the function execution. -Expected values are: - * http - * pubsub - * datasource - * timer - * other - -type: keyword +type: alias -example: http +alias to: source.ip -- -[float] -=== file +[[exported-fields-mysqlenterprise]] +== MySQL Enterprise fields -A file is defined as a set of information that has been created on, or has existed on a filesystem. -File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. +MySQL Enterprise Audit module -*`file.accessed`*:: -+ --- -Last time the file was accessed. -Note that not all filesystems keep track of access time. -type: date +[float] +=== mysqlenterprise --- +Fields from MySQL Enterprise Logs -*`file.attributes`*:: -+ --- -Array of file attributes. -Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. -type: keyword -example: ["readonly", "system"] +[float] +=== audit --- +Module for parsing MySQL Enterprise Audit Logs -*`file.code_signature.digest_algorithm`*:: + + +*`mysqlenterprise.audit.class`*:: + -- -The hashing algorithm used to sign the process. -This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. +A string representing the event class. The class defines the type of event, when taken together with the event item that specifies the event subclass. -type: keyword -example: sha256 +type: keyword -- -*`file.code_signature.exists`*:: +*`mysqlenterprise.audit.connection_id`*:: + -- -Boolean to capture if a signature is present. +An integer representing the client connection identifier. This is the same as the value returned by the CONNECTION_ID() function within the session. -type: boolean -example: true +type: keyword -- -*`file.code_signature.signing_id`*:: +*`mysqlenterprise.audit.id`*:: + -- -The identifier used to sign the process. -This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. +An unsigned integer representing an event ID. -type: keyword -example: com.apple.xpc.proxy +type: keyword -- -*`file.code_signature.status`*:: +*`mysqlenterprise.audit.connection_data.connection_type`*:: + -- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. +The security state of the connection to the server. Permitted values are tcp/ip (TCP/IP connection established without encryption), ssl (TCP/IP connection established with encryption), socket (Unix socket file connection), named_pipe (Windows named pipe connection), and shared_memory (Windows shared memory connection). -type: keyword -example: ERROR_UNTRUSTED_ROOT +type: keyword -- -*`file.code_signature.subject_name`*:: +*`mysqlenterprise.audit.connection_data.status`*:: + -- -Subject name of the code signer +An integer representing the command status: 0 for success, nonzero if an error occurred. -type: keyword -example: Microsoft Corporation +type: long -- -*`file.code_signature.team_id`*:: +*`mysqlenterprise.audit.connection_data.db`*:: + -- -The team identifier used to sign the process. -This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. +A string representing a database name. For connection_data, it is the default database. For table_access_data, it is the table database. -type: keyword -example: EQHXZ8M8AV +type: keyword -- -*`file.code_signature.timestamp`*:: +*`mysqlenterprise.audit.connection_data.connection_attributes`*:: + -- -Date and time when the code signature was generated and signed. +Connection attributes that might be passed by different MySQL Clients. -type: date -example: 2021-01-01T12:10:30Z +type: flattened -- -*`file.code_signature.trusted`*:: +*`mysqlenterprise.audit.general_data.command`*:: + -- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. +A string representing the type of instruction that generated the audit event, such as a command that the server received from a client. -type: boolean -example: true +type: keyword -- -*`file.code_signature.valid`*:: +*`mysqlenterprise.audit.general_data.sql_command`*:: + -- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. +A string that indicates the SQL statement type. -type: boolean -example: true +type: keyword -- -*`file.created`*:: +*`mysqlenterprise.audit.general_data.query`*:: + -- -File creation time. -Note that not all filesystems store the creation time. +A string representing the text of an SQL statement. The value can be empty. Long values may be truncated. The string, like the audit log file itself, is written using UTF-8 (up to 4 bytes per character), so the value may be the result of conversion. -type: date + +type: keyword -- -*`file.ctime`*:: +*`mysqlenterprise.audit.general_data.status`*:: + -- -Last time the file attributes or metadata changed. -Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file. +An integer representing the command status: 0 for success, nonzero if an error occurred. This is the same as the value of the mysql_errno() C API function. -type: date + +type: long -- -*`file.device`*:: +*`mysqlenterprise.audit.login.user`*:: + -- -Device that is the source of the file. +A string representing the information indicating how a client connected to the server. -type: keyword -example: sda +type: keyword -- -*`file.directory`*:: +*`mysqlenterprise.audit.login.proxy`*:: + -- -Directory where the file is located. It should include the drive letter, when appropriate. +A string representing the proxy user. The value is empty if user proxying is not in effect. -type: keyword -example: /home/alice +type: keyword -- -*`file.drive_letter`*:: +*`mysqlenterprise.audit.shutdown_data.server_id`*:: + -- -Drive letter where the file is located. This field is only relevant on Windows. -The value should be uppercase, and not include the colon. +An integer representing the server ID. This is the same as the value of the server_id system variable. -type: keyword -example: C +type: keyword -- -*`file.elf.architecture`*:: +*`mysqlenterprise.audit.startup_data.server_id`*:: + -- -Machine architecture of the ELF file. +An integer representing the server ID. This is the same as the value of the server_id system variable. -type: keyword -example: x86-64 +type: keyword -- -*`file.elf.byte_order`*:: +*`mysqlenterprise.audit.startup_data.mysql_version`*:: + -- -Byte sequence of ELF file. +An integer representing the server ID. This is the same as the value of the server_id system variable. -type: keyword -example: Little Endian +type: keyword -- -*`file.elf.cpu_type`*:: +*`mysqlenterprise.audit.table_access_data.db`*:: + -- -CPU type of the ELF file. +A string representing a database name. For connection_data, it is the default database. For table_access_data, it is the table database. -type: keyword -example: Intel +type: keyword -- -*`file.elf.creation_date`*:: +*`mysqlenterprise.audit.table_access_data.table`*:: + -- -Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. +A string representing a table name. -type: date + +type: keyword -- -*`file.elf.exports`*:: +*`mysqlenterprise.audit.table_access_data.query`*:: + -- -List of exported element names and types. +A string representing the text of an SQL statement. The value can be empty. Long values may be truncated. The string, like the audit log file itself, is written using UTF-8 (up to 4 bytes per character), so the value may be the result of conversion. -type: flattened + +type: keyword -- -*`file.elf.header.abi_version`*:: +*`mysqlenterprise.audit.table_access_data.sql_command`*:: + -- -Version of the ELF Application Binary Interface (ABI). +A string that indicates the SQL statement type. + type: keyword -- -*`file.elf.header.class`*:: +*`mysqlenterprise.audit.account.user`*:: + -- -Header class of the ELF file. +A string representing the user that the server authenticated the client as. This is the user name that the server uses for privilege checking. + type: keyword -- -*`file.elf.header.data`*:: +*`mysqlenterprise.audit.account.host`*:: + -- -Data table of the ELF header. +A string representing the client host name. + type: keyword -- -*`file.elf.header.entrypoint`*:: +*`mysqlenterprise.audit.login.os`*:: + -- -Header entrypoint of the ELF file. +A string representing the external user name used during the authentication process, as set by the plugin used to authenticate the client. -type: long -format: string +type: keyword -- -*`file.elf.header.object_version`*:: -+ --- -"0x1" for original ELF files. +[[exported-fields-nats]] +== NATS fields -type: keyword +Module for parsing NATS log files. --- -*`file.elf.header.os_abi`*:: -+ --- -Application Binary Interface (ABI) of the Linux OS. -type: keyword +[float] +=== nats --- +Fields from NATS logs. -*`file.elf.header.type`*:: -+ --- -Header type of the ELF file. -type: keyword --- +[float] +=== log -*`file.elf.header.version`*:: -+ --- -Version of the ELF header. +Nats log files -type: keyword --- -*`file.elf.imports`*:: -+ --- -List of imported element names and types. +[float] +=== client -type: flattened +Fields from NATS logs client. --- -*`file.elf.sections`*:: + +*`nats.log.client.id`*:: + -- -An array containing an object for each section of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. +The id of the client -type: nested --- +type: integer -*`file.elf.sections.chi2`*:: -+ -- -Chi-square probability distribution of the section. -type: long +[float] +=== msg -format: number +Fields from NATS logs message. --- -*`file.elf.sections.entropy`*:: + +*`nats.log.msg.bytes`*:: + -- -Shannon entropy calculation from the section. +Size of the payload in bytes + type: long -format: number +format: bytes -- -*`file.elf.sections.flags`*:: +*`nats.log.msg.type`*:: + -- -ELF Section List flags. +The protocol message type + type: keyword -- -*`file.elf.sections.name`*:: +*`nats.log.msg.subject`*:: + -- -ELF Section List name. +Subject name this message was received on + type: keyword -- -*`file.elf.sections.physical_offset`*:: +*`nats.log.msg.sid`*:: + -- -ELF Section List offset. +The unique alphanumeric subscription ID of the subject -type: keyword + +type: integer -- -*`file.elf.sections.physical_size`*:: +*`nats.log.msg.reply_to`*:: + -- -ELF Section List physical size. +The inbox subject on which the publisher is listening for responses -type: long -format: bytes +type: keyword -- -*`file.elf.sections.type`*:: +*`nats.log.msg.max_messages`*:: + -- -ELF Section List type. +An optional number of messages to wait for before automatically unsubscribing -type: keyword + +type: integer -- -*`file.elf.sections.virtual_address`*:: +*`nats.log.msg.error.message`*:: + -- -ELF Section List virtual address. +Details about the error occurred -type: long -format: string +type: text -- -*`file.elf.sections.virtual_size`*:: +*`nats.log.msg.queue_group`*:: + -- -ELF Section List virtual size. +The queue group which subscriber will join -type: long -format: string +type: text -- -*`file.elf.segments`*:: -+ --- -An array containing an object for each segment of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. +[[exported-fields-netflow]] +== NetFlow fields -type: nested +Fields from NetFlow and IPFIX flows. --- -*`file.elf.segments.sections`*:: -+ --- -ELF object segment sections. -type: keyword +[float] +=== netflow --- +Fields from NetFlow and IPFIX. -*`file.elf.segments.type`*:: + + +*`netflow.type`*:: + -- -ELF object segment type. +The type of NetFlow record described by this event. + type: keyword -- -*`file.elf.shared_libraries`*:: -+ --- -List of shared libraries used by this ELF object. +[float] +=== exporter -type: keyword +Metadata related to the exporter device that generated this record. --- -*`file.elf.telfhash`*:: + +*`netflow.exporter.address`*:: + -- -telfhash symbol hash for ELF file. +Exporter's network address in IP:port format. + type: keyword -- -*`file.extension`*:: +*`netflow.exporter.source_id`*:: + -- -File extension, excluding the leading dot. -Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). +Observation domain ID to which this record belongs. -type: keyword -example: png +type: long -- -*`file.fork_name`*:: +*`netflow.exporter.timestamp`*:: + -- -A fork is additional data associated with a filesystem object. -On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. -On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. +Time and date of export. -type: keyword -example: Zone.Identifer +type: date -- -*`file.gid`*:: +*`netflow.exporter.uptime_millis`*:: + -- -Primary group ID (GID) of the file. +How long the exporter process has been running, in milliseconds. -type: keyword -example: 1001 +type: long -- -*`file.group`*:: +*`netflow.exporter.version`*:: + -- -Primary group name of the file. +NetFlow version used. -type: keyword -example: alice +type: integer -- -*`file.hash.md5`*:: +*`netflow.absolute_error`*:: + -- -MD5 hash. - -type: keyword - --- - -*`file.hash.sha1`*:: -+ --- -SHA1 hash. - -type: keyword - --- - -*`file.hash.sha256`*:: -+ --- -SHA256 hash. - -type: keyword - --- - -*`file.hash.sha512`*:: -+ --- -SHA512 hash. - -type: keyword - --- - -*`file.hash.ssdeep`*:: -+ --- -SSDEEP hash. - -type: keyword - --- - -*`file.inode`*:: -+ --- -Inode representing the file in the filesystem. - -type: keyword - -example: 256383 - --- - -*`file.mime_type`*:: -+ --- -MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. - -type: keyword - --- - -*`file.mode`*:: -+ --- -Mode of the file in octal representation. - -type: keyword - -example: 0640 - --- - -*`file.mtime`*:: -+ --- -Last time the file content was modified. - -type: date - --- - -*`file.name`*:: -+ --- -Name of the file including the extension, without the directory. - -type: keyword - -example: example.png - --- - -*`file.owner`*:: -+ --- -File owner's username. - -type: keyword - -example: alice - --- - -*`file.path`*:: -+ --- -Full path to the file, including the file name. It should include the drive letter, when appropriate. - -type: keyword - -example: /home/alice/example.png - --- - -*`file.path.text`*:: -+ --- -type: match_only_text - --- - -*`file.pe.architecture`*:: -+ --- -CPU architecture target for the file. - -type: keyword - -example: x64 - --- - -*`file.pe.company`*:: -+ --- -Internal company name of the file, provided at compile-time. - -type: keyword - -example: Microsoft Corporation - --- - -*`file.pe.description`*:: -+ --- -Internal description of the file, provided at compile-time. - -type: keyword - -example: Paint - --- - -*`file.pe.file_version`*:: -+ --- -Internal version of the file, provided at compile-time. - -type: keyword - -example: 6.3.9600.17415 - --- - -*`file.pe.imphash`*:: -+ --- -A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. -Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. - -type: keyword - -example: 0c6803c4e922103c4dca5963aad36ddf - --- - -*`file.pe.original_file_name`*:: -+ --- -Internal name of the file, provided at compile-time. - -type: keyword - -example: MSPAINT.EXE - --- - -*`file.pe.product`*:: -+ --- -Internal product name of the file, provided at compile-time. - -type: keyword - -example: Microsoft® Windows® Operating System +type: double -- -*`file.size`*:: +*`netflow.address_pool_high_threshold`*:: + -- -File size in bytes. -Only relevant when `file.type` is "file". - type: long -example: 16384 - --- - -*`file.target_path`*:: -+ --- -Target path for symlinks. - -type: keyword - --- - -*`file.target_path.text`*:: -+ --- -type: match_only_text - --- - -*`file.type`*:: -+ --- -File type (file, dir, or symlink). - -type: keyword - -example: file - --- - -*`file.uid`*:: -+ --- -The user ID (UID) or security identifier (SID) of the file owner. - -type: keyword - -example: 1001 - --- - -*`file.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`file.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`file.x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`file.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`file.x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`file.x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`file.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`file.x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`file.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`file.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`file.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`file.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - -- -*`file.x509.public_key_exponent`*:: +*`netflow.address_pool_low_threshold`*:: + -- -Exponent used to derive the public key. This is algorithm specific. - type: long -example: 65537 - -Field is not indexed. - -- -*`file.x509.public_key_size`*:: +*`netflow.address_port_mapping_high_threshold`*:: + -- -The size of the public key space in bits. - type: long -example: 2048 - --- - -*`file.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`file.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`file.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`file.x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`file.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`file.x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`file.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`file.x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`file.x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`file.x509.version_number`*:: -+ -- -Version of x509 format. - -type: keyword - -example: 3 - --- - -[float] -=== geo - -Geo fields can carry data about a specific location related to an event. -This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. - -*`geo.city_name`*:: +*`netflow.address_port_mapping_low_threshold`*:: + -- -City name. - -type: keyword - -example: Montreal - --- - -*`geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. - -type: keyword - -example: NA - --- - -*`geo.continent_name`*:: -+ --- -Name of the continent. - -type: keyword - -example: North America - --- - -*`geo.country_iso_code`*:: -+ --- -Country ISO code. - -type: keyword - -example: CA - --- - -*`geo.country_name`*:: -+ --- -Country name. - -type: keyword - -example: Canada - --- - -*`geo.location`*:: -+ --- -Longitude and latitude. - -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - --- - -*`geo.name`*:: -+ --- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - -type: keyword - -example: boston-dc - --- - -*`geo.postal_code`*:: -+ --- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. - -type: keyword - -example: 94040 - --- - -*`geo.region_iso_code`*:: -+ --- -Region ISO code. - -type: keyword - -example: CA-QC - --- - -*`geo.region_name`*:: -+ --- -Region name. - -type: keyword - -example: Quebec - --- - -*`geo.timezone`*:: -+ --- -The time zone of the location, such as IANA time zone name. - -type: keyword - -example: America/Argentina/Buenos_Aires - --- - -[float] -=== group - -The group fields are meant to represent groups that are relevant to the event. - - -*`group.domain`*:: -+ --- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`group.id`*:: -+ --- -Unique identifier for the group on the system/platform. - -type: keyword - --- - -*`group.name`*:: -+ --- -Name of the group. - -type: keyword - --- - -[float] -=== hash - -The hash fields represent different bitwise hash algorithms and their values. -Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). -Note that this fieldset is used for common hashes that may be computed over a range of generic bytes. Entity-specific hashes such as ja3 or imphash are placed in the fieldsets to which they relate (tls and pe, respectively). - - -*`hash.md5`*:: -+ --- -MD5 hash. - -type: keyword - --- - -*`hash.sha1`*:: -+ --- -SHA1 hash. - -type: keyword - --- - -*`hash.sha256`*:: -+ --- -SHA256 hash. - -type: keyword - --- - -*`hash.sha512`*:: -+ --- -SHA512 hash. - -type: keyword - --- - -*`hash.ssdeep`*:: -+ --- -SSDEEP hash. - -type: keyword - --- - -[float] -=== host - -A host is defined as a general computing instance. -ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. - - -*`host.architecture`*:: -+ --- -Operating system architecture. - -type: keyword - -example: x86_64 - --- - -*`host.cpu.usage`*:: -+ --- -Percent CPU used which is normalized by the number of CPU cores and it ranges from 0 to 1. -Scaling factor: 1000. -For example: For a two core host, this value should be the average of the two cores, between 0 and 1. - -type: scaled_float - --- - -*`host.disk.read.bytes`*:: -+ --- -The total number of bytes (gauge) read successfully (aggregated from all disks) since the last metric collection. - -type: long - --- - -*`host.disk.write.bytes`*:: -+ --- -The total number of bytes (gauge) written successfully (aggregated from all disks) since the last metric collection. - -type: long - --- - -*`host.domain`*:: -+ --- -Name of the domain of which the host is a member. -For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. - -type: keyword - -example: CONTOSO - --- - -*`host.geo.city_name`*:: -+ --- -City name. - -type: keyword - -example: Montreal - --- - -*`host.geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. - -type: keyword - -example: NA - --- - -*`host.geo.continent_name`*:: -+ --- -Name of the continent. - -type: keyword - -example: North America - --- - -*`host.geo.country_iso_code`*:: -+ --- -Country ISO code. - -type: keyword - -example: CA - --- - -*`host.geo.country_name`*:: -+ --- -Country name. - -type: keyword - -example: Canada - --- - -*`host.geo.location`*:: -+ --- -Longitude and latitude. - -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - --- - -*`host.geo.name`*:: -+ --- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - -type: keyword - -example: boston-dc - --- - -*`host.geo.postal_code`*:: -+ --- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. - -type: keyword - -example: 94040 - --- - -*`host.geo.region_iso_code`*:: -+ --- -Region ISO code. - -type: keyword - -example: CA-QC - --- - -*`host.geo.region_name`*:: -+ --- -Region name. - -type: keyword - -example: Quebec - --- - -*`host.geo.timezone`*:: -+ --- -The time zone of the location, such as IANA time zone name. - -type: keyword - -example: America/Argentina/Buenos_Aires - --- - -*`host.hostname`*:: -+ --- -Hostname of the host. -It normally contains what the `hostname` command returns on the host machine. - -type: keyword - --- - -*`host.id`*:: -+ --- -Unique host id. -As hostname is not always unique, use values that are meaningful in your environment. -Example: The current usage of `beat.name`. - -type: keyword - --- - -*`host.ip`*:: -+ --- -Host ip addresses. - -type: ip - --- - -*`host.mac`*:: -+ --- -Host MAC addresses. -The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. - -type: keyword - -example: ["00-00-5E-00-53-23", "00-00-5E-00-53-24"] - --- - -*`host.name`*:: -+ --- -Name of the host. -It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. - -type: keyword - --- - -*`host.network.egress.bytes`*:: -+ --- -The number of bytes (gauge) sent out on all network interfaces by the host since the last metric collection. - -type: long - --- - -*`host.network.egress.packets`*:: -+ --- -The number of packets (gauge) sent out on all network interfaces by the host since the last metric collection. - -type: long - --- - -*`host.network.ingress.bytes`*:: -+ --- -The number of bytes received (gauge) on all network interfaces by the host since the last metric collection. - -type: long - --- - -*`host.network.ingress.packets`*:: -+ --- -The number of packets (gauge) received on all network interfaces by the host since the last metric collection. - -type: long - --- - -*`host.os.family`*:: -+ --- -OS family (such as redhat, debian, freebsd, windows). - -type: keyword - -example: debian - --- - -*`host.os.full`*:: -+ --- -Operating system name, including the version or code name. - -type: keyword - -example: Mac OS Mojave - --- - -*`host.os.full.text`*:: -+ --- -type: match_only_text - --- - -*`host.os.kernel`*:: -+ --- -Operating system kernel version as a raw string. - -type: keyword - -example: 4.4.0-112-generic - --- - -*`host.os.name`*:: -+ --- -Operating system name, without the version. - -type: keyword - -example: Mac OS X - --- - -*`host.os.name.text`*:: -+ --- -type: match_only_text - --- - -*`host.os.platform`*:: -+ --- -Operating system platform (such centos, ubuntu, windows). - -type: keyword - -example: darwin - --- - -*`host.os.type`*:: -+ --- -Use the `os.type` field to categorize the operating system into one of the broad commercial families. -One of these following values should be used (lowercase): linux, macos, unix, windows. -If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. - -type: keyword - -example: macos - --- - -*`host.os.version`*:: -+ --- -Operating system version as a raw string. - -type: keyword - -example: 10.14.1 - --- - -*`host.type`*:: -+ --- -Type of host. -For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. - -type: keyword - --- - -*`host.uptime`*:: -+ --- -Seconds the host has been up. - -type: long - -example: 1325 - --- - -[float] -=== http - -Fields related to HTTP activity. Use the `url` field set to store the url of the request. - - -*`http.request.body.bytes`*:: -+ --- -Size in bytes of the request body. - -type: long - -example: 887 - -format: bytes - --- - -*`http.request.body.content`*:: -+ --- -The full HTTP request body. - -type: wildcard - -example: Hello world - --- - -*`http.request.body.content.text`*:: -+ --- -type: match_only_text - --- - -*`http.request.bytes`*:: -+ --- -Total size in bytes of the request (body and headers). - -type: long - -example: 1437 - -format: bytes - --- - -*`http.request.id`*:: -+ --- -A unique identifier for each HTTP request to correlate logs between clients and servers in transactions. -The id may be contained in a non-standard HTTP header, such as `X-Request-ID` or `X-Correlation-ID`. - -type: keyword - -example: 123e4567-e89b-12d3-a456-426614174000 - --- - -*`http.request.method`*:: -+ --- -HTTP request method. -The value should retain its casing from the original event. For example, `GET`, `get`, and `GeT` are all considered valid values for this field. - -type: keyword - -example: POST - --- - -*`http.request.mime_type`*:: -+ --- -Mime type of the body of the request. -This value must only be populated based on the content of the request body, not on the `Content-Type` header. Comparing the mime type of a request with the request's Content-Type header can be helpful in detecting threats or misconfigured clients. - -type: keyword - -example: image/gif - --- - -*`http.request.referrer`*:: -+ --- -Referrer for this HTTP request. - -type: keyword - -example: https://blog.example.com/ - --- - -*`http.response.body.bytes`*:: -+ --- -Size in bytes of the response body. - -type: long - -example: 887 - -format: bytes - --- - -*`http.response.body.content`*:: -+ --- -The full HTTP response body. - -type: wildcard - -example: Hello world - --- - -*`http.response.body.content.text`*:: -+ --- -type: match_only_text - --- - -*`http.response.bytes`*:: -+ --- -Total size in bytes of the response (body and headers). - -type: long - -example: 1437 - -format: bytes - --- - -*`http.response.mime_type`*:: -+ --- -Mime type of the body of the response. -This value must only be populated based on the content of the response body, not on the `Content-Type` header. Comparing the mime type of a response with the response's Content-Type header can be helpful in detecting misconfigured servers. - -type: keyword - -example: image/gif - --- - -*`http.response.status_code`*:: -+ --- -HTTP response status code. - -type: long - -example: 404 - -format: string - --- - -*`http.version`*:: -+ --- -HTTP version. - -type: keyword - -example: 1.1 - --- - -[float] -=== interface - -The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated. - - -*`interface.alias`*:: -+ --- -Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. - -type: keyword - -example: outside - --- - -*`interface.id`*:: -+ --- -Interface ID as reported by an observer (typically SNMP interface ID). - -type: keyword - -example: 10 - --- - -*`interface.name`*:: -+ --- -Interface name as reported by the system. - -type: keyword - -example: eth0 - --- - -[float] -=== log - -Details about the event's logging mechanism or logging transport. -The log.* fields are typically populated with details about the logging mechanism used to create and/or transport the event. For example, syslog details belong under `log.syslog.*`. -The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. - - -*`log.file.path`*:: -+ --- -Full path to the log file this event came from, including the file name. It should include the drive letter, when appropriate. -If the event wasn't read from a log file, do not populate this field. - -type: keyword - -example: /var/log/fun-times.log - --- - -*`log.level`*:: -+ --- -Original log level of the log event. -If the source of the event provides a log level or textual severity, this is the one that goes in `log.level`. If your source doesn't specify one, you may put your event transport's severity here (e.g. Syslog severity). -Some examples are `warn`, `err`, `i`, `informational`. - -type: keyword - -example: error - --- - -*`log.logger`*:: -+ --- -The name of the logger inside an application. This is usually the name of the class which initialized the logger, or can be a custom name. - -type: keyword - -example: org.elasticsearch.bootstrap.Bootstrap - --- - -*`log.origin.file.line`*:: -+ --- -The line number of the file containing the source code which originated the log event. - -type: long - -example: 42 - --- - -*`log.origin.file.name`*:: -+ --- -The name of the file containing the source code which originated the log event. -Note that this field is not meant to capture the log file. The correct field to capture the log file is `log.file.path`. - -type: keyword - -example: Bootstrap.java - --- - -*`log.origin.function`*:: -+ --- -The name of the function or method which originated the log event. - -type: keyword - -example: init - --- - -*`log.syslog`*:: -+ --- -The Syslog metadata of the event, if the event was transmitted via Syslog. Please see RFCs 5424 or 3164. - -type: object - --- - -*`log.syslog.facility.code`*:: -+ --- -The Syslog numeric facility of the log event, if available. -According to RFCs 5424 and 3164, this value should be an integer between 0 and 23. - -type: long - -example: 23 - -format: string - --- - -*`log.syslog.facility.name`*:: -+ --- -The Syslog text-based facility of the log event, if available. - -type: keyword - -example: local7 - --- - -*`log.syslog.priority`*:: -+ --- -Syslog numeric priority of the event, if available. -According to RFCs 5424 and 3164, the priority is 8 * facility + severity. This number is therefore expected to contain a value between 0 and 191. - -type: long - -example: 135 - -format: string - --- - -*`log.syslog.severity.code`*:: -+ --- -The Syslog numeric severity of the log event, if available. -If the event source publishing via Syslog provides a different numeric severity value (e.g. firewall, IDS), your source's numeric severity should go to `event.severity`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `event.severity`. - -type: long - -example: 3 - --- - -*`log.syslog.severity.name`*:: -+ --- -The Syslog numeric severity of the log event, if available. -If the event source publishing via Syslog provides a different severity value (e.g. firewall, IDS), your source's text severity should go to `log.level`. If the event source does not specify a distinct severity, you can optionally copy the Syslog severity to `log.level`. - -type: keyword - -example: Error - --- - -[float] -=== network - -The network is defined as the communication path over which a host or network event happens. -The network.* fields should be populated with details about the network activity associated with an event. - - -*`network.application`*:: -+ --- -When a specific application or service is identified from network connection details (source/dest IPs, ports, certificates, or wire format), this field captures the application's or service's name. -For example, the original event identifies the network connection being from a specific web service in a `https` network connection, like `facebook` or `twitter`. -The field value must be normalized to lowercase for querying. - -type: keyword - -example: aim - --- - -*`network.bytes`*:: -+ --- -Total bytes transferred in both directions. -If `source.bytes` and `destination.bytes` are known, `network.bytes` is their sum. - -type: long - -example: 368 - -format: bytes - --- - -*`network.community_id`*:: -+ --- -A hash of source and destination IPs and ports, as well as the protocol used in a communication. This is a tool-agnostic standard to identify flows. -Learn more at https://github.com/corelight/community-id-spec. - -type: keyword - -example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= - --- - -*`network.direction`*:: -+ --- -Direction of the network traffic. -Recommended values are: - * ingress - * egress - * inbound - * outbound - * internal - * external - * unknown - -When mapping events from a host-based monitoring context, populate this field from the host's point of view, using the values "ingress" or "egress". -When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of the network perimeter, using the values "inbound", "outbound", "internal" or "external". -Note that "internal" is not crossing perimeter boundaries, and is meant to describe communication between two hosts within the perimeter. Note also that "external" is meant to describe traffic between two hosts that are external to the perimeter. This could for example be useful for ISPs or VPN service providers. - -type: keyword - -example: inbound - --- - -*`network.forwarded_ip`*:: -+ --- -Host IP address when the source IP address is the proxy. - -type: ip - -example: 192.1.1.2 - --- - -*`network.iana_number`*:: -+ --- -IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). Standardized list of protocols. This aligns well with NetFlow and sFlow related logs which use the IANA Protocol Number. - -type: keyword - -example: 6 - --- - -*`network.inner`*:: -+ --- -Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) - -type: object - --- - -*`network.inner.vlan.id`*:: -+ --- -VLAN ID as reported by the observer. - -type: keyword - -example: 10 - --- - -*`network.inner.vlan.name`*:: -+ --- -Optional VLAN name as reported by the observer. - -type: keyword - -example: outside - --- - -*`network.name`*:: -+ --- -Name given by operators to sections of their network. - -type: keyword - -example: Guest Wifi - --- - -*`network.packets`*:: -+ --- -Total packets transferred in both directions. -If `source.packets` and `destination.packets` are known, `network.packets` is their sum. - -type: long - -example: 24 - --- - -*`network.protocol`*:: -+ --- -In the OSI Model this would be the Application Layer protocol. For example, `http`, `dns`, or `ssh`. -The field value must be normalized to lowercase for querying. - -type: keyword - -example: http - --- - -*`network.transport`*:: -+ --- -Same as network.iana_number, but instead using the Keyword name of the transport layer (udp, tcp, ipv6-icmp, etc.) -The field value must be normalized to lowercase for querying. - -type: keyword - -example: tcp - --- - -*`network.type`*:: -+ --- -In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc -The field value must be normalized to lowercase for querying. - -type: keyword - -example: ipv4 - --- - -*`network.vlan.id`*:: -+ --- -VLAN ID as reported by the observer. - -type: keyword - -example: 10 - --- - -*`network.vlan.name`*:: -+ --- -Optional VLAN name as reported by the observer. - -type: keyword - -example: outside - --- - -[float] -=== observer - -An observer is defined as a special network, security, or application device used to detect, observe, or create network, security, or application-related events and metrics. -This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. - - -*`observer.egress`*:: -+ --- -Observer.egress holds information like interface number and name, vlan, and zone information to classify egress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. - -type: object - --- - -*`observer.egress.interface.alias`*:: -+ --- -Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. - -type: keyword - -example: outside - --- - -*`observer.egress.interface.id`*:: -+ --- -Interface ID as reported by an observer (typically SNMP interface ID). - -type: keyword - -example: 10 - --- - -*`observer.egress.interface.name`*:: -+ --- -Interface name as reported by the system. - -type: keyword - -example: eth0 - --- - -*`observer.egress.vlan.id`*:: -+ --- -VLAN ID as reported by the observer. - -type: keyword - -example: 10 - --- - -*`observer.egress.vlan.name`*:: -+ --- -Optional VLAN name as reported by the observer. - -type: keyword - -example: outside - --- - -*`observer.egress.zone`*:: -+ --- -Network zone of outbound traffic as reported by the observer to categorize the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, etc. - -type: keyword - -example: Public_Internet - --- - -*`observer.geo.city_name`*:: -+ --- -City name. - -type: keyword - -example: Montreal - --- - -*`observer.geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. - -type: keyword - -example: NA - --- - -*`observer.geo.continent_name`*:: -+ --- -Name of the continent. - -type: keyword - -example: North America - --- - -*`observer.geo.country_iso_code`*:: -+ --- -Country ISO code. - -type: keyword - -example: CA - --- - -*`observer.geo.country_name`*:: -+ --- -Country name. - -type: keyword - -example: Canada - --- - -*`observer.geo.location`*:: -+ --- -Longitude and latitude. - -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - --- - -*`observer.geo.name`*:: -+ --- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - -type: keyword - -example: boston-dc - --- - -*`observer.geo.postal_code`*:: -+ --- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. - -type: keyword - -example: 94040 - --- - -*`observer.geo.region_iso_code`*:: -+ --- -Region ISO code. - -type: keyword - -example: CA-QC - --- - -*`observer.geo.region_name`*:: -+ --- -Region name. - -type: keyword - -example: Quebec - --- - -*`observer.geo.timezone`*:: -+ --- -The time zone of the location, such as IANA time zone name. - -type: keyword - -example: America/Argentina/Buenos_Aires - --- - -*`observer.hostname`*:: -+ --- -Hostname of the observer. - -type: keyword - --- - -*`observer.ingress`*:: -+ --- -Observer.ingress holds information like interface number and name, vlan, and zone information to classify ingress traffic. Single armed monitoring such as a network sensor on a span port should only use observer.ingress to categorize traffic. - -type: object - --- - -*`observer.ingress.interface.alias`*:: -+ --- -Interface alias as reported by the system, typically used in firewall implementations for e.g. inside, outside, or dmz logical interface naming. - -type: keyword - -example: outside - --- - -*`observer.ingress.interface.id`*:: -+ --- -Interface ID as reported by an observer (typically SNMP interface ID). - -type: keyword - -example: 10 - --- - -*`observer.ingress.interface.name`*:: -+ --- -Interface name as reported by the system. - -type: keyword - -example: eth0 - --- - -*`observer.ingress.vlan.id`*:: -+ --- -VLAN ID as reported by the observer. - -type: keyword - -example: 10 - --- - -*`observer.ingress.vlan.name`*:: -+ --- -Optional VLAN name as reported by the observer. - -type: keyword - -example: outside - --- - -*`observer.ingress.zone`*:: -+ --- -Network zone of incoming traffic as reported by the observer to categorize the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, etc. - -type: keyword - -example: DMZ - --- - -*`observer.ip`*:: -+ --- -IP addresses of the observer. - -type: ip - --- - -*`observer.mac`*:: -+ --- -MAC addresses of the observer. -The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. - -type: keyword - -example: ["00-00-5E-00-53-23", "00-00-5E-00-53-24"] - --- - -*`observer.name`*:: -+ --- -Custom name of the observer. -This is a name that can be given to an observer. This can be helpful for example if multiple firewalls of the same model are used in an organization. -If no custom name is needed, the field can be left empty. - -type: keyword - -example: 1_proxySG - --- - -*`observer.os.family`*:: -+ --- -OS family (such as redhat, debian, freebsd, windows). - -type: keyword - -example: debian - --- - -*`observer.os.full`*:: -+ --- -Operating system name, including the version or code name. - -type: keyword - -example: Mac OS Mojave - --- - -*`observer.os.full.text`*:: -+ --- -type: match_only_text - --- - -*`observer.os.kernel`*:: -+ --- -Operating system kernel version as a raw string. - -type: keyword - -example: 4.4.0-112-generic - --- - -*`observer.os.name`*:: -+ --- -Operating system name, without the version. - -type: keyword - -example: Mac OS X - --- - -*`observer.os.name.text`*:: -+ --- -type: match_only_text - --- - -*`observer.os.platform`*:: -+ --- -Operating system platform (such centos, ubuntu, windows). - -type: keyword - -example: darwin - --- - -*`observer.os.type`*:: -+ --- -Use the `os.type` field to categorize the operating system into one of the broad commercial families. -One of these following values should be used (lowercase): linux, macos, unix, windows. -If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. - -type: keyword - -example: macos - --- - -*`observer.os.version`*:: -+ --- -Operating system version as a raw string. - -type: keyword - -example: 10.14.1 - --- - -*`observer.product`*:: -+ --- -The product name of the observer. - -type: keyword - -example: s200 - --- - -*`observer.serial_number`*:: -+ --- -Observer serial number. - -type: keyword - --- - -*`observer.type`*:: -+ --- -The type of the observer the data is coming from. -There is no predefined list of observer types. Some examples are `forwarder`, `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`. - -type: keyword - -example: firewall - --- - -*`observer.vendor`*:: -+ --- -Vendor name of the observer. - -type: keyword - -example: Symantec - --- - -*`observer.version`*:: -+ --- -Observer version. - -type: keyword - --- - -[float] -=== orchestrator - -Fields that describe the resources which container orchestrators manage or act upon. - - -*`orchestrator.api_version`*:: -+ --- -API version being used to carry out the action - -type: keyword - -example: v1beta1 - --- - -*`orchestrator.cluster.name`*:: -+ --- -Name of the cluster. - -type: keyword - --- - -*`orchestrator.cluster.url`*:: -+ --- -URL of the API used to manage the cluster. - -type: keyword - --- - -*`orchestrator.cluster.version`*:: -+ --- -The version of the cluster. - -type: keyword - --- - -*`orchestrator.namespace`*:: -+ --- -Namespace in which the action is taking place. - -type: keyword - -example: kube-system - --- - -*`orchestrator.organization`*:: -+ --- -Organization affected by the event (for multi-tenant orchestrator setups). - -type: keyword - -example: elastic - --- - -*`orchestrator.resource.name`*:: -+ --- -Name of the resource being acted upon. - -type: keyword - -example: test-pod-cdcws - --- - -*`orchestrator.resource.type`*:: -+ --- -Type of resource being acted upon. - -type: keyword - -example: service - --- - -*`orchestrator.type`*:: -+ --- -Orchestrator cluster type (e.g. kubernetes, nomad or cloudfoundry). - -type: keyword - -example: kubernetes - --- - -[float] -=== organization - -The organization fields enrich data with information about the company or entity the data is associated with. -These fields help you arrange or filter data stored in an index by one or multiple organizations. - - -*`organization.id`*:: -+ --- -Unique identifier for the organization. - -type: keyword - --- - -*`organization.name`*:: -+ --- -Organization name. - -type: keyword - --- - -*`organization.name.text`*:: -+ --- -type: match_only_text - --- - -[float] -=== os - -The OS fields contain information about the operating system. - - -*`os.family`*:: -+ --- -OS family (such as redhat, debian, freebsd, windows). - -type: keyword - -example: debian - --- - -*`os.full`*:: -+ --- -Operating system name, including the version or code name. - -type: keyword - -example: Mac OS Mojave - --- - -*`os.full.text`*:: -+ --- -type: match_only_text - --- - -*`os.kernel`*:: -+ --- -Operating system kernel version as a raw string. - -type: keyword - -example: 4.4.0-112-generic - --- - -*`os.name`*:: -+ --- -Operating system name, without the version. - -type: keyword - -example: Mac OS X - --- - -*`os.name.text`*:: -+ --- -type: match_only_text - --- - -*`os.platform`*:: -+ --- -Operating system platform (such centos, ubuntu, windows). - -type: keyword - -example: darwin - --- - -*`os.type`*:: -+ --- -Use the `os.type` field to categorize the operating system into one of the broad commercial families. -One of these following values should be used (lowercase): linux, macos, unix, windows. -If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. - -type: keyword - -example: macos - --- - -*`os.version`*:: -+ --- -Operating system version as a raw string. - -type: keyword - -example: 10.14.1 - --- - -[float] -=== package - -These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location. - - -*`package.architecture`*:: -+ --- -Package architecture. - -type: keyword - -example: x86_64 - --- - -*`package.build_version`*:: -+ --- -Additional information about the build version of the installed package. -For example use the commit SHA of a non-released package. - -type: keyword - -example: 36f4f7e89dd61b0988b12ee000b98966867710cd - --- - -*`package.checksum`*:: -+ --- -Checksum of the installed package for verification. - -type: keyword - -example: 68b329da9893e34099c7d8ad5cb9c940 - --- - -*`package.description`*:: -+ --- -Description of the package. - -type: keyword - -example: Open source programming language to build simple/reliable/efficient software. - --- - -*`package.install_scope`*:: -+ --- -Indicating how the package was installed, e.g. user-local, global. - -type: keyword - -example: global - --- - -*`package.installed`*:: -+ --- -Time when package was installed. - -type: date - --- - -*`package.license`*:: -+ --- -License under which the package was released. -Use a short name, e.g. the license identifier from SPDX License List where possible (https://spdx.org/licenses/). - -type: keyword - -example: Apache License 2.0 - --- - -*`package.name`*:: -+ --- -Package name - -type: keyword - -example: go - --- - -*`package.path`*:: -+ --- -Path where the package is installed. - -type: keyword - -example: /usr/local/Cellar/go/1.12.9/ - --- - -*`package.reference`*:: -+ --- -Home page or reference URL of the software in this package, if available. - -type: keyword - -example: https://golang.org - --- - -*`package.size`*:: -+ --- -Package size in bytes. - -type: long - -example: 62231 - -format: string - --- - -*`package.type`*:: -+ --- -Type of package. -This should contain the package file type, rather than the package manager name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar. - -type: keyword - -example: rpm - --- - -*`package.version`*:: -+ --- -Package version - -type: keyword - -example: 1.12.9 - --- - -[float] -=== pe - -These fields contain Windows Portable Executable (PE) metadata. - - -*`pe.architecture`*:: -+ --- -CPU architecture target for the file. - -type: keyword - -example: x64 - --- - -*`pe.company`*:: -+ --- -Internal company name of the file, provided at compile-time. - -type: keyword - -example: Microsoft Corporation - --- - -*`pe.description`*:: -+ --- -Internal description of the file, provided at compile-time. - -type: keyword - -example: Paint - --- - -*`pe.file_version`*:: -+ --- -Internal version of the file, provided at compile-time. - -type: keyword - -example: 6.3.9600.17415 - --- - -*`pe.imphash`*:: -+ --- -A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. -Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. - -type: keyword - -example: 0c6803c4e922103c4dca5963aad36ddf - --- - -*`pe.original_file_name`*:: -+ --- -Internal name of the file, provided at compile-time. - -type: keyword - -example: MSPAINT.EXE - --- - -*`pe.product`*:: -+ --- -Internal product name of the file, provided at compile-time. - -type: keyword - -example: Microsoft® Windows® Operating System - --- - -[float] -=== process - -These fields contain information about a process. -These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. - - -*`process.args`*:: -+ --- -Array of process arguments, starting with the absolute path to the executable. -May be filtered to protect sensitive information. - -type: keyword - -example: ["/usr/bin/ssh", "-l", "user", "10.0.0.16"] - --- - -*`process.args_count`*:: -+ --- -Length of the process.args array. -This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. - -type: long - -example: 4 - --- - -*`process.code_signature.digest_algorithm`*:: -+ --- -The hashing algorithm used to sign the process. -This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. - -type: keyword - -example: sha256 - --- - -*`process.code_signature.exists`*:: -+ --- -Boolean to capture if a signature is present. - -type: boolean - -example: true - --- - -*`process.code_signature.signing_id`*:: -+ --- -The identifier used to sign the process. -This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. - -type: keyword - -example: com.apple.xpc.proxy - --- - -*`process.code_signature.status`*:: -+ --- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. - -type: keyword - -example: ERROR_UNTRUSTED_ROOT - --- - -*`process.code_signature.subject_name`*:: -+ --- -Subject name of the code signer - -type: keyword - -example: Microsoft Corporation - --- - -*`process.code_signature.team_id`*:: -+ --- -The team identifier used to sign the process. -This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. - -type: keyword - -example: EQHXZ8M8AV - --- - -*`process.code_signature.timestamp`*:: -+ --- -Date and time when the code signature was generated and signed. - -type: date - -example: 2021-01-01T12:10:30Z - --- - -*`process.code_signature.trusted`*:: -+ --- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. - -type: boolean - -example: true - --- - -*`process.code_signature.valid`*:: -+ --- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. - -type: boolean - -example: true - --- - -*`process.command_line`*:: -+ --- -Full command line that started the process, including the absolute path to the executable, and all arguments. -Some arguments may be filtered to protect sensitive information. - -type: wildcard - -example: /usr/bin/ssh -l user 10.0.0.16 - --- - -*`process.command_line.text`*:: -+ --- -type: match_only_text - --- - -*`process.elf.architecture`*:: -+ --- -Machine architecture of the ELF file. - -type: keyword - -example: x86-64 - --- - -*`process.elf.byte_order`*:: -+ --- -Byte sequence of ELF file. - -type: keyword - -example: Little Endian - --- - -*`process.elf.cpu_type`*:: -+ --- -CPU type of the ELF file. - -type: keyword - -example: Intel - --- - -*`process.elf.creation_date`*:: -+ --- -Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. - -type: date - --- - -*`process.elf.exports`*:: -+ --- -List of exported element names and types. - -type: flattened - --- - -*`process.elf.header.abi_version`*:: -+ --- -Version of the ELF Application Binary Interface (ABI). - -type: keyword - --- - -*`process.elf.header.class`*:: -+ --- -Header class of the ELF file. - -type: keyword - --- - -*`process.elf.header.data`*:: -+ --- -Data table of the ELF header. - -type: keyword - --- - -*`process.elf.header.entrypoint`*:: -+ --- -Header entrypoint of the ELF file. - -type: long - -format: string - --- - -*`process.elf.header.object_version`*:: -+ --- -"0x1" for original ELF files. - -type: keyword - --- - -*`process.elf.header.os_abi`*:: -+ --- -Application Binary Interface (ABI) of the Linux OS. - -type: keyword - --- - -*`process.elf.header.type`*:: -+ --- -Header type of the ELF file. - -type: keyword - --- - -*`process.elf.header.version`*:: -+ --- -Version of the ELF header. - -type: keyword - --- - -*`process.elf.imports`*:: -+ --- -List of imported element names and types. - -type: flattened - --- - -*`process.elf.sections`*:: -+ --- -An array containing an object for each section of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. - -type: nested - --- - -*`process.elf.sections.chi2`*:: -+ --- -Chi-square probability distribution of the section. - -type: long - -format: number - --- - -*`process.elf.sections.entropy`*:: -+ --- -Shannon entropy calculation from the section. - -type: long - -format: number - --- - -*`process.elf.sections.flags`*:: -+ --- -ELF Section List flags. - -type: keyword - --- - -*`process.elf.sections.name`*:: -+ --- -ELF Section List name. - -type: keyword - --- - -*`process.elf.sections.physical_offset`*:: -+ --- -ELF Section List offset. - -type: keyword - --- - -*`process.elf.sections.physical_size`*:: -+ --- -ELF Section List physical size. - -type: long - -format: bytes - --- - -*`process.elf.sections.type`*:: -+ --- -ELF Section List type. - -type: keyword - --- - -*`process.elf.sections.virtual_address`*:: -+ --- -ELF Section List virtual address. - -type: long - -format: string - --- - -*`process.elf.sections.virtual_size`*:: -+ --- -ELF Section List virtual size. - -type: long - -format: string - --- - -*`process.elf.segments`*:: -+ --- -An array containing an object for each segment of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. - -type: nested - --- - -*`process.elf.segments.sections`*:: -+ --- -ELF object segment sections. - -type: keyword - --- - -*`process.elf.segments.type`*:: -+ --- -ELF object segment type. - -type: keyword - --- - -*`process.elf.shared_libraries`*:: -+ --- -List of shared libraries used by this ELF object. - -type: keyword - --- - -*`process.elf.telfhash`*:: -+ --- -telfhash symbol hash for ELF file. - -type: keyword - --- - -*`process.end`*:: -+ --- -The time the process ended. - -type: date - -example: 2016-05-23T08:05:34.853Z - --- - -*`process.entity_id`*:: -+ --- -Unique identifier for the process. -The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. -Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. - -type: keyword - -example: c2c455d9f99375d - --- - -*`process.executable`*:: -+ --- -Absolute path to the process executable. - -type: keyword - -example: /usr/bin/ssh - --- - -*`process.executable.text`*:: -+ --- -type: match_only_text - --- - -*`process.exit_code`*:: -+ --- -The exit code of the process, if this is a termination event. -The field should be absent if there is no exit code for the event (e.g. process start). - -type: long - -example: 137 - --- - -*`process.hash.md5`*:: -+ --- -MD5 hash. - -type: keyword - --- - -*`process.hash.sha1`*:: -+ --- -SHA1 hash. - -type: keyword - --- - -*`process.hash.sha256`*:: -+ --- -SHA256 hash. - -type: keyword - --- - -*`process.hash.sha512`*:: -+ --- -SHA512 hash. - -type: keyword - --- - -*`process.hash.ssdeep`*:: -+ --- -SSDEEP hash. - -type: keyword - --- - -*`process.name`*:: -+ --- -Process name. -Sometimes called program name or similar. - -type: keyword - -example: ssh - --- - -*`process.name.text`*:: -+ --- -type: match_only_text - --- - -*`process.parent.args`*:: -+ --- -Array of process arguments, starting with the absolute path to the executable. -May be filtered to protect sensitive information. - -type: keyword - -example: ["/usr/bin/ssh", "-l", "user", "10.0.0.16"] - --- - -*`process.parent.args_count`*:: -+ --- -Length of the process.args array. -This field can be useful for querying or performing bucket analysis on how many arguments were provided to start a process. More arguments may be an indication of suspicious activity. - -type: long - -example: 4 - --- - -*`process.parent.code_signature.digest_algorithm`*:: -+ --- -The hashing algorithm used to sign the process. -This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. - -type: keyword - -example: sha256 - --- - -*`process.parent.code_signature.exists`*:: -+ --- -Boolean to capture if a signature is present. - -type: boolean - -example: true - --- - -*`process.parent.code_signature.signing_id`*:: -+ --- -The identifier used to sign the process. -This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. - -type: keyword - -example: com.apple.xpc.proxy - --- - -*`process.parent.code_signature.status`*:: -+ --- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. - -type: keyword - -example: ERROR_UNTRUSTED_ROOT - --- - -*`process.parent.code_signature.subject_name`*:: -+ --- -Subject name of the code signer - -type: keyword - -example: Microsoft Corporation - --- - -*`process.parent.code_signature.team_id`*:: -+ --- -The team identifier used to sign the process. -This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. - -type: keyword - -example: EQHXZ8M8AV - --- - -*`process.parent.code_signature.timestamp`*:: -+ --- -Date and time when the code signature was generated and signed. - -type: date - -example: 2021-01-01T12:10:30Z - --- - -*`process.parent.code_signature.trusted`*:: -+ --- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. - -type: boolean - -example: true - --- - -*`process.parent.code_signature.valid`*:: -+ --- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. - -type: boolean - -example: true - --- - -*`process.parent.command_line`*:: -+ --- -Full command line that started the process, including the absolute path to the executable, and all arguments. -Some arguments may be filtered to protect sensitive information. - -type: wildcard - -example: /usr/bin/ssh -l user 10.0.0.16 - --- - -*`process.parent.command_line.text`*:: -+ --- -type: match_only_text - --- - -*`process.parent.elf.architecture`*:: -+ --- -Machine architecture of the ELF file. - -type: keyword - -example: x86-64 - --- - -*`process.parent.elf.byte_order`*:: -+ --- -Byte sequence of ELF file. - -type: keyword - -example: Little Endian - --- - -*`process.parent.elf.cpu_type`*:: -+ --- -CPU type of the ELF file. - -type: keyword - -example: Intel - --- - -*`process.parent.elf.creation_date`*:: -+ --- -Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. - -type: date - --- - -*`process.parent.elf.exports`*:: -+ --- -List of exported element names and types. - -type: flattened - --- - -*`process.parent.elf.header.abi_version`*:: -+ --- -Version of the ELF Application Binary Interface (ABI). - -type: keyword - --- - -*`process.parent.elf.header.class`*:: -+ --- -Header class of the ELF file. - -type: keyword - --- - -*`process.parent.elf.header.data`*:: -+ --- -Data table of the ELF header. - -type: keyword - --- - -*`process.parent.elf.header.entrypoint`*:: -+ --- -Header entrypoint of the ELF file. - -type: long - -format: string - --- - -*`process.parent.elf.header.object_version`*:: -+ --- -"0x1" for original ELF files. - -type: keyword - --- - -*`process.parent.elf.header.os_abi`*:: -+ --- -Application Binary Interface (ABI) of the Linux OS. - -type: keyword - --- - -*`process.parent.elf.header.type`*:: -+ --- -Header type of the ELF file. - -type: keyword - --- - -*`process.parent.elf.header.version`*:: -+ --- -Version of the ELF header. - -type: keyword - --- - -*`process.parent.elf.imports`*:: -+ --- -List of imported element names and types. - -type: flattened - --- - -*`process.parent.elf.sections`*:: -+ --- -An array containing an object for each section of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. - -type: nested - --- - -*`process.parent.elf.sections.chi2`*:: -+ --- -Chi-square probability distribution of the section. - -type: long - -format: number - --- - -*`process.parent.elf.sections.entropy`*:: -+ --- -Shannon entropy calculation from the section. - -type: long - -format: number - --- - -*`process.parent.elf.sections.flags`*:: -+ --- -ELF Section List flags. - -type: keyword - --- - -*`process.parent.elf.sections.name`*:: -+ --- -ELF Section List name. - -type: keyword - --- - -*`process.parent.elf.sections.physical_offset`*:: -+ --- -ELF Section List offset. - -type: keyword - --- - -*`process.parent.elf.sections.physical_size`*:: -+ --- -ELF Section List physical size. - -type: long - -format: bytes - --- - -*`process.parent.elf.sections.type`*:: -+ --- -ELF Section List type. - -type: keyword - --- - -*`process.parent.elf.sections.virtual_address`*:: -+ --- -ELF Section List virtual address. - -type: long - -format: string - --- - -*`process.parent.elf.sections.virtual_size`*:: -+ --- -ELF Section List virtual size. - -type: long - -format: string - --- - -*`process.parent.elf.segments`*:: -+ --- -An array containing an object for each segment of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. - -type: nested - --- - -*`process.parent.elf.segments.sections`*:: -+ --- -ELF object segment sections. - -type: keyword - --- - -*`process.parent.elf.segments.type`*:: -+ --- -ELF object segment type. - -type: keyword - --- - -*`process.parent.elf.shared_libraries`*:: -+ --- -List of shared libraries used by this ELF object. - -type: keyword - --- - -*`process.parent.elf.telfhash`*:: -+ --- -telfhash symbol hash for ELF file. - -type: keyword - --- - -*`process.parent.end`*:: -+ --- -The time the process ended. - -type: date - -example: 2016-05-23T08:05:34.853Z - --- - -*`process.parent.entity_id`*:: -+ --- -Unique identifier for the process. -The implementation of this is specified by the data source, but some examples of what could be used here are a process-generated UUID, Sysmon Process GUIDs, or a hash of some uniquely identifying components of a process. -Constructing a globally unique identifier is a common practice to mitigate PID reuse as well as to identify a specific process over time, across multiple monitored hosts. - -type: keyword - -example: c2c455d9f99375d - --- - -*`process.parent.executable`*:: -+ --- -Absolute path to the process executable. - -type: keyword - -example: /usr/bin/ssh - --- - -*`process.parent.executable.text`*:: -+ --- -type: match_only_text - --- - -*`process.parent.exit_code`*:: -+ --- -The exit code of the process, if this is a termination event. -The field should be absent if there is no exit code for the event (e.g. process start). - -type: long - -example: 137 - --- - -*`process.parent.hash.md5`*:: -+ --- -MD5 hash. - -type: keyword - --- - -*`process.parent.hash.sha1`*:: -+ --- -SHA1 hash. - -type: keyword - --- - -*`process.parent.hash.sha256`*:: -+ --- -SHA256 hash. - -type: keyword - --- - -*`process.parent.hash.sha512`*:: -+ --- -SHA512 hash. - -type: keyword - --- - -*`process.parent.hash.ssdeep`*:: -+ --- -SSDEEP hash. - -type: keyword - --- - -*`process.parent.name`*:: -+ --- -Process name. -Sometimes called program name or similar. - -type: keyword - -example: ssh - --- - -*`process.parent.name.text`*:: -+ --- -type: match_only_text - --- - -*`process.parent.pe.architecture`*:: -+ --- -CPU architecture target for the file. - -type: keyword - -example: x64 - --- - -*`process.parent.pe.company`*:: -+ --- -Internal company name of the file, provided at compile-time. - -type: keyword - -example: Microsoft Corporation - --- - -*`process.parent.pe.description`*:: -+ --- -Internal description of the file, provided at compile-time. - -type: keyword - -example: Paint - --- - -*`process.parent.pe.file_version`*:: -+ --- -Internal version of the file, provided at compile-time. - -type: keyword - -example: 6.3.9600.17415 - --- - -*`process.parent.pe.imphash`*:: -+ --- -A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. -Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. - -type: keyword - -example: 0c6803c4e922103c4dca5963aad36ddf - --- - -*`process.parent.pe.original_file_name`*:: -+ --- -Internal name of the file, provided at compile-time. - -type: keyword - -example: MSPAINT.EXE - --- - -*`process.parent.pe.product`*:: -+ --- -Internal product name of the file, provided at compile-time. - -type: keyword - -example: Microsoft® Windows® Operating System - --- - -*`process.parent.pgid`*:: -+ --- -Identifier of the group of processes the process belongs to. - -type: long - -format: string - --- - -*`process.parent.pid`*:: -+ --- -Process id. - -type: long - -example: 4242 - -format: string - --- - -*`process.parent.start`*:: -+ --- -The time the process started. - -type: date - -example: 2016-05-23T08:05:34.853Z - --- - -*`process.parent.thread.id`*:: -+ --- -Thread ID. - -type: long - -example: 4242 - -format: string - --- - -*`process.parent.thread.name`*:: -+ --- -Thread name. - -type: keyword - -example: thread-0 - --- - -*`process.parent.title`*:: -+ --- -Process title. -The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -type: keyword - --- - -*`process.parent.title.text`*:: -+ --- -type: match_only_text - --- - -*`process.parent.uptime`*:: -+ --- -Seconds the process has been up. - -type: long - -example: 1325 - --- - -*`process.parent.working_directory`*:: -+ --- -The working directory of the process. - -type: keyword - -example: /home/alice - --- - -*`process.parent.working_directory.text`*:: -+ --- -type: match_only_text - --- - -*`process.pe.architecture`*:: -+ --- -CPU architecture target for the file. - -type: keyword - -example: x64 - --- - -*`process.pe.company`*:: -+ --- -Internal company name of the file, provided at compile-time. - -type: keyword - -example: Microsoft Corporation - --- - -*`process.pe.description`*:: -+ --- -Internal description of the file, provided at compile-time. - -type: keyword - -example: Paint - --- - -*`process.pe.file_version`*:: -+ --- -Internal version of the file, provided at compile-time. - -type: keyword - -example: 6.3.9600.17415 - --- - -*`process.pe.imphash`*:: -+ --- -A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. -Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. - -type: keyword - -example: 0c6803c4e922103c4dca5963aad36ddf - --- - -*`process.pe.original_file_name`*:: -+ --- -Internal name of the file, provided at compile-time. - -type: keyword - -example: MSPAINT.EXE - --- - -*`process.pe.product`*:: -+ --- -Internal product name of the file, provided at compile-time. - -type: keyword - -example: Microsoft® Windows® Operating System - --- - -*`process.pgid`*:: -+ --- -Identifier of the group of processes the process belongs to. - -type: long - -format: string - --- - -*`process.pid`*:: -+ --- -Process id. - -type: long - -example: 4242 - -format: string - --- - -*`process.start`*:: -+ --- -The time the process started. - -type: date - -example: 2016-05-23T08:05:34.853Z - --- - -*`process.thread.id`*:: -+ --- -Thread ID. - -type: long - -example: 4242 - -format: string - --- - -*`process.thread.name`*:: -+ --- -Thread name. - -type: keyword - -example: thread-0 - --- - -*`process.title`*:: -+ --- -Process title. -The proctitle, some times the same as process name. Can also be different: for example a browser setting its title to the web page currently opened. - -type: keyword - --- - -*`process.title.text`*:: -+ --- -type: match_only_text - --- - -*`process.uptime`*:: -+ --- -Seconds the process has been up. - -type: long - -example: 1325 - --- - -*`process.working_directory`*:: -+ --- -The working directory of the process. - -type: keyword - -example: /home/alice - --- - -*`process.working_directory.text`*:: -+ --- -type: match_only_text - --- - -[float] -=== registry - -Fields related to Windows Registry operations. - - -*`registry.data.bytes`*:: -+ --- -Original bytes written with base64 encoding. -For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. - -type: keyword - -example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= - --- - -*`registry.data.strings`*:: -+ --- -Content when writing string types. -Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). - -type: wildcard - -example: ["C:\rta\red_ttp\bin\myapp.exe"] - --- - -*`registry.data.type`*:: -+ --- -Standard registry type for encoding contents - -type: keyword - -example: REG_SZ - --- - -*`registry.hive`*:: -+ --- -Abbreviated name for the hive. - -type: keyword - -example: HKLM - --- - -*`registry.key`*:: -+ --- -Hive-relative path of keys. - -type: keyword - -example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe - --- - -*`registry.path`*:: -+ --- -Full path, including hive, key and value - -type: keyword - -example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger - --- - -*`registry.value`*:: -+ --- -Name of the value written. - -type: keyword - -example: Debugger - --- - -[float] -=== related - -This field set is meant to facilitate pivoting around a piece of data. -Some pieces of information can be seen in many places in an ECS event. To facilitate searching for them, store an array of all seen values to their corresponding field in `related.`. -A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`. - - -*`related.hash`*:: -+ --- -All the hashes seen on your event. Populating this field, then using it to search for hashes can help in situations where you're unsure what the hash algorithm is (and therefore which key name to search). - -type: keyword - --- - -*`related.hosts`*:: -+ --- -All hostnames or other host identifiers seen on your event. Example identifiers include FQDNs, domain names, workstation names, or aliases. - -type: keyword - --- - -*`related.ip`*:: -+ --- -All of the IPs seen on your event. - -type: ip - --- - -*`related.user`*:: -+ --- -All the user names or other user identifiers seen on the event. - -type: keyword - --- - -[float] -=== rule - -Rule fields are used to capture the specifics of any observer or agent rules that generate alerts or other notable events. -Examples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc. - - -*`rule.author`*:: -+ --- -Name, organization, or pseudonym of the author or authors who created the rule used to generate this event. - -type: keyword - -example: ["Star-Lord"] - --- - -*`rule.category`*:: -+ --- -A categorization value keyword used by the entity using the rule for detection of this event. - -type: keyword - -example: Attempted Information Leak - --- - -*`rule.description`*:: -+ --- -The description of the rule generating the event. - -type: keyword - -example: Block requests to public DNS over HTTPS / TLS protocols - --- - -*`rule.id`*:: -+ --- -A rule ID that is unique within the scope of an agent, observer, or other entity using the rule for detection of this event. - -type: keyword - -example: 101 - --- - -*`rule.license`*:: -+ --- -Name of the license under which the rule used to generate this event is made available. - -type: keyword - -example: Apache 2.0 - --- - -*`rule.name`*:: -+ --- -The name of the rule or signature generating the event. - -type: keyword - -example: BLOCK_DNS_over_TLS - --- - -*`rule.reference`*:: -+ --- -Reference URL to additional information about the rule used to generate this event. -The URL can point to the vendor's documentation about the rule. If that's not available, it can also be a link to a more general page describing this type of alert. - -type: keyword - -example: https://en.wikipedia.org/wiki/DNS_over_TLS - --- - -*`rule.ruleset`*:: -+ --- -Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. - -type: keyword - -example: Standard_Protocol_Filters - --- - -*`rule.uuid`*:: -+ --- -A rule ID that is unique within the scope of a set or group of agents, observers, or other entities using the rule for detection of this event. - -type: keyword - -example: 1100110011 - --- - -*`rule.version`*:: -+ --- -The version / revision of the rule being used for analysis. - -type: keyword - -example: 1.1 - --- - -[float] -=== server - -A Server is defined as the responder in a network connection for events regarding sessions, connections, or bidirectional flow records. -For TCP events, the server is the receiver of the initial SYN packet(s) of the TCP connection. For other protocols, the server is generally the responder in the network transaction. Some systems actually use the term "responder" to refer the server in TCP connections. The server fields describe details about the system acting as the server in the network event. Server fields are usually populated in conjunction with client fields. Server fields are generally not populated for packet-level events. -Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. - - -*`server.address`*:: -+ --- -Some event server addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -type: keyword - --- - -*`server.as.number`*:: -+ --- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. - -type: long - -example: 15169 - --- - -*`server.as.organization.name`*:: -+ --- -Organization name. - -type: keyword - -example: Google LLC - --- - -*`server.as.organization.name.text`*:: -+ --- -type: match_only_text - --- - -*`server.bytes`*:: -+ --- -Bytes sent from the server to the client. - -type: long - -example: 184 - -format: bytes - --- - -*`server.domain`*:: -+ --- -The domain name of the server system. -This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. - -type: keyword - -example: foo.example.com - --- - -*`server.geo.city_name`*:: -+ --- -City name. - -type: keyword - -example: Montreal - --- - -*`server.geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. - -type: keyword - -example: NA - --- - -*`server.geo.continent_name`*:: -+ --- -Name of the continent. - -type: keyword - -example: North America - --- - -*`server.geo.country_iso_code`*:: -+ --- -Country ISO code. - -type: keyword - -example: CA - --- - -*`server.geo.country_name`*:: -+ --- -Country name. - -type: keyword - -example: Canada - --- - -*`server.geo.location`*:: -+ --- -Longitude and latitude. - -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - --- - -*`server.geo.name`*:: -+ --- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - -type: keyword - -example: boston-dc - --- - -*`server.geo.postal_code`*:: -+ --- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. - -type: keyword - -example: 94040 - --- - -*`server.geo.region_iso_code`*:: -+ --- -Region ISO code. - -type: keyword - -example: CA-QC - --- - -*`server.geo.region_name`*:: -+ --- -Region name. - -type: keyword - -example: Quebec - --- - -*`server.geo.timezone`*:: -+ --- -The time zone of the location, such as IANA time zone name. - -type: keyword - -example: America/Argentina/Buenos_Aires - --- - -*`server.ip`*:: -+ --- -IP address of the server (IPv4 or IPv6). - -type: ip - --- - -*`server.mac`*:: -+ --- -MAC address of the server. -The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. - -type: keyword - -example: 00-00-5E-00-53-23 - --- - -*`server.nat.ip`*:: -+ --- -Translated ip of destination based NAT sessions (e.g. internet to private DMZ) -Typically used with load balancers, firewalls, or routers. - -type: ip - --- - -*`server.nat.port`*:: -+ --- -Translated port of destination based NAT sessions (e.g. internet to private DMZ) -Typically used with load balancers, firewalls, or routers. - -type: long - -format: string - --- - -*`server.packets`*:: -+ --- -Packets sent from the server to the client. - -type: long - -example: 12 - --- - -*`server.port`*:: -+ --- -Port of the server. - -type: long - -format: string - --- - -*`server.registered_domain`*:: -+ --- -The highest registered server domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". - -type: keyword - -example: example.com - --- - -*`server.subdomain`*:: -+ --- -The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. -For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. - -type: keyword - -example: east - --- - -*`server.top_level_domain`*:: -+ --- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". - -type: keyword - -example: co.uk - --- - -*`server.user.domain`*:: -+ --- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`server.user.email`*:: -+ --- -User email address. - -type: keyword - --- - -*`server.user.full_name`*:: -+ --- -User's full name, if available. - -type: keyword - -example: Albert Einstein - --- - -*`server.user.full_name.text`*:: -+ --- -type: match_only_text - --- - -*`server.user.group.domain`*:: -+ --- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`server.user.group.id`*:: -+ --- -Unique identifier for the group on the system/platform. - -type: keyword - --- - -*`server.user.group.name`*:: -+ --- -Name of the group. - -type: keyword - --- - -*`server.user.hash`*:: -+ --- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -type: keyword - --- - -*`server.user.id`*:: -+ --- -Unique identifier of the user. - -type: keyword - -example: S-1-5-21-202424912787-2692429404-2351956786-1000 - --- - -*`server.user.name`*:: -+ --- -Short name or login of the user. - -type: keyword - -example: a.einstein - --- - -*`server.user.name.text`*:: -+ --- -type: match_only_text - --- - -*`server.user.roles`*:: -+ --- -Array of user roles at the time of the event. - -type: keyword - -example: ["kibana_admin", "reporting_user"] - --- - -[float] -=== service - -The service fields describe the service for or from which the data was collected. -These fields help you find and correlate logs for a specific service and version. - - -*`service.address`*:: -+ --- -Address where data about this service was collected from. -This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). - -type: keyword - -example: 172.26.0.2:5432 - --- - -*`service.environment`*:: -+ --- -Identifies the environment where the service is running. -If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment. - -type: keyword - -example: production - --- - -*`service.ephemeral_id`*:: -+ --- -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. - -type: keyword - -example: 8a4f500f - --- - -*`service.id`*:: -+ --- -Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. -This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. -Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. - -type: keyword - -example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 - --- - -*`service.name`*:: -+ --- -Name of the service data is collected from. -The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. -In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. - -type: keyword - -example: elasticsearch-metrics - --- - -*`service.node.name`*:: -+ --- -Name of a service node. -This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. -In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. - -type: keyword - -example: instance-0000000016 - --- - -*`service.origin.address`*:: -+ --- -Address where data about this service was collected from. -This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). - -type: keyword - -example: 172.26.0.2:5432 - --- - -*`service.origin.environment`*:: -+ --- -Identifies the environment where the service is running. -If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment. - -type: keyword - -example: production - --- - -*`service.origin.ephemeral_id`*:: -+ --- -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. - -type: keyword - -example: 8a4f500f - --- - -*`service.origin.id`*:: -+ --- -Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. -This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. -Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. - -type: keyword - -example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 - --- - -*`service.origin.name`*:: -+ --- -Name of the service data is collected from. -The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. -In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. - -type: keyword - -example: elasticsearch-metrics - --- - -*`service.origin.node.name`*:: -+ --- -Name of a service node. -This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. -In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. - -type: keyword - -example: instance-0000000016 - --- - -*`service.origin.state`*:: -+ --- -Current state of the service. - -type: keyword - --- - -*`service.origin.type`*:: -+ --- -The type of the service data is collected from. -The type can be used to group and correlate logs and metrics from one service type. -Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -type: keyword - -example: elasticsearch - --- - -*`service.origin.version`*:: -+ --- -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. - -type: keyword - -example: 3.2.4 - --- - -*`service.state`*:: -+ --- -Current state of the service. - -type: keyword - --- - -*`service.target.address`*:: -+ --- -Address where data about this service was collected from. -This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). - -type: keyword - -example: 172.26.0.2:5432 - --- - -*`service.target.environment`*:: -+ --- -Identifies the environment where the service is running. -If the same service runs in different environments (production, staging, QA, development, etc.), the environment can identify other instances of the same service. Can also group services and applications from the same environment. - -type: keyword - -example: production - --- - -*`service.target.ephemeral_id`*:: -+ --- -Ephemeral identifier of this service (if one exists). -This id normally changes across restarts, but `service.id` does not. - -type: keyword - -example: 8a4f500f - --- - -*`service.target.id`*:: -+ --- -Unique identifier of the running service. If the service is comprised of many nodes, the `service.id` should be the same for all nodes. -This id should uniquely identify the service. This makes it possible to correlate logs and metrics for one specific service, no matter which particular node emitted the event. -Note that if you need to see the events from one specific host of the service, you should filter on that `host.name` or `host.id` instead. - -type: keyword - -example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 - --- - -*`service.target.name`*:: -+ --- -Name of the service data is collected from. -The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. -In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. - -type: keyword - -example: elasticsearch-metrics - --- - -*`service.target.node.name`*:: -+ --- -Name of a service node. -This allows for two nodes of the same service running on the same host to be differentiated. Therefore, `service.node.name` should typically be unique across nodes of a given service. -In the case of Elasticsearch, the `service.node.name` could contain the unique node name within the Elasticsearch cluster. In cases where the service doesn't have the concept of a node name, the host name or container name can be used to distinguish running instances that make up this service. If those do not provide uniqueness (e.g. multiple instances of the service running on the same host) - the node name can be manually set. - -type: keyword - -example: instance-0000000016 - --- - -*`service.target.state`*:: -+ --- -Current state of the service. - -type: keyword - --- - -*`service.target.type`*:: -+ --- -The type of the service data is collected from. -The type can be used to group and correlate logs and metrics from one service type. -Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -type: keyword - -example: elasticsearch - --- - -*`service.target.version`*:: -+ --- -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. - -type: keyword - -example: 3.2.4 - --- - -*`service.type`*:: -+ --- -The type of the service data is collected from. -The type can be used to group and correlate logs and metrics from one service type. -Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. - -type: keyword - -example: elasticsearch - --- - -*`service.version`*:: -+ --- -Version of the service the data was collected from. -This allows to look at a data set only for a specific version of a service. - -type: keyword - -example: 3.2.4 - --- - -[float] -=== source - -Source fields capture details about the sender of a network exchange/packet. These fields are populated from a network event, packet, or other event containing details of a network transaction. -Source fields are usually populated in conjunction with destination fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated. - - -*`source.address`*:: -+ --- -Some event source addresses are defined ambiguously. The event will sometimes list an IP, a domain or a unix socket. You should always store the raw address in the `.address` field. -Then it should be duplicated to `.ip` or `.domain`, depending on which one it is. - -type: keyword - --- - -*`source.as.number`*:: -+ --- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. - -type: long - -example: 15169 - --- - -*`source.as.organization.name`*:: -+ --- -Organization name. - -type: keyword - -example: Google LLC - --- - -*`source.as.organization.name.text`*:: -+ --- -type: match_only_text - --- - -*`source.bytes`*:: -+ --- -Bytes sent from the source to the destination. - -type: long - -example: 184 - -format: bytes - --- - -*`source.domain`*:: -+ --- -The domain name of the source system. -This value may be a host name, a fully qualified domain name, or another host naming format. The value may derive from the original event or be added from enrichment. - -type: keyword - -example: foo.example.com - --- - -*`source.geo.city_name`*:: -+ --- -City name. - -type: keyword - -example: Montreal - --- - -*`source.geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. - -type: keyword - -example: NA - --- - -*`source.geo.continent_name`*:: -+ --- -Name of the continent. - -type: keyword - -example: North America - --- - -*`source.geo.country_iso_code`*:: -+ --- -Country ISO code. - -type: keyword - -example: CA - --- - -*`source.geo.country_name`*:: -+ --- -Country name. - -type: keyword - -example: Canada - --- - -*`source.geo.location`*:: -+ --- -Longitude and latitude. - -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - --- - -*`source.geo.name`*:: -+ --- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - -type: keyword - -example: boston-dc - --- - -*`source.geo.postal_code`*:: -+ --- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. - -type: keyword - -example: 94040 - --- - -*`source.geo.region_iso_code`*:: -+ --- -Region ISO code. - -type: keyword - -example: CA-QC - --- - -*`source.geo.region_name`*:: -+ --- -Region name. - -type: keyword - -example: Quebec - --- - -*`source.geo.timezone`*:: -+ --- -The time zone of the location, such as IANA time zone name. - -type: keyword - -example: America/Argentina/Buenos_Aires - --- - -*`source.ip`*:: -+ --- -IP address of the source (IPv4 or IPv6). - -type: ip - --- - -*`source.mac`*:: -+ --- -MAC address of the source. -The notation format from RFC 7042 is suggested: Each octet (that is, 8-bit byte) is represented by two [uppercase] hexadecimal digits giving the value of the octet as an unsigned integer. Successive octets are separated by a hyphen. - -type: keyword - -example: 00-00-5E-00-53-23 - --- - -*`source.nat.ip`*:: -+ --- -Translated ip of source based NAT sessions (e.g. internal client to internet) -Typically connections traversing load balancers, firewalls, or routers. - -type: ip - --- - -*`source.nat.port`*:: -+ --- -Translated port of source based NAT sessions. (e.g. internal client to internet) -Typically used with load balancers, firewalls, or routers. - -type: long - -format: string - --- - -*`source.packets`*:: -+ --- -Packets sent from the source to the destination. - -type: long - -example: 12 - --- - -*`source.port`*:: -+ --- -Port of the source. - -type: long - -format: string - --- - -*`source.registered_domain`*:: -+ --- -The highest registered source domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". - -type: keyword - -example: example.com - --- - -*`source.subdomain`*:: -+ --- -The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. -For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. - -type: keyword - -example: east - --- - -*`source.top_level_domain`*:: -+ --- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". - -type: keyword - -example: co.uk - --- - -*`source.user.domain`*:: -+ --- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`source.user.email`*:: -+ --- -User email address. - -type: keyword - --- - -*`source.user.full_name`*:: -+ --- -User's full name, if available. - -type: keyword - -example: Albert Einstein - --- - -*`source.user.full_name.text`*:: -+ --- -type: match_only_text - --- - -*`source.user.group.domain`*:: -+ --- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`source.user.group.id`*:: -+ --- -Unique identifier for the group on the system/platform. - -type: keyword - --- - -*`source.user.group.name`*:: -+ --- -Name of the group. - -type: keyword - --- - -*`source.user.hash`*:: -+ --- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -type: keyword - --- - -*`source.user.id`*:: -+ --- -Unique identifier of the user. - -type: keyword - -example: S-1-5-21-202424912787-2692429404-2351956786-1000 - --- - -*`source.user.name`*:: -+ --- -Short name or login of the user. - -type: keyword - -example: a.einstein - --- - -*`source.user.name.text`*:: -+ --- -type: match_only_text - --- - -*`source.user.roles`*:: -+ --- -Array of user roles at the time of the event. - -type: keyword - -example: ["kibana_admin", "reporting_user"] - --- - -[float] -=== threat - -Fields to classify events and alerts according to a threat taxonomy such as the MITRE ATT&CK® framework. -These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* fields are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). - - -*`threat.enrichments`*:: -+ --- -A list of associated indicators objects enriching the event, and the context of that association/enrichment. - -type: nested - --- - -*`threat.enrichments.indicator`*:: -+ --- -Object containing associated indicators enriching the event. - -type: object - --- - -*`threat.enrichments.indicator.as.number`*:: -+ --- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. - -type: long - -example: 15169 - --- - -*`threat.enrichments.indicator.as.organization.name`*:: -+ --- -Organization name. - -type: keyword - -example: Google LLC - --- - -*`threat.enrichments.indicator.as.organization.name.text`*:: -+ --- -type: match_only_text - --- - -*`threat.enrichments.indicator.confidence`*:: -+ --- -Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields. -Expected values are: - * Not Specified - * None - * Low - * Medium - * High - -type: keyword - -example: Medium - --- - -*`threat.enrichments.indicator.description`*:: -+ --- -Describes the type of action conducted by the threat. - -type: keyword - -example: IP x.x.x.x was observed delivering the Angler EK. - --- - -*`threat.enrichments.indicator.email.address`*:: -+ --- -Identifies a threat indicator as an email address (irrespective of direction). - -type: keyword - -example: phish@example.com - --- - -*`threat.enrichments.indicator.file.accessed`*:: -+ --- -Last time the file was accessed. -Note that not all filesystems keep track of access time. - -type: date - --- - -*`threat.enrichments.indicator.file.attributes`*:: -+ --- -Array of file attributes. -Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. - -type: keyword - -example: ["readonly", "system"] - --- - -*`threat.enrichments.indicator.file.code_signature.digest_algorithm`*:: -+ --- -The hashing algorithm used to sign the process. -This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. - -type: keyword - -example: sha256 - --- - -*`threat.enrichments.indicator.file.code_signature.exists`*:: -+ --- -Boolean to capture if a signature is present. - -type: boolean - -example: true - --- - -*`threat.enrichments.indicator.file.code_signature.signing_id`*:: -+ --- -The identifier used to sign the process. -This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. - -type: keyword - -example: com.apple.xpc.proxy - --- - -*`threat.enrichments.indicator.file.code_signature.status`*:: -+ --- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. - -type: keyword - -example: ERROR_UNTRUSTED_ROOT - --- - -*`threat.enrichments.indicator.file.code_signature.subject_name`*:: -+ --- -Subject name of the code signer - -type: keyword - -example: Microsoft Corporation - --- - -*`threat.enrichments.indicator.file.code_signature.team_id`*:: -+ --- -The team identifier used to sign the process. -This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. - -type: keyword - -example: EQHXZ8M8AV - --- - -*`threat.enrichments.indicator.file.code_signature.timestamp`*:: -+ --- -Date and time when the code signature was generated and signed. - -type: date - -example: 2021-01-01T12:10:30Z - --- - -*`threat.enrichments.indicator.file.code_signature.trusted`*:: -+ --- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. - -type: boolean - -example: true - --- - -*`threat.enrichments.indicator.file.code_signature.valid`*:: -+ --- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. - -type: boolean - -example: true - --- - -*`threat.enrichments.indicator.file.created`*:: -+ --- -File creation time. -Note that not all filesystems store the creation time. - -type: date - --- - -*`threat.enrichments.indicator.file.ctime`*:: -+ --- -Last time the file attributes or metadata changed. -Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file. - -type: date - --- - -*`threat.enrichments.indicator.file.device`*:: -+ --- -Device that is the source of the file. - -type: keyword - -example: sda - --- - -*`threat.enrichments.indicator.file.directory`*:: -+ --- -Directory where the file is located. It should include the drive letter, when appropriate. - -type: keyword - -example: /home/alice - --- - -*`threat.enrichments.indicator.file.drive_letter`*:: -+ --- -Drive letter where the file is located. This field is only relevant on Windows. -The value should be uppercase, and not include the colon. - -type: keyword - -example: C - --- - -*`threat.enrichments.indicator.file.elf.architecture`*:: -+ --- -Machine architecture of the ELF file. - -type: keyword - -example: x86-64 - --- - -*`threat.enrichments.indicator.file.elf.byte_order`*:: -+ --- -Byte sequence of ELF file. - -type: keyword - -example: Little Endian - --- - -*`threat.enrichments.indicator.file.elf.cpu_type`*:: -+ --- -CPU type of the ELF file. - -type: keyword - -example: Intel - --- - -*`threat.enrichments.indicator.file.elf.creation_date`*:: -+ --- -Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. - -type: date - --- - -*`threat.enrichments.indicator.file.elf.exports`*:: -+ --- -List of exported element names and types. - -type: flattened - --- - -*`threat.enrichments.indicator.file.elf.header.abi_version`*:: -+ --- -Version of the ELF Application Binary Interface (ABI). - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.header.class`*:: -+ --- -Header class of the ELF file. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.header.data`*:: -+ --- -Data table of the ELF header. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.header.entrypoint`*:: -+ --- -Header entrypoint of the ELF file. - -type: long - -format: string - --- - -*`threat.enrichments.indicator.file.elf.header.object_version`*:: -+ --- -"0x1" for original ELF files. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.header.os_abi`*:: -+ --- -Application Binary Interface (ABI) of the Linux OS. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.header.type`*:: -+ --- -Header type of the ELF file. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.header.version`*:: -+ --- -Version of the ELF header. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.imports`*:: -+ --- -List of imported element names and types. - -type: flattened - --- - -*`threat.enrichments.indicator.file.elf.sections`*:: -+ --- -An array containing an object for each section of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. - -type: nested - --- - -*`threat.enrichments.indicator.file.elf.sections.chi2`*:: -+ --- -Chi-square probability distribution of the section. - -type: long - -format: number - --- - -*`threat.enrichments.indicator.file.elf.sections.entropy`*:: -+ --- -Shannon entropy calculation from the section. - -type: long - -format: number - --- - -*`threat.enrichments.indicator.file.elf.sections.flags`*:: -+ --- -ELF Section List flags. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.sections.name`*:: -+ --- -ELF Section List name. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.sections.physical_offset`*:: -+ --- -ELF Section List offset. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.sections.physical_size`*:: -+ --- -ELF Section List physical size. - -type: long - -format: bytes - --- - -*`threat.enrichments.indicator.file.elf.sections.type`*:: -+ --- -ELF Section List type. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.sections.virtual_address`*:: -+ --- -ELF Section List virtual address. - -type: long - -format: string - --- - -*`threat.enrichments.indicator.file.elf.sections.virtual_size`*:: -+ --- -ELF Section List virtual size. - -type: long - -format: string - --- - -*`threat.enrichments.indicator.file.elf.segments`*:: -+ --- -An array containing an object for each segment of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. - -type: nested - --- - -*`threat.enrichments.indicator.file.elf.segments.sections`*:: -+ --- -ELF object segment sections. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.segments.type`*:: -+ --- -ELF object segment type. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.shared_libraries`*:: -+ --- -List of shared libraries used by this ELF object. - -type: keyword - --- - -*`threat.enrichments.indicator.file.elf.telfhash`*:: -+ --- -telfhash symbol hash for ELF file. - -type: keyword - --- - -*`threat.enrichments.indicator.file.extension`*:: -+ --- -File extension, excluding the leading dot. -Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). - -type: keyword - -example: png - --- - -*`threat.enrichments.indicator.file.fork_name`*:: -+ --- -A fork is additional data associated with a filesystem object. -On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. -On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. - -type: keyword - -example: Zone.Identifer - --- - -*`threat.enrichments.indicator.file.gid`*:: -+ --- -Primary group ID (GID) of the file. - -type: keyword - -example: 1001 - --- - -*`threat.enrichments.indicator.file.group`*:: -+ --- -Primary group name of the file. - -type: keyword - -example: alice - --- - -*`threat.enrichments.indicator.file.hash.md5`*:: -+ --- -MD5 hash. - -type: keyword - --- - -*`threat.enrichments.indicator.file.hash.sha1`*:: -+ --- -SHA1 hash. - -type: keyword - --- - -*`threat.enrichments.indicator.file.hash.sha256`*:: -+ --- -SHA256 hash. - -type: keyword - --- - -*`threat.enrichments.indicator.file.hash.sha512`*:: -+ --- -SHA512 hash. - -type: keyword - --- - -*`threat.enrichments.indicator.file.hash.ssdeep`*:: -+ --- -SSDEEP hash. - -type: keyword - --- - -*`threat.enrichments.indicator.file.inode`*:: -+ --- -Inode representing the file in the filesystem. - -type: keyword - -example: 256383 - --- - -*`threat.enrichments.indicator.file.mime_type`*:: -+ --- -MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. - -type: keyword - --- - -*`threat.enrichments.indicator.file.mode`*:: -+ --- -Mode of the file in octal representation. - -type: keyword - -example: 0640 - --- - -*`threat.enrichments.indicator.file.mtime`*:: -+ --- -Last time the file content was modified. - -type: date - --- - -*`threat.enrichments.indicator.file.name`*:: -+ --- -Name of the file including the extension, without the directory. - -type: keyword - -example: example.png - --- - -*`threat.enrichments.indicator.file.owner`*:: -+ --- -File owner's username. - -type: keyword - -example: alice - --- - -*`threat.enrichments.indicator.file.path`*:: -+ --- -Full path to the file, including the file name. It should include the drive letter, when appropriate. - -type: keyword - -example: /home/alice/example.png - --- - -*`threat.enrichments.indicator.file.path.text`*:: -+ --- -type: match_only_text - --- - -*`threat.enrichments.indicator.file.pe.architecture`*:: -+ --- -CPU architecture target for the file. - -type: keyword - -example: x64 - --- - -*`threat.enrichments.indicator.file.pe.company`*:: -+ --- -Internal company name of the file, provided at compile-time. - -type: keyword - -example: Microsoft Corporation - --- - -*`threat.enrichments.indicator.file.pe.description`*:: -+ --- -Internal description of the file, provided at compile-time. - -type: keyword - -example: Paint - --- - -*`threat.enrichments.indicator.file.pe.file_version`*:: -+ --- -Internal version of the file, provided at compile-time. - -type: keyword - -example: 6.3.9600.17415 - --- - -*`threat.enrichments.indicator.file.pe.imphash`*:: -+ --- -A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. -Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. - -type: keyword - -example: 0c6803c4e922103c4dca5963aad36ddf - --- - -*`threat.enrichments.indicator.file.pe.original_file_name`*:: -+ --- -Internal name of the file, provided at compile-time. - -type: keyword - -example: MSPAINT.EXE - --- - -*`threat.enrichments.indicator.file.pe.product`*:: -+ --- -Internal product name of the file, provided at compile-time. - -type: keyword - -example: Microsoft® Windows® Operating System - --- - -*`threat.enrichments.indicator.file.size`*:: -+ --- -File size in bytes. -Only relevant when `file.type` is "file". - -type: long - -example: 16384 - --- - -*`threat.enrichments.indicator.file.target_path`*:: -+ --- -Target path for symlinks. - -type: keyword - --- - -*`threat.enrichments.indicator.file.target_path.text`*:: -+ --- -type: match_only_text - --- - -*`threat.enrichments.indicator.file.type`*:: -+ --- -File type (file, dir, or symlink). - -type: keyword - -example: file - --- - -*`threat.enrichments.indicator.file.uid`*:: -+ --- -The user ID (UID) or security identifier (SID) of the file owner. - -type: keyword - -example: 1001 - --- - -*`threat.enrichments.indicator.file.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`threat.enrichments.indicator.file.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`threat.enrichments.indicator.file.x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`threat.enrichments.indicator.file.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`threat.enrichments.indicator.file.x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`threat.enrichments.indicator.file.x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`threat.enrichments.indicator.file.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`threat.enrichments.indicator.file.x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.enrichments.indicator.file.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`threat.enrichments.indicator.file.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`threat.enrichments.indicator.file.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`threat.enrichments.indicator.file.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`threat.enrichments.indicator.file.x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - -Field is not indexed. - --- - -*`threat.enrichments.indicator.file.x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`threat.enrichments.indicator.file.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`threat.enrichments.indicator.file.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`threat.enrichments.indicator.file.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`threat.enrichments.indicator.file.x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`threat.enrichments.indicator.file.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`threat.enrichments.indicator.file.x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`threat.enrichments.indicator.file.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`threat.enrichments.indicator.file.x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`threat.enrichments.indicator.file.x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.enrichments.indicator.file.x509.version_number`*:: -+ --- -Version of x509 format. - -type: keyword - -example: 3 - --- - -*`threat.enrichments.indicator.first_seen`*:: -+ --- -The date and time when intelligence source first reported sighting this indicator. - -type: date - -example: 2020-11-05T17:25:47.000Z - --- - -*`threat.enrichments.indicator.geo.city_name`*:: -+ --- -City name. - -type: keyword - -example: Montreal - --- - -*`threat.enrichments.indicator.geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. - -type: keyword - -example: NA - --- - -*`threat.enrichments.indicator.geo.continent_name`*:: -+ --- -Name of the continent. - -type: keyword - -example: North America - --- - -*`threat.enrichments.indicator.geo.country_iso_code`*:: -+ --- -Country ISO code. - -type: keyword - -example: CA - --- - -*`threat.enrichments.indicator.geo.country_name`*:: -+ --- -Country name. - -type: keyword - -example: Canada - --- - -*`threat.enrichments.indicator.geo.location`*:: -+ --- -Longitude and latitude. - -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - --- - -*`threat.enrichments.indicator.geo.name`*:: -+ --- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - -type: keyword - -example: boston-dc - --- - -*`threat.enrichments.indicator.geo.postal_code`*:: -+ --- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. - -type: keyword - -example: 94040 - --- - -*`threat.enrichments.indicator.geo.region_iso_code`*:: -+ --- -Region ISO code. - -type: keyword - -example: CA-QC - --- - -*`threat.enrichments.indicator.geo.region_name`*:: -+ --- -Region name. - -type: keyword - -example: Quebec - --- - -*`threat.enrichments.indicator.geo.timezone`*:: -+ --- -The time zone of the location, such as IANA time zone name. - -type: keyword - -example: America/Argentina/Buenos_Aires - --- - -*`threat.enrichments.indicator.ip`*:: -+ --- -Identifies a threat indicator as an IP address (irrespective of direction). - -type: ip - -example: 1.2.3.4 - --- - -*`threat.enrichments.indicator.last_seen`*:: -+ --- -The date and time when intelligence source last reported sighting this indicator. - -type: date - -example: 2020-11-05T17:25:47.000Z - --- - -*`threat.enrichments.indicator.marking.tlp`*:: -+ --- -Traffic Light Protocol sharing markings. Recommended values are: - * WHITE - * GREEN - * AMBER - * RED - -type: keyword - -example: White - --- - -*`threat.enrichments.indicator.modified_at`*:: -+ --- -The date and time when intelligence source last modified information for this indicator. - -type: date - -example: 2020-11-05T17:25:47.000Z - --- - -*`threat.enrichments.indicator.port`*:: -+ --- -Identifies a threat indicator as a port number (irrespective of direction). - -type: long - -example: 443 - --- - -*`threat.enrichments.indicator.provider`*:: -+ --- -The name of the indicator's provider. - -type: keyword - -example: lrz_urlhaus - --- - -*`threat.enrichments.indicator.reference`*:: -+ --- -Reference URL linking to additional information about this indicator. - -type: keyword - -example: https://system.example.com/indicator/0001234 - --- - -*`threat.enrichments.indicator.registry.data.bytes`*:: -+ --- -Original bytes written with base64 encoding. -For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. - -type: keyword - -example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= - --- - -*`threat.enrichments.indicator.registry.data.strings`*:: -+ --- -Content when writing string types. -Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). - -type: wildcard - -example: ["C:\rta\red_ttp\bin\myapp.exe"] - --- - -*`threat.enrichments.indicator.registry.data.type`*:: -+ --- -Standard registry type for encoding contents - -type: keyword - -example: REG_SZ - --- - -*`threat.enrichments.indicator.registry.hive`*:: -+ --- -Abbreviated name for the hive. - -type: keyword - -example: HKLM - --- - -*`threat.enrichments.indicator.registry.key`*:: -+ --- -Hive-relative path of keys. - -type: keyword - -example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe - --- - -*`threat.enrichments.indicator.registry.path`*:: -+ --- -Full path, including hive, key and value - -type: keyword - -example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger - --- - -*`threat.enrichments.indicator.registry.value`*:: -+ --- -Name of the value written. - -type: keyword - -example: Debugger - --- - -*`threat.enrichments.indicator.scanner_stats`*:: -+ --- -Count of AV/EDR vendors that successfully detected malicious file or URL. - -type: long - -example: 4 - --- - -*`threat.enrichments.indicator.sightings`*:: -+ --- -Number of times this indicator was observed conducting threat activity. - -type: long - -example: 20 - --- - -*`threat.enrichments.indicator.type`*:: -+ --- -Type of indicator as represented by Cyber Observable in STIX 2.0. Recommended values: - * autonomous-system - * artifact - * directory - * domain-name - * email-addr - * file - * ipv4-addr - * ipv6-addr - * mac-addr - * mutex - * port - * process - * software - * url - * user-account - * windows-registry-key - * x509-certificate - -type: keyword - -example: ipv4-addr - --- - -*`threat.enrichments.indicator.url.domain`*:: -+ --- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field. - -type: keyword - -example: www.elastic.co - --- - -*`threat.enrichments.indicator.url.extension`*:: -+ --- -The field contains the file extension from the original request url, excluding the leading dot. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". -Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). - -type: keyword - -example: png - --- - -*`threat.enrichments.indicator.url.fragment`*:: -+ --- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. - -type: keyword - --- - -*`threat.enrichments.indicator.url.full`*:: -+ --- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -type: wildcard - -example: https://www.elastic.co:443/search?q=elasticsearch#top - --- - -*`threat.enrichments.indicator.url.full.text`*:: -+ --- -type: match_only_text - --- - -*`threat.enrichments.indicator.url.original`*:: -+ --- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. - -type: wildcard - -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch - --- - -*`threat.enrichments.indicator.url.original.text`*:: -+ --- -type: match_only_text - --- - -*`threat.enrichments.indicator.url.password`*:: -+ --- -Password of the request. - -type: keyword - --- - -*`threat.enrichments.indicator.url.path`*:: -+ --- -Path of the request, such as "/search". - -type: wildcard - --- - -*`threat.enrichments.indicator.url.port`*:: -+ --- -Port of the request, such as 443. - -type: long - -example: 443 - -format: string - --- - -*`threat.enrichments.indicator.url.query`*:: -+ --- -The query field describes the query string of the request, such as "q=elasticsearch". -The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -type: keyword - --- - -*`threat.enrichments.indicator.url.registered_domain`*:: -+ --- -The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". - -type: keyword - -example: example.com - --- - -*`threat.enrichments.indicator.url.scheme`*:: -+ --- -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. - -type: keyword - -example: https - --- - -*`threat.enrichments.indicator.url.subdomain`*:: -+ --- -The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. -For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. - -type: keyword - -example: east - --- - -*`threat.enrichments.indicator.url.top_level_domain`*:: -+ --- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". - -type: keyword - -example: co.uk - --- - -*`threat.enrichments.indicator.url.username`*:: -+ --- -Username of the request. - -type: keyword - --- - -*`threat.enrichments.indicator.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`threat.enrichments.indicator.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`threat.enrichments.indicator.x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`threat.enrichments.indicator.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`threat.enrichments.indicator.x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`threat.enrichments.indicator.x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`threat.enrichments.indicator.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`threat.enrichments.indicator.x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.enrichments.indicator.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`threat.enrichments.indicator.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`threat.enrichments.indicator.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`threat.enrichments.indicator.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`threat.enrichments.indicator.x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - -Field is not indexed. - --- - -*`threat.enrichments.indicator.x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`threat.enrichments.indicator.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`threat.enrichments.indicator.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`threat.enrichments.indicator.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`threat.enrichments.indicator.x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`threat.enrichments.indicator.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`threat.enrichments.indicator.x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`threat.enrichments.indicator.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`threat.enrichments.indicator.x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`threat.enrichments.indicator.x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.enrichments.indicator.x509.version_number`*:: -+ --- -Version of x509 format. - -type: keyword - -example: 3 - --- - -*`threat.enrichments.matched.atomic`*:: -+ --- -Identifies the atomic indicator value that matched a local environment endpoint or network event. - -type: keyword - -example: bad-domain.com - --- - -*`threat.enrichments.matched.field`*:: -+ --- -Identifies the field of the atomic indicator that matched a local environment endpoint or network event. - -type: keyword - -example: file.hash.sha256 - --- - -*`threat.enrichments.matched.id`*:: -+ --- -Identifies the _id of the indicator document enriching the event. - -type: keyword - -example: ff93aee5-86a1-4a61-b0e6-0cdc313d01b5 - --- - -*`threat.enrichments.matched.index`*:: -+ --- -Identifies the _index of the indicator document enriching the event. - -type: keyword - -example: filebeat-8.0.0-2021.05.23-000011 - --- - -*`threat.enrichments.matched.type`*:: -+ --- -Identifies the type of match that caused the event to be enriched with the given indicator - -type: keyword - -example: indicator_match_rule - --- - -*`threat.framework`*:: -+ --- -Name of the threat framework used to further categorize and classify the tactic and technique of the reported threat. Framework classification can be provided by detecting systems, evaluated at ingest time, or retrospectively tagged to events. - -type: keyword - -example: MITRE ATT&CK - --- - -*`threat.group.alias`*:: -+ --- -The alias(es) of the group for a set of related intrusion activity that are tracked by a common name in the security community. -While not required, you can use a MITRE ATT&CK® group alias(es). - -type: keyword - -example: [ "Magecart Group 6" ] - --- - -*`threat.group.id`*:: -+ --- -The id of the group for a set of related intrusion activity that are tracked by a common name in the security community. -While not required, you can use a MITRE ATT&CK® group id. - -type: keyword - -example: G0037 - --- - -*`threat.group.name`*:: -+ --- -The name of the group for a set of related intrusion activity that are tracked by a common name in the security community. -While not required, you can use a MITRE ATT&CK® group name. - -type: keyword - -example: FIN6 - --- - -*`threat.group.reference`*:: -+ --- -The reference URL of the group for a set of related intrusion activity that are tracked by a common name in the security community. -While not required, you can use a MITRE ATT&CK® group reference URL. - -type: keyword - -example: https://attack.mitre.org/groups/G0037/ - --- - -*`threat.indicator.as.number`*:: -+ --- -Unique number allocated to the autonomous system. The autonomous system number (ASN) uniquely identifies each network on the Internet. - -type: long - -example: 15169 - --- - -*`threat.indicator.as.organization.name`*:: -+ --- -Organization name. - -type: keyword - -example: Google LLC - --- - -*`threat.indicator.as.organization.name.text`*:: -+ --- -type: match_only_text - --- - -*`threat.indicator.confidence`*:: -+ --- -Identifies the vendor-neutral confidence rating using the None/Low/Medium/High scale defined in Appendix A of the STIX 2.1 framework. Vendor-specific confidence scales may be added as custom fields. -Expected values are: - * Not Specified - * None - * Low - * Medium - * High - -type: keyword - -example: Medium - --- - -*`threat.indicator.description`*:: -+ --- -Describes the type of action conducted by the threat. - -type: keyword - -example: IP x.x.x.x was observed delivering the Angler EK. - --- - -*`threat.indicator.email.address`*:: -+ --- -Identifies a threat indicator as an email address (irrespective of direction). - -type: keyword - -example: phish@example.com - --- - -*`threat.indicator.file.accessed`*:: -+ --- -Last time the file was accessed. -Note that not all filesystems keep track of access time. - -type: date - --- - -*`threat.indicator.file.attributes`*:: -+ --- -Array of file attributes. -Attributes names will vary by platform. Here's a non-exhaustive list of values that are expected in this field: archive, compressed, directory, encrypted, execute, hidden, read, readonly, system, write. - -type: keyword - -example: ["readonly", "system"] - --- - -*`threat.indicator.file.code_signature.digest_algorithm`*:: -+ --- -The hashing algorithm used to sign the process. -This value can distinguish signatures when a file is signed multiple times by the same signer but with a different digest algorithm. - -type: keyword - -example: sha256 - --- - -*`threat.indicator.file.code_signature.exists`*:: -+ --- -Boolean to capture if a signature is present. - -type: boolean - -example: true - --- - -*`threat.indicator.file.code_signature.signing_id`*:: -+ --- -The identifier used to sign the process. -This is used to identify the application manufactured by a software vendor. The field is relevant to Apple *OS only. - -type: keyword - -example: com.apple.xpc.proxy - --- - -*`threat.indicator.file.code_signature.status`*:: -+ --- -Additional information about the certificate status. -This is useful for logging cryptographic errors with the certificate validity or trust status. Leave unpopulated if the validity or trust of the certificate was unchecked. - -type: keyword - -example: ERROR_UNTRUSTED_ROOT - --- - -*`threat.indicator.file.code_signature.subject_name`*:: -+ --- -Subject name of the code signer - -type: keyword - -example: Microsoft Corporation - --- - -*`threat.indicator.file.code_signature.team_id`*:: -+ --- -The team identifier used to sign the process. -This is used to identify the team or vendor of a software product. The field is relevant to Apple *OS only. - -type: keyword - -example: EQHXZ8M8AV - --- - -*`threat.indicator.file.code_signature.timestamp`*:: -+ --- -Date and time when the code signature was generated and signed. - -type: date - -example: 2021-01-01T12:10:30Z - --- - -*`threat.indicator.file.code_signature.trusted`*:: -+ --- -Stores the trust status of the certificate chain. -Validating the trust of the certificate chain may be complicated, and this field should only be populated by tools that actively check the status. - -type: boolean - -example: true - --- - -*`threat.indicator.file.code_signature.valid`*:: -+ --- -Boolean to capture if the digital signature is verified against the binary content. -Leave unpopulated if a certificate was unchecked. - -type: boolean - -example: true - --- - -*`threat.indicator.file.created`*:: -+ --- -File creation time. -Note that not all filesystems store the creation time. - -type: date - --- - -*`threat.indicator.file.ctime`*:: -+ --- -Last time the file attributes or metadata changed. -Note that changes to the file content will update `mtime`. This implies `ctime` will be adjusted at the same time, since `mtime` is an attribute of the file. - -type: date - --- - -*`threat.indicator.file.device`*:: -+ --- -Device that is the source of the file. - -type: keyword - -example: sda - --- - -*`threat.indicator.file.directory`*:: -+ --- -Directory where the file is located. It should include the drive letter, when appropriate. - -type: keyword - -example: /home/alice - --- - -*`threat.indicator.file.drive_letter`*:: -+ --- -Drive letter where the file is located. This field is only relevant on Windows. -The value should be uppercase, and not include the colon. - -type: keyword - -example: C - --- - -*`threat.indicator.file.elf.architecture`*:: -+ --- -Machine architecture of the ELF file. - -type: keyword - -example: x86-64 - --- - -*`threat.indicator.file.elf.byte_order`*:: -+ --- -Byte sequence of ELF file. - -type: keyword - -example: Little Endian - --- - -*`threat.indicator.file.elf.cpu_type`*:: -+ --- -CPU type of the ELF file. - -type: keyword - -example: Intel - --- - -*`threat.indicator.file.elf.creation_date`*:: -+ --- -Extracted when possible from the file's metadata. Indicates when it was built or compiled. It can also be faked by malware creators. - -type: date - --- - -*`threat.indicator.file.elf.exports`*:: -+ --- -List of exported element names and types. - -type: flattened - --- - -*`threat.indicator.file.elf.header.abi_version`*:: -+ --- -Version of the ELF Application Binary Interface (ABI). - -type: keyword - --- - -*`threat.indicator.file.elf.header.class`*:: -+ --- -Header class of the ELF file. - -type: keyword - --- - -*`threat.indicator.file.elf.header.data`*:: -+ --- -Data table of the ELF header. - -type: keyword - --- - -*`threat.indicator.file.elf.header.entrypoint`*:: -+ --- -Header entrypoint of the ELF file. - -type: long - -format: string - --- - -*`threat.indicator.file.elf.header.object_version`*:: -+ --- -"0x1" for original ELF files. - -type: keyword - --- - -*`threat.indicator.file.elf.header.os_abi`*:: -+ --- -Application Binary Interface (ABI) of the Linux OS. - -type: keyword - --- - -*`threat.indicator.file.elf.header.type`*:: -+ --- -Header type of the ELF file. - -type: keyword - --- - -*`threat.indicator.file.elf.header.version`*:: -+ --- -Version of the ELF header. - -type: keyword - --- - -*`threat.indicator.file.elf.imports`*:: -+ --- -List of imported element names and types. - -type: flattened - --- - -*`threat.indicator.file.elf.sections`*:: -+ --- -An array containing an object for each section of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.sections.*`. - -type: nested - --- - -*`threat.indicator.file.elf.sections.chi2`*:: -+ --- -Chi-square probability distribution of the section. - -type: long - -format: number - --- - -*`threat.indicator.file.elf.sections.entropy`*:: -+ --- -Shannon entropy calculation from the section. - -type: long - -format: number - --- - -*`threat.indicator.file.elf.sections.flags`*:: -+ --- -ELF Section List flags. - -type: keyword - --- - -*`threat.indicator.file.elf.sections.name`*:: -+ --- -ELF Section List name. - -type: keyword - --- - -*`threat.indicator.file.elf.sections.physical_offset`*:: -+ --- -ELF Section List offset. - -type: keyword - --- - -*`threat.indicator.file.elf.sections.physical_size`*:: -+ --- -ELF Section List physical size. - -type: long - -format: bytes - --- - -*`threat.indicator.file.elf.sections.type`*:: -+ --- -ELF Section List type. - -type: keyword - --- - -*`threat.indicator.file.elf.sections.virtual_address`*:: -+ --- -ELF Section List virtual address. - -type: long - -format: string - --- - -*`threat.indicator.file.elf.sections.virtual_size`*:: -+ --- -ELF Section List virtual size. - -type: long - -format: string - --- - -*`threat.indicator.file.elf.segments`*:: -+ --- -An array containing an object for each segment of the ELF file. -The keys that should be present in these objects are defined by sub-fields underneath `elf.segments.*`. - -type: nested - --- - -*`threat.indicator.file.elf.segments.sections`*:: -+ --- -ELF object segment sections. - -type: keyword - --- - -*`threat.indicator.file.elf.segments.type`*:: -+ --- -ELF object segment type. - -type: keyword - --- - -*`threat.indicator.file.elf.shared_libraries`*:: -+ --- -List of shared libraries used by this ELF object. - -type: keyword - --- - -*`threat.indicator.file.elf.telfhash`*:: -+ --- -telfhash symbol hash for ELF file. - -type: keyword - --- - -*`threat.indicator.file.extension`*:: -+ --- -File extension, excluding the leading dot. -Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). - -type: keyword - -example: png - --- - -*`threat.indicator.file.fork_name`*:: -+ --- -A fork is additional data associated with a filesystem object. -On Linux, a resource fork is used to store additional data with a filesystem object. A file always has at least one fork for the data portion, and additional forks may exist. -On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the Internet. An ADS is typically of the form: `C:\path\to\filename.extension:some_fork_name`, and `some_fork_name` is the value that should populate `fork_name`. `filename.extension` should populate `file.name`, and `extension` should populate `file.extension`. The full path, `file.path`, will include the fork name. - -type: keyword - -example: Zone.Identifer - --- - -*`threat.indicator.file.gid`*:: -+ --- -Primary group ID (GID) of the file. - -type: keyword - -example: 1001 - --- - -*`threat.indicator.file.group`*:: -+ --- -Primary group name of the file. - -type: keyword - -example: alice - --- - -*`threat.indicator.file.hash.md5`*:: -+ --- -MD5 hash. - -type: keyword - --- - -*`threat.indicator.file.hash.sha1`*:: -+ --- -SHA1 hash. - -type: keyword - --- - -*`threat.indicator.file.hash.sha256`*:: -+ --- -SHA256 hash. - -type: keyword - --- - -*`threat.indicator.file.hash.sha512`*:: -+ --- -SHA512 hash. - -type: keyword - --- - -*`threat.indicator.file.hash.ssdeep`*:: -+ --- -SSDEEP hash. - -type: keyword - --- - -*`threat.indicator.file.inode`*:: -+ --- -Inode representing the file in the filesystem. - -type: keyword - -example: 256383 - --- - -*`threat.indicator.file.mime_type`*:: -+ --- -MIME type should identify the format of the file or stream of bytes using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official types], where possible. When more than one type is applicable, the most specific type should be used. - -type: keyword - --- - -*`threat.indicator.file.mode`*:: -+ --- -Mode of the file in octal representation. - -type: keyword - -example: 0640 - --- - -*`threat.indicator.file.mtime`*:: -+ --- -Last time the file content was modified. - -type: date - --- - -*`threat.indicator.file.name`*:: -+ --- -Name of the file including the extension, without the directory. - -type: keyword - -example: example.png - --- - -*`threat.indicator.file.owner`*:: -+ --- -File owner's username. - -type: keyword - -example: alice - --- - -*`threat.indicator.file.path`*:: -+ --- -Full path to the file, including the file name. It should include the drive letter, when appropriate. - -type: keyword - -example: /home/alice/example.png - --- - -*`threat.indicator.file.path.text`*:: -+ --- -type: match_only_text - --- - -*`threat.indicator.file.pe.architecture`*:: -+ --- -CPU architecture target for the file. - -type: keyword - -example: x64 - --- - -*`threat.indicator.file.pe.company`*:: -+ --- -Internal company name of the file, provided at compile-time. - -type: keyword - -example: Microsoft Corporation - --- - -*`threat.indicator.file.pe.description`*:: -+ --- -Internal description of the file, provided at compile-time. - -type: keyword - -example: Paint - --- - -*`threat.indicator.file.pe.file_version`*:: -+ --- -Internal version of the file, provided at compile-time. - -type: keyword - -example: 6.3.9600.17415 - --- - -*`threat.indicator.file.pe.imphash`*:: -+ --- -A hash of the imports in a PE file. An imphash -- or import hash -- can be used to fingerprint binaries even after recompilation or other code-level transformations have occurred, which would change more traditional hash values. -Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html. - -type: keyword - -example: 0c6803c4e922103c4dca5963aad36ddf - --- - -*`threat.indicator.file.pe.original_file_name`*:: -+ --- -Internal name of the file, provided at compile-time. - -type: keyword - -example: MSPAINT.EXE - --- - -*`threat.indicator.file.pe.product`*:: -+ --- -Internal product name of the file, provided at compile-time. - -type: keyword - -example: Microsoft® Windows® Operating System - --- - -*`threat.indicator.file.size`*:: -+ --- -File size in bytes. -Only relevant when `file.type` is "file". - -type: long - -example: 16384 - --- - -*`threat.indicator.file.target_path`*:: -+ --- -Target path for symlinks. - -type: keyword - --- - -*`threat.indicator.file.target_path.text`*:: -+ --- -type: match_only_text - --- - -*`threat.indicator.file.type`*:: -+ --- -File type (file, dir, or symlink). - -type: keyword - -example: file - --- - -*`threat.indicator.file.uid`*:: -+ --- -The user ID (UID) or security identifier (SID) of the file owner. - -type: keyword - -example: 1001 - --- - -*`threat.indicator.file.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`threat.indicator.file.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`threat.indicator.file.x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`threat.indicator.file.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`threat.indicator.file.x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`threat.indicator.file.x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`threat.indicator.file.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`threat.indicator.file.x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.indicator.file.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`threat.indicator.file.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`threat.indicator.file.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`threat.indicator.file.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`threat.indicator.file.x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - -Field is not indexed. - --- - -*`threat.indicator.file.x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`threat.indicator.file.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`threat.indicator.file.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`threat.indicator.file.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`threat.indicator.file.x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`threat.indicator.file.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`threat.indicator.file.x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`threat.indicator.file.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`threat.indicator.file.x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`threat.indicator.file.x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.indicator.file.x509.version_number`*:: -+ --- -Version of x509 format. - -type: keyword - -example: 3 - --- - -*`threat.indicator.first_seen`*:: -+ --- -The date and time when intelligence source first reported sighting this indicator. - -type: date - -example: 2020-11-05T17:25:47.000Z - --- - -*`threat.indicator.geo.city_name`*:: -+ --- -City name. - -type: keyword - -example: Montreal - --- - -*`threat.indicator.geo.continent_code`*:: -+ --- -Two-letter code representing continent's name. - -type: keyword - -example: NA - --- - -*`threat.indicator.geo.continent_name`*:: -+ --- -Name of the continent. - -type: keyword - -example: North America - --- - -*`threat.indicator.geo.country_iso_code`*:: -+ --- -Country ISO code. - -type: keyword - -example: CA - --- - -*`threat.indicator.geo.country_name`*:: -+ --- -Country name. - -type: keyword - -example: Canada - --- - -*`threat.indicator.geo.location`*:: -+ --- -Longitude and latitude. - -type: geo_point - -example: { "lon": -73.614830, "lat": 45.505918 } - --- - -*`threat.indicator.geo.name`*:: -+ --- -User-defined description of a location, at the level of granularity they care about. -Could be the name of their data centers, the floor number, if this describes a local physical entity, city names. -Not typically used in automated geolocation. - -type: keyword - -example: boston-dc - --- - -*`threat.indicator.geo.postal_code`*:: -+ --- -Postal code associated with the location. -Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. - -type: keyword - -example: 94040 - --- - -*`threat.indicator.geo.region_iso_code`*:: -+ --- -Region ISO code. - -type: keyword - -example: CA-QC - --- - -*`threat.indicator.geo.region_name`*:: -+ --- -Region name. - -type: keyword - -example: Quebec - --- - -*`threat.indicator.geo.timezone`*:: -+ --- -The time zone of the location, such as IANA time zone name. - -type: keyword - -example: America/Argentina/Buenos_Aires - --- - -*`threat.indicator.ip`*:: -+ --- -Identifies a threat indicator as an IP address (irrespective of direction). - -type: ip - -example: 1.2.3.4 - --- - -*`threat.indicator.last_seen`*:: -+ --- -The date and time when intelligence source last reported sighting this indicator. - -type: date - -example: 2020-11-05T17:25:47.000Z - --- - -*`threat.indicator.marking.tlp`*:: -+ --- -Traffic Light Protocol sharing markings. -Recommended values are: - * WHITE - * GREEN - * AMBER - * RED - -type: keyword - -example: WHITE - --- - -*`threat.indicator.modified_at`*:: -+ --- -The date and time when intelligence source last modified information for this indicator. - -type: date - -example: 2020-11-05T17:25:47.000Z - --- - -*`threat.indicator.port`*:: -+ --- -Identifies a threat indicator as a port number (irrespective of direction). - -type: long - -example: 443 - --- - -*`threat.indicator.provider`*:: -+ --- -The name of the indicator's provider. - -type: keyword - -example: lrz_urlhaus - --- - -*`threat.indicator.reference`*:: -+ --- -Reference URL linking to additional information about this indicator. - -type: keyword - -example: https://system.example.com/indicator/0001234 - --- - -*`threat.indicator.registry.data.bytes`*:: -+ --- -Original bytes written with base64 encoding. -For Windows registry operations, such as SetValueEx and RegQueryValueEx, this corresponds to the data pointed by `lp_data`. This is optional but provides better recoverability and should be populated for REG_BINARY encoded values. - -type: keyword - -example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= - --- - -*`threat.indicator.registry.data.strings`*:: -+ --- -Content when writing string types. -Populated as an array when writing string data to the registry. For single string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. For sequences of string with REG_MULTI_SZ, this array will be variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with the decimal representation (e.g `"1"`). - -type: wildcard - -example: ["C:\rta\red_ttp\bin\myapp.exe"] - --- - -*`threat.indicator.registry.data.type`*:: -+ --- -Standard registry type for encoding contents - -type: keyword - -example: REG_SZ - --- - -*`threat.indicator.registry.hive`*:: -+ --- -Abbreviated name for the hive. - -type: keyword - -example: HKLM - --- - -*`threat.indicator.registry.key`*:: -+ --- -Hive-relative path of keys. - -type: keyword - -example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe - --- - -*`threat.indicator.registry.path`*:: -+ --- -Full path, including hive, key and value - -type: keyword - -example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger - --- - -*`threat.indicator.registry.value`*:: -+ --- -Name of the value written. - -type: keyword - -example: Debugger - --- - -*`threat.indicator.scanner_stats`*:: -+ --- -Count of AV/EDR vendors that successfully detected malicious file or URL. - -type: long - -example: 4 - --- - -*`threat.indicator.sightings`*:: -+ --- -Number of times this indicator was observed conducting threat activity. - -type: long - -example: 20 - --- - -*`threat.indicator.type`*:: -+ --- -Type of indicator as represented by Cyber Observable in STIX 2.0. -Recommended values: - * autonomous-system - * artifact - * directory - * domain-name - * email-addr - * file - * ipv4-addr - * ipv6-addr - * mac-addr - * mutex - * port - * process - * software - * url - * user-account - * windows-registry-key - * x509-certificate - -type: keyword - -example: ipv4-addr - --- - -*`threat.indicator.url.domain`*:: -+ --- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field. - -type: keyword - -example: www.elastic.co - --- - -*`threat.indicator.url.extension`*:: -+ --- -The field contains the file extension from the original request url, excluding the leading dot. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". -Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). - -type: keyword - -example: png - --- - -*`threat.indicator.url.fragment`*:: -+ --- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. - -type: keyword - --- - -*`threat.indicator.url.full`*:: -+ --- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -type: wildcard - -example: https://www.elastic.co:443/search?q=elasticsearch#top - --- - -*`threat.indicator.url.full.text`*:: -+ --- -type: match_only_text - --- - -*`threat.indicator.url.original`*:: -+ --- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. - -type: wildcard - -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch - --- - -*`threat.indicator.url.original.text`*:: -+ --- -type: match_only_text - --- - -*`threat.indicator.url.password`*:: -+ --- -Password of the request. - -type: keyword - --- - -*`threat.indicator.url.path`*:: -+ --- -Path of the request, such as "/search". - -type: wildcard - --- - -*`threat.indicator.url.port`*:: -+ --- -Port of the request, such as 443. - -type: long - -example: 443 - -format: string - --- - -*`threat.indicator.url.query`*:: -+ --- -The query field describes the query string of the request, such as "q=elasticsearch". -The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -type: keyword - --- - -*`threat.indicator.url.registered_domain`*:: -+ --- -The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". - -type: keyword - -example: example.com - --- - -*`threat.indicator.url.scheme`*:: -+ --- -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. - -type: keyword - -example: https - --- - -*`threat.indicator.url.subdomain`*:: -+ --- -The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. -For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. - -type: keyword - -example: east - --- - -*`threat.indicator.url.top_level_domain`*:: -+ --- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". - -type: keyword - -example: co.uk - --- - -*`threat.indicator.url.username`*:: -+ --- -Username of the request. - -type: keyword - --- - -*`threat.indicator.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`threat.indicator.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`threat.indicator.x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`threat.indicator.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`threat.indicator.x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`threat.indicator.x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`threat.indicator.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`threat.indicator.x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.indicator.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`threat.indicator.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`threat.indicator.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`threat.indicator.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`threat.indicator.x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - -Field is not indexed. - --- - -*`threat.indicator.x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`threat.indicator.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`threat.indicator.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`threat.indicator.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`threat.indicator.x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`threat.indicator.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`threat.indicator.x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`threat.indicator.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`threat.indicator.x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`threat.indicator.x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`threat.indicator.x509.version_number`*:: -+ --- -Version of x509 format. - -type: keyword - -example: 3 - --- - -*`threat.software.alias`*:: -+ --- -The alias(es) of the software for a set of related intrusion activity that are tracked by a common name in the security community. -While not required, you can use a MITRE ATT&CK® associated software description. - -type: keyword - -example: [ "X-Agent" ] - --- - -*`threat.software.id`*:: -+ --- -The id of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. -While not required, you can use a MITRE ATT&CK® software id. - -type: keyword - -example: S0552 - --- - -*`threat.software.name`*:: -+ --- -The name of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. -While not required, you can use a MITRE ATT&CK® software name. - -type: keyword - -example: AdFind - --- - -*`threat.software.platforms`*:: -+ --- -The platforms of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. -Recommended Values: - * AWS - * Azure - * Azure AD - * GCP - * Linux - * macOS - * Network - * Office 365 - * SaaS - * Windows - -While not required, you can use a MITRE ATT&CK® software platforms. - -type: keyword - -example: [ "Windows" ] - --- - -*`threat.software.reference`*:: -+ --- -The reference URL of the software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. -While not required, you can use a MITRE ATT&CK® software reference URL. - -type: keyword - -example: https://attack.mitre.org/software/S0552/ - --- - -*`threat.software.type`*:: -+ --- -The type of software used by this threat to conduct behavior commonly modeled using MITRE ATT&CK®. -Recommended values - * Malware - * Tool - - While not required, you can use a MITRE ATT&CK® software type. - -type: keyword - -example: Tool - --- - -*`threat.tactic.id`*:: -+ --- -The id of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) - -type: keyword - -example: TA0002 - --- - -*`threat.tactic.name`*:: -+ --- -Name of the type of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/) - -type: keyword - -example: Execution - --- - -*`threat.tactic.reference`*:: -+ --- -The reference url of tactic used by this threat. You can use a MITRE ATT&CK® tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ ) - -type: keyword - -example: https://attack.mitre.org/tactics/TA0002/ - --- - -*`threat.technique.id`*:: -+ --- -The id of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) - -type: keyword - -example: T1059 - --- - -*`threat.technique.name`*:: -+ --- -The name of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) - -type: keyword - -example: Command and Scripting Interpreter - --- - -*`threat.technique.name.text`*:: -+ --- -type: match_only_text - --- - -*`threat.technique.reference`*:: -+ --- -The reference url of technique used by this threat. You can use a MITRE ATT&CK® technique, for example. (ex. https://attack.mitre.org/techniques/T1059/) - -type: keyword - -example: https://attack.mitre.org/techniques/T1059/ - --- - -*`threat.technique.subtechnique.id`*:: -+ --- -The full id of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) - -type: keyword - -example: T1059.001 - --- - -*`threat.technique.subtechnique.name`*:: -+ --- -The name of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) - -type: keyword - -example: PowerShell - --- - -*`threat.technique.subtechnique.name.text`*:: -+ --- -type: match_only_text - --- - -*`threat.technique.subtechnique.reference`*:: -+ --- -The reference url of subtechnique used by this threat. You can use a MITRE ATT&CK® subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/) - -type: keyword - -example: https://attack.mitre.org/techniques/T1059/001/ - --- - -[float] -=== tls - -Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files. - - -*`tls.cipher`*:: -+ --- -String indicating the cipher used during the current connection. - -type: keyword - -example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - --- - -*`tls.client.certificate`*:: -+ --- -PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. - -type: keyword - -example: MII... - --- - -*`tls.client.certificate_chain`*:: -+ --- -Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. - -type: keyword - -example: ["MII...", "MII..."] - --- - -*`tls.client.hash.md5`*:: -+ --- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. - -type: keyword - -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC - --- - -*`tls.client.hash.sha1`*:: -+ --- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. - -type: keyword - -example: 9E393D93138888D288266C2D915214D1D1CCEB2A - --- - -*`tls.client.hash.sha256`*:: -+ --- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. - -type: keyword - -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 - --- - -*`tls.client.issuer`*:: -+ --- -Distinguished name of subject of the issuer of the x.509 certificate presented by the client. - -type: keyword - -example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com - --- - -*`tls.client.ja3`*:: -+ --- -A hash that identifies clients based on how they perform an SSL/TLS handshake. - -type: keyword - -example: d4e5b18d6b55c71272893221c96ba240 - --- - -*`tls.client.not_after`*:: -+ --- -Date/Time indicating when client certificate is no longer considered valid. - -type: date - -example: 2021-01-01T00:00:00.000Z - --- - -*`tls.client.not_before`*:: -+ --- -Date/Time indicating when client certificate is first considered valid. - -type: date - -example: 1970-01-01T00:00:00.000Z - --- - -*`tls.client.server_name`*:: -+ --- -Also called an SNI, this tells the server which hostname to which the client is attempting to connect to. When this value is available, it should get copied to `destination.domain`. - -type: keyword - -example: www.elastic.co - --- - -*`tls.client.subject`*:: -+ --- -Distinguished name of subject of the x.509 certificate presented by the client. - -type: keyword - -example: CN=myclient, OU=Documentation Team, DC=example, DC=com - --- - -*`tls.client.supported_ciphers`*:: -+ --- -Array of ciphers offered by the client during the client hello. - -type: keyword - -example: ["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."] - --- - -*`tls.client.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`tls.client.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`tls.client.x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`tls.client.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`tls.client.x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`tls.client.x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`tls.client.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`tls.client.x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`tls.client.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`tls.client.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`tls.client.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`tls.client.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`tls.client.x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - -Field is not indexed. - --- - -*`tls.client.x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`tls.client.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`tls.client.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`tls.client.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`tls.client.x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`tls.client.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`tls.client.x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`tls.client.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`tls.client.x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`tls.client.x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`tls.client.x509.version_number`*:: -+ --- -Version of x509 format. - -type: keyword - -example: 3 - --- - -*`tls.curve`*:: -+ --- -String indicating the curve used for the given cipher, when applicable. - -type: keyword - -example: secp256r1 - --- - -*`tls.established`*:: -+ --- -Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. - -type: boolean - --- - -*`tls.next_protocol`*:: -+ --- -String indicating the protocol being tunneled. Per the values in the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. - -type: keyword - -example: http/1.1 - --- - -*`tls.resumed`*:: -+ --- -Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. - -type: boolean - --- - -*`tls.server.certificate`*:: -+ --- -PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. - -type: keyword - -example: MII... - --- - -*`tls.server.certificate_chain`*:: -+ --- -Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. - -type: keyword - -example: ["MII...", "MII..."] - --- - -*`tls.server.hash.md5`*:: -+ --- -Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. - -type: keyword - -example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC - --- - -*`tls.server.hash.sha1`*:: -+ --- -Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. - -type: keyword - -example: 9E393D93138888D288266C2D915214D1D1CCEB2A - --- - -*`tls.server.hash.sha256`*:: -+ --- -Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. - -type: keyword - -example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 - --- - -*`tls.server.issuer`*:: -+ --- -Subject of the issuer of the x.509 certificate presented by the server. - -type: keyword - -example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com - --- - -*`tls.server.ja3s`*:: -+ --- -A hash that identifies servers based on how they perform an SSL/TLS handshake. - -type: keyword - -example: 394441ab65754e2207b1e1b457b3641d - --- - -*`tls.server.not_after`*:: -+ --- -Timestamp indicating when server certificate is no longer considered valid. - -type: date - -example: 2021-01-01T00:00:00.000Z - --- - -*`tls.server.not_before`*:: -+ --- -Timestamp indicating when server certificate is first considered valid. - -type: date - -example: 1970-01-01T00:00:00.000Z - --- - -*`tls.server.subject`*:: -+ --- -Subject of the x.509 certificate presented by the server. - -type: keyword - -example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com - --- - -*`tls.server.x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`tls.server.x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`tls.server.x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`tls.server.x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`tls.server.x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`tls.server.x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`tls.server.x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`tls.server.x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`tls.server.x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`tls.server.x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`tls.server.x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`tls.server.x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`tls.server.x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - -Field is not indexed. - --- - -*`tls.server.x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`tls.server.x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`tls.server.x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`tls.server.x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`tls.server.x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`tls.server.x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`tls.server.x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`tls.server.x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`tls.server.x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`tls.server.x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`tls.server.x509.version_number`*:: -+ --- -Version of x509 format. - -type: keyword - -example: 3 - --- - -*`tls.version`*:: -+ --- -Numeric part of the version parsed from the original string. - -type: keyword - -example: 1.2 - --- - -*`tls.version_protocol`*:: -+ --- -Normalized lowercase protocol name parsed from original string. - -type: keyword - -example: tls - --- - -*`span.id`*:: -+ --- -Unique identifier of the span within the scope of its trace. -A span represents an operation within a transaction, such as a request to another service, or a database query. - -type: keyword - -example: 3ff9a8981b7ccd5a - --- - -*`trace.id`*:: -+ --- -Unique identifier of the trace. -A trace groups multiple events like transactions that belong together. For example, a user request handled by multiple inter-connected services. - -type: keyword - -example: 4bf92f3577b34da6a3ce929d0e0e4736 - --- - -*`transaction.id`*:: -+ --- -Unique identifier of the transaction within the scope of its trace. -A transaction is the highest level of work measured within a service, such as a request to a server. - -type: keyword - -example: 00f067aa0ba902b7 - --- - -[float] -=== url - -URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. - - -*`url.domain`*:: -+ --- -Domain of the url, such as "www.elastic.co". -In some cases a URL may refer to an IP and/or port directly, without a domain name. In this case, the IP address would go to the `domain` field. -If the URL contains a literal IPv6 address enclosed by `[` and `]` (IETF RFC 2732), the `[` and `]` characters should also be captured in the `domain` field. - -type: keyword - -example: www.elastic.co - --- - -*`url.extension`*:: -+ --- -The field contains the file extension from the original request url, excluding the leading dot. -The file extension is only set if it exists, as not every url has a file extension. -The leading period must not be included. For example, the value must be "png", not ".png". -Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). - -type: keyword - -example: png - --- - -*`url.fragment`*:: -+ --- -Portion of the url after the `#`, such as "top". -The `#` is not part of the fragment. - -type: keyword - --- - -*`url.full`*:: -+ --- -If full URLs are important to your use case, they should be stored in `url.full`, whether this field is reconstructed or present in the event source. - -type: wildcard - -example: https://www.elastic.co:443/search?q=elasticsearch#top - --- - -*`url.full.text`*:: -+ --- -type: match_only_text - --- - -*`url.original`*:: -+ --- -Unmodified original url as seen in the event source. -Note that in network monitoring, the observed URL may be a full URL, whereas in access logs, the URL is often just represented as a path. -This field is meant to represent the URL as it was observed, complete or not. - -type: wildcard - -example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch - --- - -*`url.original.text`*:: -+ --- -type: match_only_text - --- - -*`url.password`*:: -+ --- -Password of the request. - -type: keyword - --- - -*`url.path`*:: -+ --- -Path of the request, such as "/search". - -type: wildcard - --- - -*`url.port`*:: -+ --- -Port of the request, such as 443. - -type: long - -example: 443 - -format: string - --- - -*`url.query`*:: -+ --- -The query field describes the query string of the request, such as "q=elasticsearch". -The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases. - -type: keyword - --- - -*`url.registered_domain`*:: -+ --- -The highest registered url domain, stripped of the subdomain. -For example, the registered domain for "foo.example.com" is "example.com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk". - -type: keyword - -example: example.com - --- - -*`url.scheme`*:: -+ --- -Scheme of the request, such as "https". -Note: The `:` is not part of the scheme. - -type: keyword - -example: https - --- - -*`url.subdomain`*:: -+ --- -The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. -For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. - -type: keyword - -example: east - --- - -*`url.top_level_domain`*:: -+ --- -The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". -This value can be determined precisely with a list like the public suffix list (http://publicsuffix.org). Trying to approximate this by simply taking the last label will not work well for effective TLDs such as "co.uk". - -type: keyword - -example: co.uk - --- - -*`url.username`*:: -+ --- -Username of the request. - -type: keyword - --- - -[float] -=== user - -The user fields describe information about the user that is relevant to the event. -Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. - - -*`user.changes.domain`*:: -+ --- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.changes.email`*:: -+ --- -User email address. - -type: keyword - --- - -*`user.changes.full_name`*:: -+ --- -User's full name, if available. - -type: keyword - -example: Albert Einstein - --- - -*`user.changes.full_name.text`*:: -+ --- -type: match_only_text - --- - -*`user.changes.group.domain`*:: -+ --- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.changes.group.id`*:: -+ --- -Unique identifier for the group on the system/platform. - -type: keyword - --- - -*`user.changes.group.name`*:: -+ --- -Name of the group. - -type: keyword - --- - -*`user.changes.hash`*:: -+ --- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -type: keyword - --- - -*`user.changes.id`*:: -+ --- -Unique identifier of the user. - -type: keyword - -example: S-1-5-21-202424912787-2692429404-2351956786-1000 - --- - -*`user.changes.name`*:: -+ --- -Short name or login of the user. - -type: keyword - -example: a.einstein - --- - -*`user.changes.name.text`*:: -+ --- -type: match_only_text - --- - -*`user.changes.roles`*:: -+ --- -Array of user roles at the time of the event. - -type: keyword - -example: ["kibana_admin", "reporting_user"] - --- - -*`user.domain`*:: -+ --- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.effective.domain`*:: -+ --- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.effective.email`*:: -+ --- -User email address. - -type: keyword - --- - -*`user.effective.full_name`*:: -+ --- -User's full name, if available. - -type: keyword - -example: Albert Einstein - --- - -*`user.effective.full_name.text`*:: -+ --- -type: match_only_text - --- - -*`user.effective.group.domain`*:: -+ --- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.effective.group.id`*:: -+ --- -Unique identifier for the group on the system/platform. - -type: keyword - --- - -*`user.effective.group.name`*:: -+ --- -Name of the group. - -type: keyword - --- - -*`user.effective.hash`*:: -+ --- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -type: keyword - --- - -*`user.effective.id`*:: -+ --- -Unique identifier of the user. - -type: keyword - -example: S-1-5-21-202424912787-2692429404-2351956786-1000 - --- - -*`user.effective.name`*:: -+ --- -Short name or login of the user. - -type: keyword - -example: a.einstein - --- - -*`user.effective.name.text`*:: -+ --- -type: match_only_text - --- - -*`user.effective.roles`*:: -+ --- -Array of user roles at the time of the event. - -type: keyword - -example: ["kibana_admin", "reporting_user"] - --- - -*`user.email`*:: -+ --- -User email address. - -type: keyword - --- - -*`user.full_name`*:: -+ --- -User's full name, if available. - -type: keyword - -example: Albert Einstein - --- - -*`user.full_name.text`*:: -+ --- -type: match_only_text - --- - -*`user.group.domain`*:: -+ --- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.group.id`*:: -+ --- -Unique identifier for the group on the system/platform. - -type: keyword - --- - -*`user.group.name`*:: -+ --- -Name of the group. - -type: keyword - --- - -*`user.hash`*:: -+ --- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -type: keyword - --- - -*`user.id`*:: -+ --- -Unique identifier of the user. - -type: keyword - -example: S-1-5-21-202424912787-2692429404-2351956786-1000 - --- - -*`user.name`*:: -+ --- -Short name or login of the user. - -type: keyword - -example: a.einstein - --- - -*`user.name.text`*:: -+ --- -type: match_only_text - --- - -*`user.roles`*:: -+ --- -Array of user roles at the time of the event. - -type: keyword - -example: ["kibana_admin", "reporting_user"] - --- - -*`user.target.domain`*:: -+ --- -Name of the directory the user is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.target.email`*:: -+ --- -User email address. - -type: keyword - --- - -*`user.target.full_name`*:: -+ --- -User's full name, if available. - -type: keyword - -example: Albert Einstein - --- - -*`user.target.full_name.text`*:: -+ --- -type: match_only_text - --- - -*`user.target.group.domain`*:: -+ --- -Name of the directory the group is a member of. -For example, an LDAP or Active Directory domain name. - -type: keyword - --- - -*`user.target.group.id`*:: -+ --- -Unique identifier for the group on the system/platform. - -type: keyword - --- - -*`user.target.group.name`*:: -+ --- -Name of the group. - -type: keyword - --- - -*`user.target.hash`*:: -+ --- -Unique user hash to correlate information for a user in anonymized form. -Useful if `user.id` or `user.name` contain confidential information and cannot be used. - -type: keyword - --- - -*`user.target.id`*:: -+ --- -Unique identifier of the user. - -type: keyword - -example: S-1-5-21-202424912787-2692429404-2351956786-1000 - --- - -*`user.target.name`*:: -+ --- -Short name or login of the user. - -type: keyword - -example: a.einstein - --- - -*`user.target.name.text`*:: -+ --- -type: match_only_text - --- - -*`user.target.roles`*:: -+ --- -Array of user roles at the time of the event. - -type: keyword - -example: ["kibana_admin", "reporting_user"] - --- - -[float] -=== user_agent - -The user_agent fields normally come from a browser request. -They often show up in web service logs coming from the parsed user agent string. - - -*`user_agent.device.name`*:: -+ --- -Name of the device. - -type: keyword - -example: iPhone - --- - -*`user_agent.name`*:: -+ --- -Name of the user agent. - -type: keyword - -example: Safari - --- - -*`user_agent.original`*:: -+ --- -Unparsed user_agent string. - -type: keyword - -example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 - --- - -*`user_agent.original.text`*:: -+ --- -type: match_only_text - --- - -*`user_agent.os.family`*:: -+ --- -OS family (such as redhat, debian, freebsd, windows). - -type: keyword - -example: debian - --- - -*`user_agent.os.full`*:: -+ --- -Operating system name, including the version or code name. - -type: keyword - -example: Mac OS Mojave - --- - -*`user_agent.os.full.text`*:: -+ --- -type: match_only_text - --- - -*`user_agent.os.kernel`*:: -+ --- -Operating system kernel version as a raw string. - -type: keyword - -example: 4.4.0-112-generic - --- - -*`user_agent.os.name`*:: -+ --- -Operating system name, without the version. - -type: keyword - -example: Mac OS X - --- - -*`user_agent.os.name.text`*:: -+ --- -type: match_only_text - --- - -*`user_agent.os.platform`*:: -+ --- -Operating system platform (such centos, ubuntu, windows). - -type: keyword - -example: darwin - --- - -*`user_agent.os.type`*:: -+ --- -Use the `os.type` field to categorize the operating system into one of the broad commercial families. -One of these following values should be used (lowercase): linux, macos, unix, windows. -If the OS you're dealing with is not in the list, the field should not be populated. Please let us know by opening an issue with ECS, to propose its addition. - -type: keyword - -example: macos - --- - -*`user_agent.os.version`*:: -+ --- -Operating system version as a raw string. - -type: keyword - -example: 10.14.1 - --- - -*`user_agent.version`*:: -+ --- -Version of the user agent. - -type: keyword - -example: 12.0 - --- - -[float] -=== vlan - -The VLAN fields are used to identify 802.1q tag(s) of a packet, as well as ingress and egress VLAN associations of an observer in relation to a specific packet or connection. -Network.vlan fields are used to record a single VLAN tag, or the outer tag in the case of q-in-q encapsulations, for a packet or connection as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. -Network.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should only be used in addition to network.vlan fields to indicate q-in-q tagging. -Observer.ingress and observer.egress VLAN values are used to record observer specific information when observer events contain discrete ingress and egress VLAN information, typically provided by firewalls, routers, or load balancers. - - -*`vlan.id`*:: -+ --- -VLAN ID as reported by the observer. - -type: keyword - -example: 10 - --- - -*`vlan.name`*:: -+ --- -Optional VLAN name as reported by the observer. - -type: keyword - -example: outside - --- - -[float] -=== vulnerability - -The vulnerability fields describe information about a vulnerability that is relevant to an event. - - -*`vulnerability.category`*:: -+ --- -The type of system or architecture that the vulnerability affects. These may be platform-specific (for example, Debian or SUSE) or general (for example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys vulnerability categories]) -This field must be an array. - -type: keyword - -example: ["Firewall"] - --- - -*`vulnerability.classification`*:: -+ --- -The classification of the vulnerability scoring system. For example (https://www.first.org/cvss/) - -type: keyword - -example: CVSS - --- - -*`vulnerability.description`*:: -+ --- -The description of the vulnerability that provides additional context of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common Vulnerabilities and Exposure CVE description]) - -type: keyword - -example: In macOS before 2.12.6, there is a vulnerability in the RPC... - --- - -*`vulnerability.description.text`*:: -+ --- -type: match_only_text - --- - -*`vulnerability.enumeration`*:: -+ --- -The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/) - -type: keyword - -example: CVE - --- - -*`vulnerability.id`*:: -+ --- -The identification (ID) is the number portion of a vulnerability entry. It includes a unique identification number for the vulnerability. For example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities and Exposure CVE ID] - -type: keyword - -example: CVE-2019-00001 - --- - -*`vulnerability.reference`*:: -+ --- -A resource that provides additional information, context, and mitigations for the identified vulnerability. - -type: keyword - -example: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111 - --- - -*`vulnerability.report_id`*:: -+ --- -The report or scan identification number. - -type: keyword - -example: 20191018.0001 - --- - -*`vulnerability.scanner.vendor`*:: -+ --- -The name of the vulnerability scanner vendor. - -type: keyword - -example: Tenable - --- - -*`vulnerability.score.base`*:: -+ --- -Scores can range from 0.0 to 10.0, with 10.0 being the most severe. -Base scores cover an assessment for exploitability metrics (attack vector, complexity, privileges, and user interaction), impact metrics (confidentiality, integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document) - -type: float - -example: 5.5 - --- - -*`vulnerability.score.environmental`*:: -+ --- -Scores can range from 0.0 to 10.0, with 10.0 being the most severe. -Environmental scores cover an assessment for any modified Base metrics, confidentiality, integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document) - -type: float - -example: 5.5 - --- - -*`vulnerability.score.temporal`*:: -+ --- -Scores can range from 0.0 to 10.0, with 10.0 being the most severe. -Temporal scores cover an assessment for code maturity, remediation level, and confidence. For example (https://www.first.org/cvss/specification-document) - -type: float - --- - -*`vulnerability.score.version`*:: -+ --- -The National Vulnerability Database (NVD) provides qualitative severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score ranges in addition to the severity ratings for CVSS v3.0 as they are defined in the CVSS v3.0 specification. -CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit organization, whose mission is to help computer security incident response teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss) - -type: keyword - -example: 2.0 - --- - -*`vulnerability.severity`*:: -+ --- -The severity of the vulnerability can help with metrics and internal prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) - -type: keyword - -example: Critical - --- - -[float] -=== x509 - -This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. -When the certificate relates to a file, use the fields at `file.x509`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). -Events that contain certificate information about network connections, should use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`. - - -*`x509.alternative_names`*:: -+ --- -List of subject alternative names (SAN). Name types vary by certificate authority and certificate type but commonly contain IP addresses, DNS names (and wildcards), and email addresses. - -type: keyword - -example: *.elastic.co - --- - -*`x509.issuer.common_name`*:: -+ --- -List of common name (CN) of issuing certificate authority. - -type: keyword - -example: Example SHA2 High Assurance Server CA - --- - -*`x509.issuer.country`*:: -+ --- -List of country (C) codes - -type: keyword - -example: US - --- - -*`x509.issuer.distinguished_name`*:: -+ --- -Distinguished name (DN) of issuing certificate authority. - -type: keyword - -example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA - --- - -*`x509.issuer.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: Mountain View - --- - -*`x509.issuer.organization`*:: -+ --- -List of organizations (O) of issuing certificate authority. - -type: keyword - -example: Example Inc - --- - -*`x509.issuer.organizational_unit`*:: -+ --- -List of organizational units (OU) of issuing certificate authority. - -type: keyword - -example: www.example.com - --- - -*`x509.issuer.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`x509.not_after`*:: -+ --- -Time at which the certificate is no longer considered valid. - -type: date - -example: 2020-07-16 03:15:39+00:00 - --- - -*`x509.not_before`*:: -+ --- -Time at which the certificate is first considered valid. - -type: date - -example: 2019-08-16 01:40:25+00:00 - --- - -*`x509.public_key_algorithm`*:: -+ --- -Algorithm used to generate the public key. - -type: keyword - -example: RSA - --- - -*`x509.public_key_curve`*:: -+ --- -The curve used by the elliptic curve public key algorithm. This is algorithm specific. - -type: keyword - -example: nistp521 - --- - -*`x509.public_key_exponent`*:: -+ --- -Exponent used to derive the public key. This is algorithm specific. - -type: long - -example: 65537 - -Field is not indexed. - --- - -*`x509.public_key_size`*:: -+ --- -The size of the public key space in bits. - -type: long - -example: 2048 - --- - -*`x509.serial_number`*:: -+ --- -Unique serial number issued by the certificate authority. For consistency, if this value is alphanumeric, it should be formatted without colons and uppercase characters. - -type: keyword - -example: 55FBB9C7DEBF09809D12CCAA - --- - -*`x509.signature_algorithm`*:: -+ --- -Identifier for certificate signature algorithm. We recommend using names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. - -type: keyword - -example: SHA256-RSA - --- - -*`x509.subject.common_name`*:: -+ --- -List of common names (CN) of subject. - -type: keyword - -example: shared.global.example.net - --- - -*`x509.subject.country`*:: -+ --- -List of country (C) code - -type: keyword - -example: US - --- - -*`x509.subject.distinguished_name`*:: -+ --- -Distinguished name (DN) of the certificate subject entity. - -type: keyword - -example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net - --- - -*`x509.subject.locality`*:: -+ --- -List of locality names (L) - -type: keyword - -example: San Francisco - --- - -*`x509.subject.organization`*:: -+ --- -List of organizations (O) of subject. - -type: keyword - -example: Example, Inc. - --- - -*`x509.subject.organizational_unit`*:: -+ --- -List of organizational units (OU) of subject. - -type: keyword - --- - -*`x509.subject.state_or_province`*:: -+ --- -List of state or province names (ST, S, or P) - -type: keyword - -example: California - --- - -*`x509.version_number`*:: -+ --- -Version of x509 format. - -type: keyword - -example: 3 - --- - -[[exported-fields-elasticsearch]] -== Elasticsearch fields - -elasticsearch Module - - - -[float] -=== elasticsearch - - - - -*`elasticsearch.component`*:: -+ --- -Elasticsearch component from where the log event originated - -type: keyword - -example: o.e.c.m.MetaDataCreateIndexService - --- - -*`elasticsearch.cluster.uuid`*:: -+ --- -UUID of the cluster - -type: keyword - -example: GmvrbHlNTiSVYiPf8kxg9g - --- - -*`elasticsearch.cluster.name`*:: -+ --- -Name of the cluster - -type: keyword - -example: docker-cluster - --- - -*`elasticsearch.node.id`*:: -+ --- -ID of the node - -type: keyword - -example: DSiWcTyeThWtUXLB9J0BMw - --- - -*`elasticsearch.node.name`*:: -+ --- -Name of the node - -type: keyword - -example: vWNJsZ3 - --- - -*`elasticsearch.index.name`*:: -+ --- -Index name - -type: keyword - -example: filebeat-test-input - --- - -*`elasticsearch.index.id`*:: -+ --- -Index id - -type: keyword - -example: aOGgDwbURfCV57AScqbCgw - --- - -*`elasticsearch.shard.id`*:: -+ --- -Id of the shard - -type: keyword - -example: 0 - --- - -*`elasticsearch.elastic_product_origin`*:: -+ --- -Used by Elastic stack to identify which component of the stack sent the request - -type: keyword - -example: kibana - --- - -*`elasticsearch.http.request.x_opaque_id`*:: -+ --- -Used by Elasticsearch to throttle and deduplicate deprecation warnings - -type: keyword - -example: v7app - --- - -*`elasticsearch.event.category`*:: -+ --- -Category of the deprecation event - -type: keyword - -example: compatible_api - --- - - -*`elasticsearch.audit.layer`*:: -+ --- -The layer from which this event originated: rest, transport or ip_filter - -type: keyword - -example: rest - --- - -*`elasticsearch.audit.event_type`*:: -+ --- -The type of event that occurred: anonymous_access_denied, authentication_failed, access_denied, access_granted, connection_granted, connection_denied, tampered_request, run_as_granted, run_as_denied - -type: keyword - -example: access_granted - --- - -*`elasticsearch.audit.origin.type`*:: -+ --- -Where the request originated: rest (request originated from a REST API request), transport (request was received on the transport channel), local_node (the local node issued the request) - -type: keyword - -example: local_node - --- - -*`elasticsearch.audit.realm`*:: -+ --- -The authentication realm the authentication was validated against - -type: keyword - --- - -*`elasticsearch.audit.user.realm`*:: -+ --- -The user's authentication realm, if authenticated - -type: keyword - --- - -*`elasticsearch.audit.user.roles`*:: -+ --- -Roles to which the principal belongs - -type: keyword - -example: ['kibana_admin', 'beats_admin'] - --- - -*`elasticsearch.audit.user.run_as.name`*:: -+ --- -type: keyword - --- - -*`elasticsearch.audit.user.run_as.realm`*:: -+ --- -type: keyword - --- - -*`elasticsearch.audit.component`*:: -+ --- -type: keyword - --- - -*`elasticsearch.audit.action`*:: -+ --- -The name of the action that was executed - -type: keyword - -example: cluster:monitor/main - --- - -*`elasticsearch.audit.url.params`*:: -+ --- -REST URI parameters - -example: {username=jacknich2} - --- - -*`elasticsearch.audit.indices`*:: -+ --- -Indices accessed by action - -type: keyword - -example: ['foo-2019.01.04', 'foo-2019.01.03', 'foo-2019.01.06'] - --- - -*`elasticsearch.audit.request.id`*:: -+ --- -Unique ID of request - -type: keyword - -example: WzL_kb6VSvOhAq0twPvHOQ - --- - -*`elasticsearch.audit.request.name`*:: -+ --- -The type of request that was executed - -type: keyword - -example: ClearScrollRequest - --- - -*`elasticsearch.audit.request_body`*:: -+ --- -type: alias - -alias to: http.request.body.content - --- - -*`elasticsearch.audit.origin_address`*:: -+ --- -type: alias - -alias to: source.ip - --- - -*`elasticsearch.audit.uri`*:: -+ --- -type: alias - -alias to: url.original - --- - -*`elasticsearch.audit.principal`*:: -+ --- -type: alias - -alias to: user.name - --- - -*`elasticsearch.audit.message`*:: -+ --- -type: text - --- - -*`elasticsearch.audit.invalidate.apikeys.owned_by_authenticated_user`*:: -+ --- -type: boolean - --- - -*`elasticsearch.audit.authentication.type`*:: -+ --- -type: keyword - --- - -*`elasticsearch.audit.opaque_id`*:: -+ --- -type: text - --- - -[float] -=== deprecation - - - -[float] -=== gc - -GC fileset fields. - - - -[float] -=== phase - -Fields specific to GC phase. - - - -*`elasticsearch.gc.phase.name`*:: -+ --- -Name of the GC collection phase. - - -type: keyword - --- - -*`elasticsearch.gc.phase.duration_sec`*:: -+ --- -Collection phase duration according to the Java virtual machine. - - -type: float - --- - -*`elasticsearch.gc.phase.scrub_symbol_table_time_sec`*:: -+ --- -Pause time in seconds cleaning up symbol tables. - - -type: float - --- - -*`elasticsearch.gc.phase.scrub_string_table_time_sec`*:: -+ --- -Pause time in seconds cleaning up string tables. - - -type: float - --- - -*`elasticsearch.gc.phase.weak_refs_processing_time_sec`*:: -+ --- -Time spent processing weak references in seconds. - - -type: float - --- - -*`elasticsearch.gc.phase.parallel_rescan_time_sec`*:: -+ --- -Time spent in seconds marking live objects while application is stopped. - - -type: float - --- - -*`elasticsearch.gc.phase.class_unload_time_sec`*:: -+ --- -Time spent unloading unused classes in seconds. - - -type: float - --- - -[float] -=== cpu_time - -Process CPU time spent performing collections. - - - -*`elasticsearch.gc.phase.cpu_time.user_sec`*:: -+ --- -CPU time spent outside the kernel. - - -type: float - --- - -*`elasticsearch.gc.phase.cpu_time.sys_sec`*:: -+ --- -CPU time spent inside the kernel. - - -type: float - --- - -*`elasticsearch.gc.phase.cpu_time.real_sec`*:: -+ --- -Total elapsed CPU time spent to complete the collection from start to finish. - - -type: float - --- - -*`elasticsearch.gc.jvm_runtime_sec`*:: -+ --- -The time from JVM start up in seconds, as a floating point number. - - -type: float - --- - -*`elasticsearch.gc.threads_total_stop_time_sec`*:: -+ --- -Garbage collection threads total stop time seconds. - - -type: float - --- - -*`elasticsearch.gc.stopping_threads_time_sec`*:: -+ --- -Time took to stop threads seconds. - - -type: float - --- - -*`elasticsearch.gc.tags`*:: -+ --- -GC logging tags. - - -type: keyword - --- - -[float] -=== heap - -Heap allocation and total size. - - - -*`elasticsearch.gc.heap.size_kb`*:: -+ --- -Total heap size in kilobytes. - - -type: integer - --- - -*`elasticsearch.gc.heap.used_kb`*:: -+ --- -Used heap in kilobytes. - - -type: integer - --- - -[float] -=== old_gen - -Old generation occupancy and total size. - - - -*`elasticsearch.gc.old_gen.size_kb`*:: -+ --- -Total size of old generation in kilobytes. - - -type: integer - --- - -*`elasticsearch.gc.old_gen.used_kb`*:: -+ --- -Old generation occupancy in kilobytes. - - -type: integer - --- - -[float] -=== young_gen - -Young generation occupancy and total size. - - - -*`elasticsearch.gc.young_gen.size_kb`*:: -+ --- -Total size of young generation in kilobytes. - - -type: integer - --- - -*`elasticsearch.gc.young_gen.used_kb`*:: -+ --- -Young generation occupancy in kilobytes. - - -type: integer - --- - -[float] -=== server - -Server log file - - -*`elasticsearch.server.stacktrace`*:: -+ --- -Field is not indexed. - --- - -[float] -=== gc - -GC log - - -[float] -=== young - -Young GC - - -*`elasticsearch.server.gc.young.one`*:: -+ --- - - -type: long - -example: - --- - -*`elasticsearch.server.gc.young.two`*:: -+ --- - - -type: long - -example: - --- - -*`elasticsearch.server.gc.overhead_seq`*:: -+ --- -Sequence number - -type: long - -example: 3449992 - --- - -*`elasticsearch.server.gc.collection_duration.ms`*:: -+ --- -Time spent in GC, in milliseconds - -type: float - -example: 1600 - --- - -*`elasticsearch.server.gc.observation_duration.ms`*:: -+ --- -Total time over which collection was observed, in milliseconds - -type: float - -example: 1800 - --- - -[float] -=== slowlog - -Slowlog events from Elasticsearch - - -*`elasticsearch.slowlog.logger`*:: -+ --- -Logger name - -type: keyword - -example: index.search.slowlog.fetch - --- - -*`elasticsearch.slowlog.took`*:: -+ --- -Time it took to execute the query - -type: keyword - -example: 300ms - --- - -*`elasticsearch.slowlog.types`*:: -+ --- -Types - -type: keyword - -example: - --- - -*`elasticsearch.slowlog.stats`*:: -+ --- -Stats groups - -type: keyword - -example: group1 - --- - -*`elasticsearch.slowlog.search_type`*:: -+ --- -Search type - -type: keyword - -example: QUERY_THEN_FETCH - --- - -*`elasticsearch.slowlog.source_query`*:: -+ --- -Slow query - -type: keyword - -example: {"query":{"match_all":{"boost":1.0}}} - --- - -*`elasticsearch.slowlog.extra_source`*:: -+ --- -Extra source information - -type: keyword - -example: - --- - -*`elasticsearch.slowlog.total_hits`*:: -+ --- -Total hits - -type: keyword - -example: 42 - --- - -*`elasticsearch.slowlog.total_shards`*:: -+ --- -Total queried shards - -type: keyword - -example: 22 - --- - -*`elasticsearch.slowlog.routing`*:: -+ --- -Routing - -type: keyword - -example: s01HZ2QBk9jw4gtgaFtn - --- - -*`elasticsearch.slowlog.id`*:: -+ --- -Id - -type: keyword - -example: - --- - -*`elasticsearch.slowlog.type`*:: -+ --- -Type - -type: keyword - -example: doc - --- - -*`elasticsearch.slowlog.source`*:: -+ --- -Source of document that was indexed - -type: keyword - --- - -*`elasticsearch.slowlog.user.realm`*:: -+ --- -The authentication realm the user was authenticated against - -type: keyword - -example: default_file - --- - -*`elasticsearch.slowlog.user.effective.realm`*:: -+ --- -The authentication realm the effective user was authenticated against - -type: keyword - -example: default_file - --- - -*`elasticsearch.slowlog.auth.type`*:: -+ --- -The authentication type used to authenticate the user. One of TOKEN | REALM | API_KEY - -type: keyword - -example: REALM - --- - -*`elasticsearch.slowlog.apikey.id`*:: -+ --- -The id of the API key used - -type: keyword - -example: WzL_kb6VSvOhAq0twPvHOQ - --- - -*`elasticsearch.slowlog.apikey.name`*:: -+ --- -The name of the API key used - -type: keyword - -example: my-api-key - --- - -[[exported-fields-envoyproxy]] -== Envoyproxy fields - -Module for handling logs produced by envoy - - - -[float] -=== envoyproxy - -Fields from envoy proxy logs after normalization - - - -*`envoyproxy.log_type`*:: -+ --- -Envoy log type, normally ACCESS - - -type: keyword - --- - -*`envoyproxy.response_flags`*:: -+ --- -Response flags - - -type: keyword - --- - -*`envoyproxy.upstream_service_time`*:: -+ --- -Upstream service time in nanoseconds - - -type: long - -format: duration - --- - -*`envoyproxy.request_id`*:: -+ --- -ID of the request - - -type: keyword - --- - -*`envoyproxy.authority`*:: -+ --- -Envoy proxy authority field - - -type: keyword - --- - -*`envoyproxy.proxy_type`*:: -+ --- -Envoy proxy type, tcp or http - - -type: keyword - --- - -[[exported-fields-f5]] -== Big-IP Access Policy Manager fields - -f5 fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-fortinet]] -== Fortinet fields - -fortinet Module - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[float] -=== fortinet - -Fields from fortinet FortiOS - - - -*`fortinet.file.hash.crc32`*:: -+ --- -CRC32 Hash of file - - -type: keyword - --- - -[float] -=== firewall - -Module for parsing Fortinet syslog. - - - -*`fortinet.firewall.acct_stat`*:: -+ --- -Accounting state (RADIUS) - - -type: keyword - --- - -*`fortinet.firewall.acktime`*:: -+ --- -Alarm Acknowledge Time - - -type: keyword - --- - -*`fortinet.firewall.act`*:: -+ --- -Action - - -type: keyword - --- - -*`fortinet.firewall.action`*:: -+ --- -Status of the session - - -type: keyword - --- - -*`fortinet.firewall.activity`*:: -+ --- -HA activity message - - -type: keyword - --- - -*`fortinet.firewall.addr`*:: -+ --- -IP Address - - -type: ip - --- - -*`fortinet.firewall.addr_type`*:: -+ --- -Address Type - - -type: keyword - --- - -*`fortinet.firewall.addrgrp`*:: -+ --- -Address Group - - -type: keyword - --- - -*`fortinet.firewall.adgroup`*:: -+ --- -AD Group Name - - -type: keyword - --- - -*`fortinet.firewall.admin`*:: -+ --- -Admin User - - -type: keyword - --- - -*`fortinet.firewall.age`*:: -+ --- -Time in seconds - time passed since last seen - - -type: integer - --- - -*`fortinet.firewall.agent`*:: -+ --- -User agent - eg. agent="Mozilla/5.0" - - -type: keyword - --- - -*`fortinet.firewall.alarmid`*:: -+ --- -Alarm ID - - -type: integer - --- - -*`fortinet.firewall.alert`*:: -+ --- -Alert - - -type: keyword - --- - -*`fortinet.firewall.analyticscksum`*:: -+ --- -The checksum of the file submitted for analytics - - -type: keyword - --- - -*`fortinet.firewall.analyticssubmit`*:: -+ --- -The flag for analytics submission - - -type: keyword - --- - -*`fortinet.firewall.ap`*:: -+ --- -Access Point - - -type: keyword - --- - -*`fortinet.firewall.app-type`*:: -+ --- -Address Type - - -type: keyword - --- - -*`fortinet.firewall.appact`*:: -+ --- -The security action from app control - - -type: keyword - --- - -*`fortinet.firewall.appid`*:: -+ --- -Application ID - - -type: integer - --- - -*`fortinet.firewall.applist`*:: -+ --- -Application Control profile - - -type: keyword - --- - -*`fortinet.firewall.apprisk`*:: -+ --- -Application Risk Level - - -type: keyword - --- - -*`fortinet.firewall.apscan`*:: -+ --- -The name of the AP, which scanned and detected the rogue AP - - -type: keyword - --- - -*`fortinet.firewall.apsn`*:: -+ --- -Access Point - - -type: keyword - --- - -*`fortinet.firewall.apstatus`*:: -+ --- -Access Point status - - -type: keyword - --- - -*`fortinet.firewall.aptype`*:: -+ --- -Access Point type - - -type: keyword - --- - -*`fortinet.firewall.assigned`*:: -+ --- -Assigned IP Address - - -type: ip - --- - -*`fortinet.firewall.assignip`*:: -+ --- -Assigned IP Address - - -type: ip - --- - -*`fortinet.firewall.attachment`*:: -+ --- -The flag for email attachement - - -type: keyword - --- - -*`fortinet.firewall.attack`*:: -+ --- -Attack Name - - -type: keyword - --- - -*`fortinet.firewall.attackcontext`*:: -+ --- -The trigger patterns and the packetdata with base64 encoding - - -type: keyword - --- - -*`fortinet.firewall.attackcontextid`*:: -+ --- -Attack context id / total - - -type: keyword - --- - -*`fortinet.firewall.attackid`*:: -+ --- -Attack ID - - -type: integer - --- - -*`fortinet.firewall.auditid`*:: -+ --- -Audit ID - - -type: long - --- - -*`fortinet.firewall.auditscore`*:: -+ --- -The Audit Score - - -type: keyword - --- - -*`fortinet.firewall.audittime`*:: -+ --- -The time of the audit - - -type: long - --- - -*`fortinet.firewall.authgrp`*:: -+ --- -Authorization Group - - -type: keyword - --- - -*`fortinet.firewall.authid`*:: -+ --- -Authentication ID - - -type: keyword - --- - -*`fortinet.firewall.authproto`*:: -+ --- -The protocol that initiated the authentication - - -type: keyword - --- - -*`fortinet.firewall.authserver`*:: -+ --- -Authentication server - - -type: keyword - --- - -*`fortinet.firewall.bandwidth`*:: -+ --- -Bandwidth - - -type: keyword - --- - -*`fortinet.firewall.banned_rule`*:: -+ --- -NAC quarantine Banned Rule Name - - -type: keyword - --- - -*`fortinet.firewall.banned_src`*:: -+ --- -NAC quarantine Banned Source IP - - -type: keyword - --- - -*`fortinet.firewall.banword`*:: -+ --- -Banned word - - -type: keyword - --- - -*`fortinet.firewall.botnetdomain`*:: -+ --- -Botnet Domain Name - - -type: keyword - --- - -*`fortinet.firewall.botnetip`*:: -+ --- -Botnet IP Address - - -type: ip - --- - -*`fortinet.firewall.bssid`*:: -+ --- -Service Set ID - - -type: keyword - --- - -*`fortinet.firewall.call_id`*:: -+ --- -Caller ID - - -type: keyword - --- - -*`fortinet.firewall.carrier_ep`*:: -+ --- -The FortiOS Carrier end-point identification - - -type: keyword - --- - -*`fortinet.firewall.cat`*:: -+ --- -DNS category ID - - -type: integer - --- - -*`fortinet.firewall.category`*:: -+ --- -Authentication category - - -type: keyword - --- - -*`fortinet.firewall.cc`*:: -+ --- -CC Email Address - - -type: keyword - --- - -*`fortinet.firewall.cdrcontent`*:: -+ --- -Cdrcontent - - -type: keyword - --- - -*`fortinet.firewall.centralnatid`*:: -+ --- -Central NAT ID - - -type: integer - --- - -*`fortinet.firewall.cert`*:: -+ --- -Certificate - - -type: keyword - --- - -*`fortinet.firewall.cert-type`*:: -+ --- -Certificate type - - -type: keyword - --- - -*`fortinet.firewall.certhash`*:: -+ --- -Certificate hash - - -type: keyword - --- - -*`fortinet.firewall.cfgattr`*:: -+ --- -Configuration attribute - - -type: keyword - --- - -*`fortinet.firewall.cfgobj`*:: -+ --- -Configuration object - - -type: keyword - --- - -*`fortinet.firewall.cfgpath`*:: -+ --- -Configuration path - - -type: keyword - --- - -*`fortinet.firewall.cfgtid`*:: -+ --- -Configuration transaction ID - - -type: keyword - --- - -*`fortinet.firewall.cfgtxpower`*:: -+ --- -Configuration TX power - - -type: integer - --- - -*`fortinet.firewall.channel`*:: -+ --- -Wireless Channel - - -type: integer - --- - -*`fortinet.firewall.channeltype`*:: -+ --- -SSH channel type - - -type: keyword - --- - -*`fortinet.firewall.chassisid`*:: -+ --- -Chassis ID - - -type: integer - --- - -*`fortinet.firewall.checksum`*:: -+ --- -The checksum of the scanned file - - -type: keyword - --- - -*`fortinet.firewall.chgheaders`*:: -+ --- -HTTP Headers - - -type: keyword - --- - -*`fortinet.firewall.cldobjid`*:: -+ --- -Connector object ID - - -type: keyword - --- - -*`fortinet.firewall.client_addr`*:: -+ --- -Wifi client address - - -type: keyword - --- - -*`fortinet.firewall.cloudaction`*:: -+ --- -Cloud Action - - -type: keyword - --- - -*`fortinet.firewall.clouduser`*:: -+ --- -Cloud User - - -type: keyword - --- - -*`fortinet.firewall.column`*:: -+ --- -VOIP Column - - -type: integer - --- - -*`fortinet.firewall.command`*:: -+ --- -CLI Command - - -type: keyword - --- - -*`fortinet.firewall.community`*:: -+ --- -SNMP Community - - -type: keyword - --- - -*`fortinet.firewall.configcountry`*:: -+ --- -Configuration country - - -type: keyword - --- - -*`fortinet.firewall.connection_type`*:: -+ --- -FortiClient Connection Type - - -type: keyword - --- - -*`fortinet.firewall.conserve`*:: -+ --- -Flag for conserve mode - - -type: keyword - --- - -*`fortinet.firewall.constraint`*:: -+ --- -WAF http protocol restrictions - - -type: keyword - --- - -*`fortinet.firewall.contentdisarmed`*:: -+ --- -Email scanned content - - -type: keyword - --- - -*`fortinet.firewall.contenttype`*:: -+ --- -Content Type from HTTP header - - -type: keyword - --- - -*`fortinet.firewall.cookies`*:: -+ --- -VPN Cookie - - -type: keyword - --- - -*`fortinet.firewall.count`*:: -+ --- -Counts of action type - - -type: integer - --- - -*`fortinet.firewall.countapp`*:: -+ --- -Number of App Ctrl logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countav`*:: -+ --- -Number of AV logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countcifs`*:: -+ --- -Number of CIFS logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countdlp`*:: -+ --- -Number of DLP logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countdns`*:: -+ --- -Number of DNS logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countemail`*:: -+ --- -Number of email logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countff`*:: -+ --- -Number of ff logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countips`*:: -+ --- -Number of IPS logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countssh`*:: -+ --- -Number of SSH logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countssl`*:: -+ --- -Number of SSL logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countwaf`*:: -+ --- -Number of WAF logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.countweb`*:: -+ --- -Number of Web filter logs associated with the session - - -type: integer - --- - -*`fortinet.firewall.cpu`*:: -+ --- -CPU Usage - - -type: integer - --- - -*`fortinet.firewall.craction`*:: -+ --- -Client Reputation Action - - -type: integer - --- - -*`fortinet.firewall.criticalcount`*:: -+ --- -Number of critical ratings - - -type: integer - --- - -*`fortinet.firewall.crl`*:: -+ --- -Client Reputation Level - - -type: keyword - --- - -*`fortinet.firewall.crlevel`*:: -+ --- -Client Reputation Level - - -type: keyword - --- - -*`fortinet.firewall.crscore`*:: -+ --- -Some description - - -type: integer - --- - -*`fortinet.firewall.cveid`*:: -+ --- -CVE ID - - -type: keyword - --- - -*`fortinet.firewall.daemon`*:: -+ --- -Daemon name - - -type: keyword - --- - -*`fortinet.firewall.datarange`*:: -+ --- -Data range for reports - - -type: keyword - --- - -*`fortinet.firewall.date`*:: -+ --- -Date - - -type: keyword - --- - -*`fortinet.firewall.ddnsserver`*:: -+ --- -DDNS server - - -type: ip - --- - -*`fortinet.firewall.desc`*:: -+ --- -Description - - -type: keyword - --- - -*`fortinet.firewall.detectionmethod`*:: -+ --- -Detection method - - -type: keyword - --- - -*`fortinet.firewall.devcategory`*:: -+ --- -Device category - - -type: keyword - --- - -*`fortinet.firewall.devintfname`*:: -+ --- -HA device Interface Name - - -type: keyword - --- - -*`fortinet.firewall.devtype`*:: -+ --- -Device type - - -type: keyword - --- - -*`fortinet.firewall.dhcp_msg`*:: -+ --- -DHCP Message - - -type: keyword - --- - -*`fortinet.firewall.dintf`*:: -+ --- -Destination interface - - -type: keyword - --- - -*`fortinet.firewall.disk`*:: -+ --- -Assosciated disk - - -type: keyword - --- - -*`fortinet.firewall.disklograte`*:: -+ --- -Disk logging rate - - -type: long - --- - -*`fortinet.firewall.dlpextra`*:: -+ --- -DLP extra information - - -type: keyword - --- - -*`fortinet.firewall.docsource`*:: -+ --- -DLP fingerprint document source - - -type: keyword - --- - -*`fortinet.firewall.domainctrlauthstate`*:: -+ --- -CIFS domain auth state - - -type: integer - --- - -*`fortinet.firewall.domainctrlauthtype`*:: -+ --- -CIFS domain auth type - - -type: integer - --- - -*`fortinet.firewall.domainctrldomain`*:: -+ --- -CIFS domain auth domain - - -type: keyword - --- - -*`fortinet.firewall.domainctrlip`*:: -+ --- -CIFS Domain IP - - -type: ip - --- - -*`fortinet.firewall.domainctrlname`*:: -+ --- -CIFS Domain name - - -type: keyword - --- - -*`fortinet.firewall.domainctrlprotocoltype`*:: -+ --- -CIFS Domain connection protocol - - -type: integer - --- - -*`fortinet.firewall.domainctrlusername`*:: -+ --- -CIFS Domain username - - -type: keyword - --- - -*`fortinet.firewall.domainfilteridx`*:: -+ --- -Domain filter ID - - -type: integer - --- - -*`fortinet.firewall.domainfilterlist`*:: -+ --- -Domain filter name - - -type: keyword - --- - -*`fortinet.firewall.ds`*:: -+ --- -Direction with distribution system - - -type: keyword - --- - -*`fortinet.firewall.dst_int`*:: -+ --- -Destination interface - - -type: keyword - --- - -*`fortinet.firewall.dstintfrole`*:: -+ --- -Destination interface role - - -type: keyword - --- - -*`fortinet.firewall.dstcountry`*:: -+ --- -Destination country - - -type: keyword - --- - -*`fortinet.firewall.dstdevcategory`*:: -+ --- -Destination device category - - -type: keyword - --- - -*`fortinet.firewall.dstdevtype`*:: -+ --- -Destination device type - - -type: keyword - --- - -*`fortinet.firewall.dstfamily`*:: -+ --- -Destination OS family - - -type: keyword - --- - -*`fortinet.firewall.dsthwvendor`*:: -+ --- -Destination HW vendor - - -type: keyword - --- - -*`fortinet.firewall.dsthwversion`*:: -+ --- -Destination HW version - - -type: keyword - --- - -*`fortinet.firewall.dstinetsvc`*:: -+ --- -Destination interface service - - -type: keyword - --- - -*`fortinet.firewall.dstosname`*:: -+ --- -Destination OS name - - -type: keyword - --- - -*`fortinet.firewall.dstosversion`*:: -+ --- -Destination OS version - - -type: keyword - --- - -*`fortinet.firewall.dstserver`*:: -+ --- -Destination server - - -type: integer - --- - -*`fortinet.firewall.dstssid`*:: -+ --- -Destination SSID - - -type: keyword - --- - -*`fortinet.firewall.dstswversion`*:: -+ --- -Destination software version - - -type: keyword - --- - -*`fortinet.firewall.dstunauthusersource`*:: -+ --- -Destination unauthenticated source - - -type: keyword - --- - -*`fortinet.firewall.dstuuid`*:: -+ --- -UUID of the Destination IP address - - -type: keyword - --- - -*`fortinet.firewall.duid`*:: -+ --- -DHCP UID - - -type: keyword - --- - -*`fortinet.firewall.eapolcnt`*:: -+ --- -EAPOL packet count - - -type: integer - --- - -*`fortinet.firewall.eapoltype`*:: -+ --- -EAPOL packet type - - -type: keyword - --- - -*`fortinet.firewall.encrypt`*:: -+ --- -Whether the packet is encrypted or not - - -type: integer - --- - -*`fortinet.firewall.encryption`*:: -+ --- -Encryption method - - -type: keyword - --- - -*`fortinet.firewall.epoch`*:: -+ --- -Epoch used for locating file - - -type: integer - --- - -*`fortinet.firewall.espauth`*:: -+ --- -ESP Authentication - - -type: keyword - --- - -*`fortinet.firewall.esptransform`*:: -+ --- -ESP Transform - - -type: keyword - --- - -*`fortinet.firewall.eventtype`*:: -+ --- -UTM Event Type - - -type: keyword - --- - -*`fortinet.firewall.exch`*:: -+ --- -Mail Exchanges from DNS response answer section - - -type: keyword - --- - -*`fortinet.firewall.exchange`*:: -+ --- -Mail Exchanges from DNS response answer section - - -type: keyword - --- - -*`fortinet.firewall.expectedsignature`*:: -+ --- -Expected SSL signature - - -type: keyword - --- - -*`fortinet.firewall.expiry`*:: -+ --- -FortiGuard override expiry timestamp - - -type: keyword - --- - -*`fortinet.firewall.fams_pause`*:: -+ --- -Fortinet Analysis and Management Service Pause - - -type: integer - --- - -*`fortinet.firewall.fazlograte`*:: -+ --- -FortiAnalyzer Logging Rate - - -type: long - --- - -*`fortinet.firewall.fctemssn`*:: -+ --- -FortiClient Endpoint SSN - - -type: keyword - --- - -*`fortinet.firewall.fctuid`*:: -+ --- -FortiClient UID - - -type: keyword - --- - -*`fortinet.firewall.field`*:: -+ --- -NTP status field - - -type: keyword - --- - -*`fortinet.firewall.filefilter`*:: -+ --- -The filter used to identify the affected file - - -type: keyword - --- - -*`fortinet.firewall.filehashsrc`*:: -+ --- -Filehash source - - -type: keyword - --- - -*`fortinet.firewall.filtercat`*:: -+ --- -DLP filter category - - -type: keyword - --- - -*`fortinet.firewall.filteridx`*:: -+ --- -DLP filter ID - - -type: integer - --- - -*`fortinet.firewall.filtername`*:: -+ --- -DLP rule name - - -type: keyword - --- - -*`fortinet.firewall.filtertype`*:: -+ --- -DLP filter type - - -type: keyword - --- - -*`fortinet.firewall.fortiguardresp`*:: -+ --- -Antispam ESP value - - -type: keyword - --- - -*`fortinet.firewall.forwardedfor`*:: -+ --- -Email address forwarded - - -type: keyword - --- - -*`fortinet.firewall.fqdn`*:: -+ --- -FQDN - - -type: keyword - --- - -*`fortinet.firewall.frametype`*:: -+ --- -Wireless frametype - - -type: keyword - --- - -*`fortinet.firewall.freediskstorage`*:: -+ --- -Free disk integer - - -type: integer - --- - -*`fortinet.firewall.from`*:: -+ --- -From email address - - -type: keyword - --- - -*`fortinet.firewall.from_vcluster`*:: -+ --- -Source virtual cluster number - - -type: integer - --- - -*`fortinet.firewall.fsaverdict`*:: -+ --- -FSA verdict - - -type: keyword - --- - -*`fortinet.firewall.fwserver_name`*:: -+ --- -Web proxy server name - - -type: keyword - --- - -*`fortinet.firewall.gateway`*:: -+ --- -Gateway ip address for PPPoE status report - - -type: ip - --- - -*`fortinet.firewall.green`*:: -+ --- -Memory status - - -type: keyword - --- - -*`fortinet.firewall.groupid`*:: -+ --- -User Group ID - - -type: integer - --- - -*`fortinet.firewall.ha-prio`*:: -+ --- -HA Priority - - -type: integer - --- - -*`fortinet.firewall.ha_group`*:: -+ --- -HA Group - - -type: keyword - --- - -*`fortinet.firewall.ha_role`*:: -+ --- -HA Role - - -type: keyword - --- - -*`fortinet.firewall.handshake`*:: -+ --- -SSL Handshake - - -type: keyword - --- - -*`fortinet.firewall.hash`*:: -+ --- -Hash value of downloaded file - - -type: keyword - --- - -*`fortinet.firewall.hbdn_reason`*:: -+ --- -Heartbeat down reason - - -type: keyword - --- - -*`fortinet.firewall.highcount`*:: -+ --- -Highcount fabric summary - - -type: integer - --- - -*`fortinet.firewall.host`*:: -+ --- -Hostname - - -type: keyword - --- - -*`fortinet.firewall.iaid`*:: -+ --- -DHCPv6 id - - -type: keyword - --- - -*`fortinet.firewall.icmpcode`*:: -+ --- -Destination Port of the ICMP message - - -type: keyword - --- - -*`fortinet.firewall.icmpid`*:: -+ --- -Source port of the ICMP message - - -type: keyword - --- - -*`fortinet.firewall.icmptype`*:: -+ --- -The type of ICMP message - - -type: keyword - --- - -*`fortinet.firewall.identifier`*:: -+ --- -Network traffic identifier - - -type: integer - --- - -*`fortinet.firewall.in_spi`*:: -+ --- -IPSEC inbound SPI - - -type: keyword - --- - -*`fortinet.firewall.incidentserialno`*:: -+ --- -Incident serial number - - -type: integer - --- - -*`fortinet.firewall.infected`*:: -+ --- -Infected MMS - - -type: integer - --- - -*`fortinet.firewall.infectedfilelevel`*:: -+ --- -DLP infected file level - - -type: integer - --- - -*`fortinet.firewall.informationsource`*:: -+ --- -Information source - - -type: keyword - --- - -*`fortinet.firewall.init`*:: -+ --- -IPSEC init stage - - -type: keyword - --- - -*`fortinet.firewall.initiator`*:: -+ --- -Original login user name for Fortiguard override - - -type: keyword - --- - -*`fortinet.firewall.interface`*:: -+ --- -Related interface - - -type: keyword - --- - -*`fortinet.firewall.intf`*:: -+ --- -Related interface - - -type: keyword - --- - -*`fortinet.firewall.invalidmac`*:: -+ --- -The MAC address with invalid OUI - - -type: keyword - --- - -*`fortinet.firewall.ip`*:: -+ --- -Related IP - - -type: ip - --- - -*`fortinet.firewall.iptype`*:: -+ --- -Related IP type - - -type: keyword - --- - -*`fortinet.firewall.keyword`*:: -+ --- -Keyword used for search - - -type: keyword - --- - -*`fortinet.firewall.kind`*:: -+ --- -VOIP kind - - -type: keyword - --- - -*`fortinet.firewall.lanin`*:: -+ --- -LAN incoming traffic in bytes - - -type: long - --- - -*`fortinet.firewall.lanout`*:: -+ --- -LAN outbound traffic in bytes - - -type: long - --- - -*`fortinet.firewall.lease`*:: -+ --- -DHCP lease - - -type: integer - --- - -*`fortinet.firewall.license_limit`*:: -+ --- -Maximum Number of FortiClients for the License - - -type: keyword - --- - -*`fortinet.firewall.limit`*:: -+ --- -Virtual Domain Resource Limit - - -type: integer - --- - -*`fortinet.firewall.line`*:: -+ --- -VOIP line - - -type: keyword - --- - -*`fortinet.firewall.live`*:: -+ --- -Time in seconds - - -type: integer - --- - -*`fortinet.firewall.local`*:: -+ --- -Local IP for a PPPD Connection - - -type: ip - --- - -*`fortinet.firewall.log`*:: -+ --- -Log message - - -type: keyword - --- - -*`fortinet.firewall.login`*:: -+ --- -SSH login - - -type: keyword - --- - -*`fortinet.firewall.lowcount`*:: -+ --- -Fabric lowcount - - -type: integer - --- - -*`fortinet.firewall.mac`*:: -+ --- -DHCP mac address - - -type: keyword - --- - -*`fortinet.firewall.malform_data`*:: -+ --- -VOIP malformed data - - -type: integer - --- - -*`fortinet.firewall.malform_desc`*:: -+ --- -VOIP malformed data description - - -type: keyword - --- - -*`fortinet.firewall.manuf`*:: -+ --- -Manufacturer name - - -type: keyword - --- - -*`fortinet.firewall.masterdstmac`*:: -+ --- -Master mac address for a host with multiple network interfaces - - -type: keyword - --- - -*`fortinet.firewall.mastersrcmac`*:: -+ --- -The master MAC address for a host that has multiple network interfaces - - -type: keyword - --- - -*`fortinet.firewall.mediumcount`*:: -+ --- -Fabric medium count - - -type: integer - --- - -*`fortinet.firewall.mem`*:: -+ --- -Memory usage system statistics - - -type: integer - --- - -*`fortinet.firewall.meshmode`*:: -+ --- -Wireless mesh mode - - -type: keyword - --- - -*`fortinet.firewall.message_type`*:: -+ --- -VOIP message type - - -type: keyword - --- - -*`fortinet.firewall.method`*:: -+ --- -HTTP method - - -type: keyword - --- - -*`fortinet.firewall.mgmtcnt`*:: -+ --- -The number of unauthorized client flooding managemet frames - - -type: integer - --- - -*`fortinet.firewall.mode`*:: -+ --- -IPSEC mode - - -type: keyword - --- - -*`fortinet.firewall.module`*:: -+ --- -PCI-DSS module - - -type: keyword - --- - -*`fortinet.firewall.monitor-name`*:: -+ --- -Health Monitor Name - - -type: keyword - --- - -*`fortinet.firewall.monitor-type`*:: -+ --- -Health Monitor Type - - -type: keyword - --- - -*`fortinet.firewall.mpsk`*:: -+ --- -Wireless MPSK - - -type: keyword - --- - -*`fortinet.firewall.msgproto`*:: -+ --- -Message Protocol Number - - -type: keyword - --- - -*`fortinet.firewall.mtu`*:: -+ --- -Max Transmission Unit Value - - -type: integer - --- - -*`fortinet.firewall.name`*:: -+ --- -Name - - -type: keyword - --- - -*`fortinet.firewall.nat`*:: -+ --- -NAT IP Address - - -type: keyword - --- - -*`fortinet.firewall.netid`*:: -+ --- -Connector NetID - - -type: keyword - --- - -*`fortinet.firewall.new_status`*:: -+ --- -New status on user change - - -type: keyword - --- - -*`fortinet.firewall.new_value`*:: -+ --- -New Virtual Domain Name - - -type: keyword - --- - -*`fortinet.firewall.newchannel`*:: -+ --- -New Channel Number - - -type: integer - --- - -*`fortinet.firewall.newchassisid`*:: -+ --- -New Chassis ID - - -type: integer - --- - -*`fortinet.firewall.newslot`*:: -+ --- -New Slot Number - - -type: integer - --- - -*`fortinet.firewall.nextstat`*:: -+ --- -Time interval in seconds for the next statistics. - - -type: integer - --- - -*`fortinet.firewall.nf_type`*:: -+ --- -Notification Type - - -type: keyword - --- - -*`fortinet.firewall.noise`*:: -+ --- -Wifi Noise - - -type: integer - --- - -*`fortinet.firewall.old_status`*:: -+ --- -Original Status - - -type: keyword - --- - -*`fortinet.firewall.old_value`*:: -+ --- -Original Virtual Domain name - - -type: keyword - --- - -*`fortinet.firewall.oldchannel`*:: -+ --- -Original channel - - -type: integer - --- - -*`fortinet.firewall.oldchassisid`*:: -+ --- -Original Chassis Number - - -type: integer - --- - -*`fortinet.firewall.oldslot`*:: -+ --- -Original Slot Number - - -type: integer - --- - -*`fortinet.firewall.oldsn`*:: -+ --- -Old Serial number - - -type: keyword - --- - -*`fortinet.firewall.oldwprof`*:: -+ --- -Old Web Filter Profile - - -type: keyword - --- - -*`fortinet.firewall.onwire`*:: -+ --- -A flag to indicate if the AP is onwire or not - - -type: keyword - --- - -*`fortinet.firewall.opercountry`*:: -+ --- -Operating Country - - -type: keyword - --- - -*`fortinet.firewall.opertxpower`*:: -+ --- -Operating TX power - - -type: integer - --- - -*`fortinet.firewall.osname`*:: -+ --- -Operating System name - - -type: keyword - --- - -*`fortinet.firewall.osversion`*:: -+ --- -Operating System version - - -type: keyword - --- - -*`fortinet.firewall.out_spi`*:: -+ --- -Out SPI - - -type: keyword - --- - -*`fortinet.firewall.outintf`*:: -+ --- -Out interface - - -type: keyword - --- - -*`fortinet.firewall.passedcount`*:: -+ --- -Fabric passed count - - -type: integer - --- - -*`fortinet.firewall.passwd`*:: -+ --- -Changed user password information - - -type: keyword - --- - -*`fortinet.firewall.path`*:: -+ --- -Path of looped configuration for security fabric - - -type: keyword - --- - -*`fortinet.firewall.peer`*:: -+ --- -WAN optimization peer - - -type: keyword - --- - -*`fortinet.firewall.peer_notif`*:: -+ --- -VPN peer notification - - -type: keyword - --- - -*`fortinet.firewall.phase2_name`*:: -+ --- -VPN phase2 name - - -type: keyword - --- - -*`fortinet.firewall.phone`*:: -+ --- -VOIP Phone - - -type: keyword - --- - -*`fortinet.firewall.pid`*:: -+ --- -Process ID - - -type: integer - --- - -*`fortinet.firewall.policytype`*:: -+ --- -Policy Type - - -type: keyword - --- - -*`fortinet.firewall.poolname`*:: -+ --- -IP Pool name - - -type: keyword - --- - -*`fortinet.firewall.port`*:: -+ --- -Log upload error port - - -type: integer - --- - -*`fortinet.firewall.portbegin`*:: -+ --- -IP Pool port number to begin - - -type: integer - --- - -*`fortinet.firewall.portend`*:: -+ --- -IP Pool port number to end - - -type: integer - --- - -*`fortinet.firewall.probeproto`*:: -+ --- -Link Monitor Probe Protocol - - -type: keyword - --- - -*`fortinet.firewall.process`*:: -+ --- -URL Filter process - - -type: keyword - --- - -*`fortinet.firewall.processtime`*:: -+ --- -Process time for reports - - -type: integer - --- - -*`fortinet.firewall.profile`*:: -+ --- -Profile Name - - -type: keyword - --- - -*`fortinet.firewall.profile_vd`*:: -+ --- -Virtual Domain Name - - -type: keyword - --- - -*`fortinet.firewall.profilegroup`*:: -+ --- -Profile Group Name - - -type: keyword - --- - -*`fortinet.firewall.profiletype`*:: -+ --- -Profile Type - - -type: keyword - --- - -*`fortinet.firewall.qtypeval`*:: -+ --- -DNS question type value - - -type: integer - --- - -*`fortinet.firewall.quarskip`*:: -+ --- -Quarantine skip explanation - - -type: keyword - --- - -*`fortinet.firewall.quotaexceeded`*:: -+ --- -If quota has been exceeded - - -type: keyword - --- - -*`fortinet.firewall.quotamax`*:: -+ --- -Maximum quota allowed - in seconds if time-based - in bytes if traffic-based - - -type: long - --- - -*`fortinet.firewall.quotatype`*:: -+ --- -Quota type - - -type: keyword - --- - -*`fortinet.firewall.quotaused`*:: -+ --- -Quota used - in seconds if time-based - in bytes if trafficbased) - - -type: long - --- - -*`fortinet.firewall.radioband`*:: -+ --- -Radio band - - -type: keyword - --- - -*`fortinet.firewall.radioid`*:: -+ --- -Radio ID - - -type: integer - --- - -*`fortinet.firewall.radioidclosest`*:: -+ --- -Radio ID on the AP closest the rogue AP - - -type: integer - --- - -*`fortinet.firewall.radioiddetected`*:: -+ --- -Radio ID on the AP which detected the rogue AP - - -type: integer - --- - -*`fortinet.firewall.rate`*:: -+ --- -Wireless rogue rate value - - -type: keyword - --- - -*`fortinet.firewall.rawdata`*:: -+ --- -Raw data value - - -type: keyword - --- - -*`fortinet.firewall.rawdataid`*:: -+ --- -Raw data ID - - -type: keyword - --- - -*`fortinet.firewall.rcvddelta`*:: -+ --- -Received bytes delta - - -type: keyword - --- - -*`fortinet.firewall.reason`*:: -+ --- -Alert reason - - -type: keyword - --- - -*`fortinet.firewall.received`*:: -+ --- -Server key exchange received - - -type: integer - --- - -*`fortinet.firewall.receivedsignature`*:: -+ --- -Server key exchange received signature - - -type: keyword - --- - -*`fortinet.firewall.red`*:: -+ --- -Memory information in red - - -type: keyword - --- - -*`fortinet.firewall.referralurl`*:: -+ --- -Web filter referralurl - - -type: keyword - --- - -*`fortinet.firewall.remote`*:: -+ --- -Remote PPP IP address - - -type: ip - --- - -*`fortinet.firewall.remotewtptime`*:: -+ --- -Remote Wifi Radius authentication time - - -type: keyword - --- - -*`fortinet.firewall.reporttype`*:: -+ --- -Report type - - -type: keyword - --- - -*`fortinet.firewall.reqtype`*:: -+ --- -Request type - - -type: keyword - --- - -*`fortinet.firewall.request_name`*:: -+ --- -VOIP request name - - -type: keyword - --- - -*`fortinet.firewall.result`*:: -+ --- -VPN phase result - - -type: keyword - --- - -*`fortinet.firewall.role`*:: -+ --- -VPN Phase 2 role - - -type: keyword - --- - -*`fortinet.firewall.rssi`*:: -+ --- -Received signal strength indicator - - -type: integer - --- - -*`fortinet.firewall.rsso_key`*:: -+ --- -RADIUS SSO attribute value - - -type: keyword - --- - -*`fortinet.firewall.ruledata`*:: -+ --- -Rule data - - -type: keyword - --- - -*`fortinet.firewall.ruletype`*:: -+ --- -Rule type - - -type: keyword - --- - -*`fortinet.firewall.scanned`*:: -+ --- -Number of Scanned MMSs - - -type: integer - --- - -*`fortinet.firewall.scantime`*:: -+ --- -Scanned time - - -type: long - --- - -*`fortinet.firewall.scope`*:: -+ --- -FortiGuard Override Scope - - -type: keyword - --- - -*`fortinet.firewall.security`*:: -+ --- -Wireless rogue security - - -type: keyword - --- - -*`fortinet.firewall.sensitivity`*:: -+ --- -Sensitivity for document fingerprint - - -type: keyword - --- - -*`fortinet.firewall.sensor`*:: -+ --- -NAC Sensor Name - - -type: keyword - --- - -*`fortinet.firewall.sentdelta`*:: -+ --- -Sent bytes delta - - -type: keyword - --- - -*`fortinet.firewall.seq`*:: -+ --- -Sequence number - - -type: keyword - --- - -*`fortinet.firewall.serial`*:: -+ --- -WAN optimisation serial - - -type: keyword - --- - -*`fortinet.firewall.serialno`*:: -+ --- -Serial number - - -type: keyword - --- - -*`fortinet.firewall.server`*:: -+ --- -AD server FQDN or IP - - -type: keyword - --- - -*`fortinet.firewall.session_id`*:: -+ --- -Session ID - - -type: keyword - --- - -*`fortinet.firewall.sessionid`*:: -+ --- -WAD Session ID - - -type: integer - --- - -*`fortinet.firewall.setuprate`*:: -+ --- -Session Setup Rate - - -type: long - --- - -*`fortinet.firewall.severity`*:: -+ --- -Severity - - -type: keyword - --- - -*`fortinet.firewall.shaperdroprcvdbyte`*:: -+ --- -Received bytes dropped by shaper - - -type: integer - --- - -*`fortinet.firewall.shaperdropsentbyte`*:: -+ --- -Sent bytes dropped by shaper - - -type: integer - --- - -*`fortinet.firewall.shaperperipdropbyte`*:: -+ --- -Dropped bytes per IP by shaper - - -type: integer - --- - -*`fortinet.firewall.shaperperipname`*:: -+ --- -Traffic shaper name (per IP) - - -type: keyword - --- - -*`fortinet.firewall.shaperrcvdname`*:: -+ --- -Traffic shaper name for received traffic - - -type: keyword - --- - -*`fortinet.firewall.shapersentname`*:: -+ --- -Traffic shaper name for sent traffic - - -type: keyword - --- - -*`fortinet.firewall.shapingpolicyid`*:: -+ --- -Traffic shaper policy ID - - -type: integer - --- - -*`fortinet.firewall.signal`*:: -+ --- -Wireless rogue API signal - - -type: integer - --- - -*`fortinet.firewall.size`*:: -+ --- -Email size in bytes - - -type: long - --- - -*`fortinet.firewall.slot`*:: -+ --- -Slot number - - -type: integer - --- - -*`fortinet.firewall.sn`*:: -+ --- -Security fabric serial number - - -type: keyword - --- - -*`fortinet.firewall.snclosest`*:: -+ --- -SN of the AP closest to the rogue AP - - -type: keyword - --- - -*`fortinet.firewall.sndetected`*:: -+ --- -SN of the AP which detected the rogue AP - - -type: keyword - --- - -*`fortinet.firewall.snmeshparent`*:: -+ --- -SN of the mesh parent - - -type: keyword - --- - -*`fortinet.firewall.spi`*:: -+ --- -IPSEC SPI - - -type: keyword - --- - -*`fortinet.firewall.src_int`*:: -+ --- -Source interface - - -type: keyword - --- - -*`fortinet.firewall.srcintfrole`*:: -+ --- -Source interface role - - -type: keyword - --- - -*`fortinet.firewall.srccountry`*:: -+ --- -Source country - - -type: keyword - --- - -*`fortinet.firewall.srcfamily`*:: -+ --- -Source family - - -type: keyword - --- - -*`fortinet.firewall.srchwvendor`*:: -+ --- -Source hardware vendor - - -type: keyword - --- - -*`fortinet.firewall.srchwversion`*:: -+ --- -Source hardware version - - -type: keyword - --- - -*`fortinet.firewall.srcinetsvc`*:: -+ --- -Source interface service - - -type: keyword - --- - -*`fortinet.firewall.srcname`*:: -+ --- -Source name - - -type: keyword - --- - -*`fortinet.firewall.srcserver`*:: -+ --- -Source server - - -type: integer - --- - -*`fortinet.firewall.srcssid`*:: -+ --- -Source SSID - - -type: keyword - --- - -*`fortinet.firewall.srcswversion`*:: -+ --- -Source software version - - -type: keyword - --- - -*`fortinet.firewall.srcuuid`*:: -+ --- -Source UUID - - -type: keyword - --- - -*`fortinet.firewall.sscname`*:: -+ --- -SSC name - - -type: keyword - --- - -*`fortinet.firewall.ssid`*:: -+ --- -Base Service Set ID - - -type: keyword - --- - -*`fortinet.firewall.sslaction`*:: -+ --- -SSL Action - - -type: keyword - --- - -*`fortinet.firewall.ssllocal`*:: -+ --- -WAD SSL local - - -type: keyword - --- - -*`fortinet.firewall.sslremote`*:: -+ --- -WAD SSL remote - - -type: keyword - --- - -*`fortinet.firewall.stacount`*:: -+ --- -Number of stations/clients - - -type: integer - --- - -*`fortinet.firewall.stage`*:: -+ --- -IPSEC stage - - -type: keyword - --- - -*`fortinet.firewall.stamac`*:: -+ --- -802.1x station mac - - -type: keyword - --- - -*`fortinet.firewall.state`*:: -+ --- -Admin login state - - -type: keyword - --- - -*`fortinet.firewall.status`*:: -+ --- -Status - - -type: keyword - --- - -*`fortinet.firewall.stitch`*:: -+ --- -Automation stitch triggered - - -type: keyword - --- - -*`fortinet.firewall.subject`*:: -+ --- -Email subject - - -type: keyword - --- - -*`fortinet.firewall.submodule`*:: -+ --- -Configuration Sub-Module Name - - -type: keyword - --- - -*`fortinet.firewall.subservice`*:: -+ --- -AV subservice - - -type: keyword - --- - -*`fortinet.firewall.subtype`*:: -+ --- -Log subtype - - -type: keyword - --- - -*`fortinet.firewall.suspicious`*:: -+ --- -Number of Suspicious MMSs - - -type: integer - --- - -*`fortinet.firewall.switchproto`*:: -+ --- -Protocol change information - - -type: keyword - --- - -*`fortinet.firewall.sync_status`*:: -+ --- -The sync status with the master - - -type: keyword - --- - -*`fortinet.firewall.sync_type`*:: -+ --- -The sync type with the master - - -type: keyword - --- - -*`fortinet.firewall.sysuptime`*:: -+ --- -System uptime - - -type: keyword - --- - -*`fortinet.firewall.tamac`*:: -+ --- -the MAC address of Transmitter, if none, then Receiver - - -type: keyword - --- - -*`fortinet.firewall.threattype`*:: -+ --- -WIDS threat type - - -type: keyword - --- - -*`fortinet.firewall.time`*:: -+ --- -Time of the event - - -type: keyword - --- - -*`fortinet.firewall.to`*:: -+ --- -Email to field - - -type: keyword - --- - -*`fortinet.firewall.to_vcluster`*:: -+ --- -destination virtual cluster number - - -type: integer - --- - -*`fortinet.firewall.total`*:: -+ --- -Total memory - - -type: integer - --- - -*`fortinet.firewall.totalsession`*:: -+ --- -Total Number of Sessions - - -type: integer - --- - -*`fortinet.firewall.trace_id`*:: -+ --- -Session clash trace ID - - -type: keyword - --- - -*`fortinet.firewall.trandisp`*:: -+ --- -NAT translation type - - -type: keyword - --- - -*`fortinet.firewall.transid`*:: -+ --- -HTTP transaction ID - - -type: integer - --- - -*`fortinet.firewall.translationid`*:: -+ --- -DNS filter transaltion ID - - -type: keyword - --- - -*`fortinet.firewall.trigger`*:: -+ --- -Automation stitch trigger - - -type: keyword - --- - -*`fortinet.firewall.trueclntip`*:: -+ --- -File filter true client IP - - -type: ip - --- - -*`fortinet.firewall.tunnelid`*:: -+ --- -IPSEC tunnel ID - - -type: integer - --- - -*`fortinet.firewall.tunnelip`*:: -+ --- -IPSEC tunnel IP - - -type: ip - --- - -*`fortinet.firewall.tunneltype`*:: -+ --- -IPSEC tunnel type - - -type: keyword - --- - -*`fortinet.firewall.type`*:: -+ --- -Module type - - -type: keyword - --- - -*`fortinet.firewall.ui`*:: -+ --- -Admin authentication UI type - - -type: keyword - --- - -*`fortinet.firewall.unauthusersource`*:: -+ --- -Unauthenticated user source - - -type: keyword - --- - -*`fortinet.firewall.unit`*:: -+ --- -Power supply unit - - -type: integer - --- - -*`fortinet.firewall.urlfilteridx`*:: -+ --- -URL filter ID - - -type: integer - --- - -*`fortinet.firewall.urlfilterlist`*:: -+ --- -URL filter list - - -type: keyword - --- - -*`fortinet.firewall.urlsource`*:: -+ --- -URL filter source - - -type: keyword - --- - -*`fortinet.firewall.urltype`*:: -+ --- -URL filter type - - -type: keyword - --- - -*`fortinet.firewall.used`*:: -+ --- -Number of Used IPs - - -type: integer - --- - -*`fortinet.firewall.used_for_type`*:: -+ --- -Connection for the type - - -type: integer - --- - -*`fortinet.firewall.utmaction`*:: -+ --- -Security action performed by UTM - - -type: keyword - --- - -*`fortinet.firewall.utmref`*:: -+ --- -Reference to UTM - - -type: keyword - --- - -*`fortinet.firewall.vap`*:: -+ --- -Virtual AP - - -type: keyword - --- - -*`fortinet.firewall.vapmode`*:: -+ --- -Virtual AP mode - - -type: keyword - --- - -*`fortinet.firewall.vcluster`*:: -+ --- -virtual cluster id - - -type: integer - --- - -*`fortinet.firewall.vcluster_member`*:: -+ --- -Virtual cluster member - - -type: integer - --- - -*`fortinet.firewall.vcluster_state`*:: -+ --- -Virtual cluster state - - -type: keyword - --- - -*`fortinet.firewall.vd`*:: -+ --- -Virtual Domain Name - - -type: keyword - --- - -*`fortinet.firewall.vdname`*:: -+ --- -Virtual Domain Name - - -type: keyword - --- - -*`fortinet.firewall.vendorurl`*:: -+ --- -Vulnerability scan vendor name - - -type: keyword - --- - -*`fortinet.firewall.version`*:: -+ --- -Version - - -type: keyword - --- - -*`fortinet.firewall.vip`*:: -+ --- -Virtual IP - - -type: keyword - --- - -*`fortinet.firewall.virus`*:: -+ --- -Virus name - - -type: keyword - --- - -*`fortinet.firewall.virusid`*:: -+ --- -Virus ID (unique virus identifier) - - -type: integer - --- - -*`fortinet.firewall.voip_proto`*:: -+ --- -VOIP protocol - - -type: keyword - --- - -*`fortinet.firewall.vpn`*:: -+ --- -VPN description - - -type: keyword - --- - -*`fortinet.firewall.vpntunnel`*:: -+ --- -IPsec Vpn Tunnel Name - - -type: keyword - --- - -*`fortinet.firewall.vpntype`*:: -+ --- -The type of the VPN tunnel - - -type: keyword - --- - -*`fortinet.firewall.vrf`*:: -+ --- -VRF number - - -type: integer - --- - -*`fortinet.firewall.vulncat`*:: -+ --- -Vulnerability Category - - -type: keyword - --- - -*`fortinet.firewall.vulnid`*:: -+ --- -Vulnerability ID - - -type: integer - --- - -*`fortinet.firewall.vulnname`*:: -+ --- -Vulnerability name - - -type: keyword - --- - -*`fortinet.firewall.vwlid`*:: -+ --- -VWL ID - - -type: integer - --- - -*`fortinet.firewall.vwlquality`*:: -+ --- -VWL quality - - -type: keyword - --- - -*`fortinet.firewall.vwlservice`*:: -+ --- -VWL service - - -type: keyword - --- - -*`fortinet.firewall.vwpvlanid`*:: -+ --- -VWP VLAN ID - - -type: integer - --- - -*`fortinet.firewall.wanin`*:: -+ --- -WAN incoming traffic in bytes - - -type: long - --- - -*`fortinet.firewall.wanoptapptype`*:: -+ --- -WAN Optimization Application type - - -type: keyword - --- - -*`fortinet.firewall.wanout`*:: -+ --- -WAN outgoing traffic in bytes - - -type: long - --- - -*`fortinet.firewall.weakwepiv`*:: -+ --- -Weak Wep Initiation Vector - - -type: keyword - --- - -*`fortinet.firewall.xauthgroup`*:: -+ --- -XAuth Group Name - - -type: keyword - --- - -*`fortinet.firewall.xauthuser`*:: -+ --- -XAuth User Name - - -type: keyword - --- - -*`fortinet.firewall.xid`*:: -+ --- -Wireless X ID - - -type: integer - --- - -[[exported-fields-gcp]] -== Google Cloud Platform (GCP) fields - -Module for handling logs from Google Cloud. - - - -[float] -=== gcp - -Fields from Google Cloud logs. - - - -[float] -=== destination.instance - -If the destination of the connection was a VM located on the same VPC, this field is populated with VM instance details. In a Shared VPC configuration, project_id corresponds to the project that owns the instance, usually the service project. - - - -*`gcp.destination.instance.project_id`*:: -+ --- -ID of the project containing the VM. - - -type: keyword - --- - -*`gcp.destination.instance.region`*:: -+ --- -Region of the VM. - - -type: keyword - --- - -*`gcp.destination.instance.zone`*:: -+ --- -Zone of the VM. - - -type: keyword - --- - -[float] -=== destination.vpc - -If the destination of the connection was a VM located on the same VPC, this field is populated with VPC network details. In a Shared VPC configuration, project_id corresponds to that of the host project. - - - -*`gcp.destination.vpc.project_id`*:: -+ --- -ID of the project containing the VM. - - -type: keyword - --- - -*`gcp.destination.vpc.vpc_name`*:: -+ --- -VPC on which the VM is operating. - - -type: keyword - --- - -*`gcp.destination.vpc.subnetwork_name`*:: -+ --- -Subnetwork on which the VM is operating. - - -type: keyword - --- - -[float] -=== source.instance - -If the source of the connection was a VM located on the same VPC, this field is populated with VM instance details. In a Shared VPC configuration, project_id corresponds to the project that owns the instance, usually the service project. - - - -*`gcp.source.instance.project_id`*:: -+ --- -ID of the project containing the VM. - - -type: keyword - --- - -*`gcp.source.instance.region`*:: -+ --- -Region of the VM. - - -type: keyword - --- - -*`gcp.source.instance.zone`*:: -+ --- -Zone of the VM. - - -type: keyword - --- - -[float] -=== source.vpc - -If the source of the connection was a VM located on the same VPC, this field is populated with VPC network details. In a Shared VPC configuration, project_id corresponds to that of the host project. - - - -*`gcp.source.vpc.project_id`*:: -+ --- -ID of the project containing the VM. - - -type: keyword - --- - -*`gcp.source.vpc.vpc_name`*:: -+ --- -VPC on which the VM is operating. - - -type: keyword - --- - -*`gcp.source.vpc.subnetwork_name`*:: -+ --- -Subnetwork on which the VM is operating. - - -type: keyword - --- - -[float] -=== audit - -Fields for Google Cloud audit logs. - - - -*`gcp.audit.type`*:: -+ --- -Type property. - - -type: keyword - --- - -[float] -=== authentication_info - -Authentication information. - - - -*`gcp.audit.authentication_info.principal_email`*:: -+ --- -The email address of the authenticated user making the request. - - -type: keyword - --- - -*`gcp.audit.authentication_info.authority_selector`*:: -+ --- -The authority selector specified by the requestor, if any. It is not guaranteed that the principal was allowed to use this authority. - - -type: keyword - --- - -*`gcp.audit.authorization_info`*:: -+ --- -Authorization information for the operation. - - -type: array - --- - -*`gcp.audit.method_name`*:: -+ --- -The name of the service method or operation. For API calls, this should be the name of the API method. For example, 'google.datastore.v1.Datastore.RunQuery'. - - -type: keyword - --- - -*`gcp.audit.num_response_items`*:: -+ --- -The number of items returned from a List or Query API method, if applicable. - - -type: long - --- - -[float] -=== request - -The operation request. - - - -*`gcp.audit.request.proto_name`*:: -+ --- -Type property of the request. - - -type: keyword - --- - -*`gcp.audit.request.filter`*:: -+ --- -Filter of the request. - - -type: keyword - --- - -*`gcp.audit.request.name`*:: -+ --- -Name of the request. - - -type: keyword - --- - -*`gcp.audit.request.resource_name`*:: -+ --- -Name of the request resource. - - -type: keyword - --- - -[float] -=== request_metadata - -Metadata about the request. - - - -*`gcp.audit.request_metadata.caller_ip`*:: -+ --- -The IP address of the caller. - - -type: ip - --- - -*`gcp.audit.request_metadata.caller_supplied_user_agent`*:: -+ --- -The user agent of the caller. This information is not authenticated and should be treated accordingly. - - -type: keyword - --- - -[float] -=== response - -The operation response. - - - -*`gcp.audit.response.proto_name`*:: -+ --- -Type property of the response. - - -type: keyword - --- - -[float] -=== details - -The details of the response. - - - -*`gcp.audit.response.details.group`*:: -+ --- -The name of the group. - - -type: keyword - --- - -*`gcp.audit.response.details.kind`*:: -+ --- -The kind of the response details. - - -type: keyword - --- - -*`gcp.audit.response.details.name`*:: -+ --- -The name of the response details. - - -type: keyword - --- - -*`gcp.audit.response.details.uid`*:: -+ --- -The uid of the response details. - - -type: keyword - --- - -*`gcp.audit.response.status`*:: -+ --- -Status of the response. - - -type: keyword - --- - -*`gcp.audit.resource_name`*:: -+ --- -The resource or collection that is the target of the operation. The name is a scheme-less URI, not including the API service name. For example, 'shelves/SHELF_ID/books'. - - -type: keyword - --- - -[float] -=== resource_location - -The location of the resource. - - - -*`gcp.audit.resource_location.current_locations`*:: -+ --- -Current locations of the resource. - - -type: keyword - --- - -*`gcp.audit.service_name`*:: -+ --- -The name of the API service performing the operation. For example, datastore.googleapis.com. - - -type: keyword - --- - -[float] -=== status - -The status of the overall operation. - - - -*`gcp.audit.status.code`*:: -+ --- -The status code, which should be an enum value of google.rpc.Code. - - -type: integer - --- - -*`gcp.audit.status.message`*:: -+ --- -A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client. - - -type: keyword - --- - -[float] -=== firewall - -Fields for Google Cloud Firewall logs. - - - -[float] -=== rule_details - -Description of the firewall rule that matched this connection. - - - -*`gcp.firewall.rule_details.priority`*:: -+ --- -The priority for the firewall rule. - -type: long - --- - -*`gcp.firewall.rule_details.action`*:: -+ --- -Action that the rule performs on match. - -type: keyword - --- - -*`gcp.firewall.rule_details.direction`*:: -+ --- -Direction of traffic that matches this rule. - -type: keyword - --- - -*`gcp.firewall.rule_details.reference`*:: -+ --- -Reference to the firewall rule. - -type: keyword - --- - -*`gcp.firewall.rule_details.source_range`*:: -+ --- -List of source ranges that the firewall rule applies to. - -type: keyword - --- - -*`gcp.firewall.rule_details.destination_range`*:: -+ --- -List of destination ranges that the firewall applies to. - -type: keyword - --- - -*`gcp.firewall.rule_details.source_tag`*:: -+ --- -List of all the source tags that the firewall rule applies to. - - -type: keyword - --- - -*`gcp.firewall.rule_details.target_tag`*:: -+ --- -List of all the target tags that the firewall rule applies to. - - -type: keyword - --- - -*`gcp.firewall.rule_details.ip_port_info`*:: -+ --- -List of ip protocols and applicable port ranges for rules. - - -type: array - --- - -*`gcp.firewall.rule_details.source_service_account`*:: -+ --- -List of all the source service accounts that the firewall rule applies to. - - -type: keyword - --- - -*`gcp.firewall.rule_details.target_service_account`*:: -+ --- -List of all the target service accounts that the firewall rule applies to. - - -type: keyword - --- - -[float] -=== vpcflow - -Fields for Google Cloud VPC flow logs. - - - -*`gcp.vpcflow.reporter`*:: -+ --- -The side which reported the flow. Can be either 'SRC' or 'DEST'. - - -type: keyword - --- - -*`gcp.vpcflow.rtt.ms`*:: -+ --- -Latency as measured (for TCP flows only) during the time interval. This is the time elapsed between sending a SEQ and receiving a corresponding ACK and it contains the network RTT as well as the application related delay. - - -type: long - --- - -[[exported-fields-google_workspace]] -== google_workspace fields - -Google Workspace Module - - - -[float] -=== google_workspace - -Google Workspace specific fields. -More information about specific fields can be found at https://developers.google.com/admin-sdk/reports/v1/reference/activities/list - - - -*`google_workspace.actor.type`*:: -+ --- -The type of actor. -Values can be: - *USER*: Another user in the same domain. - *EXTERNAL_USER*: A user outside the domain. - *KEY*: A non-human actor. - - -type: keyword - --- - -*`google_workspace.actor.key`*:: -+ --- -Only present when `actor.type` is `KEY`. Can be the `consumer_key` of the requestor for OAuth 2LO API requests or an identifier for robot accounts. - - -type: keyword - --- - -*`google_workspace.event.type`*:: -+ --- -The type of Google Workspace event, mapped from `items[].events[].type` in the original payload. Each fileset can have a different set of values for it, more details can be found at https://developers.google.com/admin-sdk/reports/v1/reference/activities/list - - -type: keyword - -example: audit#activity - --- - -*`google_workspace.kind`*:: -+ --- -The type of API resource, mapped from `kind` in the original payload. More details can be found at https://developers.google.com/admin-sdk/reports/v1/reference/activities/list - - -type: keyword - -example: audit#activity - --- - -*`google_workspace.organization.domain`*:: -+ --- -The domain that is affected by the report's event. - - -type: keyword - --- - - -*`google_workspace.admin.application.edition`*:: -+ --- -The Google Workspace edition. - -type: keyword - --- - -*`google_workspace.admin.application.name`*:: -+ --- -The application's name. - -type: keyword - --- - -*`google_workspace.admin.application.enabled`*:: -+ --- -The enabled application. - -type: keyword - --- - -*`google_workspace.admin.application.licences_order_number`*:: -+ --- -Order number used to redeem licenses. - -type: keyword - --- - -*`google_workspace.admin.application.licences_purchased`*:: -+ --- -Number of licences purchased. - -type: keyword - --- - -*`google_workspace.admin.application.id`*:: -+ --- -The application ID. - -type: keyword - --- - -*`google_workspace.admin.application.asp_id`*:: -+ --- -The application specific password ID. - -type: keyword - --- - -*`google_workspace.admin.application.package_id`*:: -+ --- -The mobile application package ID. - -type: keyword - --- - -*`google_workspace.admin.group.email`*:: -+ --- -The group's primary email address. - -type: keyword - --- - -*`google_workspace.admin.new_value`*:: -+ --- -The new value for the setting. - -type: keyword - --- - -*`google_workspace.admin.old_value`*:: -+ --- -The old value for the setting. - -type: keyword - --- - -*`google_workspace.admin.org_unit.name`*:: -+ --- -The organizational unit name. - -type: keyword - --- - -*`google_workspace.admin.org_unit.full`*:: -+ --- -The org unit full path including the root org unit name. - -type: keyword - --- - -*`google_workspace.admin.setting.name`*:: -+ --- -The setting name. - -type: keyword - --- - -*`google_workspace.admin.user_defined_setting.name`*:: -+ --- -The name of the user-defined setting. - -type: keyword - --- - -*`google_workspace.admin.setting.description`*:: -+ --- -The setting name. - -type: keyword - --- - -*`google_workspace.admin.group.priorities`*:: -+ --- -Group priorities. - -type: keyword - --- - -*`google_workspace.admin.domain.alias`*:: -+ --- -The domain alias. - -type: keyword - --- - -*`google_workspace.admin.domain.name`*:: -+ --- -The primary domain name. - -type: keyword - --- - -*`google_workspace.admin.domain.secondary_name`*:: -+ --- -The secondary domain name. - -type: keyword - --- - -*`google_workspace.admin.managed_configuration`*:: -+ --- -The name of the managed configuration. - -type: keyword - --- - -*`google_workspace.admin.non_featured_services_selection`*:: -+ --- -Non-featured services selection. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-application-settings#FLASHLIGHT_EDU_NON_FEATURED_SERVICES_SELECTED - - -type: keyword - --- - -*`google_workspace.admin.field`*:: -+ --- -The name of the field. - -type: keyword - --- - -*`google_workspace.admin.resource.id`*:: -+ --- -The name of the resource identifier. - -type: keyword - --- - -*`google_workspace.admin.user.email`*:: -+ --- -The user's primary email address. - -type: keyword - --- - -*`google_workspace.admin.user.nickname`*:: -+ --- -The user's nickname. - -type: keyword - --- - -*`google_workspace.admin.user.birthdate`*:: -+ --- -The user's birth date. - -type: date - --- - -*`google_workspace.admin.gateway.name`*:: -+ --- -Gateway name. Present on some chat settings. - -type: keyword - --- - -*`google_workspace.admin.chrome_os.session_type`*:: -+ --- -Chrome OS session type. - -type: keyword - --- - -*`google_workspace.admin.device.serial_number`*:: -+ --- -Device serial number. - -type: keyword - --- - -*`google_workspace.admin.device.id`*:: -+ --- -type: keyword - --- - -*`google_workspace.admin.device.type`*:: -+ --- -Device type. - -type: keyword - --- - -*`google_workspace.admin.print_server.name`*:: -+ --- -The name of the print server. - -type: keyword - --- - -*`google_workspace.admin.printer.name`*:: -+ --- -The name of the printer. - -type: keyword - --- - -*`google_workspace.admin.device.command_details`*:: -+ --- -Command details. - -type: keyword - --- - -*`google_workspace.admin.role.id`*:: -+ --- -Unique identifier for this role privilege. - -type: keyword - --- - -*`google_workspace.admin.role.name`*:: -+ --- -The role name. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-delegated-admin-settings - - -type: keyword - --- - -*`google_workspace.admin.privilege.name`*:: -+ --- -Privilege name. - -type: keyword - --- - -*`google_workspace.admin.service.name`*:: -+ --- -The service name. - -type: keyword - --- - -*`google_workspace.admin.url.name`*:: -+ --- -The website name. - -type: keyword - --- - -*`google_workspace.admin.product.name`*:: -+ --- -The product name. - -type: keyword - --- - -*`google_workspace.admin.product.sku`*:: -+ --- -The product SKU. - -type: keyword - --- - -*`google_workspace.admin.bulk_upload.failed`*:: -+ --- -Number of failed records in bulk upload operation. - -type: long - --- - -*`google_workspace.admin.bulk_upload.total`*:: -+ --- -Number of total records in bulk upload operation. - -type: long - --- - -*`google_workspace.admin.group.allowed_list`*:: -+ --- -Names of allow-listed groups. - -type: keyword - --- - -*`google_workspace.admin.email.quarantine_name`*:: -+ --- -The name of the quarantine. - -type: keyword - --- - -*`google_workspace.admin.email.log_search_filter.message_id`*:: -+ --- -The log search filter's email message ID. - -type: keyword - --- - -*`google_workspace.admin.email.log_search_filter.start_date`*:: -+ --- -The log search filter's start date. - -type: date - --- - -*`google_workspace.admin.email.log_search_filter.end_date`*:: -+ --- -The log search filter's ending date. - -type: date - --- - -*`google_workspace.admin.email.log_search_filter.recipient.value`*:: -+ --- -The log search filter's email recipient. - -type: keyword - --- - -*`google_workspace.admin.email.log_search_filter.sender.value`*:: -+ --- -The log search filter's email sender. - -type: keyword - --- - -*`google_workspace.admin.email.log_search_filter.recipient.ip`*:: -+ --- -The log search filter's email recipient's IP address. - -type: ip - --- - -*`google_workspace.admin.email.log_search_filter.sender.ip`*:: -+ --- -The log search filter's email sender's IP address. - -type: ip - --- - -*`google_workspace.admin.chrome_licenses.enabled`*:: -+ --- -Licences enabled. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-org-settings - - -type: keyword - --- - -*`google_workspace.admin.chrome_licenses.allowed`*:: -+ --- -Licences enabled. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-org-settings - - -type: keyword - --- - -*`google_workspace.admin.oauth2.service.name`*:: -+ --- -OAuth2 service name. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-security-settings - - -type: keyword - --- - -*`google_workspace.admin.oauth2.application.id`*:: -+ --- -OAuth2 application ID. - -type: keyword - --- - -*`google_workspace.admin.oauth2.application.name`*:: -+ --- -OAuth2 application name. - -type: keyword - --- - -*`google_workspace.admin.oauth2.application.type`*:: -+ --- -OAuth2 application type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-security-settings - - -type: keyword - --- - -*`google_workspace.admin.verification_method`*:: -+ --- -Related verification method. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-security-settings and https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-domain-settings - - -type: keyword - --- - -*`google_workspace.admin.alert.name`*:: -+ --- -The alert name. - -type: keyword - --- - -*`google_workspace.admin.rule.name`*:: -+ --- -The rule name. - -type: keyword - --- - -*`google_workspace.admin.api.client.name`*:: -+ --- -The API client name. - -type: keyword - --- - -*`google_workspace.admin.api.scopes`*:: -+ --- -The API scopes. - -type: keyword - --- - -*`google_workspace.admin.mdm.token`*:: -+ --- -The MDM vendor enrollment token. - -type: keyword - --- - -*`google_workspace.admin.mdm.vendor`*:: -+ --- -The MDM vendor's name. - -type: keyword - --- - -*`google_workspace.admin.info_type`*:: -+ --- -This will be used to state what kind of information was changed. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-domain-settings - - -type: keyword - --- - -*`google_workspace.admin.email_monitor.dest_email`*:: -+ --- -The destination address of the email monitor. - -type: keyword - --- - -*`google_workspace.admin.email_monitor.level.chat`*:: -+ --- -The chat email monitor level. - -type: keyword - --- - -*`google_workspace.admin.email_monitor.level.draft`*:: -+ --- -The draft email monitor level. - -type: keyword - --- - -*`google_workspace.admin.email_monitor.level.incoming`*:: -+ --- -The incoming email monitor level. - -type: keyword - --- - -*`google_workspace.admin.email_monitor.level.outgoing`*:: -+ --- -The outgoing email monitor level. - -type: keyword - --- - -*`google_workspace.admin.email_dump.include_deleted`*:: -+ --- -Indicates if deleted emails are included in the export. - -type: boolean - --- - -*`google_workspace.admin.email_dump.package_content`*:: -+ --- -The contents of the mailbox package. - -type: keyword - --- - -*`google_workspace.admin.email_dump.query`*:: -+ --- -The search query used for the dump. - -type: keyword - --- - -*`google_workspace.admin.request.id`*:: -+ --- -The request ID. - -type: keyword - --- - -*`google_workspace.admin.mobile.action.id`*:: -+ --- -The mobile device action's ID. - -type: keyword - --- - -*`google_workspace.admin.mobile.action.type`*:: -+ --- -The mobile device action's type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-mobile-settings - - -type: keyword - --- - -*`google_workspace.admin.mobile.certificate.name`*:: -+ --- -The mobile certificate common name. - -type: keyword - --- - -*`google_workspace.admin.mobile.company_owned_devices`*:: -+ --- -The number of devices a company owns. - -type: long - --- - -*`google_workspace.admin.distribution.entity.name`*:: -+ --- -The distribution entity value, which can be a group name or an org-unit name. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-mobile-settings - - -type: keyword - --- - -*`google_workspace.admin.distribution.entity.type`*:: -+ --- -The distribution entity type, which can be a group or an org-unit. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/admin-mobile-settings - - -type: keyword - --- - - -*`google_workspace.drive.billable`*:: -+ --- -Whether this activity is billable. - -type: boolean - --- - -*`google_workspace.drive.source_folder_id`*:: -+ --- -type: keyword - --- - -*`google_workspace.drive.source_folder_title`*:: -+ --- -type: keyword - --- - -*`google_workspace.drive.destination_folder_id`*:: -+ --- -type: keyword - --- - -*`google_workspace.drive.destination_folder_title`*:: -+ --- -type: keyword - --- - -*`google_workspace.drive.file.id`*:: -+ --- -type: keyword - --- - -*`google_workspace.drive.file.type`*:: -+ --- -Document Drive type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive - - -type: keyword - --- - -*`google_workspace.drive.originating_app_id`*:: -+ --- -The Google Cloud Project ID of the application that performed the action. - - -type: keyword - --- - -*`google_workspace.drive.file.owner.email`*:: -+ --- -type: keyword - --- - -*`google_workspace.drive.file.owner.is_shared_drive`*:: -+ --- -Boolean flag denoting whether owner is a shared drive. - - -type: boolean - --- - -*`google_workspace.drive.primary_event`*:: -+ --- -Whether this is a primary event. A single user action in Drive may generate several events. - - -type: boolean - --- - -*`google_workspace.drive.shared_drive_id`*:: -+ --- -The unique identifier of the Team Drive. Only populated for for events relating to a Team Drive or item contained inside a Team Drive. - - -type: keyword - --- - -*`google_workspace.drive.visibility`*:: -+ --- -Visibility of target file. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive - - -type: keyword - --- - -*`google_workspace.drive.new_value`*:: -+ --- -When a setting or property of the file changes, the new value for it will appear here. - - -type: keyword - --- - -*`google_workspace.drive.old_value`*:: -+ --- -When a setting or property of the file changes, the old value for it will appear here. - - -type: keyword - --- - -*`google_workspace.drive.sheets_import_range_recipient_doc`*:: -+ --- -Doc ID of the recipient of a sheets import range. - -type: keyword - --- - -*`google_workspace.drive.old_visibility`*:: -+ --- -When visibility changes, this holds the old value. - - -type: keyword - --- - -*`google_workspace.drive.visibility_change`*:: -+ --- -When visibility changes, this holds the new overall visibility of the file. - - -type: keyword - --- - -*`google_workspace.drive.target_domain`*:: -+ --- -The domain for which the acccess scope was changed. This can also be the alias all to indicate the access scope was changed for all domains that have visibility for this document. - - -type: keyword - --- - -*`google_workspace.drive.added_role`*:: -+ --- -Added membership role of a user/group in a Team Drive. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive - - -type: keyword - --- - -*`google_workspace.drive.membership_change_type`*:: -+ --- -Type of change in Team Drive membership of a user/group. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive - - -type: keyword - --- - -*`google_workspace.drive.shared_drive_settings_change_type`*:: -+ --- -Type of change in Team Drive settings. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive - - -type: keyword - --- - -*`google_workspace.drive.removed_role`*:: -+ --- -Removed membership role of a user/group in a Team Drive. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/drive - - -type: keyword - --- - -*`google_workspace.drive.target`*:: -+ --- -Target user or group. - -type: keyword - --- - - -*`google_workspace.groups.acl_permission`*:: -+ --- -Group permission setting updated. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups - - -type: keyword - --- - -*`google_workspace.groups.email`*:: -+ --- -Group email. - - -type: keyword - --- - -*`google_workspace.groups.member.email`*:: -+ --- -Member email. - - -type: keyword - --- - -*`google_workspace.groups.member.role`*:: -+ --- -Member role. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups - - -type: keyword - --- - -*`google_workspace.groups.setting`*:: -+ --- -Group setting updated. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups - - -type: keyword - --- - -*`google_workspace.groups.new_value`*:: -+ --- -New value(s) of the group setting. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups - - -type: keyword - --- - -*`google_workspace.groups.old_value`*:: -+ --- -Old value(s) of the group setting. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups - -type: keyword - --- - -*`google_workspace.groups.value`*:: -+ --- -Value of the group setting. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/groups - - -type: keyword - --- - -*`google_workspace.groups.message.id`*:: -+ --- -SMTP message Id of an email message. Present for moderation events. - - -type: keyword - --- - -*`google_workspace.groups.message.moderation_action`*:: -+ --- -Message moderation action. Possible values are `approved` and `rejected`. - - -type: keyword - --- - -*`google_workspace.groups.status`*:: -+ --- -A status describing the output of an operation. Possible values are `failed` and `succeeded`. - - -type: keyword - --- - - -*`google_workspace.login.affected_email_address`*:: -+ --- -type: keyword - --- - -*`google_workspace.login.challenge_method`*:: -+ --- -Login challenge method. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/login. - - -type: keyword - --- - -*`google_workspace.login.failure_type`*:: -+ --- -Login failure type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/login. - - -type: keyword - --- - -*`google_workspace.login.type`*:: -+ --- -Login credentials type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/login. - - -type: keyword - --- - -*`google_workspace.login.is_second_factor`*:: -+ --- -type: boolean - --- - -*`google_workspace.login.is_suspicious`*:: -+ --- -type: boolean - --- - - -*`google_workspace.saml.application_name`*:: -+ --- -Saml SP application name. - - -type: keyword - --- - -*`google_workspace.saml.failure_type`*:: -+ --- -Login failure type. For a list of possible values refer to https://developers.google.com/admin-sdk/reports/v1/appendix/activity/saml. - - -type: keyword - --- - -*`google_workspace.saml.initiated_by`*:: -+ --- -Requester of SAML authentication. - - -type: keyword - --- - -*`google_workspace.saml.orgunit_path`*:: -+ --- -User orgunit. - - -type: keyword - --- - -*`google_workspace.saml.status_code`*:: -+ --- -SAML status code. - - -type: keyword - --- - -*`google_workspace.saml.second_level_status_code`*:: -+ --- -SAML second level status code. - - -type: keyword - --- - -[[exported-fields-haproxy]] -== HAProxy fields - -haproxy Module - - - -[float] -=== haproxy - - - - -*`haproxy.frontend_name`*:: -+ --- -Name of the frontend (or listener) which received and processed the connection. - --- - -*`haproxy.backend_name`*:: -+ --- -Name of the backend (or listener) which was selected to manage the connection to the server. - --- - -*`haproxy.server_name`*:: -+ --- -Name of the last server to which the connection was sent. - --- - -*`haproxy.total_waiting_time_ms`*:: -+ --- -Total time in milliseconds spent waiting in the various queues - -type: long - --- - -*`haproxy.connection_wait_time_ms`*:: -+ --- -Total time in milliseconds spent waiting for the connection to establish to the final server - -type: long - --- - -*`haproxy.bytes_read`*:: -+ --- -Total number of bytes transmitted to the client when the log is emitted. - -type: long - --- - -*`haproxy.time_queue`*:: -+ --- -Total time in milliseconds spent waiting in the various queues. - -type: long - --- - -*`haproxy.time_backend_connect`*:: -+ --- -Total time in milliseconds spent waiting for the connection to establish to the final server, including retries. - -type: long - --- - -*`haproxy.server_queue`*:: -+ --- -Total number of requests which were processed before this one in the server queue. - -type: long - --- - -*`haproxy.backend_queue`*:: -+ --- -Total number of requests which were processed before this one in the backend's global queue. - -type: long - --- - -*`haproxy.bind_name`*:: -+ --- -Name of the listening address which received the connection. - --- - -*`haproxy.error_message`*:: -+ --- -Error message logged by HAProxy in case of error. - -type: text - --- - -*`haproxy.source`*:: -+ --- -The HAProxy source of the log - -type: keyword - --- - -*`haproxy.termination_state`*:: -+ --- -Condition the session was in when the session ended. - --- - -*`haproxy.mode`*:: -+ --- -mode that the frontend is operating (TCP or HTTP) - -type: keyword - --- - -[float] -=== connections - -Contains various counts of connections active in the process. - - -*`haproxy.connections.active`*:: -+ --- -Total number of concurrent connections on the process when the session was logged. - -type: long - --- - -*`haproxy.connections.frontend`*:: -+ --- -Total number of concurrent connections on the frontend when the session was logged. - -type: long - --- - -*`haproxy.connections.backend`*:: -+ --- -Total number of concurrent connections handled by the backend when the session was logged. - -type: long - --- - -*`haproxy.connections.server`*:: -+ --- -Total number of concurrent connections still active on the server when the session was logged. - -type: long - --- - -*`haproxy.connections.retries`*:: -+ --- -Number of connection retries experienced by this session when trying to connect to the server. - -type: long - --- - -[float] -=== client - -Information about the client doing the request - - -*`haproxy.client.ip`*:: -+ --- -type: alias - -alias to: source.address - --- - -*`haproxy.client.port`*:: -+ --- -type: alias - -alias to: source.port - --- - -*`haproxy.process_name`*:: -+ --- -type: alias - -alias to: process.name - --- - -*`haproxy.pid`*:: -+ --- -type: alias - -alias to: process.pid - --- - -[float] -=== destination - -Destination information - - -*`haproxy.destination.port`*:: -+ --- -type: alias - -alias to: destination.port - --- - -*`haproxy.destination.ip`*:: -+ --- -type: alias - -alias to: destination.ip - --- - -[float] -=== geoip - -Contains GeoIP information gathered based on the client.ip field. Only present if the GeoIP Elasticsearch plugin is available and used. - - - -*`haproxy.geoip.continent_name`*:: -+ --- -type: alias - -alias to: source.geo.continent_name - --- - -*`haproxy.geoip.country_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.country_iso_code - --- - -*`haproxy.geoip.location`*:: -+ --- -type: alias - -alias to: source.geo.location - --- - -*`haproxy.geoip.region_name`*:: -+ --- -type: alias - -alias to: source.geo.region_name - --- - -*`haproxy.geoip.city_name`*:: -+ --- -type: alias - -alias to: source.geo.city_name - --- - -*`haproxy.geoip.region_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.region_iso_code - --- - -[float] -=== http - -Please add description - - -[float] -=== response - -Fields related to the HTTP response - - -*`haproxy.http.response.captured_cookie`*:: -+ --- -Optional "name=value" entry indicating that the client had this cookie in the response. - - --- - -*`haproxy.http.response.captured_headers`*:: -+ --- -List of headers captured in the response due to the presence of the "capture response header" statement in the frontend. - - -type: keyword - --- - -*`haproxy.http.response.status_code`*:: -+ --- -type: alias - -alias to: http.response.status_code - --- - -[float] -=== request - -Fields related to the HTTP request - - -*`haproxy.http.request.captured_cookie`*:: -+ --- -Optional "name=value" entry indicating that the server has returned a cookie with its request. - - --- - -*`haproxy.http.request.captured_headers`*:: -+ --- -List of headers captured in the request due to the presence of the "capture request header" statement in the frontend. - - -type: keyword - --- - -*`haproxy.http.request.raw_request_line`*:: -+ --- -Complete HTTP request line, including the method, request and HTTP version string. - -type: keyword - --- - -*`haproxy.http.request.time_wait_without_data_ms`*:: -+ --- -Total time in milliseconds spent waiting for the server to send a full HTTP response, not counting data. - -type: long - --- - -*`haproxy.http.request.time_wait_ms`*:: -+ --- -Total time in milliseconds spent waiting for a full HTTP request from the client (not counting body) after the first byte was received. - -type: long - --- - -[float] -=== tcp - -TCP log format - - -*`haproxy.tcp.connection_waiting_time_ms`*:: -+ --- -Total time in milliseconds elapsed between the accept and the last close - -type: long - --- - -[[exported-fields-host-processor]] -== Host fields - -Info collected for the host machine. - - - - -*`host.containerized`*:: -+ --- -If the host is a container. - - -type: boolean - --- - -*`host.os.build`*:: -+ --- -OS build information. - - -type: keyword - -example: 18D109 - --- - -*`host.os.codename`*:: -+ --- -OS codename, if any. - - -type: keyword - -example: stretch - --- - -[[exported-fields-ibmmq]] -== ibmmq fields - -ibmmq Module - - - -[float] -=== ibmmq - - - - -[float] -=== errorlog - -IBM MQ error logs - - -*`ibmmq.errorlog.installation`*:: -+ --- -This is the installation name which can be given at installation time. -Each installation of IBM MQ on UNIX, Linux, and Windows, has a unique identifier known as an installation name. The installation name is used to associate things such as queue managers and configuration files with an installation. - - -type: keyword - --- - -*`ibmmq.errorlog.qmgr`*:: -+ --- -Name of the queue manager. Queue managers provide queuing services to applications, and manages the queues that belong to them. - - -type: keyword - --- - -*`ibmmq.errorlog.arithinsert`*:: -+ --- -Changing content based on error.id - -type: keyword - --- - -*`ibmmq.errorlog.commentinsert`*:: -+ --- -Changing content based on error.id - -type: keyword - --- - -*`ibmmq.errorlog.errordescription`*:: -+ --- -Please add description - -type: text - -example: Please add example - --- - -*`ibmmq.errorlog.explanation`*:: -+ --- -Explaines the error in more detail - -type: keyword - --- - -*`ibmmq.errorlog.action`*:: -+ --- -Defines what to do when the error occurs - -type: keyword - --- - -*`ibmmq.errorlog.code`*:: -+ --- -Error code. - -type: keyword - --- - -[[exported-fields-icinga]] -== Icinga fields - -Icinga Module - - - -[float] -=== icinga - - - - -[float] -=== debug - -Contains fields for the Icinga debug logs. - - - -*`icinga.debug.facility`*:: -+ --- -Specifies what component of Icinga logged the message. - - -type: keyword - --- - -*`icinga.debug.severity`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`icinga.debug.message`*:: -+ --- -type: alias - -alias to: message - --- - -[float] -=== main - -Contains fields for the Icinga main logs. - - - -*`icinga.main.facility`*:: -+ --- -Specifies what component of Icinga logged the message. - - -type: keyword - --- - -*`icinga.main.severity`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`icinga.main.message`*:: -+ --- -type: alias - -alias to: message - --- - -[float] -=== startup - -Contains fields for the Icinga startup logs. - - - -*`icinga.startup.facility`*:: -+ --- -Specifies what component of Icinga logged the message. - - -type: keyword - --- - -*`icinga.startup.severity`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`icinga.startup.message`*:: -+ --- -type: alias - -alias to: message - --- - -[[exported-fields-iis]] -== IIS fields - -Module for parsing IIS log files. - - - -[float] -=== iis - -Fields from IIS log files. - - - -[float] -=== access - -Contains fields for IIS access logs. - - - -*`iis.access.sub_status`*:: -+ --- -The HTTP substatus code. - - -type: long - --- - -*`iis.access.win32_status`*:: -+ --- -The Windows status code. - - -type: long - --- - -*`iis.access.site_name`*:: -+ --- -The site name and instance number. - - -type: keyword - --- - -*`iis.access.server_name`*:: -+ --- -The name of the server on which the log file entry was generated. - - -type: keyword - --- - -*`iis.access.cookie`*:: -+ --- -The content of the cookie sent or received, if any. - - -type: keyword - --- - -*`iis.access.body_received.bytes`*:: -+ --- -type: alias - -alias to: http.request.body.bytes - --- - -*`iis.access.body_sent.bytes`*:: -+ --- -type: alias - -alias to: http.response.body.bytes - --- - -*`iis.access.server_ip`*:: -+ --- -type: alias - -alias to: destination.address - --- - -*`iis.access.method`*:: -+ --- -type: alias - -alias to: http.request.method - --- - -*`iis.access.url`*:: -+ --- -type: alias - -alias to: url.path - --- - -*`iis.access.query_string`*:: -+ --- -type: alias - -alias to: url.query - --- - -*`iis.access.port`*:: -+ --- -type: alias - -alias to: destination.port - --- - -*`iis.access.user_name`*:: -+ --- -type: alias - -alias to: user.name - --- - -*`iis.access.remote_ip`*:: -+ --- -type: alias - -alias to: source.address - --- - -*`iis.access.referrer`*:: -+ --- -type: alias - -alias to: http.request.referrer - --- - -*`iis.access.response_code`*:: -+ --- -type: alias - -alias to: http.response.status_code - --- - -*`iis.access.http_version`*:: -+ --- -type: alias - -alias to: http.version - --- - -*`iis.access.hostname`*:: -+ --- -type: alias - -alias to: host.hostname - --- - - -*`iis.access.user_agent.device`*:: -+ --- -type: alias - -alias to: user_agent.device.name - --- - -*`iis.access.user_agent.name`*:: -+ --- -type: alias - -alias to: user_agent.name - --- - -*`iis.access.user_agent.os`*:: -+ --- -type: alias - -alias to: user_agent.os.full_name - --- - -*`iis.access.user_agent.os_name`*:: -+ --- -type: alias - -alias to: user_agent.os.name - --- - -*`iis.access.user_agent.original`*:: -+ --- -type: alias - -alias to: user_agent.original - --- - - -*`iis.access.geoip.continent_name`*:: -+ --- -type: alias - -alias to: source.geo.continent_name - --- - -*`iis.access.geoip.country_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.country_iso_code - --- - -*`iis.access.geoip.location`*:: -+ --- -type: alias - -alias to: source.geo.location - --- - -*`iis.access.geoip.region_name`*:: -+ --- -type: alias - -alias to: source.geo.region_name - --- - -*`iis.access.geoip.city_name`*:: -+ --- -type: alias - -alias to: source.geo.city_name - --- - -*`iis.access.geoip.region_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.region_iso_code - --- - -[float] -=== error - -Contains fields for IIS error logs. - - - -*`iis.error.reason_phrase`*:: -+ --- -The HTTP reason phrase. - - -type: keyword - --- - -*`iis.error.queue_name`*:: -+ --- -The IIS application pool name. - - -type: keyword - --- - -*`iis.error.remote_ip`*:: -+ --- -type: alias - -alias to: source.address - --- - -*`iis.error.remote_port`*:: -+ --- -type: alias - -alias to: source.port - --- - -*`iis.error.server_ip`*:: -+ --- -type: alias - -alias to: destination.address - --- - -*`iis.error.server_port`*:: -+ --- -type: alias - -alias to: destination.port - --- - -*`iis.error.http_version`*:: -+ --- -type: alias - -alias to: http.version - --- - -*`iis.error.method`*:: -+ --- -type: alias - -alias to: http.request.method - --- - -*`iis.error.url`*:: -+ --- -type: alias - -alias to: url.original - --- - -*`iis.error.response_code`*:: -+ --- -type: alias - -alias to: http.response.status_code - --- - - -*`iis.error.geoip.continent_name`*:: -+ --- -type: alias - -alias to: source.geo.continent_name - --- - -*`iis.error.geoip.country_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.country_iso_code - --- - -*`iis.error.geoip.location`*:: -+ --- -type: alias - -alias to: source.geo.location - --- - -*`iis.error.geoip.region_name`*:: -+ --- -type: alias - -alias to: source.geo.region_name - --- - -*`iis.error.geoip.city_name`*:: -+ --- -type: alias - -alias to: source.geo.city_name - --- - -*`iis.error.geoip.region_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.region_iso_code - --- - -[[exported-fields-imperva]] -== Imperva SecureSphere fields - -imperva fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-infoblox]] -== Infoblox NIOS fields - -infoblox fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-iptables]] -== iptables fields - -Module for handling the iptables logs. - - - -[float] -=== iptables - -Fields from the iptables logs. - - - -*`iptables.ether_type`*:: -+ --- -Value of the ethernet type field identifying the network layer protocol. - - -type: long - --- - -*`iptables.flow_label`*:: -+ --- -IPv6 flow label. - - -type: integer - --- - -*`iptables.fragment_flags`*:: -+ --- -IP fragment flags. A combination of CE, DF and MF. - - -type: keyword - --- - -*`iptables.fragment_offset`*:: -+ --- -Offset of the current IP fragment. - - -type: long - --- - -[float] -=== icmp - -ICMP fields. - - - -*`iptables.icmp.code`*:: -+ --- -ICMP code. - - -type: long - --- - -*`iptables.icmp.id`*:: -+ --- -ICMP ID. - - -type: long - --- - -*`iptables.icmp.parameter`*:: -+ --- -ICMP parameter. - - -type: long - --- - -*`iptables.icmp.redirect`*:: -+ --- -ICMP redirect address. - - -type: ip - --- - -*`iptables.icmp.seq`*:: -+ --- -ICMP sequence number. - - -type: long - --- - -*`iptables.icmp.type`*:: -+ --- -ICMP type. - - -type: long - --- - -*`iptables.id`*:: -+ --- -Packet identifier. - - -type: long - --- - -*`iptables.incomplete_bytes`*:: -+ --- -Number of incomplete bytes. - - -type: long - --- - -*`iptables.input_device`*:: -+ --- -Device that received the packet. - - -type: keyword - --- - -*`iptables.precedence_bits`*:: -+ --- -IP precedence bits. - - -type: short - --- - -*`iptables.tos`*:: -+ --- -IP Type of Service field. - - -type: long - --- - -*`iptables.length`*:: -+ --- -Packet length. - - -type: long - --- - -*`iptables.output_device`*:: -+ --- -Device that output the packet. - - -type: keyword - --- - -[float] -=== tcp - -TCP fields. - - - -*`iptables.tcp.flags`*:: -+ --- -TCP flags. - - -type: keyword - --- - -*`iptables.tcp.reserved_bits`*:: -+ --- -TCP reserved bits. - - -type: short - --- - -*`iptables.tcp.seq`*:: -+ --- -TCP sequence number. - - -type: long - --- - -*`iptables.tcp.ack`*:: -+ --- -TCP Acknowledgment number. - - -type: long - --- - -*`iptables.tcp.window`*:: -+ --- -Advertised TCP window size. - - -type: long - --- - -*`iptables.ttl`*:: -+ --- -Time To Live field. - - -type: integer - --- - -[float] -=== udp - -UDP fields. - - - -*`iptables.udp.length`*:: -+ --- -Length of the UDP header and payload. - - -type: long - --- - -[float] -=== ubiquiti - -Fields for Ubiquiti network devices. - - - -*`iptables.ubiquiti.input_zone`*:: -+ --- -Input zone. - - -type: keyword - --- - -*`iptables.ubiquiti.output_zone`*:: -+ --- -Output zone. - - -type: keyword - --- - -*`iptables.ubiquiti.rule_number`*:: -+ --- -The rule number within the rule set. - -type: keyword - --- - -*`iptables.ubiquiti.rule_set`*:: -+ --- -The rule set name. - -type: keyword - --- - -[[exported-fields-jolokia-autodiscover]] -== Jolokia Discovery autodiscover provider fields - -Metadata from Jolokia Discovery added by the jolokia provider. - - - -*`jolokia.agent.version`*:: -+ --- -Version number of jolokia agent. - - -type: keyword - --- - -*`jolokia.agent.id`*:: -+ --- -Each agent has a unique id which can be either provided during startup of the agent in form of a configuration parameter or being autodetected. If autodected, the id has several parts: The IP, the process id, hashcode of the agent and its type. - - -type: keyword - --- - -*`jolokia.server.product`*:: -+ --- -The container product if detected. - - -type: keyword - --- - -*`jolokia.server.version`*:: -+ --- -The container's version (if detected). - - -type: keyword - --- - -*`jolokia.server.vendor`*:: -+ --- -The vendor of the container the agent is running in. - - -type: keyword - --- - -*`jolokia.url`*:: -+ --- -The URL how this agent can be contacted. - - -type: keyword - --- - -*`jolokia.secured`*:: -+ --- -Whether the agent was configured for authentication or not. - - -type: boolean - --- - -[[exported-fields-juniper]] -== Juniper JUNOS fields - -juniper fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[float] -=== juniper.srx - -Module for parsing junipersrx syslog. - - - -*`juniper.srx.reason`*:: -+ --- -reason - - -type: keyword - --- - -*`juniper.srx.connection_tag`*:: -+ --- -connection tag - - -type: keyword - --- - -*`juniper.srx.service_name`*:: -+ --- -service name - - -type: keyword - --- - -*`juniper.srx.nat_connection_tag`*:: -+ --- -nat connection tag - - -type: keyword - --- - -*`juniper.srx.src_nat_rule_type`*:: -+ --- -src nat rule type - - -type: keyword - --- - -*`juniper.srx.src_nat_rule_name`*:: -+ --- -src nat rule name - - -type: keyword - --- - -*`juniper.srx.dst_nat_rule_type`*:: -+ --- -dst nat rule type - - -type: keyword - --- - -*`juniper.srx.dst_nat_rule_name`*:: -+ --- -dst nat rule name - - -type: keyword - --- - -*`juniper.srx.protocol_id`*:: -+ --- -protocol id - - -type: keyword - --- - -*`juniper.srx.policy_name`*:: -+ --- -policy name - - -type: keyword - --- - -*`juniper.srx.session_id_32`*:: -+ --- -session id 32 - - -type: keyword - --- - -*`juniper.srx.session_id`*:: -+ --- -session id - - -type: keyword - --- - -*`juniper.srx.outbound_packets`*:: -+ --- -packets from client - - -type: integer - --- - -*`juniper.srx.outbound_bytes`*:: -+ --- -bytes from client - - -type: integer - --- - -*`juniper.srx.inbound_packets`*:: -+ --- -packets from server - - -type: integer - --- - -*`juniper.srx.inbound_bytes`*:: -+ --- -bytes from server - - -type: integer - --- - -*`juniper.srx.elapsed_time`*:: -+ --- -elapsed time - - -type: date - --- - -*`juniper.srx.application`*:: -+ --- -application - - -type: keyword - --- - -*`juniper.srx.nested_application`*:: -+ --- -nested application - - -type: keyword - --- - -*`juniper.srx.username`*:: -+ --- -username - - -type: keyword - --- - -*`juniper.srx.roles`*:: -+ --- -roles - - -type: keyword - --- - -*`juniper.srx.encrypted`*:: -+ --- -encrypted - - -type: keyword - --- - -*`juniper.srx.application_category`*:: -+ --- -application category - - -type: keyword - --- - -*`juniper.srx.application_sub_category`*:: -+ --- -application sub category - - -type: keyword - --- - -*`juniper.srx.application_characteristics`*:: -+ --- -application characteristics - - -type: keyword - --- - -*`juniper.srx.secure_web_proxy_session_type`*:: -+ --- -secure web proxy session type - - -type: keyword - --- - -*`juniper.srx.peer_session_id`*:: -+ --- -peer session id - - -type: keyword - --- - -*`juniper.srx.peer_source_address`*:: -+ --- -peer source address - - -type: ip - --- - -*`juniper.srx.peer_source_port`*:: -+ --- -peer source port - - -type: integer - --- - -*`juniper.srx.peer_destination_address`*:: -+ --- -peer destination address - - -type: ip - --- - -*`juniper.srx.peer_destination_port`*:: -+ --- -peer destination port - - -type: integer - --- - -*`juniper.srx.hostname`*:: -+ --- -hostname - - -type: keyword - --- - -*`juniper.srx.src_vrf_grp`*:: -+ --- -src_vrf_grp - - -type: keyword - --- - -*`juniper.srx.dst_vrf_grp`*:: -+ --- -dst_vrf_grp - - -type: keyword - --- - -*`juniper.srx.icmp_type`*:: -+ --- -icmp type - - -type: integer - --- - -*`juniper.srx.process`*:: -+ --- -process that generated the message - - -type: keyword - --- - -*`juniper.srx.apbr_rule_type`*:: -+ --- -apbr rule type - - -type: keyword - --- - -*`juniper.srx.dscp_value`*:: -+ --- -apbr rule type - - -type: integer - --- - -*`juniper.srx.logical_system_name`*:: -+ --- -logical system name - - -type: keyword - --- - -*`juniper.srx.profile_name`*:: -+ --- -profile name - - -type: keyword - --- - -*`juniper.srx.routing_instance`*:: -+ --- -routing instance - - -type: keyword - --- - -*`juniper.srx.rule_name`*:: -+ --- -rule name - - -type: keyword - --- - -*`juniper.srx.uplink_tx_bytes`*:: -+ --- -uplink tx bytes - - -type: integer - --- - -*`juniper.srx.uplink_rx_bytes`*:: -+ --- -uplink rx bytes - - -type: integer - --- - -*`juniper.srx.obj`*:: -+ --- -url path - - -type: keyword - --- - -*`juniper.srx.url`*:: -+ --- -url domain - - -type: keyword - --- - -*`juniper.srx.profile`*:: -+ --- -filter profile - - -type: keyword - --- - -*`juniper.srx.category`*:: -+ --- -filter category - - -type: keyword - --- - -*`juniper.srx.filename`*:: -+ --- -filename - - -type: keyword - --- - -*`juniper.srx.temporary_filename`*:: -+ --- -temporary_filename - - -type: keyword - --- - -*`juniper.srx.name`*:: -+ --- -name - - -type: keyword - --- - -*`juniper.srx.error_message`*:: -+ --- -error_message - - -type: keyword - --- - -*`juniper.srx.error_code`*:: -+ --- -error_code - - -type: keyword - --- - -*`juniper.srx.action`*:: -+ --- -action - - -type: keyword - --- - -*`juniper.srx.protocol`*:: -+ --- -protocol - - -type: keyword - --- - -*`juniper.srx.protocol_name`*:: -+ --- -protocol name - - -type: keyword - --- - -*`juniper.srx.type`*:: -+ --- -type - - -type: keyword - --- - -*`juniper.srx.repeat_count`*:: -+ --- -repeat count - - -type: integer - --- - -*`juniper.srx.alert`*:: -+ --- -repeat alert - - -type: keyword - --- - -*`juniper.srx.message_type`*:: -+ --- -message type - - -type: keyword - --- - -*`juniper.srx.threat_severity`*:: -+ --- -threat severity - - -type: keyword - --- - -*`juniper.srx.application_name`*:: -+ --- -application name - - -type: keyword - --- - -*`juniper.srx.attack_name`*:: -+ --- -attack name - - -type: keyword - --- - -*`juniper.srx.index`*:: -+ --- -index - - -type: keyword - --- - -*`juniper.srx.message`*:: -+ --- -mesagge - - -type: keyword - --- - -*`juniper.srx.epoch_time`*:: -+ --- -epoch time - - -type: date - --- - -*`juniper.srx.packet_log_id`*:: -+ --- -packet log id - - -type: integer - --- - -*`juniper.srx.export_id`*:: -+ --- -packet log id - - -type: integer - --- - -*`juniper.srx.ddos_application_name`*:: -+ --- -ddos application name - - -type: keyword - --- - -*`juniper.srx.connection_hit_rate`*:: -+ --- -connection hit rate - - -type: integer - --- - -*`juniper.srx.time_scope`*:: -+ --- -time scope - - -type: keyword - --- - -*`juniper.srx.context_hit_rate`*:: -+ --- -context hit rate - - -type: integer - --- - -*`juniper.srx.context_value_hit_rate`*:: -+ --- -context value hit rate - - -type: integer - --- - -*`juniper.srx.time_count`*:: -+ --- -time count - - -type: integer - --- - -*`juniper.srx.time_period`*:: -+ --- -time period - - -type: integer - --- - -*`juniper.srx.context_value`*:: -+ --- -context value - - -type: keyword - --- - -*`juniper.srx.context_name`*:: -+ --- -context name - - -type: keyword - --- - -*`juniper.srx.ruleebase_name`*:: -+ --- -ruleebase name - - -type: keyword - --- - -*`juniper.srx.verdict_source`*:: -+ --- -verdict source - - -type: keyword - --- - -*`juniper.srx.verdict_number`*:: -+ --- -verdict number - - -type: integer - --- - -*`juniper.srx.file_category`*:: -+ --- -file category - - -type: keyword - --- - -*`juniper.srx.sample_sha256`*:: -+ --- -sample sha256 - - -type: keyword - --- - -*`juniper.srx.malware_info`*:: -+ --- -malware info - - -type: keyword - --- - -*`juniper.srx.client_ip`*:: -+ --- -client ip - - -type: ip - --- - -*`juniper.srx.tenant_id`*:: -+ --- -tenant id - - -type: keyword - --- - -*`juniper.srx.timestamp`*:: -+ --- -timestamp - - -type: date - --- - -*`juniper.srx.th`*:: -+ --- -th - - -type: keyword - --- - -*`juniper.srx.status`*:: -+ --- -status - - -type: keyword - --- - -*`juniper.srx.state`*:: -+ --- -state - - -type: keyword - --- - -*`juniper.srx.file_hash_lookup`*:: -+ --- -file hash lookup - - -type: keyword - --- - -*`juniper.srx.file_name`*:: -+ --- -file name - - -type: keyword - --- - -*`juniper.srx.action_detail`*:: -+ --- -action detail - - -type: keyword - --- - -*`juniper.srx.sub_category`*:: -+ --- -sub category - - -type: keyword - --- - -*`juniper.srx.feed_name`*:: -+ --- -feed name - - -type: keyword - --- - -*`juniper.srx.occur_count`*:: -+ --- -occur count - - -type: integer - --- - -*`juniper.srx.tag`*:: -+ --- -system log message tag, which uniquely identifies the message. - - -type: keyword - --- - -[[exported-fields-kafka]] -== Kafka fields - -Kafka module - - - -[float] -=== kafka - - - - -[float] -=== log - -Kafka log lines. - - - -*`kafka.log.component`*:: -+ --- -Component the log is coming from. - - -type: keyword - --- - -*`kafka.log.class`*:: -+ --- -Java class the log is coming from. - - -type: keyword - --- - -*`kafka.log.thread`*:: -+ --- -Thread name the log is coming from. - - -type: keyword - --- - -[float] -=== trace - -Trace in the log line. - - - -*`kafka.log.trace.class`*:: -+ --- -Java class the trace is coming from. - - -type: keyword - --- - -*`kafka.log.trace.message`*:: -+ --- -Message part of the trace. - - -type: text - --- - -[[exported-fields-kibana]] -== kibana fields - -kibana Module - - - -*`service.node.roles`*:: -+ --- -type: keyword - --- - -[float] -=== kibana - -Module for parsing Kibana logs. - - - -*`kibana.session_id`*:: -+ --- -The ID of the user session associated with this event. Each login attempt results in a unique session id. - -type: keyword - -example: 123e4567-e89b-12d3-a456-426614174000 - --- - -*`kibana.space_id`*:: -+ --- -The id of the space associated with this event. - -type: keyword - -example: default - --- - -*`kibana.saved_object.type`*:: -+ --- -The type of the saved object associated with this event. - -type: keyword - -example: dashboard - --- - -*`kibana.saved_object.id`*:: -+ --- -The id of the saved object associated with this event. - -type: keyword - -example: 6295bdd0-0a0e-11e7-825f-6748cda7d858 - --- - -*`kibana.saved_object.name`*:: -+ --- -The name of the saved object associated with this event. - -type: keyword - -example: my-saved-object - --- - -*`kibana.add_to_spaces`*:: -+ --- -The set of space ids that a saved object was shared to. - -type: keyword - -example: ['default', 'marketing'] - --- - -*`kibana.delete_from_spaces`*:: -+ --- -The set of space ids that a saved object was removed from. - -type: keyword - -example: ['default', 'marketing'] - --- - -*`kibana.authentication_provider`*:: -+ --- -The authentication provider associated with a login event. - -type: keyword - -example: basic1 - --- - -*`kibana.authentication_type`*:: -+ --- -The authentication provider type associated with a login event. - -type: keyword - -example: basic - --- - -*`kibana.authentication_realm`*:: -+ --- -The Elasticsearch authentication realm name which fulfilled a login event. - -type: keyword - -example: native - --- - -*`kibana.lookup_realm`*:: -+ --- -The Elasticsearch lookup realm which fulfilled a login event. - -type: keyword - -example: native - --- - -[float] -=== log - -Kibana log lines. - - - -*`kibana.log.tags`*:: -+ --- -Kibana logging tags. - - -type: keyword - --- - -*`kibana.log.state`*:: -+ --- -Current state of Kibana. - - -type: keyword - --- - -*`kibana.log.meta`*:: -+ --- -type: object - --- - -*`kibana.log.meta.req.headers`*:: -+ --- -type: flattened - --- - -*`kibana.log.meta.res.headers`*:: -+ --- -type: flattened - --- - -[[exported-fields-kubernetes-processor]] -== Kubernetes fields - -Kubernetes metadata added by the kubernetes processor - - - - -*`kubernetes.pod.name`*:: -+ --- -Kubernetes pod name - - -type: keyword - --- - -*`kubernetes.pod.uid`*:: -+ --- -Kubernetes Pod UID - - -type: keyword - --- - -*`kubernetes.pod.ip`*:: -+ --- -Kubernetes Pod IP - - -type: ip - --- - -*`kubernetes.namespace`*:: -+ --- -Kubernetes namespace - - -type: keyword - --- - -*`kubernetes.node.name`*:: -+ --- -Kubernetes node name - - -type: keyword - --- - -*`kubernetes.node.hostname`*:: -+ --- -Kubernetes hostname as reported by the node’s kernel - - -type: keyword - --- - -*`kubernetes.labels.*`*:: -+ --- -Kubernetes labels map - - -type: object - --- - -*`kubernetes.annotations.*`*:: -+ --- -Kubernetes annotations map - - -type: object - --- - -*`kubernetes.selectors.*`*:: -+ --- -Kubernetes selectors map - - -type: object - --- - -*`kubernetes.replicaset.name`*:: -+ --- -Kubernetes replicaset name - - -type: keyword - --- - -*`kubernetes.deployment.name`*:: -+ --- -Kubernetes deployment name - - -type: keyword - --- - -*`kubernetes.statefulset.name`*:: -+ --- -Kubernetes statefulset name - - -type: keyword - --- - -*`kubernetes.container.name`*:: -+ --- -Kubernetes container name (different than the name from the runtime) - - -type: keyword - --- - -[[exported-fields-log]] -== Log file content fields - -Contains log file lines. - - - -*`log.source.address`*:: -+ --- -Source address from which the log event was read / sent from. - - -type: keyword - -required: False - --- - -*`log.offset`*:: -+ --- -The file offset the reported line starts at. - - -type: long - -required: False - --- - -*`stream`*:: -+ --- -Log stream when reading container logs, can be 'stdout' or 'stderr' - - -type: keyword - -required: False - --- - -*`input.type`*:: -+ --- -The input type from which the event was generated. This field is set to the value specified for the `type` option in the input section of the Filebeat config file. - - -required: True - --- - -*`syslog.facility`*:: -+ --- -The facility extracted from the priority. - - -type: long - -required: False - --- - -*`syslog.priority`*:: -+ --- -The priority of the syslog event. - - -type: long - -required: False - --- - -*`syslog.severity_label`*:: -+ --- -The human readable severity. - - -type: keyword - -required: False - --- - -*`syslog.facility_label`*:: -+ --- -The human readable facility. - - -type: keyword - -required: False - --- - -*`process.program`*:: -+ --- -The name of the program. - - -type: keyword - -required: False - --- - -*`log.flags`*:: -+ --- -This field contains the flags of the event. - - --- - -*`http.response.content_length`*:: -+ --- -type: alias - -alias to: http.response.body.bytes - --- - - - -*`user_agent.os.full_name`*:: -+ --- -type: keyword - --- - -*`fileset.name`*:: -+ --- -The Filebeat fileset that generated this event. - - -type: keyword - --- - -*`fileset.module`*:: -+ --- -type: alias - -alias to: event.module - --- - -*`read_timestamp`*:: -+ --- -type: alias - -alias to: event.created - --- - -*`docker.attrs`*:: -+ --- -docker.attrs contains labels and environment variables written by docker's JSON File logging driver. These fields are only available when they are configured in the logging driver options. - - -type: object - --- - -*`icmp.code`*:: -+ --- -ICMP code. - - -type: keyword - --- - -*`icmp.type`*:: -+ --- -ICMP type. - - -type: keyword - --- - -*`igmp.type`*:: -+ --- -IGMP type. - - -type: keyword - --- - - -*`azure.eventhub`*:: -+ --- -Name of the eventhub. - - -type: keyword - --- - -*`azure.offset`*:: -+ --- -The offset. - - -type: long - --- - -*`azure.enqueued_time`*:: -+ --- -The enqueued time. - - -type: date - --- - -*`azure.partition_id`*:: -+ --- -The partition id. - - -type: long - --- - -*`azure.consumer_group`*:: -+ --- -The consumer group. - - -type: keyword - --- - -*`azure.sequence_number`*:: -+ --- -The sequence number. - - -type: long - --- - - -*`kafka.topic`*:: -+ --- -Kafka topic - - -type: keyword - --- - -*`kafka.partition`*:: -+ --- -Kafka partition number - - -type: long - --- - -*`kafka.offset`*:: -+ --- -Kafka offset of this message - - -type: long - --- - -*`kafka.key`*:: -+ --- -Kafka key, corresponding to the Kafka value stored in the message - - -type: keyword - --- - -*`kafka.block_timestamp`*:: -+ --- -Kafka outer (compressed) block timestamp - - -type: date - --- - -*`kafka.headers`*:: -+ --- -An array of Kafka header strings for this message, in the form ": ". - - -type: array - --- - -[[exported-fields-logstash]] -== logstash fields - -logstash Module - - - -[float] -=== logstash - - - - -[float] -=== log - -Fields from the Logstash logs. - - - -*`logstash.log.module`*:: -+ --- -The module or class where the event originate. - - -type: keyword - --- - -*`logstash.log.thread`*:: -+ --- -Information about the running thread where the log originate. - - -type: keyword - --- - -*`logstash.log.thread.text`*:: -+ --- -type: text - --- - -*`logstash.log.log_event`*:: -+ --- -key and value debugging information. - - -type: object - --- - -*`logstash.log.log_event.action`*:: -+ --- -type: keyword - --- - -*`logstash.log.pipeline_id`*:: -+ --- -The ID of the pipeline. - - -type: keyword - -example: main - --- - -*`logstash.log.message`*:: -+ --- -type: alias - -alias to: message - --- - -*`logstash.log.level`*:: -+ --- -type: alias - -alias to: log.level - --- - -[float] -=== slowlog - -slowlog - - - -*`logstash.slowlog.module`*:: -+ --- -The module or class where the event originate. - - -type: keyword - --- - -*`logstash.slowlog.thread`*:: -+ --- -Information about the running thread where the log originate. - - -type: keyword - --- - -*`logstash.slowlog.thread.text`*:: -+ --- -type: text - --- - -*`logstash.slowlog.event`*:: -+ --- -Raw dump of the original event - - -type: keyword - --- - -*`logstash.slowlog.event.text`*:: -+ --- -type: text - --- - -*`logstash.slowlog.plugin_name`*:: -+ --- -Name of the plugin - - -type: keyword - --- - -*`logstash.slowlog.plugin_type`*:: -+ --- -Type of the plugin: Inputs, Filters, Outputs or Codecs. - - -type: keyword - --- - -*`logstash.slowlog.took_in_millis`*:: -+ --- -Execution time for the plugin in milliseconds. - - -type: long - --- - -*`logstash.slowlog.plugin_params`*:: -+ --- -String value of the plugin configuration - - -type: keyword - --- - -*`logstash.slowlog.plugin_params.text`*:: -+ --- -type: text - --- - -*`logstash.slowlog.plugin_params_object`*:: -+ --- -key -> value of the configuration used by the plugin. - - -type: object - --- - -*`logstash.slowlog.level`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`logstash.slowlog.took_in_nanos`*:: -+ --- -type: alias - -alias to: event.duration - --- - -[[exported-fields-lumberjack]] -== Lumberjack fields - -Fields from Lumberjack input. - - - -*`lumberjack`*:: -+ --- -Structured data received in an event sent over the Lumberjack protocol. - - -type: flattened - --- - -[[exported-fields-microsoft]] -== Microsoft fields - -Microsoft Module - - - -[float] -=== microsoft.defender_atp - -Module for ingesting Microsoft Defender ATP. - - - -*`microsoft.defender_atp.lastUpdateTime`*:: -+ --- -The date and time (in UTC) the alert was last updated. - - -type: date - --- - -*`microsoft.defender_atp.resolvedTime`*:: -+ --- -The date and time in which the status of the alert was changed to 'Resolved'. - - -type: date - --- - -*`microsoft.defender_atp.incidentId`*:: -+ --- -The Incident ID of the Alert. - - -type: keyword - --- - -*`microsoft.defender_atp.investigationId`*:: -+ --- -The Investigation ID related to the Alert. - - -type: keyword - --- - -*`microsoft.defender_atp.investigationState`*:: -+ --- -The current state of the Investigation. - - -type: keyword - --- - -*`microsoft.defender_atp.assignedTo`*:: -+ --- -Owner of the alert. - - -type: keyword - --- - -*`microsoft.defender_atp.status`*:: -+ --- -Specifies the current status of the alert. Possible values are: 'Unknown', 'New', 'InProgress' and 'Resolved'. - - -type: keyword - --- - -*`microsoft.defender_atp.classification`*:: -+ --- -Specification of the alert. Possible values are: 'Unknown', 'FalsePositive', 'TruePositive'. - - -type: keyword - --- - -*`microsoft.defender_atp.determination`*:: -+ --- -Specifies the determination of the alert. Possible values are: 'NotAvailable', 'Apt', 'Malware', 'SecurityPersonnel', 'SecurityTesting', 'UnwantedSoftware', 'Other'. - - -type: keyword - --- - -*`microsoft.defender_atp.threatFamilyName`*:: -+ --- -Threat family. - - -type: keyword - --- - -*`microsoft.defender_atp.rbacGroupName`*:: -+ --- -User group related to the alert - - -type: keyword - --- - -*`microsoft.defender_atp.evidence.domainName`*:: -+ --- -Domain name related to the alert - - -type: keyword - --- - -*`microsoft.defender_atp.evidence.ipAddress`*:: -+ --- -IP address involved in the alert - - -type: ip - --- - -*`microsoft.defender_atp.evidence.aadUserId`*:: -+ --- -ID of the user involved in the alert - - -type: keyword - --- - -*`microsoft.defender_atp.evidence.accountName`*:: -+ --- -Username of the user involved in the alert - - -type: keyword - --- - -*`microsoft.defender_atp.evidence.entityType`*:: -+ --- -The type of evidence - - -type: keyword - --- - -*`microsoft.defender_atp.evidence.userPrincipalName`*:: -+ --- -Principal name of the user involved in the alert - - -type: keyword - --- - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[float] -=== microsoft.m365_defender - -Module for ingesting Microsoft Defender ATP. - - - -*`microsoft.m365_defender.incidentId`*:: -+ --- -Unique identifier to represent the incident. - - -type: keyword - --- - -*`microsoft.m365_defender.redirectIncidentId`*:: -+ --- -Only populated in case an incident is being grouped together with another incident, as part of the incident processing logic. - - -type: keyword - --- - -*`microsoft.m365_defender.incidentName`*:: -+ --- -Name of the Incident. - - -type: keyword - --- - -*`microsoft.m365_defender.determination`*:: -+ --- -Specifies the determination of the incident. The property values are: NotAvailable, Apt, Malware, SecurityPersonnel, SecurityTesting, UnwantedSoftware, Other. - - -type: keyword - --- - -*`microsoft.m365_defender.investigationState`*:: -+ --- -The current state of the Investigation. - - -type: keyword - --- - -*`microsoft.m365_defender.assignedTo`*:: -+ --- -Owner of the alert. - - -type: keyword - --- - -*`microsoft.m365_defender.tags`*:: -+ --- -Array of custom tags associated with an incident, for example to flag a group of incidents with a common characteristic. - - -type: keyword - --- - -*`microsoft.m365_defender.status`*:: -+ --- -Specifies the current status of the alert. Possible values are: 'Unknown', 'New', 'InProgress' and 'Resolved'. - - -type: keyword - --- - -*`microsoft.m365_defender.classification`*:: -+ --- -Specification of the alert. Possible values are: 'Unknown', 'FalsePositive', 'TruePositive'. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.incidentId`*:: -+ --- -Unique identifier to represent the incident this alert is associated with. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.resolvedTime`*:: -+ --- -Time when alert was resolved. - - -type: date - --- - -*`microsoft.m365_defender.alerts.status`*:: -+ --- -Categorize alerts (as New, Active, or Resolved). - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.severity`*:: -+ --- -The severity of the related alert. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.creationTime`*:: -+ --- -Time when alert was first created. - - -type: date - --- - -*`microsoft.m365_defender.alerts.lastUpdatedTime`*:: -+ --- -Time when alert was last updated. - - -type: date - --- - -*`microsoft.m365_defender.alerts.investigationId`*:: -+ --- -The automated investigation id triggered by this alert. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.userSid`*:: -+ --- -The SID of the related user - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.detectionSource`*:: -+ --- -The service that initially detected the threat. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.classification`*:: -+ --- -The specification for the incident. The property values are: Unknown, FalsePositive, TruePositive or null. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.investigationState`*:: -+ --- -Information on the investigation's current status. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.determination`*:: -+ --- -Specifies the determination of the incident. The property values are: NotAvailable, Apt, Malware, SecurityPersonnel, SecurityTesting, UnwantedSoftware, Other or null - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.assignedTo`*:: -+ --- -Owner of the incident, or null if no owner is assigned. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.actorName`*:: -+ --- -The activity group, if any, the associated with this alert. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.threatFamilyName`*:: -+ --- -Threat family associated with this alert. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.mitreTechniques`*:: -+ --- -The attack techniques, as aligned with the MITRE ATT&CK™ framework. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.entityType`*:: -+ --- -Entities that have been identified to be part of, or related to, a given alert. The properties values are: User, Ip, Url, File, Process, MailBox, MailMessage, MailCluster, Registry. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.accountName`*:: -+ --- -Account name of the related user. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.mailboxDisplayName`*:: -+ --- -The display name of the related mailbox. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.mailboxAddress`*:: -+ --- -The mail address of the related mailbox. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.clusterBy`*:: -+ --- -A list of metadata if the entityType is MailCluster. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.sender`*:: -+ --- -The sender for the related email message. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.recipient`*:: -+ --- -The recipient for the related email message. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.subject`*:: -+ --- -The subject for the related email message. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.deliveryAction`*:: -+ --- -The delivery status for the related email message. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.securityGroupId`*:: -+ --- -The Security Group ID for the user related to the email message. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.securityGroupName`*:: -+ --- -The Security Group Name for the user related to the email message. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.registryHive`*:: -+ --- -Reference to which Hive in registry the event is related to, if eventType is registry. Example: HKEY_LOCAL_MACHINE. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.registryKey`*:: -+ --- -Reference to the related registry key to the event. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.registryValueType`*:: -+ --- -Value type of the registry key/value pair related to the event. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.deviceId`*:: -+ --- -The unique ID of the device related to the event. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.entities.ipAddress`*:: -+ --- -The related IP address to the event. - - -type: keyword - --- - -*`microsoft.m365_defender.alerts.devices`*:: -+ --- -The devices related to the investigation. - - -type: flattened - --- - -[[exported-fields-misp]] -== MISP fields - -Module for handling threat information from MISP. - - - -[float] -=== misp - -Fields from MISP threat information. - - - -[float] -=== attack_pattern - -Fields provide support for specifying information about attack patterns. - - - -*`misp.attack_pattern.id`*:: -+ --- -Identifier of the threat indicator. - - -type: keyword - --- - -*`misp.attack_pattern.name`*:: -+ --- -Name of the attack pattern. - - -type: keyword - --- - -*`misp.attack_pattern.description`*:: -+ --- -Description of the attack pattern. - - -type: text - --- - -*`misp.attack_pattern.kill_chain_phases`*:: -+ --- -The kill chain phase(s) to which this attack pattern corresponds. - - -type: keyword - --- - -[float] -=== campaign - -Fields provide support for specifying information about campaigns. - - - -*`misp.campaign.id`*:: -+ --- -Identifier of the campaign. - - -type: keyword - --- - -*`misp.campaign.name`*:: -+ --- -Name of the campaign. - - -type: keyword - --- - -*`misp.campaign.description`*:: -+ --- -Description of the campaign. - - -type: text - --- - -*`misp.campaign.aliases`*:: -+ --- -Alternative names used to identify this campaign. - - -type: text - --- - -*`misp.campaign.first_seen`*:: -+ --- -The time that this Campaign was first seen, in RFC3339 format. - - -type: date - --- - -*`misp.campaign.last_seen`*:: -+ --- -The time that this Campaign was last seen, in RFC3339 format. - - -type: date - --- - -*`misp.campaign.objective`*:: -+ --- -This field defines the Campaign's primary goal, objective, desired outcome, or intended effect. - - -type: keyword - --- - -[float] -=== course_of_action - -A Course of Action is an action taken either to prevent an attack or to respond to an attack that is in progress. - - - -*`misp.course_of_action.id`*:: -+ --- -Identifier of the Course of Action. - - -type: keyword - --- - -*`misp.course_of_action.name`*:: -+ --- -The name used to identify the Course of Action. - - -type: keyword - --- - -*`misp.course_of_action.description`*:: -+ --- -Description of the Course of Action. - - -type: text - --- - -[float] -=== identity - -Identity can represent actual individuals, organizations, or groups, as well as classes of individuals, organizations, or groups. - - - -*`misp.identity.id`*:: -+ --- -Identifier of the Identity. - - -type: keyword - --- - -*`misp.identity.name`*:: -+ --- -The name used to identify the Identity. - - -type: keyword - --- - -*`misp.identity.description`*:: -+ --- -Description of the Identity. - - -type: text - --- - -*`misp.identity.identity_class`*:: -+ --- -The type of entity that this Identity describes, e.g., an individual or organization. Open Vocab - identity-class-ov - - -type: keyword - --- - -*`misp.identity.labels`*:: -+ --- -The list of roles that this Identity performs. - - -type: keyword - -example: CEO - - --- - -*`misp.identity.sectors`*:: -+ --- -The list of sectors that this Identity belongs to. Open Vocab - industry-sector-ov - - -type: keyword - --- - -*`misp.identity.contact_information`*:: -+ --- -The contact information (e-mail, phone number, etc.) for this Identity. - - -type: text - --- - -[float] -=== intrusion_set - -An Intrusion Set is a grouped set of adversary behavior and resources with common properties that is believed to be orchestrated by a single organization. - - - -*`misp.intrusion_set.id`*:: -+ --- -Identifier of the Intrusion Set. - - -type: keyword - --- - -*`misp.intrusion_set.name`*:: -+ --- -The name used to identify the Intrusion Set. - - -type: keyword - --- - -*`misp.intrusion_set.description`*:: -+ --- -Description of the Intrusion Set. - - -type: text - --- - -*`misp.intrusion_set.aliases`*:: -+ --- -Alternative names used to identify the Intrusion Set. - - -type: text - --- - -*`misp.intrusion_set.first_seen`*:: -+ --- -The time that this Intrusion Set was first seen, in RFC3339 format. - - -type: date - --- - -*`misp.intrusion_set.last_seen`*:: -+ --- -The time that this Intrusion Set was last seen, in RFC3339 format. - - -type: date - --- - -*`misp.intrusion_set.goals`*:: -+ --- -The high level goals of this Intrusion Set, namely, what are they trying to do. - - -type: text - --- - -*`misp.intrusion_set.resource_level`*:: -+ --- -This defines the organizational level at which this Intrusion Set typically works. Open Vocab - attack-resource-level-ov - - -type: text - --- - -*`misp.intrusion_set.primary_motivation`*:: -+ --- -The primary reason, motivation, or purpose behind this Intrusion Set. Open Vocab - attack-motivation-ov - - -type: text - --- - -*`misp.intrusion_set.secondary_motivations`*:: -+ --- -The secondary reasons, motivations, or purposes behind this Intrusion Set. Open Vocab - attack-motivation-ov - - -type: text - --- - -[float] -=== malware - -Malware is a type of TTP that is also known as malicious code and malicious software, refers to a program that is inserted into a system, usually covertly, with the intent of compromising the confidentiality, integrity, or availability of the victim's data, applications, or operating system (OS) or of otherwise annoying or disrupting the victim. - - - -*`misp.malware.id`*:: -+ --- -Identifier of the Malware. - - -type: keyword - --- - -*`misp.malware.name`*:: -+ --- -The name used to identify the Malware. - - -type: keyword - --- - -*`misp.malware.description`*:: -+ --- -Description of the Malware. - - -type: text - --- - -*`misp.malware.labels`*:: -+ --- -The type of malware being described. Open Vocab - malware-label-ov. adware,backdoor,bot,ddos,dropper,exploit-kit,keylogger,ransomware, remote-access-trojan,resource-exploitation,rogue-security-software,rootkit, screen-capture,spyware,trojan,virus,worm - - -type: keyword - --- - -*`misp.malware.kill_chain_phases`*:: -+ --- -The list of kill chain phases for which this Malware instance can be used. - - -type: keyword - -format: string - --- - -[float] -=== note - -A Note is a comment or note containing informative text to help explain the context of one or more STIX Objects (SDOs or SROs) or to provide additional analysis that is not contained in the original object. - - - -*`misp.note.id`*:: -+ --- -Identifier of the Note. - - -type: keyword - --- - -*`misp.note.summary`*:: -+ --- -A brief description used as a summary of the Note. - - -type: keyword - --- - -*`misp.note.description`*:: -+ --- -The content of the Note. - - -type: text - --- - -*`misp.note.authors`*:: -+ --- -The name of the author(s) of this Note. - - -type: keyword - --- - -*`misp.note.object_refs`*:: -+ --- -The STIX Objects (SDOs and SROs) that the note is being applied to. - - -type: keyword - --- - -[float] -=== threat_indicator - -Fields provide support for specifying information about threat indicators, and related matching patterns. - - - -*`misp.threat_indicator.labels`*:: -+ --- -list of type open-vocab that specifies the type of indicator. - - -type: keyword - -example: Domain Watchlist - - --- - -*`misp.threat_indicator.id`*:: -+ --- -Identifier of the threat indicator. - - -type: keyword - --- - -*`misp.threat_indicator.version`*:: -+ --- -Version of the threat indicator. - - -type: keyword - --- - -*`misp.threat_indicator.type`*:: -+ --- -Type of the threat indicator. - - -type: keyword - --- - -*`misp.threat_indicator.description`*:: -+ --- -Description of the threat indicator. - - -type: text - --- - -*`misp.threat_indicator.feed`*:: -+ --- -Name of the threat feed. - - -type: text - --- - -*`misp.threat_indicator.valid_from`*:: -+ --- -The time from which this Indicator should be considered valuable intelligence, in RFC3339 format. - - -type: date - --- - -*`misp.threat_indicator.valid_until`*:: -+ --- -The time at which this Indicator should no longer be considered valuable intelligence. If the valid_until property is omitted, then there is no constraint on the latest time for which the indicator should be used, in RFC3339 format. - - -type: date - --- - -*`misp.threat_indicator.severity`*:: -+ --- -Threat severity to which this indicator corresponds. - - -type: keyword - -example: high - -format: string - --- - -*`misp.threat_indicator.confidence`*:: -+ --- -Confidence level to which this indicator corresponds. - - -type: keyword - -example: high - --- - -*`misp.threat_indicator.kill_chain_phases`*:: -+ --- -The kill chain phase(s) to which this indicator corresponds. - - -type: keyword - -format: string - --- - -*`misp.threat_indicator.mitre_tactic`*:: -+ --- -MITRE tactics to which this indicator corresponds. - - -type: keyword - -example: Initial Access - -format: string - --- - -*`misp.threat_indicator.mitre_technique`*:: -+ --- -MITRE techniques to which this indicator corresponds. - - -type: keyword - -example: Drive-by Compromise - -format: string - --- - -*`misp.threat_indicator.attack_pattern`*:: -+ --- -The attack_pattern for this indicator is a STIX Pattern as specified in STIX Version 2.0 Part 5 - STIX Patterning. - - -type: keyword - -example: [destination:ip = '91.219.29.188/32'] - - --- - -*`misp.threat_indicator.attack_pattern_kql`*:: -+ --- -The attack_pattern for this indicator is KQL query that matches the attack_pattern specified in the STIX Pattern format. - - -type: keyword - -example: destination.ip: "91.219.29.188/32" - - --- - -*`misp.threat_indicator.negate`*:: -+ --- -When set to true, it specifies the absence of the attack_pattern. - - -type: boolean - --- - -*`misp.threat_indicator.intrusion_set`*:: -+ --- -Name of the intrusion set if known. - - -type: keyword - --- - -*`misp.threat_indicator.campaign`*:: -+ --- -Name of the attack campaign if known. - - -type: keyword - --- - -*`misp.threat_indicator.threat_actor`*:: -+ --- -Name of the threat actor if known. - - -type: keyword - --- - -[float] -=== observed_data - -Observed data conveys information that was observed on systems and networks, such as log data or network traffic, using the Cyber Observable specification. - - - -*`misp.observed_data.id`*:: -+ --- -Identifier of the Observed Data. - - -type: keyword - --- - -*`misp.observed_data.first_observed`*:: -+ --- -The beginning of the time window that the data was observed, in RFC3339 format. - - -type: date - --- - -*`misp.observed_data.last_observed`*:: -+ --- -The end of the time window that the data was observed, in RFC3339 format. - - -type: date - --- - -*`misp.observed_data.number_observed`*:: -+ --- -The number of times the data represented in the objects property was observed. This MUST be an integer between 1 and 999,999,999 inclusive. - - -type: integer - --- - -*`misp.observed_data.objects`*:: -+ --- -A dictionary of Cyber Observable Objects that describes the single fact that was observed. - - -type: keyword - --- - -[float] -=== report - -Reports are collections of threat intelligence focused on one or more topics, such as a description of a threat actor, malware, or attack technique, including context and related details. - - - -*`misp.report.id`*:: -+ --- -Identifier of the Report. - - -type: keyword - --- - -*`misp.report.labels`*:: -+ --- -This field is an Open Vocabulary that specifies the primary subject of this report. Open Vocab - report-label-ov. threat-report,attack-pattern,campaign,identity,indicator,malware,observed-data,threat-actor,tool,vulnerability - - -type: keyword - --- - -*`misp.report.name`*:: -+ --- -The name used to identify the Report. - - -type: keyword - --- - -*`misp.report.description`*:: -+ --- -A description that provides more details and context about Report. - - -type: text - --- - -*`misp.report.published`*:: -+ --- -The date that this report object was officially published by the creator of this report, in RFC3339 format. - - -type: date - --- - -*`misp.report.object_refs`*:: -+ --- -Specifies the STIX Objects that are referred to by this Report. - - -type: text - --- - -[float] -=== threat_actor - -Threat Actors are actual individuals, groups, or organizations believed to be operating with malicious intent. - - - -*`misp.threat_actor.id`*:: -+ --- -Identifier of the Threat Actor. - - -type: keyword - --- - -*`misp.threat_actor.labels`*:: -+ --- -This field specifies the type of threat actor. Open Vocab - threat-actor-label-ov. activist,competitor,crime-syndicate,criminal,hacker,insider-accidental,insider-disgruntled,nation-state,sensationalist,spy,terrorist - - -type: keyword - --- - -*`misp.threat_actor.name`*:: -+ --- -The name used to identify this Threat Actor or Threat Actor group. - - -type: keyword - --- - -*`misp.threat_actor.description`*:: -+ --- -A description that provides more details and context about the Threat Actor. - - -type: text - --- - -*`misp.threat_actor.aliases`*:: -+ --- -A list of other names that this Threat Actor is believed to use. - - -type: text - --- - -*`misp.threat_actor.roles`*:: -+ --- -This is a list of roles the Threat Actor plays. Open Vocab - threat-actor-role-ov. agent,director,independent,sponsor,infrastructure-operator,infrastructure-architect,malware-author - - -type: text - --- - -*`misp.threat_actor.goals`*:: -+ --- -The high level goals of this Threat Actor, namely, what are they trying to do. - - -type: text - --- - -*`misp.threat_actor.sophistication`*:: -+ --- -The skill, specific knowledge, special training, or expertise a Threat Actor must have to perform the attack. Open Vocab - threat-actor-sophistication-ov. none,minimal,intermediate,advanced,strategic,expert,innovator - - -type: text - --- - -*`misp.threat_actor.resource_level`*:: -+ --- -This defines the organizational level at which this Threat Actor typically works. Open Vocab - attack-resource-level-ov. individual,club,contest,team,organization,government - - -type: text - --- - -*`misp.threat_actor.primary_motivation`*:: -+ --- -The primary reason, motivation, or purpose behind this Threat Actor. Open Vocab - attack-motivation-ov. accidental,coercion,dominance,ideology,notoriety,organizational-gain,personal-gain,personal-satisfaction,revenge,unpredictable - - -type: text - --- - -*`misp.threat_actor.secondary_motivations`*:: -+ --- -The secondary reasons, motivations, or purposes behind this Threat Actor. Open Vocab - attack-motivation-ov. accidental,coercion,dominance,ideology,notoriety,organizational-gain,personal-gain,personal-satisfaction,revenge,unpredictable - - -type: text - --- - -*`misp.threat_actor.personal_motivations`*:: -+ --- -The personal reasons, motivations, or purposes of the Threat Actor regardless of organizational goals. Open Vocab - attack-motivation-ov. accidental,coercion,dominance,ideology,notoriety,organizational-gain,personal-gain,personal-satisfaction,revenge,unpredictable - - -type: text - --- - -[float] -=== tool - -Tools are legitimate software that can be used by threat actors to perform attacks. - - - -*`misp.tool.id`*:: -+ --- -Identifier of the Tool. - - -type: keyword - --- - -*`misp.tool.labels`*:: -+ --- -The kind(s) of tool(s) being described. Open Vocab - tool-label-ov. denial-of-service,exploitation,information-gathering,network-capture,credential-exploitation,remote-access,vulnerability-scanning - - -type: keyword - --- - -*`misp.tool.name`*:: -+ --- -The name used to identify the Tool. - - -type: keyword - --- - -*`misp.tool.description`*:: -+ --- -A description that provides more details and context about the Tool. - - -type: text - --- - -*`misp.tool.tool_version`*:: -+ --- -The version identifier associated with the Tool. - - -type: keyword - --- - -*`misp.tool.kill_chain_phases`*:: -+ --- -The list of kill chain phases for which this Tool instance can be used. - - -type: text - --- - -[float] -=== vulnerability - -A Vulnerability is a mistake in software that can be directly used by a hacker to gain access to a system or network. - - - -*`misp.vulnerability.id`*:: -+ --- -Identifier of the Vulnerability. - - -type: keyword - --- - -*`misp.vulnerability.name`*:: -+ --- -The name used to identify the Vulnerability. - - -type: keyword - --- - -*`misp.vulnerability.description`*:: -+ --- -A description that provides more details and context about the Vulnerability. - - -type: text - --- - -[[exported-fields-mongodb]] -== mongodb fields - -Module for parsing MongoDB log files. - - - -[float] -=== mongodb - -Fields from MongoDB logs. - - - -[float] -=== log - -Contains fields from MongoDB logs. - - - -*`mongodb.log.component`*:: -+ --- -Functional categorization of message - - -type: keyword - -example: COMMAND - --- - -*`mongodb.log.context`*:: -+ --- -Context of message - - -type: keyword - -example: initandlisten - --- - -*`mongodb.log.severity`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`mongodb.log.message`*:: -+ --- -type: alias - -alias to: message - --- - -*`mongodb.log.id`*:: -+ --- -Integer representing the unique identifier of the log statement - - -type: long - -example: 4615611 - --- - -[[exported-fields-mssql]] -== mssql fields - -MS SQL Filebeat Module - - -[float] -=== mssql - -Fields from the MSSQL log files - - -[float] -=== log - -Common log fields - - -*`mssql.log.origin`*:: -+ --- -Origin of the message, usually the server but it can also be a recovery process - -type: keyword - --- - -[[exported-fields-mysql]] -== MySQL fields - -Module for parsing the MySQL log files. - - - -[float] -=== mysql - -Fields from the MySQL log files. - - - -*`mysql.thread_id`*:: -+ --- -The connection or thread ID for the query. - - -type: long - --- - -[float] -=== error - -Contains fields from the MySQL error logs. - - - -*`mysql.error.thread_id`*:: -+ --- -type: alias - -alias to: mysql.thread_id - --- - -*`mysql.error.level`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`mysql.error.message`*:: -+ --- -type: alias - -alias to: message - --- - -[float] -=== slowlog - -Contains fields from the MySQL slow logs. - - - -*`mysql.slowlog.lock_time.sec`*:: -+ --- -The amount of time the query waited for the lock to be available. The value is in seconds, as a floating point number. - - -type: float - --- - -*`mysql.slowlog.rows_sent`*:: -+ --- -The number of rows returned by the query. - - -type: long - --- - -*`mysql.slowlog.rows_examined`*:: -+ --- -The number of rows scanned by the query. - - -type: long - --- - -*`mysql.slowlog.rows_affected`*:: -+ --- -The number of rows modified by the query. - - -type: long - --- - -*`mysql.slowlog.bytes_sent`*:: -+ --- -The number of bytes sent to client. - - -type: long - -format: bytes - --- - -*`mysql.slowlog.bytes_received`*:: -+ --- -The number of bytes received from client. - - -type: long - -format: bytes - --- - -*`mysql.slowlog.query`*:: -+ --- -The slow query. - - --- - -*`mysql.slowlog.id`*:: -+ --- -type: alias - -alias to: mysql.thread_id - --- - -*`mysql.slowlog.schema`*:: -+ --- -The schema where the slow query was executed. - - -type: keyword - --- - -*`mysql.slowlog.current_user`*:: -+ --- -Current authenticated user, used to determine access privileges. Can differ from the value for user. - - -type: keyword - --- - -*`mysql.slowlog.last_errno`*:: -+ --- -Last SQL error seen. - - -type: keyword - --- - -*`mysql.slowlog.killed`*:: -+ --- -Code of the reason if the query was killed. - - -type: keyword - --- - -*`mysql.slowlog.query_cache_hit`*:: -+ --- -Whether the query cache was hit. - - -type: boolean - --- - -*`mysql.slowlog.tmp_table`*:: -+ --- -Whether a temporary table was used to resolve the query. - - -type: boolean - --- - -*`mysql.slowlog.tmp_table_on_disk`*:: -+ --- -Whether the query needed temporary tables on disk. - - -type: boolean - --- - -*`mysql.slowlog.tmp_tables`*:: -+ --- -Number of temporary tables created for this query - - -type: long - --- - -*`mysql.slowlog.tmp_disk_tables`*:: -+ --- -Number of temporary tables created on disk for this query. - - -type: long - --- - -*`mysql.slowlog.tmp_table_sizes`*:: -+ --- -Size of temporary tables created for this query. - -type: long - -format: bytes - --- - -*`mysql.slowlog.filesort`*:: -+ --- -Whether filesort optimization was used. - - -type: boolean - --- - -*`mysql.slowlog.filesort_on_disk`*:: -+ --- -Whether filesort optimization was used and it needed temporary tables on disk. - - -type: boolean - --- - -*`mysql.slowlog.priority_queue`*:: -+ --- -Whether a priority queue was used for filesort. - - -type: boolean - --- - -*`mysql.slowlog.full_scan`*:: -+ --- -Whether a full table scan was needed for the slow query. - - -type: boolean - --- - -*`mysql.slowlog.full_join`*:: -+ --- -Whether a full join was needed for the slow query (no indexes were used for joins). - - -type: boolean - --- - -*`mysql.slowlog.merge_passes`*:: -+ --- -Number of merge passes executed for the query. - - -type: long - --- - -*`mysql.slowlog.sort_merge_passes`*:: -+ --- -Number of merge passes that the sort algorithm has had to do. - - -type: long - --- - -*`mysql.slowlog.sort_range_count`*:: -+ --- -Number of sorts that were done using ranges. - - -type: long - --- - -*`mysql.slowlog.sort_rows`*:: -+ --- -Number of sorted rows. - - -type: long - --- - -*`mysql.slowlog.sort_scan_count`*:: -+ --- -Number of sorts that were done by scanning the table. - - -type: long - --- - -*`mysql.slowlog.log_slow_rate_type`*:: -+ --- -Type of slow log rate limit, it can be `session` if the rate limit is applied per session, or `query` if it applies per query. - - -type: keyword - --- - -*`mysql.slowlog.log_slow_rate_limit`*:: -+ --- -Slow log rate limit, a value of 100 means that one in a hundred queries or sessions are being logged. - - -type: keyword - --- - -*`mysql.slowlog.read_first`*:: -+ --- -The number of times the first entry in an index was read. - - -type: long - --- - -*`mysql.slowlog.read_last`*:: -+ --- -The number of times the last key in an index was read. - - -type: long - --- - -*`mysql.slowlog.read_key`*:: -+ --- -The number of requests to read a row based on a key. - - -type: long - --- - -*`mysql.slowlog.read_next`*:: -+ --- -The number of requests to read the next row in key order. - - -type: long - --- - -*`mysql.slowlog.read_prev`*:: -+ --- -The number of requests to read the previous row in key order. - - -type: long - --- - -*`mysql.slowlog.read_rnd`*:: -+ --- -The number of requests to read a row based on a fixed position. - - -type: long - --- - -*`mysql.slowlog.read_rnd_next`*:: -+ --- -The number of requests to read the next row in the data file. - - -type: long - --- - -[float] -=== innodb - -Contains fields relative to InnoDB engine - - - -*`mysql.slowlog.innodb.trx_id`*:: -+ --- -Transaction ID - - -type: keyword - --- - -*`mysql.slowlog.innodb.io_r_ops`*:: -+ --- -Number of page read operations. - - -type: long - --- - -*`mysql.slowlog.innodb.io_r_bytes`*:: -+ --- -Bytes read during page read operations. - - -type: long - -format: bytes - --- - -*`mysql.slowlog.innodb.io_r_wait.sec`*:: -+ --- -How long it took to read all needed data from storage. - - -type: long - --- - -*`mysql.slowlog.innodb.rec_lock_wait.sec`*:: -+ --- -How long the query waited for locks. - - -type: long - --- - -*`mysql.slowlog.innodb.queue_wait.sec`*:: -+ --- -How long the query waited to enter the InnoDB queue and to be executed once in the queue. - - -type: long - --- - -*`mysql.slowlog.innodb.pages_distinct`*:: -+ --- -Approximated count of pages accessed to execute the query. - - -type: long - --- - -*`mysql.slowlog.user`*:: -+ --- -type: alias - -alias to: user.name - --- - -*`mysql.slowlog.host`*:: -+ --- -type: alias - -alias to: source.domain - --- - -*`mysql.slowlog.ip`*:: -+ --- -type: alias - -alias to: source.ip - --- - -[[exported-fields-mysqlenterprise]] -== MySQL Enterprise fields - -MySQL Enterprise Audit module - - - -[float] -=== mysqlenterprise - -Fields from MySQL Enterprise Logs - - - -[float] -=== audit - -Module for parsing MySQL Enterprise Audit Logs - - - -*`mysqlenterprise.audit.class`*:: -+ --- -A string representing the event class. The class defines the type of event, when taken together with the event item that specifies the event subclass. - - -type: keyword - --- - -*`mysqlenterprise.audit.connection_id`*:: -+ --- -An integer representing the client connection identifier. This is the same as the value returned by the CONNECTION_ID() function within the session. - - -type: keyword - --- - -*`mysqlenterprise.audit.id`*:: -+ --- -An unsigned integer representing an event ID. - - -type: keyword - --- - -*`mysqlenterprise.audit.connection_data.connection_type`*:: -+ --- -The security state of the connection to the server. Permitted values are tcp/ip (TCP/IP connection established without encryption), ssl (TCP/IP connection established with encryption), socket (Unix socket file connection), named_pipe (Windows named pipe connection), and shared_memory (Windows shared memory connection). - - -type: keyword - --- - -*`mysqlenterprise.audit.connection_data.status`*:: -+ --- -An integer representing the command status: 0 for success, nonzero if an error occurred. - - -type: long - --- - -*`mysqlenterprise.audit.connection_data.db`*:: -+ --- -A string representing a database name. For connection_data, it is the default database. For table_access_data, it is the table database. - - -type: keyword - --- - -*`mysqlenterprise.audit.connection_data.connection_attributes`*:: -+ --- -Connection attributes that might be passed by different MySQL Clients. - - -type: flattened - --- - -*`mysqlenterprise.audit.general_data.command`*:: -+ --- -A string representing the type of instruction that generated the audit event, such as a command that the server received from a client. - - -type: keyword - --- - -*`mysqlenterprise.audit.general_data.sql_command`*:: -+ --- -A string that indicates the SQL statement type. - - -type: keyword - --- - -*`mysqlenterprise.audit.general_data.query`*:: -+ --- -A string representing the text of an SQL statement. The value can be empty. Long values may be truncated. The string, like the audit log file itself, is written using UTF-8 (up to 4 bytes per character), so the value may be the result of conversion. - - -type: keyword - --- - -*`mysqlenterprise.audit.general_data.status`*:: -+ --- -An integer representing the command status: 0 for success, nonzero if an error occurred. This is the same as the value of the mysql_errno() C API function. - - -type: long - --- - -*`mysqlenterprise.audit.login.user`*:: -+ --- -A string representing the information indicating how a client connected to the server. - - -type: keyword - --- - -*`mysqlenterprise.audit.login.proxy`*:: -+ --- -A string representing the proxy user. The value is empty if user proxying is not in effect. - - -type: keyword - --- - -*`mysqlenterprise.audit.shutdown_data.server_id`*:: -+ --- -An integer representing the server ID. This is the same as the value of the server_id system variable. - - -type: keyword - --- - -*`mysqlenterprise.audit.startup_data.server_id`*:: -+ --- -An integer representing the server ID. This is the same as the value of the server_id system variable. - - -type: keyword - --- - -*`mysqlenterprise.audit.startup_data.mysql_version`*:: -+ --- -An integer representing the server ID. This is the same as the value of the server_id system variable. - - -type: keyword - --- - -*`mysqlenterprise.audit.table_access_data.db`*:: -+ --- -A string representing a database name. For connection_data, it is the default database. For table_access_data, it is the table database. - - -type: keyword - --- - -*`mysqlenterprise.audit.table_access_data.table`*:: -+ --- -A string representing a table name. - - -type: keyword - --- - -*`mysqlenterprise.audit.table_access_data.query`*:: -+ --- -A string representing the text of an SQL statement. The value can be empty. Long values may be truncated. The string, like the audit log file itself, is written using UTF-8 (up to 4 bytes per character), so the value may be the result of conversion. - - -type: keyword - --- - -*`mysqlenterprise.audit.table_access_data.sql_command`*:: -+ --- -A string that indicates the SQL statement type. - - -type: keyword - --- - -*`mysqlenterprise.audit.account.user`*:: -+ --- -A string representing the user that the server authenticated the client as. This is the user name that the server uses for privilege checking. - - -type: keyword - --- - -*`mysqlenterprise.audit.account.host`*:: -+ --- -A string representing the client host name. - - -type: keyword - --- - -*`mysqlenterprise.audit.login.os`*:: -+ --- -A string representing the external user name used during the authentication process, as set by the plugin used to authenticate the client. - - -type: keyword - --- - -[[exported-fields-nats]] -== NATS fields - -Module for parsing NATS log files. - - - -[float] -=== nats - -Fields from NATS logs. - - - -[float] -=== log - -Nats log files - - - -[float] -=== client - -Fields from NATS logs client. - - - -*`nats.log.client.id`*:: -+ --- -The id of the client - - -type: integer - --- - -[float] -=== msg - -Fields from NATS logs message. - - - -*`nats.log.msg.bytes`*:: -+ --- -Size of the payload in bytes - - -type: long - -format: bytes - --- - -*`nats.log.msg.type`*:: -+ --- -The protocol message type - - -type: keyword - --- - -*`nats.log.msg.subject`*:: -+ --- -Subject name this message was received on - - -type: keyword - --- - -*`nats.log.msg.sid`*:: -+ --- -The unique alphanumeric subscription ID of the subject - - -type: integer - --- - -*`nats.log.msg.reply_to`*:: -+ --- -The inbox subject on which the publisher is listening for responses - - -type: keyword - --- - -*`nats.log.msg.max_messages`*:: -+ --- -An optional number of messages to wait for before automatically unsubscribing - - -type: integer - --- - -*`nats.log.msg.error.message`*:: -+ --- -Details about the error occurred - - -type: text - --- - -*`nats.log.msg.queue_group`*:: -+ --- -The queue group which subscriber will join - - -type: text - --- - -[[exported-fields-netflow]] -== NetFlow fields - -Fields from NetFlow and IPFIX flows. - - - -[float] -=== netflow - -Fields from NetFlow and IPFIX. - - - -*`netflow.type`*:: -+ --- -The type of NetFlow record described by this event. - - -type: keyword - --- - -[float] -=== exporter - -Metadata related to the exporter device that generated this record. - - - -*`netflow.exporter.address`*:: -+ --- -Exporter's network address in IP:port format. - - -type: keyword - --- - -*`netflow.exporter.source_id`*:: -+ --- -Observation domain ID to which this record belongs. - - -type: long - --- - -*`netflow.exporter.timestamp`*:: -+ --- -Time and date of export. - - -type: date - --- - -*`netflow.exporter.uptime_millis`*:: -+ --- -How long the exporter process has been running, in milliseconds. - - -type: long - --- - -*`netflow.exporter.version`*:: -+ --- -NetFlow version used. - - -type: integer - --- - -*`netflow.absolute_error`*:: -+ --- -type: double - --- - -*`netflow.address_pool_high_threshold`*:: -+ --- -type: long - --- - -*`netflow.address_pool_low_threshold`*:: -+ --- -type: long - --- - -*`netflow.address_port_mapping_high_threshold`*:: -+ --- -type: long - --- - -*`netflow.address_port_mapping_low_threshold`*:: -+ --- -type: long - --- - -*`netflow.address_port_mapping_per_user_high_threshold`*:: -+ --- -type: long - --- - -*`netflow.afc_protocol`*:: -+ --- -type: integer - --- - -*`netflow.afc_protocol_name`*:: -+ --- -type: keyword - --- - -*`netflow.anonymization_flags`*:: -+ --- -type: integer - --- - -*`netflow.anonymization_technique`*:: -+ --- -type: integer - --- - -*`netflow.application_business-relevance`*:: -+ --- -type: long - --- - -*`netflow.application_category_name`*:: -+ --- -type: keyword - --- - -*`netflow.application_description`*:: -+ --- -type: keyword - --- - -*`netflow.application_group_name`*:: -+ --- -type: keyword - --- - -*`netflow.application_http_uri_statistics`*:: -+ --- -type: short - --- - -*`netflow.application_http_user-agent`*:: -+ --- -type: short - --- - -*`netflow.application_id`*:: -+ --- -type: short - --- - -*`netflow.application_name`*:: -+ --- -type: keyword - --- - -*`netflow.application_sub_category_name`*:: -+ --- -type: keyword - --- - -*`netflow.application_traffic-class`*:: -+ --- -type: long - --- - -*`netflow.art_client_network_time_maximum`*:: -+ --- -type: long - --- - -*`netflow.art_client_network_time_minimum`*:: -+ --- -type: long - --- - -*`netflow.art_client_network_time_sum`*:: -+ --- -type: long - --- - -*`netflow.art_clientpackets`*:: -+ --- -type: long - --- - -*`netflow.art_count_late_responses`*:: -+ --- -type: long - --- - -*`netflow.art_count_new_connections`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses_histogram_bucket1`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses_histogram_bucket2`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses_histogram_bucket3`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses_histogram_bucket4`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses_histogram_bucket5`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses_histogram_bucket6`*:: -+ --- -type: long - --- - -*`netflow.art_count_responses_histogram_bucket7`*:: -+ --- -type: long - --- - -*`netflow.art_count_retransmissions`*:: -+ --- -type: long - --- - -*`netflow.art_count_transactions`*:: -+ --- -type: long - --- - -*`netflow.art_network_time_maximum`*:: -+ --- -type: long - --- - -*`netflow.art_network_time_minimum`*:: -+ --- -type: long - --- - -*`netflow.art_network_time_sum`*:: -+ --- -type: long - --- - -*`netflow.art_response_time_maximum`*:: -+ --- -type: long - --- - -*`netflow.art_response_time_minimum`*:: -+ --- -type: long - --- - -*`netflow.art_response_time_sum`*:: -+ --- -type: long - --- - -*`netflow.art_server_network_time_maximum`*:: -+ --- -type: long - --- - -*`netflow.art_server_network_time_minimum`*:: -+ --- -type: long - --- - -*`netflow.art_server_network_time_sum`*:: -+ --- -type: long - --- - -*`netflow.art_server_response_time_maximum`*:: -+ --- -type: long - --- - -*`netflow.art_server_response_time_minimum`*:: -+ --- -type: long - --- - -*`netflow.art_server_response_time_sum`*:: -+ --- -type: long - --- - -*`netflow.art_serverpackets`*:: -+ --- -type: long - --- - -*`netflow.art_total_response_time_maximum`*:: -+ --- -type: long - --- - -*`netflow.art_total_response_time_minimum`*:: -+ --- -type: long - --- - -*`netflow.art_total_response_time_sum`*:: -+ --- -type: long - --- - -*`netflow.art_total_transaction_time_maximum`*:: -+ --- -type: long - --- - -*`netflow.art_total_transaction_time_minimum`*:: -+ --- -type: long - --- - -*`netflow.art_total_transaction_time_sum`*:: -+ --- -type: long - --- - -*`netflow.assembled_fragment_count`*:: -+ --- -type: long - --- - -*`netflow.audit_counter`*:: -+ --- -type: long - --- - -*`netflow.average_interarrival_time`*:: -+ --- -type: long - --- - -*`netflow.bgp_destination_as_number`*:: -+ --- -type: long - --- - -*`netflow.bgp_next_adjacent_as_number`*:: -+ --- -type: long - --- - -*`netflow.bgp_next_hop_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.bgp_next_hop_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.bgp_prev_adjacent_as_number`*:: -+ --- -type: long - --- - -*`netflow.bgp_source_as_number`*:: -+ --- -type: long - --- - -*`netflow.bgp_validity_state`*:: -+ --- -type: short - --- - -*`netflow.biflow_direction`*:: -+ --- -type: short - --- - -*`netflow.bind_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.bind_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.class_id`*:: -+ --- -type: long - --- - -*`netflow.class_name`*:: -+ --- -type: keyword - --- - -*`netflow.classification_engine_id`*:: -+ --- -type: short - --- - -*`netflow.collection_time_milliseconds`*:: -+ --- -type: date - --- - -*`netflow.collector_certificate`*:: -+ --- -type: short - --- - -*`netflow.collector_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.collector_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.collector_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.common_properties_id`*:: -+ --- -type: long - --- - -*`netflow.confidence_level`*:: -+ --- -type: double - --- - -*`netflow.conn_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.conn_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.connection_sum_duration_seconds`*:: -+ --- -type: long - --- - -*`netflow.connection_transaction_id`*:: -+ --- -type: long - --- - -*`netflow.conntrack_id`*:: -+ --- -type: long - --- - -*`netflow.data_byte_count`*:: -+ --- -type: long - --- - -*`netflow.data_link_frame_section`*:: -+ --- -type: short - --- - -*`netflow.data_link_frame_size`*:: -+ --- -type: integer - --- - -*`netflow.data_link_frame_type`*:: -+ --- -type: integer - --- - -*`netflow.data_records_reliability`*:: -+ --- -type: boolean - --- - -*`netflow.delta_flow_count`*:: -+ --- -type: long - --- - -*`netflow.destination_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.destination_ipv4_prefix`*:: -+ --- -type: ip - --- - -*`netflow.destination_ipv4_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.destination_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.destination_ipv6_prefix`*:: -+ --- -type: ip - --- - -*`netflow.destination_ipv6_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.destination_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.destination_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.digest_hash_value`*:: -+ --- -type: long - --- - -*`netflow.distinct_count_of_destination_ip_address`*:: -+ --- -type: long - --- - -*`netflow.distinct_count_of_destination_ipv4_address`*:: -+ --- -type: long - --- - -*`netflow.distinct_count_of_destination_ipv6_address`*:: -+ --- -type: long - --- - -*`netflow.distinct_count_of_source_ip_address`*:: -+ --- -type: long - --- - -*`netflow.distinct_count_of_source_ipv4_address`*:: -+ --- -type: long - --- - -*`netflow.distinct_count_of_source_ipv6_address`*:: -+ --- -type: long - --- - -*`netflow.dns_authoritative`*:: -+ --- -type: short - --- - -*`netflow.dns_cname`*:: -+ --- -type: keyword - --- - -*`netflow.dns_id`*:: -+ --- -type: integer - --- - -*`netflow.dns_mx_exchange`*:: -+ --- -type: keyword - --- - -*`netflow.dns_mx_preference`*:: -+ --- -type: integer - --- - -*`netflow.dns_nsd_name`*:: -+ --- -type: keyword - --- - -*`netflow.dns_nx_domain`*:: -+ --- -type: short - --- - -*`netflow.dns_ptrd_name`*:: -+ --- -type: keyword - --- - -*`netflow.dns_qname`*:: -+ --- -type: keyword - --- - -*`netflow.dns_qr_type`*:: -+ --- -type: integer - --- - -*`netflow.dns_query_response`*:: -+ --- -type: short - --- - -*`netflow.dns_rr_section`*:: -+ --- -type: short - --- - -*`netflow.dns_soa_expire`*:: -+ --- -type: long - --- - -*`netflow.dns_soa_minimum`*:: -+ --- -type: long - --- - -*`netflow.dns_soa_refresh`*:: -+ --- -type: long - --- - -*`netflow.dns_soa_retry`*:: -+ --- -type: long - --- - -*`netflow.dns_soa_serial`*:: -+ --- -type: long - --- - -*`netflow.dns_soam_name`*:: -+ --- -type: keyword - --- - -*`netflow.dns_soar_name`*:: -+ --- -type: keyword - --- - -*`netflow.dns_srv_port`*:: -+ --- -type: integer - --- - -*`netflow.dns_srv_priority`*:: -+ --- -type: integer - --- - -*`netflow.dns_srv_target`*:: -+ --- -type: integer - --- - -*`netflow.dns_srv_weight`*:: -+ --- -type: integer - --- - -*`netflow.dns_ttl`*:: -+ --- -type: long - --- - -*`netflow.dns_txt_data`*:: -+ --- -type: keyword - --- - -*`netflow.dot1q_customer_dei`*:: -+ --- -type: boolean - --- - -*`netflow.dot1q_customer_destination_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.dot1q_customer_priority`*:: -+ --- -type: short - --- - -*`netflow.dot1q_customer_source_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.dot1q_customer_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.dot1q_dei`*:: -+ --- -type: boolean - --- - -*`netflow.dot1q_priority`*:: -+ --- -type: short - --- - -*`netflow.dot1q_service_instance_id`*:: -+ --- -type: long - --- - -*`netflow.dot1q_service_instance_priority`*:: -+ --- -type: short - --- - -*`netflow.dot1q_service_instance_tag`*:: -+ --- -type: short - --- - -*`netflow.dot1q_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.dropped_layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.dropped_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.dropped_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.dropped_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.dropped_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.dropped_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.dst_traffic_index`*:: -+ --- -type: long - --- - -*`netflow.egress_broadcast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.egress_interface`*:: -+ --- -type: long - --- - -*`netflow.egress_interface_type`*:: -+ --- -type: long - --- - -*`netflow.egress_physical_interface`*:: -+ --- -type: long - --- - -*`netflow.egress_unicast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.egress_vrfid`*:: -+ --- -type: long - --- - -*`netflow.encrypted_technology`*:: -+ --- -type: keyword - --- - -*`netflow.engine_id`*:: -+ --- -type: short - --- - -*`netflow.engine_type`*:: -+ --- -type: short - --- - -*`netflow.ethernet_header_length`*:: -+ --- -type: short - --- - -*`netflow.ethernet_payload_length`*:: -+ --- -type: integer - --- - -*`netflow.ethernet_total_length`*:: -+ --- -type: integer - --- - -*`netflow.ethernet_type`*:: -+ --- -type: integer - --- - -*`netflow.expired_fragment_count`*:: -+ --- -type: long - --- - -*`netflow.export_interface`*:: -+ --- -type: long - --- - -*`netflow.export_protocol_version`*:: -+ --- -type: short - --- - -*`netflow.export_sctp_stream_id`*:: -+ --- -type: integer - --- - -*`netflow.export_transport_protocol`*:: -+ --- -type: short - --- - -*`netflow.exported_flow_record_total_count`*:: -+ --- -type: long - --- - -*`netflow.exported_message_total_count`*:: -+ --- -type: long - --- - -*`netflow.exported_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.exporter_certificate`*:: -+ --- -type: short - --- - -*`netflow.exporter_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.exporter_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.exporter_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.exporting_process_id`*:: -+ --- -type: long - --- - -*`netflow.external_address_realm`*:: -+ --- -type: short - --- - -*`netflow.firewall_event`*:: -+ --- -type: short - --- - -*`netflow.first_eight_non_empty_packet_directions`*:: -+ --- -type: short - --- - -*`netflow.first_non_empty_packet_size`*:: -+ --- -type: integer - --- - -*`netflow.first_packet_banner`*:: -+ --- -type: keyword - --- - -*`netflow.flags_and_sampler_id`*:: -+ --- -type: long - --- - -*`netflow.flow_active_timeout`*:: -+ --- -type: integer - --- - -*`netflow.flow_attributes`*:: -+ --- -type: integer - --- - -*`netflow.flow_direction`*:: -+ --- -type: short - --- - -*`netflow.flow_duration_microseconds`*:: -+ --- -type: long - --- - -*`netflow.flow_duration_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.flow_end_delta_microseconds`*:: -+ --- -type: long - --- - -*`netflow.flow_end_microseconds`*:: -+ --- -type: date - --- - -*`netflow.flow_end_milliseconds`*:: -+ --- -type: date - --- - -*`netflow.flow_end_nanoseconds`*:: -+ --- -type: date - --- - -*`netflow.flow_end_reason`*:: -+ --- -type: short - --- - -*`netflow.flow_end_seconds`*:: -+ --- -type: date - --- - -*`netflow.flow_end_sys_up_time`*:: -+ --- -type: long - --- - -*`netflow.flow_id`*:: -+ --- -type: long - --- - -*`netflow.flow_idle_timeout`*:: -+ --- -type: integer - --- - -*`netflow.flow_key_indicator`*:: -+ --- -type: long - --- - -*`netflow.flow_label_ipv6`*:: -+ --- -type: long - --- - -*`netflow.flow_sampling_time_interval`*:: -+ --- -type: long - --- - -*`netflow.flow_sampling_time_spacing`*:: -+ --- -type: long - --- - -*`netflow.flow_selected_flow_delta_count`*:: -+ --- -type: long - --- - -*`netflow.flow_selected_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.flow_selected_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.flow_selector_algorithm`*:: -+ --- -type: integer - --- - -*`netflow.flow_start_delta_microseconds`*:: -+ --- -type: long - --- - -*`netflow.flow_start_microseconds`*:: -+ --- -type: date - --- - -*`netflow.flow_start_milliseconds`*:: -+ --- -type: date - --- - -*`netflow.flow_start_nanoseconds`*:: -+ --- -type: date - --- - -*`netflow.flow_start_seconds`*:: -+ --- -type: date - --- - -*`netflow.flow_start_sys_up_time`*:: -+ --- -type: long - --- - -*`netflow.flow_table_flush_event_count`*:: -+ --- -type: long - --- - -*`netflow.flow_table_peak_count`*:: -+ --- -type: long - --- - -*`netflow.forwarding_status`*:: -+ --- -type: short - --- - -*`netflow.fragment_flags`*:: -+ --- -type: short - --- - -*`netflow.fragment_identification`*:: -+ --- -type: long - --- - -*`netflow.fragment_offset`*:: -+ --- -type: integer - --- - -*`netflow.fw_blackout_secs`*:: -+ --- -type: long - --- - -*`netflow.fw_configured_value`*:: -+ --- -type: long - --- - -*`netflow.fw_cts_src_sgt`*:: -+ --- -type: long - --- - -*`netflow.fw_event_level`*:: -+ --- -type: long - --- - -*`netflow.fw_event_level_id`*:: -+ --- -type: long - --- - -*`netflow.fw_ext_event`*:: -+ --- -type: integer - --- - -*`netflow.fw_ext_event_alt`*:: -+ --- -type: long - --- - -*`netflow.fw_ext_event_desc`*:: -+ --- -type: keyword - --- - -*`netflow.fw_half_open_count`*:: -+ --- -type: long - --- - -*`netflow.fw_half_open_high`*:: -+ --- -type: long - --- - -*`netflow.fw_half_open_rate`*:: -+ --- -type: long - --- - -*`netflow.fw_max_sessions`*:: -+ --- -type: long - --- - -*`netflow.fw_rule`*:: -+ --- -type: keyword - --- - -*`netflow.fw_summary_pkt_count`*:: -+ --- -type: long - --- - -*`netflow.fw_zone_pair_id`*:: -+ --- -type: long - --- - -*`netflow.fw_zone_pair_name`*:: -+ --- -type: long - --- - -*`netflow.global_address_mapping_high_threshold`*:: -+ --- -type: long - --- - -*`netflow.gre_key`*:: -+ --- -type: long - --- - -*`netflow.hash_digest_output`*:: -+ --- -type: boolean - --- - -*`netflow.hash_flow_domain`*:: -+ --- -type: integer - --- - -*`netflow.hash_initialiser_value`*:: -+ --- -type: long - --- - -*`netflow.hash_ip_payload_offset`*:: -+ --- -type: long - --- - -*`netflow.hash_ip_payload_size`*:: -+ --- -type: long - --- - -*`netflow.hash_output_range_max`*:: -+ --- -type: long - --- - -*`netflow.hash_output_range_min`*:: -+ --- -type: long - --- - -*`netflow.hash_selected_range_max`*:: -+ --- -type: long - --- - -*`netflow.hash_selected_range_min`*:: -+ --- -type: long - --- - -*`netflow.http_content_type`*:: -+ --- -type: keyword - --- - -*`netflow.http_message_version`*:: -+ --- -type: keyword - --- - -*`netflow.http_reason_phrase`*:: -+ --- -type: keyword - --- - -*`netflow.http_request_host`*:: -+ --- -type: keyword - --- - -*`netflow.http_request_method`*:: -+ --- -type: keyword - --- - -*`netflow.http_request_target`*:: -+ --- -type: keyword - --- - -*`netflow.http_status_code`*:: -+ --- -type: integer - --- - -*`netflow.http_user_agent`*:: -+ --- -type: keyword - --- - -*`netflow.icmp_code_ipv4`*:: -+ --- -type: short - --- - -*`netflow.icmp_code_ipv6`*:: -+ --- -type: short - --- - -*`netflow.icmp_type_code_ipv4`*:: -+ --- -type: integer - --- - -*`netflow.icmp_type_code_ipv6`*:: -+ --- -type: integer - --- - -*`netflow.icmp_type_ipv4`*:: -+ --- -type: short - --- - -*`netflow.icmp_type_ipv6`*:: -+ --- -type: short - --- - -*`netflow.igmp_type`*:: -+ --- -type: short - --- - -*`netflow.ignored_data_record_total_count`*:: -+ --- -type: long - --- - -*`netflow.ignored_layer2_frame_total_count`*:: -+ --- -type: long - --- - -*`netflow.ignored_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.ignored_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.ignored_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.information_element_data_type`*:: -+ --- -type: short - --- - -*`netflow.information_element_description`*:: -+ --- -type: keyword - --- - -*`netflow.information_element_id`*:: -+ --- -type: integer - --- - -*`netflow.information_element_index`*:: -+ --- -type: integer - --- - -*`netflow.information_element_name`*:: -+ --- -type: keyword - --- - -*`netflow.information_element_range_begin`*:: -+ --- -type: long - --- - -*`netflow.information_element_range_end`*:: -+ --- -type: long - --- - -*`netflow.information_element_semantics`*:: -+ --- -type: short - --- - -*`netflow.information_element_units`*:: -+ --- -type: integer - --- - -*`netflow.ingress_broadcast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.ingress_interface`*:: -+ --- -type: long - --- - -*`netflow.ingress_interface_type`*:: -+ --- -type: long - --- - -*`netflow.ingress_multicast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.ingress_physical_interface`*:: -+ --- -type: long - --- - -*`netflow.ingress_unicast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.ingress_vrfid`*:: -+ --- -type: long - --- - -*`netflow.initial_tcp_flags`*:: -+ --- -type: short - --- - -*`netflow.initiator_octets`*:: -+ --- -type: long - --- - -*`netflow.initiator_packets`*:: -+ --- -type: long - --- - -*`netflow.interface_description`*:: -+ --- -type: keyword - --- - -*`netflow.interface_name`*:: -+ --- -type: keyword - --- - -*`netflow.intermediate_process_id`*:: -+ --- -type: long - --- - -*`netflow.internal_address_realm`*:: -+ --- -type: short - --- - -*`netflow.ip_class_of_service`*:: -+ --- -type: short - --- - -*`netflow.ip_diff_serv_code_point`*:: -+ --- -type: short - --- - -*`netflow.ip_header_length`*:: -+ --- -type: short - --- - -*`netflow.ip_header_packet_section`*:: -+ --- -type: short - --- - -*`netflow.ip_next_hop_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.ip_next_hop_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.ip_payload_length`*:: -+ --- -type: long - --- - -*`netflow.ip_payload_packet_section`*:: -+ --- -type: short - --- - -*`netflow.ip_precedence`*:: -+ --- -type: short - --- - -*`netflow.ip_sec_spi`*:: -+ --- -type: long - --- - -*`netflow.ip_total_length`*:: -+ --- -type: long - --- - -*`netflow.ip_ttl`*:: -+ --- -type: short - --- - -*`netflow.ip_version`*:: -+ --- -type: short - --- - -*`netflow.ipv4_ihl`*:: -+ --- -type: short - --- - -*`netflow.ipv4_options`*:: -+ --- -type: long - --- - -*`netflow.ipv4_router_sc`*:: -+ --- -type: ip - --- - -*`netflow.ipv6_extension_headers`*:: -+ --- -type: long - --- - -*`netflow.is_multicast`*:: -+ --- -type: short - --- - -*`netflow.ixia_browser_id`*:: -+ --- -type: short - --- - -*`netflow.ixia_browser_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_device_id`*:: -+ --- -type: short - --- - -*`netflow.ixia_device_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dns_answer`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dns_classes`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dns_query`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dns_record_txt`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dst_as_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dst_city_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dst_country_code`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dst_country_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dst_latitude`*:: -+ --- -type: float - --- - -*`netflow.ixia_dst_longitude`*:: -+ --- -type: float - --- - -*`netflow.ixia_dst_region_code`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_dst_region_node`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_encrypt_cipher`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_encrypt_key_length`*:: -+ --- -type: integer - --- - -*`netflow.ixia_encrypt_type`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_http_host_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_http_uri`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_http_user_agent`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_imsi_subscriber`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_l7_app_id`*:: -+ --- -type: long - --- - -*`netflow.ixia_l7_app_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_latency`*:: -+ --- -type: long - --- - -*`netflow.ixia_rev_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.ixia_rev_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.ixia_src_as_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_src_city_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_src_country_code`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_src_country_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_src_latitude`*:: -+ --- -type: float - --- - -*`netflow.ixia_src_longitude`*:: -+ --- -type: float - --- - -*`netflow.ixia_src_region_code`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_src_region_name`*:: -+ --- -type: keyword - --- - -*`netflow.ixia_threat_ipv4`*:: -+ --- -type: ip - --- - -*`netflow.ixia_threat_ipv6`*:: -+ --- -type: ip - --- - -*`netflow.ixia_threat_type`*:: -+ --- -type: keyword - --- - -*`netflow.large_packet_count`*:: -+ --- -type: long - --- - -*`netflow.layer2_frame_delta_count`*:: -+ --- -type: long - --- - -*`netflow.layer2_frame_total_count`*:: -+ --- -type: long - --- - -*`netflow.layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.layer2_octet_delta_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.layer2_octet_total_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.layer2_segment_id`*:: -+ --- -type: long - --- - -*`netflow.layer2packet_section_data`*:: -+ --- -type: short - --- - -*`netflow.layer2packet_section_offset`*:: -+ --- -type: integer - --- - -*`netflow.layer2packet_section_size`*:: -+ --- -type: integer - --- - -*`netflow.line_card_id`*:: -+ --- -type: long - --- - -*`netflow.log_op`*:: -+ --- -type: short - --- - -*`netflow.lower_ci_limit`*:: -+ --- -type: double - --- - -*`netflow.mark`*:: -+ --- -type: long - --- - -*`netflow.max_bib_entries`*:: -+ --- -type: long - --- - -*`netflow.max_entries_per_user`*:: -+ --- -type: long - --- - -*`netflow.max_export_seconds`*:: -+ --- -type: date - --- - -*`netflow.max_flow_end_microseconds`*:: -+ --- -type: date - --- - -*`netflow.max_flow_end_milliseconds`*:: -+ --- -type: date - --- - -*`netflow.max_flow_end_nanoseconds`*:: -+ --- -type: date - --- - -*`netflow.max_flow_end_seconds`*:: -+ --- -type: date - --- - -*`netflow.max_fragments_pending_reassembly`*:: -+ --- -type: long - --- - -*`netflow.max_packet_size`*:: -+ --- -type: integer - --- - -*`netflow.max_session_entries`*:: -+ --- -type: long - --- - -*`netflow.max_subscribers`*:: -+ --- -type: long - --- - -*`netflow.maximum_ip_total_length`*:: -+ --- -type: long - --- - -*`netflow.maximum_layer2_total_length`*:: -+ --- -type: long - --- - -*`netflow.maximum_ttl`*:: -+ --- -type: short - --- - -*`netflow.mean_flow_rate`*:: -+ --- -type: long - --- - -*`netflow.mean_packet_rate`*:: -+ --- -type: long - --- - -*`netflow.message_md5_checksum`*:: -+ --- -type: short - --- - -*`netflow.message_scope`*:: -+ --- -type: short - --- - -*`netflow.metering_process_id`*:: -+ --- -type: long - --- - -*`netflow.metro_evc_id`*:: -+ --- -type: keyword - --- - -*`netflow.metro_evc_type`*:: -+ --- -type: short - --- - -*`netflow.mib_capture_time_semantics`*:: -+ --- -type: short - --- - -*`netflow.mib_context_engine_id`*:: -+ --- -type: short - --- - -*`netflow.mib_context_name`*:: -+ --- -type: keyword - --- - -*`netflow.mib_index_indicator`*:: -+ --- -type: long - --- - -*`netflow.mib_module_name`*:: -+ --- -type: keyword - --- - -*`netflow.mib_object_description`*:: -+ --- -type: keyword - --- - -*`netflow.mib_object_identifier`*:: -+ --- -type: short - --- - -*`netflow.mib_object_name`*:: -+ --- -type: keyword - --- - -*`netflow.mib_object_syntax`*:: -+ --- -type: keyword - --- - -*`netflow.mib_object_value_bits`*:: -+ --- -type: short - --- - -*`netflow.mib_object_value_counter`*:: -+ --- -type: long - --- - -*`netflow.mib_object_value_gauge`*:: -+ --- -type: long - --- - -*`netflow.mib_object_value_integer`*:: -+ --- -type: integer - --- - -*`netflow.mib_object_value_ip_address`*:: -+ --- -type: ip - --- - -*`netflow.mib_object_value_octet_string`*:: -+ --- -type: short - --- - -*`netflow.mib_object_value_oid`*:: -+ --- -type: short - --- - -*`netflow.mib_object_value_time_ticks`*:: -+ --- -type: long - --- - -*`netflow.mib_object_value_unsigned`*:: -+ --- -type: long - --- - -*`netflow.mib_sub_identifier`*:: -+ --- -type: long - --- - -*`netflow.min_export_seconds`*:: -+ --- -type: date - --- - -*`netflow.min_flow_start_microseconds`*:: -+ --- -type: date - --- - -*`netflow.min_flow_start_milliseconds`*:: -+ --- -type: date - --- - -*`netflow.min_flow_start_nanoseconds`*:: -+ --- -type: date - --- - -*`netflow.min_flow_start_seconds`*:: -+ --- -type: date - --- - -*`netflow.minimum_ip_total_length`*:: -+ --- -type: long - --- - -*`netflow.minimum_layer2_total_length`*:: -+ --- -type: long - --- - -*`netflow.minimum_ttl`*:: -+ --- -type: short - --- - -*`netflow.mobile_imsi`*:: -+ --- -type: keyword - --- - -*`netflow.mobile_msisdn`*:: -+ --- -type: keyword - --- - -*`netflow.monitoring_interval_end_milli_seconds`*:: -+ --- -type: date - --- - -*`netflow.monitoring_interval_start_milli_seconds`*:: -+ --- -type: date - --- - -*`netflow.mpls_label_stack_depth`*:: -+ --- -type: long - --- - -*`netflow.mpls_label_stack_length`*:: -+ --- -type: long - --- - -*`netflow.mpls_label_stack_section`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section10`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section2`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section3`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section4`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section5`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section6`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section7`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section8`*:: -+ --- -type: short - --- - -*`netflow.mpls_label_stack_section9`*:: -+ --- -type: short - --- - -*`netflow.mpls_payload_length`*:: -+ --- -type: long - --- - -*`netflow.mpls_payload_packet_section`*:: -+ --- -type: short - --- - -*`netflow.mpls_top_label_exp`*:: -+ --- -type: short - --- - -*`netflow.mpls_top_label_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.mpls_top_label_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.mpls_top_label_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.mpls_top_label_stack_section`*:: -+ --- -type: short - --- - -*`netflow.mpls_top_label_ttl`*:: -+ --- -type: short - --- - -*`netflow.mpls_top_label_type`*:: -+ --- -type: short - --- - -*`netflow.mpls_vpn_route_distinguisher`*:: -+ --- -type: short - --- - -*`netflow.mptcp_address_id`*:: -+ --- -type: short - --- - -*`netflow.mptcp_flags`*:: -+ --- -type: short - --- - -*`netflow.mptcp_initial_data_sequence_number`*:: -+ --- -type: long - --- - -*`netflow.mptcp_maximum_segment_size`*:: -+ --- -type: integer - --- - -*`netflow.mptcp_receiver_token`*:: -+ --- -type: long - --- - -*`netflow.multicast_replication_factor`*:: -+ --- -type: long - --- - -*`netflow.nat_event`*:: -+ --- -type: short - --- - -*`netflow.nat_inside_svcid`*:: -+ --- -type: integer - --- - -*`netflow.nat_instance_id`*:: -+ --- -type: long - --- - -*`netflow.nat_originating_address_realm`*:: -+ --- -type: short - --- - -*`netflow.nat_outside_svcid`*:: -+ --- -type: integer - --- - -*`netflow.nat_pool_id`*:: -+ --- -type: long - --- - -*`netflow.nat_pool_name`*:: -+ --- -type: keyword - --- - -*`netflow.nat_quota_exceeded_event`*:: -+ --- -type: long - --- - -*`netflow.nat_sub_string`*:: -+ --- -type: keyword - --- - -*`netflow.nat_threshold_event`*:: -+ --- -type: long - --- - -*`netflow.nat_type`*:: -+ --- -type: short - --- - -*`netflow.netscale_ica_client_version`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_aaa_username`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_app_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_app_name_app_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_app_name_incarnation_number`*:: -+ --- -type: long - --- - -*`netflow.netscaler_app_template_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_app_unit_name_app_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_application_startup_duration`*:: -+ --- -type: long - --- - -*`netflow.netscaler_application_startup_time`*:: -+ --- -type: long - --- - -*`netflow.netscaler_cache_redir_client_connection_core_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_cache_redir_client_connection_transaction_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_client_rtt`*:: -+ --- -type: long - --- - -*`netflow.netscaler_connection_chain_hop_count`*:: -+ --- -type: long - --- - -*`netflow.netscaler_connection_chain_id`*:: -+ --- -type: short - --- - -*`netflow.netscaler_connection_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_current_license_consumed`*:: -+ --- -type: long - --- - -*`netflow.netscaler_db_clt_host_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_db_database_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_db_login_flags`*:: -+ --- -type: long - --- - -*`netflow.netscaler_db_protocol_name`*:: -+ --- -type: short - --- - -*`netflow.netscaler_db_req_string`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_db_req_type`*:: -+ --- -type: short - --- - -*`netflow.netscaler_db_resp_length`*:: -+ --- -type: long - --- - -*`netflow.netscaler_db_resp_status`*:: -+ --- -type: long - --- - -*`netflow.netscaler_db_resp_status_string`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_db_user_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_flow_flags`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_client_interaction_end_time`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_client_interaction_start_time`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_client_render_end_time`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_client_render_start_time`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_content_type`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_domain_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_authorization`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_cookie`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_forw_fb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_req_forw_lb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_req_host`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_method`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_rcv_fb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_req_rcv_lb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_req_referer`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_url`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_user_agent`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_via`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_req_xforwarded_for`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_res_forw_fb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_res_forw_lb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_res_location`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_res_rcv_fb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_res_rcv_lb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_res_set_cookie`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_res_set_cookie2`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_http_rsp_len`*:: -+ --- -type: long - --- - -*`netflow.netscaler_http_rsp_status`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_app_module_path`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_ica_app_process_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_application_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_ica_application_termination_time`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_application_termination_type`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_channel_id1`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id1_bytes`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id2`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id2_bytes`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id3`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id3_bytes`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id4`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id4_bytes`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id5`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_channel_id5_bytes`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_client_host_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_ica_client_ip`*:: -+ --- -type: ip - --- - -*`netflow.netscaler_ica_client_launcher`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_client_side_rto_count`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_client_side_window_size`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_client_type`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_clientside_delay`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_clientside_jitter`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_clientside_packets_retransmit`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_clientside_rtt`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_clientside_rx_bytes`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_clientside_srtt`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_clientside_tx_bytes`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_connection_priority`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_device_serial_no`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_domain_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_ica_flags`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_host_delay`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_l7_client_latency`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_l7_server_latency`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_launch_mechanism`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_network_update_end_time`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_network_update_start_time`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_rtt`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_server_name`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_ica_server_side_rto_count`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_server_side_window_size`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_serverside_delay`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_serverside_jitter`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_serverside_packets_retransmit`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_ica_serverside_rtt`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_serverside_srtt`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_session_end_time`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_session_guid`*:: -+ --- -type: short - --- - -*`netflow.netscaler_ica_session_reconnects`*:: -+ --- -type: short - --- - -*`netflow.netscaler_ica_session_setup_time`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_session_update_begin_sec`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_session_update_end_sec`*:: -+ --- -type: long - --- - -*`netflow.netscaler_ica_username`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_license_type`*:: -+ --- -type: short - --- - -*`netflow.netscaler_main_page_core_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_main_page_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_max_license_count`*:: -+ --- -type: long - --- - -*`netflow.netscaler_msi_client_cookie`*:: -+ --- -type: short - --- - -*`netflow.netscaler_round_trip_time`*:: -+ --- -type: long - --- - -*`netflow.netscaler_server_ttfb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_server_ttlb`*:: -+ --- -type: long - --- - -*`netflow.netscaler_syslog_message`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_syslog_priority`*:: -+ --- -type: short - --- - -*`netflow.netscaler_syslog_timestamp`*:: -+ --- -type: long - --- - -*`netflow.netscaler_transaction_id`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown270`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown271`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown272`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown273`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown274`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown275`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown276`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown277`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown278`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown279`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown280`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown281`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown282`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown283`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown284`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown285`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown286`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown287`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown288`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown289`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown290`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown291`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown292`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown293`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown294`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown295`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown296`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown297`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown298`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown299`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown300`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown301`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown302`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown303`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown304`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown305`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown306`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown307`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown308`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown309`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown310`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown311`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown312`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown313`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown314`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown315`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown316`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_unknown317`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown318`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown319`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_unknown320`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown321`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown322`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown323`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown324`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown325`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown326`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown327`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown328`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown329`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown330`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown331`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown332`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown333`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_unknown334`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_unknown335`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown336`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown337`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown338`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown339`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown340`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown341`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown342`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown343`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown344`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown345`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown346`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown347`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown348`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown349`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_unknown350`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_unknown351`*:: -+ --- -type: keyword - --- - -*`netflow.netscaler_unknown352`*:: -+ --- -type: integer - --- - -*`netflow.netscaler_unknown353`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown354`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown355`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown356`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown357`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown363`*:: -+ --- -type: short - --- - -*`netflow.netscaler_unknown383`*:: -+ --- -type: short - --- - -*`netflow.netscaler_unknown391`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown398`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown404`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown405`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown427`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown429`*:: -+ --- -type: short - --- - -*`netflow.netscaler_unknown432`*:: -+ --- -type: short - --- - -*`netflow.netscaler_unknown433`*:: -+ --- -type: short - --- - -*`netflow.netscaler_unknown453`*:: -+ --- -type: long - --- - -*`netflow.netscaler_unknown465`*:: -+ --- -type: long - --- - -*`netflow.new_connection_delta_count`*:: -+ --- -type: long - --- - -*`netflow.next_header_ipv6`*:: -+ --- -type: short - --- - -*`netflow.non_empty_packet_count`*:: -+ --- -type: long - --- - -*`netflow.not_sent_flow_total_count`*:: -+ --- -type: long - --- - -*`netflow.not_sent_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.not_sent_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.not_sent_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.observation_domain_id`*:: -+ --- -type: long - --- - -*`netflow.observation_domain_name`*:: -+ --- -type: keyword - --- - -*`netflow.observation_point_id`*:: -+ --- -type: long - --- - -*`netflow.observation_point_type`*:: -+ --- -type: short - --- - -*`netflow.observation_time_microseconds`*:: -+ --- -type: date - --- - -*`netflow.observation_time_milliseconds`*:: -+ --- -type: date - --- - -*`netflow.observation_time_nanoseconds`*:: -+ --- -type: date - --- - -*`netflow.observation_time_seconds`*:: -+ --- -type: date - --- - -*`netflow.observed_flow_total_count`*:: -+ --- -type: long - --- - -*`netflow.octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.octet_delta_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.octet_total_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.opaque_octets`*:: -+ --- -type: short - --- - -*`netflow.original_exporter_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.original_exporter_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.original_flows_completed`*:: -+ --- -type: long - --- - -*`netflow.original_flows_initiated`*:: -+ --- -type: long - --- - -*`netflow.original_flows_present`*:: -+ --- -type: long - --- - -*`netflow.original_observation_domain_id`*:: -+ --- -type: long - --- - -*`netflow.os_finger_print`*:: -+ --- -type: keyword - --- - -*`netflow.os_name`*:: -+ --- -type: keyword - --- - -*`netflow.os_version`*:: -+ --- -type: keyword - --- - -*`netflow.p2p_technology`*:: -+ --- -type: keyword - --- - -*`netflow.packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.padding_octets`*:: -+ --- -type: short - --- - -*`netflow.payload`*:: -+ --- -type: keyword - --- - -*`netflow.payload_entropy`*:: -+ --- -type: short - --- - -*`netflow.payload_length_ipv6`*:: -+ --- -type: integer - --- - -*`netflow.policy_qos_classification_hierarchy`*:: -+ --- -type: long - --- - -*`netflow.policy_qos_queue_index`*:: -+ --- -type: long - --- - -*`netflow.policy_qos_queuedrops`*:: -+ --- -type: long - --- - -*`netflow.policy_qos_queueindex`*:: -+ --- -type: long - --- - -*`netflow.port_id`*:: -+ --- -type: long - --- - -*`netflow.port_range_end`*:: -+ --- -type: integer - --- - -*`netflow.port_range_num_ports`*:: -+ --- -type: integer - --- - -*`netflow.port_range_start`*:: -+ --- -type: integer - --- - -*`netflow.port_range_step_size`*:: -+ --- -type: integer - --- - -*`netflow.post_destination_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.post_dot1q_customer_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.post_dot1q_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.post_ip_class_of_service`*:: -+ --- -type: short - --- - -*`netflow.post_ip_diff_serv_code_point`*:: -+ --- -type: short - --- - -*`netflow.post_ip_precedence`*:: -+ --- -type: short - --- - -*`netflow.post_layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.post_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.post_mcast_layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.post_mcast_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.post_mcast_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.post_mcast_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.post_mcast_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.post_mcast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.post_mpls_top_label_exp`*:: -+ --- -type: short - --- - -*`netflow.post_napt_destination_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.post_napt_source_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.post_nat_destination_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.post_nat_destination_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.post_nat_source_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.post_nat_source_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.post_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.post_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.post_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.post_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.post_source_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.post_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.private_enterprise_number`*:: -+ --- -type: long - --- - -*`netflow.procera_apn`*:: -+ --- -type: keyword - --- - -*`netflow.procera_base_service`*:: -+ --- -type: keyword - --- - -*`netflow.procera_content_categories`*:: -+ --- -type: keyword - --- - -*`netflow.procera_device_id`*:: -+ --- -type: long - --- - -*`netflow.procera_external_rtt`*:: -+ --- -type: integer - --- - -*`netflow.procera_flow_behavior`*:: -+ --- -type: keyword - --- - -*`netflow.procera_ggsn`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_content_type`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_file_length`*:: -+ --- -type: long - --- - -*`netflow.procera_http_language`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_location`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_referer`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_request_method`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_request_version`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_response_status`*:: -+ --- -type: integer - --- - -*`netflow.procera_http_url`*:: -+ --- -type: keyword - --- - -*`netflow.procera_http_user_agent`*:: -+ --- -type: keyword - --- - -*`netflow.procera_imsi`*:: -+ --- -type: long - --- - -*`netflow.procera_incoming_octets`*:: -+ --- -type: long - --- - -*`netflow.procera_incoming_packets`*:: -+ --- -type: long - --- - -*`netflow.procera_incoming_shaping_drops`*:: -+ --- -type: long - --- - -*`netflow.procera_incoming_shaping_latency`*:: -+ --- -type: integer - --- - -*`netflow.procera_internal_rtt`*:: -+ --- -type: integer - --- - -*`netflow.procera_local_ipv4_host`*:: -+ --- -type: ip - --- - -*`netflow.procera_local_ipv6_host`*:: -+ --- -type: ip - --- - -*`netflow.procera_msisdn`*:: -+ --- -type: long - --- - -*`netflow.procera_outgoing_octets`*:: -+ --- -type: long - --- - -*`netflow.procera_outgoing_packets`*:: -+ --- -type: long - --- - -*`netflow.procera_outgoing_shaping_drops`*:: -+ --- -type: long - --- - -*`netflow.procera_outgoing_shaping_latency`*:: -+ --- -type: integer - --- - -*`netflow.procera_property`*:: -+ --- -type: keyword - --- - -*`netflow.procera_qoe_incoming_external`*:: -+ --- -type: float - --- - -*`netflow.procera_qoe_incoming_internal`*:: -+ --- -type: float - --- - -*`netflow.procera_qoe_outgoing_external`*:: -+ --- -type: float - --- - -*`netflow.procera_qoe_outgoing_internal`*:: -+ --- -type: float - --- - -*`netflow.procera_rat`*:: -+ --- -type: keyword - --- - -*`netflow.procera_remote_ipv4_host`*:: -+ --- -type: ip - --- - -*`netflow.procera_remote_ipv6_host`*:: -+ --- -type: ip - --- - -*`netflow.procera_rnc`*:: -+ --- -type: integer - --- - -*`netflow.procera_server_hostname`*:: -+ --- -type: keyword - --- - -*`netflow.procera_service`*:: -+ --- -type: keyword - --- - -*`netflow.procera_sgsn`*:: -+ --- -type: keyword - --- - -*`netflow.procera_subscriber_identifier`*:: -+ --- -type: keyword - --- - -*`netflow.procera_template_name`*:: -+ --- -type: keyword - --- - -*`netflow.procera_user_location_information`*:: -+ --- -type: keyword - --- - -*`netflow.protocol_identifier`*:: -+ --- -type: short - --- - -*`netflow.pseudo_wire_control_word`*:: -+ --- -type: long - --- - -*`netflow.pseudo_wire_destination_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.pseudo_wire_id`*:: -+ --- -type: long - --- - -*`netflow.pseudo_wire_type`*:: -+ --- -type: integer - --- - -*`netflow.reason`*:: -+ --- -type: long - --- - -*`netflow.reason_text`*:: -+ --- -type: keyword - --- - -*`netflow.relative_error`*:: -+ --- -type: double - --- - -*`netflow.responder_octets`*:: -+ --- -type: long - --- - -*`netflow.responder_packets`*:: -+ --- -type: long - --- - -*`netflow.reverse_absolute_error`*:: -+ --- -type: double - --- - -*`netflow.reverse_anonymization_flags`*:: -+ --- -type: integer - --- - -*`netflow.reverse_anonymization_technique`*:: -+ --- -type: integer - --- - -*`netflow.reverse_application_category_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_application_description`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_application_group_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_application_id`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_application_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_application_sub_category_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_average_interarrival_time`*:: -+ --- -type: long - --- - -*`netflow.reverse_bgp_destination_as_number`*:: -+ --- -type: long - --- - -*`netflow.reverse_bgp_next_adjacent_as_number`*:: -+ --- -type: long - --- - -*`netflow.reverse_bgp_next_hop_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_bgp_next_hop_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_bgp_prev_adjacent_as_number`*:: -+ --- -type: long - --- - -*`netflow.reverse_bgp_source_as_number`*:: -+ --- -type: long - --- - -*`netflow.reverse_bgp_validity_state`*:: -+ --- -type: short - --- - -*`netflow.reverse_class_id`*:: -+ --- -type: short - --- - -*`netflow.reverse_class_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_classification_engine_id`*:: -+ --- -type: short - --- - -*`netflow.reverse_collection_time_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_collector_certificate`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_confidence_level`*:: -+ --- -type: double - --- - -*`netflow.reverse_connection_sum_duration_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_connection_transaction_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_data_byte_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_data_link_frame_section`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_data_link_frame_size`*:: -+ --- -type: integer - --- - -*`netflow.reverse_data_link_frame_type`*:: -+ --- -type: integer - --- - -*`netflow.reverse_data_records_reliability`*:: -+ --- -type: short - --- - -*`netflow.reverse_delta_flow_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_destination_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_destination_ipv4_prefix`*:: -+ --- -type: ip - --- - -*`netflow.reverse_destination_ipv4_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_destination_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_destination_ipv6_prefix`*:: -+ --- -type: ip - --- - -*`netflow.reverse_destination_ipv6_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_destination_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_destination_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_digest_hash_value`*:: -+ --- -type: long - --- - -*`netflow.reverse_distinct_count_of_destination_ip_address`*:: -+ --- -type: long - --- - -*`netflow.reverse_distinct_count_of_destination_ipv4_address`*:: -+ --- -type: long - --- - -*`netflow.reverse_distinct_count_of_destination_ipv6_address`*:: -+ --- -type: long - --- - -*`netflow.reverse_distinct_count_of_source_ip_address`*:: -+ --- -type: long - --- - -*`netflow.reverse_distinct_count_of_source_ipv4_address`*:: -+ --- -type: long - --- - -*`netflow.reverse_distinct_count_of_source_ipv6_address`*:: -+ --- -type: long - --- - -*`netflow.reverse_dot1q_customer_dei`*:: -+ --- -type: short - --- - -*`netflow.reverse_dot1q_customer_destination_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_dot1q_customer_priority`*:: -+ --- -type: short - --- - -*`netflow.reverse_dot1q_customer_source_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_dot1q_customer_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_dot1q_dei`*:: -+ --- -type: short - --- - -*`netflow.reverse_dot1q_priority`*:: -+ --- -type: short - --- - -*`netflow.reverse_dot1q_service_instance_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_dot1q_service_instance_priority`*:: -+ --- -type: short - --- - -*`netflow.reverse_dot1q_service_instance_tag`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_dot1q_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_dropped_layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_dropped_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_dropped_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_dropped_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_dropped_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_dropped_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_dst_traffic_index`*:: -+ --- -type: long - --- - -*`netflow.reverse_egress_broadcast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_egress_interface`*:: -+ --- -type: long - --- - -*`netflow.reverse_egress_interface_type`*:: -+ --- -type: long - --- - -*`netflow.reverse_egress_physical_interface`*:: -+ --- -type: long - --- - -*`netflow.reverse_egress_unicast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_egress_vrfid`*:: -+ --- -type: long - --- - -*`netflow.reverse_encrypted_technology`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_engine_id`*:: -+ --- -type: short - --- - -*`netflow.reverse_engine_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_ethernet_header_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_ethernet_payload_length`*:: -+ --- -type: integer - --- - -*`netflow.reverse_ethernet_total_length`*:: -+ --- -type: integer - --- - -*`netflow.reverse_ethernet_type`*:: -+ --- -type: integer - --- - -*`netflow.reverse_export_sctp_stream_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_exporter_certificate`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_exporting_process_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_firewall_event`*:: -+ --- -type: short - --- - -*`netflow.reverse_first_non_empty_packet_size`*:: -+ --- -type: integer - --- - -*`netflow.reverse_first_packet_banner`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_flags_and_sampler_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_active_timeout`*:: -+ --- -type: integer - --- - -*`netflow.reverse_flow_attributes`*:: -+ --- -type: integer - --- - -*`netflow.reverse_flow_delta_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_direction`*:: -+ --- -type: short - --- - -*`netflow.reverse_flow_duration_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_duration_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_end_delta_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_end_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_end_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_end_nanoseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_end_reason`*:: -+ --- -type: short - --- - -*`netflow.reverse_flow_end_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_end_sys_up_time`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_idle_timeout`*:: -+ --- -type: integer - --- - -*`netflow.reverse_flow_label_ipv6`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_sampling_time_interval`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_sampling_time_spacing`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_selected_flow_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_selected_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_selected_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_selector_algorithm`*:: -+ --- -type: integer - --- - -*`netflow.reverse_flow_start_delta_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_start_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_start_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_start_nanoseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_start_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_flow_start_sys_up_time`*:: -+ --- -type: long - --- - -*`netflow.reverse_forwarding_status`*:: -+ --- -type: long - --- - -*`netflow.reverse_fragment_flags`*:: -+ --- -type: short - --- - -*`netflow.reverse_fragment_identification`*:: -+ --- -type: long - --- - -*`netflow.reverse_fragment_offset`*:: -+ --- -type: integer - --- - -*`netflow.reverse_gre_key`*:: -+ --- -type: long - --- - -*`netflow.reverse_hash_digest_output`*:: -+ --- -type: short - --- - -*`netflow.reverse_hash_flow_domain`*:: -+ --- -type: integer - --- - -*`netflow.reverse_hash_initialiser_value`*:: -+ --- -type: long - --- - -*`netflow.reverse_hash_ip_payload_offset`*:: -+ --- -type: long - --- - -*`netflow.reverse_hash_ip_payload_size`*:: -+ --- -type: long - --- - -*`netflow.reverse_hash_output_range_max`*:: -+ --- -type: long - --- - -*`netflow.reverse_hash_output_range_min`*:: -+ --- -type: long - --- - -*`netflow.reverse_hash_selected_range_max`*:: -+ --- -type: long - --- - -*`netflow.reverse_hash_selected_range_min`*:: -+ --- -type: long - --- - -*`netflow.reverse_icmp_code_ipv4`*:: -+ --- -type: short - --- - -*`netflow.reverse_icmp_code_ipv6`*:: -+ --- -type: short - --- - -*`netflow.reverse_icmp_type_code_ipv4`*:: -+ --- -type: integer - --- - -*`netflow.reverse_icmp_type_code_ipv6`*:: -+ --- -type: integer - --- - -*`netflow.reverse_icmp_type_ipv4`*:: -+ --- -type: short - --- - -*`netflow.reverse_icmp_type_ipv6`*:: -+ --- -type: short - --- - -*`netflow.reverse_igmp_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_ignored_data_record_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_ignored_layer2_frame_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_ignored_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_information_element_data_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_information_element_description`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_information_element_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_information_element_index`*:: -+ --- -type: integer - --- - -*`netflow.reverse_information_element_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_information_element_range_begin`*:: -+ --- -type: long - --- - -*`netflow.reverse_information_element_range_end`*:: -+ --- -type: long - --- - -*`netflow.reverse_information_element_semantics`*:: -+ --- -type: short - --- - -*`netflow.reverse_information_element_units`*:: -+ --- -type: integer - --- - -*`netflow.reverse_ingress_broadcast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_ingress_interface`*:: -+ --- -type: long - --- - -*`netflow.reverse_ingress_interface_type`*:: -+ --- -type: long - --- - -*`netflow.reverse_ingress_multicast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_ingress_physical_interface`*:: -+ --- -type: long - --- - -*`netflow.reverse_ingress_unicast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_ingress_vrfid`*:: -+ --- -type: long - --- - -*`netflow.reverse_initial_tcp_flags`*:: -+ --- -type: short - --- - -*`netflow.reverse_initiator_octets`*:: -+ --- -type: long - --- - -*`netflow.reverse_initiator_packets`*:: -+ --- -type: long - --- - -*`netflow.reverse_interface_description`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_interface_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_intermediate_process_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_ip_class_of_service`*:: -+ --- -type: short - --- - -*`netflow.reverse_ip_diff_serv_code_point`*:: -+ --- -type: short - --- - -*`netflow.reverse_ip_header_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_ip_header_packet_section`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_ip_next_hop_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_ip_next_hop_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_ip_payload_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_ip_payload_packet_section`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_ip_precedence`*:: -+ --- -type: short - --- - -*`netflow.reverse_ip_sec_spi`*:: -+ --- -type: long - --- - -*`netflow.reverse_ip_total_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_ip_ttl`*:: -+ --- -type: short - --- - -*`netflow.reverse_ip_version`*:: -+ --- -type: short - --- - -*`netflow.reverse_ipv4_ihl`*:: -+ --- -type: short - --- - -*`netflow.reverse_ipv4_options`*:: -+ --- -type: long - --- - -*`netflow.reverse_ipv4_router_sc`*:: -+ --- -type: ip - --- - -*`netflow.reverse_ipv6_extension_headers`*:: -+ --- -type: long - --- - -*`netflow.reverse_is_multicast`*:: -+ --- -type: short - --- - -*`netflow.reverse_large_packet_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2_frame_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2_frame_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2_octet_delta_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2_octet_total_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2_segment_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_layer2packet_section_data`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_layer2packet_section_offset`*:: -+ --- -type: integer - --- - -*`netflow.reverse_layer2packet_section_size`*:: -+ --- -type: integer - --- - -*`netflow.reverse_line_card_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_lower_ci_limit`*:: -+ --- -type: double - --- - -*`netflow.reverse_max_export_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_max_flow_end_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_max_flow_end_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_max_flow_end_nanoseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_max_flow_end_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_max_packet_size`*:: -+ --- -type: integer - --- - -*`netflow.reverse_maximum_ip_total_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_maximum_layer2_total_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_maximum_ttl`*:: -+ --- -type: short - --- - -*`netflow.reverse_message_md5_checksum`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_message_scope`*:: -+ --- -type: short - --- - -*`netflow.reverse_metering_process_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_metro_evc_id`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_metro_evc_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_min_export_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_min_flow_start_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_min_flow_start_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_min_flow_start_nanoseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_min_flow_start_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_minimum_ip_total_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_minimum_layer2_total_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_minimum_ttl`*:: -+ --- -type: short - --- - -*`netflow.reverse_monitoring_interval_end_milli_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_monitoring_interval_start_milli_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_mpls_label_stack_depth`*:: -+ --- -type: long - --- - -*`netflow.reverse_mpls_label_stack_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_mpls_label_stack_section`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section10`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section2`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section3`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section4`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section5`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section6`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section7`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section8`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_label_stack_section9`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_payload_length`*:: -+ --- -type: long - --- - -*`netflow.reverse_mpls_payload_packet_section`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_top_label_exp`*:: -+ --- -type: short - --- - -*`netflow.reverse_mpls_top_label_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_mpls_top_label_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_mpls_top_label_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_mpls_top_label_stack_section`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_mpls_top_label_ttl`*:: -+ --- -type: short - --- - -*`netflow.reverse_mpls_top_label_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_mpls_vpn_route_distinguisher`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_multicast_replication_factor`*:: -+ --- -type: long - --- - -*`netflow.reverse_nat_event`*:: -+ --- -type: short - --- - -*`netflow.reverse_nat_originating_address_realm`*:: -+ --- -type: short - --- - -*`netflow.reverse_nat_pool_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_nat_pool_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_nat_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_new_connection_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_next_header_ipv6`*:: -+ --- -type: short - --- - -*`netflow.reverse_non_empty_packet_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_not_sent_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_observation_domain_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_observation_point_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_observation_point_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_observation_time_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_observation_time_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_observation_time_nanoseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_observation_time_seconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_octet_delta_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.reverse_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_octet_total_sum_of_squares`*:: -+ --- -type: long - --- - -*`netflow.reverse_opaque_octets`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_original_exporter_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_original_exporter_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_original_flows_completed`*:: -+ --- -type: long - --- - -*`netflow.reverse_original_flows_initiated`*:: -+ --- -type: long - --- - -*`netflow.reverse_original_flows_present`*:: -+ --- -type: long - --- - -*`netflow.reverse_original_observation_domain_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_os_finger_print`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_os_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_os_version`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_p2p_technology`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_payload`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_payload_entropy`*:: -+ --- -type: short - --- - -*`netflow.reverse_payload_length_ipv6`*:: -+ --- -type: integer - --- - -*`netflow.reverse_port_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_port_range_end`*:: -+ --- -type: integer - --- - -*`netflow.reverse_port_range_num_ports`*:: -+ --- -type: integer - --- - -*`netflow.reverse_port_range_start`*:: -+ --- -type: integer - --- - -*`netflow.reverse_port_range_step_size`*:: -+ --- -type: integer - --- - -*`netflow.reverse_post_destination_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_post_dot1q_customer_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_post_dot1q_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_post_ip_class_of_service`*:: -+ --- -type: short - --- - -*`netflow.reverse_post_ip_diff_serv_code_point`*:: -+ --- -type: short - --- - -*`netflow.reverse_post_ip_precedence`*:: -+ --- -type: short - --- - -*`netflow.reverse_post_layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_mcast_layer2_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_mcast_layer2_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_mcast_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_mcast_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_mcast_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_mcast_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_mpls_top_label_exp`*:: -+ --- -type: short - --- - -*`netflow.reverse_post_napt_destination_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_post_napt_source_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_post_nat_destination_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_post_nat_destination_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_post_nat_source_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_post_nat_source_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_post_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_octet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_packet_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_post_source_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_post_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_private_enterprise_number`*:: -+ --- -type: long - --- - -*`netflow.reverse_protocol_identifier`*:: -+ --- -type: short - --- - -*`netflow.reverse_pseudo_wire_control_word`*:: -+ --- -type: long - --- - -*`netflow.reverse_pseudo_wire_destination_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_pseudo_wire_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_pseudo_wire_type`*:: -+ --- -type: integer - --- - -*`netflow.reverse_relative_error`*:: -+ --- -type: double - --- - -*`netflow.reverse_responder_octets`*:: -+ --- -type: long - --- - -*`netflow.reverse_responder_packets`*:: -+ --- -type: long - --- - -*`netflow.reverse_rfc3550_jitter_microseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_rfc3550_jitter_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_rfc3550_jitter_nanoseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_rtp_payload_type`*:: -+ --- -type: short - --- - -*`netflow.reverse_rtp_sequence_number`*:: -+ --- -type: integer - --- - -*`netflow.reverse_sampler_id`*:: -+ --- -type: short - --- - -*`netflow.reverse_sampler_mode`*:: -+ --- -type: short - --- - -*`netflow.reverse_sampler_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_sampler_random_interval`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_algorithm`*:: -+ --- -type: short - --- - -*`netflow.reverse_sampling_flow_interval`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_flow_spacing`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_interval`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_packet_interval`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_packet_space`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_population`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_probability`*:: -+ --- -type: double - --- - -*`netflow.reverse_sampling_size`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_time_interval`*:: -+ --- -type: long - --- - -*`netflow.reverse_sampling_time_space`*:: -+ --- -type: long - --- - -*`netflow.reverse_second_packet_banner`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_section_exported_octets`*:: -+ --- -type: integer - --- - -*`netflow.reverse_section_offset`*:: -+ --- -type: integer - --- - -*`netflow.reverse_selection_sequence_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_selector_algorithm`*:: -+ --- -type: integer - --- - -*`netflow.reverse_selector_id`*:: -+ --- -type: long - --- - -*`netflow.reverse_selector_id_total_flows_observed`*:: -+ --- -type: long - --- - -*`netflow.reverse_selector_id_total_flows_selected`*:: -+ --- -type: long - --- - -*`netflow.reverse_selector_id_total_pkts_observed`*:: -+ --- -type: long - --- - -*`netflow.reverse_selector_id_total_pkts_selected`*:: -+ --- -type: long - --- - -*`netflow.reverse_selector_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_session_scope`*:: -+ --- -type: short - --- - -*`netflow.reverse_small_packet_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_source_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_source_ipv4_prefix`*:: -+ --- -type: ip - --- - -*`netflow.reverse_source_ipv4_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_source_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_source_ipv6_prefix`*:: -+ --- -type: ip - --- - -*`netflow.reverse_source_ipv6_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_source_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_source_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_src_traffic_index`*:: -+ --- -type: long - --- - -*`netflow.reverse_sta_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.reverse_sta_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_standard_deviation_interarrival_time`*:: -+ --- -type: long - --- - -*`netflow.reverse_standard_deviation_payload_length`*:: -+ --- -type: integer - --- - -*`netflow.reverse_system_init_time_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_ack_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_acknowledgement_number`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_control_bits`*:: -+ --- -type: integer - --- - -*`netflow.reverse_tcp_destination_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_tcp_fin_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_header_length`*:: -+ --- -type: short - --- - -*`netflow.reverse_tcp_options`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_psh_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_rst_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_sequence_number`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_source_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_tcp_syn_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_urg_total_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_tcp_urgent_pointer`*:: -+ --- -type: integer - --- - -*`netflow.reverse_tcp_window_scale`*:: -+ --- -type: integer - --- - -*`netflow.reverse_tcp_window_size`*:: -+ --- -type: integer - --- - -*`netflow.reverse_total_length_ipv4`*:: -+ --- -type: integer - --- - -*`netflow.reverse_transport_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_transport_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.reverse_tunnel_technology`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_udp_destination_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_udp_message_length`*:: -+ --- -type: integer - --- - -*`netflow.reverse_udp_source_port`*:: -+ --- -type: integer - --- - -*`netflow.reverse_union_tcp_flags`*:: -+ --- -type: short - --- - -*`netflow.reverse_upper_ci_limit`*:: -+ --- -type: double - --- - -*`netflow.reverse_user_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_value_distribution_method`*:: -+ --- -type: short - --- - -*`netflow.reverse_virtual_station_interface_id`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_virtual_station_interface_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_virtual_station_name`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_virtual_station_uuid`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.reverse_vr_fname`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_wlan_channel_id`*:: -+ --- -type: short - --- - -*`netflow.reverse_wlan_ssid`*:: -+ --- -type: keyword - --- - -*`netflow.reverse_wtp_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.rfc3550_jitter_microseconds`*:: -+ --- -type: long - --- - -*`netflow.rfc3550_jitter_milliseconds`*:: -+ --- -type: long - --- - -*`netflow.rfc3550_jitter_nanoseconds`*:: -+ --- -type: long - --- - -*`netflow.rtp_payload_type`*:: -+ --- -type: short - --- - -*`netflow.rtp_sequence_number`*:: -+ --- -type: integer - --- - -*`netflow.sampler_id`*:: -+ --- -type: short - --- - -*`netflow.sampler_mode`*:: -+ --- -type: short - --- - -*`netflow.sampler_name`*:: -+ --- -type: keyword - --- - -*`netflow.sampler_random_interval`*:: -+ --- -type: long - --- - -*`netflow.sampling_algorithm`*:: -+ --- -type: short - --- - -*`netflow.sampling_flow_interval`*:: -+ --- -type: long - --- - -*`netflow.sampling_flow_spacing`*:: -+ --- -type: long - --- - -*`netflow.sampling_interval`*:: -+ --- -type: long - --- - -*`netflow.sampling_packet_interval`*:: -+ --- -type: long - --- - -*`netflow.sampling_packet_space`*:: -+ --- -type: long - --- - -*`netflow.sampling_population`*:: -+ --- -type: long - --- - -*`netflow.sampling_probability`*:: -+ --- -type: double - --- - -*`netflow.sampling_size`*:: -+ --- -type: long - --- - -*`netflow.sampling_time_interval`*:: -+ --- -type: long - --- - -*`netflow.sampling_time_space`*:: -+ --- -type: long - --- - -*`netflow.second_packet_banner`*:: -+ --- -type: keyword - --- - -*`netflow.section_exported_octets`*:: -+ --- -type: integer - --- - -*`netflow.section_offset`*:: -+ --- -type: integer - --- - -*`netflow.selection_sequence_id`*:: -+ --- -type: long - --- - -*`netflow.selector_algorithm`*:: -+ --- -type: integer - --- - -*`netflow.selector_id`*:: -+ --- -type: long - --- - -*`netflow.selector_id_total_flows_observed`*:: -+ --- -type: long - --- - -*`netflow.selector_id_total_flows_selected`*:: -+ --- -type: long - --- - -*`netflow.selector_id_total_pkts_observed`*:: -+ --- -type: long - --- - -*`netflow.selector_id_total_pkts_selected`*:: -+ --- -type: long - --- - -*`netflow.selector_name`*:: -+ --- -type: keyword - --- - -*`netflow.service_name`*:: -+ --- -type: keyword - --- - -*`netflow.session_scope`*:: -+ --- -type: short - --- - -*`netflow.silk_app_label`*:: -+ --- -type: integer - --- - -*`netflow.small_packet_count`*:: -+ --- -type: long - --- - -*`netflow.source_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.source_ipv4_prefix`*:: -+ --- -type: ip - --- - -*`netflow.source_ipv4_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.source_ipv6_address`*:: -+ --- -type: ip - --- - -*`netflow.source_ipv6_prefix`*:: -+ --- -type: ip - --- - -*`netflow.source_ipv6_prefix_length`*:: -+ --- -type: short - --- - -*`netflow.source_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.source_transport_port`*:: -+ --- -type: integer - --- - -*`netflow.source_transport_ports_limit`*:: -+ --- -type: integer - --- - -*`netflow.src_traffic_index`*:: -+ --- -type: long - --- - -*`netflow.ssl_cert_serial_number`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_cert_signature`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_cert_validity_not_after`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_cert_validity_not_before`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_cert_version`*:: -+ --- -type: short - --- - -*`netflow.ssl_certificate_hash`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_cipher`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_client_version`*:: -+ --- -type: short - --- - -*`netflow.ssl_compression_method`*:: -+ --- -type: short - --- - -*`netflow.ssl_object_type`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_object_value`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_public_key_algorithm`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_public_key_length`*:: -+ --- -type: keyword - --- - -*`netflow.ssl_server_cipher`*:: -+ --- -type: long - --- - -*`netflow.ssl_server_name`*:: -+ --- -type: keyword - --- - -*`netflow.sta_ipv4_address`*:: -+ --- -type: ip - --- - -*`netflow.sta_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.standard_deviation_interarrival_time`*:: -+ --- -type: long - --- - -*`netflow.standard_deviation_payload_length`*:: -+ --- -type: short - --- - -*`netflow.system_init_time_milliseconds`*:: -+ --- -type: date - --- - -*`netflow.tcp_ack_total_count`*:: -+ --- -type: long - --- - -*`netflow.tcp_acknowledgement_number`*:: -+ --- -type: long - --- - -*`netflow.tcp_control_bits`*:: -+ --- -type: integer - --- - -*`netflow.tcp_destination_port`*:: -+ --- -type: integer - --- - -*`netflow.tcp_fin_total_count`*:: -+ --- -type: long - --- - -*`netflow.tcp_header_length`*:: -+ --- -type: short - --- - -*`netflow.tcp_options`*:: -+ --- -type: long - --- - -*`netflow.tcp_psh_total_count`*:: -+ --- -type: long - --- - -*`netflow.tcp_rst_total_count`*:: -+ --- -type: long - --- - -*`netflow.tcp_sequence_number`*:: -+ --- -type: long - --- - -*`netflow.tcp_source_port`*:: -+ --- -type: integer - --- - -*`netflow.tcp_syn_total_count`*:: -+ --- -type: long - --- - -*`netflow.tcp_urg_total_count`*:: -+ --- -type: long - --- - -*`netflow.tcp_urgent_pointer`*:: -+ --- -type: integer - --- - -*`netflow.tcp_window_scale`*:: -+ --- -type: integer - --- - -*`netflow.tcp_window_size`*:: -+ --- -type: integer - --- - -*`netflow.template_id`*:: -+ --- -type: integer - --- - -*`netflow.tftp_filename`*:: -+ --- -type: keyword - --- - -*`netflow.tftp_mode`*:: -+ --- -type: keyword - --- - -*`netflow.timestamp`*:: -+ --- -type: long - --- - -*`netflow.timestamp_absolute_monitoring-interval`*:: -+ --- -type: long - --- - -*`netflow.total_length_ipv4`*:: -+ --- -type: integer - --- - -*`netflow.traffic_type`*:: -+ --- -type: short - --- - -*`netflow.transport_octet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.transport_packet_delta_count`*:: -+ --- -type: long - --- - -*`netflow.tunnel_technology`*:: -+ --- -type: keyword - --- - -*`netflow.udp_destination_port`*:: -+ --- -type: integer - --- - -*`netflow.udp_message_length`*:: -+ --- -type: integer - --- - -*`netflow.udp_source_port`*:: -+ --- -type: integer - --- - -*`netflow.union_tcp_flags`*:: -+ --- -type: short - --- - -*`netflow.upper_ci_limit`*:: -+ --- -type: double - --- - -*`netflow.user_name`*:: -+ --- -type: keyword - --- - -*`netflow.username`*:: -+ --- -type: keyword - --- - -*`netflow.value_distribution_method`*:: -+ --- -type: short - --- - -*`netflow.viptela_vpn_id`*:: -+ --- -type: long - --- - -*`netflow.virtual_station_interface_id`*:: -+ --- -type: short - --- - -*`netflow.virtual_station_interface_name`*:: -+ --- -type: keyword - --- - -*`netflow.virtual_station_name`*:: -+ --- -type: keyword - --- - -*`netflow.virtual_station_uuid`*:: -+ --- -type: short - --- - -*`netflow.vlan_id`*:: -+ --- -type: integer - --- - -*`netflow.vmware_egress_interface_attr`*:: -+ --- -type: integer - --- - -*`netflow.vmware_ingress_interface_attr`*:: -+ --- -type: integer - --- - -*`netflow.vmware_tenant_dest_ipv4`*:: -+ --- -type: ip - --- - -*`netflow.vmware_tenant_dest_ipv6`*:: -+ --- -type: ip - --- - -*`netflow.vmware_tenant_dest_port`*:: -+ --- -type: integer - --- - -*`netflow.vmware_tenant_protocol`*:: -+ --- -type: short - --- - -*`netflow.vmware_tenant_source_ipv4`*:: -+ --- -type: ip - --- - -*`netflow.vmware_tenant_source_ipv6`*:: -+ --- -type: ip - --- - -*`netflow.vmware_tenant_source_port`*:: -+ --- -type: integer - --- - -*`netflow.vmware_vxlan_export_role`*:: -+ --- -type: short - --- - -*`netflow.vpn_identifier`*:: -+ --- -type: short - --- - -*`netflow.vr_fname`*:: -+ --- -type: keyword - --- - -*`netflow.waasoptimization_segment`*:: -+ --- -type: short - --- - -*`netflow.wlan_channel_id`*:: -+ --- -type: short - --- - -*`netflow.wlan_ssid`*:: -+ --- -type: keyword - --- - -*`netflow.wtp_mac_address`*:: -+ --- -type: keyword - --- - -*`netflow.xlate_destination_address_ip_v4`*:: -+ --- -type: ip - --- - -*`netflow.xlate_destination_port`*:: -+ --- -type: integer - --- - -*`netflow.xlate_source_address_ip_v4`*:: -+ --- -type: ip - --- - -*`netflow.xlate_source_port`*:: -+ --- -type: integer - --- - -[[exported-fields-netscout]] -== Arbor Peakflow SP fields - -netscout fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-nginx]] -== Nginx fields - -Module for parsing the Nginx log files. - - - -[float] -=== nginx - -Fields from the Nginx log files. - - - -[float] -=== access - -Contains fields for the Nginx access logs. - - - -*`nginx.access.remote_ip_list`*:: -+ --- -An array of remote IP addresses. It is a list because it is common to include, besides the client IP address, IP addresses from headers like `X-Forwarded-For`. Real source IP is restored to `source.ip`. - - -type: array - --- - -*`nginx.access.body_sent.bytes`*:: -+ --- -type: alias - -alias to: http.response.body.bytes - --- - -*`nginx.access.user_name`*:: -+ --- -type: alias - -alias to: user.name - --- - -*`nginx.access.method`*:: -+ --- -type: alias - -alias to: http.request.method - --- - -*`nginx.access.url`*:: -+ --- -type: alias - -alias to: url.original - --- - -*`nginx.access.http_version`*:: -+ --- -type: alias - -alias to: http.version - --- - -*`nginx.access.response_code`*:: -+ --- -type: alias - -alias to: http.response.status_code - --- - -*`nginx.access.referrer`*:: -+ --- -type: alias - -alias to: http.request.referrer - --- - -*`nginx.access.agent`*:: -+ --- -type: alias - -alias to: user_agent.original - --- - - -*`nginx.access.user_agent.device`*:: -+ --- -type: alias - -alias to: user_agent.device.name - --- - -*`nginx.access.user_agent.name`*:: -+ --- -type: alias - -alias to: user_agent.name - --- - -*`nginx.access.user_agent.os`*:: -+ --- -type: alias - -alias to: user_agent.os.full_name - --- - -*`nginx.access.user_agent.os_name`*:: -+ --- -type: alias - -alias to: user_agent.os.name - --- - -*`nginx.access.user_agent.original`*:: -+ --- -type: alias - -alias to: user_agent.original - --- - - -*`nginx.access.geoip.continent_name`*:: -+ --- -type: alias - -alias to: source.geo.continent_name - --- - -*`nginx.access.geoip.country_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.country_iso_code - --- - -*`nginx.access.geoip.location`*:: -+ --- -type: alias - -alias to: source.geo.location - --- - -*`nginx.access.geoip.region_name`*:: -+ --- -type: alias - -alias to: source.geo.region_name - --- - -*`nginx.access.geoip.city_name`*:: -+ --- -type: alias - -alias to: source.geo.city_name - --- - -*`nginx.access.geoip.region_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.region_iso_code - --- - -[float] -=== error - -Contains fields for the Nginx error logs. - - - -*`nginx.error.connection_id`*:: -+ --- -Connection identifier. - - -type: long - --- - -*`nginx.error.level`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`nginx.error.pid`*:: -+ --- -type: alias - -alias to: process.pid - --- - -*`nginx.error.tid`*:: -+ --- -type: alias - -alias to: process.thread.id - --- - -*`nginx.error.message`*:: -+ --- -type: alias - -alias to: message - --- - -[float] -=== ingress_controller - -Contains fields for the Ingress Nginx controller access logs. - - - -*`nginx.ingress_controller.remote_ip_list`*:: -+ --- -An array of remote IP addresses. It is a list because it is common to include, besides the client IP address, IP addresses from headers like `X-Forwarded-For`. Real source IP is restored to `source.ip`. - - -type: array - --- - -*`nginx.ingress_controller.upstream_address_list`*:: -+ --- -An array of the upstream addresses. It is a list because it is common that several upstream servers were contacted during request processing. - - -type: keyword - --- - -*`nginx.ingress_controller.upstream.response.length_list`*:: -+ --- -An array of upstream response lengths. It is a list because it is common that several upstream servers were contacted during request processing. - - -type: keyword - --- - -*`nginx.ingress_controller.upstream.response.time_list`*:: -+ --- -An array of upstream response durations. It is a list because it is common that several upstream servers were contacted during request processing. - - -type: keyword - --- - -*`nginx.ingress_controller.upstream.response.status_code_list`*:: -+ --- -An array of upstream response status codes. It is a list because it is common that several upstream servers were contacted during request processing. - - -type: keyword - --- - -*`nginx.ingress_controller.http.request.length`*:: -+ --- -The request length (including request line, header, and request body) - - -type: long - -format: bytes - --- - -*`nginx.ingress_controller.http.request.time`*:: -+ --- -Time elapsed since the first bytes were read from the client - - -type: double - -format: duration - --- - -*`nginx.ingress_controller.upstream.name`*:: -+ --- -The name of the upstream. - - -type: keyword - --- - -*`nginx.ingress_controller.upstream.alternative_name`*:: -+ --- -The name of the alternative upstream. - - -type: keyword - --- - -*`nginx.ingress_controller.upstream.response.length`*:: -+ --- -The length of the response obtained from the upstream server. If several servers were contacted during request process, the summary of the multiple response lengths is stored. - - -type: long - -format: bytes - --- - -*`nginx.ingress_controller.upstream.response.time`*:: -+ --- -The time spent on receiving the response from the upstream as seconds with millisecond resolution. If several servers were contacted during request process, the summary of the multiple response times is stored. - - -type: double - -format: duration - --- - -*`nginx.ingress_controller.upstream.response.status_code`*:: -+ --- -The status code of the response obtained from the upstream server. If several servers were contacted during request process, only the status code of the response from the last one is stored in this field. - - -type: long - --- - -*`nginx.ingress_controller.upstream.ip`*:: -+ --- -The IP address of the upstream server. If several servers were contacted during request process, only the last one is stored in this field. - - -type: ip - --- - -*`nginx.ingress_controller.upstream.port`*:: -+ --- -The port of the upstream server. If several servers were contacted during request process, only the last one is stored in this field. - - -type: long - --- - -*`nginx.ingress_controller.http.request.id`*:: -+ --- -The randomly generated ID of the request - - -type: keyword - --- - -*`nginx.ingress_controller.body_sent.bytes`*:: -+ --- -type: alias - -alias to: http.response.body.bytes - --- - -*`nginx.ingress_controller.user_name`*:: -+ --- -type: alias - -alias to: user.name - --- - -*`nginx.ingress_controller.method`*:: -+ --- -type: alias - -alias to: http.request.method - --- - -*`nginx.ingress_controller.url`*:: -+ --- -type: alias - -alias to: url.original - --- - -*`nginx.ingress_controller.http_version`*:: -+ --- -type: alias - -alias to: http.version - --- - -*`nginx.ingress_controller.response_code`*:: -+ --- -type: alias - -alias to: http.response.status_code - --- - -*`nginx.ingress_controller.referrer`*:: -+ --- -type: alias - -alias to: http.request.referrer - --- - -*`nginx.ingress_controller.agent`*:: -+ --- -type: alias - -alias to: user_agent.original - --- - - -*`nginx.ingress_controller.user_agent.device`*:: -+ --- -type: alias - -alias to: user_agent.device.name - --- - -*`nginx.ingress_controller.user_agent.name`*:: -+ --- -type: alias - -alias to: user_agent.name - --- - -*`nginx.ingress_controller.user_agent.os`*:: -+ --- -type: alias - -alias to: user_agent.os.full_name - --- - -*`nginx.ingress_controller.user_agent.os_name`*:: -+ --- -type: alias - -alias to: user_agent.os.name - --- - -*`nginx.ingress_controller.user_agent.original`*:: -+ --- -type: alias - -alias to: user_agent.original - --- - - -*`nginx.ingress_controller.geoip.continent_name`*:: -+ --- -type: alias - -alias to: source.geo.continent_name - --- - -*`nginx.ingress_controller.geoip.country_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.country_iso_code - --- - -*`nginx.ingress_controller.geoip.location`*:: -+ --- -type: alias - -alias to: source.geo.location - --- - -*`nginx.ingress_controller.geoip.region_name`*:: -+ --- -type: alias - -alias to: source.geo.region_name - --- - -*`nginx.ingress_controller.geoip.city_name`*:: -+ --- -type: alias - -alias to: source.geo.city_name - --- - -*`nginx.ingress_controller.geoip.region_iso_code`*:: -+ --- -type: alias - -alias to: source.geo.region_iso_code - --- - -[[exported-fields-o365]] -== Office 365 fields - -Module for handling logs from Office 365. - - - -[float] -=== o365.audit - -Fields from Office 365 Management API audit logs. - - - -*`o365.audit.AADGroupId`*:: -+ --- -type: keyword - --- - -*`o365.audit.Activity`*:: -+ --- -type: keyword - --- - -*`o365.audit.Actor`*:: -+ --- -type: array - --- - -*`o365.audit.ActorContextId`*:: -+ --- -type: keyword - --- - -*`o365.audit.ActorIpAddress`*:: -+ --- -type: keyword - --- - -*`o365.audit.ActorUserId`*:: -+ --- -type: keyword - --- - -*`o365.audit.ActorYammerUserId`*:: -+ --- -type: keyword - --- - -*`o365.audit.AlertEntityId`*:: -+ --- -type: keyword - --- - -*`o365.audit.AlertId`*:: -+ --- -type: keyword - --- - -*`o365.audit.AlertLinks`*:: -+ --- -type: array - --- - -*`o365.audit.AlertType`*:: -+ --- -type: keyword - --- - -*`o365.audit.AppId`*:: -+ --- -type: keyword - --- - -*`o365.audit.ApplicationDisplayName`*:: -+ --- -type: keyword - --- - -*`o365.audit.ApplicationId`*:: -+ --- -type: keyword - --- - -*`o365.audit.AzureActiveDirectoryEventType`*:: -+ --- -type: keyword - --- - -*`o365.audit.ExchangeMetaData.*`*:: -+ --- -type: object - --- - -*`o365.audit.Category`*:: -+ --- -type: keyword - --- - -*`o365.audit.ClientAppId`*:: -+ --- -type: keyword - --- - -*`o365.audit.ClientInfoString`*:: -+ --- -type: keyword - --- - -*`o365.audit.ClientIP`*:: -+ --- -type: keyword - --- - -*`o365.audit.ClientIPAddress`*:: -+ --- -type: keyword - --- - -*`o365.audit.Comments`*:: -+ --- -type: text - --- - -*`o365.audit.CommunicationType`*:: -+ --- -type: keyword - --- - -*`o365.audit.CorrelationId`*:: -+ --- -type: keyword - --- - -*`o365.audit.CreationTime`*:: -+ --- -type: keyword - --- - -*`o365.audit.CustomUniqueId`*:: -+ --- -type: keyword - --- - -*`o365.audit.Data`*:: -+ --- -type: keyword - --- - -*`o365.audit.DataType`*:: -+ --- -type: keyword - --- - -*`o365.audit.DoNotDistributeEvent`*:: -+ --- -type: boolean - --- - -*`o365.audit.EntityType`*:: -+ --- -type: keyword - --- - -*`o365.audit.ErrorNumber`*:: -+ --- -type: keyword - --- - -*`o365.audit.EventData`*:: -+ --- -type: keyword - --- - -*`o365.audit.EventSource`*:: -+ --- -type: keyword - --- - -*`o365.audit.ExceptionInfo.*`*:: -+ --- -type: object - --- - -*`o365.audit.Experience`*:: -+ --- -type: keyword - --- - -*`o365.audit.ExtendedProperties.*`*:: -+ --- -type: object - --- - -*`o365.audit.ExternalAccess`*:: -+ --- -type: keyword - --- - -*`o365.audit.FromApp`*:: -+ --- -type: boolean - --- - -*`o365.audit.GroupName`*:: -+ --- -type: keyword - --- - -*`o365.audit.Id`*:: -+ --- -type: keyword - --- - -*`o365.audit.ImplicitShare`*:: -+ --- -type: keyword - --- - -*`o365.audit.IncidentId`*:: -+ --- -type: keyword - --- - -*`o365.audit.InternalLogonType`*:: -+ --- -type: keyword - --- - -*`o365.audit.InterSystemsId`*:: -+ --- -type: keyword - --- - -*`o365.audit.IntraSystemId`*:: -+ --- -type: keyword - --- - -*`o365.audit.IsDocLib`*:: -+ --- -type: boolean - --- - -*`o365.audit.Item.*`*:: -+ --- -type: object - --- - -*`o365.audit.Item.*.*`*:: -+ --- -type: object - --- - -*`o365.audit.ItemCount`*:: -+ --- -type: long - --- - -*`o365.audit.ItemName`*:: -+ --- -type: keyword - --- - -*`o365.audit.ItemType`*:: -+ --- -type: keyword - --- - -*`o365.audit.ListBaseTemplateType`*:: -+ --- -type: keyword - --- - -*`o365.audit.ListBaseType`*:: -+ --- -type: keyword - --- - -*`o365.audit.ListColor`*:: -+ --- -type: keyword - --- - -*`o365.audit.ListIcon`*:: -+ --- -type: keyword - --- - -*`o365.audit.ListId`*:: -+ --- -type: keyword - --- - -*`o365.audit.ListTitle`*:: -+ --- -type: keyword - --- - -*`o365.audit.ListItemUniqueId`*:: -+ --- -type: keyword - --- - -*`o365.audit.LogonError`*:: -+ --- -type: keyword - --- - -*`o365.audit.LogonType`*:: -+ --- -type: keyword - --- - -*`o365.audit.LogonUserSid`*:: -+ --- -type: keyword - --- - -*`o365.audit.MailboxGuid`*:: -+ --- -type: keyword - --- - -*`o365.audit.MailboxOwnerMasterAccountSid`*:: -+ --- -type: keyword - --- - -*`o365.audit.MailboxOwnerSid`*:: -+ --- -type: keyword - --- - -*`o365.audit.MailboxOwnerUPN`*:: -+ --- -type: keyword - --- - -*`o365.audit.Members`*:: -+ --- -type: array - --- - -*`o365.audit.Members.*`*:: -+ --- -type: object - --- - -*`o365.audit.ModifiedProperties.*.*`*:: -+ --- -type: object - --- - -*`o365.audit.Name`*:: -+ --- -type: keyword - --- - -*`o365.audit.ObjectId`*:: -+ --- -type: keyword - --- - -*`o365.audit.ObjectDisplayName`*:: -+ --- -type: keyword - --- - -*`o365.audit.ObjectType`*:: -+ --- -type: keyword - --- - -*`o365.audit.Operation`*:: -+ --- -type: keyword - --- - -*`o365.audit.OperationId`*:: -+ --- -type: keyword - --- - -*`o365.audit.OperationProperties`*:: -+ --- -type: object - --- - -*`o365.audit.OrganizationId`*:: -+ --- -type: keyword - --- - -*`o365.audit.OrganizationName`*:: -+ --- -type: keyword - --- - -*`o365.audit.OriginatingServer`*:: -+ --- -type: keyword - --- - -*`o365.audit.Parameters.*`*:: -+ --- -type: object - --- - -*`o365.audit.PolicyDetails`*:: -+ --- -type: array - --- - -*`o365.audit.PolicyId`*:: -+ --- -type: keyword - --- - -*`o365.audit.RecordType`*:: -+ --- -type: keyword - --- - -*`o365.audit.RequestId`*:: -+ --- -type: keyword - --- - -*`o365.audit.ResultStatus`*:: -+ --- -type: keyword - --- - -*`o365.audit.SensitiveInfoDetectionIsIncluded`*:: -+ --- -type: keyword - --- - -*`o365.audit.SharePointMetaData.*`*:: -+ --- -type: object - --- - -*`o365.audit.SessionId`*:: -+ --- -type: keyword - --- - -*`o365.audit.Severity`*:: -+ --- -type: keyword - --- - -*`o365.audit.Site`*:: -+ --- -type: keyword - --- - -*`o365.audit.SiteUrl`*:: -+ --- -type: keyword - --- - -*`o365.audit.Source`*:: -+ --- -type: keyword - --- - -*`o365.audit.SourceFileExtension`*:: -+ --- -type: keyword - --- - -*`o365.audit.SourceFileName`*:: -+ --- -type: keyword - --- - -*`o365.audit.SourceRelativeUrl`*:: -+ --- -type: keyword - --- - -*`o365.audit.Status`*:: -+ --- -type: keyword - --- - -*`o365.audit.SupportTicketId`*:: -+ --- -type: keyword - --- - -*`o365.audit.Target`*:: -+ --- -type: array - --- - -*`o365.audit.TargetContextId`*:: -+ --- -type: keyword - --- - -*`o365.audit.TargetUserOrGroupName`*:: -+ --- -type: keyword - --- - -*`o365.audit.TargetUserOrGroupType`*:: -+ --- -type: keyword - --- - -*`o365.audit.TeamName`*:: -+ --- -type: keyword - --- - -*`o365.audit.TeamGuid`*:: -+ --- -type: keyword - --- - -*`o365.audit.TemplateTypeId`*:: -+ --- -type: keyword - --- - -*`o365.audit.Timestamp`*:: -+ --- -type: keyword - --- - -*`o365.audit.UniqueSharingId`*:: -+ --- -type: keyword - --- - -*`o365.audit.UserAgent`*:: -+ --- -type: keyword - --- - -*`o365.audit.UserId`*:: -+ --- -type: keyword - --- - -*`o365.audit.UserKey`*:: -+ --- -type: keyword - --- - -*`o365.audit.UserType`*:: -+ --- -type: keyword - --- - -*`o365.audit.Version`*:: -+ --- -type: keyword - --- - -*`o365.audit.WebId`*:: -+ --- -type: keyword - --- - -*`o365.audit.Workload`*:: -+ --- -type: keyword - --- - -*`o365.audit.WorkspaceId`*:: -+ --- -type: keyword - --- - -*`o365.audit.WorkspaceName`*:: -+ --- -type: keyword - --- - -*`o365.audit.YammerNetworkId`*:: -+ --- -type: keyword - --- - -[[exported-fields-okta]] -== Okta fields - -Module for handling system logs from Okta. - - - -[float] -=== okta - -Fields from Okta. - - - -*`okta.uuid`*:: -+ --- -The unique identifier of the Okta LogEvent. - - -type: keyword - --- - -*`okta.event_type`*:: -+ --- -The type of the LogEvent. - - -type: keyword - --- - -*`okta.version`*:: -+ --- -The version of the LogEvent. - - -type: keyword - --- - -*`okta.severity`*:: -+ --- -The severity of the LogEvent. Must be one of DEBUG, INFO, WARN, or ERROR. - - -type: keyword - --- - -*`okta.display_message`*:: -+ --- -The display message of the LogEvent. - - -type: keyword - --- - -[float] -=== actor - -Fields that let you store information of the actor for the LogEvent. - - - -*`okta.actor.id`*:: -+ --- -Identifier of the actor. - - -type: keyword - --- - -*`okta.actor.type`*:: -+ --- -Type of the actor. - - -type: keyword - --- - -*`okta.actor.alternate_id`*:: -+ --- -Alternate identifier of the actor. - - -type: keyword - --- - -*`okta.actor.display_name`*:: -+ --- -Display name of the actor. - - -type: keyword - --- - -[float] -=== client - -Fields that let you store information about the client of the actor. - - - -*`okta.client.ip`*:: -+ --- -The IP address of the client. - - -type: ip - --- - -[float] -=== user_agent - -Fields about the user agent information of the client. - - - -*`okta.client.user_agent.raw_user_agent`*:: -+ --- -The raw informaton of the user agent. - - -type: keyword - --- - -*`okta.client.user_agent.os`*:: -+ --- -The OS informaton. - - -type: keyword - --- - -*`okta.client.user_agent.browser`*:: -+ --- -The browser informaton of the client. - - -type: keyword - --- - -*`okta.client.zone`*:: -+ --- -The zone information of the client. - - -type: keyword - --- - -*`okta.client.device`*:: -+ --- -The information of the client device. - - -type: keyword - --- - -*`okta.client.id`*:: -+ --- -The identifier of the client. - - -type: keyword - --- - -[float] -=== outcome - -Fields that let you store information about the outcome. - - - -*`okta.outcome.reason`*:: -+ --- -The reason of the outcome. - - -type: keyword - --- - -*`okta.outcome.result`*:: -+ --- -The result of the outcome. Must be one of: SUCCESS, FAILURE, SKIPPED, ALLOW, DENY, CHALLENGE, UNKNOWN. - - -type: keyword - --- - -*`okta.target`*:: -+ --- -The list of targets. - - -type: flattened - --- - -[float] -=== transaction - -Fields that let you store information about related transaction. - - - -*`okta.transaction.id`*:: -+ --- -Identifier of the transaction. - - -type: keyword - --- - -*`okta.transaction.type`*:: -+ --- -The type of transaction. Must be one of "WEB", "JOB". - - -type: keyword - --- - -[float] -=== debug_context - -Fields that let you store information about the debug context. - - - -[float] -=== debug_data - -The debug data. - - - -*`okta.debug_context.debug_data.device_fingerprint`*:: -+ --- -The fingerprint of the device. - - -type: keyword - --- - -*`okta.debug_context.debug_data.factor`*:: -+ --- -The factor used for authentication. - - -type: keyword - --- - -*`okta.debug_context.debug_data.request_id`*:: -+ --- -The identifier of the request. - - -type: keyword - --- - -*`okta.debug_context.debug_data.request_uri`*:: -+ --- -The request URI. - - -type: keyword - --- - -*`okta.debug_context.debug_data.threat_suspected`*:: -+ --- -Threat suspected. - - -type: keyword - --- - -*`okta.debug_context.debug_data.risk_behaviors`*:: -+ --- -The set of behaviors that contribute to a risk assessment. - - -type: keyword - --- - -*`okta.debug_context.debug_data.risk_level`*:: -+ --- -The risk level assigned to the sign in attempt. - - -type: keyword - --- - -*`okta.debug_context.debug_data.risk_reasons`*:: -+ --- -The reasons for the risk. - - -type: keyword - --- - -*`okta.debug_context.debug_data.url`*:: -+ --- -The URL. - - -type: keyword - --- - -*`okta.debug_context.debug_data.flattened`*:: -+ --- -The complete debug_data object. - - -type: flattened - --- - -[float] -=== suspicious_activity - -The suspicious activity fields from the debug data. - - - -*`okta.debug_context.debug_data.suspicious_activity.browser`*:: -+ --- -The browser used. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_city`*:: -+ --- -The city where the suspicious activity took place. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_country`*:: -+ --- -The country where the suspicious activity took place. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_id`*:: -+ --- -The event ID. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_ip`*:: -+ --- -The IP of the suspicious event. - - -type: ip - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_latitude`*:: -+ --- -The latitude where the suspicious activity took place. - - -type: float - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_longitude`*:: -+ --- -The longitude where the suspicious activity took place. - - -type: float - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_state`*:: -+ --- -The state where the suspicious activity took place. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_transaction_id`*:: -+ --- -The event transaction ID. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.event_type`*:: -+ --- -The event type. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.os`*:: -+ --- -The OS of the system from where the suspicious activity occured. - - -type: keyword - --- - -*`okta.debug_context.debug_data.suspicious_activity.timestamp`*:: -+ --- -The timestamp of when the activity occurred. - - -type: date - --- - -[float] -=== authentication_context - -Fields that let you store information about authentication context. - - - -*`okta.authentication_context.authentication_provider`*:: -+ --- -The information about the authentication provider. Must be one of OKTA_AUTHENTICATION_PROVIDER, ACTIVE_DIRECTORY, LDAP, FEDERATION, SOCIAL, FACTOR_PROVIDER. - - -type: keyword - --- - -*`okta.authentication_context.authentication_step`*:: -+ --- -The authentication step. - - -type: integer - --- - -*`okta.authentication_context.credential_provider`*:: -+ --- -The information about credential provider. Must be one of OKTA_CREDENTIAL_PROVIDER, RSA, SYMANTEC, GOOGLE, DUO, YUBIKEY. - - -type: keyword - --- - -*`okta.authentication_context.credential_type`*:: -+ --- -The information about credential type. Must be one of OTP, SMS, PASSWORD, ASSERTION, IWA, EMAIL, OAUTH2, JWT, CERTIFICATE, PRE_SHARED_SYMMETRIC_KEY, OKTA_CLIENT_SESSION, DEVICE_UDID. - - -type: keyword - --- - -*`okta.authentication_context.issuer`*:: -+ --- -The information about the issuer. - - -type: array - --- - -*`okta.authentication_context.external_session_id`*:: -+ --- -The session identifer of the external session if any. - - -type: keyword - --- - -*`okta.authentication_context.interface`*:: -+ --- -The interface used. e.g., Outlook, Office365, wsTrust - - -type: keyword - --- - -[float] -=== security_context - -Fields that let you store information about security context. - - - -[float] -=== as - -The autonomous system. - - - -*`okta.security_context.as.number`*:: -+ --- -The AS number. - - -type: integer - --- - -[float] -=== organization - -The organization that owns the AS number. - - - -*`okta.security_context.as.organization.name`*:: -+ --- -The organization name. - - -type: keyword - --- - -*`okta.security_context.isp`*:: -+ --- -The Internet Service Provider. - - -type: keyword - --- - -*`okta.security_context.domain`*:: -+ --- -The domain name. - - -type: keyword - --- - -*`okta.security_context.is_proxy`*:: -+ --- -Whether it is a proxy or not. - - -type: boolean - --- - -[float] -=== request - -Fields that let you store information about the request, in the form of list of ip_chain. - - - -*`okta.request.ip_chain`*:: -+ --- -List of ip_chain objects. - - -type: flattened - --- - -[[exported-fields-oracle]] -== Oracle fields - -Oracle Module - - - -[float] -=== oracle - -Fields from Oracle logs. - - - -[float] -=== database_audit - -Module for parsing Oracle Database audit logs - - - -*`oracle.database_audit.priv_used`*:: -+ --- -System privilege used to execute the action. - - -type: integer - --- - -*`oracle.database_audit.logoff_pread`*:: -+ --- -Physical reads for the session. - - -type: integer - --- - -*`oracle.database_audit.logoff_lread`*:: -+ --- -Logical reads for the session. - - -type: integer - --- - -*`oracle.database_audit.logoff_lwrite`*:: -+ --- -Logical writes for the session. - - -type: integer - --- - -*`oracle.database_audit.logoff_dead`*:: -+ --- -Deadlocks detected during the session. - - -type: integer - --- - -*`oracle.database_audit.sessioncpu`*:: -+ --- -Amount of CPU time used by each Oracle session. - - -type: integer - --- - -*`oracle.database_audit.returncode`*:: -+ --- -Oracle error code generated by the action. - - -type: integer - --- - -*`oracle.database_audit.statement`*:: -+ --- -nth statement in the user session. - - -type: integer - --- - -*`oracle.database_audit.userid`*:: -+ --- -Name of the user whose actions were audited. - - -type: keyword - --- - -*`oracle.database_audit.entryid`*:: -+ --- -Numeric ID for each audit trail entry in the session. The entry ID is an index of a session's audit entries that starts at 1 and increases to the number of entries that are written. - - -type: integer - --- - -*`oracle.database_audit.comment_text`*:: -+ --- -Text comment on the audit trail entry, providing more information about the statement audited. - - -type: text - --- - -*`oracle.database_audit.os_userid`*:: -+ --- -Operating system login username of the user whose actions were audited. - - -type: keyword - --- - -*`oracle.database_audit.terminal`*:: -+ --- -Identifier of the user's terminal. - - -type: text - --- - -*`oracle.database_audit.status`*:: -+ --- -Database Audit Status. - - -type: keyword - --- - -*`oracle.database_audit.session_id`*:: -+ --- -Indicates the audit session ID number. - - -type: keyword - --- - -*`oracle.database_audit.client.terminal`*:: -+ --- -If available, the client terminal type, for example "pty". - - -type: keyword - --- - -*`oracle.database_audit.client.address`*:: -+ --- -The IP Address or Domain used by the client. - - -type: keyword - --- - -*`oracle.database_audit.client.user`*:: -+ --- -The user running the client or connection to the database. - - -type: keyword - --- - -*`oracle.database_audit.database.user`*:: -+ --- -The database user used to authenticate. - - -type: keyword - --- - -*`oracle.database_audit.privilege`*:: -+ --- -The privilege group related to the database user. - - -type: keyword - --- - -*`oracle.database_audit.entry.id`*:: -+ --- -Indicates the current audit entry number, assigned to each audit trail record. The audit entry.id sequence number is shared between fine-grained audit records and regular audit records. - - -type: keyword - --- - -*`oracle.database_audit.database.host`*:: -+ --- -Client host machine name. - - -type: keyword - --- - -*`oracle.database_audit.action`*:: -+ --- -The action performed during the audit event. This could for example be the raw query. - - -type: keyword - --- - -*`oracle.database_audit.action_number`*:: -+ --- -Action is a numeric value representing the action the user performed. The corresponding name of the action type is in the AUDIT_ACTIONS table. For example, action 100 refers to LOGON. - - -type: keyword - --- - -*`oracle.database_audit.database.id`*:: -+ --- -Database identifier calculated when the database is created. It corresponds to the DBID column of the V$DATABASE data dictionary view. - - -type: keyword - --- - -*`oracle.database_audit.length`*:: -+ --- -Refers to the total number of bytes used in this audit record. This number includes the trailing newline bytes (\n), if any, at the end of the audit record. - - -type: long - --- - -[[exported-fields-osquery]] -== Osquery fields - -Fields exported by the `osquery` module - - - -[float] -=== osquery - - - - -[float] -=== result - -Common fields exported by the result metricset. - - - -*`osquery.result.name`*:: -+ --- -The name of the query that generated this event. - - -type: keyword - --- - -*`osquery.result.action`*:: -+ --- -For incremental data, marks whether the entry was added or removed. It can be one of "added", "removed", or "snapshot". - - -type: keyword - --- - -*`osquery.result.host_identifier`*:: -+ --- -The identifier for the host on which the osquery agent is running. Normally the hostname. - - -type: keyword - --- - -*`osquery.result.unix_time`*:: -+ --- -Unix timestamp of the event, in seconds since the epoch. Used for computing the `@timestamp` column. - - -type: long - --- - -*`osquery.result.calendar_time`*:: -+ --- -String representation of the collection time, as formatted by osquery. - - -type: keyword - --- - -[[exported-fields-panw]] -== panw fields - -Module for Palo Alto Networks (PAN-OS) - - - -[float] -=== panw - -Fields from the panw module. - - - -[float] -=== panos - -Fields for the Palo Alto Networks PAN-OS logs. - - - -*`panw.panos.ruleset`*:: -+ --- -Name of the rule that matched this session. - - -type: keyword - --- - -[float] -=== source - -Fields to extend the top-level source object. - - - -*`panw.panos.source.zone`*:: -+ --- -Source zone for this session. - - -type: keyword - --- - -*`panw.panos.source.interface`*:: -+ --- -Source interface for this session. - - -type: keyword - --- - -[float] -=== nat - -Post-NAT source address, if source NAT is performed. - - - -*`panw.panos.source.nat.ip`*:: -+ --- -Post-NAT source IP. - - -type: ip - --- - -*`panw.panos.source.nat.port`*:: -+ --- -Post-NAT source port. - - -type: long - --- - -[float] -=== destination - -Fields to extend the top-level destination object. - - - -*`panw.panos.destination.zone`*:: -+ --- -Destination zone for this session. - - -type: keyword - --- - -*`panw.panos.destination.interface`*:: -+ --- -Destination interface for this session. - - -type: keyword - --- - -[float] -=== nat - -Post-NAT destination address, if destination NAT is performed. - - - -*`panw.panos.destination.nat.ip`*:: -+ --- -Post-NAT destination IP. - - -type: ip - --- - -*`panw.panos.destination.nat.port`*:: -+ --- -Post-NAT destination port. - - -type: long - --- - -*`panw.panos.endreason`*:: -+ --- -The reason a session terminated. - - -type: keyword - --- - -[float] -=== network - -Fields to extend the top-level network object. - - - -*`panw.panos.network.pcap_id`*:: -+ --- -Packet capture ID for a threat. - - -type: keyword - --- - - -*`panw.panos.network.nat.community_id`*:: -+ --- -Community ID flow-hash for the NAT 5-tuple. - - -type: keyword - --- - -[float] -=== file - -Fields to extend the top-level file object. - - - -*`panw.panos.file.hash`*:: -+ --- -Binary hash for a threat file sent to be analyzed by the WildFire service. - - -type: keyword - --- - -[float] -=== url - -Fields to extend the top-level url object. - - - -*`panw.panos.url.category`*:: -+ --- -For threat URLs, it's the URL category. For WildFire, the verdict on the file and is either 'malicious', 'grayware', or 'benign'. - - -type: keyword - --- - -*`panw.panos.flow_id`*:: -+ --- -Internal numeric identifier for each session. - - -type: keyword - --- - -*`panw.panos.sequence_number`*:: -+ --- -Log entry identifier that is incremented sequentially. Unique for each log type. - - -type: long - --- - -*`panw.panos.threat.resource`*:: -+ --- -URL or file name for a threat. - - -type: keyword - --- - -*`panw.panos.threat.id`*:: -+ --- -Palo Alto Networks identifier for the threat. - - -type: keyword - --- - -*`panw.panos.threat.name`*:: -+ --- -Palo Alto Networks name for the threat. - - -type: keyword - --- - -*`panw.panos.action`*:: -+ --- -Action taken for the session. - -type: keyword - --- - -*`panw.panos.type`*:: -+ --- -Specifies the type of the log - --- - -*`panw.panos.sub_type`*:: -+ --- -Specifies the sub type of the log - --- - -*`panw.panos.virtual_sys`*:: -+ --- -Virtual system instance - - -type: keyword - --- - -*`panw.panos.client_os_ver`*:: -+ --- -The client device’s OS version. - - -type: keyword - --- - -*`panw.panos.client_os`*:: -+ --- -The client device’s OS version. - - -type: keyword - --- - -*`panw.panos.client_ver`*:: -+ --- -The client’s GlobalProtect app version. - - -type: keyword - --- - -*`panw.panos.stage`*:: -+ --- -A string showing the stage of the connection - - -type: keyword - -example: before-login - --- - -*`panw.panos.actionflags`*:: -+ --- -A bit field indicating if the log was forwarded to Panorama. - - -type: keyword - --- - -*`panw.panos.error`*:: -+ --- -A string showing that error that has occurred in any event. - - -type: keyword - --- - -*`panw.panos.error_code`*:: -+ --- -An integer associated with any errors that occurred. - - -type: integer - --- - -*`panw.panos.repeatcnt`*:: -+ --- -The number of sessions with the same source IP address, destination IP address, application, and subtype that GlobalProtect has detected within the last five seconds.An integer associated with any errors that occurred. - - -type: integer - --- - -*`panw.panos.serial_number`*:: -+ --- -The serial number of the user’s machine or device. - - -type: keyword - --- - -*`panw.panos.auth_method`*:: -+ --- -A string showing the authentication type - - -type: keyword - -example: LDAP - --- - -*`panw.panos.datasource`*:: -+ --- -Source from which mapping information is collected. - - -type: keyword - --- - -*`panw.panos.datasourcetype`*:: -+ --- -Mechanism used to identify the IP/User mappings within a data source. - - -type: keyword - --- - -*`panw.panos.datasourcename`*:: -+ --- -User-ID source that sends the IP (Port)-User Mapping. - - -type: keyword - --- - -*`panw.panos.factorno`*:: -+ --- -Indicates the use of primary authentication (1) or additional factors (2, 3). - - -type: integer - --- - -*`panw.panos.factortype`*:: -+ --- -Vendor used to authenticate a user when Multi Factor authentication is present. - - -type: keyword - --- - -*`panw.panos.factorcompletiontime`*:: -+ --- -Time the authentication was completed. - - -type: date - --- - -*`panw.panos.ugflags`*:: -+ --- -Displays whether the user group that was found during user group mapping. Supported values are: -User Group Found—Indicates whether the user could be mapped to a group. -Duplicate User—Indicates whether duplicate users were found in a user group. Displays N/A if no user group is found. - - -type: keyword - --- - -[float] -=== device_group_hierarchy - -A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. - - - -*`panw.panos.device_group_hierarchy.level_1`*:: -+ --- -A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. - - -type: keyword - --- - -*`panw.panos.device_group_hierarchy.level_2`*:: -+ --- -A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. - - -type: keyword - --- - -*`panw.panos.device_group_hierarchy.level_3`*:: -+ --- -A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. - - -type: keyword - --- - -*`panw.panos.device_group_hierarchy.level_4`*:: -+ --- -A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. - - -type: keyword - --- - -*`panw.panos.timeout`*:: -+ --- -Timeout after which the IP/User Mappings are cleared. - - -type: integer - --- - -*`panw.panos.vsys_id`*:: -+ --- -A unique identifier for a virtual system on a Palo Alto Networks firewall. - - -type: keyword - --- - -*`panw.panos.vsys_name`*:: -+ --- -The name of the virtual system associated with the session; only valid on firewalls enabled for multiple virtual systems. - - -type: keyword - --- - -*`panw.panos.description`*:: -+ --- -Additional information for any event that has occurred. - - -type: keyword - --- - -*`panw.panos.tunnel_type`*:: -+ --- -The type of tunnel (either SSLVPN or IPSec). - - -type: keyword - --- - -*`panw.panos.connect_method`*:: -+ --- -A string showing the how the GlobalProtect app connects to Gateway - - -type: keyword - --- - -*`panw.panos.matchname`*:: -+ --- -Name of the HIP object or profile. - - -type: keyword - --- - -*`panw.panos.matchtype`*:: -+ --- -Whether the hip field represents a HIP object or a HIP profile. - - -type: keyword - --- - -*`panw.panos.priority`*:: -+ --- -The priority order of the gateway that is based on highest (1), high (2), medium (3), low (4), or lowest (5) to which the GlobalProtect app can connect. - - -type: keyword - --- - -*`panw.panos.response_time`*:: -+ --- -The SSL response time of the selected gateway that is measured in milliseconds on the endpoint during tunnel setup. - - -type: keyword - --- - -*`panw.panos.attempted_gateways`*:: -+ --- -The fields that are collected for each gateway connection attempt with the gateway name, SSL response time, and priority - - -type: keyword - --- - -*`panw.panos.gateway`*:: -+ --- -The name of the gateway that is specified on the portal configuration. - - -type: keyword - --- - -*`panw.panos.selection_type`*:: -+ --- -The connection method that is selected to connect to the gateway. - - -type: keyword - --- - -[[exported-fields-pensando]] -== Pensando fields - -pensando Module - - - -[float] -=== pensando - -Fields from Pensando logs. - - - -[float] -=== dfw - -Fields for Pensando DFW - - - -*`pensando.dfw.action`*:: -+ --- -Action on the flow. - - -type: keyword - --- - -*`pensando.dfw.app_id`*:: -+ --- -Application ID - - -type: integer - --- - -*`pensando.dfw.destination_address`*:: -+ --- -Address of destination. - - -type: keyword - --- - -*`pensando.dfw.destination_port`*:: -+ --- -Port of destination. - - -type: integer - --- - -*`pensando.dfw.direction`*:: -+ --- -Direction of the flow - - -type: keyword - --- - -*`pensando.dfw.protocol`*:: -+ --- -Protocol of the flow - - -type: keyword - --- - -*`pensando.dfw.rule_id`*:: -+ --- -Rule ID that was matched. - - -type: keyword - --- - -*`pensando.dfw.session_id`*:: -+ --- -Session ID of the flow - - -type: integer - --- - -*`pensando.dfw.session_state`*:: -+ --- -Session state of the flow. - - -type: keyword - --- - -*`pensando.dfw.source_address`*:: -+ --- -Source address of the flow. - - -type: keyword - --- - -*`pensando.dfw.source_port`*:: -+ --- -Source port of the flow. - - -type: integer - --- - -*`pensando.dfw.timestamp`*:: -+ --- -Timestamp of the log. - - -type: date - --- - -[[exported-fields-postgresql]] -== PostgreSQL fields - -Module for parsing the PostgreSQL log files. - - - -[float] -=== postgresql - -Fields from PostgreSQL logs. - - - -[float] -=== log - -Fields from the PostgreSQL log files. - - - -*`postgresql.log.timestamp`*:: -+ --- - -deprecated:[7.3.0] - -The timestamp from the log line. - - --- - -*`postgresql.log.core_id`*:: -+ --- - -deprecated:[8.0.0] - -Core id. (deprecated, there is no core_id in PostgreSQL logs, this is actually session_line_number). - - -type: alias - -alias to: postgresql.log.session_line_number - --- - -*`postgresql.log.client_addr`*:: -+ --- -Host where the connection originated from. - - -example: 127.0.0.1 - --- - -*`postgresql.log.client_port`*:: -+ --- -Port where the connection originated from. - - -example: 59700 - --- - -*`postgresql.log.session_id`*:: -+ --- -PostgreSQL session. - - -example: 5ff1dd98.22 - --- - -*`postgresql.log.session_line_number`*:: -+ --- -Line number inside a session. (%l in `log_line_prefix`). - - -type: long - --- - -*`postgresql.log.database`*:: -+ --- -Name of database. - - -example: postgres - --- - -*`postgresql.log.query`*:: -+ --- -Query statement. In the case of CSV parse, look at command_tag to get more context. - - -example: SELECT * FROM users; - --- - -*`postgresql.log.query_step`*:: -+ --- -Statement step when using extended query protocol (one of statement, parse, bind or execute). - - -example: parse - --- - -*`postgresql.log.query_name`*:: -+ --- -Name given to a query when using extended query protocol. If it is "", or not present, this field is ignored. - - -example: pdo_stmt_00000001 - --- - -*`postgresql.log.command_tag`*:: -+ --- -Type of session's current command. The complete list can be found at: src/include/tcop/cmdtaglist.h - - -example: SELECT - --- - -*`postgresql.log.session_start_time`*:: -+ --- -Time when this session started. - - -type: date - --- - -*`postgresql.log.virtual_transaction_id`*:: -+ --- -Backend local transaction id. - - --- - -*`postgresql.log.transaction_id`*:: -+ --- -The id of current transaction. - - -type: long - --- - -*`postgresql.log.sql_state_code`*:: -+ --- -State code returned by Postgres (if any). See also https://www.postgresql.org/docs/current/errcodes-appendix.html - - -type: keyword - --- - -*`postgresql.log.detail`*:: -+ --- -More information about the message, parameters in case of a parametrized query. e.g. 'Role \"user\" does not exist.', 'parameters: $1 = 42', etc. - - --- - -*`postgresql.log.hint`*:: -+ --- -A possible solution to solve an error. - - --- - -*`postgresql.log.internal_query`*:: -+ --- -Internal query that led to the error (if any). - - --- - -*`postgresql.log.internal_query_pos`*:: -+ --- -Character count of the internal query (if any). - - -type: long - --- - -*`postgresql.log.context`*:: -+ --- -Error context. - - --- - -*`postgresql.log.query_pos`*:: -+ --- -Character count of the error position (if any). - - -type: long - --- - -*`postgresql.log.location`*:: -+ --- -Location of the error in the PostgreSQL source code (if log_error_verbosity is set to verbose). - - --- - -*`postgresql.log.application_name`*:: -+ --- -Name of the application of this event. It is defined by the client. - - --- - -*`postgresql.log.backend_type`*:: -+ --- -Type of backend of this event. Possible types are autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, startup, walreceiver, walsender and walwriter. In addition, background workers registered by extensions may have additional types. - - -example: client backend - --- - -*`postgresql.log.error.code`*:: -+ --- - -deprecated:[8.0.0] - -Error code returned by Postgres (if any). Deprecated: errors can have letters. Use sql_state_code instead. - - -type: alias - -alias to: postgresql.log.sql_state_code - --- - -*`postgresql.log.timezone`*:: -+ --- -type: alias - -alias to: event.timezone - --- - -*`postgresql.log.user`*:: -+ --- -type: alias - -alias to: user.name - --- - -*`postgresql.log.level`*:: -+ --- -Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. - - -type: alias - -example: LOG - -alias to: log.level - --- - -*`postgresql.log.message`*:: -+ --- -type: alias - -alias to: message - --- - -[[exported-fields-process]] -== Process fields - -Process metadata fields - - - - -*`process.exe`*:: -+ --- -type: alias - -alias to: process.executable - --- - -[float] -=== owner - -Process owner information. - - -*`process.owner.id`*:: -+ --- -Unique identifier of the user. - -type: keyword - --- - -*`process.owner.name`*:: -+ --- -Short name or login of the user. - -type: keyword - -example: albert - --- - -*`process.owner.name.text`*:: -+ --- -type: text - --- - -[[exported-fields-proofpoint]] -== Proofpoint Email Security fields - -proofpoint fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-rabbitmq]] -== RabbitMQ fields - -RabbitMQ Module - - - -[float] -=== rabbitmq - - - - -[float] -=== log - -RabbitMQ log files - - - -*`rabbitmq.log.pid`*:: -+ --- -The Erlang process id - -type: keyword - -example: <0.222.0> - --- - -[[exported-fields-radware]] -== Radware DefensePro fields - -radware fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-redis]] -== Redis fields - -Redis Module - - - -[float] -=== redis - - - - -[float] -=== log - -Redis log files - - - -*`redis.log.role`*:: -+ --- -The role of the Redis instance. Can be one of `master`, `slave`, `child` (for RDF/AOF writing child), or `sentinel`. - - -type: keyword - --- - -*`redis.log.pid`*:: -+ --- -type: alias - -alias to: process.pid - --- - -*`redis.log.level`*:: -+ --- -type: alias - -alias to: log.level - --- - -*`redis.log.message`*:: -+ --- -type: alias - -alias to: message - --- - -[float] -=== slowlog - -Slow logs are retrieved from Redis via a network connection. - - - -*`redis.slowlog.cmd`*:: -+ --- -The command executed. - - -type: keyword - --- - -*`redis.slowlog.duration.us`*:: -+ --- -How long it took to execute the command in microseconds. - - -type: long - --- - -*`redis.slowlog.id`*:: -+ --- -The ID of the query. - - -type: long - --- - -*`redis.slowlog.key`*:: -+ --- -The key on which the command was executed. - - -type: keyword - --- - -*`redis.slowlog.args`*:: -+ --- -The arguments with which the command was called. - - -type: keyword - --- - -[[exported-fields-s3]] -== s3 fields - -S3 fields from s3 input. - - - -*`bucket.name`*:: -+ --- -Name of the S3 bucket that this log retrieved from. - - -type: keyword - --- - -*`bucket.arn`*:: -+ --- -ARN of the S3 bucket that this log retrieved from. - - -type: keyword - --- - -*`object.key`*:: -+ --- -Name of the S3 object that this log retrieved from. - - -type: keyword - --- - -*`metadata`*:: -+ --- -AWS S3 object metadata values. - -type: flattened - --- - -[[exported-fields-salesforce]] -== Salesforce fields - -Salesforce Module - - - -[float] -=== salesforce - -Fileset for ingesting Salesforce Apex logs. - - - -*`salesforce.access_mode`*:: -+ --- -The mode of collecting logs from Salesforce - "rest" or "stream". - - -type: keyword - --- - -[float] -=== apex - -Fileset for ingesting Salesforce Apex logs. - - - -*`salesforce.apex.action`*:: -+ --- -Action performed by the callout. - - -type: keyword - --- - -*`salesforce.apex.callout_time`*:: -+ --- -Time spent waiting on webservice callouts, in milliseconds. - - -type: keyword - --- - -*`salesforce.apex.class_name`*:: -+ --- -The Apex class name. If the class is part of a managed package, this string includes the package namespace. - - -type: keyword - --- - -*`salesforce.apex.client_name`*:: -+ --- -The name of the client that's using Salesforce services. This field is an optional parameter that can be passed in API calls. If blank, the caller didnt specify a client in the CallOptions header. - - -type: keyword - --- - -*`salesforce.apex.cpu_time`*:: -+ --- -The CPU time in milliseconds used to complete the request. - - -type: keyword - --- - -*`salesforce.apex.db_blocks`*:: -+ --- -Indicates how much activity is occurring in the database. A high value for this field suggests that adding indexes or filters on your queries would benefit performance. - - -type: keyword - --- - -*`salesforce.apex.db_cpu_time`*:: -+ --- -The CPU time in milliseconds to complete the request. Indicates the amount of activity taking place in the database layer during the request. - - -type: keyword - --- - -*`salesforce.apex.db_total_time`*:: -+ --- -Time (in milliseconds) spent waiting for database processing in aggregate for all operations in the request. Compare this field to CPU_TIME to determine whether performance issues are occurring in the database layer or in your own code. - - -type: keyword - --- - -*`salesforce.apex.entity`*:: -+ --- -Name of the external object being accessed. - - -type: keyword - --- - -*`salesforce.apex.entity_name`*:: -+ --- -The name of the object affected by the trigger. - - -type: keyword - --- - -*`salesforce.apex.entry_point`*:: -+ --- -The entry point for this Apex execution. - - -type: keyword - --- - -*`salesforce.apex.event_type`*:: -+ --- -The type of event. The value is always ApexCallout. - - -type: keyword - --- - -*`salesforce.apex.execute_ms`*:: -+ --- -How long it took (in milliseconds) for Salesforce to prepare and execute the query. Available in API version 42.0 and later. - - -type: keyword - --- - -*`salesforce.apex.fetch_ms`*:: -+ --- -How long it took (in milliseconds) to retrieve the query results from the external system. Available in API version 42.0 and later. - - -type: keyword - --- - -*`salesforce.apex.filter`*:: -+ --- -Field expressions to filter which rows to return. Corresponds to WHERE in SOQL queries. - - -type: keyword - --- - -*`salesforce.apex.is_long_running_request`*:: -+ --- -Indicates whether the request is counted against your org's concurrent long-running Apex request limit (true) or not (false). - - -type: keyword - --- - -*`salesforce.apex.limit`*:: -+ --- -Maximum number of rows to return for a query. Corresponds to LIMIT in SOQL queries. - - -type: keyword - --- - -*`salesforce.apex.limit_usage_percent`*:: -+ --- -The percentage of Apex SOAP calls that were made against the organization's limit. - - -type: keyword - --- - -*`salesforce.apex.login_key`*:: -+ --- -The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. - - -type: keyword - --- - -*`salesforce.apex.media_type`*:: -+ --- -The media type of the response. - - -type: keyword - --- - -*`salesforce.apex.message`*:: -+ --- -Error or warning message associated with the failed call. - - -type: keyword - --- - -*`salesforce.apex.method_name`*:: -+ --- -The name of the calling Apex method. - - -type: keyword - --- - -*`salesforce.apex.number_fields`*:: -+ --- -The number of fields or columns, where applicable. - - -type: keyword - --- - -*`salesforce.apex.number_soql_queries`*:: -+ --- -The number of SOQL queries that were executed during the event. - - -type: keyword - --- - -*`salesforce.apex.offset`*:: -+ --- -Number of rows to skip when paging through a result set. Corresponds to OFFSET in SOQL queries. - - -type: keyword - --- - -*`salesforce.apex.orderby`*:: -+ --- -Field or column to use for sorting query results, and whether to sort the results in ascending (default) or descending order. Corresponds to ORDER BY in SOQL queries. - - -type: keyword - --- - -*`salesforce.apex.organization_id`*:: -+ --- -The 15-character ID of the organization. - - -type: keyword - --- - -*`salesforce.apex.query`*:: -+ --- -The SOQL query, if one was performed. - - -type: keyword - --- - -*`salesforce.apex.quiddity`*:: -+ --- -The type of outer execution associated with this event. - - -type: keyword - --- - -*`salesforce.apex.request.id`*:: -+ --- -The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same REQUEST_ID. - - -type: keyword - --- - -*`salesforce.apex.request.status`*:: -+ --- -The status of the request for a page view or user interface action. - - -type: keyword - --- - -*`salesforce.apex.rows.total`*:: -+ --- -Total number of records in the result set. The value is always -1 if the custom adapter's DataSource.Provider class doesn't declare the QUERY_TOTAL_SIZE capability. - - -type: keyword - --- - -*`salesforce.apex.rows.fetched`*:: -+ --- -Number of rows fetched by the callout. Available in API version 42.0 and later. - - -type: keyword - --- - -*`salesforce.apex.rows.processed`*:: -+ --- -The number of rows that were processed in the request. - - -type: keyword - --- - -*`salesforce.apex.run_time`*:: -+ --- -Not used for this event type. Use the TIME field instead. - - -type: keyword - --- - -*`salesforce.apex.select`*:: -+ --- -Comma-separated list of fields being queried. Corresponds to SELECT in SOQL queries. - - -type: keyword - --- - -*`salesforce.apex.subqueries`*:: -+ --- -Reserved for future use. - - -type: keyword - --- - -*`salesforce.apex.throughput`*:: -+ --- -Number of records retrieved in one second. - - -type: keyword - --- - - -*`salesforce.apex.trigger.id`*:: -+ --- -The 15-character ID of the trigger that was fired. - - -type: keyword - --- - -*`salesforce.apex.trigger.name`*:: -+ --- -For triggers coming from managed packages, TRIGGER_NAME includes a namespace prefix separated with a . character. If no namespace prefix is present, the trigger is from an unmanaged trigger. - - -type: keyword - --- - -*`salesforce.apex.trigger.type`*:: -+ --- -The type of this trigger. - - -type: keyword - --- - -*`salesforce.apex.type`*:: -+ --- -The type of Apex callout. - - -type: keyword - --- - -*`salesforce.apex.uri`*:: -+ --- -The URI of the page that's receiving the request. - - -type: keyword - --- - -*`salesforce.apex.uri_id_derived`*:: -+ --- -The 18-character case-safe ID of the URI of the page that's receiving the request. - - -type: keyword - --- - -*`salesforce.apex.user_agent`*:: -+ --- -The numeric code for the type of client used to make the request (for example, the browser, application, or API). - - -type: keyword - --- - -*`salesforce.apex.user_id_derived`*:: -+ --- -The 18-character case-safe ID of the user who's using Salesforce services through the UI or the API. - - -type: keyword - --- - -[float] -=== salesforce.login - -Fileset for ingesting Salesforce Login (Streaming) logs. - - - -*`salesforce.login.application`*:: -+ --- -The application used to access the org. Possible values include: AppExchange, Browser, Salesforce for iOS, Salesforce Developers API Explorer, N/A - - -type: keyword - --- - -*`salesforce.login.auth_method_reference`*:: -+ --- -The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. - - -type: keyword - --- - -*`salesforce.login.auth_service_id`*:: -+ --- -The 18-character ID for an authentication service for a login event. - - -type: keyword - --- - -*`salesforce.login.client_version`*:: -+ --- -The version number of the login client. If no version number is available, “Unknown” is returned. - - -type: keyword - --- - -*`salesforce.login.created_by_id`*:: -+ --- -Unavailable - - -type: keyword - --- - -*`salesforce.login.evaluation_time`*:: -+ --- -The amount of time it took to evaluate the transaction security policy, in milliseconds. - - -type: keyword - --- - -*`salesforce.login.login_geo_id`*:: -+ --- -The Salesforce ID of the LoginGeo object associated with the login user’s IP address. - - -type: keyword - --- - -*`salesforce.login.login_history_id`*:: -+ --- -Tracks a user session so you can correlate user activity with a particular login instance. This field is also available on the LoginHistory, AuthSession, and LoginHistory objects, making it easier to trace events back to a user’s original authentication. - - -type: keyword - --- - -*`salesforce.login.login_type`*:: -+ --- -The type of login used to access the session. - - -type: keyword - --- - -*`salesforce.login.policy_id`*:: -+ --- -The ID of the transaction security policy associated with this event. - - -type: keyword - --- - -*`salesforce.login.policy_outcome`*:: -+ --- -The result of the transaction policy. - - -type: keyword - --- - -*`salesforce.login.related_event_identifier`*:: -+ --- -This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. - - -type: keyword - --- - -*`salesforce.login.session_level`*:: -+ --- -Session-level security controls user access to features that support it, such as connected apps and reporting. Possible values are: HIGH_ASSURANCE, LOW, STANDARD - - -type: keyword - --- - -[float] -=== salesforce.logout - -Fileset for parsing Salesforce Logout (Streaming) logs. - - - -*`salesforce.logout.created_by_id`*:: -+ --- -Unavailable - - -type: keyword - --- - -*`salesforce.logout.related_event_identifier`*:: -+ --- -This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. - - -type: keyword - --- - -*`salesforce.logout.replay_id`*:: -+ --- -Represents an ID value that is populated by the system and refers to the position of the event in the event stream. Replay ID values aren’t guaranteed to be contiguous for consecutive events. A subscriber can store a replay ID value and use it on resubscription to retrieve missed events that are within the retention window. - - -type: keyword - --- - -*`salesforce.logout.schema`*:: -+ --- -Unavailable - - -type: keyword - --- - -[float] -=== salesforce.setup_audit_trail - -Fileset for ingesting Salesforce SetupAuditTrail logs. - - - -*`salesforce.setup_audit_trail.event_type`*:: -+ --- -Event type - - -type: keyword - --- - -*`salesforce.setup_audit_trail.created_by_context`*:: -+ --- -The context under which the Setup change was made. For example, if Einstein uses cloud-to-cloud services to make a change in Setup, the value of this field is Einstein. - - -type: keyword - --- - -*`salesforce.setup_audit_trail.created_by_id`*:: -+ --- -Unknown - - -type: keyword - --- - -*`salesforce.setup_audit_trail.created_by_issuer`*:: -+ --- -Reserved for future use. - - -type: keyword - --- - -*`salesforce.setup_audit_trail.delegate_user`*:: -+ --- -The Login-As user who executed the action in Setup. If a Login-As user didn’t perform the action, this field is blank. This field is available in API version 35.0 and later. - - -type: keyword - --- - -*`salesforce.setup_audit_trail.display`*:: -+ --- -The full description of changes made in Setup. For example, if the Action field has a value of PermSetCreate, the Display field has a value like “Created permission set MAD: with user license Salesforce. - - -type: keyword - --- - -*`salesforce.setup_audit_trail.responsible_namespace_prefix`*:: -+ --- -Unknown - - -type: keyword - --- - -*`salesforce.setup_audit_trail.section`*:: -+ --- -The section in the Setup menu where the action occurred. For example, Manage Users or Company Profile. - - -type: keyword - --- - -[[exported-fields-santa]] -== Google Santa fields - -Santa Module - - - -[float] -=== santa - - - - -*`santa.action`*:: -+ --- -Action - -type: keyword - -example: EXEC - --- - -*`santa.decision`*:: -+ --- -Decision that santad took. - -type: keyword - -example: ALLOW - --- - -*`santa.reason`*:: -+ --- -Reason for the decsision. - -type: keyword - -example: CERT - --- - -*`santa.mode`*:: -+ --- -Operating mode of Santa. - -type: keyword - -example: M - --- - -[float] -=== disk - -Fields for DISKAPPEAR actions. - - -*`santa.disk.volume`*:: -+ --- -The volume name. - --- - -*`santa.disk.bus`*:: -+ --- -The disk bus protocol. - --- - -*`santa.disk.serial`*:: -+ --- -The disk serial number. - --- - -*`santa.disk.bsdname`*:: -+ --- -The disk BSD name. - -example: disk1s3 - --- - -*`santa.disk.model`*:: -+ --- -The disk model. - -example: APPLE SSD SM0512L - --- - -*`santa.disk.fs`*:: -+ --- -The disk volume kind (filesystem type). - -example: apfs - --- - -*`santa.disk.mount`*:: -+ --- -The disk volume path. - --- - -*`santa.certificate.common_name`*:: -+ --- -Common name from code signing certificate. - -type: keyword - --- - -*`santa.certificate.sha256`*:: -+ --- -SHA256 hash of code signing certificate. - -type: keyword - --- - -[[exported-fields-snort]] -== Snort/Sourcefire fields - -snort fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-snyk]] -== Snyk fields - -Snyk module - - - -[float] -=== snyk - -Module for parsing Snyk project vulnerabilities. - - - -*`snyk.projects`*:: -+ --- -Array with all related projects objects. - - -type: flattened - --- - -*`snyk.related.projects`*:: -+ --- -Array of all the related project ID's. - - -type: keyword - --- - -[float] -=== audit - -Module for parsing Snyk audit logs. - - - -*`snyk.audit.org_id`*:: -+ --- -ID of the related Organization related to the event. - - -type: keyword - --- - -*`snyk.audit.project_id`*:: -+ --- -ID of the project related to the event. - - -type: keyword - --- - -*`snyk.audit.content`*:: -+ --- -Overview of the content that was changed, both old and new values. - - -type: flattened - --- - -[float] -=== vulnerabilities - -Module for parsing Snyk project vulnerabilities. - - - -*`snyk.vulnerabilities.cvss3`*:: -+ --- -CSSv3 scores. - - -type: keyword - --- - -*`snyk.vulnerabilities.disclosure_time`*:: -+ --- -The time this vulnerability was originally disclosed to the package maintainers. - - -type: date - --- - -*`snyk.vulnerabilities.exploit_maturity`*:: -+ --- -The Snyk exploit maturity level. - - -type: keyword - --- - -*`snyk.vulnerabilities.id`*:: -+ --- -The vulnerability reference ID. - - -type: keyword - --- - -*`snyk.vulnerabilities.is_ignored`*:: -+ --- -If the vulnerability report has been ignored. - - -type: boolean - --- - -*`snyk.vulnerabilities.is_patchable`*:: -+ --- -If vulnerability is fixable by using a Snyk supplied patch. - - -type: boolean - --- - -*`snyk.vulnerabilities.is_patched`*:: -+ --- -If the vulnerability has been patched. - - -type: boolean - --- - -*`snyk.vulnerabilities.is_pinnable`*:: -+ --- -If the vulnerability is fixable by pinning a transitive dependency. - - -type: boolean - --- - -*`snyk.vulnerabilities.is_upgradable`*:: -+ --- -If the vulnerability fixable by upgrading a dependency. - - -type: boolean - --- - -*`snyk.vulnerabilities.language`*:: -+ --- -The package's programming language. - - -type: keyword - --- - -*`snyk.vulnerabilities.package`*:: -+ --- -The package identifier according to its package manager. - - -type: keyword - --- - -*`snyk.vulnerabilities.package_manager`*:: -+ --- -The package manager. - - -type: keyword - --- - -*`snyk.vulnerabilities.patches`*:: -+ --- -Patches required to resolve the issue created by Snyk. - - -type: flattened - --- - -*`snyk.vulnerabilities.priority_score`*:: -+ --- -The CVS priority score. - - -type: long - --- - -*`snyk.vulnerabilities.publication_time`*:: -+ --- -The vulnerability publication time. - - -type: date - --- - -*`snyk.vulnerabilities.jira_issue_url`*:: -+ --- -Link to the related Jira issue. - - -type: keyword - --- - -*`snyk.vulnerabilities.original_severity`*:: -+ --- -The original severity of the vulnerability. - - -type: long - --- - -*`snyk.vulnerabilities.reachability`*:: -+ --- -If the vulnerable function from the library is used in the code scanned. Can either be No Info, Potentially reachable and Reachable. - - -type: keyword - --- - -*`snyk.vulnerabilities.title`*:: -+ --- -The issue title. - - -type: keyword - --- - -*`snyk.vulnerabilities.type`*:: -+ --- -The issue type. Can be either "license" or "vulnerability". - - -type: keyword - --- - -*`snyk.vulnerabilities.unique_severities_list`*:: -+ --- -A list of related unique severities. - - -type: keyword - --- - -*`snyk.vulnerabilities.version`*:: -+ --- -The package version this issue is applicable to. - - -type: keyword - --- - -*`snyk.vulnerabilities.introduced_date`*:: -+ --- -The date the vulnerability was initially found. - - -type: date - --- - -*`snyk.vulnerabilities.is_fixed`*:: -+ --- -If the related vulnerability has been resolved. - - -type: boolean - --- - -*`snyk.vulnerabilities.credit`*:: -+ --- -Reference to the person that original found the vulnerability. - - -type: keyword - --- - -*`snyk.vulnerabilities.semver`*:: -+ --- -One or more semver ranges this issue is applicable to. The format varies according to package manager. - - -type: flattened - --- - -*`snyk.vulnerabilities.identifiers.alternative`*:: -+ --- -Additional vulnerability identifiers. - - -type: keyword - --- - -*`snyk.vulnerabilities.identifiers.cwe`*:: -+ --- -CWE vulnerability identifiers. - - -type: keyword - --- - -[[exported-fields-sonicwall]] -== Sonicwall-FW fields - -sonicwall fields. - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[[exported-fields-sophos]] -== sophos fields - -sophos Module - - - -*`network.interface.name`*:: -+ --- -Name of the network interface where the traffic has been observed. - - -type: keyword - --- - - - -*`rsa.internal.msg`*:: -+ --- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword - --- - -*`rsa.internal.messageid`*:: -+ --- -type: keyword - --- - -*`rsa.internal.event_desc`*:: -+ --- -type: keyword - --- - -*`rsa.internal.message`*:: -+ --- -This key captures the contents of instant messages - -type: keyword - --- - -*`rsa.internal.time`*:: -+ --- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date - --- - -*`rsa.internal.level`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.msg_id`*:: -+ --- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.msg_vid`*:: -+ --- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.data`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_val`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.resource`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.obj_id`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.statement`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.audit_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.entry`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.hcode`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.inode`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.resource_class`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.feed_desc`*:: -+ --- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.feed_name`*:: -+ --- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.cid`*:: -+ --- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_class`*:: -+ --- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_group`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_host`*:: -+ --- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_ip`*:: -+ --- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_ipv6`*:: -+ --- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.device_type`*:: -+ --- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.device_type_id`*:: -+ --- -Deprecated key defined only in table map. - -type: long - --- - -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - -type: long - --- - -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.feed_category`*:: -+ --- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.forward_ip`*:: -+ --- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip - --- - -*`rsa.internal.forward_ipv6`*:: -+ --- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip - --- - -*`rsa.internal.header_id`*:: -+ --- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_cid`*:: -+ --- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.lc_ctime`*:: -+ --- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date - --- - -*`rsa.internal.mcb_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcb_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - -type: long - --- - -*`rsa.internal.mcbc_req`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.mcbc_res`*:: -+ --- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long - --- - -*`rsa.internal.medium`*:: -+ --- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - -type: long - --- - -*`rsa.internal.node_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.nwe_callback_id`*:: -+ --- -This key denotes that event is endpoint related - -type: keyword - --- - -*`rsa.internal.parse_error`*:: -+ --- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.payload_req`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.payload_res`*:: -+ --- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long - --- - -*`rsa.internal.process_vid_dst`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword - --- - -*`rsa.internal.process_vid_src`*:: -+ --- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword - --- - -*`rsa.internal.rid`*:: -+ --- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.session_split`*:: -+ --- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.internal.size`*:: -+ --- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: long - --- - -*`rsa.internal.sourcefile`*:: -+ --- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.internal.ubc_req`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.ubc_res`*:: -+ --- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long - --- - -*`rsa.internal.word`*:: -+ --- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - -type: keyword - --- - - -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date - --- - -*`rsa.time.duration_time`*:: -+ --- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double - --- - -*`rsa.time.event_time_str`*:: -+ --- -This key is used to capture the incomplete time mentioned in a session as a string - -type: keyword - --- - -*`rsa.time.starttime`*:: -+ --- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.month`*:: -+ --- -type: keyword - --- - -*`rsa.time.day`*:: -+ --- -type: keyword - --- - -*`rsa.time.endtime`*:: -+ --- -This key is used to capture the End time mentioned in a session in a standard form - -type: date - --- - -*`rsa.time.timezone`*:: -+ --- -This key is used to capture the timezone of the Event Time - -type: keyword - --- - -*`rsa.time.duration_str`*:: -+ --- -A text string version of the duration - -type: keyword - --- - -*`rsa.time.date`*:: -+ --- -type: keyword - --- - -*`rsa.time.year`*:: -+ --- -type: keyword - --- - -*`rsa.time.recorded_time`*:: -+ --- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date - --- - -*`rsa.time.datetime`*:: -+ --- -type: keyword - --- - -*`rsa.time.effective_time`*:: -+ --- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date - --- - -*`rsa.time.expire_time`*:: -+ --- -This key is the timestamp that explicitly refers to an expiration. - -type: date - --- - -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time - -type: keyword - --- - -*`rsa.time.hour`*:: -+ --- -type: keyword - --- - -*`rsa.time.min`*:: -+ --- -type: keyword - --- - -*`rsa.time.timestamp`*:: -+ --- -type: keyword - --- - -*`rsa.time.event_queue_time`*:: -+ --- -This key is the Time that the event was queued. - -type: date - --- - -*`rsa.time.p_time1`*:: -+ --- -type: keyword - --- - -*`rsa.time.tzone`*:: -+ --- -type: keyword - --- - -*`rsa.time.eventtime`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmtdate`*:: -+ --- -type: keyword - --- - -*`rsa.time.gmttime`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_date`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_month`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_time2`*:: -+ --- -type: keyword - --- - -*`rsa.time.p_year`*:: -+ --- -type: keyword - --- - -*`rsa.time.expire_time_str`*:: -+ --- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword - --- - -*`rsa.time.stamp`*:: -+ --- -Deprecated key defined only in table map. - -type: date - --- - - -*`rsa.misc.action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.result`*:: -+ --- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword - --- - -*`rsa.misc.severity`*:: -+ --- -This key is used to capture the severity given the session - -type: keyword - --- - -*`rsa.misc.event_type`*:: -+ --- -This key captures the event category type as specified by the event source. - -type: keyword - --- - -*`rsa.misc.reference_id`*:: -+ --- -This key is used to capture an event id from the session directly - -type: keyword - --- - -*`rsa.misc.version`*:: -+ --- -This key captures Version of the application or OS which is generating the event. - -type: keyword - --- - -*`rsa.misc.disposition`*:: -+ --- -This key captures the The end state of an action. - -type: keyword - --- - -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword - --- - -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword - --- - -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object - -type: keyword - --- - -*`rsa.misc.obj_type`*:: -+ --- -This is used to capture type of object - -type: keyword - --- - -*`rsa.misc.event_source`*:: -+ --- -This key captures Source of the event that’s not a hostname - -type: keyword - --- - -*`rsa.misc.log_session_id`*:: -+ --- -This key is used to capture a sessionid from the session directly - -type: keyword - --- - -*`rsa.misc.group`*:: -+ --- -This key captures the Group Name value - -type: keyword - --- - -*`rsa.misc.policy_name`*:: -+ --- -This key is used to capture the Policy Name only. - -type: keyword - --- - -*`rsa.misc.rule_name`*:: -+ --- -This key captures the Rule Name - -type: keyword - --- - -*`rsa.misc.context`*:: -+ --- -This key captures Information which adds additional context to the event. - -type: keyword - --- - -*`rsa.misc.change_new`*:: -+ --- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.space`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client`*:: -+ --- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword - --- - -*`rsa.misc.msgIdPart1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.change_old`*:: -+ --- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.operation_id`*:: -+ --- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword - --- - -*`rsa.misc.event_state`*:: -+ --- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword - --- - -*`rsa.misc.group_object`*:: -+ --- -This key captures a collection/grouping of entities. Specific usage - -type: keyword - --- - -*`rsa.misc.node`*:: -+ --- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword - --- - -*`rsa.misc.rule`*:: -+ --- -This key captures the Rule number - -type: keyword - --- - -*`rsa.misc.device_name`*:: -+ --- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword - --- - -*`rsa.misc.param`*:: -+ --- -This key is the parameters passed as part of a command or application, etc. - -type: keyword - --- - -*`rsa.misc.change_attrib`*:: -+ --- -This key is used to capture the name of the attribute that’s changing in a session - -type: keyword - --- - -*`rsa.misc.event_computer`*:: -+ --- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword - --- - -*`rsa.misc.reference_id1`*:: -+ --- -This key is for Linked ID to be used as an addition to "reference.id" - -type: keyword - --- - -*`rsa.misc.event_log`*:: -+ --- -This key captures the Name of the event log - -type: keyword - --- - -*`rsa.misc.OS`*:: -+ --- -This key captures the Name of the Operating System - -type: keyword - --- - -*`rsa.misc.terminal`*:: -+ --- -This key captures the Terminal Names only - -type: keyword - --- - -*`rsa.misc.msgIdPart3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.filter`*:: -+ --- -This key captures Filter used to reduce result set - -type: keyword - --- - -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. - -type: keyword - --- - -*`rsa.misc.checksum`*:: -+ --- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword - --- - -*`rsa.misc.event_user`*:: -+ --- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - -type: keyword - --- - -*`rsa.misc.virusname`*:: -+ --- -This key captures the name of the virus - -type: keyword - --- - -*`rsa.misc.content_type`*:: -+ --- -This key is used to capture Content Type only. - -type: keyword - --- - -*`rsa.misc.group_id`*:: -+ --- -This key captures Group ID Number (related to the group name) - -type: keyword - --- - -*`rsa.misc.policy_id`*:: -+ --- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - -type: keyword - --- - -*`rsa.misc.vsys`*:: -+ --- -This key captures Virtual System Name - -type: keyword - --- - -*`rsa.misc.connection_id`*:: -+ --- -This key captures the Connection ID - -type: keyword - --- - -*`rsa.misc.reference_id2`*:: -+ --- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword - --- - -*`rsa.misc.sensor`*:: -+ --- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - -type: keyword - --- - -*`rsa.misc.sig_id`*:: -+ --- -This key captures IDS/IPS Int Signature ID - -type: long - --- - -*`rsa.misc.port_name`*:: -+ --- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - -type: keyword - --- - -*`rsa.misc.rule_group`*:: -+ --- -This key captures the Rule group name - -type: keyword - --- - -*`rsa.misc.risk_num`*:: -+ --- -This key captures a Numeric Risk value - -type: double - --- - -*`rsa.misc.trigger_val`*:: -+ --- -This key captures the Value of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.log_session_id1`*:: -+ --- -This key is used to capture a Linked (Related) Session ID from the session directly - -type: keyword - --- - -*`rsa.misc.comp_version`*:: -+ --- -This key captures the Version level of a sub-component of a product. - -type: keyword - --- - -*`rsa.misc.content_version`*:: -+ --- -This key captures Version level of a signature or database content. - -type: keyword - --- - -*`rsa.misc.hardware_id`*:: -+ --- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword - --- - -*`rsa.misc.risk`*:: -+ --- -This key captures the non-numeric risk value - -type: keyword - --- - -*`rsa.misc.event_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.reason`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mail_id`*:: -+ --- -This key is used to capture the mailbox id/name - -type: keyword - --- - -*`rsa.misc.rule_uid`*:: -+ --- -This key is the Unique Identifier for a rule. - -type: keyword - --- - -*`rsa.misc.trigger_desc`*:: -+ --- -This key captures the Description of the trigger or threshold condition. - -type: keyword - --- - -*`rsa.misc.inout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.data_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgIdPart4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.error`*:: -+ --- -This key captures All non successful Error codes or responses - -type: keyword - --- - -*`rsa.misc.index`*:: -+ --- -type: keyword - --- - -*`rsa.misc.listnum`*:: -+ --- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword - --- - -*`rsa.misc.ntype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.observed_val`*:: -+ --- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.policy_value`*:: -+ --- -This key captures the contents of the policy. This contains details about the policy - -type: keyword - --- - -*`rsa.misc.pool_name`*:: -+ --- -This key captures the name of a resource pool - -type: keyword - --- - -*`rsa.misc.rule_template`*:: -+ --- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword - --- - -*`rsa.misc.count`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigcat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comments`*:: -+ --- -Comment information provided in the log message - -type: keyword - --- - -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number - -type: long - --- - -*`rsa.misc.expected_val`*:: -+ --- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword - --- - -*`rsa.misc.job_num`*:: -+ --- -This key captures the Job Number - -type: keyword - --- - -*`rsa.misc.spi_dst`*:: -+ --- -Destination SPI Index - -type: keyword - --- - -*`rsa.misc.spi_src`*:: -+ --- -Source SPI Index - -type: keyword - --- - -*`rsa.misc.code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.agent_id`*:: -+ --- -This key is used to capture agent id - -type: keyword - --- - -*`rsa.misc.message_body`*:: -+ --- -This key captures the The contents of the message body. - -type: keyword - --- - -*`rsa.misc.phone`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sig_id_str`*:: -+ --- -This key captures a string object of the sigid variable. - -type: keyword - --- - -*`rsa.misc.cmd`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu`*:: -+ --- -This key is the CPU time used in the execution of the event being recorded. - -type: long - --- - -*`rsa.misc.event_desc`*:: -+ --- -This key is used to capture a description of an event available directly or inferred - -type: keyword - --- - -*`rsa.misc.sig_id1`*:: -+ --- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long - --- - -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_client`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.priority`*:: -+ --- -type: keyword - --- - -*`rsa.misc.context_subject`*:: -+ --- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword - --- - -*`rsa.misc.context_target`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - -type: keyword - --- - -*`rsa.misc.fcatnum`*:: -+ --- -This key captures Filter Category Number. Legacy Usage - -type: keyword - --- - -*`rsa.misc.library`*:: -+ --- -This key is used to capture library information in mainframe devices - -type: keyword - --- - -*`rsa.misc.parent_node`*:: -+ --- -This key captures the Parent Node Name. Must be related to node variable. - -type: keyword - --- - -*`rsa.misc.risk_info`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.tcp_flags`*:: -+ --- -This key is captures the TCP flags set in any packet of session - -type: long - --- - -*`rsa.misc.tos`*:: -+ --- -This key describes the type of service - -type: long - --- - -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. - -type: keyword - --- - -*`rsa.misc.workspace`*:: -+ --- -This key captures Workspace Description - -type: keyword - --- - -*`rsa.misc.command`*:: -+ --- -type: keyword - --- - -*`rsa.misc.event_category`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facilityname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword - --- - -*`rsa.misc.jobname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policy_waiver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.second`*:: -+ --- -type: keyword - --- - -*`rsa.misc.space1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.subcategory`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alert_id`*:: -+ --- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.checksum_dst`*:: -+ --- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - -type: keyword - --- - -*`rsa.misc.checksum_src`*:: -+ --- -This key is used to capture the checksum or hash of the source entity such as a file or process. - -type: keyword - --- - -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result - -type: long - --- - -*`rsa.misc.payload_dst`*:: -+ --- -This key is used to capture destination payload - -type: keyword - --- - -*`rsa.misc.payload_src`*:: -+ --- -This key is used to capture source payload - -type: keyword - --- - -*`rsa.misc.pool_id`*:: -+ --- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword - --- - -*`rsa.misc.process_id_val`*:: -+ --- -This key is a failure key for Process ID when it is not an integer value - -type: keyword - --- - -*`rsa.misc.risk_num_comm`*:: -+ --- -This key captures Risk Number Community - -type: double - --- - -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen - -type: double - --- - -*`rsa.misc.risk_num_sand`*:: -+ --- -This key captures Risk Number SandBox - -type: double - --- - -*`rsa.misc.risk_num_static`*:: -+ --- -This key captures Risk Number Static - -type: double - --- - -*`rsa.misc.risk_suspicious`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.risk_warning`*:: -+ --- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword - --- - -*`rsa.misc.snmp_oid`*:: -+ --- -SNMP Object Identifier - -type: keyword - --- - -*`rsa.misc.sql`*:: -+ --- -This key captures the SQL query - -type: keyword - --- - -*`rsa.misc.vuln_ref`*:: -+ --- -This key captures the Vulnerability Reference details - -type: keyword - --- - -*`rsa.misc.acl_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_op`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.acl_table`*:: -+ --- -type: keyword - --- - -*`rsa.misc.admin`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarm_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.alarmname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.app_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.audit_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.auditdata`*:: -+ --- -type: keyword - --- - -*`rsa.misc.benchmark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.bypass`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cache_hit`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cefversion`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword - --- - -*`rsa.misc.changes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.client_ip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_bgpv4nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_dst_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_engine_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_f_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampintv`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inacttimeout`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_inpermpckts`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ip_proto_ver`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_ipv4_ident`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_l_switch`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_maxpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_min_ttl`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_minpcktlen`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_4`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_6`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_8`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_byt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sampint`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_spackets`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_src_vlan`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_sysuptime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_template_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totflowexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cn_v6optheaders`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_rbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.comp_sbytes`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cpu_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.criticality`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_agency_dst`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_analyzedby`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_other`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_primary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bgpv6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_context`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_control`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_datecret`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_dst_tld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_eth_src_ven`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_event_uuid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_filetype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_desc`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_if_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ip_next_hop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_opswatresult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_payload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrant`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_registrar`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_represult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_rpayload`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_streams`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_targetmodule`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword - --- - -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword - --- - -*`rsa.misc.description`*:: -+ --- -type: keyword - --- - -*`rsa.misc.devvendor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.distance`*:: -+ --- -type: keyword - --- - -*`rsa.misc.dstburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.edomaub`*:: -+ --- -type: keyword - --- - -*`rsa.misc.euid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.facility`*:: -+ --- -type: keyword - --- - -*`rsa.misc.finterface`*:: -+ --- -type: keyword - --- - -*`rsa.misc.flags`*:: -+ --- -type: keyword - --- - -*`rsa.misc.gaddr`*:: -+ --- -type: keyword - --- - -*`rsa.misc.id3`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_members`*:: -+ --- -type: keyword - --- - -*`rsa.misc.im_username`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipscat`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ipspri`*:: -+ --- -type: keyword - --- - -*`rsa.misc.latitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.linenum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.list_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.load_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_floor`*:: -+ --- -type: keyword - --- - -*`rsa.misc.location_mark`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.log_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logip`*:: -+ --- -type: keyword - --- - -*`rsa.misc.logname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.longitude`*:: -+ --- -type: keyword - --- - -*`rsa.misc.lport`*:: -+ --- -type: keyword - --- - -*`rsa.misc.mbug_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.misc_name`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msg_type`*:: -+ --- -type: keyword - --- - -*`rsa.misc.msgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.netsessid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.number2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.nwwn`*:: -+ --- -type: keyword - --- - -*`rsa.misc.object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.operation`*:: -+ --- -type: keyword - --- - -*`rsa.misc.opkt`*:: -+ --- -type: keyword - --- - -*`rsa.misc.orig_from`*:: -+ --- -type: keyword - --- - -*`rsa.misc.owner_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_action`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_filter`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_group_object`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_id`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_msgid2`*:: -+ --- -type: keyword - --- - -*`rsa.misc.p_result1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_chg`*:: -+ --- -type: keyword - --- - -*`rsa.misc.password_expire`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permgranted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.permwanted`*:: -+ --- -type: keyword - --- - -*`rsa.misc.pgid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.policyUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.program`*:: -+ --- -type: keyword - --- - -*`rsa.misc.real_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_device`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword - --- - -*`rsa.misc.rec_library`*:: -+ --- -type: keyword - --- - -*`rsa.misc.recordnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.ruid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sdomain_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sec`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sensorname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.seqnum`*:: -+ --- -type: keyword - --- - -*`rsa.misc.session`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword - --- - -*`rsa.misc.sigUUID`*:: -+ --- -type: keyword - --- - -*`rsa.misc.spi`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcburb`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.srcservice`*:: -+ --- -type: keyword - --- - -*`rsa.misc.state`*:: -+ --- -type: keyword - --- - -*`rsa.misc.status1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.svcno`*:: -+ --- -type: keyword - --- - -*`rsa.misc.system`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tbdstr1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdom`*:: -+ --- -type: keyword - --- - -*`rsa.misc.tgtdomain`*:: -+ --- -type: keyword - --- - -*`rsa.misc.threshold`*:: -+ --- -type: keyword - --- - -*`rsa.misc.type1`*:: -+ --- -type: keyword - --- - -*`rsa.misc.udb_class`*:: -+ --- -type: keyword - --- - -*`rsa.misc.url_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.user_div`*:: -+ --- -type: keyword - --- - -*`rsa.misc.userid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.username_fld`*:: -+ --- -type: keyword - --- - -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword - --- - -*`rsa.misc.v_instafname`*:: -+ --- -type: keyword - --- - -*`rsa.misc.virt_data`*:: -+ --- -type: keyword - --- - -*`rsa.misc.vpnid`*:: -+ --- -type: keyword - --- - -*`rsa.misc.autorun_type`*:: -+ --- -This is used to capture Auto Run type - -type: keyword - --- - -*`rsa.misc.cc_number`*:: -+ --- -Valid Credit Card Numbers only - -type: long - --- - -*`rsa.misc.content`*:: -+ --- -This key captures the content type from protocol headers - -type: keyword - --- - -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only - -type: long - --- - -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match - -type: keyword - --- - -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers - -type: keyword - --- - -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. - -type: long - --- - -*`rsa.misc.link`*:: -+ --- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword - --- - -*`rsa.misc.match`*:: -+ --- -This key is for regex match name from search.ini - -type: keyword - --- - -*`rsa.misc.param_dst`*:: -+ --- -This key captures the command line/launch argument of the target process or file - -type: keyword - --- - -*`rsa.misc.param_src`*:: -+ --- -This key captures source parameter - -type: keyword - --- - -*`rsa.misc.search_text`*:: -+ --- -This key captures the Search Text used - -type: keyword - --- - -*`rsa.misc.sig_name`*:: -+ --- -This key is used to capture the Signature Name only. - -type: keyword - --- - -*`rsa.misc.snmp_value`*:: -+ --- -SNMP set request value - -type: keyword - --- - -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session - -type: long - --- - - -*`rsa.db.index`*:: -+ --- -This key captures IndexID of the index. - -type: keyword - --- - -*`rsa.db.instance`*:: -+ --- -This key is used to capture the database server instance name - -type: keyword - --- - -*`rsa.db.database`*:: -+ --- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword - --- - -*`rsa.db.transact_id`*:: -+ --- -This key captures the SQL transantion ID of the current session - -type: keyword - --- - -*`rsa.db.permissions`*:: -+ --- -This key captures permission or privilege level assigned to a resource. - -type: keyword - --- - -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name - -type: keyword - --- - -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database - -type: keyword - --- - -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server - -type: long - --- - -*`rsa.db.lread`*:: -+ --- -This key is used for the number of logical reads - -type: long - --- - -*`rsa.db.lwrite`*:: -+ --- -This key is used for the number of logical writes - -type: long - --- - -*`rsa.db.pread`*:: -+ --- -This key is used for the number of physical writes - -type: long - --- - - -*`rsa.network.alias_host`*:: -+ --- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword - --- - -*`rsa.network.domain`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_dst`*:: -+ --- -This key should only be used when it’s a Destination Hostname - -type: keyword - --- - -*`rsa.network.network_service`*:: -+ --- -This is used to capture layer 7 protocols/service names - -type: keyword - --- - -*`rsa.network.interface`*:: -+ --- -This key should be used when the source or destination context of an interface is not clear - -type: keyword - --- - -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - -type: long - --- - -*`rsa.network.eth_host`*:: -+ --- -Deprecated, use alias.mac - -type: keyword - --- - -*`rsa.network.sinterface`*:: -+ --- -This key should only be used when it’s a Source Interface - -type: keyword - --- - -*`rsa.network.dinterface`*:: -+ --- -This key should only be used when it’s a Destination Interface - -type: keyword - --- - -*`rsa.network.vlan`*:: -+ --- -This key should only be used to capture the ID of the Virtual LAN - -type: long - --- - -*`rsa.network.zone_src`*:: -+ --- -This key should only be used when it’s a Source Zone. - -type: keyword - --- - -*`rsa.network.zone`*:: -+ --- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword - --- - -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. - -type: keyword - --- - -*`rsa.network.gateway`*:: -+ --- -This key is used to capture the IP Address of the gateway - -type: keyword - --- - -*`rsa.network.icmp_type`*:: -+ --- -This key is used to capture the ICMP type only - -type: long - --- - -*`rsa.network.mask`*:: -+ --- -This key is used to capture the device network IPmask. - -type: keyword - --- - -*`rsa.network.icmp_code`*:: -+ --- -This key is used to capture the ICMP code only - -type: long - --- - -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information - -type: keyword - --- - -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask - -type: keyword - --- - -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear - -type: long - --- - -*`rsa.network.smask`*:: -+ --- -This key is used for capturing source Network Mask - -type: keyword - --- - -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword - --- - -*`rsa.network.paddr`*:: -+ --- -Deprecated - -type: ip - --- - -*`rsa.network.faddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.lhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.origin`*:: -+ --- -type: keyword - --- - -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.addr`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_a_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.fhost`*:: -+ --- -type: keyword - --- - -*`rsa.network.fport`*:: -+ --- -type: keyword - --- - -*`rsa.network.laddr`*:: -+ --- -type: keyword - --- - -*`rsa.network.linterface`*:: -+ --- -type: keyword - --- - -*`rsa.network.phost`*:: -+ --- -type: keyword - --- - -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst - -type: keyword - --- - -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long - --- - -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - -type: long - --- - -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_id`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_opcode`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_resp`*:: -+ --- -type: keyword - --- - -*`rsa.network.dns_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.domain1`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_type`*:: -+ --- -type: keyword - --- - -*`rsa.network.packet_length`*:: -+ --- -type: keyword - --- - -*`rsa.network.host_orig`*:: -+ --- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - -type: keyword - --- - -*`rsa.network.rpayload`*:: -+ --- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword - --- - -*`rsa.network.vlan_name`*:: -+ --- -This key should only be used to capture the name of the Virtual LAN - -type: keyword - --- - - -*`rsa.investigations.ec_activity`*:: -+ --- -This key captures the particular event activity(Ex:Logoff) - -type: keyword - --- - -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword - --- - -*`rsa.investigations.ec_subject`*:: -+ --- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword - --- - -*`rsa.investigations.ec_outcome`*:: -+ --- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword - --- - -*`rsa.investigations.event_cat`*:: -+ --- -This key captures the Event category number - -type: long - --- - -*`rsa.investigations.event_cat_name`*:: -+ --- -This key captures the event category name corresponding to the event cat code - -type: keyword - --- - -*`rsa.investigations.event_vcat`*:: -+ --- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword - --- - -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword - --- - -*`rsa.investigations.analysis_service`*:: -+ --- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword - --- - -*`rsa.investigations.analysis_session`*:: -+ --- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword - --- - -*`rsa.investigations.boc`*:: -+ --- -This is used to capture behaviour of compromise - -type: keyword - --- - -*`rsa.investigations.eoc`*:: -+ --- -This is used to capture Enablers of Compromise - -type: keyword - --- - -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category - -type: keyword - --- - -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context - -type: keyword - --- - -*`rsa.investigations.ioc`*:: -+ --- -This is key capture indicator of compromise - -type: keyword - --- - - -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long - --- - -*`rsa.counters.dclass_c2`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c2.str only - -type: long - --- - -*`rsa.counters.event_counter`*:: -+ --- -This is used to capture the number of times an event repeated - -type: long - --- - -*`rsa.counters.dclass_r1`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c3.str only - -type: long - --- - -*`rsa.counters.dclass_c1_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c1 only - -type: keyword - --- - -*`rsa.counters.dclass_c2_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword - --- - -*`rsa.counters.dclass_r1_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword - --- - -*`rsa.counters.dclass_r2`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r2.str only - -type: keyword - --- - -*`rsa.counters.dclass_c3_str`*:: -+ --- -This is a generic counter string key that should be used with the label dclass.c3 only - -type: keyword - --- - -*`rsa.counters.dclass_r3`*:: -+ --- -This is a generic ratio key that should be used with the label dclass.r3.str only - -type: keyword - --- - -*`rsa.counters.dclass_r2_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword - --- - -*`rsa.counters.dclass_r3_str`*:: -+ --- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword - --- - - -*`rsa.identity.auth_method`*:: -+ --- -This key is used to capture authentication methods used only - -type: keyword - --- - -*`rsa.identity.user_role`*:: -+ --- -This key is used to capture the Role of a user only - -type: keyword - --- - -*`rsa.identity.dn`*:: -+ --- -X.500 (LDAP) Distinguished Name - -type: keyword - --- - -*`rsa.identity.logon_type`*:: -+ --- -This key is used to capture the type of logon method used. - -type: keyword - --- - -*`rsa.identity.profile`*:: -+ --- -This key is used to capture the user profile - -type: keyword - --- - -*`rsa.identity.accesses`*:: -+ --- -This key is used to capture actual privileges used in accessing an object - -type: keyword - --- - -*`rsa.identity.realm`*:: -+ --- -Radius realm or similar grouping of accounts - -type: keyword - --- - -*`rsa.identity.user_sid_dst`*:: -+ --- -This key captures Destination User Session ID - -type: keyword - --- - -*`rsa.identity.dn_src`*:: -+ --- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - -type: keyword - --- - -*`rsa.identity.org`*:: -+ --- -This key captures the User organization - -type: keyword - --- - -*`rsa.identity.dn_dst`*:: -+ --- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - -type: keyword - --- - -*`rsa.identity.firstname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.lastname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.user_dept`*:: -+ --- -User's Department Names only - -type: keyword - --- - -*`rsa.identity.user_sid_src`*:: -+ --- -This key captures Source User Session ID - -type: keyword - --- - -*`rsa.identity.federated_sp`*:: -+ --- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword - --- - -*`rsa.identity.federated_idp`*:: -+ --- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword - --- - -*`rsa.identity.logon_type_desc`*:: -+ --- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword - --- - -*`rsa.identity.middlename`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.identity.password`*:: -+ --- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword - --- - -*`rsa.identity.host_role`*:: -+ --- -This key should only be used to capture the role of a Host Machine - -type: keyword - --- - -*`rsa.identity.ldap`*:: -+ --- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword - --- - -*`rsa.identity.ldap_query`*:: -+ --- -This key is the Search criteria from an LDAP search - -type: keyword - --- - -*`rsa.identity.ldap_response`*:: -+ --- -This key is to capture Results from an LDAP search - -type: keyword - --- - -*`rsa.identity.owner`*:: -+ --- -This is used to capture username the process or service is running as, the author of the task - -type: keyword - --- - -*`rsa.identity.service_account`*:: -+ --- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - -type: keyword - --- - - -*`rsa.email.email_dst`*:: -+ --- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword - --- - -*`rsa.email.email_src`*:: -+ --- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword - --- - -*`rsa.email.subject`*:: -+ --- -This key is used to capture the subject string from an Email only. - -type: keyword - --- - -*`rsa.email.email`*:: -+ --- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword - --- - -*`rsa.email.trans_from`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.email.trans_to`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - - -*`rsa.file.privilege`*:: -+ --- -Deprecated, use permissions - -type: keyword - --- - -*`rsa.file.attachment`*:: -+ --- -This key captures the attachment file name - -type: keyword - --- - -*`rsa.file.filesystem`*:: -+ --- -type: keyword - --- - -*`rsa.file.binary`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.file.filename_dst`*:: -+ --- -This is used to capture name of the file targeted by the action - -type: keyword - --- - -*`rsa.file.filename_src`*:: -+ --- -This is used to capture name of the parent filename, the file which performed the action - -type: keyword - --- - -*`rsa.file.filename_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.file.directory_dst`*:: -+ --- -This key is used to capture the directory of the target process or file - -type: keyword - --- - -*`rsa.file.directory_src`*:: -+ --- -This key is used to capture the directory of the source process or file - -type: keyword - --- - -*`rsa.file.file_entropy`*:: -+ --- -This is used to capture entropy vale of a file - -type: double - --- - -*`rsa.file.file_vendor`*:: -+ --- -This is used to capture Company name of file located in version_info - -type: keyword - --- - -*`rsa.file.task_name`*:: -+ --- -This is used to capture name of the task - -type: keyword - --- - - -*`rsa.web.fqdn`*:: -+ --- -Fully Qualified Domain Names - -type: keyword - --- - -*`rsa.web.web_cookie`*:: -+ --- -This key is used to capture the Web cookies specifically. - -type: keyword - --- - -*`rsa.web.alias_host`*:: -+ --- -type: keyword - --- - -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains - -type: double - --- - -*`rsa.web.web_ref_domain`*:: -+ --- -Web referer's domain - -type: keyword - --- - -*`rsa.web.web_ref_query`*:: -+ --- -This key captures Web referer's query portion of the URL - -type: keyword - --- - -*`rsa.web.remote_domain`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_ref_page`*:: -+ --- -This key captures Web referer's page information - -type: keyword - --- - -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path - -type: keyword - --- - -*`rsa.web.cn_asn_dst`*:: -+ --- -type: keyword - --- - -*`rsa.web.cn_rpackets`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlpage`*:: -+ --- -type: keyword - --- - -*`rsa.web.urlroot`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_url`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_user_agent`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_cookie`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_method`*:: -+ --- -type: keyword - --- - -*`rsa.web.p_web_referer`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_extension_tmp`*:: -+ --- -type: keyword - --- - -*`rsa.web.web_page`*:: -+ --- -type: keyword - --- - - -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword - --- - -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred - -type: keyword - --- - -*`rsa.threat.alert`*:: -+ --- -This key is used to capture name of the alert - -type: keyword - --- - -*`rsa.threat.threat_source`*:: -+ --- -This key is used to capture source of the threat - -type: keyword - --- - - -*`rsa.crypto.crypto`*:: -+ --- -This key is used to capture the Encryption Type or Encryption Key only - -type: keyword - --- - -*`rsa.crypto.cipher_src`*:: -+ --- -This key is for Source (Client) Cipher - -type: keyword - --- - -*`rsa.crypto.cert_subject`*:: -+ --- -This key is used to capture the Certificate organization only - -type: keyword - --- - -*`rsa.crypto.peer`*:: -+ --- -This key is for Encryption peer's IP Address - -type: keyword - --- - -*`rsa.crypto.cipher_size_src`*:: -+ --- -This key captures Source (Client) Cipher Size - -type: long - --- - -*`rsa.crypto.ike`*:: -+ --- -IKE negotiation phase. - -type: keyword - --- - -*`rsa.crypto.scheme`*:: -+ --- -This key captures the Encryption scheme used - -type: keyword - --- - -*`rsa.crypto.peer_id`*:: -+ --- -This key is for Encryption peer’s identity - -type: keyword - --- - -*`rsa.crypto.sig_type`*:: -+ --- -This key captures the Signature Type - -type: keyword - --- - -*`rsa.crypto.cert_issuer`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_name`*:: -+ --- -Deprecated key defined only in table map. - -type: keyword - --- - -*`rsa.crypto.cert_error`*:: -+ --- -This key captures the Certificate Error String - -type: keyword - --- - -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher - -type: keyword - --- - -*`rsa.crypto.cipher_size_dst`*:: -+ --- -This key captures Destination (Server) Cipher Size - -type: long - --- - -*`rsa.crypto.ssl_ver_src`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.d_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.s_certauth`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.ike_cookie1`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword - --- - -*`rsa.crypto.ike_cookie2`*:: -+ --- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword - --- - -*`rsa.crypto.cert_checksum`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_host_cat`*:: -+ --- -This key is used for the hostname category value of a certificate - -type: keyword - --- - -*`rsa.crypto.cert_serial`*:: -+ --- -This key is used to capture the Certificate serial number only - -type: keyword - --- - -*`rsa.crypto.cert_status`*:: -+ --- -This key captures Certificate validation status - -type: keyword - --- - -*`rsa.crypto.ssl_ver_dst`*:: -+ --- -Deprecated, use version - -type: keyword - --- - -*`rsa.crypto.cert_keysize`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_username`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_insact`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.https_valid`*:: -+ --- -type: keyword - --- - -*`rsa.crypto.cert_ca`*:: -+ --- -This key is used to capture the Certificate signing authority only - -type: keyword - --- - -*`rsa.crypto.cert_common`*:: -+ --- -This key is used to capture the Certificate common name only - -type: keyword - --- - - -*`rsa.wireless.wlan_ssid`*:: -+ --- -This key is used to capture the ssid of a Wireless Session - -type: keyword - --- - -*`rsa.wireless.access_point`*:: -+ --- -This key is used to capture the access point name. - -type: keyword - --- - -*`rsa.wireless.wlan_channel`*:: -+ --- -This is used to capture the channel names - -type: long - --- - -*`rsa.wireless.wlan_name`*:: -+ --- -This key captures either WLAN number/name - -type: keyword - --- - - -*`rsa.storage.disk_volume`*:: -+ --- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword - --- - -*`rsa.storage.lun`*:: -+ --- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword - --- - -*`rsa.storage.pwwn`*:: -+ --- -This uniquely identifies a port on a HBA. - -type: keyword - --- - - -*`rsa.physical.org_dst`*:: -+ --- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - -type: keyword - --- - -*`rsa.physical.org_src`*:: -+ --- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword - --- - - -*`rsa.healthcare.patient_fname`*:: -+ --- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_id`*:: -+ --- -This key captures the unique ID for a patient - -type: keyword - --- - -*`rsa.healthcare.patient_lname`*:: -+ --- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - -*`rsa.healthcare.patient_mname`*:: -+ --- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword - --- - - -*`rsa.endpoint.host_state`*:: -+ --- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword - --- - -*`rsa.endpoint.registry_key`*:: -+ --- -This key captures the path to the registry key - -type: keyword - --- - -*`rsa.endpoint.registry_value`*:: -+ --- -This key captures values or decorators used within a registry entry - -type: keyword - --- - -[float] -=== sophos.xg - -Module for parsing sophosxg syslog. - - - -*`sophos.xg.action`*:: -+ --- -Event Action - - -type: keyword - --- - -*`sophos.xg.activityname`*:: -+ --- -Web policy activity that matched and caused the policy result. - - -type: keyword - --- - -*`sophos.xg.ap`*:: -+ --- -Access Point Serial ID or LocalWifi0 or LocalWifi1. - - -type: keyword - --- - -*`sophos.xg.app_category`*:: -+ --- -Name of the category under which application falls - - -type: keyword - --- - -*`sophos.xg.app_filter_policy_id`*:: -+ --- -Application filter policy ID applied on the traffic - - -type: keyword - --- - -*`sophos.xg.app_is_cloud`*:: -+ --- -Application is Cloud - - -type: keyword - --- - -*`sophos.xg.app_name`*:: -+ --- -Application name - - -type: keyword - --- - -*`sophos.xg.app_resolved_by`*:: -+ --- -Application is resolved by signature or synchronized application - - -type: keyword - --- - -*`sophos.xg.app_risk`*:: -+ --- -Risk level assigned to the application - - -type: keyword - --- - -*`sophos.xg.app_technology`*:: -+ --- -Technology of the application - - -type: keyword - --- - -*`sophos.xg.appfilter_policy_id`*:: -+ --- -Application Filter policy applied on the traffic - - -type: integer - --- - -*`sophos.xg.application`*:: -+ --- -Application name - - -type: keyword - --- - -*`sophos.xg.application_category`*:: -+ --- -Application is resolved by signature or synchronized application - - -type: keyword - --- - -*`sophos.xg.application_filter_policy`*:: -+ --- -Application Filter policy applied on the traffic - - -type: integer - --- - -*`sophos.xg.application_name`*:: -+ --- -Application name - - -type: keyword - --- - -*`sophos.xg.application_risk`*:: -+ --- -Risk level assigned to the application - - -type: keyword - --- - -*`sophos.xg.application_technology`*:: -+ --- -Technology of the application - - -type: keyword - --- - -*`sophos.xg.appresolvedby`*:: -+ --- -Technology of the application - - -type: keyword - --- - -*`sophos.xg.auth_client`*:: -+ --- -Auth Client - - -type: keyword - --- - -*`sophos.xg.auth_mechanism`*:: -+ --- -Auth mechanism - - -type: keyword - --- - -*`sophos.xg.av_policy_name`*:: -+ --- -Malware scanning policy name which is applied on the traffic - - -type: keyword - --- - -*`sophos.xg.backup_mode`*:: -+ --- -Backup mode - - -type: keyword - --- - -*`sophos.xg.branch_name`*:: -+ --- -Branch Name - - -type: keyword - --- - -*`sophos.xg.category`*:: -+ --- -IPS signature category. - - -type: keyword - --- - -*`sophos.xg.category_type`*:: -+ --- -Type of category under which website falls - - -type: keyword - --- - -*`sophos.xg.classification`*:: -+ --- -Signature classification - - -type: keyword - --- - -*`sophos.xg.client_host_name`*:: -+ --- -Client host name - - -type: keyword - --- - -*`sophos.xg.client_physical_address`*:: -+ --- -Client physical address - - -type: keyword - --- - -*`sophos.xg.clients_conn_ssid`*:: -+ --- -Number of client connected to the SSID. - - -type: long - --- - -*`sophos.xg.collisions`*:: -+ --- -collisions - - -type: long - --- - -*`sophos.xg.con_event`*:: -+ --- -Event Start/Stop - - -type: keyword - --- - -*`sophos.xg.con_id`*:: -+ --- -Unique identifier of connection - - -type: integer - --- - -*`sophos.xg.configuration`*:: -+ --- -Configuration - - -type: float - --- - -*`sophos.xg.conn_id`*:: -+ --- -Unique identifier of connection - - -type: integer - --- - -*`sophos.xg.connectionname`*:: -+ --- -Connectionname - - -type: keyword - --- - -*`sophos.xg.connectiontype`*:: -+ --- -Connectiontype - - -type: keyword - --- - -*`sophos.xg.connevent`*:: -+ --- -Event on which this log is generated - - -type: keyword - --- - -*`sophos.xg.connid`*:: -+ --- -Connection ID - - -type: keyword - --- - -*`sophos.xg.content_type`*:: -+ --- -Type of the content - - -type: keyword - --- - -*`sophos.xg.contenttype`*:: -+ --- -Type of the content - - -type: keyword - --- - -*`sophos.xg.context_match`*:: -+ --- -Context Match - - -type: keyword - --- - -*`sophos.xg.context_prefix`*:: -+ --- -Content Prefix - - -type: keyword - --- - -*`sophos.xg.context_suffix`*:: -+ --- -Context Suffix - - -type: keyword - --- - -*`sophos.xg.cookie`*:: -+ --- -cookie - - -type: keyword - --- - -*`sophos.xg.date`*:: -+ --- -Date (yyyy-mm-dd) when the event occurred - - -type: date - --- - -*`sophos.xg.destinationip`*:: -+ --- -Original destination IP address of traffic - - -type: ip - --- - -*`sophos.xg.device`*:: -+ --- -device - - -type: keyword - --- - -*`sophos.xg.device_id`*:: -+ --- -Serial number of the device - - -type: keyword - --- - -*`sophos.xg.device_model`*:: -+ --- -Model number of the device - - -type: keyword - --- - -*`sophos.xg.device_name`*:: -+ --- -Model number of the device - - -type: keyword - --- - -*`sophos.xg.dictionary_name`*:: -+ --- -Dictionary Name - - -type: keyword - --- - -*`sophos.xg.dir_disp`*:: -+ --- -TPacket direction. Possible values:“org”, “reply”, “” - - -type: keyword - --- - -*`sophos.xg.direction`*:: -+ --- -Direction - - -type: keyword - --- - -*`sophos.xg.domainname`*:: -+ --- -Domain from which virus was downloaded - - -type: keyword - --- - -*`sophos.xg.download_file_name`*:: -+ --- -Download file name - - -type: keyword - --- - -*`sophos.xg.download_file_type`*:: -+ --- -Download file type - - -type: keyword - --- - -*`sophos.xg.dst_country_code`*:: -+ --- -Code of the country to which the destination IP belongs - - -type: keyword - --- - -*`sophos.xg.dst_domainname`*:: -+ --- -Receiver domain name - - -type: keyword - --- - -*`sophos.xg.dst_ip`*:: -+ --- -Original destination IP address of traffic - - -type: ip - --- - -*`sophos.xg.dst_port`*:: -+ --- -Original destination port of TCP and UDP traffic - - -type: integer - --- - -*`sophos.xg.dst_zone_type`*:: -+ --- -Type of destination zone - - -type: keyword - --- - -*`sophos.xg.dstdomain`*:: -+ --- -Destination Domain - - -type: keyword - --- - -*`sophos.xg.duration`*:: -+ --- -Durability of traffic (seconds) - - -type: long - --- - -*`sophos.xg.email_subject`*:: -+ --- -Email Subject - - -type: keyword - --- - -*`sophos.xg.ep_uuid`*:: -+ --- -Endpoint UUID - - -type: keyword - --- - -*`sophos.xg.ether_type`*:: -+ --- -ethernet frame type - - -type: keyword - --- - -*`sophos.xg.eventid`*:: -+ --- -ATP Evenet ID - - -type: keyword - --- - -*`sophos.xg.eventtime`*:: -+ --- -Event time - - -type: date - --- - -*`sophos.xg.eventtype`*:: -+ --- -ATP event type - - -type: keyword - --- - -*`sophos.xg.exceptions`*:: -+ --- -List of the checks excluded by web exceptions. - - -type: keyword - --- - -*`sophos.xg.execution_path`*:: -+ --- -ATP execution path - - -type: keyword - --- - -*`sophos.xg.extra`*:: -+ --- -extra - - -type: keyword - --- - -*`sophos.xg.file_name`*:: -+ --- -Filename - - -type: keyword - --- - -*`sophos.xg.file_path`*:: -+ --- -File path - - -type: keyword - --- - -*`sophos.xg.file_size`*:: -+ --- -File Size - - -type: integer - --- - -*`sophos.xg.filename`*:: -+ --- -File name associated with the event - - -type: keyword - --- - -*`sophos.xg.filepath`*:: -+ --- -Path of the file containing virus - - -type: keyword - --- - -*`sophos.xg.filesize`*:: -+ --- -Size of the file that contained virus - - -type: integer - --- - -*`sophos.xg.free`*:: -+ --- -free - - -type: integer - --- - -*`sophos.xg.from_email_address`*:: -+ --- -Sender email address - - -type: keyword - --- - -*`sophos.xg.ftp_direction`*:: -+ --- -Direction of FTP transfer: Upload or Download - - -type: keyword - --- - -*`sophos.xg.ftp_url`*:: -+ --- -FTP URL from which virus was downloaded - - -type: keyword - --- - -*`sophos.xg.ftpcommand`*:: -+ --- -FTP command used when virus was found - - -type: keyword - --- - -*`sophos.xg.fw_rule_id`*:: -+ --- -Firewall Rule ID which is applied on the traffic - - -type: integer - --- - -*`sophos.xg.fw_rule_type`*:: -+ --- -Firewall rule type which is applied on the traffic - - -type: keyword - --- - -*`sophos.xg.hb_health`*:: -+ --- -Heartbeat status - - -type: keyword - --- - -*`sophos.xg.hb_status`*:: -+ --- -Heartbeat status - - -type: keyword - --- - -*`sophos.xg.host`*:: -+ --- -Host - - -type: keyword - --- - -*`sophos.xg.http_category`*:: -+ --- -HTTP Category - - -type: keyword - --- - -*`sophos.xg.http_category_type`*:: -+ --- -HTTP Category Type - - -type: keyword - --- - -*`sophos.xg.httpresponsecode`*:: -+ --- -code of HTTP response - - type: long -- -*`sophos.xg.iap`*:: -+ --- -Internet Access policy ID applied on the traffic - - -type: keyword - --- - -*`sophos.xg.icmp_code`*:: -+ --- -ICMP code of ICMP traffic - - -type: keyword - --- - -*`sophos.xg.icmp_type`*:: -+ --- -ICMP type of ICMP traffic - - -type: keyword - --- - -*`sophos.xg.idle_cpu`*:: -+ --- -idle ## - - -type: float - --- - -*`sophos.xg.idp_policy_id`*:: -+ --- -IPS policy ID which is applied on the traffic - - -type: integer - --- - -*`sophos.xg.idp_policy_name`*:: +*`netflow.address_port_mapping_per_user_high_threshold`*:: + -- -IPS policy name i.e. IPS policy name which is applied on the traffic - - -type: keyword +type: long -- -*`sophos.xg.in_interface`*:: +*`netflow.afc_protocol`*:: + -- -Interface for incoming traffic, e.g., Port A - - -type: keyword +type: integer -- -*`sophos.xg.interface`*:: +*`netflow.afc_protocol_name`*:: + -- -interface - - type: keyword -- -*`sophos.xg.ipaddress`*:: +*`netflow.anonymization_flags`*:: + -- -Ipaddress - - -type: keyword +type: integer -- -*`sophos.xg.ips_policy_id`*:: +*`netflow.anonymization_technique`*:: + -- -IPS policy ID applied on the traffic - - type: integer -- -*`sophos.xg.lease_time`*:: +*`netflow.application_business-relevance`*:: + -- -Lease Time - - -type: keyword +type: long -- -*`sophos.xg.localgateway`*:: +*`netflow.application_category_name`*:: + -- -Localgateway - - type: keyword -- -*`sophos.xg.localnetwork`*:: +*`netflow.application_description`*:: + -- -Localnetwork - - type: keyword -- -*`sophos.xg.log_component`*:: +*`netflow.application_group_name`*:: + -- -Component responsible for logging e.g. Firewall rule - - type: keyword -- -*`sophos.xg.log_id`*:: +*`netflow.application_http_uri_statistics`*:: + -- -Unique 12 characters code (0101011) - - -type: keyword +type: short -- -*`sophos.xg.log_subtype`*:: +*`netflow.application_http_user-agent`*:: + -- -Sub type of event - - -type: keyword +type: short -- -*`sophos.xg.log_type`*:: +*`netflow.application_id`*:: + -- -Type of event e.g. firewall event - - -type: keyword +type: short -- -*`sophos.xg.log_version`*:: +*`netflow.application_name`*:: + -- -Log Version - - type: keyword -- -*`sophos.xg.login_user`*:: +*`netflow.application_sub_category_name`*:: + -- -ATP login user - - type: keyword -- -*`sophos.xg.mailid`*:: +*`netflow.application_traffic-class`*:: + -- -mailid +type: long +-- -type: keyword +*`netflow.art_client_network_time_maximum`*:: ++ +-- +type: long -- -*`sophos.xg.mailsize`*:: +*`netflow.art_client_network_time_minimum`*:: + -- -mailsize +type: long +-- -type: integer +*`netflow.art_client_network_time_sum`*:: ++ +-- +type: long -- -*`sophos.xg.message`*:: +*`netflow.art_clientpackets`*:: + -- -Message +type: long +-- -type: keyword +*`netflow.art_count_late_responses`*:: ++ +-- +type: long -- -*`sophos.xg.mode`*:: +*`netflow.art_count_new_connections`*:: + -- -Mode +type: long +-- -type: keyword +*`netflow.art_count_responses`*:: ++ +-- +type: long -- -*`sophos.xg.nat_rule_id`*:: +*`netflow.art_count_responses_histogram_bucket1`*:: + -- -NAT Rule ID +type: long +-- -type: keyword +*`netflow.art_count_responses_histogram_bucket2`*:: ++ +-- +type: long -- -*`sophos.xg.newversion`*:: +*`netflow.art_count_responses_histogram_bucket3`*:: + -- -Newversion +type: long +-- -type: keyword +*`netflow.art_count_responses_histogram_bucket4`*:: ++ +-- +type: long -- -*`sophos.xg.oldversion`*:: +*`netflow.art_count_responses_histogram_bucket5`*:: + -- -Oldversion +type: long +-- -type: keyword +*`netflow.art_count_responses_histogram_bucket6`*:: ++ +-- +type: long -- -*`sophos.xg.out_interface`*:: +*`netflow.art_count_responses_histogram_bucket7`*:: + -- -Interface for outgoing traffic, e.g., Port B +type: long +-- -type: keyword +*`netflow.art_count_retransmissions`*:: ++ +-- +type: long -- -*`sophos.xg.override_authorizer`*:: +*`netflow.art_count_transactions`*:: + -- -Override authorizer +type: long +-- -type: keyword +*`netflow.art_network_time_maximum`*:: ++ +-- +type: long -- -*`sophos.xg.override_name`*:: +*`netflow.art_network_time_minimum`*:: + -- -Override name +type: long +-- -type: keyword +*`netflow.art_network_time_sum`*:: ++ +-- +type: long -- -*`sophos.xg.override_token`*:: +*`netflow.art_response_time_maximum`*:: + -- -Override token +type: long +-- -type: keyword +*`netflow.art_response_time_minimum`*:: ++ +-- +type: long -- -*`sophos.xg.phpsessid`*:: +*`netflow.art_response_time_sum`*:: + -- -PHP session ID +type: long +-- -type: keyword +*`netflow.art_server_network_time_maximum`*:: ++ +-- +type: long -- -*`sophos.xg.platform`*:: +*`netflow.art_server_network_time_minimum`*:: + -- -Platform of the traffic. +type: long +-- -type: keyword +*`netflow.art_server_network_time_sum`*:: ++ +-- +type: long -- -*`sophos.xg.policy_type`*:: +*`netflow.art_server_response_time_maximum`*:: + -- -Policy type applied to the traffic +type: long +-- -type: keyword +*`netflow.art_server_response_time_minimum`*:: ++ +-- +type: long -- -*`sophos.xg.priority`*:: +*`netflow.art_server_response_time_sum`*:: + -- -Severity level of traffic +type: long +-- -type: keyword +*`netflow.art_serverpackets`*:: ++ +-- +type: long -- -*`sophos.xg.protocol`*:: +*`netflow.art_total_response_time_maximum`*:: + -- -Protocol number of traffic +type: long +-- -type: keyword +*`netflow.art_total_response_time_minimum`*:: ++ +-- +type: long -- -*`sophos.xg.qualifier`*:: +*`netflow.art_total_response_time_sum`*:: + -- -Qualifier +type: long +-- -type: keyword +*`netflow.art_total_transaction_time_maximum`*:: ++ +-- +type: long -- -*`sophos.xg.quarantine`*:: +*`netflow.art_total_transaction_time_minimum`*:: + -- -Path and filename of the file quarantined +type: long +-- -type: keyword +*`netflow.art_total_transaction_time_sum`*:: ++ +-- +type: long -- -*`sophos.xg.quarantine_reason`*:: +*`netflow.assembled_fragment_count`*:: + -- -Quarantine reason +type: long +-- -type: keyword +*`netflow.audit_counter`*:: ++ +-- +type: long -- -*`sophos.xg.querystring`*:: +*`netflow.average_interarrival_time`*:: + -- -querystring +type: long +-- -type: keyword +*`netflow.bgp_destination_as_number`*:: ++ +-- +type: long -- -*`sophos.xg.raw_data`*:: +*`netflow.bgp_next_adjacent_as_number`*:: + -- -Raw data +type: long +-- -type: keyword +*`netflow.bgp_next_hop_ipv4_address`*:: ++ +-- +type: ip -- -*`sophos.xg.received_pkts`*:: +*`netflow.bgp_next_hop_ipv6_address`*:: + -- -Total number of packets received +type: ip +-- +*`netflow.bgp_prev_adjacent_as_number`*:: ++ +-- type: long -- -*`sophos.xg.receiveddrops`*:: +*`netflow.bgp_source_as_number`*:: + -- -received drops - - type: long -- -*`sophos.xg.receivederrors`*:: +*`netflow.bgp_validity_state`*:: + -- -received errors - - -type: keyword +type: short -- -*`sophos.xg.receivedkbits`*:: +*`netflow.biflow_direction`*:: + -- -received kbits +type: short +-- -type: long +*`netflow.bind_ipv4_address`*:: ++ +-- +type: ip -- -*`sophos.xg.recv_bytes`*:: +*`netflow.bind_transport_port`*:: + -- -Total number of bytes received +type: integer +-- +*`netflow.class_id`*:: ++ +-- type: long -- -*`sophos.xg.red_id`*:: +*`netflow.class_name`*:: + -- -RED ID - - type: keyword -- -*`sophos.xg.referer`*:: +*`netflow.classification_engine_id`*:: + -- -Referer +type: short +-- -type: keyword +*`netflow.collection_time_milliseconds`*:: ++ +-- +type: date -- -*`sophos.xg.remote_ip`*:: +*`netflow.collector_certificate`*:: + -- -Remote IP +type: short +-- +*`netflow.collector_ipv4_address`*:: ++ +-- type: ip -- -*`sophos.xg.remotenetwork`*:: +*`netflow.collector_ipv6_address`*:: + -- -remotenetwork - - -type: keyword +type: ip -- -*`sophos.xg.reported_host`*:: +*`netflow.collector_transport_port`*:: + -- -Reported Host - - -type: keyword +type: integer -- -*`sophos.xg.reported_ip`*:: +*`netflow.common_properties_id`*:: + -- -Reported IP +type: long +-- -type: keyword +*`netflow.confidence_level`*:: ++ +-- +type: double -- -*`sophos.xg.reports`*:: +*`netflow.conn_ipv4_address`*:: + -- -Reports +type: ip +-- -type: float +*`netflow.conn_transport_port`*:: ++ +-- +type: integer -- -*`sophos.xg.rule_priority`*:: +*`netflow.connection_sum_duration_seconds`*:: + -- -Priority of IPS policy +type: long +-- -type: keyword +*`netflow.connection_transaction_id`*:: ++ +-- +type: long -- -*`sophos.xg.sent_bytes`*:: +*`netflow.conntrack_id`*:: + -- -Total number of bytes sent +type: long +-- +*`netflow.data_byte_count`*:: ++ +-- type: long -- -*`sophos.xg.sent_pkts`*:: +*`netflow.data_link_frame_section`*:: + -- -Total number of packets sent +type: short +-- -type: long +*`netflow.data_link_frame_size`*:: ++ +-- +type: integer -- -*`sophos.xg.server`*:: +*`netflow.data_link_frame_type`*:: + -- -Server +type: integer +-- -type: keyword +*`netflow.data_records_reliability`*:: ++ +-- +type: boolean -- -*`sophos.xg.sessionid`*:: +*`netflow.delta_flow_count`*:: + -- -Sessionid +type: long +-- -type: keyword +*`netflow.destination_ipv4_address`*:: ++ +-- +type: ip -- -*`sophos.xg.sha1sum`*:: +*`netflow.destination_ipv4_prefix`*:: + -- -SHA1 checksum of the item being analyzed +type: ip +-- -type: keyword +*`netflow.destination_ipv4_prefix_length`*:: ++ +-- +type: short -- -*`sophos.xg.signature`*:: +*`netflow.destination_ipv6_address`*:: + -- -Signature +type: ip +-- -type: float +*`netflow.destination_ipv6_prefix`*:: ++ +-- +type: ip -- -*`sophos.xg.signature_id`*:: +*`netflow.destination_ipv6_prefix_length`*:: + -- -Signature ID +type: short +-- +*`netflow.destination_mac_address`*:: ++ +-- type: keyword -- -*`sophos.xg.signature_msg`*:: +*`netflow.destination_transport_port`*:: + -- -Signature messsage - - -type: keyword +type: integer -- -*`sophos.xg.site_category`*:: +*`netflow.digest_hash_value`*:: + -- -Site Category +type: long +-- -type: keyword +*`netflow.distinct_count_of_destination_ip_address`*:: ++ +-- +type: long -- -*`sophos.xg.source`*:: +*`netflow.distinct_count_of_destination_ipv4_address`*:: + -- -Source +type: long +-- -type: keyword +*`netflow.distinct_count_of_destination_ipv6_address`*:: ++ +-- +type: long -- -*`sophos.xg.sourceip`*:: +*`netflow.distinct_count_of_source_ip_address`*:: + -- -Original source IP address of traffic +type: long +-- -type: ip +*`netflow.distinct_count_of_source_ipv4_address`*:: ++ +-- +type: long -- -*`sophos.xg.spamaction`*:: +*`netflow.distinct_count_of_source_ipv6_address`*:: + -- -Spam Action +type: long +-- -type: keyword +*`netflow.dns_authoritative`*:: ++ +-- +type: short -- -*`sophos.xg.sqli`*:: +*`netflow.dns_cname`*:: + -- -related SQLI caught by the WAF - - type: keyword -- -*`sophos.xg.src_country_code`*:: +*`netflow.dns_id`*:: + -- -Code of the country to which the source IP belongs - - -type: keyword +type: integer -- -*`sophos.xg.src_domainname`*:: +*`netflow.dns_mx_exchange`*:: + -- -Sender domain name - - type: keyword -- -*`sophos.xg.src_ip`*:: +*`netflow.dns_mx_preference`*:: + -- -Original source IP address of traffic - - -type: ip +type: integer -- -*`sophos.xg.src_mac`*:: +*`netflow.dns_nsd_name`*:: + -- -Original source MAC address of traffic - - type: keyword -- -*`sophos.xg.src_port`*:: +*`netflow.dns_nx_domain`*:: + -- -Original source port of TCP and UDP traffic - - -type: integer +type: short -- -*`sophos.xg.src_zone_type`*:: +*`netflow.dns_ptrd_name`*:: + -- -Type of source zone - type: keyword -- -*`sophos.xg.ssid`*:: +*`netflow.dns_qname`*:: + -- -Configured SSID name. - - type: keyword -- -*`sophos.xg.start_time`*:: +*`netflow.dns_qr_type`*:: + -- -Start time - - -type: date +type: integer -- -*`sophos.xg.starttime`*:: +*`netflow.dns_query_response`*:: + -- -Starttime +type: short +-- -type: date +*`netflow.dns_rr_section`*:: ++ +-- +type: short -- -*`sophos.xg.status`*:: +*`netflow.dns_soa_expire`*:: + -- -Ultimate status of traffic – Allowed or Denied +type: long +-- -type: keyword +*`netflow.dns_soa_minimum`*:: ++ +-- +type: long -- -*`sophos.xg.status_code`*:: +*`netflow.dns_soa_refresh`*:: + -- -Status code +type: long +-- -type: keyword +*`netflow.dns_soa_retry`*:: ++ +-- +type: long -- -*`sophos.xg.subject`*:: +*`netflow.dns_soa_serial`*:: + -- -Email subject +type: long +-- +*`netflow.dns_soam_name`*:: ++ +-- type: keyword -- -*`sophos.xg.syslog_server_name`*:: +*`netflow.dns_soar_name`*:: + -- -Syslog server name. - - type: keyword -- -*`sophos.xg.system_cpu`*:: +*`netflow.dns_srv_port`*:: + -- -system - - -type: float +type: integer -- -*`sophos.xg.target`*:: +*`netflow.dns_srv_priority`*:: + -- -Platform of the traffic. - - -type: keyword +type: integer -- -*`sophos.xg.temp`*:: +*`netflow.dns_srv_target`*:: + -- -Temp +type: integer +-- -type: float +*`netflow.dns_srv_weight`*:: ++ +-- +type: integer -- -*`sophos.xg.threatname`*:: +*`netflow.dns_ttl`*:: + -- -ATP threatname +type: long +-- +*`netflow.dns_txt_data`*:: ++ +-- type: keyword -- -*`sophos.xg.timestamp`*:: +*`netflow.dot1q_customer_dei`*:: + -- -timestamp - - -type: date +type: boolean -- -*`sophos.xg.timezone`*:: +*`netflow.dot1q_customer_destination_mac_address`*:: + -- -Time (hh:mm:ss) when the event occurred - - type: keyword -- -*`sophos.xg.to_email_address`*:: +*`netflow.dot1q_customer_priority`*:: + -- -Receipeint email address +type: short +-- +*`netflow.dot1q_customer_source_mac_address`*:: ++ +-- type: keyword -- -*`sophos.xg.total_memory`*:: +*`netflow.dot1q_customer_vlan_id`*:: + -- -Total Memory - - type: integer -- -*`sophos.xg.trans_dst_ip`*:: +*`netflow.dot1q_dei`*:: + -- -Translated destination IP address for outgoing traffic - - -type: ip +type: boolean -- -*`sophos.xg.trans_dst_port`*:: +*`netflow.dot1q_priority`*:: + -- -Translated destination port for outgoing traffic - - -type: integer +type: short -- -*`sophos.xg.trans_src_ip`*:: +*`netflow.dot1q_service_instance_id`*:: + -- -Translated source IP address for outgoing traffic +type: long +-- -type: ip +*`netflow.dot1q_service_instance_priority`*:: ++ +-- +type: short -- -*`sophos.xg.trans_src_port`*:: +*`netflow.dot1q_service_instance_tag`*:: + -- -Translated source port for outgoing traffic +type: short +-- +*`netflow.dot1q_vlan_id`*:: ++ +-- type: integer -- -*`sophos.xg.transaction_id`*:: +*`netflow.dropped_layer2_octet_delta_count`*:: + -- -Transaction ID - - -type: keyword +type: long -- -*`sophos.xg.transactionid`*:: +*`netflow.dropped_layer2_octet_total_count`*:: + -- -Transaction ID of the AV scan. - - -type: keyword +type: long -- -*`sophos.xg.transmitteddrops`*:: +*`netflow.dropped_octet_delta_count`*:: + -- -transmitted drops - - type: long -- -*`sophos.xg.transmittederrors`*:: +*`netflow.dropped_octet_total_count`*:: + -- -transmitted errors - - -type: keyword +type: long -- -*`sophos.xg.transmittedkbits`*:: +*`netflow.dropped_packet_delta_count`*:: + -- -transmitted kbits +type: long +-- +*`netflow.dropped_packet_total_count`*:: ++ +-- type: long -- -*`sophos.xg.unit`*:: +*`netflow.dst_traffic_index`*:: + -- -unit +type: long +-- -type: keyword +*`netflow.egress_broadcast_packet_total_count`*:: ++ +-- +type: long -- -*`sophos.xg.updatedip`*:: +*`netflow.egress_interface`*:: + -- -updatedip +type: long +-- -type: ip +*`netflow.egress_interface_type`*:: ++ +-- +type: long -- -*`sophos.xg.upload_file_name`*:: +*`netflow.egress_physical_interface`*:: + -- -Upload file name +type: long +-- -type: keyword +*`netflow.egress_unicast_packet_total_count`*:: ++ +-- +type: long -- -*`sophos.xg.upload_file_type`*:: +*`netflow.egress_vrfid`*:: + -- -Upload file type +type: long +-- +*`netflow.encrypted_technology`*:: ++ +-- type: keyword -- -*`sophos.xg.url`*:: +*`netflow.engine_id`*:: + -- -URL from which virus was downloaded +type: short +-- -type: keyword +*`netflow.engine_type`*:: ++ +-- +type: short -- -*`sophos.xg.used`*:: +*`netflow.ethernet_header_length`*:: + -- -used +type: short +-- +*`netflow.ethernet_payload_length`*:: ++ +-- type: integer -- -*`sophos.xg.used_quota`*:: +*`netflow.ethernet_total_length`*:: + -- -Used Quota - - -type: keyword +type: integer -- -*`sophos.xg.user`*:: +*`netflow.ethernet_type`*:: + -- -User - - -type: keyword +type: integer -- -*`sophos.xg.user_cpu`*:: +*`netflow.expired_fragment_count`*:: + -- -system - - -type: float +type: long -- -*`sophos.xg.user_gp`*:: +*`netflow.export_interface`*:: + -- -Group name to which the user belongs. - - -type: keyword +type: long -- -*`sophos.xg.user_group`*:: +*`netflow.export_protocol_version`*:: + -- -Group name to which the user belongs +type: short +-- -type: keyword +*`netflow.export_sctp_stream_id`*:: ++ +-- +type: integer -- -*`sophos.xg.user_name`*:: +*`netflow.export_transport_protocol`*:: + -- -user_name +type: short +-- -type: keyword +*`netflow.exported_flow_record_total_count`*:: ++ +-- +type: long -- -*`sophos.xg.users`*:: +*`netflow.exported_message_total_count`*:: + -- -Number of users from System Health / Live User events. +type: long +-- +*`netflow.exported_octet_total_count`*:: ++ +-- type: long -- -*`sophos.xg.vconn_id`*:: +*`netflow.exporter_certificate`*:: + -- -Connection ID of the master connection +type: short +-- -type: integer +*`netflow.exporter_ipv4_address`*:: ++ +-- +type: ip -- -*`sophos.xg.virus`*:: +*`netflow.exporter_ipv6_address`*:: + -- -virus name +type: ip +-- -type: keyword +*`netflow.exporter_transport_port`*:: ++ +-- +type: integer -- -*`sophos.xg.web_policy_id`*:: +*`netflow.exporting_process_id`*:: + -- -Web policy ID +type: long +-- -type: keyword +*`netflow.external_address_realm`*:: ++ +-- +type: short -- -*`sophos.xg.website`*:: +*`netflow.firewall_event`*:: + -- -Website +type: short +-- -type: keyword +*`netflow.first_eight_non_empty_packet_directions`*:: ++ +-- +type: short -- -*`sophos.xg.xss`*:: +*`netflow.first_non_empty_packet_size`*:: + -- -related XSS caught by the WAF +type: integer +-- +*`netflow.first_packet_banner`*:: ++ +-- type: keyword -- -[[exported-fields-squid]] -== Squid fields - -squid fields. - +*`netflow.flags_and_sampler_id`*:: ++ +-- +type: long +-- -*`network.interface.name`*:: +*`netflow.flow_active_timeout`*:: + -- -Name of the network interface where the traffic has been observed. +type: integer +-- -type: keyword +*`netflow.flow_attributes`*:: ++ +-- +type: integer -- +*`netflow.flow_direction`*:: ++ +-- +type: short +-- -*`rsa.internal.msg`*:: +*`netflow.flow_duration_microseconds`*:: + -- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword +type: long -- -*`rsa.internal.messageid`*:: +*`netflow.flow_duration_milliseconds`*:: + -- -type: keyword +type: long -- -*`rsa.internal.event_desc`*:: +*`netflow.flow_end_delta_microseconds`*:: + -- -type: keyword +type: long -- -*`rsa.internal.message`*:: +*`netflow.flow_end_microseconds`*:: + -- -This key captures the contents of instant messages - -type: keyword +type: date -- -*`rsa.internal.time`*:: +*`netflow.flow_end_milliseconds`*:: + -- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - type: date -- -*`rsa.internal.level`*:: +*`netflow.flow_end_nanoseconds`*:: + -- -Deprecated key defined only in table map. - -type: long +type: date -- -*`rsa.internal.msg_id`*:: +*`netflow.flow_end_reason`*:: + -- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: short -- -*`rsa.internal.msg_vid`*:: +*`netflow.flow_end_seconds`*:: + -- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: date -- -*`rsa.internal.data`*:: +*`netflow.flow_end_sys_up_time`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.obj_server`*:: +*`netflow.flow_id`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.obj_val`*:: +*`netflow.flow_idle_timeout`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: integer -- -*`rsa.internal.resource`*:: +*`netflow.flow_key_indicator`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.obj_id`*:: +*`netflow.flow_label_ipv6`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.statement`*:: +*`netflow.flow_sampling_time_interval`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.audit_class`*:: +*`netflow.flow_sampling_time_spacing`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.entry`*:: +*`netflow.flow_selected_flow_delta_count`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.hcode`*:: +*`netflow.flow_selected_octet_delta_count`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.inode`*:: +*`netflow.flow_selected_packet_delta_count`*:: + -- -Deprecated key defined only in table map. - type: long -- -*`rsa.internal.resource_class`*:: +*`netflow.flow_selector_algorithm`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: integer -- -*`rsa.internal.dead`*:: +*`netflow.flow_start_delta_microseconds`*:: + -- -Deprecated key defined only in table map. - type: long -- -*`rsa.internal.feed_desc`*:: +*`netflow.flow_start_microseconds`*:: + -- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: date -- -*`rsa.internal.feed_name`*:: +*`netflow.flow_start_milliseconds`*:: + -- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: date -- -*`rsa.internal.cid`*:: +*`netflow.flow_start_nanoseconds`*:: + -- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: date -- -*`rsa.internal.device_class`*:: +*`netflow.flow_start_seconds`*:: + -- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: date -- -*`rsa.internal.device_group`*:: +*`netflow.flow_start_sys_up_time`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: long -- -*`rsa.internal.device_host`*:: +*`netflow.flow_table_flush_event_count`*:: + -- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: long -- -*`rsa.internal.device_ip`*:: +*`netflow.flow_table_peak_count`*:: + -- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip +type: long -- -*`rsa.internal.device_ipv6`*:: +*`netflow.forwarding_status`*:: + -- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip +type: short -- -*`rsa.internal.device_type`*:: +*`netflow.fragment_flags`*:: + -- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: short -- -*`rsa.internal.device_type_id`*:: +*`netflow.fragment_identification`*:: + -- -Deprecated key defined only in table map. - type: long -- -*`rsa.internal.did`*:: +*`netflow.fragment_offset`*:: + -- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: integer -- -*`rsa.internal.entropy_req`*:: +*`netflow.fw_blackout_secs`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - type: long -- -*`rsa.internal.entropy_res`*:: +*`netflow.fw_configured_value`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration - type: long -- -*`rsa.internal.event_name`*:: +*`netflow.fw_cts_src_sgt`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.feed_category`*:: +*`netflow.fw_event_level`*:: + -- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: long -- -*`rsa.internal.forward_ip`*:: +*`netflow.fw_event_level_id`*:: + -- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. - -type: ip +type: long -- -*`rsa.internal.forward_ipv6`*:: +*`netflow.fw_ext_event`*:: + -- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip +type: integer -- -*`rsa.internal.header_id`*:: +*`netflow.fw_ext_event_alt`*:: + -- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: long -- -*`rsa.internal.lc_cid`*:: +*`netflow.fw_ext_event_desc`*:: + -- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: keyword -- -*`rsa.internal.lc_ctime`*:: +*`netflow.fw_half_open_count`*:: + -- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: date +type: long -- -*`rsa.internal.mcb_req`*:: +*`netflow.fw_half_open_high`*:: + -- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most - type: long -- -*`rsa.internal.mcb_res`*:: +*`netflow.fw_half_open_rate`*:: + -- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most - type: long -- -*`rsa.internal.mcbc_req`*:: +*`netflow.fw_max_sessions`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - type: long -- -*`rsa.internal.mcbc_res`*:: +*`netflow.fw_rule`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams - -type: long +type: keyword -- -*`rsa.internal.medium`*:: +*`netflow.fw_summary_pkt_count`*:: + -- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session - type: long -- -*`rsa.internal.node_name`*:: +*`netflow.fw_zone_pair_id`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.nwe_callback_id`*:: +*`netflow.fw_zone_pair_name`*:: + -- -This key denotes that event is endpoint related - -type: keyword +type: long -- -*`rsa.internal.parse_error`*:: +*`netflow.global_address_mapping_high_threshold`*:: + -- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: long -- -*`rsa.internal.payload_req`*:: +*`netflow.gre_key`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - type: long -- -*`rsa.internal.payload_res`*:: +*`netflow.hash_digest_output`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep - -type: long +type: boolean -- -*`rsa.internal.process_vid_dst`*:: +*`netflow.hash_flow_domain`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. - -type: keyword +type: integer -- -*`rsa.internal.process_vid_src`*:: +*`netflow.hash_initialiser_value`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. - -type: keyword +type: long -- -*`rsa.internal.rid`*:: +*`netflow.hash_ip_payload_offset`*:: + -- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: long -- -*`rsa.internal.session_split`*:: +*`netflow.hash_ip_payload_size`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: long -- -*`rsa.internal.site`*:: +*`netflow.hash_output_range_max`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: long -- -*`rsa.internal.size`*:: +*`netflow.hash_output_range_min`*:: + -- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: long -- -*`rsa.internal.sourcefile`*:: +*`netflow.hash_selected_range_max`*:: + -- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: long -- -*`rsa.internal.ubc_req`*:: +*`netflow.hash_selected_range_min`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - type: long -- -*`rsa.internal.ubc_res`*:: +*`netflow.http_content_type`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once - -type: long +type: keyword -- -*`rsa.internal.word`*:: +*`netflow.http_message_version`*:: + -- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log - type: keyword -- - -*`rsa.time.event_time`*:: +*`netflow.http_reason_phrase`*:: + -- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form - -type: date +type: keyword -- -*`rsa.time.duration_time`*:: +*`netflow.http_request_host`*:: + -- -This key is used to capture the normalized duration/lifetime in seconds. - -type: double +type: keyword -- -*`rsa.time.event_time_str`*:: +*`netflow.http_request_method`*:: + -- -This key is used to capture the incomplete time mentioned in a session as a string - type: keyword -- -*`rsa.time.starttime`*:: +*`netflow.http_request_target`*:: + -- -This key is used to capture the Start time mentioned in a session in a standard form - -type: date +type: keyword -- -*`rsa.time.month`*:: +*`netflow.http_status_code`*:: + -- -type: keyword +type: integer -- -*`rsa.time.day`*:: +*`netflow.http_user_agent`*:: + -- type: keyword -- -*`rsa.time.endtime`*:: +*`netflow.icmp_code_ipv4`*:: + -- -This key is used to capture the End time mentioned in a session in a standard form - -type: date +type: short -- -*`rsa.time.timezone`*:: +*`netflow.icmp_code_ipv6`*:: + -- -This key is used to capture the timezone of the Event Time - -type: keyword +type: short -- -*`rsa.time.duration_str`*:: +*`netflow.icmp_type_code_ipv4`*:: + -- -A text string version of the duration - -type: keyword +type: integer -- -*`rsa.time.date`*:: +*`netflow.icmp_type_code_ipv6`*:: + -- -type: keyword +type: integer -- -*`rsa.time.year`*:: +*`netflow.icmp_type_ipv4`*:: + -- -type: keyword +type: short -- -*`rsa.time.recorded_time`*:: +*`netflow.icmp_type_ipv6`*:: + -- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. - -type: date +type: short -- -*`rsa.time.datetime`*:: +*`netflow.igmp_type`*:: + -- -type: keyword +type: short -- -*`rsa.time.effective_time`*:: +*`netflow.ignored_data_record_total_count`*:: + -- -This key is the effective time referenced by an individual event in a Standard Timestamp format - -type: date +type: long -- -*`rsa.time.expire_time`*:: +*`netflow.ignored_layer2_frame_total_count`*:: + -- -This key is the timestamp that explicitly refers to an expiration. - -type: date +type: long -- -*`rsa.time.process_time`*:: +*`netflow.ignored_layer2_octet_total_count`*:: + -- -Deprecated, use duration.time - -type: keyword +type: long -- -*`rsa.time.hour`*:: +*`netflow.ignored_octet_total_count`*:: + -- -type: keyword +type: long -- -*`rsa.time.min`*:: +*`netflow.ignored_packet_total_count`*:: + -- -type: keyword +type: long -- -*`rsa.time.timestamp`*:: +*`netflow.information_element_data_type`*:: + -- -type: keyword +type: short -- -*`rsa.time.event_queue_time`*:: +*`netflow.information_element_description`*:: + -- -This key is the Time that the event was queued. - -type: date +type: keyword -- -*`rsa.time.p_time1`*:: +*`netflow.information_element_id`*:: + -- -type: keyword +type: integer -- -*`rsa.time.tzone`*:: +*`netflow.information_element_index`*:: + -- -type: keyword +type: integer -- -*`rsa.time.eventtime`*:: +*`netflow.information_element_name`*:: + -- type: keyword -- -*`rsa.time.gmtdate`*:: +*`netflow.information_element_range_begin`*:: + -- -type: keyword +type: long -- -*`rsa.time.gmttime`*:: +*`netflow.information_element_range_end`*:: + -- -type: keyword +type: long -- -*`rsa.time.p_date`*:: +*`netflow.information_element_semantics`*:: + -- -type: keyword +type: short -- -*`rsa.time.p_month`*:: +*`netflow.information_element_units`*:: + -- -type: keyword +type: integer -- -*`rsa.time.p_time`*:: +*`netflow.ingress_broadcast_packet_total_count`*:: + -- -type: keyword +type: long -- -*`rsa.time.p_time2`*:: +*`netflow.ingress_interface`*:: + -- -type: keyword +type: long -- -*`rsa.time.p_year`*:: +*`netflow.ingress_interface_type`*:: + -- -type: keyword +type: long -- -*`rsa.time.expire_time_str`*:: +*`netflow.ingress_multicast_packet_total_count`*:: + -- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. - -type: keyword +type: long -- -*`rsa.time.stamp`*:: +*`netflow.ingress_physical_interface`*:: + -- -Deprecated key defined only in table map. +type: long -type: date +-- +*`netflow.ingress_unicast_packet_total_count`*:: ++ -- +type: long +-- -*`rsa.misc.action`*:: +*`netflow.ingress_vrfid`*:: + -- -type: keyword +type: long -- -*`rsa.misc.result`*:: +*`netflow.initial_tcp_flags`*:: + -- -This key is used to capture the outcome/result string value of an action in a session. - -type: keyword +type: short -- -*`rsa.misc.severity`*:: +*`netflow.initiator_octets`*:: + -- -This key is used to capture the severity given the session - -type: keyword +type: long -- -*`rsa.misc.event_type`*:: +*`netflow.initiator_packets`*:: + -- -This key captures the event category type as specified by the event source. - -type: keyword +type: long -- -*`rsa.misc.reference_id`*:: +*`netflow.interface_description`*:: + -- -This key is used to capture an event id from the session directly - type: keyword -- -*`rsa.misc.version`*:: +*`netflow.interface_name`*:: + -- -This key captures Version of the application or OS which is generating the event. - type: keyword -- -*`rsa.misc.disposition`*:: +*`netflow.intermediate_process_id`*:: + -- -This key captures the The end state of an action. - -type: keyword +type: long -- -*`rsa.misc.result_code`*:: +*`netflow.internal_address_realm`*:: + -- -This key is used to capture the outcome/result numeric value of an action in a session - -type: keyword +type: short -- -*`rsa.misc.category`*:: +*`netflow.ip_class_of_service`*:: + -- -This key is used to capture the category of an event given by the vendor in the session - -type: keyword +type: short -- -*`rsa.misc.obj_name`*:: +*`netflow.ip_diff_serv_code_point`*:: + -- -This is used to capture name of object - -type: keyword +type: short -- -*`rsa.misc.obj_type`*:: +*`netflow.ip_header_length`*:: + -- -This is used to capture type of object - -type: keyword +type: short -- -*`rsa.misc.event_source`*:: +*`netflow.ip_header_packet_section`*:: + -- -This key captures Source of the event that’s not a hostname - -type: keyword +type: short -- -*`rsa.misc.log_session_id`*:: +*`netflow.ip_next_hop_ipv4_address`*:: + -- -This key is used to capture a sessionid from the session directly - -type: keyword +type: ip -- -*`rsa.misc.group`*:: +*`netflow.ip_next_hop_ipv6_address`*:: + -- -This key captures the Group Name value - -type: keyword +type: ip -- -*`rsa.misc.policy_name`*:: +*`netflow.ip_payload_length`*:: + -- -This key is used to capture the Policy Name only. - -type: keyword +type: long -- -*`rsa.misc.rule_name`*:: +*`netflow.ip_payload_packet_section`*:: + -- -This key captures the Rule Name - -type: keyword +type: short -- -*`rsa.misc.context`*:: +*`netflow.ip_precedence`*:: + -- -This key captures Information which adds additional context to the event. - -type: keyword +type: short -- -*`rsa.misc.change_new`*:: +*`netflow.ip_sec_spi`*:: + -- -This key is used to capture the new values of the attribute that’s changing in a session - -type: keyword +type: long -- -*`rsa.misc.space`*:: +*`netflow.ip_total_length`*:: + -- -type: keyword +type: long -- -*`rsa.misc.client`*:: +*`netflow.ip_ttl`*:: + -- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword +type: short -- -*`rsa.misc.msgIdPart1`*:: +*`netflow.ip_version`*:: + -- -type: keyword +type: short -- -*`rsa.misc.msgIdPart2`*:: +*`netflow.ipv4_ihl`*:: + -- -type: keyword +type: short -- -*`rsa.misc.change_old`*:: +*`netflow.ipv4_options`*:: + -- -This key is used to capture the old value of the attribute that’s changing in a session - -type: keyword +type: long -- -*`rsa.misc.operation_id`*:: +*`netflow.ipv4_router_sc`*:: + -- -An alert number or operation number. The values should be unique and non-repeating. - -type: keyword +type: ip -- -*`rsa.misc.event_state`*:: +*`netflow.ipv6_extension_headers`*:: + -- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - -type: keyword +type: long -- -*`rsa.misc.group_object`*:: +*`netflow.is_multicast`*:: + -- -This key captures a collection/grouping of entities. Specific usage - -type: keyword +type: short -- -*`rsa.misc.node`*:: +*`netflow.ixia_browser_id`*:: + -- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - -type: keyword +type: short -- -*`rsa.misc.rule`*:: +*`netflow.ixia_browser_name`*:: + -- -This key captures the Rule number - type: keyword -- -*`rsa.misc.device_name`*:: +*`netflow.ixia_device_id`*:: + -- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - -type: keyword +type: short -- -*`rsa.misc.param`*:: +*`netflow.ixia_device_name`*:: + -- -This key is the parameters passed as part of a command or application, etc. - type: keyword -- -*`rsa.misc.change_attrib`*:: +*`netflow.ixia_dns_answer`*:: + -- -This key is used to capture the name of the attribute that’s changing in a session - type: keyword -- -*`rsa.misc.event_computer`*:: +*`netflow.ixia_dns_classes`*:: + -- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - type: keyword -- -*`rsa.misc.reference_id1`*:: +*`netflow.ixia_dns_query`*:: + -- -This key is for Linked ID to be used as an addition to "reference.id" - type: keyword -- -*`rsa.misc.event_log`*:: +*`netflow.ixia_dns_record_txt`*:: + -- -This key captures the Name of the event log - type: keyword -- -*`rsa.misc.OS`*:: +*`netflow.ixia_dst_as_name`*:: + -- -This key captures the Name of the Operating System - type: keyword -- -*`rsa.misc.terminal`*:: +*`netflow.ixia_dst_city_name`*:: + -- -This key captures the Terminal Names only - type: keyword -- -*`rsa.misc.msgIdPart3`*:: +*`netflow.ixia_dst_country_code`*:: + -- type: keyword -- -*`rsa.misc.filter`*:: +*`netflow.ixia_dst_country_name`*:: + -- -This key captures Filter used to reduce result set - type: keyword -- -*`rsa.misc.serial_number`*:: +*`netflow.ixia_dst_latitude`*:: + -- -This key is the Serial number associated with a physical asset. - -type: keyword +type: float -- -*`rsa.misc.checksum`*:: +*`netflow.ixia_dst_longitude`*:: + -- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - -type: keyword +type: float -- -*`rsa.misc.event_user`*:: +*`netflow.ixia_dst_region_code`*:: + -- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - type: keyword -- -*`rsa.misc.virusname`*:: +*`netflow.ixia_dst_region_node`*:: + -- -This key captures the name of the virus - type: keyword -- -*`rsa.misc.content_type`*:: +*`netflow.ixia_encrypt_cipher`*:: + -- -This key is used to capture Content Type only. - type: keyword -- -*`rsa.misc.group_id`*:: +*`netflow.ixia_encrypt_key_length`*:: + -- -This key captures Group ID Number (related to the group name) - -type: keyword +type: integer -- -*`rsa.misc.policy_id`*:: +*`netflow.ixia_encrypt_type`*:: + -- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - type: keyword -- -*`rsa.misc.vsys`*:: +*`netflow.ixia_http_host_name`*:: + -- -This key captures Virtual System Name - type: keyword -- -*`rsa.misc.connection_id`*:: +*`netflow.ixia_http_uri`*:: + -- -This key captures the Connection ID - type: keyword -- -*`rsa.misc.reference_id2`*:: +*`netflow.ixia_http_user_agent`*:: + -- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - type: keyword -- -*`rsa.misc.sensor`*:: +*`netflow.ixia_imsi_subscriber`*:: + -- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - type: keyword -- -*`rsa.misc.sig_id`*:: +*`netflow.ixia_l7_app_id`*:: + -- -This key captures IDS/IPS Int Signature ID - type: long -- -*`rsa.misc.port_name`*:: +*`netflow.ixia_l7_app_name`*:: + -- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - type: keyword -- -*`rsa.misc.rule_group`*:: +*`netflow.ixia_latency`*:: + -- -This key captures the Rule group name - -type: keyword +type: long -- -*`rsa.misc.risk_num`*:: +*`netflow.ixia_rev_octet_delta_count`*:: + -- -This key captures a Numeric Risk value - -type: double +type: long -- -*`rsa.misc.trigger_val`*:: +*`netflow.ixia_rev_packet_delta_count`*:: + -- -This key captures the Value of the trigger or threshold condition. - -type: keyword +type: long -- -*`rsa.misc.log_session_id1`*:: +*`netflow.ixia_src_as_name`*:: + -- -This key is used to capture a Linked (Related) Session ID from the session directly - type: keyword -- -*`rsa.misc.comp_version`*:: +*`netflow.ixia_src_city_name`*:: + -- -This key captures the Version level of a sub-component of a product. - type: keyword -- -*`rsa.misc.content_version`*:: +*`netflow.ixia_src_country_code`*:: + -- -This key captures Version level of a signature or database content. - type: keyword -- -*`rsa.misc.hardware_id`*:: +*`netflow.ixia_src_country_name`*:: + -- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - type: keyword -- -*`rsa.misc.risk`*:: +*`netflow.ixia_src_latitude`*:: + -- -This key captures the non-numeric risk value - -type: keyword +type: float -- -*`rsa.misc.event_id`*:: +*`netflow.ixia_src_longitude`*:: + -- -type: keyword +type: float -- -*`rsa.misc.reason`*:: +*`netflow.ixia_src_region_code`*:: + -- type: keyword -- -*`rsa.misc.status`*:: +*`netflow.ixia_src_region_name`*:: + -- type: keyword -- -*`rsa.misc.mail_id`*:: +*`netflow.ixia_threat_ipv4`*:: + -- -This key is used to capture the mailbox id/name - -type: keyword +type: ip -- -*`rsa.misc.rule_uid`*:: +*`netflow.ixia_threat_ipv6`*:: + -- -This key is the Unique Identifier for a rule. - -type: keyword +type: ip -- -*`rsa.misc.trigger_desc`*:: +*`netflow.ixia_threat_type`*:: + -- -This key captures the Description of the trigger or threshold condition. - type: keyword -- -*`rsa.misc.inout`*:: +*`netflow.large_packet_count`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_msgid`*:: +*`netflow.layer2_frame_delta_count`*:: + -- -type: keyword +type: long -- -*`rsa.misc.data_type`*:: +*`netflow.layer2_frame_total_count`*:: + -- -type: keyword +type: long -- -*`rsa.misc.msgIdPart4`*:: +*`netflow.layer2_octet_delta_count`*:: + -- -type: keyword +type: long -- -*`rsa.misc.error`*:: +*`netflow.layer2_octet_delta_sum_of_squares`*:: + -- -This key captures All non successful Error codes or responses - -type: keyword +type: long -- -*`rsa.misc.index`*:: +*`netflow.layer2_octet_total_count`*:: + -- -type: keyword +type: long -- -*`rsa.misc.listnum`*:: +*`netflow.layer2_octet_total_sum_of_squares`*:: + -- -This key is used to capture listname or listnumber, primarily for collecting access-list - -type: keyword +type: long -- -*`rsa.misc.ntype`*:: +*`netflow.layer2_segment_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.observed_val`*:: +*`netflow.layer2packet_section_data`*:: + -- -This key captures the Value observed (from the perspective of the device generating the log). - -type: keyword +type: short -- -*`rsa.misc.policy_value`*:: +*`netflow.layer2packet_section_offset`*:: + -- -This key captures the contents of the policy. This contains details about the policy - -type: keyword +type: integer -- -*`rsa.misc.pool_name`*:: +*`netflow.layer2packet_section_size`*:: + -- -This key captures the name of a resource pool - -type: keyword +type: integer -- -*`rsa.misc.rule_template`*:: +*`netflow.line_card_id`*:: + -- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword +type: long -- -*`rsa.misc.count`*:: +*`netflow.log_op`*:: + -- -type: keyword +type: short -- -*`rsa.misc.number`*:: +*`netflow.lower_ci_limit`*:: + -- -type: keyword +type: double -- -*`rsa.misc.sigcat`*:: +*`netflow.mark`*:: + -- -type: keyword +type: long -- -*`rsa.misc.type`*:: +*`netflow.max_bib_entries`*:: + -- -type: keyword +type: long -- -*`rsa.misc.comments`*:: +*`netflow.max_entries_per_user`*:: + -- -Comment information provided in the log message - -type: keyword +type: long -- -*`rsa.misc.doc_number`*:: +*`netflow.max_export_seconds`*:: + -- -This key captures File Identification number - -type: long +type: date -- -*`rsa.misc.expected_val`*:: +*`netflow.max_flow_end_microseconds`*:: + -- -This key captures the Value expected (from the perspective of the device generating the log). - -type: keyword +type: date -- -*`rsa.misc.job_num`*:: +*`netflow.max_flow_end_milliseconds`*:: + -- -This key captures the Job Number - -type: keyword +type: date -- -*`rsa.misc.spi_dst`*:: +*`netflow.max_flow_end_nanoseconds`*:: + -- -Destination SPI Index - -type: keyword +type: date -- -*`rsa.misc.spi_src`*:: +*`netflow.max_flow_end_seconds`*:: + -- -Source SPI Index - -type: keyword +type: date -- -*`rsa.misc.code`*:: +*`netflow.max_fragments_pending_reassembly`*:: + -- -type: keyword +type: long -- -*`rsa.misc.agent_id`*:: +*`netflow.max_packet_size`*:: + -- -This key is used to capture agent id - -type: keyword +type: integer -- -*`rsa.misc.message_body`*:: +*`netflow.max_session_entries`*:: + -- -This key captures the The contents of the message body. - -type: keyword +type: long -- -*`rsa.misc.phone`*:: +*`netflow.max_subscribers`*:: + -- -type: keyword +type: long -- -*`rsa.misc.sig_id_str`*:: +*`netflow.maximum_ip_total_length`*:: + -- -This key captures a string object of the sigid variable. - -type: keyword +type: long -- -*`rsa.misc.cmd`*:: +*`netflow.maximum_layer2_total_length`*:: + -- -type: keyword +type: long -- -*`rsa.misc.misc`*:: +*`netflow.maximum_ttl`*:: + -- -type: keyword +type: short -- -*`rsa.misc.name`*:: +*`netflow.mean_flow_rate`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cpu`*:: +*`netflow.mean_packet_rate`*:: + -- -This key is the CPU time used in the execution of the event being recorded. - type: long -- -*`rsa.misc.event_desc`*:: +*`netflow.message_md5_checksum`*:: + -- -This key is used to capture a description of an event available directly or inferred +type: short + +-- -type: keyword +*`netflow.message_scope`*:: ++ +-- +type: short -- -*`rsa.misc.sig_id1`*:: +*`netflow.metering_process_id`*:: + -- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - type: long -- -*`rsa.misc.im_buddyid`*:: +*`netflow.metro_evc_id`*:: + -- type: keyword -- -*`rsa.misc.im_client`*:: +*`netflow.metro_evc_type`*:: + -- -type: keyword +type: short -- -*`rsa.misc.im_userid`*:: +*`netflow.mib_capture_time_semantics`*:: + -- -type: keyword +type: short -- -*`rsa.misc.pid`*:: +*`netflow.mib_context_engine_id`*:: + -- -type: keyword +type: short -- -*`rsa.misc.priority`*:: +*`netflow.mib_context_name`*:: + -- type: keyword -- -*`rsa.misc.context_subject`*:: +*`netflow.mib_index_indicator`*:: + -- -This key is to be used in an audit context where the subject is the object being identified - -type: keyword +type: long -- -*`rsa.misc.context_target`*:: +*`netflow.mib_module_name`*:: + -- type: keyword -- -*`rsa.misc.cve`*:: +*`netflow.mib_object_description`*:: + -- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - type: keyword -- -*`rsa.misc.fcatnum`*:: +*`netflow.mib_object_identifier`*:: + -- -This key captures Filter Category Number. Legacy Usage - -type: keyword +type: short -- -*`rsa.misc.library`*:: +*`netflow.mib_object_name`*:: + -- -This key is used to capture library information in mainframe devices - type: keyword -- -*`rsa.misc.parent_node`*:: +*`netflow.mib_object_syntax`*:: + -- -This key captures the Parent Node Name. Must be related to node variable. - type: keyword -- -*`rsa.misc.risk_info`*:: +*`netflow.mib_object_value_bits`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword +type: short -- -*`rsa.misc.tcp_flags`*:: +*`netflow.mib_object_value_counter`*:: + -- -This key is captures the TCP flags set in any packet of session - type: long -- -*`rsa.misc.tos`*:: +*`netflow.mib_object_value_gauge`*:: + -- -This key describes the type of service - type: long -- -*`rsa.misc.vm_target`*:: +*`netflow.mib_object_value_integer`*:: + -- -VMWare Target **VMWARE** only varaible. - -type: keyword +type: integer -- -*`rsa.misc.workspace`*:: +*`netflow.mib_object_value_ip_address`*:: + -- -This key captures Workspace Description - -type: keyword +type: ip -- -*`rsa.misc.command`*:: +*`netflow.mib_object_value_octet_string`*:: + -- -type: keyword +type: short -- -*`rsa.misc.event_category`*:: +*`netflow.mib_object_value_oid`*:: + -- -type: keyword +type: short -- -*`rsa.misc.facilityname`*:: +*`netflow.mib_object_value_time_ticks`*:: + -- -type: keyword +type: long -- -*`rsa.misc.forensic_info`*:: +*`netflow.mib_object_value_unsigned`*:: + -- -type: keyword +type: long -- -*`rsa.misc.jobname`*:: +*`netflow.mib_sub_identifier`*:: + -- -type: keyword +type: long -- -*`rsa.misc.mode`*:: +*`netflow.min_export_seconds`*:: + -- -type: keyword +type: date -- -*`rsa.misc.policy`*:: +*`netflow.min_flow_start_microseconds`*:: + -- -type: keyword +type: date -- -*`rsa.misc.policy_waiver`*:: +*`netflow.min_flow_start_milliseconds`*:: + -- -type: keyword +type: date -- -*`rsa.misc.second`*:: +*`netflow.min_flow_start_nanoseconds`*:: + -- -type: keyword +type: date -- -*`rsa.misc.space1`*:: +*`netflow.min_flow_start_seconds`*:: + -- -type: keyword +type: date -- -*`rsa.misc.subcategory`*:: +*`netflow.minimum_ip_total_length`*:: + -- -type: keyword +type: long -- -*`rsa.misc.tbdstr2`*:: +*`netflow.minimum_layer2_total_length`*:: + -- -type: keyword +type: long -- -*`rsa.misc.alert_id`*:: +*`netflow.minimum_ttl`*:: + -- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword +type: short -- -*`rsa.misc.checksum_dst`*:: +*`netflow.mobile_imsi`*:: + -- -This key is used to capture the checksum or hash of the the target entity such as a process or file. - type: keyword -- -*`rsa.misc.checksum_src`*:: +*`netflow.mobile_msisdn`*:: + -- -This key is used to capture the checksum or hash of the source entity such as a file or process. - type: keyword -- -*`rsa.misc.fresult`*:: +*`netflow.monitoring_interval_end_milli_seconds`*:: + -- -This key captures the Filter Result - -type: long +type: date -- -*`rsa.misc.payload_dst`*:: +*`netflow.monitoring_interval_start_milli_seconds`*:: + -- -This key is used to capture destination payload - -type: keyword +type: date -- -*`rsa.misc.payload_src`*:: +*`netflow.mpls_label_stack_depth`*:: + -- -This key is used to capture source payload - -type: keyword +type: long -- -*`rsa.misc.pool_id`*:: +*`netflow.mpls_label_stack_length`*:: + -- -This key captures the identifier (typically numeric field) of a resource pool - -type: keyword +type: long -- -*`rsa.misc.process_id_val`*:: +*`netflow.mpls_label_stack_section`*:: + -- -This key is a failure key for Process ID when it is not an integer value - -type: keyword +type: short -- -*`rsa.misc.risk_num_comm`*:: +*`netflow.mpls_label_stack_section10`*:: + -- -This key captures Risk Number Community - -type: double +type: short -- -*`rsa.misc.risk_num_next`*:: +*`netflow.mpls_label_stack_section2`*:: + -- -This key captures Risk Number NextGen - -type: double +type: short -- -*`rsa.misc.risk_num_sand`*:: +*`netflow.mpls_label_stack_section3`*:: + -- -This key captures Risk Number SandBox - -type: double +type: short -- -*`rsa.misc.risk_num_static`*:: +*`netflow.mpls_label_stack_section4`*:: + -- -This key captures Risk Number Static - -type: double +type: short -- -*`rsa.misc.risk_suspicious`*:: +*`netflow.mpls_label_stack_section5`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword +type: short -- -*`rsa.misc.risk_warning`*:: +*`netflow.mpls_label_stack_section6`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - -type: keyword +type: short -- -*`rsa.misc.snmp_oid`*:: +*`netflow.mpls_label_stack_section7`*:: + -- -SNMP Object Identifier - -type: keyword +type: short -- -*`rsa.misc.sql`*:: +*`netflow.mpls_label_stack_section8`*:: + -- -This key captures the SQL query - -type: keyword +type: short -- -*`rsa.misc.vuln_ref`*:: +*`netflow.mpls_label_stack_section9`*:: + -- -This key captures the Vulnerability Reference details - -type: keyword +type: short -- -*`rsa.misc.acl_id`*:: +*`netflow.mpls_payload_length`*:: + -- -type: keyword +type: long -- -*`rsa.misc.acl_op`*:: +*`netflow.mpls_payload_packet_section`*:: + -- -type: keyword +type: short -- -*`rsa.misc.acl_pos`*:: +*`netflow.mpls_top_label_exp`*:: + -- -type: keyword +type: short -- -*`rsa.misc.acl_table`*:: +*`netflow.mpls_top_label_ipv4_address`*:: + -- -type: keyword +type: ip -- -*`rsa.misc.admin`*:: +*`netflow.mpls_top_label_ipv6_address`*:: + -- -type: keyword +type: ip -- -*`rsa.misc.alarm_id`*:: +*`netflow.mpls_top_label_prefix_length`*:: + -- -type: keyword +type: short -- -*`rsa.misc.alarmname`*:: +*`netflow.mpls_top_label_stack_section`*:: + -- -type: keyword +type: short -- -*`rsa.misc.app_id`*:: +*`netflow.mpls_top_label_ttl`*:: + -- -type: keyword +type: short -- -*`rsa.misc.audit`*:: +*`netflow.mpls_top_label_type`*:: + -- -type: keyword +type: short -- -*`rsa.misc.audit_object`*:: +*`netflow.mpls_vpn_route_distinguisher`*:: + -- -type: keyword +type: short -- -*`rsa.misc.auditdata`*:: +*`netflow.mptcp_address_id`*:: + -- -type: keyword +type: short -- -*`rsa.misc.benchmark`*:: +*`netflow.mptcp_flags`*:: + -- -type: keyword +type: short -- -*`rsa.misc.bypass`*:: +*`netflow.mptcp_initial_data_sequence_number`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cache`*:: +*`netflow.mptcp_maximum_segment_size`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cache_hit`*:: +*`netflow.mptcp_receiver_token`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cefversion`*:: +*`netflow.multicast_replication_factor`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cfg_attr`*:: +*`netflow.nat_event`*:: + -- -type: keyword +type: short -- -*`rsa.misc.cfg_obj`*:: +*`netflow.nat_inside_svcid`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cfg_path`*:: +*`netflow.nat_instance_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.changes`*:: +*`netflow.nat_originating_address_realm`*:: + -- -type: keyword +type: short -- -*`rsa.misc.client_ip`*:: +*`netflow.nat_outside_svcid`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.clustermembers`*:: +*`netflow.nat_pool_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_acttimeout`*:: +*`netflow.nat_pool_name`*:: + -- type: keyword -- -*`rsa.misc.cn_asn_src`*:: +*`netflow.nat_quota_exceeded_event`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_bgpv4nxthop`*:: +*`netflow.nat_sub_string`*:: + -- type: keyword -- -*`rsa.misc.cn_ctr_dst_code`*:: +*`netflow.nat_threshold_event`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_dst_tos`*:: +*`netflow.nat_type`*:: + -- -type: keyword +type: short -- -*`rsa.misc.cn_dst_vlan`*:: +*`netflow.netscale_ica_client_version`*:: + -- type: keyword -- -*`rsa.misc.cn_engine_id`*:: +*`netflow.netscaler_aaa_username`*:: + -- type: keyword -- -*`rsa.misc.cn_engine_type`*:: +*`netflow.netscaler_app_name`*:: + -- type: keyword -- -*`rsa.misc.cn_f_switch`*:: +*`netflow.netscaler_app_name_app_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_flowsampid`*:: +*`netflow.netscaler_app_name_incarnation_number`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_flowsampintv`*:: +*`netflow.netscaler_app_template_name`*:: + -- type: keyword -- -*`rsa.misc.cn_flowsampmode`*:: +*`netflow.netscaler_app_unit_name_app_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_inacttimeout`*:: +*`netflow.netscaler_application_startup_duration`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_inpermbyts`*:: +*`netflow.netscaler_application_startup_time`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_inpermpckts`*:: +*`netflow.netscaler_cache_redir_client_connection_core_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_invalid`*:: +*`netflow.netscaler_cache_redir_client_connection_transaction_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_ip_proto_ver`*:: +*`netflow.netscaler_client_rtt`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_ipv4_ident`*:: +*`netflow.netscaler_connection_chain_hop_count`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_l_switch`*:: +*`netflow.netscaler_connection_chain_id`*:: + -- -type: keyword +type: short -- -*`rsa.misc.cn_log_did`*:: +*`netflow.netscaler_connection_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_log_rid`*:: +*`netflow.netscaler_current_license_consumed`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_max_ttl`*:: +*`netflow.netscaler_db_clt_host_name`*:: + -- type: keyword -- -*`rsa.misc.cn_maxpcktlen`*:: +*`netflow.netscaler_db_database_name`*:: + -- type: keyword -- -*`rsa.misc.cn_min_ttl`*:: +*`netflow.netscaler_db_login_flags`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_minpcktlen`*:: +*`netflow.netscaler_db_protocol_name`*:: + -- -type: keyword +type: short -- -*`rsa.misc.cn_mpls_lbl_1`*:: +*`netflow.netscaler_db_req_string`*:: + -- type: keyword -- -*`rsa.misc.cn_mpls_lbl_10`*:: +*`netflow.netscaler_db_req_type`*:: + -- -type: keyword +type: short -- -*`rsa.misc.cn_mpls_lbl_2`*:: +*`netflow.netscaler_db_resp_length`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_mpls_lbl_3`*:: +*`netflow.netscaler_db_resp_status`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_mpls_lbl_4`*:: +*`netflow.netscaler_db_resp_status_string`*:: + -- type: keyword -- -*`rsa.misc.cn_mpls_lbl_5`*:: +*`netflow.netscaler_db_user_name`*:: + -- type: keyword -- -*`rsa.misc.cn_mpls_lbl_6`*:: +*`netflow.netscaler_flow_flags`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_mpls_lbl_7`*:: +*`netflow.netscaler_http_client_interaction_end_time`*:: + -- type: keyword -- -*`rsa.misc.cn_mpls_lbl_8`*:: +*`netflow.netscaler_http_client_interaction_start_time`*:: + -- type: keyword -- -*`rsa.misc.cn_mpls_lbl_9`*:: +*`netflow.netscaler_http_client_render_end_time`*:: + -- type: keyword -- -*`rsa.misc.cn_mplstoplabel`*:: +*`netflow.netscaler_http_client_render_start_time`*:: + -- type: keyword -- -*`rsa.misc.cn_mplstoplabip`*:: +*`netflow.netscaler_http_content_type`*:: + -- type: keyword -- -*`rsa.misc.cn_mul_dst_byt`*:: +*`netflow.netscaler_http_domain_name`*:: + -- type: keyword -- -*`rsa.misc.cn_mul_dst_pks`*:: +*`netflow.netscaler_http_req_authorization`*:: + -- type: keyword -- -*`rsa.misc.cn_muligmptype`*:: +*`netflow.netscaler_http_req_cookie`*:: + -- type: keyword -- -*`rsa.misc.cn_sampalgo`*:: +*`netflow.netscaler_http_req_forw_fb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_sampint`*:: +*`netflow.netscaler_http_req_forw_lb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_seqctr`*:: +*`netflow.netscaler_http_req_host`*:: + -- type: keyword -- -*`rsa.misc.cn_spackets`*:: +*`netflow.netscaler_http_req_method`*:: + -- type: keyword -- -*`rsa.misc.cn_src_tos`*:: +*`netflow.netscaler_http_req_rcv_fb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_src_vlan`*:: +*`netflow.netscaler_http_req_rcv_lb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_sysuptime`*:: +*`netflow.netscaler_http_req_referer`*:: + -- type: keyword -- -*`rsa.misc.cn_template_id`*:: +*`netflow.netscaler_http_req_url`*:: + -- type: keyword -- -*`rsa.misc.cn_totbytsexp`*:: +*`netflow.netscaler_http_req_user_agent`*:: + -- type: keyword -- -*`rsa.misc.cn_totflowexp`*:: +*`netflow.netscaler_http_req_via`*:: + -- type: keyword -- -*`rsa.misc.cn_totpcktsexp`*:: +*`netflow.netscaler_http_req_xforwarded_for`*:: + -- type: keyword -- -*`rsa.misc.cn_unixnanosecs`*:: +*`netflow.netscaler_http_res_forw_fb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_v6flowlabel`*:: +*`netflow.netscaler_http_res_forw_lb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cn_v6optheaders`*:: +*`netflow.netscaler_http_res_location`*:: + -- type: keyword -- -*`rsa.misc.comp_class`*:: +*`netflow.netscaler_http_res_rcv_fb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.comp_name`*:: +*`netflow.netscaler_http_res_rcv_lb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.comp_rbytes`*:: +*`netflow.netscaler_http_res_set_cookie`*:: + -- type: keyword -- -*`rsa.misc.comp_sbytes`*:: +*`netflow.netscaler_http_res_set_cookie2`*:: + -- type: keyword -- -*`rsa.misc.cpu_data`*:: +*`netflow.netscaler_http_rsp_len`*:: + -- -type: keyword +type: long -- -*`rsa.misc.criticality`*:: +*`netflow.netscaler_http_rsp_status`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_agency_dst`*:: +*`netflow.netscaler_ica_app_module_path`*:: + -- type: keyword -- -*`rsa.misc.cs_analyzedby`*:: +*`netflow.netscaler_ica_app_process_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_av_other`*:: +*`netflow.netscaler_ica_application_name`*:: + -- type: keyword -- -*`rsa.misc.cs_av_primary`*:: +*`netflow.netscaler_ica_application_termination_time`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_av_secondary`*:: +*`netflow.netscaler_ica_application_termination_type`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_bgpv6nxthop`*:: +*`netflow.netscaler_ica_channel_id1`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_bit9status`*:: +*`netflow.netscaler_ica_channel_id1_bytes`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_context`*:: +*`netflow.netscaler_ica_channel_id2`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_control`*:: +*`netflow.netscaler_ica_channel_id2_bytes`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_data`*:: +*`netflow.netscaler_ica_channel_id3`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_datecret`*:: +*`netflow.netscaler_ica_channel_id3_bytes`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_dst_tld`*:: +*`netflow.netscaler_ica_channel_id4`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_eth_dst_ven`*:: +*`netflow.netscaler_ica_channel_id4_bytes`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_eth_src_ven`*:: +*`netflow.netscaler_ica_channel_id5`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_event_uuid`*:: +*`netflow.netscaler_ica_channel_id5_bytes`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_filetype`*:: +*`netflow.netscaler_ica_client_host_name`*:: + -- type: keyword -- -*`rsa.misc.cs_fld`*:: +*`netflow.netscaler_ica_client_ip`*:: + -- -type: keyword +type: ip -- -*`rsa.misc.cs_if_desc`*:: +*`netflow.netscaler_ica_client_launcher`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_if_name`*:: +*`netflow.netscaler_ica_client_side_rto_count`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_ip_next_hop`*:: +*`netflow.netscaler_ica_client_side_window_size`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_ipv4dstpre`*:: +*`netflow.netscaler_ica_client_type`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_ipv4srcpre`*:: +*`netflow.netscaler_ica_clientside_delay`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_lifetime`*:: +*`netflow.netscaler_ica_clientside_jitter`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_log_medium`*:: +*`netflow.netscaler_ica_clientside_packets_retransmit`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_loginname`*:: +*`netflow.netscaler_ica_clientside_rtt`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_modulescore`*:: +*`netflow.netscaler_ica_clientside_rx_bytes`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_modulesign`*:: +*`netflow.netscaler_ica_clientside_srtt`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_opswatresult`*:: +*`netflow.netscaler_ica_clientside_tx_bytes`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_payload`*:: +*`netflow.netscaler_ica_connection_priority`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_registrant`*:: +*`netflow.netscaler_ica_device_serial_no`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_registrar`*:: +*`netflow.netscaler_ica_domain_name`*:: + -- type: keyword -- -*`rsa.misc.cs_represult`*:: +*`netflow.netscaler_ica_flags`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_rpayload`*:: +*`netflow.netscaler_ica_host_delay`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_sampler_name`*:: +*`netflow.netscaler_ica_l7_client_latency`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_sourcemodule`*:: +*`netflow.netscaler_ica_l7_server_latency`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_streams`*:: +*`netflow.netscaler_ica_launch_mechanism`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.cs_targetmodule`*:: +*`netflow.netscaler_ica_network_update_end_time`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_v6nxthop`*:: +*`netflow.netscaler_ica_network_update_start_time`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_whois_server`*:: +*`netflow.netscaler_ica_rtt`*:: + -- -type: keyword +type: long -- -*`rsa.misc.cs_yararesult`*:: +*`netflow.netscaler_ica_server_name`*:: + -- type: keyword -- -*`rsa.misc.description`*:: +*`netflow.netscaler_ica_server_side_rto_count`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.devvendor`*:: +*`netflow.netscaler_ica_server_side_window_size`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.distance`*:: +*`netflow.netscaler_ica_serverside_delay`*:: + -- -type: keyword +type: long -- -*`rsa.misc.dstburb`*:: +*`netflow.netscaler_ica_serverside_jitter`*:: + -- -type: keyword +type: long -- -*`rsa.misc.edomain`*:: +*`netflow.netscaler_ica_serverside_packets_retransmit`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.edomaub`*:: +*`netflow.netscaler_ica_serverside_rtt`*:: + -- -type: keyword +type: long -- -*`rsa.misc.euid`*:: +*`netflow.netscaler_ica_serverside_srtt`*:: + -- -type: keyword +type: long -- -*`rsa.misc.facility`*:: +*`netflow.netscaler_ica_session_end_time`*:: + -- -type: keyword +type: long -- -*`rsa.misc.finterface`*:: +*`netflow.netscaler_ica_session_guid`*:: + -- -type: keyword +type: short -- -*`rsa.misc.flags`*:: +*`netflow.netscaler_ica_session_reconnects`*:: + -- -type: keyword +type: short -- -*`rsa.misc.gaddr`*:: +*`netflow.netscaler_ica_session_setup_time`*:: + -- -type: keyword +type: long -- -*`rsa.misc.id3`*:: +*`netflow.netscaler_ica_session_update_begin_sec`*:: + -- -type: keyword +type: long -- -*`rsa.misc.im_buddyname`*:: +*`netflow.netscaler_ica_session_update_end_sec`*:: + -- -type: keyword +type: long -- -*`rsa.misc.im_croomid`*:: +*`netflow.netscaler_ica_username`*:: + -- type: keyword -- -*`rsa.misc.im_croomtype`*:: +*`netflow.netscaler_license_type`*:: + -- -type: keyword +type: short -- -*`rsa.misc.im_members`*:: +*`netflow.netscaler_main_page_core_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.im_username`*:: +*`netflow.netscaler_main_page_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.ipkt`*:: +*`netflow.netscaler_max_license_count`*:: + -- -type: keyword +type: long -- -*`rsa.misc.ipscat`*:: +*`netflow.netscaler_msi_client_cookie`*:: + -- -type: keyword +type: short -- -*`rsa.misc.ipspri`*:: +*`netflow.netscaler_round_trip_time`*:: + -- -type: keyword +type: long -- -*`rsa.misc.latitude`*:: +*`netflow.netscaler_server_ttfb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.linenum`*:: +*`netflow.netscaler_server_ttlb`*:: + -- -type: keyword +type: long -- -*`rsa.misc.list_name`*:: +*`netflow.netscaler_syslog_message`*:: + -- type: keyword -- -*`rsa.misc.load_data`*:: +*`netflow.netscaler_syslog_priority`*:: + -- -type: keyword +type: short -- -*`rsa.misc.location_floor`*:: +*`netflow.netscaler_syslog_timestamp`*:: + -- -type: keyword +type: long -- -*`rsa.misc.location_mark`*:: +*`netflow.netscaler_transaction_id`*:: + -- -type: keyword +type: long -- -*`rsa.misc.log_id`*:: +*`netflow.netscaler_unknown270`*:: + -- -type: keyword +type: long -- -*`rsa.misc.log_type`*:: +*`netflow.netscaler_unknown271`*:: + -- -type: keyword +type: long -- -*`rsa.misc.logid`*:: +*`netflow.netscaler_unknown272`*:: + -- -type: keyword +type: long -- -*`rsa.misc.logip`*:: +*`netflow.netscaler_unknown273`*:: + -- -type: keyword +type: long -- -*`rsa.misc.logname`*:: +*`netflow.netscaler_unknown274`*:: + -- -type: keyword +type: long -- -*`rsa.misc.longitude`*:: +*`netflow.netscaler_unknown275`*:: + -- -type: keyword +type: long -- -*`rsa.misc.lport`*:: +*`netflow.netscaler_unknown276`*:: + -- -type: keyword +type: long -- -*`rsa.misc.mbug_data`*:: +*`netflow.netscaler_unknown277`*:: + -- -type: keyword +type: long -- -*`rsa.misc.misc_name`*:: +*`netflow.netscaler_unknown278`*:: + -- -type: keyword +type: long -- -*`rsa.misc.msg_type`*:: +*`netflow.netscaler_unknown279`*:: + -- -type: keyword +type: long -- -*`rsa.misc.msgid`*:: +*`netflow.netscaler_unknown280`*:: + -- -type: keyword +type: long -- -*`rsa.misc.netsessid`*:: +*`netflow.netscaler_unknown281`*:: + -- -type: keyword +type: long -- -*`rsa.misc.num`*:: +*`netflow.netscaler_unknown282`*:: + -- -type: keyword +type: long -- -*`rsa.misc.number1`*:: +*`netflow.netscaler_unknown283`*:: + -- -type: keyword +type: long -- -*`rsa.misc.number2`*:: +*`netflow.netscaler_unknown284`*:: + -- -type: keyword +type: long -- -*`rsa.misc.nwwn`*:: +*`netflow.netscaler_unknown285`*:: + -- -type: keyword +type: long -- -*`rsa.misc.object`*:: +*`netflow.netscaler_unknown286`*:: + -- -type: keyword +type: long -- -*`rsa.misc.operation`*:: +*`netflow.netscaler_unknown287`*:: + -- -type: keyword +type: long -- -*`rsa.misc.opkt`*:: +*`netflow.netscaler_unknown288`*:: + -- -type: keyword +type: long -- -*`rsa.misc.orig_from`*:: +*`netflow.netscaler_unknown289`*:: + -- -type: keyword +type: long -- -*`rsa.misc.owner_id`*:: +*`netflow.netscaler_unknown290`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_action`*:: +*`netflow.netscaler_unknown291`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_filter`*:: +*`netflow.netscaler_unknown292`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_group_object`*:: +*`netflow.netscaler_unknown293`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_id`*:: +*`netflow.netscaler_unknown294`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_msgid1`*:: +*`netflow.netscaler_unknown295`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_msgid2`*:: +*`netflow.netscaler_unknown296`*:: + -- -type: keyword +type: long -- -*`rsa.misc.p_result1`*:: +*`netflow.netscaler_unknown297`*:: + -- -type: keyword +type: long -- -*`rsa.misc.password_chg`*:: +*`netflow.netscaler_unknown298`*:: + -- -type: keyword +type: long -- -*`rsa.misc.password_expire`*:: +*`netflow.netscaler_unknown299`*:: + -- -type: keyword +type: long -- -*`rsa.misc.permgranted`*:: +*`netflow.netscaler_unknown300`*:: + -- -type: keyword +type: long -- -*`rsa.misc.permwanted`*:: +*`netflow.netscaler_unknown301`*:: + -- -type: keyword +type: long -- -*`rsa.misc.pgid`*:: +*`netflow.netscaler_unknown302`*:: + -- -type: keyword +type: long -- -*`rsa.misc.policyUUID`*:: +*`netflow.netscaler_unknown303`*:: + -- -type: keyword +type: long -- -*`rsa.misc.prog_asp_num`*:: +*`netflow.netscaler_unknown304`*:: + -- -type: keyword +type: long -- -*`rsa.misc.program`*:: +*`netflow.netscaler_unknown305`*:: + -- -type: keyword +type: long -- -*`rsa.misc.real_data`*:: +*`netflow.netscaler_unknown306`*:: + -- -type: keyword +type: long -- -*`rsa.misc.rec_asp_device`*:: +*`netflow.netscaler_unknown307`*:: + -- -type: keyword +type: long -- -*`rsa.misc.rec_asp_num`*:: +*`netflow.netscaler_unknown308`*:: + -- -type: keyword +type: long -- -*`rsa.misc.rec_library`*:: +*`netflow.netscaler_unknown309`*:: + -- -type: keyword +type: long -- -*`rsa.misc.recordnum`*:: +*`netflow.netscaler_unknown310`*:: + -- -type: keyword +type: long -- -*`rsa.misc.ruid`*:: +*`netflow.netscaler_unknown311`*:: + -- -type: keyword +type: long -- -*`rsa.misc.sburb`*:: +*`netflow.netscaler_unknown312`*:: + -- -type: keyword +type: long -- -*`rsa.misc.sdomain_fld`*:: +*`netflow.netscaler_unknown313`*:: + -- -type: keyword +type: long -- -*`rsa.misc.sec`*:: +*`netflow.netscaler_unknown314`*:: + -- -type: keyword +type: long -- -*`rsa.misc.sensorname`*:: +*`netflow.netscaler_unknown315`*:: + -- -type: keyword +type: long -- -*`rsa.misc.seqnum`*:: +*`netflow.netscaler_unknown316`*:: + -- type: keyword -- -*`rsa.misc.session`*:: +*`netflow.netscaler_unknown317`*:: + -- -type: keyword +type: long -- -*`rsa.misc.sessiontype`*:: +*`netflow.netscaler_unknown318`*:: + -- -type: keyword +type: long -- -*`rsa.misc.sigUUID`*:: +*`netflow.netscaler_unknown319`*:: + -- type: keyword -- -*`rsa.misc.spi`*:: +*`netflow.netscaler_unknown320`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.srcburb`*:: +*`netflow.netscaler_unknown321`*:: + -- -type: keyword +type: long -- -*`rsa.misc.srcdom`*:: +*`netflow.netscaler_unknown322`*:: + -- -type: keyword +type: long -- -*`rsa.misc.srcservice`*:: +*`netflow.netscaler_unknown323`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.state`*:: +*`netflow.netscaler_unknown324`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.status1`*:: +*`netflow.netscaler_unknown325`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.svcno`*:: +*`netflow.netscaler_unknown326`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.system`*:: +*`netflow.netscaler_unknown327`*:: + -- -type: keyword +type: long -- -*`rsa.misc.tbdstr1`*:: +*`netflow.netscaler_unknown328`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.tgtdom`*:: +*`netflow.netscaler_unknown329`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.tgtdomain`*:: +*`netflow.netscaler_unknown330`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.threshold`*:: +*`netflow.netscaler_unknown331`*:: + -- -type: keyword +type: integer -- -*`rsa.misc.type1`*:: +*`netflow.netscaler_unknown332`*:: + -- -type: keyword +type: long -- -*`rsa.misc.udb_class`*:: +*`netflow.netscaler_unknown333`*:: + -- type: keyword -- -*`rsa.misc.url_fld`*:: +*`netflow.netscaler_unknown334`*:: + -- type: keyword -- -*`rsa.misc.user_div`*:: +*`netflow.netscaler_unknown335`*:: + -- -type: keyword +type: long -- -*`rsa.misc.userid`*:: +*`netflow.netscaler_unknown336`*:: + -- -type: keyword +type: long -- -*`rsa.misc.username_fld`*:: +*`netflow.netscaler_unknown337`*:: + -- -type: keyword +type: long -- -*`rsa.misc.utcstamp`*:: +*`netflow.netscaler_unknown338`*:: + -- -type: keyword +type: long -- -*`rsa.misc.v_instafname`*:: +*`netflow.netscaler_unknown339`*:: + -- -type: keyword +type: long -- -*`rsa.misc.virt_data`*:: +*`netflow.netscaler_unknown340`*:: + -- -type: keyword +type: long -- -*`rsa.misc.vpnid`*:: +*`netflow.netscaler_unknown341`*:: + -- -type: keyword +type: long -- -*`rsa.misc.autorun_type`*:: +*`netflow.netscaler_unknown342`*:: + -- -This is used to capture Auto Run type - -type: keyword +type: long -- -*`rsa.misc.cc_number`*:: +*`netflow.netscaler_unknown343`*:: + -- -Valid Credit Card Numbers only - type: long -- -*`rsa.misc.content`*:: +*`netflow.netscaler_unknown344`*:: + -- -This key captures the content type from protocol headers - -type: keyword +type: long -- -*`rsa.misc.ein_number`*:: +*`netflow.netscaler_unknown345`*:: + -- -Employee Identification Numbers only - type: long -- -*`rsa.misc.found`*:: +*`netflow.netscaler_unknown346`*:: + -- -This is used to capture the results of regex match - -type: keyword +type: long -- -*`rsa.misc.language`*:: +*`netflow.netscaler_unknown347`*:: + -- -This is used to capture list of languages the client support and what it prefers - -type: keyword +type: long -- -*`rsa.misc.lifetime`*:: +*`netflow.netscaler_unknown348`*:: + -- -This key is used to capture the session lifetime in seconds. - -type: long +type: integer -- -*`rsa.misc.link`*:: +*`netflow.netscaler_unknown349`*:: + -- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: keyword -- -*`rsa.misc.match`*:: +*`netflow.netscaler_unknown350`*:: + -- -This key is for regex match name from search.ini - type: keyword -- -*`rsa.misc.param_dst`*:: +*`netflow.netscaler_unknown351`*:: + -- -This key captures the command line/launch argument of the target process or file - type: keyword -- -*`rsa.misc.param_src`*:: +*`netflow.netscaler_unknown352`*:: + -- -This key captures source parameter - -type: keyword +type: integer -- -*`rsa.misc.search_text`*:: +*`netflow.netscaler_unknown353`*:: + -- -This key captures the Search Text used - -type: keyword +type: long -- -*`rsa.misc.sig_name`*:: +*`netflow.netscaler_unknown354`*:: + -- -This key is used to capture the Signature Name only. - -type: keyword +type: long -- -*`rsa.misc.snmp_value`*:: +*`netflow.netscaler_unknown355`*:: + -- -SNMP set request value - -type: keyword +type: long -- -*`rsa.misc.streams`*:: +*`netflow.netscaler_unknown356`*:: + -- -This key captures number of streams in session - type: long -- - -*`rsa.db.index`*:: +*`netflow.netscaler_unknown357`*:: + -- -This key captures IndexID of the index. - -type: keyword +type: long -- -*`rsa.db.instance`*:: +*`netflow.netscaler_unknown363`*:: + -- -This key is used to capture the database server instance name - -type: keyword +type: short -- -*`rsa.db.database`*:: +*`netflow.netscaler_unknown383`*:: + -- -This key is used to capture the name of a database or an instance as seen in a session - -type: keyword +type: short -- -*`rsa.db.transact_id`*:: +*`netflow.netscaler_unknown391`*:: + -- -This key captures the SQL transantion ID of the current session - -type: keyword +type: long -- -*`rsa.db.permissions`*:: +*`netflow.netscaler_unknown398`*:: + -- -This key captures permission or privilege level assigned to a resource. - -type: keyword +type: long -- -*`rsa.db.table_name`*:: +*`netflow.netscaler_unknown404`*:: + -- -This key is used to capture the table name - -type: keyword +type: long -- -*`rsa.db.db_id`*:: +*`netflow.netscaler_unknown405`*:: + -- -This key is used to capture the unique identifier for a database - -type: keyword +type: long -- -*`rsa.db.db_pid`*:: +*`netflow.netscaler_unknown427`*:: + -- -This key captures the process id of a connection with database server - type: long -- -*`rsa.db.lread`*:: +*`netflow.netscaler_unknown429`*:: + -- -This key is used for the number of logical reads +type: short + +-- -type: long +*`netflow.netscaler_unknown432`*:: ++ +-- +type: short -- -*`rsa.db.lwrite`*:: +*`netflow.netscaler_unknown433`*:: + -- -This key is used for the number of logical writes +type: short + +-- +*`netflow.netscaler_unknown453`*:: ++ +-- type: long -- -*`rsa.db.pread`*:: +*`netflow.netscaler_unknown465`*:: + -- -This key is used for the number of physical writes - type: long -- - -*`rsa.network.alias_host`*:: +*`netflow.new_connection_delta_count`*:: + -- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. - -type: keyword +type: long -- -*`rsa.network.domain`*:: +*`netflow.next_header_ipv6`*:: + -- -type: keyword +type: short -- -*`rsa.network.host_dst`*:: +*`netflow.non_empty_packet_count`*:: + -- -This key should only be used when it’s a Destination Hostname - -type: keyword +type: long -- -*`rsa.network.network_service`*:: +*`netflow.not_sent_flow_total_count`*:: + -- -This is used to capture layer 7 protocols/service names - -type: keyword +type: long -- -*`rsa.network.interface`*:: +*`netflow.not_sent_layer2_octet_total_count`*:: + -- -This key should be used when the source or destination context of an interface is not clear - -type: keyword +type: long -- -*`rsa.network.network_port`*:: +*`netflow.not_sent_octet_total_count`*:: + -- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) - type: long -- -*`rsa.network.eth_host`*:: +*`netflow.not_sent_packet_total_count`*:: + -- -Deprecated, use alias.mac - -type: keyword +type: long -- -*`rsa.network.sinterface`*:: +*`netflow.observation_domain_id`*:: + -- -This key should only be used when it’s a Source Interface - -type: keyword +type: long -- -*`rsa.network.dinterface`*:: +*`netflow.observation_domain_name`*:: + -- -This key should only be used when it’s a Destination Interface - type: keyword -- -*`rsa.network.vlan`*:: +*`netflow.observation_point_id`*:: + -- -This key should only be used to capture the ID of the Virtual LAN - type: long -- -*`rsa.network.zone_src`*:: +*`netflow.observation_point_type`*:: + -- -This key should only be used when it’s a Source Zone. - -type: keyword +type: short -- -*`rsa.network.zone`*:: +*`netflow.observation_time_microseconds`*:: + -- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword +type: date -- -*`rsa.network.zone_dst`*:: +*`netflow.observation_time_milliseconds`*:: + -- -This key should only be used when it’s a Destination Zone. - -type: keyword +type: date -- -*`rsa.network.gateway`*:: +*`netflow.observation_time_nanoseconds`*:: + -- -This key is used to capture the IP Address of the gateway - -type: keyword +type: date -- -*`rsa.network.icmp_type`*:: +*`netflow.observation_time_seconds`*:: + -- -This key is used to capture the ICMP type only - -type: long +type: date -- -*`rsa.network.mask`*:: +*`netflow.observed_flow_total_count`*:: + -- -This key is used to capture the device network IPmask. - -type: keyword +type: long -- -*`rsa.network.icmp_code`*:: +*`netflow.octet_delta_count`*:: + -- -This key is used to capture the ICMP code only - type: long -- -*`rsa.network.protocol_detail`*:: +*`netflow.octet_delta_sum_of_squares`*:: + -- -This key should be used to capture additional protocol information - -type: keyword +type: long -- -*`rsa.network.dmask`*:: +*`netflow.octet_total_count`*:: + -- -This key is used for Destionation Device network mask - -type: keyword +type: long -- -*`rsa.network.port`*:: +*`netflow.octet_total_sum_of_squares`*:: + -- -This key should only be used to capture a Network Port when the directionality is not clear - type: long -- -*`rsa.network.smask`*:: +*`netflow.opaque_octets`*:: + -- -This key is used for capturing source Network Mask - -type: keyword +type: short -- -*`rsa.network.netname`*:: +*`netflow.original_exporter_ipv4_address`*:: + -- -This key is used to capture the network name associated with an IP range. This is configured by the end user. - -type: keyword +type: ip -- -*`rsa.network.paddr`*:: +*`netflow.original_exporter_ipv6_address`*:: + -- -Deprecated - type: ip -- -*`rsa.network.faddr`*:: +*`netflow.original_flows_completed`*:: + -- -type: keyword +type: long -- -*`rsa.network.lhost`*:: +*`netflow.original_flows_initiated`*:: + -- -type: keyword +type: long -- -*`rsa.network.origin`*:: +*`netflow.original_flows_present`*:: + -- -type: keyword +type: long -- -*`rsa.network.remote_domain_id`*:: +*`netflow.original_observation_domain_id`*:: + -- -type: keyword +type: long -- -*`rsa.network.addr`*:: +*`netflow.os_finger_print`*:: + -- type: keyword -- -*`rsa.network.dns_a_record`*:: +*`netflow.os_name`*:: + -- type: keyword -- -*`rsa.network.dns_ptr_record`*:: +*`netflow.os_version`*:: + -- type: keyword -- -*`rsa.network.fhost`*:: +*`netflow.p2p_technology`*:: + -- type: keyword -- -*`rsa.network.fport`*:: +*`netflow.packet_delta_count`*:: + -- -type: keyword +type: long -- -*`rsa.network.laddr`*:: +*`netflow.packet_total_count`*:: + -- -type: keyword +type: long -- -*`rsa.network.linterface`*:: +*`netflow.padding_octets`*:: + -- -type: keyword +type: short -- -*`rsa.network.phost`*:: +*`netflow.payload`*:: + -- type: keyword -- -*`rsa.network.ad_computer_dst`*:: +*`netflow.payload_entropy`*:: + -- -Deprecated, use host.dst - -type: keyword +type: short -- -*`rsa.network.eth_type`*:: +*`netflow.payload_length_ipv6`*:: + -- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only - -type: long +type: integer -- -*`rsa.network.ip_proto`*:: +*`netflow.policy_qos_classification_hierarchy`*:: + -- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI - type: long -- -*`rsa.network.dns_cname_record`*:: +*`netflow.policy_qos_queue_index`*:: + -- -type: keyword +type: long -- -*`rsa.network.dns_id`*:: +*`netflow.policy_qos_queuedrops`*:: + -- -type: keyword +type: long -- -*`rsa.network.dns_opcode`*:: +*`netflow.policy_qos_queueindex`*:: + -- -type: keyword +type: long -- -*`rsa.network.dns_resp`*:: +*`netflow.port_id`*:: + -- -type: keyword +type: long -- -*`rsa.network.dns_type`*:: +*`netflow.port_range_end`*:: + -- -type: keyword +type: integer -- -*`rsa.network.domain1`*:: +*`netflow.port_range_num_ports`*:: + -- -type: keyword +type: integer -- -*`rsa.network.host_type`*:: +*`netflow.port_range_start`*:: + -- -type: keyword +type: integer -- -*`rsa.network.packet_length`*:: +*`netflow.port_range_step_size`*:: + -- -type: keyword +type: integer -- -*`rsa.network.host_orig`*:: +*`netflow.post_destination_mac_address`*:: + -- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. - type: keyword -- -*`rsa.network.rpayload`*:: +*`netflow.post_dot1q_customer_vlan_id`*:: + -- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. - -type: keyword +type: integer -- -*`rsa.network.vlan_name`*:: +*`netflow.post_dot1q_vlan_id`*:: + -- -This key should only be used to capture the name of the Virtual LAN +type: integer -type: keyword +-- +*`netflow.post_ip_class_of_service`*:: ++ -- +type: short +-- -*`rsa.investigations.ec_activity`*:: +*`netflow.post_ip_diff_serv_code_point`*:: + -- -This key captures the particular event activity(Ex:Logoff) - -type: keyword +type: short -- -*`rsa.investigations.ec_theme`*:: +*`netflow.post_ip_precedence`*:: + -- -This key captures the Theme of a particular Event(Ex:Authentication) - -type: keyword +type: short -- -*`rsa.investigations.ec_subject`*:: +*`netflow.post_layer2_octet_delta_count`*:: + -- -This key captures the Subject of a particular Event(Ex:User) - -type: keyword +type: long -- -*`rsa.investigations.ec_outcome`*:: +*`netflow.post_layer2_octet_total_count`*:: + -- -This key captures the outcome of a particular Event(Ex:Success) - -type: keyword +type: long -- -*`rsa.investigations.event_cat`*:: +*`netflow.post_mcast_layer2_octet_delta_count`*:: + -- -This key captures the Event category number - type: long -- -*`rsa.investigations.event_cat_name`*:: +*`netflow.post_mcast_layer2_octet_total_count`*:: + -- -This key captures the event category name corresponding to the event cat code - -type: keyword +type: long -- -*`rsa.investigations.event_vcat`*:: +*`netflow.post_mcast_octet_delta_count`*:: + -- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. - -type: keyword +type: long -- -*`rsa.investigations.analysis_file`*:: +*`netflow.post_mcast_octet_total_count`*:: + -- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file - -type: keyword +type: long -- -*`rsa.investigations.analysis_service`*:: +*`netflow.post_mcast_packet_delta_count`*:: + -- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service - -type: keyword +type: long -- -*`rsa.investigations.analysis_session`*:: +*`netflow.post_mcast_packet_total_count`*:: + -- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session - -type: keyword +type: long -- -*`rsa.investigations.boc`*:: +*`netflow.post_mpls_top_label_exp`*:: + -- -This is used to capture behaviour of compromise - -type: keyword +type: short -- -*`rsa.investigations.eoc`*:: +*`netflow.post_napt_destination_transport_port`*:: + -- -This is used to capture Enablers of Compromise - -type: keyword +type: integer -- -*`rsa.investigations.inv_category`*:: +*`netflow.post_napt_source_transport_port`*:: + -- -This used to capture investigation category - -type: keyword +type: integer -- -*`rsa.investigations.inv_context`*:: +*`netflow.post_nat_destination_ipv4_address`*:: + -- -This used to capture investigation context - -type: keyword +type: ip -- -*`rsa.investigations.ioc`*:: +*`netflow.post_nat_destination_ipv6_address`*:: + -- -This is key capture indicator of compromise +type: ip -type: keyword +-- +*`netflow.post_nat_source_ipv4_address`*:: ++ -- +type: ip +-- -*`rsa.counters.dclass_c1`*:: +*`netflow.post_nat_source_ipv6_address`*:: + -- -This is a generic counter key that should be used with the label dclass.c1.str only - -type: long +type: ip -- -*`rsa.counters.dclass_c2`*:: +*`netflow.post_octet_delta_count`*:: + -- -This is a generic counter key that should be used with the label dclass.c2.str only - type: long -- -*`rsa.counters.event_counter`*:: +*`netflow.post_octet_total_count`*:: + -- -This is used to capture the number of times an event repeated - type: long -- -*`rsa.counters.dclass_r1`*:: +*`netflow.post_packet_delta_count`*:: + -- -This is a generic ratio key that should be used with the label dclass.r1.str only - -type: keyword +type: long -- -*`rsa.counters.dclass_c3`*:: +*`netflow.post_packet_total_count`*:: + -- -This is a generic counter key that should be used with the label dclass.c3.str only - type: long -- -*`rsa.counters.dclass_c1_str`*:: +*`netflow.post_source_mac_address`*:: + -- -This is a generic counter string key that should be used with the label dclass.c1 only - type: keyword -- -*`rsa.counters.dclass_c2_str`*:: +*`netflow.post_vlan_id`*:: + -- -This is a generic counter string key that should be used with the label dclass.c2 only - -type: keyword +type: integer -- -*`rsa.counters.dclass_r1_str`*:: +*`netflow.private_enterprise_number`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r1 only - -type: keyword +type: long -- -*`rsa.counters.dclass_r2`*:: +*`netflow.procera_apn`*:: + -- -This is a generic ratio key that should be used with the label dclass.r2.str only - type: keyword -- -*`rsa.counters.dclass_c3_str`*:: +*`netflow.procera_base_service`*:: + -- -This is a generic counter string key that should be used with the label dclass.c3 only - type: keyword -- -*`rsa.counters.dclass_r3`*:: +*`netflow.procera_content_categories`*:: + -- -This is a generic ratio key that should be used with the label dclass.r3.str only - type: keyword -- -*`rsa.counters.dclass_r2_str`*:: +*`netflow.procera_device_id`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r2 only - -type: keyword +type: long -- -*`rsa.counters.dclass_r3_str`*:: +*`netflow.procera_external_rtt`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r3 only - -type: keyword +type: integer -- - -*`rsa.identity.auth_method`*:: +*`netflow.procera_flow_behavior`*:: + -- -This key is used to capture authentication methods used only - type: keyword -- -*`rsa.identity.user_role`*:: +*`netflow.procera_ggsn`*:: + -- -This key is used to capture the Role of a user only - type: keyword -- -*`rsa.identity.dn`*:: +*`netflow.procera_http_content_type`*:: + -- -X.500 (LDAP) Distinguished Name - type: keyword -- -*`rsa.identity.logon_type`*:: +*`netflow.procera_http_file_length`*:: + -- -This key is used to capture the type of logon method used. - -type: keyword +type: long -- -*`rsa.identity.profile`*:: +*`netflow.procera_http_language`*:: + -- -This key is used to capture the user profile - type: keyword -- -*`rsa.identity.accesses`*:: +*`netflow.procera_http_location`*:: + -- -This key is used to capture actual privileges used in accessing an object - type: keyword -- -*`rsa.identity.realm`*:: +*`netflow.procera_http_referer`*:: + -- -Radius realm or similar grouping of accounts - type: keyword -- -*`rsa.identity.user_sid_dst`*:: +*`netflow.procera_http_request_method`*:: + -- -This key captures Destination User Session ID - type: keyword -- -*`rsa.identity.dn_src`*:: +*`netflow.procera_http_request_version`*:: + -- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn - type: keyword -- -*`rsa.identity.org`*:: +*`netflow.procera_http_response_status`*:: + -- -This key captures the User organization - -type: keyword +type: integer -- -*`rsa.identity.dn_dst`*:: +*`netflow.procera_http_url`*:: + -- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn - type: keyword -- -*`rsa.identity.firstname`*:: +*`netflow.procera_http_user_agent`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - type: keyword -- -*`rsa.identity.lastname`*:: +*`netflow.procera_imsi`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword +type: long -- -*`rsa.identity.user_dept`*:: +*`netflow.procera_incoming_octets`*:: + -- -User's Department Names only - -type: keyword +type: long -- -*`rsa.identity.user_sid_src`*:: +*`netflow.procera_incoming_packets`*:: + -- -This key captures Source User Session ID - -type: keyword +type: long -- -*`rsa.identity.federated_sp`*:: +*`netflow.procera_incoming_shaping_drops`*:: + -- -This key is the Federated Service Provider. This is the application requesting authentication. - -type: keyword +type: long -- -*`rsa.identity.federated_idp`*:: +*`netflow.procera_incoming_shaping_latency`*:: + -- -This key is the federated Identity Provider. This is the server providing the authentication. - -type: keyword +type: integer -- -*`rsa.identity.logon_type_desc`*:: +*`netflow.procera_internal_rtt`*:: + -- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. - -type: keyword +type: integer -- -*`rsa.identity.middlename`*:: +*`netflow.procera_local_ipv4_host`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword +type: ip -- -*`rsa.identity.password`*:: +*`netflow.procera_local_ipv6_host`*:: + -- -This key is for Passwords seen in any session, plain text or encrypted - -type: keyword +type: ip -- -*`rsa.identity.host_role`*:: +*`netflow.procera_msisdn`*:: + -- -This key should only be used to capture the role of a Host Machine - -type: keyword +type: long -- -*`rsa.identity.ldap`*:: +*`netflow.procera_outgoing_octets`*:: + -- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context - -type: keyword +type: long -- -*`rsa.identity.ldap_query`*:: +*`netflow.procera_outgoing_packets`*:: + -- -This key is the Search criteria from an LDAP search - -type: keyword +type: long -- -*`rsa.identity.ldap_response`*:: +*`netflow.procera_outgoing_shaping_drops`*:: + -- -This key is to capture Results from an LDAP search - -type: keyword +type: long -- -*`rsa.identity.owner`*:: +*`netflow.procera_outgoing_shaping_latency`*:: + -- -This is used to capture username the process or service is running as, the author of the task - -type: keyword +type: integer -- -*`rsa.identity.service_account`*:: +*`netflow.procera_property`*:: + -- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage - type: keyword -- - -*`rsa.email.email_dst`*:: +*`netflow.procera_qoe_incoming_external`*:: + -- -This key is used to capture the Destination email address only, when the destination context is not clear use email - -type: keyword +type: float -- -*`rsa.email.email_src`*:: +*`netflow.procera_qoe_incoming_internal`*:: + -- -This key is used to capture the source email address only, when the source context is not clear use email - -type: keyword +type: float -- -*`rsa.email.subject`*:: +*`netflow.procera_qoe_outgoing_external`*:: + -- -This key is used to capture the subject string from an Email only. - -type: keyword +type: float -- -*`rsa.email.email`*:: +*`netflow.procera_qoe_outgoing_internal`*:: + -- -This key is used to capture a generic email address where the source or destination context is not clear - -type: keyword +type: float -- -*`rsa.email.trans_from`*:: +*`netflow.procera_rat`*:: + -- -Deprecated key defined only in table map. - type: keyword -- -*`rsa.email.trans_to`*:: +*`netflow.procera_remote_ipv4_host`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: ip -- - -*`rsa.file.privilege`*:: +*`netflow.procera_remote_ipv6_host`*:: + -- -Deprecated, use permissions - -type: keyword +type: ip -- -*`rsa.file.attachment`*:: +*`netflow.procera_rnc`*:: + -- -This key captures the attachment file name - -type: keyword +type: integer -- -*`rsa.file.filesystem`*:: +*`netflow.procera_server_hostname`*:: + -- type: keyword -- -*`rsa.file.binary`*:: +*`netflow.procera_service`*:: + -- -Deprecated key defined only in table map. - type: keyword -- -*`rsa.file.filename_dst`*:: +*`netflow.procera_sgsn`*:: + -- -This is used to capture name of the file targeted by the action - type: keyword -- -*`rsa.file.filename_src`*:: +*`netflow.procera_subscriber_identifier`*:: + -- -This is used to capture name of the parent filename, the file which performed the action - type: keyword -- -*`rsa.file.filename_tmp`*:: +*`netflow.procera_template_name`*:: + -- type: keyword -- -*`rsa.file.directory_dst`*:: +*`netflow.procera_user_location_information`*:: + -- -This key is used to capture the directory of the target process or file - type: keyword -- -*`rsa.file.directory_src`*:: +*`netflow.protocol_identifier`*:: + -- -This key is used to capture the directory of the source process or file - -type: keyword +type: short -- -*`rsa.file.file_entropy`*:: +*`netflow.pseudo_wire_control_word`*:: + -- -This is used to capture entropy vale of a file - -type: double +type: long -- -*`rsa.file.file_vendor`*:: +*`netflow.pseudo_wire_destination_ipv4_address`*:: + -- -This is used to capture Company name of file located in version_info - -type: keyword +type: ip -- -*`rsa.file.task_name`*:: +*`netflow.pseudo_wire_id`*:: + -- -This is used to capture name of the task - -type: keyword +type: long -- - -*`rsa.web.fqdn`*:: +*`netflow.pseudo_wire_type`*:: + -- -Fully Qualified Domain Names - -type: keyword +type: integer -- -*`rsa.web.web_cookie`*:: +*`netflow.reason`*:: + -- -This key is used to capture the Web cookies specifically. - -type: keyword +type: long -- -*`rsa.web.alias_host`*:: +*`netflow.reason_text`*:: + -- type: keyword -- -*`rsa.web.reputation_num`*:: +*`netflow.relative_error`*:: + -- -Reputation Number of an entity. Typically used for Web Domains - type: double -- -*`rsa.web.web_ref_domain`*:: +*`netflow.responder_octets`*:: + -- -Web referer's domain - -type: keyword +type: long -- -*`rsa.web.web_ref_query`*:: +*`netflow.responder_packets`*:: + -- -This key captures Web referer's query portion of the URL - -type: keyword +type: long -- -*`rsa.web.remote_domain`*:: +*`netflow.reverse_absolute_error`*:: + -- -type: keyword +type: double -- -*`rsa.web.web_ref_page`*:: +*`netflow.reverse_anonymization_flags`*:: + -- -This key captures Web referer's page information - -type: keyword +type: integer -- -*`rsa.web.web_ref_root`*:: +*`netflow.reverse_anonymization_technique`*:: + -- -Web referer's root URL path - -type: keyword +type: integer -- -*`rsa.web.cn_asn_dst`*:: +*`netflow.reverse_application_category_name`*:: + -- type: keyword -- -*`rsa.web.cn_rpackets`*:: +*`netflow.reverse_application_description`*:: + -- type: keyword -- -*`rsa.web.urlpage`*:: +*`netflow.reverse_application_group_name`*:: + -- type: keyword -- -*`rsa.web.urlroot`*:: +*`netflow.reverse_application_id`*:: + -- type: keyword -- -*`rsa.web.p_url`*:: +*`netflow.reverse_application_name`*:: + -- type: keyword -- -*`rsa.web.p_user_agent`*:: +*`netflow.reverse_application_sub_category_name`*:: + -- type: keyword -- -*`rsa.web.p_web_cookie`*:: +*`netflow.reverse_average_interarrival_time`*:: + -- -type: keyword +type: long -- -*`rsa.web.p_web_method`*:: +*`netflow.reverse_bgp_destination_as_number`*:: + -- -type: keyword +type: long -- -*`rsa.web.p_web_referer`*:: +*`netflow.reverse_bgp_next_adjacent_as_number`*:: + -- -type: keyword +type: long -- -*`rsa.web.web_extension_tmp`*:: +*`netflow.reverse_bgp_next_hop_ipv4_address`*:: + -- -type: keyword +type: ip -- -*`rsa.web.web_page`*:: +*`netflow.reverse_bgp_next_hop_ipv6_address`*:: + -- -type: keyword +type: ip -- - -*`rsa.threat.threat_category`*:: +*`netflow.reverse_bgp_prev_adjacent_as_number`*:: + -- -This key captures Threat Name/Threat Category/Categorization of alert - -type: keyword +type: long -- -*`rsa.threat.threat_desc`*:: +*`netflow.reverse_bgp_source_as_number`*:: + -- -This key is used to capture the threat description from the session directly or inferred - -type: keyword +type: long -- -*`rsa.threat.alert`*:: +*`netflow.reverse_bgp_validity_state`*:: + -- -This key is used to capture name of the alert - -type: keyword +type: short -- -*`rsa.threat.threat_source`*:: +*`netflow.reverse_class_id`*:: + -- -This key is used to capture source of the threat - -type: keyword +type: short -- - -*`rsa.crypto.crypto`*:: +*`netflow.reverse_class_name`*:: + -- -This key is used to capture the Encryption Type or Encryption Key only - type: keyword -- -*`rsa.crypto.cipher_src`*:: +*`netflow.reverse_classification_engine_id`*:: + -- -This key is for Source (Client) Cipher - -type: keyword +type: short -- -*`rsa.crypto.cert_subject`*:: +*`netflow.reverse_collection_time_milliseconds`*:: + -- -This key is used to capture the Certificate organization only - -type: keyword +type: long -- -*`rsa.crypto.peer`*:: +*`netflow.reverse_collector_certificate`*:: + -- -This key is for Encryption peer's IP Address - type: keyword -- -*`rsa.crypto.cipher_size_src`*:: +*`netflow.reverse_confidence_level`*:: + -- -This key captures Source (Client) Cipher Size - -type: long +type: double -- -*`rsa.crypto.ike`*:: +*`netflow.reverse_connection_sum_duration_seconds`*:: + -- -IKE negotiation phase. - -type: keyword +type: long -- -*`rsa.crypto.scheme`*:: +*`netflow.reverse_connection_transaction_id`*:: + -- -This key captures the Encryption scheme used - -type: keyword +type: long -- -*`rsa.crypto.peer_id`*:: +*`netflow.reverse_data_byte_count`*:: + -- -This key is for Encryption peer’s identity - -type: keyword +type: long -- -*`rsa.crypto.sig_type`*:: +*`netflow.reverse_data_link_frame_section`*:: + -- -This key captures the Signature Type - type: keyword -- -*`rsa.crypto.cert_issuer`*:: +*`netflow.reverse_data_link_frame_size`*:: + -- -type: keyword +type: integer -- -*`rsa.crypto.cert_host_name`*:: +*`netflow.reverse_data_link_frame_type`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: integer -- -*`rsa.crypto.cert_error`*:: +*`netflow.reverse_data_records_reliability`*:: + -- -This key captures the Certificate Error String - -type: keyword +type: short -- -*`rsa.crypto.cipher_dst`*:: +*`netflow.reverse_delta_flow_count`*:: + -- -This key is for Destination (Server) Cipher - -type: keyword +type: long -- -*`rsa.crypto.cipher_size_dst`*:: +*`netflow.reverse_destination_ipv4_address`*:: + -- -This key captures Destination (Server) Cipher Size - -type: long +type: ip -- -*`rsa.crypto.ssl_ver_src`*:: +*`netflow.reverse_destination_ipv4_prefix`*:: + -- -Deprecated, use version - -type: keyword +type: ip -- -*`rsa.crypto.d_certauth`*:: +*`netflow.reverse_destination_ipv4_prefix_length`*:: + -- -type: keyword +type: short -- -*`rsa.crypto.s_certauth`*:: +*`netflow.reverse_destination_ipv6_address`*:: + -- -type: keyword +type: ip -- -*`rsa.crypto.ike_cookie1`*:: +*`netflow.reverse_destination_ipv6_prefix`*:: + -- -ID of the negotiation — sent for ISAKMP Phase One - -type: keyword +type: ip -- -*`rsa.crypto.ike_cookie2`*:: +*`netflow.reverse_destination_ipv6_prefix_length`*:: + -- -ID of the negotiation — sent for ISAKMP Phase Two - -type: keyword +type: short -- -*`rsa.crypto.cert_checksum`*:: +*`netflow.reverse_destination_mac_address`*:: + -- type: keyword -- -*`rsa.crypto.cert_host_cat`*:: +*`netflow.reverse_destination_transport_port`*:: + -- -This key is used for the hostname category value of a certificate - -type: keyword +type: integer -- -*`rsa.crypto.cert_serial`*:: +*`netflow.reverse_digest_hash_value`*:: + -- -This key is used to capture the Certificate serial number only - -type: keyword +type: long -- -*`rsa.crypto.cert_status`*:: +*`netflow.reverse_distinct_count_of_destination_ip_address`*:: + -- -This key captures Certificate validation status - -type: keyword +type: long -- -*`rsa.crypto.ssl_ver_dst`*:: +*`netflow.reverse_distinct_count_of_destination_ipv4_address`*:: + -- -Deprecated, use version - -type: keyword +type: long -- -*`rsa.crypto.cert_keysize`*:: +*`netflow.reverse_distinct_count_of_destination_ipv6_address`*:: + -- -type: keyword +type: long -- -*`rsa.crypto.cert_username`*:: +*`netflow.reverse_distinct_count_of_source_ip_address`*:: + -- -type: keyword +type: long -- -*`rsa.crypto.https_insact`*:: +*`netflow.reverse_distinct_count_of_source_ipv4_address`*:: + -- -type: keyword +type: long -- -*`rsa.crypto.https_valid`*:: +*`netflow.reverse_distinct_count_of_source_ipv6_address`*:: + -- -type: keyword +type: long -- -*`rsa.crypto.cert_ca`*:: +*`netflow.reverse_dot1q_customer_dei`*:: + -- -This key is used to capture the Certificate signing authority only - -type: keyword +type: short -- -*`rsa.crypto.cert_common`*:: +*`netflow.reverse_dot1q_customer_destination_mac_address`*:: + -- -This key is used to capture the Certificate common name only - type: keyword -- - -*`rsa.wireless.wlan_ssid`*:: +*`netflow.reverse_dot1q_customer_priority`*:: + -- -This key is used to capture the ssid of a Wireless Session - -type: keyword +type: short -- -*`rsa.wireless.access_point`*:: +*`netflow.reverse_dot1q_customer_source_mac_address`*:: + -- -This key is used to capture the access point name. - type: keyword -- -*`rsa.wireless.wlan_channel`*:: +*`netflow.reverse_dot1q_customer_vlan_id`*:: + -- -This is used to capture the channel names - -type: long +type: integer -- -*`rsa.wireless.wlan_name`*:: +*`netflow.reverse_dot1q_dei`*:: + -- -This key captures either WLAN number/name - -type: keyword +type: short -- - -*`rsa.storage.disk_volume`*:: +*`netflow.reverse_dot1q_priority`*:: + -- -A unique name assigned to logical units (volumes) within a physical disk - -type: keyword +type: short -- -*`rsa.storage.lun`*:: +*`netflow.reverse_dot1q_service_instance_id`*:: + -- -Logical Unit Number.This key is a very useful concept in Storage. - -type: keyword +type: long -- -*`rsa.storage.pwwn`*:: +*`netflow.reverse_dot1q_service_instance_priority`*:: + -- -This uniquely identifies a port on a HBA. - -type: keyword +type: short -- - -*`rsa.physical.org_dst`*:: +*`netflow.reverse_dot1q_service_instance_tag`*:: + -- -This is used to capture the destination organization based on the GEOPIP Maxmind database. - type: keyword -- -*`rsa.physical.org_src`*:: +*`netflow.reverse_dot1q_vlan_id`*:: + -- -This is used to capture the source organization based on the GEOPIP Maxmind database. - -type: keyword +type: integer -- - -*`rsa.healthcare.patient_fname`*:: +*`netflow.reverse_dropped_layer2_octet_delta_count`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword +type: long -- -*`rsa.healthcare.patient_id`*:: +*`netflow.reverse_dropped_layer2_octet_total_count`*:: + -- -This key captures the unique ID for a patient - -type: keyword +type: long -- -*`rsa.healthcare.patient_lname`*:: +*`netflow.reverse_dropped_octet_delta_count`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword +type: long -- -*`rsa.healthcare.patient_mname`*:: +*`netflow.reverse_dropped_octet_total_count`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information - -type: keyword +type: long -- - -*`rsa.endpoint.host_state`*:: +*`netflow.reverse_dropped_packet_delta_count`*:: + -- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on - -type: keyword +type: long -- -*`rsa.endpoint.registry_key`*:: +*`netflow.reverse_dropped_packet_total_count`*:: + -- -This key captures the path to the registry key - -type: keyword +type: long -- -*`rsa.endpoint.registry_value`*:: +*`netflow.reverse_dst_traffic_index`*:: + -- -This key captures values or decorators used within a registry entry - -type: keyword +type: long -- -[[exported-fields-suricata]] -== Suricata fields - -Module for handling the EVE JSON logs produced by Suricata. - - - -[float] -=== suricata - -Fields from the Suricata EVE log file. - - - -[float] -=== eve - -Fields exported by the EVE JSON logs - +*`netflow.reverse_egress_broadcast_packet_total_count`*:: ++ +-- +type: long +-- -*`suricata.eve.event_type`*:: +*`netflow.reverse_egress_interface`*:: + -- -type: keyword +type: long -- -*`suricata.eve.app_proto_orig`*:: +*`netflow.reverse_egress_interface_type`*:: + -- -type: keyword +type: long -- - -*`suricata.eve.tcp.tcp_flags`*:: +*`netflow.reverse_egress_physical_interface`*:: + -- -type: keyword +type: long -- -*`suricata.eve.tcp.psh`*:: +*`netflow.reverse_egress_unicast_packet_total_count`*:: + -- -type: boolean +type: long -- -*`suricata.eve.tcp.tcp_flags_tc`*:: +*`netflow.reverse_egress_vrfid`*:: + -- -type: keyword +type: long -- -*`suricata.eve.tcp.ack`*:: +*`netflow.reverse_encrypted_technology`*:: + -- -type: boolean +type: keyword -- -*`suricata.eve.tcp.syn`*:: +*`netflow.reverse_engine_id`*:: + -- -type: boolean +type: short -- -*`suricata.eve.tcp.state`*:: +*`netflow.reverse_engine_type`*:: + -- -type: keyword +type: short -- -*`suricata.eve.tcp.tcp_flags_ts`*:: +*`netflow.reverse_ethernet_header_length`*:: + -- -type: keyword +type: short -- -*`suricata.eve.tcp.rst`*:: +*`netflow.reverse_ethernet_payload_length`*:: + -- -type: boolean +type: integer -- -*`suricata.eve.tcp.fin`*:: +*`netflow.reverse_ethernet_total_length`*:: + -- -type: boolean +type: integer -- - -*`suricata.eve.fileinfo.sha1`*:: +*`netflow.reverse_ethernet_type`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.fileinfo.tx_id`*:: +*`netflow.reverse_export_sctp_stream_id`*:: + -- -type: long +type: integer -- -*`suricata.eve.fileinfo.state`*:: +*`netflow.reverse_exporter_certificate`*:: + -- type: keyword -- -*`suricata.eve.fileinfo.stored`*:: +*`netflow.reverse_exporting_process_id`*:: + -- -type: boolean +type: long -- -*`suricata.eve.fileinfo.gaps`*:: +*`netflow.reverse_firewall_event`*:: + -- -type: boolean +type: short -- -*`suricata.eve.fileinfo.sha256`*:: +*`netflow.reverse_first_non_empty_packet_size`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.fileinfo.md5`*:: +*`netflow.reverse_first_packet_banner`*:: + -- type: keyword -- -*`suricata.eve.icmp_type`*:: +*`netflow.reverse_flags_and_sampler_id`*:: + -- type: long -- -*`suricata.eve.pcap_cnt`*:: +*`netflow.reverse_flow_active_timeout`*:: + -- -type: long +type: integer -- - -*`suricata.eve.dns.type`*:: +*`netflow.reverse_flow_attributes`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.dns.rrtype`*:: +*`netflow.reverse_flow_delta_milliseconds`*:: + -- -type: keyword +type: long -- -*`suricata.eve.dns.rrname`*:: +*`netflow.reverse_flow_direction`*:: + -- -type: keyword +type: short -- -*`suricata.eve.dns.rdata`*:: +*`netflow.reverse_flow_duration_microseconds`*:: + -- -type: keyword +type: long -- -*`suricata.eve.dns.tx_id`*:: +*`netflow.reverse_flow_duration_milliseconds`*:: + -- type: long -- -*`suricata.eve.dns.ttl`*:: +*`netflow.reverse_flow_end_delta_microseconds`*:: + -- type: long -- -*`suricata.eve.dns.rcode`*:: +*`netflow.reverse_flow_end_microseconds`*:: + -- -type: keyword +type: long -- -*`suricata.eve.dns.id`*:: +*`netflow.reverse_flow_end_milliseconds`*:: + -- type: long -- -*`suricata.eve.flow_id`*:: +*`netflow.reverse_flow_end_nanoseconds`*:: + -- -type: keyword +type: long -- - -*`suricata.eve.email.status`*:: +*`netflow.reverse_flow_end_reason`*:: + -- -type: keyword +type: short -- -*`suricata.eve.icmp_code`*:: +*`netflow.reverse_flow_end_seconds`*:: + -- type: long -- - -*`suricata.eve.http.redirect`*:: +*`netflow.reverse_flow_end_sys_up_time`*:: + -- -type: keyword +type: long -- -*`suricata.eve.http.protocol`*:: +*`netflow.reverse_flow_idle_timeout`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.http.http_content_type`*:: +*`netflow.reverse_flow_label_ipv6`*:: + -- -type: keyword +type: long -- -*`suricata.eve.in_iface`*:: +*`netflow.reverse_flow_sampling_time_interval`*:: + -- -type: keyword +type: long -- - -*`suricata.eve.alert.metadata`*:: +*`netflow.reverse_flow_sampling_time_spacing`*:: + -- -Metadata about the alert. - -type: flattened +type: long -- -*`suricata.eve.alert.category`*:: +*`netflow.reverse_flow_selected_flow_delta_count`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.rev`*:: +*`netflow.reverse_flow_selected_octet_delta_count`*:: + -- type: long -- -*`suricata.eve.alert.gid`*:: +*`netflow.reverse_flow_selected_packet_delta_count`*:: + -- type: long -- -*`suricata.eve.alert.signature`*:: +*`netflow.reverse_flow_selector_algorithm`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.alert.signature_id`*:: +*`netflow.reverse_flow_start_delta_microseconds`*:: + -- type: long -- -*`suricata.eve.alert.protocols`*:: +*`netflow.reverse_flow_start_microseconds`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.attack_target`*:: +*`netflow.reverse_flow_start_milliseconds`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.capec_id`*:: +*`netflow.reverse_flow_start_nanoseconds`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.cwe_id`*:: +*`netflow.reverse_flow_start_seconds`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.malware`*:: +*`netflow.reverse_flow_start_sys_up_time`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.cve`*:: +*`netflow.reverse_forwarding_status`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.cvss_v2_base`*:: +*`netflow.reverse_fragment_flags`*:: + -- -type: keyword +type: short -- -*`suricata.eve.alert.cvss_v2_temporal`*:: +*`netflow.reverse_fragment_identification`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.cvss_v3_base`*:: +*`netflow.reverse_fragment_offset`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.alert.cvss_v3_temporal`*:: +*`netflow.reverse_gre_key`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.priority`*:: +*`netflow.reverse_hash_digest_output`*:: + -- -type: keyword +type: short -- -*`suricata.eve.alert.hostile`*:: +*`netflow.reverse_hash_flow_domain`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.alert.infected`*:: +*`netflow.reverse_hash_initialiser_value`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.created_at`*:: +*`netflow.reverse_hash_ip_payload_offset`*:: + -- -type: date +type: long -- -*`suricata.eve.alert.updated_at`*:: +*`netflow.reverse_hash_ip_payload_size`*:: + -- -type: date +type: long -- -*`suricata.eve.alert.classtype`*:: +*`netflow.reverse_hash_output_range_max`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.rule_source`*:: +*`netflow.reverse_hash_output_range_min`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.sid`*:: +*`netflow.reverse_hash_selected_range_max`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.affected_product`*:: +*`netflow.reverse_hash_selected_range_min`*:: + -- -type: keyword +type: long -- -*`suricata.eve.alert.deployment`*:: +*`netflow.reverse_icmp_code_ipv4`*:: + -- -type: keyword +type: short -- -*`suricata.eve.alert.former_category`*:: +*`netflow.reverse_icmp_code_ipv6`*:: + -- -type: keyword +type: short -- -*`suricata.eve.alert.mitre_tool_id`*:: +*`netflow.reverse_icmp_type_code_ipv4`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.alert.performance_impact`*:: +*`netflow.reverse_icmp_type_code_ipv6`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.alert.signature_severity`*:: +*`netflow.reverse_icmp_type_ipv4`*:: + -- -type: keyword +type: short -- -*`suricata.eve.alert.tag`*:: +*`netflow.reverse_icmp_type_ipv6`*:: + -- -type: keyword +type: short -- - - -*`suricata.eve.ssh.client.proto_version`*:: +*`netflow.reverse_igmp_type`*:: + -- -type: keyword +type: short -- -*`suricata.eve.ssh.client.software_version`*:: +*`netflow.reverse_ignored_data_record_total_count`*:: + -- -type: keyword +type: long -- - -*`suricata.eve.ssh.server.proto_version`*:: +*`netflow.reverse_ignored_layer2_frame_total_count`*:: + -- -type: keyword +type: long -- -*`suricata.eve.ssh.server.software_version`*:: +*`netflow.reverse_ignored_layer2_octet_total_count`*:: + -- -type: keyword +type: long -- +*`netflow.reverse_information_element_data_type`*:: ++ +-- +type: short +-- -*`suricata.eve.stats.capture.kernel_packets`*:: +*`netflow.reverse_information_element_description`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.capture.kernel_drops`*:: +*`netflow.reverse_information_element_id`*:: + -- -type: long +type: integer -- -*`suricata.eve.stats.capture.kernel_ifdrops`*:: +*`netflow.reverse_information_element_index`*:: + -- -type: long +type: integer -- -*`suricata.eve.stats.uptime`*:: +*`netflow.reverse_information_element_name`*:: + -- -type: long +type: keyword -- - -*`suricata.eve.stats.detect.alert`*:: +*`netflow.reverse_information_element_range_begin`*:: + -- type: long -- - -*`suricata.eve.stats.http.memcap`*:: +*`netflow.reverse_information_element_range_end`*:: + -- type: long -- -*`suricata.eve.stats.http.memuse`*:: +*`netflow.reverse_information_element_semantics`*:: + -- -type: long +type: short -- - -*`suricata.eve.stats.file_store.open_files`*:: +*`netflow.reverse_information_element_units`*:: + -- -type: long +type: integer -- - -*`suricata.eve.stats.defrag.max_frag_hits`*:: +*`netflow.reverse_ingress_broadcast_packet_total_count`*:: + -- type: long -- - -*`suricata.eve.stats.defrag.ipv4.timeouts`*:: +*`netflow.reverse_ingress_interface`*:: + -- type: long -- -*`suricata.eve.stats.defrag.ipv4.fragments`*:: +*`netflow.reverse_ingress_interface_type`*:: + -- type: long -- -*`suricata.eve.stats.defrag.ipv4.reassembled`*:: +*`netflow.reverse_ingress_multicast_packet_total_count`*:: + -- type: long -- - -*`suricata.eve.stats.defrag.ipv6.timeouts`*:: +*`netflow.reverse_ingress_physical_interface`*:: + -- type: long -- -*`suricata.eve.stats.defrag.ipv6.fragments`*:: +*`netflow.reverse_ingress_unicast_packet_total_count`*:: + -- type: long -- -*`suricata.eve.stats.defrag.ipv6.reassembled`*:: +*`netflow.reverse_ingress_vrfid`*:: + -- type: long -- - -*`suricata.eve.stats.flow.tcp_reuse`*:: +*`netflow.reverse_initial_tcp_flags`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.flow.udp`*:: +*`netflow.reverse_initiator_octets`*:: + -- type: long -- -*`suricata.eve.stats.flow.memcap`*:: +*`netflow.reverse_initiator_packets`*:: + -- type: long -- -*`suricata.eve.stats.flow.emerg_mode_entered`*:: +*`netflow.reverse_interface_description`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow.emerg_mode_over`*:: +*`netflow.reverse_interface_name`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow.tcp`*:: +*`netflow.reverse_intermediate_process_id`*:: + -- type: long -- -*`suricata.eve.stats.flow.icmpv6`*:: +*`netflow.reverse_ip_class_of_service`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.flow.icmpv4`*:: +*`netflow.reverse_ip_diff_serv_code_point`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.flow.spare`*:: +*`netflow.reverse_ip_header_length`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.flow.memuse`*:: +*`netflow.reverse_ip_header_packet_section`*:: + -- -type: long +type: keyword -- - -*`suricata.eve.stats.tcp.pseudo_failed`*:: +*`netflow.reverse_ip_next_hop_ipv4_address`*:: + -- -type: long +type: ip -- -*`suricata.eve.stats.tcp.ssn_memcap_drop`*:: +*`netflow.reverse_ip_next_hop_ipv6_address`*:: + -- -type: long +type: ip -- -*`suricata.eve.stats.tcp.insert_data_overlap_fail`*:: +*`netflow.reverse_ip_payload_length`*:: + -- type: long -- -*`suricata.eve.stats.tcp.sessions`*:: +*`netflow.reverse_ip_payload_packet_section`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.tcp.pseudo`*:: +*`netflow.reverse_ip_precedence`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.tcp.synack`*:: +*`netflow.reverse_ip_sec_spi`*:: + -- type: long -- -*`suricata.eve.stats.tcp.insert_data_normal_fail`*:: +*`netflow.reverse_ip_total_length`*:: + -- type: long -- -*`suricata.eve.stats.tcp.syn`*:: +*`netflow.reverse_ip_ttl`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.tcp.memuse`*:: +*`netflow.reverse_ip_version`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.tcp.invalid_checksum`*:: +*`netflow.reverse_ipv4_ihl`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.tcp.segment_memcap_drop`*:: +*`netflow.reverse_ipv4_options`*:: + -- type: long -- -*`suricata.eve.stats.tcp.overlap`*:: +*`netflow.reverse_ipv4_router_sc`*:: + -- -type: long +type: ip -- -*`suricata.eve.stats.tcp.insert_list_fail`*:: +*`netflow.reverse_ipv6_extension_headers`*:: + -- type: long -- -*`suricata.eve.stats.tcp.rst`*:: +*`netflow.reverse_is_multicast`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.tcp.stream_depth_reached`*:: +*`netflow.reverse_large_packet_count`*:: + -- type: long -- -*`suricata.eve.stats.tcp.reassembly_memuse`*:: +*`netflow.reverse_layer2_frame_delta_count`*:: + -- type: long -- -*`suricata.eve.stats.tcp.reassembly_gap`*:: +*`netflow.reverse_layer2_frame_total_count`*:: + -- type: long -- -*`suricata.eve.stats.tcp.overlap_diff_data`*:: +*`netflow.reverse_layer2_octet_delta_count`*:: + -- type: long -- -*`suricata.eve.stats.tcp.no_flow`*:: +*`netflow.reverse_layer2_octet_delta_sum_of_squares`*:: + -- type: long -- - -*`suricata.eve.stats.decoder.avg_pkt_size`*:: +*`netflow.reverse_layer2_octet_total_count`*:: + -- type: long -- -*`suricata.eve.stats.decoder.bytes`*:: +*`netflow.reverse_layer2_octet_total_sum_of_squares`*:: + -- type: long -- -*`suricata.eve.stats.decoder.tcp`*:: +*`netflow.reverse_layer2_segment_id`*:: + -- type: long -- -*`suricata.eve.stats.decoder.raw`*:: +*`netflow.reverse_layer2packet_section_data`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.decoder.ppp`*:: +*`netflow.reverse_layer2packet_section_offset`*:: + -- -type: long +type: integer -- -*`suricata.eve.stats.decoder.vlan_qinq`*:: +*`netflow.reverse_layer2packet_section_size`*:: + -- -type: long +type: integer -- -*`suricata.eve.stats.decoder.null`*:: +*`netflow.reverse_line_card_id`*:: + -- type: long -- - -*`suricata.eve.stats.decoder.ltnull.unsupported_type`*:: +*`netflow.reverse_lower_ci_limit`*:: + -- -type: long +type: double -- -*`suricata.eve.stats.decoder.ltnull.pkt_too_small`*:: +*`netflow.reverse_max_export_seconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.invalid`*:: +*`netflow.reverse_max_flow_end_microseconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.gre`*:: +*`netflow.reverse_max_flow_end_milliseconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.ipv4`*:: +*`netflow.reverse_max_flow_end_nanoseconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.ipv6`*:: +*`netflow.reverse_max_flow_end_seconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.pkts`*:: +*`netflow.reverse_max_packet_size`*:: + -- -type: long +type: integer -- -*`suricata.eve.stats.decoder.ipv6_in_ipv6`*:: +*`netflow.reverse_maximum_ip_total_length`*:: + -- type: long -- - -*`suricata.eve.stats.decoder.ipraw.invalid_ip_version`*:: +*`netflow.reverse_maximum_layer2_total_length`*:: + -- type: long -- -*`suricata.eve.stats.decoder.pppoe`*:: +*`netflow.reverse_maximum_ttl`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.decoder.udp`*:: +*`netflow.reverse_message_md5_checksum`*:: + -- -type: long +type: keyword -- - -*`suricata.eve.stats.decoder.dce.pkt_too_small`*:: +*`netflow.reverse_message_scope`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.decoder.vlan`*:: +*`netflow.reverse_metering_process_id`*:: + -- type: long -- -*`suricata.eve.stats.decoder.sctp`*:: +*`netflow.reverse_metro_evc_id`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.decoder.max_pkt_size`*:: +*`netflow.reverse_metro_evc_type`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.decoder.teredo`*:: +*`netflow.reverse_min_export_seconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.mpls`*:: +*`netflow.reverse_min_flow_start_microseconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.sll`*:: +*`netflow.reverse_min_flow_start_milliseconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.icmpv6`*:: +*`netflow.reverse_min_flow_start_nanoseconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.icmpv4`*:: +*`netflow.reverse_min_flow_start_seconds`*:: + -- type: long -- -*`suricata.eve.stats.decoder.erspan`*:: +*`netflow.reverse_minimum_ip_total_length`*:: + -- type: long -- -*`suricata.eve.stats.decoder.ethernet`*:: +*`netflow.reverse_minimum_layer2_total_length`*:: + -- type: long -- -*`suricata.eve.stats.decoder.ipv4_in_ipv6`*:: +*`netflow.reverse_minimum_ttl`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.decoder.ieee8021ah`*:: +*`netflow.reverse_monitoring_interval_end_milli_seconds`*:: + -- type: long -- - -*`suricata.eve.stats.dns.memcap_global`*:: +*`netflow.reverse_monitoring_interval_start_milli_seconds`*:: + -- type: long -- -*`suricata.eve.stats.dns.memcap_state`*:: +*`netflow.reverse_mpls_label_stack_depth`*:: + -- type: long -- -*`suricata.eve.stats.dns.memuse`*:: +*`netflow.reverse_mpls_label_stack_length`*:: + -- type: long -- - -*`suricata.eve.stats.flow_mgr.rows_busy`*:: +*`netflow.reverse_mpls_label_stack_section`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.flows_timeout`*:: +*`netflow.reverse_mpls_label_stack_section10`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.flows_notimeout`*:: +*`netflow.reverse_mpls_label_stack_section2`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.rows_skipped`*:: +*`netflow.reverse_mpls_label_stack_section3`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.closed_pruned`*:: +*`netflow.reverse_mpls_label_stack_section4`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.new_pruned`*:: +*`netflow.reverse_mpls_label_stack_section5`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.flows_removed`*:: +*`netflow.reverse_mpls_label_stack_section6`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.bypassed_pruned`*:: +*`netflow.reverse_mpls_label_stack_section7`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.est_pruned`*:: +*`netflow.reverse_mpls_label_stack_section8`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.flows_timeout_inuse`*:: +*`netflow.reverse_mpls_label_stack_section9`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.flows_checked`*:: +*`netflow.reverse_mpls_payload_length`*:: + -- type: long -- -*`suricata.eve.stats.flow_mgr.rows_maxlen`*:: +*`netflow.reverse_mpls_payload_packet_section`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.flow_mgr.rows_checked`*:: +*`netflow.reverse_mpls_top_label_exp`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.flow_mgr.rows_empty`*:: +*`netflow.reverse_mpls_top_label_ipv4_address`*:: + -- -type: long +type: ip -- +*`netflow.reverse_mpls_top_label_ipv6_address`*:: ++ +-- +type: ip +-- -*`suricata.eve.stats.app_layer.flow.tls`*:: +*`netflow.reverse_mpls_top_label_prefix_length`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.flow.ftp`*:: +*`netflow.reverse_mpls_top_label_stack_section`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.app_layer.flow.http`*:: +*`netflow.reverse_mpls_top_label_ttl`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.flow.failed_udp`*:: +*`netflow.reverse_mpls_top_label_type`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.flow.dns_udp`*:: +*`netflow.reverse_mpls_vpn_route_distinguisher`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.app_layer.flow.dns_tcp`*:: +*`netflow.reverse_multicast_replication_factor`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.flow.smtp`*:: +*`netflow.reverse_nat_event`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.flow.failed_tcp`*:: +*`netflow.reverse_nat_originating_address_realm`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.flow.msn`*:: +*`netflow.reverse_nat_pool_id`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.flow.ssh`*:: +*`netflow.reverse_nat_pool_name`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.app_layer.flow.imap`*:: +*`netflow.reverse_nat_type`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.flow.dcerpc_udp`*:: +*`netflow.reverse_new_connection_delta_count`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.flow.dcerpc_tcp`*:: +*`netflow.reverse_next_header_ipv6`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.flow.smb`*:: +*`netflow.reverse_non_empty_packet_count`*:: + -- type: long -- - -*`suricata.eve.stats.app_layer.tx.tls`*:: +*`netflow.reverse_not_sent_layer2_octet_total_count`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.tx.ftp`*:: +*`netflow.reverse_observation_domain_name`*:: + -- -type: long +type: keyword -- -*`suricata.eve.stats.app_layer.tx.http`*:: +*`netflow.reverse_observation_point_id`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.tx.dns_udp`*:: +*`netflow.reverse_observation_point_type`*:: + -- -type: long +type: short -- -*`suricata.eve.stats.app_layer.tx.dns_tcp`*:: +*`netflow.reverse_observation_time_microseconds`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.tx.smtp`*:: +*`netflow.reverse_observation_time_milliseconds`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.tx.ssh`*:: +*`netflow.reverse_observation_time_nanoseconds`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.tx.dcerpc_udp`*:: +*`netflow.reverse_observation_time_seconds`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.tx.dcerpc_tcp`*:: +*`netflow.reverse_octet_delta_count`*:: + -- type: long -- -*`suricata.eve.stats.app_layer.tx.smb`*:: +*`netflow.reverse_octet_delta_sum_of_squares`*:: + -- type: long -- - -*`suricata.eve.tls.notbefore`*:: +*`netflow.reverse_octet_total_count`*:: + -- -type: date +type: long -- -*`suricata.eve.tls.issuerdn`*:: +*`netflow.reverse_octet_total_sum_of_squares`*:: + -- -type: keyword +type: long -- -*`suricata.eve.tls.sni`*:: +*`netflow.reverse_opaque_octets`*:: + -- type: keyword -- -*`suricata.eve.tls.version`*:: +*`netflow.reverse_original_exporter_ipv4_address`*:: + -- -type: keyword +type: ip -- -*`suricata.eve.tls.session_resumed`*:: +*`netflow.reverse_original_exporter_ipv6_address`*:: + -- -type: boolean +type: ip -- -*`suricata.eve.tls.fingerprint`*:: +*`netflow.reverse_original_flows_completed`*:: + -- -type: keyword +type: long -- -*`suricata.eve.tls.serial`*:: +*`netflow.reverse_original_flows_initiated`*:: + -- -type: keyword +type: long -- -*`suricata.eve.tls.notafter`*:: +*`netflow.reverse_original_flows_present`*:: + -- -type: date +type: long -- -*`suricata.eve.tls.subject`*:: +*`netflow.reverse_original_observation_domain_id`*:: + -- -type: keyword +type: long -- - -*`suricata.eve.tls.ja3s.string`*:: +*`netflow.reverse_os_finger_print`*:: + -- type: keyword -- -*`suricata.eve.tls.ja3s.hash`*:: +*`netflow.reverse_os_name`*:: + -- type: keyword -- - -*`suricata.eve.tls.ja3.string`*:: +*`netflow.reverse_os_version`*:: + -- type: keyword -- -*`suricata.eve.tls.ja3.hash`*:: +*`netflow.reverse_p2p_technology`*:: + -- type: keyword -- -*`suricata.eve.app_proto_ts`*:: +*`netflow.reverse_packet_delta_count`*:: + -- -type: keyword +type: long -- - -*`suricata.eve.flow.age`*:: +*`netflow.reverse_packet_total_count`*:: + -- type: long -- -*`suricata.eve.flow.state`*:: +*`netflow.reverse_payload`*:: + -- type: keyword -- -*`suricata.eve.flow.reason`*:: +*`netflow.reverse_payload_entropy`*:: + -- -type: keyword +type: short -- -*`suricata.eve.flow.alerted`*:: +*`netflow.reverse_payload_length_ipv6`*:: + -- -type: boolean +type: integer -- -*`suricata.eve.tx_id`*:: +*`netflow.reverse_port_id`*:: + -- type: long -- -*`suricata.eve.app_proto_tc`*:: +*`netflow.reverse_port_range_end`*:: + -- -type: keyword +type: integer -- - -*`suricata.eve.smtp.rcpt_to`*:: +*`netflow.reverse_port_range_num_ports`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.smtp.mail_from`*:: +*`netflow.reverse_port_range_start`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.smtp.helo`*:: +*`netflow.reverse_port_range_step_size`*:: + -- -type: keyword +type: integer -- -*`suricata.eve.app_proto_expected`*:: +*`netflow.reverse_post_destination_mac_address`*:: + -- type: keyword -- -[[exported-fields-system]] -== System fields - -Module for parsing system log files. - - - -[float] -=== system - -Fields from the system log files. - - - -[float] -=== auth - -Fields from the Linux authorization logs. - - - -*`system.auth.timestamp`*:: +*`netflow.reverse_post_dot1q_customer_vlan_id`*:: + -- -type: alias - -alias to: @timestamp +type: integer -- -*`system.auth.hostname`*:: +*`netflow.reverse_post_dot1q_vlan_id`*:: + -- -type: alias - -alias to: host.hostname +type: integer -- -*`system.auth.program`*:: +*`netflow.reverse_post_ip_class_of_service`*:: + -- -type: alias - -alias to: process.name +type: short -- -*`system.auth.pid`*:: +*`netflow.reverse_post_ip_diff_serv_code_point`*:: + -- -type: alias - -alias to: process.pid +type: short -- -*`system.auth.message`*:: +*`netflow.reverse_post_ip_precedence`*:: + -- -type: alias - -alias to: message +type: short -- -*`system.auth.user`*:: +*`netflow.reverse_post_layer2_octet_delta_count`*:: + -- -type: alias - -alias to: user.name +type: long -- - -*`system.auth.ssh.method`*:: +*`netflow.reverse_post_layer2_octet_total_count`*:: + -- -The SSH authentication method. Can be one of "password" or "publickey". - +type: long -- -*`system.auth.ssh.signature`*:: +*`netflow.reverse_post_mcast_layer2_octet_delta_count`*:: + -- -The signature of the client public key. - +type: long -- -*`system.auth.ssh.dropped_ip`*:: +*`netflow.reverse_post_mcast_layer2_octet_total_count`*:: + -- -The client IP from SSH connections that are open and immediately dropped. - - -type: ip +type: long -- -*`system.auth.ssh.event`*:: +*`netflow.reverse_post_mcast_octet_delta_count`*:: + -- -The SSH event as found in the logs (Accepted, Invalid, Failed, etc.) - - -example: Accepted +type: long -- -*`system.auth.ssh.ip`*:: +*`netflow.reverse_post_mcast_octet_total_count`*:: + -- -type: alias - -alias to: source.ip +type: long -- -*`system.auth.ssh.port`*:: +*`netflow.reverse_post_mcast_packet_delta_count`*:: + -- -type: alias - -alias to: source.port +type: long -- - -*`system.auth.ssh.geoip.continent_name`*:: +*`netflow.reverse_post_mcast_packet_total_count`*:: + -- -type: alias - -alias to: source.geo.continent_name +type: long -- -*`system.auth.ssh.geoip.country_iso_code`*:: +*`netflow.reverse_post_mpls_top_label_exp`*:: + -- -type: alias - -alias to: source.geo.country_iso_code +type: short -- -*`system.auth.ssh.geoip.location`*:: +*`netflow.reverse_post_napt_destination_transport_port`*:: + -- -type: alias - -alias to: source.geo.location +type: integer -- -*`system.auth.ssh.geoip.region_name`*:: +*`netflow.reverse_post_napt_source_transport_port`*:: + -- -type: alias - -alias to: source.geo.region_name +type: integer -- -*`system.auth.ssh.geoip.city_name`*:: +*`netflow.reverse_post_nat_destination_ipv4_address`*:: + -- -type: alias - -alias to: source.geo.city_name +type: ip -- -*`system.auth.ssh.geoip.region_iso_code`*:: +*`netflow.reverse_post_nat_destination_ipv6_address`*:: + -- -type: alias - -alias to: source.geo.region_iso_code +type: ip -- -[float] -=== sudo - -Fields specific to events created by the `sudo` command. - - - -*`system.auth.sudo.error`*:: +*`netflow.reverse_post_nat_source_ipv4_address`*:: + -- -The error message in case the sudo command failed. - - -example: user NOT in sudoers +type: ip -- -*`system.auth.sudo.tty`*:: +*`netflow.reverse_post_nat_source_ipv6_address`*:: + -- -The TTY where the sudo command is executed. - +type: ip -- -*`system.auth.sudo.pwd`*:: +*`netflow.reverse_post_octet_delta_count`*:: + -- -The current directory where the sudo command is executed. - +type: long -- -*`system.auth.sudo.user`*:: +*`netflow.reverse_post_octet_total_count`*:: + -- -The target user to which the sudo command is switching. - - -example: root +type: long -- -*`system.auth.sudo.command`*:: +*`netflow.reverse_post_packet_delta_count`*:: + -- -The command executed via sudo. - +type: long -- -[float] -=== useradd - -Fields specific to events created by the `useradd` command. - - - -*`system.auth.useradd.home`*:: +*`netflow.reverse_post_packet_total_count`*:: + -- -The home folder for the new user. +type: long -- -*`system.auth.useradd.shell`*:: +*`netflow.reverse_post_source_mac_address`*:: + -- -The default shell for the new user. +type: keyword -- -*`system.auth.useradd.name`*:: +*`netflow.reverse_post_vlan_id`*:: + -- -type: alias - -alias to: user.name +type: integer -- -*`system.auth.useradd.uid`*:: +*`netflow.reverse_private_enterprise_number`*:: + -- -type: alias - -alias to: user.id +type: long -- -*`system.auth.useradd.gid`*:: +*`netflow.reverse_protocol_identifier`*:: + -- -type: alias - -alias to: group.id +type: short -- -[float] -=== groupadd - -Fields specific to events created by the `groupadd` command. - - - -*`system.auth.groupadd.name`*:: +*`netflow.reverse_pseudo_wire_control_word`*:: + -- -type: alias - -alias to: group.name +type: long -- -*`system.auth.groupadd.gid`*:: +*`netflow.reverse_pseudo_wire_destination_ipv4_address`*:: + -- -type: alias - -alias to: group.id +type: ip -- -[float] -=== syslog - -Contains fields from the syslog system logs. - - - -*`system.syslog.timestamp`*:: +*`netflow.reverse_pseudo_wire_id`*:: + -- -type: alias - -alias to: @timestamp +type: long -- -*`system.syslog.hostname`*:: +*`netflow.reverse_pseudo_wire_type`*:: + -- -type: alias - -alias to: host.hostname +type: integer -- -*`system.syslog.program`*:: +*`netflow.reverse_relative_error`*:: + -- -type: alias - -alias to: process.name +type: double -- -*`system.syslog.pid`*:: +*`netflow.reverse_responder_octets`*:: + -- -type: alias - -alias to: process.pid +type: long -- -*`system.syslog.message`*:: +*`netflow.reverse_responder_packets`*:: + -- -type: alias - -alias to: message +type: long -- -[[exported-fields-threatintel]] -== threatintel fields - -Threat intelligence Filebeat Module. - - - - -*`threat.indicator.file.hash.tlsh`*:: +*`netflow.reverse_rfc3550_jitter_microseconds`*:: + -- -The file's import tlsh, if available. - - -type: keyword +type: long -- -*`threat.indicator.file.hash.sha384`*:: +*`netflow.reverse_rfc3550_jitter_milliseconds`*:: + -- -The file's sha384 hash, if available. - - -type: keyword +type: long -- -*`threat.feed.name`*:: +*`netflow.reverse_rfc3550_jitter_nanoseconds`*:: + -- -type: keyword +type: long -- -*`threat.feed.dashboard_id`*:: +*`netflow.reverse_rtp_payload_type`*:: + -- -type: keyword +type: short -- -[float] -=== abusech.malware - -Fields for AbuseCH Malware Threat Intel - - - -*`abusech.malware.file_type`*:: +*`netflow.reverse_rtp_sequence_number`*:: + -- -File type guessed by URLhaus. - - -type: keyword +type: integer -- -*`abusech.malware.signature`*:: +*`netflow.reverse_sampler_id`*:: + -- -Malware familiy. - - -type: keyword +type: short -- -*`abusech.malware.urlhaus_download`*:: +*`netflow.reverse_sampler_mode`*:: + -- -Location (URL) where you can download a copy of this file. - - -type: keyword +type: short -- -*`abusech.malware.virustotal.result`*:: +*`netflow.reverse_sampler_name`*:: + -- -AV detection ration. - - type: keyword -- -*`abusech.malware.virustotal.percent`*:: -+ --- -AV detection in percent. - - -type: float - --- - -*`abusech.malware.virustotal.link`*:: +*`netflow.reverse_sampler_random_interval`*:: + -- -Link to the Virustotal report. - - -type: keyword +type: long -- -[float] -=== abusech.url - -Fields for AbuseCH Malware Threat Intel - - - -*`abusech.url.id`*:: +*`netflow.reverse_sampling_algorithm`*:: + -- -The ID of the url. - - -type: keyword +type: short -- -*`abusech.url.urlhaus_reference`*:: +*`netflow.reverse_sampling_flow_interval`*:: + -- -Link to URLhaus entry. - - -type: keyword +type: long -- -*`abusech.url.url_status`*:: +*`netflow.reverse_sampling_flow_spacing`*:: + -- -The current status of the URL. Possible values are: online, offline and unknown. +type: long +-- -type: keyword +*`netflow.reverse_sampling_interval`*:: ++ +-- +type: long -- -*`abusech.url.threat`*:: +*`netflow.reverse_sampling_packet_interval`*:: + -- -The threat corresponding to this malware URL. +type: long +-- -type: keyword +*`netflow.reverse_sampling_packet_space`*:: ++ +-- +type: long -- -*`abusech.url.blacklists.surbl`*:: +*`netflow.reverse_sampling_population`*:: + -- -SURBL blacklist status. Possible values are: listed and not_listed +type: long +-- -type: keyword +*`netflow.reverse_sampling_probability`*:: ++ +-- +type: double -- -*`abusech.url.blacklists.spamhaus_dbl`*:: +*`netflow.reverse_sampling_size`*:: + -- -Spamhaus DBL blacklist status. +type: long +-- -type: keyword +*`netflow.reverse_sampling_time_interval`*:: ++ +-- +type: long -- -*`abusech.url.reporter`*:: +*`netflow.reverse_sampling_time_space`*:: + -- -The Twitter handle of the reporter that has reported this malware URL (or anonymous). +type: long +-- +*`netflow.reverse_second_packet_banner`*:: ++ +-- type: keyword -- -*`abusech.url.larted`*:: +*`netflow.reverse_section_exported_octets`*:: + -- -Indicates whether the malware URL has been reported to the hosting provider (true or false) - - -type: boolean +type: integer -- -*`abusech.url.tags`*:: +*`netflow.reverse_section_offset`*:: + -- -A list of tags associated with the queried malware URL - - -type: keyword +type: integer -- -[float] -=== anomali.limo +*`netflow.reverse_selection_sequence_id`*:: ++ +-- +type: long -Fields for Anomali Threat Intel +-- +*`netflow.reverse_selector_algorithm`*:: ++ +-- +type: integer +-- -*`anomali.limo.id`*:: +*`netflow.reverse_selector_id`*:: + -- -The ID of the indicator. +type: long +-- -type: keyword +*`netflow.reverse_selector_id_total_flows_observed`*:: ++ +-- +type: long -- -*`anomali.limo.name`*:: +*`netflow.reverse_selector_id_total_flows_selected`*:: + -- -The name of the indicator. +type: long +-- -type: keyword +*`netflow.reverse_selector_id_total_pkts_observed`*:: ++ +-- +type: long -- -*`anomali.limo.pattern`*:: +*`netflow.reverse_selector_id_total_pkts_selected`*:: + -- -The pattern ID of the indicator. +type: long +-- +*`netflow.reverse_selector_name`*:: ++ +-- type: keyword -- -*`anomali.limo.valid_from`*:: +*`netflow.reverse_session_scope`*:: + -- -When the indicator was first found or is considered valid. - - -type: date +type: short -- -*`anomali.limo.modified`*:: +*`netflow.reverse_small_packet_count`*:: + -- -When the indicator was last modified +type: long +-- -type: date +*`netflow.reverse_source_ipv4_address`*:: ++ +-- +type: ip -- -*`anomali.limo.labels`*:: +*`netflow.reverse_source_ipv4_prefix`*:: + -- -The labels related to the indicator +type: ip +-- -type: keyword +*`netflow.reverse_source_ipv4_prefix_length`*:: ++ +-- +type: short -- -*`anomali.limo.indicator`*:: +*`netflow.reverse_source_ipv6_address`*:: + -- -The value of the indicator, for example if the type is domain, this would be the value. +type: ip +-- -type: keyword +*`netflow.reverse_source_ipv6_prefix`*:: ++ +-- +type: ip -- -*`anomali.limo.description`*:: +*`netflow.reverse_source_ipv6_prefix_length`*:: + -- -A description of the indicator. +type: short +-- +*`netflow.reverse_source_mac_address`*:: ++ +-- type: keyword -- -*`anomali.limo.title`*:: +*`netflow.reverse_source_transport_port`*:: + -- -Title describing the indicator. +type: integer +-- -type: keyword +*`netflow.reverse_src_traffic_index`*:: ++ +-- +type: long -- -*`anomali.limo.content`*:: +*`netflow.reverse_sta_ipv4_address`*:: + -- -Extra text or descriptive content related to the indicator. +type: ip +-- +*`netflow.reverse_sta_mac_address`*:: ++ +-- type: keyword -- -*`anomali.limo.type`*:: +*`netflow.reverse_standard_deviation_interarrival_time`*:: + -- -The indicator type, can for example be "domain, email, FileHash-SHA256". - - -type: keyword +type: long -- -*`anomali.limo.object_marking_refs`*:: +*`netflow.reverse_standard_deviation_payload_length`*:: + -- -The STIX reference object. +type: integer +-- -type: keyword +*`netflow.reverse_system_init_time_milliseconds`*:: ++ +-- +type: long -- -[float] -=== anomali.threatstream +*`netflow.reverse_tcp_ack_total_count`*:: ++ +-- +type: long -Fields for Anomali ThreatStream +-- +*`netflow.reverse_tcp_acknowledgement_number`*:: ++ +-- +type: long +-- -*`anomali.threatstream.classification`*:: +*`netflow.reverse_tcp_control_bits`*:: + -- -Indicates whether an indicator is private or from a public feed and available publicly. Possible values: private, public. - +type: integer -type: keyword +-- -example: private +*`netflow.reverse_tcp_destination_port`*:: ++ +-- +type: integer -- -*`anomali.threatstream.confidence`*:: +*`netflow.reverse_tcp_fin_total_count`*:: + -- -The measure of the accuracy (from 0 to 100) assigned by ThreatStream's predictive analytics technology to indicators. +type: long +-- +*`netflow.reverse_tcp_header_length`*:: ++ +-- type: short -- -*`anomali.threatstream.detail2`*:: +*`netflow.reverse_tcp_options`*:: + -- -Detail text for indicator. - - -type: text - -example: Imported by user 42. +type: long -- -*`anomali.threatstream.id`*:: +*`netflow.reverse_tcp_psh_total_count`*:: + -- -The ID of the indicator. - - -type: keyword +type: long -- -*`anomali.threatstream.import_session_id`*:: +*`netflow.reverse_tcp_rst_total_count`*:: + -- -ID of the import session that created the indicator on ThreatStream. - - -type: keyword +type: long -- -*`anomali.threatstream.itype`*:: +*`netflow.reverse_tcp_sequence_number`*:: + -- -Indicator type. Possible values: "apt_domain", "apt_email", "apt_ip", "apt_url", "bot_ip", "c2_domain", "c2_ip", "c2_url", "i2p_ip", "mal_domain", "mal_email", "mal_ip", "mal_md5", "mal_url", "parked_ip", "phish_email", "phish_ip", "phish_url", "scan_ip", "spam_domain", "ssh_ip", "suspicious_domain", "tor_ip" and "torrent_tracker_url". - - -type: keyword +type: long -- -*`anomali.threatstream.maltype`*:: +*`netflow.reverse_tcp_source_port`*:: + -- -Information regarding a malware family, a CVE ID, or another attack or threat, associated with the indicator. - - -type: wildcard +type: integer -- -*`anomali.threatstream.md5`*:: +*`netflow.reverse_tcp_syn_total_count`*:: + -- -Hash for the indicator. - - -type: keyword +type: long -- -*`anomali.threatstream.resource_uri`*:: +*`netflow.reverse_tcp_urg_total_count`*:: + -- -Relative URI for the indicator details. - - -type: keyword +type: long -- -*`anomali.threatstream.severity`*:: +*`netflow.reverse_tcp_urgent_pointer`*:: + -- -Criticality associated with the threat feed that supplied the indicator. Possible values: low, medium, high, very-high. - - -type: keyword +type: integer -- -*`anomali.threatstream.source`*:: +*`netflow.reverse_tcp_window_scale`*:: + -- -Source for the indicator. - +type: integer -type: keyword +-- -example: Analyst +*`netflow.reverse_tcp_window_size`*:: ++ +-- +type: integer -- -*`anomali.threatstream.source_feed_id`*:: +*`netflow.reverse_total_length_ipv4`*:: + -- -ID for the integrator source. +type: integer +-- -type: keyword +*`netflow.reverse_transport_octet_delta_count`*:: ++ +-- +type: long -- -*`anomali.threatstream.state`*:: +*`netflow.reverse_transport_packet_delta_count`*:: + -- -State for this indicator. +type: long +-- +*`netflow.reverse_tunnel_technology`*:: ++ +-- type: keyword -example: active - -- -*`anomali.threatstream.trusted_circle_ids`*:: +*`netflow.reverse_udp_destination_port`*:: + -- -ID of the trusted circle that imported the indicator. +type: integer +-- -type: keyword +*`netflow.reverse_udp_message_length`*:: ++ +-- +type: integer -- -*`anomali.threatstream.update_id`*:: +*`netflow.reverse_udp_source_port`*:: + -- -Update ID. +type: integer +-- -type: keyword +*`netflow.reverse_union_tcp_flags`*:: ++ +-- +type: short -- -*`anomali.threatstream.url`*:: +*`netflow.reverse_upper_ci_limit`*:: + -- -URL for the indicator. +type: double +-- +*`netflow.reverse_user_name`*:: ++ +-- type: keyword -- -*`anomali.threatstream.value_type`*:: +*`netflow.reverse_value_distribution_method`*:: + -- -Data type of the indicator. Possible values: ip, domain, url, email, md5. +type: short +-- +*`netflow.reverse_virtual_station_interface_id`*:: ++ +-- type: keyword -- -[float] -=== abusech.malwarebazaar - -Fields for Malware Bazaar Threat Intel - - - -*`abusech.malwarebazaar.file_type`*:: +*`netflow.reverse_virtual_station_interface_name`*:: + -- -File type guessed by Malware Bazaar. - - type: keyword -- -*`abusech.malwarebazaar.signature`*:: +*`netflow.reverse_virtual_station_name`*:: + -- -Malware familiy. - - type: keyword -- -*`abusech.malwarebazaar.tags`*:: +*`netflow.reverse_virtual_station_uuid`*:: + -- -A list of tags associated with the queried malware sample. - - type: keyword -- - -*`abusech.malwarebazaar.intelligence.downloads`*:: +*`netflow.reverse_vlan_id`*:: + -- -Number of downloads from MalwareBazaar. - - -type: long +type: integer -- -*`abusech.malwarebazaar.intelligence.uploads`*:: +*`netflow.reverse_vr_fname`*:: + -- -Number of uploads from MalwareBazaar. - - -type: long +type: keyword -- - -*`abusech.malwarebazaar.intelligence.mail.Generic`*:: +*`netflow.reverse_wlan_channel_id`*:: + -- -Malware seen in generic spam traffic. +type: short +-- +*`netflow.reverse_wlan_ssid`*:: ++ +-- type: keyword -- -*`abusech.malwarebazaar.intelligence.mail.IT`*:: +*`netflow.reverse_wtp_mac_address`*:: + -- -Malware seen in IT spam traffic. - - type: keyword -- -*`abusech.malwarebazaar.anonymous`*:: +*`netflow.rfc3550_jitter_microseconds`*:: + -- -Identifies if the sample was submitted anonymously. - - type: long -- -*`abusech.malwarebazaar.code_sign`*:: +*`netflow.rfc3550_jitter_milliseconds`*:: + -- -Code signing information for the sample. - - -type: nested +type: long -- -[float] -=== misp - -Fields for MISP Threat Intel - - - -*`misp.id`*:: +*`netflow.rfc3550_jitter_nanoseconds`*:: + -- -Attribute ID. - - -type: keyword +type: long -- -*`misp.orgc_id`*:: +*`netflow.rtp_payload_type`*:: + -- -Organization Community ID of the event. - - -type: keyword +type: short -- -*`misp.org_id`*:: +*`netflow.rtp_sequence_number`*:: + -- -Organization ID of the event. - - -type: keyword +type: integer -- -*`misp.threat_level_id`*:: +*`netflow.sampler_id`*:: + -- -Threat level from 5 to 1, where 1 is the most critical. - - -type: long +type: short -- -*`misp.info`*:: +*`netflow.sampler_mode`*:: + -- -Additional text or information related to the event. +type: short +-- +*`netflow.sampler_name`*:: ++ +-- type: keyword -- -*`misp.published`*:: +*`netflow.sampler_random_interval`*:: + -- -When the event was published. - - -type: boolean +type: long -- -*`misp.uuid`*:: +*`netflow.sampling_algorithm`*:: + -- -The UUID of the event object. - - -type: keyword +type: short -- -*`misp.date`*:: +*`netflow.sampling_flow_interval`*:: + -- -The date of when the event object was created. - - -type: date +type: long -- -*`misp.attribute_count`*:: +*`netflow.sampling_flow_spacing`*:: + -- -How many attributes are included in a single event object. - - type: long -- -*`misp.timestamp`*:: +*`netflow.sampling_interval`*:: + -- -The timestamp of when the event object was created. - - -type: date +type: long -- -*`misp.distribution`*:: +*`netflow.sampling_packet_interval`*:: + -- -Distribution type related to MISP. - - -type: keyword +type: long -- -*`misp.proposal_email_lock`*:: +*`netflow.sampling_packet_space`*:: + -- -Settings configured on MISP for email lock on this event object. - - -type: boolean +type: long -- -*`misp.locked`*:: +*`netflow.sampling_population`*:: + -- -If the current MISP event object is locked or not. - - -type: boolean +type: long -- -*`misp.publish_timestamp`*:: +*`netflow.sampling_probability`*:: + -- -At what time the event object was published +type: double +-- -type: date +*`netflow.sampling_size`*:: ++ +-- +type: long -- -*`misp.sharing_group_id`*:: +*`netflow.sampling_time_interval`*:: + -- -The ID of the grouped events or sources of the event. - - -type: keyword +type: long -- -*`misp.disable_correlation`*:: +*`netflow.sampling_time_space`*:: + -- -If correlation is disabled on the MISP event object. - - -type: boolean +type: long -- -*`misp.extends_uuid`*:: +*`netflow.second_packet_banner`*:: + -- -The UUID of the event object it might extend. - - type: keyword -- -*`misp.org.id`*:: +*`netflow.section_exported_octets`*:: + -- -The organization ID related to the event object. - - -type: keyword +type: integer -- -*`misp.org.name`*:: +*`netflow.section_offset`*:: + -- -The organization name related to the event object. - - -type: keyword +type: integer -- -*`misp.org.uuid`*:: +*`netflow.selection_sequence_id`*:: + -- -The UUID of the organization related to the event object. +type: long +-- -type: keyword +*`netflow.selector_algorithm`*:: ++ +-- +type: integer -- -*`misp.org.local`*:: +*`netflow.selector_id`*:: + -- -If the event object is local or from a remote source. +type: long +-- -type: boolean +*`netflow.selector_id_total_flows_observed`*:: ++ +-- +type: long -- -*`misp.orgc.id`*:: +*`netflow.selector_id_total_flows_selected`*:: + -- -The Organization Community ID in which the event object was reported from. +type: long +-- -type: keyword +*`netflow.selector_id_total_pkts_observed`*:: ++ +-- +type: long -- -*`misp.orgc.name`*:: +*`netflow.selector_id_total_pkts_selected`*:: + -- -The Organization Community name in which the event object was reported from. +type: long +-- +*`netflow.selector_name`*:: ++ +-- type: keyword -- -*`misp.orgc.uuid`*:: +*`netflow.service_name`*:: + -- -The Organization Community UUID in which the event object was reported from. - - type: keyword -- -*`misp.orgc.local`*:: +*`netflow.session_scope`*:: + -- -If the Organization Community was local or synced from a remote source. - - -type: boolean +type: short -- -*`misp.attribute.id`*:: +*`netflow.silk_app_label`*:: + -- -The ID of the attribute related to the event object. - - -type: keyword +type: integer -- -*`misp.attribute.type`*:: +*`netflow.small_packet_count`*:: + -- -The type of the attribute related to the event object. For example email, ipv4, sha1 and such. +type: long +-- -type: keyword +*`netflow.source_ipv4_address`*:: ++ +-- +type: ip -- -*`misp.attribute.category`*:: +*`netflow.source_ipv4_prefix`*:: + -- -The category of the attribute related to the event object. For example "Network Activity". +type: ip +-- -type: keyword +*`netflow.source_ipv4_prefix_length`*:: ++ +-- +type: short -- -*`misp.attribute.to_ids`*:: +*`netflow.source_ipv6_address`*:: + -- -If the attribute should be automatically synced with an IDS. +type: ip +-- -type: boolean +*`netflow.source_ipv6_prefix`*:: ++ +-- +type: ip -- -*`misp.attribute.uuid`*:: +*`netflow.source_ipv6_prefix_length`*:: + -- -The UUID of the attribute related to the event. +type: short +-- +*`netflow.source_mac_address`*:: ++ +-- type: keyword -- -*`misp.attribute.event_id`*:: +*`netflow.source_transport_port`*:: + -- -The local event ID of the attribute related to the event. - - -type: keyword +type: integer -- -*`misp.attribute.distribution`*:: +*`netflow.source_transport_ports_limit`*:: + -- -How the attribute has been distributed, represented by integer numbers. +type: integer +-- +*`netflow.src_traffic_index`*:: ++ +-- type: long -- -*`misp.attribute.timestamp`*:: +*`netflow.ssl_cert_serial_number`*:: + -- -The timestamp in which the attribute was attached to the event object. - - -type: date +type: keyword -- -*`misp.attribute.comment`*:: +*`netflow.ssl_cert_signature`*:: + -- -Comments made to the attribute itself. - - type: keyword -- -*`misp.attribute.sharing_group_id`*:: +*`netflow.ssl_cert_validity_not_after`*:: + -- -The group ID of the sharing group related to the specific attribute. - - type: keyword -- -*`misp.attribute.deleted`*:: +*`netflow.ssl_cert_validity_not_before`*:: + -- -If the attribute has been removed from the event object. - - -type: boolean +type: keyword -- -*`misp.attribute.disable_correlation`*:: +*`netflow.ssl_cert_version`*:: + -- -If correlation has been enabled on the attribute related to the event object. - - -type: boolean +type: short -- -*`misp.attribute.object_id`*:: +*`netflow.ssl_certificate_hash`*:: + -- -The ID of the Object in which the attribute is attached. - - type: keyword -- -*`misp.attribute.object_relation`*:: +*`netflow.ssl_cipher`*:: + -- -The type of relation the attribute has with the event object itself. - - type: keyword -- -*`misp.attribute.value`*:: +*`netflow.ssl_client_version`*:: + -- -The value of the attribute, depending on the type like "url, sha1, email-src". - - -type: keyword +type: short -- -*`misp.context.attribute.id`*:: +*`netflow.ssl_compression_method`*:: + -- -The ID of the secondary attribute related to the event object. +type: short +-- +*`netflow.ssl_object_type`*:: ++ +-- type: keyword -- -*`misp.context.attribute.type`*:: +*`netflow.ssl_object_value`*:: + -- -The type of the secondary attribute related to the event object. For example email, ipv4, sha1 and such. - - type: keyword -- -*`misp.context.attribute.category`*:: +*`netflow.ssl_public_key_algorithm`*:: + -- -The category of the secondary attribute related to the event object. For example "Network Activity". - - type: keyword -- -*`misp.context.attribute.to_ids`*:: +*`netflow.ssl_public_key_length`*:: + -- -If the secondary attribute should be automatically synced with an IDS. - - -type: boolean +type: keyword -- -*`misp.context.attribute.uuid`*:: +*`netflow.ssl_server_cipher`*:: + -- -The UUID of the secondary attribute related to the event. +type: long +-- +*`netflow.ssl_server_name`*:: ++ +-- type: keyword -- -*`misp.context.attribute.event_id`*:: +*`netflow.sta_ipv4_address`*:: + -- -The local event ID of the secondary attribute related to the event. +type: ip +-- +*`netflow.sta_mac_address`*:: ++ +-- type: keyword -- -*`misp.context.attribute.distribution`*:: +*`netflow.standard_deviation_interarrival_time`*:: + -- -How the secondary attribute has been distributed, represented by integer numbers. - - type: long -- -*`misp.context.attribute.timestamp`*:: +*`netflow.standard_deviation_payload_length`*:: + -- -The timestamp in which the secondary attribute was attached to the event object. +type: short +-- +*`netflow.system_init_time_milliseconds`*:: ++ +-- type: date -- -*`misp.context.attribute.comment`*:: +*`netflow.tcp_ack_total_count`*:: + -- -Comments made to the secondary attribute itself. - - -type: keyword +type: long -- -*`misp.context.attribute.sharing_group_id`*:: +*`netflow.tcp_acknowledgement_number`*:: + -- -The group ID of the sharing group related to the specific secondary attribute. - - -type: keyword +type: long -- -*`misp.context.attribute.deleted`*:: +*`netflow.tcp_control_bits`*:: + -- -If the secondary attribute has been removed from the event object. - - -type: boolean +type: integer -- -*`misp.context.attribute.disable_correlation`*:: +*`netflow.tcp_destination_port`*:: + -- -If correlation has been enabled on the secondary attribute related to the event object. - - -type: boolean +type: integer -- -*`misp.context.attribute.object_id`*:: +*`netflow.tcp_fin_total_count`*:: + -- -The ID of the Object in which the secondary attribute is attached. - - -type: keyword +type: long -- -*`misp.context.attribute.object_relation`*:: +*`netflow.tcp_header_length`*:: + -- -The type of relation the secondary attribute has with the event object itself. - - -type: keyword +type: short -- -*`misp.context.attribute.value`*:: +*`netflow.tcp_options`*:: + -- -The value of the attribute, depending on the type like "url, sha1, email-src". - - -type: keyword +type: long -- -[float] -=== otx - -Fields for OTX Threat Intel - +*`netflow.tcp_psh_total_count`*:: ++ +-- +type: long +-- -*`otx.id`*:: +*`netflow.tcp_rst_total_count`*:: + -- -The ID of the indicator. +type: long +-- -type: keyword +*`netflow.tcp_sequence_number`*:: ++ +-- +type: long -- -*`otx.indicator`*:: +*`netflow.tcp_source_port`*:: + -- -The value of the indicator, for example if the type is domain, this would be the value. +type: integer +-- -type: keyword +*`netflow.tcp_syn_total_count`*:: ++ +-- +type: long -- -*`otx.description`*:: +*`netflow.tcp_urg_total_count`*:: + -- -A description of the indicator. +type: long +-- -type: keyword +*`netflow.tcp_urgent_pointer`*:: ++ +-- +type: integer -- -*`otx.title`*:: +*`netflow.tcp_window_scale`*:: + -- -Title describing the indicator. +type: integer +-- -type: keyword +*`netflow.tcp_window_size`*:: ++ +-- +type: integer -- -*`otx.content`*:: +*`netflow.template_id`*:: + -- -Extra text or descriptive content related to the indicator. +type: integer +-- +*`netflow.tftp_filename`*:: ++ +-- type: keyword -- -*`otx.type`*:: +*`netflow.tftp_mode`*:: + -- -The indicator type, can for example be "domain, email, FileHash-SHA256". - - type: keyword -- -[float] -=== threatq - -Fields for ThreatQ Threat Library - - - -*`threatq.updated_at`*:: +*`netflow.timestamp`*:: + -- -Last modification time - - -type: date +type: long -- -*`threatq.created_at`*:: +*`netflow.timestamp_absolute_monitoring-interval`*:: + -- -Object creation time - - -type: date +type: long -- -*`threatq.expires_at`*:: +*`netflow.total_length_ipv4`*:: + -- -Expiration time - - -type: date +type: integer -- -*`threatq.expires_calculated_at`*:: +*`netflow.traffic_type`*:: + -- -Expiration calculation time - - -type: date +type: short -- -*`threatq.published_at`*:: +*`netflow.transport_octet_delta_count`*:: + -- -Object publication time - - -type: date +type: long -- -*`threatq.status`*:: +*`netflow.transport_packet_delta_count`*:: + -- -Object status within the Threat Library - - -type: keyword +type: long -- -*`threatq.indicator_value`*:: +*`netflow.tunnel_technology`*:: + -- -Original indicator value - - type: keyword -- -*`threatq.adversaries`*:: +*`netflow.udp_destination_port`*:: + -- -Adversaries that are linked to the object - - -type: keyword +type: integer -- -*`threatq.attributes`*:: +*`netflow.udp_message_length`*:: + -- -These provide additional context about an object - - -type: flattened +type: integer -- -[[exported-fields-tomcat]] -== Apache Tomcat fields - -tomcat fields. - - - -*`network.interface.name`*:: +*`netflow.udp_source_port`*:: + -- -Name of the network interface where the traffic has been observed. - - -type: keyword +type: integer -- - - -*`rsa.internal.msg`*:: +*`netflow.union_tcp_flags`*:: + -- -This key is used to capture the raw message that comes into the Log Decoder - -type: keyword +type: short -- -*`rsa.internal.messageid`*:: +*`netflow.upper_ci_limit`*:: + -- -type: keyword +type: double -- -*`rsa.internal.event_desc`*:: +*`netflow.user_name`*:: + -- type: keyword -- -*`rsa.internal.message`*:: +*`netflow.username`*:: + -- -This key captures the contents of instant messages - type: keyword -- -*`rsa.internal.time`*:: +*`netflow.value_distribution_method`*:: + -- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. - -type: date +type: short -- -*`rsa.internal.level`*:: +*`netflow.viptela_vpn_id`*:: + -- -Deprecated key defined only in table map. - type: long -- -*`rsa.internal.msg_id`*:: +*`netflow.virtual_station_interface_id`*:: + -- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: short -- -*`rsa.internal.msg_vid`*:: +*`netflow.virtual_station_interface_name`*:: + -- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: keyword -- -*`rsa.internal.data`*:: +*`netflow.virtual_station_name`*:: + -- -Deprecated key defined only in table map. - type: keyword -- -*`rsa.internal.obj_server`*:: +*`netflow.virtual_station_uuid`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: short -- -*`rsa.internal.obj_val`*:: +*`netflow.vlan_id`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: integer -- -*`rsa.internal.resource`*:: +*`netflow.vmware_egress_interface_attr`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: integer -- -*`rsa.internal.obj_id`*:: +*`netflow.vmware_ingress_interface_attr`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: integer -- -*`rsa.internal.statement`*:: +*`netflow.vmware_tenant_dest_ipv4`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: ip -- -*`rsa.internal.audit_class`*:: +*`netflow.vmware_tenant_dest_ipv6`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: ip -- -*`rsa.internal.entry`*:: +*`netflow.vmware_tenant_dest_port`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: integer -- -*`rsa.internal.hcode`*:: +*`netflow.vmware_tenant_protocol`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: short -- -*`rsa.internal.inode`*:: +*`netflow.vmware_tenant_source_ipv4`*:: + -- -Deprecated key defined only in table map. - -type: long +type: ip -- -*`rsa.internal.resource_class`*:: +*`netflow.vmware_tenant_source_ipv6`*:: + -- -Deprecated key defined only in table map. - -type: keyword +type: ip -- -*`rsa.internal.dead`*:: +*`netflow.vmware_tenant_source_port`*:: + -- -Deprecated key defined only in table map. - -type: long +type: integer -- -*`rsa.internal.feed_desc`*:: +*`netflow.vmware_vxlan_export_role`*:: + -- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: short -type: keyword +-- + +*`netflow.vpn_identifier`*:: ++ +-- +type: short -- -*`rsa.internal.feed_name`*:: +*`netflow.vr_fname`*:: + -- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: keyword -- -*`rsa.internal.cid`*:: +*`netflow.waasoptimization_segment`*:: + -- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: short -- -*`rsa.internal.device_class`*:: +*`netflow.wlan_channel_id`*:: + -- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: short -- -*`rsa.internal.device_group`*:: +*`netflow.wlan_ssid`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: keyword -- -*`rsa.internal.device_host`*:: +*`netflow.wtp_mac_address`*:: + -- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: keyword -- -*`rsa.internal.device_ip`*:: +*`netflow.xlate_destination_address_ip_v4`*:: + -- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - type: ip -- -*`rsa.internal.device_ipv6`*:: +*`netflow.xlate_destination_port`*:: + -- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: ip +type: integer -- -*`rsa.internal.device_type`*:: +*`netflow.xlate_source_address_ip_v4`*:: + -- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness - -type: keyword +type: ip -- -*`rsa.internal.device_type_id`*:: +*`netflow.xlate_source_port`*:: + -- -Deprecated key defined only in table map. - -type: long +type: integer -- -*`rsa.internal.did`*:: -+ --- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +[[exported-fields-nginx]] +== Nginx fields -type: keyword +Module for parsing the Nginx log files. --- -*`rsa.internal.entropy_req`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration -type: long +[float] +=== nginx --- +Fields from the Nginx log files. -*`rsa.internal.entropy_res`*:: -+ --- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration -type: long --- +[float] +=== access -*`rsa.internal.event_name`*:: -+ --- -Deprecated key defined only in table map. +Contains fields for the Nginx access logs. -type: keyword --- -*`rsa.internal.feed_category`*:: +*`nginx.access.remote_ip_list`*:: + -- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +An array of remote IP addresses. It is a list because it is common to include, besides the client IP address, IP addresses from headers like `X-Forwarded-For`. Real source IP is restored to `source.ip`. -type: keyword + +type: array -- -*`rsa.internal.forward_ip`*:: +*`nginx.access.body_sent.bytes`*:: + -- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. +type: alias -type: ip +alias to: http.response.body.bytes -- -*`rsa.internal.forward_ipv6`*:: +*`nginx.access.user_name`*:: + -- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: ip +alias to: user.name -- -*`rsa.internal.header_id`*:: +*`nginx.access.method`*:: + -- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: keyword +alias to: http.request.method -- -*`rsa.internal.lc_cid`*:: +*`nginx.access.url`*:: + -- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: keyword +alias to: url.original -- -*`rsa.internal.lc_ctime`*:: +*`nginx.access.http_version`*:: + -- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: date +alias to: http.version -- -*`rsa.internal.mcb_req`*:: +*`nginx.access.response_code`*:: + -- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most +type: alias -type: long +alias to: http.response.status_code -- -*`rsa.internal.mcb_res`*:: +*`nginx.access.referrer`*:: + -- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most +type: alias -type: long +alias to: http.request.referrer -- -*`rsa.internal.mcbc_req`*:: +*`nginx.access.agent`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +type: alias -type: long +alias to: user_agent.original -- -*`rsa.internal.mcbc_res`*:: + +*`nginx.access.user_agent.device`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +type: alias -type: long +alias to: user_agent.device.name -- -*`rsa.internal.medium`*:: +*`nginx.access.user_agent.name`*:: + -- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session +type: alias -type: long +alias to: user_agent.name -- -*`rsa.internal.node_name`*:: +*`nginx.access.user_agent.os`*:: + -- -Deprecated key defined only in table map. +type: alias -type: keyword +alias to: user_agent.os.full_name -- -*`rsa.internal.nwe_callback_id`*:: +*`nginx.access.user_agent.os_name`*:: + -- -This key denotes that event is endpoint related +type: alias -type: keyword +alias to: user_agent.os.name -- -*`rsa.internal.parse_error`*:: +*`nginx.access.user_agent.original`*:: + -- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: keyword +alias to: user_agent.original -- -*`rsa.internal.payload_req`*:: + +*`nginx.access.geoip.continent_name`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +type: alias -type: long +alias to: source.geo.continent_name -- -*`rsa.internal.payload_res`*:: +*`nginx.access.geoip.country_iso_code`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +type: alias -type: long +alias to: source.geo.country_iso_code -- -*`rsa.internal.process_vid_dst`*:: +*`nginx.access.geoip.location`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. +type: alias -type: keyword +alias to: source.geo.location -- -*`rsa.internal.process_vid_src`*:: +*`nginx.access.geoip.region_name`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. +type: alias -type: keyword +alias to: source.geo.region_name -- -*`rsa.internal.rid`*:: +*`nginx.access.geoip.city_name`*:: + -- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: long +alias to: source.geo.city_name -- -*`rsa.internal.session_split`*:: +*`nginx.access.geoip.region_iso_code`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: keyword +alias to: source.geo.region_iso_code -- -*`rsa.internal.site`*:: -+ --- -Deprecated key defined only in table map. +[float] +=== error -type: keyword +Contains fields for the Nginx error logs. --- -*`rsa.internal.size`*:: + +*`nginx.error.connection_id`*:: + -- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Connection identifier. + type: long -- -*`rsa.internal.sourcefile`*:: +*`nginx.error.level`*:: + -- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +type: alias -type: keyword +alias to: log.level -- -*`rsa.internal.ubc_req`*:: +*`nginx.error.pid`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +type: alias -type: long +alias to: process.pid -- -*`rsa.internal.ubc_res`*:: +*`nginx.error.tid`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +type: alias -type: long +alias to: process.thread.id -- -*`rsa.internal.word`*:: +*`nginx.error.message`*:: + -- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log +type: alias -type: keyword +alias to: message -- +[float] +=== ingress_controller -*`rsa.time.event_time`*:: -+ --- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form +Contains fields for the Ingress Nginx controller access logs. -type: date --- -*`rsa.time.duration_time`*:: +*`nginx.ingress_controller.remote_ip_list`*:: + -- -This key is used to capture the normalized duration/lifetime in seconds. +An array of remote IP addresses. It is a list because it is common to include, besides the client IP address, IP addresses from headers like `X-Forwarded-For`. Real source IP is restored to `source.ip`. -type: double + +type: array -- -*`rsa.time.event_time_str`*:: +*`nginx.ingress_controller.upstream_address_list`*:: + -- -This key is used to capture the incomplete time mentioned in a session as a string +An array of the upstream addresses. It is a list because it is common that several upstream servers were contacted during request processing. + type: keyword -- -*`rsa.time.starttime`*:: +*`nginx.ingress_controller.upstream.response.length_list`*:: + -- -This key is used to capture the Start time mentioned in a session in a standard form +An array of upstream response lengths. It is a list because it is common that several upstream servers were contacted during request processing. -type: date + +type: keyword -- -*`rsa.time.month`*:: +*`nginx.ingress_controller.upstream.response.time_list`*:: + -- +An array of upstream response durations. It is a list because it is common that several upstream servers were contacted during request processing. + + type: keyword -- -*`rsa.time.day`*:: +*`nginx.ingress_controller.upstream.response.status_code_list`*:: + -- +An array of upstream response status codes. It is a list because it is common that several upstream servers were contacted during request processing. + + type: keyword -- -*`rsa.time.endtime`*:: +*`nginx.ingress_controller.http.request.length`*:: + -- -This key is used to capture the End time mentioned in a session in a standard form +The request length (including request line, header, and request body) -type: date + +type: long + +format: bytes -- -*`rsa.time.timezone`*:: +*`nginx.ingress_controller.http.request.time`*:: + -- -This key is used to capture the timezone of the Event Time +Time elapsed since the first bytes were read from the client -type: keyword + +type: double + +format: duration -- -*`rsa.time.duration_str`*:: +*`nginx.ingress_controller.upstream.name`*:: + -- -A text string version of the duration +The name of the upstream. + type: keyword -- -*`rsa.time.date`*:: +*`nginx.ingress_controller.upstream.alternative_name`*:: + -- -type: keyword +The name of the alternative upstream. --- -*`rsa.time.year`*:: -+ --- type: keyword -- -*`rsa.time.recorded_time`*:: +*`nginx.ingress_controller.upstream.response.length`*:: + -- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. +The length of the response obtained from the upstream server. If several servers were contacted during request process, the summary of the multiple response lengths is stored. -type: date --- +type: long -*`rsa.time.datetime`*:: -+ --- -type: keyword +format: bytes -- -*`rsa.time.effective_time`*:: +*`nginx.ingress_controller.upstream.response.time`*:: + -- -This key is the effective time referenced by an individual event in a Standard Timestamp format +The time spent on receiving the response from the upstream as seconds with millisecond resolution. If several servers were contacted during request process, the summary of the multiple response times is stored. -type: date + +type: double + +format: duration -- -*`rsa.time.expire_time`*:: +*`nginx.ingress_controller.upstream.response.status_code`*:: + -- -This key is the timestamp that explicitly refers to an expiration. +The status code of the response obtained from the upstream server. If several servers were contacted during request process, only the status code of the response from the last one is stored in this field. -type: date + +type: long -- -*`rsa.time.process_time`*:: +*`nginx.ingress_controller.upstream.ip`*:: + -- -Deprecated, use duration.time +The IP address of the upstream server. If several servers were contacted during request process, only the last one is stored in this field. -type: keyword + +type: ip -- -*`rsa.time.hour`*:: +*`nginx.ingress_controller.upstream.port`*:: + -- -type: keyword +The port of the upstream server. If several servers were contacted during request process, only the last one is stored in this field. --- -*`rsa.time.min`*:: -+ --- -type: keyword +type: long -- -*`rsa.time.timestamp`*:: +*`nginx.ingress_controller.http.request.id`*:: + -- +The randomly generated ID of the request + + type: keyword -- -*`rsa.time.event_queue_time`*:: +*`nginx.ingress_controller.body_sent.bytes`*:: + -- -This key is the Time that the event was queued. +type: alias -type: date +alias to: http.response.body.bytes -- -*`rsa.time.p_time1`*:: +*`nginx.ingress_controller.user_name`*:: + -- -type: keyword - --- +type: alias -*`rsa.time.tzone`*:: -+ --- -type: keyword +alias to: user.name -- -*`rsa.time.eventtime`*:: +*`nginx.ingress_controller.method`*:: + -- -type: keyword +type: alias + +alias to: http.request.method -- -*`rsa.time.gmtdate`*:: +*`nginx.ingress_controller.url`*:: + -- -type: keyword +type: alias + +alias to: url.original -- -*`rsa.time.gmttime`*:: +*`nginx.ingress_controller.http_version`*:: + -- -type: keyword +type: alias + +alias to: http.version -- -*`rsa.time.p_date`*:: +*`nginx.ingress_controller.response_code`*:: + -- -type: keyword +type: alias + +alias to: http.response.status_code -- -*`rsa.time.p_month`*:: +*`nginx.ingress_controller.referrer`*:: + -- -type: keyword +type: alias + +alias to: http.request.referrer -- -*`rsa.time.p_time`*:: +*`nginx.ingress_controller.agent`*:: + -- -type: keyword +type: alias --- +alias to: user_agent.original -*`rsa.time.p_time2`*:: -+ -- -type: keyword --- -*`rsa.time.p_year`*:: +*`nginx.ingress_controller.user_agent.device`*:: + -- -type: keyword +type: alias + +alias to: user_agent.device.name -- -*`rsa.time.expire_time_str`*:: +*`nginx.ingress_controller.user_agent.name`*:: + -- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. +type: alias -type: keyword +alias to: user_agent.name -- -*`rsa.time.stamp`*:: +*`nginx.ingress_controller.user_agent.os`*:: + -- -Deprecated key defined only in table map. +type: alias -type: date +alias to: user_agent.os.full_name -- - -*`rsa.misc.action`*:: +*`nginx.ingress_controller.user_agent.os_name`*:: + -- -type: keyword +type: alias + +alias to: user_agent.os.name -- -*`rsa.misc.result`*:: +*`nginx.ingress_controller.user_agent.original`*:: + -- -This key is used to capture the outcome/result string value of an action in a session. +type: alias -type: keyword +alias to: user_agent.original -- -*`rsa.misc.severity`*:: + +*`nginx.ingress_controller.geoip.continent_name`*:: + -- -This key is used to capture the severity given the session +type: alias -type: keyword +alias to: source.geo.continent_name -- -*`rsa.misc.event_type`*:: +*`nginx.ingress_controller.geoip.country_iso_code`*:: + -- -This key captures the event category type as specified by the event source. +type: alias -type: keyword +alias to: source.geo.country_iso_code -- -*`rsa.misc.reference_id`*:: +*`nginx.ingress_controller.geoip.location`*:: + -- -This key is used to capture an event id from the session directly +type: alias -type: keyword +alias to: source.geo.location -- -*`rsa.misc.version`*:: +*`nginx.ingress_controller.geoip.region_name`*:: + -- -This key captures Version of the application or OS which is generating the event. +type: alias -type: keyword +alias to: source.geo.region_name -- -*`rsa.misc.disposition`*:: +*`nginx.ingress_controller.geoip.city_name`*:: + -- -This key captures the The end state of an action. +type: alias -type: keyword +alias to: source.geo.city_name -- -*`rsa.misc.result_code`*:: +*`nginx.ingress_controller.geoip.region_iso_code`*:: + -- -This key is used to capture the outcome/result numeric value of an action in a session +type: alias -type: keyword +alias to: source.geo.region_iso_code -- -*`rsa.misc.category`*:: -+ --- -This key is used to capture the category of an event given by the vendor in the session +[[exported-fields-o365]] +== Office 365 fields -type: keyword +Module for handling logs from Office 365. --- -*`rsa.misc.obj_name`*:: -+ --- -This is used to capture name of object -type: keyword +[float] +=== o365.audit + +Fields from Office 365 Management API audit logs. --- -*`rsa.misc.obj_type`*:: + +*`o365.audit.AADGroupId`*:: + -- -This is used to capture type of object - type: keyword -- -*`rsa.misc.event_source`*:: +*`o365.audit.Activity`*:: + -- -This key captures Source of the event that’s not a hostname - type: keyword -- -*`rsa.misc.log_session_id`*:: +*`o365.audit.Actor`*:: + -- -This key is used to capture a sessionid from the session directly - -type: keyword +type: array -- -*`rsa.misc.group`*:: +*`o365.audit.ActorContextId`*:: + -- -This key captures the Group Name value - type: keyword -- -*`rsa.misc.policy_name`*:: +*`o365.audit.ActorIpAddress`*:: + -- -This key is used to capture the Policy Name only. - type: keyword -- -*`rsa.misc.rule_name`*:: +*`o365.audit.ActorUserId`*:: + -- -This key captures the Rule Name - type: keyword -- -*`rsa.misc.context`*:: +*`o365.audit.ActorYammerUserId`*:: + -- -This key captures Information which adds additional context to the event. - type: keyword -- -*`rsa.misc.change_new`*:: +*`o365.audit.AlertEntityId`*:: + -- -This key is used to capture the new values of the attribute that’s changing in a session - type: keyword -- -*`rsa.misc.space`*:: +*`o365.audit.AlertId`*:: + -- type: keyword -- -*`rsa.misc.client`*:: +*`o365.audit.AlertLinks`*:: + -- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. - -type: keyword +type: array -- -*`rsa.misc.msgIdPart1`*:: +*`o365.audit.AlertType`*:: + -- type: keyword -- -*`rsa.misc.msgIdPart2`*:: +*`o365.audit.AppId`*:: + -- type: keyword -- -*`rsa.misc.change_old`*:: +*`o365.audit.ApplicationDisplayName`*:: + -- -This key is used to capture the old value of the attribute that’s changing in a session - type: keyword -- -*`rsa.misc.operation_id`*:: +*`o365.audit.ApplicationId`*:: + -- -An alert number or operation number. The values should be unique and non-repeating. - type: keyword -- -*`rsa.misc.event_state`*:: +*`o365.audit.AzureActiveDirectoryEventType`*:: + -- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. - type: keyword -- -*`rsa.misc.group_object`*:: +*`o365.audit.ExchangeMetaData.*`*:: + -- -This key captures a collection/grouping of entities. Specific usage - -type: keyword +type: object -- -*`rsa.misc.node`*:: +*`o365.audit.Category`*:: + -- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. - type: keyword -- -*`rsa.misc.rule`*:: +*`o365.audit.ClientAppId`*:: + -- -This key captures the Rule number - type: keyword -- -*`rsa.misc.device_name`*:: +*`o365.audit.ClientInfoString`*:: + -- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc - type: keyword -- -*`rsa.misc.param`*:: +*`o365.audit.ClientIP`*:: + -- -This key is the parameters passed as part of a command or application, etc. - type: keyword -- -*`rsa.misc.change_attrib`*:: +*`o365.audit.ClientIPAddress`*:: + -- -This key is used to capture the name of the attribute that’s changing in a session - type: keyword -- -*`rsa.misc.event_computer`*:: +*`o365.audit.Comments`*:: + -- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. - -type: keyword +type: text -- -*`rsa.misc.reference_id1`*:: +*`o365.audit.CommunicationType`*:: + -- -This key is for Linked ID to be used as an addition to "reference.id" - type: keyword -- -*`rsa.misc.event_log`*:: +*`o365.audit.CorrelationId`*:: + -- -This key captures the Name of the event log - type: keyword -- -*`rsa.misc.OS`*:: +*`o365.audit.CreationTime`*:: + -- -This key captures the Name of the Operating System - type: keyword -- -*`rsa.misc.terminal`*:: +*`o365.audit.CustomUniqueId`*:: + -- -This key captures the Terminal Names only - type: keyword -- -*`rsa.misc.msgIdPart3`*:: +*`o365.audit.Data`*:: + -- type: keyword -- -*`rsa.misc.filter`*:: +*`o365.audit.DataType`*:: + -- -This key captures Filter used to reduce result set - type: keyword -- -*`rsa.misc.serial_number`*:: +*`o365.audit.DoNotDistributeEvent`*:: + -- -This key is the Serial number associated with a physical asset. - -type: keyword +type: boolean -- -*`rsa.misc.checksum`*:: +*`o365.audit.EntityType`*:: + -- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. - type: keyword -- -*`rsa.misc.event_user`*:: +*`o365.audit.ErrorNumber`*:: + -- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. - type: keyword -- -*`rsa.misc.virusname`*:: +*`o365.audit.EventData`*:: + -- -This key captures the name of the virus - type: keyword -- -*`rsa.misc.content_type`*:: +*`o365.audit.EventSource`*:: + -- -This key is used to capture Content Type only. - type: keyword -- -*`rsa.misc.group_id`*:: +*`o365.audit.ExceptionInfo.*`*:: + -- -This key captures Group ID Number (related to the group name) - -type: keyword +type: object -- -*`rsa.misc.policy_id`*:: +*`o365.audit.Experience`*:: + -- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise - type: keyword -- -*`rsa.misc.vsys`*:: +*`o365.audit.ExtendedProperties.*`*:: + -- -This key captures Virtual System Name - -type: keyword +type: object -- -*`rsa.misc.connection_id`*:: +*`o365.audit.ExternalAccess`*:: + -- -This key captures the Connection ID - type: keyword -- -*`rsa.misc.reference_id2`*:: +*`o365.audit.FromApp`*:: + -- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. - -type: keyword +type: boolean -- -*`rsa.misc.sensor`*:: +*`o365.audit.GroupName`*:: + -- -This key captures Name of the sensor. Typically used in IDS/IPS based devices - type: keyword -- -*`rsa.misc.sig_id`*:: +*`o365.audit.Id`*:: + -- -This key captures IDS/IPS Int Signature ID - -type: long +type: keyword -- -*`rsa.misc.port_name`*:: +*`o365.audit.ImplicitShare`*:: + -- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). - type: keyword -- -*`rsa.misc.rule_group`*:: +*`o365.audit.IncidentId`*:: + -- -This key captures the Rule group name - type: keyword -- -*`rsa.misc.risk_num`*:: +*`o365.audit.InternalLogonType`*:: + -- -This key captures a Numeric Risk value - -type: double +type: keyword -- -*`rsa.misc.trigger_val`*:: +*`o365.audit.InterSystemsId`*:: + -- -This key captures the Value of the trigger or threshold condition. - type: keyword -- -*`rsa.misc.log_session_id1`*:: +*`o365.audit.IntraSystemId`*:: + -- -This key is used to capture a Linked (Related) Session ID from the session directly - type: keyword -- -*`rsa.misc.comp_version`*:: +*`o365.audit.IsDocLib`*:: + -- -This key captures the Version level of a sub-component of a product. - -type: keyword +type: boolean -- -*`rsa.misc.content_version`*:: +*`o365.audit.Item.*`*:: + -- -This key captures Version level of a signature or database content. - -type: keyword +type: object -- -*`rsa.misc.hardware_id`*:: +*`o365.audit.Item.*.*`*:: + -- -This key is used to capture unique identifier for a device or system (NOT a Mac address) - -type: keyword +type: object -- -*`rsa.misc.risk`*:: +*`o365.audit.ItemCount`*:: + -- -This key captures the non-numeric risk value - -type: keyword +type: long -- -*`rsa.misc.event_id`*:: +*`o365.audit.ItemName`*:: + -- type: keyword -- -*`rsa.misc.reason`*:: +*`o365.audit.ItemType`*:: + -- type: keyword -- -*`rsa.misc.status`*:: +*`o365.audit.ListBaseTemplateType`*:: + -- type: keyword -- -*`rsa.misc.mail_id`*:: +*`o365.audit.ListBaseType`*:: + -- -This key is used to capture the mailbox id/name - type: keyword -- -*`rsa.misc.rule_uid`*:: +*`o365.audit.ListColor`*:: + -- -This key is the Unique Identifier for a rule. - type: keyword -- -*`rsa.misc.trigger_desc`*:: +*`o365.audit.ListIcon`*:: + -- -This key captures the Description of the trigger or threshold condition. - type: keyword -- -*`rsa.misc.inout`*:: +*`o365.audit.ListId`*:: + -- type: keyword -- -*`rsa.misc.p_msgid`*:: +*`o365.audit.ListTitle`*:: + -- type: keyword -- -*`rsa.misc.data_type`*:: +*`o365.audit.ListItemUniqueId`*:: + -- type: keyword -- -*`rsa.misc.msgIdPart4`*:: +*`o365.audit.LogonError`*:: + -- type: keyword -- -*`rsa.misc.error`*:: +*`o365.audit.LogonType`*:: + -- -This key captures All non successful Error codes or responses - type: keyword -- -*`rsa.misc.index`*:: +*`o365.audit.LogonUserSid`*:: + -- type: keyword -- -*`rsa.misc.listnum`*:: +*`o365.audit.MailboxGuid`*:: + -- -This key is used to capture listname or listnumber, primarily for collecting access-list - type: keyword -- -*`rsa.misc.ntype`*:: +*`o365.audit.MailboxOwnerMasterAccountSid`*:: + -- type: keyword -- -*`rsa.misc.observed_val`*:: +*`o365.audit.MailboxOwnerSid`*:: + -- -This key captures the Value observed (from the perspective of the device generating the log). - type: keyword -- -*`rsa.misc.policy_value`*:: +*`o365.audit.MailboxOwnerUPN`*:: + -- -This key captures the contents of the policy. This contains details about the policy - type: keyword -- -*`rsa.misc.pool_name`*:: +*`o365.audit.Members`*:: + -- -This key captures the name of a resource pool - -type: keyword +type: array -- -*`rsa.misc.rule_template`*:: +*`o365.audit.Members.*`*:: + -- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template - -type: keyword +type: object -- -*`rsa.misc.count`*:: +*`o365.audit.ModifiedProperties.*.*`*:: + -- -type: keyword +type: object -- -*`rsa.misc.number`*:: +*`o365.audit.Name`*:: + -- type: keyword -- -*`rsa.misc.sigcat`*:: +*`o365.audit.ObjectId`*:: + -- type: keyword -- -*`rsa.misc.type`*:: +*`o365.audit.ObjectDisplayName`*:: + -- type: keyword -- -*`rsa.misc.comments`*:: +*`o365.audit.ObjectType`*:: + -- -Comment information provided in the log message - type: keyword -- -*`rsa.misc.doc_number`*:: +*`o365.audit.Operation`*:: + -- -This key captures File Identification number - -type: long +type: keyword -- -*`rsa.misc.expected_val`*:: +*`o365.audit.OperationId`*:: + -- -This key captures the Value expected (from the perspective of the device generating the log). - type: keyword -- -*`rsa.misc.job_num`*:: +*`o365.audit.OperationProperties`*:: + -- -This key captures the Job Number - -type: keyword +type: object -- -*`rsa.misc.spi_dst`*:: +*`o365.audit.OrganizationId`*:: + -- -Destination SPI Index - type: keyword -- -*`rsa.misc.spi_src`*:: +*`o365.audit.OrganizationName`*:: + -- -Source SPI Index - type: keyword -- -*`rsa.misc.code`*:: +*`o365.audit.OriginatingServer`*:: + -- type: keyword -- -*`rsa.misc.agent_id`*:: +*`o365.audit.Parameters.*`*:: + -- -This key is used to capture agent id - -type: keyword +type: object -- -*`rsa.misc.message_body`*:: +*`o365.audit.PolicyDetails`*:: + -- -This key captures the The contents of the message body. - -type: keyword +type: array -- -*`rsa.misc.phone`*:: +*`o365.audit.PolicyId`*:: + -- type: keyword -- -*`rsa.misc.sig_id_str`*:: +*`o365.audit.RecordType`*:: + -- -This key captures a string object of the sigid variable. - type: keyword -- -*`rsa.misc.cmd`*:: +*`o365.audit.RequestId`*:: + -- type: keyword -- -*`rsa.misc.misc`*:: +*`o365.audit.ResultStatus`*:: + -- type: keyword -- -*`rsa.misc.name`*:: +*`o365.audit.SensitiveInfoDetectionIsIncluded`*:: + -- type: keyword -- -*`rsa.misc.cpu`*:: +*`o365.audit.SharePointMetaData.*`*:: + -- -This key is the CPU time used in the execution of the event being recorded. - -type: long +type: object -- -*`rsa.misc.event_desc`*:: +*`o365.audit.SessionId`*:: + -- -This key is used to capture a description of an event available directly or inferred - type: keyword -- -*`rsa.misc.sig_id1`*:: +*`o365.audit.Severity`*:: + -- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long +type: keyword -- -*`rsa.misc.im_buddyid`*:: +*`o365.audit.Site`*:: + -- type: keyword -- -*`rsa.misc.im_client`*:: +*`o365.audit.SiteUrl`*:: + -- type: keyword -- -*`rsa.misc.im_userid`*:: +*`o365.audit.Source`*:: + -- type: keyword -- -*`rsa.misc.pid`*:: +*`o365.audit.SourceFileExtension`*:: + -- type: keyword -- -*`rsa.misc.priority`*:: +*`o365.audit.SourceFileName`*:: + -- type: keyword -- -*`rsa.misc.context_subject`*:: +*`o365.audit.SourceRelativeUrl`*:: + -- -This key is to be used in an audit context where the subject is the object being identified - type: keyword -- -*`rsa.misc.context_target`*:: +*`o365.audit.Status`*:: + -- type: keyword -- -*`rsa.misc.cve`*:: +*`o365.audit.SupportTicketId`*:: + -- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. - type: keyword -- -*`rsa.misc.fcatnum`*:: +*`o365.audit.Target`*:: + -- -This key captures Filter Category Number. Legacy Usage - -type: keyword +type: array -- -*`rsa.misc.library`*:: +*`o365.audit.TargetContextId`*:: + -- -This key is used to capture library information in mainframe devices - type: keyword -- -*`rsa.misc.parent_node`*:: +*`o365.audit.TargetUserOrGroupName`*:: + -- -This key captures the Parent Node Name. Must be related to node variable. - type: keyword -- -*`rsa.misc.risk_info`*:: +*`o365.audit.TargetUserOrGroupType`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - type: keyword -- -*`rsa.misc.tcp_flags`*:: +*`o365.audit.TeamName`*:: + -- -This key is captures the TCP flags set in any packet of session - -type: long +type: keyword -- -*`rsa.misc.tos`*:: +*`o365.audit.TeamGuid`*:: + -- -This key describes the type of service - -type: long +type: keyword -- -*`rsa.misc.vm_target`*:: +*`o365.audit.TemplateTypeId`*:: + -- -VMWare Target **VMWARE** only varaible. - type: keyword -- -*`rsa.misc.workspace`*:: +*`o365.audit.Timestamp`*:: + -- -This key captures Workspace Description - type: keyword -- -*`rsa.misc.command`*:: +*`o365.audit.UniqueSharingId`*:: + -- type: keyword -- -*`rsa.misc.event_category`*:: +*`o365.audit.UserAgent`*:: + -- type: keyword -- -*`rsa.misc.facilityname`*:: +*`o365.audit.UserId`*:: + -- type: keyword -- -*`rsa.misc.forensic_info`*:: +*`o365.audit.UserKey`*:: + -- type: keyword -- -*`rsa.misc.jobname`*:: +*`o365.audit.UserType`*:: + -- type: keyword -- -*`rsa.misc.mode`*:: +*`o365.audit.Version`*:: + -- type: keyword -- -*`rsa.misc.policy`*:: +*`o365.audit.WebId`*:: + -- type: keyword -- -*`rsa.misc.policy_waiver`*:: +*`o365.audit.Workload`*:: + -- type: keyword -- -*`rsa.misc.second`*:: +*`o365.audit.WorkspaceId`*:: + -- type: keyword -- -*`rsa.misc.space1`*:: +*`o365.audit.WorkspaceName`*:: + -- type: keyword -- -*`rsa.misc.subcategory`*:: +*`o365.audit.YammerNetworkId`*:: + -- type: keyword -- -*`rsa.misc.tbdstr2`*:: -+ --- -type: keyword +[[exported-fields-okta]] +== Okta fields --- +Module for handling system logs from Okta. + + + +[float] +=== okta + +Fields from Okta. -*`rsa.misc.alert_id`*:: + + +*`okta.uuid`*:: + -- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The unique identifier of the Okta LogEvent. + type: keyword -- -*`rsa.misc.checksum_dst`*:: +*`okta.event_type`*:: + -- -This key is used to capture the checksum or hash of the the target entity such as a process or file. +The type of the LogEvent. + type: keyword -- -*`rsa.misc.checksum_src`*:: +*`okta.version`*:: + -- -This key is used to capture the checksum or hash of the source entity such as a file or process. +The version of the LogEvent. + type: keyword -- -*`rsa.misc.fresult`*:: +*`okta.severity`*:: + -- -This key captures the Filter Result +The severity of the LogEvent. Must be one of DEBUG, INFO, WARN, or ERROR. -type: long + +type: keyword -- -*`rsa.misc.payload_dst`*:: +*`okta.display_message`*:: + -- -This key is used to capture destination payload +The display message of the LogEvent. + type: keyword -- -*`rsa.misc.payload_src`*:: +[float] +=== actor + +Fields that let you store information of the actor for the LogEvent. + + + +*`okta.actor.id`*:: + -- -This key is used to capture source payload +Identifier of the actor. + type: keyword -- -*`rsa.misc.pool_id`*:: +*`okta.actor.type`*:: + -- -This key captures the identifier (typically numeric field) of a resource pool +Type of the actor. + type: keyword -- -*`rsa.misc.process_id_val`*:: +*`okta.actor.alternate_id`*:: + -- -This key is a failure key for Process ID when it is not an integer value +Alternate identifier of the actor. + type: keyword -- -*`rsa.misc.risk_num_comm`*:: +*`okta.actor.display_name`*:: + -- -This key captures Risk Number Community +Display name of the actor. -type: double --- +type: keyword -*`rsa.misc.risk_num_next`*:: -+ -- -This key captures Risk Number NextGen -type: double +[float] +=== client + +Fields that let you store information about the client of the actor. + --- -*`rsa.misc.risk_num_sand`*:: +*`okta.client.ip`*:: + -- -This key captures Risk Number SandBox +The IP address of the client. -type: double --- +type: ip -*`rsa.misc.risk_num_static`*:: -+ -- -This key captures Risk Number Static -type: double +[float] +=== user_agent + +Fields about the user agent information of the client. --- -*`rsa.misc.risk_suspicious`*:: + +*`okta.client.user_agent.raw_user_agent`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The raw informaton of the user agent. + type: keyword -- -*`rsa.misc.risk_warning`*:: +*`okta.client.user_agent.os`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The OS informaton. + type: keyword -- -*`rsa.misc.snmp_oid`*:: +*`okta.client.user_agent.browser`*:: + -- -SNMP Object Identifier +The browser informaton of the client. + type: keyword -- -*`rsa.misc.sql`*:: +*`okta.client.zone`*:: + -- -This key captures the SQL query +The zone information of the client. + type: keyword -- -*`rsa.misc.vuln_ref`*:: +*`okta.client.device`*:: + -- -This key captures the Vulnerability Reference details +The information of the client device. + type: keyword -- -*`rsa.misc.acl_id`*:: +*`okta.client.id`*:: + -- -type: keyword +The identifier of the client. --- -*`rsa.misc.acl_op`*:: -+ --- type: keyword -- -*`rsa.misc.acl_pos`*:: -+ --- -type: keyword +[float] +=== outcome --- +Fields that let you store information about the outcome. -*`rsa.misc.acl_table`*:: -+ --- -type: keyword --- -*`rsa.misc.admin`*:: +*`okta.outcome.reason`*:: + -- -type: keyword +The reason of the outcome. --- -*`rsa.misc.alarm_id`*:: -+ --- type: keyword -- -*`rsa.misc.alarmname`*:: +*`okta.outcome.result`*:: + -- -type: keyword +The result of the outcome. Must be one of: SUCCESS, FAILURE, SKIPPED, ALLOW, DENY, CHALLENGE, UNKNOWN. --- -*`rsa.misc.app_id`*:: -+ --- type: keyword -- -*`rsa.misc.audit`*:: +*`okta.target`*:: + -- -type: keyword +The list of targets. --- -*`rsa.misc.audit_object`*:: -+ --- -type: keyword +type: flattened -- -*`rsa.misc.auditdata`*:: -+ --- -type: keyword +[float] +=== transaction --- +Fields that let you store information about related transaction. -*`rsa.misc.benchmark`*:: -+ --- -type: keyword --- -*`rsa.misc.bypass`*:: +*`okta.transaction.id`*:: + -- -type: keyword +Identifier of the transaction. --- -*`rsa.misc.cache`*:: -+ --- type: keyword -- -*`rsa.misc.cache_hit`*:: +*`okta.transaction.type`*:: + -- -type: keyword +The type of transaction. Must be one of "WEB", "JOB". --- -*`rsa.misc.cefversion`*:: -+ --- type: keyword -- -*`rsa.misc.cfg_attr`*:: -+ --- -type: keyword +[float] +=== debug_context --- +Fields that let you store information about the debug context. -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword --- -*`rsa.misc.cfg_path`*:: -+ --- -type: keyword +[float] +=== debug_data --- +The debug data. -*`rsa.misc.changes`*:: -+ --- -type: keyword --- -*`rsa.misc.client_ip`*:: +*`okta.debug_context.debug_data.device_fingerprint`*:: + -- +The fingerprint of the device. + + type: keyword -- -*`rsa.misc.clustermembers`*:: +*`okta.debug_context.debug_data.factor`*:: + -- +The factor used for authentication. + + type: keyword -- -*`rsa.misc.cn_acttimeout`*:: +*`okta.debug_context.debug_data.request_id`*:: + -- +The identifier of the request. + + type: keyword -- -*`rsa.misc.cn_asn_src`*:: +*`okta.debug_context.debug_data.request_uri`*:: + -- +The request URI. + + type: keyword -- -*`rsa.misc.cn_bgpv4nxthop`*:: +*`okta.debug_context.debug_data.threat_suspected`*:: + -- +Threat suspected. + + type: keyword -- -*`rsa.misc.cn_ctr_dst_code`*:: +*`okta.debug_context.debug_data.risk_behaviors`*:: + -- +The set of behaviors that contribute to a risk assessment. + + type: keyword -- -*`rsa.misc.cn_dst_tos`*:: +*`okta.debug_context.debug_data.risk_level`*:: + -- +The risk level assigned to the sign in attempt. + + type: keyword -- -*`rsa.misc.cn_dst_vlan`*:: +*`okta.debug_context.debug_data.risk_reasons`*:: + -- +The reasons for the risk. + + type: keyword -- -*`rsa.misc.cn_engine_id`*:: +*`okta.debug_context.debug_data.url`*:: + -- +The URL. + + type: keyword -- -*`rsa.misc.cn_engine_type`*:: +*`okta.debug_context.debug_data.flattened`*:: + -- -type: keyword +The complete debug_data object. + + +type: flattened -- -*`rsa.misc.cn_f_switch`*:: +[float] +=== suspicious_activity + +The suspicious activity fields from the debug data. + + + +*`okta.debug_context.debug_data.suspicious_activity.browser`*:: + -- +The browser used. + + type: keyword -- -*`rsa.misc.cn_flowsampid`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_city`*:: + -- +The city where the suspicious activity took place. + + type: keyword -- -*`rsa.misc.cn_flowsampintv`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_country`*:: + -- +The country where the suspicious activity took place. + + type: keyword -- -*`rsa.misc.cn_flowsampmode`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_id`*:: + -- +The event ID. + + type: keyword -- -*`rsa.misc.cn_inacttimeout`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_ip`*:: + -- -type: keyword +The IP of the suspicious event. + + +type: ip -- -*`rsa.misc.cn_inpermbyts`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_latitude`*:: + -- -type: keyword +The latitude where the suspicious activity took place. + + +type: float -- -*`rsa.misc.cn_inpermpckts`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_longitude`*:: + -- -type: keyword +The longitude where the suspicious activity took place. + + +type: float -- -*`rsa.misc.cn_invalid`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_state`*:: + -- +The state where the suspicious activity took place. + + type: keyword -- -*`rsa.misc.cn_ip_proto_ver`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_transaction_id`*:: + -- +The event transaction ID. + + type: keyword -- -*`rsa.misc.cn_ipv4_ident`*:: +*`okta.debug_context.debug_data.suspicious_activity.event_type`*:: + -- +The event type. + + type: keyword -- -*`rsa.misc.cn_l_switch`*:: +*`okta.debug_context.debug_data.suspicious_activity.os`*:: + -- +The OS of the system from where the suspicious activity occured. + + type: keyword -- -*`rsa.misc.cn_log_did`*:: +*`okta.debug_context.debug_data.suspicious_activity.timestamp`*:: + -- -type: keyword +The timestamp of when the activity occurred. + + +type: date -- -*`rsa.misc.cn_log_rid`*:: +[float] +=== authentication_context + +Fields that let you store information about authentication context. + + + +*`okta.authentication_context.authentication_provider`*:: + -- +The information about the authentication provider. Must be one of OKTA_AUTHENTICATION_PROVIDER, ACTIVE_DIRECTORY, LDAP, FEDERATION, SOCIAL, FACTOR_PROVIDER. + + type: keyword -- -*`rsa.misc.cn_max_ttl`*:: +*`okta.authentication_context.authentication_step`*:: + -- -type: keyword +The authentication step. + + +type: integer -- -*`rsa.misc.cn_maxpcktlen`*:: +*`okta.authentication_context.credential_provider`*:: + -- +The information about credential provider. Must be one of OKTA_CREDENTIAL_PROVIDER, RSA, SYMANTEC, GOOGLE, DUO, YUBIKEY. + + type: keyword -- -*`rsa.misc.cn_min_ttl`*:: +*`okta.authentication_context.credential_type`*:: + -- +The information about credential type. Must be one of OTP, SMS, PASSWORD, ASSERTION, IWA, EMAIL, OAUTH2, JWT, CERTIFICATE, PRE_SHARED_SYMMETRIC_KEY, OKTA_CLIENT_SESSION, DEVICE_UDID. + + type: keyword -- -*`rsa.misc.cn_minpcktlen`*:: +*`okta.authentication_context.issuer`*:: + -- -type: keyword +The information about the issuer. + + +type: array -- -*`rsa.misc.cn_mpls_lbl_1`*:: +*`okta.authentication_context.external_session_id`*:: + -- +The session identifer of the external session if any. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_10`*:: +*`okta.authentication_context.interface`*:: + -- +The interface used. e.g., Outlook, Office365, wsTrust + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_2`*:: +[float] +=== security_context + +Fields that let you store information about security context. + + + +[float] +=== as + +The autonomous system. + + + +*`okta.security_context.as.number`*:: + -- -type: keyword +The AS number. + + +type: integer -- -*`rsa.misc.cn_mpls_lbl_3`*:: +[float] +=== organization + +The organization that owns the AS number. + + + +*`okta.security_context.as.organization.name`*:: + -- +The organization name. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_4`*:: +*`okta.security_context.isp`*:: + -- +The Internet Service Provider. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_5`*:: +*`okta.security_context.domain`*:: + -- +The domain name. + + type: keyword -- -*`rsa.misc.cn_mpls_lbl_6`*:: +*`okta.security_context.is_proxy`*:: + -- -type: keyword +Whether it is a proxy or not. + + +type: boolean -- -*`rsa.misc.cn_mpls_lbl_7`*:: +[float] +=== request + +Fields that let you store information about the request, in the form of list of ip_chain. + + + +*`okta.request.ip_chain`*:: + -- -type: keyword +List of ip_chain objects. + + +type: flattened -- -*`rsa.misc.cn_mpls_lbl_8`*:: +[[exported-fields-oracle]] +== Oracle fields + +Oracle Module + + + +[float] +=== oracle + +Fields from Oracle logs. + + + +[float] +=== database_audit + +Module for parsing Oracle Database audit logs + + + +*`oracle.database_audit.priv_used`*:: + -- -type: keyword +System privilege used to execute the action. + + +type: integer -- -*`rsa.misc.cn_mpls_lbl_9`*:: +*`oracle.database_audit.logoff_pread`*:: + -- -type: keyword +Physical reads for the session. + + +type: integer -- -*`rsa.misc.cn_mplstoplabel`*:: +*`oracle.database_audit.logoff_lread`*:: + -- -type: keyword +Logical reads for the session. + + +type: integer -- -*`rsa.misc.cn_mplstoplabip`*:: +*`oracle.database_audit.logoff_lwrite`*:: + -- -type: keyword +Logical writes for the session. + + +type: integer -- -*`rsa.misc.cn_mul_dst_byt`*:: +*`oracle.database_audit.logoff_dead`*:: + -- -type: keyword +Deadlocks detected during the session. --- -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_muligmptype`*:: +*`oracle.database_audit.sessioncpu`*:: + -- -type: keyword +Amount of CPU time used by each Oracle session. --- -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_sampint`*:: +*`oracle.database_audit.returncode`*:: + -- -type: keyword +Oracle error code generated by the action. --- -*`rsa.misc.cn_seqctr`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_spackets`*:: +*`oracle.database_audit.statement`*:: + -- -type: keyword +nth statement in the user session. --- -*`rsa.misc.cn_src_tos`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_src_vlan`*:: +*`oracle.database_audit.userid`*:: + -- -type: keyword +Name of the user whose actions were audited. --- -*`rsa.misc.cn_sysuptime`*:: -+ --- type: keyword -- -*`rsa.misc.cn_template_id`*:: +*`oracle.database_audit.entryid`*:: + -- -type: keyword +Numeric ID for each audit trail entry in the session. The entry ID is an index of a session's audit entries that starts at 1 and increases to the number of entries that are written. --- -*`rsa.misc.cn_totbytsexp`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_totflowexp`*:: +*`oracle.database_audit.comment_text`*:: + -- -type: keyword +Text comment on the audit trail entry, providing more information about the statement audited. --- -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword +type: text -- -*`rsa.misc.cn_unixnanosecs`*:: +*`oracle.database_audit.os_userid`*:: + -- -type: keyword +Operating system login username of the user whose actions were audited. --- -*`rsa.misc.cn_v6flowlabel`*:: -+ --- type: keyword -- -*`rsa.misc.cn_v6optheaders`*:: +*`oracle.database_audit.terminal`*:: + -- -type: keyword +Identifier of the user's terminal. --- -*`rsa.misc.comp_class`*:: -+ --- -type: keyword +type: text -- -*`rsa.misc.comp_name`*:: +*`oracle.database_audit.status`*:: + -- -type: keyword +Database Audit Status. --- -*`rsa.misc.comp_rbytes`*:: -+ --- type: keyword -- -*`rsa.misc.comp_sbytes`*:: +*`oracle.database_audit.session_id`*:: + -- -type: keyword +Indicates the audit session ID number. --- -*`rsa.misc.cpu_data`*:: -+ --- type: keyword -- -*`rsa.misc.criticality`*:: +*`oracle.database_audit.client.terminal`*:: + -- -type: keyword +If available, the client terminal type, for example "pty". --- -*`rsa.misc.cs_agency_dst`*:: -+ --- type: keyword -- -*`rsa.misc.cs_analyzedby`*:: +*`oracle.database_audit.client.address`*:: + -- -type: keyword +The IP Address or Domain used by the client. --- -*`rsa.misc.cs_av_other`*:: -+ --- type: keyword -- -*`rsa.misc.cs_av_primary`*:: +*`oracle.database_audit.client.user`*:: + -- -type: keyword +The user running the client or connection to the database. --- -*`rsa.misc.cs_av_secondary`*:: -+ --- type: keyword -- -*`rsa.misc.cs_bgpv6nxthop`*:: +*`oracle.database_audit.database.user`*:: + -- -type: keyword +The database user used to authenticate. --- -*`rsa.misc.cs_bit9status`*:: -+ --- type: keyword -- -*`rsa.misc.cs_context`*:: +*`oracle.database_audit.privilege`*:: + -- -type: keyword +The privilege group related to the database user. --- -*`rsa.misc.cs_control`*:: -+ --- type: keyword -- -*`rsa.misc.cs_data`*:: +*`oracle.database_audit.entry.id`*:: + -- -type: keyword +Indicates the current audit entry number, assigned to each audit trail record. The audit entry.id sequence number is shared between fine-grained audit records and regular audit records. --- -*`rsa.misc.cs_datecret`*:: -+ --- type: keyword -- -*`rsa.misc.cs_dst_tld`*:: +*`oracle.database_audit.database.host`*:: + -- -type: keyword +Client host machine name. --- -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- type: keyword -- -*`rsa.misc.cs_eth_src_ven`*:: +*`oracle.database_audit.action`*:: + -- -type: keyword +The action performed during the audit event. This could for example be the raw query. --- -*`rsa.misc.cs_event_uuid`*:: -+ --- type: keyword -- -*`rsa.misc.cs_filetype`*:: +*`oracle.database_audit.action_number`*:: + -- -type: keyword +Action is a numeric value representing the action the user performed. The corresponding name of the action type is in the AUDIT_ACTIONS table. For example, action 100 refers to LOGON. --- -*`rsa.misc.cs_fld`*:: -+ --- type: keyword -- -*`rsa.misc.cs_if_desc`*:: +*`oracle.database_audit.database.id`*:: + -- -type: keyword +Database identifier calculated when the database is created. It corresponds to the DBID column of the V$DATABASE data dictionary view. --- -*`rsa.misc.cs_if_name`*:: -+ --- type: keyword -- -*`rsa.misc.cs_ip_next_hop`*:: +*`oracle.database_audit.length`*:: + -- -type: keyword +Refers to the total number of bytes used in this audit record. This number includes the trailing newline bytes (\n), if any, at the end of the audit record. --- -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.cs_ipv4srcpre`*:: -+ --- -type: keyword +[[exported-fields-osquery]] +== Osquery fields --- +Fields exported by the `osquery` module -*`rsa.misc.cs_lifetime`*:: -+ --- -type: keyword --- -*`rsa.misc.cs_log_medium`*:: -+ --- -type: keyword +[float] +=== osquery --- -*`rsa.misc.cs_loginname`*:: -+ --- -type: keyword --- -*`rsa.misc.cs_modulescore`*:: -+ --- -type: keyword +[float] +=== result --- +Common fields exported by the result metricset. -*`rsa.misc.cs_modulesign`*:: -+ --- -type: keyword --- -*`rsa.misc.cs_opswatresult`*:: +*`osquery.result.name`*:: + -- -type: keyword +The name of the query that generated this event. --- -*`rsa.misc.cs_payload`*:: -+ --- type: keyword -- -*`rsa.misc.cs_registrant`*:: +*`osquery.result.action`*:: + -- -type: keyword +For incremental data, marks whether the entry was added or removed. It can be one of "added", "removed", or "snapshot". --- -*`rsa.misc.cs_registrar`*:: -+ --- type: keyword -- -*`rsa.misc.cs_represult`*:: +*`osquery.result.host_identifier`*:: + -- -type: keyword +The identifier for the host on which the osquery agent is running. Normally the hostname. --- -*`rsa.misc.cs_rpayload`*:: -+ --- type: keyword -- -*`rsa.misc.cs_sampler_name`*:: +*`osquery.result.unix_time`*:: + -- -type: keyword +Unix timestamp of the event, in seconds since the epoch. Used for computing the `@timestamp` column. --- -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.cs_streams`*:: +*`osquery.result.calendar_time`*:: + -- -type: keyword +String representation of the collection time, as formatted by osquery. --- -*`rsa.misc.cs_targetmodule`*:: -+ --- type: keyword -- -*`rsa.misc.cs_v6nxthop`*:: -+ --- -type: keyword +[[exported-fields-panw]] +== panw fields --- +Module for Palo Alto Networks (PAN-OS) -*`rsa.misc.cs_whois_server`*:: -+ --- -type: keyword --- -*`rsa.misc.cs_yararesult`*:: -+ --- -type: keyword +[float] +=== panw --- +Fields from the panw module. -*`rsa.misc.description`*:: -+ --- -type: keyword --- -*`rsa.misc.devvendor`*:: -+ --- -type: keyword +[float] +=== panos --- +Fields for the Palo Alto Networks PAN-OS logs. -*`rsa.misc.distance`*:: -+ --- -type: keyword --- -*`rsa.misc.dstburb`*:: +*`panw.panos.ruleset`*:: + -- -type: keyword +Name of the rule that matched this session. --- -*`rsa.misc.edomain`*:: -+ --- type: keyword -- -*`rsa.misc.edomaub`*:: -+ --- -type: keyword +[float] +=== source --- +Fields to extend the top-level source object. -*`rsa.misc.euid`*:: -+ --- -type: keyword --- -*`rsa.misc.facility`*:: +*`panw.panos.source.zone`*:: + -- -type: keyword +Source zone for this session. --- -*`rsa.misc.finterface`*:: -+ --- type: keyword -- -*`rsa.misc.flags`*:: +*`panw.panos.source.interface`*:: + -- -type: keyword +Source interface for this session. --- -*`rsa.misc.gaddr`*:: -+ --- type: keyword -- -*`rsa.misc.id3`*:: -+ --- -type: keyword +[float] +=== nat --- +Post-NAT source address, if source NAT is performed. -*`rsa.misc.im_buddyname`*:: -+ --- -type: keyword --- -*`rsa.misc.im_croomid`*:: +*`panw.panos.source.nat.ip`*:: + -- -type: keyword +Post-NAT source IP. --- -*`rsa.misc.im_croomtype`*:: -+ --- -type: keyword +type: ip -- -*`rsa.misc.im_members`*:: +*`panw.panos.source.nat.port`*:: + -- -type: keyword +Post-NAT source port. --- -*`rsa.misc.im_username`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.ipkt`*:: -+ --- -type: keyword +[float] +=== destination --- +Fields to extend the top-level destination object. -*`rsa.misc.ipscat`*:: -+ --- -type: keyword --- -*`rsa.misc.ipspri`*:: +*`panw.panos.destination.zone`*:: + -- -type: keyword +Destination zone for this session. --- -*`rsa.misc.latitude`*:: -+ --- type: keyword -- -*`rsa.misc.linenum`*:: +*`panw.panos.destination.interface`*:: + -- -type: keyword +Destination interface for this session. --- -*`rsa.misc.list_name`*:: -+ --- type: keyword -- -*`rsa.misc.load_data`*:: -+ --- -type: keyword +[float] +=== nat --- +Post-NAT destination address, if destination NAT is performed. -*`rsa.misc.location_floor`*:: -+ --- -type: keyword --- -*`rsa.misc.location_mark`*:: +*`panw.panos.destination.nat.ip`*:: + -- -type: keyword +Post-NAT destination IP. --- -*`rsa.misc.log_id`*:: -+ --- -type: keyword +type: ip -- -*`rsa.misc.log_type`*:: +*`panw.panos.destination.nat.port`*:: + -- -type: keyword +Post-NAT destination port. --- -*`rsa.misc.logid`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.logip`*:: +*`panw.panos.endreason`*:: + -- -type: keyword +The reason a session terminated. --- -*`rsa.misc.logname`*:: -+ --- type: keyword -- -*`rsa.misc.longitude`*:: -+ --- -type: keyword +[float] +=== network --- +Fields to extend the top-level network object. -*`rsa.misc.lport`*:: -+ --- -type: keyword --- -*`rsa.misc.mbug_data`*:: +*`panw.panos.network.pcap_id`*:: + -- -type: keyword +Packet capture ID for a threat. --- -*`rsa.misc.misc_name`*:: -+ --- type: keyword -- -*`rsa.misc.msg_type`*:: + +*`panw.panos.network.nat.community_id`*:: + -- -type: keyword +Community ID flow-hash for the NAT 5-tuple. --- -*`rsa.misc.msgid`*:: -+ --- type: keyword -- -*`rsa.misc.netsessid`*:: -+ --- -type: keyword +[float] +=== file --- +Fields to extend the top-level file object. -*`rsa.misc.num`*:: -+ --- -type: keyword --- -*`rsa.misc.number1`*:: +*`panw.panos.file.hash`*:: + -- -type: keyword +Binary hash for a threat file sent to be analyzed by the WildFire service. --- -*`rsa.misc.number2`*:: -+ --- type: keyword -- -*`rsa.misc.nwwn`*:: -+ --- -type: keyword +[float] +=== url --- +Fields to extend the top-level url object. -*`rsa.misc.object`*:: -+ --- -type: keyword --- -*`rsa.misc.operation`*:: +*`panw.panos.url.category`*:: + -- -type: keyword +For threat URLs, it's the URL category. For WildFire, the verdict on the file and is either 'malicious', 'grayware', or 'benign'. --- -*`rsa.misc.opkt`*:: -+ --- type: keyword -- -*`rsa.misc.orig_from`*:: +*`panw.panos.flow_id`*:: + -- -type: keyword +Internal numeric identifier for each session. --- -*`rsa.misc.owner_id`*:: -+ --- type: keyword -- -*`rsa.misc.p_action`*:: +*`panw.panos.sequence_number`*:: + -- -type: keyword +Log entry identifier that is incremented sequentially. Unique for each log type. --- -*`rsa.misc.p_filter`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.p_group_object`*:: +*`panw.panos.threat.resource`*:: + -- -type: keyword +URL or file name for a threat. --- -*`rsa.misc.p_id`*:: -+ --- type: keyword -- -*`rsa.misc.p_msgid1`*:: +*`panw.panos.threat.id`*:: + -- -type: keyword +Palo Alto Networks identifier for the threat. --- -*`rsa.misc.p_msgid2`*:: -+ --- type: keyword -- -*`rsa.misc.p_result1`*:: +*`panw.panos.threat.name`*:: + -- -type: keyword +Palo Alto Networks name for the threat. --- -*`rsa.misc.password_chg`*:: -+ --- type: keyword -- -*`rsa.misc.password_expire`*:: +*`panw.panos.action`*:: + -- +Action taken for the session. + type: keyword -- -*`rsa.misc.permgranted`*:: +*`panw.panos.type`*:: + -- -type: keyword +Specifies the type of the log -- -*`rsa.misc.permwanted`*:: +*`panw.panos.sub_type`*:: + -- -type: keyword +Specifies the sub type of the log -- -*`rsa.misc.pgid`*:: +*`panw.panos.virtual_sys`*:: + -- -type: keyword +Virtual system instance --- -*`rsa.misc.policyUUID`*:: -+ --- type: keyword -- -*`rsa.misc.prog_asp_num`*:: +*`panw.panos.client_os_ver`*:: + -- -type: keyword +The client device’s OS version. --- -*`rsa.misc.program`*:: -+ --- type: keyword -- -*`rsa.misc.real_data`*:: +*`panw.panos.client_os`*:: + -- -type: keyword +The client device’s OS version. --- -*`rsa.misc.rec_asp_device`*:: -+ --- type: keyword -- -*`rsa.misc.rec_asp_num`*:: +*`panw.panos.client_ver`*:: + -- -type: keyword +The client’s GlobalProtect app version. --- -*`rsa.misc.rec_library`*:: -+ --- type: keyword -- -*`rsa.misc.recordnum`*:: +*`panw.panos.stage`*:: + -- -type: keyword +A string showing the stage of the connection --- -*`rsa.misc.ruid`*:: -+ --- type: keyword +example: before-login + -- -*`rsa.misc.sburb`*:: +*`panw.panos.actionflags`*:: + -- -type: keyword +A bit field indicating if the log was forwarded to Panorama. --- -*`rsa.misc.sdomain_fld`*:: -+ --- type: keyword -- -*`rsa.misc.sec`*:: +*`panw.panos.error`*:: + -- -type: keyword +A string showing that error that has occurred in any event. --- -*`rsa.misc.sensorname`*:: -+ --- type: keyword -- -*`rsa.misc.seqnum`*:: +*`panw.panos.error_code`*:: + -- -type: keyword +An integer associated with any errors that occurred. + + +type: integer -- -*`rsa.misc.session`*:: +*`panw.panos.repeatcnt`*:: + -- -type: keyword +The number of sessions with the same source IP address, destination IP address, application, and subtype that GlobalProtect has detected within the last five seconds.An integer associated with any errors that occurred. + + +type: integer -- -*`rsa.misc.sessiontype`*:: +*`panw.panos.serial_number`*:: + -- -type: keyword +The serial number of the user’s machine or device. --- -*`rsa.misc.sigUUID`*:: -+ --- type: keyword -- -*`rsa.misc.spi`*:: +*`panw.panos.auth_method`*:: + -- +A string showing the authentication type + + type: keyword +example: LDAP + -- -*`rsa.misc.srcburb`*:: +*`panw.panos.datasource`*:: + -- +Source from which mapping information is collected. + + type: keyword -- -*`rsa.misc.srcdom`*:: +*`panw.panos.datasourcetype`*:: + -- +Mechanism used to identify the IP/User mappings within a data source. + + type: keyword -- -*`rsa.misc.srcservice`*:: +*`panw.panos.datasourcename`*:: + -- +User-ID source that sends the IP (Port)-User Mapping. + + type: keyword -- -*`rsa.misc.state`*:: +*`panw.panos.factorno`*:: + -- -type: keyword +Indicates the use of primary authentication (1) or additional factors (2, 3). + + +type: integer -- -*`rsa.misc.status1`*:: +*`panw.panos.factortype`*:: + -- +Vendor used to authenticate a user when Multi Factor authentication is present. + + type: keyword -- -*`rsa.misc.svcno`*:: +*`panw.panos.factorcompletiontime`*:: + -- -type: keyword +Time the authentication was completed. + + +type: date -- -*`rsa.misc.system`*:: +*`panw.panos.ugflags`*:: + -- +Displays whether the user group that was found during user group mapping. Supported values are: +User Group Found—Indicates whether the user could be mapped to a group. +Duplicate User—Indicates whether duplicate users were found in a user group. Displays N/A if no user group is found. + + type: keyword -- -*`rsa.misc.tbdstr1`*:: +[float] +=== device_group_hierarchy + +A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. + + + +*`panw.panos.device_group_hierarchy.level_1`*:: + -- +A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. + + type: keyword -- -*`rsa.misc.tgtdom`*:: +*`panw.panos.device_group_hierarchy.level_2`*:: + -- +A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. + + type: keyword -- -*`rsa.misc.tgtdomain`*:: +*`panw.panos.device_group_hierarchy.level_3`*:: + -- +A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. + + type: keyword -- -*`rsa.misc.threshold`*:: +*`panw.panos.device_group_hierarchy.level_4`*:: + -- +A sequence of identification numbers that indicate the device group’s location within a device group hierarchy. The firewall (or virtual system) generating the log includes the identification number of each ancestor in its device group hierarchy. The shared device group (level 0) is not included in this structure. If the log values are 12, 34, 45, 0, it means that the log was generated by a firewall (or virtual system) that belongs to device group 45, and its ancestors are 34, and 12. + + type: keyword -- -*`rsa.misc.type1`*:: +*`panw.panos.timeout`*:: + -- -type: keyword +Timeout after which the IP/User Mappings are cleared. + + +type: integer -- -*`rsa.misc.udb_class`*:: +*`panw.panos.vsys_id`*:: + -- +A unique identifier for a virtual system on a Palo Alto Networks firewall. + + type: keyword -- -*`rsa.misc.url_fld`*:: +*`panw.panos.vsys_name`*:: + -- +The name of the virtual system associated with the session; only valid on firewalls enabled for multiple virtual systems. + + type: keyword -- -*`rsa.misc.user_div`*:: +*`panw.panos.description`*:: + -- +Additional information for any event that has occurred. + + type: keyword -- -*`rsa.misc.userid`*:: +*`panw.panos.tunnel_type`*:: + -- +The type of tunnel (either SSLVPN or IPSec). + + type: keyword -- -*`rsa.misc.username_fld`*:: +*`panw.panos.connect_method`*:: + -- +A string showing the how the GlobalProtect app connects to Gateway + + type: keyword -- -*`rsa.misc.utcstamp`*:: +*`panw.panos.matchname`*:: + -- +Name of the HIP object or profile. + + type: keyword -- -*`rsa.misc.v_instafname`*:: +*`panw.panos.matchtype`*:: + -- +Whether the hip field represents a HIP object or a HIP profile. + + type: keyword -- -*`rsa.misc.virt_data`*:: +*`panw.panos.priority`*:: + -- +The priority order of the gateway that is based on highest (1), high (2), medium (3), low (4), or lowest (5) to which the GlobalProtect app can connect. + + type: keyword -- -*`rsa.misc.vpnid`*:: +*`panw.panos.response_time`*:: + -- +The SSL response time of the selected gateway that is measured in milliseconds on the endpoint during tunnel setup. + + type: keyword -- -*`rsa.misc.autorun_type`*:: +*`panw.panos.attempted_gateways`*:: + -- -This is used to capture Auto Run type +The fields that are collected for each gateway connection attempt with the gateway name, SSL response time, and priority + type: keyword -- -*`rsa.misc.cc_number`*:: +*`panw.panos.gateway`*:: + -- -Valid Credit Card Numbers only +The name of the gateway that is specified on the portal configuration. -type: long + +type: keyword -- -*`rsa.misc.content`*:: +*`panw.panos.selection_type`*:: + -- -This key captures the content type from protocol headers +The connection method that is selected to connect to the gateway. + type: keyword -- -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only +[[exported-fields-pensando]] +== Pensando fields -type: long +pensando Module --- -*`rsa.misc.found`*:: -+ --- -This is used to capture the results of regex match -type: keyword +[float] +=== pensando --- +Fields from Pensando logs. -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers -type: keyword --- +[float] +=== dfw -*`rsa.misc.lifetime`*:: -+ --- -This key is used to capture the session lifetime in seconds. +Fields for Pensando DFW -type: long --- -*`rsa.misc.link`*:: +*`pensando.dfw.action`*:: + -- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Action on the flow. + type: keyword -- -*`rsa.misc.match`*:: +*`pensando.dfw.app_id`*:: + -- -This key is for regex match name from search.ini +Application ID -type: keyword + +type: integer -- -*`rsa.misc.param_dst`*:: +*`pensando.dfw.destination_address`*:: + -- -This key captures the command line/launch argument of the target process or file +Address of destination. + type: keyword -- -*`rsa.misc.param_src`*:: +*`pensando.dfw.destination_port`*:: + -- -This key captures source parameter +Port of destination. -type: keyword + +type: integer -- -*`rsa.misc.search_text`*:: +*`pensando.dfw.direction`*:: + -- -This key captures the Search Text used +Direction of the flow + type: keyword -- -*`rsa.misc.sig_name`*:: +*`pensando.dfw.protocol`*:: + -- -This key is used to capture the Signature Name only. +Protocol of the flow + type: keyword -- -*`rsa.misc.snmp_value`*:: +*`pensando.dfw.rule_id`*:: + -- -SNMP set request value +Rule ID that was matched. + type: keyword -- -*`rsa.misc.streams`*:: +*`pensando.dfw.session_id`*:: + -- -This key captures number of streams in session +Session ID of the flow -type: long --- +type: integer +-- -*`rsa.db.index`*:: +*`pensando.dfw.session_state`*:: + -- -This key captures IndexID of the index. +Session state of the flow. + type: keyword -- -*`rsa.db.instance`*:: +*`pensando.dfw.source_address`*:: + -- -This key is used to capture the database server instance name +Source address of the flow. + type: keyword -- -*`rsa.db.database`*:: +*`pensando.dfw.source_port`*:: + -- -This key is used to capture the name of a database or an instance as seen in a session +Source port of the flow. -type: keyword + +type: integer -- -*`rsa.db.transact_id`*:: +*`pensando.dfw.timestamp`*:: + -- -This key captures the SQL transantion ID of the current session +Timestamp of the log. -type: keyword --- +type: date -*`rsa.db.permissions`*:: -+ -- -This key captures permission or privilege level assigned to a resource. -type: keyword +[[exported-fields-postgresql]] +== PostgreSQL fields --- +Module for parsing the PostgreSQL log files. -*`rsa.db.table_name`*:: -+ --- -This key is used to capture the table name -type: keyword --- +[float] +=== postgresql -*`rsa.db.db_id`*:: -+ --- -This key is used to capture the unique identifier for a database +Fields from PostgreSQL logs. -type: keyword --- -*`rsa.db.db_pid`*:: +[float] +=== log + +Fields from the PostgreSQL log files. + + + +*`postgresql.log.timestamp`*:: + -- -This key captures the process id of a connection with database server -type: long +deprecated:[7.3.0] + +The timestamp from the log line. + -- -*`rsa.db.lread`*:: +*`postgresql.log.core_id`*:: + -- -This key is used for the number of logical reads -type: long +deprecated:[8.0.0] + +Core id. (deprecated, there is no core_id in PostgreSQL logs, this is actually session_line_number). + + +type: alias + +alias to: postgresql.log.session_line_number -- -*`rsa.db.lwrite`*:: +*`postgresql.log.client_addr`*:: + -- -This key is used for the number of logical writes +Host where the connection originated from. -type: long + +example: 127.0.0.1 -- -*`rsa.db.pread`*:: +*`postgresql.log.client_port`*:: + -- -This key is used for the number of physical writes +Port where the connection originated from. -type: long --- +example: 59700 +-- -*`rsa.network.alias_host`*:: +*`postgresql.log.session_id`*:: + -- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. +PostgreSQL session. -type: keyword + +example: 5ff1dd98.22 -- -*`rsa.network.domain`*:: +*`postgresql.log.session_line_number`*:: + -- -type: keyword +Line number inside a session. (%l in `log_line_prefix`). + + +type: long -- -*`rsa.network.host_dst`*:: +*`postgresql.log.database`*:: + -- -This key should only be used when it’s a Destination Hostname +Name of database. -type: keyword + +example: postgres -- -*`rsa.network.network_service`*:: +*`postgresql.log.query`*:: + -- -This is used to capture layer 7 protocols/service names +Query statement. In the case of CSV parse, look at command_tag to get more context. -type: keyword + +example: SELECT * FROM users; -- -*`rsa.network.interface`*:: +*`postgresql.log.query_step`*:: + -- -This key should be used when the source or destination context of an interface is not clear +Statement step when using extended query protocol (one of statement, parse, bind or execute). -type: keyword + +example: parse -- -*`rsa.network.network_port`*:: +*`postgresql.log.query_name`*:: + -- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) +Name given to a query when using extended query protocol. If it is "", or not present, this field is ignored. -type: long + +example: pdo_stmt_00000001 -- -*`rsa.network.eth_host`*:: +*`postgresql.log.command_tag`*:: + -- -Deprecated, use alias.mac +Type of session's current command. The complete list can be found at: src/include/tcop/cmdtaglist.h -type: keyword + +example: SELECT -- -*`rsa.network.sinterface`*:: +*`postgresql.log.session_start_time`*:: + -- -This key should only be used when it’s a Source Interface +Time when this session started. -type: keyword + +type: date -- -*`rsa.network.dinterface`*:: +*`postgresql.log.virtual_transaction_id`*:: + -- -This key should only be used when it’s a Destination Interface +Backend local transaction id. -type: keyword -- -*`rsa.network.vlan`*:: +*`postgresql.log.transaction_id`*:: + -- -This key should only be used to capture the ID of the Virtual LAN +The id of current transaction. + type: long -- -*`rsa.network.zone_src`*:: +*`postgresql.log.sql_state_code`*:: + -- -This key should only be used when it’s a Source Zone. +State code returned by Postgres (if any). See also https://www.postgresql.org/docs/current/errcodes-appendix.html + type: keyword -- -*`rsa.network.zone`*:: +*`postgresql.log.detail`*:: + -- -This key should be used when the source or destination context of a Zone is not clear +More information about the message, parameters in case of a parametrized query. e.g. 'Role \"user\" does not exist.', 'parameters: $1 = 42', etc. -type: keyword -- -*`rsa.network.zone_dst`*:: +*`postgresql.log.hint`*:: + -- -This key should only be used when it’s a Destination Zone. +A possible solution to solve an error. -type: keyword -- -*`rsa.network.gateway`*:: +*`postgresql.log.internal_query`*:: + -- -This key is used to capture the IP Address of the gateway +Internal query that led to the error (if any). -type: keyword -- -*`rsa.network.icmp_type`*:: +*`postgresql.log.internal_query_pos`*:: + -- -This key is used to capture the ICMP type only +Character count of the internal query (if any). + type: long -- -*`rsa.network.mask`*:: +*`postgresql.log.context`*:: + -- -This key is used to capture the device network IPmask. +Error context. -type: keyword -- -*`rsa.network.icmp_code`*:: +*`postgresql.log.query_pos`*:: + -- -This key is used to capture the ICMP code only +Character count of the error position (if any). + type: long -- -*`rsa.network.protocol_detail`*:: +*`postgresql.log.location`*:: + -- -This key should be used to capture additional protocol information +Location of the error in the PostgreSQL source code (if log_error_verbosity is set to verbose). -type: keyword -- -*`rsa.network.dmask`*:: +*`postgresql.log.application_name`*:: + -- -This key is used for Destionation Device network mask +Name of the application of this event. It is defined by the client. -type: keyword -- -*`rsa.network.port`*:: +*`postgresql.log.backend_type`*:: + -- -This key should only be used to capture a Network Port when the directionality is not clear +Type of backend of this event. Possible types are autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, startup, walreceiver, walsender and walwriter. In addition, background workers registered by extensions may have additional types. -type: long + +example: client backend -- -*`rsa.network.smask`*:: +*`postgresql.log.error.code`*:: + -- -This key is used for capturing source Network Mask -type: keyword +deprecated:[8.0.0] --- +Error code returned by Postgres (if any). Deprecated: errors can have letters. Use sql_state_code instead. -*`rsa.network.netname`*:: -+ --- -This key is used to capture the network name associated with an IP range. This is configured by the end user. -type: keyword +type: alias + +alias to: postgresql.log.sql_state_code -- -*`rsa.network.paddr`*:: +*`postgresql.log.timezone`*:: + -- -Deprecated +type: alias -type: ip +alias to: event.timezone -- -*`rsa.network.faddr`*:: +*`postgresql.log.user`*:: + -- -type: keyword +type: alias + +alias to: user.name -- -*`rsa.network.lhost`*:: +*`postgresql.log.level`*:: + -- -type: keyword +Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, and PANIC. --- -*`rsa.network.origin`*:: -+ --- -type: keyword +type: alias --- +example: LOG -*`rsa.network.remote_domain_id`*:: -+ --- -type: keyword +alias to: log.level -- -*`rsa.network.addr`*:: +*`postgresql.log.message`*:: + -- -type: keyword +type: alias --- +alias to: message -*`rsa.network.dns_a_record`*:: -+ -- -type: keyword --- +[[exported-fields-process]] +== Process fields -*`rsa.network.dns_ptr_record`*:: -+ --- -type: keyword +Process metadata fields --- -*`rsa.network.fhost`*:: -+ --- -type: keyword --- -*`rsa.network.fport`*:: +*`process.exe`*:: + -- -type: keyword +type: alias + +alias to: process.executable -- -*`rsa.network.laddr`*:: +[float] +=== owner + +Process owner information. + + +*`process.owner.id`*:: + -- +Unique identifier of the user. + type: keyword -- -*`rsa.network.linterface`*:: +*`process.owner.name`*:: + -- +Short name or login of the user. + type: keyword +example: albert + -- -*`rsa.network.phost`*:: +*`process.owner.name.text`*:: + -- -type: keyword +type: text -- -*`rsa.network.ad_computer_dst`*:: -+ --- -Deprecated, use host.dst +[[exported-fields-rabbitmq]] +== RabbitMQ fields -type: keyword +RabbitMQ Module --- -*`rsa.network.eth_type`*:: -+ --- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only -type: long +[float] +=== rabbitmq --- -*`rsa.network.ip_proto`*:: -+ --- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI -type: long --- +[float] +=== log -*`rsa.network.dns_cname_record`*:: -+ --- -type: keyword +RabbitMQ log files --- -*`rsa.network.dns_id`*:: + +*`rabbitmq.log.pid`*:: + -- +The Erlang process id + type: keyword --- +example: <0.222.0> -*`rsa.network.dns_opcode`*:: -+ -- -type: keyword --- +[[exported-fields-redis]] +== Redis fields -*`rsa.network.dns_resp`*:: -+ --- -type: keyword +Redis Module --- -*`rsa.network.dns_type`*:: -+ --- -type: keyword --- +[float] +=== redis -*`rsa.network.domain1`*:: -+ --- -type: keyword --- -*`rsa.network.host_type`*:: -+ --- -type: keyword --- +[float] +=== log + +Redis log files -*`rsa.network.packet_length`*:: -+ --- -type: keyword --- -*`rsa.network.host_orig`*:: +*`redis.log.role`*:: + -- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. +The role of the Redis instance. Can be one of `master`, `slave`, `child` (for RDF/AOF writing child), or `sentinel`. + type: keyword -- -*`rsa.network.rpayload`*:: +*`redis.log.pid`*:: + -- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. +type: alias -type: keyword +alias to: process.pid -- -*`rsa.network.vlan_name`*:: +*`redis.log.level`*:: + -- -This key should only be used to capture the name of the Virtual LAN +type: alias -type: keyword +alias to: log.level -- - -*`rsa.investigations.ec_activity`*:: +*`redis.log.message`*:: + -- -This key captures the particular event activity(Ex:Logoff) +type: alias -type: keyword +alias to: message -- -*`rsa.investigations.ec_theme`*:: -+ --- -This key captures the Theme of a particular Event(Ex:Authentication) +[float] +=== slowlog + +Slow logs are retrieved from Redis via a network connection. -type: keyword --- -*`rsa.investigations.ec_subject`*:: +*`redis.slowlog.cmd`*:: + -- -This key captures the Subject of a particular Event(Ex:User) +The command executed. + type: keyword -- -*`rsa.investigations.ec_outcome`*:: +*`redis.slowlog.duration.us`*:: + -- -This key captures the outcome of a particular Event(Ex:Success) +How long it took to execute the command in microseconds. -type: keyword + +type: long -- -*`rsa.investigations.event_cat`*:: +*`redis.slowlog.id`*:: + -- -This key captures the Event category number +The ID of the query. + type: long -- -*`rsa.investigations.event_cat_name`*:: +*`redis.slowlog.key`*:: + -- -This key captures the event category name corresponding to the event cat code +The key on which the command was executed. + type: keyword -- -*`rsa.investigations.event_vcat`*:: +*`redis.slowlog.args`*:: + -- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. +The arguments with which the command was called. + type: keyword -- -*`rsa.investigations.analysis_file`*:: -+ --- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file +[[exported-fields-s3]] +== s3 fields -type: keyword +S3 fields from s3 input. --- -*`rsa.investigations.analysis_service`*:: + +*`bucket.name`*:: + -- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service +Name of the S3 bucket that this log retrieved from. + type: keyword -- -*`rsa.investigations.analysis_session`*:: +*`bucket.arn`*:: + -- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session +ARN of the S3 bucket that this log retrieved from. + type: keyword -- -*`rsa.investigations.boc`*:: +*`object.key`*:: + -- -This is used to capture behaviour of compromise +Name of the S3 object that this log retrieved from. + type: keyword -- -*`rsa.investigations.eoc`*:: +*`metadata`*:: + -- -This is used to capture Enablers of Compromise +AWS S3 object metadata values. -type: keyword +type: flattened -- -*`rsa.investigations.inv_category`*:: -+ --- -This used to capture investigation category +[[exported-fields-salesforce]] +== Salesforce fields -type: keyword +Salesforce Module --- -*`rsa.investigations.inv_context`*:: -+ --- -This used to capture investigation context -type: keyword +[float] +=== salesforce + +Fileset for ingesting Salesforce Apex logs. + --- -*`rsa.investigations.ioc`*:: +*`salesforce.access_mode`*:: + -- -This is key capture indicator of compromise +The mode of collecting logs from Salesforce - "rest" or "stream". + type: keyword -- +[float] +=== apex -*`rsa.counters.dclass_c1`*:: -+ --- -This is a generic counter key that should be used with the label dclass.c1.str only +Fileset for ingesting Salesforce Apex logs. -type: long --- -*`rsa.counters.dclass_c2`*:: +*`salesforce.apex.action`*:: + -- -This is a generic counter key that should be used with the label dclass.c2.str only +Action performed by the callout. -type: long + +type: keyword -- -*`rsa.counters.event_counter`*:: +*`salesforce.apex.callout_time`*:: + -- -This is used to capture the number of times an event repeated +Time spent waiting on webservice callouts, in milliseconds. -type: long + +type: keyword -- -*`rsa.counters.dclass_r1`*:: +*`salesforce.apex.class_name`*:: + -- -This is a generic ratio key that should be used with the label dclass.r1.str only +The Apex class name. If the class is part of a managed package, this string includes the package namespace. + type: keyword -- -*`rsa.counters.dclass_c3`*:: +*`salesforce.apex.client_name`*:: + -- -This is a generic counter key that should be used with the label dclass.c3.str only +The name of the client that's using Salesforce services. This field is an optional parameter that can be passed in API calls. If blank, the caller didnt specify a client in the CallOptions header. -type: long + +type: keyword -- -*`rsa.counters.dclass_c1_str`*:: +*`salesforce.apex.cpu_time`*:: + -- -This is a generic counter string key that should be used with the label dclass.c1 only +The CPU time in milliseconds used to complete the request. + type: keyword -- -*`rsa.counters.dclass_c2_str`*:: +*`salesforce.apex.db_blocks`*:: + -- -This is a generic counter string key that should be used with the label dclass.c2 only +Indicates how much activity is occurring in the database. A high value for this field suggests that adding indexes or filters on your queries would benefit performance. + type: keyword -- -*`rsa.counters.dclass_r1_str`*:: +*`salesforce.apex.db_cpu_time`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r1 only +The CPU time in milliseconds to complete the request. Indicates the amount of activity taking place in the database layer during the request. + type: keyword -- -*`rsa.counters.dclass_r2`*:: +*`salesforce.apex.db_total_time`*:: + -- -This is a generic ratio key that should be used with the label dclass.r2.str only +Time (in milliseconds) spent waiting for database processing in aggregate for all operations in the request. Compare this field to CPU_TIME to determine whether performance issues are occurring in the database layer or in your own code. + type: keyword -- -*`rsa.counters.dclass_c3_str`*:: +*`salesforce.apex.entity`*:: + -- -This is a generic counter string key that should be used with the label dclass.c3 only +Name of the external object being accessed. + type: keyword -- -*`rsa.counters.dclass_r3`*:: +*`salesforce.apex.entity_name`*:: + -- -This is a generic ratio key that should be used with the label dclass.r3.str only +The name of the object affected by the trigger. + type: keyword -- -*`rsa.counters.dclass_r2_str`*:: +*`salesforce.apex.entry_point`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r2 only +The entry point for this Apex execution. + type: keyword -- -*`rsa.counters.dclass_r3_str`*:: +*`salesforce.apex.event_type`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r3 only +The type of event. The value is always ApexCallout. + type: keyword -- - -*`rsa.identity.auth_method`*:: +*`salesforce.apex.execute_ms`*:: + -- -This key is used to capture authentication methods used only +How long it took (in milliseconds) for Salesforce to prepare and execute the query. Available in API version 42.0 and later. + type: keyword -- -*`rsa.identity.user_role`*:: +*`salesforce.apex.fetch_ms`*:: + -- -This key is used to capture the Role of a user only +How long it took (in milliseconds) to retrieve the query results from the external system. Available in API version 42.0 and later. + type: keyword -- -*`rsa.identity.dn`*:: +*`salesforce.apex.filter`*:: + -- -X.500 (LDAP) Distinguished Name +Field expressions to filter which rows to return. Corresponds to WHERE in SOQL queries. + type: keyword -- -*`rsa.identity.logon_type`*:: +*`salesforce.apex.is_long_running_request`*:: + -- -This key is used to capture the type of logon method used. +Indicates whether the request is counted against your org's concurrent long-running Apex request limit (true) or not (false). + type: keyword -- -*`rsa.identity.profile`*:: +*`salesforce.apex.limit`*:: + -- -This key is used to capture the user profile +Maximum number of rows to return for a query. Corresponds to LIMIT in SOQL queries. + type: keyword -- -*`rsa.identity.accesses`*:: +*`salesforce.apex.limit_usage_percent`*:: + -- -This key is used to capture actual privileges used in accessing an object +The percentage of Apex SOAP calls that were made against the organization's limit. + type: keyword -- -*`rsa.identity.realm`*:: +*`salesforce.apex.login_key`*:: + -- -Radius realm or similar grouping of accounts +The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. + type: keyword -- -*`rsa.identity.user_sid_dst`*:: +*`salesforce.apex.media_type`*:: + -- -This key captures Destination User Session ID +The media type of the response. + type: keyword -- -*`rsa.identity.dn_src`*:: +*`salesforce.apex.message`*:: + -- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn +Error or warning message associated with the failed call. + type: keyword -- -*`rsa.identity.org`*:: +*`salesforce.apex.method_name`*:: + -- -This key captures the User organization +The name of the calling Apex method. + type: keyword -- -*`rsa.identity.dn_dst`*:: +*`salesforce.apex.number_fields`*:: + -- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn +The number of fields or columns, where applicable. + type: keyword -- -*`rsa.identity.firstname`*:: +*`salesforce.apex.number_soql_queries`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +The number of SOQL queries that were executed during the event. + type: keyword -- -*`rsa.identity.lastname`*:: +*`salesforce.apex.offset`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +Number of rows to skip when paging through a result set. Corresponds to OFFSET in SOQL queries. + type: keyword -- -*`rsa.identity.user_dept`*:: +*`salesforce.apex.orderby`*:: + -- -User's Department Names only +Field or column to use for sorting query results, and whether to sort the results in ascending (default) or descending order. Corresponds to ORDER BY in SOQL queries. + type: keyword -- -*`rsa.identity.user_sid_src`*:: +*`salesforce.apex.organization_id`*:: + -- -This key captures Source User Session ID +The 15-character ID of the organization. + type: keyword -- -*`rsa.identity.federated_sp`*:: +*`salesforce.apex.query`*:: + -- -This key is the Federated Service Provider. This is the application requesting authentication. +The SOQL query, if one was performed. + type: keyword -- -*`rsa.identity.federated_idp`*:: +*`salesforce.apex.quiddity`*:: + -- -This key is the federated Identity Provider. This is the server providing the authentication. +The type of outer execution associated with this event. + type: keyword -- -*`rsa.identity.logon_type_desc`*:: +*`salesforce.apex.request.id`*:: + -- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. +The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same REQUEST_ID. + type: keyword -- -*`rsa.identity.middlename`*:: +*`salesforce.apex.request.status`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +The status of the request for a page view or user interface action. + type: keyword -- -*`rsa.identity.password`*:: +*`salesforce.apex.rows.total`*:: + -- -This key is for Passwords seen in any session, plain text or encrypted +Total number of records in the result set. The value is always -1 if the custom adapter's DataSource.Provider class doesn't declare the QUERY_TOTAL_SIZE capability. + type: keyword -- -*`rsa.identity.host_role`*:: +*`salesforce.apex.rows.fetched`*:: + -- -This key should only be used to capture the role of a Host Machine +Number of rows fetched by the callout. Available in API version 42.0 and later. + type: keyword -- -*`rsa.identity.ldap`*:: +*`salesforce.apex.rows.processed`*:: + -- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context +The number of rows that were processed in the request. + type: keyword -- -*`rsa.identity.ldap_query`*:: +*`salesforce.apex.run_time`*:: + -- -This key is the Search criteria from an LDAP search +Not used for this event type. Use the TIME field instead. + type: keyword -- -*`rsa.identity.ldap_response`*:: +*`salesforce.apex.select`*:: + -- -This key is to capture Results from an LDAP search +Comma-separated list of fields being queried. Corresponds to SELECT in SOQL queries. + type: keyword -- -*`rsa.identity.owner`*:: +*`salesforce.apex.subqueries`*:: + -- -This is used to capture username the process or service is running as, the author of the task +Reserved for future use. + type: keyword -- -*`rsa.identity.service_account`*:: +*`salesforce.apex.throughput`*:: + -- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage +Number of records retrieved in one second. + type: keyword -- -*`rsa.email.email_dst`*:: +*`salesforce.apex.trigger.id`*:: + -- -This key is used to capture the Destination email address only, when the destination context is not clear use email +The 15-character ID of the trigger that was fired. + type: keyword -- -*`rsa.email.email_src`*:: +*`salesforce.apex.trigger.name`*:: + -- -This key is used to capture the source email address only, when the source context is not clear use email +For triggers coming from managed packages, TRIGGER_NAME includes a namespace prefix separated with a . character. If no namespace prefix is present, the trigger is from an unmanaged trigger. + type: keyword -- -*`rsa.email.subject`*:: +*`salesforce.apex.trigger.type`*:: + -- -This key is used to capture the subject string from an Email only. +The type of this trigger. + type: keyword -- -*`rsa.email.email`*:: +*`salesforce.apex.type`*:: + -- -This key is used to capture a generic email address where the source or destination context is not clear +The type of Apex callout. + type: keyword -- -*`rsa.email.trans_from`*:: +*`salesforce.apex.uri`*:: + -- -Deprecated key defined only in table map. +The URI of the page that's receiving the request. + type: keyword -- -*`rsa.email.trans_to`*:: +*`salesforce.apex.uri_id_derived`*:: + -- -Deprecated key defined only in table map. +The 18-character case-safe ID of the URI of the page that's receiving the request. + type: keyword -- - -*`rsa.file.privilege`*:: +*`salesforce.apex.user_agent`*:: + -- -Deprecated, use permissions +The numeric code for the type of client used to make the request (for example, the browser, application, or API). + type: keyword -- -*`rsa.file.attachment`*:: +*`salesforce.apex.user_id_derived`*:: + -- -This key captures the attachment file name +The 18-character case-safe ID of the user who's using Salesforce services through the UI or the API. + type: keyword -- -*`rsa.file.filesystem`*:: +[float] +=== salesforce.login + +Fileset for ingesting Salesforce Login (Streaming) logs. + + + +*`salesforce.login.application`*:: + -- +The application used to access the org. Possible values include: AppExchange, Browser, Salesforce for iOS, Salesforce Developers API Explorer, N/A + + type: keyword -- -*`rsa.file.binary`*:: +*`salesforce.login.auth_method_reference`*:: + -- -Deprecated key defined only in table map. +The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. + type: keyword -- -*`rsa.file.filename_dst`*:: +*`salesforce.login.auth_service_id`*:: + -- -This is used to capture name of the file targeted by the action +The 18-character ID for an authentication service for a login event. + type: keyword -- -*`rsa.file.filename_src`*:: +*`salesforce.login.client_version`*:: + -- -This is used to capture name of the parent filename, the file which performed the action +The version number of the login client. If no version number is available, “Unknown” is returned. + type: keyword -- -*`rsa.file.filename_tmp`*:: +*`salesforce.login.created_by_id`*:: + -- +Unavailable + + type: keyword -- -*`rsa.file.directory_dst`*:: +*`salesforce.login.evaluation_time`*:: + -- -This key is used to capture the directory of the target process or file +The amount of time it took to evaluate the transaction security policy, in milliseconds. + type: keyword -- -*`rsa.file.directory_src`*:: +*`salesforce.login.login_geo_id`*:: + -- -This key is used to capture the directory of the source process or file +The Salesforce ID of the LoginGeo object associated with the login user’s IP address. + type: keyword -- -*`rsa.file.file_entropy`*:: +*`salesforce.login.login_history_id`*:: + -- -This is used to capture entropy vale of a file +Tracks a user session so you can correlate user activity with a particular login instance. This field is also available on the LoginHistory, AuthSession, and LoginHistory objects, making it easier to trace events back to a user’s original authentication. -type: double + +type: keyword -- -*`rsa.file.file_vendor`*:: +*`salesforce.login.login_type`*:: + -- -This is used to capture Company name of file located in version_info +The type of login used to access the session. + type: keyword -- -*`rsa.file.task_name`*:: +*`salesforce.login.policy_id`*:: + -- -This is used to capture name of the task +The ID of the transaction security policy associated with this event. + type: keyword -- - -*`rsa.web.fqdn`*:: +*`salesforce.login.policy_outcome`*:: + -- -Fully Qualified Domain Names +The result of the transaction policy. + type: keyword -- -*`rsa.web.web_cookie`*:: +*`salesforce.login.related_event_identifier`*:: + -- -This key is used to capture the Web cookies specifically. +This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. + type: keyword -- -*`rsa.web.alias_host`*:: +*`salesforce.login.session_level`*:: + -- +Session-level security controls user access to features that support it, such as connected apps and reporting. Possible values are: HIGH_ASSURANCE, LOW, STANDARD + + type: keyword -- -*`rsa.web.reputation_num`*:: -+ --- -Reputation Number of an entity. Typically used for Web Domains +[float] +=== salesforce.logout + +Fileset for parsing Salesforce Logout (Streaming) logs. -type: double --- -*`rsa.web.web_ref_domain`*:: +*`salesforce.logout.created_by_id`*:: + -- -Web referer's domain +Unavailable + type: keyword -- -*`rsa.web.web_ref_query`*:: +*`salesforce.logout.related_event_identifier`*:: + -- -This key captures Web referer's query portion of the URL +This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. + type: keyword -- -*`rsa.web.remote_domain`*:: +*`salesforce.logout.replay_id`*:: + -- +Represents an ID value that is populated by the system and refers to the position of the event in the event stream. Replay ID values aren’t guaranteed to be contiguous for consecutive events. A subscriber can store a replay ID value and use it on resubscription to retrieve missed events that are within the retention window. + + type: keyword -- -*`rsa.web.web_ref_page`*:: +*`salesforce.logout.schema`*:: + -- -This key captures Web referer's page information +Unavailable + type: keyword -- -*`rsa.web.web_ref_root`*:: -+ --- -Web referer's root URL path +[float] +=== salesforce.setup_audit_trail -type: keyword +Fileset for ingesting Salesforce SetupAuditTrail logs. --- -*`rsa.web.cn_asn_dst`*:: + +*`salesforce.setup_audit_trail.event_type`*:: + -- -type: keyword +Event type --- -*`rsa.web.cn_rpackets`*:: -+ --- type: keyword -- -*`rsa.web.urlpage`*:: +*`salesforce.setup_audit_trail.created_by_context`*:: + -- -type: keyword +The context under which the Setup change was made. For example, if Einstein uses cloud-to-cloud services to make a change in Setup, the value of this field is Einstein. --- -*`rsa.web.urlroot`*:: -+ --- type: keyword -- -*`rsa.web.p_url`*:: +*`salesforce.setup_audit_trail.created_by_id`*:: + -- -type: keyword +Unknown --- -*`rsa.web.p_user_agent`*:: -+ --- type: keyword -- -*`rsa.web.p_web_cookie`*:: +*`salesforce.setup_audit_trail.created_by_issuer`*:: + -- +Reserved for future use. + + type: keyword -- -*`rsa.web.p_web_method`*:: +*`salesforce.setup_audit_trail.delegate_user`*:: + -- +The Login-As user who executed the action in Setup. If a Login-As user didn’t perform the action, this field is blank. This field is available in API version 35.0 and later. + + type: keyword -- -*`rsa.web.p_web_referer`*:: +*`salesforce.setup_audit_trail.display`*:: + -- +The full description of changes made in Setup. For example, if the Action field has a value of PermSetCreate, the Display field has a value like “Created permission set MAD: with user license Salesforce. + + type: keyword -- -*`rsa.web.web_extension_tmp`*:: +*`salesforce.setup_audit_trail.responsible_namespace_prefix`*:: + -- +Unknown + + type: keyword -- -*`rsa.web.web_page`*:: +*`salesforce.setup_audit_trail.section`*:: + -- +The section in the Setup menu where the action occurred. For example, Manage Users or Company Profile. + + type: keyword -- +[[exported-fields-santa]] +== Google Santa fields + +Santa Module -*`rsa.threat.threat_category`*:: -+ --- -This key captures Threat Name/Threat Category/Categorization of alert -type: keyword --- +[float] +=== santa -*`rsa.threat.threat_desc`*:: -+ --- -This key is used to capture the threat description from the session directly or inferred -type: keyword --- -*`rsa.threat.alert`*:: +*`santa.action`*:: + -- -This key is used to capture name of the alert +Action type: keyword +example: EXEC + -- -*`rsa.threat.threat_source`*:: +*`santa.decision`*:: + -- -This key is used to capture source of the threat +Decision that santad took. type: keyword --- +example: ALLOW +-- -*`rsa.crypto.crypto`*:: +*`santa.reason`*:: + -- -This key is used to capture the Encryption Type or Encryption Key only +Reason for the decsision. type: keyword +example: CERT + -- -*`rsa.crypto.cipher_src`*:: +*`santa.mode`*:: + -- -This key is for Source (Client) Cipher +Operating mode of Santa. type: keyword --- +example: M -*`rsa.crypto.cert_subject`*:: -+ -- -This key is used to capture the Certificate organization only -type: keyword +[float] +=== disk --- +Fields for DISKAPPEAR actions. -*`rsa.crypto.peer`*:: + +*`santa.disk.volume`*:: + -- -This key is for Encryption peer's IP Address - -type: keyword +The volume name. -- -*`rsa.crypto.cipher_size_src`*:: +*`santa.disk.bus`*:: + -- -This key captures Source (Client) Cipher Size - -type: long +The disk bus protocol. -- -*`rsa.crypto.ike`*:: +*`santa.disk.serial`*:: + -- -IKE negotiation phase. - -type: keyword +The disk serial number. -- -*`rsa.crypto.scheme`*:: +*`santa.disk.bsdname`*:: + -- -This key captures the Encryption scheme used +The disk BSD name. -type: keyword +example: disk1s3 -- -*`rsa.crypto.peer_id`*:: +*`santa.disk.model`*:: + -- -This key is for Encryption peer’s identity +The disk model. -type: keyword +example: APPLE SSD SM0512L -- -*`rsa.crypto.sig_type`*:: +*`santa.disk.fs`*:: + -- -This key captures the Signature Type +The disk volume kind (filesystem type). -type: keyword +example: apfs -- -*`rsa.crypto.cert_issuer`*:: +*`santa.disk.mount`*:: + -- -type: keyword +The disk volume path. -- -*`rsa.crypto.cert_host_name`*:: +*`santa.certificate.common_name`*:: + -- -Deprecated key defined only in table map. +Common name from code signing certificate. type: keyword -- -*`rsa.crypto.cert_error`*:: +*`santa.certificate.sha256`*:: + -- -This key captures the Certificate Error String +SHA256 hash of code signing certificate. type: keyword -- -*`rsa.crypto.cipher_dst`*:: -+ --- -This key is for Destination (Server) Cipher +[[exported-fields-snyk]] +== Snyk fields -type: keyword +Snyk module + + + +[float] +=== snyk + +Module for parsing Snyk project vulnerabilities. --- -*`rsa.crypto.cipher_size_dst`*:: + +*`snyk.projects`*:: + -- -This key captures Destination (Server) Cipher Size +Array with all related projects objects. -type: long + +type: flattened -- -*`rsa.crypto.ssl_ver_src`*:: +*`snyk.related.projects`*:: + -- -Deprecated, use version +Array of all the related project ID's. + type: keyword -- -*`rsa.crypto.d_certauth`*:: +[float] +=== audit + +Module for parsing Snyk audit logs. + + + +*`snyk.audit.org_id`*:: + -- +ID of the related Organization related to the event. + + type: keyword -- -*`rsa.crypto.s_certauth`*:: +*`snyk.audit.project_id`*:: + -- +ID of the project related to the event. + + type: keyword -- -*`rsa.crypto.ike_cookie1`*:: +*`snyk.audit.content`*:: + -- -ID of the negotiation — sent for ISAKMP Phase One +Overview of the content that was changed, both old and new values. -type: keyword + +type: flattened -- -*`rsa.crypto.ike_cookie2`*:: +[float] +=== vulnerabilities + +Module for parsing Snyk project vulnerabilities. + + + +*`snyk.vulnerabilities.cvss3`*:: + -- -ID of the negotiation — sent for ISAKMP Phase Two +CSSv3 scores. + type: keyword -- -*`rsa.crypto.cert_checksum`*:: +*`snyk.vulnerabilities.disclosure_time`*:: + -- -type: keyword +The time this vulnerability was originally disclosed to the package maintainers. + + +type: date -- -*`rsa.crypto.cert_host_cat`*:: +*`snyk.vulnerabilities.exploit_maturity`*:: + -- -This key is used for the hostname category value of a certificate +The Snyk exploit maturity level. + type: keyword -- -*`rsa.crypto.cert_serial`*:: +*`snyk.vulnerabilities.id`*:: + -- -This key is used to capture the Certificate serial number only +The vulnerability reference ID. + type: keyword -- -*`rsa.crypto.cert_status`*:: +*`snyk.vulnerabilities.is_ignored`*:: + -- -This key captures Certificate validation status +If the vulnerability report has been ignored. -type: keyword + +type: boolean -- -*`rsa.crypto.ssl_ver_dst`*:: +*`snyk.vulnerabilities.is_patchable`*:: + -- -Deprecated, use version +If vulnerability is fixable by using a Snyk supplied patch. -type: keyword + +type: boolean -- -*`rsa.crypto.cert_keysize`*:: +*`snyk.vulnerabilities.is_patched`*:: + -- -type: keyword +If the vulnerability has been patched. + + +type: boolean -- -*`rsa.crypto.cert_username`*:: +*`snyk.vulnerabilities.is_pinnable`*:: + -- -type: keyword +If the vulnerability is fixable by pinning a transitive dependency. + + +type: boolean -- -*`rsa.crypto.https_insact`*:: +*`snyk.vulnerabilities.is_upgradable`*:: + -- -type: keyword +If the vulnerability fixable by upgrading a dependency. + + +type: boolean -- -*`rsa.crypto.https_valid`*:: +*`snyk.vulnerabilities.language`*:: + -- +The package's programming language. + + type: keyword -- -*`rsa.crypto.cert_ca`*:: +*`snyk.vulnerabilities.package`*:: + -- -This key is used to capture the Certificate signing authority only +The package identifier according to its package manager. + type: keyword -- -*`rsa.crypto.cert_common`*:: +*`snyk.vulnerabilities.package_manager`*:: + -- -This key is used to capture the Certificate common name only +The package manager. + type: keyword -- - -*`rsa.wireless.wlan_ssid`*:: +*`snyk.vulnerabilities.patches`*:: + -- -This key is used to capture the ssid of a Wireless Session +Patches required to resolve the issue created by Snyk. -type: keyword + +type: flattened -- -*`rsa.wireless.access_point`*:: +*`snyk.vulnerabilities.priority_score`*:: + -- -This key is used to capture the access point name. +The CVS priority score. -type: keyword + +type: long -- -*`rsa.wireless.wlan_channel`*:: +*`snyk.vulnerabilities.publication_time`*:: + -- -This is used to capture the channel names +The vulnerability publication time. -type: long + +type: date -- -*`rsa.wireless.wlan_name`*:: +*`snyk.vulnerabilities.jira_issue_url`*:: + -- -This key captures either WLAN number/name +Link to the related Jira issue. + type: keyword -- - -*`rsa.storage.disk_volume`*:: +*`snyk.vulnerabilities.original_severity`*:: + -- -A unique name assigned to logical units (volumes) within a physical disk +The original severity of the vulnerability. -type: keyword + +type: long -- -*`rsa.storage.lun`*:: +*`snyk.vulnerabilities.reachability`*:: + -- -Logical Unit Number.This key is a very useful concept in Storage. +If the vulnerable function from the library is used in the code scanned. Can either be No Info, Potentially reachable and Reachable. + type: keyword -- -*`rsa.storage.pwwn`*:: +*`snyk.vulnerabilities.title`*:: + -- -This uniquely identifies a port on a HBA. +The issue title. + type: keyword -- - -*`rsa.physical.org_dst`*:: +*`snyk.vulnerabilities.type`*:: + -- -This is used to capture the destination organization based on the GEOPIP Maxmind database. +The issue type. Can be either "license" or "vulnerability". + type: keyword -- -*`rsa.physical.org_src`*:: +*`snyk.vulnerabilities.unique_severities_list`*:: + -- -This is used to capture the source organization based on the GEOPIP Maxmind database. +A list of related unique severities. + type: keyword -- - -*`rsa.healthcare.patient_fname`*:: +*`snyk.vulnerabilities.version`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +The package version this issue is applicable to. + type: keyword -- -*`rsa.healthcare.patient_id`*:: +*`snyk.vulnerabilities.introduced_date`*:: + -- -This key captures the unique ID for a patient +The date the vulnerability was initially found. -type: keyword + +type: date -- -*`rsa.healthcare.patient_lname`*:: +*`snyk.vulnerabilities.is_fixed`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +If the related vulnerability has been resolved. -type: keyword + +type: boolean -- -*`rsa.healthcare.patient_mname`*:: +*`snyk.vulnerabilities.credit`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +Reference to the person that original found the vulnerability. + type: keyword -- - -*`rsa.endpoint.host_state`*:: +*`snyk.vulnerabilities.semver`*:: + -- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on +One or more semver ranges this issue is applicable to. The format varies according to package manager. -type: keyword + +type: flattened -- -*`rsa.endpoint.registry_key`*:: +*`snyk.vulnerabilities.identifiers.alternative`*:: + -- -This key captures the path to the registry key +Additional vulnerability identifiers. + type: keyword -- -*`rsa.endpoint.registry_value`*:: +*`snyk.vulnerabilities.identifiers.cwe`*:: + -- -This key captures values or decorators used within a registry entry +CWE vulnerability identifiers. + type: keyword -- -[[exported-fields-traefik]] -== Traefik fields +[[exported-fields-sophos]] +== sophos fields -Module for parsing the Traefik log files. +sophos Module [float] -=== traefik +=== sophos.xg -Fields from the Traefik log files. +Module for parsing sophosxg syslog. -[float] -=== access +*`sophos.xg.action`*:: ++ +-- +Event Action -Contains fields for the Traefik access logs. +type: keyword +-- -*`traefik.access.user_identifier`*:: +*`sophos.xg.activityname`*:: + -- -Is the RFC 1413 identity of the client +Web policy activity that matched and caused the policy result. type: keyword -- -*`traefik.access.request_count`*:: +*`sophos.xg.ap`*:: + -- -The number of requests +Access Point Serial ID or LocalWifi0 or LocalWifi1. -type: long +type: keyword -- -*`traefik.access.frontend_name`*:: +*`sophos.xg.app_category`*:: + -- -The name of the frontend used +Name of the category under which application falls type: keyword -- -*`traefik.access.backend_url`*:: +*`sophos.xg.app_filter_policy_id`*:: + -- -The url of the backend where request is forwarded +Application filter policy ID applied on the traffic + type: keyword -- -*`traefik.access.body_sent.bytes`*:: +*`sophos.xg.app_is_cloud`*:: + -- -type: alias +Application is Cloud -alias to: http.response.body.bytes + +type: keyword -- -*`traefik.access.remote_ip`*:: +*`sophos.xg.app_name`*:: + -- -type: alias +Application name -alias to: source.address + +type: keyword -- -*`traefik.access.user_name`*:: +*`sophos.xg.app_resolved_by`*:: + -- -type: alias +Application is resolved by signature or synchronized application -alias to: user.name + +type: keyword -- -*`traefik.access.method`*:: +*`sophos.xg.app_risk`*:: + -- -type: alias +Risk level assigned to the application -alias to: http.request.method + +type: keyword -- -*`traefik.access.url`*:: +*`sophos.xg.app_technology`*:: + -- -type: alias +Technology of the application -alias to: url.original + +type: keyword -- -*`traefik.access.http_version`*:: +*`sophos.xg.appfilter_policy_id`*:: + -- -type: alias +Application Filter policy applied on the traffic -alias to: http.version + +type: integer -- -*`traefik.access.response_code`*:: +*`sophos.xg.application`*:: + -- -type: alias +Application name -alias to: http.response.status_code + +type: keyword -- -*`traefik.access.referrer`*:: +*`sophos.xg.application_category`*:: + -- -type: alias +Application is resolved by signature or synchronized application -alias to: http.request.referrer + +type: keyword -- -*`traefik.access.agent`*:: +*`sophos.xg.application_filter_policy`*:: + -- -type: alias +Application Filter policy applied on the traffic -alias to: user_agent.original --- +type: integer +-- -*`traefik.access.user_agent.name`*:: +*`sophos.xg.application_name`*:: + -- -type: alias +Application name -alias to: user_agent.name + +type: keyword -- -*`traefik.access.user_agent.os`*:: +*`sophos.xg.application_risk`*:: + -- -type: alias +Risk level assigned to the application -alias to: user_agent.os.full_name + +type: keyword -- -*`traefik.access.user_agent.os_name`*:: +*`sophos.xg.application_technology`*:: + -- -type: alias +Technology of the application -alias to: user_agent.os.name + +type: keyword -- -*`traefik.access.user_agent.original`*:: +*`sophos.xg.appresolvedby`*:: + -- -type: alias +Technology of the application -alias to: user_agent.original --- +type: keyword +-- -*`traefik.access.geoip.continent_name`*:: +*`sophos.xg.auth_client`*:: + -- -type: alias +Auth Client -alias to: source.geo.continent_name + +type: keyword -- -*`traefik.access.geoip.country_iso_code`*:: +*`sophos.xg.auth_mechanism`*:: + -- -type: alias +Auth mechanism -alias to: source.geo.country_iso_code + +type: keyword -- -*`traefik.access.geoip.location`*:: +*`sophos.xg.av_policy_name`*:: + -- -type: alias +Malware scanning policy name which is applied on the traffic -alias to: source.geo.location + +type: keyword -- -*`traefik.access.geoip.region_name`*:: +*`sophos.xg.backup_mode`*:: + -- -type: alias +Backup mode -alias to: source.geo.region_name + +type: keyword -- -*`traefik.access.geoip.city_name`*:: +*`sophos.xg.branch_name`*:: + -- -type: alias +Branch Name -alias to: source.geo.city_name + +type: keyword -- -*`traefik.access.geoip.region_iso_code`*:: +*`sophos.xg.category`*:: + -- -type: alias +IPS signature category. -alias to: source.geo.region_iso_code + +type: keyword -- -[[exported-fields-winlog]] -== Windows ETW fields +*`sophos.xg.category_type`*:: ++ +-- +Type of category under which website falls -Fields from the ETW input (Event Tracing for Windows). +type: keyword +-- -[float] -=== winlog +*`sophos.xg.classification`*:: ++ +-- +Signature classification -All fields specific to the Windows Event Tracing are defined here. +type: keyword +-- -*`winlog.activity_id`*:: +*`sophos.xg.client_host_name`*:: + -- -A globally unique identifier that identifies the current activity. The events that are published with this identifier are part of the same activity. +Client host name type: keyword -required: False - -- -*`winlog.channel`*:: +*`sophos.xg.client_physical_address`*:: + -- -Used to enable special event processing. Channel values below 16 are reserved for use by Microsoft to enable special treatment by the ETW runtime. Channel values 16 and above will be ignored by the ETW runtime (treated the same as channel 0) and can be given user-defined semantics. +Client physical address type: keyword -required: False - -- -*`winlog.event_data`*:: +*`sophos.xg.clients_conn_ssid`*:: + -- -The event-specific data. The content of this object is specific to any provider and event. - +Number of client connected to the SSID. -type: object -required: False +type: long -- -*`winlog.flags`*:: +*`sophos.xg.collisions`*:: + -- -Flags that provide information about the event such as the type of session it was logged to and if the event contains extended data. - +collisions -type: keyword -required: False +type: long -- -*`winlog.keywords`*:: +*`sophos.xg.con_event`*:: + -- -The keywords are used to indicate an event's membership in a set of event categories. +Event Start/Stop type: keyword -required: False - -- -*`winlog.level`*:: +*`sophos.xg.con_id`*:: + -- -Level of severity. Level values 0 through 5 are defined by Microsoft. Level values 6 through 15 are reserved. Level values 16 through 255 can be defined by the event provider. - +Unique identifier of connection -type: keyword -required: False +type: integer -- -*`winlog.opcode`*:: +*`sophos.xg.configuration`*:: + -- -The opcode defined in the event. Task and opcode are typically used to identify the location in the application from where the event was logged. - +Configuration -type: keyword -required: False +type: float -- -*`winlog.process_id`*:: +*`sophos.xg.conn_id`*:: + -- -Identifies the process that generated the event. - +Unique identifier of connection -type: keyword -required: False +type: integer -- -*`winlog.provider_guid`*:: +*`sophos.xg.connectionname`*:: + -- -A globally unique identifier that identifies the provider that logged the event. +Connectionname type: keyword -required: False - -- -*`winlog.provider_name`*:: +*`sophos.xg.connectiontype`*:: + -- -The source of the event log record (the application or service that logged the record). +Connectiontype type: keyword -required: False - -- -*`winlog.session`*:: +*`sophos.xg.connevent`*:: + -- -Configured session to forward ETW events from providers to consumers. +Event on which this log is generated type: keyword -required: False - -- -*`winlog.severity`*:: +*`sophos.xg.connid`*:: + -- -Human-readable level of severity. +Connection ID type: keyword -required: False - -- -*`winlog.task`*:: +*`sophos.xg.content_type`*:: + -- -The task defined in the event. Task and opcode are typically used to identify the location in the application from where the event was logged. +Type of the content type: keyword -required: False - -- -*`winlog.thread_id`*:: +*`sophos.xg.contenttype`*:: + -- -Identifies the thread that generated the event. +Type of the content type: keyword -required: False - -- -*`winlog.version`*:: +*`sophos.xg.context_match`*:: + -- -Specify the version of a manifest-based event. - +Context Match -type: long -required: False +type: keyword -- -[[exported-fields-zeek]] -== Zeek fields - -Module for handling logs produced by Zeek/Bro - - - -[float] -=== zeek - -Fields from Zeek/Bro logs after normalization - - - -*`zeek.session_id`*:: +*`sophos.xg.context_prefix`*:: + -- -A unique identifier of the session +Content Prefix type: keyword -- -[float] -=== capture_loss - -Fields exported by the Zeek capture_loss log - - - -*`zeek.capture_loss.ts_delta`*:: +*`sophos.xg.context_suffix`*:: + -- -The time delay between this measurement and the last. +Context Suffix -type: integer +type: keyword -- -*`zeek.capture_loss.peer`*:: +*`sophos.xg.cookie`*:: + -- -In the event that there are multiple Bro instances logging to the same host, this distinguishes each peer with its individual name. +cookie type: keyword -- -*`zeek.capture_loss.gaps`*:: +*`sophos.xg.date`*:: + -- -Number of missed ACKs from the previous measurement interval. +Date (yyyy-mm-dd) when the event occurred -type: integer +type: date -- -*`zeek.capture_loss.acks`*:: +*`sophos.xg.destinationip`*:: + -- -Total number of ACKs seen in the previous measurement interval. +Original destination IP address of traffic -type: integer +type: ip -- -*`zeek.capture_loss.percent_lost`*:: +*`sophos.xg.device`*:: + -- -Percentage of ACKs seen where the data being ACKed wasn't seen. +device -type: double +type: keyword -- -[float] -=== connection - -Fields exported by the Zeek Connection log - - - -*`zeek.connection.local_orig`*:: +*`sophos.xg.device_id`*:: + -- -Indicates whether the session is originated locally. +Serial number of the device -type: boolean +type: keyword -- -*`zeek.connection.local_resp`*:: +*`sophos.xg.device_model`*:: + -- -Indicates whether the session is responded locally. +Model number of the device -type: boolean +type: keyword -- -*`zeek.connection.missed_bytes`*:: +*`sophos.xg.device_name`*:: + -- -Missed bytes for the session. +Model number of the device -type: long +type: keyword -- -*`zeek.connection.state`*:: +*`sophos.xg.dictionary_name`*:: + -- -Code indicating the state of the session. +Dictionary Name type: keyword -- -*`zeek.connection.state_message`*:: +*`sophos.xg.dir_disp`*:: + -- -The state of the session. +TPacket direction. Possible values:“org”, “reply”, “” type: keyword -- - -*`zeek.connection.icmp.type`*:: +*`sophos.xg.direction`*:: + -- -ICMP message type. +Direction -type: integer +type: keyword -- -*`zeek.connection.icmp.code`*:: +*`sophos.xg.domainname`*:: + -- -ICMP message code. +Domain from which virus was downloaded -type: integer +type: keyword -- -*`zeek.connection.history`*:: +*`sophos.xg.download_file_name`*:: + -- -Flags indicating the history of the session. +Download file name type: keyword -- -*`zeek.connection.vlan`*:: +*`sophos.xg.download_file_type`*:: + -- -VLAN identifier. +Download file type -type: integer +type: keyword -- -*`zeek.connection.inner_vlan`*:: +*`sophos.xg.dst_country_code`*:: + -- -VLAN identifier. +Code of the country to which the destination IP belongs -type: integer +type: keyword -- -[float] -=== dce_rpc - -Fields exported by the Zeek DCE_RPC log - - - -*`zeek.dce_rpc.rtt`*:: +*`sophos.xg.dst_domainname`*:: + -- -Round trip time from the request to the response. If either the request or response wasn't seen, this will be null. +Receiver domain name -type: integer +type: keyword -- -*`zeek.dce_rpc.named_pipe`*:: +*`sophos.xg.dst_ip`*:: + -- -Remote pipe name. +Original destination IP address of traffic -type: keyword +type: ip -- -*`zeek.dce_rpc.endpoint`*:: +*`sophos.xg.dst_port`*:: + -- -Endpoint name looked up from the uuid. +Original destination port of TCP and UDP traffic -type: keyword +type: integer -- -*`zeek.dce_rpc.operation`*:: +*`sophos.xg.dst_zone_type`*:: + -- -Operation seen in the call. +Type of destination zone type: keyword -- -[float] -=== dhcp - -Fields exported by the Zeek DHCP log - - - -*`zeek.dhcp.domain`*:: +*`sophos.xg.dstdomain`*:: + -- -Domain given by the server in option 15. +Destination Domain type: keyword -- -*`zeek.dhcp.duration`*:: +*`sophos.xg.duration`*:: + -- -Duration of the DHCP session representing the time from the first -message to the last, in seconds. +Durability of traffic (seconds) -type: double +type: long -- -*`zeek.dhcp.hostname`*:: +*`sophos.xg.email_subject`*:: + -- -Name given by client in Hostname option 12. +Email Subject type: keyword -- -*`zeek.dhcp.client_fqdn`*:: +*`sophos.xg.ep_uuid`*:: + -- -FQDN given by client in Client FQDN option 81. +Endpoint UUID type: keyword -- -*`zeek.dhcp.lease_time`*:: +*`sophos.xg.ether_type`*:: + -- -IP address lease interval in seconds. +ethernet frame type -type: integer +type: keyword -- -[float] -=== address - -Addresses seen in this DHCP exchange. - - - -*`zeek.dhcp.address.assigned`*:: +*`sophos.xg.eventid`*:: + -- -IP address assigned by the server. +ATP Evenet ID -type: ip +type: keyword -- -*`zeek.dhcp.address.client`*:: +*`sophos.xg.eventtime`*:: + -- -IP address of the client. If a transaction is only a client sending -INFORM messages then there is no lease information exchanged so this -is helpful to know who sent the messages. Getting an address in this -field does require that the client sources at least one DHCP message -using a non-broadcast address. +Event time -type: ip +type: date -- -*`zeek.dhcp.address.mac`*:: +*`sophos.xg.eventtype`*:: + -- -Client's hardware address. +ATP event type type: keyword -- -*`zeek.dhcp.address.requested`*:: +*`sophos.xg.exceptions`*:: + -- -IP address requested by the client. +List of the checks excluded by web exceptions. -type: ip +type: keyword -- -*`zeek.dhcp.address.server`*:: +*`sophos.xg.execution_path`*:: + -- -IP address of the DHCP server. +ATP execution path -type: ip +type: keyword -- - -*`zeek.dhcp.msg.types`*:: +*`sophos.xg.extra`*:: + -- -List of DHCP message types seen in this exchange. +extra type: keyword -- -*`zeek.dhcp.msg.origin`*:: +*`sophos.xg.file_name`*:: + -- -(present if policy/protocols/dhcp/msg-orig.bro is loaded) -The address that originated each message from the msg.types field. +Filename -type: ip +type: keyword -- -*`zeek.dhcp.msg.client`*:: +*`sophos.xg.file_path`*:: + -- -Message typically accompanied with a DHCP_DECLINE so the client can -tell the server why it rejected an address. +File path type: keyword -- -*`zeek.dhcp.msg.server`*:: +*`sophos.xg.file_size`*:: + -- -Message typically accompanied with a DHCP_NAK to let the client know -why it rejected the request. +File Size -type: keyword +type: integer -- - -*`zeek.dhcp.software.client`*:: +*`sophos.xg.filename`*:: + -- -(present if policy/protocols/dhcp/software.bro is loaded) -Software reported by the client in the vendor_class option. +File name associated with the event type: keyword -- -*`zeek.dhcp.software.server`*:: +*`sophos.xg.filepath`*:: + -- -(present if policy/protocols/dhcp/software.bro is loaded) -Software reported by the client in the vendor_class option. +Path of the file containing virus type: keyword -- - -*`zeek.dhcp.id.circuit`*:: +*`sophos.xg.filesize`*:: + -- -(present if policy/protocols/dhcp/sub-opts.bro is loaded) -Added by DHCP relay agents which terminate switched or permanent -circuits. It encodes an agent-local identifier of the circuit from -which a DHCP client-to-server packet was received. Typically it -should represent a router or switch interface number. +Size of the file that contained virus -type: keyword +type: integer -- -*`zeek.dhcp.id.remote_agent`*:: +*`sophos.xg.free`*:: + -- -(present if policy/protocols/dhcp/sub-opts.bro is loaded) -A globally unique identifier added by relay agents to identify the -remote host end of the circuit. +free -type: keyword +type: integer -- -*`zeek.dhcp.id.subscriber`*:: +*`sophos.xg.from_email_address`*:: + -- -(present if policy/protocols/dhcp/sub-opts.bro is loaded) -The subscriber ID is a value independent of the physical network -configuration so that a customer's DHCP configuration can be given -to them correctly no matter where they are physically connected. +Sender email address type: keyword -- -[float] -=== dnp3 - -Fields exported by the Zeek DNP3 log +*`sophos.xg.ftp_direction`*:: ++ +-- +Direction of FTP transfer: Upload or Download +type: keyword +-- -*`zeek.dnp3.function.request`*:: +*`sophos.xg.ftp_url`*:: + -- -The name of the function message in the request. +FTP URL from which virus was downloaded type: keyword -- -*`zeek.dnp3.function.reply`*:: +*`sophos.xg.ftpcommand`*:: + -- -The name of the function message in the reply. +FTP command used when virus was found type: keyword -- -*`zeek.dnp3.id`*:: +*`sophos.xg.fw_rule_id`*:: + -- -The response's internal indication number. +Firewall Rule ID which is applied on the traffic type: integer -- -[float] -=== dns +*`sophos.xg.fw_rule_type`*:: ++ +-- +Firewall rule type which is applied on the traffic -Fields exported by the Zeek DNS log +type: keyword +-- -*`zeek.dns.trans_id`*:: +*`sophos.xg.hb_health`*:: + -- -DNS transaction identifier. +Heartbeat status type: keyword -- -*`zeek.dns.rtt`*:: +*`sophos.xg.hb_status`*:: + -- -Round trip time for the query and response. +Heartbeat status -type: double +type: keyword -- -*`zeek.dns.query`*:: +*`sophos.xg.host`*:: + -- -The domain name that is the subject of the DNS query. +Host type: keyword -- -*`zeek.dns.qclass`*:: +*`sophos.xg.http_category`*:: + -- -The QCLASS value specifying the class of the query. +HTTP Category -type: long +type: keyword -- -*`zeek.dns.qclass_name`*:: +*`sophos.xg.http_category_type`*:: + -- -A descriptive name for the class of the query. +HTTP Category Type type: keyword -- -*`zeek.dns.qtype`*:: +*`sophos.xg.httpresponsecode`*:: + -- -A QTYPE value specifying the type of the query. +code of HTTP response type: long -- -*`zeek.dns.qtype_name`*:: +*`sophos.xg.iap`*:: + -- -A descriptive name for the type of the query. +Internet Access policy ID applied on the traffic type: keyword -- -*`zeek.dns.rcode`*:: +*`sophos.xg.icmp_code`*:: + -- -The response code value in DNS response messages. +ICMP code of ICMP traffic -type: long +type: keyword -- -*`zeek.dns.rcode_name`*:: +*`sophos.xg.icmp_type`*:: + -- -A descriptive name for the response code value. +ICMP type of ICMP traffic type: keyword -- -*`zeek.dns.AA`*:: +*`sophos.xg.idle_cpu`*:: + -- -The Authoritative Answer bit for response messages specifies that the responding -name server is an authority for the domain name in the question section. +idle ## -type: boolean +type: float -- -*`zeek.dns.TC`*:: +*`sophos.xg.idp_policy_id`*:: + -- -The Truncation bit specifies that the message was truncated. +IPS policy ID which is applied on the traffic -type: boolean +type: integer -- -*`zeek.dns.RD`*:: +*`sophos.xg.idp_policy_name`*:: + -- -The Recursion Desired bit in a request message indicates that the client -wants recursive service for this query. +IPS policy name i.e. IPS policy name which is applied on the traffic -type: boolean +type: keyword -- -*`zeek.dns.RA`*:: +*`sophos.xg.in_interface`*:: + -- -The Recursion Available bit in a response message indicates that the name -server supports recursive queries. +Interface for incoming traffic, e.g., Port A -type: boolean +type: keyword -- -*`zeek.dns.answers`*:: +*`sophos.xg.interface`*:: + -- -The set of resource descriptions in the query answer. +interface type: keyword -- -*`zeek.dns.TTLs`*:: +*`sophos.xg.ipaddress`*:: + -- -The caching intervals of the associated RRs described by the answers field. +Ipaddress -type: double +type: keyword -- -*`zeek.dns.rejected`*:: +*`sophos.xg.ips_policy_id`*:: + -- -Indicates whether the DNS query was rejected by the server. +IPS policy ID applied on the traffic -type: boolean +type: integer -- -*`zeek.dns.total_answers`*:: +*`sophos.xg.lease_time`*:: + -- -The total number of resource records in the reply. +Lease Time -type: integer +type: keyword -- -*`zeek.dns.total_replies`*:: +*`sophos.xg.localgateway`*:: + -- -The total number of resource records in the reply message. +Localgateway -type: integer +type: keyword -- -*`zeek.dns.saw_query`*:: +*`sophos.xg.localnetwork`*:: + -- -Whether the full DNS query has been seen. +Localnetwork -type: boolean +type: keyword -- -*`zeek.dns.saw_reply`*:: +*`sophos.xg.log_component`*:: + -- -Whether the full DNS reply has been seen. +Component responsible for logging e.g. Firewall rule -type: boolean +type: keyword -- -[float] -=== dpd - -Fields exported by the Zeek DPD log - - - -*`zeek.dpd.analyzer`*:: +*`sophos.xg.log_id`*:: + -- -The analyzer that generated the violation. +Unique 12 characters code (0101011) type: keyword -- -*`zeek.dpd.failure_reason`*:: +*`sophos.xg.log_subtype`*:: + -- -The textual reason for the analysis failure. +Sub type of event type: keyword -- -*`zeek.dpd.packet_segment`*:: +*`sophos.xg.log_type`*:: + -- -(present if policy/frameworks/dpd/packet-segment-logging.bro is loaded) -A chunk of the payload that most likely resulted in the protocol violation. +Type of event e.g. firewall event type: keyword -- -[float] -=== files +*`sophos.xg.log_version`*:: ++ +-- +Log Version -Fields exported by the Zeek Files log. +type: keyword +-- -*`zeek.files.fuid`*:: +*`sophos.xg.login_user`*:: + -- -A file unique identifier. +ATP login user type: keyword -- -*`zeek.files.tx_host`*:: +*`sophos.xg.mailid`*:: + -- -The host that transferred the file. +mailid -type: ip +type: keyword -- -*`zeek.files.rx_host`*:: +*`sophos.xg.mailsize`*:: + -- -The host that received the file. +mailsize -type: ip +type: integer -- -*`zeek.files.session_ids`*:: +*`sophos.xg.message`*:: + -- -The sessions that have this file. +Message type: keyword -- -*`zeek.files.source`*:: +*`sophos.xg.mode`*:: + -- -An identification of the source of the file data. E.g. it may be a network protocol -over which it was transferred, or a local file path which was read, or some other -input source. +Mode type: keyword -- -*`zeek.files.depth`*:: +*`sophos.xg.nat_rule_id`*:: + -- -A value to represent the depth of this file in relation to its source. In SMTP, it -is the depth of the MIME attachment on the message. In HTTP, it is the depth of the -request within the TCP connection. +NAT Rule ID -type: long +type: keyword -- -*`zeek.files.analyzers`*:: +*`sophos.xg.newversion`*:: + -- -A set of analysis types done during the file analysis. +Newversion type: keyword -- -*`zeek.files.mime_type`*:: +*`sophos.xg.oldversion`*:: + -- -Mime type of the file. +Oldversion type: keyword -- -*`zeek.files.filename`*:: +*`sophos.xg.out_interface`*:: + -- -Name of the file if available. +Interface for outgoing traffic, e.g., Port B type: keyword -- -*`zeek.files.local_orig`*:: +*`sophos.xg.override_authorizer`*:: + -- -If the source of this file is a network connection, this field indicates if the data -originated from the local network or not. +Override authorizer -type: boolean +type: keyword -- -*`zeek.files.is_orig`*:: +*`sophos.xg.override_name`*:: + -- -If the source of this file is a network connection, this field indicates if the file is -being sent by the originator of the connection or the responder. +Override name -type: boolean +type: keyword -- -*`zeek.files.duration`*:: +*`sophos.xg.override_token`*:: + -- -The duration the file was analyzed for. Not the duration of the session. +Override token -type: double +type: keyword -- -*`zeek.files.seen_bytes`*:: +*`sophos.xg.phpsessid`*:: + -- -Number of bytes provided to the file analysis engine for the file. +PHP session ID -type: long +type: keyword -- -*`zeek.files.total_bytes`*:: +*`sophos.xg.platform`*:: + -- -Total number of bytes that are supposed to comprise the full file. +Platform of the traffic. -type: long +type: keyword -- -*`zeek.files.missing_bytes`*:: +*`sophos.xg.policy_type`*:: + -- -The number of bytes in the file stream that were completely missed during the process -of analysis. +Policy type applied to the traffic -type: long +type: keyword -- -*`zeek.files.overflow_bytes`*:: +*`sophos.xg.priority`*:: + -- -The number of bytes in the file stream that were not delivered to stream file analyzers. -This could be overlapping bytes or bytes that couldn't be reassembled. +Severity level of traffic -type: long +type: keyword -- -*`zeek.files.timedout`*:: +*`sophos.xg.protocol`*:: + -- -Whether the file analysis timed out at least once for the file. +Protocol number of traffic -type: boolean +type: keyword -- -*`zeek.files.parent_fuid`*:: +*`sophos.xg.qualifier`*:: + -- -Identifier associated with a container file from which this one was extracted as part of -the file analysis. +Qualifier type: keyword -- -*`zeek.files.md5`*:: +*`sophos.xg.quarantine`*:: + -- -An MD5 digest of the file contents. +Path and filename of the file quarantined type: keyword -- -*`zeek.files.sha1`*:: +*`sophos.xg.quarantine_reason`*:: + -- -A SHA1 digest of the file contents. +Quarantine reason type: keyword -- -*`zeek.files.sha256`*:: +*`sophos.xg.querystring`*:: + -- -A SHA256 digest of the file contents. +querystring type: keyword -- -*`zeek.files.extracted`*:: +*`sophos.xg.raw_data`*:: + -- -Local filename of extracted file. +Raw data type: keyword -- -*`zeek.files.extracted_cutoff`*:: +*`sophos.xg.received_pkts`*:: + -- -Indicate whether the file being extracted was cut off hence not extracted completely. +Total number of packets received -type: boolean +type: long -- -*`zeek.files.extracted_size`*:: +*`sophos.xg.receiveddrops`*:: + -- -The number of bytes extracted to disk. +received drops type: long -- -*`zeek.files.entropy`*:: +*`sophos.xg.receivederrors`*:: + -- -The information density of the contents of the file. +received errors -type: double +type: keyword -- -[float] -=== ftp +*`sophos.xg.receivedkbits`*:: ++ +-- +received kbits -Fields exported by the Zeek FTP log +type: long +-- -*`zeek.ftp.user`*:: +*`sophos.xg.recv_bytes`*:: + -- -User name for the current FTP session. +Total number of bytes received -type: keyword +type: long -- -*`zeek.ftp.password`*:: +*`sophos.xg.red_id`*:: + -- -Password for the current FTP session if captured. +RED ID type: keyword -- -*`zeek.ftp.command`*:: +*`sophos.xg.referer`*:: + -- -Command given by the client. +Referer type: keyword -- -*`zeek.ftp.arg`*:: +*`sophos.xg.remote_ip`*:: + -- -Argument for the command if one is given. +Remote IP -type: keyword +type: ip -- - -*`zeek.ftp.file.size`*:: +*`sophos.xg.remotenetwork`*:: + -- -Size of the file if the command indicates a file transfer. +remotenetwork -type: long +type: keyword -- -*`zeek.ftp.file.mime_type`*:: +*`sophos.xg.reported_host`*:: + -- -Sniffed mime type of file. +Reported Host type: keyword -- -*`zeek.ftp.file.fuid`*:: +*`sophos.xg.reported_ip`*:: + -- -(present if base/protocols/ftp/files.bro is loaded) -File unique ID. +Reported IP type: keyword -- - -*`zeek.ftp.reply.code`*:: +*`sophos.xg.reports`*:: + -- -Reply code from the server in response to the command. +Reports -type: integer +type: float -- -*`zeek.ftp.reply.msg`*:: +*`sophos.xg.rule_priority`*:: + -- -Reply message from the server in response to the command. +Priority of IPS policy type: keyword -- -[float] -=== data_channel +*`sophos.xg.sent_bytes`*:: ++ +-- +Total number of bytes sent -Expected FTP data channel. +type: long +-- -*`zeek.ftp.data_channel.passive`*:: +*`sophos.xg.sent_pkts`*:: + -- -Whether PASV mode is toggled for control channel. +Total number of packets sent -type: boolean +type: long -- -*`zeek.ftp.data_channel.originating_host`*:: +*`sophos.xg.server`*:: + -- -The host that will be initiating the data connection. +Server -type: ip +type: keyword -- -*`zeek.ftp.data_channel.response_host`*:: +*`sophos.xg.sessionid`*:: + -- -The host that will be accepting the data connection. +Sessionid -type: ip +type: keyword -- -*`zeek.ftp.data_channel.response_port`*:: +*`sophos.xg.sha1sum`*:: + -- -The port at which the acceptor is listening for the data connection. +SHA1 checksum of the item being analyzed -type: integer +type: keyword -- -*`zeek.ftp.cwd`*:: +*`sophos.xg.signature`*:: + -- -Current working directory that this session is in. By making the default value '.', we can indicate that unless something more concrete is discovered that the existing but unknown directory is ok to use. +Signature -type: keyword +type: float -- -[float] -=== cmdarg +*`sophos.xg.signature_id`*:: ++ +-- +Signature ID -Command that is currently waiting for a response. +type: keyword +-- -*`zeek.ftp.cmdarg.cmd`*:: +*`sophos.xg.signature_msg`*:: + -- -Command. +Signature messsage type: keyword -- -*`zeek.ftp.cmdarg.arg`*:: +*`sophos.xg.site_category`*:: + -- -Argument for the command if one was given. +Site Category type: keyword -- -*`zeek.ftp.cmdarg.seq`*:: +*`sophos.xg.source`*:: + -- -Counter to track how many commands have been executed. +Source -type: integer +type: keyword -- -*`zeek.ftp.pending_commands`*:: +*`sophos.xg.sourceip`*:: + -- -Queue for commands that have been sent but not yet responded to are tracked here. +Original source IP address of traffic -type: integer +type: ip -- -*`zeek.ftp.passive`*:: +*`sophos.xg.spamaction`*:: + -- -Indicates if the session is in active or passive mode. +Spam Action -type: boolean +type: keyword -- -*`zeek.ftp.capture_password`*:: +*`sophos.xg.sqli`*:: + -- -Determines if the password will be captured for this request. +related SQLI caught by the WAF -type: boolean +type: keyword -- -*`zeek.ftp.last_auth_requested`*:: +*`sophos.xg.src_country_code`*:: + -- -present if base/protocols/ftp/gridftp.bro is loaded. -Last authentication/security mechanism that was used. +Code of the country to which the source IP belongs type: keyword -- -[float] -=== http +*`sophos.xg.src_domainname`*:: ++ +-- +Sender domain name -Fields exported by the Zeek HTTP log +type: keyword +-- -*`zeek.http.trans_depth`*:: +*`sophos.xg.src_ip`*:: + -- -Represents the pipelined depth into the connection of this request/response transaction. +Original source IP address of traffic -type: integer +type: ip -- -*`zeek.http.status_msg`*:: +*`sophos.xg.src_mac`*:: + -- -Status message returned by the server. +Original source MAC address of traffic type: keyword -- -*`zeek.http.info_code`*:: +*`sophos.xg.src_port`*:: + -- -Last seen 1xx informational reply code returned by the server. +Original source port of TCP and UDP traffic type: integer -- -*`zeek.http.info_msg`*:: +*`sophos.xg.src_zone_type`*:: + -- -Last seen 1xx informational reply message returned by the server. - +Type of source zone type: keyword -- -*`zeek.http.tags`*:: +*`sophos.xg.ssid`*:: + -- -A set of indicators of various attributes discovered and related to a particular -request/response pair. +Configured SSID name. type: keyword -- -*`zeek.http.password`*:: +*`sophos.xg.start_time`*:: + -- -Password if basic-auth is performed for the request. +Start time -type: keyword +type: date -- -*`zeek.http.captured_password`*:: +*`sophos.xg.starttime`*:: + -- -Determines if the password will be captured for this request. +Starttime -type: boolean +type: date -- -*`zeek.http.proxied`*:: +*`sophos.xg.status`*:: + -- -All of the headers that may indicate if the HTTP request was proxied. +Ultimate status of traffic – Allowed or Denied type: keyword -- -*`zeek.http.range_request`*:: +*`sophos.xg.status_code`*:: + -- -Indicates if this request can assume 206 partial content in response. +Status code -type: boolean +type: keyword -- -*`zeek.http.client_header_names`*:: +*`sophos.xg.subject`*:: + -- -The vector of HTTP header names sent by the client. No header values -are included here, just the header names. +Email subject type: keyword -- -*`zeek.http.server_header_names`*:: +*`sophos.xg.syslog_server_name`*:: + -- -The vector of HTTP header names sent by the server. No header values -are included here, just the header names. +Syslog server name. type: keyword -- -*`zeek.http.orig_fuids`*:: +*`sophos.xg.system_cpu`*:: + -- -An ordered vector of file unique IDs from the originator. +system -type: keyword +type: float -- -*`zeek.http.orig_mime_types`*:: +*`sophos.xg.target`*:: + -- -An ordered vector of mime types from the originator. +Platform of the traffic. type: keyword -- -*`zeek.http.orig_filenames`*:: +*`sophos.xg.temp`*:: + -- -An ordered vector of filenames from the originator. +Temp -type: keyword +type: float -- -*`zeek.http.resp_fuids`*:: +*`sophos.xg.threatname`*:: + -- -An ordered vector of file unique IDs from the responder. +ATP threatname type: keyword -- -*`zeek.http.resp_mime_types`*:: +*`sophos.xg.timestamp`*:: + -- -An ordered vector of mime types from the responder. +timestamp -type: keyword +type: date -- -*`zeek.http.resp_filenames`*:: +*`sophos.xg.timezone`*:: + -- -An ordered vector of filenames from the responder. +Time (hh:mm:ss) when the event occurred type: keyword -- -*`zeek.http.orig_mime_depth`*:: +*`sophos.xg.to_email_address`*:: + -- -Current number of MIME entities in the HTTP request message body. +Receipeint email address -type: integer +type: keyword -- -*`zeek.http.resp_mime_depth`*:: +*`sophos.xg.total_memory`*:: + -- -Current number of MIME entities in the HTTP response message body. +Total Memory type: integer -- -[float] -=== intel - -Fields exported by the Zeek Intel log. +*`sophos.xg.trans_dst_ip`*:: ++ +-- +Translated destination IP address for outgoing traffic +type: ip +-- -*`zeek.intel.seen.indicator`*:: +*`sophos.xg.trans_dst_port`*:: + -- -The intelligence indicator. +Translated destination port for outgoing traffic -type: keyword +type: integer -- -*`zeek.intel.seen.indicator_type`*:: +*`sophos.xg.trans_src_ip`*:: + -- -The type of data the indicator represents. +Translated source IP address for outgoing traffic -type: keyword +type: ip -- -*`zeek.intel.seen.host`*:: +*`sophos.xg.trans_src_port`*:: + -- -If the indicator type was Intel::ADDR, then this field will be present. +Translated source port for outgoing traffic -type: keyword +type: integer -- -*`zeek.intel.seen.conn`*:: +*`sophos.xg.transaction_id`*:: + -- -If the data was discovered within a connection, the connection record should go here to give context to the data. +Transaction ID type: keyword -- -*`zeek.intel.seen.where`*:: +*`sophos.xg.transactionid`*:: + -- -Where the data was discovered. +Transaction ID of the AV scan. type: keyword -- -*`zeek.intel.seen.node`*:: +*`sophos.xg.transmitteddrops`*:: + -- -The name of the node where the match was discovered. +transmitted drops -type: keyword +type: long -- -*`zeek.intel.seen.uid`*:: +*`sophos.xg.transmittederrors`*:: + -- -If the data was discovered within a connection, the connection uid should go here to give context to the data. If the conn field is provided, this will be automatically filled out. +transmitted errors type: keyword -- -*`zeek.intel.seen.f`*:: +*`sophos.xg.transmittedkbits`*:: + -- -If the data was discovered within a file, the file record should go here to provide context to the data. +transmitted kbits -type: object +type: long -- -*`zeek.intel.seen.fuid`*:: +*`sophos.xg.unit`*:: + -- -If the data was discovered within a file, the file uid should go here to provide context to the data. If the file record f is provided, this will be automatically filled out. +unit type: keyword -- -*`zeek.intel.matched`*:: +*`sophos.xg.updatedip`*:: + -- -Event to represent a match in the intelligence data from data that was seen. +updatedip -type: keyword +type: ip -- -*`zeek.intel.sources`*:: +*`sophos.xg.upload_file_name`*:: + -- -Sources which supplied data for this match. +Upload file name type: keyword -- -*`zeek.intel.fuid`*:: +*`sophos.xg.upload_file_type`*:: + -- -If a file was associated with this intelligence hit, this is the uid for the file. +Upload file type type: keyword -- -*`zeek.intel.file_mime_type`*:: +*`sophos.xg.url`*:: + -- -A mime type if the intelligence hit is related to a file. If the $f field is provided this will be automatically filled out. +URL from which virus was downloaded type: keyword -- -*`zeek.intel.file_desc`*:: +*`sophos.xg.used`*:: + -- -Frequently files can be described to give a bit more context. If the $f field is provided this field will be automatically filled out. +used -type: keyword +type: integer -- -[float] -=== irc - -Fields exported by the Zeek IRC log - - - -*`zeek.irc.nick`*:: +*`sophos.xg.used_quota`*:: + -- -Nickname given for the connection. +Used Quota type: keyword -- -*`zeek.irc.user`*:: +*`sophos.xg.user`*:: + -- -Username given for the connection. +User type: keyword -- -*`zeek.irc.command`*:: +*`sophos.xg.user_cpu`*:: + -- -Command given by the client. +system -type: keyword +type: float -- -*`zeek.irc.value`*:: +*`sophos.xg.user_gp`*:: + -- -Value for the command given by the client. +Group name to which the user belongs. type: keyword -- -*`zeek.irc.addl`*:: +*`sophos.xg.user_group`*:: + -- -Any additional data for the command. +Group name to which the user belongs type: keyword -- - - -*`zeek.irc.dcc.file.name`*:: +*`sophos.xg.user_name`*:: + -- -Present if base/protocols/irc/dcc-send.bro is loaded. -DCC filename requested. +user_name type: keyword -- -*`zeek.irc.dcc.file.size`*:: +*`sophos.xg.users`*:: + -- -Present if base/protocols/irc/dcc-send.bro is loaded. -Size of the DCC transfer as indicated by the sender. +Number of users from System Health / Live User events. type: long -- -*`zeek.irc.dcc.mime_type`*:: +*`sophos.xg.vconn_id`*:: + -- -present if base/protocols/irc/dcc-send.bro is loaded. -Sniffed mime type of the file. +Connection ID of the master connection -type: keyword +type: integer -- -*`zeek.irc.fuid`*:: +*`sophos.xg.virus`*:: + -- -present if base/protocols/irc/files.bro is loaded. -File unique ID. +virus name type: keyword -- -[float] -=== kerberos - -Fields exported by the Zeek Kerberos log - - - -*`zeek.kerberos.request_type`*:: +*`sophos.xg.web_policy_id`*:: + -- -Request type - Authentication Service (AS) or Ticket Granting Service (TGS). +Web policy ID type: keyword -- -*`zeek.kerberos.client`*:: +*`sophos.xg.website`*:: + -- -Client name. +Website type: keyword -- -*`zeek.kerberos.service`*:: +*`sophos.xg.xss`*:: + -- -Service name. +related XSS caught by the WAF type: keyword -- -*`zeek.kerberos.success`*:: -+ --- -Request result. +[[exported-fields-suricata]] +== Suricata fields + +Module for handling the EVE JSON logs produced by Suricata. -type: boolean --- +[float] +=== suricata +Fields from the Suricata EVE log file. -*`zeek.kerberos.error.code`*:: -+ --- -Error code. -type: integer +[float] +=== eve --- +Fields exported by the EVE JSON logs -*`zeek.kerberos.error.msg`*:: + + +*`suricata.eve.event_type`*:: + -- -Error message. +type: keyword +-- +*`suricata.eve.app_proto_orig`*:: ++ +-- type: keyword -- -*`zeek.kerberos.valid.from`*:: +*`suricata.eve.tcp.tcp_flags`*:: + -- -Ticket valid from. - - -type: date +type: keyword -- -*`zeek.kerberos.valid.until`*:: +*`suricata.eve.tcp.psh`*:: + -- -Ticket valid until. - - -type: date +type: boolean -- -*`zeek.kerberos.valid.days`*:: +*`suricata.eve.tcp.tcp_flags_tc`*:: + -- -Number of days the ticket is valid for. +type: keyword +-- -type: integer +*`suricata.eve.tcp.ack`*:: ++ +-- +type: boolean -- -*`zeek.kerberos.cipher`*:: +*`suricata.eve.tcp.syn`*:: + -- -Ticket encryption type. +type: boolean +-- +*`suricata.eve.tcp.state`*:: ++ +-- type: keyword -- -*`zeek.kerberos.forwardable`*:: +*`suricata.eve.tcp.tcp_flags_ts`*:: + -- -Forwardable ticket requested. +type: keyword +-- +*`suricata.eve.tcp.rst`*:: ++ +-- type: boolean -- -*`zeek.kerberos.renewable`*:: +*`suricata.eve.tcp.fin`*:: + -- -Renewable ticket requested. - - type: boolean -- -*`zeek.kerberos.ticket.auth`*:: +*`suricata.eve.fileinfo.sha1`*:: + -- -Hash of ticket used to authorize request/transaction. - - type: keyword -- -*`zeek.kerberos.ticket.new`*:: +*`suricata.eve.fileinfo.tx_id`*:: + -- -Hash of ticket returned by the KDC. +type: long +-- +*`suricata.eve.fileinfo.state`*:: ++ +-- type: keyword -- +*`suricata.eve.fileinfo.stored`*:: ++ +-- +type: boolean +-- -*`zeek.kerberos.cert.client.value`*:: +*`suricata.eve.fileinfo.gaps`*:: + -- -Client certificate. +type: boolean +-- +*`suricata.eve.fileinfo.sha256`*:: ++ +-- type: keyword -- -*`zeek.kerberos.cert.client.fuid`*:: +*`suricata.eve.fileinfo.md5`*:: + -- -File unique ID of client cert. - - type: keyword -- -*`zeek.kerberos.cert.client.subject`*:: +*`suricata.eve.icmp_type`*:: + -- -Subject of client certificate. +type: long +-- -type: keyword +*`suricata.eve.pcap_cnt`*:: ++ +-- +type: long -- -*`zeek.kerberos.cert.server.value`*:: +*`suricata.eve.dns.type`*:: + -- -Server certificate. - - type: keyword -- -*`zeek.kerberos.cert.server.fuid`*:: +*`suricata.eve.dns.rrtype`*:: + -- -File unique ID of server certificate. - - type: keyword -- -*`zeek.kerberos.cert.server.subject`*:: +*`suricata.eve.dns.rrname`*:: + -- -Subject of server certificate. - - type: keyword -- -[float] -=== modbus +*`suricata.eve.dns.rdata`*:: ++ +-- +type: keyword -Fields exported by the Zeek modbus log. +-- +*`suricata.eve.dns.tx_id`*:: ++ +-- +type: long +-- -*`zeek.modbus.function`*:: +*`suricata.eve.dns.ttl`*:: + -- -The name of the function message that was sent. +type: long +-- +*`suricata.eve.dns.rcode`*:: ++ +-- type: keyword -- -*`zeek.modbus.exception`*:: +*`suricata.eve.dns.id`*:: + -- -The exception if the response was a failure. - - -type: keyword +type: long -- -*`zeek.modbus.track_address`*:: +*`suricata.eve.flow_id`*:: + -- -Present if policy/protocols/modbus/track-memmap.bro is loaded. -Modbus track address. +type: keyword +-- -type: integer +*`suricata.eve.email.status`*:: ++ -- +type: keyword -[float] -=== mysql +-- -Fields exported by the Zeek MySQL log. +*`suricata.eve.icmp_code`*:: ++ +-- +type: long +-- -*`zeek.mysql.cmd`*:: +*`suricata.eve.http.redirect`*:: + -- -The command that was issued. +type: keyword +-- +*`suricata.eve.http.protocol`*:: ++ +-- type: keyword -- -*`zeek.mysql.arg`*:: +*`suricata.eve.http.http_content_type`*:: + -- -The argument issued to the command. +type: keyword +-- +*`suricata.eve.in_iface`*:: ++ +-- type: keyword -- -*`zeek.mysql.success`*:: + +*`suricata.eve.alert.metadata`*:: + -- -Whether the command succeeded. - +Metadata about the alert. -type: boolean +type: flattened -- -*`zeek.mysql.rows`*:: +*`suricata.eve.alert.category`*:: + -- -The number of affected rows, if any. +type: keyword +-- -type: integer +*`suricata.eve.alert.rev`*:: ++ +-- +type: long -- -*`zeek.mysql.response`*:: +*`suricata.eve.alert.gid`*:: + -- -Server message, if any. +type: long +-- +*`suricata.eve.alert.signature`*:: ++ +-- type: keyword -- -[float] -=== notice +*`suricata.eve.alert.signature_id`*:: ++ +-- +type: long -Fields exported by the Zeek Notice log. +-- +*`suricata.eve.alert.protocols`*:: ++ +-- +type: keyword +-- -*`zeek.notice.connection_id`*:: +*`suricata.eve.alert.attack_target`*:: + -- -Identifier of the related connection session. - - type: keyword -- -*`zeek.notice.icmp_id`*:: +*`suricata.eve.alert.capec_id`*:: + -- -Identifier of the related ICMP session. - - type: keyword -- -*`zeek.notice.file.id`*:: +*`suricata.eve.alert.cwe_id`*:: + -- -An identifier associated with a single file that is related to this notice. - - type: keyword -- -*`zeek.notice.file.parent_id`*:: +*`suricata.eve.alert.malware`*:: + -- -Identifier associated with a container file from which this one was extracted. - - type: keyword -- -*`zeek.notice.file.source`*:: +*`suricata.eve.alert.cve`*:: + -- -An identification of the source of the file data. E.g. it may be a network protocol -over which it was transferred, or a local file path which was read, or some other -input source. - - type: keyword -- -*`zeek.notice.file.mime_type`*:: +*`suricata.eve.alert.cvss_v2_base`*:: + -- -A mime type if the notice is related to a file. - - type: keyword -- -*`zeek.notice.file.is_orig`*:: +*`suricata.eve.alert.cvss_v2_temporal`*:: + -- -If the source of this file is a network connection, this field indicates if the file is -being sent by the originator of the connection or the responder. - - -type: boolean +type: keyword -- -*`zeek.notice.file.seen_bytes`*:: +*`suricata.eve.alert.cvss_v3_base`*:: + -- -Number of bytes provided to the file analysis engine for the file. - - -type: long +type: keyword -- -*`zeek.notice.ffile.total_bytes`*:: +*`suricata.eve.alert.cvss_v3_temporal`*:: + -- -Total number of bytes that are supposed to comprise the full file. - - -type: long +type: keyword -- -*`zeek.notice.file.missing_bytes`*:: +*`suricata.eve.alert.priority`*:: + -- -The number of bytes in the file stream that were completely missed during the process -of analysis. +type: keyword +-- -type: long +*`suricata.eve.alert.hostile`*:: ++ +-- +type: keyword -- -*`zeek.notice.file.overflow_bytes`*:: +*`suricata.eve.alert.infected`*:: + -- -The number of bytes in the file stream that were not delivered to stream file analyzers. -This could be overlapping bytes or bytes that couldn't be reassembled. +type: keyword +-- -type: long +*`suricata.eve.alert.created_at`*:: ++ +-- +type: date -- -*`zeek.notice.fuid`*:: +*`suricata.eve.alert.updated_at`*:: + -- -A file unique ID if this notice is related to a file. +type: date +-- +*`suricata.eve.alert.classtype`*:: ++ +-- type: keyword -- -*`zeek.notice.note`*:: +*`suricata.eve.alert.rule_source`*:: + -- -The type of the notice. - - type: keyword -- -*`zeek.notice.msg`*:: +*`suricata.eve.alert.sid`*:: + -- -The human readable message for the notice. - - type: keyword -- -*`zeek.notice.sub`*:: +*`suricata.eve.alert.affected_product`*:: + -- -The human readable sub-message. - - type: keyword -- -*`zeek.notice.n`*:: +*`suricata.eve.alert.deployment`*:: + -- -Associated count, or a status code. - - -type: long +type: keyword -- -*`zeek.notice.peer_name`*:: +*`suricata.eve.alert.former_category`*:: + -- -Name of remote peer that raised this notice. - - type: keyword -- -*`zeek.notice.peer_descr`*:: +*`suricata.eve.alert.mitre_tool_id`*:: + -- -Textual description for the peer that raised this notice. - - -type: text +type: keyword -- -*`zeek.notice.actions`*:: +*`suricata.eve.alert.performance_impact`*:: + -- -The actions which have been applied to this notice. +type: keyword +-- +*`suricata.eve.alert.signature_severity`*:: ++ +-- type: keyword -- -*`zeek.notice.email_body_sections`*:: +*`suricata.eve.alert.tag`*:: + -- -By adding chunks of text into this element, other scripts can expand on notices -that are being emailed. +type: keyword +-- -type: text --- -*`zeek.notice.email_delay_tokens`*:: +*`suricata.eve.ssh.client.proto_version`*:: + -- -Adding a string token to this set will cause the built-in emailing functionality -to delay sending the email either the token has been removed or the email -has been delayed for the specified time duration. - - type: keyword -- -*`zeek.notice.identifier`*:: +*`suricata.eve.ssh.client.software_version`*:: + -- -This field is provided when a notice is generated for the purpose of deduplicating notices. - - type: keyword -- -*`zeek.notice.suppress_for`*:: + +*`suricata.eve.ssh.server.proto_version`*:: + -- -This field indicates the length of time that this unique notice should be suppressed. - - -type: double +type: keyword -- -*`zeek.notice.dropped`*:: +*`suricata.eve.ssh.server.software_version`*:: + -- -Indicate if the source IP address was dropped and denied network access. - - -type: boolean +type: keyword -- -[float] -=== ntlm -Fields exported by the Zeek NTLM log. +*`suricata.eve.stats.capture.kernel_packets`*:: ++ +-- +type: long +-- -*`zeek.ntlm.domain`*:: +*`suricata.eve.stats.capture.kernel_drops`*:: + -- -Domain name given by the client. +type: long +-- -type: keyword +*`suricata.eve.stats.capture.kernel_ifdrops`*:: ++ +-- +type: long -- -*`zeek.ntlm.hostname`*:: +*`suricata.eve.stats.uptime`*:: + -- -Hostname given by the client. +type: long +-- -type: keyword +*`suricata.eve.stats.detect.alert`*:: ++ -- +type: long -*`zeek.ntlm.success`*:: -+ -- -Indicate whether or not the authentication was successful. -type: boolean +*`suricata.eve.stats.http.memcap`*:: ++ +-- +type: long -- -*`zeek.ntlm.username`*:: +*`suricata.eve.stats.http.memuse`*:: + -- -Username given by the client. - - -type: keyword +type: long -- - -*`zeek.ntlm.server.name.dns`*:: +*`suricata.eve.stats.file_store.open_files`*:: + -- -DNS name given by the server in a CHALLENGE. +type: long +-- -type: keyword +*`suricata.eve.stats.defrag.max_frag_hits`*:: ++ -- +type: long -*`zeek.ntlm.server.name.netbios`*:: -+ -- -NetBIOS name given by the server in a CHALLENGE. -type: keyword +*`suricata.eve.stats.defrag.ipv4.timeouts`*:: ++ +-- +type: long -- -*`zeek.ntlm.server.name.tree`*:: +*`suricata.eve.stats.defrag.ipv4.fragments`*:: + -- -Tree name given by the server in a CHALLENGE. - - -type: keyword +type: long -- -[float] -=== ntp - -Fields exported by the Zeek NTP log. +*`suricata.eve.stats.defrag.ipv4.reassembled`*:: ++ +-- +type: long +-- -*`zeek.ntp.version`*:: +*`suricata.eve.stats.defrag.ipv6.timeouts`*:: + -- -The NTP version number (1, 2, 3, 4). +type: long +-- -type: integer +*`suricata.eve.stats.defrag.ipv6.fragments`*:: ++ +-- +type: long -- -*`zeek.ntp.mode`*:: +*`suricata.eve.stats.defrag.ipv6.reassembled`*:: + -- -The NTP mode being used. +type: long + +-- -type: integer +*`suricata.eve.stats.flow.tcp_reuse`*:: ++ +-- +type: long -- -*`zeek.ntp.stratum`*:: +*`suricata.eve.stats.flow.udp`*:: + -- -The stratum (primary server, secondary server, etc.). +type: long +-- -type: integer +*`suricata.eve.stats.flow.memcap`*:: ++ +-- +type: long -- -*`zeek.ntp.poll`*:: +*`suricata.eve.stats.flow.emerg_mode_entered`*:: + -- -The maximum interval between successive messages in seconds. +type: long +-- -type: double +*`suricata.eve.stats.flow.emerg_mode_over`*:: ++ +-- +type: long -- -*`zeek.ntp.precision`*:: +*`suricata.eve.stats.flow.tcp`*:: + -- -The precision of the system clock in seconds. +type: long +-- -type: double +*`suricata.eve.stats.flow.icmpv6`*:: ++ +-- +type: long -- -*`zeek.ntp.root_delay`*:: +*`suricata.eve.stats.flow.icmpv4`*:: + -- -Total round-trip delay to the reference clock in seconds. +type: long +-- -type: double +*`suricata.eve.stats.flow.spare`*:: ++ +-- +type: long -- -*`zeek.ntp.root_disp`*:: +*`suricata.eve.stats.flow.memuse`*:: + -- -Total dispersion to the reference clock in seconds. +type: long +-- -type: double +*`suricata.eve.stats.tcp.pseudo_failed`*:: ++ -- +type: long -*`zeek.ntp.ref_id`*:: +-- + +*`suricata.eve.stats.tcp.ssn_memcap_drop`*:: + -- -For stratum 0, 4 character string used for debugging. For stratum 1, ID assigned to the reference clock by IANA. Above stratum 1, when using IPv4, the IP address of the reference clock. Note that the NTP protocol did not originally specify a large enough field to represent IPv6 addresses, so they use the first four bytes of the MD5 hash of the reference clock’s IPv6 address (i.e. an IPv4 address here is not necessarily IPv4). +type: long +-- -type: keyword +*`suricata.eve.stats.tcp.insert_data_overlap_fail`*:: ++ +-- +type: long -- -*`zeek.ntp.ref_time`*:: +*`suricata.eve.stats.tcp.sessions`*:: + -- -Time when the system clock was last set or correct. +type: long +-- -type: date +*`suricata.eve.stats.tcp.pseudo`*:: ++ +-- +type: long -- -*`zeek.ntp.org_time`*:: +*`suricata.eve.stats.tcp.synack`*:: + -- -Time at the client when the request departed for the NTP server. +type: long +-- -type: date +*`suricata.eve.stats.tcp.insert_data_normal_fail`*:: ++ +-- +type: long -- -*`zeek.ntp.rec_time`*:: +*`suricata.eve.stats.tcp.syn`*:: + -- -Time at the server when the request arrived from the NTP client. +type: long +-- -type: date +*`suricata.eve.stats.tcp.memuse`*:: ++ +-- +type: long -- -*`zeek.ntp.xmt_time`*:: +*`suricata.eve.stats.tcp.invalid_checksum`*:: + -- -Time at the server when the response departed for the NTP client. +type: long +-- -type: date +*`suricata.eve.stats.tcp.segment_memcap_drop`*:: ++ +-- +type: long -- -*`zeek.ntp.num_exts`*:: +*`suricata.eve.stats.tcp.overlap`*:: + -- -Number of extension fields (which are not currently parsed). +type: long +-- -type: integer +*`suricata.eve.stats.tcp.insert_list_fail`*:: ++ +-- +type: long -- -[float] -=== ocsp +*`suricata.eve.stats.tcp.rst`*:: ++ +-- +type: long -Fields exported by the Zeek OCSP log -Online Certificate Status Protocol (OCSP). Only created if policy script is loaded. +-- +*`suricata.eve.stats.tcp.stream_depth_reached`*:: ++ +-- +type: long +-- -*`zeek.ocsp.file_id`*:: +*`suricata.eve.stats.tcp.reassembly_memuse`*:: + -- -File id of the OCSP reply. - +type: long -type: keyword +-- +*`suricata.eve.stats.tcp.reassembly_gap`*:: ++ -- +type: long +-- -*`zeek.ocsp.hash.algorithm`*:: +*`suricata.eve.stats.tcp.overlap_diff_data`*:: + -- -Hash algorithm used to generate issuerNameHash and issuerKeyHash. +type: long +-- -type: keyword +*`suricata.eve.stats.tcp.no_flow`*:: ++ +-- +type: long -- -*`zeek.ocsp.hash.issuer.name`*:: +*`suricata.eve.stats.decoder.avg_pkt_size`*:: + -- -Hash of the issuer's distingueshed name. - - -type: keyword +type: long -- -*`zeek.ocsp.hash.issuer.key`*:: +*`suricata.eve.stats.decoder.bytes`*:: + -- -Hash of the issuer's public key. +type: long +-- -type: keyword +*`suricata.eve.stats.decoder.tcp`*:: ++ +-- +type: long -- -*`zeek.ocsp.serial_number`*:: +*`suricata.eve.stats.decoder.raw`*:: + -- -Serial number of the affected certificate. +type: long +-- -type: keyword +*`suricata.eve.stats.decoder.ppp`*:: ++ +-- +type: long -- -*`zeek.ocsp.status`*:: +*`suricata.eve.stats.decoder.vlan_qinq`*:: + -- -Status of the affected certificate. +type: long +-- -type: keyword +*`suricata.eve.stats.decoder.null`*:: ++ +-- +type: long -- -*`zeek.ocsp.revoke.time`*:: +*`suricata.eve.stats.decoder.ltnull.unsupported_type`*:: + -- -Time at which the certificate was revoked. - - -type: date +type: long -- -*`zeek.ocsp.revoke.reason`*:: +*`suricata.eve.stats.decoder.ltnull.pkt_too_small`*:: + -- -Reason for which the certificate was revoked. - +type: long -type: keyword +-- +*`suricata.eve.stats.decoder.invalid`*:: ++ -- +type: long +-- -*`zeek.ocsp.update.this`*:: +*`suricata.eve.stats.decoder.gre`*:: + -- -The time at which the status being shows is known to have been correct. +type: long +-- -type: date +*`suricata.eve.stats.decoder.ipv4`*:: ++ +-- +type: long -- -*`zeek.ocsp.update.next`*:: +*`suricata.eve.stats.decoder.ipv6`*:: + -- -The latest time at which new information about the status of the certificate will be available. - +type: long -type: date +-- +*`suricata.eve.stats.decoder.pkts`*:: ++ -- +type: long -[float] -=== pe +-- -Fields exported by the Zeek pe log. +*`suricata.eve.stats.decoder.ipv6_in_ipv6`*:: ++ +-- +type: long +-- -*`zeek.pe.client`*:: +*`suricata.eve.stats.decoder.ipraw.invalid_ip_version`*:: + -- -The client's version string. - - -type: keyword +type: long -- -*`zeek.pe.id`*:: +*`suricata.eve.stats.decoder.pppoe`*:: + -- -File id of this portable executable file. - - -type: keyword +type: long -- -*`zeek.pe.machine`*:: +*`suricata.eve.stats.decoder.udp`*:: + -- -The target machine that the file was compiled for. +type: long +-- -type: keyword + +*`suricata.eve.stats.decoder.dce.pkt_too_small`*:: ++ +-- +type: long -- -*`zeek.pe.compile_time`*:: +*`suricata.eve.stats.decoder.vlan`*:: + -- -The time that the file was created at. - - -type: date +type: long -- -*`zeek.pe.os`*:: +*`suricata.eve.stats.decoder.sctp`*:: + -- -The required operating system. - - -type: keyword +type: long -- -*`zeek.pe.subsystem`*:: +*`suricata.eve.stats.decoder.max_pkt_size`*:: + -- -The subsystem that is required to run this file. - - -type: keyword +type: long -- -*`zeek.pe.is_exe`*:: +*`suricata.eve.stats.decoder.teredo`*:: + -- -Is the file an executable, or just an object file? - - -type: boolean +type: long -- -*`zeek.pe.is_64bit`*:: +*`suricata.eve.stats.decoder.mpls`*:: + -- -Is the file a 64-bit executable? - - -type: boolean +type: long -- -*`zeek.pe.uses_aslr`*:: +*`suricata.eve.stats.decoder.sll`*:: + -- -Does the file support Address Space Layout Randomization? - - -type: boolean +type: long -- -*`zeek.pe.uses_dep`*:: +*`suricata.eve.stats.decoder.icmpv6`*:: + -- -Does the file support Data Execution Prevention? - - -type: boolean +type: long -- -*`zeek.pe.uses_code_integrity`*:: +*`suricata.eve.stats.decoder.icmpv4`*:: + -- -Does the file enforce code integrity checks? - - -type: boolean +type: long -- -*`zeek.pe.uses_seh`*:: +*`suricata.eve.stats.decoder.erspan`*:: + -- -Does the file use structured exception handing? - - -type: boolean +type: long -- -*`zeek.pe.has_import_table`*:: +*`suricata.eve.stats.decoder.ethernet`*:: + -- -Does the file have an import table? - - -type: boolean +type: long -- -*`zeek.pe.has_export_table`*:: +*`suricata.eve.stats.decoder.ipv4_in_ipv6`*:: + -- -Does the file have an export table? - - -type: boolean +type: long -- -*`zeek.pe.has_cert_table`*:: +*`suricata.eve.stats.decoder.ieee8021ah`*:: + -- -Does the file have an attribute certificate table? - - -type: boolean +type: long -- -*`zeek.pe.has_debug_data`*:: + +*`suricata.eve.stats.dns.memcap_global`*:: + -- -Does the file have a debug table? - - -type: boolean +type: long -- -*`zeek.pe.section_names`*:: +*`suricata.eve.stats.dns.memcap_state`*:: + -- -The names of the sections, in order. - - -type: keyword +type: long -- -[float] -=== radius - -Fields exported by the Zeek Radius log. +*`suricata.eve.stats.dns.memuse`*:: ++ +-- +type: long +-- -*`zeek.radius.username`*:: +*`suricata.eve.stats.flow_mgr.rows_busy`*:: + -- -The username, if present. - - -type: keyword +type: long -- -*`zeek.radius.mac`*:: +*`suricata.eve.stats.flow_mgr.flows_timeout`*:: + -- -MAC address, if present. - - -type: keyword +type: long -- -*`zeek.radius.framed_addr`*:: +*`suricata.eve.stats.flow_mgr.flows_notimeout`*:: + -- -The address given to the network access server, if present. This is only a hint from the RADIUS server and the network access server is not required to honor the address. - - -type: ip +type: long -- -*`zeek.radius.remote_ip`*:: +*`suricata.eve.stats.flow_mgr.rows_skipped`*:: + -- -Remote IP address, if present. This is collected from the Tunnel-Client-Endpoint attribute. - - -type: ip +type: long -- -*`zeek.radius.connect_info`*:: +*`suricata.eve.stats.flow_mgr.closed_pruned`*:: + -- -Connect info, if present. - - -type: keyword +type: long -- -*`zeek.radius.reply_msg`*:: +*`suricata.eve.stats.flow_mgr.new_pruned`*:: + -- -Reply message from the server challenge. This is frequently shown to the user authenticating. +type: long +-- -type: keyword +*`suricata.eve.stats.flow_mgr.flows_removed`*:: ++ +-- +type: long -- -*`zeek.radius.result`*:: +*`suricata.eve.stats.flow_mgr.bypassed_pruned`*:: + -- -Successful or failed authentication. +type: long +-- -type: keyword +*`suricata.eve.stats.flow_mgr.est_pruned`*:: ++ +-- +type: long -- -*`zeek.radius.ttl`*:: +*`suricata.eve.stats.flow_mgr.flows_timeout_inuse`*:: + -- -The duration between the first request and either the "Access-Accept" message or an error. If the field is empty, it means that either the request or response was not seen. +type: long +-- -type: integer +*`suricata.eve.stats.flow_mgr.flows_checked`*:: ++ +-- +type: long -- -*`zeek.radius.logged`*:: +*`suricata.eve.stats.flow_mgr.rows_maxlen`*:: + -- -Whether this has already been logged and can be ignored. +type: long +-- -type: boolean +*`suricata.eve.stats.flow_mgr.rows_checked`*:: ++ +-- +type: long -- -[float] -=== rdp +*`suricata.eve.stats.flow_mgr.rows_empty`*:: ++ +-- +type: long -Fields exported by the Zeek RDP log. +-- -*`zeek.rdp.cookie`*:: +*`suricata.eve.stats.app_layer.flow.tls`*:: + -- -Cookie value used by the client machine. This is typically a username. - - -type: keyword +type: long -- -*`zeek.rdp.result`*:: +*`suricata.eve.stats.app_layer.flow.ftp`*:: + -- -Status result for the connection. It's a mix between RDP negotation failure messages and GCC server create response messages. - - -type: keyword +type: long -- -*`zeek.rdp.security_protocol`*:: +*`suricata.eve.stats.app_layer.flow.http`*:: + -- -Security protocol chosen by the server. - - -type: keyword +type: long -- -*`zeek.rdp.keyboard_layout`*:: +*`suricata.eve.stats.app_layer.flow.failed_udp`*:: + -- -Keyboard layout (language) of the client machine. - - -type: keyword +type: long -- - -*`zeek.rdp.client.build`*:: +*`suricata.eve.stats.app_layer.flow.dns_udp`*:: + -- -RDP client version used by the client machine. - - -type: keyword +type: long -- -*`zeek.rdp.client.client_name`*:: +*`suricata.eve.stats.app_layer.flow.dns_tcp`*:: + -- -Name of the client machine. - - -type: keyword +type: long -- -*`zeek.rdp.client.product_id`*:: +*`suricata.eve.stats.app_layer.flow.smtp`*:: + -- -Product ID of the client machine. - - -type: keyword +type: long -- - -*`zeek.rdp.desktop.width`*:: +*`suricata.eve.stats.app_layer.flow.failed_tcp`*:: + -- -Desktop width of the client machine. - - -type: integer +type: long -- -*`zeek.rdp.desktop.height`*:: +*`suricata.eve.stats.app_layer.flow.msn`*:: + -- -Desktop height of the client machine. - - -type: integer +type: long -- -*`zeek.rdp.desktop.color_depth`*:: +*`suricata.eve.stats.app_layer.flow.ssh`*:: + -- -The color depth requested by the client in the high_color_depth field. - - -type: keyword +type: long -- - -*`zeek.rdp.cert.type`*:: +*`suricata.eve.stats.app_layer.flow.imap`*:: + -- -If the connection is being encrypted with native RDP encryption, this is the type of cert being used. - - -type: keyword +type: long -- -*`zeek.rdp.cert.count`*:: +*`suricata.eve.stats.app_layer.flow.dcerpc_udp`*:: + -- -The number of certs seen. X.509 can transfer an entire certificate chain. - - -type: integer +type: long -- -*`zeek.rdp.cert.permanent`*:: +*`suricata.eve.stats.app_layer.flow.dcerpc_tcp`*:: + -- -Indicates if the provided certificate or certificate chain is permanent or temporary. +type: long +-- -type: boolean +*`suricata.eve.stats.app_layer.flow.smb`*:: ++ +-- +type: long -- -*`zeek.rdp.encryption.level`*:: +*`suricata.eve.stats.app_layer.tx.tls`*:: + -- -Encryption level of the connection. +type: long +-- -type: keyword +*`suricata.eve.stats.app_layer.tx.ftp`*:: ++ +-- +type: long -- -*`zeek.rdp.encryption.method`*:: +*`suricata.eve.stats.app_layer.tx.http`*:: + -- -Encryption method of the connection. +type: long +-- -type: keyword +*`suricata.eve.stats.app_layer.tx.dns_udp`*:: ++ +-- +type: long -- -*`zeek.rdp.done`*:: +*`suricata.eve.stats.app_layer.tx.dns_tcp`*:: + -- -Track status of logging RDP connections. +type: long +-- -type: boolean +*`suricata.eve.stats.app_layer.tx.smtp`*:: ++ +-- +type: long -- -*`zeek.rdp.ssl`*:: +*`suricata.eve.stats.app_layer.tx.ssh`*:: + -- -(present if policy/protocols/rdp/indicate_ssl.bro is loaded) -Flag the connection if it was seen over SSL. - +type: long -type: boolean +-- +*`suricata.eve.stats.app_layer.tx.dcerpc_udp`*:: ++ -- +type: long -[float] -=== rfb +-- -Fields exported by the Zeek RFB log. +*`suricata.eve.stats.app_layer.tx.dcerpc_tcp`*:: ++ +-- +type: long +-- +*`suricata.eve.stats.app_layer.tx.smb`*:: ++ +-- +type: long +-- -*`zeek.rfb.version.client.major`*:: +*`suricata.eve.tls.notbefore`*:: + -- -Major version of the client. - - -type: keyword +type: date -- -*`zeek.rfb.version.client.minor`*:: +*`suricata.eve.tls.issuerdn`*:: + -- -Minor version of the client. - - type: keyword -- - -*`zeek.rfb.version.server.major`*:: +*`suricata.eve.tls.sni`*:: + -- -Major version of the server. - - type: keyword -- -*`zeek.rfb.version.server.minor`*:: +*`suricata.eve.tls.version`*:: + -- -Minor version of the server. - - type: keyword -- - -*`zeek.rfb.auth.success`*:: +*`suricata.eve.tls.session_resumed`*:: + -- -Whether or not authentication was successful. - - type: boolean -- -*`zeek.rfb.auth.method`*:: +*`suricata.eve.tls.fingerprint`*:: + -- -Identifier of authentication method used. - - type: keyword -- -*`zeek.rfb.share_flag`*:: +*`suricata.eve.tls.serial`*:: + -- -Whether the client has an exclusive or a shared session. - - -type: boolean +type: keyword -- -*`zeek.rfb.desktop_name`*:: +*`suricata.eve.tls.notafter`*:: + -- -Name of the screen that is being shared. +type: date +-- +*`suricata.eve.tls.subject`*:: ++ +-- type: keyword -- -*`zeek.rfb.width`*:: + +*`suricata.eve.tls.ja3s.string`*:: + -- -Width of the screen that is being shared. - - -type: integer +type: keyword -- -*`zeek.rfb.height`*:: +*`suricata.eve.tls.ja3s.hash`*:: + -- -Height of the screen that is being shared. - - -type: integer +type: keyword -- -[float] -=== signature - -Fields exported by the Zeek Signature log. - - -*`zeek.signature.note`*:: +*`suricata.eve.tls.ja3.string`*:: + -- -Notice associated with signature event. - - type: keyword -- -*`zeek.signature.sig_id`*:: +*`suricata.eve.tls.ja3.hash`*:: + -- -The name of the signature that matched. - - type: keyword -- -*`zeek.signature.event_msg`*:: +*`suricata.eve.app_proto_ts`*:: + -- -A more descriptive message of the signature-matching event. - - type: keyword -- -*`zeek.signature.sub_msg`*:: + +*`suricata.eve.flow.age`*:: + -- -Extracted payload data or extra message. +type: long +-- +*`suricata.eve.flow.state`*:: ++ +-- type: keyword -- -*`zeek.signature.sig_count`*:: +*`suricata.eve.flow.reason`*:: + -- -Number of sigs, usually from summary count. - - -type: integer +type: keyword -- -*`zeek.signature.host_count`*:: +*`suricata.eve.flow.alerted`*:: + -- -Number of hosts, from a summary count. - - -type: integer +type: boolean -- -[float] -=== sip - -Fields exported by the Zeek SIP log. - - - -*`zeek.sip.transaction_depth`*:: +*`suricata.eve.tx_id`*:: + -- -Represents the pipelined depth into the connection of this request/response transaction. +type: long +-- -type: integer +*`suricata.eve.app_proto_tc`*:: ++ +-- +type: keyword -- -*`zeek.sip.sequence.method`*:: +*`suricata.eve.smtp.rcpt_to`*:: + -- -Verb used in the SIP request (INVITE, REGISTER etc.). - - type: keyword -- -*`zeek.sip.sequence.number`*:: +*`suricata.eve.smtp.mail_from`*:: + -- -Contents of the CSeq: header from the client. - - type: keyword -- -*`zeek.sip.uri`*:: +*`suricata.eve.smtp.helo`*:: + -- -URI used in the request. - - type: keyword -- -*`zeek.sip.date`*:: +*`suricata.eve.app_proto_expected`*:: + -- -Contents of the Date: header from the client. - - type: keyword -- +[[exported-fields-system]] +== System fields -*`zeek.sip.request.from`*:: -+ --- -Contents of the request From: header Note: The tag= value that's usually appended to the sender is stripped off and not logged. +Module for parsing system log files. -type: keyword --- +[float] +=== system -*`zeek.sip.request.to`*:: -+ --- -Contents of the To: header. +Fields from the system log files. -type: keyword --- +[float] +=== auth + +Fields from the Linux authorization logs. + + -*`zeek.sip.request.path`*:: +*`system.auth.timestamp`*:: + -- -The client message transmission path, as extracted from the headers. - +type: alias -type: keyword +alias to: @timestamp -- -*`zeek.sip.request.body_length`*:: +*`system.auth.hostname`*:: + -- -Contents of the Content-Length: header from the client. - +type: alias -type: long +alias to: host.hostname -- - -*`zeek.sip.response.from`*:: +*`system.auth.program`*:: + -- -Contents of the response From: header Note: The tag= value that's usually appended to the sender is stripped off and not logged. - +type: alias -type: keyword +alias to: process.name -- -*`zeek.sip.response.to`*:: +*`system.auth.pid`*:: + -- -Contents of the response To: header. - +type: alias -type: keyword +alias to: process.pid -- -*`zeek.sip.response.path`*:: +*`system.auth.message`*:: + -- -The server message transmission path, as extracted from the headers. - +type: alias -type: keyword +alias to: message -- -*`zeek.sip.response.body_length`*:: +*`system.auth.user`*:: + -- -Contents of the Content-Length: header from the server. - +type: alias -type: long +alias to: user.name -- -*`zeek.sip.reply_to`*:: + +*`system.auth.ssh.method`*:: + -- -Contents of the Reply-To: header. - +The SSH authentication method. Can be one of "password" or "publickey". -type: keyword -- -*`zeek.sip.call_id`*:: +*`system.auth.ssh.signature`*:: + -- -Contents of the Call-ID: header from the client. - +The signature of the client public key. -type: keyword -- -*`zeek.sip.subject`*:: +*`system.auth.ssh.dropped_ip`*:: + -- -Contents of the Subject: header from the client. +The client IP from SSH connections that are open and immediately dropped. -type: keyword +type: ip -- -*`zeek.sip.user_agent`*:: +*`system.auth.ssh.event`*:: + -- -Contents of the User-Agent: header from the client. +The SSH event as found in the logs (Accepted, Invalid, Failed, etc.) -type: keyword +example: Accepted -- - -*`zeek.sip.status.code`*:: +*`system.auth.ssh.ip`*:: + -- -Status code returned by the server. - +type: alias -type: integer +alias to: source.ip -- -*`zeek.sip.status.msg`*:: +*`system.auth.ssh.port`*:: + -- -Status message returned by the server. - +type: alias -type: keyword +alias to: source.port -- -*`zeek.sip.warning`*:: + +*`system.auth.ssh.geoip.continent_name`*:: + -- -Contents of the Warning: header. - +type: alias -type: keyword +alias to: source.geo.continent_name -- -*`zeek.sip.content_type`*:: +*`system.auth.ssh.geoip.country_iso_code`*:: + -- -Contents of the Content-Type: header from the server. - +type: alias -type: keyword +alias to: source.geo.country_iso_code -- -[float] -=== smb_cmd - -Fields exported by the Zeek smb_cmd log. +*`system.auth.ssh.geoip.location`*:: ++ +-- +type: alias +alias to: source.geo.location +-- -*`zeek.smb_cmd.command`*:: +*`system.auth.ssh.geoip.region_name`*:: + -- -The command sent by the client. - +type: alias -type: keyword +alias to: source.geo.region_name -- -*`zeek.smb_cmd.sub_command`*:: +*`system.auth.ssh.geoip.city_name`*:: + -- -The subcommand sent by the client, if present. - +type: alias -type: keyword +alias to: source.geo.city_name -- -*`zeek.smb_cmd.argument`*:: +*`system.auth.ssh.geoip.region_iso_code`*:: + -- -Command argument sent by the client, if any. - +type: alias -type: keyword +alias to: source.geo.region_iso_code -- -*`zeek.smb_cmd.status`*:: -+ --- -Server reply to the client's command. +[float] +=== sudo +Fields specific to events created by the `sudo` command. -type: keyword --- -*`zeek.smb_cmd.rtt`*:: +*`system.auth.sudo.error`*:: + -- -Round trip time from the request to the response. +The error message in case the sudo command failed. -type: double +example: user NOT in sudoers -- -*`zeek.smb_cmd.version`*:: +*`system.auth.sudo.tty`*:: + -- -Version of SMB for the command. - +The TTY where the sudo command is executed. -type: keyword -- -*`zeek.smb_cmd.username`*:: +*`system.auth.sudo.pwd`*:: + -- -Authenticated username, if available. - +The current directory where the sudo command is executed. -type: keyword -- -*`zeek.smb_cmd.tree`*:: +*`system.auth.sudo.user`*:: + -- -If this is related to a tree, this is the tree that was used for the current command. +The target user to which the sudo command is switching. -type: keyword +example: root -- -*`zeek.smb_cmd.tree_service`*:: +*`system.auth.sudo.command`*:: + -- -The type of tree (disk share, printer share, named pipe, etc.). - +The command executed via sudo. -type: keyword -- [float] -=== file +=== useradd -If the command referenced a file, store it here. +Fields specific to events created by the `useradd` command. -*`zeek.smb_cmd.file.name`*:: +*`system.auth.useradd.home`*:: + -- -Filename if one was seen. +The home folder for the new user. +-- -type: keyword +*`system.auth.useradd.shell`*:: ++ +-- +The default shell for the new user. -- -*`zeek.smb_cmd.file.action`*:: +*`system.auth.useradd.name`*:: + -- -Action this log record represents. - +type: alias -type: keyword +alias to: user.name -- -*`zeek.smb_cmd.file.uid`*:: +*`system.auth.useradd.uid`*:: + -- -UID of the referenced file. - +type: alias -type: keyword +alias to: user.id -- - -*`zeek.smb_cmd.file.host.tx`*:: +*`system.auth.useradd.gid`*:: + -- -Address of the transmitting host. - +type: alias -type: ip +alias to: group.id -- -*`zeek.smb_cmd.file.host.rx`*:: -+ --- -Address of the receiving host. +[float] +=== groupadd +Fields specific to events created by the `groupadd` command. -type: ip --- -*`zeek.smb_cmd.smb1_offered_dialects`*:: +*`system.auth.groupadd.name`*:: + -- -Present if base/protocols/smb/smb1-main.bro is loaded. -Dialects offered by the client. - +type: alias -type: keyword +alias to: group.name -- -*`zeek.smb_cmd.smb2_offered_dialects`*:: +*`system.auth.groupadd.gid`*:: + -- -Present if base/protocols/smb/smb2-main.bro is loaded. -Dialects offered by the client. - +type: alias -type: integer +alias to: group.id -- [float] -=== smb_files +=== syslog -Fields exported by the Zeek SMB Files log. +Contains fields from the syslog system logs. -*`zeek.smb_files.action`*:: +*`system.syslog.timestamp`*:: + -- -Action this log record represents. - +type: alias -type: keyword +alias to: @timestamp -- -*`zeek.smb_files.fid`*:: +*`system.syslog.hostname`*:: + -- -ID referencing this file. - +type: alias -type: integer +alias to: host.hostname -- -*`zeek.smb_files.name`*:: +*`system.syslog.program`*:: + -- -Filename if one was seen. - +type: alias -type: keyword +alias to: process.name -- -*`zeek.smb_files.path`*:: +*`system.syslog.pid`*:: + -- -Path pulled from the tree this file was transferred to or from. - +type: alias -type: keyword +alias to: process.pid -- -*`zeek.smb_files.previous_name`*:: +*`system.syslog.message`*:: + -- -If the rename action was seen, this will be the file's previous name. - - -type: keyword +type: alias --- +alias to: message -*`zeek.smb_files.size`*:: -+ -- -Byte size of the file. - - -type: long --- +[[exported-fields-threatintel]] +== threatintel fields -[float] -=== times +Threat intelligence Filebeat Module. -Timestamps of the file. -*`zeek.smb_files.times.accessed`*:: +*`threat.indicator.file.hash.tlsh`*:: + -- -The file's access time. +The file's import tlsh, if available. -type: date +type: keyword -- -*`zeek.smb_files.times.changed`*:: +*`threat.indicator.file.hash.sha384`*:: + -- -The file's change time. +The file's sha384 hash, if available. -type: date +type: keyword -- -*`zeek.smb_files.times.created`*:: +*`threat.feed.name`*:: + -- -The file's create time. - - -type: date +type: keyword -- -*`zeek.smb_files.times.modified`*:: +*`threat.feed.dashboard_id`*:: + -- -The file's modify time. +type: keyword +-- -type: date +[float] +=== abusech.malware --- +Fields for AbuseCH Malware Threat Intel -*`zeek.smb_files.uuid`*:: + + +*`abusech.malware.file_type`*:: + -- -UUID referencing this file if DCE/RPC. +File type guessed by URLhaus. type: keyword -- -[float] -=== smb_mapping +*`abusech.malware.signature`*:: ++ +-- +Malware familiy. -Fields exported by the Zeek SMB_Mapping log. +type: keyword +-- -*`zeek.smb_mapping.path`*:: +*`abusech.malware.urlhaus_download`*:: + -- -Name of the tree path. +Location (URL) where you can download a copy of this file. type: keyword -- -*`zeek.smb_mapping.service`*:: +*`abusech.malware.virustotal.result`*:: + -- -The type of resource of the tree (disk share, printer share, named pipe, etc.). +AV detection ration. type: keyword -- -*`zeek.smb_mapping.native_file_system`*:: +*`abusech.malware.virustotal.percent`*:: + -- -File system of the tree. +AV detection in percent. -type: keyword +type: float -- -*`zeek.smb_mapping.share_type`*:: +*`abusech.malware.virustotal.link`*:: + -- -If this is SMB2, a share type will be included. For SMB1, the type of share -will be deduced and included as well. +Link to the Virustotal report. type: keyword @@ -163087,1660 +59845,1679 @@ type: keyword -- [float] -=== smtp +=== abusech.url -Fields exported by the Zeek SMTP log. +Fields for AbuseCH Malware Threat Intel -*`zeek.smtp.transaction_depth`*:: +*`abusech.url.id`*:: + -- -A count to represent the depth of this message transaction in a single connection where multiple messages were transferred. +The ID of the url. -type: integer +type: keyword -- -*`zeek.smtp.helo`*:: +*`abusech.url.urlhaus_reference`*:: + -- -Contents of the Helo header. +Link to URLhaus entry. type: keyword -- -*`zeek.smtp.mail_from`*:: +*`abusech.url.url_status`*:: + -- -Email addresses found in the MAIL FROM header. +The current status of the URL. Possible values are: online, offline and unknown. type: keyword -- -*`zeek.smtp.rcpt_to`*:: +*`abusech.url.threat`*:: + -- -Email addresses found in the RCPT TO header. +The threat corresponding to this malware URL. type: keyword -- -*`zeek.smtp.date`*:: +*`abusech.url.blacklists.surbl`*:: + -- -Contents of the Date header. +SURBL blacklist status. Possible values are: listed and not_listed -type: date +type: keyword -- -*`zeek.smtp.from`*:: +*`abusech.url.blacklists.spamhaus_dbl`*:: + -- -Contents of the From header. +Spamhaus DBL blacklist status. type: keyword -- -*`zeek.smtp.to`*:: +*`abusech.url.reporter`*:: + -- -Contents of the To header. +The Twitter handle of the reporter that has reported this malware URL (or anonymous). type: keyword -- -*`zeek.smtp.cc`*:: +*`abusech.url.larted`*:: + -- -Contents of the CC header. +Indicates whether the malware URL has been reported to the hosting provider (true or false) -type: keyword +type: boolean -- -*`zeek.smtp.reply_to`*:: +*`abusech.url.tags`*:: + -- -Contents of the ReplyTo header. +A list of tags associated with the queried malware URL type: keyword -- -*`zeek.smtp.msg_id`*:: -+ --- -Contents of the MsgID header. +[float] +=== anomali.limo +Fields for Anomali Threat Intel -type: keyword --- -*`zeek.smtp.in_reply_to`*:: +*`anomali.limo.id`*:: + -- -Contents of the In-Reply-To header. +The ID of the indicator. type: keyword -- -*`zeek.smtp.subject`*:: +*`anomali.limo.name`*:: + -- -Contents of the Subject header. +The name of the indicator. type: keyword -- -*`zeek.smtp.x_originating_ip`*:: +*`anomali.limo.pattern`*:: + -- -Contents of the X-Originating-IP header. +The pattern ID of the indicator. type: keyword -- -*`zeek.smtp.first_received`*:: +*`anomali.limo.valid_from`*:: + -- -Contents of the first Received header. +When the indicator was first found or is considered valid. -type: keyword +type: date -- -*`zeek.smtp.second_received`*:: +*`anomali.limo.modified`*:: + -- -Contents of the second Received header. +When the indicator was last modified -type: keyword +type: date -- -*`zeek.smtp.last_reply`*:: +*`anomali.limo.labels`*:: + -- -The last message that the server sent to the client. +The labels related to the indicator type: keyword -- -*`zeek.smtp.path`*:: +*`anomali.limo.indicator`*:: + -- -The message transmission path, as extracted from the headers. +The value of the indicator, for example if the type is domain, this would be the value. -type: ip +type: keyword -- -*`zeek.smtp.user_agent`*:: +*`anomali.limo.description`*:: + -- -Value of the User-Agent header from the client. +A description of the indicator. type: keyword -- -*`zeek.smtp.tls`*:: +*`anomali.limo.title`*:: + -- -Indicates that the connection has switched to using TLS. +Title describing the indicator. -type: boolean +type: keyword -- -*`zeek.smtp.process_received_from`*:: +*`anomali.limo.content`*:: + -- -Indicates if the "Received: from" headers should still be processed. +Extra text or descriptive content related to the indicator. -type: boolean +type: keyword -- -*`zeek.smtp.has_client_activity`*:: +*`anomali.limo.type`*:: + -- -Indicates if client activity has been seen, but not yet logged. +The indicator type, can for example be "domain, email, FileHash-SHA256". -type: boolean +type: keyword -- -*`zeek.smtp.fuids`*:: +*`anomali.limo.object_marking_refs`*:: + -- -(present if base/protocols/smtp/files.bro is loaded) -An ordered vector of file unique IDs seen attached to the message. +The STIX reference object. type: keyword -- -*`zeek.smtp.is_webmail`*:: -+ --- -Indicates if the message was sent through a webmail interface. +[float] +=== anomali.threatstream + +Fields for Anomali ThreatStream -type: boolean +*`anomali.threatstream.classification`*:: ++ -- +Indicates whether an indicator is private or from a public feed and available publicly. Possible values: private, public. -[float] -=== snmp -Fields exported by the Zeek SNMP log. +type: keyword +example: private +-- -*`zeek.snmp.duration`*:: +*`anomali.threatstream.confidence`*:: + -- -The amount of time between the first packet beloning to the SNMP session and the latest one seen. +The measure of the accuracy (from 0 to 100) assigned by ThreatStream's predictive analytics technology to indicators. -type: double +type: short -- -*`zeek.snmp.version`*:: +*`anomali.threatstream.detail2`*:: + -- -The version of SNMP being used. +Detail text for indicator. -type: keyword +type: text + +example: Imported by user 42. -- -*`zeek.snmp.community`*:: +*`anomali.threatstream.id`*:: + -- -The community string of the first SNMP packet associated with the session. This is used as part of SNMP's (v1 and v2c) administrative/security framework. See RFC 1157 or RFC 1901. +The ID of the indicator. type: keyword -- - -*`zeek.snmp.get.requests`*:: +*`anomali.threatstream.import_session_id`*:: + -- -The number of variable bindings in GetRequest/GetNextRequest PDUs seen for the session. +ID of the import session that created the indicator on ThreatStream. -type: integer +type: keyword -- -*`zeek.snmp.get.bulk_requests`*:: +*`anomali.threatstream.itype`*:: + -- -The number of variable bindings in GetBulkRequest PDUs seen for the session. +Indicator type. Possible values: "apt_domain", "apt_email", "apt_ip", "apt_url", "bot_ip", "c2_domain", "c2_ip", "c2_url", "i2p_ip", "mal_domain", "mal_email", "mal_ip", "mal_md5", "mal_url", "parked_ip", "phish_email", "phish_ip", "phish_url", "scan_ip", "spam_domain", "ssh_ip", "suspicious_domain", "tor_ip" and "torrent_tracker_url". -type: integer +type: keyword -- -*`zeek.snmp.get.responses`*:: +*`anomali.threatstream.maltype`*:: + -- -The number of variable bindings in GetResponse/Response PDUs seen for the session. +Information regarding a malware family, a CVE ID, or another attack or threat, associated with the indicator. -type: integer +type: wildcard -- - -*`zeek.snmp.set.requests`*:: +*`anomali.threatstream.md5`*:: + -- -The number of variable bindings in SetRequest PDUs seen for the session. +Hash for the indicator. -type: integer +type: keyword -- -*`zeek.snmp.display_string`*:: +*`anomali.threatstream.resource_uri`*:: + -- -A system description of the SNMP responder endpoint. +Relative URI for the indicator details. type: keyword -- -*`zeek.snmp.up_since`*:: +*`anomali.threatstream.severity`*:: + -- -The time at which the SNMP responder endpoint claims it's been up since. +Criticality associated with the threat feed that supplied the indicator. Possible values: low, medium, high, very-high. -type: date +type: keyword -- -[float] -=== socks +*`anomali.threatstream.source`*:: ++ +-- +Source for the indicator. -Fields exported by the Zeek SOCKS log. +type: keyword + +example: Analyst +-- -*`zeek.socks.version`*:: +*`anomali.threatstream.source_feed_id`*:: + -- -Protocol version of SOCKS. +ID for the integrator source. -type: integer +type: keyword -- -*`zeek.socks.user`*:: +*`anomali.threatstream.state`*:: + -- -Username used to request a login to the proxy. +State for this indicator. type: keyword +example: active + -- -*`zeek.socks.password`*:: +*`anomali.threatstream.trusted_circle_ids`*:: + -- -Password used to request a login to the proxy. +ID of the trusted circle that imported the indicator. type: keyword -- -*`zeek.socks.status`*:: +*`anomali.threatstream.update_id`*:: + -- -Server status for the attempt at using the proxy. +Update ID. type: keyword -- - -*`zeek.socks.request.host`*:: +*`anomali.threatstream.url`*:: + -- -Client requested SOCKS address. Could be an address, a name or both. +URL for the indicator. type: keyword -- -*`zeek.socks.request.port`*:: +*`anomali.threatstream.value_type`*:: + -- -Client requested port. +Data type of the indicator. Possible values: ip, domain, url, email, md5. -type: integer +type: keyword -- +[float] +=== abusech.malwarebazaar -*`zeek.socks.bound.host`*:: +Fields for Malware Bazaar Threat Intel + + + +*`abusech.malwarebazaar.file_type`*:: + -- -Server bound address. Could be an address, a name or both. +File type guessed by Malware Bazaar. type: keyword -- -*`zeek.socks.bound.port`*:: +*`abusech.malwarebazaar.signature`*:: + -- -Server bound port. +Malware familiy. -type: integer +type: keyword -- -*`zeek.socks.capture_password`*:: +*`abusech.malwarebazaar.tags`*:: + -- -Determines if the password will be captured for this request. +A list of tags associated with the queried malware sample. -type: boolean +type: keyword -- -[float] -=== ssh -Fields exported by the Zeek SSH log. +*`abusech.malwarebazaar.intelligence.downloads`*:: ++ +-- +Number of downloads from MalwareBazaar. +type: long -*`zeek.ssh.client`*:: +-- + +*`abusech.malwarebazaar.intelligence.uploads`*:: + -- -The client's version string. +Number of uploads from MalwareBazaar. -type: keyword +type: long -- -*`zeek.ssh.direction`*:: + +*`abusech.malwarebazaar.intelligence.mail.Generic`*:: + -- -Direction of the connection. If the client was a local host logging into -an external host, this would be OUTBOUND. INBOUND would be set for the -opposite situation. +Malware seen in generic spam traffic. type: keyword -- -*`zeek.ssh.host_key`*:: +*`abusech.malwarebazaar.intelligence.mail.IT`*:: + -- -The server's key thumbprint. +Malware seen in IT spam traffic. type: keyword -- -*`zeek.ssh.server`*:: +*`abusech.malwarebazaar.anonymous`*:: + -- -The server's version string. +Identifies if the sample was submitted anonymously. -type: keyword +type: long -- -*`zeek.ssh.version`*:: +*`abusech.malwarebazaar.code_sign`*:: + -- -SSH major version (1 or 2). +Code signing information for the sample. -type: integer +type: nested -- [float] -=== algorithm +=== misp -Cipher algorithms used in this session. +Fields for MISP Threat Intel -*`zeek.ssh.algorithm.cipher`*:: +*`misp.id`*:: + -- -The encryption algorithm in use. +Attribute ID. type: keyword -- -*`zeek.ssh.algorithm.compression`*:: +*`misp.orgc_id`*:: + -- -The compression algorithm in use. +Organization Community ID of the event. type: keyword -- -*`zeek.ssh.algorithm.host_key`*:: +*`misp.org_id`*:: + -- -The server host key's algorithm. +Organization ID of the event. type: keyword -- -*`zeek.ssh.algorithm.key_exchange`*:: +*`misp.threat_level_id`*:: + -- -The key exchange algorithm in use. +Threat level from 5 to 1, where 1 is the most critical. -type: keyword +type: long -- -*`zeek.ssh.algorithm.mac`*:: +*`misp.info`*:: + -- -The signing (MAC) algorithm in use. +Additional text or information related to the event. type: keyword -- - -*`zeek.ssh.auth.attempts`*:: +*`misp.published`*:: + -- -The number of authentication attemps we observed. There's always at -least one, since some servers might support no authentication at all. -It's important to note that not all of these are failures, since some -servers require two-factor auth (e.g. password AND pubkey). +When the event was published. -type: integer +type: boolean -- -*`zeek.ssh.auth.success`*:: +*`misp.uuid`*:: + -- -Authentication result. +The UUID of the event object. -type: boolean +type: keyword -- -[float] -=== ssl +*`misp.date`*:: ++ +-- +The date of when the event object was created. -Fields exported by the Zeek SSL log. +type: date +-- -*`zeek.ssl.version`*:: +*`misp.attribute_count`*:: + -- -SSL/TLS version that was logged. +How many attributes are included in a single event object. -type: keyword +type: long -- -*`zeek.ssl.cipher`*:: +*`misp.timestamp`*:: + -- -SSL/TLS cipher suite that was logged. +The timestamp of when the event object was created. -type: keyword +type: date -- -*`zeek.ssl.curve`*:: +*`misp.distribution`*:: + -- -Elliptic curve that was logged when using ECDH/ECDHE. +Distribution type related to MISP. type: keyword -- -*`zeek.ssl.resumed`*:: +*`misp.proposal_email_lock`*:: + -- -Flag to indicate if the session was resumed reusing the key material exchanged in an -earlier connection. +Settings configured on MISP for email lock on this event object. type: boolean -- -*`zeek.ssl.next_protocol`*:: +*`misp.locked`*:: + -- -Next protocol the server chose using the application layer next protocol extension. +If the current MISP event object is locked or not. -type: keyword +type: boolean -- -*`zeek.ssl.established`*:: +*`misp.publish_timestamp`*:: + -- -Flag to indicate if this ssl session has been established successfully. +At what time the event object was published -type: boolean +type: date -- - -*`zeek.ssl.validation.status`*:: +*`misp.sharing_group_id`*:: + -- -Result of certificate validation for this connection. +The ID of the grouped events or sources of the event. type: keyword -- -*`zeek.ssl.validation.code`*:: +*`misp.disable_correlation`*:: + -- -Result of certificate validation for this connection, given as OpenSSL validation code. +If correlation is disabled on the MISP event object. -type: keyword +type: boolean -- -*`zeek.ssl.last_alert`*:: +*`misp.extends_uuid`*:: + -- -Last alert that was seen during the connection. +The UUID of the event object it might extend. type: keyword -- - -*`zeek.ssl.server.name`*:: +*`misp.org.id`*:: + -- -Value of the Server Name Indicator SSL/TLS extension. It indicates the server name -that the client was requesting. +The organization ID related to the event object. type: keyword -- -*`zeek.ssl.server.cert_chain`*:: +*`misp.org.name`*:: + -- -Chain of certificates offered by the server to validate its complete signing chain. +The organization name related to the event object. type: keyword -- -*`zeek.ssl.server.cert_chain_fuids`*:: +*`misp.org.uuid`*:: + -- -An ordered vector of certificate file identifiers for the certificates offered by the server. +The UUID of the organization related to the event object. type: keyword -- -[float] -=== issuer +*`misp.org.local`*:: ++ +-- +If the event object is local or from a remote source. -Subject of the signer of the X.509 certificate offered by the server. +type: boolean +-- -*`zeek.ssl.server.issuer.common_name`*:: +*`misp.orgc.id`*:: + -- -Common name of the signer of the X.509 certificate offered by the server. +The Organization Community ID in which the event object was reported from. type: keyword -- -*`zeek.ssl.server.issuer.country`*:: +*`misp.orgc.name`*:: + -- -Country code of the signer of the X.509 certificate offered by the server. +The Organization Community name in which the event object was reported from. type: keyword -- -*`zeek.ssl.server.issuer.locality`*:: +*`misp.orgc.uuid`*:: + -- -Locality of the signer of the X.509 certificate offered by the server. +The Organization Community UUID in which the event object was reported from. type: keyword -- -*`zeek.ssl.server.issuer.organization`*:: +*`misp.orgc.local`*:: + -- -Organization of the signer of the X.509 certificate offered by the server. +If the Organization Community was local or synced from a remote source. -type: keyword +type: boolean -- -*`zeek.ssl.server.issuer.organizational_unit`*:: +*`misp.attribute.id`*:: + -- -Organizational unit of the signer of the X.509 certificate offered by the server. +The ID of the attribute related to the event object. type: keyword -- -*`zeek.ssl.server.issuer.state`*:: +*`misp.attribute.type`*:: + -- -State or province name of the signer of the X.509 certificate offered by the server. +The type of the attribute related to the event object. For example email, ipv4, sha1 and such. type: keyword -- -[float] -=== subject - -Subject of the X.509 certificate offered by the server. - - - -*`zeek.ssl.server.subject.common_name`*:: +*`misp.attribute.category`*:: + -- -Common name of the X.509 certificate offered by the server. +The category of the attribute related to the event object. For example "Network Activity". type: keyword -- -*`zeek.ssl.server.subject.country`*:: +*`misp.attribute.to_ids`*:: + -- -Country code of the X.509 certificate offered by the server. +If the attribute should be automatically synced with an IDS. -type: keyword +type: boolean -- -*`zeek.ssl.server.subject.locality`*:: +*`misp.attribute.uuid`*:: + -- -Locality of the X.509 certificate offered by the server. +The UUID of the attribute related to the event. type: keyword -- -*`zeek.ssl.server.subject.organization`*:: +*`misp.attribute.event_id`*:: + -- -Organization of the X.509 certificate offered by the server. +The local event ID of the attribute related to the event. type: keyword -- -*`zeek.ssl.server.subject.organizational_unit`*:: +*`misp.attribute.distribution`*:: + -- -Organizational unit of the X.509 certificate offered by the server. +How the attribute has been distributed, represented by integer numbers. -type: keyword +type: long -- -*`zeek.ssl.server.subject.state`*:: +*`misp.attribute.timestamp`*:: + -- -State or province name of the X.509 certificate offered by the server. +The timestamp in which the attribute was attached to the event object. -type: keyword +type: date -- - -*`zeek.ssl.client.cert_chain`*:: +*`misp.attribute.comment`*:: + -- -Chain of certificates offered by the client to validate its complete signing chain. +Comments made to the attribute itself. type: keyword -- -*`zeek.ssl.client.cert_chain_fuids`*:: +*`misp.attribute.sharing_group_id`*:: + -- -An ordered vector of certificate file identifiers for the certificates offered by the client. +The group ID of the sharing group related to the specific attribute. type: keyword -- -[float] -=== issuer - -Subject of the signer of the X.509 certificate offered by the client. - - - -*`zeek.ssl.client.issuer.common_name`*:: +*`misp.attribute.deleted`*:: + -- -Common name of the signer of the X.509 certificate offered by the client. +If the attribute has been removed from the event object. -type: keyword +type: boolean -- -*`zeek.ssl.client.issuer.country`*:: +*`misp.attribute.disable_correlation`*:: + -- -Country code of the signer of the X.509 certificate offered by the client. +If correlation has been enabled on the attribute related to the event object. -type: keyword +type: boolean -- -*`zeek.ssl.client.issuer.locality`*:: +*`misp.attribute.object_id`*:: + -- -Locality of the signer of the X.509 certificate offered by the client. +The ID of the Object in which the attribute is attached. type: keyword -- -*`zeek.ssl.client.issuer.organization`*:: +*`misp.attribute.object_relation`*:: + -- -Organization of the signer of the X.509 certificate offered by the client. +The type of relation the attribute has with the event object itself. type: keyword -- -*`zeek.ssl.client.issuer.organizational_unit`*:: +*`misp.attribute.value`*:: + -- -Organizational unit of the signer of the X.509 certificate offered by the client. +The value of the attribute, depending on the type like "url, sha1, email-src". type: keyword -- -*`zeek.ssl.client.issuer.state`*:: +*`misp.context.attribute.id`*:: + -- -State or province name of the signer of the X.509 certificate offered by the client. +The ID of the secondary attribute related to the event object. type: keyword -- -[float] -=== subject - -Subject of the X.509 certificate offered by the client. - - - -*`zeek.ssl.client.subject.common_name`*:: +*`misp.context.attribute.type`*:: + -- -Common name of the X.509 certificate offered by the client. +The type of the secondary attribute related to the event object. For example email, ipv4, sha1 and such. type: keyword -- -*`zeek.ssl.client.subject.country`*:: +*`misp.context.attribute.category`*:: + -- -Country code of the X.509 certificate offered by the client. +The category of the secondary attribute related to the event object. For example "Network Activity". type: keyword -- -*`zeek.ssl.client.subject.locality`*:: +*`misp.context.attribute.to_ids`*:: + -- -Locality of the X.509 certificate offered by the client. +If the secondary attribute should be automatically synced with an IDS. -type: keyword +type: boolean -- -*`zeek.ssl.client.subject.organization`*:: +*`misp.context.attribute.uuid`*:: + -- -Organization of the X.509 certificate offered by the client. +The UUID of the secondary attribute related to the event. type: keyword -- -*`zeek.ssl.client.subject.organizational_unit`*:: +*`misp.context.attribute.event_id`*:: + -- -Organizational unit of the X.509 certificate offered by the client. +The local event ID of the secondary attribute related to the event. type: keyword -- -*`zeek.ssl.client.subject.state`*:: +*`misp.context.attribute.distribution`*:: + -- -State or province name of the X.509 certificate offered by the client. +How the secondary attribute has been distributed, represented by integer numbers. -type: keyword +type: long -- -[float] -=== stats +*`misp.context.attribute.timestamp`*:: ++ +-- +The timestamp in which the secondary attribute was attached to the event object. -Fields exported by the Zeek stats log. +type: date +-- -*`zeek.stats.peer`*:: +*`misp.context.attribute.comment`*:: + -- -Peer that generated this log. Mostly for clusters. +Comments made to the secondary attribute itself. type: keyword -- -*`zeek.stats.memory`*:: +*`misp.context.attribute.sharing_group_id`*:: + -- -Amount of memory currently in use in MB. +The group ID of the sharing group related to the specific secondary attribute. -type: integer +type: keyword -- - -*`zeek.stats.packets.processed`*:: +*`misp.context.attribute.deleted`*:: + -- -Number of packets processed since the last stats interval. +If the secondary attribute has been removed from the event object. -type: long +type: boolean -- -*`zeek.stats.packets.dropped`*:: +*`misp.context.attribute.disable_correlation`*:: + -- -Number of packets dropped since the last stats interval if reading live traffic. +If correlation has been enabled on the secondary attribute related to the event object. -type: long +type: boolean -- -*`zeek.stats.packets.received`*:: +*`misp.context.attribute.object_id`*:: + -- -Number of packets seen on the link since the last stats interval if reading live traffic. +The ID of the Object in which the secondary attribute is attached. -type: long +type: keyword -- - -*`zeek.stats.bytes.received`*:: +*`misp.context.attribute.object_relation`*:: + -- -Number of bytes received since the last stats interval if reading live traffic. +The type of relation the secondary attribute has with the event object itself. -type: long +type: keyword -- - - -*`zeek.stats.connections.tcp.active`*:: +*`misp.context.attribute.value`*:: + -- -TCP connections currently in memory. - +The value of the attribute, depending on the type like "url, sha1, email-src". -type: integer --- +type: keyword -*`zeek.stats.connections.tcp.count`*:: -+ -- -TCP connections seen since last stats interval. +[float] +=== otx -type: integer +Fields for OTX Threat Intel --- -*`zeek.stats.connections.udp.active`*:: +*`otx.id`*:: + -- -UDP connections currently in memory. +The ID of the indicator. -type: integer +type: keyword -- -*`zeek.stats.connections.udp.count`*:: +*`otx.indicator`*:: + -- -UDP connections seen since last stats interval. +The value of the indicator, for example if the type is domain, this would be the value. -type: integer +type: keyword -- - -*`zeek.stats.connections.icmp.active`*:: +*`otx.description`*:: + -- -ICMP connections currently in memory. +A description of the indicator. -type: integer +type: keyword -- -*`zeek.stats.connections.icmp.count`*:: +*`otx.title`*:: + -- -ICMP connections seen since last stats interval. +Title describing the indicator. -type: integer +type: keyword -- - -*`zeek.stats.events.processed`*:: +*`otx.content`*:: + -- -Number of events processed since the last stats interval. +Extra text or descriptive content related to the indicator. -type: integer +type: keyword -- -*`zeek.stats.events.queued`*:: +*`otx.type`*:: + -- -Number of events that have been queued since the last stats interval. +The indicator type, can for example be "domain, email, FileHash-SHA256". -type: integer +type: keyword -- +[float] +=== threatq -*`zeek.stats.timers.count`*:: -+ --- -Number of timers scheduled since last stats interval. - +Fields for ThreatQ Threat Library -type: integer --- -*`zeek.stats.timers.active`*:: +*`threatq.updated_at`*:: + -- -Current number of scheduled timers. +Last modification time -type: integer +type: date -- - -*`zeek.stats.files.count`*:: +*`threatq.created_at`*:: + -- -Number of files seen since last stats interval. +Object creation time -type: integer +type: date -- -*`zeek.stats.files.active`*:: +*`threatq.expires_at`*:: + -- -Current number of files actively being seen. +Expiration time -type: integer +type: date -- - -*`zeek.stats.dns_requests.count`*:: +*`threatq.expires_calculated_at`*:: + -- -Number of DNS requests seen since last stats interval. +Expiration calculation time -type: integer +type: date -- -*`zeek.stats.dns_requests.active`*:: +*`threatq.published_at`*:: + -- -Current number of DNS requests awaiting a reply. +Object publication time -type: integer +type: date -- - -*`zeek.stats.reassembly_size.tcp`*:: +*`threatq.status`*:: + -- -Current size of TCP data in reassembly. +Object status within the Threat Library -type: integer +type: keyword -- -*`zeek.stats.reassembly_size.file`*:: +*`threatq.indicator_value`*:: + -- -Current size of File data in reassembly. +Original indicator value -type: integer +type: keyword -- -*`zeek.stats.reassembly_size.frag`*:: +*`threatq.adversaries`*:: + -- -Current size of packet fragment data in reassembly. +Adversaries that are linked to the object -type: integer +type: keyword -- -*`zeek.stats.reassembly_size.unknown`*:: +*`threatq.attributes`*:: + -- -Current size of unknown data in reassembly (this is only PIA buffer right now). +These provide additional context about an object -type: integer +type: flattened -- -*`zeek.stats.timestamp_lag`*:: -+ --- -Lag between the wall clock and packet timestamps if reading live traffic. +[[exported-fields-traefik]] +== Traefik fields +Module for parsing the Traefik log files. -type: integer --- [float] -=== syslog +=== traefik -Fields exported by the Zeek syslog log. +Fields from the Traefik log files. -*`zeek.syslog.facility`*:: -+ --- -Syslog facility for the message. +[float] +=== access +Contains fields for the Traefik access logs. -type: keyword --- -*`zeek.syslog.severity`*:: +*`traefik.access.user_identifier`*:: + -- -Syslog severity for the message. +Is the RFC 1413 identity of the client type: keyword -- -*`zeek.syslog.message`*:: +*`traefik.access.request_count`*:: + -- -The plain text message. +The number of requests -type: keyword +type: long -- -[float] -=== tunnel - -Fields exported by the Zeek SSH log. - - - -*`zeek.tunnel.type`*:: +*`traefik.access.frontend_name`*:: + -- -The type of tunnel. +The name of the frontend used type: keyword -- -*`zeek.tunnel.action`*:: +*`traefik.access.backend_url`*:: + -- -The type of activity that occurred. - +The url of the backend where request is forwarded type: keyword -- -[float] -=== weird - -Fields exported by the Zeek Weird log. +*`traefik.access.body_sent.bytes`*:: ++ +-- +type: alias +alias to: http.response.body.bytes +-- -*`zeek.weird.name`*:: +*`traefik.access.remote_ip`*:: + -- -The name of the weird that occurred. - +type: alias -type: keyword +alias to: source.address -- -*`zeek.weird.additional_info`*:: +*`traefik.access.user_name`*:: + -- -Additional information accompanying the weird if any. - +type: alias -type: keyword +alias to: user.name -- -*`zeek.weird.notice`*:: +*`traefik.access.method`*:: + -- -Indicate if this weird was also turned into a notice. - +type: alias -type: boolean +alias to: http.request.method -- -*`zeek.weird.peer`*:: +*`traefik.access.url`*:: + -- -The peer that originated this weird. This is helpful in cluster deployments if a particular cluster node is having trouble to help identify which node is having trouble. - +type: alias -type: keyword +alias to: url.original -- -*`zeek.weird.identifier`*:: +*`traefik.access.http_version`*:: + -- -This field is to be provided when a weird is generated for the purpose of deduplicating weirds. The identifier string should be unique for a single instance of the weird. This field is used to define when a weird is conceptually a duplicate of a previous weird. +type: alias +alias to: http.version -type: keyword +-- +*`traefik.access.response_code`*:: ++ -- +type: alias -[float] -=== x509 +alias to: http.response.status_code -Fields exported by the Zeek x509 log. +-- + +*`traefik.access.referrer`*:: ++ +-- +type: alias +alias to: http.request.referrer +-- -*`zeek.x509.id`*:: +*`traefik.access.agent`*:: + -- -File id of this certificate. - +type: alias -type: keyword +alias to: user_agent.original -- -[float] -=== certificate -Basic information about the certificate. +*`traefik.access.user_agent.name`*:: ++ +-- +type: alias +alias to: user_agent.name +-- -*`zeek.x509.certificate.version`*:: +*`traefik.access.user_agent.os`*:: + -- -Version number. - +type: alias -type: integer +alias to: user_agent.os.full_name -- -*`zeek.x509.certificate.serial`*:: +*`traefik.access.user_agent.os_name`*:: + -- -Serial number. - +type: alias -type: keyword +alias to: user_agent.os.name -- -[float] -=== subject +*`traefik.access.user_agent.original`*:: ++ +-- +type: alias -Subject. +alias to: user_agent.original +-- -*`zeek.x509.certificate.subject.country`*:: +*`traefik.access.geoip.continent_name`*:: + -- -Country provided in the certificate subject. - +type: alias -type: keyword +alias to: source.geo.continent_name -- -*`zeek.x509.certificate.subject.common_name`*:: +*`traefik.access.geoip.country_iso_code`*:: + -- -Common name provided in the certificate subject. - +type: alias -type: keyword +alias to: source.geo.country_iso_code -- -*`zeek.x509.certificate.subject.locality`*:: +*`traefik.access.geoip.location`*:: + -- -Locality provided in the certificate subject. - +type: alias -type: keyword +alias to: source.geo.location -- -*`zeek.x509.certificate.subject.organization`*:: +*`traefik.access.geoip.region_name`*:: + -- -Organization provided in the certificate subject. - +type: alias -type: keyword +alias to: source.geo.region_name -- -*`zeek.x509.certificate.subject.organizational_unit`*:: +*`traefik.access.geoip.city_name`*:: + -- -Organizational unit provided in the certificate subject. - +type: alias -type: keyword +alias to: source.geo.city_name -- -*`zeek.x509.certificate.subject.state`*:: +*`traefik.access.geoip.region_iso_code`*:: + -- -State or province provided in the certificate subject. - +type: alias -type: keyword +alias to: source.geo.region_iso_code -- +[[exported-fields-winlog]] +== Windows ETW fields + +Fields from the ETW input (Event Tracing for Windows). + + + [float] -=== issuer +=== winlog -Issuer. +All fields specific to the Windows Event Tracing are defined here. -*`zeek.x509.certificate.issuer.country`*:: +*`winlog.activity_id`*:: + -- -Country provided in the certificate issuer field. +A globally unique identifier that identifies the current activity. The events that are published with this identifier are part of the same activity. type: keyword +required: False + -- -*`zeek.x509.certificate.issuer.common_name`*:: +*`winlog.channel`*:: + -- -Common name provided in the certificate issuer field. +Used to enable special event processing. Channel values below 16 are reserved for use by Microsoft to enable special treatment by the ETW runtime. Channel values 16 and above will be ignored by the ETW runtime (treated the same as channel 0) and can be given user-defined semantics. type: keyword +required: False + -- -*`zeek.x509.certificate.issuer.locality`*:: +*`winlog.event_data`*:: + -- -Locality provided in the certificate issuer field. +The event-specific data. The content of this object is specific to any provider and event. -type: keyword +type: object + +required: False -- -*`zeek.x509.certificate.issuer.organization`*:: +*`winlog.flags`*:: + -- -Organization provided in the certificate issuer field. +Flags that provide information about the event such as the type of session it was logged to and if the event contains extended data. type: keyword +required: False + -- -*`zeek.x509.certificate.issuer.organizational_unit`*:: +*`winlog.keywords`*:: + -- -Organizational unit provided in the certificate issuer field. +The keywords are used to indicate an event's membership in a set of event categories. type: keyword +required: False + -- -*`zeek.x509.certificate.issuer.state`*:: +*`winlog.level`*:: + -- -State or province provided in the certificate issuer field. +Level of severity. Level values 0 through 5 are defined by Microsoft. Level values 6 through 15 are reserved. Level values 16 through 255 can be defined by the event provider. type: keyword +required: False + -- -*`zeek.x509.certificate.common_name`*:: +*`winlog.opcode`*:: + -- -Last (most specific) common name. +The opcode defined in the event. Task and opcode are typically used to identify the location in the application from where the event was logged. type: keyword +required: False + -- -[float] -=== valid +*`winlog.process_id`*:: ++ +-- +Identifies the process that generated the event. -Certificate validity timestamps +type: keyword +required: False -*`zeek.x509.certificate.valid.from`*:: +-- + +*`winlog.provider_guid`*:: + -- -Timestamp before when certificate is not valid. +A globally unique identifier that identifies the provider that logged the event. -type: date +type: keyword + +required: False -- -*`zeek.x509.certificate.valid.until`*:: +*`winlog.provider_name`*:: + -- -Timestamp after when certificate is not valid. +The source of the event log record (the application or service that logged the record). -type: date +type: keyword --- +required: False +-- -*`zeek.x509.certificate.key.algorithm`*:: +*`winlog.session`*:: + -- -Name of the key algorithm. +Configured session to forward ETW events from providers to consumers. type: keyword +required: False + -- -*`zeek.x509.certificate.key.type`*:: +*`winlog.severity`*:: + -- -Key type, if key parseable by openssl (either rsa, dsa or ec). +Human-readable level of severity. type: keyword +required: False + -- -*`zeek.x509.certificate.key.length`*:: +*`winlog.task`*:: + -- -Key length in bits. +The task defined in the event. Task and opcode are typically used to identify the location in the application from where the event was logged. -type: integer +type: keyword + +required: False -- -*`zeek.x509.certificate.signature_algorithm`*:: +*`winlog.thread_id`*:: + -- -Name of the signature algorithm. +Identifies the thread that generated the event. type: keyword +required: False + -- -*`zeek.x509.certificate.exponent`*:: +*`winlog.version`*:: + -- -Exponent, if RSA-certificate. +Specify the version of a manifest-based event. -type: keyword +type: long + +required: False -- -*`zeek.x509.certificate.curve`*:: +[[exported-fields-zeek]] +== Zeek fields + +Module for handling logs produced by Zeek/Bro + + + +[float] +=== zeek + +Fields from Zeek/Bro logs after normalization + + + +*`zeek.session_id`*:: + -- -Curve, if EC-certificate. +A unique identifier of the session type: keyword @@ -164748,7161 +61525,7159 @@ type: keyword -- [float] -=== san +=== capture_loss -Subject alternative name extension of the certificate. +Fields exported by the Zeek capture_loss log -*`zeek.x509.san.dns`*:: +*`zeek.capture_loss.ts_delta`*:: + -- -List of DNS entries in SAN. +The time delay between this measurement and the last. -type: keyword +type: integer -- -*`zeek.x509.san.uri`*:: +*`zeek.capture_loss.peer`*:: + -- -List of URI entries in SAN. +In the event that there are multiple Bro instances logging to the same host, this distinguishes each peer with its individual name. type: keyword -- -*`zeek.x509.san.email`*:: +*`zeek.capture_loss.gaps`*:: + -- -List of email entries in SAN. +Number of missed ACKs from the previous measurement interval. -type: keyword +type: integer -- -*`zeek.x509.san.ip`*:: +*`zeek.capture_loss.acks`*:: + -- -List of IP entries in SAN. +Total number of ACKs seen in the previous measurement interval. -type: ip +type: integer -- -*`zeek.x509.san.other_fields`*:: +*`zeek.capture_loss.percent_lost`*:: + -- -True if the certificate contained other, not recognized or parsed name fields. +Percentage of ACKs seen where the data being ACKed wasn't seen. -type: boolean +type: double -- [float] -=== basic_constraints +=== connection -Basic constraints extension of the certificate. +Fields exported by the Zeek Connection log -*`zeek.x509.basic_constraints.certificate_authority`*:: +*`zeek.connection.local_orig`*:: + -- -CA flag set or not. +Indicates whether the session is originated locally. type: boolean -- -*`zeek.x509.basic_constraints.path_length`*:: +*`zeek.connection.local_resp`*:: + -- -Maximum path length. +Indicates whether the session is responded locally. -type: integer +type: boolean -- -*`zeek.x509.log_cert`*:: +*`zeek.connection.missed_bytes`*:: + -- -Present if policy/protocols/ssl/log-hostcerts-only.bro is loaded -Logging of certificate is suppressed if set to F. +Missed bytes for the session. -type: boolean +type: long -- -[[exported-fields-zookeeper]] -== ZooKeeper fields +*`zeek.connection.state`*:: ++ +-- +Code indicating the state of the session. -ZooKeeper Module +type: keyword + +-- +*`zeek.connection.state_message`*:: ++ +-- +The state of the session. -[float] -=== zookeeper +type: keyword +-- -[float] -=== audit +*`zeek.connection.icmp.type`*:: ++ +-- +ICMP message type. -ZooKeeper Audit logs. +type: integer +-- -*`zookeeper.audit.session`*:: +*`zeek.connection.icmp.code`*:: + -- -Client session id +ICMP message code. -type: keyword +type: integer -- -*`zookeeper.audit.znode`*:: +*`zeek.connection.history`*:: + -- -Path of the znode +Flags indicating the history of the session. type: keyword -- -*`zookeeper.audit.znode_type`*:: +*`zeek.connection.vlan`*:: + -- -Type of znode in case of creation operation +VLAN identifier. -type: keyword +type: integer -- -*`zookeeper.audit.acl`*:: +*`zeek.connection.inner_vlan`*:: + -- -String representation of znode ACL like cdrwa(create, delete,read, write, admin). This is logged only for setAcl operation +VLAN identifier. -type: keyword +type: integer -- -*`zookeeper.audit.result`*:: +[float] +=== dce_rpc + +Fields exported by the Zeek DCE_RPC log + + + +*`zeek.dce_rpc.rtt`*:: + -- -Result of the operation. Possible values are (success/failure/invoked). Result "invoked" is used for serverStop operation because stop is logged before ensuring that server actually stopped. +Round trip time from the request to the response. If either the request or response wasn't seen, this will be null. -type: keyword +type: integer -- -*`zookeeper.audit.user`*:: +*`zeek.dce_rpc.named_pipe`*:: + -- -Comma separated list of users who are associate with a client session +Remote pipe name. type: keyword -- -[float] -=== log +*`zeek.dce_rpc.endpoint`*:: ++ +-- +Endpoint name looked up from the uuid. -ZooKeeper logs. +type: keyword -[[exported-fields-zoom]] -== Zoom fields +-- + +*`zeek.dce_rpc.operation`*:: ++ +-- +Operation seen in the call. -Module for handling incoming Zoom webhook requests +type: keyword +-- [float] -=== zoom +=== dhcp -Module for parsing Zoom API Webhooks. +Fields exported by the Zeek DHCP log -*`zoom.master_account_id`*:: +*`zeek.dhcp.domain`*:: + -- -Master Account related to a specific Sub Account +Domain given by the server in option 15. type: keyword -- -*`zoom.sub_account_id`*:: +*`zeek.dhcp.duration`*:: + -- -Related Sub Account +Duration of the DHCP session representing the time from the first +message to the last, in seconds. -type: keyword +type: double -- -*`zoom.operator_id`*:: +*`zeek.dhcp.hostname`*:: + -- -UserID that triggered the event +Name given by client in Hostname option 12. type: keyword -- -*`zoom.operator`*:: +*`zeek.dhcp.client_fqdn`*:: + -- -Username/Email related to the user that triggered the event +FQDN given by client in Client FQDN option 81. type: keyword -- -*`zoom.account_id`*:: +*`zeek.dhcp.lease_time`*:: + -- -Related accountID to the event +IP address lease interval in seconds. -type: keyword +type: integer -- -*`zoom.timestamp`*:: -+ --- -Timestamp related to the event +[float] +=== address +Addresses seen in this DHCP exchange. -type: date --- -*`zoom.creation_type`*:: +*`zeek.dhcp.address.assigned`*:: + -- -Creation type +IP address assigned by the server. -type: keyword +type: ip -- -*`zoom.account.owner_id`*:: +*`zeek.dhcp.address.client`*:: + -- -UserID of the user whose sub account was created/disassociated +IP address of the client. If a transaction is only a client sending +INFORM messages then there is no lease information exchanged so this +is helpful to know who sent the messages. Getting an address in this +field does require that the client sources at least one DHCP message +using a non-broadcast address. -type: keyword +type: ip -- -*`zoom.account.email`*:: +*`zeek.dhcp.address.mac`*:: + -- -Email related to the user the action was performed on +Client's hardware address. type: keyword -- -*`zoom.account.owner_email`*:: +*`zeek.dhcp.address.requested`*:: + -- -Email of the user whose sub account was created/disassociated +IP address requested by the client. -type: keyword +type: ip -- -*`zoom.account.account_name`*:: +*`zeek.dhcp.address.server`*:: + -- -When an account name is updated, this is the new value set +IP address of the DHCP server. -type: keyword +type: ip -- -*`zoom.account.account_alias`*:: + +*`zeek.dhcp.msg.types`*:: + -- -When an account alias is updated, this is the new value set +List of DHCP message types seen in this exchange. type: keyword -- -*`zoom.account.account_support_name`*:: +*`zeek.dhcp.msg.origin`*:: + -- -When an account support_name is updated, this is the new value set +(present if policy/protocols/dhcp/msg-orig.bro is loaded) +The address that originated each message from the msg.types field. -type: keyword +type: ip -- -*`zoom.account.account_support_email`*:: +*`zeek.dhcp.msg.client`*:: + -- -When an account support_email is updated, this is the new value set +Message typically accompanied with a DHCP_DECLINE so the client can +tell the server why it rejected an address. type: keyword -- -*`zoom.chat_channel.name`*:: +*`zeek.dhcp.msg.server`*:: + -- -The name of the channel that has been added/modified/deleted +Message typically accompanied with a DHCP_NAK to let the client know +why it rejected the request. type: keyword -- -*`zoom.chat_channel.id`*:: + +*`zeek.dhcp.software.client`*:: + -- -The ID of the channel that has been added/modified/deleted +(present if policy/protocols/dhcp/software.bro is loaded) +Software reported by the client in the vendor_class option. type: keyword -- -*`zoom.chat_channel.type`*:: +*`zeek.dhcp.software.server`*:: + -- -Type of channel related to the event. Can be 1(Invite-Only), 2(Private) or 3(Public) +(present if policy/protocols/dhcp/software.bro is loaded) +Software reported by the client in the vendor_class option. type: keyword -- -*`zoom.chat_message.id`*:: + +*`zeek.dhcp.id.circuit`*:: + -- -Unique ID of the related chat message +(present if policy/protocols/dhcp/sub-opts.bro is loaded) +Added by DHCP relay agents which terminate switched or permanent +circuits. It encodes an agent-local identifier of the circuit from +which a DHCP client-to-server packet was received. Typically it +should represent a router or switch interface number. type: keyword -- -*`zoom.chat_message.type`*:: +*`zeek.dhcp.id.remote_agent`*:: + -- -Type of message, can be either "to_contact" or "to_channel" +(present if policy/protocols/dhcp/sub-opts.bro is loaded) +A globally unique identifier added by relay agents to identify the +remote host end of the circuit. type: keyword -- -*`zoom.chat_message.session_id`*:: +*`zeek.dhcp.id.subscriber`*:: + -- -SessionID for the channel related to the message +(present if policy/protocols/dhcp/sub-opts.bro is loaded) +The subscriber ID is a value independent of the physical network +configuration so that a customer's DHCP configuration can be given +to them correctly no matter where they are physically connected. type: keyword -- -*`zoom.chat_message.contact_email`*:: -+ --- -Email address related to the user sending the message +[float] +=== dnp3 + +Fields exported by the Zeek DNP3 log -type: keyword --- -*`zoom.chat_message.contact_id`*:: +*`zeek.dnp3.function.request`*:: + -- -UserID belonging to the user receiving a message +The name of the function message in the request. type: keyword -- -*`zoom.chat_message.channel_id`*:: +*`zeek.dnp3.function.reply`*:: + -- -ChannelID related to the message +The name of the function message in the reply. type: keyword -- -*`zoom.chat_message.channel_name`*:: +*`zeek.dnp3.id`*:: + -- -Channel name related to the message +The response's internal indication number. -type: keyword +type: integer -- -*`zoom.chat_message.message`*:: -+ --- -A string containing the full message that was sent +[float] +=== dns +Fields exported by the Zeek DNS log -type: keyword --- -*`zoom.meeting.id`*:: +*`zeek.dns.trans_id`*:: + -- -Unique ID of the related meeting +DNS transaction identifier. type: keyword -- -*`zoom.meeting.uuid`*:: +*`zeek.dns.rtt`*:: + -- -The UUID of the related meeting +Round trip time for the query and response. -type: keyword +type: double -- -*`zoom.meeting.host_id`*:: +*`zeek.dns.query`*:: + -- -The UserID of the configured meeting host +The domain name that is the subject of the DNS query. type: keyword -- -*`zoom.meeting.topic`*:: +*`zeek.dns.qclass`*:: + -- -Topic of the related meeting +The QCLASS value specifying the class of the query. -type: keyword +type: long -- -*`zoom.meeting.type`*:: +*`zeek.dns.qclass_name`*:: + -- -Type of meeting created +A descriptive name for the class of the query. type: keyword -- -*`zoom.meeting.start_time`*:: +*`zeek.dns.qtype`*:: + -- -Date and time the meeting started +A QTYPE value specifying the type of the query. -type: date +type: long -- -*`zoom.meeting.timezone`*:: +*`zeek.dns.qtype_name`*:: + -- -Which timezone is used for the meeting timestamps +A descriptive name for the type of the query. type: keyword -- -*`zoom.meeting.duration`*:: +*`zeek.dns.rcode`*:: + -- -The duration of a meeting in minutes +The response code value in DNS response messages. type: long -- -*`zoom.meeting.issues`*:: +*`zeek.dns.rcode_name`*:: + -- -When a user reports an issue with the meeting, for example: "Unstable audio quality" +A descriptive name for the response code value. type: keyword -- -*`zoom.meeting.password`*:: +*`zeek.dns.AA`*:: + -- -Password related to the meeting +The Authoritative Answer bit for response messages specifies that the responding +name server is an authority for the domain name in the question section. -type: keyword +type: boolean -- -*`zoom.phone.id`*:: +*`zeek.dns.TC`*:: + -- -Unique ID for the phone or conversation +The Truncation bit specifies that the message was truncated. -type: keyword +type: boolean -- -*`zoom.phone.user_id`*:: +*`zeek.dns.RD`*:: + -- -UserID for the phone owner related to a Call Log being completed +The Recursion Desired bit in a request message indicates that the client +wants recursive service for this query. -type: keyword +type: boolean -- -*`zoom.phone.download_url`*:: +*`zeek.dns.RA`*:: + -- -Download URL for the voicemail +The Recursion Available bit in a response message indicates that the name +server supports recursive queries. -type: keyword +type: boolean -- -*`zoom.phone.ringing_start_time`*:: +*`zeek.dns.answers`*:: + -- -The timestamp when a ringtone was established to the callee +The set of resource descriptions in the query answer. -type: date +type: keyword -- -*`zoom.phone.connected_start_time`*:: +*`zeek.dns.TTLs`*:: + -- -The date and time when a ringtone was established to the callee +The caching intervals of the associated RRs described by the answers field. -type: date +type: double -- -*`zoom.phone.answer_start_time`*:: +*`zeek.dns.rejected`*:: + -- -The date and time when the call was answered +Indicates whether the DNS query was rejected by the server. -type: date +type: boolean -- -*`zoom.phone.call_end_time`*:: +*`zeek.dns.total_answers`*:: + -- -The date and time when the call ended +The total number of resource records in the reply. -type: date +type: integer -- -*`zoom.phone.call_id`*:: +*`zeek.dns.total_replies`*:: + -- -Unique ID of the related call +The total number of resource records in the reply message. -type: keyword +type: integer -- -*`zoom.phone.duration`*:: +*`zeek.dns.saw_query`*:: + -- -Duration of a voicemail in minutes +Whether the full DNS query has been seen. -type: long +type: boolean -- -*`zoom.phone.caller.id`*:: +*`zeek.dns.saw_reply`*:: + -- -UserID of the caller related to the voicemail/call +Whether the full DNS reply has been seen. -type: keyword +type: boolean -- -*`zoom.phone.caller.user_id`*:: -+ --- -UserID of the person which initiated the call +[float] +=== dpd +Fields exported by the Zeek DPD log -type: keyword --- -*`zoom.phone.caller.number_type`*:: +*`zeek.dpd.analyzer`*:: + -- -The type of number, can be 1(Internal) or 2(External) +The analyzer that generated the violation. type: keyword -- -*`zoom.phone.caller.name`*:: +*`zeek.dpd.failure_reason`*:: + -- -The name of the related callee +The textual reason for the analysis failure. type: keyword -- -*`zoom.phone.caller.phone_number`*:: +*`zeek.dpd.packet_segment`*:: + -- -Phone Number of the caller related to the call +(present if policy/frameworks/dpd/packet-segment-logging.bro is loaded) +A chunk of the payload that most likely resulted in the protocol violation. type: keyword -- -*`zoom.phone.caller.extension_type`*:: -+ --- -Extension type of the caller number, can be user, callQueue, autoReceptionist or shareLineGroup +[float] +=== files +Fields exported by the Zeek Files log. -type: keyword --- -*`zoom.phone.caller.extension_number`*:: +*`zeek.files.fuid`*:: + -- -Extension number of the caller +A file unique identifier. type: keyword -- -*`zoom.phone.caller.timezone`*:: +*`zeek.files.tx_host`*:: + -- -Timezone of the caller +The host that transferred the file. -type: keyword +type: ip -- -*`zoom.phone.caller.device_type`*:: +*`zeek.files.rx_host`*:: + -- -Device type used by the caller +The host that received the file. -type: keyword +type: ip -- -*`zoom.phone.callee.id`*:: +*`zeek.files.session_ids`*:: + -- -UserID of the callee related to the voicemail/call +The sessions that have this file. type: keyword -- -*`zoom.phone.callee.user_id`*:: +*`zeek.files.source`*:: + -- -UserID of the related callee of a voicemail/call +An identification of the source of the file data. E.g. it may be a network protocol +over which it was transferred, or a local file path which was read, or some other +input source. type: keyword -- -*`zoom.phone.callee.name`*:: +*`zeek.files.depth`*:: + -- -The name of the related callee +A value to represent the depth of this file in relation to its source. In SMTP, it +is the depth of the MIME attachment on the message. In HTTP, it is the depth of the +request within the TCP connection. -type: keyword +type: long -- -*`zoom.phone.callee.number_type`*:: +*`zeek.files.analyzers`*:: + -- -The type of number, can be 1(Internal) or 2(External) +A set of analysis types done during the file analysis. type: keyword -- -*`zoom.phone.callee.phone_number`*:: +*`zeek.files.mime_type`*:: + -- -Phone Number of the callee related to the call +Mime type of the file. type: keyword -- -*`zoom.phone.callee.extension_type`*:: +*`zeek.files.filename`*:: + -- -Extension type of the callee number, can be user, callQueue, autoReceptionist or shareLineGroup +Name of the file if available. type: keyword -- -*`zoom.phone.callee.extension_number`*:: +*`zeek.files.local_orig`*:: + -- -Extension number of the callee related to the call +If the source of this file is a network connection, this field indicates if the data +originated from the local network or not. -type: keyword +type: boolean -- -*`zoom.phone.callee.timezone`*:: +*`zeek.files.is_orig`*:: + -- -Timezone of the callee related to the call +If the source of this file is a network connection, this field indicates if the file is +being sent by the originator of the connection or the responder. -type: keyword +type: boolean -- -*`zoom.phone.callee.device_type`*:: +*`zeek.files.duration`*:: + -- -Device type used by the callee related to the call +The duration the file was analyzed for. Not the duration of the session. -type: keyword +type: double -- -*`zoom.phone.date_time`*:: +*`zeek.files.seen_bytes`*:: + -- -Date and time of the related phone event +Number of bytes provided to the file analysis engine for the file. -type: date +type: long -- -*`zoom.recording.id`*:: +*`zeek.files.total_bytes`*:: + -- -Unique ID of the related recording +Total number of bytes that are supposed to comprise the full file. -type: keyword +type: long -- -*`zoom.recording.uuid`*:: +*`zeek.files.missing_bytes`*:: + -- -UUID of the related recording +The number of bytes in the file stream that were completely missed during the process +of analysis. -type: keyword +type: long -- -*`zoom.recording.host_id`*:: +*`zeek.files.overflow_bytes`*:: + -- -UserID of the host of the meeting that was recorded +The number of bytes in the file stream that were not delivered to stream file analyzers. +This could be overlapping bytes or bytes that couldn't be reassembled. -type: keyword +type: long -- -*`zoom.recording.topic`*:: +*`zeek.files.timedout`*:: + -- -Topic of the meeting related to the recording +Whether the file analysis timed out at least once for the file. -type: keyword +type: boolean -- -*`zoom.recording.type`*:: +*`zeek.files.parent_fuid`*:: + -- -Type of recording, can be multiple type of values, please check Zoom documentation +Identifier associated with a container file from which this one was extracted as part of +the file analysis. type: keyword -- -*`zoom.recording.start_time`*:: +*`zeek.files.md5`*:: + -- -The date and time when the recording started +An MD5 digest of the file contents. -type: date +type: keyword -- -*`zoom.recording.timezone`*:: +*`zeek.files.sha1`*:: + -- -The timezone used for the recording date +A SHA1 digest of the file contents. type: keyword -- -*`zoom.recording.duration`*:: +*`zeek.files.sha256`*:: + -- -Duration of the recording in minutes +A SHA256 digest of the file contents. -type: long +type: keyword -- -*`zoom.recording.share_url`*:: +*`zeek.files.extracted`*:: + -- -The URL to access the recording +Local filename of extracted file. type: keyword -- -*`zoom.recording.total_size`*:: +*`zeek.files.extracted_cutoff`*:: + -- -Total size of the recording in bytes +Indicate whether the file being extracted was cut off hence not extracted completely. -type: long +type: boolean -- -*`zoom.recording.recording_count`*:: +*`zeek.files.extracted_size`*:: + -- -Number of recording files related to the recording +The number of bytes extracted to disk. type: long -- -*`zoom.recording.recording_file.recording_start`*:: +*`zeek.files.entropy`*:: + -- -The date and time the recording started +The information density of the contents of the file. -type: date +type: double -- -*`zoom.recording.recording_file.recording_end`*:: +[float] +=== ftp + +Fields exported by the Zeek FTP log + + + +*`zeek.ftp.user`*:: + -- -The date and time the recording finished +User name for the current FTP session. -type: date +type: keyword -- -*`zoom.recording.host_email`*:: +*`zeek.ftp.password`*:: + -- -Email address of the host related to the meeting that was recorded +Password for the current FTP session if captured. type: keyword -- -*`zoom.user.id`*:: +*`zeek.ftp.command`*:: + -- -UserID related to the user event +Command given by the client. type: keyword -- -*`zoom.user.first_name`*:: +*`zeek.ftp.arg`*:: + -- -User first name related to the user event +Argument for the command if one is given. type: keyword -- -*`zoom.user.last_name`*:: + +*`zeek.ftp.file.size`*:: + -- -User last name related to the user event +Size of the file if the command indicates a file transfer. -type: keyword +type: long -- -*`zoom.user.email`*:: +*`zeek.ftp.file.mime_type`*:: + -- -User email related to the user event +Sniffed mime type of file. type: keyword -- -*`zoom.user.type`*:: +*`zeek.ftp.file.fuid`*:: + -- -User type related to the user event +(present if base/protocols/ftp/files.bro is loaded) +File unique ID. type: keyword -- -*`zoom.user.phone_number`*:: + +*`zeek.ftp.reply.code`*:: + -- -User phone number related to the user event +Reply code from the server in response to the command. -type: keyword +type: integer -- -*`zoom.user.phone_country`*:: +*`zeek.ftp.reply.msg`*:: + -- -User country code related to the user event +Reply message from the server in response to the command. type: keyword -- -*`zoom.user.company`*:: +[float] +=== data_channel + +Expected FTP data channel. + + + +*`zeek.ftp.data_channel.passive`*:: + -- -User company related to the user event +Whether PASV mode is toggled for control channel. -type: keyword +type: boolean -- -*`zoom.user.pmi`*:: +*`zeek.ftp.data_channel.originating_host`*:: + -- -User personal meeting ID related to the user event +The host that will be initiating the data connection. -type: keyword +type: ip -- -*`zoom.user.use_pmi`*:: +*`zeek.ftp.data_channel.response_host`*:: + -- -If a user has PMI enabled +The host that will be accepting the data connection. -type: boolean +type: ip -- -*`zoom.user.pic_url`*:: +*`zeek.ftp.data_channel.response_port`*:: + -- -Full URL to the profile picture used by the user +The port at which the acceptor is listening for the data connection. -type: keyword +type: integer -- -*`zoom.user.vanity_name`*:: +*`zeek.ftp.cwd`*:: + -- -Name of the personal meeting room related to the user event +Current working directory that this session is in. By making the default value '.', we can indicate that unless something more concrete is discovered that the existing but unknown directory is ok to use. type: keyword -- -*`zoom.user.timezone`*:: -+ --- -Timezone configured for the user +[float] +=== cmdarg +Command that is currently waiting for a response. -type: keyword --- -*`zoom.user.language`*:: +*`zeek.ftp.cmdarg.cmd`*:: + -- -Language configured for the user +Command. type: keyword -- -*`zoom.user.host_key`*:: +*`zeek.ftp.cmdarg.arg`*:: + -- -Host key set for the user +Argument for the command if one was given. type: keyword -- -*`zoom.user.role`*:: +*`zeek.ftp.cmdarg.seq`*:: + -- -The configured role for the user +Counter to track how many commands have been executed. -type: keyword +type: integer -- -*`zoom.user.dept`*:: +*`zeek.ftp.pending_commands`*:: + -- -The configured departement for the user +Queue for commands that have been sent but not yet responded to are tracked here. -type: keyword +type: integer -- -*`zoom.user.presence_status`*:: +*`zeek.ftp.passive`*:: + -- -Current presence status of user +Indicates if the session is in active or passive mode. -type: keyword +type: boolean -- -*`zoom.user.personal_notes`*:: +*`zeek.ftp.capture_password`*:: + -- -Personal notes for the User +Determines if the password will be captured for this request. -type: keyword +type: boolean -- -*`zoom.user.client_type`*:: +*`zeek.ftp.last_auth_requested`*:: + -- -Type of client used by the user. Can be browser, mac, win, iphone or android +present if base/protocols/ftp/gridftp.bro is loaded. +Last authentication/security mechanism that was used. type: keyword -- -*`zoom.user.version`*:: -+ --- -Version of the client used by the user +[float] +=== http +Fields exported by the Zeek HTTP log -type: keyword --- -*`zoom.webinar.id`*:: +*`zeek.http.trans_depth`*:: + -- -Unique ID for the related webinar +Represents the pipelined depth into the connection of this request/response transaction. -type: keyword +type: integer -- -*`zoom.webinar.join_url`*:: +*`zeek.http.status_msg`*:: + -- -The URL configured to join the webinar +Status message returned by the server. type: keyword -- -*`zoom.webinar.uuid`*:: +*`zeek.http.info_code`*:: + -- -UUID for the related webinar +Last seen 1xx informational reply code returned by the server. -type: keyword +type: integer -- -*`zoom.webinar.host_id`*:: +*`zeek.http.info_msg`*:: + -- -UserID for the configured host of the webinar +Last seen 1xx informational reply message returned by the server. type: keyword -- -*`zoom.webinar.topic`*:: +*`zeek.http.tags`*:: + -- -Meeting topic of the related webinar +A set of indicators of various attributes discovered and related to a particular +request/response pair. type: keyword -- -*`zoom.webinar.type`*:: +*`zeek.http.password`*:: + -- -Type of webinar created. Can be either 5(Webinar), 6(Recurring webinar without fixed time) or 9(Recurring webinar with fixed time) +Password if basic-auth is performed for the request. type: keyword -- -*`zoom.webinar.start_time`*:: +*`zeek.http.captured_password`*:: + -- -The date and time when the webinar started +Determines if the password will be captured for this request. -type: date +type: boolean -- -*`zoom.webinar.timezone`*:: +*`zeek.http.proxied`*:: + -- -Timezone used for the dates related to the webinar +All of the headers that may indicate if the HTTP request was proxied. type: keyword -- -*`zoom.webinar.duration`*:: +*`zeek.http.range_request`*:: + -- -Duration of the webinar in minutes +Indicates if this request can assume 206 partial content in response. -type: long +type: boolean -- -*`zoom.webinar.agenda`*:: +*`zeek.http.client_header_names`*:: + -- -The configured agenda of the webinar +The vector of HTTP header names sent by the client. No header values +are included here, just the header names. type: keyword -- -*`zoom.webinar.password`*:: +*`zeek.http.server_header_names`*:: + -- -Password configured to access the webinar +The vector of HTTP header names sent by the server. No header values +are included here, just the header names. type: keyword -- -*`zoom.webinar.issues`*:: +*`zeek.http.orig_fuids`*:: + -- -Any reported issues about a webinar is reported in this field +An ordered vector of file unique IDs from the originator. type: keyword -- -*`zoom.zoomroom.id`*:: +*`zeek.http.orig_mime_types`*:: + -- -Unique ID of the Zoom room +An ordered vector of mime types from the originator. type: keyword -- -*`zoom.zoomroom.room_name`*:: +*`zeek.http.orig_filenames`*:: + -- -The configured name of the Zoom room +An ordered vector of filenames from the originator. type: keyword -- -*`zoom.zoomroom.calendar_name`*:: +*`zeek.http.resp_fuids`*:: + -- -Calendar name of the Zoom room +An ordered vector of file unique IDs from the responder. type: keyword -- -*`zoom.zoomroom.calendar_id`*:: +*`zeek.http.resp_mime_types`*:: + -- -Unique ID of the calendar used by the Zoom room +An ordered vector of mime types from the responder. type: keyword -- -*`zoom.zoomroom.event_id`*:: +*`zeek.http.resp_filenames`*:: + -- -Unique ID of the calendar event associated with the Zoom Room +An ordered vector of filenames from the responder. type: keyword -- -*`zoom.zoomroom.change_key`*:: +*`zeek.http.orig_mime_depth`*:: + -- -Key used by Microsoft products integration that represents a specific version of a calendar +Current number of MIME entities in the HTTP request message body. -type: keyword +type: integer -- -*`zoom.zoomroom.resource_email`*:: +*`zeek.http.resp_mime_depth`*:: + -- -Email address associated with the calendar in use by the Zoom room +Current number of MIME entities in the HTTP response message body. -type: keyword +type: integer -- -*`zoom.zoomroom.email`*:: -+ --- -Email address associated with the Zoom room itself +[float] +=== intel +Fields exported by the Zeek Intel log. -type: keyword --- -*`zoom.zoomroom.issue`*:: + +*`zeek.intel.seen.indicator`*:: + -- -Any reported alerts or issues related to the Zoom room or its equipment +The intelligence indicator. type: keyword -- -*`zoom.zoomroom.alert_type`*:: +*`zeek.intel.seen.indicator_type`*:: + -- -An integer value representing the type of alert. The list of alert types can be found in the Zoom documentation +The type of data the indicator represents. type: keyword -- -*`zoom.zoomroom.component`*:: +*`zeek.intel.seen.host`*:: + -- -An integer value representing the type of equipment or component, The list of component types can be found in the Zoom documentation +If the indicator type was Intel::ADDR, then this field will be present. type: keyword -- -*`zoom.zoomroom.alert_kind`*:: +*`zeek.intel.seen.conn`*:: + -- -An integer value showing if the Zoom room alert has been either 1(Triggered) or 2(Cleared) +If the data was discovered within a connection, the connection record should go here to give context to the data. type: keyword -- -*`zoom.registrant.id`*:: +*`zeek.intel.seen.where`*:: + -- -Unique ID of the user registering to a meeting or webinar +Where the data was discovered. type: keyword -- -*`zoom.registrant.status`*:: +*`zeek.intel.seen.node`*:: + -- -Status of the specific user registration +The name of the node where the match was discovered. type: keyword -- -*`zoom.registrant.email`*:: +*`zeek.intel.seen.uid`*:: + -- -Email of the user registering to a meeting or webinar +If the data was discovered within a connection, the connection uid should go here to give context to the data. If the conn field is provided, this will be automatically filled out. type: keyword -- -*`zoom.registrant.first_name`*:: +*`zeek.intel.seen.f`*:: + -- -First name of the user registering to a meeting or webinar +If the data was discovered within a file, the file record should go here to provide context to the data. -type: keyword +type: object -- -*`zoom.registrant.last_name`*:: +*`zeek.intel.seen.fuid`*:: + -- -Last name of the user registering to a meeting or webinar +If the data was discovered within a file, the file uid should go here to provide context to the data. If the file record f is provided, this will be automatically filled out. type: keyword -- -*`zoom.registrant.address`*:: +*`zeek.intel.matched`*:: + -- -Address of the user registering to a meeting or webinar +Event to represent a match in the intelligence data from data that was seen. type: keyword -- -*`zoom.registrant.city`*:: +*`zeek.intel.sources`*:: + -- -City of the user registering to a meeting or webinar +Sources which supplied data for this match. type: keyword -- -*`zoom.registrant.country`*:: +*`zeek.intel.fuid`*:: + -- -Country of the user registering to a meeting or webinar +If a file was associated with this intelligence hit, this is the uid for the file. type: keyword -- -*`zoom.registrant.zip`*:: +*`zeek.intel.file_mime_type`*:: + -- -Zip code of the user registering to a meeting or webinar +A mime type if the intelligence hit is related to a file. If the $f field is provided this will be automatically filled out. type: keyword -- -*`zoom.registrant.state`*:: +*`zeek.intel.file_desc`*:: + -- -State of the user registering to a meeting or webinar +Frequently files can be described to give a bit more context. If the $f field is provided this field will be automatically filled out. type: keyword -- -*`zoom.registrant.phone`*:: +[float] +=== irc + +Fields exported by the Zeek IRC log + + + +*`zeek.irc.nick`*:: + -- -Phone number of the user registering to a meeting or webinar +Nickname given for the connection. type: keyword -- -*`zoom.registrant.industry`*:: +*`zeek.irc.user`*:: + -- -Related industry of the user registering to a meeting or webinar +Username given for the connection. type: keyword -- -*`zoom.registrant.org`*:: +*`zeek.irc.command`*:: + -- -Organization related to the user registering to a meeting or webinar +Command given by the client. type: keyword -- -*`zoom.registrant.job_title`*:: +*`zeek.irc.value`*:: + -- -Job title of the user registering to a meeting or webinar +Value for the command given by the client. type: keyword -- -*`zoom.registrant.purchasing_time_frame`*:: +*`zeek.irc.addl`*:: + -- -Choosen purchase timeframe of the user registering to a meeting or webinar +Any additional data for the command. type: keyword -- -*`zoom.registrant.role_in_purchase_process`*:: + + +*`zeek.irc.dcc.file.name`*:: + -- -Choosen role in a purchase process related to the user registering to a meeting or webinar +Present if base/protocols/irc/dcc-send.bro is loaded. +DCC filename requested. type: keyword -- -*`zoom.registrant.no_of_employees`*:: +*`zeek.irc.dcc.file.size`*:: + -- -Number of employees choosen by the user registering to a meeting or webinar +Present if base/protocols/irc/dcc-send.bro is loaded. +Size of the DCC transfer as indicated by the sender. -type: keyword +type: long -- -*`zoom.registrant.comments`*:: +*`zeek.irc.dcc.mime_type`*:: + -- -Comments left by the user registering to a meeting or webinar +present if base/protocols/irc/dcc-send.bro is loaded. +Sniffed mime type of the file. type: keyword -- -*`zoom.registrant.join_url`*:: +*`zeek.irc.fuid`*:: + -- -The URL that the registrant can use to join the webinar +present if base/protocols/irc/files.bro is loaded. +File unique ID. type: keyword -- -*`zoom.participant.id`*:: +[float] +=== kerberos + +Fields exported by the Zeek Kerberos log + + + +*`zeek.kerberos.request_type`*:: + -- -Unique ID of the participant related to a meeting +Request type - Authentication Service (AS) or Ticket Granting Service (TGS). type: keyword -- -*`zoom.participant.user_id`*:: +*`zeek.kerberos.client`*:: + -- -UserID of the participant related to a meeting +Client name. type: keyword -- -*`zoom.participant.user_name`*:: +*`zeek.kerberos.service`*:: + -- -Username of the participant related to a meeting +Service name. type: keyword -- -*`zoom.participant.join_time`*:: +*`zeek.kerberos.success`*:: + -- -The date and time a participant joined a meeting +Request result. -type: date +type: boolean -- -*`zoom.participant.leave_time`*:: + +*`zeek.kerberos.error.code`*:: + -- -The date and time a participant left a meeting +Error code. -type: date +type: integer -- -*`zoom.participant.sharing_details.link_source`*:: +*`zeek.kerberos.error.msg`*:: + -- -Method of sharing with dropbox integration +Error message. type: keyword -- -*`zoom.participant.sharing_details.content`*:: + +*`zeek.kerberos.valid.from`*:: + -- -Type of content that was shared +Ticket valid from. -type: keyword +type: date -- -*`zoom.participant.sharing_details.file_link`*:: +*`zeek.kerberos.valid.until`*:: + -- -The file link that was shared +Ticket valid until. -type: keyword +type: date -- -*`zoom.participant.sharing_details.date_time`*:: +*`zeek.kerberos.valid.days`*:: + -- -Timestamp the sharing started +Number of days the ticket is valid for. -type: keyword +type: integer -- -*`zoom.participant.sharing_details.source`*:: +*`zeek.kerberos.cipher`*:: + -- -The file source that was share +Ticket encryption type. type: keyword -- -*`zoom.old_values`*:: +*`zeek.kerberos.forwardable`*:: + -- -Includes the old values when updating a object like user, meeting, account or webinar +Forwardable ticket requested. -type: flattened +type: boolean -- -*`zoom.settings`*:: +*`zeek.kerberos.renewable`*:: + -- -The current active settings related to a object like user, meeting, account or webinar +Renewable ticket requested. -type: flattened +type: boolean -- -[[exported-fields-zscaler]] -== Zscaler NSS fields - -zscaler fields. - - -*`network.interface.name`*:: +*`zeek.kerberos.ticket.auth`*:: + -- -Name of the network interface where the traffic has been observed. +Hash of ticket used to authorize request/transaction. type: keyword -- - - -*`rsa.internal.msg`*:: +*`zeek.kerberos.ticket.new`*:: + -- -This key is used to capture the raw message that comes into the Log Decoder +Hash of ticket returned by the KDC. + type: keyword -- -*`rsa.internal.messageid`*:: -+ --- -type: keyword --- -*`rsa.internal.event_desc`*:: +*`zeek.kerberos.cert.client.value`*:: + -- +Client certificate. + + type: keyword -- -*`rsa.internal.message`*:: +*`zeek.kerberos.cert.client.fuid`*:: + -- -This key captures the contents of instant messages +File unique ID of client cert. + type: keyword -- -*`rsa.internal.time`*:: +*`zeek.kerberos.cert.client.subject`*:: + -- -This is the time at which a session hits a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. +Subject of client certificate. -type: date --- +type: keyword -*`rsa.internal.level`*:: -+ -- -Deprecated key defined only in table map. - -type: long --- -*`rsa.internal.msg_id`*:: +*`zeek.kerberos.cert.server.value`*:: + -- -This is the Message ID1 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Server certificate. + type: keyword -- -*`rsa.internal.msg_vid`*:: +*`zeek.kerberos.cert.server.fuid`*:: + -- -This is the Message ID2 value that identifies the exact log parser definition which parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +File unique ID of server certificate. + type: keyword -- -*`rsa.internal.data`*:: +*`zeek.kerberos.cert.server.subject`*:: + -- -Deprecated key defined only in table map. +Subject of server certificate. + type: keyword -- -*`rsa.internal.obj_server`*:: -+ --- -Deprecated key defined only in table map. +[float] +=== modbus -type: keyword +Fields exported by the Zeek modbus log. --- -*`rsa.internal.obj_val`*:: + +*`zeek.modbus.function`*:: + -- -Deprecated key defined only in table map. +The name of the function message that was sent. + type: keyword -- -*`rsa.internal.resource`*:: +*`zeek.modbus.exception`*:: + -- -Deprecated key defined only in table map. +The exception if the response was a failure. + type: keyword -- -*`rsa.internal.obj_id`*:: +*`zeek.modbus.track_address`*:: + -- -Deprecated key defined only in table map. +Present if policy/protocols/modbus/track-memmap.bro is loaded. +Modbus track address. -type: keyword --- +type: integer -*`rsa.internal.statement`*:: -+ -- -Deprecated key defined only in table map. -type: keyword +[float] +=== mysql + +Fields exported by the Zeek MySQL log. --- -*`rsa.internal.audit_class`*:: + +*`zeek.mysql.cmd`*:: + -- -Deprecated key defined only in table map. +The command that was issued. + type: keyword -- -*`rsa.internal.entry`*:: +*`zeek.mysql.arg`*:: + -- -Deprecated key defined only in table map. +The argument issued to the command. + type: keyword -- -*`rsa.internal.hcode`*:: +*`zeek.mysql.success`*:: + -- -Deprecated key defined only in table map. +Whether the command succeeded. -type: keyword + +type: boolean -- -*`rsa.internal.inode`*:: +*`zeek.mysql.rows`*:: + -- -Deprecated key defined only in table map. +The number of affected rows, if any. -type: long + +type: integer -- -*`rsa.internal.resource_class`*:: +*`zeek.mysql.response`*:: + -- -Deprecated key defined only in table map. +Server message, if any. + type: keyword -- -*`rsa.internal.dead`*:: -+ --- -Deprecated key defined only in table map. +[float] +=== notice + +Fields exported by the Zeek Notice log. -type: long --- -*`rsa.internal.feed_desc`*:: +*`zeek.notice.connection_id`*:: + -- -This is used to capture the description of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Identifier of the related connection session. + type: keyword -- -*`rsa.internal.feed_name`*:: +*`zeek.notice.icmp_id`*:: + -- -This is used to capture the name of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Identifier of the related ICMP session. + type: keyword -- -*`rsa.internal.cid`*:: +*`zeek.notice.file.id`*:: + -- -This is the unique identifier used to identify a NetWitness Concentrator. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +An identifier associated with a single file that is related to this notice. + type: keyword -- -*`rsa.internal.device_class`*:: +*`zeek.notice.file.parent_id`*:: + -- -This is the Classification of the Log Event Source under a predefined fixed set of Event Source Classifications. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Identifier associated with a container file from which this one was extracted. + type: keyword -- -*`rsa.internal.device_group`*:: +*`zeek.notice.file.source`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +An identification of the source of the file data. E.g. it may be a network protocol +over which it was transferred, or a local file path which was read, or some other +input source. + type: keyword -- -*`rsa.internal.device_host`*:: +*`zeek.notice.file.mime_type`*:: + -- -This is the Hostname of the log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +A mime type if the notice is related to a file. + type: keyword -- -*`rsa.internal.device_ip`*:: +*`zeek.notice.file.is_orig`*:: + -- -This is the IPv4 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +If the source of this file is a network connection, this field indicates if the file is +being sent by the originator of the connection or the responder. -type: ip + +type: boolean -- -*`rsa.internal.device_ipv6`*:: +*`zeek.notice.file.seen_bytes`*:: + -- -This is the IPv6 address of the Log Event Source sending the logs to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Number of bytes provided to the file analysis engine for the file. -type: ip + +type: long -- -*`rsa.internal.device_type`*:: +*`zeek.notice.ffile.total_bytes`*:: + -- -This is the name of the log parser which parsed a given session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Total number of bytes that are supposed to comprise the full file. -type: keyword + +type: long -- -*`rsa.internal.device_type_id`*:: +*`zeek.notice.file.missing_bytes`*:: + -- -Deprecated key defined only in table map. +The number of bytes in the file stream that were completely missed during the process +of analysis. + type: long -- -*`rsa.internal.did`*:: +*`zeek.notice.file.overflow_bytes`*:: + -- -This is the unique identifier used to identify a NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The number of bytes in the file stream that were not delivered to stream file analyzers. +This could be overlapping bytes or bytes that couldn't be reassembled. -type: keyword + +type: long -- -*`rsa.internal.entropy_req`*:: +*`zeek.notice.fuid`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +A file unique ID if this notice is related to a file. -type: long + +type: keyword -- -*`rsa.internal.entropy_res`*:: +*`zeek.notice.note`*:: + -- -This key is only used by the Entropy Parser, the Meta Type can be either UInt16 or Float32 based on the configuration +The type of the notice. -type: long + +type: keyword -- -*`rsa.internal.event_name`*:: +*`zeek.notice.msg`*:: + -- -Deprecated key defined only in table map. +The human readable message for the notice. + type: keyword -- -*`rsa.internal.feed_category`*:: +*`zeek.notice.sub`*:: + -- -This is used to capture the category of the feed. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The human readable sub-message. + type: keyword -- -*`rsa.internal.forward_ip`*:: +*`zeek.notice.n`*:: + -- -This key should be used to capture the IPV4 address of a relay system which forwarded the events from the original system to NetWitness. +Associated count, or a status code. -type: ip + +type: long -- -*`rsa.internal.forward_ipv6`*:: +*`zeek.notice.peer_name`*:: + -- -This key is used to capture the IPV6 address of a relay system which forwarded the events from the original system to NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Name of remote peer that raised this notice. -type: ip + +type: keyword -- -*`rsa.internal.header_id`*:: +*`zeek.notice.peer_descr`*:: + -- -This is the Header ID value that identifies the exact log parser header definition that parses a particular log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Textual description for the peer that raised this notice. -type: keyword + +type: text -- -*`rsa.internal.lc_cid`*:: +*`zeek.notice.actions`*:: + -- -This is a unique Identifier of a Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The actions which have been applied to this notice. + type: keyword -- -*`rsa.internal.lc_ctime`*:: +*`zeek.notice.email_body_sections`*:: + -- -This is the time at which a log is collected in a NetWitness Log Collector. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +By adding chunks of text into this element, other scripts can expand on notices +that are being emailed. -type: date + +type: text -- -*`rsa.internal.mcb_req`*:: +*`zeek.notice.email_delay_tokens`*:: + -- -This key is only used by the Entropy Parser, the most common byte request is simply which byte for each side (0 thru 255) was seen the most +Adding a string token to this set will cause the built-in emailing functionality +to delay sending the email either the token has been removed or the email +has been delayed for the specified time duration. -type: long + +type: keyword -- -*`rsa.internal.mcb_res`*:: +*`zeek.notice.identifier`*:: + -- -This key is only used by the Entropy Parser, the most common byte response is simply which byte for each side (0 thru 255) was seen the most +This field is provided when a notice is generated for the purpose of deduplicating notices. -type: long + +type: keyword -- -*`rsa.internal.mcbc_req`*:: +*`zeek.notice.suppress_for`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +This field indicates the length of time that this unique notice should be suppressed. -type: long + +type: double -- -*`rsa.internal.mcbc_res`*:: +*`zeek.notice.dropped`*:: + -- -This key is only used by the Entropy Parser, the most common byte count is the number of times the most common byte (above) was seen in the session streams +Indicate if the source IP address was dropped and denied network access. -type: long --- +type: boolean -*`rsa.internal.medium`*:: -+ -- -This key is used to identify if it’s a log/packet session or Layer 2 Encapsulation Type. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness. 32 = log, 33 = correlation session, < 32 is packet session -type: long +[float] +=== ntlm + +Fields exported by the Zeek NTLM log. + --- -*`rsa.internal.node_name`*:: +*`zeek.ntlm.domain`*:: + -- -Deprecated key defined only in table map. +Domain name given by the client. + type: keyword -- -*`rsa.internal.nwe_callback_id`*:: +*`zeek.ntlm.hostname`*:: + -- -This key denotes that event is endpoint related +Hostname given by the client. + type: keyword -- -*`rsa.internal.parse_error`*:: +*`zeek.ntlm.success`*:: + -- -This is a special key that stores any Meta key validation error found while parsing a log session. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Indicate whether or not the authentication was successful. -type: keyword + +type: boolean -- -*`rsa.internal.payload_req`*:: +*`zeek.ntlm.username`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +Username given by the client. -type: long + +type: keyword -- -*`rsa.internal.payload_res`*:: + + +*`zeek.ntlm.server.name.dns`*:: + -- -This key is only used by the Entropy Parser, the payload size metrics are the payload sizes of each session side at the time of parsing. However, in order to keep +DNS name given by the server in a CHALLENGE. -type: long + +type: keyword -- -*`rsa.internal.process_vid_dst`*:: +*`zeek.ntlm.server.name.netbios`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the target process. +NetBIOS name given by the server in a CHALLENGE. + type: keyword -- -*`rsa.internal.process_vid_src`*:: +*`zeek.ntlm.server.name.tree`*:: + -- -Endpoint generates and uses a unique virtual ID to identify any similar group of process. This ID represents the source process. +Tree name given by the server in a CHALLENGE. + type: keyword -- -*`rsa.internal.rid`*:: +[float] +=== ntp + +Fields exported by the Zeek NTP log. + + + +*`zeek.ntp.version`*:: + -- -This is a special ID of the Remote Session created by NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The NTP version number (1, 2, 3, 4). -type: long + +type: integer -- -*`rsa.internal.session_split`*:: +*`zeek.ntp.mode`*:: + -- -This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The NTP mode being used. -type: keyword + +type: integer -- -*`rsa.internal.site`*:: +*`zeek.ntp.stratum`*:: + -- -Deprecated key defined only in table map. +The stratum (primary server, secondary server, etc.). -type: keyword + +type: integer -- -*`rsa.internal.size`*:: +*`zeek.ntp.poll`*:: + -- -This is the size of the session as seen by the NetWitness Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The maximum interval between successive messages in seconds. -type: long + +type: double -- -*`rsa.internal.sourcefile`*:: +*`zeek.ntp.precision`*:: + -- -This is the name of the log file or PCAPs that can be imported into NetWitness. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +The precision of the system clock in seconds. -type: keyword + +type: double -- -*`rsa.internal.ubc_req`*:: +*`zeek.ntp.root_delay`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +Total round-trip delay to the reference clock in seconds. -type: long + +type: double -- -*`rsa.internal.ubc_res`*:: +*`zeek.ntp.root_disp`*:: + -- -This key is only used by the Entropy Parser, Unique byte count is the number of unique bytes seen in each stream. 256 would mean all byte values of 0 thru 255 were seen at least once +Total dispersion to the reference clock in seconds. -type: long + +type: double -- -*`rsa.internal.word`*:: +*`zeek.ntp.ref_id`*:: + -- -This is used by the Word Parsing technology to capture the first 5 character of every word in an unparsed log +For stratum 0, 4 character string used for debugging. For stratum 1, ID assigned to the reference clock by IANA. Above stratum 1, when using IPv4, the IP address of the reference clock. Note that the NTP protocol did not originally specify a large enough field to represent IPv6 addresses, so they use the first four bytes of the MD5 hash of the reference clock’s IPv6 address (i.e. an IPv4 address here is not necessarily IPv4). + type: keyword -- - -*`rsa.time.event_time`*:: +*`zeek.ntp.ref_time`*:: + -- -This key is used to capture the time mentioned in a raw session that represents the actual time an event occured in a standard normalized form +Time when the system clock was last set or correct. + type: date -- -*`rsa.time.duration_time`*:: +*`zeek.ntp.org_time`*:: + -- -This key is used to capture the normalized duration/lifetime in seconds. +Time at the client when the request departed for the NTP server. -type: double + +type: date -- -*`rsa.time.event_time_str`*:: +*`zeek.ntp.rec_time`*:: + -- -This key is used to capture the incomplete time mentioned in a session as a string +Time at the server when the request arrived from the NTP client. -type: keyword + +type: date -- -*`rsa.time.starttime`*:: +*`zeek.ntp.xmt_time`*:: + -- -This key is used to capture the Start time mentioned in a session in a standard form +Time at the server when the response departed for the NTP client. + type: date -- -*`rsa.time.month`*:: +*`zeek.ntp.num_exts`*:: + -- -type: keyword +Number of extension fields (which are not currently parsed). + + +type: integer -- -*`rsa.time.day`*:: +[float] +=== ocsp + +Fields exported by the Zeek OCSP log +Online Certificate Status Protocol (OCSP). Only created if policy script is loaded. + + + +*`zeek.ocsp.file_id`*:: + -- +File id of the OCSP reply. + + type: keyword -- -*`rsa.time.endtime`*:: + +*`zeek.ocsp.hash.algorithm`*:: + -- -This key is used to capture the End time mentioned in a session in a standard form +Hash algorithm used to generate issuerNameHash and issuerKeyHash. -type: date + +type: keyword -- -*`rsa.time.timezone`*:: + +*`zeek.ocsp.hash.issuer.name`*:: + -- -This key is used to capture the timezone of the Event Time +Hash of the issuer's distingueshed name. + type: keyword -- -*`rsa.time.duration_str`*:: +*`zeek.ocsp.hash.issuer.key`*:: + -- -A text string version of the duration +Hash of the issuer's public key. + type: keyword -- -*`rsa.time.date`*:: +*`zeek.ocsp.serial_number`*:: + -- +Serial number of the affected certificate. + + type: keyword -- -*`rsa.time.year`*:: +*`zeek.ocsp.status`*:: + -- +Status of the affected certificate. + + type: keyword -- -*`rsa.time.recorded_time`*:: + +*`zeek.ocsp.revoke.time`*:: + -- -The event time as recorded by the system the event is collected from. The usage scenario is a multi-tier application where the management layer of the system records it's own timestamp at the time of collection from its child nodes. Must be in timestamp format. +Time at which the certificate was revoked. + type: date -- -*`rsa.time.datetime`*:: +*`zeek.ocsp.revoke.reason`*:: + -- +Reason for which the certificate was revoked. + + type: keyword -- -*`rsa.time.effective_time`*:: + +*`zeek.ocsp.update.this`*:: + -- -This key is the effective time referenced by an individual event in a Standard Timestamp format +The time at which the status being shows is known to have been correct. + type: date -- -*`rsa.time.expire_time`*:: +*`zeek.ocsp.update.next`*:: + -- -This key is the timestamp that explicitly refers to an expiration. +The latest time at which new information about the status of the certificate will be available. + type: date -- -*`rsa.time.process_time`*:: -+ --- -Deprecated, use duration.time +[float] +=== pe -type: keyword +Fields exported by the Zeek pe log. --- -*`rsa.time.hour`*:: + +*`zeek.pe.client`*:: + -- +The client's version string. + + type: keyword -- -*`rsa.time.min`*:: +*`zeek.pe.id`*:: + -- +File id of this portable executable file. + + type: keyword -- -*`rsa.time.timestamp`*:: +*`zeek.pe.machine`*:: + -- +The target machine that the file was compiled for. + + type: keyword -- -*`rsa.time.event_queue_time`*:: +*`zeek.pe.compile_time`*:: + -- -This key is the Time that the event was queued. +The time that the file was created at. + type: date -- -*`rsa.time.p_time1`*:: +*`zeek.pe.os`*:: + -- -type: keyword +The required operating system. --- -*`rsa.time.tzone`*:: -+ --- type: keyword -- -*`rsa.time.eventtime`*:: +*`zeek.pe.subsystem`*:: + -- -type: keyword +The subsystem that is required to run this file. --- -*`rsa.time.gmtdate`*:: -+ --- type: keyword -- -*`rsa.time.gmttime`*:: +*`zeek.pe.is_exe`*:: + -- -type: keyword +Is the file an executable, or just an object file? --- -*`rsa.time.p_date`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.time.p_month`*:: +*`zeek.pe.is_64bit`*:: + -- -type: keyword +Is the file a 64-bit executable? --- -*`rsa.time.p_time`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.time.p_time2`*:: +*`zeek.pe.uses_aslr`*:: + -- -type: keyword +Does the file support Address Space Layout Randomization? --- -*`rsa.time.p_year`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.time.expire_time_str`*:: +*`zeek.pe.uses_dep`*:: + -- -This key is used to capture incomplete timestamp that explicitly refers to an expiration. +Does the file support Data Execution Prevention? -type: keyword --- +type: boolean -*`rsa.time.stamp`*:: -+ -- -Deprecated key defined only in table map. - -type: date +*`zeek.pe.uses_code_integrity`*:: ++ -- +Does the file enforce code integrity checks? -*`rsa.misc.action`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.result`*:: +*`zeek.pe.uses_seh`*:: + -- -This key is used to capture the outcome/result string value of an action in a session. +Does the file use structured exception handing? -type: keyword + +type: boolean -- -*`rsa.misc.severity`*:: +*`zeek.pe.has_import_table`*:: + -- -This key is used to capture the severity given the session +Does the file have an import table? -type: keyword + +type: boolean -- -*`rsa.misc.event_type`*:: +*`zeek.pe.has_export_table`*:: + -- -This key captures the event category type as specified by the event source. +Does the file have an export table? -type: keyword + +type: boolean -- -*`rsa.misc.reference_id`*:: +*`zeek.pe.has_cert_table`*:: + -- -This key is used to capture an event id from the session directly +Does the file have an attribute certificate table? -type: keyword + +type: boolean -- -*`rsa.misc.version`*:: +*`zeek.pe.has_debug_data`*:: + -- -This key captures Version of the application or OS which is generating the event. +Does the file have a debug table? -type: keyword + +type: boolean -- -*`rsa.misc.disposition`*:: +*`zeek.pe.section_names`*:: + -- -This key captures the The end state of an action. +The names of the sections, in order. + type: keyword -- -*`rsa.misc.result_code`*:: -+ --- -This key is used to capture the outcome/result numeric value of an action in a session +[float] +=== radius -type: keyword +Fields exported by the Zeek Radius log. --- -*`rsa.misc.category`*:: + +*`zeek.radius.username`*:: + -- -This key is used to capture the category of an event given by the vendor in the session +The username, if present. + type: keyword -- -*`rsa.misc.obj_name`*:: +*`zeek.radius.mac`*:: + -- -This is used to capture name of object +MAC address, if present. + type: keyword -- -*`rsa.misc.obj_type`*:: +*`zeek.radius.framed_addr`*:: + -- -This is used to capture type of object +The address given to the network access server, if present. This is only a hint from the RADIUS server and the network access server is not required to honor the address. -type: keyword + +type: ip -- -*`rsa.misc.event_source`*:: +*`zeek.radius.remote_ip`*:: + -- -This key captures Source of the event that’s not a hostname +Remote IP address, if present. This is collected from the Tunnel-Client-Endpoint attribute. -type: keyword + +type: ip -- -*`rsa.misc.log_session_id`*:: +*`zeek.radius.connect_info`*:: + -- -This key is used to capture a sessionid from the session directly +Connect info, if present. + type: keyword -- -*`rsa.misc.group`*:: +*`zeek.radius.reply_msg`*:: + -- -This key captures the Group Name value +Reply message from the server challenge. This is frequently shown to the user authenticating. + type: keyword -- -*`rsa.misc.policy_name`*:: +*`zeek.radius.result`*:: + -- -This key is used to capture the Policy Name only. +Successful or failed authentication. + type: keyword -- -*`rsa.misc.rule_name`*:: +*`zeek.radius.ttl`*:: + -- -This key captures the Rule Name +The duration between the first request and either the "Access-Accept" message or an error. If the field is empty, it means that either the request or response was not seen. -type: keyword + +type: integer -- -*`rsa.misc.context`*:: +*`zeek.radius.logged`*:: + -- -This key captures Information which adds additional context to the event. +Whether this has already been logged and can be ignored. -type: keyword --- +type: boolean -*`rsa.misc.change_new`*:: -+ -- -This key is used to capture the new values of the attribute that’s changing in a session -type: keyword +[float] +=== rdp --- +Fields exported by the Zeek RDP log. -*`rsa.misc.space`*:: -+ --- -type: keyword --- -*`rsa.misc.client`*:: +*`zeek.rdp.cookie`*:: + -- -This key is used to capture only the name of the client application requesting resources of the server. See the user.agent meta key for capture of the specific user agent identifier or browser identification string. +Cookie value used by the client machine. This is typically a username. + type: keyword -- -*`rsa.misc.msgIdPart1`*:: +*`zeek.rdp.result`*:: + -- -type: keyword +Status result for the connection. It's a mix between RDP negotation failure messages and GCC server create response messages. --- -*`rsa.misc.msgIdPart2`*:: -+ --- type: keyword -- -*`rsa.misc.change_old`*:: +*`zeek.rdp.security_protocol`*:: + -- -This key is used to capture the old value of the attribute that’s changing in a session +Security protocol chosen by the server. + type: keyword -- -*`rsa.misc.operation_id`*:: +*`zeek.rdp.keyboard_layout`*:: + -- -An alert number or operation number. The values should be unique and non-repeating. +Keyboard layout (language) of the client machine. + type: keyword -- -*`rsa.misc.event_state`*:: + +*`zeek.rdp.client.build`*:: + -- -This key captures the current state of the object/item referenced within the event. Describing an on-going event. +RDP client version used by the client machine. + type: keyword -- -*`rsa.misc.group_object`*:: +*`zeek.rdp.client.client_name`*:: + -- -This key captures a collection/grouping of entities. Specific usage +Name of the client machine. + type: keyword -- -*`rsa.misc.node`*:: +*`zeek.rdp.client.product_id`*:: + -- -Common use case is the node name within a cluster. The cluster name is reflected by the host name. +Product ID of the client machine. + type: keyword -- -*`rsa.misc.rule`*:: + +*`zeek.rdp.desktop.width`*:: + -- -This key captures the Rule number +Desktop width of the client machine. -type: keyword + +type: integer -- -*`rsa.misc.device_name`*:: +*`zeek.rdp.desktop.height`*:: + -- -This is used to capture name of the Device associated with the node Like: a physical disk, printer, etc +Desktop height of the client machine. -type: keyword + +type: integer -- -*`rsa.misc.param`*:: +*`zeek.rdp.desktop.color_depth`*:: + -- -This key is the parameters passed as part of a command or application, etc. +The color depth requested by the client in the high_color_depth field. + type: keyword -- -*`rsa.misc.change_attrib`*:: + +*`zeek.rdp.cert.type`*:: + -- -This key is used to capture the name of the attribute that’s changing in a session +If the connection is being encrypted with native RDP encryption, this is the type of cert being used. + type: keyword -- -*`rsa.misc.event_computer`*:: +*`zeek.rdp.cert.count`*:: + -- -This key is a windows only concept, where this key is used to capture fully qualified domain name in a windows log. +The number of certs seen. X.509 can transfer an entire certificate chain. -type: keyword + +type: integer -- -*`rsa.misc.reference_id1`*:: +*`zeek.rdp.cert.permanent`*:: + -- -This key is for Linked ID to be used as an addition to "reference.id" +Indicates if the provided certificate or certificate chain is permanent or temporary. -type: keyword + +type: boolean -- -*`rsa.misc.event_log`*:: + +*`zeek.rdp.encryption.level`*:: + -- -This key captures the Name of the event log +Encryption level of the connection. + type: keyword -- -*`rsa.misc.OS`*:: +*`zeek.rdp.encryption.method`*:: + -- -This key captures the Name of the Operating System +Encryption method of the connection. + type: keyword -- -*`rsa.misc.terminal`*:: +*`zeek.rdp.done`*:: + -- -This key captures the Terminal Names only +Track status of logging RDP connections. -type: keyword + +type: boolean -- -*`rsa.misc.msgIdPart3`*:: +*`zeek.rdp.ssl`*:: + -- -type: keyword +(present if policy/protocols/rdp/indicate_ssl.bro is loaded) +Flag the connection if it was seen over SSL. --- -*`rsa.misc.filter`*:: -+ +type: boolean + -- -This key captures Filter used to reduce result set -type: keyword +[float] +=== rfb --- +Fields exported by the Zeek RFB log. -*`rsa.misc.serial_number`*:: -+ --- -This key is the Serial number associated with a physical asset. -type: keyword --- -*`rsa.misc.checksum`*:: + +*`zeek.rfb.version.client.major`*:: + -- -This key is used to capture the checksum or hash of the entity such as a file or process. Checksum should be used over checksum.src or checksum.dst when it is unclear whether the entity is a source or target of an action. +Major version of the client. + type: keyword -- -*`rsa.misc.event_user`*:: +*`zeek.rfb.version.client.minor`*:: + -- -This key is a windows only concept, where this key is used to capture combination of domain name and username in a windows log. +Minor version of the client. + type: keyword -- -*`rsa.misc.virusname`*:: + +*`zeek.rfb.version.server.major`*:: + -- -This key captures the name of the virus +Major version of the server. + type: keyword -- -*`rsa.misc.content_type`*:: +*`zeek.rfb.version.server.minor`*:: + -- -This key is used to capture Content Type only. +Minor version of the server. + type: keyword -- -*`rsa.misc.group_id`*:: + +*`zeek.rfb.auth.success`*:: + -- -This key captures Group ID Number (related to the group name) +Whether or not authentication was successful. -type: keyword + +type: boolean -- -*`rsa.misc.policy_id`*:: +*`zeek.rfb.auth.method`*:: + -- -This key is used to capture the Policy ID only, this should be a numeric value, use policy.name otherwise +Identifier of authentication method used. + type: keyword -- -*`rsa.misc.vsys`*:: +*`zeek.rfb.share_flag`*:: + -- -This key captures Virtual System Name +Whether the client has an exclusive or a shared session. -type: keyword + +type: boolean -- -*`rsa.misc.connection_id`*:: +*`zeek.rfb.desktop_name`*:: + -- -This key captures the Connection ID +Name of the screen that is being shared. + type: keyword -- -*`rsa.misc.reference_id2`*:: +*`zeek.rfb.width`*:: + -- -This key is for the 2nd Linked ID. Can be either linked to "reference.id" or "reference.id1" value but should not be used unless the other two variables are in play. +Width of the screen that is being shared. -type: keyword + +type: integer -- -*`rsa.misc.sensor`*:: +*`zeek.rfb.height`*:: + -- -This key captures Name of the sensor. Typically used in IDS/IPS based devices +Height of the screen that is being shared. -type: keyword --- +type: integer -*`rsa.misc.sig_id`*:: -+ -- -This key captures IDS/IPS Int Signature ID -type: long +[float] +=== signature + +Fields exported by the Zeek Signature log. --- -*`rsa.misc.port_name`*:: + +*`zeek.signature.note`*:: + -- -This key is used for Physical or logical port connection but does NOT include a network port. (Example: Printer port name). +Notice associated with signature event. + type: keyword -- -*`rsa.misc.rule_group`*:: +*`zeek.signature.sig_id`*:: + -- -This key captures the Rule group name +The name of the signature that matched. + type: keyword -- -*`rsa.misc.risk_num`*:: +*`zeek.signature.event_msg`*:: + -- -This key captures a Numeric Risk value +A more descriptive message of the signature-matching event. -type: double + +type: keyword -- -*`rsa.misc.trigger_val`*:: +*`zeek.signature.sub_msg`*:: + -- -This key captures the Value of the trigger or threshold condition. +Extracted payload data or extra message. + type: keyword -- -*`rsa.misc.log_session_id1`*:: +*`zeek.signature.sig_count`*:: + -- -This key is used to capture a Linked (Related) Session ID from the session directly +Number of sigs, usually from summary count. -type: keyword + +type: integer -- -*`rsa.misc.comp_version`*:: +*`zeek.signature.host_count`*:: + -- -This key captures the Version level of a sub-component of a product. +Number of hosts, from a summary count. -type: keyword + +type: integer -- -*`rsa.misc.content_version`*:: +[float] +=== sip + +Fields exported by the Zeek SIP log. + + + +*`zeek.sip.transaction_depth`*:: + -- -This key captures Version level of a signature or database content. +Represents the pipelined depth into the connection of this request/response transaction. -type: keyword + +type: integer -- -*`rsa.misc.hardware_id`*:: + +*`zeek.sip.sequence.method`*:: + -- -This key is used to capture unique identifier for a device or system (NOT a Mac address) +Verb used in the SIP request (INVITE, REGISTER etc.). + type: keyword -- -*`rsa.misc.risk`*:: +*`zeek.sip.sequence.number`*:: + -- -This key captures the non-numeric risk value +Contents of the CSeq: header from the client. + type: keyword -- -*`rsa.misc.event_id`*:: +*`zeek.sip.uri`*:: + -- -type: keyword +URI used in the request. --- -*`rsa.misc.reason`*:: -+ --- type: keyword -- -*`rsa.misc.status`*:: +*`zeek.sip.date`*:: + -- +Contents of the Date: header from the client. + + type: keyword -- -*`rsa.misc.mail_id`*:: + +*`zeek.sip.request.from`*:: + -- -This key is used to capture the mailbox id/name +Contents of the request From: header Note: The tag= value that's usually appended to the sender is stripped off and not logged. + type: keyword -- -*`rsa.misc.rule_uid`*:: +*`zeek.sip.request.to`*:: + -- -This key is the Unique Identifier for a rule. +Contents of the To: header. + type: keyword -- -*`rsa.misc.trigger_desc`*:: +*`zeek.sip.request.path`*:: + -- -This key captures the Description of the trigger or threshold condition. +The client message transmission path, as extracted from the headers. + type: keyword -- -*`rsa.misc.inout`*:: +*`zeek.sip.request.body_length`*:: + -- -type: keyword +Contents of the Content-Length: header from the client. --- -*`rsa.misc.p_msgid`*:: -+ --- -type: keyword +type: long -- -*`rsa.misc.data_type`*:: + +*`zeek.sip.response.from`*:: + -- -type: keyword +Contents of the response From: header Note: The tag= value that's usually appended to the sender is stripped off and not logged. --- -*`rsa.misc.msgIdPart4`*:: -+ --- type: keyword -- -*`rsa.misc.error`*:: +*`zeek.sip.response.to`*:: + -- -This key captures All non successful Error codes or responses +Contents of the response To: header. + type: keyword -- -*`rsa.misc.index`*:: +*`zeek.sip.response.path`*:: + -- +The server message transmission path, as extracted from the headers. + + type: keyword -- -*`rsa.misc.listnum`*:: +*`zeek.sip.response.body_length`*:: + -- -This key is used to capture listname or listnumber, primarily for collecting access-list +Contents of the Content-Length: header from the server. -type: keyword + +type: long -- -*`rsa.misc.ntype`*:: +*`zeek.sip.reply_to`*:: + -- +Contents of the Reply-To: header. + + type: keyword -- -*`rsa.misc.observed_val`*:: +*`zeek.sip.call_id`*:: + -- -This key captures the Value observed (from the perspective of the device generating the log). +Contents of the Call-ID: header from the client. + type: keyword -- -*`rsa.misc.policy_value`*:: +*`zeek.sip.subject`*:: + -- -This key captures the contents of the policy. This contains details about the policy +Contents of the Subject: header from the client. + type: keyword -- -*`rsa.misc.pool_name`*:: +*`zeek.sip.user_agent`*:: + -- -This key captures the name of a resource pool +Contents of the User-Agent: header from the client. + type: keyword -- -*`rsa.misc.rule_template`*:: + +*`zeek.sip.status.code`*:: + -- -A default set of parameters which are overlayed onto a rule (or rulename) which efffectively constitutes a template +Status code returned by the server. -type: keyword + +type: integer -- -*`rsa.misc.count`*:: +*`zeek.sip.status.msg`*:: + -- -type: keyword +Status message returned by the server. --- -*`rsa.misc.number`*:: -+ --- type: keyword -- -*`rsa.misc.sigcat`*:: +*`zeek.sip.warning`*:: + -- -type: keyword +Contents of the Warning: header. --- -*`rsa.misc.type`*:: -+ --- type: keyword -- -*`rsa.misc.comments`*:: +*`zeek.sip.content_type`*:: + -- -Comment information provided in the log message +Contents of the Content-Type: header from the server. + type: keyword -- -*`rsa.misc.doc_number`*:: -+ --- -This key captures File Identification number +[float] +=== smb_cmd -type: long +Fields exported by the Zeek smb_cmd log. --- -*`rsa.misc.expected_val`*:: + +*`zeek.smb_cmd.command`*:: + -- -This key captures the Value expected (from the perspective of the device generating the log). +The command sent by the client. + type: keyword -- -*`rsa.misc.job_num`*:: +*`zeek.smb_cmd.sub_command`*:: + -- -This key captures the Job Number +The subcommand sent by the client, if present. + type: keyword -- -*`rsa.misc.spi_dst`*:: +*`zeek.smb_cmd.argument`*:: + -- -Destination SPI Index +Command argument sent by the client, if any. + type: keyword -- -*`rsa.misc.spi_src`*:: +*`zeek.smb_cmd.status`*:: + -- -Source SPI Index +Server reply to the client's command. + type: keyword -- -*`rsa.misc.code`*:: +*`zeek.smb_cmd.rtt`*:: + -- -type: keyword +Round trip time from the request to the response. + + +type: double -- -*`rsa.misc.agent_id`*:: +*`zeek.smb_cmd.version`*:: + -- -This key is used to capture agent id +Version of SMB for the command. + type: keyword -- -*`rsa.misc.message_body`*:: +*`zeek.smb_cmd.username`*:: + -- -This key captures the The contents of the message body. +Authenticated username, if available. + type: keyword -- -*`rsa.misc.phone`*:: +*`zeek.smb_cmd.tree`*:: + -- +If this is related to a tree, this is the tree that was used for the current command. + + type: keyword -- -*`rsa.misc.sig_id_str`*:: +*`zeek.smb_cmd.tree_service`*:: + -- -This key captures a string object of the sigid variable. +The type of tree (disk share, printer share, named pipe, etc.). + type: keyword -- -*`rsa.misc.cmd`*:: -+ --- -type: keyword +[float] +=== file --- +If the command referenced a file, store it here. -*`rsa.misc.misc`*:: -+ --- -type: keyword --- -*`rsa.misc.name`*:: +*`zeek.smb_cmd.file.name`*:: + -- +Filename if one was seen. + + type: keyword -- -*`rsa.misc.cpu`*:: +*`zeek.smb_cmd.file.action`*:: + -- -This key is the CPU time used in the execution of the event being recorded. +Action this log record represents. -type: long + +type: keyword -- -*`rsa.misc.event_desc`*:: +*`zeek.smb_cmd.file.uid`*:: + -- -This key is used to capture a description of an event available directly or inferred +UID of the referenced file. + type: keyword -- -*`rsa.misc.sig_id1`*:: + +*`zeek.smb_cmd.file.host.tx`*:: + -- -This key captures IDS/IPS Int Signature ID. This must be linked to the sig.id - -type: long +Address of the transmitting host. --- -*`rsa.misc.im_buddyid`*:: -+ --- -type: keyword +type: ip -- -*`rsa.misc.im_client`*:: +*`zeek.smb_cmd.file.host.rx`*:: + -- -type: keyword +Address of the receiving host. --- -*`rsa.misc.im_userid`*:: -+ --- -type: keyword +type: ip -- -*`rsa.misc.pid`*:: +*`zeek.smb_cmd.smb1_offered_dialects`*:: + -- -type: keyword +Present if base/protocols/smb/smb1-main.bro is loaded. +Dialects offered by the client. --- -*`rsa.misc.priority`*:: -+ --- type: keyword -- -*`rsa.misc.context_subject`*:: +*`zeek.smb_cmd.smb2_offered_dialects`*:: + -- -This key is to be used in an audit context where the subject is the object being identified +Present if base/protocols/smb/smb2-main.bro is loaded. +Dialects offered by the client. -type: keyword --- +type: integer -*`rsa.misc.context_target`*:: -+ -- -type: keyword --- +[float] +=== smb_files -*`rsa.misc.cve`*:: -+ --- -This key captures CVE (Common Vulnerabilities and Exposures) - an identifier for known information security vulnerabilities. +Fields exported by the Zeek SMB Files log. -type: keyword --- -*`rsa.misc.fcatnum`*:: +*`zeek.smb_files.action`*:: + -- -This key captures Filter Category Number. Legacy Usage +Action this log record represents. + type: keyword -- -*`rsa.misc.library`*:: +*`zeek.smb_files.fid`*:: + -- -This key is used to capture library information in mainframe devices +ID referencing this file. -type: keyword + +type: integer -- -*`rsa.misc.parent_node`*:: +*`zeek.smb_files.name`*:: + -- -This key captures the Parent Node Name. Must be related to node variable. +Filename if one was seen. + type: keyword -- -*`rsa.misc.risk_info`*:: +*`zeek.smb_files.path`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Path pulled from the tree this file was transferred to or from. + type: keyword -- -*`rsa.misc.tcp_flags`*:: +*`zeek.smb_files.previous_name`*:: + -- -This key is captures the TCP flags set in any packet of session +If the rename action was seen, this will be the file's previous name. -type: long + +type: keyword -- -*`rsa.misc.tos`*:: +*`zeek.smb_files.size`*:: + -- -This key describes the type of service +Byte size of the file. + type: long -- -*`rsa.misc.vm_target`*:: -+ --- -VMWare Target **VMWARE** only varaible. +[float] +=== times + +Timestamps of the file. -type: keyword --- -*`rsa.misc.workspace`*:: +*`zeek.smb_files.times.accessed`*:: + -- -This key captures Workspace Description +The file's access time. -type: keyword + +type: date -- -*`rsa.misc.command`*:: +*`zeek.smb_files.times.changed`*:: + -- -type: keyword +The file's change time. --- -*`rsa.misc.event_category`*:: -+ --- -type: keyword +type: date -- -*`rsa.misc.facilityname`*:: +*`zeek.smb_files.times.created`*:: + -- -type: keyword +The file's create time. --- -*`rsa.misc.forensic_info`*:: -+ --- -type: keyword +type: date -- -*`rsa.misc.jobname`*:: +*`zeek.smb_files.times.modified`*:: + -- -type: keyword +The file's modify time. --- -*`rsa.misc.mode`*:: -+ --- -type: keyword +type: date -- -*`rsa.misc.policy`*:: +*`zeek.smb_files.uuid`*:: + -- -type: keyword +UUID referencing this file if DCE/RPC. --- -*`rsa.misc.policy_waiver`*:: -+ --- type: keyword -- -*`rsa.misc.second`*:: -+ --- -type: keyword +[float] +=== smb_mapping --- +Fields exported by the Zeek SMB_Mapping log. -*`rsa.misc.space1`*:: -+ --- -type: keyword --- -*`rsa.misc.subcategory`*:: +*`zeek.smb_mapping.path`*:: + -- -type: keyword +Name of the tree path. --- -*`rsa.misc.tbdstr2`*:: -+ --- type: keyword -- -*`rsa.misc.alert_id`*:: +*`zeek.smb_mapping.service`*:: + -- -Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +The type of resource of the tree (disk share, printer share, named pipe, etc.). + type: keyword -- -*`rsa.misc.checksum_dst`*:: +*`zeek.smb_mapping.native_file_system`*:: + -- -This key is used to capture the checksum or hash of the the target entity such as a process or file. +File system of the tree. + type: keyword -- -*`rsa.misc.checksum_src`*:: +*`zeek.smb_mapping.share_type`*:: + -- -This key is used to capture the checksum or hash of the source entity such as a file or process. +If this is SMB2, a share type will be included. For SMB1, the type of share +will be deduced and included as well. + type: keyword -- -*`rsa.misc.fresult`*:: -+ --- -This key captures the Filter Result +[float] +=== smtp + +Fields exported by the Zeek SMTP log. -type: long --- -*`rsa.misc.payload_dst`*:: +*`zeek.smtp.transaction_depth`*:: + -- -This key is used to capture destination payload +A count to represent the depth of this message transaction in a single connection where multiple messages were transferred. -type: keyword + +type: integer -- -*`rsa.misc.payload_src`*:: +*`zeek.smtp.helo`*:: + -- -This key is used to capture source payload +Contents of the Helo header. + type: keyword -- -*`rsa.misc.pool_id`*:: +*`zeek.smtp.mail_from`*:: + -- -This key captures the identifier (typically numeric field) of a resource pool +Email addresses found in the MAIL FROM header. + type: keyword -- -*`rsa.misc.process_id_val`*:: +*`zeek.smtp.rcpt_to`*:: + -- -This key is a failure key for Process ID when it is not an integer value +Email addresses found in the RCPT TO header. + type: keyword -- -*`rsa.misc.risk_num_comm`*:: +*`zeek.smtp.date`*:: + -- -This key captures Risk Number Community - -type: double - --- +Contents of the Date header. -*`rsa.misc.risk_num_next`*:: -+ --- -This key captures Risk Number NextGen -type: double +type: date -- -*`rsa.misc.risk_num_sand`*:: +*`zeek.smtp.from`*:: + -- -This key captures Risk Number SandBox +Contents of the From header. -type: double + +type: keyword -- -*`rsa.misc.risk_num_static`*:: +*`zeek.smtp.to`*:: + -- -This key captures Risk Number Static +Contents of the To header. -type: double + +type: keyword -- -*`rsa.misc.risk_suspicious`*:: +*`zeek.smtp.cc`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Contents of the CC header. + type: keyword -- -*`rsa.misc.risk_warning`*:: +*`zeek.smtp.reply_to`*:: + -- -Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) +Contents of the ReplyTo header. + type: keyword -- -*`rsa.misc.snmp_oid`*:: +*`zeek.smtp.msg_id`*:: + -- -SNMP Object Identifier +Contents of the MsgID header. + type: keyword -- -*`rsa.misc.sql`*:: +*`zeek.smtp.in_reply_to`*:: + -- -This key captures the SQL query +Contents of the In-Reply-To header. + type: keyword -- -*`rsa.misc.vuln_ref`*:: +*`zeek.smtp.subject`*:: + -- -This key captures the Vulnerability Reference details +Contents of the Subject header. + type: keyword -- -*`rsa.misc.acl_id`*:: +*`zeek.smtp.x_originating_ip`*:: + -- -type: keyword +Contents of the X-Originating-IP header. --- -*`rsa.misc.acl_op`*:: -+ --- type: keyword -- -*`rsa.misc.acl_pos`*:: +*`zeek.smtp.first_received`*:: + -- -type: keyword +Contents of the first Received header. --- -*`rsa.misc.acl_table`*:: -+ --- type: keyword -- -*`rsa.misc.admin`*:: +*`zeek.smtp.second_received`*:: + -- -type: keyword +Contents of the second Received header. --- -*`rsa.misc.alarm_id`*:: -+ --- type: keyword -- -*`rsa.misc.alarmname`*:: +*`zeek.smtp.last_reply`*:: + -- -type: keyword +The last message that the server sent to the client. --- -*`rsa.misc.app_id`*:: -+ --- type: keyword -- -*`rsa.misc.audit`*:: +*`zeek.smtp.path`*:: + -- -type: keyword +The message transmission path, as extracted from the headers. --- -*`rsa.misc.audit_object`*:: -+ --- -type: keyword +type: ip -- -*`rsa.misc.auditdata`*:: +*`zeek.smtp.user_agent`*:: + -- -type: keyword +Value of the User-Agent header from the client. --- -*`rsa.misc.benchmark`*:: -+ --- type: keyword -- -*`rsa.misc.bypass`*:: +*`zeek.smtp.tls`*:: + -- -type: keyword +Indicates that the connection has switched to using TLS. --- -*`rsa.misc.cache`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cache_hit`*:: +*`zeek.smtp.process_received_from`*:: + -- -type: keyword +Indicates if the "Received: from" headers should still be processed. --- -*`rsa.misc.cefversion`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cfg_attr`*:: +*`zeek.smtp.has_client_activity`*:: + -- -type: keyword +Indicates if client activity has been seen, but not yet logged. --- -*`rsa.misc.cfg_obj`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cfg_path`*:: +*`zeek.smtp.fuids`*:: + -- -type: keyword +(present if base/protocols/smtp/files.bro is loaded) +An ordered vector of file unique IDs seen attached to the message. --- -*`rsa.misc.changes`*:: -+ --- type: keyword -- -*`rsa.misc.client_ip`*:: +*`zeek.smtp.is_webmail`*:: + -- -type: keyword +Indicates if the message was sent through a webmail interface. --- -*`rsa.misc.clustermembers`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cn_acttimeout`*:: -+ --- -type: keyword +[float] +=== snmp --- +Fields exported by the Zeek SNMP log. -*`rsa.misc.cn_asn_src`*:: -+ --- -type: keyword --- -*`rsa.misc.cn_bgpv4nxthop`*:: +*`zeek.snmp.duration`*:: + -- -type: keyword +The amount of time between the first packet beloning to the SNMP session and the latest one seen. --- -*`rsa.misc.cn_ctr_dst_code`*:: -+ --- -type: keyword +type: double -- -*`rsa.misc.cn_dst_tos`*:: +*`zeek.snmp.version`*:: + -- -type: keyword +The version of SNMP being used. --- -*`rsa.misc.cn_dst_vlan`*:: -+ --- type: keyword -- -*`rsa.misc.cn_engine_id`*:: +*`zeek.snmp.community`*:: + -- -type: keyword +The community string of the first SNMP packet associated with the session. This is used as part of SNMP's (v1 and v2c) administrative/security framework. See RFC 1157 or RFC 1901. --- -*`rsa.misc.cn_engine_type`*:: -+ --- type: keyword -- -*`rsa.misc.cn_f_switch`*:: + +*`zeek.snmp.get.requests`*:: + -- -type: keyword +The number of variable bindings in GetRequest/GetNextRequest PDUs seen for the session. --- -*`rsa.misc.cn_flowsampid`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_flowsampintv`*:: +*`zeek.snmp.get.bulk_requests`*:: + -- -type: keyword +The number of variable bindings in GetBulkRequest PDUs seen for the session. --- -*`rsa.misc.cn_flowsampmode`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_inacttimeout`*:: +*`zeek.snmp.get.responses`*:: + -- -type: keyword +The number of variable bindings in GetResponse/Response PDUs seen for the session. --- -*`rsa.misc.cn_inpermbyts`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_inpermpckts`*:: + +*`zeek.snmp.set.requests`*:: + -- -type: keyword +The number of variable bindings in SetRequest PDUs seen for the session. --- -*`rsa.misc.cn_invalid`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_ip_proto_ver`*:: +*`zeek.snmp.display_string`*:: + -- -type: keyword +A system description of the SNMP responder endpoint. --- -*`rsa.misc.cn_ipv4_ident`*:: -+ --- type: keyword -- -*`rsa.misc.cn_l_switch`*:: +*`zeek.snmp.up_since`*:: + -- -type: keyword +The time at which the SNMP responder endpoint claims it's been up since. --- -*`rsa.misc.cn_log_did`*:: -+ --- -type: keyword +type: date -- -*`rsa.misc.cn_log_rid`*:: -+ --- -type: keyword +[float] +=== socks --- +Fields exported by the Zeek SOCKS log. -*`rsa.misc.cn_max_ttl`*:: -+ --- -type: keyword --- -*`rsa.misc.cn_maxpcktlen`*:: +*`zeek.socks.version`*:: + -- -type: keyword +Protocol version of SOCKS. + + +type: integer -- -*`rsa.misc.cn_min_ttl`*:: +*`zeek.socks.user`*:: + -- -type: keyword +Username used to request a login to the proxy. --- -*`rsa.misc.cn_minpcktlen`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_1`*:: +*`zeek.socks.password`*:: + -- -type: keyword +Password used to request a login to the proxy. --- -*`rsa.misc.cn_mpls_lbl_10`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_2`*:: +*`zeek.socks.status`*:: + -- -type: keyword +Server status for the attempt at using the proxy. --- -*`rsa.misc.cn_mpls_lbl_3`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_4`*:: + +*`zeek.socks.request.host`*:: + -- -type: keyword +Client requested SOCKS address. Could be an address, a name or both. --- -*`rsa.misc.cn_mpls_lbl_5`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mpls_lbl_6`*:: +*`zeek.socks.request.port`*:: + -- -type: keyword +Client requested port. --- -*`rsa.misc.cn_mpls_lbl_7`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_mpls_lbl_8`*:: + +*`zeek.socks.bound.host`*:: + -- -type: keyword +Server bound address. Could be an address, a name or both. --- -*`rsa.misc.cn_mpls_lbl_9`*:: -+ --- type: keyword -- -*`rsa.misc.cn_mplstoplabel`*:: +*`zeek.socks.bound.port`*:: + -- -type: keyword +Server bound port. --- -*`rsa.misc.cn_mplstoplabip`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_mul_dst_byt`*:: +*`zeek.socks.capture_password`*:: + -- -type: keyword +Determines if the password will be captured for this request. --- -*`rsa.misc.cn_mul_dst_pks`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cn_muligmptype`*:: -+ --- -type: keyword +[float] +=== ssh --- +Fields exported by the Zeek SSH log. -*`rsa.misc.cn_sampalgo`*:: -+ --- -type: keyword --- -*`rsa.misc.cn_sampint`*:: +*`zeek.ssh.client`*:: + -- -type: keyword +The client's version string. --- -*`rsa.misc.cn_seqctr`*:: -+ --- type: keyword -- -*`rsa.misc.cn_spackets`*:: +*`zeek.ssh.direction`*:: + -- -type: keyword +Direction of the connection. If the client was a local host logging into +an external host, this would be OUTBOUND. INBOUND would be set for the +opposite situation. --- -*`rsa.misc.cn_src_tos`*:: -+ --- type: keyword -- -*`rsa.misc.cn_src_vlan`*:: +*`zeek.ssh.host_key`*:: + -- -type: keyword +The server's key thumbprint. --- -*`rsa.misc.cn_sysuptime`*:: -+ --- type: keyword -- -*`rsa.misc.cn_template_id`*:: +*`zeek.ssh.server`*:: + -- -type: keyword +The server's version string. --- -*`rsa.misc.cn_totbytsexp`*:: -+ --- type: keyword -- -*`rsa.misc.cn_totflowexp`*:: +*`zeek.ssh.version`*:: + -- -type: keyword +SSH major version (1 or 2). --- -*`rsa.misc.cn_totpcktsexp`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cn_unixnanosecs`*:: -+ --- -type: keyword +[float] +=== algorithm --- +Cipher algorithms used in this session. -*`rsa.misc.cn_v6flowlabel`*:: -+ --- -type: keyword --- -*`rsa.misc.cn_v6optheaders`*:: +*`zeek.ssh.algorithm.cipher`*:: + -- -type: keyword +The encryption algorithm in use. --- -*`rsa.misc.comp_class`*:: -+ --- type: keyword -- -*`rsa.misc.comp_name`*:: +*`zeek.ssh.algorithm.compression`*:: + -- -type: keyword +The compression algorithm in use. --- -*`rsa.misc.comp_rbytes`*:: -+ --- type: keyword -- -*`rsa.misc.comp_sbytes`*:: +*`zeek.ssh.algorithm.host_key`*:: + -- -type: keyword +The server host key's algorithm. --- -*`rsa.misc.cpu_data`*:: -+ --- type: keyword -- -*`rsa.misc.criticality`*:: +*`zeek.ssh.algorithm.key_exchange`*:: + -- -type: keyword +The key exchange algorithm in use. --- -*`rsa.misc.cs_agency_dst`*:: -+ --- type: keyword -- -*`rsa.misc.cs_analyzedby`*:: +*`zeek.ssh.algorithm.mac`*:: + -- -type: keyword +The signing (MAC) algorithm in use. --- -*`rsa.misc.cs_av_other`*:: -+ --- type: keyword -- -*`rsa.misc.cs_av_primary`*:: + +*`zeek.ssh.auth.attempts`*:: + -- -type: keyword +The number of authentication attemps we observed. There's always at +least one, since some servers might support no authentication at all. +It's important to note that not all of these are failures, since some +servers require two-factor auth (e.g. password AND pubkey). --- -*`rsa.misc.cs_av_secondary`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.cs_bgpv6nxthop`*:: +*`zeek.ssh.auth.success`*:: + -- -type: keyword +Authentication result. --- -*`rsa.misc.cs_bit9status`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cs_context`*:: -+ --- -type: keyword +[float] +=== ssl --- +Fields exported by the Zeek SSL log. -*`rsa.misc.cs_control`*:: -+ --- -type: keyword --- -*`rsa.misc.cs_data`*:: +*`zeek.ssl.version`*:: + -- -type: keyword +SSL/TLS version that was logged. --- -*`rsa.misc.cs_datecret`*:: -+ --- type: keyword -- -*`rsa.misc.cs_dst_tld`*:: +*`zeek.ssl.cipher`*:: + -- -type: keyword +SSL/TLS cipher suite that was logged. --- -*`rsa.misc.cs_eth_dst_ven`*:: -+ --- type: keyword -- -*`rsa.misc.cs_eth_src_ven`*:: +*`zeek.ssl.curve`*:: + -- -type: keyword +Elliptic curve that was logged when using ECDH/ECDHE. --- -*`rsa.misc.cs_event_uuid`*:: -+ --- type: keyword -- -*`rsa.misc.cs_filetype`*:: +*`zeek.ssl.resumed`*:: + -- -type: keyword +Flag to indicate if the session was resumed reusing the key material exchanged in an +earlier connection. --- -*`rsa.misc.cs_fld`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cs_if_desc`*:: +*`zeek.ssl.next_protocol`*:: + -- -type: keyword +Next protocol the server chose using the application layer next protocol extension. --- -*`rsa.misc.cs_if_name`*:: -+ --- type: keyword -- -*`rsa.misc.cs_ip_next_hop`*:: +*`zeek.ssl.established`*:: + -- -type: keyword +Flag to indicate if this ssl session has been established successfully. --- -*`rsa.misc.cs_ipv4dstpre`*:: -+ --- -type: keyword +type: boolean -- -*`rsa.misc.cs_ipv4srcpre`*:: + +*`zeek.ssl.validation.status`*:: + -- -type: keyword +Result of certificate validation for this connection. --- -*`rsa.misc.cs_lifetime`*:: -+ --- type: keyword -- -*`rsa.misc.cs_log_medium`*:: +*`zeek.ssl.validation.code`*:: + -- -type: keyword +Result of certificate validation for this connection, given as OpenSSL validation code. --- -*`rsa.misc.cs_loginname`*:: -+ --- type: keyword -- -*`rsa.misc.cs_modulescore`*:: +*`zeek.ssl.last_alert`*:: + -- -type: keyword +Last alert that was seen during the connection. --- -*`rsa.misc.cs_modulesign`*:: -+ --- type: keyword -- -*`rsa.misc.cs_opswatresult`*:: + +*`zeek.ssl.server.name`*:: + -- -type: keyword +Value of the Server Name Indicator SSL/TLS extension. It indicates the server name +that the client was requesting. --- -*`rsa.misc.cs_payload`*:: -+ --- type: keyword -- -*`rsa.misc.cs_registrant`*:: +*`zeek.ssl.server.cert_chain`*:: + -- -type: keyword +Chain of certificates offered by the server to validate its complete signing chain. --- -*`rsa.misc.cs_registrar`*:: -+ --- type: keyword -- -*`rsa.misc.cs_represult`*:: +*`zeek.ssl.server.cert_chain_fuids`*:: + -- -type: keyword +An ordered vector of certificate file identifiers for the certificates offered by the server. --- -*`rsa.misc.cs_rpayload`*:: -+ --- type: keyword -- -*`rsa.misc.cs_sampler_name`*:: -+ --- -type: keyword +[float] +=== issuer --- +Subject of the signer of the X.509 certificate offered by the server. -*`rsa.misc.cs_sourcemodule`*:: -+ --- -type: keyword --- -*`rsa.misc.cs_streams`*:: +*`zeek.ssl.server.issuer.common_name`*:: + -- -type: keyword +Common name of the signer of the X.509 certificate offered by the server. --- -*`rsa.misc.cs_targetmodule`*:: -+ --- type: keyword -- -*`rsa.misc.cs_v6nxthop`*:: +*`zeek.ssl.server.issuer.country`*:: + -- -type: keyword +Country code of the signer of the X.509 certificate offered by the server. --- -*`rsa.misc.cs_whois_server`*:: -+ --- type: keyword -- -*`rsa.misc.cs_yararesult`*:: +*`zeek.ssl.server.issuer.locality`*:: + -- -type: keyword +Locality of the signer of the X.509 certificate offered by the server. --- -*`rsa.misc.description`*:: -+ --- type: keyword -- -*`rsa.misc.devvendor`*:: +*`zeek.ssl.server.issuer.organization`*:: + -- -type: keyword +Organization of the signer of the X.509 certificate offered by the server. --- -*`rsa.misc.distance`*:: -+ --- type: keyword -- -*`rsa.misc.dstburb`*:: +*`zeek.ssl.server.issuer.organizational_unit`*:: + -- -type: keyword +Organizational unit of the signer of the X.509 certificate offered by the server. --- -*`rsa.misc.edomain`*:: -+ --- type: keyword -- -*`rsa.misc.edomaub`*:: +*`zeek.ssl.server.issuer.state`*:: + -- -type: keyword +State or province name of the signer of the X.509 certificate offered by the server. --- -*`rsa.misc.euid`*:: -+ --- type: keyword -- -*`rsa.misc.facility`*:: -+ --- -type: keyword +[float] +=== subject --- +Subject of the X.509 certificate offered by the server. -*`rsa.misc.finterface`*:: -+ --- -type: keyword --- -*`rsa.misc.flags`*:: +*`zeek.ssl.server.subject.common_name`*:: + -- -type: keyword +Common name of the X.509 certificate offered by the server. --- -*`rsa.misc.gaddr`*:: -+ --- type: keyword -- -*`rsa.misc.id3`*:: +*`zeek.ssl.server.subject.country`*:: + -- -type: keyword +Country code of the X.509 certificate offered by the server. --- -*`rsa.misc.im_buddyname`*:: -+ --- type: keyword -- -*`rsa.misc.im_croomid`*:: +*`zeek.ssl.server.subject.locality`*:: + -- -type: keyword +Locality of the X.509 certificate offered by the server. --- -*`rsa.misc.im_croomtype`*:: -+ --- type: keyword -- -*`rsa.misc.im_members`*:: +*`zeek.ssl.server.subject.organization`*:: + -- -type: keyword +Organization of the X.509 certificate offered by the server. --- -*`rsa.misc.im_username`*:: -+ --- type: keyword -- -*`rsa.misc.ipkt`*:: +*`zeek.ssl.server.subject.organizational_unit`*:: + -- -type: keyword +Organizational unit of the X.509 certificate offered by the server. --- -*`rsa.misc.ipscat`*:: -+ --- type: keyword -- -*`rsa.misc.ipspri`*:: +*`zeek.ssl.server.subject.state`*:: + -- -type: keyword +State or province name of the X.509 certificate offered by the server. --- -*`rsa.misc.latitude`*:: -+ --- type: keyword -- -*`rsa.misc.linenum`*:: + +*`zeek.ssl.client.cert_chain`*:: + -- -type: keyword +Chain of certificates offered by the client to validate its complete signing chain. --- -*`rsa.misc.list_name`*:: -+ --- type: keyword -- -*`rsa.misc.load_data`*:: +*`zeek.ssl.client.cert_chain_fuids`*:: + -- -type: keyword +An ordered vector of certificate file identifiers for the certificates offered by the client. --- -*`rsa.misc.location_floor`*:: -+ --- type: keyword -- -*`rsa.misc.location_mark`*:: -+ --- -type: keyword +[float] +=== issuer --- +Subject of the signer of the X.509 certificate offered by the client. -*`rsa.misc.log_id`*:: -+ --- -type: keyword --- -*`rsa.misc.log_type`*:: +*`zeek.ssl.client.issuer.common_name`*:: + -- -type: keyword +Common name of the signer of the X.509 certificate offered by the client. --- -*`rsa.misc.logid`*:: -+ --- type: keyword -- -*`rsa.misc.logip`*:: +*`zeek.ssl.client.issuer.country`*:: + -- -type: keyword +Country code of the signer of the X.509 certificate offered by the client. --- -*`rsa.misc.logname`*:: -+ --- type: keyword -- -*`rsa.misc.longitude`*:: +*`zeek.ssl.client.issuer.locality`*:: + -- +Locality of the signer of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.lport`*:: +*`zeek.ssl.client.issuer.organization`*:: + -- +Organization of the signer of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.mbug_data`*:: +*`zeek.ssl.client.issuer.organizational_unit`*:: + -- +Organizational unit of the signer of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.misc_name`*:: +*`zeek.ssl.client.issuer.state`*:: + -- +State or province name of the signer of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.msg_type`*:: +[float] +=== subject + +Subject of the X.509 certificate offered by the client. + + + +*`zeek.ssl.client.subject.common_name`*:: + -- +Common name of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.msgid`*:: +*`zeek.ssl.client.subject.country`*:: + -- +Country code of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.netsessid`*:: +*`zeek.ssl.client.subject.locality`*:: + -- +Locality of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.num`*:: +*`zeek.ssl.client.subject.organization`*:: + -- +Organization of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.number1`*:: +*`zeek.ssl.client.subject.organizational_unit`*:: + -- +Organizational unit of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.number2`*:: +*`zeek.ssl.client.subject.state`*:: + -- +State or province name of the X.509 certificate offered by the client. + + type: keyword -- -*`rsa.misc.nwwn`*:: +[float] +=== stats + +Fields exported by the Zeek stats log. + + + +*`zeek.stats.peer`*:: + -- +Peer that generated this log. Mostly for clusters. + + type: keyword -- -*`rsa.misc.object`*:: +*`zeek.stats.memory`*:: + -- -type: keyword +Amount of memory currently in use in MB. + + +type: integer -- -*`rsa.misc.operation`*:: + +*`zeek.stats.packets.processed`*:: + -- -type: keyword +Number of packets processed since the last stats interval. + + +type: long -- -*`rsa.misc.opkt`*:: +*`zeek.stats.packets.dropped`*:: + -- -type: keyword +Number of packets dropped since the last stats interval if reading live traffic. + + +type: long -- -*`rsa.misc.orig_from`*:: +*`zeek.stats.packets.received`*:: + -- -type: keyword +Number of packets seen on the link since the last stats interval if reading live traffic. + + +type: long -- -*`rsa.misc.owner_id`*:: + +*`zeek.stats.bytes.received`*:: + -- -type: keyword +Number of bytes received since the last stats interval if reading live traffic. + + +type: long -- -*`rsa.misc.p_action`*:: + + +*`zeek.stats.connections.tcp.active`*:: + -- -type: keyword +TCP connections currently in memory. + + +type: integer -- -*`rsa.misc.p_filter`*:: +*`zeek.stats.connections.tcp.count`*:: + -- -type: keyword +TCP connections seen since last stats interval. + + +type: integer -- -*`rsa.misc.p_group_object`*:: + +*`zeek.stats.connections.udp.active`*:: + -- -type: keyword +UDP connections currently in memory. + + +type: integer -- -*`rsa.misc.p_id`*:: +*`zeek.stats.connections.udp.count`*:: + -- -type: keyword +UDP connections seen since last stats interval. + + +type: integer -- -*`rsa.misc.p_msgid1`*:: + +*`zeek.stats.connections.icmp.active`*:: + -- -type: keyword +ICMP connections currently in memory. + + +type: integer -- -*`rsa.misc.p_msgid2`*:: +*`zeek.stats.connections.icmp.count`*:: + -- -type: keyword +ICMP connections seen since last stats interval. + + +type: integer -- -*`rsa.misc.p_result1`*:: + +*`zeek.stats.events.processed`*:: + -- -type: keyword +Number of events processed since the last stats interval. --- -*`rsa.misc.password_chg`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.password_expire`*:: +*`zeek.stats.events.queued`*:: + -- -type: keyword +Number of events that have been queued since the last stats interval. --- -*`rsa.misc.permgranted`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.permwanted`*:: + +*`zeek.stats.timers.count`*:: + -- -type: keyword +Number of timers scheduled since last stats interval. --- -*`rsa.misc.pgid`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.policyUUID`*:: +*`zeek.stats.timers.active`*:: + -- -type: keyword +Current number of scheduled timers. --- -*`rsa.misc.prog_asp_num`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.program`*:: + +*`zeek.stats.files.count`*:: + -- -type: keyword +Number of files seen since last stats interval. --- -*`rsa.misc.real_data`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.rec_asp_device`*:: +*`zeek.stats.files.active`*:: + -- -type: keyword +Current number of files actively being seen. --- -*`rsa.misc.rec_asp_num`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.rec_library`*:: + +*`zeek.stats.dns_requests.count`*:: + -- -type: keyword +Number of DNS requests seen since last stats interval. --- -*`rsa.misc.recordnum`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.ruid`*:: +*`zeek.stats.dns_requests.active`*:: + -- -type: keyword +Current number of DNS requests awaiting a reply. --- -*`rsa.misc.sburb`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.sdomain_fld`*:: + +*`zeek.stats.reassembly_size.tcp`*:: + -- -type: keyword +Current size of TCP data in reassembly. --- -*`rsa.misc.sec`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.sensorname`*:: +*`zeek.stats.reassembly_size.file`*:: + -- -type: keyword +Current size of File data in reassembly. --- -*`rsa.misc.seqnum`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.session`*:: +*`zeek.stats.reassembly_size.frag`*:: + -- -type: keyword +Current size of packet fragment data in reassembly. --- -*`rsa.misc.sessiontype`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.sigUUID`*:: +*`zeek.stats.reassembly_size.unknown`*:: + -- -type: keyword +Current size of unknown data in reassembly (this is only PIA buffer right now). --- -*`rsa.misc.spi`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.srcburb`*:: +*`zeek.stats.timestamp_lag`*:: + -- -type: keyword +Lag between the wall clock and packet timestamps if reading live traffic. --- -*`rsa.misc.srcdom`*:: -+ --- -type: keyword +type: integer -- -*`rsa.misc.srcservice`*:: -+ --- -type: keyword +[float] +=== syslog --- +Fields exported by the Zeek syslog log. -*`rsa.misc.state`*:: -+ --- -type: keyword --- -*`rsa.misc.status1`*:: +*`zeek.syslog.facility`*:: + -- -type: keyword +Syslog facility for the message. --- -*`rsa.misc.svcno`*:: -+ --- type: keyword -- -*`rsa.misc.system`*:: +*`zeek.syslog.severity`*:: + -- -type: keyword +Syslog severity for the message. --- -*`rsa.misc.tbdstr1`*:: -+ --- type: keyword -- -*`rsa.misc.tgtdom`*:: +*`zeek.syslog.message`*:: + -- -type: keyword +The plain text message. --- -*`rsa.misc.tgtdomain`*:: -+ --- type: keyword -- -*`rsa.misc.threshold`*:: -+ --- -type: keyword +[float] +=== tunnel --- +Fields exported by the Zeek SSH log. -*`rsa.misc.type1`*:: -+ --- -type: keyword --- -*`rsa.misc.udb_class`*:: +*`zeek.tunnel.type`*:: + -- -type: keyword +The type of tunnel. --- -*`rsa.misc.url_fld`*:: -+ --- type: keyword -- -*`rsa.misc.user_div`*:: +*`zeek.tunnel.action`*:: + -- -type: keyword +The type of activity that occurred. --- -*`rsa.misc.userid`*:: -+ --- type: keyword -- -*`rsa.misc.username_fld`*:: -+ --- -type: keyword +[float] +=== weird --- +Fields exported by the Zeek Weird log. -*`rsa.misc.utcstamp`*:: -+ --- -type: keyword --- -*`rsa.misc.v_instafname`*:: +*`zeek.weird.name`*:: + -- -type: keyword +The name of the weird that occurred. --- -*`rsa.misc.virt_data`*:: -+ --- type: keyword -- -*`rsa.misc.vpnid`*:: +*`zeek.weird.additional_info`*:: + -- +Additional information accompanying the weird if any. + + type: keyword -- -*`rsa.misc.autorun_type`*:: +*`zeek.weird.notice`*:: + -- -This is used to capture Auto Run type +Indicate if this weird was also turned into a notice. -type: keyword + +type: boolean -- -*`rsa.misc.cc_number`*:: +*`zeek.weird.peer`*:: + -- -Valid Credit Card Numbers only +The peer that originated this weird. This is helpful in cluster deployments if a particular cluster node is having trouble to help identify which node is having trouble. -type: long + +type: keyword -- -*`rsa.misc.content`*:: +*`zeek.weird.identifier`*:: + -- -This key captures the content type from protocol headers +This field is to be provided when a weird is generated for the purpose of deduplicating weirds. The identifier string should be unique for a single instance of the weird. This field is used to define when a weird is conceptually a duplicate of a previous weird. + type: keyword -- -*`rsa.misc.ein_number`*:: -+ --- -Employee Identification Numbers only +[float] +=== x509 + +Fields exported by the Zeek x509 log. -type: long --- -*`rsa.misc.found`*:: +*`zeek.x509.id`*:: + -- -This is used to capture the results of regex match +File id of this certificate. + type: keyword -- -*`rsa.misc.language`*:: -+ --- -This is used to capture list of languages the client support and what it prefers +[float] +=== certificate -type: keyword +Basic information about the certificate. --- -*`rsa.misc.lifetime`*:: + +*`zeek.x509.certificate.version`*:: + -- -This key is used to capture the session lifetime in seconds. +Version number. -type: long + +type: integer -- -*`rsa.misc.link`*:: +*`zeek.x509.certificate.serial`*:: + -- -This key is used to link the sessions together. This key should never be used to parse Meta data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness +Serial number. + type: keyword -- -*`rsa.misc.match`*:: +[float] +=== subject + +Subject. + + + +*`zeek.x509.certificate.subject.country`*:: + -- -This key is for regex match name from search.ini +Country provided in the certificate subject. + type: keyword -- -*`rsa.misc.param_dst`*:: +*`zeek.x509.certificate.subject.common_name`*:: + -- -This key captures the command line/launch argument of the target process or file +Common name provided in the certificate subject. + type: keyword -- -*`rsa.misc.param_src`*:: +*`zeek.x509.certificate.subject.locality`*:: + -- -This key captures source parameter +Locality provided in the certificate subject. + type: keyword -- -*`rsa.misc.search_text`*:: +*`zeek.x509.certificate.subject.organization`*:: + -- -This key captures the Search Text used +Organization provided in the certificate subject. + type: keyword -- -*`rsa.misc.sig_name`*:: +*`zeek.x509.certificate.subject.organizational_unit`*:: + -- -This key is used to capture the Signature Name only. +Organizational unit provided in the certificate subject. + type: keyword -- -*`rsa.misc.snmp_value`*:: +*`zeek.x509.certificate.subject.state`*:: + -- -SNMP set request value +State or province provided in the certificate subject. + type: keyword -- -*`rsa.misc.streams`*:: -+ --- -This key captures number of streams in session +[float] +=== issuer -type: long +Issuer. --- -*`rsa.db.index`*:: +*`zeek.x509.certificate.issuer.country`*:: + -- -This key captures IndexID of the index. +Country provided in the certificate issuer field. + type: keyword -- -*`rsa.db.instance`*:: +*`zeek.x509.certificate.issuer.common_name`*:: + -- -This key is used to capture the database server instance name +Common name provided in the certificate issuer field. + type: keyword -- -*`rsa.db.database`*:: +*`zeek.x509.certificate.issuer.locality`*:: + -- -This key is used to capture the name of a database or an instance as seen in a session +Locality provided in the certificate issuer field. + type: keyword -- -*`rsa.db.transact_id`*:: +*`zeek.x509.certificate.issuer.organization`*:: + -- -This key captures the SQL transantion ID of the current session +Organization provided in the certificate issuer field. + type: keyword -- -*`rsa.db.permissions`*:: +*`zeek.x509.certificate.issuer.organizational_unit`*:: + -- -This key captures permission or privilege level assigned to a resource. +Organizational unit provided in the certificate issuer field. + type: keyword -- -*`rsa.db.table_name`*:: +*`zeek.x509.certificate.issuer.state`*:: + -- -This key is used to capture the table name +State or province provided in the certificate issuer field. + type: keyword -- -*`rsa.db.db_id`*:: +*`zeek.x509.certificate.common_name`*:: + -- -This key is used to capture the unique identifier for a database +Last (most specific) common name. + type: keyword -- -*`rsa.db.db_pid`*:: -+ --- -This key captures the process id of a connection with database server +[float] +=== valid + +Certificate validity timestamps -type: long --- -*`rsa.db.lread`*:: +*`zeek.x509.certificate.valid.from`*:: + -- -This key is used for the number of logical reads +Timestamp before when certificate is not valid. -type: long + +type: date -- -*`rsa.db.lwrite`*:: +*`zeek.x509.certificate.valid.until`*:: + -- -This key is used for the number of logical writes +Timestamp after when certificate is not valid. -type: long + +type: date -- -*`rsa.db.pread`*:: + +*`zeek.x509.certificate.key.algorithm`*:: + -- -This key is used for the number of physical writes +Name of the key algorithm. -type: long --- +type: keyword +-- -*`rsa.network.alias_host`*:: +*`zeek.x509.certificate.key.type`*:: + -- -This key should be used when the source or destination context of a hostname is not clear.Also it captures the Device Hostname. Any Hostname that isnt ad.computer. +Key type, if key parseable by openssl (either rsa, dsa or ec). + type: keyword -- -*`rsa.network.domain`*:: +*`zeek.x509.certificate.key.length`*:: + -- -type: keyword +Key length in bits. + + +type: integer -- -*`rsa.network.host_dst`*:: +*`zeek.x509.certificate.signature_algorithm`*:: + -- -This key should only be used when it’s a Destination Hostname +Name of the signature algorithm. + type: keyword -- -*`rsa.network.network_service`*:: +*`zeek.x509.certificate.exponent`*:: + -- -This is used to capture layer 7 protocols/service names +Exponent, if RSA-certificate. + type: keyword -- -*`rsa.network.interface`*:: +*`zeek.x509.certificate.curve`*:: + -- -This key should be used when the source or destination context of an interface is not clear +Curve, if EC-certificate. + type: keyword -- -*`rsa.network.network_port`*:: -+ --- -Deprecated, use port. NOTE: There is a type discrepancy as currently used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!) +[float] +=== san -type: long +Subject alternative name extension of the certificate. --- -*`rsa.network.eth_host`*:: + +*`zeek.x509.san.dns`*:: + -- -Deprecated, use alias.mac +List of DNS entries in SAN. + type: keyword -- -*`rsa.network.sinterface`*:: +*`zeek.x509.san.uri`*:: + -- -This key should only be used when it’s a Source Interface +List of URI entries in SAN. + type: keyword -- -*`rsa.network.dinterface`*:: +*`zeek.x509.san.email`*:: + -- -This key should only be used when it’s a Destination Interface +List of email entries in SAN. + type: keyword -- -*`rsa.network.vlan`*:: +*`zeek.x509.san.ip`*:: + -- -This key should only be used to capture the ID of the Virtual LAN +List of IP entries in SAN. -type: long + +type: ip -- -*`rsa.network.zone_src`*:: +*`zeek.x509.san.other_fields`*:: + -- -This key should only be used when it’s a Source Zone. +True if the certificate contained other, not recognized or parsed name fields. -type: keyword --- +type: boolean -*`rsa.network.zone`*:: -+ -- -This key should be used when the source or destination context of a Zone is not clear - -type: keyword --- +[float] +=== basic_constraints -*`rsa.network.zone_dst`*:: -+ --- -This key should only be used when it’s a Destination Zone. +Basic constraints extension of the certificate. -type: keyword --- -*`rsa.network.gateway`*:: +*`zeek.x509.basic_constraints.certificate_authority`*:: + -- -This key is used to capture the IP Address of the gateway +CA flag set or not. -type: keyword + +type: boolean -- -*`rsa.network.icmp_type`*:: +*`zeek.x509.basic_constraints.path_length`*:: + -- -This key is used to capture the ICMP type only +Maximum path length. -type: long + +type: integer -- -*`rsa.network.mask`*:: +*`zeek.x509.log_cert`*:: + -- -This key is used to capture the device network IPmask. +Present if policy/protocols/ssl/log-hostcerts-only.bro is loaded +Logging of certificate is suppressed if set to F. -type: keyword --- +type: boolean -*`rsa.network.icmp_code`*:: -+ -- -This key is used to capture the ICMP code only -type: long +[[exported-fields-zookeeper]] +== ZooKeeper fields --- +ZooKeeper Module -*`rsa.network.protocol_detail`*:: -+ --- -This key should be used to capture additional protocol information -type: keyword --- +[float] +=== zookeeper -*`rsa.network.dmask`*:: -+ --- -This key is used for Destionation Device network mask -type: keyword --- -*`rsa.network.port`*:: -+ --- -This key should only be used to capture a Network Port when the directionality is not clear +[float] +=== audit -type: long +ZooKeeper Audit logs. --- -*`rsa.network.smask`*:: + +*`zookeeper.audit.session`*:: + -- -This key is used for capturing source Network Mask +Client session id + type: keyword -- -*`rsa.network.netname`*:: +*`zookeeper.audit.znode`*:: + -- -This key is used to capture the network name associated with an IP range. This is configured by the end user. +Path of the znode + type: keyword -- -*`rsa.network.paddr`*:: +*`zookeeper.audit.znode_type`*:: + -- -Deprecated - -type: ip +Type of znode in case of creation operation --- -*`rsa.network.faddr`*:: -+ --- type: keyword -- -*`rsa.network.lhost`*:: +*`zookeeper.audit.acl`*:: + -- -type: keyword +String representation of znode ACL like cdrwa(create, delete,read, write, admin). This is logged only for setAcl operation --- -*`rsa.network.origin`*:: -+ --- type: keyword -- -*`rsa.network.remote_domain_id`*:: +*`zookeeper.audit.result`*:: + -- -type: keyword +Result of the operation. Possible values are (success/failure/invoked). Result "invoked" is used for serverStop operation because stop is logged before ensuring that server actually stopped. --- -*`rsa.network.addr`*:: -+ --- type: keyword -- -*`rsa.network.dns_a_record`*:: +*`zookeeper.audit.user`*:: + -- -type: keyword +Comma separated list of users who are associate with a client session --- -*`rsa.network.dns_ptr_record`*:: -+ --- type: keyword -- -*`rsa.network.fhost`*:: -+ --- -type: keyword +[float] +=== log --- +ZooKeeper logs. -*`rsa.network.fport`*:: -+ --- -type: keyword --- +[[exported-fields-zoom]] +== Zoom fields + +Module for handling incoming Zoom webhook requests + + + +[float] +=== zoom -*`rsa.network.laddr`*:: +Module for parsing Zoom API Webhooks. + + + +*`zoom.master_account_id`*:: + -- +Master Account related to a specific Sub Account + + type: keyword -- -*`rsa.network.linterface`*:: +*`zoom.sub_account_id`*:: + -- +Related Sub Account + + type: keyword -- -*`rsa.network.phost`*:: +*`zoom.operator_id`*:: + -- +UserID that triggered the event + + type: keyword -- -*`rsa.network.ad_computer_dst`*:: +*`zoom.operator`*:: + -- -Deprecated, use host.dst +Username/Email related to the user that triggered the event + type: keyword -- -*`rsa.network.eth_type`*:: +*`zoom.account_id`*:: + -- -This key is used to capture Ethernet Type, Used for Layer 3 Protocols Only +Related accountID to the event -type: long + +type: keyword -- -*`rsa.network.ip_proto`*:: +*`zoom.timestamp`*:: + -- -This key should be used to capture the Protocol number, all the protocol nubers are converted into string in UI +Timestamp related to the event -type: long + +type: date -- -*`rsa.network.dns_cname_record`*:: +*`zoom.creation_type`*:: + -- +Creation type + + type: keyword -- -*`rsa.network.dns_id`*:: +*`zoom.account.owner_id`*:: + -- +UserID of the user whose sub account was created/disassociated + + type: keyword -- -*`rsa.network.dns_opcode`*:: +*`zoom.account.email`*:: + -- +Email related to the user the action was performed on + + type: keyword -- -*`rsa.network.dns_resp`*:: +*`zoom.account.owner_email`*:: + -- +Email of the user whose sub account was created/disassociated + + type: keyword -- -*`rsa.network.dns_type`*:: +*`zoom.account.account_name`*:: + -- +When an account name is updated, this is the new value set + + type: keyword -- -*`rsa.network.domain1`*:: +*`zoom.account.account_alias`*:: + -- +When an account alias is updated, this is the new value set + + type: keyword -- -*`rsa.network.host_type`*:: +*`zoom.account.account_support_name`*:: + -- +When an account support_name is updated, this is the new value set + + type: keyword -- -*`rsa.network.packet_length`*:: +*`zoom.account.account_support_email`*:: + -- +When an account support_email is updated, this is the new value set + + type: keyword -- -*`rsa.network.host_orig`*:: +*`zoom.chat_channel.name`*:: + -- -This is used to capture the original hostname in case of a Forwarding Agent or a Proxy in between. +The name of the channel that has been added/modified/deleted + type: keyword -- -*`rsa.network.rpayload`*:: +*`zoom.chat_channel.id`*:: + -- -This key is used to capture the total number of payload bytes seen in the retransmitted packets. +The ID of the channel that has been added/modified/deleted + type: keyword -- -*`rsa.network.vlan_name`*:: +*`zoom.chat_channel.type`*:: + -- -This key should only be used to capture the name of the Virtual LAN +Type of channel related to the event. Can be 1(Invite-Only), 2(Private) or 3(Public) + type: keyword -- - -*`rsa.investigations.ec_activity`*:: +*`zoom.chat_message.id`*:: + -- -This key captures the particular event activity(Ex:Logoff) +Unique ID of the related chat message + type: keyword -- -*`rsa.investigations.ec_theme`*:: +*`zoom.chat_message.type`*:: + -- -This key captures the Theme of a particular Event(Ex:Authentication) +Type of message, can be either "to_contact" or "to_channel" + type: keyword -- -*`rsa.investigations.ec_subject`*:: +*`zoom.chat_message.session_id`*:: + -- -This key captures the Subject of a particular Event(Ex:User) +SessionID for the channel related to the message + type: keyword -- -*`rsa.investigations.ec_outcome`*:: +*`zoom.chat_message.contact_email`*:: + -- -This key captures the outcome of a particular Event(Ex:Success) +Email address related to the user sending the message + type: keyword -- -*`rsa.investigations.event_cat`*:: +*`zoom.chat_message.contact_id`*:: + -- -This key captures the Event category number +UserID belonging to the user receiving a message -type: long + +type: keyword -- -*`rsa.investigations.event_cat_name`*:: +*`zoom.chat_message.channel_id`*:: + -- -This key captures the event category name corresponding to the event cat code +ChannelID related to the message + type: keyword -- -*`rsa.investigations.event_vcat`*:: +*`zoom.chat_message.channel_name`*:: + -- -This is a vendor supplied category. This should be used in situations where the vendor has adopted their own event_category taxonomy. +Channel name related to the message + type: keyword -- -*`rsa.investigations.analysis_file`*:: +*`zoom.chat_message.message`*:: + -- -This is used to capture all indicators used in a File Analysis. This key should be used to capture an analysis of a file +A string containing the full message that was sent + type: keyword -- -*`rsa.investigations.analysis_service`*:: +*`zoom.meeting.id`*:: + -- -This is used to capture all indicators used in a Service Analysis. This key should be used to capture an analysis of a service +Unique ID of the related meeting + type: keyword -- -*`rsa.investigations.analysis_session`*:: +*`zoom.meeting.uuid`*:: + -- -This is used to capture all indicators used for a Session Analysis. This key should be used to capture an analysis of a session +The UUID of the related meeting + type: keyword -- -*`rsa.investigations.boc`*:: +*`zoom.meeting.host_id`*:: + -- -This is used to capture behaviour of compromise +The UserID of the configured meeting host + type: keyword -- -*`rsa.investigations.eoc`*:: +*`zoom.meeting.topic`*:: + -- -This is used to capture Enablers of Compromise +Topic of the related meeting + type: keyword -- -*`rsa.investigations.inv_category`*:: +*`zoom.meeting.type`*:: + -- -This used to capture investigation category +Type of meeting created + type: keyword -- -*`rsa.investigations.inv_context`*:: +*`zoom.meeting.start_time`*:: + -- -This used to capture investigation context +Date and time the meeting started -type: keyword + +type: date -- -*`rsa.investigations.ioc`*:: +*`zoom.meeting.timezone`*:: + -- -This is key capture indicator of compromise +Which timezone is used for the meeting timestamps + type: keyword -- - -*`rsa.counters.dclass_c1`*:: +*`zoom.meeting.duration`*:: + -- -This is a generic counter key that should be used with the label dclass.c1.str only +The duration of a meeting in minutes + type: long -- -*`rsa.counters.dclass_c2`*:: +*`zoom.meeting.issues`*:: + -- -This is a generic counter key that should be used with the label dclass.c2.str only +When a user reports an issue with the meeting, for example: "Unstable audio quality" -type: long + +type: keyword -- -*`rsa.counters.event_counter`*:: +*`zoom.meeting.password`*:: + -- -This is used to capture the number of times an event repeated +Password related to the meeting -type: long + +type: keyword -- -*`rsa.counters.dclass_r1`*:: +*`zoom.phone.id`*:: + -- -This is a generic ratio key that should be used with the label dclass.r1.str only +Unique ID for the phone or conversation + type: keyword -- -*`rsa.counters.dclass_c3`*:: +*`zoom.phone.user_id`*:: + -- -This is a generic counter key that should be used with the label dclass.c3.str only +UserID for the phone owner related to a Call Log being completed -type: long + +type: keyword -- -*`rsa.counters.dclass_c1_str`*:: +*`zoom.phone.download_url`*:: + -- -This is a generic counter string key that should be used with the label dclass.c1 only +Download URL for the voicemail + type: keyword -- -*`rsa.counters.dclass_c2_str`*:: +*`zoom.phone.ringing_start_time`*:: + -- -This is a generic counter string key that should be used with the label dclass.c2 only +The timestamp when a ringtone was established to the callee -type: keyword + +type: date -- -*`rsa.counters.dclass_r1_str`*:: +*`zoom.phone.connected_start_time`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r1 only +The date and time when a ringtone was established to the callee -type: keyword + +type: date -- -*`rsa.counters.dclass_r2`*:: +*`zoom.phone.answer_start_time`*:: + -- -This is a generic ratio key that should be used with the label dclass.r2.str only +The date and time when the call was answered -type: keyword + +type: date -- -*`rsa.counters.dclass_c3_str`*:: +*`zoom.phone.call_end_time`*:: + -- -This is a generic counter string key that should be used with the label dclass.c3 only +The date and time when the call ended -type: keyword + +type: date -- -*`rsa.counters.dclass_r3`*:: +*`zoom.phone.call_id`*:: + -- -This is a generic ratio key that should be used with the label dclass.r3.str only +Unique ID of the related call + type: keyword -- -*`rsa.counters.dclass_r2_str`*:: +*`zoom.phone.duration`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r2 only +Duration of a voicemail in minutes -type: keyword + +type: long -- -*`rsa.counters.dclass_r3_str`*:: +*`zoom.phone.caller.id`*:: + -- -This is a generic ratio string key that should be used with the label dclass.r3 only +UserID of the caller related to the voicemail/call + type: keyword -- - -*`rsa.identity.auth_method`*:: +*`zoom.phone.caller.user_id`*:: + -- -This key is used to capture authentication methods used only +UserID of the person which initiated the call + type: keyword -- -*`rsa.identity.user_role`*:: +*`zoom.phone.caller.number_type`*:: + -- -This key is used to capture the Role of a user only +The type of number, can be 1(Internal) or 2(External) + type: keyword -- -*`rsa.identity.dn`*:: +*`zoom.phone.caller.name`*:: + -- -X.500 (LDAP) Distinguished Name +The name of the related callee + type: keyword -- -*`rsa.identity.logon_type`*:: +*`zoom.phone.caller.phone_number`*:: + -- -This key is used to capture the type of logon method used. +Phone Number of the caller related to the call + type: keyword -- -*`rsa.identity.profile`*:: +*`zoom.phone.caller.extension_type`*:: + -- -This key is used to capture the user profile +Extension type of the caller number, can be user, callQueue, autoReceptionist or shareLineGroup + type: keyword -- -*`rsa.identity.accesses`*:: +*`zoom.phone.caller.extension_number`*:: + -- -This key is used to capture actual privileges used in accessing an object +Extension number of the caller + type: keyword -- -*`rsa.identity.realm`*:: +*`zoom.phone.caller.timezone`*:: + -- -Radius realm or similar grouping of accounts +Timezone of the caller + type: keyword -- -*`rsa.identity.user_sid_dst`*:: +*`zoom.phone.caller.device_type`*:: + -- -This key captures Destination User Session ID +Device type used by the caller + type: keyword -- -*`rsa.identity.dn_src`*:: +*`zoom.phone.callee.id`*:: + -- -An X.500 (LDAP) Distinguished name that is used in a context that indicates a Source dn +UserID of the callee related to the voicemail/call + type: keyword -- -*`rsa.identity.org`*:: +*`zoom.phone.callee.user_id`*:: + -- -This key captures the User organization +UserID of the related callee of a voicemail/call + type: keyword -- -*`rsa.identity.dn_dst`*:: +*`zoom.phone.callee.name`*:: + -- -An X.500 (LDAP) Distinguished name that used in a context that indicates a Destination dn +The name of the related callee + type: keyword -- -*`rsa.identity.firstname`*:: +*`zoom.phone.callee.number_type`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +The type of number, can be 1(Internal) or 2(External) + type: keyword -- -*`rsa.identity.lastname`*:: +*`zoom.phone.callee.phone_number`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +Phone Number of the callee related to the call + type: keyword -- -*`rsa.identity.user_dept`*:: +*`zoom.phone.callee.extension_type`*:: + -- -User's Department Names only +Extension type of the callee number, can be user, callQueue, autoReceptionist or shareLineGroup + type: keyword -- -*`rsa.identity.user_sid_src`*:: +*`zoom.phone.callee.extension_number`*:: + -- -This key captures Source User Session ID +Extension number of the callee related to the call + type: keyword -- -*`rsa.identity.federated_sp`*:: +*`zoom.phone.callee.timezone`*:: + -- -This key is the Federated Service Provider. This is the application requesting authentication. +Timezone of the callee related to the call + type: keyword -- -*`rsa.identity.federated_idp`*:: +*`zoom.phone.callee.device_type`*:: + -- -This key is the federated Identity Provider. This is the server providing the authentication. +Device type used by the callee related to the call + type: keyword -- -*`rsa.identity.logon_type_desc`*:: +*`zoom.phone.date_time`*:: + -- -This key is used to capture the textual description of an integer logon type as stored in the meta key 'logon.type'. +Date and time of the related phone event -type: keyword + +type: date -- -*`rsa.identity.middlename`*:: +*`zoom.recording.id`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +Unique ID of the related recording + type: keyword -- -*`rsa.identity.password`*:: +*`zoom.recording.uuid`*:: + -- -This key is for Passwords seen in any session, plain text or encrypted +UUID of the related recording + type: keyword -- -*`rsa.identity.host_role`*:: +*`zoom.recording.host_id`*:: + -- -This key should only be used to capture the role of a Host Machine +UserID of the host of the meeting that was recorded + type: keyword -- -*`rsa.identity.ldap`*:: +*`zoom.recording.topic`*:: + -- -This key is for Uninterpreted LDAP values. Ldap Values that don’t have a clear query or response context +Topic of the meeting related to the recording + type: keyword -- -*`rsa.identity.ldap_query`*:: +*`zoom.recording.type`*:: + -- -This key is the Search criteria from an LDAP search +Type of recording, can be multiple type of values, please check Zoom documentation + type: keyword -- -*`rsa.identity.ldap_response`*:: +*`zoom.recording.start_time`*:: + -- -This key is to capture Results from an LDAP search +The date and time when the recording started -type: keyword + +type: date -- -*`rsa.identity.owner`*:: +*`zoom.recording.timezone`*:: + -- -This is used to capture username the process or service is running as, the author of the task +The timezone used for the recording date + type: keyword -- -*`rsa.identity.service_account`*:: +*`zoom.recording.duration`*:: + -- -This key is a windows specific key, used for capturing name of the account a service (referenced in the event) is running under. Legacy Usage +Duration of the recording in minutes -type: keyword --- +type: long +-- -*`rsa.email.email_dst`*:: +*`zoom.recording.share_url`*:: + -- -This key is used to capture the Destination email address only, when the destination context is not clear use email +The URL to access the recording + type: keyword -- -*`rsa.email.email_src`*:: +*`zoom.recording.total_size`*:: + -- -This key is used to capture the source email address only, when the source context is not clear use email +Total size of the recording in bytes -type: keyword + +type: long -- -*`rsa.email.subject`*:: +*`zoom.recording.recording_count`*:: + -- -This key is used to capture the subject string from an Email only. +Number of recording files related to the recording -type: keyword + +type: long -- -*`rsa.email.email`*:: +*`zoom.recording.recording_file.recording_start`*:: + -- -This key is used to capture a generic email address where the source or destination context is not clear +The date and time the recording started -type: keyword + +type: date -- -*`rsa.email.trans_from`*:: +*`zoom.recording.recording_file.recording_end`*:: + -- -Deprecated key defined only in table map. +The date and time the recording finished -type: keyword + +type: date -- -*`rsa.email.trans_to`*:: +*`zoom.recording.host_email`*:: + -- -Deprecated key defined only in table map. +Email address of the host related to the meeting that was recorded + type: keyword -- - -*`rsa.file.privilege`*:: +*`zoom.user.id`*:: + -- -Deprecated, use permissions +UserID related to the user event + type: keyword -- -*`rsa.file.attachment`*:: +*`zoom.user.first_name`*:: + -- -This key captures the attachment file name +User first name related to the user event + type: keyword -- -*`rsa.file.filesystem`*:: +*`zoom.user.last_name`*:: + -- +User last name related to the user event + + type: keyword -- -*`rsa.file.binary`*:: +*`zoom.user.email`*:: + -- -Deprecated key defined only in table map. +User email related to the user event + type: keyword -- -*`rsa.file.filename_dst`*:: +*`zoom.user.type`*:: + -- -This is used to capture name of the file targeted by the action +User type related to the user event + type: keyword -- -*`rsa.file.filename_src`*:: +*`zoom.user.phone_number`*:: + -- -This is used to capture name of the parent filename, the file which performed the action +User phone number related to the user event + type: keyword -- -*`rsa.file.filename_tmp`*:: +*`zoom.user.phone_country`*:: + -- +User country code related to the user event + + type: keyword -- -*`rsa.file.directory_dst`*:: +*`zoom.user.company`*:: + -- -This key is used to capture the directory of the target process or file +User company related to the user event + type: keyword -- -*`rsa.file.directory_src`*:: +*`zoom.user.pmi`*:: + -- -This key is used to capture the directory of the source process or file +User personal meeting ID related to the user event + type: keyword -- -*`rsa.file.file_entropy`*:: +*`zoom.user.use_pmi`*:: + -- -This is used to capture entropy vale of a file +If a user has PMI enabled -type: double + +type: boolean -- -*`rsa.file.file_vendor`*:: +*`zoom.user.pic_url`*:: + -- -This is used to capture Company name of file located in version_info +Full URL to the profile picture used by the user + type: keyword -- -*`rsa.file.task_name`*:: +*`zoom.user.vanity_name`*:: + -- -This is used to capture name of the task +Name of the personal meeting room related to the user event + type: keyword -- - -*`rsa.web.fqdn`*:: +*`zoom.user.timezone`*:: + -- -Fully Qualified Domain Names +Timezone configured for the user + type: keyword -- -*`rsa.web.web_cookie`*:: +*`zoom.user.language`*:: + -- -This key is used to capture the Web cookies specifically. +Language configured for the user + type: keyword -- -*`rsa.web.alias_host`*:: +*`zoom.user.host_key`*:: + -- +Host key set for the user + + type: keyword -- -*`rsa.web.reputation_num`*:: +*`zoom.user.role`*:: + -- -Reputation Number of an entity. Typically used for Web Domains +The configured role for the user -type: double + +type: keyword -- -*`rsa.web.web_ref_domain`*:: +*`zoom.user.dept`*:: + -- -Web referer's domain +The configured departement for the user + type: keyword -- -*`rsa.web.web_ref_query`*:: +*`zoom.user.presence_status`*:: + -- -This key captures Web referer's query portion of the URL +Current presence status of user + type: keyword -- -*`rsa.web.remote_domain`*:: +*`zoom.user.personal_notes`*:: + -- +Personal notes for the User + + type: keyword -- -*`rsa.web.web_ref_page`*:: +*`zoom.user.client_type`*:: + -- -This key captures Web referer's page information +Type of client used by the user. Can be browser, mac, win, iphone or android + type: keyword -- -*`rsa.web.web_ref_root`*:: +*`zoom.user.version`*:: + -- -Web referer's root URL path +Version of the client used by the user + type: keyword -- -*`rsa.web.cn_asn_dst`*:: +*`zoom.webinar.id`*:: + -- -type: keyword +Unique ID for the related webinar --- -*`rsa.web.cn_rpackets`*:: -+ --- type: keyword -- -*`rsa.web.urlpage`*:: +*`zoom.webinar.join_url`*:: + -- -type: keyword +The URL configured to join the webinar --- -*`rsa.web.urlroot`*:: -+ --- type: keyword -- -*`rsa.web.p_url`*:: +*`zoom.webinar.uuid`*:: + -- -type: keyword +UUID for the related webinar --- -*`rsa.web.p_user_agent`*:: -+ --- type: keyword -- -*`rsa.web.p_web_cookie`*:: +*`zoom.webinar.host_id`*:: + -- -type: keyword +UserID for the configured host of the webinar --- -*`rsa.web.p_web_method`*:: -+ --- type: keyword -- -*`rsa.web.p_web_referer`*:: +*`zoom.webinar.topic`*:: + -- -type: keyword +Meeting topic of the related webinar --- -*`rsa.web.web_extension_tmp`*:: -+ --- type: keyword -- -*`rsa.web.web_page`*:: +*`zoom.webinar.type`*:: + -- +Type of webinar created. Can be either 5(Webinar), 6(Recurring webinar without fixed time) or 9(Recurring webinar with fixed time) + + type: keyword -- - -*`rsa.threat.threat_category`*:: +*`zoom.webinar.start_time`*:: + -- -This key captures Threat Name/Threat Category/Categorization of alert +The date and time when the webinar started -type: keyword + +type: date -- -*`rsa.threat.threat_desc`*:: +*`zoom.webinar.timezone`*:: + -- -This key is used to capture the threat description from the session directly or inferred +Timezone used for the dates related to the webinar + type: keyword -- -*`rsa.threat.alert`*:: +*`zoom.webinar.duration`*:: + -- -This key is used to capture name of the alert +Duration of the webinar in minutes -type: keyword + +type: long -- -*`rsa.threat.threat_source`*:: +*`zoom.webinar.agenda`*:: + -- -This key is used to capture source of the threat +The configured agenda of the webinar + type: keyword -- - -*`rsa.crypto.crypto`*:: +*`zoom.webinar.password`*:: + -- -This key is used to capture the Encryption Type or Encryption Key only +Password configured to access the webinar + type: keyword -- -*`rsa.crypto.cipher_src`*:: +*`zoom.webinar.issues`*:: + -- -This key is for Source (Client) Cipher +Any reported issues about a webinar is reported in this field + type: keyword -- -*`rsa.crypto.cert_subject`*:: +*`zoom.zoomroom.id`*:: + -- -This key is used to capture the Certificate organization only +Unique ID of the Zoom room + type: keyword -- -*`rsa.crypto.peer`*:: +*`zoom.zoomroom.room_name`*:: + -- -This key is for Encryption peer's IP Address +The configured name of the Zoom room + type: keyword -- -*`rsa.crypto.cipher_size_src`*:: +*`zoom.zoomroom.calendar_name`*:: + -- -This key captures Source (Client) Cipher Size +Calendar name of the Zoom room -type: long + +type: keyword -- -*`rsa.crypto.ike`*:: +*`zoom.zoomroom.calendar_id`*:: + -- -IKE negotiation phase. +Unique ID of the calendar used by the Zoom room + type: keyword -- -*`rsa.crypto.scheme`*:: +*`zoom.zoomroom.event_id`*:: + -- -This key captures the Encryption scheme used +Unique ID of the calendar event associated with the Zoom Room + type: keyword -- -*`rsa.crypto.peer_id`*:: +*`zoom.zoomroom.change_key`*:: + -- -This key is for Encryption peer’s identity +Key used by Microsoft products integration that represents a specific version of a calendar + type: keyword -- -*`rsa.crypto.sig_type`*:: +*`zoom.zoomroom.resource_email`*:: + -- -This key captures the Signature Type +Email address associated with the calendar in use by the Zoom room + type: keyword -- -*`rsa.crypto.cert_issuer`*:: +*`zoom.zoomroom.email`*:: + -- +Email address associated with the Zoom room itself + + type: keyword -- -*`rsa.crypto.cert_host_name`*:: +*`zoom.zoomroom.issue`*:: + -- -Deprecated key defined only in table map. +Any reported alerts or issues related to the Zoom room or its equipment + type: keyword -- -*`rsa.crypto.cert_error`*:: +*`zoom.zoomroom.alert_type`*:: + -- -This key captures the Certificate Error String +An integer value representing the type of alert. The list of alert types can be found in the Zoom documentation + type: keyword -- -*`rsa.crypto.cipher_dst`*:: +*`zoom.zoomroom.component`*:: + -- -This key is for Destination (Server) Cipher +An integer value representing the type of equipment or component, The list of component types can be found in the Zoom documentation + type: keyword -- -*`rsa.crypto.cipher_size_dst`*:: +*`zoom.zoomroom.alert_kind`*:: + -- -This key captures Destination (Server) Cipher Size +An integer value showing if the Zoom room alert has been either 1(Triggered) or 2(Cleared) -type: long + +type: keyword -- -*`rsa.crypto.ssl_ver_src`*:: +*`zoom.registrant.id`*:: + -- -Deprecated, use version +Unique ID of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.d_certauth`*:: +*`zoom.registrant.status`*:: + -- -type: keyword +Status of the specific user registration --- -*`rsa.crypto.s_certauth`*:: -+ --- type: keyword -- -*`rsa.crypto.ike_cookie1`*:: +*`zoom.registrant.email`*:: + -- -ID of the negotiation — sent for ISAKMP Phase One +Email of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.ike_cookie2`*:: +*`zoom.registrant.first_name`*:: + -- -ID of the negotiation — sent for ISAKMP Phase Two +First name of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.cert_checksum`*:: +*`zoom.registrant.last_name`*:: + -- +Last name of the user registering to a meeting or webinar + + type: keyword -- -*`rsa.crypto.cert_host_cat`*:: +*`zoom.registrant.address`*:: + -- -This key is used for the hostname category value of a certificate +Address of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.cert_serial`*:: +*`zoom.registrant.city`*:: + -- -This key is used to capture the Certificate serial number only +City of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.cert_status`*:: +*`zoom.registrant.country`*:: + -- -This key captures Certificate validation status +Country of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.ssl_ver_dst`*:: +*`zoom.registrant.zip`*:: + -- -Deprecated, use version +Zip code of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.cert_keysize`*:: +*`zoom.registrant.state`*:: + -- +State of the user registering to a meeting or webinar + + type: keyword -- -*`rsa.crypto.cert_username`*:: +*`zoom.registrant.phone`*:: + -- +Phone number of the user registering to a meeting or webinar + + type: keyword -- -*`rsa.crypto.https_insact`*:: +*`zoom.registrant.industry`*:: + -- +Related industry of the user registering to a meeting or webinar + + type: keyword -- -*`rsa.crypto.https_valid`*:: +*`zoom.registrant.org`*:: + -- +Organization related to the user registering to a meeting or webinar + + type: keyword -- -*`rsa.crypto.cert_ca`*:: +*`zoom.registrant.job_title`*:: + -- -This key is used to capture the Certificate signing authority only +Job title of the user registering to a meeting or webinar + type: keyword -- -*`rsa.crypto.cert_common`*:: +*`zoom.registrant.purchasing_time_frame`*:: + -- -This key is used to capture the Certificate common name only +Choosen purchase timeframe of the user registering to a meeting or webinar + type: keyword -- - -*`rsa.wireless.wlan_ssid`*:: +*`zoom.registrant.role_in_purchase_process`*:: + -- -This key is used to capture the ssid of a Wireless Session +Choosen role in a purchase process related to the user registering to a meeting or webinar + type: keyword -- -*`rsa.wireless.access_point`*:: +*`zoom.registrant.no_of_employees`*:: + -- -This key is used to capture the access point name. +Number of employees choosen by the user registering to a meeting or webinar + type: keyword -- -*`rsa.wireless.wlan_channel`*:: +*`zoom.registrant.comments`*:: + -- -This is used to capture the channel names +Comments left by the user registering to a meeting or webinar -type: long + +type: keyword -- -*`rsa.wireless.wlan_name`*:: +*`zoom.registrant.join_url`*:: + -- -This key captures either WLAN number/name +The URL that the registrant can use to join the webinar + type: keyword -- - -*`rsa.storage.disk_volume`*:: +*`zoom.participant.id`*:: + -- -A unique name assigned to logical units (volumes) within a physical disk +Unique ID of the participant related to a meeting + type: keyword -- -*`rsa.storage.lun`*:: +*`zoom.participant.user_id`*:: + -- -Logical Unit Number.This key is a very useful concept in Storage. +UserID of the participant related to a meeting + type: keyword -- -*`rsa.storage.pwwn`*:: +*`zoom.participant.user_name`*:: + -- -This uniquely identifies a port on a HBA. +Username of the participant related to a meeting + type: keyword -- - -*`rsa.physical.org_dst`*:: +*`zoom.participant.join_time`*:: + -- -This is used to capture the destination organization based on the GEOPIP Maxmind database. +The date and time a participant joined a meeting -type: keyword + +type: date -- -*`rsa.physical.org_src`*:: +*`zoom.participant.leave_time`*:: + -- -This is used to capture the source organization based on the GEOPIP Maxmind database. +The date and time a participant left a meeting -type: keyword --- +type: date +-- -*`rsa.healthcare.patient_fname`*:: +*`zoom.participant.sharing_details.link_source`*:: + -- -This key is for First Names only, this is used for Healthcare predominantly to capture Patients information +Method of sharing with dropbox integration + type: keyword -- -*`rsa.healthcare.patient_id`*:: +*`zoom.participant.sharing_details.content`*:: + -- -This key captures the unique ID for a patient +Type of content that was shared + type: keyword -- -*`rsa.healthcare.patient_lname`*:: +*`zoom.participant.sharing_details.file_link`*:: + -- -This key is for Last Names only, this is used for Healthcare predominantly to capture Patients information +The file link that was shared + type: keyword -- -*`rsa.healthcare.patient_mname`*:: +*`zoom.participant.sharing_details.date_time`*:: + -- -This key is for Middle Names only, this is used for Healthcare predominantly to capture Patients information +Timestamp the sharing started + type: keyword -- - -*`rsa.endpoint.host_state`*:: +*`zoom.participant.sharing_details.source`*:: + -- -This key is used to capture the current state of the machine, such as blacklisted, infected, firewall disabled and so on +The file source that was share + type: keyword -- -*`rsa.endpoint.registry_key`*:: +*`zoom.old_values`*:: + -- -This key captures the path to the registry key +Includes the old values when updating a object like user, meeting, account or webinar -type: keyword + +type: flattened -- -*`rsa.endpoint.registry_value`*:: +*`zoom.settings`*:: + -- -This key captures values or decorators used within a registry entry +The current active settings related to a object like user, meeting, account or webinar -type: keyword + +type: flattened -- diff --git a/filebeat/docs/modules/cisco.asciidoc b/filebeat/docs/modules/cisco.asciidoc index ca094907b98..1826aa23064 100644 --- a/filebeat/docs/modules/cisco.asciidoc +++ b/filebeat/docs/modules/cisco.asciidoc @@ -27,8 +27,6 @@ filesets for receiving logs over syslog or read from a file: - `amp` fileset: supports Cisco AMP API logs. - `ftd` fileset: supports Cisco Firepower Threat Defense logs. - `ios` fileset: supports Cisco IOS router and switch logs. -- `nexus` fileset: supports Cisco Nexus switch logs. -- `meraki` fileset: supports Cisco Meraki logs. - `umbrella` fileset: supports Cisco Umbrella logs. Cisco ASA devices also support exporting flow records using NetFlow, which is @@ -278,100 +276,6 @@ include::../include/timezone-support.asciidoc[] :fileset_ex!: -[float] -==== `nexus` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/cisco_nexus[Cisco Nexus] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "cisconxos" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9506` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `meraki` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/cisco_meraki[Cisco Meraki] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "ciscomeraki" device revision 118. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9525` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - [float] ==== `umbrella` fileset settings diff --git a/filebeat/docs/modules/fortinet.asciidoc b/filebeat/docs/modules/fortinet.asciidoc index f6575c7db65..7671ba7a711 100644 --- a/filebeat/docs/modules/fortinet.asciidoc +++ b/filebeat/docs/modules/fortinet.asciidoc @@ -18,9 +18,6 @@ This is a module for Fortinet logs sent in the syslog format. It supports the following devices: - `firewall` fileset: Supports FortiOS Firewall logs. -- `clientendpoint` fileset: Supports FortiClient Endpoint Protection logs. -- `fortimail` fileset: Supports FortiMail logs. -- `fortimanager` fileset: Supports FortiManager logs. To configure a remote syslog destination, please reference the https://docs.fortinet.com/document/fortigate/6.0.0/cli-reference/260508/log-syslogd-syslogd2-syslogd3-syslogd4-setting[Fortigate/FortiOS Documentation]. @@ -78,147 +75,6 @@ events. Defaults to `[fortinet-firewall, forwarded]`. :fileset_ex!: -[float] -==== `clientendpoint` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/fortinet_forticlient[Fortinet FortiClient Logs] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "forticlientendpoint" device revision 0. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9510` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `fortimail` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/fortinet_fortimail[Fortinet FortiMail] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "fortinetfortimail" device revision 131. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9529` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `fortimanager` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/fortinet_fortimanager[Fortinet FortiManager Logs] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "fortinetmgr" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9530` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - [float] ==== Fortinet ECS fields diff --git a/filebeat/docs/modules/juniper.asciidoc b/filebeat/docs/modules/juniper.asciidoc index dd445e809a7..6b611b53333 100644 --- a/filebeat/docs/modules/juniper.asciidoc +++ b/filebeat/docs/modules/juniper.asciidoc @@ -17,8 +17,6 @@ include::{libbeat-dir}/shared/integration-link.asciidoc[] This is a module for ingesting data from the different Juniper Products. Currently supports these filesets: - `srx` fileset: Supports Juniper SRX logs -- `junos` fileset: Supports Juniper JUNOS logs -- `netscreen` fileset: Supports Juniper Netscreen logs include::../include/gs-link.asciidoc[] @@ -136,99 +134,6 @@ This is a list of JunOS fields that are mapped to ECS. | url | url.domain | |============================================================== - -:fileset_ex: junos - -[float] -==== `junos` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/juniper_srx[Juniper SRX] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "junosrouter" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9513` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `netscreen` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. See <> for migration options."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "netscreen" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9523` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - :has-dashboards!: :fileset_ex!: diff --git a/filebeat/docs/modules/microsoft.asciidoc b/filebeat/docs/modules/microsoft.asciidoc index 4e5ff72b30b..602962a3d59 100644 --- a/filebeat/docs/modules/microsoft.asciidoc +++ b/filebeat/docs/modules/microsoft.asciidoc @@ -24,7 +24,6 @@ This is a module for ingesting data from the different Microsoft Products. Curre - `defender_atp` fileset: Supports Microsoft Defender for Endpoint (Microsoft Defender ATP) - `m365_defender` fileset: Supports Microsoft 365 Defender (Microsoft Threat Protection) -- `dhcp` fileset: Supports Microsoft DHCP logs include::../include/what-happens.asciidoc[] @@ -219,52 +218,6 @@ image::./images/siem-events-cs.jpg[] [float] And for all other Defender ATP event types, go to Host -> Events. -:fileset_ex: dhcp - -[float] -==== `dhcp` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/microsoft_dhcp[Microsoft DHCP] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "msdhcp" device revision 99. - -include::../include/var-paths.asciidoc[] - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9515` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. :has-dashboards!: diff --git a/filebeat/docs/modules/sophos.asciidoc b/filebeat/docs/modules/sophos.asciidoc index a5d12dca366..975efb15958 100644 --- a/filebeat/docs/modules/sophos.asciidoc +++ b/filebeat/docs/modules/sophos.asciidoc @@ -18,7 +18,6 @@ This is a module for Sophos Products, currently it accepts logs in syslog format or from a file for the following devices: - `xg` fileset: supports Sophos XG SFOS logs. -- `utm` fileset: supports Sophos UTM logs. To configure a remote syslog destination, please reference the https://docs.sophos.com/nsg/sophos-firewall/18.5/Help/en-us/webhelp/onlinehelp/nsg/tasks/SyslogServerAdd.html[SophosXG/SFOS Documentation]. @@ -149,53 +148,6 @@ This is a list of SophosXG fields that are mapped to ECS. :fileset_ex!: -[float] -==== `utm` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/sophos[Sophos] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "astarosg" device revision 123. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9533` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - :modulename!: diff --git a/filebeat/docs/modules_list.asciidoc b/filebeat/docs/modules_list.asciidoc index 92318e0903d..68f0476e11e 100644 --- a/filebeat/docs/modules_list.asciidoc +++ b/filebeat/docs/modules_list.asciidoc @@ -9,18 +9,14 @@ This file is generated! See scripts/docs_collector.py * <> * <> * <> - * <> - * <> * <> * <> * <> * <> * <> * <> - * <> * <> * <> - * <> * <> * <> * <> @@ -28,8 +24,6 @@ This file is generated! See scripts/docs_collector.py * <> * <> * <> - * <> - * <> * <> * <> * <> @@ -43,7 +37,6 @@ This file is generated! See scripts/docs_collector.py * <> * <> * <> - * <> * <> * <> * <> @@ -52,26 +45,19 @@ This file is generated! See scripts/docs_collector.py * <> * <> * <> - * <> * <> - * <> * <> * <> * <> - * <> * <> - * <> * <> - * <> * <> * <> * <> - * <> * <> * <> * <> * <> - * <> -- @@ -83,18 +69,14 @@ include::modules/auditd.asciidoc[] include::modules/aws.asciidoc[] include::modules/awsfargate.asciidoc[] include::modules/azure.asciidoc[] -include::modules/barracuda.asciidoc[] -include::modules/bluecoat.asciidoc[] include::modules/cef.asciidoc[] include::modules/checkpoint.asciidoc[] include::modules/cisco.asciidoc[] include::modules/coredns.asciidoc[] include::modules/crowdstrike.asciidoc[] include::modules/cyberarkpas.asciidoc[] -include::modules/cylance.asciidoc[] include::modules/elasticsearch.asciidoc[] include::modules/envoyproxy.asciidoc[] -include::modules/f5.asciidoc[] include::modules/fortinet.asciidoc[] include::modules/gcp.asciidoc[] include::modules/google_workspace.asciidoc[] @@ -102,8 +84,6 @@ include::modules/haproxy.asciidoc[] include::modules/ibmmq.asciidoc[] include::modules/icinga.asciidoc[] include::modules/iis.asciidoc[] -include::modules/imperva.asciidoc[] -include::modules/infoblox.asciidoc[] include::modules/iptables.asciidoc[] include::modules/juniper.asciidoc[] include::modules/kafka.asciidoc[] @@ -117,7 +97,6 @@ include::modules/mysql.asciidoc[] include::modules/mysqlenterprise.asciidoc[] include::modules/nats.asciidoc[] include::modules/netflow.asciidoc[] -include::modules/netscout.asciidoc[] include::modules/nginx.asciidoc[] include::modules/o365.asciidoc[] include::modules/okta.asciidoc[] @@ -126,23 +105,16 @@ include::modules/osquery.asciidoc[] include::modules/panw.asciidoc[] include::modules/pensando.asciidoc[] include::modules/postgresql.asciidoc[] -include::modules/proofpoint.asciidoc[] include::modules/rabbitmq.asciidoc[] -include::modules/radware.asciidoc[] include::modules/redis.asciidoc[] include::modules/salesforce.asciidoc[] include::modules/santa.asciidoc[] -include::modules/snort.asciidoc[] include::modules/snyk.asciidoc[] -include::modules/sonicwall.asciidoc[] include::modules/sophos.asciidoc[] -include::modules/squid.asciidoc[] include::modules/suricata.asciidoc[] include::modules/system.asciidoc[] include::modules/threatintel.asciidoc[] -include::modules/tomcat.asciidoc[] include::modules/traefik.asciidoc[] include::modules/zeek.asciidoc[] include::modules/zookeeper.asciidoc[] include::modules/zoom.asciidoc[] -include::modules/zscaler.asciidoc[] diff --git a/x-pack/filebeat/filebeat.reference.yml b/x-pack/filebeat/filebeat.reference.yml index ab9bafd0ed5..e5f74a67e59 100644 --- a/x-pack/filebeat/filebeat.reference.yml +++ b/x-pack/filebeat/filebeat.reference.yml @@ -585,67 +585,6 @@ filebeat.modules: # storage_account: "" # storage_account_key: "" -#------------------ Barracuda Web Application Firewall Module ------------------ -- module: barracuda - waf: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9503 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - spamfirewall: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9524 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - -#-------------------------- Blue Coat Director Module -------------------------- -- module: bluecoat - director: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9505 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #--------------------------------- CEF Module --------------------------------- - module: cef log: @@ -785,44 +724,6 @@ filebeat.modules: # Filebeat will choose the paths depending on your OS. #var.paths: - nexus: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9506 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - meraki: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9525 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - umbrella: enabled: false @@ -901,27 +802,6 @@ filebeat.modules: # var.paths: -#---------------------------- CylanceProtect Module ---------------------------- -- module: cylance - protect: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9508 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #---------------------------- Elasticsearch Module ---------------------------- - module: elasticsearch # Server log @@ -966,46 +846,6 @@ filebeat.modules: # Filebeat will choose the paths depending on your OS. #var.paths: -#--------------------- Big-IP Access Policy Manager Module --------------------- -- module: f5 - bigipapm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9504 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - bigipafm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9528 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #------------------------------- Fortinet Module ------------------------------- - module: fortinet firewall: @@ -1037,63 +877,6 @@ filebeat.modules: # This can't be used in combination with internal_interfaces and external_interfaces. #var.internal_networks: [ "private" ] - clientendpoint: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9510 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - fortimail: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9529 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - fortimanager: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9530 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #--------------------- Google Cloud Platform (GCP) Module --------------------- - module: gcp vpcflow: @@ -1308,48 +1091,6 @@ filebeat.modules: # can be added under this section. #input: -#------------------------- Imperva SecureSphere Module ------------------------- -- module: imperva - securesphere: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9511 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - -#---------------------------- Infoblox NIOS Module ---------------------------- -- module: infoblox - nios: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9512 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #------------------------------- Iptables Module ------------------------------- - module: iptables log: @@ -1364,44 +1105,6 @@ filebeat.modules: #---------------------------- Juniper JUNOS Module ---------------------------- - module: juniper - junos: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9513 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - netscreen: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9523 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - srx: enabled: false @@ -1494,28 +1197,10 @@ filebeat.modules: # Oauth Token URL, should include the tenant ID #var.oauth2.token_url: "https://login.microsoftonline.com/TENANT-ID/oauth2/v2.0/token" - + # Related scopes, default should be included #var.oauth2.scopes: # - "https://api.security.microsoft.com/.default" - dhcp: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9515 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local #--------------------------------- MISP Module --------------------------------- # Deprecated in 7.14.0: Recommended to migrate to the Threat Intel module. @@ -1621,27 +1306,6 @@ filebeat.modules: internal_networks: - private -#-------------------------- Arbor Peakflow SP Module -------------------------- -- module: netscout - sightline: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9502 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #-------------------------------- Nginx Module -------------------------------- #- module: nginx # Access logs @@ -1805,27 +1469,6 @@ filebeat.modules: # can be added under this section. #input: -#---------------------- Proofpoint Email Security Module ---------------------- -- module: proofpoint - emailsecurity: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9531 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #------------------------------- RabbitMQ Module ------------------------------- - module: rabbitmq # All logs @@ -1836,27 +1479,6 @@ filebeat.modules: # Filebeat will choose the paths depending on your OS. #var.paths: ["/var/log/rabbitmq/rabbit@localhost.log*"] -#-------------------------- Radware DefensePro Module -------------------------- -- module: radware - defensepro: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9518 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #-------------------------------- Redis Module -------------------------------- #- module: redis # Main logs @@ -2016,27 +1638,6 @@ filebeat.modules: # Filebeat will choose the the default path. #var.paths: -#--------------------------- Snort/Sourcefire Module --------------------------- -- module: snort - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9532 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #--------------------------------- Snyk Module --------------------------------- - module: snyk audit: @@ -2141,27 +1742,6 @@ filebeat.modules: #var.min_priority_score: 0 #var.max_priority_score: 1000 -#----------------------------- Sonicwall-FW Module ----------------------------- -- module: sonicwall - firewall: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9519 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #-------------------------------- Sophos Module -------------------------------- - module: sophos xg: @@ -2188,46 +1768,6 @@ filebeat.modules: # hostname: "b.host.local" - utm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9533 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - -#-------------------------------- Squid Module -------------------------------- -- module: squid - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9520 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #------------------------------- Suricata Module ------------------------------- - module: suricata # All logs @@ -2410,28 +1950,6 @@ filebeat.modules: # Customize the HTTP timeout configured for the API requests #var.http_client_timeout: 30s -#---------------------------- Apache Tomcat Module ---------------------------- -- module: tomcat - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9501 - - # Set paths for the log files when file input is used. - # var.paths: - # - /var/log/tomcat/*.log - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #------------------------------- Traefik Module ------------------------------- #- module: traefik # Access logs @@ -2575,27 +2093,6 @@ filebeat.modules: # The secret token value provided by Zoom for CRC validation #crc.secret: ZOOMSECRETTOKEN -#----------------------------- Zscaler NSS Module ----------------------------- -- module: zscaler - zia: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9521 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - #=========================== Filebeat inputs ============================= diff --git a/x-pack/filebeat/include/list.go b/x-pack/filebeat/include/list.go index dea47c250cb..fcca6f27de8 100644 --- a/x-pack/filebeat/include/list.go +++ b/x-pack/filebeat/include/list.go @@ -25,23 +25,17 @@ import ( _ "github.com/elastic/beats/v7/x-pack/filebeat/module/aws" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/awsfargate" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/azure" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/barracuda" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/bluecoat" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/cef" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/checkpoint" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/cisco" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/coredns" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/crowdstrike" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/cyberarkpas" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/cylance" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/envoyproxy" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/f5" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/fortinet" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/gcp" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/google_workspace" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/ibmmq" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/imperva" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/infoblox" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/iptables" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/juniper" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/microsoft" @@ -49,27 +43,19 @@ import ( _ "github.com/elastic/beats/v7/x-pack/filebeat/module/mssql" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/mysqlenterprise" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/netflow" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/netscout" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/o365" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/okta" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/oracle" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/panw" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/proofpoint" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/rabbitmq" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/radware" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/salesforce" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/snort" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/snyk" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/sonicwall" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/sophos" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/squid" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/suricata" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/threatintel" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/tomcat" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/zeek" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/zookeeper" _ "github.com/elastic/beats/v7/x-pack/filebeat/module/zoom" - _ "github.com/elastic/beats/v7/x-pack/filebeat/module/zscaler" ) // InitializeModules initialize all of the modules. diff --git a/x-pack/filebeat/module/barracuda/README.md b/x-pack/filebeat/module/barracuda/README.md deleted file mode 100644 index 57ada7880ce..00000000000 --- a/x-pack/filebeat/module/barracuda/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# barracuda module - -This is a module for Barracuda Web Application Firewall logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML barracudawaf version 132 -at 2020-07-13 17:55:32.894932 +0000 UTC. - diff --git a/x-pack/filebeat/module/barracuda/_meta/config.yml b/x-pack/filebeat/module/barracuda/_meta/config.yml deleted file mode 100644 index c6e7a48e75b..00000000000 --- a/x-pack/filebeat/module/barracuda/_meta/config.yml +++ /dev/null @@ -1,38 +0,0 @@ -- module: barracuda - waf: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9503 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - spamfirewall: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9524 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/barracuda/_meta/docs.asciidoc b/x-pack/filebeat/module/barracuda/_meta/docs.asciidoc deleted file mode 100644 index abca823d933..00000000000 --- a/x-pack/filebeat/module/barracuda/_meta/docs.asciidoc +++ /dev/null @@ -1,115 +0,0 @@ -[role="xpack"] - -:modulename: barracuda -:has-dashboards: false - -== Barracuda module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/barracuda[Barracuda Web Application Firewall] Elastic integration instead."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Barracuda Web Application Firewall logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: waf - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `waf` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "barracudawaf" device revision 132. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9503` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `spamfirewall` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "barracudasf" device revision 125. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9524` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/barracuda/_meta/fields.yml b/x-pack/filebeat/module/barracuda/_meta/fields.yml deleted file mode 100644 index c12b3acd69f..00000000000 --- a/x-pack/filebeat/module/barracuda/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: barracuda - title: Barracuda Web Application Firewall - description: > - barracuda fields. - fields: diff --git a/x-pack/filebeat/module/barracuda/fields.go b/x-pack/filebeat/module/barracuda/fields.go deleted file mode 100644 index f8bcb4789d2..00000000000 --- a/x-pack/filebeat/module/barracuda/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package barracuda - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "barracuda", asset.ModuleFieldsPri, AssetBarracuda); err != nil { - panic(err) - } -} - -// AssetBarracuda returns asset data. -// This is the base64 encoded zlib format compressed contents of module/barracuda. -func AssetBarracuda() string { - return "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" -} diff --git a/x-pack/filebeat/module/barracuda/spamfirewall/_meta/fields.yml b/x-pack/filebeat/module/barracuda/spamfirewall/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/barracuda/spamfirewall/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/barracuda/spamfirewall/config/input.yml b/x-pack/filebeat/module/barracuda/spamfirewall/config/input.yml deleted file mode 100644 index af85938cf9c..00000000000 --- a/x-pack/filebeat/module/barracuda/spamfirewall/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Barracuda" - product: "Spam" - type: "Anti-Virus" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/barracuda/spamfirewall/config/liblogparser.js - - ${path.home}/module/barracuda/spamfirewall/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/barracuda/spamfirewall/config/liblogparser.js b/x-pack/filebeat/module/barracuda/spamfirewall/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/barracuda/spamfirewall/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{resultcode->} %{info}"); - -var dup2 = match_copy("MESSAGE#0:000001/1_1", "nwparser.p0", "info"); - -var dup3 = setc("eventcategory","1207010201"); - -var dup4 = setf("msg","$MSG"); - -var dup5 = setc("direction","inbound"); - -var dup6 = date_time({ - dest: "starttime", - args: ["fld1"], - fmts: [ - [dX], - ], -}); - -var dup7 = date_time({ - dest: "endtime", - args: ["fld2"], - fmts: [ - [dX], - ], -}); - -var dup8 = field("fld3"); - -var dup9 = field("resultcode"); - -var dup10 = field("disposition"); - -var dup11 = field("event_cat"); - -var dup12 = setc("action"," RECV"); - -var dup13 = setc("eventcategory","1207010000"); - -var dup14 = setc("direction","outbound"); - -var dup15 = match("MESSAGE#13:000003/1_0", "nwparser.p0", "SZ:%{fld9->} SUBJ:%{subject}"); - -var dup16 = setc("eventcategory","1207040000"); - -var dup17 = setc("eventcategory","1701020000"); - -var dup18 = setc("ec_subject","User"); - -var dup19 = setc("ec_activity","Logon"); - -var dup20 = setc("ec_theme","Authentication"); - -var dup21 = constant("Deferred Message"); - -var dup22 = constant("1207010100"); - -var dup23 = constant("1207040200"); - -var dup24 = constant("1207040100"); - -var dup25 = constant("1207010000"); - -var dup26 = constant("1207000000"); - -var dup27 = linear_select([ - dup1, - dup2, -]); - -var dup28 = lookup({ - dest: "nwparser.disposition", - map: map_getActionName, - key: dup8, -}); - -var dup29 = lookup({ - dest: "nwparser.result", - map: map_getReasonName, - key: dup9, -}); - -var dup30 = lookup({ - dest: "nwparser.event_cat", - map: map_getEventLegacyCategory, - key: dup10, -}); - -var dup31 = lookup({ - dest: "nwparser.event_cat_name", - map: map_getEventLegacyCategoryName, - key: dup11, -}); - -var dup32 = lookup({ - dest: "nwparser.disposition", - map: map_getActionNameForSend, - key: dup8, -}); - -var dup33 = linear_select([ - dup15, - dup2, -]); - -var hdr1 = match("HEADER#0:0001", "message", "%{messageid}[%{hfld14}]: %{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("hfld14"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{hfld1}/%{messageid}[%{hfld14}]: %{p0}", processor_chain([ - setc("header_id","0002"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld1"), - constant("/"), - field("messageid"), - constant("["), - field("hfld14"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr3 = match("HEADER#2:0003", "message", "%{messageid}: %{p0}", processor_chain([ - setc("header_id","0003"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(": "), - field("p0"), - ], - }), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, -]); - -var part1 = match("MESSAGE#0:000001/0", "nwparser.payload", "inbound/pass1[%{fld14}]: %{username}[%{saddr}] %{id->} %{fld1->} %{fld2->} RECV %{from->} %{to->} %{p0}"); - -var all1 = all_match({ - processors: [ - part1, - dup27, - ], - on_success: processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup28, - dup29, - dup30, - dup31, - dup12, - ]), -}); - -var msg1 = msg("000001", all1); - -var part2 = match("MESSAGE#1:inbound/pass1/0", "nwparser.payload", "inbound/pass1: %{web_domain}[%{saddr}] %{id->} %{fld1->} %{fld2->} SCAN %{fld4->} %{from->} %{to->} %{fld5->} %{fld3->} %{resultcode->} %{p0}"); - -var part3 = match("MESSAGE#1:inbound/pass1/1_0", "nwparser.p0", "%{fld6->} SZ:%{fld8->} SUBJ:%{subject}"); - -var part4 = match("MESSAGE#1:inbound/pass1/1_1", "nwparser.p0", "%{domain->} %{info}"); - -var select2 = linear_select([ - part3, - part4, -]); - -var all2 = all_match({ - processors: [ - part2, - select2, - ], - on_success: processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup28, - dup29, - dup30, - dup31, - setc("action"," SCAN"), - ]), -}); - -var msg2 = msg("inbound/pass1", all2); - -var part5 = match("MESSAGE#2:inbound/pass1:01/0", "nwparser.payload", "inbound/pass1:%{web_domain}[%{saddr}] %{id->} %{fld1->} %{fld2->} RECV %{from->} %{to->} %{p0}"); - -var all3 = all_match({ - processors: [ - part5, - dup27, - ], - on_success: processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup28, - dup29, - dup30, - dup31, - dup12, - ]), -}); - -var msg3 = msg("inbound/pass1:01", all3); - -var select3 = linear_select([ - msg1, - msg2, - msg3, -]); - -var part6 = match("MESSAGE#3:000002/0", "nwparser.payload", "outbound/smtp[%{fld14}]: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{p0}"); - -var part7 = match("MESSAGE#3:000002/1_0", "nwparser.p0", "%{fld4->} %{fld3->} %{sessionid->} %{resultcode->} %{info}"); - -var select4 = linear_select([ - part7, - dup2, -]); - -var all4 = all_match({ - processors: [ - part6, - select4, - ], - on_success: processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, - ]), -}); - -var msg4 = msg("000002", all4); - -var part8 = match("MESSAGE#4:outbound/smtp/0", "nwparser.payload", "outbound/smtp: %{saddr->} %{fld5->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{resultcode->} %{p0}"); - -var part9 = match("MESSAGE#4:outbound/smtp/1_0", "nwparser.p0", "%{fld8->} \u003c\u003c%{from}> %{p0}"); - -var part10 = match("MESSAGE#4:outbound/smtp/1_1", "nwparser.p0", "\u003c\u003c%{from}>%{p0}"); - -var select5 = linear_select([ - part9, - part10, -]); - -var part11 = match("MESSAGE#4:outbound/smtp/2", "nwparser.p0", "%{} %{p0}"); - -var part12 = match("MESSAGE#4:outbound/smtp/3_0", "nwparser.p0", "[InternalId=%{id}, Hostname=%{hostname}] %{event_description->} #to#%{ddomain}"); - -var part13 = match("MESSAGE#4:outbound/smtp/3_1", "nwparser.p0", "[InternalId=%{id}] %{event_description->} #to#%{daddr}"); - -var part14 = match("MESSAGE#4:outbound/smtp/3_2", "nwparser.p0", "[InternalId=%{id}, Hostname=%{hostname}] %{info}"); - -var part15 = match("MESSAGE#4:outbound/smtp/3_3", "nwparser.p0", "%{event_description->} #to#%{ddomain}[%{daddr}]:%{dport}"); - -var part16 = match("MESSAGE#4:outbound/smtp/3_4", "nwparser.p0", "%{event_description->} #to#%{ddomain}"); - -var select6 = linear_select([ - part12, - part13, - part14, - part15, - part16, -]); - -var all5 = all_match({ - processors: [ - part8, - select5, - part11, - select6, - ], - on_success: processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, - ]), -}); - -var msg5 = msg("outbound/smtp", all5); - -var part17 = match("MESSAGE#5:000009/0", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{resultcode->} %{p0}"); - -var part18 = match("MESSAGE#5:000009/1_0", "nwparser.p0", "%{fld8->} ok%{p0}"); - -var part19 = match("MESSAGE#5:000009/1_1", "nwparser.p0", "ok%{p0}"); - -var select7 = linear_select([ - part18, - part19, -]); - -var part20 = match("MESSAGE#5:000009/2", "nwparser.p0", "%{fld9->} Message %{fld10->} accepted #to#%{ddomain}[%{daddr}]:%{dport}"); - -var all6 = all_match({ - processors: [ - part17, - select7, - part20, - ], - on_success: processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, - ]), -}); - -var msg6 = msg("000009", all6); - -var part21 = match("MESSAGE#6:outbound/smtp:01", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{resultcode->} Message accepted for delivery #to#%{ddomain}[%{daddr}]:%{dport}", processor_chain([ - dup13, - dup4, - dup14, - setc("result"," Message accepted for delivery"), - dup32, - dup30, - dup31, -])); - -var msg7 = msg("outbound/smtp:01", part21); - -var part22 = match("MESSAGE#7:outbound/smtp:02", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} conversation with %{fld5}[%{fld6}] timed out while sending %{fld7->} #to#%{ddomain}[%{daddr}]:%{dport}", processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, -])); - -var msg8 = msg("outbound/smtp:02", part22); - -var part23 = match("MESSAGE#8:000010/0", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{fld7->} %{p0}"); - -var part24 = match("MESSAGE#8:000010/1_0", "nwparser.p0", "Ok %{fld9->} %{fld10->} - gsmtp #to#%{p0}"); - -var part25 = match("MESSAGE#8:000010/1_1", "nwparser.p0", "Ok: queued as %{fld9->} #to#%{p0}"); - -var part26 = match("MESSAGE#8:000010/1_2", "nwparser.p0", "ok %{fld9->} #to#%{p0}"); - -var part27 = match("MESSAGE#8:000010/1_3", "nwparser.p0", "Ok (%{fld9}) #to#%{p0}"); - -var part28 = match("MESSAGE#8:000010/1_4", "nwparser.p0", "OK %{fld9->} #to#%{p0}"); - -var part29 = match("MESSAGE#8:000010/1_5", "nwparser.p0", "%{fld9->} #to#%{p0}"); - -var select8 = linear_select([ - part24, - part25, - part26, - part27, - part28, - part29, -]); - -var part30 = match_copy("MESSAGE#8:000010/2", "nwparser.p0", "daddr"); - -var all7 = all_match({ - processors: [ - part23, - select8, - part30, - ], - on_success: processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, - ]), -}); - -var msg9 = msg("000010", all7); - -var part31 = match("MESSAGE#9:000011", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} connect to %{ddomain}[%{daddr}]: %{event_description}", processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, -])); - -var msg10 = msg("000011", part31); - -var part32 = match("MESSAGE#10:000012", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{fld7->} [%{ddomain}]: %{event_description}", processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, -])); - -var msg11 = msg("000012", part32); - -var part33 = match("MESSAGE#11:000013", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{resultcode->} %{fld7->} \u003c\u003c%{from}>: %{event_description}", processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, -])); - -var msg12 = msg("000013", part33); - -var part34 = match("MESSAGE#12:000014", "nwparser.payload", "outbound/smtp: %{saddr->} %{id->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{resultcode->} %{fld8->} %{event_description}", processor_chain([ - dup13, - dup4, - dup14, - dup32, - dup30, - dup31, -])); - -var msg13 = msg("000014", part34); - -var select9 = linear_select([ - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, - msg12, - msg13, -]); - -var part35 = match("MESSAGE#13:000003/0", "nwparser.payload", "scan[%{fld14}]: %{username}[%{saddr}] %{id->} %{fld1->} %{fld2->} %{action->} %{fld8->} %{from->} %{to->} %{fld4->} %{fld3->} %{resultcode->} %{fld7->} %{p0}"); - -var all8 = all_match({ - processors: [ - part35, - dup33, - ], - on_success: processor_chain([ - dup16, - dup4, - dup6, - dup7, - dup28, - dup29, - dup30, - dup31, - ]), -}); - -var msg14 = msg("000003", all8); - -var part36 = match("MESSAGE#14:scan/0", "nwparser.payload", "scan: %{web_domain}[%{saddr}] %{id->} %{fld1->} %{fld2->} %{action->} %{fld8->} %{from->} %{to->} %{fld4->} %{fld3->} %{resultcode->} %{fld7->} %{p0}"); - -var all9 = all_match({ - processors: [ - part36, - dup33, - ], - on_success: processor_chain([ - dup16, - dup4, - dup6, - dup7, - dup28, - dup29, - dup30, - dup31, - ]), -}); - -var msg15 = msg("scan", all9); - -var select10 = linear_select([ - msg14, - msg15, -]); - -var part37 = match("MESSAGE#15:000004", "nwparser.payload", "web: Ret Policy Summary (Del:%{fld1->} Kept:%{fld2})", processor_chain([ - dup17, - dup4, -])); - -var msg16 = msg("000004", part37); - -var part38 = match("MESSAGE#16:000005", "nwparser.payload", "web: [%{saddr}] FAILED_LOGIN (%{username})", processor_chain([ - setc("eventcategory","1401030000"), - dup18, - dup19, - dup20, - setc("ec_outcome","Failure"), - dup4, - setc("action","FAILED_LOGIN"), -])); - -var msg17 = msg("000005", part38); - -var part39 = match("MESSAGE#17:000006", "nwparser.payload", "web: Retention violating accounts: %{fld1->} total", processor_chain([ - setc("eventcategory","1605000000"), - dup4, -])); - -var msg18 = msg("000006", part39); - -var part40 = match("MESSAGE#18:000007", "nwparser.payload", "web: [%{saddr}] global CHANGE %{category->} (%{info})", processor_chain([ - dup17, - dup4, - setc("action","CHANGE"), -])); - -var msg19 = msg("000007", part40); - -var part41 = match("MESSAGE#19:000029", "nwparser.payload", "web: [%{saddr}] LOGOUT (%{username})", processor_chain([ - setc("eventcategory","1401070000"), - dup18, - setc("ec_activity","Logoff"), - dup20, - dup4, - setc("action","LOGOUT"), -])); - -var msg20 = msg("000029", part41); - -var part42 = match("MESSAGE#20:000030", "nwparser.payload", "web: [%{saddr}] LOGIN (%{username})", processor_chain([ - setc("eventcategory","1401060000"), - dup18, - dup19, - dup20, - dup4, - setc("action","LOGIN"), -])); - -var msg21 = msg("000030", part42); - -var select11 = linear_select([ - msg16, - msg17, - msg18, - msg19, - msg20, - msg21, -]); - -var part43 = match("MESSAGE#21:000008", "nwparser.payload", "notify/smtp[%{fld14}]: %{saddr->} %{fld1->} %{fld2->} %{action->} %{fld4->} %{fld3->} %{sessionid->} %{bytes->} %{version->} %{from->} %{info}", processor_chain([ - dup13, - dup4, - dup32, - dup30, - dup31, -])); - -var msg22 = msg("000008", part43); - -var part44 = match("MESSAGE#22:reports", "nwparser.payload", "reports: REPORTS (%{process}) queued as %{fld1}", processor_chain([ - dup16, - dup4, - setc("event_description","report queued"), -])); - -var msg23 = msg("reports", part44); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "inbound/pass1": select3, - "notify/smtp": msg22, - "outbound/smtp": select9, - "reports": msg23, - "scan": select10, - "web": select11, - }), -]); - -var part45 = match("MESSAGE#0:000001/1_0", "nwparser.p0", "%{fld3->} %{resultcode->} %{info}"); - -var part46 = match_copy("MESSAGE#0:000001/1_1", "nwparser.p0", "info"); - -var part47 = match("MESSAGE#13:000003/1_0", "nwparser.p0", "SZ:%{fld9->} SUBJ:%{subject}"); - -var select12 = linear_select([ - dup1, - dup2, -]); - -var select13 = linear_select([ - dup15, - dup2, -]); diff --git a/x-pack/filebeat/module/barracuda/spamfirewall/ingest/pipeline.yml b/x-pack/filebeat/module/barracuda/spamfirewall/ingest/pipeline.yml deleted file mode 100644 index c4d00a79eb6..00000000000 --- a/x-pack/filebeat/module/barracuda/spamfirewall/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Barracuda Spam Firewall - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/barracuda/spamfirewall/manifest.yml b/x-pack/filebeat/module/barracuda/spamfirewall/manifest.yml deleted file mode 100644 index e487203382f..00000000000 --- a/x-pack/filebeat/module/barracuda/spamfirewall/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["barracuda.spamfirewall", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9540 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log b/x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log deleted file mode 100644 index ce95de02d11..00000000000 --- a/x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -notify/smtp[avolupt]: 10.224.15.48 nto sse accept tur 3 illumqui 1090 1.2364 ivelitse ritin -inbound/pass1: etdo[10.173.228.223] ntsunti 1455282753 1455282753 SCAN nseq itinvol psa umq 0 31 psaq SZ:cer SUBJ:reveri -outbound/smtp: 10.104.162.169 eosquir orsi nulapari allow vol 4 uidolor nibus mipsumq <: enatus -notify/smtp[iatu]: 10.57.70.73 dolo meumfug deny roinBCS 2 com 1060 1.2548 byC tinculp -outbound/smtp: 10.236.42.236 tconsec nsequat taev block untutl 1 llu uptassi tamremap tur -reports: REPORTS (enatuse.exe) queued as magn -inbound/pass1[sit]: avol[10.162.151.94] laboreet 1461457525 1461457525 RECV aquaeabi giatq quid -inbound/pass1: tempor[10.138.137.28] eip 1462692479 1462692479 SCAN lupta iusmodt doloreeu pori 7 8 ect SZ:reetdolo SUBJ:nrepreh -scan: ari[10.108.180.105] nsequat 1463927433 1463927433 block llam llamcorp ari eataevit 4 38 uovol dmi -inbound/pass1: [10.206.159.177] ididu 1465162388 1465162388 RECV ciunt turQuisa 10 74 lit -inbound/pass1[umdo]: sed[10.206.224.241] reetdolo 1466397342 1466397342 RECV olupta turveli 4 40 tatno -inbound/pass1: aveniam[10.82.201.113] essequ 1467632296 1467632296 SCAN taevi ender snulapar aedic 5 13 iumto SZ:aboreetd SUBJ:sun -reports: REPORTS (tem.exe) queued as ons -outbound/smtp: 10.110.109.5 ittenbyC aperi lor accept ipi 4 paqu eseru remeum #to#10.18.165.35 -scan: dolore[10.195.109.134] eddoei 1471337159 1471337159 deny etM nimadmin ditautfu piscing 6 74 ostr rudexerc -scan[colabor]: iusmodt[10.21.92.218] lorumw 1472572113 1472572113 accept llitani inima tlabo suntexp 4 45 stiae SZ:nofdeF SUBJ:sunt -reports: REPORTS (tat.exe) queued as tion -reports: REPORTS (emp.exe) queued as aperia -web: Ret Policy Summary (Del:eritquii Kept:dexeac) -web: [10.45.25.68] LOGOUT (rehender) -web: Ret Policy Summary (Del:hil Kept:atquovo) -notify/smtp[tatn]: 10.18.109.121 ents pida allow idolor 1 emoeni 269 1.2857 utlabore ecillu -web: [10.19.194.101] global CHANGE orinrepr (conse) -reports: REPORTS (lumqui.exe) queued as itinvo -reports: REPORTS (usmodt.exe) queued as siar -notify/smtp[sci]: 10.116.193.182 snostrud nama allow data 1 ationul 2530 1.5361 commod adol -inbound/pass1: hitect[10.198.6.166] modocon 1486156610 1486156610 SCAN que atevel nsecte itame 0 38 lit5929.test quamnih -outbound/smtp: 10.198.19.111 aquaeabi lita adeseru accept amc 4 amest corp modtemp <: iae -inbound/pass1: equat[10.77.137.72] ione 1488626519 1488626519 SCAN ihilmole eriamea amre rsita 8 56 uptat3156.www5.test tmo -inbound/pass1: vitaedi[10.128.114.77] temqu 1489861473 1489861473 SCAN edol colab ommodico quatD 4 59 neav6028.internal.domain agnid -outbound/smtp: 10.181.80.139 hitecto ents liquide allow tenatu 1 boN eprehend aevit aboN -inbound/pass1[ris]: uamqu[10.138.252.123] quioffi 1492331381 1492331381 RECV uptate ncidid quaturve -reports: REPORTS (aera.exe) queued as ate -inbound/pass1: [10.153.108.27] uir 1494801290 1494801290 RECV dol essecil citation -outbound/smtp: 10.120.167.239 gnido ratvolu olup deny nsecte 3 eveli eroi dtemp aliquide -inbound/pass1[ris]: nisi[10.105.88.20] ecte 1497271198 1497271198 RECV tinvolu iurer iciadese -scan: olupta[10.98.92.244] idolor 1498506153 1498506153 deny uta llumdolo nre ercitat 7 38 riosamn SZ:ept SUBJ:iumtotam -scan[sperna]: sintocc[10.185.107.75] tDuisaut 1499741107 1499741107 allow tate imvenia spi stquido 8 62 ptas SZ:pta SUBJ:tetu -reports: REPORTS (nevo.exe) queued as ide -notify/smtp[etcons]: 10.80.214.206 ate uiac accept officiad 4 quinesc 6218 1.5651 tur roi -notify/smtp[nof]: 10.48.34.226 ccaec ten allow isc 2 ntN 6179 1.2364 tateve itinvol -reports: REPORTS (etconsec.exe) queued as ios -inbound/pass1: tquov[10.211.93.62] mod 1505915878 1505915878 SCAN hilm ataevi com tnulapa 5 57 tiumt SZ:reetdolo SUBJ:norum -reports: REPORTS (uidol.exe) queued as mporin -scan: qui[10.199.182.123] entor 1508385787 1508385787 accept Sedutp utp ema rsitv 0 69 ntiumt iquipe -reports: REPORTS (tvolupt.exe) queued as eufugi -scan[pid]: illoin[10.130.38.118] uamni 1510855695 1510855695 block gnamal metMalo ntexplic archite 1 56 untu asi -inbound/pass1: [10.153.152.219] eumiu 1512090649 1512090649 RECV orumSe boree intoc -web: Retention violating accounts: rnatur total -reports: REPORTS (isisten.exe) queued as cusant -reports: REPORTS (naal.exe) queued as borios -outbound/smtp: 10.167.227.44 tali lillum cusant deny ender 2 oles edic seq tutlab -notify/smtp[atevelit]: 10.56.136.27 aperia ccaeca deny ttenby 1 amc 5163 1.375 orumSe ratv -web: [10.194.90.130] FAILED_LOGIN (siut) -inbound/pass1: [10.103.69.44] velitess 1520735329 1520735329 RECV naali uunturm temUte -inbound/pass1: aveni[10.29.155.171] uptatema 1521970284 1521970284 SCAN oeni tdol sit tiaec 6 23 oremagna3521.mail.home asiar -inbound/pass1: [10.145.193.93] nonp 1523205238 1523205238 RECV labo ulapar aboreetd -inbound/pass1[ama]: uatur[10.143.79.226] exeacom 1524440192 1524440192 RECV roidents tem dol -web: [10.30.25.84] FAILED_LOGIN (utlab) -inbound/pass1: [10.141.225.182] bor 1526910101 1526910101 RECV rauto ationev 8 57 uaUten -reports: REPORTS (dun.exe) queued as reprehe -web: [10.90.9.88] global CHANGE umexerc (oremipsu) -reports: REPORTS (amco.exe) queued as ssecillu -reports: REPORTS (olo.exe) queued as psumqu -notify/smtp[rationev]: 10.226.20.199 tatem untutlab allow eveli 2 lillum 7809 1.2000 uisaute imide -web: [10.134.140.191] global CHANGE nte (mvel) -outbound/smtp[conse]: 10.252.40.172 nimadmin isiu licabo cancel etdolor 3 dic cola amcor -scan[xea]: ites[10.126.26.131] nisiut 1536789735 1536789735 accept teturad perspici itation sequatD 5 24 isciv rroqu -scan[rExc]: iusmo[10.187.210.173] reetd 1538024689 1538024689 accept ulpa sitam rad loi 2 15 Nequepor SZ:eirure SUBJ:deserun -reports: REPORTS (orroq.exe) queued as vitaedic -reports: REPORTS (orem.exe) queued as rcit -scan[untincul]: ssecil[10.180.147.129] atise 1541729552 1541729552 allow umetMalo oluptas emvele isnost 2 5 ido emqu -notify/smtp[exeaco]: 10.99.17.210 olorsit tore cancel illu 4 turadip 688 1.7484 boreetdo undeom -notify/smtp[uov]: 10.230.46.162 sBono loremqu accept quunt 3 siuta 1107 1.2607 dquia temporin -scan[nimveni]: idi[10.96.135.47] rum 1545434414 1545434414 accept eporroq ulla iqu oin 1 55 cingel modocon -reports: REPORTS (atv.exe) queued as onu -scan: obeataev[10.139.127.232] nsec 1547904323 1547904323 cancel maperi agnaaliq tlaboree norumet 7 48 tin SZ:fugitse SUBJ:imad -inbound/pass1: inv[10.163.209.70] atu 1549139277 1549139277 SCAN lloin remipsum tempor citatio 0 57 mveniamq SZ:taedict SUBJ:edquian -reports: REPORTS (mipsamvo.exe) queued as eiusmod -scan[avolu]: Except[10.191.7.121] umetMal 1551609186 1551609186 accept sciun metcons itasper uae 2 21 uia iciad -inbound/pass1: [10.157.196.101] gnaa 1552844140 1552844140 RECV mod doei cipitl -web: [10.171.72.5] global CHANGE eprehend (asnu) -scan: eritatis[10.209.184.60] mquisn 1555314049 1555314049 cancel uto emUte molestia quir 4 18 emip SZ:ver SUBJ:erc -inbound/pass1[dolorsit]: archite[10.143.228.97] isqua 1556549003 1556549003 RECV uta emo itq -reports: REPORTS (ntexpl.exe) queued as dunt -scan: plic[10.17.87.79] tetur 1559018911 1559018911 block amali ate idolor ratvolu 7 64 onse olorem -web: [10.163.18.29] FAILED_LOGIN (nim) -web: Retention violating accounts: erspi total -reports: REPORTS (billoi.exe) queued as moles -scan: taedi[10.17.98.243] etconsec 1563958728 1563958728 cancel ill mporinc onsectet idolo 8 55 docon SZ:mdolore SUBJ:eosquira -reports: REPORTS (apariatu.exe) queued as lorsita -reports: REPORTS (ever.exe) queued as tali -inbound/pass1[mipsumqu]: tatio[10.181.247.224] onnu 1567663591 1567663591 RECV olorema aquiof ende -scan[ugitse]: quiineav[10.235.116.121] ventore 1568898545 1568898545 deny obea emp agnaaliq est 0 73 aev SZ:inrepr SUBJ:mol -outbound/smtp: 10.178.30.158 llit tenimad sitametc allow onproide 2 cillumd riosa Ok: queued as tNe #to#10.1.6.115 -notify/smtp[rautod]: 10.124.32.120 lapar ritati accept qui 3 mullam 4965 1.4254 meaque uid -reports: REPORTS (ataevita.exe) queued as oremqu -reports: REPORTS (velitsed.exe) queued as magnaali -inbound/pass1: der[10.77.182.191] enbyCi 1575073317 1575073317 SCAN quameiu diduntu eiusmod itation 8 79 piciatis2460.api.host iusmodt -scan: iame[10.193.110.71] tiumd 1576308271 1576308271 accept loinve tanimid isnostru nofdeFi 3 5 saqu remips diff --git a/x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log-expected.json b/x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log-expected.json deleted file mode 100644 index 626fd3a72e2..00000000000 --- a/x-pack/filebeat/module/barracuda/spamfirewall/test/generated.log-expected.json +++ /dev/null @@ -1,3207 +0,0 @@ -[ - { - "event.action": "accept", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[avolupt]: 10.224.15.48 nto sse accept tur 3 illumqui 1090 1.2364 ivelitse ritin", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 0, - "network.bytes": 1090, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.2364", - "related.ip": [ - "10.224.15.48" - ], - "rsa.db.index": "ritin", - "rsa.email.email_src": "ivelitse", - "rsa.internal.messageid": "notify/smtp", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.log_session_id": "illumqui", - "rsa.misc.version": "1.2364", - "service.type": "barracuda", - "source.ip": "10.224.15.48", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " SCAN", - "event.code": "ntsunti", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: etdo[10.173.228.223] ntsunti 1455282753 1455282753 SCAN nseq itinvol psa umq 0 31 psaq SZ:cer SUBJ:reveri", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 92, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "etdo" - ], - "related.ip": [ - "10.173.228.223" - ], - "rsa.email.email_dst": "psa", - "rsa.email.email_src": "itinvol", - "rsa.email.subject": "reveri", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Allowed Message", - "rsa.misc.reference_id": "ntsunti", - "rsa.misc.result": "Score", - "rsa.misc.result_code": "31", - "rsa.time.endtime": "2016-02-12T13:12:33.000Z", - "rsa.time.starttime": "2016-02-12T13:12:33.000Z", - "service.type": "barracuda", - "source.ip": "10.173.228.223", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "etdo" - }, - { - "event.action": "allow", - "event.code": "eosquir", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.104.162.169 eosquir orsi nulapari allow vol 4 uidolor nibus mipsumq <: enatus", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 213, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.104.162.169" - ], - "rsa.email.email_src": "gnaali", - "rsa.internal.event_desc": "enatus", - "rsa.internal.messageid": "outbound/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Expired Message", - "rsa.misc.log_session_id": "uidolor", - "rsa.misc.reference_id": "eosquir", - "rsa.misc.result_code": "nibus", - "service.type": "barracuda", - "source.ip": "10.104.162.169", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[iatu]: 10.57.70.73 dolo meumfug deny roinBCS 2 com 1060 1.2548 byC tinculp", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 317, - "network.bytes": 1060, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.2548", - "related.ip": [ - "10.57.70.73" - ], - "rsa.db.index": "tinculp", - "rsa.email.email_src": "byC", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "Rejected Message", - "rsa.misc.log_session_id": "com", - "rsa.misc.version": "1.2548", - "service.type": "barracuda", - "source.ip": "10.57.70.73", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "block", - "event.code": "tconsec", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.236.42.236 tconsec nsequat taev block untutl 1 llu uptassi tamremap tur", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 404, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.236.42.236" - ], - "rsa.internal.event_desc": "tur", - "rsa.internal.messageid": "outbound/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.disposition": "Delivered Message", - "rsa.misc.log_session_id": "llu", - "rsa.misc.reference_id": "tconsec", - "rsa.misc.result_code": "uptassi", - "service.type": "barracuda", - "source.ip": "10.236.42.236", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (enatuse.exe) queued as magn", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 494, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "enatuse.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " RECV", - "event.code": "laboreet", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1[sit]: avol[10.162.151.94] laboreet 1461457525 1461457525 RECV aquaeabi giatq quid", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 540, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.162.151.94" - ], - "related.user": [ - "avol" - ], - "rsa.db.index": "quid", - "rsa.email.email_dst": "giatq", - "rsa.email.email_src": "aquaeabi", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "laboreet", - "rsa.time.endtime": "2016-04-24T00:25:25.000Z", - "rsa.time.starttime": "2016-04-24T00:25:25.000Z", - "service.type": "barracuda", - "source.ip": "10.162.151.94", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "avol" - }, - { - "event.action": " SCAN", - "event.code": "eip", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: tempor[10.138.137.28] eip 1462692479 1462692479 SCAN lupta iusmodt doloreeu pori 7 8 ect SZ:reetdolo SUBJ:nrepreh", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 636, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "tempor" - ], - "related.ip": [ - "10.138.137.28" - ], - "rsa.email.email_dst": "doloreeu", - "rsa.email.email_src": "iusmodt", - "rsa.email.subject": "nrepreh", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Whitelisted Message", - "rsa.misc.reference_id": "eip", - "rsa.misc.result": "No Such User", - "rsa.misc.result_code": "8", - "rsa.time.endtime": "2016-05-08T07:27:59.000Z", - "rsa.time.starttime": "2016-05-08T07:27:59.000Z", - "service.type": "barracuda", - "source.ip": "10.138.137.28", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "tempor" - }, - { - "event.action": "block", - "event.code": "nsequat", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: ari[10.108.180.105] nsequat 1463927433 1463927433 block llam llamcorp ari eataevit 4 38 uovol dmi", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 765, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "ari" - ], - "related.ip": [ - "10.108.180.105" - ], - "rsa.db.index": "dmi", - "rsa.email.email_dst": "ari", - "rsa.email.email_src": "llamcorp", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.disposition": "Tagged Message", - "rsa.misc.reference_id": "nsequat", - "rsa.misc.result": "Message Size Bypass", - "rsa.misc.result_code": "38", - "rsa.time.endtime": "2016-05-22T14:30:33.000Z", - "rsa.time.starttime": "2016-05-22T14:30:33.000Z", - "service.type": "barracuda", - "source.ip": "10.108.180.105", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "ari" - }, - { - "event.action": " RECV", - "event.code": "ididu", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: [10.206.159.177] ididu 1465162388 1465162388 RECV ciunt turQuisa 10 74 lit", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 869, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.206.159.177" - ], - "rsa.db.index": "lit", - "rsa.email.email_dst": "turQuisa", - "rsa.email.email_src": "ciunt", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.disposition": "Attachments Stubbed", - "rsa.misc.reference_id": "ididu", - "rsa.misc.result": "BRTS Intent", - "rsa.misc.result_code": "74", - "rsa.time.endtime": "2016-06-05T21:33:08.000Z", - "rsa.time.starttime": "2016-06-05T21:33:08.000Z", - "service.type": "barracuda", - "source.ip": "10.206.159.177", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " RECV", - "event.code": "reetdolo", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1[umdo]: sed[10.206.224.241] reetdolo 1466397342 1466397342 RECV olupta turveli 4 40 tatno", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 959, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.206.224.241" - ], - "related.user": [ - "sed" - ], - "rsa.db.index": "tatno", - "rsa.email.email_dst": "turveli", - "rsa.email.email_src": "olupta", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.disposition": "Tagged Message", - "rsa.misc.reference_id": "reetdolo", - "rsa.misc.result": "SPF/Caller-ID", - "rsa.misc.result_code": "40", - "rsa.time.endtime": "2016-06-20T04:35:42.000Z", - "rsa.time.starttime": "2016-06-20T04:35:42.000Z", - "service.type": "barracuda", - "source.ip": "10.206.224.241", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "sed" - }, - { - "event.action": " SCAN", - "event.code": "essequ", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: aveniam[10.82.201.113] essequ 1467632296 1467632296 SCAN taevi ender snulapar aedic 5 13 iumto SZ:aboreetd SUBJ:sun", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1062, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "aveniam" - ], - "related.ip": [ - "10.82.201.113" - ], - "rsa.email.email_dst": "snulapar", - "rsa.email.email_src": "ender", - "rsa.email.subject": "sun", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.reference_id": "essequ", - "rsa.misc.result": "No Valid Recipients", - "rsa.misc.result_code": "13", - "rsa.time.endtime": "2016-07-04T11:38:16.000Z", - "rsa.time.starttime": "2016-07-04T11:38:16.000Z", - "service.type": "barracuda", - "source.ip": "10.82.201.113", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "aveniam" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (tem.exe) queued as ons", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1193, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "tem.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "destination.ip": "10.18.165.35", - "event.action": "accept", - "event.code": "ittenbyC", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.110.109.5 ittenbyC aperi lor accept ipi 4 paqu eseru remeum #to#10.18.165.35", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1234, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.110.109.5", - "10.18.165.35" - ], - "rsa.internal.messageid": "outbound/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Expired Message", - "rsa.misc.log_session_id": "paqu", - "rsa.misc.reference_id": "ittenbyC", - "rsa.misc.result_code": "eseru", - "service.type": "barracuda", - "source.ip": "10.110.109.5", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "eddoei", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: dolore[10.195.109.134] eddoei 1471337159 1471337159 deny etM nimadmin ditautfu piscing 6 74 ostr rudexerc", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1329, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "dolore" - ], - "related.ip": [ - "10.195.109.134" - ], - "rsa.db.index": "rudexerc", - "rsa.email.email_dst": "ditautfu", - "rsa.email.email_src": "nimadmin", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "Per-User Quarantined Message", - "rsa.misc.reference_id": "eddoei", - "rsa.misc.result": "BRTS Intent", - "rsa.misc.result_code": "74", - "rsa.time.endtime": "2016-08-16T08:45:59.000Z", - "rsa.time.starttime": "2016-08-16T08:45:59.000Z", - "service.type": "barracuda", - "source.ip": "10.195.109.134", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "dolore" - }, - { - "event.action": "accept", - "event.code": "lorumw", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[colabor]: iusmodt[10.21.92.218] lorumw 1472572113 1472572113 accept llitani inima tlabo suntexp 4 45 stiae SZ:nofdeF SUBJ:sunt", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1441, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.21.92.218" - ], - "related.user": [ - "iusmodt" - ], - "rsa.email.email_dst": "tlabo", - "rsa.email.email_src": "inima", - "rsa.email.subject": "sunt", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Tagged Message", - "rsa.misc.reference_id": "lorumw", - "rsa.misc.result": "Allowed Message Size Exceeded", - "rsa.misc.result_code": "45", - "rsa.time.endtime": "2016-08-30T15:48:33.000Z", - "rsa.time.starttime": "2016-08-30T15:48:33.000Z", - "service.type": "barracuda", - "source.ip": "10.21.92.218", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "iusmodt" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (tat.exe) queued as tion", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1573, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "tat.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (emp.exe) queued as aperia", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1615, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "emp.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: Ret Policy Summary (Del:eritquii Kept:dexeac)", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1659, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "rsa.internal.messageid": "web", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "LOGOUT", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.45.25.68] LOGOUT (rehender)", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1710, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.45.25.68" - ], - "related.user": [ - "rehender" - ], - "rsa.internal.messageid": "web", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "LOGOUT" - ], - "service.type": "barracuda", - "source.ip": "10.45.25.68", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "rehender" - }, - { - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: Ret Policy Summary (Del:hil Kept:atquovo)", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1747, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "rsa.internal.messageid": "web", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[tatn]: 10.18.109.121 ents pida allow idolor 1 emoeni 269 1.2857 utlabore ecillu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1794, - "network.bytes": 269, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.2857", - "related.ip": [ - "10.18.109.121" - ], - "rsa.db.index": "ecillu", - "rsa.email.email_src": "utlabore", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Delivered Message", - "rsa.misc.log_session_id": "emoeni", - "rsa.misc.version": "1.2857", - "service.type": "barracuda", - "source.ip": "10.18.109.121", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "CHANGE", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.19.194.101] global CHANGE orinrepr (conse)", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1886, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.19.194.101" - ], - "rsa.db.index": "conse", - "rsa.internal.messageid": "web", - "rsa.misc.action": [ - "CHANGE" - ], - "rsa.misc.category": "orinrepr", - "service.type": "barracuda", - "source.ip": "10.19.194.101", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (lumqui.exe) queued as itinvo", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1938, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "lumqui.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (usmodt.exe) queued as siar", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 1985, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "usmodt.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[sci]: 10.116.193.182 snostrud nama allow data 1 ationul 2530 1.5361 commod adol", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2030, - "network.bytes": 2530, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.5361", - "related.ip": [ - "10.116.193.182" - ], - "rsa.db.index": "adol", - "rsa.email.email_src": "commod", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Delivered Message", - "rsa.misc.log_session_id": "ationul", - "rsa.misc.version": "1.5361", - "service.type": "barracuda", - "source.ip": "10.116.193.182", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " SCAN", - "event.code": "modocon", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: hitect[10.198.6.166] modocon 1486156610 1486156610 SCAN que atevel nsecte itame 0 38 lit5929.test quamnih", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2122, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "hitect", - "lit5929.test" - ], - "related.ip": [ - "10.198.6.166" - ], - "rsa.db.index": "quamnih", - "rsa.email.email_dst": "nsecte", - "rsa.email.email_src": "atevel", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Allowed Message", - "rsa.misc.reference_id": "modocon", - "rsa.misc.result": "Message Size Bypass", - "rsa.misc.result_code": "38", - "rsa.network.domain": "lit5929.test", - "rsa.time.endtime": "2017-02-03T21:16:50.000Z", - "rsa.time.starttime": "2017-02-03T21:16:50.000Z", - "server.domain": "lit5929.test", - "server.registered_domain": "lit5929.test", - "server.top_level_domain": "test", - "service.type": "barracuda", - "source.ip": "10.198.6.166", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "hitect" - }, - { - "event.action": "accept", - "event.code": "aquaeabi", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.198.19.111 aquaeabi lita adeseru accept amc 4 amest corp modtemp <: iae", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2243, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.198.19.111" - ], - "rsa.email.email_src": "rehender", - "rsa.internal.event_desc": "iae", - "rsa.internal.messageid": "outbound/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Expired Message", - "rsa.misc.log_session_id": "amest", - "rsa.misc.reference_id": "aquaeabi", - "rsa.misc.result_code": "corp", - "service.type": "barracuda", - "source.ip": "10.198.19.111", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " SCAN", - "event.code": "ione", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: equat[10.77.137.72] ione 1488626519 1488626519 SCAN ihilmole eriamea amre rsita 8 56 uptat3156.www5.test tmo", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2343, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "equat", - "uptat3156.www5.test" - ], - "related.ip": [ - "10.77.137.72" - ], - "rsa.db.index": "tmo", - "rsa.email.email_dst": "amre", - "rsa.email.email_src": "eriamea", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Encrypted Message", - "rsa.misc.reference_id": "ione", - "rsa.misc.result": "STARTTLS Syntax Error", - "rsa.misc.result_code": "56", - "rsa.network.domain": "uptat3156.www5.test", - "rsa.time.endtime": "2017-03-04T11:21:59.000Z", - "rsa.time.starttime": "2017-03-04T11:21:59.000Z", - "server.domain": "uptat3156.www5.test", - "server.registered_domain": "www5.test", - "server.subdomain": "uptat3156", - "server.top_level_domain": "test", - "service.type": "barracuda", - "source.ip": "10.77.137.72", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "equat" - }, - { - "event.action": " SCAN", - "event.code": "temqu", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: vitaedi[10.128.114.77] temqu 1489861473 1489861473 SCAN edol colab ommodico quatD 4 59 neav6028.internal.domain agnid", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2467, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "neav6028.internal.domain", - "vitaedi" - ], - "related.ip": [ - "10.128.114.77" - ], - "rsa.db.index": "agnid", - "rsa.email.email_dst": "ommodico", - "rsa.email.email_src": "colab", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Tagged Message", - "rsa.misc.reference_id": "temqu", - "rsa.misc.result": "Need STARTTLS First", - "rsa.misc.result_code": "59", - "rsa.network.domain": "neav6028.internal.domain", - "rsa.time.endtime": "2017-03-18T18:24:33.000Z", - "rsa.time.starttime": "2017-03-18T18:24:33.000Z", - "server.domain": "neav6028.internal.domain", - "server.registered_domain": "internal.domain", - "server.subdomain": "neav6028", - "server.top_level_domain": "domain", - "service.type": "barracuda", - "source.ip": "10.128.114.77", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "vitaedi" - }, - { - "event.action": "allow", - "event.code": "hitecto", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.181.80.139 hitecto ents liquide allow tenatu 1 boN eprehend aevit aboN", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2600, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.181.80.139" - ], - "rsa.internal.event_desc": "aboN", - "rsa.internal.messageid": "outbound/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Delivered Message", - "rsa.misc.log_session_id": "boN", - "rsa.misc.reference_id": "hitecto", - "rsa.misc.result_code": "eprehend", - "service.type": "barracuda", - "source.ip": "10.181.80.139", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " RECV", - "event.code": "quioffi", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1[ris]: uamqu[10.138.252.123] quioffi 1492331381 1492331381 RECV uptate ncidid quaturve", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2689, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.138.252.123" - ], - "related.user": [ - "uamqu" - ], - "rsa.db.index": "quaturve", - "rsa.email.email_dst": "ncidid", - "rsa.email.email_src": "uptate", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "quioffi", - "rsa.time.endtime": "2017-04-16T08:29:41.000Z", - "rsa.time.starttime": "2017-04-16T08:29:41.000Z", - "service.type": "barracuda", - "source.ip": "10.138.252.123", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "uamqu" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (aera.exe) queued as ate", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2789, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "aera.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " RECV", - "event.code": "uir", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: [10.153.108.27] uir 1494801290 1494801290 RECV dol essecil citation", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2831, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.153.108.27" - ], - "rsa.db.index": "citation", - "rsa.email.email_dst": "essecil", - "rsa.email.email_src": "dol", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "uir", - "rsa.time.endtime": "2017-05-14T22:34:50.000Z", - "rsa.time.starttime": "2017-05-14T22:34:50.000Z", - "service.type": "barracuda", - "source.ip": "10.153.108.27", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "gnido", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.120.167.239 gnido ratvolu olup deny nsecte 3 eveli eroi dtemp aliquide", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 2914, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.120.167.239" - ], - "rsa.internal.event_desc": "aliquide", - "rsa.internal.messageid": "outbound/smtp", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.log_session_id": "eveli", - "rsa.misc.reference_id": "gnido", - "rsa.misc.result_code": "eroi", - "service.type": "barracuda", - "source.ip": "10.120.167.239", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " RECV", - "event.code": "ecte", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1[ris]: nisi[10.105.88.20] ecte 1497271198 1497271198 RECV tinvolu iurer iciadese", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3003, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.105.88.20" - ], - "related.user": [ - "nisi" - ], - "rsa.db.index": "iciadese", - "rsa.email.email_dst": "iurer", - "rsa.email.email_src": "tinvolu", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "ecte", - "rsa.time.endtime": "2017-06-12T12:39:58.000Z", - "rsa.time.starttime": "2017-06-12T12:39:58.000Z", - "service.type": "barracuda", - "source.ip": "10.105.88.20", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "nisi" - }, - { - "event.action": "deny", - "event.code": "idolor", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: olupta[10.98.92.244] idolor 1498506153 1498506153 deny uta llumdolo nre ercitat 7 38 riosamn SZ:ept SUBJ:iumtotam", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3097, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "olupta" - ], - "related.ip": [ - "10.98.92.244" - ], - "rsa.email.email_dst": "nre", - "rsa.email.email_src": "llumdolo", - "rsa.email.subject": "iumtotam", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "Whitelisted Message", - "rsa.misc.reference_id": "idolor", - "rsa.misc.result": "Message Size Bypass", - "rsa.misc.result_code": "38", - "rsa.time.endtime": "2017-06-26T19:42:33.000Z", - "rsa.time.starttime": "2017-06-26T19:42:33.000Z", - "service.type": "barracuda", - "source.ip": "10.98.92.244", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "olupta" - }, - { - "event.action": "allow", - "event.code": "tDuisaut", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[sperna]: sintocc[10.185.107.75] tDuisaut 1499741107 1499741107 allow tate imvenia spi stquido 8 62 ptas SZ:pta SUBJ:tetu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3217, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.185.107.75" - ], - "related.user": [ - "sintocc" - ], - "rsa.email.email_dst": "spi", - "rsa.email.email_src": "imvenia", - "rsa.email.subject": "tetu", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Encrypted Message", - "rsa.misc.reference_id": "tDuisaut", - "rsa.misc.result": "Barracuda Reputation Blocklist", - "rsa.misc.result_code": "62", - "rsa.time.endtime": "2017-07-11T02:45:07.000Z", - "rsa.time.starttime": "2017-07-11T02:45:07.000Z", - "service.type": "barracuda", - "source.ip": "10.185.107.75", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "sintocc" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (nevo.exe) queued as ide", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3343, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "nevo.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[etcons]: 10.80.214.206 ate uiac accept officiad 4 quinesc 6218 1.5651 tur roi", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3385, - "network.bytes": 6218, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.5651", - "related.ip": [ - "10.80.214.206" - ], - "rsa.db.index": "roi", - "rsa.email.email_src": "tur", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Expired Message", - "rsa.misc.log_session_id": "quinesc", - "rsa.misc.version": "1.5651", - "service.type": "barracuda", - "source.ip": "10.80.214.206", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[nof]: 10.48.34.226 ccaec ten allow isc 2 ntN 6179 1.2364 tateve itinvol", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3475, - "network.bytes": 6179, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.2364", - "related.ip": [ - "10.48.34.226" - ], - "rsa.db.index": "itinvol", - "rsa.email.email_src": "tateve", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Rejected Message", - "rsa.misc.log_session_id": "ntN", - "rsa.misc.version": "1.2364", - "service.type": "barracuda", - "source.ip": "10.48.34.226", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (etconsec.exe) queued as ios", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3559, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "etconsec.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " SCAN", - "event.code": "mod", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: tquov[10.211.93.62] mod 1505915878 1505915878 SCAN hilm ataevi com tnulapa 5 57 tiumt SZ:reetdolo SUBJ:norum", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3605, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "tquov" - ], - "related.ip": [ - "10.211.93.62" - ], - "rsa.email.email_dst": "com", - "rsa.email.email_src": "ataevi", - "rsa.email.subject": "norum", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.reference_id": "mod", - "rsa.misc.result": "TLS Already Active", - "rsa.misc.result_code": "57", - "rsa.time.endtime": "2017-09-20T13:57:58.000Z", - "rsa.time.starttime": "2017-09-20T13:57:58.000Z", - "service.type": "barracuda", - "source.ip": "10.211.93.62", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "tquov" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (uidol.exe) queued as mporin", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3729, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "uidol.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "entor", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: qui[10.199.182.123] entor 1508385787 1508385787 accept Sedutp utp ema rsitv 0 69 ntiumt iquipe", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3775, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "qui" - ], - "related.ip": [ - "10.199.182.123" - ], - "rsa.db.index": "iquipe", - "rsa.email.email_dst": "ema", - "rsa.email.email_src": "utp", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Allowed Message", - "rsa.misc.reference_id": "entor", - "rsa.misc.result": "Intent - Adult", - "rsa.misc.result_code": "69", - "rsa.time.endtime": "2017-10-19T04:03:07.000Z", - "rsa.time.starttime": "2017-10-19T04:03:07.000Z", - "service.type": "barracuda", - "source.ip": "10.199.182.123", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "qui" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (tvolupt.exe) queued as eufugi", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3876, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "tvolupt.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "block", - "event.code": "uamni", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[pid]: illoin[10.130.38.118] uamni 1510855695 1510855695 block gnamal metMalo ntexplic archite 1 56 untu asi", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 3924, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.130.38.118" - ], - "related.user": [ - "illoin" - ], - "rsa.db.index": "asi", - "rsa.email.email_dst": "ntexplic", - "rsa.email.email_src": "metMalo", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.disposition": "Aborted Message", - "rsa.misc.reference_id": "uamni", - "rsa.misc.result": "STARTTLS Syntax Error", - "rsa.misc.result_code": "56", - "rsa.time.endtime": "2017-11-16T18:08:15.000Z", - "rsa.time.starttime": "2017-11-16T18:08:15.000Z", - "service.type": "barracuda", - "source.ip": "10.130.38.118", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "illoin" - }, - { - "event.action": " RECV", - "event.code": "eumiu", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: [10.153.152.219] eumiu 1512090649 1512090649 RECV orumSe boree intoc", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4037, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.153.152.219" - ], - "rsa.db.index": "intoc", - "rsa.email.email_dst": "boree", - "rsa.email.email_src": "orumSe", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "eumiu", - "rsa.time.endtime": "2017-12-01T01:10:49.000Z", - "rsa.time.starttime": "2017-12-01T01:10:49.000Z", - "service.type": "barracuda", - "source.ip": "10.153.152.219", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: Retention violating accounts: rnatur total", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4121, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "rsa.internal.messageid": "web", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (isisten.exe) queued as cusant", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4169, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "isisten.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (naal.exe) queued as borios", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4217, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "naal.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "tali", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.167.227.44 tali lillum cusant deny ender 2 oles edic seq tutlab", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4262, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.167.227.44" - ], - "rsa.internal.event_desc": "tutlab", - "rsa.internal.messageid": "outbound/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "Rejected Message", - "rsa.misc.log_session_id": "oles", - "rsa.misc.reference_id": "tali", - "rsa.misc.result_code": "edic", - "service.type": "barracuda", - "source.ip": "10.167.227.44", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[atevelit]: 10.56.136.27 aperia ccaeca deny ttenby 1 amc 5163 1.375 orumSe ratv", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4344, - "network.bytes": 5163, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.375", - "related.ip": [ - "10.56.136.27" - ], - "rsa.db.index": "ratv", - "rsa.email.email_src": "orumSe", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "Delivered Message", - "rsa.misc.log_session_id": "amc", - "rsa.misc.version": "1.375", - "service.type": "barracuda", - "source.ip": "10.56.136.27", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "FAILED_LOGIN", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.194.90.130] FAILED_LOGIN (siut)", - "event.outcome": "failure", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4435, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.194.90.130" - ], - "related.user": [ - "siut" - ], - "rsa.internal.messageid": "web", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "FAILED_LOGIN" - ], - "service.type": "barracuda", - "source.ip": "10.194.90.130", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "siut" - }, - { - "event.action": " RECV", - "event.code": "velitess", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: [10.103.69.44] velitess 1520735329 1520735329 RECV naali uunturm temUte", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4476, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.103.69.44" - ], - "rsa.db.index": "temUte", - "rsa.email.email_dst": "uunturm", - "rsa.email.email_src": "naali", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "velitess", - "rsa.time.endtime": "2018-03-11T02:28:49.000Z", - "rsa.time.starttime": "2018-03-11T02:28:49.000Z", - "service.type": "barracuda", - "source.ip": "10.103.69.44", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " SCAN", - "event.code": "uptatema", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: aveni[10.29.155.171] uptatema 1521970284 1521970284 SCAN oeni tdol sit tiaec 6 23 oremagna3521.mail.home asiar", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4563, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "aveni", - "oremagna3521.mail.home" - ], - "related.ip": [ - "10.29.155.171" - ], - "rsa.db.index": "asiar", - "rsa.email.email_dst": "sit", - "rsa.email.email_src": "tdol", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Per-User Quarantined Message", - "rsa.misc.reference_id": "uptatema", - "rsa.misc.result": "Send EHLO/HELO First", - "rsa.misc.result_code": "23", - "rsa.network.domain": "oremagna3521.mail.home", - "rsa.time.endtime": "2018-03-25T09:31:24.000Z", - "rsa.time.starttime": "2018-03-25T09:31:24.000Z", - "server.domain": "oremagna3521.mail.home", - "server.registered_domain": "mail.home", - "server.subdomain": "oremagna3521", - "server.top_level_domain": "home", - "service.type": "barracuda", - "source.ip": "10.29.155.171", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "aveni" - }, - { - "event.action": " RECV", - "event.code": "nonp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: [10.145.193.93] nonp 1523205238 1523205238 RECV labo ulapar aboreetd", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4689, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.145.193.93" - ], - "rsa.db.index": "aboreetd", - "rsa.email.email_dst": "ulapar", - "rsa.email.email_src": "labo", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "nonp", - "rsa.time.endtime": "2018-04-08T16:33:58.000Z", - "rsa.time.starttime": "2018-04-08T16:33:58.000Z", - "service.type": "barracuda", - "source.ip": "10.145.193.93", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " RECV", - "event.code": "exeacom", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1[ama]: uatur[10.143.79.226] exeacom 1524440192 1524440192 RECV roidents tem dol", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4773, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.143.79.226" - ], - "related.user": [ - "uatur" - ], - "rsa.db.index": "dol", - "rsa.email.email_dst": "tem", - "rsa.email.email_src": "roidents", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "exeacom", - "rsa.time.endtime": "2018-04-22T23:36:32.000Z", - "rsa.time.starttime": "2018-04-22T23:36:32.000Z", - "service.type": "barracuda", - "source.ip": "10.143.79.226", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "uatur" - }, - { - "event.action": "FAILED_LOGIN", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.30.25.84] FAILED_LOGIN (utlab)", - "event.outcome": "failure", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4866, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.30.25.84" - ], - "related.user": [ - "utlab" - ], - "rsa.internal.messageid": "web", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "FAILED_LOGIN" - ], - "service.type": "barracuda", - "source.ip": "10.30.25.84", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "utlab" - }, - { - "event.action": " RECV", - "event.code": "bor", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: [10.141.225.182] bor 1526910101 1526910101 RECV rauto ationev 8 57 uaUten", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4906, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.141.225.182" - ], - "rsa.db.index": "uaUten", - "rsa.email.email_dst": "ationev", - "rsa.email.email_src": "rauto", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.disposition": "Encrypted Message", - "rsa.misc.reference_id": "bor", - "rsa.misc.result": "TLS Already Active", - "rsa.misc.result_code": "57", - "rsa.time.endtime": "2018-05-21T13:41:41.000Z", - "rsa.time.starttime": "2018-05-21T13:41:41.000Z", - "service.type": "barracuda", - "source.ip": "10.141.225.182", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (dun.exe) queued as reprehe", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 4995, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "dun.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "CHANGE", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.90.9.88] global CHANGE umexerc (oremipsu)", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5040, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.90.9.88" - ], - "rsa.db.index": "oremipsu", - "rsa.internal.messageid": "web", - "rsa.misc.action": [ - "CHANGE" - ], - "rsa.misc.category": "umexerc", - "service.type": "barracuda", - "source.ip": "10.90.9.88", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (amco.exe) queued as ssecillu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5091, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "amco.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (olo.exe) queued as psumqu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5138, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "olo.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[rationev]: 10.226.20.199 tatem untutlab allow eveli 2 lillum 7809 1.2000 uisaute imide", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5182, - "network.bytes": 7809, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.2000", - "related.ip": [ - "10.226.20.199" - ], - "rsa.db.index": "imide", - "rsa.email.email_src": "uisaute", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Rejected Message", - "rsa.misc.log_session_id": "lillum", - "rsa.misc.version": "1.2000", - "service.type": "barracuda", - "source.ip": "10.226.20.199", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "CHANGE", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.134.140.191] global CHANGE nte (mvel)", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5281, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.134.140.191" - ], - "rsa.db.index": "mvel", - "rsa.internal.messageid": "web", - "rsa.misc.action": [ - "CHANGE" - ], - "rsa.misc.category": "nte", - "service.type": "barracuda", - "source.ip": "10.134.140.191", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "nimadmin", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp[conse]: 10.252.40.172 nimadmin isiu licabo cancel etdolor 3 dic cola amcor", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5328, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.252.40.172" - ], - "rsa.db.index": "amcor", - "rsa.internal.messageid": "outbound/smtp", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.log_session_id": "dic", - "rsa.misc.reference_id": "nimadmin", - "rsa.misc.result_code": "cola", - "service.type": "barracuda", - "source.ip": "10.252.40.172", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "nisiut", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[xea]: ites[10.126.26.131] nisiut 1536789735 1536789735 accept teturad perspici itation sequatD 5 24 isciv rroqu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5417, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.126.26.131" - ], - "related.user": [ - "ites" - ], - "rsa.db.index": "rroqu", - "rsa.email.email_dst": "itation", - "rsa.email.email_src": "perspici", - "rsa.internal.messageid": "scan", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.reference_id": "nisiut", - "rsa.misc.result": "Need MAIL Command", - "rsa.misc.result_code": "24", - "rsa.time.endtime": "2018-09-12T22:02:15.000Z", - "rsa.time.starttime": "2018-09-12T22:02:15.000Z", - "service.type": "barracuda", - "source.ip": "10.126.26.131", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "ites" - }, - { - "event.action": "accept", - "event.code": "reetd", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[rExc]: iusmo[10.187.210.173] reetd 1538024689 1538024689 accept ulpa sitam rad loi 2 15 Nequepor SZ:eirure SUBJ:deserun", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5534, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.187.210.173" - ], - "related.user": [ - "iusmo" - ], - "rsa.email.email_dst": "rad", - "rsa.email.email_src": "sitam", - "rsa.email.subject": "deserun", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Blocked Message", - "rsa.misc.reference_id": "reetd", - "rsa.misc.result": "Sender Address", - "rsa.misc.result_code": "15", - "rsa.time.endtime": "2018-09-27T05:04:49.000Z", - "rsa.time.starttime": "2018-09-27T05:04:49.000Z", - "service.type": "barracuda", - "source.ip": "10.187.210.173", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "iusmo" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (orroq.exe) queued as vitaedic", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5659, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "orroq.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (orem.exe) queued as rcit", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5707, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "orem.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "atise", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[untincul]: ssecil[10.180.147.129] atise 1541729552 1541729552 allow umetMalo oluptas emvele isnost 2 5 ido emqu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5750, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.180.147.129" - ], - "related.user": [ - "ssecil" - ], - "rsa.db.index": "emqu", - "rsa.email.email_dst": "emvele", - "rsa.email.email_src": "oluptas", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Blocked Message", - "rsa.misc.reference_id": "atise", - "rsa.misc.result": "Too Many Message In Session", - "rsa.misc.result_code": "5", - "rsa.time.endtime": "2018-11-09T02:12:32.000Z", - "rsa.time.starttime": "2018-11-09T02:12:32.000Z", - "service.type": "barracuda", - "source.ip": "10.180.147.129", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "ssecil" - }, - { - "event.action": "cancel", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[exeaco]: 10.99.17.210 olorsit tore cancel illu 4 turadip 688 1.7484 boreetdo undeom", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5867, - "network.bytes": 688, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.7484", - "related.ip": [ - "10.99.17.210" - ], - "rsa.db.index": "undeom", - "rsa.email.email_src": "boreetdo", - "rsa.internal.messageid": "notify/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.disposition": "Expired Message", - "rsa.misc.log_session_id": "turadip", - "rsa.misc.version": "1.7484", - "service.type": "barracuda", - "source.ip": "10.99.17.210", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[uov]: 10.230.46.162 sBono loremqu accept quunt 3 siuta 1107 1.2607 dquia temporin", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 5963, - "network.bytes": 1107, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.2607", - "related.ip": [ - "10.230.46.162" - ], - "rsa.db.index": "temporin", - "rsa.email.email_src": "dquia", - "rsa.internal.messageid": "notify/smtp", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.log_session_id": "siuta", - "rsa.misc.version": "1.2607", - "service.type": "barracuda", - "source.ip": "10.230.46.162", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "rum", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[nimveni]: idi[10.96.135.47] rum 1545434414 1545434414 accept eporroq ulla iqu oin 1 55 cingel modocon", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6057, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.96.135.47" - ], - "related.user": [ - "idi" - ], - "rsa.db.index": "modocon", - "rsa.email.email_dst": "iqu", - "rsa.email.email_src": "ulla", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Aborted Message", - "rsa.misc.reference_id": "rum", - "rsa.misc.result": "Invalid Parameter Syntax", - "rsa.misc.result_code": "55", - "rsa.time.endtime": "2018-12-21T23:20:14.000Z", - "rsa.time.starttime": "2018-12-21T23:20:14.000Z", - "service.type": "barracuda", - "source.ip": "10.96.135.47", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "idi" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (atv.exe) queued as onu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6164, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "atv.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "nsec", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: obeataev[10.139.127.232] nsec 1547904323 1547904323 cancel maperi agnaaliq tlaboree norumet 7 48 tin SZ:fugitse SUBJ:imad", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6205, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "obeataev" - ], - "related.ip": [ - "10.139.127.232" - ], - "rsa.email.email_dst": "tlaboree", - "rsa.email.email_src": "agnaaliq", - "rsa.email.subject": "imad", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.disposition": "Whitelisted Message", - "rsa.misc.reference_id": "nsec", - "rsa.misc.result": "DATA Syntax Error", - "rsa.misc.result_code": "48", - "rsa.time.endtime": "2019-01-19T13:25:23.000Z", - "rsa.time.starttime": "2019-01-19T13:25:23.000Z", - "service.type": "barracuda", - "source.ip": "10.139.127.232", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "obeataev" - }, - { - "event.action": " SCAN", - "event.code": "atu", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: inv[10.163.209.70] atu 1549139277 1549139277 SCAN lloin remipsum tempor citatio 0 57 mveniamq SZ:taedict SUBJ:edquian", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6333, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "inv" - ], - "related.ip": [ - "10.163.209.70" - ], - "rsa.email.email_dst": "tempor", - "rsa.email.email_src": "remipsum", - "rsa.email.subject": "edquian", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Allowed Message", - "rsa.misc.reference_id": "atu", - "rsa.misc.result": "TLS Already Active", - "rsa.misc.result_code": "57", - "rsa.time.endtime": "2019-02-02T20:27:57.000Z", - "rsa.time.starttime": "2019-02-02T20:27:57.000Z", - "service.type": "barracuda", - "source.ip": "10.163.209.70", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "inv" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (mipsamvo.exe) queued as eiusmod", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6466, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "mipsamvo.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "umetMal", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[avolu]: Except[10.191.7.121] umetMal 1551609186 1551609186 accept sciun metcons itasper uae 2 21 uia iciad", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6516, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.191.7.121" - ], - "related.user": [ - "Except" - ], - "rsa.db.index": "iciad", - "rsa.email.email_dst": "itasper", - "rsa.email.email_src": "metcons", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Blocked Message", - "rsa.misc.reference_id": "umetMal", - "rsa.misc.result": "Bad Address Syntax", - "rsa.misc.result_code": "21", - "rsa.time.endtime": "2019-03-03T10:33:06.000Z", - "rsa.time.starttime": "2019-03-03T10:33:06.000Z", - "service.type": "barracuda", - "source.ip": "10.191.7.121", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "Except" - }, - { - "event.action": " RECV", - "event.code": "gnaa", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: [10.157.196.101] gnaa 1552844140 1552844140 RECV mod doei cipitl", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6628, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.157.196.101" - ], - "rsa.db.index": "cipitl", - "rsa.email.email_dst": "doei", - "rsa.email.email_src": "mod", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "gnaa", - "rsa.time.endtime": "2019-03-17T17:35:40.000Z", - "rsa.time.starttime": "2019-03-17T17:35:40.000Z", - "service.type": "barracuda", - "source.ip": "10.157.196.101", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "CHANGE", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.171.72.5] global CHANGE eprehend (asnu)", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6708, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.171.72.5" - ], - "rsa.db.index": "asnu", - "rsa.internal.messageid": "web", - "rsa.misc.action": [ - "CHANGE" - ], - "rsa.misc.category": "eprehend", - "service.type": "barracuda", - "source.ip": "10.171.72.5", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "mquisn", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: eritatis[10.209.184.60] mquisn 1555314049 1555314049 cancel uto emUte molestia quir 4 18 emip SZ:ver SUBJ:erc", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6757, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "eritatis" - ], - "related.ip": [ - "10.209.184.60" - ], - "rsa.email.email_dst": "molestia", - "rsa.email.email_src": "emUte", - "rsa.email.subject": "erc", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.disposition": "Tagged Message", - "rsa.misc.reference_id": "mquisn", - "rsa.misc.result": "Need Fully Qualified Sender", - "rsa.misc.result_code": "18", - "rsa.time.endtime": "2019-04-15T07:40:49.000Z", - "rsa.time.starttime": "2019-04-15T07:40:49.000Z", - "service.type": "barracuda", - "source.ip": "10.209.184.60", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "eritatis" - }, - { - "event.action": " RECV", - "event.code": "isqua", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1[dolorsit]: archite[10.143.228.97] isqua 1556549003 1556549003 RECV uta emo itq", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6873, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.143.228.97" - ], - "related.user": [ - "archite" - ], - "rsa.db.index": "itq", - "rsa.email.email_dst": "emo", - "rsa.email.email_src": "uta", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "isqua", - "rsa.time.endtime": "2019-04-29T14:43:23.000Z", - "rsa.time.starttime": "2019-04-29T14:43:23.000Z", - "service.type": "barracuda", - "source.ip": "10.143.228.97", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "archite" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (ntexpl.exe) queued as dunt", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 6966, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "ntexpl.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "block", - "event.code": "tetur", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: plic[10.17.87.79] tetur 1559018911 1559018911 block amali ate idolor ratvolu 7 64 onse olorem", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7011, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "plic" - ], - "related.ip": [ - "10.17.87.79" - ], - "rsa.db.index": "olorem", - "rsa.email.email_dst": "idolor", - "rsa.email.email_src": "ate", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.disposition": "Whitelisted Message", - "rsa.misc.reference_id": "tetur", - "rsa.misc.result": "Recipient Verification Unavailable", - "rsa.misc.result_code": "64", - "rsa.time.endtime": "2019-05-28T04:48:31.000Z", - "rsa.time.starttime": "2019-05-28T04:48:31.000Z", - "service.type": "barracuda", - "source.ip": "10.17.87.79", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "plic" - }, - { - "event.action": "FAILED_LOGIN", - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: [10.163.18.29] FAILED_LOGIN (nim)", - "event.outcome": "failure", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7111, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.163.18.29" - ], - "related.user": [ - "nim" - ], - "rsa.internal.messageid": "web", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "FAILED_LOGIN" - ], - "service.type": "barracuda", - "source.ip": "10.163.18.29", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "nim" - }, - { - "event.code": "web", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "web: Retention violating accounts: erspi total", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7150, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "rsa.internal.messageid": "web", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (billoi.exe) queued as moles", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7197, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "billoi.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "etconsec", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: taedi[10.17.98.243] etconsec 1563958728 1563958728 cancel ill mporinc onsectet idolo 8 55 docon SZ:mdolore SUBJ:eosquira", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7243, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "taedi" - ], - "related.ip": [ - "10.17.98.243" - ], - "rsa.email.email_dst": "onsectet", - "rsa.email.email_src": "mporinc", - "rsa.email.subject": "eosquira", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.disposition": "Encrypted Message", - "rsa.misc.reference_id": "etconsec", - "rsa.misc.result": "Invalid Parameter Syntax", - "rsa.misc.result_code": "55", - "rsa.time.endtime": "2019-07-24T08:58:48.000Z", - "rsa.time.starttime": "2019-07-24T08:58:48.000Z", - "service.type": "barracuda", - "source.ip": "10.17.98.243", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "taedi" - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (apariatu.exe) queued as lorsita", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7370, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "apariatu.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (ever.exe) queued as tali", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7420, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "ever.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " RECV", - "event.code": "onnu", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1[mipsumqu]: tatio[10.181.247.224] onnu 1567663591 1567663591 RECV olorema aquiof ende", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7463, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.181.247.224" - ], - "related.user": [ - "tatio" - ], - "rsa.db.index": "ende", - "rsa.email.email_dst": "aquiof", - "rsa.email.email_src": "olorema", - "rsa.internal.messageid": "inbound/pass1", - "rsa.misc.action": [ - " RECV" - ], - "rsa.misc.reference_id": "onnu", - "rsa.time.endtime": "2019-09-05T06:06:31.000Z", - "rsa.time.starttime": "2019-09-05T06:06:31.000Z", - "service.type": "barracuda", - "source.ip": "10.181.247.224", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "tatio" - }, - { - "event.action": "deny", - "event.code": "ventore", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan[ugitse]: quiineav[10.235.116.121] ventore 1568898545 1568898545 deny obea emp agnaaliq est 0 73 aev SZ:inrepr SUBJ:mol", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7562, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.235.116.121" - ], - "related.user": [ - "quiineav" - ], - "rsa.email.email_dst": "agnaaliq", - "rsa.email.email_src": "emp", - "rsa.email.subject": "mol", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "Allowed Message", - "rsa.misc.reference_id": "ventore", - "rsa.misc.result": "System Busy", - "rsa.misc.result_code": "73", - "rsa.time.endtime": "2019-09-19T13:09:05.000Z", - "rsa.time.starttime": "2019-09-19T13:09:05.000Z", - "service.type": "barracuda", - "source.ip": "10.235.116.121", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "user.name": "quiineav" - }, - { - "destination.ip": "10.1.6.115", - "event.action": "allow", - "event.code": "llit", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "outbound/smtp: 10.178.30.158 llit tenimad sitametc allow onproide 2 cillumd riosa Ok: queued as tNe #to#10.1.6.115", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7686, - "network.direction": "outbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.1.6.115", - "10.178.30.158" - ], - "rsa.internal.messageid": "outbound/smtp", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "Rejected Message", - "rsa.misc.log_session_id": "cillumd", - "rsa.misc.reference_id": "llit", - "rsa.misc.result_code": "riosa", - "service.type": "barracuda", - "source.ip": "10.178.30.158", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "notify/smtp", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "notify/smtp[rautod]: 10.124.32.120 lapar ritati accept qui 3 mullam 4965 1.4254 meaque uid", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7801, - "network.bytes": 4965, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "observer.version": "1.4254", - "related.ip": [ - "10.124.32.120" - ], - "rsa.db.index": "uid", - "rsa.email.email_src": "meaque", - "rsa.internal.messageid": "notify/smtp", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.log_session_id": "mullam", - "rsa.misc.version": "1.4254", - "service.type": "barracuda", - "source.ip": "10.124.32.120", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (ataevita.exe) queued as oremqu", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7892, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "ataevita.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.code": "reports", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "reports: REPORTS (velitsed.exe) queued as magnaali", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7941, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "process.name": "velitsed.exe", - "rsa.internal.event_desc": "report queued", - "rsa.internal.messageid": "reports", - "service.type": "barracuda", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ] - }, - { - "event.action": " SCAN", - "event.code": "enbyCi", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "inbound/pass1: der[10.77.182.191] enbyCi 1575073317 1575073317 SCAN quameiu diduntu eiusmod itation 8 79 piciatis2460.api.host iusmodt", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 7992, - "network.direction": "inbound", - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "der", - "piciatis2460.api.host" - ], - "related.ip": [ - "10.77.182.191" - ], - "rsa.db.index": "iusmodt", - "rsa.email.email_dst": "eiusmod", - "rsa.email.email_src": "diduntu", - "rsa.internal.messageid": "inbound/pass1", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - " SCAN" - ], - "rsa.misc.disposition": "Encrypted Message", - "rsa.misc.reference_id": "enbyCi", - "rsa.misc.result": "Attachment Content", - "rsa.misc.result_code": "79", - "rsa.network.domain": "piciatis2460.api.host", - "rsa.time.endtime": "2019-11-30T00:21:57.000Z", - "rsa.time.starttime": "2019-11-30T00:21:57.000Z", - "server.domain": "piciatis2460.api.host", - "server.registered_domain": "api.host", - "server.subdomain": "piciatis2460", - "server.top_level_domain": "host", - "service.type": "barracuda", - "source.ip": "10.77.182.191", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "der" - }, - { - "event.action": "accept", - "event.code": "tiumd", - "event.dataset": "barracuda.spamfirewall", - "event.module": "barracuda", - "event.original": "scan: iame[10.193.110.71] tiumd 1576308271 1576308271 accept loinve tanimid isnostru nofdeFi 3 5 saqu remips", - "fileset.name": "spamfirewall", - "input.type": "log", - "log.offset": 8127, - "observer.product": "Spam", - "observer.type": "Anti-Virus", - "observer.vendor": "Barracuda", - "related.hosts": [ - "iame" - ], - "related.ip": [ - "10.193.110.71" - ], - "rsa.db.index": "remips", - "rsa.email.email_dst": "isnostru", - "rsa.email.email_src": "tanimid", - "rsa.internal.messageid": "scan", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "Quarantined Message", - "rsa.misc.reference_id": "tiumd", - "rsa.misc.result": "Too Many Message In Session", - "rsa.misc.result_code": "5", - "rsa.time.endtime": "2019-12-14T07:24:31.000Z", - "rsa.time.starttime": "2019-12-14T07:24:31.000Z", - "service.type": "barracuda", - "source.ip": "10.193.110.71", - "tags": [ - "barracuda.spamfirewall", - "forwarded" - ], - "url.domain": "iame" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/barracuda/waf/_meta/fields.yml b/x-pack/filebeat/module/barracuda/waf/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/barracuda/waf/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/barracuda/waf/config/input.yml b/x-pack/filebeat/module/barracuda/waf/config/input.yml deleted file mode 100644 index a4c5ddb1b83..00000000000 --- a/x-pack/filebeat/module/barracuda/waf/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Barracuda" - product: "Web" - type: "WAF" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/barracuda/waf/config/liblogparser.js - - ${path.home}/module/barracuda/waf/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/barracuda/waf/config/liblogparser.js b/x-pack/filebeat/module/barracuda/waf/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/barracuda/waf/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{severity->} %{event_type->} %{saddr->} %{sport->} %{rulename->} %{rule_group->} %{action->} %{context->} %{p0}"); - -var dup13 = match("MESSAGE#84:HEADER_COUNT_EXCEEDED/1_0", "nwparser.p0", "\"[%{result}]\" %{p0}"); - -var dup14 = match("MESSAGE#84:HEADER_COUNT_EXCEEDED/1_1", "nwparser.p0", "[%{result}] %{p0}"); - -var dup15 = match("MESSAGE#84:HEADER_COUNT_EXCEEDED/2", "nwparser.p0", "%{web_method->} %{url->} %{protocol->} - %{stransaddr->} %{stransport->} %{web_referer}"); - -var dup16 = match("MESSAGE#85:CROSS_SITE_SCRIPTING_IN_PARAM:01/2", "nwparser.p0", "%{web_method->} %{url->} %{protocol->} \"%{user_agent}\" %{stransaddr->} %{stransport->} %{web_referer}"); - -var dup17 = setc("eventcategory","1204000000"); - -var dup18 = match("MESSAGE#118:TR_Logs:01/1_0", "nwparser.p0", "%{stransport->} %{content_type}"); - -var dup19 = match_copy("MESSAGE#118:TR_Logs:01/1_1", "nwparser.p0", "stransport"); - -var dup20 = setf("msg_id","web_method"); - -var dup21 = setc("category","TR"); - -var dup22 = setc("vid","TR_Logs"); - -var dup23 = linear_select([ - dup13, - dup14, -]); - -var dup24 = match("MESSAGE#103:NO_DOMAIN_MATCH_IN_PROFILE", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{severity->} %{event_type->} %{saddr->} %{sport->} %{rulename->} %{rule_group->} %{action->} %{context->} [%{result}] %{web_method->} %{url->} %{protocol->} \"%{user_agent}\" %{stransaddr->} %{stransport->} %{web_referer}", processor_chain([ - dup17, - dup8, -])); - -var dup25 = linear_select([ - dup18, - dup19, -]); - -var dup26 = all_match({ - processors: [ - dup12, - dup23, - dup15, - ], - on_success: processor_chain([ - dup11, - dup8, - ]), -}); - -var dup27 = all_match({ - processors: [ - dup12, - dup23, - dup16, - ], - on_success: processor_chain([ - dup11, - dup8, - ]), -}); - -var hdr1 = match("HEADER#0:0001", "message", "%{messageid}:%{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(":"), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0005", "message", "time=%{hfld1->} %{hfld2->} %{timezone->} Unit=%{messageid->} %{payload}", processor_chain([ - setc("header_id","0005"), -])); - -var hdr3 = match("HEADER#2:0003", "message", "%{hfld9->} %{hfld10->} %{hfld11->} %{hfld12->} %{hhost->} %{hfld7->} %{hfld8}.%{hfld2->} %{hfld3->} %{hfld4->} %{hfld5->} %{hfld6->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0003"), - dup1, -])); - -var hdr4 = match("HEADER#3:0002", "message", "%{hhost->} %{hfld7->} %{hfld8}.%{hfld2->} %{hfld3->} %{hfld4->} %{hfld5->} %{hfld6->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0002"), - dup1, -])); - -var hdr5 = match("HEADER#4:0009", "message", "%{hhost->} %{hfld7->} %{hfld8}.%{hfld2->} %{hfld3->} TR %{hfld5->} %{hfld6->} %{hfld8->} %{p0}", processor_chain([ - setc("header_id","0009"), - dup2, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld7"), - constant(" "), - field("hfld8"), - constant("."), - field("hfld2"), - constant(" "), - field("hfld3"), - constant(" TR "), - field("hfld5"), - constant(" "), - field("hfld6"), - constant(" "), - field("hfld8"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr6 = match("HEADER#5:0007", "message", "%{hhost->} %{hfld7->} %{hfld8}.%{hfld2->} %{hfld3->} AUDIT %{hfld5->} %{hfld6->} %{hfld8->} %{p0}", processor_chain([ - setc("header_id","0007"), - dup2, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld7"), - constant(" "), - field("hfld8"), - constant("."), - field("hfld2"), - constant(" "), - field("hfld3"), - constant(" AUDIT "), - field("hfld5"), - constant(" "), - field("hfld6"), - constant(" "), - field("hfld8"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr7 = match("HEADER#6:0008", "message", "%{hhost->} %{hfld7->} %{hfld8}.%{hfld2->} %{hfld3->} WF %{hfld5->} %{hfld6->} %{hfld8->} %{p0}", processor_chain([ - setc("header_id","0008"), - dup2, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld7"), - constant(" "), - field("hfld8"), - constant("."), - field("hfld2"), - constant(" "), - field("hfld3"), - constant(" WF "), - field("hfld5"), - constant(" "), - field("hfld6"), - constant(" "), - field("hfld8"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr8 = match("HEADER#7:0006", "message", "%{hmonth->} %{hday->} %{htime->} BARRACUDAWAF %{hhost->} %{hdate->} %{htime->} %{htimezone->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0006"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hhost"), - constant(" "), - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("htimezone"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr9 = match("HEADER#8:0004", "message", "%{hfld9->} %{hfld10->} %{hfld11->} %{hhost->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0004"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld10"), - constant(" "), - field("hfld11"), - constant(" "), - field("hhost"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, - hdr5, - hdr6, - hdr7, - hdr8, - hdr9, -]); - -var part1 = match("MESSAGE#0:UPDATE", "nwparser.payload", "UPDATE: [ALERT:%{fld3}] New attack definition version %{version->} is available", processor_chain([ - setc("eventcategory","1502030000"), - setc("event_description","UPDATE: ALERT New attack definition version is available"), -])); - -var msg1 = msg("UPDATE", part1); - -var part2 = match("MESSAGE#1:STM:01", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} [ALERT:%{id}] Server %{daddr}:%{dport->} is disabled by out of band monitor ( new mode out_of_service_all ) Reason:%{result}", processor_chain([ - setc("eventcategory","1603000000"), - setc("event_description","STM: LB Server disabled by out of band monitor"), -])); - -var msg2 = msg("STM:01", part2); - -var part3 = match("MESSAGE#2:STM:02", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} Server %{saddr->} is created.", processor_chain([ - dup3, - setc("event_description","STM: LB Server created."), -])); - -var msg3 = msg("STM:02", part3); - -var part4 = match("MESSAGE#3:STM:03", "nwparser.payload", "STM: SSKey-%{fld1->} %{fld2->} Cookie Encryption Key has already expired", processor_chain([ - setc("eventcategory","1613030100"), - setc("event_description","STM: SSKEY Cookie Encryption Key has already expired."), -])); - -var msg4 = msg("STM:03", part4); - -var part5 = match("MESSAGE#4:STM:04", "nwparser.payload", "STM: FAILOVE-%{fld1->} %{fld2->} Module CookieKey registered with Stateful Failover module.", processor_chain([ - dup4, - setc("event_description","STM:FAILOVE Module CookieKey registered with Stateful Failover module."), -])); - -var msg5 = msg("STM:04", part5); - -var part6 = match("MESSAGE#5:STM:05", "nwparser.payload", "STM: FEHCMON-%{fld1->} %{fld2->} FEHC Monitor Module initialized.", processor_chain([ - dup3, - setc("event_description","STM:FECHMON FEHC Monitor Module initialized."), -])); - -var msg6 = msg("STM:05", part6); - -var part7 = match("MESSAGE#6:STM:06", "nwparser.payload", "STM: FAILOVE-%{fld1->} %{fld2->} Stateful Failover Module initialized.", processor_chain([ - dup3, - setc("event_description","STM: FAILOVE Stateful Failover Module initialized."), -])); - -var msg7 = msg("STM:06", part7); - -var part8 = match("MESSAGE#7:STM:07", "nwparser.payload", "STM: SERVICE-%{fld1->} %{fld3->} [%{fld2}] New Service (ID %{fld4}) Created at %{saddr}:%{sport}", processor_chain([ - dup3, - setc("event_description","STM: SERVICE New Service created."), -])); - -var msg8 = msg("STM:07", part8); - -var part9 = match("MESSAGE#8:STM:08", "nwparser.payload", "STM: SSL-%{fld1->} %{fld2->} Ssl Initialization", processor_chain([ - dup4, - setc("event_description","STM: SSL Initialization."), -])); - -var msg9 = msg("STM:08", part9); - -var part10 = match("MESSAGE#9:STM:09", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} LookupServerCtx = %{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB-LookupServerCtx."), -])); - -var msg10 = msg("STM:09", part10); - -var part11 = match("MESSAGE#10:STM:10", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} ParamProtectionClonePatterns: Old:%{change_old}, New:%{change_new}, PatternsNode:%{fld4}", processor_chain([ - dup3, - setc("event_description","STM: aps ParamProtectionClonePatterns values changed."), -])); - -var msg11 = msg("STM:10", part11); - -var part12 = match("MESSAGE#11:STM:11", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} %{obj_name->} SapCtx %{fld3}, SapId %{fld4}", processor_chain([ - dup3, - setc("event_description","STM: aps SapCtx log."), -])); - -var msg12 = msg("STM:11", part12); - -var part13 = match("MESSAGE#12:STM:12", "nwparser.payload", "STM: CACHE-%{fld1->} %{fld2->} %{obj_name->} SapCtx %{fld3}, SapId %{fld4}, Return Code %{result}", processor_chain([ - dup3, - setc("event_description","STM: CACHE SapCtx log."), -])); - -var msg13 = msg("STM:12", part13); - -var part14 = match("MESSAGE#13:STM:13", "nwparser.payload", "STM: FTPSVC-%{fld1->} %{fld2->} Ftp proxy initialized %{info}", processor_chain([ - dup3, - setc("event_description","STM: FTPSVC Ftp proxy initialized."), -])); - -var msg14 = msg("STM:13", part14); - -var part15 = match("MESSAGE#14:STM:14", "nwparser.payload", "STM: STM-%{fld1->} %{fld2->} Secure Traffic Manager Initialization complete: %{info}", processor_chain([ - dup3, - setc("event_description","STM: STM Secure Traffic Manager Initialization complete."), -])); - -var msg15 = msg("STM:14", part15); - -var part16 = match("MESSAGE#15:STM:15", "nwparser.payload", "STM: COOKIE-%{fld1->} %{fld2->} %{obj_name->} = %{info}", processor_chain([ - dup3, - setc("event_description","STM: COOKIE Cookie parameters set."), -])); - -var msg16 = msg("STM:15", part16); - -var part17 = match("MESSAGE#16:STM:16", "nwparser.payload", "STM: WebLog-%{fld1->} %{fld2->} %{obj_name}: SapCtx=%{fld3},SapId=%{fld4}, %{fld5}", processor_chain([ - dup3, - setc("event_description","STM: WebLog Set Sap variable."), -])); - -var msg17 = msg("STM:16", part17); - -var part18 = match("MESSAGE#17:STM:17", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} AddIpsPatternGroup SapCtx : %{fld3}, grp_id : %{fld4}, type : %{fld5->} grp: %{info}", processor_chain([ - dup3, - setc("event_description","STM: aps Set AddIpsPatternGroup."), -])); - -var msg18 = msg("STM:17", part18); - -var part19 = match("MESSAGE#18:STM:18", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} AddPCInfoKeyWordMeta: Info:%{fld3}, Table:%{fld4}", processor_chain([ - dup3, - setc("event_description","STM: aps AddPCInfoKeyWordMeta."), -])); - -var msg19 = msg("STM:18", part19); - -var part20 = match("MESSAGE#19:STM:19", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} AddParamClass: %{fld3}: KeyWords:%{fld4}", processor_chain([ - dup3, - setc("event_description","STM: aps AddParamClass."), -])); - -var msg20 = msg("STM:19", part20); - -var part21 = match("MESSAGE#20:STM:20", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} SetParamClassPatternsAndDFA: Ctx:%{fld3}, type:%{fld4}, dfaId %{fld5}", processor_chain([ - dup3, - setc("event_description","STM: aps AddParamClassPatternsAndDFA."), -])); - -var msg21 = msg("STM:20", part21); - -var part22 = match("MESSAGE#21:STM:21", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} ParamClassClonePatternsInfo: Old:%{fld3}, New:%{fld4}, PatternsNode:%{fld5}", processor_chain([ - dup3, - setc("event_description","STM: aps AddParamClassClonePatternsInfo."), -])); - -var msg22 = msg("STM:21", part22); - -var part23 = match("MESSAGE#22:STM:22", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} SetIpsLogIntrusionOn SapCtx %{fld3}, Return Code %{fld4}", processor_chain([ - dup3, - setc("event_description","STM: aps SetIpsLogIntrusionOn."), -])); - -var msg23 = msg("STM:22", part23); - -var part24 = match("MESSAGE#23:STM:23", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} AddIpsCloakFilterRespHeader [%{fld3}] Ret %{fld4}, SapCtx %{fld5}, sapId %{fld6}", processor_chain([ - dup3, - setc("event_description","STM: aps AddIpsCloakFilterRespHeader."), -])); - -var msg24 = msg("STM:23", part24); - -var part25 = match("MESSAGE#24:STM:24", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} SetIpsTheftPolicy SapCtx %{fld3}, Policy %{fld4}, Return %{fld5}", processor_chain([ - dup3, - setc("event_description","STM: aps SetIpsTheftPolicy."), -])); - -var msg25 = msg("STM:24", part25); - -var part26 = match("MESSAGE#25:STM:25", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} SetIpsTheftPolicyDfa SapCtx %{fld3}, Policy %{fld4}, mode %{fld5}, bytes %{fld6}, Return %{fld7}", processor_chain([ - dup3, - setc("event_description","STM: aps SetIpsTheftPolicyDfa."), -])); - -var msg26 = msg("STM:25", part26); - -var part27 = match("MESSAGE#26:STM:26", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} SetIpsLimitPolicy Return Code %{fld3}", processor_chain([ - dup3, - dup5, -])); - -var msg27 = msg("STM:26", part27); - -var part28 = match("MESSAGE#27:STM:27", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} CreateRC: RC Add policy Success", processor_chain([ - dup3, - setc("event_description","STM: aps CreateRC: RC Add policy Success."), -])); - -var msg28 = msg("STM:27", part28); - -var part29 = match("MESSAGE#28:STM:28", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} SetSap%{info}=%{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB Set Sap command."), -])); - -var msg29 = msg("STM:28", part29); - -var part30 = match("MESSAGE#29:STM:29", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} SetServer%{info}=%{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB Set Server command."), -])); - -var msg30 = msg("STM:29", part30); - -var part31 = match("MESSAGE#30:STM:30", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} AddServer%{info}=%{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB Add Server command."), -])); - -var msg31 = msg("STM:30", part31); - -var part32 = match("MESSAGE#31:STM:31", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} CreateServer =%{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB Create Server command."), -])); - -var msg32 = msg("STM:31", part32); - -var part33 = match("MESSAGE#32:STM:32", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} EnableServer =%{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB Enable Server command."), -])); - -var msg33 = msg("STM:32", part33); - -var part34 = match("MESSAGE#33:STM:33", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} ActiveServerOutOfBandMonitorAttr =%{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB ActiveServerOutOfBandMonitorAttr command."), -])); - -var msg34 = msg("STM:33", part34); - -var part35 = match("MESSAGE#34:STM:34", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} BindServerToSap =%{fld3}", processor_chain([ - dup3, - setc("event_description","STM: LB BindServerToSap command."), -])); - -var msg35 = msg("STM:34", part35); - -var part36 = match("MESSAGE#35:STM:35", "nwparser.payload", "STM: LB-%{fld1->} %{fld2->} [ALERT:%{fld3}] Server %{saddr}:%{sport->} is enabled by out of band monitor. Reason:out of band monitor", processor_chain([ - dup3, - setc("event_description","STM: LB Server is enabled by out of band monitor Reason out of band monitor"), -])); - -var msg36 = msg("STM:35", part36); - -var part37 = match("MESSAGE#36:STM:36", "nwparser.payload", "STM: SERVICE-%{fld1->} %{fld2->} [%{saddr}:%{sport}] Service Started %{fld3}:%{fld4}", processor_chain([ - dup3, - setc("event_description","STM: SERVICE Server service started command."), -])); - -var msg37 = msg("STM:36", part37); - -var part38 = match("MESSAGE#37:STM:37", "nwparser.payload", "STM: RespPage-%{fld1->} %{fld2->} CreateRP: Response Page %{fld3->} created successfully", processor_chain([ - dup3, - setc("event_description","STM: RespPage Response Page created successfully."), -])); - -var msg38 = msg("STM:37", part38); - -var part39 = match("MESSAGE#38:STM:38", "nwparser.payload", "STM: WATRewr-%{fld1->} %{fld2->} AddWATReqRewriteRule AclName [%{fld3}] Ret %{fld4->} SapCtx %{fld5}, SapId %{fld6}", processor_chain([ - dup3, - setc("event_description","STM: AddWATReqRewriteRule AclName."), -])); - -var msg39 = msg("STM:38", part39); - -var part40 = match("MESSAGE#39:STM:39", "nwparser.payload", "STM: WATRewr-%{fld1->} %{fld2->} SetWATReqRewriteRuleNameWithKe AclName [%{fld3}] Ret %{fld4->} SapCtx %{fld5}, SapId %{fld6}", processor_chain([ - dup3, - setc("event_description","STM: SetWATReqRewriteRuleNameWithKe AclName."), -])); - -var msg40 = msg("STM:39", part40); - -var part41 = match("MESSAGE#40:STM:40", "nwparser.payload", "STM: WATRewr-%{fld1->} %{fld2->} SetWATReqRewritePolicyOn - %{fld6->} Ret %{fld3->} SapCtx %{fld4}, SapId %{fld5}", processor_chain([ - dup3, - setc("event_description","STM: SetWATReqRewritePolicyOn."), -])); - -var msg41 = msg("STM:40", part41); - -var part42 = match("MESSAGE#41:STM:41", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} SetIpsOn SapCtx %{fld3}, Return Code %{fld4}", processor_chain([ - dup3, - setc("event_description","STM: aps SetIpsOn."), -])); - -var msg42 = msg("STM:41", part42); - -var part43 = match("MESSAGE#42:STM:42", "nwparser.payload", "STM: aps-%{fld1->} %{fld2->} SetIpsLimitPolicyOn Return Code %{fld3}", processor_chain([ - dup3, - dup5, -])); - -var msg43 = msg("STM:42", part43); - -var part44 = match("MESSAGE#43:STM:43", "nwparser.payload", "STM: WATRewr-%{fld1->} %{fld2->} SetWATRespRewritePolicyOn - %{fld6->} Ret %{fld3->} SapCtx %{fld4}, SapId %{fld5}", processor_chain([ - dup3, - setc("event_description","STM: SetWATRespRewritePolicyOn."), -])); - -var msg44 = msg("STM:43", part44); - -var select2 = linear_select([ - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, - msg18, - msg19, - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, - msg26, - msg27, - msg28, - msg29, - msg30, - msg31, - msg32, - msg33, - msg34, - msg35, - msg36, - msg37, - msg38, - msg39, - msg40, - msg41, - msg42, - msg43, - msg44, -]); - -var part45 = match("MESSAGE#44:STM_WRAPPER:01", "nwparser.payload", "STM_WRAPPER: command(--digest) execution status = %{info}", processor_chain([ - dup3, - setc("event_description","STM_WRAPPER: command execution status."), -])); - -var msg45 = msg("STM_WRAPPER:01", part45); - -var part46 = match("MESSAGE#45:STM_WRAPPER:02", "nwparser.payload", "STM_WRAPPER: [ALERT:%{fld1}] Configuration size is %{fld2->} which exceeds the %{fld3->} safe limit. Please check your configuration.", processor_chain([ - dup6, - setc("event_description","STM_WRAPPER: ALERT Configuration size exceeds the safe memory limit."), -])); - -var msg46 = msg("STM_WRAPPER:02", part46); - -var part47 = match("MESSAGE#46:STM_WRAPPER:03", "nwparser.payload", "STM_WRAPPER: Committing UI configuration.%{}", processor_chain([ - dup3, - setc("event_description","STM_WRAPPER: Committing UI configuration."), -])); - -var msg47 = msg("STM_WRAPPER:03", part47); - -var part48 = match("MESSAGE#47:STM_WRAPPER:04", "nwparser.payload", "STM_WRAPPER: Successfully stopped STM.%{}", processor_chain([ - dup3, - setc("event_description","STM_WRAPPER: Successfully stopped STM."), -])); - -var msg48 = msg("STM_WRAPPER:04", part48); - -var part49 = match("MESSAGE#48:STM_WRAPPER:05", "nwparser.payload", "STM_WRAPPER: Successfully initialized STM.%{}", processor_chain([ - dup3, - setc("event_description","STM_WRAPPER: Successfully initialized STM."), -])); - -var msg49 = msg("STM_WRAPPER:05", part49); - -var part50 = match("MESSAGE#49:STM_WRAPPER:06", "nwparser.payload", "STM_WRAPPER: Initializing STM.%{}", processor_chain([ - dup3, - setc("event_description","STM_WRAPPER: Initializing STM."), -])); - -var msg50 = msg("STM_WRAPPER:06", part50); - -var part51 = match("MESSAGE#50:STM_WRAPPER:07", "nwparser.payload", "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.%{}", processor_chain([ - dup3, - setc("event_description","STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed."), -])); - -var msg51 = msg("STM_WRAPPER:07", part51); - -var select3 = linear_select([ - msg45, - msg46, - msg47, - msg48, - msg49, - msg50, - msg51, -]); - -var part52 = match("MESSAGE#51:CONFIG_AGENT:01", "nwparser.payload", "CONFIG_AGENT: %{fld1->} RPC Name =%{fld2}, RPC Result: %{fld3}", processor_chain([ - dup3, - setc("event_description","CONFIG_AGENT: RPC information."), -])); - -var msg52 = msg("CONFIG_AGENT:01", part52); - -var part53 = match("MESSAGE#52:CONFIG_AGENT:02", "nwparser.payload", "CONFIG_AGENT: %{fld1->} %{fld2->} Received put-tree command", processor_chain([ - dup3, - setc("event_description","CONFIG_AGENT:Received put-tree command."), -])); - -var msg53 = msg("CONFIG_AGENT:02", part53); - -var part54 = match("MESSAGE#53:CONFIG_AGENT:03", "nwparser.payload", "CONFIG_AGENT: %{fld1->} %{fld2->} It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time., %{fld3}", processor_chain([ - dup4, - setc("event_description","It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time."), -])); - -var msg54 = msg("CONFIG_AGENT:03", part54); - -var part55 = match("MESSAGE#54:CONFIG_AGENT:04", "nwparser.payload", "CONFIG_AGENT: %{fld1->} Initiating config_agent database commit phase.", processor_chain([ - dup3, - setc("event_description","CONFIG_AGENT:Initiating config_agent database commit phase."), -])); - -var msg55 = msg("CONFIG_AGENT:04", part55); - -var part56 = match("MESSAGE#55:CONFIG_AGENT:05", "nwparser.payload", "CONFIG_AGENT: %{fld1->} %{fld2->} Update succeeded", processor_chain([ - dup3, - setc("event_description","CONFIG_AGENT:Update succeded."), -])); - -var msg56 = msg("CONFIG_AGENT:05", part56); - -var part57 = match("MESSAGE#56:CONFIG_AGENT:06", "nwparser.payload", "CONFIG_AGENT: %{fld1->} %{fld2->} No rules, %{fld3}", processor_chain([ - dup3, - setc("event_description","CONFIG_AGENT:No rules."), -])); - -var msg57 = msg("CONFIG_AGENT:06", part57); - -var select4 = linear_select([ - msg52, - msg53, - msg54, - msg55, - msg56, - msg57, -]); - -var part58 = match("MESSAGE#57:PROCMON:01", "nwparser.payload", "PROCMON: Started monitoring%{}", processor_chain([ - dup3, - setc("event_description","PROCMON: Started monitoring"), -])); - -var msg58 = msg("PROCMON:01", part58); - -var part59 = match("MESSAGE#58:PROCMON:02", "nwparser.payload", "PROCMON: number of stm worker threads is%{info}", processor_chain([ - dup3, - setc("event_description","PROCMON: number of stm worker threads"), -])); - -var msg59 = msg("PROCMON:02", part59); - -var part60 = match("MESSAGE#59:PROCMON:03", "nwparser.payload", "PROCMON: Monitoring links: %{interface}", processor_chain([ - dup3, - setc("event_description","PROCMON: Monitoring links."), -])); - -var msg60 = msg("PROCMON:03", part60); - -var part61 = match("MESSAGE#60:PROCMON:04", "nwparser.payload", "PROCMON: [ALERT:%{fld1}] %{interface}: link is up", processor_chain([ - dup3, - setc("event_description","PROCMON:Link is up."), -])); - -var msg61 = msg("PROCMON:04", part61); - -var part62 = match("MESSAGE#61:PROCMON:05", "nwparser.payload", "PROCMON: [ALERT:%{fld1}] Firmware storage exceeds %{info}", processor_chain([ - setc("eventcategory","1607000000"), - setc("event_description","PROCMON:Firmware storage exceeding."), -])); - -var msg62 = msg("PROCMON:05", part62); - -var part63 = match("MESSAGE#62:PROCMON:06", "nwparser.payload", "PROCMON: [ALERT:%{fld1}] One of the RAID arrays is degrading.", processor_chain([ - dup6, - setc("event_description","PROCMON:One of the RAID arrays is degrading."), -])); - -var msg63 = msg("PROCMON:06", part63); - -var select5 = linear_select([ - msg58, - msg59, - msg60, - msg61, - msg62, - msg63, -]); - -var part64 = match("MESSAGE#63:BYPASS:01", "nwparser.payload", "BYPASS: State set to normal: starting heartbeat.%{}", processor_chain([ - dup3, - setc("event_description","BYPASS: State set to normal: starting heartbeat."), -])); - -var msg64 = msg("BYPASS:01", part64); - -var part65 = match("MESSAGE#64:BYPASS:02", "nwparser.payload", "BYPASS: Mode change: %{fld1},%{fld2}", processor_chain([ - dup3, - setc("event_description","Mode change."), -])); - -var msg65 = msg("BYPASS:02", part65); - -var part66 = match("MESSAGE#65:BYPASS:03", "nwparser.payload", "BYPASS: Mode set to BYPASS (%{fld2}).", processor_chain([ - dup3, - setc("event_description"," Mode set to BYPASS."), -])); - -var msg66 = msg("BYPASS:03", part66); - -var part67 = match("MESSAGE#66:BYPASS:04", "nwparser.payload", "BYPASS: Mode set to never bypass.%{}", processor_chain([ - dup3, - setc("event_description"," Mode set to never BYPASS."), -])); - -var msg67 = msg("BYPASS:04", part67); - -var select6 = linear_select([ - msg64, - msg65, - msg66, - msg67, -]); - -var part68 = match("MESSAGE#67:INSTALL:01", "nwparser.payload", "INSTALL: Migrating configuration from %{fld2->} to %{fld3}", processor_chain([ - dup3, - setc("event_description"," INSTALL: migrating configuration."), -])); - -var msg68 = msg("INSTALL:01", part68); - -var part69 = match("MESSAGE#68:INSTALL:02", "nwparser.payload", "INSTALL: Loading the snapshot for %{fld2->} release.", processor_chain([ - dup3, - setc("event_description"," INSTALL: Loading snapshot from previous version."), -])); - -var msg69 = msg("INSTALL:02", part69); - -var select7 = linear_select([ - msg68, - msg69, -]); - -var part70 = match("MESSAGE#69:eventmgr:01", "nwparser.payload", "eventmgr: Forwarding log messages to syslog host #%{fld3}, address=%{hostip}", processor_chain([ - dup3, - setc("event_description","eventmgr: Forwarding log messages to syslog host"), -])); - -var msg70 = msg("eventmgr:01", part70); - -var part71 = match("MESSAGE#70:eventmgr:02", "nwparser.payload", "eventmgr: Event manager startup succeeded.%{}", processor_chain([ - dup3, - setc("event_description","eventmgr: Event manager startup succeeded."), -])); - -var msg71 = msg("eventmgr:02", part71); - -var select8 = linear_select([ - msg70, - msg71, -]); - -var part72 = match("MESSAGE#71:CONFIG", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup7, - setc("event_description"," Configuration changes made."), - dup8, -])); - -var msg72 = msg("CONFIG", part72); - -var part73 = match("MESSAGE#72:LOGIN", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - setc("eventcategory","1401060000"), - setc("event_description"," Login."), - dup8, -])); - -var msg73 = msg("LOGIN", part73); - -var part74 = match("MESSAGE#73:SESSION_TIMEOUT", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup9, - setc("event_description"," Session timeout."), - dup8, -])); - -var msg74 = msg("SESSION_TIMEOUT", part74); - -var part75 = match("MESSAGE#74:LOGOUT", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup9, - setc("ec_subject","User"), - setc("ec_activity","Logoff"), - setc("ec_theme","Authentication"), - setc("ec_outcome","Success"), - setc("event_description"," Logout."), - dup8, -])); - -var msg75 = msg("LOGOUT", part75); - -var part76 = match("MESSAGE#75:UNSUCCESSFUL_LOGIN", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - setc("eventcategory","1401030000"), - setc("event_description"," Unsuccessful login."), - dup8, -])); - -var msg76 = msg("UNSUCCESSFUL_LOGIN", part76); - -var part77 = match("MESSAGE#76:TRANSPARENT_MODE", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup10, - setc("event_description"," Operating in Transport Mode"), - dup8, -])); - -var msg77 = msg("TRANSPARENT_MODE", part77); - -var part78 = match("MESSAGE#77:SUPPORT_TUNNEL_OPEN", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup10, - setc("event_description"," Support Tunnel Opened"), - dup8, -])); - -var msg78 = msg("SUPPORT_TUNNEL_OPEN", part78); - -var part79 = match("MESSAGE#78:FIRMWARE_UPDATE", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup10, - setc("event_description"," Firmware Update"), - dup8, -])); - -var msg79 = msg("FIRMWARE_UPDATE", part79); - -var part80 = match("MESSAGE#79:FIRMWARE_REVERT", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup10, - setc("event_description"," Firmware Revert."), - dup8, -])); - -var msg80 = msg("FIRMWARE_REVERT", part80); - -var part81 = match("MESSAGE#80:REBOOT", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup10, - setc("event_description"," System Reboot."), - dup8, -])); - -var msg81 = msg("REBOOT", part81); - -var part82 = match("MESSAGE#81:ROLLBACK", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup10, - setc("event_description"," System ROLLBACK."), - dup8, -])); - -var msg82 = msg("ROLLBACK", part82); - -var part83 = match("MESSAGE#82:HEADER_COUNT_EXCEEDED:01", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{severity->} %{event_type->} %{saddr->} %{sport->} %{rulename->} %{rule_group->} %{action->} %{context->} \"[%{result}]\" %{web_method->} %{url->} %{protocol->} \"%{user_agent}\" %{stransaddr->} %{stransport->} %{web_referer}", processor_chain([ - dup11, - dup8, -])); - -var msg83 = msg("HEADER_COUNT_EXCEEDED:01", part83); - -var part84 = match("MESSAGE#83:HEADER_COUNT_EXCEEDED:02", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{severity->} %{event_type->} %{saddr->} %{sport->} %{rulename->} %{rule_group->} %{action->} %{context->} [%{result}] %{web_method->} %{url->} %{protocol->} \"%{user_agent}\" %{stransaddr->} %{stransport->} %{web_referer}", processor_chain([ - dup11, - dup8, -])); - -var msg84 = msg("HEADER_COUNT_EXCEEDED:02", part84); - -var msg85 = msg("HEADER_COUNT_EXCEEDED", dup26); - -var select9 = linear_select([ - msg83, - msg84, - msg85, -]); - -var msg86 = msg("CROSS_SITE_SCRIPTING_IN_PARAM:01", dup27); - -var msg87 = msg("CROSS_SITE_SCRIPTING_IN_PARAM", dup26); - -var select10 = linear_select([ - msg86, - msg87, -]); - -var msg88 = msg("SQL_INJECTION_IN_URL:01", dup27); - -var msg89 = msg("SQL_INJECTION_IN_URL", dup26); - -var select11 = linear_select([ - msg88, - msg89, -]); - -var msg90 = msg("OS_CMD_INJECTION_IN_URL:01", dup27); - -var msg91 = msg("OS_CMD_INJECTION_IN_URL", dup26); - -var select12 = linear_select([ - msg90, - msg91, -]); - -var msg92 = msg("TILDE_IN_URL:01", dup27); - -var msg93 = msg("TILDE_IN_URL", dup26); - -var select13 = linear_select([ - msg92, - msg93, -]); - -var msg94 = msg("SQL_INJECTION_IN_PARAM:01", dup27); - -var msg95 = msg("SQL_INJECTION_IN_PARAM", dup26); - -var select14 = linear_select([ - msg94, - msg95, -]); - -var part85 = match("MESSAGE#95:OS_CMD_INJECTION_IN_PARAM:01/1_1", "nwparser.p0", "[%{result->} \"] %{p0}"); - -var select15 = linear_select([ - dup13, - part85, - dup14, -]); - -var all1 = all_match({ - processors: [ - dup12, - select15, - dup16, - ], - on_success: processor_chain([ - dup11, - dup8, - ]), -}); - -var msg96 = msg("OS_CMD_INJECTION_IN_PARAM:01", all1); - -var msg97 = msg("OS_CMD_INJECTION_IN_PARAM", dup26); - -var select16 = linear_select([ - msg96, - msg97, -]); - -var msg98 = msg("METHOD_NOT_ALLOWED:01", dup27); - -var msg99 = msg("METHOD_NOT_ALLOWED", dup26); - -var select17 = linear_select([ - msg98, - msg99, -]); - -var msg100 = msg("ERROR_RESPONSE_SUPPRESSED:01", dup27); - -var msg101 = msg("ERROR_RESPONSE_SUPPRESSED", dup26); - -var select18 = linear_select([ - msg100, - msg101, -]); - -var msg102 = msg("DENY_ACL_MATCHED:01", dup27); - -var msg103 = msg("DENY_ACL_MATCHED", dup26); - -var select19 = linear_select([ - msg102, - msg103, -]); - -var msg104 = msg("NO_DOMAIN_MATCH_IN_PROFILE", dup24); - -var msg105 = msg("NO_URL_PROFILE_MATCH", dup24); - -var msg106 = msg("UNRECOGNIZED_COOKIE", dup24); - -var msg107 = msg("HEADER_VALUE_LENGTH_EXCEEDED", dup24); - -var msg108 = msg("UNKNOWN_CONTENT_TYPE", dup24); - -var msg109 = msg("INVALID_URL_ENCODING", dup24); - -var msg110 = msg("INVALID_URL_CHARSET", dup24); - -var msg111 = msg("CROSS_SITE_SCRIPTING_IN_URL:01", dup27); - -var msg112 = msg("CROSS_SITE_SCRIPTING_IN_URL", dup26); - -var select20 = linear_select([ - msg111, - msg112, -]); - -var msg113 = msg("SLASH_DOT_IN_URL:01", dup27); - -var msg114 = msg("SLASH_DOT_IN_URL", dup26); - -var select21 = linear_select([ - msg113, - msg114, -]); - -var part86 = match("MESSAGE#114:SYS", "nwparser.payload", "%{fld9->} %{fld10->} %{timezone->} %{fld11->} %{category->} %{event_type->} %{severity->} %{operation_id->} %{event_description}", processor_chain([ - dup3, - date_time({ - dest: "event_time", - args: ["hfld9","hfld10"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dH,dc(":"),dU,dc(":"),dO], - ], - }), -])); - -var msg115 = msg("SYS", part86); - -var part87 = match("MESSAGE#115:BARRACUDAWAF", "nwparser.payload", "Log=%{event_log->} Severity=%{severity->} Protocol=%{protocol->} SourceIP=%{saddr->} SourcePort=%{sport->} DestIP=%{daddr->} DestPort=%{dport->} Action=%{action->} AdminName=%{administrator->} Details=%{info}", processor_chain([ - dup17, - date_time({ - dest: "event_time", - args: ["hfld1","hfld2"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dH,dc(":"),dU,dc(":"),dO], - ], - }), -])); - -var msg116 = msg("BARRACUDAWAF", part87); - -var part88 = match("MESSAGE#116:Audit_Logs", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} AUDIT %{operation_id->} %{administrator->} %{action->} %{content_type->} %{hostip->} %{fld8->} %{info->} %{obj_type->} %{fld11->} %{obj_name->} \"%{change_old}\" \"%{change_new}\"", processor_chain([ - dup7, - dup8, - setc("category","AUDIT"), - setc("vid","Audit_Logs"), -])); - -var msg117 = msg("Audit_Logs", part88); - -var part89 = match("MESSAGE#117:WF", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} WF %{operation_id->} %{severity->} %{event_type->} %{saddr->} %{sport->} %{rulename->} %{rule_group->} %{action->} %{context->} [%{result}] %{web_method->} %{url->} %{protocol->} \"%{user_agent}\" %{stransaddr->} %{stransport->} %{web_referer}", processor_chain([ - dup17, - dup8, - setc("category","WF"), - setc("vid","WF"), -])); - -var msg118 = msg("WF", part89); - -var part90 = match("MESSAGE#118:TR_Logs:01/0", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} TR %{operation_id->} %{protocol->} %{web_method->} %{saddr->} %{sport->} %{daddr->} %{dport->} %{url->} %{cert_username->} %{logon_id->} %{web_host->} %{web_referer->} %{resultcode->} %{sbytes->} %{rbytes->} \"-\" \"-\" \"%{user_agent}\" %{stransaddr->} %{p0}"); - -var all2 = all_match({ - processors: [ - part90, - dup25, - ], - on_success: processor_chain([ - dup17, - dup20, - dup8, - dup21, - dup22, - ]), -}); - -var msg119 = msg("TR_Logs:01", all2); - -var part91 = match("MESSAGE#119:TR_Logs:02/0", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} TR %{operation_id->} %{protocol->} %{web_method->} %{saddr->} %{sport->} %{daddr->} %{dport->} %{url->} %{cert_username->} %{logon_id->} %{web_host->} %{web_referer->} %{resultcode->} %{sbytes->} %{rbytes->} %{web_query->} \"-\" \"%{user_agent}\" %{stransaddr->} %{p0}"); - -var all3 = all_match({ - processors: [ - part91, - dup25, - ], - on_success: processor_chain([ - dup17, - dup20, - dup8, - dup21, - dup22, - ]), -}); - -var msg120 = msg("TR_Logs:02", all3); - -var part92 = match("MESSAGE#120:TR_Logs:03/0", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} TR %{operation_id->} %{protocol->} %{web_method->} %{saddr->} %{sport->} %{daddr->} %{dport->} %{url->} %{cert_username->} %{logon_id->} %{web_host->} %{web_referer->} %{resultcode->} %{sbytes->} %{rbytes->} \"-\" %{web_cookie->} \"%{user_agent}\" %{stransaddr->} %{p0}"); - -var all4 = all_match({ - processors: [ - part92, - dup25, - ], - on_success: processor_chain([ - dup17, - dup20, - dup8, - dup21, - dup22, - ]), -}); - -var msg121 = msg("TR_Logs:03", all4); - -var part93 = match("MESSAGE#121:TR_Logs/0", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} TR %{operation_id->} %{protocol->} %{web_method->} %{saddr->} %{sport->} %{daddr->} %{dport->} %{url->} %{cert_username->} %{logon_id->} %{web_host->} %{web_referer->} %{resultcode->} %{sbytes->} %{rbytes->} %{web_query->} %{web_cookie->} \"%{user_agent}\" %{stransaddr->} %{p0}"); - -var all5 = all_match({ - processors: [ - part93, - dup25, - ], - on_success: processor_chain([ - dup17, - dup20, - dup8, - dup21, - dup22, - ]), -}); - -var msg122 = msg("TR_Logs", all5); - -var select22 = linear_select([ - msg117, - msg118, - msg119, - msg120, - msg121, - msg122, -]); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "BARRACUDAWAF": msg116, - "BARRACUDA_GENRIC": select22, - "BYPASS": select6, - "CONFIG": msg72, - "CONFIG_AGENT": select4, - "CROSS_SITE_SCRIPTING_IN_PARAM": select10, - "CROSS_SITE_SCRIPTING_IN_URL": select20, - "DENY_ACL_MATCHED": select19, - "ERROR_RESPONSE_SUPPRESSED": select18, - "FIRMWARE_REVERT": msg80, - "FIRMWARE_UPDATE": msg79, - "HEADER_COUNT_EXCEEDED": select9, - "HEADER_VALUE_LENGTH_EXCEEDED": msg107, - "INSTALL": select7, - "INVALID_URL_CHARSET": msg110, - "INVALID_URL_ENCODING": msg109, - "LOGIN": msg73, - "LOGOUT": msg75, - "METHOD_NOT_ALLOWED": select17, - "NO_DOMAIN_MATCH_IN_PROFILE": msg104, - "NO_URL_PROFILE_MATCH": msg105, - "OS_CMD_INJECTION_IN_PARAM": select16, - "OS_CMD_INJECTION_IN_URL": select12, - "PROCMON": select5, - "REBOOT": msg81, - "ROLLBACK": msg82, - "SESSION_TIMEOUT": msg74, - "SLASH_DOT_IN_URL": select21, - "SQL_INJECTION_IN_PARAM": select14, - "SQL_INJECTION_IN_URL": select11, - "STM": select2, - "STM_WRAPPER": select3, - "SUPPORT_TUNNEL_OPEN": msg78, - "SYS": msg115, - "TILDE_IN_URL": select13, - "TRANSPARENT_MODE": msg77, - "UNKNOWN_CONTENT_TYPE": msg108, - "UNRECOGNIZED_COOKIE": msg106, - "UNSUCCESSFUL_LOGIN": msg76, - "UPDATE": msg1, - "eventmgr": select8, - }), -]); - -var part94 = match("MESSAGE#84:HEADER_COUNT_EXCEEDED/0", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{severity->} %{event_type->} %{saddr->} %{sport->} %{rulename->} %{rule_group->} %{action->} %{context->} %{p0}"); - -var part95 = match("MESSAGE#84:HEADER_COUNT_EXCEEDED/1_0", "nwparser.p0", "\"[%{result}]\" %{p0}"); - -var part96 = match("MESSAGE#84:HEADER_COUNT_EXCEEDED/1_1", "nwparser.p0", "[%{result}] %{p0}"); - -var part97 = match("MESSAGE#84:HEADER_COUNT_EXCEEDED/2", "nwparser.p0", "%{web_method->} %{url->} %{protocol->} - %{stransaddr->} %{stransport->} %{web_referer}"); - -var part98 = match("MESSAGE#85:CROSS_SITE_SCRIPTING_IN_PARAM:01/2", "nwparser.p0", "%{web_method->} %{url->} %{protocol->} \"%{user_agent}\" %{stransaddr->} %{stransport->} %{web_referer}"); - -var part99 = match("MESSAGE#118:TR_Logs:01/1_0", "nwparser.p0", "%{stransport->} %{content_type}"); - -var part100 = match_copy("MESSAGE#118:TR_Logs:01/1_1", "nwparser.p0", "stransport"); - -var select23 = linear_select([ - dup13, - dup14, -]); - -var part101 = match("MESSAGE#103:NO_DOMAIN_MATCH_IN_PROFILE", "nwparser.payload", "%{fld88->} %{fld89->} %{timezone->} %{category->} %{operation_id->} %{severity->} %{event_type->} %{saddr->} %{sport->} %{rulename->} %{rule_group->} %{action->} %{context->} [%{result}] %{web_method->} %{url->} %{protocol->} \"%{user_agent}\" %{stransaddr->} %{stransport->} %{web_referer}", processor_chain([ - dup17, - dup8, -])); - -var select24 = linear_select([ - dup18, - dup19, -]); - -var all6 = all_match({ - processors: [ - dup12, - dup23, - dup15, - ], - on_success: processor_chain([ - dup11, - dup8, - ]), -}); - -var all7 = all_match({ - processors: [ - dup12, - dup23, - dup16, - ], - on_success: processor_chain([ - dup11, - dup8, - ]), -}); diff --git a/x-pack/filebeat/module/barracuda/waf/ingest/pipeline.yml b/x-pack/filebeat/module/barracuda/waf/ingest/pipeline.yml deleted file mode 100644 index 80e68bb2523..00000000000 --- a/x-pack/filebeat/module/barracuda/waf/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Barracuda Web Application Firewall - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/barracuda/waf/manifest.yml b/x-pack/filebeat/module/barracuda/waf/manifest.yml deleted file mode 100644 index cab91dcb929..00000000000 --- a/x-pack/filebeat/module/barracuda/waf/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["barracuda.waf", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9525 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/barracuda/waf/test/generated.log b/x-pack/filebeat/module/barracuda/waf/test/generated.log deleted file mode 100644 index da13bb9dbe3..00000000000 --- a/x-pack/filebeat/module/barracuda/waf/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -PROCMON: Started monitoring -BYPASS: Mode set to BYPASS (nbyCic). -UPDATE: [ALERT:tvolup] New attack definition version 1.1000 is available -STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed. -STM_WRAPPER: Initializing STM. -eventmgr: Forwarding log messages to syslog host #imadm, address=10.16.222.151 -PROCMON: [ALERT:eritqui] One of the RAID arrays is degrading. -BYPASS: Mode change: ccusant,epteurs -UPDATE: [ALERT:modoco] New attack definition version 1.3971 is available -STM: LB-doloreeu elillumq CreateServer =loremeum -STM: WebLog-radi ula itsed: SapCtx=rad,SapId=olupta, ididu -UPDATE: [ALERT:xcepte] New attack definition version 1.4012 is available -PROCMON: Monitoring links: lo4933 -PROCMON: [ALERT:doconse] One of the RAID arrays is degrading. -CONFIG_AGENT: odite atn It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time., sectet -STM: LB-tet voluptas ActiveServerOutOfBandMonitorAttr =inv -STM_WRAPPER: [ALERT:obeata] Configuration size is pexeaco which exceeds the ercitati safe limit. Please check your configuration. -BYPASS: Mode change: urEx,labo -eventmgr: Event manager startup succeeded. -STM: LB-Maloru lapariat SetServerdmin=oinBCSed -STM_WRAPPER: Successfully stopped STM. -CONFIG_AGENT: luptate Initiating config_agent database commit phase. -STM: LB-isistena Malorum SetSapquelauda=enderit -eventmgr: Forwarding log messages to syslog host #equun, address=10.4.65.246 -UPDATE: [ALERT:exer] New attack definition version 1.481 is available -eventmgr: Event manager startup succeeded. -STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed. -CONFIG_AGENT: isnisiu aspernat Update succeeded -INSTALL: Loading the snapshot for mquel release. -INSTALL: Migrating configuration from ueporr to ptate -PROCMON: [ALERT:onsequ] enp0s7094: link is up -CONFIG_AGENT: iquip tDuisau It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time., amali -eventmgr: Event manager startup succeeded. -PROCMON: Started monitoring -STM: LB-mveniam rvelill EnableServer =iame -PROCMON: number of stm worker threads iseuf -STM: WebLog-ipiscin idolore turExce: SapCtx=modoc,SapId=mdolors, borios -STM_WRAPPER: Successfully stopped STM. -eventmgr: Forwarding log messages to syslog host #ccusa, address=10.58.33.30 -PROCMON: [ALERT:uiadolo] eth321: link is up -CONFIG_AGENT: rsi ciduntut Update succeeded -CONFIG_AGENT: radipis RPC Name =isa, RPC Result: aal -INSTALL: Loading the snapshot for ris release. -CONFIG_AGENT: aliqui rcitat Update succeeded -CONFIG_AGENT: aeconse Initiating config_agent database commit phase. -PROCMON: Started monitoring -CONFIG_AGENT: iaecon ipexea Update succeeded -INSTALL: Migrating configuration from nulapa to cillu -PROCMON: [ALERT:ectetura] Firmware storage exceeds didun -CONFIG_AGENT: rcit nul Received put-tree command -UPDATE: [ALERT:aliquaU] New attack definition version 1.1278 is available -UPDATE: [ALERT:amei] New attack definition version 1.7778 is available -UPDATE: [ALERT:gelitse] New attack definition version 1.3018 is available -INSTALL: Migrating configuration from iceroin to qui -INSTALL: Migrating configuration from pariatu to issusc -STM: FAILOVE-roinBCSe oreet Stateful Failover Module initialized. -STM_WRAPPER: Committing UI configuration. -STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed. -INSTALL: Migrating configuration from ernat to Ute -STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed. -STM_WRAPPER: Successfully initialized STM. -STM: RespPage-rinrepr rvelill CreateRP: Response Page mve created successfully -STM_WRAPPER: [ALERT:ineav] Configuration size is onp which exceeds the gnaaliqu safe limit. Please check your configuration. -BYPASS: Mode set to never bypass. -CONFIG_AGENT: quaea RPC Name =eetd, RPC Result: fdeFin -PROCMON: number of stm worker threads isrro -CONFIG_AGENT: tutlabo Initiating config_agent database commit phase. -INSTALL: Loading the snapshot for pli release. -CONFIG_AGENT: erit Initiating config_agent database commit phase. -INSTALL: Loading the snapshot for mod release. -INSTALL: Loading the snapshot for lamcolab release. -INSTALL: Migrating configuration from estlab to tis -PROCMON: [ALERT:uamqua] Firmware storage exceeds labo -INSTALL: Migrating configuration from tfugit to taspern -eventmgr: Forwarding log messages to syslog host #meiusm, address=10.48.248.158 -STM_WRAPPER: Successfully initialized STM. -PROCMON: number of stm worker threads isonula -STM: FTPSVC-nimi ilmoles Ftp proxy initialized labor -PROCMON: [ALERT:atev] One of the RAID arrays is degrading. -CONFIG_AGENT: amaliq ept Received put-tree command -BYPASS: Mode set to BYPASS (ectetura). -STM: COOKIE-icab quiado scipit = quiavolu -BYPASS: Mode set to never bypass. -STM: CACHE-oconseq tsedd untin SapCtx susc, SapId amr, Return Code success -STM: aps-ddoeius tautfugi ParamProtectionClonePatterns: Old:cin, New:fugia, PatternsNode:olors -INSTALL: Loading the snapshot for admi release. -CONFIG_AGENT: aecons Initiating config_agent database commit phase. -PROCMON: Monitoring links: eth801 -PROCMON: Started monitoring -UPDATE: [ALERT:ntoc] New attack definition version 1.7781 is available -INSTALL: Loading the snapshot for stru release. -PROCMON: Monitoring links: enp0s6182 -PROCMON: number of stm worker threads isumwri -BYPASS: Mode set to never bypass. -BYPASS: Mode set to BYPASS (eniamqu). -UPDATE: [ALERT:tco] New attack definition version 1.6840 is available -STM_WRAPPER: Successfully initialized STM. -STM_WRAPPER: Initializing STM. -STM_WRAPPER: Successfully initialized STM. -PROCMON: Started monitoring diff --git a/x-pack/filebeat/module/barracuda/waf/test/generated.log-expected.json b/x-pack/filebeat/module/barracuda/waf/test/generated.log-expected.json deleted file mode 100644 index ae69b15409b..00000000000 --- a/x-pack/filebeat/module/barracuda/waf/test/generated.log-expected.json +++ /dev/null @@ -1,1963 +0,0 @@ -[ - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Started monitoring", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 0, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Started monitoring", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode set to BYPASS (nbyCic).", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 28, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " Mode set to BYPASS.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:tvolup] New attack definition version 1.1000 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 65, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.1000", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.1000", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 138, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Initializing STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 227, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Initializing STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "eventmgr", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "eventmgr: Forwarding log messages to syslog host #imadm, address=10.16.222.151", - "fileset.name": "waf", - "host.ip": "10.16.222.151", - "input.type": "log", - "log.offset": 258, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.16.222.151" - ], - "rsa.internal.event_desc": "eventmgr: Forwarding log messages to syslog host", - "rsa.internal.messageid": "eventmgr", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: [ALERT:eritqui] One of the RAID arrays is degrading.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 337, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON:One of the RAID arrays is degrading.", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode change: ccusant,epteurs", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 399, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "Mode change.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:modoco] New attack definition version 1.3971 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 436, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.3971", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.3971", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: LB-doloreeu elillumq CreateServer =loremeum", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 509, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: LB Create Server command.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: WebLog-radi ula itsed: SapCtx=rad,SapId=olupta, ididu", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 558, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: WebLog Set Sap variable.", - "rsa.internal.messageid": "STM", - "rsa.misc.obj_name": "itsed", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:xcepte] New attack definition version 1.4012 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 617, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.4012", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.4012", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Monitoring links: lo4933", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 690, - "network.interface.name": "lo4933", - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Monitoring links.", - "rsa.internal.messageid": "PROCMON", - "rsa.network.interface": "lo4933", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: [ALERT:doconse] One of the RAID arrays is degrading.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 724, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON:One of the RAID arrays is degrading.", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: odite atn It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time., sectet", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 786, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: LB-tet voluptas ActiveServerOutOfBandMonitorAttr =inv", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 916, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: LB ActiveServerOutOfBandMonitorAttr command.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: [ALERT:obeata] Configuration size is pexeaco which exceeds the ercitati safe limit. Please check your configuration.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 975, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: ALERT Configuration size exceeds the safe memory limit.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode change: urEx,labo", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1105, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "Mode change.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "eventmgr", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "eventmgr: Event manager startup succeeded.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1136, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "eventmgr: Event manager startup succeeded.", - "rsa.internal.messageid": "eventmgr", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: LB-Maloru lapariat SetServerdmin=oinBCSed", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1179, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "dmin", - "rsa.internal.event_desc": "STM: LB Set Server command.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Successfully stopped STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1226, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Successfully stopped STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: luptate Initiating config_agent database commit phase.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1265, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Initiating config_agent database commit phase.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: LB-isistena Malorum SetSapquelauda=enderit", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1334, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "quelauda", - "rsa.internal.event_desc": "STM: LB Set Sap command.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "eventmgr", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "eventmgr: Forwarding log messages to syslog host #equun, address=10.4.65.246", - "fileset.name": "waf", - "host.ip": "10.4.65.246", - "input.type": "log", - "log.offset": 1382, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.4.65.246" - ], - "rsa.internal.event_desc": "eventmgr: Forwarding log messages to syslog host", - "rsa.internal.messageid": "eventmgr", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:exer] New attack definition version 1.481 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1459, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.481", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.481", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "eventmgr", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "eventmgr: Event manager startup succeeded.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1529, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "eventmgr: Event manager startup succeeded.", - "rsa.internal.messageid": "eventmgr", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1572, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: isnisiu aspernat Update succeeded", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1661, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Update succeded.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Loading the snapshot for mquel release.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1709, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: Loading snapshot from previous version.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Migrating configuration from ueporr to ptate", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1758, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: migrating configuration.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: [ALERT:onsequ] enp0s7094: link is up", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1812, - "network.interface.name": "enp0s7094", - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON:Link is up.", - "rsa.internal.messageid": "PROCMON", - "rsa.network.interface": "enp0s7094", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: iquip tDuisau It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time., amali", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1858, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "It is recommended to configure cookie_encryption_key_expiry atleast 7 days ahead of current time.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "eventmgr", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "eventmgr: Event manager startup succeeded.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 1991, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "eventmgr: Event manager startup succeeded.", - "rsa.internal.messageid": "eventmgr", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Started monitoring", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2034, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Started monitoring", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: LB-mveniam rvelill EnableServer =iame", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2062, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: LB Enable Server command.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: number of stm worker threads iseuf", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2105, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "euf", - "rsa.internal.event_desc": "PROCMON: number of stm worker threads", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: WebLog-ipiscin idolore turExce: SapCtx=modoc,SapId=mdolors, borios", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2149, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: WebLog Set Sap variable.", - "rsa.internal.messageid": "STM", - "rsa.misc.obj_name": "turExce", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Successfully stopped STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2221, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Successfully stopped STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "eventmgr", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "eventmgr: Forwarding log messages to syslog host #ccusa, address=10.58.33.30", - "fileset.name": "waf", - "host.ip": "10.58.33.30", - "input.type": "log", - "log.offset": 2260, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.58.33.30" - ], - "rsa.internal.event_desc": "eventmgr: Forwarding log messages to syslog host", - "rsa.internal.messageid": "eventmgr", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: [ALERT:uiadolo] eth321: link is up", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2337, - "network.interface.name": "eth321", - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON:Link is up.", - "rsa.internal.messageid": "PROCMON", - "rsa.network.interface": "eth321", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: rsi ciduntut Update succeeded", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2381, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Update succeded.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: radipis RPC Name =isa, RPC Result: aal", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2425, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT: RPC information.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Loading the snapshot for ris release.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2478, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: Loading snapshot from previous version.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: aliqui rcitat Update succeeded", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2525, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Update succeded.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: aeconse Initiating config_agent database commit phase.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2570, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Initiating config_agent database commit phase.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Started monitoring", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2639, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Started monitoring", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: iaecon ipexea Update succeeded", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2667, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Update succeded.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Migrating configuration from nulapa to cillu", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2712, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: migrating configuration.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: [ALERT:ectetura] Firmware storage exceeds didun", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2766, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "didun", - "rsa.internal.event_desc": "PROCMON:Firmware storage exceeding.", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: rcit nul Received put-tree command", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2823, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Received put-tree command.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:aliquaU] New attack definition version 1.1278 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2872, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.1278", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.1278", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:amei] New attack definition version 1.7778 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 2946, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.7778", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.7778", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:gelitse] New attack definition version 1.3018 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3017, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.3018", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.3018", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Migrating configuration from iceroin to qui", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3091, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: migrating configuration.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Migrating configuration from pariatu to issusc", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3144, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: migrating configuration.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: FAILOVE-roinBCSe oreet Stateful Failover Module initialized.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3200, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: FAILOVE Stateful Failover Module initialized.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Committing UI configuration.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3266, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Committing UI configuration.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3308, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Migrating configuration from ernat to Ute", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3397, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: migrating configuration.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3448, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Rolling back the current database transaction. Configuration digest failed.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Successfully initialized STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3537, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Successfully initialized STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: RespPage-rinrepr rvelill CreateRP: Response Page mve created successfully", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3580, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: RespPage Response Page created successfully.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: [ALERT:ineav] Configuration size is onp which exceeds the gnaaliqu safe limit. Please check your configuration.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3659, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: ALERT Configuration size exceeds the safe memory limit.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode set to never bypass.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3784, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " Mode set to never BYPASS.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: quaea RPC Name =eetd, RPC Result: fdeFin", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3818, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT: RPC information.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: number of stm worker threads isrro", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3873, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "rro", - "rsa.internal.event_desc": "PROCMON: number of stm worker threads", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: tutlabo Initiating config_agent database commit phase.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3917, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Initiating config_agent database commit phase.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Loading the snapshot for pli release.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 3986, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: Loading snapshot from previous version.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: erit Initiating config_agent database commit phase.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4033, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Initiating config_agent database commit phase.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Loading the snapshot for mod release.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4099, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: Loading snapshot from previous version.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Loading the snapshot for lamcolab release.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4146, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: Loading snapshot from previous version.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Migrating configuration from estlab to tis", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4198, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: migrating configuration.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: [ALERT:uamqua] Firmware storage exceeds labo", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4250, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "labo", - "rsa.internal.event_desc": "PROCMON:Firmware storage exceeding.", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Migrating configuration from tfugit to taspern", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4304, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: migrating configuration.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "eventmgr", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "eventmgr: Forwarding log messages to syslog host #meiusm, address=10.48.248.158", - "fileset.name": "waf", - "host.ip": "10.48.248.158", - "input.type": "log", - "log.offset": 4360, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "related.ip": [ - "10.48.248.158" - ], - "rsa.internal.event_desc": "eventmgr: Forwarding log messages to syslog host", - "rsa.internal.messageid": "eventmgr", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Successfully initialized STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4440, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Successfully initialized STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: number of stm worker threads isonula", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4483, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "onula", - "rsa.internal.event_desc": "PROCMON: number of stm worker threads", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: FTPSVC-nimi ilmoles Ftp proxy initialized labor", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4529, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "labor", - "rsa.internal.event_desc": "STM: FTPSVC Ftp proxy initialized.", - "rsa.internal.messageid": "STM", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: [ALERT:atev] One of the RAID arrays is degrading.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4582, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON:One of the RAID arrays is degrading.", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: amaliq ept Received put-tree command", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4641, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Received put-tree command.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode set to BYPASS (ectetura).", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4692, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " Mode set to BYPASS.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: COOKIE-icab quiado scipit = quiavolu", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4731, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "quiavolu", - "rsa.internal.event_desc": "STM: COOKIE Cookie parameters set.", - "rsa.internal.messageid": "STM", - "rsa.misc.obj_name": "scipit", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode set to never bypass.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4773, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " Mode set to never BYPASS.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: CACHE-oconseq tsedd untin SapCtx susc, SapId amr, Return Code success", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4807, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: CACHE SapCtx log.", - "rsa.internal.messageid": "STM", - "rsa.misc.obj_name": "untin", - "rsa.misc.result": "success", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM: aps-ddoeius tautfugi ParamProtectionClonePatterns: Old:cin, New:fugia, PatternsNode:olors", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4882, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM: aps ParamProtectionClonePatterns values changed.", - "rsa.internal.messageid": "STM", - "rsa.misc.change_new": "fugia", - "rsa.misc.change_old": "cin", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Loading the snapshot for admi release.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 4977, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: Loading snapshot from previous version.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "CONFIG_AGENT", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "CONFIG_AGENT: aecons Initiating config_agent database commit phase.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5025, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "CONFIG_AGENT:Initiating config_agent database commit phase.", - "rsa.internal.messageid": "CONFIG_AGENT", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Monitoring links: eth801", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5093, - "network.interface.name": "eth801", - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Monitoring links.", - "rsa.internal.messageid": "PROCMON", - "rsa.network.interface": "eth801", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Started monitoring", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5127, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Started monitoring", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:ntoc] New attack definition version 1.7781 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5155, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.7781", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.7781", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "INSTALL", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "INSTALL: Loading the snapshot for stru release.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5226, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " INSTALL: Loading snapshot from previous version.", - "rsa.internal.messageid": "INSTALL", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Monitoring links: enp0s6182", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5274, - "network.interface.name": "enp0s6182", - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Monitoring links.", - "rsa.internal.messageid": "PROCMON", - "rsa.network.interface": "enp0s6182", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: number of stm worker threads isumwri", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5311, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.db.index": "umwri", - "rsa.internal.event_desc": "PROCMON: number of stm worker threads", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode set to never bypass.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5357, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " Mode set to never BYPASS.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "BYPASS", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "BYPASS: Mode set to BYPASS (eniamqu).", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5391, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": " Mode set to BYPASS.", - "rsa.internal.messageid": "BYPASS", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "UPDATE", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "UPDATE: [ALERT:tco] New attack definition version 1.6840 is available", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5429, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "observer.version": "1.6840", - "rsa.internal.event_desc": "UPDATE: ALERT New attack definition version is available", - "rsa.internal.messageid": "UPDATE", - "rsa.misc.version": "1.6840", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Successfully initialized STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5499, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Successfully initialized STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Initializing STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5542, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Initializing STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "STM_WRAPPER", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "STM_WRAPPER: Successfully initialized STM.", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5573, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "STM_WRAPPER: Successfully initialized STM.", - "rsa.internal.messageid": "STM_WRAPPER", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - }, - { - "event.code": "PROCMON", - "event.dataset": "barracuda.waf", - "event.module": "barracuda", - "event.original": "PROCMON: Started monitoring", - "fileset.name": "waf", - "input.type": "log", - "log.offset": 5616, - "observer.product": "Web", - "observer.type": "WAF", - "observer.vendor": "Barracuda", - "rsa.internal.event_desc": "PROCMON: Started monitoring", - "rsa.internal.messageid": "PROCMON", - "service.type": "barracuda", - "tags": [ - "barracuda.waf", - "forwarded" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/bluecoat/README.md b/x-pack/filebeat/module/bluecoat/README.md deleted file mode 100644 index 815d89a2f72..00000000000 --- a/x-pack/filebeat/module/bluecoat/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# bluecoat module - -This is a module for Blue Coat Director logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML bluecoatdirector version 0 -at 2020-07-13 17:55:34.664093 +0000 UTC. - diff --git a/x-pack/filebeat/module/bluecoat/_meta/config.yml b/x-pack/filebeat/module/bluecoat/_meta/config.yml deleted file mode 100644 index 76056292f7b..00000000000 --- a/x-pack/filebeat/module/bluecoat/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: bluecoat - director: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9505 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/bluecoat/_meta/docs.asciidoc b/x-pack/filebeat/module/bluecoat/_meta/docs.asciidoc deleted file mode 100644 index 33fe07fd426..00000000000 --- a/x-pack/filebeat/module/bluecoat/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: bluecoat -:has-dashboards: false - -== Bluecoat module - -deprecated::[8.12.0,"This module is deprecated. See <> for migration options."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Blue Coat Director logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: director - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `director` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "bluecoatdirector" device revision 0. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9505` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/bluecoat/_meta/fields.yml b/x-pack/filebeat/module/bluecoat/_meta/fields.yml deleted file mode 100644 index 2efac151801..00000000000 --- a/x-pack/filebeat/module/bluecoat/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: bluecoat - title: Blue Coat Director - description: > - bluecoat fields. - fields: diff --git a/x-pack/filebeat/module/bluecoat/director/_meta/fields.yml b/x-pack/filebeat/module/bluecoat/director/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/bluecoat/director/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/bluecoat/director/config/input.yml b/x-pack/filebeat/module/bluecoat/director/config/input.yml deleted file mode 100644 index 01d5592b7cc..00000000000 --- a/x-pack/filebeat/module/bluecoat/director/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Bluecoat" - product: "Director" - type: "Configuration" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/bluecoat/director/config/liblogparser.js - - ${path.home}/module/bluecoat/director/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/bluecoat/director/config/liblogparser.js b/x-pack/filebeat/module/bluecoat/director/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/bluecoat/director/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i %{username}@%{p0}"); - -var dup3 = match_copy("MESSAGE#0:cli/2", "nwparser.p0", "action"); - -var dup4 = setc("eventcategory","1605000000"); - -var dup5 = setf("msg","$MSG"); - -var dup6 = setc("event_description","bad variable"); - -var dup7 = setc("event_description","This file is automatically generated"); - -var dup8 = setc("eventcategory","1603000000"); - -var dup9 = setc("event_description","authentication failure"); - -var dup10 = match("MESSAGE#10:cli:pam", "nwparser.payload", "%{agent}[%{process_id}]: %{fld21}(%{fld1}:%{fld2}): pam_putenv: %{fld3}", processor_chain([ - dup4, - dup5, - dup6, -])); - -var hdr1 = match("HEADER#0:0001", "message", "%{messageid}[%{hfld1}]: %{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("hfld1"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{messageid}: %{p0}", processor_chain([ - setc("header_id","0002"), - dup1, -])); - -var hdr3 = match("HEADER#2:0003", "message", "%{hfld1->} %{hfld2->} %{hfld3->} %{hfld4->} %{messageid}[%{hfld5}]: %{p0}", processor_chain([ - setc("header_id","0003"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("hfld5"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr4 = match("HEADER#3:0004", "message", "%{hfld1->} %{hfld2->} %{hfld3->} %{hfld4->} %{messageid}: %{p0}", processor_chain([ - setc("header_id","0004"), - dup1, -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, -]); - -var part1 = match("MESSAGE#0:cli/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Processing command: %{p0}"); - -var part2 = match("MESSAGE#0:cli/1_1", "nwparser.p0", "%{domain->} : Processing command: %{p0}"); - -var select2 = linear_select([ - part1, - part2, -]); - -var all1 = all_match({ - processors: [ - dup2, - select2, - dup3, - ], - on_success: processor_chain([ - dup4, - dup5, - ]), -}); - -var msg1 = msg("cli", all1); - -var part3 = match("MESSAGE#1:cli:01/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Processing command %{p0}"); - -var part4 = match("MESSAGE#1:cli:01/1_1", "nwparser.p0", "%{domain->} : Processing command %{p0}"); - -var select3 = linear_select([ - part3, - part4, -]); - -var all2 = all_match({ - processors: [ - dup2, - select3, - dup3, - ], - on_success: processor_chain([ - dup4, - dup5, - ]), -}); - -var msg2 = msg("cli:01", all2); - -var part5 = match("MESSAGE#2:cli:02/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Leaving config mode"); - -var part6 = match("MESSAGE#2:cli:02/1_1", "nwparser.p0", "%{domain->} : Leaving config mode"); - -var select4 = linear_select([ - part5, - part6, -]); - -var all3 = all_match({ - processors: [ - dup2, - select4, - ], - on_success: processor_chain([ - dup4, - dup5, - setc("event_description","Leaving config mode"), - ]), -}); - -var msg3 = msg("cli:02", all3); - -var part7 = match("MESSAGE#3:cli:03/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Entering config mode"); - -var part8 = match("MESSAGE#3:cli:03/1_1", "nwparser.p0", "%{domain->} : Entering config mode"); - -var select5 = linear_select([ - part7, - part8, -]); - -var all4 = all_match({ - processors: [ - dup2, - select5, - ], - on_success: processor_chain([ - dup4, - dup5, - setc("event_description","Entering config mode"), - ]), -}); - -var msg4 = msg("cli:03", all4); - -var part9 = match("MESSAGE#4:cli:04/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : CLI exiting"); - -var part10 = match("MESSAGE#4:cli:04/1_1", "nwparser.p0", "%{domain->} : CLI exiting"); - -var select6 = linear_select([ - part9, - part10, -]); - -var all5 = all_match({ - processors: [ - dup2, - select6, - ], - on_success: processor_chain([ - dup4, - dup5, - setc("event_description","CLI exiting"), - ]), -}); - -var msg5 = msg("cli:04", all5); - -var part11 = match("MESSAGE#5:cli:05/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : CLI launched"); - -var part12 = match("MESSAGE#5:cli:05/1_1", "nwparser.p0", "%{domain->} : CLI launched"); - -var select7 = linear_select([ - part11, - part12, -]); - -var all6 = all_match({ - processors: [ - dup2, - select7, - ], - on_success: processor_chain([ - dup4, - dup5, - setc("event_description","CLI launched"), - ]), -}); - -var msg6 = msg("cli:05", all6); - -var part13 = match("MESSAGE#6:Automatically/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Automatically logged out due to keyboard inactivity."); - -var part14 = match("MESSAGE#6:Automatically/1_1", "nwparser.p0", "%{domain->} : Automatically logged out due to keyboard inactivity."); - -var select8 = linear_select([ - part13, - part14, -]); - -var all7 = all_match({ - processors: [ - dup2, - select8, - ], - on_success: processor_chain([ - dup4, - setc("ec_subject","User"), - setc("ec_activity","Logoff"), - dup5, - setc("event_description","Automatically logged out due to keyboard inactivity"), - ]), -}); - -var msg7 = msg("Automatically", all7); - -var part15 = match("MESSAGE#7:cli:06/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Entering enable mode"); - -var part16 = match("MESSAGE#7:cli:06/1_1", "nwparser.p0", "%{domain->} : Entering enable mode"); - -var select9 = linear_select([ - part15, - part16, -]); - -var all8 = all_match({ - processors: [ - dup2, - select9, - ], - on_success: processor_chain([ - dup4, - dup5, - setc("event_description","Entering enable mode"), - ]), -}); - -var msg8 = msg("cli:06", all8); - -var part17 = match("MESSAGE#8:cli:07/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Leaving enable mode"); - -var part18 = match("MESSAGE#8:cli:07/1_1", "nwparser.p0", "%{domain->} : Leaving enable mode"); - -var select10 = linear_select([ - part17, - part18, -]); - -var all9 = all_match({ - processors: [ - dup2, - select10, - ], - on_success: processor_chain([ - dup4, - dup5, - setc("event_description","Leaving enable mode"), - ]), -}); - -var msg9 = msg("cli:07", all9); - -var part19 = match("MESSAGE#9:Processing/1_0", "nwparser.p0", "::%{fld5}:%{saddr->} : Processing a secure command..."); - -var part20 = match("MESSAGE#9:Processing/1_1", "nwparser.p0", "%{domain->} : Processing a secure command..."); - -var select11 = linear_select([ - part19, - part20, -]); - -var all10 = all_match({ - processors: [ - dup2, - select11, - ], - on_success: processor_chain([ - dup4, - dup5, - setc("event_description","Processing a secure command"), - ]), -}); - -var msg10 = msg("Processing", all10); - -var msg11 = msg("cli:pam", dup10); - -var select12 = linear_select([ - msg1, - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, -]); - -var part21 = match("MESSAGE#11:schedulerd", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Executing Job \"%{operation_id}\" execution %{fld6}", processor_chain([ - dup4, - dup5, -])); - -var msg12 = msg("schedulerd", part21); - -var part22 = match("MESSAGE#12:schedulerd:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> System time changed, recomputing job run times.", processor_chain([ - dup4, - dup5, - setc("event_description","System time changed, recomputing job run times"), -])); - -var msg13 = msg("schedulerd:01", part22); - -var select13 = linear_select([ - msg12, - msg13, -]); - -var part23 = match("MESSAGE#13:configd:Rotating", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Rotating out backup file \"%{filename}\" for device \"%{hostname}\".", processor_chain([ - dup4, - dup5, -])); - -var msg14 = msg("configd:Rotating", part23); - -var part24 = match("MESSAGE#14:configd:Deleting", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Deleting backup %{filename->} from device \"%{hostname}\"", processor_chain([ - dup4, - dup5, -])); - -var msg15 = msg("configd:Deleting", part24); - -var part25 = match("MESSAGE#15:configd", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device \"%{hostname}\" completed command(s) \u003c\u003c%{action}> ...", processor_chain([ - dup4, - dup5, -])); - -var msg16 = msg("configd", part25); - -var part26 = match("MESSAGE#16:configd:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@::%{fld5}:%{saddr}-%{fld6}: Sending commands to Device %{hostname}", processor_chain([ - dup4, - dup5, -])); - -var msg17 = msg("configd:01", part26); - -var part27 = match("MESSAGE#17:configd:11", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@%{fld6}: Sending commands to Device %{hostname}", processor_chain([ - dup4, - dup5, -])); - -var msg18 = msg("configd:11", part27); - -var part28 = match("MESSAGE#18:file", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@::%{fld5}:%{saddr}-%{fld6}: command: %{action->} ;; CPL generated by Visual Policy Manager: %{fld10->} ;%{fld11->} ; %{fld12->} ; %{info}", processor_chain([ - dup4, - dup5, - dup7, -])); - -var msg19 = msg("file", part28); - -var part29 = match("MESSAGE#19:configd:02", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@::%{fld5}:%{saddr}-%{fld6}: command: %{action}", processor_chain([ - dup4, - dup5, -])); - -var msg20 = msg("configd:02", part29); - -var part30 = match("MESSAGE#20:configd:22", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@%{fld6}: command: %{action}", processor_chain([ - dup4, - dup5, -])); - -var msg21 = msg("configd:22", part30); - -var part31 = match("MESSAGE#21:configd:03", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@::%{fld5}:%{saddr}-%{fld6}: Commands sent to Device %{hostname}", processor_chain([ - dup4, - dup5, -])); - -var msg22 = msg("configd:03", part31); - -var part32 = match("MESSAGE#22:configd:33", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@%{fld6}: Commands sent to Device %{hostname}", processor_chain([ - dup4, - dup5, -])); - -var msg23 = msg("configd:33", part32); - -var part33 = match("MESSAGE#23:Backup", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Backup import command finished for all devices.", processor_chain([ - dup4, - dup5, - setc("event_description","Backup import command finished for all devices"), -])); - -var msg24 = msg("Backup", part33); - -var part34 = match("MESSAGE#24:Beginning", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Beginning to make backup of cache %{hostname}", processor_chain([ - dup4, - dup5, - setc("event_description","Beginning to make backup of cache"), -])); - -var msg25 = msg("Beginning", part34); - -var part35 = match("MESSAGE#25:Inputting", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Inputting overlay \u003c\u003c%{fld10}>", processor_chain([ - dup4, - dup5, - setc("event_description","Inputting overlay"), -])); - -var msg26 = msg("Inputting", part35); - -var part36 = match("MESSAGE#26:Saved", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Saved %{info->} to %{filename}", processor_chain([ - dup4, - dup5, -])); - -var msg27 = msg("Saved", part36); - -var part37 = match("MESSAGE#27:Importing", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Importing overlay \u003c\u003c%{fld25}> from %{hostname}", processor_chain([ - dup4, - dup5, -])); - -var msg28 = msg("Importing", part37); - -var part38 = match("MESSAGE#28:Overlay", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Overlay \"%{fld25}\" imported from device \"%{hostname}\"", processor_chain([ - dup4, - dup5, -])); - -var msg29 = msg("Overlay", part38); - -var part39 = match("MESSAGE#29:Executed", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Executed the last created overlay. The filename is %{filename}", processor_chain([ - dup4, - dup5, -])); - -var msg30 = msg("Executed", part39); - -var part40 = match("MESSAGE#30:Configuration", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Configuration system online", processor_chain([ - dup4, - dup5, - setc("event_description","Configuration system online"), -])); - -var msg31 = msg("Configuration", part40); - -var part41 = match("MESSAGE#31:Create", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> CREATE %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","Table creation"), -])); - -var msg32 = msg("Create", part41); - -var part42 = match("MESSAGE#32:Loaded", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Loaded config file initial", processor_chain([ - dup4, - dup5, - setc("event_description","Loaded config file initial"), -])); - -var msg33 = msg("Loaded", part42); - -var part43 = match("MESSAGE#33:Setting", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Setting set-reply timeout to %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","Setting set-reply timeout"), -])); - -var msg34 = msg("Setting", part43); - -var part44 = match("MESSAGE#34:CCD", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> CCD lost connection to device \"%{hostname}\": %{event_description}", processor_chain([ - dup4, - dup5, -])); - -var msg35 = msg("CCD", part44); - -var part45 = match("MESSAGE#35:Device", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device \"%{hostname}\" is now online.", processor_chain([ - dup4, - dup5, -])); - -var msg36 = msg("Device", part45); - -var part46 = match("MESSAGE#36:Output", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@::%{fld5}:%{saddr}-%{fld6}: %{fld9->} Output for device \"%{hostname}\" %{fld10}", processor_chain([ - dup4, - dup5, -])); - -var msg37 = msg("Output", part46); - -var part47 = match("MESSAGE#37:ssh", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> (ssh) %{event_description}", processor_chain([ - dup4, - dup5, -])); - -var msg38 = msg("ssh", part47); - -var part48 = match("MESSAGE#38:Applying", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@::%{fld5}:%{saddr}-%{fld6}: Applying overlay \u003c\u003c%{fld10}> to group %{group_object}", processor_chain([ - dup4, - dup5, - setc("event_description","Applying overlay to group"), -])); - -var msg39 = msg("Applying", part48); - -var part49 = match("MESSAGE#39:Applying:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{username}@::%{fld5}:%{saddr}-%{fld6}: Applying overlay \u003c\u003c%{fld10}> to cache %{hostname}", processor_chain([ - dup4, - dup5, - setc("event_description","Applying overlay to cache"), -])); - -var msg40 = msg("Applying:01", part49); - -var part50 = match("MESSAGE#40:configd:backup", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Backup complete for device \"%{hostname}\". ID %{fld10}", processor_chain([ - dup4, - dup5, - setc("event_description","Backup complete for device"), -])); - -var msg41 = msg("configd:backup", part50); - -var part51 = match("MESSAGE#41:file:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device \"%{hostname}\" completed command(s) %{action->} ;; CPL generated by Visual Policy Manager: %{fld10->} ;%{fld11->} ; %{fld12->} ; %{info}", processor_chain([ - dup4, - dup5, - dup7, -])); - -var msg42 = msg("file:01", part51); - -var part52 = match("MESSAGE#42:configd:connection", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> read: Connection reset by peer", processor_chain([ - dup4, - dup5, - setc("event_description","Connection reset by peer"), -])); - -var msg43 = msg("configd:connection", part52); - -var part53 = match("MESSAGE#43:configd:failed", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{info->} failed", processor_chain([ - dup4, - dup5, - setc("event_description","cd session read failed"), -])); - -var msg44 = msg("configd:failed", part53); - -var select14 = linear_select([ - msg14, - msg15, - msg16, - msg17, - msg18, - msg19, - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, - msg26, - msg27, - msg28, - msg29, - msg30, - msg31, - msg32, - msg33, - msg34, - msg35, - msg36, - msg37, - msg38, - msg39, - msg40, - msg41, - msg42, - msg43, - msg44, -]); - -var part54 = match("MESSAGE#44:poller", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> Querying content system for job results.", processor_chain([ - dup4, - dup5, - setc("event_description","Querying content system for job results"), -])); - -var msg45 = msg("poller", part54); - -var part55 = match("MESSAGE#45:heartbeat", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Processing command: %{action}", processor_chain([ - dup4, - dup5, -])); - -var msg46 = msg("heartbeat", part55); - -var part56 = match("MESSAGE#46:heartbeat:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> The HB command is %{action}", processor_chain([ - dup4, - dup5, -])); - -var msg47 = msg("heartbeat:01", part56); - -var part57 = match("MESSAGE#47:heartbeat:02", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> director heartbeat client exiting.", processor_chain([ - dup4, - dup5, - setc("event_description","director heartbeat client exiting"), -])); - -var msg48 = msg("heartbeat:02", part57); - -var part58 = match("MESSAGE#48:heartbeat:03", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> director heartbeat client launched.", processor_chain([ - dup4, - dup5, - setc("event_description","director heartbeat client launched"), -])); - -var msg49 = msg("heartbeat:03", part58); - -var part59 = match("MESSAGE#49:heartbeat:crit1", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> %{filename}: undefined symbol: %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","undefined symbol"), -])); - -var msg50 = msg("heartbeat:crit1", part59); - -var part60 = match("MESSAGE#50:heartbeat:crit2", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> connect: %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","No such file or directory"), -])); - -var msg51 = msg("heartbeat:crit2", part60); - -var select15 = linear_select([ - msg46, - msg47, - msg48, - msg49, - msg50, - msg51, -]); - -var part61 = match("MESSAGE#51:runner", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> Job \"%{operation_id}\" execution %{fld6->} command %{fld7}: \"%{action}\". Output %{fld9}: %{result}", processor_chain([ - dup4, - dup5, -])); - -var msg52 = msg("runner", part61); - -var part62 = match("MESSAGE#52:runner:01", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> Processing command: %{action}", processor_chain([ - dup4, - dup5, -])); - -var msg53 = msg("runner:01", part62); - -var part63 = match("MESSAGE#53:runner:02", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> Job \"%{operation_id}\" execution %{fld6->} finished running.", processor_chain([ - dup4, - dup5, -])); - -var msg54 = msg("runner:02", part63); - -var part64 = match("MESSAGE#54:runner:crit1", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> Failed to exec %{filename}", processor_chain([ - dup4, - dup5, -])); - -var msg55 = msg("runner:crit1", part64); - -var part65 = match("MESSAGE#55:runner:crit2", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> File reading failed", processor_chain([ - dup4, - dup5, - setc("event_description","File reading failed"), -])); - -var msg56 = msg("runner:crit2", part65); - -var select16 = linear_select([ - msg52, - msg53, - msg54, - msg55, - msg56, -]); - -var part66 = match("MESSAGE#56:ccd", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device %{hostname}: attempting connection using %{fld6->} on port: %{fld7}", processor_chain([ - dup4, - dup5, -])); - -var msg57 = msg("ccd", part66); - -var part67 = match("MESSAGE#57:ccd:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device %{hostname}: %{event_description}, Reason %{result}", processor_chain([ - dup4, - dup5, -])); - -var msg58 = msg("ccd:01", part67); - -var part68 = match("MESSAGE#58:ccd:03", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device %{hostname}: couldn't match the response \u003c\u003c%{event_description}>", processor_chain([ - dup4, - dup5, -])); - -var msg59 = msg("ccd:03", part68); - -var part69 = match("MESSAGE#59:ccd:04", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device %{hostname}: Did not get echo for the command \u003c\u003c%{action}>for past %{fld10}", processor_chain([ - dup4, - dup5, -])); - -var msg60 = msg("ccd:04", part69); - -var part70 = match("MESSAGE#60:ccd:02", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device %{hostname}: %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","info on device connection"), -])); - -var msg61 = msg("ccd:02", part70); - -var part71 = match("MESSAGE#61:ccd:05", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> write to %{fld1->} pipe : %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","write to ssh pipe"), -])); - -var msg62 = msg("ccd:05", part71); - -var part72 = match("MESSAGE#62:ccd:06", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> ccd_handle_read_failure(), %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","ccd handle read failure"), -])); - -var msg63 = msg("ccd:06", part72); - -var part73 = match("MESSAGE#63:ccd:07", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device Communication Daemon online", processor_chain([ - dup4, - dup5, - setc("event_description","device communication daemon online"), -])); - -var msg64 = msg("ccd:07", part73); - -var part74 = match("MESSAGE#64:ccd:08", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> System memory is: %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","system memory size"), -])); - -var msg65 = msg("ccd:08", part74); - -var select17 = linear_select([ - msg57, - msg58, - msg59, - msg60, - msg61, - msg62, - msg63, - msg64, - msg65, -]); - -var part75 = match("MESSAGE#65:sshd", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> error: Bind to port %{fld10->} on %{fld5->} failed: %{result}", processor_chain([ - dup8, - dup5, -])); - -var msg66 = msg("sshd", part75); - -var part76 = match("MESSAGE#66:sshd:01", "nwparser.payload", "%{agent}: bad username %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","bad username"), -])); - -var msg67 = msg("sshd:01", part76); - -var part77 = match("MESSAGE#67:sshd:02", "nwparser.payload", "%{agent}[%{process_id}]: %{fld21}(%{fld1}:%{fld2}): authentication failure; %{info}", processor_chain([ - dup4, - dup5, - dup9, -])); - -var msg68 = msg("sshd:02", part77); - -var part78 = match("MESSAGE#68:sshd:03", "nwparser.payload", "%{agent}[%{process_id}]: %{fld21}(%{fld1}:%{fld2}): check pass; %{fld3}", processor_chain([ - dup4, - dup5, - setc("event_description","check pass, user unknown"), -])); - -var msg69 = msg("sshd:03", part78); - -var part79 = match("MESSAGE#69:sshd:04", "nwparser.payload", "%{agent}[%{process_id}]: PAM %{fld1->} more authentication failure; %{info}", processor_chain([ - dup4, - dup5, - dup9, -])); - -var msg70 = msg("sshd:04", part79); - -var msg71 = msg("sshd:pam", dup10); - -var select18 = linear_select([ - msg66, - msg67, - msg68, - msg69, - msg70, - msg71, -]); - -var part80 = match("MESSAGE#71:dmd", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> inserted device id = %{hostname->} and serial number = %{fld6->} into DB", processor_chain([ - dup4, - dup5, -])); - -var msg72 = msg("dmd", part80); - -var part81 = match("MESSAGE#72:dmd:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Health state for metric\"%{hostname}\" \"%{change_old}\" changed to \"%{change_new}\", reason: \"%{result}\"", processor_chain([ - dup4, - dup5, -])); - -var msg73 = msg("dmd:01", part81); - -var part82 = match("MESSAGE#73:dmd:11", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Health state for group \"%{group_object}\" changed from \"%{change_old}\" to \"%{change_new}\"", processor_chain([ - dup4, - dup5, -])); - -var msg74 = msg("dmd:11", part82); - -var part83 = match("MESSAGE#74:dmd:02", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Filter on (%{fld5}) things. %{event_description}", processor_chain([ - dup4, - dup5, -])); - -var msg75 = msg("dmd:02", part83); - -var part84 = match("MESSAGE#75:dmd:03", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> Device ID \"%{hostname}\" error: %{event_description}", processor_chain([ - dup8, - dup5, -])); - -var msg76 = msg("dmd:03", part84); - -var select19 = linear_select([ - msg72, - msg73, - msg74, - msg75, - msg76, -]); - -var part85 = match("MESSAGE#76:logrotate", "nwparser.payload", "%{agent}: ALERT exited abnormally with %{fld10}", processor_chain([ - dup4, - dup5, - setc("event_description","ALERT exited abnormally"), -])); - -var msg77 = msg("logrotate", part85); - -var part86 = match("MESSAGE#77:ntpd", "nwparser.payload", "%{agent}[%{process_id}]: kernel time sync enabled %{fld10}", processor_chain([ - dup4, - dup5, - setc("event_description","kernel time sync enabled"), -])); - -var msg78 = msg("ntpd", part86); - -var part87 = match("MESSAGE#78:ntpd:01", "nwparser.payload", "%{agent}[%{process_id}]: time reset %{fld10}", processor_chain([ - dup4, - dup5, - setc("event_description","time reset"), -])); - -var msg79 = msg("ntpd:01", part87); - -var part88 = match("MESSAGE#79:ntpd:02", "nwparser.payload", "%{agent}[%{process_id}]: ntpd %{fld10}-r %{fld11}", processor_chain([ - dup4, - dup5, -])); - -var msg80 = msg("ntpd:02", part88); - -var part89 = match("MESSAGE#80:ntpd:03", "nwparser.payload", "%{agent}[%{process_id}]: ntpd exiting on signal %{fld10}", processor_chain([ - dup4, - dup5, - setc("event_description","ntpd exiting on signal"), -])); - -var msg81 = msg("ntpd:03", part89); - -var select20 = linear_select([ - msg78, - msg79, - msg80, - msg81, -]); - -var part90 = match("MESSAGE#81:pm", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> ntpd will start in %{fld10}", processor_chain([ - dup4, - dup5, - setc("event_description","ntpd will start in few secs"), -])); - -var msg82 = msg("pm", part90); - -var part91 = match("MESSAGE#82:pm:01", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> ntpd started", processor_chain([ - dup4, - dup5, - setc("event_description","ntpd started"), -])); - -var msg83 = msg("pm:01", part91); - -var part92 = match("MESSAGE#83:pm:02", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> print_msg(), %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","print message"), -])); - -var msg84 = msg("pm:02", part92); - -var part93 = match("MESSAGE#84:pm:03", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> %{info->} started", processor_chain([ - dup4, - dup5, - setc("event_description","service started"), -])); - -var msg85 = msg("pm:03", part93); - -var part94 = match("MESSAGE#85:pm:04", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> %{info->} will start in %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","service will start"), -])); - -var msg86 = msg("pm:04", part94); - -var part95 = match("MESSAGE#86:pm:05", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> check_license_validity(), %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","check license validity"), -])); - -var msg87 = msg("pm:05", part95); - -var part96 = match("MESSAGE#87:pm:06", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c%{fld20}.%{severity}> Connected to config daemon", processor_chain([ - dup4, - dup5, - setc("event_description","connected to config daemon"), -])); - -var msg88 = msg("pm:06", part96); - -var select21 = linear_select([ - msg82, - msg83, - msg84, - msg85, - msg86, - msg87, - msg88, -]); - -var part97 = match("MESSAGE#88:anacron", "nwparser.payload", "%{agent}[%{process_id}]: Updated timestamp for job %{info->} to %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","updated timestamp"), -])); - -var msg89 = msg("anacron", part97); - -var part98 = match("MESSAGE#89:anacron:01", "nwparser.payload", "%{agent}[%{process_id}]: Anacron %{version->} started on %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","anacron started"), -])); - -var msg90 = msg("anacron:01", part98); - -var part99 = match("MESSAGE#90:anacron:02", "nwparser.payload", "%{agent}[%{process_id}]: Normal exit %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","normal exit"), -])); - -var msg91 = msg("anacron:02", part99); - -var select22 = linear_select([ - msg89, - msg90, - msg91, -]); - -var part100 = match("MESSAGE#91:epmd", "nwparser.payload", "%{agent}: epmd: invalid packet size (%{fld1})", processor_chain([ - dup4, - dup5, - setc("event_description","invalid packet size"), -])); - -var msg92 = msg("epmd", part100); - -var part101 = match("MESSAGE#92:epmd:01", "nwparser.payload", "%{agent}: epmd: got %{info}", processor_chain([ - dup4, - dup5, -])); - -var msg93 = msg("epmd:01", part101); - -var part102 = match("MESSAGE#93:epmd:02", "nwparser.payload", "%{agent}: epmd: epmd running %{info}", processor_chain([ - dup4, - dup5, -])); - -var msg94 = msg("epmd:02", part102); - -var select23 = linear_select([ - msg92, - msg93, - msg94, -]); - -var part103 = match("MESSAGE#94:xinetd", "nwparser.payload", "%{agent}[%{process_id}]: xinetd %{event_description}", processor_chain([ - dup4, - dup5, -])); - -var msg95 = msg("xinetd", part103); - -var part104 = match("MESSAGE#95:xinetd:01", "nwparser.payload", "%{agent}[%{process_id}]: Started working: %{fld1->} available services", processor_chain([ - dup4, - dup5, -])); - -var msg96 = msg("xinetd:01", part104); - -var select24 = linear_select([ - msg95, - msg96, -]); - -var part105 = match("MESSAGE#96:auditd", "nwparser.payload", "%{agent}[%{process_id}]: Audit daemon rotating log files", processor_chain([ - dup4, - dup5, - setc("event_description","Audit daemon rotating log files"), -])); - -var msg97 = msg("auditd", part105); - -var part106 = match("MESSAGE#97:restorecond", "nwparser.payload", "%{agent}: Reset file context %{filename}: %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","Reset file"), -])); - -var msg98 = msg("restorecond", part106); - -var part107 = match("MESSAGE#98:authd", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> handle_authd unknown message =%{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","handle authd unknown message"), -])); - -var msg99 = msg("authd", part107); - -var part108 = match("MESSAGE#99:authd:01", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> authd_signal_handler(), %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","authd signal handler"), -])); - -var msg100 = msg("authd:01", part108); - -var part109 = match("MESSAGE#100:authd:02", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> authd_close(): %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","authd close"), -])); - -var msg101 = msg("authd:02", part109); - -var select25 = linear_select([ - msg99, - msg100, - msg101, -]); - -var part110 = match("MESSAGE#101:rsyslogd/0", "nwparser.payload", "%{agent}: W%{p0}"); - -var part111 = match("MESSAGE#101:rsyslogd/1_0", "nwparser.p0", "ARNING%{p0}"); - -var part112 = match("MESSAGE#101:rsyslogd/1_1", "nwparser.p0", "arning%{p0}"); - -var select26 = linear_select([ - part111, - part112, -]); - -var part113 = match("MESSAGE#101:rsyslogd/2", "nwparser.p0", ": %{event_description}"); - -var all11 = all_match({ - processors: [ - part110, - select26, - part113, - ], - on_success: processor_chain([ - dup4, - dup5, - ]), -}); - -var msg102 = msg("rsyslogd", all11); - -var part114 = match("MESSAGE#102:shutdown", "nwparser.payload", "%{agent}[%{process_id}]: shutting down %{info}", processor_chain([ - dup4, - dup5, - setc("event_description","shutting down"), -])); - -var msg103 = msg("shutdown", part114); - -var part115 = match("MESSAGE#103:cmd", "nwparser.payload", "%{agent}: \u003c\u003c%{fld20}.%{severity}> cmd starting %{fld1}", processor_chain([ - dup4, - dup5, - setc("event_description","cmd starting"), -])); - -var msg104 = msg("cmd", part115); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "anacron": select22, - "auditd": msg97, - "authd": select25, - "ccd": select17, - "cli": select12, - "cmd": msg104, - "configd": select14, - "dmd": select19, - "epmd": select23, - "heartbeat": select15, - "logrotate": msg77, - "ntpd": select20, - "pm": select21, - "poller": msg45, - "restorecond": msg98, - "rsyslogd": msg102, - "runner": select16, - "schedulerd": select13, - "shutdown": msg103, - "sshd": select18, - "xinetd": select24, - }), -]); - -var part116 = match("MESSAGE#0:cli/0", "nwparser.payload", "%{agent}[%{process_id}]: \u003c\u003c-%{fld20}.%{severity}> %{username}@%{p0}"); - -var part117 = match_copy("MESSAGE#0:cli/2", "nwparser.p0", "action"); - -var part118 = match("MESSAGE#10:cli:pam", "nwparser.payload", "%{agent}[%{process_id}]: %{fld21}(%{fld1}:%{fld2}): pam_putenv: %{fld3}", processor_chain([ - dup4, - dup5, - dup6, -])); diff --git a/x-pack/filebeat/module/bluecoat/director/ingest/pipeline.yml b/x-pack/filebeat/module/bluecoat/director/ingest/pipeline.yml deleted file mode 100644 index 5a0a60c8971..00000000000 --- a/x-pack/filebeat/module/bluecoat/director/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Blue Coat Director - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/bluecoat/director/manifest.yml b/x-pack/filebeat/module/bluecoat/director/manifest.yml deleted file mode 100644 index 32b44dfa8ee..00000000000 --- a/x-pack/filebeat/module/bluecoat/director/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["bluecoat.director", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9527 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/bluecoat/director/test/generated.log b/x-pack/filebeat/module/bluecoat/director/test/generated.log deleted file mode 100644 index 6bf53ab9040..00000000000 --- a/x-pack/filebeat/module/bluecoat/director/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -ntpd[1001]: kernel time sync enabled utl -restorecond: : Reset file context quasiarc: liqua -auditd[5699]: Audit daemon rotating log files -anacron[5066]: Normal exit ehend -restorecond: : Reset file context vol: luptat -heartbeat: : < Processing command: accept -restorecond: : Reset file context nci: ofdeFin -auditd[6668]: Audit daemon rotating log files -anacron[1613]: Normal exit mvolu -ntpd[2959]: ntpd gelit-r tatno -anacron[654]: Updated timestamp for job rmagni to sit -dmd: : < Health state for metric"seq3874.mail.domain" "quid" changed to "fug", reason: "success" -auditd[2067]: Audit daemon rotating log files -pm[5969]: < check_license_validity(), tae -logrotate: : ALERT exited abnormally with temUten -sshd: : < error: Bind to port Duisau on psum failed: failure -configd: : < itaut@rveli: command: accept -authd: : < authd_signal_handler(), quam -xinetd[6547]: Started working: onproide available services -logrotate: : ALERT exited abnormally with tfug -heartbeat: : < Processing command: deny -rsyslogd: : Warning: rehe -sshd: : < error: Bind to port erc on amqu failed: unknown -ntpd[4515]: ntpd emp-r aperia -restorecond: : Reset file context run: vol -logrotate: : ALERT exited abnormally with mporain -heartbeat: : < connect: atu -cmd: : < cmd starting adeseru -cli[7108]: <<-uam.low> tmo@::fficiade:10.2.53.125 : CLI launched -pm[7061]: < ntpd will start in tlabo -poller[795]: < Querying content system for job results. -runner[6134]: < Processing command: allow -epmd: : epmd: epmd running orpor -runner[602]: < Failed to exec olup -shutdown[2807]: shutting down non -configd: : < sperna@sintocc: command: cancel -auditd[2986]: Audit daemon rotating log files -configd: : < CREATE onsequ -auditd[1243]: Audit daemon rotating log files -xinetd[6599]: Started working: naal available services -xinetd[5850]: Started working: rQu available services -heartbeat: : < queips: undefined symbol: ncidi -authd: : < authd_close(): npr -anacron[6373]: Anacron 1.3962 started on epre -cli[3979]: <<-iduntu.medium> temUt@avol752.www5.test : Processing command accept -cmd: : < cmd starting isiuta -sshd[5227]: dutp(psaquaea:taevita): pam_putenv: ameiusm -ccd: : < Device elitse6672.internal.localdomain: mquisno -runner[1859]: < Failed to exec umSe -shutdown[6110]: shutting down itau -sshd[2415]: PAM lorsita more authentication failure; dolore -rsyslogd: : Warning: tio -cli[802]: <<-gnaaliqu.very-high> velillu@::cteturad:10.18.204.87 : Processing a secure command... -heartbeat: : < connect: inimveni -authd: : < authd_close(): psumqu -runner[2558]: < Failed to exec edquiac -anacron[4538]: Updated timestamp for job remips to uisaute -auditd[6837]: Audit daemon rotating log files -pm[1493]: < print_msg(), dic -configd: : < Device "itation4168.api.domain" completed command(s) accept ;; CPL generated by Visual Policy Manager: isciv ;rroqu ; nofd ; dipisci -epmd: : epmd: invalid packet size (mquae) -runner[429]: < File reading failed -shutdown[7595]: shutting down emqu -heartbeat: : < The HB command is accept -authd: : < authd_signal_handler(), isetquas -authd: : < authd_signal_handler(), gnaal -logrotate: : ALERT exited abnormally with voluptas -ntpd[627]: ntpd exiting on signal orin -restorecond: : Reset file context ecillu: mmodoc -cli[1140]: <<-abore.high> modocon@ipsu3680.mail.test : Processing command: deny -sshd: : bad username mquisn -ntpd[1313]: ntpd derit-r orese -ccd: : < Device Communication Daemon online -rsyslogd: : Warning: moles -restorecond: : Reset file context olup: aco -shutdown[609]: shutting down ser -ntpd[2991]: ntpd orinrep-r quiavol -dmd: : < inserted device id = sBonor2001.www5.example and serial number = amc into DB -ccd: : < ccd_handle_read_failure(), uid -cmd: : < cmd starting lmolesti -dmd: : < inserted device id = ersp6625.internal.domain and serial number = seq into DB -cmd: : < cmd starting uipexe -heartbeat: : < The HB command is cancel -anacron[7360]: Normal exit tperspic -dmd: : < Filter on (tetura) things. riosamni -ccd: : < Device eleumiu2454.api.local: tat -schedulerd: : < System time changed, recomputing job run times. -xinetd[3450]: Started working: aconsequ available services -authd: : < handle_authd unknown message =utemvel -rsyslogd: : Warning: iusm -ntpd[16]: time reset stquido -ccd: : < Device olu5333.www.domain: orumSe -anacron[80]: Normal exit ici -ntpd[7612]: kernel time sync enabled nturmag -cli[7128]: eseruntm(lpaquiof:oloreeu): pam_putenv: olor -schedulerd: : < Executing Job "tquo" execution iatnu -logrotate: : ALERT exited abnormally with ntut -poller[7151]: < Querying content system for job results. -ntpd[2314]: ntpd litanim-r rQuisaut -heartbeat: : < Processing command: block diff --git a/x-pack/filebeat/module/bluecoat/director/test/generated.log-expected.json b/x-pack/filebeat/module/bluecoat/director/test/generated.log-expected.json deleted file mode 100644 index f75fd496865..00000000000 --- a/x-pack/filebeat/module/bluecoat/director/test/generated.log-expected.json +++ /dev/null @@ -1,2295 +0,0 @@ -[ - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[1001]: kernel time sync enabled utl", - "fileset.name": "director", - "input.type": "log", - "log.offset": 0, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 1001, - "rsa.internal.event_desc": "kernel time sync enabled", - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "restorecond", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "restorecond: : Reset file context quasiarc: liqua", - "file.name": "quasiarc", - "fileset.name": "director", - "input.type": "log", - "log.offset": 41, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "Reset file", - "rsa.internal.messageid": "restorecond", - "rsa.misc.client": "restorecond:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "auditd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "auditd[5699]: Audit daemon rotating log files", - "fileset.name": "director", - "input.type": "log", - "log.offset": 91, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 5699, - "rsa.internal.event_desc": "Audit daemon rotating log files", - "rsa.internal.messageid": "auditd", - "rsa.misc.client": "auditd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "anacron", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "anacron[5066]: Normal exit ehend", - "fileset.name": "director", - "input.type": "log", - "log.offset": 137, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 5066, - "rsa.internal.event_desc": "normal exit", - "rsa.internal.messageid": "anacron", - "rsa.misc.client": "anacron", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "restorecond", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "restorecond: : Reset file context vol: luptat", - "file.name": "vol", - "fileset.name": "director", - "input.type": "log", - "log.offset": 170, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "Reset file", - "rsa.internal.messageid": "restorecond", - "rsa.misc.client": "restorecond:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < Processing command: accept", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 216, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "restorecond", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "restorecond: : Reset file context nci: ofdeFin", - "file.name": "nci", - "fileset.name": "director", - "input.type": "log", - "log.offset": 272, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "Reset file", - "rsa.internal.messageid": "restorecond", - "rsa.misc.client": "restorecond:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "auditd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "auditd[6668]: Audit daemon rotating log files", - "fileset.name": "director", - "input.type": "log", - "log.offset": 319, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 6668, - "rsa.internal.event_desc": "Audit daemon rotating log files", - "rsa.internal.messageid": "auditd", - "rsa.misc.client": "auditd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "anacron", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "anacron[1613]: Normal exit mvolu", - "fileset.name": "director", - "input.type": "log", - "log.offset": 365, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 1613, - "rsa.internal.event_desc": "normal exit", - "rsa.internal.messageid": "anacron", - "rsa.misc.client": "anacron", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[2959]: ntpd gelit-r tatno", - "fileset.name": "director", - "input.type": "log", - "log.offset": 398, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2959, - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "anacron", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "anacron[654]: Updated timestamp for job rmagni to sit", - "fileset.name": "director", - "input.type": "log", - "log.offset": 429, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 654, - "rsa.db.index": "rmagni", - "rsa.internal.event_desc": "updated timestamp", - "rsa.internal.messageid": "anacron", - "rsa.misc.client": "anacron", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "dmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "dmd: : < Health state for metric\"seq3874.mail.domain\" \"quid\" changed to \"fug\", reason: \"success\"", - "fileset.name": "director", - "host.name": "seq3874.mail.domain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 483, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.hosts": [ - "seq3874.mail.domain" - ], - "rsa.internal.messageid": "dmd", - "rsa.misc.change_new": "fug", - "rsa.misc.change_old": "quid", - "rsa.misc.client": "dmd:", - "rsa.misc.result": "success", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "seq3874.mail.domain" - ], - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "auditd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "auditd[2067]: Audit daemon rotating log files", - "fileset.name": "director", - "input.type": "log", - "log.offset": 598, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2067, - "rsa.internal.event_desc": "Audit daemon rotating log files", - "rsa.internal.messageid": "auditd", - "rsa.misc.client": "auditd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "pm", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "pm[5969]: < check_license_validity(), tae", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 644, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 5969, - "rsa.internal.event_desc": "check license validity", - "rsa.internal.messageid": "pm", - "rsa.misc.client": "pm", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "logrotate", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "logrotate: : ALERT exited abnormally with temUten", - "fileset.name": "director", - "input.type": "log", - "log.offset": 705, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "ALERT exited abnormally", - "rsa.internal.messageid": "logrotate", - "rsa.misc.client": "logrotate:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "sshd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "sshd: : < error: Bind to port Duisau on psum failed: failure", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 755, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "sshd", - "rsa.misc.client": "sshd:", - "rsa.misc.result": "failure", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "configd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "configd: : < itaut@rveli: command: accept", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 828, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.user": [ - "itaut" - ], - "rsa.internal.messageid": "configd", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.client": "configd:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ], - "user.name": "itaut" - }, - { - "event.code": "authd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "authd: : < authd_signal_handler(), quam", - "fileset.name": "director", - "input.type": "log", - "log.level": "low", - "log.offset": 882, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "authd signal handler", - "rsa.internal.messageid": "authd", - "rsa.misc.client": "authd:", - "rsa.misc.severity": "low", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "xinetd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "xinetd[6547]: Started working: onproide available services", - "fileset.name": "director", - "input.type": "log", - "log.offset": 934, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 6547, - "rsa.internal.messageid": "xinetd", - "rsa.misc.client": "xinetd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "logrotate", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "logrotate: : ALERT exited abnormally with tfug", - "fileset.name": "director", - "input.type": "log", - "log.offset": 993, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "ALERT exited abnormally", - "rsa.internal.messageid": "logrotate", - "rsa.misc.client": "logrotate:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < Processing command: deny", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 1040, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "rsyslogd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "rsyslogd: : Warning: rehe", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1092, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "rehe", - "rsa.internal.messageid": "rsyslogd", - "rsa.misc.client": "rsyslogd:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "sshd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "sshd: : < error: Bind to port erc on amqu failed: unknown", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 1118, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "sshd", - "rsa.misc.client": "sshd:", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[4515]: ntpd emp-r aperia", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1190, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 4515, - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "restorecond", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "restorecond: : Reset file context run: vol", - "file.name": "run", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1220, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "Reset file", - "rsa.internal.messageid": "restorecond", - "rsa.misc.client": "restorecond:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "logrotate", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "logrotate: : ALERT exited abnormally with mporain", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1263, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "ALERT exited abnormally", - "rsa.internal.messageid": "logrotate", - "rsa.misc.client": "logrotate:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < connect: atu", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1313, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "No such file or directory", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "cmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cmd: : < cmd starting adeseru", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 1358, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "cmd starting", - "rsa.internal.messageid": "cmd", - "rsa.misc.client": "cmd:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "cli", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cli[7108]: <<-uam.low> tmo@::fficiade:10.2.53.125 : CLI launched", - "fileset.name": "director", - "input.type": "log", - "log.level": "low", - "log.offset": 1401, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 7108, - "related.ip": [ - "10.2.53.125" - ], - "related.user": [ - "tmo" - ], - "rsa.internal.event_desc": "CLI launched", - "rsa.internal.messageid": "cli", - "rsa.misc.client": "cli", - "rsa.misc.severity": "low", - "service.type": "bluecoat", - "source.ip": "10.2.53.125", - "tags": [ - "bluecoat.director", - "forwarded" - ], - "user.name": "tmo" - }, - { - "event.code": "pm", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "pm[7061]: < ntpd will start in tlabo", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1466, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 7061, - "rsa.internal.event_desc": "ntpd will start in few secs", - "rsa.internal.messageid": "pm", - "rsa.misc.client": "pm", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "poller", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "poller[795]: < Querying content system for job results.", - "fileset.name": "director", - "input.type": "log", - "log.level": "low", - "log.offset": 1521, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 795, - "rsa.internal.event_desc": "Querying content system for job results", - "rsa.internal.messageid": "poller", - "rsa.misc.client": "poller", - "rsa.misc.severity": "low", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "runner", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "runner[6134]: < Processing command: allow", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1591, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 6134, - "rsa.internal.messageid": "runner", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.client": "runner", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "epmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "epmd: : epmd: epmd running orpor", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1648, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.db.index": "orpor", - "rsa.internal.messageid": "epmd", - "rsa.misc.client": "epmd:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "runner", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "runner[602]: < Failed to exec olup", - "file.name": "olup", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1681, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 602, - "rsa.internal.messageid": "runner", - "rsa.misc.client": "runner", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "shutdown", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "shutdown[2807]: shutting down non", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1733, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2807, - "rsa.db.index": "non", - "rsa.internal.event_desc": "shutting down", - "rsa.internal.messageid": "shutdown", - "rsa.misc.client": "shutdown", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "configd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "configd: : < sperna@sintocc: command: cancel", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 1767, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.user": [ - "sperna" - ], - "rsa.internal.messageid": "configd", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "configd:", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ], - "user.name": "sperna" - }, - { - "event.code": "auditd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "auditd[2986]: Audit daemon rotating log files", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1826, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2986, - "rsa.internal.event_desc": "Audit daemon rotating log files", - "rsa.internal.messageid": "auditd", - "rsa.misc.client": "auditd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "configd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "configd: : < CREATE onsequ", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 1872, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.db.index": "onsequ", - "rsa.internal.event_desc": "Table creation", - "rsa.internal.messageid": "configd", - "rsa.misc.client": "configd:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "auditd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "auditd[1243]: Audit daemon rotating log files", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1915, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 1243, - "rsa.internal.event_desc": "Audit daemon rotating log files", - "rsa.internal.messageid": "auditd", - "rsa.misc.client": "auditd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "xinetd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "xinetd[6599]: Started working: naal available services", - "fileset.name": "director", - "input.type": "log", - "log.offset": 1961, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 6599, - "rsa.internal.messageid": "xinetd", - "rsa.misc.client": "xinetd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "xinetd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "xinetd[5850]: Started working: rQu available services", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2016, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 5850, - "rsa.internal.messageid": "xinetd", - "rsa.misc.client": "xinetd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < queips: undefined symbol: ncidi", - "file.name": "queips", - "fileset.name": "director", - "input.type": "log", - "log.level": "low", - "log.offset": 2070, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.db.index": "ncidi", - "rsa.internal.event_desc": "undefined symbol", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "low", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "authd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "authd: : < authd_close(): npr", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2128, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.db.index": "npr", - "rsa.internal.event_desc": "authd close", - "rsa.internal.messageid": "authd", - "rsa.misc.client": "authd:", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "anacron", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "anacron[6373]: Anacron 1.3962 started on epre", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2174, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "observer.version": "1.3962", - "process.pid": 6373, - "rsa.internal.event_desc": "anacron started", - "rsa.internal.messageid": "anacron", - "rsa.misc.client": "anacron", - "rsa.misc.version": "1.3962", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "cli", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cli[3979]: <<-iduntu.medium> temUt@avol752.www5.test : Processing command accept", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 2220, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 3979, - "related.hosts": [ - "avol752.www5.test" - ], - "related.user": [ - "temUt" - ], - "rsa.internal.messageid": "cli", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.client": "cli", - "rsa.misc.severity": "medium", - "rsa.network.domain": "avol752.www5.test", - "server.domain": "avol752.www5.test", - "server.registered_domain": "www5.test", - "server.subdomain": "avol752", - "server.top_level_domain": "test", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ], - "user.name": "temUt" - }, - { - "event.code": "cmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cmd: : < cmd starting isiuta", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 2301, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "cmd starting", - "rsa.internal.messageid": "cmd", - "rsa.misc.client": "cmd:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "sshd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "sshd[5227]: dutp(psaquaea:taevita): pam_putenv: ameiusm", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2342, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 5227, - "rsa.internal.event_desc": "bad variable", - "rsa.internal.messageid": "sshd", - "rsa.misc.client": "sshd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ccd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ccd: : < Device elitse6672.internal.localdomain: mquisno", - "fileset.name": "director", - "host.name": "elitse6672.internal.localdomain", - "input.type": "log", - "log.level": "low", - "log.offset": 2398, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.hosts": [ - "elitse6672.internal.localdomain" - ], - "rsa.db.index": "mquisno", - "rsa.internal.event_desc": "info on device connection", - "rsa.internal.messageid": "ccd", - "rsa.misc.client": "ccd:", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "elitse6672.internal.localdomain" - ], - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "runner", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "runner[1859]: < Failed to exec umSe", - "file.name": "umSe", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 2465, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 1859, - "rsa.internal.messageid": "runner", - "rsa.misc.client": "runner", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "shutdown", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "shutdown[6110]: shutting down itau", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2516, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 6110, - "rsa.db.index": "itau", - "rsa.internal.event_desc": "shutting down", - "rsa.internal.messageid": "shutdown", - "rsa.misc.client": "shutdown", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "sshd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "sshd[2415]: PAM lorsita more authentication failure; dolore", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2551, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2415, - "rsa.db.index": "dolore", - "rsa.internal.event_desc": "authentication failure", - "rsa.internal.messageid": "sshd", - "rsa.misc.client": "sshd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "rsyslogd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "rsyslogd: : Warning: tio", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2611, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "tio", - "rsa.internal.messageid": "rsyslogd", - "rsa.misc.client": "rsyslogd:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "cli", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cli[802]: <<-gnaaliqu.very-high> velillu@::cteturad:10.18.204.87 : Processing a secure command...", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2636, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 802, - "related.ip": [ - "10.18.204.87" - ], - "related.user": [ - "velillu" - ], - "rsa.internal.event_desc": "Processing a secure command", - "rsa.internal.messageid": "cli", - "rsa.misc.client": "cli", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "source.ip": "10.18.204.87", - "tags": [ - "bluecoat.director", - "forwarded" - ], - "user.name": "velillu" - }, - { - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < connect: inimveni", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 2734, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "No such file or directory", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "authd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "authd: : < authd_close(): psumqu", - "fileset.name": "director", - "input.type": "log", - "log.level": "low", - "log.offset": 2781, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.db.index": "psumqu", - "rsa.internal.event_desc": "authd close", - "rsa.internal.messageid": "authd", - "rsa.misc.client": "authd:", - "rsa.misc.severity": "low", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "runner", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "runner[2558]: < Failed to exec edquiac", - "file.name": "edquiac", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 2826, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2558, - "rsa.internal.messageid": "runner", - "rsa.misc.client": "runner", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "anacron", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "anacron[4538]: Updated timestamp for job remips to uisaute", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2877, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 4538, - "rsa.db.index": "remips", - "rsa.internal.event_desc": "updated timestamp", - "rsa.internal.messageid": "anacron", - "rsa.misc.client": "anacron", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "auditd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "auditd[6837]: Audit daemon rotating log files", - "fileset.name": "director", - "input.type": "log", - "log.offset": 2936, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 6837, - "rsa.internal.event_desc": "Audit daemon rotating log files", - "rsa.internal.messageid": "auditd", - "rsa.misc.client": "auditd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "pm", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "pm[1493]: < print_msg(), dic", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 2982, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 1493, - "rsa.db.index": "dic", - "rsa.internal.event_desc": "print message", - "rsa.internal.messageid": "pm", - "rsa.misc.client": "pm", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "configd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "configd: : < Device \"itation4168.api.domain\" completed command(s) accept ;; CPL generated by Visual Policy Manager: isciv ;rroqu ; nofd ; dipisci", - "fileset.name": "director", - "host.name": "itation4168.api.domain", - "input.type": "log", - "log.level": "low", - "log.offset": 3025, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.hosts": [ - "itation4168.api.domain" - ], - "rsa.db.index": "dipisci", - "rsa.internal.event_desc": "This file is automatically generated", - "rsa.internal.messageid": "configd", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.client": "configd:", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "itation4168.api.domain" - ], - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "epmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "epmd: : epmd: invalid packet size (mquae)", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3184, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "invalid packet size", - "rsa.internal.messageid": "epmd", - "rsa.misc.client": "epmd:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "runner", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "runner[429]: < File reading failed", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3226, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 429, - "rsa.internal.event_desc": "File reading failed", - "rsa.internal.messageid": "runner", - "rsa.misc.client": "runner", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "shutdown", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "shutdown[7595]: shutting down emqu", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3280, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 7595, - "rsa.db.index": "emqu", - "rsa.internal.event_desc": "shutting down", - "rsa.internal.messageid": "shutdown", - "rsa.misc.client": "shutdown", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < The HB command is accept", - "fileset.name": "director", - "input.type": "log", - "log.level": "low", - "log.offset": 3315, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "low", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "authd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "authd: : < authd_signal_handler(), isetquas", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3368, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "authd signal handler", - "rsa.internal.messageid": "authd", - "rsa.misc.client": "authd:", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "authd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "authd: : < authd_signal_handler(), gnaal", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 3427, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "authd signal handler", - "rsa.internal.messageid": "authd", - "rsa.misc.client": "authd:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "logrotate", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "logrotate: : ALERT exited abnormally with voluptas", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3483, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "ALERT exited abnormally", - "rsa.internal.messageid": "logrotate", - "rsa.misc.client": "logrotate:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[627]: ntpd exiting on signal orin", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3534, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 627, - "rsa.internal.event_desc": "ntpd exiting on signal", - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "restorecond", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "restorecond: : Reset file context ecillu: mmodoc", - "file.name": "ecillu", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3573, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "Reset file", - "rsa.internal.messageid": "restorecond", - "rsa.misc.client": "restorecond:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "cli", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cli[1140]: <<-abore.high> modocon@ipsu3680.mail.test : Processing command: deny", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 3622, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 1140, - "related.hosts": [ - "ipsu3680.mail.test" - ], - "related.user": [ - "modocon" - ], - "rsa.internal.messageid": "cli", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.client": "cli", - "rsa.misc.severity": "high", - "rsa.network.domain": "ipsu3680.mail.test", - "server.domain": "ipsu3680.mail.test", - "server.registered_domain": "mail.test", - "server.subdomain": "ipsu3680", - "server.top_level_domain": "test", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ], - "user.name": "modocon" - }, - { - "event.code": "sshd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "sshd: : bad username mquisn", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3702, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "bad username", - "rsa.internal.messageid": "sshd", - "rsa.misc.client": "sshd:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[1313]: ntpd derit-r orese", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3730, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 1313, - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ccd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ccd: : < Device Communication Daemon online", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 3761, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "device communication daemon online", - "rsa.internal.messageid": "ccd", - "rsa.misc.client": "ccd:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "rsyslogd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "rsyslogd: : Warning: moles", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3821, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "moles", - "rsa.internal.messageid": "rsyslogd", - "rsa.misc.client": "rsyslogd:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "restorecond", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "restorecond: : Reset file context olup: aco", - "file.name": "olup", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3848, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "Reset file", - "rsa.internal.messageid": "restorecond", - "rsa.misc.client": "restorecond:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "shutdown", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "shutdown[609]: shutting down ser", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3892, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 609, - "rsa.db.index": "ser", - "rsa.internal.event_desc": "shutting down", - "rsa.internal.messageid": "shutdown", - "rsa.misc.client": "shutdown", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[2991]: ntpd orinrep-r quiavol", - "fileset.name": "director", - "input.type": "log", - "log.offset": 3925, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2991, - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "dmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "dmd: : < inserted device id = sBonor2001.www5.example and serial number = amc into DB", - "fileset.name": "director", - "host.name": "sBonor2001.www5.example", - "input.type": "log", - "log.level": "medium", - "log.offset": 3960, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.hosts": [ - "sBonor2001.www5.example" - ], - "rsa.internal.messageid": "dmd", - "rsa.misc.client": "dmd:", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "sBonor2001.www5.example" - ], - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ccd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ccd: : < ccd_handle_read_failure(), uid", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4059, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.db.index": "uid", - "rsa.internal.event_desc": "ccd handle read failure", - "rsa.internal.messageid": "ccd", - "rsa.misc.client": "ccd:", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "cmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cmd: : < cmd starting lmolesti", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 4114, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "cmd starting", - "rsa.internal.messageid": "cmd", - "rsa.misc.client": "cmd:", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "dmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "dmd: : < inserted device id = ersp6625.internal.domain and serial number = seq into DB", - "fileset.name": "director", - "host.name": "ersp6625.internal.domain", - "input.type": "log", - "log.level": "high", - "log.offset": 4158, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.hosts": [ - "ersp6625.internal.domain" - ], - "rsa.internal.messageid": "dmd", - "rsa.misc.client": "dmd:", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ersp6625.internal.domain" - ], - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "cmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cmd: : < cmd starting uipexe", - "fileset.name": "director", - "input.type": "log", - "log.level": "medium", - "log.offset": 4260, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "cmd starting", - "rsa.internal.messageid": "cmd", - "rsa.misc.client": "cmd:", - "rsa.misc.severity": "medium", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < The HB command is cancel", - "fileset.name": "director", - "input.type": "log", - "log.level": "low", - "log.offset": 4305, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "low", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "anacron", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "anacron[7360]: Normal exit tperspic", - "fileset.name": "director", - "input.type": "log", - "log.offset": 4354, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 7360, - "rsa.internal.event_desc": "normal exit", - "rsa.internal.messageid": "anacron", - "rsa.misc.client": "anacron", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "dmd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "dmd: : < Filter on (tetura) things. riosamni", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4390, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "riosamni", - "rsa.internal.messageid": "dmd", - "rsa.misc.client": "dmd:", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ccd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ccd: : < Device eleumiu2454.api.local: tat", - "fileset.name": "director", - "host.name": "eleumiu2454.api.local", - "input.type": "log", - "log.level": "low", - "log.offset": 4450, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.hosts": [ - "eleumiu2454.api.local" - ], - "rsa.db.index": "tat", - "rsa.internal.event_desc": "info on device connection", - "rsa.internal.messageid": "ccd", - "rsa.misc.client": "ccd:", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "eleumiu2454.api.local" - ], - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "schedulerd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "schedulerd: : < System time changed, recomputing job run times.", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4505, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "System time changed, recomputing job run times", - "rsa.internal.messageid": "schedulerd", - "rsa.misc.client": "schedulerd:", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "xinetd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "xinetd[3450]: Started working: aconsequ available services", - "fileset.name": "director", - "input.type": "log", - "log.offset": 4586, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 3450, - "rsa.internal.messageid": "xinetd", - "rsa.misc.client": "xinetd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "authd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "authd: : < handle_authd unknown message =utemvel", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 4645, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "handle authd unknown message", - "rsa.internal.messageid": "authd", - "rsa.misc.client": "authd:", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "rsyslogd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "rsyslogd: : Warning: iusm", - "fileset.name": "director", - "input.type": "log", - "log.offset": 4707, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "iusm", - "rsa.internal.messageid": "rsyslogd", - "rsa.misc.client": "rsyslogd:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[16]: time reset stquido", - "fileset.name": "director", - "input.type": "log", - "log.offset": 4733, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 16, - "rsa.internal.event_desc": "time reset", - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ccd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ccd: : < Device olu5333.www.domain: orumSe", - "fileset.name": "director", - "host.name": "olu5333.www.domain", - "input.type": "log", - "log.level": "high", - "log.offset": 4762, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "related.hosts": [ - "olu5333.www.domain" - ], - "rsa.db.index": "orumSe", - "rsa.internal.event_desc": "info on device connection", - "rsa.internal.messageid": "ccd", - "rsa.misc.client": "ccd:", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "olu5333.www.domain" - ], - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "anacron", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "anacron[80]: Normal exit ici", - "fileset.name": "director", - "input.type": "log", - "log.offset": 4817, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 80, - "rsa.internal.event_desc": "normal exit", - "rsa.internal.messageid": "anacron", - "rsa.misc.client": "anacron", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[7612]: kernel time sync enabled nturmag", - "fileset.name": "director", - "input.type": "log", - "log.offset": 4846, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 7612, - "rsa.internal.event_desc": "kernel time sync enabled", - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "cli", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "cli[7128]: eseruntm(lpaquiof:oloreeu): pam_putenv: olor", - "fileset.name": "director", - "input.type": "log", - "log.offset": 4891, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 7128, - "rsa.internal.event_desc": "bad variable", - "rsa.internal.messageid": "cli", - "rsa.misc.client": "cli", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "schedulerd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "schedulerd: : < Executing Job \"tquo\" execution iatnu", - "fileset.name": "director", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4947, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "schedulerd", - "rsa.misc.client": "schedulerd:", - "rsa.misc.operation_id": "tquo", - "rsa.misc.severity": "very-high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "logrotate", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "logrotate: : ALERT exited abnormally with ntut", - "fileset.name": "director", - "input.type": "log", - "log.offset": 5015, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.event_desc": "ALERT exited abnormally", - "rsa.internal.messageid": "logrotate", - "rsa.misc.client": "logrotate:", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "poller", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "poller[7151]: < Querying content system for job results.", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 5062, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 7151, - "rsa.internal.event_desc": "Querying content system for job results", - "rsa.internal.messageid": "poller", - "rsa.misc.client": "poller", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "ntpd[2314]: ntpd litanim-r rQuisaut", - "fileset.name": "director", - "input.type": "log", - "log.offset": 5129, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "process.pid": 2314, - "rsa.internal.messageid": "ntpd", - "rsa.misc.client": "ntpd", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - }, - { - "event.action": "block", - "event.code": "heartbeat", - "event.dataset": "bluecoat.director", - "event.module": "bluecoat", - "event.original": "heartbeat: : < Processing command: block", - "fileset.name": "director", - "input.type": "log", - "log.level": "high", - "log.offset": 5165, - "observer.product": "Director", - "observer.type": "Configuration", - "observer.vendor": "Bluecoat", - "rsa.internal.messageid": "heartbeat", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.client": "heartbeat:", - "rsa.misc.severity": "high", - "service.type": "bluecoat", - "tags": [ - "bluecoat.director", - "forwarded" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/bluecoat/fields.go b/x-pack/filebeat/module/bluecoat/fields.go deleted file mode 100644 index 50bda15b60d..00000000000 --- a/x-pack/filebeat/module/bluecoat/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package bluecoat - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "bluecoat", asset.ModuleFieldsPri, AssetBluecoat); err != nil { - panic(err) - } -} - -// AssetBluecoat returns asset data. -// This is the base64 encoded zlib format compressed contents of module/bluecoat. -func AssetBluecoat() string { - return "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" -} diff --git a/x-pack/filebeat/module/cisco/_meta/config.yml b/x-pack/filebeat/module/cisco/_meta/config.yml index bd3886be727..afb51da92b1 100644 --- a/x-pack/filebeat/module/cisco/_meta/config.yml +++ b/x-pack/filebeat/module/cisco/_meta/config.yml @@ -93,44 +93,6 @@ # Filebeat will choose the paths depending on your OS. #var.paths: - nexus: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9506 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - meraki: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9525 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - umbrella: enabled: false diff --git a/x-pack/filebeat/module/cisco/_meta/docs.asciidoc b/x-pack/filebeat/module/cisco/_meta/docs.asciidoc index eb4777ea0b4..c020574dac0 100644 --- a/x-pack/filebeat/module/cisco/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/cisco/_meta/docs.asciidoc @@ -20,8 +20,6 @@ filesets for receiving logs over syslog or read from a file: - `amp` fileset: supports Cisco AMP API logs. - `ftd` fileset: supports Cisco Firepower Threat Defense logs. - `ios` fileset: supports Cisco IOS router and switch logs. -- `nexus` fileset: supports Cisco Nexus switch logs. -- `meraki` fileset: supports Cisco Meraki logs. - `umbrella` fileset: supports Cisco Umbrella logs. Cisco ASA devices also support exporting flow records using NetFlow, which is @@ -271,100 +269,6 @@ include::../include/timezone-support.asciidoc[] :fileset_ex!: -[float] -==== `nexus` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/cisco_nexus[Cisco Nexus] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "cisconxos" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9506` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `meraki` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/cisco_meraki[Cisco Meraki] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "ciscomeraki" device revision 118. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9525` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - [float] ==== `umbrella` fileset settings diff --git a/x-pack/filebeat/module/cisco/fields.go b/x-pack/filebeat/module/cisco/fields.go index 40d2eb18562..414ffb54896 100644 --- a/x-pack/filebeat/module/cisco/fields.go +++ b/x-pack/filebeat/module/cisco/fields.go @@ -19,5 +19,5 @@ func init() { // AssetCisco returns asset data. // This is the base64 encoded zlib format compressed contents of module/cisco. func AssetCisco() string { - return "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" + return "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" } diff --git a/x-pack/filebeat/module/cisco/meraki/_meta/fields.yml b/x-pack/filebeat/module/cisco/meraki/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/cisco/meraki/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/cisco/meraki/config/input.yml b/x-pack/filebeat/module/cisco/meraki/config/input.yml deleted file mode 100644 index 6a02d794ecf..00000000000 --- a/x-pack/filebeat/module/cisco/meraki/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Cisco" - product: "Meraki" - type: "Wireless" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/cisco/meraki/config/liblogparser.js - - ${path.home}/module/cisco/meraki/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/cisco/meraki/config/liblogparser.js b/x-pack/filebeat/module/cisco/meraki/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/cisco/meraki/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{hfld2}.%{hfld3->} %{p0}"); - -var dup2 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld4"), - constant("_appliance "), - field("p0"), - ], -}); - -var dup3 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld4"), - constant(" "), - field("p0"), - ], -}); - -var dup4 = match_copy("MESSAGE#0:flows/2_1", "nwparser.p0", "p0"); - -var dup5 = setc("eventcategory","1605020000"); - -var dup6 = setf("msg","$MSG"); - -var dup7 = setc("event_source","appliance"); - -var dup8 = setf("sensor","node"); - -var dup9 = date_time({ - dest: "event_time", - args: ["hfld2"], - fmts: [ - [dX], - ], -}); - -var dup10 = match_copy("MESSAGE#1:flows:01/1_2", "nwparser.p0", ""); - -var dup11 = match("MESSAGE#10:ids-alerts:01/1_0", "nwparser.p0", "dhost=%{dmacaddr->} direction=%{p0}"); - -var dup12 = match("MESSAGE#10:ids-alerts:01/1_1", "nwparser.p0", "shost=%{smacaddr->} direction=%{p0}"); - -var dup13 = match("MESSAGE#10:ids-alerts:01/2", "nwparser.p0", "%{direction->} protocol=%{protocol->} src=%{p0}"); - -var dup14 = match_copy("MESSAGE#10:ids-alerts:01/4", "nwparser.p0", "signame"); - -var dup15 = setc("eventcategory","1607000000"); - -var dup16 = setc("event_type","ids-alerts"); - -var dup17 = date_time({ - dest: "event_time", - args: ["fld3"], - fmts: [ - [dX], - ], -}); - -var dup18 = setc("event_type","security_event"); - -var dup19 = constant("Allow"); - -var dup20 = match("HEADER#0:0003/1_0", "nwparser.p0", "%{hfld4}_appliance %{p0}", processor_chain([ - dup2, -])); - -var dup21 = match("HEADER#0:0003/1_1", "nwparser.p0", "%{hfld4->} %{p0}", processor_chain([ - dup3, -])); - -var dup22 = linear_select([ - dup11, - dup12, -]); - -var dup23 = linear_select([ - dup20, - dup21, -]); - -var part1 = match("HEADER#0:0003/2", "nwparser.p0", "urls %{p0}"); - -var all1 = all_match({ - processors: [ - dup1, - dup23, - part1, - ], - on_success: processor_chain([ - setc("header_id","0003"), - setc("messageid","urls"), - ]), -}); - -var part2 = match("HEADER#1:0002/1_0", "nwparser.p0", "%{node}_appliance events %{p0}"); - -var part3 = match("HEADER#1:0002/1_1", "nwparser.p0", "%{node->} events %{p0}"); - -var select1 = linear_select([ - part2, - part3, -]); - -var part4 = match_copy("HEADER#1:0002/2", "nwparser.p0", "payload"); - -var all2 = all_match({ - processors: [ - dup1, - select1, - part4, - ], - on_success: processor_chain([ - setc("header_id","0002"), - setc("messageid","events"), - ]), -}); - -var part5 = match("HEADER#2:0001/2", "nwparser.p0", "%{messageid->} %{p0}"); - -var all3 = all_match({ - processors: [ - dup1, - dup23, - part5, - ], - on_success: processor_chain([ - setc("header_id","0001"), - ]), -}); - -var part6 = match("HEADER#3:0005/1_0", "nwparser.p0", "%{hfld4}_appliance %{p0}"); - -var part7 = match("HEADER#3:0005/1_1", "nwparser.p0", "%{hfld4->} %{p0}"); - -var select2 = linear_select([ - part6, - part7, -]); - -var part8 = match("HEADER#3:0005/2", "nwparser.p0", "%{} %{hfld5->} %{hfld6->} %{messageid->} %{p0}", processor_chain([ - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld6"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var all4 = all_match({ - processors: [ - dup1, - select2, - part8, - ], - on_success: processor_chain([ - setc("header_id","0005"), - ]), -}); - -var hdr1 = match("HEADER#4:0004", "message", "%{hfld1->} %{hfld2}.%{hfld3->} %{hfld4}_%{space->} %{messageid->} %{payload}", processor_chain([ - setc("header_id","0004"), -])); - -var select3 = linear_select([ - all1, - all2, - all3, - all4, - hdr1, -]); - -var part9 = match("MESSAGE#0:flows/0_0", "nwparser.payload", "%{node}_appliance %{p0}"); - -var part10 = match("MESSAGE#0:flows/0_1", "nwparser.payload", "%{node->} %{p0}"); - -var select4 = linear_select([ - part9, - part10, -]); - -var part11 = match("MESSAGE#0:flows/1", "nwparser.p0", "flows src=%{saddr->} dst=%{daddr->} %{p0}"); - -var part12 = match("MESSAGE#0:flows/2_0", "nwparser.p0", "mac=%{dmacaddr->} %{p0}"); - -var select5 = linear_select([ - part12, - dup4, -]); - -var part13 = match("MESSAGE#0:flows/3", "nwparser.p0", "protocol=%{protocol->} %{p0}"); - -var part14 = match("MESSAGE#0:flows/4_0", "nwparser.p0", "sport=%{sport->} dport=%{dport->} %{p0}"); - -var part15 = match("MESSAGE#0:flows/4_1", "nwparser.p0", "type=%{event_type->} %{p0}"); - -var select6 = linear_select([ - part14, - part15, - dup4, -]); - -var part16 = match("MESSAGE#0:flows/5", "nwparser.p0", "pattern: %{fld21->} %{info}"); - -var all5 = all_match({ - processors: [ - select4, - part11, - select5, - part13, - select6, - part16, - ], - on_success: processor_chain([ - dup5, - dup6, - lookup({ - dest: "nwparser.action", - map: map_actionType, - key: field("fld21"), - }), - dup7, - dup8, - dup9, - ]), -}); - -var msg1 = msg("flows", all5); - -var part17 = match("MESSAGE#1:flows:01/0", "nwparser.payload", "%{node->} flows %{action->} src=%{saddr->} dst=%{daddr->} mac=%{smacaddr->} protocol=%{protocol->} %{p0}"); - -var part18 = match("MESSAGE#1:flows:01/1_0", "nwparser.p0", "sport=%{sport->} dport=%{dport->} "); - -var part19 = match("MESSAGE#1:flows:01/1_1", "nwparser.p0", "type=%{event_type->} "); - -var select7 = linear_select([ - part18, - part19, - dup10, -]); - -var all6 = all_match({ - processors: [ - part17, - select7, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup8, - dup9, - ]), -}); - -var msg2 = msg("flows:01", all6); - -var part20 = match("MESSAGE#2:flows:02", "nwparser.payload", "%{node->} flows %{action}", processor_chain([ - dup5, - dup6, - dup7, - dup8, - dup9, -])); - -var msg3 = msg("flows:02", part20); - -var select8 = linear_select([ - msg1, - msg2, - msg3, -]); - -var part21 = match("MESSAGE#3:urls/0_0", "nwparser.payload", "%{node}_appliance urls src=%{p0}"); - -var part22 = match("MESSAGE#3:urls/0_1", "nwparser.payload", "%{node->} urls src=%{p0}"); - -var part23 = match("MESSAGE#3:urls/0_2", "nwparser.payload", "src=%{p0}"); - -var select9 = linear_select([ - part21, - part22, - part23, -]); - -var part24 = match("MESSAGE#3:urls/1", "nwparser.p0", "%{sport}:%{saddr->} dst=%{daddr}:%{dport->} mac=%{macaddr->} %{p0}"); - -var part25 = match("MESSAGE#3:urls/2_0", "nwparser.p0", "agent='%{user_agent}' request: %{p0}"); - -var part26 = match("MESSAGE#3:urls/2_1", "nwparser.p0", "agent=%{user_agent->} request: %{p0}"); - -var part27 = match("MESSAGE#3:urls/2_2", "nwparser.p0", "request: %{p0}"); - -var select10 = linear_select([ - part25, - part26, - part27, -]); - -var part28 = match("MESSAGE#3:urls/3", "nwparser.p0", "%{} %{web_method}%{url}"); - -var all7 = all_match({ - processors: [ - select9, - part24, - select10, - part28, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup8, - dup9, - ]), -}); - -var msg4 = msg("urls", all7); - -var part29 = match("MESSAGE#4:events/0", "nwparser.payload", "dhcp lease of ip %{saddr->} from server mac %{smacaddr->} for client mac %{p0}"); - -var part30 = match("MESSAGE#4:events/1_0", "nwparser.p0", "%{dmacaddr->} with hostname %{hostname->} from router %{p0}"); - -var part31 = match("MESSAGE#4:events/1_1", "nwparser.p0", "%{dmacaddr->} from router %{p0}"); - -var select11 = linear_select([ - part30, - part31, -]); - -var part32 = match("MESSAGE#4:events/2", "nwparser.p0", "%{hostip->} on subnet %{mask->} with dns %{dns_a_record}"); - -var all8 = all_match({ - processors: [ - part29, - select11, - part32, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup8, - dup9, - ]), -}); - -var msg5 = msg("events", all8); - -var part33 = match("MESSAGE#5:events:02/0", "nwparser.payload", "content_filtering_block url='%{url}' category0='%{category}' server='%{daddr}:%{dport}'%{p0}"); - -var part34 = match("MESSAGE#5:events:02/1_0", "nwparser.p0", " client_mac='%{dmacaddr}'"); - -var select12 = linear_select([ - part34, - dup10, -]); - -var all9 = all_match({ - processors: [ - part33, - select12, - ], - on_success: processor_chain([ - dup5, - dup6, - setc("event_description","content_filtering_block"), - dup8, - dup9, - ]), -}); - -var msg6 = msg("events:02", all9); - -var part35 = tagval("MESSAGE#6:events:01", "nwparser.payload", tvm, { - "aid": "fld1", - "arp_resp": "fld2", - "arp_src": "fld3", - "auth_neg_dur": "fld4", - "auth_neg_failed": "fld5", - "category0": "category", - "channel": "fld6", - "client_ip": "daddr", - "client_mac": "dmacaddr", - "connectivity": "fld28", - "dhcp_ip": "fld23", - "dhcp_lease_completed": "fld22", - "dhcp_resp": "fld26", - "dhcp_server": "fld24", - "dhcp_server_mac": "fld25", - "dns_req_rtt": "fld7", - "dns_resp": "fld8", - "dns_server": "fld9", - "duration": "duration", - "full_conn": "fld11", - "http_resp": "fld21", - "identity": "fld12", - "instigator": "fld20", - "ip_resp": "fld13", - "ip_src": "saddr", - "is_8021x": "fld15", - "is_wpa": "fld16", - "last_auth_ago": "fld17", - "radio": "fld18", - "reason": "fld19", - "rssi": "dclass_ratio1", - "server": "daddr", - "type": "event_type", - "url": "url", - "vap": "fld22", - "vpn_type": "fld27", -}, processor_chain([ - dup5, - dup6, - dup7, - dup8, - dup9, -])); - -var msg7 = msg("events:01", part35); - -var part36 = match("MESSAGE#7:events:03", "nwparser.payload", "IDS: %{info}", processor_chain([ - dup5, - dup6, - setc("event_description","events IDS"), - dup8, - dup9, -])); - -var msg8 = msg("events:03", part36); - -var part37 = match("MESSAGE#8:events:04/0", "nwparser.payload", "dhcp %{p0}"); - -var part38 = match("MESSAGE#8:events:04/1_0", "nwparser.p0", "no offers%{p0}"); - -var part39 = match("MESSAGE#8:events:04/1_1", "nwparser.p0", "release%{p0}"); - -var select13 = linear_select([ - part38, - part39, -]); - -var part40 = match("MESSAGE#8:events:04/2", "nwparser.p0", "%{}for mac %{macaddr}"); - -var all10 = all_match({ - processors: [ - part37, - select13, - part40, - ], - on_success: processor_chain([ - dup5, - dup6, - setc("event_description","events DHCP"), - dup8, - dup9, - ]), -}); - -var msg9 = msg("events:04", all10); - -var part41 = match("MESSAGE#9:events:05", "nwparser.payload", "MAC %{macaddr->} and MAC %{macaddr->} both claim IP: %{saddr}", processor_chain([ - dup5, - dup6, - setc("event_description"," events MAC"), - dup8, - dup9, -])); - -var msg10 = msg("events:05", part41); - -var select14 = linear_select([ - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, -]); - -var part42 = match("MESSAGE#10:ids-alerts:01/0", "nwparser.payload", "%{node->} ids-alerts signature=%{fld1->} priority=%{fld2->} timestamp=%{fld3}.%{fld4->} %{p0}"); - -var part43 = match("MESSAGE#10:ids-alerts:01/3_0", "nwparser.p0", "%{saddr}:%{sport->} dst=%{daddr}:%{dport->} message: %{p0}"); - -var part44 = match("MESSAGE#10:ids-alerts:01/3_1", "nwparser.p0", "%{saddr->} dst=%{daddr->} message: %{p0}"); - -var select15 = linear_select([ - part43, - part44, -]); - -var all11 = all_match({ - processors: [ - part42, - dup22, - dup13, - select15, - dup14, - ], - on_success: processor_chain([ - dup15, - dup6, - dup16, - dup8, - dup17, - ]), -}); - -var msg11 = msg("ids-alerts:01", all11); - -var part45 = match("MESSAGE#11:ids-alerts:03", "nwparser.payload", "%{node->} ids-alerts signature=%{fld1->} priority=%{fld2->} timestamp=%{fld3}.%{fld4}direction=%{direction->} protocol=%{protocol->} src=%{saddr}:%{sport}", processor_chain([ - dup15, - dup6, - dup16, - dup8, - dup17, -])); - -var msg12 = msg("ids-alerts:03", part45); - -var part46 = match("MESSAGE#12:ids-alerts:02", "nwparser.payload", "%{node->} ids-alerts signature=%{fld1->} priority=%{fld2->} timestamp=%{fld3}.%{fld4}protocol=%{protocol->} src=%{saddr->} dst=%{daddr}message: %{signame}", processor_chain([ - dup15, - dup6, - dup16, - dup8, - dup17, -])); - -var msg13 = msg("ids-alerts:02", part46); - -var select16 = linear_select([ - msg11, - msg12, - msg13, -]); - -var part47 = match("MESSAGE#13:security_event", "nwparser.payload", "%{node}security_event %{event_description->} url=%{url->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport->} mac=%{smacaddr->} name=%{fld10->} sha256=%{fld11->} disposition=%{disposition->} action=%{action}", processor_chain([ - dup5, - dup6, - dup18, - dup8, - dup9, -])); - -var msg14 = msg("security_event", part47); - -var part48 = match("MESSAGE#14:security_event:01/0", "nwparser.payload", "%{node->} security_event %{event_description->} signature=%{fld1->} priority=%{fld2->} timestamp=%{fld3}.%{fld4->} %{p0}"); - -var part49 = match("MESSAGE#14:security_event:01/3_0", "nwparser.p0", "%{saddr}:%{sport->} dst=%{daddr}:%{dport->} message:%{p0}"); - -var part50 = match("MESSAGE#14:security_event:01/3_1", "nwparser.p0", "%{saddr->} dst=%{daddr->} message:%{p0}"); - -var select17 = linear_select([ - part49, - part50, -]); - -var all12 = all_match({ - processors: [ - part48, - dup22, - dup13, - select17, - dup14, - ], - on_success: processor_chain([ - dup15, - dup6, - dup18, - dup8, - dup17, - ]), -}); - -var msg15 = msg("security_event:01", all12); - -var select18 = linear_select([ - msg14, - msg15, -]); - -var chain1 = processor_chain([ - select3, - msgid_select({ - "events": select14, - "flows": select8, - "ids-alerts": select16, - "security_event": select18, - "urls": msg4, - }), -]); - -var hdr2 = match("HEADER#0:0003/0", "message", "%{hfld1->} %{hfld2}.%{hfld3->} %{p0}"); - -var part51 = match_copy("MESSAGE#0:flows/2_1", "nwparser.p0", "p0"); - -var part52 = match_copy("MESSAGE#1:flows:01/1_2", "nwparser.p0", ""); - -var part53 = match("MESSAGE#10:ids-alerts:01/1_0", "nwparser.p0", "dhost=%{dmacaddr->} direction=%{p0}"); - -var part54 = match("MESSAGE#10:ids-alerts:01/1_1", "nwparser.p0", "shost=%{smacaddr->} direction=%{p0}"); - -var part55 = match("MESSAGE#10:ids-alerts:01/2", "nwparser.p0", "%{direction->} protocol=%{protocol->} src=%{p0}"); - -var part56 = match_copy("MESSAGE#10:ids-alerts:01/4", "nwparser.p0", "signame"); - -var part57 = match("HEADER#0:0003/1_0", "nwparser.p0", "%{hfld4}_appliance %{p0}", processor_chain([ - dup2, -])); - -var part58 = match("HEADER#0:0003/1_1", "nwparser.p0", "%{hfld4->} %{p0}", processor_chain([ - dup3, -])); - -var select19 = linear_select([ - dup11, - dup12, -]); - -var select20 = linear_select([ - dup20, - dup21, -]); diff --git a/x-pack/filebeat/module/cisco/meraki/ingest/pipeline.yml b/x-pack/filebeat/module/cisco/meraki/ingest/pipeline.yml deleted file mode 100644 index b80d31afad4..00000000000 --- a/x-pack/filebeat/module/cisco/meraki/ingest/pipeline.yml +++ /dev/null @@ -1,83 +0,0 @@ ---- -description: Pipeline for Cisco Meraki - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # URL - - set: - field: _temp_.url_domain - value: "{{url.domain}}" - ignore_failure: true - if: ctx?.url?.domain != null - - uri_parts: - field: url.original - ignore_failure: true - if: ctx?.url?.original != null - - append: - field: url.domain - value: "{{_temp_.url_domain}}" - ignore_failure: true - allow_duplicates: false - if: ctx?._temp_?.url_domain != null - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/cisco/meraki/manifest.yml b/x-pack/filebeat/module/cisco/meraki/manifest.yml deleted file mode 100644 index 6adeb1975aa..00000000000 --- a/x-pack/filebeat/module/cisco/meraki/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["cisco.meraki", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9541 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/cisco/meraki/test/generated.log b/x-pack/filebeat/module/cisco/meraki/test/generated.log deleted file mode 100644 index 05501480e40..00000000000 --- a/x-pack/filebeat/module/cisco/meraki/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -modtempo 1454047799.olab nto_ security_event olaborissecurity_event tur url=https://example.org/odoco/ria.jpg?ritin=uredolor#tatemac src=10.15.44.253:5078 dst=10.193.124.51:5293 mac=01:00:5e:28:ae:7d name=psa sha256=umq disposition=ntium action=deny -umdo 1455282753.itessequ vol_ events dhcp lease of ip 10.102.218.31 from server mac 01:00:5e:9c:c2:9c for client mac 01:00:5e:0f:87:e3 from router 10.15.16.212 on subnet ameaqu with dns aqu -uipexea 1456517708.tatio minim_ flows ceroinBC flows src=10.179.60.216 dst=10.69.53.104 protocol=udp pattern: 0 reprehe -mipsu 1457752662.consec taliquip_ flows radip flows block src=10.155.236.240 dst=10.112.46.169 mac=01:00:5e:7a:74:89 protocol=ipv6 type=roidents -obeataev 1458987616.lor uidexea_appliance events MAC 01:00:5e:e1:89:ac and MAC 01:00:5e:a3:d9:ac both claim IP: 10.14.107.140 -iutal 1460222571.dexe urerep events content_filtering_block url='https://api.example.org/liqu/lorem.gif?ueipsaqu=uidolore#niamqu' category0='ari' server='10.108.180.105:5098' client_mac='01:00:5e:40:9b:83' -ipit 1461457525.idexea riat_appliance events MAC 01:00:5e:25:4f:e4 and MAC 01:00:5e:3f:49:e4 both claim IP: 10.149.88.198 -ntsuntin 1462692479.aecatcup animi events dhcp release for mac 01:00:5e:e3:10:34 -orsitame 1463927433.quiratio ite events MAC 01:00:5e:48:62:22 and MAC 01:00:5e:9f:b6:a6 both claim IP: 10.243.206.225 -olupta turveli.toccae tatno_ ids-alerts taliqu ids-alerts signature=temUten priority=ccusan timestamp=1465162388.iqudirection=outbound protocol=icmp src=10.131.82.116:7307 -uaera 1466397342.sitas ehenderi_ security_event atquovosecurity_event iumto url=https://www5.example.net/sun/essecill.html?saute=vel#quu src=10.210.213.18:7616 dst=10.134.0.141:2703 mac=01:00:5e:aa:42:fa name=idolores sha256=llumquid disposition=tation action=accept -omn ipsumq.atcu oremagna_ security_event remipsum security_event liq signature=ist priority=tnon timestamp=1467632296.ionul shost=01:00:5e:c8:9c:2f direction=outbound protocol=udp src=10.163.72.17 dst=10.74.237.180 message:nsequu -omm 1468867250.idestla Nemoeni_appliance events MAC 01:00:5e:c4:69:7f and MAC 01:00:5e:e2:67:d2 both claim IP: 10.72.31.26 -agna tionemu.eomnisis mqui ids-alerts signature=civeli priority=errorsi timestamp=1470102205.desdirection=internal protocol=tcp src=10.70.95.74:4290 -olupt 1471337159.dit sumquiad events MAC 01:00:5e:ea:e8:7a and MAC 01:00:5e:9c:d2:4a both claim IP: 10.17.21.125 -amqu 1472572113.uines nsec events dhcp lease of ip 10.85.10.165 from server mac 01:00:5e:63:93:48 for client mac 01:00:5e:46:17:35 from router 10.53.150.119 on subnet uiineavo with dns tisetq -giatquov eritquii.dexeac iscinge ids-alerts signature=atvol priority=umiur timestamp=1473807067.imadprotocol=igmp src=10.88.231.224 dst=10.187.77.245message: iadese -agnaali 1475042022.gnam tat events content_filtering_block url='https://internal.example.com/quae/maccusa.htm?rQuisau=idex#xerci' category0='aqu' server='10.186.58.115:7238' client_mac='01:00:5e:8f:16:6d' -apariat 1476276976.tlabore untmolli_ events dhcp lease of ip 10.219.84.37 from server mac 01:00:5e:e8:bf:69 for client mac 01:00:5e:87:e1:a0 from router 10.205.47.51 on subnet uovolup with dns samvolu -ento 1477511930.pic evita events MAC 01:00:5e:ce:61:db and MAC 01:00:5e:ec:f8:cc both claim IP: 10.3.134.237 -tmo 1478746884.fficiade uscipit events aid=vitaedi arp_resp=fugitse arp_src=veniamq auth_neg_dur=one auth_neg_failed=etMalor channel=ipi dns_req_rtt=reseos dns_resp=pariatu dns_server=tin duration=48.123000 full_conn=oquisqu identity=sperna ip_resp=eabilloi ip_src=10.182.178.217 is_8021x=tlab is_wpa=volupt last_auth_ago=osqui radio=xerc reason=iutali rssi=fdeFi type=texp vap=tasuntex client_mac=01:00:5e:e3:b1:24 client_ip=10.194.114.58 instigator=ectio http_resp=dutper dhcp_lease_completed=lamcolab dhcp_ip=ati dhcp_server=tlabo dhcp_server_mac=uames dhcp_resp=iduntu url=https://internal.example.net/ris/uamqu.txt?liqui=quioffi#uptate category0=ncidid server=10.63.194.87 vpn_type=quisno connectivity=sin -emvel 1479981839.tmollita fde events aid=nsecte arp_resp=inculpa arp_src=abo auth_neg_dur=veniamqu auth_neg_failed=nse channel=non dns_req_rtt=paquioff dns_resp=mquisnos dns_server=maven duration=71.798000 full_conn=atcu identity=labor ip_resp=didunt ip_src=10.153.0.77 is_8021x=udan is_wpa=orema last_auth_ago=invento radio=qua reason=aturQui rssi=utlabor type=rau vap=idex client_mac=01:00:5e:9e:7b:a4 client_ip=10.105.88.20 instigator=ecte http_resp=tinvolu dhcp_lease_completed=iurer dhcp_ip=iciadese dhcp_server=quidolor dhcp_server_mac=tessec dhcp_resp=olupta url=https://mail.example.com/icabo/itatio.jpg?eleum=sintoc#volupt category0=siste server=10.163.154.210 vpn_type=ept connectivity=iumtotam -ionevo 1481216793.ugiatnu ciati_appliance events MAC 01:00:5e:b8:7a:96 and MAC 01:00:5e:b9:6b:a8 both claim IP: 10.73.69.176 -spi 1482451747.stquido ommodico_ flows ese flows allow src=10.145.248.111 dst=10.57.6.252 mac=01:00:5e:94:6a:cf protocol=udp -smo etcons.iusmodi uamest_ security_event uiac security_event epte signature=idolo priority=quinesc timestamp=1483686701.madmi shost=01:00:5e:1c:4c:64 direction=internal protocol=icmp src=10.31.77.157 dst=10.12.182.70 message:tev -nisiuta 1484921656.roid inibusB flows cancel -str 1486156610.idolore pid_ flows cteturad flows deny src=10.93.68.231 dst=10.135.217.12 mac=01:00:5e:4a:69:5b protocol=ipv6 type=archite -amnih 1487391564.ium esciuntN_ events dhcp release for mac 01:00:5e:8b:99:98 -isnost 1488626519.queips ncidi_ flows iscinge flows src=10.247.30.212 dst=10.66.89.5 mac=01:00:5e:7f:65:da protocol=igmp pattern: 1 borios -oin 1489861473.mvenia madminim events IDS: fugitsed -dmin fugi.quia iduntu security_event idestlab signature=rnatur priority=ofdeFin timestamp=1491096427.essequam dhost=01:00:5e:c1:53:b1 direction=inbound protocol=tcp src=10.221.102.245 dst=10.173.136.186 message:naal -umqu tinv.adipisc uscipitl_ ids-alerts ritatise ids-alerts signature=uamei priority=siut timestamp=1492331381.ciad dhost=01:00:5e:1f:c6:29 direction=external protocol=udp src=10.58.64.108 dst=10.54.37.86 message: entorev -velitess 1493566336.naali uunturm_ flows veli flows block src=10.147.76.202 dst=10.163.93.20 mac=01:00:5e:1d:85:ec protocol=ipv6 sport=1085 dport=3141 -iumdol tpersp.stla uptatema_ security_event uradi security_event tot signature=llamco priority=nea timestamp=1494801290.psum dhost=01:00:5e:35:71:1e direction=internal protocol=icmp src=10.0.200.27:5905 dst=10.183.44.198:1702 message:asiarc -tiaec 1496036244.rumwrit icabo_ events dhcp lease of ip 10.148.124.84 from server mac 01:00:5e:0b:2c:22 for client mac 01:00:5e:06:12:98 from router 10.28.144.180 on subnet ritin with dns temporin -ica 1497271198.lillum remips_appliance events aid=uisaute arp_resp=imide arp_src=poriss auth_neg_dur=tvolup auth_neg_failed=itesseq channel=dictasun dns_req_rtt=veniamqu dns_resp=rum dns_server=quaea duration=165.611000 full_conn=mvel identity=nof ip_resp=usmodi ip_src=10.204.230.166 is_8021x=dat is_wpa=aincidu last_auth_ago=nimadmin radio=isiu reason=licabo rssi=enimadmi type=utaliqu vap=dic client_mac=01:00:5e:bb:60:a6 client_ip=10.62.71.118 instigator=ineavol http_resp=iosa dhcp_lease_completed=boNemoe dhcp_ip=onsequ dhcp_server=equinesc dhcp_server_mac=cab dhcp_resp=atisund url=https://example.net/ites/isetq.gif?nisiut=tur#avolupt category0=ariatur server=10.98.194.212 vpn_type=nimave connectivity=isciv -dipisci 1498506153.spernatu admi events content_filtering_block url='https://www.example.org/ueipsa/tae.html?eriti=atcupi#corpori' category0='borisnis' server='10.197.13.39:5912' -itsedd 1499741107.leumiur eratvol events dhcp release for mac 01:00:5e:fd:84:bb -leumiu tla.item nimid ids-alerts signature=dat priority=periam timestamp=1500976061.dquprotocol=icmp src=10.242.77.170 dst=10.150.245.88message: orisn -sitam rad.loi isc_ ids-alerts volupt ids-alerts signature=rem priority=idid timestamp=1502211015.tesse shost=01:00:5e:9d:eb:fb direction=external protocol=tcp src=10.247.139.239 dst=10.180.195.43 message: tenatuse -tore 1503445970.elits consequa events dhcp release for mac 01:00:5e:50:48:c4 -undeom uamnihi.risnis uov_ ids-alerts isn ids-alerts signature=sBono priority=loremqu timestamp=1504680924.teturprotocol=rdp src=10.94.6.140 dst=10.147.15.213message: uptat -itasper 1505915878.uae mve_ flows obeata flows block src=10.230.6.127 dst=10.111.157.56 mac=01:00:5e:39:a7:fc protocol=icmp type=aliquamq -archite 1507150832.remq veniamq events aid=occ arp_resp=oloreseo arp_src=iruredol auth_neg_dur=veniamqu auth_neg_failed=licaboN channel=atquo dns_req_rtt=cupi dns_resp=strude dns_server=eritin duration=85.513000 full_conn=litsedq identity=nderiti ip_resp=ntNe ip_src=10.179.40.170 is_8021x=olorema is_wpa=mollita last_auth_ago=tatem radio=iae reason=quido rssi=emip type=inBC vap=mol client_mac=01:00:5e:58:2d:1c client_ip=10.153.81.206 instigator=rsita http_resp=nsequun dhcp_lease_completed=eetd dhcp_ip=illu dhcp_server=iatqu dhcp_server_mac=lorsi dhcp_resp=repreh url=https://www.example.net/irured/illumqui.txt?tionula=ritqu#ecatcupi category0=uamei server=10.193.219.34 vpn_type=onse connectivity=olorem -umwritte 1508385787.vol oremquel_appliance events MAC 01:00:5e:16:5e:b1 and MAC 01:00:5e:ee:e8:77 both claim IP: 10.255.199.16 -unte 1509620741.uamnihil llam_appliance events MAC 01:00:5e:ee:1d:77 and MAC 01:00:5e:f1:21:bd both claim IP: 10.94.88.5 -esci 1510855695.uov quaeab_ events IDS: moles -accusa 1512090649.natu liquid events IDS: enim -dquiaco nibus.vitaed ser security_event etconsec signature=elillum priority=upt timestamp=1513325604.rnat dhost=01:00:5e:01:60:e0 direction=internal protocol=ipv6 src=10.90.99.245 dst=10.124.63.4 message:pta -tetura 1514560558.imadmini moe_appliance events content_filtering_block url='https://mail.example.net/uat/lupta.html?uptassit=ncidi#tlabori' category0='laudan' server='10.249.7.146:2010' -lapar 1515795512.ritati edquia_appliance events IDS: itesse -amvolu mip.tion tobeatae_ security_event Utenima security_event iqua signature=luptat priority=deriti timestamp=1517030466.sintocc dhost=01:00:5e:c9:b7:22 direction=inbound protocol=icmp src=10.196.96.162 dst=10.81.234.34 message:equuntur -uide 1518265421.scivel henderi_appliance events IDS: iusmodt -tiumd 1519500375.ntmoll mexer events dhcp lease of ip 10.40.101.224 from server mac 01:00:5e:0a:df:72 for client mac 01:00:5e:7c:01:ab with hostname remips188.api.invalid from router 10.78.199.43 on subnet ehender with dns ilmole -runtmo 1520735329.ore isund_appliance events MAC 01:00:5e:17:87:3e and MAC 01:00:5e:5f:c1:3e both claim IP: 10.244.29.119 -tutlabor 1521970284.reseosq gna_ flows pteurs flows deny src=10.83.131.245 dst=10.39.172.93 mac=01:00:5e:c4:12:c7 protocol=udp type=uido -osquira 1523205238.umd sciveli_ events dhcp lease of ip 10.86.188.179 from server mac 01:00:5e:48:4b:78 for client mac 01:00:5e:7e:cd:15 from router 10.201.168.116 on subnet umiure with dns laborum -umdolors 1524440192.lumdo acom_ security_event umexercisecurity_event duntut url=https://mail.example.com/prehend/eufug.htm?eufug=est#civelits src=10.148.211.222:2053 dst=10.122.204.151:3903 mac=01:00:5e:c3:a0:dc name=ine sha256=urerepre disposition=asnulap action=deny -atnul 1525675146.umfugi stquidol_ flows luptatem flows accept -essequam ueporro.aliqu upt ids-alerts signature=orum priority=Bonoru timestamp=1526910101.madminimprotocol=ipv6-icmp src=10.97.46.16 dst=10.120.4.9message: teni -lorsitam tanimid.onpr litseddo_ ids-alerts oremqu ids-alerts signature=idex priority=radip timestamp=1528145055.uptaprotocol=ipv6-icmp src=10.171.206.139 dst=10.165.173.162message: lestia -inibusB 1529380009.nostrud cteturad events dhcp lease of ip 10.150.163.151 from server mac 01:00:5e:72:b7:79 for client mac 01:00:5e:f2:d3:12 with hostname uames4985.mail.localdomain from router 10.144.57.239 on subnet oinBCSed with dns orem -eritq rehen.ipsamvol elillum_ ids-alerts tco ids-alerts signature=tvol priority=oluptate timestamp=1530614963.lit shost=01:00:5e:ac:6d:d3 direction=unknown protocol=igmp src=10.52.202.158 dst=10.54.44.231 message: Ute -runtm 1531849918.eturadip olorsi_ events MAC 01:00:5e:67:1d:0f and MAC 01:00:5e:f0:a9:cd both claim IP: 10.101.183.86 -inesciu 1533084872.quid atcupid_ flows orem flows src=10.71.22.225 dst=10.4.76.100 protocol=ggp pattern: allow serrorsi -lamco 1534319826.cit siar events MAC 01:00:5e:80:cd:ca and MAC 01:00:5e:45:aa:51 both claim IP: 10.83.130.95 -hite 1535554780.ianonnum nofdeFi events aid=henderit arp_resp=remq arp_src=unt auth_neg_dur=tla auth_neg_failed=arch channel=lite dns_req_rtt=ugia dns_resp=meum dns_server=borumSec duration=91.439000 full_conn=nvolupta identity=tev ip_resp=nre ip_src=10.2.110.73 is_8021x=eturadip is_wpa=ent last_auth_ago=rumSecti radio=Utenima reason=olore rssi=orumS type=olor vap=radip client_mac=01:00:5e:59:bf:36 client_ip=10.230.98.81 instigator=aaliquaU http_resp=olu dhcp_lease_completed=iameaque dhcp_ip=identsun dhcp_server=ender dhcp_server_mac=inc dhcp_resp=tect url=https://www.example.net/doconse/eni.html?mSec=smoditem#tatisetq category0=uidolo server=10.103.49.129 vpn_type=oquisq connectivity=abori -dunt 1536789735.ames amni events aid=tatio arp_resp=amquisno arp_src=modoc auth_neg_dur=magnam auth_neg_failed=uinesc channel=cid dns_req_rtt=emi dns_resp=Bonorum dns_server=lesti duration=59.289000 full_conn=iosamni identity=idu ip_resp=sis ip_src=10.158.61.228 is_8021x=tsedquia is_wpa=its last_auth_ago=umdolor radio=isiu reason=assi rssi=eserun type=rvelill vap=lupta client_mac=01:00:5e:e6:a6:a2 client_ip=10.186.16.20 instigator=tisu http_resp=remagnam dhcp_lease_completed=nvolupt dhcp_ip=meiusm dhcp_server=nidolo dhcp_server_mac=atquovol dhcp_resp=quunt url=https://www.example.com/seq/moll.htm?sunt=dquianon#urExc category0=tDuis server=10.132.176.96 vpn_type=aria connectivity=inim -oremeumf 1538024689.lesti sintocca events dhcp lease of ip 10.105.136.146 from server mac 01:00:5e:bb:aa:f6 for client mac 01:00:5e:69:92:4a with hostname lors2232.api.example from router 10.46.217.155 on subnet amnihil with dns orissus -nimadmin 1539259643.lumqui quiavolu flows src=10.245.199.23 dst=10.123.62.215 mac=01:00:5e:1f:7f:1d protocol=udp pattern: 0 iusmodt -rep 1540494597.remap deri flows cancel src=10.239.105.121 dst=10.70.7.23 mac=01:00:5e:8e:82:f0 protocol=ipv6 -idexeac 1541729552.nimadmin midest_appliance events aid=modt arp_resp=iduntutl arp_src=rsitam auth_neg_dur=xercit auth_neg_failed=ulpaquio channel=itqu dns_req_rtt=minimav dns_resp=smodtem dns_server=roquisqu duration=116.294000 full_conn=iquid identity=evo ip_resp=mcorpori ip_src=10.196.176.243 is_8021x=itesse is_wpa=expl last_auth_ago=essecill radio=totamre reason=rpo rssi=velites type=nonpro vap=nula client_mac=01:00:5e:99:a6:b4 client_ip=10.90.50.149 instigator=nemulla http_resp=asp dhcp_lease_completed=dexercit dhcp_ip=amn dhcp_server=itessequ dhcp_server_mac=porissu dhcp_resp=umd url=https://www.example.net/sectetur/edquian.html?turQuis=taevi#uames category0=tconsec server=10.16.230.121 vpn_type=laboree connectivity=udantiu -ttenb olor.quiav gna security_event Nem signature=tdolorem priority=eacomm timestamp=1542964506.upidata dhost=01:00:5e:6a:c8:f8 direction=unknown protocol=ipv6 src=10.246.152.72:4293 dst=10.34.62.190:1641 message:eve -quisn 1544199460.rem ulamcola events dhcp no offers for mac 01:00:5e:67:fc:cb -eruntmo 1545434414.nimve usanti_ events dhcp release for mac 01:00:5e:7d:de:f7 -uatu 1546669369.olupta consequu_ events dhcp release for mac 01:00:5e:6b:96:f2 -sitam inibusBo.illoin emUtenim ids-alerts signature=ende priority=dexea timestamp=1547904323.acoprotocol=ipv6 src=10.244.32.189 dst=10.121.9.5message: uptas -edol 1549139277.sequuntu quameius_ events content_filtering_block url='https://www.example.com/totamrem/aliqu.htm?sBonorum=moenimi#lor' category0='auto' server='10.41.124.15:333' -antium 1550374232.remaper eseosq events dhcp no offers for mac 01:00:5e:c3:77:27 -oditau 1551609186.onsec dit events MAC 01:00:5e:19:86:21 and MAC 01:00:5e:ed:ed:79 both claim IP: 10.43.235.230 -asper dictasun.psa lorese_ ids-alerts ctobeat ids-alerts signature=onsec priority=idestl timestamp=1552844140.litani shost=01:00:5e:a0:b2:c9 direction=unknown protocol=icmp src=10.199.19.205:5823 dst=10.103.91.159:7116 message: ntut -estiaec 1554079094.pitlabo tas_appliance flows src=10.17.111.91 dst=10.65.0.157 mac=01:00:5e:49:c4:17 protocol=udp pattern: 1 nostrum -ercitati 1555314049.atem serro flows cancel -amquaera 1556549003.rsitamet leumiur events MAC 01:00:5e:fd:79:9e and MAC 01:00:5e:4d:c0:dd both claim IP: 10.20.130.88 -abill ametcon.ofdeFini tasnu_ ids-alerts tionev ids-alerts signature=uasiarch priority=velites timestamp=1557783957.uredolorprotocol=ipv6 src=10.177.64.152 dst=10.140.242.86message: temporin -lor nvolupt.dquia ora_ security_event dipi security_event ecatc signature=quovolu priority=ite timestamp=1559018911.itse shost=01:00:5e:b8:73:c8 direction=external protocol=icmp src=10.199.103.185:2449 dst=10.51.121.223:24 message:stenat -saq 1560253866.asiarch ssuscipi events MAC 01:00:5e:93:48:61 and MAC 01:00:5e:21:c2:55 both claim IP: 10.126.242.58 -tlab 1561488820.vel ionevo events dhcp release for mac 01:00:5e:8a:1a:f9 -aeab 1562723774.uradipis aerat_ flows uira flows deny src=10.121.37.244 dst=10.113.152.241 mac=01:00:5e:9c:86:62 protocol=udp type=utaliqui -nesciu 1563958728.mali roinBCSe_appliance events aid=eetdolor arp_resp=tpersp arp_src=assi auth_neg_dur=rch auth_neg_failed=psa channel=nreprehe dns_req_rtt=pidatatn dns_resp=isno dns_server=luptatev duration=39.622000 full_conn=lla identity=urau ip_resp=aeca ip_src=10.247.118.132 is_8021x=atcupi is_wpa=enima last_auth_ago=uptateve radio=fugitsed reason=lumqui rssi=ectet type=ionu vap=eratv client_mac=01:00:5e:10:8b:c3 client_ip=10.153.33.99 instigator=liq http_resp=xerc dhcp_lease_completed=atisetqu dhcp_ip=squir dhcp_server=gnaaliq dhcp_server_mac=quam dhcp_resp=deriti url=https://www5.example.org/eturadi/umS.txt?mSecti=henderi#taevitae category0=tevel server=10.254.96.130 vpn_type=ita connectivity=iquipexe -tot 1565193683.reme emeumfu events aid=inBCSedu arp_resp=ita arp_src=ade auth_neg_dur=nihilmol auth_neg_failed=nder channel=ano dns_req_rtt=rumexer dns_resp=eab dns_server=iaconseq duration=18.963000 full_conn=eli identity=rissusci ip_resp=ectetur ip_src=10.101.13.122 is_8021x=oconsequ is_wpa=roqui last_auth_ago=oluptate radio=ntut reason=mremaper rssi=uteirur type=ntium vap=ide client_mac=01:00:5e:95:ae:d0 client_ip=10.78.143.52 instigator=ntiumdol http_resp=conse dhcp_lease_completed=aturve dhcp_ip=edqui dhcp_server=tvolu dhcp_server_mac=psu dhcp_resp=strud url=https://internal.example.org/fdeFi/ratv.htm?sequatu=tiumtot#tate category0=udanti server=10.200.98.243 vpn_type=cteturad connectivity=umq -oinvento 1566428637.mporin orissusc_appliance events content_filtering_block url='https://www5.example.net/uov/pariat.htm?litsed=lumd#tiaec' category0='lorem' server='10.247.205.185:7676' client_mac='01:00:5e:6f:21:c8' -metMa emoen.ptate mipsumqu_ ids-alerts ccusa ids-alerts signature=billo priority=doloremi timestamp=1567663591.ectetura dhost=01:00:5e:0a:88:bb direction=inbound protocol=ipv6 src=10.195.90.73:3914 dst=10.147.165.30:7662 message: idents -veniamqu 1568898545.iconsequ ueporr_appliance events IDS: empor -atDuisa mipsa.uas iat ids-alerts signature=hite priority=adipis timestamp=1570133500.abo dhost=01:00:5e:dd:cb:5b direction=inbound protocol=udp src=10.137.166.97 dst=10.162.202.14 message: ipsaqua -deom 1571368454.tiumdo rautod_appliance events content_filtering_block url='https://www5.example.com/illoinve/etcon.htm?nevolup=erspici#itinvolu' category0='adeserun' server='10.227.135.142:6598' -orese 1572603408.umdolore umqui_appliance events MAC 01:00:5e:f1:b8:3a and MAC 01:00:5e:37:9c:af both claim IP: 10.199.29.19 -explicab 1573838362.samvolu teiru_appliance events dhcp no offers for mac 01:00:5e:b8:06:92 -rissusci 1575073317.uaturQ iusmod_ events aid=mips arp_resp=iduntutl arp_src=mipsumd auth_neg_dur=eiusmo auth_neg_failed=quelauda channel=rcit dns_req_rtt=dolo dns_resp=ulamc dns_server=doe duration=10.574000 full_conn=remquela identity=toreve ip_resp=squirat ip_src=10.85.59.172 is_8021x=mto is_wpa=iae last_auth_ago=dent radio=Uten reason=tatiset rssi=sequat type=modoco vap=beataevi client_mac=01:00:5e:92:d8:95 client_ip=10.158.215.216 instigator=deritin http_resp=ptate dhcp_lease_completed=lloi dhcp_ip=nseq dhcp_server=equunt dhcp_server_mac=tutla dhcp_resp=usmod url=https://example.com/qui/itse.gif?orsitame=tasn#exeaco category0=upta server=10.75.122.111 vpn_type=reprehe connectivity=deFinib -orr 1576308271.pre aute events IDS: rchite diff --git a/x-pack/filebeat/module/cisco/meraki/test/generated.log-expected.json b/x-pack/filebeat/module/cisco/meraki/test/generated.log-expected.json deleted file mode 100644 index 63c66bbeb3a..00000000000 --- a/x-pack/filebeat/module/cisco/meraki/test/generated.log-expected.json +++ /dev/null @@ -1,3357 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T06:09:59.000Z", - "destination.ip": "10.193.124.51", - "destination.port": 5293, - "event.action": "deny", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "modtempo 1454047799.olab nto_ security_event olaborissecurity_event tur url=https://example.org/odoco/ria.jpg?ritin=uredolor#tatemac src=10.15.44.253:5078 dst=10.193.124.51:5293 mac=01:00:5e:28:ae:7d name=psa sha256=umq disposition=ntium action=deny", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 0, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.15.44.253", - "10.193.124.51" - ], - "rsa.internal.event_desc": "olaborissecurity_event tur", - "rsa.internal.messageid": "security_event", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "ntium", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "nto_", - "rsa.misc.sensor": "nto_", - "rsa.time.event_time": "2016-01-29T06:09:59.000Z", - "service.type": "cisco", - "source.ip": "10.15.44.253", - "source.mac": "01:00:5e:28:ae:7d", - "source.port": 5078, - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "example.org", - "url.extension": "jpg", - "url.fragment": "tatemac", - "url.original": "https://example.org/odoco/ria.jpg?ritin=uredolor#tatemac", - "url.path": "/odoco/ria.jpg", - "url.query": "ritin=uredolor", - "url.scheme": "https" - }, - { - "@timestamp": "2016-02-12T13:12:33.000Z", - "destination.mac": "01:00:5e:0f:87:e3", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "umdo 1455282753.itessequ vol_ events dhcp lease of ip 10.102.218.31 from server mac 01:00:5e:9c:c2:9c for client mac 01:00:5e:0f:87:e3 from router 10.15.16.212 on subnet ameaqu with dns aqu", - "fileset.name": "meraki", - "host.ip": "10.15.16.212", - "input.type": "log", - "log.offset": 250, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.102.218.31", - "10.15.16.212" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "vol_", - "rsa.misc.sensor": "vol_", - "rsa.network.dns_a_record": "aqu", - "rsa.network.mask": "ameaqu", - "rsa.time.event_time": "2016-02-12T13:12:33.000Z", - "service.type": "cisco", - "source.ip": "10.102.218.31", - "source.mac": "01:00:5e:9c:c2:9c", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-02-26T20:15:08.000Z", - "event.action": "ceroinBC flows src=10.179.60.216 dst=10.69.53.104 protocol=udp pattern: 0 reprehe", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "uipexea 1456517708.tatio minim_ flows ceroinBC flows src=10.179.60.216 dst=10.69.53.104 protocol=udp pattern: 0 reprehe", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 440, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "ceroinBC flows src=10.179.60.216 dst=10.69.53.104 protocol=udp pattern: 0 reprehe" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "minim_", - "rsa.misc.sensor": "minim_", - "rsa.time.event_time": "2016-02-26T20:15:08.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-03-12T03:17:42.000Z", - "destination.ip": "10.112.46.169", - "event.action": "radip flows block", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "mipsu 1457752662.consec taliquip_ flows radip flows block src=10.155.236.240 dst=10.112.46.169 mac=01:00:5e:7a:74:89 protocol=ipv6 type=roidents ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 560, - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.112.46.169", - "10.155.236.240" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "radip flows block" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "taliquip_", - "rsa.misc.sensor": "taliquip_", - "rsa.time.event_time": "2016-03-12T03:17:42.000Z", - "service.type": "cisco", - "source.ip": "10.155.236.240", - "source.mac": "01:00:5e:7a:74:89", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-03-26T10:20:16.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "obeataev 1458987616.lor uidexea_appliance events MAC 01:00:5e:e1:89:ac and MAC 01:00:5e:a3:d9:ac both claim IP: 10.14.107.140", - "fileset.name": "meraki", - "host.mac": "01:00:5e:a3:d9:ac", - "input.type": "log", - "log.offset": 706, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.14.107.140" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "uidexea", - "rsa.misc.sensor": "uidexea", - "rsa.network.eth_host": "01:00:5e:a3:d9:ac", - "rsa.time.event_time": "2016-03-26T10:20:16.000Z", - "service.type": "cisco", - "source.ip": "10.14.107.140", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-04-09T17:22:51.000Z", - "destination.ip": "10.108.180.105", - "destination.mac": "01:00:5e:40:9b:83", - "destination.port": 5098, - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "iutal 1460222571.dexe urerep events content_filtering_block url='https://api.example.org/liqu/lorem.gif?ueipsaqu=uidolore#niamqu' category0='ari' server='10.108.180.105:5098' client_mac='01:00:5e:40:9b:83'", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 832, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.108.180.105" - ], - "rsa.internal.event_desc": "content_filtering_block", - "rsa.internal.messageid": "events", - "rsa.misc.category": "ari", - "rsa.misc.node": "urerep", - "rsa.misc.sensor": "urerep", - "rsa.time.event_time": "2016-04-09T17:22:51.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "api.example.org", - "url.extension": "gif", - "url.fragment": "niamqu", - "url.original": "https://api.example.org/liqu/lorem.gif?ueipsaqu=uidolore#niamqu", - "url.path": "/liqu/lorem.gif", - "url.query": "ueipsaqu=uidolore", - "url.scheme": "https" - }, - { - "@timestamp": "2016-04-24T00:25:25.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "ipit 1461457525.idexea riat_appliance events MAC 01:00:5e:25:4f:e4 and MAC 01:00:5e:3f:49:e4 both claim IP: 10.149.88.198", - "fileset.name": "meraki", - "host.mac": "01:00:5e:3f:49:e4", - "input.type": "log", - "log.offset": 1038, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.149.88.198" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "riat", - "rsa.misc.sensor": "riat", - "rsa.network.eth_host": "01:00:5e:3f:49:e4", - "rsa.time.event_time": "2016-04-24T00:25:25.000Z", - "service.type": "cisco", - "source.ip": "10.149.88.198", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-05-08T07:27:59.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "ntsuntin 1462692479.aecatcup animi events dhcp release for mac 01:00:5e:e3:10:34", - "fileset.name": "meraki", - "host.mac": "01:00:5e:e3:10:34", - "input.type": "log", - "log.offset": 1160, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "animi", - "rsa.misc.sensor": "animi", - "rsa.network.eth_host": "01:00:5e:e3:10:34", - "rsa.time.event_time": "2016-05-08T07:27:59.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-05-22T14:30:33.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "orsitame 1463927433.quiratio ite events MAC 01:00:5e:48:62:22 and MAC 01:00:5e:9f:b6:a6 both claim IP: 10.243.206.225", - "fileset.name": "meraki", - "host.mac": "01:00:5e:9f:b6:a6", - "input.type": "log", - "log.offset": 1241, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.243.206.225" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "ite", - "rsa.misc.sensor": "ite", - "rsa.network.eth_host": "01:00:5e:9f:b6:a6", - "rsa.time.event_time": "2016-05-22T14:30:33.000Z", - "service.type": "cisco", - "source.ip": "10.243.206.225", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-06-05T21:33:08.000Z", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "olupta turveli.toccae tatno_ ids-alerts taliqu ids-alerts signature=temUten priority=ccusan timestamp=1465162388.iqudirection=outbound protocol=icmp src=10.131.82.116:7307", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 1359, - "network.direction": "outbound", - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.131.82.116" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "tatno_ ids-alerts taliqu", - "rsa.misc.sensor": "tatno_ ids-alerts taliqu", - "rsa.time.event_time": "2016-06-05T21:33:08.000Z", - "service.type": "cisco", - "source.ip": "10.131.82.116", - "source.port": 7307, - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-06-20T04:35:42.000Z", - "destination.ip": "10.134.0.141", - "destination.port": 2703, - "event.action": "accept", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "uaera 1466397342.sitas ehenderi_ security_event atquovosecurity_event iumto url=https://www5.example.net/sun/essecill.html?saute=vel#quu src=10.210.213.18:7616 dst=10.134.0.141:2703 mac=01:00:5e:aa:42:fa name=idolores sha256=llumquid disposition=tation action=accept", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 1531, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.134.0.141", - "10.210.213.18" - ], - "rsa.internal.event_desc": "atquovosecurity_event iumto", - "rsa.internal.messageid": "security_event", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "tation", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "ehenderi_", - "rsa.misc.sensor": "ehenderi_", - "rsa.time.event_time": "2016-06-20T04:35:42.000Z", - "service.type": "cisco", - "source.ip": "10.210.213.18", - "source.mac": "01:00:5e:aa:42:fa", - "source.port": 7616, - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www5.example.net", - "url.extension": "html", - "url.fragment": "quu", - "url.original": "https://www5.example.net/sun/essecill.html?saute=vel#quu", - "url.path": "/sun/essecill.html", - "url.query": "saute=vel", - "url.scheme": "https" - }, - { - "@timestamp": "2016-07-04T11:38:16.000Z", - "destination.ip": "10.74.237.180", - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "omn ipsumq.atcu oremagna_ security_event remipsum security_event liq signature=ist priority=tnon timestamp=1467632296.ionul shost=01:00:5e:c8:9c:2f direction=outbound protocol=udp src=10.163.72.17 dst=10.74.237.180 message:nsequu", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 1798, - "network.direction": "outbound", - "network.protocol": "udp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.163.72.17", - "10.74.237.180" - ], - "rsa.internal.event_desc": "remipsum security_event liq", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "oremagna_", - "rsa.misc.policy_name": "nsequu", - "rsa.misc.sensor": "oremagna_", - "rsa.time.event_time": "2016-07-04T11:38:16.000Z", - "service.type": "cisco", - "source.ip": "10.163.72.17", - "source.mac": "01:00:5e:c8:9c:2f", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-07-18T18:40:50.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "omm 1468867250.idestla Nemoeni_appliance events MAC 01:00:5e:c4:69:7f and MAC 01:00:5e:e2:67:d2 both claim IP: 10.72.31.26", - "fileset.name": "meraki", - "host.mac": "01:00:5e:e2:67:d2", - "input.type": "log", - "log.offset": 2028, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.72.31.26" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "Nemoeni", - "rsa.misc.sensor": "Nemoeni", - "rsa.network.eth_host": "01:00:5e:e2:67:d2", - "rsa.time.event_time": "2016-07-18T18:40:50.000Z", - "service.type": "cisco", - "source.ip": "10.72.31.26", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-08-02T01:43:25.000Z", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "agna tionemu.eomnisis mqui ids-alerts signature=civeli priority=errorsi timestamp=1470102205.desdirection=internal protocol=tcp src=10.70.95.74:4290", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 2151, - "network.direction": "internal", - "network.protocol": "tcp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.70.95.74" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "mqui", - "rsa.misc.sensor": "mqui", - "rsa.time.event_time": "2016-08-02T01:43:25.000Z", - "service.type": "cisco", - "source.ip": "10.70.95.74", - "source.port": 4290, - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-08-16T08:45:59.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "olupt 1471337159.dit sumquiad events MAC 01:00:5e:ea:e8:7a and MAC 01:00:5e:9c:d2:4a both claim IP: 10.17.21.125", - "fileset.name": "meraki", - "host.mac": "01:00:5e:9c:d2:4a", - "input.type": "log", - "log.offset": 2300, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.17.21.125" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "sumquiad", - "rsa.misc.sensor": "sumquiad", - "rsa.network.eth_host": "01:00:5e:9c:d2:4a", - "rsa.time.event_time": "2016-08-16T08:45:59.000Z", - "service.type": "cisco", - "source.ip": "10.17.21.125", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-08-30T15:48:33.000Z", - "destination.mac": "01:00:5e:46:17:35", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "amqu 1472572113.uines nsec events dhcp lease of ip 10.85.10.165 from server mac 01:00:5e:63:93:48 for client mac 01:00:5e:46:17:35 from router 10.53.150.119 on subnet uiineavo with dns tisetq", - "fileset.name": "meraki", - "host.ip": "10.53.150.119", - "input.type": "log", - "log.offset": 2413, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.53.150.119", - "10.85.10.165" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "nsec", - "rsa.misc.sensor": "nsec", - "rsa.network.dns_a_record": "tisetq", - "rsa.network.mask": "uiineavo", - "rsa.time.event_time": "2016-08-30T15:48:33.000Z", - "service.type": "cisco", - "source.ip": "10.85.10.165", - "source.mac": "01:00:5e:63:93:48", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-09-13T22:51:07.000Z", - "destination.ip": "10.187.77.245", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "giatquov eritquii.dexeac iscinge ids-alerts signature=atvol priority=umiur timestamp=1473807067.imadprotocol=igmp src=10.88.231.224 dst=10.187.77.245message: iadese", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 2605, - "network.protocol": "igmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.187.77.245", - "10.88.231.224" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "iscinge", - "rsa.misc.policy_name": "iadese", - "rsa.misc.sensor": "iscinge", - "rsa.time.event_time": "2016-09-13T22:51:07.000Z", - "service.type": "cisco", - "source.ip": "10.88.231.224", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-09-28T05:53:42.000Z", - "destination.ip": "10.186.58.115", - "destination.mac": "01:00:5e:8f:16:6d", - "destination.port": 7238, - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "agnaali 1475042022.gnam tat events content_filtering_block url='https://internal.example.com/quae/maccusa.htm?rQuisau=idex#xerci' category0='aqu' server='10.186.58.115:7238' client_mac='01:00:5e:8f:16:6d'", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 2770, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.186.58.115" - ], - "rsa.internal.event_desc": "content_filtering_block", - "rsa.internal.messageid": "events", - "rsa.misc.category": "aqu", - "rsa.misc.node": "tat", - "rsa.misc.sensor": "tat", - "rsa.time.event_time": "2016-09-28T05:53:42.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "internal.example.com", - "url.extension": "htm", - "url.fragment": "xerci", - "url.original": "https://internal.example.com/quae/maccusa.htm?rQuisau=idex#xerci", - "url.path": "/quae/maccusa.htm", - "url.query": "rQuisau=idex", - "url.scheme": "https" - }, - { - "@timestamp": "2016-10-12T12:56:16.000Z", - "destination.mac": "01:00:5e:87:e1:a0", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "apariat 1476276976.tlabore untmolli_ events dhcp lease of ip 10.219.84.37 from server mac 01:00:5e:e8:bf:69 for client mac 01:00:5e:87:e1:a0 from router 10.205.47.51 on subnet uovolup with dns samvolu", - "fileset.name": "meraki", - "host.ip": "10.205.47.51", - "input.type": "log", - "log.offset": 2975, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.205.47.51", - "10.219.84.37" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "untmolli_", - "rsa.misc.sensor": "untmolli_", - "rsa.network.dns_a_record": "samvolu", - "rsa.network.mask": "uovolup", - "rsa.time.event_time": "2016-10-12T12:56:16.000Z", - "service.type": "cisco", - "source.ip": "10.219.84.37", - "source.mac": "01:00:5e:e8:bf:69", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-10-26T19:58:50.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "ento 1477511930.pic evita events MAC 01:00:5e:ce:61:db and MAC 01:00:5e:ec:f8:cc both claim IP: 10.3.134.237", - "fileset.name": "meraki", - "host.mac": "01:00:5e:ec:f8:cc", - "input.type": "log", - "log.offset": 3176, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.3.134.237" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "evita", - "rsa.misc.sensor": "evita", - "rsa.network.eth_host": "01:00:5e:ec:f8:cc", - "rsa.time.event_time": "2016-10-26T19:58:50.000Z", - "service.type": "cisco", - "source.ip": "10.3.134.237", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-11-10T03:01:24.000Z", - "destination.ip": "10.63.194.87", - "destination.mac": "01:00:5e:e3:b1:24", - "event.action": "texp", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tmo 1478746884.fficiade uscipit events aid=vitaedi arp_resp=fugitse arp_src=veniamq auth_neg_dur=one auth_neg_failed=etMalor channel=ipi dns_req_rtt=reseos dns_resp=pariatu dns_server=tin duration=48.123000 full_conn=oquisqu identity=sperna ip_resp=eabilloi ip_src=10.182.178.217 is_8021x=tlab is_wpa=volupt last_auth_ago=osqui radio=xerc reason=iutali rssi=fdeFi type=texp vap=tasuntex client_mac=01:00:5e:e3:b1:24 client_ip=10.194.114.58 instigator=ectio http_resp=dutper dhcp_lease_completed=lamcolab dhcp_ip=ati dhcp_server=tlabo dhcp_server_mac=uames dhcp_resp=iduntu url=https://internal.example.net/ris/uamqu.txt?liqui=quioffi#uptate category0=ncidid server=10.63.194.87 vpn_type=quisno connectivity=sin", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 3285, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.182.178.217", - "10.63.194.87" - ], - "rsa.counters.dclass_r1": "fdeFi", - "rsa.internal.messageid": "events", - "rsa.misc.category": "ncidid", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "texp", - "rsa.misc.node": "uscipit", - "rsa.misc.sensor": "uscipit", - "rsa.time.duration_time": 48.123, - "rsa.time.event_time": "2016-11-10T03:01:24.000Z", - "service.type": "cisco", - "source.ip": "10.182.178.217", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "internal.example.net", - "url.extension": "txt", - "url.fragment": "uptate", - "url.original": "https://internal.example.net/ris/uamqu.txt?liqui=quioffi#uptate", - "url.path": "/ris/uamqu.txt", - "url.query": "liqui=quioffi", - "url.scheme": "https" - }, - { - "@timestamp": "2016-11-24T10:03:59.000Z", - "destination.ip": "10.163.154.210", - "destination.mac": "01:00:5e:9e:7b:a4", - "event.action": "rau", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "emvel 1479981839.tmollita fde events aid=nsecte arp_resp=inculpa arp_src=abo auth_neg_dur=veniamqu auth_neg_failed=nse channel=non dns_req_rtt=paquioff dns_resp=mquisnos dns_server=maven duration=71.798000 full_conn=atcu identity=labor ip_resp=didunt ip_src=10.153.0.77 is_8021x=udan is_wpa=orema last_auth_ago=invento radio=qua reason=aturQui rssi=utlabor type=rau vap=idex client_mac=01:00:5e:9e:7b:a4 client_ip=10.105.88.20 instigator=ecte http_resp=tinvolu dhcp_lease_completed=iurer dhcp_ip=iciadese dhcp_server=quidolor dhcp_server_mac=tessec dhcp_resp=olupta url=https://mail.example.com/icabo/itatio.jpg?eleum=sintoc#volupt category0=siste server=10.163.154.210 vpn_type=ept connectivity=iumtotam", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 3996, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.153.0.77", - "10.163.154.210" - ], - "rsa.counters.dclass_r1": "utlabor", - "rsa.internal.messageid": "events", - "rsa.misc.category": "siste", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "rau", - "rsa.misc.node": "fde", - "rsa.misc.sensor": "fde", - "rsa.time.duration_time": 71.798, - "rsa.time.event_time": "2016-11-24T10:03:59.000Z", - "service.type": "cisco", - "source.ip": "10.153.0.77", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "mail.example.com", - "url.extension": "jpg", - "url.fragment": "volupt", - "url.original": "https://mail.example.com/icabo/itatio.jpg?eleum=sintoc#volupt", - "url.path": "/icabo/itatio.jpg", - "url.query": "eleum=sintoc", - "url.scheme": "https" - }, - { - "@timestamp": "2016-12-08T17:06:33.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "ionevo 1481216793.ugiatnu ciati_appliance events MAC 01:00:5e:b8:7a:96 and MAC 01:00:5e:b9:6b:a8 both claim IP: 10.73.69.176", - "fileset.name": "meraki", - "host.mac": "01:00:5e:b9:6b:a8", - "input.type": "log", - "log.offset": 4701, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.73.69.176" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "ciati", - "rsa.misc.sensor": "ciati", - "rsa.network.eth_host": "01:00:5e:b9:6b:a8", - "rsa.time.event_time": "2016-12-08T17:06:33.000Z", - "service.type": "cisco", - "source.ip": "10.73.69.176", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2016-12-23T00:09:07.000Z", - "event.action": "ese flows allow src=10.145.248.111 dst=10.57.6.252 mac=01:00:5e:94:6a:cf protocol=udp", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "spi 1482451747.stquido ommodico_ flows ese flows allow src=10.145.248.111 dst=10.57.6.252 mac=01:00:5e:94:6a:cf protocol=udp ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 4826, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "ese flows allow src=10.145.248.111 dst=10.57.6.252 mac=01:00:5e:94:6a:cf protocol=udp" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "ommodico_", - "rsa.misc.sensor": "ommodico_", - "rsa.time.event_time": "2016-12-23T00:09:07.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-01-06T07:11:41.000Z", - "destination.ip": "10.12.182.70", - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "smo etcons.iusmodi uamest_ security_event uiac security_event epte signature=idolo priority=quinesc timestamp=1483686701.madmi shost=01:00:5e:1c:4c:64 direction=internal protocol=icmp src=10.31.77.157 dst=10.12.182.70 message:tev", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 4952, - "network.direction": "internal", - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.12.182.70", - "10.31.77.157" - ], - "rsa.internal.event_desc": "uiac security_event epte", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "uamest_", - "rsa.misc.policy_name": "tev", - "rsa.misc.sensor": "uamest_", - "rsa.time.event_time": "2017-01-06T07:11:41.000Z", - "service.type": "cisco", - "source.ip": "10.31.77.157", - "source.mac": "01:00:5e:1c:4c:64", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-01-20T14:14:16.000Z", - "event.action": "cancel", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "nisiuta 1484921656.roid inibusB flows cancel", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 5182, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "inibusB", - "rsa.misc.sensor": "inibusB", - "rsa.time.event_time": "2017-01-20T14:14:16.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-02-03T21:16:50.000Z", - "destination.ip": "10.135.217.12", - "event.action": "cteturad flows deny", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "str 1486156610.idolore pid_ flows cteturad flows deny src=10.93.68.231 dst=10.135.217.12 mac=01:00:5e:4a:69:5b protocol=ipv6 type=archite ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 5227, - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.135.217.12", - "10.93.68.231" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "cteturad flows deny" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "pid_", - "rsa.misc.sensor": "pid_", - "rsa.time.event_time": "2017-02-03T21:16:50.000Z", - "service.type": "cisco", - "source.ip": "10.93.68.231", - "source.mac": "01:00:5e:4a:69:5b", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-02-18T04:19:24.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "amnih 1487391564.ium esciuntN_ events dhcp release for mac 01:00:5e:8b:99:98", - "fileset.name": "meraki", - "host.mac": "01:00:5e:8b:99:98", - "input.type": "log", - "log.offset": 5366, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "esciuntN_", - "rsa.misc.sensor": "esciuntN_", - "rsa.network.eth_host": "01:00:5e:8b:99:98", - "rsa.time.event_time": "2017-02-18T04:19:24.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-03-04T11:21:59.000Z", - "destination.ip": "10.66.89.5", - "event.action": "iscinge flows", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "isnost 1488626519.queips ncidi_ flows iscinge flows src=10.247.30.212 dst=10.66.89.5 mac=01:00:5e:7f:65:da protocol=igmp pattern: 1 borios", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 5443, - "network.protocol": "igmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.247.30.212", - "10.66.89.5" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "iscinge flows" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "ncidi_", - "rsa.misc.sensor": "ncidi_", - "rsa.time.event_time": "2017-03-04T11:21:59.000Z", - "service.type": "cisco", - "source.ip": "10.247.30.212", - "source.mac": "01:00:5e:7f:65:da", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-03-18T18:24:33.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "oin 1489861473.mvenia madminim events IDS: fugitsed", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 5582, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.db.index": "fugitsed", - "rsa.internal.event_desc": "events IDS", - "rsa.internal.messageid": "events", - "rsa.misc.node": "madminim", - "rsa.misc.sensor": "madminim", - "rsa.time.event_time": "2017-03-18T18:24:33.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-04-02T01:27:07.000Z", - "destination.ip": "10.173.136.186", - "destination.mac": "01:00:5e:c1:53:b1", - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "dmin fugi.quia iduntu security_event idestlab signature=rnatur priority=ofdeFin timestamp=1491096427.essequam dhost=01:00:5e:c1:53:b1 direction=inbound protocol=tcp src=10.221.102.245 dst=10.173.136.186 message:naal", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 5634, - "network.direction": "inbound", - "network.protocol": "tcp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.173.136.186", - "10.221.102.245" - ], - "rsa.internal.event_desc": "idestlab", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "iduntu", - "rsa.misc.policy_name": "naal", - "rsa.misc.sensor": "iduntu", - "rsa.time.event_time": "2017-04-02T01:27:07.000Z", - "service.type": "cisco", - "source.ip": "10.221.102.245", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-04-16T08:29:41.000Z", - "destination.ip": "10.54.37.86", - "destination.mac": "01:00:5e:1f:c6:29", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "umqu tinv.adipisc uscipitl_ ids-alerts ritatise ids-alerts signature=uamei priority=siut timestamp=1492331381.ciad dhost=01:00:5e:1f:c6:29 direction=external protocol=udp src=10.58.64.108 dst=10.54.37.86 message: entorev", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 5850, - "network.direction": "external", - "network.protocol": "udp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.54.37.86", - "10.58.64.108" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "uscipitl_ ids-alerts ritatise", - "rsa.misc.policy_name": "entorev", - "rsa.misc.sensor": "uscipitl_ ids-alerts ritatise", - "rsa.time.event_time": "2017-04-16T08:29:41.000Z", - "service.type": "cisco", - "source.ip": "10.58.64.108", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-04-30T15:32:16.000Z", - "destination.ip": "10.163.93.20", - "event.action": "veli flows block", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "velitess 1493566336.naali uunturm_ flows veli flows block src=10.147.76.202 dst=10.163.93.20 mac=01:00:5e:1d:85:ec protocol=ipv6 sport=1085 dport=3141 ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 6071, - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.147.76.202", - "10.163.93.20" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "veli flows block" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "uunturm_", - "rsa.misc.sensor": "uunturm_", - "rsa.time.event_time": "2017-04-30T15:32:16.000Z", - "service.type": "cisco", - "source.ip": "10.147.76.202", - "source.mac": "01:00:5e:1d:85:ec", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-05-14T22:34:50.000Z", - "destination.ip": "10.183.44.198", - "destination.mac": "01:00:5e:35:71:1e", - "destination.port": 1702, - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "iumdol tpersp.stla uptatema_ security_event uradi security_event tot signature=llamco priority=nea timestamp=1494801290.psum dhost=01:00:5e:35:71:1e direction=internal protocol=icmp src=10.0.200.27:5905 dst=10.183.44.198:1702 message:asiarc", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 6223, - "network.direction": "internal", - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.0.200.27", - "10.183.44.198" - ], - "rsa.internal.event_desc": "uradi security_event tot", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "uptatema_", - "rsa.misc.policy_name": "asiarc", - "rsa.misc.sensor": "uptatema_", - "rsa.time.event_time": "2017-05-14T22:34:50.000Z", - "service.type": "cisco", - "source.ip": "10.0.200.27", - "source.port": 5905, - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-05-29T05:37:24.000Z", - "destination.mac": "01:00:5e:06:12:98", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tiaec 1496036244.rumwrit icabo_ events dhcp lease of ip 10.148.124.84 from server mac 01:00:5e:0b:2c:22 for client mac 01:00:5e:06:12:98 from router 10.28.144.180 on subnet ritin with dns temporin", - "fileset.name": "meraki", - "host.ip": "10.28.144.180", - "input.type": "log", - "log.offset": 6464, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.148.124.84", - "10.28.144.180" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "icabo_", - "rsa.misc.sensor": "icabo_", - "rsa.network.dns_a_record": "temporin", - "rsa.network.mask": "ritin", - "rsa.time.event_time": "2017-05-29T05:37:24.000Z", - "service.type": "cisco", - "source.ip": "10.148.124.84", - "source.mac": "01:00:5e:0b:2c:22", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-06-12T12:39:58.000Z", - "destination.ip": "10.98.194.212", - "destination.mac": "01:00:5e:bb:60:a6", - "event.action": "utaliqu", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "ica 1497271198.lillum remips_appliance events aid=uisaute arp_resp=imide arp_src=poriss auth_neg_dur=tvolup auth_neg_failed=itesseq channel=dictasun dns_req_rtt=veniamqu dns_resp=rum dns_server=quaea duration=165.611000 full_conn=mvel identity=nof ip_resp=usmodi ip_src=10.204.230.166 is_8021x=dat is_wpa=aincidu last_auth_ago=nimadmin radio=isiu reason=licabo rssi=enimadmi type=utaliqu vap=dic client_mac=01:00:5e:bb:60:a6 client_ip=10.62.71.118 instigator=ineavol http_resp=iosa dhcp_lease_completed=boNemoe dhcp_ip=onsequ dhcp_server=equinesc dhcp_server_mac=cab dhcp_resp=atisund url=https://example.net/ites/isetq.gif?nisiut=tur#avolupt category0=ariatur server=10.98.194.212 vpn_type=nimave connectivity=isciv", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 6661, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.204.230.166", - "10.98.194.212" - ], - "rsa.counters.dclass_r1": "enimadmi", - "rsa.internal.messageid": "events", - "rsa.misc.category": "ariatur", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "utaliqu", - "rsa.misc.node": "remips", - "rsa.misc.sensor": "remips", - "rsa.time.duration_time": 165.611, - "rsa.time.event_time": "2017-06-12T12:39:58.000Z", - "service.type": "cisco", - "source.ip": "10.204.230.166", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "example.net", - "url.extension": "gif", - "url.fragment": "avolupt", - "url.original": "https://example.net/ites/isetq.gif?nisiut=tur#avolupt", - "url.path": "/ites/isetq.gif", - "url.query": "nisiut=tur", - "url.scheme": "https" - }, - { - "@timestamp": "2017-06-26T19:42:33.000Z", - "destination.ip": "10.197.13.39", - "destination.port": 5912, - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "dipisci 1498506153.spernatu admi events content_filtering_block url='https://www.example.org/ueipsa/tae.html?eriti=atcupi#corpori' category0='borisnis' server='10.197.13.39:5912'", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 7378, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.197.13.39" - ], - "rsa.internal.event_desc": "content_filtering_block", - "rsa.internal.messageid": "events", - "rsa.misc.category": "borisnis", - "rsa.misc.node": "admi", - "rsa.misc.sensor": "admi", - "rsa.time.event_time": "2017-06-26T19:42:33.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www.example.org", - "url.extension": "html", - "url.fragment": "corpori", - "url.original": "https://www.example.org/ueipsa/tae.html?eriti=atcupi#corpori", - "url.path": "/ueipsa/tae.html", - "url.query": "eriti=atcupi", - "url.scheme": "https" - }, - { - "@timestamp": "2017-07-11T02:45:07.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "itsedd 1499741107.leumiur eratvol events dhcp release for mac 01:00:5e:fd:84:bb", - "fileset.name": "meraki", - "host.mac": "01:00:5e:fd:84:bb", - "input.type": "log", - "log.offset": 7557, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "eratvol", - "rsa.misc.sensor": "eratvol", - "rsa.network.eth_host": "01:00:5e:fd:84:bb", - "rsa.time.event_time": "2017-07-11T02:45:07.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-07-25T09:47:41.000Z", - "destination.ip": "10.150.245.88", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "leumiu tla.item nimid ids-alerts signature=dat priority=periam timestamp=1500976061.dquprotocol=icmp src=10.242.77.170 dst=10.150.245.88message: orisn", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 7637, - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.150.245.88", - "10.242.77.170" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "nimid", - "rsa.misc.policy_name": "orisn", - "rsa.misc.sensor": "nimid", - "rsa.time.event_time": "2017-07-25T09:47:41.000Z", - "service.type": "cisco", - "source.ip": "10.242.77.170", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-08-08T16:50:15.000Z", - "destination.ip": "10.180.195.43", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "sitam rad.loi isc_ ids-alerts volupt ids-alerts signature=rem priority=idid timestamp=1502211015.tesse shost=01:00:5e:9d:eb:fb direction=external protocol=tcp src=10.247.139.239 dst=10.180.195.43 message: tenatuse", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 7788, - "network.direction": "external", - "network.protocol": "tcp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.180.195.43", - "10.247.139.239" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "isc_ ids-alerts volupt", - "rsa.misc.policy_name": "tenatuse", - "rsa.misc.sensor": "isc_ ids-alerts volupt", - "rsa.time.event_time": "2017-08-08T16:50:15.000Z", - "service.type": "cisco", - "source.ip": "10.247.139.239", - "source.mac": "01:00:5e:9d:eb:fb", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-08-22T23:52:50.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tore 1503445970.elits consequa events dhcp release for mac 01:00:5e:50:48:c4", - "fileset.name": "meraki", - "host.mac": "01:00:5e:50:48:c4", - "input.type": "log", - "log.offset": 8002, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "consequa", - "rsa.misc.sensor": "consequa", - "rsa.network.eth_host": "01:00:5e:50:48:c4", - "rsa.time.event_time": "2017-08-22T23:52:50.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-09-06T06:55:24.000Z", - "destination.ip": "10.147.15.213", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "undeom uamnihi.risnis uov_ ids-alerts isn ids-alerts signature=sBono priority=loremqu timestamp=1504680924.teturprotocol=rdp src=10.94.6.140 dst=10.147.15.213message: uptat", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 8079, - "network.protocol": "rdp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.147.15.213", - "10.94.6.140" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "uov_ ids-alerts isn", - "rsa.misc.policy_name": "uptat", - "rsa.misc.sensor": "uov_ ids-alerts isn", - "rsa.time.event_time": "2017-09-06T06:55:24.000Z", - "service.type": "cisco", - "source.ip": "10.94.6.140", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-09-20T13:57:58.000Z", - "destination.ip": "10.111.157.56", - "event.action": "obeata flows block", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "itasper 1505915878.uae mve_ flows obeata flows block src=10.230.6.127 dst=10.111.157.56 mac=01:00:5e:39:a7:fc protocol=icmp type=aliquamq ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 8252, - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.111.157.56", - "10.230.6.127" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "obeata flows block" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "mve_", - "rsa.misc.sensor": "mve_", - "rsa.time.event_time": "2017-09-20T13:57:58.000Z", - "service.type": "cisco", - "source.ip": "10.230.6.127", - "source.mac": "01:00:5e:39:a7:fc", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-10-04T21:00:32.000Z", - "destination.ip": "10.193.219.34", - "destination.mac": "01:00:5e:58:2d:1c", - "event.action": "inBC", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "archite 1507150832.remq veniamq events aid=occ arp_resp=oloreseo arp_src=iruredol auth_neg_dur=veniamqu auth_neg_failed=licaboN channel=atquo dns_req_rtt=cupi dns_resp=strude dns_server=eritin duration=85.513000 full_conn=litsedq identity=nderiti ip_resp=ntNe ip_src=10.179.40.170 is_8021x=olorema is_wpa=mollita last_auth_ago=tatem radio=iae reason=quido rssi=emip type=inBC vap=mol client_mac=01:00:5e:58:2d:1c client_ip=10.153.81.206 instigator=rsita http_resp=nsequun dhcp_lease_completed=eetd dhcp_ip=illu dhcp_server=iatqu dhcp_server_mac=lorsi dhcp_resp=repreh url=https://www.example.net/irured/illumqui.txt?tionula=ritqu#ecatcupi category0=uamei server=10.193.219.34 vpn_type=onse connectivity=olorem", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 8391, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.179.40.170", - "10.193.219.34" - ], - "rsa.counters.dclass_r1": "emip", - "rsa.internal.messageid": "events", - "rsa.misc.category": "uamei", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "inBC", - "rsa.misc.node": "veniamq", - "rsa.misc.sensor": "veniamq", - "rsa.time.duration_time": 85.513, - "rsa.time.event_time": "2017-10-04T21:00:32.000Z", - "service.type": "cisco", - "source.ip": "10.179.40.170", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www.example.net", - "url.extension": "txt", - "url.fragment": "ecatcupi", - "url.original": "https://www.example.net/irured/illumqui.txt?tionula=ritqu#ecatcupi", - "url.path": "/irured/illumqui.txt", - "url.query": "tionula=ritqu", - "url.scheme": "https" - }, - { - "@timestamp": "2017-10-19T04:03:07.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "umwritte 1508385787.vol oremquel_appliance events MAC 01:00:5e:16:5e:b1 and MAC 01:00:5e:ee:e8:77 both claim IP: 10.255.199.16", - "fileset.name": "meraki", - "host.mac": "01:00:5e:ee:e8:77", - "input.type": "log", - "log.offset": 9101, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.255.199.16" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "oremquel", - "rsa.misc.sensor": "oremquel", - "rsa.network.eth_host": "01:00:5e:ee:e8:77", - "rsa.time.event_time": "2017-10-19T04:03:07.000Z", - "service.type": "cisco", - "source.ip": "10.255.199.16", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-11-02T11:05:41.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "unte 1509620741.uamnihil llam_appliance events MAC 01:00:5e:ee:1d:77 and MAC 01:00:5e:f1:21:bd both claim IP: 10.94.88.5", - "fileset.name": "meraki", - "host.mac": "01:00:5e:f1:21:bd", - "input.type": "log", - "log.offset": 9228, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.94.88.5" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "llam", - "rsa.misc.sensor": "llam", - "rsa.network.eth_host": "01:00:5e:f1:21:bd", - "rsa.time.event_time": "2017-11-02T11:05:41.000Z", - "service.type": "cisco", - "source.ip": "10.94.88.5", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-11-16T18:08:15.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "esci 1510855695.uov quaeab_ events IDS: moles", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 9349, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.db.index": "moles", - "rsa.internal.event_desc": "events IDS", - "rsa.internal.messageid": "events", - "rsa.misc.node": "quaeab_", - "rsa.misc.sensor": "quaeab_", - "rsa.time.event_time": "2017-11-16T18:08:15.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-12-01T01:10:49.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "accusa 1512090649.natu liquid events IDS: enim", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 9395, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.db.index": "enim", - "rsa.internal.event_desc": "events IDS", - "rsa.internal.messageid": "events", - "rsa.misc.node": "liquid", - "rsa.misc.sensor": "liquid", - "rsa.time.event_time": "2017-12-01T01:10:49.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-12-15T08:13:24.000Z", - "destination.ip": "10.124.63.4", - "destination.mac": "01:00:5e:01:60:e0", - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "dquiaco nibus.vitaed ser security_event etconsec signature=elillum priority=upt timestamp=1513325604.rnat dhost=01:00:5e:01:60:e0 direction=internal protocol=ipv6 src=10.90.99.245 dst=10.124.63.4 message:pta", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 9442, - "network.direction": "internal", - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.124.63.4", - "10.90.99.245" - ], - "rsa.internal.event_desc": "etconsec", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "ser", - "rsa.misc.policy_name": "pta", - "rsa.misc.sensor": "ser", - "rsa.time.event_time": "2017-12-15T08:13:24.000Z", - "service.type": "cisco", - "source.ip": "10.90.99.245", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2017-12-29T15:15:58.000Z", - "destination.ip": "10.249.7.146", - "destination.port": 2010, - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tetura 1514560558.imadmini moe_appliance events content_filtering_block url='https://mail.example.net/uat/lupta.html?uptassit=ncidi#tlabori' category0='laudan' server='10.249.7.146:2010'", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 9650, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.249.7.146" - ], - "rsa.internal.event_desc": "content_filtering_block", - "rsa.internal.messageid": "events", - "rsa.misc.category": "laudan", - "rsa.misc.node": "moe", - "rsa.misc.sensor": "moe", - "rsa.time.event_time": "2017-12-29T15:15:58.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "mail.example.net", - "url.extension": "html", - "url.fragment": "tlabori", - "url.original": "https://mail.example.net/uat/lupta.html?uptassit=ncidi#tlabori", - "url.path": "/uat/lupta.html", - "url.query": "uptassit=ncidi", - "url.scheme": "https" - }, - { - "@timestamp": "2018-01-12T22:18:32.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "lapar 1515795512.ritati edquia_appliance events IDS: itesse", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 9837, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.db.index": "itesse", - "rsa.internal.event_desc": "events IDS", - "rsa.internal.messageid": "events", - "rsa.misc.node": "edquia", - "rsa.misc.sensor": "edquia", - "rsa.time.event_time": "2018-01-12T22:18:32.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-01-27T05:21:06.000Z", - "destination.ip": "10.81.234.34", - "destination.mac": "01:00:5e:c9:b7:22", - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "amvolu mip.tion tobeatae_ security_event Utenima security_event iqua signature=luptat priority=deriti timestamp=1517030466.sintocc dhost=01:00:5e:c9:b7:22 direction=inbound protocol=icmp src=10.196.96.162 dst=10.81.234.34 message:equuntur", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 9897, - "network.direction": "inbound", - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.196.96.162", - "10.81.234.34" - ], - "rsa.internal.event_desc": "Utenima security_event iqua", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "tobeatae_", - "rsa.misc.policy_name": "equuntur", - "rsa.misc.sensor": "tobeatae_", - "rsa.time.event_time": "2018-01-27T05:21:06.000Z", - "service.type": "cisco", - "source.ip": "10.196.96.162", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-02-10T12:23:41.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "uide 1518265421.scivel henderi_appliance events IDS: iusmodt", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 10136, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.db.index": "iusmodt", - "rsa.internal.event_desc": "events IDS", - "rsa.internal.messageid": "events", - "rsa.misc.node": "henderi", - "rsa.misc.sensor": "henderi", - "rsa.time.event_time": "2018-02-10T12:23:41.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-02-24T19:26:15.000Z", - "destination.mac": "01:00:5e:7c:01:ab", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tiumd 1519500375.ntmoll mexer events dhcp lease of ip 10.40.101.224 from server mac 01:00:5e:0a:df:72 for client mac 01:00:5e:7c:01:ab with hostname remips188.api.invalid from router 10.78.199.43 on subnet ehender with dns ilmole", - "fileset.name": "meraki", - "host.ip": "10.78.199.43", - "host.name": "remips188.api.invalid", - "input.type": "log", - "log.offset": 10197, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance", - "remips188.api.invalid" - ], - "related.ip": [ - "10.40.101.224", - "10.78.199.43" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "mexer", - "rsa.misc.sensor": "mexer", - "rsa.network.alias_host": [ - "remips188.api.invalid" - ], - "rsa.network.dns_a_record": "ilmole", - "rsa.network.mask": "ehender", - "rsa.time.event_time": "2018-02-24T19:26:15.000Z", - "service.type": "cisco", - "source.ip": "10.40.101.224", - "source.mac": "01:00:5e:0a:df:72", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-03-11T02:28:49.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "runtmo 1520735329.ore isund_appliance events MAC 01:00:5e:17:87:3e and MAC 01:00:5e:5f:c1:3e both claim IP: 10.244.29.119", - "fileset.name": "meraki", - "host.mac": "01:00:5e:5f:c1:3e", - "input.type": "log", - "log.offset": 10427, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.244.29.119" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "isund", - "rsa.misc.sensor": "isund", - "rsa.network.eth_host": "01:00:5e:5f:c1:3e", - "rsa.time.event_time": "2018-03-11T02:28:49.000Z", - "service.type": "cisco", - "source.ip": "10.244.29.119", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-03-25T09:31:24.000Z", - "destination.ip": "10.39.172.93", - "event.action": "pteurs flows deny", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tutlabor 1521970284.reseosq gna_ flows pteurs flows deny src=10.83.131.245 dst=10.39.172.93 mac=01:00:5e:c4:12:c7 protocol=udp type=uido ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 10549, - "network.protocol": "udp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.39.172.93", - "10.83.131.245" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "pteurs flows deny" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "gna_", - "rsa.misc.sensor": "gna_", - "rsa.time.event_time": "2018-03-25T09:31:24.000Z", - "service.type": "cisco", - "source.ip": "10.83.131.245", - "source.mac": "01:00:5e:c4:12:c7", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-04-08T16:33:58.000Z", - "destination.mac": "01:00:5e:7e:cd:15", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "osquira 1523205238.umd sciveli_ events dhcp lease of ip 10.86.188.179 from server mac 01:00:5e:48:4b:78 for client mac 01:00:5e:7e:cd:15 from router 10.201.168.116 on subnet umiure with dns laborum", - "fileset.name": "meraki", - "host.ip": "10.201.168.116", - "input.type": "log", - "log.offset": 10687, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.201.168.116", - "10.86.188.179" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "sciveli_", - "rsa.misc.sensor": "sciveli_", - "rsa.network.dns_a_record": "laborum", - "rsa.network.mask": "umiure", - "rsa.time.event_time": "2018-04-08T16:33:58.000Z", - "service.type": "cisco", - "source.ip": "10.86.188.179", - "source.mac": "01:00:5e:48:4b:78", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-04-22T23:36:32.000Z", - "destination.ip": "10.122.204.151", - "destination.port": 3903, - "event.action": "deny", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "umdolors 1524440192.lumdo acom_ security_event umexercisecurity_event duntut url=https://mail.example.com/prehend/eufug.htm?eufug=est#civelits src=10.148.211.222:2053 dst=10.122.204.151:3903 mac=01:00:5e:c3:a0:dc name=ine sha256=urerepre disposition=asnulap action=deny", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 10885, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.122.204.151", - "10.148.211.222" - ], - "rsa.internal.event_desc": "umexercisecurity_event duntut", - "rsa.internal.messageid": "security_event", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.disposition": "asnulap", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "acom_", - "rsa.misc.sensor": "acom_", - "rsa.time.event_time": "2018-04-22T23:36:32.000Z", - "service.type": "cisco", - "source.ip": "10.148.211.222", - "source.mac": "01:00:5e:c3:a0:dc", - "source.port": 2053, - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "mail.example.com", - "url.extension": "htm", - "url.fragment": "civelits", - "url.original": "https://mail.example.com/prehend/eufug.htm?eufug=est#civelits", - "url.path": "/prehend/eufug.htm", - "url.query": "eufug=est", - "url.scheme": "https" - }, - { - "@timestamp": "2018-05-07T06:39:06.000Z", - "event.action": "luptatem flows accept", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "atnul 1525675146.umfugi stquidol_ flows luptatem flows accept", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 11155, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "luptatem flows accept" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "stquidol_", - "rsa.misc.sensor": "stquidol_", - "rsa.time.event_time": "2018-05-07T06:39:06.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-05-21T13:41:41.000Z", - "destination.ip": "10.120.4.9", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "essequam ueporro.aliqu upt ids-alerts signature=orum priority=Bonoru timestamp=1526910101.madminimprotocol=ipv6-icmp src=10.97.46.16 dst=10.120.4.9message: teni", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 11217, - "network.protocol": "ipv6-icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.120.4.9", - "10.97.46.16" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "upt", - "rsa.misc.policy_name": "teni", - "rsa.misc.sensor": "upt", - "rsa.time.event_time": "2018-05-21T13:41:41.000Z", - "service.type": "cisco", - "source.ip": "10.97.46.16", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-06-04T20:44:15.000Z", - "destination.ip": "10.165.173.162", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "lorsitam tanimid.onpr litseddo_ ids-alerts oremqu ids-alerts signature=idex priority=radip timestamp=1528145055.uptaprotocol=ipv6-icmp src=10.171.206.139 dst=10.165.173.162message: lestia", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 11378, - "network.protocol": "ipv6-icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.165.173.162", - "10.171.206.139" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "litseddo_ ids-alerts oremqu", - "rsa.misc.policy_name": "lestia", - "rsa.misc.sensor": "litseddo_ ids-alerts oremqu", - "rsa.time.event_time": "2018-06-04T20:44:15.000Z", - "service.type": "cisco", - "source.ip": "10.171.206.139", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-06-19T03:46:49.000Z", - "destination.mac": "01:00:5e:f2:d3:12", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "inibusB 1529380009.nostrud cteturad events dhcp lease of ip 10.150.163.151 from server mac 01:00:5e:72:b7:79 for client mac 01:00:5e:f2:d3:12 with hostname uames4985.mail.localdomain from router 10.144.57.239 on subnet oinBCSed with dns orem", - "fileset.name": "meraki", - "host.ip": "10.144.57.239", - "host.name": "uames4985.mail.localdomain", - "input.type": "log", - "log.offset": 11566, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance", - "uames4985.mail.localdomain" - ], - "related.ip": [ - "10.144.57.239", - "10.150.163.151" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "cteturad", - "rsa.misc.sensor": "cteturad", - "rsa.network.alias_host": [ - "uames4985.mail.localdomain" - ], - "rsa.network.dns_a_record": "orem", - "rsa.network.mask": "oinBCSed", - "rsa.time.event_time": "2018-06-19T03:46:49.000Z", - "service.type": "cisco", - "source.ip": "10.150.163.151", - "source.mac": "01:00:5e:72:b7:79", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-07-03T10:49:23.000Z", - "destination.ip": "10.54.44.231", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "eritq rehen.ipsamvol elillum_ ids-alerts tco ids-alerts signature=tvol priority=oluptate timestamp=1530614963.lit shost=01:00:5e:ac:6d:d3 direction=unknown protocol=igmp src=10.52.202.158 dst=10.54.44.231 message: Ute", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 11808, - "network.direction": "unknown", - "network.protocol": "igmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.52.202.158", - "10.54.44.231" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "elillum_ ids-alerts tco", - "rsa.misc.policy_name": "Ute", - "rsa.misc.sensor": "elillum_ ids-alerts tco", - "rsa.time.event_time": "2018-07-03T10:49:23.000Z", - "service.type": "cisco", - "source.ip": "10.52.202.158", - "source.mac": "01:00:5e:ac:6d:d3", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-07-17T17:51:58.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "runtm 1531849918.eturadip olorsi_ events MAC 01:00:5e:67:1d:0f and MAC 01:00:5e:f0:a9:cd both claim IP: 10.101.183.86", - "fileset.name": "meraki", - "host.mac": "01:00:5e:f0:a9:cd", - "input.type": "log", - "log.offset": 12026, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.101.183.86" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "olorsi_", - "rsa.misc.sensor": "olorsi_", - "rsa.network.eth_host": "01:00:5e:f0:a9:cd", - "rsa.time.event_time": "2018-07-17T17:51:58.000Z", - "service.type": "cisco", - "source.ip": "10.101.183.86", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-08-01T00:54:32.000Z", - "event.action": "orem flows src=10.71.22.225 dst=10.4.76.100 protocol=ggp pattern: allow serrorsi", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "inesciu 1533084872.quid atcupid_ flows orem flows src=10.71.22.225 dst=10.4.76.100 protocol=ggp pattern: allow serrorsi", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 12144, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "orem flows src=10.71.22.225 dst=10.4.76.100 protocol=ggp pattern: allow serrorsi" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "atcupid_", - "rsa.misc.sensor": "atcupid_", - "rsa.time.event_time": "2018-08-01T00:54:32.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-08-15T07:57:06.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "lamco 1534319826.cit siar events MAC 01:00:5e:80:cd:ca and MAC 01:00:5e:45:aa:51 both claim IP: 10.83.130.95", - "fileset.name": "meraki", - "host.mac": "01:00:5e:45:aa:51", - "input.type": "log", - "log.offset": 12264, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.83.130.95" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "siar", - "rsa.misc.sensor": "siar", - "rsa.network.eth_host": "01:00:5e:45:aa:51", - "rsa.time.event_time": "2018-08-15T07:57:06.000Z", - "service.type": "cisco", - "source.ip": "10.83.130.95", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-08-29T14:59:40.000Z", - "destination.ip": "10.103.49.129", - "destination.mac": "01:00:5e:59:bf:36", - "event.action": "olor", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "hite 1535554780.ianonnum nofdeFi events aid=henderit arp_resp=remq arp_src=unt auth_neg_dur=tla auth_neg_failed=arch channel=lite dns_req_rtt=ugia dns_resp=meum dns_server=borumSec duration=91.439000 full_conn=nvolupta identity=tev ip_resp=nre ip_src=10.2.110.73 is_8021x=eturadip is_wpa=ent last_auth_ago=rumSecti radio=Utenima reason=olore rssi=orumS type=olor vap=radip client_mac=01:00:5e:59:bf:36 client_ip=10.230.98.81 instigator=aaliquaU http_resp=olu dhcp_lease_completed=iameaque dhcp_ip=identsun dhcp_server=ender dhcp_server_mac=inc dhcp_resp=tect url=https://www.example.net/doconse/eni.html?mSec=smoditem#tatisetq category0=uidolo server=10.103.49.129 vpn_type=oquisq connectivity=abori", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 12373, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.103.49.129", - "10.2.110.73" - ], - "rsa.counters.dclass_r1": "orumS", - "rsa.internal.messageid": "events", - "rsa.misc.category": "uidolo", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "olor", - "rsa.misc.node": "nofdeFi", - "rsa.misc.sensor": "nofdeFi", - "rsa.time.duration_time": 91.439, - "rsa.time.event_time": "2018-08-29T14:59:40.000Z", - "service.type": "cisco", - "source.ip": "10.2.110.73", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www.example.net", - "url.extension": "html", - "url.fragment": "tatisetq", - "url.original": "https://www.example.net/doconse/eni.html?mSec=smoditem#tatisetq", - "url.path": "/doconse/eni.html", - "url.query": "mSec=smoditem", - "url.scheme": "https" - }, - { - "@timestamp": "2018-09-12T22:02:15.000Z", - "destination.ip": "10.132.176.96", - "destination.mac": "01:00:5e:e6:a6:a2", - "event.action": "rvelill", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "dunt 1536789735.ames amni events aid=tatio arp_resp=amquisno arp_src=modoc auth_neg_dur=magnam auth_neg_failed=uinesc channel=cid dns_req_rtt=emi dns_resp=Bonorum dns_server=lesti duration=59.289000 full_conn=iosamni identity=idu ip_resp=sis ip_src=10.158.61.228 is_8021x=tsedquia is_wpa=its last_auth_ago=umdolor radio=isiu reason=assi rssi=eserun type=rvelill vap=lupta client_mac=01:00:5e:e6:a6:a2 client_ip=10.186.16.20 instigator=tisu http_resp=remagnam dhcp_lease_completed=nvolupt dhcp_ip=meiusm dhcp_server=nidolo dhcp_server_mac=atquovol dhcp_resp=quunt url=https://www.example.com/seq/moll.htm?sunt=dquianon#urExc category0=tDuis server=10.132.176.96 vpn_type=aria connectivity=inim", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 13073, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.132.176.96", - "10.158.61.228" - ], - "rsa.counters.dclass_r1": "eserun", - "rsa.internal.messageid": "events", - "rsa.misc.category": "tDuis", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "rvelill", - "rsa.misc.node": "amni", - "rsa.misc.sensor": "amni", - "rsa.time.duration_time": 59.289, - "rsa.time.event_time": "2018-09-12T22:02:15.000Z", - "service.type": "cisco", - "source.ip": "10.158.61.228", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "urExc", - "url.original": "https://www.example.com/seq/moll.htm?sunt=dquianon#urExc", - "url.path": "/seq/moll.htm", - "url.query": "sunt=dquianon", - "url.scheme": "https" - }, - { - "@timestamp": "2018-09-27T05:04:49.000Z", - "destination.mac": "01:00:5e:69:92:4a", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "oremeumf 1538024689.lesti sintocca events dhcp lease of ip 10.105.136.146 from server mac 01:00:5e:bb:aa:f6 for client mac 01:00:5e:69:92:4a with hostname lors2232.api.example from router 10.46.217.155 on subnet amnihil with dns orissus", - "fileset.name": "meraki", - "host.ip": "10.46.217.155", - "host.name": "lors2232.api.example", - "input.type": "log", - "log.offset": 13766, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance", - "lors2232.api.example" - ], - "related.ip": [ - "10.105.136.146", - "10.46.217.155" - ], - "rsa.internal.messageid": "events", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "sintocca", - "rsa.misc.sensor": "sintocca", - "rsa.network.alias_host": [ - "lors2232.api.example" - ], - "rsa.network.dns_a_record": "orissus", - "rsa.network.mask": "amnihil", - "rsa.time.event_time": "2018-09-27T05:04:49.000Z", - "service.type": "cisco", - "source.ip": "10.105.136.146", - "source.mac": "01:00:5e:bb:aa:f6", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-10-11T12:07:23.000Z", - "destination.ip": "10.123.62.215", - "destination.mac": "01:00:5e:1f:7f:1d", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "nimadmin 1539259643.lumqui quiavolu flows src=10.245.199.23 dst=10.123.62.215 mac=01:00:5e:1f:7f:1d protocol=udp pattern: 0 iusmodt", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 14003, - "network.protocol": "udp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.123.62.215", - "10.245.199.23" - ], - "rsa.db.index": "iusmodt", - "rsa.internal.messageid": "flows", - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "quiavolu", - "rsa.misc.sensor": "quiavolu", - "rsa.time.event_time": "2018-10-11T12:07:23.000Z", - "service.type": "cisco", - "source.ip": "10.245.199.23", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-10-25T19:09:57.000Z", - "event.action": "cancel src=10.239.105.121 dst=10.70.7.23 mac=01:00:5e:8e:82:f0 protocol=ipv6", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "rep 1540494597.remap deri flows cancel src=10.239.105.121 dst=10.70.7.23 mac=01:00:5e:8e:82:f0 protocol=ipv6 ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 14135, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "cancel src=10.239.105.121 dst=10.70.7.23 mac=01:00:5e:8e:82:f0 protocol=ipv6" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "deri", - "rsa.misc.sensor": "deri", - "rsa.time.event_time": "2018-10-25T19:09:57.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-11-09T02:12:32.000Z", - "destination.ip": "10.16.230.121", - "destination.mac": "01:00:5e:99:a6:b4", - "event.action": "nonpro", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "idexeac 1541729552.nimadmin midest_appliance events aid=modt arp_resp=iduntutl arp_src=rsitam auth_neg_dur=xercit auth_neg_failed=ulpaquio channel=itqu dns_req_rtt=minimav dns_resp=smodtem dns_server=roquisqu duration=116.294000 full_conn=iquid identity=evo ip_resp=mcorpori ip_src=10.196.176.243 is_8021x=itesse is_wpa=expl last_auth_ago=essecill radio=totamre reason=rpo rssi=velites type=nonpro vap=nula client_mac=01:00:5e:99:a6:b4 client_ip=10.90.50.149 instigator=nemulla http_resp=asp dhcp_lease_completed=dexercit dhcp_ip=amn dhcp_server=itessequ dhcp_server_mac=porissu dhcp_resp=umd url=https://www.example.net/sectetur/edquian.html?turQuis=taevi#uames category0=tconsec server=10.16.230.121 vpn_type=laboree connectivity=udantiu", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 14245, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.16.230.121", - "10.196.176.243" - ], - "rsa.counters.dclass_r1": "velites", - "rsa.internal.messageid": "events", - "rsa.misc.category": "tconsec", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "nonpro", - "rsa.misc.node": "midest", - "rsa.misc.sensor": "midest", - "rsa.time.duration_time": 116.294, - "rsa.time.event_time": "2018-11-09T02:12:32.000Z", - "service.type": "cisco", - "source.ip": "10.196.176.243", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www.example.net", - "url.extension": "html", - "url.fragment": "uames", - "url.original": "https://www.example.net/sectetur/edquian.html?turQuis=taevi#uames", - "url.path": "/sectetur/edquian.html", - "url.query": "turQuis=taevi", - "url.scheme": "https" - }, - { - "@timestamp": "2018-11-23T09:15:06.000Z", - "destination.ip": "10.34.62.190", - "destination.mac": "01:00:5e:6a:c8:f8", - "destination.port": 1641, - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "ttenb olor.quiav gna security_event Nem signature=tdolorem priority=eacomm timestamp=1542964506.upidata dhost=01:00:5e:6a:c8:f8 direction=unknown protocol=ipv6 src=10.246.152.72:4293 dst=10.34.62.190:1641 message:eve", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 14985, - "network.direction": "unknown", - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.246.152.72", - "10.34.62.190" - ], - "rsa.internal.event_desc": "Nem", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "gna", - "rsa.misc.policy_name": "eve", - "rsa.misc.sensor": "gna", - "rsa.time.event_time": "2018-11-23T09:15:06.000Z", - "service.type": "cisco", - "source.ip": "10.246.152.72", - "source.port": 4293, - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-12-07T16:17:40.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "quisn 1544199460.rem ulamcola events dhcp no offers for mac 01:00:5e:67:fc:cb", - "fileset.name": "meraki", - "host.mac": "01:00:5e:67:fc:cb", - "input.type": "log", - "log.offset": 15202, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "ulamcola", - "rsa.misc.sensor": "ulamcola", - "rsa.network.eth_host": "01:00:5e:67:fc:cb", - "rsa.time.event_time": "2018-12-07T16:17:40.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2018-12-21T23:20:14.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "eruntmo 1545434414.nimve usanti_ events dhcp release for mac 01:00:5e:7d:de:f7", - "fileset.name": "meraki", - "host.mac": "01:00:5e:7d:de:f7", - "input.type": "log", - "log.offset": 15280, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "usanti_", - "rsa.misc.sensor": "usanti_", - "rsa.network.eth_host": "01:00:5e:7d:de:f7", - "rsa.time.event_time": "2018-12-21T23:20:14.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-01-05T06:22:49.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "uatu 1546669369.olupta consequu_ events dhcp release for mac 01:00:5e:6b:96:f2", - "fileset.name": "meraki", - "host.mac": "01:00:5e:6b:96:f2", - "input.type": "log", - "log.offset": 15359, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "consequu_", - "rsa.misc.sensor": "consequu_", - "rsa.network.eth_host": "01:00:5e:6b:96:f2", - "rsa.time.event_time": "2019-01-05T06:22:49.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-01-19T13:25:23.000Z", - "destination.ip": "10.121.9.5", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "sitam inibusBo.illoin emUtenim ids-alerts signature=ende priority=dexea timestamp=1547904323.acoprotocol=ipv6 src=10.244.32.189 dst=10.121.9.5message: uptas", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 15438, - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.121.9.5", - "10.244.32.189" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "emUtenim", - "rsa.misc.policy_name": "uptas", - "rsa.misc.sensor": "emUtenim", - "rsa.time.event_time": "2019-01-19T13:25:23.000Z", - "service.type": "cisco", - "source.ip": "10.244.32.189", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-02-02T20:27:57.000Z", - "destination.ip": "10.41.124.15", - "destination.port": 333, - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "edol 1549139277.sequuntu quameius_ events content_filtering_block url='https://www.example.com/totamrem/aliqu.htm?sBonorum=moenimi#lor' category0='auto' server='10.41.124.15:333'", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 15595, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.41.124.15" - ], - "rsa.internal.event_desc": "content_filtering_block", - "rsa.internal.messageid": "events", - "rsa.misc.category": "auto", - "rsa.misc.node": "quameius_", - "rsa.misc.sensor": "quameius_", - "rsa.time.event_time": "2019-02-02T20:27:57.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "lor", - "url.original": "https://www.example.com/totamrem/aliqu.htm?sBonorum=moenimi#lor", - "url.path": "/totamrem/aliqu.htm", - "url.query": "sBonorum=moenimi", - "url.scheme": "https" - }, - { - "@timestamp": "2019-02-17T03:30:32.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "antium 1550374232.remaper eseosq events dhcp no offers for mac 01:00:5e:c3:77:27", - "fileset.name": "meraki", - "host.mac": "01:00:5e:c3:77:27", - "input.type": "log", - "log.offset": 15774, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "eseosq", - "rsa.misc.sensor": "eseosq", - "rsa.network.eth_host": "01:00:5e:c3:77:27", - "rsa.time.event_time": "2019-02-17T03:30:32.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-03-03T10:33:06.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "oditau 1551609186.onsec dit events MAC 01:00:5e:19:86:21 and MAC 01:00:5e:ed:ed:79 both claim IP: 10.43.235.230", - "fileset.name": "meraki", - "host.mac": "01:00:5e:ed:ed:79", - "input.type": "log", - "log.offset": 15855, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.43.235.230" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "dit", - "rsa.misc.sensor": "dit", - "rsa.network.eth_host": "01:00:5e:ed:ed:79", - "rsa.time.event_time": "2019-03-03T10:33:06.000Z", - "service.type": "cisco", - "source.ip": "10.43.235.230", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-03-17T17:35:40.000Z", - "destination.ip": "10.103.91.159", - "destination.port": 7116, - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "asper dictasun.psa lorese_ ids-alerts ctobeat ids-alerts signature=onsec priority=idestl timestamp=1552844140.litani shost=01:00:5e:a0:b2:c9 direction=unknown protocol=icmp src=10.199.19.205:5823 dst=10.103.91.159:7116 message: ntut", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 15967, - "network.direction": "unknown", - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.103.91.159", - "10.199.19.205" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "lorese_ ids-alerts ctobeat", - "rsa.misc.policy_name": "ntut", - "rsa.misc.sensor": "lorese_ ids-alerts ctobeat", - "rsa.time.event_time": "2019-03-17T17:35:40.000Z", - "service.type": "cisco", - "source.ip": "10.199.19.205", - "source.mac": "01:00:5e:a0:b2:c9", - "source.port": 5823, - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-01T00:38:14.000Z", - "destination.ip": "10.65.0.157", - "destination.mac": "01:00:5e:49:c4:17", - "event.action": "Deny", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "estiaec 1554079094.pitlabo tas_appliance flows src=10.17.111.91 dst=10.65.0.157 mac=01:00:5e:49:c4:17 protocol=udp pattern: 1 nostrum", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 16200, - "network.protocol": "udp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.17.111.91", - "10.65.0.157" - ], - "rsa.db.index": "nostrum", - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "Deny" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "tas", - "rsa.misc.sensor": "tas", - "rsa.time.event_time": "2019-04-01T00:38:14.000Z", - "service.type": "cisco", - "source.ip": "10.17.111.91", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-15T07:40:49.000Z", - "event.action": "cancel", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "ercitati 1555314049.atem serro flows cancel", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 16334, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "serro", - "rsa.misc.sensor": "serro", - "rsa.time.event_time": "2019-04-15T07:40:49.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-29T14:43:23.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "amquaera 1556549003.rsitamet leumiur events MAC 01:00:5e:fd:79:9e and MAC 01:00:5e:4d:c0:dd both claim IP: 10.20.130.88", - "fileset.name": "meraki", - "host.mac": "01:00:5e:4d:c0:dd", - "input.type": "log", - "log.offset": 16378, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.20.130.88" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "leumiur", - "rsa.misc.sensor": "leumiur", - "rsa.network.eth_host": "01:00:5e:4d:c0:dd", - "rsa.time.event_time": "2019-04-29T14:43:23.000Z", - "service.type": "cisco", - "source.ip": "10.20.130.88", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-05-13T21:45:57.000Z", - "destination.ip": "10.140.242.86", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "abill ametcon.ofdeFini tasnu_ ids-alerts tionev ids-alerts signature=uasiarch priority=velites timestamp=1557783957.uredolorprotocol=ipv6 src=10.177.64.152 dst=10.140.242.86message: temporin", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 16498, - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.140.242.86", - "10.177.64.152" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "tasnu_ ids-alerts tionev", - "rsa.misc.policy_name": "temporin", - "rsa.misc.sensor": "tasnu_ ids-alerts tionev", - "rsa.time.event_time": "2019-05-13T21:45:57.000Z", - "service.type": "cisco", - "source.ip": "10.177.64.152", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-05-28T04:48:31.000Z", - "destination.ip": "10.51.121.223", - "destination.port": 24, - "event.action": "security_event", - "event.code": "security_event", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "lor nvolupt.dquia ora_ security_event dipi security_event ecatc signature=quovolu priority=ite timestamp=1559018911.itse shost=01:00:5e:b8:73:c8 direction=external protocol=icmp src=10.199.103.185:2449 dst=10.51.121.223:24 message:stenat", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 16689, - "network.direction": "external", - "network.protocol": "icmp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.199.103.185", - "10.51.121.223" - ], - "rsa.internal.event_desc": "dipi security_event ecatc", - "rsa.internal.messageid": "security_event", - "rsa.misc.event_type": "security_event", - "rsa.misc.node": "ora_", - "rsa.misc.policy_name": "stenat", - "rsa.misc.sensor": "ora_", - "rsa.time.event_time": "2019-05-28T04:48:31.000Z", - "service.type": "cisco", - "source.ip": "10.199.103.185", - "source.mac": "01:00:5e:b8:73:c8", - "source.port": 2449, - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-06-11T11:51:06.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "saq 1560253866.asiarch ssuscipi events MAC 01:00:5e:93:48:61 and MAC 01:00:5e:21:c2:55 both claim IP: 10.126.242.58", - "fileset.name": "meraki", - "host.mac": "01:00:5e:21:c2:55", - "input.type": "log", - "log.offset": 16927, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.126.242.58" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "ssuscipi", - "rsa.misc.sensor": "ssuscipi", - "rsa.network.eth_host": "01:00:5e:21:c2:55", - "rsa.time.event_time": "2019-06-11T11:51:06.000Z", - "service.type": "cisco", - "source.ip": "10.126.242.58", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-06-25T18:53:40.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tlab 1561488820.vel ionevo events dhcp release for mac 01:00:5e:8a:1a:f9", - "fileset.name": "meraki", - "host.mac": "01:00:5e:8a:1a:f9", - "input.type": "log", - "log.offset": 17043, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "ionevo", - "rsa.misc.sensor": "ionevo", - "rsa.network.eth_host": "01:00:5e:8a:1a:f9", - "rsa.time.event_time": "2019-06-25T18:53:40.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-07-10T01:56:14.000Z", - "destination.ip": "10.113.152.241", - "event.action": "uira flows deny", - "event.code": "flows", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "aeab 1562723774.uradipis aerat_ flows uira flows deny src=10.121.37.244 dst=10.113.152.241 mac=01:00:5e:9c:86:62 protocol=udp type=utaliqui ", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 17116, - "network.protocol": "udp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.113.152.241", - "10.121.37.244" - ], - "rsa.internal.messageid": "flows", - "rsa.misc.action": [ - "uira flows deny" - ], - "rsa.misc.event_source": "appliance", - "rsa.misc.node": "aerat_", - "rsa.misc.sensor": "aerat_", - "rsa.time.event_time": "2019-07-10T01:56:14.000Z", - "service.type": "cisco", - "source.ip": "10.121.37.244", - "source.mac": "01:00:5e:9c:86:62", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-07-24T08:58:48.000Z", - "destination.ip": "10.254.96.130", - "destination.mac": "01:00:5e:10:8b:c3", - "event.action": "ionu", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "nesciu 1563958728.mali roinBCSe_appliance events aid=eetdolor arp_resp=tpersp arp_src=assi auth_neg_dur=rch auth_neg_failed=psa channel=nreprehe dns_req_rtt=pidatatn dns_resp=isno dns_server=luptatev duration=39.622000 full_conn=lla identity=urau ip_resp=aeca ip_src=10.247.118.132 is_8021x=atcupi is_wpa=enima last_auth_ago=uptateve radio=fugitsed reason=lumqui rssi=ectet type=ionu vap=eratv client_mac=01:00:5e:10:8b:c3 client_ip=10.153.33.99 instigator=liq http_resp=xerc dhcp_lease_completed=atisetqu dhcp_ip=squir dhcp_server=gnaaliq dhcp_server_mac=quam dhcp_resp=deriti url=https://www5.example.org/eturadi/umS.txt?mSecti=henderi#taevitae category0=tevel server=10.254.96.130 vpn_type=ita connectivity=iquipexe", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 17257, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.247.118.132", - "10.254.96.130" - ], - "rsa.counters.dclass_r1": "ectet", - "rsa.internal.messageid": "events", - "rsa.misc.category": "tevel", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "ionu", - "rsa.misc.node": "roinBCSe", - "rsa.misc.sensor": "roinBCSe", - "rsa.time.duration_time": 39.622, - "rsa.time.event_time": "2019-07-24T08:58:48.000Z", - "service.type": "cisco", - "source.ip": "10.247.118.132", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www5.example.org", - "url.extension": "txt", - "url.fragment": "taevitae", - "url.original": "https://www5.example.org/eturadi/umS.txt?mSecti=henderi#taevitae", - "url.path": "/eturadi/umS.txt", - "url.query": "mSecti=henderi", - "url.scheme": "https" - }, - { - "@timestamp": "2019-08-07T16:01:23.000Z", - "destination.ip": "10.200.98.243", - "destination.mac": "01:00:5e:95:ae:d0", - "event.action": "ntium", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "tot 1565193683.reme emeumfu events aid=inBCSedu arp_resp=ita arp_src=ade auth_neg_dur=nihilmol auth_neg_failed=nder channel=ano dns_req_rtt=rumexer dns_resp=eab dns_server=iaconseq duration=18.963000 full_conn=eli identity=rissusci ip_resp=ectetur ip_src=10.101.13.122 is_8021x=oconsequ is_wpa=roqui last_auth_ago=oluptate radio=ntut reason=mremaper rssi=uteirur type=ntium vap=ide client_mac=01:00:5e:95:ae:d0 client_ip=10.78.143.52 instigator=ntiumdol http_resp=conse dhcp_lease_completed=aturve dhcp_ip=edqui dhcp_server=tvolu dhcp_server_mac=psu dhcp_resp=strud url=https://internal.example.org/fdeFi/ratv.htm?sequatu=tiumtot#tate category0=udanti server=10.200.98.243 vpn_type=cteturad connectivity=umq", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 17976, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.101.13.122", - "10.200.98.243" - ], - "rsa.counters.dclass_r1": "uteirur", - "rsa.internal.messageid": "events", - "rsa.misc.category": "udanti", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "ntium", - "rsa.misc.node": "emeumfu", - "rsa.misc.sensor": "emeumfu", - "rsa.time.duration_time": 18.963, - "rsa.time.event_time": "2019-08-07T16:01:23.000Z", - "service.type": "cisco", - "source.ip": "10.101.13.122", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "internal.example.org", - "url.extension": "htm", - "url.fragment": "tate", - "url.original": "https://internal.example.org/fdeFi/ratv.htm?sequatu=tiumtot#tate", - "url.path": "/fdeFi/ratv.htm", - "url.query": "sequatu=tiumtot", - "url.scheme": "https" - }, - { - "@timestamp": "2019-08-21T23:03:57.000Z", - "destination.ip": "10.247.205.185", - "destination.mac": "01:00:5e:6f:21:c8", - "destination.port": 7676, - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "oinvento 1566428637.mporin orissusc_appliance events content_filtering_block url='https://www5.example.net/uov/pariat.htm?litsed=lumd#tiaec' category0='lorem' server='10.247.205.185:7676' client_mac='01:00:5e:6f:21:c8'", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 18684, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.247.205.185" - ], - "rsa.internal.event_desc": "content_filtering_block", - "rsa.internal.messageid": "events", - "rsa.misc.category": "lorem", - "rsa.misc.node": "orissusc", - "rsa.misc.sensor": "orissusc", - "rsa.time.event_time": "2019-08-21T23:03:57.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www5.example.net", - "url.extension": "htm", - "url.fragment": "tiaec", - "url.original": "https://www5.example.net/uov/pariat.htm?litsed=lumd#tiaec", - "url.path": "/uov/pariat.htm", - "url.query": "litsed=lumd", - "url.scheme": "https" - }, - { - "@timestamp": "2019-09-05T06:06:31.000Z", - "destination.ip": "10.147.165.30", - "destination.mac": "01:00:5e:0a:88:bb", - "destination.port": 7662, - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "metMa emoen.ptate mipsumqu_ ids-alerts ccusa ids-alerts signature=billo priority=doloremi timestamp=1567663591.ectetura dhost=01:00:5e:0a:88:bb direction=inbound protocol=ipv6 src=10.195.90.73:3914 dst=10.147.165.30:7662 message: idents", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 18903, - "network.direction": "inbound", - "network.protocol": "ipv6", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.147.165.30", - "10.195.90.73" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "mipsumqu_ ids-alerts ccusa", - "rsa.misc.policy_name": "idents", - "rsa.misc.sensor": "mipsumqu_ ids-alerts ccusa", - "rsa.time.event_time": "2019-09-05T06:06:31.000Z", - "service.type": "cisco", - "source.ip": "10.195.90.73", - "source.port": 3914, - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-09-19T13:09:05.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "veniamqu 1568898545.iconsequ ueporr_appliance events IDS: empor", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 19140, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.db.index": "empor", - "rsa.internal.event_desc": "events IDS", - "rsa.internal.messageid": "events", - "rsa.misc.node": "ueporr", - "rsa.misc.sensor": "ueporr", - "rsa.time.event_time": "2019-09-19T13:09:05.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-03T20:11:40.000Z", - "destination.ip": "10.162.202.14", - "destination.mac": "01:00:5e:dd:cb:5b", - "event.action": "ids-alerts", - "event.code": "ids-alerts", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "atDuisa mipsa.uas iat ids-alerts signature=hite priority=adipis timestamp=1570133500.abo dhost=01:00:5e:dd:cb:5b direction=inbound protocol=udp src=10.137.166.97 dst=10.162.202.14 message: ipsaqua", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 19204, - "network.direction": "inbound", - "network.protocol": "udp", - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.137.166.97", - "10.162.202.14" - ], - "rsa.internal.messageid": "ids-alerts", - "rsa.misc.event_type": "ids-alerts", - "rsa.misc.node": "iat", - "rsa.misc.policy_name": "ipsaqua", - "rsa.misc.sensor": "iat", - "rsa.time.event_time": "2019-10-03T20:11:40.000Z", - "service.type": "cisco", - "source.ip": "10.137.166.97", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-18T03:14:14.000Z", - "destination.ip": "10.227.135.142", - "destination.port": 6598, - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "deom 1571368454.tiumdo rautod_appliance events content_filtering_block url='https://www5.example.com/illoinve/etcon.htm?nevolup=erspici#itinvolu' category0='adeserun' server='10.227.135.142:6598'", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 19401, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.227.135.142" - ], - "rsa.internal.event_desc": "content_filtering_block", - "rsa.internal.messageid": "events", - "rsa.misc.category": "adeserun", - "rsa.misc.node": "rautod", - "rsa.misc.sensor": "rautod", - "rsa.time.event_time": "2019-10-18T03:14:14.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "www5.example.com", - "url.extension": "htm", - "url.fragment": "itinvolu", - "url.original": "https://www5.example.com/illoinve/etcon.htm?nevolup=erspici#itinvolu", - "url.path": "/illoinve/etcon.htm", - "url.query": "nevolup=erspici", - "url.scheme": "https" - }, - { - "@timestamp": "2019-11-01T10:16:48.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "orese 1572603408.umdolore umqui_appliance events MAC 01:00:5e:f1:b8:3a and MAC 01:00:5e:37:9c:af both claim IP: 10.199.29.19", - "fileset.name": "meraki", - "host.mac": "01:00:5e:37:9c:af", - "input.type": "log", - "log.offset": 19597, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.ip": [ - "10.199.29.19" - ], - "rsa.internal.event_desc": " events MAC", - "rsa.internal.messageid": "events", - "rsa.misc.node": "umqui", - "rsa.misc.sensor": "umqui", - "rsa.network.eth_host": "01:00:5e:37:9c:af", - "rsa.time.event_time": "2019-11-01T10:16:48.000Z", - "service.type": "cisco", - "source.ip": "10.199.29.19", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-11-15T17:19:22.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "explicab 1573838362.samvolu teiru_appliance events dhcp no offers for mac 01:00:5e:b8:06:92", - "fileset.name": "meraki", - "host.mac": "01:00:5e:b8:06:92", - "input.type": "log", - "log.offset": 19722, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.internal.event_desc": "events DHCP", - "rsa.internal.messageid": "events", - "rsa.misc.node": "teiru", - "rsa.misc.sensor": "teiru", - "rsa.network.eth_host": "01:00:5e:b8:06:92", - "rsa.time.event_time": "2019-11-15T17:19:22.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - }, - { - "@timestamp": "2019-11-30T00:21:57.000Z", - "destination.ip": "10.75.122.111", - "destination.mac": "01:00:5e:92:d8:95", - "event.action": "modoco", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "rissusci 1575073317.uaturQ iusmod_ events aid=mips arp_resp=iduntutl arp_src=mipsumd auth_neg_dur=eiusmo auth_neg_failed=quelauda channel=rcit dns_req_rtt=dolo dns_resp=ulamc dns_server=doe duration=10.574000 full_conn=remquela identity=toreve ip_resp=squirat ip_src=10.85.59.172 is_8021x=mto is_wpa=iae last_auth_ago=dent radio=Uten reason=tatiset rssi=sequat type=modoco vap=beataevi client_mac=01:00:5e:92:d8:95 client_ip=10.158.215.216 instigator=deritin http_resp=ptate dhcp_lease_completed=lloi dhcp_ip=nseq dhcp_server=equunt dhcp_server_mac=tutla dhcp_resp=usmod url=https://example.com/qui/itse.gif?orsitame=tasn#exeaco category0=upta server=10.75.122.111 vpn_type=reprehe connectivity=deFinib", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 19814, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "related.hosts": [ - "appliance" - ], - "related.ip": [ - "10.75.122.111", - "10.85.59.172" - ], - "rsa.counters.dclass_r1": "sequat", - "rsa.internal.messageid": "events", - "rsa.misc.category": "upta", - "rsa.misc.event_source": "appliance", - "rsa.misc.event_type": "modoco", - "rsa.misc.node": "iusmod_", - "rsa.misc.sensor": "iusmod_", - "rsa.time.duration_time": 10.574, - "rsa.time.event_time": "2019-11-30T00:21:57.000Z", - "service.type": "cisco", - "source.ip": "10.85.59.172", - "tags": [ - "cisco.meraki", - "forwarded" - ], - "url.domain": "example.com", - "url.extension": "gif", - "url.fragment": "exeaco", - "url.original": "https://example.com/qui/itse.gif?orsitame=tasn#exeaco", - "url.path": "/qui/itse.gif", - "url.query": "orsitame=tasn", - "url.scheme": "https" - }, - { - "@timestamp": "2019-12-14T07:24:31.000Z", - "event.code": "events", - "event.dataset": "cisco.meraki", - "event.module": "cisco", - "event.original": "orr 1576308271.pre aute events IDS: rchite", - "fileset.name": "meraki", - "input.type": "log", - "log.offset": 20517, - "observer.product": "Meraki", - "observer.type": "Wireless", - "observer.vendor": "Cisco", - "rsa.db.index": "rchite", - "rsa.internal.event_desc": "events IDS", - "rsa.internal.messageid": "events", - "rsa.misc.node": "aute", - "rsa.misc.sensor": "aute", - "rsa.time.event_time": "2019-12-14T07:24:31.000Z", - "service.type": "cisco", - "tags": [ - "cisco.meraki", - "forwarded" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/cisco/nexus/_meta/fields.yml b/x-pack/filebeat/module/cisco/nexus/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/cisco/nexus/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/cisco/nexus/config/input.yml b/x-pack/filebeat/module/cisco/nexus/config/input.yml deleted file mode 100644 index 096b3882b87..00000000000 --- a/x-pack/filebeat/module/cisco/nexus/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Cisco" - product: "Nexus" - type: "Switches" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/cisco/nexus/config/liblogparser.js - - ${path.home}/module/cisco/nexus/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/cisco/nexus/config/liblogparser.js b/x-pack/filebeat/module/cisco/nexus/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/cisco/nexus/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} Hit-count = %{dclass_counter1}"); - -var dup60 = setc("dclass_counter1_string","Hit Count"); - -var dup61 = setc("eventcategory","1603100000"); - -var dup62 = setc("eventcategory","1701020000"); - -var dup63 = setc("eventcategory","1801000000"); - -var dup64 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/0", "nwparser.payload", "%{action}: %{p0}"); - -var dup65 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/1_0", "nwparser.p0", "%{saddr}@%{terminal}: %{p0}"); - -var dup66 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/1_1", "nwparser.p0", "%{fld1->} %{p0}"); - -var dup67 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/3_0", "nwparser.p0", "(%{result})%{info}"); - -var dup68 = match_copy("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/3_1", "nwparser.p0", "info"); - -var dup69 = match("MESSAGE#238:IF_XCVR_WARNING/0", "nwparser.payload", "Interface %{interface}, %{p0}"); - -var dup70 = match("MESSAGE#238:IF_XCVR_WARNING/1_0", "nwparser.p0", "Low %{p0}"); - -var dup71 = match("MESSAGE#238:IF_XCVR_WARNING/1_1", "nwparser.p0", "High %{p0}"); - -var dup72 = setc("ec_outcome","Error"); - -var dup73 = setc("eventcategory","1703000000"); - -var dup74 = setc("obj_type","vPC"); - -var dup75 = setc("ec_subject","OS"); - -var dup76 = setc("ec_activity","Start"); - -var dup77 = setc("eventcategory","1801010000"); - -var dup78 = setc("ec_activity","Receive"); - -var dup79 = setc("ec_activity","Send"); - -var dup80 = setc("ec_activity","Create"); - -var dup81 = setc("event_description","Switchover completed."); - -var dup82 = setc("event_description","Invalid user"); - -var dup83 = setc("eventcategory","1401000000"); - -var dup84 = setc("ec_subject","Service"); - -var dup85 = setc("event_description","Duplicate address Detected."); - -var dup86 = match_copy("MESSAGE#0:LOG-7-SYSTEM_MSG", "nwparser.payload", "event_description", processor_chain([ - dup1, - dup2, - dup3, - dup4, -])); - -var dup87 = match_copy("MESSAGE#32:NEIGHBOR_UPDATE_AUTOCOPY", "nwparser.payload", "event_description", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var dup88 = match("MESSAGE#35:IF_DOWN_ADMIN_DOWN", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var dup89 = match("MESSAGE#36:IF_DOWN_ADMIN_DOWN:01", "nwparser.payload", "%{fld43->} Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var dup90 = match("MESSAGE#37:IF_DOWN_CHANNEL_MEMBERSHIP_UPDATE_IN_PROGRESS", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var dup91 = match("MESSAGE#38:IF_DOWN_INTERFACE_REMOVED", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var dup92 = linear_select([ - dup26, - dup27, -]); - -var dup93 = match_copy("MESSAGE#58:IM_SEQ_ERROR", "nwparser.payload", "result", processor_chain([ - dup1, - dup2, - dup3, - dup4, -])); - -var dup94 = match_copy("MESSAGE#88:PFM_VEM_REMOVE_NO_HB", "nwparser.payload", "event_description", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var dup95 = match("MESSAGE#108:IF_DOWN_INITIALIZING:01", "nwparser.payload", "%{fld43->} Interface %{interface->} is down (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var dup96 = match("MESSAGE#110:IF_DOWN_NONE:01", "nwparser.payload", "%{fld52->} Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup34, - dup35, - dup14, - dup2, - dup3, - dup4, -])); - -var dup97 = match_copy("MESSAGE#123:PORT_PROFILE_CHANGE_VERIFY_REQ_FAILURE", "nwparser.payload", "event_description", processor_chain([ - dup33, - dup2, - dup3, - dup4, -])); - -var dup98 = linear_select([ - dup46, - dup47, -]); - -var dup99 = linear_select([ - dup49, - dup50, -]); - -var dup100 = linear_select([ - dup54, - dup55, -]); - -var dup101 = linear_select([ - dup57, - dup58, -]); - -var dup102 = match_copy("MESSAGE#214:NOHMS_DIAG_ERR_PS_FAIL", "nwparser.payload", "event_description", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var dup103 = linear_select([ - dup65, - dup66, -]); - -var dup104 = linear_select([ - dup67, - dup68, -]); - -var dup105 = match("MESSAGE#224:IF_SFP_WARNING", "nwparser.payload", "Interface %{interface}, %{event_description}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var dup106 = match("MESSAGE#225:IF_DOWN_TCP_MAX_RETRANSMIT", "nwparser.payload", "%{fld43->} Interface %{interface->} is down%{info}", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var dup107 = linear_select([ - dup70, - dup71, -]); - -var dup108 = match("MESSAGE#239:IF_XCVR_WARNING:01", "nwparser.payload", "Interface %{interface}, %{event_description}", processor_chain([ - dup61, - dup2, - dup3, - dup4, -])); - -var hdr1 = match("HEADER#0:0001", "message", ": %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{hfld18}: %%{hfld19}-%{hfld20}-%{severity}-%{messageid}: %{payload}", processor_chain([ - setc("header_id","0001"), -])); - -var hdr2 = match("HEADER#1:0007", "message", "%{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{hfld18}: %%{hfld19}-%{hfld20}-%{severity}-%{messageid}: %{payload}", processor_chain([ - setc("header_id","0007"), -])); - -var hdr3 = match("HEADER#2:0005", "message", "%{hfld4->} %{hfld5->} %{hfld6->} %{hfld7->} : %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %%{hfld19}-%{severity}-%{messageid}: %{payload}", processor_chain([ - setc("header_id","0005"), -])); - -var hdr4 = match("HEADER#3:0002", "message", ": %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %%{hfld19}-%{severity}-%{messageid}: %{payload}", processor_chain([ - setc("header_id","0002"), -])); - -var hdr5 = match("HEADER#4:0012", "message", "%{fld13}: %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %%{hfld19}-%{severity}-%{messageid}: %{payload}", processor_chain([ - setc("header_id","0012"), -])); - -var hdr6 = match("HEADER#5:0008", "message", "%{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %%{hfld19}-%{severity}-%{messageid}: %{payload}", processor_chain([ - setc("header_id","0008"), -])); - -var hdr7 = match("HEADER#6:0011", "message", ": %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %{messageid}[%{hfld18}]: %{payload}", processor_chain([ - setc("header_id","0011"), -])); - -var hdr8 = match("HEADER#7:0003", "message", ": %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %{messageid}: %{payload}", processor_chain([ - setc("header_id","0003"), -])); - -var hdr9 = match("HEADER#8:0004", "message", ": %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %{messageid->} %{payload}", processor_chain([ - setc("header_id","0004"), -])); - -var hdr10 = match("HEADER#9:0009", "message", "%{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %{messageid}: %{payload}", processor_chain([ - setc("header_id","0009"), -])); - -var hdr11 = match("HEADER#10:0013", "message", "%{fld13}: %{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %{messageid->} %{payload}", processor_chain([ - setc("header_id","0013"), -])); - -var hdr12 = match("HEADER#11:0010", "message", "%{hfld14->} %{hfld15->} %{hfld16->} %{hfld17->} %{timezone}: %{messageid->} %{payload}", processor_chain([ - setc("header_id","0010"), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, - hdr5, - hdr6, - hdr7, - hdr8, - hdr9, - hdr10, - hdr11, - hdr12, -]); - -var msg1 = msg("LOG-7-SYSTEM_MSG", dup86); - -var part1 = match("MESSAGE#1:SYSTEM_MSG", "nwparser.payload", "error: PAM: Authentication failure for illegal user %{username->} from %{saddr->} - %{agent}[%{process_id}]", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup6, -])); - -var msg2 = msg("SYSTEM_MSG", part1); - -var part2 = match("MESSAGE#2:SYSTEM_MSG:12", "nwparser.payload", "error: PAM: Authentication failure for illegal user %{username->} from %{shost}", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup6, -])); - -var msg3 = msg("SYSTEM_MSG:12", part2); - -var part3 = match("MESSAGE#3:SYSTEM_MSG:01", "nwparser.payload", "error: PAM: Authentication failure for %{username->} from %{saddr->} - %{agent}[%{process_id}]", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup7, -])); - -var msg4 = msg("SYSTEM_MSG:01", part3); - -var part4 = match("MESSAGE#4:SYSTEM_MSG:11", "nwparser.payload", "error: PAM: Authentication failure for %{username->} from %{shost}", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup7, -])); - -var msg5 = msg("SYSTEM_MSG:11", part4); - -var part5 = match("MESSAGE#5:SYSTEM_MSG:19/0", "nwparser.payload", "error: maximum authentication attempts exceeded for %{p0}"); - -var part6 = match("MESSAGE#5:SYSTEM_MSG:19/1_0", "nwparser.p0", "invalid user %{username->} from %{p0}"); - -var part7 = match("MESSAGE#5:SYSTEM_MSG:19/1_1", "nwparser.p0", "%{username->} from %{p0}"); - -var select2 = linear_select([ - part6, - part7, -]); - -var part8 = match("MESSAGE#5:SYSTEM_MSG:19/2", "nwparser.p0", "%{saddr->} port %{sport->} %{protocol->} - %{agent}[%{process_id}]"); - -var all1 = all_match({ - processors: [ - part5, - select2, - part8, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - ]), -}); - -var msg6 = msg("SYSTEM_MSG:19", all1); - -var part9 = match("MESSAGE#6:SYSTEM_MSG:02", "nwparser.payload", "error:%{result}", processor_chain([ - dup1, - dup2, - dup3, - dup4, -])); - -var msg7 = msg("SYSTEM_MSG:02", part9); - -var part10 = match("MESSAGE#7:SYSTEM_MSG:03/0_0", "nwparser.payload", "(pam_unix)%{p0}"); - -var part11 = match("MESSAGE#7:SYSTEM_MSG:03/0_1", "nwparser.payload", "pam_unix(%{fld1}:%{fld2}):%{p0}"); - -var select3 = linear_select([ - part10, - part11, -]); - -var part12 = match("MESSAGE#7:SYSTEM_MSG:03/1", "nwparser.p0", "%{}authentication failure; logname=%{fld20->} uid=%{fld21->} euid=%{fld22->} tty=%{terminal->} ruser=%{fld24->} rhost=%{p0}"); - -var part13 = match("MESSAGE#7:SYSTEM_MSG:03/2_0", "nwparser.p0", "%{fld25->} user=%{username->} - %{p0}"); - -var part14 = match("MESSAGE#7:SYSTEM_MSG:03/2_1", "nwparser.p0", "%{fld25->} - %{p0}"); - -var select4 = linear_select([ - part13, - part14, -]); - -var part15 = match_copy("MESSAGE#7:SYSTEM_MSG:03/3", "nwparser.p0", "agent"); - -var all2 = all_match({ - processors: [ - select3, - part12, - select4, - part15, - ], - on_success: processor_chain([ - dup5, - dup2, - dup3, - dup4, - ]), -}); - -var msg8 = msg("SYSTEM_MSG:03", all2); - -var part16 = match("MESSAGE#8:SYSTEM_MSG:04", "nwparser.payload", "(pam_unix) %{event_description}", processor_chain([ - dup8, - dup2, - dup3, - dup4, -])); - -var msg9 = msg("SYSTEM_MSG:04", part16); - -var part17 = match("MESSAGE#9:SYSTEM_MSG:05/0", "nwparser.payload", "pam_aaa:Authentication failed f%{p0}"); - -var part18 = match("MESSAGE#9:SYSTEM_MSG:05/1_0", "nwparser.p0", "or user %{username->} from%{p0}"); - -var part19 = match("MESSAGE#9:SYSTEM_MSG:05/1_1", "nwparser.p0", "rom%{p0}"); - -var select5 = linear_select([ - part18, - part19, -]); - -var part20 = match("MESSAGE#9:SYSTEM_MSG:05/2", "nwparser.p0", "%{} %{saddr->} - %{agent}[%{process_id}]"); - -var all3 = all_match({ - processors: [ - part17, - select5, - part20, - ], - on_success: processor_chain([ - dup5, - dup2, - dup3, - dup4, - ]), -}); - -var msg10 = msg("SYSTEM_MSG:05", all3); - -var part21 = match("MESSAGE#10:SYSTEM_MSG:06", "nwparser.payload", "FAILED LOGIN (%{fld20}) on %{fld21->} FOR %{username}, Authentication failure - login[%{process_id}]", processor_chain([ - dup5, - dup2, - dup3, - dup4, -])); - -var msg11 = msg("SYSTEM_MSG:06", part21); - -var part22 = match("MESSAGE#11:SYSTEM_MSG:07", "nwparser.payload", "fatal:%{event_description}", processor_chain([ - dup9, - dup2, - dup3, - dup4, -])); - -var msg12 = msg("SYSTEM_MSG:07", part22); - -var part23 = match("MESSAGE#12:SYSTEM_MSG:09", "nwparser.payload", "%{fld1}: Host name is set %{hostname->} - kernel", processor_chain([ - dup9, - dup2, - dup3, - dup4, -])); - -var msg13 = msg("SYSTEM_MSG:09", part23); - -var part24 = match("MESSAGE#13:SYSTEM_MSG:10", "nwparser.payload", "Unauthorized access by NFS client %{saddr}.", processor_chain([ - dup5, - dup2, - dup3, - dup4, -])); - -var msg14 = msg("SYSTEM_MSG:10", part24); - -var part25 = match("MESSAGE#14:SYSTEM_MSG:13", "nwparser.payload", "%{fld43->} : SNMP UDP authentication failed for %{saddr}.", processor_chain([ - dup5, - dup2, - dup3, - dup4, -])); - -var msg15 = msg("SYSTEM_MSG:13", part25); - -var part26 = match("MESSAGE#15:SYSTEM_MSG:14", "nwparser.payload", "%{fld43->} : Subsequent authentication success for user (%{username}) failed.", processor_chain([ - dup5, - dup2, - dup3, - dup4, -])); - -var msg16 = msg("SYSTEM_MSG:14", part26); - -var part27 = match("MESSAGE#16:SYSTEM_MSG:15", "nwparser.payload", "%{fld1->} : TTY=%{terminal->} ; PWD=%{directory->} ; USER=%{username->} ; COMMAND=%{param}", processor_chain([ - dup10, - dup2, - dup3, - dup4, - dup11, - dup12, -])); - -var msg17 = msg("SYSTEM_MSG:15", part27); - -var part28 = match("MESSAGE#17:SYSTEM_MSG:16", "nwparser.payload", "Login failed for user %{username->} - %{agent}[%{process_id}]", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup11, - dup13, - dup12, - dup14, -])); - -var msg18 = msg("SYSTEM_MSG:16", part28); - -var part29 = match("MESSAGE#18:SYSTEM_MSG:17/0", "nwparser.payload", "NTP: Peer %{hostip->} %{p0}"); - -var part30 = match("MESSAGE#18:SYSTEM_MSG:17/1_0", "nwparser.p0", "with stratum %{fld1->} selected - %{p0}"); - -var part31 = match("MESSAGE#18:SYSTEM_MSG:17/1_1", "nwparser.p0", "is %{disposition->} - %{p0}"); - -var select6 = linear_select([ - part30, - part31, -]); - -var part32 = match("MESSAGE#18:SYSTEM_MSG:17/2", "nwparser.p0", "%{agent}[%{process_id}]"); - -var all4 = all_match({ - processors: [ - part29, - select6, - part32, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg19 = msg("SYSTEM_MSG:17", all4); - -var part33 = match("MESSAGE#19:SYSTEM_MSG:20", "nwparser.payload", "New user added with username %{username->} - %{agent}", processor_chain([ - dup10, - dup2, - dup3, - dup4, - dup12, -])); - -var msg20 = msg("SYSTEM_MSG:20", part33); - -var part34 = match("MESSAGE#20:SYSTEM_MSG:21", "nwparser.payload", "pam_unix(%{fld1}:%{fld2}): password changed for %{username->} - %{agent}", processor_chain([ - dup10, - dup2, - dup3, - dup4, - setc("ec_subject","Password"), - dup16, - dup12, - dup17, -])); - -var msg21 = msg("SYSTEM_MSG:21", part34); - -var part35 = match("MESSAGE#21:SYSTEM_MSG:22", "nwparser.payload", "pam_unix(%{fld1}:%{fld2}): check pass; user %{username->} - %{agent}", processor_chain([ - dup10, - dup2, - dup3, - dup4, - dup12, -])); - -var msg22 = msg("SYSTEM_MSG:22", part35); - -var part36 = match("MESSAGE#22:SYSTEM_MSG:23", "nwparser.payload", "new user: name=%{username}, uid=%{uid}, gid=%{fld1}, home=%{directory}, shell=%{fld2->} - %{agent}[%{process_id}]", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup11, -])); - -var msg23 = msg("SYSTEM_MSG:23", part36); - -var part37 = match("MESSAGE#23:SYSTEM_MSG:24/0", "nwparser.payload", "delete user %{p0}"); - -var part38 = match("MESSAGE#23:SYSTEM_MSG:24/1_0", "nwparser.p0", "`%{p0}"); - -var part39 = match("MESSAGE#23:SYSTEM_MSG:24/1_1", "nwparser.p0", "'%{p0}"); - -var select7 = linear_select([ - part38, - part39, -]); - -var part40 = match("MESSAGE#23:SYSTEM_MSG:24/2", "nwparser.p0", "'%{username->} - %{agent}[%{process_id}]"); - -var all5 = all_match({ - processors: [ - part37, - select7, - part40, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup11, - dup20, - dup17, - ]), -}); - -var msg24 = msg("SYSTEM_MSG:24", all5); - -var part41 = match("MESSAGE#24:SYSTEM_MSG:08/0_0", "nwparser.payload", "%{event_description->} - %{agent}"); - -var select8 = linear_select([ - part41, - dup21, -]); - -var all6 = all_match({ - processors: [ - select8, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg25 = msg("SYSTEM_MSG:08", all6); - -var select9 = linear_select([ - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, - msg18, - msg19, - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, -]); - -var part42 = match("MESSAGE#25:VDC_HOSTNAME_CHANGE", "nwparser.payload", "%{fld1->} hostname changed to %{hostname}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg26 = msg("VDC_HOSTNAME_CHANGE", part42); - -var part43 = match("MESSAGE#26:POLICY_ACTIVATE_EVENT", "nwparser.payload", "Policy %{policyname->} is activated by profile %{username}", processor_chain([ - dup22, - dup2, - dup3, - dup4, - setc("action","activated"), - setc("event_description","Policy is activated by profile"), -])); - -var msg27 = msg("POLICY_ACTIVATE_EVENT", part43); - -var part44 = match("MESSAGE#27:POLICY_COMMIT_EVENT", "nwparser.payload", "Commit operation %{disposition}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg28 = msg("POLICY_COMMIT_EVENT", part44); - -var part45 = match("MESSAGE#28:POLICY_DEACTIVATE_EVENT", "nwparser.payload", "Policy %{policyname->} is de-activated by last referring profile %{username}", processor_chain([ - setc("eventcategory","1701070000"), - dup2, - dup3, - dup4, - setc("action","de-activated"), - setc("event_description","Policy is de-activated by last referring profile"), -])); - -var msg29 = msg("POLICY_DEACTIVATE_EVENT", part45); - -var part46 = match("MESSAGE#29:POLICY_LOOKUP_EVENT:01", "nwparser.payload", "policy=%{policyname->} rule=%{rulename->} action=%{action->} direction=%{direction->} src.net.ip-address=%{saddr->} src.net.port=%{sport->} dst.net.ip-address=%{daddr->} dst.net.port=%{dport->} net.protocol=%{protocol->} net.ethertype=%{fld2->} dst.zone.name=%{dst_zone->} src.zone.name=%{src_zone}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg30 = msg("POLICY_LOOKUP_EVENT:01", part46); - -var part47 = match("MESSAGE#30:POLICY_LOOKUP_EVENT", "nwparser.payload", "policy=%{policyname->} rule=%{rulename->} action=%{action->} direction=%{direction->} src.net.ip-address=%{saddr->} src.net.port=%{sport->} dst.net.ip-address=%{daddr->} dst.net.port=%{dport->} net.protocol=%{protocol->} net.ethertype=%{fld2}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg31 = msg("POLICY_LOOKUP_EVENT", part47); - -var part48 = match("MESSAGE#31:POLICY_LOOKUP_EVENT:02", "nwparser.payload", "policy=%{policyname->} rule=%{rulename->} action=%{action->} direction=%{direction->} net.ethertype=%{fld2}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg32 = msg("POLICY_LOOKUP_EVENT:02", part48); - -var select10 = linear_select([ - msg30, - msg31, - msg32, -]); - -var msg33 = msg("NEIGHBOR_UPDATE_AUTOCOPY", dup87); - -var msg34 = msg("MTSERROR", dup86); - -var part49 = match("MESSAGE#34:IF_DOWN_ERROR_DISABLED", "nwparser.payload", "Interface %{interface->} is down (Error disabled. Reason:%{result})", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg35 = msg("IF_DOWN_ERROR_DISABLED", part49); - -var msg36 = msg("IF_DOWN_ADMIN_DOWN", dup88); - -var msg37 = msg("IF_DOWN_ADMIN_DOWN:01", dup89); - -var select11 = linear_select([ - msg36, - msg37, -]); - -var msg38 = msg("IF_DOWN_CHANNEL_MEMBERSHIP_UPDATE_IN_PROGRESS", dup90); - -var msg39 = msg("IF_DOWN_INTERFACE_REMOVED", dup91); - -var part50 = match("MESSAGE#39:IF_DOWN_LINK_FAILURE", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup2, - dup3, - dup4, - dup25, -])); - -var msg40 = msg("IF_DOWN_LINK_FAILURE", part50); - -var msg41 = msg("IF_DOWN_LINK_FAILURE:01", dup89); - -var select12 = linear_select([ - msg40, - msg41, -]); - -var msg42 = msg("IF_DOWN_MODULE_REMOVED", dup91); - -var msg43 = msg("IF_DOWN_PORT_CHANNEL_MEMBERS_DOWN", dup88); - -var part51 = match("MESSAGE#43:IF_DUPLEX", "nwparser.payload", "Interface %{interface}, operational duplex mode changed to %{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Interface duplex mode changed"), -])); - -var msg44 = msg("IF_DUPLEX", part51); - -var part52 = match("MESSAGE#44:IF_RX_FLOW_CONTROL/0", "nwparser.payload", "Interface %{interface}, operational Receive Flow Cont%{p0}"); - -var all7 = all_match({ - processors: [ - part52, - dup92, - dup28, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Interface operational Receive Flow Control state changed"), - ]), -}); - -var msg45 = msg("IF_RX_FLOW_CONTROL", all7); - -var part53 = match_copy("MESSAGE#45:IF_SEQ_ERROR", "nwparser.payload", "result", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg46 = msg("IF_SEQ_ERROR", part53); - -var part54 = match("MESSAGE#46:IF_TX_FLOW_CONTROL/0", "nwparser.payload", "Interface %{interface}, operational Transmit Flow Cont%{p0}"); - -var all8 = all_match({ - processors: [ - part54, - dup92, - dup28, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Interface operational Transmit Flow Control state changed"), - ]), -}); - -var msg47 = msg("IF_TX_FLOW_CONTROL", all8); - -var part55 = match("MESSAGE#47:IF_UP", "nwparser.payload", "%{fld43->} Interface %{sinterface->} is up in mode %{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Interface is up in mode"), -])); - -var msg48 = msg("IF_UP", part55); - -var part56 = match("MESSAGE#48:IF_UP:01", "nwparser.payload", "Interface %{sinterface->} is up", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Interface is up"), -])); - -var msg49 = msg("IF_UP:01", part56); - -var select13 = linear_select([ - msg48, - msg49, -]); - -var part57 = match("MESSAGE#49:SPEED", "nwparser.payload", "Interface %{interface}, operational speed changed to %{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Interface operational speed changed"), -])); - -var msg50 = msg("SPEED", part57); - -var part58 = match("MESSAGE#50:CREATED", "nwparser.payload", "%{group_object->} created", processor_chain([ - dup29, - dup2, - dup3, - dup4, -])); - -var msg51 = msg("CREATED", part58); - -var part59 = match("MESSAGE#51:FOP_CHANGED", "nwparser.payload", "%{group_object}: first operational port changed from %{change_old->} to %{change_new}", processor_chain([ - dup30, - dup2, - dup3, - dup4, -])); - -var msg52 = msg("FOP_CHANGED", part59); - -var part60 = match("MESSAGE#52:PORT_DOWN", "nwparser.payload", "%{group_object}: %{interface->} is down", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg53 = msg("PORT_DOWN", part60); - -var part61 = match("MESSAGE#53:PORT_UP", "nwparser.payload", "%{group_object}: %{interface->} is up", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg54 = msg("PORT_UP", part61); - -var part62 = match("MESSAGE#54:SUBGROUP_ID_PORT_ADDED", "nwparser.payload", "Interface %{interface->} is added to %{group_object->} with subgroup id %{fld20}", processor_chain([ - dup29, - dup2, - dup3, - dup4, -])); - -var msg55 = msg("SUBGROUP_ID_PORT_ADDED", part62); - -var part63 = match("MESSAGE#55:SUBGROUP_ID_PORT_REMOVED", "nwparser.payload", "Interface %{interface->} is removed from %{group_object->} with subgroup id %{fld20}", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var msg56 = msg("SUBGROUP_ID_PORT_REMOVED", part63); - -var msg57 = msg("MTS_DROP", dup87); - -var msg58 = msg("SYSLOG_LOG_WARNING", dup87); - -var msg59 = msg("IM_SEQ_ERROR", dup93); - -var msg60 = msg("ADDON_IMG_DNLD_COMPLETE", dup87); - -var msg61 = msg("ADDON_IMG_DNLD_STARTED", dup87); - -var msg62 = msg("ADDON_IMG_DNLD_SUCCESSFUL", dup87); - -var msg63 = msg("IMG_DNLD_COMPLETE", dup87); - -var msg64 = msg("IMG_DNLD_STARTED", dup87); - -var part64 = match_copy("MESSAGE#64:PORT_SOFTWARE_FAILURE", "nwparser.payload", "result", processor_chain([ - dup31, - dup2, - dup3, - dup4, -])); - -var msg65 = msg("PORT_SOFTWARE_FAILURE", part64); - -var msg66 = msg("MSM_CRIT", dup93); - -var part65 = match("MESSAGE#66:LOG_CMP_AAA_FAILURE", "nwparser.payload", "Authentication failed for a login from %{shost->} (%{result})", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup7, -])); - -var msg67 = msg("LOG_CMP_AAA_FAILURE", part65); - -var msg68 = msg("LOG_LIC_N1K_EXPIRY_WARNING", dup87); - -var part66 = match("MESSAGE#68:MOD_FAIL", "nwparser.payload", "Initialization of module %{fld20->} (serial: %{serial_number}) failed", processor_chain([ - dup32, - dup2, - dup3, - dup4, -])); - -var msg69 = msg("MOD_FAIL", part66); - -var part67 = match("MESSAGE#69:MOD_MAJORSWFAIL", "nwparser.payload", "Module %{fld20->} (serial: %{serial_number}) reported a critical failure in service %{fld22}", processor_chain([ - dup33, - dup2, - dup3, - dup4, -])); - -var msg70 = msg("MOD_MAJORSWFAIL", part67); - -var part68 = match("MESSAGE#70:MOD_SRG_NOT_COMPATIBLE", "nwparser.payload", "Module %{fld20->} (serial: %{serial_number}) firmware is not compatible with supervisor, downloading new image", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg71 = msg("MOD_SRG_NOT_COMPATIBLE", part68); - -var part69 = match("MESSAGE#71:MOD_WARNING:01", "nwparser.payload", "Module %{fld20->} (serial: %{serial_number}) reported warnings on %{info->} due to %{result->} in device %{fld23->} (device error %{fld22})", processor_chain([ - dup32, - dup2, - dup3, - dup4, -])); - -var msg72 = msg("MOD_WARNING:01", part69); - -var part70 = match("MESSAGE#72:MOD_WARNING", "nwparser.payload", "Module %{fld20->} (serial: %{serial_number}) reported warning %{info->} due to %{result->} in device %{fld23->} (device error %{fld22})", processor_chain([ - dup32, - dup2, - dup3, - dup4, -])); - -var msg73 = msg("MOD_WARNING", part70); - -var select14 = linear_select([ - msg72, - msg73, -]); - -var part71 = match("MESSAGE#73:ACTIVE_SUP_OK", "nwparser.payload", "Supervisor %{fld20->} is active (serial: %{serial_number})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg74 = msg("ACTIVE_SUP_OK", part71); - -var part72 = match("MESSAGE#74:MOD_OK", "nwparser.payload", "Module %{fld20->} is online (serial: %{serial_number})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg75 = msg("MOD_OK", part72); - -var part73 = match("MESSAGE#75:MOD_RESTART", "nwparser.payload", "Module %{fld20->} is restarting after image download", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg76 = msg("MOD_RESTART", part73); - -var part74 = match("MESSAGE#76:DISPUTE_CLEARED", "nwparser.payload", "Dispute resolved for port %{portname->} on %{vlan}", processor_chain([ - dup8, - dup2, - dup3, - dup4, - setc("event_description","Dispute resolved for port on VLAN"), -])); - -var msg77 = msg("DISPUTE_CLEARED", part74); - -var part75 = match("MESSAGE#77:DISPUTE_DETECTED", "nwparser.payload", "Dispute detected on port %{portname->} on %{vlan}", processor_chain([ - dup8, - dup2, - dup3, - dup4, - setc("event_description","Dispute detected on port on VLAN"), -])); - -var msg78 = msg("DISPUTE_DETECTED", part75); - -var msg79 = msg("DOMAIN_CFG_SYNC_DONE", dup87); - -var msg80 = msg("CHASSIS_CLKMODOK", dup87); - -var msg81 = msg("CHASSIS_CLKSRC", dup87); - -var msg82 = msg("FAN_OK", dup87); - -var part76 = match("MESSAGE#82:MOD_DETECT", "nwparser.payload", "Module %{fld19->} detected (Serial number %{serial_number}) Module-Type %{fld20->} Model %{fld21}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg83 = msg("MOD_DETECT", part76); - -var part77 = match("MESSAGE#83:MOD_PWRDN", "nwparser.payload", "Module %{fld19->} powered down (Serial number %{serial_number})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg84 = msg("MOD_PWRDN", part77); - -var part78 = match("MESSAGE#84:MOD_PWRUP", "nwparser.payload", "Module %{fld19->} powered up (Serial number %{serial_number})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg85 = msg("MOD_PWRUP", part78); - -var part79 = match("MESSAGE#85:MOD_REMOVE", "nwparser.payload", "Module %{fld19->} removed (Serial number %{serial_number})", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var msg86 = msg("MOD_REMOVE", part79); - -var msg87 = msg("PFM_MODULE_POWER_ON", dup87); - -var msg88 = msg("PFM_SYSTEM_RESET", dup87); - -var msg89 = msg("PFM_VEM_REMOVE_NO_HB", dup94); - -var msg90 = msg("PFM_VEM_REMOVE_RESET", dup94); - -var msg91 = msg("PFM_VEM_REMOVE_STATE_CONFLICT", dup94); - -var msg92 = msg("PFM_VEM_REMOVE_TWO_ACT_VSM", dup94); - -var msg93 = msg("PFM_VEM_UNLICENSED", dup87); - -var msg94 = msg("PS_FANOK", dup87); - -var part80 = match("MESSAGE#94:PS_OK", "nwparser.payload", "Power supply %{fld19->} ok (Serial number %{serial_number})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg95 = msg("PS_OK", part80); - -var part81 = match_copy("MESSAGE#95:MOD_BRINGUP_MULTI_LIMIT", "nwparser.payload", "event_description", processor_chain([ - dup31, - dup2, - dup3, - dup4, -])); - -var msg96 = msg("MOD_BRINGUP_MULTI_LIMIT", part81); - -var part82 = match("MESSAGE#96:FAN_DETECT", "nwparser.payload", "Fan module %{fld19->} (Serial number %{serial_number}) %{fld20->} detected", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg97 = msg("FAN_DETECT", part82); - -var msg98 = msg("MOD_STATUS", dup87); - -var part83 = match("MESSAGE#98:PEER_VPC_CFGD_VLANS_CHANGED", "nwparser.payload", "Peer vPC %{obj_name->} configured vlans changed", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Peer vPC configured vlans changed"), -])); - -var msg99 = msg("PEER_VPC_CFGD_VLANS_CHANGED", part83); - -var part84 = match("MESSAGE#99:PEER_VPC_DELETED", "nwparser.payload", "Peer vPC %{obj_name->} deleted", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg100 = msg("PEER_VPC_DELETED", part84); - -var msg101 = msg("PFM_VEM_DETECTED", dup87); - -var part85 = match("MESSAGE#101:PS_FOUND", "nwparser.payload", "Power supply %{fld19->} found (Serial number %{serial_number})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg102 = msg("PS_FOUND", part85); - -var part86 = match("MESSAGE#102:PS_STATUS/0_0", "nwparser.payload", "PowerSupply %{fld1->} current-status is %{disposition}"); - -var select15 = linear_select([ - part86, - dup21, -]); - -var all9 = all_match({ - processors: [ - select15, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg103 = msg("PS_STATUS", all9); - -var part87 = match("MESSAGE#103:PS_CAPACITY_CHANGE:01", "nwparser.payload", "Power supply %{fld1->} changed its capacity. possibly due to On/Off or power cable removal/insertion (Serial number %{serial_number})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg104 = msg("PS_CAPACITY_CHANGE:01", part87); - -var msg105 = msg("PS_CAPACITY_CHANGE", dup87); - -var select16 = linear_select([ - msg104, - msg105, -]); - -var msg106 = msg("IF_DOWN_FCOT_NOT_PRESENT", dup88); - -var msg107 = msg("IF_DOWN_FCOT_NOT_PRESENT:01", dup89); - -var select17 = linear_select([ - msg106, - msg107, -]); - -var msg108 = msg("IF_DOWN_INITIALIZING", dup90); - -var msg109 = msg("IF_DOWN_INITIALIZING:01", dup95); - -var select18 = linear_select([ - msg108, - msg109, -]); - -var part88 = match("MESSAGE#109:IF_DOWN_NONE", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup34, - dup35, - dup14, - dup2, - dup3, - dup4, -])); - -var msg110 = msg("IF_DOWN_NONE", part88); - -var msg111 = msg("IF_DOWN_NONE:01", dup96); - -var select19 = linear_select([ - msg110, - msg111, -]); - -var msg112 = msg("IF_DOWN_NOS_RCVD", dup88); - -var msg113 = msg("IF_DOWN_NOS_RCVD:01", dup89); - -var select20 = linear_select([ - msg112, - msg113, -]); - -var msg114 = msg("IF_DOWN_OFFLINE", dup88); - -var msg115 = msg("IF_DOWN_OLS_RCVD", dup88); - -var part89 = match("MESSAGE#115:IF_DOWN_SOFTWARE_FAILURE", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup31, - dup2, - dup3, - dup4, -])); - -var msg116 = msg("IF_DOWN_SOFTWARE_FAILURE", part89); - -var msg117 = msg("IF_DOWN_SRC_PORT_NOT_BOUND", dup90); - -var part90 = match("MESSAGE#117:IF_TRUNK_DOWN", "nwparser.payload", "Interface %{interface}, vsan %{fld20->} is down (%{info})", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg118 = msg("IF_TRUNK_DOWN", part90); - -var part91 = match("MESSAGE#118:IF_TRUNK_DOWN:01", "nwparser.payload", "Interface %{interface}, vlan %{vlan->} down", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg119 = msg("IF_TRUNK_DOWN:01", part91); - -var part92 = match("MESSAGE#119:IF_TRUNK_DOWN:02", "nwparser.payload", "%{fld43->} Interface %{interface}, vsan %{vlan->} is down %{info}", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg120 = msg("IF_TRUNK_DOWN:02", part92); - -var select21 = linear_select([ - msg118, - msg119, - msg120, -]); - -var part93 = match("MESSAGE#120:IF_TRUNK_UP", "nwparser.payload", "Interface %{interface}, vsan %{fld20->} is up", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg121 = msg("IF_TRUNK_UP", part93); - -var part94 = match("MESSAGE#121:IF_TRUNK_UP:01", "nwparser.payload", "Interface %{interface}, vlan %{vlan->} up", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg122 = msg("IF_TRUNK_UP:01", part94); - -var part95 = match("MESSAGE#122:IF_TRUNK_UP:02", "nwparser.payload", "%{fld43->} Interface %{interface}, vsan %{vlan->} is up %{info}", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg123 = msg("IF_TRUNK_UP:02", part95); - -var select22 = linear_select([ - msg121, - msg122, - msg123, -]); - -var msg124 = msg("PORT_PROFILE_CHANGE_VERIFY_REQ_FAILURE", dup97); - -var part96 = match("MESSAGE#124:IF_PORTPROFILE_ATTACHED", "nwparser.payload", "Interface %{interface->} is inheriting port-profile %{fld20}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg125 = msg("IF_PORTPROFILE_ATTACHED", part96); - -var msg126 = msg("STANDBY_SUP_OK", dup87); - -var part97 = match("MESSAGE#126:STM_LOOP_DETECT", "nwparser.payload", "Loops detected in the network among ports %{portname->} and %{info->} vlan %{vlan->} - %{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Loops detected in the network among ports"), -])); - -var msg127 = msg("STM_LOOP_DETECT", part97); - -var part98 = match("MESSAGE#127:SYNC_COMPLETE", "nwparser.payload", "Sync completed.%{}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg128 = msg("SYNC_COMPLETE", part98); - -var msg129 = msg("PVLAN_PPM_PORT_CONFIG_FAILED", dup97); - -var msg130 = msg("MESG", dup87); - -var part99 = match("MESSAGE#130:ERR_MSG", "nwparser.payload", "ERROR:%{result}", processor_chain([ - dup33, - dup2, - dup3, - dup4, -])); - -var msg131 = msg("ERR_MSG", part99); - -var msg132 = msg("RM_VICPP_RECREATE_ERROR", dup97); - -var part100 = match("MESSAGE#132:CFGWRITE_ABORTED_LOCK", "nwparser.payload", "Unable to lock the configuration (error-id %{resultcode}). Aborting configuration copy.", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg133 = msg("CFGWRITE_ABORTED_LOCK", part100); - -var part101 = match("MESSAGE#133:CFGWRITE_FAILED", "nwparser.payload", "Configuration copy failed (error-id %{resultcode}).", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg134 = msg("CFGWRITE_FAILED", part101); - -var msg135 = msg("CFGWRITE_ABORTED", dup87); - -var msg136 = msg("CFGWRITE_DONE", dup87); - -var part102 = match("MESSAGE#136:CFGWRITE_STARTED/0_0", "nwparser.payload", "%{event_description->} (PID %{process_id})."); - -var select23 = linear_select([ - part102, - dup21, -]); - -var all10 = all_match({ - processors: [ - select23, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg137 = msg("CFGWRITE_STARTED", all10); - -var msg138 = msg("IF_ATTACHED", dup87); - -var msg139 = msg("IF_DELETE_AUTO", dup94); - -var part103 = match("MESSAGE#139:IF_DETACHED", "nwparser.payload", "Interface %{interface->} is detached", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var msg140 = msg("IF_DETACHED", part103); - -var msg141 = msg("IF_DETACHED_MODULE_REMOVED", dup94); - -var msg142 = msg("IF_DOWN_INACTIVE", dup88); - -var msg143 = msg("IF_DOWN_NON_PARTICIPATING", dup88); - -var part104 = match("MESSAGE#143:IF_DOWN_VEM_UNLICENSED", "nwparser.payload", "Interface %{interface->} is down", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg144 = msg("IF_DOWN_VEM_UNLICENSED", part104); - -var part105 = match("MESSAGE#144:CONN_CONNECT", "nwparser.payload", "Connection %{hostname->} connected to the vCenter Server.", processor_chain([ - dup36, - dup2, - dup3, - dup4, -])); - -var msg145 = msg("CONN_CONNECT", part105); - -var part106 = match("MESSAGE#145:CONN_DISCONNECT", "nwparser.payload", "Connection %{hostname->} disconnected from the vCenter Server.", processor_chain([ - setc("eventcategory","1801030000"), - dup2, - dup3, - dup4, -])); - -var msg146 = msg("CONN_DISCONNECT", part106); - -var part107 = match("MESSAGE#146:DVPG_CREATE", "nwparser.payload", "created port-group %{info->} on the vCenter Server.", processor_chain([ - dup29, - dup2, - dup3, - dup4, -])); - -var msg147 = msg("DVPG_CREATE", part107); - -var part108 = match("MESSAGE#147:DVPG_DELETE", "nwparser.payload", "deleted port-group %{info->} from the vCenter Server.", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var msg148 = msg("DVPG_DELETE", part108); - -var msg149 = msg("DVS_HOSTMEMBER_INFO", dup87); - -var part109 = match("MESSAGE#149:DVS_NAME_CHANGE", "nwparser.payload", "Changed dvswitch name to %{info->} on the vCenter Server.", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg150 = msg("DVS_NAME_CHANGE", part109); - -var msg151 = msg("VMS_PPM_SYNC_COMPLETE", dup87); - -var part110 = match("MESSAGE#151:VPC_DELETED", "nwparser.payload", "vPC %{obj_name->} is deleted", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg152 = msg("VPC_DELETED", part110); - -var part111 = match("MESSAGE#152:VPC_UP", "nwparser.payload", "vPC %{obj_name->} is up", processor_chain([ - dup8, - dup2, - dup3, - dup4, - setc("event_description","VPC is up"), -])); - -var msg153 = msg("VPC_UP", part111); - -var part112 = match("MESSAGE#153:VSHD_SYSLOG_CONFIG_I/0", "nwparser.payload", "Configured from vty by %{username->} on %{p0}"); - -var part113 = match("MESSAGE#153:VSHD_SYSLOG_CONFIG_I/1_0", "nwparser.p0", "%{saddr}@%{terminal}"); - -var part114 = match_copy("MESSAGE#153:VSHD_SYSLOG_CONFIG_I/1_1", "nwparser.p0", "saddr"); - -var select24 = linear_select([ - part113, - part114, -]); - -var all11 = all_match({ - processors: [ - part112, - select24, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg154 = msg("VSHD_SYSLOG_CONFIG_I", all11); - -var part115 = match("MESSAGE#154:VSHD_SYSLOG_CONFIG_I:01", "nwparser.payload", "Configuring console from %{fld43->} %{saddr}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg155 = msg("VSHD_SYSLOG_CONFIG_I:01", part115); - -var select25 = linear_select([ - msg154, - msg155, -]); - -var part116 = match("MESSAGE#155:AAA_ACCOUNTING_MESSAGE:18", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}:%{event_description}; feature %{protocol->} (%{result})", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg156 = msg("AAA_ACCOUNTING_MESSAGE:18", part116); - -var part117 = match("MESSAGE#156:AAA_ACCOUNTING_MESSAGE:17", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}:enabled telnet", processor_chain([ - dup22, - dup37, - dup38, - dup17, - dup2, - dup3, - dup4, - dup39, - dup40, -])); - -var msg157 = msg("AAA_ACCOUNTING_MESSAGE:17", part117); - -var part118 = match("MESSAGE#157:AAA_ACCOUNTING_MESSAGE", "nwparser.payload", "start:%{saddr}@%{application}:%{username}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","program start"), -])); - -var msg158 = msg("AAA_ACCOUNTING_MESSAGE", part118); - -var part119 = match("MESSAGE#158:AAA_ACCOUNTING_MESSAGE:08", "nwparser.payload", "start:snmp_%{fld43}_%{saddr}:%{username}:", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg159 = msg("AAA_ACCOUNTING_MESSAGE:08", part119); - -var part120 = match("MESSAGE#159:AAA_ACCOUNTING_MESSAGE:03", "nwparser.payload", "start:%{saddr}(%{terminal}):%{username}:", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg160 = msg("AAA_ACCOUNTING_MESSAGE:03", part120); - -var part121 = match("MESSAGE#160:AAA_ACCOUNTING_MESSAGE:19", "nwparser.payload", "start:%{fld40}:%{username}:", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg161 = msg("AAA_ACCOUNTING_MESSAGE:19", part121); - -var part122 = match("MESSAGE#161:AAA_ACCOUNTING_MESSAGE:22", "nwparser.payload", "update:::added user %{username}", processor_chain([ - dup19, - dup2, - dup3, - dup4, -])); - -var msg162 = msg("AAA_ACCOUNTING_MESSAGE:22", part122); - -var part123 = match("MESSAGE#162:AAA_ACCOUNTING_MESSAGE:23", "nwparser.payload", "update:::%{event_description}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg163 = msg("AAA_ACCOUNTING_MESSAGE:23", part123); - -var part124 = match("MESSAGE#163:AAA_ACCOUNTING_MESSAGE:11", "nwparser.payload", "update:snmp_%{fld43}_%{saddr}:%{username}:target (name:%{dhost->} address:%{daddr}:%{dport}) deleted", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg164 = msg("AAA_ACCOUNTING_MESSAGE:11", part124); - -var part125 = match("MESSAGE#164:AAA_ACCOUNTING_MESSAGE:12", "nwparser.payload", "update:snmp_%{fld43}_%{saddr}:%{username}:target (name:%{dhost->} address:%{daddr}:%{dport->} timeout:%{fld44->} retry:%{fld45->} tagList:trap params:%{fld46}) added", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg165 = msg("AAA_ACCOUNTING_MESSAGE:12", part125); - -var part126 = match("MESSAGE#165:AAA_ACCOUNTING_MESSAGE:13", "nwparser.payload", "update:snmp_%{fld43}_%{saddr}:%{username}:Interface %{interface->} state updated to up", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg166 = msg("AAA_ACCOUNTING_MESSAGE:13", part126); - -var part127 = match("MESSAGE#166:AAA_ACCOUNTING_MESSAGE:14", "nwparser.payload", "update:snmp_%{fld43}_%{saddr}:%{username}:Interface %{interface->} state updated to down", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg167 = msg("AAA_ACCOUNTING_MESSAGE:14", part127); - -var part128 = match("MESSAGE#167:AAA_ACCOUNTING_MESSAGE:15", "nwparser.payload", "update:snmp_%{fld43}_%{saddr}:%{username}:Performing configuration copy.", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg168 = msg("AAA_ACCOUNTING_MESSAGE:15", part128); - -var part129 = match("MESSAGE#168:AAA_ACCOUNTING_MESSAGE:16", "nwparser.payload", "update:%{saddr}@%{application}:%{username}:terminal length %{dclass_counter1->} (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, - dup41, -])); - -var msg169 = msg("AAA_ACCOUNTING_MESSAGE:16", part129); - -var part130 = match("MESSAGE#169:AAA_ACCOUNTING_MESSAGE:04", "nwparser.payload", "update:%{saddr}(%{fld3}):%{username}:terminal length %{fld5}:%{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg170 = msg("AAA_ACCOUNTING_MESSAGE:04", part130); - -var part131 = match("MESSAGE#170:AAA_ACCOUNTING_MESSAGE:01", "nwparser.payload", "update:%{saddr}@%{terminal}:%{application}:terminal width %{dclass_counter1->} (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, - dup41, -])); - -var msg171 = msg("AAA_ACCOUNTING_MESSAGE:01", part131); - -var part132 = match("MESSAGE#171:AAA_ACCOUNTING_MESSAGE:27/1_0", "nwparser.p0", "configure terminal ; ntp source-interface %{sinterface->} (%{p0}"); - -var part133 = match("MESSAGE#171:AAA_ACCOUNTING_MESSAGE:27/1_1", "nwparser.p0", "show ntp statistics peer ipaddr %{hostip->} (%{p0}"); - -var select26 = linear_select([ - part132, - part133, -]); - -var all12 = all_match({ - processors: [ - dup42, - select26, - dup43, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - dup44, - ]), -}); - -var msg172 = msg("AAA_ACCOUNTING_MESSAGE:27", all12); - -var part134 = match("MESSAGE#172:AAA_ACCOUNTING_MESSAGE:28/1_0", "nwparser.p0", "clock set %{event_time_string->} (%{p0}"); - -var part135 = match("MESSAGE#172:AAA_ACCOUNTING_MESSAGE:28/1_1", "nwparser.p0", "show logging last %{fld1->} (%{p0}"); - -var select27 = linear_select([ - part134, - part135, -]); - -var all13 = all_match({ - processors: [ - dup42, - select27, - dup43, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - dup44, - ]), -}); - -var msg173 = msg("AAA_ACCOUNTING_MESSAGE:28", all13); - -var part136 = match("MESSAGE#173:AAA_ACCOUNTING_MESSAGE:20", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}:%{info->} (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg174 = msg("AAA_ACCOUNTING_MESSAGE:20", part136); - -var part137 = match("MESSAGE#174:AAA_ACCOUNTING_MESSAGE:30", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}:added user %{c_username}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup11, - dup17, - setc("event_description","Added user"), - dup44, -])); - -var msg175 = msg("AAA_ACCOUNTING_MESSAGE:30", part137); - -var part138 = match("MESSAGE#175:AAA_ACCOUNTING_MESSAGE:29", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}:deleted user %{c_username}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup11, - dup17, - setc("event_description","Deleted user"), - dup44, -])); - -var msg176 = msg("AAA_ACCOUNTING_MESSAGE:29", part138); - -var part139 = match("MESSAGE#176:AAA_ACCOUNTING_MESSAGE:21", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}:%{info}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg177 = msg("AAA_ACCOUNTING_MESSAGE:21", part139); - -var part140 = match("MESSAGE#177:AAA_ACCOUNTING_MESSAGE:07", "nwparser.payload", "update:%{saddr}(%{fld3}):%{username}:terminal width %{dclass_counter1}:%{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg178 = msg("AAA_ACCOUNTING_MESSAGE:07", part140); - -var part141 = match("MESSAGE#178:AAA_ACCOUNTING_MESSAGE:05", "nwparser.payload", "update:%{saddr}(%{fld3}):%{username}:terminal session-timeout %{fld5}:%{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg179 = msg("AAA_ACCOUNTING_MESSAGE:05", part141); - -var part142 = match("MESSAGE#179:AAA_ACCOUNTING_MESSAGE:10", "nwparser.payload", "update:%{saddr}(%{fld3}):%{username}:copy %{event_description}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg180 = msg("AAA_ACCOUNTING_MESSAGE:10", part142); - -var part143 = match("MESSAGE#180:AAA_ACCOUNTING_MESSAGE:24", "nwparser.payload", "update:%{terminal}:%{username}: %{event_description}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg181 = msg("AAA_ACCOUNTING_MESSAGE:24", part143); - -var part144 = match("MESSAGE#181:AAA_ACCOUNTING_MESSAGE:06", "nwparser.payload", "stop:%{saddr}(%{fld3}):%{username}:shell terminated", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg182 = msg("AAA_ACCOUNTING_MESSAGE:06", part144); - -var part145 = match("MESSAGE#182:AAA_ACCOUNTING_MESSAGE:02", "nwparser.payload", "stop:%{saddr}@%{terminal}:%{username}:shell %{result}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","shell terminated"), -])); - -var msg183 = msg("AAA_ACCOUNTING_MESSAGE:02", part145); - -var part146 = match("MESSAGE#183:AAA_ACCOUNTING_MESSAGE:25", "nwparser.payload", "stop:%{saddr}@%{terminal}:%{username}:%{fld40}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg184 = msg("AAA_ACCOUNTING_MESSAGE:25", part146); - -var part147 = match("MESSAGE#184:AAA_ACCOUNTING_MESSAGE:09", "nwparser.payload", "stop:snmp_%{fld43}_%{saddr}:%{username}:", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg185 = msg("AAA_ACCOUNTING_MESSAGE:09", part147); - -var part148 = match("MESSAGE#185:AAA_ACCOUNTING_MESSAGE:26", "nwparser.payload", "stop:%{terminal}:%{username}:", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg186 = msg("AAA_ACCOUNTING_MESSAGE:26", part148); - -var select28 = linear_select([ - msg156, - msg157, - msg158, - msg159, - msg160, - msg161, - msg162, - msg163, - msg164, - msg165, - msg166, - msg167, - msg168, - msg169, - msg170, - msg171, - msg172, - msg173, - msg174, - msg175, - msg176, - msg177, - msg178, - msg179, - msg180, - msg181, - msg182, - msg183, - msg184, - msg185, - msg186, -]); - -var all14 = all_match({ - processors: [ - dup45, - dup98, - dup48, - dup99, - dup51, - dup98, - dup52, - dup99, - dup53, - dup100, - dup56, - dup101, - dup59, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","ACL Log Flow Interval"), - dup60, - ]), -}); - -var msg187 = msg("ACLLOG_FLOW_INTERVAL", all14); - -var part149 = match("MESSAGE#187:ACLLOG_MAXFLOW_REACHED", "nwparser.payload", "Maximum limit %{fld3->} reached for number of flows", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg188 = msg("ACLLOG_MAXFLOW_REACHED", part149); - -var all15 = all_match({ - processors: [ - dup45, - dup98, - dup48, - dup99, - dup51, - dup98, - dup52, - dup99, - dup53, - dup100, - dup56, - dup101, - dup59, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","ACL Lof New Flow"), - dup60, - ]), -}); - -var msg189 = msg("ACLLOG_NEW_FLOW", all15); - -var part150 = match("MESSAGE#189:DUP_VADDR_SRC_IP", "nwparser.payload", "%{process->} [%{process_id}] Source address of packet received from %{smacaddr->} on %{vlan}(%{interface}) is duplicate of local virtual ip, %{saddr}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - setc("event_description","Source address of packet received on vlan is duplicate of local virtual ip"), -])); - -var msg190 = msg("DUP_VADDR_SRC_IP", part150); - -var part151 = match("MESSAGE#190:IF_ERROR_VLANS_REMOVED", "nwparser.payload", "VLANs %{vlan->} on Interface %{sinterface->} are removed from suspended state.", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg191 = msg("IF_ERROR_VLANS_REMOVED", part151); - -var part152 = match("MESSAGE#191:IF_ERROR_VLANS_SUSPENDED", "nwparser.payload", "VLANs %{vlan->} on Interface %{sinterface->} are being suspended. (Reason: %{info})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg192 = msg("IF_ERROR_VLANS_SUSPENDED", part152); - -var part153 = match("MESSAGE#192:IF_DOWN_CFG_CHANGE", "nwparser.payload", "Interface %{sinterface->} is down(%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg193 = msg("IF_DOWN_CFG_CHANGE", part153); - -var part154 = match("MESSAGE#193:PFM_CLOCK_CHANGE", "nwparser.payload", "Clock setting has been changed on the system. Please be aware that clock changes will force a recheckout of all existing VEM licenses. During this recheckout procedure, licensed VEMs which are offline will lose their licenses.%{}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg194 = msg("PFM_CLOCK_CHANGE", part154); - -var part155 = match("MESSAGE#194:SYNC_FAILURE_STANDBY_RESET", "nwparser.payload", "Failure in syncing messages to standby for vdc %{fld3->} causing standby to reset.", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg195 = msg("SYNC_FAILURE_STANDBY_RESET", part155); - -var part156 = match("MESSAGE#195:snmpd", "nwparser.payload", "snmp_pss_snapshot : Copying local engine DB PSS file to url%{}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg196 = msg("snmpd", part156); - -var part157 = match("MESSAGE#196:snmpd:01", "nwparser.payload", "SNMPD_SYSLOG_CONFIG_I: Configuration update from %{fld43}_%{saddr->} %{info}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg197 = msg("snmpd:01", part157); - -var select29 = linear_select([ - msg196, - msg197, -]); - -var part158 = match("MESSAGE#197:CFGWRITE_USER_ABORT", "nwparser.payload", "Configuration copy aborted by the user.%{}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg198 = msg("CFGWRITE_USER_ABORT", part158); - -var msg199 = msg("IF_DOWN_BIT_ERR_RT_THRES_EXCEEDED", dup95); - -var part159 = match("MESSAGE#199:last", "nwparser.payload", "message repeated %{dclass_counter1->} time", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","last message repeated number of times."), - setc("dclass_counter1_string","Number of times repeated"), -])); - -var msg200 = msg("last", part159); - -var part160 = match("MESSAGE#200:SERVICE_CRASHED", "nwparser.payload", "Service %{service->} (PID %{parent_pid}) hasn't caught signal %{fld43->} (%{result}).", processor_chain([ - dup32, - dup2, - dup3, - dup4, -])); - -var msg201 = msg("SERVICE_CRASHED", part160); - -var part161 = match("MESSAGE#201:SERVICELOST", "nwparser.payload", "Service %{service->} lost on WCCP Client %{saddr}", processor_chain([ - dup61, - dup2, - dup3, - dup4, - setc("event_description","Service lost on WCCP Client"), -])); - -var msg202 = msg("SERVICELOST", part161); - -var part162 = match("MESSAGE#202:IF_BRINGUP_ALLOWED_FCOT_CHECKSUM_ERR", "nwparser.payload", "Interface %{interface->} is allowed to come up even with SFP checksum error", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg203 = msg("IF_BRINGUP_ALLOWED_FCOT_CHECKSUM_ERR", part162); - -var part163 = match("MESSAGE#203:PS_FAIL/0", "nwparser.payload", "Power supply %{fld43->} failed or shut%{p0}"); - -var part164 = match("MESSAGE#203:PS_FAIL/1_0", "nwparser.p0", " down %{p0}"); - -var part165 = match("MESSAGE#203:PS_FAIL/1_1", "nwparser.p0", "down %{p0}"); - -var select30 = linear_select([ - part164, - part165, -]); - -var part166 = match("MESSAGE#203:PS_FAIL/2", "nwparser.p0", "(Serial number %{serial_number})"); - -var all16 = all_match({ - processors: [ - part163, - select30, - part166, - ], - on_success: processor_chain([ - dup23, - dup2, - dup3, - dup4, - ]), -}); - -var msg204 = msg("PS_FAIL", all16); - -var msg205 = msg("INFORMATION", dup87); - -var msg206 = msg("EVENT", dup87); - -var part167 = match("MESSAGE#206:NATIVE_VLAN_MISMATCH", "nwparser.payload", "Native VLAN mismatch discovered on %{interface}, with %{fld23}", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg207 = msg("NATIVE_VLAN_MISMATCH", part167); - -var part168 = match("MESSAGE#207:NEIGHBOR_ADDED", "nwparser.payload", "Device %{fld22->} discovered of type %{fld23->} with port %{fld24->} on incoming port %{interface->} with ip addr %{fld25->} and mgmt ip %{hostip}", processor_chain([ - dup29, - dup2, - dup3, - dup4, -])); - -var msg208 = msg("NEIGHBOR_ADDED", part168); - -var part169 = match("MESSAGE#208:NEIGHBOR_REMOVED", "nwparser.payload", "CDP Neighbor %{fld22->} on port %{interface->} has been removed", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var msg209 = msg("NEIGHBOR_REMOVED", part169); - -var part170 = match("MESSAGE#209:IF_BANDWIDTH_CHANGE", "nwparser.payload", "Interface %{interface},%{event_description}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var msg210 = msg("IF_BANDWIDTH_CHANGE", part170); - -var part171 = match("MESSAGE#210:IF_DOWN_PARENT_ADMIN_DOWN", "nwparser.payload", "Interface %{interface->} is down (Parent interface down)", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg211 = msg("IF_DOWN_PARENT_ADMIN_DOWN", part171); - -var part172 = match("MESSAGE#211:PORT_INDIVIDUAL_DOWN", "nwparser.payload", "individual port %{interface->} is down", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg212 = msg("PORT_INDIVIDUAL_DOWN", part172); - -var part173 = match("MESSAGE#212:PORT_SUSPENDED", "nwparser.payload", "%{fld22}: %{interface->} is suspended", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg213 = msg("PORT_SUSPENDED", part173); - -var part174 = match("MESSAGE#213:FEX_PORT_STATUS_NOTI", "nwparser.payload", "Uplink-ID %{fld22->} of Fex %{fld23->} that is connected with %{interface->} changed its status from %{change_old->} to %{change_new}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("change_attribute","status"), -])); - -var msg214 = msg("FEX_PORT_STATUS_NOTI", part174); - -var msg215 = msg("NOHMS_DIAG_ERR_PS_FAIL", dup102); - -var msg216 = msg("NOHMS_DIAG_ERR_PS_RECOVERED", dup87); - -var msg217 = msg("ADJCHANGE", dup87); - -var part175 = match("MESSAGE#217:PORT_ADDED", "nwparser.payload", "Interface %{interface}, added to VLAN%{vlan->} with role %{fld22}, state %{disposition}, %{info}", processor_chain([ - dup29, - dup2, - dup3, - dup4, -])); - -var msg218 = msg("PORT_ADDED", part175); - -var part176 = match("MESSAGE#218:PORT_DELETED", "nwparser.payload", "Interface %{interface}, removed from VLAN%{vlan}", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var msg219 = msg("PORT_DELETED", part176); - -var part177 = match("MESSAGE#219:PORT_ROLE", "nwparser.payload", "Port %{interface->} instance VLAN%{vlan->} role changed to %{fld22}", processor_chain([ - dup62, - dup2, - dup3, - dup4, -])); - -var msg220 = msg("PORT_ROLE", part177); - -var part178 = match("MESSAGE#220:PORT_STATE", "nwparser.payload", "Port %{interface->} instance VLAN%{vlan->} moving from %{change_old->} to %{change_new}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("change_attribute","Port state"), -])); - -var msg221 = msg("PORT_STATE", part178); - -var part179 = match("MESSAGE#221:TACACS_ACCOUNTING_MESSAGE", "nwparser.payload", "update: %{saddr}@%{terminal}: %{username}: %{event_description}; feature %{protocol->} (%{result}) %{info}", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var msg222 = msg("TACACS_ACCOUNTING_MESSAGE", part179); - -var part180 = match("MESSAGE#222:TACACS_ACCOUNTING_MESSAGE:01", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}: enabled telnet", processor_chain([ - dup22, - dup37, - dup38, - dup17, - dup2, - dup3, - dup4, - dup39, - dup40, -])); - -var msg223 = msg("TACACS_ACCOUNTING_MESSAGE:01", part180); - -var part181 = match("MESSAGE#368:TACACS_ACCOUNTING_MESSAGE:04", "nwparser.payload", "%{action}: %{saddr}@%{terminal}: %{username}: configure terminal ; ntp source-interface %{sinterface->} (%{result})%{info}", processor_chain([ - dup63, - dup2, - dup4, -])); - -var msg224 = msg("TACACS_ACCOUNTING_MESSAGE:04", part181); - -var part182 = match("MESSAGE#369:TACACS_ACCOUNTING_MESSAGE:05/0", "nwparser.payload", "%{action}: %{saddr}@%{terminal}: %{username}: show %{p0}"); - -var part183 = match("MESSAGE#369:TACACS_ACCOUNTING_MESSAGE:05/1_0", "nwparser.p0", "ntp statistics peer ipaddr %{hostip->} (%{p0}"); - -var part184 = match("MESSAGE#369:TACACS_ACCOUNTING_MESSAGE:05/1_1", "nwparser.p0", "logging last %{fld3->} (%{p0}"); - -var select31 = linear_select([ - part183, - part184, -]); - -var part185 = match("MESSAGE#369:TACACS_ACCOUNTING_MESSAGE:05/2", "nwparser.p0", "%{result})%{info}"); - -var all17 = all_match({ - processors: [ - part182, - select31, - part185, - ], - on_success: processor_chain([ - dup63, - dup2, - dup4, - ]), -}); - -var msg225 = msg("TACACS_ACCOUNTING_MESSAGE:05", all17); - -var part186 = match("MESSAGE#370:TACACS_ACCOUNTING_MESSAGE:06", "nwparser.payload", "%{action}: %{saddr}@%{terminal}: %{username}: clock set %{event_time_string->} (%{result})%{info}", processor_chain([ - dup63, - dup2, - dup4, -])); - -var msg226 = msg("TACACS_ACCOUNTING_MESSAGE:06", part186); - -var part187 = match("MESSAGE#371:TACACS_ACCOUNTING_MESSAGE:08", "nwparser.payload", "%{action}: %{saddr}@%{terminal}: %{username}: Performing configuration copy. %{info}", processor_chain([ - dup63, - dup2, - dup4, - setc("event_description","Performing configuration copy"), -])); - -var msg227 = msg("TACACS_ACCOUNTING_MESSAGE:08", part187); - -var part188 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/2", "nwparser.p0", "%{username}: shell terminated because of session timeout %{p0}"); - -var all18 = all_match({ - processors: [ - dup64, - dup103, - part188, - dup104, - ], - on_success: processor_chain([ - dup63, - dup2, - dup4, - setc("event_description","shell terminated because of session timeout"), - ]), -}); - -var msg228 = msg("TACACS_ACCOUNTING_MESSAGE:09", all18); - -var part189 = match("MESSAGE#373:TACACS_ACCOUNTING_MESSAGE:07/2", "nwparser.p0", "%{username}: %{event_description->} %{p0}"); - -var all19 = all_match({ - processors: [ - dup64, - dup103, - part189, - dup104, - ], - on_success: processor_chain([ - dup63, - dup2, - dup4, - ]), -}); - -var msg229 = msg("TACACS_ACCOUNTING_MESSAGE:07", all19); - -var select32 = linear_select([ - msg222, - msg223, - msg224, - msg225, - msg226, - msg227, - msg228, - msg229, -]); - -var msg230 = msg("TACACS_ERROR_MESSAGE", dup102); - -var msg231 = msg("IF_SFP_WARNING", dup105); - -var msg232 = msg("IF_DOWN_TCP_MAX_RETRANSMIT", dup106); - -var msg233 = msg("FCIP_PEER_CAVIUM", dup87); - -var msg234 = msg("IF_DOWN_PEER_CLOSE", dup106); - -var msg235 = msg("IF_DOWN_PEER_RESET", dup106); - -var part190 = match("MESSAGE#229:INTF_CONSISTENCY_FAILED", "nwparser.payload", "In domain %{domain}, VPC %{obj_name->} configuration is not consistent (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","configuration is not consistent in domain"), -])); - -var msg236 = msg("INTF_CONSISTENCY_FAILED", part190); - -var part191 = match("MESSAGE#230:INTF_CONSISTENCY_SUCCESS", "nwparser.payload", "In domain %{domain}, vPC %{obj_name->} configuration is consistent", processor_chain([ - dup8, - dup2, - dup3, - dup4, - setc("event_description","configuration is consistent in domain"), -])); - -var msg237 = msg("INTF_CONSISTENCY_SUCCESS", part191); - -var msg238 = msg("INTF_COUNTERS_CLEARED", dup105); - -var msg239 = msg("IF_HARDWARE", dup105); - -var part192 = match_copy("MESSAGE#233:HEARTBEAT_FAILURE", "nwparser.payload", "event_description", processor_chain([ - setc("eventcategory","1604010000"), - dup2, - dup3, - dup4, -])); - -var msg240 = msg("HEARTBEAT_FAILURE", part192); - -var msg241 = msg("SYSMGR_AUTOCOLLECT_TECH_SUPPORT_LOG", dup87); - -var msg242 = msg("PFM_FAN_FLTR_STATUS", dup87); - -var msg243 = msg("MOUNT", dup87); - -var msg244 = msg("LOG_CMP_UP", dup87); - -var part193 = match("MESSAGE#238:IF_XCVR_WARNING/2", "nwparser.p0", "Temperature Warning cleared%{}"); - -var all20 = all_match({ - processors: [ - dup69, - dup107, - part193, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg245 = msg("IF_XCVR_WARNING", all20); - -var msg246 = msg("IF_XCVR_WARNING:01", dup108); - -var select33 = linear_select([ - msg245, - msg246, -]); - -var part194 = match("MESSAGE#240:IF_XCVR_ALARM/2", "nwparser.p0", "Temperature Alarm cleared%{}"); - -var all21 = all_match({ - processors: [ - dup69, - dup107, - part194, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg247 = msg("IF_XCVR_ALARM", all21); - -var msg248 = msg("IF_XCVR_ALARM:01", dup108); - -var select34 = linear_select([ - msg247, - msg248, -]); - -var msg249 = msg("MEMORY_ALERT", dup87); - -var msg250 = msg("MEMORY_ALERT_RECOVERED", dup87); - -var part195 = match("MESSAGE#244:IF_SFP_ALARM/2", "nwparser.p0", "Rx Power Alarm cleared%{}"); - -var all22 = all_match({ - processors: [ - dup69, - dup107, - part195, - ], - on_success: processor_chain([ - dup15, - dup2, - dup3, - dup4, - ]), -}); - -var msg251 = msg("IF_SFP_ALARM", all22); - -var msg252 = msg("IF_SFP_ALARM:01", dup108); - -var select35 = linear_select([ - msg251, - msg252, -]); - -var part196 = match_copy("MESSAGE#246:NBRCHANGE_DUAL", "nwparser.payload", "event_description", processor_chain([ - dup61, - dup2, - dup3, - dup4, -])); - -var msg253 = msg("NBRCHANGE_DUAL", part196); - -var part197 = match("MESSAGE#247:SOHMS_DIAG_ERROR/0", "nwparser.payload", "%{} %{device->} %{p0}"); - -var part198 = match("MESSAGE#247:SOHMS_DIAG_ERROR/1_0", "nwparser.p0", "%{action}: System %{p0}"); - -var part199 = match("MESSAGE#247:SOHMS_DIAG_ERROR/1_1", "nwparser.p0", "System %{p0}"); - -var select36 = linear_select([ - part198, - part199, -]); - -var part200 = match("MESSAGE#247:SOHMS_DIAG_ERROR/2", "nwparser.p0", "minor alarm on fans in fan tray %{dclass_counter1}"); - -var all23 = all_match({ - processors: [ - part197, - select36, - part200, - ], - on_success: processor_chain([ - dup61, - dup38, - dup72, - dup2, - dup3, - dup4, - setc("event_description","System minor alarm on fans in fan tray"), - ]), -}); - -var msg254 = msg("SOHMS_DIAG_ERROR", all23); - -var part201 = match("MESSAGE#248:SOHMS_DIAG_ERROR:01", "nwparser.payload", "%{device->} System minor alarm on power supply %{fld42}: %{result}", processor_chain([ - dup61, - dup38, - dup72, - dup2, - dup3, - dup4, - setc("event_description","FEX-System minor alarm on power supply."), -])); - -var msg255 = msg("SOHMS_DIAG_ERROR:01", part201); - -var part202 = match("MESSAGE#249:SOHMS_DIAG_ERROR:02", "nwparser.payload", "%{device}: %{event_description}", processor_chain([ - dup61, - dup38, - dup72, - dup2, - dup3, - dup4, -])); - -var msg256 = msg("SOHMS_DIAG_ERROR:02", part202); - -var select37 = linear_select([ - msg254, - msg255, - msg256, -]); - -var part203 = match("MESSAGE#250:M2FIB_MAC_TBL_PRGMING", "nwparser.payload", "Failed to program the mac table on %{device->} for group: %{fld1}, (%{fld2->} (%{fld3}), %{fld4}, %{hostip}). Error: %{result}. %{info}", processor_chain([ - dup73, - dup34, - dup38, - dup72, - dup2, - dup3, - dup4, - setc("event_description","Failed to program the mac table"), -])); - -var msg257 = msg("M2FIB_MAC_TBL_PRGMING", part203); - -var part204 = match("MESSAGE#251:DELETE_STALE_USER_ACCOUNT", "nwparser.payload", "deleting expired user account:%{username}", processor_chain([ - dup19, - dup11, - dup20, - setc("ec_theme","UserGroup"), - dup2, - dup3, - dup4, - setc("event_description","deleting expired user account"), -])); - -var msg258 = msg("DELETE_STALE_USER_ACCOUNT", part204); - -var part205 = match("MESSAGE#252:IF_ADMIN_UP", "nwparser.payload", "Interface %{interface->} is admin up", processor_chain([ - dup30, - dup34, - dup38, - dup17, - dup2, - dup3, - dup4, - setc("event_description","Interface is admin up."), -])); - -var msg259 = msg("IF_ADMIN_UP", part205); - -var part206 = match("MESSAGE#253:VPC_CFGD", "nwparser.payload", "vPC %{obj_name->} is configured", processor_chain([ - dup30, - dup34, - dup38, - dup17, - dup2, - dup3, - dup4, - setc("event_description","vPC is configured"), - dup74, -])); - -var msg260 = msg("VPC_CFGD", part206); - -var part207 = match("MESSAGE#254:MODULE_ONLINE", "nwparser.payload", "System Manager has received notification of %{info}", processor_chain([ - dup30, - dup38, - dup17, - dup2, - dup3, - dup4, - setc("event_description","System Manager has received notification of local module becoming online."), -])); - -var msg261 = msg("MODULE_ONLINE", part207); - -var part208 = match("MESSAGE#255:BIOS_DAEMON_LC_PRI_BOOT", "nwparser.payload", "System booted from Primary BIOS Flash%{}", processor_chain([ - dup30, - dup75, - dup76, - dup2, - dup3, - dup4, - setc("event_description","System booted from Primary BIOS Flash"), -])); - -var msg262 = msg("BIOS_DAEMON_LC_PRI_BOOT", part208); - -var part209 = match("MESSAGE#256:PEER_VPC_DOWN", "nwparser.payload", "Peer %{obj_name->} is down ()", processor_chain([ - dup77, - dup34, - dup38, - dup72, - dup2, - dup3, - dup4, - setc("event_description","Peer vPC is down"), - dup74, -])); - -var msg263 = msg("PEER_VPC_DOWN", part209); - -var part210 = match("MESSAGE#257:PEER_KEEP_ALIVE_RECV_INT_LATEST/0", "nwparser.payload", "In domain %{domain}, %{p0}"); - -var part211 = match("MESSAGE#257:PEER_KEEP_ALIVE_RECV_INT_LATEST/1_0", "nwparser.p0", "VPC%{p0}"); - -var part212 = match("MESSAGE#257:PEER_KEEP_ALIVE_RECV_INT_LATEST/1_1", "nwparser.p0", "vPC%{p0}"); - -var select38 = linear_select([ - part211, - part212, -]); - -var part213 = match("MESSAGE#257:PEER_KEEP_ALIVE_RECV_INT_LATEST/2", "nwparser.p0", "%{}peer%{p0}"); - -var part214 = match("MESSAGE#257:PEER_KEEP_ALIVE_RECV_INT_LATEST/3_0", "nwparser.p0", "-keepalive%{p0}"); - -var part215 = match("MESSAGE#257:PEER_KEEP_ALIVE_RECV_INT_LATEST/3_1", "nwparser.p0", " keep-alive%{p0}"); - -var select39 = linear_select([ - part214, - part215, -]); - -var part216 = match("MESSAGE#257:PEER_KEEP_ALIVE_RECV_INT_LATEST/4", "nwparser.p0", "%{}received on interface %{interface}"); - -var all24 = all_match({ - processors: [ - part210, - select38, - part213, - select39, - part216, - ], - on_success: processor_chain([ - dup36, - dup2, - dup3, - dup4, - setc("event_description","In domain, VPC peer-keepalive received on interface"), - ]), -}); - -var msg264 = msg("PEER_KEEP_ALIVE_RECV_INT_LATEST", all24); - -var part217 = match("MESSAGE#258:PEER_KEEP_ALIVE_RECV_SUCCESS", "nwparser.payload", "In domain %{domain}, vPC peer keep-alive receive is successful", processor_chain([ - dup36, - dup34, - dup78, - dup35, - dup17, - dup2, - dup3, - dup4, - setc("event_description","In domain, vPC peer keep-alive receive is successful"), -])); - -var msg265 = msg("PEER_KEEP_ALIVE_RECV_SUCCESS", part217); - -var part218 = match("MESSAGE#259:PEER_KEEP_ALIVE_RECV_FAIL", "nwparser.payload", "In domain %{domain}, VPC peer keep-alive receive has failed", processor_chain([ - dup77, - dup34, - dup78, - dup35, - dup14, - dup2, - dup3, - dup4, - setc("event_description","In domain, VPC peer keep-alive receive has failed"), -])); - -var msg266 = msg("PEER_KEEP_ALIVE_RECV_FAIL", part218); - -var part219 = match("MESSAGE#260:PEER_KEEP_ALIVE_SEND_INT_LATEST", "nwparser.payload", "In domain %{domain}, VPC peer-keepalive sent on interface %{interface}", processor_chain([ - dup36, - dup34, - dup79, - dup35, - dup2, - dup3, - dup4, - setc("event_description","In domain, VPC peer-keepalive sent on interface"), -])); - -var msg267 = msg("PEER_KEEP_ALIVE_SEND_INT_LATEST", part219); - -var part220 = match("MESSAGE#261:PEER_KEEP_ALIVE_SEND_SUCCESS", "nwparser.payload", "In domain %{domain}, vPC peer keep-alive send is successful", processor_chain([ - dup36, - dup34, - dup79, - dup35, - dup17, - dup2, - dup3, - dup4, - setc("event_description","In domain, vPC peer keep-alive send is successful"), -])); - -var msg268 = msg("PEER_KEEP_ALIVE_SEND_SUCCESS", part220); - -var part221 = match("MESSAGE#262:PEER_KEEP_ALIVE_STATUS", "nwparser.payload", "In domain %{domain}, peer keep-alive status changed to %{change_new}", processor_chain([ - dup30, - dup34, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Peer keep-alive status changed."), - setc("change_attribute","peer keep-alive status"), -])); - -var msg269 = msg("PEER_KEEP_ALIVE_STATUS", part221); - -var part222 = match("MESSAGE#263:EJECTOR_STAT_CHANGED", "nwparser.payload", "Ejectors' status in slot %{fld47->} has changed, %{info}", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Ejectors' status in slot has changed."), -])); - -var msg270 = msg("EJECTOR_STAT_CHANGED", part222); - -var part223 = match("MESSAGE#264:XBAR_DETECT", "nwparser.payload", "Xbar %{fld41->} detected (Serial number %{fld42})", processor_chain([ - dup29, - setc("ec_activity","Detect"), - dup38, - dup2, - dup3, - dup4, - setc("event_description","Xbar detected"), -])); - -var msg271 = msg("XBAR_DETECT", part223); - -var part224 = match("MESSAGE#265:XBAR_PWRUP", "nwparser.payload", "Xbar %{fld41->} powered up (Serial number %{fld42})", processor_chain([ - dup15, - dup75, - dup76, - dup2, - dup3, - dup4, - setc("event_description","Xbar powered up"), -])); - -var msg272 = msg("XBAR_PWRUP", part224); - -var part225 = match("MESSAGE#266:XBAR_PWRDN", "nwparser.payload", "Xbar %{fld41->} powered down (Serial number %{fld42})", processor_chain([ - dup15, - dup75, - setc("ec_activity","Stop"), - dup2, - dup3, - dup4, - setc("event_description","Xbar powered down"), -])); - -var msg273 = msg("XBAR_PWRDN", part225); - -var part226 = match("MESSAGE#267:XBAR_OK", "nwparser.payload", "Xbar %{fld41->} is online (serial: %{fld42})", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Xbar is online"), -])); - -var msg274 = msg("XBAR_OK", part226); - -var part227 = match("MESSAGE#268:VPC_ISSU_START", "nwparser.payload", "Peer vPC switch ISSU start, locking configuration%{}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Peer vPC switch ISSU start, locking configuration"), -])); - -var msg275 = msg("VPC_ISSU_START", part227); - -var part228 = match("MESSAGE#269:VPC_ISSU_END", "nwparser.payload", "Peer vPC switch ISSU end, unlocking configuration%{}", processor_chain([ - dup15, - dup2, - dup3, - dup4, - setc("event_description","Peer vPC switch ISSU end, unlocking configuration"), -])); - -var msg276 = msg("VPC_ISSU_END", part228); - -var part229 = match("MESSAGE#270:PORT_RANGE_ROLE", "nwparser.payload", "new_role=%{obj_name->} interface=%{interface->} mst=%{fld42}", processor_chain([ - dup62, - dup2, - dup3, - dup4, - setc("obj_type","new_role"), -])); - -var msg277 = msg("PORT_RANGE_ROLE", part229); - -var part230 = match("MESSAGE#271:PORT_RANGE_STATE", "nwparser.payload", "new_state=%{obj_name->} interface=%{interface->} mst=%{fld42}", processor_chain([ - dup62, - dup2, - dup3, - dup4, - setc("obj_type","new_state"), -])); - -var msg278 = msg("PORT_RANGE_STATE", part230); - -var part231 = match("MESSAGE#272:PORT_RANGE_DELETED", "nwparser.payload", "Interface %{interface->} removed from mst=%{fld42}", processor_chain([ - dup24, - dup34, - dup20, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Interface removed from MST."), -])); - -var msg279 = msg("PORT_RANGE_DELETED", part231); - -var part232 = match("MESSAGE#273:PORT_RANGE_ADDED", "nwparser.payload", "Interface %{interface->} added to mst=%{fld42->} with %{info}", processor_chain([ - dup29, - dup34, - dup80, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Interface added to MST."), -])); - -var msg280 = msg("PORT_RANGE_ADDED", part232); - -var part233 = match("MESSAGE#274:MST_PORT_BOUNDARY", "nwparser.payload", "Port %{portname->} removed as MST Boundary port", processor_chain([ - dup24, - dup34, - dup20, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Port removed as MST Boundary port"), -])); - -var msg281 = msg("MST_PORT_BOUNDARY", part233); - -var part234 = match("MESSAGE#275:PIXM_SYSLOG_MESSAGE_TYPE_CRIT", "nwparser.payload", "Non-transactional PIXM Error. Error Type: %{result}.%{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - setc("event_description","Non-transactional PIXM Error"), -])); - -var msg282 = msg("PIXM_SYSLOG_MESSAGE_TYPE_CRIT", part234); - -var part235 = match("MESSAGE#276:IM_INTF_STATE", "nwparser.payload", "%{interface->} is %{obj_name->} in vdc %{fld43}", processor_chain([ - dup8, - dup2, - dup3, - dup4, - setc("obj_type"," Interface state"), -])); - -var msg283 = msg("IM_INTF_STATE", part235); - -var part236 = match("MESSAGE#277:VDC_STATE_CHANGE", "nwparser.payload", "vdc %{fld43->} state changed to %{obj_name}", processor_chain([ - dup62, - dup34, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","VDC state changed."), - setc("obj_type"," VDC state"), -])); - -var msg284 = msg("VDC_STATE_CHANGE", part236); - -var part237 = match("MESSAGE#278:SWITCHOVER_OVER", "nwparser.payload", "Switchover completed.%{}", processor_chain([ - dup8, - dup2, - dup3, - dup4, - dup81, -])); - -var msg285 = msg("SWITCHOVER_OVER", part237); - -var part238 = match("MESSAGE#279:VDC_MODULETYPE", "nwparser.payload", "%{process}: Module type changed to %{obj_name}", processor_chain([ - dup62, - dup16, - dup38, - dup2, - dup3, - dup4, - dup81, - setc("obj_type"," New Module type"), -])); - -var msg286 = msg("VDC_MODULETYPE", part238); - -var part239 = match("MESSAGE#280:HASEQNO_SYNC_FAILED", "nwparser.payload", "Unable to sync HA sequence number %{fld44->} for service \"%{service}\" (PID %{process_id}): %{result}.", processor_chain([ - dup77, - dup34, - dup35, - dup14, - dup2, - dup3, - dup4, - setc("event_description","Unable to sync HA sequence number for service"), -])); - -var msg287 = msg("HASEQNO_SYNC_FAILED", part239); - -var part240 = match("MESSAGE#281:MSG_SEND_FAILURE_STANDBY_RESET", "nwparser.payload", "Failure in sending message to standby causing standby to reset.%{}", processor_chain([ - dup1, - dup34, - dup79, - dup35, - dup14, - dup2, - dup3, - dup4, - setc("event_description","Failure in sending message to standby causing standby to reset."), -])); - -var msg288 = msg("MSG_SEND_FAILURE_STANDBY_RESET", part240); - -var part241 = match("MESSAGE#282:MODULE_LOCK_FAILED", "nwparser.payload", "Failed to lock the local module to avoid reset (error-id %{resultcode}).", processor_chain([ - dup1, - dup2, - dup3, - dup4, - setc("event_description","Failed to lock the local module to avoid reset"), -])); - -var msg289 = msg("MODULE_LOCK_FAILED", part241); - -var part242 = match("MESSAGE#283:L2FMC_NL_MTS_SEND_FAILURE", "nwparser.payload", "Failed to send Mac New Learns/Mac moves due to mts send failure errno %{resultcode}", processor_chain([ - dup1, - dup34, - dup79, - dup35, - dup14, - dup2, - dup3, - dup4, - setc("event_description","Failed to send Mac New Learns/Mac moves due to mts send failure."), -])); - -var msg290 = msg("L2FMC_NL_MTS_SEND_FAILURE", part242); - -var part243 = match("MESSAGE#284:SERVER_ADDED", "nwparser.payload", "Server with Chassis ID %{id->} Port ID %{fld45->} management address %{fld46->} discovered on local port %{portname->} in vlan %{vlan->} %{info}", processor_chain([ - dup29, - dup80, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Server discovered on local in vlan 0 with enabled capability Station"), -])); - -var msg291 = msg("SERVER_ADDED", part243); - -var part244 = match("MESSAGE#285:SERVER_REMOVED", "nwparser.payload", "Server with Chassis ID %{id->} Port ID %{fld45->} on local port %{portname->} has been removed", processor_chain([ - dup24, - dup20, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Server on local port has been removed"), -])); - -var msg292 = msg("SERVER_REMOVED", part244); - -var part245 = match("MESSAGE#286:IF_DOWN_SUSPENDED_BY_SPEED", "nwparser.payload", "Interface %{interface->} is down %{info}", processor_chain([ - dup23, - dup34, - dup72, - dup2, - dup3, - dup4, - dup25, -])); - -var msg293 = msg("IF_DOWN_SUSPENDED_BY_SPEED", part245); - -var part246 = match("MESSAGE#287:PORT_INDIVIDUAL", "nwparser.payload", "port %{portname->} is operationally individual", processor_chain([ - dup8, - dup2, - dup3, - dup4, - setc("event_description","port is operationally individual"), -])); - -var msg294 = msg("PORT_INDIVIDUAL", part246); - -var part247 = match("MESSAGE#288:IF_DOWN_CHANNEL_ADMIN_DOWN", "nwparser.payload", "Interface %{interface->} is down %{info}", processor_chain([ - dup23, - dup34, - dup38, - dup72, - dup2, - dup3, - dup4, - dup25, -])); - -var msg295 = msg("IF_DOWN_CHANNEL_ADMIN_DOWN", part247); - -var part248 = match("MESSAGE#289:IF_ERRDIS_RECOVERY", "nwparser.payload", "Interface %{interface->} is being recovered from error disabled state %{info}", processor_chain([ - dup22, - dup2, - dup3, - dup4, - setc("event_description","Interface is being recovered from error disabled state"), -])); - -var msg296 = msg("IF_ERRDIS_RECOVERY", part248); - -var part249 = match("MESSAGE#290:IF_NON_CISCO_TRANSCEIVER", "nwparser.payload", "Non-Cisco transceiver on interface %{interface->} is detected", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Non-Cisco transceiver on interface is detected"), -])); - -var msg297 = msg("IF_NON_CISCO_TRANSCEIVER", part249); - -var part250 = match("MESSAGE#291:ACTIVE_LOWER_MEM_THAN_STANDBY", "nwparser.payload", "Active supervisor in slot %{fld47->} is running with less memory than standby supervisor in slot %{fld48}.", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Active supervisor is running with less memory than standby supervisor."), -])); - -var msg298 = msg("ACTIVE_LOWER_MEM_THAN_STANDBY", part250); - -var part251 = match("MESSAGE#292:READCONF_STARTED", "nwparser.payload", "Configuration update started (PID %{process_id}).", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Configuration update started."), -])); - -var msg299 = msg("READCONF_STARTED", part251); - -var part252 = match("MESSAGE#293:SUP_POWERDOWN", "nwparser.payload", "Supervisor in slot %{fld47->} is running with less memory than active supervisor in slot %{fld48}", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Supervisor is running with less memory than active supervisor."), -])); - -var msg300 = msg("SUP_POWERDOWN", part252); - -var part253 = match("MESSAGE#294:LC_UPGRADE_START", "nwparser.payload", "Starting linecard upgrade%{}", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Starting linecard upgrade"), -])); - -var msg301 = msg("LC_UPGRADE_START", part253); - -var part254 = match("MESSAGE#295:LC_UPGRADE_REBOOT", "nwparser.payload", "Rebooting linecard as a part of upgrade%{}", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Rebooting linecard as a part of upgrade"), -])); - -var msg302 = msg("LC_UPGRADE_REBOOT", part254); - -var part255 = match("MESSAGE#296:RUNTIME_DB_RESTORE_STARTED", "nwparser.payload", "Runtime database controller started (PID %{process_id}).", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Runtime database controller started."), -])); - -var msg303 = msg("RUNTIME_DB_RESTORE_STARTED", part255); - -var part256 = match("MESSAGE#297:RUNTIME_DB_RESTORE_SUCCESS", "nwparser.payload", "Runtime database successfully restored.%{}", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Runtime database successfully restored."), -])); - -var msg304 = msg("RUNTIME_DB_RESTORE_SUCCESS", part256); - -var part257 = match("MESSAGE#298:LCM_MODULE_UPGRADE_START", "nwparser.payload", "Upgrade of module %{fld49->} started", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Upgrade of module started"), -])); - -var msg305 = msg("LCM_MODULE_UPGRADE_START", part257); - -var part258 = match("MESSAGE#299:LCM_MODULE_UPGRADE_END", "nwparser.payload", "Upgrade of module %{fld49->} ended", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Upgrade of module ended"), -])); - -var msg306 = msg("LCM_MODULE_UPGRADE_END", part258); - -var part259 = match("MESSAGE#300:FIPS_POST_INFO_MSG", "nwparser.payload", "Recieved insert for %{fld50}", processor_chain([ - dup63, - dup34, - dup78, - dup35, - dup2, - dup3, - dup4, - setc("event_description","Recieved insert for lc mod"), -])); - -var msg307 = msg("FIPS_POST_INFO_MSG", part259); - -var part260 = match("MESSAGE#301:PEER_VPC_CFGD", "nwparser.payload", "peer vPC %{obj_name->} is configured", processor_chain([ - dup30, - dup34, - dup38, - dup17, - dup2, - dup3, - dup4, - setc("event_description","peer vPC is configured"), - dup74, -])); - -var msg308 = msg("PEER_VPC_CFGD", part260); - -var part261 = match("MESSAGE#302:SYN_COLL_DIS_EN", "nwparser.payload", "%{info}: Potential Interop issue on [%{interface}]: %{result}", processor_chain([ - dup73, - dup34, - dup38, - dup72, - dup2, - dup3, - dup4, - setc("event_description","Potential Interop issue on interface."), -])); - -var msg309 = msg("SYN_COLL_DIS_EN", part261); - -var part262 = match("MESSAGE#303:NOHMS_ENV_FEX_OFFLINE", "nwparser.payload", "%{device->} Off-line (Serial Number %{fld42})", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","FEX OFFLINE"), -])); - -var msg310 = msg("NOHMS_ENV_FEX_OFFLINE", part262); - -var part263 = match("MESSAGE#304:NOHMS_ENV_FEX_ONLINE", "nwparser.payload", "%{device->} On-line", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","FEX ONLINE"), -])); - -var msg311 = msg("NOHMS_ENV_FEX_ONLINE", part263); - -var part264 = match("MESSAGE#305:FEX_STATUS_online", "nwparser.payload", "%{device->} is online", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Fex is online"), -])); - -var msg312 = msg("FEX_STATUS_online", part264); - -var part265 = match("MESSAGE#306:FEX_STATUS_offline", "nwparser.payload", "%{device->} is offline", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","Fex is offline"), -])); - -var msg313 = msg("FEX_STATUS_offline", part265); - -var select40 = linear_select([ - msg312, - msg313, -]); - -var part266 = match("MESSAGE#307:PS_PWR_INPUT_MISSING", "nwparser.payload", "Power supply %{fld41->} present but all AC/DC inputs are not connected, power redundancy might be affected", processor_chain([ - dup73, - dup38, - dup72, - dup2, - dup3, - dup4, - setc("event_description","Power supply present but all AC/DC inputs are not connected, power redundancy might be affected"), -])); - -var msg314 = msg("PS_PWR_INPUT_MISSING", part266); - -var part267 = match("MESSAGE#308:PS_RED_MODE_RESTORED", "nwparser.payload", "Power redundancy operational mode changed to %{change_new}", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Power redundancy operational mode changed."), - setc("change_attribute","operational mode"), -])); - -var msg315 = msg("PS_RED_MODE_RESTORED", part267); - -var part268 = match("MESSAGE#309:MOD_PWRFAIL_EJECTORS_OPEN", "nwparser.payload", "All ejectors open, Module %{fld41->} will not be powered up (Serial number %{fld42})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - setc("event_description","All ejectors open, Module will not be powered up."), -])); - -var msg316 = msg("MOD_PWRFAIL_EJECTORS_OPEN", part268); - -var part269 = match("MESSAGE#310:PINNING_CHANGED", "nwparser.payload", "%{device->} pinning information is changed", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, - setc("event_description","Fex pinning information is changed"), -])); - -var msg317 = msg("PINNING_CHANGED", part269); - -var part270 = match("MESSAGE#311:SATCTRL", "nwparser.payload", "%{device->} Module %{fld41}: Cold boot", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","FEX-100 Module -Cold boot"), -])); - -var msg318 = msg("SATCTRL", part270); - -var part271 = match("MESSAGE#312:DUP_REGISTER", "nwparser.payload", "%{fld51->} [%{fld52}] Client %{fld43->} register more than once with same pid%{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - setc("event_description","Client register more than once with same pid"), -])); - -var msg319 = msg("DUP_REGISTER", part271); - -var part272 = match("MESSAGE#313:UNKNOWN_MTYPE", "nwparser.payload", "%{fld51->} [%{fld52}] Unknown mtype: %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - setc("event_description","Unknown mtype"), -])); - -var msg320 = msg("UNKNOWN_MTYPE", part272); - -var part273 = match("MESSAGE#314:SATCTRL_IMAGE", "nwparser.payload", "%{fld51->} %{event_description}", processor_chain([ - dup30, - dup16, - dup38, - dup2, - dup3, - dup4, -])); - -var msg321 = msg("SATCTRL_IMAGE", part273); - -var part274 = match("MESSAGE#315:API_FAILED", "nwparser.payload", "%{fld51->} [%{fld52}] %{event_description}", processor_chain([ - dup1, - setc("ec_subject","Process"), - dup14, - dup2, - dup3, - dup4, -])); - -var msg322 = msg("API_FAILED", part274); - -var part275 = match_copy("MESSAGE#316:SENSOR_MSG1", "nwparser.payload", "event_description", processor_chain([ - dup8, - dup2, - dup3, - dup4, -])); - -var msg323 = msg("SENSOR_MSG1", part275); - -var part276 = match("MESSAGE#317:API_INIT_SEM_CLEAR", "nwparser.payload", "%{fld51->} [%{fld52}] %{event_description}", processor_chain([ - dup30, - dup2, - dup3, - dup4, -])); - -var msg324 = msg("API_INIT_SEM_CLEAR", part276); - -var part277 = match("MESSAGE#318:VDC_ONLINE", "nwparser.payload", "vdc %{fld51->} has come online", processor_chain([ - dup30, - dup2, - dup3, - dup4, - setc("event_description","vdc has come online"), -])); - -var msg325 = msg("VDC_ONLINE", part277); - -var part278 = match("MESSAGE#319:LACP_SUSPEND_INDIVIDUAL", "nwparser.payload", "LACP port %{portname->} of port-channel %{interface->} not receiving any LACP BPDUs %{result}", processor_chain([ - dup77, - dup34, - dup78, - dup35, - dup72, - dup2, - dup3, - dup4, - setc("event_description","LACP port of port-channel not receiving any LACP BPDUs."), -])); - -var msg326 = msg("LACP_SUSPEND_INDIVIDUAL", part278); - -var part279 = match("MESSAGE#320:dstats", "nwparser.payload", "%{process}: %{info}", processor_chain([ - dup8, - dup2, - dup3, - dup4, -])); - -var msg327 = msg("dstats", part279); - -var part280 = match("MESSAGE#321:MSG_PORT_LOGGED_OUT", "nwparser.payload", "%{fld52->} [VSAN %{fld51}, Interface %{interface}: %{fld53->} Nx Port %{portname->} logged OUT.", processor_chain([ - dup77, - dup34, - setc("ec_activity","Logoff"), - dup35, - dup2, - dup3, - dup4, -])); - -var msg328 = msg("MSG_PORT_LOGGED_OUT", part280); - -var part281 = match("MESSAGE#322:MSG_PORT_LOGGED_IN", "nwparser.payload", "%{fld52->} [VSAN %{fld51}, Interface %{interface}: %{fld53->} Nx Port %{portname->} with FCID %{fld54->} logged IN.", processor_chain([ - dup77, - dup34, - dup13, - dup35, - dup2, - dup3, - dup4, -])); - -var msg329 = msg("MSG_PORT_LOGGED_IN", part281); - -var msg330 = msg("IF_DOWN_ELP_FAILURE_ISOLATION", dup96); - -var part282 = match("MESSAGE#324:ZS_MERGE_FAILED", "nwparser.payload", "%{fld52->} Zone merge failure, isolating interface %{interface->} reason: %{result}:[%{resultcode}]", processor_chain([ - dup23, - dup34, - dup35, - dup14, - dup2, - dup3, - dup4, -])); - -var msg331 = msg("ZS_MERGE_FAILED", part282); - -var msg332 = msg("IF_DOWN_ZONE_MERGE_FAILURE_ISOLATION", dup96); - -var part283 = match("MESSAGE#326:MAC_MOVE_NOTIFICATION", "nwparser.payload", "Host %{hostname->} in vlan %{vlan->} is flapping between port %{change_old->} and port %{change_new}", processor_chain([ - dup23, - dup34, - dup35, - dup2, - dup3, - dup4, - setc("change_attribute","Port"), -])); - -var msg333 = msg("MAC_MOVE_NOTIFICATION", part283); - -var part284 = match("MESSAGE#327:zone", "nwparser.payload", "num_tlv greater than 1, %{result}", processor_chain([ - dup8, - dup2, - dup3, - dup4, -])); - -var msg334 = msg("zone", part284); - -var part285 = match("MESSAGE#328:ERROR", "nwparser.payload", "%{event_description}: %{info}", processor_chain([ - dup1, - dup34, - dup35, - dup72, - dup2, - dup3, - dup4, -])); - -var msg335 = msg("ERROR", part285); - -var part286 = match("MESSAGE#329:INVAL_IP", "nwparser.payload", "%{agent->} [%{process_id}] Received packet with invalid destination IP address (%{daddr}) from %{smacaddr->} on %{interface}", processor_chain([ - dup77, - dup34, - dup78, - dup35, - dup72, - dup2, - dup3, - dup4, -])); - -var msg336 = msg("INVAL_IP", part286); - -var part287 = match("MESSAGE#330:SYSLOG_SL_MSG_WARNING", "nwparser.payload", "%{process}: message repeated %{dclass_counter1->} times in last %{duration}", processor_chain([ - dup1, - dup2, - dup3, - dup4, -])); - -var msg337 = msg("SYSLOG_SL_MSG_WARNING", part287); - -var part288 = match("MESSAGE#331:DUPLEX_MISMATCH", "nwparser.payload", "Duplex mismatch discovered on %{interface}, with %{fld55}", processor_chain([ - dup77, - dup34, - dup35, - dup72, - dup2, - dup3, - dup4, -])); - -var msg338 = msg("DUPLEX_MISMATCH", part288); - -var part289 = match("MESSAGE#332:NOHMS_DIAG_ERROR", "nwparser.payload", "Module %{fld20}: Runtime diag detected major event: Fabric port failure %{interface}", processor_chain([ - dup77, - dup34, - dup35, - dup72, - dup2, - dup3, - dup4, -])); - -var msg339 = msg("NOHMS_DIAG_ERROR", part289); - -var part290 = match("MESSAGE#333:STM_LEARNING_RE_ENABLE", "nwparser.payload", "Re enabling dynamic learning on all interfaces%{}", processor_chain([ - dup15, - dup34, - dup35, - dup2, - dup3, - dup4, -])); - -var msg340 = msg("STM_LEARNING_RE_ENABLE", part290); - -var part291 = match("MESSAGE#334:UDLD_PORT_DISABLED", "nwparser.payload", "UDLD disabled interface %{interface}, %{result}", processor_chain([ - dup77, - dup34, - dup35, - dup72, - dup2, - dup3, - dup4, -])); - -var msg341 = msg("UDLD_PORT_DISABLED", part291); - -var part292 = match("MESSAGE#335:ntpd", "nwparser.payload", "ntp:no servers reachable%{}", processor_chain([ - dup15, - dup2, - dup4, -])); - -var msg342 = msg("ntpd", part292); - -var part293 = match("MESSAGE#336:ntpd:01", "nwparser.payload", "ntp:event EVNT_UNREACH %{saddr}", processor_chain([ - dup15, - dup2, - dup4, -])); - -var msg343 = msg("ntpd:01", part293); - -var part294 = match("MESSAGE#337:ntpd:02", "nwparser.payload", "ntp:event EVNT_REACH %{saddr}", processor_chain([ - dup15, - dup2, - dup4, -])); - -var msg344 = msg("ntpd:02", part294); - -var part295 = match("MESSAGE#338:ntpd:03", "nwparser.payload", "ntp:synchronized to %{saddr}, stratum %{fld9}", processor_chain([ - dup15, - dup2, - dup4, -])); - -var msg345 = msg("ntpd:03", part295); - -var part296 = match("MESSAGE#339:ntpd:04", "nwparser.payload", "ntp:%{event_description}", processor_chain([ - dup15, - dup2, - dup4, -])); - -var msg346 = msg("ntpd:04", part296); - -var select41 = linear_select([ - msg342, - msg343, - msg344, - msg345, - msg346, -]); - -var part297 = match_copy("MESSAGE#340:PFM_ALERT", "nwparser.payload", "event_description", processor_chain([ - dup9, - dup2, - dup3, - dup4, -])); - -var msg347 = msg("PFM_ALERT", part297); - -var part298 = match("MESSAGE#341:SERVICEFOUND", "nwparser.payload", "Service %{service->} acquired on WCCP Client %{saddr}", processor_chain([ - dup61, - dup2, - dup3, - dup4, - setc("event_description","Service acquired on WCCP Client"), -])); - -var msg348 = msg("SERVICEFOUND", part298); - -var part299 = match("MESSAGE#342:ROUTERFOUND", "nwparser.payload", "Service %{service->} acquired on WCCP Router %{saddr}", processor_chain([ - dup61, - dup2, - dup3, - dup4, - setc("event_description","Service acquired on WCCP Router"), -])); - -var msg349 = msg("ROUTERFOUND", part299); - -var part300 = match("MESSAGE#343:%AUTHPRIV-3-SYSTEM_MSG", "nwparser.payload", "pam_aaa:Authentication failed from %{shost->} - %{agent}", processor_chain([ - dup5, - dup2, - dup3, - dup4, - setc("event_description","Authentication failed"), -])); - -var msg350 = msg("%AUTHPRIV-3-SYSTEM_MSG", part300); - -var part301 = match("MESSAGE#344:%AUTHPRIV-5-SYSTEM_MSG", "nwparser.payload", "New user added with username %{username->} - %{agent}", processor_chain([ - dup18, - dup2, - dup12, - dup3, - dup4, - setc("event_description","New user added"), -])); - -var msg351 = msg("%AUTHPRIV-5-SYSTEM_MSG", part301); - -var part302 = match("MESSAGE#345:%AUTHPRIV-6-SYSTEM_MSG:01", "nwparser.payload", "%{action}: %{service->} pid=%{process_id->} from=::ffff:%{saddr->} - %{agent}", processor_chain([ - dup10, - dup2, - dup12, - dup3, - dup4, -])); - -var msg352 = msg("%AUTHPRIV-6-SYSTEM_MSG:01", part302); - -var part303 = match("MESSAGE#346:%AUTHPRIV-6-SYSTEM_MSG", "nwparser.payload", "pam_unix(%{fld1}:session): session opened for user %{username->} by (uid=%{uid}) - %{agent}", processor_chain([ - dup10, - dup2, - dup12, - dup3, - dup4, - setc("event_description","session opened for user"), -])); - -var msg353 = msg("%AUTHPRIV-6-SYSTEM_MSG", part303); - -var select42 = linear_select([ - msg352, - msg353, -]); - -var part304 = match("MESSAGE#347:%USER-3-SYSTEM_MSG", "nwparser.payload", "error: %{result}", processor_chain([ - dup5, - dup2, - dup3, - dup4, -])); - -var msg354 = msg("%USER-3-SYSTEM_MSG", part304); - -var part305 = match("MESSAGE#348:%USER-6-SYSTEM_MSG", "nwparser.payload", "Invalid user %{username->} from %{saddr->} - %{agent}", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup82, -])); - -var msg355 = msg("%USER-6-SYSTEM_MSG", part305); - -var part306 = match("MESSAGE#349:%USER-6-SYSTEM_MSG:01", "nwparser.payload", "input_userauth_request: invalid user %{username->} - %{agent}", processor_chain([ - dup5, - dup2, - dup3, - dup4, - dup82, -])); - -var msg356 = msg("%USER-6-SYSTEM_MSG:01", part306); - -var part307 = match("MESSAGE#350:%USER-6-SYSTEM_MSG:02", "nwparser.payload", "Failed none for invalid user %{username->} from %{saddr->} port %{sport->} %{protocol->} - %{agent}", processor_chain([ - dup5, - dup2, - dup3, - dup4, - setc("event_description","Failed none for invalid user"), -])); - -var msg357 = msg("%USER-6-SYSTEM_MSG:02", part307); - -var part308 = match("MESSAGE#351:%USER-6-SYSTEM_MSG:03", "nwparser.payload", "Accepted password for %{username->} from %{saddr->} port %{sport->} %{protocol->} - %{agent}", processor_chain([ - dup83, - dup2, - dup3, - dup4, - setc("event_description","Accepted password for user"), -])); - -var msg358 = msg("%USER-6-SYSTEM_MSG:03", part308); - -var part309 = match("MESSAGE#352:%USER-6-SYSTEM_MSG:04", "nwparser.payload", "lastlog_openseek: Couldn't stat %{directory}: No such file or directory - %{agent}", processor_chain([ - dup83, - dup2, - dup3, - dup4, - setc("event_description","No such file or directory"), -])); - -var msg359 = msg("%USER-6-SYSTEM_MSG:04", part309); - -var part310 = match("MESSAGE#353:%USER-6-SYSTEM_MSG:05", "nwparser.payload", "Could not load host key: %{encryption_type->} - %{agent}", processor_chain([ - dup83, - dup2, - dup3, - dup4, - setc("event_description","Could not load host key"), -])); - -var msg360 = msg("%USER-6-SYSTEM_MSG:05", part310); - -var part311 = match("MESSAGE#354:%USER-6-SYSTEM_MSG:06", "nwparser.payload", "%{event_description->} - %{agent}", processor_chain([ - dup83, - dup2, - dup3, - dup4, -])); - -var msg361 = msg("%USER-6-SYSTEM_MSG:06", part311); - -var select43 = linear_select([ - msg355, - msg356, - msg357, - msg358, - msg359, - msg360, - msg361, -]); - -var part312 = match("MESSAGE#355:L2FM_MAC_FLAP_DISABLE_LEARN", "nwparser.payload", "Disabling learning in vlan %{vlan->} for %{duration}s due to too many mac moves", processor_chain([ - dup30, - dup2, - dup4, - setc("ec_activity","Disable"), -])); - -var msg362 = msg("L2FM_MAC_FLAP_DISABLE_LEARN", part312); - -var part313 = match("MESSAGE#356:L2FM_MAC_FLAP_RE_ENABLE_LEARN", "nwparser.payload", "Re-enabling learning in vlan %{vlan}", processor_chain([ - dup30, - dup2, - dup4, - dup37, -])); - -var msg363 = msg("L2FM_MAC_FLAP_RE_ENABLE_LEARN", part313); - -var part314 = match("MESSAGE#357:PS_ABSENT", "nwparser.payload", "Power supply %{fld1->} is %{disposition}, ps-redundancy might be affected", processor_chain([ - dup1, - dup2, - dup4, -])); - -var msg364 = msg("PS_ABSENT", part314); - -var part315 = match("MESSAGE#358:PS_DETECT", "nwparser.payload", "Power supply %{fld1->} detected but %{disposition->} (Serial number %{serial_number})", processor_chain([ - dup1, - dup2, - dup4, -])); - -var msg365 = msg("PS_DETECT", part315); - -var part316 = match("MESSAGE#359:SUBPROC_TERMINATED", "nwparser.payload", "\"System Manager (configuration controller)\" (PID %{process_id}) has finished with error code %{result->} (%{resultcode}).", processor_chain([ - dup1, - dup2, - dup4, -])); - -var msg366 = msg("SUBPROC_TERMINATED", part316); - -var part317 = match("MESSAGE#360:SUBPROC_SUCCESS_EXIT", "nwparser.payload", "\"%{service}\" (PID %{process_id}) has successfully exited with exit code %{result->} (%{resultcode}).", processor_chain([ - dup15, - dup2, - dup4, - dup84, - dup17, -])); - -var msg367 = msg("SUBPROC_SUCCESS_EXIT", part317); - -var part318 = match("MESSAGE#361:UPDOWN", "nwparser.payload", "Line Protocol on Interface vlan %{vlan}, changed state to %{disposition}", processor_chain([ - dup30, - dup2, - dup4, -])); - -var msg368 = msg("UPDOWN", part318); - -var part319 = match("MESSAGE#362:L2FM_MAC_MOVE2", "nwparser.payload", "Mac %{smacaddr->} in vlan %{vlan->} has moved between %{change_old->} to %{change_new}", processor_chain([ - dup30, - dup2, - dup4, - setc("change_attribute","Interface"), -])); - -var msg369 = msg("L2FM_MAC_MOVE2", part319); - -var part320 = match("MESSAGE#363:PFM_PS_RED_MODE_CHG", "nwparser.payload", "Power redundancy configured mode changed to %{event_state}", processor_chain([ - dup30, - dup2, - dup4, - dup38, -])); - -var msg370 = msg("PFM_PS_RED_MODE_CHG", part320); - -var part321 = match("MESSAGE#364:PS_RED_MODE_CHG", "nwparser.payload", "Power supply operational redundancy mode changed to %{event_state}", processor_chain([ - dup30, - dup2, - dup4, - dup38, -])); - -var msg371 = msg("PS_RED_MODE_CHG", part321); - -var part322 = match("MESSAGE#365:INVAL_MAC", "nwparser.payload", "%{agent->} [%{process_id}] Received packet with invalid source MAC address (%{smacaddr}) from %{saddr->} on %{vlan}", processor_chain([ - dup63, - dup2, - dup4, -])); - -var msg372 = msg("INVAL_MAC", part322); - -var part323 = match("MESSAGE#366:SRVSTATE_CHANGED", "nwparser.payload", "State for service \"%{service}\" changed from %{change_old->} to %{change_new->} in vdc %{fld1}.", processor_chain([ - dup15, - dup2, - dup4, - setc("change_attribute","Service status"), -])); - -var msg373 = msg("SRVSTATE_CHANGED", part323); - -var part324 = match_copy("MESSAGE#367:INFO", "nwparser.payload", "event_description", processor_chain([ - dup63, - dup2, - dup4, -])); - -var msg374 = msg("INFO", part324); - -var part325 = match("MESSAGE#374:SERVICE_STARTED", "nwparser.payload", "Service \"%{service}\" in vdc %{fld1->} started with PID(%{process_id}).", processor_chain([ - dup15, - dup2, - dup4, - dup84, - dup76, - dup17, -])); - -var msg375 = msg("SERVICE_STARTED", part325); - -var part326 = match("MESSAGE#375:DUP_VADDR_SRCIP_PROBE", "nwparser.payload", "%{process->} [%{process_id}] Duplicate address Detected. Probe packet received from %{smacaddr->} on %{vlan->} with destination set to our local Virtual ip, %{saddr}", processor_chain([ - dup8, - dup2, - dup3, - dup4, - dup85, -])); - -var msg376 = msg("DUP_VADDR_SRCIP_PROBE", part326); - -var part327 = match("MESSAGE#376:DUP_SRCIP_PROBE", "nwparser.payload", "%{process->} [%{process_id}] Duplicate address Detected. Probe packet received from %{smacaddr->} on %{vlan->} with destination set to our local ip, %{saddr}", processor_chain([ - dup8, - dup2, - dup3, - dup4, - dup85, -])); - -var msg377 = msg("DUP_SRCIP_PROBE", part327); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "%AUTHPRIV-3-SYSTEM_MSG": msg350, - "%AUTHPRIV-5-SYSTEM_MSG": msg351, - "%AUTHPRIV-6-SYSTEM_MSG": select42, - "%USER-3-SYSTEM_MSG": msg354, - "%USER-6-SYSTEM_MSG": select43, - "AAA_ACCOUNTING_MESSAGE": select28, - "ACLLOG_FLOW_INTERVAL": msg187, - "ACLLOG_MAXFLOW_REACHED": msg188, - "ACLLOG_NEW_FLOW": msg189, - "ACTIVE_LOWER_MEM_THAN_STANDBY": msg298, - "ACTIVE_SUP_OK": msg74, - "ADDON_IMG_DNLD_COMPLETE": msg60, - "ADDON_IMG_DNLD_STARTED": msg61, - "ADDON_IMG_DNLD_SUCCESSFUL": msg62, - "ADJCHANGE": msg217, - "API_FAILED": msg322, - "API_INIT_SEM_CLEAR": msg324, - "BIOS_DAEMON_LC_PRI_BOOT": msg262, - "CFGWRITE_ABORTED": msg135, - "CFGWRITE_ABORTED_LOCK": msg133, - "CFGWRITE_DONE": msg136, - "CFGWRITE_FAILED": msg134, - "CFGWRITE_STARTED": msg137, - "CFGWRITE_USER_ABORT": msg198, - "CHASSIS_CLKMODOK": msg80, - "CHASSIS_CLKSRC": msg81, - "CONN_CONNECT": msg145, - "CONN_DISCONNECT": msg146, - "CREATED": msg51, - "DELETE_STALE_USER_ACCOUNT": msg258, - "DISPUTE_CLEARED": msg77, - "DISPUTE_DETECTED": msg78, - "DOMAIN_CFG_SYNC_DONE": msg79, - "DUPLEX_MISMATCH": msg338, - "DUP_REGISTER": msg319, - "DUP_SRCIP_PROBE": msg377, - "DUP_VADDR_SRCIP_PROBE": msg376, - "DUP_VADDR_SRC_IP": msg190, - "DVPG_CREATE": msg147, - "DVPG_DELETE": msg148, - "DVS_HOSTMEMBER_INFO": msg149, - "DVS_NAME_CHANGE": msg150, - "EJECTOR_STAT_CHANGED": msg270, - "ERROR": msg335, - "ERR_MSG": msg131, - "EVENT": msg206, - "FAN_DETECT": msg97, - "FAN_OK": msg82, - "FCIP_PEER_CAVIUM": msg233, - "FEX_PORT_STATUS_NOTI": msg214, - "FEX_STATUS": select40, - "FIPS_POST_INFO_MSG": msg307, - "FOP_CHANGED": msg52, - "HASEQNO_SYNC_FAILED": msg287, - "HEARTBEAT_FAILURE": msg240, - "IF_ADMIN_UP": msg259, - "IF_ATTACHED": msg138, - "IF_BANDWIDTH_CHANGE": msg210, - "IF_BRINGUP_ALLOWED_FCOT_CHECKSUM_ERR": msg203, - "IF_DELETE_AUTO": msg139, - "IF_DETACHED": msg140, - "IF_DETACHED_MODULE_REMOVED": msg141, - "IF_DOWN_ADMIN_DOWN": select11, - "IF_DOWN_BIT_ERR_RT_THRES_EXCEEDED": msg199, - "IF_DOWN_CFG_CHANGE": msg193, - "IF_DOWN_CHANNEL_ADMIN_DOWN": msg295, - "IF_DOWN_CHANNEL_MEMBERSHIP_UPDATE_IN_PROGRESS": msg38, - "IF_DOWN_ELP_FAILURE_ISOLATION": msg330, - "IF_DOWN_ERROR_DISABLED": msg35, - "IF_DOWN_FCOT_NOT_PRESENT": select17, - "IF_DOWN_INACTIVE": msg142, - "IF_DOWN_INITIALIZING": select18, - "IF_DOWN_INTERFACE_REMOVED": msg39, - "IF_DOWN_LINK_FAILURE": select12, - "IF_DOWN_MODULE_REMOVED": msg42, - "IF_DOWN_NONE": select19, - "IF_DOWN_NON_PARTICIPATING": msg143, - "IF_DOWN_NOS_RCVD": select20, - "IF_DOWN_OFFLINE": msg114, - "IF_DOWN_OLS_RCVD": msg115, - "IF_DOWN_PARENT_ADMIN_DOWN": msg211, - "IF_DOWN_PEER_CLOSE": msg234, - "IF_DOWN_PEER_RESET": msg235, - "IF_DOWN_PORT_CHANNEL_MEMBERS_DOWN": msg43, - "IF_DOWN_SOFTWARE_FAILURE": msg116, - "IF_DOWN_SRC_PORT_NOT_BOUND": msg117, - "IF_DOWN_SUSPENDED_BY_SPEED": msg293, - "IF_DOWN_TCP_MAX_RETRANSMIT": msg232, - "IF_DOWN_VEM_UNLICENSED": msg144, - "IF_DOWN_ZONE_MERGE_FAILURE_ISOLATION": msg332, - "IF_DUPLEX": msg44, - "IF_ERRDIS_RECOVERY": msg296, - "IF_ERROR_VLANS_REMOVED": msg191, - "IF_ERROR_VLANS_SUSPENDED": msg192, - "IF_HARDWARE": msg239, - "IF_NON_CISCO_TRANSCEIVER": msg297, - "IF_PORTPROFILE_ATTACHED": msg125, - "IF_RX_FLOW_CONTROL": msg45, - "IF_SEQ_ERROR": msg46, - "IF_SFP_ALARM": select35, - "IF_SFP_WARNING": msg231, - "IF_TRUNK_DOWN": select21, - "IF_TRUNK_UP": select22, - "IF_TX_FLOW_CONTROL": msg47, - "IF_UP": select13, - "IF_XCVR_ALARM": select34, - "IF_XCVR_WARNING": select33, - "IMG_DNLD_COMPLETE": msg63, - "IMG_DNLD_STARTED": msg64, - "IM_INTF_STATE": msg283, - "IM_SEQ_ERROR": msg59, - "INFO": msg374, - "INFORMATION": msg205, - "INTF_CONSISTENCY_FAILED": msg236, - "INTF_CONSISTENCY_SUCCESS": msg237, - "INTF_COUNTERS_CLEARED": msg238, - "INVAL_IP": msg336, - "INVAL_MAC": msg372, - "L2FMC_NL_MTS_SEND_FAILURE": msg290, - "L2FM_MAC_FLAP_DISABLE_LEARN": msg362, - "L2FM_MAC_FLAP_RE_ENABLE_LEARN": msg363, - "L2FM_MAC_MOVE2": msg369, - "LACP_SUSPEND_INDIVIDUAL": msg326, - "LCM_MODULE_UPGRADE_END": msg306, - "LCM_MODULE_UPGRADE_START": msg305, - "LC_UPGRADE_REBOOT": msg302, - "LC_UPGRADE_START": msg301, - "LOG-7-SYSTEM_MSG": msg1, - "LOG_CMP_AAA_FAILURE": msg67, - "LOG_CMP_UP": msg244, - "LOG_LIC_N1K_EXPIRY_WARNING": msg68, - "M2FIB_MAC_TBL_PRGMING": msg257, - "MAC_MOVE_NOTIFICATION": msg333, - "MEMORY_ALERT": msg249, - "MEMORY_ALERT_RECOVERED": msg250, - "MESG": msg130, - "MODULE_LOCK_FAILED": msg289, - "MODULE_ONLINE": msg261, - "MOD_BRINGUP_MULTI_LIMIT": msg96, - "MOD_DETECT": msg83, - "MOD_FAIL": msg69, - "MOD_MAJORSWFAIL": msg70, - "MOD_OK": msg75, - "MOD_PWRDN": msg84, - "MOD_PWRFAIL_EJECTORS_OPEN": msg316, - "MOD_PWRUP": msg85, - "MOD_REMOVE": msg86, - "MOD_RESTART": msg76, - "MOD_SRG_NOT_COMPATIBLE": msg71, - "MOD_STATUS": msg98, - "MOD_WARNING": select14, - "MOUNT": msg243, - "MSG_PORT_LOGGED_IN": msg329, - "MSG_PORT_LOGGED_OUT": msg328, - "MSG_SEND_FAILURE_STANDBY_RESET": msg288, - "MSM_CRIT": msg66, - "MST_PORT_BOUNDARY": msg281, - "MTSERROR": msg34, - "MTS_DROP": msg57, - "NATIVE_VLAN_MISMATCH": msg207, - "NBRCHANGE_DUAL": msg253, - "NEIGHBOR_ADDED": msg208, - "NEIGHBOR_REMOVED": msg209, - "NEIGHBOR_UPDATE_AUTOCOPY": msg33, - "NOHMS_DIAG_ERROR": msg339, - "NOHMS_DIAG_ERR_PS_FAIL": msg215, - "NOHMS_DIAG_ERR_PS_RECOVERED": msg216, - "NOHMS_ENV_FEX_OFFLINE": msg310, - "NOHMS_ENV_FEX_ONLINE": msg311, - "PEER_KEEP_ALIVE_RECV_FAIL": msg266, - "PEER_KEEP_ALIVE_RECV_INT_LATEST": msg264, - "PEER_KEEP_ALIVE_RECV_SUCCESS": msg265, - "PEER_KEEP_ALIVE_SEND_INT_LATEST": msg267, - "PEER_KEEP_ALIVE_SEND_SUCCESS": msg268, - "PEER_KEEP_ALIVE_STATUS": msg269, - "PEER_VPC_CFGD": msg308, - "PEER_VPC_CFGD_VLANS_CHANGED": msg99, - "PEER_VPC_DELETED": msg100, - "PEER_VPC_DOWN": msg263, - "PFM_ALERT": msg347, - "PFM_CLOCK_CHANGE": msg194, - "PFM_FAN_FLTR_STATUS": msg242, - "PFM_MODULE_POWER_ON": msg87, - "PFM_PS_RED_MODE_CHG": msg370, - "PFM_SYSTEM_RESET": msg88, - "PFM_VEM_DETECTED": msg101, - "PFM_VEM_REMOVE_NO_HB": msg89, - "PFM_VEM_REMOVE_RESET": msg90, - "PFM_VEM_REMOVE_STATE_CONFLICT": msg91, - "PFM_VEM_REMOVE_TWO_ACT_VSM": msg92, - "PFM_VEM_UNLICENSED": msg93, - "PINNING_CHANGED": msg317, - "PIXM_SYSLOG_MESSAGE_TYPE_CRIT": msg282, - "POLICY_ACTIVATE_EVENT": msg27, - "POLICY_COMMIT_EVENT": msg28, - "POLICY_DEACTIVATE_EVENT": msg29, - "POLICY_LOOKUP_EVENT": select10, - "PORT_ADDED": msg218, - "PORT_DELETED": msg219, - "PORT_DOWN": msg53, - "PORT_INDIVIDUAL": msg294, - "PORT_INDIVIDUAL_DOWN": msg212, - "PORT_PROFILE_CHANGE_VERIFY_REQ_FAILURE": msg124, - "PORT_RANGE_ADDED": msg280, - "PORT_RANGE_DELETED": msg279, - "PORT_RANGE_ROLE": msg277, - "PORT_RANGE_STATE": msg278, - "PORT_ROLE": msg220, - "PORT_SOFTWARE_FAILURE": msg65, - "PORT_STATE": msg221, - "PORT_SUSPENDED": msg213, - "PORT_UP": msg54, - "PS_ABSENT": msg364, - "PS_CAPACITY_CHANGE": select16, - "PS_DETECT": msg365, - "PS_FAIL": msg204, - "PS_FANOK": msg94, - "PS_FOUND": msg102, - "PS_OK": msg95, - "PS_PWR_INPUT_MISSING": msg314, - "PS_RED_MODE_CHG": msg371, - "PS_RED_MODE_RESTORED": msg315, - "PS_STATUS": msg103, - "PVLAN_PPM_PORT_CONFIG_FAILED": msg129, - "READCONF_STARTED": msg299, - "RM_VICPP_RECREATE_ERROR": msg132, - "ROUTERFOUND": msg349, - "RUNTIME_DB_RESTORE_STARTED": msg303, - "RUNTIME_DB_RESTORE_SUCCESS": msg304, - "SATCTRL": msg318, - "SATCTRL_IMAGE": msg321, - "SENSOR_MSG1": msg323, - "SERVER_ADDED": msg291, - "SERVER_REMOVED": msg292, - "SERVICEFOUND": msg348, - "SERVICELOST": msg202, - "SERVICE_CRASHED": msg201, - "SERVICE_STARTED": msg375, - "SOHMS_DIAG_ERROR": select37, - "SPEED": msg50, - "SRVSTATE_CHANGED": msg373, - "STANDBY_SUP_OK": msg126, - "STM_LEARNING_RE_ENABLE": msg340, - "STM_LOOP_DETECT": msg127, - "SUBGROUP_ID_PORT_ADDED": msg55, - "SUBGROUP_ID_PORT_REMOVED": msg56, - "SUBPROC_SUCCESS_EXIT": msg367, - "SUBPROC_TERMINATED": msg366, - "SUP_POWERDOWN": msg300, - "SWITCHOVER_OVER": msg285, - "SYNC_COMPLETE": msg128, - "SYNC_FAILURE_STANDBY_RESET": msg195, - "SYN_COLL_DIS_EN": msg309, - "SYSLOG_LOG_WARNING": msg58, - "SYSLOG_SL_MSG_WARNING": msg337, - "SYSMGR_AUTOCOLLECT_TECH_SUPPORT_LOG": msg241, - "SYSTEM_MSG": select9, - "TACACS_ACCOUNTING_MESSAGE": select32, - "TACACS_ERROR_MESSAGE": msg230, - "UDLD_PORT_DISABLED": msg341, - "UNKNOWN_MTYPE": msg320, - "UPDOWN": msg368, - "VDC_HOSTNAME_CHANGE": msg26, - "VDC_MODULETYPE": msg286, - "VDC_ONLINE": msg325, - "VDC_STATE_CHANGE": msg284, - "VMS_PPM_SYNC_COMPLETE": msg151, - "VPC_CFGD": msg260, - "VPC_DELETED": msg152, - "VPC_ISSU_END": msg276, - "VPC_ISSU_START": msg275, - "VPC_UP": msg153, - "VSHD_SYSLOG_CONFIG_I": select25, - "XBAR_DETECT": msg271, - "XBAR_OK": msg274, - "XBAR_PWRDN": msg273, - "XBAR_PWRUP": msg272, - "ZS_MERGE_FAILED": msg331, - "dstats": msg327, - "last": msg200, - "ntpd": select41, - "snmpd": select29, - "zone": msg334, - }), -]); - -var part328 = match_copy("MESSAGE#24:SYSTEM_MSG:08/0_1", "nwparser.payload", "event_description"); - -var part329 = match("MESSAGE#44:IF_RX_FLOW_CONTROL/1_0", "nwparser.p0", "rol%{p0}"); - -var part330 = match("MESSAGE#44:IF_RX_FLOW_CONTROL/1_1", "nwparser.p0", "ol%{p0}"); - -var part331 = match("MESSAGE#44:IF_RX_FLOW_CONTROL/2", "nwparser.p0", "%{}state changed to %{result}"); - -var part332 = match("MESSAGE#171:AAA_ACCOUNTING_MESSAGE:27/0", "nwparser.payload", "update:%{saddr}@%{terminal}:%{username}:%{p0}"); - -var part333 = match("MESSAGE#171:AAA_ACCOUNTING_MESSAGE:27/2", "nwparser.p0", "%{result})"); - -var part334 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/0", "nwparser.payload", "S%{p0}"); - -var part335 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/1_0", "nwparser.p0", "ource%{p0}"); - -var part336 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/1_1", "nwparser.p0", "rc%{p0}"); - -var part337 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/2", "nwparser.p0", "%{}IP: %{saddr}, D%{p0}"); - -var part338 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/3_0", "nwparser.p0", "estination%{p0}"); - -var part339 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/3_1", "nwparser.p0", "st%{p0}"); - -var part340 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/4", "nwparser.p0", "%{}IP: %{daddr}, S%{p0}"); - -var part341 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/6", "nwparser.p0", "%{}Port: %{sport}, D%{p0}"); - -var part342 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/8", "nwparser.p0", "%{}Port: %{dport}, S%{p0}"); - -var part343 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/9_0", "nwparser.p0", "ource Interface%{p0}"); - -var part344 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/9_1", "nwparser.p0", "rc Intf%{p0}"); - -var part345 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/10", "nwparser.p0", ": %{sinterface}, %{p0}"); - -var part346 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/11_0", "nwparser.p0", "Protocol: %{p0}"); - -var part347 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/11_1", "nwparser.p0", "protocol: %{p0}"); - -var part348 = match("MESSAGE#186:ACLLOG_FLOW_INTERVAL/12", "nwparser.p0", "\"%{protocol}\"(%{protocol_detail}),%{space->} Hit-count = %{dclass_counter1}"); - -var part349 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/0", "nwparser.payload", "%{action}: %{p0}"); - -var part350 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/1_0", "nwparser.p0", "%{saddr}@%{terminal}: %{p0}"); - -var part351 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/1_1", "nwparser.p0", "%{fld1->} %{p0}"); - -var part352 = match("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/3_0", "nwparser.p0", "(%{result})%{info}"); - -var part353 = match_copy("MESSAGE#372:TACACS_ACCOUNTING_MESSAGE:09/3_1", "nwparser.p0", "info"); - -var part354 = match("MESSAGE#238:IF_XCVR_WARNING/0", "nwparser.payload", "Interface %{interface}, %{p0}"); - -var part355 = match("MESSAGE#238:IF_XCVR_WARNING/1_0", "nwparser.p0", "Low %{p0}"); - -var part356 = match("MESSAGE#238:IF_XCVR_WARNING/1_1", "nwparser.p0", "High %{p0}"); - -var part357 = match_copy("MESSAGE#0:LOG-7-SYSTEM_MSG", "nwparser.payload", "event_description", processor_chain([ - dup1, - dup2, - dup3, - dup4, -])); - -var part358 = match_copy("MESSAGE#32:NEIGHBOR_UPDATE_AUTOCOPY", "nwparser.payload", "event_description", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var part359 = match("MESSAGE#35:IF_DOWN_ADMIN_DOWN", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var part360 = match("MESSAGE#36:IF_DOWN_ADMIN_DOWN:01", "nwparser.payload", "%{fld43->} Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var part361 = match("MESSAGE#37:IF_DOWN_CHANNEL_MEMBERSHIP_UPDATE_IN_PROGRESS", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var part362 = match("MESSAGE#38:IF_DOWN_INTERFACE_REMOVED", "nwparser.payload", "Interface %{interface->} is down (%{result})", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var select44 = linear_select([ - dup26, - dup27, -]); - -var part363 = match_copy("MESSAGE#58:IM_SEQ_ERROR", "nwparser.payload", "result", processor_chain([ - dup1, - dup2, - dup3, - dup4, -])); - -var part364 = match_copy("MESSAGE#88:PFM_VEM_REMOVE_NO_HB", "nwparser.payload", "event_description", processor_chain([ - dup24, - dup2, - dup3, - dup4, -])); - -var part365 = match("MESSAGE#108:IF_DOWN_INITIALIZING:01", "nwparser.payload", "%{fld43->} Interface %{interface->} is down (%{result})", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var part366 = match("MESSAGE#110:IF_DOWN_NONE:01", "nwparser.payload", "%{fld52->} Interface %{interface->} is down (%{result})", processor_chain([ - dup23, - dup34, - dup35, - dup14, - dup2, - dup3, - dup4, -])); - -var part367 = match_copy("MESSAGE#123:PORT_PROFILE_CHANGE_VERIFY_REQ_FAILURE", "nwparser.payload", "event_description", processor_chain([ - dup33, - dup2, - dup3, - dup4, -])); - -var select45 = linear_select([ - dup46, - dup47, -]); - -var select46 = linear_select([ - dup49, - dup50, -]); - -var select47 = linear_select([ - dup54, - dup55, -]); - -var select48 = linear_select([ - dup57, - dup58, -]); - -var part368 = match_copy("MESSAGE#214:NOHMS_DIAG_ERR_PS_FAIL", "nwparser.payload", "event_description", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var select49 = linear_select([ - dup65, - dup66, -]); - -var select50 = linear_select([ - dup67, - dup68, -]); - -var part369 = match("MESSAGE#224:IF_SFP_WARNING", "nwparser.payload", "Interface %{interface}, %{event_description}", processor_chain([ - dup15, - dup2, - dup3, - dup4, -])); - -var part370 = match("MESSAGE#225:IF_DOWN_TCP_MAX_RETRANSMIT", "nwparser.payload", "%{fld43->} Interface %{interface->} is down%{info}", processor_chain([ - dup23, - dup2, - dup3, - dup4, -])); - -var select51 = linear_select([ - dup70, - dup71, -]); - -var part371 = match("MESSAGE#239:IF_XCVR_WARNING:01", "nwparser.payload", "Interface %{interface}, %{event_description}", processor_chain([ - dup61, - dup2, - dup3, - dup4, -])); diff --git a/x-pack/filebeat/module/cisco/nexus/ingest/pipeline.yml b/x-pack/filebeat/module/cisco/nexus/ingest/pipeline.yml deleted file mode 100644 index c064c903dba..00000000000 --- a/x-pack/filebeat/module/cisco/nexus/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Cisco Nexus - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/cisco/nexus/manifest.yml b/x-pack/filebeat/module/cisco/nexus/manifest.yml deleted file mode 100644 index f1e88db6b39..00000000000 --- a/x-pack/filebeat/module/cisco/nexus/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["cisco.nexus", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9528 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/cisco/nexus/test/nexus.log b/x-pack/filebeat/module/cisco/nexus/test/nexus.log deleted file mode 100644 index ad2b2b6a9ef..00000000000 --- a/x-pack/filebeat/module/cisco/nexus/test/nexus.log +++ /dev/null @@ -1,15 +0,0 @@ -<181>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_HARDWARE: Interface Ethernet1/9, hardware type changed to QSA -<181>2022 Oct 17 10:27:35 Berlin: %NOHMS-2-NOHMS_ENV_FEX_ONLINE: FEX-105 On-line -<181>2022 Oct 17 10:27:36 Berlin: %PFMA-2-FEX_PS_FOUND: Fex 105 Power Supply 1 found (Serial number SN01234) -<181>2022 Oct 17 10:27:37 Berlin: %PFMA-2-FEX_PS_FOUND: Fex 105 Power Supply 2 found (Serial number SN01234) -<181>2022 Oct 17 10:27:38 Berlin: %PFMA-2-FEX_STATUS: Fex 105 is online -<182>2022 Oct 17 14:00:07 Berlin: %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet100/1/17 is down (Link failure) -<182>2022 Oct 18 10:32:04 Berlin: %VSHD-5-VSHD_SYSLOG_CONFIG_I: Configured from vty by username on 1.2.3.4@pts/0 -<182>2022 Oct 19 11:28:06 Berlin: %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet100/1/29 is down (Link failure) -<182>2022 Oct 19 11:28:08 Berlin: %ETHPORT-5-IF_DOWN_ADMIN_DOWN: Interface Ethernet100/1/29 is down (Administratively down) -<182>2022 Oct 19 11:33:57 Berlin: %ETHPORT-5-IF_ADMIN_UP: Interface Ethernet100/1/29 is admin up "some meaningful text". -<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-SPEED: Interface Ethernet100/1/29, operational speed changed to 100 Mbps -<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_DUPLEX: Interface Ethernet100/1/29, operational duplex mode changed to Full -<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_RX_FLOW_CONTROL: Interface Ethernet100/1/29, operational Receive Flow Control state changed to off -<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_TX_FLOW_CONTROL: Interface Ethernet100/1/29, operational Transmit Flow Control state changed to on -<187>2022 Oct 19 11:34:01 Berlin: %ETHPORT-3-IF_UP: Interface Ethernet100/1/29 is up in mode access diff --git a/x-pack/filebeat/module/cisco/nexus/test/nexus.log-expected.json b/x-pack/filebeat/module/cisco/nexus/test/nexus.log-expected.json deleted file mode 100644 index d9fb7ccd0c2..00000000000 --- a/x-pack/filebeat/module/cisco/nexus/test/nexus.log-expected.json +++ /dev/null @@ -1,482 +0,0 @@ -[ - { - "event.code": "IF_HARDWARE", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<181>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_HARDWARE: Interface Ethernet1/9, hardware type changed to QSA", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 0, - "log.syslog.facility.code": 22, - "log.syslog.priority": 181, - "log.syslog.severity.code": 5, - "network.interface.name": "Ethernet1/9", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "hardware type changed to QSA", - "rsa.internal.messageid": "IF_HARDWARE", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet1/9", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "NOHMS_ENV_FEX_ONLINE", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<181>2022 Oct 17 10:27:35 Berlin: %NOHMS-2-NOHMS_ENV_FEX_ONLINE: FEX-105 On-line", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "2", - "log.offset": 110, - "log.syslog.facility.code": 22, - "log.syslog.priority": 181, - "log.syslog.severity.code": 5, - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "NOHMS" - ], - "rsa.internal.event_desc": "FEX ONLINE", - "rsa.internal.messageid": "NOHMS_ENV_FEX_ONLINE", - "rsa.misc.device_name": "FEX-105", - "rsa.misc.event_source": "NOHMS", - "rsa.misc.severity": "2", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "FEX_PS_FOUND", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<181>2022 Oct 17 10:27:36 Berlin: %PFMA-2-FEX_PS_FOUND: Fex 105 Power Supply 1 found (Serial number SN01234)", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "2", - "log.offset": 191, - "log.syslog.facility.code": 22, - "log.syslog.priority": 181, - "log.syslog.severity.code": 5, - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "rsa.internal.messageid": "FEX_PS_FOUND", - "rsa.misc.severity": "2", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "FEX_PS_FOUND", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<181>2022 Oct 17 10:27:37 Berlin: %PFMA-2-FEX_PS_FOUND: Fex 105 Power Supply 2 found (Serial number SN01234)", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "2", - "log.offset": 300, - "log.syslog.facility.code": 22, - "log.syslog.priority": 181, - "log.syslog.severity.code": 5, - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "rsa.internal.messageid": "FEX_PS_FOUND", - "rsa.misc.severity": "2", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "FEX_STATUS", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<181>2022 Oct 17 10:27:38 Berlin: %PFMA-2-FEX_STATUS: Fex 105 is online", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "2", - "log.offset": 409, - "log.syslog.facility.code": 22, - "log.syslog.priority": 181, - "log.syslog.severity.code": 5, - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "PFMA" - ], - "rsa.internal.event_desc": "Fex is online", - "rsa.internal.messageid": "FEX_STATUS", - "rsa.misc.device_name": "Fex 105", - "rsa.misc.event_source": "PFMA", - "rsa.misc.severity": "2", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "IF_DOWN_LINK_FAILURE", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 17 14:00:07 Berlin: %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet100/1/17 is down (Link failure)", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 481, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/17", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface is down", - "rsa.internal.messageid": "IF_DOWN_LINK_FAILURE", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.result": "Link failure", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/17", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "VSHD_SYSLOG_CONFIG_I", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 18 10:32:04 Berlin: %VSHD-5-VSHD_SYSLOG_CONFIG_I: Configured from vty by username on 1.2.3.4@pts/0", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 598, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "VSHD" - ], - "related.ip": [ - "1.2.3.4" - ], - "related.user": [ - "username" - ], - "rsa.internal.messageid": "VSHD_SYSLOG_CONFIG_I", - "rsa.misc.event_source": "VSHD", - "rsa.misc.severity": "5", - "rsa.misc.terminal": "pts/0", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "source.ip": "1.2.3.4", - "tags": [ - "cisco.nexus", - "forwarded" - ], - "user.name": "username" - }, - { - "event.code": "IF_DOWN_LINK_FAILURE", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 19 11:28:06 Berlin: %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet100/1/29 is down (Link failure)", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 711, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface is down", - "rsa.internal.messageid": "IF_DOWN_LINK_FAILURE", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.result": "Link failure", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "IF_DOWN_ADMIN_DOWN", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 19 11:28:08 Berlin: %ETHPORT-5-IF_DOWN_ADMIN_DOWN: Interface Ethernet100/1/29 is down (Administratively down)", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 828, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.messageid": "IF_DOWN_ADMIN_DOWN", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.result": "Administratively down", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "IF_ADMIN_UP", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 19 11:33:57 Berlin: %ETHPORT-5-IF_ADMIN_UP: Interface Ethernet100/1/29 is admin up \"some meaningful text\".", - "event.outcome": "success", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 952, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface is admin up.", - "rsa.internal.messageid": "IF_ADMIN_UP", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Configuration", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "SPEED", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-SPEED: Interface Ethernet100/1/29, operational speed changed to 100 Mbps", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 1073, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface operational speed changed", - "rsa.internal.messageid": "SPEED", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.result": "100 Mbps", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "IF_DUPLEX", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_DUPLEX: Interface Ethernet100/1/29, operational duplex mode changed to Full", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 1191, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface duplex mode changed", - "rsa.internal.messageid": "IF_DUPLEX", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.result": "Full", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "IF_RX_FLOW_CONTROL", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_RX_FLOW_CONTROL: Interface Ethernet100/1/29, operational Receive Flow Control state changed to off", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 1315, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface operational Receive Flow Control state changed", - "rsa.internal.messageid": "IF_RX_FLOW_CONTROL", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.result": "off", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "IF_TX_FLOW_CONTROL", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<182>2022 Oct 19 11:34:01 Berlin: %ETHPORT-5-IF_TX_FLOW_CONTROL: Interface Ethernet100/1/29, operational Transmit Flow Control state changed to on", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "5", - "log.offset": 1462, - "log.syslog.facility.code": 22, - "log.syslog.priority": 182, - "log.syslog.severity.code": 6, - "network.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface operational Transmit Flow Control state changed", - "rsa.internal.messageid": "IF_TX_FLOW_CONTROL", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.result": "on", - "rsa.misc.severity": "5", - "rsa.network.interface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - }, - { - "event.code": "IF_UP", - "event.dataset": "cisco.nexus", - "event.module": "cisco", - "event.original": "<187>2022 Oct 19 11:34:01 Berlin: %ETHPORT-3-IF_UP: Interface Ethernet100/1/29 is up in mode access", - "event.timezone": "Berlin", - "fileset.name": "nexus", - "input.type": "log", - "log.level": "3", - "log.offset": 1609, - "log.syslog.facility.code": 23, - "log.syslog.priority": 187, - "log.syslog.severity.code": 3, - "observer.ingress.interface.name": "Ethernet100/1/29", - "observer.product": "Nexus", - "observer.type": "Switches", - "observer.vendor": "Cisco", - "related.hosts": [ - "ETHPORT" - ], - "rsa.internal.event_desc": "Interface is up", - "rsa.internal.messageid": "IF_UP", - "rsa.misc.event_source": "ETHPORT", - "rsa.misc.severity": "3", - "rsa.network.sinterface": "Ethernet100/1/29", - "rsa.time.timezone": "Berlin", - "service.type": "cisco", - "tags": [ - "cisco.nexus", - "forwarded" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/cylance/README.md b/x-pack/filebeat/module/cylance/README.md deleted file mode 100644 index 64bd6cf1be2..00000000000 --- a/x-pack/filebeat/module/cylance/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# cylance module - -This is a module for CylanceProtect logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML cylance version 127 -at 2020-07-13 17:55:36.066402 +0000 UTC. - diff --git a/x-pack/filebeat/module/cylance/_meta/config.yml b/x-pack/filebeat/module/cylance/_meta/config.yml deleted file mode 100644 index 3025ab38401..00000000000 --- a/x-pack/filebeat/module/cylance/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: cylance - protect: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9508 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/cylance/_meta/docs.asciidoc b/x-pack/filebeat/module/cylance/_meta/docs.asciidoc deleted file mode 100644 index f8cff0616f4..00000000000 --- a/x-pack/filebeat/module/cylance/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: cylance -:has-dashboards: false - -== Cylance module - -deprecated::[8.12.0,"This module is deprecated. See <> for migration options."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving CylanceProtect logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: protect - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `protect` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "cylance" device revision 127. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9508` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/cylance/_meta/fields.yml b/x-pack/filebeat/module/cylance/_meta/fields.yml deleted file mode 100644 index 9cd4579d60e..00000000000 --- a/x-pack/filebeat/module/cylance/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: cylance - title: CylanceProtect - description: > - cylance fields. - fields: diff --git a/x-pack/filebeat/module/cylance/fields.go b/x-pack/filebeat/module/cylance/fields.go deleted file mode 100644 index 938489cfe84..00000000000 --- a/x-pack/filebeat/module/cylance/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package cylance - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "cylance", asset.ModuleFieldsPri, AssetCylance); err != nil { - panic(err) - } -} - -// AssetCylance returns asset data. -// This is the base64 encoded zlib format compressed contents of module/cylance. -func AssetCylance() string { - return "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" -} diff --git a/x-pack/filebeat/module/cylance/protect/_meta/fields.yml b/x-pack/filebeat/module/cylance/protect/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/cylance/protect/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/cylance/protect/config/input.yml b/x-pack/filebeat/module/cylance/protect/config/input.yml deleted file mode 100644 index 8a3fc7172e2..00000000000 --- a/x-pack/filebeat/module/cylance/protect/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Cylance" - product: "Protect" - type: "Anti-Virus" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/cylance/protect/config/liblogparser.js - - ${path.home}/module/cylance/protect/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/cylance/protect/config/liblogparser.js b/x-pack/filebeat/module/cylance/protect/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/cylance/protect/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{fld14->} %{p0}"); - -var dup3 = match("MESSAGE#0:CylancePROTECT:01/1_0", "nwparser.p0", "[%{fld2}] Event Type: AuditLog, Event Name: %{p0}"); - -var dup4 = match("MESSAGE#0:CylancePROTECT:01/1_1", "nwparser.p0", "%{fld5->} Event Type: AuditLog, Event Name: %{p0}"); - -var dup5 = setc("eventcategory","1901000000"); - -var dup6 = setc("vendor_event_cat"," AuditLog"); - -var dup7 = date_time({ - dest: "event_time", - args: ["hdate","htime"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup8 = field("event_type"); - -var dup9 = field("event_cat"); - -var dup10 = match("MESSAGE#1:CylancePROTECT:02/2", "nwparser.p0", "%{event_type}, Message: %{p0}"); - -var dup11 = match("MESSAGE#8:CylancePROTECT:09/1_0", "nwparser.p0", "[%{fld2}] Event Type: ScriptControl, Event Name: %{p0}"); - -var dup12 = match("MESSAGE#8:CylancePROTECT:09/1_1", "nwparser.p0", "%{fld5->} Event Type: ScriptControl, Event Name: %{p0}"); - -var dup13 = match_copy("MESSAGE#8:CylancePROTECT:09/3_1", "nwparser.p0", "info"); - -var dup14 = match("MESSAGE#11:CylancePROTECT:15/1_0", "nwparser.p0", "[%{fld2}] Event Type: %{p0}"); - -var dup15 = match("MESSAGE#11:CylancePROTECT:15/1_1", "nwparser.p0", "%{fld5->} Event Type: %{p0}"); - -var dup16 = match("MESSAGE#13:CylancePROTECT:13/3_0", "nwparser.p0", "%{os->} Zone Names: %{info}"); - -var dup17 = match_copy("MESSAGE#13:CylancePROTECT:13/3_1", "nwparser.p0", "os"); - -var dup18 = date_time({ - dest: "event_time", - args: ["hmonth","hdate","hhour","hmin","hsec"], - fmts: [ - [dB,dF,dN,dU,dO], - ], -}); - -var dup19 = match("MESSAGE#22:CylancePROTECT:22/2_0", "nwparser.p0", "%{info}, Device Id: %{fld3}"); - -var dup20 = constant("1701000000"); - -var dup21 = constant("1804000000"); - -var dup22 = constant("1003010000"); - -var dup23 = linear_select([ - dup3, - dup4, -]); - -var dup24 = lookup({ - dest: "nwparser.event_cat", - map: map_getEventLegacyCategory, - key: dup8, -}); - -var dup25 = lookup({ - dest: "nwparser.event_cat_name", - map: map_getEventLegacyCategoryName, - key: dup9, -}); - -var dup26 = linear_select([ - dup11, - dup12, -]); - -var dup27 = linear_select([ - dup14, - dup15, -]); - -var dup28 = linear_select([ - dup16, - dup17, -]); - -var dup29 = linear_select([ - dup19, - dup13, -]); - -var hdr1 = match("HEADER#0:0001", "message", "%{hday}-%{hmonth}-%{hyear->} %{hhour}:%{hmin}:%{hsec->} %{hseverity->} %{hhost->} %{hfld2->} \u003c\u003c%{fld44}>%{hfld3->} %{hdate}T%{htime}.%{hfld4->} %{hostname->} CylancePROTECT %{payload}", processor_chain([ - setc("header_id","0001"), - dup1, -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{hfld1->} %{hdate}T%{htime}.%{hfld2->} %{hostname->} CylancePROTECT %{payload}", processor_chain([ - setc("header_id","0002"), - dup1, -])); - -var hdr3 = match("HEADER#2:0004", "message", "%{hdate}T%{htime}.%{hfld2->} %{hostname->} CylancePROTECT %{payload}", processor_chain([ - setc("header_id","0004"), - dup1, -])); - -var hdr4 = match("HEADER#3:0003", "message", "%{hmonth->} %{hdate->} %{hhour}:%{hmin}:%{hsec->} %{hhost->} CylancePROTECT Event Type:%{vendor_event_cat}, %{payload}", processor_chain([ - setc("header_id","0003"), - dup1, -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, -]); - -var part1 = match("MESSAGE#0:CylancePROTECT:01/2", "nwparser.p0", "%{event_type}, Message: S%{p0}"); - -var part2 = match("MESSAGE#0:CylancePROTECT:01/3_0", "nwparser.p0", "ource: %{product}; SHA256: %{p0}"); - -var part3 = match("MESSAGE#0:CylancePROTECT:01/3_1", "nwparser.p0", "HA256: %{p0}"); - -var select2 = linear_select([ - part2, - part3, -]); - -var part4 = match("MESSAGE#0:CylancePROTECT:01/4", "nwparser.p0", "%{checksum}; %{p0}"); - -var part5 = match("MESSAGE#0:CylancePROTECT:01/5_0", "nwparser.p0", "Category: %{category}; Reason: %{p0}"); - -var part6 = match("MESSAGE#0:CylancePROTECT:01/5_1", "nwparser.p0", "Reason: %{p0}"); - -var select3 = linear_select([ - part5, - part6, -]); - -var part7 = match("MESSAGE#0:CylancePROTECT:01/6", "nwparser.p0", "%{result}, User: %{user_fname->} %{user_lname->} (%{mail_id})"); - -var all1 = all_match({ - processors: [ - dup2, - dup23, - part1, - select2, - part4, - select3, - part7, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup24, - dup25, - ]), -}); - -var msg1 = msg("CylancePROTECT:01", all1); - -var part8 = match("MESSAGE#1:CylancePROTECT:02/3_0", "nwparser.p0", "Device: %{node}; SHA256: %{p0}"); - -var part9 = match("MESSAGE#1:CylancePROTECT:02/3_1", "nwparser.p0", "Policy: %{policyname}; SHA256: %{p0}"); - -var select4 = linear_select([ - part8, - part9, -]); - -var part10 = match("MESSAGE#1:CylancePROTECT:02/4_0", "nwparser.p0", "%{checksum}; Category: %{category}, User: %{p0}"); - -var part11 = match("MESSAGE#1:CylancePROTECT:02/4_1", "nwparser.p0", "%{checksum}, User: %{p0}"); - -var select5 = linear_select([ - part10, - part11, -]); - -var part12 = match("MESSAGE#1:CylancePROTECT:02/5", "nwparser.p0", ")%{mail_id->} (%{user_lname->} %{user_fname}"); - -var all2 = all_match({ - processors: [ - dup2, - dup23, - dup10, - select4, - select5, - part12, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup24, - dup25, - ]), -}); - -var msg2 = msg("CylancePROTECT:02", all2); - -var part13 = match("MESSAGE#2:CylancePROTECT:03/3_0", "nwparser.p0", "Devices: %{node},%{p0}"); - -var part14 = match("MESSAGE#2:CylancePROTECT:03/3_1", "nwparser.p0", "Device: %{node};%{p0}"); - -var part15 = match("MESSAGE#2:CylancePROTECT:03/3_2", "nwparser.p0", "Policy: %{policyname},%{p0}"); - -var select6 = linear_select([ - part13, - part14, - part15, -]); - -var part16 = match("MESSAGE#2:CylancePROTECT:03/4", "nwparser.p0", "%{}User: %{user_fname->} %{user_lname->} (%{mail_id})"); - -var all3 = all_match({ - processors: [ - dup2, - dup23, - dup10, - select6, - part16, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup24, - dup25, - ]), -}); - -var msg3 = msg("CylancePROTECT:03", all3); - -var part17 = match("MESSAGE#3:CylancePROTECT:04/2", "nwparser.p0", "%{event_type}, Message: Zone: %{info}; Policy: %{policyname}; Value: %{fld3}, User: %{user_fname->} %{user_lname->} (%{mail_id})"); - -var all4 = all_match({ - processors: [ - dup2, - dup23, - part17, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup24, - dup25, - ]), -}); - -var msg4 = msg("CylancePROTECT:04", all4); - -var part18 = match("MESSAGE#4:CylancePROTECT:05/3_0", "nwparser.p0", "Policy Assigned:%{signame}; Devices: %{node->} , User: %{p0}"); - -var part19 = match("MESSAGE#4:CylancePROTECT:05/3_1", "nwparser.p0", "Provider: %{product}, Source IP: %{saddr}, User: %{p0}"); - -var part20 = match("MESSAGE#4:CylancePROTECT:05/3_2", "nwparser.p0", "%{info}, User: %{p0}"); - -var select7 = linear_select([ - part18, - part19, - part20, -]); - -var part21 = match("MESSAGE#4:CylancePROTECT:05/4", "nwparser.p0", "%{user_fname->} %{user_lname->} (%{mail_id})"); - -var all5 = all_match({ - processors: [ - dup2, - dup23, - dup10, - select7, - part21, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup24, - dup25, - ]), -}); - -var msg5 = msg("CylancePROTECT:05", all5); - -var part22 = match("MESSAGE#5:CylancePROTECT:06/2", "nwparser.p0", "%{event_type}, Message: The Device: %{node->} was auto assigned to the Zone: IP Address: %{p0}"); - -var part23 = match("MESSAGE#5:CylancePROTECT:06/3_0", "nwparser.p0", "Fake Devices, User: %{p0}"); - -var part24 = match("MESSAGE#5:CylancePROTECT:06/3_1", "nwparser.p0", "%{saddr}, User: %{p0}"); - -var select8 = linear_select([ - part23, - part24, -]); - -var part25 = match("MESSAGE#5:CylancePROTECT:06/4_0", "nwparser.p0", "(%{p0}"); - -var part26 = match("MESSAGE#5:CylancePROTECT:06/4_1", "nwparser.p0", "%{user_fname->} %{user_lname->} (%{p0}"); - -var select9 = linear_select([ - part25, - part26, -]); - -var part27 = match("MESSAGE#5:CylancePROTECT:06/5", "nwparser.p0", ")%{mail_id}"); - -var all6 = all_match({ - processors: [ - dup2, - dup23, - part22, - select8, - select9, - part27, - ], - on_success: processor_chain([ - dup5, - dup6, - dup7, - dup24, - dup25, - ]), -}); - -var msg6 = msg("CylancePROTECT:06", all6); - -var part28 = match("MESSAGE#6:CylancePROTECT:07/1_0", "nwparser.p0", "[%{fld2}] Event Type: ExploitAttempt, Event Name: %{p0}"); - -var part29 = match("MESSAGE#6:CylancePROTECT:07/1_1", "nwparser.p0", "%{fld5->} Event Type: ExploitAttempt, Event Name: %{p0}"); - -var select10 = linear_select([ - part28, - part29, -]); - -var part30 = match("MESSAGE#6:CylancePROTECT:07/2", "nwparser.p0", "%{event_type}, Device Name: %{node}, IP Address: (%{saddr}), Action: %{action}, Process ID: %{process_id}, Process Name: %{process}, User Name: %{username}, Violation Type: %{signame}, Zone Names: %{info}"); - -var all7 = all_match({ - processors: [ - dup2, - select10, - part30, - ], - on_success: processor_chain([ - dup5, - setc("vendor_event_cat"," ExploitAttempt"), - dup7, - dup24, - dup25, - ]), -}); - -var msg7 = msg("CylancePROTECT:07", all7); - -var part31 = match("MESSAGE#7:CylancePROTECT:08/1_0", "nwparser.p0", "[%{fld2}] Event Type: DeviceControl, Event Name: %{p0}"); - -var part32 = match("MESSAGE#7:CylancePROTECT:08/1_1", "nwparser.p0", "%{fld5->} Event Type: DeviceControl, Event Name: %{p0}"); - -var select11 = linear_select([ - part31, - part32, -]); - -var part33 = match("MESSAGE#7:CylancePROTECT:08/2", "nwparser.p0", "%{event_type}, Device Name: %{node}, External Device Type: %{fld3}, External Device Vendor ID: %{fld18}, External Device Name: %{fld4}, External Device Product ID: %{fld17}, External Device Serial Number: %{serial_number}, Zone Names: %{info}"); - -var all8 = all_match({ - processors: [ - dup2, - select11, - part33, - ], - on_success: processor_chain([ - dup5, - setc("vendor_event_cat"," DeviceControl"), - dup7, - dup24, - dup25, - ]), -}); - -var msg8 = msg("CylancePROTECT:08", all8); - -var part34 = match("MESSAGE#8:CylancePROTECT:09/2", "nwparser.p0", "%{event_type}, Device Name: %{node}, File Path: %{directory}, Interpreter: %{application}, Interpreter Version: %{version->} (%{fld3}), Zone Names: %{p0}"); - -var part35 = match("MESSAGE#8:CylancePROTECT:09/3_0", "nwparser.p0", "%{info}, User Name: %{username}"); - -var select12 = linear_select([ - part35, - dup13, -]); - -var all9 = all_match({ - processors: [ - dup2, - dup26, - part34, - select12, - ], - on_success: processor_chain([ - dup5, - setc("vendor_event_cat"," ScriptControl"), - dup7, - dup24, - dup25, - ]), -}); - -var msg9 = msg("CylancePROTECT:09", all9); - -var part36 = match("MESSAGE#9:CylancePROTECT:10/1_0", "nwparser.p0", "[%{fld2}] Event Type: Threat, Event Name: %{p0}"); - -var part37 = match("MESSAGE#9:CylancePROTECT:10/1_1", "nwparser.p0", "%{fld4->} Event Type: Threat, Event Name: %{p0}"); - -var select13 = linear_select([ - part36, - part37, -]); - -var part38 = match("MESSAGE#9:CylancePROTECT:10/2", "nwparser.p0", "%{event_type}, Device Name: %{node}, IP Address: (%{saddr}), File Name: %{filename}, Path: %{directory}, Drive Type: %{fld1}, SHA256: %{checksum}, MD5: %{fld3}, Status: %{event_state}, Cylance Score: %{reputation_num}, Found Date: %{fld5}, File Type: %{filetype}, Is Running: %{fld6}, Auto Run: %{fld7}, Detected By: %{fld8}, Zone Names: %{info}, Is Malware: %{fld10}, Is Unique To Cylance: %{fld11}, Threat Classification: %{sigtype}"); - -var all10 = all_match({ - processors: [ - dup2, - select13, - part38, - ], - on_success: processor_chain([ - dup5, - setc("vendor_event_cat"," Threat"), - dup7, - dup24, - dup25, - ]), -}); - -var msg10 = msg("CylancePROTECT:10", all10); - -var part39 = match("MESSAGE#10:CylancePROTECT:11/1_0", "nwparser.p0", "[%{fld2}] Event Type: AppControl, Event Name: %{p0}"); - -var part40 = match("MESSAGE#10:CylancePROTECT:11/1_1", "nwparser.p0", "%{fld5->} Event Type: AppControl, Event Name: %{p0}"); - -var select14 = linear_select([ - part39, - part40, -]); - -var part41 = match("MESSAGE#10:CylancePROTECT:11/2", "nwparser.p0", "%{event_type}, Device Name: %{node}, IP Address: (%{saddr}), Action: %{action}, Action Type: %{fld3}, File Path: %{directory}, SHA256: %{checksum}, Zone Names: %{info}"); - -var all11 = all_match({ - processors: [ - dup2, - select14, - part41, - ], - on_success: processor_chain([ - dup5, - setc("vendor_event_cat"," AppControl"), - dup24, - dup25, - ]), -}); - -var msg11 = msg("CylancePROTECT:11", all11); - -var part42 = match("MESSAGE#11:CylancePROTECT:15/2", "nwparser.p0", "%{vendor_event_cat}, Event Name: %{event_type}, Threat Class: %{sigtype}, Threat Subclass: %{fld7}, SHA256: %{checksum}, MD5: %{fld8}"); - -var all12 = all_match({ - processors: [ - dup2, - dup27, - part42, - ], - on_success: processor_chain([ - dup5, - dup7, - dup24, - dup25, - ]), -}); - -var msg12 = msg("CylancePROTECT:15", all12); - -var part43 = match("MESSAGE#12:CylancePROTECT:14/2", "nwparser.p0", "%{vendor_event_cat}, Event Name: %{event_type}, Device Names: (%{node}), Policy Name: %{policyname}, User: %{user_fname->} %{user_lname->} (%{mail_id})"); - -var all13 = all_match({ - processors: [ - dup2, - dup27, - part43, - ], - on_success: processor_chain([ - dup5, - dup7, - dup24, - dup25, - ]), -}); - -var msg13 = msg("CylancePROTECT:14", all13); - -var part44 = match("MESSAGE#13:CylancePROTECT:13/2", "nwparser.p0", "%{vendor_event_cat}, Event Name: %{event_type}, Device Name: %{node}, Agent Version: %{fld6}, IP Address: (%{saddr}, %{fld15}), MAC Address: (%{macaddr}, %{fld16}), Logged On Users: (%{username}), OS: %{p0}"); - -var all14 = all_match({ - processors: [ - dup2, - dup27, - part44, - dup28, - ], - on_success: processor_chain([ - dup5, - dup7, - dup24, - dup25, - ]), -}); - -var msg14 = msg("CylancePROTECT:13", all14); - -var part45 = match("MESSAGE#14:CylancePROTECT:16/2", "nwparser.p0", "%{vendor_event_cat}, Event Name: %{event_type}, Device Name: %{node}, Agent Version: %{fld1}, IP Address: (%{saddr}), MAC Address: (%{macaddr}), Logged On Users: (%{username}), OS: %{p0}"); - -var all15 = all_match({ - processors: [ - dup2, - dup27, - part45, - dup28, - ], - on_success: processor_chain([ - dup5, - dup7, - dup24, - dup25, - ]), -}); - -var msg15 = msg("CylancePROTECT:16", all15); - -var part46 = match("MESSAGE#15:CylancePROTECT:25/2", "nwparser.p0", "%{event_type}, Device Name: %{node}, File Path: %{directory}, Interpreter: %{application}, Interpreter Version: %{version}, Zone Names: %{info}, User Name: %{username}"); - -var all16 = all_match({ - processors: [ - dup2, - dup26, - part46, - ], - on_success: processor_chain([ - dup5, - dup7, - dup24, - dup25, - ]), -}); - -var msg16 = msg("CylancePROTECT:25", all16); - -var part47 = match("MESSAGE#16:CylancePROTECT:12/2", "nwparser.p0", "%{vendor_event_cat}, Event Name: %{event_type}, %{p0}"); - -var part48 = match("MESSAGE#16:CylancePROTECT:12/3_0", "nwparser.p0", "Device Name: %{node}, Zone Names:%{info}"); - -var part49 = match("MESSAGE#16:CylancePROTECT:12/3_1", "nwparser.p0", "Device Name: %{node}"); - -var part50 = match_copy("MESSAGE#16:CylancePROTECT:12/3_2", "nwparser.p0", "fld1"); - -var select15 = linear_select([ - part48, - part49, - part50, -]); - -var all17 = all_match({ - processors: [ - dup2, - dup27, - part47, - select15, - ], - on_success: processor_chain([ - dup5, - dup7, - dup24, - dup25, - ]), -}); - -var msg17 = msg("CylancePROTECT:12", all17); - -var part51 = match("MESSAGE#17:CylancePROTECT:17/0", "nwparser.payload", "Event Name:%{event_type}, Device Name:%{node}, File Path:%{filename}, Interpreter:%{application}, Interpreter Version:%{version}, Zone Names:%{info}, User Name: %{p0}"); - -var part52 = match("MESSAGE#17:CylancePROTECT:17/1_0", "nwparser.p0", "%{username}, Device Id: %{fld3}, Policy Name: %{policyname}"); - -var part53 = match_copy("MESSAGE#17:CylancePROTECT:17/1_1", "nwparser.p0", "username"); - -var select16 = linear_select([ - part52, - part53, -]); - -var all18 = all_match({ - processors: [ - part51, - select16, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg18 = msg("CylancePROTECT:17", all18); - -var part54 = match("MESSAGE#18:CylancePROTECT:18", "nwparser.payload", "Event Name:%{event_type}, Device Name:%{node}, Agent Version:%{fld1}, IP Address: (%{saddr}), MAC Address: (%{macaddr}), Logged On Users: (%{username}), OS:%{os}, Zone Names:%{info}", processor_chain([ - dup5, - dup18, - dup24, - dup25, -])); - -var msg19 = msg("CylancePROTECT:18", part54); - -var part55 = match("MESSAGE#19:CylancePROTECT:19/0", "nwparser.payload", "Event Name:%{event_type}, Device Name:%{node}, External Device Type:%{device}, External Device Vendor ID:%{fld2}, External Device Name:%{fld3}, External Device Product ID:%{fld4}, External Device Serial Number:%{serial_number}, Zone Names:%{p0}"); - -var part56 = match("MESSAGE#19:CylancePROTECT:19/1_0", "nwparser.p0", "%{info}, Device Id: %{fld5}, Policy Name: %{policyname}"); - -var select17 = linear_select([ - part56, - dup13, -]); - -var all19 = all_match({ - processors: [ - part55, - select17, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg20 = msg("CylancePROTECT:19", all19); - -var part57 = match("MESSAGE#20:CylancePROTECT:20/0", "nwparser.payload", "Event Name:%{event_type}, Message: %{p0}"); - -var part58 = match("MESSAGE#20:CylancePROTECT:20/1_0", "nwparser.p0", "The Device%{p0}"); - -var part59 = match("MESSAGE#20:CylancePROTECT:20/1_1", "nwparser.p0", "Device%{p0}"); - -var select18 = linear_select([ - part58, - part59, -]); - -var part60 = match("MESSAGE#20:CylancePROTECT:20/2", "nwparser.p0", ":%{node}was auto assigned to%{p0}"); - -var part61 = match("MESSAGE#20:CylancePROTECT:20/3_0", "nwparser.p0", " the%{p0}"); - -var part62 = match_copy("MESSAGE#20:CylancePROTECT:20/3_1", "nwparser.p0", "p0"); - -var select19 = linear_select([ - part61, - part62, -]); - -var part63 = match("MESSAGE#20:CylancePROTECT:20/4", "nwparser.p0", "%{}Zone:%{zone}, User:%{user_fname}"); - -var all20 = all_match({ - processors: [ - part57, - select18, - part60, - select19, - part63, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg21 = msg("CylancePROTECT:20", all20); - -var part64 = match("MESSAGE#21:CylancePROTECT:21", "nwparser.payload", "Event Name:%{event_type}, Device Name:%{node}, IP Address: (%{saddr}), File Name:%{filename}, Path:%{directory}, Drive Type:%{fld1}, SHA256:%{checksum}, MD5:%{fld3}, Status:%{event_state}, Cylance Score:%{fld4}, Found Date:%{fld51}, File Type:%{fld6}, Is Running:%{fld7}, Auto Run:%{fld8}, Detected By:%{fld9}, Zone Names: (%{info}), Is Malware:%{fld10}, Is Unique To Cylance:%{fld11}, Threat Classification:%{sigtype}", processor_chain([ - dup5, - dup18, - dup24, - dup25, - date_time({ - dest: "effective_time", - args: ["fld51"], - fmts: [ - [dG,dc("/"),dF,dc("/"),dW,dN,dc(":"),dU,dc(":"),dO,dQ], - ], - }), -])); - -var msg22 = msg("CylancePROTECT:21", part64); - -var part65 = match("MESSAGE#22:CylancePROTECT:22/0", "nwparser.payload", "Event Name:%{p0}"); - -var part66 = match("MESSAGE#22:CylancePROTECT:22/1_0", "nwparser.p0", " %{event_type}, Device Name: %{device}, IP Address: (%{saddr}), Action: %{action}, Process ID: %{process_id}, Process Name: %{process}, User Name: %{username}, Violation Type: %{signame}, Zone Names:%{p0}"); - -var part67 = match("MESSAGE#22:CylancePROTECT:22/1_1", "nwparser.p0", "%{event_type}, Device Name:%{node}, Zone Names:%{p0}"); - -var select20 = linear_select([ - part66, - part67, -]); - -var all21 = all_match({ - processors: [ - part65, - select20, - dup29, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg23 = msg("CylancePROTECT:22", all21); - -var part68 = match("MESSAGE#23:CylancePROTECT:23", "nwparser.payload", "Event Name:%{event_type}, Threat Class:%{sigtype}, Threat Subclass:%{fld1}, SHA256:%{checksum}, MD5:%{fld3}", processor_chain([ - dup5, - dup18, - dup24, - dup25, -])); - -var msg24 = msg("CylancePROTECT:23", part68); - -var part69 = match("MESSAGE#24:CylancePROTECT:24/0", "nwparser.payload", "Event Name:%{event_type}, Message: Provider:%{fld3}, Source IP:%{saddr}, User: %{user_fname->} %{user_lname->} (%{mail_id})%{p0}"); - -var part70 = match("MESSAGE#24:CylancePROTECT:24/1_0", "nwparser.p0", "#015%{}"); - -var part71 = match_copy("MESSAGE#24:CylancePROTECT:24/1_1", "nwparser.p0", ""); - -var select21 = linear_select([ - part70, - part71, -]); - -var all22 = all_match({ - processors: [ - part69, - select21, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg25 = msg("CylancePROTECT:24", all22); - -var part72 = match("MESSAGE#25:CylancePROTECT:26/0", "nwparser.payload", "Event Name:%{event_type}, Device Message: Device: %{device}; Policy Changed: %{fld4->} to '%{policyname}', User: %{user_fname->} %{user_lname->} (%{mail_id}), Zone Names:%{p0}"); - -var all23 = all_match({ - processors: [ - part72, - dup29, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg26 = msg("CylancePROTECT:26", all23); - -var part73 = match("MESSAGE#26:CylancePROTECT:27/0", "nwparser.payload", "Event Name:%{event_type}, Device Message: Device: %{device}; Zones Removed: %{p0}"); - -var part74 = match("MESSAGE#26:CylancePROTECT:27/1_0", "nwparser.p0", "%{fld4}; Zones Added: %{fld5},%{p0}"); - -var part75 = match("MESSAGE#26:CylancePROTECT:27/1_1", "nwparser.p0", "%{fld4},%{p0}"); - -var select22 = linear_select([ - part74, - part75, -]); - -var part76 = match("MESSAGE#26:CylancePROTECT:27/2", "nwparser.p0", "%{}User: %{user_fname->} %{user_lname->} (%{mail_id}), Zone Names:%{p0}"); - -var part77 = match("MESSAGE#26:CylancePROTECT:27/3_0", "nwparser.p0", "%{info->} Device Id: %{fld3}"); - -var select23 = linear_select([ - part77, - dup13, -]); - -var all24 = all_match({ - processors: [ - part73, - select22, - part76, - select23, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg27 = msg("CylancePROTECT:27", all24); - -var part78 = match("MESSAGE#27:CylancePROTECT:28/0", "nwparser.payload", "Event Name:%{event_type}, Device Message: Device: %{device->} %{p0}"); - -var part79 = match("MESSAGE#27:CylancePROTECT:28/1_0", "nwparser.p0", "Agent Self Protection Level Changed: '%{change_old}' to '%{change_new}', User: %{p0}"); - -var part80 = match("MESSAGE#27:CylancePROTECT:28/1_1", "nwparser.p0", "User: %{p0}"); - -var select24 = linear_select([ - part79, - part80, -]); - -var part81 = match("MESSAGE#27:CylancePROTECT:28/2", "nwparser.p0", "),%{mail_id->} (%{user_lname->} %{user_fname->} Zone Names: %{info->} Device Id: %{fld3}"); - -var all25 = all_match({ - processors: [ - part78, - select24, - part81, - ], - on_success: processor_chain([ - dup5, - dup18, - dup24, - dup25, - ]), -}); - -var msg28 = msg("CylancePROTECT:28", all25); - -var select25 = linear_select([ - msg1, - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, - msg18, - msg19, - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, - msg26, - msg27, - msg28, -]); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "CylancePROTECT": select25, - }), -]); - -var part82 = match("MESSAGE#0:CylancePROTECT:01/0", "nwparser.payload", "%{fld13->} %{fld14->} %{p0}"); - -var part83 = match("MESSAGE#0:CylancePROTECT:01/1_0", "nwparser.p0", "[%{fld2}] Event Type: AuditLog, Event Name: %{p0}"); - -var part84 = match("MESSAGE#0:CylancePROTECT:01/1_1", "nwparser.p0", "%{fld5->} Event Type: AuditLog, Event Name: %{p0}"); - -var part85 = match("MESSAGE#1:CylancePROTECT:02/2", "nwparser.p0", "%{event_type}, Message: %{p0}"); - -var part86 = match("MESSAGE#8:CylancePROTECT:09/1_0", "nwparser.p0", "[%{fld2}] Event Type: ScriptControl, Event Name: %{p0}"); - -var part87 = match("MESSAGE#8:CylancePROTECT:09/1_1", "nwparser.p0", "%{fld5->} Event Type: ScriptControl, Event Name: %{p0}"); - -var part88 = match_copy("MESSAGE#8:CylancePROTECT:09/3_1", "nwparser.p0", "info"); - -var part89 = match("MESSAGE#11:CylancePROTECT:15/1_0", "nwparser.p0", "[%{fld2}] Event Type: %{p0}"); - -var part90 = match("MESSAGE#11:CylancePROTECT:15/1_1", "nwparser.p0", "%{fld5->} Event Type: %{p0}"); - -var part91 = match("MESSAGE#13:CylancePROTECT:13/3_0", "nwparser.p0", "%{os->} Zone Names: %{info}"); - -var part92 = match_copy("MESSAGE#13:CylancePROTECT:13/3_1", "nwparser.p0", "os"); - -var part93 = match("MESSAGE#22:CylancePROTECT:22/2_0", "nwparser.p0", "%{info}, Device Id: %{fld3}"); - -var select26 = linear_select([ - dup3, - dup4, -]); - -var select27 = linear_select([ - dup11, - dup12, -]); - -var select28 = linear_select([ - dup14, - dup15, -]); - -var select29 = linear_select([ - dup16, - dup17, -]); - -var select30 = linear_select([ - dup19, - dup13, -]); diff --git a/x-pack/filebeat/module/cylance/protect/ingest/pipeline.yml b/x-pack/filebeat/module/cylance/protect/ingest/pipeline.yml deleted file mode 100644 index a3b09859d58..00000000000 --- a/x-pack/filebeat/module/cylance/protect/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for CylanceProtect - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/cylance/protect/manifest.yml b/x-pack/filebeat/module/cylance/protect/manifest.yml deleted file mode 100644 index 58c1bc077be..00000000000 --- a/x-pack/filebeat/module/cylance/protect/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["cylance.protect", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9529 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/cylance/protect/test/generated.log b/x-pack/filebeat/module/cylance/protect/test/generated.log deleted file mode 100644 index 2649c0b66f4..00000000000 --- a/x-pack/filebeat/module/cylance/protect/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -29-January-2016 06:09:59 high boNemoe4402.www.invalid dolore <abo 2016-1-29T6:09:59.squira nostrud4819.mail.test CylancePROTECT mqui nci [billoi] Event Type: AuditLog, Event Name: ZoneAdd, Message: Policy Assigned:orev; Devices: pisciv , User: uii umexe (estlabo) -2016-2-12T1:12:33.olupt volup208.invalid CylancePROTECT eosquir orsi [nulapari] Event Type: AuditLog, Event Name: LoginSuccess, Message: Devices: vol, User: luptat isiutal (moenimi) -26-Feb-2016 8:15:08 very-high anonnu410.internal.home aqu <squame 26T20:15:08.ntex eius6159.www5.localhost CylancePROTECT Event Name:Alert, Device Message: Device: aer User: ),lupt (tia oloremqu Zone Names: temvel Device Id: iatu -2016-3-12T3:17:42.ceroinBC ratvolup497.www.corp CylancePROTECT ionofde con [uia] Event Type: AuditLog, Event Name: SystemSecurity, Message: ommodic, User: mipsu consec (taliquip) -2016-3-26T10:20:16.gelit tatno5625.api.local CylancePROTECT taev roidents [oluptas] Event Type: AuditLog, Event Name: Alert, Message: Source: taliqu; SHA256: ommod; Reason: failure, User: tur aperi (iveli) -uatDuis 2016-4-9T5:22:51.ude maveniam1399.mail.lan CylancePROTECT siutaliq exercit [tempor] Event Type: omnis, Event Name: SystemSecurity, Device Name: eip, Agent Version: lupta, IP Address: (10.124.61.119), MAC Address: (01:00:5e:dc:bb:8b), Logged On Users: (occ), OS: ect Zone Names: reetdolo -24-Apr-2016 12:25:25 low lor340.mail.local natura <ima 24T00:25:25.tanimi nimadmin6499.local CylancePROTECT Event Name:Device Policy Assigned, Device Message: Device: dexe User: ),urerep (aquaeab liqu Zone Names: lorem Device Id: emq -ari 2016-5-8T7:27:59.equun suntinc4934.www5.test CylancePROTECT ipis gelits [tatevel] Event Type: AuditLog, Event Name: ThreatUpdated, Message: Policy: uptatev; SHA256: uovol, User: )dmi (olab mquisnos -22-May-2016 14:30:33 medium tvol457.internal.local inim <roinBCSe 2016-5-22T2:30:33.onse tae1382.mail.localhost CylancePROTECT oluptate ofdeF tion Event Type: orsitame, Event Name: threat_quarantined, Threat Class: lit, Threat Subclass: iam, SHA256: qua, MD5: umdo -2016-6-5T9:33:08.eniam reetdolo2451.www.example CylancePROTECT rumet oll [erc] Event Type: ScriptControl, Event Name: SystemSecurity, Device Name: llam, File Path: aspern, Interpreter: itlabori, Interpreter Version: 1.2344, Zone Names: ollit, User Name: usan -olo 2016-6-20T4:35:42.uaera sitas4259.mail.corp CylancePROTECT atquovo iumto aboreetd Event Type: AuditLog, Event Name: ZoneAddDevice, Message: Zone: dun; Policy: enim; Value: saute, User: vel quu (undeo) -2016-7-4T11:38:16.isqu uis7612.www5.domain CylancePROTECT llumquid tation [ips] Event Type: emeumfug, Event Name: Registration, emporinc -cup 2016-7-18T6:40:50.boNemoen uid7309.api.domain CylancePROTECT uradi aborumSe luptat Event Type: AuditLog, Event Name: SyslogSettingsSave, Message: Policy: antiumto, User: strude ctetura (usmod) -2-Aug-2016 1:43:25 high fugit7668.www5.invalid lupt <qua 2T01:43:25.luptatev admi3749.api.lan CylancePROTECT Event Name:DeviceRemove, Device Message: Device: tinvol; Zones Removed: dolore; Zones Added: abor, User: iqui etc (etM), Zone Names:nimadmin Device Id: ditautfu -2016-8-16T8:45:59.ostr rudexerc703.internal.host CylancePROTECT itaut imaven [liqua] Event Type: ScriptControl, Event Name: fullaccess, Device Name: onproide, File Path: Nemoen, Interpreter: tfug, Interpreter Version: 1.5383 (ccu), Zone Names: urE, User Name: isaute -eomnisis 2016-8-30T3:48:33.mqui civeli370.www5.local CylancePROTECT sunt stl tdolorem Event Type: AuditLog, Event Name: Alert, Message: The Device: picia was auto assigned to the Zone: IP Address: Fake Devices, User: mUtenima emaperi ()tame -September 2016/09/13 22:51:07 ivelits712.api.example CylancePROTECT Event Type: AppControl, etdolo inv [agnaali] Event Type: AppControl, Event Name: threat_found, Device Name: sequatur, IP Address: (10.199.98.186), Action: cancel, Action Type: nihi, File Path: Lor, SHA256: itecto, Zone Names: erc -olupt 2016-9-28T5:53:42.modoco estqu1709.internal.example CylancePROTECT ostrume molest [upt] Event Type: Threat, Event Name: LoginSuccess, Device Name: uasia, IP Address: (10.64.70.5), File Name: ici, Path: giatquov, Drive Type: eritquii, SHA256: dexeac, MD5: iscinge, Status: atvol, Cylance Score: 145.898000, Found Date: uames, File Type: tati, Is Running: utaliqu, Auto Run: oriosamn, Detected By: deFinibu, Zone Names: iadese, Is Malware: imidest, Is Unique To Cylance: emagnama, Threat Classification: eprehend -2016-10-12T12:56:16.suntinc xeac7155.www.localdomain CylancePROTECT taliq intoccae [ents] Event Type: pida, Event Name: Alert, Device Name: idolor, Agent Version: emeumfu, IP Address: (10.143.239.210), MAC Address: (01:00:5e:93:1c:9f), Logged On Users: (oinBCSe), OS: mnisist Zone Names: sedd -ipitla 2016-10-26T7:58:50.quae maccusa5126.api.domain CylancePROTECT idex xerci [aqu] Event Type: ExploitAttempt, Event Name: Alert, Device Name: olorema, IP Address: (10.32.143.134), Action: accept, Process ID: 2289, Process Name: aliqu.exe, User Name: olupta, Violation Type: mipsumd, Zone Names: eFinib -10-Nov-2016 3:01:24 low eav3687.internal.local siar <iamquis 10T03:01:24.quirat llu4718.localhost CylancePROTECT Event Name:DeviceEdit, Device Name:conseq, External Device Type:oidentsu, External Device Vendor ID:atiset, External Device Name:atu, External Device Product ID:umexerci, External Device Serial Number:ern, Zone Names:psaquae -Nov 24 10:03:59 doloremi7402.www.test CylancePROTECT Event Type:stquidol, Event Name:DeviceRemove, Device Message: Device: leumiu; Policy Changed: namali to 'taevit', User: rinrepre etconse (tincu), Zone Names:ari, Device Id: exercit -8-December-2016 17:06:33 very-high occae1180.internal.localhost aquaeabi <adeseru 2016-12-8T5:06:33.emoe eaq908.api.home CylancePROTECT itame intoc [oluptas] Event Type: tNequepo, Event Name: ZoneAddDevice, Device Name: luptasn, Zone Names:equat -ihilmole 2016-12-23T12:09:07.eriamea amre146.mail.host CylancePROTECT pisciv iquidex radipisc Event Type: AuditLog, Event Name: ZoneAddDevice, Message: Policy: nti; SHA256: abi; Category: sectetur, User: )uioffi (oru temqu -ommodico 2017-1-6T7:11:41.quatD mcolab379.internal.home CylancePROTECT tsedqu agnid [proide] Event Type: ScriptControl, Event Name: DeviceRemove, Device Name: tper, File Path: olor, Interpreter: Neque, Interpreter Version: 1.4129 (xerc), Zone Names: iutali, User Name: fdeFi -Jan 20 2:14:16 tasuntex5037.www.corp CylancePROTECT Event Type:boN, Event Name:threat_quarantined, Device Name:ectio, Agent Version:dutper, IP Address: (10.237.205.140), MAC Address: (01:00:5e:3f:c4:6c), Logged On Users: (uames), OS:iduntu, Zone Names:veniam -3-Feb-2017 9:16:50 very-high reme622.mail.example isnisiu <tsu 3T21:16:50.tcons sciun4694.api.lan CylancePROTECT Event Name:LoginSuccess, Device Message: Device: nsect User: ),idata (rumwritt magnid Zone Names: enderit Device Id: untex -paquioff 2017-2-18T4:19:24.mquisnos maven3758.www.invalid CylancePROTECT labor didunt uptatema Event Type: ExploitAttempt, Event Name: DeviceEdit, Device Name: udan, IP Address: (10.74.104.215), Action: cancel, Process ID: 7410, Process Name: mveleu.exe, User Name: nofdeFin, Violation Type: sequam, Zone Names: temvel -4-Mar-2017 11:21:59 medium tvolu3997.mail.home eiu <autfu 4T11:21:59.gnaaliq mni7200.mail.localdomain CylancePROTECT Event Name:pechange, Device Name:idolor, Zone Names:uisau, Device Id: eleum -Mar 18 6:24:33 ate4627.localdomain CylancePROTECT Event Type:officiad, Event Name:Device Policy Assigned, Message: The Device:quinescwas auto assigned to Zone:madmi, User:tur -2-April-2017 01:27:07 very-high orem6702.invalid tev <ntocca 2017-4-2T1:27:07.ostru ntoccae1705.internal.invalid CylancePROTECT temquiav equatu [upta] Event Type: ScriptControl, Event Name: Alert, Device Name: sBon, File Path: orro, Interpreter: tae, Interpreter Version: 1.3212, Zone Names: tlab, User Name: aperiame -16-Apr-2017 8:29:41 high tobea2364.internal.localhost itinvol <fugiatn 16T08:29:41.docon etconsec6708.internal.invalid CylancePROTECT Event Name:PolicyAdd, Device Name:ersp, External Device Type:tquov, External Device Vendor ID:diconseq, External Device Name:inven, External Device Product ID:osquira, External Device Serial Number:tes, Zone Names:mquame -2017-4-30T3:32:16.squirati Sedutp7428.internal.home CylancePROTECT utlabor itessequ [porro] Event Type: AuditLog, Event Name: PolicyAdd, Message: Zone: iquipe; Policy: itempor; Value: quin, User: upida tvolupt (eufugi) -uamni 2017-5-14T10:34:50.ctet ati4639.www5.home CylancePROTECT archite loreme [untu] Event Type: AuditLog, Event Name: Alert, Message: Device: ven; User: con nisist (usmodte) -2017-5-29T5:37:24.eturadi torever662.www5.home CylancePROTECT quam sumdolor [meaqueip] Event Type: AuditLog, Event Name: PolicyAdd, Message: The Device: pexe was auto assigned to the Zone: IP Address: 10.70.168.240, User: amcol adeser ()oin -12-June-2017 12:39:58 medium meius3932.internal.example ccaeca <uptate 2017-6-12T12:39:58.amc cusant1701.api.localdomain CylancePROTECT siutaliq dutp psaquaea Event Type: taevita, Event Name: DeviceRemove, Device Name: siut, Agent Version: tconsect, IP Address: (10.190.175.158), MAC Address: (01:00:5e:45:8b:97), Logged On Users: (ditemp), OS: edqui -26-June-2017 19:42:33 very-high rnatu2805.www.home enderi <odoconse 2017-6-26T7:42:33.quamqua eacommod1930.internal.lan CylancePROTECT tpersp stla uptatema Event Type: AuditLog, Event Name: fullaccess, Message: Device: uradi; SHA256: tot; Category: llamco, User: )nea (psum tasnulap -2017-7-11T2:45:07.oremipsu emeumfug4387.internal.lan CylancePROTECT uidol litani [utodita] Event Type: AuditLog, Event Name: Alert, Message: Device: untincul; SHA256: iduntu, User: )ccaeca (niamq lapariat -uat 2017-7-25T9:47:41.tiaec rumwrit764.www5.local CylancePROTECT edquiac urerepr [eseru] Event Type: DeviceControl, Event Name: DeviceRemove, Device Name: etMal, External Device Type: qua, External Device Vendor ID: rsita, External Device Name: ate, External Device Product ID: ipsamvo, External Device Serial Number: onula, Zone Names: miu -Aug 8 4:50:15 mex2054.mail.corp CylancePROTECT Event Type:luptat, Event Name:SyslogSettingsSave, Message: Provider:ica, Source IP:10.13.66.97, User: dicta taedicta (ritt)#015 -2017-8-22T11:52:50.dictasun veniamqu7284.mail.invalid CylancePROTECT nte mvel nof Event Type: AuditLog, Event Name: DeviceEdit, Message: The Device: tetur was auto assigned to the Zone: IP Address: Fake Devices, User: ()xce -6-September-2017 06:55:24 high isiu5733.api.domain etdolor <xeaco 2017-9-6T6:55:24.nvolupt oremi1485.api.localhost CylancePROTECT iosa boNemoe [onsequ] Event Type: AuditLog, Event Name: threat_quarantined, Message: SHA256: amvolupt; Reason: success, User: atisund xea (ites) -eri 2017-9-20T1:57:58.quunt olori416.api.test CylancePROTECT elit cidunt plica Event Type: ExploitAttempt, Event Name: Alert, Device Name: exeaco, IP Address: (10.31.190.145), Action: cancel, Process ID: 5530, Process Name: accusant.exe, User Name: onse, Violation Type: admin, Zone Names: stenatu -4-Oct-2017 9:00:32 high nvol6269.internal.local tla <nimid 4T21:00:32.dat periam126.api.host CylancePROTECT Event Name:threat_found, Threat Class:rExc, Threat Subclass:iusmo, SHA256:tame, MD5:naaliq -19-October-2017 04:03:07 medium toccaec7645.www5.home psaqua <itationu 2017-10-19T4:03:07.proident maliquam2147.internal.home CylancePROTECT lores ritati orisni Event Type: DeviceControl, Event Name: PolicyAdd, Device Name: estl, External Device Type: sitam, External Device Vendor ID: orem, External Device Name: rcit, External Device Product ID: llamco, External Device Serial Number: atu, Zone Names: untincul -iuntNe 2017-11-2T11:05:41.atise tate6578.api.localdomain CylancePROTECT emvele isnost [olorem] Event Type: Threat, Event Name: PolicyAdd, Device Name: yCiceroi, IP Address: (10.252.165.146), File Name: iquamqua, Path: sit, Drive Type: rumSect, SHA256: ita, MD5: vitaed, Status: exeaco, Cylance Score: 51.523000, Found Date: mven, File Type: olorsit, Is Running: tore, Auto Run: elits, Detected By: consequa, Zone Names: turadip, Is Malware: tatevel, Is Unique To Cylance: boreetdo, Threat Classification: undeom -2017-11-16T6:08:15.uov itlab6956.mail.local CylancePROTECT loremqu tetur amvo Event Type: siuta, Event Name: threat_changed, Device Name: ommodo, Agent Version: uptat, IP Address: (10.105.46.101, tatione), MAC Address: (01:00:5e:de:32:2c, ori), Logged On Users: (tconsect), OS: rum -2017-12-1T1:10:49.ugiatn midestl1919.host CylancePROTECT cingel modocon [ipsu] Event Type: ntNeq, Event Name: Device Policy Assigned, Device Name: aUt, Agent Version: boNem, IP Address: (10.124.88.222), MAC Address: (01:00:5e:f9:78:c2), Logged On Users: (onu), OS: liquaUte -ria 2017-12-15T8:13:24.atDu nsec923.internal.local CylancePROTECT agnaaliq tlaboree norumet Event Type: ExploitAttempt, Event Name: DeviceEdit, Device Name: mod, IP Address: (10.28.120.149), Action: deny, Process ID: 3916, Process Name: tinvolup.exe, User Name: tsed, Violation Type: inv, Zone Names: rroq -2017-12-29T3:15:58.mipsamvo eiusmod3517.internal.invalid CylancePROTECT oreveri ehende [eaqueip] Event Type: AuditLog, Event Name: ZoneAddDevice, Message: Device: olup; SHA256: labor, User: )dol (sciun metcons -12-January-2018 22:18:32 high asnu3806.api.lan tamet <ationul 2018/01/12T22:18:32.mquisn queips4947.mail.example CylancePROTECT molestia quir eavolup Event Type: AppControl, Event Name: Registration, Device Name: labore, IP Address: (10.165.16.231), Action: accept, Action Type: uto, File Path: iuntNequ, SHA256: esseq, Zone Names: aincidun -27-January-2018 05:21:06 low oloreseo5039.test derit <dolor 2018-1-27T5:21:06.econs ntexpl3889.www.home CylancePROTECT yCic nder [mdolore] Event Type: Cic, Event Name: DeviceRemove, Device Name: saqu, Agent Version: iscive, IP Address: (10.156.34.19), MAC Address: (01:00:5e:54:ab:3f), Logged On Users: (imveni), OS: ariaturE Zone Names: stquid -ree 2018-2-10T12:23:41.saquaea ation6657.www.home CylancePROTECT iatqu lorsi repreh Event Type: AuditLog, Event Name: Registration, Message: sitamet, User: utlabo tetur (tionula) -24-Feb-2018 7:26:15 very-high idolor3916.www5.home tas <tasun 24T19:26:15.duntutla ntium4450.www5.localdomain CylancePROTECT Event Name:DeviceRemove, Device Name:vol, Agent Version:oremquel, IP Address: (10.22.94.10), MAC Address: (01:00:5e:ee:e8:77), Logged On Users: (ssusci), OS:animid, Zone Names:mpo -llam 2018-3-11T2:28:49.cti aparia1179.www.localdomain CylancePROTECT rever ore offici Event Type: AuditLog, Event Name: DeviceEdit, Message: Devices: metco, User: acom ceroinB (nim) -25-March-2018 09:31:24 medium taliqui5348.mail.localdomain loremag <iatqu 2018-3-25T9:31:24.inBCSedu erspi5757.local CylancePROTECT suntex iacons [occaec] Event Type: DeviceControl, Event Name: LoginSuccess, Device Name: uov, External Device Type: quaeab, External Device Vendor ID: fici, External Device Name: imve, External Device Product ID: quide, External Device Serial Number: quaU, Zone Names: undeomni -liquid 2018-4-8T4:33:58.enim Finibus1411.www5.corp CylancePROTECT xea taed umdolo Event Type: AuditLog, Event Name: fullaccess, Message: Policy Assigned:rroqu; Devices: dquiaco , User: nibus vitaed (ser) -Apr 22 11:36:32 upt7879.www5.example CylancePROTECT Event Type:idolo, Event Name:threat_found, Device Message: Device: edolo; Zones Removed: ugiatquo; Zones Added: ntium, User: uptate lloinven (econs), Zone Names:lmolesti Device Id: apariatu -May 2018/05/07 06:39:06 erspi4926.www5.test CylancePROTECT Event Type: AppControl, incidid quin [autemv] Event Type: AppControl, Event Name: PolicyAdd, Device Name: fugits, IP Address: (10.153.34.43), Action: allow, Action Type: acommo, File Path: isi, SHA256: culpaq, Zone Names: saute -2018-5-21T1:41:41.abor magnid3343.home CylancePROTECT tesseq niam [pernat] Event Type: DeviceControl, Event Name: threat_found, Device Name: gitse, External Device Type: ugitse, External Device Vendor ID: quiineav, External Device Name: billoinv, External Device Product ID: sci, External Device Serial Number: col, Zone Names: obea -4-Jun-2018 8:44:15 high uptatem4483.localhost inrepr <umdolors 4T20:44:15.dolori asperna7623.www.home CylancePROTECT Event Name:ThreatUpdated, Message: Device:dexewas auto assigned to Zone:tat, User:onproide -riosa 2018-6-19T3:46:49.tNe pisc3553.internal.home CylancePROTECT rautod olest eataev Event Type: ExploitAttempt, Event Name: DeviceEdit, Device Name: ritati, IP Address: (10.43.110.203), Action: allow, Process ID: 1359, Process Name: nim.exe, User Name: ame, Violation Type: amvolu, Zone Names: mip -3-July-2018 10:49:23 medium iame4937.local tiumd <mexer 2018/07/03T10:49:23.estla uipexe7153.api.corp CylancePROTECT saqu remips illoi Event Type: AppControl, Event Name: ZoneAdd, Device Name: abori, IP Address: (10.127.20.244), Action: block, Action Type: uelauda, File Path: ema, SHA256: odi, Zone Names: ptatems -nde 2018-7-17T5:51:58.abillo undeom845.www5.example CylancePROTECT quaer eetdo [tlab] Event Type: ScriptControl, Event Name: LoginSuccess, Device Name: liq, File Path: seddoeiu, Interpreter: nse, Interpreter Version: 1.3421, Zone Names: quira, User Name: tassita -Aug 1 12:54:32 atis6201.internal.invalid CylancePROTECT Event Type:nisiut, Event Name:threat_changed, Message: Device:quirawas auto assigned to Zone:rror, User:tatema -15-August-2018 07:57:06 low tperspic7591.www.lan ict <tem 2018-8-15T7:57:06.mestq ura675.mail.localdomain CylancePROTECT eleumiu uei Nequepo Event Type: DeviceControl, Event Name: DeviceRemove, Device Name: seddo, External Device Type: uam, External Device Vendor ID: orumSec, External Device Name: nisiuta, External Device Product ID: stiaecon, External Device Serial Number: dol, Zone Names: sumquiad -29-August-2018 14:59:40 high oeni179.api.localhost gna <lumqu 2018-8-29T2:59:40.onulamco ons5050.mail.test CylancePROTECT unt tass [tiumdol] Event Type: Threat, Event Name: threat_quarantined, Device Name: mquiad, IP Address: (10.48.209.115), File Name: psa, Path: nculpaq, Drive Type: reseosqu, SHA256: sequat, MD5: lor, Status: ccaec, Cylance Score: 75.498000, Found Date: ommo, File Type: iame, Is Running: laudanti, Auto Run: umiurer, Detected By: rere, Zone Names: cta, Is Malware: aevi, Is Unique To Cylance: uameiusm, Threat Classification: adm -12-September-2018 22:02:15 medium mnihilm1903.internal.host ditautf <ori 2018-9-12T10:02:15.uamqu olori4584.mail.domain CylancePROTECT sunt autfugit emUte Event Type: AuditLog, Event Name: ThreatUpdated, Message: Zone: nturmag; Policy: tura; Value: osquirat, User: equat aliquid (usantiu) -27-Sep-2018 5:04:49 very-high trudex4443.www5.localhost lor <eseruntm 27T05:04:49.lpaquiof oloreeu7597.mail.home CylancePROTECT Event Name:PolicyAdd, Device Name:nula, Agent Version:quiacons, IP Address: (10.7.99.47), MAC Address: (01:00:5e:e8:41:ae), Logged On Users: (evolupta), OS:teturadi, Zone Names:ditau -hend 2018-10-11T12:07:23.eacommo ueip5847.api.test CylancePROTECT umd sciveli [dolorem] Event Type: sed, Event Name: Device Updated, Threat Class: Nemoenim, Threat Subclass: usm, SHA256: labori, MD5: porai -ostr 2018-10-25T7:09:57.sec uid3520.www.home CylancePROTECT eFini ectob [mrema] Event Type: ScriptControl, Event Name: SystemSecurity, Device Name: prehend, File Path: eufug, Interpreter: roquisq, Interpreter Version: 1.989 (est), Zone Names: civelits, User Name: ici -Nov 9 2:12:32 miurerep3693.mail.localhost CylancePROTECT Event Type:iduntu, Event Name:SyslogSettingsSave, Device Name:inibusB, Zone Names:nostrud -Nov 23 9:15:06 esse3795.www.host CylancePROTECT Event Type:pariatur, Event Name:SyslogSettingsSave, Message: The Device:imaveniawas auto assigned to Zone:expli, User:ugiat -bore 2018-12-7T4:17:40.ptate teir7585.www5.localdomain CylancePROTECT quu xeac [llitanim] Event Type: AuditLog, Event Name: SystemSecurity, Message: Devices: oreverit, User: scip Finibus (Utenimad) -Dec 21 11:20:14 hen1901.example CylancePROTECT Event Type:ali, Event Name:SyslogSettingsSave, Device Name:quunt, External Device Type:itasp, External Device Vendor ID:qui, External Device Name:equeporr, External Device Product ID:met, External Device Serial Number:volup, Zone Names:ptate, Device Id: entsu, Policy Name: conse -Jan 5 6:22:49 mag4267.www.test CylancePROTECT Event Type:atura, Event Name:Alert, Device Message: Device: oreeu User: ),nvo (iamqui tassita Zone Names: colabori Device Id: imidestl -2019-1-19T1:25:23.minimve serrorsi1096.www5.localdomain CylancePROTECT lamco cit [siar] Event Type: AuditLog, Event Name: ZoneAddDevice, Message: The Device: reetdo was auto assigned to the Zone: IP Address: Fake Devices, User: ()ever -quiav 2019-2-2T8:27:57.mse prehen4807.mail.invalid CylancePROTECT liqua ariatur [labo] Event Type: DeviceControl, Event Name: SystemSecurity, Device Name: remq, External Device Type: unt, External Device Vendor ID: tla, External Device Name: arch, External Device Product ID: lite, External Device Serial Number: ugia, Zone Names: meum -Feb 17 3:30:32 nvolupta126.www.domain CylancePROTECT Event Type:quas, Event Name:threat_found, Device Name:orp, File Path:ender, Interpreter:dico, Interpreter Version:1.5848, Zone Names:Utenima, User Name: olore -3-March-2019 10:33:06 medium radip4253.www.corp gna <quamnih 2019-3-3T10:33:06.asnulap yCiceroi5998.mail.home CylancePROTECT inc tect uiad Event Type: DeviceControl, Event Name: DeviceRemove, Device Name: roinBCSe, External Device Type: maperiam, External Device Vendor ID: mSec, External Device Name: smoditem, External Device Product ID: tatisetq, External Device Serial Number: uidolo, Zone Names: umdolore -2019-3-17T5:35:40.abori sit1400.www.lan CylancePROTECT ames amni [tatio] Event Type: AuditLog, Event Name: ZoneAdd, Message: Zone: ntsunti; Policy: borios; Value: ani, User: uid idatat (onev) -iosamni 2019-4-1T12:38:14.idu sis3986.internal.lan CylancePROTECT tsedquia its umdolor Event Type: isiu, Event Name: Device Policy Assigned, Device Name: mmodi, Agent Version: snostr, IP Address: (10.232.90.3), MAC Address: (01:00:5e:e6:a6:a2), Logged On Users: (midestl), OS: nci -hilmole 2019-4-15T7:40:49.sequ sectetu7182.localdomain CylancePROTECT dolor lorumwri [amnihil] Event Type: orissus, Event Name: Device Updated, uido -2019-4-29T2:43:23.itse officiad4982.www5.domain CylancePROTECT lumqui quiavolu [upta] Event Type: AuditLog, Event Name: ZoneAdd, Message: Device: umtota; User: etdolore magnaa (sumquiad) -2019-5-13T9:45:57.Duisa consequa1486.internal.localdomain CylancePROTECT aevitaed byCic [leumiur] Event Type: ptatemse, Event Name: pechange, Threat Class: quaeratv, Threat Subclass: involu, SHA256: tobeata, MD5: nesciun -onorumet 2019-5-28T4:48:31.ptatema eavolup6981.www5.example CylancePROTECT psaquaea rchit psumq Event Type: DeviceControl, Event Name: threat_changed, Device Name: lum, External Device Type: xerc, External Device Vendor ID: ctetura, External Device Name: msequ, External Device Product ID: nvol, External Device Serial Number: enimadmi, Zone Names: tateveli -2019-6-11T11:51:06.oremip its6443.mail.example CylancePROTECT natuserr ostrudex [nse] Event Type: miurere, Event Name: fullaccess, Device Name: tlabo, Agent Version: tatemse, IP Address: (10.139.80.71), MAC Address: (01:00:5e:bc:c1:21), Logged On Users: (orem), OS: eniamqui -25-June-2019 18:53:40 high tnulapa7580.www.domain adeser <doeiu 2019-6-25T6:53:40.onsectet dentsunt6061.www5.home CylancePROTECT tobeata imven onnumqua Event Type: quioff, Event Name: SyslogSettingsSave, Device Names: (upt), Policy Name: atatnonp, User: nvol dtemp (mquis) -10-July-2019 01:56:14 medium midest133.www5.example tocca <ntor 2019-7-10T1:56:14.oinBCSed oid218.api.invalid CylancePROTECT roquisqu ariat midestl Event Type: AuditLog, Event Name: SyslogSettingsSave, Message: mcorpori, User: mqu pteursi (orsitam) -totamre 2019-7-24T8:58:48.rpo velites4233.internal.home CylancePROTECT uisaute uun end Event Type: odocons, Event Name: Alert, Threat Class: asp, Threat Subclass: dexercit, SHA256: amn, MD5: itessequ -7-August-2019 16:01:23 low sumd3215.test aUtenima <taevi 2019-8-7T4:01:23.uames tconsec7604.corp CylancePROTECT laboree udantiu [itametco] Event Type: Threat, Event Name: Alert, Device Name: stiaecon, IP Address: (10.223.246.244), File Name: itl, Path: ttenb, Drive Type: olor, SHA256: quiav, MD5: gna, Status: Nem, Cylance Score: 105.845000, Found Date: lors, File Type: oluptat, Is Running: enimad, Auto Run: tis, Detected By: qua, Zone Names: con, Is Malware: tore, Is Unique To Cylance: sequatD, Threat Classification: ercitati -21-Aug-2019 11:03:57 high oeiusmo5035.api.local tconse <tseddoei 21T23:03:57.teursint etMa3452.www5.test CylancePROTECT Event Name:threat_found, Device Name:nturmag, File Path:uredol, Interpreter:maliqua, Interpreter Version:1.4613, Zone Names:mquia, User Name: omnisi, Device Id: etMalor, Policy Name: mco -5-September-2019 06:06:31 high taspe1205.mail.domain cti <nse 2019-9-5T6:06:31.mveniam tuser2694.internal.invalid CylancePROTECT tlaboru aeabillo [ciad] Event Type: ugiatqu, Event Name: threat_found, Device Names: (turveli), Policy Name: isciv, User: natus boreet (luptasnu) -edqu 2019-9-19T1:09:05.tationu gnaaliq5240.api.test CylancePROTECT nula ameaquei [gnama] Event Type: esciun, Event Name: pechange, Threat Class: ratvo, Threat Subclass: ntutl, SHA256: volupt, MD5: ine -3-Oct-2019 8:11:40 low ditaut33.mail.localhost iumdo <mea 3T20:11:40.ssec illum2625.test CylancePROTECT Event Name:LoginSuccess, Threat Class:iaeconse, Threat Subclass:uisa, SHA256:nimadmin, MD5:tdolo -18-October-2019 03:14:14 high porissus1225.www5.corp ddoe <ured 2019-10-18T3:14:14.ctetu oreeu6419.www.corp CylancePROTECT cul iinea snos Event Type: AuditLog, Event Name: PolicyAdd, Message: Device: moenimip; User: uames tium (ianonn) -2019-11-1T10:16:48.tiset sci333.mail.home CylancePROTECT doloreeu lors eumfu Event Type: docons, Event Name: PolicyAdd, Device Names: (eumf), Policy Name: roquisq, User: uasi maveniam (uis) -imi 2019-11-15T5:19:22.animi edutpers6452.api.host CylancePROTECT ntiumt sumquia vento Event Type: sitv, Event Name: LoginSuccess, Threat Class: com, Threat Subclass: rep, SHA256: mveni, MD5: aquae -30-November-2019 00:21:57 low iaturE3103.api.domain aturve <iatu 2019/11/30T00:21:57.use nulamc5617.mail.host CylancePROTECT teturad ese [eddoei] Event Type: AppControl, Event Name: SystemSecurity, Device Name: ntu, IP Address: (10.134.137.205), Action: deny, Action Type: duntut, File Path: emporin, SHA256: oreseosq, Zone Names: etquasia -2019-12-14T7:24:31.cinge tatem4713.internal.host CylancePROTECT elites pariat [nimip] Event Type: AuditLog, Event Name: threat_found, Message: Zone: usci; Policy: unturmag; Value: dexeaco, User: lupta ura (oreeufug) diff --git a/x-pack/filebeat/module/cylance/protect/test/generated.log-expected.json b/x-pack/filebeat/module/cylance/protect/test/generated.log-expected.json deleted file mode 100644 index 1ea82991135..00000000000 --- a/x-pack/filebeat/module/cylance/protect/test/generated.log-expected.json +++ /dev/null @@ -1,3554 +0,0 @@ -[ - { - "event.action": "ZoneAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "29-January-2016 06:09:59 high boNemoe4402.www.invalid dolore <abo 2016-1-29T6:09:59.squira nostrud4819.mail.test CylancePROTECT mqui nci [billoi] Event Type: AuditLog, Event Name: ZoneAdd, Message: Policy Assigned:orev; Devices: pisciv , User: uii umexe (estlabo)", - "fileset.name": "protect", - "host.name": "nostrud4819.mail.test", - "input.type": "log", - "log.offset": 0, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "nostrud4819.mail.test" - ], - "rsa.identity.firstname": "uii", - "rsa.identity.lastname": "umexe", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "ZoneAdd", - "rsa.misc.mail_id": "estlabo", - "rsa.misc.node": "pisciv", - "rsa.misc.policy_name": "orev", - "rsa.network.alias_host": [ - "nostrud4819.mail.test" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "LoginSuccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2016-2-12T1:12:33.olupt volup208.invalid CylancePROTECT eosquir orsi [nulapari] Event Type: AuditLog, Event Name: LoginSuccess, Message: Devices: vol, User: luptat isiutal (moenimi)", - "fileset.name": "protect", - "host.name": "volup208.invalid", - "input.type": "log", - "log.offset": 271, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "volup208.invalid" - ], - "rsa.identity.firstname": "luptat", - "rsa.identity.lastname": "isiutal", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1401060000, - "rsa.investigations.event_cat_name": "User.Activity.Successful Logins", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "LoginSuccess", - "rsa.misc.mail_id": "moenimi", - "rsa.misc.node": "vol", - "rsa.network.alias_host": [ - "volup208.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "26-Feb-2016 8:15:08 very-high anonnu410.internal.home aqu <squame 26T20:15:08.ntex eius6159.www5.localhost CylancePROTECT Event Name:Alert, Device Message: Device: aer User: ),lupt (tia oloremqu Zone Names: temvel Device Id: iatu", - "fileset.name": "protect", - "host.name": "eius6159.www5.localhost", - "input.type": "log", - "log.offset": 453, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "eius6159.www5.localhost" - ], - "rsa.db.index": "temvel", - "rsa.identity.firstname": "oloremqu", - "rsa.identity.lastname": "tia", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.misc.device_name": "aer", - "rsa.misc.event_type": "Alert", - "rsa.misc.mail_id": "lupt", - "rsa.network.alias_host": [ - "eius6159.www5.localhost" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SystemSecurity", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2016-3-12T3:17:42.ceroinBC ratvolup497.www.corp CylancePROTECT ionofde con [uia] Event Type: AuditLog, Event Name: SystemSecurity, Message: ommodic, User: mipsu consec (taliquip)", - "fileset.name": "protect", - "host.name": "ratvolup497.www.corp", - "input.type": "log", - "log.offset": 690, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ratvolup497.www.corp" - ], - "rsa.db.index": "ommodic", - "rsa.identity.firstname": "mipsu", - "rsa.identity.lastname": "consec", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1600000000, - "rsa.investigations.event_cat_name": "System", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "SystemSecurity", - "rsa.misc.mail_id": "taliquip", - "rsa.network.alias_host": [ - "ratvolup497.www.corp" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2016-3-26T10:20:16.gelit tatno5625.api.local CylancePROTECT taev roidents [oluptas] Event Type: AuditLog, Event Name: Alert, Message: Source: taliqu; SHA256: ommod; Reason: failure, User: tur aperi (iveli)", - "fileset.name": "protect", - "host.name": "tatno5625.api.local", - "input.type": "log", - "log.offset": 869, - "observer.product": "taliqu", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "tatno5625.api.local" - ], - "rsa.identity.firstname": "tur", - "rsa.identity.lastname": "aperi", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.checksum": "ommod", - "rsa.misc.event_type": "Alert", - "rsa.misc.mail_id": "iveli", - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "tatno5625.api.local" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SystemSecurity", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "uatDuis 2016-4-9T5:22:51.ude maveniam1399.mail.lan CylancePROTECT siutaliq exercit [tempor] Event Type: omnis, Event Name: SystemSecurity, Device Name: eip, Agent Version: lupta, IP Address: (10.124.61.119), MAC Address: (01:00:5e:dc:bb:8b), Logged On Users: (occ), OS: ect Zone Names: reetdolo", - "fileset.name": "protect", - "host.mac": "01:00:5e:dc:bb:8b", - "host.name": "maveniam1399.mail.lan", - "input.type": "log", - "log.offset": 1075, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "maveniam1399.mail.lan" - ], - "related.ip": [ - "10.124.61.119" - ], - "related.user": [ - "occ" - ], - "rsa.db.index": "reetdolo", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1600000000, - "rsa.investigations.event_cat_name": "System", - "rsa.investigations.event_vcat": "omnis", - "rsa.misc.OS": "ect", - "rsa.misc.event_type": "SystemSecurity", - "rsa.misc.node": "eip", - "rsa.network.alias_host": [ - "maveniam1399.mail.lan" - ], - "rsa.network.eth_host": "01:00:5e:dc:bb:8b", - "service.type": "cylance", - "source.ip": "10.124.61.119", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "occ" - }, - { - "event.action": "Device Policy Assigned", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "24-Apr-2016 12:25:25 low lor340.mail.local natura <ima 24T00:25:25.tanimi nimadmin6499.local CylancePROTECT Event Name:Device Policy Assigned, Device Message: Device: dexe User: ),urerep (aquaeab liqu Zone Names: lorem Device Id: emq", - "fileset.name": "protect", - "host.name": "nimadmin6499.local", - "input.type": "log", - "log.offset": 1370, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "nimadmin6499.local" - ], - "rsa.db.index": "lorem", - "rsa.identity.firstname": "liqu", - "rsa.identity.lastname": "aquaeab", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502000000, - "rsa.investigations.event_cat_name": "Policies.Rules", - "rsa.misc.device_name": "dexe", - "rsa.misc.event_type": "Device Policy Assigned", - "rsa.misc.mail_id": "urerep", - "rsa.network.alias_host": [ - "nimadmin6499.local" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ThreatUpdated", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "ari 2016-5-8T7:27:59.equun suntinc4934.www5.test CylancePROTECT ipis gelits [tatevel] Event Type: AuditLog, Event Name: ThreatUpdated, Message: Policy: uptatev; SHA256: uovol, User: )dmi (olab mquisnos", - "fileset.name": "protect", - "host.name": "suntinc4934.www5.test", - "input.type": "log", - "log.offset": 1612, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "suntinc4934.www5.test" - ], - "rsa.identity.firstname": "mquisnos", - "rsa.identity.lastname": "olab", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.checksum": "uovol", - "rsa.misc.event_type": "ThreatUpdated", - "rsa.misc.mail_id": "dmi", - "rsa.misc.policy_name": "uptatev", - "rsa.network.alias_host": [ - "suntinc4934.www5.test" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_quarantined", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "22-May-2016 14:30:33 medium tvol457.internal.local inim <roinBCSe 2016-5-22T2:30:33.onse tae1382.mail.localhost CylancePROTECT oluptate ofdeF tion Event Type: orsitame, Event Name: threat_quarantined, Threat Class: lit, Threat Subclass: iam, SHA256: qua, MD5: umdo", - "fileset.name": "protect", - "host.name": "tae1382.mail.localhost", - "input.type": "log", - "log.offset": 1814, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "tae1382.mail.localhost" - ], - "rsa.crypto.sig_type": "lit", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "orsitame", - "rsa.misc.checksum": "qua", - "rsa.misc.event_type": "threat_quarantined", - "rsa.network.alias_host": [ - "tae1382.mail.localhost" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SystemSecurity", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2016-6-5T9:33:08.eniam reetdolo2451.www.example CylancePROTECT rumet oll [erc] Event Type: ScriptControl, Event Name: SystemSecurity, Device Name: llam, File Path: aspern, Interpreter: itlabori, Interpreter Version: 1.2344, Zone Names: ollit, User Name: usan", - "file.directory": "aspern", - "fileset.name": "protect", - "host.name": "reetdolo2451.www.example", - "input.type": "log", - "log.offset": 2084, - "network.application": "itlabori", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.2344", - "related.hosts": [ - "reetdolo2451.www.example" - ], - "related.user": [ - "usan" - ], - "rsa.db.index": "ollit", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1600000000, - "rsa.investigations.event_cat_name": "System", - "rsa.misc.event_type": "SystemSecurity", - "rsa.misc.node": "llam", - "rsa.misc.version": "1.2344", - "rsa.network.alias_host": [ - "reetdolo2451.www.example" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "usan" - }, - { - "event.action": "ZoneAddDevice", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "olo 2016-6-20T4:35:42.uaera sitas4259.mail.corp CylancePROTECT atquovo iumto aboreetd Event Type: AuditLog, Event Name: ZoneAddDevice, Message: Zone: dun; Policy: enim; Value: saute, User: vel quu (undeo)", - "fileset.name": "protect", - "host.name": "sitas4259.mail.corp", - "input.type": "log", - "log.offset": 2343, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "sitas4259.mail.corp" - ], - "rsa.db.index": "dun", - "rsa.identity.firstname": "vel", - "rsa.identity.lastname": "quu", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "ZoneAddDevice", - "rsa.misc.mail_id": "undeo", - "rsa.misc.policy_name": "enim", - "rsa.network.alias_host": [ - "sitas4259.mail.corp" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Registration", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2016-7-4T11:38:16.isqu uis7612.www5.domain CylancePROTECT llumquid tation [ips] Event Type: emeumfug, Event Name: Registration, emporinc", - "fileset.name": "protect", - "host.name": "uis7612.www5.domain", - "input.type": "log", - "log.offset": 2548, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "uis7612.www5.domain" - ], - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "emeumfug", - "rsa.misc.event_type": "Registration", - "rsa.network.alias_host": [ - "uis7612.www5.domain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SyslogSettingsSave", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "cup 2016-7-18T6:40:50.boNemoen uid7309.api.domain CylancePROTECT uradi aborumSe luptat Event Type: AuditLog, Event Name: SyslogSettingsSave, Message: Policy: antiumto, User: strude ctetura (usmod)", - "fileset.name": "protect", - "host.name": "uid7309.api.domain", - "input.type": "log", - "log.offset": 2685, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "uid7309.api.domain" - ], - "rsa.identity.firstname": "strude", - "rsa.identity.lastname": "ctetura", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "SyslogSettingsSave", - "rsa.misc.mail_id": "usmod", - "rsa.misc.policy_name": "antiumto", - "rsa.network.alias_host": [ - "uid7309.api.domain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2-Aug-2016 1:43:25 high fugit7668.www5.invalid lupt <qua 2T01:43:25.luptatev admi3749.api.lan CylancePROTECT Event Name:DeviceRemove, Device Message: Device: tinvol; Zones Removed: dolore; Zones Added: abor, User: iqui etc (etM), Zone Names:nimadmin Device Id: ditautfu", - "fileset.name": "protect", - "host.name": "admi3749.api.lan", - "input.type": "log", - "log.offset": 2882, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "admi3749.api.lan" - ], - "rsa.db.index": "nimadmin", - "rsa.identity.firstname": "iqui", - "rsa.identity.lastname": "etc", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.misc.device_name": "tinvol", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.mail_id": "etM", - "rsa.network.alias_host": [ - "admi3749.api.lan" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "fullaccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2016-8-16T8:45:59.ostr rudexerc703.internal.host CylancePROTECT itaut imaven [liqua] Event Type: ScriptControl, Event Name: fullaccess, Device Name: onproide, File Path: Nemoen, Interpreter: tfug, Interpreter Version: 1.5383 (ccu), Zone Names: urE, User Name: isaute", - "file.directory": "Nemoen", - "fileset.name": "protect", - "host.name": "rudexerc703.internal.host", - "input.type": "log", - "log.offset": 3157, - "network.application": "tfug", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.5383", - "related.hosts": [ - "rudexerc703.internal.host" - ], - "related.user": [ - "isaute" - ], - "rsa.db.index": "urE", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " ScriptControl", - "rsa.misc.event_type": "fullaccess", - "rsa.misc.node": "onproide", - "rsa.misc.version": "1.5383", - "rsa.network.alias_host": [ - "rudexerc703.internal.host" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "isaute" - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "eomnisis 2016-8-30T3:48:33.mqui civeli370.www5.local CylancePROTECT sunt stl tdolorem Event Type: AuditLog, Event Name: Alert, Message: The Device: picia was auto assigned to the Zone: IP Address: Fake Devices, User: mUtenima emaperi ()tame", - "fileset.name": "protect", - "host.name": "civeli370.www5.local", - "input.type": "log", - "log.offset": 3424, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "civeli370.www5.local" - ], - "rsa.db.index": "The Device: picia was auto assigned to the Zone: IP Address: Fake Devices", - "rsa.identity.firstname": "mUtenima", - "rsa.identity.lastname": "emaperi", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "Alert", - "rsa.network.alias_host": [ - "civeli370.www5.local" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "September 2016/09/13 22:51:07 ivelits712.api.example CylancePROTECT Event Type: AppControl, etdolo inv [agnaali] Event Type: AppControl, Event Name: threat_found, Device Name: sequatur, IP Address: (10.199.98.186), Action: cancel, Action Type: nihi, File Path: Lor, SHA256: itecto, Zone Names: erc", - "file.directory": "Lor", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 3665, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.ip": [ - "10.199.98.186" - ], - "rsa.db.index": "erc", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AppControl", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.checksum": "itecto", - "rsa.misc.event_type": "threat_found", - "rsa.misc.node": "sequatur", - "service.type": "cylance", - "source.ip": "10.199.98.186", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "LoginSuccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "olupt 2016-9-28T5:53:42.modoco estqu1709.internal.example CylancePROTECT ostrume molest [upt] Event Type: Threat, Event Name: LoginSuccess, Device Name: uasia, IP Address: (10.64.70.5), File Name: ici, Path: giatquov, Drive Type: eritquii, SHA256: dexeac, MD5: iscinge, Status: atvol, Cylance Score: 145.898000, Found Date: uames, File Type: tati, Is Running: utaliqu, Auto Run: oriosamn, Detected By: deFinibu, Zone Names: iadese, Is Malware: imidest, Is Unique To Cylance: emagnama, Threat Classification: eprehend", - "file.directory": "giatquov", - "file.name": "ici", - "file.type": "tati", - "fileset.name": "protect", - "host.name": "estqu1709.internal.example", - "input.type": "log", - "log.offset": 3963, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "estqu1709.internal.example" - ], - "related.ip": [ - "10.64.70.5" - ], - "rsa.crypto.sig_type": "eprehend", - "rsa.db.index": "iadese", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1401060000, - "rsa.investigations.event_cat_name": "User.Activity.Successful Logins", - "rsa.investigations.event_vcat": " Threat", - "rsa.misc.checksum": "dexeac", - "rsa.misc.event_state": "atvol", - "rsa.misc.event_type": "LoginSuccess", - "rsa.misc.node": "uasia", - "rsa.network.alias_host": [ - "estqu1709.internal.example" - ], - "rsa.web.reputation_num": 145.898, - "service.type": "cylance", - "source.ip": "10.64.70.5", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2016-10-12T12:56:16.suntinc xeac7155.www.localdomain CylancePROTECT taliq intoccae [ents] Event Type: pida, Event Name: Alert, Device Name: idolor, Agent Version: emeumfu, IP Address: (10.143.239.210), MAC Address: (01:00:5e:93:1c:9f), Logged On Users: (oinBCSe), OS: mnisist Zone Names: sedd", - "fileset.name": "protect", - "host.mac": "01:00:5e:93:1c:9f", - "host.name": "xeac7155.www.localdomain", - "input.type": "log", - "log.offset": 4480, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "xeac7155.www.localdomain" - ], - "related.ip": [ - "10.143.239.210" - ], - "related.user": [ - "oinBCSe" - ], - "rsa.db.index": "sedd", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": "pida", - "rsa.misc.OS": "mnisist", - "rsa.misc.event_type": "Alert", - "rsa.misc.node": "idolor", - "rsa.network.alias_host": [ - "xeac7155.www.localdomain" - ], - "rsa.network.eth_host": "01:00:5e:93:1c:9f", - "service.type": "cylance", - "source.ip": "10.143.239.210", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "oinBCSe" - }, - { - "event.action": "accept", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "ipitla 2016-10-26T7:58:50.quae maccusa5126.api.domain CylancePROTECT idex xerci [aqu] Event Type: ExploitAttempt, Event Name: Alert, Device Name: olorema, IP Address: (10.32.143.134), Action: accept, Process ID: 2289, Process Name: aliqu.exe, User Name: olupta, Violation Type: mipsumd, Zone Names: eFinib", - "fileset.name": "protect", - "host.name": "maccusa5126.api.domain", - "input.type": "log", - "log.offset": 4773, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "process.name": "aliqu.exe", - "process.pid": 2289, - "related.hosts": [ - "maccusa5126.api.domain" - ], - "related.ip": [ - "10.32.143.134" - ], - "related.user": [ - "olupta" - ], - "rsa.db.index": "eFinib", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": " ExploitAttempt", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Alert", - "rsa.misc.node": "olorema", - "rsa.misc.policy_name": "mipsumd", - "rsa.network.alias_host": [ - "maccusa5126.api.domain" - ], - "service.type": "cylance", - "source.ip": "10.32.143.134", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "olupta" - }, - { - "event.action": "DeviceEdit", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "10-Nov-2016 3:01:24 low eav3687.internal.local siar <iamquis 10T03:01:24.quirat llu4718.localhost CylancePROTECT Event Name:DeviceEdit, Device Name:conseq, External Device Type:oidentsu, External Device Vendor ID:atiset, External Device Name:atu, External Device Product ID:umexerci, External Device Serial Number:ern, Zone Names:psaquae", - "fileset.name": "protect", - "host.name": "llu4718.localhost", - "input.type": "log", - "log.offset": 5079, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "llu4718.localhost" - ], - "rsa.db.index": "psaquae", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.device_name": "oidentsu", - "rsa.misc.event_type": "DeviceEdit", - "rsa.misc.node": "conseq", - "rsa.misc.serial_number": "ern", - "rsa.network.alias_host": [ - "llu4718.localhost" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Nov 24 10:03:59 doloremi7402.www.test CylancePROTECT Event Type:stquidol, Event Name:DeviceRemove, Device Message: Device: leumiu; Policy Changed: namali to 'taevit', User: rinrepre etconse (tincu), Zone Names:ari, Device Id: exercit", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 5423, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.db.index": "ari", - "rsa.identity.firstname": "rinrepre", - "rsa.identity.lastname": "etconse", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.investigations.event_vcat": "stquidol", - "rsa.misc.device_name": "leumiu", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.mail_id": "tincu", - "rsa.misc.policy_name": "taevit", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ZoneAddDevice", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "8-December-2016 17:06:33 very-high occae1180.internal.localhost aquaeabi <adeseru 2016-12-8T5:06:33.emoe eaq908.api.home CylancePROTECT itame intoc [oluptas] Event Type: tNequepo, Event Name: ZoneAddDevice, Device Name: luptasn, Zone Names:equat", - "fileset.name": "protect", - "host.name": "eaq908.api.home", - "input.type": "log", - "log.offset": 5657, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "eaq908.api.home" - ], - "rsa.db.index": "equat", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "tNequepo", - "rsa.misc.event_type": "ZoneAddDevice", - "rsa.misc.node": "luptasn", - "rsa.network.alias_host": [ - "eaq908.api.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ZoneAddDevice", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "ihilmole 2016-12-23T12:09:07.eriamea amre146.mail.host CylancePROTECT pisciv iquidex radipisc Event Type: AuditLog, Event Name: ZoneAddDevice, Message: Policy: nti; SHA256: abi; Category: sectetur, User: )uioffi (oru temqu", - "fileset.name": "protect", - "host.name": "amre146.mail.host", - "input.type": "log", - "log.offset": 5909, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "amre146.mail.host" - ], - "rsa.identity.firstname": "temqu", - "rsa.identity.lastname": "oru", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.category": "sectetur", - "rsa.misc.checksum": "abi", - "rsa.misc.event_type": "ZoneAddDevice", - "rsa.misc.mail_id": "uioffi", - "rsa.misc.policy_name": "nti", - "rsa.network.alias_host": [ - "amre146.mail.host" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "ommodico 2017-1-6T7:11:41.quatD mcolab379.internal.home CylancePROTECT tsedqu agnid [proide] Event Type: ScriptControl, Event Name: DeviceRemove, Device Name: tper, File Path: olor, Interpreter: Neque, Interpreter Version: 1.4129 (xerc), Zone Names: iutali, User Name: fdeFi", - "file.directory": "olor", - "fileset.name": "protect", - "host.name": "mcolab379.internal.home", - "input.type": "log", - "log.offset": 6132, - "network.application": "Neque", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.4129", - "related.hosts": [ - "mcolab379.internal.home" - ], - "related.user": [ - "fdeFi" - ], - "rsa.db.index": "iutali", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.investigations.event_vcat": " ScriptControl", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.node": "tper", - "rsa.misc.version": "1.4129", - "rsa.network.alias_host": [ - "mcolab379.internal.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "fdeFi" - }, - { - "event.action": "threat_quarantined", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Jan 20 2:14:16 tasuntex5037.www.corp CylancePROTECT Event Type:boN, Event Name:threat_quarantined, Device Name:ectio, Agent Version:dutper, IP Address: (10.237.205.140), MAC Address: (01:00:5e:3f:c4:6c), Logged On Users: (uames), OS:iduntu, Zone Names:veniam", - "fileset.name": "protect", - "host.mac": "01:00:5e:3f:c4:6c", - "input.type": "log", - "log.offset": 6407, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.ip": [ - "10.237.205.140" - ], - "related.user": [ - "uames" - ], - "rsa.db.index": "veniam", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "boN", - "rsa.misc.OS": "iduntu", - "rsa.misc.event_type": "threat_quarantined", - "rsa.misc.node": "ectio", - "rsa.network.eth_host": "01:00:5e:3f:c4:6c", - "service.type": "cylance", - "source.ip": "10.237.205.140", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "uames" - }, - { - "event.action": "LoginSuccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "3-Feb-2017 9:16:50 very-high reme622.mail.example isnisiu <tsu 3T21:16:50.tcons sciun4694.api.lan CylancePROTECT Event Name:LoginSuccess, Device Message: Device: nsect User: ),idata (rumwritt magnid Zone Names: enderit Device Id: untex", - "fileset.name": "protect", - "host.name": "sciun4694.api.lan", - "input.type": "log", - "log.offset": 6666, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "sciun4694.api.lan" - ], - "rsa.db.index": "enderit", - "rsa.identity.firstname": "magnid", - "rsa.identity.lastname": "rumwritt", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1401060000, - "rsa.investigations.event_cat_name": "User.Activity.Successful Logins", - "rsa.misc.device_name": "nsect", - "rsa.misc.event_type": "LoginSuccess", - "rsa.misc.mail_id": "idata", - "rsa.network.alias_host": [ - "sciun4694.api.lan" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "paquioff 2017-2-18T4:19:24.mquisnos maven3758.www.invalid CylancePROTECT labor didunt uptatema Event Type: ExploitAttempt, Event Name: DeviceEdit, Device Name: udan, IP Address: (10.74.104.215), Action: cancel, Process ID: 7410, Process Name: mveleu.exe, User Name: nofdeFin, Violation Type: sequam, Zone Names: temvel", - "fileset.name": "protect", - "host.name": "maven3758.www.invalid", - "input.type": "log", - "log.offset": 6908, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "process.name": "mveleu.exe", - "process.pid": 7410, - "related.hosts": [ - "maven3758.www.invalid" - ], - "related.ip": [ - "10.74.104.215" - ], - "related.user": [ - "nofdeFin" - ], - "rsa.db.index": "temvel", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " ExploitAttempt", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "DeviceEdit", - "rsa.misc.node": "udan", - "rsa.misc.policy_name": "sequam", - "rsa.network.alias_host": [ - "maven3758.www.invalid" - ], - "service.type": "cylance", - "source.ip": "10.74.104.215", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "nofdeFin" - }, - { - "event.action": "pechange", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "4-Mar-2017 11:21:59 medium tvolu3997.mail.home eiu <autfu 4T11:21:59.gnaaliq mni7200.mail.localdomain CylancePROTECT Event Name:pechange, Device Name:idolor, Zone Names:uisau, Device Id: eleum", - "fileset.name": "protect", - "host.name": "mni7200.mail.localdomain", - "input.type": "log", - "log.offset": 7227, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "mni7200.mail.localdomain" - ], - "rsa.db.index": "uisau", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.event_type": "pechange", - "rsa.misc.node": "idolor", - "rsa.network.alias_host": [ - "mni7200.mail.localdomain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Device Policy Assigned", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Mar 18 6:24:33 ate4627.localdomain CylancePROTECT Event Type:officiad, Event Name:Device Policy Assigned, Message: The Device:quinescwas auto assigned to Zone:madmi, User:tur", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 7429, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.identity.firstname": "tur", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502000000, - "rsa.investigations.event_cat_name": "Policies.Rules", - "rsa.investigations.event_vcat": "officiad", - "rsa.misc.event_type": "Device Policy Assigned", - "rsa.misc.node": "quinesc", - "rsa.network.zone": "madmi", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2-April-2017 01:27:07 very-high orem6702.invalid tev <ntocca 2017-4-2T1:27:07.ostru ntoccae1705.internal.invalid CylancePROTECT temquiav equatu [upta] Event Type: ScriptControl, Event Name: Alert, Device Name: sBon, File Path: orro, Interpreter: tae, Interpreter Version: 1.3212, Zone Names: tlab, User Name: aperiame", - "file.directory": "orro", - "fileset.name": "protect", - "host.name": "ntoccae1705.internal.invalid", - "input.type": "log", - "log.offset": 7604, - "network.application": "tae", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.3212", - "related.hosts": [ - "ntoccae1705.internal.invalid" - ], - "related.user": [ - "aperiame" - ], - "rsa.db.index": "tlab", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.misc.event_type": "Alert", - "rsa.misc.node": "sBon", - "rsa.misc.version": "1.3212", - "rsa.network.alias_host": [ - "ntoccae1705.internal.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "aperiame" - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "16-Apr-2017 8:29:41 high tobea2364.internal.localhost itinvol <fugiatn 16T08:29:41.docon etconsec6708.internal.invalid CylancePROTECT Event Name:PolicyAdd, Device Name:ersp, External Device Type:tquov, External Device Vendor ID:diconseq, External Device Name:inven, External Device Product ID:osquira, External Device Serial Number:tes, Zone Names:mquame", - "fileset.name": "protect", - "host.name": "etconsec6708.internal.invalid", - "input.type": "log", - "log.offset": 7929, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "etconsec6708.internal.invalid" - ], - "rsa.db.index": "mquame", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.misc.device_name": "tquov", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.node": "ersp", - "rsa.misc.serial_number": "tes", - "rsa.network.alias_host": [ - "etconsec6708.internal.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2017-4-30T3:32:16.squirati Sedutp7428.internal.home CylancePROTECT utlabor itessequ [porro] Event Type: AuditLog, Event Name: PolicyAdd, Message: Zone: iquipe; Policy: itempor; Value: quin, User: upida tvolupt (eufugi)", - "fileset.name": "protect", - "host.name": "Sedutp7428.internal.home", - "input.type": "log", - "log.offset": 8293, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "Sedutp7428.internal.home" - ], - "rsa.db.index": "iquipe", - "rsa.identity.firstname": "upida", - "rsa.identity.lastname": "tvolupt", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.mail_id": "eufugi", - "rsa.misc.policy_name": "itempor", - "rsa.network.alias_host": [ - "Sedutp7428.internal.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "uamni 2017-5-14T10:34:50.ctet ati4639.www5.home CylancePROTECT archite loreme [untu] Event Type: AuditLog, Event Name: Alert, Message: Device: ven; User: con nisist (usmodte)", - "fileset.name": "protect", - "host.name": "ati4639.www5.home", - "input.type": "log", - "log.offset": 8512, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ati4639.www5.home" - ], - "rsa.identity.firstname": "con", - "rsa.identity.lastname": "nisist", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "Alert", - "rsa.misc.mail_id": "usmodte", - "rsa.misc.node": "ven", - "rsa.network.alias_host": [ - "ati4639.www5.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2017-5-29T5:37:24.eturadi torever662.www5.home CylancePROTECT quam sumdolor [meaqueip] Event Type: AuditLog, Event Name: PolicyAdd, Message: The Device: pexe was auto assigned to the Zone: IP Address: 10.70.168.240, User: amcol adeser ()oin", - "fileset.name": "protect", - "host.name": "torever662.www5.home", - "input.type": "log", - "log.offset": 8687, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "torever662.www5.home" - ], - "rsa.db.index": "The Device: pexe was auto assigned to the Zone: IP Address: 10.70.168.240", - "rsa.identity.firstname": "amcol", - "rsa.identity.lastname": "adeser", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "PolicyAdd", - "rsa.network.alias_host": [ - "torever662.www5.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "12-June-2017 12:39:58 medium meius3932.internal.example ccaeca <uptate 2017-6-12T12:39:58.amc cusant1701.api.localdomain CylancePROTECT siutaliq dutp psaquaea Event Type: taevita, Event Name: DeviceRemove, Device Name: siut, Agent Version: tconsect, IP Address: (10.190.175.158), MAC Address: (01:00:5e:45:8b:97), Logged On Users: (ditemp), OS: edqui", - "fileset.name": "protect", - "host.mac": "01:00:5e:45:8b:97", - "host.name": "cusant1701.api.localdomain", - "input.type": "log", - "log.offset": 8928, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "cusant1701.api.localdomain" - ], - "related.ip": [ - "10.190.175.158" - ], - "related.user": [ - "ditemp" - ], - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.investigations.event_vcat": "taevita", - "rsa.misc.OS": "edqui", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.node": "siut", - "rsa.network.alias_host": [ - "cusant1701.api.localdomain" - ], - "rsa.network.eth_host": "01:00:5e:45:8b:97", - "service.type": "cylance", - "source.ip": "10.190.175.158", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "ditemp" - }, - { - "event.action": "fullaccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "26-June-2017 19:42:33 very-high rnatu2805.www.home enderi <odoconse 2017-6-26T7:42:33.quamqua eacommod1930.internal.lan CylancePROTECT tpersp stla uptatema Event Type: AuditLog, Event Name: fullaccess, Message: Device: uradi; SHA256: tot; Category: llamco, User: )nea (psum tasnulap", - "fileset.name": "protect", - "host.name": "eacommod1930.internal.lan", - "input.type": "log", - "log.offset": 9287, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "eacommod1930.internal.lan" - ], - "rsa.identity.firstname": "tasnulap", - "rsa.identity.lastname": "psum", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.category": "llamco", - "rsa.misc.checksum": "tot", - "rsa.misc.event_type": "fullaccess", - "rsa.misc.mail_id": "nea", - "rsa.misc.node": "uradi", - "rsa.network.alias_host": [ - "eacommod1930.internal.lan" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2017-7-11T2:45:07.oremipsu emeumfug4387.internal.lan CylancePROTECT uidol litani [utodita] Event Type: AuditLog, Event Name: Alert, Message: Device: untincul; SHA256: iduntu, User: )ccaeca (niamq lapariat", - "fileset.name": "protect", - "host.name": "emeumfug4387.internal.lan", - "input.type": "log", - "log.offset": 9579, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "emeumfug4387.internal.lan" - ], - "rsa.identity.firstname": "lapariat", - "rsa.identity.lastname": "niamq", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.checksum": "iduntu", - "rsa.misc.event_type": "Alert", - "rsa.misc.mail_id": "ccaeca", - "rsa.misc.node": "untincul", - "rsa.network.alias_host": [ - "emeumfug4387.internal.lan" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "uat 2017-7-25T9:47:41.tiaec rumwrit764.www5.local CylancePROTECT edquiac urerepr [eseru] Event Type: DeviceControl, Event Name: DeviceRemove, Device Name: etMal, External Device Type: qua, External Device Vendor ID: rsita, External Device Name: ate, External Device Product ID: ipsamvo, External Device Serial Number: onula, Zone Names: miu", - "fileset.name": "protect", - "host.name": "rumwrit764.www5.local", - "input.type": "log", - "log.offset": 9784, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "rumwrit764.www5.local" - ], - "rsa.db.index": "miu", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.node": "etMal", - "rsa.misc.serial_number": "onula", - "rsa.network.alias_host": [ - "rumwrit764.www5.local" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SyslogSettingsSave", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Aug 8 4:50:15 mex2054.mail.corp CylancePROTECT Event Type:luptat, Event Name:SyslogSettingsSave, Message: Provider:ica, Source IP:10.13.66.97, User: dicta taedicta (ritt)#015", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 10125, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.ip": [ - "10.13.66.97" - ], - "rsa.identity.firstname": "dicta", - "rsa.identity.lastname": "taedicta", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "luptat", - "rsa.misc.event_type": "SyslogSettingsSave", - "rsa.misc.mail_id": "ritt", - "service.type": "cylance", - "source.ip": "10.13.66.97", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceEdit", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2017-8-22T11:52:50.dictasun veniamqu7284.mail.invalid CylancePROTECT nte mvel nof Event Type: AuditLog, Event Name: DeviceEdit, Message: The Device: tetur was auto assigned to the Zone: IP Address: Fake Devices, User: ()xce", - "fileset.name": "protect", - "host.name": "veniamqu7284.mail.invalid", - "input.type": "log", - "log.offset": 10300, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "veniamqu7284.mail.invalid" - ], - "rsa.db.index": "The Device: tetur was auto assigned to the Zone: IP Address: Fake Devices", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "DeviceEdit", - "rsa.misc.mail_id": "xce", - "rsa.misc.node": "tetur", - "rsa.network.alias_host": [ - "veniamqu7284.mail.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_quarantined", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "6-September-2017 06:55:24 high isiu5733.api.domain etdolor <xeaco 2017-9-6T6:55:24.nvolupt oremi1485.api.localhost CylancePROTECT iosa boNemoe [onsequ] Event Type: AuditLog, Event Name: threat_quarantined, Message: SHA256: amvolupt; Reason: success, User: atisund xea (ites)", - "fileset.name": "protect", - "host.name": "oremi1485.api.localhost", - "input.type": "log", - "log.offset": 10524, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "oremi1485.api.localhost" - ], - "rsa.identity.firstname": "atisund", - "rsa.identity.lastname": "xea", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.checksum": "amvolupt", - "rsa.misc.event_type": "threat_quarantined", - "rsa.misc.mail_id": "ites", - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "oremi1485.api.localhost" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "cancel", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "eri 2017-9-20T1:57:58.quunt olori416.api.test CylancePROTECT elit cidunt plica Event Type: ExploitAttempt, Event Name: Alert, Device Name: exeaco, IP Address: (10.31.190.145), Action: cancel, Process ID: 5530, Process Name: accusant.exe, User Name: onse, Violation Type: admin, Zone Names: stenatu", - "fileset.name": "protect", - "host.name": "olori416.api.test", - "input.type": "log", - "log.offset": 10806, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "process.name": "accusant.exe", - "process.pid": 5530, - "related.hosts": [ - "olori416.api.test" - ], - "related.ip": [ - "10.31.190.145" - ], - "related.user": [ - "onse" - ], - "rsa.db.index": "stenatu", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": " ExploitAttempt", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Alert", - "rsa.misc.node": "exeaco", - "rsa.misc.policy_name": "admin", - "rsa.network.alias_host": [ - "olori416.api.test" - ], - "service.type": "cylance", - "source.ip": "10.31.190.145", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "onse" - }, - { - "event.action": "threat_found", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "4-Oct-2017 9:00:32 high nvol6269.internal.local tla <nimid 4T21:00:32.dat periam126.api.host CylancePROTECT Event Name:threat_found, Threat Class:rExc, Threat Subclass:iusmo, SHA256:tame, MD5:naaliq", - "fileset.name": "protect", - "host.name": "periam126.api.host", - "input.type": "log", - "log.offset": 11104, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "periam126.api.host" - ], - "rsa.crypto.sig_type": "rExc", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.checksum": "tame", - "rsa.misc.event_type": "threat_found", - "rsa.network.alias_host": [ - "periam126.api.host" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "19-October-2017 04:03:07 medium toccaec7645.www5.home psaqua <itationu 2017-10-19T4:03:07.proident maliquam2147.internal.home CylancePROTECT lores ritati orisni Event Type: DeviceControl, Event Name: PolicyAdd, Device Name: estl, External Device Type: sitam, External Device Vendor ID: orem, External Device Name: rcit, External Device Product ID: llamco, External Device Serial Number: atu, Zone Names: untincul", - "fileset.name": "protect", - "host.name": "maliquam2147.internal.home", - "input.type": "log", - "log.offset": 11309, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "maliquam2147.internal.home" - ], - "rsa.db.index": "untincul", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.node": "estl", - "rsa.misc.serial_number": "atu", - "rsa.network.alias_host": [ - "maliquam2147.internal.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "iuntNe 2017-11-2T11:05:41.atise tate6578.api.localdomain CylancePROTECT emvele isnost [olorem] Event Type: Threat, Event Name: PolicyAdd, Device Name: yCiceroi, IP Address: (10.252.165.146), File Name: iquamqua, Path: sit, Drive Type: rumSect, SHA256: ita, MD5: vitaed, Status: exeaco, Cylance Score: 51.523000, Found Date: mven, File Type: olorsit, Is Running: tore, Auto Run: elits, Detected By: consequa, Zone Names: turadip, Is Malware: tatevel, Is Unique To Cylance: boreetdo, Threat Classification: undeom", - "file.directory": "sit", - "file.name": "iquamqua", - "file.type": "olorsit", - "fileset.name": "protect", - "host.name": "tate6578.api.localdomain", - "input.type": "log", - "log.offset": 11732, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "tate6578.api.localdomain" - ], - "related.ip": [ - "10.252.165.146" - ], - "rsa.crypto.sig_type": "undeom", - "rsa.db.index": "turadip", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.investigations.event_vcat": " Threat", - "rsa.misc.checksum": "ita", - "rsa.misc.event_state": "exeaco", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.node": "yCiceroi", - "rsa.network.alias_host": [ - "tate6578.api.localdomain" - ], - "rsa.web.reputation_num": 51.523, - "service.type": "cylance", - "source.ip": "10.252.165.146", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_changed", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2017-11-16T6:08:15.uov itlab6956.mail.local CylancePROTECT loremqu tetur amvo Event Type: siuta, Event Name: threat_changed, Device Name: ommodo, Agent Version: uptat, IP Address: (10.105.46.101, tatione), MAC Address: (01:00:5e:de:32:2c, ori), Logged On Users: (tconsect), OS: rum", - "fileset.name": "protect", - "host.mac": "01:00:5e:de:32:2c", - "host.name": "itlab6956.mail.local", - "input.type": "log", - "log.offset": 12244, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "itlab6956.mail.local" - ], - "related.ip": [ - "10.105.46.101" - ], - "related.user": [ - "tconsect" - ], - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "siuta", - "rsa.misc.OS": "rum", - "rsa.misc.event_type": "threat_changed", - "rsa.misc.node": "ommodo", - "rsa.network.alias_host": [ - "itlab6956.mail.local" - ], - "rsa.network.eth_host": "01:00:5e:de:32:2c", - "service.type": "cylance", - "source.ip": "10.105.46.101", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "tconsect" - }, - { - "event.action": "Device Policy Assigned", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2017-12-1T1:10:49.ugiatn midestl1919.host CylancePROTECT cingel modocon [ipsu] Event Type: ntNeq, Event Name: Device Policy Assigned, Device Name: aUt, Agent Version: boNem, IP Address: (10.124.88.222), MAC Address: (01:00:5e:f9:78:c2), Logged On Users: (onu), OS: liquaUte", - "fileset.name": "protect", - "host.mac": "01:00:5e:f9:78:c2", - "host.name": "midestl1919.host", - "input.type": "log", - "log.offset": 12526, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "midestl1919.host" - ], - "related.ip": [ - "10.124.88.222" - ], - "related.user": [ - "onu" - ], - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502000000, - "rsa.investigations.event_cat_name": "Policies.Rules", - "rsa.investigations.event_vcat": "ntNeq", - "rsa.misc.OS": "liquaUte", - "rsa.misc.event_type": "Device Policy Assigned", - "rsa.misc.node": "aUt", - "rsa.network.alias_host": [ - "midestl1919.host" - ], - "rsa.network.eth_host": "01:00:5e:f9:78:c2", - "service.type": "cylance", - "source.ip": "10.124.88.222", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "onu" - }, - { - "event.action": "deny", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "ria 2017-12-15T8:13:24.atDu nsec923.internal.local CylancePROTECT agnaaliq tlaboree norumet Event Type: ExploitAttempt, Event Name: DeviceEdit, Device Name: mod, IP Address: (10.28.120.149), Action: deny, Process ID: 3916, Process Name: tinvolup.exe, User Name: tsed, Violation Type: inv, Zone Names: rroq", - "fileset.name": "protect", - "host.name": "nsec923.internal.local", - "input.type": "log", - "log.offset": 12800, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "process.name": "tinvolup.exe", - "process.pid": 3916, - "related.hosts": [ - "nsec923.internal.local" - ], - "related.ip": [ - "10.28.120.149" - ], - "related.user": [ - "tsed" - ], - "rsa.db.index": "rroq", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " ExploitAttempt", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "DeviceEdit", - "rsa.misc.node": "mod", - "rsa.misc.policy_name": "inv", - "rsa.network.alias_host": [ - "nsec923.internal.local" - ], - "service.type": "cylance", - "source.ip": "10.28.120.149", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "tsed" - }, - { - "event.action": "ZoneAddDevice", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2017-12-29T3:15:58.mipsamvo eiusmod3517.internal.invalid CylancePROTECT oreveri ehende [eaqueip] Event Type: AuditLog, Event Name: ZoneAddDevice, Message: Device: olup; SHA256: labor, User: )dol (sciun metcons", - "fileset.name": "protect", - "host.name": "eiusmod3517.internal.invalid", - "input.type": "log", - "log.offset": 13106, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "eiusmod3517.internal.invalid" - ], - "rsa.identity.firstname": "metcons", - "rsa.identity.lastname": "sciun", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.checksum": "labor", - "rsa.misc.event_type": "ZoneAddDevice", - "rsa.misc.mail_id": "dol", - "rsa.misc.node": "olup", - "rsa.network.alias_host": [ - "eiusmod3517.internal.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "accept", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "12-January-2018 22:18:32 high asnu3806.api.lan tamet <ationul 2018/01/12T22:18:32.mquisn queips4947.mail.example CylancePROTECT molestia quir eavolup Event Type: AppControl, Event Name: Registration, Device Name: labore, IP Address: (10.165.16.231), Action: accept, Action Type: uto, File Path: iuntNequ, SHA256: esseq, Zone Names: aincidun", - "file.directory": "iuntNequ", - "fileset.name": "protect", - "host.name": "queips4947.mail.example", - "input.type": "log", - "log.offset": 13316, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "queips4947.mail.example" - ], - "related.ip": [ - "10.165.16.231" - ], - "rsa.db.index": "aincidun", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AppControl", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.checksum": "esseq", - "rsa.misc.event_type": "Registration", - "rsa.misc.node": "labore", - "rsa.network.alias_host": [ - "queips4947.mail.example" - ], - "service.type": "cylance", - "source.ip": "10.165.16.231", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "27-January-2018 05:21:06 low oloreseo5039.test derit <dolor 2018-1-27T5:21:06.econs ntexpl3889.www.home CylancePROTECT yCic nder [mdolore] Event Type: Cic, Event Name: DeviceRemove, Device Name: saqu, Agent Version: iscive, IP Address: (10.156.34.19), MAC Address: (01:00:5e:54:ab:3f), Logged On Users: (imveni), OS: ariaturE Zone Names: stquid", - "fileset.name": "protect", - "host.mac": "01:00:5e:54:ab:3f", - "host.name": "ntexpl3889.www.home", - "input.type": "log", - "log.offset": 13667, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ntexpl3889.www.home" - ], - "related.ip": [ - "10.156.34.19" - ], - "related.user": [ - "imveni" - ], - "rsa.db.index": "stquid", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.investigations.event_vcat": "Cic", - "rsa.misc.OS": "ariaturE", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.node": "saqu", - "rsa.network.alias_host": [ - "ntexpl3889.www.home" - ], - "rsa.network.eth_host": "01:00:5e:54:ab:3f", - "service.type": "cylance", - "source.ip": "10.156.34.19", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "imveni" - }, - { - "event.action": "Registration", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "ree 2018-2-10T12:23:41.saquaea ation6657.www.home CylancePROTECT iatqu lorsi repreh Event Type: AuditLog, Event Name: Registration, Message: sitamet, User: utlabo tetur (tionula)", - "fileset.name": "protect", - "host.name": "ation6657.www.home", - "input.type": "log", - "log.offset": 14019, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ation6657.www.home" - ], - "rsa.db.index": "sitamet", - "rsa.identity.firstname": "utlabo", - "rsa.identity.lastname": "tetur", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "Registration", - "rsa.misc.mail_id": "tionula", - "rsa.network.alias_host": [ - "ation6657.www.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "24-Feb-2018 7:26:15 very-high idolor3916.www5.home tas <tasun 24T19:26:15.duntutla ntium4450.www5.localdomain CylancePROTECT Event Name:DeviceRemove, Device Name:vol, Agent Version:oremquel, IP Address: (10.22.94.10), MAC Address: (01:00:5e:ee:e8:77), Logged On Users: (ssusci), OS:animid, Zone Names:mpo", - "fileset.name": "protect", - "host.mac": "01:00:5e:ee:e8:77", - "host.name": "ntium4450.www5.localdomain", - "input.type": "log", - "log.offset": 14198, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ntium4450.www5.localdomain" - ], - "related.ip": [ - "10.22.94.10" - ], - "related.user": [ - "ssusci" - ], - "rsa.db.index": "mpo", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.misc.OS": "animid", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.node": "vol", - "rsa.network.alias_host": [ - "ntium4450.www5.localdomain" - ], - "rsa.network.eth_host": "01:00:5e:ee:e8:77", - "service.type": "cylance", - "source.ip": "10.22.94.10", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "ssusci" - }, - { - "event.action": "DeviceEdit", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "llam 2018-3-11T2:28:49.cti aparia1179.www.localdomain CylancePROTECT rever ore offici Event Type: AuditLog, Event Name: DeviceEdit, Message: Devices: metco, User: acom ceroinB (nim)", - "fileset.name": "protect", - "host.name": "aparia1179.www.localdomain", - "input.type": "log", - "log.offset": 14512, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "aparia1179.www.localdomain" - ], - "rsa.identity.firstname": "acom", - "rsa.identity.lastname": "ceroinB", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "DeviceEdit", - "rsa.misc.mail_id": "nim", - "rsa.misc.node": "metco", - "rsa.network.alias_host": [ - "aparia1179.www.localdomain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "LoginSuccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "25-March-2018 09:31:24 medium taliqui5348.mail.localdomain loremag <iatqu 2018-3-25T9:31:24.inBCSedu erspi5757.local CylancePROTECT suntex iacons [occaec] Event Type: DeviceControl, Event Name: LoginSuccess, Device Name: uov, External Device Type: quaeab, External Device Vendor ID: fici, External Device Name: imve, External Device Product ID: quide, External Device Serial Number: quaU, Zone Names: undeomni", - "fileset.name": "protect", - "host.name": "erspi5757.local", - "input.type": "log", - "log.offset": 14694, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "erspi5757.local" - ], - "rsa.db.index": "undeomni", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1401060000, - "rsa.investigations.event_cat_name": "User.Activity.Successful Logins", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "LoginSuccess", - "rsa.misc.node": "uov", - "rsa.misc.serial_number": "quaU", - "rsa.network.alias_host": [ - "erspi5757.local" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "fullaccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "liquid 2018-4-8T4:33:58.enim Finibus1411.www5.corp CylancePROTECT xea taed umdolo Event Type: AuditLog, Event Name: fullaccess, Message: Policy Assigned:rroqu; Devices: dquiaco , User: nibus vitaed (ser)", - "fileset.name": "protect", - "host.name": "Finibus1411.www5.corp", - "input.type": "log", - "log.offset": 15109, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "Finibus1411.www5.corp" - ], - "rsa.identity.firstname": "nibus", - "rsa.identity.lastname": "vitaed", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "fullaccess", - "rsa.misc.mail_id": "ser", - "rsa.misc.node": "dquiaco", - "rsa.misc.policy_name": "rroqu", - "rsa.network.alias_host": [ - "Finibus1411.www5.corp" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_found", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Apr 22 11:36:32 upt7879.www5.example CylancePROTECT Event Type:idolo, Event Name:threat_found, Device Message: Device: edolo; Zones Removed: ugiatquo; Zones Added: ntium, User: uptate lloinven (econs), Zone Names:lmolesti Device Id: apariatu", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 15313, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.db.index": "lmolesti", - "rsa.identity.firstname": "uptate", - "rsa.identity.lastname": "lloinven", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "idolo", - "rsa.misc.device_name": "edolo", - "rsa.misc.event_type": "threat_found", - "rsa.misc.mail_id": "econs", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "May 2018/05/07 06:39:06 erspi4926.www5.test CylancePROTECT Event Type: AppControl, incidid quin [autemv] Event Type: AppControl, Event Name: PolicyAdd, Device Name: fugits, IP Address: (10.153.34.43), Action: allow, Action Type: acommo, File Path: isi, SHA256: culpaq, Zone Names: saute", - "file.directory": "isi", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 15555, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.ip": [ - "10.153.34.43" - ], - "rsa.db.index": "saute", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.investigations.event_vcat": " AppControl", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.checksum": "culpaq", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.node": "fugits", - "service.type": "cylance", - "source.ip": "10.153.34.43", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_found", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2018-5-21T1:41:41.abor magnid3343.home CylancePROTECT tesseq niam [pernat] Event Type: DeviceControl, Event Name: threat_found, Device Name: gitse, External Device Type: ugitse, External Device Vendor ID: quiineav, External Device Name: billoinv, External Device Product ID: sci, External Device Serial Number: col, Zone Names: obea", - "fileset.name": "protect", - "host.name": "magnid3343.home", - "input.type": "log", - "log.offset": 15842, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "magnid3343.home" - ], - "rsa.db.index": "obea", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "threat_found", - "rsa.misc.node": "gitse", - "rsa.misc.serial_number": "col", - "rsa.network.alias_host": [ - "magnid3343.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ThreatUpdated", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "4-Jun-2018 8:44:15 high uptatem4483.localhost inrepr <umdolors 4T20:44:15.dolori asperna7623.www.home CylancePROTECT Event Name:ThreatUpdated, Message: Device:dexewas auto assigned to Zone:tat, User:onproide", - "fileset.name": "protect", - "host.name": "asperna7623.www.home", - "input.type": "log", - "log.offset": 16175, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "asperna7623.www.home" - ], - "rsa.identity.firstname": "onproide", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.event_type": "ThreatUpdated", - "rsa.misc.node": "dexe", - "rsa.network.alias_host": [ - "asperna7623.www.home" - ], - "rsa.network.zone": "tat", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "allow", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "riosa 2018-6-19T3:46:49.tNe pisc3553.internal.home CylancePROTECT rautod olest eataev Event Type: ExploitAttempt, Event Name: DeviceEdit, Device Name: ritati, IP Address: (10.43.110.203), Action: allow, Process ID: 1359, Process Name: nim.exe, User Name: ame, Violation Type: amvolu, Zone Names: mip", - "fileset.name": "protect", - "host.name": "pisc3553.internal.home", - "input.type": "log", - "log.offset": 16388, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "process.name": "nim.exe", - "process.pid": 1359, - "related.hosts": [ - "pisc3553.internal.home" - ], - "related.ip": [ - "10.43.110.203" - ], - "related.user": [ - "ame" - ], - "rsa.db.index": "mip", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " ExploitAttempt", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "DeviceEdit", - "rsa.misc.node": "ritati", - "rsa.misc.policy_name": "amvolu", - "rsa.network.alias_host": [ - "pisc3553.internal.home" - ], - "service.type": "cylance", - "source.ip": "10.43.110.203", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "ame" - }, - { - "event.action": "block", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "3-July-2018 10:49:23 medium iame4937.local tiumd <mexer 2018/07/03T10:49:23.estla uipexe7153.api.corp CylancePROTECT saqu remips illoi Event Type: AppControl, Event Name: ZoneAdd, Device Name: abori, IP Address: (10.127.20.244), Action: block, Action Type: uelauda, File Path: ema, SHA256: odi, Zone Names: ptatems", - "file.directory": "ema", - "fileset.name": "protect", - "host.name": "uipexe7153.api.corp", - "input.type": "log", - "log.offset": 16688, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "uipexe7153.api.corp" - ], - "related.ip": [ - "10.127.20.244" - ], - "rsa.db.index": "ptatems", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AppControl", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.checksum": "odi", - "rsa.misc.event_type": "ZoneAdd", - "rsa.misc.node": "abori", - "rsa.network.alias_host": [ - "uipexe7153.api.corp" - ], - "service.type": "cylance", - "source.ip": "10.127.20.244", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "LoginSuccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "nde 2018-7-17T5:51:58.abillo undeom845.www5.example CylancePROTECT quaer eetdo [tlab] Event Type: ScriptControl, Event Name: LoginSuccess, Device Name: liq, File Path: seddoeiu, Interpreter: nse, Interpreter Version: 1.3421, Zone Names: quira, User Name: tassita", - "file.directory": "seddoeiu", - "fileset.name": "protect", - "host.name": "undeom845.www5.example", - "input.type": "log", - "log.offset": 17011, - "network.application": "nse", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.3421", - "related.hosts": [ - "undeom845.www5.example" - ], - "related.user": [ - "tassita" - ], - "rsa.db.index": "quira", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1401060000, - "rsa.investigations.event_cat_name": "User.Activity.Successful Logins", - "rsa.misc.event_type": "LoginSuccess", - "rsa.misc.node": "liq", - "rsa.misc.version": "1.3421", - "rsa.network.alias_host": [ - "undeom845.www5.example" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "tassita" - }, - { - "event.action": "threat_changed", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Aug 1 12:54:32 atis6201.internal.invalid CylancePROTECT Event Type:nisiut, Event Name:threat_changed, Message: Device:quirawas auto assigned to Zone:rror, User:tatema", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 17274, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.identity.firstname": "tatema", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "nisiut", - "rsa.misc.event_type": "threat_changed", - "rsa.misc.node": "quira", - "rsa.network.zone": "rror", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "15-August-2018 07:57:06 low tperspic7591.www.lan ict <tem 2018-8-15T7:57:06.mestq ura675.mail.localdomain CylancePROTECT eleumiu uei Nequepo Event Type: DeviceControl, Event Name: DeviceRemove, Device Name: seddo, External Device Type: uam, External Device Vendor ID: orumSec, External Device Name: nisiuta, External Device Product ID: stiaecon, External Device Serial Number: dol, Zone Names: sumquiad", - "fileset.name": "protect", - "host.name": "ura675.mail.localdomain", - "input.type": "log", - "log.offset": 17441, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ura675.mail.localdomain" - ], - "rsa.db.index": "sumquiad", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.node": "seddo", - "rsa.misc.serial_number": "dol", - "rsa.network.alias_host": [ - "ura675.mail.localdomain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_quarantined", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "29-August-2018 14:59:40 high oeni179.api.localhost gna <lumqu 2018-8-29T2:59:40.onulamco ons5050.mail.test CylancePROTECT unt tass [tiumdol] Event Type: Threat, Event Name: threat_quarantined, Device Name: mquiad, IP Address: (10.48.209.115), File Name: psa, Path: nculpaq, Drive Type: reseosqu, SHA256: sequat, MD5: lor, Status: ccaec, Cylance Score: 75.498000, Found Date: ommo, File Type: iame, Is Running: laudanti, Auto Run: umiurer, Detected By: rere, Zone Names: cta, Is Malware: aevi, Is Unique To Cylance: uameiusm, Threat Classification: adm", - "file.directory": "nculpaq", - "file.name": "psa", - "file.type": "iame", - "fileset.name": "protect", - "host.name": "ons5050.mail.test", - "input.type": "log", - "log.offset": 17854, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ons5050.mail.test" - ], - "related.ip": [ - "10.48.209.115" - ], - "rsa.crypto.sig_type": "adm", - "rsa.db.index": "cta", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " Threat", - "rsa.misc.checksum": "sequat", - "rsa.misc.event_state": "ccaec", - "rsa.misc.event_type": "threat_quarantined", - "rsa.misc.node": "mquiad", - "rsa.network.alias_host": [ - "ons5050.mail.test" - ], - "rsa.web.reputation_num": 75.498, - "service.type": "cylance", - "source.ip": "10.48.209.115", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ThreatUpdated", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "12-September-2018 22:02:15 medium mnihilm1903.internal.host ditautf <ori 2018-9-12T10:02:15.uamqu olori4584.mail.domain CylancePROTECT sunt autfugit emUte Event Type: AuditLog, Event Name: ThreatUpdated, Message: Zone: nturmag; Policy: tura; Value: osquirat, User: equat aliquid (usantiu)", - "fileset.name": "protect", - "host.name": "olori4584.mail.domain", - "input.type": "log", - "log.offset": 18416, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "olori4584.mail.domain" - ], - "rsa.db.index": "nturmag", - "rsa.identity.firstname": "equat", - "rsa.identity.lastname": "aliquid", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "ThreatUpdated", - "rsa.misc.mail_id": "usantiu", - "rsa.misc.policy_name": "tura", - "rsa.network.alias_host": [ - "olori4584.mail.domain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "27-Sep-2018 5:04:49 very-high trudex4443.www5.localhost lor <eseruntm 27T05:04:49.lpaquiof oloreeu7597.mail.home CylancePROTECT Event Name:PolicyAdd, Device Name:nula, Agent Version:quiacons, IP Address: (10.7.99.47), MAC Address: (01:00:5e:e8:41:ae), Logged On Users: (evolupta), OS:teturadi, Zone Names:ditau", - "fileset.name": "protect", - "host.mac": "01:00:5e:e8:41:ae", - "host.name": "oloreeu7597.mail.home", - "input.type": "log", - "log.offset": 18714, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "oloreeu7597.mail.home" - ], - "related.ip": [ - "10.7.99.47" - ], - "related.user": [ - "evolupta" - ], - "rsa.db.index": "ditau", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.misc.OS": "teturadi", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.node": "nula", - "rsa.network.alias_host": [ - "oloreeu7597.mail.home" - ], - "rsa.network.eth_host": "01:00:5e:e8:41:ae", - "service.type": "cylance", - "source.ip": "10.7.99.47", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "evolupta" - }, - { - "event.action": "Device Updated", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "hend 2018-10-11T12:07:23.eacommo ueip5847.api.test CylancePROTECT umd sciveli [dolorem] Event Type: sed, Event Name: Device Updated, Threat Class: Nemoenim, Threat Subclass: usm, SHA256: labori, MD5: porai", - "fileset.name": "protect", - "host.name": "ueip5847.api.test", - "input.type": "log", - "log.offset": 19032, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "ueip5847.api.test" - ], - "rsa.crypto.sig_type": "Nemoenim", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804010000, - "rsa.investigations.event_cat_name": "Network.Devices.Additions", - "rsa.investigations.event_vcat": "sed", - "rsa.misc.checksum": "labori", - "rsa.misc.event_type": "Device Updated", - "rsa.network.alias_host": [ - "ueip5847.api.test" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SystemSecurity", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "ostr 2018-10-25T7:09:57.sec uid3520.www.home CylancePROTECT eFini ectob [mrema] Event Type: ScriptControl, Event Name: SystemSecurity, Device Name: prehend, File Path: eufug, Interpreter: roquisq, Interpreter Version: 1.989 (est), Zone Names: civelits, User Name: ici", - "file.directory": "eufug", - "fileset.name": "protect", - "host.name": "uid3520.www.home", - "input.type": "log", - "log.offset": 19238, - "network.application": "roquisq", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.989", - "related.hosts": [ - "uid3520.www.home" - ], - "related.user": [ - "ici" - ], - "rsa.db.index": "civelits", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1600000000, - "rsa.investigations.event_cat_name": "System", - "rsa.investigations.event_vcat": " ScriptControl", - "rsa.misc.event_type": "SystemSecurity", - "rsa.misc.node": "prehend", - "rsa.misc.version": "1.989", - "rsa.network.alias_host": [ - "uid3520.www.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "ici" - }, - { - "event.action": "SyslogSettingsSave", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Nov 9 2:12:32 miurerep3693.mail.localhost CylancePROTECT Event Type:iduntu, Event Name:SyslogSettingsSave, Device Name:inibusB, Zone Names:nostrud", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 19506, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.db.index": "nostrud", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "iduntu", - "rsa.misc.event_type": "SyslogSettingsSave", - "rsa.misc.node": "inibusB", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SyslogSettingsSave", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Nov 23 9:15:06 esse3795.www.host CylancePROTECT Event Type:pariatur, Event Name:SyslogSettingsSave, Message: The Device:imaveniawas auto assigned to Zone:expli, User:ugiat", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 19653, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.identity.firstname": "ugiat", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "pariatur", - "rsa.misc.event_type": "SyslogSettingsSave", - "rsa.misc.node": "imavenia", - "rsa.network.zone": "expli", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SystemSecurity", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "bore 2018-12-7T4:17:40.ptate teir7585.www5.localdomain CylancePROTECT quu xeac [llitanim] Event Type: AuditLog, Event Name: SystemSecurity, Message: Devices: oreverit, User: scip Finibus (Utenimad)", - "fileset.name": "protect", - "host.name": "teir7585.www5.localdomain", - "input.type": "log", - "log.offset": 19825, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "teir7585.www5.localdomain" - ], - "rsa.identity.firstname": "scip", - "rsa.identity.lastname": "Finibus", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1600000000, - "rsa.investigations.event_cat_name": "System", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "SystemSecurity", - "rsa.misc.mail_id": "Utenimad", - "rsa.misc.node": "oreverit", - "rsa.network.alias_host": [ - "teir7585.www5.localdomain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SyslogSettingsSave", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Dec 21 11:20:14 hen1901.example CylancePROTECT Event Type:ali, Event Name:SyslogSettingsSave, Device Name:quunt, External Device Type:itasp, External Device Vendor ID:qui, External Device Name:equeporr, External Device Product ID:met, External Device Serial Number:volup, Zone Names:ptate, Device Id: entsu, Policy Name: conse", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 20023, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.db.index": "ptate", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "ali", - "rsa.misc.device_name": "itasp", - "rsa.misc.event_type": "SyslogSettingsSave", - "rsa.misc.node": "quunt", - "rsa.misc.policy_name": "conse", - "rsa.misc.serial_number": "volup", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Jan 5 6:22:49 mag4267.www.test CylancePROTECT Event Type:atura, Event Name:Alert, Device Message: Device: oreeu User: ),nvo (iamqui tassita Zone Names: colabori Device Id: imidestl", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 20350, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "rsa.db.index": "colabori", - "rsa.identity.firstname": "tassita", - "rsa.identity.lastname": "iamqui", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": "atura", - "rsa.misc.device_name": "oreeu", - "rsa.misc.event_type": "Alert", - "rsa.misc.mail_id": "nvo", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ZoneAddDevice", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2019-1-19T1:25:23.minimve serrorsi1096.www5.localdomain CylancePROTECT lamco cit [siar] Event Type: AuditLog, Event Name: ZoneAddDevice, Message: The Device: reetdo was auto assigned to the Zone: IP Address: Fake Devices, User: ()ever", - "fileset.name": "protect", - "host.name": "serrorsi1096.www5.localdomain", - "input.type": "log", - "log.offset": 20531, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "serrorsi1096.www5.localdomain" - ], - "rsa.db.index": "The Device: reetdo was auto assigned to the Zone: IP Address: Fake Devices", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "ZoneAddDevice", - "rsa.misc.mail_id": "ever", - "rsa.misc.node": "reetdo", - "rsa.network.alias_host": [ - "serrorsi1096.www5.localdomain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SystemSecurity", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "quiav 2019-2-2T8:27:57.mse prehen4807.mail.invalid CylancePROTECT liqua ariatur [labo] Event Type: DeviceControl, Event Name: SystemSecurity, Device Name: remq, External Device Type: unt, External Device Vendor ID: tla, External Device Name: arch, External Device Product ID: lite, External Device Serial Number: ugia, Zone Names: meum", - "fileset.name": "protect", - "host.name": "prehen4807.mail.invalid", - "input.type": "log", - "log.offset": 20766, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "prehen4807.mail.invalid" - ], - "rsa.db.index": "meum", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1600000000, - "rsa.investigations.event_cat_name": "System", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "SystemSecurity", - "rsa.misc.node": "remq", - "rsa.misc.serial_number": "ugia", - "rsa.network.alias_host": [ - "prehen4807.mail.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_found", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "Feb 17 3:30:32 nvolupta126.www.domain CylancePROTECT Event Type:quas, Event Name:threat_found, Device Name:orp, File Path:ender, Interpreter:dico, Interpreter Version:1.5848, Zone Names:Utenima, User Name: olore", - "file.name": "ender", - "fileset.name": "protect", - "input.type": "log", - "log.offset": 21102, - "network.application": "dico", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.5848", - "related.user": [ - "olore" - ], - "rsa.db.index": "Utenima", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "quas", - "rsa.misc.event_type": "threat_found", - "rsa.misc.node": "orp", - "rsa.misc.version": "1.5848", - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "olore" - }, - { - "event.action": "DeviceRemove", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "3-March-2019 10:33:06 medium radip4253.www.corp gna <quamnih 2019-3-3T10:33:06.asnulap yCiceroi5998.mail.home CylancePROTECT inc tect uiad Event Type: DeviceControl, Event Name: DeviceRemove, Device Name: roinBCSe, External Device Type: maperiam, External Device Vendor ID: mSec, External Device Name: smoditem, External Device Product ID: tatisetq, External Device Serial Number: uidolo, Zone Names: umdolore", - "fileset.name": "protect", - "host.name": "yCiceroi5998.mail.home", - "input.type": "log", - "log.offset": 21314, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "yCiceroi5998.mail.home" - ], - "rsa.db.index": "umdolore", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804020000, - "rsa.investigations.event_cat_name": "Network.Devices.Removals", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "DeviceRemove", - "rsa.misc.node": "roinBCSe", - "rsa.misc.serial_number": "uidolo", - "rsa.network.alias_host": [ - "yCiceroi5998.mail.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ZoneAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2019-3-17T5:35:40.abori sit1400.www.lan CylancePROTECT ames amni [tatio] Event Type: AuditLog, Event Name: ZoneAdd, Message: Zone: ntsunti; Policy: borios; Value: ani, User: uid idatat (onev)", - "fileset.name": "protect", - "host.name": "sit1400.www.lan", - "input.type": "log", - "log.offset": 21729, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "sit1400.www.lan" - ], - "rsa.db.index": "ntsunti", - "rsa.identity.firstname": "uid", - "rsa.identity.lastname": "idatat", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "ZoneAdd", - "rsa.misc.mail_id": "onev", - "rsa.misc.policy_name": "borios", - "rsa.network.alias_host": [ - "sit1400.www.lan" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Device Policy Assigned", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "iosamni 2019-4-1T12:38:14.idu sis3986.internal.lan CylancePROTECT tsedquia its umdolor Event Type: isiu, Event Name: Device Policy Assigned, Device Name: mmodi, Agent Version: snostr, IP Address: (10.232.90.3), MAC Address: (01:00:5e:e6:a6:a2), Logged On Users: (midestl), OS: nci", - "fileset.name": "protect", - "host.mac": "01:00:5e:e6:a6:a2", - "host.name": "sis3986.internal.lan", - "input.type": "log", - "log.offset": 21921, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "sis3986.internal.lan" - ], - "related.ip": [ - "10.232.90.3" - ], - "related.user": [ - "midestl" - ], - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502000000, - "rsa.investigations.event_cat_name": "Policies.Rules", - "rsa.investigations.event_vcat": "isiu", - "rsa.misc.OS": "nci", - "rsa.misc.event_type": "Device Policy Assigned", - "rsa.misc.node": "mmodi", - "rsa.network.alias_host": [ - "sis3986.internal.lan" - ], - "rsa.network.eth_host": "01:00:5e:e6:a6:a2", - "service.type": "cylance", - "source.ip": "10.232.90.3", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "midestl" - }, - { - "event.action": "Device Updated", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "hilmole 2019-4-15T7:40:49.sequ sectetu7182.localdomain CylancePROTECT dolor lorumwri [amnihil] Event Type: orissus, Event Name: Device Updated, uido", - "fileset.name": "protect", - "host.name": "sectetu7182.localdomain", - "input.type": "log", - "log.offset": 22202, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "sectetu7182.localdomain" - ], - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1804010000, - "rsa.investigations.event_cat_name": "Network.Devices.Additions", - "rsa.investigations.event_vcat": "orissus", - "rsa.misc.event_type": "Device Updated", - "rsa.network.alias_host": [ - "sectetu7182.localdomain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "ZoneAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2019-4-29T2:43:23.itse officiad4982.www5.domain CylancePROTECT lumqui quiavolu [upta] Event Type: AuditLog, Event Name: ZoneAdd, Message: Device: umtota; User: etdolore magnaa (sumquiad)", - "fileset.name": "protect", - "host.name": "officiad4982.www5.domain", - "input.type": "log", - "log.offset": 22351, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "officiad4982.www5.domain" - ], - "rsa.identity.firstname": "etdolore", - "rsa.identity.lastname": "magnaa", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "ZoneAdd", - "rsa.misc.mail_id": "sumquiad", - "rsa.misc.node": "umtota", - "rsa.network.alias_host": [ - "officiad4982.www5.domain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "pechange", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2019-5-13T9:45:57.Duisa consequa1486.internal.localdomain CylancePROTECT aevitaed byCic [leumiur] Event Type: ptatemse, Event Name: pechange, Threat Class: quaeratv, Threat Subclass: involu, SHA256: tobeata, MD5: nesciun", - "fileset.name": "protect", - "host.name": "consequa1486.internal.localdomain", - "input.type": "log", - "log.offset": 22538, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "consequa1486.internal.localdomain" - ], - "rsa.crypto.sig_type": "quaeratv", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "ptatemse", - "rsa.misc.checksum": "tobeata", - "rsa.misc.event_type": "pechange", - "rsa.network.alias_host": [ - "consequa1486.internal.localdomain" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_changed", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "onorumet 2019-5-28T4:48:31.ptatema eavolup6981.www5.example CylancePROTECT psaquaea rchit psumq Event Type: DeviceControl, Event Name: threat_changed, Device Name: lum, External Device Type: xerc, External Device Vendor ID: ctetura, External Device Name: msequ, External Device Product ID: nvol, External Device Serial Number: enimadmi, Zone Names: tateveli", - "fileset.name": "protect", - "host.name": "eavolup6981.www5.example", - "input.type": "log", - "log.offset": 22759, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "eavolup6981.www5.example" - ], - "rsa.db.index": "tateveli", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " DeviceControl", - "rsa.misc.event_type": "threat_changed", - "rsa.misc.node": "lum", - "rsa.misc.serial_number": "enimadmi", - "rsa.network.alias_host": [ - "eavolup6981.www5.example" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "fullaccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2019-6-11T11:51:06.oremip its6443.mail.example CylancePROTECT natuserr ostrudex [nse] Event Type: miurere, Event Name: fullaccess, Device Name: tlabo, Agent Version: tatemse, IP Address: (10.139.80.71), MAC Address: (01:00:5e:bc:c1:21), Logged On Users: (orem), OS: eniamqui", - "fileset.name": "protect", - "host.mac": "01:00:5e:bc:c1:21", - "host.name": "its6443.mail.example", - "input.type": "log", - "log.offset": 23117, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "its6443.mail.example" - ], - "related.ip": [ - "10.139.80.71" - ], - "related.user": [ - "orem" - ], - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "miurere", - "rsa.misc.OS": "eniamqui", - "rsa.misc.event_type": "fullaccess", - "rsa.misc.node": "tlabo", - "rsa.network.alias_host": [ - "its6443.mail.example" - ], - "rsa.network.eth_host": "01:00:5e:bc:c1:21", - "service.type": "cylance", - "source.ip": "10.139.80.71", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "orem" - }, - { - "event.action": "SyslogSettingsSave", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "25-June-2019 18:53:40 high tnulapa7580.www.domain adeser <doeiu 2019-6-25T6:53:40.onsectet dentsunt6061.www5.home CylancePROTECT tobeata imven onnumqua Event Type: quioff, Event Name: SyslogSettingsSave, Device Names: (upt), Policy Name: atatnonp, User: nvol dtemp (mquis)", - "fileset.name": "protect", - "host.name": "dentsunt6061.www5.home", - "input.type": "log", - "log.offset": 23392, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "dentsunt6061.www5.home" - ], - "rsa.identity.firstname": "nvol", - "rsa.identity.lastname": "dtemp", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "quioff", - "rsa.misc.event_type": "SyslogSettingsSave", - "rsa.misc.mail_id": "mquis", - "rsa.misc.node": "upt", - "rsa.misc.policy_name": "atatnonp", - "rsa.network.alias_host": [ - "dentsunt6061.www5.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "SyslogSettingsSave", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "10-July-2019 01:56:14 medium midest133.www5.example tocca <ntor 2019-7-10T1:56:14.oinBCSed oid218.api.invalid CylancePROTECT roquisqu ariat midestl Event Type: AuditLog, Event Name: SyslogSettingsSave, Message: mcorpori, User: mqu pteursi (orsitam)", - "fileset.name": "protect", - "host.name": "oid218.api.invalid", - "input.type": "log", - "log.offset": 23674, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "oid218.api.invalid" - ], - "rsa.db.index": "mcorpori", - "rsa.identity.firstname": "mqu", - "rsa.identity.lastname": "pteursi", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "SyslogSettingsSave", - "rsa.misc.mail_id": "orsitam", - "rsa.network.alias_host": [ - "oid218.api.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "totamre 2019-7-24T8:58:48.rpo velites4233.internal.home CylancePROTECT uisaute uun end Event Type: odocons, Event Name: Alert, Threat Class: asp, Threat Subclass: dexercit, SHA256: amn, MD5: itessequ", - "fileset.name": "protect", - "host.name": "velites4233.internal.home", - "input.type": "log", - "log.offset": 23933, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "velites4233.internal.home" - ], - "rsa.crypto.sig_type": "asp", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": "odocons", - "rsa.misc.checksum": "amn", - "rsa.misc.event_type": "Alert", - "rsa.network.alias_host": [ - "velites4233.internal.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "Alert", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "7-August-2019 16:01:23 low sumd3215.test aUtenima <taevi 2019-8-7T4:01:23.uames tconsec7604.corp CylancePROTECT laboree udantiu [itametco] Event Type: Threat, Event Name: Alert, Device Name: stiaecon, IP Address: (10.223.246.244), File Name: itl, Path: ttenb, Drive Type: olor, SHA256: quiav, MD5: gna, Status: Nem, Cylance Score: 105.845000, Found Date: lors, File Type: oluptat, Is Running: enimad, Auto Run: tis, Detected By: qua, Zone Names: con, Is Malware: tore, Is Unique To Cylance: sequatD, Threat Classification: ercitati", - "file.directory": "ttenb", - "file.name": "itl", - "file.type": "oluptat", - "fileset.name": "protect", - "host.name": "tconsec7604.corp", - "input.type": "log", - "log.offset": 24133, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "tconsec7604.corp" - ], - "related.ip": [ - "10.223.246.244" - ], - "rsa.crypto.sig_type": "ercitati", - "rsa.db.index": "con", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1609000000, - "rsa.investigations.event_cat_name": "System.Alerts", - "rsa.investigations.event_vcat": " Threat", - "rsa.misc.checksum": "quiav", - "rsa.misc.event_state": "Nem", - "rsa.misc.event_type": "Alert", - "rsa.misc.node": "stiaecon", - "rsa.network.alias_host": [ - "tconsec7604.corp" - ], - "rsa.web.reputation_num": 105.845, - "service.type": "cylance", - "source.ip": "10.223.246.244", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_found", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "21-Aug-2019 11:03:57 high oeiusmo5035.api.local tconse <tseddoei 21T23:03:57.teursint etMa3452.www5.test CylancePROTECT Event Name:threat_found, Device Name:nturmag, File Path:uredol, Interpreter:maliqua, Interpreter Version:1.4613, Zone Names:mquia, User Name: omnisi, Device Id: etMalor, Policy Name: mco", - "file.name": "uredol", - "fileset.name": "protect", - "host.name": "etMa3452.www5.test", - "input.type": "log", - "log.offset": 24674, - "network.application": "maliqua", - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "observer.version": "1.4613", - "related.hosts": [ - "etMa3452.www5.test" - ], - "related.user": [ - "omnisi" - ], - "rsa.db.index": "mquia", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.event_type": "threat_found", - "rsa.misc.node": "nturmag", - "rsa.misc.policy_name": "mco", - "rsa.misc.version": "1.4613", - "rsa.network.alias_host": [ - "etMa3452.www5.test" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ], - "user.name": "omnisi" - }, - { - "event.action": "threat_found", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "5-September-2019 06:06:31 high taspe1205.mail.domain cti <nse 2019-9-5T6:06:31.mveniam tuser2694.internal.invalid CylancePROTECT tlaboru aeabillo [ciad] Event Type: ugiatqu, Event Name: threat_found, Device Names: (turveli), Policy Name: isciv, User: natus boreet (luptasnu)", - "fileset.name": "protect", - "host.name": "tuser2694.internal.invalid", - "input.type": "log", - "log.offset": 24986, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "tuser2694.internal.invalid" - ], - "rsa.identity.firstname": "natus", - "rsa.identity.lastname": "boreet", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "ugiatqu", - "rsa.misc.event_type": "threat_found", - "rsa.misc.mail_id": "luptasnu", - "rsa.misc.node": "turveli", - "rsa.misc.policy_name": "isciv", - "rsa.network.alias_host": [ - "tuser2694.internal.invalid" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "pechange", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "edqu 2019-9-19T1:09:05.tationu gnaaliq5240.api.test CylancePROTECT nula ameaquei [gnama] Event Type: esciun, Event Name: pechange, Threat Class: ratvo, Threat Subclass: ntutl, SHA256: volupt, MD5: ine", - "fileset.name": "protect", - "host.name": "gnaaliq5240.api.test", - "input.type": "log", - "log.offset": 25270, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "gnaaliq5240.api.test" - ], - "rsa.crypto.sig_type": "ratvo", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": "esciun", - "rsa.misc.checksum": "volupt", - "rsa.misc.event_type": "pechange", - "rsa.network.alias_host": [ - "gnaaliq5240.api.test" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "LoginSuccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "3-Oct-2019 8:11:40 low ditaut33.mail.localhost iumdo <mea 3T20:11:40.ssec illum2625.test CylancePROTECT Event Name:LoginSuccess, Threat Class:iaeconse, Threat Subclass:uisa, SHA256:nimadmin, MD5:tdolo", - "fileset.name": "protect", - "host.name": "illum2625.test", - "input.type": "log", - "log.offset": 25471, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "illum2625.test" - ], - "rsa.crypto.sig_type": "iaeconse", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1401060000, - "rsa.investigations.event_cat_name": "User.Activity.Successful Logins", - "rsa.misc.checksum": "nimadmin", - "rsa.misc.event_type": "LoginSuccess", - "rsa.network.alias_host": [ - "illum2625.test" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "18-October-2019 03:14:14 high porissus1225.www5.corp ddoe <ured 2019-10-18T3:14:14.ctetu oreeu6419.www.corp CylancePROTECT cul iinea snos Event Type: AuditLog, Event Name: PolicyAdd, Message: Device: moenimip; User: uames tium (ianonn)", - "fileset.name": "protect", - "host.name": "oreeu6419.www.corp", - "input.type": "log", - "log.offset": 25679, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "oreeu6419.www.corp" - ], - "rsa.identity.firstname": "uames", - "rsa.identity.lastname": "tium", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.mail_id": "ianonn", - "rsa.misc.node": "moenimip", - "rsa.network.alias_host": [ - "oreeu6419.www.corp" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "PolicyAdd", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2019-11-1T10:16:48.tiset sci333.mail.home CylancePROTECT doloreeu lors eumfu Event Type: docons, Event Name: PolicyAdd, Device Names: (eumf), Policy Name: roquisq, User: uasi maveniam (uis)", - "fileset.name": "protect", - "host.name": "sci333.mail.home", - "input.type": "log", - "log.offset": 25925, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "sci333.mail.home" - ], - "rsa.identity.firstname": "uasi", - "rsa.identity.lastname": "maveniam", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1502030000, - "rsa.investigations.event_cat_name": "Policies.Rules.Added", - "rsa.investigations.event_vcat": "docons", - "rsa.misc.event_type": "PolicyAdd", - "rsa.misc.mail_id": "uis", - "rsa.misc.node": "eumf", - "rsa.misc.policy_name": "roquisq", - "rsa.network.alias_host": [ - "sci333.mail.home" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "LoginSuccess", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "imi 2019-11-15T5:19:22.animi edutpers6452.api.host CylancePROTECT ntiumt sumquia vento Event Type: sitv, Event Name: LoginSuccess, Threat Class: com, Threat Subclass: rep, SHA256: mveni, MD5: aquae", - "fileset.name": "protect", - "host.name": "edutpers6452.api.host", - "input.type": "log", - "log.offset": 26115, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "edutpers6452.api.host" - ], - "rsa.crypto.sig_type": "com", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1401060000, - "rsa.investigations.event_cat_name": "User.Activity.Successful Logins", - "rsa.investigations.event_vcat": "sitv", - "rsa.misc.checksum": "mveni", - "rsa.misc.event_type": "LoginSuccess", - "rsa.network.alias_host": [ - "edutpers6452.api.host" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "deny", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "30-November-2019 00:21:57 low iaturE3103.api.domain aturve <iatu 2019/11/30T00:21:57.use nulamc5617.mail.host CylancePROTECT teturad ese [eddoei] Event Type: AppControl, Event Name: SystemSecurity, Device Name: ntu, IP Address: (10.134.137.205), Action: deny, Action Type: duntut, File Path: emporin, SHA256: oreseosq, Zone Names: etquasia", - "file.directory": "emporin", - "fileset.name": "protect", - "host.name": "nulamc5617.mail.host", - "input.type": "log", - "log.offset": 26313, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "nulamc5617.mail.host" - ], - "related.ip": [ - "10.134.137.205" - ], - "rsa.db.index": "etquasia", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1600000000, - "rsa.investigations.event_cat_name": "System", - "rsa.investigations.event_vcat": " AppControl", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.checksum": "oreseosq", - "rsa.misc.event_type": "SystemSecurity", - "rsa.misc.node": "ntu", - "rsa.network.alias_host": [ - "nulamc5617.mail.host" - ], - "service.type": "cylance", - "source.ip": "10.134.137.205", - "tags": [ - "cylance.protect", - "forwarded" - ] - }, - { - "event.action": "threat_found", - "event.code": "CylancePROTECT", - "event.dataset": "cylance.protect", - "event.module": "cylance", - "event.original": "2019-12-14T7:24:31.cinge tatem4713.internal.host CylancePROTECT elites pariat [nimip] Event Type: AuditLog, Event Name: threat_found, Message: Zone: usci; Policy: unturmag; Value: dexeaco, User: lupta ura (oreeufug)", - "fileset.name": "protect", - "host.name": "tatem4713.internal.host", - "input.type": "log", - "log.offset": 26662, - "observer.product": "Protect", - "observer.type": "Anti-Virus", - "observer.vendor": "Cylance", - "related.hosts": [ - "tatem4713.internal.host" - ], - "rsa.db.index": "usci", - "rsa.identity.firstname": "lupta", - "rsa.identity.lastname": "ura", - "rsa.internal.messageid": "CylancePROTECT", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.investigations.event_vcat": " AuditLog", - "rsa.misc.event_type": "threat_found", - "rsa.misc.mail_id": "oreeufug", - "rsa.misc.policy_name": "unturmag", - "rsa.network.alias_host": [ - "tatem4713.internal.host" - ], - "service.type": "cylance", - "tags": [ - "cylance.protect", - "forwarded" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/f5/README.md b/x-pack/filebeat/module/f5/README.md deleted file mode 100644 index 37a9e5f20c3..00000000000 --- a/x-pack/filebeat/module/f5/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# f5 module - -This is a module for Big-IP Access Policy Manager logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML bigipapm version 113 -at 2020-07-13 17:55:34.191415 +0000 UTC. - diff --git a/x-pack/filebeat/module/f5/_meta/config.yml b/x-pack/filebeat/module/f5/_meta/config.yml deleted file mode 100644 index 48ccc13d31a..00000000000 --- a/x-pack/filebeat/module/f5/_meta/config.yml +++ /dev/null @@ -1,38 +0,0 @@ -- module: f5 - bigipapm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9504 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - bigipafm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9528 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/f5/_meta/docs.asciidoc b/x-pack/filebeat/module/f5/_meta/docs.asciidoc deleted file mode 100644 index 28d57c59be5..00000000000 --- a/x-pack/filebeat/module/f5/_meta/docs.asciidoc +++ /dev/null @@ -1,119 +0,0 @@ -[role="xpack"] - -:modulename: f5 -:has-dashboards: false - -== F5 module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/f5_bigip[F5 BIG-IP] Elastic integration instead."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for F5 network device's logs. It includes the following -filesets for receiving logs over syslog or read from a file: - -- `bigipapm` fileset: supports F5 Big-IP Access Policy Manager. -- `bigipafm` fileset: supports F5 Big-IP Advanced Firewall Manager. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: bigipapm - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `bigipapm` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "bigipapm" device revision 113. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9504` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `bigipafm` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "bigipafm" device revision 121. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9528` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/f5/_meta/fields.yml b/x-pack/filebeat/module/f5/_meta/fields.yml deleted file mode 100644 index 7cd2cda6541..00000000000 --- a/x-pack/filebeat/module/f5/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: f5 - title: Big-IP Access Policy Manager - description: > - f5 fields. - fields: diff --git a/x-pack/filebeat/module/f5/bigipafm/_meta/fields.yml b/x-pack/filebeat/module/f5/bigipafm/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/f5/bigipafm/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/f5/bigipafm/config/input.yml b/x-pack/filebeat/module/f5/bigipafm/config/input.yml deleted file mode 100644 index 4a241639655..00000000000 --- a/x-pack/filebeat/module/f5/bigipafm/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "F5" - product: "Big-IP" - type: "Firewall" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/f5/bigipafm/config/liblogparser.js - - ${path.home}/module/f5/bigipafm/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/f5/bigipafm/config/liblogparser.js b/x-pack/filebeat/module/f5/bigipafm/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/f5/bigipafm/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{hfld2->} %{hhostname->} %{hfld3->} %{hfld4->} %{hfld5->} [F5@%{hfld6->} %{payload}", processor_chain([ - setc("header_id","0001"), - setc("messageid","BIGIP_AFM"), -])); - -var select1 = linear_select([ - hdr1, -]); - -var part1 = tagval("MESSAGE#0:BIGIP_AFM", "nwparser.payload", tvm, { - "acl_policy_name": "policyname", - "acl_policy_type": "fld1", - "acl_rule_name": "rulename", - "action": "action", - "bigip_mgmt_ip": "hostip", - "context_name": "context", - "context_type": "fld2", - "date_time": "event_time_string", - "dest_ip": "daddr", - "dest_port": "dport", - "device_product": "product", - "device_vendor": "fld3", - "device_version": "version", - "drop_reason": "fld4", - "dst_geo": "location_dst", - "errdefs_msg_name": "event_type", - "errdefs_msgno": "id", - "flow_id": "fld5", - "hostname": "hostname", - "ip_protocol": "protocol", - "partition_name": "fld6", - "route_domain": "fld7", - "sa_translation_pool": "fld8", - "sa_translation_type": "fld9", - "severity": "severity", - "source_ip": "saddr", - "source_port": "sport", - "source_user": "username", - "src_geo": "location_src", - "translated_dest_ip": "dtransaddr", - "translated_dest_port": "dtransport", - "translated_ip_protocol": "fld10", - "translated_route_domain": "fld11", - "translated_source_ip": "stransaddr", - "translated_source_port": "stransport", - "translated_vlan": "fld12", - "vlan": "vlan", -}, processor_chain([ - setc("eventcategory","1801000000"), - setf("msg","$MSG"), - date_time({ - dest: "event_time", - args: ["event_time_string"], - fmts: [ - [dB,dD,dW,dZ], - ], - }), - setc("ec_subject","NetworkComm"), - setc("ec_theme","Communication"), - lookup({ - dest: "nwparser.ec_activity", - map: map_getEventCategoryActivity, - key: field("action"), - }), - setf("obj_name","hfld6"), -])); - -var msg1 = msg("BIGIP_AFM", part1); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "BIGIP_AFM": msg1, - }), -]); diff --git a/x-pack/filebeat/module/f5/bigipafm/ingest/pipeline.yml b/x-pack/filebeat/module/f5/bigipafm/ingest/pipeline.yml deleted file mode 100644 index ae772c9b6a3..00000000000 --- a/x-pack/filebeat/module/f5/bigipafm/ingest/pipeline.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -description: Pipeline for Big-IP Advanced Firewall Manager - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/f5/bigipafm/manifest.yml b/x-pack/filebeat/module/f5/bigipafm/manifest.yml deleted file mode 100644 index 3c7c3383882..00000000000 --- a/x-pack/filebeat/module/f5/bigipafm/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["f5.bigipafm", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9544 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/f5/bigipafm/test/generated.log b/x-pack/filebeat/module/f5/bigipafm/test/generated.log deleted file mode 100644 index 6bf7146dfe9..00000000000 --- a/x-pack/filebeat/module/f5/bigipafm/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -iusm modtempo olab6078.home olaboris tur itv [F5@odoco acl_policy_name=ria acl_policy_type=min acl_rule_name=ite action=Closed hostname=tatemac3541.api.corp bigip_mgmt_ip=10.228.193.207 context_name=liqua context_type=ciade date_time=Jan 29 2016 06:09:59 dest_ip=10.125.114.51 dst_geo=umq dest_port=2288 device_product=pexe device_vendor=nes device_version=1.2262 drop_reason=reveri errdefs_msgno=boNemoe errdefs_msg_name=equepor flow_id=eni ip_protocol=ipv6 severity=low partition_name=ehend route_domain=ritquiin sa_translation_pool=umqui sa_translation_type=reeufugi source_ip=10.208.121.85 src_geo=sperna source_port=884 source_user=billoi translated_dest_ip=10.165.201.71 translated_dest_port=6153 translated_ip_protocol=tatemU translated_route_domain=deF translated_source_ip=10.11.196.142 translated_source_port=5222 translated_vlan=iatnu vlan=3810 -eporr quipexe alo4540.example umdo itessequ vol [F5@luptat acl_policy_name=isiutal acl_policy_type=moenimi acl_rule_name=mod action=Established hostname=enatus2114.mail.home bigip_mgmt_ip=10.51.132.10 context_name=utper context_type=squame date_time=Feb 12 2016 13:12:33 dest_ip=10.173.116.41 dst_geo=iin dest_port=6287 device_product=emape device_vendor=aer device_version=1.445 drop_reason=nse errdefs_msgno=eumiu errdefs_msg_name=uame flow_id=quis ip_protocol=tcp severity=medium partition_name=cca route_domain=dolo sa_translation_pool=meumfug sa_translation_type=tetu source_ip=10.162.9.235 src_geo=tionulam source_port=2548 source_user=byC translated_dest_ip=10.94.67.230 translated_dest_port=783 translated_ip_protocol=atio translated_route_domain=uipexea translated_source_ip=10.92.202.200 translated_source_port=6772 translated_vlan=eFini vlan=859 -exe iatu ionofde2424.api.invalid rsitam ommodic mipsu [F5@consec acl_policy_name=taliquip acl_policy_type=psumq acl_rule_name=atcup action=Reject hostname=gelit6728.api.invalid bigip_mgmt_ip=10.122.116.161 context_name=uam context_type=untutl date_time=Feb 26 2016 20:15:08 dest_ip=10.40.68.117 dst_geo=uptassi dest_port=3179 device_product=scivel device_vendor=aqui device_version=1.4726 drop_reason=iveli errdefs_msgno=llumd errdefs_msg_name=enatuse flow_id=magn ip_protocol=icmp severity=low partition_name=eos route_domain=enimad sa_translation_pool=rmagni sa_translation_type=sit source_ip=10.209.155.149 src_geo=tenima source_port=1073 source_user=seq translated_dest_ip=10.82.56.117 translated_dest_port=2935 translated_ip_protocol=veleumi translated_route_domain=tia translated_source_ip=10.191.68.244 translated_source_port=6905 translated_vlan=veri vlan=5990 -siutaliq exercit tempor4496.www.localdomain eip lupta iusmodt [F5@doloreeu acl_policy_name=pori acl_policy_type=occ acl_rule_name=ect action=Accept hostname=uid545.www5.localhost bigip_mgmt_ip=10.12.44.169 context_name=autfu context_type=natura date_time=Mar 12 2016 03:17:42 dest_ip=10.163.217.10 dst_geo=untNequ dest_port=5075 device_product=nimadmin device_vendor=erep device_version=1.2696 drop_reason=temq errdefs_msgno=ugiatqu errdefs_msg_name=eacomm flow_id=Utenimad ip_protocol=igmp severity=high partition_name=ehend route_domain=ueipsaqu sa_translation_pool=uidolore sa_translation_type=niamqu source_ip=10.202.66.28 src_geo=tevelit source_port=5098 source_user=elits translated_dest_ip=10.131.233.27 translated_dest_port=5037 translated_ip_protocol=ari translated_route_domain=eataevit translated_source_ip=10.50.112.141 translated_source_port=7303 translated_vlan=dmi vlan=499 -mquisnos loremagn iciade3433.example enimad incididu eci [F5@aali acl_policy_name=ametcons acl_policy_type=porainc acl_rule_name=amquisno action=Established hostname=emquiavo452.internal.localhost bigip_mgmt_ip=10.151.111.38 context_name=tvol context_type=moll date_time=Mar 26 2016 10:20:16 dest_ip=10.228.149.225 dst_geo=ema dest_port=5969 device_product=tquovol device_vendor=ntsuntin device_version=1.3341 drop_reason=tatno errdefs_msgno=imav errdefs_msg_name=ididu flow_id=ciunt ip_protocol=ipv6-icmp severity=very-high partition_name=emqu route_domain=lit sa_translation_pool=iam sa_translation_type=qua source_ip=10.159.182.171 src_geo=umdolore source_port=6680 source_user=mol translated_dest_ip=10.96.35.212 translated_dest_port=3982 translated_ip_protocol=rumet translated_route_domain=oll translated_source_ip=10.206.197.113 translated_source_port=4075 translated_vlan=temUten vlan=4125 -iqu ollit usan6343.www5.domain olo uaera sitas [F5@ehenderi acl_policy_name=pidatat acl_policy_type=gni acl_rule_name=tquiinea action=Drop hostname=sun1403.www.invalid bigip_mgmt_ip=10.126.177.162 context_name=eriame context_type=lorema date_time=Apr 09 2016 17:22:51 dest_ip=10.213.82.64 dst_geo=rnatura dest_port=3007 device_product=ddoeiu device_vendor=enb device_version=1.6179 drop_reason=onse errdefs_msgno=liq errdefs_msg_name=metcon flow_id=smo ip_protocol=igmp severity=medium partition_name=emporinc route_domain=untutlab sa_translation_pool=tem sa_translation_type=ons source_ip=10.213.113.28 src_geo=ali source_port=6446 source_user=ist translated_dest_ip=10.169.144.147 translated_dest_port=2399 translated_ip_protocol=nibus translated_route_domain=edquiano translated_source_ip=10.89.163.114 translated_source_port=5166 translated_vlan=par vlan=686 -rveli rsint omm4276.www.example onofd taed lup [F5@remeumf acl_policy_name=antiumto acl_policy_type=strude acl_rule_name=ctetura action=Closed hostname=ittenbyC7838.api.localdomain bigip_mgmt_ip=10.18.124.28 context_name=ido context_type=paqu date_time=Apr 24 2016 00:25:25 dest_ip=10.158.194.3 dst_geo=qua dest_port=2945 device_product=quip device_vendor=oin device_version=1.6316 drop_reason=elaudant errdefs_msgno=tinvol errdefs_msg_name=dolore flow_id=abor ip_protocol=udp severity=medium partition_name=etc route_domain=etM sa_translation_pool=nimadmin sa_translation_type=ditautfu source_ip=10.146.88.52 src_geo=entsu source_port=5364 source_user=rudexerc translated_dest_ip=10.101.223.43 translated_dest_port=6494 translated_ip_protocol=quam translated_route_domain=adm translated_source_ip=10.103.107.47 translated_source_port=6094 translated_vlan=Nemoen vlan=2827 -icab mwr fugi4637.www.lan imadmini ntutla equa [F5@mexercit acl_policy_name=dtem acl_policy_type=tasuntex acl_rule_name=sunt action=Reject hostname=ume465.corp bigip_mgmt_ip=10.189.109.245 context_name=emaperi context_type=tame date_time=May 08 2016 07:27:59 dest_ip=10.83.234.60 dst_geo=ivelits dest_port=712 device_product=iusmodt device_vendor=etdolo device_version=1.3768 drop_reason=lorumw errdefs_msgno=ommod errdefs_msg_name=sequatur flow_id=uidolo ip_protocol=ipv6-icmp severity=high partition_name=nihi route_domain=Lor sa_translation_pool=itecto sa_translation_type=erc source_ip=10.69.57.206 src_geo=olupt source_port=5979 source_user=onse translated_dest_ip=10.110.99.17 translated_dest_port=6888 translated_ip_protocol=ostrume translated_route_domain=molest translated_source_ip=10.150.220.75 translated_source_port=1298 translated_vlan=tisetq vlan=5372 -ici giatquov eritquii3561.www.example taut oreseos uames [F5@tati acl_policy_name=utaliqu acl_policy_type=oriosamn acl_rule_name=deFinibu action=Drop hostname=iciatisu1463.www5.localdomain bigip_mgmt_ip=10.153.136.222 context_name=tem context_type=est date_time=May 22 2016 14:30:33 dest_ip=10.176.205.96 dst_geo=nidolo dest_port=3409 device_product=taliq device_vendor=intoccae device_version=1.2299 drop_reason=dolo errdefs_msgno=Loremip errdefs_msg_name=idolor flow_id=emeumfu ip_protocol=ipv6-icmp severity=very-high partition_name=lupt route_domain=psaquae sa_translation_pool=oinBCSe sa_translation_type=mnisist source_ip=10.199.34.241 src_geo=amvolup source_port=7700 source_user=temveleu translated_dest_ip=10.19.194.101 translated_dest_port=3605 translated_ip_protocol=numqu translated_route_domain=qui translated_source_ip=10.121.219.204 translated_source_port=3496 translated_vlan=utali vlan=3611 -reetd lumqui itinvo7084.mail.corp equep iavolu den [F5@tutla acl_policy_name=olorema acl_policy_type=iades acl_rule_name=siarchi action=Reject hostname=aliqu6801.api.localdomain bigip_mgmt_ip=10.46.27.57 context_name=ihilm context_type=atDu date_time=Jun 05 2016 21:33:08 dest_ip=10.128.232.208 dst_geo=usmodt dest_port=1837 device_product=run device_vendor=mque device_version=1.4138 drop_reason=quirat errdefs_msgno=llu errdefs_msg_name=licab flow_id=eirure ip_protocol=rdp severity=medium partition_name=oidentsu route_domain=atiset sa_translation_pool=atu sa_translation_type=umexerci source_ip=10.64.141.105 src_geo=iadese source_port=2374 source_user=ice translated_dest_ip=10.57.103.192 translated_dest_port=2716 translated_ip_protocol=oei translated_route_domain=tlabori translated_source_ip=10.182.199.231 translated_source_port=1426 translated_vlan=data vlan=4478 -nnum eritqu uradip7152.www5.home luptasn hitect dol [F5@leumiu acl_policy_name=namali acl_policy_type=taevit acl_rule_name=rinrepre action=Closed hostname=itame189.domain bigip_mgmt_ip=10.32.67.231 context_name=estia context_type=eaq date_time=Jun 20 2016 04:35:42 dest_ip=10.66.80.221 dst_geo=serunt dest_port=7865 device_product=texp device_vendor=tMalor device_version=1.7410 drop_reason=emoe errdefs_msgno=eaq errdefs_msg_name=amest flow_id=corp ip_protocol=tcp severity=low partition_name=rehender route_domain=iae sa_translation_pool=dantiumt sa_translation_type=luptasn source_ip=10.164.6.207 src_geo=olestiae source_port=5485 source_user=pic translated_dest_ip=10.160.210.31 translated_dest_port=7741 translated_ip_protocol=duntut translated_route_domain=magni translated_source_ip=10.3.134.237 translated_source_port=3156 translated_vlan=radipisc vlan=7020 -fficiade uscipit vitaedi1318.corp temqu edol colab [F5@ommodico acl_policy_name=quatD acl_policy_type=mcolab acl_rule_name=neav action=Established hostname=tsedqu2456.www5.invalid bigip_mgmt_ip=10.182.178.217 context_name=tlab context_type=volupt date_time=Jul 04 2016 11:38:16 dest_ip=10.188.169.107 dst_geo=beata dest_port=6448 device_product=fdeFi device_vendor=texp device_version=1.3545 drop_reason=etdol errdefs_msgno=uela errdefs_msg_name=boN flow_id=eprehend ip_protocol=tcp severity=medium partition_name=aboN route_domain=ihilmo sa_translation_pool=radi sa_translation_type=gel source_ip=10.235.101.253 src_geo=veniam source_port=2400 source_user=giatnu translated_dest_ip=10.42.138.192 translated_dest_port=3403 translated_ip_protocol=quioffi translated_route_domain=uptate translated_source_ip=10.201.6.10 translated_source_port=6608 translated_vlan=sequa vlan=2851 -ate aliquam nimid893.mail.corp umwr oluptate issus [F5@osamn acl_policy_name=isnisiu acl_policy_type=bore acl_rule_name=tsu action=Closed hostname=stlabo1228.mail.host bigip_mgmt_ip=10.151.161.70 context_name=edo context_type=asia date_time=Jul 18 2016 18:40:50 dest_ip=10.108.167.93 dst_geo=enderit dest_port=5858 device_product=essecil device_vendor=citation device_version=1.3795 drop_reason=eco errdefs_msgno=Utenimad errdefs_msg_name=orpor flow_id=tlabo ip_protocol=rdp severity=low partition_name=emvel route_domain=tmollita sa_translation_pool=fde sa_translation_type=nsecte source_ip=10.22.102.198 src_geo=eroi source_port=176 source_user=nse translated_dest_ip=10.194.247.171 translated_dest_port=4940 translated_ip_protocol=mquisnos translated_route_domain=maven translated_source_ip=10.86.101.235 translated_source_port=3266 translated_vlan=lapar vlan=1024 -tfu udan orema6040.api.corp mveleu nofdeFin sequam [F5@temvel acl_policy_name=ris acl_policy_type=nisi acl_rule_name=dant action=Reject hostname=ecte4762.local bigip_mgmt_ip=10.204.35.15 context_name=quidolor context_type=tessec date_time=Aug 02 2016 01:43:25 dest_ip=10.135.160.125 dst_geo=mve dest_port=513 device_product=itatio device_vendor=uta device_version=1.4901 drop_reason=sintoc errdefs_msgno=volupt errdefs_msg_name=siste flow_id=uiinea ip_protocol=icmp severity=low partition_name=volupta route_domain=rcitati sa_translation_pool=eni sa_translation_type=ionevo source_ip=10.174.252.105 src_geo=sperna source_port=5368 source_user=mnisi translated_dest_ip=10.107.168.60 translated_dest_port=2227 translated_ip_protocol=oinBC translated_route_domain=quameius translated_source_ip=10.167.172.155 translated_source_port=3544 translated_vlan=etdo vlan=706 -ese isaute ptatemq95.api.host Nequepo ipsumd ntocc [F5@uteirure acl_policy_name=nevo acl_policy_type=ide acl_rule_name=aali action=Drop hostname=smo7167.www.test bigip_mgmt_ip=10.214.249.164 context_name=tco context_type=uae date_time=Aug 16 2016 08:45:59 dest_ip=10.187.20.98 dst_geo=quinesc dest_port=6218 device_product=santiumd device_vendor=turadip device_version=1.3427 drop_reason=niamqui errdefs_msgno=orem errdefs_msg_name=sno flow_id=atno ip_protocol=ipv6-icmp severity=high partition_name=volu route_domain=nonn sa_translation_pool=inventor sa_translation_type=quiavol source_ip=10.99.249.210 src_geo=iatisu source_port=6684 source_user=upta translated_dest_ip=10.182.191.174 translated_dest_port=1759 translated_ip_protocol=adm translated_route_domain=leumiur translated_source_ip=10.81.26.208 translated_source_port=7651 translated_vlan=isc vlan=5933 -tobea tor qui4499.api.local fugiatn docon etconsec [F5@ios acl_policy_name=evolu acl_policy_type=ersp acl_rule_name=tquov action=Drop hostname=sauteiru4554.api.domain bigip_mgmt_ip=10.220.5.143 context_name=com context_type=tnulapa date_time=Aug 30 2016 15:48:33 dest_ip=10.108.85.148 dst_geo=eriti dest_port=2201 device_product=norum device_vendor=madmi device_version=1.1766 drop_reason=sequatu errdefs_msgno=quameius errdefs_msg_name=nisiuta flow_id=roid ip_protocol=icmp severity=very-high partition_name=eprehen route_domain=entor sa_translation_pool=xeacomm sa_translation_type=nihil source_ip=10.101.226.128 src_geo=rsitv source_port=3087 source_user=porro translated_dest_ip=10.88.101.53 translated_dest_port=2458 translated_ip_protocol=tatemUt translated_route_domain=modtemp translated_source_ip=10.201.238.90 translated_source_port=2715 translated_vlan=remag vlan=3759 -ccaecat tquiin tse4198.www.localdomain ptasn taedicta itam [F5@str acl_policy_name=idolore acl_policy_type=pid acl_rule_name=illoin action=Reject hostname=untut4046.internal.domain bigip_mgmt_ip=10.217.150.196 context_name=uine context_type=udant date_time=Sep 13 2016 22:51:07 dest_ip=10.183.59.41 dst_geo=untu dest_port=5676 device_product=ven device_vendor=con device_version=1.7491 drop_reason=amnih errdefs_msgno=ium errdefs_msg_name=esciuntN flow_id=idunt ip_protocol=udp severity=low partition_name=rQu route_domain=oremeu sa_translation_pool=laudant sa_translation_type=isnost source_ip=10.157.18.252 src_geo=itess source_port=52 source_user=evit translated_dest_ip=10.30.133.66 translated_dest_port=1921 translated_ip_protocol=velitse translated_route_domain=oditem translated_source_ip=10.243.218.215 translated_source_port=662 translated_vlan=rsitvolu vlan=3751 -sumdolor meaqueip npr4414.api.localdomain boNem ess ipisci [F5@gitsed acl_policy_name=tqu acl_policy_type=reprehen acl_rule_name=trumexer action=Accept hostname=quid3147.mail.home bigip_mgmt_ip=10.66.181.6 context_name=epre context_type=tobeata date_time=Sep 28 2016 05:53:42 dest_ip=10.181.53.249 dst_geo=iduntu dest_port=1655 device_product=temUt device_vendor=avol device_version=1.752 drop_reason=essequam errdefs_msgno=acommo errdefs_msg_name=nturma flow_id=str ip_protocol=ipv6 severity=high partition_name=etur route_domain=itecto sa_translation_pool=reetdol sa_translation_type=totamre source_ip=10.148.161.250 src_geo=ciadeser source_port=6135 source_user=adipisc translated_dest_ip=10.181.133.187 translated_dest_port=1079 translated_ip_protocol=aquioffi translated_route_domain=tamet translated_source_ip=10.167.227.44 translated_source_port=6595 translated_vlan=eFi vlan=6733 -its ender riamea1540.www.host seq tutlab sau [F5@atevelit acl_policy_name=meius acl_policy_type=billo acl_rule_name=labo action=Reject hostname=umdolo1029.mail.localhost bigip_mgmt_ip=10.54.17.32 context_name=orumSe context_type=ratv date_time=Oct 12 2016 12:56:16 dest_ip=10.119.81.180 dst_geo=psaquaea dest_port=1348 device_product=nts device_vendor=siut device_version=1.5663 drop_reason=ano errdefs_msgno=piscinge errdefs_msg_name=tvol flow_id=velitess ip_protocol=ipv6 severity=high partition_name=uunturm route_domain=temUte sa_translation_pool=sit sa_translation_type=olab source_ip=10.84.163.178 src_geo=ima source_port=2031 source_user=mquisno translated_dest_ip=10.107.9.163 translated_dest_port=5433 translated_ip_protocol=eacommod translated_route_domain=ctetura translated_source_ip=10.74.11.43 translated_source_port=55 translated_vlan=seosqui vlan=6797 -uradi tot llamco7206.www.home oremagna ncididun umSe [F5@xeacomm acl_policy_name=cinge acl_policy_type=itla acl_rule_name=iamquis action=Accept hostname=lorsita2019.internal.home bigip_mgmt_ip=10.192.229.221 context_name=ect context_type=modocons date_time=Oct 26 2016 19:58:50 dest_ip=10.199.194.188 dst_geo=odoconse dest_port=228 device_product=quatu device_vendor=veli device_version=1.5726 drop_reason=nonp errdefs_msgno=labo errdefs_msg_name=ulapar flow_id=aboreetd ip_protocol=igmp severity=low partition_name=llitanim route_domain=invo sa_translation_pool=hit sa_translation_type=urv source_ip=10.112.32.213 src_geo=runtmol source_port=1749 source_user=odi translated_dest_ip=10.184.73.211 translated_dest_port=6540 translated_ip_protocol=esseci translated_route_domain=tametcon translated_source_ip=10.230.129.252 translated_source_port=3947 translated_vlan=isis vlan=4917 -utlab emUteni rum959.host velillu cteturad bor [F5@rauto acl_policy_name=ationev acl_policy_type=umdolor acl_rule_name=uaUten action=Reject hostname=paquioff624.mail.invalid bigip_mgmt_ip=10.161.148.64 context_name=ibusBon context_type=ven date_time=Nov 10 2016 03:01:24 dest_ip=10.162.114.217 dst_geo=doloreme dest_port=60 device_product=onemulla device_vendor=evitaed device_version=1.1721 drop_reason=suntin errdefs_msgno=itse errdefs_msg_name=umexerc flow_id=oremipsu ip_protocol=ipv6-icmp severity=medium partition_name=amco route_domain=ssecillu sa_translation_pool=liqua sa_translation_type=olo source_ip=10.199.216.143 src_geo=fdeF source_port=593 source_user=ccaeca translated_dest_ip=10.198.213.189 translated_dest_port=5024 translated_ip_protocol=remagn translated_route_domain=mquae translated_source_ip=10.7.200.140 translated_source_port=3298 translated_vlan=olupt vlan=2189 -edquiac urerepr eseru4234.mail.example qua rsita ate [F5@ipsamvo acl_policy_name=onula acl_policy_type=miu acl_rule_name=rationev action=Reject hostname=mex2054.mail.corp bigip_mgmt_ip=10.65.232.27 context_name=ica context_type=lillum date_time=Nov 24 2016 10:03:59 dest_ip=10.199.40.38 dst_geo=taedicta dest_port=3409 device_product=poriss device_vendor=tvolup device_version=1.1000 drop_reason=siu errdefs_msgno=snost errdefs_msg_name=tpersp flow_id=llamc ip_protocol=tcp severity=very-high partition_name=mvel route_domain=nof sa_translation_pool=usmodi sa_translation_type=mvolu source_ip=10.206.96.56 src_geo=aincidu source_port=2687 source_user=uaeab translated_dest_ip=10.128.157.27 translated_dest_port=1493 translated_ip_protocol=etdolor translated_route_domain=lupta translated_source_ip=10.22.187.69 translated_source_port=3590 translated_vlan=oremi vlan=1485 -nbyCi tevel usc5760.www5.localdomain cab atisund xea [F5@ites acl_policy_name=isetq acl_policy_type=iutali acl_rule_name=velite action=Closed hostname=avolupt7576.api.corp bigip_mgmt_ip=10.194.210.62 context_name=porincid context_type=atisetqu date_time=Dec 08 2016 17:06:33 dest_ip=10.51.213.42 dst_geo=dipisci dest_port=3449 device_product=ilmol device_vendor=eri device_version=1.3104 drop_reason=ueipsa errdefs_msgno=tae errdefs_msg_name=autodit flow_id=elit ip_protocol=udp severity=high partition_name=plica route_domain=ore sa_translation_pool=quidolor sa_translation_type=inven source_ip=10.71.114.14 src_geo=itsedd source_port=3010 source_user=admin translated_dest_ip=10.68.253.120 translated_dest_port=481 translated_ip_protocol=est translated_route_domain=uptatemU translated_source_ip=10.183.130.225 translated_source_port=5693 translated_vlan=item vlan=2738 -dat periam dqu6144.api.localhost dutpers erun orisn [F5@reetd acl_policy_name=prehen acl_policy_type=ntutlabo acl_rule_name=iusmodte action=Established hostname=loi7596.www5.home bigip_mgmt_ip=10.31.177.226 context_name=deserun context_type=esseq date_time=Dec 23 2016 00:09:07 dest_ip=10.209.157.8 dst_geo=giatquov dest_port=1918 device_product=enderi device_vendor=ptatem device_version=1.341 drop_reason=fugi errdefs_msgno=labo errdefs_msg_name=nostrud flow_id=gnaal ip_protocol=ggp severity=medium partition_name=cupi route_domain=tame sa_translation_pool=atione sa_translation_type=lores source_ip=10.45.253.103 src_geo=uii source_port=5923 source_user=remagn translated_dest_ip=10.47.255.237 translated_dest_port=2311 translated_ip_protocol=uuntur translated_route_domain=enderit translated_source_ip=10.107.45.175 translated_source_port=4185 translated_vlan=rumSecti vlan=4593 -atise tate onevo4326.internal.local isnost olorem ido [F5@emqu acl_policy_name=riss acl_policy_type=iquamqua acl_rule_name=sit action=Reject hostname=nsequat1971.internal.invalid bigip_mgmt_ip=10.225.212.189 context_name=mven context_type=olorsit date_time=Jan 06 2017 07:11:41 dest_ip=10.121.239.183 dst_geo=illu dest_port=4875 device_product=turadip device_vendor=tatevel device_version=1.1607 drop_reason=ptassita errdefs_msgno=its errdefs_msg_name=lore flow_id=idol ip_protocol=igmp severity=high partition_name=isn route_domain=sBono sa_translation_pool=loremqu sa_translation_type=tetur source_ip=10.213.94.135 src_geo=tMal source_port=2607 source_user=dquia translated_dest_ip=10.55.105.113 translated_dest_port=3214 translated_ip_protocol=tatione translated_route_domain=nimveni translated_source_ip=10.44.58.106 translated_source_port=1241 translated_vlan=quid vlan=4814 -eporroq ulla iqu4614.www5.example abore squ uiadol [F5@Duisa acl_policy_name=lupta acl_policy_type=aUt acl_rule_name=boNem action=Reject hostname=ectiono2241.lan bigip_mgmt_ip=10.2.114.9 context_name=rehende context_type=velillu date_time=Jan 20 2017 14:14:16 dest_ip=10.94.139.127 dst_geo=mUten dest_port=1812 device_product=quidolor device_vendor=oqu device_version=1.51 drop_reason=tlaboree errdefs_msgno=norumet errdefs_msg_name=dtempo flow_id=tin ip_protocol=tcp severity=high partition_name=imad route_domain=tinvolup sa_translation_pool=tsed sa_translation_type=inv source_ip=10.163.209.70 src_geo=atu source_port=4718 source_user=olabor translated_dest_ip=10.69.161.78 translated_dest_port=1282 translated_ip_protocol=iruredol translated_route_domain=incidid translated_source_ip=10.255.74.136 translated_source_port=5902 translated_vlan=eaqueips vlan=6396 -volupta dmi untexpl2847.www5.local eiusmod emoe uiinea [F5@mnisiut acl_policy_name=avolu acl_policy_type=Except acl_rule_name=olup action=Closed hostname=umetMal1664.mail.lan bigip_mgmt_ip=10.46.115.216 context_name=equun context_type=sitvo date_time=Feb 03 2017 21:16:50 dest_ip=10.223.198.146 dst_geo=iciad dest_port=7874 device_product=mad device_vendor=onse device_version=1.380 drop_reason=mipsum errdefs_msgno=lmo errdefs_msg_name=aliquamq flow_id=dtempori ip_protocol=rdp severity=medium partition_name=voluptat route_domain=ugit sa_translation_pool=tatem sa_translation_type=metcons source_ip=10.252.102.110 src_geo=henderit source_port=7829 source_user=perspici translated_dest_ip=10.184.59.148 translated_dest_port=6933 translated_ip_protocol=queips translated_route_domain=midest translated_source_ip=10.12.129.137 translated_source_port=721 translated_vlan=orroqu vlan=472 -labore uela ntexplic4824.internal.localhost dolorsit archite remq [F5@veniamq acl_policy_name=occ acl_policy_type=oloreseo acl_rule_name=iruredol action=Established hostname=derit5270.mail.local bigip_mgmt_ip=10.105.52.140 context_name=ntexpl context_type=dunt date_time=Feb 18 2017 04:19:24 dest_ip=10.20.55.199 dst_geo=nder dest_port=3238 device_product=itanim device_vendor=nesciun device_version=1.1729 drop_reason=mollita errdefs_msgno=tatem errdefs_msg_name=iae flow_id=quido ip_protocol=ipv6-icmp severity=very-high partition_name=inBC route_domain=mol sa_translation_pool=tur sa_translation_type=ictas source_ip=10.81.184.7 src_geo=saquaea source_port=6344 source_user=eetd translated_dest_ip=10.155.204.243 translated_dest_port=459 translated_ip_protocol=lorsi translated_route_domain=repreh translated_source_ip=10.199.194.79 translated_source_port=7713 translated_vlan=illumqui vlan=3414 -amali ate idolor3916.www5.home tas autfugi tasun [F5@duntutla acl_policy_name=ntium acl_policy_type=iration acl_rule_name=umwritte action=Closed hostname=orisni5238.mail.lan bigip_mgmt_ip=10.177.238.45 context_name=iumt context_type=tsed date_time=Mar 04 2017 11:21:59 dest_ip=10.249.120.78 dst_geo=unte dest_port=893 device_product=ueipsa device_vendor=scipitl device_version=1.1453 drop_reason=aparia errdefs_msgno=tatnon errdefs_msg_name=leumiur flow_id=tetura ip_protocol=ggp severity=very-high partition_name=oluptat route_domain=metco sa_translation_pool=acom sa_translation_type=ceroinB source_ip=10.110.2.166 src_geo=exeacomm source_port=79 source_user=taliqui translated_dest_ip=10.18.226.72 translated_dest_port=5140 translated_ip_protocol=olupta translated_route_domain=tsuntinc translated_source_ip=10.251.231.142 translated_source_port=872 translated_vlan=urExcep vlan=102 -suntex iacons occaec7487.corp quaeab fici imve [F5@quide acl_policy_name=quaU acl_policy_type=undeomni acl_rule_name=accusa action=Established hostname=iutali7297.www.domain bigip_mgmt_ip=10.190.122.27 context_name=mporainc context_type=xea date_time=Mar 18 2017 18:24:33 dest_ip=10.123.113.152 dst_geo=billo dest_port=2618 device_product=radipisc device_vendor=Cice device_version=1.6332 drop_reason=vitaed errdefs_msgno=ser errdefs_msg_name=etconsec flow_id=elillum ip_protocol=tcp severity=high partition_name=rnat route_domain=eprehend sa_translation_pool=rem sa_translation_type=edolo source_ip=10.99.202.229 src_geo=eosquira source_port=4392 source_user=lloinven translated_dest_ip=10.100.199.226 translated_dest_port=7617 translated_ip_protocol=apariatu translated_route_domain=lorsita translated_source_ip=10.192.98.247 translated_source_port=4308 translated_vlan=temaccu vlan=5302 -uptassit ncidi tlabori4803.www5.local oconse mag tob [F5@dolores acl_policy_name=equamnih acl_policy_type=taliqui acl_rule_name=eiu action=Drop hostname=orumw5960.www5.home bigip_mgmt_ip=10.248.111.207 context_name=dolor context_type=tiumto date_time=Apr 02 2017 01:27:07 dest_ip=10.38.28.151 dst_geo=nrepreh dest_port=5251 device_product=equep device_vendor=ever device_version=1.6463 drop_reason=atq errdefs_msgno=erspi errdefs_msg_name=iqu flow_id=niamqu ip_protocol=rdp severity=medium partition_name=icab route_domain=sBonor sa_translation_pool=fugits sa_translation_type=mipsumqu source_ip=10.172.154.97 src_geo=admi source_port=7165 source_user=culpaq translated_dest_ip=10.162.97.197 translated_dest_port=4357 translated_ip_protocol=tcupida translated_route_domain=isa translated_source_ip=10.37.193.70 translated_source_port=170 translated_vlan=tesseq vlan=7693 -pernat rerepre nculpaq3821.www5.invalid billoinv sci col [F5@obea acl_policy_name=emp acl_policy_type=agnaaliq acl_rule_name=est action=Reject hostname=oinv5493.internal.domain bigip_mgmt_ip=10.36.63.31 context_name=nisiu context_type=imad date_time=Apr 16 2017 08:29:41 dest_ip=10.30.101.79 dst_geo=itasp dest_port=4927 device_product=sitametc device_vendor=onsequa device_version=1.3912 drop_reason=ntmo errdefs_msgno=loreeu errdefs_msg_name=temse flow_id=aspernat ip_protocol=ipv6 severity=very-high partition_name=caecat route_domain=rautod sa_translation_pool=olest sa_translation_type=eataev source_ip=10.171.221.230 src_geo=edquia source_port=1977 source_user=otamr translated_dest_ip=10.222.165.250 translated_dest_port=2757 translated_ip_protocol=amvolu translated_route_domain=mip translated_source_ip=10.45.35.180 translated_source_port=653 translated_vlan=maccusa vlan=7248 -nimad ataevita oremqu542.internal.localhost uteir boree isn [F5@ulla acl_policy_name=equatDu acl_policy_type=pta acl_rule_name=enbyCi action=Reject hostname=tnonproi195.api.home bigip_mgmt_ip=10.238.4.219 context_name=uide context_type=scivel date_time=Apr 30 2017 15:32:16 dest_ip=10.150.9.246 dst_geo=meumfugi dest_port=7010 device_product=emaperia device_vendor=Section device_version=1.4329 drop_reason=iame errdefs_msgno=orroquis errdefs_msg_name=aquio flow_id=riatu ip_protocol=udp severity=low partition_name=tanimid route_domain=isnostru sa_translation_pool=nofdeFi sa_translation_type=aquioff source_ip=10.1.171.61 src_geo=amnisi source_port=7258 source_user=reetdolo translated_dest_ip=10.199.127.211 translated_dest_port=3598 translated_ip_protocol=ilmole translated_route_domain=ugi translated_source_ip=10.83.238.145 translated_source_port=5392 translated_vlan=emveleum vlan=3661 -nde abillo undeom845.www5.example quaer eetdo tlab [F5@spernatu acl_policy_name=exercita acl_policy_type=sBonorum acl_rule_name=atems action=Drop hostname=edictasu5362.internal.localhost bigip_mgmt_ip=10.65.141.244 context_name=turmag context_type=ipsaqu date_time=May 14 2017 22:34:50 dest_ip=10.203.69.36 dst_geo=quira dest_port=3091 device_product=ore device_vendor=tation device_version=1.3789 drop_reason=porincid errdefs_msgno=tperspic errdefs_msg_name=equu flow_id=sintoc ip_protocol=rdp severity=very-high partition_name=tetura route_domain=riosamni sa_translation_pool=icta sa_translation_type=luptate source_ip=10.170.252.219 src_geo=iqui source_port=1978 source_user=Nequepo translated_dest_ip=10.44.226.104 translated_dest_port=7020 translated_ip_protocol=nse translated_route_domain=veniam translated_source_ip=10.74.213.42 translated_source_port=5922 translated_vlan=sse vlan=2498 -inBCSe otamrem tutlabor4180.internal.host consecte pteurs catcupi [F5@autf acl_policy_name=saqu acl_policy_type=uptat acl_rule_name=unt action=Reject hostname=uido492.www5.home bigip_mgmt_ip=10.180.48.221 context_name=lors context_type=aconsequ date_time=May 29 2017 05:37:24 dest_ip=10.33.195.166 dst_geo=sequat dest_port=4596 device_product=utemvel device_vendor=epteur device_version=1.2965 drop_reason=iusm errdefs_msgno=roi errdefs_msg_name=busBonor flow_id=stquido ip_protocol=igmp severity=high partition_name=mnisi route_domain=usmo sa_translation_pool=iamea sa_translation_type=imaveni source_ip=10.183.223.149 src_geo=cor source_port=2648 source_user=nihil translated_dest_ip=10.225.255.211 translated_dest_port=5595 translated_ip_protocol=citati translated_route_domain=uamei translated_source_ip=10.225.141.172 translated_source_port=956 translated_vlan=fugiatn vlan=3309 -aaliq nat uovolupt307.internal.host serror onse umquam [F5@emagn acl_policy_name=emulla acl_policy_type=mips acl_rule_name=itae action=Established hostname=redo6311.api.invalid bigip_mgmt_ip=10.176.64.28 context_name=olup context_type=remipsu date_time=Jun 12 2017 12:39:58 dest_ip=10.92.6.176 dst_geo=mcorpor dest_port=7420 device_product=autfugit device_vendor=emUte device_version=1.7612 drop_reason=nturmag errdefs_msgno=tura errdefs_msg_name=osquirat flow_id=equat ip_protocol=tcp severity=high partition_name=usantiu route_domain=idunt sa_translation_pool=atqu sa_translation_type=naturau source_ip=10.97.138.181 src_geo=oluptat source_port=7128 source_user=eseruntm translated_dest_ip=10.205.174.181 translated_dest_port=766 translated_ip_protocol=olor translated_route_domain=etquasia translated_source_ip=10.169.123.103 translated_source_port=519 translated_vlan=uisa vlan=6863 -Cicero evolupta teturadi4718.api.local piscivel hend eacommo [F5@ueip acl_policy_name=maliqu acl_policy_type=iati acl_rule_name=minim action=Established hostname=dolorem1698.www.domain bigip_mgmt_ip=10.75.120.11 context_name=urau context_type=etur date_time=Jun 26 2017 19:42:33 dest_ip=10.20.73.247 dst_geo=laborum dest_port=5749 device_product=xeac device_vendor=umdolors device_version=1.4226 drop_reason=uiadolo errdefs_msgno=empor errdefs_msg_name=umexerci flow_id=duntut ip_protocol=ggp severity=very-high partition_name=prehend route_domain=eufug sa_translation_pool=roquisq sa_translation_type=temporai source_ip=10.53.101.131 src_geo=ici source_port=5097 source_user=tquo translated_dest_ip=10.204.4.40 translated_dest_port=271 translated_ip_protocol=sitvo translated_route_domain=ine translated_source_ip=10.169.101.161 translated_source_port=4577 translated_vlan=ipi vlan=4211 -exerci idata ese4384.mail.domain rumexerc isiutali iquidexe [F5@illumq acl_policy_name=luptatem acl_policy_type=ite acl_rule_name=tasnul action=Reject hostname=evitae7333.www.lan bigip_mgmt_ip=10.28.51.219 context_name=ess context_type=quiad date_time=Jul 11 2017 02:45:07 dest_ip=10.43.210.236 dst_geo=litanim dest_port=2135 device_product=orsitam device_vendor=modico device_version=1.2990 drop_reason=itatio errdefs_msgno=porinc errdefs_msg_name=riame flow_id=riat ip_protocol=udp severity=very-high partition_name=eriam route_domain=pernat sa_translation_pool=udan sa_translation_type=archi source_ip=10.6.222.112 src_geo=aliqu source_port=780 source_user=onsequu translated_dest_ip=10.156.117.169 translated_dest_port=2939 translated_ip_protocol=agnamal translated_route_domain=quei translated_source_ip=10.87.120.87 translated_source_port=1636 translated_vlan=teni vlan=4967 -dant etdolor uat7787.www.host iti nimadm nculp [F5@asp acl_policy_name=eacom acl_policy_type=mag acl_rule_name=gelitse action=Drop hostname=arc2412.mail.lan bigip_mgmt_ip=10.247.44.59 context_name=eiusmo context_type=ainc date_time=Jul 25 2017 09:47:41 dest_ip=10.173.129.72 dst_geo=ecill dest_port=6831 device_product=snu device_vendor=inibusB device_version=1.388 drop_reason=texplica errdefs_msgno=oco errdefs_msg_name=aboree flow_id=ainci ip_protocol=udp severity=high partition_name=pariatur route_domain=uames sa_translation_pool=umtotamr sa_translation_type=mquido source_ip=10.57.89.155 src_geo=rur source_port=3553 source_user=ntorever translated_dest_ip=10.253.167.17 translated_dest_port=2990 translated_ip_protocol=seos translated_route_domain=exercita translated_source_ip=10.4.126.103 translated_source_port=892 translated_vlan=tco vlan=3607 -oluptate lit santi837.api.domain turadip dip idolo [F5@Ute acl_policy_name=ptassita acl_policy_type=caecatcu acl_rule_name=inBC action=Established hostname=olorsi2746.internal.localhost bigip_mgmt_ip=10.15.240.220 context_name=teir context_type=quep date_time=Aug 08 2017 16:50:15 dest_ip=10.63.78.66 dst_geo=xeac dest_port=7061 device_product=abor device_vendor=oreverit device_version=1.6451 drop_reason=reetdo errdefs_msgno=tat errdefs_msg_name=eufugia flow_id=ncididun ip_protocol=tcp severity=medium partition_name=periamea route_domain=itametco sa_translation_pool=vel sa_translation_type=quunt source_ip=10.248.206.210 src_geo=nonn source_port=4478 source_user=met translated_dest_ip=10.36.69.125 translated_dest_port=7157 translated_ip_protocol=entsu translated_route_domain=conse translated_source_ip=10.143.183.208 translated_source_port=5214 translated_vlan=umwri vlan=4057 -atura tur tur5914.internal.invalid tassita colabori imidestl [F5@piscing acl_policy_name=ceroi acl_policy_type=iconsequ acl_rule_name=iat action=Established hostname=edqu2208.www.localhost bigip_mgmt_ip=10.6.32.7 context_name=exerci context_type=inesciu date_time=Aug 22 2017 23:52:50 dest_ip=10.141.216.14 dst_geo=emu dest_port=5311 device_product=psa device_vendor=ate device_version=1.4386 drop_reason=fugitse errdefs_msgno=minimve errdefs_msg_name=serrorsi flow_id=tametco ip_protocol=ipv6-icmp severity=high partition_name=lore route_domain=isci sa_translation_pool=Dui sa_translation_type=reetdo source_ip=10.69.170.107 src_geo=iumtotam source_port=1010 source_user=ipitlabo translated_dest_ip=10.34.133.2 translated_dest_port=4807 translated_ip_protocol=nderi translated_route_domain=liqua translated_source_ip=10.142.186.43 translated_source_port=4691 translated_vlan=sautei vlan=2363 -voluptas velill rspic5453.www.local meum borumSec aecatcup [F5@snisiut acl_policy_name=siar acl_policy_type=quas acl_rule_name=occaeca action=Closed hostname=ender5647.www5.example bigip_mgmt_ip=10.142.22.24 context_name=ulamc context_type=cept date_time=Sep 06 2017 06:55:24 dest_ip=10.93.88.228 dst_geo=rchitect dest_port=3402 device_product=gna device_vendor=ici device_version=1.2026 drop_reason=olu errdefs_msgno=iameaque errdefs_msg_name=identsun flow_id=ender ip_protocol=ipv6 severity=low partition_name=tect route_domain=uiad sa_translation_pool=doconse sa_translation_type=eni source_ip=10.121.153.197 src_geo=smoditem source_port=6593 source_user=borumSec translated_dest_ip=10.59.103.10 translated_dest_port=768 translated_ip_protocol=oquisq translated_route_domain=abori translated_source_ip=10.170.165.164 translated_source_port=505 translated_vlan=uiineavo vlan=5554 -uidexeac sequa ntsunti2313.internal.invalid uinesc cid emi [F5@Bonorum acl_policy_name=lesti acl_policy_type=oreseo acl_rule_name=reprehen action=Established hostname=sis3986.internal.lan bigip_mgmt_ip=10.133.10.122 context_name=texplic context_type=edutp date_time=Sep 20 2017 13:57:58 dest_ip=10.93.59.189 dst_geo=eserun dest_port=3034 device_product=eniamqu device_vendor=inimav device_version=1.1576 drop_reason=imadm errdefs_msgno=uta errdefs_msg_name=tisu flow_id=remagnam ip_protocol=icmp severity=low partition_name=meiusm route_domain=nidolo sa_translation_pool=atquovol sa_translation_type=quunt source_ip=10.247.114.30 src_geo=olesti source_port=7584 source_user=quaeabil translated_dest_ip=10.19.99.129 translated_dest_port=956 translated_ip_protocol=itesse translated_route_domain=iamqui translated_source_ip=10.176.83.7 translated_source_port=5908 translated_vlan=inim vlan=6806 -Sed oremeumf lesti5921.api.localhost enima tnulapar ico [F5@giatquo acl_policy_name=lors acl_policy_type=its acl_rule_name=dolor action=Drop hostname=uatu2894.api.lan bigip_mgmt_ip=10.64.139.17 context_name=pro context_type=ice date_time=Oct 04 2017 21:00:32 dest_ip=10.87.238.169 dst_geo=conse dest_port=5351 device_product=mcol device_vendor=lup device_version=1.3824 drop_reason=upta errdefs_msgno=sedquian errdefs_msg_name=cti flow_id=rumSecti ip_protocol=rdp severity=medium partition_name=eca route_domain=oluptate sa_translation_pool=Duisa sa_translation_type=consequa source_ip=10.40.177.138 src_geo=aevitaed source_port=1082 source_user=rep translated_dest_ip=10.8.29.219 translated_dest_port=6890 translated_ip_protocol=quaeratv translated_route_domain=involu translated_source_ip=10.70.7.23 translated_source_port=2758 translated_vlan=amcolab vlan=4306 -odic iuta liquaUte209.internal.test olores scipit lloinve [F5@borisnis acl_policy_name=onorumet acl_policy_type=ptatema acl_rule_name=eavolup action=Closed hostname=rmagnido5483.local bigip_mgmt_ip=10.180.62.222 context_name=ptatev context_type=atu date_time=Oct 19 2017 04:03:07 dest_ip=10.234.26.132 dst_geo=msequ dest_port=2383 device_product=mwritten device_vendor=tat device_version=1.6066 drop_reason=osa errdefs_msgno=mini errdefs_msg_name=rors flow_id=ssusci ip_protocol=udp severity=medium partition_name=inimve route_domain=uio sa_translation_pool=mexercit sa_translation_type=byC source_ip=10.2.189.20 src_geo=orin source_port=535 source_user=uptasnul translated_dest_ip=10.67.221.220 translated_dest_port=239 translated_ip_protocol=aedict translated_route_domain=niamqui translated_source_ip=10.67.173.228 translated_source_port=5767 translated_vlan=tatemse vlan=4493 -uamestqu mpor orem6479.api.host seq rumSe tatnonp [F5@ommo acl_policy_name=adeser acl_policy_type=uasiarc acl_rule_name=doeiu action=Reject hostname=uian521.www.example bigip_mgmt_ip=10.209.52.47 context_name=imven context_type=onnumqua date_time=Nov 02 2017 11:05:41 dest_ip=10.141.201.173 dst_geo=upt dest_port=6017 device_product=itautfu device_vendor=nesci device_version=1.5040 drop_reason=mquis errdefs_msgno=lorsi errdefs_msg_name=tetura flow_id=eeufug ip_protocol=ipv6 severity=medium partition_name=tevelite route_domain=tocca sa_translation_pool=orsitvol sa_translation_type=ntor source_ip=10.147.127.181 src_geo=minimav source_port=6994 source_user=tasu translated_dest_ip=10.56.134.118 translated_dest_port=358 translated_ip_protocol=evo translated_route_domain=mcorpori translated_source_ip=10.196.176.243 translated_source_port=3465 translated_vlan=orsitam vlan=4991 -prehende lup tpers2217.internal.lan nula tdolorem qui [F5@olupt acl_policy_name=nemulla acl_policy_type=asp acl_rule_name=dexercit action=Closed hostname=taliq5213.api.corp bigip_mgmt_ip=10.226.24.84 context_name=ectobea context_type=dat date_time=Nov 16 2017 18:08:15 dest_ip=10.91.18.221 dst_geo=aut dest_port=5596 device_product=uames device_vendor=tconsec device_version=1.7604 drop_reason=oll errdefs_msgno=laboree errdefs_msg_name=udantiu flow_id=itametco ip_protocol=ipv6 severity=very-high partition_name=odico route_domain=rsint sa_translation_pool=itl sa_translation_type=ttenb source_ip=10.231.18.90 src_geo=lapa source_port=4860 source_user=Nem translated_dest_ip=10.85.13.237 translated_dest_port=4072 translated_ip_protocol=upidata translated_route_domain=ici translated_source_ip=10.248.140.59 translated_source_port=5760 translated_vlan=ident vlan=4293 -quelaud luptat rinrep6482.api.lan nimv emeu tatemac [F5@quisn acl_policy_name=rem acl_policy_type=ulamcola acl_rule_name=remagnaa action=Accept hostname=ntsunt4894.mail.domain bigip_mgmt_ip=10.203.46.215 context_name=mcorpori context_type=orisn date_time=Dec 01 2017 01:10:49 dest_ip=10.88.194.242 dst_geo=mco dest_port=6246 device_product=itame device_vendor=tenat device_version=1.5407 drop_reason=yCiceroi errdefs_msgno=nostrum errdefs_msg_name=orroquis flow_id=eumi ip_protocol=icmp severity=low partition_name=aea route_domain=tvolu sa_translation_pool=dutper sa_translation_type=tlaboru source_ip=10.207.183.204 src_geo=equuntu source_port=2673 source_user=eruntmo translated_dest_ip=10.8.224.72 translated_dest_port=6506 translated_ip_protocol=ion translated_route_domain=rured translated_source_ip=10.59.215.207 translated_source_port=6195 translated_vlan=ore vlan=5842 -xerc Nequep ametcon7485.www.test rro tuser ctasu [F5@irat acl_policy_name=sitame acl_policy_type=oinven acl_rule_name=natu action=Drop hostname=mexer3864.api.corp bigip_mgmt_ip=10.98.154.146 context_name=nula context_type=ameaquei date_time=Dec 15 2017 08:13:24 dest_ip=10.72.114.116 dst_geo=mquis dest_port=7760 device_product=olupta device_vendor=isno device_version=1.6814 drop_reason=ine errdefs_msgno=aeco errdefs_msg_name=rinrepr flow_id=dutp ip_protocol=ipv6-icmp severity=very-high partition_name=giatqu route_domain=rsint sa_translation_pool=rsi sa_translation_type=paq source_ip=10.73.84.95 src_geo=uisautem source_port=6701 source_user=sitam translated_dest_ip=10.255.145.22 translated_dest_port=6949 translated_ip_protocol=emUtenim translated_route_domain=ende translated_source_ip=10.230.38.148 translated_source_port=3213 translated_vlan=sse vlan=368 -incidi aedictas rumetMa2554.domain unt liq abore [F5@iumdo acl_policy_name=oreeu acl_policy_type=mea acl_rule_name=ssec action=Accept hostname=oluptat6960.www5.test bigip_mgmt_ip=10.211.29.187 context_name=ptat context_type=meaquei date_time=Dec 29 2017 15:15:58 dest_ip=10.228.204.249 dst_geo=eleumi dest_port=4584 device_product=porissus device_vendor=imip device_version=1.7160 drop_reason=ddoe errdefs_msgno=uptateve errdefs_msg_name=ured flow_id=ctetu ip_protocol=tcp severity=low partition_name=uasiarch route_domain=Malor sa_translation_pool=boriosa sa_translation_type=cillumdo source_ip=10.166.142.198 src_geo=oremipsu source_port=465 source_user=tium translated_dest_ip=10.105.120.162 translated_dest_port=2984 translated_ip_protocol=etc translated_route_domain=eturadip translated_source_ip=10.175.181.138 translated_source_port=3787 translated_vlan=tassitas vlan=1495 -velite maccus nima5813.mail.example iarchit sBonorum moenimi [F5@lor acl_policy_name=auto acl_policy_type=rsinto acl_rule_name=ati action=Established hostname=fugiatnu2498.www.localhost bigip_mgmt_ip=10.182.213.195 context_name=tconse context_type=eumf date_time=Jan 12 2018 22:18:32 dest_ip=10.200.94.145 dst_geo=doconse dest_port=5211 device_product=uis device_vendor=lill device_version=1.6057 drop_reason=imi errdefs_msgno=animi errdefs_msg_name=edutpers flow_id=pisci ip_protocol=tcp severity=very-high partition_name=umto route_domain=xercit sa_translation_pool=lam sa_translation_type=asnu source_ip=10.122.133.162 src_geo=eriam source_port=4838 source_user=aquae translated_dest_ip=10.220.202.102 translated_dest_port=10 translated_ip_protocol=iaturE translated_route_domain=epor translated_source_ip=10.195.139.25 translated_source_port=5566 translated_vlan=tper vlan=4341 -tconsect pariat iutal3376.api.corp isi idexeac ntu [F5@tdolo acl_policy_name=nimve acl_policy_type=duntut acl_rule_name=emporin action=Reject hostname=ptat3230.domain bigip_mgmt_ip=10.156.208.5 context_name=tlaboru context_type=tec date_time=Jan 27 2018 05:21:06 dest_ip=10.9.69.13 dst_geo=uatD dest_port=6508 device_product=antium device_vendor=remaper device_version=1.3297 drop_reason=ntNequ errdefs_msgno=anim errdefs_msg_name=uae flow_id=ata ip_protocol=tcp severity=very-high partition_name=paq route_domain=emipsumq sa_translation_pool=culpaq sa_translation_type=quamq source_ip=10.53.72.161 src_geo=pta source_port=4723 source_user=scip translated_dest_ip=10.33.143.163 translated_dest_port=5404 translated_ip_protocol=iusmodi translated_route_domain=esciun translated_source_ip=10.247.144.9 translated_source_port=2494 translated_vlan=lit vlan=4112 -oidentsu oditau onsec1632.internal.lan lup aeca isau [F5@giat acl_policy_name=ttenb acl_policy_type=eirure acl_rule_name=boreetd action=Closed hostname=exer447.internal.localhost bigip_mgmt_ip=10.35.190.164 context_name=radipis context_type=lore date_time=Feb 10 2018 12:23:41 dest_ip=10.76.99.144 dst_geo=eufugia dest_port=2345 device_product=pariat device_vendor=nimip device_version=1.2476 drop_reason=usci errdefs_msgno=unturmag errdefs_msg_name=dexeaco flow_id=lupta ip_protocol=ggp severity=very-high partition_name=oreeufug route_domain=Quisa sa_translation_pool=quiav sa_translation_type=ctionofd source_ip=10.21.58.162 src_geo=uisautei source_port=7881 source_user=porin translated_dest_ip=10.241.143.145 translated_dest_port=6151 translated_ip_protocol=ecillum translated_route_domain=olor translated_source_ip=10.113.65.192 translated_source_port=7807 translated_vlan=conseq vlan=6079 -edutpers ctobeat upta4358.home orem inibus secte [F5@ctobeat acl_policy_name=onsec acl_policy_type=idestl acl_rule_name=litani action=Closed hostname=itanimi1934.home bigip_mgmt_ip=10.19.154.103 context_name=ittenb context_type=tobeatae date_time=Feb 24 2018 19:26:15 dest_ip=10.235.51.61 dst_geo=exe dest_port=1872 device_product=cia device_vendor=idolo device_version=1.768 drop_reason=pitlabo errdefs_msgno=tas errdefs_msg_name=rcitat flow_id=ree ip_protocol=tcp severity=very-high partition_name=quipexea route_domain=orsitv sa_translation_pool=dunt sa_translation_type=int source_ip=10.53.27.253 src_geo=temveleu source_port=3599 source_user=luptat translated_dest_ip=10.75.113.240 translated_dest_port=1874 translated_ip_protocol=ionulam translated_route_domain=auto translated_source_ip=10.129.16.166 translated_source_port=5141 translated_vlan=ntocca vlan=5439 -tvol lup mipsamv161.local ionula pexeaco temaccu [F5@uamqua acl_policy_name=Neq acl_policy_type=runt acl_rule_name=xcep action=Established hostname=pteurs1031.mail.corp bigip_mgmt_ip=10.125.150.220 context_name=lumquid context_type=eturadip date_time=Mar 11 2018 02:28:49 dest_ip=10.241.228.95 dst_geo=equ dest_port=7256 device_product=ssequamn device_vendor=ave device_version=1.5812 drop_reason=edquia errdefs_msgno=ihi errdefs_msg_name=undeomn flow_id=ape ip_protocol=rdp severity=medium partition_name=ari route_domain=umtot sa_translation_pool=onemulla sa_translation_type=atquo source_ip=10.120.50.13 src_geo=issu source_port=4426 source_user=inculpa translated_dest_ip=10.150.153.61 translated_dest_port=2773 translated_ip_protocol=loremagn translated_route_domain=acons translated_source_ip=10.22.213.196 translated_source_port=7230 translated_vlan=emoenimi vlan=1864 -mqu onorume abill5290.lan mini mve tionev [F5@uasiarch acl_policy_name=velites acl_policy_type=uredolor acl_rule_name=epreh action=Accept hostname=edquiaco6562.api.lan bigip_mgmt_ip=10.113.2.13 context_name=rudexerc context_type=nturm date_time=Mar 25 2018 09:31:24 dest_ip=10.182.134.109 dst_geo=dquia dest_port=5334 device_product=bori device_vendor=dipi device_version=1.7232 drop_reason=utf errdefs_msgno=dolor errdefs_msg_name=dexe flow_id=nemul ip_protocol=igmp severity=low partition_name=lupt route_domain=quatur sa_translation_pool=dminim sa_translation_type=ptatevel source_ip=10.85.52.249 src_geo=eirured source_port=3772 source_user=tatiset translated_dest_ip=10.238.171.184 translated_dest_port=2574 translated_ip_protocol=duntutl translated_route_domain=nven translated_source_ip=10.229.155.171 translated_source_port=6978 translated_vlan=asiarch vlan=7121 -utla deomni tse7542.test nesciu todit utaliqui [F5@emse acl_policy_name=emqui acl_policy_type=cipitla acl_rule_name=tlab action=Accept hostname=tatis7315.mail.home bigip_mgmt_ip=10.249.174.35 context_name=umfu context_type=utla date_time=Apr 08 2018 16:33:58 dest_ip=10.136.53.201 dst_geo=dolo dest_port=6418 device_product=samvol device_vendor=equa device_version=1.536 drop_reason=strumex errdefs_msgno=tessecil errdefs_msg_name=ugia flow_id=reprehe ip_protocol=udp severity=medium partition_name=umq route_domain=sistena sa_translation_pool=qui sa_translation_type=caboN source_ip=10.198.150.185 src_geo=catcupid source_port=3167 source_user=quela translated_dest_ip=10.51.245.225 translated_dest_port=3991 translated_ip_protocol=enimi translated_route_domain=illum translated_source_ip=10.220.1.249 translated_source_port=4200 translated_vlan=Sedut vlan=7832 -audant obeata uredol2348.www5.host entorev quuntur olup [F5@aeab acl_policy_name=uradipis acl_policy_type=aerat acl_rule_name=les action=Drop hostname=eosqui3723.api.localdomain bigip_mgmt_ip=10.152.157.32 context_name=ali context_type=udexerci date_time=Apr 22 2018 23:36:32 dest_ip=10.76.232.245 dst_geo=osqu dest_port=4859 device_product=aborio device_vendor=rve device_version=1.219 drop_reason=nbyCi errdefs_msgno=runtmoll errdefs_msg_name=busBon flow_id=norumetM ip_protocol=udp severity=low partition_name=usBono route_domain=ameaq sa_translation_pool=Quis sa_translation_type=lupta source_ip=10.251.82.195 src_geo=umiure source_port=5186 source_user=olorese translated_dest_ip=10.190.96.181 translated_dest_port=2153 translated_ip_protocol=culp translated_route_domain=deomn translated_source_ip=10.38.185.31 translated_source_port=1085 translated_vlan=llo vlan=1106 -tla iaconseq sed3235.www5.localhost pidatatn isno luptatev [F5@occaeca acl_policy_name=dan acl_policy_type=pta acl_rule_name=upt action=Drop hostname=itaedict199.mail.corp bigip_mgmt_ip=10.103.102.242 context_name=labore context_type=lorem date_time=May 07 2018 06:39:06 dest_ip=10.68.159.207 dst_geo=eratv dest_port=7206 device_product=estq device_vendor=quasiarc device_version=1.6526 drop_reason=liq errdefs_msgno=xerc errdefs_msg_name=atisetqu flow_id=squir ip_protocol=icmp severity=very-high partition_name=quam route_domain=deriti sa_translation_pool=edictasu sa_translation_type=eturadi source_ip=10.190.247.194 src_geo=mSecti source_port=4210 source_user=tDuisaut translated_dest_ip=10.230.112.179 translated_dest_port=5926 translated_ip_protocol=vol translated_route_domain=ita translated_source_ip=10.211.198.50 translated_source_port=7510 translated_vlan=nibusB vlan=5555 -amremap oremagna aqu4475.mail.invalid serrorsi tsedquia rsit [F5@quis acl_policy_name=upidatat acl_policy_type=mod acl_rule_name=niamqui action=Closed hostname=xeaco7887.www.localdomain bigip_mgmt_ip=10.47.223.155 context_name=ugitsed context_type=dminimve date_time=May 21 2018 13:41:41 dest_ip=10.111.137.84 dst_geo=uiac dest_port=7838 device_product=tot device_vendor=reme device_version=1.7750 drop_reason=loremi errdefs_msgno=queporro errdefs_msg_name=tur flow_id=eFi ip_protocol=ipv6-icmp severity=medium partition_name=ulapari route_domain=eporroq sa_translation_pool=uunturm sa_translation_type=iatn source_ip=10.219.83.199 src_geo=diduntut source_port=1321 source_user=ectetur translated_dest_ip=10.101.13.122 translated_dest_port=6737 translated_ip_protocol=nibusBo translated_route_domain=volup translated_source_ip=10.251.101.61 translated_source_port=5153 translated_vlan=scipit vlan=6495 -tore isni tamrema736.www5.lan ntiumdol conse aturve [F5@edqui acl_policy_name=tvolu acl_policy_type=psu acl_rule_name=strud action=Closed hostname=saute7421.www.invalid bigip_mgmt_ip=10.21.80.157 context_name=tiumtot context_type=tate date_time=Jun 04 2018 20:44:15 dest_ip=10.13.222.177 dst_geo=inBCSed dest_port=6353 device_product=Loremip device_vendor=taliqui device_version=1.5568 drop_reason=ipsaquae errdefs_msgno=olu errdefs_msg_name=exerci flow_id=isnostru ip_protocol=tcp severity=very-high partition_name=ngelits route_domain=volupt sa_translation_pool=billoi sa_translation_type=reseo source_ip=10.31.86.83 src_geo=pariat source_port=6646 source_user=litsed translated_dest_ip=10.21.30.43 translated_dest_port=4754 translated_ip_protocol=lorem translated_route_domain=iamquisn translated_source_ip=10.83.136.233 translated_source_port=6643 translated_vlan=imadm vlan=3187 -lumdol edutper utemve6966.mail.local emoen ptate mipsumqu [F5@turad acl_policy_name=dol acl_policy_type=ntutla acl_rule_name=des action=Accept hostname=oluptas1637.home bigip_mgmt_ip=10.195.90.73 context_name=ipisc context_type=iatnulap date_time=Jun 19 2018 03:46:49 dest_ip=10.170.155.137 dst_geo=uine dest_port=1815 device_product=veniamqu device_vendor=iconsequ device_version=1.5445 drop_reason=apa errdefs_msgno=archite errdefs_msg_name=tur flow_id=ddo ip_protocol=ipv6 severity=high partition_name=inBC route_domain=did sa_translation_pool=atcupi sa_translation_type=eriti source_ip=10.45.152.205 src_geo=rema source_port=5107 source_user=datatn translated_dest_ip=10.194.197.107 translated_dest_port=2524 translated_ip_protocol=tur translated_route_domain=itation translated_source_ip=10.27.181.27 translated_source_port=5509 translated_vlan=uredo vlan=2155 -use catcu quame922.internal.host eursi liquid ulapari [F5@ibus acl_policy_name=isu acl_policy_type=moll acl_rule_name=roinBCS action=Drop hostname=ididu5505.api.localdomain bigip_mgmt_ip=10.43.239.97 context_name=modi context_type=cip date_time=Jul 03 2018 10:49:23 dest_ip=10.60.60.164 dst_geo=iscive dest_port=5527 device_product=incididu device_vendor=yCice device_version=1.508 drop_reason=ionem errdefs_msgno=taevitae errdefs_msg_name=dminimv flow_id=quam ip_protocol=tcp severity=low partition_name=umdol route_domain=rerepr sa_translation_pool=ipiscin sa_translation_type=trudexe source_ip=10.222.2.132 src_geo=umdo source_port=6187 source_user=aedicta translated_dest_ip=10.129.161.18 translated_dest_port=782 translated_ip_protocol=umquiad translated_route_domain=porinc translated_source_ip=10.183.90.25 translated_source_port=5038 translated_vlan=conse vlan=2563 -dolo reeufu umexe5208.local suntex uptatema uteiru [F5@rcitati acl_policy_name=siutali acl_policy_type=uiratio acl_rule_name=ficia action=Closed hostname=mqui1099.api.corp bigip_mgmt_ip=10.231.167.171 context_name=onorumet context_type=illoinve date_time=Jul 17 2018 17:51:58 dest_ip=10.188.254.168 dst_geo=nevolup dest_port=3706 device_product=lor device_vendor=ica device_version=1.4479 drop_reason=sumd errdefs_msgno=elitse errdefs_msg_name=olu flow_id=temqu ip_protocol=rdp severity=very-high partition_name=nesci route_domain=meaquei sa_translation_pool=snisiu sa_translation_type=atem source_ip=10.189.162.131 src_geo=litsed source_port=6019 source_user=sedquia translated_dest_ip=10.67.129.100 translated_dest_port=7106 translated_ip_protocol=mmodicon translated_route_domain=eosquir translated_source_ip=10.248.156.138 translated_source_port=2125 translated_vlan=smodit vlan=3090 -dun xce dol5403.www.localhost asiar eiu maliquam [F5@gnama acl_policy_name=ursintoc acl_policy_type=minimve acl_rule_name=eprehe action=Reject hostname=siuta2155.lan bigip_mgmt_ip=10.63.103.30 context_name=ill context_type=imveniam date_time=Aug 01 2018 00:54:32 dest_ip=10.36.29.127 dst_geo=umqui dest_port=1757 device_product=sci device_vendor=isquames device_version=1.2927 drop_reason=tlabor errdefs_msgno=itecto errdefs_msg_name=loreeuf flow_id=orainci ip_protocol=icmp severity=low partition_name=aev route_domain=uelaudan sa_translation_pool=lab sa_translation_type=sequa source_ip=10.6.146.184 src_geo=rrorsi source_port=7247 source_user=sequu translated_dest_ip=10.185.107.27 translated_dest_port=2257 translated_ip_protocol=mips translated_route_domain=iduntutl translated_source_ip=10.142.106.66 translated_source_port=3790 translated_vlan=quelauda vlan=289 -dolo ulamc doe344.www5.local toreve squirat llum [F5@dol acl_policy_name=niam acl_policy_type=atio acl_rule_name=sno action=Established hostname=tatiset4191.localdomain bigip_mgmt_ip=10.214.93.200 context_name=dtempor context_type=rroquisq date_time=Aug 15 2018 07:57:06 dest_ip=10.215.63.248 dst_geo=uidex dest_port=1203 device_product=lloi device_vendor=nseq device_version=1.4023 drop_reason=isetqua errdefs_msgno=ianonn errdefs_msg_name=oluptas flow_id=doe ip_protocol=udp severity=very-high partition_name=rchitect route_domain=orsitame sa_translation_pool=tasn sa_translation_type=exeaco source_ip=10.93.39.237 src_geo=aincidu source_port=232 source_user=tionofd translated_dest_ip=10.0.202.9 translated_dest_port=7451 translated_ip_protocol=nvolup translated_route_domain=ommodic translated_source_ip=10.119.179.182 translated_source_port=7255 translated_vlan=undeo vlan=7696 -uiinea uianonn eavolupt784.www5.example liquam sinto edi [F5@eumiure acl_policy_name=ore acl_policy_type=adeser acl_rule_name=mSe action=Drop hostname=aute2433.mail.lan bigip_mgmt_ip=10.252.204.162 context_name=tiae context_type=giat date_time=Aug 29 2018 14:59:40 dest_ip=10.115.77.51 dst_geo=mcorpor dest_port=2433 device_product=ostru device_vendor=mea device_version=1.5939 drop_reason=iquipex errdefs_msgno=byCice errdefs_msg_name=deritq flow_id=boreetdo ip_protocol=ipv6-icmp severity=medium partition_name=iin route_domain=nostr sa_translation_pool=luptatem sa_translation_type=tNequepo source_ip=10.28.145.163 src_geo=sper source_port=72 source_user=imadmin translated_dest_ip=10.123.154.140 translated_dest_port=2551 translated_ip_protocol=mSect translated_route_domain=iure translated_source_ip=10.30.189.166 translated_source_port=2749 translated_vlan=aer vlan=3422 -roquis mremape ude2977.www.corp rmagnido exeaco dqu [F5@ccaec acl_policy_name=repreh acl_policy_type=imven acl_rule_name=usan action=Accept hostname=idolo6535.internal.example bigip_mgmt_ip=10.46.162.198 context_name=snulap context_type=onsequat date_time=Sep 12 2018 22:02:15 dest_ip=10.166.128.248 dst_geo=pariatur dest_port=7435 device_product=tura device_vendor=equuntur device_version=1.6564 drop_reason=uaera errdefs_msgno=mqua errdefs_msg_name=xer flow_id=utlabore ip_protocol=ipv6-icmp severity=very-high partition_name=beataevi route_domain=amquisn sa_translation_pool=itquii sa_translation_type=imaven source_ip=10.145.128.250 src_geo=nder source_port=5641 source_user=eni translated_dest_ip=10.79.49.3 translated_dest_port=7794 translated_ip_protocol=psamvolu translated_route_domain=teturad translated_source_ip=10.29.122.183 translated_source_port=6166 translated_vlan=tla vlan=6146 -modtempo edict nost3250.internal.localdomain nibu quatur isiutali [F5@mdolo acl_policy_name=nof acl_policy_type=usantiu acl_rule_name=periam action=Closed hostname=one7728.api.localdomain bigip_mgmt_ip=10.177.232.136 context_name=obe context_type=niamqu date_time=Sep 27 2018 05:04:49 dest_ip=10.140.59.161 dst_geo=smoditem dest_port=575 device_product=tev device_vendor=oNemoeni device_version=1.3341 drop_reason=elillumq errdefs_msgno=loremeum errdefs_msg_name=luptatem flow_id=ing ip_protocol=tcp severity=very-high partition_name=riameaqu route_domain=etd sa_translation_pool=omnisi sa_translation_type=dolor source_ip=10.166.169.167 src_geo=ati source_port=1544 source_user=olors translated_dest_ip=10.65.174.196 translated_dest_port=472 translated_ip_protocol=iin translated_route_domain=uteiru translated_source_ip=10.142.235.217 translated_source_port=5846 translated_vlan=orain vlan=2663 -llu quaUt labor7147.internal.host ten vitae tse [F5@gni acl_policy_name=per acl_policy_type=tione acl_rule_name=nibus action=Established hostname=uptatem4446.internal.localhost bigip_mgmt_ip=10.29.217.44 context_name=eacommod context_type=tali date_time=Oct 11 2018 12:07:23 dest_ip=10.131.223.198 dst_geo=orisnisi dest_port=4342 device_product=eritquii device_vendor=atevelit device_version=1.325 drop_reason=enat errdefs_msgno=ionula errdefs_msg_name=itaed flow_id=invol ip_protocol=rdp severity=low partition_name=cidun route_domain=tassitas sa_translation_pool=nimadmi sa_translation_type=dipisci source_ip=10.215.184.154 src_geo=nor source_port=3306 source_user=iarc translated_dest_ip=10.191.78.86 translated_dest_port=6355 translated_ip_protocol=uiac translated_route_domain=squ translated_source_ip=10.53.188.140 translated_source_port=6455 translated_vlan=ten vlan=2937 -isciveli ntutlab sitamet452.domain nsequ ing ollita [F5@dipisci acl_policy_name=amnisiu acl_policy_type=ptat acl_rule_name=epr action=Drop hostname=emq2514.api.localhost bigip_mgmt_ip=10.135.77.156 context_name=uraut context_type=non date_time=Oct 25 2018 19:09:57 dest_ip=10.248.182.188 dst_geo=turad dest_port=2537 device_product=nBCSe device_vendor=ollita device_version=1.3567 drop_reason=eni errdefs_msgno=quipe errdefs_msg_name=oluptat flow_id=stenatus ip_protocol=ggp severity=very-high partition_name=iaecon route_domain=ect sa_translation_pool=tquid sa_translation_type=seru source_ip=10.76.148.147 src_geo=remagna source_port=1121 source_user=urve translated_dest_ip=10.46.222.149 translated_dest_port=3304 translated_ip_protocol=squ translated_route_domain=emagnaal translated_source_ip=10.74.74.129 translated_source_port=5904 translated_vlan=itati vlan=3497 -rinc tno meumf4052.invalid pitlabo riamea Malorumw [F5@consect acl_policy_name=issu acl_policy_type=tconsect acl_rule_name=tationem action=Drop hostname=agna5654.www.corp bigip_mgmt_ip=10.96.200.223 context_name=iatisun context_type=cto date_time=Nov 09 2018 02:12:32 dest_ip=10.3.228.220 dst_geo=imadmini dest_port=3791 device_product=oeiusm device_vendor=aUtenim device_version=1.1186 drop_reason=isu errdefs_msgno=ute errdefs_msg_name=tdolore flow_id=madminim ip_protocol=igmp severity=very-high partition_name=prehen route_domain=ate sa_translation_pool=ull sa_translation_type=enimipsa source_ip=10.130.203.37 src_geo=quisnos source_port=2132 source_user=mvele translated_dest_ip=10.11.146.253 translated_dest_port=3581 translated_ip_protocol=remeum translated_route_domain=temseq translated_source_ip=10.145.49.29 translated_source_port=2464 translated_vlan=sedquia vlan=4912 -ntmo aliqu iqu4429.www5.lan doconse volupta ptat [F5@oreverit acl_policy_name=nimides acl_policy_type=remipsum acl_rule_name=elit action=Drop hostname=ipi4827.mail.lan bigip_mgmt_ip=10.162.78.48 context_name=lab context_type=sedqui date_time=Nov 23 2018 09:15:06 dest_ip=10.243.157.94 dst_geo=epteu dest_port=5744 device_product=tura device_vendor=mquiavol device_version=1.6845 drop_reason=eabil errdefs_msgno=ibusB errdefs_msg_name=rporis flow_id=etco ip_protocol=ipv6 severity=very-high partition_name=ereprehe route_domain=olu sa_translation_pool=nofdeF sa_translation_type=riaturEx source_ip=10.24.23.209 src_geo=itautfu source_port=1503 source_user=rumwr translated_dest_ip=10.162.2.180 translated_dest_port=3889 translated_ip_protocol=mporain translated_route_domain=ectetur translated_source_ip=10.48.75.140 translated_source_port=1837 translated_vlan=ineavol vlan=5182 -onproid sitv equam3114.test mcorp uelaud aperiam [F5@ngelit acl_policy_name=quiano acl_policy_type=sund acl_rule_name=iaconse action=Drop hostname=sequatD163.internal.example bigip_mgmt_ip=10.151.206.38 context_name=oloremi context_type=luptate date_time=Dec 07 2018 16:17:40 dest_ip=10.38.57.217 dst_geo=rur dest_port=5543 device_product=imidest device_vendor=oeiusmod device_version=1.419 drop_reason=psumqui errdefs_msgno=eddoeiu errdefs_msg_name=oinvento flow_id=mips ip_protocol=udp severity=medium partition_name=corpor route_domain=amvolu sa_translation_pool=ent sa_translation_type=ionemu source_ip=10.66.92.83 src_geo=orinrep source_port=2549 source_user=nproide translated_dest_ip=10.119.12.186 translated_dest_port=5674 translated_ip_protocol=qui translated_route_domain=nemullam translated_source_ip=10.97.105.115 translated_source_port=3576 translated_vlan=squir vlan=3987 -umqu umet psaquaea5284.internal.example upt giatquo toccaec [F5@nihilmo acl_policy_name=atquo acl_policy_type=umetMa acl_rule_name=ngelitse action=Accept hostname=itamet1303.invalid bigip_mgmt_ip=10.12.148.73 context_name=eius context_type=evo date_time=Dec 21 2018 23:20:14 dest_ip=10.10.44.34 dst_geo=volupt dest_port=61 device_product=eosqu device_vendor=reetdolo device_version=1.7551 drop_reason=sten errdefs_msgno=enderi errdefs_msg_name=labore flow_id=uasiarch ip_protocol=igmp severity=very-high partition_name=magnama route_domain=reprehe sa_translation_pool=citatio sa_translation_type=dolo source_ip=10.201.132.114 src_geo=eetd source_port=6058 source_user=borisnis translated_dest_ip=10.64.76.142 translated_dest_port=7083 translated_ip_protocol=temse translated_route_domain=samvo translated_source_ip=10.169.139.250 translated_source_port=1374 translated_vlan=nostrume vlan=5035 -tatevel itin tam942.api.host iut leumiur deser [F5@boris acl_policy_name=ris acl_policy_type=nisiuta acl_rule_name=utper action=Drop hostname=epr3512.internal.domain bigip_mgmt_ip=10.9.236.18 context_name=iumdo context_type=exe date_time=Jan 05 2019 06:22:49 dest_ip=10.152.7.48 dst_geo=giatnula dest_port=71 device_product=enimadmi device_vendor=qui device_version=1.5292 drop_reason=aecon errdefs_msgno=sedq errdefs_msg_name=olo flow_id=sperna ip_protocol=udp severity=very-high partition_name=conseq route_domain=upta sa_translation_pool=eturadi sa_translation_type=cinge source_ip=10.111.128.11 src_geo=niamq source_port=5336 source_user=umfug translated_dest_ip=10.35.38.185 translated_dest_port=7077 translated_ip_protocol=labor translated_route_domain=Sec translated_source_ip=10.200.116.191 translated_source_port=3068 translated_vlan=nsecte vlan=5790 -uianonnu por nve894.lan turadip ataev eFinib [F5@atione acl_policy_name=xcepte acl_policy_type=gnaa acl_rule_name=tio action=Reject hostname=uredol2174.home bigip_mgmt_ip=10.191.27.182 context_name=tMalo context_type=urautod date_time=Jan 19 2019 13:25:23 dest_ip=10.114.60.159 dst_geo=rese dest_port=5302 device_product=rissusci device_vendor=quaturve device_version=1.5991 drop_reason=tisunde errdefs_msgno=ende errdefs_msg_name=quidolor flow_id=lloin ip_protocol=igmp severity=high partition_name=proiden route_domain=moenimip sa_translation_pool=tat sa_translation_type=tate source_ip=10.236.67.227 src_geo=ern source_port=881 source_user=tlabo translated_dest_ip=10.134.238.8 translated_dest_port=2976 translated_ip_protocol=aqua translated_route_domain=edquiac translated_source_ip=10.240.62.238 translated_source_port=1251 translated_vlan=olo vlan=5926 -ali Nequepor aUten4127.internal.lan apariatu mnisis onsequa [F5@sunt acl_policy_name=orumSe acl_policy_type=olupta acl_rule_name=emveleum action=Drop hostname=ididunt7607.mail.localhost bigip_mgmt_ip=10.165.66.92 context_name=isq context_type=eacommo date_time=Feb 02 2019 20:27:57 dest_ip=10.244.171.198 dst_geo=nimad dest_port=7814 device_product=asi device_vendor=tobe device_version=1.6837 drop_reason=Lore errdefs_msgno=oin errdefs_msg_name=eritquii flow_id=taliqui ip_protocol=ipv6-icmp severity=very-high partition_name=entoreve route_domain=ion sa_translation_pool=exeaco sa_translation_type=tate source_ip=10.109.14.142 src_geo=sitas source_port=6036 source_user=perna translated_dest_ip=10.65.35.64 translated_dest_port=2748 translated_ip_protocol=irur translated_route_domain=risnisiu translated_source_ip=10.22.231.91 translated_source_port=2652 translated_vlan=equepor vlan=897 -ugiatn utpe hend1170.www5.lan ptateve aliqua officiad [F5@nimadmin acl_policy_name=iavol acl_policy_type=roq acl_rule_name=iumtota action=Reject hostname=inimav5557.www5.test bigip_mgmt_ip=10.71.112.86 context_name=olor context_type=emoenim date_time=Feb 17 2019 03:30:32 dest_ip=10.57.64.102 dst_geo=rume dest_port=7667 device_product=inibusBo device_vendor=tqui device_version=1.99 drop_reason=citat errdefs_msgno=prehende errdefs_msg_name=vitaedic flow_id=remip ip_protocol=ggp severity=high partition_name=rehe route_domain=aper sa_translation_pool=gnaa sa_translation_type=tam source_ip=10.64.161.215 src_geo=modi source_port=4869 source_user=rnatur translated_dest_ip=10.29.230.203 translated_dest_port=6579 translated_ip_protocol=abi translated_route_domain=inimaven translated_source_ip=10.89.221.90 translated_source_port=5835 translated_vlan=entoreve vlan=4612 -roqu dquia ommod142.www.home ptate oloreeu imipsa [F5@iscinge acl_policy_name=ora acl_policy_type=meumfug acl_rule_name=inimve action=Closed hostname=nonn1650.www.test bigip_mgmt_ip=10.88.226.76 context_name=ptas context_type=iadolo date_time=Mar 03 2019 10:33:06 dest_ip=10.217.197.29 dst_geo=aliquide dest_port=7187 device_product=tinv device_vendor=iar device_version=1.5232 drop_reason=mquela errdefs_msgno=urm errdefs_msg_name=con flow_id=aeabil ip_protocol=udp severity=low partition_name=edicta route_domain=itaspern sa_translation_pool=tau sa_translation_type=rcit source_ip=10.79.208.135 src_geo=rehende source_port=3688 source_user=erspic translated_dest_ip=10.221.199.137 translated_dest_port=6430 translated_ip_protocol=quipe translated_route_domain=evita translated_source_ip=10.140.118.182 translated_source_port=4566 translated_vlan=nia vlan=7548 -npro boriosa sundeo3076.internal.test Nequepor turQ tod [F5@rsitame acl_policy_name=nsectetu acl_policy_type=untexpli acl_rule_name=smo action=Reject hostname=acons3940.api.lan bigip_mgmt_ip=10.133.48.55 context_name=lab context_type=ela date_time=Mar 17 2019 17:35:40 dest_ip=10.134.141.37 dst_geo=oreve dest_port=2538 device_product=tali device_vendor=quamnih device_version=1.2492 drop_reason=reprehen errdefs_msgno=Exce errdefs_msg_name=tocca flow_id=tinvolu ip_protocol=ipv6 severity=low partition_name=iumt route_domain=mad sa_translation_pool=mpor sa_translation_type=eddoei source_ip=10.35.73.208 src_geo=dolo source_port=6552 source_user=tia translated_dest_ip=10.126.61.230 translated_dest_port=2068 translated_ip_protocol=dolor translated_route_domain=emUteni translated_source_ip=10.189.244.22 translated_source_port=734 translated_vlan=rinre vlan=6425 -ident uatur dquiaco2756.home uiine mve dolorema [F5@ditautf acl_policy_name=uisnostr acl_policy_type=oditautf acl_rule_name=nula action=Established hostname=suscipit587.www.localhost bigip_mgmt_ip=10.81.154.115 context_name=ita context_type=aeratvol date_time=Apr 01 2019 00:38:14 dest_ip=10.194.94.1 dst_geo=ostr dest_port=575 device_product=boreetd device_vendor=ueporro device_version=1.4044 drop_reason=oluptat errdefs_msgno=olors errdefs_msg_name=mSecti flow_id=ius ip_protocol=icmp severity=very-high partition_name=xerci route_domain=qua sa_translation_pool=iaecons sa_translation_type=pteurs source_ip=10.35.65.72 src_geo=veni source_port=3387 source_user=reseo translated_dest_ip=10.239.194.105 translated_dest_port=3629 translated_ip_protocol=isnos translated_route_domain=ntin translated_source_ip=10.240.94.109 translated_source_port=5437 translated_vlan=ono vlan=573 -consequ ine hend3901.www.localdomain nsecte miurere tat [F5@pitlabor acl_policy_name=upi acl_policy_type=olupta acl_rule_name=ape action=Established hostname=mnisiut6146.internal.local bigip_mgmt_ip=10.52.70.192 context_name=empor context_type=ate date_time=Apr 15 2019 07:40:49 dest_ip=10.234.254.96 dst_geo=obeatae dest_port=2042 device_product=orem device_vendor=dquian device_version=1.2307 drop_reason=uis errdefs_msgno=emagnaal errdefs_msg_name=uunturm flow_id=nonnumq ip_protocol=ggp severity=very-high partition_name=ntocca route_domain=emquelau sa_translation_pool=adolorsi sa_translation_type=lupt source_ip=10.38.253.213 src_geo=ncidu source_port=3369 source_user=ionem translated_dest_ip=10.248.72.104 translated_dest_port=7485 translated_ip_protocol=cusan translated_route_domain=ivelit translated_source_ip=10.150.56.227 translated_source_port=4686 translated_vlan=isnost vlan=4697 -urQu idol fici312.api.host eri pitlab riosamn [F5@Malo acl_policy_name=onse acl_policy_type=enatuse acl_rule_name=veritat action=Reject hostname=borios1067.www5.home bigip_mgmt_ip=10.218.15.164 context_name=ntNeque context_type=magnidol date_time=Apr 29 2019 14:43:23 dest_ip=10.56.60.3 dst_geo=aaliq dest_port=2143 device_product=gel device_vendor=modt device_version=1.2031 drop_reason=mvolu errdefs_msgno=agn errdefs_msg_name=eritinvo flow_id=aliq ip_protocol=rdp severity=very-high partition_name=uisautei route_domain=labor sa_translation_pool=ihilmol sa_translation_type=scinge source_ip=10.62.218.239 src_geo=yCiceroi source_port=166 source_user=reh translated_dest_ip=10.73.172.186 translated_dest_port=3510 translated_ip_protocol=itte translated_route_domain=niamquis translated_source_ip=10.203.193.134 translated_source_port=6251 translated_vlan=riosa vlan=7445 -ore ptatema poriss2289.localdomain luptat ficiad saquaea [F5@archi acl_policy_name=caboNe acl_policy_type=ptate acl_rule_name=enimips action=Established hostname=msequ323.www.example bigip_mgmt_ip=10.60.20.76 context_name=seq context_type=uae date_time=May 13 2019 21:45:57 dest_ip=10.244.241.67 dst_geo=quaeabi dest_port=5701 device_product=ost device_vendor=mave device_version=1.2555 drop_reason=aev errdefs_msgno=uovolup errdefs_msg_name=tMaloru flow_id=rum ip_protocol=ipv6-icmp severity=very-high partition_name=ptassita route_domain=ionemul sa_translation_pool=orema sa_translation_type=its source_ip=10.10.46.43 src_geo=stiaec source_port=7346 source_user=nev translated_dest_ip=10.136.211.234 translated_dest_port=4126 translated_ip_protocol=lamcor translated_route_domain=rorsitv translated_source_ip=10.131.127.113 translated_source_port=853 translated_vlan=iamqu vlan=1324 -mwrit dminimve madminim5473.mail.example reeuf orinrepr tinvo [F5@oru acl_policy_name=ainc acl_policy_type=aeab acl_rule_name=iat action=Closed hostname=tdolorem813.internal.host bigip_mgmt_ip=10.50.177.151 context_name=rsitam context_type=aliqui date_time=May 28 2019 04:48:31 dest_ip=10.206.65.159 dst_geo=fdeFini dest_port=1295 device_product=eetdolo device_vendor=issuscip device_version=1.3291 drop_reason=tqu errdefs_msgno=rinc errdefs_msg_name=hender flow_id=sBonor ip_protocol=rdp severity=high partition_name=ercitati route_domain=lapa sa_translation_pool=enia sa_translation_type=atis source_ip=10.233.181.250 src_geo=isiuta source_port=2868 source_user=ugiatq translated_dest_ip=10.187.237.220 translated_dest_port=7744 translated_ip_protocol=eumfu translated_route_domain=remap translated_source_ip=10.248.0.74 translated_source_port=6349 translated_vlan=tru vlan=2520 -isautem eiusm assit1598.www5.invalid archite eruntm iades [F5@mremape acl_policy_name=nimad acl_policy_type=ionemu acl_rule_name=nul action=Established hostname=volupt4626.internal.test bigip_mgmt_ip=10.189.43.11 context_name=asper context_type=eeu date_time=Jun 11 2019 11:51:06 dest_ip=10.193.169.102 dst_geo=olab dest_port=629 device_product=olore device_vendor=mSecti device_version=1.2859 drop_reason=idid errdefs_msgno=ela errdefs_msg_name=fugits flow_id=litseddo ip_protocol=igmp severity=medium partition_name=ptasn route_domain=amrem sa_translation_pool=umdolor sa_translation_type=iamq source_ip=10.248.248.120 src_geo=ationemu source_port=1282 source_user=iatn translated_dest_ip=10.96.223.46 translated_dest_port=3654 translated_ip_protocol=pern translated_route_domain=ptasn translated_source_ip=10.80.129.81 translated_source_port=4827 translated_vlan=tat vlan=5084 -eruntmo lumdolo urmagnid2749.api.host imip taspe siutaliq [F5@turadipi acl_policy_name=tMalo acl_policy_type=veni acl_rule_name=rspi action=Closed hostname=ntium5103.www5.localhost bigip_mgmt_ip=10.66.106.186 context_name=uatD context_type=reh date_time=Jun 25 2019 18:53:40 dest_ip=10.36.14.238 dst_geo=metco dest_port=4740 device_product=ilmoles device_vendor=xeaco device_version=1.1910 drop_reason=ccaecat errdefs_msgno=radip errdefs_msg_name=secil flow_id=totamr ip_protocol=udp severity=very-high partition_name=iciat route_domain=uira sa_translation_pool=orio sa_translation_type=mseq source_ip=10.102.109.199 src_geo=iono source_port=2061 source_user=tNequ translated_dest_ip=10.173.114.63 translated_dest_port=5877 translated_ip_protocol=tatisetq translated_route_domain=eabilloi translated_source_ip=10.91.115.139 translated_source_port=412 translated_vlan=eroi vlan=2077 -riatur amrema illum2978.internal.home rumetMa entor urere [F5@involu acl_policy_name=qui acl_policy_type=aliqu acl_rule_name=sita action=Drop hostname=orpori3334.www.local bigip_mgmt_ip=10.198.157.122 context_name=ncu context_type=quatu date_time=Jul 10 2019 01:56:14 dest_ip=10.239.90.72 dst_geo=iratio dest_port=7700 device_product=its device_vendor=agn device_version=1.3690 drop_reason=ntmo errdefs_msgno=iur errdefs_msg_name=aboNemo flow_id=tsedquia ip_protocol=udp severity=very-high partition_name=tatiset route_domain=enim sa_translation_pool=gnido sa_translation_type=iamq source_ip=10.159.155.88 src_geo=uisa source_port=7034 source_user=iquipex translated_dest_ip=10.0.175.17 translated_dest_port=5236 translated_ip_protocol=tempori translated_route_domain=sedquian translated_source_ip=10.221.223.127 translated_source_port=2687 translated_vlan=ira vlan=3007 -idolor umdo sequatu7142.internal.corp ipsaqu asun rsitam [F5@magn acl_policy_name=amcola acl_policy_type=eumiurer acl_rule_name=umf action=Established hostname=equu7361.www5.localdomain bigip_mgmt_ip=10.30.20.187 context_name=rsinto context_type=nonnumqu date_time=Jul 24 2019 08:58:48 dest_ip=10.103.47.100 dst_geo=chitect dest_port=5316 device_product=fug device_vendor=ulpaq device_version=1.6302 drop_reason=piscivel errdefs_msgno=ueporr errdefs_msg_name=udex flow_id=ipexeac ip_protocol=tcp severity=low partition_name=isci route_domain=archi sa_translation_pool=rsitame sa_translation_type=qui source_ip=10.7.212.201 src_geo=ion source_port=949 source_user=ugiat translated_dest_ip=10.252.136.130 translated_dest_port=5601 translated_ip_protocol=expl translated_route_domain=animi translated_source_ip=10.189.70.237 translated_source_port=1457 translated_vlan=tnul vlan=24 -radip amremap dolorsit64.www.local uredo uamni nisi [F5@onsecte acl_policy_name=iono acl_policy_type=secillum acl_rule_name=sequatD action=Established hostname=tse2979.internal.localhost bigip_mgmt_ip=10.242.121.165 context_name=aut context_type=eriti date_time=Aug 07 2019 16:01:23 dest_ip=10.88.229.78 dst_geo=imadmi dest_port=2642 device_product=tevelite device_vendor=cto device_version=1.2037 drop_reason=mquiado errdefs_msgno=agn errdefs_msg_name=dip flow_id=urmag ip_protocol=tcp severity=high partition_name=laboreet route_domain=tutlabo sa_translation_pool=incid sa_translation_type=der source_ip=10.83.105.69 src_geo=usm source_port=2153 source_user=mni translated_dest_ip=10.102.109.194 translated_dest_port=2324 translated_ip_protocol=nor translated_route_domain=saut translated_source_ip=10.60.224.93 translated_source_port=1508 translated_vlan=deomnis vlan=354 -tla nimve edutpe1255.internal.lan nimadm cepte paquioff [F5@ictasun acl_policy_name=iumto acl_policy_type=ciun acl_rule_name=prehe action=Accept hostname=uisnostr2390.mail.domain bigip_mgmt_ip=10.251.167.219 context_name=eaco context_type=oremeu date_time=Aug 21 2019 23:03:57 dest_ip=10.14.251.18 dst_geo=tenbyCi dest_port=4371 device_product=citation device_vendor=spernatu device_version=1.7314 drop_reason=giatq errdefs_msgno=tion errdefs_msg_name=tNeque flow_id=uidolore ip_protocol=rdp severity=medium partition_name=usB route_domain=magnaali sa_translation_pool=istenatu sa_translation_type=roqui source_ip=10.17.20.93 src_geo=eritqu source_port=4368 source_user=Uteni translated_dest_ip=10.181.134.69 translated_dest_port=551 translated_ip_protocol=norum translated_route_domain=emUten translated_source_ip=10.219.174.45 translated_source_port=4055 translated_vlan=idolo vlan=968 -mmodicon nisis edquia4523.www.host remap ntium veniamqu [F5@equat acl_policy_name=reeu acl_policy_type=atemacc acl_rule_name=rsitvolu action=Accept hostname=luptate4811.mail.example bigip_mgmt_ip=10.30.117.82 context_name=destlabo context_type=fficia date_time=Sep 05 2019 06:06:31 dest_ip=10.245.75.229 dst_geo=elaud dest_port=4916 device_product=eaqueip device_vendor=emUten device_version=1.596 drop_reason=itseddoe errdefs_msgno=iti errdefs_msg_name=evitaedi flow_id=ionulamc ip_protocol=tcp severity=high partition_name=culp route_domain=Ciceroin sa_translation_pool=aeco sa_translation_type=olores source_ip=10.223.99.90 src_geo=adminim source_port=4324 source_user=numqua translated_dest_ip=10.28.233.253 translated_dest_port=1159 translated_ip_protocol=mUten translated_route_domain=eursint translated_source_ip=10.37.14.20 translated_source_port=6531 translated_vlan=teurs vlan=4919 -aaliq nos uaUteni562.www.test deF dutpe tseddoei [F5@byCi acl_policy_name=odic acl_policy_type=chitecto acl_rule_name=nimadm action=Closed hostname=lites1614.www.corp bigip_mgmt_ip=10.125.20.22 context_name=olu context_type=ectet date_time=Sep 19 2019 13:09:05 dest_ip=10.121.189.113 dst_geo=tess dest_port=4686 device_product=xeacom device_vendor=adminim device_version=1.95 drop_reason=henderi errdefs_msgno=rainc errdefs_msg_name=dminim flow_id=sse ip_protocol=tcp severity=high partition_name=umexe route_domain=Sedu sa_translation_pool=tetur sa_translation_type=ern source_ip=10.50.61.114 src_geo=nvento source_port=649 source_user=qua translated_dest_ip=10.57.85.113 translated_dest_port=1024 translated_ip_protocol=itquii translated_route_domain=psu translated_source_ip=10.8.32.17 translated_source_port=3788 translated_vlan=nem vlan=5883 -sitasper agni ivelit1640.internal.lan iscive prehende volup [F5@nimi acl_policy_name=niamqu acl_policy_type=uioffi acl_rule_name=suntin action=Closed hostname=lorinrep7686.mail.corp bigip_mgmt_ip=10.200.28.55 context_name=ineavol context_type=abor date_time=Oct 03 2019 20:11:40 dest_ip=10.232.122.152 dst_geo=voluptat dest_port=1549 device_product=ipi device_vendor=lamcor device_version=1.3064 drop_reason=litesse errdefs_msgno=tam errdefs_msg_name=uovo flow_id=scivelit ip_protocol=icmp severity=low partition_name=empo route_domain=apa sa_translation_pool=colab sa_translation_type=sistenat source_ip=10.215.224.27 src_geo=Sedutper source_port=6726 source_user=ficiade translated_dest_ip=10.113.78.101 translated_dest_port=2707 translated_ip_protocol=amqua translated_route_domain=nsequatu translated_source_ip=10.181.63.82 translated_source_port=168 translated_vlan=tse vlan=4029 -ueip amvo dolorsi306.www5.local tten erit asiarch [F5@tob acl_policy_name=tiae acl_policy_type=imipsamv acl_rule_name=doeiu action=Established hostname=nderit6272.mail.example bigip_mgmt_ip=10.177.14.106 context_name=natuser context_type=olupt date_time=Oct 18 2019 03:14:14 dest_ip=10.239.142.115 dst_geo=nsec dest_port=6720 device_product=siarchi device_vendor=etq device_version=1.4522 drop_reason=archit errdefs_msgno=nde errdefs_msg_name=tNequepo flow_id=byCicer ip_protocol=ipv6 severity=medium partition_name=ipit route_domain=tdolorem sa_translation_pool=nderitin sa_translation_type=mquiado source_ip=10.169.95.128 src_geo=reeufugi source_port=7737 source_user=ofd translated_dest_ip=10.139.20.223 translated_dest_port=114 translated_ip_protocol=porincid translated_route_domain=tisetqu translated_source_ip=10.243.43.168 translated_source_port=2110 translated_vlan=ehenderi vlan=2215 -ipsu iden oreseo1541.mail.domain boriosam lites col [F5@litsedd acl_policy_name=mnis acl_policy_type=ainci acl_rule_name=aturve action=Established hostname=ntu1279.mail.lan bigip_mgmt_ip=10.92.168.198 context_name=rume context_type=uptate date_time=Nov 01 2019 10:16:48 dest_ip=10.115.225.57 dst_geo=orsit dest_port=3315 device_product=mnis device_vendor=tametco device_version=1.7456 drop_reason=inc errdefs_msgno=rroqui errdefs_msg_name=amr flow_id=mfug ip_protocol=tcp severity=low partition_name=mid route_domain=henderi sa_translation_pool=consec sa_translation_type=dquia source_ip=10.90.93.4 src_geo=rehe source_port=3382 source_user=adminima translated_dest_ip=10.39.100.88 translated_dest_port=5195 translated_ip_protocol=lup translated_route_domain=rsi translated_source_ip=10.18.176.44 translated_source_port=7284 translated_vlan=Utenimad vlan=4305 -Bon amquisno mullam6505.www.localhost siarch oloremi ididu [F5@uov acl_policy_name=ncidid acl_policy_type=audantiu acl_rule_name=lmolest action=Reject hostname=essequam1161.domain bigip_mgmt_ip=10.49.68.8 context_name=temUte context_type=idest date_time=Nov 15 2019 17:19:22 dest_ip=10.8.247.249 dst_geo=enimip dest_port=3957 device_product=ataevit device_vendor=ficiad device_version=1.2909 drop_reason=taspe errdefs_msgno=empori errdefs_msg_name=mipsum flow_id=tium ip_protocol=tcp severity=very-high partition_name=ota route_domain=boriosa sa_translation_pool=eprehen sa_translation_type=rehen source_ip=10.163.203.191 src_geo=exeacom source_port=2599 source_user=tlab translated_dest_ip=10.193.43.135 translated_dest_port=4650 translated_ip_protocol=iaeconse translated_route_domain=onevol translated_source_ip=10.173.13.179 translated_source_port=1211 translated_vlan=ptasn vlan=3791 -ctetur amqui itatise2264.invalid lup cipitla niam [F5@mullamc acl_policy_name=umtota acl_policy_type=ssecil acl_rule_name=xplic action=Closed hostname=cipitl2184.localdomain bigip_mgmt_ip=10.240.47.113 context_name=uisnost context_type=snul date_time=Nov 30 2019 00:21:57 dest_ip=10.191.241.249 dst_geo=Loremips dest_port=4361 device_product=tiset device_vendor=ciade device_version=1.7726 drop_reason=equ errdefs_msgno=rror errdefs_msg_name=Exce flow_id=uae ip_protocol=ggp severity=high partition_name=umdol route_domain=nseq sa_translation_pool=autodita sa_translation_type=loreme source_ip=10.84.64.28 src_geo=par source_port=3938 source_user=ull translated_dest_ip=10.209.226.7 translated_dest_port=7745 translated_ip_protocol=aeabi translated_route_domain=ore translated_source_ip=10.31.147.51 translated_source_port=7780 translated_vlan=ptate vlan=3154 -fugit dantiu ntutla1447.invalid strude rautodi Loremips [F5@mestqui acl_policy_name=tect acl_policy_type=odtem acl_rule_name=ite action=Closed hostname=item3647.home bigip_mgmt_ip=10.32.20.4 context_name=olupta context_type=dents date_time=Dec 14 2019 07:24:31 dest_ip=10.166.40.137 dst_geo=oremipsu dest_port=5644 device_product=idolor device_vendor=tionem device_version=1.292 drop_reason=oinB errdefs_msgno=tateve errdefs_msg_name=rsitvo flow_id=enatuser ip_protocol=tcp severity=high partition_name=sistena route_domain=reetdolo sa_translation_pool=psam sa_translation_type=litseddo source_ip=10.225.189.229 src_geo=odtem source_port=2287 source_user=odtemp translated_dest_ip=10.86.1.244 translated_dest_port=7101 translated_ip_protocol=rinci translated_route_domain=uamestqu translated_source_ip=10.52.13.192 translated_source_port=4714 translated_vlan=remagna vlan=439 diff --git a/x-pack/filebeat/module/f5/bigipafm/test/generated.log-expected.json b/x-pack/filebeat/module/f5/bigipafm/test/generated.log-expected.json deleted file mode 100644 index 22b44de3e36..00000000000 --- a/x-pack/filebeat/module/f5/bigipafm/test/generated.log-expected.json +++ /dev/null @@ -1,6560 +0,0 @@ -[ - { - "destination.geo.country_name": "umq", - "destination.nat.ip": "10.165.201.71", - "destination.nat.port": 6153, - "destination.port": 2288, - "event.action": "Closed", - "event.code": "boNemoe", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "iusm modtempo olab6078.home olaboris tur itv [F5@odoco acl_policy_name=ria acl_policy_type=min acl_rule_name=ite action=Closed hostname=tatemac3541.api.corp bigip_mgmt_ip=10.228.193.207 context_name=liqua context_type=ciade date_time=Jan 29 2016 06:09:59 dest_ip=10.125.114.51 dst_geo=umq dest_port=2288 device_product=pexe device_vendor=nes device_version=1.2262 drop_reason=reveri errdefs_msgno=boNemoe errdefs_msg_name=equepor flow_id=eni ip_protocol=ipv6 severity=low partition_name=ehend route_domain=ritquiin sa_translation_pool=umqui sa_translation_type=reeufugi source_ip=10.208.121.85 src_geo=sperna source_port=884 source_user=billoi translated_dest_ip=10.165.201.71 translated_dest_port=6153 translated_ip_protocol=tatemU translated_route_domain=deF translated_source_ip=10.11.196.142 translated_source_port=5222 translated_vlan=iatnu vlan=3810", - "fileset.name": "bigipafm", - "host.ip": "10.228.193.207", - "host.name": "tatemac3541.api.corp", - "input.type": "log", - "log.level": "low", - "log.offset": 0, - "network.protocol": "ipv6", - "observer.product": "pexe", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2262", - "related.hosts": [ - "tatemac3541.api.corp" - ], - "related.ip": [ - "10.11.196.142", - "10.165.201.71", - "10.208.121.85", - "10.228.193.207" - ], - "related.user": [ - "billoi" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "liqua", - "rsa.misc.event_type": "equepor", - "rsa.misc.obj_name": "odoco", - "rsa.misc.policy_name": "ria", - "rsa.misc.reference_id": "boNemoe", - "rsa.misc.rule_name": "ite", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.2262", - "rsa.network.alias_host": [ - "tatemac3541.api.corp" - ], - "rsa.network.vlan": 3810, - "rsa.time.event_time_str": "Jan", - "rule.name": "ite", - "service.type": "f5", - "source.geo.country_name": "sperna", - "source.ip": "10.208.121.85", - "source.nat.ip": "10.11.196.142", - "source.nat.port": 5222, - "source.port": 884, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "billoi" - }, - { - "destination.geo.country_name": "iin", - "destination.nat.ip": "10.94.67.230", - "destination.nat.port": 783, - "destination.port": 6287, - "event.action": "Established", - "event.code": "eumiu", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "eporr quipexe alo4540.example umdo itessequ vol [F5@luptat acl_policy_name=isiutal acl_policy_type=moenimi acl_rule_name=mod action=Established hostname=enatus2114.mail.home bigip_mgmt_ip=10.51.132.10 context_name=utper context_type=squame date_time=Feb 12 2016 13:12:33 dest_ip=10.173.116.41 dst_geo=iin dest_port=6287 device_product=emape device_vendor=aer device_version=1.445 drop_reason=nse errdefs_msgno=eumiu errdefs_msg_name=uame flow_id=quis ip_protocol=tcp severity=medium partition_name=cca route_domain=dolo sa_translation_pool=meumfug sa_translation_type=tetu source_ip=10.162.9.235 src_geo=tionulam source_port=2548 source_user=byC translated_dest_ip=10.94.67.230 translated_dest_port=783 translated_ip_protocol=atio translated_route_domain=uipexea translated_source_ip=10.92.202.200 translated_source_port=6772 translated_vlan=eFini vlan=859", - "fileset.name": "bigipafm", - "host.ip": "10.51.132.10", - "host.name": "enatus2114.mail.home", - "input.type": "log", - "log.level": "medium", - "log.offset": 856, - "network.protocol": "tcp", - "observer.product": "emape", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.445", - "related.hosts": [ - "enatus2114.mail.home" - ], - "related.ip": [ - "10.162.9.235", - "10.51.132.10", - "10.92.202.200", - "10.94.67.230" - ], - "related.user": [ - "byC" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "utper", - "rsa.misc.event_type": "uame", - "rsa.misc.obj_name": "luptat", - "rsa.misc.policy_name": "isiutal", - "rsa.misc.reference_id": "eumiu", - "rsa.misc.rule_name": "mod", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.445", - "rsa.network.alias_host": [ - "enatus2114.mail.home" - ], - "rsa.network.vlan": 859, - "rsa.time.event_time_str": "Feb", - "rule.name": "mod", - "service.type": "f5", - "source.geo.country_name": "tionulam", - "source.ip": "10.162.9.235", - "source.nat.ip": "10.92.202.200", - "source.nat.port": 6772, - "source.port": 2548, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "byC" - }, - { - "destination.geo.country_name": "uptassi", - "destination.nat.ip": "10.82.56.117", - "destination.nat.port": 2935, - "destination.port": 3179, - "event.action": "Reject", - "event.code": "llumd", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "exe iatu ionofde2424.api.invalid rsitam ommodic mipsu [F5@consec acl_policy_name=taliquip acl_policy_type=psumq acl_rule_name=atcup action=Reject hostname=gelit6728.api.invalid bigip_mgmt_ip=10.122.116.161 context_name=uam context_type=untutl date_time=Feb 26 2016 20:15:08 dest_ip=10.40.68.117 dst_geo=uptassi dest_port=3179 device_product=scivel device_vendor=aqui device_version=1.4726 drop_reason=iveli errdefs_msgno=llumd errdefs_msg_name=enatuse flow_id=magn ip_protocol=icmp severity=low partition_name=eos route_domain=enimad sa_translation_pool=rmagni sa_translation_type=sit source_ip=10.209.155.149 src_geo=tenima source_port=1073 source_user=seq translated_dest_ip=10.82.56.117 translated_dest_port=2935 translated_ip_protocol=veleumi translated_route_domain=tia translated_source_ip=10.191.68.244 translated_source_port=6905 translated_vlan=veri vlan=5990", - "fileset.name": "bigipafm", - "host.ip": "10.122.116.161", - "host.name": "gelit6728.api.invalid", - "input.type": "log", - "log.level": "low", - "log.offset": 1713, - "network.protocol": "icmp", - "observer.product": "scivel", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4726", - "related.hosts": [ - "gelit6728.api.invalid" - ], - "related.ip": [ - "10.122.116.161", - "10.191.68.244", - "10.209.155.149", - "10.82.56.117" - ], - "related.user": [ - "seq" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "uam", - "rsa.misc.event_type": "enatuse", - "rsa.misc.obj_name": "consec", - "rsa.misc.policy_name": "taliquip", - "rsa.misc.reference_id": "llumd", - "rsa.misc.rule_name": "atcup", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.4726", - "rsa.network.alias_host": [ - "gelit6728.api.invalid" - ], - "rsa.network.vlan": 5990, - "rsa.time.event_time_str": "Feb", - "rule.name": "atcup", - "service.type": "f5", - "source.geo.country_name": "tenima", - "source.ip": "10.209.155.149", - "source.nat.ip": "10.191.68.244", - "source.nat.port": 6905, - "source.port": 1073, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "seq" - }, - { - "destination.geo.country_name": "untNequ", - "destination.nat.ip": "10.131.233.27", - "destination.nat.port": 5037, - "destination.port": 5075, - "event.action": "Accept", - "event.code": "ugiatqu", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "siutaliq exercit tempor4496.www.localdomain eip lupta iusmodt [F5@doloreeu acl_policy_name=pori acl_policy_type=occ acl_rule_name=ect action=Accept hostname=uid545.www5.localhost bigip_mgmt_ip=10.12.44.169 context_name=autfu context_type=natura date_time=Mar 12 2016 03:17:42 dest_ip=10.163.217.10 dst_geo=untNequ dest_port=5075 device_product=nimadmin device_vendor=erep device_version=1.2696 drop_reason=temq errdefs_msgno=ugiatqu errdefs_msg_name=eacomm flow_id=Utenimad ip_protocol=igmp severity=high partition_name=ehend route_domain=ueipsaqu sa_translation_pool=uidolore sa_translation_type=niamqu source_ip=10.202.66.28 src_geo=tevelit source_port=5098 source_user=elits translated_dest_ip=10.131.233.27 translated_dest_port=5037 translated_ip_protocol=ari translated_route_domain=eataevit translated_source_ip=10.50.112.141 translated_source_port=7303 translated_vlan=dmi vlan=499", - "fileset.name": "bigipafm", - "host.ip": "10.12.44.169", - "host.name": "uid545.www5.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 2582, - "network.protocol": "igmp", - "observer.product": "nimadmin", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2696", - "related.hosts": [ - "uid545.www5.localhost" - ], - "related.ip": [ - "10.12.44.169", - "10.131.233.27", - "10.202.66.28", - "10.50.112.141" - ], - "related.user": [ - "elits" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "autfu", - "rsa.misc.event_type": "eacomm", - "rsa.misc.obj_name": "doloreeu", - "rsa.misc.policy_name": "pori", - "rsa.misc.reference_id": "ugiatqu", - "rsa.misc.rule_name": "ect", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.2696", - "rsa.network.alias_host": [ - "uid545.www5.localhost" - ], - "rsa.network.vlan": 499, - "rsa.time.event_time_str": "Mar", - "rule.name": "ect", - "service.type": "f5", - "source.geo.country_name": "tevelit", - "source.ip": "10.202.66.28", - "source.nat.ip": "10.50.112.141", - "source.nat.port": 7303, - "source.port": 5098, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "elits" - }, - { - "destination.geo.country_name": "ema", - "destination.nat.ip": "10.96.35.212", - "destination.nat.port": 3982, - "destination.port": 5969, - "event.action": "Established", - "event.code": "imav", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "mquisnos loremagn iciade3433.example enimad incididu eci [F5@aali acl_policy_name=ametcons acl_policy_type=porainc acl_rule_name=amquisno action=Established hostname=emquiavo452.internal.localhost bigip_mgmt_ip=10.151.111.38 context_name=tvol context_type=moll date_time=Mar 26 2016 10:20:16 dest_ip=10.228.149.225 dst_geo=ema dest_port=5969 device_product=tquovol device_vendor=ntsuntin device_version=1.3341 drop_reason=tatno errdefs_msgno=imav errdefs_msg_name=ididu flow_id=ciunt ip_protocol=ipv6-icmp severity=very-high partition_name=emqu route_domain=lit sa_translation_pool=iam sa_translation_type=qua source_ip=10.159.182.171 src_geo=umdolore source_port=6680 source_user=mol translated_dest_ip=10.96.35.212 translated_dest_port=3982 translated_ip_protocol=rumet translated_route_domain=oll translated_source_ip=10.206.197.113 translated_source_port=4075 translated_vlan=temUten vlan=4125", - "fileset.name": "bigipafm", - "host.ip": "10.151.111.38", - "host.name": "emquiavo452.internal.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3471, - "network.protocol": "ipv6-icmp", - "observer.product": "tquovol", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3341", - "related.hosts": [ - "emquiavo452.internal.localhost" - ], - "related.ip": [ - "10.151.111.38", - "10.159.182.171", - "10.206.197.113", - "10.96.35.212" - ], - "related.user": [ - "mol" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "tvol", - "rsa.misc.event_type": "ididu", - "rsa.misc.obj_name": "aali", - "rsa.misc.policy_name": "ametcons", - "rsa.misc.reference_id": "imav", - "rsa.misc.rule_name": "amquisno", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3341", - "rsa.network.alias_host": [ - "emquiavo452.internal.localhost" - ], - "rsa.network.vlan": 4125, - "rsa.time.event_time_str": "Mar", - "rule.name": "amquisno", - "service.type": "f5", - "source.geo.country_name": "umdolore", - "source.ip": "10.159.182.171", - "source.nat.ip": "10.206.197.113", - "source.nat.port": 4075, - "source.port": 6680, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "mol" - }, - { - "destination.geo.country_name": "rnatura", - "destination.nat.ip": "10.169.144.147", - "destination.nat.port": 2399, - "destination.port": 3007, - "event.action": "Drop", - "event.code": "liq", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "iqu ollit usan6343.www5.domain olo uaera sitas [F5@ehenderi acl_policy_name=pidatat acl_policy_type=gni acl_rule_name=tquiinea action=Drop hostname=sun1403.www.invalid bigip_mgmt_ip=10.126.177.162 context_name=eriame context_type=lorema date_time=Apr 09 2016 17:22:51 dest_ip=10.213.82.64 dst_geo=rnatura dest_port=3007 device_product=ddoeiu device_vendor=enb device_version=1.6179 drop_reason=onse errdefs_msgno=liq errdefs_msg_name=metcon flow_id=smo ip_protocol=igmp severity=medium partition_name=emporinc route_domain=untutlab sa_translation_pool=tem sa_translation_type=ons source_ip=10.213.113.28 src_geo=ali source_port=6446 source_user=ist translated_dest_ip=10.169.144.147 translated_dest_port=2399 translated_ip_protocol=nibus translated_route_domain=edquiano translated_source_ip=10.89.163.114 translated_source_port=5166 translated_vlan=par vlan=686", - "fileset.name": "bigipafm", - "host.ip": "10.126.177.162", - "host.name": "sun1403.www.invalid", - "input.type": "log", - "log.level": "medium", - "log.offset": 4369, - "network.protocol": "igmp", - "observer.product": "ddoeiu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6179", - "related.hosts": [ - "sun1403.www.invalid" - ], - "related.ip": [ - "10.126.177.162", - "10.169.144.147", - "10.213.113.28", - "10.89.163.114" - ], - "related.user": [ - "ist" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "eriame", - "rsa.misc.event_type": "metcon", - "rsa.misc.obj_name": "ehenderi", - "rsa.misc.policy_name": "pidatat", - "rsa.misc.reference_id": "liq", - "rsa.misc.rule_name": "tquiinea", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.6179", - "rsa.network.alias_host": [ - "sun1403.www.invalid" - ], - "rsa.network.vlan": 686, - "rsa.time.event_time_str": "Apr", - "rule.name": "tquiinea", - "service.type": "f5", - "source.geo.country_name": "ali", - "source.ip": "10.213.113.28", - "source.nat.ip": "10.89.163.114", - "source.nat.port": 5166, - "source.port": 6446, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ist" - }, - { - "destination.geo.country_name": "qua", - "destination.nat.ip": "10.101.223.43", - "destination.nat.port": 6494, - "destination.port": 2945, - "event.action": "Closed", - "event.code": "tinvol", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "rveli rsint omm4276.www.example onofd taed lup [F5@remeumf acl_policy_name=antiumto acl_policy_type=strude acl_rule_name=ctetura action=Closed hostname=ittenbyC7838.api.localdomain bigip_mgmt_ip=10.18.124.28 context_name=ido context_type=paqu date_time=Apr 24 2016 00:25:25 dest_ip=10.158.194.3 dst_geo=qua dest_port=2945 device_product=quip device_vendor=oin device_version=1.6316 drop_reason=elaudant errdefs_msgno=tinvol errdefs_msg_name=dolore flow_id=abor ip_protocol=udp severity=medium partition_name=etc route_domain=etM sa_translation_pool=nimadmin sa_translation_type=ditautfu source_ip=10.146.88.52 src_geo=entsu source_port=5364 source_user=rudexerc translated_dest_ip=10.101.223.43 translated_dest_port=6494 translated_ip_protocol=quam translated_route_domain=adm translated_source_ip=10.103.107.47 translated_source_port=6094 translated_vlan=Nemoen vlan=2827", - "fileset.name": "bigipafm", - "host.ip": "10.18.124.28", - "host.name": "ittenbyC7838.api.localdomain", - "input.type": "log", - "log.level": "medium", - "log.offset": 5232, - "network.protocol": "udp", - "observer.product": "quip", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6316", - "related.hosts": [ - "ittenbyC7838.api.localdomain" - ], - "related.ip": [ - "10.101.223.43", - "10.103.107.47", - "10.146.88.52", - "10.18.124.28" - ], - "related.user": [ - "rudexerc" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ido", - "rsa.misc.event_type": "dolore", - "rsa.misc.obj_name": "remeumf", - "rsa.misc.policy_name": "antiumto", - "rsa.misc.reference_id": "tinvol", - "rsa.misc.rule_name": "ctetura", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.6316", - "rsa.network.alias_host": [ - "ittenbyC7838.api.localdomain" - ], - "rsa.network.vlan": 2827, - "rsa.time.event_time_str": "Apr", - "rule.name": "ctetura", - "service.type": "f5", - "source.geo.country_name": "entsu", - "source.ip": "10.146.88.52", - "source.nat.ip": "10.103.107.47", - "source.nat.port": 6094, - "source.port": 5364, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "rudexerc" - }, - { - "destination.geo.country_name": "ivelits", - "destination.nat.ip": "10.110.99.17", - "destination.nat.port": 6888, - "destination.port": 712, - "event.action": "Reject", - "event.code": "ommod", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "icab mwr fugi4637.www.lan imadmini ntutla equa [F5@mexercit acl_policy_name=dtem acl_policy_type=tasuntex acl_rule_name=sunt action=Reject hostname=ume465.corp bigip_mgmt_ip=10.189.109.245 context_name=emaperi context_type=tame date_time=May 08 2016 07:27:59 dest_ip=10.83.234.60 dst_geo=ivelits dest_port=712 device_product=iusmodt device_vendor=etdolo device_version=1.3768 drop_reason=lorumw errdefs_msgno=ommod errdefs_msg_name=sequatur flow_id=uidolo ip_protocol=ipv6-icmp severity=high partition_name=nihi route_domain=Lor sa_translation_pool=itecto sa_translation_type=erc source_ip=10.69.57.206 src_geo=olupt source_port=5979 source_user=onse translated_dest_ip=10.110.99.17 translated_dest_port=6888 translated_ip_protocol=ostrume translated_route_domain=molest translated_source_ip=10.150.220.75 translated_source_port=1298 translated_vlan=tisetq vlan=5372", - "fileset.name": "bigipafm", - "host.ip": "10.189.109.245", - "host.name": "ume465.corp", - "input.type": "log", - "log.level": "high", - "log.offset": 6105, - "network.protocol": "ipv6-icmp", - "observer.product": "iusmodt", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3768", - "related.hosts": [ - "ume465.corp" - ], - "related.ip": [ - "10.110.99.17", - "10.150.220.75", - "10.189.109.245", - "10.69.57.206" - ], - "related.user": [ - "onse" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "emaperi", - "rsa.misc.event_type": "sequatur", - "rsa.misc.obj_name": "mexercit", - "rsa.misc.policy_name": "dtem", - "rsa.misc.reference_id": "ommod", - "rsa.misc.rule_name": "sunt", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.3768", - "rsa.network.alias_host": [ - "ume465.corp" - ], - "rsa.network.vlan": 5372, - "rsa.time.event_time_str": "May", - "rule.name": "sunt", - "service.type": "f5", - "source.geo.country_name": "olupt", - "source.ip": "10.69.57.206", - "source.nat.ip": "10.150.220.75", - "source.nat.port": 1298, - "source.port": 5979, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "onse" - }, - { - "destination.geo.country_name": "nidolo", - "destination.nat.ip": "10.19.194.101", - "destination.nat.port": 3605, - "destination.port": 3409, - "event.action": "Drop", - "event.code": "Loremip", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ici giatquov eritquii3561.www.example taut oreseos uames [F5@tati acl_policy_name=utaliqu acl_policy_type=oriosamn acl_rule_name=deFinibu action=Drop hostname=iciatisu1463.www5.localdomain bigip_mgmt_ip=10.153.136.222 context_name=tem context_type=est date_time=May 22 2016 14:30:33 dest_ip=10.176.205.96 dst_geo=nidolo dest_port=3409 device_product=taliq device_vendor=intoccae device_version=1.2299 drop_reason=dolo errdefs_msgno=Loremip errdefs_msg_name=idolor flow_id=emeumfu ip_protocol=ipv6-icmp severity=very-high partition_name=lupt route_domain=psaquae sa_translation_pool=oinBCSe sa_translation_type=mnisist source_ip=10.199.34.241 src_geo=amvolup source_port=7700 source_user=temveleu translated_dest_ip=10.19.194.101 translated_dest_port=3605 translated_ip_protocol=numqu translated_route_domain=qui translated_source_ip=10.121.219.204 translated_source_port=3496 translated_vlan=utali vlan=3611", - "fileset.name": "bigipafm", - "host.ip": "10.153.136.222", - "host.name": "iciatisu1463.www5.localdomain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6972, - "network.protocol": "ipv6-icmp", - "observer.product": "taliq", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2299", - "related.hosts": [ - "iciatisu1463.www5.localdomain" - ], - "related.ip": [ - "10.121.219.204", - "10.153.136.222", - "10.19.194.101", - "10.199.34.241" - ], - "related.user": [ - "temveleu" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "tem", - "rsa.misc.event_type": "idolor", - "rsa.misc.obj_name": "tati", - "rsa.misc.policy_name": "utaliqu", - "rsa.misc.reference_id": "Loremip", - "rsa.misc.rule_name": "deFinibu", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.2299", - "rsa.network.alias_host": [ - "iciatisu1463.www5.localdomain" - ], - "rsa.network.vlan": 3611, - "rsa.time.event_time_str": "May", - "rule.name": "deFinibu", - "service.type": "f5", - "source.geo.country_name": "amvolup", - "source.ip": "10.199.34.241", - "source.nat.ip": "10.121.219.204", - "source.nat.port": 3496, - "source.port": 7700, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "temveleu" - }, - { - "destination.geo.country_name": "usmodt", - "destination.nat.ip": "10.57.103.192", - "destination.nat.port": 2716, - "destination.port": 1837, - "event.action": "Reject", - "event.code": "llu", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "reetd lumqui itinvo7084.mail.corp equep iavolu den [F5@tutla acl_policy_name=olorema acl_policy_type=iades acl_rule_name=siarchi action=Reject hostname=aliqu6801.api.localdomain bigip_mgmt_ip=10.46.27.57 context_name=ihilm context_type=atDu date_time=Jun 05 2016 21:33:08 dest_ip=10.128.232.208 dst_geo=usmodt dest_port=1837 device_product=run device_vendor=mque device_version=1.4138 drop_reason=quirat errdefs_msgno=llu errdefs_msg_name=licab flow_id=eirure ip_protocol=rdp severity=medium partition_name=oidentsu route_domain=atiset sa_translation_pool=atu sa_translation_type=umexerci source_ip=10.64.141.105 src_geo=iadese source_port=2374 source_user=ice translated_dest_ip=10.57.103.192 translated_dest_port=2716 translated_ip_protocol=oei translated_route_domain=tlabori translated_source_ip=10.182.199.231 translated_source_port=1426 translated_vlan=data vlan=4478", - "fileset.name": "bigipafm", - "host.ip": "10.46.27.57", - "host.name": "aliqu6801.api.localdomain", - "input.type": "log", - "log.level": "medium", - "log.offset": 7880, - "network.protocol": "rdp", - "observer.product": "run", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4138", - "related.hosts": [ - "aliqu6801.api.localdomain" - ], - "related.ip": [ - "10.182.199.231", - "10.46.27.57", - "10.57.103.192", - "10.64.141.105" - ], - "related.user": [ - "ice" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "ihilm", - "rsa.misc.event_type": "licab", - "rsa.misc.obj_name": "tutla", - "rsa.misc.policy_name": "olorema", - "rsa.misc.reference_id": "llu", - "rsa.misc.rule_name": "siarchi", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.4138", - "rsa.network.alias_host": [ - "aliqu6801.api.localdomain" - ], - "rsa.network.vlan": 4478, - "rsa.time.event_time_str": "Jun", - "rule.name": "siarchi", - "service.type": "f5", - "source.geo.country_name": "iadese", - "source.ip": "10.64.141.105", - "source.nat.ip": "10.182.199.231", - "source.nat.port": 1426, - "source.port": 2374, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ice" - }, - { - "destination.geo.country_name": "serunt", - "destination.nat.ip": "10.160.210.31", - "destination.nat.port": 7741, - "destination.port": 7865, - "event.action": "Closed", - "event.code": "eaq", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "nnum eritqu uradip7152.www5.home luptasn hitect dol [F5@leumiu acl_policy_name=namali acl_policy_type=taevit acl_rule_name=rinrepre action=Closed hostname=itame189.domain bigip_mgmt_ip=10.32.67.231 context_name=estia context_type=eaq date_time=Jun 20 2016 04:35:42 dest_ip=10.66.80.221 dst_geo=serunt dest_port=7865 device_product=texp device_vendor=tMalor device_version=1.7410 drop_reason=emoe errdefs_msgno=eaq errdefs_msg_name=amest flow_id=corp ip_protocol=tcp severity=low partition_name=rehender route_domain=iae sa_translation_pool=dantiumt sa_translation_type=luptasn source_ip=10.164.6.207 src_geo=olestiae source_port=5485 source_user=pic translated_dest_ip=10.160.210.31 translated_dest_port=7741 translated_ip_protocol=duntut translated_route_domain=magni translated_source_ip=10.3.134.237 translated_source_port=3156 translated_vlan=radipisc vlan=7020", - "fileset.name": "bigipafm", - "host.ip": "10.32.67.231", - "host.name": "itame189.domain", - "input.type": "log", - "log.level": "low", - "log.offset": 8754, - "network.protocol": "tcp", - "observer.product": "texp", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7410", - "related.hosts": [ - "itame189.domain" - ], - "related.ip": [ - "10.160.210.31", - "10.164.6.207", - "10.3.134.237", - "10.32.67.231" - ], - "related.user": [ - "pic" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "estia", - "rsa.misc.event_type": "amest", - "rsa.misc.obj_name": "leumiu", - "rsa.misc.policy_name": "namali", - "rsa.misc.reference_id": "eaq", - "rsa.misc.rule_name": "rinrepre", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.7410", - "rsa.network.alias_host": [ - "itame189.domain" - ], - "rsa.network.vlan": 7020, - "rsa.time.event_time_str": "Jun", - "rule.name": "rinrepre", - "service.type": "f5", - "source.geo.country_name": "olestiae", - "source.ip": "10.164.6.207", - "source.nat.ip": "10.3.134.237", - "source.nat.port": 3156, - "source.port": 5485, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "pic" - }, - { - "destination.geo.country_name": "beata", - "destination.nat.ip": "10.42.138.192", - "destination.nat.port": 3403, - "destination.port": 6448, - "event.action": "Established", - "event.code": "uela", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "fficiade uscipit vitaedi1318.corp temqu edol colab [F5@ommodico acl_policy_name=quatD acl_policy_type=mcolab acl_rule_name=neav action=Established hostname=tsedqu2456.www5.invalid bigip_mgmt_ip=10.182.178.217 context_name=tlab context_type=volupt date_time=Jul 04 2016 11:38:16 dest_ip=10.188.169.107 dst_geo=beata dest_port=6448 device_product=fdeFi device_vendor=texp device_version=1.3545 drop_reason=etdol errdefs_msgno=uela errdefs_msg_name=boN flow_id=eprehend ip_protocol=tcp severity=medium partition_name=aboN route_domain=ihilmo sa_translation_pool=radi sa_translation_type=gel source_ip=10.235.101.253 src_geo=veniam source_port=2400 source_user=giatnu translated_dest_ip=10.42.138.192 translated_dest_port=3403 translated_ip_protocol=quioffi translated_route_domain=uptate translated_source_ip=10.201.6.10 translated_source_port=6608 translated_vlan=sequa vlan=2851", - "fileset.name": "bigipafm", - "host.ip": "10.182.178.217", - "host.name": "tsedqu2456.www5.invalid", - "input.type": "log", - "log.level": "medium", - "log.offset": 9620, - "network.protocol": "tcp", - "observer.product": "fdeFi", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3545", - "related.hosts": [ - "tsedqu2456.www5.invalid" - ], - "related.ip": [ - "10.182.178.217", - "10.201.6.10", - "10.235.101.253", - "10.42.138.192" - ], - "related.user": [ - "giatnu" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "tlab", - "rsa.misc.event_type": "boN", - "rsa.misc.obj_name": "ommodico", - "rsa.misc.policy_name": "quatD", - "rsa.misc.reference_id": "uela", - "rsa.misc.rule_name": "neav", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.3545", - "rsa.network.alias_host": [ - "tsedqu2456.www5.invalid" - ], - "rsa.network.vlan": 2851, - "rsa.time.event_time_str": "Jul", - "rule.name": "neav", - "service.type": "f5", - "source.geo.country_name": "veniam", - "source.ip": "10.235.101.253", - "source.nat.ip": "10.201.6.10", - "source.nat.port": 6608, - "source.port": 2400, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "giatnu" - }, - { - "destination.geo.country_name": "enderit", - "destination.nat.ip": "10.194.247.171", - "destination.nat.port": 4940, - "destination.port": 5858, - "event.action": "Closed", - "event.code": "Utenimad", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ate aliquam nimid893.mail.corp umwr oluptate issus [F5@osamn acl_policy_name=isnisiu acl_policy_type=bore acl_rule_name=tsu action=Closed hostname=stlabo1228.mail.host bigip_mgmt_ip=10.151.161.70 context_name=edo context_type=asia date_time=Jul 18 2016 18:40:50 dest_ip=10.108.167.93 dst_geo=enderit dest_port=5858 device_product=essecil device_vendor=citation device_version=1.3795 drop_reason=eco errdefs_msgno=Utenimad errdefs_msg_name=orpor flow_id=tlabo ip_protocol=rdp severity=low partition_name=emvel route_domain=tmollita sa_translation_pool=fde sa_translation_type=nsecte source_ip=10.22.102.198 src_geo=eroi source_port=176 source_user=nse translated_dest_ip=10.194.247.171 translated_dest_port=4940 translated_ip_protocol=mquisnos translated_route_domain=maven translated_source_ip=10.86.101.235 translated_source_port=3266 translated_vlan=lapar vlan=1024", - "fileset.name": "bigipafm", - "host.ip": "10.151.161.70", - "host.name": "stlabo1228.mail.host", - "input.type": "log", - "log.level": "low", - "log.offset": 10498, - "network.protocol": "rdp", - "observer.product": "essecil", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3795", - "related.hosts": [ - "stlabo1228.mail.host" - ], - "related.ip": [ - "10.151.161.70", - "10.194.247.171", - "10.22.102.198", - "10.86.101.235" - ], - "related.user": [ - "nse" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "edo", - "rsa.misc.event_type": "orpor", - "rsa.misc.obj_name": "osamn", - "rsa.misc.policy_name": "isnisiu", - "rsa.misc.reference_id": "Utenimad", - "rsa.misc.rule_name": "tsu", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.3795", - "rsa.network.alias_host": [ - "stlabo1228.mail.host" - ], - "rsa.network.vlan": 1024, - "rsa.time.event_time_str": "Jul", - "rule.name": "tsu", - "service.type": "f5", - "source.geo.country_name": "eroi", - "source.ip": "10.22.102.198", - "source.nat.ip": "10.86.101.235", - "source.nat.port": 3266, - "source.port": 176, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "nse" - }, - { - "destination.geo.country_name": "mve", - "destination.nat.ip": "10.107.168.60", - "destination.nat.port": 2227, - "destination.port": 513, - "event.action": "Reject", - "event.code": "volupt", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tfu udan orema6040.api.corp mveleu nofdeFin sequam [F5@temvel acl_policy_name=ris acl_policy_type=nisi acl_rule_name=dant action=Reject hostname=ecte4762.local bigip_mgmt_ip=10.204.35.15 context_name=quidolor context_type=tessec date_time=Aug 02 2016 01:43:25 dest_ip=10.135.160.125 dst_geo=mve dest_port=513 device_product=itatio device_vendor=uta device_version=1.4901 drop_reason=sintoc errdefs_msgno=volupt errdefs_msg_name=siste flow_id=uiinea ip_protocol=icmp severity=low partition_name=volupta route_domain=rcitati sa_translation_pool=eni sa_translation_type=ionevo source_ip=10.174.252.105 src_geo=sperna source_port=5368 source_user=mnisi translated_dest_ip=10.107.168.60 translated_dest_port=2227 translated_ip_protocol=oinBC translated_route_domain=quameius translated_source_ip=10.167.172.155 translated_source_port=3544 translated_vlan=etdo vlan=706", - "fileset.name": "bigipafm", - "host.ip": "10.204.35.15", - "host.name": "ecte4762.local", - "input.type": "log", - "log.level": "low", - "log.offset": 11366, - "network.protocol": "icmp", - "observer.product": "itatio", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4901", - "related.hosts": [ - "ecte4762.local" - ], - "related.ip": [ - "10.107.168.60", - "10.167.172.155", - "10.174.252.105", - "10.204.35.15" - ], - "related.user": [ - "mnisi" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "quidolor", - "rsa.misc.event_type": "siste", - "rsa.misc.obj_name": "temvel", - "rsa.misc.policy_name": "ris", - "rsa.misc.reference_id": "volupt", - "rsa.misc.rule_name": "dant", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.4901", - "rsa.network.alias_host": [ - "ecte4762.local" - ], - "rsa.network.vlan": 706, - "rsa.time.event_time_str": "Aug", - "rule.name": "dant", - "service.type": "f5", - "source.geo.country_name": "sperna", - "source.ip": "10.174.252.105", - "source.nat.ip": "10.167.172.155", - "source.nat.port": 3544, - "source.port": 5368, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "mnisi" - }, - { - "destination.geo.country_name": "quinesc", - "destination.nat.ip": "10.182.191.174", - "destination.nat.port": 1759, - "destination.port": 6218, - "event.action": "Drop", - "event.code": "orem", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ese isaute ptatemq95.api.host Nequepo ipsumd ntocc [F5@uteirure acl_policy_name=nevo acl_policy_type=ide acl_rule_name=aali action=Drop hostname=smo7167.www.test bigip_mgmt_ip=10.214.249.164 context_name=tco context_type=uae date_time=Aug 16 2016 08:45:59 dest_ip=10.187.20.98 dst_geo=quinesc dest_port=6218 device_product=santiumd device_vendor=turadip device_version=1.3427 drop_reason=niamqui errdefs_msgno=orem errdefs_msg_name=sno flow_id=atno ip_protocol=ipv6-icmp severity=high partition_name=volu route_domain=nonn sa_translation_pool=inventor sa_translation_type=quiavol source_ip=10.99.249.210 src_geo=iatisu source_port=6684 source_user=upta translated_dest_ip=10.182.191.174 translated_dest_port=1759 translated_ip_protocol=adm translated_route_domain=leumiur translated_source_ip=10.81.26.208 translated_source_port=7651 translated_vlan=isc vlan=5933", - "fileset.name": "bigipafm", - "host.ip": "10.214.249.164", - "host.name": "smo7167.www.test", - "input.type": "log", - "log.level": "high", - "log.offset": 12230, - "network.protocol": "ipv6-icmp", - "observer.product": "santiumd", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3427", - "related.hosts": [ - "smo7167.www.test" - ], - "related.ip": [ - "10.182.191.174", - "10.214.249.164", - "10.81.26.208", - "10.99.249.210" - ], - "related.user": [ - "upta" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "tco", - "rsa.misc.event_type": "sno", - "rsa.misc.obj_name": "uteirure", - "rsa.misc.policy_name": "nevo", - "rsa.misc.reference_id": "orem", - "rsa.misc.rule_name": "aali", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.3427", - "rsa.network.alias_host": [ - "smo7167.www.test" - ], - "rsa.network.vlan": 5933, - "rsa.time.event_time_str": "Aug", - "rule.name": "aali", - "service.type": "f5", - "source.geo.country_name": "iatisu", - "source.ip": "10.99.249.210", - "source.nat.ip": "10.81.26.208", - "source.nat.port": 7651, - "source.port": 6684, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "upta" - }, - { - "destination.geo.country_name": "eriti", - "destination.nat.ip": "10.88.101.53", - "destination.nat.port": 2458, - "destination.port": 2201, - "event.action": "Drop", - "event.code": "quameius", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tobea tor qui4499.api.local fugiatn docon etconsec [F5@ios acl_policy_name=evolu acl_policy_type=ersp acl_rule_name=tquov action=Drop hostname=sauteiru4554.api.domain bigip_mgmt_ip=10.220.5.143 context_name=com context_type=tnulapa date_time=Aug 30 2016 15:48:33 dest_ip=10.108.85.148 dst_geo=eriti dest_port=2201 device_product=norum device_vendor=madmi device_version=1.1766 drop_reason=sequatu errdefs_msgno=quameius errdefs_msg_name=nisiuta flow_id=roid ip_protocol=icmp severity=very-high partition_name=eprehen route_domain=entor sa_translation_pool=xeacomm sa_translation_type=nihil source_ip=10.101.226.128 src_geo=rsitv source_port=3087 source_user=porro translated_dest_ip=10.88.101.53 translated_dest_port=2458 translated_ip_protocol=tatemUt translated_route_domain=modtemp translated_source_ip=10.201.238.90 translated_source_port=2715 translated_vlan=remag vlan=3759", - "fileset.name": "bigipafm", - "host.ip": "10.220.5.143", - "host.name": "sauteiru4554.api.domain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 13094, - "network.protocol": "icmp", - "observer.product": "norum", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1766", - "related.hosts": [ - "sauteiru4554.api.domain" - ], - "related.ip": [ - "10.101.226.128", - "10.201.238.90", - "10.220.5.143", - "10.88.101.53" - ], - "related.user": [ - "porro" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "com", - "rsa.misc.event_type": "nisiuta", - "rsa.misc.obj_name": "ios", - "rsa.misc.policy_name": "evolu", - "rsa.misc.reference_id": "quameius", - "rsa.misc.rule_name": "tquov", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.1766", - "rsa.network.alias_host": [ - "sauteiru4554.api.domain" - ], - "rsa.network.vlan": 3759, - "rsa.time.event_time_str": "Aug", - "rule.name": "tquov", - "service.type": "f5", - "source.geo.country_name": "rsitv", - "source.ip": "10.101.226.128", - "source.nat.ip": "10.201.238.90", - "source.nat.port": 2715, - "source.port": 3087, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "porro" - }, - { - "destination.geo.country_name": "untu", - "destination.nat.ip": "10.30.133.66", - "destination.nat.port": 1921, - "destination.port": 5676, - "event.action": "Reject", - "event.code": "ium", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ccaecat tquiin tse4198.www.localdomain ptasn taedicta itam [F5@str acl_policy_name=idolore acl_policy_type=pid acl_rule_name=illoin action=Reject hostname=untut4046.internal.domain bigip_mgmt_ip=10.217.150.196 context_name=uine context_type=udant date_time=Sep 13 2016 22:51:07 dest_ip=10.183.59.41 dst_geo=untu dest_port=5676 device_product=ven device_vendor=con device_version=1.7491 drop_reason=amnih errdefs_msgno=ium errdefs_msg_name=esciuntN flow_id=idunt ip_protocol=udp severity=low partition_name=rQu route_domain=oremeu sa_translation_pool=laudant sa_translation_type=isnost source_ip=10.157.18.252 src_geo=itess source_port=52 source_user=evit translated_dest_ip=10.30.133.66 translated_dest_port=1921 translated_ip_protocol=velitse translated_route_domain=oditem translated_source_ip=10.243.218.215 translated_source_port=662 translated_vlan=rsitvolu vlan=3751", - "fileset.name": "bigipafm", - "host.ip": "10.217.150.196", - "host.name": "untut4046.internal.domain", - "input.type": "log", - "log.level": "low", - "log.offset": 13974, - "network.protocol": "udp", - "observer.product": "ven", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7491", - "related.hosts": [ - "untut4046.internal.domain" - ], - "related.ip": [ - "10.157.18.252", - "10.217.150.196", - "10.243.218.215", - "10.30.133.66" - ], - "related.user": [ - "evit" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "uine", - "rsa.misc.event_type": "esciuntN", - "rsa.misc.obj_name": "str", - "rsa.misc.policy_name": "idolore", - "rsa.misc.reference_id": "ium", - "rsa.misc.rule_name": "illoin", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.7491", - "rsa.network.alias_host": [ - "untut4046.internal.domain" - ], - "rsa.network.vlan": 3751, - "rsa.time.event_time_str": "Sep", - "rule.name": "illoin", - "service.type": "f5", - "source.geo.country_name": "itess", - "source.ip": "10.157.18.252", - "source.nat.ip": "10.243.218.215", - "source.nat.port": 662, - "source.port": 52, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "evit" - }, - { - "destination.geo.country_name": "iduntu", - "destination.nat.ip": "10.181.133.187", - "destination.nat.port": 1079, - "destination.port": 1655, - "event.action": "Accept", - "event.code": "acommo", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "sumdolor meaqueip npr4414.api.localdomain boNem ess ipisci [F5@gitsed acl_policy_name=tqu acl_policy_type=reprehen acl_rule_name=trumexer action=Accept hostname=quid3147.mail.home bigip_mgmt_ip=10.66.181.6 context_name=epre context_type=tobeata date_time=Sep 28 2016 05:53:42 dest_ip=10.181.53.249 dst_geo=iduntu dest_port=1655 device_product=temUt device_vendor=avol device_version=1.752 drop_reason=essequam errdefs_msgno=acommo errdefs_msg_name=nturma flow_id=str ip_protocol=ipv6 severity=high partition_name=etur route_domain=itecto sa_translation_pool=reetdol sa_translation_type=totamre source_ip=10.148.161.250 src_geo=ciadeser source_port=6135 source_user=adipisc translated_dest_ip=10.181.133.187 translated_dest_port=1079 translated_ip_protocol=aquioffi translated_route_domain=tamet translated_source_ip=10.167.227.44 translated_source_port=6595 translated_vlan=eFi vlan=6733", - "fileset.name": "bigipafm", - "host.ip": "10.66.181.6", - "host.name": "quid3147.mail.home", - "input.type": "log", - "log.level": "high", - "log.offset": 14847, - "network.protocol": "ipv6", - "observer.product": "temUt", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.752", - "related.hosts": [ - "quid3147.mail.home" - ], - "related.ip": [ - "10.148.161.250", - "10.167.227.44", - "10.181.133.187", - "10.66.181.6" - ], - "related.user": [ - "adipisc" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "epre", - "rsa.misc.event_type": "nturma", - "rsa.misc.obj_name": "gitsed", - "rsa.misc.policy_name": "tqu", - "rsa.misc.reference_id": "acommo", - "rsa.misc.rule_name": "trumexer", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.752", - "rsa.network.alias_host": [ - "quid3147.mail.home" - ], - "rsa.network.vlan": 6733, - "rsa.time.event_time_str": "Sep", - "rule.name": "trumexer", - "service.type": "f5", - "source.geo.country_name": "ciadeser", - "source.ip": "10.148.161.250", - "source.nat.ip": "10.167.227.44", - "source.nat.port": 6595, - "source.port": 6135, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "adipisc" - }, - { - "destination.geo.country_name": "psaquaea", - "destination.nat.ip": "10.107.9.163", - "destination.nat.port": 5433, - "destination.port": 1348, - "event.action": "Reject", - "event.code": "piscinge", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "its ender riamea1540.www.host seq tutlab sau [F5@atevelit acl_policy_name=meius acl_policy_type=billo acl_rule_name=labo action=Reject hostname=umdolo1029.mail.localhost bigip_mgmt_ip=10.54.17.32 context_name=orumSe context_type=ratv date_time=Oct 12 2016 12:56:16 dest_ip=10.119.81.180 dst_geo=psaquaea dest_port=1348 device_product=nts device_vendor=siut device_version=1.5663 drop_reason=ano errdefs_msgno=piscinge errdefs_msg_name=tvol flow_id=velitess ip_protocol=ipv6 severity=high partition_name=uunturm route_domain=temUte sa_translation_pool=sit sa_translation_type=olab source_ip=10.84.163.178 src_geo=ima source_port=2031 source_user=mquisno translated_dest_ip=10.107.9.163 translated_dest_port=5433 translated_ip_protocol=eacommod translated_route_domain=ctetura translated_source_ip=10.74.11.43 translated_source_port=55 translated_vlan=seosqui vlan=6797", - "fileset.name": "bigipafm", - "host.ip": "10.54.17.32", - "host.name": "umdolo1029.mail.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 15735, - "network.protocol": "ipv6", - "observer.product": "nts", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5663", - "related.hosts": [ - "umdolo1029.mail.localhost" - ], - "related.ip": [ - "10.107.9.163", - "10.54.17.32", - "10.74.11.43", - "10.84.163.178" - ], - "related.user": [ - "mquisno" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "orumSe", - "rsa.misc.event_type": "tvol", - "rsa.misc.obj_name": "atevelit", - "rsa.misc.policy_name": "meius", - "rsa.misc.reference_id": "piscinge", - "rsa.misc.rule_name": "labo", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.5663", - "rsa.network.alias_host": [ - "umdolo1029.mail.localhost" - ], - "rsa.network.vlan": 6797, - "rsa.time.event_time_str": "Oct", - "rule.name": "labo", - "service.type": "f5", - "source.geo.country_name": "ima", - "source.ip": "10.84.163.178", - "source.nat.ip": "10.74.11.43", - "source.nat.port": 55, - "source.port": 2031, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "mquisno" - }, - { - "destination.geo.country_name": "odoconse", - "destination.nat.ip": "10.184.73.211", - "destination.nat.port": 6540, - "destination.port": 228, - "event.action": "Accept", - "event.code": "labo", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "uradi tot llamco7206.www.home oremagna ncididun umSe [F5@xeacomm acl_policy_name=cinge acl_policy_type=itla acl_rule_name=iamquis action=Accept hostname=lorsita2019.internal.home bigip_mgmt_ip=10.192.229.221 context_name=ect context_type=modocons date_time=Oct 26 2016 19:58:50 dest_ip=10.199.194.188 dst_geo=odoconse dest_port=228 device_product=quatu device_vendor=veli device_version=1.5726 drop_reason=nonp errdefs_msgno=labo errdefs_msg_name=ulapar flow_id=aboreetd ip_protocol=igmp severity=low partition_name=llitanim route_domain=invo sa_translation_pool=hit sa_translation_type=urv source_ip=10.112.32.213 src_geo=runtmol source_port=1749 source_user=odi translated_dest_ip=10.184.73.211 translated_dest_port=6540 translated_ip_protocol=esseci translated_route_domain=tametcon translated_source_ip=10.230.129.252 translated_source_port=3947 translated_vlan=isis vlan=4917", - "fileset.name": "bigipafm", - "host.ip": "10.192.229.221", - "host.name": "lorsita2019.internal.home", - "input.type": "log", - "log.level": "low", - "log.offset": 16603, - "network.protocol": "igmp", - "observer.product": "quatu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5726", - "related.hosts": [ - "lorsita2019.internal.home" - ], - "related.ip": [ - "10.112.32.213", - "10.184.73.211", - "10.192.229.221", - "10.230.129.252" - ], - "related.user": [ - "odi" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "ect", - "rsa.misc.event_type": "ulapar", - "rsa.misc.obj_name": "xeacomm", - "rsa.misc.policy_name": "cinge", - "rsa.misc.reference_id": "labo", - "rsa.misc.rule_name": "iamquis", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.5726", - "rsa.network.alias_host": [ - "lorsita2019.internal.home" - ], - "rsa.network.vlan": 4917, - "rsa.time.event_time_str": "Oct", - "rule.name": "iamquis", - "service.type": "f5", - "source.geo.country_name": "runtmol", - "source.ip": "10.112.32.213", - "source.nat.ip": "10.230.129.252", - "source.nat.port": 3947, - "source.port": 1749, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "odi" - }, - { - "destination.geo.country_name": "doloreme", - "destination.nat.ip": "10.198.213.189", - "destination.nat.port": 5024, - "destination.port": 60, - "event.action": "Reject", - "event.code": "itse", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "utlab emUteni rum959.host velillu cteturad bor [F5@rauto acl_policy_name=ationev acl_policy_type=umdolor acl_rule_name=uaUten action=Reject hostname=paquioff624.mail.invalid bigip_mgmt_ip=10.161.148.64 context_name=ibusBon context_type=ven date_time=Nov 10 2016 03:01:24 dest_ip=10.162.114.217 dst_geo=doloreme dest_port=60 device_product=onemulla device_vendor=evitaed device_version=1.1721 drop_reason=suntin errdefs_msgno=itse errdefs_msg_name=umexerc flow_id=oremipsu ip_protocol=ipv6-icmp severity=medium partition_name=amco route_domain=ssecillu sa_translation_pool=liqua sa_translation_type=olo source_ip=10.199.216.143 src_geo=fdeF source_port=593 source_user=ccaeca translated_dest_ip=10.198.213.189 translated_dest_port=5024 translated_ip_protocol=remagn translated_route_domain=mquae translated_source_ip=10.7.200.140 translated_source_port=3298 translated_vlan=olupt vlan=2189", - "fileset.name": "bigipafm", - "host.ip": "10.161.148.64", - "host.name": "paquioff624.mail.invalid", - "input.type": "log", - "log.level": "medium", - "log.offset": 17484, - "network.protocol": "ipv6-icmp", - "observer.product": "onemulla", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1721", - "related.hosts": [ - "paquioff624.mail.invalid" - ], - "related.ip": [ - "10.161.148.64", - "10.198.213.189", - "10.199.216.143", - "10.7.200.140" - ], - "related.user": [ - "ccaeca" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "ibusBon", - "rsa.misc.event_type": "umexerc", - "rsa.misc.obj_name": "rauto", - "rsa.misc.policy_name": "ationev", - "rsa.misc.reference_id": "itse", - "rsa.misc.rule_name": "uaUten", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.1721", - "rsa.network.alias_host": [ - "paquioff624.mail.invalid" - ], - "rsa.network.vlan": 2189, - "rsa.time.event_time_str": "Nov", - "rule.name": "uaUten", - "service.type": "f5", - "source.geo.country_name": "fdeF", - "source.ip": "10.199.216.143", - "source.nat.ip": "10.7.200.140", - "source.nat.port": 3298, - "source.port": 593, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ccaeca" - }, - { - "destination.geo.country_name": "taedicta", - "destination.nat.ip": "10.128.157.27", - "destination.nat.port": 1493, - "destination.port": 3409, - "event.action": "Reject", - "event.code": "snost", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "edquiac urerepr eseru4234.mail.example qua rsita ate [F5@ipsamvo acl_policy_name=onula acl_policy_type=miu acl_rule_name=rationev action=Reject hostname=mex2054.mail.corp bigip_mgmt_ip=10.65.232.27 context_name=ica context_type=lillum date_time=Nov 24 2016 10:03:59 dest_ip=10.199.40.38 dst_geo=taedicta dest_port=3409 device_product=poriss device_vendor=tvolup device_version=1.1000 drop_reason=siu errdefs_msgno=snost errdefs_msg_name=tpersp flow_id=llamc ip_protocol=tcp severity=very-high partition_name=mvel route_domain=nof sa_translation_pool=usmodi sa_translation_type=mvolu source_ip=10.206.96.56 src_geo=aincidu source_port=2687 source_user=uaeab translated_dest_ip=10.128.157.27 translated_dest_port=1493 translated_ip_protocol=etdolor translated_route_domain=lupta translated_source_ip=10.22.187.69 translated_source_port=3590 translated_vlan=oremi vlan=1485", - "fileset.name": "bigipafm", - "host.ip": "10.65.232.27", - "host.name": "mex2054.mail.corp", - "input.type": "log", - "log.level": "very-high", - "log.offset": 18373, - "network.protocol": "tcp", - "observer.product": "poriss", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1000", - "related.hosts": [ - "mex2054.mail.corp" - ], - "related.ip": [ - "10.128.157.27", - "10.206.96.56", - "10.22.187.69", - "10.65.232.27" - ], - "related.user": [ - "uaeab" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "ica", - "rsa.misc.event_type": "tpersp", - "rsa.misc.obj_name": "ipsamvo", - "rsa.misc.policy_name": "onula", - "rsa.misc.reference_id": "snost", - "rsa.misc.rule_name": "rationev", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.1000", - "rsa.network.alias_host": [ - "mex2054.mail.corp" - ], - "rsa.network.vlan": 1485, - "rsa.time.event_time_str": "Nov", - "rule.name": "rationev", - "service.type": "f5", - "source.geo.country_name": "aincidu", - "source.ip": "10.206.96.56", - "source.nat.ip": "10.22.187.69", - "source.nat.port": 3590, - "source.port": 2687, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "uaeab" - }, - { - "destination.geo.country_name": "dipisci", - "destination.nat.ip": "10.68.253.120", - "destination.nat.port": 481, - "destination.port": 3449, - "event.action": "Closed", - "event.code": "tae", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "nbyCi tevel usc5760.www5.localdomain cab atisund xea [F5@ites acl_policy_name=isetq acl_policy_type=iutali acl_rule_name=velite action=Closed hostname=avolupt7576.api.corp bigip_mgmt_ip=10.194.210.62 context_name=porincid context_type=atisetqu date_time=Dec 08 2016 17:06:33 dest_ip=10.51.213.42 dst_geo=dipisci dest_port=3449 device_product=ilmol device_vendor=eri device_version=1.3104 drop_reason=ueipsa errdefs_msgno=tae errdefs_msg_name=autodit flow_id=elit ip_protocol=udp severity=high partition_name=plica route_domain=ore sa_translation_pool=quidolor sa_translation_type=inven source_ip=10.71.114.14 src_geo=itsedd source_port=3010 source_user=admin translated_dest_ip=10.68.253.120 translated_dest_port=481 translated_ip_protocol=est translated_route_domain=uptatemU translated_source_ip=10.183.130.225 translated_source_port=5693 translated_vlan=item vlan=2738", - "fileset.name": "bigipafm", - "host.ip": "10.194.210.62", - "host.name": "avolupt7576.api.corp", - "input.type": "log", - "log.level": "high", - "log.offset": 19244, - "network.protocol": "udp", - "observer.product": "ilmol", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3104", - "related.hosts": [ - "avolupt7576.api.corp" - ], - "related.ip": [ - "10.183.130.225", - "10.194.210.62", - "10.68.253.120", - "10.71.114.14" - ], - "related.user": [ - "admin" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "porincid", - "rsa.misc.event_type": "autodit", - "rsa.misc.obj_name": "ites", - "rsa.misc.policy_name": "isetq", - "rsa.misc.reference_id": "tae", - "rsa.misc.rule_name": "velite", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.3104", - "rsa.network.alias_host": [ - "avolupt7576.api.corp" - ], - "rsa.network.vlan": 2738, - "rsa.time.event_time_str": "Dec", - "rule.name": "velite", - "service.type": "f5", - "source.geo.country_name": "itsedd", - "source.ip": "10.71.114.14", - "source.nat.ip": "10.183.130.225", - "source.nat.port": 5693, - "source.port": 3010, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "admin" - }, - { - "destination.geo.country_name": "giatquov", - "destination.nat.ip": "10.47.255.237", - "destination.nat.port": 2311, - "destination.port": 1918, - "event.action": "Established", - "event.code": "labo", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "dat periam dqu6144.api.localhost dutpers erun orisn [F5@reetd acl_policy_name=prehen acl_policy_type=ntutlabo acl_rule_name=iusmodte action=Established hostname=loi7596.www5.home bigip_mgmt_ip=10.31.177.226 context_name=deserun context_type=esseq date_time=Dec 23 2016 00:09:07 dest_ip=10.209.157.8 dst_geo=giatquov dest_port=1918 device_product=enderi device_vendor=ptatem device_version=1.341 drop_reason=fugi errdefs_msgno=labo errdefs_msg_name=nostrud flow_id=gnaal ip_protocol=ggp severity=medium partition_name=cupi route_domain=tame sa_translation_pool=atione sa_translation_type=lores source_ip=10.45.253.103 src_geo=uii source_port=5923 source_user=remagn translated_dest_ip=10.47.255.237 translated_dest_port=2311 translated_ip_protocol=uuntur translated_route_domain=enderit translated_source_ip=10.107.45.175 translated_source_port=4185 translated_vlan=rumSecti vlan=4593", - "fileset.name": "bigipafm", - "host.ip": "10.31.177.226", - "host.name": "loi7596.www5.home", - "input.type": "log", - "log.level": "medium", - "log.offset": 20116, - "network.protocol": "ggp", - "observer.product": "enderi", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.341", - "related.hosts": [ - "loi7596.www5.home" - ], - "related.ip": [ - "10.107.45.175", - "10.31.177.226", - "10.45.253.103", - "10.47.255.237" - ], - "related.user": [ - "remagn" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "deserun", - "rsa.misc.event_type": "nostrud", - "rsa.misc.obj_name": "reetd", - "rsa.misc.policy_name": "prehen", - "rsa.misc.reference_id": "labo", - "rsa.misc.rule_name": "iusmodte", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.341", - "rsa.network.alias_host": [ - "loi7596.www5.home" - ], - "rsa.network.vlan": 4593, - "rsa.time.event_time_str": "Dec", - "rule.name": "iusmodte", - "service.type": "f5", - "source.geo.country_name": "uii", - "source.ip": "10.45.253.103", - "source.nat.ip": "10.107.45.175", - "source.nat.port": 4185, - "source.port": 5923, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "remagn" - }, - { - "destination.geo.country_name": "illu", - "destination.nat.ip": "10.55.105.113", - "destination.nat.port": 3214, - "destination.port": 4875, - "event.action": "Reject", - "event.code": "its", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "atise tate onevo4326.internal.local isnost olorem ido [F5@emqu acl_policy_name=riss acl_policy_type=iquamqua acl_rule_name=sit action=Reject hostname=nsequat1971.internal.invalid bigip_mgmt_ip=10.225.212.189 context_name=mven context_type=olorsit date_time=Jan 06 2017 07:11:41 dest_ip=10.121.239.183 dst_geo=illu dest_port=4875 device_product=turadip device_vendor=tatevel device_version=1.1607 drop_reason=ptassita errdefs_msgno=its errdefs_msg_name=lore flow_id=idol ip_protocol=igmp severity=high partition_name=isn route_domain=sBono sa_translation_pool=loremqu sa_translation_type=tetur source_ip=10.213.94.135 src_geo=tMal source_port=2607 source_user=dquia translated_dest_ip=10.55.105.113 translated_dest_port=3214 translated_ip_protocol=tatione translated_route_domain=nimveni translated_source_ip=10.44.58.106 translated_source_port=1241 translated_vlan=quid vlan=4814", - "fileset.name": "bigipafm", - "host.ip": "10.225.212.189", - "host.name": "nsequat1971.internal.invalid", - "input.type": "log", - "log.level": "high", - "log.offset": 21000, - "network.protocol": "igmp", - "observer.product": "turadip", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1607", - "related.hosts": [ - "nsequat1971.internal.invalid" - ], - "related.ip": [ - "10.213.94.135", - "10.225.212.189", - "10.44.58.106", - "10.55.105.113" - ], - "related.user": [ - "dquia" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "mven", - "rsa.misc.event_type": "lore", - "rsa.misc.obj_name": "emqu", - "rsa.misc.policy_name": "riss", - "rsa.misc.reference_id": "its", - "rsa.misc.rule_name": "sit", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.1607", - "rsa.network.alias_host": [ - "nsequat1971.internal.invalid" - ], - "rsa.network.vlan": 4814, - "rsa.time.event_time_str": "Jan", - "rule.name": "sit", - "service.type": "f5", - "source.geo.country_name": "tMal", - "source.ip": "10.213.94.135", - "source.nat.ip": "10.44.58.106", - "source.nat.port": 1241, - "source.port": 2607, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "dquia" - }, - { - "destination.geo.country_name": "mUten", - "destination.nat.ip": "10.69.161.78", - "destination.nat.port": 1282, - "destination.port": 1812, - "event.action": "Reject", - "event.code": "norumet", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "eporroq ulla iqu4614.www5.example abore squ uiadol [F5@Duisa acl_policy_name=lupta acl_policy_type=aUt acl_rule_name=boNem action=Reject hostname=ectiono2241.lan bigip_mgmt_ip=10.2.114.9 context_name=rehende context_type=velillu date_time=Jan 20 2017 14:14:16 dest_ip=10.94.139.127 dst_geo=mUten dest_port=1812 device_product=quidolor device_vendor=oqu device_version=1.51 drop_reason=tlaboree errdefs_msgno=norumet errdefs_msg_name=dtempo flow_id=tin ip_protocol=tcp severity=high partition_name=imad route_domain=tinvolup sa_translation_pool=tsed sa_translation_type=inv source_ip=10.163.209.70 src_geo=atu source_port=4718 source_user=olabor translated_dest_ip=10.69.161.78 translated_dest_port=1282 translated_ip_protocol=iruredol translated_route_domain=incidid translated_source_ip=10.255.74.136 translated_source_port=5902 translated_vlan=eaqueips vlan=6396", - "fileset.name": "bigipafm", - "host.ip": "10.2.114.9", - "host.name": "ectiono2241.lan", - "input.type": "log", - "log.level": "high", - "log.offset": 21880, - "network.protocol": "tcp", - "observer.product": "quidolor", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.51", - "related.hosts": [ - "ectiono2241.lan" - ], - "related.ip": [ - "10.163.209.70", - "10.2.114.9", - "10.255.74.136", - "10.69.161.78" - ], - "related.user": [ - "olabor" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "rehende", - "rsa.misc.event_type": "dtempo", - "rsa.misc.obj_name": "Duisa", - "rsa.misc.policy_name": "lupta", - "rsa.misc.reference_id": "norumet", - "rsa.misc.rule_name": "boNem", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.51", - "rsa.network.alias_host": [ - "ectiono2241.lan" - ], - "rsa.network.vlan": 6396, - "rsa.time.event_time_str": "Jan", - "rule.name": "boNem", - "service.type": "f5", - "source.geo.country_name": "atu", - "source.ip": "10.163.209.70", - "source.nat.ip": "10.255.74.136", - "source.nat.port": 5902, - "source.port": 4718, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "olabor" - }, - { - "destination.geo.country_name": "iciad", - "destination.nat.ip": "10.184.59.148", - "destination.nat.port": 6933, - "destination.port": 7874, - "event.action": "Closed", - "event.code": "lmo", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "volupta dmi untexpl2847.www5.local eiusmod emoe uiinea [F5@mnisiut acl_policy_name=avolu acl_policy_type=Except acl_rule_name=olup action=Closed hostname=umetMal1664.mail.lan bigip_mgmt_ip=10.46.115.216 context_name=equun context_type=sitvo date_time=Feb 03 2017 21:16:50 dest_ip=10.223.198.146 dst_geo=iciad dest_port=7874 device_product=mad device_vendor=onse device_version=1.380 drop_reason=mipsum errdefs_msgno=lmo errdefs_msg_name=aliquamq flow_id=dtempori ip_protocol=rdp severity=medium partition_name=voluptat route_domain=ugit sa_translation_pool=tatem sa_translation_type=metcons source_ip=10.252.102.110 src_geo=henderit source_port=7829 source_user=perspici translated_dest_ip=10.184.59.148 translated_dest_port=6933 translated_ip_protocol=queips translated_route_domain=midest translated_source_ip=10.12.129.137 translated_source_port=721 translated_vlan=orroqu vlan=472", - "fileset.name": "bigipafm", - "host.ip": "10.46.115.216", - "host.name": "umetMal1664.mail.lan", - "input.type": "log", - "log.level": "medium", - "log.offset": 22745, - "network.protocol": "rdp", - "observer.product": "mad", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.380", - "related.hosts": [ - "umetMal1664.mail.lan" - ], - "related.ip": [ - "10.12.129.137", - "10.184.59.148", - "10.252.102.110", - "10.46.115.216" - ], - "related.user": [ - "perspici" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "equun", - "rsa.misc.event_type": "aliquamq", - "rsa.misc.obj_name": "mnisiut", - "rsa.misc.policy_name": "avolu", - "rsa.misc.reference_id": "lmo", - "rsa.misc.rule_name": "olup", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.380", - "rsa.network.alias_host": [ - "umetMal1664.mail.lan" - ], - "rsa.network.vlan": 472, - "rsa.time.event_time_str": "Feb", - "rule.name": "olup", - "service.type": "f5", - "source.geo.country_name": "henderit", - "source.ip": "10.252.102.110", - "source.nat.ip": "10.12.129.137", - "source.nat.port": 721, - "source.port": 7829, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "perspici" - }, - { - "destination.geo.country_name": "nder", - "destination.nat.ip": "10.155.204.243", - "destination.nat.port": 459, - "destination.port": 3238, - "event.action": "Established", - "event.code": "tatem", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "labore uela ntexplic4824.internal.localhost dolorsit archite remq [F5@veniamq acl_policy_name=occ acl_policy_type=oloreseo acl_rule_name=iruredol action=Established hostname=derit5270.mail.local bigip_mgmt_ip=10.105.52.140 context_name=ntexpl context_type=dunt date_time=Feb 18 2017 04:19:24 dest_ip=10.20.55.199 dst_geo=nder dest_port=3238 device_product=itanim device_vendor=nesciun device_version=1.1729 drop_reason=mollita errdefs_msgno=tatem errdefs_msg_name=iae flow_id=quido ip_protocol=ipv6-icmp severity=very-high partition_name=inBC route_domain=mol sa_translation_pool=tur sa_translation_type=ictas source_ip=10.81.184.7 src_geo=saquaea source_port=6344 source_user=eetd translated_dest_ip=10.155.204.243 translated_dest_port=459 translated_ip_protocol=lorsi translated_route_domain=repreh translated_source_ip=10.199.194.79 translated_source_port=7713 translated_vlan=illumqui vlan=3414", - "fileset.name": "bigipafm", - "host.ip": "10.105.52.140", - "host.name": "derit5270.mail.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 23630, - "network.protocol": "ipv6-icmp", - "observer.product": "itanim", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1729", - "related.hosts": [ - "derit5270.mail.local" - ], - "related.ip": [ - "10.105.52.140", - "10.155.204.243", - "10.199.194.79", - "10.81.184.7" - ], - "related.user": [ - "eetd" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "ntexpl", - "rsa.misc.event_type": "iae", - "rsa.misc.obj_name": "veniamq", - "rsa.misc.policy_name": "occ", - "rsa.misc.reference_id": "tatem", - "rsa.misc.rule_name": "iruredol", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.1729", - "rsa.network.alias_host": [ - "derit5270.mail.local" - ], - "rsa.network.vlan": 3414, - "rsa.time.event_time_str": "Feb", - "rule.name": "iruredol", - "service.type": "f5", - "source.geo.country_name": "saquaea", - "source.ip": "10.81.184.7", - "source.nat.ip": "10.199.194.79", - "source.nat.port": 7713, - "source.port": 6344, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "eetd" - }, - { - "destination.geo.country_name": "unte", - "destination.nat.ip": "10.18.226.72", - "destination.nat.port": 5140, - "destination.port": 893, - "event.action": "Closed", - "event.code": "tatnon", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "amali ate idolor3916.www5.home tas autfugi tasun [F5@duntutla acl_policy_name=ntium acl_policy_type=iration acl_rule_name=umwritte action=Closed hostname=orisni5238.mail.lan bigip_mgmt_ip=10.177.238.45 context_name=iumt context_type=tsed date_time=Mar 04 2017 11:21:59 dest_ip=10.249.120.78 dst_geo=unte dest_port=893 device_product=ueipsa device_vendor=scipitl device_version=1.1453 drop_reason=aparia errdefs_msgno=tatnon errdefs_msg_name=leumiur flow_id=tetura ip_protocol=ggp severity=very-high partition_name=oluptat route_domain=metco sa_translation_pool=acom sa_translation_type=ceroinB source_ip=10.110.2.166 src_geo=exeacomm source_port=79 source_user=taliqui translated_dest_ip=10.18.226.72 translated_dest_port=5140 translated_ip_protocol=olupta translated_route_domain=tsuntinc translated_source_ip=10.251.231.142 translated_source_port=872 translated_vlan=urExcep vlan=102", - "fileset.name": "bigipafm", - "host.ip": "10.177.238.45", - "host.name": "orisni5238.mail.lan", - "input.type": "log", - "log.level": "very-high", - "log.offset": 24529, - "network.protocol": "ggp", - "observer.product": "ueipsa", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1453", - "related.hosts": [ - "orisni5238.mail.lan" - ], - "related.ip": [ - "10.110.2.166", - "10.177.238.45", - "10.18.226.72", - "10.251.231.142" - ], - "related.user": [ - "taliqui" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "iumt", - "rsa.misc.event_type": "leumiur", - "rsa.misc.obj_name": "duntutla", - "rsa.misc.policy_name": "ntium", - "rsa.misc.reference_id": "tatnon", - "rsa.misc.rule_name": "umwritte", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.1453", - "rsa.network.alias_host": [ - "orisni5238.mail.lan" - ], - "rsa.network.vlan": 102, - "rsa.time.event_time_str": "Mar", - "rule.name": "umwritte", - "service.type": "f5", - "source.geo.country_name": "exeacomm", - "source.ip": "10.110.2.166", - "source.nat.ip": "10.251.231.142", - "source.nat.port": 872, - "source.port": 79, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "taliqui" - }, - { - "destination.geo.country_name": "billo", - "destination.nat.ip": "10.100.199.226", - "destination.nat.port": 7617, - "destination.port": 2618, - "event.action": "Established", - "event.code": "ser", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "suntex iacons occaec7487.corp quaeab fici imve [F5@quide acl_policy_name=quaU acl_policy_type=undeomni acl_rule_name=accusa action=Established hostname=iutali7297.www.domain bigip_mgmt_ip=10.190.122.27 context_name=mporainc context_type=xea date_time=Mar 18 2017 18:24:33 dest_ip=10.123.113.152 dst_geo=billo dest_port=2618 device_product=radipisc device_vendor=Cice device_version=1.6332 drop_reason=vitaed errdefs_msgno=ser errdefs_msg_name=etconsec flow_id=elillum ip_protocol=tcp severity=high partition_name=rnat route_domain=eprehend sa_translation_pool=rem sa_translation_type=edolo source_ip=10.99.202.229 src_geo=eosquira source_port=4392 source_user=lloinven translated_dest_ip=10.100.199.226 translated_dest_port=7617 translated_ip_protocol=apariatu translated_route_domain=lorsita translated_source_ip=10.192.98.247 translated_source_port=4308 translated_vlan=temaccu vlan=5302", - "fileset.name": "bigipafm", - "host.ip": "10.190.122.27", - "host.name": "iutali7297.www.domain", - "input.type": "log", - "log.level": "high", - "log.offset": 25415, - "network.protocol": "tcp", - "observer.product": "radipisc", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6332", - "related.hosts": [ - "iutali7297.www.domain" - ], - "related.ip": [ - "10.100.199.226", - "10.190.122.27", - "10.192.98.247", - "10.99.202.229" - ], - "related.user": [ - "lloinven" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "mporainc", - "rsa.misc.event_type": "etconsec", - "rsa.misc.obj_name": "quide", - "rsa.misc.policy_name": "quaU", - "rsa.misc.reference_id": "ser", - "rsa.misc.rule_name": "accusa", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.6332", - "rsa.network.alias_host": [ - "iutali7297.www.domain" - ], - "rsa.network.vlan": 5302, - "rsa.time.event_time_str": "Mar", - "rule.name": "accusa", - "service.type": "f5", - "source.geo.country_name": "eosquira", - "source.ip": "10.99.202.229", - "source.nat.ip": "10.192.98.247", - "source.nat.port": 4308, - "source.port": 4392, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "lloinven" - }, - { - "destination.geo.country_name": "nrepreh", - "destination.nat.ip": "10.162.97.197", - "destination.nat.port": 4357, - "destination.port": 5251, - "event.action": "Drop", - "event.code": "erspi", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "uptassit ncidi tlabori4803.www5.local oconse mag tob [F5@dolores acl_policy_name=equamnih acl_policy_type=taliqui acl_rule_name=eiu action=Drop hostname=orumw5960.www5.home bigip_mgmt_ip=10.248.111.207 context_name=dolor context_type=tiumto date_time=Apr 02 2017 01:27:07 dest_ip=10.38.28.151 dst_geo=nrepreh dest_port=5251 device_product=equep device_vendor=ever device_version=1.6463 drop_reason=atq errdefs_msgno=erspi errdefs_msg_name=iqu flow_id=niamqu ip_protocol=rdp severity=medium partition_name=icab route_domain=sBonor sa_translation_pool=fugits sa_translation_type=mipsumqu source_ip=10.172.154.97 src_geo=admi source_port=7165 source_user=culpaq translated_dest_ip=10.162.97.197 translated_dest_port=4357 translated_ip_protocol=tcupida translated_route_domain=isa translated_source_ip=10.37.193.70 translated_source_port=170 translated_vlan=tesseq vlan=7693", - "fileset.name": "bigipafm", - "host.ip": "10.248.111.207", - "host.name": "orumw5960.www5.home", - "input.type": "log", - "log.level": "medium", - "log.offset": 26305, - "network.protocol": "rdp", - "observer.product": "equep", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6463", - "related.hosts": [ - "orumw5960.www5.home" - ], - "related.ip": [ - "10.162.97.197", - "10.172.154.97", - "10.248.111.207", - "10.37.193.70" - ], - "related.user": [ - "culpaq" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "dolor", - "rsa.misc.event_type": "iqu", - "rsa.misc.obj_name": "dolores", - "rsa.misc.policy_name": "equamnih", - "rsa.misc.reference_id": "erspi", - "rsa.misc.rule_name": "eiu", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.6463", - "rsa.network.alias_host": [ - "orumw5960.www5.home" - ], - "rsa.network.vlan": 7693, - "rsa.time.event_time_str": "Apr", - "rule.name": "eiu", - "service.type": "f5", - "source.geo.country_name": "admi", - "source.ip": "10.172.154.97", - "source.nat.ip": "10.37.193.70", - "source.nat.port": 170, - "source.port": 7165, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "culpaq" - }, - { - "destination.geo.country_name": "itasp", - "destination.nat.ip": "10.222.165.250", - "destination.nat.port": 2757, - "destination.port": 4927, - "event.action": "Reject", - "event.code": "loreeu", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "pernat rerepre nculpaq3821.www5.invalid billoinv sci col [F5@obea acl_policy_name=emp acl_policy_type=agnaaliq acl_rule_name=est action=Reject hostname=oinv5493.internal.domain bigip_mgmt_ip=10.36.63.31 context_name=nisiu context_type=imad date_time=Apr 16 2017 08:29:41 dest_ip=10.30.101.79 dst_geo=itasp dest_port=4927 device_product=sitametc device_vendor=onsequa device_version=1.3912 drop_reason=ntmo errdefs_msgno=loreeu errdefs_msg_name=temse flow_id=aspernat ip_protocol=ipv6 severity=very-high partition_name=caecat route_domain=rautod sa_translation_pool=olest sa_translation_type=eataev source_ip=10.171.221.230 src_geo=edquia source_port=1977 source_user=otamr translated_dest_ip=10.222.165.250 translated_dest_port=2757 translated_ip_protocol=amvolu translated_route_domain=mip translated_source_ip=10.45.35.180 translated_source_port=653 translated_vlan=maccusa vlan=7248", - "fileset.name": "bigipafm", - "host.ip": "10.36.63.31", - "host.name": "oinv5493.internal.domain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 27176, - "network.protocol": "ipv6", - "observer.product": "sitametc", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3912", - "related.hosts": [ - "oinv5493.internal.domain" - ], - "related.ip": [ - "10.171.221.230", - "10.222.165.250", - "10.36.63.31", - "10.45.35.180" - ], - "related.user": [ - "otamr" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "nisiu", - "rsa.misc.event_type": "temse", - "rsa.misc.obj_name": "obea", - "rsa.misc.policy_name": "emp", - "rsa.misc.reference_id": "loreeu", - "rsa.misc.rule_name": "est", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3912", - "rsa.network.alias_host": [ - "oinv5493.internal.domain" - ], - "rsa.network.vlan": 7248, - "rsa.time.event_time_str": "Apr", - "rule.name": "est", - "service.type": "f5", - "source.geo.country_name": "edquia", - "source.ip": "10.171.221.230", - "source.nat.ip": "10.45.35.180", - "source.nat.port": 653, - "source.port": 1977, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "otamr" - }, - { - "destination.geo.country_name": "meumfugi", - "destination.nat.ip": "10.199.127.211", - "destination.nat.port": 3598, - "destination.port": 7010, - "event.action": "Reject", - "event.code": "orroquis", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "nimad ataevita oremqu542.internal.localhost uteir boree isn [F5@ulla acl_policy_name=equatDu acl_policy_type=pta acl_rule_name=enbyCi action=Reject hostname=tnonproi195.api.home bigip_mgmt_ip=10.238.4.219 context_name=uide context_type=scivel date_time=Apr 30 2017 15:32:16 dest_ip=10.150.9.246 dst_geo=meumfugi dest_port=7010 device_product=emaperia device_vendor=Section device_version=1.4329 drop_reason=iame errdefs_msgno=orroquis errdefs_msg_name=aquio flow_id=riatu ip_protocol=udp severity=low partition_name=tanimid route_domain=isnostru sa_translation_pool=nofdeFi sa_translation_type=aquioff source_ip=10.1.171.61 src_geo=amnisi source_port=7258 source_user=reetdolo translated_dest_ip=10.199.127.211 translated_dest_port=3598 translated_ip_protocol=ilmole translated_route_domain=ugi translated_source_ip=10.83.238.145 translated_source_port=5392 translated_vlan=emveleum vlan=3661", - "fileset.name": "bigipafm", - "host.ip": "10.238.4.219", - "host.name": "tnonproi195.api.home", - "input.type": "log", - "log.level": "low", - "log.offset": 28062, - "network.protocol": "udp", - "observer.product": "emaperia", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4329", - "related.hosts": [ - "tnonproi195.api.home" - ], - "related.ip": [ - "10.1.171.61", - "10.199.127.211", - "10.238.4.219", - "10.83.238.145" - ], - "related.user": [ - "reetdolo" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "uide", - "rsa.misc.event_type": "aquio", - "rsa.misc.obj_name": "ulla", - "rsa.misc.policy_name": "equatDu", - "rsa.misc.reference_id": "orroquis", - "rsa.misc.rule_name": "enbyCi", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.4329", - "rsa.network.alias_host": [ - "tnonproi195.api.home" - ], - "rsa.network.vlan": 3661, - "rsa.time.event_time_str": "Apr", - "rule.name": "enbyCi", - "service.type": "f5", - "source.geo.country_name": "amnisi", - "source.ip": "10.1.171.61", - "source.nat.ip": "10.83.238.145", - "source.nat.port": 5392, - "source.port": 7258, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "reetdolo" - }, - { - "destination.geo.country_name": "quira", - "destination.nat.ip": "10.44.226.104", - "destination.nat.port": 7020, - "destination.port": 3091, - "event.action": "Drop", - "event.code": "tperspic", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "nde abillo undeom845.www5.example quaer eetdo tlab [F5@spernatu acl_policy_name=exercita acl_policy_type=sBonorum acl_rule_name=atems action=Drop hostname=edictasu5362.internal.localhost bigip_mgmt_ip=10.65.141.244 context_name=turmag context_type=ipsaqu date_time=May 14 2017 22:34:50 dest_ip=10.203.69.36 dst_geo=quira dest_port=3091 device_product=ore device_vendor=tation device_version=1.3789 drop_reason=porincid errdefs_msgno=tperspic errdefs_msg_name=equu flow_id=sintoc ip_protocol=rdp severity=very-high partition_name=tetura route_domain=riosamni sa_translation_pool=icta sa_translation_type=luptate source_ip=10.170.252.219 src_geo=iqui source_port=1978 source_user=Nequepo translated_dest_ip=10.44.226.104 translated_dest_port=7020 translated_ip_protocol=nse translated_route_domain=veniam translated_source_ip=10.74.213.42 translated_source_port=5922 translated_vlan=sse vlan=2498", - "fileset.name": "bigipafm", - "host.ip": "10.65.141.244", - "host.name": "edictasu5362.internal.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 28955, - "network.protocol": "rdp", - "observer.product": "ore", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3789", - "related.hosts": [ - "edictasu5362.internal.localhost" - ], - "related.ip": [ - "10.170.252.219", - "10.44.226.104", - "10.65.141.244", - "10.74.213.42" - ], - "related.user": [ - "Nequepo" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "turmag", - "rsa.misc.event_type": "equu", - "rsa.misc.obj_name": "spernatu", - "rsa.misc.policy_name": "exercita", - "rsa.misc.reference_id": "tperspic", - "rsa.misc.rule_name": "atems", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3789", - "rsa.network.alias_host": [ - "edictasu5362.internal.localhost" - ], - "rsa.network.vlan": 2498, - "rsa.time.event_time_str": "May", - "rule.name": "atems", - "service.type": "f5", - "source.geo.country_name": "iqui", - "source.ip": "10.170.252.219", - "source.nat.ip": "10.74.213.42", - "source.nat.port": 5922, - "source.port": 1978, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "Nequepo" - }, - { - "destination.geo.country_name": "sequat", - "destination.nat.ip": "10.225.255.211", - "destination.nat.port": 5595, - "destination.port": 4596, - "event.action": "Reject", - "event.code": "roi", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "inBCSe otamrem tutlabor4180.internal.host consecte pteurs catcupi [F5@autf acl_policy_name=saqu acl_policy_type=uptat acl_rule_name=unt action=Reject hostname=uido492.www5.home bigip_mgmt_ip=10.180.48.221 context_name=lors context_type=aconsequ date_time=May 29 2017 05:37:24 dest_ip=10.33.195.166 dst_geo=sequat dest_port=4596 device_product=utemvel device_vendor=epteur device_version=1.2965 drop_reason=iusm errdefs_msgno=roi errdefs_msg_name=busBonor flow_id=stquido ip_protocol=igmp severity=high partition_name=mnisi route_domain=usmo sa_translation_pool=iamea sa_translation_type=imaveni source_ip=10.183.223.149 src_geo=cor source_port=2648 source_user=nihil translated_dest_ip=10.225.255.211 translated_dest_port=5595 translated_ip_protocol=citati translated_route_domain=uamei translated_source_ip=10.225.141.172 translated_source_port=956 translated_vlan=fugiatn vlan=3309", - "fileset.name": "bigipafm", - "host.ip": "10.180.48.221", - "host.name": "uido492.www5.home", - "input.type": "log", - "log.level": "high", - "log.offset": 29850, - "network.protocol": "igmp", - "observer.product": "utemvel", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2965", - "related.hosts": [ - "uido492.www5.home" - ], - "related.ip": [ - "10.180.48.221", - "10.183.223.149", - "10.225.141.172", - "10.225.255.211" - ], - "related.user": [ - "nihil" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "lors", - "rsa.misc.event_type": "busBonor", - "rsa.misc.obj_name": "autf", - "rsa.misc.policy_name": "saqu", - "rsa.misc.reference_id": "roi", - "rsa.misc.rule_name": "unt", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.2965", - "rsa.network.alias_host": [ - "uido492.www5.home" - ], - "rsa.network.vlan": 3309, - "rsa.time.event_time_str": "May", - "rule.name": "unt", - "service.type": "f5", - "source.geo.country_name": "cor", - "source.ip": "10.183.223.149", - "source.nat.ip": "10.225.141.172", - "source.nat.port": 956, - "source.port": 2648, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "nihil" - }, - { - "destination.geo.country_name": "mcorpor", - "destination.nat.ip": "10.205.174.181", - "destination.nat.port": 766, - "destination.port": 7420, - "event.action": "Established", - "event.code": "tura", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "aaliq nat uovolupt307.internal.host serror onse umquam [F5@emagn acl_policy_name=emulla acl_policy_type=mips acl_rule_name=itae action=Established hostname=redo6311.api.invalid bigip_mgmt_ip=10.176.64.28 context_name=olup context_type=remipsu date_time=Jun 12 2017 12:39:58 dest_ip=10.92.6.176 dst_geo=mcorpor dest_port=7420 device_product=autfugit device_vendor=emUte device_version=1.7612 drop_reason=nturmag errdefs_msgno=tura errdefs_msg_name=osquirat flow_id=equat ip_protocol=tcp severity=high partition_name=usantiu route_domain=idunt sa_translation_pool=atqu sa_translation_type=naturau source_ip=10.97.138.181 src_geo=oluptat source_port=7128 source_user=eseruntm translated_dest_ip=10.205.174.181 translated_dest_port=766 translated_ip_protocol=olor translated_route_domain=etquasia translated_source_ip=10.169.123.103 translated_source_port=519 translated_vlan=uisa vlan=6863", - "fileset.name": "bigipafm", - "host.ip": "10.176.64.28", - "host.name": "redo6311.api.invalid", - "input.type": "log", - "log.level": "high", - "log.offset": 30734, - "network.protocol": "tcp", - "observer.product": "autfugit", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7612", - "related.hosts": [ - "redo6311.api.invalid" - ], - "related.ip": [ - "10.169.123.103", - "10.176.64.28", - "10.205.174.181", - "10.97.138.181" - ], - "related.user": [ - "eseruntm" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "olup", - "rsa.misc.event_type": "osquirat", - "rsa.misc.obj_name": "emagn", - "rsa.misc.policy_name": "emulla", - "rsa.misc.reference_id": "tura", - "rsa.misc.rule_name": "itae", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.7612", - "rsa.network.alias_host": [ - "redo6311.api.invalid" - ], - "rsa.network.vlan": 6863, - "rsa.time.event_time_str": "Jun", - "rule.name": "itae", - "service.type": "f5", - "source.geo.country_name": "oluptat", - "source.ip": "10.97.138.181", - "source.nat.ip": "10.169.123.103", - "source.nat.port": 519, - "source.port": 7128, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "eseruntm" - }, - { - "destination.geo.country_name": "laborum", - "destination.nat.ip": "10.204.4.40", - "destination.nat.port": 271, - "destination.port": 5749, - "event.action": "Established", - "event.code": "empor", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "Cicero evolupta teturadi4718.api.local piscivel hend eacommo [F5@ueip acl_policy_name=maliqu acl_policy_type=iati acl_rule_name=minim action=Established hostname=dolorem1698.www.domain bigip_mgmt_ip=10.75.120.11 context_name=urau context_type=etur date_time=Jun 26 2017 19:42:33 dest_ip=10.20.73.247 dst_geo=laborum dest_port=5749 device_product=xeac device_vendor=umdolors device_version=1.4226 drop_reason=uiadolo errdefs_msgno=empor errdefs_msg_name=umexerci flow_id=duntut ip_protocol=ggp severity=very-high partition_name=prehend route_domain=eufug sa_translation_pool=roquisq sa_translation_type=temporai source_ip=10.53.101.131 src_geo=ici source_port=5097 source_user=tquo translated_dest_ip=10.204.4.40 translated_dest_port=271 translated_ip_protocol=sitvo translated_route_domain=ine translated_source_ip=10.169.101.161 translated_source_port=4577 translated_vlan=ipi vlan=4211", - "fileset.name": "bigipafm", - "host.ip": "10.75.120.11", - "host.name": "dolorem1698.www.domain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 31621, - "network.protocol": "ggp", - "observer.product": "xeac", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4226", - "related.hosts": [ - "dolorem1698.www.domain" - ], - "related.ip": [ - "10.169.101.161", - "10.204.4.40", - "10.53.101.131", - "10.75.120.11" - ], - "related.user": [ - "tquo" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "urau", - "rsa.misc.event_type": "umexerci", - "rsa.misc.obj_name": "ueip", - "rsa.misc.policy_name": "maliqu", - "rsa.misc.reference_id": "empor", - "rsa.misc.rule_name": "minim", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.4226", - "rsa.network.alias_host": [ - "dolorem1698.www.domain" - ], - "rsa.network.vlan": 4211, - "rsa.time.event_time_str": "Jun", - "rule.name": "minim", - "service.type": "f5", - "source.geo.country_name": "ici", - "source.ip": "10.53.101.131", - "source.nat.ip": "10.169.101.161", - "source.nat.port": 4577, - "source.port": 5097, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tquo" - }, - { - "destination.geo.country_name": "litanim", - "destination.nat.ip": "10.156.117.169", - "destination.nat.port": 2939, - "destination.port": 2135, - "event.action": "Reject", - "event.code": "porinc", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "exerci idata ese4384.mail.domain rumexerc isiutali iquidexe [F5@illumq acl_policy_name=luptatem acl_policy_type=ite acl_rule_name=tasnul action=Reject hostname=evitae7333.www.lan bigip_mgmt_ip=10.28.51.219 context_name=ess context_type=quiad date_time=Jul 11 2017 02:45:07 dest_ip=10.43.210.236 dst_geo=litanim dest_port=2135 device_product=orsitam device_vendor=modico device_version=1.2990 drop_reason=itatio errdefs_msgno=porinc errdefs_msg_name=riame flow_id=riat ip_protocol=udp severity=very-high partition_name=eriam route_domain=pernat sa_translation_pool=udan sa_translation_type=archi source_ip=10.6.222.112 src_geo=aliqu source_port=780 source_user=onsequu translated_dest_ip=10.156.117.169 translated_dest_port=2939 translated_ip_protocol=agnamal translated_route_domain=quei translated_source_ip=10.87.120.87 translated_source_port=1636 translated_vlan=teni vlan=4967", - "fileset.name": "bigipafm", - "host.ip": "10.28.51.219", - "host.name": "evitae7333.www.lan", - "input.type": "log", - "log.level": "very-high", - "log.offset": 32509, - "network.protocol": "udp", - "observer.product": "orsitam", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2990", - "related.hosts": [ - "evitae7333.www.lan" - ], - "related.ip": [ - "10.156.117.169", - "10.28.51.219", - "10.6.222.112", - "10.87.120.87" - ], - "related.user": [ - "onsequu" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "ess", - "rsa.misc.event_type": "riame", - "rsa.misc.obj_name": "illumq", - "rsa.misc.policy_name": "luptatem", - "rsa.misc.reference_id": "porinc", - "rsa.misc.rule_name": "tasnul", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.2990", - "rsa.network.alias_host": [ - "evitae7333.www.lan" - ], - "rsa.network.vlan": 4967, - "rsa.time.event_time_str": "Jul", - "rule.name": "tasnul", - "service.type": "f5", - "source.geo.country_name": "aliqu", - "source.ip": "10.6.222.112", - "source.nat.ip": "10.87.120.87", - "source.nat.port": 1636, - "source.port": 780, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "onsequu" - }, - { - "destination.geo.country_name": "ecill", - "destination.nat.ip": "10.253.167.17", - "destination.nat.port": 2990, - "destination.port": 6831, - "event.action": "Drop", - "event.code": "oco", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "dant etdolor uat7787.www.host iti nimadm nculp [F5@asp acl_policy_name=eacom acl_policy_type=mag acl_rule_name=gelitse action=Drop hostname=arc2412.mail.lan bigip_mgmt_ip=10.247.44.59 context_name=eiusmo context_type=ainc date_time=Jul 25 2017 09:47:41 dest_ip=10.173.129.72 dst_geo=ecill dest_port=6831 device_product=snu device_vendor=inibusB device_version=1.388 drop_reason=texplica errdefs_msgno=oco errdefs_msg_name=aboree flow_id=ainci ip_protocol=udp severity=high partition_name=pariatur route_domain=uames sa_translation_pool=umtotamr sa_translation_type=mquido source_ip=10.57.89.155 src_geo=rur source_port=3553 source_user=ntorever translated_dest_ip=10.253.167.17 translated_dest_port=2990 translated_ip_protocol=seos translated_route_domain=exercita translated_source_ip=10.4.126.103 translated_source_port=892 translated_vlan=tco vlan=3607", - "fileset.name": "bigipafm", - "host.ip": "10.247.44.59", - "host.name": "arc2412.mail.lan", - "input.type": "log", - "log.level": "high", - "log.offset": 33390, - "network.protocol": "udp", - "observer.product": "snu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.388", - "related.hosts": [ - "arc2412.mail.lan" - ], - "related.ip": [ - "10.247.44.59", - "10.253.167.17", - "10.4.126.103", - "10.57.89.155" - ], - "related.user": [ - "ntorever" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "eiusmo", - "rsa.misc.event_type": "aboree", - "rsa.misc.obj_name": "asp", - "rsa.misc.policy_name": "eacom", - "rsa.misc.reference_id": "oco", - "rsa.misc.rule_name": "gelitse", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.388", - "rsa.network.alias_host": [ - "arc2412.mail.lan" - ], - "rsa.network.vlan": 3607, - "rsa.time.event_time_str": "Jul", - "rule.name": "gelitse", - "service.type": "f5", - "source.geo.country_name": "rur", - "source.ip": "10.57.89.155", - "source.nat.ip": "10.4.126.103", - "source.nat.port": 892, - "source.port": 3553, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ntorever" - }, - { - "destination.geo.country_name": "xeac", - "destination.nat.ip": "10.36.69.125", - "destination.nat.port": 7157, - "destination.port": 7061, - "event.action": "Established", - "event.code": "tat", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "oluptate lit santi837.api.domain turadip dip idolo [F5@Ute acl_policy_name=ptassita acl_policy_type=caecatcu acl_rule_name=inBC action=Established hostname=olorsi2746.internal.localhost bigip_mgmt_ip=10.15.240.220 context_name=teir context_type=quep date_time=Aug 08 2017 16:50:15 dest_ip=10.63.78.66 dst_geo=xeac dest_port=7061 device_product=abor device_vendor=oreverit device_version=1.6451 drop_reason=reetdo errdefs_msgno=tat errdefs_msg_name=eufugia flow_id=ncididun ip_protocol=tcp severity=medium partition_name=periamea route_domain=itametco sa_translation_pool=vel sa_translation_type=quunt source_ip=10.248.206.210 src_geo=nonn source_port=4478 source_user=met translated_dest_ip=10.36.69.125 translated_dest_port=7157 translated_ip_protocol=entsu translated_route_domain=conse translated_source_ip=10.143.183.208 translated_source_port=5214 translated_vlan=umwri vlan=4057", - "fileset.name": "bigipafm", - "host.ip": "10.15.240.220", - "host.name": "olorsi2746.internal.localhost", - "input.type": "log", - "log.level": "medium", - "log.offset": 34246, - "network.protocol": "tcp", - "observer.product": "abor", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6451", - "related.hosts": [ - "olorsi2746.internal.localhost" - ], - "related.ip": [ - "10.143.183.208", - "10.15.240.220", - "10.248.206.210", - "10.36.69.125" - ], - "related.user": [ - "met" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "teir", - "rsa.misc.event_type": "eufugia", - "rsa.misc.obj_name": "Ute", - "rsa.misc.policy_name": "ptassita", - "rsa.misc.reference_id": "tat", - "rsa.misc.rule_name": "inBC", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.6451", - "rsa.network.alias_host": [ - "olorsi2746.internal.localhost" - ], - "rsa.network.vlan": 4057, - "rsa.time.event_time_str": "Aug", - "rule.name": "inBC", - "service.type": "f5", - "source.geo.country_name": "nonn", - "source.ip": "10.248.206.210", - "source.nat.ip": "10.143.183.208", - "source.nat.port": 5214, - "source.port": 4478, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "met" - }, - { - "destination.geo.country_name": "emu", - "destination.nat.ip": "10.34.133.2", - "destination.nat.port": 4807, - "destination.port": 5311, - "event.action": "Established", - "event.code": "minimve", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "atura tur tur5914.internal.invalid tassita colabori imidestl [F5@piscing acl_policy_name=ceroi acl_policy_type=iconsequ acl_rule_name=iat action=Established hostname=edqu2208.www.localhost bigip_mgmt_ip=10.6.32.7 context_name=exerci context_type=inesciu date_time=Aug 22 2017 23:52:50 dest_ip=10.141.216.14 dst_geo=emu dest_port=5311 device_product=psa device_vendor=ate device_version=1.4386 drop_reason=fugitse errdefs_msgno=minimve errdefs_msg_name=serrorsi flow_id=tametco ip_protocol=ipv6-icmp severity=high partition_name=lore route_domain=isci sa_translation_pool=Dui sa_translation_type=reetdo source_ip=10.69.170.107 src_geo=iumtotam source_port=1010 source_user=ipitlabo translated_dest_ip=10.34.133.2 translated_dest_port=4807 translated_ip_protocol=nderi translated_route_domain=liqua translated_source_ip=10.142.186.43 translated_source_port=4691 translated_vlan=sautei vlan=2363", - "fileset.name": "bigipafm", - "host.ip": "10.6.32.7", - "host.name": "edqu2208.www.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 35131, - "network.protocol": "ipv6-icmp", - "observer.product": "psa", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4386", - "related.hosts": [ - "edqu2208.www.localhost" - ], - "related.ip": [ - "10.142.186.43", - "10.34.133.2", - "10.6.32.7", - "10.69.170.107" - ], - "related.user": [ - "ipitlabo" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "exerci", - "rsa.misc.event_type": "serrorsi", - "rsa.misc.obj_name": "piscing", - "rsa.misc.policy_name": "ceroi", - "rsa.misc.reference_id": "minimve", - "rsa.misc.rule_name": "iat", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.4386", - "rsa.network.alias_host": [ - "edqu2208.www.localhost" - ], - "rsa.network.vlan": 2363, - "rsa.time.event_time_str": "Aug", - "rule.name": "iat", - "service.type": "f5", - "source.geo.country_name": "iumtotam", - "source.ip": "10.69.170.107", - "source.nat.ip": "10.142.186.43", - "source.nat.port": 4691, - "source.port": 1010, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ipitlabo" - }, - { - "destination.geo.country_name": "rchitect", - "destination.nat.ip": "10.59.103.10", - "destination.nat.port": 768, - "destination.port": 3402, - "event.action": "Closed", - "event.code": "iameaque", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "voluptas velill rspic5453.www.local meum borumSec aecatcup [F5@snisiut acl_policy_name=siar acl_policy_type=quas acl_rule_name=occaeca action=Closed hostname=ender5647.www5.example bigip_mgmt_ip=10.142.22.24 context_name=ulamc context_type=cept date_time=Sep 06 2017 06:55:24 dest_ip=10.93.88.228 dst_geo=rchitect dest_port=3402 device_product=gna device_vendor=ici device_version=1.2026 drop_reason=olu errdefs_msgno=iameaque errdefs_msg_name=identsun flow_id=ender ip_protocol=ipv6 severity=low partition_name=tect route_domain=uiad sa_translation_pool=doconse sa_translation_type=eni source_ip=10.121.153.197 src_geo=smoditem source_port=6593 source_user=borumSec translated_dest_ip=10.59.103.10 translated_dest_port=768 translated_ip_protocol=oquisq translated_route_domain=abori translated_source_ip=10.170.165.164 translated_source_port=505 translated_vlan=uiineavo vlan=5554", - "fileset.name": "bigipafm", - "host.ip": "10.142.22.24", - "host.name": "ender5647.www5.example", - "input.type": "log", - "log.level": "low", - "log.offset": 36024, - "network.protocol": "ipv6", - "observer.product": "gna", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2026", - "related.hosts": [ - "ender5647.www5.example" - ], - "related.ip": [ - "10.121.153.197", - "10.142.22.24", - "10.170.165.164", - "10.59.103.10" - ], - "related.user": [ - "borumSec" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ulamc", - "rsa.misc.event_type": "identsun", - "rsa.misc.obj_name": "snisiut", - "rsa.misc.policy_name": "siar", - "rsa.misc.reference_id": "iameaque", - "rsa.misc.rule_name": "occaeca", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.2026", - "rsa.network.alias_host": [ - "ender5647.www5.example" - ], - "rsa.network.vlan": 5554, - "rsa.time.event_time_str": "Sep", - "rule.name": "occaeca", - "service.type": "f5", - "source.geo.country_name": "smoditem", - "source.ip": "10.121.153.197", - "source.nat.ip": "10.170.165.164", - "source.nat.port": 505, - "source.port": 6593, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "borumSec" - }, - { - "destination.geo.country_name": "eserun", - "destination.nat.ip": "10.19.99.129", - "destination.nat.port": 956, - "destination.port": 3034, - "event.action": "Established", - "event.code": "uta", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "uidexeac sequa ntsunti2313.internal.invalid uinesc cid emi [F5@Bonorum acl_policy_name=lesti acl_policy_type=oreseo acl_rule_name=reprehen action=Established hostname=sis3986.internal.lan bigip_mgmt_ip=10.133.10.122 context_name=texplic context_type=edutp date_time=Sep 20 2017 13:57:58 dest_ip=10.93.59.189 dst_geo=eserun dest_port=3034 device_product=eniamqu device_vendor=inimav device_version=1.1576 drop_reason=imadm errdefs_msgno=uta errdefs_msg_name=tisu flow_id=remagnam ip_protocol=icmp severity=low partition_name=meiusm route_domain=nidolo sa_translation_pool=atquovol sa_translation_type=quunt source_ip=10.247.114.30 src_geo=olesti source_port=7584 source_user=quaeabil translated_dest_ip=10.19.99.129 translated_dest_port=956 translated_ip_protocol=itesse translated_route_domain=iamqui translated_source_ip=10.176.83.7 translated_source_port=5908 translated_vlan=inim vlan=6806", - "fileset.name": "bigipafm", - "host.ip": "10.133.10.122", - "host.name": "sis3986.internal.lan", - "input.type": "log", - "log.level": "low", - "log.offset": 36906, - "network.protocol": "icmp", - "observer.product": "eniamqu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1576", - "related.hosts": [ - "sis3986.internal.lan" - ], - "related.ip": [ - "10.133.10.122", - "10.176.83.7", - "10.19.99.129", - "10.247.114.30" - ], - "related.user": [ - "quaeabil" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "texplic", - "rsa.misc.event_type": "tisu", - "rsa.misc.obj_name": "Bonorum", - "rsa.misc.policy_name": "lesti", - "rsa.misc.reference_id": "uta", - "rsa.misc.rule_name": "reprehen", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.1576", - "rsa.network.alias_host": [ - "sis3986.internal.lan" - ], - "rsa.network.vlan": 6806, - "rsa.time.event_time_str": "Sep", - "rule.name": "reprehen", - "service.type": "f5", - "source.geo.country_name": "olesti", - "source.ip": "10.247.114.30", - "source.nat.ip": "10.176.83.7", - "source.nat.port": 5908, - "source.port": 7584, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "quaeabil" - }, - { - "destination.geo.country_name": "conse", - "destination.nat.ip": "10.8.29.219", - "destination.nat.port": 6890, - "destination.port": 5351, - "event.action": "Drop", - "event.code": "sedquian", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "Sed oremeumf lesti5921.api.localhost enima tnulapar ico [F5@giatquo acl_policy_name=lors acl_policy_type=its acl_rule_name=dolor action=Drop hostname=uatu2894.api.lan bigip_mgmt_ip=10.64.139.17 context_name=pro context_type=ice date_time=Oct 04 2017 21:00:32 dest_ip=10.87.238.169 dst_geo=conse dest_port=5351 device_product=mcol device_vendor=lup device_version=1.3824 drop_reason=upta errdefs_msgno=sedquian errdefs_msg_name=cti flow_id=rumSecti ip_protocol=rdp severity=medium partition_name=eca route_domain=oluptate sa_translation_pool=Duisa sa_translation_type=consequa source_ip=10.40.177.138 src_geo=aevitaed source_port=1082 source_user=rep translated_dest_ip=10.8.29.219 translated_dest_port=6890 translated_ip_protocol=quaeratv translated_route_domain=involu translated_source_ip=10.70.7.23 translated_source_port=2758 translated_vlan=amcolab vlan=4306", - "fileset.name": "bigipafm", - "host.ip": "10.64.139.17", - "host.name": "uatu2894.api.lan", - "input.type": "log", - "log.level": "medium", - "log.offset": 37799, - "network.protocol": "rdp", - "observer.product": "mcol", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3824", - "related.hosts": [ - "uatu2894.api.lan" - ], - "related.ip": [ - "10.40.177.138", - "10.64.139.17", - "10.70.7.23", - "10.8.29.219" - ], - "related.user": [ - "rep" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "pro", - "rsa.misc.event_type": "cti", - "rsa.misc.obj_name": "giatquo", - "rsa.misc.policy_name": "lors", - "rsa.misc.reference_id": "sedquian", - "rsa.misc.rule_name": "dolor", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.3824", - "rsa.network.alias_host": [ - "uatu2894.api.lan" - ], - "rsa.network.vlan": 4306, - "rsa.time.event_time_str": "Oct", - "rule.name": "dolor", - "service.type": "f5", - "source.geo.country_name": "aevitaed", - "source.ip": "10.40.177.138", - "source.nat.ip": "10.70.7.23", - "source.nat.port": 2758, - "source.port": 1082, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "rep" - }, - { - "destination.geo.country_name": "msequ", - "destination.nat.ip": "10.67.221.220", - "destination.nat.port": 239, - "destination.port": 2383, - "event.action": "Closed", - "event.code": "mini", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "odic iuta liquaUte209.internal.test olores scipit lloinve [F5@borisnis acl_policy_name=onorumet acl_policy_type=ptatema acl_rule_name=eavolup action=Closed hostname=rmagnido5483.local bigip_mgmt_ip=10.180.62.222 context_name=ptatev context_type=atu date_time=Oct 19 2017 04:03:07 dest_ip=10.234.26.132 dst_geo=msequ dest_port=2383 device_product=mwritten device_vendor=tat device_version=1.6066 drop_reason=osa errdefs_msgno=mini errdefs_msg_name=rors flow_id=ssusci ip_protocol=udp severity=medium partition_name=inimve route_domain=uio sa_translation_pool=mexercit sa_translation_type=byC source_ip=10.2.189.20 src_geo=orin source_port=535 source_user=uptasnul translated_dest_ip=10.67.221.220 translated_dest_port=239 translated_ip_protocol=aedict translated_route_domain=niamqui translated_source_ip=10.67.173.228 translated_source_port=5767 translated_vlan=tatemse vlan=4493", - "fileset.name": "bigipafm", - "host.ip": "10.180.62.222", - "host.name": "rmagnido5483.local", - "input.type": "log", - "log.level": "medium", - "log.offset": 38663, - "network.protocol": "udp", - "observer.product": "mwritten", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6066", - "related.hosts": [ - "rmagnido5483.local" - ], - "related.ip": [ - "10.180.62.222", - "10.2.189.20", - "10.67.173.228", - "10.67.221.220" - ], - "related.user": [ - "uptasnul" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ptatev", - "rsa.misc.event_type": "rors", - "rsa.misc.obj_name": "borisnis", - "rsa.misc.policy_name": "onorumet", - "rsa.misc.reference_id": "mini", - "rsa.misc.rule_name": "eavolup", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.6066", - "rsa.network.alias_host": [ - "rmagnido5483.local" - ], - "rsa.network.vlan": 4493, - "rsa.time.event_time_str": "Oct", - "rule.name": "eavolup", - "service.type": "f5", - "source.geo.country_name": "orin", - "source.ip": "10.2.189.20", - "source.nat.ip": "10.67.173.228", - "source.nat.port": 5767, - "source.port": 535, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "uptasnul" - }, - { - "destination.geo.country_name": "upt", - "destination.nat.ip": "10.56.134.118", - "destination.nat.port": 358, - "destination.port": 6017, - "event.action": "Reject", - "event.code": "lorsi", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "uamestqu mpor orem6479.api.host seq rumSe tatnonp [F5@ommo acl_policy_name=adeser acl_policy_type=uasiarc acl_rule_name=doeiu action=Reject hostname=uian521.www.example bigip_mgmt_ip=10.209.52.47 context_name=imven context_type=onnumqua date_time=Nov 02 2017 11:05:41 dest_ip=10.141.201.173 dst_geo=upt dest_port=6017 device_product=itautfu device_vendor=nesci device_version=1.5040 drop_reason=mquis errdefs_msgno=lorsi errdefs_msg_name=tetura flow_id=eeufug ip_protocol=ipv6 severity=medium partition_name=tevelite route_domain=tocca sa_translation_pool=orsitvol sa_translation_type=ntor source_ip=10.147.127.181 src_geo=minimav source_port=6994 source_user=tasu translated_dest_ip=10.56.134.118 translated_dest_port=358 translated_ip_protocol=evo translated_route_domain=mcorpori translated_source_ip=10.196.176.243 translated_source_port=3465 translated_vlan=orsitam vlan=4991", - "fileset.name": "bigipafm", - "host.ip": "10.209.52.47", - "host.name": "uian521.www.example", - "input.type": "log", - "log.level": "medium", - "log.offset": 39543, - "network.protocol": "ipv6", - "observer.product": "itautfu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5040", - "related.hosts": [ - "uian521.www.example" - ], - "related.ip": [ - "10.147.127.181", - "10.196.176.243", - "10.209.52.47", - "10.56.134.118" - ], - "related.user": [ - "tasu" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "imven", - "rsa.misc.event_type": "tetura", - "rsa.misc.obj_name": "ommo", - "rsa.misc.policy_name": "adeser", - "rsa.misc.reference_id": "lorsi", - "rsa.misc.rule_name": "doeiu", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.5040", - "rsa.network.alias_host": [ - "uian521.www.example" - ], - "rsa.network.vlan": 4991, - "rsa.time.event_time_str": "Nov", - "rule.name": "doeiu", - "service.type": "f5", - "source.geo.country_name": "minimav", - "source.ip": "10.147.127.181", - "source.nat.ip": "10.196.176.243", - "source.nat.port": 3465, - "source.port": 6994, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tasu" - }, - { - "destination.geo.country_name": "aut", - "destination.nat.ip": "10.85.13.237", - "destination.nat.port": 4072, - "destination.port": 5596, - "event.action": "Closed", - "event.code": "laboree", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "prehende lup tpers2217.internal.lan nula tdolorem qui [F5@olupt acl_policy_name=nemulla acl_policy_type=asp acl_rule_name=dexercit action=Closed hostname=taliq5213.api.corp bigip_mgmt_ip=10.226.24.84 context_name=ectobea context_type=dat date_time=Nov 16 2017 18:08:15 dest_ip=10.91.18.221 dst_geo=aut dest_port=5596 device_product=uames device_vendor=tconsec device_version=1.7604 drop_reason=oll errdefs_msgno=laboree errdefs_msg_name=udantiu flow_id=itametco ip_protocol=ipv6 severity=very-high partition_name=odico route_domain=rsint sa_translation_pool=itl sa_translation_type=ttenb source_ip=10.231.18.90 src_geo=lapa source_port=4860 source_user=Nem translated_dest_ip=10.85.13.237 translated_dest_port=4072 translated_ip_protocol=upidata translated_route_domain=ici translated_source_ip=10.248.140.59 translated_source_port=5760 translated_vlan=ident vlan=4293", - "fileset.name": "bigipafm", - "host.ip": "10.226.24.84", - "host.name": "taliq5213.api.corp", - "input.type": "log", - "log.level": "very-high", - "log.offset": 40424, - "network.protocol": "ipv6", - "observer.product": "uames", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7604", - "related.hosts": [ - "taliq5213.api.corp" - ], - "related.ip": [ - "10.226.24.84", - "10.231.18.90", - "10.248.140.59", - "10.85.13.237" - ], - "related.user": [ - "Nem" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ectobea", - "rsa.misc.event_type": "udantiu", - "rsa.misc.obj_name": "olupt", - "rsa.misc.policy_name": "nemulla", - "rsa.misc.reference_id": "laboree", - "rsa.misc.rule_name": "dexercit", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.7604", - "rsa.network.alias_host": [ - "taliq5213.api.corp" - ], - "rsa.network.vlan": 4293, - "rsa.time.event_time_str": "Nov", - "rule.name": "dexercit", - "service.type": "f5", - "source.geo.country_name": "lapa", - "source.ip": "10.231.18.90", - "source.nat.ip": "10.248.140.59", - "source.nat.port": 5760, - "source.port": 4860, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "Nem" - }, - { - "destination.geo.country_name": "mco", - "destination.nat.ip": "10.8.224.72", - "destination.nat.port": 6506, - "destination.port": 6246, - "event.action": "Accept", - "event.code": "nostrum", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "quelaud luptat rinrep6482.api.lan nimv emeu tatemac [F5@quisn acl_policy_name=rem acl_policy_type=ulamcola acl_rule_name=remagnaa action=Accept hostname=ntsunt4894.mail.domain bigip_mgmt_ip=10.203.46.215 context_name=mcorpori context_type=orisn date_time=Dec 01 2017 01:10:49 dest_ip=10.88.194.242 dst_geo=mco dest_port=6246 device_product=itame device_vendor=tenat device_version=1.5407 drop_reason=yCiceroi errdefs_msgno=nostrum errdefs_msg_name=orroquis flow_id=eumi ip_protocol=icmp severity=low partition_name=aea route_domain=tvolu sa_translation_pool=dutper sa_translation_type=tlaboru source_ip=10.207.183.204 src_geo=equuntu source_port=2673 source_user=eruntmo translated_dest_ip=10.8.224.72 translated_dest_port=6506 translated_ip_protocol=ion translated_route_domain=rured translated_source_ip=10.59.215.207 translated_source_port=6195 translated_vlan=ore vlan=5842", - "fileset.name": "bigipafm", - "host.ip": "10.203.46.215", - "host.name": "ntsunt4894.mail.domain", - "input.type": "log", - "log.level": "low", - "log.offset": 41293, - "network.protocol": "icmp", - "observer.product": "itame", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5407", - "related.hosts": [ - "ntsunt4894.mail.domain" - ], - "related.ip": [ - "10.203.46.215", - "10.207.183.204", - "10.59.215.207", - "10.8.224.72" - ], - "related.user": [ - "eruntmo" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "mcorpori", - "rsa.misc.event_type": "orroquis", - "rsa.misc.obj_name": "quisn", - "rsa.misc.policy_name": "rem", - "rsa.misc.reference_id": "nostrum", - "rsa.misc.rule_name": "remagnaa", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.5407", - "rsa.network.alias_host": [ - "ntsunt4894.mail.domain" - ], - "rsa.network.vlan": 5842, - "rsa.time.event_time_str": "Dec", - "rule.name": "remagnaa", - "service.type": "f5", - "source.geo.country_name": "equuntu", - "source.ip": "10.207.183.204", - "source.nat.ip": "10.59.215.207", - "source.nat.port": 6195, - "source.port": 2673, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "eruntmo" - }, - { - "destination.geo.country_name": "mquis", - "destination.nat.ip": "10.255.145.22", - "destination.nat.port": 6949, - "destination.port": 7760, - "event.action": "Drop", - "event.code": "aeco", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "xerc Nequep ametcon7485.www.test rro tuser ctasu [F5@irat acl_policy_name=sitame acl_policy_type=oinven acl_rule_name=natu action=Drop hostname=mexer3864.api.corp bigip_mgmt_ip=10.98.154.146 context_name=nula context_type=ameaquei date_time=Dec 15 2017 08:13:24 dest_ip=10.72.114.116 dst_geo=mquis dest_port=7760 device_product=olupta device_vendor=isno device_version=1.6814 drop_reason=ine errdefs_msgno=aeco errdefs_msg_name=rinrepr flow_id=dutp ip_protocol=ipv6-icmp severity=very-high partition_name=giatqu route_domain=rsint sa_translation_pool=rsi sa_translation_type=paq source_ip=10.73.84.95 src_geo=uisautem source_port=6701 source_user=sitam translated_dest_ip=10.255.145.22 translated_dest_port=6949 translated_ip_protocol=emUtenim translated_route_domain=ende translated_source_ip=10.230.38.148 translated_source_port=3213 translated_vlan=sse vlan=368", - "fileset.name": "bigipafm", - "host.ip": "10.98.154.146", - "host.name": "mexer3864.api.corp", - "input.type": "log", - "log.level": "very-high", - "log.offset": 42171, - "network.protocol": "ipv6-icmp", - "observer.product": "olupta", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6814", - "related.hosts": [ - "mexer3864.api.corp" - ], - "related.ip": [ - "10.230.38.148", - "10.255.145.22", - "10.73.84.95", - "10.98.154.146" - ], - "related.user": [ - "sitam" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "nula", - "rsa.misc.event_type": "rinrepr", - "rsa.misc.obj_name": "irat", - "rsa.misc.policy_name": "sitame", - "rsa.misc.reference_id": "aeco", - "rsa.misc.rule_name": "natu", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.6814", - "rsa.network.alias_host": [ - "mexer3864.api.corp" - ], - "rsa.network.vlan": 368, - "rsa.time.event_time_str": "Dec", - "rule.name": "natu", - "service.type": "f5", - "source.geo.country_name": "uisautem", - "source.ip": "10.73.84.95", - "source.nat.ip": "10.230.38.148", - "source.nat.port": 3213, - "source.port": 6701, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "sitam" - }, - { - "destination.geo.country_name": "eleumi", - "destination.nat.ip": "10.105.120.162", - "destination.nat.port": 2984, - "destination.port": 4584, - "event.action": "Accept", - "event.code": "uptateve", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "incidi aedictas rumetMa2554.domain unt liq abore [F5@iumdo acl_policy_name=oreeu acl_policy_type=mea acl_rule_name=ssec action=Accept hostname=oluptat6960.www5.test bigip_mgmt_ip=10.211.29.187 context_name=ptat context_type=meaquei date_time=Dec 29 2017 15:15:58 dest_ip=10.228.204.249 dst_geo=eleumi dest_port=4584 device_product=porissus device_vendor=imip device_version=1.7160 drop_reason=ddoe errdefs_msgno=uptateve errdefs_msg_name=ured flow_id=ctetu ip_protocol=tcp severity=low partition_name=uasiarch route_domain=Malor sa_translation_pool=boriosa sa_translation_type=cillumdo source_ip=10.166.142.198 src_geo=oremipsu source_port=465 source_user=tium translated_dest_ip=10.105.120.162 translated_dest_port=2984 translated_ip_protocol=etc translated_route_domain=eturadip translated_source_ip=10.175.181.138 translated_source_port=3787 translated_vlan=tassitas vlan=1495", - "fileset.name": "bigipafm", - "host.ip": "10.211.29.187", - "host.name": "oluptat6960.www5.test", - "input.type": "log", - "log.level": "low", - "log.offset": 43036, - "network.protocol": "tcp", - "observer.product": "porissus", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7160", - "related.hosts": [ - "oluptat6960.www5.test" - ], - "related.ip": [ - "10.105.120.162", - "10.166.142.198", - "10.175.181.138", - "10.211.29.187" - ], - "related.user": [ - "tium" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "ptat", - "rsa.misc.event_type": "ured", - "rsa.misc.obj_name": "iumdo", - "rsa.misc.policy_name": "oreeu", - "rsa.misc.reference_id": "uptateve", - "rsa.misc.rule_name": "ssec", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.7160", - "rsa.network.alias_host": [ - "oluptat6960.www5.test" - ], - "rsa.network.vlan": 1495, - "rsa.time.event_time_str": "Dec", - "rule.name": "ssec", - "service.type": "f5", - "source.geo.country_name": "oremipsu", - "source.ip": "10.166.142.198", - "source.nat.ip": "10.175.181.138", - "source.nat.port": 3787, - "source.port": 465, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tium" - }, - { - "destination.geo.country_name": "doconse", - "destination.nat.ip": "10.220.202.102", - "destination.nat.port": 10, - "destination.port": 5211, - "event.action": "Established", - "event.code": "animi", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "velite maccus nima5813.mail.example iarchit sBonorum moenimi [F5@lor acl_policy_name=auto acl_policy_type=rsinto acl_rule_name=ati action=Established hostname=fugiatnu2498.www.localhost bigip_mgmt_ip=10.182.213.195 context_name=tconse context_type=eumf date_time=Jan 12 2018 22:18:32 dest_ip=10.200.94.145 dst_geo=doconse dest_port=5211 device_product=uis device_vendor=lill device_version=1.6057 drop_reason=imi errdefs_msgno=animi errdefs_msg_name=edutpers flow_id=pisci ip_protocol=tcp severity=very-high partition_name=umto route_domain=xercit sa_translation_pool=lam sa_translation_type=asnu source_ip=10.122.133.162 src_geo=eriam source_port=4838 source_user=aquae translated_dest_ip=10.220.202.102 translated_dest_port=10 translated_ip_protocol=iaturE translated_route_domain=epor translated_source_ip=10.195.139.25 translated_source_port=5566 translated_vlan=tper vlan=4341", - "fileset.name": "bigipafm", - "host.ip": "10.182.213.195", - "host.name": "fugiatnu2498.www.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 43916, - "network.protocol": "tcp", - "observer.product": "uis", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6057", - "related.hosts": [ - "fugiatnu2498.www.localhost" - ], - "related.ip": [ - "10.122.133.162", - "10.182.213.195", - "10.195.139.25", - "10.220.202.102" - ], - "related.user": [ - "aquae" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "tconse", - "rsa.misc.event_type": "edutpers", - "rsa.misc.obj_name": "lor", - "rsa.misc.policy_name": "auto", - "rsa.misc.reference_id": "animi", - "rsa.misc.rule_name": "ati", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.6057", - "rsa.network.alias_host": [ - "fugiatnu2498.www.localhost" - ], - "rsa.network.vlan": 4341, - "rsa.time.event_time_str": "Jan", - "rule.name": "ati", - "service.type": "f5", - "source.geo.country_name": "eriam", - "source.ip": "10.122.133.162", - "source.nat.ip": "10.195.139.25", - "source.nat.port": 5566, - "source.port": 4838, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "aquae" - }, - { - "destination.geo.country_name": "uatD", - "destination.nat.ip": "10.33.143.163", - "destination.nat.port": 5404, - "destination.port": 6508, - "event.action": "Reject", - "event.code": "anim", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tconsect pariat iutal3376.api.corp isi idexeac ntu [F5@tdolo acl_policy_name=nimve acl_policy_type=duntut acl_rule_name=emporin action=Reject hostname=ptat3230.domain bigip_mgmt_ip=10.156.208.5 context_name=tlaboru context_type=tec date_time=Jan 27 2018 05:21:06 dest_ip=10.9.69.13 dst_geo=uatD dest_port=6508 device_product=antium device_vendor=remaper device_version=1.3297 drop_reason=ntNequ errdefs_msgno=anim errdefs_msg_name=uae flow_id=ata ip_protocol=tcp severity=very-high partition_name=paq route_domain=emipsumq sa_translation_pool=culpaq sa_translation_type=quamq source_ip=10.53.72.161 src_geo=pta source_port=4723 source_user=scip translated_dest_ip=10.33.143.163 translated_dest_port=5404 translated_ip_protocol=iusmodi translated_route_domain=esciun translated_source_ip=10.247.144.9 translated_source_port=2494 translated_vlan=lit vlan=4112", - "fileset.name": "bigipafm", - "host.ip": "10.156.208.5", - "host.name": "ptat3230.domain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 44798, - "network.protocol": "tcp", - "observer.product": "antium", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3297", - "related.hosts": [ - "ptat3230.domain" - ], - "related.ip": [ - "10.156.208.5", - "10.247.144.9", - "10.33.143.163", - "10.53.72.161" - ], - "related.user": [ - "scip" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "tlaboru", - "rsa.misc.event_type": "uae", - "rsa.misc.obj_name": "tdolo", - "rsa.misc.policy_name": "nimve", - "rsa.misc.reference_id": "anim", - "rsa.misc.rule_name": "emporin", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3297", - "rsa.network.alias_host": [ - "ptat3230.domain" - ], - "rsa.network.vlan": 4112, - "rsa.time.event_time_str": "Jan", - "rule.name": "emporin", - "service.type": "f5", - "source.geo.country_name": "pta", - "source.ip": "10.53.72.161", - "source.nat.ip": "10.247.144.9", - "source.nat.port": 2494, - "source.port": 4723, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "scip" - }, - { - "destination.geo.country_name": "eufugia", - "destination.nat.ip": "10.241.143.145", - "destination.nat.port": 6151, - "destination.port": 2345, - "event.action": "Closed", - "event.code": "unturmag", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "oidentsu oditau onsec1632.internal.lan lup aeca isau [F5@giat acl_policy_name=ttenb acl_policy_type=eirure acl_rule_name=boreetd action=Closed hostname=exer447.internal.localhost bigip_mgmt_ip=10.35.190.164 context_name=radipis context_type=lore date_time=Feb 10 2018 12:23:41 dest_ip=10.76.99.144 dst_geo=eufugia dest_port=2345 device_product=pariat device_vendor=nimip device_version=1.2476 drop_reason=usci errdefs_msgno=unturmag errdefs_msg_name=dexeaco flow_id=lupta ip_protocol=ggp severity=very-high partition_name=oreeufug route_domain=Quisa sa_translation_pool=quiav sa_translation_type=ctionofd source_ip=10.21.58.162 src_geo=uisautei source_port=7881 source_user=porin translated_dest_ip=10.241.143.145 translated_dest_port=6151 translated_ip_protocol=ecillum translated_route_domain=olor translated_source_ip=10.113.65.192 translated_source_port=7807 translated_vlan=conseq vlan=6079", - "fileset.name": "bigipafm", - "host.ip": "10.35.190.164", - "host.name": "exer447.internal.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 45656, - "network.protocol": "ggp", - "observer.product": "pariat", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2476", - "related.hosts": [ - "exer447.internal.localhost" - ], - "related.ip": [ - "10.113.65.192", - "10.21.58.162", - "10.241.143.145", - "10.35.190.164" - ], - "related.user": [ - "porin" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "radipis", - "rsa.misc.event_type": "dexeaco", - "rsa.misc.obj_name": "giat", - "rsa.misc.policy_name": "ttenb", - "rsa.misc.reference_id": "unturmag", - "rsa.misc.rule_name": "boreetd", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.2476", - "rsa.network.alias_host": [ - "exer447.internal.localhost" - ], - "rsa.network.vlan": 6079, - "rsa.time.event_time_str": "Feb", - "rule.name": "boreetd", - "service.type": "f5", - "source.geo.country_name": "uisautei", - "source.ip": "10.21.58.162", - "source.nat.ip": "10.113.65.192", - "source.nat.port": 7807, - "source.port": 7881, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "porin" - }, - { - "destination.geo.country_name": "exe", - "destination.nat.ip": "10.75.113.240", - "destination.nat.port": 1874, - "destination.port": 1872, - "event.action": "Closed", - "event.code": "tas", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "edutpers ctobeat upta4358.home orem inibus secte [F5@ctobeat acl_policy_name=onsec acl_policy_type=idestl acl_rule_name=litani action=Closed hostname=itanimi1934.home bigip_mgmt_ip=10.19.154.103 context_name=ittenb context_type=tobeatae date_time=Feb 24 2018 19:26:15 dest_ip=10.235.51.61 dst_geo=exe dest_port=1872 device_product=cia device_vendor=idolo device_version=1.768 drop_reason=pitlabo errdefs_msgno=tas errdefs_msg_name=rcitat flow_id=ree ip_protocol=tcp severity=very-high partition_name=quipexea route_domain=orsitv sa_translation_pool=dunt sa_translation_type=int source_ip=10.53.27.253 src_geo=temveleu source_port=3599 source_user=luptat translated_dest_ip=10.75.113.240 translated_dest_port=1874 translated_ip_protocol=ionulam translated_route_domain=auto translated_source_ip=10.129.16.166 translated_source_port=5141 translated_vlan=ntocca vlan=5439", - "fileset.name": "bigipafm", - "host.ip": "10.19.154.103", - "host.name": "itanimi1934.home", - "input.type": "log", - "log.level": "very-high", - "log.offset": 46552, - "network.protocol": "tcp", - "observer.product": "cia", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.768", - "related.hosts": [ - "itanimi1934.home" - ], - "related.ip": [ - "10.129.16.166", - "10.19.154.103", - "10.53.27.253", - "10.75.113.240" - ], - "related.user": [ - "luptat" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ittenb", - "rsa.misc.event_type": "rcitat", - "rsa.misc.obj_name": "ctobeat", - "rsa.misc.policy_name": "onsec", - "rsa.misc.reference_id": "tas", - "rsa.misc.rule_name": "litani", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.768", - "rsa.network.alias_host": [ - "itanimi1934.home" - ], - "rsa.network.vlan": 5439, - "rsa.time.event_time_str": "Feb", - "rule.name": "litani", - "service.type": "f5", - "source.geo.country_name": "temveleu", - "source.ip": "10.53.27.253", - "source.nat.ip": "10.129.16.166", - "source.nat.port": 5141, - "source.port": 3599, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "luptat" - }, - { - "destination.geo.country_name": "equ", - "destination.nat.ip": "10.150.153.61", - "destination.nat.port": 2773, - "destination.port": 7256, - "event.action": "Established", - "event.code": "ihi", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tvol lup mipsamv161.local ionula pexeaco temaccu [F5@uamqua acl_policy_name=Neq acl_policy_type=runt acl_rule_name=xcep action=Established hostname=pteurs1031.mail.corp bigip_mgmt_ip=10.125.150.220 context_name=lumquid context_type=eturadip date_time=Mar 11 2018 02:28:49 dest_ip=10.241.228.95 dst_geo=equ dest_port=7256 device_product=ssequamn device_vendor=ave device_version=1.5812 drop_reason=edquia errdefs_msgno=ihi errdefs_msg_name=undeomn flow_id=ape ip_protocol=rdp severity=medium partition_name=ari route_domain=umtot sa_translation_pool=onemulla sa_translation_type=atquo source_ip=10.120.50.13 src_geo=issu source_port=4426 source_user=inculpa translated_dest_ip=10.150.153.61 translated_dest_port=2773 translated_ip_protocol=loremagn translated_route_domain=acons translated_source_ip=10.22.213.196 translated_source_port=7230 translated_vlan=emoenimi vlan=1864", - "fileset.name": "bigipafm", - "host.ip": "10.125.150.220", - "host.name": "pteurs1031.mail.corp", - "input.type": "log", - "log.level": "medium", - "log.offset": 47421, - "network.protocol": "rdp", - "observer.product": "ssequamn", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5812", - "related.hosts": [ - "pteurs1031.mail.corp" - ], - "related.ip": [ - "10.120.50.13", - "10.125.150.220", - "10.150.153.61", - "10.22.213.196" - ], - "related.user": [ - "inculpa" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "lumquid", - "rsa.misc.event_type": "undeomn", - "rsa.misc.obj_name": "uamqua", - "rsa.misc.policy_name": "Neq", - "rsa.misc.reference_id": "ihi", - "rsa.misc.rule_name": "xcep", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.5812", - "rsa.network.alias_host": [ - "pteurs1031.mail.corp" - ], - "rsa.network.vlan": 1864, - "rsa.time.event_time_str": "Mar", - "rule.name": "xcep", - "service.type": "f5", - "source.geo.country_name": "issu", - "source.ip": "10.120.50.13", - "source.nat.ip": "10.22.213.196", - "source.nat.port": 7230, - "source.port": 4426, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "inculpa" - }, - { - "destination.geo.country_name": "dquia", - "destination.nat.ip": "10.238.171.184", - "destination.nat.port": 2574, - "destination.port": 5334, - "event.action": "Accept", - "event.code": "dolor", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "mqu onorume abill5290.lan mini mve tionev [F5@uasiarch acl_policy_name=velites acl_policy_type=uredolor acl_rule_name=epreh action=Accept hostname=edquiaco6562.api.lan bigip_mgmt_ip=10.113.2.13 context_name=rudexerc context_type=nturm date_time=Mar 25 2018 09:31:24 dest_ip=10.182.134.109 dst_geo=dquia dest_port=5334 device_product=bori device_vendor=dipi device_version=1.7232 drop_reason=utf errdefs_msgno=dolor errdefs_msg_name=dexe flow_id=nemul ip_protocol=igmp severity=low partition_name=lupt route_domain=quatur sa_translation_pool=dminim sa_translation_type=ptatevel source_ip=10.85.52.249 src_geo=eirured source_port=3772 source_user=tatiset translated_dest_ip=10.238.171.184 translated_dest_port=2574 translated_ip_protocol=duntutl translated_route_domain=nven translated_source_ip=10.229.155.171 translated_source_port=6978 translated_vlan=asiarch vlan=7121", - "fileset.name": "bigipafm", - "host.ip": "10.113.2.13", - "host.name": "edquiaco6562.api.lan", - "input.type": "log", - "log.level": "low", - "log.offset": 48297, - "network.protocol": "igmp", - "observer.product": "bori", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7232", - "related.hosts": [ - "edquiaco6562.api.lan" - ], - "related.ip": [ - "10.113.2.13", - "10.229.155.171", - "10.238.171.184", - "10.85.52.249" - ], - "related.user": [ - "tatiset" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "rudexerc", - "rsa.misc.event_type": "dexe", - "rsa.misc.obj_name": "uasiarch", - "rsa.misc.policy_name": "velites", - "rsa.misc.reference_id": "dolor", - "rsa.misc.rule_name": "epreh", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.7232", - "rsa.network.alias_host": [ - "edquiaco6562.api.lan" - ], - "rsa.network.vlan": 7121, - "rsa.time.event_time_str": "Mar", - "rule.name": "epreh", - "service.type": "f5", - "source.geo.country_name": "eirured", - "source.ip": "10.85.52.249", - "source.nat.ip": "10.229.155.171", - "source.nat.port": 6978, - "source.port": 3772, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tatiset" - }, - { - "destination.geo.country_name": "dolo", - "destination.nat.ip": "10.51.245.225", - "destination.nat.port": 3991, - "destination.port": 6418, - "event.action": "Accept", - "event.code": "tessecil", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "utla deomni tse7542.test nesciu todit utaliqui [F5@emse acl_policy_name=emqui acl_policy_type=cipitla acl_rule_name=tlab action=Accept hostname=tatis7315.mail.home bigip_mgmt_ip=10.249.174.35 context_name=umfu context_type=utla date_time=Apr 08 2018 16:33:58 dest_ip=10.136.53.201 dst_geo=dolo dest_port=6418 device_product=samvol device_vendor=equa device_version=1.536 drop_reason=strumex errdefs_msgno=tessecil errdefs_msg_name=ugia flow_id=reprehe ip_protocol=udp severity=medium partition_name=umq route_domain=sistena sa_translation_pool=qui sa_translation_type=caboN source_ip=10.198.150.185 src_geo=catcupid source_port=3167 source_user=quela translated_dest_ip=10.51.245.225 translated_dest_port=3991 translated_ip_protocol=enimi translated_route_domain=illum translated_source_ip=10.220.1.249 translated_source_port=4200 translated_vlan=Sedut vlan=7832", - "fileset.name": "bigipafm", - "host.ip": "10.249.174.35", - "host.name": "tatis7315.mail.home", - "input.type": "log", - "log.level": "medium", - "log.offset": 49168, - "network.protocol": "udp", - "observer.product": "samvol", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.536", - "related.hosts": [ - "tatis7315.mail.home" - ], - "related.ip": [ - "10.198.150.185", - "10.220.1.249", - "10.249.174.35", - "10.51.245.225" - ], - "related.user": [ - "quela" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "umfu", - "rsa.misc.event_type": "ugia", - "rsa.misc.obj_name": "emse", - "rsa.misc.policy_name": "emqui", - "rsa.misc.reference_id": "tessecil", - "rsa.misc.rule_name": "tlab", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.536", - "rsa.network.alias_host": [ - "tatis7315.mail.home" - ], - "rsa.network.vlan": 7832, - "rsa.time.event_time_str": "Apr", - "rule.name": "tlab", - "service.type": "f5", - "source.geo.country_name": "catcupid", - "source.ip": "10.198.150.185", - "source.nat.ip": "10.220.1.249", - "source.nat.port": 4200, - "source.port": 3167, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "quela" - }, - { - "destination.geo.country_name": "osqu", - "destination.nat.ip": "10.190.96.181", - "destination.nat.port": 2153, - "destination.port": 4859, - "event.action": "Drop", - "event.code": "runtmoll", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "audant obeata uredol2348.www5.host entorev quuntur olup [F5@aeab acl_policy_name=uradipis acl_policy_type=aerat acl_rule_name=les action=Drop hostname=eosqui3723.api.localdomain bigip_mgmt_ip=10.152.157.32 context_name=ali context_type=udexerci date_time=Apr 22 2018 23:36:32 dest_ip=10.76.232.245 dst_geo=osqu dest_port=4859 device_product=aborio device_vendor=rve device_version=1.219 drop_reason=nbyCi errdefs_msgno=runtmoll errdefs_msg_name=busBon flow_id=norumetM ip_protocol=udp severity=low partition_name=usBono route_domain=ameaq sa_translation_pool=Quis sa_translation_type=lupta source_ip=10.251.82.195 src_geo=umiure source_port=5186 source_user=olorese translated_dest_ip=10.190.96.181 translated_dest_port=2153 translated_ip_protocol=culp translated_route_domain=deomn translated_source_ip=10.38.185.31 translated_source_port=1085 translated_vlan=llo vlan=1106", - "fileset.name": "bigipafm", - "host.ip": "10.152.157.32", - "host.name": "eosqui3723.api.localdomain", - "input.type": "log", - "log.level": "low", - "log.offset": 50031, - "network.protocol": "udp", - "observer.product": "aborio", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.219", - "related.hosts": [ - "eosqui3723.api.localdomain" - ], - "related.ip": [ - "10.152.157.32", - "10.190.96.181", - "10.251.82.195", - "10.38.185.31" - ], - "related.user": [ - "olorese" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "ali", - "rsa.misc.event_type": "busBon", - "rsa.misc.obj_name": "aeab", - "rsa.misc.policy_name": "uradipis", - "rsa.misc.reference_id": "runtmoll", - "rsa.misc.rule_name": "les", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.219", - "rsa.network.alias_host": [ - "eosqui3723.api.localdomain" - ], - "rsa.network.vlan": 1106, - "rsa.time.event_time_str": "Apr", - "rule.name": "les", - "service.type": "f5", - "source.geo.country_name": "umiure", - "source.ip": "10.251.82.195", - "source.nat.ip": "10.38.185.31", - "source.nat.port": 1085, - "source.port": 5186, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "olorese" - }, - { - "destination.geo.country_name": "eratv", - "destination.nat.ip": "10.230.112.179", - "destination.nat.port": 5926, - "destination.port": 7206, - "event.action": "Drop", - "event.code": "xerc", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tla iaconseq sed3235.www5.localhost pidatatn isno luptatev [F5@occaeca acl_policy_name=dan acl_policy_type=pta acl_rule_name=upt action=Drop hostname=itaedict199.mail.corp bigip_mgmt_ip=10.103.102.242 context_name=labore context_type=lorem date_time=May 07 2018 06:39:06 dest_ip=10.68.159.207 dst_geo=eratv dest_port=7206 device_product=estq device_vendor=quasiarc device_version=1.6526 drop_reason=liq errdefs_msgno=xerc errdefs_msg_name=atisetqu flow_id=squir ip_protocol=icmp severity=very-high partition_name=quam route_domain=deriti sa_translation_pool=edictasu sa_translation_type=eturadi source_ip=10.190.247.194 src_geo=mSecti source_port=4210 source_user=tDuisaut translated_dest_ip=10.230.112.179 translated_dest_port=5926 translated_ip_protocol=vol translated_route_domain=ita translated_source_ip=10.211.198.50 translated_source_port=7510 translated_vlan=nibusB vlan=5555", - "fileset.name": "bigipafm", - "host.ip": "10.103.102.242", - "host.name": "itaedict199.mail.corp", - "input.type": "log", - "log.level": "very-high", - "log.offset": 50906, - "network.protocol": "icmp", - "observer.product": "estq", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6526", - "related.hosts": [ - "itaedict199.mail.corp" - ], - "related.ip": [ - "10.103.102.242", - "10.190.247.194", - "10.211.198.50", - "10.230.112.179" - ], - "related.user": [ - "tDuisaut" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "labore", - "rsa.misc.event_type": "atisetqu", - "rsa.misc.obj_name": "occaeca", - "rsa.misc.policy_name": "dan", - "rsa.misc.reference_id": "xerc", - "rsa.misc.rule_name": "upt", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.6526", - "rsa.network.alias_host": [ - "itaedict199.mail.corp" - ], - "rsa.network.vlan": 5555, - "rsa.time.event_time_str": "May", - "rule.name": "upt", - "service.type": "f5", - "source.geo.country_name": "mSecti", - "source.ip": "10.190.247.194", - "source.nat.ip": "10.211.198.50", - "source.nat.port": 7510, - "source.port": 4210, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tDuisaut" - }, - { - "destination.geo.country_name": "uiac", - "destination.nat.ip": "10.101.13.122", - "destination.nat.port": 6737, - "destination.port": 7838, - "event.action": "Closed", - "event.code": "queporro", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "amremap oremagna aqu4475.mail.invalid serrorsi tsedquia rsit [F5@quis acl_policy_name=upidatat acl_policy_type=mod acl_rule_name=niamqui action=Closed hostname=xeaco7887.www.localdomain bigip_mgmt_ip=10.47.223.155 context_name=ugitsed context_type=dminimve date_time=May 21 2018 13:41:41 dest_ip=10.111.137.84 dst_geo=uiac dest_port=7838 device_product=tot device_vendor=reme device_version=1.7750 drop_reason=loremi errdefs_msgno=queporro errdefs_msg_name=tur flow_id=eFi ip_protocol=ipv6-icmp severity=medium partition_name=ulapari route_domain=eporroq sa_translation_pool=uunturm sa_translation_type=iatn source_ip=10.219.83.199 src_geo=diduntut source_port=1321 source_user=ectetur translated_dest_ip=10.101.13.122 translated_dest_port=6737 translated_ip_protocol=nibusBo translated_route_domain=volup translated_source_ip=10.251.101.61 translated_source_port=5153 translated_vlan=scipit vlan=6495", - "fileset.name": "bigipafm", - "host.ip": "10.47.223.155", - "host.name": "xeaco7887.www.localdomain", - "input.type": "log", - "log.level": "medium", - "log.offset": 51790, - "network.protocol": "ipv6-icmp", - "observer.product": "tot", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7750", - "related.hosts": [ - "xeaco7887.www.localdomain" - ], - "related.ip": [ - "10.101.13.122", - "10.219.83.199", - "10.251.101.61", - "10.47.223.155" - ], - "related.user": [ - "ectetur" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ugitsed", - "rsa.misc.event_type": "tur", - "rsa.misc.obj_name": "quis", - "rsa.misc.policy_name": "upidatat", - "rsa.misc.reference_id": "queporro", - "rsa.misc.rule_name": "niamqui", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.7750", - "rsa.network.alias_host": [ - "xeaco7887.www.localdomain" - ], - "rsa.network.vlan": 6495, - "rsa.time.event_time_str": "May", - "rule.name": "niamqui", - "service.type": "f5", - "source.geo.country_name": "diduntut", - "source.ip": "10.219.83.199", - "source.nat.ip": "10.251.101.61", - "source.nat.port": 5153, - "source.port": 1321, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ectetur" - }, - { - "destination.geo.country_name": "inBCSed", - "destination.nat.ip": "10.21.30.43", - "destination.nat.port": 4754, - "destination.port": 6353, - "event.action": "Closed", - "event.code": "olu", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tore isni tamrema736.www5.lan ntiumdol conse aturve [F5@edqui acl_policy_name=tvolu acl_policy_type=psu acl_rule_name=strud action=Closed hostname=saute7421.www.invalid bigip_mgmt_ip=10.21.80.157 context_name=tiumtot context_type=tate date_time=Jun 04 2018 20:44:15 dest_ip=10.13.222.177 dst_geo=inBCSed dest_port=6353 device_product=Loremip device_vendor=taliqui device_version=1.5568 drop_reason=ipsaquae errdefs_msgno=olu errdefs_msg_name=exerci flow_id=isnostru ip_protocol=tcp severity=very-high partition_name=ngelits route_domain=volupt sa_translation_pool=billoi sa_translation_type=reseo source_ip=10.31.86.83 src_geo=pariat source_port=6646 source_user=litsed translated_dest_ip=10.21.30.43 translated_dest_port=4754 translated_ip_protocol=lorem translated_route_domain=iamquisn translated_source_ip=10.83.136.233 translated_source_port=6643 translated_vlan=imadm vlan=3187", - "fileset.name": "bigipafm", - "host.ip": "10.21.80.157", - "host.name": "saute7421.www.invalid", - "input.type": "log", - "log.level": "very-high", - "log.offset": 52692, - "network.protocol": "tcp", - "observer.product": "Loremip", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5568", - "related.hosts": [ - "saute7421.www.invalid" - ], - "related.ip": [ - "10.21.30.43", - "10.21.80.157", - "10.31.86.83", - "10.83.136.233" - ], - "related.user": [ - "litsed" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "tiumtot", - "rsa.misc.event_type": "exerci", - "rsa.misc.obj_name": "edqui", - "rsa.misc.policy_name": "tvolu", - "rsa.misc.reference_id": "olu", - "rsa.misc.rule_name": "strud", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.5568", - "rsa.network.alias_host": [ - "saute7421.www.invalid" - ], - "rsa.network.vlan": 3187, - "rsa.time.event_time_str": "Jun", - "rule.name": "strud", - "service.type": "f5", - "source.geo.country_name": "pariat", - "source.ip": "10.31.86.83", - "source.nat.ip": "10.83.136.233", - "source.nat.port": 6643, - "source.port": 6646, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "litsed" - }, - { - "destination.geo.country_name": "uine", - "destination.nat.ip": "10.194.197.107", - "destination.nat.port": 2524, - "destination.port": 1815, - "event.action": "Accept", - "event.code": "archite", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "lumdol edutper utemve6966.mail.local emoen ptate mipsumqu [F5@turad acl_policy_name=dol acl_policy_type=ntutla acl_rule_name=des action=Accept hostname=oluptas1637.home bigip_mgmt_ip=10.195.90.73 context_name=ipisc context_type=iatnulap date_time=Jun 19 2018 03:46:49 dest_ip=10.170.155.137 dst_geo=uine dest_port=1815 device_product=veniamqu device_vendor=iconsequ device_version=1.5445 drop_reason=apa errdefs_msgno=archite errdefs_msg_name=tur flow_id=ddo ip_protocol=ipv6 severity=high partition_name=inBC route_domain=did sa_translation_pool=atcupi sa_translation_type=eriti source_ip=10.45.152.205 src_geo=rema source_port=5107 source_user=datatn translated_dest_ip=10.194.197.107 translated_dest_port=2524 translated_ip_protocol=tur translated_route_domain=itation translated_source_ip=10.27.181.27 translated_source_port=5509 translated_vlan=uredo vlan=2155", - "fileset.name": "bigipafm", - "host.ip": "10.195.90.73", - "host.name": "oluptas1637.home", - "input.type": "log", - "log.level": "high", - "log.offset": 53576, - "network.protocol": "ipv6", - "observer.product": "veniamqu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5445", - "related.hosts": [ - "oluptas1637.home" - ], - "related.ip": [ - "10.194.197.107", - "10.195.90.73", - "10.27.181.27", - "10.45.152.205" - ], - "related.user": [ - "datatn" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "ipisc", - "rsa.misc.event_type": "tur", - "rsa.misc.obj_name": "turad", - "rsa.misc.policy_name": "dol", - "rsa.misc.reference_id": "archite", - "rsa.misc.rule_name": "des", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.5445", - "rsa.network.alias_host": [ - "oluptas1637.home" - ], - "rsa.network.vlan": 2155, - "rsa.time.event_time_str": "Jun", - "rule.name": "des", - "service.type": "f5", - "source.geo.country_name": "rema", - "source.ip": "10.45.152.205", - "source.nat.ip": "10.27.181.27", - "source.nat.port": 5509, - "source.port": 5107, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "datatn" - }, - { - "destination.geo.country_name": "iscive", - "destination.nat.ip": "10.129.161.18", - "destination.nat.port": 782, - "destination.port": 5527, - "event.action": "Drop", - "event.code": "taevitae", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "use catcu quame922.internal.host eursi liquid ulapari [F5@ibus acl_policy_name=isu acl_policy_type=moll acl_rule_name=roinBCS action=Drop hostname=ididu5505.api.localdomain bigip_mgmt_ip=10.43.239.97 context_name=modi context_type=cip date_time=Jul 03 2018 10:49:23 dest_ip=10.60.60.164 dst_geo=iscive dest_port=5527 device_product=incididu device_vendor=yCice device_version=1.508 drop_reason=ionem errdefs_msgno=taevitae errdefs_msg_name=dminimv flow_id=quam ip_protocol=tcp severity=low partition_name=umdol route_domain=rerepr sa_translation_pool=ipiscin sa_translation_type=trudexe source_ip=10.222.2.132 src_geo=umdo source_port=6187 source_user=aedicta translated_dest_ip=10.129.161.18 translated_dest_port=782 translated_ip_protocol=umquiad translated_route_domain=porinc translated_source_ip=10.183.90.25 translated_source_port=5038 translated_vlan=conse vlan=2563", - "fileset.name": "bigipafm", - "host.ip": "10.43.239.97", - "host.name": "ididu5505.api.localdomain", - "input.type": "log", - "log.level": "low", - "log.offset": 54442, - "network.protocol": "tcp", - "observer.product": "incididu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.508", - "related.hosts": [ - "ididu5505.api.localdomain" - ], - "related.ip": [ - "10.129.161.18", - "10.183.90.25", - "10.222.2.132", - "10.43.239.97" - ], - "related.user": [ - "aedicta" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "modi", - "rsa.misc.event_type": "dminimv", - "rsa.misc.obj_name": "ibus", - "rsa.misc.policy_name": "isu", - "rsa.misc.reference_id": "taevitae", - "rsa.misc.rule_name": "roinBCS", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.508", - "rsa.network.alias_host": [ - "ididu5505.api.localdomain" - ], - "rsa.network.vlan": 2563, - "rsa.time.event_time_str": "Jul", - "rule.name": "roinBCS", - "service.type": "f5", - "source.geo.country_name": "umdo", - "source.ip": "10.222.2.132", - "source.nat.ip": "10.183.90.25", - "source.nat.port": 5038, - "source.port": 6187, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "aedicta" - }, - { - "destination.geo.country_name": "nevolup", - "destination.nat.ip": "10.67.129.100", - "destination.nat.port": 7106, - "destination.port": 3706, - "event.action": "Closed", - "event.code": "elitse", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "dolo reeufu umexe5208.local suntex uptatema uteiru [F5@rcitati acl_policy_name=siutali acl_policy_type=uiratio acl_rule_name=ficia action=Closed hostname=mqui1099.api.corp bigip_mgmt_ip=10.231.167.171 context_name=onorumet context_type=illoinve date_time=Jul 17 2018 17:51:58 dest_ip=10.188.254.168 dst_geo=nevolup dest_port=3706 device_product=lor device_vendor=ica device_version=1.4479 drop_reason=sumd errdefs_msgno=elitse errdefs_msg_name=olu flow_id=temqu ip_protocol=rdp severity=very-high partition_name=nesci route_domain=meaquei sa_translation_pool=snisiu sa_translation_type=atem source_ip=10.189.162.131 src_geo=litsed source_port=6019 source_user=sedquia translated_dest_ip=10.67.129.100 translated_dest_port=7106 translated_ip_protocol=mmodicon translated_route_domain=eosquir translated_source_ip=10.248.156.138 translated_source_port=2125 translated_vlan=smodit vlan=3090", - "fileset.name": "bigipafm", - "host.ip": "10.231.167.171", - "host.name": "mqui1099.api.corp", - "input.type": "log", - "log.level": "very-high", - "log.offset": 55316, - "network.protocol": "rdp", - "observer.product": "lor", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4479", - "related.hosts": [ - "mqui1099.api.corp" - ], - "related.ip": [ - "10.189.162.131", - "10.231.167.171", - "10.248.156.138", - "10.67.129.100" - ], - "related.user": [ - "sedquia" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "onorumet", - "rsa.misc.event_type": "olu", - "rsa.misc.obj_name": "rcitati", - "rsa.misc.policy_name": "siutali", - "rsa.misc.reference_id": "elitse", - "rsa.misc.rule_name": "ficia", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.4479", - "rsa.network.alias_host": [ - "mqui1099.api.corp" - ], - "rsa.network.vlan": 3090, - "rsa.time.event_time_str": "Jul", - "rule.name": "ficia", - "service.type": "f5", - "source.geo.country_name": "litsed", - "source.ip": "10.189.162.131", - "source.nat.ip": "10.248.156.138", - "source.nat.port": 2125, - "source.port": 6019, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "sedquia" - }, - { - "destination.geo.country_name": "umqui", - "destination.nat.ip": "10.185.107.27", - "destination.nat.port": 2257, - "destination.port": 1757, - "event.action": "Reject", - "event.code": "itecto", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "dun xce dol5403.www.localhost asiar eiu maliquam [F5@gnama acl_policy_name=ursintoc acl_policy_type=minimve acl_rule_name=eprehe action=Reject hostname=siuta2155.lan bigip_mgmt_ip=10.63.103.30 context_name=ill context_type=imveniam date_time=Aug 01 2018 00:54:32 dest_ip=10.36.29.127 dst_geo=umqui dest_port=1757 device_product=sci device_vendor=isquames device_version=1.2927 drop_reason=tlabor errdefs_msgno=itecto errdefs_msg_name=loreeuf flow_id=orainci ip_protocol=icmp severity=low partition_name=aev route_domain=uelaudan sa_translation_pool=lab sa_translation_type=sequa source_ip=10.6.146.184 src_geo=rrorsi source_port=7247 source_user=sequu translated_dest_ip=10.185.107.27 translated_dest_port=2257 translated_ip_protocol=mips translated_route_domain=iduntutl translated_source_ip=10.142.106.66 translated_source_port=3790 translated_vlan=quelauda vlan=289", - "fileset.name": "bigipafm", - "host.ip": "10.63.103.30", - "host.name": "siuta2155.lan", - "input.type": "log", - "log.level": "low", - "log.offset": 56204, - "network.protocol": "icmp", - "observer.product": "sci", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2927", - "related.hosts": [ - "siuta2155.lan" - ], - "related.ip": [ - "10.142.106.66", - "10.185.107.27", - "10.6.146.184", - "10.63.103.30" - ], - "related.user": [ - "sequu" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "ill", - "rsa.misc.event_type": "loreeuf", - "rsa.misc.obj_name": "gnama", - "rsa.misc.policy_name": "ursintoc", - "rsa.misc.reference_id": "itecto", - "rsa.misc.rule_name": "eprehe", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.2927", - "rsa.network.alias_host": [ - "siuta2155.lan" - ], - "rsa.network.vlan": 289, - "rsa.time.event_time_str": "Aug", - "rule.name": "eprehe", - "service.type": "f5", - "source.geo.country_name": "rrorsi", - "source.ip": "10.6.146.184", - "source.nat.ip": "10.142.106.66", - "source.nat.port": 3790, - "source.port": 7247, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "sequu" - }, - { - "destination.geo.country_name": "uidex", - "destination.nat.ip": "10.0.202.9", - "destination.nat.port": 7451, - "destination.port": 1203, - "event.action": "Established", - "event.code": "ianonn", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "dolo ulamc doe344.www5.local toreve squirat llum [F5@dol acl_policy_name=niam acl_policy_type=atio acl_rule_name=sno action=Established hostname=tatiset4191.localdomain bigip_mgmt_ip=10.214.93.200 context_name=dtempor context_type=rroquisq date_time=Aug 15 2018 07:57:06 dest_ip=10.215.63.248 dst_geo=uidex dest_port=1203 device_product=lloi device_vendor=nseq device_version=1.4023 drop_reason=isetqua errdefs_msgno=ianonn errdefs_msg_name=oluptas flow_id=doe ip_protocol=udp severity=very-high partition_name=rchitect route_domain=orsitame sa_translation_pool=tasn sa_translation_type=exeaco source_ip=10.93.39.237 src_geo=aincidu source_port=232 source_user=tionofd translated_dest_ip=10.0.202.9 translated_dest_port=7451 translated_ip_protocol=nvolup translated_route_domain=ommodic translated_source_ip=10.119.179.182 translated_source_port=7255 translated_vlan=undeo vlan=7696", - "fileset.name": "bigipafm", - "host.ip": "10.214.93.200", - "host.name": "tatiset4191.localdomain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 57073, - "network.protocol": "udp", - "observer.product": "lloi", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4023", - "related.hosts": [ - "tatiset4191.localdomain" - ], - "related.ip": [ - "10.0.202.9", - "10.119.179.182", - "10.214.93.200", - "10.93.39.237" - ], - "related.user": [ - "tionofd" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "dtempor", - "rsa.misc.event_type": "oluptas", - "rsa.misc.obj_name": "dol", - "rsa.misc.policy_name": "niam", - "rsa.misc.reference_id": "ianonn", - "rsa.misc.rule_name": "sno", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.4023", - "rsa.network.alias_host": [ - "tatiset4191.localdomain" - ], - "rsa.network.vlan": 7696, - "rsa.time.event_time_str": "Aug", - "rule.name": "sno", - "service.type": "f5", - "source.geo.country_name": "aincidu", - "source.ip": "10.93.39.237", - "source.nat.ip": "10.119.179.182", - "source.nat.port": 7255, - "source.port": 232, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tionofd" - }, - { - "destination.geo.country_name": "mcorpor", - "destination.nat.ip": "10.123.154.140", - "destination.nat.port": 2551, - "destination.port": 2433, - "event.action": "Drop", - "event.code": "byCice", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "uiinea uianonn eavolupt784.www5.example liquam sinto edi [F5@eumiure acl_policy_name=ore acl_policy_type=adeser acl_rule_name=mSe action=Drop hostname=aute2433.mail.lan bigip_mgmt_ip=10.252.204.162 context_name=tiae context_type=giat date_time=Aug 29 2018 14:59:40 dest_ip=10.115.77.51 dst_geo=mcorpor dest_port=2433 device_product=ostru device_vendor=mea device_version=1.5939 drop_reason=iquipex errdefs_msgno=byCice errdefs_msg_name=deritq flow_id=boreetdo ip_protocol=ipv6-icmp severity=medium partition_name=iin route_domain=nostr sa_translation_pool=luptatem sa_translation_type=tNequepo source_ip=10.28.145.163 src_geo=sper source_port=72 source_user=imadmin translated_dest_ip=10.123.154.140 translated_dest_port=2551 translated_ip_protocol=mSect translated_route_domain=iure translated_source_ip=10.30.189.166 translated_source_port=2749 translated_vlan=aer vlan=3422", - "fileset.name": "bigipafm", - "host.ip": "10.252.204.162", - "host.name": "aute2433.mail.lan", - "input.type": "log", - "log.level": "medium", - "log.offset": 57956, - "network.protocol": "ipv6-icmp", - "observer.product": "ostru", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5939", - "related.hosts": [ - "aute2433.mail.lan" - ], - "related.ip": [ - "10.123.154.140", - "10.252.204.162", - "10.28.145.163", - "10.30.189.166" - ], - "related.user": [ - "imadmin" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "tiae", - "rsa.misc.event_type": "deritq", - "rsa.misc.obj_name": "eumiure", - "rsa.misc.policy_name": "ore", - "rsa.misc.reference_id": "byCice", - "rsa.misc.rule_name": "mSe", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.5939", - "rsa.network.alias_host": [ - "aute2433.mail.lan" - ], - "rsa.network.vlan": 3422, - "rsa.time.event_time_str": "Aug", - "rule.name": "mSe", - "service.type": "f5", - "source.geo.country_name": "sper", - "source.ip": "10.28.145.163", - "source.nat.ip": "10.30.189.166", - "source.nat.port": 2749, - "source.port": 72, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "imadmin" - }, - { - "destination.geo.country_name": "pariatur", - "destination.nat.ip": "10.79.49.3", - "destination.nat.port": 7794, - "destination.port": 7435, - "event.action": "Accept", - "event.code": "mqua", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "roquis mremape ude2977.www.corp rmagnido exeaco dqu [F5@ccaec acl_policy_name=repreh acl_policy_type=imven acl_rule_name=usan action=Accept hostname=idolo6535.internal.example bigip_mgmt_ip=10.46.162.198 context_name=snulap context_type=onsequat date_time=Sep 12 2018 22:02:15 dest_ip=10.166.128.248 dst_geo=pariatur dest_port=7435 device_product=tura device_vendor=equuntur device_version=1.6564 drop_reason=uaera errdefs_msgno=mqua errdefs_msg_name=xer flow_id=utlabore ip_protocol=ipv6-icmp severity=very-high partition_name=beataevi route_domain=amquisn sa_translation_pool=itquii sa_translation_type=imaven source_ip=10.145.128.250 src_geo=nder source_port=5641 source_user=eni translated_dest_ip=10.79.49.3 translated_dest_port=7794 translated_ip_protocol=psamvolu translated_route_domain=teturad translated_source_ip=10.29.122.183 translated_source_port=6166 translated_vlan=tla vlan=6146", - "fileset.name": "bigipafm", - "host.ip": "10.46.162.198", - "host.name": "idolo6535.internal.example", - "input.type": "log", - "log.level": "very-high", - "log.offset": 58833, - "network.protocol": "ipv6-icmp", - "observer.product": "tura", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6564", - "related.hosts": [ - "idolo6535.internal.example" - ], - "related.ip": [ - "10.145.128.250", - "10.29.122.183", - "10.46.162.198", - "10.79.49.3" - ], - "related.user": [ - "eni" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "snulap", - "rsa.misc.event_type": "xer", - "rsa.misc.obj_name": "ccaec", - "rsa.misc.policy_name": "repreh", - "rsa.misc.reference_id": "mqua", - "rsa.misc.rule_name": "usan", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.6564", - "rsa.network.alias_host": [ - "idolo6535.internal.example" - ], - "rsa.network.vlan": 6146, - "rsa.time.event_time_str": "Sep", - "rule.name": "usan", - "service.type": "f5", - "source.geo.country_name": "nder", - "source.ip": "10.145.128.250", - "source.nat.ip": "10.29.122.183", - "source.nat.port": 6166, - "source.port": 5641, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "eni" - }, - { - "destination.geo.country_name": "smoditem", - "destination.nat.ip": "10.65.174.196", - "destination.nat.port": 472, - "destination.port": 575, - "event.action": "Closed", - "event.code": "loremeum", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "modtempo edict nost3250.internal.localdomain nibu quatur isiutali [F5@mdolo acl_policy_name=nof acl_policy_type=usantiu acl_rule_name=periam action=Closed hostname=one7728.api.localdomain bigip_mgmt_ip=10.177.232.136 context_name=obe context_type=niamqu date_time=Sep 27 2018 05:04:49 dest_ip=10.140.59.161 dst_geo=smoditem dest_port=575 device_product=tev device_vendor=oNemoeni device_version=1.3341 drop_reason=elillumq errdefs_msgno=loremeum errdefs_msg_name=luptatem flow_id=ing ip_protocol=tcp severity=very-high partition_name=riameaqu route_domain=etd sa_translation_pool=omnisi sa_translation_type=dolor source_ip=10.166.169.167 src_geo=ati source_port=1544 source_user=olors translated_dest_ip=10.65.174.196 translated_dest_port=472 translated_ip_protocol=iin translated_route_domain=uteiru translated_source_ip=10.142.235.217 translated_source_port=5846 translated_vlan=orain vlan=2663", - "fileset.name": "bigipafm", - "host.ip": "10.177.232.136", - "host.name": "one7728.api.localdomain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 59729, - "network.protocol": "tcp", - "observer.product": "tev", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3341", - "related.hosts": [ - "one7728.api.localdomain" - ], - "related.ip": [ - "10.142.235.217", - "10.166.169.167", - "10.177.232.136", - "10.65.174.196" - ], - "related.user": [ - "olors" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "obe", - "rsa.misc.event_type": "luptatem", - "rsa.misc.obj_name": "mdolo", - "rsa.misc.policy_name": "nof", - "rsa.misc.reference_id": "loremeum", - "rsa.misc.rule_name": "periam", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3341", - "rsa.network.alias_host": [ - "one7728.api.localdomain" - ], - "rsa.network.vlan": 2663, - "rsa.time.event_time_str": "Sep", - "rule.name": "periam", - "service.type": "f5", - "source.geo.country_name": "ati", - "source.ip": "10.166.169.167", - "source.nat.ip": "10.142.235.217", - "source.nat.port": 5846, - "source.port": 1544, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "olors" - }, - { - "destination.geo.country_name": "orisnisi", - "destination.nat.ip": "10.191.78.86", - "destination.nat.port": 6355, - "destination.port": 4342, - "event.action": "Established", - "event.code": "ionula", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "llu quaUt labor7147.internal.host ten vitae tse [F5@gni acl_policy_name=per acl_policy_type=tione acl_rule_name=nibus action=Established hostname=uptatem4446.internal.localhost bigip_mgmt_ip=10.29.217.44 context_name=eacommod context_type=tali date_time=Oct 11 2018 12:07:23 dest_ip=10.131.223.198 dst_geo=orisnisi dest_port=4342 device_product=eritquii device_vendor=atevelit device_version=1.325 drop_reason=enat errdefs_msgno=ionula errdefs_msg_name=itaed flow_id=invol ip_protocol=rdp severity=low partition_name=cidun route_domain=tassitas sa_translation_pool=nimadmi sa_translation_type=dipisci source_ip=10.215.184.154 src_geo=nor source_port=3306 source_user=iarc translated_dest_ip=10.191.78.86 translated_dest_port=6355 translated_ip_protocol=uiac translated_route_domain=squ translated_source_ip=10.53.188.140 translated_source_port=6455 translated_vlan=ten vlan=2937", - "fileset.name": "bigipafm", - "host.ip": "10.29.217.44", - "host.name": "uptatem4446.internal.localhost", - "input.type": "log", - "log.level": "low", - "log.offset": 60626, - "network.protocol": "rdp", - "observer.product": "eritquii", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.325", - "related.hosts": [ - "uptatem4446.internal.localhost" - ], - "related.ip": [ - "10.191.78.86", - "10.215.184.154", - "10.29.217.44", - "10.53.188.140" - ], - "related.user": [ - "iarc" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "eacommod", - "rsa.misc.event_type": "itaed", - "rsa.misc.obj_name": "gni", - "rsa.misc.policy_name": "per", - "rsa.misc.reference_id": "ionula", - "rsa.misc.rule_name": "nibus", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.325", - "rsa.network.alias_host": [ - "uptatem4446.internal.localhost" - ], - "rsa.network.vlan": 2937, - "rsa.time.event_time_str": "Oct", - "rule.name": "nibus", - "service.type": "f5", - "source.geo.country_name": "nor", - "source.ip": "10.215.184.154", - "source.nat.ip": "10.53.188.140", - "source.nat.port": 6455, - "source.port": 3306, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "iarc" - }, - { - "destination.geo.country_name": "turad", - "destination.nat.ip": "10.46.222.149", - "destination.nat.port": 3304, - "destination.port": 2537, - "event.action": "Drop", - "event.code": "quipe", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "isciveli ntutlab sitamet452.domain nsequ ing ollita [F5@dipisci acl_policy_name=amnisiu acl_policy_type=ptat acl_rule_name=epr action=Drop hostname=emq2514.api.localhost bigip_mgmt_ip=10.135.77.156 context_name=uraut context_type=non date_time=Oct 25 2018 19:09:57 dest_ip=10.248.182.188 dst_geo=turad dest_port=2537 device_product=nBCSe device_vendor=ollita device_version=1.3567 drop_reason=eni errdefs_msgno=quipe errdefs_msg_name=oluptat flow_id=stenatus ip_protocol=ggp severity=very-high partition_name=iaecon route_domain=ect sa_translation_pool=tquid sa_translation_type=seru source_ip=10.76.148.147 src_geo=remagna source_port=1121 source_user=urve translated_dest_ip=10.46.222.149 translated_dest_port=3304 translated_ip_protocol=squ translated_route_domain=emagnaal translated_source_ip=10.74.74.129 translated_source_port=5904 translated_vlan=itati vlan=3497", - "fileset.name": "bigipafm", - "host.ip": "10.135.77.156", - "host.name": "emq2514.api.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 61505, - "network.protocol": "ggp", - "observer.product": "nBCSe", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3567", - "related.hosts": [ - "emq2514.api.localhost" - ], - "related.ip": [ - "10.135.77.156", - "10.46.222.149", - "10.74.74.129", - "10.76.148.147" - ], - "related.user": [ - "urve" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "uraut", - "rsa.misc.event_type": "oluptat", - "rsa.misc.obj_name": "dipisci", - "rsa.misc.policy_name": "amnisiu", - "rsa.misc.reference_id": "quipe", - "rsa.misc.rule_name": "epr", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3567", - "rsa.network.alias_host": [ - "emq2514.api.localhost" - ], - "rsa.network.vlan": 3497, - "rsa.time.event_time_str": "Oct", - "rule.name": "epr", - "service.type": "f5", - "source.geo.country_name": "remagna", - "source.ip": "10.76.148.147", - "source.nat.ip": "10.74.74.129", - "source.nat.port": 5904, - "source.port": 1121, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "urve" - }, - { - "destination.geo.country_name": "imadmini", - "destination.nat.ip": "10.11.146.253", - "destination.nat.port": 3581, - "destination.port": 3791, - "event.action": "Drop", - "event.code": "ute", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "rinc tno meumf4052.invalid pitlabo riamea Malorumw [F5@consect acl_policy_name=issu acl_policy_type=tconsect acl_rule_name=tationem action=Drop hostname=agna5654.www.corp bigip_mgmt_ip=10.96.200.223 context_name=iatisun context_type=cto date_time=Nov 09 2018 02:12:32 dest_ip=10.3.228.220 dst_geo=imadmini dest_port=3791 device_product=oeiusm device_vendor=aUtenim device_version=1.1186 drop_reason=isu errdefs_msgno=ute errdefs_msg_name=tdolore flow_id=madminim ip_protocol=igmp severity=very-high partition_name=prehen route_domain=ate sa_translation_pool=ull sa_translation_type=enimipsa source_ip=10.130.203.37 src_geo=quisnos source_port=2132 source_user=mvele translated_dest_ip=10.11.146.253 translated_dest_port=3581 translated_ip_protocol=remeum translated_route_domain=temseq translated_source_ip=10.145.49.29 translated_source_port=2464 translated_vlan=sedquia vlan=4912", - "fileset.name": "bigipafm", - "host.ip": "10.96.200.223", - "host.name": "agna5654.www.corp", - "input.type": "log", - "log.level": "very-high", - "log.offset": 62376, - "network.protocol": "igmp", - "observer.product": "oeiusm", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1186", - "related.hosts": [ - "agna5654.www.corp" - ], - "related.ip": [ - "10.11.146.253", - "10.130.203.37", - "10.145.49.29", - "10.96.200.223" - ], - "related.user": [ - "mvele" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "iatisun", - "rsa.misc.event_type": "tdolore", - "rsa.misc.obj_name": "consect", - "rsa.misc.policy_name": "issu", - "rsa.misc.reference_id": "ute", - "rsa.misc.rule_name": "tationem", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.1186", - "rsa.network.alias_host": [ - "agna5654.www.corp" - ], - "rsa.network.vlan": 4912, - "rsa.time.event_time_str": "Nov", - "rule.name": "tationem", - "service.type": "f5", - "source.geo.country_name": "quisnos", - "source.ip": "10.130.203.37", - "source.nat.ip": "10.145.49.29", - "source.nat.port": 2464, - "source.port": 2132, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "mvele" - }, - { - "destination.geo.country_name": "epteu", - "destination.nat.ip": "10.162.2.180", - "destination.nat.port": 3889, - "destination.port": 5744, - "event.action": "Drop", - "event.code": "ibusB", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ntmo aliqu iqu4429.www5.lan doconse volupta ptat [F5@oreverit acl_policy_name=nimides acl_policy_type=remipsum acl_rule_name=elit action=Drop hostname=ipi4827.mail.lan bigip_mgmt_ip=10.162.78.48 context_name=lab context_type=sedqui date_time=Nov 23 2018 09:15:06 dest_ip=10.243.157.94 dst_geo=epteu dest_port=5744 device_product=tura device_vendor=mquiavol device_version=1.6845 drop_reason=eabil errdefs_msgno=ibusB errdefs_msg_name=rporis flow_id=etco ip_protocol=ipv6 severity=very-high partition_name=ereprehe route_domain=olu sa_translation_pool=nofdeF sa_translation_type=riaturEx source_ip=10.24.23.209 src_geo=itautfu source_port=1503 source_user=rumwr translated_dest_ip=10.162.2.180 translated_dest_port=3889 translated_ip_protocol=mporain translated_route_domain=ectetur translated_source_ip=10.48.75.140 translated_source_port=1837 translated_vlan=ineavol vlan=5182", - "fileset.name": "bigipafm", - "host.ip": "10.162.78.48", - "host.name": "ipi4827.mail.lan", - "input.type": "log", - "log.level": "very-high", - "log.offset": 63258, - "network.protocol": "ipv6", - "observer.product": "tura", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6845", - "related.hosts": [ - "ipi4827.mail.lan" - ], - "related.ip": [ - "10.162.2.180", - "10.162.78.48", - "10.24.23.209", - "10.48.75.140" - ], - "related.user": [ - "rumwr" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "lab", - "rsa.misc.event_type": "rporis", - "rsa.misc.obj_name": "oreverit", - "rsa.misc.policy_name": "nimides", - "rsa.misc.reference_id": "ibusB", - "rsa.misc.rule_name": "elit", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.6845", - "rsa.network.alias_host": [ - "ipi4827.mail.lan" - ], - "rsa.network.vlan": 5182, - "rsa.time.event_time_str": "Nov", - "rule.name": "elit", - "service.type": "f5", - "source.geo.country_name": "itautfu", - "source.ip": "10.24.23.209", - "source.nat.ip": "10.48.75.140", - "source.nat.port": 1837, - "source.port": 1503, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "rumwr" - }, - { - "destination.geo.country_name": "rur", - "destination.nat.ip": "10.119.12.186", - "destination.nat.port": 5674, - "destination.port": 5543, - "event.action": "Drop", - "event.code": "eddoeiu", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "onproid sitv equam3114.test mcorp uelaud aperiam [F5@ngelit acl_policy_name=quiano acl_policy_type=sund acl_rule_name=iaconse action=Drop hostname=sequatD163.internal.example bigip_mgmt_ip=10.151.206.38 context_name=oloremi context_type=luptate date_time=Dec 07 2018 16:17:40 dest_ip=10.38.57.217 dst_geo=rur dest_port=5543 device_product=imidest device_vendor=oeiusmod device_version=1.419 drop_reason=psumqui errdefs_msgno=eddoeiu errdefs_msg_name=oinvento flow_id=mips ip_protocol=udp severity=medium partition_name=corpor route_domain=amvolu sa_translation_pool=ent sa_translation_type=ionemu source_ip=10.66.92.83 src_geo=orinrep source_port=2549 source_user=nproide translated_dest_ip=10.119.12.186 translated_dest_port=5674 translated_ip_protocol=qui translated_route_domain=nemullam translated_source_ip=10.97.105.115 translated_source_port=3576 translated_vlan=squir vlan=3987", - "fileset.name": "bigipafm", - "host.ip": "10.151.206.38", - "host.name": "sequatD163.internal.example", - "input.type": "log", - "log.level": "medium", - "log.offset": 64136, - "network.protocol": "udp", - "observer.product": "imidest", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.419", - "related.hosts": [ - "sequatD163.internal.example" - ], - "related.ip": [ - "10.119.12.186", - "10.151.206.38", - "10.66.92.83", - "10.97.105.115" - ], - "related.user": [ - "nproide" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "oloremi", - "rsa.misc.event_type": "oinvento", - "rsa.misc.obj_name": "ngelit", - "rsa.misc.policy_name": "quiano", - "rsa.misc.reference_id": "eddoeiu", - "rsa.misc.rule_name": "iaconse", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.419", - "rsa.network.alias_host": [ - "sequatD163.internal.example" - ], - "rsa.network.vlan": 3987, - "rsa.time.event_time_str": "Dec", - "rule.name": "iaconse", - "service.type": "f5", - "source.geo.country_name": "orinrep", - "source.ip": "10.66.92.83", - "source.nat.ip": "10.97.105.115", - "source.nat.port": 3576, - "source.port": 2549, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "nproide" - }, - { - "destination.geo.country_name": "volupt", - "destination.nat.ip": "10.64.76.142", - "destination.nat.port": 7083, - "destination.port": 61, - "event.action": "Accept", - "event.code": "enderi", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "umqu umet psaquaea5284.internal.example upt giatquo toccaec [F5@nihilmo acl_policy_name=atquo acl_policy_type=umetMa acl_rule_name=ngelitse action=Accept hostname=itamet1303.invalid bigip_mgmt_ip=10.12.148.73 context_name=eius context_type=evo date_time=Dec 21 2018 23:20:14 dest_ip=10.10.44.34 dst_geo=volupt dest_port=61 device_product=eosqu device_vendor=reetdolo device_version=1.7551 drop_reason=sten errdefs_msgno=enderi errdefs_msg_name=labore flow_id=uasiarch ip_protocol=igmp severity=very-high partition_name=magnama route_domain=reprehe sa_translation_pool=citatio sa_translation_type=dolo source_ip=10.201.132.114 src_geo=eetd source_port=6058 source_user=borisnis translated_dest_ip=10.64.76.142 translated_dest_port=7083 translated_ip_protocol=temse translated_route_domain=samvo translated_source_ip=10.169.139.250 translated_source_port=1374 translated_vlan=nostrume vlan=5035", - "fileset.name": "bigipafm", - "host.ip": "10.12.148.73", - "host.name": "itamet1303.invalid", - "input.type": "log", - "log.level": "very-high", - "log.offset": 65022, - "network.protocol": "igmp", - "observer.product": "eosqu", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7551", - "related.hosts": [ - "itamet1303.invalid" - ], - "related.ip": [ - "10.12.148.73", - "10.169.139.250", - "10.201.132.114", - "10.64.76.142" - ], - "related.user": [ - "borisnis" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "eius", - "rsa.misc.event_type": "labore", - "rsa.misc.obj_name": "nihilmo", - "rsa.misc.policy_name": "atquo", - "rsa.misc.reference_id": "enderi", - "rsa.misc.rule_name": "ngelitse", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.7551", - "rsa.network.alias_host": [ - "itamet1303.invalid" - ], - "rsa.network.vlan": 5035, - "rsa.time.event_time_str": "Dec", - "rule.name": "ngelitse", - "service.type": "f5", - "source.geo.country_name": "eetd", - "source.ip": "10.201.132.114", - "source.nat.ip": "10.169.139.250", - "source.nat.port": 1374, - "source.port": 6058, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "borisnis" - }, - { - "destination.geo.country_name": "giatnula", - "destination.nat.ip": "10.35.38.185", - "destination.nat.port": 7077, - "destination.port": 71, - "event.action": "Drop", - "event.code": "sedq", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tatevel itin tam942.api.host iut leumiur deser [F5@boris acl_policy_name=ris acl_policy_type=nisiuta acl_rule_name=utper action=Drop hostname=epr3512.internal.domain bigip_mgmt_ip=10.9.236.18 context_name=iumdo context_type=exe date_time=Jan 05 2019 06:22:49 dest_ip=10.152.7.48 dst_geo=giatnula dest_port=71 device_product=enimadmi device_vendor=qui device_version=1.5292 drop_reason=aecon errdefs_msgno=sedq errdefs_msg_name=olo flow_id=sperna ip_protocol=udp severity=very-high partition_name=conseq route_domain=upta sa_translation_pool=eturadi sa_translation_type=cinge source_ip=10.111.128.11 src_geo=niamq source_port=5336 source_user=umfug translated_dest_ip=10.35.38.185 translated_dest_port=7077 translated_ip_protocol=labor translated_route_domain=Sec translated_source_ip=10.200.116.191 translated_source_port=3068 translated_vlan=nsecte vlan=5790", - "fileset.name": "bigipafm", - "host.ip": "10.9.236.18", - "host.name": "epr3512.internal.domain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 65915, - "network.protocol": "udp", - "observer.product": "enimadmi", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5292", - "related.hosts": [ - "epr3512.internal.domain" - ], - "related.ip": [ - "10.111.128.11", - "10.200.116.191", - "10.35.38.185", - "10.9.236.18" - ], - "related.user": [ - "umfug" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "iumdo", - "rsa.misc.event_type": "olo", - "rsa.misc.obj_name": "boris", - "rsa.misc.policy_name": "ris", - "rsa.misc.reference_id": "sedq", - "rsa.misc.rule_name": "utper", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.5292", - "rsa.network.alias_host": [ - "epr3512.internal.domain" - ], - "rsa.network.vlan": 5790, - "rsa.time.event_time_str": "Jan", - "rule.name": "utper", - "service.type": "f5", - "source.geo.country_name": "niamq", - "source.ip": "10.111.128.11", - "source.nat.ip": "10.200.116.191", - "source.nat.port": 3068, - "source.port": 5336, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "umfug" - }, - { - "destination.geo.country_name": "rese", - "destination.nat.ip": "10.134.238.8", - "destination.nat.port": 2976, - "destination.port": 5302, - "event.action": "Reject", - "event.code": "ende", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "uianonnu por nve894.lan turadip ataev eFinib [F5@atione acl_policy_name=xcepte acl_policy_type=gnaa acl_rule_name=tio action=Reject hostname=uredol2174.home bigip_mgmt_ip=10.191.27.182 context_name=tMalo context_type=urautod date_time=Jan 19 2019 13:25:23 dest_ip=10.114.60.159 dst_geo=rese dest_port=5302 device_product=rissusci device_vendor=quaturve device_version=1.5991 drop_reason=tisunde errdefs_msgno=ende errdefs_msg_name=quidolor flow_id=lloin ip_protocol=igmp severity=high partition_name=proiden route_domain=moenimip sa_translation_pool=tat sa_translation_type=tate source_ip=10.236.67.227 src_geo=ern source_port=881 source_user=tlabo translated_dest_ip=10.134.238.8 translated_dest_port=2976 translated_ip_protocol=aqua translated_route_domain=edquiac translated_source_ip=10.240.62.238 translated_source_port=1251 translated_vlan=olo vlan=5926", - "fileset.name": "bigipafm", - "host.ip": "10.191.27.182", - "host.name": "uredol2174.home", - "input.type": "log", - "log.level": "high", - "log.offset": 66775, - "network.protocol": "igmp", - "observer.product": "rissusci", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5991", - "related.hosts": [ - "uredol2174.home" - ], - "related.ip": [ - "10.134.238.8", - "10.191.27.182", - "10.236.67.227", - "10.240.62.238" - ], - "related.user": [ - "tlabo" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "tMalo", - "rsa.misc.event_type": "quidolor", - "rsa.misc.obj_name": "atione", - "rsa.misc.policy_name": "xcepte", - "rsa.misc.reference_id": "ende", - "rsa.misc.rule_name": "tio", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.5991", - "rsa.network.alias_host": [ - "uredol2174.home" - ], - "rsa.network.vlan": 5926, - "rsa.time.event_time_str": "Jan", - "rule.name": "tio", - "service.type": "f5", - "source.geo.country_name": "ern", - "source.ip": "10.236.67.227", - "source.nat.ip": "10.240.62.238", - "source.nat.port": 1251, - "source.port": 881, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tlabo" - }, - { - "destination.geo.country_name": "nimad", - "destination.nat.ip": "10.65.35.64", - "destination.nat.port": 2748, - "destination.port": 7814, - "event.action": "Drop", - "event.code": "oin", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ali Nequepor aUten4127.internal.lan apariatu mnisis onsequa [F5@sunt acl_policy_name=orumSe acl_policy_type=olupta acl_rule_name=emveleum action=Drop hostname=ididunt7607.mail.localhost bigip_mgmt_ip=10.165.66.92 context_name=isq context_type=eacommo date_time=Feb 02 2019 20:27:57 dest_ip=10.244.171.198 dst_geo=nimad dest_port=7814 device_product=asi device_vendor=tobe device_version=1.6837 drop_reason=Lore errdefs_msgno=oin errdefs_msg_name=eritquii flow_id=taliqui ip_protocol=ipv6-icmp severity=very-high partition_name=entoreve route_domain=ion sa_translation_pool=exeaco sa_translation_type=tate source_ip=10.109.14.142 src_geo=sitas source_port=6036 source_user=perna translated_dest_ip=10.65.35.64 translated_dest_port=2748 translated_ip_protocol=irur translated_route_domain=risnisiu translated_source_ip=10.22.231.91 translated_source_port=2652 translated_vlan=equepor vlan=897", - "fileset.name": "bigipafm", - "host.ip": "10.165.66.92", - "host.name": "ididunt7607.mail.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 67635, - "network.protocol": "ipv6-icmp", - "observer.product": "asi", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6837", - "related.hosts": [ - "ididunt7607.mail.localhost" - ], - "related.ip": [ - "10.109.14.142", - "10.165.66.92", - "10.22.231.91", - "10.65.35.64" - ], - "related.user": [ - "perna" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "isq", - "rsa.misc.event_type": "eritquii", - "rsa.misc.obj_name": "sunt", - "rsa.misc.policy_name": "orumSe", - "rsa.misc.reference_id": "oin", - "rsa.misc.rule_name": "emveleum", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.6837", - "rsa.network.alias_host": [ - "ididunt7607.mail.localhost" - ], - "rsa.network.vlan": 897, - "rsa.time.event_time_str": "Feb", - "rule.name": "emveleum", - "service.type": "f5", - "source.geo.country_name": "sitas", - "source.ip": "10.109.14.142", - "source.nat.ip": "10.22.231.91", - "source.nat.port": 2652, - "source.port": 6036, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "perna" - }, - { - "destination.geo.country_name": "rume", - "destination.nat.ip": "10.29.230.203", - "destination.nat.port": 6579, - "destination.port": 7667, - "event.action": "Reject", - "event.code": "prehende", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ugiatn utpe hend1170.www5.lan ptateve aliqua officiad [F5@nimadmin acl_policy_name=iavol acl_policy_type=roq acl_rule_name=iumtota action=Reject hostname=inimav5557.www5.test bigip_mgmt_ip=10.71.112.86 context_name=olor context_type=emoenim date_time=Feb 17 2019 03:30:32 dest_ip=10.57.64.102 dst_geo=rume dest_port=7667 device_product=inibusBo device_vendor=tqui device_version=1.99 drop_reason=citat errdefs_msgno=prehende errdefs_msg_name=vitaedic flow_id=remip ip_protocol=ggp severity=high partition_name=rehe route_domain=aper sa_translation_pool=gnaa sa_translation_type=tam source_ip=10.64.161.215 src_geo=modi source_port=4869 source_user=rnatur translated_dest_ip=10.29.230.203 translated_dest_port=6579 translated_ip_protocol=abi translated_route_domain=inimaven translated_source_ip=10.89.221.90 translated_source_port=5835 translated_vlan=entoreve vlan=4612", - "fileset.name": "bigipafm", - "host.ip": "10.71.112.86", - "host.name": "inimav5557.www5.test", - "input.type": "log", - "log.level": "high", - "log.offset": 68526, - "network.protocol": "ggp", - "observer.product": "inibusBo", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.99", - "related.hosts": [ - "inimav5557.www5.test" - ], - "related.ip": [ - "10.29.230.203", - "10.64.161.215", - "10.71.112.86", - "10.89.221.90" - ], - "related.user": [ - "rnatur" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "olor", - "rsa.misc.event_type": "vitaedic", - "rsa.misc.obj_name": "nimadmin", - "rsa.misc.policy_name": "iavol", - "rsa.misc.reference_id": "prehende", - "rsa.misc.rule_name": "iumtota", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.99", - "rsa.network.alias_host": [ - "inimav5557.www5.test" - ], - "rsa.network.vlan": 4612, - "rsa.time.event_time_str": "Feb", - "rule.name": "iumtota", - "service.type": "f5", - "source.geo.country_name": "modi", - "source.ip": "10.64.161.215", - "source.nat.ip": "10.89.221.90", - "source.nat.port": 5835, - "source.port": 4869, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "rnatur" - }, - { - "destination.geo.country_name": "aliquide", - "destination.nat.ip": "10.221.199.137", - "destination.nat.port": 6430, - "destination.port": 7187, - "event.action": "Closed", - "event.code": "urm", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "roqu dquia ommod142.www.home ptate oloreeu imipsa [F5@iscinge acl_policy_name=ora acl_policy_type=meumfug acl_rule_name=inimve action=Closed hostname=nonn1650.www.test bigip_mgmt_ip=10.88.226.76 context_name=ptas context_type=iadolo date_time=Mar 03 2019 10:33:06 dest_ip=10.217.197.29 dst_geo=aliquide dest_port=7187 device_product=tinv device_vendor=iar device_version=1.5232 drop_reason=mquela errdefs_msgno=urm errdefs_msg_name=con flow_id=aeabil ip_protocol=udp severity=low partition_name=edicta route_domain=itaspern sa_translation_pool=tau sa_translation_type=rcit source_ip=10.79.208.135 src_geo=rehende source_port=3688 source_user=erspic translated_dest_ip=10.221.199.137 translated_dest_port=6430 translated_ip_protocol=quipe translated_route_domain=evita translated_source_ip=10.140.118.182 translated_source_port=4566 translated_vlan=nia vlan=7548", - "fileset.name": "bigipafm", - "host.ip": "10.88.226.76", - "host.name": "nonn1650.www.test", - "input.type": "log", - "log.level": "low", - "log.offset": 69397, - "network.protocol": "udp", - "observer.product": "tinv", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.5232", - "related.hosts": [ - "nonn1650.www.test" - ], - "related.ip": [ - "10.140.118.182", - "10.221.199.137", - "10.79.208.135", - "10.88.226.76" - ], - "related.user": [ - "erspic" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ptas", - "rsa.misc.event_type": "con", - "rsa.misc.obj_name": "iscinge", - "rsa.misc.policy_name": "ora", - "rsa.misc.reference_id": "urm", - "rsa.misc.rule_name": "inimve", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.5232", - "rsa.network.alias_host": [ - "nonn1650.www.test" - ], - "rsa.network.vlan": 7548, - "rsa.time.event_time_str": "Mar", - "rule.name": "inimve", - "service.type": "f5", - "source.geo.country_name": "rehende", - "source.ip": "10.79.208.135", - "source.nat.ip": "10.140.118.182", - "source.nat.port": 4566, - "source.port": 3688, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "erspic" - }, - { - "destination.geo.country_name": "oreve", - "destination.nat.ip": "10.126.61.230", - "destination.nat.port": 2068, - "destination.port": 2538, - "event.action": "Reject", - "event.code": "Exce", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "npro boriosa sundeo3076.internal.test Nequepor turQ tod [F5@rsitame acl_policy_name=nsectetu acl_policy_type=untexpli acl_rule_name=smo action=Reject hostname=acons3940.api.lan bigip_mgmt_ip=10.133.48.55 context_name=lab context_type=ela date_time=Mar 17 2019 17:35:40 dest_ip=10.134.141.37 dst_geo=oreve dest_port=2538 device_product=tali device_vendor=quamnih device_version=1.2492 drop_reason=reprehen errdefs_msgno=Exce errdefs_msg_name=tocca flow_id=tinvolu ip_protocol=ipv6 severity=low partition_name=iumt route_domain=mad sa_translation_pool=mpor sa_translation_type=eddoei source_ip=10.35.73.208 src_geo=dolo source_port=6552 source_user=tia translated_dest_ip=10.126.61.230 translated_dest_port=2068 translated_ip_protocol=dolor translated_route_domain=emUteni translated_source_ip=10.189.244.22 translated_source_port=734 translated_vlan=rinre vlan=6425", - "fileset.name": "bigipafm", - "host.ip": "10.133.48.55", - "host.name": "acons3940.api.lan", - "input.type": "log", - "log.level": "low", - "log.offset": 70259, - "network.protocol": "ipv6", - "observer.product": "tali", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2492", - "related.hosts": [ - "acons3940.api.lan" - ], - "related.ip": [ - "10.126.61.230", - "10.133.48.55", - "10.189.244.22", - "10.35.73.208" - ], - "related.user": [ - "tia" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "lab", - "rsa.misc.event_type": "tocca", - "rsa.misc.obj_name": "rsitame", - "rsa.misc.policy_name": "nsectetu", - "rsa.misc.reference_id": "Exce", - "rsa.misc.rule_name": "smo", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.2492", - "rsa.network.alias_host": [ - "acons3940.api.lan" - ], - "rsa.network.vlan": 6425, - "rsa.time.event_time_str": "Mar", - "rule.name": "smo", - "service.type": "f5", - "source.geo.country_name": "dolo", - "source.ip": "10.35.73.208", - "source.nat.ip": "10.189.244.22", - "source.nat.port": 734, - "source.port": 6552, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tia" - }, - { - "destination.geo.country_name": "ostr", - "destination.nat.ip": "10.239.194.105", - "destination.nat.port": 3629, - "destination.port": 575, - "event.action": "Established", - "event.code": "olors", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ident uatur dquiaco2756.home uiine mve dolorema [F5@ditautf acl_policy_name=uisnostr acl_policy_type=oditautf acl_rule_name=nula action=Established hostname=suscipit587.www.localhost bigip_mgmt_ip=10.81.154.115 context_name=ita context_type=aeratvol date_time=Apr 01 2019 00:38:14 dest_ip=10.194.94.1 dst_geo=ostr dest_port=575 device_product=boreetd device_vendor=ueporro device_version=1.4044 drop_reason=oluptat errdefs_msgno=olors errdefs_msg_name=mSecti flow_id=ius ip_protocol=icmp severity=very-high partition_name=xerci route_domain=qua sa_translation_pool=iaecons sa_translation_type=pteurs source_ip=10.35.65.72 src_geo=veni source_port=3387 source_user=reseo translated_dest_ip=10.239.194.105 translated_dest_port=3629 translated_ip_protocol=isnos translated_route_domain=ntin translated_source_ip=10.240.94.109 translated_source_port=5437 translated_vlan=ono vlan=573", - "fileset.name": "bigipafm", - "host.ip": "10.81.154.115", - "host.name": "suscipit587.www.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 71124, - "network.protocol": "icmp", - "observer.product": "boreetd", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4044", - "related.hosts": [ - "suscipit587.www.localhost" - ], - "related.ip": [ - "10.239.194.105", - "10.240.94.109", - "10.35.65.72", - "10.81.154.115" - ], - "related.user": [ - "reseo" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "ita", - "rsa.misc.event_type": "mSecti", - "rsa.misc.obj_name": "ditautf", - "rsa.misc.policy_name": "uisnostr", - "rsa.misc.reference_id": "olors", - "rsa.misc.rule_name": "nula", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.4044", - "rsa.network.alias_host": [ - "suscipit587.www.localhost" - ], - "rsa.network.vlan": 573, - "rsa.time.event_time_str": "Apr", - "rule.name": "nula", - "service.type": "f5", - "source.geo.country_name": "veni", - "source.ip": "10.35.65.72", - "source.nat.ip": "10.240.94.109", - "source.nat.port": 5437, - "source.port": 3387, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "reseo" - }, - { - "destination.geo.country_name": "obeatae", - "destination.nat.ip": "10.248.72.104", - "destination.nat.port": 7485, - "destination.port": 2042, - "event.action": "Established", - "event.code": "emagnaal", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "consequ ine hend3901.www.localdomain nsecte miurere tat [F5@pitlabor acl_policy_name=upi acl_policy_type=olupta acl_rule_name=ape action=Established hostname=mnisiut6146.internal.local bigip_mgmt_ip=10.52.70.192 context_name=empor context_type=ate date_time=Apr 15 2019 07:40:49 dest_ip=10.234.254.96 dst_geo=obeatae dest_port=2042 device_product=orem device_vendor=dquian device_version=1.2307 drop_reason=uis errdefs_msgno=emagnaal errdefs_msg_name=uunturm flow_id=nonnumq ip_protocol=ggp severity=very-high partition_name=ntocca route_domain=emquelau sa_translation_pool=adolorsi sa_translation_type=lupt source_ip=10.38.253.213 src_geo=ncidu source_port=3369 source_user=ionem translated_dest_ip=10.248.72.104 translated_dest_port=7485 translated_ip_protocol=cusan translated_route_domain=ivelit translated_source_ip=10.150.56.227 translated_source_port=4686 translated_vlan=isnost vlan=4697", - "fileset.name": "bigipafm", - "host.ip": "10.52.70.192", - "host.name": "mnisiut6146.internal.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 72004, - "network.protocol": "ggp", - "observer.product": "orem", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2307", - "related.hosts": [ - "mnisiut6146.internal.local" - ], - "related.ip": [ - "10.150.56.227", - "10.248.72.104", - "10.38.253.213", - "10.52.70.192" - ], - "related.user": [ - "ionem" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "empor", - "rsa.misc.event_type": "uunturm", - "rsa.misc.obj_name": "pitlabor", - "rsa.misc.policy_name": "upi", - "rsa.misc.reference_id": "emagnaal", - "rsa.misc.rule_name": "ape", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.2307", - "rsa.network.alias_host": [ - "mnisiut6146.internal.local" - ], - "rsa.network.vlan": 4697, - "rsa.time.event_time_str": "Apr", - "rule.name": "ape", - "service.type": "f5", - "source.geo.country_name": "ncidu", - "source.ip": "10.38.253.213", - "source.nat.ip": "10.150.56.227", - "source.nat.port": 4686, - "source.port": 3369, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ionem" - }, - { - "destination.geo.country_name": "aaliq", - "destination.nat.ip": "10.73.172.186", - "destination.nat.port": 3510, - "destination.port": 2143, - "event.action": "Reject", - "event.code": "agn", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "urQu idol fici312.api.host eri pitlab riosamn [F5@Malo acl_policy_name=onse acl_policy_type=enatuse acl_rule_name=veritat action=Reject hostname=borios1067.www5.home bigip_mgmt_ip=10.218.15.164 context_name=ntNeque context_type=magnidol date_time=Apr 29 2019 14:43:23 dest_ip=10.56.60.3 dst_geo=aaliq dest_port=2143 device_product=gel device_vendor=modt device_version=1.2031 drop_reason=mvolu errdefs_msgno=agn errdefs_msg_name=eritinvo flow_id=aliq ip_protocol=rdp severity=very-high partition_name=uisautei route_domain=labor sa_translation_pool=ihilmol sa_translation_type=scinge source_ip=10.62.218.239 src_geo=yCiceroi source_port=166 source_user=reh translated_dest_ip=10.73.172.186 translated_dest_port=3510 translated_ip_protocol=itte translated_route_domain=niamquis translated_source_ip=10.203.193.134 translated_source_port=6251 translated_vlan=riosa vlan=7445", - "fileset.name": "bigipafm", - "host.ip": "10.218.15.164", - "host.name": "borios1067.www5.home", - "input.type": "log", - "log.level": "very-high", - "log.offset": 72900, - "network.protocol": "rdp", - "observer.product": "gel", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2031", - "related.hosts": [ - "borios1067.www5.home" - ], - "related.ip": [ - "10.203.193.134", - "10.218.15.164", - "10.62.218.239", - "10.73.172.186" - ], - "related.user": [ - "reh" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "ntNeque", - "rsa.misc.event_type": "eritinvo", - "rsa.misc.obj_name": "Malo", - "rsa.misc.policy_name": "onse", - "rsa.misc.reference_id": "agn", - "rsa.misc.rule_name": "veritat", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.2031", - "rsa.network.alias_host": [ - "borios1067.www5.home" - ], - "rsa.network.vlan": 7445, - "rsa.time.event_time_str": "Apr", - "rule.name": "veritat", - "service.type": "f5", - "source.geo.country_name": "yCiceroi", - "source.ip": "10.62.218.239", - "source.nat.ip": "10.203.193.134", - "source.nat.port": 6251, - "source.port": 166, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "reh" - }, - { - "destination.geo.country_name": "quaeabi", - "destination.nat.ip": "10.136.211.234", - "destination.nat.port": 4126, - "destination.port": 5701, - "event.action": "Established", - "event.code": "uovolup", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ore ptatema poriss2289.localdomain luptat ficiad saquaea [F5@archi acl_policy_name=caboNe acl_policy_type=ptate acl_rule_name=enimips action=Established hostname=msequ323.www.example bigip_mgmt_ip=10.60.20.76 context_name=seq context_type=uae date_time=May 13 2019 21:45:57 dest_ip=10.244.241.67 dst_geo=quaeabi dest_port=5701 device_product=ost device_vendor=mave device_version=1.2555 drop_reason=aev errdefs_msgno=uovolup errdefs_msg_name=tMaloru flow_id=rum ip_protocol=ipv6-icmp severity=very-high partition_name=ptassita route_domain=ionemul sa_translation_pool=orema sa_translation_type=its source_ip=10.10.46.43 src_geo=stiaec source_port=7346 source_user=nev translated_dest_ip=10.136.211.234 translated_dest_port=4126 translated_ip_protocol=lamcor translated_route_domain=rorsitv translated_source_ip=10.131.127.113 translated_source_port=853 translated_vlan=iamqu vlan=1324", - "fileset.name": "bigipafm", - "host.ip": "10.60.20.76", - "host.name": "msequ323.www.example", - "input.type": "log", - "log.level": "very-high", - "log.offset": 73773, - "network.protocol": "ipv6-icmp", - "observer.product": "ost", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2555", - "related.hosts": [ - "msequ323.www.example" - ], - "related.ip": [ - "10.10.46.43", - "10.131.127.113", - "10.136.211.234", - "10.60.20.76" - ], - "related.user": [ - "nev" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "seq", - "rsa.misc.event_type": "tMaloru", - "rsa.misc.obj_name": "archi", - "rsa.misc.policy_name": "caboNe", - "rsa.misc.reference_id": "uovolup", - "rsa.misc.rule_name": "enimips", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.2555", - "rsa.network.alias_host": [ - "msequ323.www.example" - ], - "rsa.network.vlan": 1324, - "rsa.time.event_time_str": "May", - "rule.name": "enimips", - "service.type": "f5", - "source.geo.country_name": "stiaec", - "source.ip": "10.10.46.43", - "source.nat.ip": "10.131.127.113", - "source.nat.port": 853, - "source.port": 7346, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "nev" - }, - { - "destination.geo.country_name": "fdeFini", - "destination.nat.ip": "10.187.237.220", - "destination.nat.port": 7744, - "destination.port": 1295, - "event.action": "Closed", - "event.code": "rinc", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "mwrit dminimve madminim5473.mail.example reeuf orinrepr tinvo [F5@oru acl_policy_name=ainc acl_policy_type=aeab acl_rule_name=iat action=Closed hostname=tdolorem813.internal.host bigip_mgmt_ip=10.50.177.151 context_name=rsitam context_type=aliqui date_time=May 28 2019 04:48:31 dest_ip=10.206.65.159 dst_geo=fdeFini dest_port=1295 device_product=eetdolo device_vendor=issuscip device_version=1.3291 drop_reason=tqu errdefs_msgno=rinc errdefs_msg_name=hender flow_id=sBonor ip_protocol=rdp severity=high partition_name=ercitati route_domain=lapa sa_translation_pool=enia sa_translation_type=atis source_ip=10.233.181.250 src_geo=isiuta source_port=2868 source_user=ugiatq translated_dest_ip=10.187.237.220 translated_dest_port=7744 translated_ip_protocol=eumfu translated_route_domain=remap translated_source_ip=10.248.0.74 translated_source_port=6349 translated_vlan=tru vlan=2520", - "fileset.name": "bigipafm", - "host.ip": "10.50.177.151", - "host.name": "tdolorem813.internal.host", - "input.type": "log", - "log.level": "high", - "log.offset": 74658, - "network.protocol": "rdp", - "observer.product": "eetdolo", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3291", - "related.hosts": [ - "tdolorem813.internal.host" - ], - "related.ip": [ - "10.187.237.220", - "10.233.181.250", - "10.248.0.74", - "10.50.177.151" - ], - "related.user": [ - "ugiatq" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "rsitam", - "rsa.misc.event_type": "hender", - "rsa.misc.obj_name": "oru", - "rsa.misc.policy_name": "ainc", - "rsa.misc.reference_id": "rinc", - "rsa.misc.rule_name": "iat", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.3291", - "rsa.network.alias_host": [ - "tdolorem813.internal.host" - ], - "rsa.network.vlan": 2520, - "rsa.time.event_time_str": "May", - "rule.name": "iat", - "service.type": "f5", - "source.geo.country_name": "isiuta", - "source.ip": "10.233.181.250", - "source.nat.ip": "10.248.0.74", - "source.nat.port": 6349, - "source.port": 2868, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ugiatq" - }, - { - "destination.geo.country_name": "olab", - "destination.nat.ip": "10.96.223.46", - "destination.nat.port": 3654, - "destination.port": 629, - "event.action": "Established", - "event.code": "ela", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "isautem eiusm assit1598.www5.invalid archite eruntm iades [F5@mremape acl_policy_name=nimad acl_policy_type=ionemu acl_rule_name=nul action=Established hostname=volupt4626.internal.test bigip_mgmt_ip=10.189.43.11 context_name=asper context_type=eeu date_time=Jun 11 2019 11:51:06 dest_ip=10.193.169.102 dst_geo=olab dest_port=629 device_product=olore device_vendor=mSecti device_version=1.2859 drop_reason=idid errdefs_msgno=ela errdefs_msg_name=fugits flow_id=litseddo ip_protocol=igmp severity=medium partition_name=ptasn route_domain=amrem sa_translation_pool=umdolor sa_translation_type=iamq source_ip=10.248.248.120 src_geo=ationemu source_port=1282 source_user=iatn translated_dest_ip=10.96.223.46 translated_dest_port=3654 translated_ip_protocol=pern translated_route_domain=ptasn translated_source_ip=10.80.129.81 translated_source_port=4827 translated_vlan=tat vlan=5084", - "fileset.name": "bigipafm", - "host.ip": "10.189.43.11", - "host.name": "volupt4626.internal.test", - "input.type": "log", - "log.level": "medium", - "log.offset": 75539, - "network.protocol": "igmp", - "observer.product": "olore", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2859", - "related.hosts": [ - "volupt4626.internal.test" - ], - "related.ip": [ - "10.189.43.11", - "10.248.248.120", - "10.80.129.81", - "10.96.223.46" - ], - "related.user": [ - "iatn" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "asper", - "rsa.misc.event_type": "fugits", - "rsa.misc.obj_name": "mremape", - "rsa.misc.policy_name": "nimad", - "rsa.misc.reference_id": "ela", - "rsa.misc.rule_name": "nul", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.2859", - "rsa.network.alias_host": [ - "volupt4626.internal.test" - ], - "rsa.network.vlan": 5084, - "rsa.time.event_time_str": "Jun", - "rule.name": "nul", - "service.type": "f5", - "source.geo.country_name": "ationemu", - "source.ip": "10.248.248.120", - "source.nat.ip": "10.80.129.81", - "source.nat.port": 4827, - "source.port": 1282, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "iatn" - }, - { - "destination.geo.country_name": "metco", - "destination.nat.ip": "10.173.114.63", - "destination.nat.port": 5877, - "destination.port": 4740, - "event.action": "Closed", - "event.code": "radip", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "eruntmo lumdolo urmagnid2749.api.host imip taspe siutaliq [F5@turadipi acl_policy_name=tMalo acl_policy_type=veni acl_rule_name=rspi action=Closed hostname=ntium5103.www5.localhost bigip_mgmt_ip=10.66.106.186 context_name=uatD context_type=reh date_time=Jun 25 2019 18:53:40 dest_ip=10.36.14.238 dst_geo=metco dest_port=4740 device_product=ilmoles device_vendor=xeaco device_version=1.1910 drop_reason=ccaecat errdefs_msgno=radip errdefs_msg_name=secil flow_id=totamr ip_protocol=udp severity=very-high partition_name=iciat route_domain=uira sa_translation_pool=orio sa_translation_type=mseq source_ip=10.102.109.199 src_geo=iono source_port=2061 source_user=tNequ translated_dest_ip=10.173.114.63 translated_dest_port=5877 translated_ip_protocol=tatisetq translated_route_domain=eabilloi translated_source_ip=10.91.115.139 translated_source_port=412 translated_vlan=eroi vlan=2077", - "fileset.name": "bigipafm", - "host.ip": "10.66.106.186", - "host.name": "ntium5103.www5.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 76419, - "network.protocol": "udp", - "observer.product": "ilmoles", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.1910", - "related.hosts": [ - "ntium5103.www5.localhost" - ], - "related.ip": [ - "10.102.109.199", - "10.173.114.63", - "10.66.106.186", - "10.91.115.139" - ], - "related.user": [ - "tNequ" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "uatD", - "rsa.misc.event_type": "secil", - "rsa.misc.obj_name": "turadipi", - "rsa.misc.policy_name": "tMalo", - "rsa.misc.reference_id": "radip", - "rsa.misc.rule_name": "rspi", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.1910", - "rsa.network.alias_host": [ - "ntium5103.www5.localhost" - ], - "rsa.network.vlan": 2077, - "rsa.time.event_time_str": "Jun", - "rule.name": "rspi", - "service.type": "f5", - "source.geo.country_name": "iono", - "source.ip": "10.102.109.199", - "source.nat.ip": "10.91.115.139", - "source.nat.port": 412, - "source.port": 2061, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tNequ" - }, - { - "destination.geo.country_name": "iratio", - "destination.nat.ip": "10.0.175.17", - "destination.nat.port": 5236, - "destination.port": 7700, - "event.action": "Drop", - "event.code": "iur", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "riatur amrema illum2978.internal.home rumetMa entor urere [F5@involu acl_policy_name=qui acl_policy_type=aliqu acl_rule_name=sita action=Drop hostname=orpori3334.www.local bigip_mgmt_ip=10.198.157.122 context_name=ncu context_type=quatu date_time=Jul 10 2019 01:56:14 dest_ip=10.239.90.72 dst_geo=iratio dest_port=7700 device_product=its device_vendor=agn device_version=1.3690 drop_reason=ntmo errdefs_msgno=iur errdefs_msg_name=aboNemo flow_id=tsedquia ip_protocol=udp severity=very-high partition_name=tatiset route_domain=enim sa_translation_pool=gnido sa_translation_type=iamq source_ip=10.159.155.88 src_geo=uisa source_port=7034 source_user=iquipex translated_dest_ip=10.0.175.17 translated_dest_port=5236 translated_ip_protocol=tempori translated_route_domain=sedquian translated_source_ip=10.221.223.127 translated_source_port=2687 translated_vlan=ira vlan=3007", - "fileset.name": "bigipafm", - "host.ip": "10.198.157.122", - "host.name": "orpori3334.www.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 77301, - "network.protocol": "udp", - "observer.product": "its", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3690", - "related.hosts": [ - "orpori3334.www.local" - ], - "related.ip": [ - "10.0.175.17", - "10.159.155.88", - "10.198.157.122", - "10.221.223.127" - ], - "related.user": [ - "iquipex" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Drop" - ], - "rsa.misc.context": "ncu", - "rsa.misc.event_type": "aboNemo", - "rsa.misc.obj_name": "involu", - "rsa.misc.policy_name": "qui", - "rsa.misc.reference_id": "iur", - "rsa.misc.rule_name": "sita", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3690", - "rsa.network.alias_host": [ - "orpori3334.www.local" - ], - "rsa.network.vlan": 3007, - "rsa.time.event_time_str": "Jul", - "rule.name": "sita", - "service.type": "f5", - "source.geo.country_name": "uisa", - "source.ip": "10.159.155.88", - "source.nat.ip": "10.221.223.127", - "source.nat.port": 2687, - "source.port": 7034, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "iquipex" - }, - { - "destination.geo.country_name": "chitect", - "destination.nat.ip": "10.252.136.130", - "destination.nat.port": 5601, - "destination.port": 5316, - "event.action": "Established", - "event.code": "ueporr", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "idolor umdo sequatu7142.internal.corp ipsaqu asun rsitam [F5@magn acl_policy_name=amcola acl_policy_type=eumiurer acl_rule_name=umf action=Established hostname=equu7361.www5.localdomain bigip_mgmt_ip=10.30.20.187 context_name=rsinto context_type=nonnumqu date_time=Jul 24 2019 08:58:48 dest_ip=10.103.47.100 dst_geo=chitect dest_port=5316 device_product=fug device_vendor=ulpaq device_version=1.6302 drop_reason=piscivel errdefs_msgno=ueporr errdefs_msg_name=udex flow_id=ipexeac ip_protocol=tcp severity=low partition_name=isci route_domain=archi sa_translation_pool=rsitame sa_translation_type=qui source_ip=10.7.212.201 src_geo=ion source_port=949 source_user=ugiat translated_dest_ip=10.252.136.130 translated_dest_port=5601 translated_ip_protocol=expl translated_route_domain=animi translated_source_ip=10.189.70.237 translated_source_port=1457 translated_vlan=tnul vlan=24", - "fileset.name": "bigipafm", - "host.ip": "10.30.20.187", - "host.name": "equu7361.www5.localdomain", - "input.type": "log", - "log.level": "low", - "log.offset": 78172, - "network.protocol": "tcp", - "observer.product": "fug", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.6302", - "related.hosts": [ - "equu7361.www5.localdomain" - ], - "related.ip": [ - "10.189.70.237", - "10.252.136.130", - "10.30.20.187", - "10.7.212.201" - ], - "related.user": [ - "ugiat" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "rsinto", - "rsa.misc.event_type": "udex", - "rsa.misc.obj_name": "magn", - "rsa.misc.policy_name": "amcola", - "rsa.misc.reference_id": "ueporr", - "rsa.misc.rule_name": "umf", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.6302", - "rsa.network.alias_host": [ - "equu7361.www5.localdomain" - ], - "rsa.network.vlan": 24, - "rsa.time.event_time_str": "Jul", - "rule.name": "umf", - "service.type": "f5", - "source.geo.country_name": "ion", - "source.ip": "10.7.212.201", - "source.nat.ip": "10.189.70.237", - "source.nat.port": 1457, - "source.port": 949, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ugiat" - }, - { - "destination.geo.country_name": "imadmi", - "destination.nat.ip": "10.102.109.194", - "destination.nat.port": 2324, - "destination.port": 2642, - "event.action": "Established", - "event.code": "agn", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "radip amremap dolorsit64.www.local uredo uamni nisi [F5@onsecte acl_policy_name=iono acl_policy_type=secillum acl_rule_name=sequatD action=Established hostname=tse2979.internal.localhost bigip_mgmt_ip=10.242.121.165 context_name=aut context_type=eriti date_time=Aug 07 2019 16:01:23 dest_ip=10.88.229.78 dst_geo=imadmi dest_port=2642 device_product=tevelite device_vendor=cto device_version=1.2037 drop_reason=mquiado errdefs_msgno=agn errdefs_msg_name=dip flow_id=urmag ip_protocol=tcp severity=high partition_name=laboreet route_domain=tutlabo sa_translation_pool=incid sa_translation_type=der source_ip=10.83.105.69 src_geo=usm source_port=2153 source_user=mni translated_dest_ip=10.102.109.194 translated_dest_port=2324 translated_ip_protocol=nor translated_route_domain=saut translated_source_ip=10.60.224.93 translated_source_port=1508 translated_vlan=deomnis vlan=354", - "fileset.name": "bigipafm", - "host.ip": "10.242.121.165", - "host.name": "tse2979.internal.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 79051, - "network.protocol": "tcp", - "observer.product": "tevelite", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2037", - "related.hosts": [ - "tse2979.internal.localhost" - ], - "related.ip": [ - "10.102.109.194", - "10.242.121.165", - "10.60.224.93", - "10.83.105.69" - ], - "related.user": [ - "mni" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "aut", - "rsa.misc.event_type": "dip", - "rsa.misc.obj_name": "onsecte", - "rsa.misc.policy_name": "iono", - "rsa.misc.reference_id": "agn", - "rsa.misc.rule_name": "sequatD", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.2037", - "rsa.network.alias_host": [ - "tse2979.internal.localhost" - ], - "rsa.network.vlan": 354, - "rsa.time.event_time_str": "Aug", - "rule.name": "sequatD", - "service.type": "f5", - "source.geo.country_name": "usm", - "source.ip": "10.83.105.69", - "source.nat.ip": "10.60.224.93", - "source.nat.port": 1508, - "source.port": 2153, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "mni" - }, - { - "destination.geo.country_name": "tenbyCi", - "destination.nat.ip": "10.181.134.69", - "destination.nat.port": 551, - "destination.port": 4371, - "event.action": "Accept", - "event.code": "tion", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "tla nimve edutpe1255.internal.lan nimadm cepte paquioff [F5@ictasun acl_policy_name=iumto acl_policy_type=ciun acl_rule_name=prehe action=Accept hostname=uisnostr2390.mail.domain bigip_mgmt_ip=10.251.167.219 context_name=eaco context_type=oremeu date_time=Aug 21 2019 23:03:57 dest_ip=10.14.251.18 dst_geo=tenbyCi dest_port=4371 device_product=citation device_vendor=spernatu device_version=1.7314 drop_reason=giatq errdefs_msgno=tion errdefs_msg_name=tNeque flow_id=uidolore ip_protocol=rdp severity=medium partition_name=usB route_domain=magnaali sa_translation_pool=istenatu sa_translation_type=roqui source_ip=10.17.20.93 src_geo=eritqu source_port=4368 source_user=Uteni translated_dest_ip=10.181.134.69 translated_dest_port=551 translated_ip_protocol=norum translated_route_domain=emUten translated_source_ip=10.219.174.45 translated_source_port=4055 translated_vlan=idolo vlan=968", - "fileset.name": "bigipafm", - "host.ip": "10.251.167.219", - "host.name": "uisnostr2390.mail.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 79926, - "network.protocol": "rdp", - "observer.product": "citation", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7314", - "related.hosts": [ - "uisnostr2390.mail.domain" - ], - "related.ip": [ - "10.17.20.93", - "10.181.134.69", - "10.219.174.45", - "10.251.167.219" - ], - "related.user": [ - "Uteni" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "eaco", - "rsa.misc.event_type": "tNeque", - "rsa.misc.obj_name": "ictasun", - "rsa.misc.policy_name": "iumto", - "rsa.misc.reference_id": "tion", - "rsa.misc.rule_name": "prehe", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.7314", - "rsa.network.alias_host": [ - "uisnostr2390.mail.domain" - ], - "rsa.network.vlan": 968, - "rsa.time.event_time_str": "Aug", - "rule.name": "prehe", - "service.type": "f5", - "source.geo.country_name": "eritqu", - "source.ip": "10.17.20.93", - "source.nat.ip": "10.219.174.45", - "source.nat.port": 4055, - "source.port": 4368, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "Uteni" - }, - { - "destination.geo.country_name": "elaud", - "destination.nat.ip": "10.28.233.253", - "destination.nat.port": 1159, - "destination.port": 4916, - "event.action": "Accept", - "event.code": "iti", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "mmodicon nisis edquia4523.www.host remap ntium veniamqu [F5@equat acl_policy_name=reeu acl_policy_type=atemacc acl_rule_name=rsitvolu action=Accept hostname=luptate4811.mail.example bigip_mgmt_ip=10.30.117.82 context_name=destlabo context_type=fficia date_time=Sep 05 2019 06:06:31 dest_ip=10.245.75.229 dst_geo=elaud dest_port=4916 device_product=eaqueip device_vendor=emUten device_version=1.596 drop_reason=itseddoe errdefs_msgno=iti errdefs_msg_name=evitaedi flow_id=ionulamc ip_protocol=tcp severity=high partition_name=culp route_domain=Ciceroin sa_translation_pool=aeco sa_translation_type=olores source_ip=10.223.99.90 src_geo=adminim source_port=4324 source_user=numqua translated_dest_ip=10.28.233.253 translated_dest_port=1159 translated_ip_protocol=mUten translated_route_domain=eursint translated_source_ip=10.37.14.20 translated_source_port=6531 translated_vlan=teurs vlan=4919", - "fileset.name": "bigipafm", - "host.ip": "10.30.117.82", - "host.name": "luptate4811.mail.example", - "input.type": "log", - "log.level": "high", - "log.offset": 80814, - "network.protocol": "tcp", - "observer.product": "eaqueip", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.596", - "related.hosts": [ - "luptate4811.mail.example" - ], - "related.ip": [ - "10.223.99.90", - "10.28.233.253", - "10.30.117.82", - "10.37.14.20" - ], - "related.user": [ - "numqua" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Accept" - ], - "rsa.misc.context": "destlabo", - "rsa.misc.event_type": "evitaedi", - "rsa.misc.obj_name": "equat", - "rsa.misc.policy_name": "reeu", - "rsa.misc.reference_id": "iti", - "rsa.misc.rule_name": "rsitvolu", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.596", - "rsa.network.alias_host": [ - "luptate4811.mail.example" - ], - "rsa.network.vlan": 4919, - "rsa.time.event_time_str": "Sep", - "rule.name": "rsitvolu", - "service.type": "f5", - "source.geo.country_name": "adminim", - "source.ip": "10.223.99.90", - "source.nat.ip": "10.37.14.20", - "source.nat.port": 6531, - "source.port": 4324, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "numqua" - }, - { - "destination.geo.country_name": "tess", - "destination.nat.ip": "10.57.85.113", - "destination.nat.port": 1024, - "destination.port": 4686, - "event.action": "Closed", - "event.code": "rainc", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "aaliq nos uaUteni562.www.test deF dutpe tseddoei [F5@byCi acl_policy_name=odic acl_policy_type=chitecto acl_rule_name=nimadm action=Closed hostname=lites1614.www.corp bigip_mgmt_ip=10.125.20.22 context_name=olu context_type=ectet date_time=Sep 19 2019 13:09:05 dest_ip=10.121.189.113 dst_geo=tess dest_port=4686 device_product=xeacom device_vendor=adminim device_version=1.95 drop_reason=henderi errdefs_msgno=rainc errdefs_msg_name=dminim flow_id=sse ip_protocol=tcp severity=high partition_name=umexe route_domain=Sedu sa_translation_pool=tetur sa_translation_type=ern source_ip=10.50.61.114 src_geo=nvento source_port=649 source_user=qua translated_dest_ip=10.57.85.113 translated_dest_port=1024 translated_ip_protocol=itquii translated_route_domain=psu translated_source_ip=10.8.32.17 translated_source_port=3788 translated_vlan=nem vlan=5883", - "fileset.name": "bigipafm", - "host.ip": "10.125.20.22", - "host.name": "lites1614.www.corp", - "input.type": "log", - "log.level": "high", - "log.offset": 81706, - "network.protocol": "tcp", - "observer.product": "xeacom", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.95", - "related.hosts": [ - "lites1614.www.corp" - ], - "related.ip": [ - "10.125.20.22", - "10.50.61.114", - "10.57.85.113", - "10.8.32.17" - ], - "related.user": [ - "qua" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "olu", - "rsa.misc.event_type": "dminim", - "rsa.misc.obj_name": "byCi", - "rsa.misc.policy_name": "odic", - "rsa.misc.reference_id": "rainc", - "rsa.misc.rule_name": "nimadm", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.95", - "rsa.network.alias_host": [ - "lites1614.www.corp" - ], - "rsa.network.vlan": 5883, - "rsa.time.event_time_str": "Sep", - "rule.name": "nimadm", - "service.type": "f5", - "source.geo.country_name": "nvento", - "source.ip": "10.50.61.114", - "source.nat.ip": "10.8.32.17", - "source.nat.port": 3788, - "source.port": 649, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "qua" - }, - { - "destination.geo.country_name": "voluptat", - "destination.nat.ip": "10.113.78.101", - "destination.nat.port": 2707, - "destination.port": 1549, - "event.action": "Closed", - "event.code": "tam", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "sitasper agni ivelit1640.internal.lan iscive prehende volup [F5@nimi acl_policy_name=niamqu acl_policy_type=uioffi acl_rule_name=suntin action=Closed hostname=lorinrep7686.mail.corp bigip_mgmt_ip=10.200.28.55 context_name=ineavol context_type=abor date_time=Oct 03 2019 20:11:40 dest_ip=10.232.122.152 dst_geo=voluptat dest_port=1549 device_product=ipi device_vendor=lamcor device_version=1.3064 drop_reason=litesse errdefs_msgno=tam errdefs_msg_name=uovo flow_id=scivelit ip_protocol=icmp severity=low partition_name=empo route_domain=apa sa_translation_pool=colab sa_translation_type=sistenat source_ip=10.215.224.27 src_geo=Sedutper source_port=6726 source_user=ficiade translated_dest_ip=10.113.78.101 translated_dest_port=2707 translated_ip_protocol=amqua translated_route_domain=nsequatu translated_source_ip=10.181.63.82 translated_source_port=168 translated_vlan=tse vlan=4029", - "fileset.name": "bigipafm", - "host.ip": "10.200.28.55", - "host.name": "lorinrep7686.mail.corp", - "input.type": "log", - "log.level": "low", - "log.offset": 82553, - "network.protocol": "icmp", - "observer.product": "ipi", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.3064", - "related.hosts": [ - "lorinrep7686.mail.corp" - ], - "related.ip": [ - "10.113.78.101", - "10.181.63.82", - "10.200.28.55", - "10.215.224.27" - ], - "related.user": [ - "ficiade" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "ineavol", - "rsa.misc.event_type": "uovo", - "rsa.misc.obj_name": "nimi", - "rsa.misc.policy_name": "niamqu", - "rsa.misc.reference_id": "tam", - "rsa.misc.rule_name": "suntin", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.3064", - "rsa.network.alias_host": [ - "lorinrep7686.mail.corp" - ], - "rsa.network.vlan": 4029, - "rsa.time.event_time_str": "Oct", - "rule.name": "suntin", - "service.type": "f5", - "source.geo.country_name": "Sedutper", - "source.ip": "10.215.224.27", - "source.nat.ip": "10.181.63.82", - "source.nat.port": 168, - "source.port": 6726, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ficiade" - }, - { - "destination.geo.country_name": "nsec", - "destination.nat.ip": "10.139.20.223", - "destination.nat.port": 114, - "destination.port": 6720, - "event.action": "Established", - "event.code": "nde", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ueip amvo dolorsi306.www5.local tten erit asiarch [F5@tob acl_policy_name=tiae acl_policy_type=imipsamv acl_rule_name=doeiu action=Established hostname=nderit6272.mail.example bigip_mgmt_ip=10.177.14.106 context_name=natuser context_type=olupt date_time=Oct 18 2019 03:14:14 dest_ip=10.239.142.115 dst_geo=nsec dest_port=6720 device_product=siarchi device_vendor=etq device_version=1.4522 drop_reason=archit errdefs_msgno=nde errdefs_msg_name=tNequepo flow_id=byCicer ip_protocol=ipv6 severity=medium partition_name=ipit route_domain=tdolorem sa_translation_pool=nderitin sa_translation_type=mquiado source_ip=10.169.95.128 src_geo=reeufugi source_port=7737 source_user=ofd translated_dest_ip=10.139.20.223 translated_dest_port=114 translated_ip_protocol=porincid translated_route_domain=tisetqu translated_source_ip=10.243.43.168 translated_source_port=2110 translated_vlan=ehenderi vlan=2215", - "fileset.name": "bigipafm", - "host.ip": "10.177.14.106", - "host.name": "nderit6272.mail.example", - "input.type": "log", - "log.level": "medium", - "log.offset": 83438, - "network.protocol": "ipv6", - "observer.product": "siarchi", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.4522", - "related.hosts": [ - "nderit6272.mail.example" - ], - "related.ip": [ - "10.139.20.223", - "10.169.95.128", - "10.177.14.106", - "10.243.43.168" - ], - "related.user": [ - "ofd" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "natuser", - "rsa.misc.event_type": "tNequepo", - "rsa.misc.obj_name": "tob", - "rsa.misc.policy_name": "tiae", - "rsa.misc.reference_id": "nde", - "rsa.misc.rule_name": "doeiu", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.4522", - "rsa.network.alias_host": [ - "nderit6272.mail.example" - ], - "rsa.network.vlan": 2215, - "rsa.time.event_time_str": "Oct", - "rule.name": "doeiu", - "service.type": "f5", - "source.geo.country_name": "reeufugi", - "source.ip": "10.169.95.128", - "source.nat.ip": "10.243.43.168", - "source.nat.port": 2110, - "source.port": 7737, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ofd" - }, - { - "destination.geo.country_name": "orsit", - "destination.nat.ip": "10.39.100.88", - "destination.nat.port": 5195, - "destination.port": 3315, - "event.action": "Established", - "event.code": "rroqui", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ipsu iden oreseo1541.mail.domain boriosam lites col [F5@litsedd acl_policy_name=mnis acl_policy_type=ainci acl_rule_name=aturve action=Established hostname=ntu1279.mail.lan bigip_mgmt_ip=10.92.168.198 context_name=rume context_type=uptate date_time=Nov 01 2019 10:16:48 dest_ip=10.115.225.57 dst_geo=orsit dest_port=3315 device_product=mnis device_vendor=tametco device_version=1.7456 drop_reason=inc errdefs_msgno=rroqui errdefs_msg_name=amr flow_id=mfug ip_protocol=tcp severity=low partition_name=mid route_domain=henderi sa_translation_pool=consec sa_translation_type=dquia source_ip=10.90.93.4 src_geo=rehe source_port=3382 source_user=adminima translated_dest_ip=10.39.100.88 translated_dest_port=5195 translated_ip_protocol=lup translated_route_domain=rsi translated_source_ip=10.18.176.44 translated_source_port=7284 translated_vlan=Utenimad vlan=4305", - "fileset.name": "bigipafm", - "host.ip": "10.92.168.198", - "host.name": "ntu1279.mail.lan", - "input.type": "log", - "log.level": "low", - "log.offset": 84332, - "network.protocol": "tcp", - "observer.product": "mnis", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7456", - "related.hosts": [ - "ntu1279.mail.lan" - ], - "related.ip": [ - "10.18.176.44", - "10.39.100.88", - "10.90.93.4", - "10.92.168.198" - ], - "related.user": [ - "adminima" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Enable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Established" - ], - "rsa.misc.context": "rume", - "rsa.misc.event_type": "amr", - "rsa.misc.obj_name": "litsedd", - "rsa.misc.policy_name": "mnis", - "rsa.misc.reference_id": "rroqui", - "rsa.misc.rule_name": "aturve", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.7456", - "rsa.network.alias_host": [ - "ntu1279.mail.lan" - ], - "rsa.network.vlan": 4305, - "rsa.time.event_time_str": "Nov", - "rule.name": "aturve", - "service.type": "f5", - "source.geo.country_name": "rehe", - "source.ip": "10.90.93.4", - "source.nat.ip": "10.18.176.44", - "source.nat.port": 7284, - "source.port": 3382, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "adminima" - }, - { - "destination.geo.country_name": "enimip", - "destination.nat.ip": "10.193.43.135", - "destination.nat.port": 4650, - "destination.port": 3957, - "event.action": "Reject", - "event.code": "empori", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "Bon amquisno mullam6505.www.localhost siarch oloremi ididu [F5@uov acl_policy_name=ncidid acl_policy_type=audantiu acl_rule_name=lmolest action=Reject hostname=essequam1161.domain bigip_mgmt_ip=10.49.68.8 context_name=temUte context_type=idest date_time=Nov 15 2019 17:19:22 dest_ip=10.8.247.249 dst_geo=enimip dest_port=3957 device_product=ataevit device_vendor=ficiad device_version=1.2909 drop_reason=taspe errdefs_msgno=empori errdefs_msg_name=mipsum flow_id=tium ip_protocol=tcp severity=very-high partition_name=ota route_domain=boriosa sa_translation_pool=eprehen sa_translation_type=rehen source_ip=10.163.203.191 src_geo=exeacom source_port=2599 source_user=tlab translated_dest_ip=10.193.43.135 translated_dest_port=4650 translated_ip_protocol=iaeconse translated_route_domain=onevol translated_source_ip=10.173.13.179 translated_source_port=1211 translated_vlan=ptasn vlan=3791", - "fileset.name": "bigipafm", - "host.ip": "10.49.68.8", - "host.name": "essequam1161.domain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 85192, - "network.protocol": "tcp", - "observer.product": "ataevit", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.2909", - "related.hosts": [ - "essequam1161.domain" - ], - "related.ip": [ - "10.163.203.191", - "10.173.13.179", - "10.193.43.135", - "10.49.68.8" - ], - "related.user": [ - "tlab" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Reject" - ], - "rsa.misc.context": "temUte", - "rsa.misc.event_type": "mipsum", - "rsa.misc.obj_name": "uov", - "rsa.misc.policy_name": "ncidid", - "rsa.misc.reference_id": "empori", - "rsa.misc.rule_name": "lmolest", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.2909", - "rsa.network.alias_host": [ - "essequam1161.domain" - ], - "rsa.network.vlan": 3791, - "rsa.time.event_time_str": "Nov", - "rule.name": "lmolest", - "service.type": "f5", - "source.geo.country_name": "exeacom", - "source.ip": "10.163.203.191", - "source.nat.ip": "10.173.13.179", - "source.nat.port": 1211, - "source.port": 2599, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "tlab" - }, - { - "destination.geo.country_name": "Loremips", - "destination.nat.ip": "10.209.226.7", - "destination.nat.port": 7745, - "destination.port": 4361, - "event.action": "Closed", - "event.code": "rror", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "ctetur amqui itatise2264.invalid lup cipitla niam [F5@mullamc acl_policy_name=umtota acl_policy_type=ssecil acl_rule_name=xplic action=Closed hostname=cipitl2184.localdomain bigip_mgmt_ip=10.240.47.113 context_name=uisnost context_type=snul date_time=Nov 30 2019 00:21:57 dest_ip=10.191.241.249 dst_geo=Loremips dest_port=4361 device_product=tiset device_vendor=ciade device_version=1.7726 drop_reason=equ errdefs_msgno=rror errdefs_msg_name=Exce flow_id=uae ip_protocol=ggp severity=high partition_name=umdol route_domain=nseq sa_translation_pool=autodita sa_translation_type=loreme source_ip=10.84.64.28 src_geo=par source_port=3938 source_user=ull translated_dest_ip=10.209.226.7 translated_dest_port=7745 translated_ip_protocol=aeabi translated_route_domain=ore translated_source_ip=10.31.147.51 translated_source_port=7780 translated_vlan=ptate vlan=3154", - "fileset.name": "bigipafm", - "host.ip": "10.240.47.113", - "host.name": "cipitl2184.localdomain", - "input.type": "log", - "log.level": "high", - "log.offset": 86081, - "network.protocol": "ggp", - "observer.product": "tiset", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.7726", - "related.hosts": [ - "cipitl2184.localdomain" - ], - "related.ip": [ - "10.209.226.7", - "10.240.47.113", - "10.31.147.51", - "10.84.64.28" - ], - "related.user": [ - "ull" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "uisnost", - "rsa.misc.event_type": "Exce", - "rsa.misc.obj_name": "mullamc", - "rsa.misc.policy_name": "umtota", - "rsa.misc.reference_id": "rror", - "rsa.misc.rule_name": "xplic", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.7726", - "rsa.network.alias_host": [ - "cipitl2184.localdomain" - ], - "rsa.network.vlan": 3154, - "rsa.time.event_time_str": "Nov", - "rule.name": "xplic", - "service.type": "f5", - "source.geo.country_name": "par", - "source.ip": "10.84.64.28", - "source.nat.ip": "10.31.147.51", - "source.nat.port": 7780, - "source.port": 3938, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "ull" - }, - { - "destination.geo.country_name": "oremipsu", - "destination.nat.ip": "10.86.1.244", - "destination.nat.port": 7101, - "destination.port": 5644, - "event.action": "Closed", - "event.code": "tateve", - "event.dataset": "f5.bigipafm", - "event.module": "f5", - "event.original": "fugit dantiu ntutla1447.invalid strude rautodi Loremips [F5@mestqui acl_policy_name=tect acl_policy_type=odtem acl_rule_name=ite action=Closed hostname=item3647.home bigip_mgmt_ip=10.32.20.4 context_name=olupta context_type=dents date_time=Dec 14 2019 07:24:31 dest_ip=10.166.40.137 dst_geo=oremipsu dest_port=5644 device_product=idolor device_vendor=tionem device_version=1.292 drop_reason=oinB errdefs_msgno=tateve errdefs_msg_name=rsitvo flow_id=enatuser ip_protocol=tcp severity=high partition_name=sistena route_domain=reetdolo sa_translation_pool=psam sa_translation_type=litseddo source_ip=10.225.189.229 src_geo=odtem source_port=2287 source_user=odtemp translated_dest_ip=10.86.1.244 translated_dest_port=7101 translated_ip_protocol=rinci translated_route_domain=uamestqu translated_source_ip=10.52.13.192 translated_source_port=4714 translated_vlan=remagna vlan=439", - "fileset.name": "bigipafm", - "host.ip": "10.32.20.4", - "host.name": "item3647.home", - "input.type": "log", - "log.level": "high", - "log.offset": 86941, - "network.protocol": "tcp", - "observer.product": "idolor", - "observer.type": "Firewall", - "observer.vendor": "F5", - "observer.version": "1.292", - "related.hosts": [ - "item3647.home" - ], - "related.ip": [ - "10.225.189.229", - "10.32.20.4", - "10.52.13.192", - "10.86.1.244" - ], - "related.user": [ - "odtemp" - ], - "rsa.internal.messageid": "BIGIP_AFM", - "rsa.investigations.ec_activity": "Disable", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "Communication", - "rsa.misc.action": [ - "Closed" - ], - "rsa.misc.context": "olupta", - "rsa.misc.event_type": "rsitvo", - "rsa.misc.obj_name": "mestqui", - "rsa.misc.policy_name": "tect", - "rsa.misc.reference_id": "tateve", - "rsa.misc.rule_name": "ite", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.292", - "rsa.network.alias_host": [ - "item3647.home" - ], - "rsa.network.vlan": 439, - "rsa.time.event_time_str": "Dec", - "rule.name": "ite", - "service.type": "f5", - "source.geo.country_name": "odtem", - "source.ip": "10.225.189.229", - "source.nat.ip": "10.52.13.192", - "source.nat.port": 4714, - "source.port": 2287, - "tags": [ - "f5.bigipafm", - "forwarded" - ], - "user.name": "odtemp" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/f5/bigipapm/_meta/fields.yml b/x-pack/filebeat/module/f5/bigipapm/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/f5/bigipapm/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/f5/bigipapm/config/input.yml b/x-pack/filebeat/module/f5/bigipapm/config/input.yml deleted file mode 100644 index 94330616cdc..00000000000 --- a/x-pack/filebeat/module/f5/bigipapm/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "F5" - product: "Big-IP" - type: "Access" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/f5/bigipapm/config/liblogparser.js - - ${path.home}/module/f5/bigipapm/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/f5/bigipapm/config/liblogparser.js b/x-pack/filebeat/module/f5/bigipapm/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/f5/bigipapm/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{p0}"); - -var dup5 = setc("eventcategory","1801000000"); - -var dup6 = setc("eventcategory","1801010000"); - -var dup7 = setc("eventcategory","1502000000"); - -var dup8 = setc("eventcategory","1805010000"); - -var dup9 = setc("eventcategory","1803000000"); - -var dup10 = setc("eventcategory","1803030000"); - -var dup11 = setc("disposition"," Successful"); - -var dup12 = setc("dclass_counter1_string"," Logon Attempt"); - -var dup13 = setc("eventcategory","1204000000"); - -var dup14 = date_time({ - dest: "event_time", - args: ["fld20"], - fmts: [ - [dD,dc("/"),dB,dc("/"),dW,dc(":"),dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup15 = setc("eventcategory","1605000000"); - -var dup16 = setc("eventcategory","1612000000"); - -var dup17 = date_time({ - dest: "event_time", - args: ["fld1","fld2","fld3"], - fmts: [ - [dB,dF,dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup18 = match("MESSAGE#0:01490502", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: %{event_description}", processor_chain([ - dup1, - dup2, -])); - -var dup19 = match("MESSAGE#58:crond:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: (%{username}) CMD (%{action})", processor_chain([ - dup15, - dup2, -])); - -var dup20 = match("MESSAGE#67:014d0001:02", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{info}", processor_chain([ - dup5, - dup2, -])); - -var hdr1 = match("HEADER#0:0001", "message", "%{hmonth->} %{hdate->} %{htime->} %{hfld1->} %{hfld2->} %{hfld3}[%{hfld4}]: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("hfld2"), - constant(" "), - field("hfld3"), - constant("["), - field("hfld4"), - constant("]: "), - field("messageid"), - constant(": "), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{hmonth->} %{hdate->} %{htime->} %{hfld1->} %{hfld2->} %{hfld3}: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0002"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("hfld2"), - constant(" "), - field("hfld3"), - constant(": "), - field("messageid"), - constant(": "), - field("p0"), - ], - }), -])); - -var hdr3 = match("HEADER#2:0003", "message", "%{hmonth->} %{hdate->} %{htime->} %{hfld1->} %{hfld2->} %{hfld3}: [%{messageid}]%{p0}", processor_chain([ - setc("header_id","0003"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("hfld2"), - constant(" "), - field("hfld3"), - constant(": ["), - field("messageid"), - constant("]"), - field("p0"), - ], - }), -])); - -var hdr4 = match("HEADER#3:0004", "message", "%{hmonth->} %{hdate->} %{htime->} %{hfld1->} %{hfld2->} %{messageid}[%{hfld3}]:%{p0}", processor_chain([ - setc("header_id","0004"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("hfld2"), - constant(" "), - field("messageid"), - constant("["), - field("hfld3"), - constant("]:"), - field("p0"), - ], - }), -])); - -var hdr5 = match("HEADER#4:0005", "message", "%{hmonth->} %{hdate->} %{htime->} %{hfld1->} %{hfld2->} %{messageid}:%{p0}", processor_chain([ - setc("header_id","0005"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("hfld2"), - constant(" "), - field("messageid"), - constant(":"), - field("p0"), - ], - }), -])); - -var hdr6 = match("HEADER#5:0006", "message", "%{hmonth->} %{hdate->} %{htime->} %{hfld1->} %{hfld2->} %{hfld3}[%{hfld4}]: %{messageid->} /%{p0}", processor_chain([ - setc("header_id","0006"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("hfld2"), - constant(" "), - field("hfld3"), - constant("["), - field("hfld4"), - constant("]: "), - field("messageid"), - constant(" /"), - field("p0"), - ], - }), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, - hdr5, - hdr6, -]); - -var msg1 = msg("01490502", dup18); - -var part1 = match("MESSAGE#1:01490521", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Session statistics - bytes in:%{rbytes}, bytes out: %{sbytes}", processor_chain([ - dup3, - dup2, -])); - -var msg2 = msg("01490521", part1); - -var part2 = match("MESSAGE#2:01490506", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Received User-Agent header: %{user_agent}", processor_chain([ - dup3, - dup2, -])); - -var msg3 = msg("01490506", part2); - -var part3 = match("MESSAGE#3:01490113:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: session.server.network.name is %{fqdn}", processor_chain([ - dup3, - dup2, -])); - -var msg4 = msg("01490113:01", part3); - -var part4 = match("MESSAGE#4:01490113:02", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: session.server.network.port is %{network_port}", processor_chain([ - dup3, - dup2, -])); - -var msg5 = msg("01490113:02", part4); - -var part5 = match("MESSAGE#5:01490113:03", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: session.server.listener.name is %{service}", processor_chain([ - dup3, - dup2, -])); - -var msg6 = msg("01490113:03", part5); - -var part6 = match("MESSAGE#6:01490113:04", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: session.server.network.protocol is %{network_service}", processor_chain([ - dup3, - dup2, -])); - -var msg7 = msg("01490113:04", part6); - -var part7 = match("MESSAGE#7:01490113:05", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: session.user.agent is %{info}", processor_chain([ - dup3, - dup2, -])); - -var msg8 = msg("01490113:05", part7); - -var part8 = match("MESSAGE#8:01490113:06", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: session.user.clientip is %{saddr}", processor_chain([ - dup3, - dup2, -])); - -var msg9 = msg("01490113:06", part8); - -var part9 = match("MESSAGE#9:01490113", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: session.%{info}", processor_chain([ - dup3, - dup2, -])); - -var msg10 = msg("01490113", part9); - -var select2 = linear_select([ - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, -]); - -var part10 = match("MESSAGE#10:01490010/1_0", "nwparser.p0", "%{fld10}:%{fld11}:%{sessionid}: Username '%{p0}"); - -var part11 = match("MESSAGE#10:01490010/1_1", "nwparser.p0", "%{sessionid}: Username '%{p0}"); - -var select3 = linear_select([ - part10, - part11, -]); - -var part12 = match("MESSAGE#10:01490010/2", "nwparser.p0", "%{username}'"); - -var all1 = all_match({ - processors: [ - dup4, - select3, - part12, - ], - on_success: processor_chain([ - setc("eventcategory","1401000000"), - dup2, - ]), -}); - -var msg11 = msg("01490010", all1); - -var part13 = match("MESSAGE#11:01490009", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: ACL '%{policyname}' assigned", processor_chain([ - setc("eventcategory","1501020000"), - dup2, -])); - -var msg12 = msg("01490009", part13); - -var part14 = match("MESSAGE#12:01490102", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Access policy result: %{result}", processor_chain([ - setc("eventcategory","1501000000"), - dup2, -])); - -var msg13 = msg("01490102", part14); - -var part15 = match("MESSAGE#13:01490000:02", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: %{authmethod->} authentication for user %{username->} using config %{fld8}", processor_chain([ - dup5, - dup2, -])); - -var msg14 = msg("01490000:02", part15); - -var part16 = match("MESSAGE#14:01490000:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: found HTTP %{resultcode->} in response header", processor_chain([ - dup6, - dup2, -])); - -var msg15 = msg("01490000:01", part16); - -var part17 = match("MESSAGE#15:01490000", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{filename->} func: \"%{action}\" line: %{fld8->} Msg: %{result}", processor_chain([ - dup5, - dup2, -])); - -var msg16 = msg("01490000", part17); - -var part18 = match("MESSAGE#16:01490000:03", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{event_description}", processor_chain([ - dup5, - dup2, -])); - -var msg17 = msg("01490000:03", part18); - -var select4 = linear_select([ - msg14, - msg15, - msg16, - msg17, -]); - -var part19 = match("MESSAGE#17:01490004", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{fld8}: Executed agent '%{application}', return value %{resultcode}", processor_chain([ - dup5, - dup2, -])); - -var msg18 = msg("01490004", part19); - -var part20 = match("MESSAGE#18:01490500/1_0", "nwparser.p0", "%{fld10}:%{fld11}:%{sessionid}: New session from client IP %{p0}"); - -var part21 = match("MESSAGE#18:01490500/1_1", "nwparser.p0", "%{sessionid}: New session from client IP %{p0}"); - -var select5 = linear_select([ - part20, - part21, -]); - -var part22 = match("MESSAGE#18:01490500/2", "nwparser.p0", "%{saddr->} (ST=%{location_state}/CC=%{location_country}/C=%{location_city}) at VIP %{p0}"); - -var part23 = match("MESSAGE#18:01490500/3_0", "nwparser.p0", "%{daddr->} Listener %{fld8->} (Reputation=%{category})"); - -var part24 = match("MESSAGE#18:01490500/3_1", "nwparser.p0", "%{daddr->} Listener %{fld8}"); - -var part25 = match_copy("MESSAGE#18:01490500/3_2", "nwparser.p0", "daddr"); - -var select6 = linear_select([ - part23, - part24, - part25, -]); - -var all2 = all_match({ - processors: [ - dup4, - select5, - part22, - select6, - ], - on_success: processor_chain([ - dup3, - dup2, - ]), -}); - -var msg19 = msg("01490500", all2); - -var part26 = match("MESSAGE#19:01490005", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Following rule %{fld8->} from item %{fld9->} to ending %{fld10}", processor_chain([ - dup7, - dup2, -])); - -var msg20 = msg("01490005", part26); - -var part27 = match("MESSAGE#20:01490006", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Following rule %{fld8->} from item '%{fld9}' to item '%{fld10}'", processor_chain([ - dup7, - dup2, -])); - -var msg21 = msg("01490006", part27); - -var part28 = match("MESSAGE#21:01490007", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Session variable '%{change_attribute}' set to %{change_new}", processor_chain([ - dup7, - dup2, -])); - -var msg22 = msg("01490007", part28); - -var part29 = match("MESSAGE#22:01490008", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Connectivity resource %{application->} assigned", processor_chain([ - dup3, - dup2, -])); - -var msg23 = msg("01490008", part29); - -var part30 = match("MESSAGE#23:01490514", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{fld8}: Access encountered error: %{result}. File: %{filename}, Function: %{action}, Line: %{fld9}", processor_chain([ - dup6, - dup2, -])); - -var msg24 = msg("01490514", part30); - -var part31 = match("MESSAGE#24:01490505", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: %{event_description}", processor_chain([ - dup5, - dup2, -])); - -var msg25 = msg("01490505", part31); - -var msg26 = msg("01490501", dup18); - -var msg27 = msg("01490520", dup18); - -var part32 = match("MESSAGE#27:01490142", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: %{event_description}", processor_chain([ - setc("eventcategory","1609000000"), - dup2, -])); - -var msg28 = msg("01490142", part32); - -var part33 = match("MESSAGE#28:01490504", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: %{fqdn->} can not be resolved.", processor_chain([ - dup8, - dup2, -])); - -var msg29 = msg("01490504", part33); - -var part34 = match("MESSAGE#29:01490538", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{fld8}: Configuration snapshot deleted by Access.", processor_chain([ - dup8, - dup2, -])); - -var msg30 = msg("01490538", part34); - -var part35 = match("MESSAGE#30:01490107:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD module: authentication with '%{fld8}' failed: Clients credentials have been revoked, principal name: %{username}@%{fqdn}. %{result->} %{fld9}", processor_chain([ - dup9, - dup2, -])); - -var msg31 = msg("01490107:01", part35); - -var part36 = match("MESSAGE#31:01490107", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD module: authentication with '%{username}' failed in %{action}: %{result->} %{fld8}", processor_chain([ - dup9, - dup2, -])); - -var msg32 = msg("01490107", part36); - -var part37 = match("MESSAGE#32:01490107:02/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD module: authentication with '%{username}' failed: %{p0}"); - -var part38 = match("MESSAGE#32:01490107:02/1_0", "nwparser.p0", "Client '%{fqdn}' not found in Kerberos database, principal name:%{fld10->} %{p0}"); - -var part39 = match("MESSAGE#32:01490107:02/1_1", "nwparser.p0", "%{result->} %{p0}"); - -var select7 = linear_select([ - part38, - part39, -]); - -var part40 = match_copy("MESSAGE#32:01490107:02/2", "nwparser.p0", "info"); - -var all3 = all_match({ - processors: [ - part37, - select7, - part40, - ], - on_success: processor_chain([ - dup9, - dup2, - ]), -}); - -var msg33 = msg("01490107:02", all3); - -var select8 = linear_select([ - msg31, - msg32, - msg33, -]); - -var part41 = match("MESSAGE#33:01490106", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD module: authentication with '%{username}' failed in %{action}: Preauthentication failed, principal name: %{fld8}. %{result->} %{fld9}", processor_chain([ - dup9, - dup2, -])); - -var msg34 = msg("01490106", part41); - -var part42 = match("MESSAGE#34:01490106:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD module: authentication with '%{username}' failed: Preauthentication failed, principal name: %{fld8}. %{result->} %{fld9}", processor_chain([ - dup9, - dup2, -])); - -var msg35 = msg("01490106:01", part42); - -var select9 = linear_select([ - msg34, - msg35, -]); - -var part43 = match("MESSAGE#35:01490128", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Webtop %{application->} assigned", processor_chain([ - dup5, - dup2, -])); - -var msg36 = msg("01490128", part43); - -var part44 = match("MESSAGE#36:01490101", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Access profile: %{fld8->} configuration has been applied. Newly active generation count is: %{dclass_counter1}", processor_chain([ - dup10, - dup2, - setc("dclass_counter1_string","Newly active generation count"), -])); - -var msg37 = msg("01490101", part44); - -var part45 = match("MESSAGE#37:01490103", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Retry Username '%{username}'", processor_chain([ - dup10, - dup2, -])); - -var msg38 = msg("01490103", part45); - -var part46 = match("MESSAGE#38:01490115", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Following rule %{rulename->} from item %{fld9->} to terminalout %{fld10}", processor_chain([ - dup7, - dup2, -])); - -var msg39 = msg("01490115", part46); - -var part47 = match("MESSAGE#39:01490017", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD agent: Auth (logon attempt:%{dclass_counter1}): authenticate with '%{username}' successful", processor_chain([ - dup7, - dup2, - dup11, - dup12, -])); - -var msg40 = msg("01490017", part47); - -var part48 = match("MESSAGE#41:01490017:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD agent: Auth (logon attempt:%{dclass_counter1}): authenticate with '%{username}' failed", processor_chain([ - dup7, - dup2, - setc("disposition"," Failed"), - dup12, -])); - -var msg41 = msg("01490017:01", part48); - -var select10 = linear_select([ - msg40, - msg41, -]); - -var part49 = match("MESSAGE#40:01490013", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD agent: Retrieving AAA server: %{fld8}", processor_chain([ - dup7, - dup2, -])); - -var msg42 = msg("01490013", part49); - -var part50 = match("MESSAGE#42:01490019", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: AD agent: Query: query with '(sAMAccountName=%{username})' successful", processor_chain([ - dup7, - dup2, - dup11, -])); - -var msg43 = msg("01490019", part50); - -var part51 = match("MESSAGE#43:01490544", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Received client info - %{web_referer}", processor_chain([ - dup7, - dup2, -])); - -var msg44 = msg("01490544", part51); - -var part52 = match("MESSAGE#44:01490511", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Initializing Access profile %{fld8->} with max concurrent user sessions limit: %{dclass_counter1}", processor_chain([ - dup7, - dup2, - setc("dclass_counter1_string"," Max Concurrent User Sessions Limit"), -])); - -var msg45 = msg("01490511", part52); - -var part53 = match("MESSAGE#45:014d0002", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: %{sessionid}: SSOv2 Logon succeeded, config %{fld8->} form %{fld9}", processor_chain([ - dup7, - dup2, - setc("disposition","Succeeded"), -])); - -var msg46 = msg("014d0002", part53); - -var part54 = match("MESSAGE#46:014d0002:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: %{sessionid}: SSOv2 Logon failed, config %{fld8->} form %{fld9}", processor_chain([ - dup7, - dup2, - setc("disposition","Failed"), -])); - -var msg47 = msg("014d0002:01", part54); - -var select11 = linear_select([ - msg46, - msg47, -]); - -var part55 = match("MESSAGE#47:01490079", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: %{sessionid}: Access policy '%{fld8}' configuration has changed.Access profile '%{fld9}' configuration changes need to be applied for the new configuration", processor_chain([ - dup7, - dup2, -])); - -var msg48 = msg("01490079", part55); - -var part56 = match("MESSAGE#48:01490165", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: Access profile: %{fld8->} initialized with configuration snapshot catalog: %{fld9}", processor_chain([ - dup7, - dup2, -])); - -var msg49 = msg("01490165", part56); - -var part57 = match("MESSAGE#49:01490166", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: Current snapshot ID: %{fld8->} retrieved from session db for access profile: %{fld9}", processor_chain([ - dup7, - dup2, -])); - -var msg50 = msg("01490166", part57); - -var part58 = match("MESSAGE#50:01490167", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: Current snapshot ID: %{fld8->} updated inside session db for access profile: %{fld9}", processor_chain([ - dup7, - dup2, -])); - -var msg51 = msg("01490167", part58); - -var part59 = match("MESSAGE#51:01490169", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: Snapshot catalog entry: %{fld8->} added for access profile: %{fld9}", processor_chain([ - dup7, - dup2, -])); - -var msg52 = msg("01490169", part59); - -var part60 = match("MESSAGE#52:0149016a", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: Initiating snapshot creation: %{fld8->} for access profile: %{fld9}", processor_chain([ - dup7, - dup2, -])); - -var msg53 = msg("0149016a", part60); - -var part61 = match("MESSAGE#53:0149016b", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: %{fld7}:%{fld6}: Completed snapshot creation: %{fld8->} for access profile: %{fld9}", processor_chain([ - dup7, - dup2, -])); - -var msg54 = msg("0149016b", part61); - -var part62 = match("MESSAGE#54:ssl_acc/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: [%{event_type}] %{saddr->} - %{p0}"); - -var part63 = match("MESSAGE#54:ssl_acc/1_0", "nwparser.p0", "- %{p0}"); - -var part64 = match("MESSAGE#54:ssl_acc/1_1", "nwparser.p0", "%{username->} %{p0}"); - -var select12 = linear_select([ - part63, - part64, -]); - -var part65 = match("MESSAGE#54:ssl_acc/2", "nwparser.p0", "[%{fld20->} %{timezone}] \"%{url}\" %{resultcode->} %{rbytes}"); - -var all4 = all_match({ - processors: [ - part62, - select12, - part65, - ], - on_success: processor_chain([ - dup13, - dup14, - dup2, - ]), -}); - -var msg55 = msg("ssl_acc", all4); - -var part66 = match("MESSAGE#55:ssl_req", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: [%{event_type}]%{space}[%{fld20->} %{timezone}] %{saddr->} %{protocol->} %{encryption_type->} \"%{url}\" %{rbytes}", processor_chain([ - dup13, - dup14, - dup2, -])); - -var msg56 = msg("ssl_req", part66); - -var part67 = match("MESSAGE#56:acc", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}: [%{event_type}]%{space}[%{fld20->} %{timezone}] \"%{web_method->} %{url->} %{version}\" %{resultcode->} %{rbytes->} \"%{fld7}\" \"%{user_agent}\"", processor_chain([ - dup13, - dup14, - dup2, -])); - -var msg57 = msg("acc", part67); - -var part68 = match("MESSAGE#57:crond", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: %{username}(%{sessionid}): %{action}", processor_chain([ - dup15, - dup2, -])); - -var msg58 = msg("crond", part68); - -var msg59 = msg("crond:01", dup19); - -var part69 = match("MESSAGE#59:crond:02", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: (%{username}) %{info}", processor_chain([ - dup15, - dup2, -])); - -var msg60 = msg("crond:02", part69); - -var select13 = linear_select([ - msg58, - msg59, - msg60, -]); - -var part70 = match("MESSAGE#60:sSMTP", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: %{info}", processor_chain([ - setc("eventcategory","1207000000"), - dup2, -])); - -var msg61 = msg("sSMTP", part70); - -var part71 = match("MESSAGE#61:01420002", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: %{fld5}: AUDIT - pid=%{parent_pid->} user=%{username->} folder=%{directory->} module=%{fld6->} status=%{result->} cmd_data=%{info}", processor_chain([ - dup16, - dup2, -])); - -var msg62 = msg("01420002", part71); - -var part72 = match("MESSAGE#62:syslog-ng", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: %{info}", processor_chain([ - dup15, - dup2, -])); - -var msg63 = msg("syslog-ng", part72); - -var part73 = match("MESSAGE#63:syslog-ng:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}: %{info}", processor_chain([ - dup15, - dup2, -])); - -var msg64 = msg("syslog-ng:01", part73); - -var select14 = linear_select([ - msg63, - msg64, -]); - -var part74 = match("MESSAGE#64:auditd", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: %{info}", processor_chain([ - dup16, - dup2, -])); - -var msg65 = msg("auditd", part74); - -var part75 = match("MESSAGE#65:014d0001", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: ssoMethod: %{authmethod->} usernameSource: %{fld9->} passwordSource: %{fld10->} ntlmdomain: %{c_domain}", processor_chain([ - dup5, - dup2, -])); - -var msg66 = msg("014d0001", part75); - -var part76 = match("MESSAGE#66:014d0001:01/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: ctx: %{fld9}, %{p0}"); - -var part77 = match("MESSAGE#66:014d0001:01/1_0", "nwparser.p0", "SERVER %{p0}"); - -var part78 = match("MESSAGE#66:014d0001:01/1_1", "nwparser.p0", "CLIENT %{p0}"); - -var select15 = linear_select([ - part77, - part78, -]); - -var part79 = match("MESSAGE#66:014d0001:01/2", "nwparser.p0", ": %{info}"); - -var all5 = all_match({ - processors: [ - part76, - select15, - part79, - ], - on_success: processor_chain([ - dup5, - dup2, - ]), -}); - -var msg67 = msg("014d0001:01", all5); - -var msg68 = msg("014d0001:02", dup20); - -var select16 = linear_select([ - msg66, - msg67, - msg68, -]); - -var msg69 = msg("014d0044", dup20); - -var part80 = match("MESSAGE#69:01490549/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: Assigned PPP Dynamic IPv4: %{stransaddr->} Tunnel Type: %{group->} %{fld8->} Resource: %{rulename->} Client IP: %{p0}"); - -var part81 = match("MESSAGE#69:01490549/1_0", "nwparser.p0", "%{saddr->} - %{fld9}"); - -var part82 = match("MESSAGE#69:01490549/1_1", "nwparser.p0", "%{saddr}"); - -var select17 = linear_select([ - part81, - part82, -]); - -var all6 = all_match({ - processors: [ - part80, - select17, - ], - on_success: processor_chain([ - dup3, - dup2, - ]), -}); - -var msg70 = msg("01490549", all6); - -var part83 = match("MESSAGE#70:01490547", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: Access Profile %{rulename}: %{result->} for %{saddr}", processor_chain([ - dup3, - dup2, -])); - -var msg71 = msg("01490547", part83); - -var part84 = match("MESSAGE#71:01490517", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: %{result}", processor_chain([ - dup3, - dup2, -])); - -var msg72 = msg("01490517", part84); - -var part85 = match("MESSAGE#72:011f0005", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{result->} (Client side: vip=%{url->} profile=%{protocol->} pool=%{fld8->} client_ip=%{saddr})", processor_chain([ - dup3, - dup2, -])); - -var msg73 = msg("011f0005", part85); - -var part86 = match("MESSAGE#73:014d0048", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7->} %{rulename->} \u003c\u003c%{event_description}>: APM_EVENT=%{action->} | %{username->} | %{fld8->} ***%{result}***", processor_chain([ - dup3, - dup2, -])); - -var msg74 = msg("014d0048", part86); - -var part87 = match("MESSAGE#74:error", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: [%{fld7}] [client %{saddr}] %{result}: %{url}", processor_chain([ - dup3, - dup2, -])); - -var msg75 = msg("error", part87); - -var msg76 = msg("CROND:03", dup19); - -var part88 = match("MESSAGE#76:01260009", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]:%{fld7}:%{fld6}: Connection error:%{event_description}", processor_chain([ - dup6, - dup2, -])); - -var msg77 = msg("01260009", part88); - -var part89 = match("MESSAGE#77:apmd:04", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{hostname->} %{severity->} %{agent}[%{process_id}]: %{fld4->} /Common/home_agent_tca:Common:%{fld5}: %{fld6->} - Hostname: %{shost->} Type: %{fld7->} Version: %{version->} Platform: %{os->} CPU: %{fld8->} Mode:%{fld9}", processor_chain([ - dup15, - dup2, - dup17, -])); - -var msg78 = msg("apmd:04", part89); - -var part90 = match("MESSAGE#78:apmd:03", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{hostname->} %{severity->} %{agent}[%{process_id}]: %{fld4->} /Common/home_agent_tca:Common:%{fld5}: RADIUS module: parseResponse(): Access-Reject packet from host %{saddr}:%{sport->} %{fld7}", processor_chain([ - dup9, - dup2, - dup17, -])); - -var msg79 = msg("apmd:03", part90); - -var part91 = match("MESSAGE#79:apmd:02/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{hostname->} %{severity->} %{agent}[%{process_id}]: %{fld4->} /Common/home_agent_tca:Common:%{fld5}: RADIUS module: authentication with '%{username}' failed: %{p0}"); - -var part92 = match("MESSAGE#79:apmd:02/1_0", "nwparser.p0", "%{fld6->} from host %{saddr}:%{sport->} %{fld7}"); - -var part93 = match("MESSAGE#79:apmd:02/1_1", "nwparser.p0", "%{fld8}"); - -var select18 = linear_select([ - part92, - part93, -]); - -var all7 = all_match({ - processors: [ - part91, - select18, - ], - on_success: processor_chain([ - dup9, - dup2, - dup17, - ]), -}); - -var msg80 = msg("apmd:02", all7); - -var part94 = match("MESSAGE#80:apmd", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{hostname->} %{severity->} %{agent}[%{process_id}]:%{info}", processor_chain([ - dup15, - dup2, - dup17, -])); - -var msg81 = msg("apmd", part94); - -var select19 = linear_select([ - msg78, - msg79, - msg80, - msg81, -]); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "011f0005": msg73, - "01260009": msg77, - "01420002": msg62, - "01490000": select4, - "01490004": msg18, - "01490005": msg20, - "01490006": msg21, - "01490007": msg22, - "01490008": msg23, - "01490009": msg12, - "01490010": msg11, - "01490013": msg42, - "01490017": select10, - "01490019": msg43, - "01490079": msg48, - "01490101": msg37, - "01490102": msg13, - "01490103": msg38, - "01490106": select9, - "01490107": select8, - "01490113": select2, - "01490115": msg39, - "01490128": msg36, - "01490142": msg28, - "01490165": msg49, - "01490166": msg50, - "01490167": msg51, - "01490169": msg52, - "0149016a": msg53, - "0149016b": msg54, - "01490500": msg19, - "01490501": msg26, - "01490502": msg1, - "01490504": msg29, - "01490505": msg25, - "01490506": msg3, - "01490511": msg45, - "01490514": msg24, - "01490517": msg72, - "01490520": msg27, - "01490521": msg2, - "01490538": msg30, - "01490544": msg44, - "01490547": msg71, - "01490549": msg70, - "014d0001": select16, - "014d0002": select11, - "014d0044": msg69, - "CROND": msg76, - "Rule": msg74, - "acc": msg57, - "apmd": select19, - "auditd": msg65, - "crond": select13, - "error": msg75, - "sSMTP": msg61, - "ssl_acc": msg55, - "ssl_req": msg56, - "syslog-ng": select14, - }), -]); - -var part95 = match("MESSAGE#10:01490010/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{p0}"); - -var part96 = match("MESSAGE#0:01490502", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{sessionid}: %{event_description}", processor_chain([ - dup1, - dup2, -])); - -var part97 = match("MESSAGE#58:crond:01", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{agent}[%{process_id}]: (%{username}) CMD (%{action})", processor_chain([ - dup15, - dup2, -])); - -var part98 = match("MESSAGE#67:014d0001:02", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{fld4->} %{severity->} %{fld5}[%{process_id}]: %{fld7}:%{fld6}: %{info}", processor_chain([ - dup5, - dup2, -])); diff --git a/x-pack/filebeat/module/f5/bigipapm/ingest/pipeline.yml b/x-pack/filebeat/module/f5/bigipapm/ingest/pipeline.yml deleted file mode 100644 index 814b2b0f30d..00000000000 --- a/x-pack/filebeat/module/f5/bigipapm/ingest/pipeline.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -description: Pipeline for Big-IP Access Policy Manager - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/f5/bigipapm/manifest.yml b/x-pack/filebeat/module/f5/bigipapm/manifest.yml deleted file mode 100644 index 6a527419285..00000000000 --- a/x-pack/filebeat/module/f5/bigipapm/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["f5.bigipapm", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9526 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/f5/bigipapm/test/generated.log b/x-pack/filebeat/module/f5/bigipapm/test/generated.log deleted file mode 100644 index 979e5ccffa4..00000000000 --- a/x-pack/filebeat/module/f5/bigipapm/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -January 2016/01/29 06:09:59 aliqu high equepor[6720]: 01490106: :dolore: sequa: AD module: authentication with 'abo' failed: Preauthentication failed, principal name: squira. success reeufugi -February 2016/02/12 13:12:33 billoi medium orev[6153]: 01490504: :tatemU: deF: sist1803.mail.local can not be resolved. -February 2016/02/26 20:15:08 aqui low sSMTP[1166]: isetq -March 2016/03/12 03:17:42 seq high crond[5738]: (ccaecat) veleumi -March 2016/03/26 10:20:16 ude very-high veri[5990]: 01490113: :tempo: inv: session.user.clientip is 10.134.175.248 -April 2016/04/09 17:22:51 lupta low rsitvolu[2044]: 01490128: :pori: occ: Webtop ect assigned -April 2016/04/24 00:25:25 aedic high gni: [syslog-ng] -May 2016/05/08 07:27:59 labor low isqu: 01490167: :uis: Current snapshot ID: idolore updated inside session db for access profile: onse -May 2016/05/22 14:30:33 metcon low emeumfug[6823]: 01490505: :emporinc: untutlab: tem -June 2016/06/05 21:33:08 tessec very-high ali[6446]: sSMTP: -June 2016/06/20 04:35:42 riat medium atvol[98]: 014d0044: :uames: tati -July 2016/07/04 11:38:16 sinto very-high CSed[2857]: 01490514: :utlabore: ecillu: Access encountered error: success. File: mnisist, Function: deny, Line: icons -July 2016/07/18 18:40:50 lum high CROND[1675]: (sitvolup) CMD (cancel) -August 2016/08/02 01:43:25 uipe very-high siarchi[2289]: 01490500: :aliqu: olupta:mipsumd:eFinib: New session from client IP 10.204.123.107 (ST=saute/CC=ercit/C=usmodt) at VIP 10.225.160.182 Listener mque -August 2016/08/16 08:45:59 dol high quiratio[3386]: 01490511: :tisetq: tevelite: Initializing Access profile orporiss with max concurrent user sessions limit: 4739 -August 2016/08/30 15:48:33 paquioff medium derit[4688]: 01490544: :hende: piscin: Received client info - https://mail.example.com/laboree/tfu.html?liqu=eporr#xeacomm -September 2016/09/13 22:51:07 fugiatnu high tobea[2364]: 014d0001: :tateve: ctx: itinvol, SERVER : eavolup -September 2016/09/28 05:53:42 remag very-high abor[5983]: 01490103: :tquiin: tse: Retry Username 'tenimad' -October 2016/10/12 12:56:16 niamqui low amcol[5625]: 01490113: :ipisci: gitsed: session.server.network.port is 4374 -October 2016/10/26 19:58:50 nturma low cusant[4946]: 01490106: :etur: itecto: AD module: authentication with 'reetdol' failed: Preauthentication failed, principal name: totamre. success ercita -November 2016/11/10 03:01:24 proiden medium mvele[5737]: 014d0044: :aco: tio -November 2016/11/24 10:03:59 quaea very-high mvel[1188]: 01490520: :porinc: tetur: xce -December 2016/12/08 17:06:33 aincidu very-high uaeab[5960]: 01490008: :licabo: enimadmi: Connectivity resource utaliqu assigned -December 2016/12/23 00:09:07 cola high oremi[1485]: 01490128: :ineavol: iosa: Webtop boNemoe assigned -January 2017/01/06 07:11:41 Nequepor medium rem[5461]: 01490538: :esseq: adminima: Configuration snapshot deleted by Access. -January 2017/01/20 14:14:16 ptateve very-high miurerep: 01490165: :toccaec: Access profile: fugi initialized with configuration snapshot catalog: labo -February 2017/02/03 21:16:50 sBono high equ[4808]: 01490005: :amvo: siuta: Following rule urmagn from item dquia to ending temporin -February 2017/02/18 04:19:24 iruredol very-high derit[5270]: 01490106: :atquo: cupi: AD module: authentication with 'strude' failed in allow: Preauthentication failed, principal name: dunt. success yCic -March 2017/03/04 11:21:59 unte very-high ueipsa[748]: 011f0005: :cti: failure (Client side: vip=https://www5.example.com/olli/rever.html?rsp=oluptat#metco profile=ipv6-icmp pool=edolorin client_ip=10.104.110.134) -March 2017/03/18 18:24:33 ptasnula high syslog-ng[2638]: ill -April 2017/04/02 01:27:07 caboNem medium laudan[7589]: 01490107: :oconse: mag: AD module: authentication with 'tob' failed: Client 'dolores2519.mail.host' not found in Kerberos database, principal name:deF itempo -April 2017/04/16 08:29:41 meaque high mip[5899]: 01490107: :lamc: mvolupta: AD module: authentication with 'Utenima' failed: Clients credentials have been revoked, principal name: iqua@luptat2979.internal.local. unknown cididu -April 2017/04/30 15:32:16 atDuis medium nisiut: 01490166: :rumwri: Current snapshot ID: velill retrieved from session db for access profile: ore -May 2017/05/14 22:34:50 uptat high amquisno: 0149016b: :uido: Completed snapshot creation: tla for access profile: mquiad -May 2017/05/29 05:37:24 atur very-high ditau[4727]: 01490514: :piscivel: hend: Access encountered error: success. File: cepteur, Function: accept, Line: maliqu -June 2017/06/12 12:39:58 acon very-high sun[5971]: 01490501: :labori: porai: umiure -June 2017/06/26 19:42:33 eufug low uido[4318]: 01490500: :ici: snulap: New session from client IP 10.122.204.151 (ST=writte/CC=sitvo/C=ine) at VIP 10.169.101.161 Listener itessequ -July 2017/07/11 02:45:07 udan low essequam[3682]: 01490113: :urQuis: etcon: session.server.network.protocol is onsequu -July 2017/07/25 09:47:41 gelitse very-high arc[2412]: 01490013: :radip: upta: AD agent: Retrieving AAA server: tetura -August 2017/08/08 16:50:15 imavenia low mquido[5899]: 01490517: :rnat: rur: success -August 2017/08/22 23:52:50 nonn high met[1580]: 01420002: : AUDIT - pid=2037 user=ptate folder=entsu module=conse status=failure cmd_data=ntut -September 2017/09/06 06:55:24 iconsequ high idunt[571]: 01490549: :siuta: atev: Assigned PPP Dynamic IPv4: 10.6.32.7 Tunnel Type: exerci inesciu Resource: quid Client IP: 10.198.70.58 - orem -September 2017/09/20 13:57:58 reetdo medium lup[5051]: 01260009: :eos: Connection error:ipitlabo -October 2017/10/04 21:00:32 reprehen very-high syslog-ng[6438]: imid -October 2017/10/19 04:03:07 sunt very-high aturQu[7083]: 01490128: :tDuis: iqu: Webtop oriosamn assigned -November 2017/11/02 11:05:41 iquip very-high sedquian[4212]: 01490004: :etdolore: magnaa: Executed agent 'sumquiad', return value iusmodt -November 2017/11/16 18:08:15 equam low eaqueip[5207]: 01490538: :aevitaed: byCic: Configuration snapshot deleted by Access. -December 2017/12/01 01:10:49 xerc high eturad[1760]: 01490506: :nvol: enimadmi: Received User-Agent header: mobmail android 2.1.3.3150 -December 2017/12/15 08:13:24 sumdolo medium rors[1935]: 01490538: :oremque: quaU: Configuration snapshot deleted by Access. -December 2017/12/29 15:15:58 ioff medium quioff: 0149016a: :iuntN: Initiating snapshot creation: ipis for access profile: itautfu -January 2018/01/12 22:18:32 rchit medium roquisqu[5924]: 01490005: :iquid: evo: Following rule mcorpori from item mqu to ending pteursi -January 2018/01/27 05:21:06 itessequ low fdeFinib[2580]: 01490128: :sumd: sectetur: Webtop edquian assigned -February 2018/02/10 12:23:41 quiav low rit: 0149016a: :eumfu: Initiating snapshot creation: lors for access profile: oluptat -February 2018/02/24 19:26:15 oeiusmo very-high cusanti[5019]: 01420002: : AUDIT - pid=4996 user=rem folder=tseddoei module=teursint status=success cmd_data=remagnaa -March 2018/03/11 02:28:49 ore low ovolupta: 0149016b: :volup: Completed snapshot creation: macc for access profile: ria -March 2018/03/25 09:31:24 uisau high irat[2943]: 01490549: :emsequi: ueporroq: Assigned PPP Dynamic IPv4: 10.142.213.80 Tunnel Type: tationu gnaaliq Resource: olore Client IP: 10.16.181.60 - ameaquei -April 2018/04/08 16:33:58 liq low mvolupta: syslog-ng: -April 2018/04/22 23:36:32 exe high illum[2625]: 01490101: :emi: reprehen: Access profile: tvol configuration has been applied. Newly active generation count is: 5959 -May 2018/05/07 06:39:06 iumt medium nulapari[1973]: 01490500: :tsunt: rnat:oremi:ectobeat: New session from client IP 10.187.64.126 (ST=uasiarch/CC=Malor/C=boriosa) at VIP 10.47.99.72 Listener upt (Reputation=oremipsu) -May 2018/05/21 13:41:41 sint low auditd[3376]: ctobeat -June 2018/06/04 20:44:15 lorumw high tdolo[3872]: syslog-ng: -June 2018/06/19 03:46:49 namaliqu medium aeca[4543]: 014d0044: :autemv: sciveli -July 2018/07/03 10:49:23 piciati medium ntin[4646]: 01260009: :rcitat: Connection error:cinge -July 2018/07/17 17:51:58 iqui low litani[3126]: 01490142: :itanimi: onoru: data -August 2018/08/01 00:54:32 uptatem high ruredol: 01490079: :iadeseru: loremagn: Access policy 'acons' configuration has changed.Access profile 'nimadmi' configuration changes need to be applied for the new configuration -August 2018/08/15 07:57:06 lupt very-high eavolupt: 01490167: :uipe: Current snapshot ID: ipsa updated inside session db for access profile: con -August 2018/08/29 14:59:40 nesciu low ssequ[4877]: 01490008: :emse: emqui: Connectivity resource cipitla assigned -September 2018/09/12 22:02:15 ionevo high ptate[52]: 01490102: :uira: todita: Access policy result: failure -September 2018/09/27 05:04:49 iqu low tatis[7767]: 01490113: :reeufugi: sequines: session.server.network.protocol is minimve -October 2018/10/11 12:07:23 aborio low setquas: 014d0002: :nbyCi: runtmoll: SSOv2 Logon failed, config busBon form norumetM -October 2018/10/25 19:09:57 billoinv high deomn[904]: 01490113: :mali: roinBCSe: session.server.network.port is 3959 -November 2018/11/09 02:12:32 rch high sedd: 01490079: :atione: tvolup: Access policy 'oremeu' configuration has changed.Access profile 'lab' configuration changes need to be applied for the new configuration -November 2018/11/23 09:15:06 urau medium upt[4762]: 01490538: :itaedict: eroi: Configuration snapshot deleted by Access. -December 2018/12/07 16:17:40 reetdo low nidol[4345]: 01490113: :writtenb: atevelit: session.server.listener.name is ugitsed -December 2018/12/21 23:20:14 uatDuisa high ano[4054]: 01490102: :uunturm: iatn: Access policy result: unknown -January 2019/01/05 06:22:49 psum very-high exerci[3923]: 01490113: :lumqu: moen: session.oinvento -January 2019/01/19 13:25:23 volup very-high crond[4071]: (iconsequ) CMD (block) -February 2019/02/02 20:27:57 archite high rem[6473]: 01490008: :emp: inBC: Connectivity resource did assigned -February 2019/02/17 03:30:32 etconse medium uinesci: 0149016a: :otamr: Initiating snapshot creation: tsed for access profile: rExc -March 2019/03/03 10:33:06 omnisis very-high uptatema[7023]: 01490501: :stiaec: Cicero: ven -March 2019/03/17 17:35:40 cons low ine[870]: 011f0005: :amquisn: success (Client side: vip=https://example.net/equamn/scipi.txt?eiu=maliquam#gnama profile=rdp pool=squamest client_ip=10.24.113.101) -April 2019/04/01 00:38:14 uelaudan low teiru[4918]: 014d0044: :orinrep: pta -April 2019/04/15 07:40:49 sis very-high rchite[7405]: 01490521: :rvelill: rors: Session statistics - bytes in:6092, bytes out: 1363 -April 2019/04/29 14:43:23 Nequepo high CROND[2977]: (emac) CMD (cancel) -May 2019/05/13 21:45:57 isci high ugiatn: 0149016b: :squa: Completed snapshot creation: deseru for access profile: aquioff -May 2019/05/28 04:48:31 onsequat high giatq[7733]: 01490106: :imad: tura: AD module: authentication with 'equuntur' failed: Preauthentication failed, principal name: rve. success mqua -June 2019/06/11 11:51:06 utlabore very-high exea[2867]: 01490008: :amquisn: itquii: Connectivity resource imaven assigned -June 2019/06/25 18:53:40 lloinve low nim[7673]: 01490511: :edquiac: psamvolu: Initializing Access profile teturad with max concurrent user sessions limit: 7783 -July 2019/07/10 01:56:14 tatemse low vitae[72]: 01490000: :samvolu: dip -July 2019/07/24 08:58:48 Dui medium nostrude[7057]: 01490007: :ione: ecillum: Session variable 'maccu' set to ame -August 2019/08/07 16:01:23 reprehe medium enimipsa[2698]: 01490521: :samn: quisnos: Session statistics - bytes in:2132, bytes out: 2552 -August 2019/08/21 23:03:57 Nequepor low temseq[613]: 01490019: :ostrumex: suscipi: AD agent: Query: query with '(sAMAccountName=xplicabo)' successful -September 2019/09/05 06:06:31 ameaquei very-high uelaud[1306]: 01490544: :ameiu: utei: Received client info - https://internal.example.net/lumquid/oluptat.jpg?equepor=iosamn#erspicia -September 2019/09/19 13:09:05 psumqui high ncu: 01490079: :quaturve: ciad: Access policy 'diconseq' configuration has changed.Access profile 'utod' configuration changes need to be applied for the new configuration -October 2019/10/03 20:11:40 giatquo low dipisciv[5944]: 01490013: :atquo: umetMa: AD agent: Retrieving AAA server: ngelitse -October 2019/10/18 03:14:14 tem very-high giatnula[71]: Rule: enimadmi <: APM_EVENT=deny | aecon | sedq ***failure*** -November 2019/11/01 10:16:48 erc low tasnu: [syslog-ng] -November 2019/11/15 17:19:22 ationevo very-high datatno[3538]: 01490019: :siar: orisnis: AD agent: Query: query with '(sAMAccountName=texp)' successful -November 2019/11/30 00:21:57 pidat very-high sSMTP[6673]: ptateve -December 2019/12/14 07:24:31 olupta medium oremagn[2121]: 01490106: :itseddo: uptatev: AD module: authentication with 'oditem' failed in allow: Preauthentication failed, principal name: inimaven. failure olor diff --git a/x-pack/filebeat/module/f5/bigipapm/test/generated.log-expected.json b/x-pack/filebeat/module/f5/bigipapm/test/generated.log-expected.json deleted file mode 100644 index b02e40030fb..00000000000 --- a/x-pack/filebeat/module/f5/bigipapm/test/generated.log-expected.json +++ /dev/null @@ -1,2633 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T08:09:59.000Z", - "event.code": "01490106", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "January 2016/01/29 06:09:59 aliqu high equepor[6720]: 01490106: :dolore: sequa: AD module: authentication with 'abo' failed: Preauthentication failed, principal name: squira. success reeufugi", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 0, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 6720, - "related.user": [ - "abo" - ], - "rsa.internal.messageid": "01490106", - "rsa.misc.log_session_id": "sequa", - "rsa.misc.result": "success", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-01-29T08:09:59.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "abo" - }, - { - "@timestamp": "2016-02-12T15:12:33.000Z", - "event.code": "01490504", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2016/02/12 13:12:33 billoi medium orev[6153]: 01490504: :tatemU: deF: sist1803.mail.local can not be resolved.", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 192, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 6153, - "related.hosts": [ - "sist1803.mail.local" - ], - "rsa.internal.messageid": "01490504", - "rsa.misc.log_session_id": "deF", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2016-02-12T15:12:33.000Z", - "rsa.web.fqdn": "sist1803.mail.local", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-02-26T22:15:08.000Z", - "event.code": "sSMTP", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2016/02/26 20:15:08 aqui low sSMTP[1166]: isetq", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 312, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1166, - "rsa.db.index": "isetq", - "rsa.internal.messageid": "sSMTP", - "rsa.misc.client": "sSMTP", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2016-02-26T22:15:08.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-03-12T05:17:42.000Z", - "event.code": "crond", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2016/03/12 03:17:42 seq high crond[5738]: (ccaecat) veleumi", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 369, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5738, - "related.user": [ - "ccaecat" - ], - "rsa.db.index": "veleumi", - "rsa.internal.messageid": "crond", - "rsa.misc.client": "crond", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-03-12T05:17:42.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "ccaecat" - }, - { - "@timestamp": "2016-03-26T12:20:16.000Z", - "event.code": "01490113", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2016/03/26 10:20:16 ude very-high veri[5990]: 01490113: :tempo: inv: session.user.clientip is 10.134.175.248", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 435, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5990, - "related.ip": [ - "10.134.175.248" - ], - "rsa.internal.messageid": "01490113", - "rsa.misc.log_session_id": "inv", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2016-03-26T12:20:16.000Z", - "service.type": "f5", - "source.ip": "10.134.175.248", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-04-09T19:22:51.000Z", - "event.code": "01490128", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2016/04/09 17:22:51 lupta low rsitvolu[2044]: 01490128: :pori: occ: Webtop ect assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 550, - "network.application": "ect", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2044, - "rsa.internal.messageid": "01490128", - "rsa.misc.log_session_id": "occ", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2016-04-09T19:22:51.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-04-24T02:25:25.000Z", - "event.code": "syslog-ng", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2016/04/24 00:25:25 aedic high gni: [syslog-ng]", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 644, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.db.index": "[syslog-ng]", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.client": "gni", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-04-24T02:25:25.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-05-08T09:27:59.000Z", - "event.code": "01490167", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2016/05/08 07:27:59 labor low isqu: 01490167: :uis: Current snapshot ID: idolore updated inside session db for access profile: onse", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 698, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "01490167", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2016-05-08T09:27:59.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-05-22T16:30:33.000Z", - "event.code": "01490505", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2016/05/22 14:30:33 metcon low emeumfug[6823]: 01490505: :emporinc: untutlab: tem", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 834, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 6823, - "rsa.internal.event_desc": "tem", - "rsa.internal.messageid": "01490505", - "rsa.misc.log_session_id": "untutlab", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2016-05-22T16:30:33.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-06-05T23:33:08.000Z", - "event.code": "sSMTP", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2016/06/05 21:33:08 tessec very-high ali[6446]: sSMTP: ", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 920, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 6446, - "rsa.db.index": "sSMTP:", - "rsa.internal.messageid": "sSMTP", - "rsa.misc.client": "ali", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2016-06-05T23:33:08.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-06-20T06:35:42.000Z", - "event.code": "014d0044", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2016/06/20 04:35:42 riat medium atvol[98]: 014d0044: :uames: tati", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 981, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 98, - "rsa.db.index": "tati", - "rsa.internal.messageid": "014d0044", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2016-06-20T06:35:42.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-07-04T13:38:16.000Z", - "event.action": "deny", - "event.code": "01490514", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2016/07/04 11:38:16 sinto very-high CSed[2857]: 01490514: :utlabore: ecillu: Access encountered error: success. File: mnisist, Function: deny, Line: icons", - "file.name": "mnisist", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1052, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2857, - "rsa.internal.messageid": "01490514", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2016-07-04T13:38:16.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-07-18T20:40:50.000Z", - "event.action": "cancel", - "event.code": "CROND", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2016/07/18 18:40:50 lum high CROND[1675]: (sitvolup) CMD (cancel)", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 1212, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1675, - "related.user": [ - "sitvolup" - ], - "rsa.internal.messageid": "CROND", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "CROND", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-07-18T20:40:50.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "sitvolup" - }, - { - "@timestamp": "2016-08-02T03:43:25.000Z", - "destination.ip": "10.225.160.182", - "event.code": "01490500", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2016/08/02 01:43:25 uipe very-high siarchi[2289]: 01490500: :aliqu: olupta:mipsumd:eFinib: New session from client IP 10.204.123.107 (ST=saute/CC=ercit/C=usmodt) at VIP 10.225.160.182 Listener mque", - "fileset.name": "bigipapm", - "geo.city_name": "usmodt", - "geo.country_name": "ercit", - "geo.region_name": "saute", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1283, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2289, - "related.ip": [ - "10.204.123.107", - "10.225.160.182" - ], - "rsa.internal.messageid": "01490500", - "rsa.misc.log_session_id": "eFinib", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2016-08-02T03:43:25.000Z", - "service.type": "f5", - "source.ip": "10.204.123.107", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-08-16T10:45:59.000Z", - "event.code": "01490511", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2016/08/16 08:45:59 dol high quiratio[3386]: 01490511: :tisetq: tevelite: Initializing Access profile orporiss with max concurrent user sessions limit: 4739", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 1488, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 3386, - "rsa.counters.dclass_c1": 4739, - "rsa.counters.dclass_c1_str": " Max Concurrent User Sessions Limit", - "rsa.internal.messageid": "01490511", - "rsa.misc.log_session_id": "tevelite", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-08-16T10:45:59.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-08-30T17:48:33.000Z", - "event.code": "01490544", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2016/08/30 15:48:33 paquioff medium derit[4688]: 01490544: :hende: piscin: Received client info - https://mail.example.com/laboree/tfu.html?liqu=eporr#xeacomm", - "fileset.name": "bigipapm", - "http.request.referrer": "https://mail.example.com/laboree/tfu.html?liqu=eporr#xeacomm", - "input.type": "log", - "log.level": "medium", - "log.offset": 1652, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4688, - "rsa.internal.messageid": "01490544", - "rsa.misc.log_session_id": "piscin", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2016-08-30T17:48:33.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-09-14T00:51:07.000Z", - "event.code": "014d0001", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2016/09/13 22:51:07 fugiatnu high tobea[2364]: 014d0001: :tateve: ctx: itinvol, SERVER : eavolup", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 1818, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2364, - "rsa.db.index": "eavolup", - "rsa.internal.messageid": "014d0001", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-09-14T00:51:07.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-09-28T07:53:42.000Z", - "event.code": "01490103", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2016/09/28 05:53:42 remag very-high abor[5983]: 01490103: :tquiin: tse: Retry Username 'tenimad'", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1925, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5983, - "related.user": [ - "tenimad" - ], - "rsa.internal.messageid": "01490103", - "rsa.misc.log_session_id": "tse", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2016-09-28T07:53:42.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "tenimad" - }, - { - "@timestamp": "2016-10-12T14:56:16.000Z", - "event.code": "01490113", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2016/10/12 12:56:16 niamqui low amcol[5625]: 01490113: :ipisci: gitsed: session.server.network.port is 4374", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 2032, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5625, - "rsa.internal.messageid": "01490113", - "rsa.misc.log_session_id": "gitsed", - "rsa.misc.severity": "low", - "rsa.network.network_port": 4374, - "rsa.time.event_time": "2016-10-12T14:56:16.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-10-26T21:58:50.000Z", - "event.code": "01490106", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2016/10/26 19:58:50 nturma low cusant[4946]: 01490106: :etur: itecto: AD module: authentication with 'reetdol' failed: Preauthentication failed, principal name: totamre. success ercita", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 2148, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4946, - "related.user": [ - "reetdol" - ], - "rsa.internal.messageid": "01490106", - "rsa.misc.log_session_id": "itecto", - "rsa.misc.result": "success", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2016-10-26T21:58:50.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "reetdol" - }, - { - "@timestamp": "2016-11-10T05:01:24.000Z", - "event.code": "014d0044", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2016/11/10 03:01:24 proiden medium mvele[5737]: 014d0044: :aco: tio", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 2341, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5737, - "rsa.db.index": "tio", - "rsa.internal.messageid": "014d0044", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2016-11-10T05:01:24.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-11-24T12:03:59.000Z", - "event.code": "01490520", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2016/11/24 10:03:59 quaea very-high mvel[1188]: 01490520: :porinc: tetur: xce", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2418, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1188, - "rsa.internal.event_desc": "xce", - "rsa.internal.messageid": "01490520", - "rsa.misc.log_session_id": "tetur", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2016-11-24T12:03:59.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-12-08T19:06:33.000Z", - "event.code": "01490008", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2016/12/08 17:06:33 aincidu very-high uaeab[5960]: 01490008: :licabo: enimadmi: Connectivity resource utaliqu assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2505, - "network.application": "utaliqu", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5960, - "rsa.internal.messageid": "01490008", - "rsa.misc.log_session_id": "enimadmi", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2016-12-08T19:06:33.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2016-12-23T02:09:07.000Z", - "event.code": "01490128", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2016/12/23 00:09:07 cola high oremi[1485]: 01490128: :ineavol: iosa: Webtop boNemoe assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 2633, - "network.application": "boNemoe", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1485, - "rsa.internal.messageid": "01490128", - "rsa.misc.log_session_id": "iosa", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-12-23T02:09:07.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-01-06T09:11:41.000Z", - "event.code": "01490538", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "January 2017/01/06 07:11:41 Nequepor medium rem[5461]: 01490538: :esseq: adminima: Configuration snapshot deleted by Access.", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 2735, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5461, - "rsa.internal.messageid": "01490538", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2017-01-06T09:11:41.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-01-20T16:14:16.000Z", - "event.code": "01490165", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "January 2017/01/20 14:14:16 ptateve very-high miurerep: 01490165: :toccaec: Access profile: fugi initialized with configuration snapshot catalog: labo", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2860, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "01490165", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-01-20T16:14:16.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-02-03T23:16:50.000Z", - "event.code": "01490005", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2017/02/03 21:16:50 sBono high equ[4808]: 01490005: :amvo: siuta: Following rule urmagn from item dquia to ending temporin", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 3011, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4808, - "rsa.internal.messageid": "01490005", - "rsa.misc.log_session_id": "siuta", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2017-02-03T23:16:50.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-02-18T06:19:24.000Z", - "event.action": "allow", - "event.code": "01490106", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2017/02/18 04:19:24 iruredol very-high derit[5270]: 01490106: :atquo: cupi: AD module: authentication with 'strude' failed in allow: Preauthentication failed, principal name: dunt. success yCic", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3143, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5270, - "related.user": [ - "strude" - ], - "rsa.internal.messageid": "01490106", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.log_session_id": "cupi", - "rsa.misc.result": "success", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-02-18T06:19:24.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "strude" - }, - { - "@timestamp": "2017-03-04T13:21:59.000Z", - "event.code": "011f0005", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2017/03/04 11:21:59 unte very-high ueipsa[748]: 011f0005: :cti: failure (Client side: vip=https://www5.example.com/olli/rever.html?rsp=oluptat#metco profile=ipv6-icmp pool=edolorin client_ip=10.104.110.134)", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3346, - "network.protocol": "ipv6-icmp", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 748, - "related.ip": [ - "10.104.110.134" - ], - "rsa.internal.messageid": "011f0005", - "rsa.misc.result": "failure", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-03-04T13:21:59.000Z", - "service.type": "f5", - "source.ip": "10.104.110.134", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "url.domain": "www5.example.com", - "url.extension": "html", - "url.fragment": "metco", - "url.original": "https://www5.example.com/olli/rever.html?rsp=oluptat#metco", - "url.path": "/olli/rever.html", - "url.query": "rsp=oluptat", - "url.scheme": "https" - }, - { - "@timestamp": "2017-03-18T20:24:33.000Z", - "event.code": "syslog-ng", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2017/03/18 18:24:33 ptasnula high syslog-ng[2638]: ill", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 3559, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2638, - "rsa.db.index": "ill", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.client": "syslog-ng", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2017-03-18T20:24:33.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-04-02T03:27:07.000Z", - "event.code": "01490107", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2017/04/02 01:27:07 caboNem medium laudan[7589]: 01490107: :oconse: mag: AD module: authentication with 'tob' failed: Client 'dolores2519.mail.host' not found in Kerberos database, principal name:deF itempo", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 3620, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7589, - "related.hosts": [ - "dolores2519.mail.host" - ], - "related.user": [ - "tob" - ], - "rsa.db.index": "itempo", - "rsa.internal.messageid": "01490107", - "rsa.misc.log_session_id": "mag", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2017-04-02T03:27:07.000Z", - "rsa.web.fqdn": "dolores2519.mail.host", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "tob" - }, - { - "@timestamp": "2017-04-16T10:29:41.000Z", - "event.code": "01490107", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2017/04/16 08:29:41 meaque high mip[5899]: 01490107: :lamc: mvolupta: AD module: authentication with 'Utenima' failed: Clients credentials have been revoked, principal name: iqua@luptat2979.internal.local. unknown cididu", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 3833, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5899, - "related.hosts": [ - "luptat2979.internal.local" - ], - "related.user": [ - "iqua" - ], - "rsa.internal.messageid": "01490107", - "rsa.misc.log_session_id": "mvolupta", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2017-04-16T10:29:41.000Z", - "rsa.web.fqdn": "luptat2979.internal.local", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "iqua" - }, - { - "@timestamp": "2017-04-30T17:32:16.000Z", - "event.code": "01490166", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2017/04/30 15:32:16 atDuis medium nisiut: 01490166: :rumwri: Current snapshot ID: velill retrieved from session db for access profile: ore", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 4060, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "01490166", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2017-04-30T17:32:16.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-05-15T00:34:50.000Z", - "event.code": "0149016b", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2017/05/14 22:34:50 uptat high amquisno: 0149016b: :uido: Completed snapshot creation: tla for access profile: mquiad", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 4205, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "0149016b", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2017-05-15T00:34:50.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-05-29T07:37:24.000Z", - "event.action": "accept", - "event.code": "01490514", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2017/05/29 05:37:24 atur very-high ditau[4727]: 01490514: :piscivel: hend: Access encountered error: success. File: cepteur, Function: accept, Line: maliqu", - "file.name": "cepteur", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4327, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4727, - "rsa.internal.messageid": "01490514", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.result": "success", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-05-29T07:37:24.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-06-12T14:39:58.000Z", - "event.code": "01490501", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2017/06/12 12:39:58 acon very-high sun[5971]: 01490501: :labori: porai: umiure", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4487, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5971, - "rsa.internal.event_desc": "umiure", - "rsa.internal.messageid": "01490501", - "rsa.misc.log_session_id": "porai", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-06-12T14:39:58.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-06-26T21:42:33.000Z", - "destination.ip": "10.169.101.161", - "event.code": "01490500", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2017/06/26 19:42:33 eufug low uido[4318]: 01490500: :ici: snulap: New session from client IP 10.122.204.151 (ST=writte/CC=sitvo/C=ine) at VIP 10.169.101.161 Listener itessequ", - "fileset.name": "bigipapm", - "geo.city_name": "ine", - "geo.country_name": "sitvo", - "geo.region_name": "writte", - "input.type": "log", - "log.level": "low", - "log.offset": 4571, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4318, - "related.ip": [ - "10.122.204.151", - "10.169.101.161" - ], - "rsa.internal.messageid": "01490500", - "rsa.misc.log_session_id": "snulap", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2017-06-26T21:42:33.000Z", - "service.type": "f5", - "source.ip": "10.122.204.151", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-07-11T04:45:07.000Z", - "event.code": "01490113", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2017/07/11 02:45:07 udan low essequam[3682]: 01490113: :urQuis: etcon: session.server.network.protocol is onsequu", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 4751, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 3682, - "rsa.internal.messageid": "01490113", - "rsa.misc.log_session_id": "etcon", - "rsa.misc.severity": "low", - "rsa.network.network_service": "onsequu", - "rsa.time.event_time": "2017-07-11T04:45:07.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-07-25T11:47:41.000Z", - "event.code": "01490013", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2017/07/25 09:47:41 gelitse very-high arc[2412]: 01490013: :radip: upta: AD agent: Retrieving AAA server: tetura", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4870, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2412, - "rsa.internal.messageid": "01490013", - "rsa.misc.log_session_id": "upta", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-07-25T11:47:41.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-08-08T18:50:15.000Z", - "event.code": "01490517", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2017/08/08 16:50:15 imavenia low mquido[5899]: 01490517: :rnat: rur: success", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 4988, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5899, - "rsa.internal.messageid": "01490517", - "rsa.misc.log_session_id": "rur", - "rsa.misc.result": "success", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2017-08-08T18:50:15.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-08-23T01:52:50.000Z", - "event.code": "01420002", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2017/08/22 23:52:50 nonn high met[1580]: 01420002: : AUDIT - pid=2037 user=ptate folder=entsu module=conse status=failure cmd_data=ntut", - "file.directory": "entsu", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 5072, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.parent.pid": 2037, - "process.pid": 1580, - "related.user": [ - "ptate" - ], - "rsa.db.index": "ntut", - "rsa.internal.messageid": "01420002", - "rsa.misc.client": "met", - "rsa.misc.result": "failure", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2017-08-23T01:52:50.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "ptate" - }, - { - "@timestamp": "2017-09-06T08:55:24.000Z", - "event.code": "01490549", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2017/09/06 06:55:24 iconsequ high idunt[571]: 01490549: :siuta: atev: Assigned PPP Dynamic IPv4: 10.6.32.7 Tunnel Type: exerci inesciu Resource: quid Client IP: 10.198.70.58 - orem", - "fileset.name": "bigipapm", - "group.name": "exerci", - "input.type": "log", - "log.level": "high", - "log.offset": 5215, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 571, - "related.ip": [ - "10.198.70.58", - "10.6.32.7" - ], - "rsa.internal.messageid": "01490549", - "rsa.misc.group": "exerci", - "rsa.misc.log_session_id": "atev", - "rsa.misc.rule_name": "quid", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2017-09-06T08:55:24.000Z", - "rule.name": "quid", - "service.type": "f5", - "source.ip": "10.198.70.58", - "source.nat.ip": "10.6.32.7", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-09-20T15:57:58.000Z", - "event.code": "01260009", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2017/09/20 13:57:58 reetdo medium lup[5051]: 01260009: :eos: Connection error:ipitlabo", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 5406, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5051, - "rsa.internal.event_desc": "ipitlabo", - "rsa.internal.messageid": "01260009", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2017-09-20T15:57:58.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-10-04T23:00:32.000Z", - "event.code": "syslog-ng", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2017/10/04 21:00:32 reprehen very-high syslog-ng[6438]: imid", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 5503, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 6438, - "rsa.db.index": "imid", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.client": "syslog-ng", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-10-04T23:00:32.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-10-19T06:03:07.000Z", - "event.code": "01490128", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2017/10/19 04:03:07 sunt very-high aturQu[7083]: 01490128: :tDuis: iqu: Webtop oriosamn assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 5572, - "network.application": "oriosamn", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7083, - "rsa.internal.messageid": "01490128", - "rsa.misc.log_session_id": "iqu", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-10-19T06:03:07.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-11-02T13:05:41.000Z", - "event.code": "01490004", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2017/11/02 11:05:41 iquip very-high sedquian[4212]: 01490004: :etdolore: magnaa: Executed agent 'sumquiad', return value iusmodt", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 5677, - "network.application": "sumquiad", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4212, - "rsa.internal.messageid": "01490004", - "rsa.misc.result_code": "iusmodt", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-11-02T13:05:41.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-11-16T20:08:15.000Z", - "event.code": "01490538", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2017/11/16 18:08:15 equam low eaqueip[5207]: 01490538: :aevitaed: byCic: Configuration snapshot deleted by Access.", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 5815, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5207, - "rsa.internal.messageid": "01490538", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2017-11-16T20:08:15.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-12-01T03:10:49.000Z", - "event.code": "01490506", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2017/12/01 01:10:49 xerc high eturad[1760]: 01490506: :nvol: enimadmi: Received User-Agent header: mobmail android 2.1.3.3150", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 5939, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1760, - "rsa.internal.messageid": "01490506", - "rsa.misc.log_session_id": "enimadmi", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2017-12-01T03:10:49.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2017-12-15T10:13:24.000Z", - "event.code": "01490538", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2017/12/15 08:13:24 sumdolo medium rors[1935]: 01490538: :oremque: quaU: Configuration snapshot deleted by Access.", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 6074, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1935, - "rsa.internal.messageid": "01490538", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2017-12-15T10:13:24.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2017-12-29T17:15:58.000Z", - "event.code": "0149016a", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2017/12/29 15:15:58 ioff medium quioff: 0149016a: :iuntN: Initiating snapshot creation: ipis for access profile: itautfu", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 6198, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "0149016a", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2017-12-29T17:15:58.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-01-13T00:18:32.000Z", - "event.code": "01490005", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "January 2018/01/12 22:18:32 rchit medium roquisqu[5924]: 01490005: :iquid: evo: Following rule mcorpori from item mqu to ending pteursi", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 6328, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5924, - "rsa.internal.messageid": "01490005", - "rsa.misc.log_session_id": "evo", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2018-01-13T00:18:32.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-01-27T07:21:06.000Z", - "event.code": "01490128", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "January 2018/01/27 05:21:06 itessequ low fdeFinib[2580]: 01490128: :sumd: sectetur: Webtop edquian assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 6464, - "network.application": "edquian", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2580, - "rsa.internal.messageid": "01490128", - "rsa.misc.log_session_id": "sectetur", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-01-27T07:21:06.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-02-10T14:23:41.000Z", - "event.code": "0149016a", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2018/02/10 12:23:41 quiav low rit: 0149016a: :eumfu: Initiating snapshot creation: lors for access profile: oluptat", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 6572, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "0149016a", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-02-10T14:23:41.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-02-24T21:26:15.000Z", - "event.code": "01420002", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2018/02/24 19:26:15 oeiusmo very-high cusanti[5019]: 01420002: : AUDIT - pid=4996 user=rem folder=tseddoei module=teursint status=success cmd_data=remagnaa", - "file.directory": "tseddoei", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6697, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.parent.pid": 4996, - "process.pid": 5019, - "related.user": [ - "rem" - ], - "rsa.db.index": "remagnaa", - "rsa.internal.messageid": "01420002", - "rsa.misc.client": "cusanti", - "rsa.misc.result": "success", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2018-02-24T21:26:15.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "rem" - }, - { - "@timestamp": "2018-03-11T04:28:49.000Z", - "event.code": "0149016b", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2018/03/11 02:28:49 ore low ovolupta: 0149016b: :volup: Completed snapshot creation: macc for access profile: ria", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 6862, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "0149016b", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-03-11T04:28:49.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-03-25T11:31:24.000Z", - "event.code": "01490549", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2018/03/25 09:31:24 uisau high irat[2943]: 01490549: :emsequi: ueporroq: Assigned PPP Dynamic IPv4: 10.142.213.80 Tunnel Type: tationu gnaaliq Resource: olore Client IP: 10.16.181.60 - ameaquei", - "fileset.name": "bigipapm", - "group.name": "tationu", - "input.type": "log", - "log.level": "high", - "log.offset": 6982, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2943, - "related.ip": [ - "10.142.213.80", - "10.16.181.60" - ], - "rsa.internal.messageid": "01490549", - "rsa.misc.group": "tationu", - "rsa.misc.log_session_id": "ueporroq", - "rsa.misc.rule_name": "olore", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2018-03-25T11:31:24.000Z", - "rule.name": "olore", - "service.type": "f5", - "source.ip": "10.16.181.60", - "source.nat.ip": "10.142.213.80", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-04-08T18:33:58.000Z", - "event.code": "syslog-ng", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2018/04/08 16:33:58 liq low mvolupta: syslog-ng: ", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 7182, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.db.index": "syslog-ng:", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.client": "mvolupta", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-04-08T18:33:58.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-04-23T01:36:32.000Z", - "event.code": "01490101", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2018/04/22 23:36:32 exe high illum[2625]: 01490101: :emi: reprehen: Access profile: tvol configuration has been applied. Newly active generation count is: 5959", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 7238, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2625, - "rsa.counters.dclass_c1": 5959, - "rsa.counters.dclass_c1_str": "Newly active generation count", - "rsa.internal.messageid": "01490101", - "rsa.misc.log_session_id": "reprehen", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2018-04-23T01:36:32.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-05-07T08:39:06.000Z", - "destination.ip": "10.47.99.72", - "event.code": "01490500", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2018/05/07 06:39:06 iumt medium nulapari[1973]: 01490500: :tsunt: rnat:oremi:ectobeat: New session from client IP 10.187.64.126 (ST=uasiarch/CC=Malor/C=boriosa) at VIP 10.47.99.72 Listener upt (Reputation=oremipsu)", - "fileset.name": "bigipapm", - "geo.city_name": "boriosa", - "geo.country_name": "Malor", - "geo.region_name": "uasiarch", - "input.type": "log", - "log.level": "medium", - "log.offset": 7404, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1973, - "related.ip": [ - "10.187.64.126", - "10.47.99.72" - ], - "rsa.internal.messageid": "01490500", - "rsa.misc.category": "oremipsu", - "rsa.misc.log_session_id": "ectobeat", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2018-05-07T08:39:06.000Z", - "service.type": "f5", - "source.ip": "10.187.64.126", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-05-21T15:41:41.000Z", - "event.code": "auditd", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2018/05/21 13:41:41 sint low auditd[3376]: ctobeat", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 7623, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 3376, - "rsa.db.index": "ctobeat", - "rsa.internal.messageid": "auditd", - "rsa.misc.client": "auditd", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-05-21T15:41:41.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-06-04T22:44:15.000Z", - "event.code": "syslog-ng", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2018/06/04 20:44:15 lorumw high tdolo[3872]: syslog-ng: ", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 7678, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 3872, - "rsa.db.index": "syslog-ng:", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.client": "tdolo", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2018-06-04T22:44:15.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-06-19T05:46:49.000Z", - "event.code": "014d0044", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2018/06/19 03:46:49 namaliqu medium aeca[4543]: 014d0044: :autemv: sciveli", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 7740, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4543, - "rsa.db.index": "sciveli", - "rsa.internal.messageid": "014d0044", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2018-06-19T05:46:49.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-07-03T12:49:23.000Z", - "event.code": "01260009", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2018/07/03 10:49:23 piciati medium ntin[4646]: 01260009: :rcitat: Connection error:cinge", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 7820, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4646, - "rsa.internal.event_desc": "cinge", - "rsa.internal.messageid": "01260009", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2018-07-03T12:49:23.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-07-17T19:51:58.000Z", - "event.code": "01490142", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2018/07/17 17:51:58 iqui low litani[3126]: 01490142: :itanimi: onoru: data", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 7914, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 3126, - "rsa.internal.event_desc": "data", - "rsa.internal.messageid": "01490142", - "rsa.misc.log_session_id": "onoru", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-07-17T19:51:58.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-08-01T02:54:32.000Z", - "event.code": "01490079", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2018/08/01 00:54:32 uptatem high ruredol: 01490079: :iadeseru: loremagn: Access policy 'acons' configuration has changed.Access profile 'nimadmi' configuration changes need to be applied for the new configuration", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 7994, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "01490079", - "rsa.misc.log_session_id": "loremagn", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2018-08-01T02:54:32.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-08-15T09:57:06.000Z", - "event.code": "01490167", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2018/08/15 07:57:06 lupt very-high eavolupt: 01490167: :uipe: Current snapshot ID: ipsa updated inside session db for access profile: con", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 8214, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "01490167", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2018-08-15T09:57:06.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-08-29T16:59:40.000Z", - "event.code": "01490008", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2018/08/29 14:59:40 nesciu low ssequ[4877]: 01490008: :emse: emqui: Connectivity resource cipitla assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 8359, - "network.application": "cipitla", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4877, - "rsa.internal.messageid": "01490008", - "rsa.misc.log_session_id": "emqui", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-08-29T16:59:40.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-09-13T00:02:15.000Z", - "event.code": "01490102", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2018/09/12 22:02:15 ionevo high ptate[52]: 01490102: :uira: todita: Access policy result: failure", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 8473, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 52, - "rsa.internal.messageid": "01490102", - "rsa.misc.log_session_id": "todita", - "rsa.misc.result": "failure", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2018-09-13T00:02:15.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-09-27T07:04:49.000Z", - "event.code": "01490113", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2018/09/27 05:04:49 iqu low tatis[7767]: 01490113: :reeufugi: sequines: session.server.network.protocol is minimve", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 8581, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7767, - "rsa.internal.messageid": "01490113", - "rsa.misc.log_session_id": "sequines", - "rsa.misc.severity": "low", - "rsa.network.network_service": "minimve", - "rsa.time.event_time": "2018-09-27T07:04:49.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-10-11T14:07:23.000Z", - "event.code": "014d0002", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2018/10/11 12:07:23 aborio low setquas: 014d0002: :nbyCi: runtmoll: SSOv2 Logon failed, config busBon form norumetM", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 8706, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "014d0002", - "rsa.misc.disposition": "Failed", - "rsa.misc.log_session_id": "runtmoll", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-10-11T14:07:23.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-10-25T21:09:57.000Z", - "event.code": "01490113", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2018/10/25 19:09:57 billoinv high deomn[904]: 01490113: :mali: roinBCSe: session.server.network.port is 3959", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 8830, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 904, - "rsa.internal.messageid": "01490113", - "rsa.misc.log_session_id": "roinBCSe", - "rsa.misc.severity": "high", - "rsa.network.network_port": 3959, - "rsa.time.event_time": "2018-10-25T21:09:57.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-11-09T04:12:32.000Z", - "event.code": "01490079", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2018/11/09 02:12:32 rch high sedd: 01490079: :atione: tvolup: Access policy 'oremeu' configuration has changed.Access profile 'lab' configuration changes need to be applied for the new configuration", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 8947, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "01490079", - "rsa.misc.log_session_id": "tvolup", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2018-11-09T04:12:32.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-11-23T11:15:06.000Z", - "event.code": "01490538", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2018/11/23 09:15:06 urau medium upt[4762]: 01490538: :itaedict: eroi: Configuration snapshot deleted by Access.", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 9155, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4762, - "rsa.internal.messageid": "01490538", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-12-07T18:17:40.000Z", - "event.code": "01490113", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2018/12/07 16:17:40 reetdo low nidol[4345]: 01490113: :writtenb: atevelit: session.server.listener.name is ugitsed", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 9276, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4345, - "rsa.internal.messageid": "01490113", - "rsa.misc.log_session_id": "atevelit", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2018-12-07T18:17:40.000Z", - "service.name": "ugitsed", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2018-12-22T01:20:14.000Z", - "event.code": "01490102", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2018/12/21 23:20:14 uatDuisa high ano[4054]: 01490102: :uunturm: iatn: Access policy result: unknown", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 9400, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4054, - "rsa.internal.messageid": "01490102", - "rsa.misc.log_session_id": "iatn", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2018-12-22T01:20:14.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "event.code": "01490113", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "January 2019/01/05 06:22:49 psum very-high exerci[3923]: 01490113: :lumqu: moen: session.oinvento", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 9510, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 3923, - "rsa.db.index": "oinvento", - "rsa.internal.messageid": "01490113", - "rsa.misc.log_session_id": "moen", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-01-19T15:25:23.000Z", - "event.action": "block", - "event.code": "crond", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "January 2019/01/19 13:25:23 volup very-high crond[4071]: (iconsequ) CMD (block)", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 9608, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4071, - "related.user": [ - "iconsequ" - ], - "rsa.internal.messageid": "crond", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.client": "crond", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-01-19T15:25:23.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "iconsequ" - }, - { - "@timestamp": "2019-02-02T22:27:57.000Z", - "event.code": "01490008", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2019/02/02 20:27:57 archite high rem[6473]: 01490008: :emp: inBC: Connectivity resource did assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 9688, - "network.application": "did", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 6473, - "rsa.internal.messageid": "01490008", - "rsa.misc.log_session_id": "inBC", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-02-02T22:27:57.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "event.code": "0149016a", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "February 2019/02/17 03:30:32 etconse medium uinesci: 0149016a: :otamr: Initiating snapshot creation: tsed for access profile: rExc", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 9798, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "0149016a", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "event.code": "01490501", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2019/03/03 10:33:06 omnisis very-high uptatema[7023]: 01490501: :stiaec: Cicero: ven", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 9929, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7023, - "rsa.internal.event_desc": "ven", - "rsa.internal.messageid": "01490501", - "rsa.misc.log_session_id": "Cicero", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-03-17T19:35:40.000Z", - "event.code": "011f0005", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "March 2019/03/17 17:35:40 cons low ine[870]: 011f0005: :amquisn: success (Client side: vip=https://example.net/equamn/scipi.txt?eiu=maliquam#gnama profile=rdp pool=squamest client_ip=10.24.113.101)", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 10020, - "network.protocol": "rdp", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 870, - "related.ip": [ - "10.24.113.101" - ], - "rsa.internal.messageid": "011f0005", - "rsa.misc.result": "success", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2019-03-17T19:35:40.000Z", - "service.type": "f5", - "source.ip": "10.24.113.101", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "url.domain": "example.net", - "url.extension": "txt", - "url.fragment": "gnama", - "url.original": "https://example.net/equamn/scipi.txt?eiu=maliquam#gnama", - "url.path": "/equamn/scipi.txt", - "url.query": "eiu=maliquam", - "url.scheme": "https" - }, - { - "@timestamp": "2019-04-01T02:38:14.000Z", - "event.code": "014d0044", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2019/04/01 00:38:14 uelaudan low teiru[4918]: 014d0044: :orinrep: pta", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 10218, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 4918, - "rsa.db.index": "pta", - "rsa.internal.messageid": "014d0044", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2019-04-01T02:38:14.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "destination.bytes": 6092, - "event.code": "01490521", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2019/04/15 07:40:49 sis very-high rchite[7405]: 01490521: :rvelill: rors: Session statistics - bytes in:6092, bytes out: 1363", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 10294, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7405, - "rsa.internal.messageid": "01490521", - "rsa.misc.log_session_id": "rors", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "service.type": "f5", - "source.bytes": 1363, - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-29T16:43:23.000Z", - "event.action": "cancel", - "event.code": "CROND", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "April 2019/04/29 14:43:23 Nequepo high CROND[2977]: (emac) CMD (cancel)", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 10426, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2977, - "related.user": [ - "emac" - ], - "rsa.internal.messageid": "CROND", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "CROND", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-04-29T16:43:23.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "emac" - }, - { - "@timestamp": "2019-05-13T23:45:57.000Z", - "event.code": "0149016b", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2019/05/13 21:45:57 isci high ugiatn: 0149016b: :squa: Completed snapshot creation: deseru for access profile: aquioff", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 10498, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "0149016b", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-05-13T23:45:57.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "event.code": "01490106", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "May 2019/05/28 04:48:31 onsequat high giatq[7733]: 01490106: :imad: tura: AD module: authentication with 'equuntur' failed: Preauthentication failed, principal name: rve. success mqua", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 10621, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7733, - "related.user": [ - "equuntur" - ], - "rsa.internal.messageid": "01490106", - "rsa.misc.log_session_id": "tura", - "rsa.misc.result": "success", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "equuntur" - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "event.code": "01490008", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2019/06/11 11:51:06 utlabore very-high exea[2867]: 01490008: :amquisn: itquii: Connectivity resource imaven assigned", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 10805, - "network.application": "imaven", - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2867, - "rsa.internal.messageid": "01490008", - "rsa.misc.log_session_id": "itquii", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-06-25T20:53:40.000Z", - "event.code": "01490511", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "June 2019/06/25 18:53:40 lloinve low nim[7673]: 01490511: :edquiac: psamvolu: Initializing Access profile teturad with max concurrent user sessions limit: 7783", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 10927, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7673, - "rsa.counters.dclass_c1": 7783, - "rsa.counters.dclass_c1_str": " Max Concurrent User Sessions Limit", - "rsa.internal.messageid": "01490511", - "rsa.misc.log_session_id": "psamvolu", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2019-06-25T20:53:40.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "event.code": "01490000", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2019/07/10 01:56:14 tatemse low vitae[72]: 01490000: :samvolu: dip", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 11087, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 72, - "rsa.internal.event_desc": "dip", - "rsa.internal.messageid": "01490000", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "event.code": "01490007", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "July 2019/07/24 08:58:48 Dui medium nostrude[7057]: 01490007: :ione: ecillum: Session variable 'maccu' set to ame", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 11159, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 7057, - "rsa.internal.messageid": "01490007", - "rsa.misc.change_attrib": "maccu", - "rsa.misc.change_new": "ame", - "rsa.misc.log_session_id": "ecillum", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-08-07T18:01:23.000Z", - "destination.bytes": 2132, - "event.code": "01490521", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2019/08/07 16:01:23 reprehe medium enimipsa[2698]: 01490521: :samn: quisnos: Session statistics - bytes in:2132, bytes out: 2552", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 11273, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2698, - "rsa.internal.messageid": "01490521", - "rsa.misc.log_session_id": "quisnos", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-08-07T18:01:23.000Z", - "service.type": "f5", - "source.bytes": 2552, - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-08-22T01:03:57.000Z", - "event.code": "01490019", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "August 2019/08/21 23:03:57 Nequepor low temseq[613]: 01490019: :ostrumex: suscipi: AD agent: Query: query with '(sAMAccountName=xplicabo)' successful", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 11409, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 613, - "related.user": [ - "xplicabo" - ], - "rsa.internal.messageid": "01490019", - "rsa.misc.disposition": " Successful", - "rsa.misc.log_session_id": "suscipi", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2019-08-22T01:03:57.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "xplicabo" - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "event.code": "01490544", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2019/09/05 06:06:31 ameaquei very-high uelaud[1306]: 01490544: :ameiu: utei: Received client info - https://internal.example.net/lumquid/oluptat.jpg?equepor=iosamn#erspicia", - "fileset.name": "bigipapm", - "http.request.referrer": "https://internal.example.net/lumquid/oluptat.jpg?equepor=iosamn#erspicia", - "input.type": "log", - "log.level": "very-high", - "log.offset": 11559, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 1306, - "rsa.internal.messageid": "01490544", - "rsa.misc.log_session_id": "utei", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-09-19T15:09:05.000Z", - "event.code": "01490079", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "September 2019/09/19 13:09:05 psumqui high ncu: 01490079: :quaturve: ciad: Access policy 'diconseq' configuration has changed.Access profile 'utod' configuration changes need to be applied for the new configuration", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "high", - "log.offset": 11742, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.internal.messageid": "01490079", - "rsa.misc.log_session_id": "ciad", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-09-19T15:09:05.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-03T22:11:40.000Z", - "event.code": "01490013", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2019/10/03 20:11:40 giatquo low dipisciv[5944]: 01490013: :atquo: umetMa: AD agent: Retrieving AAA server: ngelitse", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 11957, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 5944, - "rsa.internal.messageid": "01490013", - "rsa.misc.log_session_id": "umetMa", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2019-10-03T22:11:40.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "event.action": "deny", - "event.code": "Rule", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "October 2019/10/18 03:14:14 tem very-high giatnula[71]: Rule: enimadmi <: APM_EVENT=deny | aecon | sedq ***failure***", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 12081, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 71, - "related.user": [ - "aecon" - ], - "rsa.internal.event_desc": "qui", - "rsa.internal.messageid": "Rule", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.misc.rule_name": "enimadmi", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "rule.name": "enimadmi", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "aecon" - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "event.code": "syslog-ng", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2019/11/01 10:16:48 erc low tasnu: [syslog-ng]", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "low", - "log.offset": 12204, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "rsa.db.index": "[syslog-ng]", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.client": "tasnu", - "rsa.misc.severity": "low", - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-11-15T19:19:22.000Z", - "event.code": "01490019", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2019/11/15 17:19:22 ationevo very-high datatno[3538]: 01490019: :siar: orisnis: AD agent: Query: query with '(sAMAccountName=texp)' successful", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 12260, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 3538, - "related.user": [ - "texp" - ], - "rsa.internal.messageid": "01490019", - "rsa.misc.disposition": " Successful", - "rsa.misc.log_session_id": "orisnis", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-11-15T19:19:22.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "texp" - }, - { - "@timestamp": "2019-11-30T02:21:57.000Z", - "event.code": "sSMTP", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "November 2019/11/30 00:21:57 pidat very-high sSMTP[6673]: ptateve", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 12412, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 6673, - "rsa.db.index": "ptateve", - "rsa.internal.messageid": "sSMTP", - "rsa.misc.client": "sSMTP", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-11-30T02:21:57.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ] - }, - { - "@timestamp": "2019-12-14T09:24:31.000Z", - "event.action": "allow", - "event.code": "01490106", - "event.dataset": "f5.bigipapm", - "event.module": "f5", - "event.original": "December 2019/12/14 07:24:31 olupta medium oremagn[2121]: 01490106: :itseddo: uptatev: AD module: authentication with 'oditem' failed in allow: Preauthentication failed, principal name: inimaven. failure olor", - "fileset.name": "bigipapm", - "input.type": "log", - "log.level": "medium", - "log.offset": 12478, - "observer.product": "Big-IP", - "observer.type": "Access", - "observer.vendor": "F5", - "process.pid": 2121, - "related.user": [ - "oditem" - ], - "rsa.internal.messageid": "01490106", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.log_session_id": "uptatev", - "rsa.misc.result": "failure", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-12-14T09:24:31.000Z", - "service.type": "f5", - "tags": [ - "f5.bigipapm", - "forwarded" - ], - "user.name": "oditem" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/f5/fields.go b/x-pack/filebeat/module/f5/fields.go deleted file mode 100644 index ca33378c321..00000000000 --- a/x-pack/filebeat/module/f5/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package f5 - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "f5", asset.ModuleFieldsPri, AssetF5); err != nil { - panic(err) - } -} - -// AssetF5 returns asset data. -// This is the base64 encoded zlib format compressed contents of module/f5. -func AssetF5() string { - return "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" -} diff --git a/x-pack/filebeat/module/fortinet/_meta/config.yml b/x-pack/filebeat/module/fortinet/_meta/config.yml index 0412d06bd2c..971e753bf1c 100644 --- a/x-pack/filebeat/module/fortinet/_meta/config.yml +++ b/x-pack/filebeat/module/fortinet/_meta/config.yml @@ -27,60 +27,3 @@ # [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/network-direction-processor.html#supported-named-network-ranges). # This can't be used in combination with internal_interfaces and external_interfaces. #var.internal_networks: [ "private" ] - - clientendpoint: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9510 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - fortimail: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9529 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - fortimanager: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9530 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/fortinet/_meta/docs.asciidoc b/x-pack/filebeat/module/fortinet/_meta/docs.asciidoc index 4b224e49019..d691fb1125d 100644 --- a/x-pack/filebeat/module/fortinet/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/fortinet/_meta/docs.asciidoc @@ -11,9 +11,6 @@ This is a module for Fortinet logs sent in the syslog format. It supports the following devices: - `firewall` fileset: Supports FortiOS Firewall logs. -- `clientendpoint` fileset: Supports FortiClient Endpoint Protection logs. -- `fortimail` fileset: Supports FortiMail logs. -- `fortimanager` fileset: Supports FortiManager logs. To configure a remote syslog destination, please reference the https://docs.fortinet.com/document/fortigate/6.0.0/cli-reference/260508/log-syslogd-syslogd2-syslogd3-syslogd4-setting[Fortigate/FortiOS Documentation]. @@ -71,147 +68,6 @@ events. Defaults to `[fortinet-firewall, forwarded]`. :fileset_ex!: -[float] -==== `clientendpoint` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/fortinet_forticlient[Fortinet FortiClient Logs] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "forticlientendpoint" device revision 0. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9510` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `fortimail` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/fortinet_fortimail[Fortinet FortiMail] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "fortinetfortimail" device revision 131. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9529` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `fortimanager` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/fortinet_fortimanager[Fortinet FortiManager Logs] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "fortinetmgr" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9530` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - [float] ==== Fortinet ECS fields diff --git a/x-pack/filebeat/module/fortinet/clientendpoint/_meta/fields.yml b/x-pack/filebeat/module/fortinet/clientendpoint/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/fortinet/clientendpoint/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/fortinet/clientendpoint/config/input.yml b/x-pack/filebeat/module/fortinet/clientendpoint/config/input.yml deleted file mode 100644 index 5505a5c6f03..00000000000 --- a/x-pack/filebeat/module/fortinet/clientendpoint/config/input.yml +++ /dev/null @@ -1,93 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else if eq .input "tcp" }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" -framing: rfc6587 - -{{ else if eq .input "udp" }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Fortinet" - product: "FortiClient" - type: "Anti-Virus" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/fortinet/clientendpoint/config/liblogparser.js - - ${path.home}/module/fortinet/clientendpoint/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/fortinet/clientendpoint/config/liblogparser.js b/x-pack/filebeat/module/fortinet/clientendpoint/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/fortinet/clientendpoint/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{fld2->} %{fld3->} %{hostname->} proto=%{protocol->} service=%{network_service->} status=deny src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} server_app=%{fld12->} pid=%{process_id->} app_name=%{fld14->} traff_direct=%{direction->} block_count=%{dclass_counter1->} logon_user=%{username}@%{domain->} msg=%{result}", processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup2, - dup8, -])); - -var hdr1 = match("HEADER#0:0001", "message", "%{hmonth->} %{hday->} %{htime->} %{hhostname->} proto=%{hprotocol->} service=%{messageid->} status=%{haction->} src=%{hsaddr->} dst=%{hdaddr->} src_port=%{hsport->} dst_port=%{hdport->} %{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hday"), - constant(" "), - field("htime"), - constant(" "), - field("hhostname"), - constant(" proto="), - field("hprotocol"), - constant(" service="), - field("messageid"), - constant(" status="), - field("haction"), - constant(" src="), - field("hsaddr"), - constant(" dst="), - field("hdaddr"), - constant(" src_port="), - field("hsport"), - constant(" dst_port="), - field("hdport"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0003", "message", "%{hmonth->} %{hday->} %{htime->} %{hhostname->} (%{messageid->} %{hfld5->} times in last %{hfld6}) %{hfld7->} %{hfld8}::%{p0}", processor_chain([ - setc("header_id","0003"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hday"), - constant(" "), - field("htime"), - constant(" "), - field("hhostname"), - constant(" ("), - field("messageid"), - constant(" "), - field("hfld5"), - constant(" times in last "), - field("hfld6"), - constant(") "), - field("hfld7"), - constant(" "), - field("hfld8"), - constant("::"), - field("p0"), - ], - }), -])); - -var hdr3 = match("HEADER#2:0002", "message", "%{hmonth->} %{hday->} %{htime->} %{hhostname->} %{messageid->} %{hfld5}::%{p0}", processor_chain([ - setc("header_id","0002"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hmonth"), - constant(" "), - field("hday"), - constant(" "), - field("htime"), - constant(" "), - field("hhostname"), - constant(" "), - field("messageid"), - constant(" "), - field("hfld5"), - constant("::"), - field("p0"), - ], - }), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, -]); - -var part1 = match("MESSAGE#0:enter", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{hostname->} enter %{info}", processor_chain([ - dup1, - dup2, -])); - -var msg1 = msg("enter", part1); - -var part2 = match("MESSAGE#1:repeated", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{hostname->} (repeated %{fld5->} times in last %{fld6}) enter %{info}", processor_chain([ - dup1, - dup2, -])); - -var msg2 = msg("repeated", part2); - -var msg3 = msg("ms-wbt-server", dup9); - -var msg4 = msg("http", dup9); - -var msg5 = msg("https", dup9); - -var msg6 = msg("smtp", dup9); - -var msg7 = msg("pop3", dup9); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "enter": msg1, - "http": msg4, - "https": msg5, - "ms-wbt-server": msg3, - "pop3": msg7, - "repeated": msg2, - "smtp": msg6, - }), -]); - -var part3 = match("MESSAGE#2:ms-wbt-server", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3->} %{hostname->} proto=%{protocol->} service=%{network_service->} status=deny src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} server_app=%{fld12->} pid=%{process_id->} app_name=%{fld14->} traff_direct=%{direction->} block_count=%{dclass_counter1->} logon_user=%{username}@%{domain->} msg=%{result}", processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup2, - dup8, -])); diff --git a/x-pack/filebeat/module/fortinet/clientendpoint/ingest/pipeline.yml b/x-pack/filebeat/module/fortinet/clientendpoint/ingest/pipeline.yml deleted file mode 100644 index 28fa93a69a2..00000000000 --- a/x-pack/filebeat/module/fortinet/clientendpoint/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Fortinet FortiClient Endpoint Security - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/fortinet/clientendpoint/manifest.yml b/x-pack/filebeat/module/fortinet/clientendpoint/manifest.yml deleted file mode 100644 index d51ef04d332..00000000000 --- a/x-pack/filebeat/module/fortinet/clientendpoint/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["fortinet.clientendpoint", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9530 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log b/x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log deleted file mode 100644 index 11c42635932..00000000000 --- a/x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -January 29 06:09:59 boNemoe4402.www.invalid proto=udp service=http status=deny src=10.150.92.220 dst=10.102.123.34 src_port=7178 dst_port=3994 server_app=reeufugi pid=7880 app_name=enderitq traff_direct=external block_count=5286 logon_user=sumdo@litesse6379.api.domain msg=failure -February 12 13:12:33 olupt4880.api.home proto=icmp service=https status=deny src=10.33.212.159 dst=10.149.203.46 src_port=2789 dst_port=5861 server_app=vol pid=4539 app_name=uidolor traff_direct=internal block_count=4402 logon_user=mipsumq@gnaali6189.internal.localhost msg=unknown -February 26 20:15:08 aqu1628.internal.domain proto=ipv6-icmp service=smtp status=deny src=10.173.116.41 dst=10.118.175.9 src_port=3710 dst_port=2802 server_app=aer pid=445 app_name=nse traff_direct=unknown block_count=7019 logon_user=uame@quis1130.internal.corp msg=success -March 12 03:17:42 tinculp2940.internal.local proto=ggp service=https status=deny src=10.134.137.177 dst=10.202.204.154 src_port=7868 dst_port=3587 server_app=amco pid=5712 app_name=psumquia traff_direct=unknown block_count=2458 logon_user=orsitame@reprehe189.internal.home msg=success -March 26 10:20:16 rad2103.api.domain proto=ipv6-icmp service=pop3 status=deny src=10.245.142.250 dst=10.70.0.60 src_port=5408 dst_port=4982 server_app=estqui pid=6557 app_name=magn traff_direct=inbound block_count=2638 logon_user=eos@enimad2283.internal.domain msg=failure -April 9 17:22:51 enim5316.www5.local proto=ipv6-icmp service=smtp status=deny src=10.202.72.124 dst=10.200.188.142 src_port=4665 dst_port=7143 server_app=omnis pid=2061 app_name=eip traff_direct=external block_count=513 logon_user=iusmodt@doloreeu3553.www5.home msg=unknown -April 24 00:25:25 reetdolo2770.www5.local proto=tcp service=pop3 status=deny src=10.12.44.169 dst=10.214.225.125 src_port=5710 dst_port=2121 server_app=inBCSedu pid=5722 app_name=tanimi traff_direct=outbound block_count=6071 logon_user=erep@iutal13.api.localdomain msg=failure -May 8 07:27:59 isiu1114.internal.corp proto=icmp service=http status=deny src=10.66.108.11 dst=10.198.136.50 src_port=6875 dst_port=2089 server_app=ipis pid=5037 app_name=ari traff_direct=unknown block_count=3856 logon_user=uptatev@uovol492.www.localhost msg=unknown -May 22 14:30:33 usmodte1296.www.corp proto=igmp service=ms-wbt-server status=deny src=10.178.244.31 dst=10.69.20.77 src_port=3857 dst_port=7579 server_app=nonnu pid=776 app_name=riat traff_direct=unknown block_count=5575 logon_user=umdolor@osquir6997.corp msg=failure -June 5 21:33:08 tatno4987.www5.localhost proto=ggp service=pop3 status=deny src=10.54.231.100 dst=10.203.5.162 src_port=5616 dst_port=7290 server_app=iam pid=6096 app_name=ciati traff_direct=unknown block_count=3162 logon_user=umdolore@eniam7007.api.invalid msg=success -June 20 04:35:42 tatno6787.internal.localhost proto=icmp service=pop3 status=deny src=10.65.83.160 dst=10.136.252.240 src_port=3592 dst_port=4105 server_app=uradi pid=7307 app_name=essequ traff_direct=outbound block_count=7148 logon_user=ender@snulapar3794.api.domain msg=failure -July 4 11:38:16 essecill2595.mail.local proto=ggp service=http status=deny src=10.57.40.29 dst=10.210.213.18 src_port=7616 dst_port=3970 server_app=atuse pid=2703 app_name=uis traff_direct=internal block_count=6179 logon_user=onse@liq5883.localdomain msg=unknown -July 18 18:40:50 ali6446.localhost proto=udp service=smtp status=deny src=10.144.82.69 dst=10.200.156.102 src_port=2896 dst_port=6061 server_app=rporis pid=5166 app_name=par traff_direct=outbound block_count=7041 logon_user=rveli@rsint7026.test msg=success -August 2 01:43:25 torev7118.internal.domain proto=ipv6 service=smtp status=deny src=10.109.232.112 dst=10.72.58.135 src_port=5160 dst_port=2382 server_app=fugit pid=7668 app_name=rsitamet traff_direct=internal block_count=1112 logon_user=xea@qua2945.www.local msg=failure -August 16 08:45:59 dolore6103.www5.example proto=udp service=http status=deny src=10.38.22.45 dst=10.72.29.73 src_port=1493 dst_port=203 server_app=piscing pid=1044 app_name=entsu traff_direct=unknown block_count=4979 logon_user=onproide@luptat6494.www.example msg=failure -August 30 15:48:33 errorsi6996.www.domain proto=tcp service=smtp status=deny src=10.70.95.74 dst=10.76.72.111 src_port=6119 dst_port=7388 server_app=emaperi pid=7183 app_name=sumquiad traff_direct=internal block_count=2362 logon_user=ivelits@moenimi6317.internal.invalid msg=failure -September 13 22:51:07 lumquido5839.api.corp proto=ipv6 service=https status=deny src=10.19.201.13 dst=10.73.69.75 src_port=5006 dst_port=6218 server_app=nsec pid=6907 app_name=estqu traff_direct=unknown block_count=2655 logon_user=tat@tion1761.home msg=unknown -September 28 05:53:42 aperia4409.www5.invalid proto=rdp service=ms-wbt-server status=deny src=10.78.151.178 dst=10.84.105.75 src_port=1846 dst_port=98 server_app=uames pid=499 app_name=msequi traff_direct=external block_count=4085 logon_user=iquaUten@santium4235.api.local msg=unknown -October 12 12:56:16 tem2496.api.lan proto=rdp service=ms-wbt-server status=deny src=10.135.233.146 dst=10.25.192.202 src_port=4181 dst_port=6462 server_app=ents pid=1531 app_name=Loremip traff_direct=internal block_count=4610 logon_user=emeumfu@CSed2857.www5.example msg=failure -October 26 19:58:50 eme6710.mail.invalid proto=rdp service=https status=deny src=10.121.219.204 dst=10.104.134.200 src_port=3611 dst_port=2508 server_app=reetd pid=6051 app_name=quae traff_direct=outbound block_count=7084 logon_user=uptat@equep5085.mail.domain msg=failure -November 10 03:01:24 ihilm1669.mail.invalid proto=tcp service=https status=deny src=10.191.105.82 dst=10.225.160.182 src_port=3361 dst_port=4810 server_app=uovolup pid=6994 app_name=llu traff_direct=external block_count=3936 logon_user=eirure@conseq557.mail.lan msg=unknown -November 24 10:03:59 umexerci1284.internal.localdomain proto=rdp service=smtp status=deny src=10.141.44.153 dst=10.161.57.8 src_port=3750 dst_port=2716 server_app=oei pid=5200 app_name=snostrud traff_direct=inbound block_count=3333 logon_user=quisnos@ite2026.www.invalid msg=failure -December 8 17:06:33 adol485.example proto=udp service=https status=deny src=10.153.111.103 dst=10.6.167.7 src_port=4977 dst_port=2022 server_app=taevit pid=3365 app_name=nsecte traff_direct=internal block_count=7424 logon_user=eumfug@lit5929.test msg=success -December 23 00:09:07 evita5008.www.localdomain proto=ggp service=pop3 status=deny src=10.248.204.182 dst=10.134.148.219 src_port=1331 dst_port=4430 server_app=tmo pid=1835 app_name=abi traff_direct=inbound block_count=4168 logon_user=uioffi@oru6938.invalid msg=success -January 6 07:11:41 tsedqu2456.www5.invalid proto=ipv6 service=smtp status=deny src=10.178.77.231 dst=10.163.5.243 src_port=5294 dst_port=4129 server_app=xerc pid=2019 app_name=hitecto traff_direct=unknown block_count=1123 logon_user=liquide@etdol5473.local msg=success -January 20 14:14:16 ris3314.mail.invalid proto=ggp service=smtp status=deny src=10.177.194.18 dst=10.221.89.228 src_port=766 dst_port=2447 server_app=uamei pid=2493 app_name=aera traff_direct=outbound block_count=1747 logon_user=aliquam@nimid893.mail.corp msg=success -February 3 21:16:50 reme622.mail.example proto=icmp service=ms-wbt-server status=deny src=10.241.65.49 dst=10.32.239.1 src_port=3027 dst_port=3128 server_app=dictasu pid=3022 app_name=catc traff_direct=unknown block_count=3522 logon_user=idata@rumwritt6003.host msg=failure -February 18 04:19:24 non3341.mail.invalid proto=ggp service=http status=deny src=10.168.90.81 dst=10.101.57.120 src_port=6866 dst_port=6501 server_app=laboree pid=2328 app_name=intocc traff_direct=internal block_count=5516 logon_user=eporr@xeacomm6855.api.corp msg=success -March 4 11:21:59 ris727.api.local proto=tcp service=ms-wbt-server status=deny src=10.14.211.43 dst=10.130.14.60 src_port=4456 dst_port=2051 server_app=autfu pid=1156 app_name=tessec traff_direct=external block_count=7200 logon_user=litse@icabo4125.mail.domain msg=unknown -March 18 18:24:33 stquido5705.api.host proto=icmp service=http status=deny src=10.60.129.15 dst=10.248.101.25 src_port=106 dst_port=5740 server_app=Nequepo pid=6003 app_name=pora traff_direct=unknown block_count=6437 logon_user=evolup@ionofdeF5643.www.localhost msg=success -April 2 01:27:07 etcons7378.api.lan proto=tcp service=https status=deny src=10.72.93.28 dst=10.111.187.12 src_port=3577 dst_port=3994 server_app=aper pid=5651 app_name=tur traff_direct=inbound block_count=3427 logon_user=niamqui@orem6702.invalid msg=failure -April 16 08:29:41 vita2681.www5.local proto=icmp service=ms-wbt-server status=deny src=10.27.14.168 dst=10.66.2.232 src_port=2224 dst_port=5764 server_app=fugiatn pid=3470 app_name=ipsumd traff_direct=outbound block_count=6708 logon_user=uirati@oin6780.mail.domain msg=unknown -April 30 15:32:16 tnulapa7592.www.local proto=ggp service=ms-wbt-server status=deny src=10.75.99.127 dst=10.195.2.130 src_port=1766 dst_port=202 server_app=mporin pid=6932 app_name=nisiuta traff_direct=internal block_count=3828 logon_user=inibusB@eprehen3224.www5.localdomain msg=failure -May 14 22:34:50 lup2134.www.localhost proto=ipv6 service=pop3 status=deny src=10.201.238.90 dst=10.245.104.182 src_port=3759 dst_port=55 server_app=ccaecat pid=6945 app_name=onsequ traff_direct=outbound block_count=4198 logon_user=ovol@ptasn6599.www.localhost msg=success -May 29 05:37:24 tanimid3337.mail.corp proto=ipv6-icmp service=http status=deny src=10.217.150.196 dst=10.105.91.31 src_port=2056 dst_port=5987 server_app=loreme pid=853 app_name=psumquia traff_direct=external block_count=4444 logon_user=con@nisist2752.home msg=unknown -June 12 12:39:58 eumiu765.api.lan proto=ipv6-icmp service=https status=deny src=10.4.157.1 dst=10.184.18.202 src_port=52 dst_port=205 server_app=ofdeFini pid=4153 app_name=molli traff_direct=outbound block_count=725 logon_user=oditem@gitsedqu2649.mail.lan msg=unknown -June 26 19:42:33 mquelau5326.mail.lan proto=icmp service=https status=deny src=10.255.39.252 dst=10.113.95.59 src_port=863 dst_port=4367 server_app=fugitsed pid=1693 app_name=idolo traff_direct=internal block_count=3147 logon_user=persp@entsunt3962.www.example msg=success -July 11 02:45:07 idestlab2631.www.lan proto=tcp service=http status=deny src=10.27.16.118 dst=10.83.177.2 src_port=18 dst_port=1827 server_app=iat pid=337 app_name=rinre traff_direct=internal block_count=1300 logon_user=borios@tut2703.www.host msg=success -July 25 09:47:41 inesci6789.test proto=udp service=http status=deny src=10.38.54.72 dst=10.167.227.44 src_port=6595 dst_port=5736 server_app=lillum pid=7041 app_name=its traff_direct=outbound block_count=7644 logon_user=riamea@entorev160.test msg=failure -August 8 16:50:15 ccaeca7077.internal.corp proto=tcp service=http status=deny src=10.216.54.184 dst=10.215.205.216 src_port=1495 dst_port=647 server_app=riat pid=3854 app_name=psaquaea traff_direct=external block_count=7536 logon_user=ameiusm@proide3714.mail.localdomain msg=unknown -August 22 23:52:50 ima2031.api.corp proto=igmp service=smtp status=deny src=10.9.12.248 dst=10.9.18.237 src_port=765 dst_port=2486 server_app=tpersp pid=55 app_name=seosqui traff_direct=internal block_count=6379 logon_user=uradi@tot5313.mail.invalid msg=success -September 6 06:55:24 ian867.internal.corp proto=rdp service=https status=deny src=10.83.130.226 dst=10.41.123.102 src_port=1542 dst_port=2300 server_app=odoconse pid=228 app_name=quatu traff_direct=external block_count=7661 logon_user=tenim@rumet3801.internal.domain msg=unknown -September 20 13:57:58 lorin4249.corp proto=tcp service=pop3 status=deny src=10.175.112.197 dst=10.80.152.108 src_port=1749 dst_port=2742 server_app=exeacom pid=4253 app_name=rita traff_direct=outbound block_count=6984 logon_user=tametcon@liqua2834.www5.lan msg=failure -October 4 21:00:32 gnaaliqu3935.api.test proto=udp service=smtp status=deny src=10.134.18.114 dst=10.142.25.100 src_port=2761 dst_port=5770 server_app=mdol pid=2200 app_name=nby traff_direct=internal block_count=624 logon_user=osqui@sequat7273.api.host msg=failure -October 19 04:03:07 nsequat1859.internal.localhost proto=udp service=http status=deny src=10.28.118.160 dst=10.223.119.218 src_port=6247 dst_port=300 server_app=umexerc pid=5717 app_name=intocc traff_direct=internal block_count=4387 logon_user=ntsunt@uidol4575.localhost msg=failure -November 2 11:05:41 ritin2495.api.corp proto=ggp service=https status=deny src=10.110.114.175 dst=10.47.28.48 src_port=4986 dst_port=3032 server_app=tatem pid=4469 app_name=luptat traff_direct=unknown block_count=4488 logon_user=plicab@oremq2000.api.corp msg=unknown -November 16 18:08:15 tetur2694.mail.local proto=ggp service=pop3 status=deny src=10.40.251.202 dst=10.90.33.138 src_port=5733 dst_port=7876 server_app=enimadmi pid=5524 app_name=lupta traff_direct=external block_count=6847 logon_user=nvolupt@oremi1485.api.localhost msg=success -December 1 01:10:49 rem7043.localhost proto=ipv6 service=ms-wbt-server status=deny src=10.65.2.106 dst=10.227.173.252 src_port=5410 dst_port=5337 server_app=nisiut pid=3624 app_name=teturad traff_direct=external block_count=7576 logon_user=itation@sequatD5469.www5.lan msg=unknown -December 15 08:13:24 emqu2846.internal.home proto=udp service=https status=deny src=10.193.233.229 dst=10.28.84.106 src_port=2859 dst_port=4844 server_app=eaqu pid=1609 app_name=uptatemU traff_direct=inbound block_count=3096 logon_user=tla@item2738.test msg=success -December 29 15:15:58 dqu6144.api.localhost proto=ggp service=ms-wbt-server status=deny src=10.150.245.88 dst=10.210.89.183 src_port=3642 dst_port=2589 server_app=ulpa pid=6248 app_name=iusmodte traff_direct=external block_count=2700 logon_user=sequa@iosamnis1047.internal.localdomain msg=success -January 12 22:18:32 giatquov1918.internal.example proto=udp service=ms-wbt-server status=deny src=10.180.195.43 dst=10.85.185.13 src_port=4540 dst_port=7793 server_app=gnaal pid=7224 app_name=proident traff_direct=outbound block_count=1867 logon_user=voluptas@orroq6677.internal.example msg=failure -January 27 05:21:06 estl5804.internal.local proto=udp service=ms-wbt-server status=deny src=10.207.211.230 dst=10.210.28.247 src_port=3449 dst_port=7257 server_app=ssecil pid=430 app_name=iuntNe traff_direct=unknown block_count=7672 logon_user=tate@onevo4326.internal.local msg=failure -February 10 12:23:41 Sedut1775.www.domain proto=rdp service=ms-wbt-server status=deny src=10.86.11.48 dst=10.248.165.185 src_port=3436 dst_port=5460 server_app=olorsi pid=3589 app_name=exeaco traff_direct=external block_count=4801 logon_user=dquiac@itaedict7233.mail.localdomain msg=unknown -February 24 19:26:15 mac7484.www5.test proto=ipv6-icmp service=http status=deny src=10.118.6.177 dst=10.47.125.38 src_port=6977 dst_port=3896 server_app=isn pid=4814 app_name=omm traff_direct=outbound block_count=1844 logon_user=quunt@numquam5869.internal.example msg=unknown -March 11 02:28:49 oin1140.mail.localhost proto=icmp service=pop3 status=deny src=10.50.233.155 dst=10.60.142.127 src_port=1081 dst_port=5112 server_app=urExce pid=276 app_name=nturm traff_direct=outbound block_count=2241 logon_user=atv@onu6137.api.home msg=success -March 25 09:31:24 naaliq3710.api.local proto=rdp service=http status=deny src=10.28.82.189 dst=10.120.10.211 src_port=3916 dst_port=7661 server_app=odt pid=2452 app_name=inv traff_direct=internal block_count=7705 logon_user=rcit@aecatcup2241.www5.test msg=failure -April 8 16:33:58 volupta3552.internal.localhost proto=ipv6 service=pop3 status=deny src=10.31.237.225 dst=10.6.38.163 src_port=6153 dst_port=4059 server_app=oreveri pid=3453 app_name=avolu traff_direct=inbound block_count=2820 logon_user=olup@labor6360.mail.local msg=failure -April 22 23:36:32 onse380.internal.localdomain proto=ggp service=https status=deny src=10.226.5.189 dst=10.125.165.144 src_port=3371 dst_port=7889 server_app=dexerc pid=2302 app_name=tatem traff_direct=inbound block_count=5407 logon_user=mvolu@mveleum4322.www5.host msg=success -May 7 06:39:06 queips4947.mail.example proto=udp service=smtp status=deny src=10.97.149.97 dst=10.46.56.204 src_port=2463 dst_port=5070 server_app=uela pid=7079 app_name=umf traff_direct=unknown block_count=2441 logon_user=dolorsit@archite1843.mail.home msg=unknown -May 21 13:41:41 oloreseo5039.test proto=ggp service=https status=deny src=10.218.0.197 dst=10.28.105.124 src_port=7581 dst_port=4797 server_app=eritin pid=5773 app_name=litsedq traff_direct=outbound block_count=5749 logon_user=ntNe@itanim4024.api.example msg=success -June 4 20:44:15 minim459.mail.local proto=rdp service=https status=deny src=10.123.199.198 dst=10.17.87.79 src_port=6332 dst_port=3414 server_app=tionula pid=1586 app_name=ate traff_direct=outbound block_count=5006 logon_user=ratvolu@nreprehe715.api.home msg=unknown -June 19 03:46:49 eratv211.api.host proto=rdp service=https status=deny src=10.38.86.177 dst=10.115.68.40 src_port=5768 dst_port=5483 server_app=boNem pid=5137 app_name=ssusci traff_direct=internal block_count=2841 logon_user=mpo@unte893.internal.host msg=success -July 3 10:49:23 aparia1179.www.localdomain proto=tcp service=https status=deny src=10.193.118.163 dst=10.115.174.107 src_port=548 dst_port=5597 server_app=acom pid=5704 app_name=dolorem traff_direct=internal block_count=10 logon_user=exeacomm@aspe951.mail.domain msg=success -July 17 17:51:58 iatqu6203.mail.corp proto=icmp service=http status=deny src=10.37.128.49 dst=10.77.77.208 src_port=625 dst_port=1101 server_app=esci pid=2310 app_name=essecill traff_direct=external block_count=2653 logon_user=moles@dipiscin4957.www.home msg=unknown -August 1 00:54:32 ptasnula6576.api.invalid proto=tcp service=ms-wbt-server status=deny src=10.54.73.158 dst=10.1.96.93 src_port=5752 dst_port=428 server_app=docon pid=5398 app_name=ntium traff_direct=internal block_count=4392 logon_user=lloinven@econs2687.internal.localdomain msg=unknown -August 15 07:57:06 mag1506.internal.domain proto=igmp service=smtp status=deny src=10.131.126.109 dst=10.182.152.242 src_port=1877 dst_port=6998 server_app=rcitat pid=2465 app_name=ecillum traff_direct=inbound block_count=3208 logon_user=dolor@tiumto5834.api.lan msg=success -August 29 14:59:40 fugits1163.host proto=icmp service=http status=deny src=10.181.247.224 dst=10.77.229.168 src_port=260 dst_port=3777 server_app=atatnon pid=6064 app_name=abor traff_direct=external block_count=329 logon_user=adol@iutal6032.www.test msg=failure -September 12 22:02:15 gitse2463.www5.invalid proto=ipv6-icmp service=http status=deny src=10.235.116.121 dst=10.72.162.6 src_port=1 dst_port=5516 server_app=emp pid=2861 app_name=luptas traff_direct=outbound block_count=1444 logon_user=oinv@inculp2078.host msg=unknown -September 27 05:04:49 temse6953.www.example proto=ipv6-icmp service=https status=deny src=10.149.193.117 dst=10.28.124.236 src_port=5343 dst_port=3434 server_app=atcupi pid=3559 app_name=edquia traff_direct=internal block_count=3176 logon_user=mullam@mexerc2757.internal.home msg=failure -October 11 12:07:23 deriti6952.mail.domain proto=ipv6-icmp service=http status=deny src=10.34.131.224 dst=10.196.96.162 src_port=649 dst_port=6378 server_app=equatDu pid=1710 app_name=aconse traff_direct=outbound block_count=7174 logon_user=tnonproi@squira4455.api.domain msg=failure -October 25 19:09:57 abor1370.www.domain proto=ipv6-icmp service=https status=deny src=10.97.236.123 dst=10.77.78.180 src_port=5159 dst_port=5380 server_app=reetdol pid=4984 app_name=ugi traff_direct=inbound block_count=4782 logon_user=nisi@emveleum3661.localhost msg=unknown -November 9 02:12:32 emullamc5418.mail.test proto=ipv6 service=ms-wbt-server status=deny src=10.82.133.66 dst=10.45.54.107 src_port=7229 dst_port=3593 server_app=nse pid=3421 app_name=quira traff_direct=unknown block_count=5362 logon_user=olorem@sedquiac6517.internal.localhost msg=failure -November 23 09:15:06 squirati7050.www5.lan proto=rdp service=pop3 status=deny src=10.180.180.230 dst=10.170.252.219 src_port=4147 dst_port=2454 server_app=tesseci pid=4020 app_name=radipis traff_direct=external block_count=7020 logon_user=nse@veniam3148.www5.home msg=failure -December 7 16:17:40 venia2079.mail.example proto=rdp service=http status=deny src=10.5.11.205 dst=10.65.144.51 src_port=4901 dst_port=2283 server_app=lumqu pid=617 app_name=autf traff_direct=outbound block_count=5050 logon_user=uptat@unt3559.www.home msg=failure -December 21 23:20:14 snostrum3450.www5.localhost proto=udp service=smtp status=deny src=10.195.223.82 dst=10.76.122.196 src_port=3128 dst_port=5325 server_app=atu pid=487 app_name=iame traff_direct=external block_count=593 logon_user=umiurer@rere5274.mail.domain msg=success -January 5 06:22:49 gelitsed3249.corp proto=icmp service=ms-wbt-server status=deny src=10.138.210.116 dst=10.225.255.211 src_port=5595 dst_port=3369 server_app=rum pid=2442 app_name=eursinto traff_direct=external block_count=956 logon_user=fugiatn@uaeabi3728.www5.invalid msg=failure -January 19 13:25:23 dolor7082.internal.localhost proto=icmp service=smtp status=deny src=10.250.81.189 dst=10.219.1.151 src_port=5404 dst_port=4323 server_app=redo pid=6311 app_name=ditautf traff_direct=external block_count=3262 logon_user=ori@uamqu2804.test msg=unknown -February 2 20:27:57 totam6886.api.localhost proto=ggp service=https status=deny src=10.54.23.133 dst=10.76.125.70 src_port=3258 dst_port=756 server_app=oluptat pid=7128 app_name=eseruntm traff_direct=internal block_count=1916 logon_user=oloreeu@olor5201.host msg=unknown -February 17 03:30:32 laborum5749.www.example proto=igmp service=http status=deny src=10.36.110.69 dst=10.189.42.62 src_port=4187 dst_port=4262 server_app=duntut pid=2780 app_name=ullamc traff_direct=unknown block_count=170 logon_user=eque@eufug3348.www.lan msg=success -March 3 10:33:06 lup3313.api.home proto=tcp service=https status=deny src=10.47.179.68 dst=10.183.202.82 src_port=5107 dst_port=2208 server_app=usmod pid=3284 app_name=amni traff_direct=unknown block_count=2645 logon_user=umfugi@stquidol239.www5.invalid msg=failure -March 17 17:35:40 edq5397.www.test proto=ipv6-icmp service=pop3 status=deny src=10.73.28.165 dst=10.221.206.74 src_port=3668 dst_port=1480 server_app=ihilmole pid=2314 app_name=litanim traff_direct=inbound block_count=5572 logon_user=quas@gia6531.mail.invalid msg=success -April 1 00:38:14 udan6536.www5.test proto=ipv6 service=ms-wbt-server status=deny src=10.85.104.146 dst=10.14.204.36 src_port=3442 dst_port=4887 server_app=qua pid=5284 app_name=ents traff_direct=inbound block_count=973 logon_user=emp@lamcola4879.www5.localdomain msg=success -April 15 07:40:49 rumet6923.www5.lan proto=rdp service=https status=deny src=10.208.18.210 dst=10.30.246.132 src_port=3601 dst_port=388 server_app=texplica pid=3990 app_name=ore traff_direct=outbound block_count=5624 logon_user=veniam@edquian330.mail.local msg=unknown -April 29 14:43:23 itse522.internal.localdomain proto=udp service=pop3 status=deny src=10.106.249.91 dst=10.19.119.17 src_port=1732 dst_port=3822 server_app=veleumi pid=4337 app_name=tvol traff_direct=unknown block_count=2783 logon_user=lit@santi837.api.domain msg=success -May 13 21:45:57 amc3059.local proto=igmp service=http status=deny src=10.29.109.126 dst=10.181.41.154 src_port=6261 dst_port=866 server_app=itseddo pid=5275 app_name=seos traff_direct=unknown block_count=6721 logon_user=labo@lpaquiof804.internal.invalid msg=failure -May 28 04:48:31 enbyCi3813.api.domain proto=ipv6-icmp service=https status=deny src=10.164.207.42 dst=10.164.120.197 src_port=1901 dst_port=2304 server_app=itametco pid=2286 app_name=remip traff_direct=external block_count=3116 logon_user=pta@nonn4478.host msg=unknown -June 11 11:51:06 liquipex1155.mail.corp proto=ipv6-icmp service=smtp status=deny src=10.183.189.133 dst=10.154.191.225 src_port=5347 dst_port=7856 server_app=Loremip pid=2990 app_name=tur traff_direct=unknown block_count=6105 logon_user=ita@amquaer3985.www5.example msg=success -June 25 18:53:40 isn3991.local proto=igmp service=smtp status=deny src=10.29.120.226 dst=10.103.189.199 src_port=1296 dst_port=767 server_app=exerci pid=226 app_name=eserun traff_direct=outbound block_count=5452 logon_user=emu@orem6317.local msg=failure -July 10 01:56:14 iumtotam1010.www5.corp proto=icmp service=https status=deny src=10.133.254.23 dst=10.210.153.7 src_port=6251 dst_port=7030 server_app=nofdeFi pid=4691 app_name=sautei traff_direct=external block_count=2088 logon_user=voluptas@velill3230.www.corp msg=success -July 24 08:58:48 onsecte91.www5.localdomain proto=tcp service=pop3 status=deny src=10.126.245.73 dst=10.91.2.135 src_port=180 dst_port=2141 server_app=ender pid=5647 app_name=rumSecti traff_direct=outbound block_count=4680 logon_user=olore@orumS757.www5.corp msg=success -August 7 16:01:23 abori7686.internal.host proto=rdp service=https status=deny src=10.183.243.246 dst=10.137.85.123 src_port=218 dst_port=7073 server_app=ntsunti pid=2313 app_name=magnam traff_direct=internal block_count=6402 logon_user=cid@emi4534.www.localdomain msg=failure -August 21 23:03:57 reprehen3513.test proto=ipv6 service=smtp status=deny src=10.61.225.196 dst=10.10.86.55 src_port=4720 dst_port=5132 server_app=isiu pid=1585 app_name=mmodi traff_direct=external block_count=3034 logon_user=eniamqu@inimav1576.mail.example msg=failure -September 5 06:06:31 orroquis284.api.domain proto=udp service=http status=deny src=10.125.143.153 dst=10.79.73.195 src_port=2657 dst_port=457 server_app=umf pid=3141 app_name=moll traff_direct=outbound block_count=7645 logon_user=emip@aturQu7083.mail.host msg=failure -September 19 13:09:05 tionula2060.www5.localhost proto=ipv6 service=ms-wbt-server status=deny src=10.240.216.85 dst=10.64.139.17 src_port=2046 dst_port=2438 server_app=ice pid=6331 app_name=aal traff_direct=external block_count=4982 logon_user=nimadmin@lumqui7769.mail.local msg=unknown -October 3 20:11:40 rumSecti111.www5.domain proto=ipv6 service=ms-wbt-server status=deny src=10.87.90.49 dst=10.222.245.80 src_port=1486 dst_port=4017 server_app=itaedict pid=4474 app_name=byCic traff_direct=inbound block_count=3380 logon_user=ptatemse@siarc6339.internal.corp msg=success -October 18 03:14:14 olores7881.local proto=udp service=pop3 status=deny src=10.143.53.214 dst=10.87.144.208 src_port=3310 dst_port=2440 server_app=ipsumq pid=4855 app_name=psaquaea traff_direct=unknown block_count=5772 logon_user=psumq@ptatev6552.www.test msg=success -November 1 10:16:48 tDuis3281.www5.localdomain proto=ipv6-icmp service=pop3 status=deny src=10.204.178.19 dst=10.105.97.134 src_port=616 dst_port=1935 server_app=oremque pid=1729 app_name=inimve traff_direct=unknown block_count=6564 logon_user=mexercit@byC5766.internal.home msg=success -November 15 17:19:22 uptasnul2751.www5.corp proto=rdp service=smtp status=deny src=10.161.64.168 dst=10.194.67.223 src_port=7154 dst_port=5767 server_app=tatemse pid=4493 app_name=amqui traff_direct=inbound block_count=3673 logon_user=tion@hender6628.local msg=unknown -November 30 00:21:57 upt6017.api.localdomain proto=tcp service=smtp status=deny src=10.100.154.220 dst=10.120.148.241 src_port=5535 dst_port=1655 server_app=eeufug pid=6094 app_name=modt traff_direct=external block_count=5150 logon_user=rsitam@xercit7649.www5.home msg=failure -December 14 07:24:31 tpers2217.internal.lan proto=udp service=ms-wbt-server status=deny src=10.116.153.19 dst=10.180.90.112 src_port=6610 dst_port=1936 server_app=olu pid=5012 app_name=dexercit traff_direct=outbound block_count=2216 logon_user=itessequ@porissu1470.domain msg=success diff --git a/x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log-expected.json b/x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log-expected.json deleted file mode 100644 index b049592d14c..00000000000 --- a/x-pack/filebeat/module/fortinet/clientendpoint/test/generated.log-expected.json +++ /dev/null @@ -1,5781 +0,0 @@ -[ - { - "destination.ip": "10.102.123.34", - "destination.port": 3994, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "January 29 06:09:59 boNemoe4402.www.invalid proto=udp service=http status=deny src=10.150.92.220 dst=10.102.123.34 src_port=7178 dst_port=3994 server_app=reeufugi pid=7880 app_name=enderitq traff_direct=external block_count=5286 logon_user=sumdo@litesse6379.api.domain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "boNemoe4402.www.invalid", - "input.type": "log", - "log.offset": 0, - "network.direction": "external", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7880, - "related.hosts": [ - "boNemoe4402.www.invalid", - "litesse6379.api.domain" - ], - "related.ip": [ - "10.102.123.34", - "10.150.92.220" - ], - "related.user": [ - "sumdo" - ], - "rsa.counters.dclass_c1": 5286, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "boNemoe4402.www.invalid" - ], - "rsa.network.domain": "litesse6379.api.domain", - "rsa.network.network_service": "http", - "server.domain": "litesse6379.api.domain", - "server.registered_domain": "api.domain", - "server.subdomain": "litesse6379", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.150.92.220", - "source.port": 7178, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "sumdo" - }, - { - "destination.ip": "10.149.203.46", - "destination.port": 5861, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 12 13:12:33 olupt4880.api.home proto=icmp service=https status=deny src=10.33.212.159 dst=10.149.203.46 src_port=2789 dst_port=5861 server_app=vol pid=4539 app_name=uidolor traff_direct=internal block_count=4402 logon_user=mipsumq@gnaali6189.internal.localhost msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "olupt4880.api.home", - "input.type": "log", - "log.offset": 281, - "network.direction": "internal", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4539, - "related.hosts": [ - "gnaali6189.internal.localhost", - "olupt4880.api.home" - ], - "related.ip": [ - "10.149.203.46", - "10.33.212.159" - ], - "related.user": [ - "mipsumq" - ], - "rsa.counters.dclass_c1": 4402, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "olupt4880.api.home" - ], - "rsa.network.domain": "gnaali6189.internal.localhost", - "rsa.network.network_service": "https", - "server.domain": "gnaali6189.internal.localhost", - "server.registered_domain": "internal.localhost", - "server.subdomain": "gnaali6189", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.33.212.159", - "source.port": 2789, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "mipsumq" - }, - { - "destination.ip": "10.118.175.9", - "destination.port": 2802, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 26 20:15:08 aqu1628.internal.domain proto=ipv6-icmp service=smtp status=deny src=10.173.116.41 dst=10.118.175.9 src_port=3710 dst_port=2802 server_app=aer pid=445 app_name=nse traff_direct=unknown block_count=7019 logon_user=uame@quis1130.internal.corp msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "aqu1628.internal.domain", - "input.type": "log", - "log.offset": 563, - "network.direction": "unknown", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 445, - "related.hosts": [ - "aqu1628.internal.domain", - "quis1130.internal.corp" - ], - "related.ip": [ - "10.118.175.9", - "10.173.116.41" - ], - "related.user": [ - "uame" - ], - "rsa.counters.dclass_c1": 7019, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "aqu1628.internal.domain" - ], - "rsa.network.domain": "quis1130.internal.corp", - "rsa.network.network_service": "smtp", - "server.domain": "quis1130.internal.corp", - "server.registered_domain": "internal.corp", - "server.subdomain": "quis1130", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.173.116.41", - "source.port": 3710, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "uame" - }, - { - "destination.ip": "10.202.204.154", - "destination.port": 3587, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 12 03:17:42 tinculp2940.internal.local proto=ggp service=https status=deny src=10.134.137.177 dst=10.202.204.154 src_port=7868 dst_port=3587 server_app=amco pid=5712 app_name=psumquia traff_direct=unknown block_count=2458 logon_user=orsitame@reprehe189.internal.home msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tinculp2940.internal.local", - "input.type": "log", - "log.offset": 837, - "network.direction": "unknown", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5712, - "related.hosts": [ - "reprehe189.internal.home", - "tinculp2940.internal.local" - ], - "related.ip": [ - "10.134.137.177", - "10.202.204.154" - ], - "related.user": [ - "orsitame" - ], - "rsa.counters.dclass_c1": 2458, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "tinculp2940.internal.local" - ], - "rsa.network.domain": "reprehe189.internal.home", - "rsa.network.network_service": "https", - "server.domain": "reprehe189.internal.home", - "server.registered_domain": "internal.home", - "server.subdomain": "reprehe189", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.134.137.177", - "source.port": 7868, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "orsitame" - }, - { - "destination.ip": "10.70.0.60", - "destination.port": 4982, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 26 10:20:16 rad2103.api.domain proto=ipv6-icmp service=pop3 status=deny src=10.245.142.250 dst=10.70.0.60 src_port=5408 dst_port=4982 server_app=estqui pid=6557 app_name=magn traff_direct=inbound block_count=2638 logon_user=eos@enimad2283.internal.domain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "rad2103.api.domain", - "input.type": "log", - "log.offset": 1122, - "network.direction": "inbound", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6557, - "related.hosts": [ - "enimad2283.internal.domain", - "rad2103.api.domain" - ], - "related.ip": [ - "10.245.142.250", - "10.70.0.60" - ], - "related.user": [ - "eos" - ], - "rsa.counters.dclass_c1": 2638, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "rad2103.api.domain" - ], - "rsa.network.domain": "enimad2283.internal.domain", - "rsa.network.network_service": "pop3", - "server.domain": "enimad2283.internal.domain", - "server.registered_domain": "internal.domain", - "server.subdomain": "enimad2283", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.245.142.250", - "source.port": 5408, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "eos" - }, - { - "destination.ip": "10.200.188.142", - "destination.port": 7143, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 9 17:22:51 enim5316.www5.local proto=ipv6-icmp service=smtp status=deny src=10.202.72.124 dst=10.200.188.142 src_port=4665 dst_port=7143 server_app=omnis pid=2061 app_name=eip traff_direct=external block_count=513 logon_user=iusmodt@doloreeu3553.www5.home msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "enim5316.www5.local", - "input.type": "log", - "log.offset": 1395, - "network.direction": "external", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2061, - "related.hosts": [ - "doloreeu3553.www5.home", - "enim5316.www5.local" - ], - "related.ip": [ - "10.200.188.142", - "10.202.72.124" - ], - "related.user": [ - "iusmodt" - ], - "rsa.counters.dclass_c1": 513, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "enim5316.www5.local" - ], - "rsa.network.domain": "doloreeu3553.www5.home", - "rsa.network.network_service": "smtp", - "server.domain": "doloreeu3553.www5.home", - "server.registered_domain": "www5.home", - "server.subdomain": "doloreeu3553", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.202.72.124", - "source.port": 4665, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "iusmodt" - }, - { - "destination.ip": "10.214.225.125", - "destination.port": 2121, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 24 00:25:25 reetdolo2770.www5.local proto=tcp service=pop3 status=deny src=10.12.44.169 dst=10.214.225.125 src_port=5710 dst_port=2121 server_app=inBCSedu pid=5722 app_name=tanimi traff_direct=outbound block_count=6071 logon_user=erep@iutal13.api.localdomain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "reetdolo2770.www5.local", - "input.type": "log", - "log.offset": 1669, - "network.direction": "outbound", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5722, - "related.hosts": [ - "iutal13.api.localdomain", - "reetdolo2770.www5.local" - ], - "related.ip": [ - "10.12.44.169", - "10.214.225.125" - ], - "related.user": [ - "erep" - ], - "rsa.counters.dclass_c1": 6071, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "reetdolo2770.www5.local" - ], - "rsa.network.domain": "iutal13.api.localdomain", - "rsa.network.network_service": "pop3", - "server.domain": "iutal13.api.localdomain", - "server.registered_domain": "api.localdomain", - "server.subdomain": "iutal13", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.12.44.169", - "source.port": 5710, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "erep" - }, - { - "destination.ip": "10.198.136.50", - "destination.port": 2089, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 8 07:27:59 isiu1114.internal.corp proto=icmp service=http status=deny src=10.66.108.11 dst=10.198.136.50 src_port=6875 dst_port=2089 server_app=ipis pid=5037 app_name=ari traff_direct=unknown block_count=3856 logon_user=uptatev@uovol492.www.localhost msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "isiu1114.internal.corp", - "input.type": "log", - "log.offset": 1946, - "network.direction": "unknown", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5037, - "related.hosts": [ - "isiu1114.internal.corp", - "uovol492.www.localhost" - ], - "related.ip": [ - "10.198.136.50", - "10.66.108.11" - ], - "related.user": [ - "uptatev" - ], - "rsa.counters.dclass_c1": 3856, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "isiu1114.internal.corp" - ], - "rsa.network.domain": "uovol492.www.localhost", - "rsa.network.network_service": "http", - "server.domain": "uovol492.www.localhost", - "server.registered_domain": "www.localhost", - "server.subdomain": "uovol492", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.66.108.11", - "source.port": 6875, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "uptatev" - }, - { - "destination.ip": "10.69.20.77", - "destination.port": 7579, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 22 14:30:33 usmodte1296.www.corp proto=igmp service=ms-wbt-server status=deny src=10.178.244.31 dst=10.69.20.77 src_port=3857 dst_port=7579 server_app=nonnu pid=776 app_name=riat traff_direct=unknown block_count=5575 logon_user=umdolor@osquir6997.corp msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "usmodte1296.www.corp", - "input.type": "log", - "log.offset": 2213, - "network.direction": "unknown", - "network.protocol": "igmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 776, - "related.hosts": [ - "osquir6997.corp", - "usmodte1296.www.corp" - ], - "related.ip": [ - "10.178.244.31", - "10.69.20.77" - ], - "related.user": [ - "umdolor" - ], - "rsa.counters.dclass_c1": 5575, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "usmodte1296.www.corp" - ], - "rsa.network.domain": "osquir6997.corp", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "osquir6997.corp", - "server.registered_domain": "osquir6997.corp", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.178.244.31", - "source.port": 3857, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "umdolor" - }, - { - "destination.ip": "10.203.5.162", - "destination.port": 7290, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 5 21:33:08 tatno4987.www5.localhost proto=ggp service=pop3 status=deny src=10.54.231.100 dst=10.203.5.162 src_port=5616 dst_port=7290 server_app=iam pid=6096 app_name=ciati traff_direct=unknown block_count=3162 logon_user=umdolore@eniam7007.api.invalid msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tatno4987.www5.localhost", - "input.type": "log", - "log.offset": 2481, - "network.direction": "unknown", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6096, - "related.hosts": [ - "eniam7007.api.invalid", - "tatno4987.www5.localhost" - ], - "related.ip": [ - "10.203.5.162", - "10.54.231.100" - ], - "related.user": [ - "umdolore" - ], - "rsa.counters.dclass_c1": 3162, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "tatno4987.www5.localhost" - ], - "rsa.network.domain": "eniam7007.api.invalid", - "rsa.network.network_service": "pop3", - "server.domain": "eniam7007.api.invalid", - "server.registered_domain": "api.invalid", - "server.subdomain": "eniam7007", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.54.231.100", - "source.port": 5616, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "umdolore" - }, - { - "destination.ip": "10.136.252.240", - "destination.port": 4105, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 20 04:35:42 tatno6787.internal.localhost proto=icmp service=pop3 status=deny src=10.65.83.160 dst=10.136.252.240 src_port=3592 dst_port=4105 server_app=uradi pid=7307 app_name=essequ traff_direct=outbound block_count=7148 logon_user=ender@snulapar3794.api.domain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tatno6787.internal.localhost", - "input.type": "log", - "log.offset": 2751, - "network.direction": "outbound", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7307, - "related.hosts": [ - "snulapar3794.api.domain", - "tatno6787.internal.localhost" - ], - "related.ip": [ - "10.136.252.240", - "10.65.83.160" - ], - "related.user": [ - "ender" - ], - "rsa.counters.dclass_c1": 7148, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "tatno6787.internal.localhost" - ], - "rsa.network.domain": "snulapar3794.api.domain", - "rsa.network.network_service": "pop3", - "server.domain": "snulapar3794.api.domain", - "server.registered_domain": "api.domain", - "server.subdomain": "snulapar3794", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.65.83.160", - "source.port": 3592, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ender" - }, - { - "destination.ip": "10.210.213.18", - "destination.port": 3970, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 4 11:38:16 essecill2595.mail.local proto=ggp service=http status=deny src=10.57.40.29 dst=10.210.213.18 src_port=7616 dst_port=3970 server_app=atuse pid=2703 app_name=uis traff_direct=internal block_count=6179 logon_user=onse@liq5883.localdomain msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "essecill2595.mail.local", - "input.type": "log", - "log.offset": 3031, - "network.direction": "internal", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2703, - "related.hosts": [ - "essecill2595.mail.local", - "liq5883.localdomain" - ], - "related.ip": [ - "10.210.213.18", - "10.57.40.29" - ], - "related.user": [ - "onse" - ], - "rsa.counters.dclass_c1": 6179, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "essecill2595.mail.local" - ], - "rsa.network.domain": "liq5883.localdomain", - "rsa.network.network_service": "http", - "server.domain": "liq5883.localdomain", - "server.registered_domain": "liq5883.localdomain", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.57.40.29", - "source.port": 7616, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "onse" - }, - { - "destination.ip": "10.200.156.102", - "destination.port": 6061, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 18 18:40:50 ali6446.localhost proto=udp service=smtp status=deny src=10.144.82.69 dst=10.200.156.102 src_port=2896 dst_port=6061 server_app=rporis pid=5166 app_name=par traff_direct=outbound block_count=7041 logon_user=rveli@rsint7026.test msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ali6446.localhost", - "input.type": "log", - "log.offset": 3294, - "network.direction": "outbound", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5166, - "related.hosts": [ - "ali6446.localhost", - "rsint7026.test" - ], - "related.ip": [ - "10.144.82.69", - "10.200.156.102" - ], - "related.user": [ - "rveli" - ], - "rsa.counters.dclass_c1": 7041, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "ali6446.localhost" - ], - "rsa.network.domain": "rsint7026.test", - "rsa.network.network_service": "smtp", - "server.domain": "rsint7026.test", - "server.registered_domain": "rsint7026.test", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.144.82.69", - "source.port": 2896, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "rveli" - }, - { - "destination.ip": "10.72.58.135", - "destination.port": 2382, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 2 01:43:25 torev7118.internal.domain proto=ipv6 service=smtp status=deny src=10.109.232.112 dst=10.72.58.135 src_port=5160 dst_port=2382 server_app=fugit pid=7668 app_name=rsitamet traff_direct=internal block_count=1112 logon_user=xea@qua2945.www.local msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "torev7118.internal.domain", - "input.type": "log", - "log.offset": 3551, - "network.direction": "internal", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7668, - "related.hosts": [ - "qua2945.www.local", - "torev7118.internal.domain" - ], - "related.ip": [ - "10.109.232.112", - "10.72.58.135" - ], - "related.user": [ - "xea" - ], - "rsa.counters.dclass_c1": 1112, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "torev7118.internal.domain" - ], - "rsa.network.domain": "qua2945.www.local", - "rsa.network.network_service": "smtp", - "server.domain": "qua2945.www.local", - "server.registered_domain": "www.local", - "server.subdomain": "qua2945", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.109.232.112", - "source.port": 5160, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "xea" - }, - { - "destination.ip": "10.72.29.73", - "destination.port": 203, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 16 08:45:59 dolore6103.www5.example proto=udp service=http status=deny src=10.38.22.45 dst=10.72.29.73 src_port=1493 dst_port=203 server_app=piscing pid=1044 app_name=entsu traff_direct=unknown block_count=4979 logon_user=onproide@luptat6494.www.example msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "dolore6103.www5.example", - "input.type": "log", - "log.offset": 3823, - "network.direction": "unknown", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1044, - "related.hosts": [ - "dolore6103.www5.example", - "luptat6494.www.example" - ], - "related.ip": [ - "10.38.22.45", - "10.72.29.73" - ], - "related.user": [ - "onproide" - ], - "rsa.counters.dclass_c1": 4979, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "dolore6103.www5.example" - ], - "rsa.network.domain": "luptat6494.www.example", - "rsa.network.network_service": "http", - "server.domain": "luptat6494.www.example", - "server.registered_domain": "www.example", - "server.subdomain": "luptat6494", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.38.22.45", - "source.port": 1493, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "onproide" - }, - { - "destination.ip": "10.76.72.111", - "destination.port": 7388, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 30 15:48:33 errorsi6996.www.domain proto=tcp service=smtp status=deny src=10.70.95.74 dst=10.76.72.111 src_port=6119 dst_port=7388 server_app=emaperi pid=7183 app_name=sumquiad traff_direct=internal block_count=2362 logon_user=ivelits@moenimi6317.internal.invalid msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "errorsi6996.www.domain", - "input.type": "log", - "log.offset": 4096, - "network.direction": "internal", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7183, - "related.hosts": [ - "errorsi6996.www.domain", - "moenimi6317.internal.invalid" - ], - "related.ip": [ - "10.70.95.74", - "10.76.72.111" - ], - "related.user": [ - "ivelits" - ], - "rsa.counters.dclass_c1": 2362, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "errorsi6996.www.domain" - ], - "rsa.network.domain": "moenimi6317.internal.invalid", - "rsa.network.network_service": "smtp", - "server.domain": "moenimi6317.internal.invalid", - "server.registered_domain": "internal.invalid", - "server.subdomain": "moenimi6317", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.70.95.74", - "source.port": 6119, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ivelits" - }, - { - "destination.ip": "10.73.69.75", - "destination.port": 6218, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 13 22:51:07 lumquido5839.api.corp proto=ipv6 service=https status=deny src=10.19.201.13 dst=10.73.69.75 src_port=5006 dst_port=6218 server_app=nsec pid=6907 app_name=estqu traff_direct=unknown block_count=2655 logon_user=tat@tion1761.home msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "lumquido5839.api.corp", - "input.type": "log", - "log.offset": 4379, - "network.direction": "unknown", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6907, - "related.hosts": [ - "lumquido5839.api.corp", - "tion1761.home" - ], - "related.ip": [ - "10.19.201.13", - "10.73.69.75" - ], - "related.user": [ - "tat" - ], - "rsa.counters.dclass_c1": 2655, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "lumquido5839.api.corp" - ], - "rsa.network.domain": "tion1761.home", - "rsa.network.network_service": "https", - "server.domain": "tion1761.home", - "server.registered_domain": "tion1761.home", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.19.201.13", - "source.port": 5006, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "tat" - }, - { - "destination.ip": "10.84.105.75", - "destination.port": 98, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 28 05:53:42 aperia4409.www5.invalid proto=rdp service=ms-wbt-server status=deny src=10.78.151.178 dst=10.84.105.75 src_port=1846 dst_port=98 server_app=uames pid=499 app_name=msequi traff_direct=external block_count=4085 logon_user=iquaUten@santium4235.api.local msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "aperia4409.www5.invalid", - "input.type": "log", - "log.offset": 4640, - "network.direction": "external", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 499, - "related.hosts": [ - "aperia4409.www5.invalid", - "santium4235.api.local" - ], - "related.ip": [ - "10.78.151.178", - "10.84.105.75" - ], - "related.user": [ - "iquaUten" - ], - "rsa.counters.dclass_c1": 4085, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "aperia4409.www5.invalid" - ], - "rsa.network.domain": "santium4235.api.local", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "santium4235.api.local", - "server.registered_domain": "api.local", - "server.subdomain": "santium4235", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.78.151.178", - "source.port": 1846, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "iquaUten" - }, - { - "destination.ip": "10.25.192.202", - "destination.port": 6462, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 12 12:56:16 tem2496.api.lan proto=rdp service=ms-wbt-server status=deny src=10.135.233.146 dst=10.25.192.202 src_port=4181 dst_port=6462 server_app=ents pid=1531 app_name=Loremip traff_direct=internal block_count=4610 logon_user=emeumfu@CSed2857.www5.example msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tem2496.api.lan", - "input.type": "log", - "log.offset": 4925, - "network.direction": "internal", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1531, - "related.hosts": [ - "CSed2857.www5.example", - "tem2496.api.lan" - ], - "related.ip": [ - "10.135.233.146", - "10.25.192.202" - ], - "related.user": [ - "emeumfu" - ], - "rsa.counters.dclass_c1": 4610, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "tem2496.api.lan" - ], - "rsa.network.domain": "CSed2857.www5.example", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "CSed2857.www5.example", - "server.registered_domain": "www5.example", - "server.subdomain": "CSed2857", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.135.233.146", - "source.port": 4181, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "emeumfu" - }, - { - "destination.ip": "10.104.134.200", - "destination.port": 2508, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 26 19:58:50 eme6710.mail.invalid proto=rdp service=https status=deny src=10.121.219.204 dst=10.104.134.200 src_port=3611 dst_port=2508 server_app=reetd pid=6051 app_name=quae traff_direct=outbound block_count=7084 logon_user=uptat@equep5085.mail.domain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "eme6710.mail.invalid", - "input.type": "log", - "log.offset": 5204, - "network.direction": "outbound", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6051, - "related.hosts": [ - "eme6710.mail.invalid", - "equep5085.mail.domain" - ], - "related.ip": [ - "10.104.134.200", - "10.121.219.204" - ], - "related.user": [ - "uptat" - ], - "rsa.counters.dclass_c1": 7084, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "eme6710.mail.invalid" - ], - "rsa.network.domain": "equep5085.mail.domain", - "rsa.network.network_service": "https", - "server.domain": "equep5085.mail.domain", - "server.registered_domain": "mail.domain", - "server.subdomain": "equep5085", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.121.219.204", - "source.port": 3611, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "uptat" - }, - { - "destination.ip": "10.225.160.182", - "destination.port": 4810, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 10 03:01:24 ihilm1669.mail.invalid proto=tcp service=https status=deny src=10.191.105.82 dst=10.225.160.182 src_port=3361 dst_port=4810 server_app=uovolup pid=6994 app_name=llu traff_direct=external block_count=3936 logon_user=eirure@conseq557.mail.lan msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ihilm1669.mail.invalid", - "input.type": "log", - "log.offset": 5477, - "network.direction": "external", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6994, - "related.hosts": [ - "conseq557.mail.lan", - "ihilm1669.mail.invalid" - ], - "related.ip": [ - "10.191.105.82", - "10.225.160.182" - ], - "related.user": [ - "eirure" - ], - "rsa.counters.dclass_c1": 3936, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "ihilm1669.mail.invalid" - ], - "rsa.network.domain": "conseq557.mail.lan", - "rsa.network.network_service": "https", - "server.domain": "conseq557.mail.lan", - "server.registered_domain": "mail.lan", - "server.subdomain": "conseq557", - "server.top_level_domain": "lan", - "service.type": "fortinet", - "source.ip": "10.191.105.82", - "source.port": 3361, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "eirure" - }, - { - "destination.ip": "10.161.57.8", - "destination.port": 2716, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 24 10:03:59 umexerci1284.internal.localdomain proto=rdp service=smtp status=deny src=10.141.44.153 dst=10.161.57.8 src_port=3750 dst_port=2716 server_app=oei pid=5200 app_name=snostrud traff_direct=inbound block_count=3333 logon_user=quisnos@ite2026.www.invalid msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "umexerci1284.internal.localdomain", - "input.type": "log", - "log.offset": 5751, - "network.direction": "inbound", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5200, - "related.hosts": [ - "ite2026.www.invalid", - "umexerci1284.internal.localdomain" - ], - "related.ip": [ - "10.141.44.153", - "10.161.57.8" - ], - "related.user": [ - "quisnos" - ], - "rsa.counters.dclass_c1": 3333, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "umexerci1284.internal.localdomain" - ], - "rsa.network.domain": "ite2026.www.invalid", - "rsa.network.network_service": "smtp", - "server.domain": "ite2026.www.invalid", - "server.registered_domain": "www.invalid", - "server.subdomain": "ite2026", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.141.44.153", - "source.port": 3750, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "quisnos" - }, - { - "destination.ip": "10.6.167.7", - "destination.port": 2022, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 8 17:06:33 adol485.example proto=udp service=https status=deny src=10.153.111.103 dst=10.6.167.7 src_port=4977 dst_port=2022 server_app=taevit pid=3365 app_name=nsecte traff_direct=internal block_count=7424 logon_user=eumfug@lit5929.test msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "adol485.example", - "input.type": "log", - "log.offset": 6034, - "network.direction": "internal", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3365, - "related.hosts": [ - "adol485.example", - "lit5929.test" - ], - "related.ip": [ - "10.153.111.103", - "10.6.167.7" - ], - "related.user": [ - "eumfug" - ], - "rsa.counters.dclass_c1": 7424, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "adol485.example" - ], - "rsa.network.domain": "lit5929.test", - "rsa.network.network_service": "https", - "server.domain": "lit5929.test", - "server.registered_domain": "lit5929.test", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.153.111.103", - "source.port": 4977, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "eumfug" - }, - { - "destination.ip": "10.134.148.219", - "destination.port": 4430, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 23 00:09:07 evita5008.www.localdomain proto=ggp service=pop3 status=deny src=10.248.204.182 dst=10.134.148.219 src_port=1331 dst_port=4430 server_app=tmo pid=1835 app_name=abi traff_direct=inbound block_count=4168 logon_user=uioffi@oru6938.invalid msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "evita5008.www.localdomain", - "input.type": "log", - "log.offset": 6293, - "network.direction": "inbound", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1835, - "related.hosts": [ - "evita5008.www.localdomain", - "oru6938.invalid" - ], - "related.ip": [ - "10.134.148.219", - "10.248.204.182" - ], - "related.user": [ - "uioffi" - ], - "rsa.counters.dclass_c1": 4168, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "evita5008.www.localdomain" - ], - "rsa.network.domain": "oru6938.invalid", - "rsa.network.network_service": "pop3", - "server.domain": "oru6938.invalid", - "server.registered_domain": "oru6938.invalid", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.248.204.182", - "source.port": 1331, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "uioffi" - }, - { - "destination.ip": "10.163.5.243", - "destination.port": 4129, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "January 6 07:11:41 tsedqu2456.www5.invalid proto=ipv6 service=smtp status=deny src=10.178.77.231 dst=10.163.5.243 src_port=5294 dst_port=4129 server_app=xerc pid=2019 app_name=hitecto traff_direct=unknown block_count=1123 logon_user=liquide@etdol5473.local msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tsedqu2456.www5.invalid", - "input.type": "log", - "log.offset": 6562, - "network.direction": "unknown", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2019, - "related.hosts": [ - "etdol5473.local", - "tsedqu2456.www5.invalid" - ], - "related.ip": [ - "10.163.5.243", - "10.178.77.231" - ], - "related.user": [ - "liquide" - ], - "rsa.counters.dclass_c1": 1123, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "tsedqu2456.www5.invalid" - ], - "rsa.network.domain": "etdol5473.local", - "rsa.network.network_service": "smtp", - "server.domain": "etdol5473.local", - "server.registered_domain": "etdol5473.local", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.178.77.231", - "source.port": 5294, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "liquide" - }, - { - "destination.ip": "10.221.89.228", - "destination.port": 2447, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "January 20 14:14:16 ris3314.mail.invalid proto=ggp service=smtp status=deny src=10.177.194.18 dst=10.221.89.228 src_port=766 dst_port=2447 server_app=uamei pid=2493 app_name=aera traff_direct=outbound block_count=1747 logon_user=aliquam@nimid893.mail.corp msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ris3314.mail.invalid", - "input.type": "log", - "log.offset": 6831, - "network.direction": "outbound", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2493, - "related.hosts": [ - "nimid893.mail.corp", - "ris3314.mail.invalid" - ], - "related.ip": [ - "10.177.194.18", - "10.221.89.228" - ], - "related.user": [ - "aliquam" - ], - "rsa.counters.dclass_c1": 1747, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "ris3314.mail.invalid" - ], - "rsa.network.domain": "nimid893.mail.corp", - "rsa.network.network_service": "smtp", - "server.domain": "nimid893.mail.corp", - "server.registered_domain": "mail.corp", - "server.subdomain": "nimid893", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.177.194.18", - "source.port": 766, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "aliquam" - }, - { - "destination.ip": "10.32.239.1", - "destination.port": 3128, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 3 21:16:50 reme622.mail.example proto=icmp service=ms-wbt-server status=deny src=10.241.65.49 dst=10.32.239.1 src_port=3027 dst_port=3128 server_app=dictasu pid=3022 app_name=catc traff_direct=unknown block_count=3522 logon_user=idata@rumwritt6003.host msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "reme622.mail.example", - "input.type": "log", - "log.offset": 7099, - "network.direction": "unknown", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3022, - "related.hosts": [ - "reme622.mail.example", - "rumwritt6003.host" - ], - "related.ip": [ - "10.241.65.49", - "10.32.239.1" - ], - "related.user": [ - "idata" - ], - "rsa.counters.dclass_c1": 3522, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "reme622.mail.example" - ], - "rsa.network.domain": "rumwritt6003.host", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "rumwritt6003.host", - "server.registered_domain": "rumwritt6003.host", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.241.65.49", - "source.port": 3027, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "idata" - }, - { - "destination.ip": "10.101.57.120", - "destination.port": 6501, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 18 04:19:24 non3341.mail.invalid proto=ggp service=http status=deny src=10.168.90.81 dst=10.101.57.120 src_port=6866 dst_port=6501 server_app=laboree pid=2328 app_name=intocc traff_direct=internal block_count=5516 logon_user=eporr@xeacomm6855.api.corp msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "non3341.mail.invalid", - "input.type": "log", - "log.offset": 7373, - "network.direction": "internal", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2328, - "related.hosts": [ - "non3341.mail.invalid", - "xeacomm6855.api.corp" - ], - "related.ip": [ - "10.101.57.120", - "10.168.90.81" - ], - "related.user": [ - "eporr" - ], - "rsa.counters.dclass_c1": 5516, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "non3341.mail.invalid" - ], - "rsa.network.domain": "xeacomm6855.api.corp", - "rsa.network.network_service": "http", - "server.domain": "xeacomm6855.api.corp", - "server.registered_domain": "api.corp", - "server.subdomain": "xeacomm6855", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.168.90.81", - "source.port": 6866, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "eporr" - }, - { - "destination.ip": "10.130.14.60", - "destination.port": 2051, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 4 11:21:59 ris727.api.local proto=tcp service=ms-wbt-server status=deny src=10.14.211.43 dst=10.130.14.60 src_port=4456 dst_port=2051 server_app=autfu pid=1156 app_name=tessec traff_direct=external block_count=7200 logon_user=litse@icabo4125.mail.domain msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ris727.api.local", - "input.type": "log", - "log.offset": 7646, - "network.direction": "external", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1156, - "related.hosts": [ - "icabo4125.mail.domain", - "ris727.api.local" - ], - "related.ip": [ - "10.130.14.60", - "10.14.211.43" - ], - "related.user": [ - "litse" - ], - "rsa.counters.dclass_c1": 7200, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "ris727.api.local" - ], - "rsa.network.domain": "icabo4125.mail.domain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "icabo4125.mail.domain", - "server.registered_domain": "mail.domain", - "server.subdomain": "icabo4125", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.14.211.43", - "source.port": 4456, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "litse" - }, - { - "destination.ip": "10.248.101.25", - "destination.port": 5740, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 18 18:24:33 stquido5705.api.host proto=icmp service=http status=deny src=10.60.129.15 dst=10.248.101.25 src_port=106 dst_port=5740 server_app=Nequepo pid=6003 app_name=pora traff_direct=unknown block_count=6437 logon_user=evolup@ionofdeF5643.www.localhost msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "stquido5705.api.host", - "input.type": "log", - "log.offset": 7918, - "network.direction": "unknown", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6003, - "related.hosts": [ - "ionofdeF5643.www.localhost", - "stquido5705.api.host" - ], - "related.ip": [ - "10.248.101.25", - "10.60.129.15" - ], - "related.user": [ - "evolup" - ], - "rsa.counters.dclass_c1": 6437, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "stquido5705.api.host" - ], - "rsa.network.domain": "ionofdeF5643.www.localhost", - "rsa.network.network_service": "http", - "server.domain": "ionofdeF5643.www.localhost", - "server.registered_domain": "www.localhost", - "server.subdomain": "ionofdeF5643", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.60.129.15", - "source.port": 106, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "evolup" - }, - { - "destination.ip": "10.111.187.12", - "destination.port": 3994, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 2 01:27:07 etcons7378.api.lan proto=tcp service=https status=deny src=10.72.93.28 dst=10.111.187.12 src_port=3577 dst_port=3994 server_app=aper pid=5651 app_name=tur traff_direct=inbound block_count=3427 logon_user=niamqui@orem6702.invalid msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "etcons7378.api.lan", - "input.type": "log", - "log.offset": 8192, - "network.direction": "inbound", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5651, - "related.hosts": [ - "etcons7378.api.lan", - "orem6702.invalid" - ], - "related.ip": [ - "10.111.187.12", - "10.72.93.28" - ], - "related.user": [ - "niamqui" - ], - "rsa.counters.dclass_c1": 3427, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "etcons7378.api.lan" - ], - "rsa.network.domain": "orem6702.invalid", - "rsa.network.network_service": "https", - "server.domain": "orem6702.invalid", - "server.registered_domain": "orem6702.invalid", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.72.93.28", - "source.port": 3577, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "niamqui" - }, - { - "destination.ip": "10.66.2.232", - "destination.port": 5764, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 16 08:29:41 vita2681.www5.local proto=icmp service=ms-wbt-server status=deny src=10.27.14.168 dst=10.66.2.232 src_port=2224 dst_port=5764 server_app=fugiatn pid=3470 app_name=ipsumd traff_direct=outbound block_count=6708 logon_user=uirati@oin6780.mail.domain msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "vita2681.www5.local", - "input.type": "log", - "log.offset": 8450, - "network.direction": "outbound", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3470, - "related.hosts": [ - "oin6780.mail.domain", - "vita2681.www5.local" - ], - "related.ip": [ - "10.27.14.168", - "10.66.2.232" - ], - "related.user": [ - "uirati" - ], - "rsa.counters.dclass_c1": 6708, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "vita2681.www5.local" - ], - "rsa.network.domain": "oin6780.mail.domain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "oin6780.mail.domain", - "server.registered_domain": "mail.domain", - "server.subdomain": "oin6780", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.27.14.168", - "source.port": 2224, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "uirati" - }, - { - "destination.ip": "10.195.2.130", - "destination.port": 202, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 30 15:32:16 tnulapa7592.www.local proto=ggp service=ms-wbt-server status=deny src=10.75.99.127 dst=10.195.2.130 src_port=1766 dst_port=202 server_app=mporin pid=6932 app_name=nisiuta traff_direct=internal block_count=3828 logon_user=inibusB@eprehen3224.www5.localdomain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tnulapa7592.www.local", - "input.type": "log", - "log.offset": 8727, - "network.direction": "internal", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6932, - "related.hosts": [ - "eprehen3224.www5.localdomain", - "tnulapa7592.www.local" - ], - "related.ip": [ - "10.195.2.130", - "10.75.99.127" - ], - "related.user": [ - "inibusB" - ], - "rsa.counters.dclass_c1": 3828, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "tnulapa7592.www.local" - ], - "rsa.network.domain": "eprehen3224.www5.localdomain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "eprehen3224.www5.localdomain", - "server.registered_domain": "www5.localdomain", - "server.subdomain": "eprehen3224", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.75.99.127", - "source.port": 1766, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "inibusB" - }, - { - "destination.ip": "10.245.104.182", - "destination.port": 55, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 14 22:34:50 lup2134.www.localhost proto=ipv6 service=pop3 status=deny src=10.201.238.90 dst=10.245.104.182 src_port=3759 dst_port=55 server_app=ccaecat pid=6945 app_name=onsequ traff_direct=outbound block_count=4198 logon_user=ovol@ptasn6599.www.localhost msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "lup2134.www.localhost", - "input.type": "log", - "log.offset": 9015, - "network.direction": "outbound", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6945, - "related.hosts": [ - "lup2134.www.localhost", - "ptasn6599.www.localhost" - ], - "related.ip": [ - "10.201.238.90", - "10.245.104.182" - ], - "related.user": [ - "ovol" - ], - "rsa.counters.dclass_c1": 4198, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "lup2134.www.localhost" - ], - "rsa.network.domain": "ptasn6599.www.localhost", - "rsa.network.network_service": "pop3", - "server.domain": "ptasn6599.www.localhost", - "server.registered_domain": "www.localhost", - "server.subdomain": "ptasn6599", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.201.238.90", - "source.port": 3759, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ovol" - }, - { - "destination.ip": "10.105.91.31", - "destination.port": 5987, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 29 05:37:24 tanimid3337.mail.corp proto=ipv6-icmp service=http status=deny src=10.217.150.196 dst=10.105.91.31 src_port=2056 dst_port=5987 server_app=loreme pid=853 app_name=psumquia traff_direct=external block_count=4444 logon_user=con@nisist2752.home msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tanimid3337.mail.corp", - "input.type": "log", - "log.offset": 9287, - "network.direction": "external", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 853, - "related.hosts": [ - "nisist2752.home", - "tanimid3337.mail.corp" - ], - "related.ip": [ - "10.105.91.31", - "10.217.150.196" - ], - "related.user": [ - "con" - ], - "rsa.counters.dclass_c1": 4444, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "tanimid3337.mail.corp" - ], - "rsa.network.domain": "nisist2752.home", - "rsa.network.network_service": "http", - "server.domain": "nisist2752.home", - "server.registered_domain": "nisist2752.home", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.217.150.196", - "source.port": 2056, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "con" - }, - { - "destination.ip": "10.184.18.202", - "destination.port": 205, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 12 12:39:58 eumiu765.api.lan proto=ipv6-icmp service=https status=deny src=10.4.157.1 dst=10.184.18.202 src_port=52 dst_port=205 server_app=ofdeFini pid=4153 app_name=molli traff_direct=outbound block_count=725 logon_user=oditem@gitsedqu2649.mail.lan msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "eumiu765.api.lan", - "input.type": "log", - "log.offset": 9556, - "network.direction": "outbound", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4153, - "related.hosts": [ - "eumiu765.api.lan", - "gitsedqu2649.mail.lan" - ], - "related.ip": [ - "10.184.18.202", - "10.4.157.1" - ], - "related.user": [ - "oditem" - ], - "rsa.counters.dclass_c1": 725, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "eumiu765.api.lan" - ], - "rsa.network.domain": "gitsedqu2649.mail.lan", - "rsa.network.network_service": "https", - "server.domain": "gitsedqu2649.mail.lan", - "server.registered_domain": "mail.lan", - "server.subdomain": "gitsedqu2649", - "server.top_level_domain": "lan", - "service.type": "fortinet", - "source.ip": "10.4.157.1", - "source.port": 52, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "oditem" - }, - { - "destination.ip": "10.113.95.59", - "destination.port": 4367, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 26 19:42:33 mquelau5326.mail.lan proto=icmp service=https status=deny src=10.255.39.252 dst=10.113.95.59 src_port=863 dst_port=4367 server_app=fugitsed pid=1693 app_name=idolo traff_direct=internal block_count=3147 logon_user=persp@entsunt3962.www.example msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "mquelau5326.mail.lan", - "input.type": "log", - "log.offset": 9824, - "network.direction": "internal", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1693, - "related.hosts": [ - "entsunt3962.www.example", - "mquelau5326.mail.lan" - ], - "related.ip": [ - "10.113.95.59", - "10.255.39.252" - ], - "related.user": [ - "persp" - ], - "rsa.counters.dclass_c1": 3147, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "mquelau5326.mail.lan" - ], - "rsa.network.domain": "entsunt3962.www.example", - "rsa.network.network_service": "https", - "server.domain": "entsunt3962.www.example", - "server.registered_domain": "www.example", - "server.subdomain": "entsunt3962", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.255.39.252", - "source.port": 863, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "persp" - }, - { - "destination.ip": "10.83.177.2", - "destination.port": 1827, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 11 02:45:07 idestlab2631.www.lan proto=tcp service=http status=deny src=10.27.16.118 dst=10.83.177.2 src_port=18 dst_port=1827 server_app=iat pid=337 app_name=rinre traff_direct=internal block_count=1300 logon_user=borios@tut2703.www.host msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "idestlab2631.www.lan", - "input.type": "log", - "log.offset": 10097, - "network.direction": "internal", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 337, - "related.hosts": [ - "idestlab2631.www.lan", - "tut2703.www.host" - ], - "related.ip": [ - "10.27.16.118", - "10.83.177.2" - ], - "related.user": [ - "borios" - ], - "rsa.counters.dclass_c1": 1300, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "idestlab2631.www.lan" - ], - "rsa.network.domain": "tut2703.www.host", - "rsa.network.network_service": "http", - "server.domain": "tut2703.www.host", - "server.registered_domain": "www.host", - "server.subdomain": "tut2703", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.27.16.118", - "source.port": 18, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "borios" - }, - { - "destination.ip": "10.167.227.44", - "destination.port": 5736, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 25 09:47:41 inesci6789.test proto=udp service=http status=deny src=10.38.54.72 dst=10.167.227.44 src_port=6595 dst_port=5736 server_app=lillum pid=7041 app_name=its traff_direct=outbound block_count=7644 logon_user=riamea@entorev160.test msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "inesci6789.test", - "input.type": "log", - "log.offset": 10353, - "network.direction": "outbound", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7041, - "related.hosts": [ - "entorev160.test", - "inesci6789.test" - ], - "related.ip": [ - "10.167.227.44", - "10.38.54.72" - ], - "related.user": [ - "riamea" - ], - "rsa.counters.dclass_c1": 7644, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "inesci6789.test" - ], - "rsa.network.domain": "entorev160.test", - "rsa.network.network_service": "http", - "server.domain": "entorev160.test", - "server.registered_domain": "entorev160.test", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.38.54.72", - "source.port": 6595, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "riamea" - }, - { - "destination.ip": "10.215.205.216", - "destination.port": 647, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 8 16:50:15 ccaeca7077.internal.corp proto=tcp service=http status=deny src=10.216.54.184 dst=10.215.205.216 src_port=1495 dst_port=647 server_app=riat pid=3854 app_name=psaquaea traff_direct=external block_count=7536 logon_user=ameiusm@proide3714.mail.localdomain msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ccaeca7077.internal.corp", - "input.type": "log", - "log.offset": 10608, - "network.direction": "external", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3854, - "related.hosts": [ - "ccaeca7077.internal.corp", - "proide3714.mail.localdomain" - ], - "related.ip": [ - "10.215.205.216", - "10.216.54.184" - ], - "related.user": [ - "ameiusm" - ], - "rsa.counters.dclass_c1": 7536, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "ccaeca7077.internal.corp" - ], - "rsa.network.domain": "proide3714.mail.localdomain", - "rsa.network.network_service": "http", - "server.domain": "proide3714.mail.localdomain", - "server.registered_domain": "mail.localdomain", - "server.subdomain": "proide3714", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.216.54.184", - "source.port": 1495, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ameiusm" - }, - { - "destination.ip": "10.9.18.237", - "destination.port": 2486, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 22 23:52:50 ima2031.api.corp proto=igmp service=smtp status=deny src=10.9.12.248 dst=10.9.18.237 src_port=765 dst_port=2486 server_app=tpersp pid=55 app_name=seosqui traff_direct=internal block_count=6379 logon_user=uradi@tot5313.mail.invalid msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ima2031.api.corp", - "input.type": "log", - "log.offset": 10891, - "network.direction": "internal", - "network.protocol": "igmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 55, - "related.hosts": [ - "ima2031.api.corp", - "tot5313.mail.invalid" - ], - "related.ip": [ - "10.9.12.248", - "10.9.18.237" - ], - "related.user": [ - "uradi" - ], - "rsa.counters.dclass_c1": 6379, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "ima2031.api.corp" - ], - "rsa.network.domain": "tot5313.mail.invalid", - "rsa.network.network_service": "smtp", - "server.domain": "tot5313.mail.invalid", - "server.registered_domain": "mail.invalid", - "server.subdomain": "tot5313", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.9.12.248", - "source.port": 765, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "uradi" - }, - { - "destination.ip": "10.41.123.102", - "destination.port": 2300, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 6 06:55:24 ian867.internal.corp proto=rdp service=https status=deny src=10.83.130.226 dst=10.41.123.102 src_port=1542 dst_port=2300 server_app=odoconse pid=228 app_name=quatu traff_direct=external block_count=7661 logon_user=tenim@rumet3801.internal.domain msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ian867.internal.corp", - "input.type": "log", - "log.offset": 11153, - "network.direction": "external", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 228, - "related.hosts": [ - "ian867.internal.corp", - "rumet3801.internal.domain" - ], - "related.ip": [ - "10.41.123.102", - "10.83.130.226" - ], - "related.user": [ - "tenim" - ], - "rsa.counters.dclass_c1": 7661, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "ian867.internal.corp" - ], - "rsa.network.domain": "rumet3801.internal.domain", - "rsa.network.network_service": "https", - "server.domain": "rumet3801.internal.domain", - "server.registered_domain": "internal.domain", - "server.subdomain": "rumet3801", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.83.130.226", - "source.port": 1542, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "tenim" - }, - { - "destination.ip": "10.80.152.108", - "destination.port": 2742, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 20 13:57:58 lorin4249.corp proto=tcp service=pop3 status=deny src=10.175.112.197 dst=10.80.152.108 src_port=1749 dst_port=2742 server_app=exeacom pid=4253 app_name=rita traff_direct=outbound block_count=6984 logon_user=tametcon@liqua2834.www5.lan msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "lorin4249.corp", - "input.type": "log", - "log.offset": 11432, - "network.direction": "outbound", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4253, - "related.hosts": [ - "liqua2834.www5.lan", - "lorin4249.corp" - ], - "related.ip": [ - "10.175.112.197", - "10.80.152.108" - ], - "related.user": [ - "tametcon" - ], - "rsa.counters.dclass_c1": 6984, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "lorin4249.corp" - ], - "rsa.network.domain": "liqua2834.www5.lan", - "rsa.network.network_service": "pop3", - "server.domain": "liqua2834.www5.lan", - "server.registered_domain": "www5.lan", - "server.subdomain": "liqua2834", - "server.top_level_domain": "lan", - "service.type": "fortinet", - "source.ip": "10.175.112.197", - "source.port": 1749, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "tametcon" - }, - { - "destination.ip": "10.142.25.100", - "destination.port": 5770, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 4 21:00:32 gnaaliqu3935.api.test proto=udp service=smtp status=deny src=10.134.18.114 dst=10.142.25.100 src_port=2761 dst_port=5770 server_app=mdol pid=2200 app_name=nby traff_direct=internal block_count=624 logon_user=osqui@sequat7273.api.host msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "gnaaliqu3935.api.test", - "input.type": "log", - "log.offset": 11701, - "network.direction": "internal", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2200, - "related.hosts": [ - "gnaaliqu3935.api.test", - "sequat7273.api.host" - ], - "related.ip": [ - "10.134.18.114", - "10.142.25.100" - ], - "related.user": [ - "osqui" - ], - "rsa.counters.dclass_c1": 624, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "gnaaliqu3935.api.test" - ], - "rsa.network.domain": "sequat7273.api.host", - "rsa.network.network_service": "smtp", - "server.domain": "sequat7273.api.host", - "server.registered_domain": "api.host", - "server.subdomain": "sequat7273", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.134.18.114", - "source.port": 2761, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "osqui" - }, - { - "destination.ip": "10.223.119.218", - "destination.port": 300, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 19 04:03:07 nsequat1859.internal.localhost proto=udp service=http status=deny src=10.28.118.160 dst=10.223.119.218 src_port=6247 dst_port=300 server_app=umexerc pid=5717 app_name=intocc traff_direct=internal block_count=4387 logon_user=ntsunt@uidol4575.localhost msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "nsequat1859.internal.localhost", - "input.type": "log", - "log.offset": 11966, - "network.direction": "internal", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5717, - "related.hosts": [ - "nsequat1859.internal.localhost", - "uidol4575.localhost" - ], - "related.ip": [ - "10.223.119.218", - "10.28.118.160" - ], - "related.user": [ - "ntsunt" - ], - "rsa.counters.dclass_c1": 4387, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "nsequat1859.internal.localhost" - ], - "rsa.network.domain": "uidol4575.localhost", - "rsa.network.network_service": "http", - "server.domain": "uidol4575.localhost", - "server.registered_domain": "uidol4575.localhost", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.28.118.160", - "source.port": 6247, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ntsunt" - }, - { - "destination.ip": "10.47.28.48", - "destination.port": 3032, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 2 11:05:41 ritin2495.api.corp proto=ggp service=https status=deny src=10.110.114.175 dst=10.47.28.48 src_port=4986 dst_port=3032 server_app=tatem pid=4469 app_name=luptat traff_direct=unknown block_count=4488 logon_user=plicab@oremq2000.api.corp msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ritin2495.api.corp", - "input.type": "log", - "log.offset": 12249, - "network.direction": "unknown", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4469, - "related.hosts": [ - "oremq2000.api.corp", - "ritin2495.api.corp" - ], - "related.ip": [ - "10.110.114.175", - "10.47.28.48" - ], - "related.user": [ - "plicab" - ], - "rsa.counters.dclass_c1": 4488, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "ritin2495.api.corp" - ], - "rsa.network.domain": "oremq2000.api.corp", - "rsa.network.network_service": "https", - "server.domain": "oremq2000.api.corp", - "server.registered_domain": "api.corp", - "server.subdomain": "oremq2000", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.110.114.175", - "source.port": 4986, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "plicab" - }, - { - "destination.ip": "10.90.33.138", - "destination.port": 7876, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 16 18:08:15 tetur2694.mail.local proto=ggp service=pop3 status=deny src=10.40.251.202 dst=10.90.33.138 src_port=5733 dst_port=7876 server_app=enimadmi pid=5524 app_name=lupta traff_direct=external block_count=6847 logon_user=nvolupt@oremi1485.api.localhost msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tetur2694.mail.local", - "input.type": "log", - "log.offset": 12516, - "network.direction": "external", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5524, - "related.hosts": [ - "oremi1485.api.localhost", - "tetur2694.mail.local" - ], - "related.ip": [ - "10.40.251.202", - "10.90.33.138" - ], - "related.user": [ - "nvolupt" - ], - "rsa.counters.dclass_c1": 6847, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "tetur2694.mail.local" - ], - "rsa.network.domain": "oremi1485.api.localhost", - "rsa.network.network_service": "pop3", - "server.domain": "oremi1485.api.localhost", - "server.registered_domain": "api.localhost", - "server.subdomain": "oremi1485", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.40.251.202", - "source.port": 5733, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "nvolupt" - }, - { - "destination.ip": "10.227.173.252", - "destination.port": 5337, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 1 01:10:49 rem7043.localhost proto=ipv6 service=ms-wbt-server status=deny src=10.65.2.106 dst=10.227.173.252 src_port=5410 dst_port=5337 server_app=nisiut pid=3624 app_name=teturad traff_direct=external block_count=7576 logon_user=itation@sequatD5469.www5.lan msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "rem7043.localhost", - "input.type": "log", - "log.offset": 12794, - "network.direction": "external", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3624, - "related.hosts": [ - "rem7043.localhost", - "sequatD5469.www5.lan" - ], - "related.ip": [ - "10.227.173.252", - "10.65.2.106" - ], - "related.user": [ - "itation" - ], - "rsa.counters.dclass_c1": 7576, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "rem7043.localhost" - ], - "rsa.network.domain": "sequatD5469.www5.lan", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "sequatD5469.www5.lan", - "server.registered_domain": "www5.lan", - "server.subdomain": "sequatD5469", - "server.top_level_domain": "lan", - "service.type": "fortinet", - "source.ip": "10.65.2.106", - "source.port": 5410, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "itation" - }, - { - "destination.ip": "10.28.84.106", - "destination.port": 4844, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 15 08:13:24 emqu2846.internal.home proto=udp service=https status=deny src=10.193.233.229 dst=10.28.84.106 src_port=2859 dst_port=4844 server_app=eaqu pid=1609 app_name=uptatemU traff_direct=inbound block_count=3096 logon_user=tla@item2738.test msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "emqu2846.internal.home", - "input.type": "log", - "log.offset": 13075, - "network.direction": "inbound", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1609, - "related.hosts": [ - "emqu2846.internal.home", - "item2738.test" - ], - "related.ip": [ - "10.193.233.229", - "10.28.84.106" - ], - "related.user": [ - "tla" - ], - "rsa.counters.dclass_c1": 3096, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "emqu2846.internal.home" - ], - "rsa.network.domain": "item2738.test", - "rsa.network.network_service": "https", - "server.domain": "item2738.test", - "server.registered_domain": "item2738.test", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.193.233.229", - "source.port": 2859, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "tla" - }, - { - "destination.ip": "10.210.89.183", - "destination.port": 2589, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 29 15:15:58 dqu6144.api.localhost proto=ggp service=ms-wbt-server status=deny src=10.150.245.88 dst=10.210.89.183 src_port=3642 dst_port=2589 server_app=ulpa pid=6248 app_name=iusmodte traff_direct=external block_count=2700 logon_user=sequa@iosamnis1047.internal.localdomain msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "dqu6144.api.localhost", - "input.type": "log", - "log.offset": 13341, - "network.direction": "external", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6248, - "related.hosts": [ - "dqu6144.api.localhost", - "iosamnis1047.internal.localdomain" - ], - "related.ip": [ - "10.150.245.88", - "10.210.89.183" - ], - "related.user": [ - "sequa" - ], - "rsa.counters.dclass_c1": 2700, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "dqu6144.api.localhost" - ], - "rsa.network.domain": "iosamnis1047.internal.localdomain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "iosamnis1047.internal.localdomain", - "server.registered_domain": "internal.localdomain", - "server.subdomain": "iosamnis1047", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.150.245.88", - "source.port": 3642, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "sequa" - }, - { - "destination.ip": "10.85.185.13", - "destination.port": 7793, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "January 12 22:18:32 giatquov1918.internal.example proto=udp service=ms-wbt-server status=deny src=10.180.195.43 dst=10.85.185.13 src_port=4540 dst_port=7793 server_app=gnaal pid=7224 app_name=proident traff_direct=outbound block_count=1867 logon_user=voluptas@orroq6677.internal.example msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "giatquov1918.internal.example", - "input.type": "log", - "log.offset": 13637, - "network.direction": "outbound", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7224, - "related.hosts": [ - "giatquov1918.internal.example", - "orroq6677.internal.example" - ], - "related.ip": [ - "10.180.195.43", - "10.85.185.13" - ], - "related.user": [ - "voluptas" - ], - "rsa.counters.dclass_c1": 1867, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "giatquov1918.internal.example" - ], - "rsa.network.domain": "orroq6677.internal.example", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "orroq6677.internal.example", - "server.registered_domain": "internal.example", - "server.subdomain": "orroq6677", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.180.195.43", - "source.port": 4540, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "voluptas" - }, - { - "destination.ip": "10.210.28.247", - "destination.port": 7257, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "January 27 05:21:06 estl5804.internal.local proto=udp service=ms-wbt-server status=deny src=10.207.211.230 dst=10.210.28.247 src_port=3449 dst_port=7257 server_app=ssecil pid=430 app_name=iuntNe traff_direct=unknown block_count=7672 logon_user=tate@onevo4326.internal.local msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "estl5804.internal.local", - "input.type": "log", - "log.offset": 13936, - "network.direction": "unknown", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 430, - "related.hosts": [ - "estl5804.internal.local", - "onevo4326.internal.local" - ], - "related.ip": [ - "10.207.211.230", - "10.210.28.247" - ], - "related.user": [ - "tate" - ], - "rsa.counters.dclass_c1": 7672, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "estl5804.internal.local" - ], - "rsa.network.domain": "onevo4326.internal.local", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "onevo4326.internal.local", - "server.registered_domain": "internal.local", - "server.subdomain": "onevo4326", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.207.211.230", - "source.port": 3449, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "tate" - }, - { - "destination.ip": "10.248.165.185", - "destination.port": 5460, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 10 12:23:41 Sedut1775.www.domain proto=rdp service=ms-wbt-server status=deny src=10.86.11.48 dst=10.248.165.185 src_port=3436 dst_port=5460 server_app=olorsi pid=3589 app_name=exeaco traff_direct=external block_count=4801 logon_user=dquiac@itaedict7233.mail.localdomain msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "Sedut1775.www.domain", - "input.type": "log", - "log.offset": 14222, - "network.direction": "external", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3589, - "related.hosts": [ - "Sedut1775.www.domain", - "itaedict7233.mail.localdomain" - ], - "related.ip": [ - "10.248.165.185", - "10.86.11.48" - ], - "related.user": [ - "dquiac" - ], - "rsa.counters.dclass_c1": 4801, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "Sedut1775.www.domain" - ], - "rsa.network.domain": "itaedict7233.mail.localdomain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "itaedict7233.mail.localdomain", - "server.registered_domain": "mail.localdomain", - "server.subdomain": "itaedict7233", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.86.11.48", - "source.port": 3436, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "dquiac" - }, - { - "destination.ip": "10.47.125.38", - "destination.port": 3896, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 24 19:26:15 mac7484.www5.test proto=ipv6-icmp service=http status=deny src=10.118.6.177 dst=10.47.125.38 src_port=6977 dst_port=3896 server_app=isn pid=4814 app_name=omm traff_direct=outbound block_count=1844 logon_user=quunt@numquam5869.internal.example msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "mac7484.www5.test", - "input.type": "log", - "log.offset": 14513, - "network.direction": "outbound", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4814, - "related.hosts": [ - "mac7484.www5.test", - "numquam5869.internal.example" - ], - "related.ip": [ - "10.118.6.177", - "10.47.125.38" - ], - "related.user": [ - "quunt" - ], - "rsa.counters.dclass_c1": 1844, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "mac7484.www5.test" - ], - "rsa.network.domain": "numquam5869.internal.example", - "rsa.network.network_service": "http", - "server.domain": "numquam5869.internal.example", - "server.registered_domain": "internal.example", - "server.subdomain": "numquam5869", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.118.6.177", - "source.port": 6977, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "quunt" - }, - { - "destination.ip": "10.60.142.127", - "destination.port": 5112, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 11 02:28:49 oin1140.mail.localhost proto=icmp service=pop3 status=deny src=10.50.233.155 dst=10.60.142.127 src_port=1081 dst_port=5112 server_app=urExce pid=276 app_name=nturm traff_direct=outbound block_count=2241 logon_user=atv@onu6137.api.home msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "oin1140.mail.localhost", - "input.type": "log", - "log.offset": 14789, - "network.direction": "outbound", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 276, - "related.hosts": [ - "oin1140.mail.localhost", - "onu6137.api.home" - ], - "related.ip": [ - "10.50.233.155", - "10.60.142.127" - ], - "related.user": [ - "atv" - ], - "rsa.counters.dclass_c1": 2241, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "oin1140.mail.localhost" - ], - "rsa.network.domain": "onu6137.api.home", - "rsa.network.network_service": "pop3", - "server.domain": "onu6137.api.home", - "server.registered_domain": "api.home", - "server.subdomain": "onu6137", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.50.233.155", - "source.port": 1081, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "atv" - }, - { - "destination.ip": "10.120.10.211", - "destination.port": 7661, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 25 09:31:24 naaliq3710.api.local proto=rdp service=http status=deny src=10.28.82.189 dst=10.120.10.211 src_port=3916 dst_port=7661 server_app=odt pid=2452 app_name=inv traff_direct=internal block_count=7705 logon_user=rcit@aecatcup2241.www5.test msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "naaliq3710.api.local", - "input.type": "log", - "log.offset": 15054, - "network.direction": "internal", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2452, - "related.hosts": [ - "aecatcup2241.www5.test", - "naaliq3710.api.local" - ], - "related.ip": [ - "10.120.10.211", - "10.28.82.189" - ], - "related.user": [ - "rcit" - ], - "rsa.counters.dclass_c1": 7705, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "naaliq3710.api.local" - ], - "rsa.network.domain": "aecatcup2241.www5.test", - "rsa.network.network_service": "http", - "server.domain": "aecatcup2241.www5.test", - "server.registered_domain": "www5.test", - "server.subdomain": "aecatcup2241", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.28.82.189", - "source.port": 3916, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "rcit" - }, - { - "destination.ip": "10.6.38.163", - "destination.port": 4059, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 8 16:33:58 volupta3552.internal.localhost proto=ipv6 service=pop3 status=deny src=10.31.237.225 dst=10.6.38.163 src_port=6153 dst_port=4059 server_app=oreveri pid=3453 app_name=avolu traff_direct=inbound block_count=2820 logon_user=olup@labor6360.mail.local msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "volupta3552.internal.localhost", - "input.type": "log", - "log.offset": 15318, - "network.direction": "inbound", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3453, - "related.hosts": [ - "labor6360.mail.local", - "volupta3552.internal.localhost" - ], - "related.ip": [ - "10.31.237.225", - "10.6.38.163" - ], - "related.user": [ - "olup" - ], - "rsa.counters.dclass_c1": 2820, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "volupta3552.internal.localhost" - ], - "rsa.network.domain": "labor6360.mail.local", - "rsa.network.network_service": "pop3", - "server.domain": "labor6360.mail.local", - "server.registered_domain": "mail.local", - "server.subdomain": "labor6360", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.31.237.225", - "source.port": 6153, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "olup" - }, - { - "destination.ip": "10.125.165.144", - "destination.port": 7889, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 22 23:36:32 onse380.internal.localdomain proto=ggp service=https status=deny src=10.226.5.189 dst=10.125.165.144 src_port=3371 dst_port=7889 server_app=dexerc pid=2302 app_name=tatem traff_direct=inbound block_count=5407 logon_user=mvolu@mveleum4322.www5.host msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "onse380.internal.localdomain", - "input.type": "log", - "log.offset": 15594, - "network.direction": "inbound", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2302, - "related.hosts": [ - "mveleum4322.www5.host", - "onse380.internal.localdomain" - ], - "related.ip": [ - "10.125.165.144", - "10.226.5.189" - ], - "related.user": [ - "mvolu" - ], - "rsa.counters.dclass_c1": 5407, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "onse380.internal.localdomain" - ], - "rsa.network.domain": "mveleum4322.www5.host", - "rsa.network.network_service": "https", - "server.domain": "mveleum4322.www5.host", - "server.registered_domain": "www5.host", - "server.subdomain": "mveleum4322", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.226.5.189", - "source.port": 3371, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "mvolu" - }, - { - "destination.ip": "10.46.56.204", - "destination.port": 5070, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 7 06:39:06 queips4947.mail.example proto=udp service=smtp status=deny src=10.97.149.97 dst=10.46.56.204 src_port=2463 dst_port=5070 server_app=uela pid=7079 app_name=umf traff_direct=unknown block_count=2441 logon_user=dolorsit@archite1843.mail.home msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "queips4947.mail.example", - "input.type": "log", - "log.offset": 15872, - "network.direction": "unknown", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7079, - "related.hosts": [ - "archite1843.mail.home", - "queips4947.mail.example" - ], - "related.ip": [ - "10.46.56.204", - "10.97.149.97" - ], - "related.user": [ - "dolorsit" - ], - "rsa.counters.dclass_c1": 2441, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "queips4947.mail.example" - ], - "rsa.network.domain": "archite1843.mail.home", - "rsa.network.network_service": "smtp", - "server.domain": "archite1843.mail.home", - "server.registered_domain": "mail.home", - "server.subdomain": "archite1843", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.97.149.97", - "source.port": 2463, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "dolorsit" - }, - { - "destination.ip": "10.28.105.124", - "destination.port": 4797, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 21 13:41:41 oloreseo5039.test proto=ggp service=https status=deny src=10.218.0.197 dst=10.28.105.124 src_port=7581 dst_port=4797 server_app=eritin pid=5773 app_name=litsedq traff_direct=outbound block_count=5749 logon_user=ntNe@itanim4024.api.example msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "oloreseo5039.test", - "input.type": "log", - "log.offset": 16138, - "network.direction": "outbound", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5773, - "related.hosts": [ - "itanim4024.api.example", - "oloreseo5039.test" - ], - "related.ip": [ - "10.218.0.197", - "10.28.105.124" - ], - "related.user": [ - "ntNe" - ], - "rsa.counters.dclass_c1": 5749, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "oloreseo5039.test" - ], - "rsa.network.domain": "itanim4024.api.example", - "rsa.network.network_service": "https", - "server.domain": "itanim4024.api.example", - "server.registered_domain": "api.example", - "server.subdomain": "itanim4024", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.218.0.197", - "source.port": 7581, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ntNe" - }, - { - "destination.ip": "10.17.87.79", - "destination.port": 3414, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 4 20:44:15 minim459.mail.local proto=rdp service=https status=deny src=10.123.199.198 dst=10.17.87.79 src_port=6332 dst_port=3414 server_app=tionula pid=1586 app_name=ate traff_direct=outbound block_count=5006 logon_user=ratvolu@nreprehe715.api.home msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "minim459.mail.local", - "input.type": "log", - "log.offset": 16405, - "network.direction": "outbound", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1586, - "related.hosts": [ - "minim459.mail.local", - "nreprehe715.api.home" - ], - "related.ip": [ - "10.123.199.198", - "10.17.87.79" - ], - "related.user": [ - "ratvolu" - ], - "rsa.counters.dclass_c1": 5006, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "minim459.mail.local" - ], - "rsa.network.domain": "nreprehe715.api.home", - "rsa.network.network_service": "https", - "server.domain": "nreprehe715.api.home", - "server.registered_domain": "api.home", - "server.subdomain": "nreprehe715", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.123.199.198", - "source.port": 6332, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ratvolu" - }, - { - "destination.ip": "10.115.68.40", - "destination.port": 5483, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 19 03:46:49 eratv211.api.host proto=rdp service=https status=deny src=10.38.86.177 dst=10.115.68.40 src_port=5768 dst_port=5483 server_app=boNem pid=5137 app_name=ssusci traff_direct=internal block_count=2841 logon_user=mpo@unte893.internal.host msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "eratv211.api.host", - "input.type": "log", - "log.offset": 16672, - "network.direction": "internal", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5137, - "related.hosts": [ - "eratv211.api.host", - "unte893.internal.host" - ], - "related.ip": [ - "10.115.68.40", - "10.38.86.177" - ], - "related.user": [ - "mpo" - ], - "rsa.counters.dclass_c1": 2841, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "eratv211.api.host" - ], - "rsa.network.domain": "unte893.internal.host", - "rsa.network.network_service": "https", - "server.domain": "unte893.internal.host", - "server.registered_domain": "internal.host", - "server.subdomain": "unte893", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.38.86.177", - "source.port": 5768, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "mpo" - }, - { - "destination.ip": "10.115.174.107", - "destination.port": 5597, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 3 10:49:23 aparia1179.www.localdomain proto=tcp service=https status=deny src=10.193.118.163 dst=10.115.174.107 src_port=548 dst_port=5597 server_app=acom pid=5704 app_name=dolorem traff_direct=internal block_count=10 logon_user=exeacomm@aspe951.mail.domain msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "aparia1179.www.localdomain", - "input.type": "log", - "log.offset": 16935, - "network.direction": "internal", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5704, - "related.hosts": [ - "aparia1179.www.localdomain", - "aspe951.mail.domain" - ], - "related.ip": [ - "10.115.174.107", - "10.193.118.163" - ], - "related.user": [ - "exeacomm" - ], - "rsa.counters.dclass_c1": 10, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "aparia1179.www.localdomain" - ], - "rsa.network.domain": "aspe951.mail.domain", - "rsa.network.network_service": "https", - "server.domain": "aspe951.mail.domain", - "server.registered_domain": "mail.domain", - "server.subdomain": "aspe951", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.193.118.163", - "source.port": 548, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "exeacomm" - }, - { - "destination.ip": "10.77.77.208", - "destination.port": 1101, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 17 17:51:58 iatqu6203.mail.corp proto=icmp service=http status=deny src=10.37.128.49 dst=10.77.77.208 src_port=625 dst_port=1101 server_app=esci pid=2310 app_name=essecill traff_direct=external block_count=2653 logon_user=moles@dipiscin4957.www.home msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "iatqu6203.mail.corp", - "input.type": "log", - "log.offset": 17210, - "network.direction": "external", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2310, - "related.hosts": [ - "dipiscin4957.www.home", - "iatqu6203.mail.corp" - ], - "related.ip": [ - "10.37.128.49", - "10.77.77.208" - ], - "related.user": [ - "moles" - ], - "rsa.counters.dclass_c1": 2653, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "iatqu6203.mail.corp" - ], - "rsa.network.domain": "dipiscin4957.www.home", - "rsa.network.network_service": "http", - "server.domain": "dipiscin4957.www.home", - "server.registered_domain": "www.home", - "server.subdomain": "dipiscin4957", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.37.128.49", - "source.port": 625, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "moles" - }, - { - "destination.ip": "10.1.96.93", - "destination.port": 428, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 1 00:54:32 ptasnula6576.api.invalid proto=tcp service=ms-wbt-server status=deny src=10.54.73.158 dst=10.1.96.93 src_port=5752 dst_port=428 server_app=docon pid=5398 app_name=ntium traff_direct=internal block_count=4392 logon_user=lloinven@econs2687.internal.localdomain msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "ptasnula6576.api.invalid", - "input.type": "log", - "log.offset": 17477, - "network.direction": "internal", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5398, - "related.hosts": [ - "econs2687.internal.localdomain", - "ptasnula6576.api.invalid" - ], - "related.ip": [ - "10.1.96.93", - "10.54.73.158" - ], - "related.user": [ - "lloinven" - ], - "rsa.counters.dclass_c1": 4392, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "ptasnula6576.api.invalid" - ], - "rsa.network.domain": "econs2687.internal.localdomain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "econs2687.internal.localdomain", - "server.registered_domain": "internal.localdomain", - "server.subdomain": "econs2687", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.54.73.158", - "source.port": 5752, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "lloinven" - }, - { - "destination.ip": "10.182.152.242", - "destination.port": 6998, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 15 07:57:06 mag1506.internal.domain proto=igmp service=smtp status=deny src=10.131.126.109 dst=10.182.152.242 src_port=1877 dst_port=6998 server_app=rcitat pid=2465 app_name=ecillum traff_direct=inbound block_count=3208 logon_user=dolor@tiumto5834.api.lan msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "mag1506.internal.domain", - "input.type": "log", - "log.offset": 17766, - "network.direction": "inbound", - "network.protocol": "igmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2465, - "related.hosts": [ - "mag1506.internal.domain", - "tiumto5834.api.lan" - ], - "related.ip": [ - "10.131.126.109", - "10.182.152.242" - ], - "related.user": [ - "dolor" - ], - "rsa.counters.dclass_c1": 3208, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "mag1506.internal.domain" - ], - "rsa.network.domain": "tiumto5834.api.lan", - "rsa.network.network_service": "smtp", - "server.domain": "tiumto5834.api.lan", - "server.registered_domain": "api.lan", - "server.subdomain": "tiumto5834", - "server.top_level_domain": "lan", - "service.type": "fortinet", - "source.ip": "10.131.126.109", - "source.port": 1877, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "dolor" - }, - { - "destination.ip": "10.77.229.168", - "destination.port": 3777, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 29 14:59:40 fugits1163.host proto=icmp service=http status=deny src=10.181.247.224 dst=10.77.229.168 src_port=260 dst_port=3777 server_app=atatnon pid=6064 app_name=abor traff_direct=external block_count=329 logon_user=adol@iutal6032.www.test msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "fugits1163.host", - "input.type": "log", - "log.offset": 18041, - "network.direction": "external", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6064, - "related.hosts": [ - "fugits1163.host", - "iutal6032.www.test" - ], - "related.ip": [ - "10.181.247.224", - "10.77.229.168" - ], - "related.user": [ - "adol" - ], - "rsa.counters.dclass_c1": 329, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "fugits1163.host" - ], - "rsa.network.domain": "iutal6032.www.test", - "rsa.network.network_service": "http", - "server.domain": "iutal6032.www.test", - "server.registered_domain": "www.test", - "server.subdomain": "iutal6032", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.181.247.224", - "source.port": 260, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "adol" - }, - { - "destination.ip": "10.72.162.6", - "destination.port": 5516, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 12 22:02:15 gitse2463.www5.invalid proto=ipv6-icmp service=http status=deny src=10.235.116.121 dst=10.72.162.6 src_port=1 dst_port=5516 server_app=emp pid=2861 app_name=luptas traff_direct=outbound block_count=1444 logon_user=oinv@inculp2078.host msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "gitse2463.www5.invalid", - "input.type": "log", - "log.offset": 18303, - "network.direction": "outbound", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2861, - "related.hosts": [ - "gitse2463.www5.invalid", - "inculp2078.host" - ], - "related.ip": [ - "10.235.116.121", - "10.72.162.6" - ], - "related.user": [ - "oinv" - ], - "rsa.counters.dclass_c1": 1444, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "gitse2463.www5.invalid" - ], - "rsa.network.domain": "inculp2078.host", - "rsa.network.network_service": "http", - "server.domain": "inculp2078.host", - "server.registered_domain": "inculp2078.host", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.235.116.121", - "source.port": 1, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "oinv" - }, - { - "destination.ip": "10.28.124.236", - "destination.port": 3434, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 27 05:04:49 temse6953.www.example proto=ipv6-icmp service=https status=deny src=10.149.193.117 dst=10.28.124.236 src_port=5343 dst_port=3434 server_app=atcupi pid=3559 app_name=edquia traff_direct=internal block_count=3176 logon_user=mullam@mexerc2757.internal.home msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "temse6953.www.example", - "input.type": "log", - "log.offset": 18572, - "network.direction": "internal", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3559, - "related.hosts": [ - "mexerc2757.internal.home", - "temse6953.www.example" - ], - "related.ip": [ - "10.149.193.117", - "10.28.124.236" - ], - "related.user": [ - "mullam" - ], - "rsa.counters.dclass_c1": 3176, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "temse6953.www.example" - ], - "rsa.network.domain": "mexerc2757.internal.home", - "rsa.network.network_service": "https", - "server.domain": "mexerc2757.internal.home", - "server.registered_domain": "internal.home", - "server.subdomain": "mexerc2757", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.149.193.117", - "source.port": 5343, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "mullam" - }, - { - "destination.ip": "10.196.96.162", - "destination.port": 6378, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 11 12:07:23 deriti6952.mail.domain proto=ipv6-icmp service=http status=deny src=10.34.131.224 dst=10.196.96.162 src_port=649 dst_port=6378 server_app=equatDu pid=1710 app_name=aconse traff_direct=outbound block_count=7174 logon_user=tnonproi@squira4455.api.domain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "deriti6952.mail.domain", - "input.type": "log", - "log.offset": 18860, - "network.direction": "outbound", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1710, - "related.hosts": [ - "deriti6952.mail.domain", - "squira4455.api.domain" - ], - "related.ip": [ - "10.196.96.162", - "10.34.131.224" - ], - "related.user": [ - "tnonproi" - ], - "rsa.counters.dclass_c1": 7174, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "deriti6952.mail.domain" - ], - "rsa.network.domain": "squira4455.api.domain", - "rsa.network.network_service": "http", - "server.domain": "squira4455.api.domain", - "server.registered_domain": "api.domain", - "server.subdomain": "squira4455", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.34.131.224", - "source.port": 649, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "tnonproi" - }, - { - "destination.ip": "10.77.78.180", - "destination.port": 5380, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 25 19:09:57 abor1370.www.domain proto=ipv6-icmp service=https status=deny src=10.97.236.123 dst=10.77.78.180 src_port=5159 dst_port=5380 server_app=reetdol pid=4984 app_name=ugi traff_direct=inbound block_count=4782 logon_user=nisi@emveleum3661.localhost msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "abor1370.www.domain", - "input.type": "log", - "log.offset": 19144, - "network.direction": "inbound", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4984, - "related.hosts": [ - "abor1370.www.domain", - "emveleum3661.localhost" - ], - "related.ip": [ - "10.77.78.180", - "10.97.236.123" - ], - "related.user": [ - "nisi" - ], - "rsa.counters.dclass_c1": 4782, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "abor1370.www.domain" - ], - "rsa.network.domain": "emveleum3661.localhost", - "rsa.network.network_service": "https", - "server.domain": "emveleum3661.localhost", - "server.registered_domain": "emveleum3661.localhost", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.97.236.123", - "source.port": 5159, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "nisi" - }, - { - "destination.ip": "10.45.54.107", - "destination.port": 3593, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 9 02:12:32 emullamc5418.mail.test proto=ipv6 service=ms-wbt-server status=deny src=10.82.133.66 dst=10.45.54.107 src_port=7229 dst_port=3593 server_app=nse pid=3421 app_name=quira traff_direct=unknown block_count=5362 logon_user=olorem@sedquiac6517.internal.localhost msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "emullamc5418.mail.test", - "input.type": "log", - "log.offset": 19419, - "network.direction": "unknown", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3421, - "related.hosts": [ - "emullamc5418.mail.test", - "sedquiac6517.internal.localhost" - ], - "related.ip": [ - "10.45.54.107", - "10.82.133.66" - ], - "related.user": [ - "olorem" - ], - "rsa.counters.dclass_c1": 5362, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "emullamc5418.mail.test" - ], - "rsa.network.domain": "sedquiac6517.internal.localhost", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "sedquiac6517.internal.localhost", - "server.registered_domain": "internal.localhost", - "server.subdomain": "sedquiac6517", - "server.top_level_domain": "localhost", - "service.type": "fortinet", - "source.ip": "10.82.133.66", - "source.port": 7229, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "olorem" - }, - { - "destination.ip": "10.170.252.219", - "destination.port": 2454, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 23 09:15:06 squirati7050.www5.lan proto=rdp service=pop3 status=deny src=10.180.180.230 dst=10.170.252.219 src_port=4147 dst_port=2454 server_app=tesseci pid=4020 app_name=radipis traff_direct=external block_count=7020 logon_user=nse@veniam3148.www5.home msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "squirati7050.www5.lan", - "input.type": "log", - "log.offset": 19708, - "network.direction": "external", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4020, - "related.hosts": [ - "squirati7050.www5.lan", - "veniam3148.www5.home" - ], - "related.ip": [ - "10.170.252.219", - "10.180.180.230" - ], - "related.user": [ - "nse" - ], - "rsa.counters.dclass_c1": 7020, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "squirati7050.www5.lan" - ], - "rsa.network.domain": "veniam3148.www5.home", - "rsa.network.network_service": "pop3", - "server.domain": "veniam3148.www5.home", - "server.registered_domain": "www5.home", - "server.subdomain": "veniam3148", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.180.180.230", - "source.port": 4147, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "nse" - }, - { - "destination.ip": "10.65.144.51", - "destination.port": 2283, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 7 16:17:40 venia2079.mail.example proto=rdp service=http status=deny src=10.5.11.205 dst=10.65.144.51 src_port=4901 dst_port=2283 server_app=lumqu pid=617 app_name=autf traff_direct=outbound block_count=5050 logon_user=uptat@unt3559.www.home msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "venia2079.mail.example", - "input.type": "log", - "log.offset": 19984, - "network.direction": "outbound", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 617, - "related.hosts": [ - "unt3559.www.home", - "venia2079.mail.example" - ], - "related.ip": [ - "10.5.11.205", - "10.65.144.51" - ], - "related.user": [ - "uptat" - ], - "rsa.counters.dclass_c1": 5050, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "venia2079.mail.example" - ], - "rsa.network.domain": "unt3559.www.home", - "rsa.network.network_service": "http", - "server.domain": "unt3559.www.home", - "server.registered_domain": "www.home", - "server.subdomain": "unt3559", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.5.11.205", - "source.port": 4901, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "uptat" - }, - { - "destination.ip": "10.76.122.196", - "destination.port": 5325, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 21 23:20:14 snostrum3450.www5.localhost proto=udp service=smtp status=deny src=10.195.223.82 dst=10.76.122.196 src_port=3128 dst_port=5325 server_app=atu pid=487 app_name=iame traff_direct=external block_count=593 logon_user=umiurer@rere5274.mail.domain msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "snostrum3450.www5.localhost", - "input.type": "log", - "log.offset": 20247, - "network.direction": "external", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 487, - "related.hosts": [ - "rere5274.mail.domain", - "snostrum3450.www5.localhost" - ], - "related.ip": [ - "10.195.223.82", - "10.76.122.196" - ], - "related.user": [ - "umiurer" - ], - "rsa.counters.dclass_c1": 593, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "snostrum3450.www5.localhost" - ], - "rsa.network.domain": "rere5274.mail.domain", - "rsa.network.network_service": "smtp", - "server.domain": "rere5274.mail.domain", - "server.registered_domain": "mail.domain", - "server.subdomain": "rere5274", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.195.223.82", - "source.port": 3128, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "umiurer" - }, - { - "destination.ip": "10.225.255.211", - "destination.port": 3369, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "January 5 06:22:49 gelitsed3249.corp proto=icmp service=ms-wbt-server status=deny src=10.138.210.116 dst=10.225.255.211 src_port=5595 dst_port=3369 server_app=rum pid=2442 app_name=eursinto traff_direct=external block_count=956 logon_user=fugiatn@uaeabi3728.www5.invalid msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "gelitsed3249.corp", - "input.type": "log", - "log.offset": 20522, - "network.direction": "external", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2442, - "related.hosts": [ - "gelitsed3249.corp", - "uaeabi3728.www5.invalid" - ], - "related.ip": [ - "10.138.210.116", - "10.225.255.211" - ], - "related.user": [ - "fugiatn" - ], - "rsa.counters.dclass_c1": 956, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "gelitsed3249.corp" - ], - "rsa.network.domain": "uaeabi3728.www5.invalid", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "uaeabi3728.www5.invalid", - "server.registered_domain": "www5.invalid", - "server.subdomain": "uaeabi3728", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.138.210.116", - "source.port": 5595, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "fugiatn" - }, - { - "destination.ip": "10.219.1.151", - "destination.port": 4323, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "January 19 13:25:23 dolor7082.internal.localhost proto=icmp service=smtp status=deny src=10.250.81.189 dst=10.219.1.151 src_port=5404 dst_port=4323 server_app=redo pid=6311 app_name=ditautf traff_direct=external block_count=3262 logon_user=ori@uamqu2804.test msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "dolor7082.internal.localhost", - "input.type": "log", - "log.offset": 20805, - "network.direction": "external", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6311, - "related.hosts": [ - "dolor7082.internal.localhost", - "uamqu2804.test" - ], - "related.ip": [ - "10.219.1.151", - "10.250.81.189" - ], - "related.user": [ - "ori" - ], - "rsa.counters.dclass_c1": 3262, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "dolor7082.internal.localhost" - ], - "rsa.network.domain": "uamqu2804.test", - "rsa.network.network_service": "smtp", - "server.domain": "uamqu2804.test", - "server.registered_domain": "uamqu2804.test", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.250.81.189", - "source.port": 5404, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ori" - }, - { - "destination.ip": "10.76.125.70", - "destination.port": 756, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 2 20:27:57 totam6886.api.localhost proto=ggp service=https status=deny src=10.54.23.133 dst=10.76.125.70 src_port=3258 dst_port=756 server_app=oluptat pid=7128 app_name=eseruntm traff_direct=internal block_count=1916 logon_user=oloreeu@olor5201.host msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "totam6886.api.localhost", - "input.type": "log", - "log.offset": 21076, - "network.direction": "internal", - "network.protocol": "ggp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 7128, - "related.hosts": [ - "olor5201.host", - "totam6886.api.localhost" - ], - "related.ip": [ - "10.54.23.133", - "10.76.125.70" - ], - "related.user": [ - "oloreeu" - ], - "rsa.counters.dclass_c1": 1916, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "totam6886.api.localhost" - ], - "rsa.network.domain": "olor5201.host", - "rsa.network.network_service": "https", - "server.domain": "olor5201.host", - "server.registered_domain": "olor5201.host", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.54.23.133", - "source.port": 3258, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "oloreeu" - }, - { - "destination.ip": "10.189.42.62", - "destination.port": 4262, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "February 17 03:30:32 laborum5749.www.example proto=igmp service=http status=deny src=10.36.110.69 dst=10.189.42.62 src_port=4187 dst_port=4262 server_app=duntut pid=2780 app_name=ullamc traff_direct=unknown block_count=170 logon_user=eque@eufug3348.www.lan msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "laborum5749.www.example", - "input.type": "log", - "log.offset": 21347, - "network.direction": "unknown", - "network.protocol": "igmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2780, - "related.hosts": [ - "eufug3348.www.lan", - "laborum5749.www.example" - ], - "related.ip": [ - "10.189.42.62", - "10.36.110.69" - ], - "related.user": [ - "eque" - ], - "rsa.counters.dclass_c1": 170, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "laborum5749.www.example" - ], - "rsa.network.domain": "eufug3348.www.lan", - "rsa.network.network_service": "http", - "server.domain": "eufug3348.www.lan", - "server.registered_domain": "www.lan", - "server.subdomain": "eufug3348", - "server.top_level_domain": "lan", - "service.type": "fortinet", - "source.ip": "10.36.110.69", - "source.port": 4187, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "eque" - }, - { - "destination.ip": "10.183.202.82", - "destination.port": 2208, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 3 10:33:06 lup3313.api.home proto=tcp service=https status=deny src=10.47.179.68 dst=10.183.202.82 src_port=5107 dst_port=2208 server_app=usmod pid=3284 app_name=amni traff_direct=unknown block_count=2645 logon_user=umfugi@stquidol239.www5.invalid msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "lup3313.api.home", - "input.type": "log", - "log.offset": 21616, - "network.direction": "unknown", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3284, - "related.hosts": [ - "lup3313.api.home", - "stquidol239.www5.invalid" - ], - "related.ip": [ - "10.183.202.82", - "10.47.179.68" - ], - "related.user": [ - "umfugi" - ], - "rsa.counters.dclass_c1": 2645, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "lup3313.api.home" - ], - "rsa.network.domain": "stquidol239.www5.invalid", - "rsa.network.network_service": "https", - "server.domain": "stquidol239.www5.invalid", - "server.registered_domain": "www5.invalid", - "server.subdomain": "stquidol239", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.47.179.68", - "source.port": 5107, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "umfugi" - }, - { - "destination.ip": "10.221.206.74", - "destination.port": 1480, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "March 17 17:35:40 edq5397.www.test proto=ipv6-icmp service=pop3 status=deny src=10.73.28.165 dst=10.221.206.74 src_port=3668 dst_port=1480 server_app=ihilmole pid=2314 app_name=litanim traff_direct=inbound block_count=5572 logon_user=quas@gia6531.mail.invalid msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "edq5397.www.test", - "input.type": "log", - "log.offset": 21882, - "network.direction": "inbound", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2314, - "related.hosts": [ - "edq5397.www.test", - "gia6531.mail.invalid" - ], - "related.ip": [ - "10.221.206.74", - "10.73.28.165" - ], - "related.user": [ - "quas" - ], - "rsa.counters.dclass_c1": 5572, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "edq5397.www.test" - ], - "rsa.network.domain": "gia6531.mail.invalid", - "rsa.network.network_service": "pop3", - "server.domain": "gia6531.mail.invalid", - "server.registered_domain": "mail.invalid", - "server.subdomain": "gia6531", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.73.28.165", - "source.port": 3668, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "quas" - }, - { - "destination.ip": "10.14.204.36", - "destination.port": 4887, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 1 00:38:14 udan6536.www5.test proto=ipv6 service=ms-wbt-server status=deny src=10.85.104.146 dst=10.14.204.36 src_port=3442 dst_port=4887 server_app=qua pid=5284 app_name=ents traff_direct=inbound block_count=973 logon_user=emp@lamcola4879.www5.localdomain msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "udan6536.www5.test", - "input.type": "log", - "log.offset": 22154, - "network.direction": "inbound", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5284, - "related.hosts": [ - "lamcola4879.www5.localdomain", - "udan6536.www5.test" - ], - "related.ip": [ - "10.14.204.36", - "10.85.104.146" - ], - "related.user": [ - "emp" - ], - "rsa.counters.dclass_c1": 973, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "udan6536.www5.test" - ], - "rsa.network.domain": "lamcola4879.www5.localdomain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "lamcola4879.www5.localdomain", - "server.registered_domain": "www5.localdomain", - "server.subdomain": "lamcola4879", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.85.104.146", - "source.port": 3442, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "emp" - }, - { - "destination.ip": "10.30.246.132", - "destination.port": 388, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 15 07:40:49 rumet6923.www5.lan proto=rdp service=https status=deny src=10.208.18.210 dst=10.30.246.132 src_port=3601 dst_port=388 server_app=texplica pid=3990 app_name=ore traff_direct=outbound block_count=5624 logon_user=veniam@edquian330.mail.local msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "rumet6923.www5.lan", - "input.type": "log", - "log.offset": 22429, - "network.direction": "outbound", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3990, - "related.hosts": [ - "edquian330.mail.local", - "rumet6923.www5.lan" - ], - "related.ip": [ - "10.208.18.210", - "10.30.246.132" - ], - "related.user": [ - "veniam" - ], - "rsa.counters.dclass_c1": 5624, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "rumet6923.www5.lan" - ], - "rsa.network.domain": "edquian330.mail.local", - "rsa.network.network_service": "https", - "server.domain": "edquian330.mail.local", - "server.registered_domain": "mail.local", - "server.subdomain": "edquian330", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.208.18.210", - "source.port": 3601, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "veniam" - }, - { - "destination.ip": "10.19.119.17", - "destination.port": 3822, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "April 29 14:43:23 itse522.internal.localdomain proto=udp service=pop3 status=deny src=10.106.249.91 dst=10.19.119.17 src_port=1732 dst_port=3822 server_app=veleumi pid=4337 app_name=tvol traff_direct=unknown block_count=2783 logon_user=lit@santi837.api.domain msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "itse522.internal.localdomain", - "input.type": "log", - "log.offset": 22698, - "network.direction": "unknown", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4337, - "related.hosts": [ - "itse522.internal.localdomain", - "santi837.api.domain" - ], - "related.ip": [ - "10.106.249.91", - "10.19.119.17" - ], - "related.user": [ - "lit" - ], - "rsa.counters.dclass_c1": 2783, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "itse522.internal.localdomain" - ], - "rsa.network.domain": "santi837.api.domain", - "rsa.network.network_service": "pop3", - "server.domain": "santi837.api.domain", - "server.registered_domain": "api.domain", - "server.subdomain": "santi837", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.106.249.91", - "source.port": 1732, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "lit" - }, - { - "destination.ip": "10.181.41.154", - "destination.port": 866, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 13 21:45:57 amc3059.local proto=igmp service=http status=deny src=10.29.109.126 dst=10.181.41.154 src_port=6261 dst_port=866 server_app=itseddo pid=5275 app_name=seos traff_direct=unknown block_count=6721 logon_user=labo@lpaquiof804.internal.invalid msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "amc3059.local", - "input.type": "log", - "log.offset": 22970, - "network.direction": "unknown", - "network.protocol": "igmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5275, - "related.hosts": [ - "amc3059.local", - "lpaquiof804.internal.invalid" - ], - "related.ip": [ - "10.181.41.154", - "10.29.109.126" - ], - "related.user": [ - "labo" - ], - "rsa.counters.dclass_c1": 6721, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "amc3059.local" - ], - "rsa.network.domain": "lpaquiof804.internal.invalid", - "rsa.network.network_service": "http", - "server.domain": "lpaquiof804.internal.invalid", - "server.registered_domain": "internal.invalid", - "server.subdomain": "lpaquiof804", - "server.top_level_domain": "invalid", - "service.type": "fortinet", - "source.ip": "10.29.109.126", - "source.port": 6261, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "labo" - }, - { - "destination.ip": "10.164.120.197", - "destination.port": 2304, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "May 28 04:48:31 enbyCi3813.api.domain proto=ipv6-icmp service=https status=deny src=10.164.207.42 dst=10.164.120.197 src_port=1901 dst_port=2304 server_app=itametco pid=2286 app_name=remip traff_direct=external block_count=3116 logon_user=pta@nonn4478.host msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "enbyCi3813.api.domain", - "input.type": "log", - "log.offset": 23236, - "network.direction": "external", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2286, - "related.hosts": [ - "enbyCi3813.api.domain", - "nonn4478.host" - ], - "related.ip": [ - "10.164.120.197", - "10.164.207.42" - ], - "related.user": [ - "pta" - ], - "rsa.counters.dclass_c1": 3116, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "enbyCi3813.api.domain" - ], - "rsa.network.domain": "nonn4478.host", - "rsa.network.network_service": "https", - "server.domain": "nonn4478.host", - "server.registered_domain": "nonn4478.host", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.164.207.42", - "source.port": 1901, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "pta" - }, - { - "destination.ip": "10.154.191.225", - "destination.port": 7856, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 11 11:51:06 liquipex1155.mail.corp proto=ipv6-icmp service=smtp status=deny src=10.183.189.133 dst=10.154.191.225 src_port=5347 dst_port=7856 server_app=Loremip pid=2990 app_name=tur traff_direct=unknown block_count=6105 logon_user=ita@amquaer3985.www5.example msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "liquipex1155.mail.corp", - "input.type": "log", - "log.offset": 23505, - "network.direction": "unknown", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2990, - "related.hosts": [ - "amquaer3985.www5.example", - "liquipex1155.mail.corp" - ], - "related.ip": [ - "10.154.191.225", - "10.183.189.133" - ], - "related.user": [ - "ita" - ], - "rsa.counters.dclass_c1": 6105, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "liquipex1155.mail.corp" - ], - "rsa.network.domain": "amquaer3985.www5.example", - "rsa.network.network_service": "smtp", - "server.domain": "amquaer3985.www5.example", - "server.registered_domain": "www5.example", - "server.subdomain": "amquaer3985", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.183.189.133", - "source.port": 5347, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ita" - }, - { - "destination.ip": "10.103.189.199", - "destination.port": 767, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "June 25 18:53:40 isn3991.local proto=igmp service=smtp status=deny src=10.29.120.226 dst=10.103.189.199 src_port=1296 dst_port=767 server_app=exerci pid=226 app_name=eserun traff_direct=outbound block_count=5452 logon_user=emu@orem6317.local msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "isn3991.local", - "input.type": "log", - "log.offset": 23783, - "network.direction": "outbound", - "network.protocol": "igmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 226, - "related.hosts": [ - "isn3991.local", - "orem6317.local" - ], - "related.ip": [ - "10.103.189.199", - "10.29.120.226" - ], - "related.user": [ - "emu" - ], - "rsa.counters.dclass_c1": 5452, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "isn3991.local" - ], - "rsa.network.domain": "orem6317.local", - "rsa.network.network_service": "smtp", - "server.domain": "orem6317.local", - "server.registered_domain": "orem6317.local", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.29.120.226", - "source.port": 1296, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "emu" - }, - { - "destination.ip": "10.210.153.7", - "destination.port": 7030, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 10 01:56:14 iumtotam1010.www5.corp proto=icmp service=https status=deny src=10.133.254.23 dst=10.210.153.7 src_port=6251 dst_port=7030 server_app=nofdeFi pid=4691 app_name=sautei traff_direct=external block_count=2088 logon_user=voluptas@velill3230.www.corp msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "iumtotam1010.www5.corp", - "input.type": "log", - "log.offset": 24037, - "network.direction": "external", - "network.protocol": "icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4691, - "related.hosts": [ - "iumtotam1010.www5.corp", - "velill3230.www.corp" - ], - "related.ip": [ - "10.133.254.23", - "10.210.153.7" - ], - "related.user": [ - "voluptas" - ], - "rsa.counters.dclass_c1": 2088, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "iumtotam1010.www5.corp" - ], - "rsa.network.domain": "velill3230.www.corp", - "rsa.network.network_service": "https", - "server.domain": "velill3230.www.corp", - "server.registered_domain": "www.corp", - "server.subdomain": "velill3230", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.133.254.23", - "source.port": 6251, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "voluptas" - }, - { - "destination.ip": "10.91.2.135", - "destination.port": 2141, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "July 24 08:58:48 onsecte91.www5.localdomain proto=tcp service=pop3 status=deny src=10.126.245.73 dst=10.91.2.135 src_port=180 dst_port=2141 server_app=ender pid=5647 app_name=rumSecti traff_direct=outbound block_count=4680 logon_user=olore@orumS757.www5.corp msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "onsecte91.www5.localdomain", - "input.type": "log", - "log.offset": 24312, - "network.direction": "outbound", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5647, - "related.hosts": [ - "onsecte91.www5.localdomain", - "orumS757.www5.corp" - ], - "related.ip": [ - "10.126.245.73", - "10.91.2.135" - ], - "related.user": [ - "olore" - ], - "rsa.counters.dclass_c1": 4680, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "onsecte91.www5.localdomain" - ], - "rsa.network.domain": "orumS757.www5.corp", - "rsa.network.network_service": "pop3", - "server.domain": "orumS757.www5.corp", - "server.registered_domain": "www5.corp", - "server.subdomain": "orumS757", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.126.245.73", - "source.port": 180, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "olore" - }, - { - "destination.ip": "10.137.85.123", - "destination.port": 7073, - "event.action": "deny", - "event.code": "https", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 7 16:01:23 abori7686.internal.host proto=rdp service=https status=deny src=10.183.243.246 dst=10.137.85.123 src_port=218 dst_port=7073 server_app=ntsunti pid=2313 app_name=magnam traff_direct=internal block_count=6402 logon_user=cid@emi4534.www.localdomain msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "abori7686.internal.host", - "input.type": "log", - "log.offset": 24583, - "network.direction": "internal", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 2313, - "related.hosts": [ - "abori7686.internal.host", - "emi4534.www.localdomain" - ], - "related.ip": [ - "10.137.85.123", - "10.183.243.246" - ], - "related.user": [ - "cid" - ], - "rsa.counters.dclass_c1": 6402, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "https", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "abori7686.internal.host" - ], - "rsa.network.domain": "emi4534.www.localdomain", - "rsa.network.network_service": "https", - "server.domain": "emi4534.www.localdomain", - "server.registered_domain": "www.localdomain", - "server.subdomain": "emi4534", - "server.top_level_domain": "localdomain", - "service.type": "fortinet", - "source.ip": "10.183.243.246", - "source.port": 218, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "cid" - }, - { - "destination.ip": "10.10.86.55", - "destination.port": 5132, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "August 21 23:03:57 reprehen3513.test proto=ipv6 service=smtp status=deny src=10.61.225.196 dst=10.10.86.55 src_port=4720 dst_port=5132 server_app=isiu pid=1585 app_name=mmodi traff_direct=external block_count=3034 logon_user=eniamqu@inimav1576.mail.example msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "reprehen3513.test", - "input.type": "log", - "log.offset": 24859, - "network.direction": "external", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1585, - "related.hosts": [ - "inimav1576.mail.example", - "reprehen3513.test" - ], - "related.ip": [ - "10.10.86.55", - "10.61.225.196" - ], - "related.user": [ - "eniamqu" - ], - "rsa.counters.dclass_c1": 3034, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "reprehen3513.test" - ], - "rsa.network.domain": "inimav1576.mail.example", - "rsa.network.network_service": "smtp", - "server.domain": "inimav1576.mail.example", - "server.registered_domain": "mail.example", - "server.subdomain": "inimav1576", - "server.top_level_domain": "example", - "service.type": "fortinet", - "source.ip": "10.61.225.196", - "source.port": 4720, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "eniamqu" - }, - { - "destination.ip": "10.79.73.195", - "destination.port": 457, - "event.action": "deny", - "event.code": "http", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 5 06:06:31 orroquis284.api.domain proto=udp service=http status=deny src=10.125.143.153 dst=10.79.73.195 src_port=2657 dst_port=457 server_app=umf pid=3141 app_name=moll traff_direct=outbound block_count=7645 logon_user=emip@aturQu7083.mail.host msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "orroquis284.api.domain", - "input.type": "log", - "log.offset": 25128, - "network.direction": "outbound", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 3141, - "related.hosts": [ - "aturQu7083.mail.host", - "orroquis284.api.domain" - ], - "related.ip": [ - "10.125.143.153", - "10.79.73.195" - ], - "related.user": [ - "emip" - ], - "rsa.counters.dclass_c1": 7645, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "http", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "orroquis284.api.domain" - ], - "rsa.network.domain": "aturQu7083.mail.host", - "rsa.network.network_service": "http", - "server.domain": "aturQu7083.mail.host", - "server.registered_domain": "mail.host", - "server.subdomain": "aturQu7083", - "server.top_level_domain": "host", - "service.type": "fortinet", - "source.ip": "10.125.143.153", - "source.port": 2657, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "emip" - }, - { - "destination.ip": "10.64.139.17", - "destination.port": 2438, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "September 19 13:09:05 tionula2060.www5.localhost proto=ipv6 service=ms-wbt-server status=deny src=10.240.216.85 dst=10.64.139.17 src_port=2046 dst_port=2438 server_app=ice pid=6331 app_name=aal traff_direct=external block_count=4982 logon_user=nimadmin@lumqui7769.mail.local msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tionula2060.www5.localhost", - "input.type": "log", - "log.offset": 25396, - "network.direction": "external", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6331, - "related.hosts": [ - "lumqui7769.mail.local", - "tionula2060.www5.localhost" - ], - "related.ip": [ - "10.240.216.85", - "10.64.139.17" - ], - "related.user": [ - "nimadmin" - ], - "rsa.counters.dclass_c1": 4982, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "tionula2060.www5.localhost" - ], - "rsa.network.domain": "lumqui7769.mail.local", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "lumqui7769.mail.local", - "server.registered_domain": "mail.local", - "server.subdomain": "lumqui7769", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.240.216.85", - "source.port": 2046, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "nimadmin" - }, - { - "destination.ip": "10.222.245.80", - "destination.port": 4017, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 3 20:11:40 rumSecti111.www5.domain proto=ipv6 service=ms-wbt-server status=deny src=10.87.90.49 dst=10.222.245.80 src_port=1486 dst_port=4017 server_app=itaedict pid=4474 app_name=byCic traff_direct=inbound block_count=3380 logon_user=ptatemse@siarc6339.internal.corp msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "rumSecti111.www5.domain", - "input.type": "log", - "log.offset": 25683, - "network.direction": "inbound", - "network.protocol": "ipv6", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4474, - "related.hosts": [ - "rumSecti111.www5.domain", - "siarc6339.internal.corp" - ], - "related.ip": [ - "10.222.245.80", - "10.87.90.49" - ], - "related.user": [ - "ptatemse" - ], - "rsa.counters.dclass_c1": 3380, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "rumSecti111.www5.domain" - ], - "rsa.network.domain": "siarc6339.internal.corp", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "siarc6339.internal.corp", - "server.registered_domain": "internal.corp", - "server.subdomain": "siarc6339", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.87.90.49", - "source.port": 1486, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "ptatemse" - }, - { - "destination.ip": "10.87.144.208", - "destination.port": 2440, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "October 18 03:14:14 olores7881.local proto=udp service=pop3 status=deny src=10.143.53.214 dst=10.87.144.208 src_port=3310 dst_port=2440 server_app=ipsumq pid=4855 app_name=psaquaea traff_direct=unknown block_count=5772 logon_user=psumq@ptatev6552.www.test msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "olores7881.local", - "input.type": "log", - "log.offset": 25971, - "network.direction": "unknown", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4855, - "related.hosts": [ - "olores7881.local", - "ptatev6552.www.test" - ], - "related.ip": [ - "10.143.53.214", - "10.87.144.208" - ], - "related.user": [ - "psumq" - ], - "rsa.counters.dclass_c1": 5772, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "olores7881.local" - ], - "rsa.network.domain": "ptatev6552.www.test", - "rsa.network.network_service": "pop3", - "server.domain": "ptatev6552.www.test", - "server.registered_domain": "www.test", - "server.subdomain": "ptatev6552", - "server.top_level_domain": "test", - "service.type": "fortinet", - "source.ip": "10.143.53.214", - "source.port": 3310, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "psumq" - }, - { - "destination.ip": "10.105.97.134", - "destination.port": 1935, - "event.action": "deny", - "event.code": "pop3", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 1 10:16:48 tDuis3281.www5.localdomain proto=ipv6-icmp service=pop3 status=deny src=10.204.178.19 dst=10.105.97.134 src_port=616 dst_port=1935 server_app=oremque pid=1729 app_name=inimve traff_direct=unknown block_count=6564 logon_user=mexercit@byC5766.internal.home msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tDuis3281.www5.localdomain", - "input.type": "log", - "log.offset": 26239, - "network.direction": "unknown", - "network.protocol": "ipv6-icmp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 1729, - "related.hosts": [ - "byC5766.internal.home", - "tDuis3281.www5.localdomain" - ], - "related.ip": [ - "10.105.97.134", - "10.204.178.19" - ], - "related.user": [ - "mexercit" - ], - "rsa.counters.dclass_c1": 6564, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "pop3", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "tDuis3281.www5.localdomain" - ], - "rsa.network.domain": "byC5766.internal.home", - "rsa.network.network_service": "pop3", - "server.domain": "byC5766.internal.home", - "server.registered_domain": "internal.home", - "server.subdomain": "byC5766", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.204.178.19", - "source.port": 616, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "mexercit" - }, - { - "destination.ip": "10.194.67.223", - "destination.port": 5767, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 15 17:19:22 uptasnul2751.www5.corp proto=rdp service=smtp status=deny src=10.161.64.168 dst=10.194.67.223 src_port=7154 dst_port=5767 server_app=tatemse pid=4493 app_name=amqui traff_direct=inbound block_count=3673 logon_user=tion@hender6628.local msg=unknown", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "uptasnul2751.www5.corp", - "input.type": "log", - "log.offset": 26526, - "network.direction": "inbound", - "network.protocol": "rdp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 4493, - "related.hosts": [ - "hender6628.local", - "uptasnul2751.www5.corp" - ], - "related.ip": [ - "10.161.64.168", - "10.194.67.223" - ], - "related.user": [ - "tion" - ], - "rsa.counters.dclass_c1": 3673, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "unknown", - "rsa.network.alias_host": [ - "uptasnul2751.www5.corp" - ], - "rsa.network.domain": "hender6628.local", - "rsa.network.network_service": "smtp", - "server.domain": "hender6628.local", - "server.registered_domain": "hender6628.local", - "server.top_level_domain": "local", - "service.type": "fortinet", - "source.ip": "10.161.64.168", - "source.port": 7154, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "tion" - }, - { - "destination.ip": "10.120.148.241", - "destination.port": 1655, - "event.action": "deny", - "event.code": "smtp", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "November 30 00:21:57 upt6017.api.localdomain proto=tcp service=smtp status=deny src=10.100.154.220 dst=10.120.148.241 src_port=5535 dst_port=1655 server_app=eeufug pid=6094 app_name=modt traff_direct=external block_count=5150 logon_user=rsitam@xercit7649.www5.home msg=failure", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "upt6017.api.localdomain", - "input.type": "log", - "log.offset": 26795, - "network.direction": "external", - "network.protocol": "tcp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 6094, - "related.hosts": [ - "upt6017.api.localdomain", - "xercit7649.www5.home" - ], - "related.ip": [ - "10.100.154.220", - "10.120.148.241" - ], - "related.user": [ - "rsitam" - ], - "rsa.counters.dclass_c1": 5150, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "smtp", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "failure", - "rsa.network.alias_host": [ - "upt6017.api.localdomain" - ], - "rsa.network.domain": "xercit7649.www5.home", - "rsa.network.network_service": "smtp", - "server.domain": "xercit7649.www5.home", - "server.registered_domain": "www5.home", - "server.subdomain": "xercit7649", - "server.top_level_domain": "home", - "service.type": "fortinet", - "source.ip": "10.100.154.220", - "source.port": 5535, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "rsitam" - }, - { - "destination.ip": "10.180.90.112", - "destination.port": 1936, - "event.action": "deny", - "event.code": "ms-wbt-server", - "event.dataset": "fortinet.clientendpoint", - "event.module": "fortinet", - "event.original": "December 14 07:24:31 tpers2217.internal.lan proto=udp service=ms-wbt-server status=deny src=10.116.153.19 dst=10.180.90.112 src_port=6610 dst_port=1936 server_app=olu pid=5012 app_name=dexercit traff_direct=outbound block_count=2216 logon_user=itessequ@porissu1470.domain msg=success", - "event.outcome": "failure", - "fileset.name": "clientendpoint", - "host.name": "tpers2217.internal.lan", - "input.type": "log", - "log.offset": 27072, - "network.direction": "outbound", - "network.protocol": "udp", - "observer.product": "FortiClient", - "observer.type": "Anti-Virus", - "observer.vendor": "Fortinet", - "process.pid": 5012, - "related.hosts": [ - "porissu1470.domain", - "tpers2217.internal.lan" - ], - "related.ip": [ - "10.116.153.19", - "10.180.90.112" - ], - "related.user": [ - "itessequ" - ], - "rsa.counters.dclass_c1": 2216, - "rsa.counters.dclass_c1_str": "block_count", - "rsa.internal.messageid": "ms-wbt-server", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.result": "success", - "rsa.network.alias_host": [ - "tpers2217.internal.lan" - ], - "rsa.network.domain": "porissu1470.domain", - "rsa.network.network_service": "ms-wbt-server", - "server.domain": "porissu1470.domain", - "server.registered_domain": "porissu1470.domain", - "server.top_level_domain": "domain", - "service.type": "fortinet", - "source.ip": "10.116.153.19", - "source.port": 6610, - "tags": [ - "fortinet.clientendpoint", - "forwarded" - ], - "user.name": "itessequ" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/fortinet/fields.go b/x-pack/filebeat/module/fortinet/fields.go index 39de2f819f0..1bcc00adca2 100644 --- a/x-pack/filebeat/module/fortinet/fields.go +++ b/x-pack/filebeat/module/fortinet/fields.go @@ -19,5 +19,5 @@ func init() { // AssetFortinet returns asset data. // This is the base64 encoded zlib format compressed contents of module/fortinet. func AssetFortinet() string { - return "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" + return "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" } diff --git a/x-pack/filebeat/module/fortinet/fortimail/_meta/fields.yml b/x-pack/filebeat/module/fortinet/fortimail/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimail/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/fortinet/fortimail/config/input.yml b/x-pack/filebeat/module/fortinet/fortimail/config/input.yml deleted file mode 100644 index f56d1508955..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimail/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Fortinet" - product: "FortiMail" - type: "Firewall" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/fortinet/fortimail/config/liblogparser.js - - ${path.home}/module/fortinet/fortimail/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/fortinet/fortimail/config/liblogparser.js b/x-pack/filebeat/module/fortinet/fortimail/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimail/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} ui=%{p0}"); - -var dup3 = match("MESSAGE#0:event_admin/1_0", "nwparser.p0", "%{network_service}(%{saddr}) action=%{p0}"); - -var dup4 = match("MESSAGE#0:event_admin/1_1", "nwparser.p0", "%{network_service->} action=%{p0}"); - -var dup5 = match("MESSAGE#0:event_admin/3_0", "nwparser.p0", "\"%{event_description}\""); - -var dup6 = match_copy("MESSAGE#0:event_admin/3_1", "nwparser.p0", "event_description"); - -var dup7 = setc("eventcategory","1401000000"); - -var dup8 = setf("msg","$MSG"); - -var dup9 = date_time({ - dest: "event_time", - args: ["hdate","htime"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup10 = setf("hardware_id","hfld1"); - -var dup11 = setf("id","hfld2"); - -var dup12 = setf("id1","hfld3"); - -var dup13 = setf("event_type","msgIdPart1"); - -var dup14 = setf("category","msgIdPart2"); - -var dup15 = setf("severity","hseverity"); - -var dup16 = match("MESSAGE#1:event_pop3/2", "nwparser.p0", "%{action->} status=%{event_state->} msg=%{p0}"); - -var dup17 = setc("eventcategory","1602000000"); - -var dup18 = match("MESSAGE#5:event_smtp:01/0", "nwparser.payload", "user=%{username}ui=%{p0}"); - -var dup19 = match("MESSAGE#5:event_smtp:01/1_0", "nwparser.p0", "%{network_service}(%{hostip}) action=%{p0}"); - -var dup20 = match("MESSAGE#5:event_smtp:01/1_1", "nwparser.p0", "%{network_service}action=%{p0}"); - -var dup21 = match("MESSAGE#5:event_smtp:01/2", "nwparser.p0", "%{action}status=%{event_state}session_id=%{p0}"); - -var dup22 = match("MESSAGE#5:event_smtp:01/3_0", "nwparser.p0", "\"%{sessionid}\"msg=\"STARTTLS=%{p0}"); - -var dup23 = match("MESSAGE#5:event_smtp:01/3_1", "nwparser.p0", "%{sessionid}msg=\"STARTTLS=%{p0}"); - -var dup24 = match("MESSAGE#16:event_smtp/3_0", "nwparser.p0", "\"%{sessionid}\" msg=%{p0}"); - -var dup25 = match("MESSAGE#16:event_smtp/3_1", "nwparser.p0", "%{sessionid->} msg=%{p0}"); - -var dup26 = match("MESSAGE#20:virus/0", "nwparser.payload", "from=%{p0}"); - -var dup27 = match("MESSAGE#20:virus/1_0", "nwparser.p0", "\"%{from}\" to=%{p0}"); - -var dup28 = match("MESSAGE#20:virus/1_1", "nwparser.p0", "%{from->} to=%{p0}"); - -var dup29 = match("MESSAGE#20:virus/2_0", "nwparser.p0", "\"%{to}\" src=%{p0}"); - -var dup30 = match("MESSAGE#20:virus/2_1", "nwparser.p0", "%{to->} src=%{p0}"); - -var dup31 = match("MESSAGE#20:virus/3_0", "nwparser.p0", "\"%{saddr}\" session_id=%{p0}"); - -var dup32 = match("MESSAGE#20:virus/3_1", "nwparser.p0", "%{saddr->} session_id=%{p0}"); - -var dup33 = setc("eventcategory","1003010000"); - -var dup34 = setf("event_type","messageid"); - -var dup35 = match("MESSAGE#23:statistics/0", "nwparser.payload", "session_id=%{p0}"); - -var dup36 = match("MESSAGE#23:statistics/1_0", "nwparser.p0", "\"%{sessionid}\" from=%{p0}"); - -var dup37 = match("MESSAGE#23:statistics/1_1", "nwparser.p0", "%{sessionid->} from=%{p0}"); - -var dup38 = match("MESSAGE#23:statistics/2_0", "nwparser.p0", "\"%{from}\" mailer=%{p0}"); - -var dup39 = match("MESSAGE#23:statistics/2_1", "nwparser.p0", "%{from->} mailer=%{p0}"); - -var dup40 = match("MESSAGE#23:statistics/3_0", "nwparser.p0", "\"%{agent}\" client_name=\"%{p0}"); - -var dup41 = match("MESSAGE#23:statistics/3_1", "nwparser.p0", "%{agent->} client_name=\"%{p0}"); - -var dup42 = match("MESSAGE#23:statistics/4_0", "nwparser.p0", "%{fqdn->} [%{saddr}] (%{info})\"%{p0}"); - -var dup43 = match("MESSAGE#23:statistics/4_1", "nwparser.p0", "%{fqdn->} [%{saddr}]\"%{p0}"); - -var dup44 = match("MESSAGE#23:statistics/4_2", "nwparser.p0", "%{saddr}\"%{p0}"); - -var dup45 = match("MESSAGE#23:statistics/6_0", "nwparser.p0", "\"%{context}\" to=%{p0}"); - -var dup46 = match("MESSAGE#23:statistics/6_1", "nwparser.p0", "%{context->} to=%{p0}"); - -var dup47 = match("MESSAGE#23:statistics/7_0", "nwparser.p0", "\"%{to}\" direction=%{p0}"); - -var dup48 = match("MESSAGE#23:statistics/7_1", "nwparser.p0", "%{to->} direction=%{p0}"); - -var dup49 = match("MESSAGE#23:statistics/8_0", "nwparser.p0", "\"%{direction}\" message_length=%{p0}"); - -var dup50 = match("MESSAGE#23:statistics/8_1", "nwparser.p0", "%{direction->} message_length=%{p0}"); - -var dup51 = match("MESSAGE#23:statistics/9", "nwparser.p0", "%{fld4->} virus=%{p0}"); - -var dup52 = match("MESSAGE#23:statistics/10_0", "nwparser.p0", "\"%{virusname}\" disposition=%{p0}"); - -var dup53 = match("MESSAGE#23:statistics/10_1", "nwparser.p0", "%{virusname->} disposition=%{p0}"); - -var dup54 = match("MESSAGE#23:statistics/11_0", "nwparser.p0", "\"%{disposition}\" classifier=%{p0}"); - -var dup55 = match("MESSAGE#23:statistics/11_1", "nwparser.p0", "%{disposition->} classifier=%{p0}"); - -var dup56 = match("MESSAGE#23:statistics/12_0", "nwparser.p0", "\"%{filter}\" subject=%{p0}"); - -var dup57 = match("MESSAGE#23:statistics/12_1", "nwparser.p0", "%{filter->} subject=%{p0}"); - -var dup58 = match("MESSAGE#23:statistics/13_0", "nwparser.p0", "\"%{subject}\""); - -var dup59 = match_copy("MESSAGE#23:statistics/13_1", "nwparser.p0", "subject"); - -var dup60 = setc("eventcategory","1207000000"); - -var dup61 = match("MESSAGE#24:statistics:01/5", "nwparser.p0", "%{}resolved=%{p0}"); - -var dup62 = setc("eventcategory","1207040000"); - -var dup63 = linear_select([ - dup3, - dup4, -]); - -var dup64 = linear_select([ - dup5, - dup6, -]); - -var dup65 = linear_select([ - dup19, - dup20, -]); - -var dup66 = linear_select([ - dup22, - dup23, -]); - -var dup67 = linear_select([ - dup3, - dup20, -]); - -var dup68 = linear_select([ - dup24, - dup25, -]); - -var dup69 = linear_select([ - dup27, - dup28, -]); - -var dup70 = linear_select([ - dup29, - dup30, -]); - -var dup71 = linear_select([ - dup36, - dup37, -]); - -var dup72 = linear_select([ - dup38, - dup39, -]); - -var dup73 = linear_select([ - dup40, - dup41, -]); - -var dup74 = linear_select([ - dup42, - dup43, - dup44, -]); - -var dup75 = linear_select([ - dup45, - dup46, -]); - -var dup76 = linear_select([ - dup47, - dup48, -]); - -var dup77 = linear_select([ - dup49, - dup50, -]); - -var dup78 = linear_select([ - dup52, - dup53, -]); - -var dup79 = linear_select([ - dup54, - dup55, -]); - -var dup80 = linear_select([ - dup56, - dup57, -]); - -var dup81 = linear_select([ - dup58, - dup59, -]); - -var dup82 = all_match({ - processors: [ - dup2, - dup63, - dup16, - dup64, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var hdr1 = match("HEADER#0:0001", "message", "date=%{hdate->} time=%{htime->} device_id=%{hfld1->} log_id=%{hfld2->} log_part=%{hfld3->} type=%{msgIdPart1->} subtype=%{msgIdPart2->} pri=%{hseverity->} %{payload}", processor_chain([ - setc("header_id","0001"), - dup1, -])); - -var hdr2 = match("HEADER#1:0002", "message", "date=%{hdate->} time=%{htime->} device_id=%{hfld1->} log_id=%{hfld2->} log_part=%{hfld3->} type=%{messageid->} pri=%{hseverity->} %{payload}", processor_chain([ - setc("header_id","0002"), -])); - -var hdr3 = match("HEADER#2:0003", "message", "date=%{hdate->} time=%{htime->} device_id=%{hfld1->} log_id=%{hfld2->} type=%{msgIdPart1->} subtype=%{msgIdPart2->} pri=%{hseverity->} %{payload}", processor_chain([ - setc("header_id","0003"), - dup1, -])); - -var hdr4 = match("HEADER#3:0004", "message", "date=%{hdate->} time=%{htime->} device_id=%{hfld1->} log_id=%{hfld2->} type=%{messageid->} pri=%{hseverity->} %{payload}", processor_chain([ - setc("header_id","0004"), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, -]); - -var part1 = match("MESSAGE#0:event_admin/2", "nwparser.p0", "%{action->} status=%{event_state->} reason=%{result->} msg=%{p0}"); - -var all1 = all_match({ - processors: [ - dup2, - dup63, - part1, - dup64, - ], - on_success: processor_chain([ - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg1 = msg("event_admin", all1); - -var msg2 = msg("event_pop3", dup82); - -var all2 = all_match({ - processors: [ - dup2, - dup63, - dup16, - dup64, - ], - on_success: processor_chain([ - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg3 = msg("event_webmail", all2); - -var msg4 = msg("event_system", dup82); - -var msg5 = msg("event_imap", dup82); - -var part2 = match("MESSAGE#5:event_smtp:01/4", "nwparser.p0", "%{fld1}, relay=%{p0}"); - -var part3 = match("MESSAGE#5:event_smtp:01/5_0", "nwparser.p0", "%{shost}[%{saddr}], version=%{p0}"); - -var part4 = match("MESSAGE#5:event_smtp:01/5_1", "nwparser.p0", "%{shost}, version=%{p0}"); - -var select2 = linear_select([ - part3, - part4, -]); - -var part5 = match("MESSAGE#5:event_smtp:01/6", "nwparser.p0", "%{version}, verify=%{fld2}, cipher=%{s_cipher}, bits=%{fld3}\""); - -var all3 = all_match({ - processors: [ - dup18, - dup65, - dup21, - dup66, - part2, - select2, - part5, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg6 = msg("event_smtp:01", all3); - -var part6 = match("MESSAGE#6:event_smtp:02/4", "nwparser.p0", "%{fld1}, cert-subject=%{cert_subject}, cert-issuer=%{fld2}, verifymsg=%{fld3}\""); - -var all4 = all_match({ - processors: [ - dup18, - dup65, - dup21, - dup66, - part6, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg7 = msg("event_smtp:02", all4); - -var part7 = match("MESSAGE#7:event_smtp:03/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"to=\u003c\u003c%{to}>, delay=%{fld1}, xdelay=%{fld2}, mailer=%{protocol}, pri=%{fld3}, relay=%{shost}[%{saddr}], dsn=%{fld4}, stat=%{fld5}\""); - -var all5 = all_match({ - processors: [ - dup18, - dup65, - part7, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg8 = msg("event_smtp:03", all5); - -var part8 = match("MESSAGE#8:event_smtp:04/0", "nwparser.payload", "user=%{username}ui=%{network_service}action=%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"from=\u003c\u003c%{from}>, size=%{bytes}, class=%{fld2}, nrcpts=%{p0}"); - -var part9 = match("MESSAGE#8:event_smtp:04/1_0", "nwparser.p0", "%{fld3}, msgid=\u003c\u003c%{fld4}>, proto=%{p0}"); - -var part10 = match("MESSAGE#8:event_smtp:04/1_1", "nwparser.p0", "%{fld3}, proto=%{p0}"); - -var select3 = linear_select([ - part9, - part10, -]); - -var part11 = match("MESSAGE#8:event_smtp:04/2", "nwparser.p0", "%{protocol}, daemon=%{process}, relay=%{p0}"); - -var part12 = match("MESSAGE#8:event_smtp:04/3_0", "nwparser.p0", "%{shost}[%{saddr}] (may be forged)\""); - -var part13 = match("MESSAGE#8:event_smtp:04/3_1", "nwparser.p0", "%{shost}[%{saddr}]\""); - -var part14 = match("MESSAGE#8:event_smtp:04/3_2", "nwparser.p0", "%{shost}\""); - -var select4 = linear_select([ - part12, - part13, - part14, -]); - -var all6 = all_match({ - processors: [ - part8, - select3, - part11, - select4, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg9 = msg("event_smtp:04", all6); - -var part15 = match("MESSAGE#9:event_smtp:05/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"Milter: to=\u003c\u003c%{to}>, reject=%{fld1}\""); - -var all7 = all_match({ - processors: [ - dup18, - dup67, - part15, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg10 = msg("event_smtp:05", all7); - -var part16 = match("MESSAGE#10:event_smtp:06/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"timeout waiting for input from%{p0}"); - -var part17 = match("MESSAGE#10:event_smtp:06/3_0", "nwparser.p0", "[%{saddr}]during server cmd%{p0}"); - -var part18 = match("MESSAGE#10:event_smtp:06/3_1", "nwparser.p0", "%{saddr}during server cmd%{p0}"); - -var select5 = linear_select([ - part17, - part18, -]); - -var part19 = match("MESSAGE#10:event_smtp:06/4", "nwparser.p0", "%{fld5}\""); - -var all8 = all_match({ - processors: [ - dup18, - dup65, - part16, - select5, - part19, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg11 = msg("event_smtp:06", all8); - -var part20 = match("MESSAGE#11:event_smtp:07/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"collect:%{fld1}timeout on connection from%{shost}, from=\u003c\u003c%{from}>\""); - -var all9 = all_match({ - processors: [ - dup18, - dup67, - part20, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg12 = msg("event_smtp:07", all9); - -var part21 = match("MESSAGE#12:event_smtp:08/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"DSN: to \u003c\u003c%{to}>; reason:%{result}; sessionid:%{fld5}\""); - -var all10 = all_match({ - processors: [ - dup18, - dup67, - part21, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg13 = msg("event_smtp:08", all10); - -var part22 = match("MESSAGE#13:event_smtp:09/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"lost input channel from%{shost}[%{saddr}] (may be forged) to SMTP_MTA after rcpt\""); - -var all11 = all_match({ - processors: [ - dup18, - dup65, - part22, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg14 = msg("event_smtp:09", all11); - -var part23 = match("MESSAGE#14:event_smtp:10/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" msg=\"%{shost}[%{saddr}]: possible SMTP attack: command=%{fld1}, count=%{dclass_counter1}\""); - -var all12 = all_match({ - processors: [ - dup18, - dup65, - part23, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - setc("dclass_counter1_string","count"), - ]), -}); - -var msg15 = msg("event_smtp:10", all12); - -var part24 = match("MESSAGE#15:event_smtp:11/2", "nwparser.p0", "%{action}status=%{event_state}session_id=\"%{sessionid}\" log_part=%{id1->} msg=\"to=\u003c\u003c%{to}, delay=%{p0}"); - -var part25 = match("MESSAGE#15:event_smtp:11/3_0", "nwparser.p0", "%{fld1}, xdelay=%{fld2}, mailer=%{protocol}, pri=%{fld3}, relay=%{shost}\""); - -var part26 = match("MESSAGE#15:event_smtp:11/3_1", "nwparser.p0", "%{fld1}, xdelay=%{fld2}, mailer=%{protocol}, pri=%{fld3}\""); - -var part27 = match("MESSAGE#15:event_smtp:11/3_2", "nwparser.p0", "%{fld1}, xdelay=%{fld2}, mailer=%{protocol}\""); - -var part28 = match("MESSAGE#15:event_smtp:11/3_3", "nwparser.p0", "%{fld1}\""); - -var select6 = linear_select([ - part25, - part26, - part27, - part28, -]); - -var all13 = all_match({ - processors: [ - dup18, - dup65, - part24, - select6, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg16 = msg("event_smtp:11", all13); - -var part29 = match("MESSAGE#16:event_smtp/2", "nwparser.p0", "%{action->} status=%{event_state->} session_id=%{p0}"); - -var all14 = all_match({ - processors: [ - dup2, - dup63, - part29, - dup68, - dup64, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg17 = msg("event_smtp", all14); - -var part30 = tagval("MESSAGE#17:event_smtp:12", "nwparser.payload", tvm, { - "action": "action", - "log_part": "id1", - "msg": "info", - "session_id": "sessionid", - "status": "event_state", - "ui": "network_service", - "user": "username", -}, processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, -])); - -var msg18 = msg("event_smtp:12", part30); - -var select7 = linear_select([ - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, - msg18, -]); - -var part31 = match("MESSAGE#18:event_update/0", "nwparser.payload", "msg=%{p0}"); - -var all15 = all_match({ - processors: [ - part31, - dup64, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg19 = msg("event_update", all15); - -var part32 = match("MESSAGE#19:event_config/1_0", "nwparser.p0", "%{network_service}(%{saddr}) module=%{p0}"); - -var part33 = match("MESSAGE#19:event_config/1_1", "nwparser.p0", "%{network_service->} module=%{p0}"); - -var select8 = linear_select([ - part32, - part33, -]); - -var part34 = match("MESSAGE#19:event_config/2", "nwparser.p0", "%{fld1->} submodule=%{fld2->} msg=%{p0}"); - -var all16 = all_match({ - processors: [ - dup2, - select8, - part34, - dup64, - ], - on_success: processor_chain([ - setc("eventcategory","1701000000"), - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); - -var msg20 = msg("event_config", all16); - -var select9 = linear_select([ - dup31, - dup32, -]); - -var all17 = all_match({ - processors: [ - dup26, - dup69, - dup70, - select9, - dup68, - dup64, - ], - on_success: processor_chain([ - dup33, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg21 = msg("virus", all17); - -var part35 = match("MESSAGE#21:virus_infected/2_0", "nwparser.p0", "\"%{to}\" client_name=\"%{p0}"); - -var part36 = match("MESSAGE#21:virus_infected/2_1", "nwparser.p0", "%{to->} client_name=\"%{p0}"); - -var select10 = linear_select([ - part35, - part36, -]); - -var part37 = match("MESSAGE#21:virus_infected/3", "nwparser.p0", "%{fqdn}\" client_ip=\"%{saddr}\" session_id=%{p0}"); - -var all18 = all_match({ - processors: [ - dup26, - dup69, - select10, - part37, - dup68, - dup64, - ], - on_success: processor_chain([ - dup33, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup15, - ]), -}); - -var msg22 = msg("virus_infected", all18); - -var part38 = match("MESSAGE#22:virus_file-signature/0_0", "nwparser.payload", "from=\"%{from}\" to=%{p0}"); - -var part39 = match("MESSAGE#22:virus_file-signature/0_1", "nwparser.payload", "%{from->} to=%{p0}"); - -var select11 = linear_select([ - part38, - part39, -]); - -var part40 = match("MESSAGE#22:virus_file-signature/2_0", "nwparser.p0", "\"%{sdomain->} [%{saddr}]\" session_id=%{p0}"); - -var part41 = match("MESSAGE#22:virus_file-signature/2_1", "nwparser.p0", "%{sdomain->} [%{saddr}] session_id=%{p0}"); - -var part42 = match("MESSAGE#22:virus_file-signature/2_2", "nwparser.p0", "\"[%{saddr}]\" session_id=%{p0}"); - -var part43 = match("MESSAGE#22:virus_file-signature/2_3", "nwparser.p0", "[%{saddr}] session_id=%{p0}"); - -var select12 = linear_select([ - part40, - part41, - part42, - part43, - dup31, - dup32, -]); - -var part44 = match("MESSAGE#22:virus_file-signature/4_0", "nwparser.p0", "\"Attachment file (%{filename}) has sha1 hash value: %{checksum}\""); - -var select13 = linear_select([ - part44, - dup5, - dup6, -]); - -var all19 = all_match({ - processors: [ - select11, - dup70, - select12, - dup68, - select13, - ], - on_success: processor_chain([ - dup33, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg23 = msg("virus_file-signature", all19); - -var part45 = match("MESSAGE#23:statistics/5", "nwparser.p0", "%{}MSISDN=%{fld3->} resolved=%{p0}"); - -var all20 = all_match({ - processors: [ - dup35, - dup71, - dup72, - dup73, - dup74, - part45, - dup75, - dup76, - dup77, - dup51, - dup78, - dup79, - dup80, - dup81, - ], - on_success: processor_chain([ - dup60, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg24 = msg("statistics", all20); - -var all21 = all_match({ - processors: [ - dup35, - dup71, - dup72, - dup73, - dup74, - dup61, - dup75, - dup76, - dup77, - dup51, - dup78, - dup79, - dup80, - dup81, - ], - on_success: processor_chain([ - dup60, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg25 = msg("statistics:01", all21); - -var part46 = match("MESSAGE#25:statistics:02/4_0", "nwparser.p0", "\"%{direction}\" subject=%{p0}"); - -var part47 = match("MESSAGE#25:statistics:02/4_1", "nwparser.p0", "%{direction->} subject=%{p0}"); - -var select14 = linear_select([ - part46, - part47, -]); - -var part48 = match("MESSAGE#25:statistics:02/5_0", "nwparser.p0", "\"%{subject}\" classifier=%{p0}"); - -var part49 = match("MESSAGE#25:statistics:02/5_1", "nwparser.p0", "%{subject->} classifier=%{p0}"); - -var select15 = linear_select([ - part48, - part49, -]); - -var part50 = match("MESSAGE#25:statistics:02/6_0", "nwparser.p0", "\"%{filter}\" disposition=%{p0}"); - -var part51 = match("MESSAGE#25:statistics:02/6_1", "nwparser.p0", "%{filter->} disposition=%{p0}"); - -var select16 = linear_select([ - part50, - part51, -]); - -var part52 = match("MESSAGE#25:statistics:02/7_0", "nwparser.p0", "\"%{disposition}\" client_name=\"%{p0}"); - -var part53 = match("MESSAGE#25:statistics:02/7_1", "nwparser.p0", "%{disposition->} client_name=\"%{p0}"); - -var select17 = linear_select([ - part52, - part53, -]); - -var part54 = match("MESSAGE#25:statistics:02/10_0", "nwparser.p0", "\"%{context}\" virus=%{p0}"); - -var part55 = match("MESSAGE#25:statistics:02/10_1", "nwparser.p0", "%{context->} virus=%{p0}"); - -var select18 = linear_select([ - part54, - part55, -]); - -var part56 = match("MESSAGE#25:statistics:02/11_0", "nwparser.p0", "\"%{virusname}\" message_length=%{p0}"); - -var part57 = match("MESSAGE#25:statistics:02/11_1", "nwparser.p0", "%{virusname->} message_length=%{p0}"); - -var select19 = linear_select([ - part56, - part57, -]); - -var part58 = match_copy("MESSAGE#25:statistics:02/12", "nwparser.p0", "fld4"); - -var all22 = all_match({ - processors: [ - dup35, - dup71, - dup69, - dup76, - select14, - select15, - select16, - select17, - dup74, - dup61, - select18, - select19, - part58, - ], - on_success: processor_chain([ - dup60, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg26 = msg("statistics:02", all22); - -var part59 = match("MESSAGE#26:statistics:03/0", "nwparser.payload", "session_id=\"%{sessionid}\" client_name=\"%{p0}"); - -var part60 = match("MESSAGE#26:statistics:03/1_0", "nwparser.p0", "%{fqdn}[%{saddr}] (may be forged)\"%{p0}"); - -var part61 = match("MESSAGE#26:statistics:03/1_1", "nwparser.p0", "%{fqdn}[%{saddr}]\"%{p0}"); - -var part62 = match("MESSAGE#26:statistics:03/1_2", "nwparser.p0", "[%{saddr}]\"%{p0}"); - -var select20 = linear_select([ - part60, - part61, - part62, -]); - -var part63 = match("MESSAGE#26:statistics:03/2", "nwparser.p0", "dst_ip=\"%{daddr}\" from=\"%{from}\" to=\"%{to}\"%{p0}"); - -var part64 = match("MESSAGE#26:statistics:03/3_0", "nwparser.p0", " polid=\"%{fld5}\" domain=\"%{domain}\" subject=\"%{subject}\" mailer=\"%{agent}\" resolved=\"%{context}\"%{p0}"); - -var part65 = match_copy("MESSAGE#26:statistics:03/3_1", "nwparser.p0", "p0"); - -var select21 = linear_select([ - part64, - part65, -]); - -var part66 = match("MESSAGE#26:statistics:03/4", "nwparser.p0", "%{}direction=\"%{direction}\" virus=\"%{virusname}\" disposition=\"%{disposition}\" classifier=\"%{filter}\" message_length=%{fld4}"); - -var all23 = all_match({ - processors: [ - part59, - select20, - part63, - select21, - part66, - ], - on_success: processor_chain([ - dup60, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg27 = msg("statistics:03", all23); - -var part67 = match("MESSAGE#27:statistics:04/1_0", "nwparser.p0", "\"%{sessionid}\" client_name=%{p0}"); - -var part68 = match("MESSAGE#27:statistics:04/1_1", "nwparser.p0", "%{sessionid->} client_name=%{p0}"); - -var select22 = linear_select([ - part67, - part68, -]); - -var part69 = match("MESSAGE#27:statistics:04/2_0", "nwparser.p0", "\"%{fqdn}[%{saddr}]\"dst_ip=%{p0}"); - -var part70 = match("MESSAGE#27:statistics:04/2_1", "nwparser.p0", "%{fqdn}[%{saddr}]dst_ip=%{p0}"); - -var part71 = match("MESSAGE#27:statistics:04/2_2", "nwparser.p0", "\"[%{saddr}]\"dst_ip=%{p0}"); - -var part72 = match("MESSAGE#27:statistics:04/2_3", "nwparser.p0", "[%{saddr}]dst_ip=%{p0}"); - -var part73 = match("MESSAGE#27:statistics:04/2_4", "nwparser.p0", "\"%{saddr}\"dst_ip=%{p0}"); - -var part74 = match("MESSAGE#27:statistics:04/2_5", "nwparser.p0", "%{saddr}dst_ip=%{p0}"); - -var select23 = linear_select([ - part69, - part70, - part71, - part72, - part73, - part74, -]); - -var part75 = match("MESSAGE#27:statistics:04/3_0", "nwparser.p0", "\"%{daddr}\" from=%{p0}"); - -var part76 = match("MESSAGE#27:statistics:04/3_1", "nwparser.p0", "%{daddr->} from=%{p0}"); - -var select24 = linear_select([ - part75, - part76, -]); - -var part77 = match("MESSAGE#27:statistics:04/4_0", "nwparser.p0", "\"%{from}\" hfrom=%{p0}"); - -var part78 = match("MESSAGE#27:statistics:04/4_1", "nwparser.p0", "%{from->} hfrom=%{p0}"); - -var select25 = linear_select([ - part77, - part78, -]); - -var part79 = match("MESSAGE#27:statistics:04/5_0", "nwparser.p0", "\"%{fld3}\" to=%{p0}"); - -var part80 = match("MESSAGE#27:statistics:04/5_1", "nwparser.p0", "%{fld3->} to=%{p0}"); - -var select26 = linear_select([ - part79, - part80, -]); - -var part81 = match("MESSAGE#27:statistics:04/6_0", "nwparser.p0", "\"%{to}\" polid=%{p0}"); - -var part82 = match("MESSAGE#27:statistics:04/6_1", "nwparser.p0", "%{to->} polid=%{p0}"); - -var select27 = linear_select([ - part81, - part82, -]); - -var part83 = match("MESSAGE#27:statistics:04/7_0", "nwparser.p0", "\"%{fld5}\" domain=%{p0}"); - -var part84 = match("MESSAGE#27:statistics:04/7_1", "nwparser.p0", "%{fld5->} domain=%{p0}"); - -var select28 = linear_select([ - part83, - part84, -]); - -var part85 = match("MESSAGE#27:statistics:04/8_0", "nwparser.p0", "\"%{domain}\" subject=%{p0}"); - -var part86 = match("MESSAGE#27:statistics:04/8_1", "nwparser.p0", "%{domain->} subject=%{p0}"); - -var select29 = linear_select([ - part85, - part86, -]); - -var part87 = match("MESSAGE#27:statistics:04/9_0", "nwparser.p0", "\"%{subject}\" mailer=%{p0}"); - -var part88 = match("MESSAGE#27:statistics:04/9_1", "nwparser.p0", "%{subject->} mailer=%{p0}"); - -var select30 = linear_select([ - part87, - part88, -]); - -var part89 = match("MESSAGE#27:statistics:04/10_0", "nwparser.p0", "\"%{agent}\" resolved=%{p0}"); - -var part90 = match("MESSAGE#27:statistics:04/10_1", "nwparser.p0", "%{agent->} resolved=%{p0}"); - -var select31 = linear_select([ - part89, - part90, -]); - -var part91 = match("MESSAGE#27:statistics:04/11_0", "nwparser.p0", "\"%{context}\" direction=%{p0}"); - -var part92 = match("MESSAGE#27:statistics:04/11_1", "nwparser.p0", "%{context->} direction=%{p0}"); - -var select32 = linear_select([ - part91, - part92, -]); - -var part93 = match("MESSAGE#27:statistics:04/12_0", "nwparser.p0", "\"%{direction}\" virus=%{p0}"); - -var part94 = match("MESSAGE#27:statistics:04/12_1", "nwparser.p0", "%{direction->} virus=%{p0}"); - -var select33 = linear_select([ - part93, - part94, -]); - -var part95 = match("MESSAGE#27:statistics:04/15_0", "nwparser.p0", "\"%{filter}\" message_length=%{p0}"); - -var part96 = match("MESSAGE#27:statistics:04/15_1", "nwparser.p0", "%{filter->} message_length=%{p0}"); - -var select34 = linear_select([ - part95, - part96, -]); - -var part97 = match("MESSAGE#27:statistics:04/16_0", "nwparser.p0", "\"%{fld6}\""); - -var part98 = match_copy("MESSAGE#27:statistics:04/16_1", "nwparser.p0", "fld6"); - -var select35 = linear_select([ - part97, - part98, -]); - -var all24 = all_match({ - processors: [ - dup35, - select22, - select23, - select24, - select25, - select26, - select27, - select28, - select29, - select30, - select31, - select32, - select33, - dup78, - dup79, - select34, - select35, - ], - on_success: processor_chain([ - dup60, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg28 = msg("statistics:04", all24); - -var part99 = tagval("MESSAGE#28:statistics:05", "nwparser.payload", tvm, { - "classifier": "filter", - "client_ip": "saddr", - "client_name": "fqdn", - "direction": "direction", - "disposition": "disposition", - "domain": "domain", - "dst_ip": "daddr", - "from": "from", - "hfrom": "fld3", - "mailer": "agent", - "message_length": "fld6", - "polid": "fld5", - "resolved": "context", - "session_id": "sessionid", - "src_type": "fld7", - "subject": "subject", - "to": "to", - "virus": "virusname", -}, processor_chain([ - dup60, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, -])); - -var msg29 = msg("statistics:05", part99); - -var select36 = linear_select([ - msg24, - msg25, - msg26, - msg27, - msg28, - msg29, -]); - -var part100 = match("MESSAGE#29:spam/1_0", "nwparser.p0", "\"%{sessionid}\" client_name=\"%{p0}"); - -var part101 = match("MESSAGE#29:spam/1_1", "nwparser.p0", "%{sessionid->} client_name=\"%{p0}"); - -var select37 = linear_select([ - part100, - part101, -]); - -var part102 = match("MESSAGE#29:spam/3", "nwparser.p0", "%{}from=%{p0}"); - -var part103 = match("MESSAGE#29:spam/5_0", "nwparser.p0", "\"%{to}\" subject=%{p0}"); - -var part104 = match("MESSAGE#29:spam/5_1", "nwparser.p0", "%{to->} subject=%{p0}"); - -var select38 = linear_select([ - part103, - part104, -]); - -var part105 = match("MESSAGE#29:spam/6_0", "nwparser.p0", "\"%{subject}\" msg=%{p0}"); - -var part106 = match("MESSAGE#29:spam/6_1", "nwparser.p0", "%{subject->} msg=%{p0}"); - -var select39 = linear_select([ - part105, - part106, -]); - -var all25 = all_match({ - processors: [ - dup35, - select37, - dup74, - part102, - dup69, - select38, - select39, - dup64, - ], - on_success: processor_chain([ - dup62, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg30 = msg("spam", all25); - -var part107 = match("MESSAGE#30:spam:04", "nwparser.payload", "session_id=\"%{sessionid}\" client_name=\"%{fqdn->} [%{saddr}] (%{fld2})\" dst_ip=\"%{daddr}\" from=\"%{from}\" to=\"%{to}\" subject=\"%{subject}\" msg=\"%{event_description}\"", processor_chain([ - dup62, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, -])); - -var msg31 = msg("spam:04", part107); - -var part108 = match("MESSAGE#31:spam:03/0", "nwparser.payload", "session_id=\"%{sessionid}\" client_name=%{p0}"); - -var part109 = match("MESSAGE#31:spam:03/1_0", "nwparser.p0", "\"%{fqdn->} [%{saddr}]\" %{p0}"); - -var part110 = match("MESSAGE#31:spam:03/1_1", "nwparser.p0", " \"%{fqdn}\" client_ip=\"%{saddr}\"%{p0}"); - -var select40 = linear_select([ - part109, - part110, -]); - -var part111 = match("MESSAGE#31:spam:03/2", "nwparser.p0", "%{}dst_ip=\"%{daddr}\" from=\"%{from}\" to=\"%{to}\" subject=\"%{subject}\" msg=\"%{event_description}\""); - -var all26 = all_match({ - processors: [ - part108, - select40, - part111, - ], - on_success: processor_chain([ - dup62, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg32 = msg("spam:03", all26); - -var part112 = match("MESSAGE#32:spam:02", "nwparser.payload", "session_id=\"%{sessionid}\" from=\"%{from}\" to=\"%{to}\" subject=\"%{subject}\" msg=\"%{event_description}\"", processor_chain([ - dup62, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, -])); - -var msg33 = msg("spam:02", part112); - -var part113 = match("MESSAGE#33:spam:01/3_0", "nwparser.p0", "\"%{to}\" msg=%{p0}"); - -var part114 = match("MESSAGE#33:spam:01/3_1", "nwparser.p0", "%{to->} msg=%{p0}"); - -var select41 = linear_select([ - part113, - part114, -]); - -var all27 = all_match({ - processors: [ - dup35, - dup71, - dup69, - select41, - dup64, - ], - on_success: processor_chain([ - dup62, - dup8, - dup9, - dup10, - dup11, - dup12, - dup34, - dup15, - ]), -}); - -var msg34 = msg("spam:01", all27); - -var select42 = linear_select([ - msg30, - msg31, - msg32, - msg33, - msg34, -]); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "event_admin": msg1, - "event_config": msg20, - "event_imap": msg5, - "event_pop3": msg2, - "event_smtp": select7, - "event_system": msg4, - "event_update": msg19, - "event_webmail": msg3, - "spam": select42, - "statistics": select36, - "virus": msg21, - "virus_file-signature": msg23, - "virus_infected": msg22, - }), -]); - -var part115 = match("MESSAGE#0:event_admin/0", "nwparser.payload", "user=%{username->} ui=%{p0}"); - -var part116 = match("MESSAGE#0:event_admin/1_0", "nwparser.p0", "%{network_service}(%{saddr}) action=%{p0}"); - -var part117 = match("MESSAGE#0:event_admin/1_1", "nwparser.p0", "%{network_service->} action=%{p0}"); - -var part118 = match("MESSAGE#0:event_admin/3_0", "nwparser.p0", "\"%{event_description}\""); - -var part119 = match_copy("MESSAGE#0:event_admin/3_1", "nwparser.p0", "event_description"); - -var part120 = match("MESSAGE#1:event_pop3/2", "nwparser.p0", "%{action->} status=%{event_state->} msg=%{p0}"); - -var part121 = match("MESSAGE#5:event_smtp:01/0", "nwparser.payload", "user=%{username}ui=%{p0}"); - -var part122 = match("MESSAGE#5:event_smtp:01/1_0", "nwparser.p0", "%{network_service}(%{hostip}) action=%{p0}"); - -var part123 = match("MESSAGE#5:event_smtp:01/1_1", "nwparser.p0", "%{network_service}action=%{p0}"); - -var part124 = match("MESSAGE#5:event_smtp:01/2", "nwparser.p0", "%{action}status=%{event_state}session_id=%{p0}"); - -var part125 = match("MESSAGE#5:event_smtp:01/3_0", "nwparser.p0", "\"%{sessionid}\"msg=\"STARTTLS=%{p0}"); - -var part126 = match("MESSAGE#5:event_smtp:01/3_1", "nwparser.p0", "%{sessionid}msg=\"STARTTLS=%{p0}"); - -var part127 = match("MESSAGE#16:event_smtp/3_0", "nwparser.p0", "\"%{sessionid}\" msg=%{p0}"); - -var part128 = match("MESSAGE#16:event_smtp/3_1", "nwparser.p0", "%{sessionid->} msg=%{p0}"); - -var part129 = match("MESSAGE#20:virus/0", "nwparser.payload", "from=%{p0}"); - -var part130 = match("MESSAGE#20:virus/1_0", "nwparser.p0", "\"%{from}\" to=%{p0}"); - -var part131 = match("MESSAGE#20:virus/1_1", "nwparser.p0", "%{from->} to=%{p0}"); - -var part132 = match("MESSAGE#20:virus/2_0", "nwparser.p0", "\"%{to}\" src=%{p0}"); - -var part133 = match("MESSAGE#20:virus/2_1", "nwparser.p0", "%{to->} src=%{p0}"); - -var part134 = match("MESSAGE#20:virus/3_0", "nwparser.p0", "\"%{saddr}\" session_id=%{p0}"); - -var part135 = match("MESSAGE#20:virus/3_1", "nwparser.p0", "%{saddr->} session_id=%{p0}"); - -var part136 = match("MESSAGE#23:statistics/0", "nwparser.payload", "session_id=%{p0}"); - -var part137 = match("MESSAGE#23:statistics/1_0", "nwparser.p0", "\"%{sessionid}\" from=%{p0}"); - -var part138 = match("MESSAGE#23:statistics/1_1", "nwparser.p0", "%{sessionid->} from=%{p0}"); - -var part139 = match("MESSAGE#23:statistics/2_0", "nwparser.p0", "\"%{from}\" mailer=%{p0}"); - -var part140 = match("MESSAGE#23:statistics/2_1", "nwparser.p0", "%{from->} mailer=%{p0}"); - -var part141 = match("MESSAGE#23:statistics/3_0", "nwparser.p0", "\"%{agent}\" client_name=\"%{p0}"); - -var part142 = match("MESSAGE#23:statistics/3_1", "nwparser.p0", "%{agent->} client_name=\"%{p0}"); - -var part143 = match("MESSAGE#23:statistics/4_0", "nwparser.p0", "%{fqdn->} [%{saddr}] (%{info})\"%{p0}"); - -var part144 = match("MESSAGE#23:statistics/4_1", "nwparser.p0", "%{fqdn->} [%{saddr}]\"%{p0}"); - -var part145 = match("MESSAGE#23:statistics/4_2", "nwparser.p0", "%{saddr}\"%{p0}"); - -var part146 = match("MESSAGE#23:statistics/6_0", "nwparser.p0", "\"%{context}\" to=%{p0}"); - -var part147 = match("MESSAGE#23:statistics/6_1", "nwparser.p0", "%{context->} to=%{p0}"); - -var part148 = match("MESSAGE#23:statistics/7_0", "nwparser.p0", "\"%{to}\" direction=%{p0}"); - -var part149 = match("MESSAGE#23:statistics/7_1", "nwparser.p0", "%{to->} direction=%{p0}"); - -var part150 = match("MESSAGE#23:statistics/8_0", "nwparser.p0", "\"%{direction}\" message_length=%{p0}"); - -var part151 = match("MESSAGE#23:statistics/8_1", "nwparser.p0", "%{direction->} message_length=%{p0}"); - -var part152 = match("MESSAGE#23:statistics/9", "nwparser.p0", "%{fld4->} virus=%{p0}"); - -var part153 = match("MESSAGE#23:statistics/10_0", "nwparser.p0", "\"%{virusname}\" disposition=%{p0}"); - -var part154 = match("MESSAGE#23:statistics/10_1", "nwparser.p0", "%{virusname->} disposition=%{p0}"); - -var part155 = match("MESSAGE#23:statistics/11_0", "nwparser.p0", "\"%{disposition}\" classifier=%{p0}"); - -var part156 = match("MESSAGE#23:statistics/11_1", "nwparser.p0", "%{disposition->} classifier=%{p0}"); - -var part157 = match("MESSAGE#23:statistics/12_0", "nwparser.p0", "\"%{filter}\" subject=%{p0}"); - -var part158 = match("MESSAGE#23:statistics/12_1", "nwparser.p0", "%{filter->} subject=%{p0}"); - -var part159 = match("MESSAGE#23:statistics/13_0", "nwparser.p0", "\"%{subject}\""); - -var part160 = match_copy("MESSAGE#23:statistics/13_1", "nwparser.p0", "subject"); - -var part161 = match("MESSAGE#24:statistics:01/5", "nwparser.p0", "%{}resolved=%{p0}"); - -var select43 = linear_select([ - dup3, - dup4, -]); - -var select44 = linear_select([ - dup5, - dup6, -]); - -var select45 = linear_select([ - dup19, - dup20, -]); - -var select46 = linear_select([ - dup22, - dup23, -]); - -var select47 = linear_select([ - dup3, - dup20, -]); - -var select48 = linear_select([ - dup24, - dup25, -]); - -var select49 = linear_select([ - dup27, - dup28, -]); - -var select50 = linear_select([ - dup29, - dup30, -]); - -var select51 = linear_select([ - dup36, - dup37, -]); - -var select52 = linear_select([ - dup38, - dup39, -]); - -var select53 = linear_select([ - dup40, - dup41, -]); - -var select54 = linear_select([ - dup42, - dup43, - dup44, -]); - -var select55 = linear_select([ - dup45, - dup46, -]); - -var select56 = linear_select([ - dup47, - dup48, -]); - -var select57 = linear_select([ - dup49, - dup50, -]); - -var select58 = linear_select([ - dup52, - dup53, -]); - -var select59 = linear_select([ - dup54, - dup55, -]); - -var select60 = linear_select([ - dup56, - dup57, -]); - -var select61 = linear_select([ - dup58, - dup59, -]); - -var all28 = all_match({ - processors: [ - dup2, - dup63, - dup16, - dup64, - ], - on_success: processor_chain([ - dup17, - dup8, - dup9, - dup10, - dup11, - dup12, - dup13, - dup14, - dup15, - ]), -}); diff --git a/x-pack/filebeat/module/fortinet/fortimail/ingest/pipeline.yml b/x-pack/filebeat/module/fortinet/fortimail/ingest/pipeline.yml deleted file mode 100644 index 817ec9d3e14..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimail/ingest/pipeline.yml +++ /dev/null @@ -1,69 +0,0 @@ ---- -description: Pipeline for Fortinet FortiMail - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # Serial Number - - set: - field: observer.serial_number - value: "{{rsa.misc.hardware_id}}" - ignore_empty_value: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/fortinet/fortimail/manifest.yml b/x-pack/filebeat/module/fortinet/fortimail/manifest.yml deleted file mode 100644 index d9782e4e6ea..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimail/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["fortinet.fortimail", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9545 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/fortinet/fortimail/test/generated.log b/x-pack/filebeat/module/fortinet/fortimail/test/generated.log deleted file mode 100644 index 0e5a02242a5..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimail/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -date=2016-1-29 time=06:09:59 device_id=pexe log_id=nes log_part=eab type=event subtype=update pri=high msg="boNemoe" -date=2016-2-12 time=13:12:33 device_id=ehend log_id=ritquiin log_part=umqui type=virus subtype=infected pri=very-high from="mest" to=enderitq client_name="sperna884.internal.domain" client_ip="10.165.201.71" session_id="pisciv" msg="uii" -date=2016-2-26 time=20:15:08 device_id=doeiu log_id=nia log_part=olupt type=event subtype=config pri=low user=quipexe ui=alo(10.212.18.145) module=umdo submodule=itessequ msg=vol -date=2016-3-12 time=03:17:42 device_id=uipexea log_id=tatio log_part=minim type=event subtype=pop3 pri=high user=ceroinBC ui=ratvolup action=deny status=iatu msg="ionofde" -date=2016-3-26 time=10:20:16 device_id=itati log_id=mfu log_part=uid type=event subtype=pop3 pri=very-high user=obeataev ui=lor action=block status=autfu msg="natura" -date=2016-4-9 time=17:22:51 device_id=llamcorp log_id=ari log_part=eataevit type=event subtype=system pri=high user=iam ui=mqua action=allow status=olab msg=mquisnos -date=2016-4-24 time=00:25:25 device_id=enimad log_id=incididu log_part=eci type=virus pri=very-high from=tenbyCic to=boree src=10.98.69.43 session_id="iinea" msg=ipit -date=2016-5-8 time=07:27:59 device_id=taliqu log_id=temUten log_part=ccusan type=virus subtype=infected pri=low from="Ciceroi" to="aveniam" client_name="uradi7307.internal.corp" client_ip="10.118.96.139" session_id="sitas" msg=ehenderi -date=2016-5-22 time=14:30:33 device_id=smo log_id=litessec log_part=emporinc type=event subtype=pop3 pri=very-high user=ipsumq ui=atcu action=allow status=tessec msg="remipsum" -date=2016-6-5 time=21:33:08 device_id=ntutl log_id=caecatc log_part=onsequat type=event subtype=update pri=low msg="edquiano" -date=2016-6-20 time=04:35:42 device_id=idestla log_id=Nemoeni log_part=uradi type=statistics pri=very-high session_id="lup" from="remeumf" mailer=antiumto client_name="10.241.165.37" MSISDN=aUteni resolved=ittenbyC to="aperi" direction="inbound" message_length=ita virus="ipi" disposition=rsitamet classifier="lupt" subject="xea" -date=2016-7-4 time=11:38:16 device_id=amvolup log_id=sequi log_part=rehend type=event subtype=webmail pri=high user=eme ui=numqu(10.232.149.140) action=allow status=lum msg=utali -date=2016-7-18 time=18:40:50 device_id=estiae log_id=sci log_part=oei type=virus_file-signature pri=low snostrud to=nama src="10.24.67.250" session_id="dolor" msg="nnum" -date=2016-8-2 time=01:43:25 device_id=oluptas log_id=tNequepo log_part=lup type=event subtype=update pri=medium msg=equat -date=2016-8-16 time=08:45:59 device_id=abi log_id=sectetur log_part=uioffi type=event subtype=update pri=high msg=veniamq -date=2016-8-30 time=15:48:33 device_id=orem log_id=beata log_part=hitecto type=statistics pri=very-high session_id="texp" client_name="[10.179.124.125]"dst_ip="10.177.36.38" from="sequine" to="ectio" polid="dutper" domain="lamcolab3252.www.invalid" subject="gel" mailer="lorsitam" resolved="mpo" direction="inbound" virus="ris" disposition="uamqu" classifier="lor" message_length=oide -date=2016-9-13 time=22:51:07 device_id=didunt log_id=uptatema log_part=intocc type=virus subtype=file-signature pri=very-high from="orema" to=invento src=[10.164.39.248] session_id="nofdeFin" msg=sequam -date=2016-9-28 time=05:53:42 device_id=tvolu log_id=ecte log_part=tinvolu type=virus_file-signature pri=high from="ntiumdo" to="autfu" src=gnaaliq [10.52.135.156] session_id="litse" msg="icabo" -date=2016-10-12 time=12:56:16 device_id=stru log_id=tectobe log_part=Nequepo type=event subtype=config pri=very-high user=pora ui=boree module=evolup submodule=ionofdeF msg="evelit" -date=2016-10-26 time=19:58:50 device_id=uatD log_id=ariatu log_part=edquiac type=event subtype=smtp pri=high user=atno ui=tani action=allow status=ntocca session_id=ostru log_part=ntoccae msg=autf -date=2016-11-10 time=03:01:24 device_id=tenimad log_id=minimav log_part=udexerci type=spam pri=very-high session_id="itam" client_name="str976.internal.localhost [10.166.225.26]" from=tanimid to=umdo subject="natuse" msg="gnamal" -date=2016-11-24 time=10:03:59 device_id=intoc log_id=rQuisau log_part=itess type=virus subtype=infected pri=high from=evit to="runtm" client_name="molli4306.www5.home" client_ip="10.218.243.47" session_id="borios" msg=rsitvolu -date=2016-12-8 time=17:06:33 device_id=quamqua log_id=eacommod log_part=ctetura type=event subtype=imap pri=high user=tpersp ui=stla action=allow status=sequamni msg=uradi -date=2016-12-23 time=00:09:07 device_id=dolore log_id=onsecte log_part=nBCSedut type=virus subtype=file-signature pri=high from="modocons" to=gitsed src="10.16.177.212" session_id="emp" msg="Attachment file (pisciv) has sha1 hash value: lumdolor" -date=2017-1-6 time=07:11:41 device_id=uaUten log_id=nby log_part=mve type=event subtype=config pri=low user=isau ui=rautodi(10.96.97.81) module=pis submodule=nsequat msg=doloreme -date=2017-1-20 time=14:14:16 device_id=aec log_id=fdeF log_part=iquidexe type=spam pri=low session_id="niamq" client_name= "lapariat7287.internal.host" client_ip="10.140.7.83" dst_ip="10.68.246.187" from="icabo" to="gna" subject="con" msg="preh" -date=2017-2-3 time=21:16:50 device_id=amcor log_id=ica log_part=lillum type=event subtype=admin pri=very-high user=dicta ui=taedicta action=accept status=poriss reason=failure msg=equaturv -date=2017-2-18 time=04:19:24 device_id=tpersp log_id=llamc log_part=nte type=event subtype=pop3 pri=very-high user=utali ui=porinc(10.48.204.44) action=accept status=dat msg=aincidu -date=2017-3-4 time=11:21:59 device_id=dipisci log_id=spernatu log_part=admi type=event subtype=pop3 pri=very-high user=quunt ui=olori action=allow status=autodit msg=elit -date=2017-3-18 time=18:24:33 device_id=nte log_id=ulpa log_part=sitam type=virus subtype=file-signature pri=low enderit to=sequa src="[10.111.233.194]" session_id=eirure msg=deserun -date=2017-4-2 time=01:27:07 device_id=ptateve log_id=enderi log_part=ptatem type=event subtype=smtp pri=very-high user=fugi ui=labo action=block status=ullamcor session_id=itationu msg=proident -date=2017-4-16 time=08:29:41 device_id=atione log_id=lores log_part=ritati type=statistics pri=very-high session_id=uii client_name=estl5804.internal.local client_ip=10.73.207.70 dst_ip=10.179.210.218 from=taut hfrom=tanimi to=rumSecti polid=iuntNe domain=atise3421.www5.localdomain mailer=oluptas resolved=emvele src_type=isnost direction=inbound virus=Sedut disposition=yCiceroi classifier=quunt message_length=acommod subject=sitvol -date=2017-4-30 time=15:32:16 device_id=liquide log_id=odt log_part=Sedutpe type=event subtype=admin pri=medium user=rroq ui=rcit(10.43.62.246) action=accept status=estl reason=success msg=citatio -date=2017-5-14 time=22:34:50 device_id=taedict log_id=edquian log_part=loremeu type=event subtype=admin pri=very-high user=volupta ui=dmi action=allow status=aaliq reason=unknown msg=lupta -date=2017-5-29 time=05:37:24 device_id=occ log_id=oloreseo log_part=iruredol type=virus subtype=file-signature pri=very-high derit to=orese src="[10.28.105.124]" session_id="strude" msg=eritin -date=2017-6-12 time=12:39:58 device_id=temUten log_id=dutper log_part=sitamet type=event subtype=admin pri=very-high user=illumqui ui=saq action=block status=ritqu reason=unknown msg="idolor" -date=2017-6-26 time=19:42:33 device_id=quide log_id=quaU log_part=undeomni type=virus_file-signature pri=medium acomm to=iutali src="[10.219.13.150]" session_id=Finibus msg=radi -date=2017-7-11 time=02:45:07 device_id=inrepr log_id=mol log_part=umdolors type=event subtype=pop3 pri=medium user=imad ui=oriosam(10.163.114.215) action=deny status=sitametc msg=onsequa -date=2017-7-25 time=09:47:41 device_id=riosa log_id=tNe log_part=pisc type=event subtype=webmail pri=very-high user=caecat ui=rautod(10.124.32.120) action=accept status=atcupi msg=atem -date=2017-8-8 time=16:50:15 device_id=undeom log_id=emullamc log_part=tec type=event subtype=imap pri=medium user=eetdo ui=tlab action=cancel status=liq msg=seddoeiu -date=2017-8-22 time=23:52:50 device_id=edictasu log_id=mdolors log_part=oremi type=event subtype=imap pri=medium user=atis ui=atDuis action=accept status=nisiut msg="rumwri" -date=2017-9-6 time=06:55:24 device_id=lumqu log_id=onulamco log_part=ons type=event subtype=pop3 pri=low user=uptat ui=unt action=accept status=uido msg=tla -date=2017-9-20 time=13:57:58 device_id=uamqu log_id=olori log_part=ido type=spam pri=low session_id="sunt" from="autfugit" to="emUte" msg=iusmodi -date=2017-10-4 time=21:00:32 device_id=umS log_id=iciadese log_part=riatur type=event subtype=webmail pri=very-high user=xeacommo ui=Cicero(10.247.53.179) action=cancel status=ditau msg=atemaccu -date=2017-10-19 time=04:03:07 device_id=urau log_id=etur log_part=rsitvol type=event subtype=config pri=low user=laborum ui=ostr(10.70.91.185) module=lumdo submodule=acom msg="eFini" -date=2017-11-2 time=11:05:41 device_id=upta log_id=itessequ log_part=iusmodit type=event subtype=update pri=very-high msg=exerci -date=2017-11-16 time=18:08:15 device_id=mmodoco log_id=amni log_part=atnul type=event subtype=webmail pri=medium user=iquidexe ui=illumq(10.215.65.52) action=accept status=tasnul msg="tuserr" -date=2017-12-1 time=01:10:49 device_id=porinc log_id=riame log_part=riat type=event subtype=admin pri=medium user=rumSec ui=orp action=deny status=udan reason=unknown msg="essequam" -date=2017-12-15 time=08:13:24 device_id=itse log_id=ilm log_part=mvel type=virus subtype=infected pri=high from=seos to=exercita client_name="edolori3822.api.home" client_ip="10.63.177.46" session_id="oluptate" msg=lit -date=2017-12-29 time=15:15:58 device_id=iciade log_id=uis log_part=amc type=event subtype=webmail pri=medium user=Ute ui=ptassita action=allow status=runtm msg="eturadip" -date=2018-1-12 time=22:18:32 device_id=colabori log_id=imidestl log_part=piscing type=virus subtype=file-signature pri=high from="isn" to=smod src="idunt [10.29.120.226]" session_id="atev" msg="ectio" -date=2018-1-27 time=05:21:06 device_id=atcupid log_id=onse log_part=psa type=virus_file-signature pri=high destla to="fugitse" src=[10.12.86.130] session_id=dese msg="Attachment file (duntutla) has sha1 hash value: lamco" -date=2018-2-10 time=12:23:41 device_id=gna log_id=ici log_part=quamnih type=event subtype=pop3 pri=low user=iameaque ui=identsun action=deny status=aquio msg="rspicia" -date=2018-2-24 time=19:26:15 device_id=uiineavo log_id=sistena log_part=uidexeac type=virus subtype=infected pri=high from="amquisno" to=modoc client_name="magnam3267.corp" client_ip="10.95.32.86" session_id="Bonorum" msg=lesti -date=2018-3-11 time=02:28:49 device_id=lupta log_id=byC log_part=imadm type=spam pri=low session_id="nci" from="orroquis" to="ulapa" subject="iumdo" msg="iusmodit" -date=2018-3-25 time=09:31:24 device_id=obeataev log_id=umf log_part=olesti type=event subtype=config pri=low user=quaeabil ui=emip module=aturQu submodule=itesse msg="iamqui" -date=2018-4-8 time=16:33:58 device_id=inim log_id=etdol log_part=Sed type=event subtype=pop3 pri=very-high user=tten ui=etur action=allow status=mipsumqu msg="eprehen" -date=2018-4-22 time=23:36:32 device_id=itaedict log_id=olorema log_part=rep type=event subtype=update pri=low msg=ptatemse -date=2018-5-7 time=06:39:06 device_id=eleumi log_id=edic log_part=udexerc type=event subtype=pop3 pri=low user=olabori ui=odic action=block status=lica msg=secil -date=2018-5-21 time=13:41:41 device_id=nimadmin log_id=midest log_part=modt type=event subtype=update pri=very-high msg=tocca -date=2018-6-4 time=20:44:15 device_id=usant log_id=mipsumq log_part=ident type=event subtype=config pri=very-high user=sequatD ui=ercitati(10.40.89.185) module=temse submodule=caecat msg="cusanti" -date=2018-6-19 time=03:46:49 device_id=conseq log_id=itame log_part=tenat type=virus subtype=infected pri=very-high from="yCiceroi" to="nostrum" client_name="orroquis5179.local" client_ip="10.252.96.71" session_id="tvolu" msg="dutper" -date=2018-7-3 time=10:49:23 device_id=ugiatqu log_id=eruntmo log_part=nimve type=virus subtype=infected pri=very-high from=natus to=boreet client_name="luptasnu757.www.home" client_ip="10.174.210.232" session_id=ovolupta msg="volup" -date=2018-7-17 time=17:51:58 device_id=Bonoru log_id=rcitati log_part=nula type=event subtype=imap pri=medium user=deomni ui=adipi(10.120.232.62) action=block status=ntutl msg="volupt" -date=2018-8-1 time=00:54:32 device_id=mquameiu log_id=loremq log_part=turmagni type=event subtype=imap pri=very-high user=emUtenim ui=ende action=block status=amnis msg=rvelil -date=2018-8-15 time=07:57:06 device_id=rumetMa log_id=mexerci log_part=urEx type=virus subtype=file-signature pri=medium liq to=abore src=10.200.225.45 session_id=dol msg=exe -date=2018-8-29 time=14:59:40 device_id=audant log_id=rspicia log_part=pitl type=statistics pri=high session_id=mmod client_name=taevit4968.mail.local client_ip=10.144.111.42 dst_ip=10.62.61.1 from=lam hfrom=asnu to=com polid=rep domain=mveni5084.internal.local mailer=num resolved=ctetura src_type=quaerat direction=inbound virus=umexer disposition=amnih classifier=tper message_length=pisciv subject=tconsect -date=2018-9-12 time=22:02:15 device_id=emipsumq log_id=culpaq log_part=quamq type=event subtype=pop3 pri=medium user=emvel ui=pta(10.183.213.223) action=block status=hend msg=remagna -date=2018-9-27 time=05:04:49 device_id=lauda log_id=plicaboN log_part=dolo type=virus subtype=file-signature pri=medium from="elit" to=sam src="tMal [10.52.190.18]" session_id=isni msg=quid -date=2018-10-11 time=12:07:23 device_id=inibus log_id=secte log_part=ctobeat type=event subtype=config pri=low user=iqui ui=animide module=pid submodule=itanimi msg="onoru" -date=2018-10-25 time=19:09:57 device_id=naaliq log_id=plica log_part=asiarc type=event subtype=imap pri=low user=seq ui=snula(10.203.110.206) action=deny status=dipi msg=ecatc -date=2018-11-9 time=02:12:32 device_id=dolo log_id=velites log_part=oloremi type=virus_file-signature pri=high apari to=tsunt src="caecat [10.108.10.197]" session_id=enim msg="Attachment file (umq) has sha1 hash value: sistena" -date=2018-11-23 time=09:15:06 device_id=imipsam log_id=eumiu log_part=tatevel type=event subtype=smtp pri=high user=quisnostui=sequines(10.115.154.104) action=cancelstatus=lorumsession_id="suntexpl" msg="DSN: to <; reason:success; sessionid:tatis" -date=2018-12-7 time=16:17:40 device_id=econ log_id=aborio log_part=rve type=event subtype=smtp pri=medium user=nbyCiui=runtmollaction=blockstatus=velillumsession_id="ionev" msg="to=<, delay=rna, xdelay=cons, mailer=ipv6-icmp, pri=lupta, relay=olaboris3175.internal.home[10.250.94.95], dsn=tno, stat=imvenia" -date=2018-12-21 time=23:20:14 device_id=atevelit log_id=ugitsed log_part=dminimve type=virus subtype=file-signature pri=very-high from="onse" to=uiac src=tquii [10.164.49.95] session_id=emeumfu msg="inBCSedu" -date=2019-1-5 time=06:22:49 device_id=ddo log_id=emp log_part=inBC type=event subtype=smtp pri=low user=eacommui=aboNem(10.11.45.141) action=allowstatus=remasession_id="mcol"msg="STARTTLS=tion, cert-subject=umquia, cert-issuer=lorsita, verifymsg=spici" -date=2019-1-19 time=13:25:23 device_id=odit log_id=vol log_part=epteurs type=statistics pri=very-high session_id="cteturad" client_name="modi6930.internal.test[10.60.164.100]"dst_ip="10.161.1.146" from="etconse" to="nproiden" polid="ionem" domain="taevitae6868.www.corp" subject="ehende" mailer="rep" resolved="nostru" direction="internal" virus="ipiscin" disposition="trudexe" classifier="qua" message_length=modit -date=2019-2-2 time=20:27:57 device_id=orsit log_id=deFinibu log_part=iaecons type=event subtype=admin pri=very-high user=rautod ui=onorumet(10.157.118.41) action=cancel status=chit reason=unknown msg="erspici" -date=2019-2-17 time=03:30:32 device_id=quidol log_id=tinv log_part=Utenima type=statistics pri=high session_id=temqu client_name=uradip7802.mail.example client_ip=10.44.35.57 dst_ip=10.93.239.216 from=vento hfrom=litsed to=ciun polid=rehender domain=tetura7106.www5.corp mailer=eosquir resolved=tqu src_type=emips direction=internal virus=tinvolu disposition=ptat classifier=amquisn message_length=Finibus subject=nsequat -date=2019-3-3 time=10:33:06 device_id=evelite log_id=remquela log_part=toreve type=event subtype=update pri=high msg="dolor" -date=2019-3-17 time=17:35:40 device_id=itse log_id=lapari log_part=Bonor type=event subtype=update pri=medium msg=exeaco -date=2019-4-1 time=00:38:14 device_id=emvele log_id=tNeq log_part=olorsita type=virus_file-signature pri=medium eleumiu to=etdol src="imadmin [10.123.154.140]" session_id=liqu msg=dolor -date=2019-4-15 time=07:40:49 device_id=aliq log_id=utem log_part=oreetd type=event subtype=imap pri=very-high user=mremape ui=ude action=deny status=emac msg=rmagnido -date=2019-4-29 time=14:43:23 device_id=pariatur log_id=cita log_part=tvo type=event subtype=admin pri=high user=rve ui=atemacc(10.141.108.1) action=deny status=ciunt reason=success msg="beataevi" -date=2019-5-13 time=21:45:57 device_id=imaven log_id=dmin log_part=sum type=event subtype=system pri=low user=lore ui=nim action=cancel status=edquiac msg=psamvolu -date=2019-5-28 time=04:48:31 device_id=iade log_id=tae log_part=obe type=event subtype=admin pri=medium user=ulapari ui=rittenby(10.31.31.193) action=deny status=nvol reason=unknown msg="luptatem" -date=2019-6-11 time=11:51:06 device_id=conse log_id=ruredolo log_part=ati type=event subtype=system pri=low user=olors ui=roid(10.234.156.8) action=block status=uteiru msg="xer" -date=2019-6-25 time=18:53:40 device_id=nvol log_id=uame log_part=quia type=event subtype=update pri=very-high msg="labor" -date=2019-7-10 time=01:56:14 device_id=mwritte log_id=modit log_part=quamnih type=event subtype=config pri=medium user=itanimid ui=uiin module=nibusBo submodule=iusm msg="nostru" -date=2019-7-24 time=08:58:48 device_id=vel log_id=preh log_part=madmini type=event subtype=update pri=high msg=edutpers -date=2019-8-7 time=16:01:23 device_id=sBonoru log_id=everi log_part=squ type=virus subtype=file-signature pri=medium from="utla" to=nse src=10.160.236.78 session_id=nostrude msg="Attachment file (rinc) has sha1 hash value: tno" -date=2019-8-21 time=23:03:57 device_id=cid log_id=nonproi log_part=dolor type=event subtype=admin pri=medium user=molli ui=oeiusm(10.244.19.62) action=accept status=nnumquam reason=unknown msg="tdolore" -date=2019-9-5 time=06:06:31 device_id=icta log_id=epteu log_part=nvent type=event subtype=webmail pri=high user=mquiavol ui=odiconse(10.147.52.164) action=allow status=untutl msg=ugiatnul -date=2019-9-19 time=13:09:05 device_id=quaturve log_id=elaudant log_part=olup type=spam pri=high session_id="iacon" client_name= "ncu3839.www.localhost" client_ip="10.201.105.58" dst_ip="10.251.183.113" from="ent" to="ionemu" subject="eseosqu" msg="uptatem" -date=2019-10-3 time=20:11:40 device_id=eprehen log_id=oinB log_part=lor type=statistics pri=low session_id="citatio" client_name="[10.209.203.156]"dst_ip="10.132.139.98" from="pariat" to="borisnis" direction="unknown" virus="oremagn" disposition="emagna" classifier="uidolor" message_length=remag -date=2019-10-18 time=03:14:14 device_id=tiumtot log_id=ulamcola log_part=epr type=event subtype=admin pri=low user=nculpa ui=enbyCice(10.152.196.145) action=block status=uptas reason=success msg="iadeseru" -date=2019-11-1 time=10:16:48 device_id=equ log_id=turadip log_part=ataev type=virus_file-signature pri=medium from="oree" to="nimadmi" src="utaliq [10.78.38.143]" session_id=qui msg="Attachment file (epteurs) has sha1 hash value: did" -date=2019-11-15 time=17:19:22 device_id=sunt log_id=orumSe log_part=olupta type=event subtype=update pri=very-high msg=pta -date=2019-11-30 time=00:21:57 device_id=ntutlabo log_id=leumiure log_part=tasnu type=event subtype=smtp pri=high user=amquaui=tionevol(10.209.124.81) action=allowstatus=tobesession_id="ssequa" log_part=emp msg="to=<; reason:success; sessionid:tatis\"", - "fileset.name": "fortimail", - "host.ip": "10.115.154.104", - "input.type": "log", - "log.level": "high", - "log.offset": 14016, - "observer.product": "FortiMail", - "observer.serial_number": "imipsam", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.115.154.104" - ], - "related.user": [ - "quisnost" - ], - "rsa.email.email_dst": "iqu", - "rsa.internal.messageid": "event_smtp", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "smtp", - "rsa.misc.event_state": "lorum", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "imipsam", - "rsa.misc.log_session_id": "suntexpl", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "smtp", - "rsa.misc.reference_id": "eumiu", - "rsa.misc.reference_id1": "tatevel", - "rsa.misc.result": "success", - "rsa.misc.severity": "high", - "rsa.network.network_service": "sequines", - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "service.type": "fortinet", - "source.ip": "10.115.154.104", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "quisnost" - }, - { - "@timestamp": "2018-12-07T18:17:40.000Z", - "event.action": "block", - "event.code": "aborio", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2018-12-7 time=16:17:40 device_id=econ log_id=aborio log_part=rve type=event subtype=smtp pri=medium user=nbyCiui=runtmollaction=blockstatus=velillumsession_id=\"ionev\" msg=\"to=<, delay=rna, xdelay=cons, mailer=ipv6-icmp, pri=lupta, relay=olaboris3175.internal.home[10.250.94.95], dsn=tno, stat=imvenia\"", - "fileset.name": "fortimail", - "host.hostname": "olaboris3175.internal.home", - "input.type": "log", - "log.level": "medium", - "log.offset": 14269, - "network.protocol": "ipv6-icmp", - "observer.product": "FortiMail", - "observer.serial_number": "econ", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.hosts": [ - "olaboris3175.internal.home" - ], - "related.ip": [ - "10.250.94.95" - ], - "related.user": [ - "nbyCi" - ], - "rsa.email.email_dst": "vitaedi", - "rsa.internal.messageid": "event_smtp", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "smtp", - "rsa.misc.event_state": "velillum", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "econ", - "rsa.misc.log_session_id": "ionev", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "smtp", - "rsa.misc.reference_id": "aborio", - "rsa.misc.reference_id1": "rve", - "rsa.misc.severity": "medium", - "rsa.network.network_service": "runtmoll", - "rsa.time.event_time": "2018-12-07T18:17:40.000Z", - "service.type": "fortinet", - "source.address": "olaboris3175.internal.home", - "source.ip": "10.250.94.95", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "nbyCi" - }, - { - "@timestamp": "2018-12-22T01:20:14.000Z", - "event.action": "virus_file-signature", - "event.code": "ugitsed", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2018-12-21 time=23:20:14 device_id=atevelit log_id=ugitsed log_part=dminimve type=virus subtype=file-signature pri=very-high from=\"onse\" to=uiac src=tquii [10.164.49.95] session_id=emeumfu msg=\"inBCSedu\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "very-high", - "log.offset": 14586, - "observer.product": "FortiMail", - "observer.serial_number": "atevelit", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.164.49.95" - ], - "rsa.email.email_dst": "uiac", - "rsa.email.email_src": "onse", - "rsa.internal.event_desc": "inBCSedu", - "rsa.internal.messageid": "virus_file-signature", - "rsa.misc.event_type": "virus_file-signature", - "rsa.misc.hardware_id": "atevelit", - "rsa.misc.log_session_id": "emeumfu", - "rsa.misc.msgIdPart1": "virus", - "rsa.misc.msgIdPart2": "file-signature", - "rsa.misc.reference_id": "ugitsed", - "rsa.misc.reference_id1": "dminimve", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2018-12-22T01:20:14.000Z", - "service.type": "fortinet", - "source.domain": "tquii", - "source.ip": "10.164.49.95", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "event.action": "allow", - "event.code": "emp", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-1-5 time=06:22:49 device_id=ddo log_id=emp log_part=inBC type=event subtype=smtp pri=low user=eacommui=aboNem(10.11.45.141) action=allowstatus=remasession_id=\"mcol\"msg=\"STARTTLS=tion, cert-subject=umquia, cert-issuer=lorsita, verifymsg=spici\"", - "fileset.name": "fortimail", - "host.ip": "10.11.45.141", - "input.type": "log", - "log.level": "low", - "log.offset": 14795, - "observer.product": "FortiMail", - "observer.serial_number": "ddo", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.11.45.141" - ], - "related.user": [ - "eacomm" - ], - "rsa.crypto.cert_subject": "umquia", - "rsa.internal.messageid": "event_smtp", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "smtp", - "rsa.misc.event_state": "rema", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "ddo", - "rsa.misc.log_session_id": "mcol", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "smtp", - "rsa.misc.reference_id": "emp", - "rsa.misc.reference_id1": "inBC", - "rsa.misc.severity": "low", - "rsa.network.network_service": "aboNem", - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "eacomm" - }, - { - "@timestamp": "2019-01-19T15:25:23.000Z", - "destination.ip": "10.161.1.146", - "event.action": "statistics", - "event.code": "vol", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-1-19 time=13:25:23 device_id=odit log_id=vol log_part=epteurs type=statistics pri=very-high session_id=\"cteturad\" client_name=\"modi6930.internal.test[10.60.164.100]\"dst_ip=\"10.161.1.146\" from=\"etconse\" to=\"nproiden\" polid=\"ionem\" domain=\"taevitae6868.www.corp\" subject=\"ehende\" mailer=\"rep\" resolved=\"nostru\" direction=\"internal\" virus=\"ipiscin\" disposition=\"trudexe\" classifier=\"qua\" message_length=modit", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "very-high", - "log.offset": 15048, - "network.direction": "internal", - "observer.product": "FortiMail", - "observer.serial_number": "odit", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.hosts": [ - "modi6930.internal.test", - "taevitae6868.www.corp" - ], - "related.ip": [ - "10.161.1.146", - "10.60.164.100" - ], - "rsa.email.email_dst": "nproiden", - "rsa.email.email_src": "etconse", - "rsa.email.subject": "ehende", - "rsa.internal.messageid": "statistics", - "rsa.misc.client": "rep", - "rsa.misc.context": "nostru", - "rsa.misc.disposition": "trudexe", - "rsa.misc.event_type": "statistics", - "rsa.misc.filter": "qua", - "rsa.misc.hardware_id": "odit", - "rsa.misc.log_session_id": "cteturad", - "rsa.misc.reference_id": "vol", - "rsa.misc.reference_id1": "epteurs", - "rsa.misc.severity": "very-high", - "rsa.misc.virusname": "ipiscin", - "rsa.network.domain": "taevitae6868.www.corp", - "rsa.time.event_time": "2019-01-19T15:25:23.000Z", - "rsa.web.fqdn": "modi6930.internal.test", - "server.domain": "taevitae6868.www.corp", - "server.registered_domain": "www.corp", - "server.subdomain": "taevitae6868", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.60.164.100", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-02-02T22:27:57.000Z", - "event.action": "cancel", - "event.code": "deFinibu", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-2-2 time=20:27:57 device_id=orsit log_id=deFinibu log_part=iaecons type=event subtype=admin pri=very-high user=rautod ui=onorumet(10.157.118.41) action=cancel status=chit reason=unknown msg=\"erspici\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "very-high", - "log.offset": 15464, - "observer.product": "FortiMail", - "observer.serial_number": "orsit", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.157.118.41" - ], - "related.user": [ - "rautod" - ], - "rsa.internal.event_desc": "erspici", - "rsa.internal.messageid": "event_admin", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "admin", - "rsa.misc.event_state": "chit", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "orsit", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "admin", - "rsa.misc.reference_id": "deFinibu", - "rsa.misc.reference_id1": "iaecons", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "very-high", - "rsa.network.network_service": "onorumet", - "rsa.time.event_time": "2019-02-02T22:27:57.000Z", - "service.type": "fortinet", - "source.ip": "10.157.118.41", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "rautod" - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "destination.ip": "10.93.239.216", - "event.action": "statistics", - "event.code": "tinv", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-2-17 time=03:30:32 device_id=quidol log_id=tinv log_part=Utenima type=statistics pri=high session_id=temqu client_name=uradip7802.mail.example client_ip=10.44.35.57 dst_ip=10.93.239.216 from=vento hfrom=litsed to=ciun polid=rehender domain=tetura7106.www5.corp mailer=eosquir resolved=tqu src_type=emips direction=internal virus=tinvolu disposition=ptat classifier=amquisn message_length=Finibus subject=nsequat", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "high", - "log.offset": 15674, - "network.direction": "internal", - "observer.product": "FortiMail", - "observer.serial_number": "quidol", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.hosts": [ - "tetura7106.www5.corp", - "uradip7802.mail.example" - ], - "related.ip": [ - "10.44.35.57", - "10.93.239.216" - ], - "rsa.email.email_dst": "ciun", - "rsa.email.email_src": "vento", - "rsa.email.subject": "nsequat", - "rsa.internal.messageid": "statistics", - "rsa.misc.client": "eosquir", - "rsa.misc.context": "tqu", - "rsa.misc.disposition": "ptat", - "rsa.misc.event_type": "statistics", - "rsa.misc.filter": "amquisn", - "rsa.misc.hardware_id": "quidol", - "rsa.misc.log_session_id": "temqu", - "rsa.misc.reference_id": "tinv", - "rsa.misc.reference_id1": "Utenima", - "rsa.misc.severity": "high", - "rsa.misc.virusname": "tinvolu", - "rsa.network.domain": "tetura7106.www5.corp", - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "rsa.web.fqdn": "uradip7802.mail.example", - "server.domain": "tetura7106.www5.corp", - "server.registered_domain": "www5.corp", - "server.subdomain": "tetura7106", - "server.top_level_domain": "corp", - "service.type": "fortinet", - "source.ip": "10.44.35.57", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "event.action": "event", - "event.code": "remquela", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-3-3 time=10:33:06 device_id=evelite log_id=remquela log_part=toreve type=event subtype=update pri=high msg=\"dolor\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "high", - "log.offset": 16096, - "observer.product": "FortiMail", - "observer.serial_number": "evelite", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "rsa.internal.event_desc": "dolor", - "rsa.internal.messageid": "event_update", - "rsa.misc.category": "update", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "evelite", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "update", - "rsa.misc.reference_id": "remquela", - "rsa.misc.reference_id1": "toreve", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-03-17T19:35:40.000Z", - "event.action": "event", - "event.code": "lapari", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-3-17 time=17:35:40 device_id=itse log_id=lapari log_part=Bonor type=event subtype=update pri=medium msg=exeaco", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "medium", - "log.offset": 16221, - "observer.product": "FortiMail", - "observer.serial_number": "itse", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "rsa.internal.event_desc": "exeaco", - "rsa.internal.messageid": "event_update", - "rsa.misc.category": "update", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "itse", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "update", - "rsa.misc.reference_id": "lapari", - "rsa.misc.reference_id1": "Bonor", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-03-17T19:35:40.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-01T02:38:14.000Z", - "event.action": "virus_file-signature", - "event.code": "tNeq", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-4-1 time=00:38:14 device_id=emvele log_id=tNeq log_part=olorsita type=virus_file-signature pri=medium eleumiu to=etdol src=\"imadmin [10.123.154.140]\" session_id=liqu msg=dolor", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "medium", - "log.offset": 16342, - "observer.product": "FortiMail", - "observer.serial_number": "emvele", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.123.154.140" - ], - "rsa.email.email_dst": "etdol", - "rsa.email.email_src": "eleumiu", - "rsa.internal.event_desc": "dolor", - "rsa.internal.messageid": "virus_file-signature", - "rsa.misc.event_type": "virus_file-signature", - "rsa.misc.hardware_id": "emvele", - "rsa.misc.log_session_id": "liqu", - "rsa.misc.reference_id": "tNeq", - "rsa.misc.reference_id1": "olorsita", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-04-01T02:38:14.000Z", - "service.type": "fortinet", - "source.domain": "imadmin", - "source.ip": "10.123.154.140", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "event.action": "deny", - "event.code": "utem", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-4-15 time=07:40:49 device_id=aliq log_id=utem log_part=oreetd type=event subtype=imap pri=very-high user=mremape ui=ude action=deny status=emac msg=rmagnido", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "very-high", - "log.offset": 16528, - "observer.product": "FortiMail", - "observer.serial_number": "aliq", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.user": [ - "mremape" - ], - "rsa.internal.event_desc": "rmagnido", - "rsa.internal.messageid": "event_imap", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "imap", - "rsa.misc.event_state": "emac", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "aliq", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "imap", - "rsa.misc.reference_id": "utem", - "rsa.misc.reference_id1": "oreetd", - "rsa.misc.severity": "very-high", - "rsa.network.network_service": "ude", - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "mremape" - }, - { - "@timestamp": "2019-04-29T16:43:23.000Z", - "event.action": "deny", - "event.code": "cita", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-4-29 time=14:43:23 device_id=pariatur log_id=cita log_part=tvo type=event subtype=admin pri=high user=rve ui=atemacc(10.141.108.1) action=deny status=ciunt reason=success msg=\"beataevi\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "high", - "log.offset": 16695, - "observer.product": "FortiMail", - "observer.serial_number": "pariatur", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.141.108.1" - ], - "related.user": [ - "rve" - ], - "rsa.internal.event_desc": "beataevi", - "rsa.internal.messageid": "event_admin", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "admin", - "rsa.misc.event_state": "ciunt", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "pariatur", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "admin", - "rsa.misc.reference_id": "cita", - "rsa.misc.reference_id1": "tvo", - "rsa.misc.result": "success", - "rsa.misc.severity": "high", - "rsa.network.network_service": "atemacc", - "rsa.time.event_time": "2019-04-29T16:43:23.000Z", - "service.type": "fortinet", - "source.ip": "10.141.108.1", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "rve" - }, - { - "@timestamp": "2019-05-13T23:45:57.000Z", - "event.action": "cancel", - "event.code": "dmin", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-5-13 time=21:45:57 device_id=imaven log_id=dmin log_part=sum type=event subtype=system pri=low user=lore ui=nim action=cancel status=edquiac msg=psamvolu", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "low", - "log.offset": 16891, - "observer.product": "FortiMail", - "observer.serial_number": "imaven", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.user": [ - "lore" - ], - "rsa.internal.event_desc": "psamvolu", - "rsa.internal.messageid": "event_system", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "system", - "rsa.misc.event_state": "edquiac", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "imaven", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "system", - "rsa.misc.reference_id": "dmin", - "rsa.misc.reference_id1": "sum", - "rsa.misc.severity": "low", - "rsa.network.network_service": "nim", - "rsa.time.event_time": "2019-05-13T23:45:57.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "lore" - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "event.action": "deny", - "event.code": "tae", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-5-28 time=04:48:31 device_id=iade log_id=tae log_part=obe type=event subtype=admin pri=medium user=ulapari ui=rittenby(10.31.31.193) action=deny status=nvol reason=unknown msg=\"luptatem\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "medium", - "log.offset": 17055, - "observer.product": "FortiMail", - "observer.serial_number": "iade", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.31.31.193" - ], - "related.user": [ - "ulapari" - ], - "rsa.internal.event_desc": "luptatem", - "rsa.internal.messageid": "event_admin", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "admin", - "rsa.misc.event_state": "nvol", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "iade", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "admin", - "rsa.misc.reference_id": "tae", - "rsa.misc.reference_id1": "obe", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "medium", - "rsa.network.network_service": "rittenby", - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "service.type": "fortinet", - "source.ip": "10.31.31.193", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "ulapari" - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "event.action": "block", - "event.code": "ruredolo", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-6-11 time=11:51:06 device_id=conse log_id=ruredolo log_part=ati type=event subtype=system pri=low user=olors ui=roid(10.234.156.8) action=block status=uteiru msg=\"xer\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "low", - "log.offset": 17252, - "observer.product": "FortiMail", - "observer.serial_number": "conse", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.234.156.8" - ], - "related.user": [ - "olors" - ], - "rsa.internal.event_desc": "xer", - "rsa.internal.messageid": "event_system", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "system", - "rsa.misc.event_state": "uteiru", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "conse", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "system", - "rsa.misc.reference_id": "ruredolo", - "rsa.misc.reference_id1": "ati", - "rsa.misc.severity": "low", - "rsa.network.network_service": "roid", - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "service.type": "fortinet", - "source.ip": "10.234.156.8", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "olors" - }, - { - "@timestamp": "2019-06-25T20:53:40.000Z", - "event.action": "event", - "event.code": "uame", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-6-25 time=18:53:40 device_id=nvol log_id=uame log_part=quia type=event subtype=update pri=very-high msg=\"labor\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "very-high", - "log.offset": 17430, - "observer.product": "FortiMail", - "observer.serial_number": "nvol", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "rsa.internal.event_desc": "labor", - "rsa.internal.messageid": "event_update", - "rsa.misc.category": "update", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "nvol", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "update", - "rsa.misc.reference_id": "uame", - "rsa.misc.reference_id1": "quia", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-06-25T20:53:40.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "event.action": "event", - "event.code": "modit", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-7-10 time=01:56:14 device_id=mwritte log_id=modit log_part=quamnih type=event subtype=config pri=medium user=itanimid ui=uiin module=nibusBo submodule=iusm msg=\"nostru\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "medium", - "log.offset": 17552, - "observer.product": "FortiMail", - "observer.serial_number": "mwritte", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.user": [ - "itanimid" - ], - "rsa.internal.event_desc": "nostru", - "rsa.internal.messageid": "event_config", - "rsa.misc.category": "config", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "mwritte", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "config", - "rsa.misc.reference_id": "modit", - "rsa.misc.reference_id1": "quamnih", - "rsa.misc.severity": "medium", - "rsa.network.network_service": "uiin", - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "itanimid" - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "event.action": "event", - "event.code": "preh", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-7-24 time=08:58:48 device_id=vel log_id=preh log_part=madmini type=event subtype=update pri=high msg=edutpers", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "high", - "log.offset": 17731, - "observer.product": "FortiMail", - "observer.serial_number": "vel", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "rsa.internal.event_desc": "edutpers", - "rsa.internal.messageid": "event_update", - "rsa.misc.category": "update", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "vel", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "update", - "rsa.misc.reference_id": "preh", - "rsa.misc.reference_id1": "madmini", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-08-07T18:01:23.000Z", - "event.action": "virus_file-signature", - "event.code": "everi", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-8-7 time=16:01:23 device_id=sBonoru log_id=everi log_part=squ type=virus subtype=file-signature pri=medium from=\"utla\" to=nse src=10.160.236.78 session_id=nostrude msg=\"Attachment file (rinc) has sha1 hash value: tno\"", - "file.name": "rinc", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "medium", - "log.offset": 17851, - "observer.product": "FortiMail", - "observer.serial_number": "sBonoru", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.160.236.78" - ], - "rsa.email.email_dst": "nse", - "rsa.email.email_src": "utla", - "rsa.internal.messageid": "virus_file-signature", - "rsa.misc.checksum": "tno", - "rsa.misc.event_type": "virus_file-signature", - "rsa.misc.hardware_id": "sBonoru", - "rsa.misc.log_session_id": "nostrude", - "rsa.misc.msgIdPart1": "virus", - "rsa.misc.msgIdPart2": "file-signature", - "rsa.misc.reference_id": "everi", - "rsa.misc.reference_id1": "squ", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-08-07T18:01:23.000Z", - "service.type": "fortinet", - "source.ip": "10.160.236.78", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-08-22T01:03:57.000Z", - "event.action": "accept", - "event.code": "nonproi", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-8-21 time=23:03:57 device_id=cid log_id=nonproi log_part=dolor type=event subtype=admin pri=medium user=molli ui=oeiusm(10.244.19.62) action=accept status=nnumquam reason=unknown msg=\"tdolore\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "medium", - "log.offset": 18079, - "observer.product": "FortiMail", - "observer.serial_number": "cid", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.244.19.62" - ], - "related.user": [ - "molli" - ], - "rsa.internal.event_desc": "tdolore", - "rsa.internal.messageid": "event_admin", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "admin", - "rsa.misc.event_state": "nnumquam", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "cid", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "admin", - "rsa.misc.reference_id": "nonproi", - "rsa.misc.reference_id1": "dolor", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "medium", - "rsa.network.network_service": "oeiusm", - "rsa.time.event_time": "2019-08-22T01:03:57.000Z", - "service.type": "fortinet", - "source.ip": "10.244.19.62", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "molli" - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "event.action": "allow", - "event.code": "epteu", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-9-5 time=06:06:31 device_id=icta log_id=epteu log_part=nvent type=event subtype=webmail pri=high user=mquiavol ui=odiconse(10.147.52.164) action=allow status=untutl msg=ugiatnul", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "high", - "log.offset": 18282, - "observer.product": "FortiMail", - "observer.serial_number": "icta", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.147.52.164" - ], - "related.user": [ - "mquiavol" - ], - "rsa.internal.event_desc": "ugiatnul", - "rsa.internal.messageid": "event_webmail", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "webmail", - "rsa.misc.event_state": "untutl", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "icta", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "webmail", - "rsa.misc.reference_id": "epteu", - "rsa.misc.reference_id1": "nvent", - "rsa.misc.severity": "high", - "rsa.network.network_service": "odiconse", - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "service.type": "fortinet", - "source.ip": "10.147.52.164", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "mquiavol" - }, - { - "@timestamp": "2019-09-19T15:09:05.000Z", - "destination.ip": "10.251.183.113", - "event.action": "spam", - "event.code": "elaudant", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-9-19 time=13:09:05 device_id=quaturve log_id=elaudant log_part=olup type=spam pri=high session_id=\"iacon\" client_name= \"ncu3839.www.localhost\" client_ip=\"10.201.105.58\" dst_ip=\"10.251.183.113\" from=\"ent\" to=\"ionemu\" subject=\"eseosqu\" msg=\"uptatem\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "high", - "log.offset": 18470, - "observer.product": "FortiMail", - "observer.serial_number": "quaturve", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.hosts": [ - "ncu3839.www.localhost" - ], - "related.ip": [ - "10.201.105.58", - "10.251.183.113" - ], - "rsa.email.email_dst": "ionemu", - "rsa.email.email_src": "ent", - "rsa.email.subject": "eseosqu", - "rsa.internal.event_desc": "uptatem", - "rsa.internal.messageid": "spam", - "rsa.misc.event_type": "spam", - "rsa.misc.hardware_id": "quaturve", - "rsa.misc.log_session_id": "iacon", - "rsa.misc.reference_id": "elaudant", - "rsa.misc.reference_id1": "olup", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-09-19T15:09:05.000Z", - "rsa.web.fqdn": "ncu3839.www.localhost", - "service.type": "fortinet", - "source.ip": "10.201.105.58", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-03T22:11:40.000Z", - "destination.ip": "10.132.139.98", - "event.action": "statistics", - "event.code": "oinB", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-10-3 time=20:11:40 device_id=eprehen log_id=oinB log_part=lor type=statistics pri=low session_id=\"citatio\" client_name=\"[10.209.203.156]\"dst_ip=\"10.132.139.98\" from=\"pariat\" to=\"borisnis\" direction=\"unknown\" virus=\"oremagn\" disposition=\"emagna\" classifier=\"uidolor\" message_length=remag", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "low", - "log.offset": 18728, - "network.direction": "unknown", - "observer.product": "FortiMail", - "observer.serial_number": "eprehen", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.132.139.98", - "10.209.203.156" - ], - "rsa.email.email_dst": "borisnis", - "rsa.email.email_src": "pariat", - "rsa.internal.messageid": "statistics", - "rsa.misc.disposition": "emagna", - "rsa.misc.event_type": "statistics", - "rsa.misc.filter": "uidolor", - "rsa.misc.hardware_id": "eprehen", - "rsa.misc.log_session_id": "citatio", - "rsa.misc.reference_id": "oinB", - "rsa.misc.reference_id1": "lor", - "rsa.misc.severity": "low", - "rsa.misc.virusname": "oremagn", - "rsa.time.event_time": "2019-10-03T22:11:40.000Z", - "service.type": "fortinet", - "source.ip": "10.209.203.156", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "event.action": "block", - "event.code": "ulamcola", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-10-18 time=03:14:14 device_id=tiumtot log_id=ulamcola log_part=epr type=event subtype=admin pri=low user=nculpa ui=enbyCice(10.152.196.145) action=block status=uptas reason=success msg=\"iadeseru\"", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "low", - "log.offset": 19025, - "observer.product": "FortiMail", - "observer.serial_number": "tiumtot", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.152.196.145" - ], - "related.user": [ - "nculpa" - ], - "rsa.internal.event_desc": "iadeseru", - "rsa.internal.messageid": "event_admin", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "admin", - "rsa.misc.event_state": "uptas", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "tiumtot", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "admin", - "rsa.misc.reference_id": "ulamcola", - "rsa.misc.reference_id1": "epr", - "rsa.misc.result": "success", - "rsa.misc.severity": "low", - "rsa.network.network_service": "enbyCice", - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "service.type": "fortinet", - "source.ip": "10.152.196.145", - "tags": [ - "fortinet.fortimail", - "forwarded" - ], - "user.name": "nculpa" - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "event.action": "virus_file-signature", - "event.code": "turadip", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-11-1 time=10:16:48 device_id=equ log_id=turadip log_part=ataev type=virus_file-signature pri=medium from=\"oree\" to=\"nimadmi\" src=\"utaliq [10.78.38.143]\" session_id=qui msg=\"Attachment file (epteurs) has sha1 hash value: did\"", - "file.name": "epteurs", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "medium", - "log.offset": 19231, - "observer.product": "FortiMail", - "observer.serial_number": "equ", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "related.ip": [ - "10.78.38.143" - ], - "rsa.email.email_dst": "nimadmi", - "rsa.email.email_src": "oree", - "rsa.internal.messageid": "virus_file-signature", - "rsa.misc.checksum": "did", - "rsa.misc.event_type": "virus_file-signature", - "rsa.misc.hardware_id": "equ", - "rsa.misc.log_session_id": "qui", - "rsa.misc.reference_id": "turadip", - "rsa.misc.reference_id1": "ataev", - "rsa.misc.severity": "medium", - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "service.type": "fortinet", - "source.domain": "utaliq", - "source.ip": "10.78.38.143", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-11-15T19:19:22.000Z", - "event.action": "event", - "event.code": "orumSe", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-11-15 time=17:19:22 device_id=sunt log_id=orumSe log_part=olupta type=event subtype=update pri=very-high msg=pta", - "fileset.name": "fortimail", - "input.type": "log", - "log.level": "very-high", - "log.offset": 19466, - "observer.product": "FortiMail", - "observer.serial_number": "sunt", - "observer.type": "Firewall", - "observer.vendor": "Fortinet", - "rsa.internal.event_desc": "pta", - "rsa.internal.messageid": "event_update", - "rsa.misc.category": "update", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "sunt", - "rsa.misc.msgIdPart1": "event", - "rsa.misc.msgIdPart2": "update", - "rsa.misc.reference_id": "orumSe", - "rsa.misc.reference_id1": "olupta", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2019-11-15T19:19:22.000Z", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimail", - "forwarded" - ] - }, - { - "@timestamp": "2019-11-30T02:21:57.000Z", - "event.action": "allow", - "event.code": "leumiure", - "event.dataset": "fortinet.fortimail", - "event.module": "fortinet", - "event.original": "date=2019-11-30 time=00:21:57 device_id=ntutlabo log_id=leumiure log_part=tasnu type=event subtype=smtp pri=high user=amquaui=tionevol(10.209.124.81) action=allowstatus=tobesession_id=\"ssequa\" log_part=emp msg=\"to=< - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/fortinet/fortimanager/config/input.yml b/x-pack/filebeat/module/fortinet/fortimanager/config/input.yml deleted file mode 100644 index b9d0a0ad797..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimanager/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Fortinet" - product: "FortiManager" - type: "Configuration" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/fortinet/fortimanager/config/liblogparser.js - - ${path.home}/module/fortinet/fortimanager/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/fortinet/fortimanager/config/liblogparser.js b/x-pack/filebeat/module/fortinet/fortimanager/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimanager/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} time=%{htime->} devname=%{hdevice->} device_id=%{hfld1->} log_id=%{id->} type=%{hfld2->} subtype=%{hfld3->} pri=%{hseverity->} %{payload}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.messageid", - fn: STRCAT, - args: [ - field("hfld2"), - constant("_fortinetmgr"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0002", "message", "logver=%{hfld1->} date=%{hdate->} time=%{htime->} log_id=%{id->} %{payload}", processor_chain([ - setc("header_id","0002"), - dup1, -])); - -var hdr3 = match("HEADER#2:0003", "message", "date=%{hdate->} time=%{htime->} logver=%{fld1->} %{payload}", processor_chain([ - setc("header_id","0003"), - dup1, -])); - -var hdr4 = match("HEADER#3:0004", "message", "logver=%{hfld1->} dtime=%{hdatetime->} devid=%{hfld2->} devname=%{hdevice->} %{payload}", processor_chain([ - setc("header_id","0004"), - dup2, -])); - -var hdr5 = match("HEADER#4:0005", "message", "logver=%{hfld1->} devname=\"%{hdevice}\" devid=\"%{hfld2}\" %{payload}", processor_chain([ - setc("header_id","0005"), - dup2, -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, - hdr5, -]); - -var part1 = match("MESSAGE#0:fortinetmgr:01", "nwparser.payload", "user=%{fld1->} adom=%{domain->} user=%{username->} ui=%{fld2->} action=%{action->} status=%{event_state->} msg=\"%{event_description}\"", processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, -])); - -var msg1 = msg("fortinetmgr:01", part1); - -var part2 = match("MESSAGE#1:fortinetmgr", "nwparser.payload", "user=%{username->} adom=%{domain->} msg=\"%{event_description}\"", processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, -])); - -var msg2 = msg("fortinetmgr", part2); - -var part3 = match("MESSAGE#2:fortinetmgr:04/0", "nwparser.payload", "user=\"%{username}\" userfrom=%{fld7->} msg=\"%{p0}"); - -var part4 = match("MESSAGE#2:fortinetmgr:04/1_0", "nwparser.p0", "User%{p0}"); - -var part5 = match("MESSAGE#2:fortinetmgr:04/1_1", "nwparser.p0", "user%{p0}"); - -var select2 = linear_select([ - part4, - part5, -]); - -var part6 = match("MESSAGE#2:fortinetmgr:04/2", "nwparser.p0", "%{}'%{fld3}' with profile '%{fld4}' %{fld5->} from %{fld6}(%{hostip})%{p0}"); - -var part7 = match("MESSAGE#2:fortinetmgr:04/3_0", "nwparser.p0", ".\"%{p0}"); - -var part8 = match("MESSAGE#2:fortinetmgr:04/3_1", "nwparser.p0", "\"%{p0}"); - -var select3 = linear_select([ - part7, - part8, -]); - -var part9 = match("MESSAGE#2:fortinetmgr:04/4", "nwparser.p0", "%{}adminprof=%{p0}"); - -var part10 = match("MESSAGE#2:fortinetmgr:04/5_0", "nwparser.p0", "%{fld2->} sid=%{sid->} user_type=\"%{profile}\""); - -var part11 = match_copy("MESSAGE#2:fortinetmgr:04/5_1", "nwparser.p0", "fld2"); - -var select4 = linear_select([ - part10, - part11, -]); - -var all1 = all_match({ - processors: [ - part3, - select2, - part6, - select3, - part9, - select4, - ], - on_success: processor_chain([ - dup11, - dup4, - lookup({ - dest: "nwparser.event_cat", - map: map_getEventLegacyCategory, - key: field("fld5"), - }), - dup22, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - ]), -}); - -var msg3 = msg("fortinetmgr:04", all1); - -var part12 = match("MESSAGE#3:fortinetmgr:02", "nwparser.payload", "user=%{username->} userfrom=%{fld4->} msg=\"%{event_description}\" adminprof=%{fld2}", processor_chain([ - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, -])); - -var msg4 = msg("fortinetmgr:02", part12); - -var part13 = match("MESSAGE#4:fortinetmgr:03", "nwparser.payload", "user=\"%{username}\" msg=\"Login from ssh:%{fld1->} for %{fld2->} from %{saddr->} port %{sport}\" remote_ip=\"%{daddr}\" remote_port=%{dport->} valid=%{fld3->} authmsg=\"%{result}\" extrainfo=%{fld5}", processor_chain([ - dup11, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - lookup({ - dest: "nwparser.event_cat", - map: map_getEventLegacyCategory, - key: field("result"), - }), - dup22, -])); - -var msg5 = msg("fortinetmgr:03", part13); - -var part14 = match("MESSAGE#5:fortinetmgr:05/0", "nwparser.payload", "user=\"%{username}\" userfrom=\"%{fld1}\"msg=\"%{p0}"); - -var part15 = match("MESSAGE#5:fortinetmgr:05/1_0", "nwparser.p0", "dev=%{fld2},vdom=%{fld3},type=%{fld4},key=%{fld5},act=%{action},pkgname=%{fld7},allowaccess=%{fld8}\"%{p0}"); - -var part16 = match("MESSAGE#5:fortinetmgr:05/1_1", "nwparser.p0", "%{event_description}\"%{p0}"); - -var select5 = linear_select([ - part15, - part16, -]); - -var part17 = match("MESSAGE#5:fortinetmgr:05/2", "nwparser.p0", "%{domain}\" adom=\""); - -var all2 = all_match({ - processors: [ - part14, - select5, - part17, - ], - on_success: processor_chain([ - dup13, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - ]), -}); - -var msg6 = msg("fortinetmgr:05", all2); - -var part18 = tagval("MESSAGE#6:event_fortinetmgr_tvm", "nwparser.payload", tvm, { - "action": "action", - "adom": "domain", - "desc": "event_description", - "msg": "info", - "session_id": "sessionid", - "user": "username", - "userfrom": "fld1", -}, processor_chain([ - dup11, - dup4, - dup5, - dup6, - dup7, - setf("event_type","hfld2"), - dup9, - dup10, -])); - -var msg7 = msg("event_fortinetmgr_tvm", part18); - -var select6 = linear_select([ - msg1, - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, -]); - -var part19 = tagval("MESSAGE#7:generic_fortinetmgr", "nwparser.payload", tvm, { - "action": "action", - "adminprof": "fld13", - "cat": "fcatnum", - "catdesc": "filter", - "cipher_suite": "fld24", - "content_switch_name": "fld15", - "craction": "fld9", - "crlevel": "fld10", - "crscore": "reputation_num", - "dev_id": "fld100", - "device_id": "hardware_id", - "devid": "hardware_id", - "devname": "event_source", - "devtype": "fld7", - "direction": "direction", - "dst": "daddr", - "dst_port": "dport", - "dstintf": "dinterface", - "dstip": "daddr", - "dstport": "dport", - "duration": "duration", - "eventtype": "vendor_event_cat", - "false_positive_mitigation": "fld17", - "ftp_cmd": "fld23", - "ftp_mode": "fld22", - "history_threat_weight": "fld21", - "hostname": "hostname", - "http_agent": "agent", - "http_host": "web_ref_domain", - "http_method": "web_method", - "http_refer": "web_referer", - "http_session_id": "sessionid", - "http_url": "web_query", - "http_version": "fld19", - "level": "severity", - "log_id": "id", - "logid": "id", - "main_type": "fld37", - "mastersrcmac": "fld8", - "method": "fld12", - "monitor_status": "fld18", - "msg": "event_description", - "msg_id": "fld25", - "osname": "os", - "osversion": "version", - "policy": "policyname", - "policyid": "policy_id", - "poluuid": "fld5", - "pri": "severity", - "profile": "rulename", - "proto": "fld6", - "rcvdbyte": "rbytes", - "reqtype": "fld11", - "sentbyte": "sbytes", - "server_pool_name": "fld16", - "service": "network_service", - "sessionid": "sessionid", - "severity_level": "fld101", - "signature_id": "sigid", - "signature_subclass": "fld14", - "src": "saddr", - "src_port": "sport", - "srccountry": "location_src", - "srcintf": "sinterface", - "srcip": "saddr", - "srcmac": "smacaddr", - "srcport": "sport", - "sub_type": "category", - "subtype": "category", - "threat_level": "threat_val", - "threat_weight": "fld20", - "timezone": "timezone", - "trandisp": "context", - "trigger_policy": "fld39", - "type": "event_type", - "url": "url", - "user": "username", - "user_name": "username", - "userfrom": "fld30", - "vd": "vsys", -}, processor_chain([ - dup13, - dup4, - dup5, - dup14, - dup23, -])); - -var msg8 = msg("generic_fortinetmgr", part19); - -var part20 = tagval("MESSAGE#8:generic_fortinetmgr_1", "nwparser.payload", tvm, { - "action": "action", - "app": "obj_name", - "appcat": "fld33", - "craction": "fld9", - "crlevel": "fld10", - "crscore": "reputation_num", - "date": "fld1", - "dstcountry": "location_dst", - "dstintf": "dinterface", - "dstintfrole": "fld31", - "dstip": "daddr", - "dstport": "dport", - "duration": "duration", - "eventtime": "event_time_string", - "level": "severity", - "logid": "id", - "logtime": "fld35", - "policyid": "policy_id", - "policytype": "fld34", - "poluuid": "fld5", - "proto": "fld6", - "rcvdbyte": "rbytes", - "sentbyte": "sbytes", - "sentpkt": "fld15", - "service": "network_service", - "sessionid": "sessionid", - "srccountry": "location_src", - "srcintf": "sinterface", - "srcintfrole": "fld30", - "srcip": "saddr", - "srcport": "sport", - "subtype": "category", - "time": "fld2", - "trandisp": "context", - "tranip": "dtransaddr", - "tranport": "dtransport", - "type": "event_type", - "vd": "vsys", -}, processor_chain([ - dup13, - dup4, - date_time({ - dest: "event_time", - args: ["fld1","fld2"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dN,dc(":"),dU,dc(":"),dO], - ], - }), - dup6, - setf("hardware_id","hfld2"), - dup14, - dup23, -])); - -var msg9 = msg("generic_fortinetmgr_1", part20); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "event_fortinetmgr": select6, - "generic_fortinetmgr": msg8, - "generic_fortinetmgr_1": msg9, - }), -]); diff --git a/x-pack/filebeat/module/fortinet/fortimanager/ingest/pipeline.yml b/x-pack/filebeat/module/fortinet/fortimanager/ingest/pipeline.yml deleted file mode 100644 index 146ed98dc9a..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimanager/ingest/pipeline.yml +++ /dev/null @@ -1,93 +0,0 @@ ---- -description: Pipeline for Fortinet Manager/Analyzer - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # Serial Number - - set: - field: observer.serial_number - value: "{{rsa.misc.hardware_id}}" - ignore_empty_value: true - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/fortinet/fortimanager/manifest.yml b/x-pack/filebeat/module/fortinet/fortimanager/manifest.yml deleted file mode 100644 index 97a401f008c..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimanager/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["fortinet.fortimanager", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9546 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/fortinet/fortimanager/test/generated.log b/x-pack/filebeat/module/fortinet/fortimanager/test/generated.log deleted file mode 100644 index 7da64dddce2..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimanager/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -logver=iusm devname="modtempo" devid="olab" vd=nto date=2016-1-29 time=6:09:59 logid=sse type=exercita subtype=der level=very-high eventtime=odoco logtime=ria srcip=10.20.234.169 srcport=1001 srcintf=eth5722 srcintfrole=vol dstip=10.44.173.44 dstport=6125 dstintf=enp0s3068 dstintfrole=nseq poluuid=itinvol sessionid=psa proto=21 action=allow policyid=ntium policytype=psaq crscore=13.800000 craction=eab crlevel=aliqu appcat=Ute service=lupt srccountry=dolore dstcountry=sequa trandisp=abo tranip=10.189.58.145 tranport=5273 duration=14.119000 sentbyte=7880 rcvdbyte=449 sentpkt=mqui app=nci -date=2016-2-12 time=1:12:33 logver=litesse devid=orev devname=pisciv logid=uii type=umexe subtype=estlabo level=high vd=iatnu srcip=10.182.84.248 srcport=4880 srcintf=enp0s208 dstip=10.162.33.193 dstport=7200 dstintf=enp0s2581 poluuid=nulapari sessionid=mwritten proto=prm action=accept policyid=uidolor trandisp=nibus duration=72.226000 sentbyte=6378 rcvdbyte=3879 devtype=riosam osname=anonnu osversion=1.410 mastersrcmac=ameaqu srcmac=01:00:5e:84:66:6c crscore=145.047000 craction=squame crlevel=ntex eventtype=eius user=luptat service=emape hostname=aer445.host profile=eumiu reqtype=uame url=https://www.example.net/orisn/cca.htm?ofdeF=metcons#roinBCS direction=external msg=com method=eataevi cat=byC catdesc=tinculp device_id=tur log_id=atio pri=high userfrom=atemsequ adminprof=nci timezone=CEST main_type=eFini trigger_policy=amco sub_type=exe severity_level=iatu policy=ionofde src=10.62.4.246 src_port=189 dst=10.171.204.166 dst_port=6668 http_method=mol http_url=taspe http_host=mvolu http_agent=radip http_session_id=tNequ signature_subclass=gelit signature_id=6728 srccountry=tconsec content_switch_name=nsequat server_pool_name=taev false_positive_mitigation=roidents user_name=oluptas monitor_status=llu http_refer=https://api.example.org/tamremap/tur.html?radipis=isetq#estqui http_version=uasiarch dev_id=emaper threat_weight=ssitasp history_threat_weight=eum threat_level=sum ftp_mode=uaerat ftp_cmd=boreet cipher_suite=onev msg_id=tenima -logver=seq dtime=2016-02-26 20:15:08.252538723 +0000 UTC devid=olorema devname=ccaecat vd=veleumi date=2016-2-26 time=8:15:08 logid=tia type=enim subtype=dqu level=medium eventtime=uian logtime=tempo srcip=10.200.188.142 srcport=4665 srcintf=eth4496 srcintfrole=eetd dstip=10.94.103.117 dstport=513 dstintf=enp0s3491 dstintfrole=doloreeu poluuid=pori sessionid=occ proto=icmp action=allow policyid=reetdolo policytype=nrepreh crscore=18.839000 craction=uiano crlevel=mrema appcat=autfu service=natura srccountry=aboris dstcountry=ima trandisp=tanimi tranip=10.15.159.80 tranport=6378 duration=121.916000 sentbyte=6517 rcvdbyte=13 sentpkt=ugiatqu app=eacomm -logver=liqu devname="lorem" devid="emq" vd=isiu date=2016-3-12 time=3:17:42 logid=nimadmi type=iatisu subtype=iat level=low eventtime=suntinc logtime=elits srcip=10.131.233.27 srcport=5037 srcintf=eth3676 srcintfrole=eataevit dstip=10.50.112.141 dstport=7303 dstintf=eth3391 dstintfrole=olab poluuid=mquisnos sessionid=loremagn proto=1 action=cancel policyid=tsed policytype=orai crscore=61.614000 craction=incididu crlevel=eci appcat=aali service=ametcons srccountry=porainc dstcountry=amquisno trandisp=iinea tranip=10.27.88.95 tranport=776 duration=5.911000 sentbyte=1147 rcvdbyte=3269 sentpkt=tvol app=moll -date=2016-3-26 time=10:20:16 logver=inim devid=ema devname=roinBCSe logid=onse type=tae subtype=tatno level=very-high vd=oluptate srcip=10.52.54.178 srcport=4427 srcintf=lo1567 dstip=10.37.58.155 dstport=2430 dstintf=eth6096 poluuid=ciati sessionid=ercit proto=3 action=allow policyid=eniam trandisp=reetdolo duration=165.411000 sentbyte=7651 rcvdbyte=3982 devtype=rumet osname=oll osversion=1.5670 mastersrcmac=nido srcmac=01:00:5e:c3:0a:41 crscore=71.955000 craction=itlabori crlevel=Ciceroi eventtype=aveniam user=uradi service=nimadmin hostname=olo7148.mail.home profile=snulapar reqtype=aedic url=https://api.example.com/iumto/aboreetd.gif?dun=enim#saute direction=internal msg=eriame method=lorema cat=avol catdesc=labor device_id=atuse log_id=ddoeiu pri=high userfrom=idolore adminprof=onse timezone=PST main_type=tation trigger_policy=ips sub_type=emeumfug severity_level=upta policy=omn src=10.87.212.179 src_port=1758 dst=10.157.213.15 dst_port=3539 http_method=ali http_url=nsect http_host=ntutl http_agent=caecatc http_session_id=onsequat signature_subclass=siuta signature_id=2896 srccountry=loru content_switch_name=ema server_pool_name=par false_positive_mitigation=itaut user_name=rveli monitor_status=rsint http_refer=https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf http_version=antiumto dev_id=strude threat_weight=ctetura history_threat_weight=usmod threat_level=edqui ftp_mode=mquidol ftp_cmd=ita cipher_suite=ipi msg_id=rsitamet -date=2016-4-9 time=5:22:51 logver=eseru devid=remeum devname=orain logid=quip type=oin subtype=uisquam level=high vd=tinvol srcip=10.19.68.92 srcport=1409 srcintf=enp0s33 dstip=10.38.22.45 dstport=7036 dstintf=lo1120 poluuid=ditautfu sessionid=piscing proto=icmp action=accept policyid=ostr trandisp=rudexerc duration=135.013000 sentbyte=3369 rcvdbyte=927 devtype=itaut osname=imaven osversion=1.152 mastersrcmac=umdolo srcmac=01:00:5e:f7:4a:fd crscore=169.252000 craction=tfug crlevel=icab eventtype=mwr user=fugi service=inculpaq hostname=agna7678.internal.host profile=equa reqtype=mexercit url=https://www.example.net/tasuntex/sunt.txt?ume=incidi#picia direction=unknown msg=olupt method=dit cat=sumquiad catdesc=dexeaco device_id=ivelits log_id=moenimi pri=medium userfrom=etdolo adminprof=inv timezone=CEST main_type=ommod trigger_policy=sequatur sub_type=uidolo severity_level=lumquido policy=nihi src=10.114.150.67 src_port=1407 dst=10.76.73.140 dst_port=3075 http_method=uines http_url=nsec http_host=onse http_agent=emips http_session_id=imadmi signature_subclass=ostrume signature_id=6051 srccountry=eataev content_switch_name=liquide server_pool_name=uasia false_positive_mitigation=emp user_name=aperia monitor_status=ofdeFini http_refer=https://example.org/vol/riat.htm?atvol=umiur#imad http_version=msequi dev_id=isnostru threat_weight=iquaUten history_threat_weight=santium threat_level=iciatisu ftp_mode=rehender ftp_cmd=eporroqu cipher_suite=uat msg_id=tem -logver=suntinc date=2016-4-24 time=12:25:25 log_id=xeac devid=nidolo devname=tatn logid=eli type=nnu subtype=dolo level=low vd=nse srcip=10.202.204.239 srcport=7783 srcintf=lo2857 dstip=10.147.28.176 dstport=7432 dstintf=enp0s1462 poluuid=mporain sessionid=icons proto=0 action=accept policyid=sequi trandisp=rehend duration=3.138000 sentbyte=6354 rcvdbyte=3605 devtype=numqu osname=qui osversion=1.4059 mastersrcmac=equi srcmac=01:00:5e:68:86:a1 crscore=72.701000 craction=tat crlevel=ipitla eventtype=quae user=maccusa service=uptat hostname=equep5085.mail.domain profile=aqu reqtype=rpo url=https://www.example.org/inesci/serror.html?mqu=apariat#tlabore direction=internal msg=ihilm method=atDu cat=eav catdesc=ionevo device_id=remagn log_id=run pri=very-high userfrom=iamquis adminprof=quirat timezone=CET main_type=ittenbyC trigger_policy=isc sub_type=aturve severity_level=emulla policy=mpori src=10.195.36.51 src_port=3905 dst=10.95.64.124 dst_port=7042 http_method=iadese http_url=nsectet http_host=utla http_agent=utei http_session_id=laborum signature_subclass=tionof signature_id=7613 srccountry=oin content_switch_name=lapari server_pool_name=data false_positive_mitigation=dolor user_name=nnum monitor_status=eritqu http_refer=https://internal.example.net/wri/bor.jpg?hitect=dol#leumiu http_version=namali dev_id=taevit threat_weight=rinrepre history_threat_weight=etconse threat_level=tincu ftp_mode=ari ftp_cmd=exercit cipher_suite=sci msg_id=quamnih -logver=occae dtime=2016-05-08 07:27:59.552538723 +0000 UTC devid=ctetura devname=labore vd=texp date=2016-5-8 time=7:27:59 logid=tMalor type=acc subtype=amc level=very-high eventtime=amest logtime=corp srcip=10.176.216.90 srcport=2428 srcintf=eth2591 srcintfrole=dantiumt dstip=10.186.85.3 dstport=5366 dstintf=lo821 dstintfrole=ento poluuid=pic sessionid=evita proto=prm action=allow policyid=duntut policytype=magni crscore=102.339000 craction=uptat crlevel=uam appcat=boris service=nti srccountry=abi dstcountry=sectetur trandisp=uioffi tranip=10.114.16.155 tranport=1608 duration=62.941000 sentbyte=5110 rcvdbyte=3818 sentpkt=ipi app=reseos -logver=mcolab date=2016-5-22 time=2:30:33 log_id=neav devid=oquisqu devname=sperna logid=eabilloi type=estia subtype=tper level=very-high vd=volupt srcip=10.188.169.107 srcport=2138 srcintf=eth6448 dstip=10.214.7.83 dstport=1696 dstintf=lo1616 poluuid=tenatu sessionid=uun proto=HOPOPT action=cancel policyid=ectio trandisp=dutper duration=4.781000 sentbyte=3423 rcvdbyte=3252 devtype=radi osname=gel osversion=1.3917 mastersrcmac=iduntu srcmac=01:00:5e:21:f5:0a crscore=57.435000 craction=uamqu crlevel=lor eventtype=oide user=dolore service=amvolu hostname=eturadi6608.mail.host profile=aera reqtype=ate url=https://api.example.com/nimid/itatione.htm?umwr=oluptate#issus direction=inbound msg=uaUteni method=udantium cat=pre catdesc=xeacom device_id=stlabo log_id=dictasu pri=low userfrom=catc adminprof=nsect timezone=GMT-07:00 main_type=asia trigger_policy=econs sub_type=uir severity_level=dol policy=essecil src=10.23.62.94 src_port=4368 dst=10.61.163.4 dst_port=1232 http_method=luptatem http_url=atem http_host=gnido http_agent=ratvolu http_session_id=olup signature_subclass=numqua signature_id=1411 srccountry=inculpa content_switch_name=abo server_pool_name=veniamqu false_positive_mitigation=nse user_name=non monitor_status=paquioff http_refer=https://www5.example.org/maven/hende.jpg?labor=didunt#uptatema http_version=intocc dev_id=liqu threat_weight=eporr history_threat_weight=xeacomm threat_level=mveleu ftp_mode=nofdeFin ftp_cmd=sequam cipher_suite=temvel msg_id=ris -date=2016-6-5 time=9:33:08 logver=nisiuta devid=tvolu devname=ecte logid=tinvolu type=iurer subtype=iciadese level=medium vd=gnaaliq srcip=10.52.135.156 srcport=2660 srcintf=eth4502 dstip=10.133.89.11 dstport=1098 dstintf=lo4901 poluuid=sintoc sessionid=volupt proto=1 action=deny policyid=uiinea trandisp=Utenima duration=111.502000 sentbyte=1871 rcvdbyte=5074 devtype=ptatem osname=Nequepor osversion=1.2580 mastersrcmac=ugiatnu srcmac=01:00:5e:4a:7f:b8 crscore=103.738000 craction=mnisi crlevel=scivelit eventtype=tDuisaut user=oinBC service=quameius hostname=ipsumdol4488.api.localdomain profile=ommodico reqtype=ptas url=https://example.com/tetu/stru.htm?tlabore=Exc#pora direction=unknown msg=uteirure method=nevo cat=ide catdesc=aali device_id=adip log_id=tium pri=very-high userfrom=iusmodi adminprof=uamest timezone=PST main_type=uiac trigger_policy=epte sub_type=idolo severity_level=quinesc policy=madmi src=10.28.76.42 src_port=3427 dst=10.106.31.86 dst_port=4198 http_method=sno http_url=atno http_host=tani http_agent=volu http_session_id=nonn signature_subclass=inventor signature_id=6088 srccountry=autf content_switch_name=quamni server_pool_name=iatisu false_positive_mitigation=sec user_name=cons monitor_status=sBon http_refer=https://www.example.com/tae/ccaec.htm?aperiame=isc#ullamcor http_version=tobea dev_id=tor threat_weight=qui history_threat_weight=ntmollit threat_level=tenatus ftp_mode=cipitlab ftp_cmd=ipsumd cipher_suite=antiu msg_id=uirati -logver=ersp dtime=2016-06-20 04:35:42.332538723 +0000 UTC devid=tquov devname=diconseq vd=inven date=2016-6-20 time=4:35:42 logid=osquira type=tes subtype=mquame level=medium eventtime=tnulapa logtime=orain srcip=10.238.164.74 srcport=2201 srcintf=lo4249 srcintfrole=madmi dstip=10.106.162.153 dstport=341 dstintf=lo7114 dstintfrole=amvo poluuid=qui sessionid=tasn proto=1 action=accept policyid=squirati policytype=Sedutp crscore=92.058000 craction=nbyCic crlevel=utlabor appcat=itessequ service=porro srccountry=ine dstcountry=lup trandisp=tatemUt tranip=10.58.214.16 tranport=508 duration=166.566000 sentbyte=2715 rcvdbyte=7130 sentpkt=pici app=abor -logver=tquiin dtime=2016-07-04 11:38:16.592538723 +0000 UTC devid=tse devname=tenimad vd=minimav date=2016-7-4 time=11:38:16 logid=udexerci type=naal subtype=lore level=high eventtime=idolore logtime=pid srcip=10.225.141.20 srcport=2282 srcintf=enp0s4046 srcintfrole=natuse dstip=10.217.150.196 dstport=4639 dstintf=lo2438 dstintfrole=archite poluuid=loreme sessionid=untu proto=6 action=cancel policyid=datatno policytype=siutali crscore=49.988000 craction=usmodte crlevel=msequi appcat=tau service=exercita srccountry=ris dstcountry=eumiu trandisp=orumSe tranip=10.110.31.190 tranport=945 duration=12.946000 sentbyte=248 rcvdbyte=5300 sentpkt=eeufugia app=evit -date=2016-7-18 time=6:40:50 devname=molli device_id=velitse log_id=oditem type=generic subtype=gitsedqu pri=very-high devid=oremi devname=mestq logid=temUt type=olor subtype=ineavo level=very-high vd=mquelau srcip=10.168.236.85 srcport=6846 srcintf=eth651 dstip=10.140.113.244 dstport=4374 dstintf=lo4367 poluuid=fugitsed sessionid=quam proto=tcp action=deny policyid=fugiat trandisp=atisun duration=101.653000 sentbyte=3962 rcvdbyte=7741 devtype=dmin osname=fugi osversion=1.3319 mastersrcmac=inci srcmac=01:00:5e:e6:ad:ae crscore=39.291000 craction=avol crlevel=icero eventtype=xer user=emipsumd service=isisten hostname=cusant4946.www.domain profile=itecto reqtype=reetdol url=https://api.example.com/isnostr/umqu.htm?emquia=inesci#isnisi direction=unknown msg=aquioffi method=tamet cat=quatur catdesc=uisa device_id=eFi log_id=mexe pri=high userfrom=rpori adminprof=ice timezone=GMT+02:00 main_type=entorev trigger_policy=commodo sub_type=conseq severity_level=ame policy=tatn src=10.137.56.173 src_port=3932 dst=10.69.103.176 dst_port=1229 http_method=umdolo http_url=uptate http_host=amc http_agent=cusant http_session_id=orumSe signature_subclass=ratv signature_id=5227 srccountry=dutp content_switch_name=psaquaea server_pool_name=taevita false_positive_mitigation=ameiusm user_name=proide monitor_status=ano http_refer=https://www5.example.org/tvol/velitess.htm?edqui=nre#veli http_version=volupta dev_id=rnatu threat_weight=elitse history_threat_weight=ima threat_level=quasia ftp_mode=adi ftp_cmd=umwrit cipher_suite=uptate msg_id=mac -logver=dolore devname="onsecte" devid="nBCSedut" vd=ugiat date=2016-8-2 time=1:43:25 logid=onulam type=ate subtype=odoconse level=high eventtime=quatu logtime=veli srcip=10.30.47.165 srcport=631 srcintf=eth267 srcintfrole=sectet dstip=10.5.235.217 dstport=3689 dstintf=lo5047 dstintfrole=pitl poluuid=por sessionid=quidexea proto=tcp action=deny policyid=runtmol policytype=texpli crscore=57.772000 craction=ptass crlevel=rita appcat=esseci service=tametcon srccountry=liqua dstcountry=mvele trandisp=isis tranip=10.25.212.118 tranport=1190 duration=179.686000 sentbyte=238 rcvdbyte=7122 sentpkt=dantium app=lor -date=2016-8-16 time=8:45:59 logver=onemulla devid=dolorem devname=tvolu logid=nreprehe type=tetu subtype=mdol level=high vd=nby srcip=10.20.26.210 srcport=2791 srcintf=eth5968 dstip=10.85.96.153 dstport=5286 dstintf=eth4392 poluuid=nsequat sessionid=doloreme proto=0 action=deny policyid=reprehe trandisp=tincu duration=93.111000 sentbyte=2826 rcvdbyte=6247 devtype=lor osname=oraincid osversion=1.225 mastersrcmac=emeumfug srcmac=01:00:5e:1d:39:39 crscore=114.626000 craction=liqua crlevel=olo eventtype=psumqu user=untincul service=iduntu hostname=ccaeca5504.internal.example profile=reseo reqtype=oreetd url=https://example.org/tiaec/rumwrit.txt?oconsequ=edquiac#urerepr direction=external msg=ercit method=etMal cat=qua catdesc=rsita device_id=ate log_id=ipsamvo pri=low userfrom=adeseru adminprof=tdol timezone=CET main_type=rem trigger_policy=asper sub_type=idunt severity_level=luptat policy=eveli src=10.149.13.76 src_port=7809 dst=10.40.152.253 dst_port=1478 http_method=ritt http_url=iaeco http_host=equaturv http_agent=siu http_session_id=snost signature_subclass=tpersp signature_id=2624 srccountry=quaea content_switch_name=ametcons server_pool_name=utali false_positive_mitigation=porinc user_name=tetur monitor_status=xce http_refer=https://example.com/aincidu/nimadmin.jpg?itinv=eumfugi#etdolor http_version=lupta dev_id=xeaco threat_weight=nvolupt history_threat_weight=oremi threat_level=elites ftp_mode=nbyCi ftp_cmd=tevel cipher_suite=usc msg_id=rem -logver=cab dtime=2016-08-30 15:48:33.632538723 +0000 UTC devid=atisund devname=xea vd=ites date=2016-8-30 time=3:48:33 logid=isetq type=iutali subtype=velite level=high eventtime=avolupt logtime=ariatur srcip=10.98.194.212 srcport=5469 srcintf=lo1208 srcintfrole=atisetqu dstip=10.51.213.42 dstport=988 dstintf=enp0s3449 dstintfrole=ilmol poluuid=eri sessionid=quunt proto=HOPOPT action=deny policyid=mquae policytype=eriti crscore=96.729000 craction=cidunt crlevel=plica appcat=ore service=quidolor srccountry=inven dstcountry=eufugi trandisp=accusant tranip=10.233.120.207 tranport=136 duration=171.844000 sentbyte=2859 rcvdbyte=4844 sentpkt=eaqu app=nvol -logver=leumiu devname="tla" devid="item" vd=nimid date=2016-9-13 time=10:51:07 logid=dat type=periam subtype=dqu level=high eventtime=dminima logtime=dutpers srcip=10.245.187.229 srcport=4953 srcintf=lo3642 srcintfrole=prehen dstip=10.67.132.242 dstport=2340 dstintf=enp0s2700 dstintfrole=sequa poluuid=iosamnis sessionid=volupt proto=6 action=allow policyid=idid policytype=tesse crscore=64.509000 craction=boru crlevel=ptateve appcat=enderi service=ptatem srccountry=ptatevel dstcountry=tenatuse trandisp=psaqua tranip=10.241.132.176 tranport=7224 duration=167.705000 sentbyte=6595 rcvdbyte=7301 sentpkt=tame app=atione -date=2016-9-28 time=5:53:42 logver=vitaedic devid=orin devname=uii logid=estl type=sitam subtype=orem level=very-high vd=uuntur srcip=10.210.28.247 srcport=3449 srcintf=eth4185 dstip=10.237.180.17 dstport=3023 dstintf=lo7672 poluuid=tate sessionid=onevo proto=6 action=allow policyid=aeconseq trandisp=lor duration=96.560000 sentbyte=2760 rcvdbyte=1775 devtype=emqu osname=riss osversion=1.1847 mastersrcmac=sitvol srcmac=01:00:5e:a5:5a:54 crscore=129.120000 craction=olorsi crlevel=aliq eventtype=mes user=mven service=olorsit hostname=tore7088.www.invalid profile=ruredo reqtype=mac url=https://mail.example.org/ptassita/its.gif?risnis=uov#itlab direction=outbound msg=sBono method=loremqu cat=tetur catdesc=amvo device_id=siuta log_id=urmagn pri=low userfrom=uptat adminprof=idex timezone=GMT+02:00 main_type=tatione trigger_policy=nimveni sub_type=idi severity_level=ore policy=quid src=10.212.214.4 src_port=6040 dst=10.199.47.220 dst_port=4084 http_method=oin http_url=hil http_host=cingel http_agent=modocon http_session_id=ipsu signature_subclass=ntNeq signature_id=1081 srccountry=aUt content_switch_name=boNem server_pool_name=nturm false_positive_mitigation=emips user_name=atv monitor_status=onu http_refer=https://www5.example.net/alorum/obeataev.gif?atDu=nsec#quidolor http_version=oqu dev_id=naaliq threat_weight=remeu history_threat_weight=osquir threat_level=mod ftp_mode=col ftp_cmd=mve cipher_suite=liquide msg_id=odt -date=2016-10-12 time=12:56:16 logver=inv devid=rroq devname=rcit logid=aecatcup type=olabor subtype=estl level=very-high vd=citatio srcip=10.168.40.197 srcport=7699 srcintf=enp0s3071 dstip=10.206.69.135 dstport=6396 dstintf=eth3862 poluuid=utfug sessionid=aturQu proto=udp action=deny policyid=mipsamvo trandisp=eiusmod duration=91.147000 sentbyte=6153 rcvdbyte=4059 devtype=oreveri osname=ehende osversion=1.760 mastersrcmac=Except srcmac=01:00:5e:bf:07:ee crscore=45.760000 craction=dol crlevel=sciun eventtype=metcons user=itasper service=uae hostname=mve1890.internal.home profile=tatemU reqtype=mad url=https://www.example.org/redol/gnaa.htm?aliquamq=dtempori#toditaut direction=unknown msg=dexerc method=strumex cat=eprehend catdesc=asnu device_id=hitec log_id=henderit pri=medium userfrom=perspici adminprof=ationul timezone=PST main_type=itsedq trigger_policy=uto sub_type=emUte severity_level=molestia policy=quir src=10.46.56.204 src_port=2463 dst=10.234.165.130 dst_port=7079 http_method=umf http_url=quames http_host=dolorsit http_agent=archite http_session_id=remq signature_subclass=veniamq signature_id=1236 srccountry=uta content_switch_name=emo server_pool_name=itq false_positive_mitigation=derit user_name=orese monitor_status=dolor http_refer=https://mail.example.com/ntexpl/dunt.jpg?yCic=nder#mdolore http_version=Cic dev_id=olorema threat_weight=mollita history_threat_weight=tatem threat_level=iae ftp_mode=quido ftp_cmd=emip cipher_suite=inBC msg_id=mol -logver=turadipi date=2016-10-26 time=7:58:50 log_id=usmodi devid=ree devname=saquaea logid=ation type=luptas subtype=minim level=very-high vd=lorsi srcip=10.61.123.159 srcport=754 srcintf=eth7713 dstip=10.141.158.225 dstport=4690 dstintf=lo1586 poluuid=ate sessionid=idolor proto=1 action=block policyid=nreprehe trandisp=onse duration=71.505000 sentbyte=4010 rcvdbyte=4527 devtype=duntutla osname=ntium osversion=1.4450 mastersrcmac=asuntexp srcmac=01:00:5e:26:56:73 crscore=5.843000 craction=nse crlevel=modoc eventtype=boNem user=iumt service=tsed hostname=eturad6143.www.home profile=uamnihil reqtype=llam url=https://example.net/aparia/tatnon.jpg?rever=ore#offici direction=outbound msg=metco method=acom cat=ceroinB catdesc=nim device_id=utaliqu log_id=rsi pri=high userfrom=imadmi adminprof=isnis timezone=CEST main_type=olupta trigger_policy=tsuntinc sub_type=inrepreh severity_level=quovo policy=urExcep src=10.128.46.70 src_port=5269 dst=10.95.117.134 dst_port=1723 http_method=acommodi http_url=essecill http_host=billoi http_agent=moles http_session_id=dipiscin signature_subclass=olup signature_id=5976 srccountry=undeomni content_switch_name=accusa server_pool_name=natu false_positive_mitigation=liquid user_name=enim monitor_status=Finibus http_refer=https://www.example.org/xeacom/des.gif?umdolo=ntiu#radipisc http_version=Cice dev_id=taedi threat_weight=tquido history_threat_weight=ptasnula threat_level=oru ftp_mode=ill ftp_cmd=mporinc cipher_suite=onsectet msg_id=idolo -date=2016-11-10 time=3:01:24 logver=edolo devid=ugiatquo devname=ntium logid=uptate type=lloinven subtype=econs level=medium vd=tetura srcip=10.135.106.42 srcport=6602 srcintf=lo154 dstip=10.224.30.160 dstport=5302 dstintf=eth1247 poluuid=etconsec sessionid=caboNem proto=21 action=cancel policyid=rumetMal trandisp=oconse duration=2.970000 sentbyte=7685 rcvdbyte=1506 devtype=sequam osname=oditempo osversion=1.7544 mastersrcmac=taliqui srcmac=01:00:5e:98:79:a3 crscore=78.248000 craction=rcitat crlevel=dolorema eventtype=emagn user=radipis service=ctetu hostname=orinrep5386.www.corp profile=stenatus reqtype=equep url=https://www.example.com/tali/BCS.txt?iqu=niamqu#equamnih direction=inbound msg=autemv method=emq cat=plicaboN catdesc=amc device_id=vol log_id=admi pri=medium userfrom=culpaq adminprof=saute timezone=GMT+02:00 main_type=ende trigger_policy=abor sub_type=magnid severity_level=adol policy=iutal src=10.208.21.135 src_port=2721 dst=10.253.228.140 dst_port=6748 http_method=ugitse http_url=quiineav http_host=billoinv http_agent=sci http_session_id=col signature_subclass=obea signature_id=5700 srccountry=tatev content_switch_name=luptas server_pool_name=uptatem false_positive_mitigation=oinv user_name=inculp monitor_status=onofd http_refer=https://internal.example.org/nisiu/imad.html?ptatem=itasp#dexe http_version=tat dev_id=onproide threat_weight=ntmo history_threat_weight=loreeu threat_level=temse ftp_mode=aspernat ftp_cmd=ume cipher_suite=caecat msg_id=rautod -logver=ercitat date=2016-11-24 time=10:03:59 log_id=lapar devid=ritati devname=edquia logid=itesse type=mullam subtype=mexerc level=medium vd=amvolu srcip=10.120.231.161 srcport=1129 srcintf=lo653 dstip=10.210.62.203 dstport=4381 dstintf=lo3057 poluuid=ataevita sessionid=oremqu proto=6 action=cancel policyid=velitsed trandisp=magnaali duration=92.900000 sentbyte=3984 rcvdbyte=4009 devtype=ulla osname=equatDu osversion=1.1710 mastersrcmac=aconse srcmac=01:00:5e:92:c2:23 crscore=20.350000 craction=squira crlevel=aliqui eventtype=ess user=uide service=scivel hostname=henderi724.www5.home profile=tquas reqtype=aquio url=https://www.example.com/iame/orroquis.htm?tiumd=ntmoll#mexer direction=internal msg=isnostru method=nofdeFi cat=aquioff catdesc=saqu device_id=remips log_id=illoi pri=medium userfrom=abori adminprof=uisnostr timezone=GMT+02:00 main_type=ilmole trigger_policy=ugi sub_type=niamquis severity_level=nisi policy=emveleum src=10.243.226.122 src_port=3512 dst=10.3.23.172 dst_port=7332 http_method=emullamc http_url=tec http_host=Nemo http_agent=tutlabo http_session_id=mveleum signature_subclass=liq signature_id=7229 srccountry=sBonorum content_switch_name=atems server_pool_name=quira false_positive_mitigation=tassita user_name=olorem monitor_status=sedquiac http_refer=https://www.example.com/atDuis/asnulapa.html?rumwri=velill#ore http_version=tation dev_id=loinve threat_weight=tatevel history_threat_weight=iumdolo threat_level=untu ftp_mode=ict ftp_cmd=squirati cipher_suite=tem msg_id=mestq -logver=luptate date=2016-12-8 time=5:06:33 log_id=llamc devid=eleumiu devname=uei logid=Nequepo type=radipis subtype=cive level=low vd=orumSec srcip=10.56.74.7 srcport=6149 srcintf=eth2940 dstip=10.73.10.215 dstport=2079 dstintf=lo3472 poluuid=oeni sessionid=untutlab proto=0 action=cancel policyid=consecte trandisp=pteurs duration=26.872000 sentbyte=617 rcvdbyte=1651 devtype=ons osname=tiaecon osversion=1.5380 mastersrcmac=unt srcmac=01:00:5e:99:7b:4a crscore=124.392000 craction=queporro crlevel=uid eventtype=snostrum user=psa service=nculpaq hostname=reseosqu1629.mail.lan profile=utemvel reqtype=epteur url=https://www.example.net/iame/laudanti.htm?stquido=rsitvolu#mnisi direction=external msg=uameiusm method=adm cat=gelitsed catdesc=tiumto device_id=cor log_id=odoco pri=high userfrom=labore adminprof=ianonnu timezone=PST main_type=rum trigger_policy=erc sub_type=ehende severity_level=tutla policy=licaboNe src=10.94.242.80 src_port=2724 dst=10.106.85.174 dst_port=307 http_method=atiset http_url=serror http_host=onse http_agent=umquam http_session_id=emagn signature_subclass=emulla signature_id=1963 srccountry=iquaUt content_switch_name=mnihilm server_pool_name=redo false_positive_mitigation=etMaloru user_name=lmo monitor_status=iquidex http_refer=https://www.example.org/remipsu/tan.html?mcorpor=doconse#etdol http_version=dolorsi dev_id=nturmag threat_weight=tura history_threat_weight=osquirat threat_level=equat ftp_mode=aliquid ftp_cmd=usantiu cipher_suite=idunt msg_id=atqu -logver=liquam dtime=2016-12-23 00:09:07.712538723 +0000 UTC devid=min devname=oluptat vd=odt date=2016-12-23 time=12:09:07 logid=rspici type=snisi subtype=magnaal level=low eventtime=etquasia logtime=nula srcip=10.117.63.181 srcport=5299 srcintf=lo7416 srcintfrole=Cicero dstip=10.247.53.179 dstport=6493 dstintf=lo3706 dstintfrole=atemaccu poluuid=veritat sessionid=aliquipe proto=3 action=block policyid=aer policytype=osquira crscore=171.144000 craction=minim crlevel=scipi appcat=tur service=acon srccountry=Nemoenim dstcountry=usm trandisp=labori tranip=10.168.20.20 tranport=68 duration=167.038000 sentbyte=7188 rcvdbyte=5749 sentpkt=xeac app=umdolors -logver=uiadolo date=2017-1-6 time=7:11:41 log_id=empor devid=umexerci devname=duntut logid=uovol type=prehend subtype=eufug level=low vd=eufug srcip=10.100.53.8 srcport=4318 srcintf=eth5767 dstip=10.163.17.172 dstport=854 dstintf=enp0s3903 poluuid=upta sessionid=atc proto=3 action=block policyid=upta trandisp=itessequ duration=165.935000 sentbyte=4211 rcvdbyte=405 devtype=exerci osname=idata osversion=1.2208 mastersrcmac=usmod srcmac=01:00:5e:c0:47:f3 crscore=135.374000 craction=isiutali crlevel=iquidexe eventtype=illumq user=luptatem service=ite hostname=tasnul4179.internal.host profile=amvo reqtype=tnul url=https://www.example.org/ess/quiad.jpg?ten=litanim#rQuisaut direction=inbound msg=modico method=metco cat=cillu catdesc=iuntNeq device_id=eddoei log_id=rsin pri=very-high userfrom=eriam adminprof=pernat timezone=CEST main_type=imve trigger_policy=essequam sub_type=ueporro severity_level=aliqu policy=upt src=10.141.156.217 src_port=2700 dst=10.53.168.187 dst_port=73 http_method=emacc http_url=emp http_host=lamcola http_agent=veli http_session_id=venia signature_subclass=risni signature_id=1535 srccountry=uat content_switch_name=onemulla server_pool_name=riaturEx false_positive_mitigation=deri user_name=amqu monitor_status=lorsitam http_refer=https://api.example.org/onpr/litseddo.gif?oremqu=idex#radip http_version=upta dev_id=tetura threat_weight=rumet history_threat_weight=uptasnul threat_level=antiumdo ftp_mode=ecill ftp_cmd=iduntu cipher_suite=pisci msg_id=sunt -date=2017-1-20 time=2:14:16 devname=oco device_id=aboree log_id=ainci type=generic subtype=osqu pri=very-high devid=sus devname=imavenia logid=expli type=ugiat subtype=rnat level=low vd=orem srcip=10.37.174.58 srcport=3193 srcintf=lo2990 dstip=10.249.60.66 dstport=4859 dstintf=enp0s1732 poluuid=eve sessionid=tco proto=3 action=accept policyid=oluptate trandisp=lit duration=70.988000 sentbyte=6327 rcvdbyte=837 devtype=oquisqu osname=turadip osversion=1.3402 mastersrcmac=amc srcmac=01:00:5e:dd:dc:44 crscore=160.379000 craction=apar crlevel=runtm eventtype=eturadip user=olorsi service=itseddo hostname=bore5546.www.local profile=labo reqtype=lpaquiof url=https://example.com/xeac/llitanim.txt?oreverit=scip#Finibus direction=inbound msg=eufugia method=ncididun cat=hen catdesc=periamea device_id=itametco log_id=vel pri=high userfrom=rere adminprof=pta timezone=CEST main_type=equeporr trigger_policy=met sub_type=volup severity_level=ptate policy=entsu src=10.44.198.184 src_port=5695 dst=10.189.82.19 dst_port=4267 http_method=odoc http_url=atura http_host=tur http_agent=tur http_session_id=atnonpr signature_subclass=ita signature_id=7570 srccountry=colabori content_switch_name=imidestl server_pool_name=piscing false_positive_mitigation=ceroi user_name=iconsequ monitor_status=iat http_refer=https://www.example.net/siuta/atev.htm?CSe=exerci#inesciu http_version=quid dev_id=atcupid threat_weight=onse history_threat_weight=psa threat_level=ate ftp_mode=con ftp_cmd=tqu cipher_suite=eirur msg_id=dese -logver=mquisnos date=2017-2-3 time=9:16:50 log_id=lore devid=isci devname=Dui logid=reetdo type=ever subtype=civelits level=high vd=quiav srcip=10.154.34.15 srcport=5986 srcintf=enp0s4064 dstip=10.153.172.249 dstport=7030 dstintf=enp0s3067 poluuid=henderit sessionid=remq proto=21 action=cancel policyid=tla trandisp=arch duration=52.795000 sentbyte=5453 rcvdbyte=3097 devtype=ror osname=onsecte osversion=1.91 mastersrcmac=aecatcup srcmac=01:00:5e:58:7e:f5 crscore=133.560000 craction=quas crlevel=occaeca eventtype=eturadip user=ent service=rumSecti hostname=Utenima260.mail.invalid profile=cept reqtype=aedictas url=https://api.example.org/orio/gna.gif?aaliquaU=olu#iameaque direction=external msg=essequa method=aquio cat=rspicia catdesc=deom device_id=oluptat log_id=roinBCSe pri=medium userfrom=onproide adminprof=uamnih timezone=GMT+02:00 main_type=tatisetq trigger_policy=uidolo sub_type=umdolore severity_level=dmi policy=tam src=10.151.170.207 src_port=1400 dst=10.181.183.104 dst_port=5554 http_method=amni http_url=tatio http_host=amquisno http_agent=modoc http_session_id=magnam signature_subclass=uinesc signature_id=4248 srccountry=idatat content_switch_name=onev server_pool_name=orsi false_positive_mitigation=ntsunt user_name=iosamni monitor_status=idu http_refer=https://example.net/idolo/reet.txt?its=umdolor#isiu http_version=assi dev_id=eserun threat_weight=rvelill history_threat_weight=lupta threat_level=byC ftp_mode=imadm ftp_cmd=uta cipher_suite=tisu msg_id=remagnam -logver=iumdo date=2017-2-18 time=4:19:24 log_id=iusmodit devid=aturv devname=ectetura logid=obeataev type=umf subtype=olesti level=low vd=quaeabil srcip=10.19.99.129 srcport=956 srcintf=eth62 dstip=10.205.132.218 dstport=1643 dstintf=enp0s5908 poluuid=inim sessionid=etdol proto=17 action=deny policyid=oremeumf trandisp=lesti duration=49.961000 sentbyte=3376 rcvdbyte=6209 devtype=enima osname=tnulapar osversion=1.7278 mastersrcmac=sequ srcmac=01:00:5e:4a:1d:f8 crscore=84.522000 craction=tionula crlevel=accus eventtype=uatu user=mquis service=lab hostname=uido2046.mail.lan profile=tena reqtype=aal url=https://mail.example.org/nimadmin/lumqui.txt?iquip=tinculpa#umtota direction=external msg=rumSecti method=riamea cat=eca catdesc=oluptate device_id=Duisa log_id=consequa pri=low userfrom=iaecon adminprof=aevitaed timezone=PT main_type=rep trigger_policy=remap sub_type=deri severity_level=quaeratv policy=involu src=10.70.7.23 src_port=2758 dst=10.130.240.11 dst_port=6515 http_method=odic http_url=iuta http_host=liquaUte http_agent=scivelit http_session_id=Nequ signature_subclass=quid signature_id=1044 srccountry=lloinve content_switch_name=borisnis server_pool_name=onorumet false_positive_mitigation=ptatema user_name=eavolup monitor_status=ipsumq http_refer=https://www.example.org/tno/iss.gif?ptatev=atu#teturad http_version=eturad dev_id=tDuis threat_weight=mwritten history_threat_weight=tat threat_level=equ ftp_mode=sumdolo ftp_cmd=idolorem cipher_suite=temvele msg_id=oremque -logver=inimve devname="uio" devid="mexercit" vd=byC date=2017-3-4 time=11:21:59 logid=uae type=oremip subtype=its level=very-high eventtime=iavol logtime=natuserr srcip=10.37.161.101 srcport=1552 srcintf=enp0s6659 srcintfrole=evit dstip=10.111.182.212 dstport=4493 dstintf=lo6533 dstintfrole=lamco poluuid=tion sessionid=hender proto=icmp action=deny policyid=seq policytype=rumSe crscore=88.660000 craction=madmi crlevel=tlabore appcat=idunt service=expl srccountry=olore dstcountry=uian trandisp=atuserro tranip=10.17.209.252 tranport=2119 duration=135.770000 sentbyte=313 rcvdbyte=6509 sentpkt=oinBCS app=itsedd -logver=ipis devname="itautfu" devid="nesci" vd=tam date=2017-3-18 time=6:24:33 logid=sin type=idexeac subtype=nimadmin level=medium eventtime=edutper logtime=tevelite srcip=10.158.175.98 srcport=1491 srcintf=enp0s7649 srcintfrole=oinBCSed dstip=10.170.196.181 dstport=6994 dstintf=enp0s5873 dstintfrole=obeatae poluuid=iquid sessionid=evo proto=udp action=allow policyid=mqu policytype=pteursi crscore=98.596000 craction=expl crlevel=essecill appcat=totamre service=rpo srccountry=velites dstcountry=nonpro trandisp=nula tranip=10.153.166.133 tranport=4638 duration=39.506000 sentbyte=6610 rcvdbyte=1936 sentpkt=olu app=imide -date=2017-4-2 time=1:27:07 logver=amn devid=itessequ devname=porissu logid=umd type=sumd subtype=sectetur level=low vd=aUtenima srcip=10.62.10.137 srcport=5596 srcintf=lo6539 dstip=10.138.249.251 dstport=630 dstintf=eth1576 poluuid=deritinv sessionid=evelite proto=6 action=accept policyid=stiaecon trandisp=usBono duration=155.835000 sentbyte=3942 rcvdbyte=5360 devtype=ttenb osname=olor osversion=1.5978 mastersrcmac=lapa srcmac=01:00:5e:b0:3e:44 crscore=105.845000 craction=lors crlevel=oluptat eventtype=enimad user=tis service=qua hostname=con6049.internal.lan profile=quelaud reqtype=luptat url=https://internal.example.com/temse/caecat.jpg?emeu=tatemac#quisn direction=inbound msg=teursint method=etMa cat=llita catdesc=ntsunt device_id=nturmag log_id=uredol pri=high userfrom=temsequi adminprof=mquia timezone=ET main_type=enbyCic trigger_policy=iveli sub_type=conseq severity_level=itame policy=tenat src=10.63.171.91 src_port=4396 dst=10.48.25.200 dst_port=5179 http_method=nse http_url=mveniam http_host=tuser http_agent=mmo http_session_id=eve signature_subclass=nbyCicer signature_id=6129 srccountry=ciad content_switch_name=ugiatqu server_pool_name=eruntmo false_positive_mitigation=nimve user_name=usanti monitor_status=ion http_refer=https://mail.example.org/gelits/iavo.txt?udexerc=ovolupta#volup http_version=macc dev_id=ria threat_weight=beat history_threat_weight=rro threat_level=tuser ftp_mode=ctasu ftp_cmd=irat cipher_suite=sitame msg_id=oinven -logver=ute dtime=2017-04-16 08:29:41.792538723 +0000 UTC devid=mexer devname=iam vd=Bonoru date=2017-4-16 time=8:29:41 logid=rcitati type=nula subtype=ameaquei level=low eventtime=adipi logtime=mquis srcip=10.174.17.46 srcport=2743 srcintf=eth6814 srcintfrole=ine dstip=10.77.105.81 dstport=4455 dstintf=enp0s7799 dstintfrole=orem poluuid=giatqu sessionid=rsint proto=udp action=allow policyid=paq policytype=uianon crscore=60.762000 craction=uisautem crlevel=mquameiu appcat=loremq service=turmagni srccountry=ores dstcountry=ddoe trandisp=uid tranip=10.38.168.190 tranport=7260 duration=129.140000 sentbyte=368 rcvdbyte=7791 sentpkt=incidi app=aedictas -logver=temaccus devname="ons" devid="unt" vd=liq date=2017-4-30 time=3:32:16 logid=abore type=iumdo subtype=oreeu level=high eventtime=exe logtime=tis srcip=10.36.99.207 srcport=4829 srcintf=lo497 srcintfrole=tvol dstip=10.225.37.73 dstport=5630 dstintf=eth1882 dstintfrole=eniamqu poluuid=iumt sessionid=porissus proto=udp action=cancel policyid=tsunt policytype=rnat crscore=88.508000 craction=ured crlevel=ctetu appcat=oreeu service=uasiarch srccountry=Malor dstcountry=boriosa trandisp=cillumdo tranip=10.166.142.198 tranport=4151 duration=1.040000 sentbyte=465 rcvdbyte=7663 sentpkt=oreetd app=lor -logver=etc devname="eturadip" devid="nost" vd=atus date=2017-5-14 time=10:34:50 logid=tassitas type=obea subtype=velite level=medium eventtime=litse logtime=san srcip=10.66.90.225 srcport=4846 srcintf=lo4891 srcintfrole=moenimi dstip=10.214.156.161 dstport=3854 dstintf=eth1188 dstintfrole=ati poluuid=rauto sessionid=doloreeu proto=6 action=block policyid=eumfu policytype=docons crscore=3.408000 craction=eumf crlevel=roquisq appcat=uasi service=maveniam srccountry=uis dstcountry=lill trandisp=remeum tranip=10.145.194.12 tranport=1001 duration=25.398000 sentbyte=6452 rcvdbyte=6820 sentpkt=aturE app=umto -logver=pariat devname="iutal" devid="teturad" vd=ese date=2017-5-29 time=5:37:24 logid=eddoei type=lorumw subtype=eca level=medium eventtime=nimve logtime=duntut srcip=10.6.242.108 srcport=3373 srcintf=lo3230 srcintfrole=qua dstip=10.156.208.5 dstport=7612 dstintf=lo1800 dstintfrole=quisn poluuid=pteu sessionid=uatD proto=0 action=cancel policyid=antiu policytype=velillum crscore=166.389000 craction=iatquovo crlevel=lapari appcat=Mal service=itinvo srccountry=snulap dstcountry=cidu trandisp=hilmol tranip=10.163.36.101 tranport=253 duration=72.488000 sentbyte=1880 rcvdbyte=4638 sentpkt=ident app=scip -date=2017-6-12 time=12:39:58 devname=uamqu device_id=iusmodi log_id=esciun type=generic subtype=tasnul pri=medium devid=ccusant devname=epteurs logid=rmag type=quisquam subtype=eporroqu level=very-high vd=dit srcip=10.25.134.171 srcport=7867 srcintf=eth4543 dstip=10.43.235.230 dstport=2198 dstintf=lo4581 poluuid=BCSe sessionid=rem proto=0 action=allow policyid=eeufug trandisp=ntin duration=6.686000 sentbyte=5763 rcvdbyte=1048 devtype=cinge osname=tatem osversion=1.4713 mastersrcmac=eritqu srcmac=01:00:5e:ed:6b:57 crscore=10.603000 craction=nimip crlevel=iutaliq eventtype=olore user=onemul service=trudexe hostname=remeum2641.www5.corp profile=Quisa reqtype=quiav url=https://www5.example.com/elit/sam.htm?nevolu=unt#isni direction=outbound msg=ecillum method=olor cat=amei catdesc=doconseq device_id=conseq log_id=emve pri=very-high userfrom=tiu adminprof=wri timezone=GMT-07:00 main_type=asper trigger_policy=dictasun sub_type=psa severity_level=lorese policy=olupta src=10.220.148.127 src_port=6681 dst=10.68.233.163 dst_port=3126 http_method=itanimi http_url=onoru http_host=data http_agent=ugits http_session_id=ittenb signature_subclass=tobeatae signature_id=5617 srccountry=quis content_switch_name=exe server_pool_name=naa false_positive_mitigation=equat user_name=estiaec monitor_status=pitlabo http_refer=https://example.net/rcitat/ree.htm?ionofdeF=rsp#imipsa http_version=nostrum dev_id=autodita threat_weight=ntut history_threat_weight=temveleu threat_level=itametco ftp_mode=etcons ftp_cmd=etco cipher_suite=iuntN msg_id=utfugi -logver=isnostru date=2017-6-26 time=7:42:33 log_id=nul devid=ntocca devname=trudex logid=tvol type=lup subtype=mipsamv level=medium vd=qua srcip=10.249.194.7 srcport=4987 srcintf=enp0s2282 dstip=10.57.116.17 dstport=90 dstintf=enp0s7442 poluuid=xcep sessionid=gnidol proto=0 action=allow policyid=uaeab trandisp=ptat duration=136.310000 sentbyte=1078 rcvdbyte=6196 devtype=eturadip osname=amquaera osversion=1.4481 mastersrcmac=equ srcmac=01:00:5e:00:fd:79 crscore=18.750000 craction=olesti crlevel=edquia eventtype=ihi user=undeomn service=ape hostname=itaspe3216.localdomain profile=onsecte reqtype=prehende url=https://example.org/porro/issu.htm?inculpa=ruredol#iadeseru direction=unknown msg=numq method=quae cat=periam catdesc=ain device_id=umiurer log_id=mquido pri=very-high userfrom=onorume adminprof=abill timezone=GMT+02:00 main_type=uov trigger_policy=mini sub_type=mve severity_level=tionev policy=uasiarch src=10.116.82.108 src_port=7276 dst=10.94.177.125 dst_port=6683 http_method=nimides http_url=olorsit http_host=naaliq http_agent=plica http_session_id=asiarc signature_subclass=lor signature_id=5152 srccountry=snula content_switch_name=pici server_pool_name=bori false_positive_mitigation=dipi user_name=ecatc monitor_status=quovolu http_refer=https://example.net/itse/sse.gif?lupt=quatur#dminim http_version=ptatevel dev_id=aperiame threat_weight=stenat history_threat_weight=uianonnu threat_level=tatiset ftp_mode=quira ftp_cmd=ciatisun cipher_suite=duntutl msg_id=nven -date=2017-7-11 time=2:45:07 devname=saq device_id=asiarch log_id=ssuscipi type=generic subtype=utla pri=medium devid=tquovo devname=fugi logid=nse type=nesciu subtype=todit level=very-high vd=inrepreh srcip=10.14.192.162 srcport=2536 srcintf=enp0s4429 dstip=10.179.128.6 dstport=3375 dstintf=enp0s4580 poluuid=ptate sessionid=volupta proto=3 action=cancel policyid=utla trandisp=emi duration=171.651000 sentbyte=3313 rcvdbyte=7131 devtype=velites osname=oloremi osversion=1.4442 mastersrcmac=apari srcmac=01:00:5e:0c:fb:2b crscore=140.065000 craction=uel crlevel=fficiad eventtype=teirured user=nostru service=rcit hostname=mea6298.api.example profile=eumiu reqtype=tatevel url=https://mail.example.org/uamquaer/texplica.gif?sequa=lorum#suntexpl direction=inbound msg=Sedut method=tatis cat=audant catdesc=obeata device_id=uredol log_id=uptat pri=low userfrom=entorev adminprof=quuntur timezone=GMT+02:00 main_type=exercit trigger_policy=dexer sub_type=idolor severity_level=onpr policy=uira src=10.115.121.243 src_port=550 dst=10.113.152.241 dst_port=2330 http_method=ali http_url=udexerci http_host=uae http_agent=imveni http_session_id=econ signature_subclass=aborio signature_id=1122 srccountry=setquas content_switch_name=nbyCi server_pool_name=runtmoll false_positive_mitigation=busBon user_name=norumetM monitor_status=isno http_refer=https://internal.example.com/ameaq/Quis.html?lestiae=iav#umiure http_version=isiut dev_id=tin threat_weight=rporiss history_threat_weight=billoinv threat_level=etconse ftp_mode=nesciu ftp_cmd=mali cipher_suite=roinBCSe msg_id=eetdolor -date=2017-7-25 time=9:47:41 logver=upt devid=equamni devname=atcupi logid=enima type=uptateve subtype=fugitsed level=medium vd=lorem srcip=10.68.159.207 srcport=3320 srcintf=enp0s7206 dstip=10.139.195.188 dstport=893 dstintf=enp0s6960 poluuid=lits sessionid=tvolu proto=17 action=accept policyid=ollitan trandisp=temseq duration=0.684000 sentbyte=3045 rcvdbyte=6863 devtype=edictasu osname=eturadi osversion=1.3804 mastersrcmac=edquiano srcmac=01:00:5e:09:79:f2 crscore=11.231000 craction=taevitae crlevel=tevel eventtype=tatemse user=gitsed service=agn hostname=iqu7510.internal.corp profile=equeporr reqtype=amremap url=https://www5.example.org/aqu/utemvele.gif?serrorsi=tsedquia#rsit direction=unknown msg=ntutlabo method=idex cat=nihilmo catdesc=reetdo device_id=xeaco log_id=taliqu pri=medium userfrom=hite adminprof=umfugi timezone=CT main_type=dminimve trigger_policy=remips sub_type=laboreet severity_level=uptate policy=tot src=10.49.82.45 src_port=435 dst=10.179.153.97 dst_port=1908 http_method=ade http_url=nihilmol http_host=nder http_agent=ano http_session_id=rumexer signature_subclass=eab signature_id=2387 srccountry=saquaeab content_switch_name=eli server_pool_name=rissusci false_positive_mitigation=ectetur user_name=dictasun monitor_status=inimv http_refer=https://api.example.org/volup/untNeq.htm?mremaper=uteirur#ntium http_version=ide dev_id=quunturm threat_weight=quovo history_threat_weight=quaturve threat_level=ntiumdol ftp_mode=conse ftp_cmd=aturve cipher_suite=edqui msg_id=tvolu -logver=ore devname="lors" devid="saute" vd=ecillumd date=2017-8-8 time=4:50:15 logid=iumto type=sequatu subtype=tiumtot level=medium eventtime=mdoloree logtime=que srcip=10.98.52.184 srcport=7402 srcintf=eth3784 srcintfrole=ita dstip=10.99.55.115 dstport=1537 dstintf=eth855 dstintfrole=isnostru poluuid=iad sessionid=ngelits proto=tcp action=accept policyid=billoi policytype=reseo crscore=158.047000 craction=uov crlevel=pariat appcat=icaboNe service=boreetd srccountry=uir dstcountry=rumex trandisp=ectobea tranip=10.205.83.138 tranport=6239 duration=170.113000 sentbyte=3290 rcvdbyte=722 sentpkt=ibus app=lumdol -logver=onnu devname="reprehe" devid="metMa" vd=emoen date=2017-8-22 time=11:52:50 logid=ptate type=mipsumqu subtype=turad level=high eventtime=billo logtime=doloremi srcip=10.197.128.162 srcport=2052 srcintf=lo6750 srcintfrole=ionof dstip=10.90.189.248 dstport=1293 dstintf=lo2402 dstintfrole=roi poluuid=reh sessionid=volup proto=prm action=allow policyid=iconsequ policytype=ueporr crscore=127.832000 craction=archite crlevel=tur appcat=ddo service=emp srccountry=inBC dstcountry=did trandisp=atcupi tranip=10.228.11.50 tranport=984 duration=3.401000 sentbyte=6907 rcvdbyte=422 sentpkt=mcol app=tion -date=2017-9-6 time=6:55:24 devname=moll device_id=roinBCS log_id=odit type=event subtype=vol pri=low desc=aloru user=cteturad userfrom=modi msg=cip action=deny adom=ntoccae2859.www.test session_id=incididu -date=2017-9-20 time=1:57:58 devname=uinesci device_id=otamr log_id=tsed type=generic subtype=rExc pri=medium devid=saute devname=umdol logid=rerepr type=ipiscin subtype=trudexe level=high vd=ineavol srcip=10.29.34.211 srcport=5638 srcintf=eth1805 dstip=10.161.15.82 dstport=6598 dstintf=enp0s5799 poluuid=aco sessionid=eFini proto=17 action=cancel policyid=mipsa trandisp=uas duration=118.122000 sentbyte=1737 rcvdbyte=6283 devtype=umexe osname=xce osversion=1.7318 mastersrcmac=suntex srcmac=01:00:5e:5b:68:89 crscore=29.865000 craction=rcitati crlevel=siutali eventtype=uiratio user=ficia service=orsit hostname=deFinibu3940.internal.lan profile=rautod reqtype=onorumet url=https://www5.example.com/etcon/chit.txt?erspici=itinvolu#adeserun direction=unknown msg=tinv method=Utenima cat=nse catdesc=umq device_id=enim log_id=oreve pri=low userfrom=snisiu adminprof=atem timezone=ET main_type=vento trigger_policy=litsed sub_type=ciun severity_level=rehender policy=tetura src=10.124.71.88 src_port=7540 dst=10.22.248.52 dst_port=6566 http_method=cons http_url=tinvolu http_host=ptat http_agent=amquisn http_session_id=Finibus signature_subclass=nsequat signature_id=3661 srccountry=scipi content_switch_name=rem server_pool_name=reh false_positive_mitigation=rsitame user_name=tcons monitor_status=squamest http_refer=https://mail.example.com/emveleum/siuta.html?ate=epteur#onproi http_version=usmodit dev_id=orese threat_weight=umdolore history_threat_weight=umqui threat_level=adipisci ftp_mode=eir ftp_cmd=ull cipher_suite=tlabor msg_id=itecto -date=2017-10-4 time=9:00:32 logver=ametcons devid=velite devname=ipexeac logid=explicab type=samvolu subtype=teiru level=low vd=orinrep srcip=10.228.213.136 srcport=7247 srcintf=lo1719 dstip=10.185.107.27 dstport=2257 dstintf=enp0s4999 poluuid=iduntutl sessionid=mipsumd proto=udp action=block policyid=quelauda trandisp=rcit duration=166.303000 sentbyte=7229 rcvdbyte=6230 devtype=orese osname=evelite osversion=1.4895 mastersrcmac=oremipsu srcmac=01:00:5e:cd:f6:0e crscore=37.237000 craction=equunt crlevel=mto eventtype=iae user=dent service=Uten hostname=tatiset4191.localdomain profile=aconseq reqtype=mquamei url=https://api.example.org/fug/liquid.txt?ptate=lloi#nseq direction=external msg=isetqua method=ianonn cat=oluptas catdesc=doe device_id=quipex log_id=rchitect pri=very-high userfrom=Bonor adminprof=ipex timezone=PT main_type=upta trigger_policy=ivel sub_type=tmollita severity_level=tionofd policy=iatnula src=10.185.37.176 src_port=1859 dst=10.26.58.20 dst_port=2809 http_method=essequam http_url=undeo http_host=ficiade http_agent=uiinea http_session_id=uianonn signature_subclass=eavolupt signature_id=784 srccountry=elitsedq content_switch_name=liquam server_pool_name=sinto false_positive_mitigation=edi user_name=eumiure monitor_status=ore http_refer=https://internal.example.com/mSe/sis.gif?rchite=rcit#orumwri http_version=tiae dev_id=giat threat_weight=nculpa history_threat_weight=olupt threat_level=tvol ftp_mode=ostru ftp_cmd=mea cipher_suite=tuserror msg_id=agnama -logver=deritq dtime=2017-10-19 04:03:07.172538723 +0000 UTC devid=boreetdo devname=teni vd=iin date=2017-10-19 time=4:03:07 logid=nostr type=luptatem subtype=tNequepo level=low eventtime=eumfug logtime=sper srcip=10.200.12.126 srcport=2347 srcintf=enp0s7374 srcintfrole=liqu dstip=10.14.145.107 dstport=4362 dstintf=enp0s7861 dstintfrole=aliq poluuid=utem sessionid=oreetd proto=HOPOPT action=block policyid=Nequepo policytype=edictas crscore=55.933000 craction=tur crlevel=borisnis appcat=elitsedd service=hitecto srccountry=loremi dstcountry=nven trandisp=isci tranip=10.250.231.196 tranport=5863 duration=4.105000 sentbyte=2763 rcvdbyte=5047 sentpkt=aquioff app=cip -logver=onsequat dtime=2017-11-02 11:05:41.432538723 +0000 UTC devid=tiumd devname=atuse vd=imad date=2017-11-2 time=11:05:41 logid=tura type=equuntur subtype=rve level=high eventtime=mqua logtime=xer srcip=10.225.34.176 srcport=5569 srcintf=lo2867 srcintfrole=amquisn dstip=10.21.203.112 dstport=5930 dstintf=enp0s1294 dstintfrole=sum poluuid=lloinve sessionid=eni proto=HOPOPT action=cancel policyid=edquiac policytype=psamvolu crscore=80.314000 craction=unturma crlevel=iavol appcat=psumdol service=urautodi srccountry=equamni dstcountry=fugia trandisp=uptate tranip=10.103.36.192 tranport=1974 duration=129.001000 sentbyte=2801 rcvdbyte=2565 sentpkt=imidest app=citation -logver=nof devname="usantiu" devid="periam" vd=remip date=2017-11-16 time=6:08:15 logid=dexea type=aturExc subtype=antiumto level=low eventtime=obe logtime=niamqu srcip=10.140.59.161 srcport=3599 srcintf=eth575 srcintfrole=tev dstip=10.5.67.140 dstport=5687 dstintf=enp0s6143 dstintfrole=intoc poluuid=obeataev sessionid=rrorsit proto=udp action=accept policyid=umquid policytype=olabo crscore=79.046000 craction=dolor crlevel=rsp appcat=quir service=giatqu srccountry=olors dstcountry=roid trandisp=lorum tranip=10.118.111.183 tranport=5410 duration=96.462000 sentbyte=6821 rcvdbyte=6222 sentpkt=mipsu app=nvol -date=2017-12-1 time=1:10:49 logver=llu devid=quaUt devname=labor logid=oris type=tatemse subtype=uta level=very-high vd=tse srcip=10.170.104.148 srcport=5722 srcintf=lo259 dstip=10.60.92.40 dstport=5836 dstintf=enp0s4446 poluuid=dicons sessionid=BCSedutp proto=udp action=accept policyid=ritatise trandisp=nihilm duration=104.607000 sentbyte=6659 rcvdbyte=5351 devtype=isauteir osname=eritquii osversion=1.4493 mastersrcmac=uisno srcmac=01:00:5e:e9:ec:d5 crscore=34.736000 craction=itaed crlevel=invol eventtype=Loremips user=cidun service=tassitas hostname=nimadmi4084.api.home profile=eufugia reqtype=nor url=https://example.net/aturQui/tquii.html?uiac=squ#litess direction=unknown msg=involupt method=itempo cat=upt catdesc=rve device_id=amq log_id=abillo pri=high userfrom=ationem adminprof=Nem timezone=OMST main_type=ollita trigger_policy=dipisci sub_type=amnisiu severity_level=ptat policy=epr src=10.7.70.169 src_port=2514 dst=10.28.212.191 dst_port=1997 http_method=nostru http_url=Loremip http_host=veleumiu http_agent=rcita http_session_id=turad signature_subclass=sequamni signature_id=4799 srccountry=ollita content_switch_name=ectetu server_pool_name=radi false_positive_mitigation=ula user_name=itsed monitor_status=rad http_refer=https://internal.example.com/ididu/autodit.gif?seru=oriss#imadmin http_version=suntexpl dev_id=urve threat_weight=sBonoru history_threat_weight=everi threat_level=squ ftp_mode=emagnaal ftp_cmd=nih cipher_suite=ncididu msg_id=itati -date=2017-12-15 time=8:13:24 logver=estla devid=ione devname=ecillum logid=maccu type=ame subtype=pitlabo level=very-high vd=urExc srcip=10.37.124.214 srcport=6919 srcintf=lo7727 dstip=10.37.111.228 dstport=7082 dstintf=enp0s20 poluuid=dmini sessionid=tquid proto=17 action=block policyid=iatisun trandisp=cto duration=144.899000 sentbyte=2372 rcvdbyte=7417 devtype=imadmini osname=iatisund osversion=1.6506 mastersrcmac=aUtenim srcmac=01:00:5e:28:0c:11 crscore=172.422000 craction=etdol crlevel=sed eventtype=uep user=ametco service=nde hostname=reprehe3525.www5.example profile=mquisno reqtype=eaco url=https://mail.example.org/mvele/teveli.htm?Nequepor=luptate#aturvel direction=internal msg=dexea method=sedquia cat=litesse catdesc=ntmo device_id=aliqu log_id=iqu pri=very-high userfrom=ationula adminprof=doconse timezone=CEST main_type=oreeufug trigger_policy=ptatems sub_type=tenima severity_level=emagnam policy=iaco src=10.148.197.60 src_port=5711 dst=10.143.144.52 dst_port=974 http_method=nvo http_url=lab http_host=sedqui http_agent=iuntNe http_session_id=tdolor signature_subclass=Ute signature_id=2191 srccountry=uepor content_switch_name=umSecti server_pool_name=eabil false_positive_mitigation=ibusB user_name=rporis monitor_status=etco http_refer=https://example.org/ereprehe/olu.html?liqu=ipsu#siarch http_version=itautfu dev_id=rrorsi threat_weight=ole history_threat_weight=odi threat_level=tper ftp_mode=olor ftp_cmd=corpo cipher_suite=commod msg_id=iumd -logver=aborisn dtime=2017-12-29 15:15:58.472538723 +0000 UTC devid=onproid devname=sitv vd=equam date=2017-12-29 time=3:15:58 logid=bor type=ameaquei subtype=aeca level=very-high eventtime=aperiam logtime=ngelit srcip=10.217.145.137 srcport=5242 srcintf=enp0s6940 srcintfrole=orema dstip=10.22.149.132 dstport=7725 dstintf=lo7156 dstintfrole=neavolup poluuid=lits sessionid=Nemoen proto=0 action=block policyid=rur policytype=quaturve crscore=166.007000 craction=oeiusmod crlevel=uidolore appcat=iacon service=ncu srccountry=quaturve dstcountry=ciad trandisp=diconseq tranip=10.251.183.113 tranport=2604 duration=161.433000 sentbyte=5697 rcvdbyte=7299 sentpkt=eseosqu app=uptatem -logver=uamnihil devname="nisi" devid="imadm" vd=siutali date=2018-1-12 time=10:18:32 logid=mfugi type=ceroinBC subtype=lorumw level=low eventtime=squir logtime=commod srcip=10.183.16.252 srcport=3150 srcintf=lo6718 srcintfrole=eabillo dstip=10.203.66.175 dstport=3904 dstintf=enp0s3868 dstintfrole=dipisciv poluuid=nsequun sessionid=hen proto=icmp action=accept policyid=velillum policytype=itamet crscore=123.013000 craction=hil crlevel=itl appcat=idolo service=ncidid srccountry=oid dstcountry=iarchit trandisp=volupt tranip=10.51.60.203 tranport=5315 duration=165.955000 sentbyte=7551 rcvdbyte=1519 sentpkt=ten app=Utenim -date=2018-1-27 time=5:21:06 logver=uasiarch devid=iamquisn devname=magnama logid=reprehe type=citatio subtype=dolo level=medium vd=esciunt srcip=10.133.245.26 srcport=1727 srcintf=enp0s2674 dstip=10.76.87.30 dstport=2858 dstintf=enp0s2918 poluuid=remag sessionid=roinBCSe proto=HOPOPT action=accept policyid=labori trandisp=ditau duration=39.920000 sentbyte=5413 rcvdbyte=6650 devtype=tam osname=olu osversion=1.409 mastersrcmac=iut srcmac=01:00:5e:5c:c2:50 crscore=69.137000 craction=boris crlevel=ris eventtype=nisiuta user=utper service=uipexe hostname=ursint411.www.lan profile=gnamali reqtype=iumdo url=https://example.org/tem/iadeseru.jpg?olorsita=odoco#etc direction=internal msg=lamco method=natuser cat=Excepteu catdesc=omnis device_id=tati log_id=orinc pri=very-high userfrom=eturadi adminprof=cinge timezone=PT main_type=ira trigger_policy=niamq sub_type=quatD severity_level=nevol policy=lumquid src=10.157.14.165 src_port=7170 dst=10.61.200.105 dst_port=2813 http_method=tquov http_url=natu http_host=doei http_agent=acomm http_session_id=veleumi signature_subclass=volupt signature_id=6822 srccountry=itatise content_switch_name=ure server_pool_name=userro false_positive_mitigation=oree user_name=nimadmi monitor_status=utaliq http_refer=https://example.com/tinvolu/uredol.txt?did=lamcol#idolor http_version=tutlabor dev_id=nse threat_weight=rauto history_threat_weight=rese threat_level=nonproi ftp_mode=doconse ftp_cmd=henderi cipher_suite=tisunde msg_id=ende -date=2018-2-10 time=12:23:41 logver=commod devid=oris devname=rcita logid=ataev type=oris subtype=incidi level=high vd=tutlabo srcip=10.32.66.161 srcport=881 srcintf=lo4523 dstip=10.134.238.8 dstport=2976 dstintf=enp0s1238 poluuid=edquiac sessionid=sit proto=HOPOPT action=allow policyid=olo trandisp=laboris duration=163.866000 sentbyte=7328 rcvdbyte=5375 devtype=tutl osname=nevolu osversion=1.5475 mastersrcmac=ostru srcmac=01:00:5e:e9:5f:84 crscore=157.516000 craction=aven crlevel=idolore eventtype=psaqu user=psa service=pta hostname=ididunt7607.mail.localhost profile=ntutlabo reqtype=leumiure url=https://mail.example.net/epteurs/usmodtem.gif?itvo=asi#tobe direction=internal msg=Lore method=oin cat=eritquii catdesc=taliqui device_id=ecatcu log_id=entoreve pri=high userfrom=umquam adminprof=onev timezone=CET main_type=tionev trigger_policy=ali sub_type=ionu severity_level=perna policy=moll src=10.242.178.15 src_port=3948 dst=10.217.111.77 dst_port=7309 http_method=datatno http_url=equepor http_host=antium http_agent=ugiatn http_session_id=utpe signature_subclass=hend signature_id=1170 srccountry=agnamali content_switch_name=ptateve server_pool_name=aliqua false_positive_mitigation=officiad user_name=nimadmin monitor_status=iavol http_refer=https://example.net/iumtota/qui.jpg?quel=ugitsed#ritatis http_version=olor dev_id=emoenim threat_weight=turadipi history_threat_weight=umSec threat_level=onsecte ftp_mode=inibusBo ftp_cmd=tqui cipher_suite=sequun msg_id=nimadm -date=2018-2-24 time=7:26:15 logver=vitaedic devid=remip devname=rsita logid=rehe type=aper subtype=gnaa level=low vd=uta srcip=10.161.128.235 srcport=6280 srcintf=eth2121 dstip=10.84.29.117 dstport=1245 dstintf=eth7500 poluuid=errorsi sessionid=umwr proto=HOPOPT action=cancel policyid=cupida trandisp=rinc duration=5.709000 sentbyte=289 rcvdbyte=6059 devtype=dquia osname=ommod osversion=1.142 mastersrcmac=dico srcmac=01:00:5e:06:53:8a crscore=35.836000 craction=imipsa crlevel=iscinge eventtype=ora user=meumfug service=inimve hostname=mco2906.domain profile=sitvolu reqtype=eratv url=https://www.example.com/iadolo/cidu.txt?aliquide=redolori#eav direction=inbound msg=nse method=turQuis cat=tat catdesc=pta device_id=henderi log_id=onsec pri=high userfrom=itaspern adminprof=tau timezone=GMT+02:00 main_type=rsintoc trigger_policy=boreetd sub_type=rehende severity_level=sitamet policy=xerc src=10.199.119.251 src_port=7286 dst=10.86.152.227 dst_port=850 http_method=ant http_url=tiu http_host=ommodoco http_agent=rehe http_session_id=eseosqu signature_subclass=oeius signature_id=641 srccountry=eaqueip content_switch_name=laud server_pool_name=uido false_positive_mitigation=uis user_name=msequin monitor_status=autem http_refer=https://internal.example.org/ipi/qua.htm?itat=adipisc#omnisist http_version=orroqui dev_id=sci threat_weight=psamvolu history_threat_weight=itsedqui threat_level=oreve ftp_mode=omn ftp_cmd=onevol cipher_suite=ese msg_id=reprehen -date=2018-3-11 time=2:28:49 logver=eumfugia devid=nimvenia devname=dol logid=rissusc type=lit subtype=quin level=low vd=eddoei srcip=10.35.73.208 srcport=7081 srcintf=eth6552 dstip=10.216.120.61 dstport=6389 dstintf=eth2068 poluuid=dolor sessionid=emUteni proto=tcp action=deny policyid=illoin trandisp=rinre duration=166.295000 sentbyte=5988 rcvdbyte=3374 devtype=olorem osname=mquae osversion=1.1789 mastersrcmac=rQuis srcmac=01:00:5e:b5:9a:3e crscore=5.250000 craction=enimadmi crlevel=elit eventtype=uia user=tem service=unt hostname=ntex5135.corp profile=mqua reqtype=equa url=https://internal.example.com/isc/umdol.jpg?atn=sectet#boreetd direction=outbound msg=olorin method=oluptat cat=olors catdesc=mSecti device_id=ius log_id=quian pri=low userfrom=urExce adminprof=upt timezone=PST main_type=pteurs trigger_policy=intocc sub_type=abo severity_level=orisnis policy=reseo src=10.239.194.105 src_port=3629 dst=10.234.171.117 dst_port=4488 http_method=tenatus http_url=odic http_host=ono http_agent=umtota http_session_id=consequ signature_subclass=ine signature_id=3409 srccountry=dex content_switch_name=ipis server_pool_name=nsecte false_positive_mitigation=miurere user_name=tat monitor_status=pitlabor http_refer=https://example.com/olupta/ape.jpg?mnisiut=eabil#olu http_version=uaUte dev_id=empor threat_weight=ate history_threat_weight=eca threat_level=inre ftp_mode=aliqu ftp_cmd=orem cipher_suite=dquian msg_id=isaute -logver=emagnaal dtime=2018-03-25 09:31:24.032538723 +0000 UTC devid=uunturm devname=nonnumq vd=tqu date=2018-3-25 time=9:31:24 logid=ntocca type=emquelau subtype=adolorsi level=medium eventtime=maliquam logtime=ovol srcip=10.34.41.75 srcport=4436 srcintf=enp0s7638 srcintfrole=eseosqu dstip=10.249.16.201 dstport=4293 dstintf=lo5084 dstintfrole=mvele poluuid=qui sessionid=etMa proto=3 action=accept policyid=aspe policytype=uradipi crscore=22.220000 craction=atu crlevel=amremape appcat=illoinve service=uis srccountry=itanimi dstcountry=rinc trandisp=isistena tranip=10.107.168.208 tranport=1864 duration=45.477000 sentbyte=1067 rcvdbyte=2855 sentpkt=ctionofd app=uianonnu -logver=nisiste date=2018-4-8 time=4:33:58 log_id=sedqu devid=itautfu devname=aaliq logid=tDui type=ernatur subtype=itsed level=low vd=xeacomm srcip=10.112.57.220 srcport=5803 srcintf=enp0s1897 dstip=10.19.151.236 dstport=884 dstintf=enp0s4144 poluuid=estiaeco sessionid=vele proto=HOPOPT action=allow policyid=yCiceroi trandisp=loremeu duration=156.263000 sentbyte=3719 rcvdbyte=7292 devtype=colab osname=itte osversion=1.6905 mastersrcmac=orumS srcmac=01:00:5e:c1:b8:93 crscore=60.950000 craction=uptat crlevel=incidun eventtype=agnaaliq user=aturQuis service=cepteurs hostname=tat1845.internal.invalid profile=rumetMal reqtype=tiumtot url=https://www.example.com/imadm/ugiat.txt?Nequepor=nisiu#ptat direction=inbound msg=eddoe method=seq cat=uae catdesc=tobeata device_id=ctas log_id=vol pri=high userfrom=gna adminprof=itautf timezone=ET main_type=eprehe trigger_policy=ariatu sub_type=aqueip severity_level=aqueip policy=rautod src=10.96.168.24 src_port=6206 dst=10.109.106.194 dst_port=5356 http_method=Sedut http_url=stiaec http_host=rveli http_agent=serr http_session_id=umdolo signature_subclass=iduntut signature_id=4281 srccountry=rorsitv content_switch_name=caboNemo server_pool_name=cididun false_positive_mitigation=iamqu user_name=ommodoc monitor_status=mwrit http_refer=https://www5.example.com/madminim/onse.txt?reeuf=orinrepr#tinvo http_version=oru dev_id=ainc threat_weight=aeab history_threat_weight=iat threat_level=acom ftp_mode=olo ftp_cmd=eipsaq cipher_suite=enatu msg_id=mfu -logver=aliqui date=2018-4-22 time=11:36:32 log_id=uipexea devid=sauteiru devname=nibusB logid=eetdolo type=issuscip subtype=iduntu level=high vd=rinc srcip=10.109.224.208 srcport=1769 srcintf=enp0s3638 dstip=10.31.34.96 dstport=4651 dstintf=enp0s390 poluuid=atis sessionid=edol proto=icmp action=deny policyid=adip trandisp=ugiatq duration=128.795000 sentbyte=4249 rcvdbyte=6693 devtype=atemUte osname=emag osversion=1.1353 mastersrcmac=ecatcup srcmac=01:00:5e:63:85:d2 crscore=62.286000 craction=oin crlevel=isautem eventtype=eiusm user=assit service=ulpaq hostname=ulamc767.internal.lan profile=iades reqtype=mremape url=https://mail.example.net/ionemu/nul.jpg?volupt=ori#sed direction=inbound msg=maveniam method=ctobeat cat=emoenim catdesc=oqui device_id=olab log_id=remagnam pri=high userfrom=mSecti adminprof=volupt timezone=OMST main_type=ela trigger_policy=fugits sub_type=litseddo severity_level=idestl policy=ptasn src=10.112.155.228 src_port=5011 dst=10.47.191.95 dst_port=6242 http_method=velillu http_url=radipi http_host=iatn http_agent=aturE http_session_id=beat signature_subclass=pern signature_id=7568 srccountry=itvolupt content_switch_name=uradip server_pool_name=perspi false_positive_mitigation=uaer user_name=aed monitor_status=tectobe http_refer=https://example.org/scingeli/uatDuis.gif?apari=itesseci#utali http_version=ofdeFin dev_id=siutaliq threat_weight=urvel history_threat_weight=turE threat_level=ntium ftp_mode=imadmi ftp_cmd=dquiac cipher_suite=liquide msg_id=uatD -logver=gnidolor dtime=2018-05-07 06:39:06.812538723 +0000 UTC devid=BCSedut devname=metco vd=vel date=2018-5-7 time=6:39:06 logid=tmol type=acommodi subtype=ccaecat level=low eventtime=mqu logtime=mips srcip=10.103.169.94 srcport=2174 srcintf=lo5821 srcintfrole=osqu dstip=10.140.137.17 dstport=446 dstintf=enp0s4444 dstintfrole=iono poluuid=atcupi sessionid=dexe proto=0 action=allow policyid=exerci policytype=ems crscore=15.728000 craction=nulapa crlevel=tess appcat=eroi service=enby srccountry=riatur dstcountry=amrema trandisp=illum tranip=10.62.241.218 tranport=7444 duration=5.969000 sentbyte=4832 rcvdbyte=6033 sentpkt=urere app=involu -logver=tem devname="litsedq" devid="amre" vd=orpori date=2018-5-21 time=1:41:41 logid=sistena type=iam subtype=saquae level=low eventtime=itanimid logtime=ianonnum srcip=10.90.229.92 srcport=6796 srcintf=lo1752 srcintfrole=inculp dstip=10.251.212.166 dstport=3925 dstintf=eth1592 dstintfrole=aboNemo poluuid=tsedquia sessionid=ididun proto=21 action=cancel policyid=enim policytype=gnido crscore=85.453000 craction=erepr crlevel=tsedqu appcat=uisa service=uptat srccountry=siutal dstcountry=umetMalo trandisp=onevolu tranip=10.77.105.160 tranport=5541 duration=155.903000 sentbyte=5294 rcvdbyte=2687 sentpkt=ira app=umfu -date=2018-6-4 time=8:44:15 logver=uamq devid=mnisist devname=dutp logid=ecillu type=ipsaqu subtype=asun level=very-high vd=llumd srcip=10.100.223.157 srcport=1307 srcintf=eth5742 dstip=10.232.243.87 dstport=4546 dstintf=lo299 poluuid=atisetq sessionid=mSectio proto=0 action=cancel policyid=nonnumqu trandisp=atis duration=63.050000 sentbyte=3508 rcvdbyte=205 devtype=uam osname=tisunde osversion=1.4261 mastersrcmac=rured srcmac=01:00:5e:8a:c1:2a crscore=19.243000 craction=meumfug crlevel=iam eventtype=animi user=porainc service=nsectetu hostname=spici5547.internal.test profile=tate reqtype=sintocca url=https://mail.example.org/asuntex/uovolup.html?amali=uiav#henderi direction=internal msg=tnul method=ons cat=radip catdesc=amremap device_id=dolorsit log_id=atisund pri=very-high userfrom=uredo adminprof=uamni timezone=CT main_type=quisqua trigger_policy=sedquian sub_type=lamcorpo severity_level=rem policy=apariat src=10.216.49.112 src_port=4521 dst=10.112.242.68 dst_port=3105 http_method=aut http_url=eriti http_host=ipsum http_agent=com http_session_id=uptate signature_subclass=tevelite signature_id=5880 srccountry=nimadmi content_switch_name=mquiado server_pool_name=agn false_positive_mitigation=dip user_name=urmag monitor_status=nim http_refer=https://www5.example.net/tutlabo/incid.gif?ptate=tconsect#usm http_version=uunturma dev_id=namaliqu threat_weight=tatemacc history_threat_weight=licab threat_level=roidents ftp_mode=volupta ftp_cmd=stiaeco cipher_suite=tanim msg_id=osam -date=2018-6-19 time=3:46:49 logver=tla devid=nimve devname=edutpe logid=tenb type=billoinv subtype=asia level=medium vd=paquioff srcip=10.252.175.174 srcport=1995 srcintf=enp0s1531 dstip=10.196.226.219 dstport=545 dstintf=lo2390 poluuid=uaera sessionid=nsequa proto=tcp action=accept policyid=orporis trandisp=oluptate duration=28.731000 sentbyte=2397 rcvdbyte=1768 devtype=itvolu osname=citation osversion=1.491 mastersrcmac=aincid srcmac=01:00:5e:7e:ea:3f crscore=149.960000 craction=tNeque crlevel=uidolore eventtype=uatDuisa user=usB service=magnaali hostname=istenatu3686.invalid profile=remagna reqtype=eritqu url=https://example.org/mnisiut/porinci.htm?norum=emUten#dminimve direction=internal msg=oremagna method=nulamc cat=tempori catdesc=rsintocc device_id=nderit log_id=etco pri=very-high userfrom=lore adminprof=ameiusmo timezone=PT main_type=veniamqu trigger_policy=equat sub_type=reeu severity_level=atemacc policy=rsitvolu src=10.182.58.108 src_port=4811 dst=10.96.100.84 dst_port=2253 http_method=utlabore http_url=texplica http_host=boru http_agent=ntut http_session_id=elaud signature_subclass=acomm signature_id=5667 srccountry=emUten content_switch_name=uamni server_pool_name=laboris false_positive_mitigation=pers user_name=lpaquiof monitor_status=isisten http_refer=https://api.example.net/seddoei/rnatur.jpg?olores=idolorem#umdolors http_version=uid dev_id=numqua threat_weight=citatio history_threat_weight=sed threat_level=mUten ftp_mode=eursint ftp_cmd=velillum cipher_suite=oin msg_id=teurs -logver=untutl devname="cons" devid="vel" vd=illumdo date=2018-7-3 time=10:49:23 logid=rios type=deF subtype=dutpe level=very-high eventtime=itan logtime=uisnos srcip=10.228.61.5 srcport=1179 srcintf=eth4741 srcintfrole=lites dstip=10.246.41.77 dstport=1217 dstintf=lo7502 dstintfrole=olu poluuid=ectet sessionid=tquovo proto=17 action=block policyid=lapa policytype=xeacom crscore=22.822000 craction=qui crlevel=henderi appcat=rainc service=dminim srccountry=sse dstcountry=tatem trandisp=umexe tranip=10.157.22.21 tranport=5252 duration=135.630000 sentbyte=2167 rcvdbyte=2952 sentpkt=quamei app=nvento -logver=qua devname="llumdo" devid="tot" vd=itquii date=2018-7-17 time=5:51:58 logid=psu type=iat subtype=ept level=high eventtime=ectob logtime=aUtenim srcip=10.242.119.111 srcport=645 srcintf=lo1640 srcintfrole=tDuisa dstip=10.239.231.168 dstport=88 dstintf=lo3385 dstintfrole=nimi poluuid=niamqu sessionid=uioffi proto=1 action=allow policyid=consequa policytype=tionu crscore=60.452000 craction=quines crlevel=entsu appcat=ineavol service=abor srccountry=giatq dstcountry=nonpro trandisp=elitsedd tranip=10.188.131.18 tranport=981 duration=46.954000 sentbyte=2770 rcvdbyte=4226 sentpkt=tam app=uovo -logver=orinrepr date=2018-8-1 time=12:54:32 log_id=untut devid=siu devname=lorem logid=icons type=hende subtype=umdol level=medium vd=psaq srcip=10.24.154.250 srcport=2108 srcintf=eth2707 dstip=10.124.187.230 dstport=6119 dstintf=lo105 poluuid=mqu sessionid=tse proto=udp action=accept policyid=ueip trandisp=amvo duration=20.956000 sentbyte=2068 rcvdbyte=306 devtype=reetdolo osname=tten osversion=1.979 mastersrcmac=usa srcmac=01:00:5e:6a:a6:c9 crscore=45.307000 craction=oremagna crlevel=siuta eventtype=amnihil user=nderit service=ficia hostname=tru3812.mail.lan profile=olo reqtype=xer url=https://api.example.net/nsec/smo.gif?etq=trumexe#rai direction=outbound msg=tNequepo method=byCicer cat=imvenia catdesc=ipit device_id=tdolorem log_id=nderitin pri=low userfrom=enderitq adminprof=amvolu timezone=GMT-07:00 main_type=temvele trigger_policy=ofd sub_type=quam severity_level=umdol policy=porincid src=10.106.101.87 src_port=7569 dst=10.247.124.74 dst_port=2491 http_method=inea http_url=ipsu http_host=iden http_agent=oreseo http_session_id=edictasu signature_subclass=aerat signature_id=4358 srccountry=lites content_switch_name=col server_pool_name=litsedd false_positive_mitigation=mnis user_name=ainci monitor_status=aturve http_refer=https://api.example.com/mporain/secte.txt?amqui=rume#uptate http_version=tisundeo dev_id=uid threat_weight=eFini history_threat_weight=mnis threat_level=tametco ftp_mode=snisiut ftp_cmd=lit cipher_suite=laborio msg_id=aaliqu -date=2018-8-15 time=7:57:06 devname=mid device_id=henderi log_id=consec type=event subtype=dquia pri=high desc=isiutali user=rehe userfrom=volupta msg=etcons action=deny adom=etdol408.internal.home session_id=agnamali -date=2018-8-29 time=2:59:40 logver=cae devid=Utenimad devname=onsequ logid=Bon type=amquisno subtype=mullam level=very-high vd=admi srcip=10.111.106.60 srcport=5449 srcintf=lo5820 dstip=10.142.181.192 dstport=4386 dstintf=lo6200 poluuid=lmolest sessionid=miurerep proto=17 action=allow policyid=Sed trandisp=isau duration=66.574000 sentbyte=75 rcvdbyte=806 devtype=idest osname=ostru osversion=1.4342 mastersrcmac=enimip srcmac=01:00:5e:11:d6:5d crscore=66.141000 craction=umquiado crlevel=taspe eventtype=empori user=mipsum service=tium hostname=riaturE1644.www5.example profile=ender reqtype=uine url=https://internal.example.com/dolo/exeacom.txt?tlab=eufugiat#upta direction=internal msg=reetdo method=mad cat=mdolor catdesc=amcorpor device_id=oremquel log_id=san pri=high userfrom=amqui adminprof=itatise timezone=GMT-07:00 main_type=cia trigger_policy=lup sub_type=cipitla severity_level=niam policy=mullamc src=10.215.144.167 src_port=6675 dst=10.162.114.52 dst_port=2925 http_method=quepor http_url=Lor http_host=ten http_agent=exeacomm http_session_id=cusan signature_subclass=oquisq signature_id=4993 srccountry=ihilmol content_switch_name=seosqui server_pool_name=tiset false_positive_mitigation=ciade user_name=erspici monitor_status=xercitat http_refer=https://internal.example.net/utlab/entoreve.html?umdol=nseq#autodita http_version=loreme dev_id=eratv threat_weight=tametcon history_threat_weight=orsi threat_level=ull ftp_mode=mcor ftp_cmd=iamquis cipher_suite=aeabi msg_id=ore -date=2018-9-12 time=10:02:15 logver=catcup devid=ectetur devname=cons logid=spiciati type=upidata subtype=utlabo level=high vd=ersp srcip=10.101.207.156 srcport=2086 srcintf=enp0s4931 dstip=10.12.8.82 dstport=4369 dstintf=enp0s7520 poluuid=nemull sessionid=trumex proto=6 action=accept policyid=doloremq trandisp=iade duration=26.420000 sentbyte=5013 rcvdbyte=7641 devtype=uidolo osname=ita osversion=1.6452 mastersrcmac=rchite srcmac=01:00:5e:41:90:bf crscore=107.693000 craction=tionem crlevel=volupta eventtype=adol user=econsequ service=orever hostname=mdolo7008.api.corp profile=reetdolo reqtype=psam url=https://www5.example.org/orumet/aliqu.txt?tion=sun#utod direction=outbound msg=rinci method=uamestqu cat=riatu catdesc=ulaparia device_id=remagna log_id=fugi pri=very-high userfrom=xerc adminprof=caecat timezone=OMST main_type=cor trigger_policy=nonnumqu sub_type=uidexea severity_level=emu policy=asia src=10.162.128.87 src_port=6214 dst=10.78.75.82 dst_port=7799 http_method=uptat http_url=con http_host=tem http_agent=orpori http_session_id=lor signature_subclass=quiinea signature_id=7098 srccountry=rroquis content_switch_name=dolorema server_pool_name=prehe false_positive_mitigation=bori user_name=Sedutp monitor_status=ritinvo http_refer=https://internal.example.net/ica/nat.jpg?ddoe=nsequ#lloinve http_version=tdolo dev_id=billoi threat_weight=sequu history_threat_weight=ffic threat_level=imadmini ftp_mode=isnostru ftp_cmd=ostr cipher_suite=tinvo msg_id=lorumwr -logver=ctetura devname="reseosqu" devid="ittenbyC" vd=tlabor date=2018-9-27 time=5:04:49 logid=auteir type=uredolo subtype=uido level=medium eventtime=quiratio logtime=aincidu srcip=10.75.198.93 srcport=1982 srcintf=eth725 srcintfrole=umqu dstip=10.137.36.151 dstport=196 dstintf=lo1813 dstintfrole=rspici poluuid=duntutla sessionid=emeu proto=1 action=block policyid=atemUten policytype=turadipi crscore=16.226000 craction=estqu crlevel=orinre appcat=prehen service=equa srccountry=ciatisun dstcountry=mdolorem trandisp=nnumq tranip=10.51.106.43 tranport=6486 duration=78.551000 sentbyte=3531 rcvdbyte=5464 sentpkt=oremeumf app=volupt -logver=tnulapa devname="caecatcu" devid="xcepte" vd=deserun date=2018-10-11 time=12:07:23 logid=mvol type=erep subtype=teurs level=low eventtime=tiumdol logtime=byCicer srcip=10.154.151.111 srcport=5860 srcintf=eth1273 srcintfrole=uisnos dstip=10.7.230.206 dstport=5757 dstintf=lo1291 dstintfrole=pisc poluuid=eumfu sessionid=tseddoe proto=HOPOPT action=allow policyid=emulla policytype=bill crscore=147.522000 craction=oditaut crlevel=oloremqu appcat=untNeque service=reetdol srccountry=perspi dstcountry=tlab trandisp=udexerci tranip=10.249.93.150 tranport=799 duration=113.020000 sentbyte=2808 rcvdbyte=5744 sentpkt=ovolup app=squ -date=2018-10-25 time=7:09:57 logver=dolor devid=lit devname=ptatem logid=oeiusmod type=ugi subtype=utaliq level=very-high vd=toc srcip=10.76.177.154 srcport=1428 srcintf=eth4425 dstip=10.207.160.170 dstport=7037 dstintf=lo1570 poluuid=reseo sessionid=iration proto=tcp action=deny policyid=magn trandisp=iaecon duration=54.100000 sentbyte=622 rcvdbyte=6280 devtype=ill osname=oris osversion=1.5718 mastersrcmac=ulamcol srcmac=01:00:5e:19:ce:4b crscore=142.771000 craction=oNe crlevel=utfu eventtype=santiumd user=cididunt service=ctasu hostname=itse5466.api.example profile=ica reqtype=mnisis url=https://internal.example.com/nonnumqu/isciveli.gif?wri=aute#iscin direction=outbound msg=uat method=itasper cat=nibusBo catdesc=volupta device_id=olorinr log_id=iameaq pri=high userfrom=docons adminprof=uun timezone=OMST main_type=mremap trigger_policy=ate sub_type=agnaal severity_level=ibusB policy=mexe src=10.217.209.221 src_port=3639 dst=10.26.4.3 dst_port=5291 http_method=rsitame http_url=eca http_host=quirat http_agent=urmagn http_session_id=essec signature_subclass=prehende signature_id=1261 srccountry=setquas content_switch_name=nti server_pool_name=osamnis false_positive_mitigation=atisetqu user_name=ciduntut monitor_status=atisu http_refer=https://internal.example.com/architec/incul.txt?aborios=mco#amnisiu http_version=suntincu dev_id=lore threat_weight=equatu history_threat_weight=enbyCi threat_level=dolo ftp_mode=adipi ftp_cmd=beata cipher_suite=evelites msg_id=ipiscive -logver=umtot date=2018-11-9 time=2:12:32 log_id=eumiurer devid=inv devname=eac logid=rainc type=tinculp subtype=uianon level=high vd=corpori srcip=10.232.131.132 srcport=581 srcintf=enp0s6255 dstip=10.232.246.98 dstport=1854 dstintf=enp0s1526 poluuid=ivelit sessionid=itlabori proto=icmp action=accept policyid=oide trandisp=magni duration=72.993000 sentbyte=5817 rcvdbyte=6960 devtype=rrorsit osname=emipsu osversion=1.6603 mastersrcmac=temUte srcmac=01:00:5e:fe:be:28 crscore=134.746000 craction=hitec crlevel=sci eventtype=luptatev user=ruredo service=iamquis hostname=dquiac6194.api.lan profile=nidolo reqtype=runtmoll url=https://www5.example.org/utlabo/scip.html?voluptas=inv#upta direction=external msg=ors method=olupta cat=raincidu catdesc=nisi device_id=uipexea log_id=taedic pri=high userfrom=ugi adminprof=urExcep timezone=CET main_type=usant trigger_policy=uidolore sub_type=litse severity_level=ugitse policy=utfugi src=10.241.140.241 src_port=1813 dst=10.180.162.174 dst_port=7186 http_method=ido http_url=atnu http_host=ssuscipi http_agent=evita http_session_id=tconsect signature_subclass=lpaquiof signature_id=532 srccountry=lors content_switch_name=Finibus server_pool_name=totam false_positive_mitigation=idat user_name=nulapar monitor_status=git http_refer=https://www5.example.com/odtem/tati.jpg?ueips=umqu#ntexpli http_version=siuta dev_id=porincid threat_weight=itame history_threat_weight=inv threat_level=remaper ftp_mode=quaUteni ftp_cmd=evelit cipher_suite=oluptat msg_id=ditem -date=2018-11-23 time=9:15:06 devname=oditautf device_id=asiarc log_id=eddoei type=generic subtype=iatqu pri=very-high devid=itessec devname=dat logid=tdol type=emul subtype=ariatu level=high vd=reseo srcip=10.53.70.207 srcport=1793 srcintf=lo2279 dstip=10.73.140.61 dstport=2114 dstintf=lo368 poluuid=stlabo sessionid=atema proto=1 action=deny policyid=orporiss trandisp=iamq duration=128.426000 sentbyte=1800 rcvdbyte=5783 devtype=pis osname=riosam osversion=1.2052 mastersrcmac=iosam srcmac=01:00:5e:21:d3:0a crscore=65.426000 craction=archi crlevel=nes eventtype=atvolupt user=umwritt service=uae hostname=amco1592.mail.host profile=aaliq reqtype=olupta url=https://internal.example.com/ssusci/snostrud.txt?dolo=siutaliq#obeata direction=outbound msg=tame method=olo cat=vel catdesc=equamn device_id=tempora log_id=enimip pri=very-high userfrom=saqua adminprof=aperia timezone=OMST main_type=tNeque trigger_policy=metcon sub_type=enimadmi severity_level=orem policy=corpor src=10.110.99.222 src_port=5685 dst=10.62.140.108 dst_port=1225 http_method=ssitasp http_url=ptat http_host=asp http_agent=uatDui http_session_id=nofdeFin signature_subclass=unde signature_id=3979 srccountry=seruntm content_switch_name=aera server_pool_name=scive false_positive_mitigation=ngelit user_name=moenimi monitor_status=mqu http_refer=https://mail.example.org/ueipsaq/upid.gif?utla=emUte#tisund http_version=tutla dev_id=isund threat_weight=atemU history_threat_weight=uidex threat_level=uptate ftp_mode=eac ftp_cmd=peria cipher_suite=amaliq msg_id=ium -logver=ptate date=2018-12-7 time=4:17:40 log_id=tenatu devid=emo devname=ratio logid=maperia type=Maloru subtype=sumquia level=low vd=imadmini srcip=10.237.5.219 srcport=3828 srcintf=eth4604 dstip=10.197.99.150 dstport=3877 dstintf=enp0s7388 poluuid=odo sessionid=itseddoe proto=prm action=accept policyid=itinvo trandisp=uiavol duration=96.864000 sentbyte=2685 rcvdbyte=7612 devtype=urmagn osname=ficiade osversion=1.2691 mastersrcmac=equ srcmac=01:00:5e:f5:2a:24 crscore=163.671000 craction=mipsum crlevel=dolor eventtype=cupidata user=niamquis service=lapariat hostname=dicta7226.mail.example profile=eddoei reqtype=cingel url=https://api.example.com/temporai/umw.jpg?mveniamq=litsed#ptasn direction=unknown msg=loinv method=umd cat=madmi catdesc=xercit device_id=avolup log_id=etdo pri=medium userfrom=veleum adminprof=emUten timezone=CT main_type=proiden trigger_policy=cita sub_type=iac severity_level=ntincul policy=mnisiste src=10.4.244.115 src_port=4588 dst=10.53.50.77 dst_port=5330 http_method=lorem http_url=lore http_host=orroqu http_agent=tlabo http_session_id=iameaque signature_subclass=sautemve signature_id=6466 srccountry=emoe content_switch_name=ameiusmo server_pool_name=ntiumtot false_positive_mitigation=aeab user_name=idolo monitor_status=temac http_refer=https://api.example.net/ollita/idolore.html?illu=iut#asiarc http_version=imidest dev_id=mwri threat_weight=orsi history_threat_weight=ritinvol threat_level=rporiss ftp_mode=atu ftp_cmd=ddo cipher_suite=veli msg_id=ata -logver=lor dtime=2018-12-21 23:20:14.972538723 +0000 UTC devid=ori devname=eleumiu vd=amre date=2018-12-21 time=11:20:14 logid=atur type=untex subtype=Except level=very-high eventtime=econse logtime=iac srcip=10.221.100.157 srcport=865 srcintf=lo4518 srcintfrole=mqu dstip=10.236.211.111 dstport=1801 dstintf=enp0s454 dstintfrole=rauto poluuid=pteursi sessionid=iquamqua proto=tcp action=allow policyid=psumqui policytype=equeporr crscore=32.741000 craction=cusanti crlevel=doloreme appcat=nsecte service=reprehen srccountry=taspe dstcountry=litess trandisp=enimadm tranip=10.120.212.78 tranport=119 duration=17.257000 sentbyte=4752 rcvdbyte=3484 sentpkt=ntsuntin app=ectetur -date=2019-1-5 time=6:22:49 logver=intocca devid=vel devname=xeacom logid=orum type=voluptat subtype=nsequ level=medium vd=tenimad srcip=10.140.215.210 srcport=7229 srcintf=lo568 dstip=10.71.213.217 dstport=7475 dstintf=eth5820 poluuid=lup sessionid=reetdolo proto=HOPOPT action=accept policyid=dolor trandisp=emagnam duration=154.150000 sentbyte=2336 rcvdbyte=5326 devtype=emull osname=enatuser osversion=1.3052 mastersrcmac=ectob srcmac=01:00:5e:4a:5d:af crscore=9.013000 craction=niamqu crlevel=nrep eventtype=lauda user=ionevo service=busB hostname=pidatatn2627.www.localdomain profile=eritinvo reqtype=quiav url=https://mail.example.org/ngelit/dipiscin.gif?serro=ctet#umiurere direction=inbound msg=ciun method=ssitaspe cat=deomnis catdesc=ulamcol device_id=onn log_id=redol pri=medium userfrom=utlabore adminprof=nci timezone=OMST main_type=liqu trigger_policy=ectetura sub_type=aUte severity_level=untNeque policy=roi src=10.210.82.202 src_port=2749 dst=10.208.231.15 dst_port=412 http_method=rios http_url=diconseq http_host=tenima http_agent=iusm http_session_id=mveleumi signature_subclass=equinesc signature_id=5076 srccountry=mfugiatq content_switch_name=dmini server_pool_name=emveleu false_positive_mitigation=loree user_name=riatur monitor_status=tempor http_refer=https://internal.example.com/spiciati/tise.gif?ctas=rvelillu#qua http_version=ciat dev_id=iamq threat_weight=porin history_threat_weight=yCi threat_level=arc ftp_mode=santium ftp_cmd=numquame cipher_suite=umfugi msg_id=amestqui -logver=tesseq devname="nimides" devid="iusmodte" vd=involup date=2019-1-19 time=1:25:23 logid=edd type=dolorsi subtype=mcolabo level=low eventtime=exe logtime=nve srcip=10.226.255.3 srcport=5449 srcintf=lo7680 srcintfrole=iaconseq dstip=10.123.59.69 dstport=5399 dstintf=lo5835 dstintfrole=ntsunti poluuid=bor sessionid=uisnos proto=6 action=accept policyid=tation policytype=seddoe crscore=21.625000 craction=eur crlevel=ntmolli appcat=pitl service=nulap srccountry=ipexe dstcountry=aqueipsa trandisp=psum tranip=10.53.251.202 tranport=7501 duration=131.751000 sentbyte=6876 rcvdbyte=220 sentpkt=ugi app=ptate -logver=rur devname="edut" devid="sitametc" vd=iarchite date=2019-2-2 time=8:27:57 logid=uide type=iono subtype=aboris level=very-high eventtime=imidest logtime=ulamc srcip=10.3.85.176 srcport=318 srcintf=eth2546 srcintfrole=uptateve dstip=10.212.56.26 dstport=3032 dstintf=enp0s2353 dstintfrole=loin poluuid=cinge sessionid=tutl proto=udp action=block policyid=nesciu policytype=ueip crscore=162.484000 craction=orumSe crlevel=mSe appcat=itame service=quaturv srccountry=lumdolor dstcountry=persp trandisp=leumi tranip=10.29.141.252 tranport=2077 duration=106.468000 sentbyte=3472 rcvdbyte=7868 sentpkt=orum app=reseos -date=2019-2-17 time=3:30:32 devname=orem device_id=seq log_id=cus type=generic subtype=tnulap pri=very-high devid=psamvolu devname=inculp logid=eni type=tcupid subtype=ercita level=very-high vd=olorinr srcip=10.110.166.81 srcport=7354 srcintf=lo3023 dstip=10.181.48.82 dstport=1225 dstintf=eth7640 poluuid=conseq sessionid=Nemoen proto=6 action=cancel policyid=umquamei trandisp=nih duration=55.527000 sentbyte=3449 rcvdbyte=4658 devtype=quia osname=eabill osversion=1.95 mastersrcmac=oeiusmo srcmac=01:00:5e:82:ca:1b crscore=67.321000 craction=rumwrit crlevel=tionofd eventtype=ill user=orroquis service=laparia hostname=emveleu4029.api.local profile=tconse reqtype=ntsun url=https://internal.example.net/inc/riaturEx.htm?mnihilm=itinvo#lestia direction=external msg=metcons method=lumd cat=liquaUt catdesc=snos device_id=maccusan log_id=oeni pri=medium userfrom=tiaecon adminprof=tincu timezone=GMT-07:00 main_type=untmoll trigger_policy=par sub_type=idatatno severity_level=tfugit policy=tla src=10.126.11.186 src_port=589 dst=10.236.175.163 dst_port=6562 http_method=atemqui http_url=icaboN http_host=Utenimad http_agent=res http_session_id=officiad signature_subclass=nsectet signature_id=3977 srccountry=temU content_switch_name=ciduntut server_pool_name=ionofd false_positive_mitigation=etqua user_name=udantiu monitor_status=tium http_refer=https://internal.example.net/leumiu/iuta.html?tfugit=rorsitv#tiaecons http_version=uamestq dev_id=aliquaUt threat_weight=boreet history_threat_weight=mquam threat_level=volu ftp_mode=nof ftp_cmd=boNe cipher_suite=ovolu msg_id=cid -logver=equamn devname="mes" devid="itatio" vd=ssecillu date=2019-3-3 time=10:33:06 logid=oeius type=itin subtype=nostrud level=medium eventtime=byCic logtime=mnisiuta srcip=10.171.60.173 srcport=209 srcintf=lo1917 srcintfrole=usmodite dstip=10.11.150.136 dstport=3615 dstintf=lo5438 dstintfrole=olup poluuid=urQuis sessionid=iquip proto=1 action=cancel policyid=untutl policytype=elite crscore=176.898000 craction=ipsaq crlevel=spici appcat=nvolupt service=antiu srccountry=llumquid dstcountry=paq trandisp=olup tranip=10.83.98.220 tranport=1300 duration=73.115000 sentbyte=5812 rcvdbyte=3339 sentpkt=amquis app=umtotam -logver=pitlabo dtime=2019-03-17 17:35:40.532538723 +0000 UTC devid=lorsita devname=datatno vd=emac date=2019-3-17 time=5:35:40 logid=uiavo type=tdo subtype=ratvolup level=high eventtime=dolo logtime=quioffic srcip=10.238.49.73 srcport=1554 srcintf=enp0s11 srcintfrole=riatu dstip=10.74.88.209 dstport=740 dstintf=lo5287 dstintfrole=quep poluuid=tfugitse sessionid=oenimips proto=udp action=deny policyid=mdo policytype=map crscore=148.871000 craction=osqui crlevel=consequ appcat=catcupid service=velitess srccountry=sit dstcountry=ipisc trandisp=onsectet tranip=10.92.3.166 tranport=5777 duration=156.314000 sentbyte=715 rcvdbyte=3946 sentpkt=itvol app=dolo -logver=amquisno dtime=2019-04-01 00:38:14.792538723 +0000 UTC devid=uptasnul devname=ptate vd=deri date=2019-4-1 time=12:38:14 logid=periamea type=equatD subtype=quaturQu level=high eventtime=rpo logtime=inr srcip=10.119.248.36 srcport=2450 srcintf=enp0s1885 srcintfrole=ten dstip=10.187.107.47 dstport=288 dstintf=lo2445 dstintfrole=fugia poluuid=psa sessionid=iset proto=prm action=allow policyid=ecte policytype=ionemull crscore=84.399000 craction=sBo crlevel=nimides appcat=iurere service=edolorin srccountry=labor dstcountry=quelaud trandisp=ira tranip=10.84.200.121 tranport=3226 duration=128.212000 sentbyte=2150 rcvdbyte=4329 sentpkt=nos app=icta -logver=itseddo devname="tasu" devid="mquae" vd=CSedu date=2019-4-15 time=7:40:49 logid=atae type=aeconseq subtype=boNemo level=very-high eventtime=nemulla logtime=tmollit srcip=10.167.128.229 srcport=4052 srcintf=eth1833 srcintfrole=ciatisu dstip=10.135.213.17 dstport=6427 dstintf=eth6468 dstintfrole=ritat poluuid=dipi sessionid=asnulapa proto=prm action=block policyid=onsequa policytype=seddoe crscore=23.021000 craction=Bonorume crlevel=emeumfu appcat=tla service=uidexea srccountry=odtem dstcountry=nvolupt trandisp=stia tranip=10.30.239.222 tranport=1546 duration=10.721000 sentbyte=6561 rcvdbyte=1057 sentpkt=itectobe app=rroq -date=2019-4-29 time=2:43:23 devname=uunt device_id=pic log_id=unt type=generic subtype=emUt pri=medium devid=pernatur devname=orem logid=enbyCice type=velil subtype=nsequat level=low vd=duntutl srcip=10.238.172.76 srcport=156 srcintf=lo1215 dstip=10.201.119.253 dstport=2230 dstintf=enp0s7218 poluuid=nimad sessionid=tionu proto=udp action=block policyid=emagna trandisp=quin duration=68.078000 sentbyte=2527 rcvdbyte=1150 devtype=consequ osname=min osversion=1.1028 mastersrcmac=edicta srcmac=01:00:5e:cd:6c:ed crscore=163.905000 craction=itinvolu crlevel=urerepre eventtype=iumdol user=serror service=uptass hostname=rspic5637.api.local profile=itatise reqtype=iut url=https://api.example.net/ita/esse.txt?amquis=iatquovo#rExce direction=inbound msg=uraut method=reetdol cat=umtotam catdesc=itaedi device_id=ant log_id=tiumt pri=very-high userfrom=ratvolup adminprof=iamqu timezone=CT main_type=quaturve trigger_policy=tsunti sub_type=ero severity_level=iusmodi policy=acomm src=10.169.133.219 src_port=92 dst=10.115.166.48 dst_port=7491 http_method=eleumiur http_url=ididun http_host=edi http_agent=gia http_session_id=uaturQui signature_subclass=emi signature_id=5446 srccountry=etM content_switch_name=eve server_pool_name=iru false_positive_mitigation=ipit user_name=emq monitor_status=elitsedq http_refer=https://www.example.net/onsequat/emagnaa.gif?itse=tco#nnumqua http_version=erit dev_id=lorsitam threat_weight=emagnama history_threat_weight=ute threat_level=Excep ftp_mode=utpersp ftp_cmd=rehe cipher_suite=tiumt msg_id=ulamc -logver=runt date=2019-5-13 time=9:45:57 log_id=emipsu devid=icaboNem devname=Except logid=fugits type=maliquam subtype=mav level=very-high vd=ecill srcip=10.36.122.89 srcport=5040 srcintf=lo3887 dstip=10.206.76.186 dstport=741 dstintf=eth2435 poluuid=atisund sessionid=enbyCic proto=1 action=block policyid=nrepre trandisp=uisautem duration=145.667000 sentbyte=4247 rcvdbyte=4374 devtype=tio osname=aconseq osversion=1.4195 mastersrcmac=enatuser srcmac=01:00:5e:1a:9c:4f crscore=124.786000 craction=rcitatio crlevel=olore eventtype=ntexp user=atio service=roquisqu hostname=rror3870.www5.local profile=volu reqtype=occ url=https://www5.example.net/culpa/isun.txt?cola=tura#rat direction=internal msg=sect method=ing cat=nis catdesc=aboreet device_id=ulapari log_id=isetqu pri=high userfrom=ons adminprof=Sedu timezone=CEST main_type=icaboNem trigger_policy=enderi sub_type=edqu severity_level=cita policy=uidolore src=10.146.255.40 src_port=3003 dst=10.226.39.82 dst_port=3950 http_method=oluptate http_url=orumwrit http_host=aconse http_agent=ites http_session_id=abori signature_subclass=dolor signature_id=3543 srccountry=amqu content_switch_name=uamest server_pool_name=ntoccaec false_positive_mitigation=ites user_name=caecatcu monitor_status=iof http_refer=https://api.example.com/uae/mdolo.txt?aute=itatise#utpers http_version=equunt dev_id=Nemo threat_weight=itse history_threat_weight=lillumq threat_level=idid ftp_mode=uis ftp_cmd=velits cipher_suite=mmodo msg_id=rporissu -logver=utemvel dtime=2019-05-28 04:48:31.832538723 +0000 UTC devid=exercita devname=emaperi vd=aspernat date=2019-5-28 time=4:48:31 logid=ddoei type=nihi subtype=umfu level=low eventtime=ehen logtime=olupt srcip=10.53.82.96 srcport=7088 srcintf=eth297 srcintfrole=nostru dstip=10.224.212.88 dstport=5404 dstintf=lo4266 dstintfrole=natuserr poluuid=ipi sessionid=eniamqui proto=icmp action=deny policyid=urvelill policytype=iadese crscore=174.116000 craction=isundeo crlevel=emq appcat=rehender service=uat srccountry=apa dstcountry=tani trandisp=per tranip=10.35.240.70 tranport=2587 duration=62.993000 sentbyte=7102 rcvdbyte=2380 sentpkt=ataevit app=chi -logver=lorsita devname="oeius" devid="trud" vd=aco date=2019-6-11 time=11:51:06 logid=uei type=tsedqu subtype=agni level=very-high eventtime=rsint logtime=catc srcip=10.186.253.240 srcport=6982 srcintf=enp0s5429 srcintfrole=end dstip=10.233.128.7 dstport=2455 dstintf=eth5315 dstintfrole=onnumq poluuid=lupt sessionid=ugiatq proto=prm action=cancel policyid=utla policytype=iosamn crscore=164.209000 craction=tor crlevel=toreve appcat=ita service=orain srccountry=tnulap dstcountry=aevitae trandisp=aqu tranip=10.66.149.234 tranport=6236 duration=128.130000 sentbyte=6344 rcvdbyte=475 sentpkt=loremeu app=tate -logver=elaud dtime=2019-06-25 18:53:40.352538723 +0000 UTC devid=iad devname=irat vd=upi date=2019-6-25 time=6:53:40 logid=rsintocc type=itanim subtype=sinto level=medium eventtime=lore logtime=eabi srcip=10.227.133.134 srcport=3351 srcintf=enp0s4820 srcintfrole=erspici dstip=10.46.11.114 dstport=4009 dstintf=enp0s7159 dstintfrole=oremq poluuid=rspiciat sessionid=ptas proto=tcp action=cancel policyid=ore policytype=dut crscore=128.554000 craction=remape crlevel=itectob appcat=sedquia service=mquisnos srccountry=mwritt dstcountry=avolupt trandisp=lumdolo tranip=10.173.140.201 tranport=6422 duration=133.394000 sentbyte=7249 rcvdbyte=1387 sentpkt=str app=sit -logver=elillum dtime=2019-07-10 01:56:14.612538723 +0000 UTC devid=isnos devname=emp vd=eos date=2019-7-10 time=1:56:14 logid=sciveli type=Bonoru subtype=rai level=low eventtime=omm logtime=cepteu srcip=10.205.18.11 srcport=6737 srcintf=eth4759 srcintfrole=ueipsa dstip=10.69.130.207 dstport=1191 dstintf=eth614 dstintfrole=architec poluuid=era sessionid=ptatem proto=udp action=cancel policyid=isi policytype=ssecill crscore=44.181000 craction=exerci crlevel=ptatemUt appcat=temqu service=ofd srccountry=nimvenia dstcountry=ari trandisp=eir tranip=10.170.236.123 tranport=4346 duration=150.036000 sentbyte=6877 rcvdbyte=1751 sentpkt=orum app=tation -logver=repre date=2019-7-24 time=8:58:48 log_id=ore devid=ionemu devname=rehend logid=uiad type=tasu subtype=sciun level=high vd=taev srcip=10.196.124.206 srcport=7569 srcintf=enp0s2181 dstip=10.186.88.110 dstport=4203 dstintf=enp0s5497 poluuid=asnulapa sessionid=hende proto=0 action=deny policyid=ntmolli trandisp=uto duration=178.755000 sentbyte=6361 rcvdbyte=1742 devtype=ipsu osname=taedi osversion=1.2682 mastersrcmac=acom srcmac=01:00:5e:99:e3:a5 crscore=175.099000 craction=Cic crlevel=aturveli eventtype=lica user=Exc service=amvolup hostname=velill3821.mail.invalid profile=asnulap reqtype=usmodte url=https://example.com/loremag/mqu.gif?bore=lapari#aborios direction=external msg=lorem method=mnisiuta cat=quiadolo catdesc=abo device_id=msequine log_id=mrem pri=medium userfrom=atuserr adminprof=nsequatu timezone=ET main_type=uptasnu trigger_policy=atemUt sub_type=iurere severity_level=oident policy=volup src=10.97.254.192 src_port=302 dst=10.124.34.251 dst_port=3899 http_method=imide http_url=sequa http_host=ine http_agent=ollitan http_session_id=eacomm signature_subclass=onseq signature_id=6250 srccountry=reetd content_switch_name=equamnih server_pool_name=tevelite false_positive_mitigation=sitvolup user_name=epor monitor_status=atatnonp http_refer=https://example.org/elauda/ria.htm?uptatemU=iono#quun http_version=itationu dev_id=eniamqui threat_weight=adolo history_threat_weight=oreetdol threat_level=uinesciu ftp_mode=sciun ftp_cmd=tametc cipher_suite=rExcep msg_id=avolup -logver=olores devname="ineavol" devid="bori" vd=taev date=2019-8-7 time=4:01:23 logid=ngelit type=uidexea subtype=stiaec level=very-high eventtime=quipex logtime=rsintoc srcip=10.9.41.221 srcport=4010 srcintf=eth434 srcintfrole=estlabor dstip=10.81.58.91 dstport=2247 dstintf=lo6072 dstintfrole=udexerci poluuid=onemul sessionid=elaud proto=tcp action=cancel policyid=trudexe policytype=tiumtota crscore=53.861000 craction=ariaturE crlevel=fug appcat=umqu service=umqu srccountry=roide dstcountry=tio trandisp=autem tranip=10.204.98.238 tranport=3885 duration=108.380000 sentbyte=2498 rcvdbyte=3936 sentpkt=aquioffi app=aliqui -date=2019-8-21 time=11:03:57 devname=unti device_id=tena log_id=velits type=event subtype=oditautf pri=high desc=rmagni user=tiono userfrom=utemvele msg=taevi action=cancel adom=xplicabo4308.www.example session_id=tquo -logver=nrepr devname="uipex" devid="alorumw" vd=nibus date=2019-9-5 time=6:06:31 logid=eiusmo type=rci subtype=seosquir level=medium eventtime=ume logtime=ercitati srcip=10.35.84.125 srcport=341 srcintf=enp0s2388 srcintfrole=pernatu dstip=10.37.120.29 dstport=4170 dstintf=enp0s1127 dstintfrole=tasuntex poluuid=etura sessionid=taedi proto=udp action=accept policyid=quiacon policytype=udexerc crscore=66.169000 craction=undeomni crlevel=ritquiin appcat=taspern service=iadeser srccountry=nos dstcountry=mollita trandisp=eserun tranip=10.212.208.70 tranport=3237 duration=36.569000 sentbyte=5330 rcvdbyte=11 sentpkt=otamr app=eveli -logver=temsequi devname="aturvel" devid="elaudan" vd=alorum date=2019-9-19 time=1:09:05 logid=olor type=inesc subtype=tlaborio level=high eventtime=equeporr logtime=seq srcip=10.143.65.84 srcport=2670 srcintf=enp0s5828 srcintfrole=ddoeiu dstip=10.199.201.26 dstport=3770 dstintf=eth4236 dstintfrole=ore poluuid=onse sessionid=abo proto=1 action=accept policyid=magnaa policytype=tateveli crscore=94.258000 craction=xplica crlevel=dex appcat=rsintocc service=iusmo srccountry=oquisqu dstcountry=ullamcor trandisp=remagn tranip=10.207.207.106 tranport=2048 duration=94.877000 sentbyte=6896 rcvdbyte=7419 sentpkt=tvolup app=ites -logver=rExce dtime=2019-10-03 20:11:40.172538723 +0000 UTC devid=rittenby devname=gni vd=ritq date=2019-10-3 time=8:11:40 logid=lestiaec type=rissusci subtype=fdeFi level=high eventtime=ehende logtime=riatu srcip=10.204.27.48 srcport=5998 srcintf=lo7358 srcintfrole=emaperia dstip=10.163.236.253 dstport=7768 dstintf=enp0s2100 dstintfrole=sequatu poluuid=ugi sessionid=oditau proto=1 action=block policyid=mvele policytype=atae crscore=123.668000 craction=imips crlevel=admi appcat=ocons service=tiumdol srccountry=sunt dstcountry=rrorsi trandisp=remagna tranip=10.41.61.88 tranport=426 duration=82.943000 sentbyte=525 rcvdbyte=3702 sentpkt=dolor app=ips -logver=ipitlab dtime=2019-10-18 03:14:14.432538723 +0000 UTC devid=ipsa devname=dents vd=erepreh date=2019-10-18 time=3:14:14 logid=amest type=dolore subtype=xer level=medium eventtime=onemul logtime=off srcip=10.246.81.164 srcport=3453 srcintf=lo3071 srcintfrole=ende dstip=10.185.44.26 dstport=3193 dstintf=lo7861 dstintfrole=tationul poluuid=tam sessionid=byCic proto=0 action=cancel policyid=cons policytype=serro crscore=5.473000 craction=uiac crlevel=aecatcu appcat=sed service=uisnostr srccountry=aquei dstcountry=ation trandisp=sumqu tranip=10.53.110.111 tranport=2549 duration=141.141000 sentbyte=5569 rcvdbyte=5239 sentpkt=entore app=uaturQ -logver=xpli date=2019-11-1 time=10:16:48 log_id=quae devid=totamre devname=lam logid=quamestq type=porai subtype=oinve level=medium vd=hender srcip=10.84.154.230 srcport=1335 srcintf=enp0s1127 dstip=10.212.63.179 dstport=6790 dstintf=eth1762 poluuid=eufugia sessionid=temqu proto=3 action=allow policyid=tvolup trandisp=lori duration=130.339000 sentbyte=4763 rcvdbyte=4334 devtype=rnatur osname=etdolo osversion=1.802 mastersrcmac=adipisci srcmac=01:00:5e:7b:68:0e crscore=36.122000 craction=culpaq crlevel=quis eventtype=lupt user=upt service=aboN hostname=cupida6106.www5.local profile=tdo reqtype=asperna url=https://api.example.com/aco/empo.jpg?iumdol=iusm#ido direction=unknown msg=peri method=aspernat cat=seq catdesc=olup device_id=uamqu log_id=veli pri=high userfrom=etco adminprof=nulap timezone=CT main_type=radip trigger_policy=tali sub_type=ntin severity_level=loreseos policy=ites src=10.109.172.90 src_port=2785 dst=10.146.77.206 dst_port=1554 http_method=amnihilm http_url=ipsamv http_host=proid http_agent=xcep http_session_id=udantium signature_subclass=sum signature_id=1723 srccountry=iaecon content_switch_name=euf server_pool_name=norume false_positive_mitigation=hilmo user_name=aquaeab monitor_status=eporr http_refer=https://www.example.com/metMalo/santiu.jpg?icon=enderit#roquisqu http_version=lapa dev_id=imadm threat_weight=giatquo history_threat_weight=oeiusm threat_level=oreeuf ftp_mode=iusmodt ftp_cmd=umwrit cipher_suite=atatn msg_id=uatD -date=2019-11-15 time=5:19:22 devname=ptate device_id=Nemoe log_id=cupidat type=generic subtype=onsequ pri=high devid=nostr devname=umtotam logid=mqua type=emU subtype=gnido level=very-high vd=plicab srcip=10.8.161.226 srcport=3191 srcintf=eth5256 dstip=10.13.234.237 dstport=3760 dstintf=enp0s1149 poluuid=oeiusmo sessionid=nisi proto=6 action=allow policyid=lupt trandisp=tlaborio duration=18.804000 sentbyte=1061 rcvdbyte=6464 devtype=itan osname=iquidexe osversion=1.2314 mastersrcmac=fugia srcmac=01:00:5e:09:8f:0e crscore=5.320000 craction=onof crlevel=quam eventtype=rure user=ipis service=liqu hostname=unt2122.internal.local profile=orsitame reqtype=tassitas url=https://example.org/uidolor/turve.htm?temporai=uasiarch#ect direction=unknown msg=occae method=lpaqu cat=minimav catdesc=col device_id=riamea log_id=ern pri=low userfrom=odtempo adminprof=con timezone=CEST main_type=offici trigger_policy=uipexe sub_type=ium severity_level=quamqua policy=nsequatu src=10.38.18.72 src_port=3177 dst=10.202.250.141 dst_port=1824 http_method=volu http_url=quatDui http_host=stenat http_agent=liquip http_session_id=eiusmodt signature_subclass=dmi signature_id=4174 srccountry=ameaque content_switch_name=pitlabor server_pool_name=essequa false_positive_mitigation=ini user_name=maperia monitor_status=ovolup http_refer=https://mail.example.com/veniamq/uisno.htm?luptas=omm#eaquei http_version=iveli dev_id=lill threat_weight=voluptat history_threat_weight=aturveli threat_level=incidunt ftp_mode=tatnonp ftp_cmd=abi cipher_suite=nimave msg_id=atu -logver=siu date=2019-11-30 time=12:21:57 log_id=inrepr devid=cero devname=ita logid=xercitat type=meumfug subtype=umt level=very-high vd=laparia srcip=10.195.87.127 srcport=760 srcintf=lo3094 dstip=10.52.118.202 dstport=6556 dstintf=enp0s5751 poluuid=ectobe sessionid=rehender proto=udp action=block policyid=orinc trandisp=tcons duration=52.473000 sentbyte=7043 rcvdbyte=4714 devtype=suscipi osname=imipsam osversion=1.4674 mastersrcmac=hilm srcmac=01:00:5e:73:ca:c1 crscore=54.412000 craction=etd crlevel=erspici eventtype=tfug user=atatno service=sed hostname=luptat2613.internal.localhost profile=olupt reqtype=mipsum url=https://www.example.net/Maloru/lapariat.htm?tlabori=rehender#odtempo direction=inbound msg=alorum method=tmollit cat=bori catdesc=antium device_id=reetdo log_id=rchitec pri=medium userfrom=cipitlab adminprof=venia timezone=CT main_type=quid trigger_policy=mwrit sub_type=cid severity_level=lupt policy=adipisc src=10.182.124.88 src_port=116 dst=10.139.144.75 dst_port=5037 http_method=utodi http_url=isiutali http_host=oremeu http_agent=mquaerat http_session_id=conse signature_subclass=mestq signature_id=5535 srccountry=turQuisa content_switch_name=itasper server_pool_name=cidu false_positive_mitigation=ips user_name=modo monitor_status=ela http_refer=https://example.org/unti/niamqu.html?ris=veli#giatnu http_version=tanimide dev_id=ectetur threat_weight=umexer history_threat_weight=nim threat_level=nisiuta ftp_mode=cipitla ftp_cmd=ditautf cipher_suite=oluptasn msg_id=madmin -date=2019-12-14 time=7:24:31 logver=imadm devid=stla devname=cab logid=orr type=olu subtype=quatDu level=low vd=siste srcip=10.151.47.249 srcport=6697 srcintf=lo5632 dstip=10.155.194.6 dstport=3005 dstintf=enp0s6106 poluuid=quatDu sessionid=deFinib proto=HOPOPT action=block policyid=taedic trandisp=ffi duration=130.219000 sentbyte=2693 rcvdbyte=568 devtype=consequ osname=rumw osversion=1.1386 mastersrcmac=temveleu srcmac=01:00:5e:df:96:27 crscore=104.315000 craction=item crlevel=remipsum eventtype=olupt user=usc service=ernat hostname=neavo4796.internal.domain profile=tatemac reqtype=exer url=https://www5.example.com/xea/ssecill.html?quianonn=quun#one direction=internal msg=riame method=uaUte cat=quae catdesc=utlabor device_id=ameius log_id=tate pri=very-high userfrom=lupta adminprof=atemseq timezone=CEST main_type=amcolab trigger_policy=ectobea sub_type=itsedq severity_level=pta policy=remipsu src=10.35.10.19 src_port=3941 dst=10.188.124.185 dst_port=5837 http_method=tali http_url=tasper http_host=amquisn http_agent=esciu http_session_id=iamea signature_subclass=perspi signature_id=7117 srccountry=emaccus content_switch_name=expl server_pool_name=giat false_positive_mitigation=uscipi user_name=dolo monitor_status=tionevol http_refer=https://internal.example.com/uptatema/dutpers.htm?tion=iumdol#ept http_version=Mal dev_id=tquasia threat_weight=ficiad history_threat_weight=roinBC threat_level=eufu ftp_mode=tio ftp_cmd=equatDu cipher_suite=exea msg_id=tasnulap diff --git a/x-pack/filebeat/module/fortinet/fortimanager/test/generated.log-expected.json b/x-pack/filebeat/module/fortinet/fortimanager/test/generated.log-expected.json deleted file mode 100644 index 09250acd07b..00000000000 --- a/x-pack/filebeat/module/fortinet/fortimanager/test/generated.log-expected.json +++ /dev/null @@ -1,8095 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T08:09:59.000Z", - "destination.bytes": 449, - "destination.geo.country_name": "sequa", - "destination.ip": "10.44.173.44", - "destination.nat.ip": "10.189.58.145", - "destination.nat.port": 5273, - "destination.port": 6125, - "event.action": "allow", - "event.code": "sse", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=iusm devname=\"modtempo\" devid=\"olab\" vd=nto date=2016-1-29 time=6:09:59 logid=sse type=exercita subtype=der level=very-high eventtime=odoco logtime=ria srcip=10.20.234.169 srcport=1001 srcintf=eth5722 srcintfrole=vol dstip=10.44.173.44 dstport=6125 dstintf=enp0s3068 dstintfrole=nseq poluuid=itinvol sessionid=psa proto=21 action=allow policyid=ntium policytype=psaq crscore=13.800000 craction=eab crlevel=aliqu appcat=Ute service=lupt srccountry=dolore dstcountry=sequa trandisp=abo tranip=10.189.58.145 tranport=5273 duration=14.119000 sentbyte=7880 rcvdbyte=449 sentpkt=mqui app=nci", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 0, - "network.bytes": 8329, - "observer.egress.interface.name": "enp0s3068", - "observer.ingress.interface.name": "eth5722", - "observer.product": "FortiManager", - "observer.serial_number": "olab", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "modtempo" - ], - "related.ip": [ - "10.189.58.145", - "10.20.234.169", - "10.44.173.44" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "der", - "rsa.misc.context": "abo", - "rsa.misc.event_source": "modtempo", - "rsa.misc.event_type": "exercita", - "rsa.misc.hardware_id": "olab", - "rsa.misc.log_session_id": "psa", - "rsa.misc.obj_name": "nci", - "rsa.misc.policy_id": "ntium", - "rsa.misc.reference_id": "sse", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "nto", - "rsa.network.dinterface": "enp0s3068", - "rsa.network.network_service": "lupt", - "rsa.network.sinterface": "eth5722", - "rsa.time.duration_time": 14.119, - "rsa.time.event_time": "2016-01-29T08:09:59.000Z", - "rsa.time.event_time_str": "odoco", - "rsa.web.reputation_num": 13.8, - "service.type": "fortinet", - "source.bytes": 7880, - "source.geo.country_name": "dolore", - "source.ip": "10.20.234.169", - "source.port": 1001, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-02-12T03:12:33.000Z", - "destination.bytes": 3879, - "destination.ip": "10.171.204.166", - "destination.port": 6668, - "event.action": "accept", - "event.code": "atio", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-2-12 time=1:12:33 logver=litesse devid=orev devname=pisciv logid=uii type=umexe subtype=estlabo level=high vd=iatnu srcip=10.182.84.248 srcport=4880 srcintf=enp0s208 dstip=10.162.33.193 dstport=7200 dstintf=enp0s2581 poluuid=nulapari sessionid=mwritten proto=prm action=accept policyid=uidolor trandisp=nibus duration=72.226000 sentbyte=6378 rcvdbyte=3879 devtype=riosam osname=anonnu osversion=1.410 mastersrcmac=ameaqu srcmac=01:00:5e:84:66:6c crscore=145.047000 craction=squame crlevel=ntex eventtype=eius user=luptat service=emape hostname=aer445.host profile=eumiu reqtype=uame url=https://www.example.net/orisn/cca.htm?ofdeF=metcons#roinBCS direction=external msg=com method=eataevi cat=byC catdesc=tinculp device_id=tur log_id=atio pri=high userfrom=atemsequ adminprof=nci timezone=CEST main_type=eFini trigger_policy=amco sub_type=exe severity_level=iatu policy=ionofde src=10.62.4.246 src_port=189 dst=10.171.204.166 dst_port=6668 http_method=mol http_url=taspe http_host=mvolu http_agent=radip http_session_id=tNequ signature_subclass=gelit signature_id=6728 srccountry=tconsec content_switch_name=nsequat server_pool_name=taev false_positive_mitigation=roidents user_name=oluptas monitor_status=llu http_refer=https://api.example.org/tamremap/tur.html?radipis=isetq#estqui http_version=uasiarch dev_id=emaper threat_weight=ssitasp history_threat_weight=eum threat_level=sum ftp_mode=uaerat ftp_cmd=boreet cipher_suite=onev msg_id=tenima", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "aer445.host", - "http.request.referrer": "https://api.example.org/tamremap/tur.html?radipis=isetq#estqui", - "input.type": "log", - "log.level": "high", - "log.offset": 593, - "network.bytes": 10257, - "network.direction": "external", - "observer.egress.interface.name": "enp0s2581", - "observer.ingress.interface.name": "enp0s208", - "observer.product": "FortiManager", - "observer.serial_number": "tur", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.410", - "related.hosts": [ - "aer445.host", - "mvolu", - "pisciv" - ], - "related.ip": [ - "10.171.204.166", - "10.62.4.246" - ], - "related.user": [ - "oluptas" - ], - "rsa.internal.event_desc": "com", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "eius", - "rsa.misc.OS": "anonnu", - "rsa.misc.action": [ - "accept", - "mol" - ], - "rsa.misc.category": "exe", - "rsa.misc.client": "radip", - "rsa.misc.context": "nibus", - "rsa.misc.event_source": "pisciv", - "rsa.misc.event_type": "umexe", - "rsa.misc.fcatnum": "byC", - "rsa.misc.filter": "tinculp", - "rsa.misc.hardware_id": "tur", - "rsa.misc.log_session_id": "tNequ", - "rsa.misc.policy_id": "uidolor", - "rsa.misc.policy_name": "ionofde", - "rsa.misc.reference_id": "atio", - "rsa.misc.rule_name": "eumiu", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 6728, - "rsa.misc.version": "1.410", - "rsa.misc.vsys": "iatnu", - "rsa.network.alias_host": [ - "aer445.host" - ], - "rsa.network.dinterface": "enp0s2581", - "rsa.network.network_service": "emape", - "rsa.network.sinterface": "enp0s208", - "rsa.threat.threat_desc": "sum", - "rsa.time.duration_time": 72.226, - "rsa.time.event_time": "2016-02-12T03:12:33.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 145.047, - "rsa.web.web_ref_domain": "mvolu", - "rule.name": "eumiu", - "service.type": "fortinet", - "source.bytes": 6378, - "source.geo.country_name": "tconsec", - "source.ip": "10.62.4.246", - "source.mac": "01:00:5e:84:66:6c", - "source.port": 189, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.net", - "url.extension": "htm", - "url.fragment": "roinBCS", - "url.original": "https://www.example.net/orisn/cca.htm?ofdeF=metcons#roinBCS", - "url.path": "/orisn/cca.htm", - "url.query": [ - "ofdeF=metcons", - "taspe" - ], - "url.scheme": "https", - "user.name": "oluptas" - }, - { - "@timestamp": "2016-02-26T10:15:08.000Z", - "destination.bytes": 13, - "destination.geo.country_name": "ima", - "destination.ip": "10.94.103.117", - "destination.nat.ip": "10.15.159.80", - "destination.nat.port": 6378, - "destination.port": 513, - "event.action": "allow", - "event.code": "tia", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=seq dtime=2016-02-26 20:15:08.252538723 +0000 UTC devid=olorema devname=ccaecat vd=veleumi date=2016-2-26 time=8:15:08 logid=tia type=enim subtype=dqu level=medium eventtime=uian logtime=tempo srcip=10.200.188.142 srcport=4665 srcintf=eth4496 srcintfrole=eetd dstip=10.94.103.117 dstport=513 dstintf=enp0s3491 dstintfrole=doloreeu poluuid=pori sessionid=occ proto=icmp action=allow policyid=reetdolo policytype=nrepreh crscore=18.839000 craction=uiano crlevel=mrema appcat=autfu service=natura srccountry=aboris dstcountry=ima trandisp=tanimi tranip=10.15.159.80 tranport=6378 duration=121.916000 sentbyte=6517 rcvdbyte=13 sentpkt=ugiatqu app=eacomm", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 2051, - "network.bytes": 6530, - "observer.egress.interface.name": "enp0s3491", - "observer.ingress.interface.name": "eth4496", - "observer.product": "FortiManager", - "observer.serial_number": "olorema", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "ccaecat" - ], - "related.ip": [ - "10.15.159.80", - "10.200.188.142", - "10.94.103.117" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "dqu", - "rsa.misc.context": "tanimi", - "rsa.misc.event_source": "ccaecat", - "rsa.misc.event_type": "enim", - "rsa.misc.hardware_id": "olorema", - "rsa.misc.log_session_id": "occ", - "rsa.misc.obj_name": "eacomm", - "rsa.misc.policy_id": "reetdolo", - "rsa.misc.reference_id": "tia", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "veleumi", - "rsa.network.dinterface": "enp0s3491", - "rsa.network.network_service": "natura", - "rsa.network.sinterface": "eth4496", - "rsa.time.duration_time": 121.916, - "rsa.time.event_time": "2016-02-26T10:15:08.000Z", - "rsa.time.event_time_str": "uian", - "rsa.web.reputation_num": 18.839, - "service.type": "fortinet", - "source.bytes": 6517, - "source.geo.country_name": "aboris", - "source.ip": "10.200.188.142", - "source.port": 4665, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-03-12T05:17:42.000Z", - "destination.bytes": 3269, - "destination.geo.country_name": "amquisno", - "destination.ip": "10.50.112.141", - "destination.nat.ip": "10.27.88.95", - "destination.nat.port": 776, - "destination.port": 7303, - "event.action": "cancel", - "event.code": "nimadmi", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=liqu devname=\"lorem\" devid=\"emq\" vd=isiu date=2016-3-12 time=3:17:42 logid=nimadmi type=iatisu subtype=iat level=low eventtime=suntinc logtime=elits srcip=10.131.233.27 srcport=5037 srcintf=eth3676 srcintfrole=eataevit dstip=10.50.112.141 dstport=7303 dstintf=eth3391 dstintfrole=olab poluuid=mquisnos sessionid=loremagn proto=1 action=cancel policyid=tsed policytype=orai crscore=61.614000 craction=incididu crlevel=eci appcat=aali service=ametcons srccountry=porainc dstcountry=amquisno trandisp=iinea tranip=10.27.88.95 tranport=776 duration=5.911000 sentbyte=1147 rcvdbyte=3269 sentpkt=tvol app=moll", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 2708, - "network.bytes": 4416, - "observer.egress.interface.name": "eth3391", - "observer.ingress.interface.name": "eth3676", - "observer.product": "FortiManager", - "observer.serial_number": "emq", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "lorem" - ], - "related.ip": [ - "10.131.233.27", - "10.27.88.95", - "10.50.112.141" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "iat", - "rsa.misc.context": "iinea", - "rsa.misc.event_source": "lorem", - "rsa.misc.event_type": "iatisu", - "rsa.misc.hardware_id": "emq", - "rsa.misc.log_session_id": "loremagn", - "rsa.misc.obj_name": "moll", - "rsa.misc.policy_id": "tsed", - "rsa.misc.reference_id": "nimadmi", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "isiu", - "rsa.network.dinterface": "eth3391", - "rsa.network.network_service": "ametcons", - "rsa.network.sinterface": "eth3676", - "rsa.time.duration_time": 5.911, - "rsa.time.event_time": "2016-03-12T05:17:42.000Z", - "rsa.time.event_time_str": "suntinc", - "rsa.web.reputation_num": 61.614, - "service.type": "fortinet", - "source.bytes": 1147, - "source.geo.country_name": "porainc", - "source.ip": "10.131.233.27", - "source.port": 5037, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-03-26T12:20:16.000Z", - "destination.bytes": 3982, - "destination.ip": "10.157.213.15", - "destination.port": 3539, - "event.action": "allow", - "event.code": "ddoeiu", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-3-26 time=10:20:16 logver=inim devid=ema devname=roinBCSe logid=onse type=tae subtype=tatno level=very-high vd=oluptate srcip=10.52.54.178 srcport=4427 srcintf=lo1567 dstip=10.37.58.155 dstport=2430 dstintf=eth6096 poluuid=ciati sessionid=ercit proto=3 action=allow policyid=eniam trandisp=reetdolo duration=165.411000 sentbyte=7651 rcvdbyte=3982 devtype=rumet osname=oll osversion=1.5670 mastersrcmac=nido srcmac=01:00:5e:c3:0a:41 crscore=71.955000 craction=itlabori crlevel=Ciceroi eventtype=aveniam user=uradi service=nimadmin hostname=olo7148.mail.home profile=snulapar reqtype=aedic url=https://api.example.com/iumto/aboreetd.gif?dun=enim#saute direction=internal msg=eriame method=lorema cat=avol catdesc=labor device_id=atuse log_id=ddoeiu pri=high userfrom=idolore adminprof=onse timezone=PST main_type=tation trigger_policy=ips sub_type=emeumfug severity_level=upta policy=omn src=10.87.212.179 src_port=1758 dst=10.157.213.15 dst_port=3539 http_method=ali http_url=nsect http_host=ntutl http_agent=caecatc http_session_id=onsequat signature_subclass=siuta signature_id=2896 srccountry=loru content_switch_name=ema server_pool_name=par false_positive_mitigation=itaut user_name=rveli monitor_status=rsint http_refer=https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf http_version=antiumto dev_id=strude threat_weight=ctetura history_threat_weight=usmod threat_level=edqui ftp_mode=mquidol ftp_cmd=ita cipher_suite=ipi msg_id=rsitamet", - "event.timezone": "PST", - "fileset.name": "fortimanager", - "host.name": "olo7148.mail.home", - "http.request.referrer": "https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf", - "input.type": "log", - "log.level": "high", - "log.offset": 3319, - "network.bytes": 11633, - "network.direction": "internal", - "network.protocol": "GGP", - "observer.egress.interface.name": "eth6096", - "observer.ingress.interface.name": "lo1567", - "observer.product": "FortiManager", - "observer.serial_number": "atuse", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.5670", - "related.hosts": [ - "ntutl", - "olo7148.mail.home", - "roinBCSe" - ], - "related.ip": [ - "10.157.213.15", - "10.87.212.179" - ], - "related.user": [ - "rveli" - ], - "rsa.internal.event_desc": "eriame", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "aveniam", - "rsa.misc.OS": "oll", - "rsa.misc.action": [ - "ali", - "allow" - ], - "rsa.misc.category": "emeumfug", - "rsa.misc.client": "caecatc", - "rsa.misc.context": "reetdolo", - "rsa.misc.event_source": "roinBCSe", - "rsa.misc.event_type": "tae", - "rsa.misc.fcatnum": "avol", - "rsa.misc.filter": "labor", - "rsa.misc.hardware_id": "atuse", - "rsa.misc.log_session_id": "onsequat", - "rsa.misc.policy_id": "eniam", - "rsa.misc.policy_name": "omn", - "rsa.misc.reference_id": "ddoeiu", - "rsa.misc.rule_name": "snulapar", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 2896, - "rsa.misc.version": "1.5670", - "rsa.misc.vsys": "oluptate", - "rsa.network.alias_host": [ - "olo7148.mail.home" - ], - "rsa.network.dinterface": "eth6096", - "rsa.network.network_service": "nimadmin", - "rsa.network.sinterface": "lo1567", - "rsa.threat.threat_desc": "edqui", - "rsa.time.duration_time": 165.411, - "rsa.time.event_time": "2016-03-26T12:20:16.000Z", - "rsa.time.timezone": "PST", - "rsa.web.reputation_num": 71.955, - "rsa.web.web_ref_domain": "ntutl", - "rule.name": "snulapar", - "service.type": "fortinet", - "source.bytes": 7651, - "source.geo.country_name": "loru", - "source.ip": "10.87.212.179", - "source.mac": "01:00:5e:c3:0a:41", - "source.port": 1758, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.com", - "url.extension": "gif", - "url.fragment": "saute", - "url.original": "https://api.example.com/iumto/aboreetd.gif?dun=enim#saute", - "url.path": "/iumto/aboreetd.gif", - "url.query": [ - "dun=enim", - "nsect" - ], - "url.scheme": "https", - "user.name": "rveli" - }, - { - "@timestamp": "2016-04-09T07:22:51.000Z", - "destination.bytes": 927, - "destination.ip": "10.76.73.140", - "destination.port": 3075, - "event.action": "accept", - "event.code": "moenimi", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-4-9 time=5:22:51 logver=eseru devid=remeum devname=orain logid=quip type=oin subtype=uisquam level=high vd=tinvol srcip=10.19.68.92 srcport=1409 srcintf=enp0s33 dstip=10.38.22.45 dstport=7036 dstintf=lo1120 poluuid=ditautfu sessionid=piscing proto=icmp action=accept policyid=ostr trandisp=rudexerc duration=135.013000 sentbyte=3369 rcvdbyte=927 devtype=itaut osname=imaven osversion=1.152 mastersrcmac=umdolo srcmac=01:00:5e:f7:4a:fd crscore=169.252000 craction=tfug crlevel=icab eventtype=mwr user=fugi service=inculpaq hostname=agna7678.internal.host profile=equa reqtype=mexercit url=https://www.example.net/tasuntex/sunt.txt?ume=incidi#picia direction=unknown msg=olupt method=dit cat=sumquiad catdesc=dexeaco device_id=ivelits log_id=moenimi pri=medium userfrom=etdolo adminprof=inv timezone=CEST main_type=ommod trigger_policy=sequatur sub_type=uidolo severity_level=lumquido policy=nihi src=10.114.150.67 src_port=1407 dst=10.76.73.140 dst_port=3075 http_method=uines http_url=nsec http_host=onse http_agent=emips http_session_id=imadmi signature_subclass=ostrume signature_id=6051 srccountry=eataev content_switch_name=liquide server_pool_name=uasia false_positive_mitigation=emp user_name=aperia monitor_status=ofdeFini http_refer=https://example.org/vol/riat.htm?atvol=umiur#imad http_version=msequi dev_id=isnostru threat_weight=iquaUten history_threat_weight=santium threat_level=iciatisu ftp_mode=rehender ftp_cmd=eporroqu cipher_suite=uat msg_id=tem", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "agna7678.internal.host", - "http.request.referrer": "https://example.org/vol/riat.htm?atvol=umiur#imad", - "input.type": "log", - "log.level": "medium", - "log.offset": 4778, - "network.bytes": 4296, - "network.direction": "unknown", - "observer.egress.interface.name": "lo1120", - "observer.ingress.interface.name": "enp0s33", - "observer.product": "FortiManager", - "observer.serial_number": "ivelits", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.152", - "related.hosts": [ - "agna7678.internal.host", - "onse", - "orain" - ], - "related.ip": [ - "10.114.150.67", - "10.76.73.140" - ], - "related.user": [ - "aperia" - ], - "rsa.internal.event_desc": "olupt", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "mwr", - "rsa.misc.OS": "imaven", - "rsa.misc.action": [ - "accept", - "uines" - ], - "rsa.misc.category": "uidolo", - "rsa.misc.client": "emips", - "rsa.misc.context": "rudexerc", - "rsa.misc.event_source": "orain", - "rsa.misc.event_type": "oin", - "rsa.misc.fcatnum": "sumquiad", - "rsa.misc.filter": "dexeaco", - "rsa.misc.hardware_id": "ivelits", - "rsa.misc.log_session_id": "imadmi", - "rsa.misc.policy_id": "ostr", - "rsa.misc.policy_name": "nihi", - "rsa.misc.reference_id": "moenimi", - "rsa.misc.rule_name": "equa", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 6051, - "rsa.misc.version": "1.152", - "rsa.misc.vsys": "tinvol", - "rsa.network.alias_host": [ - "agna7678.internal.host" - ], - "rsa.network.dinterface": "lo1120", - "rsa.network.network_service": "inculpaq", - "rsa.network.sinterface": "enp0s33", - "rsa.threat.threat_desc": "iciatisu", - "rsa.time.duration_time": 135.013, - "rsa.time.event_time": "2016-04-09T07:22:51.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 169.252, - "rsa.web.web_ref_domain": "onse", - "rule.name": "equa", - "service.type": "fortinet", - "source.bytes": 3369, - "source.geo.country_name": "eataev", - "source.ip": "10.114.150.67", - "source.mac": "01:00:5e:f7:4a:fd", - "source.port": 1407, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.net", - "url.extension": "txt", - "url.fragment": "picia", - "url.original": "https://www.example.net/tasuntex/sunt.txt?ume=incidi#picia", - "url.path": "/tasuntex/sunt.txt", - "url.query": [ - "nsec", - "ume=incidi" - ], - "url.scheme": "https", - "user.name": "aperia" - }, - { - "@timestamp": "2016-04-24T14:25:25.000Z", - "destination.bytes": 3605, - "destination.ip": "10.95.64.124", - "destination.port": 7042, - "event.action": "accept", - "event.code": "run", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=suntinc date=2016-4-24 time=12:25:25 log_id=xeac devid=nidolo devname=tatn logid=eli type=nnu subtype=dolo level=low vd=nse srcip=10.202.204.239 srcport=7783 srcintf=lo2857 dstip=10.147.28.176 dstport=7432 dstintf=enp0s1462 poluuid=mporain sessionid=icons proto=0 action=accept policyid=sequi trandisp=rehend duration=3.138000 sentbyte=6354 rcvdbyte=3605 devtype=numqu osname=qui osversion=1.4059 mastersrcmac=equi srcmac=01:00:5e:68:86:a1 crscore=72.701000 craction=tat crlevel=ipitla eventtype=quae user=maccusa service=uptat hostname=equep5085.mail.domain profile=aqu reqtype=rpo url=https://www.example.org/inesci/serror.html?mqu=apariat#tlabore direction=internal msg=ihilm method=atDu cat=eav catdesc=ionevo device_id=remagn log_id=run pri=very-high userfrom=iamquis adminprof=quirat timezone=CET main_type=ittenbyC trigger_policy=isc sub_type=aturve severity_level=emulla policy=mpori src=10.195.36.51 src_port=3905 dst=10.95.64.124 dst_port=7042 http_method=iadese http_url=nsectet http_host=utla http_agent=utei http_session_id=laborum signature_subclass=tionof signature_id=7613 srccountry=oin content_switch_name=lapari server_pool_name=data false_positive_mitigation=dolor user_name=nnum monitor_status=eritqu http_refer=https://internal.example.net/wri/bor.jpg?hitect=dol#leumiu http_version=namali dev_id=taevit threat_weight=rinrepre history_threat_weight=etconse threat_level=tincu ftp_mode=ari ftp_cmd=exercit cipher_suite=sci msg_id=quamnih", - "event.timezone": "CET", - "fileset.name": "fortimanager", - "host.name": "equep5085.mail.domain", - "http.request.referrer": "https://internal.example.net/wri/bor.jpg?hitect=dol#leumiu", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6253, - "network.bytes": 9959, - "network.direction": "internal", - "observer.egress.interface.name": "enp0s1462", - "observer.ingress.interface.name": "lo2857", - "observer.product": "FortiManager", - "observer.serial_number": "remagn", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4059", - "related.hosts": [ - "equep5085.mail.domain", - "tatn", - "utla" - ], - "related.ip": [ - "10.195.36.51", - "10.95.64.124" - ], - "related.user": [ - "nnum" - ], - "rsa.internal.event_desc": "ihilm", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "quae", - "rsa.misc.OS": "qui", - "rsa.misc.action": [ - "accept", - "iadese" - ], - "rsa.misc.category": "aturve", - "rsa.misc.client": "utei", - "rsa.misc.context": "rehend", - "rsa.misc.event_source": "tatn", - "rsa.misc.event_type": "nnu", - "rsa.misc.fcatnum": "eav", - "rsa.misc.filter": "ionevo", - "rsa.misc.hardware_id": "remagn", - "rsa.misc.log_session_id": "laborum", - "rsa.misc.policy_id": "sequi", - "rsa.misc.policy_name": "mpori", - "rsa.misc.reference_id": "run", - "rsa.misc.rule_name": "aqu", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 7613, - "rsa.misc.version": "1.4059", - "rsa.misc.vsys": "nse", - "rsa.network.alias_host": [ - "equep5085.mail.domain" - ], - "rsa.network.dinterface": "enp0s1462", - "rsa.network.network_service": "uptat", - "rsa.network.sinterface": "lo2857", - "rsa.threat.threat_desc": "tincu", - "rsa.time.duration_time": 3.138, - "rsa.time.event_time": "2016-04-24T14:25:25.000Z", - "rsa.time.timezone": "CET", - "rsa.web.reputation_num": 72.701, - "rsa.web.web_ref_domain": "utla", - "rule.name": "aqu", - "service.type": "fortinet", - "source.bytes": 6354, - "source.geo.country_name": "oin", - "source.ip": "10.195.36.51", - "source.mac": "01:00:5e:68:86:a1", - "source.port": 3905, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.org", - "url.extension": "html", - "url.fragment": "tlabore", - "url.original": "https://www.example.org/inesci/serror.html?mqu=apariat#tlabore", - "url.path": "/inesci/serror.html", - "url.query": [ - "mqu=apariat", - "nsectet" - ], - "url.scheme": "https", - "user.name": "nnum" - }, - { - "@timestamp": "2016-05-08T09:27:59.000Z", - "destination.bytes": 3818, - "destination.geo.country_name": "sectetur", - "destination.ip": "10.186.85.3", - "destination.nat.ip": "10.114.16.155", - "destination.nat.port": 1608, - "destination.port": 5366, - "event.action": "allow", - "event.code": "tMalor", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=occae dtime=2016-05-08 07:27:59.552538723 +0000 UTC devid=ctetura devname=labore vd=texp date=2016-5-8 time=7:27:59 logid=tMalor type=acc subtype=amc level=very-high eventtime=amest logtime=corp srcip=10.176.216.90 srcport=2428 srcintf=eth2591 srcintfrole=dantiumt dstip=10.186.85.3 dstport=5366 dstintf=lo821 dstintfrole=ento poluuid=pic sessionid=evita proto=prm action=allow policyid=duntut policytype=magni crscore=102.339000 craction=uptat crlevel=uam appcat=boris service=nti srccountry=abi dstcountry=sectetur trandisp=uioffi tranip=10.114.16.155 tranport=1608 duration=62.941000 sentbyte=5110 rcvdbyte=3818 sentpkt=ipi app=reseos", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 7719, - "network.bytes": 8928, - "observer.egress.interface.name": "lo821", - "observer.ingress.interface.name": "eth2591", - "observer.product": "FortiManager", - "observer.serial_number": "ctetura", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "labore" - ], - "related.ip": [ - "10.114.16.155", - "10.176.216.90", - "10.186.85.3" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "amc", - "rsa.misc.context": "uioffi", - "rsa.misc.event_source": "labore", - "rsa.misc.event_type": "acc", - "rsa.misc.hardware_id": "ctetura", - "rsa.misc.log_session_id": "evita", - "rsa.misc.obj_name": "reseos", - "rsa.misc.policy_id": "duntut", - "rsa.misc.reference_id": "tMalor", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "texp", - "rsa.network.dinterface": "lo821", - "rsa.network.network_service": "nti", - "rsa.network.sinterface": "eth2591", - "rsa.time.duration_time": 62.941, - "rsa.time.event_time": "2016-05-08T09:27:59.000Z", - "rsa.time.event_time_str": "amest", - "rsa.web.reputation_num": 102.339, - "service.type": "fortinet", - "source.bytes": 5110, - "source.geo.country_name": "abi", - "source.ip": "10.176.216.90", - "source.port": 2428, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-05-22T04:30:33.000Z", - "destination.bytes": 3252, - "destination.ip": "10.61.163.4", - "destination.port": 1232, - "event.action": "cancel", - "event.code": "dictasu", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=mcolab date=2016-5-22 time=2:30:33 log_id=neav devid=oquisqu devname=sperna logid=eabilloi type=estia subtype=tper level=very-high vd=volupt srcip=10.188.169.107 srcport=2138 srcintf=eth6448 dstip=10.214.7.83 dstport=1696 dstintf=lo1616 poluuid=tenatu sessionid=uun proto=HOPOPT action=cancel policyid=ectio trandisp=dutper duration=4.781000 sentbyte=3423 rcvdbyte=3252 devtype=radi osname=gel osversion=1.3917 mastersrcmac=iduntu srcmac=01:00:5e:21:f5:0a crscore=57.435000 craction=uamqu crlevel=lor eventtype=oide user=dolore service=amvolu hostname=eturadi6608.mail.host profile=aera reqtype=ate url=https://api.example.com/nimid/itatione.htm?umwr=oluptate#issus direction=inbound msg=uaUteni method=udantium cat=pre catdesc=xeacom device_id=stlabo log_id=dictasu pri=low userfrom=catc adminprof=nsect timezone=GMT-07:00 main_type=asia trigger_policy=econs sub_type=uir severity_level=dol policy=essecil src=10.23.62.94 src_port=4368 dst=10.61.163.4 dst_port=1232 http_method=luptatem http_url=atem http_host=gnido http_agent=ratvolu http_session_id=olup signature_subclass=numqua signature_id=1411 srccountry=inculpa content_switch_name=abo server_pool_name=veniamqu false_positive_mitigation=nse user_name=non monitor_status=paquioff http_refer=https://www5.example.org/maven/hende.jpg?labor=didunt#uptatema http_version=intocc dev_id=liqu threat_weight=eporr history_threat_weight=xeacomm threat_level=mveleu ftp_mode=nofdeFin ftp_cmd=sequam cipher_suite=temvel msg_id=ris", - "event.timezone": "GMT-07:00", - "fileset.name": "fortimanager", - "host.name": "eturadi6608.mail.host", - "http.request.referrer": "https://www5.example.org/maven/hende.jpg?labor=didunt#uptatema", - "input.type": "log", - "log.level": "low", - "log.offset": 8364, - "network.bytes": 6675, - "network.direction": "inbound", - "observer.egress.interface.name": "lo1616", - "observer.ingress.interface.name": "eth6448", - "observer.product": "FortiManager", - "observer.serial_number": "stlabo", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.3917", - "related.hosts": [ - "eturadi6608.mail.host", - "gnido", - "sperna" - ], - "related.ip": [ - "10.23.62.94", - "10.61.163.4" - ], - "related.user": [ - "non" - ], - "rsa.internal.event_desc": "uaUteni", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "oide", - "rsa.misc.OS": "gel", - "rsa.misc.action": [ - "cancel", - "luptatem" - ], - "rsa.misc.category": "uir", - "rsa.misc.client": "ratvolu", - "rsa.misc.context": "dutper", - "rsa.misc.event_source": "sperna", - "rsa.misc.event_type": "estia", - "rsa.misc.fcatnum": "pre", - "rsa.misc.filter": "xeacom", - "rsa.misc.hardware_id": "stlabo", - "rsa.misc.log_session_id": "olup", - "rsa.misc.policy_id": "ectio", - "rsa.misc.policy_name": "essecil", - "rsa.misc.reference_id": "dictasu", - "rsa.misc.rule_name": "aera", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 1411, - "rsa.misc.version": "1.3917", - "rsa.misc.vsys": "volupt", - "rsa.network.alias_host": [ - "eturadi6608.mail.host" - ], - "rsa.network.dinterface": "lo1616", - "rsa.network.network_service": "amvolu", - "rsa.network.sinterface": "eth6448", - "rsa.threat.threat_desc": "mveleu", - "rsa.time.duration_time": 4.781, - "rsa.time.event_time": "2016-05-22T04:30:33.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.reputation_num": 57.435, - "rsa.web.web_ref_domain": "gnido", - "rule.name": "aera", - "service.type": "fortinet", - "source.bytes": 3423, - "source.geo.country_name": "inculpa", - "source.ip": "10.23.62.94", - "source.mac": "01:00:5e:21:f5:0a", - "source.port": 4368, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.com", - "url.extension": "htm", - "url.fragment": "issus", - "url.original": "https://api.example.com/nimid/itatione.htm?umwr=oluptate#issus", - "url.path": "/nimid/itatione.htm", - "url.query": [ - "atem", - "umwr=oluptate" - ], - "url.scheme": "https", - "user.name": "non" - }, - { - "@timestamp": "2016-06-05T11:33:08.000Z", - "destination.bytes": 5074, - "destination.ip": "10.106.31.86", - "destination.port": 4198, - "event.action": "deny", - "event.code": "tium", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-6-5 time=9:33:08 logver=nisiuta devid=tvolu devname=ecte logid=tinvolu type=iurer subtype=iciadese level=medium vd=gnaaliq srcip=10.52.135.156 srcport=2660 srcintf=eth4502 dstip=10.133.89.11 dstport=1098 dstintf=lo4901 poluuid=sintoc sessionid=volupt proto=1 action=deny policyid=uiinea trandisp=Utenima duration=111.502000 sentbyte=1871 rcvdbyte=5074 devtype=ptatem osname=Nequepor osversion=1.2580 mastersrcmac=ugiatnu srcmac=01:00:5e:4a:7f:b8 crscore=103.738000 craction=mnisi crlevel=scivelit eventtype=tDuisaut user=oinBC service=quameius hostname=ipsumdol4488.api.localdomain profile=ommodico reqtype=ptas url=https://example.com/tetu/stru.htm?tlabore=Exc#pora direction=unknown msg=uteirure method=nevo cat=ide catdesc=aali device_id=adip log_id=tium pri=very-high userfrom=iusmodi adminprof=uamest timezone=PST main_type=uiac trigger_policy=epte sub_type=idolo severity_level=quinesc policy=madmi src=10.28.76.42 src_port=3427 dst=10.106.31.86 dst_port=4198 http_method=sno http_url=atno http_host=tani http_agent=volu http_session_id=nonn signature_subclass=inventor signature_id=6088 srccountry=autf content_switch_name=quamni server_pool_name=iatisu false_positive_mitigation=sec user_name=cons monitor_status=sBon http_refer=https://www.example.com/tae/ccaec.htm?aperiame=isc#ullamcor http_version=tobea dev_id=tor threat_weight=qui history_threat_weight=ntmollit threat_level=tenatus ftp_mode=cipitlab ftp_cmd=ipsumd cipher_suite=antiu msg_id=uirati", - "event.timezone": "PST", - "fileset.name": "fortimanager", - "host.name": "ipsumdol4488.api.localdomain", - "http.request.referrer": "https://www.example.com/tae/ccaec.htm?aperiame=isc#ullamcor", - "input.type": "log", - "log.level": "very-high", - "log.offset": 9850, - "network.bytes": 6945, - "network.direction": "unknown", - "observer.egress.interface.name": "lo4901", - "observer.ingress.interface.name": "eth4502", - "observer.product": "FortiManager", - "observer.serial_number": "adip", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.2580", - "related.hosts": [ - "ecte", - "ipsumdol4488.api.localdomain", - "tani" - ], - "related.ip": [ - "10.106.31.86", - "10.28.76.42" - ], - "related.user": [ - "cons" - ], - "rsa.internal.event_desc": "uteirure", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "tDuisaut", - "rsa.misc.OS": "Nequepor", - "rsa.misc.action": [ - "deny", - "sno" - ], - "rsa.misc.category": "idolo", - "rsa.misc.client": "volu", - "rsa.misc.context": "Utenima", - "rsa.misc.event_source": "ecte", - "rsa.misc.event_type": "iurer", - "rsa.misc.fcatnum": "ide", - "rsa.misc.filter": "aali", - "rsa.misc.hardware_id": "adip", - "rsa.misc.log_session_id": "nonn", - "rsa.misc.policy_id": "uiinea", - "rsa.misc.policy_name": "madmi", - "rsa.misc.reference_id": "tium", - "rsa.misc.rule_name": "ommodico", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 6088, - "rsa.misc.version": "1.2580", - "rsa.misc.vsys": "gnaaliq", - "rsa.network.alias_host": [ - "ipsumdol4488.api.localdomain" - ], - "rsa.network.dinterface": "lo4901", - "rsa.network.network_service": "quameius", - "rsa.network.sinterface": "eth4502", - "rsa.threat.threat_desc": "tenatus", - "rsa.time.duration_time": 111.502, - "rsa.time.event_time": "2016-06-05T11:33:08.000Z", - "rsa.time.timezone": "PST", - "rsa.web.reputation_num": 103.738, - "rsa.web.web_ref_domain": "tani", - "rule.name": "ommodico", - "service.type": "fortinet", - "source.bytes": 1871, - "source.geo.country_name": "autf", - "source.ip": "10.28.76.42", - "source.mac": "01:00:5e:4a:7f:b8", - "source.port": 3427, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.com", - "url.extension": "htm", - "url.fragment": "pora", - "url.original": "https://example.com/tetu/stru.htm?tlabore=Exc#pora", - "url.path": "/tetu/stru.htm", - "url.query": [ - "atno", - "tlabore=Exc" - ], - "url.scheme": "https", - "user.name": "cons" - }, - { - "@timestamp": "2016-06-20T06:35:42.000Z", - "destination.bytes": 7130, - "destination.geo.country_name": "lup", - "destination.ip": "10.106.162.153", - "destination.nat.ip": "10.58.214.16", - "destination.nat.port": 508, - "destination.port": 341, - "event.action": "accept", - "event.code": "osquira", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ersp dtime=2016-06-20 04:35:42.332538723 +0000 UTC devid=tquov devname=diconseq vd=inven date=2016-6-20 time=4:35:42 logid=osquira type=tes subtype=mquame level=medium eventtime=tnulapa logtime=orain srcip=10.238.164.74 srcport=2201 srcintf=lo4249 srcintfrole=madmi dstip=10.106.162.153 dstport=341 dstintf=lo7114 dstintfrole=amvo poluuid=qui sessionid=tasn proto=1 action=accept policyid=squirati policytype=Sedutp crscore=92.058000 craction=nbyCic crlevel=utlabor appcat=itessequ service=porro srccountry=ine dstcountry=lup trandisp=tatemUt tranip=10.58.214.16 tranport=508 duration=166.566000 sentbyte=2715 rcvdbyte=7130 sentpkt=pici app=abor", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 11323, - "network.bytes": 9845, - "observer.egress.interface.name": "lo7114", - "observer.ingress.interface.name": "lo4249", - "observer.product": "FortiManager", - "observer.serial_number": "tquov", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "diconseq" - ], - "related.ip": [ - "10.106.162.153", - "10.238.164.74", - "10.58.214.16" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "mquame", - "rsa.misc.context": "tatemUt", - "rsa.misc.event_source": "diconseq", - "rsa.misc.event_type": "tes", - "rsa.misc.hardware_id": "tquov", - "rsa.misc.log_session_id": "tasn", - "rsa.misc.obj_name": "abor", - "rsa.misc.policy_id": "squirati", - "rsa.misc.reference_id": "osquira", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "inven", - "rsa.network.dinterface": "lo7114", - "rsa.network.network_service": "porro", - "rsa.network.sinterface": "lo4249", - "rsa.time.duration_time": 166.566, - "rsa.time.event_time": "2016-06-20T06:35:42.000Z", - "rsa.time.event_time_str": "tnulapa", - "rsa.web.reputation_num": 92.058, - "service.type": "fortinet", - "source.bytes": 2715, - "source.geo.country_name": "ine", - "source.ip": "10.238.164.74", - "source.port": 2201, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-07-04T13:38:16.000Z", - "destination.bytes": 5300, - "destination.geo.country_name": "eumiu", - "destination.ip": "10.217.150.196", - "destination.nat.ip": "10.110.31.190", - "destination.nat.port": 945, - "destination.port": 4639, - "event.action": "cancel", - "event.code": "udexerci", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=tquiin dtime=2016-07-04 11:38:16.592538723 +0000 UTC devid=tse devname=tenimad vd=minimav date=2016-7-4 time=11:38:16 logid=udexerci type=naal subtype=lore level=high eventtime=idolore logtime=pid srcip=10.225.141.20 srcport=2282 srcintf=enp0s4046 srcintfrole=natuse dstip=10.217.150.196 dstport=4639 dstintf=lo2438 dstintfrole=archite poluuid=loreme sessionid=untu proto=6 action=cancel policyid=datatno policytype=siutali crscore=49.988000 craction=usmodte crlevel=msequi appcat=tau service=exercita srccountry=ris dstcountry=eumiu trandisp=orumSe tranip=10.110.31.190 tranport=945 duration=12.946000 sentbyte=248 rcvdbyte=5300 sentpkt=eeufugia app=evit", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 11976, - "network.bytes": 5548, - "observer.egress.interface.name": "lo2438", - "observer.ingress.interface.name": "enp0s4046", - "observer.product": "FortiManager", - "observer.serial_number": "tse", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "tenimad" - ], - "related.ip": [ - "10.110.31.190", - "10.217.150.196", - "10.225.141.20" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "lore", - "rsa.misc.context": "orumSe", - "rsa.misc.event_source": "tenimad", - "rsa.misc.event_type": "naal", - "rsa.misc.hardware_id": "tse", - "rsa.misc.log_session_id": "untu", - "rsa.misc.obj_name": "evit", - "rsa.misc.policy_id": "datatno", - "rsa.misc.reference_id": "udexerci", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "minimav", - "rsa.network.dinterface": "lo2438", - "rsa.network.network_service": "exercita", - "rsa.network.sinterface": "enp0s4046", - "rsa.time.duration_time": 12.946, - "rsa.time.event_time": "2016-07-04T13:38:16.000Z", - "rsa.time.event_time_str": "idolore", - "rsa.web.reputation_num": 49.988, - "service.type": "fortinet", - "source.bytes": 248, - "source.geo.country_name": "ris", - "source.ip": "10.225.141.20", - "source.port": 2282, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-07-18T08:40:50.000Z", - "destination.bytes": 7741, - "destination.ip": "10.69.103.176", - "destination.port": 1229, - "event.action": "deny", - "event.code": "mexe", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-7-18 time=6:40:50 devname=molli device_id=velitse log_id=oditem type=generic subtype=gitsedqu pri=very-high devid=oremi devname=mestq logid=temUt type=olor subtype=ineavo level=very-high vd=mquelau srcip=10.168.236.85 srcport=6846 srcintf=eth651 dstip=10.140.113.244 dstport=4374 dstintf=lo4367 poluuid=fugitsed sessionid=quam proto=tcp action=deny policyid=fugiat trandisp=atisun duration=101.653000 sentbyte=3962 rcvdbyte=7741 devtype=dmin osname=fugi osversion=1.3319 mastersrcmac=inci srcmac=01:00:5e:e6:ad:ae crscore=39.291000 craction=avol crlevel=icero eventtype=xer user=emipsumd service=isisten hostname=cusant4946.www.domain profile=itecto reqtype=reetdol url=https://api.example.com/isnostr/umqu.htm?emquia=inesci#isnisi direction=unknown msg=aquioffi method=tamet cat=quatur catdesc=uisa device_id=eFi log_id=mexe pri=high userfrom=rpori adminprof=ice timezone=GMT+02:00 main_type=entorev trigger_policy=commodo sub_type=conseq severity_level=ame policy=tatn src=10.137.56.173 src_port=3932 dst=10.69.103.176 dst_port=1229 http_method=umdolo http_url=uptate http_host=amc http_agent=cusant http_session_id=orumSe signature_subclass=ratv signature_id=5227 srccountry=dutp content_switch_name=psaquaea server_pool_name=taevita false_positive_mitigation=ameiusm user_name=proide monitor_status=ano http_refer=https://www5.example.org/tvol/velitess.htm?edqui=nre#veli http_version=volupta dev_id=rnatu threat_weight=elitse history_threat_weight=ima threat_level=quasia ftp_mode=adi ftp_cmd=umwrit cipher_suite=uptate msg_id=mac", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "cusant4946.www.domain", - "http.request.referrer": "https://www5.example.org/tvol/velitess.htm?edqui=nre#veli", - "input.type": "log", - "log.level": "high", - "log.offset": 12639, - "network.bytes": 11703, - "network.direction": "unknown", - "observer.egress.interface.name": "lo4367", - "observer.ingress.interface.name": "eth651", - "observer.product": "FortiManager", - "observer.serial_number": "eFi", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.3319", - "related.hosts": [ - "amc", - "cusant4946.www.domain", - "mestq" - ], - "related.ip": [ - "10.137.56.173", - "10.69.103.176" - ], - "related.user": [ - "proide" - ], - "rsa.internal.event_desc": "aquioffi", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "xer", - "rsa.misc.OS": "fugi", - "rsa.misc.action": [ - "deny", - "umdolo" - ], - "rsa.misc.category": "conseq", - "rsa.misc.client": "cusant", - "rsa.misc.context": "atisun", - "rsa.misc.event_source": "mestq", - "rsa.misc.event_type": "olor", - "rsa.misc.fcatnum": "quatur", - "rsa.misc.filter": "uisa", - "rsa.misc.hardware_id": "eFi", - "rsa.misc.log_session_id": "orumSe", - "rsa.misc.policy_id": "fugiat", - "rsa.misc.policy_name": "tatn", - "rsa.misc.reference_id": "mexe", - "rsa.misc.rule_name": "itecto", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 5227, - "rsa.misc.version": "1.3319", - "rsa.misc.vsys": "mquelau", - "rsa.network.alias_host": [ - "cusant4946.www.domain" - ], - "rsa.network.dinterface": "lo4367", - "rsa.network.network_service": "isisten", - "rsa.network.sinterface": "eth651", - "rsa.threat.threat_desc": "quasia", - "rsa.time.duration_time": 101.653, - "rsa.time.event_time": "2016-07-18T08:40:50.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 39.291, - "rsa.web.web_ref_domain": "amc", - "rule.name": "itecto", - "service.type": "fortinet", - "source.bytes": 3962, - "source.geo.country_name": "dutp", - "source.ip": "10.137.56.173", - "source.mac": "01:00:5e:e6:ad:ae", - "source.port": 3932, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.com", - "url.extension": "htm", - "url.fragment": "isnisi", - "url.original": "https://api.example.com/isnostr/umqu.htm?emquia=inesci#isnisi", - "url.path": "/isnostr/umqu.htm", - "url.query": [ - "emquia=inesci", - "uptate" - ], - "url.scheme": "https", - "user.name": "proide" - }, - { - "@timestamp": "2016-08-02T03:43:25.000Z", - "destination.bytes": 7122, - "destination.geo.country_name": "mvele", - "destination.ip": "10.5.235.217", - "destination.nat.ip": "10.25.212.118", - "destination.nat.port": 1190, - "destination.port": 3689, - "event.action": "deny", - "event.code": "onulam", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=dolore devname=\"onsecte\" devid=\"nBCSedut\" vd=ugiat date=2016-8-2 time=1:43:25 logid=onulam type=ate subtype=odoconse level=high eventtime=quatu logtime=veli srcip=10.30.47.165 srcport=631 srcintf=eth267 srcintfrole=sectet dstip=10.5.235.217 dstport=3689 dstintf=lo5047 dstintfrole=pitl poluuid=por sessionid=quidexea proto=tcp action=deny policyid=runtmol policytype=texpli crscore=57.772000 craction=ptass crlevel=rita appcat=esseci service=tametcon srccountry=liqua dstcountry=mvele trandisp=isis tranip=10.25.212.118 tranport=1190 duration=179.686000 sentbyte=238 rcvdbyte=7122 sentpkt=dantium app=lor", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 14185, - "network.bytes": 7360, - "observer.egress.interface.name": "lo5047", - "observer.ingress.interface.name": "eth267", - "observer.product": "FortiManager", - "observer.serial_number": "nBCSedut", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "onsecte" - ], - "related.ip": [ - "10.25.212.118", - "10.30.47.165", - "10.5.235.217" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "odoconse", - "rsa.misc.context": "isis", - "rsa.misc.event_source": "onsecte", - "rsa.misc.event_type": "ate", - "rsa.misc.hardware_id": "nBCSedut", - "rsa.misc.log_session_id": "quidexea", - "rsa.misc.obj_name": "lor", - "rsa.misc.policy_id": "runtmol", - "rsa.misc.reference_id": "onulam", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "ugiat", - "rsa.network.dinterface": "lo5047", - "rsa.network.network_service": "tametcon", - "rsa.network.sinterface": "eth267", - "rsa.time.duration_time": 179.686, - "rsa.time.event_time": "2016-08-02T03:43:25.000Z", - "rsa.time.event_time_str": "quatu", - "rsa.web.reputation_num": 57.772, - "service.type": "fortinet", - "source.bytes": 238, - "source.geo.country_name": "liqua", - "source.ip": "10.30.47.165", - "source.port": 631, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-08-16T10:45:59.000Z", - "destination.bytes": 6247, - "destination.ip": "10.40.152.253", - "destination.port": 1478, - "event.action": "deny", - "event.code": "ipsamvo", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-8-16 time=8:45:59 logver=onemulla devid=dolorem devname=tvolu logid=nreprehe type=tetu subtype=mdol level=high vd=nby srcip=10.20.26.210 srcport=2791 srcintf=eth5968 dstip=10.85.96.153 dstport=5286 dstintf=eth4392 poluuid=nsequat sessionid=doloreme proto=0 action=deny policyid=reprehe trandisp=tincu duration=93.111000 sentbyte=2826 rcvdbyte=6247 devtype=lor osname=oraincid osversion=1.225 mastersrcmac=emeumfug srcmac=01:00:5e:1d:39:39 crscore=114.626000 craction=liqua crlevel=olo eventtype=psumqu user=untincul service=iduntu hostname=ccaeca5504.internal.example profile=reseo reqtype=oreetd url=https://example.org/tiaec/rumwrit.txt?oconsequ=edquiac#urerepr direction=external msg=ercit method=etMal cat=qua catdesc=rsita device_id=ate log_id=ipsamvo pri=low userfrom=adeseru adminprof=tdol timezone=CET main_type=rem trigger_policy=asper sub_type=idunt severity_level=luptat policy=eveli src=10.149.13.76 src_port=7809 dst=10.40.152.253 dst_port=1478 http_method=ritt http_url=iaeco http_host=equaturv http_agent=siu http_session_id=snost signature_subclass=tpersp signature_id=2624 srccountry=quaea content_switch_name=ametcons server_pool_name=utali false_positive_mitigation=porinc user_name=tetur monitor_status=xce http_refer=https://example.com/aincidu/nimadmin.jpg?itinv=eumfugi#etdolor http_version=lupta dev_id=xeaco threat_weight=nvolupt history_threat_weight=oremi threat_level=elites ftp_mode=nbyCi ftp_cmd=tevel cipher_suite=usc msg_id=rem", - "event.timezone": "CET", - "fileset.name": "fortimanager", - "host.name": "ccaeca5504.internal.example", - "http.request.referrer": "https://example.com/aincidu/nimadmin.jpg?itinv=eumfugi#etdolor", - "input.type": "log", - "log.level": "low", - "log.offset": 14797, - "network.bytes": 9073, - "network.direction": "external", - "observer.egress.interface.name": "eth4392", - "observer.ingress.interface.name": "eth5968", - "observer.product": "FortiManager", - "observer.serial_number": "ate", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.225", - "related.hosts": [ - "ccaeca5504.internal.example", - "equaturv", - "tvolu" - ], - "related.ip": [ - "10.149.13.76", - "10.40.152.253" - ], - "related.user": [ - "tetur" - ], - "rsa.internal.event_desc": "ercit", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "psumqu", - "rsa.misc.OS": "oraincid", - "rsa.misc.action": [ - "deny", - "ritt" - ], - "rsa.misc.category": "idunt", - "rsa.misc.client": "siu", - "rsa.misc.context": "tincu", - "rsa.misc.event_source": "tvolu", - "rsa.misc.event_type": "tetu", - "rsa.misc.fcatnum": "qua", - "rsa.misc.filter": "rsita", - "rsa.misc.hardware_id": "ate", - "rsa.misc.log_session_id": "snost", - "rsa.misc.policy_id": "reprehe", - "rsa.misc.policy_name": "eveli", - "rsa.misc.reference_id": "ipsamvo", - "rsa.misc.rule_name": "reseo", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 2624, - "rsa.misc.version": "1.225", - "rsa.misc.vsys": "nby", - "rsa.network.alias_host": [ - "ccaeca5504.internal.example" - ], - "rsa.network.dinterface": "eth4392", - "rsa.network.network_service": "iduntu", - "rsa.network.sinterface": "eth5968", - "rsa.threat.threat_desc": "elites", - "rsa.time.duration_time": 93.111, - "rsa.time.event_time": "2016-08-16T10:45:59.000Z", - "rsa.time.timezone": "CET", - "rsa.web.reputation_num": 114.626, - "rsa.web.web_ref_domain": "equaturv", - "rule.name": "reseo", - "service.type": "fortinet", - "source.bytes": 2826, - "source.geo.country_name": "quaea", - "source.ip": "10.149.13.76", - "source.mac": "01:00:5e:1d:39:39", - "source.port": 7809, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.org", - "url.extension": "txt", - "url.fragment": "urerepr", - "url.original": "https://example.org/tiaec/rumwrit.txt?oconsequ=edquiac#urerepr", - "url.path": "/tiaec/rumwrit.txt", - "url.query": [ - "iaeco", - "oconsequ=edquiac" - ], - "url.scheme": "https", - "user.name": "tetur" - }, - { - "@timestamp": "2016-08-30T05:48:33.000Z", - "destination.bytes": 4844, - "destination.geo.country_name": "eufugi", - "destination.ip": "10.51.213.42", - "destination.nat.ip": "10.233.120.207", - "destination.nat.port": 136, - "destination.port": 988, - "event.action": "deny", - "event.code": "isetq", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=cab dtime=2016-08-30 15:48:33.632538723 +0000 UTC devid=atisund devname=xea vd=ites date=2016-8-30 time=3:48:33 logid=isetq type=iutali subtype=velite level=high eventtime=avolupt logtime=ariatur srcip=10.98.194.212 srcport=5469 srcintf=lo1208 srcintfrole=atisetqu dstip=10.51.213.42 dstport=988 dstintf=enp0s3449 dstintfrole=ilmol poluuid=eri sessionid=quunt proto=HOPOPT action=deny policyid=mquae policytype=eriti crscore=96.729000 craction=cidunt crlevel=plica appcat=ore service=quidolor srccountry=inven dstcountry=eufugi trandisp=accusant tranip=10.233.120.207 tranport=136 duration=171.844000 sentbyte=2859 rcvdbyte=4844 sentpkt=eaqu app=nvol", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 16267, - "network.bytes": 7703, - "observer.egress.interface.name": "enp0s3449", - "observer.ingress.interface.name": "lo1208", - "observer.product": "FortiManager", - "observer.serial_number": "atisund", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "xea" - ], - "related.ip": [ - "10.233.120.207", - "10.51.213.42", - "10.98.194.212" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "velite", - "rsa.misc.context": "accusant", - "rsa.misc.event_source": "xea", - "rsa.misc.event_type": "iutali", - "rsa.misc.hardware_id": "atisund", - "rsa.misc.log_session_id": "quunt", - "rsa.misc.obj_name": "nvol", - "rsa.misc.policy_id": "mquae", - "rsa.misc.reference_id": "isetq", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "ites", - "rsa.network.dinterface": "enp0s3449", - "rsa.network.network_service": "quidolor", - "rsa.network.sinterface": "lo1208", - "rsa.time.duration_time": 171.844, - "rsa.time.event_time": "2016-08-30T05:48:33.000Z", - "rsa.time.event_time_str": "avolupt", - "rsa.web.reputation_num": 96.729, - "service.type": "fortinet", - "source.bytes": 2859, - "source.geo.country_name": "inven", - "source.ip": "10.98.194.212", - "source.port": 5469, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-09-13T12:51:07.000Z", - "destination.bytes": 7301, - "destination.geo.country_name": "tenatuse", - "destination.ip": "10.67.132.242", - "destination.nat.ip": "10.241.132.176", - "destination.nat.port": 7224, - "destination.port": 2340, - "event.action": "allow", - "event.code": "dat", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=leumiu devname=\"tla\" devid=\"item\" vd=nimid date=2016-9-13 time=10:51:07 logid=dat type=periam subtype=dqu level=high eventtime=dminima logtime=dutpers srcip=10.245.187.229 srcport=4953 srcintf=lo3642 srcintfrole=prehen dstip=10.67.132.242 dstport=2340 dstintf=enp0s2700 dstintfrole=sequa poluuid=iosamnis sessionid=volupt proto=6 action=allow policyid=idid policytype=tesse crscore=64.509000 craction=boru crlevel=ptateve appcat=enderi service=ptatem srccountry=ptatevel dstcountry=tenatuse trandisp=psaqua tranip=10.241.132.176 tranport=7224 duration=167.705000 sentbyte=6595 rcvdbyte=7301 sentpkt=tame app=atione", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 16925, - "network.bytes": 13896, - "observer.egress.interface.name": "enp0s2700", - "observer.ingress.interface.name": "lo3642", - "observer.product": "FortiManager", - "observer.serial_number": "item", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "tla" - ], - "related.ip": [ - "10.241.132.176", - "10.245.187.229", - "10.67.132.242" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "dqu", - "rsa.misc.context": "psaqua", - "rsa.misc.event_source": "tla", - "rsa.misc.event_type": "periam", - "rsa.misc.hardware_id": "item", - "rsa.misc.log_session_id": "volupt", - "rsa.misc.obj_name": "atione", - "rsa.misc.policy_id": "idid", - "rsa.misc.reference_id": "dat", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "nimid", - "rsa.network.dinterface": "enp0s2700", - "rsa.network.network_service": "ptatem", - "rsa.network.sinterface": "lo3642", - "rsa.time.duration_time": 167.705, - "rsa.time.event_time": "2016-09-13T12:51:07.000Z", - "rsa.time.event_time_str": "dminima", - "rsa.web.reputation_num": 64.509, - "service.type": "fortinet", - "source.bytes": 6595, - "source.geo.country_name": "ptatevel", - "source.ip": "10.245.187.229", - "source.port": 4953, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2016-09-28T07:53:42.000Z", - "destination.bytes": 1775, - "destination.ip": "10.199.47.220", - "destination.port": 4084, - "event.action": "allow", - "event.code": "urmagn", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-9-28 time=5:53:42 logver=vitaedic devid=orin devname=uii logid=estl type=sitam subtype=orem level=very-high vd=uuntur srcip=10.210.28.247 srcport=3449 srcintf=eth4185 dstip=10.237.180.17 dstport=3023 dstintf=lo7672 poluuid=tate sessionid=onevo proto=6 action=allow policyid=aeconseq trandisp=lor duration=96.560000 sentbyte=2760 rcvdbyte=1775 devtype=emqu osname=riss osversion=1.1847 mastersrcmac=sitvol srcmac=01:00:5e:a5:5a:54 crscore=129.120000 craction=olorsi crlevel=aliq eventtype=mes user=mven service=olorsit hostname=tore7088.www.invalid profile=ruredo reqtype=mac url=https://mail.example.org/ptassita/its.gif?risnis=uov#itlab direction=outbound msg=sBono method=loremqu cat=tetur catdesc=amvo device_id=siuta log_id=urmagn pri=low userfrom=uptat adminprof=idex timezone=GMT+02:00 main_type=tatione trigger_policy=nimveni sub_type=idi severity_level=ore policy=quid src=10.212.214.4 src_port=6040 dst=10.199.47.220 dst_port=4084 http_method=oin http_url=hil http_host=cingel http_agent=modocon http_session_id=ipsu signature_subclass=ntNeq signature_id=1081 srccountry=aUt content_switch_name=boNem server_pool_name=nturm false_positive_mitigation=emips user_name=atv monitor_status=onu http_refer=https://www5.example.net/alorum/obeataev.gif?atDu=nsec#quidolor http_version=oqu dev_id=naaliq threat_weight=remeu history_threat_weight=osquir threat_level=mod ftp_mode=col ftp_cmd=mve cipher_suite=liquide msg_id=odt", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "tore7088.www.invalid", - "http.request.referrer": "https://www5.example.net/alorum/obeataev.gif?atDu=nsec#quidolor", - "input.type": "log", - "log.level": "low", - "log.offset": 17547, - "network.bytes": 4535, - "network.direction": "outbound", - "observer.egress.interface.name": "lo7672", - "observer.ingress.interface.name": "eth4185", - "observer.product": "FortiManager", - "observer.serial_number": "siuta", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.1847", - "related.hosts": [ - "cingel", - "tore7088.www.invalid", - "uii" - ], - "related.ip": [ - "10.199.47.220", - "10.212.214.4" - ], - "related.user": [ - "atv" - ], - "rsa.internal.event_desc": "sBono", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "mes", - "rsa.misc.OS": "riss", - "rsa.misc.action": [ - "allow", - "oin" - ], - "rsa.misc.category": "idi", - "rsa.misc.client": "modocon", - "rsa.misc.context": "lor", - "rsa.misc.event_source": "uii", - "rsa.misc.event_type": "sitam", - "rsa.misc.fcatnum": "tetur", - "rsa.misc.filter": "amvo", - "rsa.misc.hardware_id": "siuta", - "rsa.misc.log_session_id": "ipsu", - "rsa.misc.policy_id": "aeconseq", - "rsa.misc.policy_name": "quid", - "rsa.misc.reference_id": "urmagn", - "rsa.misc.rule_name": "ruredo", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 1081, - "rsa.misc.version": "1.1847", - "rsa.misc.vsys": "uuntur", - "rsa.network.alias_host": [ - "tore7088.www.invalid" - ], - "rsa.network.dinterface": "lo7672", - "rsa.network.network_service": "olorsit", - "rsa.network.sinterface": "eth4185", - "rsa.threat.threat_desc": "mod", - "rsa.time.duration_time": 96.56, - "rsa.time.event_time": "2016-09-28T07:53:42.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 129.12, - "rsa.web.web_ref_domain": "cingel", - "rule.name": "ruredo", - "service.type": "fortinet", - "source.bytes": 2760, - "source.geo.country_name": "aUt", - "source.ip": "10.212.214.4", - "source.mac": "01:00:5e:a5:5a:54", - "source.port": 6040, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.org", - "url.extension": "gif", - "url.fragment": "itlab", - "url.original": "https://mail.example.org/ptassita/its.gif?risnis=uov#itlab", - "url.path": "/ptassita/its.gif", - "url.query": [ - "hil", - "risnis=uov" - ], - "url.scheme": "https", - "user.name": "atv" - }, - { - "@timestamp": "2016-10-12T14:56:16.000Z", - "destination.bytes": 4059, - "destination.ip": "10.234.165.130", - "destination.port": 7079, - "event.action": "deny", - "event.code": "henderit", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-10-12 time=12:56:16 logver=inv devid=rroq devname=rcit logid=aecatcup type=olabor subtype=estl level=very-high vd=citatio srcip=10.168.40.197 srcport=7699 srcintf=enp0s3071 dstip=10.206.69.135 dstport=6396 dstintf=eth3862 poluuid=utfug sessionid=aturQu proto=udp action=deny policyid=mipsamvo trandisp=eiusmod duration=91.147000 sentbyte=6153 rcvdbyte=4059 devtype=oreveri osname=ehende osversion=1.760 mastersrcmac=Except srcmac=01:00:5e:bf:07:ee crscore=45.760000 craction=dol crlevel=sciun eventtype=metcons user=itasper service=uae hostname=mve1890.internal.home profile=tatemU reqtype=mad url=https://www.example.org/redol/gnaa.htm?aliquamq=dtempori#toditaut direction=unknown msg=dexerc method=strumex cat=eprehend catdesc=asnu device_id=hitec log_id=henderit pri=medium userfrom=perspici adminprof=ationul timezone=PST main_type=itsedq trigger_policy=uto sub_type=emUte severity_level=molestia policy=quir src=10.46.56.204 src_port=2463 dst=10.234.165.130 dst_port=7079 http_method=umf http_url=quames http_host=dolorsit http_agent=archite http_session_id=remq signature_subclass=veniamq signature_id=1236 srccountry=uta content_switch_name=emo server_pool_name=itq false_positive_mitigation=derit user_name=orese monitor_status=dolor http_refer=https://mail.example.com/ntexpl/dunt.jpg?yCic=nder#mdolore http_version=Cic dev_id=olorema threat_weight=mollita history_threat_weight=tatem threat_level=iae ftp_mode=quido ftp_cmd=emip cipher_suite=inBC msg_id=mol", - "event.timezone": "PST", - "fileset.name": "fortimanager", - "host.name": "mve1890.internal.home", - "http.request.referrer": "https://mail.example.com/ntexpl/dunt.jpg?yCic=nder#mdolore", - "input.type": "log", - "log.level": "medium", - "log.offset": 18984, - "network.bytes": 10212, - "network.direction": "unknown", - "observer.egress.interface.name": "eth3862", - "observer.ingress.interface.name": "enp0s3071", - "observer.product": "FortiManager", - "observer.serial_number": "hitec", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.760", - "related.hosts": [ - "dolorsit", - "mve1890.internal.home", - "rcit" - ], - "related.ip": [ - "10.234.165.130", - "10.46.56.204" - ], - "related.user": [ - "orese" - ], - "rsa.internal.event_desc": "dexerc", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "metcons", - "rsa.misc.OS": "ehende", - "rsa.misc.action": [ - "deny", - "umf" - ], - "rsa.misc.category": "emUte", - "rsa.misc.client": "archite", - "rsa.misc.context": "eiusmod", - "rsa.misc.event_source": "rcit", - "rsa.misc.event_type": "olabor", - "rsa.misc.fcatnum": "eprehend", - "rsa.misc.filter": "asnu", - "rsa.misc.hardware_id": "hitec", - "rsa.misc.log_session_id": "remq", - "rsa.misc.policy_id": "mipsamvo", - "rsa.misc.policy_name": "quir", - "rsa.misc.reference_id": "henderit", - "rsa.misc.rule_name": "tatemU", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 1236, - "rsa.misc.version": "1.760", - "rsa.misc.vsys": "citatio", - "rsa.network.alias_host": [ - "mve1890.internal.home" - ], - "rsa.network.dinterface": "eth3862", - "rsa.network.network_service": "uae", - "rsa.network.sinterface": "enp0s3071", - "rsa.threat.threat_desc": "iae", - "rsa.time.duration_time": 91.147, - "rsa.time.event_time": "2016-10-12T14:56:16.000Z", - "rsa.time.timezone": "PST", - "rsa.web.reputation_num": 45.76, - "rsa.web.web_ref_domain": "dolorsit", - "rule.name": "tatemU", - "service.type": "fortinet", - "source.bytes": 6153, - "source.geo.country_name": "uta", - "source.ip": "10.46.56.204", - "source.mac": "01:00:5e:bf:07:ee", - "source.port": 2463, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.org", - "url.extension": "htm", - "url.fragment": "toditaut", - "url.original": "https://www.example.org/redol/gnaa.htm?aliquamq=dtempori#toditaut", - "url.path": "/redol/gnaa.htm", - "url.query": [ - "aliquamq=dtempori", - "quames" - ], - "url.scheme": "https", - "user.name": "orese" - }, - { - "@timestamp": "2016-10-26T09:58:50.000Z", - "destination.bytes": 4527, - "destination.ip": "10.95.117.134", - "destination.port": 1723, - "event.action": "block", - "event.code": "rsi", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=turadipi date=2016-10-26 time=7:58:50 log_id=usmodi devid=ree devname=saquaea logid=ation type=luptas subtype=minim level=very-high vd=lorsi srcip=10.61.123.159 srcport=754 srcintf=eth7713 dstip=10.141.158.225 dstport=4690 dstintf=lo1586 poluuid=ate sessionid=idolor proto=1 action=block policyid=nreprehe trandisp=onse duration=71.505000 sentbyte=4010 rcvdbyte=4527 devtype=duntutla osname=ntium osversion=1.4450 mastersrcmac=asuntexp srcmac=01:00:5e:26:56:73 crscore=5.843000 craction=nse crlevel=modoc eventtype=boNem user=iumt service=tsed hostname=eturad6143.www.home profile=uamnihil reqtype=llam url=https://example.net/aparia/tatnon.jpg?rever=ore#offici direction=outbound msg=metco method=acom cat=ceroinB catdesc=nim device_id=utaliqu log_id=rsi pri=high userfrom=imadmi adminprof=isnis timezone=CEST main_type=olupta trigger_policy=tsuntinc sub_type=inrepreh severity_level=quovo policy=urExcep src=10.128.46.70 src_port=5269 dst=10.95.117.134 dst_port=1723 http_method=acommodi http_url=essecill http_host=billoi http_agent=moles http_session_id=dipiscin signature_subclass=olup signature_id=5976 srccountry=undeomni content_switch_name=accusa server_pool_name=natu false_positive_mitigation=liquid user_name=enim monitor_status=Finibus http_refer=https://www.example.org/xeacom/des.gif?umdolo=ntiu#radipisc http_version=Cice dev_id=taedi threat_weight=tquido history_threat_weight=ptasnula threat_level=oru ftp_mode=ill ftp_cmd=mporinc cipher_suite=onsectet msg_id=idolo", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "eturad6143.www.home", - "http.request.referrer": "https://www.example.org/xeacom/des.gif?umdolo=ntiu#radipisc", - "input.type": "log", - "log.level": "high", - "log.offset": 20462, - "network.bytes": 8537, - "network.direction": "outbound", - "observer.egress.interface.name": "lo1586", - "observer.ingress.interface.name": "eth7713", - "observer.product": "FortiManager", - "observer.serial_number": "utaliqu", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4450", - "related.hosts": [ - "billoi", - "eturad6143.www.home", - "saquaea" - ], - "related.ip": [ - "10.128.46.70", - "10.95.117.134" - ], - "related.user": [ - "enim" - ], - "rsa.internal.event_desc": "metco", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "boNem", - "rsa.misc.OS": "ntium", - "rsa.misc.action": [ - "acommodi", - "block" - ], - "rsa.misc.category": "inrepreh", - "rsa.misc.client": "moles", - "rsa.misc.context": "onse", - "rsa.misc.event_source": "saquaea", - "rsa.misc.event_type": "luptas", - "rsa.misc.fcatnum": "ceroinB", - "rsa.misc.filter": "nim", - "rsa.misc.hardware_id": "utaliqu", - "rsa.misc.log_session_id": "dipiscin", - "rsa.misc.policy_id": "nreprehe", - "rsa.misc.policy_name": "urExcep", - "rsa.misc.reference_id": "rsi", - "rsa.misc.rule_name": "uamnihil", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 5976, - "rsa.misc.version": "1.4450", - "rsa.misc.vsys": "lorsi", - "rsa.network.alias_host": [ - "eturad6143.www.home" - ], - "rsa.network.dinterface": "lo1586", - "rsa.network.network_service": "tsed", - "rsa.network.sinterface": "eth7713", - "rsa.threat.threat_desc": "oru", - "rsa.time.duration_time": 71.505, - "rsa.time.event_time": "2016-10-26T09:58:50.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 5.843, - "rsa.web.web_ref_domain": "billoi", - "rule.name": "uamnihil", - "service.type": "fortinet", - "source.bytes": 4010, - "source.geo.country_name": "undeomni", - "source.ip": "10.128.46.70", - "source.mac": "01:00:5e:26:56:73", - "source.port": 5269, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.net", - "url.extension": "jpg", - "url.fragment": "offici", - "url.original": "https://example.net/aparia/tatnon.jpg?rever=ore#offici", - "url.path": "/aparia/tatnon.jpg", - "url.query": [ - "essecill", - "rever=ore" - ], - "url.scheme": "https", - "user.name": "enim" - }, - { - "@timestamp": "2016-11-10T05:01:24.000Z", - "destination.bytes": 1506, - "destination.ip": "10.253.228.140", - "destination.port": 6748, - "event.action": "cancel", - "event.code": "admi", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2016-11-10 time=3:01:24 logver=edolo devid=ugiatquo devname=ntium logid=uptate type=lloinven subtype=econs level=medium vd=tetura srcip=10.135.106.42 srcport=6602 srcintf=lo154 dstip=10.224.30.160 dstport=5302 dstintf=eth1247 poluuid=etconsec sessionid=caboNem proto=21 action=cancel policyid=rumetMal trandisp=oconse duration=2.970000 sentbyte=7685 rcvdbyte=1506 devtype=sequam osname=oditempo osversion=1.7544 mastersrcmac=taliqui srcmac=01:00:5e:98:79:a3 crscore=78.248000 craction=rcitat crlevel=dolorema eventtype=emagn user=radipis service=ctetu hostname=orinrep5386.www.corp profile=stenatus reqtype=equep url=https://www.example.com/tali/BCS.txt?iqu=niamqu#equamnih direction=inbound msg=autemv method=emq cat=plicaboN catdesc=amc device_id=vol log_id=admi pri=medium userfrom=culpaq adminprof=saute timezone=GMT+02:00 main_type=ende trigger_policy=abor sub_type=magnid severity_level=adol policy=iutal src=10.208.21.135 src_port=2721 dst=10.253.228.140 dst_port=6748 http_method=ugitse http_url=quiineav http_host=billoinv http_agent=sci http_session_id=col signature_subclass=obea signature_id=5700 srccountry=tatev content_switch_name=luptas server_pool_name=uptatem false_positive_mitigation=oinv user_name=inculp monitor_status=onofd http_refer=https://internal.example.org/nisiu/imad.html?ptatem=itasp#dexe http_version=tat dev_id=onproide threat_weight=ntmo history_threat_weight=loreeu threat_level=temse ftp_mode=aspernat ftp_cmd=ume cipher_suite=caecat msg_id=rautod", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "orinrep5386.www.corp", - "http.request.referrer": "https://internal.example.org/nisiu/imad.html?ptatem=itasp#dexe", - "input.type": "log", - "log.level": "medium", - "log.offset": 21953, - "network.bytes": 9191, - "network.direction": "inbound", - "observer.egress.interface.name": "eth1247", - "observer.ingress.interface.name": "lo154", - "observer.product": "FortiManager", - "observer.serial_number": "vol", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.7544", - "related.hosts": [ - "billoinv", - "ntium", - "orinrep5386.www.corp" - ], - "related.ip": [ - "10.208.21.135", - "10.253.228.140" - ], - "related.user": [ - "inculp" - ], - "rsa.internal.event_desc": "autemv", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "emagn", - "rsa.misc.OS": "oditempo", - "rsa.misc.action": [ - "cancel", - "ugitse" - ], - "rsa.misc.category": "magnid", - "rsa.misc.client": "sci", - "rsa.misc.context": "oconse", - "rsa.misc.event_source": "ntium", - "rsa.misc.event_type": "lloinven", - "rsa.misc.fcatnum": "plicaboN", - "rsa.misc.filter": "amc", - "rsa.misc.hardware_id": "vol", - "rsa.misc.log_session_id": "col", - "rsa.misc.policy_id": "rumetMal", - "rsa.misc.policy_name": "iutal", - "rsa.misc.reference_id": "admi", - "rsa.misc.rule_name": "stenatus", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 5700, - "rsa.misc.version": "1.7544", - "rsa.misc.vsys": "tetura", - "rsa.network.alias_host": [ - "orinrep5386.www.corp" - ], - "rsa.network.dinterface": "eth1247", - "rsa.network.network_service": "ctetu", - "rsa.network.sinterface": "lo154", - "rsa.threat.threat_desc": "temse", - "rsa.time.duration_time": 2.97, - "rsa.time.event_time": "2016-11-10T05:01:24.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 78.248, - "rsa.web.web_ref_domain": "billoinv", - "rule.name": "stenatus", - "service.type": "fortinet", - "source.bytes": 7685, - "source.geo.country_name": "tatev", - "source.ip": "10.208.21.135", - "source.mac": "01:00:5e:98:79:a3", - "source.port": 2721, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.com", - "url.extension": "txt", - "url.fragment": "equamnih", - "url.original": "https://www.example.com/tali/BCS.txt?iqu=niamqu#equamnih", - "url.path": "/tali/BCS.txt", - "url.query": [ - "iqu=niamqu", - "quiineav" - ], - "url.scheme": "https", - "user.name": "inculp" - }, - { - "@timestamp": "2016-11-24T12:03:59.000Z", - "destination.bytes": 4009, - "destination.ip": "10.3.23.172", - "destination.port": 7332, - "event.action": "cancel", - "event.code": "illoi", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ercitat date=2016-11-24 time=10:03:59 log_id=lapar devid=ritati devname=edquia logid=itesse type=mullam subtype=mexerc level=medium vd=amvolu srcip=10.120.231.161 srcport=1129 srcintf=lo653 dstip=10.210.62.203 dstport=4381 dstintf=lo3057 poluuid=ataevita sessionid=oremqu proto=6 action=cancel policyid=velitsed trandisp=magnaali duration=92.900000 sentbyte=3984 rcvdbyte=4009 devtype=ulla osname=equatDu osversion=1.1710 mastersrcmac=aconse srcmac=01:00:5e:92:c2:23 crscore=20.350000 craction=squira crlevel=aliqui eventtype=ess user=uide service=scivel hostname=henderi724.www5.home profile=tquas reqtype=aquio url=https://www.example.com/iame/orroquis.htm?tiumd=ntmoll#mexer direction=internal msg=isnostru method=nofdeFi cat=aquioff catdesc=saqu device_id=remips log_id=illoi pri=medium userfrom=abori adminprof=uisnostr timezone=GMT+02:00 main_type=ilmole trigger_policy=ugi sub_type=niamquis severity_level=nisi policy=emveleum src=10.243.226.122 src_port=3512 dst=10.3.23.172 dst_port=7332 http_method=emullamc http_url=tec http_host=Nemo http_agent=tutlabo http_session_id=mveleum signature_subclass=liq signature_id=7229 srccountry=sBonorum content_switch_name=atems server_pool_name=quira false_positive_mitigation=tassita user_name=olorem monitor_status=sedquiac http_refer=https://www.example.com/atDuis/asnulapa.html?rumwri=velill#ore http_version=tation dev_id=loinve threat_weight=tatevel history_threat_weight=iumdolo threat_level=untu ftp_mode=ict ftp_cmd=squirati cipher_suite=tem msg_id=mestq", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "henderi724.www5.home", - "http.request.referrer": "https://www.example.com/atDuis/asnulapa.html?rumwri=velill#ore", - "input.type": "log", - "log.level": "medium", - "log.offset": 23443, - "network.bytes": 7993, - "network.direction": "internal", - "observer.egress.interface.name": "lo3057", - "observer.ingress.interface.name": "lo653", - "observer.product": "FortiManager", - "observer.serial_number": "remips", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.1710", - "related.hosts": [ - "Nemo", - "edquia", - "henderi724.www5.home" - ], - "related.ip": [ - "10.243.226.122", - "10.3.23.172" - ], - "related.user": [ - "olorem" - ], - "rsa.internal.event_desc": "isnostru", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "ess", - "rsa.misc.OS": "equatDu", - "rsa.misc.action": [ - "cancel", - "emullamc" - ], - "rsa.misc.category": "niamquis", - "rsa.misc.client": "tutlabo", - "rsa.misc.context": "magnaali", - "rsa.misc.event_source": "edquia", - "rsa.misc.event_type": "mullam", - "rsa.misc.fcatnum": "aquioff", - "rsa.misc.filter": "saqu", - "rsa.misc.hardware_id": "remips", - "rsa.misc.log_session_id": "mveleum", - "rsa.misc.policy_id": "velitsed", - "rsa.misc.policy_name": "emveleum", - "rsa.misc.reference_id": "illoi", - "rsa.misc.rule_name": "tquas", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 7229, - "rsa.misc.version": "1.1710", - "rsa.misc.vsys": "amvolu", - "rsa.network.alias_host": [ - "henderi724.www5.home" - ], - "rsa.network.dinterface": "lo3057", - "rsa.network.network_service": "scivel", - "rsa.network.sinterface": "lo653", - "rsa.threat.threat_desc": "untu", - "rsa.time.duration_time": 92.9, - "rsa.time.event_time": "2016-11-24T12:03:59.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 20.35, - "rsa.web.web_ref_domain": "Nemo", - "rule.name": "tquas", - "service.type": "fortinet", - "source.bytes": 3984, - "source.geo.country_name": "sBonorum", - "source.ip": "10.243.226.122", - "source.mac": "01:00:5e:92:c2:23", - "source.port": 3512, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "mexer", - "url.original": "https://www.example.com/iame/orroquis.htm?tiumd=ntmoll#mexer", - "url.path": "/iame/orroquis.htm", - "url.query": [ - "tec", - "tiumd=ntmoll" - ], - "url.scheme": "https", - "user.name": "olorem" - }, - { - "@timestamp": "2016-12-08T07:06:33.000Z", - "destination.bytes": 1651, - "destination.ip": "10.106.85.174", - "destination.port": 307, - "event.action": "cancel", - "event.code": "odoco", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=luptate date=2016-12-8 time=5:06:33 log_id=llamc devid=eleumiu devname=uei logid=Nequepo type=radipis subtype=cive level=low vd=orumSec srcip=10.56.74.7 srcport=6149 srcintf=eth2940 dstip=10.73.10.215 dstport=2079 dstintf=lo3472 poluuid=oeni sessionid=untutlab proto=0 action=cancel policyid=consecte trandisp=pteurs duration=26.872000 sentbyte=617 rcvdbyte=1651 devtype=ons osname=tiaecon osversion=1.5380 mastersrcmac=unt srcmac=01:00:5e:99:7b:4a crscore=124.392000 craction=queporro crlevel=uid eventtype=snostrum user=psa service=nculpaq hostname=reseosqu1629.mail.lan profile=utemvel reqtype=epteur url=https://www.example.net/iame/laudanti.htm?stquido=rsitvolu#mnisi direction=external msg=uameiusm method=adm cat=gelitsed catdesc=tiumto device_id=cor log_id=odoco pri=high userfrom=labore adminprof=ianonnu timezone=PST main_type=rum trigger_policy=erc sub_type=ehende severity_level=tutla policy=licaboNe src=10.94.242.80 src_port=2724 dst=10.106.85.174 dst_port=307 http_method=atiset http_url=serror http_host=onse http_agent=umquam http_session_id=emagn signature_subclass=emulla signature_id=1963 srccountry=iquaUt content_switch_name=mnihilm server_pool_name=redo false_positive_mitigation=etMaloru user_name=lmo monitor_status=iquidex http_refer=https://www.example.org/remipsu/tan.html?mcorpor=doconse#etdol http_version=dolorsi dev_id=nturmag threat_weight=tura history_threat_weight=osquirat threat_level=equat ftp_mode=aliquid ftp_cmd=usantiu cipher_suite=idunt msg_id=atqu", - "event.timezone": "PST", - "fileset.name": "fortimanager", - "host.name": "reseosqu1629.mail.lan", - "http.request.referrer": "https://www.example.org/remipsu/tan.html?mcorpor=doconse#etdol", - "input.type": "log", - "log.level": "high", - "log.offset": 24962, - "network.bytes": 2268, - "network.direction": "external", - "observer.egress.interface.name": "lo3472", - "observer.ingress.interface.name": "eth2940", - "observer.product": "FortiManager", - "observer.serial_number": "cor", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.5380", - "related.hosts": [ - "onse", - "reseosqu1629.mail.lan", - "uei" - ], - "related.ip": [ - "10.106.85.174", - "10.94.242.80" - ], - "related.user": [ - "lmo" - ], - "rsa.internal.event_desc": "uameiusm", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "snostrum", - "rsa.misc.OS": "tiaecon", - "rsa.misc.action": [ - "atiset", - "cancel" - ], - "rsa.misc.category": "ehende", - "rsa.misc.client": "umquam", - "rsa.misc.context": "pteurs", - "rsa.misc.event_source": "uei", - "rsa.misc.event_type": "radipis", - "rsa.misc.fcatnum": "gelitsed", - "rsa.misc.filter": "tiumto", - "rsa.misc.hardware_id": "cor", - "rsa.misc.log_session_id": "emagn", - "rsa.misc.policy_id": "consecte", - "rsa.misc.policy_name": "licaboNe", - "rsa.misc.reference_id": "odoco", - "rsa.misc.rule_name": "utemvel", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 1963, - "rsa.misc.version": "1.5380", - "rsa.misc.vsys": "orumSec", - "rsa.network.alias_host": [ - "reseosqu1629.mail.lan" - ], - "rsa.network.dinterface": "lo3472", - "rsa.network.network_service": "nculpaq", - "rsa.network.sinterface": "eth2940", - "rsa.threat.threat_desc": "equat", - "rsa.time.duration_time": 26.872, - "rsa.time.event_time": "2016-12-08T07:06:33.000Z", - "rsa.time.timezone": "PST", - "rsa.web.reputation_num": 124.392, - "rsa.web.web_ref_domain": "onse", - "rule.name": "utemvel", - "service.type": "fortinet", - "source.bytes": 617, - "source.geo.country_name": "iquaUt", - "source.ip": "10.94.242.80", - "source.mac": "01:00:5e:99:7b:4a", - "source.port": 2724, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.net", - "url.extension": "htm", - "url.fragment": "mnisi", - "url.original": "https://www.example.net/iame/laudanti.htm?stquido=rsitvolu#mnisi", - "url.path": "/iame/laudanti.htm", - "url.query": [ - "serror", - "stquido=rsitvolu" - ], - "url.scheme": "https", - "user.name": "lmo" - }, - { - "@timestamp": "2016-12-23T14:09:07.000Z", - "destination.bytes": 5749, - "destination.geo.country_name": "usm", - "destination.ip": "10.247.53.179", - "destination.nat.ip": "10.168.20.20", - "destination.nat.port": 68, - "destination.port": 6493, - "event.action": "block", - "event.code": "rspici", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=liquam dtime=2016-12-23 00:09:07.712538723 +0000 UTC devid=min devname=oluptat vd=odt date=2016-12-23 time=12:09:07 logid=rspici type=snisi subtype=magnaal level=low eventtime=etquasia logtime=nula srcip=10.117.63.181 srcport=5299 srcintf=lo7416 srcintfrole=Cicero dstip=10.247.53.179 dstport=6493 dstintf=lo3706 dstintfrole=atemaccu poluuid=veritat sessionid=aliquipe proto=3 action=block policyid=aer policytype=osquira crscore=171.144000 craction=minim crlevel=scipi appcat=tur service=acon srccountry=Nemoenim dstcountry=usm trandisp=labori tranip=10.168.20.20 tranport=68 duration=167.038000 sentbyte=7188 rcvdbyte=5749 sentpkt=xeac app=umdolors", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 26461, - "network.bytes": 12937, - "network.protocol": "GGP", - "observer.egress.interface.name": "lo3706", - "observer.ingress.interface.name": "lo7416", - "observer.product": "FortiManager", - "observer.serial_number": "min", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "oluptat" - ], - "related.ip": [ - "10.117.63.181", - "10.168.20.20", - "10.247.53.179" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "magnaal", - "rsa.misc.context": "labori", - "rsa.misc.event_source": "oluptat", - "rsa.misc.event_type": "snisi", - "rsa.misc.hardware_id": "min", - "rsa.misc.log_session_id": "aliquipe", - "rsa.misc.obj_name": "umdolors", - "rsa.misc.policy_id": "aer", - "rsa.misc.reference_id": "rspici", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "odt", - "rsa.network.dinterface": "lo3706", - "rsa.network.network_service": "acon", - "rsa.network.sinterface": "lo7416", - "rsa.time.duration_time": 167.038, - "rsa.time.event_time": "2016-12-23T14:09:07.000Z", - "rsa.time.event_time_str": "etquasia", - "rsa.web.reputation_num": 171.144, - "service.type": "fortinet", - "source.bytes": 7188, - "source.geo.country_name": "Nemoenim", - "source.ip": "10.117.63.181", - "source.port": 5299, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-01-06T09:11:41.000Z", - "destination.bytes": 405, - "destination.ip": "10.53.168.187", - "destination.port": 73, - "event.action": "block", - "event.code": "rsin", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=uiadolo date=2017-1-6 time=7:11:41 log_id=empor devid=umexerci devname=duntut logid=uovol type=prehend subtype=eufug level=low vd=eufug srcip=10.100.53.8 srcport=4318 srcintf=eth5767 dstip=10.163.17.172 dstport=854 dstintf=enp0s3903 poluuid=upta sessionid=atc proto=3 action=block policyid=upta trandisp=itessequ duration=165.935000 sentbyte=4211 rcvdbyte=405 devtype=exerci osname=idata osversion=1.2208 mastersrcmac=usmod srcmac=01:00:5e:c0:47:f3 crscore=135.374000 craction=isiutali crlevel=iquidexe eventtype=illumq user=luptatem service=ite hostname=tasnul4179.internal.host profile=amvo reqtype=tnul url=https://www.example.org/ess/quiad.jpg?ten=litanim#rQuisaut direction=inbound msg=modico method=metco cat=cillu catdesc=iuntNeq device_id=eddoei log_id=rsin pri=very-high userfrom=eriam adminprof=pernat timezone=CEST main_type=imve trigger_policy=essequam sub_type=ueporro severity_level=aliqu policy=upt src=10.141.156.217 src_port=2700 dst=10.53.168.187 dst_port=73 http_method=emacc http_url=emp http_host=lamcola http_agent=veli http_session_id=venia signature_subclass=risni signature_id=1535 srccountry=uat content_switch_name=onemulla server_pool_name=riaturEx false_positive_mitigation=deri user_name=amqu monitor_status=lorsitam http_refer=https://api.example.org/onpr/litseddo.gif?oremqu=idex#radip http_version=upta dev_id=tetura threat_weight=rumet history_threat_weight=uptasnul threat_level=antiumdo ftp_mode=ecill ftp_cmd=iduntu cipher_suite=pisci msg_id=sunt", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "tasnul4179.internal.host", - "http.request.referrer": "https://api.example.org/onpr/litseddo.gif?oremqu=idex#radip", - "input.type": "log", - "log.level": "very-high", - "log.offset": 27119, - "network.bytes": 4616, - "network.direction": "inbound", - "network.protocol": "GGP", - "observer.egress.interface.name": "enp0s3903", - "observer.ingress.interface.name": "eth5767", - "observer.product": "FortiManager", - "observer.serial_number": "eddoei", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.2208", - "related.hosts": [ - "duntut", - "lamcola", - "tasnul4179.internal.host" - ], - "related.ip": [ - "10.141.156.217", - "10.53.168.187" - ], - "related.user": [ - "amqu" - ], - "rsa.internal.event_desc": "modico", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "illumq", - "rsa.misc.OS": "idata", - "rsa.misc.action": [ - "block", - "emacc" - ], - "rsa.misc.category": "ueporro", - "rsa.misc.client": "veli", - "rsa.misc.context": "itessequ", - "rsa.misc.event_source": "duntut", - "rsa.misc.event_type": "prehend", - "rsa.misc.fcatnum": "cillu", - "rsa.misc.filter": "iuntNeq", - "rsa.misc.hardware_id": "eddoei", - "rsa.misc.log_session_id": "venia", - "rsa.misc.policy_id": "upta", - "rsa.misc.policy_name": "upt", - "rsa.misc.reference_id": "rsin", - "rsa.misc.rule_name": "amvo", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 1535, - "rsa.misc.version": "1.2208", - "rsa.misc.vsys": "eufug", - "rsa.network.alias_host": [ - "tasnul4179.internal.host" - ], - "rsa.network.dinterface": "enp0s3903", - "rsa.network.network_service": "ite", - "rsa.network.sinterface": "eth5767", - "rsa.threat.threat_desc": "antiumdo", - "rsa.time.duration_time": 165.935, - "rsa.time.event_time": "2017-01-06T09:11:41.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 135.374, - "rsa.web.web_ref_domain": "lamcola", - "rule.name": "amvo", - "service.type": "fortinet", - "source.bytes": 4211, - "source.geo.country_name": "uat", - "source.ip": "10.141.156.217", - "source.mac": "01:00:5e:c0:47:f3", - "source.port": 2700, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.org", - "url.extension": "jpg", - "url.fragment": "rQuisaut", - "url.original": "https://www.example.org/ess/quiad.jpg?ten=litanim#rQuisaut", - "url.path": "/ess/quiad.jpg", - "url.query": [ - "emp", - "ten=litanim" - ], - "url.scheme": "https", - "user.name": "amqu" - }, - { - "@timestamp": "2017-01-20T04:14:16.000Z", - "destination.bytes": 837, - "destination.ip": "10.189.82.19", - "destination.port": 4267, - "event.action": "accept", - "event.code": "vel", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-1-20 time=2:14:16 devname=oco device_id=aboree log_id=ainci type=generic subtype=osqu pri=very-high devid=sus devname=imavenia logid=expli type=ugiat subtype=rnat level=low vd=orem srcip=10.37.174.58 srcport=3193 srcintf=lo2990 dstip=10.249.60.66 dstport=4859 dstintf=enp0s1732 poluuid=eve sessionid=tco proto=3 action=accept policyid=oluptate trandisp=lit duration=70.988000 sentbyte=6327 rcvdbyte=837 devtype=oquisqu osname=turadip osversion=1.3402 mastersrcmac=amc srcmac=01:00:5e:dd:dc:44 crscore=160.379000 craction=apar crlevel=runtm eventtype=eturadip user=olorsi service=itseddo hostname=bore5546.www.local profile=labo reqtype=lpaquiof url=https://example.com/xeac/llitanim.txt?oreverit=scip#Finibus direction=inbound msg=eufugia method=ncididun cat=hen catdesc=periamea device_id=itametco log_id=vel pri=high userfrom=rere adminprof=pta timezone=CEST main_type=equeporr trigger_policy=met sub_type=volup severity_level=ptate policy=entsu src=10.44.198.184 src_port=5695 dst=10.189.82.19 dst_port=4267 http_method=odoc http_url=atura http_host=tur http_agent=tur http_session_id=atnonpr signature_subclass=ita signature_id=7570 srccountry=colabori content_switch_name=imidestl server_pool_name=piscing false_positive_mitigation=ceroi user_name=iconsequ monitor_status=iat http_refer=https://www.example.net/siuta/atev.htm?CSe=exerci#inesciu http_version=quid dev_id=atcupid threat_weight=onse history_threat_weight=psa threat_level=ate ftp_mode=con ftp_cmd=tqu cipher_suite=eirur msg_id=dese", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "bore5546.www.local", - "http.request.referrer": "https://www.example.net/siuta/atev.htm?CSe=exerci#inesciu", - "input.type": "log", - "log.level": "high", - "log.offset": 28610, - "network.bytes": 7164, - "network.direction": "inbound", - "network.protocol": "GGP", - "observer.egress.interface.name": "enp0s1732", - "observer.ingress.interface.name": "lo2990", - "observer.product": "FortiManager", - "observer.serial_number": "itametco", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.3402", - "related.hosts": [ - "bore5546.www.local", - "imavenia", - "tur" - ], - "related.ip": [ - "10.189.82.19", - "10.44.198.184" - ], - "related.user": [ - "iconsequ" - ], - "rsa.internal.event_desc": "eufugia", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "eturadip", - "rsa.misc.OS": "turadip", - "rsa.misc.action": [ - "accept", - "odoc" - ], - "rsa.misc.category": "volup", - "rsa.misc.client": "tur", - "rsa.misc.context": "lit", - "rsa.misc.event_source": "imavenia", - "rsa.misc.event_type": "ugiat", - "rsa.misc.fcatnum": "hen", - "rsa.misc.filter": "periamea", - "rsa.misc.hardware_id": "itametco", - "rsa.misc.log_session_id": "atnonpr", - "rsa.misc.policy_id": "oluptate", - "rsa.misc.policy_name": "entsu", - "rsa.misc.reference_id": "vel", - "rsa.misc.rule_name": "labo", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 7570, - "rsa.misc.version": "1.3402", - "rsa.misc.vsys": "orem", - "rsa.network.alias_host": [ - "bore5546.www.local" - ], - "rsa.network.dinterface": "enp0s1732", - "rsa.network.network_service": "itseddo", - "rsa.network.sinterface": "lo2990", - "rsa.threat.threat_desc": "ate", - "rsa.time.duration_time": 70.988, - "rsa.time.event_time": "2017-01-20T04:14:16.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 160.379, - "rsa.web.web_ref_domain": "tur", - "rule.name": "labo", - "service.type": "fortinet", - "source.bytes": 6327, - "source.geo.country_name": "colabori", - "source.ip": "10.44.198.184", - "source.mac": "01:00:5e:dd:dc:44", - "source.port": 5695, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.com", - "url.extension": "txt", - "url.fragment": "Finibus", - "url.original": "https://example.com/xeac/llitanim.txt?oreverit=scip#Finibus", - "url.path": "/xeac/llitanim.txt", - "url.query": [ - "atura", - "oreverit=scip" - ], - "url.scheme": "https", - "user.name": "iconsequ" - }, - { - "@timestamp": "2017-02-03T11:16:50.000Z", - "destination.bytes": 3097, - "destination.ip": "10.181.183.104", - "destination.port": 5554, - "event.action": "cancel", - "event.code": "roinBCSe", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=mquisnos date=2017-2-3 time=9:16:50 log_id=lore devid=isci devname=Dui logid=reetdo type=ever subtype=civelits level=high vd=quiav srcip=10.154.34.15 srcport=5986 srcintf=enp0s4064 dstip=10.153.172.249 dstport=7030 dstintf=enp0s3067 poluuid=henderit sessionid=remq proto=21 action=cancel policyid=tla trandisp=arch duration=52.795000 sentbyte=5453 rcvdbyte=3097 devtype=ror osname=onsecte osversion=1.91 mastersrcmac=aecatcup srcmac=01:00:5e:58:7e:f5 crscore=133.560000 craction=quas crlevel=occaeca eventtype=eturadip user=ent service=rumSecti hostname=Utenima260.mail.invalid profile=cept reqtype=aedictas url=https://api.example.org/orio/gna.gif?aaliquaU=olu#iameaque direction=external msg=essequa method=aquio cat=rspicia catdesc=deom device_id=oluptat log_id=roinBCSe pri=medium userfrom=onproide adminprof=uamnih timezone=GMT+02:00 main_type=tatisetq trigger_policy=uidolo sub_type=umdolore severity_level=dmi policy=tam src=10.151.170.207 src_port=1400 dst=10.181.183.104 dst_port=5554 http_method=amni http_url=tatio http_host=amquisno http_agent=modoc http_session_id=magnam signature_subclass=uinesc signature_id=4248 srccountry=idatat content_switch_name=onev server_pool_name=orsi false_positive_mitigation=ntsunt user_name=iosamni monitor_status=idu http_refer=https://example.net/idolo/reet.txt?its=umdolor#isiu http_version=assi dev_id=eserun threat_weight=rvelill history_threat_weight=lupta threat_level=byC ftp_mode=imadm ftp_cmd=uta cipher_suite=tisu msg_id=remagnam", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "Utenima260.mail.invalid", - "http.request.referrer": "https://example.net/idolo/reet.txt?its=umdolor#isiu", - "input.type": "log", - "log.level": "medium", - "log.offset": 30121, - "network.bytes": 8550, - "network.direction": "external", - "observer.egress.interface.name": "enp0s3067", - "observer.ingress.interface.name": "enp0s4064", - "observer.product": "FortiManager", - "observer.serial_number": "oluptat", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.91", - "related.hosts": [ - "Dui", - "Utenima260.mail.invalid", - "amquisno" - ], - "related.ip": [ - "10.151.170.207", - "10.181.183.104" - ], - "related.user": [ - "iosamni" - ], - "rsa.internal.event_desc": "essequa", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "eturadip", - "rsa.misc.OS": "onsecte", - "rsa.misc.action": [ - "amni", - "cancel" - ], - "rsa.misc.category": "umdolore", - "rsa.misc.client": "modoc", - "rsa.misc.context": "arch", - "rsa.misc.event_source": "Dui", - "rsa.misc.event_type": "ever", - "rsa.misc.fcatnum": "rspicia", - "rsa.misc.filter": "deom", - "rsa.misc.hardware_id": "oluptat", - "rsa.misc.log_session_id": "magnam", - "rsa.misc.policy_id": "tla", - "rsa.misc.policy_name": "tam", - "rsa.misc.reference_id": "roinBCSe", - "rsa.misc.rule_name": "cept", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 4248, - "rsa.misc.version": "1.91", - "rsa.misc.vsys": "quiav", - "rsa.network.alias_host": [ - "Utenima260.mail.invalid" - ], - "rsa.network.dinterface": "enp0s3067", - "rsa.network.network_service": "rumSecti", - "rsa.network.sinterface": "enp0s4064", - "rsa.threat.threat_desc": "byC", - "rsa.time.duration_time": 52.795, - "rsa.time.event_time": "2017-02-03T11:16:50.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 133.56, - "rsa.web.web_ref_domain": "amquisno", - "rule.name": "cept", - "service.type": "fortinet", - "source.bytes": 5453, - "source.geo.country_name": "idatat", - "source.ip": "10.151.170.207", - "source.mac": "01:00:5e:58:7e:f5", - "source.port": 1400, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.org", - "url.extension": "gif", - "url.fragment": "iameaque", - "url.original": "https://api.example.org/orio/gna.gif?aaliquaU=olu#iameaque", - "url.path": "/orio/gna.gif", - "url.query": [ - "aaliquaU=olu", - "tatio" - ], - "url.scheme": "https", - "user.name": "iosamni" - }, - { - "@timestamp": "2017-02-18T06:19:24.000Z", - "destination.bytes": 6209, - "destination.ip": "10.130.240.11", - "destination.port": 6515, - "event.action": "deny", - "event.code": "consequa", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=iumdo date=2017-2-18 time=4:19:24 log_id=iusmodit devid=aturv devname=ectetura logid=obeataev type=umf subtype=olesti level=low vd=quaeabil srcip=10.19.99.129 srcport=956 srcintf=eth62 dstip=10.205.132.218 dstport=1643 dstintf=enp0s5908 poluuid=inim sessionid=etdol proto=17 action=deny policyid=oremeumf trandisp=lesti duration=49.961000 sentbyte=3376 rcvdbyte=6209 devtype=enima osname=tnulapar osversion=1.7278 mastersrcmac=sequ srcmac=01:00:5e:4a:1d:f8 crscore=84.522000 craction=tionula crlevel=accus eventtype=uatu user=mquis service=lab hostname=uido2046.mail.lan profile=tena reqtype=aal url=https://mail.example.org/nimadmin/lumqui.txt?iquip=tinculpa#umtota direction=external msg=rumSecti method=riamea cat=eca catdesc=oluptate device_id=Duisa log_id=consequa pri=low userfrom=iaecon adminprof=aevitaed timezone=PT main_type=rep trigger_policy=remap sub_type=deri severity_level=quaeratv policy=involu src=10.70.7.23 src_port=2758 dst=10.130.240.11 dst_port=6515 http_method=odic http_url=iuta http_host=liquaUte http_agent=scivelit http_session_id=Nequ signature_subclass=quid signature_id=1044 srccountry=lloinve content_switch_name=borisnis server_pool_name=onorumet false_positive_mitigation=ptatema user_name=eavolup monitor_status=ipsumq http_refer=https://www.example.org/tno/iss.gif?ptatev=atu#teturad http_version=eturad dev_id=tDuis threat_weight=mwritten history_threat_weight=tat threat_level=equ ftp_mode=sumdolo ftp_cmd=idolorem cipher_suite=temvele msg_id=oremque", - "event.timezone": "PT", - "fileset.name": "fortimanager", - "host.name": "uido2046.mail.lan", - "http.request.referrer": "https://www.example.org/tno/iss.gif?ptatev=atu#teturad", - "input.type": "log", - "log.level": "low", - "log.offset": 31615, - "network.bytes": 9585, - "network.direction": "external", - "observer.egress.interface.name": "enp0s5908", - "observer.ingress.interface.name": "eth62", - "observer.product": "FortiManager", - "observer.serial_number": "Duisa", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.7278", - "related.hosts": [ - "ectetura", - "liquaUte", - "uido2046.mail.lan" - ], - "related.ip": [ - "10.130.240.11", - "10.70.7.23" - ], - "related.user": [ - "eavolup" - ], - "rsa.internal.event_desc": "rumSecti", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "uatu", - "rsa.misc.OS": "tnulapar", - "rsa.misc.action": [ - "deny", - "odic" - ], - "rsa.misc.category": "deri", - "rsa.misc.client": "scivelit", - "rsa.misc.context": "lesti", - "rsa.misc.event_source": "ectetura", - "rsa.misc.event_type": "umf", - "rsa.misc.fcatnum": "eca", - "rsa.misc.filter": "oluptate", - "rsa.misc.hardware_id": "Duisa", - "rsa.misc.log_session_id": "Nequ", - "rsa.misc.policy_id": "oremeumf", - "rsa.misc.policy_name": "involu", - "rsa.misc.reference_id": "consequa", - "rsa.misc.rule_name": "tena", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 1044, - "rsa.misc.version": "1.7278", - "rsa.misc.vsys": "quaeabil", - "rsa.network.alias_host": [ - "uido2046.mail.lan" - ], - "rsa.network.dinterface": "enp0s5908", - "rsa.network.network_service": "lab", - "rsa.network.sinterface": "eth62", - "rsa.threat.threat_desc": "equ", - "rsa.time.duration_time": 49.961, - "rsa.time.event_time": "2017-02-18T06:19:24.000Z", - "rsa.time.timezone": "PT", - "rsa.web.reputation_num": 84.522, - "rsa.web.web_ref_domain": "liquaUte", - "rule.name": "tena", - "service.type": "fortinet", - "source.bytes": 3376, - "source.geo.country_name": "lloinve", - "source.ip": "10.70.7.23", - "source.mac": "01:00:5e:4a:1d:f8", - "source.port": 2758, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.org", - "url.extension": "txt", - "url.fragment": "umtota", - "url.original": "https://mail.example.org/nimadmin/lumqui.txt?iquip=tinculpa#umtota", - "url.path": "/nimadmin/lumqui.txt", - "url.query": [ - "iquip=tinculpa", - "iuta" - ], - "url.scheme": "https", - "user.name": "eavolup" - }, - { - "@timestamp": "2017-03-04T13:21:59.000Z", - "destination.bytes": 6509, - "destination.geo.country_name": "uian", - "destination.ip": "10.111.182.212", - "destination.nat.ip": "10.17.209.252", - "destination.nat.port": 2119, - "destination.port": 4493, - "event.action": "deny", - "event.code": "uae", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=inimve devname=\"uio\" devid=\"mexercit\" vd=byC date=2017-3-4 time=11:21:59 logid=uae type=oremip subtype=its level=very-high eventtime=iavol logtime=natuserr srcip=10.37.161.101 srcport=1552 srcintf=enp0s6659 srcintfrole=evit dstip=10.111.182.212 dstport=4493 dstintf=lo6533 dstintfrole=lamco poluuid=tion sessionid=hender proto=icmp action=deny policyid=seq policytype=rumSe crscore=88.660000 craction=madmi crlevel=tlabore appcat=idunt service=expl srccountry=olore dstcountry=uian trandisp=atuserro tranip=10.17.209.252 tranport=2119 duration=135.770000 sentbyte=313 rcvdbyte=6509 sentpkt=oinBCS app=itsedd", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 33111, - "network.bytes": 6822, - "observer.egress.interface.name": "lo6533", - "observer.ingress.interface.name": "enp0s6659", - "observer.product": "FortiManager", - "observer.serial_number": "mexercit", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "uio" - ], - "related.ip": [ - "10.111.182.212", - "10.17.209.252", - "10.37.161.101" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "its", - "rsa.misc.context": "atuserro", - "rsa.misc.event_source": "uio", - "rsa.misc.event_type": "oremip", - "rsa.misc.hardware_id": "mexercit", - "rsa.misc.log_session_id": "hender", - "rsa.misc.obj_name": "itsedd", - "rsa.misc.policy_id": "seq", - "rsa.misc.reference_id": "uae", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "byC", - "rsa.network.dinterface": "lo6533", - "rsa.network.network_service": "expl", - "rsa.network.sinterface": "enp0s6659", - "rsa.time.duration_time": 135.77, - "rsa.time.event_time": "2017-03-04T13:21:59.000Z", - "rsa.time.event_time_str": "iavol", - "rsa.web.reputation_num": 88.66, - "service.type": "fortinet", - "source.bytes": 313, - "source.geo.country_name": "olore", - "source.ip": "10.37.161.101", - "source.port": 1552, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-03-18T08:24:33.000Z", - "destination.bytes": 1936, - "destination.geo.country_name": "nonpro", - "destination.ip": "10.170.196.181", - "destination.nat.ip": "10.153.166.133", - "destination.nat.port": 4638, - "destination.port": 6994, - "event.action": "allow", - "event.code": "sin", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ipis devname=\"itautfu\" devid=\"nesci\" vd=tam date=2017-3-18 time=6:24:33 logid=sin type=idexeac subtype=nimadmin level=medium eventtime=edutper logtime=tevelite srcip=10.158.175.98 srcport=1491 srcintf=enp0s7649 srcintfrole=oinBCSed dstip=10.170.196.181 dstport=6994 dstintf=enp0s5873 dstintfrole=obeatae poluuid=iquid sessionid=evo proto=udp action=allow policyid=mqu policytype=pteursi crscore=98.596000 craction=expl crlevel=essecill appcat=totamre service=rpo srccountry=velites dstcountry=nonpro trandisp=nula tranip=10.153.166.133 tranport=4638 duration=39.506000 sentbyte=6610 rcvdbyte=1936 sentpkt=olu app=imide", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 33726, - "network.bytes": 8546, - "observer.egress.interface.name": "enp0s5873", - "observer.ingress.interface.name": "enp0s7649", - "observer.product": "FortiManager", - "observer.serial_number": "nesci", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "itautfu" - ], - "related.ip": [ - "10.153.166.133", - "10.158.175.98", - "10.170.196.181" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "nimadmin", - "rsa.misc.context": "nula", - "rsa.misc.event_source": "itautfu", - "rsa.misc.event_type": "idexeac", - "rsa.misc.hardware_id": "nesci", - "rsa.misc.log_session_id": "evo", - "rsa.misc.obj_name": "imide", - "rsa.misc.policy_id": "mqu", - "rsa.misc.reference_id": "sin", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "tam", - "rsa.network.dinterface": "enp0s5873", - "rsa.network.network_service": "rpo", - "rsa.network.sinterface": "enp0s7649", - "rsa.time.duration_time": 39.506, - "rsa.time.event_time": "2017-03-18T08:24:33.000Z", - "rsa.time.event_time_str": "edutper", - "rsa.web.reputation_num": 98.596, - "service.type": "fortinet", - "source.bytes": 6610, - "source.geo.country_name": "velites", - "source.ip": "10.158.175.98", - "source.port": 1491, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-04-02T03:27:07.000Z", - "destination.bytes": 5360, - "destination.ip": "10.48.25.200", - "destination.port": 5179, - "event.action": "accept", - "event.code": "uredol", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-4-2 time=1:27:07 logver=amn devid=itessequ devname=porissu logid=umd type=sumd subtype=sectetur level=low vd=aUtenima srcip=10.62.10.137 srcport=5596 srcintf=lo6539 dstip=10.138.249.251 dstport=630 dstintf=eth1576 poluuid=deritinv sessionid=evelite proto=6 action=accept policyid=stiaecon trandisp=usBono duration=155.835000 sentbyte=3942 rcvdbyte=5360 devtype=ttenb osname=olor osversion=1.5978 mastersrcmac=lapa srcmac=01:00:5e:b0:3e:44 crscore=105.845000 craction=lors crlevel=oluptat eventtype=enimad user=tis service=qua hostname=con6049.internal.lan profile=quelaud reqtype=luptat url=https://internal.example.com/temse/caecat.jpg?emeu=tatemac#quisn direction=inbound msg=teursint method=etMa cat=llita catdesc=ntsunt device_id=nturmag log_id=uredol pri=high userfrom=temsequi adminprof=mquia timezone=ET main_type=enbyCic trigger_policy=iveli sub_type=conseq severity_level=itame policy=tenat src=10.63.171.91 src_port=4396 dst=10.48.25.200 dst_port=5179 http_method=nse http_url=mveniam http_host=tuser http_agent=mmo http_session_id=eve signature_subclass=nbyCicer signature_id=6129 srccountry=ciad content_switch_name=ugiatqu server_pool_name=eruntmo false_positive_mitigation=nimve user_name=usanti monitor_status=ion http_refer=https://mail.example.org/gelits/iavo.txt?udexerc=ovolupta#volup http_version=macc dev_id=ria threat_weight=beat history_threat_weight=rro threat_level=tuser ftp_mode=ctasu ftp_cmd=irat cipher_suite=sitame msg_id=oinven", - "event.timezone": "ET", - "fileset.name": "fortimanager", - "host.name": "con6049.internal.lan", - "http.request.referrer": "https://mail.example.org/gelits/iavo.txt?udexerc=ovolupta#volup", - "input.type": "log", - "log.level": "high", - "log.offset": 34352, - "network.bytes": 9302, - "network.direction": "inbound", - "observer.egress.interface.name": "eth1576", - "observer.ingress.interface.name": "lo6539", - "observer.product": "FortiManager", - "observer.serial_number": "nturmag", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.5978", - "related.hosts": [ - "con6049.internal.lan", - "porissu", - "tuser" - ], - "related.ip": [ - "10.48.25.200", - "10.63.171.91" - ], - "related.user": [ - "usanti" - ], - "rsa.internal.event_desc": "teursint", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "enimad", - "rsa.misc.OS": "olor", - "rsa.misc.action": [ - "accept", - "nse" - ], - "rsa.misc.category": "conseq", - "rsa.misc.client": "mmo", - "rsa.misc.context": "usBono", - "rsa.misc.event_source": "porissu", - "rsa.misc.event_type": "sumd", - "rsa.misc.fcatnum": "llita", - "rsa.misc.filter": "ntsunt", - "rsa.misc.hardware_id": "nturmag", - "rsa.misc.log_session_id": "eve", - "rsa.misc.policy_id": "stiaecon", - "rsa.misc.policy_name": "tenat", - "rsa.misc.reference_id": "uredol", - "rsa.misc.rule_name": "quelaud", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 6129, - "rsa.misc.version": "1.5978", - "rsa.misc.vsys": "aUtenima", - "rsa.network.alias_host": [ - "con6049.internal.lan" - ], - "rsa.network.dinterface": "eth1576", - "rsa.network.network_service": "qua", - "rsa.network.sinterface": "lo6539", - "rsa.threat.threat_desc": "tuser", - "rsa.time.duration_time": 155.835, - "rsa.time.event_time": "2017-04-02T03:27:07.000Z", - "rsa.time.timezone": "ET", - "rsa.web.reputation_num": 105.845, - "rsa.web.web_ref_domain": "tuser", - "rule.name": "quelaud", - "service.type": "fortinet", - "source.bytes": 3942, - "source.geo.country_name": "ciad", - "source.ip": "10.63.171.91", - "source.mac": "01:00:5e:b0:3e:44", - "source.port": 4396, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "internal.example.com", - "url.extension": "jpg", - "url.fragment": "quisn", - "url.original": "https://internal.example.com/temse/caecat.jpg?emeu=tatemac#quisn", - "url.path": "/temse/caecat.jpg", - "url.query": [ - "emeu=tatemac", - "mveniam" - ], - "url.scheme": "https", - "user.name": "usanti" - }, - { - "@timestamp": "2017-04-16T10:29:41.000Z", - "destination.bytes": 7791, - "destination.geo.country_name": "ddoe", - "destination.ip": "10.77.105.81", - "destination.nat.ip": "10.38.168.190", - "destination.nat.port": 7260, - "destination.port": 4455, - "event.action": "allow", - "event.code": "rcitati", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ute dtime=2017-04-16 08:29:41.792538723 +0000 UTC devid=mexer devname=iam vd=Bonoru date=2017-4-16 time=8:29:41 logid=rcitati type=nula subtype=ameaquei level=low eventtime=adipi logtime=mquis srcip=10.174.17.46 srcport=2743 srcintf=eth6814 srcintfrole=ine dstip=10.77.105.81 dstport=4455 dstintf=enp0s7799 dstintfrole=orem poluuid=giatqu sessionid=rsint proto=udp action=allow policyid=paq policytype=uianon crscore=60.762000 craction=uisautem crlevel=mquameiu appcat=loremq service=turmagni srccountry=ores dstcountry=ddoe trandisp=uid tranip=10.38.168.190 tranport=7260 duration=129.140000 sentbyte=368 rcvdbyte=7791 sentpkt=incidi app=aedictas", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 35821, - "network.bytes": 8159, - "observer.egress.interface.name": "enp0s7799", - "observer.ingress.interface.name": "eth6814", - "observer.product": "FortiManager", - "observer.serial_number": "mexer", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "iam" - ], - "related.ip": [ - "10.174.17.46", - "10.38.168.190", - "10.77.105.81" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "ameaquei", - "rsa.misc.context": "uid", - "rsa.misc.event_source": "iam", - "rsa.misc.event_type": "nula", - "rsa.misc.hardware_id": "mexer", - "rsa.misc.log_session_id": "rsint", - "rsa.misc.obj_name": "aedictas", - "rsa.misc.policy_id": "paq", - "rsa.misc.reference_id": "rcitati", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "Bonoru", - "rsa.network.dinterface": "enp0s7799", - "rsa.network.network_service": "turmagni", - "rsa.network.sinterface": "eth6814", - "rsa.time.duration_time": 129.14, - "rsa.time.event_time": "2017-04-16T10:29:41.000Z", - "rsa.time.event_time_str": "adipi", - "rsa.web.reputation_num": 60.762, - "service.type": "fortinet", - "source.bytes": 368, - "source.geo.country_name": "ores", - "source.ip": "10.174.17.46", - "source.port": 2743, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-04-30T05:32:16.000Z", - "destination.bytes": 7663, - "destination.geo.country_name": "boriosa", - "destination.ip": "10.225.37.73", - "destination.nat.ip": "10.166.142.198", - "destination.nat.port": 4151, - "destination.port": 5630, - "event.action": "cancel", - "event.code": "abore", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=temaccus devname=\"ons\" devid=\"unt\" vd=liq date=2017-4-30 time=3:32:16 logid=abore type=iumdo subtype=oreeu level=high eventtime=exe logtime=tis srcip=10.36.99.207 srcport=4829 srcintf=lo497 srcintfrole=tvol dstip=10.225.37.73 dstport=5630 dstintf=eth1882 dstintfrole=eniamqu poluuid=iumt sessionid=porissus proto=udp action=cancel policyid=tsunt policytype=rnat crscore=88.508000 craction=ured crlevel=ctetu appcat=oreeu service=uasiarch srccountry=Malor dstcountry=boriosa trandisp=cillumdo tranip=10.166.142.198 tranport=4151 duration=1.040000 sentbyte=465 rcvdbyte=7663 sentpkt=oreetd app=lor", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 36476, - "network.bytes": 8128, - "observer.egress.interface.name": "eth1882", - "observer.ingress.interface.name": "lo497", - "observer.product": "FortiManager", - "observer.serial_number": "unt", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "ons" - ], - "related.ip": [ - "10.166.142.198", - "10.225.37.73", - "10.36.99.207" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "oreeu", - "rsa.misc.context": "cillumdo", - "rsa.misc.event_source": "ons", - "rsa.misc.event_type": "iumdo", - "rsa.misc.hardware_id": "unt", - "rsa.misc.log_session_id": "porissus", - "rsa.misc.obj_name": "lor", - "rsa.misc.policy_id": "tsunt", - "rsa.misc.reference_id": "abore", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "liq", - "rsa.network.dinterface": "eth1882", - "rsa.network.network_service": "uasiarch", - "rsa.network.sinterface": "lo497", - "rsa.time.duration_time": 1.04, - "rsa.time.event_time": "2017-04-30T05:32:16.000Z", - "rsa.time.event_time_str": "exe", - "rsa.web.reputation_num": 88.508, - "service.type": "fortinet", - "source.bytes": 465, - "source.geo.country_name": "Malor", - "source.ip": "10.36.99.207", - "source.port": 4829, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-05-14T12:34:50.000Z", - "destination.bytes": 6820, - "destination.geo.country_name": "lill", - "destination.ip": "10.214.156.161", - "destination.nat.ip": "10.145.194.12", - "destination.nat.port": 1001, - "destination.port": 3854, - "event.action": "block", - "event.code": "tassitas", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=etc devname=\"eturadip\" devid=\"nost\" vd=atus date=2017-5-14 time=10:34:50 logid=tassitas type=obea subtype=velite level=medium eventtime=litse logtime=san srcip=10.66.90.225 srcport=4846 srcintf=lo4891 srcintfrole=moenimi dstip=10.214.156.161 dstport=3854 dstintf=eth1188 dstintfrole=ati poluuid=rauto sessionid=doloreeu proto=6 action=block policyid=eumfu policytype=docons crscore=3.408000 craction=eumf crlevel=roquisq appcat=uasi service=maveniam srccountry=uis dstcountry=lill trandisp=remeum tranip=10.145.194.12 tranport=1001 duration=25.398000 sentbyte=6452 rcvdbyte=6820 sentpkt=aturE app=umto", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 37079, - "network.bytes": 13272, - "observer.egress.interface.name": "eth1188", - "observer.ingress.interface.name": "lo4891", - "observer.product": "FortiManager", - "observer.serial_number": "nost", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "eturadip" - ], - "related.ip": [ - "10.145.194.12", - "10.214.156.161", - "10.66.90.225" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "velite", - "rsa.misc.context": "remeum", - "rsa.misc.event_source": "eturadip", - "rsa.misc.event_type": "obea", - "rsa.misc.hardware_id": "nost", - "rsa.misc.log_session_id": "doloreeu", - "rsa.misc.obj_name": "umto", - "rsa.misc.policy_id": "eumfu", - "rsa.misc.reference_id": "tassitas", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "atus", - "rsa.network.dinterface": "eth1188", - "rsa.network.network_service": "maveniam", - "rsa.network.sinterface": "lo4891", - "rsa.time.duration_time": 25.398, - "rsa.time.event_time": "2017-05-14T12:34:50.000Z", - "rsa.time.event_time_str": "litse", - "rsa.web.reputation_num": 3.408, - "service.type": "fortinet", - "source.bytes": 6452, - "source.geo.country_name": "uis", - "source.ip": "10.66.90.225", - "source.port": 4846, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-05-29T07:37:24.000Z", - "destination.bytes": 4638, - "destination.geo.country_name": "cidu", - "destination.ip": "10.156.208.5", - "destination.nat.ip": "10.163.36.101", - "destination.nat.port": 253, - "destination.port": 7612, - "event.action": "cancel", - "event.code": "eddoei", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=pariat devname=\"iutal\" devid=\"teturad\" vd=ese date=2017-5-29 time=5:37:24 logid=eddoei type=lorumw subtype=eca level=medium eventtime=nimve logtime=duntut srcip=10.6.242.108 srcport=3373 srcintf=lo3230 srcintfrole=qua dstip=10.156.208.5 dstport=7612 dstintf=lo1800 dstintfrole=quisn poluuid=pteu sessionid=uatD proto=0 action=cancel policyid=antiu policytype=velillum crscore=166.389000 craction=iatquovo crlevel=lapari appcat=Mal service=itinvo srccountry=snulap dstcountry=cidu trandisp=hilmol tranip=10.163.36.101 tranport=253 duration=72.488000 sentbyte=1880 rcvdbyte=4638 sentpkt=ident app=scip", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 37688, - "network.bytes": 6518, - "observer.egress.interface.name": "lo1800", - "observer.ingress.interface.name": "lo3230", - "observer.product": "FortiManager", - "observer.serial_number": "teturad", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "iutal" - ], - "related.ip": [ - "10.156.208.5", - "10.163.36.101", - "10.6.242.108" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "eca", - "rsa.misc.context": "hilmol", - "rsa.misc.event_source": "iutal", - "rsa.misc.event_type": "lorumw", - "rsa.misc.hardware_id": "teturad", - "rsa.misc.log_session_id": "uatD", - "rsa.misc.obj_name": "scip", - "rsa.misc.policy_id": "antiu", - "rsa.misc.reference_id": "eddoei", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "ese", - "rsa.network.dinterface": "lo1800", - "rsa.network.network_service": "itinvo", - "rsa.network.sinterface": "lo3230", - "rsa.time.duration_time": 72.488, - "rsa.time.event_time": "2017-05-29T07:37:24.000Z", - "rsa.time.event_time_str": "nimve", - "rsa.web.reputation_num": 166.389, - "service.type": "fortinet", - "source.bytes": 1880, - "source.geo.country_name": "snulap", - "source.ip": "10.6.242.108", - "source.port": 3373, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-06-12T14:39:58.000Z", - "destination.bytes": 1048, - "destination.ip": "10.68.233.163", - "destination.port": 3126, - "event.action": "allow", - "event.code": "emve", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-6-12 time=12:39:58 devname=uamqu device_id=iusmodi log_id=esciun type=generic subtype=tasnul pri=medium devid=ccusant devname=epteurs logid=rmag type=quisquam subtype=eporroqu level=very-high vd=dit srcip=10.25.134.171 srcport=7867 srcintf=eth4543 dstip=10.43.235.230 dstport=2198 dstintf=lo4581 poluuid=BCSe sessionid=rem proto=0 action=allow policyid=eeufug trandisp=ntin duration=6.686000 sentbyte=5763 rcvdbyte=1048 devtype=cinge osname=tatem osversion=1.4713 mastersrcmac=eritqu srcmac=01:00:5e:ed:6b:57 crscore=10.603000 craction=nimip crlevel=iutaliq eventtype=olore user=onemul service=trudexe hostname=remeum2641.www5.corp profile=Quisa reqtype=quiav url=https://www5.example.com/elit/sam.htm?nevolu=unt#isni direction=outbound msg=ecillum method=olor cat=amei catdesc=doconseq device_id=conseq log_id=emve pri=very-high userfrom=tiu adminprof=wri timezone=GMT-07:00 main_type=asper trigger_policy=dictasun sub_type=psa severity_level=lorese policy=olupta src=10.220.148.127 src_port=6681 dst=10.68.233.163 dst_port=3126 http_method=itanimi http_url=onoru http_host=data http_agent=ugits http_session_id=ittenb signature_subclass=tobeatae signature_id=5617 srccountry=quis content_switch_name=exe server_pool_name=naa false_positive_mitigation=equat user_name=estiaec monitor_status=pitlabo http_refer=https://example.net/rcitat/ree.htm?ionofdeF=rsp#imipsa http_version=nostrum dev_id=autodita threat_weight=ntut history_threat_weight=temveleu threat_level=itametco ftp_mode=etcons ftp_cmd=etco cipher_suite=iuntN msg_id=utfugi", - "event.timezone": "GMT-07:00", - "fileset.name": "fortimanager", - "host.name": "remeum2641.www5.corp", - "http.request.referrer": "https://example.net/rcitat/ree.htm?ionofdeF=rsp#imipsa", - "input.type": "log", - "log.level": "very-high", - "log.offset": 38295, - "network.bytes": 6811, - "network.direction": "outbound", - "observer.egress.interface.name": "lo4581", - "observer.ingress.interface.name": "eth4543", - "observer.product": "FortiManager", - "observer.serial_number": "conseq", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4713", - "related.hosts": [ - "data", - "epteurs", - "remeum2641.www5.corp" - ], - "related.ip": [ - "10.220.148.127", - "10.68.233.163" - ], - "related.user": [ - "estiaec" - ], - "rsa.internal.event_desc": "ecillum", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "olore", - "rsa.misc.OS": "tatem", - "rsa.misc.action": [ - "allow", - "itanimi" - ], - "rsa.misc.category": "psa", - "rsa.misc.client": "ugits", - "rsa.misc.context": "ntin", - "rsa.misc.event_source": "epteurs", - "rsa.misc.event_type": "quisquam", - "rsa.misc.fcatnum": "amei", - "rsa.misc.filter": "doconseq", - "rsa.misc.hardware_id": "conseq", - "rsa.misc.log_session_id": "ittenb", - "rsa.misc.policy_id": "eeufug", - "rsa.misc.policy_name": "olupta", - "rsa.misc.reference_id": "emve", - "rsa.misc.rule_name": "Quisa", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 5617, - "rsa.misc.version": "1.4713", - "rsa.misc.vsys": "dit", - "rsa.network.alias_host": [ - "remeum2641.www5.corp" - ], - "rsa.network.dinterface": "lo4581", - "rsa.network.network_service": "trudexe", - "rsa.network.sinterface": "eth4543", - "rsa.threat.threat_desc": "itametco", - "rsa.time.duration_time": 6.686, - "rsa.time.event_time": "2017-06-12T14:39:58.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.reputation_num": 10.603, - "rsa.web.web_ref_domain": "data", - "rule.name": "Quisa", - "service.type": "fortinet", - "source.bytes": 5763, - "source.geo.country_name": "quis", - "source.ip": "10.220.148.127", - "source.mac": "01:00:5e:ed:6b:57", - "source.port": 6681, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www5.example.com", - "url.extension": "htm", - "url.fragment": "isni", - "url.original": "https://www5.example.com/elit/sam.htm?nevolu=unt#isni", - "url.path": "/elit/sam.htm", - "url.query": [ - "nevolu=unt", - "onoru" - ], - "url.scheme": "https", - "user.name": "estiaec" - }, - { - "@timestamp": "2017-06-26T09:42:33.000Z", - "destination.bytes": 6196, - "destination.ip": "10.94.177.125", - "destination.port": 6683, - "event.action": "allow", - "event.code": "mquido", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=isnostru date=2017-6-26 time=7:42:33 log_id=nul devid=ntocca devname=trudex logid=tvol type=lup subtype=mipsamv level=medium vd=qua srcip=10.249.194.7 srcport=4987 srcintf=enp0s2282 dstip=10.57.116.17 dstport=90 dstintf=enp0s7442 poluuid=xcep sessionid=gnidol proto=0 action=allow policyid=uaeab trandisp=ptat duration=136.310000 sentbyte=1078 rcvdbyte=6196 devtype=eturadip osname=amquaera osversion=1.4481 mastersrcmac=equ srcmac=01:00:5e:00:fd:79 crscore=18.750000 craction=olesti crlevel=edquia eventtype=ihi user=undeomn service=ape hostname=itaspe3216.localdomain profile=onsecte reqtype=prehende url=https://example.org/porro/issu.htm?inculpa=ruredol#iadeseru direction=unknown msg=numq method=quae cat=periam catdesc=ain device_id=umiurer log_id=mquido pri=very-high userfrom=onorume adminprof=abill timezone=GMT+02:00 main_type=uov trigger_policy=mini sub_type=mve severity_level=tionev policy=uasiarch src=10.116.82.108 src_port=7276 dst=10.94.177.125 dst_port=6683 http_method=nimides http_url=olorsit http_host=naaliq http_agent=plica http_session_id=asiarc signature_subclass=lor signature_id=5152 srccountry=snula content_switch_name=pici server_pool_name=bori false_positive_mitigation=dipi user_name=ecatc monitor_status=quovolu http_refer=https://example.net/itse/sse.gif?lupt=quatur#dminim http_version=ptatevel dev_id=aperiame threat_weight=stenat history_threat_weight=uianonnu threat_level=tatiset ftp_mode=quira ftp_cmd=ciatisun cipher_suite=duntutl msg_id=nven", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "itaspe3216.localdomain", - "http.request.referrer": "https://example.net/itse/sse.gif?lupt=quatur#dminim", - "input.type": "log", - "log.level": "very-high", - "log.offset": 39842, - "network.bytes": 7274, - "network.direction": "unknown", - "observer.egress.interface.name": "enp0s7442", - "observer.ingress.interface.name": "enp0s2282", - "observer.product": "FortiManager", - "observer.serial_number": "umiurer", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4481", - "related.hosts": [ - "itaspe3216.localdomain", - "naaliq", - "trudex" - ], - "related.ip": [ - "10.116.82.108", - "10.94.177.125" - ], - "related.user": [ - "ecatc" - ], - "rsa.internal.event_desc": "numq", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "ihi", - "rsa.misc.OS": "amquaera", - "rsa.misc.action": [ - "allow", - "nimides" - ], - "rsa.misc.category": "mve", - "rsa.misc.client": "plica", - "rsa.misc.context": "ptat", - "rsa.misc.event_source": "trudex", - "rsa.misc.event_type": "lup", - "rsa.misc.fcatnum": "periam", - "rsa.misc.filter": "ain", - "rsa.misc.hardware_id": "umiurer", - "rsa.misc.log_session_id": "asiarc", - "rsa.misc.policy_id": "uaeab", - "rsa.misc.policy_name": "uasiarch", - "rsa.misc.reference_id": "mquido", - "rsa.misc.rule_name": "onsecte", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 5152, - "rsa.misc.version": "1.4481", - "rsa.misc.vsys": "qua", - "rsa.network.alias_host": [ - "itaspe3216.localdomain" - ], - "rsa.network.dinterface": "enp0s7442", - "rsa.network.network_service": "ape", - "rsa.network.sinterface": "enp0s2282", - "rsa.threat.threat_desc": "tatiset", - "rsa.time.duration_time": 136.31, - "rsa.time.event_time": "2017-06-26T09:42:33.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 18.75, - "rsa.web.web_ref_domain": "naaliq", - "rule.name": "onsecte", - "service.type": "fortinet", - "source.bytes": 1078, - "source.geo.country_name": "snula", - "source.ip": "10.116.82.108", - "source.mac": "01:00:5e:00:fd:79", - "source.port": 7276, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "iadeseru", - "url.original": "https://example.org/porro/issu.htm?inculpa=ruredol#iadeseru", - "url.path": "/porro/issu.htm", - "url.query": [ - "inculpa=ruredol", - "olorsit" - ], - "url.scheme": "https", - "user.name": "ecatc" - }, - { - "@timestamp": "2017-07-11T04:45:07.000Z", - "destination.bytes": 7131, - "destination.ip": "10.113.152.241", - "destination.port": 2330, - "event.action": "cancel", - "event.code": "uptat", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-7-11 time=2:45:07 devname=saq device_id=asiarch log_id=ssuscipi type=generic subtype=utla pri=medium devid=tquovo devname=fugi logid=nse type=nesciu subtype=todit level=very-high vd=inrepreh srcip=10.14.192.162 srcport=2536 srcintf=enp0s4429 dstip=10.179.128.6 dstport=3375 dstintf=enp0s4580 poluuid=ptate sessionid=volupta proto=3 action=cancel policyid=utla trandisp=emi duration=171.651000 sentbyte=3313 rcvdbyte=7131 devtype=velites osname=oloremi osversion=1.4442 mastersrcmac=apari srcmac=01:00:5e:0c:fb:2b crscore=140.065000 craction=uel crlevel=fficiad eventtype=teirured user=nostru service=rcit hostname=mea6298.api.example profile=eumiu reqtype=tatevel url=https://mail.example.org/uamquaer/texplica.gif?sequa=lorum#suntexpl direction=inbound msg=Sedut method=tatis cat=audant catdesc=obeata device_id=uredol log_id=uptat pri=low userfrom=entorev adminprof=quuntur timezone=GMT+02:00 main_type=exercit trigger_policy=dexer sub_type=idolor severity_level=onpr policy=uira src=10.115.121.243 src_port=550 dst=10.113.152.241 dst_port=2330 http_method=ali http_url=udexerci http_host=uae http_agent=imveni http_session_id=econ signature_subclass=aborio signature_id=1122 srccountry=setquas content_switch_name=nbyCi server_pool_name=runtmoll false_positive_mitigation=busBon user_name=norumetM monitor_status=isno http_refer=https://internal.example.com/ameaq/Quis.html?lestiae=iav#umiure http_version=isiut dev_id=tin threat_weight=rporiss history_threat_weight=billoinv threat_level=etconse ftp_mode=nesciu ftp_cmd=mali cipher_suite=roinBCSe msg_id=eetdolor", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "mea6298.api.example", - "http.request.referrer": "https://internal.example.com/ameaq/Quis.html?lestiae=iav#umiure", - "input.type": "log", - "log.level": "low", - "log.offset": 41333, - "network.bytes": 10444, - "network.direction": "inbound", - "network.protocol": "GGP", - "observer.egress.interface.name": "enp0s4580", - "observer.ingress.interface.name": "enp0s4429", - "observer.product": "FortiManager", - "observer.serial_number": "uredol", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4442", - "related.hosts": [ - "fugi", - "mea6298.api.example", - "uae" - ], - "related.ip": [ - "10.113.152.241", - "10.115.121.243" - ], - "related.user": [ - "norumetM" - ], - "rsa.internal.event_desc": "Sedut", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "teirured", - "rsa.misc.OS": "oloremi", - "rsa.misc.action": [ - "ali", - "cancel" - ], - "rsa.misc.category": "idolor", - "rsa.misc.client": "imveni", - "rsa.misc.context": "emi", - "rsa.misc.event_source": "fugi", - "rsa.misc.event_type": "nesciu", - "rsa.misc.fcatnum": "audant", - "rsa.misc.filter": "obeata", - "rsa.misc.hardware_id": "uredol", - "rsa.misc.log_session_id": "econ", - "rsa.misc.policy_id": "utla", - "rsa.misc.policy_name": "uira", - "rsa.misc.reference_id": "uptat", - "rsa.misc.rule_name": "eumiu", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 1122, - "rsa.misc.version": "1.4442", - "rsa.misc.vsys": "inrepreh", - "rsa.network.alias_host": [ - "mea6298.api.example" - ], - "rsa.network.dinterface": "enp0s4580", - "rsa.network.network_service": "rcit", - "rsa.network.sinterface": "enp0s4429", - "rsa.threat.threat_desc": "etconse", - "rsa.time.duration_time": 171.651, - "rsa.time.event_time": "2017-07-11T04:45:07.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 140.065, - "rsa.web.web_ref_domain": "uae", - "rule.name": "eumiu", - "service.type": "fortinet", - "source.bytes": 3313, - "source.geo.country_name": "setquas", - "source.ip": "10.115.121.243", - "source.mac": "01:00:5e:0c:fb:2b", - "source.port": 550, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.org", - "url.extension": "gif", - "url.fragment": "suntexpl", - "url.original": "https://mail.example.org/uamquaer/texplica.gif?sequa=lorum#suntexpl", - "url.path": "/uamquaer/texplica.gif", - "url.query": [ - "sequa=lorum", - "udexerci" - ], - "url.scheme": "https", - "user.name": "norumetM" - }, - { - "@timestamp": "2017-07-25T11:47:41.000Z", - "destination.bytes": 6863, - "destination.ip": "10.179.153.97", - "destination.port": 1908, - "event.action": "accept", - "event.code": "taliqu", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-7-25 time=9:47:41 logver=upt devid=equamni devname=atcupi logid=enima type=uptateve subtype=fugitsed level=medium vd=lorem srcip=10.68.159.207 srcport=3320 srcintf=enp0s7206 dstip=10.139.195.188 dstport=893 dstintf=enp0s6960 poluuid=lits sessionid=tvolu proto=17 action=accept policyid=ollitan trandisp=temseq duration=0.684000 sentbyte=3045 rcvdbyte=6863 devtype=edictasu osname=eturadi osversion=1.3804 mastersrcmac=edquiano srcmac=01:00:5e:09:79:f2 crscore=11.231000 craction=taevitae crlevel=tevel eventtype=tatemse user=gitsed service=agn hostname=iqu7510.internal.corp profile=equeporr reqtype=amremap url=https://www5.example.org/aqu/utemvele.gif?serrorsi=tsedquia#rsit direction=unknown msg=ntutlabo method=idex cat=nihilmo catdesc=reetdo device_id=xeaco log_id=taliqu pri=medium userfrom=hite adminprof=umfugi timezone=CT main_type=dminimve trigger_policy=remips sub_type=laboreet severity_level=uptate policy=tot src=10.49.82.45 src_port=435 dst=10.179.153.97 dst_port=1908 http_method=ade http_url=nihilmol http_host=nder http_agent=ano http_session_id=rumexer signature_subclass=eab signature_id=2387 srccountry=saquaeab content_switch_name=eli server_pool_name=rissusci false_positive_mitigation=ectetur user_name=dictasun monitor_status=inimv http_refer=https://api.example.org/volup/untNeq.htm?mremaper=uteirur#ntium http_version=ide dev_id=quunturm threat_weight=quovo history_threat_weight=quaturve threat_level=ntiumdol ftp_mode=conse ftp_cmd=aturve cipher_suite=edqui msg_id=tvolu", - "event.timezone": "CT", - "fileset.name": "fortimanager", - "host.name": "iqu7510.internal.corp", - "http.request.referrer": "https://api.example.org/volup/untNeq.htm?mremaper=uteirur#ntium", - "input.type": "log", - "log.level": "medium", - "log.offset": 42910, - "network.bytes": 9908, - "network.direction": "unknown", - "observer.egress.interface.name": "enp0s6960", - "observer.ingress.interface.name": "enp0s7206", - "observer.product": "FortiManager", - "observer.serial_number": "xeaco", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.3804", - "related.hosts": [ - "atcupi", - "iqu7510.internal.corp", - "nder" - ], - "related.ip": [ - "10.179.153.97", - "10.49.82.45" - ], - "related.user": [ - "dictasun" - ], - "rsa.internal.event_desc": "ntutlabo", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "tatemse", - "rsa.misc.OS": "eturadi", - "rsa.misc.action": [ - "accept", - "ade" - ], - "rsa.misc.category": "laboreet", - "rsa.misc.client": "ano", - "rsa.misc.context": "temseq", - "rsa.misc.event_source": "atcupi", - "rsa.misc.event_type": "uptateve", - "rsa.misc.fcatnum": "nihilmo", - "rsa.misc.filter": "reetdo", - "rsa.misc.hardware_id": "xeaco", - "rsa.misc.log_session_id": "rumexer", - "rsa.misc.policy_id": "ollitan", - "rsa.misc.policy_name": "tot", - "rsa.misc.reference_id": "taliqu", - "rsa.misc.rule_name": "equeporr", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 2387, - "rsa.misc.version": "1.3804", - "rsa.misc.vsys": "lorem", - "rsa.network.alias_host": [ - "iqu7510.internal.corp" - ], - "rsa.network.dinterface": "enp0s6960", - "rsa.network.network_service": "agn", - "rsa.network.sinterface": "enp0s7206", - "rsa.threat.threat_desc": "ntiumdol", - "rsa.time.duration_time": 0.684, - "rsa.time.event_time": "2017-07-25T11:47:41.000Z", - "rsa.time.timezone": "CT", - "rsa.web.reputation_num": 11.231, - "rsa.web.web_ref_domain": "nder", - "rule.name": "equeporr", - "service.type": "fortinet", - "source.bytes": 3045, - "source.geo.country_name": "saquaeab", - "source.ip": "10.49.82.45", - "source.mac": "01:00:5e:09:79:f2", - "source.port": 435, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www5.example.org", - "url.extension": "gif", - "url.fragment": "rsit", - "url.original": "https://www5.example.org/aqu/utemvele.gif?serrorsi=tsedquia#rsit", - "url.path": "/aqu/utemvele.gif", - "url.query": [ - "nihilmol", - "serrorsi=tsedquia" - ], - "url.scheme": "https", - "user.name": "dictasun" - }, - { - "@timestamp": "2017-08-08T06:50:15.000Z", - "destination.bytes": 722, - "destination.geo.country_name": "rumex", - "destination.ip": "10.99.55.115", - "destination.nat.ip": "10.205.83.138", - "destination.nat.port": 6239, - "destination.port": 1537, - "event.action": "accept", - "event.code": "iumto", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ore devname=\"lors\" devid=\"saute\" vd=ecillumd date=2017-8-8 time=4:50:15 logid=iumto type=sequatu subtype=tiumtot level=medium eventtime=mdoloree logtime=que srcip=10.98.52.184 srcport=7402 srcintf=eth3784 srcintfrole=ita dstip=10.99.55.115 dstport=1537 dstintf=eth855 dstintfrole=isnostru poluuid=iad sessionid=ngelits proto=tcp action=accept policyid=billoi policytype=reseo crscore=158.047000 craction=uov crlevel=pariat appcat=icaboNe service=boreetd srccountry=uir dstcountry=rumex trandisp=ectobea tranip=10.205.83.138 tranport=6239 duration=170.113000 sentbyte=3290 rcvdbyte=722 sentpkt=ibus app=lumdol", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 44420, - "network.bytes": 4012, - "observer.egress.interface.name": "eth855", - "observer.ingress.interface.name": "eth3784", - "observer.product": "FortiManager", - "observer.serial_number": "saute", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "lors" - ], - "related.ip": [ - "10.205.83.138", - "10.98.52.184", - "10.99.55.115" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "tiumtot", - "rsa.misc.context": "ectobea", - "rsa.misc.event_source": "lors", - "rsa.misc.event_type": "sequatu", - "rsa.misc.hardware_id": "saute", - "rsa.misc.log_session_id": "ngelits", - "rsa.misc.obj_name": "lumdol", - "rsa.misc.policy_id": "billoi", - "rsa.misc.reference_id": "iumto", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "ecillumd", - "rsa.network.dinterface": "eth855", - "rsa.network.network_service": "boreetd", - "rsa.network.sinterface": "eth3784", - "rsa.time.duration_time": 170.113, - "rsa.time.event_time": "2017-08-08T06:50:15.000Z", - "rsa.time.event_time_str": "mdoloree", - "rsa.web.reputation_num": 158.047, - "service.type": "fortinet", - "source.bytes": 3290, - "source.geo.country_name": "uir", - "source.ip": "10.98.52.184", - "source.port": 7402, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-08-22T13:52:50.000Z", - "destination.bytes": 422, - "destination.geo.country_name": "did", - "destination.ip": "10.90.189.248", - "destination.nat.ip": "10.228.11.50", - "destination.nat.port": 984, - "destination.port": 1293, - "event.action": "allow", - "event.code": "ptate", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=onnu devname=\"reprehe\" devid=\"metMa\" vd=emoen date=2017-8-22 time=11:52:50 logid=ptate type=mipsumqu subtype=turad level=high eventtime=billo logtime=doloremi srcip=10.197.128.162 srcport=2052 srcintf=lo6750 srcintfrole=ionof dstip=10.90.189.248 dstport=1293 dstintf=lo2402 dstintfrole=roi poluuid=reh sessionid=volup proto=prm action=allow policyid=iconsequ policytype=ueporr crscore=127.832000 craction=archite crlevel=tur appcat=ddo service=emp srccountry=inBC dstcountry=did trandisp=atcupi tranip=10.228.11.50 tranport=984 duration=3.401000 sentbyte=6907 rcvdbyte=422 sentpkt=mcol app=tion", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 45036, - "network.bytes": 7329, - "observer.egress.interface.name": "lo2402", - "observer.ingress.interface.name": "lo6750", - "observer.product": "FortiManager", - "observer.serial_number": "metMa", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "reprehe" - ], - "related.ip": [ - "10.197.128.162", - "10.228.11.50", - "10.90.189.248" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "turad", - "rsa.misc.context": "atcupi", - "rsa.misc.event_source": "reprehe", - "rsa.misc.event_type": "mipsumqu", - "rsa.misc.hardware_id": "metMa", - "rsa.misc.log_session_id": "volup", - "rsa.misc.obj_name": "tion", - "rsa.misc.policy_id": "iconsequ", - "rsa.misc.reference_id": "ptate", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "emoen", - "rsa.network.dinterface": "lo2402", - "rsa.network.network_service": "emp", - "rsa.network.sinterface": "lo6750", - "rsa.time.duration_time": 3.401, - "rsa.time.event_time": "2017-08-22T13:52:50.000Z", - "rsa.time.event_time_str": "billo", - "rsa.web.reputation_num": 127.832, - "service.type": "fortinet", - "source.bytes": 6907, - "source.geo.country_name": "inBC", - "source.ip": "10.197.128.162", - "source.port": 2052, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-09-06T08:55:24.000Z", - "event.action": "deny", - "event.code": "odit", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-9-6 time=6:55:24 devname=moll device_id=roinBCS log_id=odit type=event subtype=vol pri=low desc=aloru user=cteturad userfrom=modi msg=cip action=deny adom=ntoccae2859.www.test session_id=incididu", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 45638, - "observer.product": "FortiManager", - "observer.serial_number": "roinBCS", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "moll", - "ntoccae2859.www.test" - ], - "related.user": [ - "cteturad" - ], - "rsa.db.index": "cip", - "rsa.internal.event_desc": "aloru", - "rsa.internal.messageid": "event_fortinetmgr", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "vol", - "rsa.misc.event_source": "moll", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "roinBCS", - "rsa.misc.log_session_id": "incididu", - "rsa.misc.reference_id": "odit", - "rsa.misc.severity": "low", - "rsa.network.domain": "ntoccae2859.www.test", - "rsa.time.event_time": "2017-09-06T08:55:24.000Z", - "server.domain": "ntoccae2859.www.test", - "server.registered_domain": "www.test", - "server.subdomain": "ntoccae2859", - "server.top_level_domain": "test", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "user.name": "cteturad" - }, - { - "@timestamp": "2017-09-20T03:57:58.000Z", - "destination.bytes": 6283, - "destination.ip": "10.22.248.52", - "destination.port": 6566, - "event.action": "cancel", - "event.code": "oreve", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-9-20 time=1:57:58 devname=uinesci device_id=otamr log_id=tsed type=generic subtype=rExc pri=medium devid=saute devname=umdol logid=rerepr type=ipiscin subtype=trudexe level=high vd=ineavol srcip=10.29.34.211 srcport=5638 srcintf=eth1805 dstip=10.161.15.82 dstport=6598 dstintf=enp0s5799 poluuid=aco sessionid=eFini proto=17 action=cancel policyid=mipsa trandisp=uas duration=118.122000 sentbyte=1737 rcvdbyte=6283 devtype=umexe osname=xce osversion=1.7318 mastersrcmac=suntex srcmac=01:00:5e:5b:68:89 crscore=29.865000 craction=rcitati crlevel=siutali eventtype=uiratio user=ficia service=orsit hostname=deFinibu3940.internal.lan profile=rautod reqtype=onorumet url=https://www5.example.com/etcon/chit.txt?erspici=itinvolu#adeserun direction=unknown msg=tinv method=Utenima cat=nse catdesc=umq device_id=enim log_id=oreve pri=low userfrom=snisiu adminprof=atem timezone=ET main_type=vento trigger_policy=litsed sub_type=ciun severity_level=rehender policy=tetura src=10.124.71.88 src_port=7540 dst=10.22.248.52 dst_port=6566 http_method=cons http_url=tinvolu http_host=ptat http_agent=amquisn http_session_id=Finibus signature_subclass=nsequat signature_id=3661 srccountry=scipi content_switch_name=rem server_pool_name=reh false_positive_mitigation=rsitame user_name=tcons monitor_status=squamest http_refer=https://mail.example.com/emveleum/siuta.html?ate=epteur#onproi http_version=usmodit dev_id=orese threat_weight=umdolore history_threat_weight=umqui threat_level=adipisci ftp_mode=eir ftp_cmd=ull cipher_suite=tlabor msg_id=itecto", - "event.timezone": "ET", - "fileset.name": "fortimanager", - "host.name": "deFinibu3940.internal.lan", - "http.request.referrer": "https://mail.example.com/emveleum/siuta.html?ate=epteur#onproi", - "input.type": "log", - "log.level": "low", - "log.offset": 45844, - "network.bytes": 8020, - "network.direction": "unknown", - "observer.egress.interface.name": "enp0s5799", - "observer.ingress.interface.name": "eth1805", - "observer.product": "FortiManager", - "observer.serial_number": "enim", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.7318", - "related.hosts": [ - "deFinibu3940.internal.lan", - "ptat", - "umdol" - ], - "related.ip": [ - "10.124.71.88", - "10.22.248.52" - ], - "related.user": [ - "tcons" - ], - "rsa.internal.event_desc": "tinv", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "uiratio", - "rsa.misc.OS": "xce", - "rsa.misc.action": [ - "cancel", - "cons" - ], - "rsa.misc.category": "ciun", - "rsa.misc.client": "amquisn", - "rsa.misc.context": "uas", - "rsa.misc.event_source": "umdol", - "rsa.misc.event_type": "ipiscin", - "rsa.misc.fcatnum": "nse", - "rsa.misc.filter": "umq", - "rsa.misc.hardware_id": "enim", - "rsa.misc.log_session_id": "Finibus", - "rsa.misc.policy_id": "mipsa", - "rsa.misc.policy_name": "tetura", - "rsa.misc.reference_id": "oreve", - "rsa.misc.rule_name": "rautod", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 3661, - "rsa.misc.version": "1.7318", - "rsa.misc.vsys": "ineavol", - "rsa.network.alias_host": [ - "deFinibu3940.internal.lan" - ], - "rsa.network.dinterface": "enp0s5799", - "rsa.network.network_service": "orsit", - "rsa.network.sinterface": "eth1805", - "rsa.threat.threat_desc": "adipisci", - "rsa.time.duration_time": 118.122, - "rsa.time.event_time": "2017-09-20T03:57:58.000Z", - "rsa.time.timezone": "ET", - "rsa.web.reputation_num": 29.865, - "rsa.web.web_ref_domain": "ptat", - "rule.name": "rautod", - "service.type": "fortinet", - "source.bytes": 1737, - "source.geo.country_name": "scipi", - "source.ip": "10.124.71.88", - "source.mac": "01:00:5e:5b:68:89", - "source.port": 7540, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www5.example.com", - "url.extension": "txt", - "url.fragment": "adeserun", - "url.original": "https://www5.example.com/etcon/chit.txt?erspici=itinvolu#adeserun", - "url.path": "/etcon/chit.txt", - "url.query": [ - "erspici=itinvolu", - "tinvolu" - ], - "url.scheme": "https", - "user.name": "tcons" - }, - { - "@timestamp": "2017-10-04T11:00:32.000Z", - "destination.bytes": 6230, - "destination.ip": "10.26.58.20", - "destination.port": 2809, - "event.action": "block", - "event.code": "rchitect", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-10-4 time=9:00:32 logver=ametcons devid=velite devname=ipexeac logid=explicab type=samvolu subtype=teiru level=low vd=orinrep srcip=10.228.213.136 srcport=7247 srcintf=lo1719 dstip=10.185.107.27 dstport=2257 dstintf=enp0s4999 poluuid=iduntutl sessionid=mipsumd proto=udp action=block policyid=quelauda trandisp=rcit duration=166.303000 sentbyte=7229 rcvdbyte=6230 devtype=orese osname=evelite osversion=1.4895 mastersrcmac=oremipsu srcmac=01:00:5e:cd:f6:0e crscore=37.237000 craction=equunt crlevel=mto eventtype=iae user=dent service=Uten hostname=tatiset4191.localdomain profile=aconseq reqtype=mquamei url=https://api.example.org/fug/liquid.txt?ptate=lloi#nseq direction=external msg=isetqua method=ianonn cat=oluptas catdesc=doe device_id=quipex log_id=rchitect pri=very-high userfrom=Bonor adminprof=ipex timezone=PT main_type=upta trigger_policy=ivel sub_type=tmollita severity_level=tionofd policy=iatnula src=10.185.37.176 src_port=1859 dst=10.26.58.20 dst_port=2809 http_method=essequam http_url=undeo http_host=ficiade http_agent=uiinea http_session_id=uianonn signature_subclass=eavolupt signature_id=784 srccountry=elitsedq content_switch_name=liquam server_pool_name=sinto false_positive_mitigation=edi user_name=eumiure monitor_status=ore http_refer=https://internal.example.com/mSe/sis.gif?rchite=rcit#orumwri http_version=tiae dev_id=giat threat_weight=nculpa history_threat_weight=olupt threat_level=tvol ftp_mode=ostru ftp_cmd=mea cipher_suite=tuserror msg_id=agnama", - "event.timezone": "PT", - "fileset.name": "fortimanager", - "host.name": "tatiset4191.localdomain", - "http.request.referrer": "https://internal.example.com/mSe/sis.gif?rchite=rcit#orumwri", - "input.type": "log", - "log.level": "very-high", - "log.offset": 47392, - "network.bytes": 13459, - "network.direction": "external", - "observer.egress.interface.name": "enp0s4999", - "observer.ingress.interface.name": "lo1719", - "observer.product": "FortiManager", - "observer.serial_number": "quipex", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4895", - "related.hosts": [ - "ficiade", - "ipexeac", - "tatiset4191.localdomain" - ], - "related.ip": [ - "10.185.37.176", - "10.26.58.20" - ], - "related.user": [ - "eumiure" - ], - "rsa.internal.event_desc": "isetqua", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "iae", - "rsa.misc.OS": "evelite", - "rsa.misc.action": [ - "block", - "essequam" - ], - "rsa.misc.category": "tmollita", - "rsa.misc.client": "uiinea", - "rsa.misc.context": "rcit", - "rsa.misc.event_source": "ipexeac", - "rsa.misc.event_type": "samvolu", - "rsa.misc.fcatnum": "oluptas", - "rsa.misc.filter": "doe", - "rsa.misc.hardware_id": "quipex", - "rsa.misc.log_session_id": "uianonn", - "rsa.misc.policy_id": "quelauda", - "rsa.misc.policy_name": "iatnula", - "rsa.misc.reference_id": "rchitect", - "rsa.misc.rule_name": "aconseq", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 784, - "rsa.misc.version": "1.4895", - "rsa.misc.vsys": "orinrep", - "rsa.network.alias_host": [ - "tatiset4191.localdomain" - ], - "rsa.network.dinterface": "enp0s4999", - "rsa.network.network_service": "Uten", - "rsa.network.sinterface": "lo1719", - "rsa.threat.threat_desc": "tvol", - "rsa.time.duration_time": 166.303, - "rsa.time.event_time": "2017-10-04T11:00:32.000Z", - "rsa.time.timezone": "PT", - "rsa.web.reputation_num": 37.237, - "rsa.web.web_ref_domain": "ficiade", - "rule.name": "aconseq", - "service.type": "fortinet", - "source.bytes": 7229, - "source.geo.country_name": "elitsedq", - "source.ip": "10.185.37.176", - "source.mac": "01:00:5e:cd:f6:0e", - "source.port": 1859, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.org", - "url.extension": "txt", - "url.fragment": "nseq", - "url.original": "https://api.example.org/fug/liquid.txt?ptate=lloi#nseq", - "url.path": "/fug/liquid.txt", - "url.query": [ - "ptate=lloi", - "undeo" - ], - "url.scheme": "https", - "user.name": "eumiure" - }, - { - "@timestamp": "2017-10-19T06:03:07.000Z", - "destination.bytes": 5047, - "destination.geo.country_name": "nven", - "destination.ip": "10.14.145.107", - "destination.nat.ip": "10.250.231.196", - "destination.nat.port": 5863, - "destination.port": 4362, - "event.action": "block", - "event.code": "nostr", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=deritq dtime=2017-10-19 04:03:07.172538723 +0000 UTC devid=boreetdo devname=teni vd=iin date=2017-10-19 time=4:03:07 logid=nostr type=luptatem subtype=tNequepo level=low eventtime=eumfug logtime=sper srcip=10.200.12.126 srcport=2347 srcintf=enp0s7374 srcintfrole=liqu dstip=10.14.145.107 dstport=4362 dstintf=enp0s7861 dstintfrole=aliq poluuid=utem sessionid=oreetd proto=HOPOPT action=block policyid=Nequepo policytype=edictas crscore=55.933000 craction=tur crlevel=borisnis appcat=elitsedd service=hitecto srccountry=loremi dstcountry=nven trandisp=isci tranip=10.250.231.196 tranport=5863 duration=4.105000 sentbyte=2763 rcvdbyte=5047 sentpkt=aquioff app=cip", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 48887, - "network.bytes": 7810, - "observer.egress.interface.name": "enp0s7861", - "observer.ingress.interface.name": "enp0s7374", - "observer.product": "FortiManager", - "observer.serial_number": "boreetdo", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "teni" - ], - "related.ip": [ - "10.14.145.107", - "10.200.12.126", - "10.250.231.196" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "tNequepo", - "rsa.misc.context": "isci", - "rsa.misc.event_source": "teni", - "rsa.misc.event_type": "luptatem", - "rsa.misc.hardware_id": "boreetdo", - "rsa.misc.log_session_id": "oreetd", - "rsa.misc.obj_name": "cip", - "rsa.misc.policy_id": "Nequepo", - "rsa.misc.reference_id": "nostr", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "iin", - "rsa.network.dinterface": "enp0s7861", - "rsa.network.network_service": "hitecto", - "rsa.network.sinterface": "enp0s7374", - "rsa.time.duration_time": 4.105, - "rsa.time.event_time": "2017-10-19T06:03:07.000Z", - "rsa.time.event_time_str": "eumfug", - "rsa.web.reputation_num": 55.933, - "service.type": "fortinet", - "source.bytes": 2763, - "source.geo.country_name": "loremi", - "source.ip": "10.200.12.126", - "source.port": 2347, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-11-02T13:05:41.000Z", - "destination.bytes": 2565, - "destination.geo.country_name": "fugia", - "destination.ip": "10.21.203.112", - "destination.nat.ip": "10.103.36.192", - "destination.nat.port": 1974, - "destination.port": 5930, - "event.action": "cancel", - "event.code": "tura", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=onsequat dtime=2017-11-02 11:05:41.432538723 +0000 UTC devid=tiumd devname=atuse vd=imad date=2017-11-2 time=11:05:41 logid=tura type=equuntur subtype=rve level=high eventtime=mqua logtime=xer srcip=10.225.34.176 srcport=5569 srcintf=lo2867 srcintfrole=amquisn dstip=10.21.203.112 dstport=5930 dstintf=enp0s1294 dstintfrole=sum poluuid=lloinve sessionid=eni proto=HOPOPT action=cancel policyid=edquiac policytype=psamvolu crscore=80.314000 craction=unturma crlevel=iavol appcat=psumdol service=urautodi srccountry=equamni dstcountry=fugia trandisp=uptate tranip=10.103.36.192 tranport=1974 duration=129.001000 sentbyte=2801 rcvdbyte=2565 sentpkt=imidest app=citation", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 49556, - "network.bytes": 5366, - "observer.egress.interface.name": "enp0s1294", - "observer.ingress.interface.name": "lo2867", - "observer.product": "FortiManager", - "observer.serial_number": "tiumd", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "atuse" - ], - "related.ip": [ - "10.103.36.192", - "10.21.203.112", - "10.225.34.176" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "rve", - "rsa.misc.context": "uptate", - "rsa.misc.event_source": "atuse", - "rsa.misc.event_type": "equuntur", - "rsa.misc.hardware_id": "tiumd", - "rsa.misc.log_session_id": "eni", - "rsa.misc.obj_name": "citation", - "rsa.misc.policy_id": "edquiac", - "rsa.misc.reference_id": "tura", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "imad", - "rsa.network.dinterface": "enp0s1294", - "rsa.network.network_service": "urautodi", - "rsa.network.sinterface": "lo2867", - "rsa.time.duration_time": 129.001, - "rsa.time.event_time": "2017-11-02T13:05:41.000Z", - "rsa.time.event_time_str": "mqua", - "rsa.web.reputation_num": 80.314, - "service.type": "fortinet", - "source.bytes": 2801, - "source.geo.country_name": "equamni", - "source.ip": "10.225.34.176", - "source.port": 5569, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-11-16T08:08:15.000Z", - "destination.bytes": 6222, - "destination.geo.country_name": "roid", - "destination.ip": "10.5.67.140", - "destination.nat.ip": "10.118.111.183", - "destination.nat.port": 5410, - "destination.port": 5687, - "event.action": "accept", - "event.code": "dexea", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=nof devname=\"usantiu\" devid=\"periam\" vd=remip date=2017-11-16 time=6:08:15 logid=dexea type=aturExc subtype=antiumto level=low eventtime=obe logtime=niamqu srcip=10.140.59.161 srcport=3599 srcintf=eth575 srcintfrole=tev dstip=10.5.67.140 dstport=5687 dstintf=enp0s6143 dstintfrole=intoc poluuid=obeataev sessionid=rrorsit proto=udp action=accept policyid=umquid policytype=olabo crscore=79.046000 craction=dolor crlevel=rsp appcat=quir service=giatqu srccountry=olors dstcountry=roid trandisp=lorum tranip=10.118.111.183 tranport=5410 duration=96.462000 sentbyte=6821 rcvdbyte=6222 sentpkt=mipsu app=nvol", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 50230, - "network.bytes": 13043, - "observer.egress.interface.name": "enp0s6143", - "observer.ingress.interface.name": "eth575", - "observer.product": "FortiManager", - "observer.serial_number": "periam", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "usantiu" - ], - "related.ip": [ - "10.118.111.183", - "10.140.59.161", - "10.5.67.140" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "antiumto", - "rsa.misc.context": "lorum", - "rsa.misc.event_source": "usantiu", - "rsa.misc.event_type": "aturExc", - "rsa.misc.hardware_id": "periam", - "rsa.misc.log_session_id": "rrorsit", - "rsa.misc.obj_name": "nvol", - "rsa.misc.policy_id": "umquid", - "rsa.misc.reference_id": "dexea", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "remip", - "rsa.network.dinterface": "enp0s6143", - "rsa.network.network_service": "giatqu", - "rsa.network.sinterface": "eth575", - "rsa.time.duration_time": 96.462, - "rsa.time.event_time": "2017-11-16T08:08:15.000Z", - "rsa.time.event_time_str": "obe", - "rsa.web.reputation_num": 79.046, - "service.type": "fortinet", - "source.bytes": 6821, - "source.geo.country_name": "olors", - "source.ip": "10.140.59.161", - "source.port": 3599, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2017-12-01T03:10:49.000Z", - "destination.bytes": 5351, - "destination.ip": "10.28.212.191", - "destination.port": 1997, - "event.action": "accept", - "event.code": "abillo", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-12-1 time=1:10:49 logver=llu devid=quaUt devname=labor logid=oris type=tatemse subtype=uta level=very-high vd=tse srcip=10.170.104.148 srcport=5722 srcintf=lo259 dstip=10.60.92.40 dstport=5836 dstintf=enp0s4446 poluuid=dicons sessionid=BCSedutp proto=udp action=accept policyid=ritatise trandisp=nihilm duration=104.607000 sentbyte=6659 rcvdbyte=5351 devtype=isauteir osname=eritquii osversion=1.4493 mastersrcmac=uisno srcmac=01:00:5e:e9:ec:d5 crscore=34.736000 craction=itaed crlevel=invol eventtype=Loremips user=cidun service=tassitas hostname=nimadmi4084.api.home profile=eufugia reqtype=nor url=https://example.net/aturQui/tquii.html?uiac=squ#litess direction=unknown msg=involupt method=itempo cat=upt catdesc=rve device_id=amq log_id=abillo pri=high userfrom=ationem adminprof=Nem timezone=OMST main_type=ollita trigger_policy=dipisci sub_type=amnisiu severity_level=ptat policy=epr src=10.7.70.169 src_port=2514 dst=10.28.212.191 dst_port=1997 http_method=nostru http_url=Loremip http_host=veleumiu http_agent=rcita http_session_id=turad signature_subclass=sequamni signature_id=4799 srccountry=ollita content_switch_name=ectetu server_pool_name=radi false_positive_mitigation=ula user_name=itsed monitor_status=rad http_refer=https://internal.example.com/ididu/autodit.gif?seru=oriss#imadmin http_version=suntexpl dev_id=urve threat_weight=sBonoru history_threat_weight=everi threat_level=squ ftp_mode=emagnaal ftp_cmd=nih cipher_suite=ncididu msg_id=itati", - "event.timezone": "OMST", - "fileset.name": "fortimanager", - "host.name": "nimadmi4084.api.home", - "http.request.referrer": "https://internal.example.com/ididu/autodit.gif?seru=oriss#imadmin", - "input.type": "log", - "log.level": "high", - "log.offset": 50842, - "network.bytes": 12010, - "network.direction": "unknown", - "observer.egress.interface.name": "enp0s4446", - "observer.ingress.interface.name": "lo259", - "observer.product": "FortiManager", - "observer.serial_number": "amq", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4493", - "related.hosts": [ - "labor", - "nimadmi4084.api.home", - "veleumiu" - ], - "related.ip": [ - "10.28.212.191", - "10.7.70.169" - ], - "related.user": [ - "itsed" - ], - "rsa.internal.event_desc": "involupt", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "Loremips", - "rsa.misc.OS": "eritquii", - "rsa.misc.action": [ - "accept", - "nostru" - ], - "rsa.misc.category": "amnisiu", - "rsa.misc.client": "rcita", - "rsa.misc.context": "nihilm", - "rsa.misc.event_source": "labor", - "rsa.misc.event_type": "tatemse", - "rsa.misc.fcatnum": "upt", - "rsa.misc.filter": "rve", - "rsa.misc.hardware_id": "amq", - "rsa.misc.log_session_id": "turad", - "rsa.misc.policy_id": "ritatise", - "rsa.misc.policy_name": "epr", - "rsa.misc.reference_id": "abillo", - "rsa.misc.rule_name": "eufugia", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 4799, - "rsa.misc.version": "1.4493", - "rsa.misc.vsys": "tse", - "rsa.network.alias_host": [ - "nimadmi4084.api.home" - ], - "rsa.network.dinterface": "enp0s4446", - "rsa.network.network_service": "tassitas", - "rsa.network.sinterface": "lo259", - "rsa.threat.threat_desc": "squ", - "rsa.time.duration_time": 104.607, - "rsa.time.event_time": "2017-12-01T03:10:49.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.reputation_num": 34.736, - "rsa.web.web_ref_domain": "veleumiu", - "rule.name": "eufugia", - "service.type": "fortinet", - "source.bytes": 6659, - "source.geo.country_name": "ollita", - "source.ip": "10.7.70.169", - "source.mac": "01:00:5e:e9:ec:d5", - "source.port": 2514, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.net", - "url.extension": "html", - "url.fragment": "litess", - "url.original": "https://example.net/aturQui/tquii.html?uiac=squ#litess", - "url.path": "/aturQui/tquii.html", - "url.query": [ - "Loremip", - "uiac=squ" - ], - "url.scheme": "https", - "user.name": "itsed" - }, - { - "@timestamp": "2017-12-15T10:13:24.000Z", - "destination.bytes": 7417, - "destination.ip": "10.143.144.52", - "destination.port": 974, - "event.action": "block", - "event.code": "iqu", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2017-12-15 time=8:13:24 logver=estla devid=ione devname=ecillum logid=maccu type=ame subtype=pitlabo level=very-high vd=urExc srcip=10.37.124.214 srcport=6919 srcintf=lo7727 dstip=10.37.111.228 dstport=7082 dstintf=enp0s20 poluuid=dmini sessionid=tquid proto=17 action=block policyid=iatisun trandisp=cto duration=144.899000 sentbyte=2372 rcvdbyte=7417 devtype=imadmini osname=iatisund osversion=1.6506 mastersrcmac=aUtenim srcmac=01:00:5e:28:0c:11 crscore=172.422000 craction=etdol crlevel=sed eventtype=uep user=ametco service=nde hostname=reprehe3525.www5.example profile=mquisno reqtype=eaco url=https://mail.example.org/mvele/teveli.htm?Nequepor=luptate#aturvel direction=internal msg=dexea method=sedquia cat=litesse catdesc=ntmo device_id=aliqu log_id=iqu pri=very-high userfrom=ationula adminprof=doconse timezone=CEST main_type=oreeufug trigger_policy=ptatems sub_type=tenima severity_level=emagnam policy=iaco src=10.148.197.60 src_port=5711 dst=10.143.144.52 dst_port=974 http_method=nvo http_url=lab http_host=sedqui http_agent=iuntNe http_session_id=tdolor signature_subclass=Ute signature_id=2191 srccountry=uepor content_switch_name=umSecti server_pool_name=eabil false_positive_mitigation=ibusB user_name=rporis monitor_status=etco http_refer=https://example.org/ereprehe/olu.html?liqu=ipsu#siarch http_version=itautfu dev_id=rrorsi threat_weight=ole history_threat_weight=odi threat_level=tper ftp_mode=olor ftp_cmd=corpo cipher_suite=commod msg_id=iumd", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "reprehe3525.www5.example", - "http.request.referrer": "https://example.org/ereprehe/olu.html?liqu=ipsu#siarch", - "input.type": "log", - "log.level": "very-high", - "log.offset": 52319, - "network.bytes": 9789, - "network.direction": "internal", - "observer.egress.interface.name": "enp0s20", - "observer.ingress.interface.name": "lo7727", - "observer.product": "FortiManager", - "observer.serial_number": "aliqu", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.6506", - "related.hosts": [ - "ecillum", - "reprehe3525.www5.example", - "sedqui" - ], - "related.ip": [ - "10.143.144.52", - "10.148.197.60" - ], - "related.user": [ - "rporis" - ], - "rsa.internal.event_desc": "dexea", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "uep", - "rsa.misc.OS": "iatisund", - "rsa.misc.action": [ - "block", - "nvo" - ], - "rsa.misc.category": "tenima", - "rsa.misc.client": "iuntNe", - "rsa.misc.context": "cto", - "rsa.misc.event_source": "ecillum", - "rsa.misc.event_type": "ame", - "rsa.misc.fcatnum": "litesse", - "rsa.misc.filter": "ntmo", - "rsa.misc.hardware_id": "aliqu", - "rsa.misc.log_session_id": "tdolor", - "rsa.misc.policy_id": "iatisun", - "rsa.misc.policy_name": "iaco", - "rsa.misc.reference_id": "iqu", - "rsa.misc.rule_name": "mquisno", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 2191, - "rsa.misc.version": "1.6506", - "rsa.misc.vsys": "urExc", - "rsa.network.alias_host": [ - "reprehe3525.www5.example" - ], - "rsa.network.dinterface": "enp0s20", - "rsa.network.network_service": "nde", - "rsa.network.sinterface": "lo7727", - "rsa.threat.threat_desc": "tper", - "rsa.time.duration_time": 144.899, - "rsa.time.event_time": "2017-12-15T10:13:24.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 172.422, - "rsa.web.web_ref_domain": "sedqui", - "rule.name": "mquisno", - "service.type": "fortinet", - "source.bytes": 2372, - "source.geo.country_name": "uepor", - "source.ip": "10.148.197.60", - "source.mac": "01:00:5e:28:0c:11", - "source.port": 5711, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.org", - "url.extension": "htm", - "url.fragment": "aturvel", - "url.original": "https://mail.example.org/mvele/teveli.htm?Nequepor=luptate#aturvel", - "url.path": "/mvele/teveli.htm", - "url.query": [ - "Nequepor=luptate", - "lab" - ], - "url.scheme": "https", - "user.name": "rporis" - }, - { - "@timestamp": "2017-12-29T05:15:58.000Z", - "destination.bytes": 7299, - "destination.geo.country_name": "ciad", - "destination.ip": "10.22.149.132", - "destination.nat.ip": "10.251.183.113", - "destination.nat.port": 2604, - "destination.port": 7725, - "event.action": "block", - "event.code": "bor", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=aborisn dtime=2017-12-29 15:15:58.472538723 +0000 UTC devid=onproid devname=sitv vd=equam date=2017-12-29 time=3:15:58 logid=bor type=ameaquei subtype=aeca level=very-high eventtime=aperiam logtime=ngelit srcip=10.217.145.137 srcport=5242 srcintf=enp0s6940 srcintfrole=orema dstip=10.22.149.132 dstport=7725 dstintf=lo7156 dstintfrole=neavolup poluuid=lits sessionid=Nemoen proto=0 action=block policyid=rur policytype=quaturve crscore=166.007000 craction=oeiusmod crlevel=uidolore appcat=iacon service=ncu srccountry=quaturve dstcountry=ciad trandisp=diconseq tranip=10.251.183.113 tranport=2604 duration=161.433000 sentbyte=5697 rcvdbyte=7299 sentpkt=eseosqu app=uptatem", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 53795, - "network.bytes": 12996, - "observer.egress.interface.name": "lo7156", - "observer.ingress.interface.name": "enp0s6940", - "observer.product": "FortiManager", - "observer.serial_number": "onproid", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "sitv" - ], - "related.ip": [ - "10.217.145.137", - "10.22.149.132", - "10.251.183.113" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "aeca", - "rsa.misc.context": "diconseq", - "rsa.misc.event_source": "sitv", - "rsa.misc.event_type": "ameaquei", - "rsa.misc.hardware_id": "onproid", - "rsa.misc.log_session_id": "Nemoen", - "rsa.misc.obj_name": "uptatem", - "rsa.misc.policy_id": "rur", - "rsa.misc.reference_id": "bor", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "equam", - "rsa.network.dinterface": "lo7156", - "rsa.network.network_service": "ncu", - "rsa.network.sinterface": "enp0s6940", - "rsa.time.duration_time": 161.433, - "rsa.time.event_time": "2017-12-29T05:15:58.000Z", - "rsa.time.event_time_str": "aperiam", - "rsa.web.reputation_num": 166.007, - "service.type": "fortinet", - "source.bytes": 5697, - "source.geo.country_name": "quaturve", - "source.ip": "10.217.145.137", - "source.port": 5242, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-01-12T12:18:32.000Z", - "destination.bytes": 1519, - "destination.geo.country_name": "iarchit", - "destination.ip": "10.203.66.175", - "destination.nat.ip": "10.51.60.203", - "destination.nat.port": 5315, - "destination.port": 3904, - "event.action": "accept", - "event.code": "mfugi", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=uamnihil devname=\"nisi\" devid=\"imadm\" vd=siutali date=2018-1-12 time=10:18:32 logid=mfugi type=ceroinBC subtype=lorumw level=low eventtime=squir logtime=commod srcip=10.183.16.252 srcport=3150 srcintf=lo6718 srcintfrole=eabillo dstip=10.203.66.175 dstport=3904 dstintf=enp0s3868 dstintfrole=dipisciv poluuid=nsequun sessionid=hen proto=icmp action=accept policyid=velillum policytype=itamet crscore=123.013000 craction=hil crlevel=itl appcat=idolo service=ncidid srccountry=oid dstcountry=iarchit trandisp=volupt tranip=10.51.60.203 tranport=5315 duration=165.955000 sentbyte=7551 rcvdbyte=1519 sentpkt=ten app=Utenim", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 54475, - "network.bytes": 9070, - "observer.egress.interface.name": "enp0s3868", - "observer.ingress.interface.name": "lo6718", - "observer.product": "FortiManager", - "observer.serial_number": "imadm", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "nisi" - ], - "related.ip": [ - "10.183.16.252", - "10.203.66.175", - "10.51.60.203" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "lorumw", - "rsa.misc.context": "volupt", - "rsa.misc.event_source": "nisi", - "rsa.misc.event_type": "ceroinBC", - "rsa.misc.hardware_id": "imadm", - "rsa.misc.log_session_id": "hen", - "rsa.misc.obj_name": "Utenim", - "rsa.misc.policy_id": "velillum", - "rsa.misc.reference_id": "mfugi", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "siutali", - "rsa.network.dinterface": "enp0s3868", - "rsa.network.network_service": "ncidid", - "rsa.network.sinterface": "lo6718", - "rsa.time.duration_time": 165.955, - "rsa.time.event_time": "2018-01-12T12:18:32.000Z", - "rsa.time.event_time_str": "squir", - "rsa.web.reputation_num": 123.013, - "service.type": "fortinet", - "source.bytes": 7551, - "source.geo.country_name": "oid", - "source.ip": "10.183.16.252", - "source.port": 3150, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-01-27T07:21:06.000Z", - "destination.bytes": 6650, - "destination.ip": "10.61.200.105", - "destination.port": 2813, - "event.action": "accept", - "event.code": "orinc", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-1-27 time=5:21:06 logver=uasiarch devid=iamquisn devname=magnama logid=reprehe type=citatio subtype=dolo level=medium vd=esciunt srcip=10.133.245.26 srcport=1727 srcintf=enp0s2674 dstip=10.76.87.30 dstport=2858 dstintf=enp0s2918 poluuid=remag sessionid=roinBCSe proto=HOPOPT action=accept policyid=labori trandisp=ditau duration=39.920000 sentbyte=5413 rcvdbyte=6650 devtype=tam osname=olu osversion=1.409 mastersrcmac=iut srcmac=01:00:5e:5c:c2:50 crscore=69.137000 craction=boris crlevel=ris eventtype=nisiuta user=utper service=uipexe hostname=ursint411.www.lan profile=gnamali reqtype=iumdo url=https://example.org/tem/iadeseru.jpg?olorsita=odoco#etc direction=internal msg=lamco method=natuser cat=Excepteu catdesc=omnis device_id=tati log_id=orinc pri=very-high userfrom=eturadi adminprof=cinge timezone=PT main_type=ira trigger_policy=niamq sub_type=quatD severity_level=nevol policy=lumquid src=10.157.14.165 src_port=7170 dst=10.61.200.105 dst_port=2813 http_method=tquov http_url=natu http_host=doei http_agent=acomm http_session_id=veleumi signature_subclass=volupt signature_id=6822 srccountry=itatise content_switch_name=ure server_pool_name=userro false_positive_mitigation=oree user_name=nimadmi monitor_status=utaliq http_refer=https://example.com/tinvolu/uredol.txt?did=lamcol#idolor http_version=tutlabor dev_id=nse threat_weight=rauto history_threat_weight=rese threat_level=nonproi ftp_mode=doconse ftp_cmd=henderi cipher_suite=tisunde msg_id=ende", - "event.timezone": "PT", - "fileset.name": "fortimanager", - "host.name": "ursint411.www.lan", - "http.request.referrer": "https://example.com/tinvolu/uredol.txt?did=lamcol#idolor", - "input.type": "log", - "log.level": "very-high", - "log.offset": 55100, - "network.bytes": 12063, - "network.direction": "internal", - "observer.egress.interface.name": "enp0s2918", - "observer.ingress.interface.name": "enp0s2674", - "observer.product": "FortiManager", - "observer.serial_number": "tati", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.409", - "related.hosts": [ - "doei", - "magnama", - "ursint411.www.lan" - ], - "related.ip": [ - "10.157.14.165", - "10.61.200.105" - ], - "related.user": [ - "nimadmi" - ], - "rsa.internal.event_desc": "lamco", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "nisiuta", - "rsa.misc.OS": "olu", - "rsa.misc.action": [ - "accept", - "tquov" - ], - "rsa.misc.category": "quatD", - "rsa.misc.client": "acomm", - "rsa.misc.context": "ditau", - "rsa.misc.event_source": "magnama", - "rsa.misc.event_type": "citatio", - "rsa.misc.fcatnum": "Excepteu", - "rsa.misc.filter": "omnis", - "rsa.misc.hardware_id": "tati", - "rsa.misc.log_session_id": "veleumi", - "rsa.misc.policy_id": "labori", - "rsa.misc.policy_name": "lumquid", - "rsa.misc.reference_id": "orinc", - "rsa.misc.rule_name": "gnamali", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 6822, - "rsa.misc.version": "1.409", - "rsa.misc.vsys": "esciunt", - "rsa.network.alias_host": [ - "ursint411.www.lan" - ], - "rsa.network.dinterface": "enp0s2918", - "rsa.network.network_service": "uipexe", - "rsa.network.sinterface": "enp0s2674", - "rsa.threat.threat_desc": "nonproi", - "rsa.time.duration_time": 39.92, - "rsa.time.event_time": "2018-01-27T07:21:06.000Z", - "rsa.time.timezone": "PT", - "rsa.web.reputation_num": 69.137, - "rsa.web.web_ref_domain": "doei", - "rule.name": "gnamali", - "service.type": "fortinet", - "source.bytes": 5413, - "source.geo.country_name": "itatise", - "source.ip": "10.157.14.165", - "source.mac": "01:00:5e:5c:c2:50", - "source.port": 7170, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.org", - "url.extension": "jpg", - "url.fragment": "etc", - "url.original": "https://example.org/tem/iadeseru.jpg?olorsita=odoco#etc", - "url.path": "/tem/iadeseru.jpg", - "url.query": [ - "natu", - "olorsita=odoco" - ], - "url.scheme": "https", - "user.name": "nimadmi" - }, - { - "@timestamp": "2018-02-10T14:23:41.000Z", - "destination.bytes": 5375, - "destination.ip": "10.217.111.77", - "destination.port": 7309, - "event.action": "allow", - "event.code": "entoreve", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-2-10 time=12:23:41 logver=commod devid=oris devname=rcita logid=ataev type=oris subtype=incidi level=high vd=tutlabo srcip=10.32.66.161 srcport=881 srcintf=lo4523 dstip=10.134.238.8 dstport=2976 dstintf=enp0s1238 poluuid=edquiac sessionid=sit proto=HOPOPT action=allow policyid=olo trandisp=laboris duration=163.866000 sentbyte=7328 rcvdbyte=5375 devtype=tutl osname=nevolu osversion=1.5475 mastersrcmac=ostru srcmac=01:00:5e:e9:5f:84 crscore=157.516000 craction=aven crlevel=idolore eventtype=psaqu user=psa service=pta hostname=ididunt7607.mail.localhost profile=ntutlabo reqtype=leumiure url=https://mail.example.net/epteurs/usmodtem.gif?itvo=asi#tobe direction=internal msg=Lore method=oin cat=eritquii catdesc=taliqui device_id=ecatcu log_id=entoreve pri=high userfrom=umquam adminprof=onev timezone=CET main_type=tionev trigger_policy=ali sub_type=ionu severity_level=perna policy=moll src=10.242.178.15 src_port=3948 dst=10.217.111.77 dst_port=7309 http_method=datatno http_url=equepor http_host=antium http_agent=ugiatn http_session_id=utpe signature_subclass=hend signature_id=1170 srccountry=agnamali content_switch_name=ptateve server_pool_name=aliqua false_positive_mitigation=officiad user_name=nimadmin monitor_status=iavol http_refer=https://example.net/iumtota/qui.jpg?quel=ugitsed#ritatis http_version=olor dev_id=emoenim threat_weight=turadipi history_threat_weight=umSec threat_level=onsecte ftp_mode=inibusBo ftp_cmd=tqui cipher_suite=sequun msg_id=nimadm", - "event.timezone": "CET", - "fileset.name": "fortimanager", - "host.name": "ididunt7607.mail.localhost", - "http.request.referrer": "https://example.net/iumtota/qui.jpg?quel=ugitsed#ritatis", - "input.type": "log", - "log.level": "high", - "log.offset": 56577, - "network.bytes": 12703, - "network.direction": "internal", - "observer.egress.interface.name": "enp0s1238", - "observer.ingress.interface.name": "lo4523", - "observer.product": "FortiManager", - "observer.serial_number": "ecatcu", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.5475", - "related.hosts": [ - "antium", - "ididunt7607.mail.localhost", - "rcita" - ], - "related.ip": [ - "10.217.111.77", - "10.242.178.15" - ], - "related.user": [ - "nimadmin" - ], - "rsa.internal.event_desc": "Lore", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "psaqu", - "rsa.misc.OS": "nevolu", - "rsa.misc.action": [ - "allow", - "datatno" - ], - "rsa.misc.category": "ionu", - "rsa.misc.client": "ugiatn", - "rsa.misc.context": "laboris", - "rsa.misc.event_source": "rcita", - "rsa.misc.event_type": "oris", - "rsa.misc.fcatnum": "eritquii", - "rsa.misc.filter": "taliqui", - "rsa.misc.hardware_id": "ecatcu", - "rsa.misc.log_session_id": "utpe", - "rsa.misc.policy_id": "olo", - "rsa.misc.policy_name": "moll", - "rsa.misc.reference_id": "entoreve", - "rsa.misc.rule_name": "ntutlabo", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 1170, - "rsa.misc.version": "1.5475", - "rsa.misc.vsys": "tutlabo", - "rsa.network.alias_host": [ - "ididunt7607.mail.localhost" - ], - "rsa.network.dinterface": "enp0s1238", - "rsa.network.network_service": "pta", - "rsa.network.sinterface": "lo4523", - "rsa.threat.threat_desc": "onsecte", - "rsa.time.duration_time": 163.866, - "rsa.time.event_time": "2018-02-10T14:23:41.000Z", - "rsa.time.timezone": "CET", - "rsa.web.reputation_num": 157.516, - "rsa.web.web_ref_domain": "antium", - "rule.name": "ntutlabo", - "service.type": "fortinet", - "source.bytes": 7328, - "source.geo.country_name": "agnamali", - "source.ip": "10.242.178.15", - "source.mac": "01:00:5e:e9:5f:84", - "source.port": 3948, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.net", - "url.extension": "gif", - "url.fragment": "tobe", - "url.original": "https://mail.example.net/epteurs/usmodtem.gif?itvo=asi#tobe", - "url.path": "/epteurs/usmodtem.gif", - "url.query": [ - "equepor", - "itvo=asi" - ], - "url.scheme": "https", - "user.name": "nimadmin" - }, - { - "@timestamp": "2018-02-24T09:26:15.000Z", - "destination.bytes": 6059, - "destination.ip": "10.86.152.227", - "destination.port": 850, - "event.action": "cancel", - "event.code": "onsec", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-2-24 time=7:26:15 logver=vitaedic devid=remip devname=rsita logid=rehe type=aper subtype=gnaa level=low vd=uta srcip=10.161.128.235 srcport=6280 srcintf=eth2121 dstip=10.84.29.117 dstport=1245 dstintf=eth7500 poluuid=errorsi sessionid=umwr proto=HOPOPT action=cancel policyid=cupida trandisp=rinc duration=5.709000 sentbyte=289 rcvdbyte=6059 devtype=dquia osname=ommod osversion=1.142 mastersrcmac=dico srcmac=01:00:5e:06:53:8a crscore=35.836000 craction=imipsa crlevel=iscinge eventtype=ora user=meumfug service=inimve hostname=mco2906.domain profile=sitvolu reqtype=eratv url=https://www.example.com/iadolo/cidu.txt?aliquide=redolori#eav direction=inbound msg=nse method=turQuis cat=tat catdesc=pta device_id=henderi log_id=onsec pri=high userfrom=itaspern adminprof=tau timezone=GMT+02:00 main_type=rsintoc trigger_policy=boreetd sub_type=rehende severity_level=sitamet policy=xerc src=10.199.119.251 src_port=7286 dst=10.86.152.227 dst_port=850 http_method=ant http_url=tiu http_host=ommodoco http_agent=rehe http_session_id=eseosqu signature_subclass=oeius signature_id=641 srccountry=eaqueip content_switch_name=laud server_pool_name=uido false_positive_mitigation=uis user_name=msequin monitor_status=autem http_refer=https://internal.example.org/ipi/qua.htm?itat=adipisc#omnisist http_version=orroqui dev_id=sci threat_weight=psamvolu history_threat_weight=itsedqui threat_level=oreve ftp_mode=omn ftp_cmd=onevol cipher_suite=ese msg_id=reprehen", - "event.timezone": "GMT+02:00", - "fileset.name": "fortimanager", - "host.name": "mco2906.domain", - "http.request.referrer": "https://internal.example.org/ipi/qua.htm?itat=adipisc#omnisist", - "input.type": "log", - "log.level": "high", - "log.offset": 58063, - "network.bytes": 6348, - "network.direction": "inbound", - "observer.egress.interface.name": "eth7500", - "observer.ingress.interface.name": "eth2121", - "observer.product": "FortiManager", - "observer.serial_number": "henderi", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.142", - "related.hosts": [ - "mco2906.domain", - "ommodoco", - "rsita" - ], - "related.ip": [ - "10.199.119.251", - "10.86.152.227" - ], - "related.user": [ - "msequin" - ], - "rsa.internal.event_desc": "nse", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "ora", - "rsa.misc.OS": "ommod", - "rsa.misc.action": [ - "ant", - "cancel" - ], - "rsa.misc.category": "rehende", - "rsa.misc.client": "rehe", - "rsa.misc.context": "rinc", - "rsa.misc.event_source": "rsita", - "rsa.misc.event_type": "aper", - "rsa.misc.fcatnum": "tat", - "rsa.misc.filter": "pta", - "rsa.misc.hardware_id": "henderi", - "rsa.misc.log_session_id": "eseosqu", - "rsa.misc.policy_id": "cupida", - "rsa.misc.policy_name": "xerc", - "rsa.misc.reference_id": "onsec", - "rsa.misc.rule_name": "sitvolu", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 641, - "rsa.misc.version": "1.142", - "rsa.misc.vsys": "uta", - "rsa.network.alias_host": [ - "mco2906.domain" - ], - "rsa.network.dinterface": "eth7500", - "rsa.network.network_service": "inimve", - "rsa.network.sinterface": "eth2121", - "rsa.threat.threat_desc": "oreve", - "rsa.time.duration_time": 5.709, - "rsa.time.event_time": "2018-02-24T09:26:15.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.reputation_num": 35.836, - "rsa.web.web_ref_domain": "ommodoco", - "rule.name": "sitvolu", - "service.type": "fortinet", - "source.bytes": 289, - "source.geo.country_name": "eaqueip", - "source.ip": "10.199.119.251", - "source.mac": "01:00:5e:06:53:8a", - "source.port": 7286, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.com", - "url.extension": "txt", - "url.fragment": "eav", - "url.original": "https://www.example.com/iadolo/cidu.txt?aliquide=redolori#eav", - "url.path": "/iadolo/cidu.txt", - "url.query": [ - "aliquide=redolori", - "tiu" - ], - "url.scheme": "https", - "user.name": "msequin" - }, - { - "@timestamp": "2018-03-11T04:28:49.000Z", - "destination.bytes": 3374, - "destination.ip": "10.234.171.117", - "destination.port": 4488, - "event.action": "deny", - "event.code": "quian", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-3-11 time=2:28:49 logver=eumfugia devid=nimvenia devname=dol logid=rissusc type=lit subtype=quin level=low vd=eddoei srcip=10.35.73.208 srcport=7081 srcintf=eth6552 dstip=10.216.120.61 dstport=6389 dstintf=eth2068 poluuid=dolor sessionid=emUteni proto=tcp action=deny policyid=illoin trandisp=rinre duration=166.295000 sentbyte=5988 rcvdbyte=3374 devtype=olorem osname=mquae osversion=1.1789 mastersrcmac=rQuis srcmac=01:00:5e:b5:9a:3e crscore=5.250000 craction=enimadmi crlevel=elit eventtype=uia user=tem service=unt hostname=ntex5135.corp profile=mqua reqtype=equa url=https://internal.example.com/isc/umdol.jpg?atn=sectet#boreetd direction=outbound msg=olorin method=oluptat cat=olors catdesc=mSecti device_id=ius log_id=quian pri=low userfrom=urExce adminprof=upt timezone=PST main_type=pteurs trigger_policy=intocc sub_type=abo severity_level=orisnis policy=reseo src=10.239.194.105 src_port=3629 dst=10.234.171.117 dst_port=4488 http_method=tenatus http_url=odic http_host=ono http_agent=umtota http_session_id=consequ signature_subclass=ine signature_id=3409 srccountry=dex content_switch_name=ipis server_pool_name=nsecte false_positive_mitigation=miurere user_name=tat monitor_status=pitlabor http_refer=https://example.com/olupta/ape.jpg?mnisiut=eabil#olu http_version=uaUte dev_id=empor threat_weight=ate history_threat_weight=eca threat_level=inre ftp_mode=aliqu ftp_cmd=orem cipher_suite=dquian msg_id=isaute", - "event.timezone": "PST", - "fileset.name": "fortimanager", - "host.name": "ntex5135.corp", - "http.request.referrer": "https://example.com/olupta/ape.jpg?mnisiut=eabil#olu", - "input.type": "log", - "log.level": "low", - "log.offset": 59527, - "network.bytes": 9362, - "network.direction": "outbound", - "observer.egress.interface.name": "eth2068", - "observer.ingress.interface.name": "eth6552", - "observer.product": "FortiManager", - "observer.serial_number": "ius", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.1789", - "related.hosts": [ - "dol", - "ntex5135.corp", - "ono" - ], - "related.ip": [ - "10.234.171.117", - "10.239.194.105" - ], - "related.user": [ - "tat" - ], - "rsa.internal.event_desc": "olorin", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "uia", - "rsa.misc.OS": "mquae", - "rsa.misc.action": [ - "deny", - "tenatus" - ], - "rsa.misc.category": "abo", - "rsa.misc.client": "umtota", - "rsa.misc.context": "rinre", - "rsa.misc.event_source": "dol", - "rsa.misc.event_type": "lit", - "rsa.misc.fcatnum": "olors", - "rsa.misc.filter": "mSecti", - "rsa.misc.hardware_id": "ius", - "rsa.misc.log_session_id": "consequ", - "rsa.misc.policy_id": "illoin", - "rsa.misc.policy_name": "reseo", - "rsa.misc.reference_id": "quian", - "rsa.misc.rule_name": "mqua", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 3409, - "rsa.misc.version": "1.1789", - "rsa.misc.vsys": "eddoei", - "rsa.network.alias_host": [ - "ntex5135.corp" - ], - "rsa.network.dinterface": "eth2068", - "rsa.network.network_service": "unt", - "rsa.network.sinterface": "eth6552", - "rsa.threat.threat_desc": "inre", - "rsa.time.duration_time": 166.295, - "rsa.time.event_time": "2018-03-11T04:28:49.000Z", - "rsa.time.timezone": "PST", - "rsa.web.reputation_num": 5.25, - "rsa.web.web_ref_domain": "ono", - "rule.name": "mqua", - "service.type": "fortinet", - "source.bytes": 5988, - "source.geo.country_name": "dex", - "source.ip": "10.239.194.105", - "source.mac": "01:00:5e:b5:9a:3e", - "source.port": 3629, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "internal.example.com", - "url.extension": "jpg", - "url.fragment": "boreetd", - "url.original": "https://internal.example.com/isc/umdol.jpg?atn=sectet#boreetd", - "url.path": "/isc/umdol.jpg", - "url.query": [ - "atn=sectet", - "odic" - ], - "url.scheme": "https", - "user.name": "tat" - }, - { - "@timestamp": "2018-03-25T11:31:24.000Z", - "destination.bytes": 2855, - "destination.geo.country_name": "rinc", - "destination.ip": "10.249.16.201", - "destination.nat.ip": "10.107.168.208", - "destination.nat.port": 1864, - "destination.port": 4293, - "event.action": "accept", - "event.code": "ntocca", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=emagnaal dtime=2018-03-25 09:31:24.032538723 +0000 UTC devid=uunturm devname=nonnumq vd=tqu date=2018-3-25 time=9:31:24 logid=ntocca type=emquelau subtype=adolorsi level=medium eventtime=maliquam logtime=ovol srcip=10.34.41.75 srcport=4436 srcintf=enp0s7638 srcintfrole=eseosqu dstip=10.249.16.201 dstport=4293 dstintf=lo5084 dstintfrole=mvele poluuid=qui sessionid=etMa proto=3 action=accept policyid=aspe policytype=uradipi crscore=22.220000 craction=atu crlevel=amremape appcat=illoinve service=uis srccountry=itanimi dstcountry=rinc trandisp=isistena tranip=10.107.168.208 tranport=1864 duration=45.477000 sentbyte=1067 rcvdbyte=2855 sentpkt=ctionofd app=uianonnu", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 60960, - "network.bytes": 3922, - "network.protocol": "GGP", - "observer.egress.interface.name": "lo5084", - "observer.ingress.interface.name": "enp0s7638", - "observer.product": "FortiManager", - "observer.serial_number": "uunturm", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "nonnumq" - ], - "related.ip": [ - "10.107.168.208", - "10.249.16.201", - "10.34.41.75" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "adolorsi", - "rsa.misc.context": "isistena", - "rsa.misc.event_source": "nonnumq", - "rsa.misc.event_type": "emquelau", - "rsa.misc.hardware_id": "uunturm", - "rsa.misc.log_session_id": "etMa", - "rsa.misc.obj_name": "uianonnu", - "rsa.misc.policy_id": "aspe", - "rsa.misc.reference_id": "ntocca", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "tqu", - "rsa.network.dinterface": "lo5084", - "rsa.network.network_service": "uis", - "rsa.network.sinterface": "enp0s7638", - "rsa.time.duration_time": 45.477, - "rsa.time.event_time": "2018-03-25T11:31:24.000Z", - "rsa.time.event_time_str": "maliquam", - "rsa.web.reputation_num": 22.22, - "service.type": "fortinet", - "source.bytes": 1067, - "source.geo.country_name": "itanimi", - "source.ip": "10.34.41.75", - "source.port": 4436, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-04-08T06:33:58.000Z", - "destination.bytes": 7292, - "destination.ip": "10.109.106.194", - "destination.port": 5356, - "event.action": "allow", - "event.code": "vol", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=nisiste date=2018-4-8 time=4:33:58 log_id=sedqu devid=itautfu devname=aaliq logid=tDui type=ernatur subtype=itsed level=low vd=xeacomm srcip=10.112.57.220 srcport=5803 srcintf=enp0s1897 dstip=10.19.151.236 dstport=884 dstintf=enp0s4144 poluuid=estiaeco sessionid=vele proto=HOPOPT action=allow policyid=yCiceroi trandisp=loremeu duration=156.263000 sentbyte=3719 rcvdbyte=7292 devtype=colab osname=itte osversion=1.6905 mastersrcmac=orumS srcmac=01:00:5e:c1:b8:93 crscore=60.950000 craction=uptat crlevel=incidun eventtype=agnaaliq user=aturQuis service=cepteurs hostname=tat1845.internal.invalid profile=rumetMal reqtype=tiumtot url=https://www.example.com/imadm/ugiat.txt?Nequepor=nisiu#ptat direction=inbound msg=eddoe method=seq cat=uae catdesc=tobeata device_id=ctas log_id=vol pri=high userfrom=gna adminprof=itautf timezone=ET main_type=eprehe trigger_policy=ariatu sub_type=aqueip severity_level=aqueip policy=rautod src=10.96.168.24 src_port=6206 dst=10.109.106.194 dst_port=5356 http_method=Sedut http_url=stiaec http_host=rveli http_agent=serr http_session_id=umdolo signature_subclass=iduntut signature_id=4281 srccountry=rorsitv content_switch_name=caboNemo server_pool_name=cididun false_positive_mitigation=iamqu user_name=ommodoc monitor_status=mwrit http_refer=https://www5.example.com/madminim/onse.txt?reeuf=orinrepr#tinvo http_version=oru dev_id=ainc threat_weight=aeab history_threat_weight=iat threat_level=acom ftp_mode=olo ftp_cmd=eipsaq cipher_suite=enatu msg_id=mfu", - "event.timezone": "ET", - "fileset.name": "fortimanager", - "host.name": "tat1845.internal.invalid", - "http.request.referrer": "https://www5.example.com/madminim/onse.txt?reeuf=orinrepr#tinvo", - "input.type": "log", - "log.level": "high", - "log.offset": 61635, - "network.bytes": 11011, - "network.direction": "inbound", - "observer.egress.interface.name": "enp0s4144", - "observer.ingress.interface.name": "enp0s1897", - "observer.product": "FortiManager", - "observer.serial_number": "ctas", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.6905", - "related.hosts": [ - "aaliq", - "rveli", - "tat1845.internal.invalid" - ], - "related.ip": [ - "10.109.106.194", - "10.96.168.24" - ], - "related.user": [ - "ommodoc" - ], - "rsa.internal.event_desc": "eddoe", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "agnaaliq", - "rsa.misc.OS": "itte", - "rsa.misc.action": [ - "Sedut", - "allow" - ], - "rsa.misc.category": "aqueip", - "rsa.misc.client": "serr", - "rsa.misc.context": "loremeu", - "rsa.misc.event_source": "aaliq", - "rsa.misc.event_type": "ernatur", - "rsa.misc.fcatnum": "uae", - "rsa.misc.filter": "tobeata", - "rsa.misc.hardware_id": "ctas", - "rsa.misc.log_session_id": "umdolo", - "rsa.misc.policy_id": "yCiceroi", - "rsa.misc.policy_name": "rautod", - "rsa.misc.reference_id": "vol", - "rsa.misc.rule_name": "rumetMal", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 4281, - "rsa.misc.version": "1.6905", - "rsa.misc.vsys": "xeacomm", - "rsa.network.alias_host": [ - "tat1845.internal.invalid" - ], - "rsa.network.dinterface": "enp0s4144", - "rsa.network.network_service": "cepteurs", - "rsa.network.sinterface": "enp0s1897", - "rsa.threat.threat_desc": "acom", - "rsa.time.duration_time": 156.263, - "rsa.time.event_time": "2018-04-08T06:33:58.000Z", - "rsa.time.timezone": "ET", - "rsa.web.reputation_num": 60.95, - "rsa.web.web_ref_domain": "rveli", - "rule.name": "rumetMal", - "service.type": "fortinet", - "source.bytes": 3719, - "source.geo.country_name": "rorsitv", - "source.ip": "10.96.168.24", - "source.mac": "01:00:5e:c1:b8:93", - "source.port": 6206, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.com", - "url.extension": "txt", - "url.fragment": "ptat", - "url.original": "https://www.example.com/imadm/ugiat.txt?Nequepor=nisiu#ptat", - "url.path": "/imadm/ugiat.txt", - "url.query": [ - "Nequepor=nisiu", - "stiaec" - ], - "url.scheme": "https", - "user.name": "ommodoc" - }, - { - "@timestamp": "2018-04-22T13:36:32.000Z", - "destination.bytes": 6693, - "destination.ip": "10.47.191.95", - "destination.port": 6242, - "event.action": "deny", - "event.code": "remagnam", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=aliqui date=2018-4-22 time=11:36:32 log_id=uipexea devid=sauteiru devname=nibusB logid=eetdolo type=issuscip subtype=iduntu level=high vd=rinc srcip=10.109.224.208 srcport=1769 srcintf=enp0s3638 dstip=10.31.34.96 dstport=4651 dstintf=enp0s390 poluuid=atis sessionid=edol proto=icmp action=deny policyid=adip trandisp=ugiatq duration=128.795000 sentbyte=4249 rcvdbyte=6693 devtype=atemUte osname=emag osversion=1.1353 mastersrcmac=ecatcup srcmac=01:00:5e:63:85:d2 crscore=62.286000 craction=oin crlevel=isautem eventtype=eiusm user=assit service=ulpaq hostname=ulamc767.internal.lan profile=iades reqtype=mremape url=https://mail.example.net/ionemu/nul.jpg?volupt=ori#sed direction=inbound msg=maveniam method=ctobeat cat=emoenim catdesc=oqui device_id=olab log_id=remagnam pri=high userfrom=mSecti adminprof=volupt timezone=OMST main_type=ela trigger_policy=fugits sub_type=litseddo severity_level=idestl policy=ptasn src=10.112.155.228 src_port=5011 dst=10.47.191.95 dst_port=6242 http_method=velillu http_url=radipi http_host=iatn http_agent=aturE http_session_id=beat signature_subclass=pern signature_id=7568 srccountry=itvolupt content_switch_name=uradip server_pool_name=perspi false_positive_mitigation=uaer user_name=aed monitor_status=tectobe http_refer=https://example.org/scingeli/uatDuis.gif?apari=itesseci#utali http_version=ofdeFin dev_id=siutaliq threat_weight=urvel history_threat_weight=turE threat_level=ntium ftp_mode=imadmi ftp_cmd=dquiac cipher_suite=liquide msg_id=uatD", - "event.timezone": "OMST", - "fileset.name": "fortimanager", - "host.name": "ulamc767.internal.lan", - "http.request.referrer": "https://example.org/scingeli/uatDuis.gif?apari=itesseci#utali", - "input.type": "log", - "log.level": "high", - "log.offset": 63134, - "network.bytes": 10942, - "network.direction": "inbound", - "observer.egress.interface.name": "enp0s390", - "observer.ingress.interface.name": "enp0s3638", - "observer.product": "FortiManager", - "observer.serial_number": "olab", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.1353", - "related.hosts": [ - "iatn", - "nibusB", - "ulamc767.internal.lan" - ], - "related.ip": [ - "10.112.155.228", - "10.47.191.95" - ], - "related.user": [ - "aed" - ], - "rsa.internal.event_desc": "maveniam", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "eiusm", - "rsa.misc.OS": "emag", - "rsa.misc.action": [ - "deny", - "velillu" - ], - "rsa.misc.category": "litseddo", - "rsa.misc.client": "aturE", - "rsa.misc.context": "ugiatq", - "rsa.misc.event_source": "nibusB", - "rsa.misc.event_type": "issuscip", - "rsa.misc.fcatnum": "emoenim", - "rsa.misc.filter": "oqui", - "rsa.misc.hardware_id": "olab", - "rsa.misc.log_session_id": "beat", - "rsa.misc.policy_id": "adip", - "rsa.misc.policy_name": "ptasn", - "rsa.misc.reference_id": "remagnam", - "rsa.misc.rule_name": "iades", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 7568, - "rsa.misc.version": "1.1353", - "rsa.misc.vsys": "rinc", - "rsa.network.alias_host": [ - "ulamc767.internal.lan" - ], - "rsa.network.dinterface": "enp0s390", - "rsa.network.network_service": "ulpaq", - "rsa.network.sinterface": "enp0s3638", - "rsa.threat.threat_desc": "ntium", - "rsa.time.duration_time": 128.795, - "rsa.time.event_time": "2018-04-22T13:36:32.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.reputation_num": 62.286, - "rsa.web.web_ref_domain": "iatn", - "rule.name": "iades", - "service.type": "fortinet", - "source.bytes": 4249, - "source.geo.country_name": "itvolupt", - "source.ip": "10.112.155.228", - "source.mac": "01:00:5e:63:85:d2", - "source.port": 5011, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.net", - "url.extension": "jpg", - "url.fragment": "sed", - "url.original": "https://mail.example.net/ionemu/nul.jpg?volupt=ori#sed", - "url.path": "/ionemu/nul.jpg", - "url.query": [ - "radipi", - "volupt=ori" - ], - "url.scheme": "https", - "user.name": "aed" - }, - { - "@timestamp": "2018-05-07T08:39:06.000Z", - "destination.bytes": 6033, - "destination.geo.country_name": "amrema", - "destination.ip": "10.140.137.17", - "destination.nat.ip": "10.62.241.218", - "destination.nat.port": 7444, - "destination.port": 446, - "event.action": "allow", - "event.code": "tmol", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=gnidolor dtime=2018-05-07 06:39:06.812538723 +0000 UTC devid=BCSedut devname=metco vd=vel date=2018-5-7 time=6:39:06 logid=tmol type=acommodi subtype=ccaecat level=low eventtime=mqu logtime=mips srcip=10.103.169.94 srcport=2174 srcintf=lo5821 srcintfrole=osqu dstip=10.140.137.17 dstport=446 dstintf=enp0s4444 dstintfrole=iono poluuid=atcupi sessionid=dexe proto=0 action=allow policyid=exerci policytype=ems crscore=15.728000 craction=nulapa crlevel=tess appcat=eroi service=enby srccountry=riatur dstcountry=amrema trandisp=illum tranip=10.62.241.218 tranport=7444 duration=5.969000 sentbyte=4832 rcvdbyte=6033 sentpkt=urere app=involu", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 64633, - "network.bytes": 10865, - "observer.egress.interface.name": "enp0s4444", - "observer.ingress.interface.name": "lo5821", - "observer.product": "FortiManager", - "observer.serial_number": "BCSedut", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "metco" - ], - "related.ip": [ - "10.103.169.94", - "10.140.137.17", - "10.62.241.218" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "ccaecat", - "rsa.misc.context": "illum", - "rsa.misc.event_source": "metco", - "rsa.misc.event_type": "acommodi", - "rsa.misc.hardware_id": "BCSedut", - "rsa.misc.log_session_id": "dexe", - "rsa.misc.obj_name": "involu", - "rsa.misc.policy_id": "exerci", - "rsa.misc.reference_id": "tmol", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "vel", - "rsa.network.dinterface": "enp0s4444", - "rsa.network.network_service": "enby", - "rsa.network.sinterface": "lo5821", - "rsa.time.duration_time": 5.969, - "rsa.time.event_time": "2018-05-07T08:39:06.000Z", - "rsa.time.event_time_str": "mqu", - "rsa.web.reputation_num": 15.728, - "service.type": "fortinet", - "source.bytes": 4832, - "source.geo.country_name": "riatur", - "source.ip": "10.103.169.94", - "source.port": 2174, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-05-21T03:41:41.000Z", - "destination.bytes": 2687, - "destination.geo.country_name": "umetMalo", - "destination.ip": "10.251.212.166", - "destination.nat.ip": "10.77.105.160", - "destination.nat.port": 5541, - "destination.port": 3925, - "event.action": "cancel", - "event.code": "sistena", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=tem devname=\"litsedq\" devid=\"amre\" vd=orpori date=2018-5-21 time=1:41:41 logid=sistena type=iam subtype=saquae level=low eventtime=itanimid logtime=ianonnum srcip=10.90.229.92 srcport=6796 srcintf=lo1752 srcintfrole=inculp dstip=10.251.212.166 dstport=3925 dstintf=eth1592 dstintfrole=aboNemo poluuid=tsedquia sessionid=ididun proto=21 action=cancel policyid=enim policytype=gnido crscore=85.453000 craction=erepr crlevel=tsedqu appcat=uisa service=uptat srccountry=siutal dstcountry=umetMalo trandisp=onevolu tranip=10.77.105.160 tranport=5541 duration=155.903000 sentbyte=5294 rcvdbyte=2687 sentpkt=ira app=umfu", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 65278, - "network.bytes": 7981, - "observer.egress.interface.name": "eth1592", - "observer.ingress.interface.name": "lo1752", - "observer.product": "FortiManager", - "observer.serial_number": "amre", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "litsedq" - ], - "related.ip": [ - "10.251.212.166", - "10.77.105.160", - "10.90.229.92" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "saquae", - "rsa.misc.context": "onevolu", - "rsa.misc.event_source": "litsedq", - "rsa.misc.event_type": "iam", - "rsa.misc.hardware_id": "amre", - "rsa.misc.log_session_id": "ididun", - "rsa.misc.obj_name": "umfu", - "rsa.misc.policy_id": "enim", - "rsa.misc.reference_id": "sistena", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "orpori", - "rsa.network.dinterface": "eth1592", - "rsa.network.network_service": "uptat", - "rsa.network.sinterface": "lo1752", - "rsa.time.duration_time": 155.903, - "rsa.time.event_time": "2018-05-21T03:41:41.000Z", - "rsa.time.event_time_str": "itanimid", - "rsa.web.reputation_num": 85.453, - "service.type": "fortinet", - "source.bytes": 5294, - "source.geo.country_name": "siutal", - "source.ip": "10.90.229.92", - "source.port": 6796, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-06-04T10:44:15.000Z", - "destination.bytes": 205, - "destination.ip": "10.112.242.68", - "destination.port": 3105, - "event.action": "cancel", - "event.code": "atisund", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-6-4 time=8:44:15 logver=uamq devid=mnisist devname=dutp logid=ecillu type=ipsaqu subtype=asun level=very-high vd=llumd srcip=10.100.223.157 srcport=1307 srcintf=eth5742 dstip=10.232.243.87 dstport=4546 dstintf=lo299 poluuid=atisetq sessionid=mSectio proto=0 action=cancel policyid=nonnumqu trandisp=atis duration=63.050000 sentbyte=3508 rcvdbyte=205 devtype=uam osname=tisunde osversion=1.4261 mastersrcmac=rured srcmac=01:00:5e:8a:c1:2a crscore=19.243000 craction=meumfug crlevel=iam eventtype=animi user=porainc service=nsectetu hostname=spici5547.internal.test profile=tate reqtype=sintocca url=https://mail.example.org/asuntex/uovolup.html?amali=uiav#henderi direction=internal msg=tnul method=ons cat=radip catdesc=amremap device_id=dolorsit log_id=atisund pri=very-high userfrom=uredo adminprof=uamni timezone=CT main_type=quisqua trigger_policy=sedquian sub_type=lamcorpo severity_level=rem policy=apariat src=10.216.49.112 src_port=4521 dst=10.112.242.68 dst_port=3105 http_method=aut http_url=eriti http_host=ipsum http_agent=com http_session_id=uptate signature_subclass=tevelite signature_id=5880 srccountry=nimadmi content_switch_name=mquiado server_pool_name=agn false_positive_mitigation=dip user_name=urmag monitor_status=nim http_refer=https://www5.example.net/tutlabo/incid.gif?ptate=tconsect#usm http_version=uunturma dev_id=namaliqu threat_weight=tatemacc history_threat_weight=licab threat_level=roidents ftp_mode=volupta ftp_cmd=stiaeco cipher_suite=tanim msg_id=osam", - "event.timezone": "CT", - "fileset.name": "fortimanager", - "host.name": "spici5547.internal.test", - "http.request.referrer": "https://www5.example.net/tutlabo/incid.gif?ptate=tconsect#usm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 65899, - "network.bytes": 3713, - "network.direction": "internal", - "observer.egress.interface.name": "lo299", - "observer.ingress.interface.name": "eth5742", - "observer.product": "FortiManager", - "observer.serial_number": "dolorsit", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4261", - "related.hosts": [ - "dutp", - "ipsum", - "spici5547.internal.test" - ], - "related.ip": [ - "10.112.242.68", - "10.216.49.112" - ], - "related.user": [ - "urmag" - ], - "rsa.internal.event_desc": "tnul", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "animi", - "rsa.misc.OS": "tisunde", - "rsa.misc.action": [ - "aut", - "cancel" - ], - "rsa.misc.category": "lamcorpo", - "rsa.misc.client": "com", - "rsa.misc.context": "atis", - "rsa.misc.event_source": "dutp", - "rsa.misc.event_type": "ipsaqu", - "rsa.misc.fcatnum": "radip", - "rsa.misc.filter": "amremap", - "rsa.misc.hardware_id": "dolorsit", - "rsa.misc.log_session_id": "uptate", - "rsa.misc.policy_id": "nonnumqu", - "rsa.misc.policy_name": "apariat", - "rsa.misc.reference_id": "atisund", - "rsa.misc.rule_name": "tate", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 5880, - "rsa.misc.version": "1.4261", - "rsa.misc.vsys": "llumd", - "rsa.network.alias_host": [ - "spici5547.internal.test" - ], - "rsa.network.dinterface": "lo299", - "rsa.network.network_service": "nsectetu", - "rsa.network.sinterface": "eth5742", - "rsa.threat.threat_desc": "roidents", - "rsa.time.duration_time": 63.05, - "rsa.time.event_time": "2018-06-04T10:44:15.000Z", - "rsa.time.timezone": "CT", - "rsa.web.reputation_num": 19.243, - "rsa.web.web_ref_domain": "ipsum", - "rule.name": "tate", - "service.type": "fortinet", - "source.bytes": 3508, - "source.geo.country_name": "nimadmi", - "source.ip": "10.216.49.112", - "source.mac": "01:00:5e:8a:c1:2a", - "source.port": 4521, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.org", - "url.extension": "html", - "url.fragment": "henderi", - "url.original": "https://mail.example.org/asuntex/uovolup.html?amali=uiav#henderi", - "url.path": "/asuntex/uovolup.html", - "url.query": [ - "amali=uiav", - "eriti" - ], - "url.scheme": "https", - "user.name": "urmag" - }, - { - "@timestamp": "2018-06-19T05:46:49.000Z", - "destination.bytes": 1768, - "destination.ip": "10.96.100.84", - "destination.port": 2253, - "event.action": "accept", - "event.code": "etco", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-6-19 time=3:46:49 logver=tla devid=nimve devname=edutpe logid=tenb type=billoinv subtype=asia level=medium vd=paquioff srcip=10.252.175.174 srcport=1995 srcintf=enp0s1531 dstip=10.196.226.219 dstport=545 dstintf=lo2390 poluuid=uaera sessionid=nsequa proto=tcp action=accept policyid=orporis trandisp=oluptate duration=28.731000 sentbyte=2397 rcvdbyte=1768 devtype=itvolu osname=citation osversion=1.491 mastersrcmac=aincid srcmac=01:00:5e:7e:ea:3f crscore=149.960000 craction=tNeque crlevel=uidolore eventtype=uatDuisa user=usB service=magnaali hostname=istenatu3686.invalid profile=remagna reqtype=eritqu url=https://example.org/mnisiut/porinci.htm?norum=emUten#dminimve direction=internal msg=oremagna method=nulamc cat=tempori catdesc=rsintocc device_id=nderit log_id=etco pri=very-high userfrom=lore adminprof=ameiusmo timezone=PT main_type=veniamqu trigger_policy=equat sub_type=reeu severity_level=atemacc policy=rsitvolu src=10.182.58.108 src_port=4811 dst=10.96.100.84 dst_port=2253 http_method=utlabore http_url=texplica http_host=boru http_agent=ntut http_session_id=elaud signature_subclass=acomm signature_id=5667 srccountry=emUten content_switch_name=uamni server_pool_name=laboris false_positive_mitigation=pers user_name=lpaquiof monitor_status=isisten http_refer=https://api.example.net/seddoei/rnatur.jpg?olores=idolorem#umdolors http_version=uid dev_id=numqua threat_weight=citatio history_threat_weight=sed threat_level=mUten ftp_mode=eursint ftp_cmd=velillum cipher_suite=oin msg_id=teurs", - "event.timezone": "PT", - "fileset.name": "fortimanager", - "host.name": "istenatu3686.invalid", - "http.request.referrer": "https://api.example.net/seddoei/rnatur.jpg?olores=idolorem#umdolors", - "input.type": "log", - "log.level": "very-high", - "log.offset": 67398, - "network.bytes": 4165, - "network.direction": "internal", - "observer.egress.interface.name": "lo2390", - "observer.ingress.interface.name": "enp0s1531", - "observer.product": "FortiManager", - "observer.serial_number": "nderit", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.491", - "related.hosts": [ - "boru", - "edutpe", - "istenatu3686.invalid" - ], - "related.ip": [ - "10.182.58.108", - "10.96.100.84" - ], - "related.user": [ - "lpaquiof" - ], - "rsa.internal.event_desc": "oremagna", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "uatDuisa", - "rsa.misc.OS": "citation", - "rsa.misc.action": [ - "accept", - "utlabore" - ], - "rsa.misc.category": "reeu", - "rsa.misc.client": "ntut", - "rsa.misc.context": "oluptate", - "rsa.misc.event_source": "edutpe", - "rsa.misc.event_type": "billoinv", - "rsa.misc.fcatnum": "tempori", - "rsa.misc.filter": "rsintocc", - "rsa.misc.hardware_id": "nderit", - "rsa.misc.log_session_id": "elaud", - "rsa.misc.policy_id": "orporis", - "rsa.misc.policy_name": "rsitvolu", - "rsa.misc.reference_id": "etco", - "rsa.misc.rule_name": "remagna", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 5667, - "rsa.misc.version": "1.491", - "rsa.misc.vsys": "paquioff", - "rsa.network.alias_host": [ - "istenatu3686.invalid" - ], - "rsa.network.dinterface": "lo2390", - "rsa.network.network_service": "magnaali", - "rsa.network.sinterface": "enp0s1531", - "rsa.threat.threat_desc": "mUten", - "rsa.time.duration_time": 28.731, - "rsa.time.event_time": "2018-06-19T05:46:49.000Z", - "rsa.time.timezone": "PT", - "rsa.web.reputation_num": 149.96, - "rsa.web.web_ref_domain": "boru", - "rule.name": "remagna", - "service.type": "fortinet", - "source.bytes": 2397, - "source.geo.country_name": "emUten", - "source.ip": "10.182.58.108", - "source.mac": "01:00:5e:7e:ea:3f", - "source.port": 4811, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "dminimve", - "url.original": "https://example.org/mnisiut/porinci.htm?norum=emUten#dminimve", - "url.path": "/mnisiut/porinci.htm", - "url.query": [ - "norum=emUten", - "texplica" - ], - "url.scheme": "https", - "user.name": "lpaquiof" - }, - { - "@timestamp": "2018-07-03T12:49:23.000Z", - "destination.bytes": 2952, - "destination.geo.country_name": "tatem", - "destination.ip": "10.246.41.77", - "destination.nat.ip": "10.157.22.21", - "destination.nat.port": 5252, - "destination.port": 1217, - "event.action": "block", - "event.code": "rios", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=untutl devname=\"cons\" devid=\"vel\" vd=illumdo date=2018-7-3 time=10:49:23 logid=rios type=deF subtype=dutpe level=very-high eventtime=itan logtime=uisnos srcip=10.228.61.5 srcport=1179 srcintf=eth4741 srcintfrole=lites dstip=10.246.41.77 dstport=1217 dstintf=lo7502 dstintfrole=olu poluuid=ectet sessionid=tquovo proto=17 action=block policyid=lapa policytype=xeacom crscore=22.822000 craction=qui crlevel=henderi appcat=rainc service=dminim srccountry=sse dstcountry=tatem trandisp=umexe tranip=10.157.22.21 tranport=5252 duration=135.630000 sentbyte=2167 rcvdbyte=2952 sentpkt=quamei app=nvento", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 68917, - "network.bytes": 5119, - "observer.egress.interface.name": "lo7502", - "observer.ingress.interface.name": "eth4741", - "observer.product": "FortiManager", - "observer.serial_number": "vel", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "cons" - ], - "related.ip": [ - "10.157.22.21", - "10.228.61.5", - "10.246.41.77" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "dutpe", - "rsa.misc.context": "umexe", - "rsa.misc.event_source": "cons", - "rsa.misc.event_type": "deF", - "rsa.misc.hardware_id": "vel", - "rsa.misc.log_session_id": "tquovo", - "rsa.misc.obj_name": "nvento", - "rsa.misc.policy_id": "lapa", - "rsa.misc.reference_id": "rios", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "illumdo", - "rsa.network.dinterface": "lo7502", - "rsa.network.network_service": "dminim", - "rsa.network.sinterface": "eth4741", - "rsa.time.duration_time": 135.63, - "rsa.time.event_time": "2018-07-03T12:49:23.000Z", - "rsa.time.event_time_str": "itan", - "rsa.web.reputation_num": 22.822, - "service.type": "fortinet", - "source.bytes": 2167, - "source.geo.country_name": "sse", - "source.ip": "10.228.61.5", - "source.port": 1179, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-07-17T07:51:58.000Z", - "destination.bytes": 4226, - "destination.geo.country_name": "nonpro", - "destination.ip": "10.239.231.168", - "destination.nat.ip": "10.188.131.18", - "destination.nat.port": 981, - "destination.port": 88, - "event.action": "allow", - "event.code": "psu", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=qua devname=\"llumdo\" devid=\"tot\" vd=itquii date=2018-7-17 time=5:51:58 logid=psu type=iat subtype=ept level=high eventtime=ectob logtime=aUtenim srcip=10.242.119.111 srcport=645 srcintf=lo1640 srcintfrole=tDuisa dstip=10.239.231.168 dstport=88 dstintf=lo3385 dstintfrole=nimi poluuid=niamqu sessionid=uioffi proto=1 action=allow policyid=consequa policytype=tionu crscore=60.452000 craction=quines crlevel=entsu appcat=ineavol service=abor srccountry=giatq dstcountry=nonpro trandisp=elitsedd tranip=10.188.131.18 tranport=981 duration=46.954000 sentbyte=2770 rcvdbyte=4226 sentpkt=tam app=uovo", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 69520, - "network.bytes": 6996, - "observer.egress.interface.name": "lo3385", - "observer.ingress.interface.name": "lo1640", - "observer.product": "FortiManager", - "observer.serial_number": "tot", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "llumdo" - ], - "related.ip": [ - "10.188.131.18", - "10.239.231.168", - "10.242.119.111" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "ept", - "rsa.misc.context": "elitsedd", - "rsa.misc.event_source": "llumdo", - "rsa.misc.event_type": "iat", - "rsa.misc.hardware_id": "tot", - "rsa.misc.log_session_id": "uioffi", - "rsa.misc.obj_name": "uovo", - "rsa.misc.policy_id": "consequa", - "rsa.misc.reference_id": "psu", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "itquii", - "rsa.network.dinterface": "lo3385", - "rsa.network.network_service": "abor", - "rsa.network.sinterface": "lo1640", - "rsa.time.duration_time": 46.954, - "rsa.time.event_time": "2018-07-17T07:51:58.000Z", - "rsa.time.event_time_str": "ectob", - "rsa.web.reputation_num": 60.452, - "service.type": "fortinet", - "source.bytes": 2770, - "source.geo.country_name": "giatq", - "source.ip": "10.242.119.111", - "source.port": 645, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-08-01T14:54:32.000Z", - "destination.bytes": 306, - "destination.ip": "10.247.124.74", - "destination.port": 2491, - "event.action": "accept", - "event.code": "nderitin", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=orinrepr date=2018-8-1 time=12:54:32 log_id=untut devid=siu devname=lorem logid=icons type=hende subtype=umdol level=medium vd=psaq srcip=10.24.154.250 srcport=2108 srcintf=eth2707 dstip=10.124.187.230 dstport=6119 dstintf=lo105 poluuid=mqu sessionid=tse proto=udp action=accept policyid=ueip trandisp=amvo duration=20.956000 sentbyte=2068 rcvdbyte=306 devtype=reetdolo osname=tten osversion=1.979 mastersrcmac=usa srcmac=01:00:5e:6a:a6:c9 crscore=45.307000 craction=oremagna crlevel=siuta eventtype=amnihil user=nderit service=ficia hostname=tru3812.mail.lan profile=olo reqtype=xer url=https://api.example.net/nsec/smo.gif?etq=trumexe#rai direction=outbound msg=tNequepo method=byCicer cat=imvenia catdesc=ipit device_id=tdolorem log_id=nderitin pri=low userfrom=enderitq adminprof=amvolu timezone=GMT-07:00 main_type=temvele trigger_policy=ofd sub_type=quam severity_level=umdol policy=porincid src=10.106.101.87 src_port=7569 dst=10.247.124.74 dst_port=2491 http_method=inea http_url=ipsu http_host=iden http_agent=oreseo http_session_id=edictasu signature_subclass=aerat signature_id=4358 srccountry=lites content_switch_name=col server_pool_name=litsedd false_positive_mitigation=mnis user_name=ainci monitor_status=aturve http_refer=https://api.example.com/mporain/secte.txt?amqui=rume#uptate http_version=tisundeo dev_id=uid threat_weight=eFini history_threat_weight=mnis threat_level=tametco ftp_mode=snisiut ftp_cmd=lit cipher_suite=laborio msg_id=aaliqu", - "event.timezone": "GMT-07:00", - "fileset.name": "fortimanager", - "host.name": "tru3812.mail.lan", - "http.request.referrer": "https://api.example.com/mporain/secte.txt?amqui=rume#uptate", - "input.type": "log", - "log.level": "low", - "log.offset": 70122, - "network.bytes": 2374, - "network.direction": "outbound", - "observer.egress.interface.name": "lo105", - "observer.ingress.interface.name": "eth2707", - "observer.product": "FortiManager", - "observer.serial_number": "tdolorem", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.979", - "related.hosts": [ - "iden", - "lorem", - "tru3812.mail.lan" - ], - "related.ip": [ - "10.106.101.87", - "10.247.124.74" - ], - "related.user": [ - "ainci" - ], - "rsa.internal.event_desc": "tNequepo", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "amnihil", - "rsa.misc.OS": "tten", - "rsa.misc.action": [ - "accept", - "inea" - ], - "rsa.misc.category": "quam", - "rsa.misc.client": "oreseo", - "rsa.misc.context": "amvo", - "rsa.misc.event_source": "lorem", - "rsa.misc.event_type": "hende", - "rsa.misc.fcatnum": "imvenia", - "rsa.misc.filter": "ipit", - "rsa.misc.hardware_id": "tdolorem", - "rsa.misc.log_session_id": "edictasu", - "rsa.misc.policy_id": "ueip", - "rsa.misc.policy_name": "porincid", - "rsa.misc.reference_id": "nderitin", - "rsa.misc.rule_name": "olo", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 4358, - "rsa.misc.version": "1.979", - "rsa.misc.vsys": "psaq", - "rsa.network.alias_host": [ - "tru3812.mail.lan" - ], - "rsa.network.dinterface": "lo105", - "rsa.network.network_service": "ficia", - "rsa.network.sinterface": "eth2707", - "rsa.threat.threat_desc": "tametco", - "rsa.time.duration_time": 20.956, - "rsa.time.event_time": "2018-08-01T14:54:32.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.reputation_num": 45.307, - "rsa.web.web_ref_domain": "iden", - "rule.name": "olo", - "service.type": "fortinet", - "source.bytes": 2068, - "source.geo.country_name": "lites", - "source.ip": "10.106.101.87", - "source.mac": "01:00:5e:6a:a6:c9", - "source.port": 7569, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.net", - "url.extension": "gif", - "url.fragment": "rai", - "url.original": "https://api.example.net/nsec/smo.gif?etq=trumexe#rai", - "url.path": "/nsec/smo.gif", - "url.query": [ - "etq=trumexe", - "ipsu" - ], - "url.scheme": "https", - "user.name": "ainci" - }, - { - "@timestamp": "2018-08-15T09:57:06.000Z", - "event.action": "deny", - "event.code": "consec", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-8-15 time=7:57:06 devname=mid device_id=henderi log_id=consec type=event subtype=dquia pri=high desc=isiutali user=rehe userfrom=volupta msg=etcons action=deny adom=etdol408.internal.home session_id=agnamali", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 71594, - "observer.product": "FortiManager", - "observer.serial_number": "henderi", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "etdol408.internal.home", - "mid" - ], - "related.user": [ - "rehe" - ], - "rsa.db.index": "etcons", - "rsa.internal.event_desc": "isiutali", - "rsa.internal.messageid": "event_fortinetmgr", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "dquia", - "rsa.misc.event_source": "mid", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "henderi", - "rsa.misc.log_session_id": "agnamali", - "rsa.misc.reference_id": "consec", - "rsa.misc.severity": "high", - "rsa.network.domain": "etdol408.internal.home", - "rsa.time.event_time": "2018-08-15T09:57:06.000Z", - "server.domain": "etdol408.internal.home", - "server.registered_domain": "internal.home", - "server.subdomain": "etdol408", - "server.top_level_domain": "home", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "user.name": "rehe" - }, - { - "@timestamp": "2018-08-29T04:59:40.000Z", - "destination.bytes": 806, - "destination.ip": "10.162.114.52", - "destination.port": 2925, - "event.action": "allow", - "event.code": "san", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-8-29 time=2:59:40 logver=cae devid=Utenimad devname=onsequ logid=Bon type=amquisno subtype=mullam level=very-high vd=admi srcip=10.111.106.60 srcport=5449 srcintf=lo5820 dstip=10.142.181.192 dstport=4386 dstintf=lo6200 poluuid=lmolest sessionid=miurerep proto=17 action=allow policyid=Sed trandisp=isau duration=66.574000 sentbyte=75 rcvdbyte=806 devtype=idest osname=ostru osversion=1.4342 mastersrcmac=enimip srcmac=01:00:5e:11:d6:5d crscore=66.141000 craction=umquiado crlevel=taspe eventtype=empori user=mipsum service=tium hostname=riaturE1644.www5.example profile=ender reqtype=uine url=https://internal.example.com/dolo/exeacom.txt?tlab=eufugiat#upta direction=internal msg=reetdo method=mad cat=mdolor catdesc=amcorpor device_id=oremquel log_id=san pri=high userfrom=amqui adminprof=itatise timezone=GMT-07:00 main_type=cia trigger_policy=lup sub_type=cipitla severity_level=niam policy=mullamc src=10.215.144.167 src_port=6675 dst=10.162.114.52 dst_port=2925 http_method=quepor http_url=Lor http_host=ten http_agent=exeacomm http_session_id=cusan signature_subclass=oquisq signature_id=4993 srccountry=ihilmol content_switch_name=seosqui server_pool_name=tiset false_positive_mitigation=ciade user_name=erspici monitor_status=xercitat http_refer=https://internal.example.net/utlab/entoreve.html?umdol=nseq#autodita http_version=loreme dev_id=eratv threat_weight=tametcon history_threat_weight=orsi threat_level=ull ftp_mode=mcor ftp_cmd=iamquis cipher_suite=aeabi msg_id=ore", - "event.timezone": "GMT-07:00", - "fileset.name": "fortimanager", - "host.name": "riaturE1644.www5.example", - "http.request.referrer": "https://internal.example.net/utlab/entoreve.html?umdol=nseq#autodita", - "input.type": "log", - "log.level": "high", - "log.offset": 71812, - "network.bytes": 881, - "network.direction": "internal", - "observer.egress.interface.name": "lo6200", - "observer.ingress.interface.name": "lo5820", - "observer.product": "FortiManager", - "observer.serial_number": "oremquel", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4342", - "related.hosts": [ - "onsequ", - "riaturE1644.www5.example", - "ten" - ], - "related.ip": [ - "10.162.114.52", - "10.215.144.167" - ], - "related.user": [ - "erspici" - ], - "rsa.internal.event_desc": "reetdo", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "empori", - "rsa.misc.OS": "ostru", - "rsa.misc.action": [ - "allow", - "quepor" - ], - "rsa.misc.category": "cipitla", - "rsa.misc.client": "exeacomm", - "rsa.misc.context": "isau", - "rsa.misc.event_source": "onsequ", - "rsa.misc.event_type": "amquisno", - "rsa.misc.fcatnum": "mdolor", - "rsa.misc.filter": "amcorpor", - "rsa.misc.hardware_id": "oremquel", - "rsa.misc.log_session_id": "cusan", - "rsa.misc.policy_id": "Sed", - "rsa.misc.policy_name": "mullamc", - "rsa.misc.reference_id": "san", - "rsa.misc.rule_name": "ender", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 4993, - "rsa.misc.version": "1.4342", - "rsa.misc.vsys": "admi", - "rsa.network.alias_host": [ - "riaturE1644.www5.example" - ], - "rsa.network.dinterface": "lo6200", - "rsa.network.network_service": "tium", - "rsa.network.sinterface": "lo5820", - "rsa.threat.threat_desc": "ull", - "rsa.time.duration_time": 66.574, - "rsa.time.event_time": "2018-08-29T04:59:40.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.reputation_num": 66.141, - "rsa.web.web_ref_domain": "ten", - "rule.name": "ender", - "service.type": "fortinet", - "source.bytes": 75, - "source.geo.country_name": "ihilmol", - "source.ip": "10.215.144.167", - "source.mac": "01:00:5e:11:d6:5d", - "source.port": 6675, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "internal.example.com", - "url.extension": "txt", - "url.fragment": "upta", - "url.original": "https://internal.example.com/dolo/exeacom.txt?tlab=eufugiat#upta", - "url.path": "/dolo/exeacom.txt", - "url.query": [ - "Lor", - "tlab=eufugiat" - ], - "url.scheme": "https", - "user.name": "erspici" - }, - { - "@timestamp": "2018-09-12T12:02:15.000Z", - "destination.bytes": 7641, - "destination.ip": "10.78.75.82", - "destination.port": 7799, - "event.action": "accept", - "event.code": "fugi", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-9-12 time=10:02:15 logver=catcup devid=ectetur devname=cons logid=spiciati type=upidata subtype=utlabo level=high vd=ersp srcip=10.101.207.156 srcport=2086 srcintf=enp0s4931 dstip=10.12.8.82 dstport=4369 dstintf=enp0s7520 poluuid=nemull sessionid=trumex proto=6 action=accept policyid=doloremq trandisp=iade duration=26.420000 sentbyte=5013 rcvdbyte=7641 devtype=uidolo osname=ita osversion=1.6452 mastersrcmac=rchite srcmac=01:00:5e:41:90:bf crscore=107.693000 craction=tionem crlevel=volupta eventtype=adol user=econsequ service=orever hostname=mdolo7008.api.corp profile=reetdolo reqtype=psam url=https://www5.example.org/orumet/aliqu.txt?tion=sun#utod direction=outbound msg=rinci method=uamestqu cat=riatu catdesc=ulaparia device_id=remagna log_id=fugi pri=very-high userfrom=xerc adminprof=caecat timezone=OMST main_type=cor trigger_policy=nonnumqu sub_type=uidexea severity_level=emu policy=asia src=10.162.128.87 src_port=6214 dst=10.78.75.82 dst_port=7799 http_method=uptat http_url=con http_host=tem http_agent=orpori http_session_id=lor signature_subclass=quiinea signature_id=7098 srccountry=rroquis content_switch_name=dolorema server_pool_name=prehe false_positive_mitigation=bori user_name=Sedutp monitor_status=ritinvo http_refer=https://internal.example.net/ica/nat.jpg?ddoe=nsequ#lloinve http_version=tdolo dev_id=billoi threat_weight=sequu history_threat_weight=ffic threat_level=imadmini ftp_mode=isnostru ftp_cmd=ostr cipher_suite=tinvo msg_id=lorumwr", - "event.timezone": "OMST", - "fileset.name": "fortimanager", - "host.name": "mdolo7008.api.corp", - "http.request.referrer": "https://internal.example.net/ica/nat.jpg?ddoe=nsequ#lloinve", - "input.type": "log", - "log.level": "very-high", - "log.offset": 73306, - "network.bytes": 12654, - "network.direction": "outbound", - "observer.egress.interface.name": "enp0s7520", - "observer.ingress.interface.name": "enp0s4931", - "observer.product": "FortiManager", - "observer.serial_number": "remagna", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.6452", - "related.hosts": [ - "cons", - "mdolo7008.api.corp", - "tem" - ], - "related.ip": [ - "10.162.128.87", - "10.78.75.82" - ], - "related.user": [ - "Sedutp" - ], - "rsa.internal.event_desc": "rinci", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "adol", - "rsa.misc.OS": "ita", - "rsa.misc.action": [ - "accept", - "uptat" - ], - "rsa.misc.category": "uidexea", - "rsa.misc.client": "orpori", - "rsa.misc.context": "iade", - "rsa.misc.event_source": "cons", - "rsa.misc.event_type": "upidata", - "rsa.misc.fcatnum": "riatu", - "rsa.misc.filter": "ulaparia", - "rsa.misc.hardware_id": "remagna", - "rsa.misc.log_session_id": "lor", - "rsa.misc.policy_id": "doloremq", - "rsa.misc.policy_name": "asia", - "rsa.misc.reference_id": "fugi", - "rsa.misc.rule_name": "reetdolo", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 7098, - "rsa.misc.version": "1.6452", - "rsa.misc.vsys": "ersp", - "rsa.network.alias_host": [ - "mdolo7008.api.corp" - ], - "rsa.network.dinterface": "enp0s7520", - "rsa.network.network_service": "orever", - "rsa.network.sinterface": "enp0s4931", - "rsa.threat.threat_desc": "imadmini", - "rsa.time.duration_time": 26.42, - "rsa.time.event_time": "2018-09-12T12:02:15.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.reputation_num": 107.693, - "rsa.web.web_ref_domain": "tem", - "rule.name": "reetdolo", - "service.type": "fortinet", - "source.bytes": 5013, - "source.geo.country_name": "rroquis", - "source.ip": "10.162.128.87", - "source.mac": "01:00:5e:41:90:bf", - "source.port": 6214, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www5.example.org", - "url.extension": "txt", - "url.fragment": "utod", - "url.original": "https://www5.example.org/orumet/aliqu.txt?tion=sun#utod", - "url.path": "/orumet/aliqu.txt", - "url.query": [ - "con", - "tion=sun" - ], - "url.scheme": "https", - "user.name": "Sedutp" - }, - { - "@timestamp": "2018-09-27T07:04:49.000Z", - "destination.bytes": 5464, - "destination.geo.country_name": "mdolorem", - "destination.ip": "10.137.36.151", - "destination.nat.ip": "10.51.106.43", - "destination.nat.port": 6486, - "destination.port": 196, - "event.action": "block", - "event.code": "auteir", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ctetura devname=\"reseosqu\" devid=\"ittenbyC\" vd=tlabor date=2018-9-27 time=5:04:49 logid=auteir type=uredolo subtype=uido level=medium eventtime=quiratio logtime=aincidu srcip=10.75.198.93 srcport=1982 srcintf=eth725 srcintfrole=umqu dstip=10.137.36.151 dstport=196 dstintf=lo1813 dstintfrole=rspici poluuid=duntutla sessionid=emeu proto=1 action=block policyid=atemUten policytype=turadipi crscore=16.226000 craction=estqu crlevel=orinre appcat=prehen service=equa srccountry=ciatisun dstcountry=mdolorem trandisp=nnumq tranip=10.51.106.43 tranport=6486 duration=78.551000 sentbyte=3531 rcvdbyte=5464 sentpkt=oremeumf app=volupt", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 74789, - "network.bytes": 8995, - "observer.egress.interface.name": "lo1813", - "observer.ingress.interface.name": "eth725", - "observer.product": "FortiManager", - "observer.serial_number": "ittenbyC", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "reseosqu" - ], - "related.ip": [ - "10.137.36.151", - "10.51.106.43", - "10.75.198.93" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "uido", - "rsa.misc.context": "nnumq", - "rsa.misc.event_source": "reseosqu", - "rsa.misc.event_type": "uredolo", - "rsa.misc.hardware_id": "ittenbyC", - "rsa.misc.log_session_id": "emeu", - "rsa.misc.obj_name": "volupt", - "rsa.misc.policy_id": "atemUten", - "rsa.misc.reference_id": "auteir", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "tlabor", - "rsa.network.dinterface": "lo1813", - "rsa.network.network_service": "equa", - "rsa.network.sinterface": "eth725", - "rsa.time.duration_time": 78.551, - "rsa.time.event_time": "2018-09-27T07:04:49.000Z", - "rsa.time.event_time_str": "quiratio", - "rsa.web.reputation_num": 16.226, - "service.type": "fortinet", - "source.bytes": 3531, - "source.geo.country_name": "ciatisun", - "source.ip": "10.75.198.93", - "source.port": 1982, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-10-11T14:07:23.000Z", - "destination.bytes": 5744, - "destination.geo.country_name": "tlab", - "destination.ip": "10.7.230.206", - "destination.nat.ip": "10.249.93.150", - "destination.nat.port": 799, - "destination.port": 5757, - "event.action": "allow", - "event.code": "mvol", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=tnulapa devname=\"caecatcu\" devid=\"xcepte\" vd=deserun date=2018-10-11 time=12:07:23 logid=mvol type=erep subtype=teurs level=low eventtime=tiumdol logtime=byCicer srcip=10.154.151.111 srcport=5860 srcintf=eth1273 srcintfrole=uisnos dstip=10.7.230.206 dstport=5757 dstintf=lo1291 dstintfrole=pisc poluuid=eumfu sessionid=tseddoe proto=HOPOPT action=allow policyid=emulla policytype=bill crscore=147.522000 craction=oditaut crlevel=oloremqu appcat=untNeque service=reetdol srccountry=perspi dstcountry=tlab trandisp=udexerci tranip=10.249.93.150 tranport=799 duration=113.020000 sentbyte=2808 rcvdbyte=5744 sentpkt=ovolup app=squ", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 75425, - "network.bytes": 8552, - "observer.egress.interface.name": "lo1291", - "observer.ingress.interface.name": "eth1273", - "observer.product": "FortiManager", - "observer.serial_number": "xcepte", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "caecatcu" - ], - "related.ip": [ - "10.154.151.111", - "10.249.93.150", - "10.7.230.206" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "teurs", - "rsa.misc.context": "udexerci", - "rsa.misc.event_source": "caecatcu", - "rsa.misc.event_type": "erep", - "rsa.misc.hardware_id": "xcepte", - "rsa.misc.log_session_id": "tseddoe", - "rsa.misc.obj_name": "squ", - "rsa.misc.policy_id": "emulla", - "rsa.misc.reference_id": "mvol", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "deserun", - "rsa.network.dinterface": "lo1291", - "rsa.network.network_service": "reetdol", - "rsa.network.sinterface": "eth1273", - "rsa.time.duration_time": 113.02, - "rsa.time.event_time": "2018-10-11T14:07:23.000Z", - "rsa.time.event_time_str": "tiumdol", - "rsa.web.reputation_num": 147.522, - "service.type": "fortinet", - "source.bytes": 2808, - "source.geo.country_name": "perspi", - "source.ip": "10.154.151.111", - "source.port": 5860, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2018-10-25T09:09:57.000Z", - "destination.bytes": 6280, - "destination.ip": "10.26.4.3", - "destination.port": 5291, - "event.action": "deny", - "event.code": "iameaq", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-10-25 time=7:09:57 logver=dolor devid=lit devname=ptatem logid=oeiusmod type=ugi subtype=utaliq level=very-high vd=toc srcip=10.76.177.154 srcport=1428 srcintf=eth4425 dstip=10.207.160.170 dstport=7037 dstintf=lo1570 poluuid=reseo sessionid=iration proto=tcp action=deny policyid=magn trandisp=iaecon duration=54.100000 sentbyte=622 rcvdbyte=6280 devtype=ill osname=oris osversion=1.5718 mastersrcmac=ulamcol srcmac=01:00:5e:19:ce:4b crscore=142.771000 craction=oNe crlevel=utfu eventtype=santiumd user=cididunt service=ctasu hostname=itse5466.api.example profile=ica reqtype=mnisis url=https://internal.example.com/nonnumqu/isciveli.gif?wri=aute#iscin direction=outbound msg=uat method=itasper cat=nibusBo catdesc=volupta device_id=olorinr log_id=iameaq pri=high userfrom=docons adminprof=uun timezone=OMST main_type=mremap trigger_policy=ate sub_type=agnaal severity_level=ibusB policy=mexe src=10.217.209.221 src_port=3639 dst=10.26.4.3 dst_port=5291 http_method=rsitame http_url=eca http_host=quirat http_agent=urmagn http_session_id=essec signature_subclass=prehende signature_id=1261 srccountry=setquas content_switch_name=nti server_pool_name=osamnis false_positive_mitigation=atisetqu user_name=ciduntut monitor_status=atisu http_refer=https://internal.example.com/architec/incul.txt?aborios=mco#amnisiu http_version=suntincu dev_id=lore threat_weight=equatu history_threat_weight=enbyCi threat_level=dolo ftp_mode=adipi ftp_cmd=beata cipher_suite=evelites msg_id=ipiscive", - "event.timezone": "OMST", - "fileset.name": "fortimanager", - "host.name": "itse5466.api.example", - "http.request.referrer": "https://internal.example.com/architec/incul.txt?aborios=mco#amnisiu", - "input.type": "log", - "log.level": "high", - "log.offset": 76059, - "network.bytes": 6902, - "network.direction": "outbound", - "observer.egress.interface.name": "lo1570", - "observer.ingress.interface.name": "eth4425", - "observer.product": "FortiManager", - "observer.serial_number": "olorinr", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.5718", - "related.hosts": [ - "itse5466.api.example", - "ptatem", - "quirat" - ], - "related.ip": [ - "10.217.209.221", - "10.26.4.3" - ], - "related.user": [ - "ciduntut" - ], - "rsa.internal.event_desc": "uat", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "santiumd", - "rsa.misc.OS": "oris", - "rsa.misc.action": [ - "deny", - "rsitame" - ], - "rsa.misc.category": "agnaal", - "rsa.misc.client": "urmagn", - "rsa.misc.context": "iaecon", - "rsa.misc.event_source": "ptatem", - "rsa.misc.event_type": "ugi", - "rsa.misc.fcatnum": "nibusBo", - "rsa.misc.filter": "volupta", - "rsa.misc.hardware_id": "olorinr", - "rsa.misc.log_session_id": "essec", - "rsa.misc.policy_id": "magn", - "rsa.misc.policy_name": "mexe", - "rsa.misc.reference_id": "iameaq", - "rsa.misc.rule_name": "ica", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 1261, - "rsa.misc.version": "1.5718", - "rsa.misc.vsys": "toc", - "rsa.network.alias_host": [ - "itse5466.api.example" - ], - "rsa.network.dinterface": "lo1570", - "rsa.network.network_service": "ctasu", - "rsa.network.sinterface": "eth4425", - "rsa.threat.threat_desc": "dolo", - "rsa.time.duration_time": 54.1, - "rsa.time.event_time": "2018-10-25T09:09:57.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.reputation_num": 142.771, - "rsa.web.web_ref_domain": "quirat", - "rule.name": "ica", - "service.type": "fortinet", - "source.bytes": 622, - "source.geo.country_name": "setquas", - "source.ip": "10.217.209.221", - "source.mac": "01:00:5e:19:ce:4b", - "source.port": 3639, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "internal.example.com", - "url.extension": "gif", - "url.fragment": "iscin", - "url.original": "https://internal.example.com/nonnumqu/isciveli.gif?wri=aute#iscin", - "url.path": "/nonnumqu/isciveli.gif", - "url.query": [ - "eca", - "wri=aute" - ], - "url.scheme": "https", - "user.name": "ciduntut" - }, - { - "@timestamp": "2018-11-09T04:12:32.000Z", - "destination.bytes": 6960, - "destination.ip": "10.180.162.174", - "destination.port": 7186, - "event.action": "accept", - "event.code": "taedic", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=umtot date=2018-11-9 time=2:12:32 log_id=eumiurer devid=inv devname=eac logid=rainc type=tinculp subtype=uianon level=high vd=corpori srcip=10.232.131.132 srcport=581 srcintf=enp0s6255 dstip=10.232.246.98 dstport=1854 dstintf=enp0s1526 poluuid=ivelit sessionid=itlabori proto=icmp action=accept policyid=oide trandisp=magni duration=72.993000 sentbyte=5817 rcvdbyte=6960 devtype=rrorsit osname=emipsu osversion=1.6603 mastersrcmac=temUte srcmac=01:00:5e:fe:be:28 crscore=134.746000 craction=hitec crlevel=sci eventtype=luptatev user=ruredo service=iamquis hostname=dquiac6194.api.lan profile=nidolo reqtype=runtmoll url=https://www5.example.org/utlabo/scip.html?voluptas=inv#upta direction=external msg=ors method=olupta cat=raincidu catdesc=nisi device_id=uipexea log_id=taedic pri=high userfrom=ugi adminprof=urExcep timezone=CET main_type=usant trigger_policy=uidolore sub_type=litse severity_level=ugitse policy=utfugi src=10.241.140.241 src_port=1813 dst=10.180.162.174 dst_port=7186 http_method=ido http_url=atnu http_host=ssuscipi http_agent=evita http_session_id=tconsect signature_subclass=lpaquiof signature_id=532 srccountry=lors content_switch_name=Finibus server_pool_name=totam false_positive_mitigation=idat user_name=nulapar monitor_status=git http_refer=https://www5.example.com/odtem/tati.jpg?ueips=umqu#ntexpli http_version=siuta dev_id=porincid threat_weight=itame history_threat_weight=inv threat_level=remaper ftp_mode=quaUteni ftp_cmd=evelit cipher_suite=oluptat msg_id=ditem", - "event.timezone": "CET", - "fileset.name": "fortimanager", - "host.name": "dquiac6194.api.lan", - "http.request.referrer": "https://www5.example.com/odtem/tati.jpg?ueips=umqu#ntexpli", - "input.type": "log", - "log.level": "high", - "log.offset": 77550, - "network.bytes": 12777, - "network.direction": "external", - "observer.egress.interface.name": "enp0s1526", - "observer.ingress.interface.name": "enp0s6255", - "observer.product": "FortiManager", - "observer.serial_number": "uipexea", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.6603", - "related.hosts": [ - "dquiac6194.api.lan", - "eac", - "ssuscipi" - ], - "related.ip": [ - "10.180.162.174", - "10.241.140.241" - ], - "related.user": [ - "nulapar" - ], - "rsa.internal.event_desc": "ors", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "luptatev", - "rsa.misc.OS": "emipsu", - "rsa.misc.action": [ - "accept", - "ido" - ], - "rsa.misc.category": "litse", - "rsa.misc.client": "evita", - "rsa.misc.context": "magni", - "rsa.misc.event_source": "eac", - "rsa.misc.event_type": "tinculp", - "rsa.misc.fcatnum": "raincidu", - "rsa.misc.filter": "nisi", - "rsa.misc.hardware_id": "uipexea", - "rsa.misc.log_session_id": "tconsect", - "rsa.misc.policy_id": "oide", - "rsa.misc.policy_name": "utfugi", - "rsa.misc.reference_id": "taedic", - "rsa.misc.rule_name": "nidolo", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 532, - "rsa.misc.version": "1.6603", - "rsa.misc.vsys": "corpori", - "rsa.network.alias_host": [ - "dquiac6194.api.lan" - ], - "rsa.network.dinterface": "enp0s1526", - "rsa.network.network_service": "iamquis", - "rsa.network.sinterface": "enp0s6255", - "rsa.threat.threat_desc": "remaper", - "rsa.time.duration_time": 72.993, - "rsa.time.event_time": "2018-11-09T04:12:32.000Z", - "rsa.time.timezone": "CET", - "rsa.web.reputation_num": 134.746, - "rsa.web.web_ref_domain": "ssuscipi", - "rule.name": "nidolo", - "service.type": "fortinet", - "source.bytes": 5817, - "source.geo.country_name": "lors", - "source.ip": "10.241.140.241", - "source.mac": "01:00:5e:fe:be:28", - "source.port": 1813, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www5.example.org", - "url.extension": "html", - "url.fragment": "upta", - "url.original": "https://www5.example.org/utlabo/scip.html?voluptas=inv#upta", - "url.path": "/utlabo/scip.html", - "url.query": [ - "atnu", - "voluptas=inv" - ], - "url.scheme": "https", - "user.name": "nulapar" - }, - { - "@timestamp": "2018-11-23T11:15:06.000Z", - "destination.bytes": 5783, - "destination.ip": "10.62.140.108", - "destination.port": 1225, - "event.action": "deny", - "event.code": "enimip", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2018-11-23 time=9:15:06 devname=oditautf device_id=asiarc log_id=eddoei type=generic subtype=iatqu pri=very-high devid=itessec devname=dat logid=tdol type=emul subtype=ariatu level=high vd=reseo srcip=10.53.70.207 srcport=1793 srcintf=lo2279 dstip=10.73.140.61 dstport=2114 dstintf=lo368 poluuid=stlabo sessionid=atema proto=1 action=deny policyid=orporiss trandisp=iamq duration=128.426000 sentbyte=1800 rcvdbyte=5783 devtype=pis osname=riosam osversion=1.2052 mastersrcmac=iosam srcmac=01:00:5e:21:d3:0a crscore=65.426000 craction=archi crlevel=nes eventtype=atvolupt user=umwritt service=uae hostname=amco1592.mail.host profile=aaliq reqtype=olupta url=https://internal.example.com/ssusci/snostrud.txt?dolo=siutaliq#obeata direction=outbound msg=tame method=olo cat=vel catdesc=equamn device_id=tempora log_id=enimip pri=very-high userfrom=saqua adminprof=aperia timezone=OMST main_type=tNeque trigger_policy=metcon sub_type=enimadmi severity_level=orem policy=corpor src=10.110.99.222 src_port=5685 dst=10.62.140.108 dst_port=1225 http_method=ssitasp http_url=ptat http_host=asp http_agent=uatDui http_session_id=nofdeFin signature_subclass=unde signature_id=3979 srccountry=seruntm content_switch_name=aera server_pool_name=scive false_positive_mitigation=ngelit user_name=moenimi monitor_status=mqu http_refer=https://mail.example.org/ueipsaq/upid.gif?utla=emUte#tisund http_version=tutla dev_id=isund threat_weight=atemU history_threat_weight=uidex threat_level=uptate ftp_mode=eac ftp_cmd=peria cipher_suite=amaliq msg_id=ium", - "event.timezone": "OMST", - "fileset.name": "fortimanager", - "host.name": "amco1592.mail.host", - "http.request.referrer": "https://mail.example.org/ueipsaq/upid.gif?utla=emUte#tisund", - "input.type": "log", - "log.level": "very-high", - "log.offset": 79056, - "network.bytes": 7583, - "network.direction": "outbound", - "observer.egress.interface.name": "lo368", - "observer.ingress.interface.name": "lo2279", - "observer.product": "FortiManager", - "observer.serial_number": "tempora", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.2052", - "related.hosts": [ - "amco1592.mail.host", - "asp", - "dat" - ], - "related.ip": [ - "10.110.99.222", - "10.62.140.108" - ], - "related.user": [ - "moenimi" - ], - "rsa.internal.event_desc": "tame", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "atvolupt", - "rsa.misc.OS": "riosam", - "rsa.misc.action": [ - "deny", - "ssitasp" - ], - "rsa.misc.category": "enimadmi", - "rsa.misc.client": "uatDui", - "rsa.misc.context": "iamq", - "rsa.misc.event_source": "dat", - "rsa.misc.event_type": "emul", - "rsa.misc.fcatnum": "vel", - "rsa.misc.filter": "equamn", - "rsa.misc.hardware_id": "tempora", - "rsa.misc.log_session_id": "nofdeFin", - "rsa.misc.policy_id": "orporiss", - "rsa.misc.policy_name": "corpor", - "rsa.misc.reference_id": "enimip", - "rsa.misc.rule_name": "aaliq", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 3979, - "rsa.misc.version": "1.2052", - "rsa.misc.vsys": "reseo", - "rsa.network.alias_host": [ - "amco1592.mail.host" - ], - "rsa.network.dinterface": "lo368", - "rsa.network.network_service": "uae", - "rsa.network.sinterface": "lo2279", - "rsa.threat.threat_desc": "uptate", - "rsa.time.duration_time": 128.426, - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.reputation_num": 65.426, - "rsa.web.web_ref_domain": "asp", - "rule.name": "aaliq", - "service.type": "fortinet", - "source.bytes": 1800, - "source.geo.country_name": "seruntm", - "source.ip": "10.110.99.222", - "source.mac": "01:00:5e:21:d3:0a", - "source.port": 5685, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "internal.example.com", - "url.extension": "txt", - "url.fragment": "obeata", - "url.original": "https://internal.example.com/ssusci/snostrud.txt?dolo=siutaliq#obeata", - "url.path": "/ssusci/snostrud.txt", - "url.query": [ - "dolo=siutaliq", - "ptat" - ], - "url.scheme": "https", - "user.name": "moenimi" - }, - { - "@timestamp": "2018-12-07T06:17:40.000Z", - "destination.bytes": 7612, - "destination.ip": "10.53.50.77", - "destination.port": 5330, - "event.action": "accept", - "event.code": "etdo", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ptate date=2018-12-7 time=4:17:40 log_id=tenatu devid=emo devname=ratio logid=maperia type=Maloru subtype=sumquia level=low vd=imadmini srcip=10.237.5.219 srcport=3828 srcintf=eth4604 dstip=10.197.99.150 dstport=3877 dstintf=enp0s7388 poluuid=odo sessionid=itseddoe proto=prm action=accept policyid=itinvo trandisp=uiavol duration=96.864000 sentbyte=2685 rcvdbyte=7612 devtype=urmagn osname=ficiade osversion=1.2691 mastersrcmac=equ srcmac=01:00:5e:f5:2a:24 crscore=163.671000 craction=mipsum crlevel=dolor eventtype=cupidata user=niamquis service=lapariat hostname=dicta7226.mail.example profile=eddoei reqtype=cingel url=https://api.example.com/temporai/umw.jpg?mveniamq=litsed#ptasn direction=unknown msg=loinv method=umd cat=madmi catdesc=xercit device_id=avolup log_id=etdo pri=medium userfrom=veleum adminprof=emUten timezone=CT main_type=proiden trigger_policy=cita sub_type=iac severity_level=ntincul policy=mnisiste src=10.4.244.115 src_port=4588 dst=10.53.50.77 dst_port=5330 http_method=lorem http_url=lore http_host=orroqu http_agent=tlabo http_session_id=iameaque signature_subclass=sautemve signature_id=6466 srccountry=emoe content_switch_name=ameiusmo server_pool_name=ntiumtot false_positive_mitigation=aeab user_name=idolo monitor_status=temac http_refer=https://api.example.net/ollita/idolore.html?illu=iut#asiarc http_version=imidest dev_id=mwri threat_weight=orsi history_threat_weight=ritinvol threat_level=rporiss ftp_mode=atu ftp_cmd=ddo cipher_suite=veli msg_id=ata", - "event.timezone": "CT", - "fileset.name": "fortimanager", - "host.name": "dicta7226.mail.example", - "http.request.referrer": "https://api.example.net/ollita/idolore.html?illu=iut#asiarc", - "input.type": "log", - "log.level": "medium", - "log.offset": 80595, - "network.bytes": 10297, - "network.direction": "unknown", - "observer.egress.interface.name": "enp0s7388", - "observer.ingress.interface.name": "eth4604", - "observer.product": "FortiManager", - "observer.serial_number": "avolup", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.2691", - "related.hosts": [ - "dicta7226.mail.example", - "orroqu", - "ratio" - ], - "related.ip": [ - "10.4.244.115", - "10.53.50.77" - ], - "related.user": [ - "idolo" - ], - "rsa.internal.event_desc": "loinv", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "cupidata", - "rsa.misc.OS": "ficiade", - "rsa.misc.action": [ - "accept", - "lorem" - ], - "rsa.misc.category": "iac", - "rsa.misc.client": "tlabo", - "rsa.misc.context": "uiavol", - "rsa.misc.event_source": "ratio", - "rsa.misc.event_type": "Maloru", - "rsa.misc.fcatnum": "madmi", - "rsa.misc.filter": "xercit", - "rsa.misc.hardware_id": "avolup", - "rsa.misc.log_session_id": "iameaque", - "rsa.misc.policy_id": "itinvo", - "rsa.misc.policy_name": "mnisiste", - "rsa.misc.reference_id": "etdo", - "rsa.misc.rule_name": "eddoei", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 6466, - "rsa.misc.version": "1.2691", - "rsa.misc.vsys": "imadmini", - "rsa.network.alias_host": [ - "dicta7226.mail.example" - ], - "rsa.network.dinterface": "enp0s7388", - "rsa.network.network_service": "lapariat", - "rsa.network.sinterface": "eth4604", - "rsa.threat.threat_desc": "rporiss", - "rsa.time.duration_time": 96.864, - "rsa.time.event_time": "2018-12-07T06:17:40.000Z", - "rsa.time.timezone": "CT", - "rsa.web.reputation_num": 163.671, - "rsa.web.web_ref_domain": "orroqu", - "rule.name": "eddoei", - "service.type": "fortinet", - "source.bytes": 2685, - "source.geo.country_name": "emoe", - "source.ip": "10.4.244.115", - "source.mac": "01:00:5e:f5:2a:24", - "source.port": 4588, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.com", - "url.extension": "jpg", - "url.fragment": "ptasn", - "url.original": "https://api.example.com/temporai/umw.jpg?mveniamq=litsed#ptasn", - "url.path": "/temporai/umw.jpg", - "url.query": [ - "lore", - "mveniamq=litsed" - ], - "url.scheme": "https", - "user.name": "idolo" - }, - { - "@timestamp": "2018-12-21T13:20:14.000Z", - "destination.bytes": 3484, - "destination.geo.country_name": "litess", - "destination.ip": "10.236.211.111", - "destination.nat.ip": "10.120.212.78", - "destination.nat.port": 119, - "destination.port": 1801, - "event.action": "allow", - "event.code": "atur", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=lor dtime=2018-12-21 23:20:14.972538723 +0000 UTC devid=ori devname=eleumiu vd=amre date=2018-12-21 time=11:20:14 logid=atur type=untex subtype=Except level=very-high eventtime=econse logtime=iac srcip=10.221.100.157 srcport=865 srcintf=lo4518 srcintfrole=mqu dstip=10.236.211.111 dstport=1801 dstintf=enp0s454 dstintfrole=rauto poluuid=pteursi sessionid=iquamqua proto=tcp action=allow policyid=psumqui policytype=equeporr crscore=32.741000 craction=cusanti crlevel=doloreme appcat=nsecte service=reprehen srccountry=taspe dstcountry=litess trandisp=enimadm tranip=10.120.212.78 tranport=119 duration=17.257000 sentbyte=4752 rcvdbyte=3484 sentpkt=ntsuntin app=ectetur", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 82093, - "network.bytes": 8236, - "observer.egress.interface.name": "enp0s454", - "observer.ingress.interface.name": "lo4518", - "observer.product": "FortiManager", - "observer.serial_number": "ori", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "eleumiu" - ], - "related.ip": [ - "10.120.212.78", - "10.221.100.157", - "10.236.211.111" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "Except", - "rsa.misc.context": "enimadm", - "rsa.misc.event_source": "eleumiu", - "rsa.misc.event_type": "untex", - "rsa.misc.hardware_id": "ori", - "rsa.misc.log_session_id": "iquamqua", - "rsa.misc.obj_name": "ectetur", - "rsa.misc.policy_id": "psumqui", - "rsa.misc.reference_id": "atur", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "amre", - "rsa.network.dinterface": "enp0s454", - "rsa.network.network_service": "reprehen", - "rsa.network.sinterface": "lo4518", - "rsa.time.duration_time": 17.257, - "rsa.time.event_time": "2018-12-21T13:20:14.000Z", - "rsa.time.event_time_str": "econse", - "rsa.web.reputation_num": 32.741, - "service.type": "fortinet", - "source.bytes": 4752, - "source.geo.country_name": "taspe", - "source.ip": "10.221.100.157", - "source.port": 865, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "destination.bytes": 5326, - "destination.ip": "10.208.231.15", - "destination.port": 412, - "event.action": "accept", - "event.code": "redol", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2019-1-5 time=6:22:49 logver=intocca devid=vel devname=xeacom logid=orum type=voluptat subtype=nsequ level=medium vd=tenimad srcip=10.140.215.210 srcport=7229 srcintf=lo568 dstip=10.71.213.217 dstport=7475 dstintf=eth5820 poluuid=lup sessionid=reetdolo proto=HOPOPT action=accept policyid=dolor trandisp=emagnam duration=154.150000 sentbyte=2336 rcvdbyte=5326 devtype=emull osname=enatuser osversion=1.3052 mastersrcmac=ectob srcmac=01:00:5e:4a:5d:af crscore=9.013000 craction=niamqu crlevel=nrep eventtype=lauda user=ionevo service=busB hostname=pidatatn2627.www.localdomain profile=eritinvo reqtype=quiav url=https://mail.example.org/ngelit/dipiscin.gif?serro=ctet#umiurere direction=inbound msg=ciun method=ssitaspe cat=deomnis catdesc=ulamcol device_id=onn log_id=redol pri=medium userfrom=utlabore adminprof=nci timezone=OMST main_type=liqu trigger_policy=ectetura sub_type=aUte severity_level=untNeque policy=roi src=10.210.82.202 src_port=2749 dst=10.208.231.15 dst_port=412 http_method=rios http_url=diconseq http_host=tenima http_agent=iusm http_session_id=mveleumi signature_subclass=equinesc signature_id=5076 srccountry=mfugiatq content_switch_name=dmini server_pool_name=emveleu false_positive_mitigation=loree user_name=riatur monitor_status=tempor http_refer=https://internal.example.com/spiciati/tise.gif?ctas=rvelillu#qua http_version=ciat dev_id=iamq threat_weight=porin history_threat_weight=yCi threat_level=arc ftp_mode=santium ftp_cmd=numquame cipher_suite=umfugi msg_id=amestqui", - "event.timezone": "OMST", - "fileset.name": "fortimanager", - "host.name": "pidatatn2627.www.localdomain", - "http.request.referrer": "https://internal.example.com/spiciati/tise.gif?ctas=rvelillu#qua", - "input.type": "log", - "log.level": "medium", - "log.offset": 82769, - "network.bytes": 7662, - "network.direction": "inbound", - "observer.egress.interface.name": "eth5820", - "observer.ingress.interface.name": "lo568", - "observer.product": "FortiManager", - "observer.serial_number": "onn", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.3052", - "related.hosts": [ - "pidatatn2627.www.localdomain", - "tenima", - "xeacom" - ], - "related.ip": [ - "10.208.231.15", - "10.210.82.202" - ], - "related.user": [ - "riatur" - ], - "rsa.internal.event_desc": "ciun", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "lauda", - "rsa.misc.OS": "enatuser", - "rsa.misc.action": [ - "accept", - "rios" - ], - "rsa.misc.category": "aUte", - "rsa.misc.client": "iusm", - "rsa.misc.context": "emagnam", - "rsa.misc.event_source": "xeacom", - "rsa.misc.event_type": "voluptat", - "rsa.misc.fcatnum": "deomnis", - "rsa.misc.filter": "ulamcol", - "rsa.misc.hardware_id": "onn", - "rsa.misc.log_session_id": "mveleumi", - "rsa.misc.policy_id": "dolor", - "rsa.misc.policy_name": "roi", - "rsa.misc.reference_id": "redol", - "rsa.misc.rule_name": "eritinvo", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 5076, - "rsa.misc.version": "1.3052", - "rsa.misc.vsys": "tenimad", - "rsa.network.alias_host": [ - "pidatatn2627.www.localdomain" - ], - "rsa.network.dinterface": "eth5820", - "rsa.network.network_service": "busB", - "rsa.network.sinterface": "lo568", - "rsa.threat.threat_desc": "arc", - "rsa.time.duration_time": 154.15, - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.reputation_num": 9.013, - "rsa.web.web_ref_domain": "tenima", - "rule.name": "eritinvo", - "service.type": "fortinet", - "source.bytes": 2336, - "source.geo.country_name": "mfugiatq", - "source.ip": "10.210.82.202", - "source.mac": "01:00:5e:4a:5d:af", - "source.port": 2749, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "mail.example.org", - "url.extension": "gif", - "url.fragment": "umiurere", - "url.original": "https://mail.example.org/ngelit/dipiscin.gif?serro=ctet#umiurere", - "url.path": "/ngelit/dipiscin.gif", - "url.query": [ - "diconseq", - "serro=ctet" - ], - "url.scheme": "https", - "user.name": "riatur" - }, - { - "@timestamp": "2019-01-19T03:25:23.000Z", - "destination.bytes": 220, - "destination.geo.country_name": "aqueipsa", - "destination.ip": "10.123.59.69", - "destination.nat.ip": "10.53.251.202", - "destination.nat.port": 7501, - "destination.port": 5399, - "event.action": "accept", - "event.code": "edd", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=tesseq devname=\"nimides\" devid=\"iusmodte\" vd=involup date=2019-1-19 time=1:25:23 logid=edd type=dolorsi subtype=mcolabo level=low eventtime=exe logtime=nve srcip=10.226.255.3 srcport=5449 srcintf=lo7680 srcintfrole=iaconseq dstip=10.123.59.69 dstport=5399 dstintf=lo5835 dstintfrole=ntsunti poluuid=bor sessionid=uisnos proto=6 action=accept policyid=tation policytype=seddoe crscore=21.625000 craction=eur crlevel=ntmolli appcat=pitl service=nulap srccountry=ipexe dstcountry=aqueipsa trandisp=psum tranip=10.53.251.202 tranport=7501 duration=131.751000 sentbyte=6876 rcvdbyte=220 sentpkt=ugi app=ptate", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 84276, - "network.bytes": 7096, - "observer.egress.interface.name": "lo5835", - "observer.ingress.interface.name": "lo7680", - "observer.product": "FortiManager", - "observer.serial_number": "iusmodte", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "nimides" - ], - "related.ip": [ - "10.123.59.69", - "10.226.255.3", - "10.53.251.202" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "mcolabo", - "rsa.misc.context": "psum", - "rsa.misc.event_source": "nimides", - "rsa.misc.event_type": "dolorsi", - "rsa.misc.hardware_id": "iusmodte", - "rsa.misc.log_session_id": "uisnos", - "rsa.misc.obj_name": "ptate", - "rsa.misc.policy_id": "tation", - "rsa.misc.reference_id": "edd", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "involup", - "rsa.network.dinterface": "lo5835", - "rsa.network.network_service": "nulap", - "rsa.network.sinterface": "lo7680", - "rsa.time.duration_time": 131.751, - "rsa.time.event_time": "2019-01-19T03:25:23.000Z", - "rsa.time.event_time_str": "exe", - "rsa.web.reputation_num": 21.625, - "service.type": "fortinet", - "source.bytes": 6876, - "source.geo.country_name": "ipexe", - "source.ip": "10.226.255.3", - "source.port": 5449, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-02-02T10:27:57.000Z", - "destination.bytes": 7868, - "destination.geo.country_name": "persp", - "destination.ip": "10.212.56.26", - "destination.nat.ip": "10.29.141.252", - "destination.nat.port": 2077, - "destination.port": 3032, - "event.action": "block", - "event.code": "uide", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=rur devname=\"edut\" devid=\"sitametc\" vd=iarchite date=2019-2-2 time=8:27:57 logid=uide type=iono subtype=aboris level=very-high eventtime=imidest logtime=ulamc srcip=10.3.85.176 srcport=318 srcintf=eth2546 srcintfrole=uptateve dstip=10.212.56.26 dstport=3032 dstintf=enp0s2353 dstintfrole=loin poluuid=cinge sessionid=tutl proto=udp action=block policyid=nesciu policytype=ueip crscore=162.484000 craction=orumSe crlevel=mSe appcat=itame service=quaturv srccountry=lumdolor dstcountry=persp trandisp=leumi tranip=10.29.141.252 tranport=2077 duration=106.468000 sentbyte=3472 rcvdbyte=7868 sentpkt=orum app=reseos", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 84887, - "network.bytes": 11340, - "observer.egress.interface.name": "enp0s2353", - "observer.ingress.interface.name": "eth2546", - "observer.product": "FortiManager", - "observer.serial_number": "sitametc", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "edut" - ], - "related.ip": [ - "10.212.56.26", - "10.29.141.252", - "10.3.85.176" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "aboris", - "rsa.misc.context": "leumi", - "rsa.misc.event_source": "edut", - "rsa.misc.event_type": "iono", - "rsa.misc.hardware_id": "sitametc", - "rsa.misc.log_session_id": "tutl", - "rsa.misc.obj_name": "reseos", - "rsa.misc.policy_id": "nesciu", - "rsa.misc.reference_id": "uide", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "iarchite", - "rsa.network.dinterface": "enp0s2353", - "rsa.network.network_service": "quaturv", - "rsa.network.sinterface": "eth2546", - "rsa.time.duration_time": 106.468, - "rsa.time.event_time": "2019-02-02T10:27:57.000Z", - "rsa.time.event_time_str": "imidest", - "rsa.web.reputation_num": 162.484, - "service.type": "fortinet", - "source.bytes": 3472, - "source.geo.country_name": "lumdolor", - "source.ip": "10.3.85.176", - "source.port": 318, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "destination.bytes": 4658, - "destination.ip": "10.236.175.163", - "destination.port": 6562, - "event.action": "cancel", - "event.code": "oeni", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2019-2-17 time=3:30:32 devname=orem device_id=seq log_id=cus type=generic subtype=tnulap pri=very-high devid=psamvolu devname=inculp logid=eni type=tcupid subtype=ercita level=very-high vd=olorinr srcip=10.110.166.81 srcport=7354 srcintf=lo3023 dstip=10.181.48.82 dstport=1225 dstintf=eth7640 poluuid=conseq sessionid=Nemoen proto=6 action=cancel policyid=umquamei trandisp=nih duration=55.527000 sentbyte=3449 rcvdbyte=4658 devtype=quia osname=eabill osversion=1.95 mastersrcmac=oeiusmo srcmac=01:00:5e:82:ca:1b crscore=67.321000 craction=rumwrit crlevel=tionofd eventtype=ill user=orroquis service=laparia hostname=emveleu4029.api.local profile=tconse reqtype=ntsun url=https://internal.example.net/inc/riaturEx.htm?mnihilm=itinvo#lestia direction=external msg=metcons method=lumd cat=liquaUt catdesc=snos device_id=maccusan log_id=oeni pri=medium userfrom=tiaecon adminprof=tincu timezone=GMT-07:00 main_type=untmoll trigger_policy=par sub_type=idatatno severity_level=tfugit policy=tla src=10.126.11.186 src_port=589 dst=10.236.175.163 dst_port=6562 http_method=atemqui http_url=icaboN http_host=Utenimad http_agent=res http_session_id=officiad signature_subclass=nsectet signature_id=3977 srccountry=temU content_switch_name=ciduntut server_pool_name=ionofd false_positive_mitigation=etqua user_name=udantiu monitor_status=tium http_refer=https://internal.example.net/leumiu/iuta.html?tfugit=rorsitv#tiaecons http_version=uamestq dev_id=aliquaUt threat_weight=boreet history_threat_weight=mquam threat_level=volu ftp_mode=nof ftp_cmd=boNe cipher_suite=ovolu msg_id=cid", - "event.timezone": "GMT-07:00", - "fileset.name": "fortimanager", - "host.name": "emveleu4029.api.local", - "http.request.referrer": "https://internal.example.net/leumiu/iuta.html?tfugit=rorsitv#tiaecons", - "input.type": "log", - "log.level": "medium", - "log.offset": 85506, - "network.bytes": 8107, - "network.direction": "external", - "observer.egress.interface.name": "eth7640", - "observer.ingress.interface.name": "lo3023", - "observer.product": "FortiManager", - "observer.serial_number": "maccusan", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.95", - "related.hosts": [ - "Utenimad", - "emveleu4029.api.local", - "inculp" - ], - "related.ip": [ - "10.126.11.186", - "10.236.175.163" - ], - "related.user": [ - "udantiu" - ], - "rsa.internal.event_desc": "metcons", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "ill", - "rsa.misc.OS": "eabill", - "rsa.misc.action": [ - "atemqui", - "cancel" - ], - "rsa.misc.category": "idatatno", - "rsa.misc.client": "res", - "rsa.misc.context": "nih", - "rsa.misc.event_source": "inculp", - "rsa.misc.event_type": "tcupid", - "rsa.misc.fcatnum": "liquaUt", - "rsa.misc.filter": "snos", - "rsa.misc.hardware_id": "maccusan", - "rsa.misc.log_session_id": "officiad", - "rsa.misc.policy_id": "umquamei", - "rsa.misc.policy_name": "tla", - "rsa.misc.reference_id": "oeni", - "rsa.misc.rule_name": "tconse", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 3977, - "rsa.misc.version": "1.95", - "rsa.misc.vsys": "olorinr", - "rsa.network.alias_host": [ - "emveleu4029.api.local" - ], - "rsa.network.dinterface": "eth7640", - "rsa.network.network_service": "laparia", - "rsa.network.sinterface": "lo3023", - "rsa.threat.threat_desc": "volu", - "rsa.time.duration_time": 55.527, - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.reputation_num": 67.321, - "rsa.web.web_ref_domain": "Utenimad", - "rule.name": "tconse", - "service.type": "fortinet", - "source.bytes": 3449, - "source.geo.country_name": "temU", - "source.ip": "10.126.11.186", - "source.mac": "01:00:5e:82:ca:1b", - "source.port": 589, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "internal.example.net", - "url.extension": "htm", - "url.fragment": "lestia", - "url.original": "https://internal.example.net/inc/riaturEx.htm?mnihilm=itinvo#lestia", - "url.path": "/inc/riaturEx.htm", - "url.query": [ - "icaboN", - "mnihilm=itinvo" - ], - "url.scheme": "https", - "user.name": "udantiu" - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "destination.bytes": 3339, - "destination.geo.country_name": "paq", - "destination.ip": "10.11.150.136", - "destination.nat.ip": "10.83.98.220", - "destination.nat.port": 1300, - "destination.port": 3615, - "event.action": "cancel", - "event.code": "oeius", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=equamn devname=\"mes\" devid=\"itatio\" vd=ssecillu date=2019-3-3 time=10:33:06 logid=oeius type=itin subtype=nostrud level=medium eventtime=byCic logtime=mnisiuta srcip=10.171.60.173 srcport=209 srcintf=lo1917 srcintfrole=usmodite dstip=10.11.150.136 dstport=3615 dstintf=lo5438 dstintfrole=olup poluuid=urQuis sessionid=iquip proto=1 action=cancel policyid=untutl policytype=elite crscore=176.898000 craction=ipsaq crlevel=spici appcat=nvolupt service=antiu srccountry=llumquid dstcountry=paq trandisp=olup tranip=10.83.98.220 tranport=1300 duration=73.115000 sentbyte=5812 rcvdbyte=3339 sentpkt=amquis app=umtotam", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 87085, - "network.bytes": 9151, - "observer.egress.interface.name": "lo5438", - "observer.ingress.interface.name": "lo1917", - "observer.product": "FortiManager", - "observer.serial_number": "itatio", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "mes" - ], - "related.ip": [ - "10.11.150.136", - "10.171.60.173", - "10.83.98.220" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "nostrud", - "rsa.misc.context": "olup", - "rsa.misc.event_source": "mes", - "rsa.misc.event_type": "itin", - "rsa.misc.hardware_id": "itatio", - "rsa.misc.log_session_id": "iquip", - "rsa.misc.obj_name": "umtotam", - "rsa.misc.policy_id": "untutl", - "rsa.misc.reference_id": "oeius", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "ssecillu", - "rsa.network.dinterface": "lo5438", - "rsa.network.network_service": "antiu", - "rsa.network.sinterface": "lo1917", - "rsa.time.duration_time": 73.115, - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "rsa.time.event_time_str": "byCic", - "rsa.web.reputation_num": 176.898, - "service.type": "fortinet", - "source.bytes": 5812, - "source.geo.country_name": "llumquid", - "source.ip": "10.171.60.173", - "source.port": 209, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-03-17T07:35:40.000Z", - "destination.bytes": 3946, - "destination.geo.country_name": "ipisc", - "destination.ip": "10.74.88.209", - "destination.nat.ip": "10.92.3.166", - "destination.nat.port": 5777, - "destination.port": 740, - "event.action": "deny", - "event.code": "uiavo", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=pitlabo dtime=2019-03-17 17:35:40.532538723 +0000 UTC devid=lorsita devname=datatno vd=emac date=2019-3-17 time=5:35:40 logid=uiavo type=tdo subtype=ratvolup level=high eventtime=dolo logtime=quioffic srcip=10.238.49.73 srcport=1554 srcintf=enp0s11 srcintfrole=riatu dstip=10.74.88.209 dstport=740 dstintf=lo5287 dstintfrole=quep poluuid=tfugitse sessionid=oenimips proto=udp action=deny policyid=mdo policytype=map crscore=148.871000 craction=osqui crlevel=consequ appcat=catcupid service=velitess srccountry=sit dstcountry=ipisc trandisp=onsectet tranip=10.92.3.166 tranport=5777 duration=156.314000 sentbyte=715 rcvdbyte=3946 sentpkt=itvol app=dolo", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 87705, - "network.bytes": 4661, - "observer.egress.interface.name": "lo5287", - "observer.ingress.interface.name": "enp0s11", - "observer.product": "FortiManager", - "observer.serial_number": "lorsita", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "datatno" - ], - "related.ip": [ - "10.238.49.73", - "10.74.88.209", - "10.92.3.166" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "ratvolup", - "rsa.misc.context": "onsectet", - "rsa.misc.event_source": "datatno", - "rsa.misc.event_type": "tdo", - "rsa.misc.hardware_id": "lorsita", - "rsa.misc.log_session_id": "oenimips", - "rsa.misc.obj_name": "dolo", - "rsa.misc.policy_id": "mdo", - "rsa.misc.reference_id": "uiavo", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "emac", - "rsa.network.dinterface": "lo5287", - "rsa.network.network_service": "velitess", - "rsa.network.sinterface": "enp0s11", - "rsa.time.duration_time": 156.314, - "rsa.time.event_time": "2019-03-17T07:35:40.000Z", - "rsa.time.event_time_str": "dolo", - "rsa.web.reputation_num": 148.871, - "service.type": "fortinet", - "source.bytes": 715, - "source.geo.country_name": "sit", - "source.ip": "10.238.49.73", - "source.port": 1554, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-01T14:38:14.000Z", - "destination.bytes": 4329, - "destination.geo.country_name": "quelaud", - "destination.ip": "10.187.107.47", - "destination.nat.ip": "10.84.200.121", - "destination.nat.port": 3226, - "destination.port": 288, - "event.action": "allow", - "event.code": "periamea", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=amquisno dtime=2019-04-01 00:38:14.792538723 +0000 UTC devid=uptasnul devname=ptate vd=deri date=2019-4-1 time=12:38:14 logid=periamea type=equatD subtype=quaturQu level=high eventtime=rpo logtime=inr srcip=10.119.248.36 srcport=2450 srcintf=enp0s1885 srcintfrole=ten dstip=10.187.107.47 dstport=288 dstintf=lo2445 dstintfrole=fugia poluuid=psa sessionid=iset proto=prm action=allow policyid=ecte policytype=ionemull crscore=84.399000 craction=sBo crlevel=nimides appcat=iurere service=edolorin srccountry=labor dstcountry=quelaud trandisp=ira tranip=10.84.200.121 tranport=3226 duration=128.212000 sentbyte=2150 rcvdbyte=4329 sentpkt=nos app=icta", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 88364, - "network.bytes": 6479, - "observer.egress.interface.name": "lo2445", - "observer.ingress.interface.name": "enp0s1885", - "observer.product": "FortiManager", - "observer.serial_number": "uptasnul", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "ptate" - ], - "related.ip": [ - "10.119.248.36", - "10.187.107.47", - "10.84.200.121" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "quaturQu", - "rsa.misc.context": "ira", - "rsa.misc.event_source": "ptate", - "rsa.misc.event_type": "equatD", - "rsa.misc.hardware_id": "uptasnul", - "rsa.misc.log_session_id": "iset", - "rsa.misc.obj_name": "icta", - "rsa.misc.policy_id": "ecte", - "rsa.misc.reference_id": "periamea", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "deri", - "rsa.network.dinterface": "lo2445", - "rsa.network.network_service": "edolorin", - "rsa.network.sinterface": "enp0s1885", - "rsa.time.duration_time": 128.212, - "rsa.time.event_time": "2019-04-01T14:38:14.000Z", - "rsa.time.event_time_str": "rpo", - "rsa.web.reputation_num": 84.399, - "service.type": "fortinet", - "source.bytes": 2150, - "source.geo.country_name": "labor", - "source.ip": "10.119.248.36", - "source.port": 2450, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "destination.bytes": 1057, - "destination.geo.country_name": "nvolupt", - "destination.ip": "10.135.213.17", - "destination.nat.ip": "10.30.239.222", - "destination.nat.port": 1546, - "destination.port": 6427, - "event.action": "block", - "event.code": "atae", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=itseddo devname=\"tasu\" devid=\"mquae\" vd=CSedu date=2019-4-15 time=7:40:49 logid=atae type=aeconseq subtype=boNemo level=very-high eventtime=nemulla logtime=tmollit srcip=10.167.128.229 srcport=4052 srcintf=eth1833 srcintfrole=ciatisu dstip=10.135.213.17 dstport=6427 dstintf=eth6468 dstintfrole=ritat poluuid=dipi sessionid=asnulapa proto=prm action=block policyid=onsequa policytype=seddoe crscore=23.021000 craction=Bonorume crlevel=emeumfu appcat=tla service=uidexea srccountry=odtem dstcountry=nvolupt trandisp=stia tranip=10.30.239.222 tranport=1546 duration=10.721000 sentbyte=6561 rcvdbyte=1057 sentpkt=itectobe app=rroq", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 89019, - "network.bytes": 7618, - "observer.egress.interface.name": "eth6468", - "observer.ingress.interface.name": "eth1833", - "observer.product": "FortiManager", - "observer.serial_number": "mquae", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "tasu" - ], - "related.ip": [ - "10.135.213.17", - "10.167.128.229", - "10.30.239.222" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "boNemo", - "rsa.misc.context": "stia", - "rsa.misc.event_source": "tasu", - "rsa.misc.event_type": "aeconseq", - "rsa.misc.hardware_id": "mquae", - "rsa.misc.log_session_id": "asnulapa", - "rsa.misc.obj_name": "rroq", - "rsa.misc.policy_id": "onsequa", - "rsa.misc.reference_id": "atae", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "CSedu", - "rsa.network.dinterface": "eth6468", - "rsa.network.network_service": "uidexea", - "rsa.network.sinterface": "eth1833", - "rsa.time.duration_time": 10.721, - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "rsa.time.event_time_str": "nemulla", - "rsa.web.reputation_num": 23.021, - "service.type": "fortinet", - "source.bytes": 6561, - "source.geo.country_name": "odtem", - "source.ip": "10.167.128.229", - "source.port": 4052, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-04-29T04:43:23.000Z", - "destination.bytes": 1150, - "destination.ip": "10.115.166.48", - "destination.port": 7491, - "event.action": "block", - "event.code": "tiumt", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2019-4-29 time=2:43:23 devname=uunt device_id=pic log_id=unt type=generic subtype=emUt pri=medium devid=pernatur devname=orem logid=enbyCice type=velil subtype=nsequat level=low vd=duntutl srcip=10.238.172.76 srcport=156 srcintf=lo1215 dstip=10.201.119.253 dstport=2230 dstintf=enp0s7218 poluuid=nimad sessionid=tionu proto=udp action=block policyid=emagna trandisp=quin duration=68.078000 sentbyte=2527 rcvdbyte=1150 devtype=consequ osname=min osversion=1.1028 mastersrcmac=edicta srcmac=01:00:5e:cd:6c:ed crscore=163.905000 craction=itinvolu crlevel=urerepre eventtype=iumdol user=serror service=uptass hostname=rspic5637.api.local profile=itatise reqtype=iut url=https://api.example.net/ita/esse.txt?amquis=iatquovo#rExce direction=inbound msg=uraut method=reetdol cat=umtotam catdesc=itaedi device_id=ant log_id=tiumt pri=very-high userfrom=ratvolup adminprof=iamqu timezone=CT main_type=quaturve trigger_policy=tsunti sub_type=ero severity_level=iusmodi policy=acomm src=10.169.133.219 src_port=92 dst=10.115.166.48 dst_port=7491 http_method=eleumiur http_url=ididun http_host=edi http_agent=gia http_session_id=uaturQui signature_subclass=emi signature_id=5446 srccountry=etM content_switch_name=eve server_pool_name=iru false_positive_mitigation=ipit user_name=emq monitor_status=elitsedq http_refer=https://www.example.net/onsequat/emagnaa.gif?itse=tco#nnumqua http_version=erit dev_id=lorsitam threat_weight=emagnama history_threat_weight=ute threat_level=Excep ftp_mode=utpersp ftp_cmd=rehe cipher_suite=tiumt msg_id=ulamc", - "event.timezone": "CT", - "fileset.name": "fortimanager", - "host.name": "rspic5637.api.local", - "http.request.referrer": "https://www.example.net/onsequat/emagnaa.gif?itse=tco#nnumqua", - "input.type": "log", - "log.level": "very-high", - "log.offset": 89654, - "network.bytes": 3677, - "network.direction": "inbound", - "observer.egress.interface.name": "enp0s7218", - "observer.ingress.interface.name": "lo1215", - "observer.product": "FortiManager", - "observer.serial_number": "ant", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.1028", - "related.hosts": [ - "edi", - "orem", - "rspic5637.api.local" - ], - "related.ip": [ - "10.115.166.48", - "10.169.133.219" - ], - "related.user": [ - "emq" - ], - "rsa.internal.event_desc": "uraut", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "iumdol", - "rsa.misc.OS": "min", - "rsa.misc.action": [ - "block", - "eleumiur" - ], - "rsa.misc.category": "ero", - "rsa.misc.client": "gia", - "rsa.misc.context": "quin", - "rsa.misc.event_source": "orem", - "rsa.misc.event_type": "velil", - "rsa.misc.fcatnum": "umtotam", - "rsa.misc.filter": "itaedi", - "rsa.misc.hardware_id": "ant", - "rsa.misc.log_session_id": "uaturQui", - "rsa.misc.policy_id": "emagna", - "rsa.misc.policy_name": "acomm", - "rsa.misc.reference_id": "tiumt", - "rsa.misc.rule_name": "itatise", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 5446, - "rsa.misc.version": "1.1028", - "rsa.misc.vsys": "duntutl", - "rsa.network.alias_host": [ - "rspic5637.api.local" - ], - "rsa.network.dinterface": "enp0s7218", - "rsa.network.network_service": "uptass", - "rsa.network.sinterface": "lo1215", - "rsa.threat.threat_desc": "Excep", - "rsa.time.duration_time": 68.078, - "rsa.time.event_time": "2019-04-29T04:43:23.000Z", - "rsa.time.timezone": "CT", - "rsa.web.reputation_num": 163.905, - "rsa.web.web_ref_domain": "edi", - "rule.name": "itatise", - "service.type": "fortinet", - "source.bytes": 2527, - "source.geo.country_name": "etM", - "source.ip": "10.169.133.219", - "source.mac": "01:00:5e:cd:6c:ed", - "source.port": 92, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.net", - "url.extension": "txt", - "url.fragment": "rExce", - "url.original": "https://api.example.net/ita/esse.txt?amquis=iatquovo#rExce", - "url.path": "/ita/esse.txt", - "url.query": [ - "amquis=iatquovo", - "ididun" - ], - "url.scheme": "https", - "user.name": "emq" - }, - { - "@timestamp": "2019-05-13T11:45:57.000Z", - "destination.bytes": 4374, - "destination.ip": "10.226.39.82", - "destination.port": 3950, - "event.action": "block", - "event.code": "isetqu", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=runt date=2019-5-13 time=9:45:57 log_id=emipsu devid=icaboNem devname=Except logid=fugits type=maliquam subtype=mav level=very-high vd=ecill srcip=10.36.122.89 srcport=5040 srcintf=lo3887 dstip=10.206.76.186 dstport=741 dstintf=eth2435 poluuid=atisund sessionid=enbyCic proto=1 action=block policyid=nrepre trandisp=uisautem duration=145.667000 sentbyte=4247 rcvdbyte=4374 devtype=tio osname=aconseq osversion=1.4195 mastersrcmac=enatuser srcmac=01:00:5e:1a:9c:4f crscore=124.786000 craction=rcitatio crlevel=olore eventtype=ntexp user=atio service=roquisqu hostname=rror3870.www5.local profile=volu reqtype=occ url=https://www5.example.net/culpa/isun.txt?cola=tura#rat direction=internal msg=sect method=ing cat=nis catdesc=aboreet device_id=ulapari log_id=isetqu pri=high userfrom=ons adminprof=Sedu timezone=CEST main_type=icaboNem trigger_policy=enderi sub_type=edqu severity_level=cita policy=uidolore src=10.146.255.40 src_port=3003 dst=10.226.39.82 dst_port=3950 http_method=oluptate http_url=orumwrit http_host=aconse http_agent=ites http_session_id=abori signature_subclass=dolor signature_id=3543 srccountry=amqu content_switch_name=uamest server_pool_name=ntoccaec false_positive_mitigation=ites user_name=caecatcu monitor_status=iof http_refer=https://api.example.com/uae/mdolo.txt?aute=itatise#utpers http_version=equunt dev_id=Nemo threat_weight=itse history_threat_weight=lillumq threat_level=idid ftp_mode=uis ftp_cmd=velits cipher_suite=mmodo msg_id=rporissu", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "rror3870.www5.local", - "http.request.referrer": "https://api.example.com/uae/mdolo.txt?aute=itatise#utpers", - "input.type": "log", - "log.level": "high", - "log.offset": 91192, - "network.bytes": 8621, - "network.direction": "internal", - "observer.egress.interface.name": "eth2435", - "observer.ingress.interface.name": "lo3887", - "observer.product": "FortiManager", - "observer.serial_number": "ulapari", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4195", - "related.hosts": [ - "Except", - "aconse", - "rror3870.www5.local" - ], - "related.ip": [ - "10.146.255.40", - "10.226.39.82" - ], - "related.user": [ - "caecatcu" - ], - "rsa.internal.event_desc": "sect", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "ntexp", - "rsa.misc.OS": "aconseq", - "rsa.misc.action": [ - "block", - "oluptate" - ], - "rsa.misc.category": "edqu", - "rsa.misc.client": "ites", - "rsa.misc.context": "uisautem", - "rsa.misc.event_source": "Except", - "rsa.misc.event_type": "maliquam", - "rsa.misc.fcatnum": "nis", - "rsa.misc.filter": "aboreet", - "rsa.misc.hardware_id": "ulapari", - "rsa.misc.log_session_id": "abori", - "rsa.misc.policy_id": "nrepre", - "rsa.misc.policy_name": "uidolore", - "rsa.misc.reference_id": "isetqu", - "rsa.misc.rule_name": "volu", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 3543, - "rsa.misc.version": "1.4195", - "rsa.misc.vsys": "ecill", - "rsa.network.alias_host": [ - "rror3870.www5.local" - ], - "rsa.network.dinterface": "eth2435", - "rsa.network.network_service": "roquisqu", - "rsa.network.sinterface": "lo3887", - "rsa.threat.threat_desc": "idid", - "rsa.time.duration_time": 145.667, - "rsa.time.event_time": "2019-05-13T11:45:57.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 124.786, - "rsa.web.web_ref_domain": "aconse", - "rule.name": "volu", - "service.type": "fortinet", - "source.bytes": 4247, - "source.geo.country_name": "amqu", - "source.ip": "10.146.255.40", - "source.mac": "01:00:5e:1a:9c:4f", - "source.port": 3003, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www5.example.net", - "url.extension": "txt", - "url.fragment": "rat", - "url.original": "https://www5.example.net/culpa/isun.txt?cola=tura#rat", - "url.path": "/culpa/isun.txt", - "url.query": [ - "cola=tura", - "orumwrit" - ], - "url.scheme": "https", - "user.name": "caecatcu" - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "destination.bytes": 2380, - "destination.geo.country_name": "tani", - "destination.ip": "10.224.212.88", - "destination.nat.ip": "10.35.240.70", - "destination.nat.port": 2587, - "destination.port": 5404, - "event.action": "deny", - "event.code": "ddoei", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=utemvel dtime=2019-05-28 04:48:31.832538723 +0000 UTC devid=exercita devname=emaperi vd=aspernat date=2019-5-28 time=4:48:31 logid=ddoei type=nihi subtype=umfu level=low eventtime=ehen logtime=olupt srcip=10.53.82.96 srcport=7088 srcintf=eth297 srcintfrole=nostru dstip=10.224.212.88 dstport=5404 dstintf=lo4266 dstintfrole=natuserr poluuid=ipi sessionid=eniamqui proto=icmp action=deny policyid=urvelill policytype=iadese crscore=174.116000 craction=isundeo crlevel=emq appcat=rehender service=uat srccountry=apa dstcountry=tani trandisp=per tranip=10.35.240.70 tranport=2587 duration=62.993000 sentbyte=7102 rcvdbyte=2380 sentpkt=ataevit app=chi", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 92675, - "network.bytes": 9482, - "observer.egress.interface.name": "lo4266", - "observer.ingress.interface.name": "eth297", - "observer.product": "FortiManager", - "observer.serial_number": "exercita", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "emaperi" - ], - "related.ip": [ - "10.224.212.88", - "10.35.240.70", - "10.53.82.96" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "umfu", - "rsa.misc.context": "per", - "rsa.misc.event_source": "emaperi", - "rsa.misc.event_type": "nihi", - "rsa.misc.hardware_id": "exercita", - "rsa.misc.log_session_id": "eniamqui", - "rsa.misc.obj_name": "chi", - "rsa.misc.policy_id": "urvelill", - "rsa.misc.reference_id": "ddoei", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "aspernat", - "rsa.network.dinterface": "lo4266", - "rsa.network.network_service": "uat", - "rsa.network.sinterface": "eth297", - "rsa.time.duration_time": 62.993, - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "rsa.time.event_time_str": "ehen", - "rsa.web.reputation_num": 174.116, - "service.type": "fortinet", - "source.bytes": 7102, - "source.geo.country_name": "apa", - "source.ip": "10.53.82.96", - "source.port": 7088, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "destination.bytes": 475, - "destination.geo.country_name": "aevitae", - "destination.ip": "10.233.128.7", - "destination.nat.ip": "10.66.149.234", - "destination.nat.port": 6236, - "destination.port": 2455, - "event.action": "cancel", - "event.code": "uei", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=lorsita devname=\"oeius\" devid=\"trud\" vd=aco date=2019-6-11 time=11:51:06 logid=uei type=tsedqu subtype=agni level=very-high eventtime=rsint logtime=catc srcip=10.186.253.240 srcport=6982 srcintf=enp0s5429 srcintfrole=end dstip=10.233.128.7 dstport=2455 dstintf=eth5315 dstintfrole=onnumq poluuid=lupt sessionid=ugiatq proto=prm action=cancel policyid=utla policytype=iosamn crscore=164.209000 craction=tor crlevel=toreve appcat=ita service=orain srccountry=tnulap dstcountry=aevitae trandisp=aqu tranip=10.66.149.234 tranport=6236 duration=128.130000 sentbyte=6344 rcvdbyte=475 sentpkt=loremeu app=tate", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 93330, - "network.bytes": 6819, - "observer.egress.interface.name": "eth5315", - "observer.ingress.interface.name": "enp0s5429", - "observer.product": "FortiManager", - "observer.serial_number": "trud", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "oeius" - ], - "related.ip": [ - "10.186.253.240", - "10.233.128.7", - "10.66.149.234" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "agni", - "rsa.misc.context": "aqu", - "rsa.misc.event_source": "oeius", - "rsa.misc.event_type": "tsedqu", - "rsa.misc.hardware_id": "trud", - "rsa.misc.log_session_id": "ugiatq", - "rsa.misc.obj_name": "tate", - "rsa.misc.policy_id": "utla", - "rsa.misc.reference_id": "uei", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "aco", - "rsa.network.dinterface": "eth5315", - "rsa.network.network_service": "orain", - "rsa.network.sinterface": "enp0s5429", - "rsa.time.duration_time": 128.13, - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "rsa.time.event_time_str": "rsint", - "rsa.web.reputation_num": 164.209, - "service.type": "fortinet", - "source.bytes": 6344, - "source.geo.country_name": "tnulap", - "source.ip": "10.186.253.240", - "source.port": 6982, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-06-25T08:53:40.000Z", - "destination.bytes": 1387, - "destination.geo.country_name": "avolupt", - "destination.ip": "10.46.11.114", - "destination.nat.ip": "10.173.140.201", - "destination.nat.port": 6422, - "destination.port": 4009, - "event.action": "cancel", - "event.code": "rsintocc", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=elaud dtime=2019-06-25 18:53:40.352538723 +0000 UTC devid=iad devname=irat vd=upi date=2019-6-25 time=6:53:40 logid=rsintocc type=itanim subtype=sinto level=medium eventtime=lore logtime=eabi srcip=10.227.133.134 srcport=3351 srcintf=enp0s4820 srcintfrole=erspici dstip=10.46.11.114 dstport=4009 dstintf=enp0s7159 dstintfrole=oremq poluuid=rspiciat sessionid=ptas proto=tcp action=cancel policyid=ore policytype=dut crscore=128.554000 craction=remape crlevel=itectob appcat=sedquia service=mquisnos srccountry=mwritt dstcountry=avolupt trandisp=lumdolo tranip=10.173.140.201 tranport=6422 duration=133.394000 sentbyte=7249 rcvdbyte=1387 sentpkt=str app=sit", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 93940, - "network.bytes": 8636, - "observer.egress.interface.name": "enp0s7159", - "observer.ingress.interface.name": "enp0s4820", - "observer.product": "FortiManager", - "observer.serial_number": "iad", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "irat" - ], - "related.ip": [ - "10.173.140.201", - "10.227.133.134", - "10.46.11.114" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "sinto", - "rsa.misc.context": "lumdolo", - "rsa.misc.event_source": "irat", - "rsa.misc.event_type": "itanim", - "rsa.misc.hardware_id": "iad", - "rsa.misc.log_session_id": "ptas", - "rsa.misc.obj_name": "sit", - "rsa.misc.policy_id": "ore", - "rsa.misc.reference_id": "rsintocc", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "upi", - "rsa.network.dinterface": "enp0s7159", - "rsa.network.network_service": "mquisnos", - "rsa.network.sinterface": "enp0s4820", - "rsa.time.duration_time": 133.394, - "rsa.time.event_time": "2019-06-25T08:53:40.000Z", - "rsa.time.event_time_str": "lore", - "rsa.web.reputation_num": 128.554, - "service.type": "fortinet", - "source.bytes": 7249, - "source.geo.country_name": "mwritt", - "source.ip": "10.227.133.134", - "source.port": 3351, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "destination.bytes": 1751, - "destination.geo.country_name": "ari", - "destination.ip": "10.69.130.207", - "destination.nat.ip": "10.170.236.123", - "destination.nat.port": 4346, - "destination.port": 1191, - "event.action": "cancel", - "event.code": "sciveli", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=elillum dtime=2019-07-10 01:56:14.612538723 +0000 UTC devid=isnos devname=emp vd=eos date=2019-7-10 time=1:56:14 logid=sciveli type=Bonoru subtype=rai level=low eventtime=omm logtime=cepteu srcip=10.205.18.11 srcport=6737 srcintf=eth4759 srcintfrole=ueipsa dstip=10.69.130.207 dstport=1191 dstintf=eth614 dstintfrole=architec poluuid=era sessionid=ptatem proto=udp action=cancel policyid=isi policytype=ssecill crscore=44.181000 craction=exerci crlevel=ptatemUt appcat=temqu service=ofd srccountry=nimvenia dstcountry=ari trandisp=eir tranip=10.170.236.123 tranport=4346 duration=150.036000 sentbyte=6877 rcvdbyte=1751 sentpkt=orum app=tation", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "low", - "log.offset": 94604, - "network.bytes": 8628, - "observer.egress.interface.name": "eth614", - "observer.ingress.interface.name": "eth4759", - "observer.product": "FortiManager", - "observer.serial_number": "isnos", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "emp" - ], - "related.ip": [ - "10.170.236.123", - "10.205.18.11", - "10.69.130.207" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "rai", - "rsa.misc.context": "eir", - "rsa.misc.event_source": "emp", - "rsa.misc.event_type": "Bonoru", - "rsa.misc.hardware_id": "isnos", - "rsa.misc.log_session_id": "ptatem", - "rsa.misc.obj_name": "tation", - "rsa.misc.policy_id": "isi", - "rsa.misc.reference_id": "sciveli", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "eos", - "rsa.network.dinterface": "eth614", - "rsa.network.network_service": "ofd", - "rsa.network.sinterface": "eth4759", - "rsa.time.duration_time": 150.036, - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "rsa.time.event_time_str": "omm", - "rsa.web.reputation_num": 44.181, - "service.type": "fortinet", - "source.bytes": 6877, - "source.geo.country_name": "nimvenia", - "source.ip": "10.205.18.11", - "source.port": 6737, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "destination.bytes": 1742, - "destination.ip": "10.124.34.251", - "destination.port": 3899, - "event.action": "deny", - "event.code": "mrem", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=repre date=2019-7-24 time=8:58:48 log_id=ore devid=ionemu devname=rehend logid=uiad type=tasu subtype=sciun level=high vd=taev srcip=10.196.124.206 srcport=7569 srcintf=enp0s2181 dstip=10.186.88.110 dstport=4203 dstintf=enp0s5497 poluuid=asnulapa sessionid=hende proto=0 action=deny policyid=ntmolli trandisp=uto duration=178.755000 sentbyte=6361 rcvdbyte=1742 devtype=ipsu osname=taedi osversion=1.2682 mastersrcmac=acom srcmac=01:00:5e:99:e3:a5 crscore=175.099000 craction=Cic crlevel=aturveli eventtype=lica user=Exc service=amvolup hostname=velill3821.mail.invalid profile=asnulap reqtype=usmodte url=https://example.com/loremag/mqu.gif?bore=lapari#aborios direction=external msg=lorem method=mnisiuta cat=quiadolo catdesc=abo device_id=msequine log_id=mrem pri=medium userfrom=atuserr adminprof=nsequatu timezone=ET main_type=uptasnu trigger_policy=atemUt sub_type=iurere severity_level=oident policy=volup src=10.97.254.192 src_port=302 dst=10.124.34.251 dst_port=3899 http_method=imide http_url=sequa http_host=ine http_agent=ollitan http_session_id=eacomm signature_subclass=onseq signature_id=6250 srccountry=reetd content_switch_name=equamnih server_pool_name=tevelite false_positive_mitigation=sitvolup user_name=epor monitor_status=atatnonp http_refer=https://example.org/elauda/ria.htm?uptatemU=iono#quun http_version=itationu dev_id=eniamqui threat_weight=adolo history_threat_weight=oreetdol threat_level=uinesciu ftp_mode=sciun ftp_cmd=tametc cipher_suite=rExcep msg_id=avolup", - "event.timezone": "ET", - "fileset.name": "fortimanager", - "host.name": "velill3821.mail.invalid", - "http.request.referrer": "https://example.org/elauda/ria.htm?uptatemU=iono#quun", - "input.type": "log", - "log.level": "medium", - "log.offset": 95254, - "network.bytes": 8103, - "network.direction": "external", - "observer.egress.interface.name": "enp0s5497", - "observer.ingress.interface.name": "enp0s2181", - "observer.product": "FortiManager", - "observer.serial_number": "msequine", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.2682", - "related.hosts": [ - "ine", - "rehend", - "velill3821.mail.invalid" - ], - "related.ip": [ - "10.124.34.251", - "10.97.254.192" - ], - "related.user": [ - "epor" - ], - "rsa.internal.event_desc": "lorem", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "lica", - "rsa.misc.OS": "taedi", - "rsa.misc.action": [ - "deny", - "imide" - ], - "rsa.misc.category": "iurere", - "rsa.misc.client": "ollitan", - "rsa.misc.context": "uto", - "rsa.misc.event_source": "rehend", - "rsa.misc.event_type": "tasu", - "rsa.misc.fcatnum": "quiadolo", - "rsa.misc.filter": "abo", - "rsa.misc.hardware_id": "msequine", - "rsa.misc.log_session_id": "eacomm", - "rsa.misc.policy_id": "ntmolli", - "rsa.misc.policy_name": "volup", - "rsa.misc.reference_id": "mrem", - "rsa.misc.rule_name": "asnulap", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 6250, - "rsa.misc.version": "1.2682", - "rsa.misc.vsys": "taev", - "rsa.network.alias_host": [ - "velill3821.mail.invalid" - ], - "rsa.network.dinterface": "enp0s5497", - "rsa.network.network_service": "amvolup", - "rsa.network.sinterface": "enp0s2181", - "rsa.threat.threat_desc": "uinesciu", - "rsa.time.duration_time": 178.755, - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "rsa.time.timezone": "ET", - "rsa.web.reputation_num": 175.099, - "rsa.web.web_ref_domain": "ine", - "rule.name": "asnulap", - "service.type": "fortinet", - "source.bytes": 6361, - "source.geo.country_name": "reetd", - "source.ip": "10.97.254.192", - "source.mac": "01:00:5e:99:e3:a5", - "source.port": 302, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.com", - "url.extension": "gif", - "url.fragment": "aborios", - "url.original": "https://example.com/loremag/mqu.gif?bore=lapari#aborios", - "url.path": "/loremag/mqu.gif", - "url.query": [ - "bore=lapari", - "sequa" - ], - "url.scheme": "https", - "user.name": "epor" - }, - { - "@timestamp": "2019-08-07T06:01:23.000Z", - "destination.bytes": 3936, - "destination.geo.country_name": "tio", - "destination.ip": "10.81.58.91", - "destination.nat.ip": "10.204.98.238", - "destination.nat.port": 3885, - "destination.port": 2247, - "event.action": "cancel", - "event.code": "ngelit", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=olores devname=\"ineavol\" devid=\"bori\" vd=taev date=2019-8-7 time=4:01:23 logid=ngelit type=uidexea subtype=stiaec level=very-high eventtime=quipex logtime=rsintoc srcip=10.9.41.221 srcport=4010 srcintf=eth434 srcintfrole=estlabor dstip=10.81.58.91 dstport=2247 dstintf=lo6072 dstintfrole=udexerci poluuid=onemul sessionid=elaud proto=tcp action=cancel policyid=trudexe policytype=tiumtota crscore=53.861000 craction=ariaturE crlevel=fug appcat=umqu service=umqu srccountry=roide dstcountry=tio trandisp=autem tranip=10.204.98.238 tranport=3885 duration=108.380000 sentbyte=2498 rcvdbyte=3936 sentpkt=aquioffi app=aliqui", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "very-high", - "log.offset": 96754, - "network.bytes": 6434, - "observer.egress.interface.name": "lo6072", - "observer.ingress.interface.name": "eth434", - "observer.product": "FortiManager", - "observer.serial_number": "bori", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "ineavol" - ], - "related.ip": [ - "10.204.98.238", - "10.81.58.91", - "10.9.41.221" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "stiaec", - "rsa.misc.context": "autem", - "rsa.misc.event_source": "ineavol", - "rsa.misc.event_type": "uidexea", - "rsa.misc.hardware_id": "bori", - "rsa.misc.log_session_id": "elaud", - "rsa.misc.obj_name": "aliqui", - "rsa.misc.policy_id": "trudexe", - "rsa.misc.reference_id": "ngelit", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "taev", - "rsa.network.dinterface": "lo6072", - "rsa.network.network_service": "umqu", - "rsa.network.sinterface": "eth434", - "rsa.time.duration_time": 108.38, - "rsa.time.event_time": "2019-08-07T06:01:23.000Z", - "rsa.time.event_time_str": "quipex", - "rsa.web.reputation_num": 53.861, - "service.type": "fortinet", - "source.bytes": 2498, - "source.geo.country_name": "roide", - "source.ip": "10.9.41.221", - "source.port": 4010, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-08-21T13:03:57.000Z", - "event.action": "cancel", - "event.code": "velits", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2019-8-21 time=11:03:57 devname=unti device_id=tena log_id=velits type=event subtype=oditautf pri=high desc=rmagni user=tiono userfrom=utemvele msg=taevi action=cancel adom=xplicabo4308.www.example session_id=tquo", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 97381, - "observer.product": "FortiManager", - "observer.serial_number": "tena", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "unti", - "xplicabo4308.www.example" - ], - "related.user": [ - "tiono" - ], - "rsa.db.index": "taevi", - "rsa.internal.event_desc": "rmagni", - "rsa.internal.messageid": "event_fortinetmgr", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "oditautf", - "rsa.misc.event_source": "unti", - "rsa.misc.event_type": "event", - "rsa.misc.hardware_id": "tena", - "rsa.misc.log_session_id": "tquo", - "rsa.misc.reference_id": "velits", - "rsa.misc.severity": "high", - "rsa.network.domain": "xplicabo4308.www.example", - "rsa.time.event_time": "2019-08-21T13:03:57.000Z", - "server.domain": "xplicabo4308.www.example", - "server.registered_domain": "www.example", - "server.subdomain": "xplicabo4308", - "server.top_level_domain": "example", - "service.type": "fortinet", - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "user.name": "tiono" - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "destination.bytes": 11, - "destination.geo.country_name": "mollita", - "destination.ip": "10.37.120.29", - "destination.nat.ip": "10.212.208.70", - "destination.nat.port": 3237, - "destination.port": 4170, - "event.action": "accept", - "event.code": "eiusmo", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=nrepr devname=\"uipex\" devid=\"alorumw\" vd=nibus date=2019-9-5 time=6:06:31 logid=eiusmo type=rci subtype=seosquir level=medium eventtime=ume logtime=ercitati srcip=10.35.84.125 srcport=341 srcintf=enp0s2388 srcintfrole=pernatu dstip=10.37.120.29 dstport=4170 dstintf=enp0s1127 dstintfrole=tasuntex poluuid=etura sessionid=taedi proto=udp action=accept policyid=quiacon policytype=udexerc crscore=66.169000 craction=undeomni crlevel=ritquiin appcat=taspern service=iadeser srccountry=nos dstcountry=mollita trandisp=eserun tranip=10.212.208.70 tranport=3237 duration=36.569000 sentbyte=5330 rcvdbyte=11 sentpkt=otamr app=eveli", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 97600, - "network.bytes": 5341, - "observer.egress.interface.name": "enp0s1127", - "observer.ingress.interface.name": "enp0s2388", - "observer.product": "FortiManager", - "observer.serial_number": "alorumw", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "uipex" - ], - "related.ip": [ - "10.212.208.70", - "10.35.84.125", - "10.37.120.29" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "seosquir", - "rsa.misc.context": "eserun", - "rsa.misc.event_source": "uipex", - "rsa.misc.event_type": "rci", - "rsa.misc.hardware_id": "alorumw", - "rsa.misc.log_session_id": "taedi", - "rsa.misc.obj_name": "eveli", - "rsa.misc.policy_id": "quiacon", - "rsa.misc.reference_id": "eiusmo", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "nibus", - "rsa.network.dinterface": "enp0s1127", - "rsa.network.network_service": "iadeser", - "rsa.network.sinterface": "enp0s2388", - "rsa.time.duration_time": 36.569, - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "rsa.time.event_time_str": "ume", - "rsa.web.reputation_num": 66.169, - "service.type": "fortinet", - "source.bytes": 5330, - "source.geo.country_name": "nos", - "source.ip": "10.35.84.125", - "source.port": 341, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-09-19T03:09:05.000Z", - "destination.bytes": 7419, - "destination.geo.country_name": "ullamcor", - "destination.ip": "10.199.201.26", - "destination.nat.ip": "10.207.207.106", - "destination.nat.port": 2048, - "destination.port": 3770, - "event.action": "accept", - "event.code": "olor", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=temsequi devname=\"aturvel\" devid=\"elaudan\" vd=alorum date=2019-9-19 time=1:09:05 logid=olor type=inesc subtype=tlaborio level=high eventtime=equeporr logtime=seq srcip=10.143.65.84 srcport=2670 srcintf=enp0s5828 srcintfrole=ddoeiu dstip=10.199.201.26 dstport=3770 dstintf=eth4236 dstintfrole=ore poluuid=onse sessionid=abo proto=1 action=accept policyid=magnaa policytype=tateveli crscore=94.258000 craction=xplica crlevel=dex appcat=rsintocc service=iusmo srccountry=oquisqu dstcountry=ullamcor trandisp=remagn tranip=10.207.207.106 tranport=2048 duration=94.877000 sentbyte=6896 rcvdbyte=7419 sentpkt=tvolup app=ites", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 98232, - "network.bytes": 14315, - "observer.egress.interface.name": "eth4236", - "observer.ingress.interface.name": "enp0s5828", - "observer.product": "FortiManager", - "observer.serial_number": "elaudan", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "aturvel" - ], - "related.ip": [ - "10.143.65.84", - "10.199.201.26", - "10.207.207.106" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "tlaborio", - "rsa.misc.context": "remagn", - "rsa.misc.event_source": "aturvel", - "rsa.misc.event_type": "inesc", - "rsa.misc.hardware_id": "elaudan", - "rsa.misc.log_session_id": "abo", - "rsa.misc.obj_name": "ites", - "rsa.misc.policy_id": "magnaa", - "rsa.misc.reference_id": "olor", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "alorum", - "rsa.network.dinterface": "eth4236", - "rsa.network.network_service": "iusmo", - "rsa.network.sinterface": "enp0s5828", - "rsa.time.duration_time": 94.877, - "rsa.time.event_time": "2019-09-19T03:09:05.000Z", - "rsa.time.event_time_str": "equeporr", - "rsa.web.reputation_num": 94.258, - "service.type": "fortinet", - "source.bytes": 6896, - "source.geo.country_name": "oquisqu", - "source.ip": "10.143.65.84", - "source.port": 2670, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-03T10:11:40.000Z", - "destination.bytes": 3702, - "destination.geo.country_name": "rrorsi", - "destination.ip": "10.163.236.253", - "destination.nat.ip": "10.41.61.88", - "destination.nat.port": 426, - "destination.port": 7768, - "event.action": "block", - "event.code": "lestiaec", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=rExce dtime=2019-10-03 20:11:40.172538723 +0000 UTC devid=rittenby devname=gni vd=ritq date=2019-10-3 time=8:11:40 logid=lestiaec type=rissusci subtype=fdeFi level=high eventtime=ehende logtime=riatu srcip=10.204.27.48 srcport=5998 srcintf=lo7358 srcintfrole=emaperia dstip=10.163.236.253 dstport=7768 dstintf=enp0s2100 dstintfrole=sequatu poluuid=ugi sessionid=oditau proto=1 action=block policyid=mvele policytype=atae crscore=123.668000 craction=imips crlevel=admi appcat=ocons service=tiumdol srccountry=sunt dstcountry=rrorsi trandisp=remagna tranip=10.41.61.88 tranport=426 duration=82.943000 sentbyte=525 rcvdbyte=3702 sentpkt=dolor app=ips", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "high", - "log.offset": 98858, - "network.bytes": 4227, - "observer.egress.interface.name": "enp0s2100", - "observer.ingress.interface.name": "lo7358", - "observer.product": "FortiManager", - "observer.serial_number": "rittenby", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "gni" - ], - "related.ip": [ - "10.163.236.253", - "10.204.27.48", - "10.41.61.88" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "fdeFi", - "rsa.misc.context": "remagna", - "rsa.misc.event_source": "gni", - "rsa.misc.event_type": "rissusci", - "rsa.misc.hardware_id": "rittenby", - "rsa.misc.log_session_id": "oditau", - "rsa.misc.obj_name": "ips", - "rsa.misc.policy_id": "mvele", - "rsa.misc.reference_id": "lestiaec", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "ritq", - "rsa.network.dinterface": "enp0s2100", - "rsa.network.network_service": "tiumdol", - "rsa.network.sinterface": "lo7358", - "rsa.time.duration_time": 82.943, - "rsa.time.event_time": "2019-10-03T10:11:40.000Z", - "rsa.time.event_time_str": "ehende", - "rsa.web.reputation_num": 123.668, - "service.type": "fortinet", - "source.bytes": 525, - "source.geo.country_name": "sunt", - "source.ip": "10.204.27.48", - "source.port": 5998, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "destination.bytes": 5239, - "destination.geo.country_name": "ation", - "destination.ip": "10.185.44.26", - "destination.nat.ip": "10.53.110.111", - "destination.nat.port": 2549, - "destination.port": 3193, - "event.action": "cancel", - "event.code": "amest", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=ipitlab dtime=2019-10-18 03:14:14.432538723 +0000 UTC devid=ipsa devname=dents vd=erepreh date=2019-10-18 time=3:14:14 logid=amest type=dolore subtype=xer level=medium eventtime=onemul logtime=off srcip=10.246.81.164 srcport=3453 srcintf=lo3071 srcintfrole=ende dstip=10.185.44.26 dstport=3193 dstintf=lo7861 dstintfrole=tationul poluuid=tam sessionid=byCic proto=0 action=cancel policyid=cons policytype=serro crscore=5.473000 craction=uiac crlevel=aecatcu appcat=sed service=uisnostr srccountry=aquei dstcountry=ation trandisp=sumqu tranip=10.53.110.111 tranport=2549 duration=141.141000 sentbyte=5569 rcvdbyte=5239 sentpkt=entore app=uaturQ", - "fileset.name": "fortimanager", - "input.type": "log", - "log.level": "medium", - "log.offset": 99513, - "network.bytes": 10808, - "observer.egress.interface.name": "lo7861", - "observer.ingress.interface.name": "lo3071", - "observer.product": "FortiManager", - "observer.serial_number": "ipsa", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "related.hosts": [ - "dents" - ], - "related.ip": [ - "10.185.44.26", - "10.246.81.164", - "10.53.110.111" - ], - "rsa.internal.messageid": "generic_fortinetmgr_1", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "xer", - "rsa.misc.context": "sumqu", - "rsa.misc.event_source": "dents", - "rsa.misc.event_type": "dolore", - "rsa.misc.hardware_id": "ipsa", - "rsa.misc.log_session_id": "byCic", - "rsa.misc.obj_name": "uaturQ", - "rsa.misc.policy_id": "cons", - "rsa.misc.reference_id": "amest", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "erepreh", - "rsa.network.dinterface": "lo7861", - "rsa.network.network_service": "uisnostr", - "rsa.network.sinterface": "lo3071", - "rsa.time.duration_time": 141.141, - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "rsa.time.event_time_str": "onemul", - "rsa.web.reputation_num": 5.473, - "service.type": "fortinet", - "source.bytes": 5569, - "source.geo.country_name": "aquei", - "source.ip": "10.246.81.164", - "source.port": 3453, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ] - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "destination.bytes": 4334, - "destination.ip": "10.146.77.206", - "destination.port": 1554, - "event.action": "allow", - "event.code": "veli", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=xpli date=2019-11-1 time=10:16:48 log_id=quae devid=totamre devname=lam logid=quamestq type=porai subtype=oinve level=medium vd=hender srcip=10.84.154.230 srcport=1335 srcintf=enp0s1127 dstip=10.212.63.179 dstport=6790 dstintf=eth1762 poluuid=eufugia sessionid=temqu proto=3 action=allow policyid=tvolup trandisp=lori duration=130.339000 sentbyte=4763 rcvdbyte=4334 devtype=rnatur osname=etdolo osversion=1.802 mastersrcmac=adipisci srcmac=01:00:5e:7b:68:0e crscore=36.122000 craction=culpaq crlevel=quis eventtype=lupt user=upt service=aboN hostname=cupida6106.www5.local profile=tdo reqtype=asperna url=https://api.example.com/aco/empo.jpg?iumdol=iusm#ido direction=unknown msg=peri method=aspernat cat=seq catdesc=olup device_id=uamqu log_id=veli pri=high userfrom=etco adminprof=nulap timezone=CT main_type=radip trigger_policy=tali sub_type=ntin severity_level=loreseos policy=ites src=10.109.172.90 src_port=2785 dst=10.146.77.206 dst_port=1554 http_method=amnihilm http_url=ipsamv http_host=proid http_agent=xcep http_session_id=udantium signature_subclass=sum signature_id=1723 srccountry=iaecon content_switch_name=euf server_pool_name=norume false_positive_mitigation=hilmo user_name=aquaeab monitor_status=eporr http_refer=https://www.example.com/metMalo/santiu.jpg?icon=enderit#roquisqu http_version=lapa dev_id=imadm threat_weight=giatquo history_threat_weight=oeiusm threat_level=oreeuf ftp_mode=iusmodt ftp_cmd=umwrit cipher_suite=atatn msg_id=uatD", - "event.timezone": "CT", - "fileset.name": "fortimanager", - "host.name": "cupida6106.www5.local", - "http.request.referrer": "https://www.example.com/metMalo/santiu.jpg?icon=enderit#roquisqu", - "input.type": "log", - "log.level": "high", - "log.offset": 100164, - "network.bytes": 9097, - "network.direction": "unknown", - "network.protocol": "GGP", - "observer.egress.interface.name": "eth1762", - "observer.ingress.interface.name": "enp0s1127", - "observer.product": "FortiManager", - "observer.serial_number": "uamqu", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.802", - "related.hosts": [ - "cupida6106.www5.local", - "lam", - "proid" - ], - "related.ip": [ - "10.109.172.90", - "10.146.77.206" - ], - "related.user": [ - "aquaeab" - ], - "rsa.internal.event_desc": "peri", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "lupt", - "rsa.misc.OS": "etdolo", - "rsa.misc.action": [ - "allow", - "amnihilm" - ], - "rsa.misc.category": "ntin", - "rsa.misc.client": "xcep", - "rsa.misc.context": "lori", - "rsa.misc.event_source": "lam", - "rsa.misc.event_type": "porai", - "rsa.misc.fcatnum": "seq", - "rsa.misc.filter": "olup", - "rsa.misc.hardware_id": "uamqu", - "rsa.misc.log_session_id": "udantium", - "rsa.misc.policy_id": "tvolup", - "rsa.misc.policy_name": "ites", - "rsa.misc.reference_id": "veli", - "rsa.misc.rule_name": "tdo", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 1723, - "rsa.misc.version": "1.802", - "rsa.misc.vsys": "hender", - "rsa.network.alias_host": [ - "cupida6106.www5.local" - ], - "rsa.network.dinterface": "eth1762", - "rsa.network.network_service": "aboN", - "rsa.network.sinterface": "enp0s1127", - "rsa.threat.threat_desc": "oreeuf", - "rsa.time.duration_time": 130.339, - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "rsa.time.timezone": "CT", - "rsa.web.reputation_num": 36.122, - "rsa.web.web_ref_domain": "proid", - "rule.name": "tdo", - "service.type": "fortinet", - "source.bytes": 4763, - "source.geo.country_name": "iaecon", - "source.ip": "10.109.172.90", - "source.mac": "01:00:5e:7b:68:0e", - "source.port": 2785, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "api.example.com", - "url.extension": "jpg", - "url.fragment": "ido", - "url.original": "https://api.example.com/aco/empo.jpg?iumdol=iusm#ido", - "url.path": "/aco/empo.jpg", - "url.query": [ - "ipsamv", - "iumdol=iusm" - ], - "url.scheme": "https", - "user.name": "aquaeab" - }, - { - "@timestamp": "2019-11-15T07:19:22.000Z", - "destination.bytes": 6464, - "destination.ip": "10.202.250.141", - "destination.port": 1824, - "event.action": "allow", - "event.code": "ern", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2019-11-15 time=5:19:22 devname=ptate device_id=Nemoe log_id=cupidat type=generic subtype=onsequ pri=high devid=nostr devname=umtotam logid=mqua type=emU subtype=gnido level=very-high vd=plicab srcip=10.8.161.226 srcport=3191 srcintf=eth5256 dstip=10.13.234.237 dstport=3760 dstintf=enp0s1149 poluuid=oeiusmo sessionid=nisi proto=6 action=allow policyid=lupt trandisp=tlaborio duration=18.804000 sentbyte=1061 rcvdbyte=6464 devtype=itan osname=iquidexe osversion=1.2314 mastersrcmac=fugia srcmac=01:00:5e:09:8f:0e crscore=5.320000 craction=onof crlevel=quam eventtype=rure user=ipis service=liqu hostname=unt2122.internal.local profile=orsitame reqtype=tassitas url=https://example.org/uidolor/turve.htm?temporai=uasiarch#ect direction=unknown msg=occae method=lpaqu cat=minimav catdesc=col device_id=riamea log_id=ern pri=low userfrom=odtempo adminprof=con timezone=CEST main_type=offici trigger_policy=uipexe sub_type=ium severity_level=quamqua policy=nsequatu src=10.38.18.72 src_port=3177 dst=10.202.250.141 dst_port=1824 http_method=volu http_url=quatDui http_host=stenat http_agent=liquip http_session_id=eiusmodt signature_subclass=dmi signature_id=4174 srccountry=ameaque content_switch_name=pitlabor server_pool_name=essequa false_positive_mitigation=ini user_name=maperia monitor_status=ovolup http_refer=https://mail.example.com/veniamq/uisno.htm?luptas=omm#eaquei http_version=iveli dev_id=lill threat_weight=voluptat history_threat_weight=aturveli threat_level=incidunt ftp_mode=tatnonp ftp_cmd=abi cipher_suite=nimave msg_id=atu", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "unt2122.internal.local", - "http.request.referrer": "https://mail.example.com/veniamq/uisno.htm?luptas=omm#eaquei", - "input.type": "log", - "log.level": "low", - "log.offset": 101635, - "network.bytes": 7525, - "network.direction": "unknown", - "observer.egress.interface.name": "enp0s1149", - "observer.ingress.interface.name": "eth5256", - "observer.product": "FortiManager", - "observer.serial_number": "riamea", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.2314", - "related.hosts": [ - "stenat", - "umtotam", - "unt2122.internal.local" - ], - "related.ip": [ - "10.202.250.141", - "10.38.18.72" - ], - "related.user": [ - "maperia" - ], - "rsa.internal.event_desc": "occae", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "rure", - "rsa.misc.OS": "iquidexe", - "rsa.misc.action": [ - "allow", - "volu" - ], - "rsa.misc.category": "ium", - "rsa.misc.client": "liquip", - "rsa.misc.context": "tlaborio", - "rsa.misc.event_source": "umtotam", - "rsa.misc.event_type": "emU", - "rsa.misc.fcatnum": "minimav", - "rsa.misc.filter": "col", - "rsa.misc.hardware_id": "riamea", - "rsa.misc.log_session_id": "eiusmodt", - "rsa.misc.policy_id": "lupt", - "rsa.misc.policy_name": "nsequatu", - "rsa.misc.reference_id": "ern", - "rsa.misc.rule_name": "orsitame", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 4174, - "rsa.misc.version": "1.2314", - "rsa.misc.vsys": "plicab", - "rsa.network.alias_host": [ - "unt2122.internal.local" - ], - "rsa.network.dinterface": "enp0s1149", - "rsa.network.network_service": "liqu", - "rsa.network.sinterface": "eth5256", - "rsa.threat.threat_desc": "incidunt", - "rsa.time.duration_time": 18.804, - "rsa.time.event_time": "2019-11-15T07:19:22.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 5.32, - "rsa.web.web_ref_domain": "stenat", - "rule.name": "orsitame", - "service.type": "fortinet", - "source.bytes": 1061, - "source.geo.country_name": "ameaque", - "source.ip": "10.38.18.72", - "source.mac": "01:00:5e:09:8f:0e", - "source.port": 3177, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "ect", - "url.original": "https://example.org/uidolor/turve.htm?temporai=uasiarch#ect", - "url.path": "/uidolor/turve.htm", - "url.query": [ - "quatDui", - "temporai=uasiarch" - ], - "url.scheme": "https", - "user.name": "maperia" - }, - { - "@timestamp": "2019-11-30T14:21:57.000Z", - "destination.bytes": 4714, - "destination.ip": "10.139.144.75", - "destination.port": 5037, - "event.action": "block", - "event.code": "rchitec", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "logver=siu date=2019-11-30 time=12:21:57 log_id=inrepr devid=cero devname=ita logid=xercitat type=meumfug subtype=umt level=very-high vd=laparia srcip=10.195.87.127 srcport=760 srcintf=lo3094 dstip=10.52.118.202 dstport=6556 dstintf=enp0s5751 poluuid=ectobe sessionid=rehender proto=udp action=block policyid=orinc trandisp=tcons duration=52.473000 sentbyte=7043 rcvdbyte=4714 devtype=suscipi osname=imipsam osversion=1.4674 mastersrcmac=hilm srcmac=01:00:5e:73:ca:c1 crscore=54.412000 craction=etd crlevel=erspici eventtype=tfug user=atatno service=sed hostname=luptat2613.internal.localhost profile=olupt reqtype=mipsum url=https://www.example.net/Maloru/lapariat.htm?tlabori=rehender#odtempo direction=inbound msg=alorum method=tmollit cat=bori catdesc=antium device_id=reetdo log_id=rchitec pri=medium userfrom=cipitlab adminprof=venia timezone=CT main_type=quid trigger_policy=mwrit sub_type=cid severity_level=lupt policy=adipisc src=10.182.124.88 src_port=116 dst=10.139.144.75 dst_port=5037 http_method=utodi http_url=isiutali http_host=oremeu http_agent=mquaerat http_session_id=conse signature_subclass=mestq signature_id=5535 srccountry=turQuisa content_switch_name=itasper server_pool_name=cidu false_positive_mitigation=ips user_name=modo monitor_status=ela http_refer=https://example.org/unti/niamqu.html?ris=veli#giatnu http_version=tanimide dev_id=ectetur threat_weight=umexer history_threat_weight=nim threat_level=nisiuta ftp_mode=cipitla ftp_cmd=ditautf cipher_suite=oluptasn msg_id=madmin", - "event.timezone": "CT", - "fileset.name": "fortimanager", - "host.name": "luptat2613.internal.localhost", - "http.request.referrer": "https://example.org/unti/niamqu.html?ris=veli#giatnu", - "input.type": "log", - "log.level": "medium", - "log.offset": 103183, - "network.bytes": 11757, - "network.direction": "inbound", - "observer.egress.interface.name": "enp0s5751", - "observer.ingress.interface.name": "lo3094", - "observer.product": "FortiManager", - "observer.serial_number": "reetdo", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.4674", - "related.hosts": [ - "ita", - "luptat2613.internal.localhost", - "oremeu" - ], - "related.ip": [ - "10.139.144.75", - "10.182.124.88" - ], - "related.user": [ - "modo" - ], - "rsa.internal.event_desc": "alorum", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "tfug", - "rsa.misc.OS": "imipsam", - "rsa.misc.action": [ - "block", - "utodi" - ], - "rsa.misc.category": "cid", - "rsa.misc.client": "mquaerat", - "rsa.misc.context": "tcons", - "rsa.misc.event_source": "ita", - "rsa.misc.event_type": "meumfug", - "rsa.misc.fcatnum": "bori", - "rsa.misc.filter": "antium", - "rsa.misc.hardware_id": "reetdo", - "rsa.misc.log_session_id": "conse", - "rsa.misc.policy_id": "orinc", - "rsa.misc.policy_name": "adipisc", - "rsa.misc.reference_id": "rchitec", - "rsa.misc.rule_name": "olupt", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 5535, - "rsa.misc.version": "1.4674", - "rsa.misc.vsys": "laparia", - "rsa.network.alias_host": [ - "luptat2613.internal.localhost" - ], - "rsa.network.dinterface": "enp0s5751", - "rsa.network.network_service": "sed", - "rsa.network.sinterface": "lo3094", - "rsa.threat.threat_desc": "nisiuta", - "rsa.time.duration_time": 52.473, - "rsa.time.event_time": "2019-11-30T14:21:57.000Z", - "rsa.time.timezone": "CT", - "rsa.web.reputation_num": 54.412, - "rsa.web.web_ref_domain": "oremeu", - "rule.name": "olupt", - "service.type": "fortinet", - "source.bytes": 7043, - "source.geo.country_name": "turQuisa", - "source.ip": "10.182.124.88", - "source.mac": "01:00:5e:73:ca:c1", - "source.port": 116, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www.example.net", - "url.extension": "htm", - "url.fragment": "odtempo", - "url.original": "https://www.example.net/Maloru/lapariat.htm?tlabori=rehender#odtempo", - "url.path": "/Maloru/lapariat.htm", - "url.query": [ - "isiutali", - "tlabori=rehender" - ], - "url.scheme": "https", - "user.name": "modo" - }, - { - "@timestamp": "2019-12-14T09:24:31.000Z", - "destination.bytes": 568, - "destination.ip": "10.188.124.185", - "destination.port": 5837, - "event.action": "block", - "event.code": "tate", - "event.dataset": "fortinet.fortimanager", - "event.module": "fortinet", - "event.original": "date=2019-12-14 time=7:24:31 logver=imadm devid=stla devname=cab logid=orr type=olu subtype=quatDu level=low vd=siste srcip=10.151.47.249 srcport=6697 srcintf=lo5632 dstip=10.155.194.6 dstport=3005 dstintf=enp0s6106 poluuid=quatDu sessionid=deFinib proto=HOPOPT action=block policyid=taedic trandisp=ffi duration=130.219000 sentbyte=2693 rcvdbyte=568 devtype=consequ osname=rumw osversion=1.1386 mastersrcmac=temveleu srcmac=01:00:5e:df:96:27 crscore=104.315000 craction=item crlevel=remipsum eventtype=olupt user=usc service=ernat hostname=neavo4796.internal.domain profile=tatemac reqtype=exer url=https://www5.example.com/xea/ssecill.html?quianonn=quun#one direction=internal msg=riame method=uaUte cat=quae catdesc=utlabor device_id=ameius log_id=tate pri=very-high userfrom=lupta adminprof=atemseq timezone=CEST main_type=amcolab trigger_policy=ectobea sub_type=itsedq severity_level=pta policy=remipsu src=10.35.10.19 src_port=3941 dst=10.188.124.185 dst_port=5837 http_method=tali http_url=tasper http_host=amquisn http_agent=esciu http_session_id=iamea signature_subclass=perspi signature_id=7117 srccountry=emaccus content_switch_name=expl server_pool_name=giat false_positive_mitigation=uscipi user_name=dolo monitor_status=tionevol http_refer=https://internal.example.com/uptatema/dutpers.htm?tion=iumdol#ept http_version=Mal dev_id=tquasia threat_weight=ficiad history_threat_weight=roinBC threat_level=eufu ftp_mode=tio ftp_cmd=equatDu cipher_suite=exea msg_id=tasnulap", - "event.timezone": "CEST", - "fileset.name": "fortimanager", - "host.name": "neavo4796.internal.domain", - "http.request.referrer": "https://internal.example.com/uptatema/dutpers.htm?tion=iumdol#ept", - "input.type": "log", - "log.level": "very-high", - "log.offset": 104692, - "network.bytes": 3261, - "network.direction": "internal", - "observer.egress.interface.name": "enp0s6106", - "observer.ingress.interface.name": "lo5632", - "observer.product": "FortiManager", - "observer.serial_number": "ameius", - "observer.type": "Configuration", - "observer.vendor": "Fortinet", - "observer.version": "1.1386", - "related.hosts": [ - "amquisn", - "cab", - "neavo4796.internal.domain" - ], - "related.ip": [ - "10.188.124.185", - "10.35.10.19" - ], - "related.user": [ - "dolo" - ], - "rsa.internal.event_desc": "riame", - "rsa.internal.messageid": "generic_fortinetmgr", - "rsa.investigations.event_vcat": "olupt", - "rsa.misc.OS": "rumw", - "rsa.misc.action": [ - "block", - "tali" - ], - "rsa.misc.category": "itsedq", - "rsa.misc.client": "esciu", - "rsa.misc.context": "ffi", - "rsa.misc.event_source": "cab", - "rsa.misc.event_type": "olu", - "rsa.misc.fcatnum": "quae", - "rsa.misc.filter": "utlabor", - "rsa.misc.hardware_id": "ameius", - "rsa.misc.log_session_id": "iamea", - "rsa.misc.policy_id": "taedic", - "rsa.misc.policy_name": "remipsu", - "rsa.misc.reference_id": "tate", - "rsa.misc.rule_name": "tatemac", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 7117, - "rsa.misc.version": "1.1386", - "rsa.misc.vsys": "siste", - "rsa.network.alias_host": [ - "neavo4796.internal.domain" - ], - "rsa.network.dinterface": "enp0s6106", - "rsa.network.network_service": "ernat", - "rsa.network.sinterface": "lo5632", - "rsa.threat.threat_desc": "eufu", - "rsa.time.duration_time": 130.219, - "rsa.time.event_time": "2019-12-14T09:24:31.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.reputation_num": 104.315, - "rsa.web.web_ref_domain": "amquisn", - "rule.name": "tatemac", - "service.type": "fortinet", - "source.bytes": 2693, - "source.geo.country_name": "emaccus", - "source.ip": "10.35.10.19", - "source.mac": "01:00:5e:df:96:27", - "source.port": 3941, - "tags": [ - "fortinet.fortimanager", - "forwarded" - ], - "url.domain": "www5.example.com", - "url.extension": "html", - "url.fragment": "one", - "url.original": "https://www5.example.com/xea/ssecill.html?quianonn=quun#one", - "url.path": "/xea/ssecill.html", - "url.query": [ - "quianonn=quun", - "tasper" - ], - "url.scheme": "https", - "user.name": "dolo" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/imperva/README.md b/x-pack/filebeat/module/imperva/README.md deleted file mode 100644 index b19deeb6e09..00000000000 --- a/x-pack/filebeat/module/imperva/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# imperva module - -This is a module for Imperva SecureSphere logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML impervawaf version 117 -at 2020-07-13 17:55:36.873349 +0000 UTC. - diff --git a/x-pack/filebeat/module/imperva/_meta/config.yml b/x-pack/filebeat/module/imperva/_meta/config.yml deleted file mode 100644 index 1ffb9f5d708..00000000000 --- a/x-pack/filebeat/module/imperva/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: imperva - securesphere: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9511 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/imperva/_meta/docs.asciidoc b/x-pack/filebeat/module/imperva/_meta/docs.asciidoc deleted file mode 100644 index 6639cabb9b7..00000000000 --- a/x-pack/filebeat/module/imperva/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: imperva -:has-dashboards: false - -== Imperva module - -deprecated::[8.12.0,"This module is deprecated. See <> for migration options."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Imperva SecureSphere logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: securesphere - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `securesphere` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "impervawaf" device revision 117. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9511` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/imperva/_meta/fields.yml b/x-pack/filebeat/module/imperva/_meta/fields.yml deleted file mode 100644 index ff50b302fab..00000000000 --- a/x-pack/filebeat/module/imperva/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: imperva - title: Imperva SecureSphere - description: > - imperva fields. - fields: diff --git a/x-pack/filebeat/module/imperva/fields.go b/x-pack/filebeat/module/imperva/fields.go deleted file mode 100644 index bea96eb12c0..00000000000 --- a/x-pack/filebeat/module/imperva/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package imperva - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "imperva", asset.ModuleFieldsPri, AssetImperva); err != nil { - panic(err) - } -} - -// AssetImperva returns asset data. -// This is the base64 encoded zlib format compressed contents of module/imperva. -func AssetImperva() string { - return "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" -} diff --git a/x-pack/filebeat/module/imperva/securesphere/_meta/fields.yml b/x-pack/filebeat/module/imperva/securesphere/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/imperva/securesphere/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/imperva/securesphere/config/input.yml b/x-pack/filebeat/module/imperva/securesphere/config/input.yml deleted file mode 100644 index ded2efcd652..00000000000 --- a/x-pack/filebeat/module/imperva/securesphere/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Imperva" - product: "Secure" - type: "WAF" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/imperva/securesphere/config/liblogparser.js - - ${path.home}/module/imperva/securesphere/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/imperva/securesphere/config/liblogparser.js b/x-pack/filebeat/module/imperva/securesphere/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/imperva/securesphere/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{fld79->} %{fld80->} %{fld81->} %{timezone->} %{fld82},updateTime=%{fld8},alertSev=%{severity},group=%{group},ruleName=\"%{rulename}\",evntDesc=\"%{event_description}\",category=%{category},disposition=%{disposition},eventType=%{event_type},proto=%{protocol},srcPort=%{sport},srcIP=%{saddr},dstPort=%{dport},dstIP=%{daddr},policyName=\"%{policyname}\",occurrences=%{event_counter},httpHost=%{web_host},webMethod=%{web_method},url=\"%{url}\",webQuery=\"%{web_query}\",soapAction=%{fld83},resultCode=%{resultcode},sessionID=%{sessionid},username=%{username},addUsername=%{fld84},responseTime=%{fld85},responseSize=%{fld86},direction=%{direction},dbUsername=%{fld87},queryGroup=%{fld88},application=\"%{application}\",srcHost=%{shost},osUsername=%{c_username},schemaName=%{owner},dbName=%{db_name},hdrName=%{fld92},action=\"%{action}\",errormsg=\"%{result}\"", processor_chain([ - dup1, - dup2, - dup3, -])); - -var msg1 = msg("IMPERVA_ALERT:02", part1); - -var part2 = match("MESSAGE#1:IMPERVA_ALERT", "nwparser.payload", "alert#=%{operation_id},event#=%{fld7},createTime=%{fld79},updateTime=%{fld80},alertSev=%{severity},group=%{group},ruleName=\"%{rulename}\",evntDesc=\"%{event_description}\",category=%{category},disposition=%{disposition},eventType=%{event_type},proto=%{protocol},srcPort=%{sport},srcIP=%{saddr},dstPort=%{dport},dstIP=%{daddr},policyName=\"%{policyname}\",occurrences=%{event_counter},httpHost=%{web_host},webMethod=%{web_method},url=\"%{url}\",webQuery=\"%{web_query}\",soapAction=%{fld83},resultCode=%{resultcode},sessionID=%{sessionid},username=%{username},addUsername=%{fld84},responseTime=%{fld85},responseSize=%{fld86},direction=%{direction},dbUsername=%{fld87},queryGroup=%{fld88},application=\"%{application}\",srcHost=%{shost},osUsername=%{c_username},schemaName=%{owner},dbName=%{db_name},hdrName=%{fld92},action=\"%{action}\",errormsg=\"%{result}\"", processor_chain([ - dup1, - dup4, - dup3, -])); - -var msg2 = msg("IMPERVA_ALERT", part2); - -var part3 = match("MESSAGE#2:IMPERVA_ALERT:03", "nwparser.payload", "alert#=%{operation_id},event#=%{fld7},createTime=%{fld78->} %{fld79->} %{fld80->} %{fld81->} %{timezone->} %{fld82},updateTime=%{fld8},alertSev=%{severity},group=%{group},ruleName=\"%{rulename}\",evntDesc=\"%{event_description}\",category=%{category},disposition=%{disposition},eventType=%{event_type},proto=%{protocol},srcPort=%{sport},srcIP=%{saddr},dstPort=%{dport},dstIP=%{daddr},policyName=\"%{policyname}\",occurrences=%{event_counter},httpHost=%{web_host},webMethod=%{web_method},url=\"%{url}\",webQuery=\"%{web_query}\",soapAction=%{fld83},resultCode=%{resultcode},sessionID=%{sessionid},username=%{username},addUsername=%{fld84},responseTime=%{fld85},responseSize=%{fld86},direction=%{direction},dbUsername=%{fld87},queryGroup=%{fld88},application=\"%{application}\",srcHost=%{shost},osUsername=%{c_username},schemaName=%{owner},dbName=%{db_name},hdrName=%{fld92},action=%{action}", processor_chain([ - dup1, - dup2, - dup3, -])); - -var msg3 = msg("IMPERVA_ALERT:03", part3); - -var part4 = match("MESSAGE#3:IMPERVA_ALERT:01", "nwparser.payload", "alert#=%{operation_id},event#=%{fld7},createTime=%{fld79},updateTime=%{fld80},alertSev=%{severity},group=%{group},ruleName=\"%{rulename}\",evntDesc=\"%{event_description}\",category=%{category},disposition=%{disposition},eventType=%{event_type},proto=%{protocol},srcPort=%{sport},srcIP=%{saddr},dstPort=%{dport},dstIP=%{daddr},policyName=\"%{policyname}\",occurrences=%{event_counter},httpHost=%{web_host},webMethod=%{web_method},url=\"%{url}\",webQuery=\"%{web_query}\",soapAction=%{fld83},resultCode=%{resultcode},sessionID=%{sessionid},username=%{username},addUsername=%{fld84},responseTime=%{fld85},responseSize=%{fld86},direction=%{direction},dbUsername=%{fld87},queryGroup=%{fld88},application=\"%{application}\",srcHost=%{shost},osUsername=%{c_username},schemaName=%{owner},dbName=%{db_name},hdrName=%{fld92},action=%{action}", processor_chain([ - dup1, - dup4, - dup3, -])); - -var msg4 = msg("IMPERVA_ALERT:01", part4); - -var part5 = match("MESSAGE#4:IMPERVA_EVENT:01", "nwparser.payload", "event#=%{fld77},createTime=%{fld78->} %{fld79->} %{fld80->} %{fld81->} %{timezone->} %{fld82},eventType=%{event_type},eventSev=%{severity},username=%{username},subsystem=%{fld7},message=\"%{event_description}\"", processor_chain([ - dup5, - dup2, - dup3, -])); - -var msg5 = msg("IMPERVA_EVENT:01", part5); - -var part6 = match("MESSAGE#5:IMPERVA_EVENT", "nwparser.payload", "event#=%{fld77},createTime=%{fld79},eventType=%{event_type},eventSev=%{severity},username=%{username},subsystem=%{fld7},message=\"%{event_description}\"", processor_chain([ - dup5, - dup4, - dup3, -])); - -var msg6 = msg("IMPERVA_EVENT", part6); - -var part7 = match("MESSAGE#6:IMPERVA_DATABASE_ACTIVITY:03", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79->} %{fld22->} %{fld23->} %{fld24},,srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Login,usrGroup=%{group},usrAuth=True,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, - dup3, - dup13, -])); - -var msg7 = msg("IMPERVA_DATABASE_ACTIVITY:03", part7); - -var part8 = match("MESSAGE#7:IMPERVA_DATABASE_ACTIVITY:06", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79->} %{fld22->} %{fld23->} %{fld24},,srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Login,usrGroup=%{group},usrAuth=False,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup14, - dup7, - dup8, - dup9, - dup15, - dup11, - dup12, - dup3, - dup13, -])); - -var msg8 = msg("IMPERVA_DATABASE_ACTIVITY:06", part8); - -var part9 = match("MESSAGE#8:IMPERVA_DATABASE_ACTIVITY:01", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79},srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Login,usrGroup=%{group},usrAuth=True,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup16, - dup3, - dup13, -])); - -var msg9 = msg("IMPERVA_DATABASE_ACTIVITY:01", part9); - -var part10 = match("MESSAGE#9:IMPERVA_DATABASE_ACTIVITY:07", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79},srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Login,usrGroup=%{group},usrAuth=False,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup14, - dup7, - dup8, - dup9, - dup15, - dup11, - dup16, - dup3, - dup13, -])); - -var msg10 = msg("IMPERVA_DATABASE_ACTIVITY:07", part10); - -var part11 = match("MESSAGE#10:IMPERVA_DATABASE_ACTIVITY:04", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79->} %{fld22->} %{fld23->} %{fld24},,srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Logout,usrGroup=%{group},usrAuth=True,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup17, - dup7, - dup18, - dup9, - dup10, - dup19, - dup12, - dup3, - dup13, -])); - -var msg11 = msg("IMPERVA_DATABASE_ACTIVITY:04", part11); - -var part12 = match("MESSAGE#11:IMPERVA_DATABASE_ACTIVITY:08", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79->} %{fld22->} %{fld23->} %{fld24},,srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Logout,usrGroup=%{group},usrAuth=False,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup17, - dup7, - dup18, - dup9, - dup15, - dup19, - dup12, - dup3, - dup13, -])); - -var msg12 = msg("IMPERVA_DATABASE_ACTIVITY:08", part12); - -var part13 = match("MESSAGE#12:IMPERVA_DATABASE_ACTIVITY:02", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79},srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Logout,usrGroup=%{group},usrAuth=True,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup17, - dup7, - dup18, - dup9, - dup10, - dup19, - dup4, - dup3, - dup13, -])); - -var msg13 = msg("IMPERVA_DATABASE_ACTIVITY:02", part13); - -var part14 = match("MESSAGE#13:IMPERVA_DATABASE_ACTIVITY:09", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79},srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Logout,usrGroup=%{group},usrAuth=False,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - dup17, - dup7, - dup18, - dup9, - dup15, - dup19, - dup4, - dup3, - dup13, -])); - -var msg14 = msg("IMPERVA_DATABASE_ACTIVITY:09", part14); - -var part15 = match("MESSAGE#14:IMPERVA_DATABASE_ACTIVITY:10", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79->} %{fld22->} %{fld23->} %{fld24},,srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Query,usrGroup=%{group},usrAuth=True,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86}", processor_chain([ - dup17, - dup20, - dup12, - dup3, - dup13, -])); - -var msg15 = msg("IMPERVA_DATABASE_ACTIVITY:10", part15); - -var part16 = match("MESSAGE#15:IMPERVA_DATABASE_ACTIVITY:11", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79->} %{fld22->} %{fld23->} %{fld24},,srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=Query,usrGroup=%{group},usrAuth=False,application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86}", processor_chain([ - dup17, - dup20, - dup12, - dup3, - dup13, -])); - -var msg16 = msg("IMPERVA_DATABASE_ACTIVITY:11", part16); - -var part17 = match("MESSAGE#16:IMPERVA_DATABASE_ACTIVITY:12", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79->} %{fld22->} %{fld23->} %{fld24},srvGroup=%{group_object},service=%{service},appName=%{fld81},event#=%{fld82},eventType=Login,usrGroup=%{group},usrAuth=%{fld99},application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result}", processor_chain([ - setc("eventcategory","1401050200"), - dup20, - dup12, - dup3, - dup13, -])); - -var msg17 = msg("IMPERVA_DATABASE_ACTIVITY:12", part17); - -var part18 = match("MESSAGE#17:IMPERVA_DATABASE_ACTIVITY", "nwparser.payload", "dstIP=%{daddr},dstPort=%{dport},dbUsername=%{username},srcIP=%{saddr},srcPort=%{sport},creatTime=%{fld79},srvGroup=%{group_object},service=%{fld88},appName=%{fld81},event#=%{fld82},eventType=%{event_type},usrGroup=%{group},usrAuth=%{fld83},application=\"%{application}\",osUsername=%{c_username},srcHost=%{shost},dbName=%{db_name},schemaName=%{owner},bindVar=%{fld86},sqlError=%{result},respSize=%{dclass_counter1},respTime=%{duration},affRows=%{fld87},action=\"%{action}\",rawQuery=\"%{info}\"", processor_chain([ - setc("eventcategory","1206000000"), - dup4, - dup3, - dup13, -])); - -var msg18 = msg("IMPERVA_DATABASE_ACTIVITY", part18); - -var select2 = linear_select([ - msg1, - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, - msg18, -]); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "Imperva": select2, - }), -]); diff --git a/x-pack/filebeat/module/imperva/securesphere/ingest/pipeline.yml b/x-pack/filebeat/module/imperva/securesphere/ingest/pipeline.yml deleted file mode 100644 index e37b497a0ef..00000000000 --- a/x-pack/filebeat/module/imperva/securesphere/ingest/pipeline.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -description: Pipeline for Imperva SecureSphere - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/imperva/securesphere/manifest.yml b/x-pack/filebeat/module/imperva/securesphere/manifest.yml deleted file mode 100644 index b9313395043..00000000000 --- a/x-pack/filebeat/module/imperva/securesphere/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["imperva.securesphere", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9531 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/imperva/securesphere/test/generated.log b/x-pack/filebeat/module/imperva/securesphere/test/generated.log deleted file mode 100644 index fe6e7cfdfcc..00000000000 --- a/x-pack/filebeat/module/imperva/securesphere/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -%IMPERVA-Imperva,dstIP=10.70.155.35,dstPort=892,dbUsername=tatno,srcIP=10.81.122.126,srcPort=4141,creatTime=29 January 2016 06:09:59,srvGroup=uam,service=untutl,appName=rad,event#=taliqu,eventType=Login,usrGroup=ommod,usrAuth=True,application="scivel",osUsername=aqui,srcHost=radipis5408.mail.local,dbName=enatuse,schemaName=magn,bindVar=equuntu,sqlError=failure,respSize=5910,respTime=10.347000,affRows=sum,action="cancel",rawQuery="sit" -%IMPERVA-Imperva,event#=nimadmin,createTime=2016-02-12 13:12:33,eventType=erep,eventSev=low,username=temq,subsystem=ugiatqu,message="eacomm" -%IMPERVA-Imperva,dstIP=10.58.116.231,dstPort=996,dbUsername=qua,srcIP=10.159.182.171,srcPort=3947,creatTime=2016-02-26 20:15:08,srvGroup=apariat,service=mol,appName=pteursi,event#=onse,eventType=rumet,usrGroup=oll,usrAuth=erc,application="taliqu",osUsername=temUten,srcHost=ccusan7572.api.home,dbName=aveniam,schemaName=uradi,bindVar=nimadmin,sqlError=failure,respSize=3626,respTime=79.328000,affRows=ender,action="accept",rawQuery="ehenderi" -%IMPERVA-Imperva,dstIP=10.232.27.250,dstPort=7838,dbUsername=mquidol,srcIP=10.18.124.28,srcPort=7668,creatTime=12 March 2016 03:17:42,srvGroup=rsitamet,service=lupt,appName=xea,event#=qua,eventType=Login,usrGroup=luptatev,usrAuth=False,application="admi",osUsername=modocons,srcHost=elaudant5931.internal.invalid,dbName=lores,schemaName=lapariat,bindVar=eddoei,sqlError=failure,respSize=6564,respTime=87.496000,affRows=nimadmin,action="cancel",rawQuery="xercitat" -%IMPERVA-Imperva,alert#=ationemu,event#=ice,createTime=2016-03-26 10:20:16,updateTime=estiae,alertSev=high,group=laborum,ruleName="tionof",evntDesc="snostrud",category=nama,disposition=quisnos,eventType=ite,proto=icmp,srcPort=2707,srcIP=10.6.137.200,dstPort=5697,dstIP=10.197.250.10,policyName="bor",occurrences=7243,httpHost=hitect,webMethod=dol,url="https://internal.example.net/namali/taevit.html?nsecte=itame#eumfug",webQuery="lit",soapAction=asun,resultCode=estia,sessionID=eaq,username=occae,addUsername=ctetura,responseTime=labore,responseSize=texp,direction=external,dbUsername=adeseru,queryGroup=emoe,application="eaq",srcHost=amest4147.mail.host,osUsername=intoc,schemaName=oluptas,dbName=tNequepo,hdrName=lup,action=cancel -%IMPERVA-Imperva,alert#=sperna,event#=eabilloi,createTime=2016-04-09 17:22:51,updateTime=estia,alertSev=medium,group=tlab,ruleName="volupt",evntDesc="osqui",category=xerc,disposition=iutali,eventType=fdeFi,proto=igmp,srcPort=1696,srcIP=10.179.124.125,dstPort=5473,dstIP=10.36.194.106,policyName="eprehend",occurrences=2462,httpHost=dutper,webMethod=lamcolab,url="https://example.net/tlabo/uames.gif?mpo=offi#giatnu",webQuery="ulapa",soapAction=liqui,resultCode=quioffi,sessionID=uptate,username=ncidid,addUsername=quaturve,responseTime=sequa,responseSize=aera,direction=outbound,dbUsername=rvel,queryGroup=uid,application="onsecte",srcHost=eratv6205.internal.lan,osUsername=reme,schemaName=acommod,dbName=uaUteni,hdrName=udantium,action=accept -%IMPERVA-Imperva,dstIP=10.129.149.43,dstPort=3304,dbUsername=eveli,srcIP=10.211.105.204,srcPort=2742,creatTime=2016-04-24 00:25:25,srvGroup=aliquide,service=ofde,appName=equat,event#=derit,eventType=Logout,usrGroup=dexea,usrAuth=True,application="atcu",osUsername=labor,srcHost=didunt1355.corp,dbName=udan,schemaName=orema,bindVar=invento,sqlError=failure,respSize=6855,respTime=74.098000,affRows=nofdeFin,action="accept",rawQuery="rau" -%IMPERVA-Imperva,dstIP=10.214.191.180,dstPort=5848,dbUsername=ipsumdol,srcIP=10.112.250.193,srcPort=5705,creatTime=2016-05-08 07:27:59,srvGroup=urerepr,service=ese,appName=isaute,event#=ptatemq,eventType=Logout,usrGroup=luptatev,usrAuth=False,application="tlabore",osUsername=Exc,srcHost=pora6854.www5.home,dbName=nevo,schemaName=ide,bindVar=aali,sqlError=success,respSize=6852,respTime=49.573000,affRows=etcons,action="cancel",rawQuery="tenbyCi" -%IMPERVA-Imperva,dstIP=10.251.20.13,dstPort=264,dbUsername=iquipe,srcIP=10.192.34.76,srcPort=1450,creatTime=2016-05-22 14:30:33,srvGroup=upida,service=tvolupt,appName=eufugi,event#=pici,eventType=abor,usrGroup=utpe,usrAuth=onsequ,application="temqu",osUsername=ovol,srcHost=ptasn6599.www.localhost,dbName=lore,schemaName=tnonpro,bindVar=ionemu,sqlError=success,respSize=3645,respTime=20.909000,affRows=tanimid,action="deny",rawQuery="uamni" -%IMPERVA-Imperva,dstIP=10.74.105.218,dstPort=2438,dbUsername=archite,srcIP=10.59.138.212,srcPort=7829,creatTime=2016-06-05 21:33:08,srvGroup=asi,service=datatno,appName=siutali,event#=amnih,eventType=Logout,usrGroup=ium,usrAuth=True,application="esciuntN",osUsername=idunt,srcHost=ptasnu6684.mail.lan,dbName=orumSe,schemaName=boree,bindVar=intoc,sqlError=success,respSize=248,respTime=158.450000,affRows=eeufugia,action="block",rawQuery="ofdeFini" -%IMPERVA-Imperva,dstIP=10.168.159.13,dstPort=3319,dbUsername=inci,srcIP=10.230.173.4,srcPort=2631,creatTime=2016-06-20 04:35:42,srvGroup=avol,service=icero,appName=xer,event#=emipsumd,eventType=Logout,usrGroup=isisten,usrAuth=False,application="cusant",osUsername=atemq,srcHost=rinre2977.api.corp,dbName=totamre,schemaName=isnostr,bindVar=umqu,sqlError=success,respSize=6135,respTime=86.668000,affRows=inesci,action="accept",rawQuery="uia" -%IMPERVA-Imperva,dstIP=10.49.167.57,dstPort=2119,dbUsername=tali,srcIP=10.41.21.204,srcPort=3540,creatTime=4 July 2016 11:38:16,srvGroup=rpori,service=ice,appName=oles,event#=edic,eventType=Login,usrGroup=seq,usrAuth=True,application="tutlab",osUsername=sau,srcHost=atevelit2450.local,dbName=aperia,schemaName=ccaeca,bindVar=umdolo,sqlError=failure,respSize=6818,respTime=115.224000,affRows=stenatu,action="block",rawQuery="orumSe" -%IMPERVA-Imperva,alert#=dutp,event#=psaquaea,createTime=2016-07-18 18:40:50,updateTime=taevita,alertSev=high,group=siut,ruleName="tconsect",evntDesc="aquae",category=boreetdo,disposition=aturve,eventType=ditemp,proto=ipv6,srcPort=3406,srcIP=10.216.125.252,dstPort=5592,dstIP=10.62.147.186,policyName="eumiure",occurrences=4603,httpHost=ima,webMethod=quasia,url="https://example.org/umwrit/uptate.html?ctetura=aveni#elit",webQuery="seosqui",soapAction=sequamni,resultCode=uradi,sessionID=tot,username=llamco,addUsername=nea,responseTime=psum,responseSize=tasnulap,direction=inbound,dbUsername=umSe,queryGroup=xeacomm,application="cinge",srcHost=itla658.api.localhost,osUsername=lorsita,schemaName=dolore,dbName=uptate,hdrName=quidexea,action="accept",errormsg="unknown" -%IMPERVA-Imperva,alert#=ate,event#=odoconse,createTime=2016-08-02 01:43:25,updateTime=emp,alertSev=very-high,group=veli,ruleName="tenim",evntDesc="rumet",category=verita,disposition=sectet,eventType=etdo,proto=tcp,srcPort=3689,srcIP=10.52.125.9,dstPort=2538,dstIP=10.204.128.215,policyName="ama",occurrences=332,httpHost=runtmol,webMethod=texpli,url="https://api.example.org/roidents/tem.txt?tametcon=liqua#mvele",webQuery="isis",soapAction=uasiar,resultCode=utlab,sessionID=emUteni,username=rum,addUsername=gnaaliqu,responseTime=teirured,responseSize=onemulla,direction=external,dbUsername=bor,queryGroup=rauto,application="ationev",srcHost=umdolor4389.api.home,osUsername=paquioff,schemaName=nci,dbName=isau,hdrName=rautodi,action=deny -%IMPERVA-Imperva,dstIP=10.200.68.129,dstPort=2558,dbUsername=icabo,srcIP=10.34.148.166,srcPort=3022,creatTime=2016-08-16 08:45:59,srvGroup=preh,service=ercit,appName=etMal,event#=qua,eventType=rsita,usrGroup=ate,usrAuth=ipsamvo,application="onula",osUsername=miu,srcHost=rationev6444.localhost,dbName=tatem,schemaName=untutlab,bindVar=amcor,sqlError=failure,respSize=5427,respTime=176.685000,affRows=oremq,action="block",rawQuery="uisaute" -%IMPERVA-Imperva,dstIP=10.226.101.180,dstPort=1000,dbUsername=siu,srcIP=10.134.5.40,srcPort=7284,creatTime=30 August 2016 15:48:33,srvGroup=llamc,service=nte,appName=mvel,event#=nof,eventType=Login,usrGroup=usmodi,usrAuth=False,application="mvolu",osUsername=conse,srcHost=ipi7727.www5.domain,dbName=isiu,schemaName=licabo,bindVar=enimadmi,sqlError=success,respSize=6356,respTime=41.238000,affRows=xeaco,action="deny",rawQuery="amcor" -%IMPERVA-Imperva,dstIP=10.126.26.131,dstPort=2595,dbUsername=velite,srcIP=10.30.98.10,srcPort=7576,creatTime=13 September 2016 22:51:07,srvGroup=itation,service=sequatD,appName=nimave,event#=isciv,eventType=Login,usrGroup=rroqu,usrAuth=False,application="nofd",osUsername=dipisci,srcHost=spernatu5539.domain,dbName=quunt,schemaName=olori,bindVar=mquae,sqlError=unknown,respSize=7717,respTime=96.729000,affRows=cidunt,action="accept",rawQuery="borisnis" -%IMPERVA-Imperva,dstIP=10.190.10.219,dstPort=5530,dbUsername=accusant,srcIP=10.233.120.207,srcPort=136,creatTime=2016-09-28 05:53:42,srvGroup=stenatu,service=inibu,appName=est,event#=uptatemU,eventType=Logout,usrGroup=leumiu,usrAuth=False,application="tla",osUsername=item,srcHost=nimid372.api.corp,dbName=atcupid,schemaName=quamnih,bindVar=dminima,sqlError=success,respSize=3278,respTime=60.949000,affRows=tame,action="cancel",rawQuery="reetd" -%IMPERVA-Imperva,event#=sitam,createTime=2016-10-12 12:56:16,eventType=rad,eventSev=low,username=sequa,subsystem=iosamnis,message="volupt" -%IMPERVA-Imperva,dstIP=10.100.98.56,dstPort=1089,dbUsername=boru,srcIP=10.248.184.200,srcPort=5315,creatTime=2016-10-26 19:58:50,srvGroup=ptatem,service=ptatevel,appName=tenatuse,event#=psaqua,eventType=Logout,usrGroup=ullamcor,usrAuth=False,application="itationu",osUsername=proident,srcHost=maliquam2147.internal.home,dbName=lores,schemaName=ritati,bindVar=orisni,sqlError=failure,respSize=5923,respTime=179.541000,affRows=sitam,action="deny",rawQuery="mmodoc" -%IMPERVA-Imperva,dstIP=10.197.6.245,dstPort=27,dbUsername=dtempo,srcIP=10.82.28.220,srcPort=3570,creatTime=10 November 2016 03:01:24,srvGroup=imad,service=tinvolup,appName=tsed,event#=inv,eventType=Login,usrGroup=rroq,usrAuth=False,application="rcit",osUsername=aecatcup,srcHost=olabor2983.internal.localhost,dbName=citatio,schemaName=oluptat,bindVar=mveniamq,sqlError=success,respSize=3071,respTime=120.142000,affRows=eaqueips,action="allow",rawQuery="aturve" -%IMPERVA-Imperva,dstIP=10.6.27.103,dstPort=3179,dbUsername=redol,srcIP=10.167.252.183,srcPort=2003,creatTime=24 November 2016 10:03:59,srvGroup=doei,service=cipitl,appName=caboNemo,event#=dexerc,eventType=Login,usrGroup=strumex,usrAuth=True,application="eprehend",osUsername=asnu,srcHost=hitec2111.mail.corp,dbName=perspici,schemaName=ationul,bindVar=mquisn,sqlError=failure,respSize=6606,respTime=155.907000,affRows=emUte,action="cancel",rawQuery="ccae" -%IMPERVA-Imperva,alert#=ntNe,event#=itanim,createTime=2016-12-08 17:06:33,updateTime=nesciun,alertSev=medium,group=mollita,ruleName="tatem",evntDesc="iae",category=quido,disposition=emip,eventType=inBC,proto=tcp,srcPort=6165,srcIP=10.88.45.111,dstPort=6735,dstIP=10.81.184.7,policyName="saquaea",occurrences=6344,httpHost=eetd,webMethod=illu,url="https://mail.example.com/lorsi/repreh.gif?sitamet=utlabo#tetur",webQuery="tionula",soapAction=ritqu,resultCode=ecatcupi,sessionID=uamei,username=undeomni,addUsername=tas,responseTime=autfugi,responseSize=tasun,direction=external,dbUsername=eratv,queryGroup=ipsa,application="asuntexp",srcHost=adminim2559.www5.invalid,osUsername=lmole,schemaName=iameaque,dbName=nderi,hdrName=ssusci,action="deny",errormsg="failure" -%IMPERVA-Imperva,dstIP=10.214.3.140,dstPort=6127,dbUsername=scipitl,srcIP=10.29.119.245,srcPort=1179,creatTime=2016-12-23 00:09:07,srvGroup=olli,service=rever,appName=ore,event#=offici,eventType=Logout,usrGroup=ection,usrAuth=False,application="roquisqu",osUsername=edolorin,srcHost=dolorem6882.api.local,dbName=rsi,schemaName=taliqui,bindVar=mides,sqlError=success,respSize=5140,respTime=119.229000,affRows=tcu,action="cancel",rawQuery="inrepreh" -%IMPERVA-Imperva,alert#=dipiscin,event#=olup,createTime=2017-01-06 07:11:41,updateTime=aco,alertSev=medium,group=accusa,ruleName="natu",evntDesc="liquid",category=enim,disposition=Finibus,eventType=radi,proto=rdp,srcPort=2064,srcIP=10.218.123.234,dstPort=57,dstIP=10.110.133.7,policyName="radipisc",occurrences=5347,httpHost=nibus,webMethod=vitaed,url="https://example.org/etconsec/elillum.htm?mporinc=onsectet#idolo",webQuery="atemUte",soapAction=docon,resultCode=mdolore,sessionID=eosquira,username=pta,addUsername=snos,responseTime=orsi,responseSize=tetura,direction=external,dbUsername=lorsita,queryGroup=eavol,application="osamnis",srcHost=temaccu5302.test,osUsername=etconsec,schemaName=caboNem,dbName=urExcept,hdrName=rumetMal,action="allow",errormsg="unknown" -%IMPERVA-Imperva,dstIP=10.105.190.170,dstPort=2519,dbUsername=doeiu,srcIP=10.182.152.242,srcPort=1877,creatTime=2017-01-20 14:14:16,srvGroup=orumw,service=redol,appName=ecillum,event#=isci,eventType=Logout,usrGroup=dolor,usrAuth=True,application="tiumto",osUsername=litan,srcHost=nder347.www.corp,dbName=alorum,schemaName=mquisn,bindVar=atq,sqlError=unknown,respSize=3474,respTime=68.556000,affRows=ugiatquo,action="block",rawQuery="equamnih" -%IMPERVA-Imperva,alert#=citati,event#=uamei,createTime=2017-02-03 21:16:50,updateTime=eursinto,alertSev=low,group=tutla,ruleName="licaboNe",evntDesc="tautfug",category=giatquov,disposition=olu,eventType=rmagnido,proto=ipv6-icmp,srcPort=7647,srcIP=10.59.188.188,dstPort=7082,dstIP=10.123.166.197,policyName="ici",occurrences=7102,httpHost=mips,webMethod=itae,url="https://internal.example.net/atnula/ditautf.jpg?iquidex=olup#remipsu",webQuery="tan",soapAction=quiac,resultCode=sunt,sessionID=autfugit,username=emUte,addUsername=iusmodi,responseTime=fdeFi,responseSize=Except,direction=inbound,dbUsername=equat,queryGroup=aliquid,application="usantiu",srcHost=idunt4633.internal.host,osUsername=liquam,schemaName=min,dbName=oluptat,hdrName=odt,action=block -%IMPERVA-Imperva,dstIP=10.72.75.207,dstPort=6336,dbUsername=urau,srcIP=10.201.168.116,srcPort=2037,creatTime=2017-02-18 04:19:24,srvGroup=utali,service=sed,appName=xeac,event#=umdolors,eventType=Logout,usrGroup=lumdo,usrAuth=False,application="acom",osUsername=eFini,srcHost=ectob4634.mail.localhost,dbName=prehend,schemaName=eufug,bindVar=roquisq,sqlError=unknown,respSize=3348,respTime=79.765000,affRows=civelits,action="accept",rawQuery="reet" -%IMPERVA-Imperva,dstIP=10.9.46.123,dstPort=586,dbUsername=mfu,srcIP=10.58.133.175,srcPort=1634,creatTime=4 March 2017 11:21:59,srvGroup=llumq,service=tenim,appName=eiusmo,event#=ainc,eventType=Login,usrGroup=miurerep,usrAuth=True,application="lestia",osUsername=nde,srcHost=snu6436.www.local,dbName=texplica,schemaName=oco,bindVar=aboree,sqlError=unknown,respSize=3795,respTime=14.713000,affRows=edquian,action="block",rawQuery="uames" -%IMPERVA-Imperva,dstIP=10.169.50.59,dstPort=7693,dbUsername=pta,srcIP=10.70.29.203,srcPort=5994,creatTime=18 March 2017 18:24:33,srvGroup=piciatis,service=destla,appName=fugitse,event#=minimve,eventType=Login,usrGroup=serrorsi,usrAuth=False,application="tametco",osUsername=mquisnos,srcHost=lore7099.www.host,dbName=isn,schemaName=veniamq,bindVar=lup,sqlError=unknown,respSize=2358,respTime=94.460000,affRows=ipitlabo,action="block",rawQuery="prehen" -%IMPERVA-Imperva,dstIP=10.165.182.111,dstPort=5525,dbUsername=ames,srcIP=10.137.85.123,srcPort=218,creatTime=2017-04-02 01:27:07,srvGroup=amquisno,service=modoc,appName=magnam,event#=uinesc,eventType=Logout,usrGroup=cid,usrAuth=True,application="emi",osUsername=Bonorum,srcHost=lesti6939.api.local,dbName=idu,schemaName=sis,bindVar=idolo,sqlError=success,respSize=6401,respTime=171.434000,affRows=its,action="block",rawQuery="edutp" -%IMPERVA-Imperva,event#=enimadmi,createTime=2017-04-16 08:29:41,eventType=tateveli,eventSev=high,username=sumdolo,subsystem=idolorem,message="temvele" -%IMPERVA-Imperva,alert#=inimve,event#=uio,createTime=2017-04-30 15:32:16,updateTime=mexercit,alertSev=high,group=onofdeF,ruleName="ibusBo",evntDesc="orin",category=enia,disposition=iavol,eventType=natuserr,proto=rdp,srcPort=3327,srcIP=10.64.184.196,dstPort=6659,dstIP=10.173.178.109,policyName="tatemse",occurrences=4493,httpHost=amqui,webMethod=lamco,url="https://www.example.net/hender/ptatemU.htm?mquisnos=tnulapa#madmi",webQuery="tlabore",soapAction=idunt,resultCode=expl,sessionID=olore,username=uian,addUsername=atuserro,responseTime=madminim,responseSize=tobeata,direction=inbound,dbUsername=ioff,queryGroup=oinBCS,application="itsedd",srcHost=upt6017.api.localdomain,osUsername=nesci,schemaName=tam,dbName=sin,hdrName=idexeac,action="block",errormsg="failure" -%IMPERVA-Imperva,dstIP=10.90.50.149,dstPort=1936,dbUsername=olu,srcIP=10.168.225.209,srcPort=6,creatTime=2017-05-14 22:34:50,srvGroup=taliq,service=tautfugi,appName=fdeFinib,event#=uip,eventType=Logout,usrGroup=ectobea,usrAuth=True,application="dat",osUsername=aUtenima,srcHost=turQuis4046.api.test,dbName=deomnisi,schemaName=olupta,bindVar=oll,sqlError=success,respSize=1127,respTime=55.870000,affRows=evelite,action="block",rawQuery="iav" -%IMPERVA-Imperva,dstIP=10.59.182.36,dstPort=5792,dbUsername=mtota,srcIP=10.18.150.82,srcPort=6648,creatTime=29 May 2017 05:37:24,srvGroup=rit,service=eumfu,appName=lors,event#=oluptat,eventType=Login,usrGroup=enimad,usrAuth=True,application="tis",osUsername=qua,srcHost=con6049.internal.lan,dbName=quelaud,schemaName=luptat,bindVar=rinrep,sqlError=unknown,respSize=6112,respTime=135.357000,affRows=nimv,action="allow",rawQuery="tconse" -%IMPERVA-Imperva,event#=rem,createTime=2017-06-12 12:39:58,eventType=ulamcola,eventSev=very-high,username=llita,subsystem=ntsunt,message="nturmag" -%IMPERVA-Imperva,dstIP=10.228.229.144,dstPort=3236,dbUsername=ametcons,srcIP=10.151.240.35,srcPort=3197,creatTime=2017-06-26 19:42:33,srvGroup=roquisq,service=uasi,appName=maveniam,event#=uis,eventType=lill,usrGroup=remeum,usrAuth=mmod,application="taevit",osUsername=ama,srcHost=tatnonp1371.www.invalid,dbName=xercit,schemaName=lam,bindVar=asnu,sqlError=failure,respSize=4325,respTime=168.492000,affRows=eriam,action="cancel",rawQuery="aquae" -%IMPERVA-Imperva,dstIP=10.242.48.203,dstPort=1102,dbUsername=ese,srcIP=10.147.142.242,srcPort=2586,creatTime=2017-07-11 02:45:07,srvGroup=eca,service=ctionofd,appName=mpori,event#=olupt,eventType=Logout,usrGroup=ola,usrAuth=False,application="ptat",osUsername=quasi,srcHost=tium3542.internal.invalid,dbName=squamest,schemaName=quisn,bindVar=pteu,sqlError=success,respSize=3970,respTime=11.548000,affRows=antium,action="block",rawQuery="velillum" -%IMPERVA-Imperva,alert#=lapari,event#=Mal,createTime=2017-07-25 09:47:41,updateTime=itinvo,alertSev=very-high,group=paq,ruleName="emipsumq",evntDesc="culpaq",category=quamq,disposition=usan,eventType=tdolo,proto=ipv6,srcPort=4723,srcIP=10.213.165.165,dstPort=3787,dstIP=10.254.10.98,policyName="adipisc",occurrences=7365,httpHost=tasnul,webMethod=uptasn,url="https://example.net/itati/oidentsu.gif?eporroqu=aturve#temqui",webQuery="lup",soapAction=aeca,resultCode=isau,sessionID=giat,username=ttenb,addUsername=eirure,responseTime=boreetd,responseSize=tNe,direction=outbound,dbUsername=eeufug,queryGroup=ntin,application="iades",srcHost=radipis3991.mail.invalid,osUsername=civeli,schemaName=eufugia,dbName=utlabore,hdrName=tamr,action="cancel",errormsg="success" -%IMPERVA-Imperva,event#=onemul,createTime=2017-08-08 16:50:15,eventType=trudexe,eventSev=very-high,username=ura,subsystem=oreeufug,message="Quisa" -%IMPERVA-Imperva,alert#=llitani,event#=uscipit,createTime=2017-08-22 23:52:50,updateTime=luptat,alertSev=very-high,group=etco,ruleName="iuntN",evntDesc="utfugi",category=ursintoc,disposition=tio,eventType=mmodicon,proto=ipv6,srcPort=5439,srcIP=10.116.1.130,dstPort=3402,dstIP=10.169.28.157,policyName="exeacomm",occurrences=1295,httpHost=ionula,webMethod=pexeaco,url="https://api.example.org/uamqua/Neq.gif?eumiu=nim#pteurs",webQuery="ercitati",soapAction=atem,resultCode=serro,sessionID=lumquid,username=eturadip,addUsername=amquaera,responseTime=rsitamet,responseSize=leumiur,direction=internal,dbUsername=utod,queryGroup=olesti,application="edquia",srcHost=ihi7294.www5.localhost,osUsername=reseo,schemaName=amco,dbName=ons,hdrName=onsecte,action="accept",errormsg="unknown" -%IMPERVA-Imperva,dstIP=10.29.138.31,dstPort=5871,dbUsername=volupta,srcIP=10.45.69.152,srcPort=4083,creatTime=6 September 2017 06:55:24,srvGroup=emi,service=uaerat,appName=iduntu,event#=samvol,eventType=Login,usrGroup=equa,usrAuth=False,application="apari",osUsername=tsunt,srcHost=caecat4920.api.host,dbName=enim,schemaName=umq,bindVar=sistena,sqlError=failure,respSize=744,respTime=33.416000,affRows=temquia,action="deny",rawQuery="eumiu" -%IMPERVA-Imperva,dstIP=10.152.213.228,dstPort=3387,dbUsername=ptatev,srcIP=10.100.113.11,srcPort=6971,creatTime=2017-09-20 13:57:58,srvGroup=aliqu,service=sequine,appName=utaliqui,event#=isciv,eventType=Logout,usrGroup=osqu,usrAuth=False,application="ptatemse",osUsername=itationu,srcHost=setquas6188.internal.local,dbName=magnaali,schemaName=velillum,bindVar=ionev,sqlError=success,respSize=7245,respTime=131.118000,affRows=ameaq,action="cancel",rawQuery="Except" -%IMPERVA-Imperva,event#=uiac,createTime=2017-10-04 21:00:32,eventType=tquii,eventSev=low,username=reme,subsystem=emeumfu,message="inBCSedu" -%IMPERVA-Imperva,dstIP=10.208.33.55,dstPort=1849,dbUsername=ulapari,srcIP=10.248.102.129,srcPort=3510,creatTime=2017-10-19 04:03:07,srvGroup=iatn,service=saquaeab,appName=eli,event#=rissusci,eventType=Logout,usrGroup=ectetur,usrAuth=True,application="dictasun",osUsername=inimv,srcHost=nibusBo3674.www5.localhost,dbName=ntut,schemaName=mremaper,bindVar=uteirur,sqlError=unknown,respSize=6433,respTime=111.360000,affRows=isni,action="accept",rawQuery="quovo" -%IMPERVA-Imperva,dstIP=10.203.164.132,dstPort=6213,dbUsername=mporin,srcIP=10.109.230.216,srcPort=4447,creatTime=2017-11-02 11:05:41,srvGroup=uov,service=pariat,appName=icaboNe,event#=boreetd,eventType=Logout,usrGroup=uir,usrAuth=True,application="rumex",osUsername=ectobea,srcHost=totamr7676.www5.home,dbName=imadm,schemaName=ibus,bindVar=lumdol,sqlError=success,respSize=547,respTime=166.971000,affRows=reprehe,action="block",rawQuery="ihil" -%IMPERVA-Imperva,dstIP=10.151.203.60,dstPort=482,dbUsername=dol,srcIP=10.117.81.75,srcPort=3365,creatTime=16 November 2017 18:08:15,srvGroup=iciatis,service=agn,appName=cul,event#=tate,eventType=Login,usrGroup=psam,usrAuth=True,application="itaedi",osUsername=exeac,srcHost=idents7231.mail.home,dbName=veniamqu,schemaName=iconsequ,bindVar=ueporr,sqlError=unknown,respSize=484,respTime=27.563000,affRows=tur,action="block",rawQuery="onorumet" -%IMPERVA-Imperva,dstIP=10.224.217.153,dstPort=6339,dbUsername=eriti,srcIP=10.45.152.205,srcPort=6907,creatTime=1 December 2017 01:10:49,srvGroup=riame,service=datatn,appName=seq,event#=mquis,eventType=Login,usrGroup=tur,usrAuth=True,application="itation",osUsername=utlabo,srcHost=tat50.mail.host,dbName=essequam,schemaName=imav,bindVar=mtot,sqlError=success,respSize=922,respTime=17.709000,affRows=prehend,action="allow",rawQuery="liquid" -%IMPERVA-Imperva,alert#=umq,event#=ipsu,createTime=2017-12-15 08:13:24,updateTime=oremip,alertSev=low,group=odit,ruleName="vol",evntDesc="epteurs",category=itse,disposition=rever,eventType=sBonoru,proto=udp,srcPort=2652,srcIP=10.60.164.100,dstPort=5119,dstIP=10.1.193.187,policyName="yCice",occurrences=508,httpHost=ionem,webMethod=taevitae,url="https://api.example.net/quam/saute.htm?nostru=docons#emipsumq",webQuery="orinr",soapAction=ineavol,resultCode=umdo,sessionID=tass,username=ugi,addUsername=riat,responseTime=atvol,responseSize=emipsum,direction=internal,dbUsername=uameiu,queryGroup=quiado,application="conse",srcHost=mips3283.corp,osUsername=hite,schemaName=adipis,dbName=abo,hdrName=suntex,action="allow",errormsg="failure" -%IMPERVA-Imperva,dstIP=10.248.244.203,dstPort=806,dbUsername=mquamei,srcIP=10.146.228.234,srcPort=4346,creatTime=2017-12-29 15:15:58,srvGroup=rissusci,service=uaturQ,appName=iusmod,event#=susc,eventType=taed,usrGroup=eatae,usrAuth=siutali,application="oloremq",osUsername=sum,srcHost=aliquip7229.mail.domain,dbName=doe,schemaName=eiusm,bindVar=oremipsu,sqlError=failure,respSize=3058,respTime=133.358000,affRows=llum,action="allow",rawQuery="mto" -%IMPERVA-Imperva,dstIP=10.122.127.237,dstPort=1138,dbUsername=consecte,srcIP=10.86.121.152,srcPort=3971,creatTime=2018-01-12 22:18:32,srvGroup=mquamei,service=litesse,appName=fug,event#=liquid,eventType=Logout,usrGroup=uidex,usrAuth=False,application="umdolo",osUsername=nimv,srcHost=fde7756.mail.corp,dbName=usmod,schemaName=ine,bindVar=qui,sqlError=success,respSize=2771,respTime=136.167000,affRows=orsitame,action="block",rawQuery="ipex" -%IMPERVA-Imperva,dstIP=10.201.223.119,dstPort=3614,dbUsername=rcit,srcIP=10.204.223.184,srcPort=6092,creatTime=2018-01-27 05:21:06,srvGroup=giat,service=nculpa,appName=olupt,event#=tvol,eventType=Logout,usrGroup=ostru,usrAuth=True,application="mea",osUsername=tuserror,srcHost=agnama5013.internal.example,dbName=boreetdo,schemaName=teni,bindVar=iin,sqlError=unknown,respSize=4113,respTime=161.837000,affRows=tNeq,action="block",rawQuery="liq" -%IMPERVA-Imperva,dstIP=10.200.12.126,dstPort=2347,dbUsername=magnido,srcIP=10.223.56.33,srcPort=5899,creatTime=10 February 2018 12:23:41,srvGroup=ing,service=amal,appName=aliq,event#=utem,eventType=Login,usrGroup=oreetd,usrAuth=True,application="itatis",osUsername=Nequepo,srcHost=edictas4693.home,dbName=borisnis,schemaName=elitsedd,bindVar=hitecto,sqlError=failure,respSize=3243,respTime=75.415000,affRows=imven,action="block",rawQuery="hende" -%IMPERVA-Imperva,alert#=deseru,event#=aquioff,createTime=2018-02-24 19:26:15,updateTime=cip,alertSev=very-high,group=onsequat,ruleName="tiumd",evntDesc="atuse",category=imad,disposition=tura,eventType=equuntur,proto=ipv6,srcPort=428,srcIP=10.94.89.177,dstPort=1752,dstIP=10.65.225.101,policyName="nulapari",occurrences=2513,httpHost=ostrumex,webMethod=eruntmol,url="https://internal.example.com/imide/uiineav.htm?lloinve=eni#asia",webQuery="edquiac",soapAction=psamvolu,resultCode=teturad,sessionID=ritq,username=tuserror,addUsername=tla,responseTime=orroq,responseSize=modtempo,direction=outbound,dbUsername=uptate,queryGroup=sumqui,application="eritin",srcHost=nibu2565.api.local,osUsername=citation,schemaName=emquel,dbName=rspiciat,hdrName=iavol,action="cancel",errormsg="unknown" -%IMPERVA-Imperva,dstIP=10.65.174.196,dstPort=472,dbUsername=iin,srcIP=10.191.184.105,srcPort=6821,creatTime=2018-03-11 02:28:49,srvGroup=iat,service=orain,appName=equaturQ,event#=llu,eventType=quaUt,usrGroup=labor,usrAuth=oris,application="tatemse",osUsername=uta,srcHost=tsun7120.home,dbName=per,schemaName=tione,bindVar=nibus,sqlError=unknown,respSize=5836,respTime=61.864000,affRows=olo,action="deny",rawQuery="BCSedutp" -%IMPERVA-Imperva,alert#=tdolor,event#=Ute,createTime=2018-03-25 09:31:24,updateTime=tura,alertSev=very-high,group=umSecti,ruleName="eabil",evntDesc="ibusB",category=rporis,disposition=etco,eventType=mip,proto=rdp,srcPort=6078,srcIP=10.224.148.48,dstPort=2803,dstIP=10.41.181.179,policyName="siarch",occurrences=7468,httpHost=setq,webMethod=rumwr,url="https://api.example.com/ptatem/mporain.gif?corpo=commod#iumd",webQuery="ntore",soapAction=tect,resultCode=ion,sessionID=tutl,username=niam,addUsername=oru,responseTime=mcorp,responseSize=uelaud,direction=outbound,dbUsername=ameiu,queryGroup=utei,application="caecat",srcHost=lumquid6940.mail.localdomain,osUsername=equepor,schemaName=iosamn,dbName=erspicia,hdrName=neavolup,action="deny",errormsg="success" -%IMPERVA-Imperva,dstIP=10.21.208.103,dstPort=5543,dbUsername=imidest,srcIP=10.21.61.134,srcPort=6124,creatTime=2018-04-08 16:33:58,srvGroup=iacon,service=ncu,appName=quaturve,event#=ciad,eventType=Logout,usrGroup=diconseq,usrAuth=False,application="utod",osUsername=ostr,srcHost=amcorp7299.api.example,dbName=uptatem,schemaName=mipsa,bindVar=nproide,sqlError=success,respSize=7766,respTime=91.186000,affRows=siutali,action="deny",rawQuery="nemullam" -%IMPERVA-Imperva,dstIP=10.23.6.216,dstPort=4578,dbUsername=iarchit,srcIP=10.221.192.116,srcPort=4688,creatTime=2018-04-22 23:36:32,srvGroup=usBonor,service=mide,appName=sten,event#=enderi,eventType=Logout,usrGroup=labore,usrAuth=False,application="uasiarch",osUsername=iamquisn,srcHost=magnama868.api.local,dbName=Section,schemaName=tevelite,bindVar=esciunt,sqlError=success,respSize=639,respTime=6.388000,affRows=borisnis,action="accept",rawQuery="oremagn" -%IMPERVA-Imperva,alert#=rcita,event#=ataev,createTime=2018-05-07 06:39:06,updateTime=oris,alertSev=very-high,group=tate,ruleName="tutlabo",evntDesc="nto",category=sciv,disposition=tlabo,eventType=nsequun,proto=ipv6,srcPort=2976,srcIP=10.191.142.143,dstPort=5850,dstIP=10.240.62.238,policyName="sintoc",occurrences=7580,httpHost=laboris,webMethod=ali,url="https://www5.example.net/aUten/edutpers.gif?apariatu=mnisis#onsequa",webQuery="sunt",soapAction=orumSe,resultCode=olupta,sessionID=emveleum,username=modtempo,addUsername=mfugi,responseTime=roqui,responseSize=ntutlabo,direction=external,dbUsername=isq,queryGroup=eacommo,application="amqua",srcHost=tionevol3157.mail.invalid,osUsername=nofde,schemaName=animide,dbName=Lore,hdrName=oin,action=cancel -%IMPERVA-Imperva,alert#=ecatcu,event#=entoreve,createTime=2018-05-21 13:41:41,updateTime=ion,alertSev=very-high,group=onev,ruleName="atu",evntDesc="adeseru",category=sitas,disposition=eni,eventType=cte,proto=igmp,srcPort=3124,srcIP=10.178.79.217,dstPort=7499,dstIP=10.111.22.134,policyName="datatno",occurrences=3538,httpHost=siar,webMethod=orisnis,url="https://www.example.net/mvolup/pidat.jpg?ents=nsec#iaeco",webQuery="ommodoco",soapAction=ritinv,resultCode=rita,sessionID=oidents,username=ccusan,addUsername=inimav,responseTime=quel,responseSize=ugitsed,direction=external,dbUsername=idolor,queryGroup=xplic,application="stenat",srcHost=mquis319.api.local,osUsername=inibusBo,schemaName=tqui,dbName=sequun,hdrName=nimadm,action=deny -%IMPERVA-Imperva,dstIP=10.161.225.172,dstPort=3708,dbUsername=meaqu,srcIP=10.77.86.215,srcPort=6390,creatTime=4 June 2018 20:44:15,srvGroup=con,service=aeabil,appName=iumtot,event#=edicta,eventType=Login,usrGroup=itaspern,usrAuth=False,application="tau",osUsername=rcit,srcHost=urad5712.api.host,dbName=sitamet,schemaName=xerc,bindVar=mcolabor,sqlError=success,respSize=7286,respTime=143.926000,affRows=evita,action="block",rawQuery="ant" -%IMPERVA-Imperva,dstIP=10.186.133.184,dstPort=7864,dbUsername=boriosa,srcIP=10.211.161.187,srcPort=843,creatTime=2018-06-19 03:46:49,srvGroup=laud,service=uido,appName=uis,event#=msequin,eventType=autem,usrGroup=mporai,usrAuth=ipi,application="qua",osUsername=acons,srcHost=enbyCic4659.www5.example,dbName=orroqui,schemaName=sci,bindVar=psamvolu,sqlError=unknown,respSize=1578,respTime=66.164000,affRows=temse,action="deny",rawQuery="onevol" -%IMPERVA-Imperva,dstIP=10.160.147.230,dstPort=2126,dbUsername=nimvenia,srcIP=10.254.198.47,srcPort=3925,creatTime=2018-07-03 10:49:23,srvGroup=lit,service=quin,appName=adipisc,event#=sedqui,eventType=ueporroq,usrGroup=dolo,usrAuth=adm,application="dolor",osUsername=ndeomnis,srcHost=inBCSed5308.api.corp,dbName=modicons,schemaName=illoin,bindVar=rinre,sqlError=unknown,respSize=5988,respTime=34.664000,affRows=olorem,action="cancel",rawQuery="dquiaco" -%IMPERVA-Imperva,dstIP=10.40.24.93,dstPort=7487,dbUsername=mSecti,srcIP=10.182.197.243,srcPort=3687,creatTime=2018-07-17 17:51:58,srvGroup=xerci,service=qua,appName=iaecons,event#=pteurs,eventType=Logout,usrGroup=intocc,usrAuth=True,application="abo",osUsername=orisnis,srcHost=reseo2067.api.localdomain,dbName=nsectetu,schemaName=exerci,bindVar=lit,sqlError=success,respSize=4129,respTime=171.277000,affRows=ono,action="cancel",rawQuery="equuntu" -%IMPERVA-Imperva,dstIP=10.249.13.159,dstPort=3023,dbUsername=uisautei,srcIP=10.108.130.106,srcPort=7601,creatTime=1 August 2018 00:54:32,srvGroup=scinge,service=lum,appName=iinea,event#=xercit,eventType=Login,usrGroup=reh,usrAuth=False,application="velitess",osUsername=colab,srcHost=itte6905.mail.invalid,dbName=tesseq,schemaName=exeacomm,bindVar=uptat,sqlError=success,respSize=1044,respTime=112.679000,affRows=ptatema,action="cancel",rawQuery="cepteurs" -%IMPERVA-Imperva,alert#=ioffic,event#=rumetMal,createTime=2018-08-15 07:57:06,updateTime=tiumtot,alertSev=very-high,group=caboNe,ruleName="ptate",evntDesc="enimips",category=Nequepor,disposition=nisiu,eventType=ptat,proto=ggp,srcPort=4082,srcIP=10.64.94.174,dstPort=3852,dstIP=10.39.244.49,policyName="ctas",occurrences=7128,httpHost=sequ,webMethod=gna,url="https://internal.example.org/aev/uovolup.txt?aqueip=aqueip#rautod",webQuery="tur",soapAction=minimav,resultCode=uovo,sessionID=aven,username=Sedut,addUsername=stiaec,responseTime=rveli,responseSize=serr,direction=internal,dbUsername=uid,queryGroup=lamcor,application="rorsitv",srcHost=caboNemo274.www.host,osUsername=estiae,schemaName=iunt,dbName=eFinibu,hdrName=uisaut,action=cancel -%IMPERVA-Imperva,event#=odit,createTime=2018-08-29 14:59:40,eventType=ercitati,eventSev=very-high,username=imad,subsystem=olo,message="deserun" -%IMPERVA-Imperva,event#=scingeli,createTime=2018-09-12 22:02:15,eventType=uatDuis,eventSev=medium,username=apari,subsystem=itesseci,message="utali" -%IMPERVA-Imperva,dstIP=10.115.203.143,dstPort=6889,dbUsername=utoditau,srcIP=10.134.135.22,srcPort=1809,creatTime=27 September 2018 05:04:49,srvGroup=serror,service=itl,appName=Bonoru,event#=rumetMa,eventType=Login,usrGroup=entor,usrAuth=False,application="urere",osUsername=involu,srcHost=qui5978.api.test,dbName=amre,schemaName=orpori,bindVar=sistena,sqlError=failure,respSize=7868,respTime=5.277000,affRows=borisn,action="cancel",rawQuery="quatu" -%IMPERVA-Imperva,dstIP=10.43.244.252,dstPort=1752,dbUsername=inculp,srcIP=10.251.212.166,srcPort=3925,creatTime=11 October 2018 12:07:23,srvGroup=iur,service=aboNemo,appName=tsedquia,event#=ididun,eventType=Login,usrGroup=tatiset,usrAuth=False,application="enim",osUsername=gnido,srcHost=iamq2577.internal.corp,dbName=uisa,schemaName=uptat,bindVar=siutal,sqlError=unknown,respSize=6947,respTime=144.976000,affRows=tempori,action="accept",rawQuery="lamco" -%IMPERVA-Imperva,event#=nimve,createTime=2018-10-25 19:09:57,eventType=edutpe,eventSev=medium,username=isunde,subsystem=nimadm,message="cepte" -%IMPERVA-Imperva,dstIP=10.20.231.188,dstPort=1200,dbUsername=tesseq,srcIP=10.88.189.164,srcPort=1373,creatTime=2018-11-09 02:12:32,srvGroup=iusmod,service=aincid,appName=giatq,event#=tion,eventType=Logout,usrGroup=tNeque,usrAuth=False,application="uidolore",osUsername=uatDuisa,srcHost=usB4127.localhost,dbName=ufugia,schemaName=mqu,bindVar=remagna,sqlError=failure,respSize=1623,respTime=33.468000,affRows=Uteni,action="cancel",rawQuery="porinci" -%IMPERVA-Imperva,event#=edd,createTime=2018-11-23 09:15:06,eventType=uianon,eventSev=low,username=quamquae,subsystem=aaliq,message="nos" -%IMPERVA-Imperva,dstIP=10.231.77.26,dstPort=7082,dbUsername=rehe,srcIP=10.225.11.197,srcPort=3513,creatTime=7 December 2018 16:17:40,srvGroup=siarchi,service=seddoeiu,appName=lorinrep,event#=isq,eventType=Login,usrGroup=quines,usrAuth=False,application="entsu",osUsername=ineavol,srcHost=abor3266.mail.home,dbName=voluptat,schemaName=volu,bindVar=iutaliqu,sqlError=failure,respSize=3064,respTime=61.960000,affRows=iusmo,action="allow",rawQuery="uovo" -%IMPERVA-Imperva,dstIP=10.148.3.197,dstPort=979,dbUsername=usa,srcIP=10.106.166.105,srcPort=4567,creatTime=2018-12-21 23:20:14,srvGroup=oremagna,service=siuta,appName=amnihil,event#=nderit,eventType=ficia,usrGroup=tru,usrAuth=tionu,application="natuser",osUsername=olupt,srcHost=eprehe2455.www.home,dbName=smo,schemaName=avolup,bindVar=litse,sqlError=failure,respSize=2658,respTime=84.894000,affRows=untutlab,action="allow",rawQuery="byCicer" -%IMPERVA-Imperva,dstIP=10.172.121.239,dstPort=5339,dbUsername=iuta,srcIP=10.57.169.205,srcPort=3093,creatTime=2019-01-05 06:22:49,srvGroup=reeufugi,service=oloree,appName=xeaco,event#=urm,eventType=Logout,usrGroup=mpo,usrAuth=False,application="cept",osUsername=ctas,srcHost=destla2110.www5.localdomain,dbName=inea,schemaName=ipsu,bindVar=iden,sqlError=failure,respSize=392,respTime=19.061000,affRows=reetd,action="cancel",rawQuery="maven" -%IMPERVA-Imperva,dstIP=10.129.234.200,dstPort=3833,dbUsername=tisundeo,srcIP=10.42.218.103,srcPort=3315,creatTime=19 January 2019 13:25:23,srvGroup=mnis,service=tametco,appName=snisiut,event#=lit,eventType=Login,usrGroup=laborio,usrAuth=False,application="aaliqu",osUsername=tevelit,srcHost=exerc3694.api.home,dbName=consec,schemaName=dquia,bindVar=cep,sqlError=success,respSize=6709,respTime=34.273000,affRows=volupta,action="allow",rawQuery="ipex" -%IMPERVA-Imperva,dstIP=10.111.132.221,dstPort=2262,dbUsername=ali,srcIP=10.76.121.224,srcPort=4305,creatTime=2019-02-02 20:27:57,srvGroup=xcep,service=ehen,appName=remap,event#=mUt,eventType=Logout,usrGroup=admi,usrAuth=True,application="siarch",osUsername=oloremi,srcHost=ididu5928.www5.local,dbName=tNe,schemaName=scive,bindVar=tcupi,sqlError=unknown,respSize=6155,respTime=139.491000,affRows=Sed,action="cancel",rawQuery="ita" -%IMPERVA-Imperva,dstIP=10.195.8.141,dstPort=4342,dbUsername=enimip,srcIP=10.17.214.21,srcPort=4821,creatTime=17 February 2019 03:30:32,srvGroup=umquiado,service=taspe,appName=empori,event#=mipsum,eventType=Login,usrGroup=tium,usrAuth=True,application="riaturE",osUsername=ota,srcHost=boriosa7066.www.corp,dbName=Nequep,schemaName=dolo,bindVar=exeacom,sqlError=success,respSize=469,respTime=146.775000,affRows=eufugiat,action="accept",rawQuery="non" -%IMPERVA-Imperva,dstIP=10.173.13.179,dstPort=1211,dbUsername=ptasn,srcIP=10.179.60.167,srcPort=1124,creatTime=2019-03-03 10:33:06,srvGroup=amqui,service=itatise,appName=utlab,event#=ostr,eventType=Logout,usrGroup=liqu,usrAuth=True,application="cons",osUsername=apar,srcHost=ssusc1892.internal.host,dbName=xplic,schemaName=isn,bindVar=quepor,sqlError=failure,respSize=758,respTime=58.800000,affRows=etur,action="block",rawQuery="cusan" -%IMPERVA-Imperva,dstIP=10.42.135.34,dstPort=4361,dbUsername=tiset,srcIP=10.178.190.123,srcPort=3288,creatTime=2019-03-17 17:35:40,srvGroup=xercitat,service=ueporr,appName=utlab,event#=entoreve,eventType=Logout,usrGroup=lmolest,usrAuth=False,application="ser",osUsername=ore,srcHost=iatisund424.mail.localdomain,dbName=tametcon,schemaName=orsi,bindVar=ull,sqlError=success,respSize=2290,respTime=1.468000,affRows=etdolore,action="cancel",rawQuery="ore" -%IMPERVA-Imperva,event#=ectetur,createTime=2019-04-01 00:38:14,eventType=cons,eventSev=medium,username=fugit,subsystem=dantiu,message="ntutla" -%IMPERVA-Imperva,dstIP=10.207.198.239,dstPort=4735,dbUsername=Loremips,srcIP=10.8.147.176,srcPort=5920,creatTime=15 April 2019 07:40:49,srvGroup=odtem,service=ite,appName=tseddo,event#=ptatems,eventType=Login,usrGroup=ori,usrAuth=False,application="exerc",osUsername=aUteni,srcHost=uidolo7626.local,dbName=rchite,schemaName=incididu,bindVar=idolor,sqlError=failure,respSize=3043,respTime=36.712000,affRows=oinB,action="accept",rawQuery="econsequ" -%IMPERVA-Imperva,dstIP=10.116.26.185,dstPort=595,dbUsername=oNe,srcIP=10.206.221.180,srcPort=6818,creatTime=2019-04-29 14:43:23,srvGroup=repr,service=idu,appName=otam,event#=amquaera,eventType=rumS,usrGroup=uelau,usrAuth=quidolor,application="cca",osUsername=litesseq,srcHost=dmini3435.internal.domain,dbName=rumexerc,schemaName=nseq,bindVar=quisnost,sqlError=unknown,respSize=3218,respTime=26.485000,affRows=orisnisi,action="block",rawQuery="nul" -%IMPERVA-Imperva,dstIP=10.86.180.150,dstPort=5495,dbUsername=mnisis,srcIP=10.253.127.130,srcPort=5339,creatTime=2019-05-13 21:45:57,srvGroup=isciveli,service=urve,appName=sundeomn,event#=tasu,eventType=Logout,usrGroup=equunt,usrAuth=True,application="uat",osUsername=itasper,srcHost=nibusBo1864.domain,dbName=ent,schemaName=etconsec,bindVar=docons,sqlError=failure,respSize=4564,respTime=4.592000,affRows=mremap,action="allow",rawQuery="sperna" -%IMPERVA-Imperva,alert#=mexe,event#=sequatDu,createTime=2019-05-28 04:48:31,updateTime=ssuscip,alertSev=high,group=ciade,ruleName="busBonor",evntDesc="enima",category=emseq,disposition=osamni,eventType=umetMa,proto=ipv6-icmp,srcPort=4469,srcIP=10.220.175.201,dstPort=579,dstIP=10.158.161.5,policyName="eab",occurrences=4098,httpHost=ciduntut,webMethod=atisu,url="https://internal.example.com/architec/incul.txt?aborios=mco#amnisiu",webQuery="suntincu",soapAction=lore,resultCode=equatu,sessionID=enbyCi,username=dolo,addUsername=adipi,responseTime=beata,responseSize=evelites,direction=inbound,dbUsername=tNeq,queryGroup=umtot,application="eumiurer",srcHost=inv6528.www5.example,osUsername=rrors,schemaName=dolo,dbName=tsed,hdrName=corpori,action=allow -%IMPERVA-Imperva,event#=uioff,createTime=2019-06-11 11:51:06,eventType=ema,eventSev=low,username=mpo,subsystem=deritinv,message="ten" -%IMPERVA-Imperva,dstIP=10.150.27.144,dstPort=5627,dbUsername=res,srcIP=10.248.16.82,srcPort=6834,creatTime=25 June 2019 18:53:40,srvGroup=loinv,service=umd,appName=madmi,event#=xercit,eventType=Login,usrGroup=avolup,usrAuth=True,application="etdo",osUsername=tuserror,srcHost=nisiutal4437.www.example,dbName=uipex,schemaName=ditautf,bindVar=orr,sqlError=failure,respSize=4367,respTime=25.972000,affRows=uptas,action="cancel",rawQuery="osquira" -%IMPERVA-Imperva,dstIP=10.146.131.76,dstPort=2281,dbUsername=orsi,srcIP=10.173.19.140,srcPort=7780,creatTime=2019-07-10 01:56:14,srvGroup=atu,service=ddo,appName=veli,event#=ata,eventType=Logout,usrGroup=untmoll,usrAuth=False,application="ididun",osUsername=olo,srcHost=tqui5172.www.local,dbName=untex,schemaName=Except,bindVar=elitsedd,sqlError=failure,respSize=5844,respTime=52.550000,affRows=cingel,action="allow",rawQuery="seos" -%IMPERVA-Imperva,dstIP=10.69.5.227,dstPort=5845,dbUsername=doloreme,srcIP=10.171.175.165,srcPort=5776,creatTime=2019-07-24 08:58:48,srvGroup=taspe,service=litess,appName=enimadm,event#=corpori,eventType=onemull,usrGroup=emeu,usrAuth=uisaute,application="tvol",osUsername=ntocc,srcHost=intocca6708.mail.corp,dbName=dquiaco,schemaName=rumw,bindVar=ula,sqlError=failure,respSize=5201,respTime=46.690000,affRows=quam,action="deny",rawQuery="edquian" -%IMPERVA-Imperva,dstIP=10.213.214.118,dstPort=7851,dbUsername=ate,srcIP=10.253.175.129,srcPort=5547,creatTime=7 August 2019 16:01:23,srvGroup=rsi,service=tuser,appName=equinesc,event#=ectet,eventType=Login,usrGroup=emull,usrAuth=False,application="enatuser",osUsername=epteurs,srcHost=isetqu2843.www.invalid,dbName=niamqu,schemaName=nrep,bindVar=lauda,sqlError=failure,respSize=6260,respTime=9.295000,affRows=aincidu,action="deny",rawQuery="ipsamvol" -%IMPERVA-Imperva,alert#=estquido,event#=eufugiat,createTime=2019-08-21 23:03:57,updateTime=minima,alertSev=high,group=bor,ruleName="uisnos",evntDesc="loi",category=tation,disposition=seddoe,eventType=adol,proto=rdp,srcPort=7756,srcIP=10.149.91.130,dstPort=3548,dstIP=10.89.26.170,policyName="aqueipsa",occurrences=5863,httpHost=ide,webMethod=atcupi,url="https://www.example.com/sit/ugi.gif?sitametc=rur#edut",webQuery="sitametc",soapAction=iarchite,resultCode=uide,sessionID=iono,username=aboris,addUsername=eturad,responseTime=ipiscive,responseSize=sequu,direction=internal,dbUsername=epteur,queryGroup=iqu,application="uptateve",srcHost=commodo6041.mail.localhost,osUsername=atus,schemaName=orumetMa,dbName=inventor,hdrName=dolo,action=block -%IMPERVA-Imperva,alert#=tmolli,event#=orumSe,createTime=2019-09-05 06:06:31,updateTime=mSe,alertSev=high,group=teturad,ruleName="alorumwr",evntDesc="pis",category=idol,disposition=mmodico,eventType=emaccu,proto=rdp,srcPort=5818,srcIP=10.52.106.68,dstPort=856,dstIP=10.81.108.232,policyName="atemq",occurrences=5098,httpHost=volupta,webMethod=Quisaut,url="https://internal.example.net/obeatae/sedqui.jpg?nulap=onseq#amrem",webQuery="plicab",soapAction=isisten,resultCode=eiusmodt,sessionID=naaliq,username=aco,addUsername=psamvolu,responseTime=inculp,responseSize=eni,direction=inbound,dbUsername=sedqu,queryGroup=ipitlabo,application="olorinr",srcHost=gitse6744.api.local,osUsername=neavolup,schemaName=uaturve,dbName=lapa,hdrName=uepor,action="allow",errormsg="failure" -%IMPERVA-Imperva,alert#=umquamei,event#=nih,createTime=2019-09-19 13:09:05,updateTime=tionev,alertSev=high,group=quia,ruleName="eabill",evntDesc="itatiset",category=uaerat,disposition=met,eventType=isno,proto=icmp,srcPort=2572,srcIP=10.230.48.97,dstPort=1991,dstIP=10.223.10.28,policyName="emveleu",occurrences=4029,httpHost=norumet,webMethod=tconse,url="https://mail.example.com/iaturE/inc.htm?uisaut=mnihilm#itinvo",webQuery="lestia",soapAction=anti,resultCode=eavo,sessionID=enderi,username=erit,addUsername=uptatem,responseTime=reeufug,responseSize=temveleu,direction=unknown,dbUsername=repre,queryGroup=consec,application="untmoll",srcHost=par3605.internal.localdomain,osUsername=usmodte,schemaName=untex,dbName=ommodi,hdrName=ntiu,action="deny",errormsg="success" -%IMPERVA-Imperva,dstIP=10.115.42.231,dstPort=2143,dbUsername=res,srcIP=10.161.212.150,srcPort=2748,creatTime=3 October 2019 20:11:40,srvGroup=corporis,service=turExc,appName=urvelil,event#=ulapa,eventType=Login,usrGroup=abi,usrAuth=False,application="ameiusm",osUsername=tasnul,srcHost=isau4356.www.home,dbName=niamqui,schemaName=sequamn,bindVar=onse,sqlError=failure,respSize=4846,respTime=6.993000,affRows=aliquaUt,action="deny",rawQuery="natus" -%IMPERVA-Imperva,alert#=emp,event#=suscipit,createTime=2019-10-18 03:14:14,updateTime=iaconseq,alertSev=medium,group=sciuntNe,ruleName="nevo",evntDesc="stiaec",category=officia,disposition=ametcon,eventType=gnid,proto=ipv6,srcPort=5677,srcIP=10.226.75.20,dstPort=3896,dstIP=10.247.108.144,policyName="iutaliqu",occurrences=3711,httpHost=onsectet,webMethod=iat,url="https://www5.example.org/elaud/temsequ.htm?dolo=iciatisu#eip",webQuery="iquaUte",soapAction=aborumSe,resultCode=writt,sessionID=dent,username=tema,addUsername=saquaeab,responseTime=rpo,responseSize=inr,direction=internal,dbUsername=edquiac,queryGroup=olore,application="urEx",srcHost=labo3477.www5.domain,osUsername=maccusan,schemaName=fugia,dbName=psa,hdrName=iset,action="block",errormsg="success" -%IMPERVA-Imperva,dstIP=10.192.15.65,dstPort=3328,dbUsername=nimides,srcIP=10.97.22.61,srcPort=6420,creatTime=2019-11-01 10:16:48,srvGroup=labor,service=quelaud,appName=ira,event#=gna,eventType=aparia,usrGroup=ntoreve,usrAuth=remips,application="uptatemU",osUsername=illumd,srcHost=itseddo2209.mail.domain,dbName=olu,schemaName=rExcep,bindVar=turExcep,sqlError=success,respSize=4173,respTime=166.270000,affRows=duntutla,action="block",rawQuery="tmollit" -%IMPERVA-Imperva,alert#=venia,event#=Loremi,createTime=2019-11-15 17:19:22,updateTime=uisnostr,alertSev=medium,group=vol,ruleName="ommodi",evntDesc="ritat",category=dipi,disposition=asnulapa,eventType=atev,proto=tcp,srcPort=7469,srcIP=10.197.254.133,dstPort=2009,dstIP=10.116.76.161,policyName="tla",occurrences=2608,httpHost=ender,webMethod=quid,url="https://mail.example.net/teturad/nimide.htm?ueporroq=writ#ema",webQuery="ioffici",soapAction=agni,resultCode=tat,sessionID=metconse,username=ide,addUsername=equu,responseTime=pernatur,responseSize=orem,direction=outbound,dbUsername=caecatc,queryGroup=iarc,application="emquia",srcHost=duntutl3396.api.host,osUsername=idu,schemaName=trudex,dbName=ncul,hdrName=mcorpor,action=cancel -%IMPERVA-Imperva,dstIP=10.28.77.79,dstPort=3615,dbUsername=upta,srcIP=10.144.14.15,srcPort=1150,creatTime=30 November 2019 00:21:57,srvGroup=consequ,service=min,appName=riame,event#=gnaal,eventType=Login,usrGroup=nti,usrAuth=True,application="tetura",osUsername=utlab,srcHost=colabo6686.internal.invalid,dbName=uptass,schemaName=rspic,bindVar=itsedq,sqlError=success,respSize=4810,respTime=22.348000,affRows=iut,action="deny",rawQuery="nemu" -%IMPERVA-Imperva,dstIP=10.248.177.182,dstPort=317,dbUsername=quei,srcIP=10.18.15.43,srcPort=2224,creatTime=2019-12-14 07:24:31,srvGroup=reetdol,service=umtotam,appName=itaedi,event#=ant,eventType=tiumt,usrGroup=taedicta,usrAuth=mveniamq,application="exerci",osUsername=quaturve,srcHost=tsunti1164.www.example,dbName=equatur,schemaName=caecat,bindVar=oreetd,sqlError=unknown,respSize=983,respTime=113.318000,affRows=nderit,action="accept",rawQuery="icer" diff --git a/x-pack/filebeat/module/imperva/securesphere/test/generated.log-expected.json b/x-pack/filebeat/module/imperva/securesphere/test/generated.log-expected.json deleted file mode 100644 index 2865f2ce2cb..00000000000 --- a/x-pack/filebeat/module/imperva/securesphere/test/generated.log-expected.json +++ /dev/null @@ -1,5716 +0,0 @@ -[ - { - "destination.ip": "10.70.155.35", - "destination.port": 892, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.70.155.35,dstPort=892,dbUsername=tatno,srcIP=10.81.122.126,srcPort=4141,creatTime=29 January 2016 06:09:59,srvGroup=uam,service=untutl,appName=rad,event#=taliqu,eventType=Login,usrGroup=ommod,usrAuth=True,application=\"scivel\",osUsername=aqui,srcHost=radipis5408.mail.local,dbName=enatuse,schemaName=magn,bindVar=equuntu,sqlError=failure,respSize=5910,respTime=10.347000,affRows=sum,action=\"cancel\",rawQuery=\"sit\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "ommod", - "host.hostname": "radipis5408.mail.local", - "input.type": "log", - "log.offset": 0, - "network.application": "scivel", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "radipis5408.mail.local" - ], - "related.ip": [ - "10.70.155.35", - "10.81.122.126" - ], - "related.user": [ - "aqui", - "magn", - "tatno" - ], - "rsa.counters.dclass_c1": 5910, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "enatuse", - "rsa.db.index": "sit", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "ommod", - "rsa.misc.group_object": "uam", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 10.347, - "rsa.time.starttime": "2016-01-29T08:09:59.000Z", - "service.type": "imperva", - "source.address": "radipis5408.mail.local", - "source.ip": "10.81.122.126", - "source.port": 4141, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "tatno" - }, - { - "event.action": "erep", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=nimadmin,createTime=2016-02-12 13:12:33,eventType=erep,eventSev=low,username=temq,subsystem=ugiatqu,message=\"eacomm\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "low", - "log.offset": 439, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "temq" - ], - "rsa.internal.event_desc": "eacomm", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "erep", - "rsa.misc.severity": "low", - "rsa.time.starttime": "2016-02-12T15:12:33.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "temq" - }, - { - "destination.ip": "10.58.116.231", - "destination.port": 996, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.58.116.231,dstPort=996,dbUsername=qua,srcIP=10.159.182.171,srcPort=3947,creatTime=2016-02-26 20:15:08,srvGroup=apariat,service=mol,appName=pteursi,event#=onse,eventType=rumet,usrGroup=oll,usrAuth=erc,application=\"taliqu\",osUsername=temUten,srcHost=ccusan7572.api.home,dbName=aveniam,schemaName=uradi,bindVar=nimadmin,sqlError=failure,respSize=3626,respTime=79.328000,affRows=ender,action=\"accept\",rawQuery=\"ehenderi\"", - "fileset.name": "securesphere", - "group.name": "oll", - "host.hostname": "ccusan7572.api.home", - "input.type": "log", - "log.offset": 580, - "network.application": "taliqu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ccusan7572.api.home" - ], - "related.ip": [ - "10.159.182.171", - "10.58.116.231" - ], - "related.user": [ - "qua", - "temUten", - "uradi" - ], - "rsa.counters.dclass_c1": 3626, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "aveniam", - "rsa.db.index": "ehenderi", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "rumet", - "rsa.misc.group": "oll", - "rsa.misc.group_object": "apariat", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 79.328, - "rsa.time.starttime": "2016-02-26T22:15:08.000Z", - "service.type": "imperva", - "source.address": "ccusan7572.api.home", - "source.ip": "10.159.182.171", - "source.port": 3947, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "qua" - }, - { - "destination.ip": "10.232.27.250", - "destination.port": 7838, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.232.27.250,dstPort=7838,dbUsername=mquidol,srcIP=10.18.124.28,srcPort=7668,creatTime=12 March 2016 03:17:42,srvGroup=rsitamet,service=lupt,appName=xea,event#=qua,eventType=Login,usrGroup=luptatev,usrAuth=False,application=\"admi\",osUsername=modocons,srcHost=elaudant5931.internal.invalid,dbName=lores,schemaName=lapariat,bindVar=eddoei,sqlError=failure,respSize=6564,respTime=87.496000,affRows=nimadmin,action=\"cancel\",rawQuery=\"xercitat\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "luptatev", - "host.hostname": "elaudant5931.internal.invalid", - "input.type": "log", - "log.offset": 1023, - "network.application": "admi", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "elaudant5931.internal.invalid" - ], - "related.ip": [ - "10.18.124.28", - "10.232.27.250" - ], - "related.user": [ - "lapariat", - "modocons", - "mquidol" - ], - "rsa.counters.dclass_c1": 6564, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "lores", - "rsa.db.index": "xercitat", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "luptatev", - "rsa.misc.group_object": "rsitamet", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 87.496, - "rsa.time.starttime": "2016-03-12T05:17:42.000Z", - "service.type": "imperva", - "source.address": "elaudant5931.internal.invalid", - "source.ip": "10.18.124.28", - "source.port": 7668, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mquidol" - }, - { - "destination.ip": "10.197.250.10", - "destination.port": 5697, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=ationemu,event#=ice,createTime=2016-03-26 10:20:16,updateTime=estiae,alertSev=high,group=laborum,ruleName=\"tionof\",evntDesc=\"snostrud\",category=nama,disposition=quisnos,eventType=ite,proto=icmp,srcPort=2707,srcIP=10.6.137.200,dstPort=5697,dstIP=10.197.250.10,policyName=\"bor\",occurrences=7243,httpHost=hitect,webMethod=dol,url=\"https://internal.example.net/namali/taevit.html?nsecte=itame#eumfug\",webQuery=\"lit\",soapAction=asun,resultCode=estia,sessionID=eaq,username=occae,addUsername=ctetura,responseTime=labore,responseSize=texp,direction=external,dbUsername=adeseru,queryGroup=emoe,application=\"eaq\",srcHost=amest4147.mail.host,osUsername=intoc,schemaName=oluptas,dbName=tNequepo,hdrName=lup,action=cancel", - "fileset.name": "securesphere", - "group.name": "laborum", - "host.hostname": "amest4147.mail.host", - "input.type": "log", - "log.level": "high", - "log.offset": 1487, - "network.application": "eaq", - "network.direction": "external", - "network.protocol": "icmp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "amest4147.mail.host" - ], - "related.ip": [ - "10.197.250.10", - "10.6.137.200" - ], - "related.user": [ - "intoc", - "occae", - "oluptas" - ], - "rsa.counters.event_counter": 7243, - "rsa.db.database": "tNequepo", - "rsa.internal.event_desc": "snostrud", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "cancel", - "dol" - ], - "rsa.misc.category": "nama", - "rsa.misc.disposition": "quisnos", - "rsa.misc.event_type": "ite", - "rsa.misc.group": "laborum", - "rsa.misc.log_session_id": "eaq", - "rsa.misc.operation_id": "ationemu", - "rsa.misc.policy_name": "bor", - "rsa.misc.result_code": "estia", - "rsa.misc.rule_name": "tionof", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2016-03-26T12:20:16.000Z", - "rsa.web.alias_host": "hitect", - "rule.name": "tionof", - "service.type": "imperva", - "source.address": "amest4147.mail.host", - "source.ip": "10.6.137.200", - "source.port": 2707, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "internal.example.net", - "url.extension": "html", - "url.fragment": "eumfug", - "url.original": "https://internal.example.net/namali/taevit.html?nsecte=itame#eumfug", - "url.path": "/namali/taevit.html", - "url.query": [ - "lit", - "nsecte=itame" - ], - "url.scheme": "https", - "user.name": "occae" - }, - { - "destination.ip": "10.36.194.106", - "destination.port": 5473, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=sperna,event#=eabilloi,createTime=2016-04-09 17:22:51,updateTime=estia,alertSev=medium,group=tlab,ruleName=\"volupt\",evntDesc=\"osqui\",category=xerc,disposition=iutali,eventType=fdeFi,proto=igmp,srcPort=1696,srcIP=10.179.124.125,dstPort=5473,dstIP=10.36.194.106,policyName=\"eprehend\",occurrences=2462,httpHost=dutper,webMethod=lamcolab,url=\"https://example.net/tlabo/uames.gif?mpo=offi#giatnu\",webQuery=\"ulapa\",soapAction=liqui,resultCode=quioffi,sessionID=uptate,username=ncidid,addUsername=quaturve,responseTime=sequa,responseSize=aera,direction=outbound,dbUsername=rvel,queryGroup=uid,application=\"onsecte\",srcHost=eratv6205.internal.lan,osUsername=reme,schemaName=acommod,dbName=uaUteni,hdrName=udantium,action=accept", - "fileset.name": "securesphere", - "group.name": "tlab", - "host.hostname": "eratv6205.internal.lan", - "input.type": "log", - "log.level": "medium", - "log.offset": 2221, - "network.application": "onsecte", - "network.direction": "outbound", - "network.protocol": "igmp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "eratv6205.internal.lan" - ], - "related.ip": [ - "10.179.124.125", - "10.36.194.106" - ], - "related.user": [ - "acommod", - "ncidid", - "reme" - ], - "rsa.counters.event_counter": 2462, - "rsa.db.database": "uaUteni", - "rsa.internal.event_desc": "osqui", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "accept", - "lamcolab" - ], - "rsa.misc.category": "xerc", - "rsa.misc.disposition": "iutali", - "rsa.misc.event_type": "fdeFi", - "rsa.misc.group": "tlab", - "rsa.misc.log_session_id": "uptate", - "rsa.misc.operation_id": "sperna", - "rsa.misc.policy_name": "eprehend", - "rsa.misc.result_code": "quioffi", - "rsa.misc.rule_name": "volupt", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2016-04-09T19:22:51.000Z", - "rsa.web.alias_host": "dutper", - "rule.name": "volupt", - "service.type": "imperva", - "source.address": "eratv6205.internal.lan", - "source.ip": "10.179.124.125", - "source.port": 1696, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "example.net", - "url.extension": "gif", - "url.fragment": "giatnu", - "url.original": "https://example.net/tlabo/uames.gif?mpo=offi#giatnu", - "url.path": "/tlabo/uames.gif", - "url.query": [ - "mpo=offi", - "ulapa" - ], - "url.scheme": "https", - "user.name": "ncidid" - }, - { - "destination.ip": "10.129.149.43", - "destination.port": 3304, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.129.149.43,dstPort=3304,dbUsername=eveli,srcIP=10.211.105.204,srcPort=2742,creatTime=2016-04-24 00:25:25,srvGroup=aliquide,service=ofde,appName=equat,event#=derit,eventType=Logout,usrGroup=dexea,usrAuth=True,application=\"atcu\",osUsername=labor,srcHost=didunt1355.corp,dbName=udan,schemaName=orema,bindVar=invento,sqlError=failure,respSize=6855,respTime=74.098000,affRows=nofdeFin,action=\"accept\",rawQuery=\"rau\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "dexea", - "host.hostname": "didunt1355.corp", - "input.type": "log", - "log.offset": 2965, - "network.application": "atcu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "didunt1355.corp" - ], - "related.ip": [ - "10.129.149.43", - "10.211.105.204" - ], - "related.user": [ - "eveli", - "labor", - "orema" - ], - "rsa.counters.dclass_c1": 6855, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "udan", - "rsa.db.index": "rau", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "dexea", - "rsa.misc.group_object": "aliquide", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 74.098, - "rsa.time.starttime": "2016-04-24T02:25:25.000Z", - "service.type": "imperva", - "source.address": "didunt1355.corp", - "source.ip": "10.211.105.204", - "source.port": 2742, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "eveli" - }, - { - "destination.ip": "10.214.191.180", - "destination.port": 5848, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.214.191.180,dstPort=5848,dbUsername=ipsumdol,srcIP=10.112.250.193,srcPort=5705,creatTime=2016-05-08 07:27:59,srvGroup=urerepr,service=ese,appName=isaute,event#=ptatemq,eventType=Logout,usrGroup=luptatev,usrAuth=False,application=\"tlabore\",osUsername=Exc,srcHost=pora6854.www5.home,dbName=nevo,schemaName=ide,bindVar=aali,sqlError=success,respSize=6852,respTime=49.573000,affRows=etcons,action=\"cancel\",rawQuery=\"tenbyCi\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "luptatev", - "host.hostname": "pora6854.www5.home", - "input.type": "log", - "log.offset": 3402, - "network.application": "tlabore", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "pora6854.www5.home" - ], - "related.ip": [ - "10.112.250.193", - "10.214.191.180" - ], - "related.user": [ - "Exc", - "ide", - "ipsumdol" - ], - "rsa.counters.dclass_c1": 6852, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "nevo", - "rsa.db.index": "tenbyCi", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "luptatev", - "rsa.misc.group_object": "urerepr", - "rsa.misc.result": "success", - "rsa.time.duration_time": 49.573, - "rsa.time.starttime": "2016-05-08T09:27:59.000Z", - "service.type": "imperva", - "source.address": "pora6854.www5.home", - "source.ip": "10.112.250.193", - "source.port": 5705, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ipsumdol" - }, - { - "destination.ip": "10.251.20.13", - "destination.port": 264, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.251.20.13,dstPort=264,dbUsername=iquipe,srcIP=10.192.34.76,srcPort=1450,creatTime=2016-05-22 14:30:33,srvGroup=upida,service=tvolupt,appName=eufugi,event#=pici,eventType=abor,usrGroup=utpe,usrAuth=onsequ,application=\"temqu\",osUsername=ovol,srcHost=ptasn6599.www.localhost,dbName=lore,schemaName=tnonpro,bindVar=ionemu,sqlError=success,respSize=3645,respTime=20.909000,affRows=tanimid,action=\"deny\",rawQuery=\"uamni\"", - "fileset.name": "securesphere", - "group.name": "utpe", - "host.hostname": "ptasn6599.www.localhost", - "input.type": "log", - "log.offset": 3849, - "network.application": "temqu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ptasn6599.www.localhost" - ], - "related.ip": [ - "10.192.34.76", - "10.251.20.13" - ], - "related.user": [ - "iquipe", - "ovol", - "tnonpro" - ], - "rsa.counters.dclass_c1": 3645, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "lore", - "rsa.db.index": "uamni", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "abor", - "rsa.misc.group": "utpe", - "rsa.misc.group_object": "upida", - "rsa.misc.result": "success", - "rsa.time.duration_time": 20.909, - "rsa.time.starttime": "2016-05-22T16:30:33.000Z", - "service.type": "imperva", - "source.address": "ptasn6599.www.localhost", - "source.ip": "10.192.34.76", - "source.port": 1450, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "iquipe" - }, - { - "destination.ip": "10.74.105.218", - "destination.port": 2438, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.74.105.218,dstPort=2438,dbUsername=archite,srcIP=10.59.138.212,srcPort=7829,creatTime=2016-06-05 21:33:08,srvGroup=asi,service=datatno,appName=siutali,event#=amnih,eventType=Logout,usrGroup=ium,usrAuth=True,application=\"esciuntN\",osUsername=idunt,srcHost=ptasnu6684.mail.lan,dbName=orumSe,schemaName=boree,bindVar=intoc,sqlError=success,respSize=248,respTime=158.450000,affRows=eeufugia,action=\"block\",rawQuery=\"ofdeFini\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "ium", - "host.hostname": "ptasnu6684.mail.lan", - "input.type": "log", - "log.offset": 4290, - "network.application": "esciuntN", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ptasnu6684.mail.lan" - ], - "related.ip": [ - "10.59.138.212", - "10.74.105.218" - ], - "related.user": [ - "archite", - "boree", - "idunt" - ], - "rsa.counters.dclass_c1": 248, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "orumSe", - "rsa.db.index": "ofdeFini", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "ium", - "rsa.misc.group_object": "asi", - "rsa.misc.result": "success", - "rsa.time.duration_time": 158.45, - "rsa.time.starttime": "2016-06-05T23:33:08.000Z", - "service.type": "imperva", - "source.address": "ptasnu6684.mail.lan", - "source.ip": "10.59.138.212", - "source.port": 7829, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "archite" - }, - { - "destination.ip": "10.168.159.13", - "destination.port": 3319, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.168.159.13,dstPort=3319,dbUsername=inci,srcIP=10.230.173.4,srcPort=2631,creatTime=2016-06-20 04:35:42,srvGroup=avol,service=icero,appName=xer,event#=emipsumd,eventType=Logout,usrGroup=isisten,usrAuth=False,application=\"cusant\",osUsername=atemq,srcHost=rinre2977.api.corp,dbName=totamre,schemaName=isnostr,bindVar=umqu,sqlError=success,respSize=6135,respTime=86.668000,affRows=inesci,action=\"accept\",rawQuery=\"uia\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "isisten", - "host.hostname": "rinre2977.api.corp", - "input.type": "log", - "log.offset": 4738, - "network.application": "cusant", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "rinre2977.api.corp" - ], - "related.ip": [ - "10.168.159.13", - "10.230.173.4" - ], - "related.user": [ - "atemq", - "inci", - "isnostr" - ], - "rsa.counters.dclass_c1": 6135, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "totamre", - "rsa.db.index": "uia", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "isisten", - "rsa.misc.group_object": "avol", - "rsa.misc.result": "success", - "rsa.time.duration_time": 86.668, - "rsa.time.starttime": "2016-06-20T06:35:42.000Z", - "service.type": "imperva", - "source.address": "rinre2977.api.corp", - "source.ip": "10.230.173.4", - "source.port": 2631, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "inci" - }, - { - "destination.ip": "10.49.167.57", - "destination.port": 2119, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.49.167.57,dstPort=2119,dbUsername=tali,srcIP=10.41.21.204,srcPort=3540,creatTime=4 July 2016 11:38:16,srvGroup=rpori,service=ice,appName=oles,event#=edic,eventType=Login,usrGroup=seq,usrAuth=True,application=\"tutlab\",osUsername=sau,srcHost=atevelit2450.local,dbName=aperia,schemaName=ccaeca,bindVar=umdolo,sqlError=failure,respSize=6818,respTime=115.224000,affRows=stenatu,action=\"block\",rawQuery=\"orumSe\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "seq", - "host.hostname": "atevelit2450.local", - "input.type": "log", - "log.offset": 5178, - "network.application": "tutlab", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "atevelit2450.local" - ], - "related.ip": [ - "10.41.21.204", - "10.49.167.57" - ], - "related.user": [ - "ccaeca", - "sau", - "tali" - ], - "rsa.counters.dclass_c1": 6818, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "aperia", - "rsa.db.index": "orumSe", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "seq", - "rsa.misc.group_object": "rpori", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 115.224, - "rsa.time.starttime": "2016-07-04T13:38:16.000Z", - "service.type": "imperva", - "source.address": "atevelit2450.local", - "source.ip": "10.41.21.204", - "source.port": 3540, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "tali" - }, - { - "destination.ip": "10.62.147.186", - "destination.port": 5592, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=dutp,event#=psaquaea,createTime=2016-07-18 18:40:50,updateTime=taevita,alertSev=high,group=siut,ruleName=\"tconsect\",evntDesc=\"aquae\",category=boreetdo,disposition=aturve,eventType=ditemp,proto=ipv6,srcPort=3406,srcIP=10.216.125.252,dstPort=5592,dstIP=10.62.147.186,policyName=\"eumiure\",occurrences=4603,httpHost=ima,webMethod=quasia,url=\"https://example.org/umwrit/uptate.html?ctetura=aveni#elit\",webQuery=\"seosqui\",soapAction=sequamni,resultCode=uradi,sessionID=tot,username=llamco,addUsername=nea,responseTime=psum,responseSize=tasnulap,direction=inbound,dbUsername=umSe,queryGroup=xeacomm,application=\"cinge\",srcHost=itla658.api.localhost,osUsername=lorsita,schemaName=dolore,dbName=uptate,hdrName=quidexea,action=\"accept\",errormsg=\"unknown\"", - "fileset.name": "securesphere", - "group.name": "siut", - "host.hostname": "itla658.api.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 5610, - "network.application": "cinge", - "network.direction": "inbound", - "network.protocol": "ipv6", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "itla658.api.localhost" - ], - "related.ip": [ - "10.216.125.252", - "10.62.147.186" - ], - "related.user": [ - "dolore", - "llamco", - "lorsita" - ], - "rsa.counters.event_counter": 4603, - "rsa.db.database": "uptate", - "rsa.internal.event_desc": "aquae", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "accept", - "quasia" - ], - "rsa.misc.category": "boreetdo", - "rsa.misc.disposition": "aturve", - "rsa.misc.event_type": "ditemp", - "rsa.misc.group": "siut", - "rsa.misc.log_session_id": "tot", - "rsa.misc.operation_id": "dutp", - "rsa.misc.policy_name": "eumiure", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "uradi", - "rsa.misc.rule_name": "tconsect", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2016-07-18T20:40:50.000Z", - "rsa.web.alias_host": "ima", - "rule.name": "tconsect", - "service.type": "imperva", - "source.address": "itla658.api.localhost", - "source.ip": "10.216.125.252", - "source.port": 3406, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "example.org", - "url.extension": "html", - "url.fragment": "elit", - "url.original": "https://example.org/umwrit/uptate.html?ctetura=aveni#elit", - "url.path": "/umwrit/uptate.html", - "url.query": [ - "ctetura=aveni", - "seosqui" - ], - "url.scheme": "https", - "user.name": "llamco" - }, - { - "destination.ip": "10.204.128.215", - "destination.port": 2538, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=ate,event#=odoconse,createTime=2016-08-02 01:43:25,updateTime=emp,alertSev=very-high,group=veli,ruleName=\"tenim\",evntDesc=\"rumet\",category=verita,disposition=sectet,eventType=etdo,proto=tcp,srcPort=3689,srcIP=10.52.125.9,dstPort=2538,dstIP=10.204.128.215,policyName=\"ama\",occurrences=332,httpHost=runtmol,webMethod=texpli,url=\"https://api.example.org/roidents/tem.txt?tametcon=liqua#mvele\",webQuery=\"isis\",soapAction=uasiar,resultCode=utlab,sessionID=emUteni,username=rum,addUsername=gnaaliqu,responseTime=teirured,responseSize=onemulla,direction=external,dbUsername=bor,queryGroup=rauto,application=\"ationev\",srcHost=umdolor4389.api.home,osUsername=paquioff,schemaName=nci,dbName=isau,hdrName=rautodi,action=deny", - "fileset.name": "securesphere", - "group.name": "veli", - "host.hostname": "umdolor4389.api.home", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6379, - "network.application": "ationev", - "network.direction": "external", - "network.protocol": "tcp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "umdolor4389.api.home" - ], - "related.ip": [ - "10.204.128.215", - "10.52.125.9" - ], - "related.user": [ - "nci", - "paquioff", - "rum" - ], - "rsa.counters.event_counter": 332, - "rsa.db.database": "isau", - "rsa.internal.event_desc": "rumet", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny", - "texpli" - ], - "rsa.misc.category": "verita", - "rsa.misc.disposition": "sectet", - "rsa.misc.event_type": "etdo", - "rsa.misc.group": "veli", - "rsa.misc.log_session_id": "emUteni", - "rsa.misc.operation_id": "ate", - "rsa.misc.policy_name": "ama", - "rsa.misc.result_code": "utlab", - "rsa.misc.rule_name": "tenim", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2016-08-02T03:43:25.000Z", - "rsa.web.alias_host": "runtmol", - "rule.name": "tenim", - "service.type": "imperva", - "source.address": "umdolor4389.api.home", - "source.ip": "10.52.125.9", - "source.port": 3689, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "api.example.org", - "url.extension": "txt", - "url.fragment": "mvele", - "url.original": "https://api.example.org/roidents/tem.txt?tametcon=liqua#mvele", - "url.path": "/roidents/tem.txt", - "url.query": [ - "isis", - "tametcon=liqua" - ], - "url.scheme": "https", - "user.name": "rum" - }, - { - "destination.ip": "10.200.68.129", - "destination.port": 2558, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.200.68.129,dstPort=2558,dbUsername=icabo,srcIP=10.34.148.166,srcPort=3022,creatTime=2016-08-16 08:45:59,srvGroup=preh,service=ercit,appName=etMal,event#=qua,eventType=rsita,usrGroup=ate,usrAuth=ipsamvo,application=\"onula\",osUsername=miu,srcHost=rationev6444.localhost,dbName=tatem,schemaName=untutlab,bindVar=amcor,sqlError=failure,respSize=5427,respTime=176.685000,affRows=oremq,action=\"block\",rawQuery=\"uisaute\"", - "fileset.name": "securesphere", - "group.name": "ate", - "host.hostname": "rationev6444.localhost", - "input.type": "log", - "log.offset": 7117, - "network.application": "onula", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "rationev6444.localhost" - ], - "related.ip": [ - "10.200.68.129", - "10.34.148.166" - ], - "related.user": [ - "icabo", - "miu", - "untutlab" - ], - "rsa.counters.dclass_c1": 5427, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "tatem", - "rsa.db.index": "uisaute", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "rsita", - "rsa.misc.group": "ate", - "rsa.misc.group_object": "preh", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 176.685, - "rsa.time.starttime": "2016-08-16T10:45:59.000Z", - "service.type": "imperva", - "source.address": "rationev6444.localhost", - "source.ip": "10.34.148.166", - "source.port": 3022, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "icabo" - }, - { - "destination.ip": "10.226.101.180", - "destination.port": 1000, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.226.101.180,dstPort=1000,dbUsername=siu,srcIP=10.134.5.40,srcPort=7284,creatTime=30 August 2016 15:48:33,srvGroup=llamc,service=nte,appName=mvel,event#=nof,eventType=Login,usrGroup=usmodi,usrAuth=False,application=\"mvolu\",osUsername=conse,srcHost=ipi7727.www5.domain,dbName=isiu,schemaName=licabo,bindVar=enimadmi,sqlError=success,respSize=6356,respTime=41.238000,affRows=xeaco,action=\"deny\",rawQuery=\"amcor\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "usmodi", - "host.hostname": "ipi7727.www5.domain", - "input.type": "log", - "log.offset": 7557, - "network.application": "mvolu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ipi7727.www5.domain" - ], - "related.ip": [ - "10.134.5.40", - "10.226.101.180" - ], - "related.user": [ - "conse", - "licabo", - "siu" - ], - "rsa.counters.dclass_c1": 6356, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "isiu", - "rsa.db.index": "amcor", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "usmodi", - "rsa.misc.group_object": "llamc", - "rsa.misc.result": "success", - "rsa.time.duration_time": 41.238, - "rsa.time.starttime": "2016-08-30T17:48:33.000Z", - "service.type": "imperva", - "source.address": "ipi7727.www5.domain", - "source.ip": "10.134.5.40", - "source.port": 7284, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "siu" - }, - { - "destination.ip": "10.126.26.131", - "destination.port": 2595, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.126.26.131,dstPort=2595,dbUsername=velite,srcIP=10.30.98.10,srcPort=7576,creatTime=13 September 2016 22:51:07,srvGroup=itation,service=sequatD,appName=nimave,event#=isciv,eventType=Login,usrGroup=rroqu,usrAuth=False,application=\"nofd\",osUsername=dipisci,srcHost=spernatu5539.domain,dbName=quunt,schemaName=olori,bindVar=mquae,sqlError=unknown,respSize=7717,respTime=96.729000,affRows=cidunt,action=\"accept\",rawQuery=\"borisnis\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "rroqu", - "host.hostname": "spernatu5539.domain", - "input.type": "log", - "log.offset": 7992, - "network.application": "nofd", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "spernatu5539.domain" - ], - "related.ip": [ - "10.126.26.131", - "10.30.98.10" - ], - "related.user": [ - "dipisci", - "olori", - "velite" - ], - "rsa.counters.dclass_c1": 7717, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "quunt", - "rsa.db.index": "borisnis", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "rroqu", - "rsa.misc.group_object": "itation", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 96.729, - "rsa.time.starttime": "2016-09-14T00:51:07.000Z", - "service.type": "imperva", - "source.address": "spernatu5539.domain", - "source.ip": "10.30.98.10", - "source.port": 7576, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "velite" - }, - { - "destination.ip": "10.190.10.219", - "destination.port": 5530, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.190.10.219,dstPort=5530,dbUsername=accusant,srcIP=10.233.120.207,srcPort=136,creatTime=2016-09-28 05:53:42,srvGroup=stenatu,service=inibu,appName=est,event#=uptatemU,eventType=Logout,usrGroup=leumiu,usrAuth=False,application=\"tla\",osUsername=item,srcHost=nimid372.api.corp,dbName=atcupid,schemaName=quamnih,bindVar=dminima,sqlError=success,respSize=3278,respTime=60.949000,affRows=tame,action=\"cancel\",rawQuery=\"reetd\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "leumiu", - "host.hostname": "nimid372.api.corp", - "input.type": "log", - "log.offset": 8445, - "network.application": "tla", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "nimid372.api.corp" - ], - "related.ip": [ - "10.190.10.219", - "10.233.120.207" - ], - "related.user": [ - "accusant", - "item", - "quamnih" - ], - "rsa.counters.dclass_c1": 3278, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "atcupid", - "rsa.db.index": "reetd", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "leumiu", - "rsa.misc.group_object": "stenatu", - "rsa.misc.result": "success", - "rsa.time.duration_time": 60.949, - "rsa.time.starttime": "2016-09-28T07:53:42.000Z", - "service.type": "imperva", - "source.address": "nimid372.api.corp", - "source.ip": "10.233.120.207", - "source.port": 136, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "accusant" - }, - { - "event.action": "rad", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=sitam,createTime=2016-10-12 12:56:16,eventType=rad,eventSev=low,username=sequa,subsystem=iosamnis,message=\"volupt\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "low", - "log.offset": 8890, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "sequa" - ], - "rsa.internal.event_desc": "volupt", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "rad", - "rsa.misc.severity": "low", - "rsa.time.starttime": "2016-10-12T14:56:16.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "sequa" - }, - { - "destination.ip": "10.100.98.56", - "destination.port": 1089, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.100.98.56,dstPort=1089,dbUsername=boru,srcIP=10.248.184.200,srcPort=5315,creatTime=2016-10-26 19:58:50,srvGroup=ptatem,service=ptatevel,appName=tenatuse,event#=psaqua,eventType=Logout,usrGroup=ullamcor,usrAuth=False,application=\"itationu\",osUsername=proident,srcHost=maliquam2147.internal.home,dbName=lores,schemaName=ritati,bindVar=orisni,sqlError=failure,respSize=5923,respTime=179.541000,affRows=sitam,action=\"deny\",rawQuery=\"mmodoc\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "ullamcor", - "host.hostname": "maliquam2147.internal.home", - "input.type": "log", - "log.offset": 9029, - "network.application": "itationu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "maliquam2147.internal.home" - ], - "related.ip": [ - "10.100.98.56", - "10.248.184.200" - ], - "related.user": [ - "boru", - "proident", - "ritati" - ], - "rsa.counters.dclass_c1": 5923, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "lores", - "rsa.db.index": "mmodoc", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "ullamcor", - "rsa.misc.group_object": "ptatem", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 179.541, - "rsa.time.starttime": "2016-10-26T21:58:50.000Z", - "service.type": "imperva", - "source.address": "maliquam2147.internal.home", - "source.ip": "10.248.184.200", - "source.port": 5315, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "boru" - }, - { - "destination.ip": "10.197.6.245", - "destination.port": 27, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.197.6.245,dstPort=27,dbUsername=dtempo,srcIP=10.82.28.220,srcPort=3570,creatTime=10 November 2016 03:01:24,srvGroup=imad,service=tinvolup,appName=tsed,event#=inv,eventType=Login,usrGroup=rroq,usrAuth=False,application=\"rcit\",osUsername=aecatcup,srcHost=olabor2983.internal.localhost,dbName=citatio,schemaName=oluptat,bindVar=mveniamq,sqlError=success,respSize=3071,respTime=120.142000,affRows=eaqueips,action=\"allow\",rawQuery=\"aturve\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "rroq", - "host.hostname": "olabor2983.internal.localhost", - "input.type": "log", - "log.offset": 9492, - "network.application": "rcit", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "olabor2983.internal.localhost" - ], - "related.ip": [ - "10.197.6.245", - "10.82.28.220" - ], - "related.user": [ - "aecatcup", - "dtempo", - "oluptat" - ], - "rsa.counters.dclass_c1": 3071, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "citatio", - "rsa.db.index": "aturve", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "rroq", - "rsa.misc.group_object": "imad", - "rsa.misc.result": "success", - "rsa.time.duration_time": 120.142, - "rsa.time.starttime": "2016-11-10T05:01:24.000Z", - "service.type": "imperva", - "source.address": "olabor2983.internal.localhost", - "source.ip": "10.82.28.220", - "source.port": 3570, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "dtempo" - }, - { - "destination.ip": "10.6.27.103", - "destination.port": 3179, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.6.27.103,dstPort=3179,dbUsername=redol,srcIP=10.167.252.183,srcPort=2003,creatTime=24 November 2016 10:03:59,srvGroup=doei,service=cipitl,appName=caboNemo,event#=dexerc,eventType=Login,usrGroup=strumex,usrAuth=True,application=\"eprehend\",osUsername=asnu,srcHost=hitec2111.mail.corp,dbName=perspici,schemaName=ationul,bindVar=mquisn,sqlError=failure,respSize=6606,respTime=155.907000,affRows=emUte,action=\"cancel\",rawQuery=\"ccae\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "strumex", - "host.hostname": "hitec2111.mail.corp", - "input.type": "log", - "log.offset": 9953, - "network.application": "eprehend", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "hitec2111.mail.corp" - ], - "related.ip": [ - "10.167.252.183", - "10.6.27.103" - ], - "related.user": [ - "asnu", - "ationul", - "redol" - ], - "rsa.counters.dclass_c1": 6606, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "perspici", - "rsa.db.index": "ccae", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "strumex", - "rsa.misc.group_object": "doei", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 155.907, - "rsa.time.starttime": "2016-11-24T12:03:59.000Z", - "service.type": "imperva", - "source.address": "hitec2111.mail.corp", - "source.ip": "10.167.252.183", - "source.port": 2003, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "redol" - }, - { - "destination.ip": "10.81.184.7", - "destination.port": 6735, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=ntNe,event#=itanim,createTime=2016-12-08 17:06:33,updateTime=nesciun,alertSev=medium,group=mollita,ruleName=\"tatem\",evntDesc=\"iae\",category=quido,disposition=emip,eventType=inBC,proto=tcp,srcPort=6165,srcIP=10.88.45.111,dstPort=6735,dstIP=10.81.184.7,policyName=\"saquaea\",occurrences=6344,httpHost=eetd,webMethod=illu,url=\"https://mail.example.com/lorsi/repreh.gif?sitamet=utlabo#tetur\",webQuery=\"tionula\",soapAction=ritqu,resultCode=ecatcupi,sessionID=uamei,username=undeomni,addUsername=tas,responseTime=autfugi,responseSize=tasun,direction=external,dbUsername=eratv,queryGroup=ipsa,application=\"asuntexp\",srcHost=adminim2559.www5.invalid,osUsername=lmole,schemaName=iameaque,dbName=nderi,hdrName=ssusci,action=\"deny\",errormsg=\"failure\"", - "fileset.name": "securesphere", - "group.name": "mollita", - "host.hostname": "adminim2559.www5.invalid", - "input.type": "log", - "log.level": "medium", - "log.offset": 10408, - "network.application": "asuntexp", - "network.direction": "external", - "network.protocol": "tcp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "adminim2559.www5.invalid" - ], - "related.ip": [ - "10.81.184.7", - "10.88.45.111" - ], - "related.user": [ - "iameaque", - "lmole", - "undeomni" - ], - "rsa.counters.event_counter": 6344, - "rsa.db.database": "nderi", - "rsa.internal.event_desc": "iae", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny", - "illu" - ], - "rsa.misc.category": "quido", - "rsa.misc.disposition": "emip", - "rsa.misc.event_type": "inBC", - "rsa.misc.group": "mollita", - "rsa.misc.log_session_id": "uamei", - "rsa.misc.operation_id": "ntNe", - "rsa.misc.policy_name": "saquaea", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "ecatcupi", - "rsa.misc.rule_name": "tatem", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2016-12-08T19:06:33.000Z", - "rsa.web.alias_host": "eetd", - "rule.name": "tatem", - "service.type": "imperva", - "source.address": "adminim2559.www5.invalid", - "source.ip": "10.88.45.111", - "source.port": 6165, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "mail.example.com", - "url.extension": "gif", - "url.fragment": "tetur", - "url.original": "https://mail.example.com/lorsi/repreh.gif?sitamet=utlabo#tetur", - "url.path": "/lorsi/repreh.gif", - "url.query": [ - "sitamet=utlabo", - "tionula" - ], - "url.scheme": "https", - "user.name": "undeomni" - }, - { - "destination.ip": "10.214.3.140", - "destination.port": 6127, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.214.3.140,dstPort=6127,dbUsername=scipitl,srcIP=10.29.119.245,srcPort=1179,creatTime=2016-12-23 00:09:07,srvGroup=olli,service=rever,appName=ore,event#=offici,eventType=Logout,usrGroup=ection,usrAuth=False,application=\"roquisqu\",osUsername=edolorin,srcHost=dolorem6882.api.local,dbName=rsi,schemaName=taliqui,bindVar=mides,sqlError=success,respSize=5140,respTime=119.229000,affRows=tcu,action=\"cancel\",rawQuery=\"inrepreh\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "ection", - "host.hostname": "dolorem6882.api.local", - "input.type": "log", - "log.offset": 11171, - "network.application": "roquisqu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "dolorem6882.api.local" - ], - "related.ip": [ - "10.214.3.140", - "10.29.119.245" - ], - "related.user": [ - "edolorin", - "scipitl", - "taliqui" - ], - "rsa.counters.dclass_c1": 5140, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "rsi", - "rsa.db.index": "inrepreh", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "ection", - "rsa.misc.group_object": "olli", - "rsa.misc.result": "success", - "rsa.time.duration_time": 119.229, - "rsa.time.starttime": "2016-12-23T02:09:07.000Z", - "service.type": "imperva", - "source.address": "dolorem6882.api.local", - "source.ip": "10.29.119.245", - "source.port": 1179, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "scipitl" - }, - { - "destination.ip": "10.110.133.7", - "destination.port": 57, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=dipiscin,event#=olup,createTime=2017-01-06 07:11:41,updateTime=aco,alertSev=medium,group=accusa,ruleName=\"natu\",evntDesc=\"liquid\",category=enim,disposition=Finibus,eventType=radi,proto=rdp,srcPort=2064,srcIP=10.218.123.234,dstPort=57,dstIP=10.110.133.7,policyName=\"radipisc\",occurrences=5347,httpHost=nibus,webMethod=vitaed,url=\"https://example.org/etconsec/elillum.htm?mporinc=onsectet#idolo\",webQuery=\"atemUte\",soapAction=docon,resultCode=mdolore,sessionID=eosquira,username=pta,addUsername=snos,responseTime=orsi,responseSize=tetura,direction=external,dbUsername=lorsita,queryGroup=eavol,application=\"osamnis\",srcHost=temaccu5302.test,osUsername=etconsec,schemaName=caboNem,dbName=urExcept,hdrName=rumetMal,action=\"allow\",errormsg=\"unknown\"", - "fileset.name": "securesphere", - "group.name": "accusa", - "host.hostname": "temaccu5302.test", - "input.type": "log", - "log.level": "medium", - "log.offset": 11619, - "network.application": "osamnis", - "network.direction": "external", - "network.protocol": "rdp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "temaccu5302.test" - ], - "related.ip": [ - "10.110.133.7", - "10.218.123.234" - ], - "related.user": [ - "caboNem", - "etconsec", - "pta" - ], - "rsa.counters.event_counter": 5347, - "rsa.db.database": "urExcept", - "rsa.internal.event_desc": "liquid", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "allow", - "vitaed" - ], - "rsa.misc.category": "enim", - "rsa.misc.disposition": "Finibus", - "rsa.misc.event_type": "radi", - "rsa.misc.group": "accusa", - "rsa.misc.log_session_id": "eosquira", - "rsa.misc.operation_id": "dipiscin", - "rsa.misc.policy_name": "radipisc", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "mdolore", - "rsa.misc.rule_name": "natu", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2017-01-06T09:11:41.000Z", - "rsa.web.alias_host": "nibus", - "rule.name": "natu", - "service.type": "imperva", - "source.address": "temaccu5302.test", - "source.ip": "10.218.123.234", - "source.port": 2064, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "idolo", - "url.original": "https://example.org/etconsec/elillum.htm?mporinc=onsectet#idolo", - "url.path": "/etconsec/elillum.htm", - "url.query": [ - "atemUte", - "mporinc=onsectet" - ], - "url.scheme": "https", - "user.name": "pta" - }, - { - "destination.ip": "10.105.190.170", - "destination.port": 2519, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.105.190.170,dstPort=2519,dbUsername=doeiu,srcIP=10.182.152.242,srcPort=1877,creatTime=2017-01-20 14:14:16,srvGroup=orumw,service=redol,appName=ecillum,event#=isci,eventType=Logout,usrGroup=dolor,usrAuth=True,application=\"tiumto\",osUsername=litan,srcHost=nder347.www.corp,dbName=alorum,schemaName=mquisn,bindVar=atq,sqlError=unknown,respSize=3474,respTime=68.556000,affRows=ugiatquo,action=\"block\",rawQuery=\"equamnih\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "dolor", - "host.hostname": "nder347.www.corp", - "input.type": "log", - "log.offset": 12387, - "network.application": "tiumto", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "nder347.www.corp" - ], - "related.ip": [ - "10.105.190.170", - "10.182.152.242" - ], - "related.user": [ - "doeiu", - "litan", - "mquisn" - ], - "rsa.counters.dclass_c1": 3474, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "alorum", - "rsa.db.index": "equamnih", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "dolor", - "rsa.misc.group_object": "orumw", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 68.556, - "rsa.time.starttime": "2017-01-20T16:14:16.000Z", - "service.type": "imperva", - "source.address": "nder347.www.corp", - "source.ip": "10.182.152.242", - "source.port": 1877, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "doeiu" - }, - { - "destination.ip": "10.123.166.197", - "destination.port": 7082, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=citati,event#=uamei,createTime=2017-02-03 21:16:50,updateTime=eursinto,alertSev=low,group=tutla,ruleName=\"licaboNe\",evntDesc=\"tautfug\",category=giatquov,disposition=olu,eventType=rmagnido,proto=ipv6-icmp,srcPort=7647,srcIP=10.59.188.188,dstPort=7082,dstIP=10.123.166.197,policyName=\"ici\",occurrences=7102,httpHost=mips,webMethod=itae,url=\"https://internal.example.net/atnula/ditautf.jpg?iquidex=olup#remipsu\",webQuery=\"tan\",soapAction=quiac,resultCode=sunt,sessionID=autfugit,username=emUte,addUsername=iusmodi,responseTime=fdeFi,responseSize=Except,direction=inbound,dbUsername=equat,queryGroup=aliquid,application=\"usantiu\",srcHost=idunt4633.internal.host,osUsername=liquam,schemaName=min,dbName=oluptat,hdrName=odt,action=block", - "fileset.name": "securesphere", - "group.name": "tutla", - "host.hostname": "idunt4633.internal.host", - "input.type": "log", - "log.level": "low", - "log.offset": 12830, - "network.application": "usantiu", - "network.direction": "inbound", - "network.protocol": "ipv6-icmp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "idunt4633.internal.host" - ], - "related.ip": [ - "10.123.166.197", - "10.59.188.188" - ], - "related.user": [ - "emUte", - "liquam", - "min" - ], - "rsa.counters.event_counter": 7102, - "rsa.db.database": "oluptat", - "rsa.internal.event_desc": "tautfug", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "block", - "itae" - ], - "rsa.misc.category": "giatquov", - "rsa.misc.disposition": "olu", - "rsa.misc.event_type": "rmagnido", - "rsa.misc.group": "tutla", - "rsa.misc.log_session_id": "autfugit", - "rsa.misc.operation_id": "citati", - "rsa.misc.policy_name": "ici", - "rsa.misc.result_code": "sunt", - "rsa.misc.rule_name": "licaboNe", - "rsa.misc.severity": "low", - "rsa.time.starttime": "2017-02-03T23:16:50.000Z", - "rsa.web.alias_host": "mips", - "rule.name": "licaboNe", - "service.type": "imperva", - "source.address": "idunt4633.internal.host", - "source.ip": "10.59.188.188", - "source.port": 7647, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "remipsu", - "url.original": "https://internal.example.net/atnula/ditautf.jpg?iquidex=olup#remipsu", - "url.path": "/atnula/ditautf.jpg", - "url.query": [ - "iquidex=olup", - "tan" - ], - "url.scheme": "https", - "user.name": "emUte" - }, - { - "destination.ip": "10.72.75.207", - "destination.port": 6336, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.72.75.207,dstPort=6336,dbUsername=urau,srcIP=10.201.168.116,srcPort=2037,creatTime=2017-02-18 04:19:24,srvGroup=utali,service=sed,appName=xeac,event#=umdolors,eventType=Logout,usrGroup=lumdo,usrAuth=False,application=\"acom\",osUsername=eFini,srcHost=ectob4634.mail.localhost,dbName=prehend,schemaName=eufug,bindVar=roquisq,sqlError=unknown,respSize=3348,respTime=79.765000,affRows=civelits,action=\"accept\",rawQuery=\"reet\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "lumdo", - "host.hostname": "ectob4634.mail.localhost", - "input.type": "log", - "log.offset": 13585, - "network.application": "acom", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ectob4634.mail.localhost" - ], - "related.ip": [ - "10.201.168.116", - "10.72.75.207" - ], - "related.user": [ - "eFini", - "eufug", - "urau" - ], - "rsa.counters.dclass_c1": 3348, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "prehend", - "rsa.db.index": "reet", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "lumdo", - "rsa.misc.group_object": "utali", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 79.765, - "rsa.time.starttime": "2017-02-18T06:19:24.000Z", - "service.type": "imperva", - "source.address": "ectob4634.mail.localhost", - "source.ip": "10.201.168.116", - "source.port": 2037, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "urau" - }, - { - "destination.ip": "10.9.46.123", - "destination.port": 586, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.9.46.123,dstPort=586,dbUsername=mfu,srcIP=10.58.133.175,srcPort=1634,creatTime=4 March 2017 11:21:59,srvGroup=llumq,service=tenim,appName=eiusmo,event#=ainc,eventType=Login,usrGroup=miurerep,usrAuth=True,application=\"lestia\",osUsername=nde,srcHost=snu6436.www.local,dbName=texplica,schemaName=oco,bindVar=aboree,sqlError=unknown,respSize=3795,respTime=14.713000,affRows=edquian,action=\"block\",rawQuery=\"uames\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "miurerep", - "host.hostname": "snu6436.www.local", - "input.type": "log", - "log.offset": 14032, - "network.application": "lestia", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "snu6436.www.local" - ], - "related.ip": [ - "10.58.133.175", - "10.9.46.123" - ], - "related.user": [ - "mfu", - "nde", - "oco" - ], - "rsa.counters.dclass_c1": 3795, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "texplica", - "rsa.db.index": "uames", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "miurerep", - "rsa.misc.group_object": "llumq", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 14.713, - "rsa.time.starttime": "2017-03-04T13:21:59.000Z", - "service.type": "imperva", - "source.address": "snu6436.www.local", - "source.ip": "10.58.133.175", - "source.port": 1634, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mfu" - }, - { - "destination.ip": "10.169.50.59", - "destination.port": 7693, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.169.50.59,dstPort=7693,dbUsername=pta,srcIP=10.70.29.203,srcPort=5994,creatTime=18 March 2017 18:24:33,srvGroup=piciatis,service=destla,appName=fugitse,event#=minimve,eventType=Login,usrGroup=serrorsi,usrAuth=False,application=\"tametco\",osUsername=mquisnos,srcHost=lore7099.www.host,dbName=isn,schemaName=veniamq,bindVar=lup,sqlError=unknown,respSize=2358,respTime=94.460000,affRows=ipitlabo,action=\"block\",rawQuery=\"prehen\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "serrorsi", - "host.hostname": "lore7099.www.host", - "input.type": "log", - "log.offset": 14468, - "network.application": "tametco", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "lore7099.www.host" - ], - "related.ip": [ - "10.169.50.59", - "10.70.29.203" - ], - "related.user": [ - "mquisnos", - "pta", - "veniamq" - ], - "rsa.counters.dclass_c1": 2358, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "isn", - "rsa.db.index": "prehen", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "serrorsi", - "rsa.misc.group_object": "piciatis", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 94.46, - "rsa.time.starttime": "2017-03-18T20:24:33.000Z", - "service.type": "imperva", - "source.address": "lore7099.www.host", - "source.ip": "10.70.29.203", - "source.port": 5994, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "pta" - }, - { - "destination.ip": "10.165.182.111", - "destination.port": 5525, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.165.182.111,dstPort=5525,dbUsername=ames,srcIP=10.137.85.123,srcPort=218,creatTime=2017-04-02 01:27:07,srvGroup=amquisno,service=modoc,appName=magnam,event#=uinesc,eventType=Logout,usrGroup=cid,usrAuth=True,application=\"emi\",osUsername=Bonorum,srcHost=lesti6939.api.local,dbName=idu,schemaName=sis,bindVar=idolo,sqlError=success,respSize=6401,respTime=171.434000,affRows=its,action=\"block\",rawQuery=\"edutp\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "cid", - "host.hostname": "lesti6939.api.local", - "input.type": "log", - "log.offset": 14919, - "network.application": "emi", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "lesti6939.api.local" - ], - "related.ip": [ - "10.137.85.123", - "10.165.182.111" - ], - "related.user": [ - "Bonorum", - "ames", - "sis" - ], - "rsa.counters.dclass_c1": 6401, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "idu", - "rsa.db.index": "edutp", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "cid", - "rsa.misc.group_object": "amquisno", - "rsa.misc.result": "success", - "rsa.time.duration_time": 171.434, - "rsa.time.starttime": "2017-04-02T03:27:07.000Z", - "service.type": "imperva", - "source.address": "lesti6939.api.local", - "source.ip": "10.137.85.123", - "source.port": 218, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ames" - }, - { - "event.action": "tateveli", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=enimadmi,createTime=2017-04-16 08:29:41,eventType=tateveli,eventSev=high,username=sumdolo,subsystem=idolorem,message=\"temvele\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "high", - "log.offset": 15352, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "sumdolo" - ], - "rsa.internal.event_desc": "temvele", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "tateveli", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2017-04-16T10:29:41.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "sumdolo" - }, - { - "destination.ip": "10.173.178.109", - "destination.port": 6659, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=inimve,event#=uio,createTime=2017-04-30 15:32:16,updateTime=mexercit,alertSev=high,group=onofdeF,ruleName=\"ibusBo\",evntDesc=\"orin\",category=enia,disposition=iavol,eventType=natuserr,proto=rdp,srcPort=3327,srcIP=10.64.184.196,dstPort=6659,dstIP=10.173.178.109,policyName=\"tatemse\",occurrences=4493,httpHost=amqui,webMethod=lamco,url=\"https://www.example.net/hender/ptatemU.htm?mquisnos=tnulapa#madmi\",webQuery=\"tlabore\",soapAction=idunt,resultCode=expl,sessionID=olore,username=uian,addUsername=atuserro,responseTime=madminim,responseSize=tobeata,direction=inbound,dbUsername=ioff,queryGroup=oinBCS,application=\"itsedd\",srcHost=upt6017.api.localdomain,osUsername=nesci,schemaName=tam,dbName=sin,hdrName=idexeac,action=\"block\",errormsg=\"failure\"", - "fileset.name": "securesphere", - "group.name": "onofdeF", - "host.hostname": "upt6017.api.localdomain", - "input.type": "log", - "log.level": "high", - "log.offset": 15503, - "network.application": "itsedd", - "network.direction": "inbound", - "network.protocol": "rdp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "upt6017.api.localdomain" - ], - "related.ip": [ - "10.173.178.109", - "10.64.184.196" - ], - "related.user": [ - "nesci", - "tam", - "uian" - ], - "rsa.counters.event_counter": 4493, - "rsa.db.database": "sin", - "rsa.internal.event_desc": "orin", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "block", - "lamco" - ], - "rsa.misc.category": "enia", - "rsa.misc.disposition": "iavol", - "rsa.misc.event_type": "natuserr", - "rsa.misc.group": "onofdeF", - "rsa.misc.log_session_id": "olore", - "rsa.misc.operation_id": "inimve", - "rsa.misc.policy_name": "tatemse", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "expl", - "rsa.misc.rule_name": "ibusBo", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2017-04-30T17:32:16.000Z", - "rsa.web.alias_host": "amqui", - "rule.name": "ibusBo", - "service.type": "imperva", - "source.address": "upt6017.api.localdomain", - "source.ip": "10.64.184.196", - "source.port": 3327, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "www.example.net", - "url.extension": "htm", - "url.fragment": "madmi", - "url.original": "https://www.example.net/hender/ptatemU.htm?mquisnos=tnulapa#madmi", - "url.path": "/hender/ptatemU.htm", - "url.query": [ - "mquisnos=tnulapa", - "tlabore" - ], - "url.scheme": "https", - "user.name": "uian" - }, - { - "destination.ip": "10.90.50.149", - "destination.port": 1936, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.90.50.149,dstPort=1936,dbUsername=olu,srcIP=10.168.225.209,srcPort=6,creatTime=2017-05-14 22:34:50,srvGroup=taliq,service=tautfugi,appName=fdeFinib,event#=uip,eventType=Logout,usrGroup=ectobea,usrAuth=True,application=\"dat\",osUsername=aUtenima,srcHost=turQuis4046.api.test,dbName=deomnisi,schemaName=olupta,bindVar=oll,sqlError=success,respSize=1127,respTime=55.870000,affRows=evelite,action=\"block\",rawQuery=\"iav\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "ectobea", - "host.hostname": "turQuis4046.api.test", - "input.type": "log", - "log.offset": 16271, - "network.application": "dat", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "turQuis4046.api.test" - ], - "related.ip": [ - "10.168.225.209", - "10.90.50.149" - ], - "related.user": [ - "aUtenima", - "olu", - "olupta" - ], - "rsa.counters.dclass_c1": 1127, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "deomnisi", - "rsa.db.index": "iav", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "ectobea", - "rsa.misc.group_object": "taliq", - "rsa.misc.result": "success", - "rsa.time.duration_time": 55.87, - "rsa.time.starttime": "2017-05-15T00:34:50.000Z", - "service.type": "imperva", - "source.address": "turQuis4046.api.test", - "source.ip": "10.168.225.209", - "source.port": 6, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "olu" - }, - { - "destination.ip": "10.59.182.36", - "destination.port": 5792, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.59.182.36,dstPort=5792,dbUsername=mtota,srcIP=10.18.150.82,srcPort=6648,creatTime=29 May 2017 05:37:24,srvGroup=rit,service=eumfu,appName=lors,event#=oluptat,eventType=Login,usrGroup=enimad,usrAuth=True,application=\"tis\",osUsername=qua,srcHost=con6049.internal.lan,dbName=quelaud,schemaName=luptat,bindVar=rinrep,sqlError=unknown,respSize=6112,respTime=135.357000,affRows=nimv,action=\"allow\",rawQuery=\"tconse\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "enimad", - "host.hostname": "con6049.internal.lan", - "input.type": "log", - "log.offset": 16712, - "network.application": "tis", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "con6049.internal.lan" - ], - "related.ip": [ - "10.18.150.82", - "10.59.182.36" - ], - "related.user": [ - "luptat", - "mtota", - "qua" - ], - "rsa.counters.dclass_c1": 6112, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "quelaud", - "rsa.db.index": "tconse", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "enimad", - "rsa.misc.group_object": "rit", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 135.357, - "rsa.time.starttime": "2017-05-29T07:37:24.000Z", - "service.type": "imperva", - "source.address": "con6049.internal.lan", - "source.ip": "10.18.150.82", - "source.port": 6648, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mtota" - }, - { - "event.action": "ulamcola", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=rem,createTime=2017-06-12 12:39:58,eventType=ulamcola,eventSev=very-high,username=llita,subsystem=ntsunt,message=\"nturmag\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "very-high", - "log.offset": 17148, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "llita" - ], - "rsa.internal.event_desc": "nturmag", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "ulamcola", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2017-06-12T14:39:58.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "llita" - }, - { - "destination.ip": "10.228.229.144", - "destination.port": 3236, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.228.229.144,dstPort=3236,dbUsername=ametcons,srcIP=10.151.240.35,srcPort=3197,creatTime=2017-06-26 19:42:33,srvGroup=roquisq,service=uasi,appName=maveniam,event#=uis,eventType=lill,usrGroup=remeum,usrAuth=mmod,application=\"taevit\",osUsername=ama,srcHost=tatnonp1371.www.invalid,dbName=xercit,schemaName=lam,bindVar=asnu,sqlError=failure,respSize=4325,respTime=168.492000,affRows=eriam,action=\"cancel\",rawQuery=\"aquae\"", - "fileset.name": "securesphere", - "group.name": "remeum", - "host.hostname": "tatnonp1371.www.invalid", - "input.type": "log", - "log.offset": 17295, - "network.application": "taevit", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "tatnonp1371.www.invalid" - ], - "related.ip": [ - "10.151.240.35", - "10.228.229.144" - ], - "related.user": [ - "ama", - "ametcons", - "lam" - ], - "rsa.counters.dclass_c1": 4325, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "xercit", - "rsa.db.index": "aquae", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "lill", - "rsa.misc.group": "remeum", - "rsa.misc.group_object": "roquisq", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 168.492, - "rsa.time.starttime": "2017-06-26T21:42:33.000Z", - "service.type": "imperva", - "source.address": "tatnonp1371.www.invalid", - "source.ip": "10.151.240.35", - "source.port": 3197, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ametcons" - }, - { - "destination.ip": "10.242.48.203", - "destination.port": 1102, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.242.48.203,dstPort=1102,dbUsername=ese,srcIP=10.147.142.242,srcPort=2586,creatTime=2017-07-11 02:45:07,srvGroup=eca,service=ctionofd,appName=mpori,event#=olupt,eventType=Logout,usrGroup=ola,usrAuth=False,application=\"ptat\",osUsername=quasi,srcHost=tium3542.internal.invalid,dbName=squamest,schemaName=quisn,bindVar=pteu,sqlError=success,respSize=3970,respTime=11.548000,affRows=antium,action=\"block\",rawQuery=\"velillum\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "ola", - "host.hostname": "tium3542.internal.invalid", - "input.type": "log", - "log.offset": 17739, - "network.application": "ptat", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "tium3542.internal.invalid" - ], - "related.ip": [ - "10.147.142.242", - "10.242.48.203" - ], - "related.user": [ - "ese", - "quasi", - "quisn" - ], - "rsa.counters.dclass_c1": 3970, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "squamest", - "rsa.db.index": "velillum", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "ola", - "rsa.misc.group_object": "eca", - "rsa.misc.result": "success", - "rsa.time.duration_time": 11.548, - "rsa.time.starttime": "2017-07-11T04:45:07.000Z", - "service.type": "imperva", - "source.address": "tium3542.internal.invalid", - "source.ip": "10.147.142.242", - "source.port": 2586, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ese" - }, - { - "destination.ip": "10.254.10.98", - "destination.port": 3787, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=lapari,event#=Mal,createTime=2017-07-25 09:47:41,updateTime=itinvo,alertSev=very-high,group=paq,ruleName=\"emipsumq\",evntDesc=\"culpaq\",category=quamq,disposition=usan,eventType=tdolo,proto=ipv6,srcPort=4723,srcIP=10.213.165.165,dstPort=3787,dstIP=10.254.10.98,policyName=\"adipisc\",occurrences=7365,httpHost=tasnul,webMethod=uptasn,url=\"https://example.net/itati/oidentsu.gif?eporroqu=aturve#temqui\",webQuery=\"lup\",soapAction=aeca,resultCode=isau,sessionID=giat,username=ttenb,addUsername=eirure,responseTime=boreetd,responseSize=tNe,direction=outbound,dbUsername=eeufug,queryGroup=ntin,application=\"iades\",srcHost=radipis3991.mail.invalid,osUsername=civeli,schemaName=eufugia,dbName=utlabore,hdrName=tamr,action=\"cancel\",errormsg=\"success\"", - "fileset.name": "securesphere", - "group.name": "paq", - "host.hostname": "radipis3991.mail.invalid", - "input.type": "log", - "log.level": "very-high", - "log.offset": 18185, - "network.application": "iades", - "network.direction": "outbound", - "network.protocol": "ipv6", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "radipis3991.mail.invalid" - ], - "related.ip": [ - "10.213.165.165", - "10.254.10.98" - ], - "related.user": [ - "civeli", - "eufugia", - "ttenb" - ], - "rsa.counters.event_counter": 7365, - "rsa.db.database": "utlabore", - "rsa.internal.event_desc": "culpaq", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "cancel", - "uptasn" - ], - "rsa.misc.category": "quamq", - "rsa.misc.disposition": "usan", - "rsa.misc.event_type": "tdolo", - "rsa.misc.group": "paq", - "rsa.misc.log_session_id": "giat", - "rsa.misc.operation_id": "lapari", - "rsa.misc.policy_name": "adipisc", - "rsa.misc.result": "success", - "rsa.misc.result_code": "isau", - "rsa.misc.rule_name": "emipsumq", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2017-07-25T11:47:41.000Z", - "rsa.web.alias_host": "tasnul", - "rule.name": "emipsumq", - "service.type": "imperva", - "source.address": "radipis3991.mail.invalid", - "source.ip": "10.213.165.165", - "source.port": 4723, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "example.net", - "url.extension": "gif", - "url.fragment": "temqui", - "url.original": "https://example.net/itati/oidentsu.gif?eporroqu=aturve#temqui", - "url.path": "/itati/oidentsu.gif", - "url.query": [ - "eporroqu=aturve", - "lup" - ], - "url.scheme": "https", - "user.name": "ttenb" - }, - { - "event.action": "trudexe", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=onemul,createTime=2017-08-08 16:50:15,eventType=trudexe,eventSev=very-high,username=ura,subsystem=oreeufug,message=\"Quisa\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "very-high", - "log.offset": 18948, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "ura" - ], - "rsa.internal.event_desc": "Quisa", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "trudexe", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2017-08-08T18:50:15.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ura" - }, - { - "destination.ip": "10.169.28.157", - "destination.port": 3402, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=llitani,event#=uscipit,createTime=2017-08-22 23:52:50,updateTime=luptat,alertSev=very-high,group=etco,ruleName=\"iuntN\",evntDesc=\"utfugi\",category=ursintoc,disposition=tio,eventType=mmodicon,proto=ipv6,srcPort=5439,srcIP=10.116.1.130,dstPort=3402,dstIP=10.169.28.157,policyName=\"exeacomm\",occurrences=1295,httpHost=ionula,webMethod=pexeaco,url=\"https://api.example.org/uamqua/Neq.gif?eumiu=nim#pteurs\",webQuery=\"ercitati\",soapAction=atem,resultCode=serro,sessionID=lumquid,username=eturadip,addUsername=amquaera,responseTime=rsitamet,responseSize=leumiur,direction=internal,dbUsername=utod,queryGroup=olesti,application=\"edquia\",srcHost=ihi7294.www5.localhost,osUsername=reseo,schemaName=amco,dbName=ons,hdrName=onsecte,action=\"accept\",errormsg=\"unknown\"", - "fileset.name": "securesphere", - "group.name": "etco", - "host.hostname": "ihi7294.www5.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 19095, - "network.application": "edquia", - "network.direction": "internal", - "network.protocol": "ipv6", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ihi7294.www5.localhost" - ], - "related.ip": [ - "10.116.1.130", - "10.169.28.157" - ], - "related.user": [ - "amco", - "eturadip", - "reseo" - ], - "rsa.counters.event_counter": 1295, - "rsa.db.database": "ons", - "rsa.internal.event_desc": "utfugi", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "accept", - "pexeaco" - ], - "rsa.misc.category": "ursintoc", - "rsa.misc.disposition": "tio", - "rsa.misc.event_type": "mmodicon", - "rsa.misc.group": "etco", - "rsa.misc.log_session_id": "lumquid", - "rsa.misc.operation_id": "llitani", - "rsa.misc.policy_name": "exeacomm", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "serro", - "rsa.misc.rule_name": "iuntN", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2017-08-23T01:52:50.000Z", - "rsa.web.alias_host": "ionula", - "rule.name": "iuntN", - "service.type": "imperva", - "source.address": "ihi7294.www5.localhost", - "source.ip": "10.116.1.130", - "source.port": 5439, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "api.example.org", - "url.extension": "gif", - "url.fragment": "pteurs", - "url.original": "https://api.example.org/uamqua/Neq.gif?eumiu=nim#pteurs", - "url.path": "/uamqua/Neq.gif", - "url.query": [ - "ercitati", - "eumiu=nim" - ], - "url.scheme": "https", - "user.name": "eturadip" - }, - { - "destination.ip": "10.29.138.31", - "destination.port": 5871, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.29.138.31,dstPort=5871,dbUsername=volupta,srcIP=10.45.69.152,srcPort=4083,creatTime=6 September 2017 06:55:24,srvGroup=emi,service=uaerat,appName=iduntu,event#=samvol,eventType=Login,usrGroup=equa,usrAuth=False,application=\"apari\",osUsername=tsunt,srcHost=caecat4920.api.host,dbName=enim,schemaName=umq,bindVar=sistena,sqlError=failure,respSize=744,respTime=33.416000,affRows=temquia,action=\"deny\",rawQuery=\"eumiu\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "equa", - "host.hostname": "caecat4920.api.host", - "input.type": "log", - "log.offset": 19873, - "network.application": "apari", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "caecat4920.api.host" - ], - "related.ip": [ - "10.29.138.31", - "10.45.69.152" - ], - "related.user": [ - "tsunt", - "umq", - "volupta" - ], - "rsa.counters.dclass_c1": 744, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "enim", - "rsa.db.index": "eumiu", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "equa", - "rsa.misc.group_object": "emi", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 33.416, - "rsa.time.starttime": "2017-09-06T08:55:24.000Z", - "service.type": "imperva", - "source.address": "caecat4920.api.host", - "source.ip": "10.45.69.152", - "source.port": 4083, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "volupta" - }, - { - "destination.ip": "10.152.213.228", - "destination.port": 3387, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.152.213.228,dstPort=3387,dbUsername=ptatev,srcIP=10.100.113.11,srcPort=6971,creatTime=2017-09-20 13:57:58,srvGroup=aliqu,service=sequine,appName=utaliqui,event#=isciv,eventType=Logout,usrGroup=osqu,usrAuth=False,application=\"ptatemse\",osUsername=itationu,srcHost=setquas6188.internal.local,dbName=magnaali,schemaName=velillum,bindVar=ionev,sqlError=success,respSize=7245,respTime=131.118000,affRows=ameaq,action=\"cancel\",rawQuery=\"Except\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "osqu", - "host.hostname": "setquas6188.internal.local", - "input.type": "log", - "log.offset": 20314, - "network.application": "ptatemse", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "setquas6188.internal.local" - ], - "related.ip": [ - "10.100.113.11", - "10.152.213.228" - ], - "related.user": [ - "itationu", - "ptatev", - "velillum" - ], - "rsa.counters.dclass_c1": 7245, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "magnaali", - "rsa.db.index": "Except", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "osqu", - "rsa.misc.group_object": "aliqu", - "rsa.misc.result": "success", - "rsa.time.duration_time": 131.118, - "rsa.time.starttime": "2017-09-20T15:57:58.000Z", - "service.type": "imperva", - "source.address": "setquas6188.internal.local", - "source.ip": "10.100.113.11", - "source.port": 6971, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ptatev" - }, - { - "event.action": "tquii", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=uiac,createTime=2017-10-04 21:00:32,eventType=tquii,eventSev=low,username=reme,subsystem=emeumfu,message=\"inBCSedu\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "low", - "log.offset": 20779, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "reme" - ], - "rsa.internal.event_desc": "inBCSedu", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "tquii", - "rsa.misc.severity": "low", - "rsa.time.starttime": "2017-10-04T23:00:32.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "reme" - }, - { - "destination.ip": "10.208.33.55", - "destination.port": 1849, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.208.33.55,dstPort=1849,dbUsername=ulapari,srcIP=10.248.102.129,srcPort=3510,creatTime=2017-10-19 04:03:07,srvGroup=iatn,service=saquaeab,appName=eli,event#=rissusci,eventType=Logout,usrGroup=ectetur,usrAuth=True,application=\"dictasun\",osUsername=inimv,srcHost=nibusBo3674.www5.localhost,dbName=ntut,schemaName=mremaper,bindVar=uteirur,sqlError=unknown,respSize=6433,respTime=111.360000,affRows=isni,action=\"accept\",rawQuery=\"quovo\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "ectetur", - "host.hostname": "nibusBo3674.www5.localhost", - "input.type": "log", - "log.offset": 20919, - "network.application": "dictasun", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "nibusBo3674.www5.localhost" - ], - "related.ip": [ - "10.208.33.55", - "10.248.102.129" - ], - "related.user": [ - "inimv", - "mremaper", - "ulapari" - ], - "rsa.counters.dclass_c1": 6433, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "ntut", - "rsa.db.index": "quovo", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "ectetur", - "rsa.misc.group_object": "iatn", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 111.36, - "rsa.time.starttime": "2017-10-19T06:03:07.000Z", - "service.type": "imperva", - "source.address": "nibusBo3674.www5.localhost", - "source.ip": "10.248.102.129", - "source.port": 3510, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ulapari" - }, - { - "destination.ip": "10.203.164.132", - "destination.port": 6213, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.203.164.132,dstPort=6213,dbUsername=mporin,srcIP=10.109.230.216,srcPort=4447,creatTime=2017-11-02 11:05:41,srvGroup=uov,service=pariat,appName=icaboNe,event#=boreetd,eventType=Logout,usrGroup=uir,usrAuth=True,application=\"rumex\",osUsername=ectobea,srcHost=totamr7676.www5.home,dbName=imadm,schemaName=ibus,bindVar=lumdol,sqlError=success,respSize=547,respTime=166.971000,affRows=reprehe,action=\"block\",rawQuery=\"ihil\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "uir", - "host.hostname": "totamr7676.www5.home", - "input.type": "log", - "log.offset": 21377, - "network.application": "rumex", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "totamr7676.www5.home" - ], - "related.ip": [ - "10.109.230.216", - "10.203.164.132" - ], - "related.user": [ - "ectobea", - "ibus", - "mporin" - ], - "rsa.counters.dclass_c1": 547, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "imadm", - "rsa.db.index": "ihil", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "uir", - "rsa.misc.group_object": "uov", - "rsa.misc.result": "success", - "rsa.time.duration_time": 166.971, - "rsa.time.starttime": "2017-11-02T13:05:41.000Z", - "service.type": "imperva", - "source.address": "totamr7676.www5.home", - "source.ip": "10.109.230.216", - "source.port": 4447, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mporin" - }, - { - "destination.ip": "10.151.203.60", - "destination.port": 482, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.151.203.60,dstPort=482,dbUsername=dol,srcIP=10.117.81.75,srcPort=3365,creatTime=16 November 2017 18:08:15,srvGroup=iciatis,service=agn,appName=cul,event#=tate,eventType=Login,usrGroup=psam,usrAuth=True,application=\"itaedi\",osUsername=exeac,srcHost=idents7231.mail.home,dbName=veniamqu,schemaName=iconsequ,bindVar=ueporr,sqlError=unknown,respSize=484,respTime=27.563000,affRows=tur,action=\"block\",rawQuery=\"onorumet\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "psam", - "host.hostname": "idents7231.mail.home", - "input.type": "log", - "log.offset": 21821, - "network.application": "itaedi", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "idents7231.mail.home" - ], - "related.ip": [ - "10.117.81.75", - "10.151.203.60" - ], - "related.user": [ - "dol", - "exeac", - "iconsequ" - ], - "rsa.counters.dclass_c1": 484, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "veniamqu", - "rsa.db.index": "onorumet", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "psam", - "rsa.misc.group_object": "iciatis", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 27.563, - "rsa.time.starttime": "2017-11-16T20:08:15.000Z", - "service.type": "imperva", - "source.address": "idents7231.mail.home", - "source.ip": "10.117.81.75", - "source.port": 3365, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "dol" - }, - { - "destination.ip": "10.224.217.153", - "destination.port": 6339, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.224.217.153,dstPort=6339,dbUsername=eriti,srcIP=10.45.152.205,srcPort=6907,creatTime=1 December 2017 01:10:49,srvGroup=riame,service=datatn,appName=seq,event#=mquis,eventType=Login,usrGroup=tur,usrAuth=True,application=\"itation\",osUsername=utlabo,srcHost=tat50.mail.host,dbName=essequam,schemaName=imav,bindVar=mtot,sqlError=success,respSize=922,respTime=17.709000,affRows=prehend,action=\"allow\",rawQuery=\"liquid\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "tur", - "host.hostname": "tat50.mail.host", - "input.type": "log", - "log.offset": 22263, - "network.application": "itation", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "tat50.mail.host" - ], - "related.ip": [ - "10.224.217.153", - "10.45.152.205" - ], - "related.user": [ - "eriti", - "imav", - "utlabo" - ], - "rsa.counters.dclass_c1": 922, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "essequam", - "rsa.db.index": "liquid", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "tur", - "rsa.misc.group_object": "riame", - "rsa.misc.result": "success", - "rsa.time.duration_time": 17.709, - "service.type": "imperva", - "source.address": "tat50.mail.host", - "source.ip": "10.45.152.205", - "source.port": 6907, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "eriti" - }, - { - "destination.ip": "10.1.193.187", - "destination.port": 5119, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=umq,event#=ipsu,createTime=2017-12-15 08:13:24,updateTime=oremip,alertSev=low,group=odit,ruleName=\"vol\",evntDesc=\"epteurs\",category=itse,disposition=rever,eventType=sBonoru,proto=udp,srcPort=2652,srcIP=10.60.164.100,dstPort=5119,dstIP=10.1.193.187,policyName=\"yCice\",occurrences=508,httpHost=ionem,webMethod=taevitae,url=\"https://api.example.net/quam/saute.htm?nostru=docons#emipsumq\",webQuery=\"orinr\",soapAction=ineavol,resultCode=umdo,sessionID=tass,username=ugi,addUsername=riat,responseTime=atvol,responseSize=emipsum,direction=internal,dbUsername=uameiu,queryGroup=quiado,application=\"conse\",srcHost=mips3283.corp,osUsername=hite,schemaName=adipis,dbName=abo,hdrName=suntex,action=\"allow\",errormsg=\"failure\"", - "fileset.name": "securesphere", - "group.name": "odit", - "host.hostname": "mips3283.corp", - "input.type": "log", - "log.level": "low", - "log.offset": 22703, - "network.application": "conse", - "network.direction": "internal", - "network.protocol": "udp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "mips3283.corp" - ], - "related.ip": [ - "10.1.193.187", - "10.60.164.100" - ], - "related.user": [ - "adipis", - "hite", - "ugi" - ], - "rsa.counters.event_counter": 508, - "rsa.db.database": "abo", - "rsa.internal.event_desc": "epteurs", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "allow", - "taevitae" - ], - "rsa.misc.category": "itse", - "rsa.misc.disposition": "rever", - "rsa.misc.event_type": "sBonoru", - "rsa.misc.group": "odit", - "rsa.misc.log_session_id": "tass", - "rsa.misc.operation_id": "umq", - "rsa.misc.policy_name": "yCice", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "umdo", - "rsa.misc.rule_name": "vol", - "rsa.misc.severity": "low", - "rsa.time.starttime": "2017-12-15T10:13:24.000Z", - "rsa.web.alias_host": "ionem", - "rule.name": "vol", - "service.type": "imperva", - "source.address": "mips3283.corp", - "source.ip": "10.60.164.100", - "source.port": 2652, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "api.example.net", - "url.extension": "htm", - "url.fragment": "emipsumq", - "url.original": "https://api.example.net/quam/saute.htm?nostru=docons#emipsumq", - "url.path": "/quam/saute.htm", - "url.query": [ - "nostru=docons", - "orinr" - ], - "url.scheme": "https", - "user.name": "ugi" - }, - { - "destination.ip": "10.248.244.203", - "destination.port": 806, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.248.244.203,dstPort=806,dbUsername=mquamei,srcIP=10.146.228.234,srcPort=4346,creatTime=2017-12-29 15:15:58,srvGroup=rissusci,service=uaturQ,appName=iusmod,event#=susc,eventType=taed,usrGroup=eatae,usrAuth=siutali,application=\"oloremq\",osUsername=sum,srcHost=aliquip7229.mail.domain,dbName=doe,schemaName=eiusm,bindVar=oremipsu,sqlError=failure,respSize=3058,respTime=133.358000,affRows=llum,action=\"allow\",rawQuery=\"mto\"", - "fileset.name": "securesphere", - "group.name": "eatae", - "host.hostname": "aliquip7229.mail.domain", - "input.type": "log", - "log.offset": 23440, - "network.application": "oloremq", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "aliquip7229.mail.domain" - ], - "related.ip": [ - "10.146.228.234", - "10.248.244.203" - ], - "related.user": [ - "eiusm", - "mquamei", - "sum" - ], - "rsa.counters.dclass_c1": 3058, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "doe", - "rsa.db.index": "mto", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "taed", - "rsa.misc.group": "eatae", - "rsa.misc.group_object": "rissusci", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 133.358, - "rsa.time.starttime": "2017-12-29T17:15:58.000Z", - "service.type": "imperva", - "source.address": "aliquip7229.mail.domain", - "source.ip": "10.146.228.234", - "source.port": 4346, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mquamei" - }, - { - "destination.ip": "10.122.127.237", - "destination.port": 1138, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.122.127.237,dstPort=1138,dbUsername=consecte,srcIP=10.86.121.152,srcPort=3971,creatTime=2018-01-12 22:18:32,srvGroup=mquamei,service=litesse,appName=fug,event#=liquid,eventType=Logout,usrGroup=uidex,usrAuth=False,application=\"umdolo\",osUsername=nimv,srcHost=fde7756.mail.corp,dbName=usmod,schemaName=ine,bindVar=qui,sqlError=success,respSize=2771,respTime=136.167000,affRows=orsitame,action=\"block\",rawQuery=\"ipex\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "uidex", - "host.hostname": "fde7756.mail.corp", - "input.type": "log", - "log.offset": 23887, - "network.application": "umdolo", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "fde7756.mail.corp" - ], - "related.ip": [ - "10.122.127.237", - "10.86.121.152" - ], - "related.user": [ - "consecte", - "ine", - "nimv" - ], - "rsa.counters.dclass_c1": 2771, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "usmod", - "rsa.db.index": "ipex", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "uidex", - "rsa.misc.group_object": "mquamei", - "rsa.misc.result": "success", - "rsa.time.duration_time": 136.167, - "rsa.time.starttime": "2018-01-13T00:18:32.000Z", - "service.type": "imperva", - "source.address": "fde7756.mail.corp", - "source.ip": "10.86.121.152", - "source.port": 3971, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "consecte" - }, - { - "destination.ip": "10.201.223.119", - "destination.port": 3614, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.201.223.119,dstPort=3614,dbUsername=rcit,srcIP=10.204.223.184,srcPort=6092,creatTime=2018-01-27 05:21:06,srvGroup=giat,service=nculpa,appName=olupt,event#=tvol,eventType=Logout,usrGroup=ostru,usrAuth=True,application=\"mea\",osUsername=tuserror,srcHost=agnama5013.internal.example,dbName=boreetdo,schemaName=teni,bindVar=iin,sqlError=unknown,respSize=4113,respTime=161.837000,affRows=tNeq,action=\"block\",rawQuery=\"liq\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "ostru", - "host.hostname": "agnama5013.internal.example", - "input.type": "log", - "log.offset": 24328, - "network.application": "mea", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "agnama5013.internal.example" - ], - "related.ip": [ - "10.201.223.119", - "10.204.223.184" - ], - "related.user": [ - "rcit", - "teni", - "tuserror" - ], - "rsa.counters.dclass_c1": 4113, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "boreetdo", - "rsa.db.index": "liq", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "ostru", - "rsa.misc.group_object": "giat", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 161.837, - "rsa.time.starttime": "2018-01-27T07:21:06.000Z", - "service.type": "imperva", - "source.address": "agnama5013.internal.example", - "source.ip": "10.204.223.184", - "source.port": 6092, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "rcit" - }, - { - "destination.ip": "10.200.12.126", - "destination.port": 2347, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.200.12.126,dstPort=2347,dbUsername=magnido,srcIP=10.223.56.33,srcPort=5899,creatTime=10 February 2018 12:23:41,srvGroup=ing,service=amal,appName=aliq,event#=utem,eventType=Login,usrGroup=oreetd,usrAuth=True,application=\"itatis\",osUsername=Nequepo,srcHost=edictas4693.home,dbName=borisnis,schemaName=elitsedd,bindVar=hitecto,sqlError=failure,respSize=3243,respTime=75.415000,affRows=imven,action=\"block\",rawQuery=\"hende\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "oreetd", - "host.hostname": "edictas4693.home", - "input.type": "log", - "log.offset": 24771, - "network.application": "itatis", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "edictas4693.home" - ], - "related.ip": [ - "10.200.12.126", - "10.223.56.33" - ], - "related.user": [ - "Nequepo", - "elitsedd", - "magnido" - ], - "rsa.counters.dclass_c1": 3243, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "borisnis", - "rsa.db.index": "hende", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "oreetd", - "rsa.misc.group_object": "ing", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 75.415, - "rsa.time.starttime": "2018-02-10T14:23:41.000Z", - "service.type": "imperva", - "source.address": "edictas4693.home", - "source.ip": "10.223.56.33", - "source.port": 5899, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "magnido" - }, - { - "destination.ip": "10.65.225.101", - "destination.port": 1752, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=deseru,event#=aquioff,createTime=2018-02-24 19:26:15,updateTime=cip,alertSev=very-high,group=onsequat,ruleName=\"tiumd\",evntDesc=\"atuse\",category=imad,disposition=tura,eventType=equuntur,proto=ipv6,srcPort=428,srcIP=10.94.89.177,dstPort=1752,dstIP=10.65.225.101,policyName=\"nulapari\",occurrences=2513,httpHost=ostrumex,webMethod=eruntmol,url=\"https://internal.example.com/imide/uiineav.htm?lloinve=eni#asia\",webQuery=\"edquiac\",soapAction=psamvolu,resultCode=teturad,sessionID=ritq,username=tuserror,addUsername=tla,responseTime=orroq,responseSize=modtempo,direction=outbound,dbUsername=uptate,queryGroup=sumqui,application=\"eritin\",srcHost=nibu2565.api.local,osUsername=citation,schemaName=emquel,dbName=rspiciat,hdrName=iavol,action=\"cancel\",errormsg=\"unknown\"", - "fileset.name": "securesphere", - "group.name": "onsequat", - "host.hostname": "nibu2565.api.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 25217, - "network.application": "eritin", - "network.direction": "outbound", - "network.protocol": "ipv6", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "nibu2565.api.local" - ], - "related.ip": [ - "10.65.225.101", - "10.94.89.177" - ], - "related.user": [ - "citation", - "emquel", - "tuserror" - ], - "rsa.counters.event_counter": 2513, - "rsa.db.database": "rspiciat", - "rsa.internal.event_desc": "atuse", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "cancel", - "eruntmol" - ], - "rsa.misc.category": "imad", - "rsa.misc.disposition": "tura", - "rsa.misc.event_type": "equuntur", - "rsa.misc.group": "onsequat", - "rsa.misc.log_session_id": "ritq", - "rsa.misc.operation_id": "deseru", - "rsa.misc.policy_name": "nulapari", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "teturad", - "rsa.misc.rule_name": "tiumd", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2018-02-24T21:26:15.000Z", - "rsa.web.alias_host": "ostrumex", - "rule.name": "tiumd", - "service.type": "imperva", - "source.address": "nibu2565.api.local", - "source.ip": "10.94.89.177", - "source.port": 428, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "internal.example.com", - "url.extension": "htm", - "url.fragment": "asia", - "url.original": "https://internal.example.com/imide/uiineav.htm?lloinve=eni#asia", - "url.path": "/imide/uiineav.htm", - "url.query": [ - "edquiac", - "lloinve=eni" - ], - "url.scheme": "https", - "user.name": "tuserror" - }, - { - "destination.ip": "10.65.174.196", - "destination.port": 472, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.65.174.196,dstPort=472,dbUsername=iin,srcIP=10.191.184.105,srcPort=6821,creatTime=2018-03-11 02:28:49,srvGroup=iat,service=orain,appName=equaturQ,event#=llu,eventType=quaUt,usrGroup=labor,usrAuth=oris,application=\"tatemse\",osUsername=uta,srcHost=tsun7120.home,dbName=per,schemaName=tione,bindVar=nibus,sqlError=unknown,respSize=5836,respTime=61.864000,affRows=olo,action=\"deny\",rawQuery=\"BCSedutp\"", - "fileset.name": "securesphere", - "group.name": "labor", - "host.hostname": "tsun7120.home", - "input.type": "log", - "log.offset": 26002, - "network.application": "tatemse", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "tsun7120.home" - ], - "related.ip": [ - "10.191.184.105", - "10.65.174.196" - ], - "related.user": [ - "iin", - "tione", - "uta" - ], - "rsa.counters.dclass_c1": 5836, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "per", - "rsa.db.index": "BCSedutp", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "quaUt", - "rsa.misc.group": "labor", - "rsa.misc.group_object": "iat", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 61.864, - "rsa.time.starttime": "2018-03-11T04:28:49.000Z", - "service.type": "imperva", - "source.address": "tsun7120.home", - "source.ip": "10.191.184.105", - "source.port": 6821, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "iin" - }, - { - "destination.ip": "10.41.181.179", - "destination.port": 2803, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=tdolor,event#=Ute,createTime=2018-03-25 09:31:24,updateTime=tura,alertSev=very-high,group=umSecti,ruleName=\"eabil\",evntDesc=\"ibusB\",category=rporis,disposition=etco,eventType=mip,proto=rdp,srcPort=6078,srcIP=10.224.148.48,dstPort=2803,dstIP=10.41.181.179,policyName=\"siarch\",occurrences=7468,httpHost=setq,webMethod=rumwr,url=\"https://api.example.com/ptatem/mporain.gif?corpo=commod#iumd\",webQuery=\"ntore\",soapAction=tect,resultCode=ion,sessionID=tutl,username=niam,addUsername=oru,responseTime=mcorp,responseSize=uelaud,direction=outbound,dbUsername=ameiu,queryGroup=utei,application=\"caecat\",srcHost=lumquid6940.mail.localdomain,osUsername=equepor,schemaName=iosamn,dbName=erspicia,hdrName=neavolup,action=\"deny\",errormsg=\"success\"", - "fileset.name": "securesphere", - "group.name": "umSecti", - "host.hostname": "lumquid6940.mail.localdomain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 26426, - "network.application": "caecat", - "network.direction": "outbound", - "network.protocol": "rdp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "lumquid6940.mail.localdomain" - ], - "related.ip": [ - "10.224.148.48", - "10.41.181.179" - ], - "related.user": [ - "equepor", - "iosamn", - "niam" - ], - "rsa.counters.event_counter": 7468, - "rsa.db.database": "erspicia", - "rsa.internal.event_desc": "ibusB", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny", - "rumwr" - ], - "rsa.misc.category": "rporis", - "rsa.misc.disposition": "etco", - "rsa.misc.event_type": "mip", - "rsa.misc.group": "umSecti", - "rsa.misc.log_session_id": "tutl", - "rsa.misc.operation_id": "tdolor", - "rsa.misc.policy_name": "siarch", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ion", - "rsa.misc.rule_name": "eabil", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2018-03-25T11:31:24.000Z", - "rsa.web.alias_host": "setq", - "rule.name": "eabil", - "service.type": "imperva", - "source.address": "lumquid6940.mail.localdomain", - "source.ip": "10.224.148.48", - "source.port": 6078, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "api.example.com", - "url.extension": "gif", - "url.fragment": "iumd", - "url.original": "https://api.example.com/ptatem/mporain.gif?corpo=commod#iumd", - "url.path": "/ptatem/mporain.gif", - "url.query": [ - "corpo=commod", - "ntore" - ], - "url.scheme": "https", - "user.name": "niam" - }, - { - "destination.ip": "10.21.208.103", - "destination.port": 5543, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.21.208.103,dstPort=5543,dbUsername=imidest,srcIP=10.21.61.134,srcPort=6124,creatTime=2018-04-08 16:33:58,srvGroup=iacon,service=ncu,appName=quaturve,event#=ciad,eventType=Logout,usrGroup=diconseq,usrAuth=False,application=\"utod\",osUsername=ostr,srcHost=amcorp7299.api.example,dbName=uptatem,schemaName=mipsa,bindVar=nproide,sqlError=success,respSize=7766,respTime=91.186000,affRows=siutali,action=\"deny\",rawQuery=\"nemullam\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "diconseq", - "host.hostname": "amcorp7299.api.example", - "input.type": "log", - "log.offset": 27184, - "network.application": "utod", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "amcorp7299.api.example" - ], - "related.ip": [ - "10.21.208.103", - "10.21.61.134" - ], - "related.user": [ - "imidest", - "mipsa", - "ostr" - ], - "rsa.counters.dclass_c1": 7766, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "uptatem", - "rsa.db.index": "nemullam", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "diconseq", - "rsa.misc.group_object": "iacon", - "rsa.misc.result": "success", - "rsa.time.duration_time": 91.186, - "rsa.time.starttime": "2018-04-08T18:33:58.000Z", - "service.type": "imperva", - "source.address": "amcorp7299.api.example", - "source.ip": "10.21.61.134", - "source.port": 6124, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "imidest" - }, - { - "destination.ip": "10.23.6.216", - "destination.port": 4578, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.23.6.216,dstPort=4578,dbUsername=iarchit,srcIP=10.221.192.116,srcPort=4688,creatTime=2018-04-22 23:36:32,srvGroup=usBonor,service=mide,appName=sten,event#=enderi,eventType=Logout,usrGroup=labore,usrAuth=False,application=\"uasiarch\",osUsername=iamquisn,srcHost=magnama868.api.local,dbName=Section,schemaName=tevelite,bindVar=esciunt,sqlError=success,respSize=639,respTime=6.388000,affRows=borisnis,action=\"accept\",rawQuery=\"oremagn\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "labore", - "host.hostname": "magnama868.api.local", - "input.type": "log", - "log.offset": 27634, - "network.application": "uasiarch", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "magnama868.api.local" - ], - "related.ip": [ - "10.221.192.116", - "10.23.6.216" - ], - "related.user": [ - "iamquisn", - "iarchit", - "tevelite" - ], - "rsa.counters.dclass_c1": 639, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "Section", - "rsa.db.index": "oremagn", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "labore", - "rsa.misc.group_object": "usBonor", - "rsa.misc.result": "success", - "rsa.time.duration_time": 6.388, - "rsa.time.starttime": "2018-04-23T01:36:32.000Z", - "service.type": "imperva", - "source.address": "magnama868.api.local", - "source.ip": "10.221.192.116", - "source.port": 4688, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "iarchit" - }, - { - "destination.ip": "10.240.62.238", - "destination.port": 5850, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=rcita,event#=ataev,createTime=2018-05-07 06:39:06,updateTime=oris,alertSev=very-high,group=tate,ruleName=\"tutlabo\",evntDesc=\"nto\",category=sciv,disposition=tlabo,eventType=nsequun,proto=ipv6,srcPort=2976,srcIP=10.191.142.143,dstPort=5850,dstIP=10.240.62.238,policyName=\"sintoc\",occurrences=7580,httpHost=laboris,webMethod=ali,url=\"https://www5.example.net/aUten/edutpers.gif?apariatu=mnisis#onsequa\",webQuery=\"sunt\",soapAction=orumSe,resultCode=olupta,sessionID=emveleum,username=modtempo,addUsername=mfugi,responseTime=roqui,responseSize=ntutlabo,direction=external,dbUsername=isq,queryGroup=eacommo,application=\"amqua\",srcHost=tionevol3157.mail.invalid,osUsername=nofde,schemaName=animide,dbName=Lore,hdrName=oin,action=cancel", - "fileset.name": "securesphere", - "group.name": "tate", - "host.hostname": "tionevol3157.mail.invalid", - "input.type": "log", - "log.level": "very-high", - "log.offset": 28092, - "network.application": "amqua", - "network.direction": "external", - "network.protocol": "ipv6", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "tionevol3157.mail.invalid" - ], - "related.ip": [ - "10.191.142.143", - "10.240.62.238" - ], - "related.user": [ - "animide", - "modtempo", - "nofde" - ], - "rsa.counters.event_counter": 7580, - "rsa.db.database": "Lore", - "rsa.internal.event_desc": "nto", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "ali", - "cancel" - ], - "rsa.misc.category": "sciv", - "rsa.misc.disposition": "tlabo", - "rsa.misc.event_type": "nsequun", - "rsa.misc.group": "tate", - "rsa.misc.log_session_id": "emveleum", - "rsa.misc.operation_id": "rcita", - "rsa.misc.policy_name": "sintoc", - "rsa.misc.result_code": "olupta", - "rsa.misc.rule_name": "tutlabo", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2018-05-07T08:39:06.000Z", - "rsa.web.alias_host": "laboris", - "rule.name": "tutlabo", - "service.type": "imperva", - "source.address": "tionevol3157.mail.invalid", - "source.ip": "10.191.142.143", - "source.port": 2976, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "www5.example.net", - "url.extension": "gif", - "url.fragment": "onsequa", - "url.original": "https://www5.example.net/aUten/edutpers.gif?apariatu=mnisis#onsequa", - "url.path": "/aUten/edutpers.gif", - "url.query": [ - "apariatu=mnisis", - "sunt" - ], - "url.scheme": "https", - "user.name": "modtempo" - }, - { - "destination.ip": "10.111.22.134", - "destination.port": 7499, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=ecatcu,event#=entoreve,createTime=2018-05-21 13:41:41,updateTime=ion,alertSev=very-high,group=onev,ruleName=\"atu\",evntDesc=\"adeseru\",category=sitas,disposition=eni,eventType=cte,proto=igmp,srcPort=3124,srcIP=10.178.79.217,dstPort=7499,dstIP=10.111.22.134,policyName=\"datatno\",occurrences=3538,httpHost=siar,webMethod=orisnis,url=\"https://www.example.net/mvolup/pidat.jpg?ents=nsec#iaeco\",webQuery=\"ommodoco\",soapAction=ritinv,resultCode=rita,sessionID=oidents,username=ccusan,addUsername=inimav,responseTime=quel,responseSize=ugitsed,direction=external,dbUsername=idolor,queryGroup=xplic,application=\"stenat\",srcHost=mquis319.api.local,osUsername=inibusBo,schemaName=tqui,dbName=sequun,hdrName=nimadm,action=deny", - "fileset.name": "securesphere", - "group.name": "onev", - "host.hostname": "mquis319.api.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 28845, - "network.application": "stenat", - "network.direction": "external", - "network.protocol": "igmp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "mquis319.api.local" - ], - "related.ip": [ - "10.111.22.134", - "10.178.79.217" - ], - "related.user": [ - "ccusan", - "inibusBo", - "tqui" - ], - "rsa.counters.event_counter": 3538, - "rsa.db.database": "sequun", - "rsa.internal.event_desc": "adeseru", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny", - "orisnis" - ], - "rsa.misc.category": "sitas", - "rsa.misc.disposition": "eni", - "rsa.misc.event_type": "cte", - "rsa.misc.group": "onev", - "rsa.misc.log_session_id": "oidents", - "rsa.misc.operation_id": "ecatcu", - "rsa.misc.policy_name": "datatno", - "rsa.misc.result_code": "rita", - "rsa.misc.rule_name": "atu", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2018-05-21T15:41:41.000Z", - "rsa.web.alias_host": "siar", - "rule.name": "atu", - "service.type": "imperva", - "source.address": "mquis319.api.local", - "source.ip": "10.178.79.217", - "source.port": 3124, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "www.example.net", - "url.extension": "jpg", - "url.fragment": "iaeco", - "url.original": "https://www.example.net/mvolup/pidat.jpg?ents=nsec#iaeco", - "url.path": "/mvolup/pidat.jpg", - "url.query": [ - "ents=nsec", - "ommodoco" - ], - "url.scheme": "https", - "user.name": "ccusan" - }, - { - "destination.ip": "10.161.225.172", - "destination.port": 3708, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.161.225.172,dstPort=3708,dbUsername=meaqu,srcIP=10.77.86.215,srcPort=6390,creatTime=4 June 2018 20:44:15,srvGroup=con,service=aeabil,appName=iumtot,event#=edicta,eventType=Login,usrGroup=itaspern,usrAuth=False,application=\"tau\",osUsername=rcit,srcHost=urad5712.api.host,dbName=sitamet,schemaName=xerc,bindVar=mcolabor,sqlError=success,respSize=7286,respTime=143.926000,affRows=evita,action=\"block\",rawQuery=\"ant\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "itaspern", - "host.hostname": "urad5712.api.host", - "input.type": "log", - "log.offset": 29582, - "network.application": "tau", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "urad5712.api.host" - ], - "related.ip": [ - "10.161.225.172", - "10.77.86.215" - ], - "related.user": [ - "meaqu", - "rcit", - "xerc" - ], - "rsa.counters.dclass_c1": 7286, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "sitamet", - "rsa.db.index": "ant", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "itaspern", - "rsa.misc.group_object": "con", - "rsa.misc.result": "success", - "rsa.time.duration_time": 143.926, - "rsa.time.starttime": "2018-06-04T22:44:15.000Z", - "service.type": "imperva", - "source.address": "urad5712.api.host", - "source.ip": "10.77.86.215", - "source.port": 6390, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "meaqu" - }, - { - "destination.ip": "10.186.133.184", - "destination.port": 7864, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.186.133.184,dstPort=7864,dbUsername=boriosa,srcIP=10.211.161.187,srcPort=843,creatTime=2018-06-19 03:46:49,srvGroup=laud,service=uido,appName=uis,event#=msequin,eventType=autem,usrGroup=mporai,usrAuth=ipi,application=\"qua\",osUsername=acons,srcHost=enbyCic4659.www5.example,dbName=orroqui,schemaName=sci,bindVar=psamvolu,sqlError=unknown,respSize=1578,respTime=66.164000,affRows=temse,action=\"deny\",rawQuery=\"onevol\"", - "fileset.name": "securesphere", - "group.name": "mporai", - "host.hostname": "enbyCic4659.www5.example", - "input.type": "log", - "log.offset": 30021, - "network.application": "qua", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "enbyCic4659.www5.example" - ], - "related.ip": [ - "10.186.133.184", - "10.211.161.187" - ], - "related.user": [ - "acons", - "boriosa", - "sci" - ], - "rsa.counters.dclass_c1": 1578, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "orroqui", - "rsa.db.index": "onevol", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "autem", - "rsa.misc.group": "mporai", - "rsa.misc.group_object": "laud", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 66.164, - "rsa.time.starttime": "2018-06-19T05:46:49.000Z", - "service.type": "imperva", - "source.address": "enbyCic4659.www5.example", - "source.ip": "10.211.161.187", - "source.port": 843, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "boriosa" - }, - { - "destination.ip": "10.160.147.230", - "destination.port": 2126, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.160.147.230,dstPort=2126,dbUsername=nimvenia,srcIP=10.254.198.47,srcPort=3925,creatTime=2018-07-03 10:49:23,srvGroup=lit,service=quin,appName=adipisc,event#=sedqui,eventType=ueporroq,usrGroup=dolo,usrAuth=adm,application=\"dolor\",osUsername=ndeomnis,srcHost=inBCSed5308.api.corp,dbName=modicons,schemaName=illoin,bindVar=rinre,sqlError=unknown,respSize=5988,respTime=34.664000,affRows=olorem,action=\"cancel\",rawQuery=\"dquiaco\"", - "fileset.name": "securesphere", - "group.name": "dolo", - "host.hostname": "inBCSed5308.api.corp", - "input.type": "log", - "log.offset": 30463, - "network.application": "dolor", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "inBCSed5308.api.corp" - ], - "related.ip": [ - "10.160.147.230", - "10.254.198.47" - ], - "related.user": [ - "illoin", - "ndeomnis", - "nimvenia" - ], - "rsa.counters.dclass_c1": 5988, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "modicons", - "rsa.db.index": "dquiaco", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "ueporroq", - "rsa.misc.group": "dolo", - "rsa.misc.group_object": "lit", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 34.664, - "rsa.time.starttime": "2018-07-03T12:49:23.000Z", - "service.type": "imperva", - "source.address": "inBCSed5308.api.corp", - "source.ip": "10.254.198.47", - "source.port": 3925, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "nimvenia" - }, - { - "destination.ip": "10.40.24.93", - "destination.port": 7487, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.40.24.93,dstPort=7487,dbUsername=mSecti,srcIP=10.182.197.243,srcPort=3687,creatTime=2018-07-17 17:51:58,srvGroup=xerci,service=qua,appName=iaecons,event#=pteurs,eventType=Logout,usrGroup=intocc,usrAuth=True,application=\"abo\",osUsername=orisnis,srcHost=reseo2067.api.localdomain,dbName=nsectetu,schemaName=exerci,bindVar=lit,sqlError=success,respSize=4129,respTime=171.277000,affRows=ono,action=\"cancel\",rawQuery=\"equuntu\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "intocc", - "host.hostname": "reseo2067.api.localdomain", - "input.type": "log", - "log.offset": 30915, - "network.application": "abo", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "reseo2067.api.localdomain" - ], - "related.ip": [ - "10.182.197.243", - "10.40.24.93" - ], - "related.user": [ - "exerci", - "mSecti", - "orisnis" - ], - "rsa.counters.dclass_c1": 4129, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "nsectetu", - "rsa.db.index": "equuntu", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "intocc", - "rsa.misc.group_object": "xerci", - "rsa.misc.result": "success", - "rsa.time.duration_time": 171.277, - "rsa.time.starttime": "2018-07-17T19:51:58.000Z", - "service.type": "imperva", - "source.address": "reseo2067.api.localdomain", - "source.ip": "10.182.197.243", - "source.port": 3687, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mSecti" - }, - { - "destination.ip": "10.249.13.159", - "destination.port": 3023, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.249.13.159,dstPort=3023,dbUsername=uisautei,srcIP=10.108.130.106,srcPort=7601,creatTime=1 August 2018 00:54:32,srvGroup=scinge,service=lum,appName=iinea,event#=xercit,eventType=Login,usrGroup=reh,usrAuth=False,application=\"velitess\",osUsername=colab,srcHost=itte6905.mail.invalid,dbName=tesseq,schemaName=exeacomm,bindVar=uptat,sqlError=success,respSize=1044,respTime=112.679000,affRows=ptatema,action=\"cancel\",rawQuery=\"cepteurs\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "reh", - "host.hostname": "itte6905.mail.invalid", - "input.type": "log", - "log.offset": 31363, - "network.application": "velitess", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "itte6905.mail.invalid" - ], - "related.ip": [ - "10.108.130.106", - "10.249.13.159" - ], - "related.user": [ - "colab", - "exeacomm", - "uisautei" - ], - "rsa.counters.dclass_c1": 1044, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "tesseq", - "rsa.db.index": "cepteurs", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "reh", - "rsa.misc.group_object": "scinge", - "rsa.misc.result": "success", - "rsa.time.duration_time": 112.679, - "rsa.time.starttime": "2018-08-01T02:54:32.000Z", - "service.type": "imperva", - "source.address": "itte6905.mail.invalid", - "source.ip": "10.108.130.106", - "source.port": 7601, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "uisautei" - }, - { - "destination.ip": "10.39.244.49", - "destination.port": 3852, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=ioffic,event#=rumetMal,createTime=2018-08-15 07:57:06,updateTime=tiumtot,alertSev=very-high,group=caboNe,ruleName=\"ptate\",evntDesc=\"enimips\",category=Nequepor,disposition=nisiu,eventType=ptat,proto=ggp,srcPort=4082,srcIP=10.64.94.174,dstPort=3852,dstIP=10.39.244.49,policyName=\"ctas\",occurrences=7128,httpHost=sequ,webMethod=gna,url=\"https://internal.example.org/aev/uovolup.txt?aqueip=aqueip#rautod\",webQuery=\"tur\",soapAction=minimav,resultCode=uovo,sessionID=aven,username=Sedut,addUsername=stiaec,responseTime=rveli,responseSize=serr,direction=internal,dbUsername=uid,queryGroup=lamcor,application=\"rorsitv\",srcHost=caboNemo274.www.host,osUsername=estiae,schemaName=iunt,dbName=eFinibu,hdrName=uisaut,action=cancel", - "fileset.name": "securesphere", - "group.name": "caboNe", - "host.hostname": "caboNemo274.www.host", - "input.type": "log", - "log.level": "very-high", - "log.offset": 31820, - "network.application": "rorsitv", - "network.direction": "internal", - "network.protocol": "ggp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "caboNemo274.www.host" - ], - "related.ip": [ - "10.39.244.49", - "10.64.94.174" - ], - "related.user": [ - "Sedut", - "estiae", - "iunt" - ], - "rsa.counters.event_counter": 7128, - "rsa.db.database": "eFinibu", - "rsa.internal.event_desc": "enimips", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "cancel", - "gna" - ], - "rsa.misc.category": "Nequepor", - "rsa.misc.disposition": "nisiu", - "rsa.misc.event_type": "ptat", - "rsa.misc.group": "caboNe", - "rsa.misc.log_session_id": "aven", - "rsa.misc.operation_id": "ioffic", - "rsa.misc.policy_name": "ctas", - "rsa.misc.result_code": "uovo", - "rsa.misc.rule_name": "ptate", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2018-08-15T09:57:06.000Z", - "rsa.web.alias_host": "sequ", - "rule.name": "ptate", - "service.type": "imperva", - "source.address": "caboNemo274.www.host", - "source.ip": "10.64.94.174", - "source.port": 4082, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "internal.example.org", - "url.extension": "txt", - "url.fragment": "rautod", - "url.original": "https://internal.example.org/aev/uovolup.txt?aqueip=aqueip#rautod", - "url.path": "/aev/uovolup.txt", - "url.query": [ - "aqueip=aqueip", - "tur" - ], - "url.scheme": "https", - "user.name": "Sedut" - }, - { - "event.action": "ercitati", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=odit,createTime=2018-08-29 14:59:40,eventType=ercitati,eventSev=very-high,username=imad,subsystem=olo,message=\"deserun\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "very-high", - "log.offset": 32562, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "imad" - ], - "rsa.internal.event_desc": "deserun", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "ercitati", - "rsa.misc.severity": "very-high", - "rsa.time.starttime": "2018-08-29T16:59:40.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "imad" - }, - { - "event.action": "uatDuis", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=scingeli,createTime=2018-09-12 22:02:15,eventType=uatDuis,eventSev=medium,username=apari,subsystem=itesseci,message=\"utali\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "medium", - "log.offset": 32706, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "apari" - ], - "rsa.internal.event_desc": "utali", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "uatDuis", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2018-09-13T00:02:15.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "apari" - }, - { - "destination.ip": "10.115.203.143", - "destination.port": 6889, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.115.203.143,dstPort=6889,dbUsername=utoditau,srcIP=10.134.135.22,srcPort=1809,creatTime=27 September 2018 05:04:49,srvGroup=serror,service=itl,appName=Bonoru,event#=rumetMa,eventType=Login,usrGroup=entor,usrAuth=False,application=\"urere\",osUsername=involu,srcHost=qui5978.api.test,dbName=amre,schemaName=orpori,bindVar=sistena,sqlError=failure,respSize=7868,respTime=5.277000,affRows=borisn,action=\"cancel\",rawQuery=\"quatu\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "entor", - "host.hostname": "qui5978.api.test", - "input.type": "log", - "log.offset": 32854, - "network.application": "urere", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "qui5978.api.test" - ], - "related.ip": [ - "10.115.203.143", - "10.134.135.22" - ], - "related.user": [ - "involu", - "orpori", - "utoditau" - ], - "rsa.counters.dclass_c1": 7868, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "amre", - "rsa.db.index": "quatu", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "entor", - "rsa.misc.group_object": "serror", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 5.277, - "rsa.time.starttime": "2018-09-27T07:04:49.000Z", - "service.type": "imperva", - "source.address": "qui5978.api.test", - "source.ip": "10.134.135.22", - "source.port": 1809, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "utoditau" - }, - { - "destination.ip": "10.43.244.252", - "destination.port": 1752, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.43.244.252,dstPort=1752,dbUsername=inculp,srcIP=10.251.212.166,srcPort=3925,creatTime=11 October 2018 12:07:23,srvGroup=iur,service=aboNemo,appName=tsedquia,event#=ididun,eventType=Login,usrGroup=tatiset,usrAuth=False,application=\"enim\",osUsername=gnido,srcHost=iamq2577.internal.corp,dbName=uisa,schemaName=uptat,bindVar=siutal,sqlError=unknown,respSize=6947,respTime=144.976000,affRows=tempori,action=\"accept\",rawQuery=\"lamco\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "tatiset", - "host.hostname": "iamq2577.internal.corp", - "input.type": "log", - "log.offset": 33304, - "network.application": "enim", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "iamq2577.internal.corp" - ], - "related.ip": [ - "10.251.212.166", - "10.43.244.252" - ], - "related.user": [ - "gnido", - "inculp", - "uptat" - ], - "rsa.counters.dclass_c1": 6947, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "uisa", - "rsa.db.index": "lamco", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "tatiset", - "rsa.misc.group_object": "iur", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 144.976, - "rsa.time.starttime": "2018-10-11T14:07:23.000Z", - "service.type": "imperva", - "source.address": "iamq2577.internal.corp", - "source.ip": "10.251.212.166", - "source.port": 3925, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "inculp" - }, - { - "event.action": "edutpe", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=nimve,createTime=2018-10-25 19:09:57,eventType=edutpe,eventSev=medium,username=isunde,subsystem=nimadm,message=\"cepte\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "medium", - "log.offset": 33759, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "isunde" - ], - "rsa.internal.event_desc": "cepte", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "edutpe", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2018-10-25T21:09:57.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "isunde" - }, - { - "destination.ip": "10.20.231.188", - "destination.port": 1200, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.20.231.188,dstPort=1200,dbUsername=tesseq,srcIP=10.88.189.164,srcPort=1373,creatTime=2018-11-09 02:12:32,srvGroup=iusmod,service=aincid,appName=giatq,event#=tion,eventType=Logout,usrGroup=tNeque,usrAuth=False,application=\"uidolore\",osUsername=uatDuisa,srcHost=usB4127.localhost,dbName=ufugia,schemaName=mqu,bindVar=remagna,sqlError=failure,respSize=1623,respTime=33.468000,affRows=Uteni,action=\"cancel\",rawQuery=\"porinci\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "tNeque", - "host.hostname": "usB4127.localhost", - "input.type": "log", - "log.offset": 33902, - "network.application": "uidolore", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "usB4127.localhost" - ], - "related.ip": [ - "10.20.231.188", - "10.88.189.164" - ], - "related.user": [ - "mqu", - "tesseq", - "uatDuisa" - ], - "rsa.counters.dclass_c1": 1623, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "ufugia", - "rsa.db.index": "porinci", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "tNeque", - "rsa.misc.group_object": "iusmod", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 33.468, - "rsa.time.starttime": "2018-11-09T04:12:32.000Z", - "service.type": "imperva", - "source.address": "usB4127.localhost", - "source.ip": "10.88.189.164", - "source.port": 1373, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "tesseq" - }, - { - "event.action": "uianon", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=edd,createTime=2018-11-23 09:15:06,eventType=uianon,eventSev=low,username=quamquae,subsystem=aaliq,message=\"nos\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "low", - "log.offset": 34350, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "quamquae" - ], - "rsa.internal.event_desc": "nos", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "uianon", - "rsa.misc.severity": "low", - "rsa.time.starttime": "2018-11-23T11:15:06.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "quamquae" - }, - { - "destination.ip": "10.231.77.26", - "destination.port": 7082, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.231.77.26,dstPort=7082,dbUsername=rehe,srcIP=10.225.11.197,srcPort=3513,creatTime=7 December 2018 16:17:40,srvGroup=siarchi,service=seddoeiu,appName=lorinrep,event#=isq,eventType=Login,usrGroup=quines,usrAuth=False,application=\"entsu\",osUsername=ineavol,srcHost=abor3266.mail.home,dbName=voluptat,schemaName=volu,bindVar=iutaliqu,sqlError=failure,respSize=3064,respTime=61.960000,affRows=iusmo,action=\"allow\",rawQuery=\"uovo\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "quines", - "host.hostname": "abor3266.mail.home", - "input.type": "log", - "log.offset": 34487, - "network.application": "entsu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "abor3266.mail.home" - ], - "related.ip": [ - "10.225.11.197", - "10.231.77.26" - ], - "related.user": [ - "ineavol", - "rehe", - "volu" - ], - "rsa.counters.dclass_c1": 3064, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "voluptat", - "rsa.db.index": "uovo", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "quines", - "rsa.misc.group_object": "siarchi", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 61.96, - "service.type": "imperva", - "source.address": "abor3266.mail.home", - "source.ip": "10.225.11.197", - "source.port": 3513, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "rehe" - }, - { - "destination.ip": "10.148.3.197", - "destination.port": 979, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.148.3.197,dstPort=979,dbUsername=usa,srcIP=10.106.166.105,srcPort=4567,creatTime=2018-12-21 23:20:14,srvGroup=oremagna,service=siuta,appName=amnihil,event#=nderit,eventType=ficia,usrGroup=tru,usrAuth=tionu,application=\"natuser\",osUsername=olupt,srcHost=eprehe2455.www.home,dbName=smo,schemaName=avolup,bindVar=litse,sqlError=failure,respSize=2658,respTime=84.894000,affRows=untutlab,action=\"allow\",rawQuery=\"byCicer\"", - "fileset.name": "securesphere", - "group.name": "tru", - "host.hostname": "eprehe2455.www.home", - "input.type": "log", - "log.offset": 34938, - "network.application": "natuser", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "eprehe2455.www.home" - ], - "related.ip": [ - "10.106.166.105", - "10.148.3.197" - ], - "related.user": [ - "avolup", - "olupt", - "usa" - ], - "rsa.counters.dclass_c1": 2658, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "smo", - "rsa.db.index": "byCicer", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "ficia", - "rsa.misc.group": "tru", - "rsa.misc.group_object": "oremagna", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 84.894, - "rsa.time.starttime": "2018-12-22T01:20:14.000Z", - "service.type": "imperva", - "source.address": "eprehe2455.www.home", - "source.ip": "10.106.166.105", - "source.port": 4567, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "usa" - }, - { - "destination.ip": "10.172.121.239", - "destination.port": 5339, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.172.121.239,dstPort=5339,dbUsername=iuta,srcIP=10.57.169.205,srcPort=3093,creatTime=2019-01-05 06:22:49,srvGroup=reeufugi,service=oloree,appName=xeaco,event#=urm,eventType=Logout,usrGroup=mpo,usrAuth=False,application=\"cept\",osUsername=ctas,srcHost=destla2110.www5.localdomain,dbName=inea,schemaName=ipsu,bindVar=iden,sqlError=failure,respSize=392,respTime=19.061000,affRows=reetd,action=\"cancel\",rawQuery=\"maven\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "mpo", - "host.hostname": "destla2110.www5.localdomain", - "input.type": "log", - "log.offset": 35381, - "network.application": "cept", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "destla2110.www5.localdomain" - ], - "related.ip": [ - "10.172.121.239", - "10.57.169.205" - ], - "related.user": [ - "ctas", - "ipsu", - "iuta" - ], - "rsa.counters.dclass_c1": 392, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "inea", - "rsa.db.index": "maven", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "mpo", - "rsa.misc.group_object": "reeufugi", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 19.061, - "rsa.time.starttime": "2019-01-05T08:22:49.000Z", - "service.type": "imperva", - "source.address": "destla2110.www5.localdomain", - "source.ip": "10.57.169.205", - "source.port": 3093, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "iuta" - }, - { - "destination.ip": "10.129.234.200", - "destination.port": 3833, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.129.234.200,dstPort=3833,dbUsername=tisundeo,srcIP=10.42.218.103,srcPort=3315,creatTime=19 January 2019 13:25:23,srvGroup=mnis,service=tametco,appName=snisiut,event#=lit,eventType=Login,usrGroup=laborio,usrAuth=False,application=\"aaliqu\",osUsername=tevelit,srcHost=exerc3694.api.home,dbName=consec,schemaName=dquia,bindVar=cep,sqlError=success,respSize=6709,respTime=34.273000,affRows=volupta,action=\"allow\",rawQuery=\"ipex\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "laborio", - "host.hostname": "exerc3694.api.home", - "input.type": "log", - "log.offset": 35821, - "network.application": "aaliqu", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "exerc3694.api.home" - ], - "related.ip": [ - "10.129.234.200", - "10.42.218.103" - ], - "related.user": [ - "dquia", - "tevelit", - "tisundeo" - ], - "rsa.counters.dclass_c1": 6709, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "consec", - "rsa.db.index": "ipex", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "laborio", - "rsa.misc.group_object": "mnis", - "rsa.misc.result": "success", - "rsa.time.duration_time": 34.273, - "rsa.time.starttime": "2019-01-19T15:25:23.000Z", - "service.type": "imperva", - "source.address": "exerc3694.api.home", - "source.ip": "10.42.218.103", - "source.port": 3315, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "tisundeo" - }, - { - "destination.ip": "10.111.132.221", - "destination.port": 2262, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.111.132.221,dstPort=2262,dbUsername=ali,srcIP=10.76.121.224,srcPort=4305,creatTime=2019-02-02 20:27:57,srvGroup=xcep,service=ehen,appName=remap,event#=mUt,eventType=Logout,usrGroup=admi,usrAuth=True,application=\"siarch\",osUsername=oloremi,srcHost=ididu5928.www5.local,dbName=tNe,schemaName=scive,bindVar=tcupi,sqlError=unknown,respSize=6155,respTime=139.491000,affRows=Sed,action=\"cancel\",rawQuery=\"ita\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "admi", - "host.hostname": "ididu5928.www5.local", - "input.type": "log", - "log.offset": 36271, - "network.application": "siarch", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ididu5928.www5.local" - ], - "related.ip": [ - "10.111.132.221", - "10.76.121.224" - ], - "related.user": [ - "ali", - "oloremi", - "scive" - ], - "rsa.counters.dclass_c1": 6155, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "tNe", - "rsa.db.index": "ita", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "admi", - "rsa.misc.group_object": "xcep", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 139.491, - "rsa.time.starttime": "2019-02-02T22:27:57.000Z", - "service.type": "imperva", - "source.address": "ididu5928.www5.local", - "source.ip": "10.76.121.224", - "source.port": 4305, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ali" - }, - { - "destination.ip": "10.195.8.141", - "destination.port": 4342, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.195.8.141,dstPort=4342,dbUsername=enimip,srcIP=10.17.214.21,srcPort=4821,creatTime=17 February 2019 03:30:32,srvGroup=umquiado,service=taspe,appName=empori,event#=mipsum,eventType=Login,usrGroup=tium,usrAuth=True,application=\"riaturE\",osUsername=ota,srcHost=boriosa7066.www.corp,dbName=Nequep,schemaName=dolo,bindVar=exeacom,sqlError=success,respSize=469,respTime=146.775000,affRows=eufugiat,action=\"accept\",rawQuery=\"non\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "tium", - "host.hostname": "boriosa7066.www.corp", - "input.type": "log", - "log.offset": 36701, - "network.application": "riaturE", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "boriosa7066.www.corp" - ], - "related.ip": [ - "10.17.214.21", - "10.195.8.141" - ], - "related.user": [ - "dolo", - "enimip", - "ota" - ], - "rsa.counters.dclass_c1": 469, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "Nequep", - "rsa.db.index": "non", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "tium", - "rsa.misc.group_object": "umquiado", - "rsa.misc.result": "success", - "rsa.time.duration_time": 146.775, - "rsa.time.starttime": "2019-02-17T05:30:32.000Z", - "service.type": "imperva", - "source.address": "boriosa7066.www.corp", - "source.ip": "10.17.214.21", - "source.port": 4821, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "enimip" - }, - { - "destination.ip": "10.173.13.179", - "destination.port": 1211, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.173.13.179,dstPort=1211,dbUsername=ptasn,srcIP=10.179.60.167,srcPort=1124,creatTime=2019-03-03 10:33:06,srvGroup=amqui,service=itatise,appName=utlab,event#=ostr,eventType=Logout,usrGroup=liqu,usrAuth=True,application=\"cons\",osUsername=apar,srcHost=ssusc1892.internal.host,dbName=xplic,schemaName=isn,bindVar=quepor,sqlError=failure,respSize=758,respTime=58.800000,affRows=etur,action=\"block\",rawQuery=\"cusan\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "liqu", - "host.hostname": "ssusc1892.internal.host", - "input.type": "log", - "log.offset": 37150, - "network.application": "cons", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "ssusc1892.internal.host" - ], - "related.ip": [ - "10.173.13.179", - "10.179.60.167" - ], - "related.user": [ - "apar", - "isn", - "ptasn" - ], - "rsa.counters.dclass_c1": 758, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "xplic", - "rsa.db.index": "cusan", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "liqu", - "rsa.misc.group_object": "amqui", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 58.8, - "rsa.time.starttime": "2019-03-03T12:33:06.000Z", - "service.type": "imperva", - "source.address": "ssusc1892.internal.host", - "source.ip": "10.179.60.167", - "source.port": 1124, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ptasn" - }, - { - "destination.ip": "10.42.135.34", - "destination.port": 4361, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.42.135.34,dstPort=4361,dbUsername=tiset,srcIP=10.178.190.123,srcPort=3288,creatTime=2019-03-17 17:35:40,srvGroup=xercitat,service=ueporr,appName=utlab,event#=entoreve,eventType=Logout,usrGroup=lmolest,usrAuth=False,application=\"ser\",osUsername=ore,srcHost=iatisund424.mail.localdomain,dbName=tametcon,schemaName=orsi,bindVar=ull,sqlError=success,respSize=2290,respTime=1.468000,affRows=etdolore,action=\"cancel\",rawQuery=\"ore\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "lmolest", - "host.hostname": "iatisund424.mail.localdomain", - "input.type": "log", - "log.offset": 37585, - "network.application": "ser", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "iatisund424.mail.localdomain" - ], - "related.ip": [ - "10.178.190.123", - "10.42.135.34" - ], - "related.user": [ - "ore", - "orsi", - "tiset" - ], - "rsa.counters.dclass_c1": 2290, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "tametcon", - "rsa.db.index": "ore", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "lmolest", - "rsa.misc.group_object": "xercitat", - "rsa.misc.result": "success", - "rsa.time.duration_time": 1.468, - "rsa.time.starttime": "2019-03-17T19:35:40.000Z", - "service.type": "imperva", - "source.address": "iatisund424.mail.localdomain", - "source.ip": "10.178.190.123", - "source.port": 3288, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "tiset" - }, - { - "event.action": "cons", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=ectetur,createTime=2019-04-01 00:38:14,eventType=cons,eventSev=medium,username=fugit,subsystem=dantiu,message=\"ntutla\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "medium", - "log.offset": 38037, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "fugit" - ], - "rsa.internal.event_desc": "ntutla", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "cons", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2019-04-01T02:38:14.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "fugit" - }, - { - "destination.ip": "10.207.198.239", - "destination.port": 4735, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.207.198.239,dstPort=4735,dbUsername=Loremips,srcIP=10.8.147.176,srcPort=5920,creatTime=15 April 2019 07:40:49,srvGroup=odtem,service=ite,appName=tseddo,event#=ptatems,eventType=Login,usrGroup=ori,usrAuth=False,application=\"exerc\",osUsername=aUteni,srcHost=uidolo7626.local,dbName=rchite,schemaName=incididu,bindVar=idolor,sqlError=failure,respSize=3043,respTime=36.712000,affRows=oinB,action=\"accept\",rawQuery=\"econsequ\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "ori", - "host.hostname": "uidolo7626.local", - "input.type": "log", - "log.offset": 38180, - "network.application": "exerc", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "uidolo7626.local" - ], - "related.ip": [ - "10.207.198.239", - "10.8.147.176" - ], - "related.user": [ - "Loremips", - "aUteni", - "incididu" - ], - "rsa.counters.dclass_c1": 3043, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "rchite", - "rsa.db.index": "econsequ", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "ori", - "rsa.misc.group_object": "odtem", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 36.712, - "rsa.time.starttime": "2019-04-15T09:40:49.000Z", - "service.type": "imperva", - "source.address": "uidolo7626.local", - "source.ip": "10.8.147.176", - "source.port": 5920, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "Loremips" - }, - { - "destination.ip": "10.116.26.185", - "destination.port": 595, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.116.26.185,dstPort=595,dbUsername=oNe,srcIP=10.206.221.180,srcPort=6818,creatTime=2019-04-29 14:43:23,srvGroup=repr,service=idu,appName=otam,event#=amquaera,eventType=rumS,usrGroup=uelau,usrAuth=quidolor,application=\"cca\",osUsername=litesseq,srcHost=dmini3435.internal.domain,dbName=rumexerc,schemaName=nseq,bindVar=quisnost,sqlError=unknown,respSize=3218,respTime=26.485000,affRows=orisnisi,action=\"block\",rawQuery=\"nul\"", - "fileset.name": "securesphere", - "group.name": "uelau", - "host.hostname": "dmini3435.internal.domain", - "input.type": "log", - "log.offset": 38627, - "network.application": "cca", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "dmini3435.internal.domain" - ], - "related.ip": [ - "10.116.26.185", - "10.206.221.180" - ], - "related.user": [ - "litesseq", - "nseq", - "oNe" - ], - "rsa.counters.dclass_c1": 3218, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "rumexerc", - "rsa.db.index": "nul", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "rumS", - "rsa.misc.group": "uelau", - "rsa.misc.group_object": "repr", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 26.485, - "rsa.time.starttime": "2019-04-29T16:43:23.000Z", - "service.type": "imperva", - "source.address": "dmini3435.internal.domain", - "source.ip": "10.206.221.180", - "source.port": 6818, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "oNe" - }, - { - "destination.ip": "10.86.180.150", - "destination.port": 5495, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.86.180.150,dstPort=5495,dbUsername=mnisis,srcIP=10.253.127.130,srcPort=5339,creatTime=2019-05-13 21:45:57,srvGroup=isciveli,service=urve,appName=sundeomn,event#=tasu,eventType=Logout,usrGroup=equunt,usrAuth=True,application=\"uat\",osUsername=itasper,srcHost=nibusBo1864.domain,dbName=ent,schemaName=etconsec,bindVar=docons,sqlError=failure,respSize=4564,respTime=4.592000,affRows=mremap,action=\"allow\",rawQuery=\"sperna\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "equunt", - "host.hostname": "nibusBo1864.domain", - "input.type": "log", - "log.offset": 39075, - "network.application": "uat", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "nibusBo1864.domain" - ], - "related.ip": [ - "10.253.127.130", - "10.86.180.150" - ], - "related.user": [ - "etconsec", - "itasper", - "mnisis" - ], - "rsa.counters.dclass_c1": 4564, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "ent", - "rsa.db.index": "sperna", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "equunt", - "rsa.misc.group_object": "isciveli", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 4.592, - "rsa.time.starttime": "2019-05-13T23:45:57.000Z", - "service.type": "imperva", - "source.address": "nibusBo1864.domain", - "source.ip": "10.253.127.130", - "source.port": 5339, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mnisis" - }, - { - "destination.ip": "10.158.161.5", - "destination.port": 579, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=mexe,event#=sequatDu,createTime=2019-05-28 04:48:31,updateTime=ssuscip,alertSev=high,group=ciade,ruleName=\"busBonor\",evntDesc=\"enima\",category=emseq,disposition=osamni,eventType=umetMa,proto=ipv6-icmp,srcPort=4469,srcIP=10.220.175.201,dstPort=579,dstIP=10.158.161.5,policyName=\"eab\",occurrences=4098,httpHost=ciduntut,webMethod=atisu,url=\"https://internal.example.com/architec/incul.txt?aborios=mco#amnisiu\",webQuery=\"suntincu\",soapAction=lore,resultCode=equatu,sessionID=enbyCi,username=dolo,addUsername=adipi,responseTime=beata,responseSize=evelites,direction=inbound,dbUsername=tNeq,queryGroup=umtot,application=\"eumiurer\",srcHost=inv6528.www5.example,osUsername=rrors,schemaName=dolo,dbName=tsed,hdrName=corpori,action=allow", - "fileset.name": "securesphere", - "group.name": "ciade", - "host.hostname": "inv6528.www5.example", - "input.type": "log", - "log.level": "high", - "log.offset": 39520, - "network.application": "eumiurer", - "network.direction": "inbound", - "network.protocol": "ipv6-icmp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "inv6528.www5.example" - ], - "related.ip": [ - "10.158.161.5", - "10.220.175.201" - ], - "related.user": [ - "dolo", - "rrors" - ], - "rsa.counters.event_counter": 4098, - "rsa.db.database": "tsed", - "rsa.internal.event_desc": "enima", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "allow", - "atisu" - ], - "rsa.misc.category": "emseq", - "rsa.misc.disposition": "osamni", - "rsa.misc.event_type": "umetMa", - "rsa.misc.group": "ciade", - "rsa.misc.log_session_id": "enbyCi", - "rsa.misc.operation_id": "mexe", - "rsa.misc.policy_name": "eab", - "rsa.misc.result_code": "equatu", - "rsa.misc.rule_name": "busBonor", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2019-05-28T06:48:31.000Z", - "rsa.web.alias_host": "ciduntut", - "rule.name": "busBonor", - "service.type": "imperva", - "source.address": "inv6528.www5.example", - "source.ip": "10.220.175.201", - "source.port": 4469, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "internal.example.com", - "url.extension": "txt", - "url.fragment": "amnisiu", - "url.original": "https://internal.example.com/architec/incul.txt?aborios=mco#amnisiu", - "url.path": "/architec/incul.txt", - "url.query": [ - "aborios=mco", - "suntincu" - ], - "url.scheme": "https", - "user.name": "dolo" - }, - { - "event.action": "ema", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,event#=uioff,createTime=2019-06-11 11:51:06,eventType=ema,eventSev=low,username=mpo,subsystem=deritinv,message=\"ten\"", - "fileset.name": "securesphere", - "input.type": "log", - "log.level": "low", - "log.offset": 40273, - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.user": [ - "mpo" - ], - "rsa.internal.event_desc": "ten", - "rsa.internal.messageid": "Imperva", - "rsa.misc.event_type": "ema", - "rsa.misc.severity": "low", - "rsa.time.starttime": "2019-06-11T13:51:06.000Z", - "service.type": "imperva", - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "mpo" - }, - { - "destination.ip": "10.150.27.144", - "destination.port": 5627, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.150.27.144,dstPort=5627,dbUsername=res,srcIP=10.248.16.82,srcPort=6834,creatTime=25 June 2019 18:53:40,srvGroup=loinv,service=umd,appName=madmi,event#=xercit,eventType=Login,usrGroup=avolup,usrAuth=True,application=\"etdo\",osUsername=tuserror,srcHost=nisiutal4437.www.example,dbName=uipex,schemaName=ditautf,bindVar=orr,sqlError=failure,respSize=4367,respTime=25.972000,affRows=uptas,action=\"cancel\",rawQuery=\"osquira\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "avolup", - "host.hostname": "nisiutal4437.www.example", - "input.type": "log", - "log.offset": 40407, - "network.application": "etdo", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "nisiutal4437.www.example" - ], - "related.ip": [ - "10.150.27.144", - "10.248.16.82" - ], - "related.user": [ - "ditautf", - "res", - "tuserror" - ], - "rsa.counters.dclass_c1": 4367, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "uipex", - "rsa.db.index": "osquira", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "avolup", - "rsa.misc.group_object": "loinv", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 25.972, - "rsa.time.starttime": "2019-06-25T20:53:40.000Z", - "service.type": "imperva", - "source.address": "nisiutal4437.www.example", - "source.ip": "10.248.16.82", - "source.port": 6834, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "res" - }, - { - "destination.ip": "10.146.131.76", - "destination.port": 2281, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.146.131.76,dstPort=2281,dbUsername=orsi,srcIP=10.173.19.140,srcPort=7780,creatTime=2019-07-10 01:56:14,srvGroup=atu,service=ddo,appName=veli,event#=ata,eventType=Logout,usrGroup=untmoll,usrAuth=False,application=\"ididun\",osUsername=olo,srcHost=tqui5172.www.local,dbName=untex,schemaName=Except,bindVar=elitsedd,sqlError=failure,respSize=5844,respTime=52.550000,affRows=cingel,action=\"allow\",rawQuery=\"seos\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "untmoll", - "host.hostname": "tqui5172.www.local", - "input.type": "log", - "log.offset": 40851, - "network.application": "ididun", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "tqui5172.www.local" - ], - "related.ip": [ - "10.146.131.76", - "10.173.19.140" - ], - "related.user": [ - "Except", - "olo", - "orsi" - ], - "rsa.counters.dclass_c1": 5844, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "untex", - "rsa.db.index": "seos", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "Logout", - "rsa.misc.group": "untmoll", - "rsa.misc.group_object": "atu", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 52.55, - "rsa.time.starttime": "2019-07-10T03:56:14.000Z", - "service.type": "imperva", - "source.address": "tqui5172.www.local", - "source.ip": "10.173.19.140", - "source.port": 7780, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "orsi" - }, - { - "destination.ip": "10.69.5.227", - "destination.port": 5845, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.69.5.227,dstPort=5845,dbUsername=doloreme,srcIP=10.171.175.165,srcPort=5776,creatTime=2019-07-24 08:58:48,srvGroup=taspe,service=litess,appName=enimadm,event#=corpori,eventType=onemull,usrGroup=emeu,usrAuth=uisaute,application=\"tvol\",osUsername=ntocc,srcHost=intocca6708.mail.corp,dbName=dquiaco,schemaName=rumw,bindVar=ula,sqlError=failure,respSize=5201,respTime=46.690000,affRows=quam,action=\"deny\",rawQuery=\"edquian\"", - "fileset.name": "securesphere", - "group.name": "emeu", - "host.hostname": "intocca6708.mail.corp", - "input.type": "log", - "log.offset": 41284, - "network.application": "tvol", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "intocca6708.mail.corp" - ], - "related.ip": [ - "10.171.175.165", - "10.69.5.227" - ], - "related.user": [ - "doloreme", - "ntocc", - "rumw" - ], - "rsa.counters.dclass_c1": 5201, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "dquiaco", - "rsa.db.index": "edquian", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "onemull", - "rsa.misc.group": "emeu", - "rsa.misc.group_object": "taspe", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 46.69, - "rsa.time.starttime": "2019-07-24T10:58:48.000Z", - "service.type": "imperva", - "source.address": "intocca6708.mail.corp", - "source.ip": "10.171.175.165", - "source.port": 5776, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "doloreme" - }, - { - "destination.ip": "10.213.214.118", - "destination.port": 7851, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.213.214.118,dstPort=7851,dbUsername=ate,srcIP=10.253.175.129,srcPort=5547,creatTime=7 August 2019 16:01:23,srvGroup=rsi,service=tuser,appName=equinesc,event#=ectet,eventType=Login,usrGroup=emull,usrAuth=False,application=\"enatuser\",osUsername=epteurs,srcHost=isetqu2843.www.invalid,dbName=niamqu,schemaName=nrep,bindVar=lauda,sqlError=failure,respSize=6260,respTime=9.295000,affRows=aincidu,action=\"deny\",rawQuery=\"ipsamvol\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "emull", - "host.hostname": "isetqu2843.www.invalid", - "input.type": "log", - "log.offset": 41730, - "network.application": "enatuser", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "isetqu2843.www.invalid" - ], - "related.ip": [ - "10.213.214.118", - "10.253.175.129" - ], - "related.user": [ - "ate", - "epteurs", - "nrep" - ], - "rsa.counters.dclass_c1": 6260, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "niamqu", - "rsa.db.index": "ipsamvol", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "emull", - "rsa.misc.group_object": "rsi", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 9.295, - "rsa.time.starttime": "2019-08-07T18:01:23.000Z", - "service.type": "imperva", - "source.address": "isetqu2843.www.invalid", - "source.ip": "10.253.175.129", - "source.port": 5547, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "ate" - }, - { - "destination.ip": "10.89.26.170", - "destination.port": 3548, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=estquido,event#=eufugiat,createTime=2019-08-21 23:03:57,updateTime=minima,alertSev=high,group=bor,ruleName=\"uisnos\",evntDesc=\"loi\",category=tation,disposition=seddoe,eventType=adol,proto=rdp,srcPort=7756,srcIP=10.149.91.130,dstPort=3548,dstIP=10.89.26.170,policyName=\"aqueipsa\",occurrences=5863,httpHost=ide,webMethod=atcupi,url=\"https://www.example.com/sit/ugi.gif?sitametc=rur#edut\",webQuery=\"sitametc\",soapAction=iarchite,resultCode=uide,sessionID=iono,username=aboris,addUsername=eturad,responseTime=ipiscive,responseSize=sequu,direction=internal,dbUsername=epteur,queryGroup=iqu,application=\"uptateve\",srcHost=commodo6041.mail.localhost,osUsername=atus,schemaName=orumetMa,dbName=inventor,hdrName=dolo,action=block", - "fileset.name": "securesphere", - "group.name": "bor", - "host.hostname": "commodo6041.mail.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 42181, - "network.application": "uptateve", - "network.direction": "internal", - "network.protocol": "rdp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "commodo6041.mail.localhost" - ], - "related.ip": [ - "10.149.91.130", - "10.89.26.170" - ], - "related.user": [ - "aboris", - "atus", - "orumetMa" - ], - "rsa.counters.event_counter": 5863, - "rsa.db.database": "inventor", - "rsa.internal.event_desc": "loi", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "atcupi", - "block" - ], - "rsa.misc.category": "tation", - "rsa.misc.disposition": "seddoe", - "rsa.misc.event_type": "adol", - "rsa.misc.group": "bor", - "rsa.misc.log_session_id": "iono", - "rsa.misc.operation_id": "estquido", - "rsa.misc.policy_name": "aqueipsa", - "rsa.misc.result_code": "uide", - "rsa.misc.rule_name": "uisnos", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2019-08-22T01:03:57.000Z", - "rsa.web.alias_host": "ide", - "rule.name": "uisnos", - "service.type": "imperva", - "source.address": "commodo6041.mail.localhost", - "source.ip": "10.149.91.130", - "source.port": 7756, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "www.example.com", - "url.extension": "gif", - "url.fragment": "edut", - "url.original": "https://www.example.com/sit/ugi.gif?sitametc=rur#edut", - "url.path": "/sit/ugi.gif", - "url.query": [ - "sitametc", - "sitametc=rur" - ], - "url.scheme": "https", - "user.name": "aboris" - }, - { - "destination.ip": "10.81.108.232", - "destination.port": 856, - "event.action": "allow", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=tmolli,event#=orumSe,createTime=2019-09-05 06:06:31,updateTime=mSe,alertSev=high,group=teturad,ruleName=\"alorumwr\",evntDesc=\"pis\",category=idol,disposition=mmodico,eventType=emaccu,proto=rdp,srcPort=5818,srcIP=10.52.106.68,dstPort=856,dstIP=10.81.108.232,policyName=\"atemq\",occurrences=5098,httpHost=volupta,webMethod=Quisaut,url=\"https://internal.example.net/obeatae/sedqui.jpg?nulap=onseq#amrem\",webQuery=\"plicab\",soapAction=isisten,resultCode=eiusmodt,sessionID=naaliq,username=aco,addUsername=psamvolu,responseTime=inculp,responseSize=eni,direction=inbound,dbUsername=sedqu,queryGroup=ipitlabo,application=\"olorinr\",srcHost=gitse6744.api.local,osUsername=neavolup,schemaName=uaturve,dbName=lapa,hdrName=uepor,action=\"allow\",errormsg=\"failure\"", - "fileset.name": "securesphere", - "group.name": "teturad", - "host.hostname": "gitse6744.api.local", - "input.type": "log", - "log.level": "high", - "log.offset": 42925, - "network.application": "olorinr", - "network.direction": "inbound", - "network.protocol": "rdp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "gitse6744.api.local" - ], - "related.ip": [ - "10.52.106.68", - "10.81.108.232" - ], - "related.user": [ - "aco", - "neavolup", - "uaturve" - ], - "rsa.counters.event_counter": 5098, - "rsa.db.database": "lapa", - "rsa.internal.event_desc": "pis", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "Quisaut", - "allow" - ], - "rsa.misc.category": "idol", - "rsa.misc.disposition": "mmodico", - "rsa.misc.event_type": "emaccu", - "rsa.misc.group": "teturad", - "rsa.misc.log_session_id": "naaliq", - "rsa.misc.operation_id": "tmolli", - "rsa.misc.policy_name": "atemq", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "eiusmodt", - "rsa.misc.rule_name": "alorumwr", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2019-09-05T08:06:31.000Z", - "rsa.web.alias_host": "volupta", - "rule.name": "alorumwr", - "service.type": "imperva", - "source.address": "gitse6744.api.local", - "source.ip": "10.52.106.68", - "source.port": 5818, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "amrem", - "url.original": "https://internal.example.net/obeatae/sedqui.jpg?nulap=onseq#amrem", - "url.path": "/obeatae/sedqui.jpg", - "url.query": [ - "nulap=onseq", - "plicab" - ], - "url.scheme": "https", - "user.name": "aco" - }, - { - "destination.ip": "10.223.10.28", - "destination.port": 1991, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=umquamei,event#=nih,createTime=2019-09-19 13:09:05,updateTime=tionev,alertSev=high,group=quia,ruleName=\"eabill\",evntDesc=\"itatiset\",category=uaerat,disposition=met,eventType=isno,proto=icmp,srcPort=2572,srcIP=10.230.48.97,dstPort=1991,dstIP=10.223.10.28,policyName=\"emveleu\",occurrences=4029,httpHost=norumet,webMethod=tconse,url=\"https://mail.example.com/iaturE/inc.htm?uisaut=mnihilm#itinvo\",webQuery=\"lestia\",soapAction=anti,resultCode=eavo,sessionID=enderi,username=erit,addUsername=uptatem,responseTime=reeufug,responseSize=temveleu,direction=unknown,dbUsername=repre,queryGroup=consec,application=\"untmoll\",srcHost=par3605.internal.localdomain,osUsername=usmodte,schemaName=untex,dbName=ommodi,hdrName=ntiu,action=\"deny\",errormsg=\"success\"", - "fileset.name": "securesphere", - "group.name": "quia", - "host.hostname": "par3605.internal.localdomain", - "input.type": "log", - "log.level": "high", - "log.offset": 43696, - "network.application": "untmoll", - "network.direction": "unknown", - "network.protocol": "icmp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "par3605.internal.localdomain" - ], - "related.ip": [ - "10.223.10.28", - "10.230.48.97" - ], - "related.user": [ - "erit", - "untex", - "usmodte" - ], - "rsa.counters.event_counter": 4029, - "rsa.db.database": "ommodi", - "rsa.internal.event_desc": "itatiset", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "deny", - "tconse" - ], - "rsa.misc.category": "uaerat", - "rsa.misc.disposition": "met", - "rsa.misc.event_type": "isno", - "rsa.misc.group": "quia", - "rsa.misc.log_session_id": "enderi", - "rsa.misc.operation_id": "umquamei", - "rsa.misc.policy_name": "emveleu", - "rsa.misc.result": "success", - "rsa.misc.result_code": "eavo", - "rsa.misc.rule_name": "eabill", - "rsa.misc.severity": "high", - "rsa.time.starttime": "2019-09-19T15:09:05.000Z", - "rsa.web.alias_host": "norumet", - "rule.name": "eabill", - "service.type": "imperva", - "source.address": "par3605.internal.localdomain", - "source.ip": "10.230.48.97", - "source.port": 2572, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "mail.example.com", - "url.extension": "htm", - "url.fragment": "itinvo", - "url.original": "https://mail.example.com/iaturE/inc.htm?uisaut=mnihilm#itinvo", - "url.path": "/iaturE/inc.htm", - "url.query": [ - "lestia", - "uisaut=mnihilm" - ], - "url.scheme": "https", - "user.name": "erit" - }, - { - "destination.ip": "10.115.42.231", - "destination.port": 2143, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.115.42.231,dstPort=2143,dbUsername=res,srcIP=10.161.212.150,srcPort=2748,creatTime=3 October 2019 20:11:40,srvGroup=corporis,service=turExc,appName=urvelil,event#=ulapa,eventType=Login,usrGroup=abi,usrAuth=False,application=\"ameiusm\",osUsername=tasnul,srcHost=isau4356.www.home,dbName=niamqui,schemaName=sequamn,bindVar=onse,sqlError=failure,respSize=4846,respTime=6.993000,affRows=aliquaUt,action=\"deny\",rawQuery=\"natus\"", - "event.outcome": "failure", - "fileset.name": "securesphere", - "group.name": "abi", - "host.hostname": "isau4356.www.home", - "input.type": "log", - "log.offset": 44466, - "network.application": "ameiusm", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "isau4356.www.home" - ], - "related.ip": [ - "10.115.42.231", - "10.161.212.150" - ], - "related.user": [ - "res", - "sequamn", - "tasnul" - ], - "rsa.counters.dclass_c1": 4846, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "niamqui", - "rsa.db.index": "natus", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "abi", - "rsa.misc.group_object": "corporis", - "rsa.misc.result": "failure", - "rsa.time.duration_time": 6.993, - "rsa.time.starttime": "2019-10-03T22:11:40.000Z", - "service.type": "imperva", - "source.address": "isau4356.www.home", - "source.ip": "10.161.212.150", - "source.port": 2748, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "res" - }, - { - "destination.ip": "10.247.108.144", - "destination.port": 3896, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=emp,event#=suscipit,createTime=2019-10-18 03:14:14,updateTime=iaconseq,alertSev=medium,group=sciuntNe,ruleName=\"nevo\",evntDesc=\"stiaec\",category=officia,disposition=ametcon,eventType=gnid,proto=ipv6,srcPort=5677,srcIP=10.226.75.20,dstPort=3896,dstIP=10.247.108.144,policyName=\"iutaliqu\",occurrences=3711,httpHost=onsectet,webMethod=iat,url=\"https://www5.example.org/elaud/temsequ.htm?dolo=iciatisu#eip\",webQuery=\"iquaUte\",soapAction=aborumSe,resultCode=writt,sessionID=dent,username=tema,addUsername=saquaeab,responseTime=rpo,responseSize=inr,direction=internal,dbUsername=edquiac,queryGroup=olore,application=\"urEx\",srcHost=labo3477.www5.domain,osUsername=maccusan,schemaName=fugia,dbName=psa,hdrName=iset,action=\"block\",errormsg=\"success\"", - "fileset.name": "securesphere", - "group.name": "sciuntNe", - "host.hostname": "labo3477.www5.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 44914, - "network.application": "urEx", - "network.direction": "internal", - "network.protocol": "ipv6", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "labo3477.www5.domain" - ], - "related.ip": [ - "10.226.75.20", - "10.247.108.144" - ], - "related.user": [ - "fugia", - "maccusan", - "tema" - ], - "rsa.counters.event_counter": 3711, - "rsa.db.database": "psa", - "rsa.internal.event_desc": "stiaec", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "block", - "iat" - ], - "rsa.misc.category": "officia", - "rsa.misc.disposition": "ametcon", - "rsa.misc.event_type": "gnid", - "rsa.misc.group": "sciuntNe", - "rsa.misc.log_session_id": "dent", - "rsa.misc.operation_id": "emp", - "rsa.misc.policy_name": "iutaliqu", - "rsa.misc.result": "success", - "rsa.misc.result_code": "writt", - "rsa.misc.rule_name": "nevo", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2019-10-18T05:14:14.000Z", - "rsa.web.alias_host": "onsectet", - "rule.name": "nevo", - "service.type": "imperva", - "source.address": "labo3477.www5.domain", - "source.ip": "10.226.75.20", - "source.port": 5677, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "www5.example.org", - "url.extension": "htm", - "url.fragment": "eip", - "url.original": "https://www5.example.org/elaud/temsequ.htm?dolo=iciatisu#eip", - "url.path": "/elaud/temsequ.htm", - "url.query": [ - "dolo=iciatisu", - "iquaUte" - ], - "url.scheme": "https", - "user.name": "tema" - }, - { - "destination.ip": "10.192.15.65", - "destination.port": 3328, - "event.action": "block", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.192.15.65,dstPort=3328,dbUsername=nimides,srcIP=10.97.22.61,srcPort=6420,creatTime=2019-11-01 10:16:48,srvGroup=labor,service=quelaud,appName=ira,event#=gna,eventType=aparia,usrGroup=ntoreve,usrAuth=remips,application=\"uptatemU\",osUsername=illumd,srcHost=itseddo2209.mail.domain,dbName=olu,schemaName=rExcep,bindVar=turExcep,sqlError=success,respSize=4173,respTime=166.270000,affRows=duntutla,action=\"block\",rawQuery=\"tmollit\"", - "fileset.name": "securesphere", - "group.name": "ntoreve", - "host.hostname": "itseddo2209.mail.domain", - "input.type": "log", - "log.offset": 45679, - "network.application": "uptatemU", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "itseddo2209.mail.domain" - ], - "related.ip": [ - "10.192.15.65", - "10.97.22.61" - ], - "related.user": [ - "illumd", - "nimides", - "rExcep" - ], - "rsa.counters.dclass_c1": 4173, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "olu", - "rsa.db.index": "tmollit", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.event_type": "aparia", - "rsa.misc.group": "ntoreve", - "rsa.misc.group_object": "labor", - "rsa.misc.result": "success", - "rsa.time.duration_time": 166.27, - "rsa.time.starttime": "2019-11-01T12:16:48.000Z", - "service.type": "imperva", - "source.address": "itseddo2209.mail.domain", - "source.ip": "10.97.22.61", - "source.port": 6420, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "nimides" - }, - { - "destination.ip": "10.116.76.161", - "destination.port": 2009, - "event.action": "cancel", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,alert#=venia,event#=Loremi,createTime=2019-11-15 17:19:22,updateTime=uisnostr,alertSev=medium,group=vol,ruleName=\"ommodi\",evntDesc=\"ritat\",category=dipi,disposition=asnulapa,eventType=atev,proto=tcp,srcPort=7469,srcIP=10.197.254.133,dstPort=2009,dstIP=10.116.76.161,policyName=\"tla\",occurrences=2608,httpHost=ender,webMethod=quid,url=\"https://mail.example.net/teturad/nimide.htm?ueporroq=writ#ema\",webQuery=\"ioffici\",soapAction=agni,resultCode=tat,sessionID=metconse,username=ide,addUsername=equu,responseTime=pernatur,responseSize=orem,direction=outbound,dbUsername=caecatc,queryGroup=iarc,application=\"emquia\",srcHost=duntutl3396.api.host,osUsername=idu,schemaName=trudex,dbName=ncul,hdrName=mcorpor,action=cancel", - "fileset.name": "securesphere", - "group.name": "vol", - "host.hostname": "duntutl3396.api.host", - "input.type": "log", - "log.level": "medium", - "log.offset": 46132, - "network.application": "emquia", - "network.direction": "outbound", - "network.protocol": "tcp", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "duntutl3396.api.host" - ], - "related.ip": [ - "10.116.76.161", - "10.197.254.133" - ], - "related.user": [ - "ide", - "idu", - "trudex" - ], - "rsa.counters.event_counter": 2608, - "rsa.db.database": "ncul", - "rsa.internal.event_desc": "ritat", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "cancel", - "quid" - ], - "rsa.misc.category": "dipi", - "rsa.misc.disposition": "asnulapa", - "rsa.misc.event_type": "atev", - "rsa.misc.group": "vol", - "rsa.misc.log_session_id": "metconse", - "rsa.misc.operation_id": "venia", - "rsa.misc.policy_name": "tla", - "rsa.misc.result_code": "tat", - "rsa.misc.rule_name": "ommodi", - "rsa.misc.severity": "medium", - "rsa.time.starttime": "2019-11-15T19:19:22.000Z", - "rsa.web.alias_host": "ender", - "rule.name": "ommodi", - "service.type": "imperva", - "source.address": "duntutl3396.api.host", - "source.ip": "10.197.254.133", - "source.port": 7469, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "url.domain": "mail.example.net", - "url.extension": "htm", - "url.fragment": "ema", - "url.original": "https://mail.example.net/teturad/nimide.htm?ueporroq=writ#ema", - "url.path": "/teturad/nimide.htm", - "url.query": [ - "ioffici", - "ueporroq=writ" - ], - "url.scheme": "https", - "user.name": "ide" - }, - { - "destination.ip": "10.28.77.79", - "destination.port": 3615, - "event.action": "deny", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.28.77.79,dstPort=3615,dbUsername=upta,srcIP=10.144.14.15,srcPort=1150,creatTime=30 November 2019 00:21:57,srvGroup=consequ,service=min,appName=riame,event#=gnaal,eventType=Login,usrGroup=nti,usrAuth=True,application=\"tetura\",osUsername=utlab,srcHost=colabo6686.internal.invalid,dbName=uptass,schemaName=rspic,bindVar=itsedq,sqlError=success,respSize=4810,respTime=22.348000,affRows=iut,action=\"deny\",rawQuery=\"nemu\"", - "event.outcome": "success", - "fileset.name": "securesphere", - "group.name": "nti", - "host.hostname": "colabo6686.internal.invalid", - "input.type": "log", - "log.offset": 46865, - "network.application": "tetura", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "colabo6686.internal.invalid" - ], - "related.ip": [ - "10.144.14.15", - "10.28.77.79" - ], - "related.user": [ - "rspic", - "upta", - "utlab" - ], - "rsa.counters.dclass_c1": 4810, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "uptass", - "rsa.db.index": "nemu", - "rsa.internal.messageid": "Imperva", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "Login", - "rsa.misc.group": "nti", - "rsa.misc.group_object": "consequ", - "rsa.misc.result": "success", - "rsa.time.duration_time": 22.348, - "rsa.time.starttime": "2019-11-30T02:21:57.000Z", - "service.type": "imperva", - "source.address": "colabo6686.internal.invalid", - "source.ip": "10.144.14.15", - "source.port": 1150, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "upta" - }, - { - "destination.ip": "10.248.177.182", - "destination.port": 317, - "event.action": "accept", - "event.code": "Imperva", - "event.dataset": "imperva.securesphere", - "event.module": "imperva", - "event.original": "%IMPERVA-Imperva,dstIP=10.248.177.182,dstPort=317,dbUsername=quei,srcIP=10.18.15.43,srcPort=2224,creatTime=2019-12-14 07:24:31,srvGroup=reetdol,service=umtotam,appName=itaedi,event#=ant,eventType=tiumt,usrGroup=taedicta,usrAuth=mveniamq,application=\"exerci\",osUsername=quaturve,srcHost=tsunti1164.www.example,dbName=equatur,schemaName=caecat,bindVar=oreetd,sqlError=unknown,respSize=983,respTime=113.318000,affRows=nderit,action=\"accept\",rawQuery=\"icer\"", - "fileset.name": "securesphere", - "group.name": "taedicta", - "host.hostname": "tsunti1164.www.example", - "input.type": "log", - "log.offset": 47307, - "network.application": "exerci", - "observer.product": "Secure", - "observer.type": "WAF", - "observer.vendor": "Imperva", - "related.hosts": [ - "tsunti1164.www.example" - ], - "related.ip": [ - "10.18.15.43", - "10.248.177.182" - ], - "related.user": [ - "caecat", - "quaturve", - "quei" - ], - "rsa.counters.dclass_c1": 983, - "rsa.counters.dclass_c1_str": "Affected Rows", - "rsa.db.database": "equatur", - "rsa.db.index": "icer", - "rsa.internal.messageid": "Imperva", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "tiumt", - "rsa.misc.group": "taedicta", - "rsa.misc.group_object": "reetdol", - "rsa.misc.result": "unknown", - "rsa.time.duration_time": 113.318, - "rsa.time.starttime": "2019-12-14T09:24:31.000Z", - "service.type": "imperva", - "source.address": "tsunti1164.www.example", - "source.ip": "10.18.15.43", - "source.port": 2224, - "tags": [ - "forwarded", - "imperva.securesphere" - ], - "user.name": "quei" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/infoblox/README.md b/x-pack/filebeat/module/infoblox/README.md deleted file mode 100644 index 71a9075d5ab..00000000000 --- a/x-pack/filebeat/module/infoblox/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# infoblox module - -This is a module for Infoblox NIOS logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML infobloxnios version 134 -at 2020-12-23 15:19:50.215335 +0000 UTC. - diff --git a/x-pack/filebeat/module/infoblox/_meta/config.yml b/x-pack/filebeat/module/infoblox/_meta/config.yml deleted file mode 100644 index 03c704cc5ba..00000000000 --- a/x-pack/filebeat/module/infoblox/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: infoblox - nios: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9512 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/infoblox/_meta/docs.asciidoc b/x-pack/filebeat/module/infoblox/_meta/docs.asciidoc deleted file mode 100644 index dc894b8f3c3..00000000000 --- a/x-pack/filebeat/module/infoblox/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: infoblox -:has-dashboards: false - -== Infoblox module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/infoblox_nios[Infoblox NIOS] Elastic integration instead."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Infoblox NIOS logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: nios - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `nios` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "infobloxnios" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9512` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/infoblox/_meta/fields.yml b/x-pack/filebeat/module/infoblox/_meta/fields.yml deleted file mode 100644 index 38b39cb5624..00000000000 --- a/x-pack/filebeat/module/infoblox/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: infoblox - title: Infoblox NIOS - description: > - infoblox fields. - fields: diff --git a/x-pack/filebeat/module/infoblox/fields.go b/x-pack/filebeat/module/infoblox/fields.go deleted file mode 100644 index 00ce879c705..00000000000 --- a/x-pack/filebeat/module/infoblox/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package infoblox - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "infoblox", asset.ModuleFieldsPri, AssetInfoblox); err != nil { - panic(err) - } -} - -// AssetInfoblox returns asset data. -// This is the base64 encoded zlib format compressed contents of module/infoblox. -func AssetInfoblox() string { - return "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" -} diff --git a/x-pack/filebeat/module/infoblox/nios/_meta/fields.yml b/x-pack/filebeat/module/infoblox/nios/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/infoblox/nios/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/infoblox/nios/config/input.yml b/x-pack/filebeat/module/infoblox/nios/config/input.yml deleted file mode 100644 index f475dd2fca6..00000000000 --- a/x-pack/filebeat/module/infoblox/nios/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Infoblox" - product: "Network" - type: "IPAM" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/infoblox/nios/config/liblogparser.js - - ${path.home}/module/infoblox/nios/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/infoblox/nios/config/liblogparser.js b/x-pack/filebeat/module/infoblox/nios/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/infoblox/nios/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{day->} %{time->} %{hhostname->} %{p0}"); - -var dup2 = setc("eventcategory","1401070000"); - -var dup3 = setc("ec_theme","Authentication"); - -var dup4 = setc("ec_subject","User"); - -var dup5 = setc("ec_activity","Logoff"); - -var dup6 = setc("ec_outcome","Success"); - -var dup7 = setf("msg","$MSG"); - -var dup8 = date_time({ - dest: "event_time", - args: ["fld1","fld2"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup9 = setf("event_source","hhostname"); - -var dup10 = setc("eventcategory","1401060000"); - -var dup11 = setc("ec_activity","Logon"); - -var dup12 = setc("eventcategory","1609000000"); - -var dup13 = setc("eventcategory","1605000000"); - -var dup14 = setc("eventcategory","1401030000"); - -var dup15 = setc("ec_outcome","Failure"); - -var dup16 = setc("eventcategory","1603000000"); - -var dup17 = match("MESSAGE#19:dhcpd:18/0", "nwparser.payload", "%{} %{p0}"); - -var dup18 = match("MESSAGE#19:dhcpd:18/1_0", "nwparser.p0", "Added %{p0}"); - -var dup19 = match("MESSAGE#19:dhcpd:18/1_1", "nwparser.p0", "added %{p0}"); - -var dup20 = setc("action","DHCPDECLINE"); - -var dup21 = match("MESSAGE#25:dhcpd:03/1_0", "nwparser.p0", "(%{dhost}) via %{p0}"); - -var dup22 = match("MESSAGE#25:dhcpd:03/1_1", "nwparser.p0", "via %{p0}"); - -var dup23 = setc("action","DHCPRELEASE"); - -var dup24 = setc("action","DHCPDISCOVER"); - -var dup25 = match("MESSAGE#28:dhcpd:09/0", "nwparser.payload", "DHCPREQUEST for %{saddr->} from %{smacaddr->} %{p0}"); - -var dup26 = match("MESSAGE#28:dhcpd:09/1_0", "nwparser.p0", "(%{shost}) via %{p0}"); - -var dup27 = setc("action","DHCPREQUEST"); - -var dup28 = match("MESSAGE#31:dhcpd:11/2", "nwparser.p0", "%{interface}"); - -var dup29 = setc("event_description","unknown network segment"); - -var dup30 = date_time({ - dest: "event_time", - args: ["month","day","time"], - fmts: [ - [dB,dF,dZ], - ], -}); - -var dup31 = match("MESSAGE#38:dhcpd:14/2", "nwparser.p0", "%{interface->} relay %{fld1->} lease-duration %{duration}"); - -var dup32 = setc("action","DHCPACK"); - -var dup33 = match("MESSAGE#53:named:16/1_0", "nwparser.p0", "approved%{}"); - -var dup34 = match("MESSAGE#53:named:16/1_1", "nwparser.p0", "denied%{}"); - -var dup35 = setf("domain","zone"); - -var dup36 = match("MESSAGE#56:named:01/0", "nwparser.payload", "client %{saddr}#%{p0}"); - -var dup37 = match("MESSAGE#57:named:17/1_0", "nwparser.p0", "IN%{p0}"); - -var dup38 = match("MESSAGE#57:named:17/1_1", "nwparser.p0", "CH%{p0}"); - -var dup39 = match("MESSAGE#57:named:17/1_2", "nwparser.p0", "HS%{p0}"); - -var dup40 = match("MESSAGE#57:named:17/3_1", "nwparser.p0", "%{action->} at '%{p0}"); - -var dup41 = match("MESSAGE#57:named:17/4_0", "nwparser.p0", "%{hostip}.in-addr.arpa' %{p0}"); - -var dup42 = match("MESSAGE#57:named:17/5_0", "nwparser.p0", "%{dns_querytype->} \"%{fld3}\""); - -var dup43 = match("MESSAGE#57:named:17/5_1", "nwparser.p0", "%{dns_querytype->} %{hostip}"); - -var dup44 = match_copy("MESSAGE#57:named:17/5_2", "nwparser.p0", "dns_querytype"); - -var dup45 = setc("event_description","updating zone"); - -var dup46 = match_copy("MESSAGE#60:named:19/2", "nwparser.p0", "event_description"); - -var dup47 = setf("domain","hostname"); - -var dup48 = match_copy("MESSAGE#66:named:25/1_1", "nwparser.p0", "result"); - -var dup49 = setc("eventcategory","1801010000"); - -var dup50 = setc("ec_activity","Request"); - -var dup51 = match("MESSAGE#67:named:63/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3}: %{severity}: client %{p0}"); - -var dup52 = match("MESSAGE#67:named:63/1_0", "nwparser.p0", "%{fld9->} %{p0}"); - -var dup53 = match("MESSAGE#67:named:63/1_1", "nwparser.p0", "%{p0}"); - -var dup54 = match("MESSAGE#74:named:10/1_3", "nwparser.p0", "%{sport}:%{p0}"); - -var dup55 = setc("action","Refused"); - -var dup56 = setf("dns_querytype","event_description"); - -var dup57 = setc("eventcategory","1901000000"); - -var dup58 = match("MESSAGE#83:named:24/0", "nwparser.payload", "client %{saddr}#%{sport->} (%{domain}): %{p0}"); - -var dup59 = setc("eventcategory","1801000000"); - -var dup60 = setf("zone","domain"); - -var dup61 = date_time({ - dest: "event_time", - args: ["month","day","time"], - fmts: [ - [dB,dD,dZ], - ], -}); - -var dup62 = setf("info","hdata"); - -var dup63 = setc("eventcategory","1301000000"); - -var dup64 = setc("eventcategory","1303000000"); - -var dup65 = match_copy("MESSAGE#7:httpd:06", "nwparser.payload", "event_description", processor_chain([ - dup13, - dup7, - dup9, -])); - -var dup66 = linear_select([ - dup18, - dup19, -]); - -var dup67 = linear_select([ - dup21, - dup22, -]); - -var dup68 = linear_select([ - dup26, - dup22, -]); - -var dup69 = match_copy("MESSAGE#204:dhcpd:37", "nwparser.payload", "event_description", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var dup70 = linear_select([ - dup33, - dup34, -]); - -var dup71 = linear_select([ - dup37, - dup38, - dup39, -]); - -var dup72 = linear_select([ - dup42, - dup43, - dup44, -]); - -var dup73 = linear_select([ - dup52, - dup53, -]); - -var dup74 = match_copy("MESSAGE#118:validate_dhcpd", "nwparser.payload", "event_description", processor_chain([ - dup16, - dup7, - dup9, -])); - -var dup75 = match("MESSAGE#134:openvpn-member:01", "nwparser.payload", "%{action->} : %{event_description->} (code=%{resultcode})", processor_chain([ - dup16, - dup7, - dup9, -])); - -var dup76 = match("MESSAGE#137:openvpn-member:04", "nwparser.payload", "%{severity}: %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var dup77 = match_copy("MESSAGE#225:syslog", "nwparser.payload", "event_description", processor_chain([ - dup13, - dup7, - dup9, - dup62, -])); - -var hdr1 = match("HEADER#0:001", "message", "%{month->} %{day->} %{time->} %{hhostname->} %{messageid}[%{data}]: %{payload}", processor_chain([ - setc("header_id","001"), -])); - -var part1 = match("HEADER#1:006/1_0", "nwparser.p0", "%{hhostip} %{messageid}[%{data}]: %{p0}"); - -var part2 = match("HEADER#1:006/1_1", "nwparser.p0", "%{hhostip} %{messageid}: %{p0}"); - -var select1 = linear_select([ - part1, - part2, -]); - -var part3 = match_copy("HEADER#1:006/2", "nwparser.p0", "payload"); - -var all1 = all_match({ - processors: [ - dup1, - select1, - part3, - ], - on_success: processor_chain([ - setc("header_id","006"), - ]), -}); - -var hdr2 = match("HEADER#2:005", "message", "%{month->} %{day->} %{time->} %{hhostname->} %{hdata}: %{messageid->} %{payload}", processor_chain([ - setc("header_id","005"), -])); - -var part4 = match("HEADER#3:002/1_0", "nwparser.p0", "-%{p0}"); - -var part5 = match_copy("HEADER#3:002/1_1", "nwparser.p0", "p0"); - -var select2 = linear_select([ - part4, - part5, -]); - -var part6 = match("HEADER#3:002/2", "nwparser.p0", ":%{messageid->} %{payload}"); - -var all2 = all_match({ - processors: [ - dup1, - select2, - part6, - ], - on_success: processor_chain([ - setc("header_id","002"), - ]), -}); - -var hdr3 = match("HEADER#4:0003", "message", "%{messageid}[%{data}]: %{payload}", processor_chain([ - setc("header_id","0003"), -])); - -var hdr4 = match("HEADER#5:0004", "message", "%{messageid}: %{payload}", processor_chain([ - setc("header_id","0004"), -])); - -var hdr5 = match("HEADER#6:0005", "message", "%{month->} %{day->} %{time->} %{hhostname->} %{fld1->} |%{messageid->} |%{payload}", processor_chain([ - setc("header_id","0005"), -])); - -var select3 = linear_select([ - hdr1, - all1, - hdr2, - all2, - hdr3, - hdr4, - hdr5, -]); - -var part7 = match("MESSAGE#0:httpd", "nwparser.payload", "%{fld1->} %{fld2}.%{fld3->} [%{username}]: Logout - - ip=%{saddr->} group=%{group->} trigger_event=%{event_description}", processor_chain([ - dup2, - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, -])); - -var msg1 = msg("httpd", part7); - -var part8 = match("MESSAGE#1:httpd:01", "nwparser.payload", "%{fld1->} %{fld2}.%{fld3->} [%{username}]: Login_Allowed - - to=%{fld4->} ip=%{saddr->} auth=%{authmethod->} group=%{group->} apparently_via=%{info}", processor_chain([ - dup10, - dup3, - dup4, - dup11, - dup6, - dup7, - dup8, - dup9, -])); - -var msg2 = msg("httpd:01", part8); - -var part9 = match("MESSAGE#2:httpd:02", "nwparser.payload", "%{fld1->} %{fld2}.%{fld3->} [%{username}]: Called - %{action->} message=%{info}", processor_chain([ - dup12, - dup7, - dup8, - dup9, -])); - -var msg3 = msg("httpd:02", part9); - -var part10 = match("MESSAGE#3:httpd:03", "nwparser.payload", "%{fld1->} %{fld2}.%{fld3->} [%{username}]: Created HostAddress %{hostip}: Set address=\"%{saddr}\",configure_for_dhcp=%{fld10},match_option=\"%{info}\",parent=%{context}", processor_chain([ - dup12, - dup7, - dup8, - dup9, -])); - -var msg4 = msg("httpd:03", part10); - -var part11 = match("MESSAGE#4:httpd:04", "nwparser.payload", "%{shost}: %{fld1->} authentication for user %{username->} failed", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg5 = msg("httpd:04", part11); - -var part12 = match("MESSAGE#5:httpd:05", "nwparser.payload", "%{fld1->} %{fld2}.%{fld3->} [%{username}]: Called - %{event_description}", processor_chain([ - dup13, - dup7, - dup8, - dup9, -])); - -var msg6 = msg("httpd:05", part12); - -var part13 = match("MESSAGE#6:httpd:07", "nwparser.payload", "%{fld1->} %{fld2}.%{fld3->} [%{username}]: Login_Denied - - to=%{terminal->} ip=%{saddr->} info=%{info}", processor_chain([ - dup14, - dup3, - dup4, - dup11, - dup15, - dup7, - dup8, - dup9, -])); - -var msg7 = msg("httpd:07", part13); - -var msg8 = msg("httpd:06", dup65); - -var select4 = linear_select([ - msg1, - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, -]); - -var part14 = match("MESSAGE#8:in.tftpd:01", "nwparser.payload", "RRQ from %{saddr->} filename %{filename}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","RRQ from remote host"), -])); - -var msg9 = msg("in.tftpd:01", part14); - -var part15 = match("MESSAGE#9:in.tftpd:02", "nwparser.payload", "sending NAK (%{resultcode}, %{result}) to %{daddr}", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","sending NAK to remote host"), -])); - -var msg10 = msg("in.tftpd:02", part15); - -var part16 = match("MESSAGE#10:in.tftpd", "nwparser.payload", "connection refused from %{saddr}", processor_chain([ - setc("eventcategory","1801030000"), - dup7, - dup9, -])); - -var msg11 = msg("in.tftpd", part16); - -var select5 = linear_select([ - msg9, - msg10, - msg11, -]); - -var part17 = match("MESSAGE#11:dhcpd:12/0", "nwparser.payload", "%{event_type}: received a REQUEST DHCP packet from relay-agent %{interface->} with a circuit-id of \"%{id}\" and remote-id of \"%{smacaddr}\" for %{hostip->} (%{dmacaddr}) lease time is %{p0}"); - -var part18 = match("MESSAGE#11:dhcpd:12/1_0", "nwparser.p0", "undefined %{p0}"); - -var part19 = match("MESSAGE#11:dhcpd:12/1_1", "nwparser.p0", "%{duration->} %{p0}"); - -var select6 = linear_select([ - part18, - part19, -]); - -var part20 = match("MESSAGE#11:dhcpd:12/2", "nwparser.p0", "seconds%{}"); - -var all3 = all_match({ - processors: [ - part17, - select6, - part20, - ], - on_success: processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","received a REQUEST DHCP packet from relay-agent"), - ]), -}); - -var msg12 = msg("dhcpd:12", all3); - -var part21 = match("MESSAGE#12:dhcpd:21", "nwparser.payload", "bind update on %{hostip->} from %{hostname}(%{fld1}) rejected: %{result}", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","bind update rejected"), -])); - -var msg13 = msg("dhcpd:21", part21); - -var part22 = match("MESSAGE#13:dhcpd:10", "nwparser.payload", "Unable to add forward map from %{shost->} %{fld1}to %{daddr}: %{result}", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","Unable to add forward map"), -])); - -var msg14 = msg("dhcpd:10", part22); - -var part23 = match("MESSAGE#14:dhcpd:13", "nwparser.payload", "Average %{fld1->} dynamic DNS update latency: %{result->} micro seconds", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Average dynamic DNS update latency"), -])); - -var msg15 = msg("dhcpd:13", part23); - -var part24 = match("MESSAGE#15:dhcpd:15", "nwparser.payload", "Dynamic DNS update timeout count in last %{info->} minutes: %{result}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Dynamic DNS update timeout count"), -])); - -var msg16 = msg("dhcpd:15", part24); - -var part25 = match("MESSAGE#16:dhcpd:22", "nwparser.payload", "Removed forward map from %{shost->} %{fld1}to %{daddr}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Removed forward map"), -])); - -var msg17 = msg("dhcpd:22", part25); - -var part26 = match("MESSAGE#17:dhcpd:25", "nwparser.payload", "Removed reverse map on %{hostname}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Removed reverse map"), -])); - -var msg18 = msg("dhcpd:25", part26); - -var part27 = match("MESSAGE#18:dhcpd:06", "nwparser.payload", "received shutdown -/-/ %{result}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","received shutdown"), -])); - -var msg19 = msg("dhcpd:06", part27); - -var part28 = match("MESSAGE#19:dhcpd:18/2", "nwparser.p0", "new forward map from %{hostname->} %{space->} %{daddr}"); - -var all4 = all_match({ - processors: [ - dup17, - dup66, - part28, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Added new forward map"), - ]), -}); - -var msg20 = msg("dhcpd:18", all4); - -var part29 = match("MESSAGE#20:dhcpd:19/2", "nwparser.p0", "reverse map from %{hostname->} %{space->} %{daddr}"); - -var all5 = all_match({ - processors: [ - dup17, - dup66, - part29, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","added reverse map"), - ]), -}); - -var msg21 = msg("dhcpd:19", all5); - -var part30 = match("MESSAGE#21:dhcpd", "nwparser.payload", "Abandoning IP address %{hostip}: declined", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","Abandoning IP declined"), -])); - -var msg22 = msg("dhcpd", part30); - -var part31 = match("MESSAGE#22:dhcpd:30", "nwparser.payload", "Abandoning IP address %{hostip}: pinged before offer", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","Abandoning IP pinged before offer"), -])); - -var msg23 = msg("dhcpd:30", part31); - -var part32 = match("MESSAGE#23:dhcpd:01", "nwparser.payload", "DHCPDECLINE of %{saddr->} from %{smacaddr->} (%{shost}) via %{interface}: %{info}", processor_chain([ - dup16, - dup7, - dup9, - dup20, -])); - -var msg24 = msg("dhcpd:01", part32); - -var part33 = match("MESSAGE#24:dhcpd:02", "nwparser.payload", "DHCPDECLINE of %{saddr->} from %{smacaddr->} via %{interface}: %{info}", processor_chain([ - dup16, - dup7, - dup9, - dup20, -])); - -var msg25 = msg("dhcpd:02", part33); - -var part34 = match("MESSAGE#25:dhcpd:03/0", "nwparser.payload", "DHCPRELEASE of %{saddr->} from %{dmacaddr->} %{p0}"); - -var part35 = match("MESSAGE#25:dhcpd:03/2", "nwparser.p0", "%{interface->} (%{info})"); - -var all6 = all_match({ - processors: [ - part34, - dup67, - part35, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup23, - ]), -}); - -var msg26 = msg("dhcpd:03", all6); - -var part36 = match("MESSAGE#26:dhcpd:04", "nwparser.payload", "DHCPDISCOVER from %{smacaddr->} via %{interface}: network %{mask}: %{info}", processor_chain([ - dup13, - dup7, - dup9, - dup24, -])); - -var msg27 = msg("dhcpd:04", part36); - -var part37 = match("MESSAGE#27:dhcpd:07/0", "nwparser.payload", "DHCPREQUEST for %{saddr->} %{p0}"); - -var part38 = match("MESSAGE#27:dhcpd:07/1_0", "nwparser.p0", "(%{shost}) from %{p0}"); - -var part39 = match("MESSAGE#27:dhcpd:07/1_1", "nwparser.p0", "from %{p0}"); - -var select7 = linear_select([ - part38, - part39, -]); - -var part40 = match("MESSAGE#27:dhcpd:07/2", "nwparser.p0", "%{smacaddr->} (%{hostname}) via %{interface}: ignored (%{result})"); - -var all7 = all_match({ - processors: [ - part37, - select7, - part40, - ], - on_success: processor_chain([ - dup16, - dup7, - dup9, - setc("action","DHCPREQUEST ignored"), - ]), -}); - -var msg28 = msg("dhcpd:07", all7); - -var part41 = match("MESSAGE#28:dhcpd:09/2", "nwparser.p0", "%{interface}: wrong network"); - -var all8 = all_match({ - processors: [ - dup25, - dup68, - part41, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup27, - setc("result","wrong network"), - ]), -}); - -var msg29 = msg("dhcpd:09", all8); - -var part42 = match("MESSAGE#29:dhcpd:26/2", "nwparser.p0", "%{interface}: lease %{hostip->} unavailable"); - -var all9 = all_match({ - processors: [ - dup25, - dup68, - part42, - ], - on_success: processor_chain([ - dup16, - dup7, - dup9, - dup27, - setc("result","lease unavailable"), - ]), -}); - -var msg30 = msg("dhcpd:26", all9); - -var part43 = match("MESSAGE#30:dhcpd:08", "nwparser.payload", "DHCPREQUEST for %{saddr->} (%{shost}) from %{smacaddr->} (%{hostname}) via %{interface}", processor_chain([ - dup13, - dup7, - dup9, - dup27, -])); - -var msg31 = msg("dhcpd:08", part43); - -var all10 = all_match({ - processors: [ - dup25, - dup68, - dup28, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup27, - ]), -}); - -var msg32 = msg("dhcpd:11", all10); - -var part44 = match("MESSAGE#32:dhcpd:31", "nwparser.payload", "DHCPRELEASE from %{smacaddr->} via %{saddr}: unknown network segment", processor_chain([ - dup13, - dup7, - dup9, - dup23, - dup29, -])); - -var msg33 = msg("dhcpd:31", part44); - -var part45 = match("MESSAGE#33:dhcpd:32", "nwparser.payload", "BOOTREQUEST from %{smacaddr->} via %{saddr}: %{event_description}", processor_chain([ - dup13, - dup7, - dup9, - setc("action","BOOTREQUEST"), - dup30, -])); - -var msg34 = msg("dhcpd:32", part45); - -var part46 = match("MESSAGE#34:dhcpd:33", "nwparser.payload", "Reclaiming abandoned lease %{saddr}.", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Reclaiming abandoned lease"), -])); - -var msg35 = msg("dhcpd:33", part46); - -var part47 = match("MESSAGE#35:dhcpd:34/0", "nwparser.payload", "balanc%{p0}"); - -var part48 = match("MESSAGE#35:dhcpd:34/1_0", "nwparser.p0", "ed%{p0}"); - -var part49 = match("MESSAGE#35:dhcpd:34/1_1", "nwparser.p0", "ing%{p0}"); - -var select8 = linear_select([ - part48, - part49, -]); - -var part50 = match("MESSAGE#35:dhcpd:34/2", "nwparser.p0", "%{}pool %{fld1->} %{saddr}/%{sport->} total %{fld2->} free %{fld3->} backup %{fld4->} lts %{fld5->} max-%{fld6->} %{p0}"); - -var part51 = match("MESSAGE#35:dhcpd:34/3_0", "nwparser.p0", "(+/-)%{fld7}(%{info})"); - -var part52 = match("MESSAGE#35:dhcpd:34/3_1", "nwparser.p0", "(+/-)%{fld7}"); - -var part53 = match_copy("MESSAGE#35:dhcpd:34/3_2", "nwparser.p0", "fld7"); - -var select9 = linear_select([ - part51, - part52, - part53, -]); - -var all11 = all_match({ - processors: [ - part47, - select8, - part50, - select9, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg36 = msg("dhcpd:34", all11); - -var part54 = match("MESSAGE#36:dhcpd:35", "nwparser.payload", "Unable to add reverse map from %{shost->} to %{dhost}: REFUSED", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description"," Unable to add reverse map"), -])); - -var msg37 = msg("dhcpd:35", part54); - -var part55 = match("MESSAGE#37:dhcpd:36", "nwparser.payload", "Forward map from %{shost->} %{fld2}to %{daddr->} FAILED: %{fld1}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description"," Forward map failed"), -])); - -var msg38 = msg("dhcpd:36", part55); - -var part56 = match("MESSAGE#38:dhcpd:14/0", "nwparser.payload", "DHCPACK on %{saddr->} to %{dmacaddr->} %{p0}"); - -var all12 = all_match({ - processors: [ - part56, - dup67, - dup31, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup32, - ]), -}); - -var msg39 = msg("dhcpd:14", all12); - -var part57 = match("MESSAGE#39:dhcpd:24/0", "nwparser.payload", "DHCPOFFER on %{saddr->} to %{p0}"); - -var part58 = match("MESSAGE#39:dhcpd:24/1_0", "nwparser.p0", "\"%{dmacaddr}\" (%{dhost}) via %{p0}"); - -var part59 = match("MESSAGE#39:dhcpd:24/1_1", "nwparser.p0", "%{dmacaddr->} (%{dhost}) via %{p0}"); - -var part60 = match("MESSAGE#39:dhcpd:24/1_2", "nwparser.p0", "%{dmacaddr->} via %{p0}"); - -var select10 = linear_select([ - part58, - part59, - part60, -]); - -var all13 = all_match({ - processors: [ - part57, - select10, - dup31, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - setc("action","DHCPOFFER"), - ]), -}); - -var msg40 = msg("dhcpd:24", all13); - -var part61 = match("MESSAGE#40:dhcpd:17", "nwparser.payload", "DHCPNAK on %{saddr->} to %{dmacaddr->} via %{interface}", processor_chain([ - dup13, - dup7, - dup9, - setc("action","DHCPNAK"), -])); - -var msg41 = msg("dhcpd:17", part61); - -var part62 = match("MESSAGE#41:dhcpd:05/0", "nwparser.payload", "DHCPDISCOVER from %{smacaddr->} %{p0}"); - -var all14 = all_match({ - processors: [ - part62, - dup68, - dup28, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup24, - ]), -}); - -var msg42 = msg("dhcpd:05", all14); - -var part63 = match("MESSAGE#42:dhcpd:16", "nwparser.payload", "DHCPACK to %{daddr->} (%{dmacaddr}) via %{interface}", processor_chain([ - dup13, - dup7, - dup9, - dup32, -])); - -var msg43 = msg("dhcpd:16", part63); - -var part64 = match("MESSAGE#43:dhcpd:20", "nwparser.payload", "DHCPINFORM from %{saddr->} via %{interface}", processor_chain([ - dup13, - dup7, - dup9, - setc("action","DHCPINFORM"), -])); - -var msg44 = msg("dhcpd:20", part64); - -var part65 = match("MESSAGE#44:dhcpd:23", "nwparser.payload", "DHCPEXPIRE on %{saddr->} to %{dmacaddr}", processor_chain([ - dup13, - dup7, - dup9, - setc("action","DHCPEXPIRE"), -])); - -var msg45 = msg("dhcpd:23", part65); - -var part66 = match("MESSAGE#45:dhcpd:28", "nwparser.payload", "uid lease %{hostip->} for client %{smacaddr->} is duplicate on %{mask}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg46 = msg("dhcpd:28", part66); - -var part67 = match("MESSAGE#46:dhcpd:29", "nwparser.payload", "Attempt to add forward map \"%{shost}\" (and reverse map \"%{dhost}\") for %{saddr->} abandoned because of non-retryable failure: %{result}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg47 = msg("dhcpd:29", part67); - -var part68 = match("MESSAGE#191:dhcpd:39", "nwparser.payload", "NOT FREE/BACKUP lease%{hostip}End Time%{fld1->} Bind-State %{change_old->} Next-Bind-State %{change_new}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg48 = msg("dhcpd:39", part68); - -var part69 = match("MESSAGE#192:dhcpd:41", "nwparser.payload", "RELEASE on%{saddr}to%{dmacaddr}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg49 = msg("dhcpd:41", part69); - -var part70 = match("MESSAGE#193:dhcpd:42", "nwparser.payload", "r-l-e:%{hostip},%{result},%{fld1},%{macaddr},%{fld3},%{fld4},%{fld5},%{info}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg50 = msg("dhcpd:42", part70); - -var part71 = match("MESSAGE#194:dhcpd:43", "nwparser.payload", "failover peer%{fld1}:%{dclass_counter1}leases added to send queue from pool%{fld3->} %{hostip}/%{network_port}", processor_chain([ - dup13, - dup7, - dup9, - setc("dclass_counter1_string","count of leases"), - dup30, -])); - -var msg51 = msg("dhcpd:43", part71); - -var part72 = match("MESSAGE#195:dhcpd:44", "nwparser.payload", "DHCPDECLINE from%{macaddr}via%{hostip}: unknown network segment", processor_chain([ - dup13, - dup7, - dup9, - dup30, - dup29, -])); - -var msg52 = msg("dhcpd:44", part72); - -var part73 = match("MESSAGE#196:dhcpd:45", "nwparser.payload", "Reverse map update for%{hostip}abandoned because of non-retryable failure:%{disposition}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg53 = msg("dhcpd:45", part73); - -var part74 = match("MESSAGE#197:dhcpd:46", "nwparser.payload", "Reclaiming REQUESTed abandoned IP address%{saddr}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Reclaiming REQUESTed abandoned IP address"), -])); - -var msg54 = msg("dhcpd:46", part74); - -var part75 = match("MESSAGE#198:dhcpd:47/0", "nwparser.payload", "%{hostip}: removing client association (%{action})%{p0}"); - -var part76 = match("MESSAGE#198:dhcpd:47/1_0", "nwparser.p0", "uid=%{fld1}hw=%{p0}"); - -var part77 = match("MESSAGE#198:dhcpd:47/1_1", "nwparser.p0", "hw=%{p0}"); - -var select11 = linear_select([ - part76, - part77, -]); - -var part78 = match_copy("MESSAGE#198:dhcpd:47/2", "nwparser.p0", "macaddr"); - -var all15 = all_match({ - processors: [ - part75, - select11, - part78, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg55 = msg("dhcpd:47", all15); - -var part79 = match("MESSAGE#199:dhcpd:48", "nwparser.payload", "Lease conflict at %{hostip}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg56 = msg("dhcpd:48", part79); - -var part80 = match("MESSAGE#200:dhcpd:49", "nwparser.payload", "ICMP Echo reply while lease %{hostip->} valid.", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("protocol","ICMP"), -])); - -var msg57 = msg("dhcpd:49", part80); - -var part81 = match("MESSAGE#201:dhcpd:50", "nwparser.payload", "Lease state %{result}. Not abandoning %{hostip}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg58 = msg("dhcpd:50", part81); - -var part82 = match("MESSAGE#202:dhcpd:51/0_0", "nwparser.payload", "Addition%{p0}"); - -var part83 = match("MESSAGE#202:dhcpd:51/0_1", "nwparser.payload", "Removal%{p0}"); - -var select12 = linear_select([ - part82, - part83, -]); - -var part84 = match("MESSAGE#202:dhcpd:51/1", "nwparser.p0", "%{}of %{p0}"); - -var part85 = match("MESSAGE#202:dhcpd:51/2_0", "nwparser.p0", "forward%{p0}"); - -var part86 = match("MESSAGE#202:dhcpd:51/2_1", "nwparser.p0", "reverse%{p0}"); - -var select13 = linear_select([ - part85, - part86, -]); - -var part87 = match("MESSAGE#202:dhcpd:51/3", "nwparser.p0", "%{}map for %{hostip->} deferred"); - -var all16 = all_match({ - processors: [ - select12, - part84, - select13, - part87, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("disposition","deferred"), - ]), -}); - -var msg59 = msg("dhcpd:51", all16); - -var part88 = match("MESSAGE#203:dhcpd:52", "nwparser.payload", "Hostname%{change_old}replaced by%{hostname}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg60 = msg("dhcpd:52", part88); - -var msg61 = msg("dhcpd:37", dup69); - -var select14 = linear_select([ - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, - msg18, - msg19, - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, - msg26, - msg27, - msg28, - msg29, - msg30, - msg31, - msg32, - msg33, - msg34, - msg35, - msg36, - msg37, - msg38, - msg39, - msg40, - msg41, - msg42, - msg43, - msg44, - msg45, - msg46, - msg47, - msg48, - msg49, - msg50, - msg51, - msg52, - msg53, - msg54, - msg55, - msg56, - msg57, - msg58, - msg59, - msg60, - msg61, -]); - -var part89 = match("MESSAGE#47:ntpd:05", "nwparser.payload", "system event '%{event_type}' (%{fld1}) status '%{result}' (%{fld2})", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","system event status"), -])); - -var msg62 = msg("ntpd:05", part89); - -var part90 = match("MESSAGE#48:ntpd:04", "nwparser.payload", "frequency initialized %{result->} from %{filename}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","frequency initialized from file"), -])); - -var msg63 = msg("ntpd:04", part90); - -var part91 = match("MESSAGE#49:ntpd:03", "nwparser.payload", "ntpd exiting on signal %{dclass_counter1}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","ntpd exiting on signal"), -])); - -var msg64 = msg("ntpd:03", part91); - -var part92 = match("MESSAGE#50:ntpd", "nwparser.payload", "time slew %{result}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","time slew duraion"), -])); - -var msg65 = msg("ntpd", part92); - -var part93 = match("MESSAGE#51:ntpd:01", "nwparser.payload", "%{process}: signal %{dclass_counter1->} had flags %{result}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","signal had flags"), -])); - -var msg66 = msg("ntpd:01", part93); - -var msg67 = msg("ntpd:02", dup65); - -var select15 = linear_select([ - msg62, - msg63, - msg64, - msg65, - msg66, - msg67, -]); - -var part94 = match("MESSAGE#53:named:16/0", "nwparser.payload", "client %{saddr}#%{sport}:%{fld1}: update '%{zone}' %{p0}"); - -var all17 = all_match({ - processors: [ - part94, - dup70, - ], - on_success: processor_chain([ - dup16, - dup7, - dup9, - ]), -}); - -var msg68 = msg("named:16", all17); - -var part95 = match("MESSAGE#54:named/0", "nwparser.payload", "client %{saddr}#%{sport}: update '%{zone}/IN' %{p0}"); - -var all18 = all_match({ - processors: [ - part95, - dup70, - ], - on_success: processor_chain([ - dup16, - dup7, - dup9, - dup35, - ]), -}); - -var msg69 = msg("named", all18); - -var part96 = match("MESSAGE#55:named:12/0", "nwparser.payload", "client %{saddr}#%{sport}/key dhcp_updater_default: signer \"%{owner}\" %{p0}"); - -var all19 = all_match({ - processors: [ - part96, - dup70, - ], - on_success: processor_chain([ - dup16, - dup7, - dup9, - ]), -}); - -var msg70 = msg("named:12", all19); - -var part97 = match("MESSAGE#56:named:01/1_0", "nwparser.p0", "%{sport}/%{fld1}: signer \"%{p0}"); - -var part98 = match("MESSAGE#56:named:01/1_1", "nwparser.p0", "%{sport}: signer \"%{p0}"); - -var select16 = linear_select([ - part97, - part98, -]); - -var part99 = match("MESSAGE#56:named:01/2", "nwparser.p0", "%{owner}\" %{p0}"); - -var all20 = all_match({ - processors: [ - dup36, - select16, - part99, - dup70, - ], - on_success: processor_chain([ - dup16, - dup7, - dup9, - ]), -}); - -var msg71 = msg("named:01", all20); - -var part100 = match("MESSAGE#57:named:17/0", "nwparser.payload", "client %{saddr}#%{sport}/%{fld1}: updating zone '%{zone}/%{p0}"); - -var part101 = match("MESSAGE#57:named:17/2", "nwparser.p0", "': %{p0}"); - -var part102 = match("MESSAGE#57:named:17/3_0", "nwparser.p0", "%{fld2}: %{action->} at '%{p0}"); - -var select17 = linear_select([ - part102, - dup40, -]); - -var part103 = match("MESSAGE#57:named:17/4_1", "nwparser.p0", "%{hostname}' %{p0}"); - -var select18 = linear_select([ - dup41, - part103, -]); - -var all21 = all_match({ - processors: [ - part100, - dup71, - part101, - select17, - select18, - dup72, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup45, - dup35, - ]), -}); - -var msg72 = msg("named:17", all21); - -var part104 = match("MESSAGE#58:named:18/0", "nwparser.payload", "client %{saddr}#%{sport}:%{fld1}: updating zone '%{zone}': %{p0}"); - -var part105 = match("MESSAGE#58:named:18/1_0", "nwparser.p0", "adding %{p0}"); - -var part106 = match("MESSAGE#58:named:18/1_1", "nwparser.p0", "deleting%{p0}"); - -var select19 = linear_select([ - part105, - part106, -]); - -var part107 = match("MESSAGE#58:named:18/2", "nwparser.p0", "%{} %{info->} at '%{hostname}'"); - -var all22 = all_match({ - processors: [ - part104, - select19, - part107, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg73 = msg("named:18", all22); - -var part108 = match("MESSAGE#59:named:02/0", "nwparser.payload", "client %{saddr}#%{sport}: updating zone '%{zone}/%{p0}"); - -var part109 = match("MESSAGE#59:named:02/2", "nwparser.p0", "':%{p0}"); - -var part110 = match("MESSAGE#59:named:02/3_0", "nwparser.p0", "%{fld1}: %{action->} at '%{p0}"); - -var select20 = linear_select([ - part110, - dup40, -]); - -var part111 = match("MESSAGE#59:named:02/4_1", "nwparser.p0", "%{hostip}' %{p0}"); - -var select21 = linear_select([ - dup41, - part111, -]); - -var all23 = all_match({ - processors: [ - part108, - dup71, - part109, - select20, - select21, - dup72, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup45, - dup35, - ]), -}); - -var msg74 = msg("named:02", all23); - -var part112 = match("MESSAGE#60:named:19/0", "nwparser.payload", "client %{saddr}#%{sport}/%{fld1}: updating zone '%{zone}': update %{disposition}: %{p0}"); - -var part113 = match("MESSAGE#60:named:19/1_0", "nwparser.p0", "%{hostname}/%{dns_querytype}: %{p0}"); - -var part114 = match("MESSAGE#60:named:19/1_1", "nwparser.p0", "%{hostname}: %{p0}"); - -var select22 = linear_select([ - part113, - part114, -]); - -var all24 = all_match({ - processors: [ - part112, - select22, - dup46, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup47, - ]), -}); - -var msg75 = msg("named:19", all24); - -var part115 = match("MESSAGE#61:named:03", "nwparser.payload", "client %{saddr}#%{sport}: updating zone '%{zone}': update %{disposition}: %{hostname}: %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg76 = msg("named:03", part115); - -var part116 = match("MESSAGE#62:named:11", "nwparser.payload", "zone %{zone}: notify from %{saddr}#%{sport}: zone is up to date", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","notify zone is up to date"), -])); - -var msg77 = msg("named:11", part116); - -var part117 = match("MESSAGE#63:named:13", "nwparser.payload", "zone %{zone}: notify from %{saddr}#%{sport}: %{action}, %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg78 = msg("named:13", part117); - -var part118 = match("MESSAGE#64:named:14", "nwparser.payload", "zone %{zone}: refresh: retry limit for master %{saddr}#%{sport->} exceeded (%{action})", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg79 = msg("named:14", part118); - -var part119 = match("MESSAGE#65:named:15", "nwparser.payload", "zone %{zone}: refresh: failure trying master %{saddr}#%{sport->} (source ::#0): %{action}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg80 = msg("named:15", part119); - -var part120 = match("MESSAGE#66:named:25/0", "nwparser.payload", "DNS format error from %{saddr}#%{sport->} resolving %{domain}/%{dns_querytype->} for client %{daddr}#%{dport}: %{p0}"); - -var part121 = match("MESSAGE#66:named:25/1_0", "nwparser.p0", "%{error}--%{result}"); - -var select23 = linear_select([ - part121, - dup48, -]); - -var all25 = all_match({ - processors: [ - part120, - select23, - ], - on_success: processor_chain([ - dup49, - dup50, - dup15, - dup7, - dup9, - setc("event_description","DNS format error"), - dup30, - ]), -}); - -var msg81 = msg("named:25", all25); - -var part122 = match("MESSAGE#67:named:63/2", "nwparser.p0", "#%{saddr->} %{sport->} (#%{fld5}): query: %{domain->} %{fld4->} (%{daddr})"); - -var all26 = all_match({ - processors: [ - dup51, - dup73, - part122, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg82 = msg("named:63", all26); - -var part123 = match("MESSAGE#68:named:72/0", "nwparser.payload", "client %{saddr}#%{sport->} (%{fld1}): %{p0}"); - -var part124 = match("MESSAGE#68:named:72/1_0", "nwparser.p0", "view%{fld3}: query:%{p0}"); - -var part125 = match("MESSAGE#68:named:72/1_1", "nwparser.p0", "query:%{p0}"); - -var select24 = linear_select([ - part124, - part125, -]); - -var part126 = match("MESSAGE#68:named:72/2", "nwparser.p0", "%{} %{domain->} %{fld2->} %{dns_querytype->} %{context->} (%{daddr})"); - -var all27 = all_match({ - processors: [ - part123, - select24, - part126, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg83 = msg("named:72", all27); - -var part127 = match("MESSAGE#69:named:28", "nwparser.payload", "%{action->} (%{saddr}#%{sport}) %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg84 = msg("named:28", part127); - -var part128 = match("MESSAGE#70:named:71/0", "nwparser.payload", "transfer of '%{zone}' from %{saddr}#%{sport}: failed %{p0}"); - -var part129 = match("MESSAGE#70:named:71/1_0", "nwparser.p0", "to connect: %{p0}"); - -var part130 = match("MESSAGE#70:named:71/1_1", "nwparser.p0", "while receiving responses: %{p0}"); - -var select25 = linear_select([ - part129, - part130, -]); - -var all28 = all_match({ - processors: [ - part128, - select25, - dup48, - ], - on_success: processor_chain([ - dup49, - dup7, - dup9, - dup30, - setc("event_description","failed"), - ]), -}); - -var msg85 = msg("named:71", all28); - -var part131 = match("MESSAGE#71:named:70/0", "nwparser.payload", "transfer of '%{zone}' from %{saddr}#%{sport}: %{p0}"); - -var part132 = match("MESSAGE#71:named:70/1_0", "nwparser.p0", "connected using %{daddr}#%{dport}"); - -var select26 = linear_select([ - part132, - dup46, -]); - -var all29 = all_match({ - processors: [ - part131, - select26, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg86 = msg("named:70", all29); - -var part133 = match("MESSAGE#72:named:40/0", "nwparser.payload", "%{fld1->} client %{saddr}#%{sport}: %{p0}"); - -var part134 = match("MESSAGE#72:named:40/1_0", "nwparser.p0", "view %{fld2}: %{protocol}: query: %{p0}"); - -var part135 = match("MESSAGE#72:named:40/1_1", "nwparser.p0", "%{protocol}: query: %{p0}"); - -var select27 = linear_select([ - part134, - part135, -]); - -var part136 = match("MESSAGE#72:named:40/2", "nwparser.p0", "%{domain->} %{fld3->} %{dns_querytype->} response:%{result->} %{p0}"); - -var part137 = match("MESSAGE#72:named:40/3_0", "nwparser.p0", "%{context->} %{dns.resptext}"); - -var part138 = match_copy("MESSAGE#72:named:40/3_1", "nwparser.p0", "context"); - -var select28 = linear_select([ - part137, - part138, -]); - -var all30 = all_match({ - processors: [ - part133, - select27, - part136, - select28, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg87 = msg("named:40", all30); - -var part139 = match("MESSAGE#73:named:05", "nwparser.payload", "zone '%{zone}' %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg88 = msg("named:05", part139); - -var part140 = match("MESSAGE#74:named:10/1_0", "nwparser.p0", "%{sport->} %{fld22}/%{fld21}:%{p0}"); - -var part141 = match("MESSAGE#74:named:10/1_1", "nwparser.p0", "%{sport}/%{fld21}:%{p0}"); - -var part142 = match("MESSAGE#74:named:10/1_2", "nwparser.p0", "%{sport->} (%{fld21}): %{p0}"); - -var select29 = linear_select([ - part140, - part141, - part142, - dup54, -]); - -var part143 = match("MESSAGE#74:named:10/2", "nwparser.p0", "%{}query: %{domain->} %{info->} (%{daddr})"); - -var all31 = all_match({ - processors: [ - dup36, - select29, - part143, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","dns query"), - ]), -}); - -var msg89 = msg("named:10", all31); - -var part144 = match("MESSAGE#75:named:29", "nwparser.payload", "client %{saddr}#%{sport}: %{fld1}: received notify for zone '%{zone}'", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","received notify for zone"), -])); - -var msg90 = msg("named:29", part144); - -var part145 = match("MESSAGE#76:named:08", "nwparser.payload", "client %{saddr}#%{sport}: received notify for zone '%{zone}'", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","client received notify for zone"), -])); - -var msg91 = msg("named:08", part145); - -var part146 = match("MESSAGE#77:named:09", "nwparser.payload", "client %{saddr}#%{sport}: update forwarding '%{zone}' denied", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","client update forwarding for zone denied"), -])); - -var msg92 = msg("named:09", part146); - -var part147 = match("MESSAGE#78:named:76/0", "nwparser.payload", "zone %{zone}: ZRQ appl%{p0}"); - -var part148 = match("MESSAGE#78:named:76/1_0", "nwparser.p0", "ied%{p0}"); - -var part149 = match("MESSAGE#78:named:76/1_1", "nwparser.p0", "ying%{p0}"); - -var select30 = linear_select([ - part148, - part149, -]); - -var part150 = match("MESSAGE#78:named:76/2", "nwparser.p0", "%{}transaction %{p0}"); - -var part151 = match("MESSAGE#78:named:76/3_0", "nwparser.p0", "%{operation_id->} with SOA serial %{serial_number}. Zone version is now %{version}."); - -var part152 = match("MESSAGE#78:named:76/3_1", "nwparser.p0", "%{fld1}."); - -var select31 = linear_select([ - part151, - part152, -]); - -var all32 = all_match({ - processors: [ - part147, - select30, - part150, - select31, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg93 = msg("named:76", all32); - -var part153 = match("MESSAGE#79:named:75", "nwparser.payload", "zone %{zone}: ZRQ applied %{action->} for '%{fld1}': %{fld2->} %{fld3->} %{dns_querytype->} %{info}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg94 = msg("named:75", part153); - -var part154 = match("MESSAGE#80:named:06/0", "nwparser.payload", "zone%{p0}"); - -var part155 = match("MESSAGE#80:named:06/1_0", "nwparser.p0", "_%{fld1}: %{p0}"); - -var part156 = match("MESSAGE#80:named:06/1_1", "nwparser.p0", " %{zone}: %{p0}"); - -var select32 = linear_select([ - part155, - part156, -]); - -var all33 = all_match({ - processors: [ - part154, - select32, - dup46, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg95 = msg("named:06", all33); - -var part157 = match("MESSAGE#81:named:20", "nwparser.payload", "REFUSED unexpected RCODE resolving '%{saddr}.in-addr.arpa/%{event_description}/IN': %{daddr}#%{dport}", processor_chain([ - dup13, - dup50, - dup15, - dup7, - dup9, - dup55, - dup30, - dup56, -])); - -var msg96 = msg("named:20", part157); - -var part158 = match("MESSAGE#82:named:49/0", "nwparser.payload", "REFUSED unexpected RCODE resolving '%{zone}/%{dns_querytype}/IN': %{p0}"); - -var part159 = match("MESSAGE#82:named:49/1_0", "nwparser.p0", "%{daddr}#%{dport}"); - -var part160 = match_copy("MESSAGE#82:named:49/1_1", "nwparser.p0", "fld1"); - -var select33 = linear_select([ - part159, - part160, -]); - -var all34 = all_match({ - processors: [ - part158, - select33, - ], - on_success: processor_chain([ - dup57, - dup50, - dup15, - dup7, - dup9, - dup55, - dup30, - dup35, - ]), -}); - -var msg97 = msg("named:49", all34); - -var part161 = match("MESSAGE#83:named:24/1_0", "nwparser.p0", "%{fld2}: zone transfer%{p0}"); - -var part162 = match("MESSAGE#83:named:24/1_1", "nwparser.p0", "zone transfer%{p0}"); - -var select34 = linear_select([ - part161, - part162, -]); - -var part163 = match("MESSAGE#83:named:24/2", "nwparser.p0", "%{}'%{zone}' %{action}"); - -var all35 = all_match({ - processors: [ - dup58, - select34, - part163, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg98 = msg("named:24", all35); - -var part164 = match("MESSAGE#84:named:26/1_0", "nwparser.p0", "%{fld2}: no more recursive clients %{p0}"); - -var part165 = match("MESSAGE#84:named:26/1_1", "nwparser.p0", "no more recursive clients%{p0}"); - -var select35 = linear_select([ - part164, - part165, -]); - -var part166 = match("MESSAGE#84:named:26/2", "nwparser.p0", "%{}(%{fld3}) %{info}"); - -var all36 = all_match({ - processors: [ - dup58, - select35, - part166, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg99 = msg("named:26", all36); - -var part167 = match("MESSAGE#85:named:27/1_0", "nwparser.p0", "%{fld2->} : %{fld3->} response from Internet for %{p0}"); - -var part168 = match("MESSAGE#85:named:27/1_1", "nwparser.p0", "%{fld3->} response from Internet for %{p0}"); - -var select36 = linear_select([ - part167, - part168, -]); - -var part169 = match_copy("MESSAGE#85:named:27/2", "nwparser.p0", "fld4"); - -var all37 = all_match({ - processors: [ - dup58, - select36, - part169, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg100 = msg("named:27", all37); - -var part170 = match("MESSAGE#86:named:38/2", "nwparser.p0", "#%{saddr->} %{p0}"); - -var part171 = match("MESSAGE#86:named:38/3_0", "nwparser.p0", "%{sport}#%{fld5->} (%{fld6}):%{p0}"); - -var part172 = match("MESSAGE#86:named:38/3_1", "nwparser.p0", "%{sport->} (%{fld5}):%{p0}"); - -var select37 = linear_select([ - part171, - part172, - dup54, -]); - -var part173 = match("MESSAGE#86:named:38/4", "nwparser.p0", "%{}query%{p0}"); - -var part174 = match("MESSAGE#86:named:38/5_0", "nwparser.p0", " (%{fld7}) '%{domain}/%{fld4}' %{result}"); - -var part175 = match("MESSAGE#86:named:38/5_1", "nwparser.p0", ": %{domain->} %{fld4->} (%{daddr})"); - -var select38 = linear_select([ - part174, - part175, -]); - -var all38 = all_match({ - processors: [ - dup51, - dup73, - part170, - select37, - part173, - select38, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg101 = msg("named:38", all38); - -var part176 = match("MESSAGE#87:named:39", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3}: %{severity}: error (%{result}) resolving '%{saddr}.in-addr.arpa/%{event_description}/IN': %{daddr}#%{dport}", processor_chain([ - dup13, - dup50, - dup15, - dup7, - dup9, - dup55, -])); - -var msg102 = msg("named:39", part176); - -var part177 = match("MESSAGE#88:named:46", "nwparser.payload", "%{event_description}: Authorization denied for the operation (%{fld4}): %{fld5->} (data=\"%{hostip}\", source=\"%{hostname}\")", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg103 = msg("named:46", part177); - -var part178 = match("MESSAGE#89:named:64", "nwparser.payload", "client %{saddr}#%{sport}/%{fld1}: updating zone '%{zone}': deleting %{info->} at %{hostname->} %{dns_querytype}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg104 = msg("named:64", part178); - -var part179 = match("MESSAGE#90:named:45", "nwparser.payload", "client %{saddr}#%{sport}: updating zone '%{zone}': deleting %{info->} at %{hostname->} %{dns_querytype}", processor_chain([ - dup13, - dup7, - dup9, - dup47, -])); - -var msg105 = msg("named:45", part179); - -var part180 = match("MESSAGE#91:named:44/0", "nwparser.payload", "client %{saddr}#%{sport}/key dhcp_updater_default: updating zone '%{p0}"); - -var part181 = match("MESSAGE#91:named:44/1_0", "nwparser.p0", "%{domain}/IN'%{p0}"); - -var part182 = match("MESSAGE#91:named:44/1_1", "nwparser.p0", "%{domain}'%{p0}"); - -var select39 = linear_select([ - part181, - part182, -]); - -var part183 = match("MESSAGE#91:named:44/2", "nwparser.p0", ": %{p0}"); - -var part184 = match("MESSAGE#91:named:44/3_0", "nwparser.p0", "deleting an RR at %{daddr}.in-addr.arpa"); - -var part185 = match("MESSAGE#91:named:44/3_1", "nwparser.p0", "deleting an RR at %{daddr}.%{fld6}"); - -var part186 = match_copy("MESSAGE#91:named:44/3_2", "nwparser.p0", "fld5"); - -var select40 = linear_select([ - part184, - part185, - part186, -]); - -var all39 = all_match({ - processors: [ - part180, - select39, - part183, - select40, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg106 = msg("named:44", all39); - -var part187 = match("MESSAGE#92:named:43", "nwparser.payload", "client %{saddr}#%{sport->} (%{domain}): query (%{fld3}) '%{fld4}/%{dns_querytype}/IN' %{result}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg107 = msg("named:43", part187); - -var part188 = match("MESSAGE#93:named:42", "nwparser.payload", "%{result->} resolving '%{saddr}.in-addr.arpa/%{event_description}/IN': %{daddr}#%{dport}", processor_chain([ - dup13, - dup7, - dup9, - dup56, -])); - -var msg108 = msg("named:42", part188); - -var part189 = match("MESSAGE#94:named:41", "nwparser.payload", "%{fld1}: unable to find root NS '%{domain}'", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg109 = msg("named:41", part189); - -var part190 = match("MESSAGE#95:named:47", "nwparser.payload", "client %{saddr}#%{sport}: updating zone '%{zone}': update %{disposition}: %{event_description}", processor_chain([ - setc("eventcategory","1502000000"), - dup7, - dup9, -])); - -var msg110 = msg("named:47", part190); - -var part191 = match("MESSAGE#96:named:48", "nwparser.payload", "client %{saddr}#%{sport->} (%{hostname}): query '%{zone}' %{result}", processor_chain([ - dup57, - dup7, - dup9, - dup30, -])); - -var msg111 = msg("named:48", part191); - -var part192 = match("MESSAGE#97:named:62", "nwparser.payload", "client %{saddr}#%{sport}/%{fld1->} (%{hostname}): transfer of '%{zone}': %{info}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg112 = msg("named:62", part192); - -var part193 = match("MESSAGE#98:named:53", "nwparser.payload", "client %{saddr}#%{sport->} (%{hostname}): transfer of '%{zone}': %{info}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg113 = msg("named:53", part193); - -var part194 = match("MESSAGE#99:named:77", "nwparser.payload", "client %{saddr}#%{sport->} (%{domain}): query failed (%{error}) for %{fld1}/IN/%{dns_querytype->} at %{filename}:%{fld2}", processor_chain([ - dup49, - dup7, - dup9, - setc("event_description"," query failed"), -])); - -var msg114 = msg("named:77", part194); - -var part195 = match("MESSAGE#100:named:52", "nwparser.payload", "client %{saddr}#%{sport->} (%{hostname}): %{info}", processor_chain([ - dup59, - dup7, - dup9, - dup47, -])); - -var msg115 = msg("named:52", part195); - -var part196 = match("MESSAGE#101:named:50", "nwparser.payload", "%{fld1}: %{domain}/%{dns_querytype->} (%{saddr}) %{info}", processor_chain([ - dup59, - dup7, - dup9, -])); - -var msg116 = msg("named:50", part196); - -var part197 = match("MESSAGE#102:named:51", "nwparser.payload", "%{fld1}: %{fld2}: REFUSED", processor_chain([ - dup57, - dup7, - dup9, - dup50, - dup15, - dup55, -])); - -var msg117 = msg("named:51", part197); - -var part198 = match("MESSAGE#103:named:54", "nwparser.payload", "%{hostip}#%{network_port}: GSS-TSIG authentication failed:%{event_description}", processor_chain([ - dup59, - dup7, - dup9, - dup3, - dup15, - dup30, -])); - -var msg118 = msg("named:54", part198); - -var part199 = match("MESSAGE#104:named:55/0", "nwparser.payload", "success resolving '%{domain}/%{dns_querytype}' (in '%{fld1}'?) %{p0}"); - -var part200 = match("MESSAGE#104:named:55/1_0", "nwparser.p0", "after disabling EDNS%{}"); - -var part201 = match_copy("MESSAGE#104:named:55/1_1", "nwparser.p0", "fld2"); - -var select41 = linear_select([ - part200, - part201, -]); - -var all40 = all_match({ - processors: [ - part199, - select41, - ], - on_success: processor_chain([ - dup59, - dup7, - dup9, - dup6, - dup30, - dup60, - ]), -}); - -var msg119 = msg("named:55", all40); - -var part202 = match("MESSAGE#105:named:56", "nwparser.payload", "SERVFAIL unexpected RCODE resolving '%{domain}/%{dns_querytype}/IN':%{hostip}#%{network_port}", processor_chain([ - dup59, - dup7, - dup9, - dup50, - dup15, - dup30, - dup60, -])); - -var msg120 = msg("named:56", part202); - -var part203 = match("MESSAGE#106:named:57", "nwparser.payload", "FORMERR resolving '%{domain}/%{dns_querytype}/IN':%{hostip}#%{network_port}", processor_chain([ - dup59, - dup7, - dup9, - setc("ec_outcome","Error"), - dup30, - dup60, -])); - -var msg121 = msg("named:57", part203); - -var part204 = match("MESSAGE#107:named:04/0", "nwparser.payload", "%{action->} on %{p0}"); - -var part205 = match("MESSAGE#107:named:04/1_0", "nwparser.p0", "IPv4 interface %{sinterface}, %{saddr}#%{p0}"); - -var part206 = match("MESSAGE#107:named:04/1_1", "nwparser.p0", "%{saddr}#%{p0}"); - -var select42 = linear_select([ - part205, - part206, -]); - -var part207 = match_copy("MESSAGE#107:named:04/2", "nwparser.p0", "sport"); - -var all41 = all_match({ - processors: [ - part204, - select42, - part207, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg122 = msg("named:04", all41); - -var part208 = match("MESSAGE#108:named:58", "nwparser.payload", "lame server resolving '%{domain}' (in '%{fld2}'?):%{hostip}#%{network_port}", processor_chain([ - dup59, - dup7, - dup9, - dup30, - dup60, -])); - -var msg123 = msg("named:58", part208); - -var part209 = match("MESSAGE#109:named:59", "nwparser.payload", "exceeded max queries resolving '%{domain}/%{dns_querytype}'", processor_chain([ - dup13, - dup7, - dup9, - dup30, - dup60, -])); - -var msg124 = msg("named:59", part209); - -var part210 = match("MESSAGE#110:named:60", "nwparser.payload", "skipping nameserver '%{hostname}' because it is a CNAME, while resolving '%{domain}/%{dns_querytype}'", processor_chain([ - dup13, - dup7, - dup9, - dup30, - dup60, - setc("event_description","skipping nameserver because it is a CNAME"), -])); - -var msg125 = msg("named:60", part210); - -var part211 = match("MESSAGE#111:named:61", "nwparser.payload", "loading configuration from '%{filename}'", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg126 = msg("named:61", part211); - -var part212 = match("MESSAGE#112:named:73", "nwparser.payload", "fetch: %{zone}/%{dns_querytype}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - dup35, -])); - -var msg127 = msg("named:73", part212); - -var part213 = match("MESSAGE#113:named:74", "nwparser.payload", "decrement_reference: delete from rbt: %{fld1->} %{domain}", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg128 = msg("named:74", part213); - -var part214 = match("MESSAGE#114:named:07/0_0", "nwparser.payload", "client %{saddr}#%{sport->} (%{hostname}): view %{fld2}: query: %{web_query}"); - -var part215 = match_copy("MESSAGE#114:named:07/0_1", "nwparser.payload", "event_description"); - -var select43 = linear_select([ - part214, - part215, -]); - -var all42 = all_match({ - processors: [ - select43, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - dup30, - ]), -}); - -var msg129 = msg("named:07", all42); - -var select44 = linear_select([ - msg68, - msg69, - msg70, - msg71, - msg72, - msg73, - msg74, - msg75, - msg76, - msg77, - msg78, - msg79, - msg80, - msg81, - msg82, - msg83, - msg84, - msg85, - msg86, - msg87, - msg88, - msg89, - msg90, - msg91, - msg92, - msg93, - msg94, - msg95, - msg96, - msg97, - msg98, - msg99, - msg100, - msg101, - msg102, - msg103, - msg104, - msg105, - msg106, - msg107, - msg108, - msg109, - msg110, - msg111, - msg112, - msg113, - msg114, - msg115, - msg116, - msg117, - msg118, - msg119, - msg120, - msg121, - msg122, - msg123, - msg124, - msg125, - msg126, - msg127, - msg128, - msg129, -]); - -var part216 = match("MESSAGE#115:pidof:01", "nwparser.payload", "can't read sid from %{agent}", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","can't read sid"), -])); - -var msg130 = msg("pidof:01", part216); - -var part217 = match("MESSAGE#116:pidof", "nwparser.payload", "can't get program name from %{agent}", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg131 = msg("pidof", part217); - -var select45 = linear_select([ - msg130, - msg131, -]); - -var part218 = match("MESSAGE#117:validate_dhcpd:01", "nwparser.payload", "Configured local-address not available as source address for DNS updates. %{result}", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","Configured local-address not available as source address for DNS updates"), -])); - -var msg132 = msg("validate_dhcpd:01", part218); - -var msg133 = msg("validate_dhcpd", dup74); - -var select46 = linear_select([ - msg132, - msg133, -]); - -var msg134 = msg("syslog-ng", dup65); - -var part219 = match("MESSAGE#120:kernel", "nwparser.payload", "Linux version %{version->} (%{from}) (%{fld1}) %{fld2}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg135 = msg("kernel", part219); - -var msg136 = msg("kernel:01", dup65); - -var select47 = linear_select([ - msg135, - msg136, -]); - -var msg137 = msg("radiusd", dup65); - -var part220 = match("MESSAGE#123:rc", "nwparser.payload", "executing %{agent->} start", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg138 = msg("rc", part220); - -var msg139 = msg("rc3", dup65); - -var part221 = match("MESSAGE#125:rcsysinit", "nwparser.payload", "fsck from %{version}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg140 = msg("rcsysinit", part221); - -var msg141 = msg("rcsysinit:01", dup65); - -var select48 = linear_select([ - msg140, - msg141, -]); - -var part222 = match("MESSAGE#126:watchdog", "nwparser.payload", "opened %{filename}, with timeout = %{duration->} secs", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg142 = msg("watchdog", part222); - -var part223 = match("MESSAGE#127:watchdog:01", "nwparser.payload", "%{action}, pid = %{process_id}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg143 = msg("watchdog:01", part223); - -var part224 = match("MESSAGE#128:watchdog:02", "nwparser.payload", "received %{fld1}, cancelling softdog and exiting...", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg144 = msg("watchdog:02", part224); - -var part225 = match("MESSAGE#129:watchdog:03", "nwparser.payload", "%{filename->} could not be opened, errno = %{resultcode}", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg145 = msg("watchdog:03", part225); - -var msg146 = msg("watchdog:04", dup65); - -var select49 = linear_select([ - msg142, - msg143, - msg144, - msg145, - msg146, -]); - -var msg147 = msg("init", dup65); - -var part226 = match("MESSAGE#131:logger", "nwparser.payload", "%{action}: %{saddr}/%{mask->} to %{interface}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg148 = msg("logger", part226); - -var msg149 = msg("logger:01", dup65); - -var select50 = linear_select([ - msg148, - msg149, -]); - -var part227 = match("MESSAGE#133:openvpn-member", "nwparser.payload", "read %{protocol->} [%{info}] %{event_description->} (code=%{resultcode})", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg150 = msg("openvpn-member", part227); - -var msg151 = msg("openvpn-member:01", dup75); - -var part228 = match("MESSAGE#135:openvpn-member:02", "nwparser.payload", "Options error: %{event_description}", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg152 = msg("openvpn-member:02", part228); - -var part229 = match("MESSAGE#136:openvpn-member:03", "nwparser.payload", "OpenVPN %{version->} [%{protocol}] [%{fld2}] %{info}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg153 = msg("openvpn-member:03", part229); - -var msg154 = msg("openvpn-member:04", dup76); - -var msg155 = msg("openvpn-member:05", dup65); - -var select51 = linear_select([ - msg150, - msg151, - msg152, - msg153, - msg154, - msg155, -]); - -var part230 = match("MESSAGE#139:sshd", "nwparser.payload", "Server listening on %{hostip->} port %{network_port}.", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg156 = msg("sshd", part230); - -var part231 = match("MESSAGE#140:sshd:01/0", "nwparser.payload", "Accepted password for %{p0}"); - -var part232 = match("MESSAGE#140:sshd:01/1_0", "nwparser.p0", "root from %{p0}"); - -var part233 = match("MESSAGE#140:sshd:01/1_1", "nwparser.p0", "%{username->} from %{p0}"); - -var select52 = linear_select([ - part232, - part233, -]); - -var part234 = match("MESSAGE#140:sshd:01/2", "nwparser.p0", "%{saddr->} port %{sport->} %{protocol}"); - -var all43 = all_match({ - processors: [ - part231, - select52, - part234, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg157 = msg("sshd:01", all43); - -var part235 = match("MESSAGE#141:sshd:02", "nwparser.payload", "Connection closed by %{hostip}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg158 = msg("sshd:02", part235); - -var part236 = match("MESSAGE#142:sshd:03", "nwparser.payload", "%{severity}: Bind to port %{network_port->} on %{hostip->} %{result}: %{event_description}", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg159 = msg("sshd:03", part236); - -var part237 = match("MESSAGE#143:sshd:04", "nwparser.payload", "%{severity}: Cannot bind any address.", processor_chain([ - setc("eventcategory","1601000000"), - dup7, - dup9, -])); - -var msg160 = msg("sshd:04", part237); - -var part238 = match("MESSAGE#144:sshd:05", "nwparser.payload", "%{action}: logout() %{result}", processor_chain([ - dup2, - dup3, - dup5, - dup15, - dup7, - dup9, - setc("event_description","logout"), -])); - -var msg161 = msg("sshd:05", part238); - -var part239 = match("MESSAGE#145:sshd:06", "nwparser.payload", "Did not receive identification string from %{saddr}", processor_chain([ - dup16, - dup7, - setc("result","no identification string"), - setc("event_description","Did not receive identification string from peer"), -])); - -var msg162 = msg("sshd:06", part239); - -var part240 = match("MESSAGE#146:sshd:07", "nwparser.payload", "Sleep 60 seconds for slowing down ssh login%{}", processor_chain([ - dup13, - dup7, - setc("result","slowing down ssh login"), - setc("event_description","Sleep 60 seconds"), -])); - -var msg163 = msg("sshd:07", part240); - -var part241 = match("MESSAGE#147:sshd:08", "nwparser.payload", "%{authmethod->} authentication succeeded for user %{username}", processor_chain([ - setc("eventcategory","1302010300"), - dup7, - setc("event_description","authentication succeeded"), - dup9, - dup61, -])); - -var msg164 = msg("sshd:08", part241); - -var part242 = match("MESSAGE#148:sshd:09", "nwparser.payload", "User group = %{group}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","User group"), - dup61, -])); - -var msg165 = msg("sshd:09", part242); - -var part243 = match("MESSAGE#149:sshd:10", "nwparser.payload", "Bad protocol version identification '%{protocol_detail}' from %{saddr}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Bad protocol version identification"), - dup61, -])); - -var msg166 = msg("sshd:10", part243); - -var select53 = linear_select([ - msg156, - msg157, - msg158, - msg159, - msg160, - msg161, - msg162, - msg163, - msg164, - msg165, - msg166, -]); - -var part244 = match("MESSAGE#150:openvpn-master", "nwparser.payload", "OpenVPN %{version->} [%{protocol}] [%{fld1}] %{info}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg167 = msg("openvpn-master", part244); - -var part245 = match("MESSAGE#151:openvpn-master:01", "nwparser.payload", "read %{protocol->} [%{info}]: %{event_description->} (code=%{resultcode})", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg168 = msg("openvpn-master:01", part245); - -var msg169 = msg("openvpn-master:02", dup75); - -var part246 = match("MESSAGE#153:openvpn-master:03", "nwparser.payload", "%{saddr}:%{sport->} TLS Error: TLS handshake failed", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg170 = msg("openvpn-master:03", part246); - -var part247 = match("MESSAGE#154:openvpn-master:04", "nwparser.payload", "%{fld1}/%{saddr}:%{sport->} [%{fld2}] %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg171 = msg("openvpn-master:04", part247); - -var part248 = match("MESSAGE#155:openvpn-master:05", "nwparser.payload", "%{saddr}:%{sport->} [%{fld1}] %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg172 = msg("openvpn-master:05", part248); - -var msg173 = msg("openvpn-master:06", dup76); - -var msg174 = msg("openvpn-master:07", dup65); - -var select54 = linear_select([ - msg167, - msg168, - msg169, - msg170, - msg171, - msg172, - msg173, - msg174, -]); - -var part249 = match("MESSAGE#158:INFOBLOX-Grid", "nwparser.payload", "Grid member at %{saddr->} %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg175 = msg("INFOBLOX-Grid", part249); - -var part250 = match("MESSAGE#159:INFOBLOX-Grid:02/0_0", "nwparser.payload", "Started%{p0}"); - -var part251 = match("MESSAGE#159:INFOBLOX-Grid:02/0_1", "nwparser.payload", "Completed%{p0}"); - -var select55 = linear_select([ - part250, - part251, -]); - -var part252 = match("MESSAGE#159:INFOBLOX-Grid:02/1", "nwparser.p0", "%{}distribution on member with IP address %{saddr}"); - -var all44 = all_match({ - processors: [ - select55, - part252, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg176 = msg("INFOBLOX-Grid:02", all44); - -var part253 = match("MESSAGE#160:INFOBLOX-Grid:03", "nwparser.payload", "Upgrade Complete%{}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Upgrade Complete"), -])); - -var msg177 = msg("INFOBLOX-Grid:03", part253); - -var part254 = match("MESSAGE#161:INFOBLOX-Grid:04", "nwparser.payload", "Upgrade to %{fld1}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg178 = msg("INFOBLOX-Grid:04", part254); - -var select56 = linear_select([ - msg175, - msg176, - msg177, - msg178, -]); - -var part255 = match("MESSAGE#162:db_jnld", "nwparser.payload", "Grid member at %{saddr->} is online.", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg179 = msg("db_jnld", part255); - -var part256 = match("MESSAGE#219:db_jnld:01/0", "nwparser.payload", "Resolved conflict for replicated delete of %{p0}"); - -var part257 = match("MESSAGE#219:db_jnld:01/1_0", "nwparser.p0", "PTR %{p0}"); - -var part258 = match("MESSAGE#219:db_jnld:01/1_1", "nwparser.p0", "TXT %{p0}"); - -var part259 = match("MESSAGE#219:db_jnld:01/1_2", "nwparser.p0", "A %{p0}"); - -var part260 = match("MESSAGE#219:db_jnld:01/1_3", "nwparser.p0", "CNAME %{p0}"); - -var part261 = match("MESSAGE#219:db_jnld:01/1_4", "nwparser.p0", "SRV %{p0}"); - -var select57 = linear_select([ - part257, - part258, - part259, - part260, - part261, -]); - -var part262 = match("MESSAGE#219:db_jnld:01/2", "nwparser.p0", "\"%{fld1}\" in zone \"%{zone}\""); - -var all45 = all_match({ - processors: [ - part256, - select57, - part262, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg180 = msg("db_jnld:01", all45); - -var select58 = linear_select([ - msg179, - msg180, -]); - -var part263 = match("MESSAGE#163:sSMTP/0", "nwparser.payload", "Sent mail for %{to->} (%{fld1}) %{p0}"); - -var part264 = match("MESSAGE#163:sSMTP/1_0", "nwparser.p0", "uid=%{uid->} username=%{username->} outbytes=%{sbytes}"); - -var part265 = match_copy("MESSAGE#163:sSMTP/1_1", "nwparser.p0", "space"); - -var select59 = linear_select([ - part264, - part265, -]); - -var all46 = all_match({ - processors: [ - part263, - select59, - ], - on_success: processor_chain([ - dup13, - dup7, - dup9, - ]), -}); - -var msg181 = msg("sSMTP", all46); - -var part266 = match("MESSAGE#164:sSMTP:02", "nwparser.payload", "Cannot open %{hostname}:%{network_port}", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg182 = msg("sSMTP:02", part266); - -var part267 = match("MESSAGE#165:sSMTP:03", "nwparser.payload", "Unable to locate %{hostname}.", processor_chain([ - dup16, - dup7, - dup9, -])); - -var msg183 = msg("sSMTP:03", part267); - -var msg184 = msg("sSMTP:04", dup74); - -var select60 = linear_select([ - msg181, - msg182, - msg183, - msg184, -]); - -var part268 = match("MESSAGE#167:scheduled_backups", "nwparser.payload", "Backup to %{device->} was successful - Backup file %{filename}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg185 = msg("scheduled_backups", part268); - -var part269 = match("MESSAGE#168:scheduled_ftp_backups", "nwparser.payload", "Scheduled backup to the %{device->} was successful - Backup file %{filename}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Scheduled backup to the FTP server was successful"), -])); - -var msg186 = msg("scheduled_ftp_backups", part269); - -var part270 = match("MESSAGE#169:failed_scheduled_ftp_backups", "nwparser.payload", "Scheduled backup to the %{device->} failed - %{result}.", processor_chain([ - dup16, - dup7, - dup9, - setc("event_description","Scheduled backup to the FTP server failed"), -])); - -var msg187 = msg("failed_scheduled_ftp_backups", part270); - -var select61 = linear_select([ - msg186, - msg187, -]); - -var part271 = match("MESSAGE#170:scheduled_scp_backups", "nwparser.payload", "Scheduled backup to the %{device->} was successful - Backup file %{filename}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Scheduled backup to the SCP server was successful"), -])); - -var msg188 = msg("scheduled_scp_backups", part271); - -var part272 = match("MESSAGE#171:python", "nwparser.payload", "%{action->} even though zone '%{zone}' in view '%{fld1}' is locked.", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg189 = msg("python", part272); - -var part273 = match("MESSAGE#172:python:01", "nwparser.payload", "%{action->} (algorithm=%{fld1}, key tag=%{fld2}, key size=%{fld3}): '%{hostname}' in view '%{fld4}'.", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg190 = msg("python:01", part273); - -var part274 = match("MESSAGE#173:python:02", "nwparser.payload", "%{action}: '%{hostname}' in view '%{fld1}'.", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg191 = msg("python:02", part274); - -var part275 = match("MESSAGE#174:python:03", "nwparser.payload", "%{action}: FQDN='%{domain}', ADDRESS='%{saddr}', View='%{fld1}'", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg192 = msg("python:03", part275); - -var part276 = match("MESSAGE#175:python:04", "nwparser.payload", "%{action}: FQDN='%{domain}', View='%{fld1}'", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg193 = msg("python:04", part276); - -var part277 = match("MESSAGE#176:python:05", "nwparser.payload", "%{fld1}: %{fld2}.%{fld3->} [%{username}]: Populated %{zone->} %{hostname->} DnsView=%{fld4}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg194 = msg("python:05", part277); - -var msg195 = msg("python:06", dup65); - -var select62 = linear_select([ - msg189, - msg190, - msg191, - msg192, - msg193, - msg194, - msg195, -]); - -var part278 = match("MESSAGE#178:monitor", "nwparser.payload", "Type: %{protocol}, State: %{event_state}, Event: %{event_description}.", processor_chain([ - dup12, - dup7, - dup9, -])); - -var msg196 = msg("monitor", part278); - -var part279 = match("MESSAGE#179:snmptrapd", "nwparser.payload", "NET-SNMP version %{version->} %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg197 = msg("snmptrapd", part279); - -var part280 = match("MESSAGE#180:snmptrapd:01", "nwparser.payload", "lock in %{fld1->} sleeps more than %{duration->} milliseconds in %{fld2}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg198 = msg("snmptrapd:01", part280); - -var msg199 = msg("snmptrapd:02", dup65); - -var select63 = linear_select([ - msg197, - msg198, - msg199, -]); - -var part281 = match("MESSAGE#182:ntpdate", "nwparser.payload", "adjust time server %{saddr->} offset %{duration->} sec", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg200 = msg("ntpdate", part281); - -var msg201 = msg("ntpdate:01", dup74); - -var select64 = linear_select([ - msg200, - msg201, -]); - -var msg202 = msg("phonehome", dup65); - -var part282 = match("MESSAGE#185:purge_scheduled_tasks", "nwparser.payload", "Scheduled tasks have been purged%{}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg203 = msg("purge_scheduled_tasks", part282); - -var part283 = match("MESSAGE#186:serial_console:04", "nwparser.payload", "%{fld20->} %{fld21}.%{fld22->} [%{domain}]: Login_Denied - - to=%{terminal->} apparently_via=%{info->} ip=%{saddr->} error=%{result}", processor_chain([ - dup14, - dup3, - dup4, - dup11, - dup15, - dup7, - date_time({ - dest: "event_time", - args: ["fld20","fld21"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dN,dc(":"),dU,dc(":"),dO], - ], - }), - dup9, - setc("event_description","Login Denied"), -])); - -var msg204 = msg("serial_console:04", part283); - -var part284 = match("MESSAGE#187:serial_console:03", "nwparser.payload", "No authentication methods succeeded for user %{username}", processor_chain([ - dup14, - dup3, - dup4, - dup11, - dup15, - dup7, - dup9, - setc("event_description","No authentication methods succeeded for user"), -])); - -var msg205 = msg("serial_console:03", part284); - -var part285 = match("MESSAGE#188:serial_console", "nwparser.payload", "%{fld1->} %{fld2}.%{fld3->} [%{username}]: Login_Allowed - - to=%{terminal->} apparently_via=%{info->} auth=%{authmethod->} group=%{group}", processor_chain([ - dup10, - dup3, - dup4, - dup11, - dup6, - dup7, - dup8, - dup9, -])); - -var msg206 = msg("serial_console", part285); - -var part286 = match("MESSAGE#189:serial_console:01", "nwparser.payload", "RADIUS authentication succeeded for user %{username}", processor_chain([ - setc("eventcategory","1302010100"), - dup3, - dup4, - dup11, - dup6, - dup7, - dup9, - setc("event_description","RADIUS authentication succeeded for user"), -])); - -var msg207 = msg("serial_console:01", part286); - -var part287 = match("MESSAGE#190:serial_console:02", "nwparser.payload", "User group = %{group}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","User group identification"), -])); - -var msg208 = msg("serial_console:02", part287); - -var part288 = match("MESSAGE#205:serial_console:05", "nwparser.payload", "%{fld1->} [%{username}]: rebooted the system", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","system reboot"), -])); - -var msg209 = msg("serial_console:05", part288); - -var part289 = match("MESSAGE#214:serial_console:06", "nwparser.payload", "Local authentication succeeded for user %{username}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Local authentication succeeded for user"), -])); - -var msg210 = msg("serial_console:06", part289); - -var select65 = linear_select([ - msg204, - msg205, - msg206, - msg207, - msg208, - msg209, - msg210, -]); - -var msg211 = msg("rc6", dup65); - -var msg212 = msg("acpid", dup65); - -var msg213 = msg("diskcheck", dup65); - -var part290 = match("MESSAGE#210:debug_mount", "nwparser.payload", "mount %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg214 = msg("debug_mount", part290); - -var msg215 = msg("smart_check_io", dup65); - -var msg216 = msg("speedstep_control", dup65); - -var part291 = match("MESSAGE#215:controld", "nwparser.payload", "Distribution Started%{}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Distribution Started"), -])); - -var msg217 = msg("controld", part291); - -var part292 = match("MESSAGE#216:controld:02", "nwparser.payload", "Distribution Complete%{}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","Distribution Complete"), -])); - -var msg218 = msg("controld:02", part292); - -var select66 = linear_select([ - msg217, - msg218, -]); - -var part293 = match("MESSAGE#217:shutdown", "nwparser.payload", "shutting down for system reboot%{}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","shutting down for system reboot"), -])); - -var msg219 = msg("shutdown", part293); - -var part294 = match("MESSAGE#218:ntpd_initres", "nwparser.payload", "ntpd exiting on signal 15%{}", processor_chain([ - dup13, - dup7, - dup9, - setc("event_description","ntpd exiting"), -])); - -var msg220 = msg("ntpd_initres", part294); - -var part295 = match("MESSAGE#220:rsyncd", "nwparser.payload", "name lookup failed for %{saddr}: %{info}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg221 = msg("rsyncd", part295); - -var part296 = match("MESSAGE#221:rsyncd:01", "nwparser.payload", "connect from %{shost->} (%{saddr})", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg222 = msg("rsyncd:01", part296); - -var part297 = match("MESSAGE#222:rsyncd:02", "nwparser.payload", "rsync on %{filename->} from %{shost->} (%{saddr})", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg223 = msg("rsyncd:02", part297); - -var part298 = match("MESSAGE#223:rsyncd:03", "nwparser.payload", "sent %{sbytes->} bytes received %{rbytes->} bytes total size %{fld1}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var msg224 = msg("rsyncd:03", part298); - -var part299 = match("MESSAGE#224:rsyncd:04", "nwparser.payload", "building file list%{}", processor_chain([ - dup13, - dup7, - setc("event_description","building file list"), - dup9, -])); - -var msg225 = msg("rsyncd:04", part299); - -var select67 = linear_select([ - msg221, - msg222, - msg223, - msg224, - msg225, -]); - -var msg226 = msg("syslog", dup77); - -var msg227 = msg("restarting", dup77); - -var part300 = match_copy("MESSAGE#227:ipmievd", "nwparser.payload", "fld1", processor_chain([ - dup13, - dup7, - dup9, - dup62, -])); - -var msg228 = msg("ipmievd", part300); - -var part301 = match("MESSAGE#228:netauto_discovery", "nwparser.payload", "%{agent}: Processing path%{fld1}, vnid [%{fld2}]", processor_chain([ - dup59, - dup7, - dup9, - dup61, -])); - -var msg229 = msg("netauto_discovery", part301); - -var part302 = match("MESSAGE#229:netauto_discovery:01", "nwparser.payload", "%{agent}:%{fld1}(%{fld2})%{hostip}/%{fld3}:%{product}ver%{version->} device does not answer to lldpRem OID requests, skipping LLDP Neighbors poll", processor_chain([ - dup59, - dup7, - dup9, - dup61, - setc("event_description","device does not answer to lldpRem OID requests, skipping LLDP Neighbors poll"), -])); - -var msg230 = msg("netauto_discovery:01", part302); - -var part303 = match("MESSAGE#230:netauto_discovery:02", "nwparser.payload", "%{agent}:%{space}Static address already set with IP:%{hostip}, Processing%{fld1}", processor_chain([ - dup59, - dup7, - dup9, - dup61, -])); - -var msg231 = msg("netauto_discovery:02", part303); - -var part304 = match("MESSAGE#231:netauto_discovery:03", "nwparser.payload", "%{agent}:%{fld1}(%{fld2})%{hostip}/%{fld3}: SNMP Credentials: Failed to authenticate", processor_chain([ - dup63, - dup7, - dup9, - dup61, - dup15, -])); - -var msg232 = msg("netauto_discovery:03", part304); - -var select68 = linear_select([ - msg229, - msg230, - msg231, - msg232, -]); - -var part305 = match("MESSAGE#232:netauto_core:01", "nwparser.payload", "%{agent}: Attempting CLI on device%{device}with interface not in table, ip%{hostip}", processor_chain([ - dup59, - dup7, - dup9, - dup61, -])); - -var msg233 = msg("netauto_core:01", part305); - -var part306 = match("MESSAGE#233:netauto_core", "nwparser.payload", "netautoctl:%{event_description}", processor_chain([ - dup59, - dup7, - dup9, - dup61, -])); - -var msg234 = msg("netauto_core", part306); - -var select69 = linear_select([ - msg233, - msg234, -]); - -var part307 = match_copy("MESSAGE#234:captured_dns_uploader", "nwparser.payload", "event_description", processor_chain([ - dup49, - dup7, - dup9, - dup61, - dup15, -])); - -var msg235 = msg("captured_dns_uploader", part307); - -var part308 = match("MESSAGE#235:DIS", "nwparser.payload", "%{fld1}:%{fld2}: Device%{device}/%{hostip}login failure%{result}", processor_chain([ - dup63, - dup7, - dup9, - dup61, - dup11, - dup15, -])); - -var msg236 = msg("DIS", part308); - -var part309 = match("MESSAGE#236:DIS:01", "nwparser.payload", "%{fld2}: %{fld3}: Attempting discover-now for %{hostip->} on %{fld4}, using session ID", processor_chain([ - dup59, - dup7, - dup9, - dup61, -])); - -var msg237 = msg("DIS:01", part309); - -var select70 = linear_select([ - msg236, - msg237, -]); - -var part310 = match_copy("MESSAGE#237:ErrorMsg", "nwparser.payload", "result", processor_chain([ - dup64, - dup7, - dup9, - dup61, -])); - -var msg238 = msg("ErrorMsg", part310); - -var part311 = match("MESSAGE#238:tacacs_acct", "nwparser.payload", "%{fld1}: Server %{daddr->} port %{dport}: %{event_description}", processor_chain([ - dup13, - dup7, - dup9, - dup61, -])); - -var msg239 = msg("tacacs_acct", part311); - -var part312 = match("MESSAGE#239:tacacs_acct:01", "nwparser.payload", "%{fld1}: Accounting request failed. %{fld2}Server is %{daddr}, port is %{dport}.", processor_chain([ - dup64, - dup7, - dup9, - dup61, - setc("event_description","Accounting request failed."), -])); - -var msg240 = msg("tacacs_acct:01", part312); - -var part313 = match("MESSAGE#240:tacacs_acct:02", "nwparser.payload", "%{fld1}: Read %{fld2->} bytes from server %{daddr->} port %{dport}, expecting %{fld3}", processor_chain([ - dup13, - dup7, - dup9, - dup61, -])); - -var msg241 = msg("tacacs_acct:02", part313); - -var select71 = linear_select([ - msg239, - msg240, - msg241, -]); - -var part314 = match("MESSAGE#241:dhcpdv6", "nwparser.payload", "Relay-forward message from %{saddr_v6->} port %{sport}, link address %{fld1}, peer address %{daddr_v6}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Relay-forward message"), -])); - -var msg242 = msg("dhcpdv6", part314); - -var part315 = match("MESSAGE#242:dhcpdv6:01", "nwparser.payload", "Encapsulated Solicit message from %{saddr_v6->} port %{sport->} from client DUID %{fld1}, transaction ID %{id}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Encapsulated Solicit message"), -])); - -var msg243 = msg("dhcpdv6:01", part315); - -var part316 = match("MESSAGE#243:dhcpdv6:02", "nwparser.payload", "Client %{fld1}, IP '%{fld2}': No addresses available for this interface", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","IP unknown - No addresses available for this interface"), -])); - -var msg244 = msg("dhcpdv6:02", part316); - -var part317 = match("MESSAGE#244:dhcpdv6:03", "nwparser.payload", "Encapsulating Advertise message to send to %{saddr_v6->} port %{sport}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Encapsulating Advertise message"), -])); - -var msg245 = msg("dhcpdv6:03", part317); - -var part318 = match("MESSAGE#245:dhcpdv6:04", "nwparser.payload", "Sending Relay-reply message to %{saddr_v6->} port %{sport}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Sending Relay-reply message"), -])); - -var msg246 = msg("dhcpdv6:04", part318); - -var part319 = match("MESSAGE#246:dhcpdv6:05", "nwparser.payload", "Encapsulated Information-request message from %{saddr_v6->} port %{sport}, transaction ID %{id}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Encapsulated Information-request message"), -])); - -var msg247 = msg("dhcpdv6:05", part319); - -var part320 = match("MESSAGE#247:dhcpdv6:06", "nwparser.payload", "Encapsulating Reply message to send to %{saddr_v6->} port %{sport}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Encapsulating Reply message"), -])); - -var msg248 = msg("dhcpdv6:06", part320); - -var part321 = match("MESSAGE#248:dhcpdv6:07", "nwparser.payload", "Encapsulated Renew message from %{saddr_v6->} port %{sport->} from client DUID %{fld1}, transaction ID %{id}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","Encapsulated Renew message"), -])); - -var msg249 = msg("dhcpdv6:07", part321); - -var part322 = match("MESSAGE#249:dhcpdv6:08", "nwparser.payload", "Reply NA: address %{saddr_v6->} to client with duid %{fld1->} iaid = %{fld2->} static", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var msg250 = msg("dhcpdv6:08", part322); - -var msg251 = msg("dhcpdv6:09", dup69); - -var select72 = linear_select([ - msg242, - msg243, - msg244, - msg245, - msg246, - msg247, - msg248, - msg249, - msg250, - msg251, -]); - -var msg252 = msg("debug", dup69); - -var part323 = match("MESSAGE#252:cloud_api", "nwparser.payload", "proxying request to %{hostname}(%{hostip}) %{web_method->} %{url->} %{protocol->} %{info}", processor_chain([ - dup13, - dup7, - dup9, - dup30, - setc("event_description","proxying request"), -])); - -var msg253 = msg("cloud_api", part323); - -var chain1 = processor_chain([ - select3, - msgid_select({ - "DIS": select70, - "ErrorMsg": msg238, - "INFOBLOX-Grid": select56, - "acpid": msg212, - "captured_dns_uploader": msg235, - "cloud_api": msg253, - "controld": select66, - "db_jnld": select58, - "debug": msg252, - "debug_mount": msg214, - "dhcpd": select14, - "dhcpdv6": select72, - "diskcheck": msg213, - "httpd": select4, - "in.tftpd": select5, - "init": msg147, - "ipmievd": msg228, - "kernel": select47, - "logger": select50, - "monitor": msg196, - "named": select44, - "netauto_core": select69, - "netauto_discovery": select68, - "ntpd": select15, - "ntpd_initres": msg220, - "ntpdate": select64, - "openvpn-master": select54, - "openvpn-member": select51, - "phonehome": msg202, - "pidof": select45, - "purge_scheduled_tasks": msg203, - "python": select62, - "radiusd": msg137, - "rc": msg138, - "rc3": msg139, - "rc6": msg211, - "rcsysinit": select48, - "restarting": msg227, - "rsyncd": select67, - "sSMTP": select60, - "scheduled_backups": msg185, - "scheduled_ftp_backups": select61, - "scheduled_scp_backups": msg188, - "serial_console": select65, - "shutdown": msg219, - "smart_check_io": msg215, - "snmptrapd": select63, - "speedstep_control": msg216, - "sshd": select53, - "syslog": msg226, - "syslog-ng": msg134, - "tacacs_acct": select71, - "validate_dhcpd": select46, - "watchdog": select49, - }), -]); - -var hdr6 = match("HEADER#1:006/0", "message", "%{month->} %{day->} %{time->} %{hhostname->} %{p0}"); - -var part324 = match("MESSAGE#19:dhcpd:18/0", "nwparser.payload", "%{} %{p0}"); - -var part325 = match("MESSAGE#19:dhcpd:18/1_0", "nwparser.p0", "Added %{p0}"); - -var part326 = match("MESSAGE#19:dhcpd:18/1_1", "nwparser.p0", "added %{p0}"); - -var part327 = match("MESSAGE#25:dhcpd:03/1_0", "nwparser.p0", "(%{dhost}) via %{p0}"); - -var part328 = match("MESSAGE#25:dhcpd:03/1_1", "nwparser.p0", "via %{p0}"); - -var part329 = match("MESSAGE#28:dhcpd:09/0", "nwparser.payload", "DHCPREQUEST for %{saddr->} from %{smacaddr->} %{p0}"); - -var part330 = match("MESSAGE#28:dhcpd:09/1_0", "nwparser.p0", "(%{shost}) via %{p0}"); - -var part331 = match("MESSAGE#31:dhcpd:11/2", "nwparser.p0", "%{interface}"); - -var part332 = match("MESSAGE#38:dhcpd:14/2", "nwparser.p0", "%{interface->} relay %{fld1->} lease-duration %{duration}"); - -var part333 = match("MESSAGE#53:named:16/1_0", "nwparser.p0", "approved%{}"); - -var part334 = match("MESSAGE#53:named:16/1_1", "nwparser.p0", "denied%{}"); - -var part335 = match("MESSAGE#56:named:01/0", "nwparser.payload", "client %{saddr}#%{p0}"); - -var part336 = match("MESSAGE#57:named:17/1_0", "nwparser.p0", "IN%{p0}"); - -var part337 = match("MESSAGE#57:named:17/1_1", "nwparser.p0", "CH%{p0}"); - -var part338 = match("MESSAGE#57:named:17/1_2", "nwparser.p0", "HS%{p0}"); - -var part339 = match("MESSAGE#57:named:17/3_1", "nwparser.p0", "%{action->} at '%{p0}"); - -var part340 = match("MESSAGE#57:named:17/4_0", "nwparser.p0", "%{hostip}.in-addr.arpa' %{p0}"); - -var part341 = match("MESSAGE#57:named:17/5_0", "nwparser.p0", "%{dns_querytype->} \"%{fld3}\""); - -var part342 = match("MESSAGE#57:named:17/5_1", "nwparser.p0", "%{dns_querytype->} %{hostip}"); - -var part343 = match_copy("MESSAGE#57:named:17/5_2", "nwparser.p0", "dns_querytype"); - -var part344 = match_copy("MESSAGE#60:named:19/2", "nwparser.p0", "event_description"); - -var part345 = match_copy("MESSAGE#66:named:25/1_1", "nwparser.p0", "result"); - -var part346 = match("MESSAGE#67:named:63/0", "nwparser.payload", "%{fld1->} %{fld2->} %{fld3}: %{severity}: client %{p0}"); - -var part347 = match("MESSAGE#67:named:63/1_0", "nwparser.p0", "%{fld9->} %{p0}"); - -var part348 = match("MESSAGE#67:named:63/1_1", "nwparser.p0", "%{p0}"); - -var part349 = match("MESSAGE#74:named:10/1_3", "nwparser.p0", "%{sport}:%{p0}"); - -var part350 = match("MESSAGE#83:named:24/0", "nwparser.payload", "client %{saddr}#%{sport->} (%{domain}): %{p0}"); - -var part351 = match_copy("MESSAGE#7:httpd:06", "nwparser.payload", "event_description", processor_chain([ - dup13, - dup7, - dup9, -])); - -var select73 = linear_select([ - dup18, - dup19, -]); - -var select74 = linear_select([ - dup21, - dup22, -]); - -var select75 = linear_select([ - dup26, - dup22, -]); - -var part352 = match_copy("MESSAGE#204:dhcpd:37", "nwparser.payload", "event_description", processor_chain([ - dup13, - dup7, - dup9, - dup30, -])); - -var select76 = linear_select([ - dup33, - dup34, -]); - -var select77 = linear_select([ - dup37, - dup38, - dup39, -]); - -var select78 = linear_select([ - dup42, - dup43, - dup44, -]); - -var select79 = linear_select([ - dup52, - dup53, -]); - -var part353 = match_copy("MESSAGE#118:validate_dhcpd", "nwparser.payload", "event_description", processor_chain([ - dup16, - dup7, - dup9, -])); - -var part354 = match("MESSAGE#134:openvpn-member:01", "nwparser.payload", "%{action->} : %{event_description->} (code=%{resultcode})", processor_chain([ - dup16, - dup7, - dup9, -])); - -var part355 = match("MESSAGE#137:openvpn-member:04", "nwparser.payload", "%{severity}: %{event_description}", processor_chain([ - dup13, - dup7, - dup9, -])); - -var part356 = match_copy("MESSAGE#225:syslog", "nwparser.payload", "event_description", processor_chain([ - dup13, - dup7, - dup9, - dup62, -])); diff --git a/x-pack/filebeat/module/infoblox/nios/ingest/pipeline.yml b/x-pack/filebeat/module/infoblox/nios/ingest/pipeline.yml deleted file mode 100644 index 6c5490c8ce3..00000000000 --- a/x-pack/filebeat/module/infoblox/nios/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Infoblox NIOS - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/infoblox/nios/manifest.yml b/x-pack/filebeat/module/infoblox/nios/manifest.yml deleted file mode 100644 index 4f6b364c6e7..00000000000 --- a/x-pack/filebeat/module/infoblox/nios/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["infoblox.nios", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9512 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/infoblox/nios/test/generated.log b/x-pack/filebeat/module/infoblox/nios/test/generated.log deleted file mode 100644 index 642df296f5e..00000000000 --- a/x-pack/filebeat/module/infoblox/nios/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -January 29 06:09:59 doeiu3942.localdomain -:rc executing eporr start -February 12 13:12:33 tia7019.www.invalid :diskcheck quis -February 26 20:15:08 dolo1720.api.example 10.250.162.122 logger: com -March 12 03:17:42 ratio1111.localdomain -:diskcheck atio -March 26 10:20:16 tconsec5932.mail.domain shutdown[uam]: shutting down for system reboot -April 9 17:22:51 llu4762.mail.localdomain snmptrapd[scivel]: NET-SNMP version 1.5695 aperi -April 24 00:25:25 estqui6557.www.localhost -:syslog-ng equuntu -May 08 07:27:59 mcolabor1656.www5.corp netauto_discovery[giatq]: quid:fug(uatDuis)10.68.114.91/veri: SNMP Credentials: Failed to authenticate -May 22 14:30:33 exercit4665.internal.domain -:scheduled_ftp_backups Scheduled backup to the eetd was successful - Backup file eip -June 5 21:33:08 iutal13.api.localdomain python[eacomm]: Utenimad: nibusBon.ehend [ueipsaqu]: Populated uidolore niamqu222.localdomain DnsView=tevelit -June 20 04:35:42 boree6686.www5.host ntpd[iinea]: ipit -July 4 11:38:16 itlabori2344.mail.invalid -:openvpn-member OpenVPN 1.4105 [icmp] [aper] essequ -July 18 18:40:50 tessec3539.home nsect: rc6 ntutl -August 2 01:43:25 siuta2896.www.localhost -:ntpd ntpd exiting on signal 2946 -August 16 08:45:59 strude910.internal.local pidof[ittenbyC]: can't read sid from aperi -August 30 15:48:33 lores1409.www.home :sSMTP etc -September 13 22:51:07 nimadmin1493.www5.example rc3[lpa]: entsu -September 28 05:53:42 mqui4683.www.localhost tasuntex: kernel sunt -October 12 12:56:16 incidi2966.www.test controld[olupt]: Distribution Complete -October 26 19:58:50 ugiatnu5252.internal.localdomain -:syslog erc -November 10 03:01:24 aperia4409.www5.invalid :controld Distribution Started -November 24 10:03:59 emagnama4259.example 10.206.136.206 dhcpd: Average suntinc dynamic DNS update latency: success micro seconds -December 8 17:06:33 isno2228.home nnu: smart_check_io dolo -December 23 00:09:07 amvolup7700.www5.corp 10.19.194.101 rsyncd: rsync on orinrepr from conse2991.internal.lan (10.116.104.101) -January 6 07:11:41 tat7551.internal.local rc6[itinvo]: mdolore -January 20 14:14:16 siarchi2289.mail.lan debug_mount[olupta]: mount mipsumd -February 3 21:16:50 remi2114.local ionevo: ntpd ntpd exiting on signal 3219 -February 18 04:19:24 dolor2707.api.localhost httpd[commod]: 2017-2-18 4:19:24.adol [doloremi]: Login_Denied - - to=luptasn ip=10.153.111.103 info=itquiin -March 4 11:21:59 que651.www5.host init[etconse]: tincu -Mar 18 18:24:33 asun1250.api.localdomain DIS[oluptate]: onseq:serunt: Deviceaquaeabi/10.171.157.74login failurefailure -April 2 01:27:07 ento4488.www5.localhost :rc6 eriamea -April 16 08:29:41 pisciv7108.lan 10.140.136.44 named: client 10.31.14.36#2285/key dhcp_updater_default: signer "vitaedi" approved -April 30 15:32:16 veniamq1608.www.localdomain colab: diskcheck ommodico -May 14 22:34:50 tin183.api.corp netauto_discovery[sperna]: eabilloi:estia(tper)10.163.5.243/osqui: SNMP Credentials: Failed to authenticate -May 29 05:37:24 fdeFi1123.api.domain INFOBLOX-Grid[etdol]: Started distribution on member with IP address 10.177.36.38 -June 12 12:39:58 aevit37.www5.test ati: kernel Linux version 1.6668 (gel) (lorsitam) mpo -June 26 19:42:33 aliquam1364.api.corp -:syslog eratv -July 11 02:45:07 uir1374.mail.domain -:smart_check_io quiratio -July 25 09:47:41 nse2256.www.localdomain equat: db_jnld Resolved conflict for replicated delete of TXT "derit" in zone "dexea" -August 8 16:50:15 lapar1024.www5.local intocc: sSMTP Unable to locate liqu2936.api.localdomain. -August 22 23:52:50 tDuisaut3296.www.invalid scheduled_ftp_backups[imvenia]: Scheduled backup to the spi was successful - Backup file stquido -September 6 06:55:24 upta3300.www.home 10.233.48.103 diskcheck: leumiur -September 20 13:57:58 vita2681.www5.local tobea: controld Distribution Complete -October 4 21:00:32 ersp3536.www5.lan 10.93.90.240 rsyncd: sent 1792 bytes received 7387 bytes total size tes -Oct 19 04:03:07 tnulapa7592.www.local DIS[eriti]: litessec: itas: Attempting discover-now for 10.251.106.205 on mporin, using session ID -November 2 11:05:41 roid6604.www.test -:syslog Nemoenim -November 16 18:08:15 nihil657.domain validate_dhcpd[rsitv]: iciade -December 1 01:10:49 ven660.api.lan amnih: watchdog cancel, pid = 3981 -December 15 08:13:24 atatn7364.internal.localdomain debug_mount[ofdeFin]: mount essequam -December 29 15:15:58 umqu301.internal.home init[inesci]: isnisi -January 12 22:18:32 riamea1540.www.host -:ntpd_initres ntpd exiting on signal 15 -January 27 05:21:06 siut5663.local piscinge: rcsysinit fsck from 1.271 -February 10 12:23:41 cinge7339.api.corp -:diskcheck vitaedi -February 24 19:26:15 dolore7072.www5.localhost ect: logger modocons -March 11 02:28:49 odoconse228.mail.localdomain -:syslog-ng veli -March 25 09:31:24 labo267.internal.localhost httpd[etdo]: 2018-3-25 9:31:24.par [lorin]: Login_Denied - - to=pitl ip=10.204.128.215 info=ama -Apr 8 16:33:58 roidents6540.internal.corp -:debug tametcon -April 22 23:36:32 miurerep1152.internal.domain pidof[utlab]: can't read sid from emUteni -May 07 06:39:06 inimve2352.lan :captured_dns_uploader mco -May 21 13:41:41 amcorp1275.www5.host netauto_core[liqua]: netautoctl:olo -Jun 04 20:44:15 fdeF593.internal.lan DIS[niamq]: lapariat: remagn: Attempting discover-now for 10.238.140.186 on tiaec, using session ID -June 19 03:46:49 upt4986.mail.corp ntpdate[idunt]: luptat -July 3 10:49:23 lillum7809.mail.local taedicta: logger ritt -July 17 17:51:58 tetur2694.mail.local ipi: openvpn-member OpenVPN 1.7727 [ipv6-icmp] [uaeab] itinv -August 1 00:54:32 utaliqu6138.mail.localhost nvolupt: pidof can't read sid from oremi -August 15 07:57:06 atcupi2332.mail.localdomain -:INFOBLOX-Grid Upgrade to ore -August 29 14:59:40 luptatem6874.mail.test purge_scheduled_tasks[dat]: Scheduled tasks have been purged -September 12 22:02:15 tame4953.mail.localhost prehen: restarting ntutlabo -September 27 05:04:49 sequa1715.www5.domain sshd[eirure]: Accepted password for root from 10.210.113.252 port 4184 udp -October 11 12:07:23 tconsec5315.internal.example :kernel Linux version 1.341 (fugi) (labo) nostrud -October 25 19:09:57 cupi1867.www5.test :rcsysinit orroq -November 9 02:12:32 rcit2043.api.home 10.107.45.175 smart_check_io: ssecil -November 23 09:15:06 mes4801.internal.test 10.243.121.97 python: cancel: FQDN='illu4875.api.host', View='tatevel' -December 7 16:17:40 its7867.internal.invalid 10.44.115.94 debug_mount: mount isn -Dec 21 23:20:14 equ4808.www.localhost DIS[siuta]: urmagn:dquia: Devicetemporin/10.46.166.75login failuresuccess -Jan 05 06:22:49 idi7668.www5.test rum: captured_dns_uploader eataevi -January 19 13:25:23 iqu4614.www5.example 10.60.211.199 init: modocon -February 2 20:27:57 agnaaliq1829.mail.test :ntpd_initres ntpd exiting on signal 15 -February 17 03:30:32 col3570.www.invalid tinvolup: sSMTP Sent mail for tsed (inv) uid=rroq username=rcit outbytes=2807 -March 3 10:33:06 mipsamvo4282.api.home reetdo: init oreveri -March 17 17:35:40 Except6889.www.corp -:rc3 umetMal -Apr 1 00:38:14 umq1309.api.test uae: debug mve -April 15 07:40:49 tatem4180.www.home 10.102.166.19 python: deny: FQDN='eritatis6343.api.local', View='mquisn' -April 29 14:43:23 quir7168.api.localdomain labore: syslog uela -May 13 21:45:57 iuntNequ7202.api.domain -:controld Distribution Complete -May 28 04:48:31 veniamq1236.invalid emo: radiusd itq -June 11 11:51:06 nderiti409.api.domain -:syslog Cic -June 25 18:53:40 tatem6156.www.local :dhcpd received shutdown -/-/ success -July 10 01:56:14 uamnihil6127.api.domain 10.29.119.245 python: accept: 'olli3116.internal.example' in view 'rsp'. -Jul 24 08:58:48 roquisqu1205.api.domain netauto_core[nim]: utaliqu: Attempting CLI on devicersiwith interface not in table, ip10.118.155.14 -August 7 16:01:23 suntex5169.www.example phonehome[esci]: uov -August 21 23:03:57 fici5161.www5.example olup: debug_mount mount aco -September 5 06:06:31 orsi7617.www5.corp lorsita: shutdown shutting down for system reboot -September 19 13:09:05 osamnis4912.mail.host npr: radiusd etconsec -Oct 03 20:11:40 urExcept6809.www5.corp captured_dns_uploader[atcupida]: tessequa -Oct 18 03:14:14 icab3519.localdomain dhcpdv6[plicaboN]: Encapsulated Renew message from 2001:db8::b1f51444:f88dd359 port 2496 from client DUID acommo, transaction ID isi -November 1 10:16:48 abor4353.www5.host ame: python tesseq -November 15 17:19:22 olorem290.api.lan sshd[culpaqui]: deny: logout() unknown -November 30 00:21:57 ventore3612.www.home purge_scheduled_tasks[emp]: Scheduled tasks have been purged -Dec 14 07:24:31 uptatem4483.localhost tacacs_acct[inrepr]: mol: Server 10.111.52.69 port 6073: asperna diff --git a/x-pack/filebeat/module/infoblox/nios/test/generated.log-expected.json b/x-pack/filebeat/module/infoblox/nios/test/generated.log-expected.json deleted file mode 100644 index 9079fbdddd3..00000000000 --- a/x-pack/filebeat/module/infoblox/nios/test/generated.log-expected.json +++ /dev/null @@ -1,2722 +0,0 @@ -[ - { - "event.code": "rc", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "January 29 06:09:59 doeiu3942.localdomain -:rc executing eporr start", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 0, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "doeiu3942.localdomain" - ], - "rsa.internal.messageid": "rc", - "rsa.misc.client": "eporr", - "rsa.misc.event_source": "doeiu3942.localdomain", - "rsa.time.day": "29", - "rsa.time.month": "January", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "diskcheck", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 12 13:12:33 tia7019.www.invalid :diskcheck quis", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 69, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tia7019.www.invalid" - ], - "rsa.internal.event_desc": "quis", - "rsa.internal.messageid": "diskcheck", - "rsa.misc.event_source": "tia7019.www.invalid", - "rsa.time.day": "12", - "rsa.time.month": "February", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "logger", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 26 20:15:08 dolo1720.api.example 10.250.162.122 logger: com", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 126, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "dolo1720.api.example" - ], - "rsa.internal.event_desc": "com", - "rsa.internal.messageid": "logger", - "rsa.misc.event_source": "dolo1720.api.example", - "rsa.time.day": "26", - "rsa.time.month": "February", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "diskcheck", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "March 12 03:17:42 ratio1111.localdomain -:diskcheck atio", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 195, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "ratio1111.localdomain" - ], - "rsa.internal.event_desc": "atio", - "rsa.internal.messageid": "diskcheck", - "rsa.misc.event_source": "ratio1111.localdomain", - "rsa.time.day": "12", - "rsa.time.month": "March", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "shutdown", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "March 26 10:20:16 tconsec5932.mail.domain shutdown[uam]: shutting down for system reboot", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 252, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tconsec5932.mail.domain" - ], - "rsa.internal.data": "uam", - "rsa.internal.event_desc": "shutting down for system reboot", - "rsa.internal.messageid": "shutdown", - "rsa.misc.event_source": "tconsec5932.mail.domain", - "rsa.time.day": "26", - "rsa.time.month": "March", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "snmptrapd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 9 17:22:51 llu4762.mail.localdomain snmptrapd[scivel]: NET-SNMP version 1.5695 aperi", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 341, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "observer.version": "1.5695", - "related.hosts": [ - "llu4762.mail.localdomain" - ], - "rsa.internal.data": "scivel", - "rsa.internal.event_desc": "aperi", - "rsa.internal.messageid": "snmptrapd", - "rsa.misc.event_source": "llu4762.mail.localdomain", - "rsa.misc.version": "1.5695", - "rsa.time.day": "9", - "rsa.time.month": "April", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "syslog-ng", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 24 00:25:25 estqui6557.www.localhost -:syslog-ng equuntu", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 432, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "estqui6557.www.localhost" - ], - "rsa.internal.event_desc": "equuntu", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.event_source": "estqui6557.www.localhost", - "rsa.time.day": "24", - "rsa.time.month": "April", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "netauto_discovery", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 08 07:27:59 mcolabor1656.www5.corp netauto_discovery[giatq]: quid:fug(uatDuis)10.68.114.91/veri: SNMP Credentials: Failed to authenticate", - "event.outcome": "failure", - "fileset.name": "nios", - "host.ip": "10.68.114.91", - "input.type": "log", - "log.offset": 495, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "mcolabor1656.www5.corp" - ], - "related.ip": [ - "10.68.114.91" - ], - "rsa.internal.data": "giatq", - "rsa.internal.messageid": "netauto_discovery", - "rsa.investigations.ec_outcome": "Failure", - "rsa.misc.client": "quid", - "rsa.misc.event_source": "mcolabor1656.www5.corp", - "rsa.time.day": "08", - "rsa.time.month": "May", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "scheduled_ftp_backups", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 22 14:30:33 exercit4665.internal.domain -:scheduled_ftp_backups Scheduled backup to the eetd was successful - Backup file eip", - "file.name": "eip", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 637, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "exercit4665.internal.domain" - ], - "rsa.internal.event_desc": "Scheduled backup to the FTP server was successful", - "rsa.internal.messageid": "scheduled_ftp_backups", - "rsa.misc.device_name": "eetd", - "rsa.misc.event_source": "exercit4665.internal.domain", - "rsa.time.day": "22", - "rsa.time.month": "May", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "python", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "June 5 21:33:08 iutal13.api.localdomain python[eacomm]: Utenimad: nibusBon.ehend [ueipsaqu]: Populated uidolore niamqu222.localdomain DnsView=tevelit", - "fileset.name": "nios", - "host.name": "niamqu222.localdomain", - "input.type": "log", - "log.offset": 767, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "iutal13.api.localdomain", - "niamqu222.localdomain" - ], - "related.user": [ - "ueipsaqu" - ], - "rsa.internal.data": "eacomm", - "rsa.internal.messageid": "python", - "rsa.misc.event_source": "iutal13.api.localdomain", - "rsa.network.alias_host": [ - "niamqu222.localdomain" - ], - "rsa.network.zone": "uidolore", - "rsa.time.day": "5", - "rsa.time.month": "June", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ], - "user.name": "ueipsaqu" - }, - { - "event.code": "ntpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "June 20 04:35:42 boree6686.www5.host ntpd[iinea]: ipit", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 917, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "boree6686.www5.host" - ], - "rsa.internal.data": "iinea", - "rsa.internal.event_desc": "ipit", - "rsa.internal.messageid": "ntpd", - "rsa.misc.event_source": "boree6686.www5.host", - "rsa.time.day": "20", - "rsa.time.month": "June", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "openvpn-member", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "July 4 11:38:16 itlabori2344.mail.invalid -:openvpn-member OpenVPN 1.4105 [icmp] [aper] essequ", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 972, - "network.protocol": "icmp", - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "observer.version": "1.4105", - "related.hosts": [ - "itlabori2344.mail.invalid" - ], - "rsa.db.index": "essequ", - "rsa.internal.messageid": "openvpn-member", - "rsa.misc.event_source": "itlabori2344.mail.invalid", - "rsa.misc.version": "1.4105", - "rsa.time.day": "4", - "rsa.time.month": "July", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rc6", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "July 18 18:40:50 tessec3539.home nsect: rc6 ntutl", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1067, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tessec3539.home" - ], - "rsa.internal.event_desc": "ntutl", - "rsa.internal.messageid": "rc6", - "rsa.misc.event_source": "tessec3539.home", - "rsa.time.day": "18", - "rsa.time.month": "July", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 2 01:43:25 siuta2896.www.localhost -:ntpd ntpd exiting on signal 2946", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1117, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "siuta2896.www.localhost" - ], - "rsa.counters.dclass_c1": 2946, - "rsa.internal.event_desc": "ntpd exiting on signal", - "rsa.internal.messageid": "ntpd", - "rsa.misc.event_source": "siuta2896.www.localhost", - "rsa.time.day": "2", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "pidof", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 16 08:45:59 strude910.internal.local pidof[ittenbyC]: can't read sid from aperi", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1194, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "strude910.internal.local" - ], - "rsa.internal.data": "ittenbyC", - "rsa.internal.event_desc": "can't read sid", - "rsa.internal.messageid": "pidof", - "rsa.misc.client": "aperi", - "rsa.misc.event_source": "strude910.internal.local", - "rsa.time.day": "16", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "sSMTP", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 30 15:48:33 lores1409.www.home :sSMTP etc", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1281, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "lores1409.www.home" - ], - "rsa.internal.event_desc": "etc", - "rsa.internal.messageid": "sSMTP", - "rsa.misc.event_source": "lores1409.www.home", - "rsa.time.day": "30", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rc3", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 13 22:51:07 nimadmin1493.www5.example rc3[lpa]: entsu", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1330, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "nimadmin1493.www5.example" - ], - "rsa.internal.data": "lpa", - "rsa.internal.event_desc": "entsu", - "rsa.internal.messageid": "rc3", - "rsa.misc.event_source": "nimadmin1493.www5.example", - "rsa.time.day": "13", - "rsa.time.month": "September", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "kernel", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 28 05:53:42 mqui4683.www.localhost tasuntex: kernel sunt", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1394, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "mqui4683.www.localhost" - ], - "rsa.internal.event_desc": "sunt", - "rsa.internal.messageid": "kernel", - "rsa.misc.event_source": "mqui4683.www.localhost", - "rsa.time.day": "28", - "rsa.time.month": "September", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "controld", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "October 12 12:56:16 incidi2966.www.test controld[olupt]: Distribution Complete", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1461, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "incidi2966.www.test" - ], - "rsa.internal.data": "olupt", - "rsa.internal.event_desc": "Distribution Complete", - "rsa.internal.messageid": "controld", - "rsa.misc.event_source": "incidi2966.www.test", - "rsa.time.day": "12", - "rsa.time.month": "October", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "syslog", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "October 26 19:58:50 ugiatnu5252.internal.localdomain -:syslog erc", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1540, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "ugiatnu5252.internal.localdomain" - ], - "rsa.internal.event_desc": "erc", - "rsa.internal.messageid": "syslog", - "rsa.misc.event_source": "ugiatnu5252.internal.localdomain", - "rsa.time.day": "26", - "rsa.time.month": "October", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "controld", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 10 03:01:24 aperia4409.www5.invalid :controld Distribution Started", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1606, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "aperia4409.www5.invalid" - ], - "rsa.internal.event_desc": "Distribution Started", - "rsa.internal.messageid": "controld", - "rsa.misc.event_source": "aperia4409.www5.invalid", - "rsa.time.day": "10", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "dhcpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 24 10:03:59 emagnama4259.example 10.206.136.206 dhcpd: Average suntinc dynamic DNS update latency: success micro seconds", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1682, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "emagnama4259.example" - ], - "rsa.internal.event_desc": "Average dynamic DNS update latency", - "rsa.internal.messageid": "dhcpd", - "rsa.misc.event_source": "emagnama4259.example", - "rsa.misc.result": "success", - "rsa.time.day": "24", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "smart_check_io", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "December 8 17:06:33 isno2228.home nnu: smart_check_io dolo", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1812, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "isno2228.home" - ], - "rsa.internal.event_desc": "dolo", - "rsa.internal.messageid": "smart_check_io", - "rsa.misc.event_source": "isno2228.home", - "rsa.time.day": "8", - "rsa.time.month": "December", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rsyncd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "December 23 00:09:07 amvolup7700.www5.corp 10.19.194.101 rsyncd: rsync on orinrepr from conse2991.internal.lan (10.116.104.101)", - "file.name": "orinrepr", - "fileset.name": "nios", - "host.hostname": "conse2991.internal.lan", - "input.type": "log", - "log.offset": 1871, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "amvolup7700.www5.corp", - "conse2991.internal.lan" - ], - "related.ip": [ - "10.116.104.101" - ], - "rsa.internal.messageid": "rsyncd", - "rsa.misc.event_source": "amvolup7700.www5.corp", - "rsa.time.day": "23", - "rsa.time.month": "December", - "service.type": "infoblox", - "source.address": "conse2991.internal.lan", - "source.ip": "10.116.104.101", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rc6", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "January 6 07:11:41 tat7551.internal.local rc6[itinvo]: mdolore", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 1999, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tat7551.internal.local" - ], - "rsa.internal.data": "itinvo", - "rsa.internal.event_desc": "mdolore", - "rsa.internal.messageid": "rc6", - "rsa.misc.event_source": "tat7551.internal.local", - "rsa.time.day": "6", - "rsa.time.month": "January", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "debug_mount", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "January 20 14:14:16 siarchi2289.mail.lan debug_mount[olupta]: mount mipsumd", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2062, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "siarchi2289.mail.lan" - ], - "rsa.internal.data": "olupta", - "rsa.internal.event_desc": "mipsumd", - "rsa.internal.messageid": "debug_mount", - "rsa.misc.event_source": "siarchi2289.mail.lan", - "rsa.time.day": "20", - "rsa.time.month": "January", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "ntpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 3 21:16:50 remi2114.local ionevo: ntpd ntpd exiting on signal 3219", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2138, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "remi2114.local" - ], - "rsa.counters.dclass_c1": 3219, - "rsa.internal.event_desc": "ntpd exiting on signal", - "rsa.internal.messageid": "ntpd", - "rsa.misc.event_source": "remi2114.local", - "rsa.time.day": "3", - "rsa.time.month": "February", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "httpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 18 04:19:24 dolor2707.api.localhost httpd[commod]: 2017-2-18 4:19:24.adol [doloremi]: Login_Denied - - to=luptasn ip=10.153.111.103 info=itquiin", - "event.outcome": "failure", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2214, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "dolor2707.api.localhost" - ], - "related.ip": [ - "10.153.111.103" - ], - "related.user": [ - "doloremi" - ], - "rsa.db.index": "itquiin", - "rsa.internal.data": "commod", - "rsa.internal.messageid": "httpd", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.event_source": "dolor2707.api.localhost", - "rsa.misc.terminal": "luptasn", - "rsa.time.day": "18", - "rsa.time.month": "February", - "service.type": "infoblox", - "source.ip": "10.153.111.103", - "tags": [ - "forwarded", - "infoblox.nios" - ], - "user.name": "doloremi" - }, - { - "event.code": "init", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "March 4 11:21:59 que651.www5.host init[etconse]: tincu", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2368, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "que651.www5.host" - ], - "rsa.internal.data": "etconse", - "rsa.internal.event_desc": "tincu", - "rsa.internal.messageid": "init", - "rsa.misc.event_source": "que651.www5.host", - "rsa.time.day": "4", - "rsa.time.month": "March", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "DIS", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Mar 18 18:24:33 asun1250.api.localdomain DIS[oluptate]: onseq:serunt: Deviceaquaeabi/10.171.157.74login failurefailure", - "event.outcome": "failure", - "fileset.name": "nios", - "host.ip": "10.171.157.74", - "input.type": "log", - "log.offset": 2423, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "asun1250.api.localdomain" - ], - "related.ip": [ - "10.171.157.74" - ], - "rsa.internal.data": "oluptate", - "rsa.internal.messageid": "DIS", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.misc.device_name": "aquaeabi", - "rsa.misc.event_source": "asun1250.api.localdomain", - "rsa.misc.result": "failure", - "rsa.time.day": "18", - "rsa.time.month": "Mar", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rc6", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 2 01:27:07 ento4488.www5.localhost :rc6 eriamea", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2542, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "ento4488.www5.localhost" - ], - "rsa.internal.event_desc": "eriamea", - "rsa.internal.messageid": "rc6", - "rsa.misc.event_source": "ento4488.www5.localhost", - "rsa.time.day": "2", - "rsa.time.month": "April", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "named", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 16 08:29:41 pisciv7108.lan 10.140.136.44 named: client 10.31.14.36#2285/key dhcp_updater_default: signer \"vitaedi\" approved", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2596, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "pisciv7108.lan" - ], - "related.ip": [ - "10.31.14.36" - ], - "related.user": [ - "vitaedi" - ], - "rsa.internal.messageid": "named", - "rsa.misc.event_source": "pisciv7108.lan", - "rsa.time.day": "16", - "rsa.time.month": "April", - "service.type": "infoblox", - "source.ip": "10.31.14.36", - "source.port": 2285, - "tags": [ - "forwarded", - "infoblox.nios" - ], - "user.name": "vitaedi" - }, - { - "event.code": "diskcheck", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 30 15:32:16 veniamq1608.www.localdomain colab: diskcheck ommodico", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2726, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "veniamq1608.www.localdomain" - ], - "rsa.internal.event_desc": "ommodico", - "rsa.internal.messageid": "diskcheck", - "rsa.misc.event_source": "veniamq1608.www.localdomain", - "rsa.time.day": "30", - "rsa.time.month": "April", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "netauto_discovery", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 14 22:34:50 tin183.api.corp netauto_discovery[sperna]: eabilloi:estia(tper)10.163.5.243/osqui: SNMP Credentials: Failed to authenticate", - "event.outcome": "failure", - "fileset.name": "nios", - "host.ip": "10.163.5.243", - "input.type": "log", - "log.offset": 2798, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tin183.api.corp" - ], - "related.ip": [ - "10.163.5.243" - ], - "rsa.internal.data": "sperna", - "rsa.internal.messageid": "netauto_discovery", - "rsa.investigations.ec_outcome": "Failure", - "rsa.misc.client": "eabilloi", - "rsa.misc.event_source": "tin183.api.corp", - "rsa.time.day": "14", - "rsa.time.month": "May", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "INFOBLOX-Grid", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 29 05:37:24 fdeFi1123.api.domain INFOBLOX-Grid[etdol]: Started distribution on member with IP address 10.177.36.38", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 2938, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "fdeFi1123.api.domain" - ], - "related.ip": [ - "10.177.36.38" - ], - "rsa.internal.data": "etdol", - "rsa.internal.messageid": "INFOBLOX-Grid", - "rsa.misc.event_source": "fdeFi1123.api.domain", - "rsa.time.day": "29", - "rsa.time.month": "May", - "service.type": "infoblox", - "source.ip": "10.177.36.38", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "kernel", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "June 12 12:39:58 aevit37.www5.test ati: kernel Linux version 1.6668 (gel) (lorsitam) mpo", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3057, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "observer.version": "1.6668", - "related.hosts": [ - "aevit37.www5.test" - ], - "rsa.email.email_src": "gel", - "rsa.internal.messageid": "kernel", - "rsa.misc.event_source": "aevit37.www5.test", - "rsa.misc.version": "1.6668", - "rsa.time.day": "12", - "rsa.time.month": "June", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "syslog", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "June 26 19:42:33 aliquam1364.api.corp -:syslog eratv", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3146, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "aliquam1364.api.corp" - ], - "rsa.internal.event_desc": "eratv", - "rsa.internal.messageid": "syslog", - "rsa.misc.event_source": "aliquam1364.api.corp", - "rsa.time.day": "26", - "rsa.time.month": "June", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "smart_check_io", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "July 11 02:45:07 uir1374.mail.domain -:smart_check_io quiratio", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3199, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "uir1374.mail.domain" - ], - "rsa.internal.event_desc": "quiratio", - "rsa.internal.messageid": "smart_check_io", - "rsa.misc.event_source": "uir1374.mail.domain", - "rsa.time.day": "11", - "rsa.time.month": "July", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "db_jnld", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "July 25 09:47:41 nse2256.www.localdomain equat: db_jnld Resolved conflict for replicated delete of TXT \"derit\" in zone \"dexea\"", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3262, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "nse2256.www.localdomain" - ], - "rsa.internal.messageid": "db_jnld", - "rsa.misc.event_source": "nse2256.www.localdomain", - "rsa.network.zone": "dexea", - "rsa.time.day": "25", - "rsa.time.month": "July", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "sSMTP", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 8 16:50:15 lapar1024.www5.local intocc: sSMTP Unable to locate liqu2936.api.localdomain.", - "fileset.name": "nios", - "host.name": "liqu2936", - "input.type": "log", - "log.offset": 3389, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "lapar1024.www5.local", - "liqu2936" - ], - "rsa.internal.messageid": "sSMTP", - "rsa.misc.event_source": "lapar1024.www5.local", - "rsa.network.alias_host": [ - "liqu2936" - ], - "rsa.time.day": "8", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "scheduled_ftp_backups", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 22 23:52:50 tDuisaut3296.www.invalid scheduled_ftp_backups[imvenia]: Scheduled backup to the spi was successful - Backup file stquido", - "file.name": "stquido", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3485, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tDuisaut3296.www.invalid" - ], - "rsa.internal.data": "imvenia", - "rsa.internal.event_desc": "Scheduled backup to the FTP server was successful", - "rsa.internal.messageid": "scheduled_ftp_backups", - "rsa.misc.device_name": "spi", - "rsa.misc.event_source": "tDuisaut3296.www.invalid", - "rsa.time.day": "22", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "diskcheck", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 6 06:55:24 upta3300.www.home 10.233.48.103 diskcheck: leumiur", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3626, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "upta3300.www.home" - ], - "rsa.internal.event_desc": "leumiur", - "rsa.internal.messageid": "diskcheck", - "rsa.misc.event_source": "upta3300.www.home", - "rsa.time.day": "6", - "rsa.time.month": "September", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "controld", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 20 13:57:58 vita2681.www5.local tobea: controld Distribution Complete", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3698, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "vita2681.www5.local" - ], - "rsa.internal.event_desc": "Distribution Complete", - "rsa.internal.messageid": "controld", - "rsa.misc.event_source": "vita2681.www5.local", - "rsa.time.day": "20", - "rsa.time.month": "September", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "destination.bytes": 7387, - "event.code": "rsyncd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "October 4 21:00:32 ersp3536.www5.lan 10.93.90.240 rsyncd: sent 1792 bytes received 7387 bytes total size tes", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 3778, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "ersp3536.www5.lan" - ], - "rsa.internal.messageid": "rsyncd", - "rsa.misc.event_source": "ersp3536.www5.lan", - "rsa.time.day": "4", - "rsa.time.month": "October", - "service.type": "infoblox", - "source.bytes": 1792, - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "DIS", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Oct 19 04:03:07 tnulapa7592.www.local DIS[eriti]: litessec: itas: Attempting discover-now for 10.251.106.205 on mporin, using session ID", - "fileset.name": "nios", - "host.ip": "10.251.106.205", - "input.type": "log", - "log.offset": 3887, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tnulapa7592.www.local" - ], - "related.ip": [ - "10.251.106.205" - ], - "rsa.internal.data": "eriti", - "rsa.internal.messageid": "DIS", - "rsa.misc.event_source": "tnulapa7592.www.local", - "rsa.time.day": "19", - "rsa.time.month": "Oct", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "syslog", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 2 11:05:41 roid6604.www.test -:syslog Nemoenim", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4024, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "roid6604.www.test" - ], - "rsa.internal.event_desc": "Nemoenim", - "rsa.internal.messageid": "syslog", - "rsa.misc.event_source": "roid6604.www.test", - "rsa.time.day": "2", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "validate_dhcpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 16 18:08:15 nihil657.domain validate_dhcpd[rsitv]: iciade", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4080, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "nihil657.domain" - ], - "rsa.internal.data": "rsitv", - "rsa.internal.event_desc": "iciade", - "rsa.internal.messageid": "validate_dhcpd", - "rsa.misc.event_source": "nihil657.domain", - "rsa.time.day": "16", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.action": "cancel", - "event.code": "watchdog", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "December 1 01:10:49 ven660.api.lan amnih: watchdog cancel, pid = 3981", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4147, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "process.pid": 3981, - "related.hosts": [ - "ven660.api.lan" - ], - "rsa.internal.messageid": "watchdog", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_source": "ven660.api.lan", - "rsa.time.day": "1", - "rsa.time.month": "December", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "debug_mount", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "December 15 08:13:24 atatn7364.internal.localdomain debug_mount[ofdeFin]: mount essequam", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4217, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "atatn7364.internal.localdomain" - ], - "rsa.internal.data": "ofdeFin", - "rsa.internal.event_desc": "essequam", - "rsa.internal.messageid": "debug_mount", - "rsa.misc.event_source": "atatn7364.internal.localdomain", - "rsa.time.day": "15", - "rsa.time.month": "December", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "init", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "December 29 15:15:58 umqu301.internal.home init[inesci]: isnisi", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4306, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "umqu301.internal.home" - ], - "rsa.internal.data": "inesci", - "rsa.internal.event_desc": "isnisi", - "rsa.internal.messageid": "init", - "rsa.misc.event_source": "umqu301.internal.home", - "rsa.time.day": "29", - "rsa.time.month": "December", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "ntpd_initres", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "January 12 22:18:32 riamea1540.www.host -:ntpd_initres ntpd exiting on signal 15", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4370, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "riamea1540.www.host" - ], - "rsa.internal.event_desc": "ntpd exiting", - "rsa.internal.messageid": "ntpd_initres", - "rsa.misc.event_source": "riamea1540.www.host", - "rsa.time.day": "12", - "rsa.time.month": "January", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rcsysinit", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "January 27 05:21:06 siut5663.local piscinge: rcsysinit fsck from 1.271", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4451, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "observer.version": "1.271", - "related.hosts": [ - "siut5663.local" - ], - "rsa.internal.messageid": "rcsysinit", - "rsa.misc.event_source": "siut5663.local", - "rsa.misc.version": "1.271", - "rsa.time.day": "27", - "rsa.time.month": "January", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "diskcheck", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 10 12:23:41 cinge7339.api.corp -:diskcheck vitaedi", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4522, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "cinge7339.api.corp" - ], - "rsa.internal.event_desc": "vitaedi", - "rsa.internal.messageid": "diskcheck", - "rsa.misc.event_source": "cinge7339.api.corp", - "rsa.time.day": "10", - "rsa.time.month": "February", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "logger", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 24 19:26:15 dolore7072.www5.localhost ect: logger modocons", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4582, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "dolore7072.www5.localhost" - ], - "rsa.internal.event_desc": "modocons", - "rsa.internal.messageid": "logger", - "rsa.misc.event_source": "dolore7072.www5.localhost", - "rsa.time.day": "24", - "rsa.time.month": "February", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "syslog-ng", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "March 11 02:28:49 odoconse228.mail.localdomain -:syslog-ng veli", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4650, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "odoconse228.mail.localdomain" - ], - "rsa.internal.event_desc": "veli", - "rsa.internal.messageid": "syslog-ng", - "rsa.misc.event_source": "odoconse228.mail.localdomain", - "rsa.time.day": "11", - "rsa.time.month": "March", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "httpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "March 25 09:31:24 labo267.internal.localhost httpd[etdo]: 2018-3-25 9:31:24.par [lorin]: Login_Denied - - to=pitl ip=10.204.128.215 info=ama", - "event.outcome": "failure", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4714, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "labo267.internal.localhost" - ], - "related.ip": [ - "10.204.128.215" - ], - "related.user": [ - "lorin" - ], - "rsa.db.index": "ama", - "rsa.internal.data": "etdo", - "rsa.internal.messageid": "httpd", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.event_source": "labo267.internal.localhost", - "rsa.misc.terminal": "pitl", - "rsa.time.day": "25", - "rsa.time.month": "March", - "service.type": "infoblox", - "source.ip": "10.204.128.215", - "tags": [ - "forwarded", - "infoblox.nios" - ], - "user.name": "lorin" - }, - { - "event.code": "debug", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Apr 8 16:33:58 roidents6540.internal.corp -:debug tametcon", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4855, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "roidents6540.internal.corp" - ], - "rsa.internal.event_desc": "tametcon", - "rsa.internal.messageid": "debug", - "rsa.misc.event_source": "roidents6540.internal.corp", - "rsa.time.day": "8", - "rsa.time.month": "Apr", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "pidof", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 22 23:36:32 miurerep1152.internal.domain pidof[utlab]: can't read sid from emUteni", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 4914, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "miurerep1152.internal.domain" - ], - "rsa.internal.data": "utlab", - "rsa.internal.event_desc": "can't read sid", - "rsa.internal.messageid": "pidof", - "rsa.misc.client": "emUteni", - "rsa.misc.event_source": "miurerep1152.internal.domain", - "rsa.time.day": "22", - "rsa.time.month": "April", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "captured_dns_uploader", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 07 06:39:06 inimve2352.lan :captured_dns_uploader mco", - "event.outcome": "failure", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5003, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "inimve2352.lan" - ], - "rsa.internal.event_desc": "mco", - "rsa.internal.messageid": "captured_dns_uploader", - "rsa.investigations.ec_outcome": "Failure", - "rsa.misc.event_source": "inimve2352.lan", - "rsa.time.day": "07", - "rsa.time.month": "May", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "netauto_core", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 21 13:41:41 amcorp1275.www5.host netauto_core[liqua]: netautoctl:olo", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5061, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "amcorp1275.www5.host" - ], - "rsa.internal.data": "liqua", - "rsa.internal.event_desc": "olo", - "rsa.internal.messageid": "netauto_core", - "rsa.misc.event_source": "amcorp1275.www5.host", - "rsa.time.day": "21", - "rsa.time.month": "May", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "DIS", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Jun 04 20:44:15 fdeF593.internal.lan DIS[niamq]: lapariat: remagn: Attempting discover-now for 10.238.140.186 on tiaec, using session ID", - "fileset.name": "nios", - "host.ip": "10.238.140.186", - "input.type": "log", - "log.offset": 5134, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "fdeF593.internal.lan" - ], - "related.ip": [ - "10.238.140.186" - ], - "rsa.internal.data": "niamq", - "rsa.internal.messageid": "DIS", - "rsa.misc.event_source": "fdeF593.internal.lan", - "rsa.time.day": "04", - "rsa.time.month": "Jun", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "ntpdate", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "June 19 03:46:49 upt4986.mail.corp ntpdate[idunt]: luptat", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5271, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "upt4986.mail.corp" - ], - "rsa.internal.data": "idunt", - "rsa.internal.event_desc": "luptat", - "rsa.internal.messageid": "ntpdate", - "rsa.misc.event_source": "upt4986.mail.corp", - "rsa.time.day": "19", - "rsa.time.month": "June", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "logger", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "July 3 10:49:23 lillum7809.mail.local taedicta: logger ritt", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5329, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "lillum7809.mail.local" - ], - "rsa.internal.event_desc": "ritt", - "rsa.internal.messageid": "logger", - "rsa.misc.event_source": "lillum7809.mail.local", - "rsa.time.day": "3", - "rsa.time.month": "July", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "openvpn-member", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "July 17 17:51:58 tetur2694.mail.local ipi: openvpn-member OpenVPN 1.7727 [ipv6-icmp] [uaeab] itinv", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5389, - "network.protocol": "ipv6-icmp", - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "observer.version": "1.7727", - "related.hosts": [ - "tetur2694.mail.local" - ], - "rsa.db.index": "itinv", - "rsa.internal.messageid": "openvpn-member", - "rsa.misc.event_source": "tetur2694.mail.local", - "rsa.misc.version": "1.7727", - "rsa.time.day": "17", - "rsa.time.month": "July", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "pidof", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 1 00:54:32 utaliqu6138.mail.localhost nvolupt: pidof can't read sid from oremi", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5488, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "utaliqu6138.mail.localhost" - ], - "rsa.internal.event_desc": "can't read sid", - "rsa.internal.messageid": "pidof", - "rsa.misc.client": "oremi", - "rsa.misc.event_source": "utaliqu6138.mail.localhost", - "rsa.time.day": "1", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "INFOBLOX-Grid", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 15 07:57:06 atcupi2332.mail.localdomain -:INFOBLOX-Grid Upgrade to ore", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5574, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "atcupi2332.mail.localdomain" - ], - "rsa.internal.messageid": "INFOBLOX-Grid", - "rsa.misc.event_source": "atcupi2332.mail.localdomain", - "rsa.time.day": "15", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "purge_scheduled_tasks", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 29 14:59:40 luptatem6874.mail.test purge_scheduled_tasks[dat]: Scheduled tasks have been purged", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5652, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "luptatem6874.mail.test" - ], - "rsa.internal.data": "dat", - "rsa.internal.messageid": "purge_scheduled_tasks", - "rsa.misc.event_source": "luptatem6874.mail.test", - "rsa.time.day": "29", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "restarting", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 12 22:02:15 tame4953.mail.localhost prehen: restarting ntutlabo", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5755, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tame4953.mail.localhost" - ], - "rsa.db.index": "prehen", - "rsa.internal.event_desc": "ntutlabo", - "rsa.internal.messageid": "restarting", - "rsa.misc.event_source": "tame4953.mail.localhost", - "rsa.time.day": "12", - "rsa.time.month": "September", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "sshd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 27 05:04:49 sequa1715.www5.domain sshd[eirure]: Accepted password for root from 10.210.113.252 port 4184 udp", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5829, - "network.protocol": "udp", - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "sequa1715.www5.domain" - ], - "related.ip": [ - "10.210.113.252" - ], - "rsa.internal.data": "eirure", - "rsa.internal.messageid": "sshd", - "rsa.misc.event_source": "sequa1715.www5.domain", - "rsa.time.day": "27", - "rsa.time.month": "September", - "service.type": "infoblox", - "source.ip": "10.210.113.252", - "source.port": 4184, - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "kernel", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "October 11 12:07:23 tconsec5315.internal.example :kernel Linux version 1.341 (fugi) (labo) nostrud", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 5948, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "observer.version": "1.341", - "related.hosts": [ - "tconsec5315.internal.example" - ], - "rsa.email.email_src": "fugi", - "rsa.internal.messageid": "kernel", - "rsa.misc.event_source": "tconsec5315.internal.example", - "rsa.misc.version": "1.341", - "rsa.time.day": "11", - "rsa.time.month": "October", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rcsysinit", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "October 25 19:09:57 cupi1867.www5.test :rcsysinit orroq", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6047, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "cupi1867.www5.test" - ], - "rsa.internal.event_desc": "orroq", - "rsa.internal.messageid": "rcsysinit", - "rsa.misc.event_source": "cupi1867.www5.test", - "rsa.time.day": "25", - "rsa.time.month": "October", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "smart_check_io", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 9 02:12:32 rcit2043.api.home 10.107.45.175 smart_check_io: ssecil", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6103, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "rcit2043.api.home" - ], - "rsa.internal.event_desc": "ssecil", - "rsa.internal.messageid": "smart_check_io", - "rsa.misc.event_source": "rcit2043.api.home", - "rsa.time.day": "9", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.action": "cancel", - "event.code": "python", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 23 09:15:06 mes4801.internal.test 10.243.121.97 python: cancel: FQDN='illu4875.api.host', View='tatevel'", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6178, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "illu4875.api.host", - "mes4801.internal.test" - ], - "rsa.internal.messageid": "python", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_source": "mes4801.internal.test", - "rsa.network.domain": "illu4875.api.host", - "rsa.time.day": "23", - "rsa.time.month": "November", - "server.domain": "illu4875.api.host", - "server.registered_domain": "api.host", - "server.subdomain": "illu4875", - "server.top_level_domain": "host", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "debug_mount", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "December 7 16:17:40 its7867.internal.invalid 10.44.115.94 debug_mount: mount isn", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6292, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "its7867.internal.invalid" - ], - "rsa.internal.event_desc": "isn", - "rsa.internal.messageid": "debug_mount", - "rsa.misc.event_source": "its7867.internal.invalid", - "rsa.time.day": "7", - "rsa.time.month": "December", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "DIS", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Dec 21 23:20:14 equ4808.www.localhost DIS[siuta]: urmagn:dquia: Devicetemporin/10.46.166.75login failuresuccess", - "event.outcome": "failure", - "fileset.name": "nios", - "host.ip": "10.46.166.75", - "input.type": "log", - "log.offset": 6373, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "equ4808.www.localhost" - ], - "related.ip": [ - "10.46.166.75" - ], - "rsa.internal.data": "siuta", - "rsa.internal.messageid": "DIS", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.misc.device_name": "temporin", - "rsa.misc.event_source": "equ4808.www.localhost", - "rsa.misc.result": "success", - "rsa.time.day": "21", - "rsa.time.month": "Dec", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "captured_dns_uploader", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Jan 05 06:22:49 idi7668.www5.test rum: captured_dns_uploader eataevi", - "event.outcome": "failure", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6485, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "idi7668.www5.test" - ], - "rsa.internal.event_desc": "eataevi", - "rsa.internal.messageid": "captured_dns_uploader", - "rsa.investigations.ec_outcome": "Failure", - "rsa.misc.event_source": "idi7668.www5.test", - "rsa.time.day": "05", - "rsa.time.month": "Jan", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "init", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "January 19 13:25:23 iqu4614.www5.example 10.60.211.199 init: modocon", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6554, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "iqu4614.www5.example" - ], - "rsa.internal.event_desc": "modocon", - "rsa.internal.messageid": "init", - "rsa.misc.event_source": "iqu4614.www5.example", - "rsa.time.day": "19", - "rsa.time.month": "January", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "ntpd_initres", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 2 20:27:57 agnaaliq1829.mail.test :ntpd_initres ntpd exiting on signal 15", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6623, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "agnaaliq1829.mail.test" - ], - "rsa.internal.event_desc": "ntpd exiting", - "rsa.internal.messageid": "ntpd_initres", - "rsa.misc.event_source": "agnaaliq1829.mail.test", - "rsa.time.day": "2", - "rsa.time.month": "February", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "sSMTP", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "February 17 03:30:32 col3570.www.invalid tinvolup: sSMTP Sent mail for tsed (inv) uid=rroq username=rcit outbytes=2807", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6706, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "col3570.www.invalid" - ], - "related.user": [ - "rcit", - "rroq" - ], - "rsa.email.email_dst": "tsed", - "rsa.internal.messageid": "sSMTP", - "rsa.misc.event_source": "col3570.www.invalid", - "rsa.time.day": "17", - "rsa.time.month": "February", - "service.type": "infoblox", - "source.bytes": 2807, - "tags": [ - "forwarded", - "infoblox.nios" - ], - "user.name": "rcit" - }, - { - "event.code": "init", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "March 3 10:33:06 mipsamvo4282.api.home reetdo: init oreveri", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6825, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "mipsamvo4282.api.home" - ], - "rsa.internal.event_desc": "oreveri", - "rsa.internal.messageid": "init", - "rsa.misc.event_source": "mipsamvo4282.api.home", - "rsa.time.day": "3", - "rsa.time.month": "March", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "rc3", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "March 17 17:35:40 Except6889.www.corp -:rc3 umetMal", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6885, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "Except6889.www.corp" - ], - "rsa.internal.event_desc": "umetMal", - "rsa.internal.messageid": "rc3", - "rsa.misc.event_source": "Except6889.www.corp", - "rsa.time.day": "17", - "rsa.time.month": "March", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "debug", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Apr 1 00:38:14 umq1309.api.test uae: debug mve", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6937, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "umq1309.api.test" - ], - "rsa.internal.event_desc": "mve", - "rsa.internal.messageid": "debug", - "rsa.misc.event_source": "umq1309.api.test", - "rsa.time.day": "1", - "rsa.time.month": "Apr", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.action": "deny", - "event.code": "python", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 15 07:40:49 tatem4180.www.home 10.102.166.19 python: deny: FQDN='eritatis6343.api.local', View='mquisn'", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 6984, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "eritatis6343.api.local", - "tatem4180.www.home" - ], - "rsa.internal.messageid": "python", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_source": "tatem4180.www.home", - "rsa.network.domain": "eritatis6343.api.local", - "rsa.time.day": "15", - "rsa.time.month": "April", - "server.domain": "eritatis6343.api.local", - "server.registered_domain": "api.local", - "server.subdomain": "eritatis6343", - "server.top_level_domain": "local", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "syslog", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "April 29 14:43:23 quir7168.api.localdomain labore: syslog uela", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7094, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "quir7168.api.localdomain" - ], - "rsa.db.index": "labore", - "rsa.internal.event_desc": "uela", - "rsa.internal.messageid": "syslog", - "rsa.misc.event_source": "quir7168.api.localdomain", - "rsa.time.day": "29", - "rsa.time.month": "April", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "controld", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 13 21:45:57 iuntNequ7202.api.domain -:controld Distribution Complete", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7157, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "iuntNequ7202.api.domain" - ], - "rsa.internal.event_desc": "Distribution Complete", - "rsa.internal.messageid": "controld", - "rsa.misc.event_source": "iuntNequ7202.api.domain", - "rsa.time.day": "13", - "rsa.time.month": "May", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "radiusd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "May 28 04:48:31 veniamq1236.invalid emo: radiusd itq", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7230, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "veniamq1236.invalid" - ], - "rsa.internal.event_desc": "itq", - "rsa.internal.messageid": "radiusd", - "rsa.misc.event_source": "veniamq1236.invalid", - "rsa.time.day": "28", - "rsa.time.month": "May", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "syslog", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "June 11 11:51:06 nderiti409.api.domain -:syslog Cic", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7283, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "nderiti409.api.domain" - ], - "rsa.internal.event_desc": "Cic", - "rsa.internal.messageid": "syslog", - "rsa.misc.event_source": "nderiti409.api.domain", - "rsa.time.day": "11", - "rsa.time.month": "June", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "dhcpd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "June 25 18:53:40 tatem6156.www.local :dhcpd received shutdown -/-/ success", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7335, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "tatem6156.www.local" - ], - "rsa.internal.event_desc": "received shutdown", - "rsa.internal.messageid": "dhcpd", - "rsa.misc.event_source": "tatem6156.www.local", - "rsa.misc.result": "success", - "rsa.time.day": "25", - "rsa.time.month": "June", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.action": "accept", - "event.code": "python", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "July 10 01:56:14 uamnihil6127.api.domain 10.29.119.245 python: accept: 'olli3116.internal.example' in view 'rsp'.", - "fileset.name": "nios", - "host.name": "olli3116.internal.example", - "input.type": "log", - "log.offset": 7410, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "olli3116.internal.example", - "uamnihil6127.api.domain" - ], - "rsa.internal.messageid": "python", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_source": "uamnihil6127.api.domain", - "rsa.network.alias_host": [ - "olli3116.internal.example" - ], - "rsa.time.day": "10", - "rsa.time.month": "July", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "netauto_core", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Jul 24 08:58:48 roquisqu1205.api.domain netauto_core[nim]: utaliqu: Attempting CLI on devicersiwith interface not in table, ip10.118.155.14", - "fileset.name": "nios", - "host.ip": "10.118.155.14", - "input.type": "log", - "log.offset": 7524, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "roquisqu1205.api.domain" - ], - "related.ip": [ - "10.118.155.14" - ], - "rsa.internal.data": "nim", - "rsa.internal.messageid": "netauto_core", - "rsa.misc.client": "utaliqu", - "rsa.misc.device_name": "rsi", - "rsa.misc.event_source": "roquisqu1205.api.domain", - "rsa.time.day": "24", - "rsa.time.month": "Jul", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "phonehome", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 7 16:01:23 suntex5169.www.example phonehome[esci]: uov", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7664, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "suntex5169.www.example" - ], - "rsa.internal.data": "esci", - "rsa.internal.event_desc": "uov", - "rsa.internal.messageid": "phonehome", - "rsa.misc.event_source": "suntex5169.www.example", - "rsa.time.day": "7", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "debug_mount", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "August 21 23:03:57 fici5161.www5.example olup: debug_mount mount aco", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7726, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "fici5161.www5.example" - ], - "rsa.internal.event_desc": "aco", - "rsa.internal.messageid": "debug_mount", - "rsa.misc.event_source": "fici5161.www5.example", - "rsa.time.day": "21", - "rsa.time.month": "August", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "shutdown", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 5 06:06:31 orsi7617.www5.corp lorsita: shutdown shutting down for system reboot", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7795, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "orsi7617.www5.corp" - ], - "rsa.internal.event_desc": "shutting down for system reboot", - "rsa.internal.messageid": "shutdown", - "rsa.misc.event_source": "orsi7617.www5.corp", - "rsa.time.day": "5", - "rsa.time.month": "September", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "radiusd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "September 19 13:09:05 osamnis4912.mail.host npr: radiusd etconsec", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7885, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "osamnis4912.mail.host" - ], - "rsa.internal.event_desc": "etconsec", - "rsa.internal.messageid": "radiusd", - "rsa.misc.event_source": "osamnis4912.mail.host", - "rsa.time.day": "19", - "rsa.time.month": "September", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "captured_dns_uploader", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Oct 03 20:11:40 urExcept6809.www5.corp captured_dns_uploader[atcupida]: tessequa", - "event.outcome": "failure", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 7951, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "urExcept6809.www5.corp" - ], - "rsa.internal.data": "atcupida", - "rsa.internal.event_desc": "tessequa", - "rsa.internal.messageid": "captured_dns_uploader", - "rsa.investigations.ec_outcome": "Failure", - "rsa.misc.event_source": "urExcept6809.www5.corp", - "rsa.time.day": "03", - "rsa.time.month": "Oct", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "isi", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Oct 18 03:14:14 icab3519.localdomain dhcpdv6[plicaboN]: Encapsulated Renew message from 2001:db8::b1f51444:f88dd359 port 2496 from client DUID acommo, transaction ID isi", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 8032, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "icab3519.localdomain" - ], - "rsa.internal.data": "plicaboN", - "rsa.internal.event_desc": "Encapsulated Renew message", - "rsa.internal.messageid": "dhcpdv6", - "rsa.misc.event_source": "icab3519.localdomain", - "rsa.misc.reference_id": "isi", - "rsa.time.day": "18", - "rsa.time.month": "Oct", - "service.type": "infoblox", - "source.port": 2496, - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "python", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 1 10:16:48 abor4353.www5.host ame: python tesseq", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 8202, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "abor4353.www5.host" - ], - "rsa.internal.event_desc": "tesseq", - "rsa.internal.messageid": "python", - "rsa.misc.event_source": "abor4353.www5.host", - "rsa.time.day": "1", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.action": "deny", - "event.code": "sshd", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 15 17:19:22 olorem290.api.lan sshd[culpaqui]: deny: logout() unknown", - "event.outcome": "failure", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 8260, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "olorem290.api.lan" - ], - "rsa.internal.data": "culpaqui", - "rsa.internal.event_desc": "logout", - "rsa.internal.messageid": "sshd", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_source": "olorem290.api.lan", - "rsa.misc.result": "unknown", - "rsa.time.day": "15", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "event.code": "purge_scheduled_tasks", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "November 30 00:21:57 ventore3612.www.home purge_scheduled_tasks[emp]: Scheduled tasks have been purged", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 8338, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "ventore3612.www.home" - ], - "rsa.internal.data": "emp", - "rsa.internal.messageid": "purge_scheduled_tasks", - "rsa.misc.event_source": "ventore3612.www.home", - "rsa.time.day": "30", - "rsa.time.month": "November", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - }, - { - "destination.ip": "10.111.52.69", - "destination.port": 6073, - "event.code": "tacacs_acct", - "event.dataset": "infoblox.nios", - "event.module": "infoblox", - "event.original": "Dec 14 07:24:31 uptatem4483.localhost tacacs_acct[inrepr]: mol: Server 10.111.52.69 port 6073: asperna", - "fileset.name": "nios", - "input.type": "log", - "log.offset": 8441, - "observer.product": "Network", - "observer.type": "IPAM", - "observer.vendor": "Infoblox", - "related.hosts": [ - "uptatem4483.localhost" - ], - "related.ip": [ - "10.111.52.69" - ], - "rsa.internal.data": "inrepr", - "rsa.internal.event_desc": "asperna", - "rsa.internal.messageid": "tacacs_acct", - "rsa.misc.event_source": "uptatem4483.localhost", - "rsa.time.day": "14", - "rsa.time.month": "Dec", - "service.type": "infoblox", - "tags": [ - "forwarded", - "infoblox.nios" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/juniper/_meta/config.yml b/x-pack/filebeat/module/juniper/_meta/config.yml index 2ad874d9c4f..91fc5306a03 100644 --- a/x-pack/filebeat/module/juniper/_meta/config.yml +++ b/x-pack/filebeat/module/juniper/_meta/config.yml @@ -1,42 +1,4 @@ - module: juniper - junos: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9513 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - netscreen: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9523 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - srx: enabled: false diff --git a/x-pack/filebeat/module/juniper/_meta/docs.asciidoc b/x-pack/filebeat/module/juniper/_meta/docs.asciidoc index a33b9c03a83..60bca9330e1 100644 --- a/x-pack/filebeat/module/juniper/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/juniper/_meta/docs.asciidoc @@ -10,8 +10,6 @@ include::{libbeat-dir}/shared/integration-link.asciidoc[] This is a module for ingesting data from the different Juniper Products. Currently supports these filesets: - `srx` fileset: Supports Juniper SRX logs -- `junos` fileset: Supports Juniper JUNOS logs -- `netscreen` fileset: Supports Juniper Netscreen logs include::../include/gs-link.asciidoc[] @@ -129,99 +127,6 @@ This is a list of JunOS fields that are mapped to ECS. | url | url.domain | |============================================================== - -:fileset_ex: junos - -[float] -==== `junos` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/juniper_srx[Juniper SRX] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "junosrouter" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9513` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -[float] -==== `netscreen` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. See <> for migration options."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "netscreen" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9523` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - :has-dashboards!: :fileset_ex!: diff --git a/x-pack/filebeat/module/juniper/fields.go b/x-pack/filebeat/module/juniper/fields.go index 72da8d51362..26b3cfcef30 100644 --- a/x-pack/filebeat/module/juniper/fields.go +++ b/x-pack/filebeat/module/juniper/fields.go @@ -19,5 +19,5 @@ func init() { // AssetJuniper returns asset data. // This is the base64 encoded zlib format compressed contents of module/juniper. func AssetJuniper() string { - return "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" + return "eJzEm8uS47YOhvf9FHiAM7OYU+csvMgDTFWSRSprFk3BEqdpUgGhbvvtU7q4RxfKot1Q4tWMVf7+XxBJgKD6C7zi9QA/Gm9rpBcAtuzwAN/7L+D7n7/9/scLQIHRkK3ZBn+AX14A4PYbOFl0Rfz6AsO/Dt3V9vMFvD7jB/1rpMvHNQC+1niAkkJTj74ldKgjHuCIrEffhzekd7KMB2BqcHQlYe32+TUUjUM4BYJaU7S+vHmJdIF4jS6UX0e/mN/A+CYIdQx+cul2D694fQ9UzK7d8dXf6ISX1DTBezQtQbEu5bR/cmHMTXqISG/WoGr/J+dgoMKEmtT3mtVecfCaH4sFGdX6ocahanUFA0Kms9OiYYLediL8aMZOtp9PEXmvmBSRH4nJxIlsTCZOtmNSU+BgglN2rvMJDzcojKBp9eCsuQpHoIdm3HvEGNuJagv132+SC0aHBVvACLvhYA/5+9qh4WNofKFqbV6RY9KB9Yxll20fcDAA4UThDMZZ9Jxp5XhlFDTS4fJtWP9PBKTNJyPAXSf7xSPHBTpdRywU25XpWWieX9hwMCBhgkyK67p21ugWJDc3UtB0KsfIWKhdTPTsfC9NRJJdIRfEdBkZ3Mrge66KnODSA84butaMgqvhErk12pTRjGWg6y7DDhb0TT+xOe7sKTbHJ3yZSpM2jGQjWyM4UibhWhFZSaemIVTveFQ1hctV3fKrcAHcycA7HqGT+Ui524VfjUhqj6zfgrNTf+8iNGRQ6aIgjCtJpn7GRMeFOXfTSB2IBVPuyMqEvO6jwMjW92NbPCoj+AOhGVvaIT5jU9tBqkJk2Ty0IKZnNRn1RidV0jzwn9s6LqBJ9XarJq6egqYLQXOu11evp558i8xZqSiYtRnw7KawBQJXmqFEj6TbMogrhDPGqMvNgvBIe2zdW27+vt3U6k27RvB5PKLvQmmNdipeI+NZeN88wKGH5/UOTla8gTFQM/QpNGx9qayPrL0R9DCQYUFO+5Dv4mR2b5raWf+q+CK9U+zBwBeYgu+5oL1cUJaLcPwhuEMiB7XmauPGyclKFuGs7cZ2cJgfcsIn6xhpwU2Ky+9DBvW87UdrUHaiLYhJXcZzHUjTVck7uMNOepFV39ZDokBqnqI/LZzG3nFgQiEuP2Gmqw4j3IEy2w2fW/tcNKdOiXd15RN6fxqQMc9EK7vteoqwxu7QrvGCe6ueClNqenQ5XNnUPXlQ2wlPqUnhYd4Jl9IDNSPwXFEb+IhvSJYF00kPhgV4ZUvxs5slO+bHLaztYa+ZtXmVttBBM9StL/AipzvF3Rt9ogNPl5tppA6mEj3MaIEZRxn98Y9yoVxr+X3iVKndtm02/PBSB+J/S70oQlT7zbUW/+CEG72lUVlWtHz0n4jM6DWNyjJM4OnF0J5RRRNEc589I0yZa5FgvPA+YWjJmTG4+eiaKzu66fiPPBfh2qB7LhmVQaddI9kgOGc78Rl0+2nIDcrJQ8hzILtU3Axk9JYah3jUcY/GTsfN8PCGVFjDwwGJnIeBCzPuXQ++OR8Xw+0TQ/HmYcZNeuiajLt0HjCz7xD1uXaoYqW//e//cg56LMyw6ZJJu3dNqKw/BcG6qafChJqej937M2px9vXckVhPG/8svQii1361bHmy29IiN0uWdqWMrM/p2328VFzy0rKV4J1uNC8ja24Ez3dmvFVNyYN43szh3dpR6VgpF8JrI3eG160eLRhm4HUbopkk84yk7zepAllbuYZST4UZNf3I93h7Jf+FlRNiIRx4xCIj8MGYhoSrx46ZVT1Kvno+nAe2O72PBo8u/wPvlTUVNN7+1aC7gi3Qsz1ZjOMz3Z9/s/DydwAAAP//Z0sHxg==" } diff --git a/x-pack/filebeat/module/juniper/junos/_meta/fields.yml b/x-pack/filebeat/module/juniper/junos/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/juniper/junos/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/juniper/junos/config/input.yml b/x-pack/filebeat/module/juniper/junos/config/input.yml deleted file mode 100644 index 117a222475f..00000000000 --- a/x-pack/filebeat/module/juniper/junos/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Juniper" - product: "Junos" - type: "Routers" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/juniper/junos/config/liblogparser.js - - ${path.home}/module/juniper/junos/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/juniper/junos/config/liblogparser.js b/x-pack/filebeat/module/juniper/junos/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/juniper/junos/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{day->} %{time->} %{p0}"); - -var dup2 = match("HEADER#3:0004/1_0", "nwparser.p0", "fpc0 %{p0}"); - -var dup3 = match("HEADER#3:0004/1_1", "nwparser.p0", "fpc1 %{p0}"); - -var dup4 = match("HEADER#3:0004/1_2", "nwparser.p0", "fpc2 %{p0}"); - -var dup5 = match("HEADER#3:0004/1_3", "nwparser.p0", "fpc3 %{p0}"); - -var dup6 = match("HEADER#3:0004/1_4", "nwparser.p0", "fpc4 %{p0}"); - -var dup7 = match("HEADER#3:0004/1_5", "nwparser.p0", "fpc5 %{p0}"); - -var dup8 = match("HEADER#3:0004/1_11", "nwparser.p0", "ssb %{p0}"); - -var dup9 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(": "), - field("p0"), - ], -}); - -var dup10 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(" "), - field("p0"), - ], -}); - -var dup11 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant(" "), - field("messageid"), - constant(": "), - field("p0"), - ], -}); - -var dup12 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld1"), - constant("["), - field("pid"), - constant("]: "), - field("messageid"), - constant(": "), - field("p0"), - ], -}); - -var dup13 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(" ["), - field("p0"), - ], -}); - -var dup14 = match("HEADER#15:0026.upd.a/1_0", "nwparser.p0", "RT_FLOW - %{p0}"); - -var dup15 = match("HEADER#15:0026.upd.a/1_1", "nwparser.p0", "junos-ssl-proxy - %{p0}"); - -var dup16 = match("HEADER#15:0026.upd.a/1_2", "nwparser.p0", "RT_APPQOS - %{p0}"); - -var dup17 = match("HEADER#15:0026.upd.a/1_3", "nwparser.p0", "%{hfld33->} - %{p0}"); - -var dup18 = match("HEADER#16:0026.upd.b/0", "message", "%{event_time->} %{hfld32->} %{hhostname->} %{p0}"); - -var dup19 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("pid"), - constant("]: "), - field("p0"), - ], -}); - -var dup20 = setc("messageid","JUNOSROUTER_GENERIC"); - -var dup21 = setc("eventcategory","1605000000"); - -var dup22 = setf("msg","$MSG"); - -var dup23 = date_time({ - dest: "event_time", - args: ["month","day","time"], - fmts: [ - [dB,dF,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup24 = setf("hostname","hhost"); - -var dup25 = setc("event_description","AUDIT"); - -var dup26 = setc("event_description","CRON command"); - -var dup27 = setc("eventcategory","1801030000"); - -var dup28 = setc("eventcategory","1801020000"); - -var dup29 = setc("eventcategory","1605010000"); - -var dup30 = setc("eventcategory","1603000000"); - -var dup31 = setc("event_description","Process mode"); - -var dup32 = setc("event_description","NTP Server Unreachable"); - -var dup33 = setc("eventcategory","1401060000"); - -var dup34 = setc("ec_theme","Authentication"); - -var dup35 = setc("ec_subject","User"); - -var dup36 = setc("ec_activity","Logon"); - -var dup37 = setc("ec_outcome","Success"); - -var dup38 = setc("event_description","rpd proceeding"); - -var dup39 = match("MESSAGE#77:sshd:06/0", "nwparser.payload", "%{} %{p0}"); - -var dup40 = match("MESSAGE#77:sshd:06/1_0", "nwparser.p0", "%{process}[%{process_id}]: %{p0}"); - -var dup41 = match("MESSAGE#77:sshd:06/1_1", "nwparser.p0", "%{process}: %{p0}"); - -var dup42 = setc("eventcategory","1701010000"); - -var dup43 = setc("ec_outcome","Failure"); - -var dup44 = setc("eventcategory","1401030000"); - -var dup45 = match_copy("MESSAGE#72:Failed:05/1_2", "nwparser.p0", "p0"); - -var dup46 = setc("eventcategory","1803000000"); - -var dup47 = setc("event_type","VPN"); - -var dup48 = setc("eventcategory","1605020000"); - -var dup49 = setc("eventcategory","1602020000"); - -var dup50 = match("MESSAGE#114:ACCT_GETHOSTNAME_error/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{p0}"); - -var dup51 = setc("eventcategory","1603020000"); - -var dup52 = date_time({ - dest: "event_time", - args: ["hfld32"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dc("T"),dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup53 = setc("ec_subject","NetworkComm"); - -var dup54 = setc("ec_activity","Create"); - -var dup55 = setc("ec_activity","Stop"); - -var dup56 = setc("event_description","Trap state change"); - -var dup57 = setc("event_description","peer NLRI mismatch"); - -var dup58 = setc("eventcategory","1605030000"); - -var dup59 = setc("eventcategory","1603010000"); - -var dup60 = setc("eventcategory","1606000000"); - -var dup61 = setf("hostname","hhostname"); - -var dup62 = date_time({ - dest: "event_time", - args: ["hfld6"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dc("T"),dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup63 = setc("eventcategory","1401050200"); - -var dup64 = setc("event_description","Memory allocation failed during initialization for configuration load"); - -var dup65 = setc("event_description","unable to run in the background as a daemon"); - -var dup66 = setc("event_description","Another copy of this program is running"); - -var dup67 = setc("event_description","Unable to lock PID file"); - -var dup68 = setc("event_description","Unable to update process PID file"); - -var dup69 = setc("eventcategory","1301000000"); - -var dup70 = setc("event_description","Command stopped"); - -var dup71 = setc("event_description","Unable to create pipes for command"); - -var dup72 = setc("event_description","Command exited"); - -var dup73 = setc("eventcategory","1603050000"); - -var dup74 = setc("eventcategory","1801010000"); - -var dup75 = setc("event_description","Login failure"); - -var dup76 = match("MESSAGE#294:LOGIN_INFORMATION/3_0", "nwparser.p0", "User %{p0}"); - -var dup77 = match("MESSAGE#294:LOGIN_INFORMATION/3_1", "nwparser.p0", "user %{p0}"); - -var dup78 = setc("event_description","Unable to open file"); - -var dup79 = setc("event_description","SNMP index assigned changed"); - -var dup80 = setc("eventcategory","1302000000"); - -var dup81 = setc("eventcategory","1001020300"); - -var dup82 = setc("event_description","PFE FW SYSLOG_IP"); - -var dup83 = setc("event_description","process_mode"); - -var dup84 = setc("event_description","Logical interface collision"); - -var dup85 = setc("event_description","excessive runtime time during action of module"); - -var dup86 = setc("event_description","Reinitializing"); - -var dup87 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/0", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\"%{p0}"); - -var dup88 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/1_0", "nwparser.p0", " connection-tag=%{fld20->} service-name=\"%{p0}"); - -var dup89 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/1_1", "nwparser.p0", " service-name=\"%{p0}"); - -var dup90 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/3_0", "nwparser.p0", " nat-connection-tag=%{fld6->} src-nat-rule-type=%{fld20->} %{p0}"); - -var dup91 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/5_1", "nwparser.p0", "name=\"%{p0}"); - -var dup92 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/8", "nwparser.p0", "]%{}"); - -var dup93 = setc("eventcategory","1803010000"); - -var dup94 = setc("ec_activity","Deny"); - -var dup95 = match("MESSAGE#490:RT_FLOW_SESSION_DENY:03/0_0", "nwparser.payload", "%{process}: %{event_type}: session denied %{p0}"); - -var dup96 = match("MESSAGE#490:RT_FLOW_SESSION_DENY:03/0_1", "nwparser.payload", "%{event_type}: session denied %{p0}"); - -var dup97 = setc("event_description","session denied"); - -var dup98 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/0", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} reason=\"%{result}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\"%{p0}"); - -var dup99 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/2", "nwparser.p0", "%{service}\" nat-source-address=\"%{hostip}\" nat-source-port=\"%{network_port}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\"%{p0}"); - -var dup100 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/4", "nwparser.p0", "%{}src-nat-rule-name=\"%{rulename}\" dst-nat-rule-%{p0}"); - -var dup101 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/5_0", "nwparser.p0", "type=%{fld7->} dst-nat-rule-name=\"%{p0}"); - -var dup102 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/6", "nwparser.p0", "\"%{rule_template->} protocol-id=\"%{protocol}\" policy-name=\"%{policyname}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" session-id-32=\"%{sessionid}\" packets-from-client=\"%{packets}\" bytes-from-client=\"%{rbytes}\" packets-from-server=\"%{dclass_counter1}\" bytes-from-server=\"%{sbytes}\" elapsed-time=\"%{duration}\"%{p0}"); - -var dup103 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/7_0", "nwparser.p0", " application=\"%{fld6}\" nested-application=\"%{fld7}\" username=\"%{username}\" roles=\"%{fld15}\" packet-incoming-interface=\"%{dinterface}\" encrypted=%{fld16->} %{p0}"); - -var dup104 = setc("dclass_counter1_string","No.of packets from client"); - -var dup105 = setc("event_description","SNMPD AUTH FAILURE"); - -var dup106 = setc("event_description","send send-type (index1) failure"); - -var dup107 = setc("event_description","SNMP trap error"); - -var dup108 = setc("event_description","SNMP TRAP LINK DOWN"); - -var dup109 = setc("event_description","SNMP TRAP LINK UP"); - -var dup110 = setc("event_description","Login Failure"); - -var dup111 = match("MESSAGE#630:UI_CFG_AUDIT_OTHER:02/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' set: [%{action}] %{p0}"); - -var dup112 = match_copy("MESSAGE#630:UI_CFG_AUDIT_OTHER:02/1_1", "nwparser.p0", "space"); - -var dup113 = setc("eventcategory","1701020000"); - -var dup114 = match("MESSAGE#634:UI_CFG_AUDIT_SET:01/1_1", "nwparser.p0", "\u003c\u003c%{change_old}> %{p0}"); - -var dup115 = match("MESSAGE#634:UI_CFG_AUDIT_SET:01/2", "nwparser.p0", "-> \"%{change_new}\""); - -var dup116 = setc("event_description","User set command"); - -var dup117 = match("MESSAGE#637:UI_CFG_AUDIT_SET_SECRET:01/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' %{p0}"); - -var dup118 = match("MESSAGE#637:UI_CFG_AUDIT_SET_SECRET:01/1_0", "nwparser.p0", "set %{p0}"); - -var dup119 = match("MESSAGE#637:UI_CFG_AUDIT_SET_SECRET:01/1_1", "nwparser.p0", "replace %{p0}"); - -var dup120 = setc("event_description","User set groups to secret"); - -var dup121 = setc("event_description","UI CMDLINE READ LINE"); - -var dup122 = setc("event_description","User commit"); - -var dup123 = match("MESSAGE#675:UI_DAEMON_ACCEPT_FAILED/1_0", "nwparser.p0", "Network %{p0}"); - -var dup124 = match("MESSAGE#675:UI_DAEMON_ACCEPT_FAILED/1_1", "nwparser.p0", "Local %{p0}"); - -var dup125 = setc("eventcategory","1401070000"); - -var dup126 = setc("ec_activity","Logoff"); - -var dup127 = setc("event_description","Successful login"); - -var dup128 = setf("hostname","hostip"); - -var dup129 = setc("event_description","TACACS+ failure"); - -var dup130 = match("MESSAGE#755:node:05/0", "nwparser.payload", "%{hostname->} %{node->} %{p0}"); - -var dup131 = match("MESSAGE#755:node:05/1_0", "nwparser.p0", "partner%{p0}"); - -var dup132 = match("MESSAGE#755:node:05/1_1", "nwparser.p0", "actor%{p0}"); - -var dup133 = setc("eventcategory","1003010000"); - -var dup134 = setc("eventcategory","1901000000"); - -var dup135 = linear_select([ - dup14, - dup15, - dup16, - dup17, -]); - -var dup136 = match("HEADER#15:0026.upd.a/2", "nwparser.p0", "%{messageid->} [%{p0}", processor_chain([ - dup13, -])); - -var dup137 = linear_select([ - dup40, - dup41, -]); - -var dup138 = match("MESSAGE#125:BFDD_TRAP_STATE_DOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: local discriminator: %{resultcode}, new state: %{result}", processor_chain([ - dup21, - dup22, - dup56, - dup23, -])); - -var dup139 = match("MESSAGE#214:DCD_MALLOC_FAILED_INIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Memory allocation failed during initialization for configuration load", processor_chain([ - dup51, - dup22, - dup64, - dup23, -])); - -var dup140 = match("MESSAGE#225:ECCD_DAEMONIZE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}, unable to run in the background as a daemon: %{result}", processor_chain([ - dup30, - dup22, - dup65, - dup23, -])); - -var dup141 = match("MESSAGE#226:ECCD_DUPLICATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Another copy of this program is running", processor_chain([ - dup30, - dup22, - dup66, - dup23, -])); - -var dup142 = match("MESSAGE#232:ECCD_PID_FILE_LOCK", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to lock PID file: %{result}", processor_chain([ - dup30, - dup22, - dup67, - dup23, -])); - -var dup143 = match("MESSAGE#233:ECCD_PID_FILE_UPDATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to update process PID file: %{result}", processor_chain([ - dup30, - dup22, - dup68, - dup23, -])); - -var dup144 = match("MESSAGE#272:LIBJNX_EXEC_PIPE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to create pipes for command '%{action}': %{result}", processor_chain([ - dup30, - dup22, - dup71, - dup23, -])); - -var dup145 = linear_select([ - dup76, - dup77, -]); - -var dup146 = match("MESSAGE#310:MIB2D_IFD_IFINDEX_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: SNMP index assigned to %{uid->} changed from %{dclass_counter1->} to %{result}", processor_chain([ - dup30, - dup22, - dup79, - dup23, -])); - -var dup147 = match("MESSAGE#412:RPD_IFL_INDEXCOLLISION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Logical interface collision -- %{result}, %{info}", processor_chain([ - dup30, - dup22, - dup84, - dup23, -])); - -var dup148 = match("MESSAGE#466:RPD_SCHED_CALLBACK_LONGRUNTIME", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: excessive runtime time during action of module", processor_chain([ - dup30, - dup22, - dup85, - dup23, -])); - -var dup149 = match("MESSAGE#482:RPD_TASK_REINIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Reinitializing", processor_chain([ - dup21, - dup22, - dup86, - dup23, -])); - -var dup150 = linear_select([ - dup88, - dup89, -]); - -var dup151 = linear_select([ - dup90, - dup45, -]); - -var dup152 = linear_select([ - dup95, - dup96, -]); - -var dup153 = linear_select([ - dup101, - dup91, -]); - -var dup154 = match("MESSAGE#498:RT_SCREEN_TCP", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} attack-name=\"%{threat_name}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" source-zone-name=\"%{src_zone}\" interface-name=\"%{interface}\" action=\"%{action}\"]", processor_chain([ - dup30, - dup22, - dup52, -])); - -var dup155 = match("MESSAGE#527:SSL_PROXY_SSL_SESSION_ALLOW", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} logical-system-name=\"%{hostname}\" session-id=\"%{sessionid}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" nat-source-address=\"%{hostip}\" nat-source-port=\"%{network_port}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\" profile-name=\"%{rulename}\" source-zone-name=\"%{src_zone}\" source-interface-name=\"%{sinterface}\" destination-zone-name=\"%{dst_zone}\" destination-interface-name=\"%{dinterface}\" message=\"%{info}\"]", processor_chain([ - dup27, - dup22, - dup52, -])); - -var dup156 = linear_select([ - dup118, - dup119, -]); - -var dup157 = linear_select([ - dup123, - dup124, -]); - -var dup158 = match("MESSAGE#733:WEBFILTER_URL_PERMITTED", "nwparser.payload", "%{event_type->} [junos@%{fld21->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" name=\"%{info}\" error-message=\"%{result}\" profile-name=\"%{profile}\" object-name=\"%{obj_name}\" pathname=\"%{directory}\" username=\"%{username}\" roles=\"%{user_role}\"] WebFilter: ACTION=\"%{action}\" %{fld2}->%{fld3->} CATEGORY=\"%{category}\" REASON=\"%{fld4}\" PROFILE=\"%{fld6}\" URL=%{url->} OBJ=%{fld7->} USERNAME=%{fld8->} ROLES=%{fld9}", processor_chain([ - dup30, - dup22, - dup52, -])); - -var dup159 = match_copy("MESSAGE#747:cli", "nwparser.payload", "fld12", processor_chain([ - dup48, - dup47, - dup23, - dup22, -])); - -var hdr1 = match("HEADER#0:0001", "message", "%{month->} %{day->} %{time->} %{messageid}: restart %{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(": restart "), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{month->} %{day->} %{time->} %{messageid->} message repeated %{p0}", processor_chain([ - setc("header_id","0002"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(" message repeated "), - field("p0"), - ], - }), -])); - -var hdr3 = match("HEADER#2:0003", "message", "%{month->} %{day->} %{time->} ssb %{messageid}(%{hfld1}): %{p0}", processor_chain([ - setc("header_id","0003"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("("), - field("hfld1"), - constant("): "), - field("p0"), - ], - }), -])); - -var part1 = match("HEADER#3:0004/1_6", "nwparser.p0", "fpc6 %{p0}"); - -var part2 = match("HEADER#3:0004/1_7", "nwparser.p0", "fpc7 %{p0}"); - -var part3 = match("HEADER#3:0004/1_8", "nwparser.p0", "fpc8 %{p0}"); - -var part4 = match("HEADER#3:0004/1_9", "nwparser.p0", "fpc9 %{p0}"); - -var part5 = match("HEADER#3:0004/1_10", "nwparser.p0", "cfeb %{p0}"); - -var select1 = linear_select([ - dup2, - dup3, - dup4, - dup5, - dup6, - dup7, - part1, - part2, - part3, - part4, - part5, - dup8, -]); - -var part6 = match("HEADER#3:0004/2", "nwparser.p0", "%{} %{messageid}: %{p0}", processor_chain([ - dup9, -])); - -var all1 = all_match({ - processors: [ - dup1, - select1, - part6, - ], - on_success: processor_chain([ - setc("header_id","0004"), - ]), -}); - -var select2 = linear_select([ - dup2, - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, -]); - -var part7 = match("HEADER#4:0005/2", "nwparser.p0", "%{} %{messageid->} %{p0}", processor_chain([ - dup10, -])); - -var all2 = all_match({ - processors: [ - dup1, - select2, - part7, - ], - on_success: processor_chain([ - setc("header_id","0005"), - ]), -}); - -var hdr4 = match("HEADER#5:0007", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhost}: %{hfld2}[%{hpid}]: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0007"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant("["), - field("hpid"), - constant("]: "), - field("messageid"), - constant(": "), - field("p0"), - ], - }), -])); - -var hdr5 = match("HEADER#6:0008", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhost}: %{messageid}[%{hpid}]: %{p0}", processor_chain([ - setc("header_id","0008"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("hpid"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr6 = match("HEADER#7:0009", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhost}: %{hfld2->} IFP trace> %{messageid}: %{p0}", processor_chain([ - setc("header_id","0009"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant(" IFP trace> "), - field("messageid"), - constant(": "), - field("p0"), - ], - }), -])); - -var hdr7 = match("HEADER#8:0010", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhost}: %{hfld2->} %{messageid}: %{p0}", processor_chain([ - setc("header_id","0010"), - dup11, -])); - -var hdr8 = match("HEADER#9:0029", "message", "%{month->} %{day->} %{time->} %{hostip->} %{hfld1}[%{pid}]: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0029"), - dup12, -])); - -var hdr9 = match("HEADER#10:0015", "message", "%{month->} %{day->} %{time->} %{hfld1}[%{pid}]: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0015"), - dup12, -])); - -var hdr10 = match("HEADER#11:0011", "message", "%{month->} %{day->} %{time->} %{hfld2->} %{messageid}: %{p0}", processor_chain([ - setc("header_id","0011"), - dup11, -])); - -var hdr11 = match("HEADER#12:0027", "message", "%{month->} %{day->} %{time->} %{hhostname->} RT_FLOW: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0027"), - dup9, -])); - -var hdr12 = match("HEADER#13:0012", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhost}: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0012"), - dup9, -])); - -var hdr13 = match("HEADER#14:0013", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hfld32->} %{hhostname->} RT_FLOW - %{messageid->} [%{p0}", processor_chain([ - setc("header_id","0013"), - dup13, -])); - -var hdr14 = match("HEADER#15:0026.upd.a/0", "message", "%{hfld1->} %{event_time->} %{hfld32->} %{hhostname->} %{p0}"); - -var all3 = all_match({ - processors: [ - hdr14, - dup135, - dup136, - ], - on_success: processor_chain([ - setc("header_id","0026.upd.a"), - ]), -}); - -var all4 = all_match({ - processors: [ - dup18, - dup135, - dup136, - ], - on_success: processor_chain([ - setc("header_id","0026.upd.b"), - ]), -}); - -var all5 = all_match({ - processors: [ - dup18, - dup135, - dup136, - ], - on_success: processor_chain([ - setc("header_id","0026"), - ]), -}); - -var hdr15 = match("HEADER#18:0014", "message", "%{month->} %{day->} %{time->} %{hfld1}[%{pid}]: %{messageid}[%{hpid}]: %{p0}", processor_chain([ - setc("header_id","0014"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld1"), - constant("["), - field("pid"), - constant("]: "), - field("messageid"), - constant("["), - field("hpid"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr16 = match("HEADER#19:0016", "message", "%{month->} %{day->} %{time->} %{hfld1}: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0016"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld1"), - constant(": "), - field("messageid"), - constant(": "), - field("p0"), - ], - }), -])); - -var hdr17 = match("HEADER#20:0017", "message", "%{month->} %{day->} %{time->} %{hfld1}[%{pid}]: %{messageid->} %{p0}", processor_chain([ - setc("header_id","0017"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld1"), - constant("["), - field("pid"), - constant("]: "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr18 = match("HEADER#21:0018", "message", "%{month->} %{day->} %{time->} %{hhost}: %{messageid}[%{pid}]: %{p0}", processor_chain([ - setc("header_id","0018"), - dup19, -])); - -var hdr19 = match("HEADER#22:0028", "message", "%{month->} %{day->} %{time->} %{hhost->} %{messageid}[%{pid}]: %{p0}", processor_chain([ - setc("header_id","0028"), - dup19, -])); - -var hdr20 = match("HEADER#23:0019", "message", "%{month->} %{day->} %{time->} %{hhost}: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0019"), - dup9, -])); - -var hdr21 = match("HEADER#24:0020", "message", "%{month->} %{day->} %{time->} %{messageid}[%{pid}]: %{p0}", processor_chain([ - setc("header_id","0020"), - dup19, -])); - -var hdr22 = match("HEADER#25:0021", "message", "%{month->} %{day->} %{time->} /%{messageid}: %{p0}", processor_chain([ - setc("header_id","0021"), - dup9, -])); - -var hdr23 = match("HEADER#26:0022", "message", "%{month->} %{day->} %{time->} %{messageid}: %{p0}", processor_chain([ - setc("header_id","0022"), - dup9, -])); - -var hdr24 = match("HEADER#27:0023", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhostname}: %{messageid}[%{pid}]: %{p0}", processor_chain([ - setc("header_id","0023"), - dup19, -])); - -var hdr25 = match("HEADER#28:0024", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhostname}: %{messageid}: %{p0}", processor_chain([ - setc("header_id","0024"), - dup9, -])); - -var hdr26 = match("HEADER#29:0025", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhostname}: %{hfld2->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0025"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr27 = match("HEADER#30:0031", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhostname}: %{messageid->} %{p0}", processor_chain([ - setc("header_id","0031"), - dup10, -])); - -var hdr28 = match("HEADER#31:0032", "message", "%{month->} %{day->} %{time->} %{hostip->} (%{hfld1}) %{hfld2->} %{messageid}[%{pid}]: %{p0}", processor_chain([ - setc("header_id","0032"), - dup19, -])); - -var hdr29 = match("HEADER#32:0033", "message", "%{month->} %{day->} %{time->} %{hfld1->} %{hhostname->} %{messageid}: %{p0}", processor_chain([ - setc("header_id","0033"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld1"), - constant(" "), - field("hhostname"), - constant(" "), - field("messageid"), - constant(": "), - field("p0"), - ], - }), -])); - -var hdr30 = match("HEADER#33:3336", "message", "%{month->} %{day->} %{time->} %{hhost->} %{process}[%{process_id}]: %{messageid}: %{payload}", processor_chain([ - setc("header_id","3336"), -])); - -var hdr31 = match("HEADER#34:3339", "message", "%{month->} %{day->} %{time->} %{hhost->} %{process}[%{process_id}]: %{messageid->} %{payload}", processor_chain([ - setc("header_id","3339"), -])); - -var hdr32 = match("HEADER#35:3337", "message", "%{month->} %{day->} %{time->} %{hhost->} %{messageid}: %{payload}", processor_chain([ - setc("header_id","3337"), -])); - -var hdr33 = match("HEADER#36:3341", "message", "%{hfld1->} %{hfld6->} %{hhostname->} %{hfld2->} %{hfld3->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","3341"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant(" "), - field("hfld3"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr34 = match("HEADER#37:3338", "message", "%{month->} %{day->} %{time->} %{hhost->} %{messageid->} %{payload}", processor_chain([ - setc("header_id","3338"), -])); - -var hdr35 = match("HEADER#38:3340/0", "message", "%{month->} %{day->} %{time->} %{hhost->} node%{hfld1}.fpc%{p0}", processor_chain([ - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hhost"), - constant(" node"), - field("hfld1"), - constant(".fpc"), - field("p0"), - ], - }), -])); - -var part8 = match("HEADER#38:3340/1_0", "nwparser.p0", "%{hfld2}.pic%{hfld3->} %{p0}"); - -var part9 = match("HEADER#38:3340/1_1", "nwparser.p0", "%{hfld2->} %{p0}"); - -var select3 = linear_select([ - part8, - part9, -]); - -var part10 = match("HEADER#38:3340/2", "nwparser.p0", "%{} %{p0}"); - -var all6 = all_match({ - processors: [ - hdr35, - select3, - part10, - ], - on_success: processor_chain([ - setc("header_id","3340"), - setc("messageid","node"), - ]), -}); - -var hdr36 = match("HEADER#39:9997/0_0", "message", "mgd[%{p0}"); - -var hdr37 = match("HEADER#39:9997/0_1", "message", "rpd[%{p0}"); - -var hdr38 = match("HEADER#39:9997/0_2", "message", "dcd[%{p0}"); - -var select4 = linear_select([ - hdr36, - hdr37, - hdr38, -]); - -var part11 = match("HEADER#39:9997/1", "nwparser.p0", "%{process_id}]:%{payload}"); - -var all7 = all_match({ - processors: [ - select4, - part11, - ], - on_success: processor_chain([ - setc("header_id","9997"), - dup20, - ]), -}); - -var hdr39 = match("HEADER#40:9995", "message", "%{month->} %{day->} %{time->} %{hhost->} %{hfld1->} %{hfld2->} %{messageid}[%{hfld3}]:%{p0}", processor_chain([ - setc("header_id","9995"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("hfld3"), - constant("]:"), - field("p0"), - ], - }), -])); - -var hdr40 = match("HEADER#41:9994", "message", "%{month->} %{day->} %{time->} %{hfld2->} %{hfld1->} qsfp %{p0}", processor_chain([ - setc("header_id","9994"), - setc("messageid","qsfp"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant(" "), - field("hfld1"), - constant(" qsfp "), - field("p0"), - ], - }), -])); - -var hdr41 = match("HEADER#42:9999", "message", "%{month->} %{day->} %{time->} %{hhost->} %{process}[%{process_id}]: %{hevent_type}: %{p0}", processor_chain([ - setc("header_id","9999"), - dup20, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hevent_type"), - constant(": "), - field("p0"), - ], - }), -])); - -var hdr42 = match("HEADER#43:9998", "message", "%{month->} %{day->} %{time->} %{hfld2->} %{process}: %{p0}", processor_chain([ - setc("header_id","9998"), - dup20, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant(" "), - field("process"), - constant(": "), - field("p0"), - ], - }), -])); - -var select5 = linear_select([ - hdr1, - hdr2, - hdr3, - all1, - all2, - hdr4, - hdr5, - hdr6, - hdr7, - hdr8, - hdr9, - hdr10, - hdr11, - hdr12, - hdr13, - all3, - all4, - all5, - hdr15, - hdr16, - hdr17, - hdr18, - hdr19, - hdr20, - hdr21, - hdr22, - hdr23, - hdr24, - hdr25, - hdr26, - hdr27, - hdr28, - hdr29, - hdr30, - hdr31, - hdr32, - hdr33, - hdr34, - all6, - all7, - hdr39, - hdr40, - hdr41, - hdr42, -]); - -var part12 = match("MESSAGE#0:/usr/sbin/sshd", "nwparser.payload", "%{process}[%{process_id}]: %{agent}[%{id}]: exit status %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","sshd exit status"), - dup23, -])); - -var msg1 = msg("/usr/sbin/sshd", part12); - -var part13 = match("MESSAGE#1:/usr/libexec/telnetd", "nwparser.payload", "%{process}[%{process_id}]: %{agent}[%{id}]: exit status %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","telnetd exit status"), - dup23, -])); - -var msg2 = msg("/usr/libexec/telnetd", part13); - -var part14 = match("MESSAGE#2:alarmd", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: License color=%{severity}, class=%{device}, reason=%{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Alarm Set or Cleared"), - dup23, -])); - -var msg3 = msg("alarmd", part14); - -var part15 = match("MESSAGE#3:bigd", "nwparser.payload", "%{process}: Node detected UP for %{node}", processor_chain([ - dup21, - dup22, - setc("event_description","Node detected UP"), - dup23, -])); - -var msg4 = msg("bigd", part15); - -var part16 = match("MESSAGE#4:bigd:01", "nwparser.payload", "%{process}: Monitor template id is %{id}", processor_chain([ - dup21, - dup22, - setc("event_description","Monitor template id"), - dup23, -])); - -var msg5 = msg("bigd:01", part16); - -var select6 = linear_select([ - msg4, - msg5, -]); - -var part17 = match("MESSAGE#5:bigpipe", "nwparser.payload", "%{process}: Loading the configuration file %{filename}", processor_chain([ - dup21, - dup22, - setc("event_description","Loading configuration file"), - dup23, -])); - -var msg6 = msg("bigpipe", part17); - -var part18 = match("MESSAGE#6:bigpipe:01", "nwparser.payload", "%{process}: Begin config install operation %{action}", processor_chain([ - dup21, - dup22, - setc("event_description","Begin config install operation"), - dup23, -])); - -var msg7 = msg("bigpipe:01", part18); - -var part19 = match("MESSAGE#7:bigpipe:02", "nwparser.payload", "%{process}: AUDIT -- Action %{action->} User: %{username}", processor_chain([ - dup21, - dup22, - setc("event_description","Audit"), - dup23, -])); - -var msg8 = msg("bigpipe:02", part19); - -var select7 = linear_select([ - msg6, - msg7, - msg8, -]); - -var part20 = match("MESSAGE#8:bigstart", "nwparser.payload", "%{process}: shutdown %{service}", processor_chain([ - dup21, - dup22, - setc("event_description","portal shutdown"), - dup23, -])); - -var msg9 = msg("bigstart", part20); - -var part21 = match("MESSAGE#9:cgatool", "nwparser.payload", "%{process}: %{event_type}: generated address is %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","cga address genration"), - dup23, -])); - -var msg10 = msg("cgatool", part21); - -var part22 = match("MESSAGE#10:chassisd:01", "nwparser.payload", "%{process}[%{process_id}]:%{fld12}", processor_chain([ - dup21, - dup22, - dup23, - dup24, -])); - -var msg11 = msg("chassisd:01", part22); - -var part23 = match("MESSAGE#11:checkd", "nwparser.payload", "%{process}: AUDIT -- Action %{action->} User: %{username}", processor_chain([ - dup21, - dup22, - dup25, - dup23, -])); - -var msg12 = msg("checkd", part23); - -var part24 = match("MESSAGE#12:checkd:01", "nwparser.payload", "%{process}: exiting", processor_chain([ - dup21, - dup22, - setc("event_description","checkd exiting"), - dup23, -])); - -var msg13 = msg("checkd:01", part24); - -var select8 = linear_select([ - msg12, - msg13, -]); - -var part25 = match("MESSAGE#13:cosd", "nwparser.payload", "%{process}[%{process_id}]: link protection %{dclass_counter1->} for intf %{interface}", processor_chain([ - dup21, - dup22, - setc("event_description","link protection for interface"), - dup23, -])); - -var msg14 = msg("cosd", part25); - -var part26 = match("MESSAGE#14:craftd", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}, %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","License expiration warning"), - dup23, -])); - -var msg15 = msg("craftd", part26); - -var part27 = match("MESSAGE#15:CRON/0", "nwparser.payload", "%{process}[%{process_id}]: (%{username}) %{p0}"); - -var part28 = match("MESSAGE#15:CRON/1_0", "nwparser.p0", "CMD (%{result})"); - -var part29 = match("MESSAGE#15:CRON/1_1", "nwparser.p0", "cmd='%{result}'"); - -var select9 = linear_select([ - part28, - part29, -]); - -var all8 = all_match({ - processors: [ - part27, - select9, - ], - on_success: processor_chain([ - dup21, - dup22, - dup26, - dup23, - ]), -}); - -var msg16 = msg("CRON", all8); - -var part30 = match("MESSAGE#16:Cmerror/0_0", "nwparser.payload", "%{hostname->} %{node}Cmerror: Level%{level}count increment %{dclass_counter1->} %{fld1}"); - -var part31 = match_copy("MESSAGE#16:Cmerror/0_1", "nwparser.payload", "fld2"); - -var select10 = linear_select([ - part30, - part31, -]); - -var all9 = all_match({ - processors: [ - select10, - ], - on_success: processor_chain([ - dup21, - dup23, - dup22, - ]), -}); - -var msg17 = msg("Cmerror", all9); - -var part32 = match("MESSAGE#17:cron", "nwparser.payload", "%{process}[%{process_id}]: (%{username}) %{action->} (%{filename})", processor_chain([ - dup21, - dup22, - setc("event_description","cron RELOAD"), - dup23, -])); - -var msg18 = msg("cron", part32); - -var part33 = match("MESSAGE#18:CROND", "nwparser.payload", "%{process}[%{process_id}]: (%{username}) CMD (%{action})", processor_chain([ - dup21, - dup22, - dup23, - dup24, -])); - -var msg19 = msg("CROND", part33); - -var part34 = match("MESSAGE#20:CROND:02", "nwparser.payload", "%{process}[%{process_id}]: pam_unix(crond:session): session closed for user %{username}", processor_chain([ - dup27, - dup22, - dup23, - dup24, -])); - -var msg20 = msg("CROND:02", part34); - -var select11 = linear_select([ - msg19, - msg20, -]); - -var part35 = match("MESSAGE#19:crond:01", "nwparser.payload", "%{process}[%{process_id}]: pam_unix(crond:session): session opened for user %{username->} by (uid=%{uid})", processor_chain([ - dup28, - dup22, - dup23, - dup24, -])); - -var msg21 = msg("crond:01", part35); - -var part36 = match("MESSAGE#21:dcd", "nwparser.payload", "%{process}[%{process_id}]: %{result->} Setting ignored, %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","Setting ignored"), - dup23, -])); - -var msg22 = msg("dcd", part36); - -var part37 = match("MESSAGE#22:EVENT/0", "nwparser.payload", "%{process}[%{process_id}]: EVENT %{event_type->} %{interface->} index %{resultcode->} %{p0}"); - -var part38 = match("MESSAGE#22:EVENT/1_0", "nwparser.p0", "%{saddr->} -> %{daddr->} \u003c\u003c%{p0}"); - -var part39 = match("MESSAGE#22:EVENT/1_1", "nwparser.p0", "\u003c\u003c%{p0}"); - -var select12 = linear_select([ - part38, - part39, -]); - -var part40 = match("MESSAGE#22:EVENT/2", "nwparser.p0", ">%{result}"); - -var all10 = all_match({ - processors: [ - part37, - select12, - part40, - ], - on_success: processor_chain([ - dup21, - dup22, - setc("event_description","EVENT"), - dup23, - ]), -}); - -var msg23 = msg("EVENT", all10); - -var part41 = match("MESSAGE#23:ftpd", "nwparser.payload", "%{process}[%{process_id}]: connection from %{saddr->} (%{shost})", processor_chain([ - setc("eventcategory","1802000000"), - dup22, - setc("event_description","ftpd connection"), - dup23, -])); - -var msg24 = msg("ftpd", part41); - -var part42 = match("MESSAGE#24:ha_rto_stats_handler", "nwparser.payload", "%{hostname->} %{node}ha_rto_stats_handler:%{fld12}", processor_chain([ - dup29, - dup23, - dup22, -])); - -var msg25 = msg("ha_rto_stats_handler", part42); - -var part43 = match("MESSAGE#25:hostinit", "nwparser.payload", "%{process}: %{obj_name->} -- LDAP Connection not bound correctly. %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","LDAP Connection not bound correctly"), - dup23, -])); - -var msg26 = msg("hostinit", part43); - -var part44 = match("MESSAGE#26:ifinfo", "nwparser.payload", "%{process}: %{service}: PIC_INFO debug> Added entry - %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","PIC_INFO debug - Added entry"), - dup23, -])); - -var msg27 = msg("ifinfo", part44); - -var part45 = match("MESSAGE#27:ifinfo:01", "nwparser.payload", "%{process}: %{service}: PIC_INFO debug> Initializing spu listtype %{resultcode}", processor_chain([ - dup21, - dup22, - setc("event_description","PIC_INFO debug Initializing spu"), - dup23, -])); - -var msg28 = msg("ifinfo:01", part45); - -var part46 = match("MESSAGE#28:ifinfo:02", "nwparser.payload", "%{process}: %{service}: PIC_INFO debug> %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","PIC_INFO debug delete from list"), - dup23, -])); - -var msg29 = msg("ifinfo:02", part46); - -var select13 = linear_select([ - msg27, - msg28, - msg29, -]); - -var part47 = match("MESSAGE#29:ifp_ifl_anydown_change_event", "nwparser.payload", "%{node->} %{action}> %{process}: IFL anydown change event: \"%{event_type}\"", processor_chain([ - dup21, - dup22, - setc("event_description","IFL anydown change event"), - dup23, -])); - -var msg30 = msg("ifp_ifl_anydown_change_event", part47); - -var part48 = match("MESSAGE#30:ifp_ifl_config_event", "nwparser.payload", "%{node->} %{action}> %{process}: IFL config: \"%{filename}\"", processor_chain([ - dup21, - dup22, - setc("event_description","ifp ifl config_event"), - dup23, -])); - -var msg31 = msg("ifp_ifl_config_event", part48); - -var part49 = match("MESSAGE#31:ifp_ifl_ext_chg", "nwparser.payload", "%{node->} %{process}: ifp ext piid %{parent_pid->} zone_id %{zone}", processor_chain([ - dup21, - dup22, - setc("event_description","ifp_ifl_ext_chg"), - dup23, -])); - -var msg32 = msg("ifp_ifl_ext_chg", part49); - -var part50 = match("MESSAGE#32:inetd", "nwparser.payload", "%{process}[%{process_id}]: %{protocol->} from %{saddr->} exceeded counts/min (%{result})", processor_chain([ - dup30, - dup22, - setc("event_description","connection exceeded count limit"), - dup23, -])); - -var msg33 = msg("inetd", part50); - -var part51 = match("MESSAGE#33:inetd:01", "nwparser.payload", "%{process}[%{process_id}]: %{agent}[%{id}]: exited, status %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","exited"), - dup23, -])); - -var msg34 = msg("inetd:01", part51); - -var select14 = linear_select([ - msg33, - msg34, -]); - -var part52 = match("MESSAGE#34:init:04", "nwparser.payload", "%{process}: %{event_type->} current_mode=%{protocol}, requested_mode=%{result}, cmd=%{action}", processor_chain([ - dup21, - dup22, - dup31, - dup23, -])); - -var msg35 = msg("init:04", part52); - -var part53 = match("MESSAGE#35:init", "nwparser.payload", "%{process}: %{event_type->} mode=%{protocol->} cmd=%{action->} master_mode=%{result}", processor_chain([ - dup21, - dup22, - dup31, - dup23, -])); - -var msg36 = msg("init", part53); - -var part54 = match("MESSAGE#36:init:01", "nwparser.payload", "%{process}: failure target for routing set to %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","failure target for routing set"), - dup23, -])); - -var msg37 = msg("init:01", part54); - -var part55 = match("MESSAGE#37:init:02", "nwparser.payload", "%{process}: ntp (PID %{child_pid}) started", processor_chain([ - dup21, - dup22, - setc("event_description","ntp started"), - dup23, -])); - -var msg38 = msg("init:02", part55); - -var part56 = match("MESSAGE#38:init:03", "nwparser.payload", "%{process}: product mask %{info->} model %{dclass_counter1}", processor_chain([ - dup21, - dup22, - setc("event_description","product mask and model info"), - dup23, -])); - -var msg39 = msg("init:03", part56); - -var select15 = linear_select([ - msg35, - msg36, - msg37, - msg38, - msg39, -]); - -var part57 = match("MESSAGE#39:ipc_msg_write", "nwparser.payload", "%{node->} %{process}: IPC message type: %{event_type}, subtype: %{resultcode->} exceeds MTU, mtu %{dclass_counter1}, length %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","IPC message exceeds MTU"), - dup23, -])); - -var msg40 = msg("ipc_msg_write", part57); - -var part58 = match("MESSAGE#40:connection_established", "nwparser.payload", "%{process}: %{service}: conn established: listener idx=%{dclass_counter1->} tnpaddr=%{dclass_counter2}", processor_chain([ - dup28, - dup22, - setc("event_description","listener connection established"), - dup23, -])); - -var msg41 = msg("connection_established", part58); - -var part59 = match("MESSAGE#41:connection_dropped/0", "nwparser.payload", "%{process}: %{p0}"); - -var part60 = match("MESSAGE#41:connection_dropped/1_0", "nwparser.p0", "%{result}, connection dropped - src %{saddr}:%{sport->} dest %{daddr}:%{dport}"); - -var part61 = match("MESSAGE#41:connection_dropped/1_1", "nwparser.p0", "%{result}: conn dropped: listener idx=%{dclass_counter1->} tnpaddr=%{dclass_counter2}"); - -var select16 = linear_select([ - part60, - part61, -]); - -var all11 = all_match({ - processors: [ - part59, - select16, - ], - on_success: processor_chain([ - dup27, - dup22, - setc("event_description","connection dropped"), - dup23, - ]), -}); - -var msg42 = msg("connection_dropped", all11); - -var part62 = match("MESSAGE#42:kernel", "nwparser.payload", "%{process}: %{interface}: Asserting SONET alarm(s) %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","Asserting SONET alarm(s)"), - dup23, -])); - -var msg43 = msg("kernel", part62); - -var part63 = match("MESSAGE#43:kernel:01", "nwparser.payload", "%{process}: %{interface->} down: %{result}.", processor_chain([ - dup21, - dup22, - setc("event_description","interface down"), - dup23, -])); - -var msg44 = msg("kernel:01", part63); - -var part64 = match("MESSAGE#44:kernel:02", "nwparser.payload", "%{process}: %{interface}: loopback suspected; %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","loopback suspected om interface"), - dup23, -])); - -var msg45 = msg("kernel:02", part64); - -var part65 = match("MESSAGE#45:kernel:03", "nwparser.payload", "%{process}: %{service}: soreceive() error %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","soreceive error"), - dup23, -])); - -var msg46 = msg("kernel:03", part65); - -var part66 = match("MESSAGE#46:kernel:04", "nwparser.payload", "%{process}: %{service->} !VALID(state 4)->%{result}", processor_chain([ - dup21, - dup22, - setc("event_description","pfe_peer_alloc state 4"), - dup23, -])); - -var msg47 = msg("kernel:04", part66); - -var part67 = match("MESSAGE#47:kernel:05", "nwparser.payload", "%{fld1->} %{hostip->} (%{fld2}) %{fld3->} %{process}[%{process_id}]: NTP Server %{result}", processor_chain([ - dup21, - dup22, - dup32, - dup23, -])); - -var msg48 = msg("kernel:05", part67); - -var part68 = match("MESSAGE#48:kernel:06", "nwparser.payload", "%{fld1->} %{hostip->} %{process}[%{process_id}]: NTP Server %{result}", processor_chain([ - dup21, - dup22, - dup32, - dup23, -])); - -var msg49 = msg("kernel:06", part68); - -var select17 = linear_select([ - msg41, - msg42, - msg43, - msg44, - msg45, - msg46, - msg47, - msg48, - msg49, -]); - -var part69 = match("MESSAGE#49:successful_login", "nwparser.payload", "%{process}: login from %{saddr->} on %{interface->} as %{username}", processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup37, - dup22, - setc("event_description","successful user login"), - dup23, -])); - -var msg50 = msg("successful_login", part69); - -var part70 = match("MESSAGE#50:login_attempt", "nwparser.payload", "%{process}: Login attempt for user %{username->} from host %{hostip}", processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup22, - setc("event_description","user login attempt"), - dup23, -])); - -var msg51 = msg("login_attempt", part70); - -var part71 = match("MESSAGE#51:login", "nwparser.payload", "%{process}: PAM module %{dclass_counter1->} returned: %{space}[%{resultcode}]%{result}", processor_chain([ - dup33, - dup34, - dup37, - dup22, - setc("event_description","PAM module return from login"), - dup23, -])); - -var msg52 = msg("login", part71); - -var select18 = linear_select([ - msg50, - msg51, - msg52, -]); - -var part72 = match("MESSAGE#52:lsys_ssam_handler", "nwparser.payload", "%{node->} %{process}: processing lsys root-logical-system %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","processing lsys root-logical-system"), - dup23, -])); - -var msg53 = msg("lsys_ssam_handler", part72); - -var part73 = match("MESSAGE#53:mcsn", "nwparser.payload", "%{process}[%{process_id}]: Removing mif from group [%{group}] %{space->} %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Removing mif from group"), - dup23, -])); - -var msg54 = msg("mcsn", part73); - -var part74 = match("MESSAGE#54:mrvl_dfw_log_effuse_status", "nwparser.payload", "%{process}: Firewall rows could not be redirected on device %{device}.", processor_chain([ - dup30, - dup22, - setc("event_description","Firewall rows could not be redirected on device"), - dup23, -])); - -var msg55 = msg("mrvl_dfw_log_effuse_status", part74); - -var part75 = match("MESSAGE#55:MRVL-L2", "nwparser.payload", "%{process}:%{action}(),%{process_id}:MFilter (%{filter}) already exists", processor_chain([ - dup30, - dup22, - setc("event_description","mfilter already exists for add"), - dup23, -])); - -var msg56 = msg("MRVL-L2", part75); - -var part76 = match("MESSAGE#56:profile_ssam_handler", "nwparser.payload", "%{node->} %{process}: processing profile SP-root %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","processing profile SP-root"), - dup23, -])); - -var msg57 = msg("profile_ssam_handler", part76); - -var part77 = match("MESSAGE#57:pst_nat_binding_set_profile", "nwparser.payload", "%{node->} %{process}: %{event_source}: can't get resource bucket %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","can't get resource bucket"), - dup23, -])); - -var msg58 = msg("pst_nat_binding_set_profile", part77); - -var part78 = match("MESSAGE#58:task_reconfigure", "nwparser.payload", "%{process}[%{process_id}]: task_reconfigure %{action}", processor_chain([ - dup21, - dup22, - setc("event_description","reinitializing done"), - dup23, -])); - -var msg59 = msg("task_reconfigure", part78); - -var part79 = match("MESSAGE#59:tnetd/0_0", "nwparser.payload", "%{process}[%{process_id}]:%{service}[%{fld1}]: exit status%{resultcode}"); - -var part80 = match_copy("MESSAGE#59:tnetd/0_1", "nwparser.payload", "fld3"); - -var select19 = linear_select([ - part79, - part80, -]); - -var all12 = all_match({ - processors: [ - select19, - ], - on_success: processor_chain([ - dup21, - dup22, - dup23, - dup24, - ]), -}); - -var msg60 = msg("tnetd", all12); - -var part81 = match("MESSAGE#60:PFEMAN", "nwparser.payload", "%{process}: Session manager active", processor_chain([ - dup21, - dup22, - setc("event_description","Session manager active"), - dup23, -])); - -var msg61 = msg("PFEMAN", part81); - -var part82 = match("MESSAGE#61:mgd", "nwparser.payload", "%{process}[%{process_id}]: Could not send message to %{service}", processor_chain([ - dup30, - dup22, - setc("event_description","Could not send message to service"), - dup23, -])); - -var msg62 = msg("mgd", part82); - -var part83 = match("MESSAGE#62:Resolve", "nwparser.payload", "Resolve request came for an address matching on Wrong nh nh:%{result}, %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","Resolve request came for an address matching on Wrong nh"), - dup23, -])); - -var msg63 = msg("Resolve", part83); - -var part84 = match("MESSAGE#63:respawn", "nwparser.payload", "%{process}: %{service->} exited with status = %{resultcode}", processor_chain([ - dup21, - dup22, - setc("event_description","service exited with status"), - dup23, -])); - -var msg64 = msg("respawn", part84); - -var part85 = match("MESSAGE#64:root", "nwparser.payload", "%{process}: %{node}: This system does not have 3-DNS or Link Controller enabled", processor_chain([ - dup30, - dup22, - setc("event_description","system does not have 3-DNS or Link Controller enabled"), - dup23, -])); - -var msg65 = msg("root", part85); - -var part86 = match("MESSAGE#65:rpd", "nwparser.payload", "%{process}[%{process_id}]: Received %{result->} for intf device %{interface}; mc_ae_id %{dclass_counter1}, status %{resultcode}", processor_chain([ - dup21, - dup22, - setc("event_description","Received data for interface"), - dup23, -])); - -var msg66 = msg("rpd", part86); - -var part87 = match("MESSAGE#66:rpd:01", "nwparser.payload", "%{process}[%{process_id}]: RSVP neighbor %{daddr->} up on interface %{interface}", processor_chain([ - dup21, - dup22, - setc("event_description","RSVP neighbor up on interface "), - dup23, -])); - -var msg67 = msg("rpd:01", part87); - -var part88 = match("MESSAGE#67:rpd:02", "nwparser.payload", "%{process}[%{process_id}]: %{saddr->} (%{shost}): reseting pending active connection", processor_chain([ - dup21, - dup22, - setc("event_description","reseting pending active connection"), - dup23, -])); - -var msg68 = msg("rpd:02", part88); - -var part89 = match("MESSAGE#68:rpd_proceeding", "nwparser.payload", "%{process}: proceeding. %{param}", processor_chain([ - dup21, - dup22, - dup38, - dup23, -])); - -var msg69 = msg("rpd_proceeding", part89); - -var select20 = linear_select([ - msg66, - msg67, - msg68, - msg69, -]); - -var part90 = match("MESSAGE#69:rshd", "nwparser.payload", "%{process}[%{process_id}]: %{username->} as root: cmd='%{action}'", processor_chain([ - dup21, - dup22, - setc("event_description","user issuing command as root"), - dup23, -])); - -var msg70 = msg("rshd", part90); - -var part91 = match("MESSAGE#70:sfd", "nwparser.payload", "%{process}: Waiting on accept", processor_chain([ - dup21, - dup22, - setc("event_description","sfd waiting on accept"), - dup23, -])); - -var msg71 = msg("sfd", part91); - -var part92 = match("MESSAGE#71:sshd", "nwparser.payload", "%{process}[%{process_id}]: Accepted password for %{username->} from %{saddr->} port %{sport->} %{protocol}", processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup37, - dup22, - setc("event_description","Accepted password"), - dup23, -])); - -var msg72 = msg("sshd", part92); - -var part93 = match("MESSAGE#73:sshd:02", "nwparser.payload", "%{process}[%{process_id}]: Received disconnect from %{shost}: %{fld1}: %{result}", processor_chain([ - dup27, - dup22, - setc("event_description","Received disconnect"), - dup23, -])); - -var msg73 = msg("sshd:02", part93); - -var part94 = match("MESSAGE#74:sshd:03", "nwparser.payload", "%{process}[%{process_id}]: Did not receive identification string from %{saddr}", processor_chain([ - dup30, - dup22, - setc("result","no identification string"), - setc("event_description","Did not receive identification string from peer"), - dup23, -])); - -var msg74 = msg("sshd:03", part94); - -var part95 = match("MESSAGE#75:sshd:04", "nwparser.payload", "%{process}[%{process_id}]: Could not write ident string to %{dhost}", processor_chain([ - dup30, - dup22, - setc("event_description","Could not write ident string"), - dup23, -])); - -var msg75 = msg("sshd:04", part95); - -var part96 = match("MESSAGE#76:sshd:05", "nwparser.payload", "%{process}[%{process_id}]: subsystem request for netconf", processor_chain([ - dup21, - dup22, - setc("event_description","subsystem request for netconf"), - dup23, -])); - -var msg76 = msg("sshd:05", part96); - -var part97 = match("MESSAGE#77:sshd:06/2", "nwparser.p0", "sendmsg to %{saddr}(%{shost}).%{sport}: %{info}"); - -var all13 = all_match({ - processors: [ - dup39, - dup137, - part97, - ], - on_success: processor_chain([ - dup29, - dup22, - setc("event_description","send message stats"), - dup23, - ]), -}); - -var msg77 = msg("sshd:06", all13); - -var part98 = match("MESSAGE#78:sshd:07/2", "nwparser.p0", "Added radius server %{saddr}(%{shost})"); - -var all14 = all_match({ - processors: [ - dup39, - dup137, - part98, - ], - on_success: processor_chain([ - dup42, - setc("ec_theme","Configuration"), - setc("ec_activity","Modify"), - dup37, - dup22, - setc("event_description","Added radius server"), - dup23, - ]), -}); - -var msg78 = msg("sshd:07", all14); - -var part99 = match("MESSAGE#79:sshd:08", "nwparser.payload", "%{process}[%{process_id}]: %{result}: %{space->} [%{resultcode}]authentication error", processor_chain([ - setc("eventcategory","1301020000"), - dup34, - dup43, - dup22, - setc("event_description","authentication error"), - dup23, -])); - -var msg79 = msg("sshd:08", part99); - -var part100 = match("MESSAGE#80:sshd:09", "nwparser.payload", "%{process}[%{process_id}]: unrecognized attribute in %{policyname}: %{change_attribute}", processor_chain([ - dup30, - dup22, - setc("event_description","unrecognized attribute in policy"), - dup23, -])); - -var msg80 = msg("sshd:09", part100); - -var part101 = match("MESSAGE#81:sshd:10", "nwparser.payload", "%{process}: PAM module %{dclass_counter1->} returned: %{space}[%{resultcode}]%{result}", processor_chain([ - dup44, - dup34, - dup43, - dup22, - setc("event_description","PAM module return from sshd"), - dup23, -])); - -var msg81 = msg("sshd:10", part101); - -var part102 = match("MESSAGE#82:sshd:11", "nwparser.payload", "%{process}: PAM authentication chain returned: %{space}[%{resultcode}]%{result}", processor_chain([ - dup44, - dup34, - dup43, - dup22, - setc("event_description","PAM authentication chain return"), - dup23, -])); - -var msg82 = msg("sshd:11", part102); - -var part103 = match("MESSAGE#83:sshd:12", "nwparser.payload", "%{process}: %{severity}: can't get client address: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","can't get client address"), - dup23, -])); - -var msg83 = msg("sshd:12", part103); - -var part104 = match("MESSAGE#84:sshd:13", "nwparser.payload", "%{process}: auth server unresponsive", processor_chain([ - dup30, - dup22, - setc("event_description","auth server unresponsive"), - dup23, -])); - -var msg84 = msg("sshd:13", part104); - -var part105 = match("MESSAGE#85:sshd:14", "nwparser.payload", "%{process}: %{service}: No valid RADIUS responses received", processor_chain([ - dup30, - dup22, - setc("event_description","No valid RADIUS responses received"), - dup23, -])); - -var msg85 = msg("sshd:14", part105); - -var part106 = match("MESSAGE#86:sshd:15", "nwparser.payload", "%{process}: Moving to next server: %{saddr}(%{shost}).%{sport}", processor_chain([ - dup21, - dup22, - setc("event_description","Moving to next server"), - dup23, -])); - -var msg86 = msg("sshd:15", part106); - -var part107 = match("MESSAGE#87:sshd:16", "nwparser.payload", "%{fld1->} sshd: SSHD_LOGIN_FAILED: Login failed for user '%{username}' from host '%{hostip}'.", processor_chain([ - dup44, - dup34, - dup43, - dup22, - setc("event_description","Login failed for user"), - dup23, -])); - -var msg87 = msg("sshd:16", part107); - -var select21 = linear_select([ - msg72, - msg73, - msg74, - msg75, - msg76, - msg77, - msg78, - msg79, - msg80, - msg81, - msg82, - msg83, - msg84, - msg85, - msg86, - msg87, -]); - -var part108 = match("MESSAGE#72:Failed:05/0", "nwparser.payload", "%{process}[%{process_id}]: Failed password for %{p0}"); - -var part109 = match("MESSAGE#72:Failed:05/1_0", "nwparser.p0", "illegal user %{p0}"); - -var part110 = match("MESSAGE#72:Failed:05/1_1", "nwparser.p0", "invalid user %{p0}"); - -var select22 = linear_select([ - part109, - part110, - dup45, -]); - -var part111 = match("MESSAGE#72:Failed:05/2", "nwparser.p0", "%{username->} from %{saddr->} port %{sport->} %{protocol}"); - -var all15 = all_match({ - processors: [ - part108, - select22, - part111, - ], - on_success: processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - setc("event_description","authentication failure"), - dup23, - ]), -}); - -var msg88 = msg("Failed:05", all15); - -var part112 = match("MESSAGE#746:Failed/0", "nwparser.payload", "%{hostname->} %{process}[%{process_id}]: Failed to resolve ipv%{p0}"); - -var part113 = match("MESSAGE#746:Failed/1_0", "nwparser.p0", "4%{p0}"); - -var part114 = match("MESSAGE#746:Failed/1_1", "nwparser.p0", "6%{p0}"); - -var select23 = linear_select([ - part113, - part114, -]); - -var part115 = match("MESSAGE#746:Failed/2", "nwparser.p0", "%{}addresses for domain name %{sdomain}"); - -var all16 = all_match({ - processors: [ - part112, - select23, - part115, - ], - on_success: processor_chain([ - dup46, - dup47, - dup23, - dup22, - ]), -}); - -var msg89 = msg("Failed", all16); - -var part116 = match("MESSAGE#767:Failed:01", "nwparser.payload", "%{hostname->} %{process}[%{process_id}]: %{fld1}", processor_chain([ - dup46, - dup23, - dup22, -])); - -var msg90 = msg("Failed:01", part116); - -var part117 = match("MESSAGE#768:Failed:02/0_0", "nwparser.payload", "%{fld1->} to create a route if table for Multiservice"); - -var part118 = match_copy("MESSAGE#768:Failed:02/0_1", "nwparser.payload", "fld10"); - -var select24 = linear_select([ - part117, - part118, -]); - -var all17 = all_match({ - processors: [ - select24, - ], - on_success: processor_chain([ - dup46, - dup23, - dup22, - setf("hostname","hfld1"), - ]), -}); - -var msg91 = msg("Failed:02", all17); - -var select25 = linear_select([ - msg88, - msg89, - msg90, - msg91, -]); - -var part119 = match("MESSAGE#88:syslogd", "nwparser.payload", "%{process}: restart", processor_chain([ - dup21, - dup22, - setc("event_description","syslog daemon restart"), - dup23, -])); - -var msg92 = msg("syslogd", part119); - -var part120 = match("MESSAGE#89:ucd-snmp", "nwparser.payload", "%{process}[%{process_id}]: AUDIT -- Action %{action->} User: %{username}", processor_chain([ - dup21, - dup22, - dup25, - dup23, -])); - -var msg93 = msg("ucd-snmp", part120); - -var part121 = match("MESSAGE#90:ucd-snmp:01", "nwparser.payload", "%{process}[%{process_id}]: Received TERM or STOP signal %{space->} %{result}.", processor_chain([ - dup21, - dup22, - setc("event_description","Received TERM or STOP signal"), - dup23, -])); - -var msg94 = msg("ucd-snmp:01", part121); - -var select26 = linear_select([ - msg93, - msg94, -]); - -var part122 = match("MESSAGE#91:usp_ipc_client_reconnect", "nwparser.payload", "%{node->} %{process}: failed to connect to the server: %{result->} (%{resultcode})", processor_chain([ - dup27, - dup22, - setc("event_description","failed to connect to the server"), - dup23, -])); - -var msg95 = msg("usp_ipc_client_reconnect", part122); - -var part123 = match("MESSAGE#92:usp_trace_ipc_disconnect", "nwparser.payload", "%{node->} %{process}:Trace client disconnected. %{result}", processor_chain([ - dup27, - dup22, - setc("event_description","Trace client disconnected"), - dup23, -])); - -var msg96 = msg("usp_trace_ipc_disconnect", part123); - -var part124 = match("MESSAGE#93:usp_trace_ipc_reconnect", "nwparser.payload", "%{node->} %{process}:USP trace client cannot reconnect to server", processor_chain([ - dup30, - dup22, - setc("event_description","USP trace client cannot reconnect to server"), - dup23, -])); - -var msg97 = msg("usp_trace_ipc_reconnect", part124); - -var part125 = match("MESSAGE#94:uspinfo", "nwparser.payload", "%{process}: flow_print_session_summary_output received %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","flow_print_session_summary_output received"), - dup23, -])); - -var msg98 = msg("uspinfo", part125); - -var part126 = match("MESSAGE#95:Version", "nwparser.payload", "Version %{version->} by builder on %{event_time_string}", processor_chain([ - dup21, - dup22, - setc("event_description","Version build date"), - dup23, -])); - -var msg99 = msg("Version", part126); - -var part127 = match("MESSAGE#96:xntpd", "nwparser.payload", "%{process}[%{process_id}]: frequency initialized %{result->} from %{filename}", processor_chain([ - dup21, - dup22, - setc("event_description","frequency initialized from file"), - dup23, -])); - -var msg100 = msg("xntpd", part127); - -var part128 = match("MESSAGE#97:xntpd:01", "nwparser.payload", "%{process}[%{process_id}]: ntpd %{version->} %{event_time_string->} (%{resultcode})", processor_chain([ - dup21, - dup22, - setc("event_description","nptd version build"), - dup23, -])); - -var msg101 = msg("xntpd:01", part128); - -var part129 = match("MESSAGE#98:xntpd:02", "nwparser.payload", "%{process}: kernel time sync enabled %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","kernel time sync enabled"), - dup23, -])); - -var msg102 = msg("xntpd:02", part129); - -var part130 = match("MESSAGE#99:xntpd:03", "nwparser.payload", "%{process}[%{process_id}]: NTP Server %{result}", processor_chain([ - dup21, - dup22, - dup32, - dup23, -])); - -var msg103 = msg("xntpd:03", part130); - -var select27 = linear_select([ - msg100, - msg101, - msg102, - msg103, -]); - -var part131 = match("MESSAGE#100:last", "nwparser.payload", "last message repeated %{dclass_counter1->} times", processor_chain([ - dup21, - dup22, - setc("event_description","last message repeated"), - dup23, -])); - -var msg104 = msg("last", part131); - -var part132 = match("MESSAGE#739:last:01", "nwparser.payload", "message repeated %{dclass_counter1->} times", processor_chain([ - dup48, - dup47, - dup23, - dup22, - dup24, -])); - -var msg105 = msg("last:01", part132); - -var select28 = linear_select([ - msg104, - msg105, -]); - -var part133 = match("MESSAGE#101:BCHIP", "nwparser.payload", "%{process->} %{device}: cannot write ucode mask reg", processor_chain([ - dup30, - dup22, - setc("event_description","cannot write ucode mask reg"), - dup23, -])); - -var msg106 = msg("BCHIP", part133); - -var part134 = match("MESSAGE#102:CM", "nwparser.payload", "%{process}(%{fld1}): Slot %{device}: On-line", processor_chain([ - dup21, - dup22, - setc("event_description","Slot on-line"), - dup23, -])); - -var msg107 = msg("CM", part134); - -var part135 = match("MESSAGE#103:COS", "nwparser.payload", "%{process}: Received FC->Q map, %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","Received FC Q map"), - dup23, -])); - -var msg108 = msg("COS", part135); - -var part136 = match("MESSAGE#104:COSFPC", "nwparser.payload", "%{process}: ifd %{resultcode}: %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","ifd error"), - dup23, -])); - -var msg109 = msg("COSFPC", part136); - -var part137 = match("MESSAGE#105:COSMAN", "nwparser.payload", "%{process}: %{service}: delete class_to_ifl table %{dclass_counter1}, ifl %{dclass_counter2}", processor_chain([ - dup21, - dup22, - setc("event_description","delete class to ifl link"), - dup23, -])); - -var msg110 = msg("COSMAN", part137); - -var part138 = match("MESSAGE#106:RDP", "nwparser.payload", "%{process}: Keepalive timeout for rdp.(%{interface}).(%{device}) (%{result})", processor_chain([ - dup30, - dup22, - setc("event_description","Keepalive timeout"), - dup23, -])); - -var msg111 = msg("RDP", part138); - -var part139 = match("MESSAGE#107:SNTPD", "nwparser.payload", "%{process}: Initial time of day set", processor_chain([ - dup30, - dup22, - setc("event_description","Initial time of day set"), - dup23, -])); - -var msg112 = msg("SNTPD", part139); - -var part140 = match("MESSAGE#108:SSB", "nwparser.payload", "%{process}(%{fld1}): Slot %{device}, serial number S/N %{serial_number}.", processor_chain([ - dup21, - dup22, - setc("event_description","Slot serial number"), - dup23, -])); - -var msg113 = msg("SSB", part140); - -var part141 = match("MESSAGE#109:ACCT_ACCOUNTING_FERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unexpected error %{result->} from file %{filename}", processor_chain([ - dup30, - dup22, - setc("event_description","Unexpected error"), - dup23, -])); - -var msg114 = msg("ACCT_ACCOUNTING_FERROR", part141); - -var part142 = match("MESSAGE#110:ACCT_ACCOUNTING_FOPEN_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to open file %{filename}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Failed to open file"), - dup23, -])); - -var msg115 = msg("ACCT_ACCOUNTING_FOPEN_ERROR", part142); - -var part143 = match("MESSAGE#111:ACCT_ACCOUNTING_SMALL_FILE_SIZE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: File %{filename->} size (%{dclass_counter1}) is smaller than record size (%{dclass_counter2})", processor_chain([ - dup49, - dup22, - setc("event_description","File size mismatch"), - dup23, -])); - -var msg116 = msg("ACCT_ACCOUNTING_SMALL_FILE_SIZE", part143); - -var part144 = match("MESSAGE#112:ACCT_BAD_RECORD_FORMAT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Invalid statistics record: %{result}", processor_chain([ - dup49, - dup22, - setc("event_description","Invalid statistics record"), - dup23, -])); - -var msg117 = msg("ACCT_BAD_RECORD_FORMAT", part144); - -var part145 = match("MESSAGE#113:ACCT_CU_RTSLIB_error", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{filename->} getting class usage statistics for interface %{interface}: %{result}", processor_chain([ - dup49, - dup22, - setc("event_description","Class usage statistics error for interface"), - dup23, -])); - -var msg118 = msg("ACCT_CU_RTSLIB_error", part145); - -var part146 = match("MESSAGE#114:ACCT_GETHOSTNAME_error/1_0", "nwparser.p0", "Error %{resultcode->} trying %{p0}"); - -var part147 = match("MESSAGE#114:ACCT_GETHOSTNAME_error/1_1", "nwparser.p0", "trying %{p0}"); - -var select29 = linear_select([ - part146, - part147, -]); - -var part148 = match("MESSAGE#114:ACCT_GETHOSTNAME_error/2", "nwparser.p0", "to get hostname%{}"); - -var all18 = all_match({ - processors: [ - dup50, - select29, - part148, - ], - on_success: processor_chain([ - dup49, - dup22, - setc("event_description","error trying to get hostname"), - dup23, - ]), -}); - -var msg119 = msg("ACCT_GETHOSTNAME_error", all18); - -var part149 = match("MESSAGE#115:ACCT_MALLOC_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Memory allocation failed while reallocating %{obj_name}", processor_chain([ - dup51, - dup22, - setc("event_description","Memory allocation failure"), - dup23, -])); - -var msg120 = msg("ACCT_MALLOC_FAILURE", part149); - -var part150 = match("MESSAGE#116:ACCT_UNDEFINED_COUNTER_NAME", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{filename->} in accounting profile %{dclass_counter1->} is not defined in a firewall using this filter profile", processor_chain([ - dup30, - dup22, - setc("event_description","Accounting profile counter not defined in firewall"), - dup23, -])); - -var msg121 = msg("ACCT_UNDEFINED_COUNTER_NAME", part150); - -var part151 = match("MESSAGE#117:ACCT_XFER_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type->} %{result}: %{disposition}", processor_chain([ - dup30, - dup22, - setc("event_description","ACCT_XFER_FAILED"), - dup23, -])); - -var msg122 = msg("ACCT_XFER_FAILED", part151); - -var part152 = match("MESSAGE#118:ACCT_XFER_POPEN_FAIL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type->} %{result}: in invoking command command to transfer file %{filename}", processor_chain([ - dup30, - dup22, - setc("event_description","POPEN FAIL invoking command command to transfer file"), - dup23, -])); - -var msg123 = msg("ACCT_XFER_POPEN_FAIL", part152); - -var part153 = match("MESSAGE#119:APPQOS_LOG_EVENT", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} timestamp=\"%{result}\" message-type=\"%{info}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" protocol-name=\"%{protocol}\" application-name=\"%{application}\" rule-set-name=\"%{rule_group}\" rule-name=\"%{rulename}\" action=\"%{action}\" argument=\"%{fld2}\" argument1=\"%{fld3}\"]", processor_chain([ - dup28, - dup22, - dup52, -])); - -var msg124 = msg("APPQOS_LOG_EVENT", part153); - -var part154 = match("MESSAGE#120:APPTRACK_SESSION_CREATE", "nwparser.payload", "%{event_type}: AppTrack session created %{saddr}/%{sport}->%{daddr}/%{dport->} %{service->} %{protocol->} %{fld11->} %{hostip}/%{network_port}->%{dtransaddr}/%{dtransport->} %{rulename->} %{rule_template->} %{fld12->} %{policyname->} %{src_zone->} %{dst_zone->} %{sessionid->} %{username->} %{fld10}", processor_chain([ - dup28, - dup53, - dup54, - dup22, - setc("result","AppTrack session created"), - dup23, -])); - -var msg125 = msg("APPTRACK_SESSION_CREATE", part154); - -var part155 = match("MESSAGE#121:APPTRACK_SESSION_CLOSE", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} reason=\"%{result}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" service-name=\"%{service}\" nat-source-address=\"%{hostip}\" nat-source-port=\"%{network_port}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\" src-nat-rule-name=\"%{rulename}\" dst-nat-rule-name=\"%{rule_template}\" protocol-id=\"%{protocol}\" policy-name=\"%{policyname}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" session-id-32=\"%{sessionid}\" packets-from-client=\"%{packets}\" bytes-from-client=\"%{rbytes}\" packets-from-server=\"%{dclass_counter1}\" bytes-from-server=\"%{sbytes}\" elapsed-time=\"%{duration}\"]", processor_chain([ - dup28, - dup53, - dup55, - dup22, - dup52, -])); - -var msg126 = msg("APPTRACK_SESSION_CLOSE", part155); - -var part156 = match("MESSAGE#122:APPTRACK_SESSION_CLOSE:01", "nwparser.payload", "%{event_type}: %{result}: %{saddr}/%{sport}->%{daddr}/%{dport->} %{service->} %{protocol->} %{fld11->} %{hostip}/%{network_port}->%{dtransaddr}/%{dtransport->} %{rulename->} %{rule_template->} %{fld12->} %{policyname->} %{src_zone->} %{dst_zone->} %{sessionid->} %{packets}(%{rbytes}) %{dclass_counter1}(%{sbytes}) %{duration->} %{username->} %{fld10}", processor_chain([ - dup28, - dup53, - dup55, - dup22, - dup23, -])); - -var msg127 = msg("APPTRACK_SESSION_CLOSE:01", part156); - -var select30 = linear_select([ - msg126, - msg127, -]); - -var part157 = match("MESSAGE#123:APPTRACK_SESSION_VOL_UPDATE", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" service-name=\"%{service}\" nat-source-address=\"%{hostip}\" nat-source-port=\"%{network_port}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\" src-nat-rule-name=\"%{rulename}\" dst-nat-rule-name=\"%{rule_template}\" protocol-id=\"%{protocol}\" policy-name=\"%{policyname}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" session-id-32=\"%{sessionid}\" packets-from-client=\"%{packets}\" bytes-from-client=\"%{rbytes}\" packets-from-server=\"%{dclass_counter1}\" bytes-from-server=\"%{sbytes}\" elapsed-time=\"%{duration}\"]", processor_chain([ - dup28, - dup53, - dup22, - dup52, -])); - -var msg128 = msg("APPTRACK_SESSION_VOL_UPDATE", part157); - -var part158 = match("MESSAGE#124:APPTRACK_SESSION_VOL_UPDATE:01", "nwparser.payload", "%{event_type}: %{result}: %{saddr}/%{sport}->%{daddr}/%{dport->} %{service->} %{protocol->} %{fld11->} %{hostip}/%{network_port}->%{dtransaddr}/%{dtransport->} %{rulename->} %{rule_template->} %{fld12->} %{policyname->} %{src_zone->} %{dst_zone->} %{sessionid->} %{packets}(%{rbytes}) %{dclass_counter1}(%{sbytes}) %{duration->} %{username->} %{fld10}", processor_chain([ - dup28, - dup53, - dup22, - dup23, -])); - -var msg129 = msg("APPTRACK_SESSION_VOL_UPDATE:01", part158); - -var select31 = linear_select([ - msg128, - msg129, -]); - -var msg130 = msg("BFDD_TRAP_STATE_DOWN", dup138); - -var msg131 = msg("BFDD_TRAP_STATE_UP", dup138); - -var part159 = match("MESSAGE#127:bgp_connect_start", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: connect %{saddr->} (%{shost}): %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","bgp connect error"), - dup23, -])); - -var msg132 = msg("bgp_connect_start", part159); - -var part160 = match("MESSAGE#128:bgp_event", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: peer %{daddr->} (%{dhost}) old state %{change_old->} event %{action->} new state %{change_new}", processor_chain([ - dup21, - dup22, - setc("event_description","bgp peer state change"), - dup23, -])); - -var msg133 = msg("bgp_event", part160); - -var part161 = match("MESSAGE#129:bgp_listen_accept", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Connection attempt from unconfigured neighbor: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Connection attempt from unconfigured neighbor"), - dup23, -])); - -var msg134 = msg("bgp_listen_accept", part161); - -var part162 = match("MESSAGE#130:bgp_listen_reset", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}", processor_chain([ - dup21, - dup22, - setc("event_description","bgp reset"), - dup23, -])); - -var msg135 = msg("bgp_listen_reset", part162); - -var part163 = match("MESSAGE#131:bgp_nexthop_sanity", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: peer %{daddr->} (%{dhost}) next hop %{saddr->} local, %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","peer next hop local"), - dup23, -])); - -var msg136 = msg("bgp_nexthop_sanity", part163); - -var part164 = match("MESSAGE#132:bgp_process_caps", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: NOTIFICATION sent to %{daddr->} (%{dhost}): code %{severity->} (%{action}) subcode %{version->} (%{result}) value %{disposition}", processor_chain([ - dup30, - dup22, - setc("event_description","code RED error NOTIFICATION sent"), - dup23, -])); - -var msg137 = msg("bgp_process_caps", part164); - -var part165 = match("MESSAGE#133:bgp_process_caps:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: mismatch NLRI with %{hostip->} (%{hostname}): peer: %{daddr->} us: %{saddr}", processor_chain([ - dup30, - dup22, - dup57, - dup23, -])); - -var msg138 = msg("bgp_process_caps:01", part165); - -var select32 = linear_select([ - msg137, - msg138, -]); - -var part166 = match("MESSAGE#134:bgp_pp_recv", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: dropping %{daddr->} (%{dhost}), %{info->} (%{protocol})", processor_chain([ - dup30, - dup22, - setc("event_description","connection collision"), - setc("result","dropping connection to peer"), - dup23, -])); - -var msg139 = msg("bgp_pp_recv", part166); - -var part167 = match("MESSAGE#135:bgp_pp_recv:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: peer %{daddr->} (%{dhost}): received unexpected EOF", processor_chain([ - dup30, - dup22, - setc("event_description","peer received unexpected EOF"), - dup23, -])); - -var msg140 = msg("bgp_pp_recv:01", part167); - -var select33 = linear_select([ - msg139, - msg140, -]); - -var part168 = match("MESSAGE#136:bgp_send", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: sending %{sbytes->} bytes to %{daddr->} (%{dhost}) blocked (%{disposition}): %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","bgp send blocked error"), - dup23, -])); - -var msg141 = msg("bgp_send", part168); - -var part169 = match("MESSAGE#137:bgp_traffic_timeout", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: NOTIFICATION sent to %{daddr->} (%{dhost}): code %{resultcode->} (%{action}), Reason: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","bgp timeout NOTIFICATION sent"), - dup23, -])); - -var msg142 = msg("bgp_traffic_timeout", part169); - -var part170 = match("MESSAGE#138:BOOTPD_ARG_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Ignoring unknown option %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","boot argument error"), - dup23, -])); - -var msg143 = msg("BOOTPD_ARG_ERR", part170); - -var part171 = match("MESSAGE#139:BOOTPD_BAD_ID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unexpected ID %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","boot unexpected Id value"), - dup23, -])); - -var msg144 = msg("BOOTPD_BAD_ID", part171); - -var part172 = match("MESSAGE#140:BOOTPD_BOOTSTRING", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Boot string: %{filename}", processor_chain([ - dup21, - dup22, - setc("event_description","Invalid boot string"), - dup23, -])); - -var msg145 = msg("BOOTPD_BOOTSTRING", part172); - -var part173 = match("MESSAGE#141:BOOTPD_CONFIG_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Problems with configuration file '%{filename}', %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","configuration file error"), - dup23, -])); - -var msg146 = msg("BOOTPD_CONFIG_ERR", part173); - -var part174 = match("MESSAGE#142:BOOTPD_CONF_OPEN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to open configuration file '%{filename}'", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to open configuration file"), - dup23, -])); - -var msg147 = msg("BOOTPD_CONF_OPEN", part174); - -var part175 = match("MESSAGE#143:BOOTPD_DUP_REV", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Duplicate revision: %{version}", processor_chain([ - dup30, - dup22, - setc("event_description","boot - Duplicate revision"), - dup23, -])); - -var msg148 = msg("BOOTPD_DUP_REV", part175); - -var part176 = match("MESSAGE#144:BOOTPD_DUP_SLOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Duplicate slot default: %{ssid}", processor_chain([ - dup30, - dup22, - setc("event_description","boot - duplicate slot"), - dup23, -])); - -var msg149 = msg("BOOTPD_DUP_SLOT", part176); - -var part177 = match("MESSAGE#145:BOOTPD_MODEL_CHK", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unexpected ID %{id->} for model %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","Unexpected ID for model"), - dup23, -])); - -var msg150 = msg("BOOTPD_MODEL_CHK", part177); - -var part178 = match("MESSAGE#146:BOOTPD_MODEL_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unsupported model %{dclass_counter1}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unsupported model"), - dup23, -])); - -var msg151 = msg("BOOTPD_MODEL_ERR", part178); - -var part179 = match("MESSAGE#147:BOOTPD_NEW_CONF", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: New configuration installed", processor_chain([ - dup21, - dup22, - setc("event_description","New configuration installed"), - dup23, -])); - -var msg152 = msg("BOOTPD_NEW_CONF", part179); - -var part180 = match("MESSAGE#148:BOOTPD_NO_BOOTSTRING", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No boot string found for type %{filename}", processor_chain([ - dup30, - dup22, - setc("event_description","No boot string found"), - dup23, -])); - -var msg153 = msg("BOOTPD_NO_BOOTSTRING", part180); - -var part181 = match("MESSAGE#149:BOOTPD_NO_CONFIG", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No configuration file '%{filename}', %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","No configuration file found"), - dup23, -])); - -var msg154 = msg("BOOTPD_NO_CONFIG", part181); - -var part182 = match("MESSAGE#150:BOOTPD_PARSE_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{filename}: number parse errors on SIGHUP", processor_chain([ - dup30, - dup22, - setc("event_description","parse errors on SIGHUP"), - dup23, -])); - -var msg155 = msg("BOOTPD_PARSE_ERR", part182); - -var part183 = match("MESSAGE#151:BOOTPD_REPARSE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Reparsing configuration file '%{filename}'", processor_chain([ - dup21, - dup22, - setc("event_description","Reparsing configuration file"), - dup23, -])); - -var msg156 = msg("BOOTPD_REPARSE", part183); - -var part184 = match("MESSAGE#152:BOOTPD_SELECT_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: select: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","select error"), - dup23, -])); - -var msg157 = msg("BOOTPD_SELECT_ERR", part184); - -var part185 = match("MESSAGE#153:BOOTPD_TIMEOUT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Timeout %{result->} unreasonable", processor_chain([ - dup30, - dup22, - setc("event_description","timeout unreasonable"), - dup23, -])); - -var msg158 = msg("BOOTPD_TIMEOUT", part185); - -var part186 = match("MESSAGE#154:BOOTPD_VERSION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Version: %{version->} built by builder on %{event_time_string}", processor_chain([ - dup21, - dup22, - setc("event_description","boot version built"), - dup23, -])); - -var msg159 = msg("BOOTPD_VERSION", part186); - -var part187 = match("MESSAGE#155:CHASSISD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type->} %{version->} built by builder on %{event_time_string}", processor_chain([ - dup58, - dup22, - setc("event_description","CHASSISD release built"), - dup23, -])); - -var msg160 = msg("CHASSISD", part187); - -var part188 = match("MESSAGE#156:CHASSISD_ARGUMENT_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unknown option %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD Unknown option"), - dup23, -])); - -var msg161 = msg("CHASSISD_ARGUMENT_ERROR", part188); - -var part189 = match("MESSAGE#157:CHASSISD_BLOWERS_SPEED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Fans and impellers are now running at normal speed", processor_chain([ - dup21, - dup22, - setc("event_description","Fans and impellers are now running at normal speed"), - dup23, -])); - -var msg162 = msg("CHASSISD_BLOWERS_SPEED", part189); - -var part190 = match("MESSAGE#158:CHASSISD_BLOWERS_SPEED_FULL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Fans and impellers being set to full speed [%{result}]", processor_chain([ - dup21, - dup22, - setc("event_description","Fans and impellers being set to full speed"), - dup23, -])); - -var msg163 = msg("CHASSISD_BLOWERS_SPEED_FULL", part190); - -var part191 = match("MESSAGE#159:CHASSISD_CB_READ", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result->} reading midplane ID EEPROM, %{dclass_counter1->} %{dclass_counter2}", processor_chain([ - dup21, - dup22, - setc("event_description","reading midplane ID EEPROM"), - dup23, -])); - -var msg164 = msg("CHASSISD_CB_READ", part191); - -var part192 = match("MESSAGE#160:CHASSISD_COMMAND_ACK_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{device->} online ack code %{dclass_counter1->} - - %{result}, %{interface}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD COMMAND ACK ERROR"), - dup23, -])); - -var msg165 = msg("CHASSISD_COMMAND_ACK_ERROR", part192); - -var part193 = match("MESSAGE#161:CHASSISD_COMMAND_ACK_SF_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{disposition->} - %{result}, code %{resultcode}, SFM %{dclass_counter1}, FPC %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD COMMAND ACK SF ERROR"), - dup23, -])); - -var msg166 = msg("CHASSISD_COMMAND_ACK_SF_ERROR", part193); - -var part194 = match("MESSAGE#162:CHASSISD_CONCAT_MODE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Cannot set no-concatenated mode for FPC %{dclass_counter2->} PIC %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","Cannot set no-concatenated mode for FPC"), - dup23, -])); - -var msg167 = msg("CHASSISD_CONCAT_MODE_ERROR", part194); - -var part195 = match("MESSAGE#163:CHASSISD_CONFIG_INIT_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Problems with configuration file %{filename}; %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","CONFIG File Problem"), - dup23, -])); - -var msg168 = msg("CHASSISD_CONFIG_INIT_ERROR", part195); - -var part196 = match("MESSAGE#164:CHASSISD_CONFIG_WARNING", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{filename}: %{result}, FPC %{dclass_counter2->} %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD CONFIG WARNING"), - dup23, -])); - -var msg169 = msg("CHASSISD_CONFIG_WARNING", part196); - -var part197 = match("MESSAGE#165:CHASSISD_EXISTS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: chassisd already running; %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","chassisd already running"), - dup23, -])); - -var msg170 = msg("CHASSISD_EXISTS", part197); - -var part198 = match("MESSAGE#166:CHASSISD_EXISTS_TERM_OTHER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Killing existing chassisd and exiting", processor_chain([ - dup21, - dup22, - setc("event_description","Killing existing chassisd and exiting"), - dup23, -])); - -var msg171 = msg("CHASSISD_EXISTS_TERM_OTHER", part198); - -var part199 = match("MESSAGE#167:CHASSISD_FILE_OPEN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: File open: %{filename}, error: %{resultcode->} - - %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","file open error"), - dup23, -])); - -var msg172 = msg("CHASSISD_FILE_OPEN", part199); - -var part200 = match("MESSAGE#168:CHASSISD_FILE_STAT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: File stat: %{filename}, error: %{resultcode->} - - %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD file statistics error"), - dup23, -])); - -var msg173 = msg("CHASSISD_FILE_STAT", part200); - -var part201 = match("MESSAGE#169:CHASSISD_FRU_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD received restart EVENT"), - dup23, -])); - -var msg174 = msg("CHASSISD_FRU_EVENT", part201); - -var part202 = match("MESSAGE#170:CHASSISD_FRU_IPC_WRITE_ERROR_EXT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action->} FRU %{filename}#%{resultcode}, %{result->} %{dclass_counter1}, %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD restart WRITE_ERROR"), - dup23, -])); - -var msg175 = msg("CHASSISD_FRU_IPC_WRITE_ERROR_EXT", part202); - -var part203 = match("MESSAGE#171:CHASSISD_FRU_STEP_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{filename->} %{resultcode->} at step %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD FRU STEP ERROR"), - dup23, -])); - -var msg176 = msg("CHASSISD_FRU_STEP_ERROR", part203); - -var part204 = match("MESSAGE#172:CHASSISD_GETTIMEOFDAY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unexpected error from gettimeofday: %{resultcode->} - %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","Unexpected error from gettimeofday"), - dup23, -])); - -var msg177 = msg("CHASSISD_GETTIMEOFDAY", part204); - -var part205 = match("MESSAGE#173:CHASSISD_HOST_TEMP_READ", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result->} reading host temperature sensor", processor_chain([ - dup21, - dup22, - setc("event_description","reading host temperature sensor"), - dup23, -])); - -var msg178 = msg("CHASSISD_HOST_TEMP_READ", part205); - -var part206 = match("MESSAGE#174:CHASSISD_IFDEV_DETACH_ALL_PSEUDO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}(%{disposition})", processor_chain([ - dup21, - dup22, - setc("event_description","detaching all pseudo devices"), - dup23, -])); - -var msg179 = msg("CHASSISD_IFDEV_DETACH_ALL_PSEUDO", part206); - -var part207 = match("MESSAGE#175:CHASSISD_IFDEV_DETACH_FPC", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}(%{resultcode})", processor_chain([ - dup21, - dup22, - setc("event_description","CHASSISD IFDEV DETACH FPC"), - dup23, -])); - -var msg180 = msg("CHASSISD_IFDEV_DETACH_FPC", part207); - -var part208 = match("MESSAGE#176:CHASSISD_IFDEV_DETACH_PIC", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}(%{resultcode})", processor_chain([ - dup21, - dup22, - setc("event_description","CHASSISD IFDEV DETACH PIC"), - dup23, -])); - -var msg181 = msg("CHASSISD_IFDEV_DETACH_PIC", part208); - -var part209 = match("MESSAGE#177:CHASSISD_IFDEV_DETACH_PSEUDO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}(%{disposition})", processor_chain([ - dup21, - dup22, - setc("event_description","CHASSISD IFDEV DETACH PSEUDO"), - dup23, -])); - -var msg182 = msg("CHASSISD_IFDEV_DETACH_PSEUDO", part209); - -var part210 = match("MESSAGE#178:CHASSISD_IFDEV_DETACH_TLV_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD IFDEV DETACH TLV ERROR"), - dup23, -])); - -var msg183 = msg("CHASSISD_IFDEV_DETACH_TLV_ERROR", part210); - -var part211 = match("MESSAGE#179:CHASSISD_IFDEV_GET_BY_INDEX_FAIL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: rtslib_ifdm_get_by_index failed: %{resultcode->} - %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","rtslib_ifdm_get_by_index failed"), - dup23, -])); - -var msg184 = msg("CHASSISD_IFDEV_GET_BY_INDEX_FAIL", part211); - -var part212 = match("MESSAGE#180:CHASSISD_IPC_MSG_QFULL_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}: type = %{dclass_counter1}, subtype = %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","Message Queue full"), - dup23, -])); - -var msg185 = msg("CHASSISD_IPC_MSG_QFULL_ERROR", part212); - -var part213 = match("MESSAGE#181:CHASSISD_IPC_UNEXPECTED_RECV", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Received unexpected message from %{service}: type = %{dclass_counter1}, subtype = %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","Received unexpected message"), - dup23, -])); - -var msg186 = msg("CHASSISD_IPC_UNEXPECTED_RECV", part213); - -var part214 = match("MESSAGE#182:CHASSISD_IPC_WRITE_ERR_NO_PIPE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: FRU has no connection pipe %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","FRU has no connection pipe"), - dup23, -])); - -var msg187 = msg("CHASSISD_IPC_WRITE_ERR_NO_PIPE", part214); - -var part215 = match("MESSAGE#183:CHASSISD_IPC_WRITE_ERR_NULL_ARGS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: FRU has no connection arguments %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","FRU has no connection arguments"), - dup23, -])); - -var msg188 = msg("CHASSISD_IPC_WRITE_ERR_NULL_ARGS", part215); - -var part216 = match("MESSAGE#184:CHASSISD_MAC_ADDRESS_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: chassisd MAC address allocation error", processor_chain([ - dup30, - dup22, - setc("event_description","chassisd MAC address allocation error"), - dup23, -])); - -var msg189 = msg("CHASSISD_MAC_ADDRESS_ERROR", part216); - -var part217 = match("MESSAGE#185:CHASSISD_MAC_DEFAULT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Using default MAC address base", processor_chain([ - dup21, - dup22, - setc("event_description","Using default MAC address base"), - dup23, -])); - -var msg190 = msg("CHASSISD_MAC_DEFAULT", part217); - -var part218 = match("MESSAGE#186:CHASSISD_MBUS_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service->} %{resultcode}: management bus failed sanity test", processor_chain([ - dup30, - dup22, - setc("event_description","management bus failed sanity test"), - dup23, -])); - -var msg191 = msg("CHASSISD_MBUS_ERROR", part218); - -var part219 = match("MESSAGE#187:CHASSISD_PARSE_COMPLETE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Using new configuration", processor_chain([ - dup21, - dup22, - setc("event_description","Using new configuration"), - dup23, -])); - -var msg192 = msg("CHASSISD_PARSE_COMPLETE", part219); - -var part220 = match("MESSAGE#188:CHASSISD_PARSE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{resultcode->} %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","CHASSISD PARSE ERROR"), - dup23, -])); - -var msg193 = msg("CHASSISD_PARSE_ERROR", part220); - -var part221 = match("MESSAGE#189:CHASSISD_PARSE_INIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Parsing configuration file '%{filename}'", processor_chain([ - dup21, - dup22, - setc("event_description","Parsing configuration file"), - dup23, -])); - -var msg194 = msg("CHASSISD_PARSE_INIT", part221); - -var part222 = match("MESSAGE#190:CHASSISD_PIDFILE_OPEN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to open PID file '%{filename}': %{result->} %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to open PID file"), - dup23, -])); - -var msg195 = msg("CHASSISD_PIDFILE_OPEN", part222); - -var part223 = match("MESSAGE#191:CHASSISD_PIPE_WRITE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Pipe error: %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","Pipe error"), - dup23, -])); - -var msg196 = msg("CHASSISD_PIPE_WRITE_ERROR", part223); - -var part224 = match("MESSAGE#192:CHASSISD_POWER_CHECK", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{device->} %{dclass_counter1->} not powering up", processor_chain([ - dup59, - dup22, - setc("event_description","device not powering up"), - dup23, -])); - -var msg197 = msg("CHASSISD_POWER_CHECK", part224); - -var part225 = match("MESSAGE#193:CHASSISD_RECONNECT_SUCCESSFUL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Successfully reconnected on soft restart", processor_chain([ - dup21, - dup22, - setc("event_description","Successful reconnect on soft restart"), - dup23, -])); - -var msg198 = msg("CHASSISD_RECONNECT_SUCCESSFUL", part225); - -var part226 = match("MESSAGE#194:CHASSISD_RELEASE_MASTERSHIP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Release mastership notification", processor_chain([ - dup21, - dup22, - setc("event_description","Release mastership notification"), - dup23, -])); - -var msg199 = msg("CHASSISD_RELEASE_MASTERSHIP", part226); - -var part227 = match("MESSAGE#195:CHASSISD_RE_INIT_INVALID_RE_SLOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: re_init: re %{resultcode}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","re_init Invalid RE slot"), - dup23, -])); - -var msg200 = msg("CHASSISD_RE_INIT_INVALID_RE_SLOT", part227); - -var part228 = match("MESSAGE#196:CHASSISD_ROOT_MOUNT_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to determine the mount point for root directory: %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to determine mount point for root directory"), - dup23, -])); - -var msg201 = msg("CHASSISD_ROOT_MOUNT_ERROR", part228); - -var part229 = match("MESSAGE#197:CHASSISD_RTS_SEQ_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifmsg sequence gap %{resultcode->} - - %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","ifmsg sequence gap"), - dup23, -])); - -var msg202 = msg("CHASSISD_RTS_SEQ_ERROR", part229); - -var part230 = match("MESSAGE#198:CHASSISD_SBOARD_VERSION_MISMATCH", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Version mismatch: %{info}", processor_chain([ - setc("eventcategory","1603040000"), - dup22, - setc("event_description","Version mismatch"), - dup23, -])); - -var msg203 = msg("CHASSISD_SBOARD_VERSION_MISMATCH", part230); - -var part231 = match("MESSAGE#199:CHASSISD_SERIAL_ID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Serial ID read error: %{resultcode->} - - %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","Serial ID read error"), - dup23, -])); - -var msg204 = msg("CHASSISD_SERIAL_ID", part231); - -var part232 = match("MESSAGE#200:CHASSISD_SMB_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: fpga download not complete: val %{resultcode}, %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","fpga download not complete"), - dup23, -])); - -var msg205 = msg("CHASSISD_SMB_ERROR", part232); - -var part233 = match("MESSAGE#201:CHASSISD_SNMP_TRAP6", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: SNMP trap generated: %{result->} (%{info})", processor_chain([ - dup58, - dup22, - setc("event_description","SNMP Trap6 generated"), - dup23, -])); - -var msg206 = msg("CHASSISD_SNMP_TRAP6", part233); - -var part234 = match("MESSAGE#202:CHASSISD_SNMP_TRAP7", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: SNMP trap: %{result}: %{info}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP Trap7 generated"), - dup23, -])); - -var msg207 = msg("CHASSISD_SNMP_TRAP7", part234); - -var part235 = match("MESSAGE#203:CHASSISD_SNMP_TRAP10", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: SNMP trap: %{result}: %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP trap - FRU power on"), - dup23, -])); - -var msg208 = msg("CHASSISD_SNMP_TRAP10", part235); - -var part236 = match("MESSAGE#204:CHASSISD_TERM_SIGNAL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Received SIGTERM request, %{result}", processor_chain([ - dup60, - dup22, - setc("event_description","Received SIGTERM request"), - dup23, -])); - -var msg209 = msg("CHASSISD_TERM_SIGNAL", part236); - -var part237 = match("MESSAGE#205:CHASSISD_TRACE_PIC_OFFLINE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Taking PIC offline - - FPC slot %{dclass_counter1}, PIC slot %{dclass_counter2}", processor_chain([ - dup21, - dup22, - setc("event_description","Taking PIC offline"), - dup23, -])); - -var msg210 = msg("CHASSISD_TRACE_PIC_OFFLINE", part237); - -var part238 = match("MESSAGE#206:CHASSISD_UNEXPECTED_EXIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service->} returned %{resultcode}: %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","UNEXPECTED EXIT"), - dup23, -])); - -var msg211 = msg("CHASSISD_UNEXPECTED_EXIT", part238); - -var part239 = match("MESSAGE#207:CHASSISD_UNSUPPORTED_MODEL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Model %{dclass_counter1->} unsupported with this version of chassisd", processor_chain([ - dup59, - dup22, - setc("event_description","Model number unsupported with this version of chassisd"), - dup23, -])); - -var msg212 = msg("CHASSISD_UNSUPPORTED_MODEL", part239); - -var part240 = match("MESSAGE#208:CHASSISD_VERSION_MISMATCH", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Version mismatch: %{info}", processor_chain([ - dup59, - dup22, - setc("event_description","Chassisd Version mismatch"), - dup23, -])); - -var msg213 = msg("CHASSISD_VERSION_MISMATCH", part240); - -var part241 = match("MESSAGE#209:CHASSISD_HIGH_TEMP_CONDITION", "nwparser.payload", "%{process->} %{process_id->} %{event_type->} [junos@%{obj_name->} temperature=\"%{fld2}\" message=\"%{info}\"]", processor_chain([ - dup59, - dup22, - setc("event_description","CHASSISD HIGH TEMP CONDITION"), - dup61, - dup62, -])); - -var msg214 = msg("CHASSISD_HIGH_TEMP_CONDITION", part241); - -var part242 = match("MESSAGE#210:clean_process", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: process %{agent->} RESTART mode %{event_state->} new master=%{obj_name->} old failover=%{change_old->} new failover = %{change_new}", processor_chain([ - dup21, - dup22, - setc("event_description","process RESTART mode"), - dup23, -])); - -var msg215 = msg("clean_process", part242); - -var part243 = match("MESSAGE#211:CM_JAVA", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Chassis %{group->} Linklocal MAC:%{macaddr}", processor_chain([ - dup21, - dup22, - setc("event_description","Chassis Linklocal to MAC"), - dup23, -])); - -var msg216 = msg("CM_JAVA", part243); - -var part244 = match("MESSAGE#212:DCD_AS_ROOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Must be run as root", processor_chain([ - dup63, - dup22, - setc("event_description","DCD must be run as root"), - dup23, -])); - -var msg217 = msg("DCD_AS_ROOT", part244); - -var part245 = match("MESSAGE#213:DCD_FILTER_LIB_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Filter library initialization failed", processor_chain([ - dup30, - dup22, - setc("event_description","Filter library initialization failed"), - dup23, -])); - -var msg218 = msg("DCD_FILTER_LIB_ERROR", part245); - -var msg219 = msg("DCD_MALLOC_FAILED_INIT", dup139); - -var part246 = match("MESSAGE#215:DCD_PARSE_EMERGENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: errors while parsing configuration file", processor_chain([ - dup30, - dup22, - setc("event_description","errors while parsing configuration file"), - dup23, -])); - -var msg220 = msg("DCD_PARSE_EMERGENCY", part246); - -var part247 = match("MESSAGE#216:DCD_PARSE_FILTER_EMERGENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: errors while parsing filter index file", processor_chain([ - dup30, - dup22, - setc("event_description","errors while parsing filter index file"), - dup23, -])); - -var msg221 = msg("DCD_PARSE_FILTER_EMERGENCY", part247); - -var part248 = match("MESSAGE#217:DCD_PARSE_MINI_EMERGENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: errors while parsing configuration overlay", processor_chain([ - dup30, - dup22, - setc("event_description","errors while parsing configuration overlay"), - dup23, -])); - -var msg222 = msg("DCD_PARSE_MINI_EMERGENCY", part248); - -var part249 = match("MESSAGE#218:DCD_PARSE_STATE_EMERGENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: An unhandled state was encountered during interface parsing", processor_chain([ - dup30, - dup22, - setc("event_description","unhandled state was encountered during interface parsing"), - dup23, -])); - -var msg223 = msg("DCD_PARSE_STATE_EMERGENCY", part249); - -var part250 = match("MESSAGE#219:DCD_POLICER_PARSE_EMERGENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: errors while parsing policer indexfile", processor_chain([ - dup30, - dup22, - setc("event_description","errors while parsing policer indexfile"), - dup23, -])); - -var msg224 = msg("DCD_POLICER_PARSE_EMERGENCY", part250); - -var part251 = match("MESSAGE#220:DCD_PULL_LOG_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to pull file %{filename->} after %{dclass_counter1->} retries last error=%{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","Failed to pull file"), - dup23, -])); - -var msg225 = msg("DCD_PULL_LOG_FAILURE", part251); - -var part252 = match("MESSAGE#221:DFWD_ARGUMENT_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","DFWD ARGUMENT ERROR"), - dup23, -])); - -var msg226 = msg("DFWD_ARGUMENT_ERROR", part252); - -var msg227 = msg("DFWD_MALLOC_FAILED_INIT", dup139); - -var part253 = match("MESSAGE#223:DFWD_PARSE_FILTER_EMERGENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service->} encountered errors while parsing filter index file", processor_chain([ - dup30, - dup22, - setc("event_description","errors encountered while parsing filter index file"), - dup23, -])); - -var msg228 = msg("DFWD_PARSE_FILTER_EMERGENCY", part253); - -var part254 = match("MESSAGE#224:DFWD_PARSE_STATE_EMERGENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service->} encountered unhandled state while parsing interface", processor_chain([ - dup30, - dup22, - setc("event_description","encountered unhandled state while parsing interface"), - dup23, -])); - -var msg229 = msg("DFWD_PARSE_STATE_EMERGENCY", part254); - -var msg230 = msg("ECCD_DAEMONIZE_FAILED", dup140); - -var msg231 = msg("ECCD_DUPLICATE", dup141); - -var part255 = match("MESSAGE#227:ECCD_LOOP_EXIT_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: MainLoop return value: %{disposition}, error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","ECCD LOOP EXIT FAILURE"), - dup23, -])); - -var msg232 = msg("ECCD_LOOP_EXIT_FAILURE", part255); - -var part256 = match("MESSAGE#228:ECCD_NOT_ROOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Must be run as root", processor_chain([ - dup63, - dup22, - setc("event_description","ECCD Must be run as root"), - dup23, -])); - -var msg233 = msg("ECCD_NOT_ROOT", part256); - -var part257 = match("MESSAGE#229:ECCD_PCI_FILE_OPEN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: open() failed: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","ECCD PCI FILE OPEN FAILED"), - dup23, -])); - -var msg234 = msg("ECCD_PCI_FILE_OPEN_FAILED", part257); - -var part258 = match("MESSAGE#230:ECCD_PCI_READ_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","PCI read failure"), - dup23, -])); - -var msg235 = msg("ECCD_PCI_READ_FAILED", part258); - -var part259 = match("MESSAGE#231:ECCD_PCI_WRITE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","PCI write failure"), - dup23, -])); - -var msg236 = msg("ECCD_PCI_WRITE_FAILED", part259); - -var msg237 = msg("ECCD_PID_FILE_LOCK", dup142); - -var msg238 = msg("ECCD_PID_FILE_UPDATE", dup143); - -var part260 = match("MESSAGE#234:ECCD_TRACE_FILE_OPEN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","ECCD TRACE FILE OPEN FAILURE"), - dup23, -])); - -var msg239 = msg("ECCD_TRACE_FILE_OPEN_FAILED", part260); - -var part261 = match("MESSAGE#235:ECCD_usage", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}: %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","ECCD Usage"), - dup23, -])); - -var msg240 = msg("ECCD_usage", part261); - -var part262 = match("MESSAGE#236:EVENTD_AUDIT_SHOW", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User %{username->} viewed security audit log with arguments: %{param}", processor_chain([ - dup21, - dup22, - setc("event_description","User viewed security audit log with arguments"), - dup23, -])); - -var msg241 = msg("EVENTD_AUDIT_SHOW", part262); - -var part263 = match("MESSAGE#237:FLOW_REASSEMBLE_SUCCEED", "nwparser.payload", "%{event_type}: Packet merged source %{saddr->} destination %{daddr->} ipid %{fld11->} succeed", processor_chain([ - dup21, - dup22, - dup23, -])); - -var msg242 = msg("FLOW_REASSEMBLE_SUCCEED", part263); - -var part264 = match("MESSAGE#238:FSAD_CHANGE_FILE_OWNER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to change owner of file `%{filename}' to user %{username}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to change owner of file"), - dup23, -])); - -var msg243 = msg("FSAD_CHANGE_FILE_OWNER", part264); - -var part265 = match("MESSAGE#239:FSAD_CONFIG_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","FSAD CONFIG ERROR"), - dup23, -])); - -var msg244 = msg("FSAD_CONFIG_ERROR", part265); - -var part266 = match("MESSAGE#240:FSAD_CONNTIMEDOUT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Connection timed out to the client (%{shost}, %{saddr}) having request type %{obj_type}", processor_chain([ - dup30, - dup22, - setc("event_description","Connection timed out to client"), - dup23, -])); - -var msg245 = msg("FSAD_CONNTIMEDOUT", part266); - -var part267 = match("MESSAGE#241:FSAD_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","FSAD_FAILED"), - dup23, -])); - -var msg246 = msg("FSAD_FAILED", part267); - -var part268 = match("MESSAGE#242:FSAD_FETCHTIMEDOUT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Fetch to server %{hostname->} for file `%{filename}' timed out", processor_chain([ - dup30, - dup22, - setc("event_description","Fetch to server to get file timed out"), - dup23, -])); - -var msg247 = msg("FSAD_FETCHTIMEDOUT", part268); - -var part269 = match("MESSAGE#243:FSAD_FILE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: fn failed for file `%{filename}' with error message %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","fn failed for file"), - dup23, -])); - -var msg248 = msg("FSAD_FILE_FAILED", part269); - -var part270 = match("MESSAGE#244:FSAD_FILE_REMOVE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to remove file `%{filename}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to remove file"), - dup23, -])); - -var msg249 = msg("FSAD_FILE_REMOVE", part270); - -var part271 = match("MESSAGE#245:FSAD_FILE_RENAME", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to rename file `%{filename}' to `%{resultcode}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to rename file"), - dup23, -])); - -var msg250 = msg("FSAD_FILE_RENAME", part271); - -var part272 = match("MESSAGE#246:FSAD_FILE_STAT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service->} failed for file pathname %{filename}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","stat failed for file"), - dup23, -])); - -var msg251 = msg("FSAD_FILE_STAT", part272); - -var part273 = match("MESSAGE#247:FSAD_FILE_SYNC", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to sync file %{filename}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to sync file"), - dup23, -])); - -var msg252 = msg("FSAD_FILE_SYNC", part273); - -var part274 = match("MESSAGE#248:FSAD_MAXCONN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Upper limit reached in fsad for handling connections", processor_chain([ - dup30, - dup22, - setc("event_description","Upper limit reached in fsad"), - dup23, -])); - -var msg253 = msg("FSAD_MAXCONN", part274); - -var part275 = match("MESSAGE#249:FSAD_MEMORYALLOC_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service->} failed in the function %{action->} (%{resultcode})", processor_chain([ - dup51, - dup22, - setc("event_description","FSAD MEMORYALLOC FAILED"), - dup23, -])); - -var msg254 = msg("FSAD_MEMORYALLOC_FAILED", part275); - -var part276 = match("MESSAGE#250:FSAD_NOT_ROOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Must be run as root", processor_chain([ - dup63, - dup22, - setc("event_description","FSAD must be run as root"), - dup23, -])); - -var msg255 = msg("FSAD_NOT_ROOT", part276); - -var part277 = match("MESSAGE#251:FSAD_PARENT_DIRECTORY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: invalid directory: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","invalid directory"), - dup23, -])); - -var msg256 = msg("FSAD_PARENT_DIRECTORY", part277); - -var part278 = match("MESSAGE#252:FSAD_PATH_IS_DIRECTORY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: File path cannot be a directory (%{filename})", processor_chain([ - dup30, - dup22, - setc("event_description","File path cannot be a directory"), - dup23, -])); - -var msg257 = msg("FSAD_PATH_IS_DIRECTORY", part278); - -var part279 = match("MESSAGE#253:FSAD_PATH_IS_SPECIAL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Not a regular file (%{filename})", processor_chain([ - dup30, - dup22, - setc("event_description","Not a regular file"), - dup23, -])); - -var msg258 = msg("FSAD_PATH_IS_SPECIAL", part279); - -var part280 = match("MESSAGE#254:FSAD_RECVERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: fsad received error message from client having request type %{obj_type->} at (%{saddr}, %{sport})", processor_chain([ - dup30, - dup22, - setc("event_description","fsad received error message from client"), - dup23, -])); - -var msg259 = msg("FSAD_RECVERROR", part280); - -var part281 = match("MESSAGE#255:FSAD_TERMINATED_CONNECTION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Open file %{filename}` closed due to %{result}", processor_chain([ - dup27, - dup22, - setc("event_description","FSAD TERMINATED CONNECTION"), - dup23, -])); - -var msg260 = msg("FSAD_TERMINATED_CONNECTION", part281); - -var part282 = match("MESSAGE#256:FSAD_TERMINATING_SIGNAL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Received terminating %{resultcode}; %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Received terminating signal"), - dup23, -])); - -var msg261 = msg("FSAD_TERMINATING_SIGNAL", part282); - -var part283 = match("MESSAGE#257:FSAD_TRACEOPEN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Open operation on trace file `%{filename}' returned error %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Open operation on trace file failed"), - dup23, -])); - -var msg262 = msg("FSAD_TRACEOPEN_FAILED", part283); - -var part284 = match("MESSAGE#258:FSAD_USAGE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Incorrect usage, %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","Incorrect FSAD usage"), - dup23, -])); - -var msg263 = msg("FSAD_USAGE", part284); - -var part285 = match("MESSAGE#259:GGSN_ALARM_TRAP_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","GGSN ALARM TRAP FAILED"), - dup23, -])); - -var msg264 = msg("GGSN_ALARM_TRAP_FAILED", part285); - -var part286 = match("MESSAGE#260:GGSN_ALARM_TRAP_SEND", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","GGSN ALARM TRAP SEND FAILED"), - dup23, -])); - -var msg265 = msg("GGSN_ALARM_TRAP_SEND", part286); - -var part287 = match("MESSAGE#261:GGSN_TRAP_SEND", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unknown trap request type %{obj_type}", processor_chain([ - dup30, - dup22, - setc("event_description","Unknown trap request type"), - dup23, -])); - -var msg266 = msg("GGSN_TRAP_SEND", part287); - -var part288 = match("MESSAGE#262:JADE_AUTH_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Authorization failed: %{result}", processor_chain([ - dup69, - dup34, - setc("ec_subject","Service"), - dup43, - dup22, - setc("event_description","Authorization failed"), - dup23, -])); - -var msg267 = msg("JADE_AUTH_ERROR", part288); - -var part289 = match("MESSAGE#263:JADE_EXEC_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: CLI %{resultcode->} %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","JADE EXEC ERROR"), - dup23, -])); - -var msg268 = msg("JADE_EXEC_ERROR", part289); - -var part290 = match("MESSAGE#264:JADE_NO_LOCAL_USER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Local user %{username->} does not exist", processor_chain([ - dup30, - dup22, - setc("event_description","Local user does not exist"), - dup23, -])); - -var msg269 = msg("JADE_NO_LOCAL_USER", part290); - -var part291 = match("MESSAGE#265:JADE_PAM_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","JADE PAM error"), - dup23, -])); - -var msg270 = msg("JADE_PAM_ERROR", part291); - -var part292 = match("MESSAGE#266:JADE_PAM_NO_LOCAL_USER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to get local username from PAM: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to get local username from PAM"), - dup23, -])); - -var msg271 = msg("JADE_PAM_NO_LOCAL_USER", part292); - -var part293 = match("MESSAGE#267:KERN_ARP_ADDR_CHANGE", "nwparser.payload", "%{process}: %{event_type}: arp info overwritten for %{saddr->} from %{smacaddr->} to %{dmacaddr}", processor_chain([ - dup30, - dup22, - setc("event_description","arp info overwritten"), - dup23, -])); - -var msg272 = msg("KERN_ARP_ADDR_CHANGE", part293); - -var part294 = match("MESSAGE#268:KMD_PM_SA_ESTABLISHED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Local gateway: %{gateway}, Remote gateway: %{fld1}, Local ID:%{fld2}, Remote ID:%{fld3}, Direction:%{fld4}, SPI:%{fld5}", processor_chain([ - dup30, - dup22, - setc("event_description","security association has been established"), - dup23, -])); - -var msg273 = msg("KMD_PM_SA_ESTABLISHED", part294); - -var part295 = match("MESSAGE#269:L2CPD_TASK_REINIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Reinitialized", processor_chain([ - dup21, - dup22, - setc("event_description","Task Reinitialized"), - dup61, - dup23, -])); - -var msg274 = msg("L2CPD_TASK_REINIT", part295); - -var part296 = match("MESSAGE#270:LIBJNX_EXEC_EXITED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Command stopped: PID %{child_pid}, signal='%{obj_type}' %{result}, command '%{action}'", processor_chain([ - dup21, - dup22, - dup70, - dup23, -])); - -var msg275 = msg("LIBJNX_EXEC_EXITED", part296); - -var part297 = match("MESSAGE#271:LIBJNX_EXEC_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Child exec failed for command '%{action}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Child exec failed for command"), - dup23, -])); - -var msg276 = msg("LIBJNX_EXEC_FAILED", part297); - -var msg277 = msg("LIBJNX_EXEC_PIPE", dup144); - -var part298 = match("MESSAGE#273:LIBJNX_EXEC_SIGNALED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Command received signal: PID %{child_pid}, signal %{result}, command '%{action}'", processor_chain([ - dup30, - dup22, - setc("event_description","Command received signal"), - dup23, -])); - -var msg278 = msg("LIBJNX_EXEC_SIGNALED", part298); - -var part299 = match("MESSAGE#274:LIBJNX_EXEC_WEXIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Command exited: PID %{child_pid}, status %{result}, command '%{action}'", processor_chain([ - dup21, - dup22, - dup72, - dup23, -])); - -var msg279 = msg("LIBJNX_EXEC_WEXIT", part299); - -var part300 = match("MESSAGE#275:LIBJNX_FILE_COPY_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: copy_file_to_transfer_dir failed to copy from source to destination", processor_chain([ - dup73, - dup22, - setc("event_description","copy_file_to_transfer_dir failed to copy"), - dup23, -])); - -var msg280 = msg("LIBJNX_FILE_COPY_FAILED", part300); - -var part301 = match("MESSAGE#276:LIBJNX_PRIV_LOWER_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to lower privilege level: %{result}", processor_chain([ - dup73, - dup22, - setc("event_description","Unable to lower privilege level"), - dup23, -])); - -var msg281 = msg("LIBJNX_PRIV_LOWER_FAILED", part301); - -var part302 = match("MESSAGE#277:LIBJNX_PRIV_RAISE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to raise privilege level: %{result}", processor_chain([ - dup73, - dup22, - setc("event_description","Unable to raise privilege level"), - dup23, -])); - -var msg282 = msg("LIBJNX_PRIV_RAISE_FAILED", part302); - -var part303 = match("MESSAGE#278:LIBJNX_REPLICATE_RCP_EXEC_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup73, - dup22, - setc("event_description","rcp failed"), - dup23, -])); - -var msg283 = msg("LIBJNX_REPLICATE_RCP_EXEC_FAILED", part303); - -var part304 = match("MESSAGE#279:LIBJNX_ROTATE_COMPRESS_EXEC_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{resultcode->} %{dclass_counter1->} -f %{action}: %{result}", processor_chain([ - dup73, - dup22, - setc("event_description","ROTATE COMPRESS EXEC FAILED"), - dup23, -])); - -var msg284 = msg("LIBJNX_ROTATE_COMPRESS_EXEC_FAILED", part304); - -var part305 = match("MESSAGE#280:LIBSERVICED_CLIENT_CONNECTION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Client connection error: %{result}", processor_chain([ - dup74, - dup22, - setc("event_description","Client connection error"), - dup23, -])); - -var msg285 = msg("LIBSERVICED_CLIENT_CONNECTION", part305); - -var part306 = match("MESSAGE#281:LIBSERVICED_OUTBOUND_REQUEST", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Outbound request failed for command [%{action}]: %{result}", processor_chain([ - dup73, - dup22, - setc("event_description","Outbound request failed for command"), - dup23, -])); - -var msg286 = msg("LIBSERVICED_OUTBOUND_REQUEST", part306); - -var part307 = match("MESSAGE#282:LIBSERVICED_SNMP_LOST_CONNECTION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Connection closed while receiving from client %{dclass_counter1}", processor_chain([ - dup27, - dup22, - setc("event_description","Connection closed while receiving from client"), - dup23, -])); - -var msg287 = msg("LIBSERVICED_SNMP_LOST_CONNECTION", part307); - -var part308 = match("MESSAGE#283:LIBSERVICED_SOCKET_BIND", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{resultcode}: unable to bind socket %{ssid}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","unable to bind socket"), - dup23, -])); - -var msg288 = msg("LIBSERVICED_SOCKET_BIND", part308); - -var part309 = match("MESSAGE#284:LIBSERVICED_SOCKET_PRIVATIZE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to attach socket %{ssid->} to management routing instance: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to attach socket to management routing instance"), - dup23, -])); - -var msg289 = msg("LIBSERVICED_SOCKET_PRIVATIZE", part309); - -var part310 = match("MESSAGE#285:LICENSE_EXPIRED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","LICENSE EXPIRED"), - dup23, -])); - -var msg290 = msg("LICENSE_EXPIRED", part310); - -var part311 = match("MESSAGE#286:LICENSE_EXPIRED_KEY_DELETED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: License key \"%{filename}\" has expired.", processor_chain([ - dup21, - dup22, - setc("event_description","License key has expired"), - dup23, -])); - -var msg291 = msg("LICENSE_EXPIRED_KEY_DELETED", part311); - -var part312 = match("MESSAGE#287:LICENSE_NEARING_EXPIRY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: License for feature %{disposition->} %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","License key expiration soon"), - dup23, -])); - -var msg292 = msg("LICENSE_NEARING_EXPIRY", part312); - -var part313 = match("MESSAGE#288:LOGIN_ABORTED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Client aborted login", processor_chain([ - dup30, - dup22, - setc("event_description","client aborted login"), - dup23, -])); - -var msg293 = msg("LOGIN_ABORTED", part313); - -var part314 = match("MESSAGE#289:LOGIN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Login failed for user %{username->} from host %{dhost}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - dup23, -])); - -var msg294 = msg("LOGIN_FAILED", part314); - -var part315 = match("MESSAGE#290:LOGIN_FAILED_INCORRECT_PASSWORD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Incorrect password for user %{username}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Incorrect password for user"), - dup23, -])); - -var msg295 = msg("LOGIN_FAILED_INCORRECT_PASSWORD", part315); - -var part316 = match("MESSAGE#291:LOGIN_FAILED_SET_CONTEXT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to set context for user %{username}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Failed to set context for user"), - dup23, -])); - -var msg296 = msg("LOGIN_FAILED_SET_CONTEXT", part316); - -var part317 = match("MESSAGE#292:LOGIN_FAILED_SET_LOGIN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to set login ID for user %{username}: %{dhost}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Failed to set login ID for user"), - dup23, -])); - -var msg297 = msg("LOGIN_FAILED_SET_LOGIN", part317); - -var part318 = match("MESSAGE#293:LOGIN_HOSTNAME_UNRESOLVED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to resolve hostname %{dhost}: %{info}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Unable to resolve hostname"), - dup23, -])); - -var msg298 = msg("LOGIN_HOSTNAME_UNRESOLVED", part318); - -var part319 = match("MESSAGE#294:LOGIN_INFORMATION/2", "nwparser.p0", "%{event_type}: %{p0}"); - -var part320 = match("MESSAGE#294:LOGIN_INFORMATION/4", "nwparser.p0", "%{username->} logged in from host %{dhost->} on %{p0}"); - -var part321 = match("MESSAGE#294:LOGIN_INFORMATION/5_0", "nwparser.p0", "device %{p0}"); - -var select34 = linear_select([ - part321, - dup45, -]); - -var part322 = match("MESSAGE#294:LOGIN_INFORMATION/6", "nwparser.p0", "%{terminal}"); - -var all19 = all_match({ - processors: [ - dup39, - dup137, - part319, - dup145, - part320, - select34, - part322, - ], - on_success: processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup37, - dup22, - setc("event_description","Successful Login"), - dup23, - ]), -}); - -var msg299 = msg("LOGIN_INFORMATION", all19); - -var part323 = match("MESSAGE#295:LOGIN_INVALID_LOCAL_USER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No entry in local password file for user %{username}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","No entry in local password file for user"), - dup23, -])); - -var msg300 = msg("LOGIN_INVALID_LOCAL_USER", part323); - -var part324 = match("MESSAGE#296:LOGIN_MALFORMED_USER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Invalid username: %{username}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Invalid username"), - dup23, -])); - -var msg301 = msg("LOGIN_MALFORMED_USER", part324); - -var part325 = match("MESSAGE#297:LOGIN_PAM_AUTHENTICATION_ERROR/1_0", "nwparser.p0", "PAM authentication error for user %{p0}"); - -var part326 = match("MESSAGE#297:LOGIN_PAM_AUTHENTICATION_ERROR/1_1", "nwparser.p0", "Failed password for user %{p0}"); - -var select35 = linear_select([ - part325, - part326, -]); - -var part327 = match("MESSAGE#297:LOGIN_PAM_AUTHENTICATION_ERROR/2", "nwparser.p0", "%{username}"); - -var all20 = all_match({ - processors: [ - dup50, - select35, - part327, - ], - on_success: processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","PAM authentication error for user"), - dup23, - ]), -}); - -var msg302 = msg("LOGIN_PAM_AUTHENTICATION_ERROR", all20); - -var part328 = match("MESSAGE#298:LOGIN_PAM_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failure while authenticating user %{username}: %{dhost}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - setc("event_description","PAM authentication failure"), - setc("result","Failure while authenticating user"), - dup23, -])); - -var msg303 = msg("LOGIN_PAM_ERROR", part328); - -var part329 = match("MESSAGE#299:LOGIN_PAM_MAX_RETRIES", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Too many retries while authenticating user %{username}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Too many retries while authenticating user"), - dup23, -])); - -var msg304 = msg("LOGIN_PAM_MAX_RETRIES", part329); - -var part330 = match("MESSAGE#300:LOGIN_PAM_NONLOCAL_USER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User %{username->} authenticated but has no local login ID", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","User authenticated but has no local login ID"), - dup23, -])); - -var msg305 = msg("LOGIN_PAM_NONLOCAL_USER", part330); - -var part331 = match("MESSAGE#301:LOGIN_PAM_STOP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to end PAM session: %{info}", processor_chain([ - setc("eventcategory","1303000000"), - dup34, - dup43, - dup22, - setc("event_description","Failed to end PAM session"), - dup23, -])); - -var msg306 = msg("LOGIN_PAM_STOP", part331); - -var part332 = match("MESSAGE#302:LOGIN_PAM_USER_UNKNOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Attempt to authenticate unknown user %{username}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Attempt to authenticate unknown user"), - dup23, -])); - -var msg307 = msg("LOGIN_PAM_USER_UNKNOWN", part332); - -var part333 = match("MESSAGE#303:LOGIN_PASSWORD_EXPIRED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Forcing change of expired password for user %{username}>", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Forcing change of expired password for user"), - dup23, -])); - -var msg308 = msg("LOGIN_PASSWORD_EXPIRED", part333); - -var part334 = match("MESSAGE#304:LOGIN_REFUSED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Login of user %{username->} from host %{shost->} on %{terminal->} was refused: %{info}", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup75, - setc("result","Login of user refused"), - dup23, -])); - -var msg309 = msg("LOGIN_REFUSED", part334); - -var part335 = match("MESSAGE#305:LOGIN_ROOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User %{username->} logged in as root from host %{shost->} on %{terminal}", processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup37, - dup22, - setc("event_description","successful login as root"), - setc("result","User logged in as root"), - dup23, -])); - -var msg310 = msg("LOGIN_ROOT", part335); - -var part336 = match("MESSAGE#306:LOGIN_TIMED_OUT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Login attempt timed out after %{dclass_counter1->} seconds", processor_chain([ - dup44, - dup34, - dup36, - dup43, - dup22, - dup75, - setc("result","Login attempt timed out"), - dup23, -])); - -var msg311 = msg("LOGIN_TIMED_OUT", part336); - -var part337 = match("MESSAGE#307:MIB2D_ATM_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","MIB2D ATM ERROR"), - dup23, -])); - -var msg312 = msg("MIB2D_ATM_ERROR", part337); - -var part338 = match("MESSAGE#308:MIB2D_CONFIG_CHECK_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","CONFIG CHECK FAILED"), - dup23, -])); - -var msg313 = msg("MIB2D_CONFIG_CHECK_FAILED", part338); - -var part339 = match("MESSAGE#309:MIB2D_FILE_OPEN_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to open file '%{filename}': %{result}", processor_chain([ - dup30, - dup22, - dup78, - dup23, -])); - -var msg314 = msg("MIB2D_FILE_OPEN_FAILURE", part339); - -var msg315 = msg("MIB2D_IFD_IFINDEX_FAILURE", dup146); - -var msg316 = msg("MIB2D_IFL_IFINDEX_FAILURE", dup146); - -var part340 = match("MESSAGE#312:MIB2D_INIT_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: mib2d initialization failure: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","mib2d initialization failure"), - dup23, -])); - -var msg317 = msg("MIB2D_INIT_FAILURE", part340); - -var part341 = match("MESSAGE#313:MIB2D_KVM_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","MIB2D KVM FAILURE"), - dup23, -])); - -var msg318 = msg("MIB2D_KVM_FAILURE", part341); - -var part342 = match("MESSAGE#314:MIB2D_RTSLIB_READ_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: failed in %{dclass_counter1->} %{dclass_counter2->} index (%{result})", processor_chain([ - dup30, - dup22, - setc("event_description","MIB2D RTSLIB READ FAILURE"), - dup23, -])); - -var msg319 = msg("MIB2D_RTSLIB_READ_FAILURE", part342); - -var part343 = match("MESSAGE#315:MIB2D_RTSLIB_SEQ_MISMATCH", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: sequence mismatch (%{result}), %{action}", processor_chain([ - dup30, - dup22, - setc("event_description","RTSLIB sequence mismatch"), - dup23, -])); - -var msg320 = msg("MIB2D_RTSLIB_SEQ_MISMATCH", part343); - -var part344 = match("MESSAGE#316:MIB2D_SYSCTL_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","MIB2D SYSCTL FAILURE"), - dup23, -])); - -var msg321 = msg("MIB2D_SYSCTL_FAILURE", part344); - -var part345 = match("MESSAGE#317:MIB2D_TRAP_HEADER_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: trap_request_header failed", processor_chain([ - dup30, - dup22, - setc("event_description","trap_request_header failed"), - dup23, -])); - -var msg322 = msg("MIB2D_TRAP_HEADER_FAILURE", part345); - -var part346 = match("MESSAGE#318:MIB2D_TRAP_SEND_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{service}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","MIB2D TRAP SEND FAILURE"), - dup23, -])); - -var msg323 = msg("MIB2D_TRAP_SEND_FAILURE", part346); - -var part347 = match("MESSAGE#319:Multiuser", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: old requested_transition==%{change_new->} sighupped=%{result}", processor_chain([ - dup21, - dup22, - setc("event_description","user sighupped"), - dup23, -])); - -var msg324 = msg("Multiuser", part347); - -var part348 = match("MESSAGE#320:NASD_AUTHENTICATION_CREATE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to allocate authentication handle: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to allocate authentication handle"), - dup23, -])); - -var msg325 = msg("NASD_AUTHENTICATION_CREATE_FAILED", part348); - -var part349 = match("MESSAGE#321:NASD_CHAP_AUTHENTICATION_IN_PROGRESS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{interface}: received %{filename}, authentication already in progress", processor_chain([ - dup80, - dup34, - dup43, - dup22, - setc("event_description","authentication already in progress"), - dup23, -])); - -var msg326 = msg("NASD_CHAP_AUTHENTICATION_IN_PROGRESS", part349); - -var part350 = match("MESSAGE#322:NASD_CHAP_GETHOSTNAME_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{interface}: unable to obtain hostname for outgoing CHAP message: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","unable to obtain hostname for outgoing CHAP message"), - dup23, -])); - -var msg327 = msg("NASD_CHAP_GETHOSTNAME_FAILED", part350); - -var part351 = match("MESSAGE#323:NASD_CHAP_INVALID_CHAP_IDENTIFIER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{interface}: received %{filename->} expected CHAP ID: %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","CHAP INVALID_CHAP IDENTIFIER"), - dup23, -])); - -var msg328 = msg("NASD_CHAP_INVALID_CHAP_IDENTIFIER", part351); - -var part352 = match("MESSAGE#324:NASD_CHAP_INVALID_OPCODE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{interface}.%{dclass_counter1}: invalid operation code received %{filename}, CHAP ID: %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","CHAP INVALID OPCODE"), - dup23, -])); - -var msg329 = msg("NASD_CHAP_INVALID_OPCODE", part352); - -var part353 = match("MESSAGE#325:NASD_CHAP_LOCAL_NAME_UNAVAILABLE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to determine value for '%{username}' in outgoing CHAP packet", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to determine value for username in outgoing CHAP packet"), - dup23, -])); - -var msg330 = msg("NASD_CHAP_LOCAL_NAME_UNAVAILABLE", part353); - -var part354 = match("MESSAGE#326:NASD_CHAP_MESSAGE_UNEXPECTED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{interface}: received %{filename}", processor_chain([ - dup30, - dup22, - setc("event_description","CHAP MESSAGE UNEXPECTED"), - dup23, -])); - -var msg331 = msg("NASD_CHAP_MESSAGE_UNEXPECTED", part354); - -var part355 = match("MESSAGE#327:NASD_CHAP_REPLAY_ATTACK_DETECTED", "nwparser.payload", "%{process}[%{ssid}]: %{event_type}: %{interface}.%{dclass_counter1}: received %{filename->} %{result}.%{info}", processor_chain([ - dup81, - dup22, - setc("event_description","CHAP REPLAY ATTACK DETECTED"), - dup23, -])); - -var msg332 = msg("NASD_CHAP_REPLAY_ATTACK_DETECTED", part355); - -var part356 = match("MESSAGE#328:NASD_CONFIG_GET_LAST_MODIFIED_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to determine last modified time of JUNOS configuration database: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to determine last modified time of JUNOS configuration database"), - dup23, -])); - -var msg333 = msg("NASD_CONFIG_GET_LAST_MODIFIED_FAILED", part356); - -var msg334 = msg("NASD_DAEMONIZE_FAILED", dup140); - -var part357 = match("MESSAGE#330:NASD_DB_ALLOC_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to allocate database object: %{filename}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to allocate database object"), - dup23, -])); - -var msg335 = msg("NASD_DB_ALLOC_FAILURE", part357); - -var part358 = match("MESSAGE#331:NASD_DB_TABLE_CREATE_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{filename}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","DB TABLE CREATE FAILURE"), - dup23, -])); - -var msg336 = msg("NASD_DB_TABLE_CREATE_FAILURE", part358); - -var msg337 = msg("NASD_DUPLICATE", dup141); - -var part359 = match("MESSAGE#333:NASD_EVLIB_CREATE_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action->} with: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","EVLIB CREATE FAILURE"), - dup23, -])); - -var msg338 = msg("NASD_EVLIB_CREATE_FAILURE", part359); - -var part360 = match("MESSAGE#334:NASD_EVLIB_EXIT_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action->} value: %{result}, error: %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","EVLIB EXIT FAILURE"), - dup23, -])); - -var msg339 = msg("NASD_EVLIB_EXIT_FAILURE", part360); - -var part361 = match("MESSAGE#335:NASD_LOCAL_CREATE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to allocate LOCAL module handle: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to allocate LOCAL module handle"), - dup23, -])); - -var msg340 = msg("NASD_LOCAL_CREATE_FAILED", part361); - -var part362 = match("MESSAGE#336:NASD_NOT_ROOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Must be run as root", processor_chain([ - dup63, - dup22, - setc("event_description","NASD must be run as root"), - dup23, -])); - -var msg341 = msg("NASD_NOT_ROOT", part362); - -var msg342 = msg("NASD_PID_FILE_LOCK", dup142); - -var msg343 = msg("NASD_PID_FILE_UPDATE", dup143); - -var part363 = match("MESSAGE#339:NASD_POST_CONFIGURE_EVENT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","POST CONFIGURE EVENT FAILED"), - dup23, -])); - -var msg344 = msg("NASD_POST_CONFIGURE_EVENT_FAILED", part363); - -var part364 = match("MESSAGE#340:NASD_PPP_READ_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","PPP READ FAILURE"), - dup23, -])); - -var msg345 = msg("NASD_PPP_READ_FAILURE", part364); - -var part365 = match("MESSAGE#341:NASD_PPP_SEND_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to send message: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to send message"), - dup23, -])); - -var msg346 = msg("NASD_PPP_SEND_FAILURE", part365); - -var part366 = match("MESSAGE#342:NASD_PPP_SEND_PARTIAL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to send all of message: %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to send all of message"), - dup23, -])); - -var msg347 = msg("NASD_PPP_SEND_PARTIAL", part366); - -var part367 = match("MESSAGE#343:NASD_PPP_UNRECOGNIZED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unrecognized authentication protocol: %{protocol}", processor_chain([ - dup30, - dup22, - setc("event_description","Unrecognized authentication protocol"), - dup23, -])); - -var msg348 = msg("NASD_PPP_UNRECOGNIZED", part367); - -var part368 = match("MESSAGE#344:NASD_RADIUS_ALLOCATE_PASSWORD_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action->} when allocating password for RADIUS: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RADIUS password allocation failure"), - dup23, -])); - -var msg349 = msg("NASD_RADIUS_ALLOCATE_PASSWORD_FAILED", part368); - -var part369 = match("MESSAGE#345:NASD_RADIUS_CONFIG_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RADIUS CONFIG FAILED"), - dup23, -])); - -var msg350 = msg("NASD_RADIUS_CONFIG_FAILED", part369); - -var part370 = match("MESSAGE#346:NASD_RADIUS_CREATE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to allocate RADIUS module handle: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to allocate RADIUS module handle"), - dup23, -])); - -var msg351 = msg("NASD_RADIUS_CREATE_FAILED", part370); - -var part371 = match("MESSAGE#347:NASD_RADIUS_CREATE_REQUEST_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RADIUS CREATE REQUEST FAILED"), - dup23, -])); - -var msg352 = msg("NASD_RADIUS_CREATE_REQUEST_FAILED", part371); - -var part372 = match("MESSAGE#348:NASD_RADIUS_GETHOSTNAME_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to obtain hostname for outgoing RADIUS message: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to obtain hostname for outgoing RADIUS message"), - dup23, -])); - -var msg353 = msg("NASD_RADIUS_GETHOSTNAME_FAILED", part372); - -var part373 = match("MESSAGE#349:NASD_RADIUS_MESSAGE_UNEXPECTED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unknown response from RADIUS server: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unknown response from RADIUS server"), - dup23, -])); - -var msg354 = msg("NASD_RADIUS_MESSAGE_UNEXPECTED", part373); - -var part374 = match("MESSAGE#350:NASD_RADIUS_OPEN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RADIUS OPEN FAILED"), - dup23, -])); - -var msg355 = msg("NASD_RADIUS_OPEN_FAILED", part374); - -var part375 = match("MESSAGE#351:NASD_RADIUS_SELECT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RADIUS SELECT FAILED"), - dup23, -])); - -var msg356 = msg("NASD_RADIUS_SELECT_FAILED", part375); - -var part376 = match("MESSAGE#352:NASD_RADIUS_SET_TIMER_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RADIUS SET TIMER FAILED"), - dup23, -])); - -var msg357 = msg("NASD_RADIUS_SET_TIMER_FAILED", part376); - -var part377 = match("MESSAGE#353:NASD_TRACE_FILE_OPEN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TRACE FILE OPEN FAILED"), - dup23, -])); - -var msg358 = msg("NASD_TRACE_FILE_OPEN_FAILED", part377); - -var part378 = match("MESSAGE#354:NASD_usage", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}: %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","NASD Usage"), - dup23, -])); - -var msg359 = msg("NASD_usage", part378); - -var part379 = match("MESSAGE#355:NOTICE", "nwparser.payload", "%{agent}: %{event_type}:%{action}: %{event_description}: The %{result}", processor_chain([ - dup21, - dup22, - dup23, -])); - -var msg360 = msg("NOTICE", part379); - -var part380 = match("MESSAGE#356:PFE_FW_SYSLOG_IP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: FW: %{smacaddr->} %{fld10->} %{protocol->} %{saddr->} %{daddr->} %{sport->} %{dport->} (%{packets->} packets)", processor_chain([ - dup21, - dup22, - dup82, - dup23, -])); - -var msg361 = msg("PFE_FW_SYSLOG_IP", part380); - -var part381 = match("MESSAGE#357:PFE_FW_SYSLOG_IP:01", "nwparser.payload", "%{hostip->} %{hostname->} %{event_type}: FW: %{smacaddr->} %{fld10->} %{protocol->} %{saddr->} %{daddr->} %{sport->} %{dport->} (%{packets->} packets)", processor_chain([ - dup21, - dup22, - dup82, - dup23, -])); - -var msg362 = msg("PFE_FW_SYSLOG_IP:01", part381); - -var select36 = linear_select([ - msg361, - msg362, -]); - -var part382 = match("MESSAGE#358:PFE_NH_RESOLVE_THROTTLED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Next-hop resolution requests from interface %{interface->} throttled", processor_chain([ - dup21, - dup22, - setc("event_description","Next-hop resolution requests throttled"), - dup23, -])); - -var msg363 = msg("PFE_NH_RESOLVE_THROTTLED", part382); - -var part383 = match("MESSAGE#359:PING_TEST_COMPLETED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pingCtlOwnerIndex = %{dclass_counter1}, pingCtlTestName = %{obj_name}", processor_chain([ - dup21, - dup22, - setc("event_description","PING TEST COMPLETED"), - dup23, -])); - -var msg364 = msg("PING_TEST_COMPLETED", part383); - -var part384 = match("MESSAGE#360:PING_TEST_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pingCtlOwnerIndex = %{dclass_counter1}, pingCtlTestName = %{obj_name}", processor_chain([ - dup21, - dup22, - setc("event_description","PING TEST FAILED"), - dup23, -])); - -var msg365 = msg("PING_TEST_FAILED", part384); - -var part385 = match("MESSAGE#361:process_mode/2", "nwparser.p0", "%{p0}"); - -var part386 = match("MESSAGE#361:process_mode/3_0", "nwparser.p0", "%{event_type}: %{p0}"); - -var part387 = match("MESSAGE#361:process_mode/3_1", "nwparser.p0", "%{event_type->} %{p0}"); - -var select37 = linear_select([ - part386, - part387, -]); - -var part388 = match("MESSAGE#361:process_mode/4", "nwparser.p0", "mode=%{protocol->} cmd=%{action->} master_mode=%{result}"); - -var all21 = all_match({ - processors: [ - dup39, - dup137, - part385, - select37, - part388, - ], - on_success: processor_chain([ - dup21, - dup22, - dup83, - dup23, - ]), -}); - -var msg366 = msg("process_mode", all21); - -var part389 = match("MESSAGE#362:process_mode:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: current_mode=%{protocol}, requested_mode=%{result}, cmd=%{action}", processor_chain([ - dup21, - dup22, - dup83, - dup23, -])); - -var msg367 = msg("process_mode:01", part389); - -var select38 = linear_select([ - msg366, - msg367, -]); - -var part390 = match("MESSAGE#363:PWC_EXIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Process %{agent->} exiting with status %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","process exit with status"), - dup23, -])); - -var msg368 = msg("PWC_EXIT", part390); - -var part391 = match("MESSAGE#364:PWC_HOLD_RELEASE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Process %{agent->} released child %{child_pid->} from %{dclass_counter1->} state", processor_chain([ - dup21, - dup22, - setc("event_description","Process released child from state"), - dup23, -])); - -var msg369 = msg("PWC_HOLD_RELEASE", part391); - -var part392 = match("MESSAGE#365:PWC_INVALID_RUNS_ARGUMENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result}, not %{resultcode}", processor_chain([ - dup21, - dup22, - setc("event_description","invalid runs argument"), - dup23, -])); - -var msg370 = msg("PWC_INVALID_RUNS_ARGUMENT", part392); - -var part393 = match("MESSAGE#366:PWC_INVALID_TIMEOUT_ARGUMENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","INVALID TIMEOUT ARGUMENT"), - dup23, -])); - -var msg371 = msg("PWC_INVALID_TIMEOUT_ARGUMENT", part393); - -var part394 = match("MESSAGE#367:PWC_KILLED_BY_SIGNAL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pwc process %{agent->} received terminating signal", processor_chain([ - dup21, - dup22, - setc("event_description","pwc process received terminating signal"), - dup23, -])); - -var msg372 = msg("PWC_KILLED_BY_SIGNAL", part394); - -var part395 = match("MESSAGE#368:PWC_KILL_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pwc is sending %{resultcode->} to child %{child_pid}", processor_chain([ - dup30, - dup22, - setc("event_description","pwc is sending kill event to child"), - dup23, -])); - -var msg373 = msg("PWC_KILL_EVENT", part395); - -var part396 = match("MESSAGE#369:PWC_KILL_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to kill process %{child_pid}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to kill process"), - dup23, -])); - -var msg374 = msg("PWC_KILL_FAILED", part396); - -var part397 = match("MESSAGE#370:PWC_KQUEUE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: kevent failed: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","kevent failed"), - dup23, -])); - -var msg375 = msg("PWC_KQUEUE_ERROR", part397); - -var part398 = match("MESSAGE#371:PWC_KQUEUE_INIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to create kqueue: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to create kqueue"), - dup23, -])); - -var msg376 = msg("PWC_KQUEUE_INIT", part398); - -var part399 = match("MESSAGE#372:PWC_KQUEUE_REGISTER_FILTER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to register kqueue filter: %{agent->} for purpose: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Failed to register kqueue filter"), - dup23, -])); - -var msg377 = msg("PWC_KQUEUE_REGISTER_FILTER", part399); - -var part400 = match("MESSAGE#373:PWC_LOCKFILE_BAD_FORMAT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: PID lock file has bad format: %{agent}", processor_chain([ - dup30, - dup22, - setc("event_description","PID lock file has bad format"), - dup23, -])); - -var msg378 = msg("PWC_LOCKFILE_BAD_FORMAT", part400); - -var part401 = match("MESSAGE#374:PWC_LOCKFILE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: PID lock file had error: %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","PID lock file error"), - dup23, -])); - -var msg379 = msg("PWC_LOCKFILE_ERROR", part401); - -var part402 = match("MESSAGE#375:PWC_LOCKFILE_MISSING", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: PID lock file not found: %{agent}", processor_chain([ - dup30, - dup22, - setc("event_description","PID lock file not found"), - dup23, -])); - -var msg380 = msg("PWC_LOCKFILE_MISSING", part402); - -var part403 = match("MESSAGE#376:PWC_LOCKFILE_NOT_LOCKED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: PID lock file not locked: %{agent}", processor_chain([ - dup30, - dup22, - setc("event_description","PID lock file not locked"), - dup23, -])); - -var msg381 = msg("PWC_LOCKFILE_NOT_LOCKED", part403); - -var part404 = match("MESSAGE#377:PWC_NO_PROCESS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No process specified", processor_chain([ - dup30, - dup22, - setc("event_description","No process specified for PWC"), - dup23, -])); - -var msg382 = msg("PWC_NO_PROCESS", part404); - -var part405 = match("MESSAGE#378:PWC_PROCESS_EXIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pwc process %{agent->} child %{child_pid->} exited with status %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","pwc process exited with status"), - dup23, -])); - -var msg383 = msg("PWC_PROCESS_EXIT", part405); - -var part406 = match("MESSAGE#379:PWC_PROCESS_FORCED_HOLD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Process %{agent->} forcing hold down of child %{child_pid->} until signal", processor_chain([ - dup21, - dup22, - setc("event_description","Process forcing hold down of child until signalled"), - dup23, -])); - -var msg384 = msg("PWC_PROCESS_FORCED_HOLD", part406); - -var part407 = match("MESSAGE#380:PWC_PROCESS_HOLD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Process %{agent->} holding down child %{child_pid->} until signal", processor_chain([ - dup21, - dup22, - setc("event_description","Process holding down child until signalled"), - dup23, -])); - -var msg385 = msg("PWC_PROCESS_HOLD", part407); - -var part408 = match("MESSAGE#381:PWC_PROCESS_HOLD_SKIPPED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Process %{agent->} will not down child %{child_pid->} because of %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Process not holding down child"), - dup23, -])); - -var msg386 = msg("PWC_PROCESS_HOLD_SKIPPED", part408); - -var part409 = match("MESSAGE#382:PWC_PROCESS_OPEN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to create child process with pidpopen: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Failed to create child process with pidpopen"), - dup23, -])); - -var msg387 = msg("PWC_PROCESS_OPEN", part409); - -var part410 = match("MESSAGE#383:PWC_PROCESS_TIMED_HOLD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Process %{agent->} holding down child %{child_pid->} %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Process holding down child"), - dup23, -])); - -var msg388 = msg("PWC_PROCESS_TIMED_HOLD", part410); - -var part411 = match("MESSAGE#384:PWC_PROCESS_TIMEOUT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Child timed out %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Child process timed out"), - dup23, -])); - -var msg389 = msg("PWC_PROCESS_TIMEOUT", part411); - -var part412 = match("MESSAGE#385:PWC_SIGNAL_INIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: signal(%{agent}) failed: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","signal failure"), - dup23, -])); - -var msg390 = msg("PWC_SIGNAL_INIT", part412); - -var part413 = match("MESSAGE#386:PWC_SOCKET_CONNECT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to connect socket to %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to connect socket to service"), - dup23, -])); - -var msg391 = msg("PWC_SOCKET_CONNECT", part413); - -var part414 = match("MESSAGE#387:PWC_SOCKET_CREATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Failed to create socket: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Failed to create socket"), - dup23, -])); - -var msg392 = msg("PWC_SOCKET_CREATE", part414); - -var part415 = match("MESSAGE#388:PWC_SOCKET_OPTION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to set socket option %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to set socket option"), - dup23, -])); - -var msg393 = msg("PWC_SOCKET_OPTION", part415); - -var part416 = match("MESSAGE#389:PWC_STDOUT_WRITE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Write to stdout failed: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Write to stdout failed"), - dup23, -])); - -var msg394 = msg("PWC_STDOUT_WRITE", part416); - -var part417 = match("MESSAGE#390:PWC_SYSTEM_CALL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","PWC SYSTEM CALL"), - dup23, -])); - -var msg395 = msg("PWC_SYSTEM_CALL", part417); - -var part418 = match("MESSAGE#391:PWC_UNKNOWN_KILL_OPTION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unknown kill option [%{agent}]", processor_chain([ - dup30, - dup22, - setc("event_description","Unknown kill option"), - dup23, -])); - -var msg396 = msg("PWC_UNKNOWN_KILL_OPTION", part418); - -var part419 = match("MESSAGE#392:RMOPD_ADDRESS_MULTICAST_INVALID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Multicast address is not allowed", processor_chain([ - dup30, - dup22, - setc("event_description","Multicast address not allowed"), - dup23, -])); - -var msg397 = msg("RMOPD_ADDRESS_MULTICAST_INVALID", part419); - -var part420 = match("MESSAGE#393:RMOPD_ADDRESS_SOURCE_INVALID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Source address invalid: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RMOPD ADDRESS SOURCE INVALID"), - dup23, -])); - -var msg398 = msg("RMOPD_ADDRESS_SOURCE_INVALID", part420); - -var part421 = match("MESSAGE#394:RMOPD_ADDRESS_STRING_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to convert numeric address to string: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to convert numeric address to string"), - dup23, -])); - -var msg399 = msg("RMOPD_ADDRESS_STRING_FAILURE", part421); - -var part422 = match("MESSAGE#395:RMOPD_ADDRESS_TARGET_INVALID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: rmop_util_set_address status message: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","rmop_util_set_address status message invalid"), - dup23, -])); - -var msg400 = msg("RMOPD_ADDRESS_TARGET_INVALID", part422); - -var msg401 = msg("RMOPD_DUPLICATE", dup141); - -var part423 = match("MESSAGE#397:RMOPD_ICMP_ADDRESS_TYPE_UNSUPPORTED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Only IPv4 source address is supported", processor_chain([ - dup30, - dup22, - setc("event_description","Only IPv4 source address is supported"), - dup23, -])); - -var msg402 = msg("RMOPD_ICMP_ADDRESS_TYPE_UNSUPPORTED", part423); - -var part424 = match("MESSAGE#398:RMOPD_ICMP_SENDMSG_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{fld1}: No route to host", processor_chain([ - dup30, - dup22, - setc("event_description","No route to host"), - dup23, -])); - -var msg403 = msg("RMOPD_ICMP_SENDMSG_FAILURE", part424); - -var part425 = match("MESSAGE#399:RMOPD_IFINDEX_NOT_ACTIVE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifindex: %{interface}", processor_chain([ - dup30, - dup22, - setc("event_description","IFINDEX NOT ACTIVE"), - dup23, -])); - -var msg404 = msg("RMOPD_IFINDEX_NOT_ACTIVE", part425); - -var part426 = match("MESSAGE#400:RMOPD_IFINDEX_NO_INFO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No information for %{interface}, message: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","IFINDEX NO INFO"), - dup23, -])); - -var msg405 = msg("RMOPD_IFINDEX_NO_INFO", part426); - -var part427 = match("MESSAGE#401:RMOPD_IFNAME_NOT_ACTIVE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifname: %{interface}", processor_chain([ - dup30, - dup22, - setc("event_description","RMOPD IFNAME NOT ACTIVE"), - dup23, -])); - -var msg406 = msg("RMOPD_IFNAME_NOT_ACTIVE", part427); - -var part428 = match("MESSAGE#402:RMOPD_IFNAME_NO_INFO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No information for %{interface}, message: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","IFNAME NO INFO"), - dup23, -])); - -var msg407 = msg("RMOPD_IFNAME_NO_INFO", part428); - -var part429 = match("MESSAGE#403:RMOPD_NOT_ROOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Must be run as root", processor_chain([ - dup63, - dup22, - setc("event_description","RMOPD Must be run as root"), - dup23, -])); - -var msg408 = msg("RMOPD_NOT_ROOT", part429); - -var part430 = match("MESSAGE#404:RMOPD_ROUTING_INSTANCE_NO_INFO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No information for routing instance %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","No information for routing instance"), - dup23, -])); - -var msg409 = msg("RMOPD_ROUTING_INSTANCE_NO_INFO", part430); - -var part431 = match("MESSAGE#405:RMOPD_TRACEROUTE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TRACEROUTE ERROR"), - dup23, -])); - -var msg410 = msg("RMOPD_TRACEROUTE_ERROR", part431); - -var part432 = match("MESSAGE#406:RMOPD_usage", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}: %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","RMOPD usage"), - dup23, -])); - -var msg411 = msg("RMOPD_usage", part432); - -var part433 = match("MESSAGE#407:RPD_ABORT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action->} version built by builder on %{dclass_counter1}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RPD ABORT"), - dup23, -])); - -var msg412 = msg("RPD_ABORT", part433); - -var part434 = match("MESSAGE#408:RPD_ACTIVE_TERMINATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Exiting with active tasks: %{agent}", processor_chain([ - dup30, - dup22, - setc("event_description","RPD exiting with active tasks"), - dup23, -])); - -var msg413 = msg("RPD_ACTIVE_TERMINATE", part434); - -var part435 = match("MESSAGE#409:RPD_ASSERT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Assertion failed %{resultcode}: file \"%{filename}\", line %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","RPD Assertion failed"), - dup23, -])); - -var msg414 = msg("RPD_ASSERT", part435); - -var part436 = match("MESSAGE#410:RPD_ASSERT_SOFT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Soft assertion failed %{resultcode}: file \"%{filename}\", line %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","RPD Soft assertion failed"), - dup23, -])); - -var msg415 = msg("RPD_ASSERT_SOFT", part436); - -var part437 = match("MESSAGE#411:RPD_EXIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action->} version built by builder on %{dclass_counter1}", processor_chain([ - dup21, - dup22, - setc("event_description","RPD EXIT"), - dup23, -])); - -var msg416 = msg("RPD_EXIT", part437); - -var msg417 = msg("RPD_IFL_INDEXCOLLISION", dup147); - -var msg418 = msg("RPD_IFL_NAMECOLLISION", dup147); - -var part438 = match("MESSAGE#414:RPD_ISIS_ADJDOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: IS-IS lost %{dclass_counter1->} adjacency to %{dclass_counter2->} on %{interface}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","IS-IS lost adjacency"), - dup23, -])); - -var msg419 = msg("RPD_ISIS_ADJDOWN", part438); - -var part439 = match("MESSAGE#415:RPD_ISIS_ADJUP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: IS-IS new %{dclass_counter1->} adjacency to %{dclass_counter2->} %{interface}", processor_chain([ - dup21, - dup22, - setc("event_description","IS-IS new adjacency"), - dup23, -])); - -var msg420 = msg("RPD_ISIS_ADJUP", part439); - -var part440 = match("MESSAGE#416:RPD_ISIS_ADJUPNOIP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: IS-IS new %{dclass_counter1->} adjacency to %{dclass_counter2->} %{interface->} without an address", processor_chain([ - dup30, - dup22, - setc("event_description","IS-IS new adjacency without an address"), - dup23, -])); - -var msg421 = msg("RPD_ISIS_ADJUPNOIP", part440); - -var part441 = match("MESSAGE#417:RPD_ISIS_LSPCKSUM", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: IS-IS %{dclass_counter1->} LSP checksum error, interface %{interface}, LSP id %{id}, sequence %{dclass_counter2}, checksum %{resultcode}, lifetime %{fld2}", processor_chain([ - dup30, - dup22, - setc("event_description","IS-IS LSP checksum error on iterface"), - dup23, -])); - -var msg422 = msg("RPD_ISIS_LSPCKSUM", part441); - -var part442 = match("MESSAGE#418:RPD_ISIS_OVERLOAD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: IS-IS database overload", processor_chain([ - dup30, - dup22, - setc("event_description","IS-IS database overload"), - dup23, -])); - -var msg423 = msg("RPD_ISIS_OVERLOAD", part442); - -var part443 = match("MESSAGE#419:RPD_KRT_AFUNSUPRT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{resultcode}: received %{agent->} message with unsupported address family %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","message with unsupported address family received"), - dup23, -])); - -var msg424 = msg("RPD_KRT_AFUNSUPRT", part443); - -var part444 = match("MESSAGE#420:RPD_KRT_CCC_IFL_MODIFY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}, error", processor_chain([ - dup30, - dup22, - setc("event_description","RPD KRT CCC IFL MODIFY"), - dup23, -])); - -var msg425 = msg("RPD_KRT_CCC_IFL_MODIFY", part444); - -var part445 = match("MESSAGE#421:RPD_KRT_DELETED_RTT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: received deleted routing table from the kernel for family %{dclass_counter1->} table ID %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","received deleted routing table from kernel"), - dup23, -])); - -var msg426 = msg("RPD_KRT_DELETED_RTT", part445); - -var part446 = match("MESSAGE#422:RPD_KRT_IFA_GENERATION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifa generation mismatch -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","ifa generation mismatch"), - dup23, -])); - -var msg427 = msg("RPD_KRT_IFA_GENERATION", part446); - -var part447 = match("MESSAGE#423:RPD_KRT_IFDCHANGE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} CHANGE for ifd %{interface->} failed, error \"%{result}\"", processor_chain([ - dup30, - dup22, - setc("event_description","CHANGE for ifd failed"), - dup23, -])); - -var msg428 = msg("RPD_KRT_IFDCHANGE", part447); - -var part448 = match("MESSAGE#424:RPD_KRT_IFDEST_GET", "nwparser.payload", "%{process}[%{process_id}]: %{event_type->} SERVICE: %{service->} for ifd %{interface->} failed, error \"%{result}\"", processor_chain([ - dup30, - dup22, - setc("event_description","GET SERVICE failure on interface"), - dup23, -])); - -var msg429 = msg("RPD_KRT_IFDEST_GET", part448); - -var part449 = match("MESSAGE#425:RPD_KRT_IFDGET", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} GET index for ifd interface failed, error \"%{result}\"", processor_chain([ - dup30, - dup22, - setc("event_description","GET index for ifd interface failed"), - dup23, -])); - -var msg430 = msg("RPD_KRT_IFDGET", part449); - -var part450 = match("MESSAGE#426:RPD_KRT_IFD_GENERATION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifd %{dclass_counter1->} generation mismatch -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","ifd generation mismatch"), - dup23, -])); - -var msg431 = msg("RPD_KRT_IFD_GENERATION", part450); - -var part451 = match("MESSAGE#427:RPD_KRT_IFL_CELL_RELAY_MODE_INVALID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifl : %{agent}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","KRT IFL CELL RELAY MODE INVALID"), - dup23, -])); - -var msg432 = msg("RPD_KRT_IFL_CELL_RELAY_MODE_INVALID", part451); - -var part452 = match("MESSAGE#428:RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifl : %{agent}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","KRT IFL CELL RELAY MODE UNSPECIFIED"), - dup23, -])); - -var msg433 = msg("RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED", part452); - -var part453 = match("MESSAGE#429:RPD_KRT_IFL_GENERATION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifl %{interface->} generation mismatch -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","ifl generation mismatch"), - dup23, -])); - -var msg434 = msg("RPD_KRT_IFL_GENERATION", part453); - -var part454 = match("MESSAGE#430:RPD_KRT_KERNEL_BAD_ROUTE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: lost %{interface->} %{dclass_counter1->} for route %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","lost interface for route"), - dup23, -])); - -var msg435 = msg("RPD_KRT_KERNEL_BAD_ROUTE", part454); - -var part455 = match("MESSAGE#431:RPD_KRT_NEXTHOP_OVERFLOW", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: number of next hops (%{dclass_counter1}) exceeded the maximum allowed (%{dclass_counter2}) -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","number of next hops exceeded the maximum"), - dup23, -])); - -var msg436 = msg("RPD_KRT_NEXTHOP_OVERFLOW", part455); - -var part456 = match("MESSAGE#432:RPD_KRT_NOIFD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No device %{dclass_counter1->} for interface %{interface}", processor_chain([ - dup30, - dup22, - setc("event_description","No device for interface"), - dup23, -])); - -var msg437 = msg("RPD_KRT_NOIFD", part456); - -var part457 = match("MESSAGE#433:RPD_KRT_UNKNOWN_RTT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: received routing table message for unknown table with kernel ID %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","received routing table message for unknown table"), - dup23, -])); - -var msg438 = msg("RPD_KRT_UNKNOWN_RTT", part457); - -var part458 = match("MESSAGE#434:RPD_KRT_VERSION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Routing socket version mismatch (%{info}) -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Routing socket version mismatch"), - dup23, -])); - -var msg439 = msg("RPD_KRT_VERSION", part458); - -var part459 = match("MESSAGE#435:RPD_KRT_VERSIONNONE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Routing socket message type %{agent}'s version is not supported by kernel, %{info->} -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Routing socket message type not supported by kernel"), - dup23, -])); - -var msg440 = msg("RPD_KRT_VERSIONNONE", part459); - -var part460 = match("MESSAGE#436:RPD_KRT_VERSIONOLD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Routing socket message type %{agent}'s version is older than expected (%{info}) -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Routing socket message type version is older than expected"), - dup23, -])); - -var msg441 = msg("RPD_KRT_VERSIONOLD", part460); - -var part461 = match("MESSAGE#437:RPD_LDP_INTF_BLOCKED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Duplicate session ID detected from %{daddr}, interface %{interface}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Duplicate session ID detected"), - dup23, -])); - -var msg442 = msg("RPD_LDP_INTF_BLOCKED", part461); - -var part462 = match("MESSAGE#438:RPD_LDP_INTF_UNBLOCKED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: LDP interface %{interface->} is now %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","LDP interface now unblocked"), - dup23, -])); - -var msg443 = msg("RPD_LDP_INTF_UNBLOCKED", part462); - -var part463 = match("MESSAGE#439:RPD_LDP_NBRDOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: LDP neighbor %{daddr->} (%{interface}) is %{result}", processor_chain([ - setc("eventcategory","1603030000"), - dup22, - setc("event_description","LDP neighbor down"), - dup23, -])); - -var msg444 = msg("RPD_LDP_NBRDOWN", part463); - -var part464 = match("MESSAGE#440:RPD_LDP_NBRUP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: LDP neighbor %{daddr->} (%{interface}) is %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","LDP neighbor up"), - dup23, -])); - -var msg445 = msg("RPD_LDP_NBRUP", part464); - -var part465 = match("MESSAGE#441:RPD_LDP_SESSIONDOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: LDP session %{daddr->} is down, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","LDP session down"), - dup23, -])); - -var msg446 = msg("RPD_LDP_SESSIONDOWN", part465); - -var part466 = match("MESSAGE#442:RPD_LDP_SESSIONUP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: LDP session %{daddr->} is up", processor_chain([ - dup21, - dup22, - setc("event_description","LDP session up"), - dup23, -])); - -var msg447 = msg("RPD_LDP_SESSIONUP", part466); - -var part467 = match("MESSAGE#443:RPD_LOCK_FLOCKED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to obtain a lock on %{agent}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to obtain a lock"), - dup23, -])); - -var msg448 = msg("RPD_LOCK_FLOCKED", part467); - -var part468 = match("MESSAGE#444:RPD_LOCK_LOCKED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to obtain a lock on %{agent}, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to obtain service lock"), - dup23, -])); - -var msg449 = msg("RPD_LOCK_LOCKED", part468); - -var part469 = match("MESSAGE#445:RPD_MPLS_LSP_CHANGE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: MPLS LSP %{interface->} %{result->} Route %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","MPLS LSP CHANGE"), - dup23, -])); - -var msg450 = msg("RPD_MPLS_LSP_CHANGE", part469); - -var part470 = match("MESSAGE#446:RPD_MPLS_LSP_DOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: MPLS LSP %{interface->} %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","MPLS LSP DOWN"), - dup23, -])); - -var msg451 = msg("RPD_MPLS_LSP_DOWN", part470); - -var part471 = match("MESSAGE#447:RPD_MPLS_LSP_SWITCH", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: MPLS LSP %{interface->} %{result}, Route %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","MPLS LSP SWITCH"), - dup23, -])); - -var msg452 = msg("RPD_MPLS_LSP_SWITCH", part471); - -var part472 = match("MESSAGE#448:RPD_MPLS_LSP_UP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: MPLS LSP %{interface->} %{result->} Route %{info}", processor_chain([ - dup21, - dup22, - setc("event_description","MPLS LSP UP"), - dup23, -])); - -var msg453 = msg("RPD_MPLS_LSP_UP", part472); - -var part473 = match("MESSAGE#449:RPD_MSDP_PEER_DOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: MSDP peer %{group->} %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","MSDP PEER DOWN"), - dup23, -])); - -var msg454 = msg("RPD_MSDP_PEER_DOWN", part473); - -var part474 = match("MESSAGE#450:RPD_MSDP_PEER_UP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: MSDP peer %{group->} %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","MSDP PEER UP"), - dup23, -])); - -var msg455 = msg("RPD_MSDP_PEER_UP", part474); - -var part475 = match("MESSAGE#451:RPD_OSPF_NBRDOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: OSPF neighbor %{daddr->} (%{interface}) %{disposition->} due to %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","OSPF neighbor down"), - dup23, -])); - -var msg456 = msg("RPD_OSPF_NBRDOWN", part475); - -var part476 = match("MESSAGE#452:RPD_OSPF_NBRUP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: OSPF neighbor %{daddr->} (%{interface}) %{disposition->} due to %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","OSPF neighbor up"), - dup23, -])); - -var msg457 = msg("RPD_OSPF_NBRUP", part476); - -var part477 = match("MESSAGE#453:RPD_OS_MEMHIGH", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Using %{dclass_counter1->} KB of memory, %{info}", processor_chain([ - dup51, - dup22, - setc("event_description","OS MEMHIGH"), - dup23, -])); - -var msg458 = msg("RPD_OS_MEMHIGH", part477); - -var part478 = match("MESSAGE#454:RPD_PIM_NBRDOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: PIM neighbor %{daddr->} timeout interface %{interface}", processor_chain([ - dup30, - dup22, - setc("event_description","PIM neighbor down"), - setc("result","timeout"), - dup23, -])); - -var msg459 = msg("RPD_PIM_NBRDOWN", part478); - -var part479 = match("MESSAGE#455:RPD_PIM_NBRUP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: PIM new neighbor %{daddr->} interface %{interface}", processor_chain([ - dup21, - dup22, - setc("event_description","PIM neighbor up"), - dup23, -])); - -var msg460 = msg("RPD_PIM_NBRUP", part479); - -var part480 = match("MESSAGE#456:RPD_RDISC_CKSUM", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Bad checksum for router solicitation from %{saddr->} to %{daddr}", processor_chain([ - dup30, - dup22, - setc("event_description","Bad checksum for router solicitation"), - dup23, -])); - -var msg461 = msg("RPD_RDISC_CKSUM", part480); - -var part481 = match("MESSAGE#457:RPD_RDISC_NOMULTI", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Ignoring interface %{dclass_counter1->} on %{interface->} -- %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Ignoring interface"), - dup23, -])); - -var msg462 = msg("RPD_RDISC_NOMULTI", part481); - -var part482 = match("MESSAGE#458:RPD_RDISC_NORECVIF", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to locate interface for router solicitation from %{saddr->} to %{daddr}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to locate interface for router"), - dup23, -])); - -var msg463 = msg("RPD_RDISC_NORECVIF", part482); - -var part483 = match("MESSAGE#459:RPD_RDISC_SOLICITADDR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Expected multicast (%{dclass_counter1}) for router solicitation from %{saddr->} to %{daddr}", processor_chain([ - dup30, - dup22, - setc("event_description","Expected multicast for router solicitation"), - dup23, -])); - -var msg464 = msg("RPD_RDISC_SOLICITADDR", part483); - -var part484 = match("MESSAGE#460:RPD_RDISC_SOLICITICMP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Nonzero ICMP code (%{resultcode}) for router solicitation from %{saddr->} to %{daddr}", processor_chain([ - dup30, - dup22, - setc("event_description","Nonzero ICMP code for router solicitation"), - dup23, -])); - -var msg465 = msg("RPD_RDISC_SOLICITICMP", part484); - -var part485 = match("MESSAGE#461:RPD_RDISC_SOLICITLEN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Insufficient length (%{dclass_counter1}) for router solicitation from %{saddr->} to %{daddr}", processor_chain([ - dup30, - dup22, - setc("event_description","Insufficient length for router solicitation"), - dup23, -])); - -var msg466 = msg("RPD_RDISC_SOLICITLEN", part485); - -var part486 = match("MESSAGE#462:RPD_RIP_AUTH", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Update with invalid authentication from %{saddr->} (%{interface})", processor_chain([ - dup30, - dup22, - setc("event_description","RIP update with invalid authentication"), - dup23, -])); - -var msg467 = msg("RPD_RIP_AUTH", part486); - -var part487 = match("MESSAGE#463:RPD_RIP_JOIN_BROADCAST", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to get broadcast address %{interface}; %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RIP - unable to get broadcast address"), - dup23, -])); - -var msg468 = msg("RPD_RIP_JOIN_BROADCAST", part487); - -var part488 = match("MESSAGE#464:RPD_RIP_JOIN_MULTICAST", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to join multicast group %{interface}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RIP - Unable to join multicast group"), - dup23, -])); - -var msg469 = msg("RPD_RIP_JOIN_MULTICAST", part488); - -var part489 = match("MESSAGE#465:RPD_RT_IFUP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: UP route for interface %{interface->} index %{dclass_counter1->} %{saddr}/%{dclass_counter2}", processor_chain([ - dup21, - dup22, - setc("event_description","RIP interface up"), - dup23, -])); - -var msg470 = msg("RPD_RT_IFUP", part489); - -var msg471 = msg("RPD_SCHED_CALLBACK_LONGRUNTIME", dup148); - -var part490 = match("MESSAGE#467:RPD_SCHED_CUMULATIVE_LONGRUNTIME", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: excessive runtime (%{result}) after action of module", processor_chain([ - dup30, - dup22, - setc("event_description","excessive runtime after action of module"), - dup23, -])); - -var msg472 = msg("RPD_SCHED_CUMULATIVE_LONGRUNTIME", part490); - -var msg473 = msg("RPD_SCHED_MODULE_LONGRUNTIME", dup148); - -var part491 = match("MESSAGE#469:RPD_SCHED_TASK_LONGRUNTIME", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} ran for %{dclass_counter1}(%{dclass_counter2})", processor_chain([ - dup30, - dup22, - setc("event_description","task extended runtime"), - dup23, -])); - -var msg474 = msg("RPD_SCHED_TASK_LONGRUNTIME", part491); - -var part492 = match("MESSAGE#470:RPD_SIGNAL_TERMINATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} termination signal received", processor_chain([ - dup30, - dup22, - setc("event_description","termination signal received for service"), - dup23, -])); - -var msg475 = msg("RPD_SIGNAL_TERMINATE", part492); - -var part493 = match("MESSAGE#471:RPD_START", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Start %{dclass_counter1->} version version built %{dclass_counter2}", processor_chain([ - dup21, - dup22, - setc("event_description","version built"), - dup23, -])); - -var msg476 = msg("RPD_START", part493); - -var part494 = match("MESSAGE#472:RPD_SYSTEM", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: detail: %{action}", processor_chain([ - dup21, - dup22, - setc("event_description","system command"), - dup23, -])); - -var msg477 = msg("RPD_SYSTEM", part494); - -var part495 = match("MESSAGE#473:RPD_TASK_BEGIN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Commencing routing updates, version %{dclass_counter1}, built %{dclass_counter2->} by builder", processor_chain([ - dup21, - dup22, - setc("event_description","Commencing routing updates"), - dup23, -])); - -var msg478 = msg("RPD_TASK_BEGIN", part495); - -var part496 = match("MESSAGE#474:RPD_TASK_CHILDKILLED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{dclass_counter2->} %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","task killed by signal"), - dup23, -])); - -var msg479 = msg("RPD_TASK_CHILDKILLED", part496); - -var part497 = match("MESSAGE#475:RPD_TASK_CHILDSTOPPED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{dclass_counter2->} %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","task stopped by signal"), - dup23, -])); - -var msg480 = msg("RPD_TASK_CHILDSTOPPED", part497); - -var part498 = match("MESSAGE#476:RPD_TASK_FORK", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to fork task: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to fork task"), - dup23, -])); - -var msg481 = msg("RPD_TASK_FORK", part498); - -var part499 = match("MESSAGE#477:RPD_TASK_GETWD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: getwd: %{action}", processor_chain([ - dup21, - dup22, - setc("event_description","RPD TASK GETWD"), - dup23, -])); - -var msg482 = msg("RPD_TASK_GETWD", part499); - -var part500 = match("MESSAGE#478:RPD_TASK_NOREINIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Reinitialization not possible", processor_chain([ - dup30, - dup22, - setc("event_description","Reinitialization not possible"), - dup23, -])); - -var msg483 = msg("RPD_TASK_NOREINIT", part500); - -var part501 = match("MESSAGE#479:RPD_TASK_PIDCLOSED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to close and remove %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to close and remove task"), - dup23, -])); - -var msg484 = msg("RPD_TASK_PIDCLOSED", part501); - -var part502 = match("MESSAGE#480:RPD_TASK_PIDFLOCK", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: flock(%{agent}, %{action}): %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RPD TASK PIDFLOCK"), - dup23, -])); - -var msg485 = msg("RPD_TASK_PIDFLOCK", part502); - -var part503 = match("MESSAGE#481:RPD_TASK_PIDWRITE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to write %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to write"), - dup23, -])); - -var msg486 = msg("RPD_TASK_PIDWRITE", part503); - -var msg487 = msg("RPD_TASK_REINIT", dup149); - -var part504 = match("MESSAGE#483:RPD_TASK_SIGNALIGNORE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: sigaction(%{result}): %{resultcode}", processor_chain([ - dup21, - dup22, - setc("event_description","ignoring task signal"), - dup23, -])); - -var msg488 = msg("RPD_TASK_SIGNALIGNORE", part504); - -var part505 = match("MESSAGE#484:RT_COS", "nwparser.payload", "%{process}: %{event_type}: COS IPC op %{dclass_counter1->} (%{agent}) failed, err %{resultcode->} (%{result})", processor_chain([ - dup30, - dup22, - setc("event_description","COS IPC op failed"), - dup23, -])); - -var msg489 = msg("RT_COS", part505); - -var part506 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/2", "nwparser.p0", "%{fld5}\" nat-source-address=\"%{stransaddr}\" nat-source-port=\"%{stransport}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\"%{p0}"); - -var part507 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/4", "nwparser.p0", "%{}src-nat-rule-name=\"%{fld10}\" dst-nat-rule-%{p0}"); - -var part508 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/5_0", "nwparser.p0", "type=%{fld21->} dst-nat-rule-name=\"%{p0}"); - -var select39 = linear_select([ - part508, - dup91, -]); - -var part509 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/6", "nwparser.p0", "\"%{fld11->} protocol-id=\"%{protocol}\" policy-name=\"%{policyname}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" session-id-32=\"%{fld13}\" username=\"%{username}\" roles=\"%{fld15}\" packet-incoming-interface=\"%{dinterface}\"%{p0}"); - -var part510 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/7_0", "nwparser.p0", " application=\"%{fld6}\" nested-application=\"%{fld7}\" encrypted=%{fld8->} %{p0}"); - -var select40 = linear_select([ - part510, - dup45, -]); - -var all22 = all_match({ - processors: [ - dup87, - dup150, - part506, - dup151, - part507, - select39, - part509, - select40, - dup92, - ], - on_success: processor_chain([ - dup28, - dup53, - dup54, - dup22, - dup52, - ]), -}); - -var msg490 = msg("RT_FLOW_SESSION_CREATE:02", all22); - -var part511 = match("MESSAGE#486:RT_FLOW_SESSION_CREATE/1_0", "nwparser.p0", " service-name=\"%{service}\" nat-source-address=\"%{stransaddr}\" nat-source-port=\"%{stransport}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\" src-nat-rule-type=\"%{fld20}\" src-nat-rule-name=\"%{rulename}\" dst-nat-rule-type=\"%{fld10}\" dst-nat-rule-name=\"%{rule_template}\"%{p0}"); - -var select41 = linear_select([ - part511, - dup45, -]); - -var part512 = match("MESSAGE#486:RT_FLOW_SESSION_CREATE/2", "nwparser.p0", "%{}protocol-id=\"%{protocol}\" policy-name=\"%{policyname}\"%{p0}"); - -var part513 = match("MESSAGE#486:RT_FLOW_SESSION_CREATE/3_0", "nwparser.p0", " source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" session-id-32=\"%{sessionid}\" username=\"%{username}\" roles=\"%{fld50}\" packet-incoming-interface=\"%{dinterface}\" application=\"%{application}\" nested-application=\"%{fld7}\" encrypted=\"%{fld8}\"%{p0}"); - -var select42 = linear_select([ - part513, - dup45, -]); - -var all23 = all_match({ - processors: [ - dup87, - select41, - part512, - select42, - dup92, - ], - on_success: processor_chain([ - dup28, - dup53, - dup54, - dup22, - dup52, - ]), -}); - -var msg491 = msg("RT_FLOW_SESSION_CREATE", all23); - -var part514 = match("MESSAGE#487:RT_FLOW_SESSION_CREATE:01/0_0", "nwparser.payload", "%{process}: %{event_type}: session created %{p0}"); - -var part515 = match("MESSAGE#487:RT_FLOW_SESSION_CREATE:01/0_1", "nwparser.payload", "%{event_type}: session created %{p0}"); - -var select43 = linear_select([ - part514, - part515, -]); - -var part516 = match("MESSAGE#487:RT_FLOW_SESSION_CREATE:01/1", "nwparser.p0", "%{saddr}/%{sport}->%{daddr}/%{dport->} %{fld20->} %{hostip}/%{network_port}->%{dtransaddr}/%{dtransport->} %{p0}"); - -var part517 = match("MESSAGE#487:RT_FLOW_SESSION_CREATE:01/2_0", "nwparser.p0", "%{rulename->} %{rule_template->} %{fld12->} %{fld13->} %{fld14->} %{policyname->} %{src_zone->} %{dst_zone->} %{sessionid->} %{username}(%{fld10}) %{interface->} %{protocol->} %{fld15->} UNKNOWN UNKNOWN"); - -var part518 = match("MESSAGE#487:RT_FLOW_SESSION_CREATE:01/2_1", "nwparser.p0", "%{rulename->} %{rule_template->} %{fld12->} %{fld13->} %{fld14->} %{policyname->} %{src_zone->} %{dst_zone->} %{sessionid->} %{username}(%{fld10}) %{interface->} %{fld15}"); - -var part519 = match_copy("MESSAGE#487:RT_FLOW_SESSION_CREATE:01/2_2", "nwparser.p0", "info"); - -var select44 = linear_select([ - part517, - part518, - part519, -]); - -var all24 = all_match({ - processors: [ - select43, - part516, - select44, - ], - on_success: processor_chain([ - dup28, - dup53, - dup54, - dup22, - setc("event_description","session created"), - dup23, - ]), -}); - -var msg492 = msg("RT_FLOW_SESSION_CREATE:01", all24); - -var select45 = linear_select([ - msg490, - msg491, - msg492, -]); - -var part520 = match("MESSAGE#488:RT_FLOW_SESSION_DENY:02/2", "nwparser.p0", "%{fld5}\" protocol-id=\"%{protocol}\" icmp-type=\"%{obj_type}\" policy-name=\"%{policyname}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" application=\"%{fld6}\" nested-application=\"%{fld7}\" username=\"%{username}\" roles=\"%{user_role}\" packet-incoming-interface=\"%{dinterface}\"%{p0}"); - -var part521 = match("MESSAGE#488:RT_FLOW_SESSION_DENY:02/3_0", "nwparser.p0", " encrypted=\"%{fld16}\" reason=\"%{result}\" src-vrf-grp=\"%{fld99}\" dst-vrf-grp=\"%{fld98}\"%{p0}"); - -var part522 = match("MESSAGE#488:RT_FLOW_SESSION_DENY:02/3_1", "nwparser.p0", " encrypted=%{fld16->} reason=\"%{result}\"%{p0}"); - -var select46 = linear_select([ - part521, - part522, - dup45, -]); - -var all25 = all_match({ - processors: [ - dup87, - dup150, - part520, - select46, - dup92, - ], - on_success: processor_chain([ - dup93, - dup53, - dup94, - dup22, - dup52, - ]), -}); - -var msg493 = msg("RT_FLOW_SESSION_DENY:02", all25); - -var part523 = match("MESSAGE#489:RT_FLOW_SESSION_DENY", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" protocol-id=\"%{protocol}\" icmp-type=\"%{obj_type}\" policy-name=\"%{policyname}\"]", processor_chain([ - dup93, - dup53, - dup94, - dup22, - dup52, -])); - -var msg494 = msg("RT_FLOW_SESSION_DENY", part523); - -var part524 = match("MESSAGE#490:RT_FLOW_SESSION_DENY:03/1", "nwparser.p0", "%{saddr}/%{sport}->%{daddr}/%{dport->} %{fld20->} %{fld1->} %{result->} %{src_zone->} %{dst_zone->} HTTP %{info}"); - -var all26 = all_match({ - processors: [ - dup152, - part524, - ], - on_success: processor_chain([ - dup27, - dup53, - dup94, - dup22, - dup97, - dup23, - ]), -}); - -var msg495 = msg("RT_FLOW_SESSION_DENY:03", all26); - -var part525 = match("MESSAGE#491:RT_FLOW_SESSION_DENY:01/1", "nwparser.p0", "%{saddr}/%{sport}->%{daddr}/%{dport->} %{fld20->} %{fld1->} %{result->} %{src_zone->} %{dst_zone}"); - -var all27 = all_match({ - processors: [ - dup152, - part525, - ], - on_success: processor_chain([ - dup27, - dup53, - dup94, - dup22, - dup97, - dup23, - ]), -}); - -var msg496 = msg("RT_FLOW_SESSION_DENY:01", all27); - -var select47 = linear_select([ - msg493, - msg494, - msg495, - msg496, -]); - -var select48 = linear_select([ - dup103, - dup45, -]); - -var all28 = all_match({ - processors: [ - dup98, - dup150, - dup99, - dup151, - dup100, - dup153, - dup102, - select48, - dup92, - ], - on_success: processor_chain([ - dup27, - dup53, - dup55, - dup104, - dup22, - dup52, - ]), -}); - -var msg497 = msg("RT_FLOW_SESSION_CLOSE:01", all28); - -var part526 = match("MESSAGE#493:RT_FLOW_SESSION_CLOSE", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} reason=\"%{result}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" protocol-id=\"%{protocol}\" policy-name=\"%{policyname}\" inbound-packets=\"%{packets}\" inbound-bytes=\"%{rbytes}\" outbound-packets=\"%{dclass_counter1}\" outbound-bytes=\"%{sbytes}\" elapsed-time=\"%{duration}\"]", processor_chain([ - dup27, - dup53, - dup55, - dup22, - dup52, -])); - -var msg498 = msg("RT_FLOW_SESSION_CLOSE", part526); - -var part527 = match("MESSAGE#494:RT_FLOW_SESSION_CLOSE:02/0_0", "nwparser.payload", "%{process}: %{event_type}: session closed %{p0}"); - -var part528 = match("MESSAGE#494:RT_FLOW_SESSION_CLOSE:02/0_1", "nwparser.payload", "%{event_type}: session closed %{p0}"); - -var select49 = linear_select([ - part527, - part528, -]); - -var part529 = match("MESSAGE#494:RT_FLOW_SESSION_CLOSE:02/1", "nwparser.p0", "%{result}: %{saddr}/%{sport}->%{daddr}/%{dport->} %{fld20->} %{hostip}/%{network_port}->%{dtransaddr}/%{dtransport->} %{info}"); - -var all29 = all_match({ - processors: [ - select49, - part529, - ], - on_success: processor_chain([ - dup27, - dup53, - dup55, - dup22, - setc("event_description","session closed"), - dup23, - ]), -}); - -var msg499 = msg("RT_FLOW_SESSION_CLOSE:02", all29); - -var part530 = match("MESSAGE#495:RT_FLOW_SESSION_CLOSE:03/7_1", "nwparser.p0", " application=\"%{fld6}\" nested-application=\"%{fld7}\" username=\"%{username}\" roles=\"%{user_role}\" packet-incoming-interface=\"%{dinterface}\" %{p0}"); - -var select50 = linear_select([ - dup103, - part530, - dup45, -]); - -var part531 = match("MESSAGE#495:RT_FLOW_SESSION_CLOSE:03/8", "nwparser.p0", "] session closed %{fld60}: %{fld51}/%{fld52}->%{fld53}/%{fld54->} %{fld55->} %{fld56}/%{fld57}->%{fld58}/%{fld59->} %{info}"); - -var all30 = all_match({ - processors: [ - dup98, - dup150, - dup99, - dup151, - dup100, - dup153, - dup102, - select50, - part531, - ], - on_success: processor_chain([ - dup27, - dup53, - dup55, - dup104, - dup22, - dup52, - dup61, - ]), -}); - -var msg500 = msg("RT_FLOW_SESSION_CLOSE:03", all30); - -var select51 = linear_select([ - msg497, - msg498, - msg499, - msg500, -]); - -var part532 = match("MESSAGE#496:RT_SCREEN_IP", "nwparser.payload", "%{process}: %{event_type}: Fragmented traffic! source:%{saddr}, destination: %{daddr}, protocol-id: %{protocol}, zone name: %{zone}, interface name: %{interface}", processor_chain([ - dup30, - dup22, - setc("event_description","Fragmented traffic"), - dup23, -])); - -var msg501 = msg("RT_SCREEN_IP", part532); - -var part533 = match("MESSAGE#497:RT_SCREEN_IP:01", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} attack-name=\"%{threat_name}\" source-address=\"%{saddr}\" destination-address=\"%{daddr}\" protocol-id=\"%{protocol}\" source-zone-name=\"%{src_zone}\" interface-name=\"%{interface}\" action=\"%{action}\"]", processor_chain([ - dup30, - dup22, - dup52, -])); - -var msg502 = msg("RT_SCREEN_IP:01", part533); - -var select52 = linear_select([ - msg501, - msg502, -]); - -var msg503 = msg("RT_SCREEN_TCP", dup154); - -var part534 = match("MESSAGE#499:RT_SCREEN_SESSION_LIMIT", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} attack-name=\"%{threat_name}\" message=\"%{info}\" ip-address=\"%{hostip}\" source-zone-name=\"%{src_zone}\" interface-name=\"%{interface}\" action=\"%{action}\"]", processor_chain([ - dup30, - dup22, - dup52, -])); - -var msg504 = msg("RT_SCREEN_SESSION_LIMIT", part534); - -var msg505 = msg("RT_SCREEN_UDP", dup154); - -var part535 = match("MESSAGE#501:SERVICED_CLIENT_CONNECT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: attempt to connect to interface failed with error: %{result}", processor_chain([ - dup27, - dup22, - setc("event_description","attempt to connect to interface failed"), - dup23, -])); - -var msg506 = msg("SERVICED_CLIENT_CONNECT", part535); - -var part536 = match("MESSAGE#502:SERVICED_CLIENT_DISCONNECTED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: unexpected termination of connection to interface", processor_chain([ - dup27, - dup22, - setc("event_description","unexpected termination of connection"), - dup23, -])); - -var msg507 = msg("SERVICED_CLIENT_DISCONNECTED", part536); - -var part537 = match("MESSAGE#503:SERVICED_CLIENT_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: client interface connection failure: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","client interface connection failure"), - dup23, -])); - -var msg508 = msg("SERVICED_CLIENT_ERROR", part537); - -var part538 = match("MESSAGE#504:SERVICED_COMMAND_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: remote command execution failed with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","remote command execution failed"), - dup23, -])); - -var msg509 = msg("SERVICED_COMMAND_FAILED", part538); - -var part539 = match("MESSAGE#505:SERVICED_COMMIT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: client failed to commit configuration with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","client commit configuration failed"), - dup23, -])); - -var msg510 = msg("SERVICED_COMMIT_FAILED", part539); - -var part540 = match("MESSAGE#506:SERVICED_CONFIGURATION_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: configuration process failed with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","configuration process failed"), - dup23, -])); - -var msg511 = msg("SERVICED_CONFIGURATION_FAILED", part540); - -var part541 = match("MESSAGE#507:SERVICED_CONFIG_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SERVICED CONFIG ERROR"), - dup23, -])); - -var msg512 = msg("SERVICED_CONFIG_ERROR", part541); - -var part542 = match("MESSAGE#508:SERVICED_CONFIG_FILE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{dclass_counter2->} failed to read path with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","service failed to read path"), - dup23, -])); - -var msg513 = msg("SERVICED_CONFIG_FILE", part542); - -var part543 = match("MESSAGE#509:SERVICED_CONNECTION_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SERVICED CONNECTION ERROR"), - dup23, -])); - -var msg514 = msg("SERVICED_CONNECTION_ERROR", part543); - -var part544 = match("MESSAGE#510:SERVICED_DISABLED_GGSN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: GGSN services disabled: object: %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","GGSN services disabled"), - dup23, -])); - -var msg515 = msg("SERVICED_DISABLED_GGSN", part544); - -var msg516 = msg("SERVICED_DUPLICATE", dup141); - -var part545 = match("MESSAGE#512:SERVICED_EVENT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: event function %{dclass_counter2->} failed with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","event function failed"), - dup23, -])); - -var msg517 = msg("SERVICED_EVENT_FAILED", part545); - -var part546 = match("MESSAGE#513:SERVICED_INIT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: initialization failed with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","service initialization failed"), - dup23, -])); - -var msg518 = msg("SERVICED_INIT_FAILED", part546); - -var part547 = match("MESSAGE#514:SERVICED_MALLOC_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: failed to allocate [%{dclass_counter2}] object [%{dclass_counter1->} bytes %{bytes}]: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","memory allocation failure"), - dup23, -])); - -var msg519 = msg("SERVICED_MALLOC_FAILURE", part547); - -var part548 = match("MESSAGE#515:SERVICED_NETWORK_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{dclass_counter2->} had error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","NETWORK FAILURE"), - dup23, -])); - -var msg520 = msg("SERVICED_NETWORK_FAILURE", part548); - -var part549 = match("MESSAGE#516:SERVICED_NOT_ROOT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Must be run as root", processor_chain([ - dup63, - dup22, - setc("event_description","SERVICED must be run as root"), - dup23, -])); - -var msg521 = msg("SERVICED_NOT_ROOT", part549); - -var msg522 = msg("SERVICED_PID_FILE_LOCK", dup142); - -var msg523 = msg("SERVICED_PID_FILE_UPDATE", dup143); - -var part550 = match("MESSAGE#519:SERVICED_RTSOCK_SEQUENCE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: routing socket sequence error, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","routing socket sequence error"), - dup23, -])); - -var msg524 = msg("SERVICED_RTSOCK_SEQUENCE", part550); - -var part551 = match("MESSAGE#520:SERVICED_SIGNAL_HANDLER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: set up of signal name handler failed with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","set up of signal name handler failed"), - dup23, -])); - -var msg525 = msg("SERVICED_SIGNAL_HANDLER", part551); - -var part552 = match("MESSAGE#521:SERVICED_SOCKET_CREATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: socket create failed with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","socket create failed with error"), - dup23, -])); - -var msg526 = msg("SERVICED_SOCKET_CREATE", part552); - -var part553 = match("MESSAGE#522:SERVICED_SOCKET_IO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: socket function %{dclass_counter2->} failed with error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","socket function failed"), - dup23, -])); - -var msg527 = msg("SERVICED_SOCKET_IO", part553); - -var part554 = match("MESSAGE#523:SERVICED_SOCKET_OPTION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: unable to set socket option %{dclass_counter2}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","unable to set socket option"), - dup23, -])); - -var msg528 = msg("SERVICED_SOCKET_OPTION", part554); - -var part555 = match("MESSAGE#524:SERVICED_STDLIB_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{dclass_counter2->} had error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","STDLIB FAILURE"), - dup23, -])); - -var msg529 = msg("SERVICED_STDLIB_FAILURE", part555); - -var part556 = match("MESSAGE#525:SERVICED_USAGE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Incorrect usage: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Incorrect service usage"), - dup23, -])); - -var msg530 = msg("SERVICED_USAGE", part556); - -var part557 = match("MESSAGE#526:SERVICED_WORK_INCONSISTENCY", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: object has unexpected value %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","object has unexpected value"), - dup23, -])); - -var msg531 = msg("SERVICED_WORK_INCONSISTENCY", part557); - -var msg532 = msg("SSL_PROXY_SSL_SESSION_ALLOW", dup155); - -var msg533 = msg("SSL_PROXY_SSL_SESSION_DROP", dup155); - -var msg534 = msg("SSL_PROXY_SESSION_IGNORE", dup155); - -var part558 = match("MESSAGE#530:SNMP_NS_LOG_INFO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: NET-SNMP version %{version->} AgentX subagent connected", processor_chain([ - dup21, - dup22, - setc("event_description","AgentX subagent connected"), - dup61, - dup23, -])); - -var msg535 = msg("SNMP_NS_LOG_INFO", part558); - -var part559 = match("MESSAGE#531:SNMP_SUBAGENT_IPC_REG_ROWS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ns_subagent_register_mibs: registering %{dclass_counter1->} rows", processor_chain([ - dup21, - dup22, - setc("event_description","ns_subagent registering rows"), - dup61, - dup23, -])); - -var msg536 = msg("SNMP_SUBAGENT_IPC_REG_ROWS", part559); - -var part560 = match("MESSAGE#532:SNMPD_ACCESS_GROUP_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result->} in %{dclass_counter1->} access group %{group}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD ACCESS GROUP ERROR"), - dup23, -])); - -var msg537 = msg("SNMPD_ACCESS_GROUP_ERROR", part560); - -var part561 = match("MESSAGE#533:SNMPD_AUTH_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: unauthorized SNMP community from %{daddr->} to unknown community name (%{pool_name})", processor_chain([ - dup30, - dup22, - dup105, - setc("result","unauthorized SNMP community to unknown community name"), - dup23, -])); - -var msg538 = msg("SNMPD_AUTH_FAILURE", part561); - -var part562 = match("MESSAGE#534:SNMPD_AUTH_FAILURE:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: failed input interface authorization from %{daddr->} to unknown (%{pool_name})", processor_chain([ - dup30, - dup22, - dup105, - setc("result","failed input interface authorization to unknown"), - dup23, -])); - -var msg539 = msg("SNMPD_AUTH_FAILURE:01", part562); - -var part563 = match("MESSAGE#535:SNMPD_AUTH_FAILURE:02", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: unauthorized SNMP community from %{daddr->} to %{saddr->} (%{pool_name})", processor_chain([ - dup30, - dup22, - dup105, - setc("result","unauthorized SNMP community "), - dup23, -])); - -var msg540 = msg("SNMPD_AUTH_FAILURE:02", part563); - -var part564 = match("MESSAGE#595:SNMPD_AUTH_FAILURE:03", "nwparser.payload", "%{process->} %{process_id->} %{event_type->} [junos@%{obj_name->} function-name=\"%{fld1}\" message=\"%{info}\" source-address=\"%{saddr}\" destination-address=\"%{daddr}\" index1=\"%{fld4}\"]", processor_chain([ - dup30, - dup22, - dup105, - dup61, - dup62, -])); - -var msg541 = msg("SNMPD_AUTH_FAILURE:03", part564); - -var select53 = linear_select([ - msg538, - msg539, - msg540, - msg541, -]); - -var part565 = match("MESSAGE#536:SNMPD_AUTH_PRIVILEGES_EXCEEDED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{saddr}: request exceeded community privileges", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP request exceeded community privileges"), - dup23, -])); - -var msg542 = msg("SNMPD_AUTH_PRIVILEGES_EXCEEDED", part565); - -var part566 = match("MESSAGE#537:SNMPD_AUTH_RESTRICTED_ADDRESS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: request from address %{daddr->} not allowed", processor_chain([ - dup48, - dup22, - setc("event_description","SNMPD AUTH RESTRICTED ADDRESS"), - setc("result","request not allowed"), - dup23, -])); - -var msg543 = msg("SNMPD_AUTH_RESTRICTED_ADDRESS", part566); - -var part567 = match("MESSAGE#538:SNMPD_AUTH_WRONG_PDU_TYPE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{saddr}: unauthorized SNMP PDU type: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","unauthorized SNMP PDU type"), - dup23, -])); - -var msg544 = msg("SNMPD_AUTH_WRONG_PDU_TYPE", part567); - -var part568 = match("MESSAGE#539:SNMPD_CONFIG_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Configuration database has errors", processor_chain([ - dup30, - dup22, - setc("event_description","Configuration database has errors"), - dup23, -])); - -var msg545 = msg("SNMPD_CONFIG_ERROR", part568); - -var part569 = match("MESSAGE#540:SNMPD_CONTEXT_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result->} in %{dclass_counter1->} context %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD CONTEXT ERROR"), - dup23, -])); - -var msg546 = msg("SNMPD_CONTEXT_ERROR", part569); - -var part570 = match("MESSAGE#541:SNMPD_ENGINE_FILE_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{dclass_counter2}: operation: %{dclass_counter1->} %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD ENGINE FILE FAILURE"), - dup23, -])); - -var msg547 = msg("SNMPD_ENGINE_FILE_FAILURE", part570); - -var part571 = match("MESSAGE#542:SNMPD_ENGINE_PROCESS_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: from-path: undecodable/unmatched subagent response", processor_chain([ - dup30, - dup22, - setc("event_description"," from-path - SNMP undecodable/unmatched subagent response"), - dup23, -])); - -var msg548 = msg("SNMPD_ENGINE_PROCESS_ERROR", part571); - -var part572 = match("MESSAGE#543:SNMPD_FILE_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: fopen %{dclass_counter2}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD FILE FAILURE"), - dup23, -])); - -var msg549 = msg("SNMPD_FILE_FAILURE", part572); - -var part573 = match("MESSAGE#544:SNMPD_GROUP_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result->} in %{dclass_counter1->} group: '%{group}' user '%{username}' model '%{version}'", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD GROUP ERROR"), - dup23, -])); - -var msg550 = msg("SNMPD_GROUP_ERROR", part573); - -var part574 = match("MESSAGE#545:SNMPD_INIT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: snmpd initialization failure: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","snmpd initialization failure"), - dup23, -])); - -var msg551 = msg("SNMPD_INIT_FAILED", part574); - -var part575 = match("MESSAGE#546:SNMPD_LIBJUNIPER_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: system_default_inaddr: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","LIBJUNIPER FAILURE"), - dup23, -])); - -var msg552 = msg("SNMPD_LIBJUNIPER_FAILURE", part575); - -var part576 = match("MESSAGE#547:SNMPD_LOOPBACK_ADDR_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","LOOPBACK ADDR ERROR"), - dup23, -])); - -var msg553 = msg("SNMPD_LOOPBACK_ADDR_ERROR", part576); - -var part577 = match("MESSAGE#548:SNMPD_MEMORY_FREED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: called for freed - already freed", processor_chain([ - dup30, - dup22, - setc("event_description","duplicate memory free"), - dup23, -])); - -var msg554 = msg("SNMPD_MEMORY_FREED", part577); - -var part578 = match("MESSAGE#549:SNMPD_RADIX_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: radix_add failed: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","radix_add failed"), - dup23, -])); - -var msg555 = msg("SNMPD_RADIX_FAILURE", part578); - -var part579 = match("MESSAGE#550:SNMPD_RECEIVE_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: receive %{dclass_counter1->} failure: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD RECEIVE FAILURE"), - dup23, -])); - -var msg556 = msg("SNMPD_RECEIVE_FAILURE", part579); - -var part580 = match("MESSAGE#551:SNMPD_RMONFILE_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{dclass_counter2}: operation: %{dclass_counter1->} %{agent}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","RMONFILE FAILURE"), - dup23, -])); - -var msg557 = msg("SNMPD_RMONFILE_FAILURE", part580); - -var part581 = match("MESSAGE#552:SNMPD_RMON_COOKIE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: Null cookie", processor_chain([ - dup30, - dup22, - setc("event_description","Null cookie"), - dup23, -])); - -var msg558 = msg("SNMPD_RMON_COOKIE", part581); - -var part582 = match("MESSAGE#553:SNMPD_RMON_EVENTLOG", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","RMON EVENTLOG"), - dup23, -])); - -var msg559 = msg("SNMPD_RMON_EVENTLOG", part582); - -var part583 = match("MESSAGE#554:SNMPD_RMON_IOERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: Received io error, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Received io error"), - dup23, -])); - -var msg560 = msg("SNMPD_RMON_IOERROR", part583); - -var part584 = match("MESSAGE#555:SNMPD_RMON_MIBERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: internal Get request error: description, %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","internal Get request error"), - dup23, -])); - -var msg561 = msg("SNMPD_RMON_MIBERROR", part584); - -var part585 = match("MESSAGE#556:SNMPD_RTSLIB_ASYNC_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: sequence mismatch %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","sequence mismatch"), - dup23, -])); - -var msg562 = msg("SNMPD_RTSLIB_ASYNC_EVENT", part585); - -var part586 = match("MESSAGE#557:SNMPD_SEND_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: send send-type (index1) failure: %{result}", processor_chain([ - dup30, - dup22, - dup106, - dup23, -])); - -var msg563 = msg("SNMPD_SEND_FAILURE", part586); - -var part587 = match("MESSAGE#558:SNMPD_SEND_FAILURE:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: send to (%{saddr}) failure: %{result}", processor_chain([ - dup30, - dup22, - dup106, - dup23, -])); - -var msg564 = msg("SNMPD_SEND_FAILURE:01", part587); - -var select54 = linear_select([ - msg563, - msg564, -]); - -var part588 = match("MESSAGE#559:SNMPD_SOCKET_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: socket failure: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD SOCKET FAILURE"), - dup23, -])); - -var msg565 = msg("SNMPD_SOCKET_FAILURE", part588); - -var part589 = match("MESSAGE#560:SNMPD_SUBAGENT_NO_BUFFERS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: No buffers available for subagent (%{agent})", processor_chain([ - dup30, - dup22, - setc("event_description","No buffers available for subagent"), - dup23, -])); - -var msg566 = msg("SNMPD_SUBAGENT_NO_BUFFERS", part589); - -var part590 = match("MESSAGE#561:SNMPD_SUBAGENT_SEND_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Send to subagent failed (%{agent}): %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Send to subagent failed"), - dup23, -])); - -var msg567 = msg("SNMPD_SUBAGENT_SEND_FAILED", part590); - -var part591 = match("MESSAGE#562:SNMPD_SYSLIB_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: system function '%{dclass_counter1}' failed: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","system function failed"), - dup23, -])); - -var msg568 = msg("SNMPD_SYSLIB_FAILURE", part591); - -var part592 = match("MESSAGE#563:SNMPD_THROTTLE_QUEUE_DRAINED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: cleared all throttled traps", processor_chain([ - dup21, - dup22, - setc("event_description","cleared all throttled traps"), - dup23, -])); - -var msg569 = msg("SNMPD_THROTTLE_QUEUE_DRAINED", part592); - -var part593 = match("MESSAGE#564:SNMPD_TRAP_COLD_START", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap: cold start", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP trap: cold start"), - dup23, -])); - -var msg570 = msg("SNMPD_TRAP_COLD_START", part593); - -var part594 = match("MESSAGE#565:SNMPD_TRAP_GEN_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap error: %{resultcode->} (%{result})", processor_chain([ - dup30, - dup22, - dup107, - dup23, -])); - -var msg571 = msg("SNMPD_TRAP_GEN_FAILURE", part594); - -var part595 = match("MESSAGE#566:SNMPD_TRAP_GEN_FAILURE2", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap error: %{dclass_counter2->} %{result}", processor_chain([ - dup30, - dup22, - dup107, - dup23, -])); - -var msg572 = msg("SNMPD_TRAP_GEN_FAILURE2", part595); - -var part596 = match("MESSAGE#567:SNMPD_TRAP_INVALID_DATA", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap error: %{result->} (%{dclass_counter2}) received", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD TRAP INVALID DATA"), - dup23, -])); - -var msg573 = msg("SNMPD_TRAP_INVALID_DATA", part596); - -var part597 = match("MESSAGE#568:SNMPD_TRAP_NOT_ENOUGH_VARBINDS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap error: %{info->} (%{result})", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD TRAP ERROR"), - dup23, -])); - -var msg574 = msg("SNMPD_TRAP_NOT_ENOUGH_VARBINDS", part597); - -var part598 = match("MESSAGE#569:SNMPD_TRAP_QUEUED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Adding trap to %{dclass_counter2->} to %{obj_name->} queue, %{dclass_counter1->} traps in queue", processor_chain([ - dup21, - dup22, - setc("event_description","Adding trap to queue"), - dup23, -])); - -var msg575 = msg("SNMPD_TRAP_QUEUED", part598); - -var part599 = match("MESSAGE#570:SNMPD_TRAP_QUEUE_DRAINED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: traps queued to %{obj_name->} sent successfully", processor_chain([ - dup21, - dup22, - setc("event_description","traps queued - sent successfully"), - dup23, -])); - -var msg576 = msg("SNMPD_TRAP_QUEUE_DRAINED", part599); - -var part600 = match("MESSAGE#571:SNMPD_TRAP_QUEUE_MAX_ATTEMPTS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: after %{dclass_counter1->} attempts, deleting %{dclass_counter2->} traps queued to %{obj_name}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD TRAP QUEUE MAX_ATTEMPTS - deleting some traps"), - dup23, -])); - -var msg577 = msg("SNMPD_TRAP_QUEUE_MAX_ATTEMPTS", part600); - -var part601 = match("MESSAGE#572:SNMPD_TRAP_QUEUE_MAX_SIZE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: maximum queue size exceeded (%{dclass_counter1}), discarding trap to %{dclass_counter2->} from %{obj_name->} queue", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP TRAP maximum queue size exceeded"), - dup23, -])); - -var msg578 = msg("SNMPD_TRAP_QUEUE_MAX_SIZE", part601); - -var part602 = match("MESSAGE#573:SNMPD_TRAP_THROTTLED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: traps throttled after %{dclass_counter1->} traps", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP traps throttled"), - dup23, -])); - -var msg579 = msg("SNMPD_TRAP_THROTTLED", part602); - -var part603 = match("MESSAGE#574:SNMPD_TRAP_TYPE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: unknown trap type requested (%{obj_type->} )", processor_chain([ - dup30, - dup22, - setc("event_description","unknown SNMP trap type requested"), - dup23, -])); - -var msg580 = msg("SNMPD_TRAP_TYPE_ERROR", part603); - -var part604 = match("MESSAGE#575:SNMPD_TRAP_VARBIND_TYPE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap error: expecting %{dclass_counter1->} varbind to be VT_NUMBER (%{resultcode->} )", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD TRAP VARBIND TYPE ERROR"), - dup23, -])); - -var msg581 = msg("SNMPD_TRAP_VARBIND_TYPE_ERROR", part604); - -var part605 = match("MESSAGE#576:SNMPD_TRAP_VERSION_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap error: invalid version signature (%{result})", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD TRAP ERROR - invalid version signature"), - dup23, -])); - -var msg582 = msg("SNMPD_TRAP_VERSION_ERROR", part605); - -var part606 = match("MESSAGE#577:SNMPD_TRAP_WARM_START", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: SNMP trap: warm start", processor_chain([ - dup21, - dup22, - setc("event_description","SNMPD TRAP WARM START"), - dup23, -])); - -var msg583 = msg("SNMPD_TRAP_WARM_START", part606); - -var part607 = match("MESSAGE#578:SNMPD_USER_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result->} in %{dclass_counter1->} user '%{username}' %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMPD USER ERROR"), - dup23, -])); - -var msg584 = msg("SNMPD_USER_ERROR", part607); - -var part608 = match("MESSAGE#579:SNMPD_VIEW_DELETE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: deleting view %{dclass_counter2->} %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP deleting view"), - dup23, -])); - -var msg585 = msg("SNMPD_VIEW_DELETE", part608); - -var part609 = match("MESSAGE#580:SNMPD_VIEW_INSTALL_DEFAULT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: %{result->} installing default %{dclass_counter1->} view %{dclass_counter2}", processor_chain([ - dup21, - dup22, - setc("event_description","installing default SNMP view"), - dup23, -])); - -var msg586 = msg("SNMPD_VIEW_INSTALL_DEFAULT", part609); - -var part610 = match("MESSAGE#581:SNMPD_VIEW_OID_PARSE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: oid parsing failed for view %{dclass_counter2->} oid %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","oid parsing failed for SNMP view"), - dup23, -])); - -var msg587 = msg("SNMPD_VIEW_OID_PARSE", part610); - -var part611 = match("MESSAGE#582:SNMP_GET_ERROR1", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} %{dclass_counter1->} failed for %{dclass_counter2->} : %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP_GET_ERROR 1"), - dup23, -])); - -var msg588 = msg("SNMP_GET_ERROR1", part611); - -var part612 = match("MESSAGE#583:SNMP_GET_ERROR2", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} %{dclass_counter1->} failed for %{dclass_counter2->} : %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP GET ERROR 2"), - dup23, -])); - -var msg589 = msg("SNMP_GET_ERROR2", part612); - -var part613 = match("MESSAGE#584:SNMP_GET_ERROR3", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} %{dclass_counter1->} failed for %{dclass_counter2->} : %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP GET ERROR 3"), - dup23, -])); - -var msg590 = msg("SNMP_GET_ERROR3", part613); - -var part614 = match("MESSAGE#585:SNMP_GET_ERROR4", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent->} %{dclass_counter1->} failed for %{dclass_counter2->} : %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP GET ERROR 4"), - dup23, -])); - -var msg591 = msg("SNMP_GET_ERROR4", part614); - -var part615 = match("MESSAGE#586:SNMP_RTSLIB_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: rtslib-error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP RTSLIB FAILURE"), - dup23, -])); - -var msg592 = msg("SNMP_RTSLIB_FAILURE", part615); - -var part616 = match("MESSAGE#587:SNMP_TRAP_LINK_DOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifIndex %{dclass_counter1}, ifAdminStatus %{resultcode}, ifOperStatus %{result}, ifName %{interface}", processor_chain([ - dup30, - dup22, - dup108, - dup23, -])); - -var msg593 = msg("SNMP_TRAP_LINK_DOWN", part616); - -var part617 = match("MESSAGE#596:SNMP_TRAP_LINK_DOWN:01", "nwparser.payload", "%{process->} %{process_id->} %{event_type->} [junos@%{obj_name->} snmp-interface-index=\"%{fld1}\" admin-status=\"%{fld3}\" operational-status=\"%{fld2}\" interface-name=\"%{interface}\"]", processor_chain([ - dup30, - dup22, - dup108, - dup61, - dup62, -])); - -var msg594 = msg("SNMP_TRAP_LINK_DOWN:01", part617); - -var select55 = linear_select([ - msg593, - msg594, -]); - -var part618 = match("MESSAGE#588:SNMP_TRAP_LINK_UP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: ifIndex %{dclass_counter1}, ifAdminStatus %{resultcode}, ifOperStatus %{result}, ifName %{interface}", processor_chain([ - dup21, - dup22, - dup109, - dup23, -])); - -var msg595 = msg("SNMP_TRAP_LINK_UP", part618); - -var part619 = match("MESSAGE#597:SNMP_TRAP_LINK_UP:01", "nwparser.payload", "%{process->} %{process_id->} %{event_type->} [junos@%{obj_name->} snmp-interface-index=\"%{fld1}\" admin-status=\"%{fld3}\" operational-status=\"%{event_state}\" interface-name=\"%{interface}\"]", processor_chain([ - dup21, - dup22, - dup109, - dup61, - dup62, -])); - -var msg596 = msg("SNMP_TRAP_LINK_UP:01", part619); - -var select56 = linear_select([ - msg595, - msg596, -]); - -var part620 = match("MESSAGE#589:SNMP_TRAP_PING_PROBE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pingCtlOwnerIndex = %{dclass_counter1}, pingCtlTestName = %{obj_name}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP TRAP PING PROBE FAILED"), - dup23, -])); - -var msg597 = msg("SNMP_TRAP_PING_PROBE_FAILED", part620); - -var part621 = match("MESSAGE#590:SNMP_TRAP_PING_TEST_COMPLETED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pingCtlOwnerIndex = %{dclass_counter1}, pingCtlTestName = %{obj_name}", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP TRAP PING TEST COMPLETED"), - dup23, -])); - -var msg598 = msg("SNMP_TRAP_PING_TEST_COMPLETED", part621); - -var part622 = match("MESSAGE#591:SNMP_TRAP_PING_TEST_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: pingCtlOwnerIndex = %{dclass_counter1}, pingCtlTestName = %{obj_name}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP TRAP PING TEST FAILED"), - dup23, -])); - -var msg599 = msg("SNMP_TRAP_PING_TEST_FAILED", part622); - -var part623 = match("MESSAGE#592:SNMP_TRAP_TRACE_ROUTE_PATH_CHANGE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: traceRouteCtlOwnerIndex = %{dclass_counter1}, traceRouteCtlTestName = %{obj_name}", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP TRAP TRACE ROUTE PATH CHANGE"), - dup23, -])); - -var msg600 = msg("SNMP_TRAP_TRACE_ROUTE_PATH_CHANGE", part623); - -var part624 = match("MESSAGE#593:SNMP_TRAP_TRACE_ROUTE_TEST_COMPLETED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: traceRouteCtlOwnerIndex = %{dclass_counter1}, traceRouteCtlTestName = %{obj_name}", processor_chain([ - dup21, - dup22, - setc("event_description","SNMP TRAP TRACE ROUTE TEST COMPLETED"), - dup23, -])); - -var msg601 = msg("SNMP_TRAP_TRACE_ROUTE_TEST_COMPLETED", part624); - -var part625 = match("MESSAGE#594:SNMP_TRAP_TRACE_ROUTE_TEST_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: traceRouteCtlOwnerIndex = %{dclass_counter1}, traceRouteCtlTestName = %{obj_name}", processor_chain([ - dup30, - dup22, - setc("event_description","SNMP TRAP TRACE ROUTE TEST FAILED"), - dup23, -])); - -var msg602 = msg("SNMP_TRAP_TRACE_ROUTE_TEST_FAILED", part625); - -var part626 = match("MESSAGE#598:SSHD_LOGIN_FAILED", "nwparser.payload", "%{process}: %{event_type}: Login failed for user '%{username}' from host '%{saddr}'", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup110, - dup23, -])); - -var msg603 = msg("SSHD_LOGIN_FAILED", part626); - -var part627 = match("MESSAGE#599:SSHD_LOGIN_FAILED:01", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} username=\"%{username}\" source-address=\"%{saddr}\"]", processor_chain([ - dup44, - dup34, - dup35, - dup36, - dup43, - dup22, - dup110, - dup61, - dup52, - setf("process","hfld33"), -])); - -var msg604 = msg("SSHD_LOGIN_FAILED:01", part627); - -var select57 = linear_select([ - msg603, - msg604, -]); - -var part628 = match("MESSAGE#600:task_connect", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: task %{agent->} addr %{daddr}+%{dport}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","task connect failure"), - dup23, -])); - -var msg605 = msg("task_connect", part628); - -var msg606 = msg("TASK_TASK_REINIT", dup149); - -var part629 = match("MESSAGE#602:TFTPD_AF_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unexpected address family %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","Unexpected address family"), - dup23, -])); - -var msg607 = msg("TFTPD_AF_ERR", part629); - -var part630 = match("MESSAGE#603:TFTPD_BIND_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: bind: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD BIND ERROR"), - dup23, -])); - -var msg608 = msg("TFTPD_BIND_ERR", part630); - -var part631 = match("MESSAGE#604:TFTPD_CONNECT_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: connect: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD CONNECT ERROR"), - dup23, -])); - -var msg609 = msg("TFTPD_CONNECT_ERR", part631); - -var part632 = match("MESSAGE#605:TFTPD_CONNECT_INFO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: TFTP %{protocol->} from address %{daddr->} port %{dport->} file %{filename}", processor_chain([ - dup21, - dup22, - setc("event_description","TFTPD CONNECT INFO"), - dup23, -])); - -var msg610 = msg("TFTPD_CONNECT_INFO", part632); - -var part633 = match("MESSAGE#606:TFTPD_CREATE_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: check_space %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD CREATE ERROR"), - dup23, -])); - -var msg611 = msg("TFTPD_CREATE_ERR", part633); - -var part634 = match("MESSAGE#607:TFTPD_FIO_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD FIO ERR"), - dup23, -])); - -var msg612 = msg("TFTPD_FIO_ERR", part634); - -var part635 = match("MESSAGE#608:TFTPD_FORK_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: fork: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD FORK ERROR"), - dup23, -])); - -var msg613 = msg("TFTPD_FORK_ERR", part635); - -var part636 = match("MESSAGE#609:TFTPD_NAK_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: nak error %{resultcode}, %{dclass_counter1}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD NAK ERROR"), - dup23, -])); - -var msg614 = msg("TFTPD_NAK_ERR", part636); - -var part637 = match("MESSAGE#610:TFTPD_OPEN_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to open file '%{filename}', error: %{result}", processor_chain([ - dup30, - dup22, - dup78, - dup23, -])); - -var msg615 = msg("TFTPD_OPEN_ERR", part637); - -var part638 = match("MESSAGE#611:TFTPD_RECVCOMPLETE_INFO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Received %{dclass_counter1->} blocks of %{dclass_counter2->} size for file '%{filename}'", processor_chain([ - dup21, - dup22, - setc("event_description","TFTPD RECVCOMPLETE INFO"), - dup23, -])); - -var msg616 = msg("TFTPD_RECVCOMPLETE_INFO", part638); - -var part639 = match("MESSAGE#612:TFTPD_RECVFROM_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: recvfrom: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD RECVFROM ERROR"), - dup23, -])); - -var msg617 = msg("TFTPD_RECVFROM_ERR", part639); - -var part640 = match("MESSAGE#613:TFTPD_RECV_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: recv: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD RECV ERROR"), - dup23, -])); - -var msg618 = msg("TFTPD_RECV_ERR", part640); - -var part641 = match("MESSAGE#614:TFTPD_SENDCOMPLETE_INFO", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Sent %{dclass_counter1->} blocks of %{dclass_counter2->} and %{info->} for file '%{filename}'", processor_chain([ - dup21, - dup22, - setc("event_description","TFTPD SENDCOMPLETE INFO"), - dup23, -])); - -var msg619 = msg("TFTPD_SENDCOMPLETE_INFO", part641); - -var part642 = match("MESSAGE#615:TFTPD_SEND_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: send: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD SEND ERROR"), - dup23, -])); - -var msg620 = msg("TFTPD_SEND_ERR", part642); - -var part643 = match("MESSAGE#616:TFTPD_SOCKET_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: socket: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD SOCKET ERROR"), - dup23, -])); - -var msg621 = msg("TFTPD_SOCKET_ERR", part643); - -var part644 = match("MESSAGE#617:TFTPD_STATFS_ERR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: statfs %{agent}, error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","TFTPD STATFS ERROR"), - dup23, -])); - -var msg622 = msg("TFTPD_STATFS_ERR", part644); - -var part645 = match("MESSAGE#618:TNP", "nwparser.payload", "%{process}: %{event_type}: adding neighbor %{dclass_counter1->} to interface %{interface}", processor_chain([ - dup21, - dup22, - setc("event_description","adding neighbor to interface"), - dup23, -])); - -var msg623 = msg("TNP", part645); - -var part646 = match("MESSAGE#619:trace_on", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: tracing to %{fld33->} started", processor_chain([ - dup21, - dup22, - setc("event_description","tracing to file"), - dup23, - call({ - dest: "nwparser.filename", - fn: RMQ, - args: [ - field("fld33"), - ], - }), -])); - -var msg624 = msg("trace_on", part646); - -var part647 = match("MESSAGE#620:trace_rotate", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: rotating %{filename}", processor_chain([ - dup21, - dup22, - setc("event_description","trace rotating file"), - dup23, -])); - -var msg625 = msg("trace_rotate", part647); - -var part648 = match("MESSAGE#621:transfer-file", "nwparser.payload", "%{process}: %{event_type}: Transferred %{filename}", processor_chain([ - dup21, - dup22, - setc("event_description","transfered file"), - dup23, -])); - -var msg626 = msg("transfer-file", part648); - -var part649 = match("MESSAGE#622:ttloop", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: peer died: %{result}: %{resultcode}", processor_chain([ - dup30, - dup22, - setc("event_description","ttloop - peer died"), - dup23, -])); - -var msg627 = msg("ttloop", part649); - -var part650 = match("MESSAGE#623:UI_AUTH_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Authenticated user '%{username}' at permission level '%{privilege}'", processor_chain([ - dup80, - dup34, - dup35, - dup37, - dup22, - setc("event_description","Authenticated user"), - dup23, -])); - -var msg628 = msg("UI_AUTH_EVENT", part650); - -var part651 = match("MESSAGE#624:UI_AUTH_INVALID_CHALLENGE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Received invalid authentication challenge for user '%{username}': response", processor_chain([ - dup30, - dup22, - setc("event_description","Received invalid authentication challenge for user response"), - dup23, -])); - -var msg629 = msg("UI_AUTH_INVALID_CHALLENGE", part651); - -var part652 = match("MESSAGE#625:UI_BOOTTIME_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to fetch boot time: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to fetch boot time"), - dup23, -])); - -var msg630 = msg("UI_BOOTTIME_FAILED", part652); - -var part653 = match("MESSAGE#626:UI_CFG_AUDIT_NEW", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' %{dclass_counter2->} path unknown", processor_chain([ - dup30, - dup22, - setc("event_description","user path unknown"), - dup23, -])); - -var msg631 = msg("UI_CFG_AUDIT_NEW", part653); - -var part654 = match("MESSAGE#627:UI_CFG_AUDIT_NEW:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' insert: [edit-config config %{filename->} security policies %{policyname}] %{info}", processor_chain([ - dup42, - dup22, - setc("event_description"," user Inserted Security Policies in config"), - dup23, -])); - -var msg632 = msg("UI_CFG_AUDIT_NEW:01", part654); - -var select58 = linear_select([ - msg631, - msg632, -]); - -var part655 = match("MESSAGE#628:UI_CFG_AUDIT_OTHER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' delete: [%{filename}]", processor_chain([ - dup21, - dup22, - setc("event_description","User deleted file"), - setc("action","delete"), - dup23, -])); - -var msg633 = msg("UI_CFG_AUDIT_OTHER", part655); - -var part656 = match("MESSAGE#629:UI_CFG_AUDIT_OTHER:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' rollback: %{filename}", processor_chain([ - dup21, - dup22, - setc("event_description","User rollback file"), - dup23, -])); - -var msg634 = msg("UI_CFG_AUDIT_OTHER:01", part656); - -var part657 = match("MESSAGE#630:UI_CFG_AUDIT_OTHER:02/1_0", "nwparser.p0", "\"%{info}\""); - -var select59 = linear_select([ - part657, - dup112, -]); - -var all31 = all_match({ - processors: [ - dup111, - select59, - ], - on_success: processor_chain([ - dup21, - dup22, - setc("event_description","User set"), - dup23, - ]), -}); - -var msg635 = msg("UI_CFG_AUDIT_OTHER:02", all31); - -var part658 = match("MESSAGE#631:UI_CFG_AUDIT_OTHER:03", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' replace: [edit-config config %{filename->} applications %{info}]", processor_chain([ - dup21, - dup22, - setc("event_description","User config replace"), - setc("action","replace"), - dup23, -])); - -var msg636 = msg("UI_CFG_AUDIT_OTHER:03", part658); - -var part659 = match("MESSAGE#632:UI_CFG_AUDIT_OTHER:04", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' deactivate: [groups %{info}]", processor_chain([ - setc("eventcategory","1701070000"), - dup22, - setc("event_description","User deactivating group(s)"), - setc("action","deactivate"), - dup23, -])); - -var msg637 = msg("UI_CFG_AUDIT_OTHER:04", part659); - -var part660 = match("MESSAGE#633:UI_CFG_AUDIT_OTHER:05", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' update: %{filename}", processor_chain([ - dup113, - dup22, - setc("event_description","User updates config file"), - setc("action","update"), - dup23, -])); - -var msg638 = msg("UI_CFG_AUDIT_OTHER:05", part660); - -var select60 = linear_select([ - msg633, - msg634, - msg635, - msg636, - msg637, - msg638, -]); - -var part661 = match("MESSAGE#634:UI_CFG_AUDIT_SET:01/1_0", "nwparser.p0", "\"%{change_old}\" %{p0}"); - -var select61 = linear_select([ - part661, - dup114, -]); - -var all32 = all_match({ - processors: [ - dup111, - select61, - dup115, - ], - on_success: processor_chain([ - dup21, - dup22, - dup116, - dup23, - ]), -}); - -var msg639 = msg("UI_CFG_AUDIT_SET:01", all32); - -var part662 = match("MESSAGE#635:UI_CFG_AUDIT_SET:02/1_0", "nwparser.p0", "\"%{change_old->} %{p0}"); - -var select62 = linear_select([ - part662, - dup114, -]); - -var all33 = all_match({ - processors: [ - dup111, - select62, - dup115, - ], - on_success: processor_chain([ - dup21, - dup22, - dup116, - dup23, - ]), -}); - -var msg640 = msg("UI_CFG_AUDIT_SET:02", all33); - -var part663 = match("MESSAGE#636:UI_CFG_AUDIT_SET", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' replace: [edit-config config %{filename->} applications %{info}] \u003c\u003c%{disposition}> -> \"%{agent}\"", processor_chain([ - dup21, - dup22, - setc("event_description","User replace config application(s)"), - dup23, -])); - -var msg641 = msg("UI_CFG_AUDIT_SET", part663); - -var select63 = linear_select([ - msg639, - msg640, - msg641, -]); - -var part664 = match("MESSAGE#637:UI_CFG_AUDIT_SET_SECRET:01/2", "nwparser.p0", ": [groups %{info->} secret]"); - -var all34 = all_match({ - processors: [ - dup117, - dup156, - part664, - ], - on_success: processor_chain([ - dup113, - dup22, - dup120, - dup23, - ]), -}); - -var msg642 = msg("UI_CFG_AUDIT_SET_SECRET:01", all34); - -var part665 = match("MESSAGE#638:UI_CFG_AUDIT_SET_SECRET:02/2", "nwparser.p0", ": [%{info}]"); - -var all35 = all_match({ - processors: [ - dup117, - dup156, - part665, - ], - on_success: processor_chain([ - dup113, - dup22, - dup120, - dup23, - ]), -}); - -var msg643 = msg("UI_CFG_AUDIT_SET_SECRET:02", all35); - -var part666 = match("MESSAGE#639:UI_CFG_AUDIT_SET_SECRET", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' %{dclass_counter2->} %{directory}", processor_chain([ - dup21, - dup22, - setc("event_description","UI CFG AUDIT SET SECRET"), - dup23, -])); - -var msg644 = msg("UI_CFG_AUDIT_SET_SECRET", part666); - -var select64 = linear_select([ - msg642, - msg643, - msg644, -]); - -var part667 = match("MESSAGE#640:UI_CHILD_ARGS_EXCEEDED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Too many arguments for child process '%{agent}'", processor_chain([ - dup30, - dup22, - setc("event_description","Too many arguments for child process"), - dup23, -])); - -var msg645 = msg("UI_CHILD_ARGS_EXCEEDED", part667); - -var part668 = match("MESSAGE#641:UI_CHILD_CHANGE_USER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to switch to local user: %{username}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to switch to local user"), - dup23, -])); - -var msg646 = msg("UI_CHILD_CHANGE_USER", part668); - -var part669 = match("MESSAGE#642:UI_CHILD_EXEC", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Child exec failed for command '%{action}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Child exec failed"), - dup23, -])); - -var msg647 = msg("UI_CHILD_EXEC", part669); - -var part670 = match("MESSAGE#643:UI_CHILD_EXITED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Child exited: PID %{child_pid}, status %{result}, command '%{action}'", processor_chain([ - dup30, - dup22, - setc("event_description","Child exited"), - dup23, -])); - -var msg648 = msg("UI_CHILD_EXITED", part670); - -var part671 = match("MESSAGE#644:UI_CHILD_FOPEN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to append to log '%{filename}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to append to log"), - dup23, -])); - -var msg649 = msg("UI_CHILD_FOPEN", part671); - -var part672 = match("MESSAGE#645:UI_CHILD_PIPE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to create pipe for command '%{action}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to create pipe for command"), - dup23, -])); - -var msg650 = msg("UI_CHILD_PIPE_FAILED", part672); - -var part673 = match("MESSAGE#646:UI_CHILD_SIGNALED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Child received signal: PID %{child_pid}, signal %{result}: %{resultcode}, command='%{action}'", processor_chain([ - dup21, - dup22, - dup61, - setc("event_description","Child received signal"), - dup23, -])); - -var msg651 = msg("UI_CHILD_SIGNALED", part673); - -var part674 = match("MESSAGE#647:UI_CHILD_STOPPED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Child stopped: PID %{child_pid}, signal=%{resultcode->} command='%{action}')", processor_chain([ - dup21, - dup22, - setc("event_description","Child stopped"), - dup23, -])); - -var msg652 = msg("UI_CHILD_STOPPED", part674); - -var part675 = match("MESSAGE#648:UI_CHILD_START", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Starting child '%{agent}'", processor_chain([ - dup21, - dup22, - setc("event_description","Starting child"), - dup23, -])); - -var msg653 = msg("UI_CHILD_START", part675); - -var part676 = match("MESSAGE#649:UI_CHILD_STATUS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Cleanup child '%{agent}', PID %{child_pid}, status %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Cleanup child"), - dup23, -])); - -var msg654 = msg("UI_CHILD_STATUS", part676); - -var part677 = match("MESSAGE#650:UI_CHILD_WAITPID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: waitpid failed: PID %{child_pid}, rc %{dclass_counter2}, status %{resultcode}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","waitpid failed"), - dup23, -])); - -var msg655 = msg("UI_CHILD_WAITPID", part677); - -var part678 = match("MESSAGE#651:UI_CLI_IDLE_TIMEOUT", "nwparser.payload", "%{event_type}: Idle timeout for user '%{username}' exceeded and %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Idle timeout for user exceeded"), - dup23, -])); - -var msg656 = msg("UI_CLI_IDLE_TIMEOUT", part678); - -var part679 = match("MESSAGE#652:UI_CMDLINE_READ_LINE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}', command '%{action}'", processor_chain([ - dup21, - dup22, - dup121, - dup23, -])); - -var msg657 = msg("UI_CMDLINE_READ_LINE", part679); - -var part680 = match("MESSAGE#653:UI_CMDSET_EXEC_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Command execution failed for '%{agent}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Command execution failed"), - dup23, -])); - -var msg658 = msg("UI_CMDSET_EXEC_FAILED", part680); - -var part681 = match("MESSAGE#654:UI_CMDSET_FORK_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to fork command '%{agent}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to fork command"), - dup23, -])); - -var msg659 = msg("UI_CMDSET_FORK_FAILED", part681); - -var msg660 = msg("UI_CMDSET_PIPE_FAILED", dup144); - -var part682 = match("MESSAGE#656:UI_CMDSET_STOPPED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Command stopped: PID %{child_pid}, signal '%{resultcode}, command '%{action}'", processor_chain([ - dup30, - dup22, - dup70, - dup23, -])); - -var msg661 = msg("UI_CMDSET_STOPPED", part682); - -var part683 = match("MESSAGE#657:UI_CMDSET_WEXITED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Command exited: PID %{child_pid}, status %{resultcode}, command '%{action}'", processor_chain([ - dup30, - dup22, - dup72, - dup23, -])); - -var msg662 = msg("UI_CMDSET_WEXITED", part683); - -var part684 = match("MESSAGE#658:UI_CMD_AUTH_REGEX_INVALID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Invalid '%{action}' command authorization regular expression '%{agent}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Invalid regexp command"), - dup23, -])); - -var msg663 = msg("UI_CMD_AUTH_REGEX_INVALID", part684); - -var part685 = match("MESSAGE#659:UI_COMMIT/1_0", "nwparser.p0", "requested '%{action}' operation (comment:%{info})"); - -var part686 = match("MESSAGE#659:UI_COMMIT/1_1", "nwparser.p0", "performed %{action}"); - -var select65 = linear_select([ - part685, - part686, -]); - -var all36 = all_match({ - processors: [ - dup117, - select65, - ], - on_success: processor_chain([ - dup21, - dup22, - dup122, - dup23, - ]), -}); - -var msg664 = msg("UI_COMMIT", all36); - -var part687 = match("MESSAGE#660:UI_COMMIT_AT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' performed %{result}", processor_chain([ - dup21, - dup22, - dup122, - dup23, -])); - -var msg665 = msg("UI_COMMIT_AT", part687); - -var part688 = match("MESSAGE#661:UI_COMMIT_AT_COMPLETED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: '%{agent}' was successful", processor_chain([ - dup21, - dup22, - setc("event_description","User commit successful"), - dup23, -])); - -var msg666 = msg("UI_COMMIT_AT_COMPLETED", part688); - -var part689 = match("MESSAGE#662:UI_COMMIT_AT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{result}, %{info}", processor_chain([ - dup30, - dup22, - setc("event_description","User commit failed"), - dup23, -])); - -var msg667 = msg("UI_COMMIT_AT_FAILED", part689); - -var part690 = match("MESSAGE#663:UI_COMMIT_COMPRESS_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to compress file %{filename}'", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to compress file"), - dup23, -])); - -var msg668 = msg("UI_COMMIT_COMPRESS_FAILED", part690); - -var part691 = match("MESSAGE#664:UI_COMMIT_CONFIRMED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' performed '%{action}'", processor_chain([ - dup21, - dup22, - setc("event_description","UI COMMIT CONFIRMED"), - dup23, -])); - -var msg669 = msg("UI_COMMIT_CONFIRMED", part691); - -var part692 = match("MESSAGE#665:UI_COMMIT_CONFIRMED_REMINDER/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: '%{action}' must be confirmed within %{p0}"); - -var part693 = match("MESSAGE#665:UI_COMMIT_CONFIRMED_REMINDER/1_0", "nwparser.p0", "minutes %{dclass_counter1}"); - -var part694 = match("MESSAGE#665:UI_COMMIT_CONFIRMED_REMINDER/1_1", "nwparser.p0", "%{dclass_counter1->} minutes"); - -var select66 = linear_select([ - part693, - part694, -]); - -var all37 = all_match({ - processors: [ - part692, - select66, - ], - on_success: processor_chain([ - dup21, - dup22, - setc("event_description","COMMIT must be confirmed within # minutes"), - dup23, - ]), -}); - -var msg670 = msg("UI_COMMIT_CONFIRMED_REMINDER", all37); - -var part695 = match("MESSAGE#666:UI_COMMIT_CONFIRMED_TIMED/2", "nwparser.p0", "'%{username}' performed '%{action}'"); - -var all38 = all_match({ - processors: [ - dup50, - dup145, - part695, - ], - on_success: processor_chain([ - dup21, - dup22, - setc("event_description","user performed commit confirm"), - dup23, - ]), -}); - -var msg671 = msg("UI_COMMIT_CONFIRMED_TIMED", all38); - -var part696 = match("MESSAGE#667:UI_COMMIT_EMPTY_CONTAINER", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Skipped empty object %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Skipped empty object"), - dup23, -])); - -var msg672 = msg("UI_COMMIT_EMPTY_CONTAINER", part696); - -var part697 = match("MESSAGE#668:UI_COMMIT_NOT_CONFIRMED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Commit was not confirmed; %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","COMMIT NOT CONFIRMED"), - dup23, -])); - -var msg673 = msg("UI_COMMIT_NOT_CONFIRMED", part697); - -var part698 = match("MESSAGE#669:UI_COMMIT_PROGRESS/1_0", "nwparser.p0", "commit %{p0}"); - -var part699 = match("MESSAGE#669:UI_COMMIT_PROGRESS/1_1", "nwparser.p0", "Commit operation in progress %{p0}"); - -var select67 = linear_select([ - part698, - part699, -]); - -var part700 = match("MESSAGE#669:UI_COMMIT_PROGRESS/2", "nwparser.p0", ": %{action}"); - -var all39 = all_match({ - processors: [ - dup50, - select67, - part700, - ], - on_success: processor_chain([ - dup21, - dup22, - setc("event_description","Commit operation in progress"), - dup23, - ]), -}); - -var msg674 = msg("UI_COMMIT_PROGRESS", all39); - -var part701 = match("MESSAGE#670:UI_COMMIT_QUIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' performed %{action}", processor_chain([ - dup21, - dup22, - setc("event_description","COMMIT QUIT"), - dup23, -])); - -var msg675 = msg("UI_COMMIT_QUIT", part701); - -var part702 = match("MESSAGE#671:UI_COMMIT_ROLLBACK_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Automatic rollback failed", processor_chain([ - dup30, - dup22, - setc("event_description","Automatic rollback failed"), - dup23, -])); - -var msg676 = msg("UI_COMMIT_ROLLBACK_FAILED", part702); - -var part703 = match("MESSAGE#672:UI_COMMIT_SYNC", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' performed %{action}", processor_chain([ - dup21, - dup22, - setc("event_description","COMMIT SYNC"), - dup23, -])); - -var msg677 = msg("UI_COMMIT_SYNC", part703); - -var part704 = match("MESSAGE#673:UI_COMMIT_SYNC_FORCE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: All logins to local configuration database were terminated because %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","All logins to local configuration database were terminated"), - dup23, -])); - -var msg678 = msg("UI_COMMIT_SYNC_FORCE", part704); - -var part705 = match("MESSAGE#674:UI_CONFIGURATION_ERROR/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Process: %{agent}, path: %{p0}"); - -var part706 = match("MESSAGE#674:UI_CONFIGURATION_ERROR/1_0", "nwparser.p0", "[%{filename}], %{p0}"); - -var part707 = match("MESSAGE#674:UI_CONFIGURATION_ERROR/1_1", "nwparser.p0", "%{filename}, %{p0}"); - -var select68 = linear_select([ - part706, - part707, -]); - -var part708 = match("MESSAGE#674:UI_CONFIGURATION_ERROR/2", "nwparser.p0", "statement: %{info->} %{p0}"); - -var part709 = match("MESSAGE#674:UI_CONFIGURATION_ERROR/3_0", "nwparser.p0", ", error: %{result->} "); - -var select69 = linear_select([ - part709, - dup112, -]); - -var all40 = all_match({ - processors: [ - part705, - select68, - part708, - select69, - ], - on_success: processor_chain([ - dup30, - dup22, - setc("event_description","CONFIGURATION ERROR"), - dup23, - ]), -}); - -var msg679 = msg("UI_CONFIGURATION_ERROR", all40); - -var part710 = match("MESSAGE#675:UI_DAEMON_ACCEPT_FAILED/2", "nwparser.p0", "socket connection accept failed: %{result}"); - -var all41 = all_match({ - processors: [ - dup50, - dup157, - part710, - ], - on_success: processor_chain([ - dup30, - dup22, - setc("event_description","socket connection accept failed"), - dup23, - ]), -}); - -var msg680 = msg("UI_DAEMON_ACCEPT_FAILED", all41); - -var part711 = match("MESSAGE#676:UI_DAEMON_FORK_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to create session child: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to create session child"), - dup23, -])); - -var msg681 = msg("UI_DAEMON_FORK_FAILED", part711); - -var part712 = match("MESSAGE#677:UI_DAEMON_SELECT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: select failed: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","DAEMON SELECT FAILED"), - dup23, -])); - -var msg682 = msg("UI_DAEMON_SELECT_FAILED", part712); - -var part713 = match("MESSAGE#678:UI_DAEMON_SOCKET_FAILED/2", "nwparser.p0", "socket create failed: %{result}"); - -var all42 = all_match({ - processors: [ - dup50, - dup157, - part713, - ], - on_success: processor_chain([ - dup30, - dup22, - setc("event_description","socket create failed"), - dup23, - ]), -}); - -var msg683 = msg("UI_DAEMON_SOCKET_FAILED", all42); - -var part714 = match("MESSAGE#679:UI_DBASE_ACCESS_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to reaccess database file '%{filename}', address %{interface}, size %{dclass_counter1}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to reaccess database file"), - dup23, -])); - -var msg684 = msg("UI_DBASE_ACCESS_FAILED", part714); - -var part715 = match("MESSAGE#680:UI_DBASE_CHECKOUT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Database '%{filename}' is out of data and needs to be rebuilt", processor_chain([ - dup30, - dup22, - setc("event_description","Database is out of data"), - dup23, -])); - -var msg685 = msg("UI_DBASE_CHECKOUT_FAILED", part715); - -var part716 = match("MESSAGE#681:UI_DBASE_EXTEND_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to extend database file '%{filename}' to size %{dclass_counter1}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to extend database file"), - dup23, -])); - -var msg686 = msg("UI_DBASE_EXTEND_FAILED", part716); - -var part717 = match("MESSAGE#682:UI_DBASE_LOGIN_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' entering configuration mode", processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup37, - dup22, - setc("event_description","User entering configuration mode"), - dup23, -])); - -var msg687 = msg("UI_DBASE_LOGIN_EVENT", part717); - -var part718 = match("MESSAGE#683:UI_DBASE_LOGOUT_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' %{event_description}", processor_chain([ - dup125, - dup34, - dup35, - dup126, - dup37, - dup22, - setc("event_description","User exiting configuration mode"), - dup23, -])); - -var msg688 = msg("UI_DBASE_LOGOUT_EVENT", part718); - -var part719 = match("MESSAGE#684:UI_DBASE_MISMATCH_EXTENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Database header extent mismatch for file '%{agent}': expecting %{dclass_counter1}, got %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","Database header extent mismatch"), - dup23, -])); - -var msg689 = msg("UI_DBASE_MISMATCH_EXTENT", part719); - -var part720 = match("MESSAGE#685:UI_DBASE_MISMATCH_MAJOR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Database header major version number mismatch for file '%{filename}': expecting %{dclass_counter1}, got %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","Database header major version number mismatch"), - dup23, -])); - -var msg690 = msg("UI_DBASE_MISMATCH_MAJOR", part720); - -var part721 = match("MESSAGE#686:UI_DBASE_MISMATCH_MINOR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Database header minor version number mismatch for file '%{filename}': expecting %{dclass_counter1}, got %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","Database header minor version number mismatch"), - dup23, -])); - -var msg691 = msg("UI_DBASE_MISMATCH_MINOR", part721); - -var part722 = match("MESSAGE#687:UI_DBASE_MISMATCH_SEQUENCE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Database header sequence numbers mismatch for file '%{filename}'", processor_chain([ - dup30, - dup22, - setc("event_description","Database header sequence numbers mismatch"), - dup23, -])); - -var msg692 = msg("UI_DBASE_MISMATCH_SEQUENCE", part722); - -var part723 = match("MESSAGE#688:UI_DBASE_MISMATCH_SIZE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Database header size mismatch for file '%{filename}': expecting %{dclass_counter1}, got %{dclass_counter2}", processor_chain([ - dup30, - dup22, - setc("event_description","Database header size mismatch"), - dup23, -])); - -var msg693 = msg("UI_DBASE_MISMATCH_SIZE", part723); - -var part724 = match("MESSAGE#689:UI_DBASE_OPEN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Database open failed for file '%{filename}': %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Database open failed"), - dup23, -])); - -var msg694 = msg("UI_DBASE_OPEN_FAILED", part724); - -var part725 = match("MESSAGE#690:UI_DBASE_REBUILD_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User %{username->} Automatic rebuild of the database '%{filename}' failed", processor_chain([ - dup30, - dup22, - setc("event_description","DBASE REBUILD FAILED"), - dup23, -])); - -var msg695 = msg("UI_DBASE_REBUILD_FAILED", part725); - -var part726 = match("MESSAGE#691:UI_DBASE_REBUILD_SCHEMA_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Automatic rebuild of the database failed", processor_chain([ - dup30, - dup22, - setc("event_description","Automatic rebuild of the database failed"), - dup23, -])); - -var msg696 = msg("UI_DBASE_REBUILD_SCHEMA_FAILED", part726); - -var part727 = match("MESSAGE#692:UI_DBASE_REBUILD_STARTED/1_1", "nwparser.p0", "Automatic %{p0}"); - -var select70 = linear_select([ - dup76, - part727, -]); - -var part728 = match("MESSAGE#692:UI_DBASE_REBUILD_STARTED/2", "nwparser.p0", "%{username->} rebuild/rollback of the database '%{filename}' started"); - -var all43 = all_match({ - processors: [ - dup50, - select70, - part728, - ], - on_success: processor_chain([ - dup21, - dup22, - setc("event_description","DBASE REBUILD STARTED"), - dup23, - ]), -}); - -var msg697 = msg("UI_DBASE_REBUILD_STARTED", all43); - -var part729 = match("MESSAGE#693:UI_DBASE_RECREATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' attempting database re-creation", processor_chain([ - dup21, - dup22, - setc("event_description","user attempting database re-creation"), - dup23, -])); - -var msg698 = msg("UI_DBASE_RECREATE", part729); - -var part730 = match("MESSAGE#694:UI_DBASE_REOPEN_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Reopen of the database failed", processor_chain([ - dup30, - dup22, - setc("event_description","Reopen of the database failed"), - dup23, -])); - -var msg699 = msg("UI_DBASE_REOPEN_FAILED", part730); - -var part731 = match("MESSAGE#695:UI_DUPLICATE_UID", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Users %{username->} have the same UID %{uid}", processor_chain([ - dup30, - dup22, - setc("event_description","Users have the same UID"), - dup23, -])); - -var msg700 = msg("UI_DUPLICATE_UID", part731); - -var part732 = match("MESSAGE#696:UI_JUNOSCRIPT_CMD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' used JUNOScript client to run command '%{action}'", processor_chain([ - setc("eventcategory","1401050100"), - dup22, - setc("event_description","User used JUNOScript client to run command"), - dup23, -])); - -var msg701 = msg("UI_JUNOSCRIPT_CMD", part732); - -var part733 = match("MESSAGE#697:UI_JUNOSCRIPT_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: JUNOScript error: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","JUNOScript error"), - dup23, -])); - -var msg702 = msg("UI_JUNOSCRIPT_ERROR", part733); - -var part734 = match("MESSAGE#698:UI_LOAD_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' is performing a '%{action}'", processor_chain([ - dup21, - dup22, - setc("event_description","User command"), - dup23, -])); - -var msg703 = msg("UI_LOAD_EVENT", part734); - -var part735 = match("MESSAGE#699:UI_LOAD_JUNOS_DEFAULT_FILE_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Loading the default config from %{filename}", processor_chain([ - setc("eventcategory","1701040000"), - dup22, - setc("event_description","Loading default config from file"), - dup23, -])); - -var msg704 = msg("UI_LOAD_JUNOS_DEFAULT_FILE_EVENT", part735); - -var part736 = match("MESSAGE#700:UI_LOGIN_EVENT:01", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' login, class '%{group}' [%{fld01}], %{info->} '%{saddr->} %{sport->} %{daddr->} %{dport}', client-mode '%{fld02}'", processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup37, - dup22, - dup127, - dup128, - dup23, -])); - -var msg705 = msg("UI_LOGIN_EVENT:01", part736); - -var part737 = match("MESSAGE#701:UI_LOGIN_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' login, class '%{group}' %{info}", processor_chain([ - dup33, - dup34, - dup35, - dup36, - dup37, - dup22, - dup127, - dup23, -])); - -var msg706 = msg("UI_LOGIN_EVENT", part737); - -var select71 = linear_select([ - msg705, - msg706, -]); - -var part738 = match("MESSAGE#702:UI_LOGOUT_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' logout", processor_chain([ - dup125, - dup34, - dup35, - dup126, - dup37, - dup22, - setc("event_description","User logout"), - dup23, -])); - -var msg707 = msg("UI_LOGOUT_EVENT", part738); - -var part739 = match("MESSAGE#703:UI_LOST_CONN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Lost connection to daemon %{agent}", processor_chain([ - dup30, - dup22, - setc("event_description","Lost connection to daemon"), - dup23, -])); - -var msg708 = msg("UI_LOST_CONN", part739); - -var part740 = match("MESSAGE#704:UI_MASTERSHIP_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action->} by '%{username}'", processor_chain([ - dup21, - dup22, - setc("event_description","MASTERSHIP EVENT"), - dup23, -])); - -var msg709 = msg("UI_MASTERSHIP_EVENT", part740); - -var part741 = match("MESSAGE#705:UI_MGD_TERMINATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Terminating operation: exit status %{resultcode}", processor_chain([ - dup21, - dup22, - setc("event_description","Terminating operation"), - dup23, -])); - -var msg710 = msg("UI_MGD_TERMINATE", part741); - -var part742 = match("MESSAGE#706:UI_NETCONF_CMD", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' used NETCONF client to run command '%{action}'", processor_chain([ - dup29, - dup22, - setc("event_description","User used NETCONF client to run command"), - dup23, -])); - -var msg711 = msg("UI_NETCONF_CMD", part742); - -var part743 = match("MESSAGE#707:UI_READ_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: read failed for peer %{hostname}: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","read failed for peer"), - dup23, -])); - -var msg712 = msg("UI_READ_FAILED", part743); - -var part744 = match("MESSAGE#708:UI_READ_TIMEOUT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Timeout on read of peer %{hostname}", processor_chain([ - dup30, - dup22, - setc("event_description","Timeout on read of peer"), - dup23, -])); - -var msg713 = msg("UI_READ_TIMEOUT", part744); - -var part745 = match("MESSAGE#709:UI_REBOOT_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: System %{action->} by '%{username}'", processor_chain([ - dup60, - dup22, - setc("event_description","System reboot or halt"), - dup23, -])); - -var msg714 = msg("UI_REBOOT_EVENT", part745); - -var part746 = match("MESSAGE#710:UI_RESTART_EVENT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: user '%{username}' restarting daemon %{service}", processor_chain([ - dup29, - dup22, - setc("event_description","user restarting daemon"), - dup23, -])); - -var msg715 = msg("UI_RESTART_EVENT", part746); - -var part747 = match("MESSAGE#711:UI_SCHEMA_CHECKOUT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Schema is out of date and %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Schema is out of date"), - dup23, -])); - -var msg716 = msg("UI_SCHEMA_CHECKOUT_FAILED", part747); - -var part748 = match("MESSAGE#712:UI_SCHEMA_MISMATCH_MAJOR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Schema major version mismatch for package %{filename->} %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Schema major version mismatch"), - dup23, -])); - -var msg717 = msg("UI_SCHEMA_MISMATCH_MAJOR", part748); - -var part749 = match("MESSAGE#713:UI_SCHEMA_MISMATCH_MINOR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Schema minor version mismatch for package %{filename->} %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Schema minor version mismatch"), - dup23, -])); - -var msg718 = msg("UI_SCHEMA_MISMATCH_MINOR", part749); - -var part750 = match("MESSAGE#714:UI_SCHEMA_MISMATCH_SEQUENCE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Schema header sequence numbers mismatch for package %{filename}", processor_chain([ - dup30, - dup22, - setc("event_description","Schema header sequence numbers mismatch"), - dup23, -])); - -var msg719 = msg("UI_SCHEMA_MISMATCH_SEQUENCE", part750); - -var part751 = match("MESSAGE#715:UI_SCHEMA_SEQUENCE_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Schema sequence number mismatch", processor_chain([ - dup30, - dup22, - setc("event_description","Schema sequence number mismatch"), - dup23, -])); - -var msg720 = msg("UI_SCHEMA_SEQUENCE_ERROR", part751); - -var part752 = match("MESSAGE#716:UI_SYNC_OTHER_RE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Configuration synchronization with remote Routing Engine %{result}", processor_chain([ - dup21, - dup22, - setc("event_description","Configuration synchronization with remote Routing Engine"), - dup23, -])); - -var msg721 = msg("UI_SYNC_OTHER_RE", part752); - -var part753 = match("MESSAGE#717:UI_TACPLUS_ERROR", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: TACACS+ failure: %{result}", processor_chain([ - dup30, - dup22, - dup129, - dup23, -])); - -var msg722 = msg("UI_TACPLUS_ERROR", part753); - -var part754 = match("MESSAGE#718:UI_VERSION_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to fetch system version: %{result}", processor_chain([ - dup30, - dup22, - setc("event_description","Unable to fetch system version"), - dup23, -])); - -var msg723 = msg("UI_VERSION_FAILED", part754); - -var part755 = match("MESSAGE#719:UI_WRITE_RECONNECT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Re-establishing connection to peer %{hostname}", processor_chain([ - dup21, - dup22, - setc("event_description","Re-establishing connection to peer"), - dup23, -])); - -var msg724 = msg("UI_WRITE_RECONNECT", part755); - -var part756 = match("MESSAGE#720:VRRPD_NEWMASTER_TRAP", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Interface %{interface->} (local addr: %{saddr}) is now master for %{username}", processor_chain([ - dup21, - dup22, - setc("event_description","Interface new master for User"), - dup23, -])); - -var msg725 = msg("VRRPD_NEWMASTER_TRAP", part756); - -var part757 = match("MESSAGE#721:WEB_AUTH_FAIL", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to authenticate %{obj_name->} (username %{c_username})", processor_chain([ - dup69, - dup34, - dup35, - dup43, - dup22, - setc("event_description","Unable to authenticate client"), - dup23, -])); - -var msg726 = msg("WEB_AUTH_FAIL", part757); - -var part758 = match("MESSAGE#722:WEB_AUTH_SUCCESS", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Authenticated %{agent->} client (username %{c_username})", processor_chain([ - dup80, - dup34, - dup35, - dup37, - dup22, - setc("event_description","Authenticated client"), - dup23, -])); - -var msg727 = msg("WEB_AUTH_SUCCESS", part758); - -var part759 = match("MESSAGE#723:WEB_INTERFACE_UNAUTH", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Web services request received from unauthorized interface %{interface}", processor_chain([ - setc("eventcategory","1001030300"), - dup22, - setc("event_description","web request from unauthorized interface"), - dup23, -])); - -var msg728 = msg("WEB_INTERFACE_UNAUTH", part759); - -var part760 = match("MESSAGE#724:WEB_READ", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to read from client: %{result}", processor_chain([ - dup74, - dup22, - setc("event_description","Unable to read from client"), - dup23, -])); - -var msg729 = msg("WEB_READ", part760); - -var part761 = match("MESSAGE#725:WEBFILTER_REQUEST_NOT_CHECKED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Error encountered: %{result}, failed to check request %{url}", processor_chain([ - setc("eventcategory","1204020100"), - dup22, - setc("event_description","failed to check web request"), - dup23, -])); - -var msg730 = msg("WEBFILTER_REQUEST_NOT_CHECKED", part761); - -var part762 = match("MESSAGE#726:FLOW_REASSEMBLE_FAIL", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} source-address=\"%{saddr}\" destination-address=\"%{daddr}\" assembly-id=\"%{fld1}\"]", processor_chain([ - dup74, - dup53, - dup43, - dup22, - dup52, -])); - -var msg731 = msg("FLOW_REASSEMBLE_FAIL", part762); - -var part763 = match("MESSAGE#727:eswd", "nwparser.payload", "%{process}[%{process_id}]: Bridge Address: add %{macaddr}", processor_chain([ - dup29, - dup22, - setc("event_description","Bridge Address"), - dup23, -])); - -var msg732 = msg("eswd", part763); - -var part764 = match("MESSAGE#728:eswd:01", "nwparser.payload", "%{process}[%{process_id}]: %{info}: STP state for interface %{interface->} context id %{id->} changed from %{fld3}", processor_chain([ - dup29, - dup22, - setc("event_description","ESWD STP State Change Info"), - dup23, -])); - -var msg733 = msg("eswd:01", part764); - -var select72 = linear_select([ - msg732, - msg733, -]); - -var part765 = match("MESSAGE#729:/usr/sbin/cron", "nwparser.payload", "%{process}[%{process_id}]: (%{username}) CMD ( %{action})", processor_chain([ - dup29, - dup22, - dup26, - dup23, -])); - -var msg734 = msg("/usr/sbin/cron", part765); - -var part766 = match("MESSAGE#730:chassism:02", "nwparser.payload", "%{process}[%{process_id}]: %{info}: ifd %{interface->} %{action}", processor_chain([ - dup29, - dup22, - setc("event_description","Link status change event"), - dup23, -])); - -var msg735 = msg("chassism:02", part766); - -var part767 = match("MESSAGE#731:chassism:01", "nwparser.payload", "%{process}[%{process_id}]: %{info}: %{interface}, %{action}", processor_chain([ - dup29, - dup22, - setc("event_description","ifd process flaps"), - dup23, -])); - -var msg736 = msg("chassism:01", part767); - -var part768 = match("MESSAGE#732:chassism", "nwparser.payload", "%{process}[%{process_id}]: %{info}: %{action}", processor_chain([ - dup29, - dup22, - setc("event_description","IFCM "), - dup23, -])); - -var msg737 = msg("chassism", part768); - -var select73 = linear_select([ - msg735, - msg736, - msg737, -]); - -var msg738 = msg("WEBFILTER_URL_PERMITTED", dup158); - -var part769 = match("MESSAGE#734:WEBFILTER_URL_PERMITTED:01", "nwparser.payload", "%{event_type->} [junos@%{fld21->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" name=\"%{info}\" error-message=\"%{result}\" profile-name=\"%{profile}\" object-name=\"%{obj_name}\" pathname=\"%{directory}\" username=\"%{username}\" roles=\"%{user_role}\"] WebFilter: ACTION=\"%{action}\" %{fld2}->%{fld3->} CATEGORY=\"%{category}\" REASON=\"%{fld4}\" PROFILE=\"%{fld6}\" URL=%{url->} OBJ=%{fld7}", processor_chain([ - dup30, - dup22, - dup52, -])); - -var msg739 = msg("WEBFILTER_URL_PERMITTED:01", part769); - -var part770 = match("MESSAGE#735:WEBFILTER_URL_PERMITTED:03", "nwparser.payload", "%{event_type->} [junos@%{fld21->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" name=\"%{info}\" error-message=\"%{result}\" profile-name=\"%{profile}\" object-name=\"%{obj_name}\" pathname=\"%{directory}\" username=\"%{username}\" roles=\"%{user_role}\"] WebFilter: ACTION=\"%{action}\" %{fld2}->%{fld3->} CATEGORY=\"%{category}\" REASON=%{fld4}", processor_chain([ - dup30, - dup22, - dup52, -])); - -var msg740 = msg("WEBFILTER_URL_PERMITTED:03", part770); - -var part771 = match("MESSAGE#736:WEBFILTER_URL_PERMITTED:02", "nwparser.payload", "%{event_type->} [junos@%{fld21->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" name=\"%{info}\" error-message=\"%{result}\" profile-name=\"%{profile}\" object-name=\"%{obj_name}\" pathname=%{url}", processor_chain([ - dup30, - dup22, - dup52, -])); - -var msg741 = msg("WEBFILTER_URL_PERMITTED:02", part771); - -var select74 = linear_select([ - msg738, - msg739, - msg740, - msg741, -]); - -var msg742 = msg("WEBFILTER_URL_BLOCKED", dup158); - -var part772 = match("MESSAGE#738:WEBFILTER_URL_BLOCKED:01", "nwparser.payload", "%{event_type->} [junos@%{fld21->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" name=\"%{info}\" error-message=\"%{result}\" profile-name=\"%{profile}\" object-name=\"%{obj_name}\" pathname=\"%{directory}\" username=\"%{username}\" roles=\"%{user_role}\"] WebFilter: ACTION=\"%{action}\" %{fld2}->%{fld3->} CATEGORY=\"%{category}\" REASON=\"%{fld4}\" PROFILE=\"%{fld6}\" URL=%{url}", processor_chain([ - dup30, - dup22, - dup52, -])); - -var msg743 = msg("WEBFILTER_URL_BLOCKED:01", part772); - -var select75 = linear_select([ - msg742, - msg743, -]); - -var part773 = match("MESSAGE#740:SECINTEL_NETWORK_CONNECT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{id}: \u003c\u003c%{fld12}> Access url %{url->} on port %{network_port->} failed\u003c\u003c%{result}>.", processor_chain([ - dup46, - dup47, - dup23, - dup22, - dup128, -])); - -var msg744 = msg("SECINTEL_NETWORK_CONNECT_FAILED", part773); - -var part774 = match("MESSAGE#741:AAMWD_NETWORK_CONNECT_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{id}: \u003c\u003c%{fld12}> Access host %{hostname->} on ip %{hostip->} port %{network_port->} %{result}.", processor_chain([ - dup46, - dup47, - dup23, -])); - -var msg745 = msg("AAMWD_NETWORK_CONNECT_FAILED", part774); - -var part775 = match("MESSAGE#742:PKID_UNABLE_TO_GET_CRL", "nwparser.payload", "%{process}[%{process_id}]: %{id}: Failed to retrieve CRL from received file for %{node}", processor_chain([ - dup46, - dup47, - dup23, - dup22, - dup128, -])); - -var msg746 = msg("PKID_UNABLE_TO_GET_CRL", part775); - -var part776 = match("MESSAGE#743:SECINTEL_ERROR_OTHERS", "nwparser.payload", "%{process}[%{process_id}]: %{id}: \u003c\u003c%{fld12}> %{result}", processor_chain([ - dup46, - dup47, - dup23, - dup22, - dup128, -])); - -var msg747 = msg("SECINTEL_ERROR_OTHERS", part776); - -var part777 = match("MESSAGE#744:JSRPD_HA_CONTROL_LINK_UP", "nwparser.payload", "%{process}[%{process_id}]: %{id}: HA control link monitor status is marked up", processor_chain([ - dup48, - dup47, - dup23, - dup22, - dup128, -])); - -var msg748 = msg("JSRPD_HA_CONTROL_LINK_UP", part777); - -var part778 = match("MESSAGE#745:LACPD_TIMEOUT", "nwparser.payload", "%{process}[%{process_id}]: LACPD_TIMEOUT: %{sinterface}: %{event_description}", processor_chain([ - dup46, - dup47, - dup23, - dup22, - dup128, -])); - -var msg749 = msg("LACPD_TIMEOUT", part778); - -var msg750 = msg("cli", dup159); - -var msg751 = msg("pfed", dup159); - -var msg752 = msg("idpinfo", dup159); - -var msg753 = msg("kmd", dup159); - -var part779 = match("MESSAGE#751:node:01", "nwparser.payload", "%{hostname->} %{node->} Next-hop resolution requests from interface %{interface->} throttled", processor_chain([ - dup21, - dup23, - dup22, -])); - -var msg754 = msg("node:01", part779); - -var part780 = match("MESSAGE#752:node:02", "nwparser.payload", "%{hostname->} %{node->} %{process}: Trying peer connection, status %{resultcode}, attempt %{fld1}", processor_chain([ - dup21, - dup23, - dup22, -])); - -var msg755 = msg("node:02", part780); - -var part781 = match("MESSAGE#753:node:03", "nwparser.payload", "%{hostname->} %{node->} %{process}: trying master connection, status %{resultcode}, attempt %{fld1}", processor_chain([ - dup21, - dup23, - dup22, -])); - -var msg756 = msg("node:03", part781); - -var part782 = match("MESSAGE#754:node:04", "nwparser.payload", "%{hostname->} %{node->} %{fld1->} key %{fld2->} %{fld3->} port priority %{fld6->} %{fld4->} port %{portname->} %{fld5->} state %{resultcode}", processor_chain([ - dup21, - dup23, - dup22, -])); - -var msg757 = msg("node:04", part782); - -var select76 = linear_select([ - dup131, - dup132, -]); - -var part783 = match("MESSAGE#755:node:05/2", "nwparser.p0", "%{}sys priority %{fld4->} %{p0}"); - -var select77 = linear_select([ - dup132, - dup131, -]); - -var part784 = match("MESSAGE#755:node:05/4", "nwparser.p0", "%{}sys %{interface}"); - -var all44 = all_match({ - processors: [ - dup130, - select76, - part783, - select77, - part784, - ], - on_success: processor_chain([ - dup21, - dup23, - dup22, - ]), -}); - -var msg758 = msg("node:05", all44); - -var part785 = match("MESSAGE#756:node:06/1_0", "nwparser.p0", "dst mac %{dinterface}"); - -var part786 = match("MESSAGE#756:node:06/1_1", "nwparser.p0", "src mac %{sinterface->} ether type %{fld1}"); - -var select78 = linear_select([ - part785, - part786, -]); - -var all45 = all_match({ - processors: [ - dup130, - select78, - ], - on_success: processor_chain([ - dup21, - dup23, - dup22, - ]), -}); - -var msg759 = msg("node:06", all45); - -var part787 = match("MESSAGE#757:node:07", "nwparser.payload", "%{hostname->} %{node->} %{process}: interface %{interface->} trigger reth_scan", processor_chain([ - dup21, - dup23, - dup22, -])); - -var msg760 = msg("node:07", part787); - -var part788 = match("MESSAGE#758:node:08", "nwparser.payload", "%{hostname->} %{node->} %{process}: %{info}", processor_chain([ - dup21, - dup23, - dup22, -])); - -var msg761 = msg("node:08", part788); - -var part789 = match("MESSAGE#759:node:09", "nwparser.payload", "%{hostname->} %{node->} %{fld1}", processor_chain([ - dup21, - dup23, - dup22, -])); - -var msg762 = msg("node:09", part789); - -var select79 = linear_select([ - msg754, - msg755, - msg756, - msg757, - msg758, - msg759, - msg760, - msg761, - msg762, -]); - -var part790 = match("MESSAGE#760:(FPC:01", "nwparser.payload", "%{fld1}) %{node->} kernel: %{event_type}: deleting active remote neighbor entry %{fld2->} from interface %{interface}.", processor_chain([ - dup21, - dup23, - dup22, - dup24, -])); - -var msg763 = msg("(FPC:01", part790); - -var part791 = match("MESSAGE#761:(FPC:02", "nwparser.payload", "%{fld1}) %{node->} kernel: %{event_type->} deleting nb %{fld2->} on ifd %{interface->} for cid %{fld3->} from active neighbor table", processor_chain([ - dup21, - dup23, - dup22, - dup24, -])); - -var msg764 = msg("(FPC:02", part791); - -var part792 = match("MESSAGE#762:(FPC:03/0", "nwparser.payload", "%{fld1}) %{node->} kernel: %{event_type}: M%{p0}"); - -var part793 = match("MESSAGE#762:(FPC:03/1_0", "nwparser.p0", "DOWN %{p0}"); - -var part794 = match("MESSAGE#762:(FPC:03/1_1", "nwparser.p0", "UP %{p0}"); - -var select80 = linear_select([ - part793, - part794, -]); - -var part795 = match("MESSAGE#762:(FPC:03/2", "nwparser.p0", "received for interface %{interface}, member of %{fld4}"); - -var all46 = all_match({ - processors: [ - part792, - select80, - part795, - ], - on_success: processor_chain([ - dup21, - dup23, - dup22, - dup24, - ]), -}); - -var msg765 = msg("(FPC:03", all46); - -var part796 = match("MESSAGE#763:(FPC:04", "nwparser.payload", "%{fld1}) %{node->} kernel: %{event_type}: ifd=%{interface}, ifd flags=%{fld2}", processor_chain([ - dup21, - dup23, - dup22, - dup24, -])); - -var msg766 = msg("(FPC:04", part796); - -var part797 = match("MESSAGE#764:(FPC:05", "nwparser.payload", "%{fld1}) %{node->} kernel: rdp keepalive expired, connection dropped - src %{fld3}:%{fld2->} dest %{fld4}:%{fld5}", processor_chain([ - dup21, - dup23, - dup22, - dup24, -])); - -var msg767 = msg("(FPC:05", part797); - -var part798 = match("MESSAGE#765:(FPC", "nwparser.payload", "%{fld1}) %{node->} %{fld10}", processor_chain([ - dup21, - dup23, - dup22, - dup24, -])); - -var msg768 = msg("(FPC", part798); - -var select81 = linear_select([ - msg763, - msg764, - msg765, - msg766, - msg767, - msg768, -]); - -var part799 = match("MESSAGE#766:tnp.bootpd", "nwparser.payload", "%{process}[%{process_id}]:%{fld1}", processor_chain([ - dup48, - dup23, - dup22, - dup24, -])); - -var msg769 = msg("tnp.bootpd", part799); - -var part800 = match("MESSAGE#769:AAMW_ACTION_LOG", "nwparser.payload", "%{event_type}[junos@%{fld32->} hostname=\"%{hostname}\" file-category=\"%{fld9}\" verdict-number=\"%{fld10}\" action=\"%{action}\" list-hit=\"%{fld19}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" protocol-id=\"%{protocol}\" application=\"%{fld6}\" nested-application=\"%{fld7}\" policy-name=\"%{policyname}\" username=\"%{username}\" roles=\"%{user_role}\" session-id-32=\"%{sessionid}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" url=\"%{url}\"] %{fld27}", processor_chain([ - dup48, - dup52, - dup22, - dup61, -])); - -var msg770 = msg("AAMW_ACTION_LOG", part800); - -var part801 = match("MESSAGE#770:AAMW_HOST_INFECTED_EVENT_LOG", "nwparser.payload", "%{event_type}[junos@%{fld32->} timestamp=\"%{fld30}\" tenant-id=\"%{fld1}\" client-ip-str=\"%{hostip}\" hostname=\"%{hostname}\" status=\"%{fld13}\" policy-name=\"%{policyname}\" verdict-number=\"%{fld15}\" state=\"%{fld16}\" reason=\"%{result}\" message=\"%{info}\" %{fld3}", processor_chain([ - dup133, - dup52, - dup22, - dup61, -])); - -var msg771 = msg("AAMW_HOST_INFECTED_EVENT_LOG", part801); - -var part802 = match("MESSAGE#771:AAMW_MALWARE_EVENT_LOG", "nwparser.payload", "%{event_type}[junos@%{fld32->} timestamp=\"%{fld30}\" tenant-id=\"%{fld1}\" sample-sha256=\"%{checksum}\" client-ip-str=\"%{hostip}\" verdict-number=\"%{fld26}\" malware-info=\"%{threat_name}\" username=\"%{username}\" hostname=\"%{hostname}\" %{fld3}", processor_chain([ - dup133, - dup52, - dup22, -])); - -var msg772 = msg("AAMW_MALWARE_EVENT_LOG", part802); - -var part803 = match("MESSAGE#772:IDP_ATTACK_LOG_EVENT", "nwparser.payload", "%{event_type}[junos@%{fld32->} epoch-time=\"%{fld1}\" message-type=\"%{info}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" protocol-name=\"%{protocol}\" service-name=\"%{service}\" application-name=\"%{application}\" rule-name=\"%{fld5}\" rulebase-name=\"%{rulename}\" policy-name=\"%{policyname}\" export-id=\"%{fld6}\" repeat-count=\"%{fld7}\" action=\"%{action}\" threat-severity=\"%{severity}\" attack-name=\"%{threat_name}\" nat-source-address=\"%{hostip}\" nat-source-port=\"%{network_port}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\" elapsed-time=%{fld8->} inbound-bytes=\"%{rbytes}\" outbound-bytes=\"%{sbytes}\" inbound-packets=\"%{packets}\" outbound-packets=\"%{dclass_counter1}\" source-zone-name=\"%{src_zone}\" source-interface-name=\"%{sinterface}\" destination-zone-name=\"%{dst_zone}\" destination-interface-name=\"%{dinterface}\" packet-log-id=\"%{fld9}\" alert=\"%{fld19}\" username=\"%{username}\" roles=\"%{fld15}\" message=\"%{fld28}\" %{fld3}", processor_chain([ - dup81, - dup52, - dup22, - dup61, -])); - -var msg773 = msg("IDP_ATTACK_LOG_EVENT", part803); - -var part804 = match("MESSAGE#773:RT_SCREEN_ICMP", "nwparser.payload", "%{event_type}[junos@%{fld32->} attack-name=\"%{threat_name}\" source-address=\"%{saddr}\" destination-address=\"%{daddr}\" source-zone-name=\"%{src_zone}\" interface-name=\"%{interface}\" action=\"%{action}\"] %{fld23}", processor_chain([ - dup81, - dup52, - dup22, - dup61, -])); - -var msg774 = msg("RT_SCREEN_ICMP", part804); - -var part805 = match("MESSAGE#774:SECINTEL_ACTION_LOG", "nwparser.payload", "%{event_type}[junos@%{fld32->} category=\"%{fld1}\" sub-category=\"%{fld2}\" action=\"%{action}\" action-detail=\"%{fld4}\" http-host=\"%{fld17}\" threat-severity=\"%{severity}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" protocol-id=\"%{protocol}\" application=\"%{fld5}\" nested-application=\"%{fld6}\" feed-name=\"%{fld18}\" policy-name=\"%{policyname}\" profile-name=\"%{rulename}\" username=\"%{username}\" roles=\"%{user_role}\" session-id-32=\"%{sessionid}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\"]%{fld10}", processor_chain([ - dup46, - dup52, - dup22, - dup61, -])); - -var msg775 = msg("SECINTEL_ACTION_LOG", part805); - -var part806 = match("MESSAGE#775:qsfp/0", "nwparser.payload", "%{hostname->} %{fld2->} %{p0}"); - -var part807 = match("MESSAGE#775:qsfp/1_0", "nwparser.p0", "%{fld3->} %{process}: qsfp-%{p0}"); - -var part808 = match("MESSAGE#775:qsfp/1_1", "nwparser.p0", "qsfp-%{p0}"); - -var select82 = linear_select([ - part807, - part808, -]); - -var part809 = match("MESSAGE#775:qsfp/2", "nwparser.p0", "%{}Chan# %{interface->} %{fld5}:%{event_description}"); - -var all47 = all_match({ - processors: [ - part806, - select82, - part809, - ], - on_success: processor_chain([ - dup21, - dup22, - dup23, - ]), -}); - -var msg776 = msg("qsfp", all47); - -var part810 = match("MESSAGE#776:JUNOSROUTER_GENERIC:03", "nwparser.payload", "%{event_type}: User '%{username}', command '%{action}'", processor_chain([ - dup21, - dup22, - dup121, - dup23, -])); - -var msg777 = msg("JUNOSROUTER_GENERIC:03", part810); - -var part811 = match("MESSAGE#777:JUNOSROUTER_GENERIC:04", "nwparser.payload", "%{event_type}: User '%{username}' %{fld1}", processor_chain([ - dup125, - dup34, - dup35, - dup126, - dup37, - dup22, - setc("event_description","LOGOUT"), - dup23, -])); - -var msg778 = msg("JUNOSROUTER_GENERIC:04", part811); - -var part812 = match("MESSAGE#778:JUNOSROUTER_GENERIC:05", "nwparser.payload", "%{event_type}: TACACS+ failure: %{result}", processor_chain([ - dup30, - dup22, - dup129, - dup23, -])); - -var msg779 = msg("JUNOSROUTER_GENERIC:05", part812); - -var part813 = match("MESSAGE#779:JUNOSROUTER_GENERIC:06", "nwparser.payload", "%{event_type}: mismatch NLRI with %{hostip->} (%{hostname}): peer: %{daddr->} us: %{saddr}", processor_chain([ - dup30, - dup22, - dup57, - dup23, -])); - -var msg780 = msg("JUNOSROUTER_GENERIC:06", part813); - -var part814 = match("MESSAGE#780:JUNOSROUTER_GENERIC:07", "nwparser.payload", "%{event_type}: NOTIFICATION sent to %{daddr->} (%{dhost}): code %{resultcode->} (%{action}), Reason: %{result}", processor_chain([ - dup21, - dup22, - dup38, - dup23, -])); - -var msg781 = msg("JUNOSROUTER_GENERIC:07", part814); - -var part815 = match("MESSAGE#781:JUNOSROUTER_GENERIC:08/0", "nwparser.payload", "%{event_type}: NOTIFICATION received from %{daddr->} (%{dhost}): code %{resultcode->} (%{action})%{p0}"); - -var part816 = match("MESSAGE#781:JUNOSROUTER_GENERIC:08/1_0", "nwparser.p0", ", socket buffer sndcc: %{fld1->} rcvcc: %{fld2->} TCP state: %{event_state}, snd_una: %{fld3->} snd_nxt: %{fld4->} snd_wnd: %{fld5->} rcv_nxt: %{fld6->} rcv_adv: %{fld7}, hold timer %{fld8}"); - -var part817 = match_copy("MESSAGE#781:JUNOSROUTER_GENERIC:08/1_1", "nwparser.p0", ""); - -var select83 = linear_select([ - part816, - part817, -]); - -var all48 = all_match({ - processors: [ - part815, - select83, - ], - on_success: processor_chain([ - dup21, - dup22, - dup38, - dup23, - ]), -}); - -var msg782 = msg("JUNOSROUTER_GENERIC:08", all48); - -var part818 = match("MESSAGE#782:JUNOSROUTER_GENERIC:09", "nwparser.payload", "%{event_type}: [edit interfaces%{interface}unit%{fld1}family inet address%{hostip}/%{network_port}] :%{event_description}:%{info}", processor_chain([ - dup21, - dup22, - dup23, -])); - -var msg783 = msg("JUNOSROUTER_GENERIC:09", part818); - -var part819 = match("MESSAGE#783:JUNOSROUTER_GENERIC:01", "nwparser.payload", "%{event_type->} Interface Monitor failed %{fld1}", processor_chain([ - dup134, - dup23, - dup22, - setc("event_description","Interface Monitor failed "), - dup24, -])); - -var msg784 = msg("JUNOSROUTER_GENERIC:01", part819); - -var part820 = match("MESSAGE#784:JUNOSROUTER_GENERIC:02", "nwparser.payload", "%{event_type->} Interface Monitor failure recovered %{fld1}", processor_chain([ - dup134, - dup23, - dup22, - setc("event_description","Interface Monitor failure recovered"), - dup24, -])); - -var msg785 = msg("JUNOSROUTER_GENERIC:02", part820); - -var part821 = match("MESSAGE#785:JUNOSROUTER_GENERIC", "nwparser.payload", "%{event_type->} %{fld1}", processor_chain([ - dup134, - dup23, - dup22, - dup24, -])); - -var msg786 = msg("JUNOSROUTER_GENERIC", part821); - -var select84 = linear_select([ - msg777, - msg778, - msg779, - msg780, - msg781, - msg782, - msg783, - msg784, - msg785, - msg786, -]); - -var chain1 = processor_chain([ - select5, - msgid_select({ - "(FPC": select81, - "/usr/libexec/telnetd": msg2, - "/usr/sbin/cron": msg734, - "/usr/sbin/sshd": msg1, - "AAMWD_NETWORK_CONNECT_FAILED": msg745, - "AAMW_ACTION_LOG": msg770, - "AAMW_HOST_INFECTED_EVENT_LOG": msg771, - "AAMW_MALWARE_EVENT_LOG": msg772, - "ACCT_ACCOUNTING_FERROR": msg114, - "ACCT_ACCOUNTING_FOPEN_ERROR": msg115, - "ACCT_ACCOUNTING_SMALL_FILE_SIZE": msg116, - "ACCT_BAD_RECORD_FORMAT": msg117, - "ACCT_CU_RTSLIB_error": msg118, - "ACCT_GETHOSTNAME_error": msg119, - "ACCT_MALLOC_FAILURE": msg120, - "ACCT_UNDEFINED_COUNTER_NAME": msg121, - "ACCT_XFER_FAILED": msg122, - "ACCT_XFER_POPEN_FAIL": msg123, - "APPQOS_LOG_EVENT": msg124, - "APPTRACK_SESSION_CLOSE": select30, - "APPTRACK_SESSION_CREATE": msg125, - "APPTRACK_SESSION_VOL_UPDATE": select31, - "BCHIP": msg106, - "BFDD_TRAP_STATE_DOWN": msg130, - "BFDD_TRAP_STATE_UP": msg131, - "BOOTPD_ARG_ERR": msg143, - "BOOTPD_BAD_ID": msg144, - "BOOTPD_BOOTSTRING": msg145, - "BOOTPD_CONFIG_ERR": msg146, - "BOOTPD_CONF_OPEN": msg147, - "BOOTPD_DUP_REV": msg148, - "BOOTPD_DUP_SLOT": msg149, - "BOOTPD_MODEL_CHK": msg150, - "BOOTPD_MODEL_ERR": msg151, - "BOOTPD_NEW_CONF": msg152, - "BOOTPD_NO_BOOTSTRING": msg153, - "BOOTPD_NO_CONFIG": msg154, - "BOOTPD_PARSE_ERR": msg155, - "BOOTPD_REPARSE": msg156, - "BOOTPD_SELECT_ERR": msg157, - "BOOTPD_TIMEOUT": msg158, - "BOOTPD_VERSION": msg159, - "CHASSISD": msg160, - "CHASSISD_ARGUMENT_ERROR": msg161, - "CHASSISD_BLOWERS_SPEED": msg162, - "CHASSISD_BLOWERS_SPEED_FULL": msg163, - "CHASSISD_CB_READ": msg164, - "CHASSISD_COMMAND_ACK_ERROR": msg165, - "CHASSISD_COMMAND_ACK_SF_ERROR": msg166, - "CHASSISD_CONCAT_MODE_ERROR": msg167, - "CHASSISD_CONFIG_INIT_ERROR": msg168, - "CHASSISD_CONFIG_WARNING": msg169, - "CHASSISD_EXISTS": msg170, - "CHASSISD_EXISTS_TERM_OTHER": msg171, - "CHASSISD_FILE_OPEN": msg172, - "CHASSISD_FILE_STAT": msg173, - "CHASSISD_FRU_EVENT": msg174, - "CHASSISD_FRU_IPC_WRITE_ERROR_EXT": msg175, - "CHASSISD_FRU_STEP_ERROR": msg176, - "CHASSISD_GETTIMEOFDAY": msg177, - "CHASSISD_HIGH_TEMP_CONDITION": msg214, - "CHASSISD_HOST_TEMP_READ": msg178, - "CHASSISD_IFDEV_DETACH_ALL_PSEUDO": msg179, - "CHASSISD_IFDEV_DETACH_FPC": msg180, - "CHASSISD_IFDEV_DETACH_PIC": msg181, - "CHASSISD_IFDEV_DETACH_PSEUDO": msg182, - "CHASSISD_IFDEV_DETACH_TLV_ERROR": msg183, - "CHASSISD_IFDEV_GET_BY_INDEX_FAIL": msg184, - "CHASSISD_IPC_MSG_QFULL_ERROR": msg185, - "CHASSISD_IPC_UNEXPECTED_RECV": msg186, - "CHASSISD_IPC_WRITE_ERR_NO_PIPE": msg187, - "CHASSISD_IPC_WRITE_ERR_NULL_ARGS": msg188, - "CHASSISD_MAC_ADDRESS_ERROR": msg189, - "CHASSISD_MAC_DEFAULT": msg190, - "CHASSISD_MBUS_ERROR": msg191, - "CHASSISD_PARSE_COMPLETE": msg192, - "CHASSISD_PARSE_ERROR": msg193, - "CHASSISD_PARSE_INIT": msg194, - "CHASSISD_PIDFILE_OPEN": msg195, - "CHASSISD_PIPE_WRITE_ERROR": msg196, - "CHASSISD_POWER_CHECK": msg197, - "CHASSISD_RECONNECT_SUCCESSFUL": msg198, - "CHASSISD_RELEASE_MASTERSHIP": msg199, - "CHASSISD_RE_INIT_INVALID_RE_SLOT": msg200, - "CHASSISD_ROOT_MOUNT_ERROR": msg201, - "CHASSISD_RTS_SEQ_ERROR": msg202, - "CHASSISD_SBOARD_VERSION_MISMATCH": msg203, - "CHASSISD_SERIAL_ID": msg204, - "CHASSISD_SMB_ERROR": msg205, - "CHASSISD_SNMP_TRAP10": msg208, - "CHASSISD_SNMP_TRAP6": msg206, - "CHASSISD_SNMP_TRAP7": msg207, - "CHASSISD_TERM_SIGNAL": msg209, - "CHASSISD_TRACE_PIC_OFFLINE": msg210, - "CHASSISD_UNEXPECTED_EXIT": msg211, - "CHASSISD_UNSUPPORTED_MODEL": msg212, - "CHASSISD_VERSION_MISMATCH": msg213, - "CM": msg107, - "CM_JAVA": msg216, - "COS": msg108, - "COSFPC": msg109, - "COSMAN": msg110, - "CRON": msg16, - "CROND": select11, - "Cmerror": msg17, - "DCD_AS_ROOT": msg217, - "DCD_FILTER_LIB_ERROR": msg218, - "DCD_MALLOC_FAILED_INIT": msg219, - "DCD_PARSE_EMERGENCY": msg220, - "DCD_PARSE_FILTER_EMERGENCY": msg221, - "DCD_PARSE_MINI_EMERGENCY": msg222, - "DCD_PARSE_STATE_EMERGENCY": msg223, - "DCD_POLICER_PARSE_EMERGENCY": msg224, - "DCD_PULL_LOG_FAILURE": msg225, - "DFWD_ARGUMENT_ERROR": msg226, - "DFWD_MALLOC_FAILED_INIT": msg227, - "DFWD_PARSE_FILTER_EMERGENCY": msg228, - "DFWD_PARSE_STATE_EMERGENCY": msg229, - "ECCD_DAEMONIZE_FAILED": msg230, - "ECCD_DUPLICATE": msg231, - "ECCD_LOOP_EXIT_FAILURE": msg232, - "ECCD_NOT_ROOT": msg233, - "ECCD_PCI_FILE_OPEN_FAILED": msg234, - "ECCD_PCI_READ_FAILED": msg235, - "ECCD_PCI_WRITE_FAILED": msg236, - "ECCD_PID_FILE_LOCK": msg237, - "ECCD_PID_FILE_UPDATE": msg238, - "ECCD_TRACE_FILE_OPEN_FAILED": msg239, - "ECCD_usage": msg240, - "EVENT": msg23, - "EVENTD_AUDIT_SHOW": msg241, - "FLOW_REASSEMBLE_FAIL": msg731, - "FLOW_REASSEMBLE_SUCCEED": msg242, - "FSAD_CHANGE_FILE_OWNER": msg243, - "FSAD_CONFIG_ERROR": msg244, - "FSAD_CONNTIMEDOUT": msg245, - "FSAD_FAILED": msg246, - "FSAD_FETCHTIMEDOUT": msg247, - "FSAD_FILE_FAILED": msg248, - "FSAD_FILE_REMOVE": msg249, - "FSAD_FILE_RENAME": msg250, - "FSAD_FILE_STAT": msg251, - "FSAD_FILE_SYNC": msg252, - "FSAD_MAXCONN": msg253, - "FSAD_MEMORYALLOC_FAILED": msg254, - "FSAD_NOT_ROOT": msg255, - "FSAD_PARENT_DIRECTORY": msg256, - "FSAD_PATH_IS_DIRECTORY": msg257, - "FSAD_PATH_IS_SPECIAL": msg258, - "FSAD_RECVERROR": msg259, - "FSAD_TERMINATED_CONNECTION": msg260, - "FSAD_TERMINATING_SIGNAL": msg261, - "FSAD_TRACEOPEN_FAILED": msg262, - "FSAD_USAGE": msg263, - "Failed": select25, - "GGSN_ALARM_TRAP_FAILED": msg264, - "GGSN_ALARM_TRAP_SEND": msg265, - "GGSN_TRAP_SEND": msg266, - "IDP_ATTACK_LOG_EVENT": msg773, - "JADE_AUTH_ERROR": msg267, - "JADE_EXEC_ERROR": msg268, - "JADE_NO_LOCAL_USER": msg269, - "JADE_PAM_ERROR": msg270, - "JADE_PAM_NO_LOCAL_USER": msg271, - "JSRPD_HA_CONTROL_LINK_UP": msg748, - "JUNOSROUTER_GENERIC": select84, - "KERN_ARP_ADDR_CHANGE": msg272, - "KMD_PM_SA_ESTABLISHED": msg273, - "L2CPD_TASK_REINIT": msg274, - "LACPD_TIMEOUT": msg749, - "LIBJNX_EXEC_EXITED": msg275, - "LIBJNX_EXEC_FAILED": msg276, - "LIBJNX_EXEC_PIPE": msg277, - "LIBJNX_EXEC_SIGNALED": msg278, - "LIBJNX_EXEC_WEXIT": msg279, - "LIBJNX_FILE_COPY_FAILED": msg280, - "LIBJNX_PRIV_LOWER_FAILED": msg281, - "LIBJNX_PRIV_RAISE_FAILED": msg282, - "LIBJNX_REPLICATE_RCP_EXEC_FAILED": msg283, - "LIBJNX_ROTATE_COMPRESS_EXEC_FAILED": msg284, - "LIBSERVICED_CLIENT_CONNECTION": msg285, - "LIBSERVICED_OUTBOUND_REQUEST": msg286, - "LIBSERVICED_SNMP_LOST_CONNECTION": msg287, - "LIBSERVICED_SOCKET_BIND": msg288, - "LIBSERVICED_SOCKET_PRIVATIZE": msg289, - "LICENSE_EXPIRED": msg290, - "LICENSE_EXPIRED_KEY_DELETED": msg291, - "LICENSE_NEARING_EXPIRY": msg292, - "LOGIN_ABORTED": msg293, - "LOGIN_FAILED": msg294, - "LOGIN_FAILED_INCORRECT_PASSWORD": msg295, - "LOGIN_FAILED_SET_CONTEXT": msg296, - "LOGIN_FAILED_SET_LOGIN": msg297, - "LOGIN_HOSTNAME_UNRESOLVED": msg298, - "LOGIN_INFORMATION": msg299, - "LOGIN_INVALID_LOCAL_USER": msg300, - "LOGIN_MALFORMED_USER": msg301, - "LOGIN_PAM_AUTHENTICATION_ERROR": msg302, - "LOGIN_PAM_ERROR": msg303, - "LOGIN_PAM_MAX_RETRIES": msg304, - "LOGIN_PAM_NONLOCAL_USER": msg305, - "LOGIN_PAM_STOP": msg306, - "LOGIN_PAM_USER_UNKNOWN": msg307, - "LOGIN_PASSWORD_EXPIRED": msg308, - "LOGIN_REFUSED": msg309, - "LOGIN_ROOT": msg310, - "LOGIN_TIMED_OUT": msg311, - "MIB2D_ATM_ERROR": msg312, - "MIB2D_CONFIG_CHECK_FAILED": msg313, - "MIB2D_FILE_OPEN_FAILURE": msg314, - "MIB2D_IFD_IFINDEX_FAILURE": msg315, - "MIB2D_IFL_IFINDEX_FAILURE": msg316, - "MIB2D_INIT_FAILURE": msg317, - "MIB2D_KVM_FAILURE": msg318, - "MIB2D_RTSLIB_READ_FAILURE": msg319, - "MIB2D_RTSLIB_SEQ_MISMATCH": msg320, - "MIB2D_SYSCTL_FAILURE": msg321, - "MIB2D_TRAP_HEADER_FAILURE": msg322, - "MIB2D_TRAP_SEND_FAILURE": msg323, - "MRVL-L2": msg56, - "Multiuser": msg324, - "NASD_AUTHENTICATION_CREATE_FAILED": msg325, - "NASD_CHAP_AUTHENTICATION_IN_PROGRESS": msg326, - "NASD_CHAP_GETHOSTNAME_FAILED": msg327, - "NASD_CHAP_INVALID_CHAP_IDENTIFIER": msg328, - "NASD_CHAP_INVALID_OPCODE": msg329, - "NASD_CHAP_LOCAL_NAME_UNAVAILABLE": msg330, - "NASD_CHAP_MESSAGE_UNEXPECTED": msg331, - "NASD_CHAP_REPLAY_ATTACK_DETECTED": msg332, - "NASD_CONFIG_GET_LAST_MODIFIED_FAILED": msg333, - "NASD_DAEMONIZE_FAILED": msg334, - "NASD_DB_ALLOC_FAILURE": msg335, - "NASD_DB_TABLE_CREATE_FAILURE": msg336, - "NASD_DUPLICATE": msg337, - "NASD_EVLIB_CREATE_FAILURE": msg338, - "NASD_EVLIB_EXIT_FAILURE": msg339, - "NASD_LOCAL_CREATE_FAILED": msg340, - "NASD_NOT_ROOT": msg341, - "NASD_PID_FILE_LOCK": msg342, - "NASD_PID_FILE_UPDATE": msg343, - "NASD_POST_CONFIGURE_EVENT_FAILED": msg344, - "NASD_PPP_READ_FAILURE": msg345, - "NASD_PPP_SEND_FAILURE": msg346, - "NASD_PPP_SEND_PARTIAL": msg347, - "NASD_PPP_UNRECOGNIZED": msg348, - "NASD_RADIUS_ALLOCATE_PASSWORD_FAILED": msg349, - "NASD_RADIUS_CONFIG_FAILED": msg350, - "NASD_RADIUS_CREATE_FAILED": msg351, - "NASD_RADIUS_CREATE_REQUEST_FAILED": msg352, - "NASD_RADIUS_GETHOSTNAME_FAILED": msg353, - "NASD_RADIUS_MESSAGE_UNEXPECTED": msg354, - "NASD_RADIUS_OPEN_FAILED": msg355, - "NASD_RADIUS_SELECT_FAILED": msg356, - "NASD_RADIUS_SET_TIMER_FAILED": msg357, - "NASD_TRACE_FILE_OPEN_FAILED": msg358, - "NASD_usage": msg359, - "NOTICE": msg360, - "PFEMAN": msg61, - "PFE_FW_SYSLOG_IP": select36, - "PFE_NH_RESOLVE_THROTTLED": msg363, - "PING_TEST_COMPLETED": msg364, - "PING_TEST_FAILED": msg365, - "PKID_UNABLE_TO_GET_CRL": msg746, - "PWC_EXIT": msg368, - "PWC_HOLD_RELEASE": msg369, - "PWC_INVALID_RUNS_ARGUMENT": msg370, - "PWC_INVALID_TIMEOUT_ARGUMENT": msg371, - "PWC_KILLED_BY_SIGNAL": msg372, - "PWC_KILL_EVENT": msg373, - "PWC_KILL_FAILED": msg374, - "PWC_KQUEUE_ERROR": msg375, - "PWC_KQUEUE_INIT": msg376, - "PWC_KQUEUE_REGISTER_FILTER": msg377, - "PWC_LOCKFILE_BAD_FORMAT": msg378, - "PWC_LOCKFILE_ERROR": msg379, - "PWC_LOCKFILE_MISSING": msg380, - "PWC_LOCKFILE_NOT_LOCKED": msg381, - "PWC_NO_PROCESS": msg382, - "PWC_PROCESS_EXIT": msg383, - "PWC_PROCESS_FORCED_HOLD": msg384, - "PWC_PROCESS_HOLD": msg385, - "PWC_PROCESS_HOLD_SKIPPED": msg386, - "PWC_PROCESS_OPEN": msg387, - "PWC_PROCESS_TIMED_HOLD": msg388, - "PWC_PROCESS_TIMEOUT": msg389, - "PWC_SIGNAL_INIT": msg390, - "PWC_SOCKET_CONNECT": msg391, - "PWC_SOCKET_CREATE": msg392, - "PWC_SOCKET_OPTION": msg393, - "PWC_STDOUT_WRITE": msg394, - "PWC_SYSTEM_CALL": msg395, - "PWC_UNKNOWN_KILL_OPTION": msg396, - "RDP": msg111, - "RMOPD_ADDRESS_MULTICAST_INVALID": msg397, - "RMOPD_ADDRESS_SOURCE_INVALID": msg398, - "RMOPD_ADDRESS_STRING_FAILURE": msg399, - "RMOPD_ADDRESS_TARGET_INVALID": msg400, - "RMOPD_DUPLICATE": msg401, - "RMOPD_ICMP_ADDRESS_TYPE_UNSUPPORTED": msg402, - "RMOPD_ICMP_SENDMSG_FAILURE": msg403, - "RMOPD_IFINDEX_NOT_ACTIVE": msg404, - "RMOPD_IFINDEX_NO_INFO": msg405, - "RMOPD_IFNAME_NOT_ACTIVE": msg406, - "RMOPD_IFNAME_NO_INFO": msg407, - "RMOPD_NOT_ROOT": msg408, - "RMOPD_ROUTING_INSTANCE_NO_INFO": msg409, - "RMOPD_TRACEROUTE_ERROR": msg410, - "RMOPD_usage": msg411, - "RPD_ABORT": msg412, - "RPD_ACTIVE_TERMINATE": msg413, - "RPD_ASSERT": msg414, - "RPD_ASSERT_SOFT": msg415, - "RPD_EXIT": msg416, - "RPD_IFL_INDEXCOLLISION": msg417, - "RPD_IFL_NAMECOLLISION": msg418, - "RPD_ISIS_ADJDOWN": msg419, - "RPD_ISIS_ADJUP": msg420, - "RPD_ISIS_ADJUPNOIP": msg421, - "RPD_ISIS_LSPCKSUM": msg422, - "RPD_ISIS_OVERLOAD": msg423, - "RPD_KRT_AFUNSUPRT": msg424, - "RPD_KRT_CCC_IFL_MODIFY": msg425, - "RPD_KRT_DELETED_RTT": msg426, - "RPD_KRT_IFA_GENERATION": msg427, - "RPD_KRT_IFDCHANGE": msg428, - "RPD_KRT_IFDEST_GET": msg429, - "RPD_KRT_IFDGET": msg430, - "RPD_KRT_IFD_GENERATION": msg431, - "RPD_KRT_IFL_CELL_RELAY_MODE_INVALID": msg432, - "RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED": msg433, - "RPD_KRT_IFL_GENERATION": msg434, - "RPD_KRT_KERNEL_BAD_ROUTE": msg435, - "RPD_KRT_NEXTHOP_OVERFLOW": msg436, - "RPD_KRT_NOIFD": msg437, - "RPD_KRT_UNKNOWN_RTT": msg438, - "RPD_KRT_VERSION": msg439, - "RPD_KRT_VERSIONNONE": msg440, - "RPD_KRT_VERSIONOLD": msg441, - "RPD_LDP_INTF_BLOCKED": msg442, - "RPD_LDP_INTF_UNBLOCKED": msg443, - "RPD_LDP_NBRDOWN": msg444, - "RPD_LDP_NBRUP": msg445, - "RPD_LDP_SESSIONDOWN": msg446, - "RPD_LDP_SESSIONUP": msg447, - "RPD_LOCK_FLOCKED": msg448, - "RPD_LOCK_LOCKED": msg449, - "RPD_MPLS_LSP_CHANGE": msg450, - "RPD_MPLS_LSP_DOWN": msg451, - "RPD_MPLS_LSP_SWITCH": msg452, - "RPD_MPLS_LSP_UP": msg453, - "RPD_MSDP_PEER_DOWN": msg454, - "RPD_MSDP_PEER_UP": msg455, - "RPD_OSPF_NBRDOWN": msg456, - "RPD_OSPF_NBRUP": msg457, - "RPD_OS_MEMHIGH": msg458, - "RPD_PIM_NBRDOWN": msg459, - "RPD_PIM_NBRUP": msg460, - "RPD_RDISC_CKSUM": msg461, - "RPD_RDISC_NOMULTI": msg462, - "RPD_RDISC_NORECVIF": msg463, - "RPD_RDISC_SOLICITADDR": msg464, - "RPD_RDISC_SOLICITICMP": msg465, - "RPD_RDISC_SOLICITLEN": msg466, - "RPD_RIP_AUTH": msg467, - "RPD_RIP_JOIN_BROADCAST": msg468, - "RPD_RIP_JOIN_MULTICAST": msg469, - "RPD_RT_IFUP": msg470, - "RPD_SCHED_CALLBACK_LONGRUNTIME": msg471, - "RPD_SCHED_CUMULATIVE_LONGRUNTIME": msg472, - "RPD_SCHED_MODULE_LONGRUNTIME": msg473, - "RPD_SCHED_TASK_LONGRUNTIME": msg474, - "RPD_SIGNAL_TERMINATE": msg475, - "RPD_START": msg476, - "RPD_SYSTEM": msg477, - "RPD_TASK_BEGIN": msg478, - "RPD_TASK_CHILDKILLED": msg479, - "RPD_TASK_CHILDSTOPPED": msg480, - "RPD_TASK_FORK": msg481, - "RPD_TASK_GETWD": msg482, - "RPD_TASK_NOREINIT": msg483, - "RPD_TASK_PIDCLOSED": msg484, - "RPD_TASK_PIDFLOCK": msg485, - "RPD_TASK_PIDWRITE": msg486, - "RPD_TASK_REINIT": msg487, - "RPD_TASK_SIGNALIGNORE": msg488, - "RT_COS": msg489, - "RT_FLOW_SESSION_CLOSE": select51, - "RT_FLOW_SESSION_CREATE": select45, - "RT_FLOW_SESSION_DENY": select47, - "RT_SCREEN_ICMP": msg774, - "RT_SCREEN_IP": select52, - "RT_SCREEN_SESSION_LIMIT": msg504, - "RT_SCREEN_TCP": msg503, - "RT_SCREEN_UDP": msg505, - "Resolve": msg63, - "SECINTEL_ACTION_LOG": msg775, - "SECINTEL_ERROR_OTHERS": msg747, - "SECINTEL_NETWORK_CONNECT_FAILED": msg744, - "SERVICED_CLIENT_CONNECT": msg506, - "SERVICED_CLIENT_DISCONNECTED": msg507, - "SERVICED_CLIENT_ERROR": msg508, - "SERVICED_COMMAND_FAILED": msg509, - "SERVICED_COMMIT_FAILED": msg510, - "SERVICED_CONFIGURATION_FAILED": msg511, - "SERVICED_CONFIG_ERROR": msg512, - "SERVICED_CONFIG_FILE": msg513, - "SERVICED_CONNECTION_ERROR": msg514, - "SERVICED_DISABLED_GGSN": msg515, - "SERVICED_DUPLICATE": msg516, - "SERVICED_EVENT_FAILED": msg517, - "SERVICED_INIT_FAILED": msg518, - "SERVICED_MALLOC_FAILURE": msg519, - "SERVICED_NETWORK_FAILURE": msg520, - "SERVICED_NOT_ROOT": msg521, - "SERVICED_PID_FILE_LOCK": msg522, - "SERVICED_PID_FILE_UPDATE": msg523, - "SERVICED_RTSOCK_SEQUENCE": msg524, - "SERVICED_SIGNAL_HANDLER": msg525, - "SERVICED_SOCKET_CREATE": msg526, - "SERVICED_SOCKET_IO": msg527, - "SERVICED_SOCKET_OPTION": msg528, - "SERVICED_STDLIB_FAILURE": msg529, - "SERVICED_USAGE": msg530, - "SERVICED_WORK_INCONSISTENCY": msg531, - "SNMPD_ACCESS_GROUP_ERROR": msg537, - "SNMPD_AUTH_FAILURE": select53, - "SNMPD_AUTH_PRIVILEGES_EXCEEDED": msg542, - "SNMPD_AUTH_RESTRICTED_ADDRESS": msg543, - "SNMPD_AUTH_WRONG_PDU_TYPE": msg544, - "SNMPD_CONFIG_ERROR": msg545, - "SNMPD_CONTEXT_ERROR": msg546, - "SNMPD_ENGINE_FILE_FAILURE": msg547, - "SNMPD_ENGINE_PROCESS_ERROR": msg548, - "SNMPD_FILE_FAILURE": msg549, - "SNMPD_GROUP_ERROR": msg550, - "SNMPD_INIT_FAILED": msg551, - "SNMPD_LIBJUNIPER_FAILURE": msg552, - "SNMPD_LOOPBACK_ADDR_ERROR": msg553, - "SNMPD_MEMORY_FREED": msg554, - "SNMPD_RADIX_FAILURE": msg555, - "SNMPD_RECEIVE_FAILURE": msg556, - "SNMPD_RMONFILE_FAILURE": msg557, - "SNMPD_RMON_COOKIE": msg558, - "SNMPD_RMON_EVENTLOG": msg559, - "SNMPD_RMON_IOERROR": msg560, - "SNMPD_RMON_MIBERROR": msg561, - "SNMPD_RTSLIB_ASYNC_EVENT": msg562, - "SNMPD_SEND_FAILURE": select54, - "SNMPD_SOCKET_FAILURE": msg565, - "SNMPD_SUBAGENT_NO_BUFFERS": msg566, - "SNMPD_SUBAGENT_SEND_FAILED": msg567, - "SNMPD_SYSLIB_FAILURE": msg568, - "SNMPD_THROTTLE_QUEUE_DRAINED": msg569, - "SNMPD_TRAP_COLD_START": msg570, - "SNMPD_TRAP_GEN_FAILURE": msg571, - "SNMPD_TRAP_GEN_FAILURE2": msg572, - "SNMPD_TRAP_INVALID_DATA": msg573, - "SNMPD_TRAP_NOT_ENOUGH_VARBINDS": msg574, - "SNMPD_TRAP_QUEUED": msg575, - "SNMPD_TRAP_QUEUE_DRAINED": msg576, - "SNMPD_TRAP_QUEUE_MAX_ATTEMPTS": msg577, - "SNMPD_TRAP_QUEUE_MAX_SIZE": msg578, - "SNMPD_TRAP_THROTTLED": msg579, - "SNMPD_TRAP_TYPE_ERROR": msg580, - "SNMPD_TRAP_VARBIND_TYPE_ERROR": msg581, - "SNMPD_TRAP_VERSION_ERROR": msg582, - "SNMPD_TRAP_WARM_START": msg583, - "SNMPD_USER_ERROR": msg584, - "SNMPD_VIEW_DELETE": msg585, - "SNMPD_VIEW_INSTALL_DEFAULT": msg586, - "SNMPD_VIEW_OID_PARSE": msg587, - "SNMP_GET_ERROR1": msg588, - "SNMP_GET_ERROR2": msg589, - "SNMP_GET_ERROR3": msg590, - "SNMP_GET_ERROR4": msg591, - "SNMP_NS_LOG_INFO": msg535, - "SNMP_RTSLIB_FAILURE": msg592, - "SNMP_SUBAGENT_IPC_REG_ROWS": msg536, - "SNMP_TRAP_LINK_DOWN": select55, - "SNMP_TRAP_LINK_UP": select56, - "SNMP_TRAP_PING_PROBE_FAILED": msg597, - "SNMP_TRAP_PING_TEST_COMPLETED": msg598, - "SNMP_TRAP_PING_TEST_FAILED": msg599, - "SNMP_TRAP_TRACE_ROUTE_PATH_CHANGE": msg600, - "SNMP_TRAP_TRACE_ROUTE_TEST_COMPLETED": msg601, - "SNMP_TRAP_TRACE_ROUTE_TEST_FAILED": msg602, - "SNTPD": msg112, - "SSB": msg113, - "SSHD_LOGIN_FAILED": select57, - "SSL_PROXY_SESSION_IGNORE": msg534, - "SSL_PROXY_SSL_SESSION_ALLOW": msg532, - "SSL_PROXY_SSL_SESSION_DROP": msg533, - "TASK_TASK_REINIT": msg606, - "TFTPD_AF_ERR": msg607, - "TFTPD_BIND_ERR": msg608, - "TFTPD_CONNECT_ERR": msg609, - "TFTPD_CONNECT_INFO": msg610, - "TFTPD_CREATE_ERR": msg611, - "TFTPD_FIO_ERR": msg612, - "TFTPD_FORK_ERR": msg613, - "TFTPD_NAK_ERR": msg614, - "TFTPD_OPEN_ERR": msg615, - "TFTPD_RECVCOMPLETE_INFO": msg616, - "TFTPD_RECVFROM_ERR": msg617, - "TFTPD_RECV_ERR": msg618, - "TFTPD_SENDCOMPLETE_INFO": msg619, - "TFTPD_SEND_ERR": msg620, - "TFTPD_SOCKET_ERR": msg621, - "TFTPD_STATFS_ERR": msg622, - "TNP": msg623, - "UI_AUTH_EVENT": msg628, - "UI_AUTH_INVALID_CHALLENGE": msg629, - "UI_BOOTTIME_FAILED": msg630, - "UI_CFG_AUDIT_NEW": select58, - "UI_CFG_AUDIT_OTHER": select60, - "UI_CFG_AUDIT_SET": select63, - "UI_CFG_AUDIT_SET_SECRET": select64, - "UI_CHILD_ARGS_EXCEEDED": msg645, - "UI_CHILD_CHANGE_USER": msg646, - "UI_CHILD_EXEC": msg647, - "UI_CHILD_EXITED": msg648, - "UI_CHILD_FOPEN": msg649, - "UI_CHILD_PIPE_FAILED": msg650, - "UI_CHILD_SIGNALED": msg651, - "UI_CHILD_START": msg653, - "UI_CHILD_STATUS": msg654, - "UI_CHILD_STOPPED": msg652, - "UI_CHILD_WAITPID": msg655, - "UI_CLI_IDLE_TIMEOUT": msg656, - "UI_CMDLINE_READ_LINE": msg657, - "UI_CMDSET_EXEC_FAILED": msg658, - "UI_CMDSET_FORK_FAILED": msg659, - "UI_CMDSET_PIPE_FAILED": msg660, - "UI_CMDSET_STOPPED": msg661, - "UI_CMDSET_WEXITED": msg662, - "UI_CMD_AUTH_REGEX_INVALID": msg663, - "UI_COMMIT": msg664, - "UI_COMMIT_AT": msg665, - "UI_COMMIT_AT_COMPLETED": msg666, - "UI_COMMIT_AT_FAILED": msg667, - "UI_COMMIT_COMPRESS_FAILED": msg668, - "UI_COMMIT_CONFIRMED": msg669, - "UI_COMMIT_CONFIRMED_REMINDER": msg670, - "UI_COMMIT_CONFIRMED_TIMED": msg671, - "UI_COMMIT_EMPTY_CONTAINER": msg672, - "UI_COMMIT_NOT_CONFIRMED": msg673, - "UI_COMMIT_PROGRESS": msg674, - "UI_COMMIT_QUIT": msg675, - "UI_COMMIT_ROLLBACK_FAILED": msg676, - "UI_COMMIT_SYNC": msg677, - "UI_COMMIT_SYNC_FORCE": msg678, - "UI_CONFIGURATION_ERROR": msg679, - "UI_DAEMON_ACCEPT_FAILED": msg680, - "UI_DAEMON_FORK_FAILED": msg681, - "UI_DAEMON_SELECT_FAILED": msg682, - "UI_DAEMON_SOCKET_FAILED": msg683, - "UI_DBASE_ACCESS_FAILED": msg684, - "UI_DBASE_CHECKOUT_FAILED": msg685, - "UI_DBASE_EXTEND_FAILED": msg686, - "UI_DBASE_LOGIN_EVENT": msg687, - "UI_DBASE_LOGOUT_EVENT": msg688, - "UI_DBASE_MISMATCH_EXTENT": msg689, - "UI_DBASE_MISMATCH_MAJOR": msg690, - "UI_DBASE_MISMATCH_MINOR": msg691, - "UI_DBASE_MISMATCH_SEQUENCE": msg692, - "UI_DBASE_MISMATCH_SIZE": msg693, - "UI_DBASE_OPEN_FAILED": msg694, - "UI_DBASE_REBUILD_FAILED": msg695, - "UI_DBASE_REBUILD_SCHEMA_FAILED": msg696, - "UI_DBASE_REBUILD_STARTED": msg697, - "UI_DBASE_RECREATE": msg698, - "UI_DBASE_REOPEN_FAILED": msg699, - "UI_DUPLICATE_UID": msg700, - "UI_JUNOSCRIPT_CMD": msg701, - "UI_JUNOSCRIPT_ERROR": msg702, - "UI_LOAD_EVENT": msg703, - "UI_LOAD_JUNOS_DEFAULT_FILE_EVENT": msg704, - "UI_LOGIN_EVENT": select71, - "UI_LOGOUT_EVENT": msg707, - "UI_LOST_CONN": msg708, - "UI_MASTERSHIP_EVENT": msg709, - "UI_MGD_TERMINATE": msg710, - "UI_NETCONF_CMD": msg711, - "UI_READ_FAILED": msg712, - "UI_READ_TIMEOUT": msg713, - "UI_REBOOT_EVENT": msg714, - "UI_RESTART_EVENT": msg715, - "UI_SCHEMA_CHECKOUT_FAILED": msg716, - "UI_SCHEMA_MISMATCH_MAJOR": msg717, - "UI_SCHEMA_MISMATCH_MINOR": msg718, - "UI_SCHEMA_MISMATCH_SEQUENCE": msg719, - "UI_SCHEMA_SEQUENCE_ERROR": msg720, - "UI_SYNC_OTHER_RE": msg721, - "UI_TACPLUS_ERROR": msg722, - "UI_VERSION_FAILED": msg723, - "UI_WRITE_RECONNECT": msg724, - "VRRPD_NEWMASTER_TRAP": msg725, - "Version": msg99, - "WEBFILTER_REQUEST_NOT_CHECKED": msg730, - "WEBFILTER_URL_BLOCKED": select75, - "WEBFILTER_URL_PERMITTED": select74, - "WEB_AUTH_FAIL": msg726, - "WEB_AUTH_SUCCESS": msg727, - "WEB_INTERFACE_UNAUTH": msg728, - "WEB_READ": msg729, - "alarmd": msg3, - "bgp_connect_start": msg132, - "bgp_event": msg133, - "bgp_listen_accept": msg134, - "bgp_listen_reset": msg135, - "bgp_nexthop_sanity": msg136, - "bgp_pp_recv": select33, - "bgp_process_caps": select32, - "bgp_send": msg141, - "bgp_traffic_timeout": msg142, - "bigd": select6, - "bigpipe": select7, - "bigstart": msg9, - "cgatool": msg10, - "chassisd": msg11, - "chassism": select73, - "checkd": select8, - "clean_process": msg215, - "cli": msg750, - "cosd": msg14, - "craftd": msg15, - "cron": msg18, - "crond": msg21, - "dcd": msg22, - "eswd": select72, - "ftpd": msg24, - "ha_rto_stats_handler": msg25, - "hostinit": msg26, - "idpinfo": msg752, - "ifinfo": select13, - "ifp_ifl_anydown_change_event": msg30, - "ifp_ifl_config_event": msg31, - "ifp_ifl_ext_chg": msg32, - "inetd": select14, - "init": select15, - "ipc_msg_write": msg40, - "kernel": select17, - "kmd": msg753, - "last": select28, - "login": select18, - "lsys_ssam_handler": msg53, - "mcsn": msg54, - "mgd": msg62, - "mrvl_dfw_log_effuse_status": msg55, - "node": select79, - "pfed": msg751, - "process_mode": select38, - "profile_ssam_handler": msg57, - "pst_nat_binding_set_profile": msg58, - "qsfp": msg776, - "respawn": msg64, - "root": msg65, - "rpd": select20, - "rshd": msg70, - "sfd": msg71, - "sshd": select21, - "syslogd": msg92, - "task_connect": msg605, - "task_reconfigure": msg59, - "tnetd": msg60, - "tnp.bootpd": msg769, - "trace_on": msg624, - "trace_rotate": msg625, - "transfer-file": msg626, - "ttloop": msg627, - "ucd-snmp": select26, - "usp_ipc_client_reconnect": msg95, - "usp_trace_ipc_disconnect": msg96, - "usp_trace_ipc_reconnect": msg97, - "uspinfo": msg98, - "xntpd": select27, - }), -]); - -var hdr43 = match("HEADER#3:0004/0", "message", "%{month->} %{day->} %{time->} %{p0}"); - -var part822 = match("HEADER#3:0004/1_0", "nwparser.p0", "fpc0 %{p0}"); - -var part823 = match("HEADER#3:0004/1_1", "nwparser.p0", "fpc1 %{p0}"); - -var part824 = match("HEADER#3:0004/1_2", "nwparser.p0", "fpc2 %{p0}"); - -var part825 = match("HEADER#3:0004/1_3", "nwparser.p0", "fpc3 %{p0}"); - -var part826 = match("HEADER#3:0004/1_4", "nwparser.p0", "fpc4 %{p0}"); - -var part827 = match("HEADER#3:0004/1_5", "nwparser.p0", "fpc5 %{p0}"); - -var part828 = match("HEADER#3:0004/1_11", "nwparser.p0", "ssb %{p0}"); - -var part829 = match("HEADER#15:0026.upd.a/1_0", "nwparser.p0", "RT_FLOW - %{p0}"); - -var part830 = match("HEADER#15:0026.upd.a/1_1", "nwparser.p0", "junos-ssl-proxy - %{p0}"); - -var part831 = match("HEADER#15:0026.upd.a/1_2", "nwparser.p0", "RT_APPQOS - %{p0}"); - -var part832 = match("HEADER#15:0026.upd.a/1_3", "nwparser.p0", "%{hfld33->} - %{p0}"); - -var hdr44 = match("HEADER#16:0026.upd.b/0", "message", "%{event_time->} %{hfld32->} %{hhostname->} %{p0}"); - -var part833 = match("MESSAGE#77:sshd:06/0", "nwparser.payload", "%{} %{p0}"); - -var part834 = match("MESSAGE#77:sshd:06/1_0", "nwparser.p0", "%{process}[%{process_id}]: %{p0}"); - -var part835 = match("MESSAGE#77:sshd:06/1_1", "nwparser.p0", "%{process}: %{p0}"); - -var part836 = match_copy("MESSAGE#72:Failed:05/1_2", "nwparser.p0", "p0"); - -var part837 = match("MESSAGE#114:ACCT_GETHOSTNAME_error/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{p0}"); - -var part838 = match("MESSAGE#294:LOGIN_INFORMATION/3_0", "nwparser.p0", "User %{p0}"); - -var part839 = match("MESSAGE#294:LOGIN_INFORMATION/3_1", "nwparser.p0", "user %{p0}"); - -var part840 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/0", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\"%{p0}"); - -var part841 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/1_0", "nwparser.p0", " connection-tag=%{fld20->} service-name=\"%{p0}"); - -var part842 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/1_1", "nwparser.p0", " service-name=\"%{p0}"); - -var part843 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/3_0", "nwparser.p0", " nat-connection-tag=%{fld6->} src-nat-rule-type=%{fld20->} %{p0}"); - -var part844 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/5_1", "nwparser.p0", "name=\"%{p0}"); - -var part845 = match("MESSAGE#485:RT_FLOW_SESSION_CREATE:02/8", "nwparser.p0", "]%{}"); - -var part846 = match("MESSAGE#490:RT_FLOW_SESSION_DENY:03/0_0", "nwparser.payload", "%{process}: %{event_type}: session denied %{p0}"); - -var part847 = match("MESSAGE#490:RT_FLOW_SESSION_DENY:03/0_1", "nwparser.payload", "%{event_type}: session denied %{p0}"); - -var part848 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/0", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} reason=\"%{result}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\"%{p0}"); - -var part849 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/2", "nwparser.p0", "%{service}\" nat-source-address=\"%{hostip}\" nat-source-port=\"%{network_port}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\"%{p0}"); - -var part850 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/4", "nwparser.p0", "%{}src-nat-rule-name=\"%{rulename}\" dst-nat-rule-%{p0}"); - -var part851 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/5_0", "nwparser.p0", "type=%{fld7->} dst-nat-rule-name=\"%{p0}"); - -var part852 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/6", "nwparser.p0", "\"%{rule_template->} protocol-id=\"%{protocol}\" policy-name=\"%{policyname}\" source-zone-name=\"%{src_zone}\" destination-zone-name=\"%{dst_zone}\" session-id-32=\"%{sessionid}\" packets-from-client=\"%{packets}\" bytes-from-client=\"%{rbytes}\" packets-from-server=\"%{dclass_counter1}\" bytes-from-server=\"%{sbytes}\" elapsed-time=\"%{duration}\"%{p0}"); - -var part853 = match("MESSAGE#492:RT_FLOW_SESSION_CLOSE:01/7_0", "nwparser.p0", " application=\"%{fld6}\" nested-application=\"%{fld7}\" username=\"%{username}\" roles=\"%{fld15}\" packet-incoming-interface=\"%{dinterface}\" encrypted=%{fld16->} %{p0}"); - -var part854 = match("MESSAGE#630:UI_CFG_AUDIT_OTHER:02/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' set: [%{action}] %{p0}"); - -var part855 = match_copy("MESSAGE#630:UI_CFG_AUDIT_OTHER:02/1_1", "nwparser.p0", "space"); - -var part856 = match("MESSAGE#634:UI_CFG_AUDIT_SET:01/1_1", "nwparser.p0", "\u003c\u003c%{change_old}> %{p0}"); - -var part857 = match("MESSAGE#634:UI_CFG_AUDIT_SET:01/2", "nwparser.p0", "-> \"%{change_new}\""); - -var part858 = match("MESSAGE#637:UI_CFG_AUDIT_SET_SECRET:01/0", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: User '%{username}' %{p0}"); - -var part859 = match("MESSAGE#637:UI_CFG_AUDIT_SET_SECRET:01/1_0", "nwparser.p0", "set %{p0}"); - -var part860 = match("MESSAGE#637:UI_CFG_AUDIT_SET_SECRET:01/1_1", "nwparser.p0", "replace %{p0}"); - -var part861 = match("MESSAGE#675:UI_DAEMON_ACCEPT_FAILED/1_0", "nwparser.p0", "Network %{p0}"); - -var part862 = match("MESSAGE#675:UI_DAEMON_ACCEPT_FAILED/1_1", "nwparser.p0", "Local %{p0}"); - -var part863 = match("MESSAGE#755:node:05/0", "nwparser.payload", "%{hostname->} %{node->} %{p0}"); - -var part864 = match("MESSAGE#755:node:05/1_0", "nwparser.p0", "partner%{p0}"); - -var part865 = match("MESSAGE#755:node:05/1_1", "nwparser.p0", "actor%{p0}"); - -var select85 = linear_select([ - dup14, - dup15, - dup16, - dup17, -]); - -var part866 = match("HEADER#15:0026.upd.a/2", "nwparser.p0", "%{messageid->} [%{p0}", processor_chain([ - dup13, -])); - -var select86 = linear_select([ - dup40, - dup41, -]); - -var part867 = match("MESSAGE#125:BFDD_TRAP_STATE_DOWN", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: local discriminator: %{resultcode}, new state: %{result}", processor_chain([ - dup21, - dup22, - dup56, - dup23, -])); - -var part868 = match("MESSAGE#214:DCD_MALLOC_FAILED_INIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Memory allocation failed during initialization for configuration load", processor_chain([ - dup51, - dup22, - dup64, - dup23, -])); - -var part869 = match("MESSAGE#225:ECCD_DAEMONIZE_FAILED", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{action}, unable to run in the background as a daemon: %{result}", processor_chain([ - dup30, - dup22, - dup65, - dup23, -])); - -var part870 = match("MESSAGE#226:ECCD_DUPLICATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Another copy of this program is running", processor_chain([ - dup30, - dup22, - dup66, - dup23, -])); - -var part871 = match("MESSAGE#232:ECCD_PID_FILE_LOCK", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to lock PID file: %{result}", processor_chain([ - dup30, - dup22, - dup67, - dup23, -])); - -var part872 = match("MESSAGE#233:ECCD_PID_FILE_UPDATE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to update process PID file: %{result}", processor_chain([ - dup30, - dup22, - dup68, - dup23, -])); - -var part873 = match("MESSAGE#272:LIBJNX_EXEC_PIPE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Unable to create pipes for command '%{action}': %{result}", processor_chain([ - dup30, - dup22, - dup71, - dup23, -])); - -var select87 = linear_select([ - dup76, - dup77, -]); - -var part874 = match("MESSAGE#310:MIB2D_IFD_IFINDEX_FAILURE", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: SNMP index assigned to %{uid->} changed from %{dclass_counter1->} to %{result}", processor_chain([ - dup30, - dup22, - dup79, - dup23, -])); - -var part875 = match("MESSAGE#412:RPD_IFL_INDEXCOLLISION", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Logical interface collision -- %{result}, %{info}", processor_chain([ - dup30, - dup22, - dup84, - dup23, -])); - -var part876 = match("MESSAGE#466:RPD_SCHED_CALLBACK_LONGRUNTIME", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: %{agent}: excessive runtime time during action of module", processor_chain([ - dup30, - dup22, - dup85, - dup23, -])); - -var part877 = match("MESSAGE#482:RPD_TASK_REINIT", "nwparser.payload", "%{process}[%{process_id}]: %{event_type}: Reinitializing", processor_chain([ - dup21, - dup22, - dup86, - dup23, -])); - -var select88 = linear_select([ - dup88, - dup89, -]); - -var select89 = linear_select([ - dup90, - dup45, -]); - -var select90 = linear_select([ - dup95, - dup96, -]); - -var select91 = linear_select([ - dup101, - dup91, -]); - -var part878 = match("MESSAGE#498:RT_SCREEN_TCP", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} attack-name=\"%{threat_name}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" source-zone-name=\"%{src_zone}\" interface-name=\"%{interface}\" action=\"%{action}\"]", processor_chain([ - dup30, - dup22, - dup52, -])); - -var part879 = match("MESSAGE#527:SSL_PROXY_SSL_SESSION_ALLOW", "nwparser.payload", "%{event_type->} [junos@%{obj_name->} logical-system-name=\"%{hostname}\" session-id=\"%{sessionid}\" source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" nat-source-address=\"%{hostip}\" nat-source-port=\"%{network_port}\" nat-destination-address=\"%{dtransaddr}\" nat-destination-port=\"%{dtransport}\" profile-name=\"%{rulename}\" source-zone-name=\"%{src_zone}\" source-interface-name=\"%{sinterface}\" destination-zone-name=\"%{dst_zone}\" destination-interface-name=\"%{dinterface}\" message=\"%{info}\"]", processor_chain([ - dup27, - dup22, - dup52, -])); - -var select92 = linear_select([ - dup118, - dup119, -]); - -var select93 = linear_select([ - dup123, - dup124, -]); - -var part880 = match("MESSAGE#733:WEBFILTER_URL_PERMITTED", "nwparser.payload", "%{event_type->} [junos@%{fld21->} source-address=\"%{saddr}\" source-port=\"%{sport}\" destination-address=\"%{daddr}\" destination-port=\"%{dport}\" name=\"%{info}\" error-message=\"%{result}\" profile-name=\"%{profile}\" object-name=\"%{obj_name}\" pathname=\"%{directory}\" username=\"%{username}\" roles=\"%{user_role}\"] WebFilter: ACTION=\"%{action}\" %{fld2}->%{fld3->} CATEGORY=\"%{category}\" REASON=\"%{fld4}\" PROFILE=\"%{fld6}\" URL=%{url->} OBJ=%{fld7->} USERNAME=%{fld8->} ROLES=%{fld9}", processor_chain([ - dup30, - dup22, - dup52, -])); - -var part881 = match_copy("MESSAGE#747:cli", "nwparser.payload", "fld12", processor_chain([ - dup48, - dup47, - dup23, - dup22, -])); diff --git a/x-pack/filebeat/module/juniper/junos/ingest/pipeline.yml b/x-pack/filebeat/module/juniper/junos/ingest/pipeline.yml deleted file mode 100644 index 9199755b6ac..00000000000 --- a/x-pack/filebeat/module/juniper/junos/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Juniper JUNOS - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/juniper/junos/manifest.yml b/x-pack/filebeat/module/juniper/junos/manifest.yml deleted file mode 100644 index eea60eaefcd..00000000000 --- a/x-pack/filebeat/module/juniper/junos/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["juniper.junos", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9533 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/juniper/junos/test/generated.log b/x-pack/filebeat/module/juniper/junos/test/generated.log deleted file mode 100644 index e8663f48748..00000000000 --- a/x-pack/filebeat/module/juniper/junos/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -Jan 29 06:09:59 ceroinBC.exe[6713]: RPD_SCHED_TASK_LONGRUNTIME: : exe ran for 7309(5049) -Feb 12 13:12:33 DCD_FILTER_LIB_ERROR message repeated [7608]: llu: Filter library initialization failed -Feb 26 20:15:08 MIB2D_TRAP_SEND_FAILURE: restart [6747]: sum: uaerat: cancel: success -Mar 12 03:17:42 seq olorema6148.www.localdomain: fug5500.www.domain IFP trace> node: dqu -Mar 26 10:20:16 ssb SNMPD_CONTEXT_ERROR: [7400]: emq: isiu: success in 6237 context 5367 -Apr 9 17:22:51 RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED: restart [7618]: ionul: ifl : nibus, unknown -Apr 24 00:25:25 CHASSISD_SNMP_TRAP10 message repeated [1284]: ume: SNMP trap: failure: ono -May 8 07:27:59 sunt prehen6218.www.localhost: onse.exe[254]: RPD_KRT_IFL_CELL_RELAY_MODE_INVALID: : ifl : inibusBo, failure -May 22 14:30:33 iamquis quirat6972.www5.lan: isc.exe[3237]: SNMPD_USER_ERROR: : conseq: unknown in 6404 user 'atiset' 4068 -Jun 5 21:33:08 fpc9 RPD_TASK_REINIT: [4621]: lita: Reinitializing -Jun 20 04:35:42 fpc4 LOGIN_FAILED: [2227]: oinBC: Login failed for user quameius from host ipsumdol4488.api.localdomain -Jul 4 11:38:16 NASD_PPP_SEND_PARTIAL: restart [3994]: aper: Unable to send all of message: santiumd -Jul 18 18:40:50 UI_COMMIT_AT_FAILED message repeated [7440]: temqu: success, minimav -Aug 2 01:43:25 rnatur ofdeFin7811.lan: emipsumd.exe[5020]: BOOTPD_NEW_CONF: : New configuration installed -Aug 16 08:45:59 RPD_RIP_JOIN_MULTICAST message repeated [60]: onemulla: Unable to join multicast group enp0s4292: unknown -Aug 30 15:48:33 FSAD_TERMINATED_CONNECTION: restart [6703]: xea: Open file ites` closed due to unknown -Sep 13 22:51:07 RPD_KRT_IFL_GENERATION message repeated [5539]: eri: ifl lo2169 generation mismatch -- unknown -Sep 28 05:53:42 cfeb UI_COMMIT_ROLLBACK_FAILED: [3453]: avolu: Automatic rollback failed -Oct 12 12:56:16 mquisn.exe[3993]: RMOPD_usage : failure: midest -Oct 26 19:58:50 undeomni.exe[4938]: RPD_ISIS_LSPCKSUM: : IS-IS 715 LSP checksum error, interface enp0s1965, LSP id tasun, sequence 3203, checksum eratv, lifetime ipsa -Nov 10 03:01:24 kmd: restart -Nov 24 10:03:59 ever.exe[6463]: LOGIN_FAILED: : Login failed for user atq from host erspi4926.www5.test -Dec 8 17:06:33 CHASSISD_MBUS_ERROR message repeated [72]: iadese: nisiu imad: management bus failed sanity test -Dec 23 00:09:07 niamquis.exe[1471]: TFTPD_NAK_ERR : nak error ptatems, 357 -Jan 6 07:11:41 UI_DUPLICATE_UID: restart [3350]: atqu: Users naturau have the same UID olorsita -Jan 20 14:14:16 piscivel.exe[4753]: TFTPD_CREATE_ERR: : check_space unknown -Feb 3 21:16:50 fpc4 RPD_START: [1269]: riat: Start 181 version version built 7425 -Feb 18 04:19:24 fpc2 COSMAN: : uptasnul: delete class_to_ifl table 2069, ifl 3693 -Mar 4 11:21:59 orum oinBCSed3073.www.lan: ilm.exe[3193]: SNMPD_TRAP_QUEUE_MAX_ATTEMPTS: : fugiatqu: after 4003 attempts, deleting 4568 traps queued to exercita -Mar 18 18:24:33 TFTPD_BIND_ERR: restart [1431]: ntut: bind: failure -Apr 2 01:27:07 lite ugia517.api.host: doei.exe[7073]: RPD_LDP_SESSIONDOWN: : LDP session 10.88.126.165 is down, failure -Apr 16 08:29:41 fpc6 SNMPD_CONTEXT_ERROR: [180]: eturadip: ent: unknown in 5848 context 316 -Apr 30 15:32:16 NASD_CHAP_INVALID_CHAP_IDENTIFIER message repeated [796]: iumdo: lo2721: received aturv expected CHAP ID: ectetura -May 14 22:34:50 UI_LOAD_EVENT message repeated [6342]: seq: User 'moll' is performing a 'allow' -May 29 05:37:24 fdeFin.exe[4053]: SNMP_TRAP_TRACE_ROUTE_TEST_FAILED : traceRouteCtlOwnerIndex = 1450, traceRouteCtlTestName = edic -Jun 12 12:39:58 SNMPD_RTSLIB_ASYNC_EVENT: restart [508]: uae: oremip: sequence mismatch failure -Jun 26 19:42:33 tesse olupta2743.internal.localdomain: ine.exe[3181]: BOOTPD_TIMEOUT: : Timeout success unreasonable -Jul 11 02:45:07 NASD_RADIUS_MESSAGE_UNEXPECTED message repeated [33]: abore: Unknown response from RADIUS server: unknown -Jul 25 09:47:41 PWC_LOCKFILE_BAD_FORMAT: restart [3426]: illum: PID lock file has bad format: eprehe -Aug 8 16:50:15 snostr.exe[1613]: RPD_KRT_AFUNSUPRT : tec: received itaspe message with unsupported address family 4176 -Aug 22 23:52:50 oreeufug.exe[6086]: PWC_PROCESS_FORCED_HOLD : Process plicaboN forcing hold down of child 619 until signal -Sep 6 06:55:24 MIB2D_IFL_IFINDEX_FAILURE message repeated [4115]: tiu: SNMP index assigned to wri changed from 3902 to unknown -Sep 20 13:57:58 mwr cia5990.api.localdomain: pitlabo.exe[3498]: UI_DBASE_MISMATCH_MAJOR: : Database header major version number mismatch for file 'ende': expecting 6053, got 4884 -Oct 4 21:00:32 iuntN utfugi851.www5.invalid: nul.exe[1005]: SNMPD_VIEW_INSTALL_DEFAULT: : eetdo: success installing default 1243 view 5146 -Oct 19 04:03:07 DCD_PARSE_STATE_EMERGENCY message repeated [2498]: uptatem: An unhandled state was encountered during interface parsing -Nov 2 11:05:41 loremagn acons3820.internal.home: ain.exe[7192]: LOGIN_PAM_MAX_RETRIES: : Too many retries while authenticating user iquipex -Nov 16 18:08:15 onorume.exe[3290]: BOOTPD_NO_BOOTSTRING : No boot string found for type veleu -Dec 1 01:10:49 eirured sequamn5243.mail.home: sshd: sshd: SSHD_LOGIN_FAILED: Login failed for user 'ciatisun' from host '10.252.209.246'. -Dec 15 08:13:24 COS: restart : Received FC->Q map, caecat -Dec 29 15:15:58 cgatool message repeated : nvolupta: generated address is success -Jan 12 22:18:32 CHASSISD_SNMP_TRAP6 message repeated [4667]: idolor: SNMP trap generated: success (les) -Jan 27 05:21:06 ssb FLOW_REASSEMBLE_SUCCEED: : Packet merged source 10.102.228.136 destination 10.151.136.250 ipid upt succeed -Feb 10 12:23:41 DFWD_PARSE_FILTER_EMERGENCY message repeated [2037]: serrorsi: tsedquia encountered errors while parsing filter index file -Feb 24 19:26:15 remips laboreet5949.mail.test: tesse.exe[4358]: RPD_LDP_SESSIONDOWN: : LDP session 10.148.255.126 is down, unknown -Mar 11 02:28:49 fpc2 NASD_CHAP_REPLAY_ATTACK_DETECTED: [mipsumqu]: turad: eth680.6195: received doloremi unknown.iciatis -Mar 25 09:31:24 rema mcol7795.domain: mquis lsys_ssam_handler: : processing lsys root-logical-system tur -Apr 8 16:33:58 UI_LOST_CONN message repeated [7847]: loreeuf: Lost connection to daemon orainci -Apr 22 23:36:32 PWC_PROCESS_HOLD: restart [1791]: itse: Process lapari holding down child 2702 until signal -May 7 06:39:06 undeo ficiade4365.mail.domain: norum.exe[4443]: LIBSERVICED_SOCKET_BIND: : dantium: unable to bind socket ors: failure -May 21 13:41:41 liq eleumiu2852.lan: mfugiat.exe[3946]: LOGIN_FAILED: : Login failed for user olu from host mSect5899.domain -Jun 4 20:44:15 idolo.exe[6535]: MIB2D_IFL_IFINDEX_FAILURE: : SNMP index assigned to deseru changed from 6460 to unknown -Jun 19 03:46:49 modtempo.exe[5276]: CHASSISD_RELEASE_MASTERSHIP: : Release mastership notification -Jul 3 10:49:23 fpc4 PWC_PROCESS_HOLD: [3450]: dexea: Process aturExc holding down child 7343 until signal -Jul 17 17:51:58 ame.exe[226]: SERVICED_RTSOCK_SEQUENCE : boreet: routing socket sequence error, unknown -Aug 1 00:54:32 consect6919.mail.localdomain iset.exe[940]: idpinfo: urere -Aug 15 07:57:06 RPD_KRT_NOIFD: restart [4822]: oreeufug: No device 5020 for interface lo4593 -Aug 29 14:59:40 eprehen oinB3432.api.invalid: citatio.exe[5029]: craftd: , unknown -Sep 12 22:02:15 ACCT_CU_RTSLIB_error message repeated [7583]: eetd: liquide getting class usage statistics for interface enp0s2674: success -Sep 27 05:04:49 userro oree nimadmi7341.www.home RT_FLOW - kmd [ -Oct 11 12:07:23 LOGIN_PAM_NONLOCAL_USER: restart [686]: rauto: User rese authenticated but has no local login ID -Oct 25 19:09:57 doconse.exe[6184]: RPD_KRT_NOIFD : No device 5991 for interface enp0s7694 -Nov 9 02:12:32 quidolor1064.www.domain: uspinfo: : flow_print_session_summary_output received rcita -Nov 23 09:15:06 RPD_TASK_REINIT: restart [1810]: mfugi: Reinitializing -Dec 7 16:17:40 inibusBo.exe[2509]: ECCD_TRACE_FILE_OPEN_FAILED : allow: failure -Dec 21 23:20:14 ECCD_TRACE_FILE_OPEN_FAILED message repeated [2815]: rudexer: accept: unknown -Jan 5 06:22:49 eseosqu oeius641.api.home: laud.exe[913]: LOGIN_FAILED: : Login failed for user turQ from host tod6376.mail.host -Jan 19 13:25:23 ine.exe[1578]: FSAD_CONNTIMEDOUT : Connection timed out to the client (oreve2538.www.localdomain, 10.44.24.103) having request type reprehen -Feb 2 20:27:57 UI_SCHEMA_SEQUENCE_ERROR: restart [734]: rinre: Schema sequence number mismatch -Feb 17 03:30:32 LIBJNX_EXEC_PIPE: restart [946]: olors: Unable to create pipes for command 'deny': unknown -Mar 3 10:33:06 UI_DBASE_MISMATCH_EXTENT: restart [4686]: isnost: Database header extent mismatch for file 'lumdolor': expecting 559, got 7339 -Mar 17 17:35:40 NASD_usage message repeated [7744]: eumfu: unknown: quidex -Apr 1 00:38:14 /kmd: -Apr 15 07:40:49 sshd message repeated : very-high: can't get client address: unknown -Apr 29 14:43:23 fpc4 RPD_LDP_NBRUP: [4279]: stlaboru: LDP neighbor 10.248.68.242 (eth1282) is success -May 13 21:45:57 uun iduntutl4723.example: uel.exe[5770]: SNMPD_TRAP_QUEUE_DRAINED: : metco: traps queued to vel sent successfully -May 28 04:48:31 fpc8 ECCD_PCI_WRITE_FAILED: [4837]: radip: cancel: success -Jun 11 11:51:06 TFTPD_RECVCOMPLETE_INFO message repeated [7501]: piciatis: Received 3501 blocks of 5877 size for file 'tatisetq' -Jun 25 18:53:40 usp_trace_ipc_reconnect message repeated illum.exe:USP trace client cannot reconnect to server -Jul 10 01:56:14 amnis atevelit2799.internal.host: tatiset.exe IFP trace> BCHIP: : cannot write ucode mask reg -Jul 24 08:58:48 RPD_MPLS_LSP_DOWN message repeated [5094]: moditemp: MPLS LSP eth2042 unknown -Aug 7 16:01:23 CHASSISD_PARSE_INIT: restart [4153]: uatDuisa: Parsing configuration file 'usB' -Aug 21 23:03:57 RMOPD_ROUTING_INSTANCE_NO_INFO: restart [6922]: upidatat: No information for routing instance non: failure -Sep 5 06:06:31 Utenimad.exe[4305]: CHASSISD_TERM_SIGNAL: : Received SIGTERM request, success -Sep 19 13:09:05 tseddo.exe[484]: RPD_OSPF_NBRUP : OSPF neighbor 10.49.190.163 (lo50) aUteni due to failure -Oct 3 20:11:40 cfeb NASD_usage: [6968]: litseddo: failure: metconse -Oct 18 03:14:14 RPD_LDP_NBRDOWN message repeated [4598]: emu: LDP neighbor 10.101.99.109 (eth4282) is success -Nov 1 10:16:48 RPD_RDISC_NOMULTI message repeated [4764]: con: Ignoring interface 594 on lo7449 -- unknown -Nov 15 17:19:22 BOOTPD_NEW_CONF: restart [1768]: isquames: New configuration installed -Nov 30 00:21:57 SNMP_TRAP_LINK_DOWN message repeated [7368]: ngelit: ifIndex 4197, ifAdminStatus ons, ifOperStatus unknown, ifName lo3193 -Dec 14 07:24:31 MIB2D_ATM_ERROR message repeated [4927]: udexerci: voluptat: failure diff --git a/x-pack/filebeat/module/juniper/junos/test/generated.log-expected.json b/x-pack/filebeat/module/juniper/junos/test/generated.log-expected.json deleted file mode 100644 index a4b54007089..00000000000 --- a/x-pack/filebeat/module/juniper/junos/test/generated.log-expected.json +++ /dev/null @@ -1,2698 +0,0 @@ -[ - { - "event.action": "RPD_SCHED_TASK_LONGRUNTIME", - "event.code": "RPD_SCHED_TASK_LONGRUNTIME", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jan 29 06:09:59 ceroinBC.exe[6713]: RPD_SCHED_TASK_LONGRUNTIME: : exe ran for 7309(5049)", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 0, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ceroinBC.exe", - "process.pid": 6713, - "rsa.counters.dclass_c1": 7309, - "rsa.counters.dclass_c2": 5049, - "rsa.internal.event_desc": "task extended runtime", - "rsa.internal.messageid": "RPD_SCHED_TASK_LONGRUNTIME", - "rsa.misc.client": ": exe", - "rsa.misc.event_type": "RPD_SCHED_TASK_LONGRUNTIME", - "rsa.misc.pid": "6713", - "rsa.time.day": "29", - "rsa.time.month": "Jan", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "llu", - "event.code": "DCD_FILTER_LIB_ERROR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 12 13:12:33 DCD_FILTER_LIB_ERROR message repeated [7608]: llu: Filter library initialization failed", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 89, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "DCD_FILTER_LIB_ERROR message repeated", - "process.pid": 7608, - "rsa.internal.event_desc": "Filter library initialization failed", - "rsa.internal.messageid": "DCD_FILTER_LIB_ERROR", - "rsa.misc.event_type": "llu", - "rsa.time.day": "12", - "rsa.time.month": "Feb", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "cancel", - "event.code": "MIB2D_TRAP_SEND_FAILURE", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 26 20:15:08 MIB2D_TRAP_SEND_FAILURE: restart [6747]: sum: uaerat: cancel: success", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 193, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "MIB2D_TRAP_SEND_FAILURE: restart", - "process.pid": 6747, - "rsa.internal.event_desc": "MIB2D TRAP SEND FAILURE", - "rsa.internal.messageid": "MIB2D_TRAP_SEND_FAILURE", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.event_type": "sum", - "rsa.misc.result": "success", - "rsa.time.day": "26", - "rsa.time.month": "Feb", - "service.name": "uaerat", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "node", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 12 03:17:42 seq olorema6148.www.localdomain: fug5500.www.domain IFP trace> node: dqu", - "fileset.name": "junos", - "host.name": "fug5500.www.domain", - "input.type": "log", - "log.offset": 279, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "trace> node", - "related.hosts": [ - "fug5500.www.domain" - ], - "rsa.db.index": "dqu", - "rsa.internal.messageid": "node", - "rsa.misc.node": "IFP", - "rsa.network.alias_host": [ - "fug5500.www.domain" - ], - "rsa.time.day": "12", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[7400]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 26 10:20:16 ssb SNMPD_CONTEXT_ERROR: [7400]: emq: isiu: success in 6237 context 5367", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 368, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[7400]", - "rsa.time.day": "26", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "ionul", - "event.code": "RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 9 17:22:51 RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED: restart [7618]: ionul: ifl : nibus, unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 457, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED: restart", - "process.pid": 7618, - "rsa.internal.event_desc": "KRT IFL CELL RELAY MODE UNSPECIFIED", - "rsa.internal.messageid": "RPD_KRT_IFL_CELL_RELAY_MODE_UNSPECIFIED", - "rsa.misc.client": "nibus", - "rsa.misc.event_type": "ionul", - "rsa.misc.result": "unknown", - "rsa.time.day": "9", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "ume", - "event.code": "CHASSISD_SNMP_TRAP10", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 24 00:25:25 CHASSISD_SNMP_TRAP10 message repeated [1284]: ume: SNMP trap: failure: ono", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 557, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "CHASSISD_SNMP_TRAP10 message repeated", - "process.pid": 1284, - "rsa.db.index": "ono", - "rsa.internal.event_desc": "SNMP trap - FRU power on", - "rsa.internal.messageid": "CHASSISD_SNMP_TRAP10", - "rsa.misc.event_type": "ume", - "rsa.misc.result": "failure", - "rsa.time.day": "24", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "RPD_KRT_IFL_CELL_RELAY_MODE_INVALID:", - "event.code": "RPD_KRT_IFL_CELL_RELAY_MODE_INVALID", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 8 07:27:59 sunt prehen6218.www.localhost: onse.exe[254]: RPD_KRT_IFL_CELL_RELAY_MODE_INVALID: : ifl : inibusBo, failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 648, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "onse.exe", - "process.pid": 254, - "rsa.internal.event_desc": "KRT IFL CELL RELAY MODE INVALID", - "rsa.internal.messageid": "RPD_KRT_IFL_CELL_RELAY_MODE_INVALID", - "rsa.misc.client": "inibusBo", - "rsa.misc.event_type": "RPD_KRT_IFL_CELL_RELAY_MODE_INVALID:", - "rsa.misc.result": "failure", - "rsa.time.day": "8", - "rsa.time.month": "May", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "SNMPD_USER_ERROR", - "event.code": "SNMPD_USER_ERROR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 22 14:30:33 iamquis quirat6972.www5.lan: isc.exe[3237]: SNMPD_USER_ERROR: : conseq: unknown in 6404 user 'atiset' 4068", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 772, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "isc.exe", - "process.pid": 3237, - "related.user": [ - "atiset" - ], - "rsa.counters.dclass_c1": 6404, - "rsa.counters.dclass_c2": 4068, - "rsa.internal.event_desc": "SNMPD USER ERROR", - "rsa.internal.messageid": "SNMPD_USER_ERROR", - "rsa.misc.event_type": "SNMPD_USER_ERROR", - "rsa.misc.result": "conseq: unknown", - "rsa.time.day": "22", - "rsa.time.month": "May", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "atiset" - }, - { - "event.code": "[4621]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 5 21:33:08 fpc9 RPD_TASK_REINIT: [4621]: lita: Reinitializing", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 895, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[4621]", - "rsa.time.day": "5", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[2227]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 20 04:35:42 fpc4 LOGIN_FAILED: [2227]: oinBC: Login failed for user quameius from host ipsumdol4488.api.localdomain", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 961, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[2227]", - "rsa.time.day": "20", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "aper", - "event.code": "NASD_PPP_SEND_PARTIAL", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 4 11:38:16 NASD_PPP_SEND_PARTIAL: restart [3994]: aper: Unable to send all of message: santiumd", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1081, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "NASD_PPP_SEND_PARTIAL: restart", - "process.pid": 3994, - "rsa.internal.event_desc": "Unable to send all of message", - "rsa.internal.messageid": "NASD_PPP_SEND_PARTIAL", - "rsa.misc.event_type": "aper", - "rsa.misc.result_code": "santiumd", - "rsa.time.day": "4", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "temqu", - "event.code": "UI_COMMIT_AT_FAILED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 18 18:40:50 UI_COMMIT_AT_FAILED message repeated [7440]: temqu: success, minimav", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1181, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "UI_COMMIT_AT_FAILED message repeated", - "process.pid": 7440, - "rsa.db.index": "minimav", - "rsa.internal.event_desc": "User commit failed", - "rsa.internal.messageid": "UI_COMMIT_AT_FAILED", - "rsa.misc.event_type": "temqu", - "rsa.misc.result": "success", - "rsa.time.day": "18", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "BOOTPD_NEW_CONF:", - "event.code": "BOOTPD_NEW_CONF", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 2 01:43:25 rnatur ofdeFin7811.lan: emipsumd.exe[5020]: BOOTPD_NEW_CONF: : New configuration installed", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1266, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "emipsumd.exe", - "process.pid": 5020, - "rsa.internal.event_desc": "New configuration installed", - "rsa.internal.messageid": "BOOTPD_NEW_CONF", - "rsa.misc.event_type": "BOOTPD_NEW_CONF:", - "rsa.time.day": "2", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "onemulla", - "event.code": "RPD_RIP_JOIN_MULTICAST", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 16 08:45:59 RPD_RIP_JOIN_MULTICAST message repeated [60]: onemulla: Unable to join multicast group enp0s4292: unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1372, - "network.interface.name": "enp0s4292", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_RIP_JOIN_MULTICAST message repeated", - "process.pid": 60, - "rsa.internal.event_desc": "RIP - Unable to join multicast group", - "rsa.internal.messageid": "RPD_RIP_JOIN_MULTICAST", - "rsa.misc.event_type": "onemulla", - "rsa.misc.result": "unknown", - "rsa.network.interface": "enp0s4292", - "rsa.time.day": "16", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "xea", - "event.code": "FSAD_TERMINATED_CONNECTION", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 30 15:48:33 FSAD_TERMINATED_CONNECTION: restart [6703]: xea: Open file ites` closed due to unknown", - "file.name": "ites", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1494, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "FSAD_TERMINATED_CONNECTION: restart", - "process.pid": 6703, - "rsa.internal.event_desc": "FSAD TERMINATED CONNECTION", - "rsa.internal.messageid": "FSAD_TERMINATED_CONNECTION", - "rsa.misc.event_type": "xea", - "rsa.misc.result": "unknown", - "rsa.time.day": "30", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "eri", - "event.code": "RPD_KRT_IFL_GENERATION", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 13 22:51:07 RPD_KRT_IFL_GENERATION message repeated [5539]: eri: ifl lo2169 generation mismatch -- unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1597, - "network.interface.name": "lo2169", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_KRT_IFL_GENERATION message repeated", - "process.pid": 5539, - "rsa.internal.event_desc": "ifl generation mismatch", - "rsa.internal.messageid": "RPD_KRT_IFL_GENERATION", - "rsa.misc.event_type": "eri", - "rsa.misc.result": "unknown", - "rsa.network.interface": "lo2169", - "rsa.time.day": "13", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[3453]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 28 05:53:42 cfeb UI_COMMIT_ROLLBACK_FAILED: [3453]: avolu: Automatic rollback failed", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1708, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[3453]", - "rsa.time.day": "28", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "RMOPD_usage", - "event.code": "RMOPD_usage", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 12 12:56:16 mquisn.exe[3993]: RMOPD_usage : failure: midest", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1797, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "mquisn.exe", - "process.pid": 3993, - "rsa.db.index": "midest", - "rsa.internal.event_desc": "RMOPD usage", - "rsa.internal.messageid": "RMOPD_usage", - "rsa.misc.event_type": "RMOPD_usage", - "rsa.misc.pid": "3993", - "rsa.misc.result": "failure", - "rsa.time.day": "12", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "RPD_ISIS_LSPCKSUM:", - "event.code": "tasun", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 26 19:58:50 undeomni.exe[4938]: RPD_ISIS_LSPCKSUM: : IS-IS 715 LSP checksum error, interface enp0s1965, LSP id tasun, sequence 3203, checksum eratv, lifetime ipsa", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 1861, - "network.interface.name": "enp0s1965", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "undeomni.exe", - "process.pid": 4938, - "rsa.counters.dclass_c1": 715, - "rsa.counters.dclass_c2": 3203, - "rsa.internal.event_desc": "IS-IS LSP checksum error on iterface", - "rsa.internal.messageid": "RPD_ISIS_LSPCKSUM", - "rsa.misc.event_type": "RPD_ISIS_LSPCKSUM:", - "rsa.misc.pid": "4938", - "rsa.misc.reference_id": "tasun", - "rsa.misc.result_code": "eratv", - "rsa.network.interface": "enp0s1965", - "rsa.time.day": "26", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "VPN", - "event.code": "kmd", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 10 03:01:24 kmd: restart ", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2028, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "kmd", - "rsa.misc.event_type": "VPN", - "rsa.time.day": "10", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "destination.address": "erspi4926.www5.test", - "event.action": "LOGIN_FAILED:", - "event.code": "LOGIN_FAILED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 24 10:03:59 ever.exe[6463]: LOGIN_FAILED: : Login failed for user atq from host erspi4926.www5.test", - "event.outcome": "failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2058, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ever.exe", - "process.pid": 6463, - "related.hosts": [ - "erspi4926.www5.test" - ], - "related.user": [ - "atq" - ], - "rsa.internal.event_desc": "Login failure", - "rsa.internal.messageid": "LOGIN_FAILED", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.event_type": "LOGIN_FAILED:", - "rsa.misc.pid": "6463", - "rsa.network.host_dst": "erspi4926.www5.test", - "rsa.time.day": "24", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "atq" - }, - { - "event.action": "iadese", - "event.code": "CHASSISD_MBUS_ERROR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 8 17:06:33 CHASSISD_MBUS_ERROR message repeated [72]: iadese: nisiu imad: management bus failed sanity test", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2162, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "CHASSISD_MBUS_ERROR message repeated", - "process.pid": 72, - "rsa.internal.event_desc": "management bus failed sanity test", - "rsa.internal.messageid": "CHASSISD_MBUS_ERROR", - "rsa.misc.event_type": "iadese", - "rsa.misc.result_code": "imad", - "rsa.time.day": "8", - "rsa.time.month": "Dec", - "service.name": "nisiu", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "TFTPD_NAK_ERR", - "event.code": "TFTPD_NAK_ERR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 23 00:09:07 niamquis.exe[1471]: TFTPD_NAK_ERR : nak error ptatems, 357", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2274, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "niamquis.exe", - "process.pid": 1471, - "rsa.counters.dclass_c1": 357, - "rsa.internal.event_desc": "TFTPD NAK ERROR", - "rsa.internal.messageid": "TFTPD_NAK_ERR", - "rsa.misc.event_type": "TFTPD_NAK_ERR", - "rsa.misc.pid": "1471", - "rsa.misc.result_code": "ptatems", - "rsa.time.day": "23", - "rsa.time.month": "Dec", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "atqu", - "event.code": "UI_DUPLICATE_UID", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jan 6 07:11:41 UI_DUPLICATE_UID: restart [3350]: atqu: Users naturau have the same UID olorsita", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2349, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "UI_DUPLICATE_UID: restart", - "process.pid": 3350, - "related.user": [ - "naturau", - "olorsita" - ], - "rsa.internal.event_desc": "Users have the same UID", - "rsa.internal.messageid": "UI_DUPLICATE_UID", - "rsa.misc.event_type": "atqu", - "rsa.time.day": "6", - "rsa.time.month": "Jan", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "naturau" - }, - { - "event.action": "TFTPD_CREATE_ERR:", - "event.code": "TFTPD_CREATE_ERR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jan 20 14:14:16 piscivel.exe[4753]: TFTPD_CREATE_ERR: : check_space unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2445, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "piscivel.exe", - "process.pid": 4753, - "rsa.internal.event_desc": "TFTPD CREATE ERROR", - "rsa.internal.messageid": "TFTPD_CREATE_ERR", - "rsa.misc.event_type": "TFTPD_CREATE_ERR:", - "rsa.misc.pid": "4753", - "rsa.misc.result": "unknown", - "rsa.time.day": "20", - "rsa.time.month": "Jan", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[1269]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 3 21:16:50 fpc4 RPD_START: [1269]: riat: Start 181 version version built 7425", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2521, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[1269]", - "rsa.time.day": "3", - "rsa.time.month": "Feb", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 18 04:19:24 fpc2 COSMAN: : uptasnul: delete class_to_ifl table 2069, ifl 3693", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2603, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.time.day": "18", - "rsa.time.month": "Feb", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "SNMPD_TRAP_QUEUE_MAX_ATTEMPTS", - "event.code": "SNMPD_TRAP_QUEUE_MAX_ATTEMPTS", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 4 11:21:59 orum oinBCSed3073.www.lan: ilm.exe[3193]: SNMPD_TRAP_QUEUE_MAX_ATTEMPTS: : fugiatqu: after 4003 attempts, deleting 4568 traps queued to exercita", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2685, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ilm.exe", - "process.pid": 3193, - "rsa.counters.dclass_c1": 4003, - "rsa.counters.dclass_c2": 4568, - "rsa.internal.event_desc": "SNMPD TRAP QUEUE MAX_ATTEMPTS - deleting some traps", - "rsa.internal.messageid": "SNMPD_TRAP_QUEUE_MAX_ATTEMPTS", - "rsa.misc.client": ": fugiatqu", - "rsa.misc.event_type": "SNMPD_TRAP_QUEUE_MAX_ATTEMPTS", - "rsa.misc.obj_name": "exercita", - "rsa.time.day": "4", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "ntut", - "event.code": "TFTPD_BIND_ERR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 18 18:24:33 TFTPD_BIND_ERR: restart [1431]: ntut: bind: failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2845, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "TFTPD_BIND_ERR: restart", - "process.pid": 1431, - "rsa.internal.event_desc": "TFTPD BIND ERROR", - "rsa.internal.messageid": "TFTPD_BIND_ERR", - "rsa.misc.event_type": "ntut", - "rsa.misc.result": "failure", - "rsa.time.day": "18", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "destination.ip": "10.88.126.165", - "event.action": "RPD_LDP_SESSIONDOWN:", - "event.code": "RPD_LDP_SESSIONDOWN", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 2 01:27:07 lite ugia517.api.host: doei.exe[7073]: RPD_LDP_SESSIONDOWN: : LDP session 10.88.126.165 is down, failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 2913, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "doei.exe", - "process.pid": 7073, - "related.ip": [ - "10.88.126.165" - ], - "rsa.internal.event_desc": "LDP session down", - "rsa.internal.messageid": "RPD_LDP_SESSIONDOWN", - "rsa.misc.event_type": "RPD_LDP_SESSIONDOWN:", - "rsa.misc.result": "failure", - "rsa.time.day": "2", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[180]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 16 08:29:41 fpc6 SNMPD_CONTEXT_ERROR: [180]: eturadip: ent: unknown in 5848 context 316", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3033, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[180]", - "rsa.time.day": "16", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "iumdo", - "event.code": "NASD_CHAP_INVALID_CHAP_IDENTIFIER", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 30 15:32:16 NASD_CHAP_INVALID_CHAP_IDENTIFIER message repeated [796]: iumdo: lo2721: received aturv expected CHAP ID: ectetura", - "file.name": "aturv", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3125, - "network.interface.name": "lo2721", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "NASD_CHAP_INVALID_CHAP_IDENTIFIER message repeated", - "process.pid": 796, - "rsa.internal.event_desc": "CHAP INVALID_CHAP IDENTIFIER", - "rsa.internal.messageid": "NASD_CHAP_INVALID_CHAP_IDENTIFIER", - "rsa.misc.event_type": "iumdo", - "rsa.misc.result_code": "ectetura", - "rsa.network.interface": "lo2721", - "rsa.time.day": "30", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "allow", - "event.code": "UI_LOAD_EVENT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 14 22:34:50 UI_LOAD_EVENT message repeated [6342]: seq: User 'moll' is performing a 'allow'", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3256, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "UI_LOAD_EVENT message repeated", - "process.pid": 6342, - "related.user": [ - "moll" - ], - "rsa.internal.event_desc": "User command", - "rsa.internal.messageid": "UI_LOAD_EVENT", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "seq", - "rsa.time.day": "14", - "rsa.time.month": "May", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "moll" - }, - { - "event.action": "SNMP_TRAP_TRACE_ROUTE_TEST_FAILED", - "event.code": "SNMP_TRAP_TRACE_ROUTE_TEST_FAILED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 29 05:37:24 fdeFin.exe[4053]: SNMP_TRAP_TRACE_ROUTE_TEST_FAILED : traceRouteCtlOwnerIndex = 1450, traceRouteCtlTestName = edic", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3352, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "fdeFin.exe", - "process.pid": 4053, - "rsa.counters.dclass_c1": 1450, - "rsa.internal.event_desc": "SNMP TRAP TRACE ROUTE TEST FAILED", - "rsa.internal.messageid": "SNMP_TRAP_TRACE_ROUTE_TEST_FAILED", - "rsa.misc.event_type": "SNMP_TRAP_TRACE_ROUTE_TEST_FAILED", - "rsa.misc.obj_name": "edic", - "rsa.misc.pid": "4053", - "rsa.time.day": "29", - "rsa.time.month": "May", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "uae", - "event.code": "SNMPD_RTSLIB_ASYNC_EVENT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 12 12:39:58 SNMPD_RTSLIB_ASYNC_EVENT: restart [508]: uae: oremip: sequence mismatch failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3483, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "SNMPD_RTSLIB_ASYNC_EVENT: restart", - "process.pid": 508, - "rsa.internal.event_desc": "sequence mismatch", - "rsa.internal.messageid": "SNMPD_RTSLIB_ASYNC_EVENT", - "rsa.misc.client": "oremip", - "rsa.misc.event_type": "uae", - "rsa.misc.result": "failure", - "rsa.time.day": "12", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "BOOTPD_TIMEOUT:", - "event.code": "BOOTPD_TIMEOUT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 26 19:42:33 tesse olupta2743.internal.localdomain: ine.exe[3181]: BOOTPD_TIMEOUT: : Timeout success unreasonable", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3579, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ine.exe", - "process.pid": 3181, - "rsa.internal.event_desc": "timeout unreasonable", - "rsa.internal.messageid": "BOOTPD_TIMEOUT", - "rsa.misc.event_type": "BOOTPD_TIMEOUT:", - "rsa.misc.result": "success", - "rsa.time.day": "26", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "abore", - "event.code": "NASD_RADIUS_MESSAGE_UNEXPECTED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 11 02:45:07 NASD_RADIUS_MESSAGE_UNEXPECTED message repeated [33]: abore: Unknown response from RADIUS server: unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3696, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "NASD_RADIUS_MESSAGE_UNEXPECTED message repeated", - "process.pid": 33, - "rsa.internal.event_desc": "Unknown response from RADIUS server", - "rsa.internal.messageid": "NASD_RADIUS_MESSAGE_UNEXPECTED", - "rsa.misc.event_type": "abore", - "rsa.misc.result": "unknown", - "rsa.time.day": "11", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "illum", - "event.code": "PWC_LOCKFILE_BAD_FORMAT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 25 09:47:41 PWC_LOCKFILE_BAD_FORMAT: restart [3426]: illum: PID lock file has bad format: eprehe", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3818, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "PWC_LOCKFILE_BAD_FORMAT: restart", - "process.pid": 3426, - "rsa.internal.event_desc": "PID lock file has bad format", - "rsa.internal.messageid": "PWC_LOCKFILE_BAD_FORMAT", - "rsa.misc.client": "eprehe", - "rsa.misc.event_type": "illum", - "rsa.time.day": "25", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "RPD_KRT_AFUNSUPRT", - "event.code": "RPD_KRT_AFUNSUPRT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 8 16:50:15 snostr.exe[1613]: RPD_KRT_AFUNSUPRT : tec: received itaspe message with unsupported address family 4176", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 3919, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "snostr.exe", - "process.pid": 1613, - "rsa.counters.dclass_c1": 4176, - "rsa.internal.event_desc": "message with unsupported address family received", - "rsa.internal.messageid": "RPD_KRT_AFUNSUPRT", - "rsa.misc.client": "itaspe", - "rsa.misc.event_type": "RPD_KRT_AFUNSUPRT", - "rsa.misc.pid": "1613", - "rsa.misc.result_code": "tec", - "rsa.time.day": "8", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "PWC_PROCESS_FORCED_HOLD", - "event.code": "PWC_PROCESS_FORCED_HOLD", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 22 23:52:50 oreeufug.exe[6086]: PWC_PROCESS_FORCED_HOLD : Process plicaboN forcing hold down of child 619 until signal", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 4038, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "oreeufug.exe", - "process.pid": 6086, - "rsa.internal.event_desc": "Process forcing hold down of child until signalled", - "rsa.internal.messageid": "PWC_PROCESS_FORCED_HOLD", - "rsa.misc.client": "plicaboN", - "rsa.misc.event_type": "PWC_PROCESS_FORCED_HOLD", - "rsa.misc.pid": "6086", - "rsa.time.day": "22", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "tiu", - "event.code": "MIB2D_IFL_IFINDEX_FAILURE", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 6 06:55:24 MIB2D_IFL_IFINDEX_FAILURE message repeated [4115]: tiu: SNMP index assigned to wri changed from 3902 to unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 4161, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "MIB2D_IFL_IFINDEX_FAILURE message repeated", - "process.pid": 4115, - "related.user": [ - "wri" - ], - "rsa.counters.dclass_c1": 3902, - "rsa.internal.event_desc": "SNMP index assigned changed", - "rsa.internal.messageid": "MIB2D_IFL_IFINDEX_FAILURE", - "rsa.misc.event_type": "tiu", - "rsa.misc.result": "unknown", - "rsa.time.day": "6", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "wri" - }, - { - "event.action": "UI_DBASE_MISMATCH_MAJOR:", - "event.code": "UI_DBASE_MISMATCH_MAJOR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 20 13:57:58 mwr cia5990.api.localdomain: pitlabo.exe[3498]: UI_DBASE_MISMATCH_MAJOR: : Database header major version number mismatch for file 'ende': expecting 6053, got 4884", - "file.name": "ende", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 4288, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "pitlabo.exe", - "process.pid": 3498, - "rsa.counters.dclass_c1": 6053, - "rsa.counters.dclass_c2": 4884, - "rsa.internal.event_desc": "Database header major version number mismatch", - "rsa.internal.messageid": "UI_DBASE_MISMATCH_MAJOR", - "rsa.misc.event_type": "UI_DBASE_MISMATCH_MAJOR:", - "rsa.time.day": "20", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "SNMPD_VIEW_INSTALL_DEFAULT", - "event.code": "SNMPD_VIEW_INSTALL_DEFAULT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 4 21:00:32 iuntN utfugi851.www5.invalid: nul.exe[1005]: SNMPD_VIEW_INSTALL_DEFAULT: : eetdo: success installing default 1243 view 5146", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 4467, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "nul.exe", - "process.pid": 1005, - "rsa.counters.dclass_c1": 1243, - "rsa.counters.dclass_c2": 5146, - "rsa.internal.event_desc": "installing default SNMP view", - "rsa.internal.messageid": "SNMPD_VIEW_INSTALL_DEFAULT", - "rsa.misc.event_type": "SNMPD_VIEW_INSTALL_DEFAULT", - "rsa.misc.result": "eetdo: success", - "rsa.time.day": "4", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "uptatem", - "event.code": "DCD_PARSE_STATE_EMERGENCY", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 19 04:03:07 DCD_PARSE_STATE_EMERGENCY message repeated [2498]: uptatem: An unhandled state was encountered during interface parsing", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 4606, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "DCD_PARSE_STATE_EMERGENCY message repeated", - "process.pid": 2498, - "rsa.internal.event_desc": "unhandled state was encountered during interface parsing", - "rsa.internal.messageid": "DCD_PARSE_STATE_EMERGENCY", - "rsa.misc.event_type": "uptatem", - "rsa.time.day": "19", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "LOGIN_PAM_MAX_RETRIES:", - "event.code": "LOGIN_PAM_MAX_RETRIES", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 2 11:05:41 loremagn acons3820.internal.home: ain.exe[7192]: LOGIN_PAM_MAX_RETRIES: : Too many retries while authenticating user iquipex", - "event.outcome": "failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 4742, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ain.exe", - "process.pid": 7192, - "related.user": [ - "iquipex" - ], - "rsa.internal.event_desc": "Login failure", - "rsa.internal.messageid": "LOGIN_PAM_MAX_RETRIES", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.event_type": "LOGIN_PAM_MAX_RETRIES:", - "rsa.misc.result": "Too many retries while authenticating user", - "rsa.time.day": "2", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "iquipex" - }, - { - "event.action": "BOOTPD_NO_BOOTSTRING", - "event.code": "BOOTPD_NO_BOOTSTRING", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 16 18:08:15 onorume.exe[3290]: BOOTPD_NO_BOOTSTRING : No boot string found for type veleu", - "file.name": "veleu", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 4882, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "onorume.exe", - "process.pid": 3290, - "rsa.internal.event_desc": "No boot string found", - "rsa.internal.messageid": "BOOTPD_NO_BOOTSTRING", - "rsa.misc.event_type": "BOOTPD_NO_BOOTSTRING", - "rsa.misc.pid": "3290", - "rsa.time.day": "16", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "sshd", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 1 01:10:49 eirured sequamn5243.mail.home: sshd: sshd: SSHD_LOGIN_FAILED: Login failed for user 'ciatisun' from host '10.252.209.246'.", - "event.outcome": "failure", - "fileset.name": "junos", - "host.ip": "10.252.209.246", - "input.type": "log", - "log.offset": 4976, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "sshd", - "related.ip": [ - "10.252.209.246" - ], - "related.user": [ - "ciatisun" - ], - "rsa.internal.event_desc": "Login failed for user", - "rsa.internal.messageid": "sshd", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_theme": "Authentication", - "rsa.time.day": "1", - "rsa.time.month": "Dec", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "ciatisun" - }, - { - "event.code": "COS", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 15 08:13:24 COS: restart : Received FC->Q map, caecat", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5114, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "COS: restart", - "rsa.db.index": "caecat", - "rsa.internal.event_desc": "Received FC Q map", - "rsa.internal.messageid": "COS", - "rsa.time.day": "15", - "rsa.time.month": "Dec", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "nvolupta", - "event.code": "cgatool", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 29 15:15:58 cgatool message repeated : nvolupta: generated address is success", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5172, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "cgatool message repeated", - "rsa.internal.event_desc": "cga address genration", - "rsa.internal.messageid": "cgatool", - "rsa.misc.event_type": "nvolupta", - "rsa.misc.result": "success", - "rsa.time.day": "29", - "rsa.time.month": "Dec", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "idolor", - "event.code": "CHASSISD_SNMP_TRAP6", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jan 12 22:18:32 CHASSISD_SNMP_TRAP6 message repeated [4667]: idolor: SNMP trap generated: success (les)", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5254, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "CHASSISD_SNMP_TRAP6 message repeated", - "process.pid": 4667, - "rsa.db.index": "les", - "rsa.internal.event_desc": "SNMP Trap6 generated", - "rsa.internal.messageid": "CHASSISD_SNMP_TRAP6", - "rsa.misc.event_type": "idolor", - "rsa.misc.result": "success", - "rsa.time.day": "12", - "rsa.time.month": "Jan", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jan 27 05:21:06 ssb FLOW_REASSEMBLE_SUCCEED: : Packet merged source 10.102.228.136 destination 10.151.136.250 ipid upt succeed", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5358, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.time.day": "27", - "rsa.time.month": "Jan", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "serrorsi", - "event.code": "DFWD_PARSE_FILTER_EMERGENCY", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 10 12:23:41 DFWD_PARSE_FILTER_EMERGENCY message repeated [2037]: serrorsi: tsedquia encountered errors while parsing filter index file", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5485, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "DFWD_PARSE_FILTER_EMERGENCY message repeated", - "process.pid": 2037, - "rsa.internal.event_desc": "errors encountered while parsing filter index file", - "rsa.internal.messageid": "DFWD_PARSE_FILTER_EMERGENCY", - "rsa.misc.event_type": "serrorsi", - "rsa.time.day": "10", - "rsa.time.month": "Feb", - "service.name": "tsedquia", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "destination.ip": "10.148.255.126", - "event.action": "RPD_LDP_SESSIONDOWN:", - "event.code": "RPD_LDP_SESSIONDOWN", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 24 19:26:15 remips laboreet5949.mail.test: tesse.exe[4358]: RPD_LDP_SESSIONDOWN: : LDP session 10.148.255.126 is down, unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5624, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "tesse.exe", - "process.pid": 4358, - "related.ip": [ - "10.148.255.126" - ], - "rsa.internal.event_desc": "LDP session down", - "rsa.internal.messageid": "RPD_LDP_SESSIONDOWN", - "rsa.misc.event_type": "RPD_LDP_SESSIONDOWN:", - "rsa.misc.result": "unknown", - "rsa.time.day": "24", - "rsa.time.month": "Feb", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[mipsumqu]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 11 02:28:49 fpc2 NASD_CHAP_REPLAY_ATTACK_DETECTED: [mipsumqu]: turad: eth680.6195: received doloremi unknown.iciatis", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5755, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[mipsumqu]", - "rsa.time.day": "11", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "lsys_ssam_handler", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 25 09:31:24 rema mcol7795.domain: mquis lsys_ssam_handler: : processing lsys root-logical-system tur", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5876, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "lsys_ssam_handler:", - "rsa.db.index": "tur", - "rsa.internal.event_desc": "processing lsys root-logical-system", - "rsa.internal.messageid": "lsys_ssam_handler", - "rsa.misc.node": "mquis", - "rsa.time.day": "25", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "loreeuf", - "event.code": "UI_LOST_CONN", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 8 16:33:58 UI_LOST_CONN message repeated [7847]: loreeuf: Lost connection to daemon orainci", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 5981, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "UI_LOST_CONN message repeated", - "process.pid": 7847, - "rsa.internal.event_desc": "Lost connection to daemon", - "rsa.internal.messageid": "UI_LOST_CONN", - "rsa.misc.client": "orainci", - "rsa.misc.event_type": "loreeuf", - "rsa.time.day": "8", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "itse", - "event.code": "PWC_PROCESS_HOLD", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 22 23:36:32 PWC_PROCESS_HOLD: restart [1791]: itse: Process lapari holding down child 2702 until signal", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6077, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "PWC_PROCESS_HOLD: restart", - "process.pid": 1791, - "rsa.internal.event_desc": "Process holding down child until signalled", - "rsa.internal.messageid": "PWC_PROCESS_HOLD", - "rsa.misc.client": "lapari", - "rsa.misc.event_type": "itse", - "rsa.time.day": "22", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "LIBSERVICED_SOCKET_BIND", - "event.code": "LIBSERVICED_SOCKET_BIND", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 7 06:39:06 undeo ficiade4365.mail.domain: norum.exe[4443]: LIBSERVICED_SOCKET_BIND: : dantium: unable to bind socket ors: failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6185, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "norum.exe", - "process.pid": 4443, - "rsa.internal.event_desc": "unable to bind socket", - "rsa.internal.messageid": "LIBSERVICED_SOCKET_BIND", - "rsa.misc.event_type": "LIBSERVICED_SOCKET_BIND", - "rsa.misc.result": "failure", - "rsa.misc.result_code": ": dantium", - "rsa.time.day": "7", - "rsa.time.month": "May", - "rsa.wireless.wlan_ssid": "ors", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "destination.address": "mSect5899.domain", - "event.action": "LOGIN_FAILED:", - "event.code": "LOGIN_FAILED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 21 13:41:41 liq eleumiu2852.lan: mfugiat.exe[3946]: LOGIN_FAILED: : Login failed for user olu from host mSect5899.domain", - "event.outcome": "failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6319, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "mfugiat.exe", - "process.pid": 3946, - "related.hosts": [ - "mSect5899.domain" - ], - "related.user": [ - "olu" - ], - "rsa.internal.event_desc": "Login failure", - "rsa.internal.messageid": "LOGIN_FAILED", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.event_type": "LOGIN_FAILED:", - "rsa.network.host_dst": "mSect5899.domain", - "rsa.time.day": "21", - "rsa.time.month": "May", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "olu" - }, - { - "event.action": "MIB2D_IFL_IFINDEX_FAILURE:", - "event.code": "MIB2D_IFL_IFINDEX_FAILURE", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 4 20:44:15 idolo.exe[6535]: MIB2D_IFL_IFINDEX_FAILURE: : SNMP index assigned to deseru changed from 6460 to unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6444, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "idolo.exe", - "process.pid": 6535, - "related.user": [ - "deseru" - ], - "rsa.counters.dclass_c1": 6460, - "rsa.internal.event_desc": "SNMP index assigned changed", - "rsa.internal.messageid": "MIB2D_IFL_IFINDEX_FAILURE", - "rsa.misc.event_type": "MIB2D_IFL_IFINDEX_FAILURE:", - "rsa.misc.pid": "6535", - "rsa.misc.result": "unknown", - "rsa.time.day": "4", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "deseru" - }, - { - "event.action": "CHASSISD_RELEASE_MASTERSHIP:", - "event.code": "CHASSISD_RELEASE_MASTERSHIP", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 19 03:46:49 modtempo.exe[5276]: CHASSISD_RELEASE_MASTERSHIP: : Release mastership notification", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6564, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "modtempo.exe", - "process.pid": 5276, - "rsa.internal.event_desc": "Release mastership notification", - "rsa.internal.messageid": "CHASSISD_RELEASE_MASTERSHIP", - "rsa.misc.event_type": "CHASSISD_RELEASE_MASTERSHIP:", - "rsa.misc.pid": "5276", - "rsa.time.day": "19", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[3450]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 3 10:49:23 fpc4 PWC_PROCESS_HOLD: [3450]: dexea: Process aturExc holding down child 7343 until signal", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6663, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[3450]", - "rsa.time.day": "3", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "SERVICED_RTSOCK_SEQUENCE", - "event.code": "SERVICED_RTSOCK_SEQUENCE", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 17 17:51:58 ame.exe[226]: SERVICED_RTSOCK_SEQUENCE : boreet: routing socket sequence error, unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6769, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ame.exe", - "process.pid": 226, - "rsa.internal.event_desc": "routing socket sequence error", - "rsa.internal.messageid": "SERVICED_RTSOCK_SEQUENCE", - "rsa.misc.client": "boreet", - "rsa.misc.event_type": "SERVICED_RTSOCK_SEQUENCE", - "rsa.misc.pid": "226", - "rsa.misc.result": "unknown", - "rsa.time.day": "17", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "VPN", - "event.code": "idpinfo", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 1 00:54:32 consect6919.mail.localdomain iset.exe[940]: idpinfo: urere", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6873, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "idpinfo", - "rsa.misc.event_type": "VPN", - "rsa.misc.pid": "940", - "rsa.time.day": "1", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "oreeufug", - "event.code": "RPD_KRT_NOIFD", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 15 07:57:06 RPD_KRT_NOIFD: restart [4822]: oreeufug: No device 5020 for interface lo4593", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 6947, - "network.interface.name": "lo4593", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_KRT_NOIFD: restart", - "process.pid": 4822, - "rsa.counters.dclass_c1": 5020, - "rsa.internal.event_desc": "No device for interface", - "rsa.internal.messageid": "RPD_KRT_NOIFD", - "rsa.misc.event_type": "oreeufug", - "rsa.network.interface": "lo4593", - "rsa.time.day": "15", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "craftd:", - "event.code": "craftd", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 29 14:59:40 eprehen oinB3432.api.invalid: citatio.exe[5029]: craftd: , unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7040, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "citatio.exe", - "process.pid": 5029, - "rsa.internal.event_desc": "License expiration warning", - "rsa.internal.messageid": "craftd", - "rsa.misc.event_type": "craftd:", - "rsa.misc.result": "unknown", - "rsa.time.day": "29", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "eetd", - "event.code": "ACCT_CU_RTSLIB_error", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 12 22:02:15 ACCT_CU_RTSLIB_error message repeated [7583]: eetd: liquide getting class usage statistics for interface enp0s2674: success", - "file.name": "liquide", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7123, - "network.interface.name": "enp0s2674", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ACCT_CU_RTSLIB_error message repeated", - "process.pid": 7583, - "rsa.internal.event_desc": "Class usage statistics error for interface", - "rsa.internal.messageid": "ACCT_CU_RTSLIB_error", - "rsa.misc.event_type": "eetd", - "rsa.misc.result": "success", - "rsa.network.interface": "enp0s2674", - "rsa.time.day": "12", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "VPN", - "event.code": "kmd", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 27 05:04:49 userro oree nimadmi7341.www.home RT_FLOW - kmd [", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7263, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "kmd", - "rsa.misc.event_type": "VPN", - "rsa.time.day": "27", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "rauto", - "event.code": "LOGIN_PAM_NONLOCAL_USER", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 11 12:07:23 LOGIN_PAM_NONLOCAL_USER: restart [686]: rauto: User rese authenticated but has no local login ID", - "event.outcome": "failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7328, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "LOGIN_PAM_NONLOCAL_USER: restart", - "process.pid": 686, - "related.user": [ - "rese" - ], - "rsa.internal.event_desc": "Login failure", - "rsa.internal.messageid": "LOGIN_PAM_NONLOCAL_USER", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.event_type": "rauto", - "rsa.misc.result": "User authenticated but has no local login ID", - "rsa.time.day": "11", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "rese" - }, - { - "event.action": "RPD_KRT_NOIFD", - "event.code": "RPD_KRT_NOIFD", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 25 19:09:57 doconse.exe[6184]: RPD_KRT_NOIFD : No device 5991 for interface enp0s7694", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7441, - "network.interface.name": "enp0s7694", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "doconse.exe", - "process.pid": 6184, - "rsa.counters.dclass_c1": 5991, - "rsa.internal.event_desc": "No device for interface", - "rsa.internal.messageid": "RPD_KRT_NOIFD", - "rsa.misc.event_type": "RPD_KRT_NOIFD", - "rsa.misc.pid": "6184", - "rsa.network.interface": "enp0s7694", - "rsa.time.day": "25", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "uspinfo", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 9 02:12:32 quidolor1064.www.domain: uspinfo: : flow_print_session_summary_output received rcita", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7531, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "quidolor1064.www.domain: uspinfo:", - "rsa.db.index": "rcita", - "rsa.internal.event_desc": "flow_print_session_summary_output received", - "rsa.internal.messageid": "uspinfo", - "rsa.time.day": "9", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "mfugi", - "event.code": "RPD_TASK_REINIT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 23 09:15:06 RPD_TASK_REINIT: restart [1810]: mfugi: Reinitializing", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7631, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_TASK_REINIT: restart", - "process.pid": 1810, - "rsa.internal.event_desc": "Reinitializing", - "rsa.internal.messageid": "RPD_TASK_REINIT", - "rsa.misc.event_type": "mfugi", - "rsa.time.day": "23", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "allow", - "event.code": "ECCD_TRACE_FILE_OPEN_FAILED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 7 16:17:40 inibusBo.exe[2509]: ECCD_TRACE_FILE_OPEN_FAILED : allow: failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7702, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "inibusBo.exe", - "process.pid": 2509, - "rsa.internal.event_desc": "ECCD TRACE FILE OPEN FAILURE", - "rsa.internal.messageid": "ECCD_TRACE_FILE_OPEN_FAILED", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.event_type": "ECCD_TRACE_FILE_OPEN_FAILED", - "rsa.misc.pid": "2509", - "rsa.misc.result": "failure", - "rsa.time.day": "7", - "rsa.time.month": "Dec", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "accept", - "event.code": "ECCD_TRACE_FILE_OPEN_FAILED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 21 23:20:14 ECCD_TRACE_FILE_OPEN_FAILED message repeated [2815]: rudexer: accept: unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7782, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ECCD_TRACE_FILE_OPEN_FAILED message repeated", - "process.pid": 2815, - "rsa.internal.event_desc": "ECCD TRACE FILE OPEN FAILURE", - "rsa.internal.messageid": "ECCD_TRACE_FILE_OPEN_FAILED", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.event_type": "rudexer", - "rsa.misc.result": "unknown", - "rsa.time.day": "21", - "rsa.time.month": "Dec", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "destination.address": "tod6376.mail.host", - "event.action": "LOGIN_FAILED:", - "event.code": "LOGIN_FAILED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jan 5 06:22:49 eseosqu oeius641.api.home: laud.exe[913]: LOGIN_FAILED: : Login failed for user turQ from host tod6376.mail.host", - "event.outcome": "failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 7876, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "laud.exe", - "process.pid": 913, - "related.hosts": [ - "tod6376.mail.host" - ], - "related.user": [ - "turQ" - ], - "rsa.internal.event_desc": "Login failure", - "rsa.internal.messageid": "LOGIN_FAILED", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.event_type": "LOGIN_FAILED:", - "rsa.network.host_dst": "tod6376.mail.host", - "rsa.time.day": "5", - "rsa.time.month": "Jan", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ], - "user.name": "turQ" - }, - { - "event.action": "FSAD_CONNTIMEDOUT", - "event.code": "FSAD_CONNTIMEDOUT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jan 19 13:25:23 ine.exe[1578]: FSAD_CONNTIMEDOUT : Connection timed out to the client (oreve2538.www.localdomain, 10.44.24.103) having request type reprehen", - "fileset.name": "junos", - "host.hostname": "oreve2538.www.localdomain", - "input.type": "log", - "log.offset": 8004, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "ine.exe", - "process.pid": 1578, - "related.hosts": [ - "oreve2538.www.localdomain" - ], - "related.ip": [ - "10.44.24.103" - ], - "rsa.internal.event_desc": "Connection timed out to client", - "rsa.internal.messageid": "FSAD_CONNTIMEDOUT", - "rsa.misc.event_type": "FSAD_CONNTIMEDOUT", - "rsa.misc.obj_type": "reprehen", - "rsa.misc.pid": "1578", - "rsa.time.day": "19", - "rsa.time.month": "Jan", - "service.type": "juniper", - "source.address": "oreve2538.www.localdomain", - "source.ip": "10.44.24.103", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "rinre", - "event.code": "UI_SCHEMA_SEQUENCE_ERROR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 2 20:27:57 UI_SCHEMA_SEQUENCE_ERROR: restart [734]: rinre: Schema sequence number mismatch", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8161, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "UI_SCHEMA_SEQUENCE_ERROR: restart", - "process.pid": 734, - "rsa.internal.event_desc": "Schema sequence number mismatch", - "rsa.internal.messageid": "UI_SCHEMA_SEQUENCE_ERROR", - "rsa.misc.event_type": "rinre", - "rsa.time.day": "2", - "rsa.time.month": "Feb", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "deny", - "event.code": "LIBJNX_EXEC_PIPE", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Feb 17 03:30:32 LIBJNX_EXEC_PIPE: restart [946]: olors: Unable to create pipes for command 'deny': unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8256, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "LIBJNX_EXEC_PIPE: restart", - "process.pid": 946, - "rsa.internal.event_desc": "Unable to create pipes for command", - "rsa.internal.messageid": "LIBJNX_EXEC_PIPE", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.event_type": "olors", - "rsa.misc.result": "unknown", - "rsa.time.day": "17", - "rsa.time.month": "Feb", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "isnost", - "event.code": "UI_DBASE_MISMATCH_EXTENT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 3 10:33:06 UI_DBASE_MISMATCH_EXTENT: restart [4686]: isnost: Database header extent mismatch for file 'lumdolor': expecting 559, got 7339", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8363, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "UI_DBASE_MISMATCH_EXTENT: restart", - "process.pid": 4686, - "rsa.counters.dclass_c1": 559, - "rsa.counters.dclass_c2": 7339, - "rsa.internal.event_desc": "Database header extent mismatch", - "rsa.internal.messageid": "UI_DBASE_MISMATCH_EXTENT", - "rsa.misc.client": "lumdolor", - "rsa.misc.event_type": "isnost", - "rsa.time.day": "3", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "eumfu", - "event.code": "NASD_usage", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Mar 17 17:35:40 NASD_usage message repeated [7744]: eumfu: unknown: quidex", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8505, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "NASD_usage message repeated", - "process.pid": 7744, - "rsa.db.index": "quidex", - "rsa.internal.event_desc": "NASD Usage", - "rsa.internal.messageid": "NASD_usage", - "rsa.misc.event_type": "eumfu", - "rsa.misc.result": "unknown", - "rsa.time.day": "17", - "rsa.time.month": "Mar", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "VPN", - "event.code": "kmd", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 1 00:38:14 /kmd: ", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8580, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "kmd", - "rsa.misc.event_type": "VPN", - "rsa.time.day": "1", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "sshd", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 15 07:40:49 sshd message repeated : very-high: can't get client address: unknown", - "fileset.name": "junos", - "input.type": "log", - "log.level": "very-high", - "log.offset": 8602, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "sshd message repeated", - "rsa.internal.event_desc": "can't get client address", - "rsa.internal.messageid": "sshd", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "very-high", - "rsa.time.day": "15", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[4279]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Apr 29 14:43:23 fpc4 RPD_LDP_NBRUP: [4279]: stlaboru: LDP neighbor 10.248.68.242 (eth1282) is success", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8687, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[4279]", - "rsa.time.day": "29", - "rsa.time.month": "Apr", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "SNMPD_TRAP_QUEUE_DRAINED", - "event.code": "SNMPD_TRAP_QUEUE_DRAINED", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 13 21:45:57 uun iduntutl4723.example: uel.exe[5770]: SNMPD_TRAP_QUEUE_DRAINED: : metco: traps queued to vel sent successfully", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8789, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "uel.exe", - "process.pid": 5770, - "rsa.internal.event_desc": "traps queued - sent successfully", - "rsa.internal.messageid": "SNMPD_TRAP_QUEUE_DRAINED", - "rsa.misc.client": ": metco", - "rsa.misc.event_type": "SNMPD_TRAP_QUEUE_DRAINED", - "rsa.misc.obj_name": "vel", - "rsa.time.day": "13", - "rsa.time.month": "May", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[4837]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "May 28 04:48:31 fpc8 ECCD_PCI_WRITE_FAILED: [4837]: radip: cancel: success", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8919, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[4837]", - "rsa.time.day": "28", - "rsa.time.month": "May", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "piciatis", - "event.code": "TFTPD_RECVCOMPLETE_INFO", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 11 11:51:06 TFTPD_RECVCOMPLETE_INFO message repeated [7501]: piciatis: Received 3501 blocks of 5877 size for file 'tatisetq'", - "file.name": "tatisetq", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 8994, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "TFTPD_RECVCOMPLETE_INFO message repeated", - "process.pid": 7501, - "rsa.counters.dclass_c1": 3501, - "rsa.counters.dclass_c2": 5877, - "rsa.internal.event_desc": "TFTPD RECVCOMPLETE INFO", - "rsa.internal.messageid": "TFTPD_RECVCOMPLETE_INFO", - "rsa.misc.event_type": "piciatis", - "rsa.time.day": "11", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "usp_trace_ipc_reconnect", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jun 25 18:53:40 usp_trace_ipc_reconnect message repeated illum.exe:USP trace client cannot reconnect to server", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9123, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "message repeated illum.exe", - "rsa.internal.event_desc": "USP trace client cannot reconnect to server", - "rsa.internal.messageid": "usp_trace_ipc_reconnect", - "rsa.misc.node": "usp_trace_ipc_reconnect", - "rsa.time.day": "25", - "rsa.time.month": "Jun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "BCHIP", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 10 01:56:14 amnis atevelit2799.internal.host: tatiset.exe IFP trace> BCHIP: : cannot write ucode mask reg", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9234, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "tatiset.exe", - "rsa.internal.event_desc": "cannot write ucode mask reg", - "rsa.internal.messageid": "BCHIP", - "rsa.misc.device_name": "IFP trace> BCHIP:", - "rsa.time.day": "10", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "moditemp", - "event.code": "RPD_MPLS_LSP_DOWN", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Jul 24 08:58:48 RPD_MPLS_LSP_DOWN message repeated [5094]: moditemp: MPLS LSP eth2042 unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9344, - "network.interface.name": "eth2042", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_MPLS_LSP_DOWN message repeated", - "process.pid": 5094, - "rsa.internal.event_desc": "MPLS LSP DOWN", - "rsa.internal.messageid": "RPD_MPLS_LSP_DOWN", - "rsa.misc.event_type": "moditemp", - "rsa.misc.result": "unknown", - "rsa.network.interface": "eth2042", - "rsa.time.day": "24", - "rsa.time.month": "Jul", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "uatDuisa", - "event.code": "CHASSISD_PARSE_INIT", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 7 16:01:23 CHASSISD_PARSE_INIT: restart [4153]: uatDuisa: Parsing configuration file 'usB'", - "file.name": "usB", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9438, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "CHASSISD_PARSE_INIT: restart", - "process.pid": 4153, - "rsa.internal.event_desc": "Parsing configuration file", - "rsa.internal.messageid": "CHASSISD_PARSE_INIT", - "rsa.misc.event_type": "uatDuisa", - "rsa.time.day": "7", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "upidatat", - "event.code": "RMOPD_ROUTING_INSTANCE_NO_INFO", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Aug 21 23:03:57 RMOPD_ROUTING_INSTANCE_NO_INFO: restart [6922]: upidatat: No information for routing instance non: failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9533, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RMOPD_ROUTING_INSTANCE_NO_INFO: restart", - "process.pid": 6922, - "rsa.internal.event_desc": "No information for routing instance", - "rsa.internal.messageid": "RMOPD_ROUTING_INSTANCE_NO_INFO", - "rsa.misc.client": "non", - "rsa.misc.event_type": "upidatat", - "rsa.misc.result": "failure", - "rsa.time.day": "21", - "rsa.time.month": "Aug", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "CHASSISD_TERM_SIGNAL:", - "event.code": "CHASSISD_TERM_SIGNAL", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 5 06:06:31 Utenimad.exe[4305]: CHASSISD_TERM_SIGNAL: : Received SIGTERM request, success", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9656, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "Utenimad.exe", - "process.pid": 4305, - "rsa.internal.event_desc": "Received SIGTERM request", - "rsa.internal.messageid": "CHASSISD_TERM_SIGNAL", - "rsa.misc.event_type": "CHASSISD_TERM_SIGNAL:", - "rsa.misc.pid": "4305", - "rsa.misc.result": "success", - "rsa.time.day": "5", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "destination.ip": "10.49.190.163", - "event.action": "RPD_OSPF_NBRUP", - "event.code": "RPD_OSPF_NBRUP", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Sep 19 13:09:05 tseddo.exe[484]: RPD_OSPF_NBRUP : OSPF neighbor 10.49.190.163 (lo50) aUteni due to failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9749, - "network.interface.name": "lo50", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "tseddo.exe", - "process.pid": 484, - "related.ip": [ - "10.49.190.163" - ], - "rsa.internal.event_desc": "OSPF neighbor up", - "rsa.internal.messageid": "RPD_OSPF_NBRUP", - "rsa.misc.disposition": "aUteni", - "rsa.misc.event_type": "RPD_OSPF_NBRUP", - "rsa.misc.pid": "484", - "rsa.misc.result": "failure", - "rsa.network.interface": "lo50", - "rsa.time.day": "19", - "rsa.time.month": "Sep", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.code": "[6968]", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 3 20:11:40 cfeb NASD_usage: [6968]: litseddo: failure: metconse", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9856, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "[6968]", - "rsa.time.day": "3", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "destination.ip": "10.101.99.109", - "event.action": "emu", - "event.code": "RPD_LDP_NBRDOWN", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Oct 18 03:14:14 RPD_LDP_NBRDOWN message repeated [4598]: emu: LDP neighbor 10.101.99.109 (eth4282) is success", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 9924, - "network.interface.name": "eth4282", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_LDP_NBRDOWN message repeated", - "process.pid": 4598, - "related.ip": [ - "10.101.99.109" - ], - "rsa.internal.event_desc": "LDP neighbor down", - "rsa.internal.messageid": "RPD_LDP_NBRDOWN", - "rsa.misc.event_type": "emu", - "rsa.misc.result": "success", - "rsa.network.interface": "eth4282", - "rsa.time.day": "18", - "rsa.time.month": "Oct", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "con", - "event.code": "RPD_RDISC_NOMULTI", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 1 10:16:48 RPD_RDISC_NOMULTI message repeated [4764]: con: Ignoring interface 594 on lo7449 -- unknown", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 10034, - "network.interface.name": "lo7449", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "RPD_RDISC_NOMULTI message repeated", - "process.pid": 4764, - "rsa.counters.dclass_c1": 594, - "rsa.internal.event_desc": "Ignoring interface", - "rsa.internal.messageid": "RPD_RDISC_NOMULTI", - "rsa.misc.event_type": "con", - "rsa.misc.result": "unknown", - "rsa.network.interface": "lo7449", - "rsa.time.day": "1", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "isquames", - "event.code": "BOOTPD_NEW_CONF", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 15 17:19:22 BOOTPD_NEW_CONF: restart [1768]: isquames: New configuration installed", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 10141, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "BOOTPD_NEW_CONF: restart", - "process.pid": 1768, - "rsa.internal.event_desc": "New configuration installed", - "rsa.internal.messageid": "BOOTPD_NEW_CONF", - "rsa.misc.event_type": "isquames", - "rsa.time.day": "15", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "ngelit", - "event.code": "SNMP_TRAP_LINK_DOWN", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Nov 30 00:21:57 SNMP_TRAP_LINK_DOWN message repeated [7368]: ngelit: ifIndex 4197, ifAdminStatus ons, ifOperStatus unknown, ifName lo3193", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 10228, - "network.interface.name": "lo3193", - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "SNMP_TRAP_LINK_DOWN message repeated", - "process.pid": 7368, - "rsa.counters.dclass_c1": 4197, - "rsa.internal.event_desc": "SNMP TRAP LINK DOWN", - "rsa.internal.messageid": "SNMP_TRAP_LINK_DOWN", - "rsa.misc.event_type": "ngelit", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "ons", - "rsa.network.interface": "lo3193", - "rsa.time.day": "30", - "rsa.time.month": "Nov", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - }, - { - "event.action": "udexerci", - "event.code": "MIB2D_ATM_ERROR", - "event.dataset": "juniper.junos", - "event.module": "juniper", - "event.original": "Dec 14 07:24:31 MIB2D_ATM_ERROR message repeated [4927]: udexerci: voluptat: failure", - "fileset.name": "junos", - "input.type": "log", - "log.offset": 10366, - "observer.product": "Junos", - "observer.type": "Routers", - "observer.vendor": "Juniper", - "process.name": "MIB2D_ATM_ERROR message repeated", - "process.pid": 4927, - "rsa.internal.event_desc": "MIB2D ATM ERROR", - "rsa.internal.messageid": "MIB2D_ATM_ERROR", - "rsa.misc.event_type": "udexerci", - "rsa.misc.result": "failure", - "rsa.time.day": "14", - "rsa.time.month": "Dec", - "service.name": "voluptat", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.junos" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/juniper/netscreen/_meta/fields.yml b/x-pack/filebeat/module/juniper/netscreen/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/juniper/netscreen/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/juniper/netscreen/config/input.yml b/x-pack/filebeat/module/juniper/netscreen/config/input.yml deleted file mode 100644 index a37550ca836..00000000000 --- a/x-pack/filebeat/module/juniper/netscreen/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Juniper" - product: "Netscreen" - type: "Firewall" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/juniper/netscreen/config/liblogparser.js - - ${path.home}/module/juniper/netscreen/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/juniper/netscreen/config/liblogparser.js b/x-pack/filebeat/module/juniper/netscreen/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/juniper/netscreen/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} for %{p0}"); - -var dup7 = match("MESSAGE#2:00001:02/1_1", "nwparser.p0", "domain address %{domain->} in zone %{p0}"); - -var dup8 = match("MESSAGE#4:00001:04/3_0", "nwparser.p0", " (%{fld1})"); - -var dup9 = date_time({ - dest: "event_time", - args: ["fld1"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup10 = match("MESSAGE#5:00001:05/1_0", "nwparser.p0", "(%{fld1})"); - -var dup11 = match_copy("MESSAGE#5:00001:05/1_1", "nwparser.p0", "fld1"); - -var dup12 = match("MESSAGE#8:00001:08/0", "nwparser.payload", "Address %{p0}"); - -var dup13 = match("MESSAGE#8:00001:08/1_0", "nwparser.p0", "MIP(%{interface}) %{p0}"); - -var dup14 = match("MESSAGE#8:00001:08/1_1", "nwparser.p0", "%{group_object->} %{p0}"); - -var dup15 = match("MESSAGE#8:00001:08/3_0", "nwparser.p0", "admin %{p0}"); - -var dup16 = match_copy("MESSAGE#8:00001:08/3_1", "nwparser.p0", "p0"); - -var dup17 = setc("eventcategory","1502000000"); - -var dup18 = setc("eventcategory","1703000000"); - -var dup19 = setc("eventcategory","1603000000"); - -var dup20 = match("MESSAGE#25:00002:20/1_1", "nwparser.p0", "from host %{saddr->} "); - -var dup21 = match_copy("MESSAGE#25:00002:20/1_2", "nwparser.p0", ""); - -var dup22 = setc("eventcategory","1502050000"); - -var dup23 = match("MESSAGE#26:00002:21/1", "nwparser.p0", "%{p0}"); - -var dup24 = match("MESSAGE#26:00002:21/2_0", "nwparser.p0", "password %{p0}"); - -var dup25 = match("MESSAGE#26:00002:21/2_1", "nwparser.p0", "name %{p0}"); - -var dup26 = match_copy("MESSAGE#27:00002:22/1_2", "nwparser.p0", "administrator"); - -var dup27 = setc("eventcategory","1801010000"); - -var dup28 = setc("eventcategory","1401060000"); - -var dup29 = setc("ec_subject","User"); - -var dup30 = setc("ec_activity","Logon"); - -var dup31 = setc("ec_theme","Authentication"); - -var dup32 = setc("ec_outcome","Success"); - -var dup33 = setc("eventcategory","1401070000"); - -var dup34 = setc("ec_activity","Logoff"); - -var dup35 = setc("eventcategory","1303000000"); - -var dup36 = match_copy("MESSAGE#42:00002:38/1_1", "nwparser.p0", "disposition"); - -var dup37 = setc("eventcategory","1402020200"); - -var dup38 = setc("ec_theme","UserGroup"); - -var dup39 = setc("ec_outcome","Error"); - -var dup40 = match("MESSAGE#46:00002:42/1_1", "nwparser.p0", "via %{p0}"); - -var dup41 = match("MESSAGE#46:00002:42/4", "nwparser.p0", "%{fld1})"); - -var dup42 = setc("eventcategory","1402020300"); - -var dup43 = setc("ec_activity","Modify"); - -var dup44 = setc("eventcategory","1605000000"); - -var dup45 = match("MESSAGE#52:00002:48/3_1", "nwparser.p0", "%{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{p0}"); - -var dup46 = match("MESSAGE#53:00002:52/3_0", "nwparser.p0", "admin %{administrator->} via %{p0}"); - -var dup47 = match("MESSAGE#53:00002:52/3_2", "nwparser.p0", "%{username->} via %{p0}"); - -var dup48 = match("MESSAGE#53:00002:52/4_0", "nwparser.p0", "NSRP Peer . (%{p0}"); - -var dup49 = match("MESSAGE#55:00002:54/2", "nwparser.p0", ". (%{fld1})"); - -var dup50 = setc("eventcategory","1701020000"); - -var dup51 = setc("ec_theme","Configuration"); - -var dup52 = match("MESSAGE#56:00002/1_1", "nwparser.p0", "changed%{p0}"); - -var dup53 = setc("eventcategory","1301000000"); - -var dup54 = setc("ec_outcome","Failure"); - -var dup55 = match("MESSAGE#61:00003:05/0", "nwparser.payload", "The %{p0}"); - -var dup56 = match("MESSAGE#66:00004:04/1_0", "nwparser.p0", "interface%{p0}"); - -var dup57 = match("MESSAGE#66:00004:04/1_1", "nwparser.p0", "Interface%{p0}"); - -var dup58 = setc("eventcategory","1001000000"); - -var dup59 = setc("dclass_counter1_string","Number of times the attack occurred"); - -var dup60 = call({ - dest: "nwparser.inout", - fn: DIRCHK, - args: [ - field("$OUT"), - field("saddr"), - field("daddr"), - ], -}); - -var dup61 = call({ - dest: "nwparser.inout", - fn: DIRCHK, - args: [ - field("$OUT"), - field("saddr"), - field("daddr"), - field("sport"), - field("dport"), - ], -}); - -var dup62 = setc("eventcategory","1608010000"); - -var dup63 = match("MESSAGE#76:00004:14/0", "nwparser.payload", "DNS entries have been %{p0}"); - -var dup64 = match("MESSAGE#79:00004:17/0", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{p0}"); - -var dup65 = match("MESSAGE#79:00004:17/1_0", "nwparser.p0", "%{zone}, %{p0}"); - -var dup66 = match("MESSAGE#79:00004:17/1_1", "nwparser.p0", "%{zone->} %{p0}"); - -var dup67 = match("MESSAGE#79:00004:17/2", "nwparser.p0", "int %{interface}).%{space}Occurred %{dclass_counter1->} times. (%{fld1})"); - -var dup68 = match("MESSAGE#83:00005:03/1_0", "nwparser.p0", "%{dport},%{p0}"); - -var dup69 = match("MESSAGE#83:00005:03/1_1", "nwparser.p0", "%{dport->} %{p0}"); - -var dup70 = match("MESSAGE#83:00005:03/2", "nwparser.p0", "%{space}using protocol %{p0}"); - -var dup71 = match("MESSAGE#83:00005:03/3_0", "nwparser.p0", "%{protocol},%{p0}"); - -var dup72 = match("MESSAGE#83:00005:03/3_1", "nwparser.p0", "%{protocol->} %{p0}"); - -var dup73 = match("MESSAGE#83:00005:03/5_1", "nwparser.p0", ". %{p0}"); - -var dup74 = match("MESSAGE#86:00005:06/0_0", "nwparser.payload", "%{fld2}: SYN %{p0}"); - -var dup75 = match("MESSAGE#86:00005:06/0_1", "nwparser.payload", "SYN %{p0}"); - -var dup76 = match("MESSAGE#87:00005:07/1_2", "nwparser.p0", "timeout value %{p0}"); - -var dup77 = match("MESSAGE#88:00005:08/2_0", "nwparser.p0", "destination %{p0}"); - -var dup78 = match("MESSAGE#88:00005:08/2_1", "nwparser.p0", "source %{p0}"); - -var dup79 = match("MESSAGE#97:00005:17/0", "nwparser.payload", "A %{p0}"); - -var dup80 = match("MESSAGE#98:00005:18/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var dup81 = match("MESSAGE#98:00005:18/1_0", "nwparser.p0", ", int %{p0}"); - -var dup82 = match("MESSAGE#98:00005:18/1_1", "nwparser.p0", "int %{p0}"); - -var dup83 = match("MESSAGE#98:00005:18/2", "nwparser.p0", "%{interface}).%{space}Occurred %{dclass_counter1->} times. (%{fld1})"); - -var dup84 = setc("eventcategory","1002020000"); - -var dup85 = setc("eventcategory","1002000000"); - -var dup86 = setc("eventcategory","1603110000"); - -var dup87 = match("MESSAGE#111:00007:04/0", "nwparser.payload", "HA %{p0}"); - -var dup88 = match("MESSAGE#111:00007:04/1_0", "nwparser.p0", "encryption %{p0}"); - -var dup89 = match("MESSAGE#111:00007:04/1_1", "nwparser.p0", "authentication %{p0}"); - -var dup90 = match("MESSAGE#111:00007:04/3_1", "nwparser.p0", "key %{p0}"); - -var dup91 = setc("eventcategory","1613040200"); - -var dup92 = match("MESSAGE#118:00007:11/1_0", "nwparser.p0", "disabled%{}"); - -var dup93 = match("MESSAGE#118:00007:11/1_1", "nwparser.p0", "set to %{trigger_val}"); - -var dup94 = match("MESSAGE#127:00007:21/1_0", "nwparser.p0", "up%{}"); - -var dup95 = match("MESSAGE#127:00007:21/1_1", "nwparser.p0", "down%{}"); - -var dup96 = match("MESSAGE#139:00007:33/2_1", "nwparser.p0", " %{p0}"); - -var dup97 = setc("eventcategory","1613050200"); - -var dup98 = match("MESSAGE#143:00007:37/1_0", "nwparser.p0", "set%{}"); - -var dup99 = match("MESSAGE#143:00007:37/1_1", "nwparser.p0", "unset%{}"); - -var dup100 = match("MESSAGE#144:00007:38/1_0", "nwparser.p0", "undefined %{p0}"); - -var dup101 = match("MESSAGE#144:00007:38/1_1", "nwparser.p0", "set %{p0}"); - -var dup102 = match("MESSAGE#144:00007:38/1_2", "nwparser.p0", "active %{p0}"); - -var dup103 = match("MESSAGE#144:00007:38/2", "nwparser.p0", "to %{p0}"); - -var dup104 = match("MESSAGE#157:00007:51/1_0", "nwparser.p0", "created %{p0}"); - -var dup105 = match("MESSAGE#157:00007:51/3_0", "nwparser.p0", ", %{p0}"); - -var dup106 = match("MESSAGE#157:00007:51/5_0", "nwparser.p0", "is %{p0}"); - -var dup107 = match("MESSAGE#157:00007:51/5_1", "nwparser.p0", "was %{p0}"); - -var dup108 = match("MESSAGE#157:00007:51/6", "nwparser.p0", "%{fld2}"); - -var dup109 = match("MESSAGE#163:00007:57/1_0", "nwparser.p0", "threshold %{p0}"); - -var dup110 = match("MESSAGE#163:00007:57/1_1", "nwparser.p0", "interval %{p0}"); - -var dup111 = match("MESSAGE#163:00007:57/3_0", "nwparser.p0", "of %{p0}"); - -var dup112 = match("MESSAGE#163:00007:57/3_1", "nwparser.p0", "that %{p0}"); - -var dup113 = match("MESSAGE#170:00007:64/0_0", "nwparser.payload", "Zone %{p0}"); - -var dup114 = match("MESSAGE#170:00007:64/0_1", "nwparser.payload", "Interface %{p0}"); - -var dup115 = match("MESSAGE#172:00007:66/2_1", "nwparser.p0", "n %{p0}"); - -var dup116 = match("MESSAGE#174:00007:68/4", "nwparser.p0", ".%{}"); - -var dup117 = setc("eventcategory","1603090000"); - -var dup118 = match("MESSAGE#195:00009:06/1", "nwparser.p0", "for %{p0}"); - -var dup119 = match("MESSAGE#195:00009:06/2_0", "nwparser.p0", "the %{p0}"); - -var dup120 = match("MESSAGE#195:00009:06/4_0", "nwparser.p0", "removed %{p0}"); - -var dup121 = setc("eventcategory","1603030000"); - -var dup122 = match("MESSAGE#202:00009:14/2_0", "nwparser.p0", "interface %{p0}"); - -var dup123 = match("MESSAGE#202:00009:14/2_1", "nwparser.p0", "the interface %{p0}"); - -var dup124 = match_copy("MESSAGE#202:00009:14/4_1", "nwparser.p0", "interface"); - -var dup125 = match("MESSAGE#203:00009:15/1_1", "nwparser.p0", "s %{p0}"); - -var dup126 = match("MESSAGE#203:00009:15/2", "nwparser.p0", "on interface %{interface->} %{p0}"); - -var dup127 = match("MESSAGE#203:00009:15/3_0", "nwparser.p0", "has been %{p0}"); - -var dup128 = match("MESSAGE#203:00009:15/4", "nwparser.p0", "%{disposition}."); - -var dup129 = match("MESSAGE#204:00009:16/3_0", "nwparser.p0", "removed from %{p0}"); - -var dup130 = match("MESSAGE#204:00009:16/3_1", "nwparser.p0", "added to %{p0}"); - -var dup131 = match("MESSAGE#210:00009:21/2", "nwparser.p0", "%{interface}). Occurred %{dclass_counter1->} times. (%{fld1})"); - -var dup132 = match("MESSAGE#219:00010:03/0", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var dup133 = match("MESSAGE#224:00011:04/1_1", "nwparser.p0", "Interface %{p0}"); - -var dup134 = match("MESSAGE#233:00011:14/1_0", "nwparser.p0", "set to %{fld2}"); - -var dup135 = match("MESSAGE#237:00011:18/4_1", "nwparser.p0", "gateway %{p0}"); - -var dup136 = match("MESSAGE#238:00011:19/6", "nwparser.p0", "%{} %{disposition}"); - -var dup137 = match("MESSAGE#274:00015:02/1_1", "nwparser.p0", "port number %{p0}"); - -var dup138 = match("MESSAGE#274:00015:02/2", "nwparser.p0", "has been %{disposition}"); - -var dup139 = match("MESSAGE#276:00015:04/1_0", "nwparser.p0", "IP %{p0}"); - -var dup140 = match("MESSAGE#276:00015:04/1_1", "nwparser.p0", "port %{p0}"); - -var dup141 = setc("eventcategory","1702030000"); - -var dup142 = match("MESSAGE#284:00015:12/3_0", "nwparser.p0", "up %{p0}"); - -var dup143 = match("MESSAGE#284:00015:12/3_1", "nwparser.p0", "down %{p0}"); - -var dup144 = setc("eventcategory","1601000000"); - -var dup145 = match("MESSAGE#294:00015:22/2_0", "nwparser.p0", "(%{fld1}) "); - -var dup146 = date_time({ - dest: "event_time", - args: ["fld2"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup147 = setc("eventcategory","1103000000"); - -var dup148 = setc("ec_subject","NetworkComm"); - -var dup149 = setc("ec_activity","Scan"); - -var dup150 = setc("ec_theme","TEV"); - -var dup151 = setc("eventcategory","1103010000"); - -var dup152 = match("MESSAGE#317:00017:01/2_0", "nwparser.p0", ": %{p0}"); - -var dup153 = match("MESSAGE#320:00017:04/0", "nwparser.payload", "IP %{p0}"); - -var dup154 = match("MESSAGE#320:00017:04/1_0", "nwparser.p0", "address pool %{p0}"); - -var dup155 = match("MESSAGE#320:00017:04/1_1", "nwparser.p0", "pool %{p0}"); - -var dup156 = match("MESSAGE#326:00017:10/1_0", "nwparser.p0", "enabled %{p0}"); - -var dup157 = match("MESSAGE#326:00017:10/1_1", "nwparser.p0", "disabled %{p0}"); - -var dup158 = match("MESSAGE#332:00017:15/1_0", "nwparser.p0", "AH %{p0}"); - -var dup159 = match("MESSAGE#332:00017:15/1_1", "nwparser.p0", "ESP %{p0}"); - -var dup160 = match("MESSAGE#354:00018:11/0", "nwparser.payload", "%{} %{p0}"); - -var dup161 = match("MESSAGE#356:00018:32/0_0", "nwparser.payload", "Source%{p0}"); - -var dup162 = match("MESSAGE#356:00018:32/0_1", "nwparser.payload", "Destination%{p0}"); - -var dup163 = match("MESSAGE#356:00018:32/2_0", "nwparser.p0", "from %{p0}"); - -var dup164 = match("MESSAGE#356:00018:32/3", "nwparser.p0", "policy ID %{policy_id->} by admin %{administrator->} via NSRP Peer . (%{fld1})"); - -var dup165 = match("MESSAGE#375:00019:01/0", "nwparser.payload", "Attempt to enable %{p0}"); - -var dup166 = match("MESSAGE#375:00019:01/1_0", "nwparser.p0", "traffic logging via syslog %{p0}"); - -var dup167 = match("MESSAGE#375:00019:01/1_1", "nwparser.p0", "syslog %{p0}"); - -var dup168 = match("MESSAGE#378:00019:04/0", "nwparser.payload", "Syslog %{p0}"); - -var dup169 = match("MESSAGE#378:00019:04/1_0", "nwparser.p0", "host %{p0}"); - -var dup170 = match("MESSAGE#378:00019:04/3_1", "nwparser.p0", "domain name %{p0}"); - -var dup171 = match("MESSAGE#378:00019:04/4", "nwparser.p0", "has been changed to %{fld2}"); - -var dup172 = match("MESSAGE#380:00019:06/1_0", "nwparser.p0", "security facility %{p0}"); - -var dup173 = match("MESSAGE#380:00019:06/1_1", "nwparser.p0", "facility %{p0}"); - -var dup174 = match("MESSAGE#380:00019:06/3_0", "nwparser.p0", "local0%{}"); - -var dup175 = match("MESSAGE#380:00019:06/3_1", "nwparser.p0", "local1%{}"); - -var dup176 = match("MESSAGE#380:00019:06/3_2", "nwparser.p0", "local2%{}"); - -var dup177 = match("MESSAGE#380:00019:06/3_3", "nwparser.p0", "local3%{}"); - -var dup178 = match("MESSAGE#380:00019:06/3_4", "nwparser.p0", "local4%{}"); - -var dup179 = match("MESSAGE#380:00019:06/3_5", "nwparser.p0", "local5%{}"); - -var dup180 = match("MESSAGE#380:00019:06/3_6", "nwparser.p0", "local6%{}"); - -var dup181 = match("MESSAGE#380:00019:06/3_7", "nwparser.p0", "local7%{}"); - -var dup182 = match("MESSAGE#380:00019:06/3_8", "nwparser.p0", "auth/sec%{}"); - -var dup183 = match("MESSAGE#384:00019:10/0", "nwparser.payload", "%{fld2->} %{p0}"); - -var dup184 = setc("eventcategory","1603020000"); - -var dup185 = setc("eventcategory","1803000000"); - -var dup186 = match("MESSAGE#405:00022/0", "nwparser.payload", "All %{p0}"); - -var dup187 = setc("eventcategory","1603010000"); - -var dup188 = setc("eventcategory","1603100000"); - -var dup189 = match("MESSAGE#414:00022:09/1_0", "nwparser.p0", "primary %{p0}"); - -var dup190 = match("MESSAGE#414:00022:09/1_1", "nwparser.p0", "secondary %{p0}"); - -var dup191 = match("MESSAGE#414:00022:09/3_0", "nwparser.p0", "t %{p0}"); - -var dup192 = match("MESSAGE#414:00022:09/3_1", "nwparser.p0", "w %{p0}"); - -var dup193 = match("MESSAGE#423:00024/1", "nwparser.p0", "server %{p0}"); - -var dup194 = match("MESSAGE#426:00024:03/1_0", "nwparser.p0", "has %{p0}"); - -var dup195 = match("MESSAGE#434:00026:01/0", "nwparser.payload", "SCS%{p0}"); - -var dup196 = match("MESSAGE#434:00026:01/3_0", "nwparser.p0", "bound to %{p0}"); - -var dup197 = match("MESSAGE#434:00026:01/3_1", "nwparser.p0", "unbound from %{p0}"); - -var dup198 = setc("eventcategory","1801030000"); - -var dup199 = setc("eventcategory","1302010200"); - -var dup200 = match("MESSAGE#441:00026:08/1_1", "nwparser.p0", "PKA RSA %{p0}"); - -var dup201 = match("MESSAGE#443:00026:10/3_1", "nwparser.p0", "unbind %{p0}"); - -var dup202 = match("MESSAGE#443:00026:10/4", "nwparser.p0", "PKA key %{p0}"); - -var dup203 = setc("eventcategory","1304000000"); - -var dup204 = match("MESSAGE#446:00027/0", "nwparser.payload", "Multiple login failures %{p0}"); - -var dup205 = match("MESSAGE#446:00027/1_0", "nwparser.p0", "occurred for %{p0}"); - -var dup206 = setc("eventcategory","1401030000"); - -var dup207 = match("MESSAGE#451:00027:05/5_0", "nwparser.p0", "aborted%{}"); - -var dup208 = match("MESSAGE#451:00027:05/5_1", "nwparser.p0", "performed%{}"); - -var dup209 = setc("eventcategory","1605020000"); - -var dup210 = match("MESSAGE#466:00029:03/0", "nwparser.payload", "IP pool of DHCP server on %{p0}"); - -var dup211 = setc("ec_subject","Certificate"); - -var dup212 = match("MESSAGE#492:00030:17/1_0", "nwparser.p0", "certificate %{p0}"); - -var dup213 = match("MESSAGE#492:00030:17/1_1", "nwparser.p0", "CRL %{p0}"); - -var dup214 = match("MESSAGE#493:00030:40/1_0", "nwparser.p0", "auto %{p0}"); - -var dup215 = match("MESSAGE#508:00030:55/1_0", "nwparser.p0", "RSA %{p0}"); - -var dup216 = match("MESSAGE#508:00030:55/1_1", "nwparser.p0", "DSA %{p0}"); - -var dup217 = match("MESSAGE#508:00030:55/2", "nwparser.p0", "key pair.%{}"); - -var dup218 = setc("ec_subject","CryptoKey"); - -var dup219 = setc("ec_subject","Configuration"); - -var dup220 = setc("ec_activity","Request"); - -var dup221 = match("MESSAGE#539:00030:86/0", "nwparser.payload", "FIPS test for %{p0}"); - -var dup222 = match("MESSAGE#539:00030:86/1_0", "nwparser.p0", "ECDSA %{p0}"); - -var dup223 = setc("eventcategory","1612000000"); - -var dup224 = match("MESSAGE#543:00031:02/1_0", "nwparser.p0", "yes %{p0}"); - -var dup225 = match("MESSAGE#543:00031:02/1_1", "nwparser.p0", "no %{p0}"); - -var dup226 = match("MESSAGE#545:00031:04/1_1", "nwparser.p0", "location %{p0}"); - -var dup227 = match("MESSAGE#548:00031:05/2", "nwparser.p0", "%{} %{interface}"); - -var dup228 = match("MESSAGE#549:00031:06/0", "nwparser.payload", "arp re%{p0}"); - -var dup229 = match("MESSAGE#549:00031:06/1_1", "nwparser.p0", "q %{p0}"); - -var dup230 = match("MESSAGE#549:00031:06/1_2", "nwparser.p0", "ply %{p0}"); - -var dup231 = match("MESSAGE#549:00031:06/9_0", "nwparser.p0", "%{interface->} (%{fld1})"); - -var dup232 = setc("eventcategory","1201000000"); - -var dup233 = match("MESSAGE#561:00033/0_0", "nwparser.payload", "Global PRO %{p0}"); - -var dup234 = match("MESSAGE#561:00033/0_1", "nwparser.payload", "%{fld3->} %{p0}"); - -var dup235 = match("MESSAGE#569:00033:08/0", "nwparser.payload", "NACN Policy Manager %{p0}"); - -var dup236 = match("MESSAGE#569:00033:08/1_0", "nwparser.p0", "1 %{p0}"); - -var dup237 = match("MESSAGE#569:00033:08/1_1", "nwparser.p0", "2 %{p0}"); - -var dup238 = match("MESSAGE#571:00033:10/3_1", "nwparser.p0", "unset %{p0}"); - -var dup239 = match("MESSAGE#581:00033:21/0", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var dup240 = setc("eventcategory","1401000000"); - -var dup241 = match("MESSAGE#586:00034:01/2_1", "nwparser.p0", "SSH %{p0}"); - -var dup242 = match("MESSAGE#588:00034:03/0_0", "nwparser.payload", "SCS: NetScreen %{p0}"); - -var dup243 = match("MESSAGE#588:00034:03/0_1", "nwparser.payload", "NetScreen %{p0}"); - -var dup244 = match("MESSAGE#595:00034:10/0", "nwparser.payload", "S%{p0}"); - -var dup245 = match("MESSAGE#595:00034:10/1_0", "nwparser.p0", "CS: SSH%{p0}"); - -var dup246 = match("MESSAGE#595:00034:10/1_1", "nwparser.p0", "SH%{p0}"); - -var dup247 = match("MESSAGE#596:00034:12/3_0", "nwparser.p0", "the root system %{p0}"); - -var dup248 = match("MESSAGE#596:00034:12/3_1", "nwparser.p0", "vsys %{fld2->} %{p0}"); - -var dup249 = match("MESSAGE#599:00034:18/1_0", "nwparser.p0", "CS: SSH %{p0}"); - -var dup250 = match("MESSAGE#599:00034:18/1_1", "nwparser.p0", "SH %{p0}"); - -var dup251 = match("MESSAGE#630:00035:06/1_0", "nwparser.p0", "a %{p0}"); - -var dup252 = match("MESSAGE#630:00035:06/1_1", "nwparser.p0", "ert %{p0}"); - -var dup253 = match("MESSAGE#633:00035:09/0", "nwparser.payload", "SSL %{p0}"); - -var dup254 = setc("eventcategory","1608000000"); - -var dup255 = match("MESSAGE#644:00037:01/1_0", "nwparser.p0", "id: %{p0}"); - -var dup256 = match("MESSAGE#644:00037:01/1_1", "nwparser.p0", "ID %{p0}"); - -var dup257 = match("MESSAGE#659:00044/1_0", "nwparser.p0", "permit %{p0}"); - -var dup258 = match("MESSAGE#675:00055/0", "nwparser.payload", "IGMP %{p0}"); - -var dup259 = match("MESSAGE#677:00055:02/0", "nwparser.payload", "IGMP will %{p0}"); - -var dup260 = match("MESSAGE#677:00055:02/1_0", "nwparser.p0", "not do %{p0}"); - -var dup261 = match("MESSAGE#677:00055:02/1_1", "nwparser.p0", "do %{p0}"); - -var dup262 = match("MESSAGE#689:00059/1_1", "nwparser.p0", "shut down %{p0}"); - -var dup263 = match("MESSAGE#707:00070/0", "nwparser.payload", "NSRP: %{p0}"); - -var dup264 = match("MESSAGE#707:00070/1_0", "nwparser.p0", "Unit %{p0}"); - -var dup265 = match("MESSAGE#707:00070/1_1", "nwparser.p0", "local unit= %{p0}"); - -var dup266 = match("MESSAGE#707:00070/2", "nwparser.p0", "%{fld2->} of VSD group %{group->} %{info}"); - -var dup267 = match("MESSAGE#708:00070:01/0", "nwparser.payload", "The local device %{fld2->} in the Virtual Sec%{p0}"); - -var dup268 = match("MESSAGE#708:00070:01/1_0", "nwparser.p0", "ruity%{p0}"); - -var dup269 = match("MESSAGE#708:00070:01/1_1", "nwparser.p0", "urity%{p0}"); - -var dup270 = match("MESSAGE#713:00072:01/2", "nwparser.p0", "%{}Device group %{group->} changed state"); - -var dup271 = match("MESSAGE#717:00075/2", "nwparser.p0", "%{fld2->} of VSD group %{group->} %{info}"); - -var dup272 = setc("eventcategory","1805010000"); - -var dup273 = setc("eventcategory","1805000000"); - -var dup274 = date_time({ - dest: "starttime", - args: ["fld2"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup275 = call({ - dest: "nwparser.bytes", - fn: CALC, - args: [ - field("sbytes"), - constant("+"), - field("rbytes"), - ], -}); - -var dup276 = setc("action","Deny"); - -var dup277 = setc("disposition","Deny"); - -var dup278 = setc("direction","outgoing"); - -var dup279 = call({ - dest: "nwparser.inout", - fn: DIRCHK, - args: [ - field("$IN"), - field("saddr"), - field("daddr"), - field("sport"), - field("dport"), - ], -}); - -var dup280 = setc("direction","incoming"); - -var dup281 = setc("eventcategory","1801000000"); - -var dup282 = setf("action","disposition"); - -var dup283 = match("MESSAGE#748:00257:19/0", "nwparser.payload", "start_time=%{p0}"); - -var dup284 = match("MESSAGE#748:00257:19/1_0", "nwparser.p0", "\\\"%{fld2}\\\"%{p0}"); - -var dup285 = match("MESSAGE#748:00257:19/1_1", "nwparser.p0", " \"%{fld2}\" %{p0}"); - -var dup286 = match_copy("MESSAGE#756:00257:10/1_1", "nwparser.p0", "daddr"); - -var dup287 = match("MESSAGE#760:00259/0_0", "nwparser.payload", "Admin %{p0}"); - -var dup288 = match("MESSAGE#760:00259/0_1", "nwparser.payload", "Vsys admin %{p0}"); - -var dup289 = match("MESSAGE#760:00259/2_1", "nwparser.p0", "Telnet %{p0}"); - -var dup290 = setc("eventcategory","1401050200"); - -var dup291 = call({ - dest: "nwparser.inout", - fn: DIRCHK, - args: [ - field("$IN"), - field("daddr"), - field("saddr"), - ], -}); - -var dup292 = call({ - dest: "nwparser.inout", - fn: DIRCHK, - args: [ - field("$IN"), - field("daddr"), - field("saddr"), - field("dport"), - field("sport"), - ], -}); - -var dup293 = match("MESSAGE#777:00406/2", "nwparser.p0", "%{interface}). Occurred %{dclass_counter1->} times."); - -var dup294 = match("MESSAGE#790:00423/2", "nwparser.p0", "%{interface}).%{space}Occurred %{dclass_counter1->} times."); - -var dup295 = match("MESSAGE#793:00430/2", "nwparser.p0", "%{interface}).%{space}Occurred %{dclass_counter1->} times.%{p0}"); - -var dup296 = match("MESSAGE#795:00431/0", "nwparser.payload", "%{obj_type->} %{disposition}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var dup297 = setc("eventcategory","1204000000"); - -var dup298 = match("MESSAGE#797:00433/0", "nwparser.payload", "%{signame->} %{disposition}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var dup299 = match("MESSAGE#804:00437:01/0", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{p0}"); - -var dup300 = match("MESSAGE#817:00511:01/1_0", "nwparser.p0", "%{administrator->} (%{fld1})"); - -var dup301 = setc("eventcategory","1801020000"); - -var dup302 = setc("disposition","failed"); - -var dup303 = match("MESSAGE#835:00515:04/2_1", "nwparser.p0", "ut %{p0}"); - -var dup304 = match("MESSAGE#835:00515:04/4_0", "nwparser.p0", "%{logon_type->} from %{saddr}:%{sport}"); - -var dup305 = match("MESSAGE#837:00515:05/1_0", "nwparser.p0", "user %{p0}"); - -var dup306 = match("MESSAGE#837:00515:05/5_0", "nwparser.p0", "the %{logon_type}"); - -var dup307 = match("MESSAGE#869:00519:01/1_0", "nwparser.p0", "WebAuth user %{p0}"); - -var dup308 = match("MESSAGE#876:00520:02/1_1", "nwparser.p0", "backup1 %{p0}"); - -var dup309 = match("MESSAGE#876:00520:02/1_2", "nwparser.p0", "backup2 %{p0}"); - -var dup310 = match("MESSAGE#890:00524:13/1_0", "nwparser.p0", ",%{p0}"); - -var dup311 = match("MESSAGE#901:00527/1_0", "nwparser.p0", "assigned %{p0}"); - -var dup312 = match("MESSAGE#901:00527/3_0", "nwparser.p0", "assigned to %{p0}"); - -var dup313 = setc("eventcategory","1803020000"); - -var dup314 = setc("eventcategory","1613030000"); - -var dup315 = match("MESSAGE#927:00528:15/1_0", "nwparser.p0", "'%{administrator}' %{p0}"); - -var dup316 = match("MESSAGE#930:00528:18/0", "nwparser.payload", "SSH: P%{p0}"); - -var dup317 = match("MESSAGE#930:00528:18/1_0", "nwparser.p0", "KA %{p0}"); - -var dup318 = match("MESSAGE#930:00528:18/1_1", "nwparser.p0", "assword %{p0}"); - -var dup319 = match("MESSAGE#930:00528:18/3_0", "nwparser.p0", "\\'%{administrator}\\' %{p0}"); - -var dup320 = match("MESSAGE#930:00528:18/4", "nwparser.p0", "at host %{saddr}"); - -var dup321 = match("MESSAGE#932:00528:19/0", "nwparser.payload", "%{}S%{p0}"); - -var dup322 = match("MESSAGE#932:00528:19/1_0", "nwparser.p0", "CS %{p0}"); - -var dup323 = setc("event_description","Cannot connect to NSM server"); - -var dup324 = setc("eventcategory","1603040000"); - -var dup325 = match("MESSAGE#1060:00553/2", "nwparser.p0", "from server.ini file.%{}"); - -var dup326 = match("MESSAGE#1064:00553:04/1_0", "nwparser.p0", "pattern %{p0}"); - -var dup327 = match("MESSAGE#1064:00553:04/1_1", "nwparser.p0", "server.ini %{p0}"); - -var dup328 = match("MESSAGE#1068:00553:08/2", "nwparser.p0", "file.%{}"); - -var dup329 = match("MESSAGE#1087:00554:04/1_1", "nwparser.p0", "AV pattern %{p0}"); - -var dup330 = match("MESSAGE#1116:00556:14/1_0", "nwparser.p0", "added into %{p0}"); - -var dup331 = match("MESSAGE#1157:00767:11/1_0", "nwparser.p0", "loader %{p0}"); - -var dup332 = call({ - dest: "nwparser.inout", - fn: DIRCHK, - args: [ - field("$OUT"), - field("daddr"), - field("saddr"), - field("dport"), - field("sport"), - ], -}); - -var dup333 = linear_select([ - dup10, - dup11, -]); - -var dup334 = match("MESSAGE#7:00001:07", "nwparser.payload", "Policy ID=%{policy_id->} Rate=%{fld2->} exceeds threshold", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var dup335 = linear_select([ - dup13, - dup14, -]); - -var dup336 = linear_select([ - dup15, - dup16, -]); - -var dup337 = linear_select([ - dup56, - dup57, -]); - -var dup338 = linear_select([ - dup65, - dup66, -]); - -var dup339 = linear_select([ - dup68, - dup69, -]); - -var dup340 = linear_select([ - dup71, - dup72, -]); - -var dup341 = match("MESSAGE#84:00005:04", "nwparser.payload", "%{signame->} from %{saddr}/%{sport->} to %{daddr}/%{dport->} protocol %{protocol->} (%{interface})", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup61, -])); - -var dup342 = linear_select([ - dup74, - dup75, -]); - -var dup343 = linear_select([ - dup81, - dup82, -]); - -var dup344 = linear_select([ - dup24, - dup90, -]); - -var dup345 = linear_select([ - dup94, - dup95, -]); - -var dup346 = linear_select([ - dup98, - dup99, -]); - -var dup347 = linear_select([ - dup100, - dup101, - dup102, -]); - -var dup348 = linear_select([ - dup113, - dup114, -]); - -var dup349 = linear_select([ - dup111, - dup16, -]); - -var dup350 = linear_select([ - dup127, - dup107, -]); - -var dup351 = linear_select([ - dup8, - dup21, -]); - -var dup352 = linear_select([ - dup122, - dup133, -]); - -var dup353 = linear_select([ - dup142, - dup143, -]); - -var dup354 = linear_select([ - dup145, - dup21, -]); - -var dup355 = linear_select([ - dup127, - dup106, -]); - -var dup356 = linear_select([ - dup152, - dup96, -]); - -var dup357 = linear_select([ - dup154, - dup155, -]); - -var dup358 = linear_select([ - dup156, - dup157, -]); - -var dup359 = linear_select([ - dup99, - dup134, -]); - -var dup360 = linear_select([ - dup158, - dup159, -]); - -var dup361 = linear_select([ - dup161, - dup162, -]); - -var dup362 = linear_select([ - dup163, - dup103, -]); - -var dup363 = linear_select([ - dup162, - dup161, -]); - -var dup364 = linear_select([ - dup46, - dup47, -]); - -var dup365 = linear_select([ - dup166, - dup167, -]); - -var dup366 = linear_select([ - dup172, - dup173, -]); - -var dup367 = linear_select([ - dup174, - dup175, - dup176, - dup177, - dup178, - dup179, - dup180, - dup181, - dup182, -]); - -var dup368 = linear_select([ - dup49, - dup21, -]); - -var dup369 = linear_select([ - dup189, - dup190, -]); - -var dup370 = linear_select([ - dup96, - dup152, -]); - -var dup371 = linear_select([ - dup196, - dup197, -]); - -var dup372 = linear_select([ - dup24, - dup200, -]); - -var dup373 = linear_select([ - dup103, - dup163, -]); - -var dup374 = linear_select([ - dup205, - dup118, -]); - -var dup375 = match("MESSAGE#477:00030:02", "nwparser.payload", "%{change_attribute->} has been changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var dup376 = linear_select([ - dup212, - dup213, -]); - -var dup377 = linear_select([ - dup215, - dup216, -]); - -var dup378 = linear_select([ - dup222, - dup215, -]); - -var dup379 = linear_select([ - dup224, - dup225, -]); - -var dup380 = linear_select([ - dup231, - dup124, -]); - -var dup381 = linear_select([ - dup229, - dup230, -]); - -var dup382 = linear_select([ - dup233, - dup234, -]); - -var dup383 = linear_select([ - dup236, - dup237, -]); - -var dup384 = linear_select([ - dup242, - dup243, -]); - -var dup385 = linear_select([ - dup245, - dup246, -]); - -var dup386 = linear_select([ - dup247, - dup248, -]); - -var dup387 = linear_select([ - dup249, - dup250, -]); - -var dup388 = linear_select([ - dup251, - dup252, -]); - -var dup389 = linear_select([ - dup260, - dup261, -]); - -var dup390 = linear_select([ - dup264, - dup265, -]); - -var dup391 = linear_select([ - dup268, - dup269, -]); - -var dup392 = match("MESSAGE#716:00074", "nwparser.payload", "The local device %{fld2->} in the Virtual Security Device group %{group->} %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var dup393 = linear_select([ - dup284, - dup285, -]); - -var dup394 = linear_select([ - dup287, - dup288, -]); - -var dup395 = match("MESSAGE#799:00435", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times.", processor_chain([ - dup58, - dup2, - dup59, - dup4, - dup5, - dup3, - dup60, -])); - -var dup396 = match("MESSAGE#814:00442", "nwparser.payload", "%{signame->} From %{saddr->} to zone %{zone}, proto %{protocol->} (int %{interface}). Occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup4, - dup59, - dup5, - dup9, - dup2, - dup3, - dup60, -])); - -var dup397 = linear_select([ - dup300, - dup26, -]); - -var dup398 = linear_select([ - dup115, - dup303, -]); - -var dup399 = linear_select([ - dup125, - dup96, -]); - -var dup400 = linear_select([ - dup189, - dup308, - dup309, -]); - -var dup401 = linear_select([ - dup310, - dup16, -]); - -var dup402 = linear_select([ - dup317, - dup318, -]); - -var dup403 = linear_select([ - dup319, - dup315, -]); - -var dup404 = linear_select([ - dup322, - dup250, -]); - -var dup405 = linear_select([ - dup327, - dup329, -]); - -var dup406 = linear_select([ - dup330, - dup129, -]); - -var dup407 = match("MESSAGE#1196:01269:01", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup60, - dup282, -])); - -var dup408 = match("MESSAGE#1197:01269:02", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup276, - dup277, - dup60, -])); - -var dup409 = match("MESSAGE#1198:01269:03", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup60, - dup282, -])); - -var dup410 = match("MESSAGE#1203:23184", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} (%{fld3}) proto=%{protocol->} direction=%{direction->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup276, - dup277, - dup61, -])); - -var dup411 = all_match({ - processors: [ - dup263, - dup390, - dup266, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var dup412 = all_match({ - processors: [ - dup267, - dup391, - dup270, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var dup413 = all_match({ - processors: [ - dup80, - dup343, - dup293, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var dup414 = all_match({ - processors: [ - dup296, - dup343, - dup131, - ], - on_success: processor_chain([ - dup297, - dup2, - dup3, - dup9, - dup59, - dup4, - dup5, - dup61, - ]), -}); - -var dup415 = all_match({ - processors: [ - dup298, - dup343, - dup131, - ], - on_success: processor_chain([ - dup297, - dup2, - dup3, - dup9, - dup59, - dup4, - dup5, - dup61, - ]), -}); - -var hdr1 = match("HEADER#0:0001", "message", "%{hfld1}: NetScreen device_id=%{hfld2->} [No Name]system-%{hseverity}-%{messageid}(%{hfld3}): %{payload}", processor_chain([ - setc("header_id","0001"), -])); - -var hdr2 = match("HEADER#1:0003", "message", "%{hfld1}: NetScreen device_id=%{hfld2->} [%{hvsys}]system-%{hseverity}-%{messageid}(%{hfld3}): %{payload}", processor_chain([ - setc("header_id","0003"), -])); - -var hdr3 = match("HEADER#2:0004", "message", "%{hfld1}: NetScreen device_id=%{hfld2->} system-%{hseverity}-%{messageid}(%{hfld3}): %{payload}", processor_chain([ - setc("header_id","0004"), -])); - -var hdr4 = match("HEADER#3:0002/0", "message", "%{hfld1}: NetScreen device_id=%{hfld2->} %{p0}"); - -var part1 = match("HEADER#3:0002/1_0", "nwparser.p0", "[No Name]system%{p0}"); - -var part2 = match("HEADER#3:0002/1_1", "nwparser.p0", "[%{hvsys}]system%{p0}"); - -var part3 = match("HEADER#3:0002/1_2", "nwparser.p0", "system%{p0}"); - -var select1 = linear_select([ - part1, - part2, - part3, -]); - -var part4 = match("HEADER#3:0002/2", "nwparser.p0", "-%{hseverity}-%{messageid}: %{payload}"); - -var all1 = all_match({ - processors: [ - hdr4, - select1, - part4, - ], - on_success: processor_chain([ - setc("header_id","0002"), - ]), -}); - -var select2 = linear_select([ - hdr1, - hdr2, - hdr3, - all1, -]); - -var part5 = match("MESSAGE#0:00001", "nwparser.payload", "%{zone->} address %{interface->} with ip address %{hostip->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1 = msg("00001", part5); - -var part6 = match("MESSAGE#1:00001:01", "nwparser.payload", "%{zone->} address %{interface->} with domain name %{domain->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg2 = msg("00001:01", part6); - -var part7 = match("MESSAGE#2:00001:02/1_0", "nwparser.p0", "ip address %{hostip->} in zone %{p0}"); - -var select3 = linear_select([ - part7, - dup7, -]); - -var part8 = match("MESSAGE#2:00001:02/2", "nwparser.p0", "%{zone->} has been %{disposition}"); - -var all2 = all_match({ - processors: [ - dup6, - select3, - part8, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg3 = msg("00001:02", all2); - -var part9 = match("MESSAGE#3:00001:03", "nwparser.payload", "arp entry %{hostip->} interface changed!", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg4 = msg("00001:03", part9); - -var part10 = match("MESSAGE#4:00001:04/1_0", "nwparser.p0", "IP address %{hostip->} in zone %{p0}"); - -var select4 = linear_select([ - part10, - dup7, -]); - -var part11 = match("MESSAGE#4:00001:04/2", "nwparser.p0", "%{zone->} has been %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} session%{p0}"); - -var part12 = match("MESSAGE#4:00001:04/3_1", "nwparser.p0", ".%{fld1}"); - -var select5 = linear_select([ - dup8, - part12, -]); - -var all3 = all_match({ - processors: [ - dup6, - select4, - part11, - select5, - ], - on_success: processor_chain([ - dup1, - dup9, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg5 = msg("00001:04", all3); - -var part13 = match("MESSAGE#5:00001:05/0", "nwparser.payload", "%{fld2}: Address %{group_object->} for ip address %{hostip->} in zone %{zone->} has been %{disposition->} from host %{saddr->} session %{p0}"); - -var all4 = all_match({ - processors: [ - part13, - dup333, - ], - on_success: processor_chain([ - dup1, - dup9, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg6 = msg("00001:05", all4); - -var part14 = match("MESSAGE#6:00001:06", "nwparser.payload", "Address group %{group_object->} %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg7 = msg("00001:06", part14); - -var msg8 = msg("00001:07", dup334); - -var part15 = match("MESSAGE#8:00001:08/2", "nwparser.p0", "for IP address %{hostip}/%{mask->} in zone %{zone->} has been %{disposition->} by %{p0}"); - -var part16 = match("MESSAGE#8:00001:08/4", "nwparser.p0", "%{} %{username}via NSRP Peer session. (%{fld1})"); - -var all5 = all_match({ - processors: [ - dup12, - dup335, - part15, - dup336, - part16, - ], - on_success: processor_chain([ - dup1, - dup9, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg9 = msg("00001:08", all5); - -var part17 = match("MESSAGE#9:00001:09/2", "nwparser.p0", "for IP address %{hostip}/%{mask->} in zone %{zone->} has been %{disposition->} by %{username->} via %{logon_type->} from host %{saddr}:%{sport->} session. (%{fld1})"); - -var all6 = all_match({ - processors: [ - dup12, - dup335, - part17, - ], - on_success: processor_chain([ - dup1, - dup9, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg10 = msg("00001:09", all6); - -var select6 = linear_select([ - msg1, - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, -]); - -var part18 = match("MESSAGE#10:00002:03", "nwparser.payload", "Admin user %{administrator->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg11 = msg("00002:03", part18); - -var part19 = match("MESSAGE#11:00002:04", "nwparser.payload", "E-mail address %{user_address->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg12 = msg("00002:04", part19); - -var part20 = match("MESSAGE#12:00002:05", "nwparser.payload", "E-mail notification has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg13 = msg("00002:05", part20); - -var part21 = match("MESSAGE#13:00002:06", "nwparser.payload", "Inclusion of traffic logs with e-mail notification of event alarms has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg14 = msg("00002:06", part21); - -var part22 = match("MESSAGE#14:00002:07", "nwparser.payload", "LCD display has been %{action->} and the LCD control keys have been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg15 = msg("00002:07", part22); - -var part23 = match("MESSAGE#15:00002:55", "nwparser.payload", "HTTP component blocking for %{fld2->} is %{disposition->} on zone %{zone->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup4, - dup5, - dup9, -])); - -var msg16 = msg("00002:55", part23); - -var part24 = match("MESSAGE#16:00002:08", "nwparser.payload", "LCD display has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg17 = msg("00002:08", part24); - -var part25 = match("MESSAGE#17:00002:09", "nwparser.payload", "LCD control keys have been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg18 = msg("00002:09", part25); - -var part26 = match("MESSAGE#18:00002:10", "nwparser.payload", "Mail server %{hostip->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg19 = msg("00002:10", part26); - -var part27 = match("MESSAGE#19:00002:11", "nwparser.payload", "Management restriction for %{hostip->} %{fld2->} has been %{disposition}", processor_chain([ - dup17, - dup2, - dup3, - dup4, - dup5, -])); - -var msg20 = msg("00002:11", part27); - -var part28 = match("MESSAGE#20:00002:12", "nwparser.payload", "%{change_attribute->} has been restored from %{change_old->} to default port %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg21 = msg("00002:12", part28); - -var part29 = match("MESSAGE#21:00002:15", "nwparser.payload", "System configuration has been %{disposition}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg22 = msg("00002:15", part29); - -var msg23 = msg("00002:17", dup334); - -var part30 = match("MESSAGE#23:00002:18/0", "nwparser.payload", "Unexpected error from e%{p0}"); - -var part31 = match("MESSAGE#23:00002:18/1_0", "nwparser.p0", "-mail %{p0}"); - -var part32 = match("MESSAGE#23:00002:18/1_1", "nwparser.p0", "mail %{p0}"); - -var select7 = linear_select([ - part31, - part32, -]); - -var part33 = match("MESSAGE#23:00002:18/2", "nwparser.p0", "server(%{fld2}):"); - -var all7 = all_match({ - processors: [ - part30, - select7, - part33, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg24 = msg("00002:18", all7); - -var part34 = match("MESSAGE#24:00002:19", "nwparser.payload", "Web Admin %{change_attribute->} value has been changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg25 = msg("00002:19", part34); - -var part35 = match("MESSAGE#25:00002:20/0", "nwparser.payload", "Root admin password restriction of minimum %{fld2->} characters has been %{disposition->} by admin %{administrator->} %{p0}"); - -var part36 = match("MESSAGE#25:00002:20/1_0", "nwparser.p0", "from Console %{}"); - -var select8 = linear_select([ - part36, - dup20, - dup21, -]); - -var all8 = all_match({ - processors: [ - part35, - select8, - ], - on_success: processor_chain([ - dup22, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg26 = msg("00002:20", all8); - -var part37 = match("MESSAGE#26:00002:21/0_0", "nwparser.payload", "Root admin %{p0}"); - -var part38 = match("MESSAGE#26:00002:21/0_1", "nwparser.payload", "%{fld2->} admin %{p0}"); - -var select9 = linear_select([ - part37, - part38, -]); - -var select10 = linear_select([ - dup24, - dup25, -]); - -var part39 = match("MESSAGE#26:00002:21/3", "nwparser.p0", "has been changed by admin %{administrator}"); - -var all9 = all_match({ - processors: [ - select9, - dup23, - select10, - part39, - ], - on_success: processor_chain([ - dup22, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg27 = msg("00002:21", all9); - -var part40 = match("MESSAGE#27:00002:22/0", "nwparser.payload", "%{change_attribute->} from %{protocol->} before administrative session disconnects has been changed from %{change_old->} to %{change_new->} by admin %{p0}"); - -var part41 = match("MESSAGE#27:00002:22/1_0", "nwparser.p0", "%{administrator->} from Console"); - -var part42 = match("MESSAGE#27:00002:22/1_1", "nwparser.p0", "%{administrator->} from host %{saddr}"); - -var select11 = linear_select([ - part41, - part42, - dup26, -]); - -var all10 = all_match({ - processors: [ - part40, - select11, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg28 = msg("00002:22", all10); - -var part43 = match("MESSAGE#28:00002:23/0", "nwparser.payload", "Root admin access restriction through console only has been %{disposition->} by admin %{administrator->} %{p0}"); - -var part44 = match("MESSAGE#28:00002:23/1_1", "nwparser.p0", "from Console%{}"); - -var select12 = linear_select([ - dup20, - part44, - dup21, -]); - -var all11 = all_match({ - processors: [ - part43, - select12, - ], - on_success: processor_chain([ - dup22, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg29 = msg("00002:23", all11); - -var part45 = match("MESSAGE#29:00002:24/0", "nwparser.payload", "Admin access restriction of %{protocol->} administration through tunnel only has been %{disposition->} by admin %{administrator->} from %{p0}"); - -var part46 = match("MESSAGE#29:00002:24/1_0", "nwparser.p0", "host %{saddr}"); - -var part47 = match("MESSAGE#29:00002:24/1_1", "nwparser.p0", "Console%{}"); - -var select13 = linear_select([ - part46, - part47, -]); - -var all12 = all_match({ - processors: [ - part45, - select13, - ], - on_success: processor_chain([ - dup22, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg30 = msg("00002:24", all12); - -var part48 = match("MESSAGE#30:00002:25", "nwparser.payload", "Admin AUTH: Local instance of an %{change_attribute->} has been changed from %{change_old->} to %{change_new}", processor_chain([ - setc("eventcategory","1402000000"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg31 = msg("00002:25", part48); - -var part49 = match("MESSAGE#31:00002:26", "nwparser.payload", "Cannot connect to e-mail server %{hostip}.", processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, -])); - -var msg32 = msg("00002:26", part49); - -var part50 = match("MESSAGE#32:00002:27", "nwparser.payload", "Mail server is not configured.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg33 = msg("00002:27", part50); - -var part51 = match("MESSAGE#33:00002:28", "nwparser.payload", "Mail recipients were not configured.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg34 = msg("00002:28", part51); - -var part52 = match("MESSAGE#34:00002:29", "nwparser.payload", "Single use password restriction for read-write administrators has been %{disposition->} by admin %{administrator}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg35 = msg("00002:29", part52); - -var part53 = match("MESSAGE#35:00002:30", "nwparser.payload", "Admin user \"%{administrator}\" logged in for %{logon_type}(%{network_service}) management (port %{network_port}) from %{saddr}:%{sport}", processor_chain([ - dup28, - dup29, - dup30, - dup31, - dup32, - dup2, - dup3, - dup4, - dup5, -])); - -var msg36 = msg("00002:30", part53); - -var part54 = match("MESSAGE#36:00002:41", "nwparser.payload", "Admin user \"%{administrator}\" logged out for %{logon_type}(%{network_service}) management (port %{network_port}) from %{saddr}:%{sport}", processor_chain([ - dup33, - dup29, - dup34, - dup2, - dup3, - dup4, - dup5, -])); - -var msg37 = msg("00002:41", part54); - -var part55 = match("MESSAGE#37:00002:31", "nwparser.payload", "Admin user \"%{administrator}\" login attempt for %{logon_type->} %{space->} (%{network_service}) management (port %{network_port}) from %{saddr}:%{sport->} %{disposition}", processor_chain([ - dup35, - dup29, - dup30, - dup31, - dup2, - dup3, - dup4, - dup5, -])); - -var msg38 = msg("00002:31", part55); - -var part56 = match("MESSAGE#38:00002:32/0_0", "nwparser.payload", "E-mail notification %{p0}"); - -var part57 = match("MESSAGE#38:00002:32/0_1", "nwparser.payload", "Transparent virutal %{p0}"); - -var select14 = linear_select([ - part56, - part57, -]); - -var part58 = match("MESSAGE#38:00002:32/1", "nwparser.p0", "wire mode has been %{disposition}"); - -var all13 = all_match({ - processors: [ - select14, - part58, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg39 = msg("00002:32", all13); - -var part59 = match("MESSAGE#39:00002:35", "nwparser.payload", "Malicious URL %{url->} has been %{disposition->} for zone %{zone}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg40 = msg("00002:35", part59); - -var part60 = match("MESSAGE#40:00002:36/0", "nwparser.payload", "Bypass%{p0}"); - -var part61 = match("MESSAGE#40:00002:36/1_0", "nwparser.p0", "-others-IPSec %{p0}"); - -var part62 = match("MESSAGE#40:00002:36/1_1", "nwparser.p0", " non-IP traffic %{p0}"); - -var select15 = linear_select([ - part61, - part62, -]); - -var part63 = match("MESSAGE#40:00002:36/2", "nwparser.p0", "option has been %{disposition}"); - -var all14 = all_match({ - processors: [ - part60, - select15, - part63, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg41 = msg("00002:36", all14); - -var part64 = match("MESSAGE#41:00002:37/0", "nwparser.payload", "Logging of %{p0}"); - -var part65 = match("MESSAGE#41:00002:37/1_0", "nwparser.p0", "dropped %{p0}"); - -var part66 = match("MESSAGE#41:00002:37/1_1", "nwparser.p0", "IKE %{p0}"); - -var part67 = match("MESSAGE#41:00002:37/1_2", "nwparser.p0", "SNMP %{p0}"); - -var part68 = match("MESSAGE#41:00002:37/1_3", "nwparser.p0", "ICMP %{p0}"); - -var select16 = linear_select([ - part65, - part66, - part67, - part68, -]); - -var part69 = match("MESSAGE#41:00002:37/2", "nwparser.p0", "traffic to self has been %{disposition}"); - -var all15 = all_match({ - processors: [ - part64, - select16, - part69, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg42 = msg("00002:37", all15); - -var part70 = match("MESSAGE#42:00002:38/0", "nwparser.payload", "Logging of dropped traffic to self (excluding multicast) has been %{p0}"); - -var part71 = match("MESSAGE#42:00002:38/1_0", "nwparser.p0", "%{disposition->} on %{zone}"); - -var select17 = linear_select([ - part71, - dup36, -]); - -var all16 = all_match({ - processors: [ - part70, - select17, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg43 = msg("00002:38", all16); - -var part72 = match("MESSAGE#43:00002:39", "nwparser.payload", "Traffic shaping is %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg44 = msg("00002:39", part72); - -var part73 = match("MESSAGE#44:00002:40", "nwparser.payload", "Admin account created for '%{username}' by %{administrator->} via %{logon_type->} from host %{saddr->} (%{fld1})", processor_chain([ - dup37, - dup29, - setc("ec_activity","Create"), - dup38, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg45 = msg("00002:40", part73); - -var part74 = match("MESSAGE#45:00002:44", "nwparser.payload", "ADMIN AUTH: Privilege requested for unknown user %{username}. Possible HA syncronization problem.", processor_chain([ - dup35, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg46 = msg("00002:44", part74); - -var part75 = match("MESSAGE#46:00002:42/0", "nwparser.payload", "%{change_attribute->} for account '%{change_old}' has been %{disposition->} to '%{change_new}' %{p0}"); - -var part76 = match("MESSAGE#46:00002:42/1_0", "nwparser.p0", "by %{administrator->} via %{p0}"); - -var select18 = linear_select([ - part76, - dup40, -]); - -var part77 = match("MESSAGE#46:00002:42/2", "nwparser.p0", "%{logon_type->} from host %{p0}"); - -var part78 = match("MESSAGE#46:00002:42/3_0", "nwparser.p0", "%{saddr->} to %{daddr}:%{dport->} (%{p0}"); - -var part79 = match("MESSAGE#46:00002:42/3_1", "nwparser.p0", "%{saddr}:%{sport->} (%{p0}"); - -var select19 = linear_select([ - part78, - part79, -]); - -var all17 = all_match({ - processors: [ - part75, - select18, - part77, - select19, - dup41, - ], - on_success: processor_chain([ - dup42, - dup43, - dup38, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg47 = msg("00002:42", all17); - -var part80 = match("MESSAGE#47:00002:43/0", "nwparser.payload", "Admin account %{disposition->} for %{p0}"); - -var part81 = match("MESSAGE#47:00002:43/1_0", "nwparser.p0", "'%{username}'%{p0}"); - -var part82 = match("MESSAGE#47:00002:43/1_1", "nwparser.p0", "\"%{username}\"%{p0}"); - -var select20 = linear_select([ - part81, - part82, -]); - -var part83 = match("MESSAGE#47:00002:43/2", "nwparser.p0", "%{}by %{administrator->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})"); - -var all18 = all_match({ - processors: [ - part80, - select20, - part83, - ], - on_success: processor_chain([ - dup42, - dup29, - dup43, - dup38, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg48 = msg("00002:43", all18); - -var part84 = match("MESSAGE#48:00002:50", "nwparser.payload", "Admin account %{disposition->} for \"%{username}\" by %{administrator->} via %{logon_type->} from host %{saddr}:%{sport->} (%{fld1})", processor_chain([ - dup42, - dup29, - dup43, - dup38, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg49 = msg("00002:50", part84); - -var part85 = match("MESSAGE#49:00002:51", "nwparser.payload", "Admin account %{disposition->} for \"%{username}\" by %{administrator->} %{fld2->} via %{logon_type->} (%{fld1})", processor_chain([ - dup42, - dup29, - dup43, - dup38, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg50 = msg("00002:51", part85); - -var part86 = match("MESSAGE#50:00002:45", "nwparser.payload", "Extraneous exit is issued by %{username->} via %{logon_type->} from host %{saddr}:%{sport->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg51 = msg("00002:45", part86); - -var part87 = match("MESSAGE#51:00002:47/0_0", "nwparser.payload", "Ping of Death attack protection %{p0}"); - -var part88 = match("MESSAGE#51:00002:47/0_1", "nwparser.payload", "Src Route IP option filtering %{p0}"); - -var part89 = match("MESSAGE#51:00002:47/0_2", "nwparser.payload", "Teardrop attack protection %{p0}"); - -var part90 = match("MESSAGE#51:00002:47/0_3", "nwparser.payload", "Land attack protection %{p0}"); - -var part91 = match("MESSAGE#51:00002:47/0_4", "nwparser.payload", "SYN flood protection %{p0}"); - -var select21 = linear_select([ - part87, - part88, - part89, - part90, - part91, -]); - -var part92 = match("MESSAGE#51:00002:47/1", "nwparser.p0", "is %{disposition->} on zone %{zone->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{fld1})"); - -var all19 = all_match({ - processors: [ - select21, - part92, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg52 = msg("00002:47", all19); - -var part93 = match("MESSAGE#52:00002:48/0", "nwparser.payload", "Dropping pkts if not %{p0}"); - -var part94 = match("MESSAGE#52:00002:48/1_0", "nwparser.p0", "exactly same with incoming if %{p0}"); - -var part95 = match("MESSAGE#52:00002:48/1_1", "nwparser.p0", "in route table %{p0}"); - -var select22 = linear_select([ - part94, - part95, -]); - -var part96 = match("MESSAGE#52:00002:48/2", "nwparser.p0", "(IP spoof protection) is %{disposition->} on zone %{zone->} by %{username->} via %{p0}"); - -var part97 = match("MESSAGE#52:00002:48/3_0", "nwparser.p0", "NSRP Peer. (%{p0}"); - -var select23 = linear_select([ - part97, - dup45, -]); - -var all20 = all_match({ - processors: [ - part93, - select22, - part96, - select23, - dup41, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg53 = msg("00002:48", all20); - -var part98 = match("MESSAGE#53:00002:52/0", "nwparser.payload", "%{signame->} %{p0}"); - -var part99 = match("MESSAGE#53:00002:52/1_0", "nwparser.p0", "protection%{p0}"); - -var part100 = match("MESSAGE#53:00002:52/1_1", "nwparser.p0", "limiting%{p0}"); - -var part101 = match("MESSAGE#53:00002:52/1_2", "nwparser.p0", "detection%{p0}"); - -var part102 = match("MESSAGE#53:00002:52/1_3", "nwparser.p0", "filtering %{p0}"); - -var select24 = linear_select([ - part99, - part100, - part101, - part102, -]); - -var part103 = match("MESSAGE#53:00002:52/2", "nwparser.p0", "%{}is %{disposition->} on zone %{zone->} by %{p0}"); - -var part104 = match("MESSAGE#53:00002:52/3_1", "nwparser.p0", "admin via %{p0}"); - -var select25 = linear_select([ - dup46, - part104, - dup47, -]); - -var select26 = linear_select([ - dup48, - dup45, -]); - -var all21 = all_match({ - processors: [ - part98, - select24, - part103, - select25, - select26, - dup41, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg54 = msg("00002:52", all21); - -var part105 = match("MESSAGE#54:00002:53", "nwparser.payload", "Admin password for account \"%{username}\" has been %{disposition->} by %{administrator->} via %{logon_type->} (%{fld1})", processor_chain([ - dup42, - dup43, - dup38, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg55 = msg("00002:53", part105); - -var part106 = match("MESSAGE#55:00002:54/0", "nwparser.payload", "Traffic shaping clearing DSCP selector is turned O%{p0}"); - -var part107 = match("MESSAGE#55:00002:54/1_0", "nwparser.p0", "FF%{p0}"); - -var part108 = match("MESSAGE#55:00002:54/1_1", "nwparser.p0", "N%{p0}"); - -var select27 = linear_select([ - part107, - part108, -]); - -var all22 = all_match({ - processors: [ - part106, - select27, - dup49, - ], - on_success: processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup4, - dup5, - dup9, - ]), -}); - -var msg56 = msg("00002:54", all22); - -var part109 = match("MESSAGE#56:00002/0", "nwparser.payload", "%{change_attribute->} %{p0}"); - -var part110 = match("MESSAGE#56:00002/1_0", "nwparser.p0", "has been changed%{p0}"); - -var select28 = linear_select([ - part110, - dup52, -]); - -var part111 = match("MESSAGE#56:00002/2", "nwparser.p0", "%{}from %{change_old->} to %{change_new}"); - -var all23 = all_match({ - processors: [ - part109, - select28, - part111, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg57 = msg("00002", all23); - -var part112 = match("MESSAGE#1215:00002:56", "nwparser.payload", "Admin user \"%{administrator}\" login attempt for %{logon_type}(%{network_service}) management (port %{network_port}) from %{saddr}:%{sport->} failed. (%{fld1})", processor_chain([ - dup53, - dup9, - dup2, - dup3, - dup4, - dup5, -])); - -var msg58 = msg("00002:56", part112); - -var select29 = linear_select([ - msg11, - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, - msg18, - msg19, - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, - msg26, - msg27, - msg28, - msg29, - msg30, - msg31, - msg32, - msg33, - msg34, - msg35, - msg36, - msg37, - msg38, - msg39, - msg40, - msg41, - msg42, - msg43, - msg44, - msg45, - msg46, - msg47, - msg48, - msg49, - msg50, - msg51, - msg52, - msg53, - msg54, - msg55, - msg56, - msg57, - msg58, -]); - -var part113 = match("MESSAGE#57:00003", "nwparser.payload", "Multiple authentication failures have been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}", processor_chain([ - dup53, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg59 = msg("00003", part113); - -var part114 = match("MESSAGE#58:00003:01", "nwparser.payload", "Multiple authentication failures have been detected!%{}", processor_chain([ - dup53, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg60 = msg("00003:01", part114); - -var part115 = match("MESSAGE#59:00003:02", "nwparser.payload", "The console debug buffer has been %{disposition}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg61 = msg("00003:02", part115); - -var part116 = match("MESSAGE#60:00003:03", "nwparser.payload", "%{change_attribute->} changed from %{change_old->} to %{change_new}.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg62 = msg("00003:03", part116); - -var part117 = match("MESSAGE#61:00003:05/1_0", "nwparser.p0", "serial%{p0}"); - -var part118 = match("MESSAGE#61:00003:05/1_1", "nwparser.p0", "local%{p0}"); - -var select30 = linear_select([ - part117, - part118, -]); - -var part119 = match("MESSAGE#61:00003:05/2", "nwparser.p0", "%{}console has been %{disposition->} by admin %{administrator}."); - -var all24 = all_match({ - processors: [ - dup55, - select30, - part119, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg63 = msg("00003:05", all24); - -var select31 = linear_select([ - msg59, - msg60, - msg61, - msg62, - msg63, -]); - -var part120 = match("MESSAGE#62:00004", "nwparser.payload", "%{info}DNS server IP has been changed", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg64 = msg("00004", part120); - -var part121 = match("MESSAGE#63:00004:01", "nwparser.payload", "DNS cache table has been %{disposition}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg65 = msg("00004:01", part121); - -var part122 = match("MESSAGE#64:00004:02", "nwparser.payload", "Daily DNS lookup has been %{disposition}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg66 = msg("00004:02", part122); - -var part123 = match("MESSAGE#65:00004:03", "nwparser.payload", "Daily DNS lookup time has been %{disposition}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg67 = msg("00004:03", part123); - -var part124 = match("MESSAGE#66:00004:04/0", "nwparser.payload", "%{signame->} has been detected! From %{saddr->} to %{daddr->} using protocol %{protocol->} on %{p0}"); - -var part125 = match("MESSAGE#66:00004:04/2", "nwparser.p0", "%{} %{interface->} %{space}The attack occurred %{dclass_counter1->} times"); - -var all25 = all_match({ - processors: [ - part124, - dup337, - part125, - ], - on_success: processor_chain([ - dup58, - dup2, - dup4, - dup5, - dup59, - dup3, - dup60, - ]), -}); - -var msg68 = msg("00004:04", all25); - -var part126 = match("MESSAGE#67:00004:05", "nwparser.payload", "%{signame->} from %{saddr}/%{sport->} to %{daddr}/%{dport->} protocol %{protocol}", processor_chain([ - dup58, - dup2, - dup4, - dup5, - dup3, - dup61, -])); - -var msg69 = msg("00004:05", part126); - -var part127 = match("MESSAGE#68:00004:06", "nwparser.payload", "DNS lookup time has been changed to start at %{fld2}:%{fld3->} with an interval of %{fld4}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg70 = msg("00004:06", part127); - -var part128 = match("MESSAGE#69:00004:07", "nwparser.payload", "DNS cache table entries have been refreshed as result of external event.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg71 = msg("00004:07", part128); - -var part129 = match("MESSAGE#70:00004:08", "nwparser.payload", "DNS Proxy module has been %{disposition}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg72 = msg("00004:08", part129); - -var part130 = match("MESSAGE#71:00004:09", "nwparser.payload", "DNS Proxy module has more concurrent client requests than allowed.%{}", processor_chain([ - dup62, - dup2, - dup3, - dup4, - dup5, -])); - -var msg73 = msg("00004:09", part130); - -var part131 = match("MESSAGE#72:00004:10", "nwparser.payload", "DNS Proxy server select table entries exceeded maximum limit.%{}", processor_chain([ - dup62, - dup2, - dup3, - dup4, - dup5, -])); - -var msg74 = msg("00004:10", part131); - -var part132 = match("MESSAGE#73:00004:11", "nwparser.payload", "Proxy server select table added with domain %{domain}, interface %{interface}, primary-ip %{fld2}, secondary-ip %{fld3}, tertiary-ip %{fld4}, failover %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg75 = msg("00004:11", part132); - -var part133 = match("MESSAGE#74:00004:12", "nwparser.payload", "DNS Proxy server select table entry %{disposition->} with domain %{domain}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg76 = msg("00004:12", part133); - -var part134 = match("MESSAGE#75:00004:13", "nwparser.payload", "DDNS server %{domain->} returned incorrect ip %{fld2}, local-ip should be %{fld3}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg77 = msg("00004:13", part134); - -var part135 = match("MESSAGE#76:00004:14/1_0", "nwparser.p0", "automatically refreshed %{p0}"); - -var part136 = match("MESSAGE#76:00004:14/1_1", "nwparser.p0", "refreshed by HA %{p0}"); - -var select32 = linear_select([ - part135, - part136, -]); - -var all26 = all_match({ - processors: [ - dup63, - select32, - dup49, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg78 = msg("00004:14", all26); - -var part137 = match("MESSAGE#77:00004:15", "nwparser.payload", "DNS entries have been refreshed as result of DNS server address change. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg79 = msg("00004:15", part137); - -var part138 = match("MESSAGE#78:00004:16", "nwparser.payload", "DNS entries have been manually refreshed. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg80 = msg("00004:16", part138); - -var all27 = all_match({ - processors: [ - dup64, - dup338, - dup67, - ], - on_success: processor_chain([ - dup58, - dup2, - dup4, - dup59, - dup9, - dup5, - dup3, - dup60, - ]), -}); - -var msg81 = msg("00004:17", all27); - -var select33 = linear_select([ - msg64, - msg65, - msg66, - msg67, - msg68, - msg69, - msg70, - msg71, - msg72, - msg73, - msg74, - msg75, - msg76, - msg77, - msg78, - msg79, - msg80, - msg81, -]); - -var part139 = match("MESSAGE#80:00005", "nwparser.payload", "%{signame->} alarm threshold from the same source has been changed to %{trigger_val}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg82 = msg("00005", part139); - -var part140 = match("MESSAGE#81:00005:01", "nwparser.payload", "Logging of %{fld2->} traffic to self has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg83 = msg("00005:01", part140); - -var part141 = match("MESSAGE#82:00005:02", "nwparser.payload", "SYN flood %{fld2->} has been changed to %{fld3}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg84 = msg("00005:02", part141); - -var part142 = match("MESSAGE#83:00005:03/0", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{p0}"); - -var part143 = match("MESSAGE#83:00005:03/4", "nwparser.p0", "%{fld99}interface %{interface->} %{p0}"); - -var part144 = match("MESSAGE#83:00005:03/5_0", "nwparser.p0", "in zone %{zone}. %{p0}"); - -var select34 = linear_select([ - part144, - dup73, -]); - -var part145 = match("MESSAGE#83:00005:03/6", "nwparser.p0", "%{space}The attack occurred %{dclass_counter1->} times"); - -var all28 = all_match({ - processors: [ - part142, - dup339, - dup70, - dup340, - part143, - select34, - part145, - ], - on_success: processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup59, - dup61, - ]), -}); - -var msg85 = msg("00005:03", all28); - -var msg86 = msg("00005:04", dup341); - -var part146 = match("MESSAGE#85:00005:05", "nwparser.payload", "SYN flood drop pak in %{fld2->} mode when receiving unknown dst mac has been %{disposition->} on %{zone}.", processor_chain([ - setc("eventcategory","1001020100"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg87 = msg("00005:05", part146); - -var part147 = match("MESSAGE#86:00005:06/1", "nwparser.p0", "flood timeout has been set to %{trigger_val->} on %{zone}."); - -var all29 = all_match({ - processors: [ - dup342, - part147, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg88 = msg("00005:06", all29); - -var part148 = match("MESSAGE#87:00005:07/0", "nwparser.payload", "SYN flood %{p0}"); - -var part149 = match("MESSAGE#87:00005:07/1_0", "nwparser.p0", "alarm threshold %{p0}"); - -var part150 = match("MESSAGE#87:00005:07/1_1", "nwparser.p0", "packet queue size %{p0}"); - -var part151 = match("MESSAGE#87:00005:07/1_3", "nwparser.p0", "attack threshold %{p0}"); - -var part152 = match("MESSAGE#87:00005:07/1_4", "nwparser.p0", "same source IP threshold %{p0}"); - -var select35 = linear_select([ - part149, - part150, - dup76, - part151, - part152, -]); - -var part153 = match("MESSAGE#87:00005:07/2", "nwparser.p0", "is set to %{trigger_val}."); - -var all30 = all_match({ - processors: [ - part148, - select35, - part153, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg89 = msg("00005:07", all30); - -var part154 = match("MESSAGE#88:00005:08/1", "nwparser.p0", "flood same %{p0}"); - -var select36 = linear_select([ - dup77, - dup78, -]); - -var part155 = match("MESSAGE#88:00005:08/3", "nwparser.p0", "ip threshold has been set to %{trigger_val->} on %{zone}."); - -var all31 = all_match({ - processors: [ - dup342, - part154, - select36, - part155, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg90 = msg("00005:08", all31); - -var part156 = match("MESSAGE#89:00005:09", "nwparser.payload", "Screen service %{service->} is %{disposition->} on interface %{interface}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg91 = msg("00005:09", part156); - -var part157 = match("MESSAGE#90:00005:10", "nwparser.payload", "Screen service %{service->} is %{disposition->} on %{zone}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg92 = msg("00005:10", part157); - -var part158 = match("MESSAGE#91:00005:11/0", "nwparser.payload", "The SYN flood %{p0}"); - -var part159 = match("MESSAGE#91:00005:11/1_0", "nwparser.p0", "alarm threshold%{}"); - -var part160 = match("MESSAGE#91:00005:11/1_1", "nwparser.p0", "packet queue size%{}"); - -var part161 = match("MESSAGE#91:00005:11/1_2", "nwparser.p0", "timeout value%{}"); - -var part162 = match("MESSAGE#91:00005:11/1_3", "nwparser.p0", "attack threshold%{}"); - -var part163 = match("MESSAGE#91:00005:11/1_4", "nwparser.p0", "same source IP%{}"); - -var select37 = linear_select([ - part159, - part160, - part161, - part162, - part163, -]); - -var all32 = all_match({ - processors: [ - part158, - select37, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg93 = msg("00005:11", all32); - -var part164 = match("MESSAGE#92:00005:12", "nwparser.payload", "The SYN-ACK-ACK proxy threshold value has been set to %{trigger_val->} on %{interface}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg94 = msg("00005:12", part164); - -var part165 = match("MESSAGE#93:00005:13", "nwparser.payload", "The session limit threshold has been set to %{trigger_val->} on %{zone}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg95 = msg("00005:13", part165); - -var part166 = match("MESSAGE#94:00005:14", "nwparser.payload", "syn proxy drop packet with unknown mac!%{}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg96 = msg("00005:14", part166); - -var part167 = match("MESSAGE#95:00005:15", "nwparser.payload", "%{signame->} alarm threshold has been changed to %{trigger_val}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg97 = msg("00005:15", part167); - -var part168 = match("MESSAGE#96:00005:16", "nwparser.payload", "%{signame->} threshold has been set to %{trigger_val->} on %{zone}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg98 = msg("00005:16", part168); - -var part169 = match("MESSAGE#97:00005:17/1_0", "nwparser.p0", "destination-based %{p0}"); - -var part170 = match("MESSAGE#97:00005:17/1_1", "nwparser.p0", "source-based %{p0}"); - -var select38 = linear_select([ - part169, - part170, -]); - -var part171 = match("MESSAGE#97:00005:17/2", "nwparser.p0", "session-limit threshold has been set at %{trigger_val->} in zone %{zone}."); - -var all33 = all_match({ - processors: [ - dup79, - select38, - part171, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg99 = msg("00005:17", all33); - -var all34 = all_match({ - processors: [ - dup80, - dup343, - dup83, - ], - on_success: processor_chain([ - dup84, - dup2, - dup59, - dup9, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var msg100 = msg("00005:18", all34); - -var part172 = match("MESSAGE#99:00005:19", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.The attack occurred %{dclass_counter1->} times.", processor_chain([ - dup84, - dup2, - dup3, - dup4, - dup5, - dup59, - dup61, -])); - -var msg101 = msg("00005:19", part172); - -var part173 = match("MESSAGE#100:00005:20", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone->} int %{interface}).%{space->} Occurred %{fld2->} times. (%{fld1})\u003c\u003c%{fld6}>", processor_chain([ - dup84, - dup9, - dup2, - dup3, - dup4, - dup5, -])); - -var msg102 = msg("00005:20", part173); - -var select39 = linear_select([ - msg82, - msg83, - msg84, - msg85, - msg86, - msg87, - msg88, - msg89, - msg90, - msg91, - msg92, - msg93, - msg94, - msg95, - msg96, - msg97, - msg98, - msg99, - msg100, - msg101, - msg102, -]); - -var part174 = match("MESSAGE#101:00006", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup85, - dup2, - dup3, - dup4, - dup59, - dup5, - dup61, -])); - -var msg103 = msg("00006", part174); - -var part175 = match("MESSAGE#102:00006:01", "nwparser.payload", "Hostname set to \"%{hostname}\"", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg104 = msg("00006:01", part175); - -var part176 = match("MESSAGE#103:00006:02", "nwparser.payload", "Domain set to %{domain}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg105 = msg("00006:02", part176); - -var part177 = match("MESSAGE#104:00006:03", "nwparser.payload", "An optional ScreenOS feature has been activated via a software key.%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg106 = msg("00006:03", part177); - -var part178 = match("MESSAGE#105:00006:04/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{p0}"); - -var all35 = all_match({ - processors: [ - part178, - dup338, - dup67, - ], - on_success: processor_chain([ - dup84, - dup2, - dup59, - dup9, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var msg107 = msg("00006:04", all35); - -var all36 = all_match({ - processors: [ - dup64, - dup338, - dup67, - ], - on_success: processor_chain([ - dup84, - dup2, - dup59, - dup9, - dup3, - dup4, - dup5, - dup60, - ]), -}); - -var msg108 = msg("00006:05", all36); - -var select40 = linear_select([ - msg103, - msg104, - msg105, - msg106, - msg107, - msg108, -]); - -var part179 = match("MESSAGE#107:00007", "nwparser.payload", "HA cluster ID has been changed to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg109 = msg("00007", part179); - -var part180 = match("MESSAGE#108:00007:01", "nwparser.payload", "%{change_attribute->} of the local NetScreen device has changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg110 = msg("00007:01", part180); - -var part181 = match("MESSAGE#109:00007:02/0", "nwparser.payload", "HA state of the local device has changed to backup because a device with a %{p0}"); - -var part182 = match("MESSAGE#109:00007:02/1_0", "nwparser.p0", "higher priority has been detected%{}"); - -var part183 = match("MESSAGE#109:00007:02/1_1", "nwparser.p0", "lower MAC value has been detected%{}"); - -var select41 = linear_select([ - part182, - part183, -]); - -var all37 = all_match({ - processors: [ - part181, - select41, - ], - on_success: processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg111 = msg("00007:02", all37); - -var part184 = match("MESSAGE#110:00007:03", "nwparser.payload", "HA state of the local device has changed to init because IP tracking has failed%{}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg112 = msg("00007:03", part184); - -var select42 = linear_select([ - dup88, - dup89, -]); - -var part185 = match("MESSAGE#111:00007:04/4", "nwparser.p0", "has been changed%{}"); - -var all38 = all_match({ - processors: [ - dup87, - select42, - dup23, - dup344, - part185, - ], - on_success: processor_chain([ - dup91, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg113 = msg("00007:04", all38); - -var part186 = match("MESSAGE#112:00007:05", "nwparser.payload", "HA: Local NetScreen device has been elected backup because a master already exists%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg114 = msg("00007:05", part186); - -var part187 = match("MESSAGE#113:00007:06", "nwparser.payload", "HA: Local NetScreen device has been elected backup because its MAC value is higher than those of other devices in the cluster%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg115 = msg("00007:06", part187); - -var part188 = match("MESSAGE#114:00007:07", "nwparser.payload", "HA: Local NetScreen device has been elected backup because its priority value is higher than those of other devices in the cluster%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg116 = msg("00007:07", part188); - -var part189 = match("MESSAGE#115:00007:08", "nwparser.payload", "HA: Local device has been elected master because no other master exists%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg117 = msg("00007:08", part189); - -var part190 = match("MESSAGE#116:00007:09", "nwparser.payload", "HA: Local device priority has been changed to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg118 = msg("00007:09", part190); - -var part191 = match("MESSAGE#117:00007:10", "nwparser.payload", "HA: Previous master has promoted the local NetScreen device to master%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg119 = msg("00007:10", part191); - -var part192 = match("MESSAGE#118:00007:11/0", "nwparser.payload", "IP tracking device failover threshold has been %{p0}"); - -var select43 = linear_select([ - dup92, - dup93, -]); - -var all39 = all_match({ - processors: [ - part192, - select43, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg120 = msg("00007:11", all39); - -var part193 = match("MESSAGE#119:00007:12", "nwparser.payload", "IP tracking has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg121 = msg("00007:12", part193); - -var part194 = match("MESSAGE#120:00007:13", "nwparser.payload", "IP tracking to %{hostip->} with interval %{fld2->} threshold %{trigger_val->} weight %{fld4->} interface %{interface->} method %{fld5->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg122 = msg("00007:13", part194); - -var part195 = match("MESSAGE#121:00007:14", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr->} using protocol %{protocol->} on zone %{zone->} interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup85, - dup2, - dup3, - dup4, - dup59, - dup5, - dup60, -])); - -var msg123 = msg("00007:14", part195); - -var part196 = match("MESSAGE#122:00007:15", "nwparser.payload", "Primary HA interface has been changed to %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg124 = msg("00007:15", part196); - -var part197 = match("MESSAGE#123:00007:16", "nwparser.payload", "Reporting of HA configuration and status changes to NetScreen-Global Manager has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg125 = msg("00007:16", part197); - -var part198 = match("MESSAGE#124:00007:17", "nwparser.payload", "Tracked IP %{hostip->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg126 = msg("00007:17", part198); - -var part199 = match("MESSAGE#125:00007:18/0", "nwparser.payload", "Tracked IP %{hostip->} options have been changed from int %{fld2->} thr %{fld3->} wgt %{fld4->} inf %{fld5->} %{p0}"); - -var part200 = match("MESSAGE#125:00007:18/1_0", "nwparser.p0", "ping %{p0}"); - -var part201 = match("MESSAGE#125:00007:18/1_1", "nwparser.p0", "ARP %{p0}"); - -var select44 = linear_select([ - part200, - part201, -]); - -var part202 = match("MESSAGE#125:00007:18/2", "nwparser.p0", "to %{fld6->} %{p0}"); - -var part203 = match("MESSAGE#125:00007:18/3_0", "nwparser.p0", "ping%{}"); - -var part204 = match("MESSAGE#125:00007:18/3_1", "nwparser.p0", "ARP%{}"); - -var select45 = linear_select([ - part203, - part204, -]); - -var all40 = all_match({ - processors: [ - part199, - select44, - part202, - select45, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg127 = msg("00007:18", all40); - -var part205 = match("MESSAGE#126:00007:20", "nwparser.payload", "Change %{change_attribute->} path from %{change_old->} to %{change_new}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg128 = msg("00007:20", part205); - -var part206 = match("MESSAGE#127:00007:21/0", "nwparser.payload", "HA Slave is %{p0}"); - -var all41 = all_match({ - processors: [ - part206, - dup345, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg129 = msg("00007:21", all41); - -var part207 = match("MESSAGE#128:00007:22", "nwparser.payload", "HA change group id to %{groupid}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg130 = msg("00007:22", part207); - -var part208 = match("MESSAGE#129:00007:23", "nwparser.payload", "HA change priority to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg131 = msg("00007:23", part208); - -var part209 = match("MESSAGE#130:00007:24", "nwparser.payload", "HA change state to init%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg132 = msg("00007:24", part209); - -var part210 = match("MESSAGE#131:00007:25", "nwparser.payload", "HA: Change state to initial state.%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg133 = msg("00007:25", part210); - -var part211 = match("MESSAGE#132:00007:26/0", "nwparser.payload", "HA: Change state to slave for %{p0}"); - -var part212 = match("MESSAGE#132:00007:26/1_0", "nwparser.p0", "tracking ip failed%{}"); - -var part213 = match("MESSAGE#132:00007:26/1_1", "nwparser.p0", "linkdown%{}"); - -var select46 = linear_select([ - part212, - part213, -]); - -var all42 = all_match({ - processors: [ - part211, - select46, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg134 = msg("00007:26", all42); - -var part214 = match("MESSAGE#133:00007:27", "nwparser.payload", "HA: Change to master command issued from original master to change state%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg135 = msg("00007:27", part214); - -var part215 = match("MESSAGE#134:00007:28", "nwparser.payload", "HA: Elected master no other master%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg136 = msg("00007:28", part215); - -var part216 = match("MESSAGE#135:00007:29/0", "nwparser.payload", "HA: Elected slave %{p0}"); - -var part217 = match("MESSAGE#135:00007:29/1_0", "nwparser.p0", "lower priority%{}"); - -var part218 = match("MESSAGE#135:00007:29/1_1", "nwparser.p0", "MAC value is larger%{}"); - -var part219 = match("MESSAGE#135:00007:29/1_2", "nwparser.p0", "master already exists%{}"); - -var part220 = match("MESSAGE#135:00007:29/1_3", "nwparser.p0", "detect new master with higher priority%{}"); - -var part221 = match("MESSAGE#135:00007:29/1_4", "nwparser.p0", "detect new master with smaller MAC value%{}"); - -var select47 = linear_select([ - part217, - part218, - part219, - part220, - part221, -]); - -var all43 = all_match({ - processors: [ - part216, - select47, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg137 = msg("00007:29", all43); - -var part222 = match("MESSAGE#136:00007:30", "nwparser.payload", "HA: Promoted master command issued from original master to change state%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg138 = msg("00007:30", part222); - -var part223 = match("MESSAGE#137:00007:31/0", "nwparser.payload", "HA: ha link %{p0}"); - -var all44 = all_match({ - processors: [ - part223, - dup345, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg139 = msg("00007:31", all44); - -var part224 = match("MESSAGE#138:00007:32/0", "nwparser.payload", "NSRP %{fld2->} %{p0}"); - -var select48 = linear_select([ - dup89, - dup88, -]); - -var part225 = match("MESSAGE#138:00007:32/4", "nwparser.p0", "changed.%{}"); - -var all45 = all_match({ - processors: [ - part224, - select48, - dup23, - dup344, - part225, - ], - on_success: processor_chain([ - dup91, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg140 = msg("00007:32", all45); - -var part226 = match("MESSAGE#139:00007:33/0_0", "nwparser.payload", "NSRP: VSD %{p0}"); - -var part227 = match("MESSAGE#139:00007:33/0_1", "nwparser.payload", "Virtual Security Device group %{p0}"); - -var select49 = linear_select([ - part226, - part227, -]); - -var part228 = match("MESSAGE#139:00007:33/1", "nwparser.p0", "%{fld2->} change%{p0}"); - -var part229 = match("MESSAGE#139:00007:33/2_0", "nwparser.p0", "d %{p0}"); - -var select50 = linear_select([ - part229, - dup96, -]); - -var part230 = match("MESSAGE#139:00007:33/3", "nwparser.p0", "to %{fld3->} mode."); - -var all46 = all_match({ - processors: [ - select49, - part228, - select50, - part230, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg141 = msg("00007:33", all46); - -var part231 = match("MESSAGE#140:00007:34", "nwparser.payload", "NSRP: message %{fld2->} dropped: invalid encryption password.", processor_chain([ - dup97, - dup2, - dup3, - dup4, - dup5, -])); - -var msg142 = msg("00007:34", part231); - -var part232 = match("MESSAGE#141:00007:35", "nwparser.payload", "NSRP: nsrp interface change to %{interface}.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg143 = msg("00007:35", part232); - -var part233 = match("MESSAGE#142:00007:36", "nwparser.payload", "RTO mirror group id=%{groupid->} direction= %{direction->} local unit=%{fld3->} duplicate from unit=%{fld4}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg144 = msg("00007:36", part233); - -var part234 = match("MESSAGE#143:00007:37/0", "nwparser.payload", "RTO mirror group id=%{groupid->} direction= %{direction->} is %{p0}"); - -var all47 = all_match({ - processors: [ - part234, - dup346, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg145 = msg("00007:37", all47); - -var part235 = match("MESSAGE#144:00007:38/0", "nwparser.payload", "RTO mirror group id=%{groupid->} direction= %{direction->} peer=%{fld3->} from %{p0}"); - -var part236 = match("MESSAGE#144:00007:38/4", "nwparser.p0", "state %{p0}"); - -var part237 = match("MESSAGE#144:00007:38/5_0", "nwparser.p0", "missed heartbeat%{}"); - -var part238 = match("MESSAGE#144:00007:38/5_1", "nwparser.p0", "group detached%{}"); - -var select51 = linear_select([ - part237, - part238, -]); - -var all48 = all_match({ - processors: [ - part235, - dup347, - dup103, - dup347, - part236, - select51, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg146 = msg("00007:38", all48); - -var part239 = match("MESSAGE#145:00007:39/0", "nwparser.payload", "RTO mirror group id=%{groupid->} is %{p0}"); - -var all49 = all_match({ - processors: [ - part239, - dup346, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg147 = msg("00007:39", all49); - -var part240 = match("MESSAGE#146:00007:40", "nwparser.payload", "Remove pathname %{fld2->} (ifnum=%{fld3}) as secondary HA path", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg148 = msg("00007:40", part240); - -var part241 = match("MESSAGE#147:00007:41", "nwparser.payload", "Session sync ended by unit=%{fld2}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg149 = msg("00007:41", part241); - -var part242 = match("MESSAGE#148:00007:42", "nwparser.payload", "Set secondary HA path to %{fld2->} (ifnum=%{fld3})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg150 = msg("00007:42", part242); - -var part243 = match("MESSAGE#149:00007:43", "nwparser.payload", "VSD %{change_attribute->} changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg151 = msg("00007:43", part243); - -var part244 = match("MESSAGE#150:00007:44", "nwparser.payload", "vsd group id=%{groupid->} is %{disposition->} total number=%{fld3}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg152 = msg("00007:44", part244); - -var part245 = match("MESSAGE#151:00007:45", "nwparser.payload", "vsd group %{group->} local unit %{change_attribute->} changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg153 = msg("00007:45", part245); - -var part246 = match("MESSAGE#152:00007:46", "nwparser.payload", "%{signame->} has been detected! From %{saddr->} to %{daddr->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup85, - dup2, - dup3, - dup4, - dup59, - dup5, - dup60, -])); - -var msg154 = msg("00007:46", part246); - -var part247 = match("MESSAGE#153:00007:47", "nwparser.payload", "The HA channel changed to interface %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg155 = msg("00007:47", part247); - -var part248 = match("MESSAGE#154:00007:48", "nwparser.payload", "Message %{fld2->} was dropped because it contained an invalid encryption password.", processor_chain([ - dup97, - dup2, - dup3, - dup4, - setc("disposition","dropped"), - setc("result","Invalid encryption Password"), -])); - -var msg156 = msg("00007:48", part248); - -var part249 = match("MESSAGE#155:00007:49", "nwparser.payload", "The %{change_attribute->} of all Virtual Security Device groups changed from %{change_old->} to %{change_new}", processor_chain([ - setc("eventcategory","1604000000"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg157 = msg("00007:49", part249); - -var part250 = match("MESSAGE#156:00007:50/0", "nwparser.payload", "Device %{fld2->} %{p0}"); - -var part251 = match("MESSAGE#156:00007:50/1_0", "nwparser.p0", "has joined %{p0}"); - -var part252 = match("MESSAGE#156:00007:50/1_1", "nwparser.p0", "quit current %{p0}"); - -var select52 = linear_select([ - part251, - part252, -]); - -var part253 = match("MESSAGE#156:00007:50/2", "nwparser.p0", "NSRP cluster %{fld3}"); - -var all50 = all_match({ - processors: [ - part250, - select52, - part253, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg158 = msg("00007:50", all50); - -var part254 = match("MESSAGE#157:00007:51/0", "nwparser.payload", "Virtual Security Device group %{group->} was %{p0}"); - -var part255 = match("MESSAGE#157:00007:51/1_1", "nwparser.p0", "deleted %{p0}"); - -var select53 = linear_select([ - dup104, - part255, -]); - -var select54 = linear_select([ - dup105, - dup73, -]); - -var part256 = match("MESSAGE#157:00007:51/4", "nwparser.p0", "The total number of members in the group %{p0}"); - -var select55 = linear_select([ - dup106, - dup107, -]); - -var all51 = all_match({ - processors: [ - part254, - select53, - dup23, - select54, - part256, - select55, - dup108, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg159 = msg("00007:51", all51); - -var part257 = match("MESSAGE#158:00007:52", "nwparser.payload", "Virtual Security Device group %{group->} %{change_attribute->} changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg160 = msg("00007:52", part257); - -var part258 = match("MESSAGE#159:00007:53", "nwparser.payload", "The secondary HA path of the devices was set to interface %{interface->} with ifnum %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg161 = msg("00007:53", part258); - -var part259 = match("MESSAGE#160:00007:54", "nwparser.payload", "The %{change_attribute->} of the devices changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg162 = msg("00007:54", part259); - -var part260 = match("MESSAGE#161:00007:55", "nwparser.payload", "The interface %{interface->} with ifnum %{fld2->} was removed from the secondary HA path of the devices.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg163 = msg("00007:55", part260); - -var part261 = match("MESSAGE#162:00007:56", "nwparser.payload", "The probe that detects the status of High Availability link %{fld2->} was %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg164 = msg("00007:56", part261); - -var select56 = linear_select([ - dup109, - dup110, -]); - -var select57 = linear_select([ - dup111, - dup112, -]); - -var part262 = match("MESSAGE#163:00007:57/4", "nwparser.p0", "the probe detecting the status of High Availability link %{fld2->} was set to %{fld3}"); - -var all52 = all_match({ - processors: [ - dup55, - select56, - dup23, - select57, - part262, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg165 = msg("00007:57", all52); - -var part263 = match("MESSAGE#164:00007:58", "nwparser.payload", "A request by device %{fld2->} for session synchronization(s) was accepted.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg166 = msg("00007:58", part263); - -var part264 = match("MESSAGE#165:00007:59", "nwparser.payload", "The current session synchronization by device %{fld2->} completed.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg167 = msg("00007:59", part264); - -var part265 = match("MESSAGE#166:00007:60", "nwparser.payload", "Run Time Object mirror group %{group->} direction was set to %{direction}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg168 = msg("00007:60", part265); - -var part266 = match("MESSAGE#167:00007:61", "nwparser.payload", "Run Time Object mirror group %{group->} was set.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg169 = msg("00007:61", part266); - -var part267 = match("MESSAGE#168:00007:62", "nwparser.payload", "Run Time Object mirror group %{group->} with direction %{direction->} was unset.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg170 = msg("00007:62", part267); - -var part268 = match("MESSAGE#169:00007:63", "nwparser.payload", "RTO mirror group %{group->} was unset.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg171 = msg("00007:63", part268); - -var part269 = match("MESSAGE#170:00007:64/1", "nwparser.p0", "%{fld2->} was removed from the monitoring list %{p0}"); - -var part270 = match("MESSAGE#170:00007:64/3", "nwparser.p0", "%{fld3}"); - -var all53 = all_match({ - processors: [ - dup348, - part269, - dup349, - part270, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg172 = msg("00007:64", all53); - -var part271 = match("MESSAGE#171:00007:65/1", "nwparser.p0", "%{fld2->} with weight %{fld3->} was added%{p0}"); - -var part272 = match("MESSAGE#171:00007:65/2_0", "nwparser.p0", " to or updated on %{p0}"); - -var part273 = match("MESSAGE#171:00007:65/2_1", "nwparser.p0", "/updated to %{p0}"); - -var select58 = linear_select([ - part272, - part273, -]); - -var part274 = match("MESSAGE#171:00007:65/3", "nwparser.p0", "the monitoring list %{p0}"); - -var part275 = match("MESSAGE#171:00007:65/5", "nwparser.p0", "%{fld4}"); - -var all54 = all_match({ - processors: [ - dup348, - part271, - select58, - part274, - dup349, - part275, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg173 = msg("00007:65", all54); - -var part276 = match("MESSAGE#172:00007:66/0_0", "nwparser.payload", "The monitoring %{p0}"); - -var part277 = match("MESSAGE#172:00007:66/0_1", "nwparser.payload", "Monitoring %{p0}"); - -var select59 = linear_select([ - part276, - part277, -]); - -var part278 = match("MESSAGE#172:00007:66/1", "nwparser.p0", "threshold was modified to %{trigger_val->} o%{p0}"); - -var part279 = match("MESSAGE#172:00007:66/2_0", "nwparser.p0", "f %{p0}"); - -var select60 = linear_select([ - part279, - dup115, -]); - -var all55 = all_match({ - processors: [ - select59, - part278, - select60, - dup108, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg174 = msg("00007:66", all55); - -var part280 = match("MESSAGE#173:00007:67", "nwparser.payload", "NSRP data forwarding %{disposition}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg175 = msg("00007:67", part280); - -var part281 = match("MESSAGE#174:00007:68/0", "nwparser.payload", "NSRP b%{p0}"); - -var part282 = match("MESSAGE#174:00007:68/1_0", "nwparser.p0", "lack %{p0}"); - -var part283 = match("MESSAGE#174:00007:68/1_1", "nwparser.p0", "ack %{p0}"); - -var select61 = linear_select([ - part282, - part283, -]); - -var part284 = match("MESSAGE#174:00007:68/2", "nwparser.p0", "hole prevention %{disposition}. Master(s) of Virtual Security Device groups %{p0}"); - -var part285 = match("MESSAGE#174:00007:68/3_0", "nwparser.p0", "may not exist %{p0}"); - -var part286 = match("MESSAGE#174:00007:68/3_1", "nwparser.p0", "always exists %{p0}"); - -var select62 = linear_select([ - part285, - part286, -]); - -var all56 = all_match({ - processors: [ - part281, - select61, - part284, - select62, - dup116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg176 = msg("00007:68", all56); - -var part287 = match("MESSAGE#175:00007:69", "nwparser.payload", "NSRP Run Time Object synchronization between devices was %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg177 = msg("00007:69", part287); - -var part288 = match("MESSAGE#176:00007:70", "nwparser.payload", "The NSRP encryption key was changed.%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg178 = msg("00007:70", part288); - -var part289 = match("MESSAGE#177:00007:71", "nwparser.payload", "NSRP transparent Active-Active mode was %{disposition}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg179 = msg("00007:71", part289); - -var part290 = match("MESSAGE#178:00007:72", "nwparser.payload", "NSRP: nsrp link probe enable on %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg180 = msg("00007:72", part290); - -var select63 = linear_select([ - msg109, - msg110, - msg111, - msg112, - msg113, - msg114, - msg115, - msg116, - msg117, - msg118, - msg119, - msg120, - msg121, - msg122, - msg123, - msg124, - msg125, - msg126, - msg127, - msg128, - msg129, - msg130, - msg131, - msg132, - msg133, - msg134, - msg135, - msg136, - msg137, - msg138, - msg139, - msg140, - msg141, - msg142, - msg143, - msg144, - msg145, - msg146, - msg147, - msg148, - msg149, - msg150, - msg151, - msg152, - msg153, - msg154, - msg155, - msg156, - msg157, - msg158, - msg159, - msg160, - msg161, - msg162, - msg163, - msg164, - msg165, - msg166, - msg167, - msg168, - msg169, - msg170, - msg171, - msg172, - msg173, - msg174, - msg175, - msg176, - msg177, - msg178, - msg179, - msg180, -]); - -var part291 = match("MESSAGE#179:00008", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup59, - dup5, - dup61, -])); - -var msg181 = msg("00008", part291); - -var msg182 = msg("00008:01", dup341); - -var part292 = match("MESSAGE#181:00008:02", "nwparser.payload", "NTP settings have been changed%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg183 = msg("00008:02", part292); - -var part293 = match("MESSAGE#182:00008:03", "nwparser.payload", "The system clock has been updated through NTP%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg184 = msg("00008:03", part293); - -var part294 = match("MESSAGE#183:00008:04/0", "nwparser.payload", "System clock %{p0}"); - -var part295 = match("MESSAGE#183:00008:04/1_0", "nwparser.p0", "configurations have been%{p0}"); - -var part296 = match("MESSAGE#183:00008:04/1_1", "nwparser.p0", "was%{p0}"); - -var part297 = match("MESSAGE#183:00008:04/1_2", "nwparser.p0", "is%{p0}"); - -var select64 = linear_select([ - part295, - part296, - part297, -]); - -var part298 = match("MESSAGE#183:00008:04/2", "nwparser.p0", "%{}changed%{p0}"); - -var part299 = match("MESSAGE#183:00008:04/3_0", "nwparser.p0", " by admin %{administrator}"); - -var part300 = match("MESSAGE#183:00008:04/3_1", "nwparser.p0", " by %{username->} (%{fld1})"); - -var part301 = match("MESSAGE#183:00008:04/3_2", "nwparser.p0", " by %{username}"); - -var part302 = match("MESSAGE#183:00008:04/3_3", "nwparser.p0", " manually.%{}"); - -var part303 = match("MESSAGE#183:00008:04/3_4", "nwparser.p0", " manually%{}"); - -var select65 = linear_select([ - part299, - part300, - part301, - part302, - part303, - dup21, -]); - -var all57 = all_match({ - processors: [ - part294, - select64, - part298, - select65, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup9, - ]), -}); - -var msg185 = msg("00008:04", all57); - -var part304 = match("MESSAGE#184:00008:05", "nwparser.payload", "failed to get clock through NTP%{}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg186 = msg("00008:05", part304); - -var part305 = match("MESSAGE#185:00008:06", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup59, - dup61, -])); - -var msg187 = msg("00008:06", part305); - -var part306 = match("MESSAGE#186:00008:07", "nwparser.payload", "%{signame->} has been detected! From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup59, - dup60, -])); - -var msg188 = msg("00008:07", part306); - -var part307 = match("MESSAGE#187:00008:08", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times.", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup59, - dup60, -])); - -var msg189 = msg("00008:08", part307); - -var part308 = match("MESSAGE#188:00008:09", "nwparser.payload", "system clock is changed manually%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg190 = msg("00008:09", part308); - -var part309 = match("MESSAGE#189:00008:10/0", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, proto %{protocol}(zone %{p0}"); - -var all58 = all_match({ - processors: [ - part309, - dup338, - dup67, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup9, - dup60, - ]), -}); - -var msg191 = msg("00008:10", all58); - -var select66 = linear_select([ - msg181, - msg182, - msg183, - msg184, - msg185, - msg186, - msg187, - msg188, - msg189, - msg190, - msg191, -]); - -var part310 = match("MESSAGE#190:00009", "nwparser.payload", "802.1Q VLAN trunking for the interface %{interface->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg192 = msg("00009", part310); - -var part311 = match("MESSAGE#191:00009:01", "nwparser.payload", "802.1Q VLAN tag %{fld1->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg193 = msg("00009:01", part311); - -var part312 = match("MESSAGE#192:00009:02", "nwparser.payload", "DHCP on the interface %{interface->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg194 = msg("00009:02", part312); - -var part313 = match("MESSAGE#193:00009:03", "nwparser.payload", "%{change_attribute->} for interface %{interface->} has been changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg195 = msg("00009:03", part313); - -var part314 = match("MESSAGE#194:00009:05", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, -])); - -var msg196 = msg("00009:05", part314); - -var part315 = match("MESSAGE#195:00009:06/0_0", "nwparser.payload", "%{fld2}: The 802.1Q tag %{p0}"); - -var part316 = match("MESSAGE#195:00009:06/0_1", "nwparser.payload", "The 802.1Q tag %{p0}"); - -var select67 = linear_select([ - part315, - part316, -]); - -var select68 = linear_select([ - dup119, - dup16, -]); - -var part317 = match("MESSAGE#195:00009:06/3", "nwparser.p0", "interface %{interface->} has been %{p0}"); - -var part318 = match("MESSAGE#195:00009:06/4_1", "nwparser.p0", "changed to %{p0}"); - -var select69 = linear_select([ - dup120, - part318, -]); - -var part319 = match("MESSAGE#195:00009:06/6_0", "nwparser.p0", "%{info->} from host %{saddr}"); - -var part320 = match_copy("MESSAGE#195:00009:06/6_1", "nwparser.p0", "info"); - -var select70 = linear_select([ - part319, - part320, -]); - -var all59 = all_match({ - processors: [ - select67, - dup118, - select68, - part317, - select69, - dup23, - select70, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg197 = msg("00009:06", all59); - -var part321 = match("MESSAGE#196:00009:07/0", "nwparser.payload", "Maximum bandwidth %{fld2->} on %{p0}"); - -var part322 = match("MESSAGE#196:00009:07/2", "nwparser.p0", "%{} %{interface->} is less than t%{p0}"); - -var part323 = match("MESSAGE#196:00009:07/3_0", "nwparser.p0", "he total %{p0}"); - -var part324 = match("MESSAGE#196:00009:07/3_1", "nwparser.p0", "otal %{p0}"); - -var select71 = linear_select([ - part323, - part324, -]); - -var part325 = match("MESSAGE#196:00009:07/4", "nwparser.p0", "guaranteed bandwidth %{fld3}"); - -var all60 = all_match({ - processors: [ - part321, - dup337, - part322, - select71, - part325, - ], - on_success: processor_chain([ - dup121, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg198 = msg("00009:07", all60); - -var part326 = match("MESSAGE#197:00009:09", "nwparser.payload", "The configured bandwidth setting on the interface %{interface->} has been changed to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg199 = msg("00009:09", part326); - -var part327 = match("MESSAGE#198:00009:10/0", "nwparser.payload", "The operational mode for the interface %{interface->} has been changed to %{p0}"); - -var part328 = match("MESSAGE#198:00009:10/1_0", "nwparser.p0", "Route%{}"); - -var part329 = match("MESSAGE#198:00009:10/1_1", "nwparser.p0", "NAT%{}"); - -var select72 = linear_select([ - part328, - part329, -]); - -var all61 = all_match({ - processors: [ - part327, - select72, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg200 = msg("00009:10", all61); - -var part330 = match("MESSAGE#199:00009:11/0_0", "nwparser.payload", "%{fld1}: VLAN %{p0}"); - -var part331 = match("MESSAGE#199:00009:11/0_1", "nwparser.payload", "VLAN %{p0}"); - -var select73 = linear_select([ - part330, - part331, -]); - -var part332 = match("MESSAGE#199:00009:11/1", "nwparser.p0", "tag %{fld2->} has been %{disposition}"); - -var all62 = all_match({ - processors: [ - select73, - part332, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg201 = msg("00009:11", all62); - -var part333 = match("MESSAGE#200:00009:12", "nwparser.payload", "DHCP client has been %{disposition->} on interface %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg202 = msg("00009:12", part333); - -var part334 = match("MESSAGE#201:00009:13", "nwparser.payload", "DHCP relay agent settings on %{interface->} have been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg203 = msg("00009:13", part334); - -var part335 = match("MESSAGE#202:00009:14/0_0", "nwparser.payload", "Global-PRO has been %{p0}"); - -var part336 = match("MESSAGE#202:00009:14/0_1", "nwparser.payload", "Global PRO has been %{p0}"); - -var part337 = match("MESSAGE#202:00009:14/0_2", "nwparser.payload", "DNS proxy was %{p0}"); - -var select74 = linear_select([ - part335, - part336, - part337, -]); - -var part338 = match("MESSAGE#202:00009:14/1", "nwparser.p0", "%{disposition->} on %{p0}"); - -var select75 = linear_select([ - dup122, - dup123, -]); - -var part339 = match("MESSAGE#202:00009:14/4_0", "nwparser.p0", "%{interface->} (%{fld2})"); - -var select76 = linear_select([ - part339, - dup124, -]); - -var all63 = all_match({ - processors: [ - select74, - part338, - select75, - dup23, - select76, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg204 = msg("00009:14", all63); - -var part340 = match("MESSAGE#203:00009:15/0", "nwparser.payload", "Route between secondary IP%{p0}"); - -var part341 = match("MESSAGE#203:00009:15/1_0", "nwparser.p0", " addresses %{p0}"); - -var select77 = linear_select([ - part341, - dup125, -]); - -var all64 = all_match({ - processors: [ - part340, - select77, - dup126, - dup350, - dup128, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg205 = msg("00009:15", all64); - -var part342 = match("MESSAGE#204:00009:16/0", "nwparser.payload", "Secondary IP address %{hostip}/%{mask->} %{p0}"); - -var part343 = match("MESSAGE#204:00009:16/3_2", "nwparser.p0", "deleted from %{p0}"); - -var select78 = linear_select([ - dup129, - dup130, - part343, -]); - -var part344 = match("MESSAGE#204:00009:16/4", "nwparser.p0", "interface %{interface}."); - -var all65 = all_match({ - processors: [ - part342, - dup350, - dup23, - select78, - part344, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg206 = msg("00009:16", all65); - -var part345 = match("MESSAGE#205:00009:17/0", "nwparser.payload", "Secondary IP address %{p0}"); - -var part346 = match("MESSAGE#205:00009:17/1_0", "nwparser.p0", "%{hostip}/%{mask->} was added to interface %{p0}"); - -var part347 = match("MESSAGE#205:00009:17/1_1", "nwparser.p0", "%{hostip->} was added to interface %{p0}"); - -var select79 = linear_select([ - part346, - part347, -]); - -var part348 = match("MESSAGE#205:00009:17/2", "nwparser.p0", "%{interface}."); - -var all66 = all_match({ - processors: [ - part345, - select79, - part348, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg207 = msg("00009:17", all66); - -var part349 = match("MESSAGE#206:00009:18", "nwparser.payload", "The configured bandwidth on the interface %{interface->} has been changed to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg208 = msg("00009:18", part349); - -var part350 = match("MESSAGE#207:00009:19", "nwparser.payload", "interface %{interface->} with IP %{hostip->} %{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg209 = msg("00009:19", part350); - -var part351 = match("MESSAGE#208:00009:27", "nwparser.payload", "interface %{interface->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg210 = msg("00009:27", part351); - -var part352 = match("MESSAGE#209:00009:20/0_0", "nwparser.payload", "%{fld2}: %{service->} has been %{p0}"); - -var part353 = match("MESSAGE#209:00009:20/0_1", "nwparser.payload", "%{service->} has been %{p0}"); - -var select80 = linear_select([ - part352, - part353, -]); - -var part354 = match("MESSAGE#209:00009:20/1", "nwparser.p0", "%{disposition->} on interface %{interface->} %{p0}"); - -var part355 = match("MESSAGE#209:00009:20/2_0", "nwparser.p0", "by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}"); - -var part356 = match("MESSAGE#209:00009:20/2_1", "nwparser.p0", "by %{username->} via %{logon_type->} from host %{saddr}:%{sport}"); - -var part357 = match("MESSAGE#209:00009:20/2_2", "nwparser.p0", "by %{username->} via %{logon_type->} from host %{saddr}"); - -var part358 = match("MESSAGE#209:00009:20/2_3", "nwparser.p0", "from host %{saddr->} (%{fld1})"); - -var select81 = linear_select([ - part355, - part356, - part357, - part358, -]); - -var all67 = all_match({ - processors: [ - select80, - part354, - select81, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg211 = msg("00009:20", all67); - -var part359 = match("MESSAGE#210:00009:21/0", "nwparser.payload", "Source Route IP option! From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var all68 = all_match({ - processors: [ - part359, - dup343, - dup131, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup9, - dup60, - ]), -}); - -var msg212 = msg("00009:21", all68); - -var part360 = match("MESSAGE#211:00009:22", "nwparser.payload", "MTU for interface %{interface->} has been changed to %{fld2->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg213 = msg("00009:22", part360); - -var part361 = match("MESSAGE#212:00009:23", "nwparser.payload", "Secondary IP address %{hostip->} has been added to interface %{interface->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup9, - dup3, - dup4, - dup5, -])); - -var msg214 = msg("00009:23", part361); - -var part362 = match("MESSAGE#213:00009:24/0", "nwparser.payload", "Web has been enabled on interface %{interface->} by admin %{administrator->} via %{p0}"); - -var part363 = match("MESSAGE#213:00009:24/1_0", "nwparser.p0", "%{logon_type->} %{space}(%{p0}"); - -var part364 = match("MESSAGE#213:00009:24/1_1", "nwparser.p0", "%{logon_type}. (%{p0}"); - -var select82 = linear_select([ - part363, - part364, -]); - -var part365 = match("MESSAGE#213:00009:24/2", "nwparser.p0", ")%{fld1}"); - -var all69 = all_match({ - processors: [ - part362, - select82, - part365, - ], - on_success: processor_chain([ - dup1, - dup2, - dup9, - dup3, - dup4, - dup5, - ]), -}); - -var msg215 = msg("00009:24", all69); - -var part366 = match("MESSAGE#214:00009:25", "nwparser.payload", "Web has been enabled on interface %{interface->} by %{username->} via %{logon_type}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup9, - dup3, - dup4, - dup5, -])); - -var msg216 = msg("00009:25", part366); - -var part367 = match("MESSAGE#215:00009:26/0", "nwparser.payload", "%{protocol->} has been %{disposition->} on interface %{interface->} by %{username->} via NSRP Peer . %{p0}"); - -var all70 = all_match({ - processors: [ - part367, - dup333, - ], - on_success: processor_chain([ - dup1, - dup2, - dup9, - dup3, - dup4, - dup5, - ]), -}); - -var msg217 = msg("00009:26", all70); - -var select83 = linear_select([ - msg192, - msg193, - msg194, - msg195, - msg196, - msg197, - msg198, - msg199, - msg200, - msg201, - msg202, - msg203, - msg204, - msg205, - msg206, - msg207, - msg208, - msg209, - msg210, - msg211, - msg212, - msg213, - msg214, - msg215, - msg216, - msg217, -]); - -var part368 = match("MESSAGE#216:00010/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport->} %{p0}"); - -var part369 = match("MESSAGE#216:00010/1_0", "nwparser.p0", "using protocol %{p0}"); - -var part370 = match("MESSAGE#216:00010/1_1", "nwparser.p0", "proto %{p0}"); - -var select84 = linear_select([ - part369, - part370, -]); - -var part371 = match("MESSAGE#216:00010/2", "nwparser.p0", "%{protocol->} %{p0}"); - -var part372 = match("MESSAGE#216:00010/3_0", "nwparser.p0", "( zone %{zone}, int %{interface}) %{p0}"); - -var part373 = match("MESSAGE#216:00010/3_1", "nwparser.p0", "zone %{zone->} int %{interface}) %{p0}"); - -var select85 = linear_select([ - part372, - part373, - dup126, -]); - -var part374 = match("MESSAGE#216:00010/4", "nwparser.p0", ".%{space}The attack occurred %{dclass_counter1->} times%{p0}"); - -var all71 = all_match({ - processors: [ - part368, - select84, - part371, - select85, - part374, - dup351, - ], - on_success: processor_chain([ - dup58, - dup2, - dup4, - dup59, - dup5, - dup9, - dup3, - dup61, - ]), -}); - -var msg218 = msg("00010", all71); - -var part375 = match("MESSAGE#217:00010:01", "nwparser.payload", "MIP %{hostip}/%{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg219 = msg("00010:01", part375); - -var part376 = match("MESSAGE#218:00010:02", "nwparser.payload", "Mapped IP %{hostip->} %{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg220 = msg("00010:02", part376); - -var all72 = all_match({ - processors: [ - dup132, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup4, - dup5, - dup9, - dup3, - dup60, - ]), -}); - -var msg221 = msg("00010:03", all72); - -var select86 = linear_select([ - msg218, - msg219, - msg220, - msg221, -]); - -var part377 = match("MESSAGE#220:00011", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, -])); - -var msg222 = msg("00011", part377); - -var part378 = match("MESSAGE#221:00011:01/0", "nwparser.payload", "Route to %{daddr}/%{fld2->} [ %{p0}"); - -var select87 = linear_select([ - dup57, - dup56, -]); - -var part379 = match("MESSAGE#221:00011:01/2", "nwparser.p0", "%{} %{interface->} gateway %{fld3->} ] has been %{disposition}"); - -var all73 = all_match({ - processors: [ - part378, - select87, - part379, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg223 = msg("00011:01", all73); - -var part380 = match("MESSAGE#222:00011:02", "nwparser.payload", "%{signame->} from %{saddr->} to %{daddr->} protocol %{protocol->} (%{fld2})", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, -])); - -var msg224 = msg("00011:02", part380); - -var part381 = match("MESSAGE#223:00011:03/0", "nwparser.payload", "An %{p0}"); - -var part382 = match("MESSAGE#223:00011:03/1_0", "nwparser.p0", "import %{p0}"); - -var part383 = match("MESSAGE#223:00011:03/1_1", "nwparser.p0", "export %{p0}"); - -var select88 = linear_select([ - part382, - part383, -]); - -var part384 = match("MESSAGE#223:00011:03/2", "nwparser.p0", "rule in virtual router %{node->} to virtual router %{fld4->} with %{p0}"); - -var part385 = match("MESSAGE#223:00011:03/3_0", "nwparser.p0", "route-map %{fld3->} and protocol %{protocol->} has been %{p0}"); - -var part386 = match("MESSAGE#223:00011:03/3_1", "nwparser.p0", "IP-prefix %{hostip}/%{interface->} has been %{p0}"); - -var select89 = linear_select([ - part385, - part386, -]); - -var all74 = all_match({ - processors: [ - part381, - select88, - part384, - select89, - dup36, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg225 = msg("00011:03", all74); - -var part387 = match("MESSAGE#224:00011:04/0", "nwparser.payload", "A route in virtual router %{node->} that has IP address %{hostip}/%{fld2->} through %{p0}"); - -var part388 = match("MESSAGE#224:00011:04/2", "nwparser.p0", "%{interface->} and gateway %{fld3->} with metric %{fld4->} has been %{disposition}"); - -var all75 = all_match({ - processors: [ - part387, - dup352, - part388, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg226 = msg("00011:04", all75); - -var part389 = match("MESSAGE#225:00011:05/1_0", "nwparser.p0", "sharable virtual router using name%{p0}"); - -var part390 = match("MESSAGE#225:00011:05/1_1", "nwparser.p0", "virtual router with name%{p0}"); - -var select90 = linear_select([ - part389, - part390, -]); - -var part391 = match("MESSAGE#225:00011:05/2", "nwparser.p0", "%{} %{node->} and id %{fld2->} has been %{disposition}"); - -var all76 = all_match({ - processors: [ - dup79, - select90, - part391, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg227 = msg("00011:05", all76); - -var part392 = match("MESSAGE#226:00011:07", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup4, - dup5, - dup59, - dup3, - dup60, -])); - -var msg228 = msg("00011:07", part392); - -var part393 = match("MESSAGE#227:00011:08", "nwparser.payload", "Route(s) in virtual router %{node->} with an IP address %{hostip->} and gateway %{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg229 = msg("00011:08", part393); - -var part394 = match("MESSAGE#228:00011:09", "nwparser.payload", "The auto-route-export feature in virtual router %{node->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg230 = msg("00011:09", part394); - -var part395 = match("MESSAGE#229:00011:10", "nwparser.payload", "The maximum number of routes that can be created in virtual router %{node->} is %{fld2}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg231 = msg("00011:10", part395); - -var part396 = match("MESSAGE#230:00011:11", "nwparser.payload", "The maximum routes limit in virtual router %{node->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg232 = msg("00011:11", part396); - -var part397 = match("MESSAGE#231:00011:12", "nwparser.payload", "The router-id of virtual router %{node->} used by OSPF BGP routing instances id has been uninitialized", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg233 = msg("00011:12", part397); - -var part398 = match("MESSAGE#232:00011:13", "nwparser.payload", "The router-id that can be used by OSPF BGP routing instances in virtual router %{node->} has been set to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg234 = msg("00011:13", part398); - -var part399 = match("MESSAGE#233:00011:14/0", "nwparser.payload", "The routing preference for protocol %{protocol->} in virtual router %{node->} has been %{p0}"); - -var part400 = match("MESSAGE#233:00011:14/1_1", "nwparser.p0", "reset%{}"); - -var select91 = linear_select([ - dup134, - part400, -]); - -var all77 = all_match({ - processors: [ - part399, - select91, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg235 = msg("00011:14", all77); - -var part401 = match("MESSAGE#234:00011:15", "nwparser.payload", "The system default-route in virtual router %{node->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg236 = msg("00011:15", part401); - -var part402 = match("MESSAGE#235:00011:16", "nwparser.payload", "The system default-route through virtual router %{node->} has been added in virtual router %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg237 = msg("00011:16", part402); - -var part403 = match("MESSAGE#236:00011:17/0", "nwparser.payload", "The virtual router %{node->} has been made %{p0}"); - -var part404 = match("MESSAGE#236:00011:17/1_0", "nwparser.p0", "sharable%{}"); - -var part405 = match("MESSAGE#236:00011:17/1_1", "nwparser.p0", "unsharable%{}"); - -var part406 = match("MESSAGE#236:00011:17/1_2", "nwparser.p0", "default virtual router for virtual system %{fld2}"); - -var select92 = linear_select([ - part404, - part405, - part406, -]); - -var all78 = all_match({ - processors: [ - part403, - select92, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg238 = msg("00011:17", all78); - -var part407 = match("MESSAGE#237:00011:18/0_0", "nwparser.payload", "Source route(s) %{p0}"); - -var part408 = match("MESSAGE#237:00011:18/0_1", "nwparser.payload", "A source route %{p0}"); - -var select93 = linear_select([ - part407, - part408, -]); - -var part409 = match("MESSAGE#237:00011:18/1", "nwparser.p0", "in virtual router %{node->} %{p0}"); - -var part410 = match("MESSAGE#237:00011:18/2_0", "nwparser.p0", "with route addresses of %{p0}"); - -var part411 = match("MESSAGE#237:00011:18/2_1", "nwparser.p0", "that has IP address %{p0}"); - -var select94 = linear_select([ - part410, - part411, -]); - -var part412 = match("MESSAGE#237:00011:18/3", "nwparser.p0", "%{hostip}/%{fld2->} through interface %{interface->} and %{p0}"); - -var part413 = match("MESSAGE#237:00011:18/4_0", "nwparser.p0", "a default gateway address %{p0}"); - -var select95 = linear_select([ - part413, - dup135, -]); - -var part414 = match("MESSAGE#237:00011:18/5", "nwparser.p0", "%{fld3->} with metric %{fld4->} %{p0}"); - -var all79 = all_match({ - processors: [ - select93, - part409, - select94, - part412, - select95, - part414, - dup350, - dup128, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg239 = msg("00011:18", all79); - -var part415 = match("MESSAGE#238:00011:19/0", "nwparser.payload", "Source Route(s) in virtual router %{node->} with %{p0}"); - -var part416 = match("MESSAGE#238:00011:19/1_0", "nwparser.p0", "route addresses of %{p0}"); - -var part417 = match("MESSAGE#238:00011:19/1_1", "nwparser.p0", "an IP address %{p0}"); - -var select96 = linear_select([ - part416, - part417, -]); - -var part418 = match("MESSAGE#238:00011:19/2", "nwparser.p0", "%{hostip}/%{fld3->} and %{p0}"); - -var part419 = match("MESSAGE#238:00011:19/3_0", "nwparser.p0", "a default gateway address of %{p0}"); - -var select97 = linear_select([ - part419, - dup135, -]); - -var part420 = match("MESSAGE#238:00011:19/4", "nwparser.p0", "%{fld4->} %{p0}"); - -var part421 = match("MESSAGE#238:00011:19/5_1", "nwparser.p0", "has been%{p0}"); - -var select98 = linear_select([ - dup107, - part421, -]); - -var all80 = all_match({ - processors: [ - part415, - select96, - part418, - select97, - part420, - select98, - dup136, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg240 = msg("00011:19", all80); - -var part422 = match("MESSAGE#239:00011:20/0_0", "nwparser.payload", "%{fld2}: A %{p0}"); - -var select99 = linear_select([ - part422, - dup79, -]); - -var part423 = match("MESSAGE#239:00011:20/1", "nwparser.p0", "route has been created in virtual router \"%{node}\"%{space}with an IP address %{hostip->} and next-hop as virtual router \"%{fld3}\""); - -var all81 = all_match({ - processors: [ - select99, - part423, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg241 = msg("00011:20", all81); - -var part424 = match("MESSAGE#240:00011:21", "nwparser.payload", "SIBR route(s) in virtual router %{node->} for interface %{interface->} with an IP address %{hostip->} and gateway %{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg242 = msg("00011:21", part424); - -var part425 = match("MESSAGE#241:00011:22", "nwparser.payload", "SIBR route in virtual router %{node->} for interface %{interface->} that has IP address %{hostip->} through interface %{fld3->} and gateway %{fld4->} with metric %{fld5->} was %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg243 = msg("00011:22", part425); - -var all82 = all_match({ - processors: [ - dup132, - dup343, - dup131, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup9, - dup3, - dup4, - dup5, - call({ - dest: "nwparser.inout", - fn: DIRCHK, - args: [ - field("$IN"), - field("saddr"), - field("daddr"), - ], - }), - ]), -}); - -var msg244 = msg("00011:23", all82); - -var part426 = match("MESSAGE#243:00011:24", "nwparser.payload", "Route in virtual router \"%{node}\" that has IP address %{hostip->} through interface %{interface->} and gateway %{fld2->} with metric %{fld3->} %{disposition}. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg245 = msg("00011:24", part426); - -var part427 = match("MESSAGE#244:00011:25", "nwparser.payload", "Route(s) in virtual router \"%{node}\" with an IP address %{hostip}/%{fld2->} and gateway %{fld3->} %{disposition}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg246 = msg("00011:25", part427); - -var part428 = match("MESSAGE#245:00011:26", "nwparser.payload", "Route in virtual router \"%{node}\" with IP address %{hostip}/%{fld2->} and next-hop as virtual router \"%{fld3}\" created. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg247 = msg("00011:26", part428); - -var select100 = linear_select([ - msg222, - msg223, - msg224, - msg225, - msg226, - msg227, - msg228, - msg229, - msg230, - msg231, - msg232, - msg233, - msg234, - msg235, - msg236, - msg237, - msg238, - msg239, - msg240, - msg241, - msg242, - msg243, - msg244, - msg245, - msg246, - msg247, -]); - -var part429 = match("MESSAGE#246:00012:02", "nwparser.payload", "Service group %{group->} comments have been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg248 = msg("00012:02", part429); - -var part430 = match("MESSAGE#247:00012:03", "nwparser.payload", "Service group %{change_old->} %{change_attribute->} has been changed to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg249 = msg("00012:03", part430); - -var part431 = match("MESSAGE#248:00012:04", "nwparser.payload", "%{fld2->} Service group %{group->} has %{disposition->} member %{username->} from host %{saddr}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg250 = msg("00012:04", part431); - -var part432 = match("MESSAGE#249:00012:05", "nwparser.payload", "%{signame->} from %{saddr}/%{sport->} to %{daddr}/%{dport->} protocol %{protocol->} (%{fld2}) (%{fld3})", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup61, -])); - -var msg251 = msg("00012:05", part432); - -var part433 = match("MESSAGE#250:00012:06", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup59, - dup61, -])); - -var msg252 = msg("00012:06", part433); - -var part434 = match("MESSAGE#251:00012:07", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup61, - dup59, -])); - -var msg253 = msg("00012:07", part434); - -var part435 = match("MESSAGE#252:00012:08", "nwparser.payload", "%{fld2}: Service %{service->} has been %{disposition->} from host %{saddr->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg254 = msg("00012:08", part435); - -var all83 = all_match({ - processors: [ - dup80, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup9, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var msg255 = msg("00012:09", all83); - -var all84 = all_match({ - processors: [ - dup132, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup9, - dup59, - dup3, - dup4, - dup5, - dup60, - ]), -}); - -var msg256 = msg("00012:10", all84); - -var part436 = match("MESSAGE#255:00012:11", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.The attack occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup59, - dup5, - dup9, - dup61, -])); - -var msg257 = msg("00012:11", part436); - -var part437 = match("MESSAGE#256:00012:12", "nwparser.payload", "%{signame->} from %{saddr}/%{sport->} to %{daddr}/%{dport->} protocol %{protocol->} (%{zone}) %{info->} (%{fld1})", processor_chain([ - dup58, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg258 = msg("00012:12", part437); - -var part438 = match("MESSAGE#257:00012", "nwparser.payload", "Service group %{group->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg259 = msg("00012", part438); - -var part439 = match("MESSAGE#258:00012:01", "nwparser.payload", "Service %{service->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg260 = msg("00012:01", part439); - -var select101 = linear_select([ - msg248, - msg249, - msg250, - msg251, - msg252, - msg253, - msg254, - msg255, - msg256, - msg257, - msg258, - msg259, - msg260, -]); - -var part440 = match("MESSAGE#259:00013", "nwparser.payload", "Global Manager error in decoding bytes has been detected%{}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg261 = msg("00013", part440); - -var part441 = match("MESSAGE#260:00013:01", "nwparser.payload", "Intruder has attempted to connect to the NetScreen-Global Manager port! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} at interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, - setc("signame","An Attempt to connect to NetScreen-Global Manager Port."), -])); - -var msg262 = msg("00013:01", part441); - -var part442 = match("MESSAGE#261:00013:02", "nwparser.payload", "URL Filtering %{fld2->} has been changed to %{fld3}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg263 = msg("00013:02", part442); - -var part443 = match("MESSAGE#262:00013:03", "nwparser.payload", "Web Filtering has been %{disposition->} (%{fld1})", processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup4, - dup5, - dup9, -])); - -var msg264 = msg("00013:03", part443); - -var select102 = linear_select([ - msg261, - msg262, - msg263, - msg264, -]); - -var part444 = match("MESSAGE#263:00014", "nwparser.payload", "%{change_attribute->} in minutes has changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg265 = msg("00014", part444); - -var part445 = match("MESSAGE#264:00014:01/0", "nwparser.payload", "The group member %{username->} has been %{disposition->} %{p0}"); - -var part446 = match("MESSAGE#264:00014:01/1_0", "nwparser.p0", "to a group%{}"); - -var part447 = match("MESSAGE#264:00014:01/1_1", "nwparser.p0", "from a group%{}"); - -var select103 = linear_select([ - part446, - part447, -]); - -var all85 = all_match({ - processors: [ - part445, - select103, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg266 = msg("00014:01", all85); - -var part448 = match("MESSAGE#265:00014:02", "nwparser.payload", "The user group %{group->} has been %{disposition->} by %{username}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg267 = msg("00014:02", part448); - -var part449 = match("MESSAGE#266:00014:03", "nwparser.payload", "The user %{username->} has been %{disposition->} by %{administrator}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg268 = msg("00014:03", part449); - -var part450 = match("MESSAGE#267:00014:04", "nwparser.payload", "Communication error with %{hostname->} server { %{hostip->} }: SrvErr (%{fld2}), SockErr (%{fld3}), Valid (%{fld4}),Connected (%{fld5})", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg269 = msg("00014:04", part450); - -var part451 = match("MESSAGE#268:00014:05", "nwparser.payload", "System clock configurations have been %{disposition->} by admin %{administrator}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg270 = msg("00014:05", part451); - -var part452 = match("MESSAGE#269:00014:06", "nwparser.payload", "System clock is %{disposition->} manually.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg271 = msg("00014:06", part452); - -var part453 = match("MESSAGE#270:00014:07", "nwparser.payload", "System up time is %{disposition->} by %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg272 = msg("00014:07", part453); - -var part454 = match("MESSAGE#271:00014:08", "nwparser.payload", "Communication error with %{hostname->} server[%{hostip}]: SrvErr(%{fld2}),SockErr(%{fld3}),Valid(%{fld4}),Connected(%{fld5}) (%{fld1})", processor_chain([ - dup27, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg273 = msg("00014:08", part454); - -var select104 = linear_select([ - msg265, - msg266, - msg267, - msg268, - msg269, - msg270, - msg271, - msg272, - msg273, -]); - -var part455 = match("MESSAGE#272:00015", "nwparser.payload", "Authentication type has been changed to %{authmethod}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg274 = msg("00015", part455); - -var part456 = match("MESSAGE#273:00015:01", "nwparser.payload", "IP tracking to %{daddr->} has %{disposition}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg275 = msg("00015:01", part456); - -var part457 = match("MESSAGE#274:00015:02/0", "nwparser.payload", "LDAP %{p0}"); - -var part458 = match("MESSAGE#274:00015:02/1_0", "nwparser.p0", "server name %{p0}"); - -var part459 = match("MESSAGE#274:00015:02/1_2", "nwparser.p0", "distinguished name %{p0}"); - -var part460 = match("MESSAGE#274:00015:02/1_3", "nwparser.p0", "common name %{p0}"); - -var select105 = linear_select([ - part458, - dup137, - part459, - part460, -]); - -var all86 = all_match({ - processors: [ - part457, - select105, - dup138, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg276 = msg("00015:02", all86); - -var part461 = match("MESSAGE#275:00015:03", "nwparser.payload", "Primary HA link has gone down. Local NetScreen device has begun using the secondary HA link%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg277 = msg("00015:03", part461); - -var part462 = match("MESSAGE#276:00015:04/0", "nwparser.payload", "RADIUS server %{p0}"); - -var part463 = match("MESSAGE#276:00015:04/1_2", "nwparser.p0", "secret %{p0}"); - -var select106 = linear_select([ - dup139, - dup140, - part463, -]); - -var all87 = all_match({ - processors: [ - part462, - select106, - dup138, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg278 = msg("00015:04", all87); - -var part464 = match("MESSAGE#277:00015:05/0", "nwparser.payload", "SecurID %{p0}"); - -var part465 = match("MESSAGE#277:00015:05/1_0", "nwparser.p0", "authentication port %{p0}"); - -var part466 = match("MESSAGE#277:00015:05/1_1", "nwparser.p0", "duress mode %{p0}"); - -var part467 = match("MESSAGE#277:00015:05/1_3", "nwparser.p0", "number of retries value %{p0}"); - -var select107 = linear_select([ - part465, - part466, - dup76, - part467, -]); - -var all88 = all_match({ - processors: [ - part464, - select107, - dup138, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg279 = msg("00015:05", all88); - -var part468 = match("MESSAGE#278:00015:06/0_0", "nwparser.payload", "Master %{p0}"); - -var part469 = match("MESSAGE#278:00015:06/0_1", "nwparser.payload", "Backup %{p0}"); - -var select108 = linear_select([ - part468, - part469, -]); - -var part470 = match("MESSAGE#278:00015:06/1", "nwparser.p0", "SecurID server IP address has been %{disposition}"); - -var all89 = all_match({ - processors: [ - select108, - part470, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg280 = msg("00015:06", all89); - -var part471 = match("MESSAGE#279:00015:07", "nwparser.payload", "HA change from slave to master%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg281 = msg("00015:07", part471); - -var part472 = match("MESSAGE#280:00015:08", "nwparser.payload", "inconsistent configuration between master and slave%{}", processor_chain([ - dup141, - dup2, - dup3, - dup4, - dup5, -])); - -var msg282 = msg("00015:08", part472); - -var part473 = match("MESSAGE#281:00015:09/0_0", "nwparser.payload", "configuration %{p0}"); - -var part474 = match("MESSAGE#281:00015:09/0_1", "nwparser.payload", "Configuration %{p0}"); - -var select109 = linear_select([ - part473, - part474, -]); - -var part475 = match("MESSAGE#281:00015:09/1", "nwparser.p0", "out of sync between local unit and remote unit%{}"); - -var all90 = all_match({ - processors: [ - select109, - part475, - ], - on_success: processor_chain([ - dup141, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg283 = msg("00015:09", all90); - -var part476 = match("MESSAGE#282:00015:10", "nwparser.payload", "HA control channel change to %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg284 = msg("00015:10", part476); - -var part477 = match("MESSAGE#283:00015:11", "nwparser.payload", "HA data channel change to %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg285 = msg("00015:11", part477); - -var part478 = match("MESSAGE#284:00015:12/1_0", "nwparser.p0", "control %{p0}"); - -var part479 = match("MESSAGE#284:00015:12/1_1", "nwparser.p0", "data %{p0}"); - -var select110 = linear_select([ - part478, - part479, -]); - -var part480 = match("MESSAGE#284:00015:12/2", "nwparser.p0", "channel moved from link %{p0}"); - -var part481 = match("MESSAGE#284:00015:12/6", "nwparser.p0", "(%{interface})"); - -var all91 = all_match({ - processors: [ - dup87, - select110, - part480, - dup353, - dup103, - dup353, - part481, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg286 = msg("00015:12", all91); - -var part482 = match("MESSAGE#285:00015:13", "nwparser.payload", "HA: Slave is down%{}", processor_chain([ - dup144, - dup2, - dup3, - dup4, - dup5, -])); - -var msg287 = msg("00015:13", part482); - -var part483 = match("MESSAGE#286:00015:14/0", "nwparser.payload", "NSRP link %{p0}"); - -var all92 = all_match({ - processors: [ - part483, - dup353, - dup116, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg288 = msg("00015:14", all92); - -var part484 = match("MESSAGE#287:00015:15", "nwparser.payload", "no HA %{fld2->} channel available (%{fld3->} used by other channel)", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg289 = msg("00015:15", part484); - -var part485 = match("MESSAGE#288:00015:16", "nwparser.payload", "The NSRP configuration is out of synchronization between the local device and the peer device.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg290 = msg("00015:16", part485); - -var part486 = match("MESSAGE#289:00015:17", "nwparser.payload", "NSRP %{change_attribute->} %{change_old->} changed to link channel %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg291 = msg("00015:17", part486); - -var part487 = match("MESSAGE#290:00015:18", "nwparser.payload", "RTO mirror group %{group->} with direction %{direction->} on peer device %{fld2->} changed from %{fld3->} to %{fld4->} state.", processor_chain([ - dup121, - dup2, - dup3, - dup4, - dup5, - setc("change_attribute","RTO mirror group"), -])); - -var msg292 = msg("00015:18", part487); - -var part488 = match("MESSAGE#291:00015:19", "nwparser.payload", "RTO mirror group %{group->} with direction %{direction->} on local device %{fld2}, detected a duplicate direction on the peer device %{fld3}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg293 = msg("00015:19", part488); - -var part489 = match("MESSAGE#292:00015:20", "nwparser.payload", "RTO mirror group %{group->} with direction %{direction->} changed on the local device from %{fld2->} to up state, it had peer device %{fld3}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg294 = msg("00015:20", part489); - -var part490 = match("MESSAGE#293:00015:21/0", "nwparser.payload", "Peer device %{fld2->} %{p0}"); - -var part491 = match("MESSAGE#293:00015:21/1_0", "nwparser.p0", "disappeared %{p0}"); - -var part492 = match("MESSAGE#293:00015:21/1_1", "nwparser.p0", "was discovered %{p0}"); - -var select111 = linear_select([ - part491, - part492, -]); - -var all93 = all_match({ - processors: [ - part490, - select111, - dup116, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg295 = msg("00015:21", all93); - -var part493 = match("MESSAGE#294:00015:22/0_0", "nwparser.payload", "The local %{p0}"); - -var part494 = match("MESSAGE#294:00015:22/0_1", "nwparser.payload", "The peer %{p0}"); - -var part495 = match("MESSAGE#294:00015:22/0_2", "nwparser.payload", "Peer %{p0}"); - -var select112 = linear_select([ - part493, - part494, - part495, -]); - -var part496 = match("MESSAGE#294:00015:22/1", "nwparser.p0", "device %{fld2->} in the Virtual Security Device group %{group->} changed %{change_attribute->} from %{change_old->} to %{change_new->} %{p0}"); - -var all94 = all_match({ - processors: [ - select112, - part496, - dup354, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg296 = msg("00015:22", all94); - -var part497 = match("MESSAGE#295:00015:23", "nwparser.payload", "WebAuth is set to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg297 = msg("00015:23", part497); - -var part498 = match("MESSAGE#296:00015:24", "nwparser.payload", "Default firewall authentication server has been changed to %{hostname}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg298 = msg("00015:24", part498); - -var part499 = match("MESSAGE#297:00015:25", "nwparser.payload", "Admin user %{administrator->} attempted to verify the encrypted password %{fld2}. Verification was successful", processor_chain([ - setc("eventcategory","1613050100"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg299 = msg("00015:25", part499); - -var part500 = match("MESSAGE#298:00015:29", "nwparser.payload", "Admin user %{administrator->} attempted to verify the encrypted password %{fld2}. Verification failed", processor_chain([ - dup97, - dup2, - dup3, - dup4, - dup5, -])); - -var msg300 = msg("00015:29", part500); - -var part501 = match("MESSAGE#299:00015:26/0", "nwparser.payload", "unit %{fld2->} just dis%{p0}"); - -var part502 = match("MESSAGE#299:00015:26/1_0", "nwparser.p0", "appeared%{}"); - -var part503 = match("MESSAGE#299:00015:26/1_1", "nwparser.p0", "covered%{}"); - -var select113 = linear_select([ - part502, - part503, -]); - -var all95 = all_match({ - processors: [ - part501, - select113, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg301 = msg("00015:26", all95); - -var part504 = match("MESSAGE#300:00015:33", "nwparser.payload", "NSRP: HA data channel change to %{interface}. (%{fld2})", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - dup146, -])); - -var msg302 = msg("00015:33", part504); - -var part505 = match("MESSAGE#301:00015:27", "nwparser.payload", "NSRP: %{fld2}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg303 = msg("00015:27", part505); - -var part506 = match("MESSAGE#302:00015:28", "nwparser.payload", "Auth server %{hostname->} RADIUS retry timeout has been set to default of %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg304 = msg("00015:28", part506); - -var part507 = match("MESSAGE#303:00015:30/0", "nwparser.payload", "Number of RADIUS retries for auth server %{hostname->} %{p0}"); - -var part508 = match("MESSAGE#303:00015:30/2", "nwparser.p0", "set to %{fld2->} (%{fld1})"); - -var all96 = all_match({ - processors: [ - part507, - dup355, - part508, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg305 = msg("00015:30", all96); - -var part509 = match("MESSAGE#304:00015:31", "nwparser.payload", "Forced timeout for Auth server %{hostname->} is unset to its default value, %{info->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg306 = msg("00015:31", part509); - -var part510 = match("MESSAGE#305:00015:32", "nwparser.payload", "Accounting port of server RADIUS is set to %{network_port}. (%{fld1})", processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup4, - dup5, - dup9, -])); - -var msg307 = msg("00015:32", part510); - -var select114 = linear_select([ - msg274, - msg275, - msg276, - msg277, - msg278, - msg279, - msg280, - msg281, - msg282, - msg283, - msg284, - msg285, - msg286, - msg287, - msg288, - msg289, - msg290, - msg291, - msg292, - msg293, - msg294, - msg295, - msg296, - msg297, - msg298, - msg299, - msg300, - msg301, - msg302, - msg303, - msg304, - msg305, - msg306, - msg307, -]); - -var part511 = match("MESSAGE#306:00016", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup147, - dup148, - dup149, - dup150, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, -])); - -var msg308 = msg("00016", part511); - -var part512 = match("MESSAGE#307:00016:01", "nwparser.payload", "Address VIP (%{fld2}) for %{fld3->} has been %{disposition}.", processor_chain([ - dup1, - dup148, - dup149, - dup150, - dup2, - dup3, - dup4, - dup5, -])); - -var msg309 = msg("00016:01", part512); - -var part513 = match("MESSAGE#308:00016:02", "nwparser.payload", "VIP (%{fld2}) has been %{disposition}", processor_chain([ - dup1, - dup148, - dup149, - dup150, - dup2, - dup3, - dup4, - dup5, -])); - -var msg310 = msg("00016:02", part513); - -var part514 = match("MESSAGE#309:00016:03", "nwparser.payload", "%{signame->} from %{saddr}/%{sport->} to %{daddr}/%{dport->} protocol %{protocol->} (%{fld2})", processor_chain([ - dup147, - dup148, - dup149, - dup150, - dup2, - dup3, - dup4, - dup5, -])); - -var msg311 = msg("00016:03", part514); - -var part515 = match("MESSAGE#310:00016:05", "nwparser.payload", "VIP multi-port was %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg312 = msg("00016:05", part515); - -var part516 = match("MESSAGE#311:00016:06", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup147, - dup148, - dup149, - dup150, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, -])); - -var msg313 = msg("00016:06", part516); - -var part517 = match("MESSAGE#312:00016:07/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} ( zone %{p0}"); - -var all97 = all_match({ - processors: [ - part517, - dup338, - dup67, - ], - on_success: processor_chain([ - dup147, - dup148, - dup149, - dup150, - dup2, - dup9, - dup59, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var msg314 = msg("00016:07", all97); - -var part518 = match("MESSAGE#313:00016:08", "nwparser.payload", "VIP (%{fld2}:%{fld3->} HTTP %{fld4}) Modify by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - setc("eventcategory","1001020305"), - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg315 = msg("00016:08", part518); - -var part519 = match("MESSAGE#314:00016:09", "nwparser.payload", "VIP (%{fld2}:%{fld3->} HTTP %{fld4}) New by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - setc("eventcategory","1001030305"), - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg316 = msg("00016:09", part519); - -var select115 = linear_select([ - msg308, - msg309, - msg310, - msg311, - msg312, - msg313, - msg314, - msg315, - msg316, -]); - -var part520 = match("MESSAGE#315:00017", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup151, - dup2, - dup3, - dup59, - dup4, - dup5, -])); - -var msg317 = msg("00017", part520); - -var part521 = match("MESSAGE#316:00017:23/0", "nwparser.payload", "Gateway %{fld2->} at %{fld3->} in %{fld5->} mode with ID %{p0}"); - -var part522 = match("MESSAGE#316:00017:23/1_0", "nwparser.p0", "[%{fld4}] %{p0}"); - -var part523 = match("MESSAGE#316:00017:23/1_1", "nwparser.p0", "%{fld4->} %{p0}"); - -var select116 = linear_select([ - part522, - part523, -]); - -var part524 = match("MESSAGE#316:00017:23/2", "nwparser.p0", "has been %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} %{fld}"); - -var all98 = all_match({ - processors: [ - part521, - select116, - part524, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg318 = msg("00017:23", all98); - -var part525 = match("MESSAGE#317:00017:01/0_0", "nwparser.payload", "%{fld1}: Gateway %{p0}"); - -var part526 = match("MESSAGE#317:00017:01/0_1", "nwparser.payload", "Gateway %{p0}"); - -var select117 = linear_select([ - part525, - part526, -]); - -var part527 = match("MESSAGE#317:00017:01/1", "nwparser.p0", "%{fld2->} at %{fld3->} in %{fld5->} mode with ID%{p0}"); - -var part528 = match("MESSAGE#317:00017:01/3", "nwparser.p0", "%{fld4->} has been %{disposition}"); - -var all99 = all_match({ - processors: [ - select117, - part527, - dup356, - part528, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg319 = msg("00017:01", all99); - -var part529 = match("MESSAGE#318:00017:02", "nwparser.payload", "IKE %{hostip}: Gateway settings have been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg320 = msg("00017:02", part529); - -var part530 = match("MESSAGE#319:00017:03", "nwparser.payload", "IKE key %{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg321 = msg("00017:03", part530); - -var part531 = match("MESSAGE#320:00017:04/2", "nwparser.p0", "%{group_object->} with range %{fld2->} has been %{disposition}"); - -var all100 = all_match({ - processors: [ - dup153, - dup357, - part531, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg322 = msg("00017:04", all100); - -var part532 = match("MESSAGE#321:00017:05", "nwparser.payload", "IPSec NAT-T for VPN %{group->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg323 = msg("00017:05", part532); - -var part533 = match("MESSAGE#322:00017:06/0", "nwparser.payload", "The DF-BIT for VPN %{group->} has been set to %{p0}"); - -var part534 = match("MESSAGE#322:00017:06/1_0", "nwparser.p0", "clear %{p0}"); - -var part535 = match("MESSAGE#322:00017:06/1_2", "nwparser.p0", "copy %{p0}"); - -var select118 = linear_select([ - part534, - dup101, - part535, -]); - -var all101 = all_match({ - processors: [ - part533, - select118, - dup116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg324 = msg("00017:06", all101); - -var part536 = match("MESSAGE#323:00017:07/0", "nwparser.payload", "The DF-BIT for VPN %{group->} has been %{p0}"); - -var part537 = match("MESSAGE#323:00017:07/1_0", "nwparser.p0", "clear%{}"); - -var part538 = match("MESSAGE#323:00017:07/1_1", "nwparser.p0", "cleared%{}"); - -var part539 = match("MESSAGE#323:00017:07/1_3", "nwparser.p0", "copy%{}"); - -var part540 = match("MESSAGE#323:00017:07/1_4", "nwparser.p0", "copied%{}"); - -var select119 = linear_select([ - part537, - part538, - dup98, - part539, - part540, -]); - -var all102 = all_match({ - processors: [ - part536, - select119, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg325 = msg("00017:07", all102); - -var part541 = match("MESSAGE#324:00017:08", "nwparser.payload", "VPN %{group->} with gateway %{fld2->} and SPI %{fld3}/%{fld4->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg326 = msg("00017:08", part541); - -var part542 = match("MESSAGE#325:00017:09/0_0", "nwparser.payload", "%{fld1}: VPN %{p0}"); - -var part543 = match("MESSAGE#325:00017:09/0_1", "nwparser.payload", "VPN %{p0}"); - -var select120 = linear_select([ - part542, - part543, -]); - -var part544 = match("MESSAGE#325:00017:09/1", "nwparser.p0", "%{group->} with gateway %{fld2->} %{p0}"); - -var part545 = match("MESSAGE#325:00017:09/2_0", "nwparser.p0", "no-rekey %{p0}"); - -var part546 = match("MESSAGE#325:00017:09/2_1", "nwparser.p0", "rekey, %{p0}"); - -var part547 = match("MESSAGE#325:00017:09/2_2", "nwparser.p0", "rekey %{p0}"); - -var select121 = linear_select([ - part545, - part546, - part547, -]); - -var part548 = match("MESSAGE#325:00017:09/3", "nwparser.p0", "and p2-proposal %{fld3->} has been %{p0}"); - -var part549 = match("MESSAGE#325:00017:09/4_0", "nwparser.p0", "%{disposition->} from peer unit"); - -var part550 = match("MESSAGE#325:00017:09/4_1", "nwparser.p0", "%{disposition->} from host %{saddr}"); - -var select122 = linear_select([ - part549, - part550, - dup36, -]); - -var all103 = all_match({ - processors: [ - select120, - part544, - select121, - part548, - select122, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg327 = msg("00017:09", all103); - -var part551 = match("MESSAGE#326:00017:10/0", "nwparser.payload", "VPN monitoring for VPN %{group->} has been %{disposition}. Src IF %{sinterface->} dst IP %{daddr->} with rekeying %{p0}"); - -var all104 = all_match({ - processors: [ - part551, - dup358, - dup116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg328 = msg("00017:10", all104); - -var part552 = match("MESSAGE#327:00017:11", "nwparser.payload", "VPN monitoring for VPN %{group->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg329 = msg("00017:11", part552); - -var part553 = match("MESSAGE#328:00017:12/0", "nwparser.payload", "VPN monitoring %{p0}"); - -var part554 = match("MESSAGE#328:00017:12/1_2", "nwparser.p0", "frequency %{p0}"); - -var select123 = linear_select([ - dup109, - dup110, - part554, -]); - -var all105 = all_match({ - processors: [ - part553, - select123, - dup127, - dup359, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg330 = msg("00017:12", all105); - -var part555 = match("MESSAGE#329:00017:26", "nwparser.payload", "VPN %{group->} with gateway %{fld2->} and P2 proposal %{fld3->} has been added by %{username->} via %{logon_type->} from host %{saddr}:%{sport}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg331 = msg("00017:26", part555); - -var part556 = match("MESSAGE#330:00017:13", "nwparser.payload", "No IP pool has been assigned. You cannot allocate an IP address.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg332 = msg("00017:13", part556); - -var part557 = match("MESSAGE#331:00017:14", "nwparser.payload", "P1 proposal %{fld2->} with %{protocol_detail}, DH group %{group}, ESP %{encryption_type}, auth %{authmethod}, and lifetime %{fld3->} has been %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup9, - dup5, -])); - -var msg333 = msg("00017:14", part557); - -var part558 = match("MESSAGE#332:00017:15/0", "nwparser.payload", "P2 proposal %{fld2->} with DH group %{group->} %{p0}"); - -var part559 = match("MESSAGE#332:00017:15/2", "nwparser.p0", "%{encryption_type->} auth %{authmethod->} and lifetime (%{fld3}) (%{fld4}) has been %{disposition}."); - -var all106 = all_match({ - processors: [ - part558, - dup360, - part559, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg334 = msg("00017:15", all106); - -var part560 = match("MESSAGE#333:00017:31/0", "nwparser.payload", "P1 proposal %{fld2->} with %{protocol_detail->} DH group %{group->} %{p0}"); - -var part561 = match("MESSAGE#333:00017:31/2", "nwparser.p0", "%{encryption_type->} auth %{authmethod->} and lifetime %{fld3->} has been %{disposition}."); - -var all107 = all_match({ - processors: [ - part560, - dup360, - part561, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg335 = msg("00017:31", all107); - -var part562 = match("MESSAGE#334:00017:16/0", "nwparser.payload", "vpnmonitor interval is %{p0}"); - -var all108 = all_match({ - processors: [ - part562, - dup359, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg336 = msg("00017:16", all108); - -var part563 = match("MESSAGE#335:00017:17/0", "nwparser.payload", "vpnmonitor threshold is %{p0}"); - -var select124 = linear_select([ - dup99, - dup93, -]); - -var all109 = all_match({ - processors: [ - part563, - select124, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg337 = msg("00017:17", all109); - -var part564 = match("MESSAGE#336:00017:18/2", "nwparser.p0", "%{group_object->} with range %{fld2->} was %{disposition}"); - -var all110 = all_match({ - processors: [ - dup153, - dup357, - part564, - ], - on_success: processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg338 = msg("00017:18", all110); - -var part565 = match("MESSAGE#337:00017:19/0", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at %{p0}"); - -var part566 = match("MESSAGE#337:00017:19/2", "nwparser.p0", "%{} %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times"); - -var all111 = all_match({ - processors: [ - part565, - dup337, - part566, - ], - on_success: processor_chain([ - dup151, - dup2, - dup3, - dup59, - dup4, - dup5, - ]), -}); - -var msg339 = msg("00017:19", all111); - -var all112 = all_match({ - processors: [ - dup64, - dup338, - dup67, - ], - on_success: processor_chain([ - dup151, - dup2, - dup9, - dup59, - dup3, - dup4, - dup5, - ]), -}); - -var msg340 = msg("00017:20", all112); - -var part567 = match("MESSAGE#339:00017:21", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup151, - dup2, - dup3, - dup59, - dup4, - dup5, -])); - -var msg341 = msg("00017:21", part567); - -var part568 = match("MESSAGE#340:00017:22", "nwparser.payload", "VPN %{group->} with gateway %{fld2->} and P2 proposal %{fld3->} has been %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg342 = msg("00017:22", part568); - -var part569 = match("MESSAGE#341:00017:24", "nwparser.payload", "VPN \"%{group}\" has been bound to tunnel interface %{interface}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg343 = msg("00017:24", part569); - -var part570 = match("MESSAGE#342:00017:25", "nwparser.payload", "VPN %{group->} with gateway %{fld2->} and P2 proposal standard has been added by admin %{administrator->} via NSRP Peer (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg344 = msg("00017:25", part570); - -var part571 = match("MESSAGE#343:00017:28", "nwparser.payload", "P2 proposal %{fld2->} with DH group %{group}, ESP, enc %{encryption_type}, auth %{authmethod}, and lifetime %{fld3->} has been %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg345 = msg("00017:28", part571); - -var part572 = match("MESSAGE#344:00017:29", "nwparser.payload", "L2TP \"%{fld2}\", all-L2TP-users secret \"%{fld3}\" keepalive %{fld4->} has been %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup4, - dup5, - dup9, -])); - -var msg346 = msg("00017:29", part572); - -var select125 = linear_select([ - msg317, - msg318, - msg319, - msg320, - msg321, - msg322, - msg323, - msg324, - msg325, - msg326, - msg327, - msg328, - msg329, - msg330, - msg331, - msg332, - msg333, - msg334, - msg335, - msg336, - msg337, - msg338, - msg339, - msg340, - msg341, - msg342, - msg343, - msg344, - msg345, - msg346, -]); - -var part573 = match("MESSAGE#345:00018", "nwparser.payload", "Positions of policies %{fld2->} and %{fld3->} have been exchanged", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg347 = msg("00018", part573); - -var part574 = match("MESSAGE#346:00018:01", "nwparser.payload", "Deny Policy Alarm%{}", processor_chain([ - setc("eventcategory","1502010000"), - dup2, - dup4, - dup5, - dup3, -])); - -var msg348 = msg("00018:01", part574); - -var part575 = match("MESSAGE#347:00018:02", "nwparser.payload", "Device%{quote}s %{change_attribute->} has been changed from %{change_old->} to %{change_new->} by admin %{administrator}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg349 = msg("00018:02", part575); - -var part576 = match("MESSAGE#348:00018:04", "nwparser.payload", "%{fld2->} Policy (%{policy_id}, %{info->} ) was %{disposition->} from host %{saddr->} by admin %{administrator->} (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg350 = msg("00018:04", part576); - -var part577 = match("MESSAGE#349:00018:16", "nwparser.payload", "%{fld2->} Policy (%{policy_id}, %{info->} ) was %{disposition->} by admin %{administrator->} via NSRP Peer", processor_chain([ - dup17, - dup2, - dup3, - dup4, - dup5, -])); - -var msg351 = msg("00018:16", part577); - -var part578 = match("MESSAGE#350:00018:06/0", "nwparser.payload", "%{fld2->} Policy %{policy_id->} has been moved %{p0}"); - -var part579 = match("MESSAGE#350:00018:06/1_0", "nwparser.p0", "before %{p0}"); - -var part580 = match("MESSAGE#350:00018:06/1_1", "nwparser.p0", "after %{p0}"); - -var select126 = linear_select([ - part579, - part580, -]); - -var part581 = match("MESSAGE#350:00018:06/2", "nwparser.p0", "%{fld3->} by admin %{administrator}"); - -var all113 = all_match({ - processors: [ - part578, - select126, - part581, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg352 = msg("00018:06", all113); - -var part582 = match("MESSAGE#351:00018:08", "nwparser.payload", "Policy %{policy_id->} application was modified to %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg353 = msg("00018:08", part582); - -var part583 = match("MESSAGE#352:00018:09", "nwparser.payload", "Policy (%{policy_id}, %{info}) was %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - dup17, - dup3, - dup2, - dup9, - dup4, - dup5, -])); - -var msg354 = msg("00018:09", part583); - -var part584 = match("MESSAGE#353:00018:10/0", "nwparser.payload", "Policy (%{policy_id}, %{info}) was %{p0}"); - -var part585 = match("MESSAGE#353:00018:10/1_0", "nwparser.p0", "%{disposition->} from peer unit by %{p0}"); - -var part586 = match("MESSAGE#353:00018:10/1_1", "nwparser.p0", "%{disposition->} by %{p0}"); - -var select127 = linear_select([ - part585, - part586, -]); - -var part587 = match("MESSAGE#353:00018:10/2", "nwparser.p0", "%{username->} via %{interface->} from host %{saddr->} (%{fld1})"); - -var all114 = all_match({ - processors: [ - part584, - select127, - part587, - ], - on_success: processor_chain([ - dup17, - dup3, - dup2, - dup9, - dup4, - dup5, - ]), -}); - -var msg355 = msg("00018:10", all114); - -var part588 = match("MESSAGE#354:00018:11/1_0", "nwparser.p0", "Service %{service->} was %{p0}"); - -var part589 = match("MESSAGE#354:00018:11/1_1", "nwparser.p0", "Attack group %{signame->} was %{p0}"); - -var select128 = linear_select([ - part588, - part589, -]); - -var part590 = match("MESSAGE#354:00018:11/2", "nwparser.p0", "%{disposition->} to policy ID %{policy_id->} by %{username->} via %{logon_type->} from host %{saddr->} %{p0}"); - -var part591 = match("MESSAGE#354:00018:11/3_0", "nwparser.p0", "to %{daddr}:%{dport}. %{p0}"); - -var select129 = linear_select([ - part591, - dup16, -]); - -var all115 = all_match({ - processors: [ - dup160, - select128, - part590, - select129, - dup10, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg356 = msg("00018:11", all115); - -var part592 = match("MESSAGE#355:00018:12/0", "nwparser.payload", "In policy %{policy_id}, the %{p0}"); - -var part593 = match("MESSAGE#355:00018:12/1_0", "nwparser.p0", "application %{p0}"); - -var part594 = match("MESSAGE#355:00018:12/1_1", "nwparser.p0", "attack severity %{p0}"); - -var part595 = match("MESSAGE#355:00018:12/1_2", "nwparser.p0", "DI attack component %{p0}"); - -var select130 = linear_select([ - part593, - part594, - part595, -]); - -var part596 = match("MESSAGE#355:00018:12/2", "nwparser.p0", "was modified by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})"); - -var all116 = all_match({ - processors: [ - part592, - select130, - part596, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg357 = msg("00018:12", all116); - -var part597 = match("MESSAGE#356:00018:32/1", "nwparser.p0", "%{}address %{dhost}(%{daddr}) was %{disposition->} %{p0}"); - -var all117 = all_match({ - processors: [ - dup361, - part597, - dup362, - dup164, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg358 = msg("00018:32", all117); - -var part598 = match("MESSAGE#357:00018:22/1", "nwparser.p0", "%{}address %{dhost->} was %{disposition->} %{p0}"); - -var all118 = all_match({ - processors: [ - dup361, - part598, - dup362, - dup164, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg359 = msg("00018:22", all118); - -var part599 = match("MESSAGE#358:00018:15/0", "nwparser.payload", "%{agent->} was %{disposition->} from policy %{policy_id->} %{p0}"); - -var select131 = linear_select([ - dup78, - dup77, -]); - -var part600 = match("MESSAGE#358:00018:15/2", "nwparser.p0", "address by admin %{administrator->} via NSRP Peer"); - -var all119 = all_match({ - processors: [ - part599, - select131, - part600, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg360 = msg("00018:15", all119); - -var part601 = match("MESSAGE#359:00018:14/0", "nwparser.payload", "%{agent->} was %{disposition->} %{p0}"); - -var part602 = match("MESSAGE#359:00018:14/1_0", "nwparser.p0", "to%{p0}"); - -var part603 = match("MESSAGE#359:00018:14/1_1", "nwparser.p0", "from%{p0}"); - -var select132 = linear_select([ - part602, - part603, -]); - -var part604 = match("MESSAGE#359:00018:14/2", "nwparser.p0", "%{}policy %{policy_id->} %{p0}"); - -var part605 = match("MESSAGE#359:00018:14/3_0", "nwparser.p0", "service %{p0}"); - -var part606 = match("MESSAGE#359:00018:14/3_1", "nwparser.p0", "source address %{p0}"); - -var part607 = match("MESSAGE#359:00018:14/3_2", "nwparser.p0", "destination address %{p0}"); - -var select133 = linear_select([ - part605, - part606, - part607, -]); - -var part608 = match("MESSAGE#359:00018:14/4", "nwparser.p0", "by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})"); - -var all120 = all_match({ - processors: [ - part601, - select132, - part604, - select133, - part608, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg361 = msg("00018:14", all120); - -var part609 = match("MESSAGE#360:00018:29", "nwparser.payload", "Service %{service->} was %{disposition->} to policy ID %{policy_id->} by admin %{administrator->} via NSRP Peer . (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg362 = msg("00018:29", part609); - -var part610 = match("MESSAGE#361:00018:07", "nwparser.payload", "%{agent->} was added to policy %{policy_id->} %{rule_group->} by admin %{administrator->} via NSRP Peer %{space->} (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg363 = msg("00018:07", part610); - -var part611 = match("MESSAGE#362:00018:18", "nwparser.payload", "Service %{service->} was %{disposition->} to policy ID %{policy_id->} by %{username->} via %{logon_type->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg364 = msg("00018:18", part611); - -var part612 = match("MESSAGE#363:00018:17", "nwparser.payload", "AntiSpam ns-profile was %{disposition->} from policy ID %{policy_id->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg365 = msg("00018:17", part612); - -var part613 = match("MESSAGE#364:00018:19", "nwparser.payload", "Source address Info %{info->} was %{disposition->} to policy ID %{policy_id->} by %{username->} via %{logon_type->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg366 = msg("00018:19", part613); - -var part614 = match("MESSAGE#365:00018:23/0_0", "nwparser.payload", "Destination %{p0}"); - -var part615 = match("MESSAGE#365:00018:23/0_1", "nwparser.payload", "Source %{p0}"); - -var select134 = linear_select([ - part614, - part615, -]); - -var part616 = match("MESSAGE#365:00018:23/1", "nwparser.p0", "address %{info->} was added to policy ID %{policy_id->} by %{username->} via %{logon_type->} %{p0}"); - -var part617 = match("MESSAGE#365:00018:23/2_0", "nwparser.p0", "from host %{p0}"); - -var select135 = linear_select([ - part617, - dup103, -]); - -var part618 = match("MESSAGE#365:00018:23/4_0", "nwparser.p0", "%{saddr->} to %{daddr->} %{p0}"); - -var part619 = match("MESSAGE#365:00018:23/4_1", "nwparser.p0", "%{daddr->} %{p0}"); - -var select136 = linear_select([ - part618, - part619, -]); - -var part620 = match("MESSAGE#365:00018:23/5", "nwparser.p0", "%{dport}:(%{fld1})"); - -var all121 = all_match({ - processors: [ - select134, - part616, - select135, - dup23, - select136, - part620, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg367 = msg("00018:23", all121); - -var part621 = match("MESSAGE#366:00018:21", "nwparser.payload", "Service %{service->} was deleted from policy ID %{policy_id->} by %{username->} via %{logon_type->} from host %{saddr}:%{sport}. (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg368 = msg("00018:21", part621); - -var part622 = match("MESSAGE#367:00018:24", "nwparser.payload", "Policy (%{policyname}) was %{disposition->} by %{username->} via %{logon_type->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg369 = msg("00018:24", part622); - -var part623 = match("MESSAGE#368:00018:25/1", "nwparser.p0", "%{}address %{info->} was added to policy ID %{policy_id->} by %{username->} via %{logon_type->} from host %{saddr}. (%{fld1})"); - -var all122 = all_match({ - processors: [ - dup363, - part623, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg370 = msg("00018:25", all122); - -var part624 = match("MESSAGE#369:00018:30/1", "nwparser.p0", "%{}address %{info->} was deleted from policy ID %{policy_id->} by %{username->} via %{logon_type->} from host %{saddr}. (%{fld1})"); - -var all123 = all_match({ - processors: [ - dup363, - part624, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg371 = msg("00018:30", all123); - -var part625 = match("MESSAGE#370:00018:26/0", "nwparser.payload", "In policy %{policy_id}, the application was modified to %{disposition->} by %{p0}"); - -var part626 = match("MESSAGE#370:00018:26/2_1", "nwparser.p0", "%{logon_type->} from host %{saddr}. (%{p0}"); - -var select137 = linear_select([ - dup48, - part626, -]); - -var all124 = all_match({ - processors: [ - part625, - dup364, - select137, - dup41, - ], - on_success: processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg372 = msg("00018:26", all124); - -var part627 = match("MESSAGE#371:00018:27", "nwparser.payload", "In policy %{policy_id}, the DI attack component was modified by %{username->} via %{logon_type->} from host %{saddr}:%{sport}. (%{fld1})", processor_chain([ - dup17, - dup2, - dup4, - dup5, - dup9, -])); - -var msg373 = msg("00018:27", part627); - -var part628 = match("MESSAGE#372:00018:28", "nwparser.payload", "In policy %{policyname}, the DI attack component was modified by admin %{administrator->} via %{logon_type}. (%{fld1})", processor_chain([ - dup17, - dup2, - dup4, - dup5, - dup9, - setc("info","the DI attack component was modified"), -])); - -var msg374 = msg("00018:28", part628); - -var part629 = match("MESSAGE#373:00018:03", "nwparser.payload", "Policy (%{policy_id}, %{info}) was %{disposition}", processor_chain([ - dup17, - dup2, - dup3, - dup4, - dup5, -])); - -var msg375 = msg("00018:03", part629); - -var part630 = match("MESSAGE#1213:00018:31", "nwparser.payload", "In policy %{policy_id}, the option %{fld2->} was %{disposition}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg376 = msg("00018:31", part630); - -var select138 = linear_select([ - msg347, - msg348, - msg349, - msg350, - msg351, - msg352, - msg353, - msg354, - msg355, - msg356, - msg357, - msg358, - msg359, - msg360, - msg361, - msg362, - msg363, - msg364, - msg365, - msg366, - msg367, - msg368, - msg369, - msg370, - msg371, - msg372, - msg373, - msg374, - msg375, - msg376, -]); - -var part631 = match("MESSAGE#374:00019", "nwparser.payload", "Attempt to enable WebTrends has %{disposition->} because WebTrends settings have not yet been configured", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg377 = msg("00019", part631); - -var part632 = match("MESSAGE#375:00019:01/2", "nwparser.p0", "has %{disposition->} because syslog settings have not yet been configured"); - -var all125 = all_match({ - processors: [ - dup165, - dup365, - part632, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg378 = msg("00019:01", all125); - -var part633 = match("MESSAGE#376:00019:02/0", "nwparser.payload", "Socket cannot be assigned for %{p0}"); - -var part634 = match("MESSAGE#376:00019:02/1_0", "nwparser.p0", "WebTrends%{}"); - -var part635 = match("MESSAGE#376:00019:02/1_1", "nwparser.p0", "syslog%{}"); - -var select139 = linear_select([ - part634, - part635, -]); - -var all126 = all_match({ - processors: [ - part633, - select139, - ], - on_success: processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg379 = msg("00019:02", all126); - -var part636 = match("MESSAGE#377:00019:03", "nwparser.payload", "Syslog VPN encryption has been %{disposition}", processor_chain([ - dup91, - dup2, - dup3, - dup4, - dup5, -])); - -var msg380 = msg("00019:03", part636); - -var select140 = linear_select([ - dup169, - dup78, -]); - -var select141 = linear_select([ - dup139, - dup170, - dup137, - dup122, -]); - -var all127 = all_match({ - processors: [ - dup168, - select140, - dup23, - select141, - dup171, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg381 = msg("00019:04", all127); - -var part637 = match("MESSAGE#379:00019:05/0", "nwparser.payload", "Syslog message level has been changed to %{p0}"); - -var part638 = match("MESSAGE#379:00019:05/1_0", "nwparser.p0", "debug%{}"); - -var part639 = match("MESSAGE#379:00019:05/1_1", "nwparser.p0", "information%{}"); - -var part640 = match("MESSAGE#379:00019:05/1_2", "nwparser.p0", "notification%{}"); - -var part641 = match("MESSAGE#379:00019:05/1_3", "nwparser.p0", "warning%{}"); - -var part642 = match("MESSAGE#379:00019:05/1_4", "nwparser.p0", "error%{}"); - -var part643 = match("MESSAGE#379:00019:05/1_5", "nwparser.p0", "critical%{}"); - -var part644 = match("MESSAGE#379:00019:05/1_6", "nwparser.p0", "alert%{}"); - -var part645 = match("MESSAGE#379:00019:05/1_7", "nwparser.p0", "emergency%{}"); - -var select142 = linear_select([ - part638, - part639, - part640, - part641, - part642, - part643, - part644, - part645, -]); - -var all128 = all_match({ - processors: [ - part637, - select142, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg382 = msg("00019:05", all128); - -var part646 = match("MESSAGE#380:00019:06/2", "nwparser.p0", "has been changed to %{p0}"); - -var all129 = all_match({ - processors: [ - dup168, - dup366, - part646, - dup367, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg383 = msg("00019:06", all129); - -var part647 = match("MESSAGE#381:00019:07", "nwparser.payload", "WebTrends VPN encryption has been %{disposition}", processor_chain([ - dup91, - dup2, - dup3, - dup4, - dup5, -])); - -var msg384 = msg("00019:07", part647); - -var part648 = match("MESSAGE#382:00019:08", "nwparser.payload", "WebTrends has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg385 = msg("00019:08", part648); - -var part649 = match("MESSAGE#383:00019:09/0", "nwparser.payload", "WebTrends host %{p0}"); - -var select143 = linear_select([ - dup139, - dup170, - dup137, -]); - -var all130 = all_match({ - processors: [ - part649, - select143, - dup171, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg386 = msg("00019:09", all130); - -var part650 = match("MESSAGE#384:00019:10/1_0", "nwparser.p0", "Traffic logging via syslog %{p0}"); - -var part651 = match("MESSAGE#384:00019:10/1_1", "nwparser.p0", "Syslog %{p0}"); - -var select144 = linear_select([ - part650, - part651, -]); - -var all131 = all_match({ - processors: [ - dup183, - select144, - dup138, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg387 = msg("00019:10", all131); - -var part652 = match("MESSAGE#385:00019:11/2", "nwparser.p0", "has %{disposition->} because there is no syslog server defined"); - -var all132 = all_match({ - processors: [ - dup165, - dup365, - part652, - ], - on_success: processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg388 = msg("00019:11", all132); - -var part653 = match("MESSAGE#386:00019:12", "nwparser.payload", "Removing all syslog servers%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg389 = msg("00019:12", part653); - -var part654 = match("MESSAGE#387:00019:13/0", "nwparser.payload", "Syslog server %{hostip->} %{p0}"); - -var select145 = linear_select([ - dup107, - dup106, -]); - -var part655 = match("MESSAGE#387:00019:13/2", "nwparser.p0", "%{disposition}"); - -var all133 = all_match({ - processors: [ - part654, - select145, - part655, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg390 = msg("00019:13", all133); - -var part656 = match("MESSAGE#388:00019:14/2", "nwparser.p0", "for %{hostip->} has been changed to %{p0}"); - -var all134 = all_match({ - processors: [ - dup168, - dup366, - part656, - dup367, - ], - on_success: processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg391 = msg("00019:14", all134); - -var part657 = match("MESSAGE#389:00019:15", "nwparser.payload", "Syslog cannot connect to the TCP server %{hostip}; the connection is closed.", processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, -])); - -var msg392 = msg("00019:15", part657); - -var part658 = match("MESSAGE#390:00019:16", "nwparser.payload", "All syslog servers were removed.%{}", processor_chain([ - setc("eventcategory","1701030000"), - setc("ec_activity","Delete"), - dup51, - dup2, - dup3, - dup4, - dup5, -])); - -var msg393 = msg("00019:16", part658); - -var part659 = match("MESSAGE#391:00019:17", "nwparser.payload", "Syslog server %{hostip->} host port number has been changed to %{network_port->} %{fld5}", processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup4, - dup5, -])); - -var msg394 = msg("00019:17", part659); - -var part660 = match("MESSAGE#392:00019:18/0", "nwparser.payload", "Traffic logging %{p0}"); - -var part661 = match("MESSAGE#392:00019:18/1_0", "nwparser.p0", "via syslog %{p0}"); - -var part662 = match("MESSAGE#392:00019:18/1_1", "nwparser.p0", "for syslog server %{hostip->} %{p0}"); - -var select146 = linear_select([ - part661, - part662, -]); - -var all135 = all_match({ - processors: [ - part660, - select146, - dup138, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg395 = msg("00019:18", all135); - -var part663 = match("MESSAGE#393:00019:19", "nwparser.payload", "Transport protocol for syslog server %{hostip->} was changed to udp", processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup4, - dup5, -])); - -var msg396 = msg("00019:19", part663); - -var part664 = match("MESSAGE#394:00019:20", "nwparser.payload", "The traffic/IDP syslog is enabled on backup device by netscreen via web from host %{saddr->} to %{daddr}:%{dport}. (%{fld1})", processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup4, - dup5, -])); - -var msg397 = msg("00019:20", part664); - -var select147 = linear_select([ - msg377, - msg378, - msg379, - msg380, - msg381, - msg382, - msg383, - msg384, - msg385, - msg386, - msg387, - msg388, - msg389, - msg390, - msg391, - msg392, - msg393, - msg394, - msg395, - msg396, - msg397, -]); - -var part665 = match("MESSAGE#395:00020", "nwparser.payload", "Schedule %{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg398 = msg("00020", part665); - -var part666 = match("MESSAGE#396:00020:01/0", "nwparser.payload", "System memory is low %{p0}"); - -var part667 = match("MESSAGE#396:00020:01/1_1", "nwparser.p0", "( %{p0}"); - -var select148 = linear_select([ - dup152, - part667, -]); - -var part668 = match("MESSAGE#396:00020:01/2", "nwparser.p0", "%{fld2->} bytes allocated out of %{p0}"); - -var part669 = match("MESSAGE#396:00020:01/3_0", "nwparser.p0", "total %{fld3->} bytes"); - -var part670 = match("MESSAGE#396:00020:01/3_1", "nwparser.p0", "%{fld4->} bytes total"); - -var select149 = linear_select([ - part669, - part670, -]); - -var all136 = all_match({ - processors: [ - part666, - select148, - part668, - select149, - ], - on_success: processor_chain([ - dup184, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg399 = msg("00020:01", all136); - -var part671 = match("MESSAGE#397:00020:02", "nwparser.payload", "System memory is low (%{fld2->} allocated out of %{fld3->} ) %{fld4->} times in %{fld5}", processor_chain([ - dup184, - dup2, - dup3, - dup4, - dup5, -])); - -var msg400 = msg("00020:02", part671); - -var select150 = linear_select([ - msg398, - msg399, - msg400, -]); - -var part672 = match("MESSAGE#398:00021", "nwparser.payload", "DIP %{fld2->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg401 = msg("00021", part672); - -var part673 = match("MESSAGE#399:00021:01", "nwparser.payload", "IP pool %{fld2->} with range %{info->} has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg402 = msg("00021:01", part673); - -var part674 = match("MESSAGE#400:00021:02", "nwparser.payload", "DNS server is not configured%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg403 = msg("00021:02", part674); - -var part675 = match("MESSAGE#401:00021:03", "nwparser.payload", "Connection refused by the DNS server%{}", processor_chain([ - dup185, - dup2, - dup3, - dup4, - dup5, -])); - -var msg404 = msg("00021:03", part675); - -var part676 = match("MESSAGE#402:00021:04", "nwparser.payload", "Unknown DNS error%{}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg405 = msg("00021:04", part676); - -var part677 = match("MESSAGE#403:00021:05", "nwparser.payload", "DIP port-translatation stickiness was %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg406 = msg("00021:05", part677); - -var part678 = match("MESSAGE#404:00021:06", "nwparser.payload", "DIP port-translation stickiness was %{disposition->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup4, - dup5, - dup9, - setc("info","DIP port-translation stickiness was modified"), -])); - -var msg407 = msg("00021:06", part678); - -var select151 = linear_select([ - msg401, - msg402, - msg403, - msg404, - msg405, - msg406, - msg407, -]); - -var part679 = match("MESSAGE#405:00022/1_0", "nwparser.p0", "power supplies %{p0}"); - -var part680 = match("MESSAGE#405:00022/1_1", "nwparser.p0", "fans %{p0}"); - -var select152 = linear_select([ - part679, - part680, -]); - -var part681 = match("MESSAGE#405:00022/2", "nwparser.p0", "are %{fld2->} functioning properly"); - -var all137 = all_match({ - processors: [ - dup186, - select152, - part681, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg408 = msg("00022", all137); - -var part682 = match("MESSAGE#406:00022:01/0_0", "nwparser.payload", "At least one power supply %{p0}"); - -var part683 = match("MESSAGE#406:00022:01/0_1", "nwparser.payload", "The power supply %{fld2->} %{p0}"); - -var part684 = match("MESSAGE#406:00022:01/0_2", "nwparser.payload", "At least one fan %{p0}"); - -var select153 = linear_select([ - part682, - part683, - part684, -]); - -var part685 = match("MESSAGE#406:00022:01/1", "nwparser.p0", "is not functioning properly%{p0}"); - -var all138 = all_match({ - processors: [ - select153, - part685, - dup368, - ], - on_success: processor_chain([ - dup187, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg409 = msg("00022:01", all138); - -var part686 = match("MESSAGE#407:00022:02", "nwparser.payload", "Global Manager VPN management tunnel has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg410 = msg("00022:02", part686); - -var part687 = match("MESSAGE#408:00022:03", "nwparser.payload", "Global Manager domain name has been defined as %{domain}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg411 = msg("00022:03", part687); - -var part688 = match("MESSAGE#409:00022:04/0", "nwparser.payload", "Reporting of the %{p0}"); - -var part689 = match("MESSAGE#409:00022:04/1_0", "nwparser.p0", "network activities %{p0}"); - -var part690 = match("MESSAGE#409:00022:04/1_1", "nwparser.p0", "device resources %{p0}"); - -var part691 = match("MESSAGE#409:00022:04/1_2", "nwparser.p0", "event logs %{p0}"); - -var part692 = match("MESSAGE#409:00022:04/1_3", "nwparser.p0", "summary logs %{p0}"); - -var select154 = linear_select([ - part689, - part690, - part691, - part692, -]); - -var part693 = match("MESSAGE#409:00022:04/2", "nwparser.p0", "to Global Manager has been %{disposition}"); - -var all139 = all_match({ - processors: [ - part688, - select154, - part693, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg412 = msg("00022:04", all139); - -var part694 = match("MESSAGE#410:00022:05", "nwparser.payload", "Global Manager has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg413 = msg("00022:05", part694); - -var part695 = match("MESSAGE#411:00022:06/0", "nwparser.payload", "Global Manager %{p0}"); - -var part696 = match("MESSAGE#411:00022:06/1_0", "nwparser.p0", "report %{p0}"); - -var part697 = match("MESSAGE#411:00022:06/1_1", "nwparser.p0", "listen %{p0}"); - -var select155 = linear_select([ - part696, - part697, -]); - -var part698 = match("MESSAGE#411:00022:06/2", "nwparser.p0", "port has been set to %{interface}"); - -var all140 = all_match({ - processors: [ - part695, - select155, - part698, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg414 = msg("00022:06", all140); - -var part699 = match("MESSAGE#412:00022:07", "nwparser.payload", "The Global Manager keep-alive value has been changed to %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg415 = msg("00022:07", part699); - -var part700 = match("MESSAGE#413:00022:08/0_0", "nwparser.payload", "System temperature %{p0}"); - -var part701 = match("MESSAGE#413:00022:08/0_1", "nwparser.payload", "System's temperature: %{p0}"); - -var part702 = match("MESSAGE#413:00022:08/0_2", "nwparser.payload", "The system temperature %{p0}"); - -var select156 = linear_select([ - part700, - part701, - part702, -]); - -var part703 = match("MESSAGE#413:00022:08/1", "nwparser.p0", "(%{fld2->} C%{p0}"); - -var part704 = match("MESSAGE#413:00022:08/2_0", "nwparser.p0", "entigrade, %{p0}"); - -var select157 = linear_select([ - part704, - dup96, -]); - -var part705 = match("MESSAGE#413:00022:08/3", "nwparser.p0", "%{fld3->} F%{p0}"); - -var part706 = match("MESSAGE#413:00022:08/4_0", "nwparser.p0", "ahrenheit %{p0}"); - -var select158 = linear_select([ - part706, - dup96, -]); - -var part707 = match("MESSAGE#413:00022:08/5", "nwparser.p0", ") is too high%{}"); - -var all141 = all_match({ - processors: [ - select156, - part703, - select157, - part705, - select158, - part707, - ], - on_success: processor_chain([ - dup188, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg416 = msg("00022:08", all141); - -var part708 = match("MESSAGE#414:00022:09/2", "nwparser.p0", "power supply is no%{p0}"); - -var select159 = linear_select([ - dup191, - dup192, -]); - -var part709 = match("MESSAGE#414:00022:09/4", "nwparser.p0", "functioning properly%{}"); - -var all142 = all_match({ - processors: [ - dup55, - dup369, - part708, - select159, - part709, - ], - on_success: processor_chain([ - dup188, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg417 = msg("00022:09", all142); - -var part710 = match("MESSAGE#415:00022:10/0", "nwparser.payload", "The NetScreen device was unable to upgrade the file system%{p0}"); - -var part711 = match("MESSAGE#415:00022:10/1_0", "nwparser.p0", " due to an internal conflict%{}"); - -var part712 = match("MESSAGE#415:00022:10/1_1", "nwparser.p0", ", but the old file system is intact%{}"); - -var select160 = linear_select([ - part711, - part712, -]); - -var all143 = all_match({ - processors: [ - part710, - select160, - ], - on_success: processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg418 = msg("00022:10", all143); - -var part713 = match("MESSAGE#416:00022:11/0", "nwparser.payload", "The NetScreen device was unable to upgrade %{p0}"); - -var part714 = match("MESSAGE#416:00022:11/1_0", "nwparser.p0", "due to an internal conflict%{}"); - -var part715 = match("MESSAGE#416:00022:11/1_1", "nwparser.p0", "the loader, but the loader is intact%{}"); - -var select161 = linear_select([ - part714, - part715, -]); - -var all144 = all_match({ - processors: [ - part713, - select161, - ], - on_success: processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg419 = msg("00022:11", all144); - -var part716 = match("MESSAGE#417:00022:12/0", "nwparser.payload", "Battery is no%{p0}"); - -var select162 = linear_select([ - dup192, - dup191, -]); - -var part717 = match("MESSAGE#417:00022:12/2", "nwparser.p0", "functioning properly.%{}"); - -var all145 = all_match({ - processors: [ - part716, - select162, - part717, - ], - on_success: processor_chain([ - dup188, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg420 = msg("00022:12", all145); - -var part718 = match("MESSAGE#418:00022:13", "nwparser.payload", "System's temperature (%{fld2->} Centigrade, %{fld3->} Fahrenheit) is OK now.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg421 = msg("00022:13", part718); - -var part719 = match("MESSAGE#419:00022:14", "nwparser.payload", "The power supply %{fld2->} is functioning properly. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg422 = msg("00022:14", part719); - -var select163 = linear_select([ - msg408, - msg409, - msg410, - msg411, - msg412, - msg413, - msg414, - msg415, - msg416, - msg417, - msg418, - msg419, - msg420, - msg421, - msg422, -]); - -var part720 = match("MESSAGE#420:00023", "nwparser.payload", "VIP server %{hostip->} is not responding", processor_chain([ - dup187, - dup2, - dup3, - dup4, - dup5, -])); - -var msg423 = msg("00023", part720); - -var part721 = match("MESSAGE#421:00023:01", "nwparser.payload", "VIP/load balance server %{hostip->} cannot be contacted", processor_chain([ - dup187, - dup2, - dup3, - dup4, - dup5, -])); - -var msg424 = msg("00023:01", part721); - -var part722 = match("MESSAGE#422:00023:02", "nwparser.payload", "VIP server %{hostip->} cannot be contacted", processor_chain([ - dup187, - dup2, - dup3, - dup4, - dup5, -])); - -var msg425 = msg("00023:02", part722); - -var select164 = linear_select([ - msg423, - msg424, - msg425, -]); - -var part723 = match("MESSAGE#423:00024/0_0", "nwparser.payload", "The DHCP %{p0}"); - -var part724 = match("MESSAGE#423:00024/0_1", "nwparser.payload", " DHCP %{p0}"); - -var select165 = linear_select([ - part723, - part724, -]); - -var part725 = match("MESSAGE#423:00024/2_0", "nwparser.p0", "IP address pool has %{p0}"); - -var part726 = match("MESSAGE#423:00024/2_1", "nwparser.p0", "options have been %{p0}"); - -var select166 = linear_select([ - part725, - part726, -]); - -var all146 = all_match({ - processors: [ - select165, - dup193, - select166, - dup52, - dup368, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg426 = msg("00024", all146); - -var part727 = match("MESSAGE#424:00024:01/0_0", "nwparser.payload", "Traffic log %{p0}"); - -var part728 = match("MESSAGE#424:00024:01/0_1", "nwparser.payload", "Alarm log %{p0}"); - -var part729 = match("MESSAGE#424:00024:01/0_2", "nwparser.payload", "Event log %{p0}"); - -var part730 = match("MESSAGE#424:00024:01/0_3", "nwparser.payload", "Self log %{p0}"); - -var part731 = match("MESSAGE#424:00024:01/0_4", "nwparser.payload", "Asset Recovery log %{p0}"); - -var select167 = linear_select([ - part727, - part728, - part729, - part730, - part731, -]); - -var part732 = match("MESSAGE#424:00024:01/1", "nwparser.p0", "has overflowed%{}"); - -var all147 = all_match({ - processors: [ - select167, - part732, - ], - on_success: processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg427 = msg("00024:01", all147); - -var part733 = match("MESSAGE#425:00024:02/0", "nwparser.payload", "DHCP relay agent settings on %{fld2->} %{p0}"); - -var part734 = match("MESSAGE#425:00024:02/1_0", "nwparser.p0", "are %{p0}"); - -var part735 = match("MESSAGE#425:00024:02/1_1", "nwparser.p0", "have been %{p0}"); - -var select168 = linear_select([ - part734, - part735, -]); - -var part736 = match("MESSAGE#425:00024:02/2", "nwparser.p0", "%{disposition->} (%{fld1})"); - -var all148 = all_match({ - processors: [ - part733, - select168, - part736, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg428 = msg("00024:02", all148); - -var part737 = match("MESSAGE#426:00024:03/0", "nwparser.payload", "DHCP server IP address pool %{p0}"); - -var select169 = linear_select([ - dup194, - dup106, -]); - -var part738 = match("MESSAGE#426:00024:03/2", "nwparser.p0", "changed. (%{fld1})"); - -var all149 = all_match({ - processors: [ - part737, - select169, - part738, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg429 = msg("00024:03", all149); - -var select170 = linear_select([ - msg426, - msg427, - msg428, - msg429, -]); - -var part739 = match("MESSAGE#427:00025", "nwparser.payload", "The DHCP server IP address pool has changed%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg430 = msg("00025", part739); - -var part740 = match("MESSAGE#428:00025:01", "nwparser.payload", "PKI: The current device %{disposition->} to save the certificate authority configuration.", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg431 = msg("00025:01", part740); - -var part741 = match("MESSAGE#429:00025:02", "nwparser.payload", "%{disposition->} to send the X509 request file via e-mail", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg432 = msg("00025:02", part741); - -var part742 = match("MESSAGE#430:00025:03", "nwparser.payload", "%{disposition->} to save the CA configuration", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg433 = msg("00025:03", part742); - -var part743 = match("MESSAGE#431:00025:04", "nwparser.payload", "Cannot load more X509 certificates. The %{result}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg434 = msg("00025:04", part743); - -var select171 = linear_select([ - msg430, - msg431, - msg432, - msg433, - msg434, -]); - -var part744 = match("MESSAGE#432:00026", "nwparser.payload", "%{signame->} have been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, -])); - -var msg435 = msg("00026", part744); - -var part745 = match("MESSAGE#433:00026:13", "nwparser.payload", "%{signame->} have been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, on interface %{interface}", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup61, -])); - -var msg436 = msg("00026:13", part745); - -var part746 = match("MESSAGE#434:00026:01/2", "nwparser.p0", "PKA key has been %{p0}"); - -var part747 = match("MESSAGE#434:00026:01/4", "nwparser.p0", "admin user %{administrator}. (Key ID = %{fld2})"); - -var all150 = all_match({ - processors: [ - dup195, - dup370, - part746, - dup371, - part747, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg437 = msg("00026:01", all150); - -var part748 = match("MESSAGE#435:00026:02/1_0", "nwparser.p0", ": SCS %{p0}"); - -var select172 = linear_select([ - part748, - dup96, -]); - -var part749 = match("MESSAGE#435:00026:02/2", "nwparser.p0", "has been %{disposition->} for %{p0}"); - -var part750 = match("MESSAGE#435:00026:02/3_0", "nwparser.p0", "root system %{p0}"); - -var part751 = match("MESSAGE#435:00026:02/3_1", "nwparser.p0", "%{interface->} %{p0}"); - -var select173 = linear_select([ - part750, - part751, -]); - -var all151 = all_match({ - processors: [ - dup195, - select172, - part749, - select173, - dup116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg438 = msg("00026:02", all151); - -var part752 = match("MESSAGE#436:00026:03/2", "nwparser.p0", "%{change_attribute->} has been changed from %{change_old->} to %{change_new}"); - -var all152 = all_match({ - processors: [ - dup195, - dup370, - part752, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg439 = msg("00026:03", all152); - -var part753 = match("MESSAGE#437:00026:04", "nwparser.payload", "SCS: Connection has been terminated for admin user %{administrator->} at %{hostip}:%{network_port}", processor_chain([ - dup198, - dup2, - dup4, - dup5, - dup3, -])); - -var msg440 = msg("00026:04", part753); - -var part754 = match("MESSAGE#438:00026:05", "nwparser.payload", "SCS: Host client has requested NO cipher from %{interface}", processor_chain([ - dup198, - dup2, - dup3, - dup4, - dup5, -])); - -var msg441 = msg("00026:05", part754); - -var part755 = match("MESSAGE#439:00026:06", "nwparser.payload", "SCS: SSH user %{username->} has been authenticated using PKA RSA from %{saddr}:%{sport}. (key-ID=%{fld2}", processor_chain([ - dup199, - dup29, - dup30, - dup31, - dup32, - dup2, - dup3, - dup4, - dup5, -])); - -var msg442 = msg("00026:06", part755); - -var part756 = match("MESSAGE#440:00026:07", "nwparser.payload", "SCS: SSH user %{username->} has been authenticated using password from %{saddr}:%{sport}.", processor_chain([ - dup199, - dup29, - dup30, - dup31, - dup32, - dup2, - dup3, - dup4, - dup5, -])); - -var msg443 = msg("00026:07", part756); - -var part757 = match("MESSAGE#441:00026:08/0", "nwparser.payload", "SSH user %{username->} has been authenticated using %{p0}"); - -var part758 = match("MESSAGE#441:00026:08/2", "nwparser.p0", "from %{saddr}:%{sport->} [ with key ID %{fld2->} ]"); - -var all153 = all_match({ - processors: [ - part757, - dup372, - part758, - ], - on_success: processor_chain([ - dup199, - dup29, - dup30, - dup31, - dup32, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg444 = msg("00026:08", all153); - -var part759 = match("MESSAGE#442:00026:09", "nwparser.payload", "IPSec tunnel on int %{interface->} with tunnel ID %{fld2->} received a packet with a bad SPI.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg445 = msg("00026:09", part759); - -var part760 = match("MESSAGE#443:00026:10/0", "nwparser.payload", "SSH: %{p0}"); - -var part761 = match("MESSAGE#443:00026:10/1_0", "nwparser.p0", "Failed %{p0}"); - -var part762 = match("MESSAGE#443:00026:10/1_1", "nwparser.p0", "Attempt %{p0}"); - -var select174 = linear_select([ - part761, - part762, -]); - -var part763 = match("MESSAGE#443:00026:10/3_0", "nwparser.p0", "bind duplicate %{p0}"); - -var select175 = linear_select([ - part763, - dup201, -]); - -var part764 = match("MESSAGE#443:00026:10/6", "nwparser.p0", "admin user '%{administrator}' (Key ID %{fld2})"); - -var all154 = all_match({ - processors: [ - part760, - select174, - dup103, - select175, - dup202, - dup373, - part764, - ], - on_success: processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg446 = msg("00026:10", all154); - -var part765 = match("MESSAGE#444:00026:11", "nwparser.payload", "SSH: Maximum number of PKA keys (%{fld2}) has been bound to user '%{username}' Key not bound. (Key ID %{fld3})", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg447 = msg("00026:11", part765); - -var part766 = match("MESSAGE#445:00026:12", "nwparser.payload", "IKE %{fld2}: Missing heartbeats have exceeded the threshold. All Phase 1 and 2 SAs have been removed", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg448 = msg("00026:12", part766); - -var select176 = linear_select([ - msg435, - msg436, - msg437, - msg438, - msg439, - msg440, - msg441, - msg442, - msg443, - msg444, - msg445, - msg446, - msg447, - msg448, -]); - -var part767 = match("MESSAGE#446:00027/2", "nwparser.p0", "user %{username->} from %{p0}"); - -var part768 = match("MESSAGE#446:00027/3_0", "nwparser.p0", "IP address %{saddr}:%{sport}"); - -var part769 = match("MESSAGE#446:00027/3_1", "nwparser.p0", "%{saddr}:%{sport}"); - -var part770 = match("MESSAGE#446:00027/3_2", "nwparser.p0", "console%{}"); - -var select177 = linear_select([ - part768, - part769, - part770, -]); - -var all155 = all_match({ - processors: [ - dup204, - dup374, - part767, - select177, - ], - on_success: processor_chain([ - dup206, - dup30, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg449 = msg("00027", all155); - -var part771 = match("MESSAGE#447:00027:01", "nwparser.payload", "%{change_attribute->} has been restored from %{change_old->} to default port %{change_new}. %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg450 = msg("00027:01", part771); - -var part772 = match("MESSAGE#448:00027:02", "nwparser.payload", "%{change_attribute->} has been restored from %{change_old->} to %{change_new}. %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg451 = msg("00027:02", part772); - -var part773 = match("MESSAGE#449:00027:03", "nwparser.payload", "%{change_attribute->} has been changed from %{change_old->} to port %{change_new}. %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg452 = msg("00027:03", part773); - -var part774 = match("MESSAGE#450:00027:04", "nwparser.payload", "%{change_attribute->} has been changed from %{change_old->} to port %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg453 = msg("00027:04", part774); - -var part775 = match("MESSAGE#451:00027:05/0", "nwparser.payload", "ScreenOS %{version->} %{p0}"); - -var part776 = match("MESSAGE#451:00027:05/1_0", "nwparser.p0", "Serial %{p0}"); - -var part777 = match("MESSAGE#451:00027:05/1_1", "nwparser.p0", "serial %{p0}"); - -var select178 = linear_select([ - part776, - part777, -]); - -var part778 = match("MESSAGE#451:00027:05/2", "nwparser.p0", "# %{fld2}: Asset recovery %{p0}"); - -var part779 = match("MESSAGE#451:00027:05/3_0", "nwparser.p0", "performed %{p0}"); - -var select179 = linear_select([ - part779, - dup127, -]); - -var select180 = linear_select([ - dup207, - dup208, -]); - -var all156 = all_match({ - processors: [ - part775, - select178, - part778, - select179, - dup23, - select180, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg454 = msg("00027:05", all156); - -var part780 = match("MESSAGE#452:00027:06/0", "nwparser.payload", "Device Reset (Asset Recovery) has been %{p0}"); - -var select181 = linear_select([ - dup208, - dup207, -]); - -var all157 = all_match({ - processors: [ - part780, - select181, - ], - on_success: processor_chain([ - setc("eventcategory","1606000000"), - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg455 = msg("00027:06", all157); - -var part781 = match("MESSAGE#453:00027:07", "nwparser.payload", "%{change_attribute->} has been changed from %{change_old->} to %{change_new}. %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg456 = msg("00027:07", part781); - -var part782 = match("MESSAGE#454:00027:08", "nwparser.payload", "System configuration has been erased%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg457 = msg("00027:08", part782); - -var part783 = match("MESSAGE#455:00027:09", "nwparser.payload", "License key %{fld2->} is due to expire in %{fld3}.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg458 = msg("00027:09", part783); - -var part784 = match("MESSAGE#456:00027:10", "nwparser.payload", "License key %{fld2->} has expired.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg459 = msg("00027:10", part784); - -var part785 = match("MESSAGE#457:00027:11", "nwparser.payload", "License key %{fld2->} expired after 30-day grace period.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg460 = msg("00027:11", part785); - -var part786 = match("MESSAGE#458:00027:12/0", "nwparser.payload", "Request to retrieve license key failed to reach %{p0}"); - -var part787 = match("MESSAGE#458:00027:12/1_0", "nwparser.p0", "the server %{p0}"); - -var select182 = linear_select([ - part787, - dup193, -]); - -var part788 = match("MESSAGE#458:00027:12/2", "nwparser.p0", "by %{fld2}. Server url: %{url}"); - -var all158 = all_match({ - processors: [ - part786, - select182, - part788, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg461 = msg("00027:12", all158); - -var part789 = match("MESSAGE#459:00027:13/2", "nwparser.p0", "user %{username}"); - -var all159 = all_match({ - processors: [ - dup204, - dup374, - part789, - ], - on_success: processor_chain([ - dup206, - dup30, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg462 = msg("00027:13", all159); - -var part790 = match("MESSAGE#460:00027:14/0", "nwparser.payload", "Configuration Erasure Process %{p0}"); - -var part791 = match("MESSAGE#460:00027:14/1_0", "nwparser.p0", "has been initiated %{p0}"); - -var part792 = match("MESSAGE#460:00027:14/1_1", "nwparser.p0", "aborted %{p0}"); - -var select183 = linear_select([ - part791, - part792, -]); - -var part793 = match("MESSAGE#460:00027:14/2", "nwparser.p0", ".%{space}(%{fld1})"); - -var all160 = all_match({ - processors: [ - part790, - select183, - part793, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg463 = msg("00027:14", all160); - -var part794 = match("MESSAGE#461:00027:15", "nwparser.payload", "Waiting for 2nd confirmation. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg464 = msg("00027:15", part794); - -var part795 = match("MESSAGE#1220:00027:16", "nwparser.payload", "Admin %{fld3->} policy id %{policy_id->} name \"%{fld2->} has been re-enabled by NetScreen system after being locked due to excessive failed login attempts (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg465 = msg("00027:16", part795); - -var part796 = match("MESSAGE#1225:00027:17", "nwparser.payload", "Admin %{username->} is locked and will be unlocked after %{duration->} minutes (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg466 = msg("00027:17", part796); - -var part797 = match("MESSAGE#1226:00027:18", "nwparser.payload", "Login attempt by admin %{username->} from %{saddr->} is refused as this account is locked (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg467 = msg("00027:18", part797); - -var part798 = match("MESSAGE#1227:00027:19", "nwparser.payload", "Admin %{username->} has been re-enabled by NetScreen system after being locked due to excessive failed login attempts (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg468 = msg("00027:19", part798); - -var select184 = linear_select([ - msg449, - msg450, - msg451, - msg452, - msg453, - msg454, - msg455, - msg456, - msg457, - msg458, - msg459, - msg460, - msg461, - msg462, - msg463, - msg464, - msg465, - msg466, - msg467, - msg468, -]); - -var part799 = match("MESSAGE#462:00028/0_0", "nwparser.payload", "An Intruder%{p0}"); - -var part800 = match("MESSAGE#462:00028/0_1", "nwparser.payload", "Intruder%{p0}"); - -var part801 = match("MESSAGE#462:00028/0_2", "nwparser.payload", "An intruter%{p0}"); - -var select185 = linear_select([ - part799, - part800, - part801, -]); - -var part802 = match("MESSAGE#462:00028/1", "nwparser.p0", "%{}has attempted to connect to the NetScreen-Global PRO port! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} at interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times"); - -var all161 = all_match({ - processors: [ - select185, - part802, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, - setc("signame","Attempt to Connect to the NetScreen-Global Port"), - ]), -}); - -var msg469 = msg("00028", all161); - -var part803 = match("MESSAGE#463:00029", "nwparser.payload", "DNS has been refreshed%{}", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg470 = msg("00029", part803); - -var part804 = match("MESSAGE#464:00029:01", "nwparser.payload", "DHCP file write: out of memory.%{}", processor_chain([ - dup184, - dup2, - dup3, - dup4, - dup5, -])); - -var msg471 = msg("00029:01", part804); - -var part805 = match("MESSAGE#465:00029:02/0", "nwparser.payload", "The DHCP process cannot open file %{fld2->} to %{p0}"); - -var part806 = match("MESSAGE#465:00029:02/1_0", "nwparser.p0", "read %{p0}"); - -var part807 = match("MESSAGE#465:00029:02/1_1", "nwparser.p0", "write %{p0}"); - -var select186 = linear_select([ - part806, - part807, -]); - -var part808 = match("MESSAGE#465:00029:02/2", "nwparser.p0", "data.%{}"); - -var all162 = all_match({ - processors: [ - part805, - select186, - part808, - ], - on_success: processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg472 = msg("00029:02", all162); - -var part809 = match("MESSAGE#466:00029:03/2", "nwparser.p0", "%{} %{interface->} is full. Unable to %{p0}"); - -var part810 = match("MESSAGE#466:00029:03/3_0", "nwparser.p0", "commit %{p0}"); - -var part811 = match("MESSAGE#466:00029:03/3_1", "nwparser.p0", "offer %{p0}"); - -var select187 = linear_select([ - part810, - part811, -]); - -var part812 = match("MESSAGE#466:00029:03/4", "nwparser.p0", "IP address to client at %{fld2}"); - -var all163 = all_match({ - processors: [ - dup210, - dup337, - part809, - select187, - part812, - ], - on_success: processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg473 = msg("00029:03", all163); - -var part813 = match("MESSAGE#467:00029:04", "nwparser.payload", "DHCP server set to OFF on %{interface->} (another server found on %{hostip}).", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg474 = msg("00029:04", part813); - -var select188 = linear_select([ - msg470, - msg471, - msg472, - msg473, - msg474, -]); - -var part814 = match("MESSAGE#468:00030", "nwparser.payload", "CA configuration is invalid%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg475 = msg("00030", part814); - -var part815 = match("MESSAGE#469:00030:01/0", "nwparser.payload", "DSS checking of CRLs has been changed from %{p0}"); - -var part816 = match("MESSAGE#469:00030:01/1_0", "nwparser.p0", "0 to 1%{}"); - -var part817 = match("MESSAGE#469:00030:01/1_1", "nwparser.p0", "1 to 0%{}"); - -var select189 = linear_select([ - part816, - part817, -]); - -var all164 = all_match({ - processors: [ - part815, - select189, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg476 = msg("00030:01", all164); - -var part818 = match("MESSAGE#470:00030:05", "nwparser.payload", "For the X509 certificate %{change_attribute->} has been changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg477 = msg("00030:05", part818); - -var part819 = match("MESSAGE#471:00030:06", "nwparser.payload", "In the X509 certificate request the %{fld2->} field has been changed from %{fld3}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg478 = msg("00030:06", part819); - -var part820 = match("MESSAGE#472:00030:07", "nwparser.payload", "RA X509 certificate cannot be loaded%{}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg479 = msg("00030:07", part820); - -var part821 = match("MESSAGE#473:00030:10", "nwparser.payload", "Self-signed X509 certificate cannot be generated%{}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg480 = msg("00030:10", part821); - -var part822 = match("MESSAGE#474:00030:12", "nwparser.payload", "The public key for ScreenOS image has successfully been updated%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg481 = msg("00030:12", part822); - -var part823 = match("MESSAGE#475:00030:13/0", "nwparser.payload", "The public key used for ScreenOS image authentication cannot be %{p0}"); - -var part824 = match("MESSAGE#475:00030:13/1_0", "nwparser.p0", "decoded%{}"); - -var part825 = match("MESSAGE#475:00030:13/1_1", "nwparser.p0", "loaded%{}"); - -var select190 = linear_select([ - part824, - part825, -]); - -var all165 = all_match({ - processors: [ - part823, - select190, - ], - on_success: processor_chain([ - dup35, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg482 = msg("00030:13", all165); - -var part826 = match("MESSAGE#476:00030:14/1_0", "nwparser.p0", "CA IDENT %{p0}"); - -var part827 = match("MESSAGE#476:00030:14/1_1", "nwparser.p0", "Challenge password %{p0}"); - -var part828 = match("MESSAGE#476:00030:14/1_2", "nwparser.p0", "CA CGI URL %{p0}"); - -var part829 = match("MESSAGE#476:00030:14/1_3", "nwparser.p0", "RA CGI URL %{p0}"); - -var select191 = linear_select([ - part826, - part827, - part828, - part829, -]); - -var part830 = match("MESSAGE#476:00030:14/2", "nwparser.p0", "for SCEP %{p0}"); - -var part831 = match("MESSAGE#476:00030:14/3_0", "nwparser.p0", "requests %{p0}"); - -var select192 = linear_select([ - part831, - dup16, -]); - -var part832 = match("MESSAGE#476:00030:14/4", "nwparser.p0", "has been changed from %{change_old->} to %{change_new}"); - -var all166 = all_match({ - processors: [ - dup55, - select191, - part830, - select192, - part832, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg483 = msg("00030:14", all166); - -var msg484 = msg("00030:02", dup375); - -var part833 = match("MESSAGE#478:00030:15", "nwparser.payload", "X509 certificate for ScreenOS image authentication is invalid%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg485 = msg("00030:15", part833); - -var part834 = match("MESSAGE#479:00030:16", "nwparser.payload", "X509 certificate has been deleted%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg486 = msg("00030:16", part834); - -var part835 = match("MESSAGE#480:00030:18", "nwparser.payload", "PKI CRL: no revoke info accept per config DN %{interface}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg487 = msg("00030:18", part835); - -var part836 = match("MESSAGE#481:00030:19/0", "nwparser.payload", "PKI: A configurable item %{change_attribute->} %{p0}"); - -var part837 = match("MESSAGE#481:00030:19/1_0", "nwparser.p0", "mode %{p0}"); - -var part838 = match("MESSAGE#481:00030:19/1_1", "nwparser.p0", "field%{p0}"); - -var select193 = linear_select([ - part837, - part838, -]); - -var part839 = match("MESSAGE#481:00030:19/2", "nwparser.p0", "%{}has changed from %{change_old->} to %{change_new}"); - -var all167 = all_match({ - processors: [ - part836, - select193, - part839, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg488 = msg("00030:19", all167); - -var part840 = match("MESSAGE#482:00030:30", "nwparser.payload", "PKI: NSRP cold sync start for total of %{fld2->} items.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg489 = msg("00030:30", part840); - -var part841 = match("MESSAGE#483:00030:31", "nwparser.payload", "PKI: NSRP sync received cold sync item %{fld2->} out of order expect %{fld3->} of %{fld4}.", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg490 = msg("00030:31", part841); - -var part842 = match("MESSAGE#484:00030:32", "nwparser.payload", "PKI: NSRP sync received cold sync item %{fld2->} without first item.", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg491 = msg("00030:32", part842); - -var part843 = match("MESSAGE#485:00030:33", "nwparser.payload", "PKI: NSRP sync received normal item during cold sync.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg492 = msg("00030:33", part843); - -var part844 = match("MESSAGE#486:00030:34", "nwparser.payload", "PKI: The CRL %{policy_id->} is deleted.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg493 = msg("00030:34", part844); - -var part845 = match("MESSAGE#487:00030:35", "nwparser.payload", "PKI: The NSRP high availability synchronization %{fld2->} failed.", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg494 = msg("00030:35", part845); - -var part846 = match("MESSAGE#488:00030:36", "nwparser.payload", "PKI: The %{change_attribute->} has changed from %{change_old->} to %{change_new}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg495 = msg("00030:36", part846); - -var part847 = match("MESSAGE#489:00030:37", "nwparser.payload", "PKI: The X.509 certificate for the ScreenOS image authentication is invalid.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg496 = msg("00030:37", part847); - -var part848 = match("MESSAGE#490:00030:38", "nwparser.payload", "PKI: The X.509 local certificate cannot be sync to vsd member.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg497 = msg("00030:38", part848); - -var part849 = match("MESSAGE#491:00030:39/0", "nwparser.payload", "PKI: The X.509 certificate %{p0}"); - -var part850 = match("MESSAGE#491:00030:39/1_0", "nwparser.p0", "revocation list %{p0}"); - -var select194 = linear_select([ - part850, - dup16, -]); - -var part851 = match("MESSAGE#491:00030:39/2", "nwparser.p0", "cannot be loaded during NSRP synchronization.%{}"); - -var all168 = all_match({ - processors: [ - part849, - select194, - part851, - ], - on_success: processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg498 = msg("00030:39", all168); - -var part852 = match("MESSAGE#492:00030:17/0", "nwparser.payload", "X509 %{p0}"); - -var part853 = match("MESSAGE#492:00030:17/2", "nwparser.p0", "cannot be loaded%{}"); - -var all169 = all_match({ - processors: [ - part852, - dup376, - part853, - ], - on_success: processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg499 = msg("00030:17", all169); - -var part854 = match("MESSAGE#493:00030:40/0", "nwparser.payload", "PKI: The certificate %{fld2->} will expire %{p0}"); - -var part855 = match("MESSAGE#493:00030:40/1_1", "nwparser.p0", "please %{p0}"); - -var select195 = linear_select([ - dup214, - part855, -]); - -var part856 = match("MESSAGE#493:00030:40/2", "nwparser.p0", "renew.%{}"); - -var all170 = all_match({ - processors: [ - part854, - select195, - part856, - ], - on_success: processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg500 = msg("00030:40", all170); - -var part857 = match("MESSAGE#494:00030:41", "nwparser.payload", "PKI: The certificate revocation list has expired issued by certificate authority %{fld2}.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg501 = msg("00030:41", part857); - -var part858 = match("MESSAGE#495:00030:42", "nwparser.payload", "PKI: The configuration content of certificate authority %{fld2->} is not valid.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg502 = msg("00030:42", part858); - -var part859 = match("MESSAGE#496:00030:43", "nwparser.payload", "PKI: The device cannot allocate this object id number %{fld2}.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg503 = msg("00030:43", part859); - -var part860 = match("MESSAGE#497:00030:44", "nwparser.payload", "PKI: The device cannot extract the X.509 certificate revocation list [ (CRL) ].%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg504 = msg("00030:44", part860); - -var part861 = match("MESSAGE#498:00030:45", "nwparser.payload", "PKI: The device cannot find the PKI object %{fld2->} during cold sync.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg505 = msg("00030:45", part861); - -var part862 = match("MESSAGE#499:00030:46", "nwparser.payload", "PKI: The device cannot load X.509 certificate onto the device certificate %{fld2}.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg506 = msg("00030:46", part862); - -var part863 = match("MESSAGE#500:00030:47", "nwparser.payload", "PKI: The device cannot load a certificate pending SCEP completion.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg507 = msg("00030:47", part863); - -var part864 = match("MESSAGE#501:00030:48", "nwparser.payload", "PKI: The device cannot load an X.509 certificate revocation list (CRL).%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg508 = msg("00030:48", part864); - -var part865 = match("MESSAGE#502:00030:49", "nwparser.payload", "PKI: The device cannot load the CA certificate received through SCEP.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg509 = msg("00030:49", part865); - -var part866 = match("MESSAGE#503:00030:50", "nwparser.payload", "PKI: The device cannot load the X.509 certificate revocation list (CRL) from the file.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg510 = msg("00030:50", part866); - -var part867 = match("MESSAGE#504:00030:51", "nwparser.payload", "PKI: The device cannot load the X.509 local certificate received through SCEP.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg511 = msg("00030:51", part867); - -var part868 = match("MESSAGE#505:00030:52", "nwparser.payload", "PKI: The device cannot load the X.509 %{product->} during boot.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg512 = msg("00030:52", part868); - -var part869 = match("MESSAGE#506:00030:53", "nwparser.payload", "PKI: The device cannot load the X.509 certificate file.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg513 = msg("00030:53", part869); - -var part870 = match("MESSAGE#507:00030:54", "nwparser.payload", "PKI: The device completed the coldsync of the PKI object at %{fld2->} attempt.", processor_chain([ - dup44, - dup211, - dup31, - dup2, - dup3, - dup4, - dup5, -])); - -var msg514 = msg("00030:54", part870); - -var part871 = match("MESSAGE#508:00030:55/0", "nwparser.payload", "PKI: The device could not generate %{p0}"); - -var all171 = all_match({ - processors: [ - part871, - dup377, - dup217, - ], - on_success: processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg515 = msg("00030:55", all171); - -var part872 = match("MESSAGE#509:00030:56", "nwparser.payload", "PKI: The device detected an invalid RSA key.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg516 = msg("00030:56", part872); - -var part873 = match("MESSAGE#510:00030:57", "nwparser.payload", "PKI: The device detected an invalid digital signature algorithm (DSA) key.%{}", processor_chain([ - dup35, - dup218, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg517 = msg("00030:57", part873); - -var part874 = match("MESSAGE#511:00030:58", "nwparser.payload", "PKI: The device failed to coldsync the PKI object at %{fld2->} attempt.", processor_chain([ - dup86, - dup218, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg518 = msg("00030:58", part874); - -var part875 = match("MESSAGE#512:00030:59", "nwparser.payload", "PKI: The device failed to decode the public key of the image%{quote}s signer certificate.", processor_chain([ - dup35, - dup218, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg519 = msg("00030:59", part875); - -var part876 = match("MESSAGE#513:00030:60", "nwparser.payload", "PKI: The device failed to install the RSA key.%{}", processor_chain([ - dup35, - dup218, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg520 = msg("00030:60", part876); - -var part877 = match("MESSAGE#514:00030:61", "nwparser.payload", "PKI: The device failed to retrieve the pending certificate %{fld2}.", processor_chain([ - dup35, - dup211, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg521 = msg("00030:61", part877); - -var part878 = match("MESSAGE#515:00030:62", "nwparser.payload", "PKI: The device failed to save the certificate authority related configuration.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg522 = msg("00030:62", part878); - -var part879 = match("MESSAGE#516:00030:63", "nwparser.payload", "PKI: The device failed to store the authority configuration.%{}", processor_chain([ - dup18, - dup219, - dup51, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg523 = msg("00030:63", part879); - -var part880 = match("MESSAGE#517:00030:64", "nwparser.payload", "PKI: The device failed to synchronize new DSA/RSA key pair to NSRP peer.%{}", processor_chain([ - dup18, - dup218, - dup51, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg524 = msg("00030:64", part880); - -var part881 = match("MESSAGE#518:00030:65", "nwparser.payload", "PKI: The device failed to synchronize DSA/RSA key pair to NSRP peer.%{}", processor_chain([ - dup18, - dup218, - dup51, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg525 = msg("00030:65", part881); - -var part882 = match("MESSAGE#519:00030:66", "nwparser.payload", "PKI: The device has detected an invalid X.509 object attribute %{fld2}.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg526 = msg("00030:66", part882); - -var part883 = match("MESSAGE#520:00030:67", "nwparser.payload", "PKI: The device has detected invalid X.509 object content.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg527 = msg("00030:67", part883); - -var part884 = match("MESSAGE#521:00030:68", "nwparser.payload", "PKI: The device has failed to load an invalid X.509 object.%{}", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg528 = msg("00030:68", part884); - -var part885 = match("MESSAGE#522:00030:69", "nwparser.payload", "PKI: The device is loading the version 0 PKI data.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg529 = msg("00030:69", part885); - -var part886 = match("MESSAGE#523:00030:70/0", "nwparser.payload", "PKI: The device successfully generated a new %{p0}"); - -var all172 = all_match({ - processors: [ - part886, - dup377, - dup217, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg530 = msg("00030:70", all172); - -var part887 = match("MESSAGE#524:00030:71", "nwparser.payload", "PKI: The public key of image%{quote}s signer has been loaded successfully, for future image authentication.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg531 = msg("00030:71", part887); - -var part888 = match("MESSAGE#525:00030:72", "nwparser.payload", "PKI: The signature of the image%{quote}s signer certificate cannot be verified.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg532 = msg("00030:72", part888); - -var part889 = match("MESSAGE#526:00030:73/0", "nwparser.payload", "PKI: The %{p0}"); - -var part890 = match("MESSAGE#526:00030:73/1_0", "nwparser.p0", "file name %{p0}"); - -var part891 = match("MESSAGE#526:00030:73/1_1", "nwparser.p0", "friendly name of a certificate %{p0}"); - -var part892 = match("MESSAGE#526:00030:73/1_2", "nwparser.p0", "vsys name %{p0}"); - -var select196 = linear_select([ - part890, - part891, - part892, -]); - -var part893 = match("MESSAGE#526:00030:73/2", "nwparser.p0", "is too long %{fld2->} to do NSRP synchronization allowed %{fld3}."); - -var all173 = all_match({ - processors: [ - part889, - select196, - part893, - ], - on_success: processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg533 = msg("00030:73", all173); - -var part894 = match("MESSAGE#527:00030:74", "nwparser.payload", "PKI: Upgrade from earlier version save to file.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg534 = msg("00030:74", part894); - -var part895 = match("MESSAGE#528:00030:75", "nwparser.payload", "PKI: X.509 certificate has been deleted distinguished name %{username}.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg535 = msg("00030:75", part895); - -var part896 = match("MESSAGE#529:00030:76/0", "nwparser.payload", "PKI: X.509 %{p0}"); - -var part897 = match("MESSAGE#529:00030:76/2", "nwparser.p0", "file has been loaded successfully filename %{fld2}."); - -var all174 = all_match({ - processors: [ - part896, - dup376, - part897, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg536 = msg("00030:76", all174); - -var part898 = match("MESSAGE#530:00030:77", "nwparser.payload", "PKI: failed to install DSA key.%{}", processor_chain([ - dup18, - dup218, - dup51, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg537 = msg("00030:77", part898); - -var part899 = match("MESSAGE#531:00030:78", "nwparser.payload", "PKI: no FQDN available when requesting certificate.%{}", processor_chain([ - dup35, - dup211, - dup220, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg538 = msg("00030:78", part899); - -var part900 = match("MESSAGE#532:00030:79", "nwparser.payload", "PKI: no cert revocation check per config DN %{username}.", processor_chain([ - dup35, - dup211, - dup220, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg539 = msg("00030:79", part900); - -var part901 = match("MESSAGE#533:00030:80", "nwparser.payload", "PKI: no nsrp sync for pre 2.5 objects.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg540 = msg("00030:80", part901); - -var part902 = match("MESSAGE#534:00030:81", "nwparser.payload", "X509 certificate with subject name %{fld2->} is deleted.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg541 = msg("00030:81", part902); - -var part903 = match("MESSAGE#535:00030:82", "nwparser.payload", "create new authcfg for CA %{fld2}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg542 = msg("00030:82", part903); - -var part904 = match("MESSAGE#536:00030:83", "nwparser.payload", "loadCert: Cannot acquire authcfg for this CA cert %{fld2}.", processor_chain([ - dup35, - dup211, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg543 = msg("00030:83", part904); - -var part905 = match("MESSAGE#537:00030:84", "nwparser.payload", "upgrade to 4.0 copy authcfg from global.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg544 = msg("00030:84", part905); - -var part906 = match("MESSAGE#538:00030:85", "nwparser.payload", "System CPU utilization is high (%{fld2->} alarm threshold: %{trigger_val}) %{info}", processor_chain([ - setc("eventcategory","1603080000"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg545 = msg("00030:85", part906); - -var part907 = match("MESSAGE#539:00030:86/2", "nwparser.p0", "Pair-wise invoked by started after key generation. (%{fld1})"); - -var all175 = all_match({ - processors: [ - dup221, - dup378, - part907, - ], - on_success: processor_chain([ - dup223, - dup2, - dup4, - dup5, - dup9, - ]), -}); - -var msg546 = msg("00030:86", all175); - -var part908 = match("MESSAGE#1214:00030:87", "nwparser.payload", "SYSTEM CPU utilization is high (%{fld2->} > %{fld3->} ) %{fld4->} times in %{fld5->} minute (%{fld1})\u003c\u003c%{fld6}>", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, - dup9, -])); - -var msg547 = msg("00030:87", part908); - -var part909 = match("MESSAGE#1217:00030:88/2", "nwparser.p0", "Pair-wise invoked by passed. (%{fld1})\u003c\u003c%{fld6}>"); - -var all176 = all_match({ - processors: [ - dup221, - dup378, - part909, - ], - on_success: processor_chain([ - dup223, - dup2, - dup4, - dup5, - dup9, - ]), -}); - -var msg548 = msg("00030:88", all176); - -var select197 = linear_select([ - msg475, - msg476, - msg477, - msg478, - msg479, - msg480, - msg481, - msg482, - msg483, - msg484, - msg485, - msg486, - msg487, - msg488, - msg489, - msg490, - msg491, - msg492, - msg493, - msg494, - msg495, - msg496, - msg497, - msg498, - msg499, - msg500, - msg501, - msg502, - msg503, - msg504, - msg505, - msg506, - msg507, - msg508, - msg509, - msg510, - msg511, - msg512, - msg513, - msg514, - msg515, - msg516, - msg517, - msg518, - msg519, - msg520, - msg521, - msg522, - msg523, - msg524, - msg525, - msg526, - msg527, - msg528, - msg529, - msg530, - msg531, - msg532, - msg533, - msg534, - msg535, - msg536, - msg537, - msg538, - msg539, - msg540, - msg541, - msg542, - msg543, - msg544, - msg545, - msg546, - msg547, - msg548, -]); - -var part910 = match("MESSAGE#540:00031:13", "nwparser.payload", "ARP detected IP conflict: IP address %{hostip->} changed from %{sinterface->} to interface %{dinterface->} (%{fld1})", processor_chain([ - dup121, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg549 = msg("00031:13", part910); - -var part911 = match("MESSAGE#541:00031", "nwparser.payload", "SNMP AuthenTraps have been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg550 = msg("00031", part911); - -var part912 = match("MESSAGE#542:00031:01", "nwparser.payload", "SNMP VPN has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg551 = msg("00031:01", part912); - -var part913 = match("MESSAGE#543:00031:02/0", "nwparser.payload", "SNMP community %{fld2->} attributes-write access %{p0}"); - -var part914 = match("MESSAGE#543:00031:02/2", "nwparser.p0", "; receive traps %{p0}"); - -var part915 = match("MESSAGE#543:00031:02/4", "nwparser.p0", "; receive traffic alarms %{p0}"); - -var part916 = match("MESSAGE#543:00031:02/6", "nwparser.p0", "-have been modified%{}"); - -var all177 = all_match({ - processors: [ - part913, - dup379, - part914, - dup379, - part915, - dup379, - part916, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg552 = msg("00031:02", all177); - -var part917 = match("MESSAGE#544:00031:03/0", "nwparser.payload", "%{fld2->} SNMP host %{hostip->} has been %{p0}"); - -var select198 = linear_select([ - dup130, - dup129, -]); - -var part918 = match("MESSAGE#544:00031:03/2", "nwparser.p0", "SNMP community %{fld3}"); - -var all178 = all_match({ - processors: [ - part917, - select198, - part918, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg553 = msg("00031:03", all178); - -var part919 = match("MESSAGE#545:00031:04/0", "nwparser.payload", "SNMP %{p0}"); - -var part920 = match("MESSAGE#545:00031:04/1_0", "nwparser.p0", "contact %{p0}"); - -var select199 = linear_select([ - part920, - dup226, -]); - -var part921 = match("MESSAGE#545:00031:04/2", "nwparser.p0", "description has been modified%{}"); - -var all179 = all_match({ - processors: [ - part919, - select199, - part921, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg554 = msg("00031:04", all179); - -var part922 = match("MESSAGE#546:00031:11/0", "nwparser.payload", "SNMP system %{p0}"); - -var select200 = linear_select([ - dup226, - dup25, -]); - -var part923 = match("MESSAGE#546:00031:11/2", "nwparser.p0", "has been changed to %{fld2}. (%{fld1})"); - -var all180 = all_match({ - processors: [ - part922, - select200, - part923, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg555 = msg("00031:11", all180); - -var part924 = match("MESSAGE#547:00031:08/0", "nwparser.payload", "%{fld2}: SNMP community name \"%{fld3}\" %{p0}"); - -var part925 = match("MESSAGE#547:00031:08/1_0", "nwparser.p0", "attributes -- %{p0}"); - -var part926 = match("MESSAGE#547:00031:08/1_1", "nwparser.p0", "-- %{p0}"); - -var select201 = linear_select([ - part925, - part926, -]); - -var part927 = match("MESSAGE#547:00031:08/2", "nwparser.p0", "write access, %{p0}"); - -var part928 = match("MESSAGE#547:00031:08/4", "nwparser.p0", "; receive traps, %{p0}"); - -var part929 = match("MESSAGE#547:00031:08/6", "nwparser.p0", "; receive traffic alarms, %{p0}"); - -var part930 = match("MESSAGE#547:00031:08/8", "nwparser.p0", "-%{p0}"); - -var part931 = match("MESSAGE#547:00031:08/9_0", "nwparser.p0", "- %{p0}"); - -var select202 = linear_select([ - part931, - dup96, -]); - -var part932 = match("MESSAGE#547:00031:08/10", "nwparser.p0", "have been modified%{}"); - -var all181 = all_match({ - processors: [ - part924, - select201, - part927, - dup379, - part928, - dup379, - part929, - dup379, - part930, - select202, - part932, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg556 = msg("00031:08", all181); - -var part933 = match("MESSAGE#548:00031:05/0", "nwparser.payload", "Detect IP conflict (%{fld2}) on %{p0}"); - -var all182 = all_match({ - processors: [ - part933, - dup337, - dup227, - ], - on_success: processor_chain([ - dup121, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg557 = msg("00031:05", all182); - -var part934 = match("MESSAGE#549:00031:06/1_0", "nwparser.p0", "q, %{p0}"); - -var select203 = linear_select([ - part934, - dup229, - dup230, -]); - -var part935 = match("MESSAGE#549:00031:06/2", "nwparser.p0", "detect IP conflict ( %{hostip->} )%{p0}"); - -var select204 = linear_select([ - dup105, - dup96, -]); - -var part936 = match("MESSAGE#549:00031:06/4", "nwparser.p0", "mac%{p0}"); - -var part937 = match("MESSAGE#549:00031:06/6", "nwparser.p0", "%{macaddr->} on %{p0}"); - -var all183 = all_match({ - processors: [ - dup228, - select203, - part935, - select204, - part936, - dup356, - part937, - dup352, - dup23, - dup380, - ], - on_success: processor_chain([ - dup121, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg558 = msg("00031:06", all183); - -var part938 = match("MESSAGE#550:00031:07/2", "nwparser.p0", "detects a duplicate virtual security device group master IP address %{hostip}, MAC address %{macaddr->} on %{p0}"); - -var all184 = all_match({ - processors: [ - dup228, - dup381, - part938, - dup337, - dup227, - ], - on_success: processor_chain([ - dup121, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg559 = msg("00031:07", all184); - -var part939 = match("MESSAGE#551:00031:09/2", "nwparser.p0", "detected an IP conflict (IP %{hostip}, MAC %{macaddr}) on interface %{p0}"); - -var all185 = all_match({ - processors: [ - dup228, - dup381, - part939, - dup380, - ], - on_success: processor_chain([ - dup121, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg560 = msg("00031:09", all185); - -var part940 = match("MESSAGE#552:00031:10", "nwparser.payload", "%{fld2}: SNMP community \"%{fld3}\" has been moved. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg561 = msg("00031:10", part940); - -var part941 = match("MESSAGE#553:00031:12", "nwparser.payload", "%{fld2->} system contact has been changed to %{fld3}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg562 = msg("00031:12", part941); - -var select205 = linear_select([ - msg549, - msg550, - msg551, - msg552, - msg553, - msg554, - msg555, - msg556, - msg557, - msg558, - msg559, - msg560, - msg561, - msg562, -]); - -var part942 = match("MESSAGE#554:00032", "nwparser.payload", "%{signame->} has been detected and blocked! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup232, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, -])); - -var msg563 = msg("00032", part942); - -var part943 = match("MESSAGE#555:00032:01", "nwparser.payload", "%{signame->} has been detected and blocked! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}", processor_chain([ - dup232, - dup2, - dup3, - dup4, - dup5, - dup61, -])); - -var msg564 = msg("00032:01", part943); - -var part944 = match("MESSAGE#556:00032:03/0", "nwparser.payload", "Vsys %{fld2->} has been %{p0}"); - -var part945 = match("MESSAGE#556:00032:03/1_0", "nwparser.p0", "changed to %{fld3}"); - -var part946 = match("MESSAGE#556:00032:03/1_1", "nwparser.p0", "created%{}"); - -var part947 = match("MESSAGE#556:00032:03/1_2", "nwparser.p0", "deleted%{}"); - -var part948 = match("MESSAGE#556:00032:03/1_3", "nwparser.p0", "removed%{}"); - -var select206 = linear_select([ - part945, - part946, - part947, - part948, -]); - -var all186 = all_match({ - processors: [ - part944, - select206, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg565 = msg("00032:03", all186); - -var part949 = match("MESSAGE#557:00032:04", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} on interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup232, - dup2, - dup3, - dup4, - dup59, - dup5, - dup61, -])); - -var msg566 = msg("00032:04", part949); - -var part950 = match("MESSAGE#558:00032:05", "nwparser.payload", "%{change_attribute->} for vsys %{fld2->} has been changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg567 = msg("00032:05", part950); - -var msg568 = msg("00032:02", dup375); - -var select207 = linear_select([ - msg563, - msg564, - msg565, - msg566, - msg567, - msg568, -]); - -var part951 = match("MESSAGE#560:00033:25", "nwparser.payload", "NSM has been %{disposition}. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, - setc("agent","NSM"), -])); - -var msg569 = msg("00033:25", part951); - -var part952 = match("MESSAGE#561:00033/1", "nwparser.p0", "timeout value has been %{p0}"); - -var part953 = match("MESSAGE#561:00033/2_1", "nwparser.p0", "returned%{p0}"); - -var select208 = linear_select([ - dup52, - part953, -]); - -var part954 = match("MESSAGE#561:00033/3", "nwparser.p0", "%{}to %{fld2}"); - -var all187 = all_match({ - processors: [ - dup382, - part952, - select208, - part954, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg570 = msg("00033", all187); - -var part955 = match("MESSAGE#562:00033:03/1_0", "nwparser.p0", "Global PRO %{p0}"); - -var part956 = match("MESSAGE#562:00033:03/1_1", "nwparser.p0", "%{fld3->} %{p0}"); - -var select209 = linear_select([ - part955, - part956, -]); - -var part957 = match("MESSAGE#562:00033:03/4", "nwparser.p0", "host has been set to %{fld4}"); - -var all188 = all_match({ - processors: [ - dup160, - select209, - dup23, - dup369, - part957, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg571 = msg("00033:03", all188); - -var part958 = match("MESSAGE#563:00033:02/3", "nwparser.p0", "host has been %{disposition}"); - -var all189 = all_match({ - processors: [ - dup382, - dup23, - dup369, - part958, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg572 = msg("00033:02", all189); - -var part959 = match("MESSAGE#564:00033:04", "nwparser.payload", "Reporting of %{fld2->} to %{fld3->} has been %{disposition}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg573 = msg("00033:04", part959); - -var part960 = match("MESSAGE#565:00033:05", "nwparser.payload", "Global PRO has been %{disposition}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg574 = msg("00033:05", part960); - -var part961 = match("MESSAGE#566:00033:06", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} and arriving at interface %{interface}. The attack occurred %{dclass_counter1->} times", processor_chain([ - dup27, - dup2, - dup3, - dup59, - dup4, - dup5, - dup61, -])); - -var msg575 = msg("00033:06", part961); - -var part962 = match("MESSAGE#567:00033:01", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} and arriving at interface %{interface}. The threshold was exceeded %{dclass_counter1->} times", processor_chain([ - dup27, - dup2, - dup3, - setc("dclass_counter1_string","Number of times the threshold was exceeded"), - dup4, - dup5, - dup61, -])); - -var msg576 = msg("00033:01", part962); - -var part963 = match("MESSAGE#568:00033:07", "nwparser.payload", "User-defined service %{service->} has been %{disposition->} from %{fld2->} distribution", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg577 = msg("00033:07", part963); - -var part964 = match("MESSAGE#569:00033:08/2", "nwparser.p0", "?s CA certificate field has not been specified.%{}"); - -var all190 = all_match({ - processors: [ - dup235, - dup383, - part964, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg578 = msg("00033:08", all190); - -var part965 = match("MESSAGE#570:00033:09/2", "nwparser.p0", "?s Cert-Subject field has not been specified.%{}"); - -var all191 = all_match({ - processors: [ - dup235, - dup383, - part965, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg579 = msg("00033:09", all191); - -var part966 = match("MESSAGE#571:00033:10/2", "nwparser.p0", "?s host field has been %{p0}"); - -var part967 = match("MESSAGE#571:00033:10/3_0", "nwparser.p0", "set to %{fld2->} %{p0}"); - -var select210 = linear_select([ - part967, - dup238, -]); - -var all192 = all_match({ - processors: [ - dup235, - dup383, - part966, - select210, - dup116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg580 = msg("00033:10", all192); - -var part968 = match("MESSAGE#572:00033:11/2", "nwparser.p0", "?s outgoing interface used to report NACN to Policy Manager %{p0}"); - -var part969 = match("MESSAGE#572:00033:11/4", "nwparser.p0", "has not been specified.%{}"); - -var all193 = all_match({ - processors: [ - dup235, - dup383, - part968, - dup383, - part969, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg581 = msg("00033:11", all193); - -var part970 = match("MESSAGE#573:00033:12/2", "nwparser.p0", "?s password field has been %{p0}"); - -var select211 = linear_select([ - dup101, - dup238, -]); - -var all194 = all_match({ - processors: [ - dup235, - dup383, - part970, - select211, - dup116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg582 = msg("00033:12", all194); - -var part971 = match("MESSAGE#574:00033:13/2", "nwparser.p0", "?s policy-domain field has been %{p0}"); - -var part972 = match("MESSAGE#574:00033:13/3_0", "nwparser.p0", "unset .%{}"); - -var part973 = match("MESSAGE#574:00033:13/3_1", "nwparser.p0", "set to %{domain}."); - -var select212 = linear_select([ - part972, - part973, -]); - -var all195 = all_match({ - processors: [ - dup235, - dup383, - part971, - select212, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg583 = msg("00033:13", all195); - -var part974 = match("MESSAGE#575:00033:14/2", "nwparser.p0", "?s CA certificate field has been set to %{fld2}."); - -var all196 = all_match({ - processors: [ - dup235, - dup383, - part974, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg584 = msg("00033:14", all196); - -var part975 = match("MESSAGE#576:00033:15/2", "nwparser.p0", "?s Cert-Subject field has been set to %{fld2}."); - -var all197 = all_match({ - processors: [ - dup235, - dup383, - part975, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg585 = msg("00033:15", all197); - -var part976 = match("MESSAGE#577:00033:16/2", "nwparser.p0", "?s outgoing-interface field has been set to %{interface}."); - -var all198 = all_match({ - processors: [ - dup235, - dup383, - part976, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg586 = msg("00033:16", all198); - -var part977 = match("MESSAGE#578:00033:17/2", "nwparser.p0", "?s port field has been %{p0}"); - -var part978 = match("MESSAGE#578:00033:17/3_0", "nwparser.p0", "set to %{network_port->} %{p0}"); - -var part979 = match("MESSAGE#578:00033:17/3_1", "nwparser.p0", "reset to the default value %{p0}"); - -var select213 = linear_select([ - part978, - part979, -]); - -var all199 = all_match({ - processors: [ - dup235, - dup383, - part977, - select213, - dup116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg587 = msg("00033:17", all199); - -var part980 = match("MESSAGE#579:00033:19/0", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{p0}"); - -var part981 = match("MESSAGE#579:00033:19/4", "nwparser.p0", "%{fld99}arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} time."); - -var all200 = all_match({ - processors: [ - part980, - dup339, - dup70, - dup340, - part981, - ], - on_success: processor_chain([ - dup27, - dup2, - dup4, - dup5, - dup3, - dup59, - dup61, - ]), -}); - -var msg588 = msg("00033:19", all200); - -var part982 = match("MESSAGE#580:00033:20", "nwparser.payload", "%{signame}! From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} time.", processor_chain([ - dup27, - dup2, - dup4, - dup5, - dup3, - dup59, - dup60, -])); - -var msg589 = msg("00033:20", part982); - -var all201 = all_match({ - processors: [ - dup239, - dup343, - dup83, - ], - on_success: processor_chain([ - dup27, - dup2, - dup9, - dup59, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var msg590 = msg("00033:21", all201); - -var part983 = match("MESSAGE#582:00033:22/0", "nwparser.payload", "%{signame}! From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var all202 = all_match({ - processors: [ - part983, - dup343, - dup83, - ], - on_success: processor_chain([ - dup27, - dup2, - dup9, - dup59, - dup3, - dup4, - dup5, - dup60, - ]), -}); - -var msg591 = msg("00033:22", all202); - -var part984 = match("MESSAGE#583:00033:23", "nwparser.payload", "NSM primary server with name %{hostname->} was set: addr %{hostip}, port %{network_port}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg592 = msg("00033:23", part984); - -var part985 = match("MESSAGE#584:00033:24", "nwparser.payload", "session threshold From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.%{info}. (%{fld1})", processor_chain([ - setc("eventcategory","1001030500"), - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg593 = msg("00033:24", part985); - -var select214 = linear_select([ - msg569, - msg570, - msg571, - msg572, - msg573, - msg574, - msg575, - msg576, - msg577, - msg578, - msg579, - msg580, - msg581, - msg582, - msg583, - msg584, - msg585, - msg586, - msg587, - msg588, - msg589, - msg590, - msg591, - msg592, - msg593, -]); - -var part986 = match("MESSAGE#585:00034/0_0", "nwparser.payload", "SCS: Failed %{p0}"); - -var part987 = match("MESSAGE#585:00034/0_1", "nwparser.payload", "Failed %{p0}"); - -var select215 = linear_select([ - part986, - part987, -]); - -var part988 = match("MESSAGE#585:00034/2_0", "nwparser.p0", "bind %{p0}"); - -var part989 = match("MESSAGE#585:00034/2_2", "nwparser.p0", "retrieve %{p0}"); - -var select216 = linear_select([ - part988, - dup201, - part989, -]); - -var select217 = linear_select([ - dup196, - dup103, - dup163, -]); - -var part990 = match("MESSAGE#585:00034/5", "nwparser.p0", "SSH user %{username}. (Key ID=%{fld2})"); - -var all203 = all_match({ - processors: [ - select215, - dup103, - select216, - dup202, - select217, - part990, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg594 = msg("00034", all203); - -var part991 = match("MESSAGE#586:00034:01/0_0", "nwparser.payload", "SCS: Incompatible %{p0}"); - -var part992 = match("MESSAGE#586:00034:01/0_1", "nwparser.payload", "Incompatible %{p0}"); - -var select218 = linear_select([ - part991, - part992, -]); - -var part993 = match("MESSAGE#586:00034:01/1", "nwparser.p0", "SSH version %{version->} has been received from %{p0}"); - -var part994 = match("MESSAGE#586:00034:01/2_0", "nwparser.p0", "the SSH %{p0}"); - -var select219 = linear_select([ - part994, - dup241, -]); - -var part995 = match("MESSAGE#586:00034:01/3", "nwparser.p0", "client at %{saddr}:%{sport}"); - -var all204 = all_match({ - processors: [ - select218, - part993, - select219, - part995, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg595 = msg("00034:01", all204); - -var part996 = match("MESSAGE#587:00034:02", "nwparser.payload", "Maximum number of SCS sessions %{fld2->} has been reached. Connection request from SSH user %{username->} at %{saddr}:%{sport->} has been %{disposition}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg596 = msg("00034:02", part996); - -var part997 = match("MESSAGE#588:00034:03/1", "nwparser.p0", "device failed to authenticate the SSH client at %{saddr}:%{sport}"); - -var all205 = all_match({ - processors: [ - dup384, - part997, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg597 = msg("00034:03", all205); - -var part998 = match("MESSAGE#589:00034:04", "nwparser.payload", "SCS: NetScreen device failed to generate a PKA RSA challenge for SSH user %{username->} at %{saddr}:%{sport}. (Key ID=%{fld2})", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg598 = msg("00034:04", part998); - -var part999 = match("MESSAGE#590:00034:05", "nwparser.payload", "NetScreen device failed to generate a PKA RSA challenge for SSH user %{username}. (Key ID=%{fld2})", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg599 = msg("00034:05", part999); - -var part1000 = match("MESSAGE#591:00034:06/1", "nwparser.p0", "device failed to %{p0}"); - -var part1001 = match("MESSAGE#591:00034:06/2_0", "nwparser.p0", "identify itself %{p0}"); - -var part1002 = match("MESSAGE#591:00034:06/2_1", "nwparser.p0", "send the identification string %{p0}"); - -var select220 = linear_select([ - part1001, - part1002, -]); - -var part1003 = match("MESSAGE#591:00034:06/3", "nwparser.p0", "to the SSH client at %{saddr}:%{sport}"); - -var all206 = all_match({ - processors: [ - dup384, - part1000, - select220, - part1003, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg600 = msg("00034:06", all206); - -var part1004 = match("MESSAGE#592:00034:07", "nwparser.payload", "SCS connection has been terminated for admin user %{username->} at %{saddr}:%{sport}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg601 = msg("00034:07", part1004); - -var part1005 = match("MESSAGE#593:00034:08", "nwparser.payload", "SCS: SCS has been %{disposition->} for %{username->} with %{fld2->} existing PKA keys already bound to %{fld3->} SSH users.", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg602 = msg("00034:08", part1005); - -var part1006 = match("MESSAGE#594:00034:09", "nwparser.payload", "SCS has been %{disposition->} for %{username->} with %{fld2->} PKA keys already bound to %{fld3->} SSH users", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg603 = msg("00034:09", part1006); - -var part1007 = match("MESSAGE#595:00034:10/2", "nwparser.p0", "%{}client at %{saddr->} has attempted to make an SCS connection to %{p0}"); - -var part1008 = match("MESSAGE#595:00034:10/4", "nwparser.p0", "%{interface->} %{p0}"); - -var part1009 = match("MESSAGE#595:00034:10/5_0", "nwparser.p0", "with%{p0}"); - -var part1010 = match("MESSAGE#595:00034:10/5_1", "nwparser.p0", "at%{p0}"); - -var select221 = linear_select([ - part1009, - part1010, -]); - -var part1011 = match("MESSAGE#595:00034:10/6", "nwparser.p0", "%{}IP %{hostip->} but %{disposition->} because %{result}"); - -var all207 = all_match({ - processors: [ - dup244, - dup385, - part1007, - dup352, - part1008, - select221, - part1011, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg604 = msg("00034:10", all207); - -var part1012 = match("MESSAGE#596:00034:12/2", "nwparser.p0", "%{}client at %{saddr}:%{sport->} has attempted to make an SCS connection to %{p0}"); - -var part1013 = match("MESSAGE#596:00034:12/4", "nwparser.p0", "but %{disposition->} because %{result}"); - -var all208 = all_match({ - processors: [ - dup244, - dup385, - part1012, - dup386, - part1013, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg605 = msg("00034:12", all208); - -var part1014 = match("MESSAGE#597:00034:11/2", "nwparser.p0", "%{}client at %{saddr}:%{sport->} has %{disposition->} to make an SCS connection to %{p0}"); - -var part1015 = match("MESSAGE#597:00034:11/4", "nwparser.p0", "because %{result}"); - -var all209 = all_match({ - processors: [ - dup244, - dup385, - part1014, - dup386, - part1015, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg606 = msg("00034:11", all209); - -var part1016 = match("MESSAGE#598:00034:15", "nwparser.payload", "SSH client at %{saddr}:%{sport->} has %{disposition->} to make an SCS connection because %{result}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg607 = msg("00034:15", part1016); - -var part1017 = match("MESSAGE#599:00034:18/2", "nwparser.p0", "user %{username->} at %{saddr}:%{sport->} cannot log in via SCS to %{service->} using the shared %{interface->} interface because %{result}"); - -var all210 = all_match({ - processors: [ - dup244, - dup387, - part1017, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg608 = msg("00034:18", all210); - -var part1018 = match("MESSAGE#600:00034:20/2", "nwparser.p0", "user %{username->} at %{saddr}:%{sport->} has %{disposition->} the PKA RSA challenge"); - -var all211 = all_match({ - processors: [ - dup244, - dup387, - part1018, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg609 = msg("00034:20", all211); - -var part1019 = match("MESSAGE#601:00034:21/2", "nwparser.p0", "user %{username->} at %{saddr}:%{sport->} has requested %{p0}"); - -var part1020 = match("MESSAGE#601:00034:21/4", "nwparser.p0", "authentication which is not %{p0}"); - -var part1021 = match("MESSAGE#601:00034:21/5_0", "nwparser.p0", "supported %{p0}"); - -var select222 = linear_select([ - part1021, - dup156, -]); - -var part1022 = match("MESSAGE#601:00034:21/6", "nwparser.p0", "for that %{p0}"); - -var part1023 = match("MESSAGE#601:00034:21/7_0", "nwparser.p0", "client%{}"); - -var part1024 = match("MESSAGE#601:00034:21/7_1", "nwparser.p0", "user%{}"); - -var select223 = linear_select([ - part1023, - part1024, -]); - -var all212 = all_match({ - processors: [ - dup244, - dup387, - part1019, - dup372, - part1020, - select222, - part1022, - select223, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg610 = msg("00034:21", all212); - -var part1025 = match("MESSAGE#602:00034:22", "nwparser.payload", "SSH user %{username->} at %{saddr}:%{sport->} has unsuccessfully attempted to log in via SCS to vsys %{fld2->} using the shared untrusted interface", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg611 = msg("00034:22", part1025); - -var part1026 = match("MESSAGE#603:00034:23/1_0", "nwparser.p0", "SCS: Unable %{p0}"); - -var part1027 = match("MESSAGE#603:00034:23/1_1", "nwparser.p0", "Unable %{p0}"); - -var select224 = linear_select([ - part1026, - part1027, -]); - -var part1028 = match("MESSAGE#603:00034:23/2", "nwparser.p0", "to validate cookie from the SSH client at %{saddr}:%{sport}"); - -var all213 = all_match({ - processors: [ - dup160, - select224, - part1028, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg612 = msg("00034:23", all213); - -var part1029 = match("MESSAGE#604:00034:24", "nwparser.payload", "AC %{username->} is advertising URL %{fld2}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg613 = msg("00034:24", part1029); - -var part1030 = match("MESSAGE#605:00034:25", "nwparser.payload", "Message from AC %{username}: %{fld2}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg614 = msg("00034:25", part1030); - -var part1031 = match("MESSAGE#606:00034:26", "nwparser.payload", "PPPoE Settings changed%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg615 = msg("00034:26", part1031); - -var part1032 = match("MESSAGE#607:00034:27", "nwparser.payload", "PPPoE is %{disposition->} on %{interface->} interface", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg616 = msg("00034:27", part1032); - -var part1033 = match("MESSAGE#608:00034:28", "nwparser.payload", "PPPoE%{quote}s session closed by AC", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg617 = msg("00034:28", part1033); - -var part1034 = match("MESSAGE#609:00034:29", "nwparser.payload", "SCS: Disabled for %{username}. Attempted connection %{disposition->} from %{saddr}:%{sport}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg618 = msg("00034:29", part1034); - -var part1035 = match("MESSAGE#610:00034:30", "nwparser.payload", "SCS: %{disposition->} to remove PKA key removed.", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg619 = msg("00034:30", part1035); - -var part1036 = match("MESSAGE#611:00034:31", "nwparser.payload", "SCS: %{disposition->} to retrieve host key", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg620 = msg("00034:31", part1036); - -var part1037 = match("MESSAGE#612:00034:32", "nwparser.payload", "SCS: %{disposition->} to send identification string to client host at %{saddr}:%{sport}.", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg621 = msg("00034:32", part1037); - -var part1038 = match("MESSAGE#613:00034:33", "nwparser.payload", "SCS: Max %{fld2->} sessions reached unabel to accept connection : %{saddr}:%{sport}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg622 = msg("00034:33", part1038); - -var part1039 = match("MESSAGE#614:00034:34", "nwparser.payload", "SCS: Maximum number for SCS sessions %{fld2->} has been reached. Connection request from SSH user at %{saddr}:%{sport->} has been %{disposition}.", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg623 = msg("00034:34", part1039); - -var part1040 = match("MESSAGE#615:00034:35", "nwparser.payload", "SCS: SSH user %{username->} at %{saddr}:%{sport->} has unsuccessfully attempted to log in via SCS to %{service->} using the shared untrusted interface because SCS is disabled on that interface.", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg624 = msg("00034:35", part1040); - -var part1041 = match("MESSAGE#616:00034:36", "nwparser.payload", "SCS: Unsupported cipher type %{fld2->} requested from: %{saddr}:%{sport}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg625 = msg("00034:36", part1041); - -var part1042 = match("MESSAGE#617:00034:37", "nwparser.payload", "The Point-to-Point Protocol over Ethernet (PPPoE) protocol settings changed%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg626 = msg("00034:37", part1042); - -var part1043 = match("MESSAGE#618:00034:38", "nwparser.payload", "SSH: %{disposition->} to retreive PKA key bound to SSH user %{username->} (Key ID %{fld2})", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg627 = msg("00034:38", part1043); - -var part1044 = match("MESSAGE#619:00034:39", "nwparser.payload", "SSH: Error processing packet from host %{saddr->} (Code %{fld2})", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg628 = msg("00034:39", part1044); - -var part1045 = match("MESSAGE#620:00034:40", "nwparser.payload", "SSH: Device failed to send initialization string to client at %{saddr}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg629 = msg("00034:40", part1045); - -var part1046 = match("MESSAGE#621:00034:41/0", "nwparser.payload", "SCP: Admin user '%{administrator}' attempted to transfer file %{p0}"); - -var part1047 = match("MESSAGE#621:00034:41/2", "nwparser.p0", "the device with insufficient privilege.%{}"); - -var all214 = all_match({ - processors: [ - part1046, - dup373, - part1047, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg630 = msg("00034:41", all214); - -var part1048 = match("MESSAGE#622:00034:42", "nwparser.payload", "SSH: Maximum number of SSH sessions (%{fld2}) exceeded. Connection request from SSH user %{username->} at %{saddr->} denied.", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg631 = msg("00034:42", part1048); - -var part1049 = match("MESSAGE#623:00034:43", "nwparser.payload", "Ethernet driver ran out of rx bd (port %{network_port})", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg632 = msg("00034:43", part1049); - -var part1050 = match("MESSAGE#1224:00034:44", "nwparser.payload", "Potential replay attack detected on SSH connection initiated from %{saddr}:%{sport->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg633 = msg("00034:44", part1050); - -var select225 = linear_select([ - msg594, - msg595, - msg596, - msg597, - msg598, - msg599, - msg600, - msg601, - msg602, - msg603, - msg604, - msg605, - msg606, - msg607, - msg608, - msg609, - msg610, - msg611, - msg612, - msg613, - msg614, - msg615, - msg616, - msg617, - msg618, - msg619, - msg620, - msg621, - msg622, - msg623, - msg624, - msg625, - msg626, - msg627, - msg628, - msg629, - msg630, - msg631, - msg632, - msg633, -]); - -var part1051 = match("MESSAGE#624:00035", "nwparser.payload", "PKI Verify Error: %{resultcode}:%{result}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg634 = msg("00035", part1051); - -var part1052 = match("MESSAGE#625:00035:01", "nwparser.payload", "SSL - Error MessageID in incoming mail - %{fld2}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg635 = msg("00035:01", part1052); - -var part1053 = match("MESSAGE#626:00035:02", "nwparser.payload", "SSL - cipher type %{fld2->} is not allowed in export or firewall only system", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg636 = msg("00035:02", part1053); - -var part1054 = match("MESSAGE#627:00035:03", "nwparser.payload", "SSL CA changed%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg637 = msg("00035:03", part1054); - -var part1055 = match("MESSAGE#628:00035:04/0", "nwparser.payload", "SSL Error when retrieve local c%{p0}"); - -var part1056 = match("MESSAGE#628:00035:04/1_0", "nwparser.p0", "a(verify) %{p0}"); - -var part1057 = match("MESSAGE#628:00035:04/1_1", "nwparser.p0", "ert(verify) %{p0}"); - -var part1058 = match("MESSAGE#628:00035:04/1_2", "nwparser.p0", "ert(all) %{p0}"); - -var select226 = linear_select([ - part1056, - part1057, - part1058, -]); - -var part1059 = match("MESSAGE#628:00035:04/2", "nwparser.p0", ": %{fld2}"); - -var all215 = all_match({ - processors: [ - part1055, - select226, - part1059, - ], - on_success: processor_chain([ - dup117, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg638 = msg("00035:04", all215); - -var part1060 = match("MESSAGE#629:00035:05", "nwparser.payload", "SSL No ssl context. Not ready for connections.%{}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg639 = msg("00035:05", part1060); - -var part1061 = match("MESSAGE#630:00035:06/0", "nwparser.payload", "SSL c%{p0}"); - -var part1062 = match("MESSAGE#630:00035:06/2", "nwparser.p0", "changed to none%{}"); - -var all216 = all_match({ - processors: [ - part1061, - dup388, - part1062, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg640 = msg("00035:06", all216); - -var part1063 = match("MESSAGE#631:00035:07", "nwparser.payload", "SSL cert subject mismatch: %{fld2->} recieved %{fld3->} is expected", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg641 = msg("00035:07", part1063); - -var part1064 = match("MESSAGE#632:00035:08", "nwparser.payload", "SSL certificate changed%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg642 = msg("00035:08", part1064); - -var part1065 = match("MESSAGE#633:00035:09/1_0", "nwparser.p0", "enabled%{}"); - -var select227 = linear_select([ - part1065, - dup92, -]); - -var all217 = all_match({ - processors: [ - dup253, - select227, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg643 = msg("00035:09", all217); - -var part1066 = match("MESSAGE#634:00035:10/0", "nwparser.payload", "SSL memory allocation fails in process_c%{p0}"); - -var part1067 = match("MESSAGE#634:00035:10/1_0", "nwparser.p0", "a()%{}"); - -var part1068 = match("MESSAGE#634:00035:10/1_1", "nwparser.p0", "ert()%{}"); - -var select228 = linear_select([ - part1067, - part1068, -]); - -var all218 = all_match({ - processors: [ - part1066, - select228, - ], - on_success: processor_chain([ - dup184, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg644 = msg("00035:10", all218); - -var part1069 = match("MESSAGE#635:00035:11/0", "nwparser.payload", "SSL no ssl c%{p0}"); - -var part1070 = match("MESSAGE#635:00035:11/1_0", "nwparser.p0", "a%{}"); - -var part1071 = match("MESSAGE#635:00035:11/1_1", "nwparser.p0", "ert%{}"); - -var select229 = linear_select([ - part1070, - part1071, -]); - -var all219 = all_match({ - processors: [ - part1069, - select229, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg645 = msg("00035:11", all219); - -var part1072 = match("MESSAGE#636:00035:12/0", "nwparser.payload", "SSL set c%{p0}"); - -var part1073 = match("MESSAGE#636:00035:12/2", "nwparser.p0", "id is invalid %{fld2}"); - -var all220 = all_match({ - processors: [ - part1072, - dup388, - part1073, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg646 = msg("00035:12", all220); - -var part1074 = match("MESSAGE#637:00035:13/1_1", "nwparser.p0", "verify %{p0}"); - -var select230 = linear_select([ - dup101, - part1074, -]); - -var part1075 = match("MESSAGE#637:00035:13/2", "nwparser.p0", "cert failed. Key type is not RSA%{}"); - -var all221 = all_match({ - processors: [ - dup253, - select230, - part1075, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg647 = msg("00035:13", all221); - -var part1076 = match("MESSAGE#638:00035:14", "nwparser.payload", "SSL ssl context init failed%{}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg648 = msg("00035:14", part1076); - -var part1077 = match("MESSAGE#639:00035:15/0", "nwparser.payload", "%{change_attribute->} has been changed %{p0}"); - -var part1078 = match("MESSAGE#639:00035:15/1_0", "nwparser.p0", "from %{change_old->} to %{change_new}"); - -var part1079 = match("MESSAGE#639:00035:15/1_1", "nwparser.p0", "to %{fld2}"); - -var select231 = linear_select([ - part1078, - part1079, -]); - -var all222 = all_match({ - processors: [ - part1077, - select231, - ], - on_success: processor_chain([ - dup184, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg649 = msg("00035:15", all222); - -var part1080 = match("MESSAGE#640:00035:16", "nwparser.payload", "web SSL certificate changed to by %{username->} via web from host %{saddr->} to %{daddr}:%{dport->} %{fld5}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg650 = msg("00035:16", part1080); - -var select232 = linear_select([ - msg634, - msg635, - msg636, - msg637, - msg638, - msg639, - msg640, - msg641, - msg642, - msg643, - msg644, - msg645, - msg646, - msg647, - msg648, - msg649, - msg650, -]); - -var part1081 = match("MESSAGE#641:00036", "nwparser.payload", "An optional ScreenOS feature has been activated via a software key%{}", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg651 = msg("00036", part1081); - -var part1082 = match("MESSAGE#642:00036:01/0", "nwparser.payload", "%{fld2->} license keys were updated successfully by %{p0}"); - -var part1083 = match("MESSAGE#642:00036:01/1_1", "nwparser.p0", "manual %{p0}"); - -var select233 = linear_select([ - dup214, - part1083, -]); - -var part1084 = match("MESSAGE#642:00036:01/2", "nwparser.p0", "retrieval%{}"); - -var all223 = all_match({ - processors: [ - part1082, - select233, - part1084, - ], - on_success: processor_chain([ - dup254, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg652 = msg("00036:01", all223); - -var select234 = linear_select([ - msg651, - msg652, -]); - -var part1085 = match("MESSAGE#643:00037/0", "nwparser.payload", "Intra-zone block for zone %{zone->} was set to o%{p0}"); - -var part1086 = match("MESSAGE#643:00037/1_0", "nwparser.p0", "n%{}"); - -var part1087 = match("MESSAGE#643:00037/1_1", "nwparser.p0", "ff%{}"); - -var select235 = linear_select([ - part1086, - part1087, -]); - -var all224 = all_match({ - processors: [ - part1085, - select235, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg653 = msg("00037", all224); - -var part1088 = match("MESSAGE#644:00037:01/0", "nwparser.payload", "New zone %{zone->} ( %{p0}"); - -var select236 = linear_select([ - dup255, - dup256, -]); - -var part1089 = match("MESSAGE#644:00037:01/2", "nwparser.p0", "%{fld2}) was created.%{p0}"); - -var all225 = all_match({ - processors: [ - part1088, - select236, - part1089, - dup351, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg654 = msg("00037:01", all225); - -var part1090 = match("MESSAGE#645:00037:02", "nwparser.payload", "Tunnel zone %{src_zone->} was bound to out zone %{dst_zone}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg655 = msg("00037:02", part1090); - -var part1091 = match("MESSAGE#646:00037:03/1_0", "nwparser.p0", "was was %{p0}"); - -var part1092 = match("MESSAGE#646:00037:03/1_1", "nwparser.p0", "%{zone->} was %{p0}"); - -var select237 = linear_select([ - part1091, - part1092, -]); - -var part1093 = match("MESSAGE#646:00037:03/3", "nwparser.p0", "virtual router %{p0}"); - -var part1094 = match("MESSAGE#646:00037:03/4_0", "nwparser.p0", "%{node->} (%{fld1})"); - -var part1095 = match("MESSAGE#646:00037:03/4_1", "nwparser.p0", "%{node}."); - -var select238 = linear_select([ - part1094, - part1095, -]); - -var all226 = all_match({ - processors: [ - dup113, - select237, - dup371, - part1093, - select238, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg656 = msg("00037:03", all226); - -var part1096 = match("MESSAGE#647:00037:04", "nwparser.payload", "Zone %{zone->} was changed to non-shared.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg657 = msg("00037:04", part1096); - -var part1097 = match("MESSAGE#648:00037:05/0", "nwparser.payload", "Zone %{zone->} ( %{p0}"); - -var select239 = linear_select([ - dup256, - dup255, -]); - -var part1098 = match("MESSAGE#648:00037:05/2", "nwparser.p0", "%{fld2}) was deleted. %{p0}"); - -var part1099 = match_copy("MESSAGE#648:00037:05/3_1", "nwparser.p0", "space"); - -var select240 = linear_select([ - dup10, - part1099, -]); - -var all227 = all_match({ - processors: [ - part1097, - select239, - part1098, - select240, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg658 = msg("00037:05", all227); - -var part1100 = match("MESSAGE#649:00037:06", "nwparser.payload", "IP/TCP reassembly for ALG was %{disposition->} on zone %{zone}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg659 = msg("00037:06", part1100); - -var select241 = linear_select([ - msg653, - msg654, - msg655, - msg656, - msg657, - msg658, - msg659, -]); - -var part1101 = match("MESSAGE#650:00038/0", "nwparser.payload", "OSPF routing instance in vrouter %{p0}"); - -var part1102 = match("MESSAGE#650:00038/1_0", "nwparser.p0", "%{node->} is %{p0}"); - -var part1103 = match("MESSAGE#650:00038/1_1", "nwparser.p0", "%{node->} %{p0}"); - -var select242 = linear_select([ - part1102, - part1103, -]); - -var all228 = all_match({ - processors: [ - part1101, - select242, - dup36, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg660 = msg("00038", all228); - -var part1104 = match("MESSAGE#651:00039", "nwparser.payload", "BGP instance name created for vr %{node}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg661 = msg("00039", part1104); - -var part1105 = match("MESSAGE#652:00040/0_0", "nwparser.payload", "Low watermark%{p0}"); - -var part1106 = match("MESSAGE#652:00040/0_1", "nwparser.payload", "High watermark%{p0}"); - -var select243 = linear_select([ - part1105, - part1106, -]); - -var part1107 = match("MESSAGE#652:00040/1", "nwparser.p0", "%{}for early aging has been changed to the default %{fld2}"); - -var all229 = all_match({ - processors: [ - select243, - part1107, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg662 = msg("00040", all229); - -var part1108 = match("MESSAGE#653:00040:01", "nwparser.payload", "VPN '%{group}' from %{daddr->} is %{disposition->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg663 = msg("00040:01", part1108); - -var select244 = linear_select([ - msg662, - msg663, -]); - -var part1109 = match("MESSAGE#654:00041", "nwparser.payload", "A route-map name in virtual router %{node->} has been removed", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg664 = msg("00041", part1109); - -var part1110 = match("MESSAGE#655:00041:01", "nwparser.payload", "VPN '%{group}' from %{daddr->} is %{disposition->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg665 = msg("00041:01", part1110); - -var select245 = linear_select([ - msg664, - msg665, -]); - -var part1111 = match("MESSAGE#656:00042", "nwparser.payload", "Replay packet detected on IPSec tunnel on %{interface->} with tunnel ID %{fld2}! From %{saddr->} to %{daddr}/%{dport}, %{info->} (%{fld1})", processor_chain([ - dup58, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg666 = msg("00042", part1111); - -var part1112 = match("MESSAGE#657:00042:01", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.The attack occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup3, - dup59, - dup9, - dup4, - dup5, - dup60, -])); - -var msg667 = msg("00042:01", part1112); - -var select246 = linear_select([ - msg666, - msg667, -]); - -var part1113 = match("MESSAGE#658:00043", "nwparser.payload", "Receive StopCCN_msg, remove l2tp tunnel (%{fld2}-%{fld3}), Result code %{resultcode->} (%{result}). (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg668 = msg("00043", part1113); - -var part1114 = match("MESSAGE#659:00044/0", "nwparser.payload", "access list %{listnum->} sequence number %{fld3->} %{p0}"); - -var part1115 = match("MESSAGE#659:00044/1_1", "nwparser.p0", "deny %{p0}"); - -var select247 = linear_select([ - dup257, - part1115, -]); - -var part1116 = match("MESSAGE#659:00044/2", "nwparser.p0", "ip %{hostip}/%{mask->} %{disposition->} in vrouter %{node}"); - -var all230 = all_match({ - processors: [ - part1114, - select247, - part1116, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg669 = msg("00044", all230); - -var part1117 = match("MESSAGE#660:00044:01", "nwparser.payload", "access list %{listnum->} %{disposition->} in vrouter %{node}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg670 = msg("00044:01", part1117); - -var select248 = linear_select([ - msg669, - msg670, -]); - -var part1118 = match("MESSAGE#661:00045", "nwparser.payload", "RIP instance in virtual router %{node->} was %{disposition}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg671 = msg("00045", part1118); - -var part1119 = match("MESSAGE#662:00047/1_0", "nwparser.p0", "remove %{p0}"); - -var part1120 = match("MESSAGE#662:00047/1_1", "nwparser.p0", "add %{p0}"); - -var select249 = linear_select([ - part1119, - part1120, -]); - -var part1121 = match("MESSAGE#662:00047/2", "nwparser.p0", "multicast policy from %{src_zone->} %{fld4->} to %{dst_zone->} %{fld3->} (%{fld1})"); - -var all231 = all_match({ - processors: [ - dup183, - select249, - part1121, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg672 = msg("00047", all231); - -var part1122 = match("MESSAGE#663:00048/0", "nwparser.payload", "Access list entry %{listnum->} with %{p0}"); - -var part1123 = match("MESSAGE#663:00048/1_0", "nwparser.p0", "a sequence %{p0}"); - -var part1124 = match("MESSAGE#663:00048/1_1", "nwparser.p0", "sequence %{p0}"); - -var select250 = linear_select([ - part1123, - part1124, -]); - -var part1125 = match("MESSAGE#663:00048/2", "nwparser.p0", "number %{fld2->} %{p0}"); - -var part1126 = match("MESSAGE#663:00048/3_0", "nwparser.p0", "with an action of %{p0}"); - -var select251 = linear_select([ - part1126, - dup112, -]); - -var part1127 = match("MESSAGE#663:00048/5_0", "nwparser.p0", "with an IP %{p0}"); - -var select252 = linear_select([ - part1127, - dup139, -]); - -var part1128 = match("MESSAGE#663:00048/6", "nwparser.p0", "address %{p0}"); - -var part1129 = match("MESSAGE#663:00048/7_0", "nwparser.p0", "and subnetwork mask of %{p0}"); - -var select253 = linear_select([ - part1129, - dup16, -]); - -var part1130 = match("MESSAGE#663:00048/8", "nwparser.p0", "%{} %{fld3}was %{p0}"); - -var part1131 = match("MESSAGE#663:00048/9_0", "nwparser.p0", "created on %{p0}"); - -var select254 = linear_select([ - part1131, - dup129, -]); - -var part1132 = match("MESSAGE#663:00048/10", "nwparser.p0", "virtual router %{node->} (%{fld1})"); - -var all232 = all_match({ - processors: [ - part1122, - select250, - part1125, - select251, - dup257, - select252, - part1128, - select253, - part1130, - select254, - part1132, - ], - on_success: processor_chain([ - setc("eventcategory","1501000000"), - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg673 = msg("00048", all232); - -var part1133 = match("MESSAGE#664:00048:01/0", "nwparser.payload", "Route %{p0}"); - -var part1134 = match("MESSAGE#664:00048:01/1_0", "nwparser.p0", "map entry %{p0}"); - -var part1135 = match("MESSAGE#664:00048:01/1_1", "nwparser.p0", "entry %{p0}"); - -var select255 = linear_select([ - part1134, - part1135, -]); - -var part1136 = match("MESSAGE#664:00048:01/2", "nwparser.p0", "with sequence number %{fld2->} in route map binck-ospf%{p0}"); - -var part1137 = match("MESSAGE#664:00048:01/3_0", "nwparser.p0", " in %{p0}"); - -var select256 = linear_select([ - part1137, - dup105, -]); - -var part1138 = match("MESSAGE#664:00048:01/4", "nwparser.p0", "virtual router %{node->} was %{disposition->} (%{fld1})"); - -var all233 = all_match({ - processors: [ - part1133, - select255, - part1136, - select256, - part1138, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg674 = msg("00048:01", all233); - -var part1139 = match("MESSAGE#665:00048:02", "nwparser.payload", "%{space}set match interface %{interface->} (%{fld1})", processor_chain([ - dup209, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg675 = msg("00048:02", part1139); - -var select257 = linear_select([ - msg673, - msg674, - msg675, -]); - -var part1140 = match("MESSAGE#666:00049", "nwparser.payload", "Route-lookup preference changed to %{fld8->} (%{fld2}) => %{fld3->} (%{fld4}) => %{fld5->} (%{fld6}) in virtual router (%{node})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg676 = msg("00049", part1140); - -var part1141 = match("MESSAGE#667:00049:01", "nwparser.payload", "SIBR routing %{disposition->} in virtual router %{node}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg677 = msg("00049:01", part1141); - -var part1142 = match("MESSAGE#668:00049:02", "nwparser.payload", "A virtual router with name %{node->} and ID %{fld2->} has been removed", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg678 = msg("00049:02", part1142); - -var part1143 = match("MESSAGE#669:00049:03", "nwparser.payload", "The router-id of virtual router \"%{node}\" used by OSPF, BGP routing instances id has been uninitialized. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg679 = msg("00049:03", part1143); - -var part1144 = match("MESSAGE#670:00049:04", "nwparser.payload", "The system default-route through virtual router \"%{node}\" has been added in virtual router \"%{fld4}\" (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg680 = msg("00049:04", part1144); - -var part1145 = match("MESSAGE#671:00049:05", "nwparser.payload", "Subnetwork conflict checking for interfaces in virtual router (%{node}) has been enabled. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg681 = msg("00049:05", part1145); - -var select258 = linear_select([ - msg676, - msg677, - msg678, - msg679, - msg680, - msg681, -]); - -var part1146 = match("MESSAGE#672:00050", "nwparser.payload", "Track IP enabled (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg682 = msg("00050", part1146); - -var part1147 = match("MESSAGE#673:00051", "nwparser.payload", "Session utilization has reached %{fld2}, which is %{fld3->} of the system capacity!", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg683 = msg("00051", part1147); - -var part1148 = match("MESSAGE#674:00052", "nwparser.payload", "AV: Suspicious client %{saddr}:%{sport}->%{daddr}:%{dport->} used %{fld2->} percent of AV resources, which exceeded the max of %{fld3->} percent.", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg684 = msg("00052", part1148); - -var part1149 = match("MESSAGE#675:00055/1_1", "nwparser.p0", "router %{p0}"); - -var select259 = linear_select([ - dup169, - part1149, -]); - -var part1150 = match("MESSAGE#675:00055/2", "nwparser.p0", "instance was %{disposition->} on interface %{interface}."); - -var all234 = all_match({ - processors: [ - dup258, - select259, - part1150, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg685 = msg("00055", all234); - -var part1151 = match("MESSAGE#676:00055:01/1_0", "nwparser.p0", "proxy %{p0}"); - -var part1152 = match("MESSAGE#676:00055:01/1_1", "nwparser.p0", "function %{p0}"); - -var select260 = linear_select([ - part1151, - part1152, -]); - -var part1153 = match("MESSAGE#676:00055:01/2", "nwparser.p0", "was %{disposition->} on interface %{interface}."); - -var all235 = all_match({ - processors: [ - dup258, - select260, - part1153, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg686 = msg("00055:01", all235); - -var part1154 = match("MESSAGE#677:00055:02/2", "nwparser.p0", "same subnet check on interface %{interface}."); - -var all236 = all_match({ - processors: [ - dup259, - dup389, - part1154, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg687 = msg("00055:02", all236); - -var part1155 = match("MESSAGE#678:00055:03/2", "nwparser.p0", "router alert IP option check on interface %{interface}."); - -var all237 = all_match({ - processors: [ - dup259, - dup389, - part1155, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg688 = msg("00055:03", all237); - -var part1156 = match("MESSAGE#679:00055:04", "nwparser.payload", "IGMP version was changed to %{version->} on interface %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg689 = msg("00055:04", part1156); - -var part1157 = match("MESSAGE#680:00055:05/0", "nwparser.payload", "IGMP query %{p0}"); - -var part1158 = match("MESSAGE#680:00055:05/1_1", "nwparser.p0", "max response time %{p0}"); - -var select261 = linear_select([ - dup110, - part1158, -]); - -var part1159 = match("MESSAGE#680:00055:05/2", "nwparser.p0", "was changed to %{fld2->} on interface %{interface}"); - -var all238 = all_match({ - processors: [ - part1157, - select261, - part1159, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg690 = msg("00055:05", all238); - -var part1160 = match("MESSAGE#681:00055:06/0", "nwparser.payload", "IGMP l%{p0}"); - -var part1161 = match("MESSAGE#681:00055:06/1_0", "nwparser.p0", "eave %{p0}"); - -var part1162 = match("MESSAGE#681:00055:06/1_1", "nwparser.p0", "ast member query %{p0}"); - -var select262 = linear_select([ - part1161, - part1162, -]); - -var part1163 = match("MESSAGE#681:00055:06/2", "nwparser.p0", "interval was changed to %{fld2->} on interface %{interface}."); - -var all239 = all_match({ - processors: [ - part1160, - select262, - part1163, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg691 = msg("00055:06", all239); - -var part1164 = match("MESSAGE#682:00055:07/1_0", "nwparser.p0", "routers %{p0}"); - -var part1165 = match("MESSAGE#682:00055:07/1_1", "nwparser.p0", "hosts %{p0}"); - -var part1166 = match("MESSAGE#682:00055:07/1_2", "nwparser.p0", "groups %{p0}"); - -var select263 = linear_select([ - part1164, - part1165, - part1166, -]); - -var part1167 = match("MESSAGE#682:00055:07/2", "nwparser.p0", "accept list ID was changed to %{fld2->} on interface %{interface}."); - -var all240 = all_match({ - processors: [ - dup258, - select263, - part1167, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg692 = msg("00055:07", all240); - -var part1168 = match("MESSAGE#683:00055:08/1_0", "nwparser.p0", "all groups %{p0}"); - -var part1169 = match("MESSAGE#683:00055:08/1_1", "nwparser.p0", "group %{p0}"); - -var select264 = linear_select([ - part1168, - part1169, -]); - -var part1170 = match("MESSAGE#683:00055:08/2", "nwparser.p0", "%{group->} static flag was %{disposition->} on interface %{interface}."); - -var all241 = all_match({ - processors: [ - dup258, - select264, - part1170, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg693 = msg("00055:08", all241); - -var part1171 = match("MESSAGE#684:00055:09", "nwparser.payload", "IGMP static group %{group->} was added on interface %{interface}", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg694 = msg("00055:09", part1171); - -var part1172 = match("MESSAGE#685:00055:10", "nwparser.payload", "IGMP proxy always is %{disposition->} on interface %{interface}.", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg695 = msg("00055:10", part1172); - -var select265 = linear_select([ - msg685, - msg686, - msg687, - msg688, - msg689, - msg690, - msg691, - msg692, - msg693, - msg694, - msg695, -]); - -var part1173 = match("MESSAGE#686:00056", "nwparser.payload", "Remove multicast policy from %{src_zone->} %{saddr->} to %{dst_zone->} %{daddr}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg696 = msg("00056", part1173); - -var part1174 = match("MESSAGE#687:00057", "nwparser.payload", "%{fld2}: static multicast route src=%{saddr}, grp=%{group->} input ifp = %{sinterface->} output ifp = %{dinterface->} added", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg697 = msg("00057", part1174); - -var part1175 = match("MESSAGE#688:00058", "nwparser.payload", "PIMSM protocol configured on interface %{interface}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg698 = msg("00058", part1175); - -var part1176 = match("MESSAGE#689:00059/0", "nwparser.payload", "DDNS module is %{p0}"); - -var part1177 = match("MESSAGE#689:00059/1_0", "nwparser.p0", "initialized %{p0}"); - -var select266 = linear_select([ - part1177, - dup262, - dup157, - dup156, -]); - -var all242 = all_match({ - processors: [ - part1176, - select266, - dup116, - ], - on_success: processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg699 = msg("00059", all242); - -var part1178 = match("MESSAGE#690:00059:02/0", "nwparser.payload", "DDNS entry with id %{fld2->} is configured with server type \"%{fld3}\" name \"%{hostname}\" refresh-interval %{fld5->} hours minimum update interval %{fld6->} minutes with %{p0}"); - -var part1179 = match("MESSAGE#690:00059:02/1_0", "nwparser.p0", "secure %{p0}"); - -var part1180 = match("MESSAGE#690:00059:02/1_1", "nwparser.p0", "clear-text %{p0}"); - -var select267 = linear_select([ - part1179, - part1180, -]); - -var part1181 = match("MESSAGE#690:00059:02/2", "nwparser.p0", "secure connection.%{}"); - -var all243 = all_match({ - processors: [ - part1178, - select267, - part1181, - ], - on_success: processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg700 = msg("00059:02", all243); - -var part1182 = match("MESSAGE#691:00059:03", "nwparser.payload", "DDNS entry with id %{fld2->} is configured with user name \"%{username}\" agent \"%{fld3}\"", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg701 = msg("00059:03", part1182); - -var part1183 = match("MESSAGE#692:00059:04", "nwparser.payload", "DDNS entry with id %{fld2->} is configured with interface \"%{interface}\" host-name \"%{hostname}\"", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg702 = msg("00059:04", part1183); - -var part1184 = match("MESSAGE#693:00059:05/0_0", "nwparser.payload", "Hostname %{p0}"); - -var part1185 = match("MESSAGE#693:00059:05/0_1", "nwparser.payload", "Source interface %{p0}"); - -var part1186 = match("MESSAGE#693:00059:05/0_2", "nwparser.payload", "Username and password %{p0}"); - -var part1187 = match("MESSAGE#693:00059:05/0_3", "nwparser.payload", "Server %{p0}"); - -var select268 = linear_select([ - part1184, - part1185, - part1186, - part1187, -]); - -var part1188 = match("MESSAGE#693:00059:05/1", "nwparser.p0", "of DDNS entry with id %{fld2->} is cleared."); - -var all244 = all_match({ - processors: [ - select268, - part1188, - ], - on_success: processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg703 = msg("00059:05", all244); - -var part1189 = match("MESSAGE#694:00059:06", "nwparser.payload", "Agent of DDNS entry with id %{fld2->} is reset to its default value.", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg704 = msg("00059:06", part1189); - -var part1190 = match("MESSAGE#695:00059:07", "nwparser.payload", "Updates for DDNS entry with id %{fld2->} are set to be sent in secure (%{protocol}) mode.", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg705 = msg("00059:07", part1190); - -var part1191 = match("MESSAGE#696:00059:08/0_0", "nwparser.payload", "Refresh %{p0}"); - -var part1192 = match("MESSAGE#696:00059:08/0_1", "nwparser.payload", "Minimum update %{p0}"); - -var select269 = linear_select([ - part1191, - part1192, -]); - -var part1193 = match("MESSAGE#696:00059:08/1", "nwparser.p0", "interval of DDNS entry with id %{fld2->} is set to default value (%{fld3})."); - -var all245 = all_match({ - processors: [ - select269, - part1193, - ], - on_success: processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg706 = msg("00059:08", all245); - -var part1194 = match("MESSAGE#697:00059:09/1_0", "nwparser.p0", "No-Change %{p0}"); - -var part1195 = match("MESSAGE#697:00059:09/1_1", "nwparser.p0", "Error %{p0}"); - -var select270 = linear_select([ - part1194, - part1195, -]); - -var part1196 = match("MESSAGE#697:00059:09/2", "nwparser.p0", "response received for DDNS entry update for id %{fld2->} user \"%{username}\" domain \"%{domain}\" server type \" d%{p0}"); - -var part1197 = match("MESSAGE#697:00059:09/3_1", "nwparser.p0", "yndns %{p0}"); - -var select271 = linear_select([ - dup261, - part1197, -]); - -var part1198 = match("MESSAGE#697:00059:09/4", "nwparser.p0", "\", server name \"%{hostname}\""); - -var all246 = all_match({ - processors: [ - dup160, - select270, - part1196, - select271, - part1198, - ], - on_success: processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg707 = msg("00059:09", all246); - -var part1199 = match("MESSAGE#698:00059:01", "nwparser.payload", "DDNS entry with id %{fld2->} is %{disposition}.", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg708 = msg("00059:01", part1199); - -var select272 = linear_select([ - msg699, - msg700, - msg701, - msg702, - msg703, - msg704, - msg705, - msg706, - msg707, - msg708, -]); - -var part1200 = match("MESSAGE#699:00062:01", "nwparser.payload", "Track IP IP address %{hostip->} failed. (%{event_time_string})", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - setc("event_description","Track IP failed"), -])); - -var msg709 = msg("00062:01", part1200); - -var part1201 = match("MESSAGE#700:00062:02", "nwparser.payload", "Track IP failure reached threshold. (%{event_time_string})", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - setc("event_description","Track IP failure reached threshold"), -])); - -var msg710 = msg("00062:02", part1201); - -var part1202 = match("MESSAGE#701:00062:03", "nwparser.payload", "Track IP IP address %{hostip->} succeeded. (%{event_time_string})", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - setc("event_description","Track IP succeeded"), -])); - -var msg711 = msg("00062:03", part1202); - -var part1203 = match("MESSAGE#702:00062", "nwparser.payload", "HA linkdown%{}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg712 = msg("00062", part1203); - -var select273 = linear_select([ - msg709, - msg710, - msg711, - msg712, -]); - -var part1204 = match("MESSAGE#703:00063", "nwparser.payload", "nsrp track-ip ip %{hostip->} %{disposition}!", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg713 = msg("00063", part1204); - -var part1205 = match("MESSAGE#704:00064", "nwparser.payload", "Can not create track-ip list%{}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg714 = msg("00064", part1205); - -var part1206 = match("MESSAGE#705:00064:01", "nwparser.payload", "track ip fail reaches threshold system may fail over!%{}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg715 = msg("00064:01", part1206); - -var part1207 = match("MESSAGE#706:00064:02", "nwparser.payload", "Anti-Spam is detached from policy ID %{policy_id}. (%{fld1})", processor_chain([ - dup17, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg716 = msg("00064:02", part1207); - -var select274 = linear_select([ - msg714, - msg715, - msg716, -]); - -var msg717 = msg("00070", dup411); - -var part1208 = match("MESSAGE#708:00070:01/2", "nwparser.p0", "%{}Device group %{group->} changed state from %{fld3->} to %{p0}"); - -var part1209 = match("MESSAGE#708:00070:01/3_0", "nwparser.p0", "Init%{}"); - -var part1210 = match("MESSAGE#708:00070:01/3_1", "nwparser.p0", "init. (%{fld1})"); - -var select275 = linear_select([ - part1209, - part1210, -]); - -var all247 = all_match({ - processors: [ - dup267, - dup391, - part1208, - select275, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg718 = msg("00070:01", all247); - -var part1211 = match("MESSAGE#709:00070:02", "nwparser.payload", "NSRP: nsrp control channel change to %{interface}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg719 = msg("00070:02", part1211); - -var select276 = linear_select([ - msg717, - msg718, - msg719, -]); - -var msg720 = msg("00071", dup411); - -var part1212 = match("MESSAGE#711:00071:01", "nwparser.payload", "The local device %{fld1->} in the Virtual Security Device group %{group->} changed state", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg721 = msg("00071:01", part1212); - -var select277 = linear_select([ - msg720, - msg721, -]); - -var msg722 = msg("00072", dup411); - -var msg723 = msg("00072:01", dup412); - -var select278 = linear_select([ - msg722, - msg723, -]); - -var msg724 = msg("00073", dup411); - -var msg725 = msg("00073:01", dup412); - -var select279 = linear_select([ - msg724, - msg725, -]); - -var msg726 = msg("00074", dup392); - -var all248 = all_match({ - processors: [ - dup263, - dup390, - dup271, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg727 = msg("00075", all248); - -var part1213 = match("MESSAGE#718:00075:02", "nwparser.payload", "The local device %{hardware_id->} in the Virtual Security Device group %{group->} changed state from %{event_state->} to inoperable. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - setc("event_description","local device in the Virtual Security Device group changed state to inoperable"), -])); - -var msg728 = msg("00075:02", part1213); - -var part1214 = match("MESSAGE#719:00075:01", "nwparser.payload", "The local device %{hardware_id->} in the Virtual Security Device group %{group->} %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg729 = msg("00075:01", part1214); - -var select280 = linear_select([ - msg727, - msg728, - msg729, -]); - -var msg730 = msg("00076", dup392); - -var part1215 = match("MESSAGE#721:00076:01/2", "nwparser.p0", "%{fld2->} of VSD group %{group->} send 2nd path request to unit=%{fld3}"); - -var all249 = all_match({ - processors: [ - dup263, - dup390, - part1215, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg731 = msg("00076:01", all249); - -var select281 = linear_select([ - msg730, - msg731, -]); - -var part1216 = match("MESSAGE#722:00077", "nwparser.payload", "HA link disconnect. Begin to use second path of HA%{}", processor_chain([ - dup144, - dup2, - dup3, - dup4, - dup5, -])); - -var msg732 = msg("00077", part1216); - -var all250 = all_match({ - processors: [ - dup263, - dup390, - dup271, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg733 = msg("00077:01", all250); - -var part1217 = match("MESSAGE#724:00077:02", "nwparser.payload", "The local device %{fld2->} in the Virtual Security Device group %{group}", processor_chain([ - setc("eventcategory","1607000000"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg734 = msg("00077:02", part1217); - -var select282 = linear_select([ - msg732, - msg733, - msg734, -]); - -var part1218 = match("MESSAGE#725:00084", "nwparser.payload", "RTSYNC: NSRP route synchronization is %{disposition}", processor_chain([ - dup272, - dup2, - dup3, - dup4, - dup5, -])); - -var msg735 = msg("00084", part1218); - -var part1219 = match("MESSAGE#726:00090/0_0", "nwparser.payload", "Failover %{p0}"); - -var part1220 = match("MESSAGE#726:00090/0_1", "nwparser.payload", "Recovery %{p0}"); - -var select283 = linear_select([ - part1219, - part1220, -]); - -var part1221 = match("MESSAGE#726:00090/3", "nwparser.p0", "untrust interface occurred.%{}"); - -var all251 = all_match({ - processors: [ - select283, - dup103, - dup369, - part1221, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg736 = msg("00090", all251); - -var part1222 = match("MESSAGE#727:00200", "nwparser.payload", "A new route cannot be added to the device because the maximum number of system route entries %{fld2->} has been exceeded", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg737 = msg("00200", part1222); - -var part1223 = match("MESSAGE#728:00201", "nwparser.payload", "A route %{hostip}/%{fld2->} cannot be added to the virtual router %{node->} because the number of route entries in the virtual router exceeds the maximum number of routes %{fld3->} allowed", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg738 = msg("00201", part1223); - -var part1224 = match("MESSAGE#729:00202", "nwparser.payload", "%{fld2->} hello-packet flood from neighbor (ip = %{hostip->} router-id = %{fld3}) on interface %{interface->} packet is dropped", processor_chain([ - dup272, - dup2, - dup4, - dup5, - dup3, -])); - -var msg739 = msg("00202", part1224); - -var part1225 = match("MESSAGE#730:00203", "nwparser.payload", "%{fld2->} lsa flood on interface %{interface->} has dropped a packet.", processor_chain([ - dup272, - dup2, - dup4, - dup5, - dup3, -])); - -var msg740 = msg("00203", part1225); - -var part1226 = match("MESSAGE#731:00206/0", "nwparser.payload", "The total number of redistributed routes into %{p0}"); - -var part1227 = match("MESSAGE#731:00206/1_0", "nwparser.p0", "BGP %{p0}"); - -var part1228 = match("MESSAGE#731:00206/1_1", "nwparser.p0", "OSPF %{p0}"); - -var select284 = linear_select([ - part1227, - part1228, -]); - -var part1229 = match("MESSAGE#731:00206/2", "nwparser.p0", "in vrouter %{node->} exceeded system limit (%{fld2})"); - -var all252 = all_match({ - processors: [ - part1226, - select284, - part1229, - ], - on_success: processor_chain([ - dup272, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg741 = msg("00206", all252); - -var part1230 = match("MESSAGE#732:00206:01/0", "nwparser.payload", "LSA flood in OSPF with router-id %{fld2->} on %{p0}"); - -var part1231 = match("MESSAGE#732:00206:01/2", "nwparser.p0", "%{interface->} forced the interface to drop a packet."); - -var all253 = all_match({ - processors: [ - part1230, - dup352, - part1231, - ], - on_success: processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg742 = msg("00206:01", all253); - -var part1232 = match("MESSAGE#733:00206:02/0", "nwparser.payload", "OSPF instance with router-id %{fld3->} received a Hello packet flood from neighbor (IP address %{hostip}, router ID %{fld2}) on %{p0}"); - -var part1233 = match("MESSAGE#733:00206:02/2", "nwparser.p0", "%{interface->} forcing the interface to drop the packet."); - -var all254 = all_match({ - processors: [ - part1232, - dup352, - part1233, - ], - on_success: processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg743 = msg("00206:02", all254); - -var part1234 = match("MESSAGE#734:00206:03", "nwparser.payload", "Link State Advertisement Id %{fld2}, router ID %{fld3}, type %{fld4->} cannot be deleted from the real-time database in area %{fld5}", processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, -])); - -var msg744 = msg("00206:03", part1234); - -var part1235 = match("MESSAGE#735:00206:04", "nwparser.payload", "Reject second OSPF neighbor (%{fld2}) on interface (%{interface}) since it_s configured as point-to-point interface", processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, -])); - -var msg745 = msg("00206:04", part1235); - -var select285 = linear_select([ - msg741, - msg742, - msg743, - msg744, - msg745, -]); - -var part1236 = match("MESSAGE#736:00207", "nwparser.payload", "System wide RIP route limit exceeded, RIP route dropped.%{}", processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, -])); - -var msg746 = msg("00207", part1236); - -var part1237 = match("MESSAGE#737:00207:01", "nwparser.payload", "%{fld2->} RIP routes dropped from last system wide RIP route limit exceed.", processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, -])); - -var msg747 = msg("00207:01", part1237); - -var part1238 = match("MESSAGE#738:00207:02", "nwparser.payload", "RIP database size limit exceeded for %{fld2}, RIP route dropped.", processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, -])); - -var msg748 = msg("00207:02", part1238); - -var part1239 = match("MESSAGE#739:00207:03", "nwparser.payload", "%{fld2->} RIP routes dropped from the last database size exceed in vr %{fld3}.", processor_chain([ - dup273, - dup2, - dup3, - dup4, - dup5, -])); - -var msg749 = msg("00207:03", part1239); - -var select286 = linear_select([ - msg746, - msg747, - msg748, - msg749, -]); - -var part1240 = match("MESSAGE#740:00257", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=outgoing action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} translated ip=%{stransaddr->} port=%{stransport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup276, - dup277, - dup278, -])); - -var msg750 = msg("00257", part1240); - -var part1241 = match("MESSAGE#741:00257:14", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=incoming action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} translated ip=%{dtransaddr->} port=%{dtransport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup279, - dup276, - dup277, - dup280, -])); - -var msg751 = msg("00257:14", part1241); - -var part1242 = match("MESSAGE#742:00257:01", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=outgoing action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} translated ip=%{stransaddr->} port=%{stransport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup282, - dup278, -])); - -var msg752 = msg("00257:01", part1242); - -var part1243 = match("MESSAGE#743:00257:15", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=incoming action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} translated ip=%{dtransaddr->} port=%{dtransport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup279, - dup282, - dup280, -])); - -var msg753 = msg("00257:15", part1243); - -var part1244 = match("MESSAGE#744:00257:02", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup276, - dup277, -])); - -var msg754 = msg("00257:02", part1244); - -var part1245 = match("MESSAGE#745:00257:03", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup282, -])); - -var msg755 = msg("00257:03", part1245); - -var part1246 = match("MESSAGE#746:00257:04", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} src-xlated ip=%{stransaddr->} port=%{stransport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup276, - dup277, -])); - -var msg756 = msg("00257:04", part1246); - -var part1247 = match("MESSAGE#747:00257:05", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} src-xlated ip=%{stransaddr->} port=%{stransport->} dst-xlated ip=%{dtransaddr->} port=%{dtransport->} session_id=%{sessionid->} reason=%{result}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup282, -])); - -var msg757 = msg("00257:05", part1247); - -var part1248 = match("MESSAGE#748:00257:19/2", "nwparser.p0", "%{}duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype->} icmp code=%{icmpcode->} src-xlated ip=%{stransaddr->} dst-xlated ip=%{dtransaddr->} session_id=%{sessionid->} reason=%{result}"); - -var all255 = all_match({ - processors: [ - dup283, - dup393, - part1248, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup60, - dup282, - ]), -}); - -var msg758 = msg("00257:19", all255); - -var part1249 = match("MESSAGE#749:00257:16/2", "nwparser.p0", "%{}duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype->} src-xlated ip=%{stransaddr->} dst-xlated ip=%{dtransaddr->} session_id=%{sessionid}"); - -var all256 = all_match({ - processors: [ - dup283, - dup393, - part1249, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup60, - dup282, - ]), -}); - -var msg759 = msg("00257:16", all256); - -var part1250 = match("MESSAGE#750:00257:17/2", "nwparser.p0", "%{}duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} src-xlated ip=%{stransaddr->} port=%{stransport->} dst-xlated ip=%{dtransaddr->} port=%{dtransport->} session_id=%{sessionid}"); - -var all257 = all_match({ - processors: [ - dup283, - dup393, - part1250, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup282, - ]), -}); - -var msg760 = msg("00257:17", all257); - -var part1251 = match("MESSAGE#751:00257:18/2", "nwparser.p0", "%{}duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport->} src-xlated ip=%{stransaddr->} port=%{stransport->} session_id=%{sessionid}"); - -var all258 = all_match({ - processors: [ - dup283, - dup393, - part1251, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup282, - ]), -}); - -var msg761 = msg("00257:18", all258); - -var part1252 = match("MESSAGE#752:00257:06/0", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{p0}"); - -var part1253 = match("MESSAGE#752:00257:06/1_0", "nwparser.p0", "%{dport->} session_id=%{sessionid}"); - -var part1254 = match_copy("MESSAGE#752:00257:06/1_1", "nwparser.p0", "dport"); - -var select287 = linear_select([ - part1253, - part1254, -]); - -var all259 = all_match({ - processors: [ - part1252, - select287, - ], - on_success: processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup276, - dup277, - ]), -}); - -var msg762 = msg("00257:06", all259); - -var part1255 = match("MESSAGE#753:00257:07", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup61, - dup282, -])); - -var msg763 = msg("00257:07", part1255); - -var part1256 = match("MESSAGE#754:00257:08", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} tcp=%{icmptype}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup60, - dup276, - dup277, -])); - -var msg764 = msg("00257:08", part1256); - -var part1257 = match("MESSAGE#755:00257:09/0", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{p0}"); - -var part1258 = match("MESSAGE#755:00257:09/1_0", "nwparser.p0", "%{icmptype->} icmp code=%{icmpcode->} session_id=%{sessionid->} reason=%{result}"); - -var part1259 = match("MESSAGE#755:00257:09/1_1", "nwparser.p0", "%{icmptype->} session_id=%{sessionid}"); - -var part1260 = match_copy("MESSAGE#755:00257:09/1_2", "nwparser.p0", "icmptype"); - -var select288 = linear_select([ - part1258, - part1259, - part1260, -]); - -var all260 = all_match({ - processors: [ - part1257, - select288, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup60, - dup282, - ]), -}); - -var msg765 = msg("00257:09", all260); - -var part1261 = match("MESSAGE#756:00257:10/0", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{p0}"); - -var part1262 = match("MESSAGE#756:00257:10/1_0", "nwparser.p0", "%{daddr->} session_id=%{sessionid}"); - -var select289 = linear_select([ - part1262, - dup286, -]); - -var all261 = all_match({ - processors: [ - part1261, - select289, - ], - on_success: processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup60, - dup276, - dup277, - ]), -}); - -var msg766 = msg("00257:10", all261); - -var part1263 = match("MESSAGE#757:00257:11/0", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{p0}"); - -var part1264 = match("MESSAGE#757:00257:11/1_0", "nwparser.p0", "%{daddr->} session_id=%{sessionid->} reason=%{result}"); - -var select290 = linear_select([ - part1264, - dup286, -]); - -var all262 = all_match({ - processors: [ - part1263, - select290, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup60, - dup282, - ]), -}); - -var msg767 = msg("00257:11", all262); - -var part1265 = match("MESSAGE#758:00257:12", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} type=%{fld3}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup274, - dup275, - dup60, - dup282, -])); - -var msg768 = msg("00257:12", part1265); - -var part1266 = match("MESSAGE#759:00257:13", "nwparser.payload", "start_time=\"%{fld2}", processor_chain([ - dup281, - dup2, - dup3, - dup274, - dup4, - dup5, -])); - -var msg769 = msg("00257:13", part1266); - -var select291 = linear_select([ - msg750, - msg751, - msg752, - msg753, - msg754, - msg755, - msg756, - msg757, - msg758, - msg759, - msg760, - msg761, - msg762, - msg763, - msg764, - msg765, - msg766, - msg767, - msg768, - msg769, -]); - -var part1267 = match("MESSAGE#760:00259/1", "nwparser.p0", "user %{username->} has logged on via %{p0}"); - -var part1268 = match("MESSAGE#760:00259/2_0", "nwparser.p0", "the console %{p0}"); - -var select292 = linear_select([ - part1268, - dup289, - dup241, -]); - -var part1269 = match("MESSAGE#760:00259/3", "nwparser.p0", "from %{saddr}:%{sport}"); - -var all263 = all_match({ - processors: [ - dup394, - part1267, - select292, - part1269, - ], - on_success: processor_chain([ - dup28, - dup29, - dup30, - dup31, - dup32, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg770 = msg("00259", all263); - -var part1270 = match("MESSAGE#761:00259:07/1", "nwparser.p0", "user %{administrator->} has logged out via %{logon_type->} from %{saddr}:%{sport}"); - -var all264 = all_match({ - processors: [ - dup394, - part1270, - ], - on_success: processor_chain([ - dup33, - dup29, - dup34, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg771 = msg("00259:07", all264); - -var part1271 = match("MESSAGE#762:00259:01", "nwparser.payload", "Management session via %{logon_type->} from %{saddr}:%{sport->} for [vsys] admin %{administrator->} has timed out", processor_chain([ - dup290, - dup2, - dup3, - dup4, - dup5, -])); - -var msg772 = msg("00259:01", part1271); - -var part1272 = match("MESSAGE#763:00259:02", "nwparser.payload", "Management session via %{logon_type->} for [ vsys ] admin %{administrator->} has timed out", processor_chain([ - dup290, - dup2, - dup3, - dup4, - dup5, -])); - -var msg773 = msg("00259:02", part1272); - -var part1273 = match("MESSAGE#764:00259:03", "nwparser.payload", "Login attempt to system by admin %{administrator->} via the %{logon_type->} has failed", processor_chain([ - dup206, - dup29, - dup30, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg774 = msg("00259:03", part1273); - -var part1274 = match("MESSAGE#765:00259:04", "nwparser.payload", "Login attempt to system by admin %{administrator->} via %{logon_type->} from %{saddr}:%{sport->} has failed", processor_chain([ - dup206, - dup29, - dup30, - dup31, - dup54, - dup2, - dup3, - dup4, - dup5, -])); - -var msg775 = msg("00259:04", part1274); - -var part1275 = match("MESSAGE#766:00259:05/0", "nwparser.payload", "Admin user %{administrator->} has been forced to log out of the %{p0}"); - -var part1276 = match("MESSAGE#766:00259:05/1_2", "nwparser.p0", "Web %{p0}"); - -var select293 = linear_select([ - dup241, - dup289, - part1276, -]); - -var part1277 = match("MESSAGE#766:00259:05/2", "nwparser.p0", "session on host %{daddr}:%{dport}"); - -var all265 = all_match({ - processors: [ - part1275, - select293, - part1277, - ], - on_success: processor_chain([ - dup290, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg776 = msg("00259:05", all265); - -var part1278 = match("MESSAGE#767:00259:06", "nwparser.payload", "Admin user %{administrator->} has been forced to log out of the serial console session.", processor_chain([ - dup290, - dup2, - dup3, - dup4, - dup5, -])); - -var msg777 = msg("00259:06", part1278); - -var select294 = linear_select([ - msg770, - msg771, - msg772, - msg773, - msg774, - msg775, - msg776, - msg777, -]); - -var part1279 = match("MESSAGE#768:00262", "nwparser.payload", "Admin user %{administrator->} has been rejected via the %{logon_type->} server at %{hostip}", processor_chain([ - dup290, - dup2, - dup3, - dup4, - dup5, -])); - -var msg778 = msg("00262", part1279); - -var part1280 = match("MESSAGE#769:00263", "nwparser.payload", "Admin user %{administrator->} has been accepted via the %{logon_type->} server at %{hostip}", processor_chain([ - setc("eventcategory","1401050100"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg779 = msg("00263", part1280); - -var part1281 = match("MESSAGE#770:00400/0_0", "nwparser.payload", "ActiveX control %{p0}"); - -var part1282 = match("MESSAGE#770:00400/0_1", "nwparser.payload", "JAVA applet %{p0}"); - -var part1283 = match("MESSAGE#770:00400/0_2", "nwparser.payload", "EXE file %{p0}"); - -var part1284 = match("MESSAGE#770:00400/0_3", "nwparser.payload", "ZIP file %{p0}"); - -var select295 = linear_select([ - part1281, - part1282, - part1283, - part1284, -]); - -var part1285 = match("MESSAGE#770:00400/1", "nwparser.p0", "has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} and arriving at interface %{dinterface->} in zone %{dst_zone}. %{info}"); - -var all266 = all_match({ - processors: [ - select295, - part1285, - ], - on_success: processor_chain([ - setc("eventcategory","1003000000"), - dup2, - dup4, - dup5, - dup3, - dup61, - ]), -}); - -var msg780 = msg("00400", all266); - -var part1286 = match("MESSAGE#771:00401", "nwparser.payload", "%{signame}! From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone}, int %{interface}). %{info}", processor_chain([ - dup85, - dup2, - dup4, - dup5, - dup3, - dup291, -])); - -var msg781 = msg("00401", part1286); - -var part1287 = match("MESSAGE#772:00402", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone}, int %{interface}). %{info}", processor_chain([ - dup85, - dup2, - dup4, - dup5, - dup3, - dup292, -])); - -var msg782 = msg("00402", part1287); - -var part1288 = match("MESSAGE#773:00402:01/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, and arriving at %{p0}"); - -var part1289 = match("MESSAGE#773:00402:01/2", "nwparser.p0", "%{} %{interface->} in zone %{zone}. %{info}"); - -var all267 = all_match({ - processors: [ - part1288, - dup337, - part1289, - ], - on_success: processor_chain([ - dup85, - dup2, - dup4, - dup5, - dup3, - dup292, - ]), -}); - -var msg783 = msg("00402:01", all267); - -var select296 = linear_select([ - msg782, - msg783, -]); - -var part1290 = match("MESSAGE#774:00403", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone}, int %{interface}). %{info}", processor_chain([ - dup85, - dup2, - dup4, - dup5, - dup3, - dup291, -])); - -var msg784 = msg("00403", part1290); - -var part1291 = match("MESSAGE#775:00404", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone}, int %{interface}). %{info}", processor_chain([ - dup147, - dup148, - dup149, - dup150, - dup2, - dup4, - dup5, - dup3, - dup292, -])); - -var msg785 = msg("00404", part1291); - -var part1292 = match("MESSAGE#776:00405", "nwparser.payload", "%{signame}! From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone}, int %{interface}). %{info}", processor_chain([ - dup147, - dup2, - dup4, - dup5, - dup3, - dup291, -])); - -var msg786 = msg("00405", part1292); - -var msg787 = msg("00406", dup413); - -var msg788 = msg("00407", dup413); - -var msg789 = msg("00408", dup413); - -var all268 = all_match({ - processors: [ - dup132, - dup343, - dup293, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup60, - ]), -}); - -var msg790 = msg("00409", all268); - -var msg791 = msg("00410", dup413); - -var part1293 = match("MESSAGE#782:00410:01", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times.", processor_chain([ - dup58, - dup2, - dup3, - dup59, - dup4, - dup5, - dup60, -])); - -var msg792 = msg("00410:01", part1293); - -var select297 = linear_select([ - msg791, - msg792, -]); - -var part1294 = match("MESSAGE#783:00411/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto TCP (zone %{zone->} %{p0}"); - -var all269 = all_match({ - processors: [ - part1294, - dup343, - dup293, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var msg793 = msg("00411", all269); - -var part1295 = match("MESSAGE#784:00413/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} and arriving at %{p0}"); - -var part1296 = match("MESSAGE#784:00413/2", "nwparser.p0", "%{} %{interface}.%{space}The attack occurred %{dclass_counter1->} times"); - -var all270 = all_match({ - processors: [ - part1295, - dup337, - part1296, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var msg794 = msg("00413", all270); - -var part1297 = match("MESSAGE#785:00413:01/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol}(zone %{group->} %{p0}"); - -var all271 = all_match({ - processors: [ - part1297, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup9, - dup61, - ]), -}); - -var msg795 = msg("00413:01", all271); - -var part1298 = match("MESSAGE#786:00413:02", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.The attack occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup59, - dup5, - dup9, -])); - -var msg796 = msg("00413:02", part1298); - -var select298 = linear_select([ - msg794, - msg795, - msg796, -]); - -var part1299 = match("MESSAGE#787:00414", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone}, int %{interface}). Occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup9, -])); - -var msg797 = msg("00414", part1299); - -var part1300 = match("MESSAGE#788:00414:01", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.The attack occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup3, - dup59, - dup4, - dup5, - dup9, -])); - -var msg798 = msg("00414:01", part1300); - -var select299 = linear_select([ - msg797, - msg798, -]); - -var part1301 = match("MESSAGE#789:00415", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} and arriving at interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, -])); - -var msg799 = msg("00415", part1301); - -var all272 = all_match({ - processors: [ - dup132, - dup343, - dup294, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup60, - ]), -}); - -var msg800 = msg("00423", all272); - -var all273 = all_match({ - processors: [ - dup80, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup3, - dup9, - dup59, - dup4, - dup5, - dup60, - ]), -}); - -var msg801 = msg("00429", all273); - -var all274 = all_match({ - processors: [ - dup132, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup3, - dup9, - dup59, - dup4, - dup5, - dup60, - ]), -}); - -var msg802 = msg("00429:01", all274); - -var select300 = linear_select([ - msg801, - msg802, -]); - -var all275 = all_match({ - processors: [ - dup80, - dup343, - dup295, - dup351, - ], - on_success: processor_chain([ - dup85, - dup2, - dup59, - dup3, - dup9, - dup4, - dup5, - dup61, - ]), -}); - -var msg803 = msg("00430", all275); - -var all276 = all_match({ - processors: [ - dup132, - dup343, - dup295, - dup351, - ], - on_success: processor_chain([ - dup85, - dup2, - dup59, - dup3, - dup9, - dup4, - dup5, - dup60, - ]), -}); - -var msg804 = msg("00430:01", all276); - -var select301 = linear_select([ - msg803, - msg804, -]); - -var msg805 = msg("00431", dup414); - -var msg806 = msg("00432", dup414); - -var msg807 = msg("00433", dup415); - -var msg808 = msg("00434", dup415); - -var msg809 = msg("00435", dup395); - -var all277 = all_match({ - processors: [ - dup132, - dup343, - dup294, - ], - on_success: processor_chain([ - dup58, - dup2, - dup4, - dup59, - dup5, - dup3, - dup60, - ]), -}); - -var msg810 = msg("00435:01", all277); - -var select302 = linear_select([ - msg809, - msg810, -]); - -var msg811 = msg("00436", dup395); - -var all278 = all_match({ - processors: [ - dup64, - dup338, - dup67, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup9, - dup4, - dup5, - dup3, - dup60, - ]), -}); - -var msg812 = msg("00436:01", all278); - -var select303 = linear_select([ - msg811, - msg812, -]); - -var part1302 = match("MESSAGE#803:00437", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, -])); - -var msg813 = msg("00437", part1302); - -var all279 = all_match({ - processors: [ - dup299, - dup338, - dup67, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, - dup9, - ]), -}); - -var msg814 = msg("00437:01", all279); - -var part1303 = match("MESSAGE#805:00437:02", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.The attack occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, - dup9, -])); - -var msg815 = msg("00437:02", part1303); - -var select304 = linear_select([ - msg813, - msg814, - msg815, -]); - -var part1304 = match("MESSAGE#806:00438", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport->} using protocol %{protocol->} and arriving at interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, -])); - -var msg816 = msg("00438", part1304); - -var part1305 = match("MESSAGE#807:00438:01", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, on zone %{zone->} interface %{interface}.%{space}The attack occurred %{dclass_counter1->} times.", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, -])); - -var msg817 = msg("00438:01", part1305); - -var all280 = all_match({ - processors: [ - dup299, - dup338, - dup67, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup9, - dup61, - ]), -}); - -var msg818 = msg("00438:02", all280); - -var select305 = linear_select([ - msg816, - msg817, - msg818, -]); - -var part1306 = match("MESSAGE#809:00440", "nwparser.payload", "%{signame->} has been detected! From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup9, - dup60, -])); - -var msg819 = msg("00440", part1306); - -var part1307 = match("MESSAGE#810:00440:02", "nwparser.payload", "%{signame->} has been detected! From %{saddr}:%{sport->} to %{daddr}:%{dport}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times.", processor_chain([ - dup58, - dup2, - dup59, - dup4, - dup5, - dup3, - dup61, -])); - -var msg820 = msg("00440:02", part1307); - -var all281 = all_match({ - processors: [ - dup239, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup4, - dup5, - dup3, - dup9, - dup61, - ]), -}); - -var msg821 = msg("00440:01", all281); - -var part1308 = match("MESSAGE#812:00440:03/0", "nwparser.payload", "Fragmented traffic! From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{group->} %{p0}"); - -var all282 = all_match({ - processors: [ - part1308, - dup343, - dup83, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup4, - dup5, - dup3, - dup9, - dup60, - ]), -}); - -var msg822 = msg("00440:03", all282); - -var select306 = linear_select([ - msg819, - msg820, - msg821, - msg822, -]); - -var part1309 = match("MESSAGE#813:00441", "nwparser.payload", "%{signame->} id=%{fld2}! From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone}). Occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup4, - dup59, - dup5, - dup9, - dup2, - dup3, - dup60, -])); - -var msg823 = msg("00441", part1309); - -var msg824 = msg("00442", dup396); - -var msg825 = msg("00443", dup396); - -var part1310 = match("MESSAGE#816:00511", "nwparser.payload", "admin %{administrator->} issued command %{fld2->} to redirect output.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg826 = msg("00511", part1310); - -var part1311 = match("MESSAGE#817:00511:01/0", "nwparser.payload", "All System Config saved by admin %{p0}"); - -var all283 = all_match({ - processors: [ - part1311, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg827 = msg("00511:01", all283); - -var part1312 = match("MESSAGE#818:00511:02", "nwparser.payload", "All logged events or alarms are cleared by admin %{administrator}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg828 = msg("00511:02", part1312); - -var part1313 = match("MESSAGE#819:00511:03/0", "nwparser.payload", "Get new software from flash to slot (file: %{fld2}) by admin %{p0}"); - -var all284 = all_match({ - processors: [ - part1313, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg829 = msg("00511:03", all284); - -var part1314 = match("MESSAGE#820:00511:04/0", "nwparser.payload", "Get new software from %{hostip->} (file: %{fld2}) to slot (file: %{fld3}) by admin %{p0}"); - -var all285 = all_match({ - processors: [ - part1314, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg830 = msg("00511:04", all285); - -var part1315 = match("MESSAGE#821:00511:05/0", "nwparser.payload", "Get new software to %{hostip->} (file: %{fld2}) by admin %{p0}"); - -var all286 = all_match({ - processors: [ - part1315, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg831 = msg("00511:05", all286); - -var part1316 = match("MESSAGE#822:00511:06/0", "nwparser.payload", "Log setting is modified by admin %{p0}"); - -var all287 = all_match({ - processors: [ - part1316, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg832 = msg("00511:06", all287); - -var part1317 = match("MESSAGE#823:00511:07/0", "nwparser.payload", "Save configuration to %{hostip->} (file: %{fld2}) by admin %{p0}"); - -var all288 = all_match({ - processors: [ - part1317, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg833 = msg("00511:07", all288); - -var part1318 = match("MESSAGE#824:00511:08/0", "nwparser.payload", "Save new software from slot (file: %{fld2}) to flash by admin %{p0}"); - -var all289 = all_match({ - processors: [ - part1318, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg834 = msg("00511:08", all289); - -var part1319 = match("MESSAGE#825:00511:09/0", "nwparser.payload", "Save new software from %{hostip->} (file: %{result}) to flash by admin %{p0}"); - -var all290 = all_match({ - processors: [ - part1319, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg835 = msg("00511:09", all290); - -var part1320 = match("MESSAGE#826:00511:10/0", "nwparser.payload", "System Config from flash to slot - %{fld2->} by admin %{p0}"); - -var all291 = all_match({ - processors: [ - part1320, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg836 = msg("00511:10", all291); - -var part1321 = match("MESSAGE#827:00511:11/0", "nwparser.payload", "System Config load from %{hostip->} (file %{fld2}) to slot - %{fld3->} by admin %{p0}"); - -var all292 = all_match({ - processors: [ - part1321, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg837 = msg("00511:11", all292); - -var part1322 = match("MESSAGE#828:00511:12/0", "nwparser.payload", "System Config load from %{hostip->} (file %{fld2}) by admin %{p0}"); - -var all293 = all_match({ - processors: [ - part1322, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg838 = msg("00511:12", all293); - -var part1323 = match("MESSAGE#829:00511:13/0", "nwparser.payload", "The system configuration was loaded from the slot by admin %{p0}"); - -var all294 = all_match({ - processors: [ - part1323, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg839 = msg("00511:13", all294); - -var part1324 = match("MESSAGE#830:00511:14", "nwparser.payload", "FIPS: Attempt to set RADIUS shared secret with invalid length %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg840 = msg("00511:14", part1324); - -var select307 = linear_select([ - msg826, - msg827, - msg828, - msg829, - msg830, - msg831, - msg832, - msg833, - msg834, - msg835, - msg836, - msg837, - msg838, - msg839, - msg840, -]); - -var part1325 = match("MESSAGE#831:00513/0", "nwparser.payload", "The physical state of %{p0}"); - -var part1326 = match("MESSAGE#831:00513/1_1", "nwparser.p0", "the Interface %{p0}"); - -var select308 = linear_select([ - dup123, - part1326, - dup122, -]); - -var part1327 = match("MESSAGE#831:00513/2", "nwparser.p0", "%{interface->} has changed to %{p0}"); - -var part1328 = match("MESSAGE#831:00513/3_0", "nwparser.p0", "%{result}. (%{fld1})"); - -var part1329 = match_copy("MESSAGE#831:00513/3_1", "nwparser.p0", "result"); - -var select309 = linear_select([ - part1328, - part1329, -]); - -var all295 = all_match({ - processors: [ - part1325, - select308, - part1327, - select309, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - dup9, - ]), -}); - -var msg841 = msg("00513", all295); - -var part1330 = match("MESSAGE#832:00515/0_0", "nwparser.payload", "Vsys Admin %{p0}"); - -var select310 = linear_select([ - part1330, - dup287, -]); - -var part1331 = match("MESSAGE#832:00515/1", "nwparser.p0", "%{administrator->} has logged on via the %{logon_type->} ( HTTP%{p0}"); - -var part1332 = match("MESSAGE#832:00515/2_1", "nwparser.p0", "S%{p0}"); - -var select311 = linear_select([ - dup96, - part1332, -]); - -var part1333 = match("MESSAGE#832:00515/3", "nwparser.p0", "%{}) to port %{interface->} from %{saddr}:%{sport}"); - -var all296 = all_match({ - processors: [ - select310, - part1331, - select311, - part1333, - ], - on_success: processor_chain([ - dup301, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg842 = msg("00515", all296); - -var part1334 = match("MESSAGE#833:00515:01/0", "nwparser.payload", "Login attempt to system by admin %{administrator->} via %{p0}"); - -var part1335 = match("MESSAGE#833:00515:01/1_0", "nwparser.p0", "the %{logon_type->} has failed %{p0}"); - -var part1336 = match("MESSAGE#833:00515:01/1_1", "nwparser.p0", "%{logon_type->} from %{saddr}:%{sport->} has failed %{p0}"); - -var select312 = linear_select([ - part1335, - part1336, -]); - -var part1337 = match_copy("MESSAGE#833:00515:01/2", "nwparser.p0", "fld2"); - -var all297 = all_match({ - processors: [ - part1334, - select312, - part1337, - ], - on_success: processor_chain([ - dup206, - dup29, - dup30, - dup31, - dup54, - dup2, - dup4, - dup5, - dup302, - dup3, - ]), -}); - -var msg843 = msg("00515:01", all297); - -var part1338 = match("MESSAGE#834:00515:02/0", "nwparser.payload", "Management session via %{p0}"); - -var part1339 = match("MESSAGE#834:00515:02/1_0", "nwparser.p0", "the %{logon_type->} for %{p0}"); - -var part1340 = match("MESSAGE#834:00515:02/1_1", "nwparser.p0", "%{logon_type->} from %{saddr}:%{sport->} for %{p0}"); - -var select313 = linear_select([ - part1339, - part1340, -]); - -var part1341 = match("MESSAGE#834:00515:02/2_0", "nwparser.p0", "[vsys] admin %{p0}"); - -var part1342 = match("MESSAGE#834:00515:02/2_1", "nwparser.p0", "vsys admin %{p0}"); - -var select314 = linear_select([ - part1341, - part1342, - dup15, -]); - -var part1343 = match("MESSAGE#834:00515:02/3", "nwparser.p0", "%{administrator->} has timed out"); - -var all298 = all_match({ - processors: [ - part1338, - select313, - select314, - part1343, - ], - on_success: processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg844 = msg("00515:02", all298); - -var part1344 = match("MESSAGE#835:00515:04/0_0", "nwparser.payload", "[Vsys] %{p0}"); - -var part1345 = match("MESSAGE#835:00515:04/0_1", "nwparser.payload", "Vsys %{p0}"); - -var select315 = linear_select([ - part1344, - part1345, -]); - -var part1346 = match("MESSAGE#835:00515:04/1", "nwparser.p0", "Admin %{administrator->} has logged o%{p0}"); - -var part1347 = match_copy("MESSAGE#835:00515:04/4_1", "nwparser.p0", "logon_type"); - -var select316 = linear_select([ - dup304, - part1347, -]); - -var all299 = all_match({ - processors: [ - select315, - part1346, - dup398, - dup40, - select316, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg845 = msg("00515:04", all299); - -var part1348 = match("MESSAGE#836:00515:06", "nwparser.payload", "Admin User %{administrator->} has logged on via %{logon_type->} from %{saddr}:%{sport}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg846 = msg("00515:06", part1348); - -var part1349 = match("MESSAGE#837:00515:05/0", "nwparser.payload", "%{}Admin %{p0}"); - -var select317 = linear_select([ - dup305, - dup16, -]); - -var part1350 = match("MESSAGE#837:00515:05/2", "nwparser.p0", "%{administrator->} has logged o%{p0}"); - -var part1351 = match("MESSAGE#837:00515:05/5_1", "nwparser.p0", "%{logon_type->} from %{saddr}:%{sport->} (%{fld2})"); - -var select318 = linear_select([ - dup306, - part1351, - dup304, -]); - -var all300 = all_match({ - processors: [ - part1349, - select317, - part1350, - dup398, - dup40, - select318, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg847 = msg("00515:05", all300); - -var part1352 = match("MESSAGE#838:00515:07", "nwparser.payload", "Admin user %{administrator->} login attempt for %{logon_type}(http) management (port %{network_port}) from %{saddr}:%{sport->} %{disposition}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg848 = msg("00515:07", part1352); - -var part1353 = match("MESSAGE#839:00515:08/0", "nwparser.payload", "%{fld2->} Admin User \"%{administrator}\" logged in for %{logon_type}(http%{p0}"); - -var part1354 = match("MESSAGE#839:00515:08/1_0", "nwparser.p0", ") %{p0}"); - -var part1355 = match("MESSAGE#839:00515:08/1_1", "nwparser.p0", "s) %{p0}"); - -var select319 = linear_select([ - part1354, - part1355, -]); - -var part1356 = match("MESSAGE#839:00515:08/2", "nwparser.p0", "management (port %{network_port}) from %{saddr}:%{sport}"); - -var all301 = all_match({ - processors: [ - part1353, - select319, - part1356, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg849 = msg("00515:08", all301); - -var part1357 = match("MESSAGE#840:00515:09", "nwparser.payload", "User %{username->} telnet management session from (%{saddr}:%{sport}) timed out", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg850 = msg("00515:09", part1357); - -var part1358 = match("MESSAGE#841:00515:10", "nwparser.payload", "User %{username->} logged out of telnet session from %{saddr}:%{sport}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg851 = msg("00515:10", part1358); - -var part1359 = match("MESSAGE#842:00515:11", "nwparser.payload", "The session limit threshold has been set to %{trigger_val->} on zone %{zone}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg852 = msg("00515:11", part1359); - -var part1360 = match("MESSAGE#843:00515:12/0", "nwparser.payload", "[ Vsys ] Admin User \"%{administrator}\" logged in for Web( http%{p0}"); - -var part1361 = match("MESSAGE#843:00515:12/2", "nwparser.p0", ") management (port %{network_port})"); - -var all302 = all_match({ - processors: [ - part1360, - dup399, - part1361, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg853 = msg("00515:12", all302); - -var select320 = linear_select([ - dup288, - dup287, -]); - -var part1362 = match("MESSAGE#844:00515:13/1", "nwparser.p0", "user %{administrator->} has logged o%{p0}"); - -var select321 = linear_select([ - dup306, - dup304, -]); - -var all303 = all_match({ - processors: [ - select320, - part1362, - dup398, - dup40, - select321, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg854 = msg("00515:13", all303); - -var part1363 = match("MESSAGE#845:00515:14/0_0", "nwparser.payload", "Admin user %{administrator->} has been forced to log o%{p0}"); - -var part1364 = match("MESSAGE#845:00515:14/0_1", "nwparser.payload", "%{username->} %{fld1->} has been forced to log o%{p0}"); - -var select322 = linear_select([ - part1363, - part1364, -]); - -var part1365 = match("MESSAGE#845:00515:14/2", "nwparser.p0", "of the %{p0}"); - -var part1366 = match("MESSAGE#845:00515:14/3_0", "nwparser.p0", "serial %{logon_type->} session."); - -var part1367 = match("MESSAGE#845:00515:14/3_1", "nwparser.p0", "%{logon_type->} session on host %{hostip}:%{network_port->} (%{event_time})"); - -var part1368 = match("MESSAGE#845:00515:14/3_2", "nwparser.p0", "%{logon_type->} session on host %{hostip}:%{network_port}"); - -var select323 = linear_select([ - part1366, - part1367, - part1368, -]); - -var all304 = all_match({ - processors: [ - select322, - dup398, - part1365, - select323, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg855 = msg("00515:14", all304); - -var part1369 = match("MESSAGE#846:00515:15/0", "nwparser.payload", "%{fld2}: Admin User %{administrator->} has logged o%{p0}"); - -var part1370 = match("MESSAGE#846:00515:15/3_0", "nwparser.p0", "the %{logon_type->} (%{p0}"); - -var part1371 = match("MESSAGE#846:00515:15/3_1", "nwparser.p0", "%{logon_type->} from %{saddr}:%{sport->} (%{p0}"); - -var select324 = linear_select([ - part1370, - part1371, -]); - -var all305 = all_match({ - processors: [ - part1369, - dup398, - dup40, - select324, - dup41, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg856 = msg("00515:15", all305); - -var part1372 = match("MESSAGE#847:00515:16/0_0", "nwparser.payload", "%{fld2}: Admin %{p0}"); - -var select325 = linear_select([ - part1372, - dup287, -]); - -var part1373 = match("MESSAGE#847:00515:16/1", "nwparser.p0", "user %{administrator->} attempt access to %{url->} illegal from %{logon_type}( http%{p0}"); - -var part1374 = match("MESSAGE#847:00515:16/3", "nwparser.p0", ") management (port %{network_port}) from %{saddr}:%{sport}. (%{fld1})"); - -var all306 = all_match({ - processors: [ - select325, - part1373, - dup399, - part1374, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg857 = msg("00515:16", all306); - -var part1375 = match("MESSAGE#848:00515:17/0", "nwparser.payload", "Admin user \"%{administrator}\" logged out for %{logon_type}(%{p0}"); - -var part1376 = match("MESSAGE#848:00515:17/1_0", "nwparser.p0", "https %{p0}"); - -var part1377 = match("MESSAGE#848:00515:17/1_1", "nwparser.p0", " http %{p0}"); - -var select326 = linear_select([ - part1376, - part1377, -]); - -var part1378 = match("MESSAGE#848:00515:17/2", "nwparser.p0", ") management (port %{network_port}) from %{saddr}:%{sport}"); - -var all307 = all_match({ - processors: [ - part1375, - select326, - part1378, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg858 = msg("00515:17", all307); - -var part1379 = match("MESSAGE#849:00515:18", "nwparser.payload", "Admin user %{administrator->} login attempt for %{logon_type}(https) management (port %{network_port}) from %{saddr}:%{sport->} %{disposition}. (%{fld1})", processor_chain([ - dup240, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg859 = msg("00515:18", part1379); - -var part1380 = match("MESSAGE#850:00515:19/0", "nwparser.payload", "Vsys admin user %{administrator->} logged on via %{p0}"); - -var part1381 = match("MESSAGE#850:00515:19/1_0", "nwparser.p0", "%{logon_type->} from remote IP address %{saddr->} using port %{sport}. (%{p0}"); - -var part1382 = match("MESSAGE#850:00515:19/1_1", "nwparser.p0", "the console. (%{p0}"); - -var select327 = linear_select([ - part1381, - part1382, -]); - -var all308 = all_match({ - processors: [ - part1380, - select327, - dup41, - ], - on_success: processor_chain([ - dup240, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg860 = msg("00515:19", all308); - -var part1383 = match("MESSAGE#851:00515:20", "nwparser.payload", "netscreen: Management session via SCS from %{saddr}:%{sport->} for admin netscreen has timed out (%{fld1})", processor_chain([ - dup240, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg861 = msg("00515:20", part1383); - -var select328 = linear_select([ - msg842, - msg843, - msg844, - msg845, - msg846, - msg847, - msg848, - msg849, - msg850, - msg851, - msg852, - msg853, - msg854, - msg855, - msg856, - msg857, - msg858, - msg859, - msg860, - msg861, -]); - -var part1384 = match("MESSAGE#852:00518", "nwparser.payload", "Admin user %{administrator->} %{fld1}at %{saddr->} has been %{disposition->} via the %{logon_type->} server at %{hostip}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg862 = msg("00518", part1384); - -var part1385 = match("MESSAGE#853:00518:17", "nwparser.payload", "Admin user %{administrator->} has been %{disposition->} via the %{logon_type->} server at %{hostip}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg863 = msg("00518:17", part1385); - -var part1386 = match("MESSAGE#854:00518:01", "nwparser.payload", "Local authentication for WebAuth user %{username->} was %{disposition}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg864 = msg("00518:01", part1386); - -var part1387 = match("MESSAGE#855:00518:02", "nwparser.payload", "Local authentication for user %{username->} was %{disposition}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg865 = msg("00518:02", part1387); - -var part1388 = match("MESSAGE#856:00518:03", "nwparser.payload", "User %{username->} at %{saddr->} must enter \"Next Code\" for SecurID %{hostip}", processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, -])); - -var msg866 = msg("00518:03", part1388); - -var part1389 = match("MESSAGE#857:00518:04", "nwparser.payload", "WebAuth user %{username->} at %{saddr->} has been %{disposition->} via the %{logon_type->} server at %{hostip}", processor_chain([ - dup203, - dup2, - dup4, - dup5, - dup3, -])); - -var msg867 = msg("00518:04", part1389); - -var part1390 = match("MESSAGE#858:00518:05", "nwparser.payload", "User %{username->} at %{saddr->} has been challenged via the %{authmethod->} server at %{hostip->} (Rejected since challenge is not supported for %{logon_type})", processor_chain([ - dup203, - dup2, - dup4, - dup5, - dup3, -])); - -var msg868 = msg("00518:05", part1390); - -var part1391 = match("MESSAGE#859:00518:06", "nwparser.payload", "Error in authentication for WebAuth user %{username}", processor_chain([ - dup35, - dup29, - dup31, - dup54, - dup2, - dup4, - dup5, - dup3, -])); - -var msg869 = msg("00518:06", part1391); - -var part1392 = match("MESSAGE#860:00518:07/0", "nwparser.payload", "Authentication for user %{username->} was denied (long %{p0}"); - -var part1393 = match("MESSAGE#860:00518:07/1_1", "nwparser.p0", "username %{p0}"); - -var select329 = linear_select([ - dup24, - part1393, -]); - -var part1394 = match("MESSAGE#860:00518:07/2", "nwparser.p0", ")%{}"); - -var all309 = all_match({ - processors: [ - part1392, - select329, - part1394, - ], - on_success: processor_chain([ - dup53, - dup29, - dup31, - dup54, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg870 = msg("00518:07", all309); - -var part1395 = match("MESSAGE#861:00518:08", "nwparser.payload", "User %{username->} at %{saddr->} %{authmethod->} authentication attempt has timed out", processor_chain([ - dup35, - dup29, - dup31, - dup39, - dup2, - dup4, - dup5, - dup3, -])); - -var msg871 = msg("00518:08", part1395); - -var part1396 = match("MESSAGE#862:00518:09", "nwparser.payload", "User %{username->} at %{saddr->} has been %{disposition->} via the %{logon_type->} server at %{hostip}", processor_chain([ - dup203, - dup2, - dup4, - dup5, - dup3, -])); - -var msg872 = msg("00518:09", part1396); - -var part1397 = match("MESSAGE#863:00518:10", "nwparser.payload", "Admin user \"%{administrator}\" login attempt for %{logon_type->} (%{network_service}) management (port %{network_port}) from %{saddr}:%{sport->} failed due to %{result}. (%{fld1})", processor_chain([ - dup206, - dup29, - dup30, - dup31, - dup54, - dup2, - dup4, - dup9, - dup5, - dup3, - dup302, -])); - -var msg873 = msg("00518:10", part1397); - -var part1398 = match("MESSAGE#864:00518:11/0", "nwparser.payload", "ADM: Local admin authentication failed for login name %{p0}"); - -var part1399 = match("MESSAGE#864:00518:11/1_0", "nwparser.p0", "'%{username}': %{p0}"); - -var part1400 = match("MESSAGE#864:00518:11/1_1", "nwparser.p0", "%{username}: %{p0}"); - -var select330 = linear_select([ - part1399, - part1400, -]); - -var part1401 = match("MESSAGE#864:00518:11/2", "nwparser.p0", "%{result->} (%{fld1})"); - -var all310 = all_match({ - processors: [ - part1398, - select330, - part1401, - ], - on_success: processor_chain([ - dup206, - dup29, - dup30, - dup31, - dup54, - dup2, - dup9, - dup4, - dup5, - dup3, - ]), -}); - -var msg874 = msg("00518:11", all310); - -var part1402 = match("MESSAGE#865:00518:12", "nwparser.payload", "Admin user \"%{administrator}\" login attempt for %{logon_type}(%{network_service}) management (port %{network_port}) from %{saddr}:%{sport->} %{disposition}. (%{fld1})", processor_chain([ - dup240, - dup2, - dup4, - dup9, - dup5, - dup3, -])); - -var msg875 = msg("00518:12", part1402); - -var part1403 = match("MESSAGE#866:00518:13", "nwparser.payload", "User %{username->} at %{saddr->} is rejected by the Radius server at %{hostip}. (%{fld1})", processor_chain([ - dup290, - dup2, - dup3, - dup4, - dup9, - dup5, -])); - -var msg876 = msg("00518:13", part1403); - -var part1404 = match("MESSAGE#867:00518:14", "nwparser.payload", "%{fld2}: Admin user has been rejected via the Radius server at %{hostip->} (%{fld1})", processor_chain([ - dup290, - dup2, - dup4, - dup5, - dup9, -])); - -var msg877 = msg("00518:14", part1404); - -var select331 = linear_select([ - msg862, - msg863, - msg864, - msg865, - msg866, - msg867, - msg868, - msg869, - msg870, - msg871, - msg872, - msg873, - msg874, - msg875, - msg876, - msg877, -]); - -var part1405 = match("MESSAGE#868:00519/0", "nwparser.payload", "Admin user %{administrator->} %{p0}"); - -var part1406 = match("MESSAGE#868:00519/1_1", "nwparser.p0", "of group %{group->} at %{saddr->} has %{p0}"); - -var part1407 = match("MESSAGE#868:00519/1_2", "nwparser.p0", "%{group->} at %{saddr->} has %{p0}"); - -var select332 = linear_select([ - dup194, - part1406, - part1407, -]); - -var part1408 = match("MESSAGE#868:00519/2", "nwparser.p0", "been %{disposition->} via the %{logon_type->} server %{p0}"); - -var part1409 = match("MESSAGE#868:00519/3_0", "nwparser.p0", "at %{p0}"); - -var select333 = linear_select([ - part1409, - dup16, -]); - -var part1410 = match("MESSAGE#868:00519/4", "nwparser.p0", "%{hostip}"); - -var all311 = all_match({ - processors: [ - part1405, - select332, - part1408, - select333, - part1410, - ], - on_success: processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg878 = msg("00519", all311); - -var part1411 = match("MESSAGE#869:00519:01/0", "nwparser.payload", "Local authentication for %{p0}"); - -var select334 = linear_select([ - dup307, - dup305, -]); - -var part1412 = match("MESSAGE#869:00519:01/2", "nwparser.p0", "%{username->} was %{disposition}"); - -var all312 = all_match({ - processors: [ - part1411, - select334, - part1412, - ], - on_success: processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg879 = msg("00519:01", all312); - -var part1413 = match("MESSAGE#870:00519:02/1_1", "nwparser.p0", "User %{p0}"); - -var select335 = linear_select([ - dup307, - part1413, -]); - -var part1414 = match("MESSAGE#870:00519:02/2", "nwparser.p0", "%{username->} at %{saddr->} has been %{disposition->} via the %{logon_type->} server at %{hostip}"); - -var all313 = all_match({ - processors: [ - dup160, - select335, - part1414, - ], - on_success: processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg880 = msg("00519:02", all313); - -var part1415 = match("MESSAGE#871:00519:03", "nwparser.payload", "Admin user \"%{administrator}\" logged in for %{logon_type}(%{network_service}) management (port %{network_port}) from %{saddr}:%{sport->} %{fld4}", processor_chain([ - dup240, - dup2, - dup3, - dup4, - dup5, -])); - -var msg881 = msg("00519:03", part1415); - -var part1416 = match("MESSAGE#872:00519:04", "nwparser.payload", "ADM: Local admin authentication successful for login name %{username->} (%{fld1})", processor_chain([ - dup240, - dup2, - dup4, - dup5, - dup9, -])); - -var msg882 = msg("00519:04", part1416); - -var part1417 = match("MESSAGE#873:00519:05", "nwparser.payload", "%{fld2}Admin user %{administrator->} has been accepted via the Radius server at %{hostip}(%{fld1})", processor_chain([ - dup240, - dup2, - dup4, - dup5, - dup9, -])); - -var msg883 = msg("00519:05", part1417); - -var select336 = linear_select([ - msg878, - msg879, - msg880, - msg881, - msg882, - msg883, -]); - -var part1418 = match("MESSAGE#874:00520", "nwparser.payload", "%{hostname->} user authentication attempt has timed out", processor_chain([ - dup35, - dup31, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg884 = msg("00520", part1418); - -var part1419 = match("MESSAGE#875:00520:01/0", "nwparser.payload", "User %{username->} at %{hostip->} %{p0}"); - -var part1420 = match("MESSAGE#875:00520:01/1_0", "nwparser.p0", "RADIUS %{p0}"); - -var part1421 = match("MESSAGE#875:00520:01/1_1", "nwparser.p0", "SecurID %{p0}"); - -var part1422 = match("MESSAGE#875:00520:01/1_2", "nwparser.p0", "LDAP %{p0}"); - -var part1423 = match("MESSAGE#875:00520:01/1_3", "nwparser.p0", "Local %{p0}"); - -var select337 = linear_select([ - part1420, - part1421, - part1422, - part1423, -]); - -var part1424 = match("MESSAGE#875:00520:01/2", "nwparser.p0", "authentication attempt has timed out%{}"); - -var all314 = all_match({ - processors: [ - part1419, - select337, - part1424, - ], - on_success: processor_chain([ - dup35, - dup31, - dup39, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg885 = msg("00520:01", all314); - -var part1425 = match("MESSAGE#876:00520:02/0", "nwparser.payload", "Trying %{p0}"); - -var part1426 = match("MESSAGE#876:00520:02/2", "nwparser.p0", "server %{fld2}"); - -var all315 = all_match({ - processors: [ - part1425, - dup400, - part1426, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg886 = msg("00520:02", all315); - -var part1427 = match("MESSAGE#877:00520:03/1_0", "nwparser.p0", "Primary %{p0}"); - -var part1428 = match("MESSAGE#877:00520:03/1_1", "nwparser.p0", "Backup1 %{p0}"); - -var part1429 = match("MESSAGE#877:00520:03/1_2", "nwparser.p0", "Backup2 %{p0}"); - -var select338 = linear_select([ - part1427, - part1428, - part1429, -]); - -var part1430 = match("MESSAGE#877:00520:03/2", "nwparser.p0", "%{fld2}, %{p0}"); - -var part1431 = match("MESSAGE#877:00520:03/4", "nwparser.p0", "%{fld3}, and %{p0}"); - -var part1432 = match("MESSAGE#877:00520:03/6", "nwparser.p0", "%{fld4->} servers failed"); - -var all316 = all_match({ - processors: [ - dup160, - select338, - part1430, - dup400, - part1431, - dup400, - part1432, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg887 = msg("00520:03", all316); - -var part1433 = match("MESSAGE#878:00520:04", "nwparser.payload", "Trying %{fld2->} Server %{hostip->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg888 = msg("00520:04", part1433); - -var part1434 = match("MESSAGE#1221:00520:05", "nwparser.payload", "Active Server Switchover: New requests for %{fld31->} server will try %{fld32->} from now on. (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg889 = msg("00520:05", part1434); - -var select339 = linear_select([ - msg884, - msg885, - msg886, - msg887, - msg888, - msg889, -]); - -var part1435 = match("MESSAGE#879:00521", "nwparser.payload", "Can't connect to E-mail server %{hostip}", processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, -])); - -var msg890 = msg("00521", part1435); - -var part1436 = match("MESSAGE#880:00522", "nwparser.payload", "HA link state has %{fld2}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg891 = msg("00522", part1436); - -var part1437 = match("MESSAGE#881:00523", "nwparser.payload", "URL filtering received an error from %{fld2->} (error %{resultcode}).", processor_chain([ - dup232, - dup2, - dup3, - dup4, - dup5, -])); - -var msg892 = msg("00523", part1437); - -var part1438 = match("MESSAGE#882:00524", "nwparser.payload", "NetScreen device at %{hostip}:%{network_port->} has responded successfully to SNMP request from %{saddr}:%{sport}", processor_chain([ - dup209, - dup2, - dup3, - dup4, - dup5, -])); - -var msg893 = msg("00524", part1438); - -var part1439 = match("MESSAGE#883:00524:02", "nwparser.payload", "SNMP request from an unknown SNMP community public at %{hostip}:%{network_port->} has been received. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg894 = msg("00524:02", part1439); - -var part1440 = match("MESSAGE#884:00524:03", "nwparser.payload", "SNMP: NetScreen device has responded successfully to the SNMP request from %{saddr}:%{sport}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg895 = msg("00524:03", part1440); - -var part1441 = match("MESSAGE#885:00524:04", "nwparser.payload", "SNMP request from an unknown SNMP community admin at %{hostip}:%{network_port->} has been received. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg896 = msg("00524:04", part1441); - -var part1442 = match("MESSAGE#886:00524:05", "nwparser.payload", "SNMP request from an unknown SNMP community %{fld2->} at %{hostip}:%{network_port->} has been received. (%{fld1})", processor_chain([ - dup18, - dup2, - dup4, - dup5, - dup9, -])); - -var msg897 = msg("00524:05", part1442); - -var part1443 = match("MESSAGE#887:00524:06", "nwparser.payload", "SNMP request has been received from an unknown host in SNMP community %{fld2->} at %{hostip}:%{network_port}. (%{fld1})", processor_chain([ - dup18, - dup2, - dup4, - dup5, - dup9, -])); - -var msg898 = msg("00524:06", part1443); - -var part1444 = match("MESSAGE#888:00524:12", "nwparser.payload", "SNMP request from an unknown SNMP community %{fld2->} at %{saddr}:%{sport->} to %{daddr}:%{dport->} has been received", processor_chain([ - dup18, - dup2, - dup4, - dup5, -])); - -var msg899 = msg("00524:12", part1444); - -var part1445 = match("MESSAGE#889:00524:14", "nwparser.payload", "SNMP request from %{saddr}:%{sport->} has been received, but the SNMP version type is incorrect. (%{fld1})", processor_chain([ - dup19, - dup2, - dup4, - setc("result","the SNMP version type is incorrect"), - dup5, - dup9, -])); - -var msg900 = msg("00524:14", part1445); - -var part1446 = match("MESSAGE#890:00524:13/0", "nwparser.payload", "SNMP request has been received%{p0}"); - -var part1447 = match("MESSAGE#890:00524:13/2", "nwparser.p0", "%{}but %{result}"); - -var all317 = all_match({ - processors: [ - part1446, - dup401, - part1447, - ], - on_success: processor_chain([ - dup18, - dup2, - dup4, - dup5, - ]), -}); - -var msg901 = msg("00524:13", all317); - -var part1448 = match("MESSAGE#891:00524:07", "nwparser.payload", "Response to SNMP request from %{saddr}:%{sport->} to %{daddr}:%{dport->} has %{disposition->} due to %{result}", processor_chain([ - dup18, - dup2, - dup4, - dup5, -])); - -var msg902 = msg("00524:07", part1448); - -var part1449 = match("MESSAGE#892:00524:08", "nwparser.payload", "SNMP community %{fld2->} cannot be added because %{result}", processor_chain([ - dup18, - dup2, - dup4, - dup5, -])); - -var msg903 = msg("00524:08", part1449); - -var part1450 = match("MESSAGE#893:00524:09", "nwparser.payload", "SNMP host %{hostip->} cannot be added to community %{fld2->} because of %{result}", processor_chain([ - dup18, - dup2, - dup4, - dup5, -])); - -var msg904 = msg("00524:09", part1450); - -var part1451 = match("MESSAGE#894:00524:10", "nwparser.payload", "SNMP host %{hostip->} cannot be added because %{result}", processor_chain([ - dup18, - dup2, - dup4, - dup5, -])); - -var msg905 = msg("00524:10", part1451); - -var part1452 = match("MESSAGE#895:00524:11", "nwparser.payload", "SNMP host %{hostip->} cannot be removed from community %{fld2->} because %{result}", processor_chain([ - dup18, - dup2, - dup4, - dup5, -])); - -var msg906 = msg("00524:11", part1452); - -var part1453 = match("MESSAGE#1222:00524:16", "nwparser.payload", "SNMP user/community %{fld34->} doesn't exist. (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg907 = msg("00524:16", part1453); - -var select340 = linear_select([ - msg893, - msg894, - msg895, - msg896, - msg897, - msg898, - msg899, - msg900, - msg901, - msg902, - msg903, - msg904, - msg905, - msg906, - msg907, -]); - -var part1454 = match("MESSAGE#896:00525", "nwparser.payload", "The new PIN for user %{username->} at %{hostip->} has been %{disposition->} by SecurID %{fld2}", processor_chain([ - dup203, - setc("ec_subject","Password"), - dup38, - dup2, - dup3, - dup4, - dup5, -])); - -var msg908 = msg("00525", part1454); - -var part1455 = match("MESSAGE#897:00525:01", "nwparser.payload", "User %{username->} at %{hostip->} has selected a system-generated PIN for authentication with SecurID %{fld2}", processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, -])); - -var msg909 = msg("00525:01", part1455); - -var part1456 = match("MESSAGE#898:00525:02", "nwparser.payload", "User %{username->} at %{hostip->} must enter the \"new PIN\" for SecurID %{fld2}", processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, -])); - -var msg910 = msg("00525:02", part1456); - -var part1457 = match("MESSAGE#899:00525:03", "nwparser.payload", "User %{username->} at %{hostip->} must make a \"New PIN\" choice for SecurID %{fld2}", processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, -])); - -var msg911 = msg("00525:03", part1457); - -var select341 = linear_select([ - msg908, - msg909, - msg910, - msg911, -]); - -var part1458 = match("MESSAGE#900:00526", "nwparser.payload", "The user limit has been exceeded and %{hostip->} cannot be added", processor_chain([ - dup37, - dup219, - dup38, - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg912 = msg("00526", part1458); - -var part1459 = match("MESSAGE#901:00527/0", "nwparser.payload", "A DHCP-%{p0}"); - -var part1460 = match("MESSAGE#901:00527/1_1", "nwparser.p0", " assigned %{p0}"); - -var select342 = linear_select([ - dup311, - part1460, -]); - -var part1461 = match("MESSAGE#901:00527/2", "nwparser.p0", "IP address %{hostip->} has been %{p0}"); - -var part1462 = match("MESSAGE#901:00527/3_1", "nwparser.p0", "freed from %{p0}"); - -var part1463 = match("MESSAGE#901:00527/3_2", "nwparser.p0", "freed %{p0}"); - -var select343 = linear_select([ - dup312, - part1462, - part1463, -]); - -var all318 = all_match({ - processors: [ - part1459, - select342, - part1461, - select343, - dup108, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg913 = msg("00527", all318); - -var part1464 = match("MESSAGE#902:00527:01", "nwparser.payload", "A DHCP-assigned IP address has been manually released%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg914 = msg("00527:01", part1464); - -var part1465 = match("MESSAGE#903:00527:02/0", "nwparser.payload", "DHCP server has %{p0}"); - -var part1466 = match("MESSAGE#903:00527:02/1_1", "nwparser.p0", "released %{p0}"); - -var part1467 = match("MESSAGE#903:00527:02/1_2", "nwparser.p0", "assigned or released %{p0}"); - -var select344 = linear_select([ - dup311, - part1466, - part1467, -]); - -var part1468 = match("MESSAGE#903:00527:02/2", "nwparser.p0", "an IP address%{}"); - -var all319 = all_match({ - processors: [ - part1465, - select344, - part1468, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg915 = msg("00527:02", all319); - -var part1469 = match("MESSAGE#904:00527:03", "nwparser.payload", "MAC address %{macaddr->} has detected an IP conflict and has declined address %{hostip}", processor_chain([ - dup272, - dup2, - dup3, - dup4, - dup5, -])); - -var msg916 = msg("00527:03", part1469); - -var part1470 = match("MESSAGE#905:00527:04", "nwparser.payload", "One or more DHCP-assigned IP addresses have been manually released.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg917 = msg("00527:04", part1470); - -var part1471 = match("MESSAGE#906:00527:05/2", "nwparser.p0", "%{} %{interface->} is more than %{fld2->} allocated."); - -var all320 = all_match({ - processors: [ - dup210, - dup337, - part1471, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg918 = msg("00527:05", all320); - -var part1472 = match("MESSAGE#907:00527:06/0", "nwparser.payload", "IP address %{hostip->} %{p0}"); - -var select345 = linear_select([ - dup106, - dup127, -]); - -var part1473 = match("MESSAGE#907:00527:06/3_1", "nwparser.p0", "released from %{p0}"); - -var select346 = linear_select([ - dup312, - part1473, -]); - -var part1474 = match("MESSAGE#907:00527:06/4", "nwparser.p0", "%{fld2->} (%{fld1})"); - -var all321 = all_match({ - processors: [ - part1472, - select345, - dup23, - select346, - part1474, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg919 = msg("00527:06", all321); - -var part1475 = match("MESSAGE#908:00527:07", "nwparser.payload", "One or more IP addresses have expired. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg920 = msg("00527:07", part1475); - -var part1476 = match("MESSAGE#909:00527:08", "nwparser.payload", "DHCP server on interface %{interface->} received %{protocol_detail->} from %{smacaddr->} requesting out-of-scope IP address %{hostip}/%{mask->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg921 = msg("00527:08", part1476); - -var part1477 = match("MESSAGE#910:00527:09/0", "nwparser.payload", "MAC address %{macaddr->} has %{disposition->} %{p0}"); - -var part1478 = match("MESSAGE#910:00527:09/1_0", "nwparser.p0", "address %{hostip->} (%{p0}"); - -var part1479 = match("MESSAGE#910:00527:09/1_1", "nwparser.p0", "%{hostip->} (%{p0}"); - -var select347 = linear_select([ - part1478, - part1479, -]); - -var all322 = all_match({ - processors: [ - part1477, - select347, - dup41, - ], - on_success: processor_chain([ - dup272, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg922 = msg("00527:09", all322); - -var part1480 = match("MESSAGE#911:00527:10", "nwparser.payload", "One or more IP addresses are expired. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg923 = msg("00527:10", part1480); - -var select348 = linear_select([ - msg913, - msg914, - msg915, - msg916, - msg917, - msg918, - msg919, - msg920, - msg921, - msg922, - msg923, -]); - -var part1481 = match("MESSAGE#912:00528", "nwparser.payload", "SCS: User '%{username}' authenticated using password :", processor_chain([ - setc("eventcategory","1302010000"), - dup29, - dup31, - dup32, - dup2, - dup3, - dup4, - dup5, -])); - -var msg924 = msg("00528", part1481); - -var part1482 = match("MESSAGE#913:00528:01", "nwparser.payload", "SCS: Connection terminated for user %{username->} from", processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, -])); - -var msg925 = msg("00528:01", part1482); - -var part1483 = match("MESSAGE#914:00528:02", "nwparser.payload", "SCS: Disabled for all root/vsys on device. Client host attempting connection to interface '%{interface}' with address %{hostip->} from %{saddr}", processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, -])); - -var msg926 = msg("00528:02", part1483); - -var part1484 = match("MESSAGE#915:00528:03", "nwparser.payload", "SSH: NetScreen device %{disposition->} to identify itself to the SSH client at %{hostip}", processor_chain([ - dup203, - dup2, - dup4, - dup5, - dup3, -])); - -var msg927 = msg("00528:03", part1484); - -var part1485 = match("MESSAGE#916:00528:04", "nwparser.payload", "SSH: Incompatible SSH version string has been received from SSH client at %{hostip}", processor_chain([ - dup203, - dup2, - dup4, - dup5, - dup3, -])); - -var msg928 = msg("00528:04", part1485); - -var part1486 = match("MESSAGE#917:00528:05", "nwparser.payload", "SSH: %{disposition->} to send identification string to client host at %{hostip}", processor_chain([ - dup203, - dup2, - dup3, - dup4, - dup5, -])); - -var msg929 = msg("00528:05", part1486); - -var part1487 = match("MESSAGE#918:00528:06", "nwparser.payload", "SSH: Client at %{saddr->} attempted to connect with invalid version string.", processor_chain([ - dup313, - dup2, - dup3, - dup4, - dup5, - setc("result","invalid version string"), -])); - -var msg930 = msg("00528:06", part1487); - -var part1488 = match("MESSAGE#919:00528:07/0", "nwparser.payload", "SSH: %{disposition->} to negotiate %{p0}"); - -var part1489 = match("MESSAGE#919:00528:07/1_1", "nwparser.p0", "MAC %{p0}"); - -var part1490 = match("MESSAGE#919:00528:07/1_2", "nwparser.p0", "key exchange %{p0}"); - -var part1491 = match("MESSAGE#919:00528:07/1_3", "nwparser.p0", "host key %{p0}"); - -var select349 = linear_select([ - dup88, - part1489, - part1490, - part1491, -]); - -var part1492 = match("MESSAGE#919:00528:07/2", "nwparser.p0", "algorithm with host %{hostip}"); - -var all323 = all_match({ - processors: [ - part1488, - select349, - part1492, - ], - on_success: processor_chain([ - dup314, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg931 = msg("00528:07", all323); - -var part1493 = match("MESSAGE#920:00528:08", "nwparser.payload", "SSH: Unsupported cipher type %{fld2->} requested from %{saddr}", processor_chain([ - dup314, - dup2, - dup4, - dup5, - dup3, -])); - -var msg932 = msg("00528:08", part1493); - -var part1494 = match("MESSAGE#921:00528:09", "nwparser.payload", "SSH: Host client has requested NO cipher from %{saddr}", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, -])); - -var msg933 = msg("00528:09", part1494); - -var part1495 = match("MESSAGE#922:00528:10", "nwparser.payload", "SSH: Disabled for '%{vsys}'. Attempted connection %{disposition->} from %{saddr}:%{sport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg934 = msg("00528:10", part1495); - -var part1496 = match("MESSAGE#923:00528:11", "nwparser.payload", "SSH: Disabled for %{fld2->} Attempted connection %{disposition->} from %{saddr}:%{sport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg935 = msg("00528:11", part1496); - -var part1497 = match("MESSAGE#924:00528:12", "nwparser.payload", "SSH: SSH user %{username->} at %{saddr->} tried unsuccessfully to log in to %{vsys->} using the shared untrusted interface. SSH disabled on that interface.", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - setc("disposition","disabled"), -])); - -var msg936 = msg("00528:12", part1497); - -var part1498 = match("MESSAGE#925:00528:13/0", "nwparser.payload", "SSH: SSH client at %{saddr->} tried unsuccessfully to %{p0}"); - -var part1499 = match("MESSAGE#925:00528:13/1_0", "nwparser.p0", "make %{p0}"); - -var part1500 = match("MESSAGE#925:00528:13/1_1", "nwparser.p0", "establish %{p0}"); - -var select350 = linear_select([ - part1499, - part1500, -]); - -var part1501 = match("MESSAGE#925:00528:13/2", "nwparser.p0", "an SSH connection to %{p0}"); - -var part1502 = match("MESSAGE#925:00528:13/4", "nwparser.p0", "%{} %{interface->} with IP %{hostip->} SSH %{p0}"); - -var part1503 = match("MESSAGE#925:00528:13/5_0", "nwparser.p0", "not enabled %{p0}"); - -var select351 = linear_select([ - part1503, - dup157, -]); - -var part1504 = match("MESSAGE#925:00528:13/6", "nwparser.p0", "on that interface.%{}"); - -var all324 = all_match({ - processors: [ - part1498, - select350, - part1501, - dup337, - part1502, - select351, - part1504, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg937 = msg("00528:13", all324); - -var part1505 = match("MESSAGE#926:00528:14", "nwparser.payload", "SSH: SSH client %{saddr->} unsuccessfully attempted to make an SSH connection to %{vsys->} SSH was not completely initialized for that system.", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg938 = msg("00528:14", part1505); - -var part1506 = match("MESSAGE#927:00528:15/0", "nwparser.payload", "SSH: Admin user %{p0}"); - -var part1507 = match("MESSAGE#927:00528:15/1_1", "nwparser.p0", "%{administrator->} %{p0}"); - -var select352 = linear_select([ - dup315, - part1507, -]); - -var part1508 = match("MESSAGE#927:00528:15/2", "nwparser.p0", "at host %{saddr->} requested unsupported %{p0}"); - -var part1509 = match("MESSAGE#927:00528:15/3_0", "nwparser.p0", "PKA algorithm %{p0}"); - -var part1510 = match("MESSAGE#927:00528:15/3_1", "nwparser.p0", "authentication method %{p0}"); - -var select353 = linear_select([ - part1509, - part1510, -]); - -var all325 = all_match({ - processors: [ - part1506, - select352, - part1508, - select353, - dup108, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg939 = msg("00528:15", all325); - -var part1511 = match("MESSAGE#928:00528:16", "nwparser.payload", "SCP: Admin '%{administrator}' at host %{saddr->} executed invalid scp command: '%{fld2}'", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg940 = msg("00528:16", part1511); - -var part1512 = match("MESSAGE#929:00528:17", "nwparser.payload", "SCP: Disabled for '%{username}'. Attempted file transfer failed from host %{saddr}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg941 = msg("00528:17", part1512); - -var part1513 = match("MESSAGE#930:00528:18/2", "nwparser.p0", "authentication successful for admin user %{p0}"); - -var all326 = all_match({ - processors: [ - dup316, - dup402, - part1513, - dup403, - dup320, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - setc("disposition","successful"), - setc("event_description","authentication successful for admin user"), - ]), -}); - -var msg942 = msg("00528:18", all326); - -var part1514 = match("MESSAGE#931:00528:26/2", "nwparser.p0", "authentication failed for admin user %{p0}"); - -var all327 = all_match({ - processors: [ - dup316, - dup402, - part1514, - dup403, - dup320, - ], - on_success: processor_chain([ - dup206, - dup29, - dup31, - dup54, - dup2, - dup4, - dup5, - dup302, - dup3, - setc("event_description","authentication failed for admin user"), - ]), -}); - -var msg943 = msg("00528:26", all327); - -var part1515 = match("MESSAGE#932:00528:19/2", "nwparser.p0", ": SSH user %{username->} has been %{disposition->} using password from %{saddr}:%{sport}"); - -var all328 = all_match({ - processors: [ - dup321, - dup404, - part1515, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg944 = msg("00528:19", all328); - -var part1516 = match("MESSAGE#933:00528:20/2", "nwparser.p0", ": Connection has been %{disposition->} for admin user %{administrator->} at %{saddr}:%{sport}"); - -var all329 = all_match({ - processors: [ - dup321, - dup404, - part1516, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg945 = msg("00528:20", all329); - -var part1517 = match("MESSAGE#934:00528:21", "nwparser.payload", "SCS: SSH user %{username->} at %{saddr}:%{sport->} has requested PKA RSA authentication, which is not supported for that client.", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, -])); - -var msg946 = msg("00528:21", part1517); - -var part1518 = match("MESSAGE#935:00528:22/0", "nwparser.payload", "SCS: SSH client at %{saddr->} has attempted to make an SCS connection to %{p0}"); - -var part1519 = match("MESSAGE#935:00528:22/2", "nwparser.p0", "%{} %{interface->} with IP %{hostip->} but %{disposition->} because SCS is not enabled for that interface."); - -var all330 = all_match({ - processors: [ - part1518, - dup337, - part1519, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - setc("result","SCS is not enabled for that interface"), - ]), -}); - -var msg947 = msg("00528:22", all330); - -var part1520 = match("MESSAGE#936:00528:23", "nwparser.payload", "SCS: SSH client at %{saddr}:%{sport->} has %{disposition->} to make an SCS connection to vsys %{vsys->} because SCS cannot generate the host and server keys before timing out.", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - setc("result","SCS cannot generate the host and server keys before timing out"), -])); - -var msg948 = msg("00528:23", part1520); - -var part1521 = match("MESSAGE#937:00528:24", "nwparser.payload", "SSH: %{change_attribute->} has been changed from %{change_old->} to %{change_new}", processor_chain([ - dup281, - dup2, - dup3, - dup4, - dup5, -])); - -var msg949 = msg("00528:24", part1521); - -var part1522 = match("MESSAGE#938:00528:25/0", "nwparser.payload", "SSH: Admin %{p0}"); - -var part1523 = match("MESSAGE#938:00528:25/2", "nwparser.p0", "at host %{saddr->} attempted to be authenticated with no authentication methods enabled."); - -var all331 = all_match({ - processors: [ - part1522, - dup403, - part1523, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - ]), -}); - -var msg950 = msg("00528:25", all331); - -var select354 = linear_select([ - msg924, - msg925, - msg926, - msg927, - msg928, - msg929, - msg930, - msg931, - msg932, - msg933, - msg934, - msg935, - msg936, - msg937, - msg938, - msg939, - msg940, - msg941, - msg942, - msg943, - msg944, - msg945, - msg946, - msg947, - msg948, - msg949, - msg950, -]); - -var part1524 = match("MESSAGE#939:00529/1_0", "nwparser.p0", "manually %{p0}"); - -var part1525 = match("MESSAGE#939:00529/1_1", "nwparser.p0", "automatically %{p0}"); - -var select355 = linear_select([ - part1524, - part1525, -]); - -var part1526 = match("MESSAGE#939:00529/2", "nwparser.p0", "refreshed%{}"); - -var all332 = all_match({ - processors: [ - dup63, - select355, - part1526, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg951 = msg("00529", all332); - -var part1527 = match("MESSAGE#940:00529:01/0", "nwparser.payload", "DNS entries have been refreshed by %{p0}"); - -var part1528 = match("MESSAGE#940:00529:01/1_0", "nwparser.p0", "state change%{}"); - -var part1529 = match("MESSAGE#940:00529:01/1_1", "nwparser.p0", "HA%{}"); - -var select356 = linear_select([ - part1528, - part1529, -]); - -var all333 = all_match({ - processors: [ - part1527, - select356, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg952 = msg("00529:01", all333); - -var select357 = linear_select([ - msg951, - msg952, -]); - -var part1530 = match("MESSAGE#941:00530", "nwparser.payload", "An IP conflict has been detected and the DHCP client has declined address %{hostip}", processor_chain([ - dup272, - dup2, - dup3, - dup4, - dup5, -])); - -var msg953 = msg("00530", part1530); - -var part1531 = match("MESSAGE#942:00530:01/0", "nwparser.payload", "DHCP client IP %{hostip->} for the %{p0}"); - -var part1532 = match("MESSAGE#942:00530:01/2", "nwparser.p0", "%{} %{interface->} has been manually released"); - -var all334 = all_match({ - processors: [ - part1531, - dup337, - part1532, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg954 = msg("00530:01", all334); - -var part1533 = match("MESSAGE#943:00530:02", "nwparser.payload", "DHCP client is unable to get an IP address for the %{interface->} interface", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg955 = msg("00530:02", part1533); - -var part1534 = match("MESSAGE#944:00530:03", "nwparser.payload", "DHCP client lease for %{hostip->} has expired", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg956 = msg("00530:03", part1534); - -var part1535 = match("MESSAGE#945:00530:04", "nwparser.payload", "DHCP server %{hostip->} has assigned the untrust Interface %{interface->} with lease %{fld2}.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg957 = msg("00530:04", part1535); - -var part1536 = match("MESSAGE#946:00530:05", "nwparser.payload", "DHCP server %{hostip->} has assigned the %{interface->} interface %{fld2->} with lease %{fld3}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg958 = msg("00530:05", part1536); - -var part1537 = match("MESSAGE#947:00530:06", "nwparser.payload", "DHCP client is unable to get IP address for the untrust interface.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg959 = msg("00530:06", part1537); - -var select358 = linear_select([ - msg953, - msg954, - msg955, - msg956, - msg957, - msg958, - msg959, -]); - -var part1538 = match("MESSAGE#948:00531/0", "nwparser.payload", "System clock configurations have been changed by admin %{p0}"); - -var all335 = all_match({ - processors: [ - part1538, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg960 = msg("00531", all335); - -var part1539 = match("MESSAGE#949:00531:01", "nwparser.payload", "failed to get clock through NTP%{}", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg961 = msg("00531:01", part1539); - -var part1540 = match("MESSAGE#950:00531:02", "nwparser.payload", "The system clock has been updated through NTP.%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg962 = msg("00531:02", part1540); - -var part1541 = match("MESSAGE#951:00531:03/0", "nwparser.payload", "The system clock was updated from %{type->} NTP server type %{hostname->} with a%{p0}"); - -var part1542 = match("MESSAGE#951:00531:03/1_0", "nwparser.p0", " ms %{p0}"); - -var select359 = linear_select([ - part1542, - dup115, -]); - -var part1543 = match("MESSAGE#951:00531:03/2", "nwparser.p0", "adjustment of %{fld3}. Authentication was %{fld4}. Update mode was %{p0}"); - -var part1544 = match("MESSAGE#951:00531:03/3_0", "nwparser.p0", "%{fld5}(%{fld2})"); - -var part1545 = match_copy("MESSAGE#951:00531:03/3_1", "nwparser.p0", "fld5"); - -var select360 = linear_select([ - part1544, - part1545, -]); - -var all336 = all_match({ - processors: [ - part1541, - select359, - part1543, - select360, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup146, - ]), -}); - -var msg963 = msg("00531:03", all336); - -var part1546 = match("MESSAGE#952:00531:04/0", "nwparser.payload", "The NetScreen device is attempting to contact the %{p0}"); - -var part1547 = match("MESSAGE#952:00531:04/1_0", "nwparser.p0", "primary backup %{p0}"); - -var part1548 = match("MESSAGE#952:00531:04/1_1", "nwparser.p0", "secondary backup %{p0}"); - -var select361 = linear_select([ - part1547, - part1548, - dup189, -]); - -var part1549 = match("MESSAGE#952:00531:04/2", "nwparser.p0", "NTP server %{hostname}"); - -var all337 = all_match({ - processors: [ - part1546, - select361, - part1549, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg964 = msg("00531:04", all337); - -var part1550 = match("MESSAGE#953:00531:05", "nwparser.payload", "No NTP server could be contacted. (%{fld1})", processor_chain([ - dup86, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg965 = msg("00531:05", part1550); - -var part1551 = match("MESSAGE#954:00531:06", "nwparser.payload", "Network Time Protocol adjustment of %{fld2->} from NTP server %{hostname->} exceeds the allowed adjustment of %{fld3}. (%{fld1})", processor_chain([ - dup86, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg966 = msg("00531:06", part1551); - -var part1552 = match("MESSAGE#955:00531:07", "nwparser.payload", "No acceptable time could be obtained from any NTP server. (%{fld1})", processor_chain([ - dup86, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg967 = msg("00531:07", part1552); - -var part1553 = match("MESSAGE#956:00531:08", "nwparser.payload", "Administrator %{administrator->} changed the %{change_attribute->} from %{change_old->} to %{change_new->} (by %{fld3->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport}) (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg968 = msg("00531:08", part1553); - -var part1554 = match("MESSAGE#957:00531:09", "nwparser.payload", "Network Time Protocol settings changed. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg969 = msg("00531:09", part1554); - -var part1555 = match("MESSAGE#958:00531:10", "nwparser.payload", "NTP server is %{disposition->} on interface %{interface->} (%{fld1})", processor_chain([ - dup86, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg970 = msg("00531:10", part1555); - -var part1556 = match("MESSAGE#959:00531:11", "nwparser.payload", "The system clock will be changed from %{change_old->} to %{change_new->} received from primary NTP server %{hostip->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, - setc("event_description","system clock changed based on receive from primary NTP server"), -])); - -var msg971 = msg("00531:11", part1556); - -var part1557 = match("MESSAGE#1223:00531:12", "nwparser.payload", "%{fld35->} NTP server %{saddr->} could not be contacted. (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg972 = msg("00531:12", part1557); - -var select362 = linear_select([ - msg960, - msg961, - msg962, - msg963, - msg964, - msg965, - msg966, - msg967, - msg968, - msg969, - msg970, - msg971, - msg972, -]); - -var part1558 = match("MESSAGE#960:00533", "nwparser.payload", "VIP server %{hostip->} is now responding", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg973 = msg("00533", part1558); - -var part1559 = match("MESSAGE#961:00534", "nwparser.payload", "%{fld2->} has been cleared", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg974 = msg("00534", part1559); - -var part1560 = match("MESSAGE#962:00535", "nwparser.payload", "Cannot find the CA certificate with distinguished name %{fld2}", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, -])); - -var msg975 = msg("00535", part1560); - -var part1561 = match("MESSAGE#963:00535:01", "nwparser.payload", "Distinguished name %{dn->} in the X509 certificate request is %{disposition}", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, -])); - -var msg976 = msg("00535:01", part1561); - -var part1562 = match("MESSAGE#964:00535:02", "nwparser.payload", "Local certificate with distinguished name %{dn->} is %{disposition}", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, -])); - -var msg977 = msg("00535:02", part1562); - -var part1563 = match("MESSAGE#965:00535:03", "nwparser.payload", "PKCS #7 data cannot be decapsulated%{}", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, -])); - -var msg978 = msg("00535:03", part1563); - -var part1564 = match("MESSAGE#966:00535:04", "nwparser.payload", "SCEP_FAILURE message has been received from the CA%{}", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, - setc("result","SCEP_FAILURE message"), -])); - -var msg979 = msg("00535:04", part1564); - -var part1565 = match("MESSAGE#967:00535:05", "nwparser.payload", "PKI error message has been received: %{result}", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, -])); - -var msg980 = msg("00535:05", part1565); - -var part1566 = match("MESSAGE#968:00535:06", "nwparser.payload", "PKI: Saved CA configuration (CA cert subject name %{dn}). (%{event_time_string})", processor_chain([ - dup314, - dup2, - dup3, - dup4, - dup5, - setc("event_description","Saved CA configuration - cert subject name"), -])); - -var msg981 = msg("00535:06", part1566); - -var select363 = linear_select([ - msg975, - msg976, - msg977, - msg978, - msg979, - msg980, - msg981, -]); - -var part1567 = match("MESSAGE#969:00536:49/0", "nwparser.payload", "IKE %{hostip->} %{p0}"); - -var part1568 = match("MESSAGE#969:00536:49/1_0", "nwparser.p0", "Phase 2 msg ID %{sessionid}: %{disposition}. %{p0}"); - -var part1569 = match("MESSAGE#969:00536:49/1_1", "nwparser.p0", "Phase 1: %{disposition->} %{p0}"); - -var part1570 = match("MESSAGE#969:00536:49/1_2", "nwparser.p0", "phase 2:%{disposition}. %{p0}"); - -var part1571 = match("MESSAGE#969:00536:49/1_3", "nwparser.p0", "phase 1:%{disposition}. %{p0}"); - -var select364 = linear_select([ - part1568, - part1569, - part1570, - part1571, -]); - -var all338 = all_match({ - processors: [ - part1567, - select364, - dup10, - ], - on_success: processor_chain([ - dup44, - dup2, - dup9, - dup3, - dup4, - dup5, - ]), -}); - -var msg982 = msg("00536:49", all338); - -var part1572 = match("MESSAGE#970:00536", "nwparser.payload", "UDP packets have been received from %{saddr}/%{sport->} at interface %{interface->} at %{daddr}/%{dport}", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup3, - dup61, -])); - -var msg983 = msg("00536", part1572); - -var part1573 = match("MESSAGE#971:00536:01", "nwparser.payload", "Attempt to set tunnel (%{fld2}) without IP address at both end points! Check outgoing interface.", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg984 = msg("00536:01", part1573); - -var part1574 = match("MESSAGE#972:00536:02", "nwparser.payload", "Gateway %{fld2->} at %{hostip->} in %{fld4->} mode with ID: %{fld3->} has been %{disposition}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg985 = msg("00536:02", part1574); - -var part1575 = match("MESSAGE#973:00536:03", "nwparser.payload", "IKE gateway %{fld2->} has been %{disposition}. %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg986 = msg("00536:03", part1575); - -var part1576 = match("MESSAGE#974:00536:04", "nwparser.payload", "VPN monitoring for VPN %{group->} has deactivated the SA with ID %{fld2}.", processor_chain([ - setc("eventcategory","1801010100"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg987 = msg("00536:04", part1576); - -var part1577 = match("MESSAGE#975:00536:05", "nwparser.payload", "VPN ID number cannot be assigned%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg988 = msg("00536:05", part1577); - -var part1578 = match("MESSAGE#976:00536:06", "nwparser.payload", "Local gateway IP address has changed to %{fld2}. VPNs cannot terminate at an interface with IP %{hostip}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg989 = msg("00536:06", part1578); - -var part1579 = match("MESSAGE#977:00536:07", "nwparser.payload", "Local gateway IP address has changed from %{change_old->} to another setting", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg990 = msg("00536:07", part1579); - -var part1580 = match("MESSAGE#978:00536:08", "nwparser.payload", "IKE %{hostip}: Sent initial contact notification message", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg991 = msg("00536:08", part1580); - -var part1581 = match("MESSAGE#979:00536:09", "nwparser.payload", "IKE %{hostip}: Sent initial contact notification", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg992 = msg("00536:09", part1581); - -var part1582 = match("MESSAGE#980:00536:10", "nwparser.payload", "IKE %{hostip}: Responded to a packet with a bad SPI after rebooting", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg993 = msg("00536:10", part1582); - -var part1583 = match("MESSAGE#981:00536:11", "nwparser.payload", "IKE %{hostip}: Removed Phase 2 SAs after receiving a notification message", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg994 = msg("00536:11", part1583); - -var part1584 = match("MESSAGE#982:00536:12", "nwparser.payload", "IKE %{hostip}: Rejected first Phase 1 packet from an unrecognized source", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg995 = msg("00536:12", part1584); - -var part1585 = match("MESSAGE#983:00536:13", "nwparser.payload", "IKE %{hostip}: Rejected an initial Phase 1 packet from an unrecognized peer gateway", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg996 = msg("00536:13", part1585); - -var part1586 = match("MESSAGE#984:00536:14/0", "nwparser.payload", "IKE %{hostip}: Received initial contact notification and removed Phase %{p0}"); - -var part1587 = match("MESSAGE#984:00536:14/2", "nwparser.p0", "SAs%{}"); - -var all339 = all_match({ - processors: [ - part1586, - dup383, - part1587, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg997 = msg("00536:14", all339); - -var part1588 = match("MESSAGE#985:00536:50", "nwparser.payload", "IKE %{hostip}: Received a notification message for %{disposition}. (%{fld1})", processor_chain([ - dup44, - dup2, - dup9, - dup3, - dup4, - dup5, -])); - -var msg998 = msg("00536:50", part1588); - -var part1589 = match("MESSAGE#986:00536:15", "nwparser.payload", "IKE %{hostip}: Received incorrect ID payload: IP address %{fld2->} instead of IP address %{fld3}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg999 = msg("00536:15", part1589); - -var part1590 = match("MESSAGE#987:00536:16", "nwparser.payload", "IKE %{hostip}: Phase 2 negotiation request is already in the task list", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1000 = msg("00536:16", part1590); - -var part1591 = match("MESSAGE#988:00536:17", "nwparser.payload", "IKE %{hostip}: Heartbeats have been lost %{fld2->} times", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1001 = msg("00536:17", part1591); - -var part1592 = match("MESSAGE#989:00536:18", "nwparser.payload", "IKE %{hostip}: Dropped peer packet because no policy uses the peer configuration", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1002 = msg("00536:18", part1592); - -var part1593 = match("MESSAGE#990:00536:19", "nwparser.payload", "IKE %{hostip}: Dropped packet because remote gateway OK is not used in any VPN tunnel configurations", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1003 = msg("00536:19", part1593); - -var part1594 = match("MESSAGE#991:00536:20", "nwparser.payload", "IKE %{hostip}: Added the initial contact task to the task list", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1004 = msg("00536:20", part1594); - -var part1595 = match("MESSAGE#992:00536:21", "nwparser.payload", "IKE %{hostip}: Added Phase 2 session tasks to the task list", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1005 = msg("00536:21", part1595); - -var part1596 = match("MESSAGE#993:00536:22", "nwparser.payload", "IKE %{hostip->} Phase 1 : %{disposition->} proposals from peer. Negotiations failed", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - setc("result","Negotiations failed"), -])); - -var msg1006 = msg("00536:22", part1596); - -var part1597 = match("MESSAGE#994:00536:23", "nwparser.payload", "IKE %{hostip->} Phase 1 : Aborted negotiations because the time limit has elapsed", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - setc("result","The time limit has elapsed"), - setc("disposition","Aborted"), -])); - -var msg1007 = msg("00536:23", part1597); - -var part1598 = match("MESSAGE#995:00536:24", "nwparser.payload", "IKE %{hostip->} Phase 2: Received a message but did not check a policy because id-mode is set to IP or policy-checking is disabled", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1008 = msg("00536:24", part1598); - -var part1599 = match("MESSAGE#996:00536:25", "nwparser.payload", "IKE %{hostip->} Phase 2: Received DH group %{fld2->} instead of expected group %{fld3->} for PFS", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1009 = msg("00536:25", part1599); - -var part1600 = match("MESSAGE#997:00536:26", "nwparser.payload", "IKE %{hostip->} Phase 2: No policy exists for the proxy ID received: local ID %{fld2->} remote ID %{fld3}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1010 = msg("00536:26", part1600); - -var part1601 = match("MESSAGE#998:00536:27", "nwparser.payload", "IKE %{hostip->} Phase 1: RSA private key is needed to sign packets", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1011 = msg("00536:27", part1601); - -var part1602 = match("MESSAGE#999:00536:28", "nwparser.payload", "IKE %{hostip->} Phase 1: Aggressive mode negotiations have %{disposition}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1012 = msg("00536:28", part1602); - -var part1603 = match("MESSAGE#1000:00536:29", "nwparser.payload", "IKE %{hostip->} Phase 1: Vendor ID payload indicates that the peer does not support NAT-T", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1013 = msg("00536:29", part1603); - -var part1604 = match("MESSAGE#1001:00536:30", "nwparser.payload", "IKE %{hostip->} Phase 1: Retransmission limit has been reached", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1014 = msg("00536:30", part1604); - -var part1605 = match("MESSAGE#1002:00536:31", "nwparser.payload", "IKE %{hostip->} Phase 1: Received an invalid RSA signature", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1015 = msg("00536:31", part1605); - -var part1606 = match("MESSAGE#1003:00536:32", "nwparser.payload", "IKE %{hostip->} Phase 1: Received an incorrect public key authentication method", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1016 = msg("00536:32", part1606); - -var part1607 = match("MESSAGE#1004:00536:33", "nwparser.payload", "IKE %{hostip->} Phase 1: No private key exists to sign packets", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1017 = msg("00536:33", part1607); - -var part1608 = match("MESSAGE#1005:00536:34", "nwparser.payload", "IKE %{hostip->} Phase 1: Main mode packet has arrived with ID type IP address but no user configuration was found for that ID", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1018 = msg("00536:34", part1608); - -var part1609 = match("MESSAGE#1006:00536:35", "nwparser.payload", "IKE %{hostip->} Phase 1: IKE initiator has detected NAT in front of the local device", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1019 = msg("00536:35", part1609); - -var part1610 = match("MESSAGE#1007:00536:36/0", "nwparser.payload", "IKE %{hostip->} Phase 1: Discarded a second initial packet%{p0}"); - -var part1611 = match("MESSAGE#1007:00536:36/2", "nwparser.p0", "%{}which arrived within %{fld2->} after the first"); - -var all340 = all_match({ - processors: [ - part1610, - dup401, - part1611, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1020 = msg("00536:36", all340); - -var part1612 = match("MESSAGE#1008:00536:37", "nwparser.payload", "IKE %{hostip->} Phase 1: Completed Aggressive mode negotiations with a %{fld2->} lifetime", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1021 = msg("00536:37", part1612); - -var part1613 = match("MESSAGE#1009:00536:38", "nwparser.payload", "IKE %{hostip->} Phase 1: Certificate received has a subject name that does not match the ID payload", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1022 = msg("00536:38", part1613); - -var part1614 = match("MESSAGE#1010:00536:39", "nwparser.payload", "IKE %{hostip->} Phase 1: Certificate received has a different IP address %{fld2->} than expected", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1023 = msg("00536:39", part1614); - -var part1615 = match("MESSAGE#1011:00536:40", "nwparser.payload", "IKE %{hostip->} Phase 1: Cannot use a preshared key because the peer%{quote}s gateway has a dynamic IP address and negotiations are in Main mode", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1024 = msg("00536:40", part1615); - -var part1616 = match("MESSAGE#1012:00536:47", "nwparser.payload", "IKE %{hostip->} Phase 1: Initiated negotiations in Aggressive mode", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1025 = msg("00536:47", part1616); - -var part1617 = match("MESSAGE#1013:00536:41", "nwparser.payload", "IKE %{hostip->} Phase 1: Cannot verify RSA signature", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1026 = msg("00536:41", part1617); - -var part1618 = match("MESSAGE#1014:00536:42", "nwparser.payload", "IKE %{hostip->} Phase 1: Initiated Main mode negotiations", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1027 = msg("00536:42", part1618); - -var part1619 = match("MESSAGE#1015:00536:43", "nwparser.payload", "IKE %{hostip->} Phase 2: Initiated negotiations", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1028 = msg("00536:43", part1619); - -var part1620 = match("MESSAGE#1016:00536:44", "nwparser.payload", "IKE %{hostip}: Changed heartbeat interval to %{fld2}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1029 = msg("00536:44", part1620); - -var part1621 = match("MESSAGE#1017:00536:45", "nwparser.payload", "IKE %{hostip}: Heartbeats have been %{disposition->} because %{result}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1030 = msg("00536:45", part1621); - -var part1622 = match("MESSAGE#1018:00536:48", "nwparser.payload", "Received an IKE packet on %{interface->} from %{saddr}:%{sport->} to %{daddr}:%{dport}/%{fld1}. Cookies: %{ike_cookie1}, %{ike_cookie2}. (%{event_time_string})", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - setc("event_description","Received an IKE packet on interface"), -])); - -var msg1031 = msg("00536:48", part1622); - -var part1623 = match("MESSAGE#1019:00536:46", "nwparser.payload", "IKE %{hostip}: Received a bad SPI", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1032 = msg("00536:46", part1623); - -var select365 = linear_select([ - msg982, - msg983, - msg984, - msg985, - msg986, - msg987, - msg988, - msg989, - msg990, - msg991, - msg992, - msg993, - msg994, - msg995, - msg996, - msg997, - msg998, - msg999, - msg1000, - msg1001, - msg1002, - msg1003, - msg1004, - msg1005, - msg1006, - msg1007, - msg1008, - msg1009, - msg1010, - msg1011, - msg1012, - msg1013, - msg1014, - msg1015, - msg1016, - msg1017, - msg1018, - msg1019, - msg1020, - msg1021, - msg1022, - msg1023, - msg1024, - msg1025, - msg1026, - msg1027, - msg1028, - msg1029, - msg1030, - msg1031, - msg1032, -]); - -var part1624 = match("MESSAGE#1020:00537", "nwparser.payload", "PPPoE %{disposition->} to establish a session: %{info}", processor_chain([ - dup18, - dup2, - dup4, - dup5, - dup3, -])); - -var msg1033 = msg("00537", part1624); - -var part1625 = match("MESSAGE#1021:00537:01", "nwparser.payload", "PPPoE session shuts down: %{result}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1034 = msg("00537:01", part1625); - -var part1626 = match("MESSAGE#1022:00537:02", "nwparser.payload", "The Point-to-Point over Ethernet (PPPoE) connection failed to establish a session: %{result}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1035 = msg("00537:02", part1626); - -var part1627 = match("MESSAGE#1023:00537:03", "nwparser.payload", "PPPoE session has successfully established%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1036 = msg("00537:03", part1627); - -var select366 = linear_select([ - msg1033, - msg1034, - msg1035, - msg1036, -]); - -var part1628 = match("MESSAGE#1024:00538/0", "nwparser.payload", "NACN failed to register to Policy Manager %{fld2->} because %{p0}"); - -var select367 = linear_select([ - dup111, - dup119, -]); - -var part1629 = match("MESSAGE#1024:00538/2", "nwparser.p0", "%{result}"); - -var all341 = all_match({ - processors: [ - part1628, - select367, - part1629, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1037 = msg("00538", all341); - -var part1630 = match("MESSAGE#1025:00538:01", "nwparser.payload", "NACN successfully registered to Policy Manager %{fld2}.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1038 = msg("00538:01", part1630); - -var part1631 = match("MESSAGE#1026:00538:02", "nwparser.payload", "The NACN protocol has started for Policy Manager %{fld2->} on hostname %{hostname->} IP address %{hostip->} port %{network_port}.", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1039 = msg("00538:02", part1631); - -var part1632 = match("MESSAGE#1027:00538:03", "nwparser.payload", "Cannot connect to NSM Server at %{hostip->} (%{fld2->} connect attempt(s)) %{fld3}", processor_chain([ - dup19, - dup2, - dup4, - dup5, - dup3, -])); - -var msg1040 = msg("00538:03", part1632); - -var part1633 = match("MESSAGE#1028:00538:04", "nwparser.payload", "Device is not known to Global PRO data collector at %{hostip}", processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1041 = msg("00538:04", part1633); - -var part1634 = match("MESSAGE#1029:00538:05/0", "nwparser.payload", "Lost %{p0}"); - -var part1635 = match("MESSAGE#1029:00538:05/1_0", "nwparser.p0", "socket connection%{p0}"); - -var part1636 = match("MESSAGE#1029:00538:05/1_1", "nwparser.p0", "connection%{p0}"); - -var select368 = linear_select([ - part1635, - part1636, -]); - -var part1637 = match("MESSAGE#1029:00538:05/2", "nwparser.p0", "%{}to Global PRO data collector at %{hostip}"); - -var all342 = all_match({ - processors: [ - part1634, - select368, - part1637, - ], - on_success: processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1042 = msg("00538:05", all342); - -var part1638 = match("MESSAGE#1030:00538:06/0", "nwparser.payload", "Device has connected to the Global PRO%{p0}"); - -var part1639 = match("MESSAGE#1030:00538:06/1_0", "nwparser.p0", " %{fld2->} primary data collector at %{p0}"); - -var part1640 = match("MESSAGE#1030:00538:06/1_1", "nwparser.p0", " primary data collector at %{p0}"); - -var select369 = linear_select([ - part1639, - part1640, -]); - -var part1641 = match_copy("MESSAGE#1030:00538:06/2", "nwparser.p0", "hostip"); - -var all343 = all_match({ - processors: [ - part1638, - select369, - part1641, - ], - on_success: processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1043 = msg("00538:06", all343); - -var part1642 = match("MESSAGE#1031:00538:07/0", "nwparser.payload", "Connection to Global PRO data collector at %{hostip->} has%{p0}"); - -var part1643 = match("MESSAGE#1031:00538:07/1_0", "nwparser.p0", " been%{p0}"); - -var select370 = linear_select([ - part1643, - dup16, -]); - -var all344 = all_match({ - processors: [ - part1642, - select370, - dup136, - ], - on_success: processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1044 = msg("00538:07", all344); - -var part1644 = match("MESSAGE#1032:00538:08", "nwparser.payload", "Cannot connect to Global PRO data collector at %{hostip}", processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1045 = msg("00538:08", part1644); - -var part1645 = match("MESSAGE#1033:00538:09", "nwparser.payload", "NSM: Connected to NSM server at %{hostip->} (%{info}) (%{fld1})", processor_chain([ - dup301, - dup2, - dup3, - dup9, - dup4, - dup5, - setc("event_description","Connected to NSM server"), -])); - -var msg1046 = msg("00538:09", part1645); - -var part1646 = match("MESSAGE#1034:00538:10/0", "nwparser.payload", "NSM: Connection to NSM server at %{hostip->} is down. Reason: %{resultcode}, %{result->} (%{p0}"); - -var part1647 = match("MESSAGE#1034:00538:10/1_0", "nwparser.p0", "%{info}) (%{fld1})"); - -var select371 = linear_select([ - part1647, - dup41, -]); - -var all345 = all_match({ - processors: [ - part1646, - select371, - ], - on_success: processor_chain([ - dup198, - dup2, - dup3, - dup9, - dup4, - dup5, - setc("event_description","Connection to NSM server is down"), - ]), -}); - -var msg1047 = msg("00538:10", all345); - -var part1648 = match("MESSAGE#1035:00538:11", "nwparser.payload", "NSM: Cannot connect to NSM server at %{hostip}. Reason: %{resultcode}, %{result->} (%{info}) (%{fld2->} connect attempt(s)) (%{fld1})", processor_chain([ - dup198, - dup2, - dup3, - dup9, - dup4, - dup5, - dup323, -])); - -var msg1048 = msg("00538:11", part1648); - -var part1649 = match("MESSAGE#1036:00538:12", "nwparser.payload", "NSM: Cannot connect to NSM server at %{hostip}. Reason: %{resultcode}, %{result->} (%{info}) (%{fld1})", processor_chain([ - dup198, - dup2, - dup3, - dup9, - dup4, - dup5, - dup323, -])); - -var msg1049 = msg("00538:12", part1649); - -var part1650 = match("MESSAGE#1037:00538:13", "nwparser.payload", "NSM: Sent 2B message (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, - setc("event_description","Sent 2B message"), -])); - -var msg1050 = msg("00538:13", part1650); - -var select372 = linear_select([ - msg1037, - msg1038, - msg1039, - msg1040, - msg1041, - msg1042, - msg1043, - msg1044, - msg1045, - msg1046, - msg1047, - msg1048, - msg1049, - msg1050, -]); - -var part1651 = match("MESSAGE#1038:00539", "nwparser.payload", "No IP address in L2TP IP pool for user %{username}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1051 = msg("00539", part1651); - -var part1652 = match("MESSAGE#1039:00539:01", "nwparser.payload", "No L2TP IP pool for user %{username}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1052 = msg("00539:01", part1652); - -var part1653 = match("MESSAGE#1040:00539:02", "nwparser.payload", "Cannot allocate IP addr from Pool %{group_object->} for user %{username}", processor_chain([ - dup117, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1053 = msg("00539:02", part1653); - -var part1654 = match("MESSAGE#1041:00539:03", "nwparser.payload", "Dialup HDLC PPP failed to establish a session: %{fld2}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1054 = msg("00539:03", part1654); - -var part1655 = match("MESSAGE#1042:00539:04", "nwparser.payload", "Dialup HDLC PPP session has successfully established.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1055 = msg("00539:04", part1655); - -var part1656 = match("MESSAGE#1043:00539:05", "nwparser.payload", "No IP Pool has been assigned. You cannot allocate an IP address%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1056 = msg("00539:05", part1656); - -var part1657 = match("MESSAGE#1044:00539:06", "nwparser.payload", "PPP settings changed.%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1057 = msg("00539:06", part1657); - -var select373 = linear_select([ - msg1051, - msg1052, - msg1053, - msg1054, - msg1055, - msg1056, - msg1057, -]); - -var part1658 = match("MESSAGE#1045:00541", "nwparser.payload", "ScreenOS %{fld2->} serial # %{serial_number}: Asset recovery has been %{disposition}", processor_chain([ - dup324, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1058 = msg("00541", part1658); - -var part1659 = match("MESSAGE#1216:00541:01", "nwparser.payload", "Neighbor router ID - %{fld2->} IP address - %{hostip->} changed its state to %{change_new}. (%{fld1})", processor_chain([ - dup273, - dup9, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1059 = msg("00541:01", part1659); - -var part1660 = match("MESSAGE#1218:00541:02", "nwparser.payload", "The system killed OSPF neighbor because the current router could not see itself in the hello packet. Neighbor changed state from %{change_old->} to %{change_new->} state, (neighbor router-id 1%{fld2}, ip-address %{hostip}). (%{fld1})", processor_chain([ - dup273, - dup9, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1060 = msg("00541:02", part1660); - -var part1661 = match("MESSAGE#1219:00541:03/0", "nwparser.payload", "LSA in following area aged out: LSA area ID %{fld3}, LSA ID %{fld4}, router ID %{fld2}, type %{fld7->} in OSPF. (%{fld1})%{p0}"); - -var part1662 = match("MESSAGE#1219:00541:03/1_0", "nwparser.p0", "\u003c\u003c%{fld16}>"); - -var select374 = linear_select([ - part1662, - dup21, -]); - -var all346 = all_match({ - processors: [ - part1661, - select374, - ], - on_success: processor_chain([ - dup44, - dup9, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1061 = msg("00541:03", all346); - -var select375 = linear_select([ - msg1058, - msg1059, - msg1060, - msg1061, -]); - -var part1663 = match("MESSAGE#1046:00542", "nwparser.payload", "BGP of vr: %{node}, prefix adding: %{fld2}, ribin overflow %{fld3->} times (max rib-in %{fld4})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1062 = msg("00542", part1663); - -var part1664 = match("MESSAGE#1047:00543/0", "nwparser.payload", "Access for %{p0}"); - -var part1665 = match("MESSAGE#1047:00543/1_0", "nwparser.p0", "WebAuth firewall %{p0}"); - -var part1666 = match("MESSAGE#1047:00543/1_1", "nwparser.p0", "firewall %{p0}"); - -var select376 = linear_select([ - part1665, - part1666, -]); - -var part1667 = match("MESSAGE#1047:00543/2", "nwparser.p0", "user %{username->} %{space}at %{hostip->} (accepted at %{fld2->} for duration %{duration->} via the %{logon_type}) %{p0}"); - -var part1668 = match("MESSAGE#1047:00543/3_0", "nwparser.p0", "by policy id %{policy_id->} is %{p0}"); - -var select377 = linear_select([ - part1668, - dup106, -]); - -var part1669 = match("MESSAGE#1047:00543/4", "nwparser.p0", "now over (%{fld1})"); - -var all347 = all_match({ - processors: [ - part1664, - select376, - part1667, - select377, - part1669, - ], - on_success: processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup9, - dup3, - ]), -}); - -var msg1063 = msg("00543", all347); - -var part1670 = match("MESSAGE#1048:00544", "nwparser.payload", "User %{username->} [ of group %{group->} ] at %{hostip->} has been challenged by the RADIUS server at %{daddr}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup3, - dup60, - setc("action","RADIUS server challenge"), -])); - -var msg1064 = msg("00544", part1670); - -var part1671 = match("MESSAGE#1049:00546", "nwparser.payload", "delete-route-> trust-vr: %{fld2}", processor_chain([ - dup281, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1065 = msg("00546", part1671); - -var part1672 = match("MESSAGE#1050:00547", "nwparser.payload", "AV: Content from %{saddr}:%{sport}->%{daddr}:%{dport->} was not scanned because max content size was exceeded.", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup3, - dup61, -])); - -var msg1066 = msg("00547", part1672); - -var part1673 = match("MESSAGE#1051:00547:01", "nwparser.payload", "AV: Content from %{saddr}:%{sport}->%{daddr}:%{dport->} was not scanned due to a scan engine error or constraint.", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup3, - dup61, -])); - -var msg1067 = msg("00547:01", part1673); - -var part1674 = match("MESSAGE#1052:00547:02", "nwparser.payload", "AV object scan-mgr data has been %{disposition}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1068 = msg("00547:02", part1674); - -var part1675 = match("MESSAGE#1053:00547:03/0", "nwparser.payload", "AV: Content from %{location_desc}, http url: %{url}, is passed %{p0}"); - -var part1676 = match("MESSAGE#1053:00547:03/1_0", "nwparser.p0", "due to %{p0}"); - -var part1677 = match("MESSAGE#1053:00547:03/1_1", "nwparser.p0", "because %{p0}"); - -var select378 = linear_select([ - part1676, - part1677, -]); - -var part1678 = match("MESSAGE#1053:00547:03/2", "nwparser.p0", "%{result}. (%{event_time_string})"); - -var all348 = all_match({ - processors: [ - part1675, - select378, - part1678, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - setc("event_description","Content is bypassed for connection"), - ]), -}); - -var msg1069 = msg("00547:03", all348); - -var select379 = linear_select([ - msg1066, - msg1067, - msg1068, - msg1069, -]); - -var part1679 = match("MESSAGE#1054:00549", "nwparser.payload", "add-route-> untrust-vr: %{fld2}", processor_chain([ - dup281, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1070 = msg("00549", part1679); - -var part1680 = match("MESSAGE#1055:00551", "nwparser.payload", "Error %{resultcode->} occurred during configlet file processing.", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1071 = msg("00551", part1680); - -var part1681 = match("MESSAGE#1056:00551:01", "nwparser.payload", "Error %{resultcode->} occurred, causing failure to establish secure management with Management System.", processor_chain([ - dup86, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1072 = msg("00551:01", part1681); - -var part1682 = match("MESSAGE#1057:00551:02/0", "nwparser.payload", "Configlet file %{p0}"); - -var part1683 = match("MESSAGE#1057:00551:02/1_0", "nwparser.p0", "decryption %{p0}"); - -var select380 = linear_select([ - part1683, - dup89, -]); - -var all349 = all_match({ - processors: [ - part1682, - select380, - dup128, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1073 = msg("00551:02", all349); - -var part1684 = match("MESSAGE#1058:00551:03", "nwparser.payload", "Rapid Deployment cannot start because gateway has undergone configuration changes. (%{fld1})", processor_chain([ - dup18, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1074 = msg("00551:03", part1684); - -var part1685 = match("MESSAGE#1059:00551:04", "nwparser.payload", "Secure management established successfully with remote server. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1075 = msg("00551:04", part1685); - -var select381 = linear_select([ - msg1071, - msg1072, - msg1073, - msg1074, - msg1075, -]); - -var part1686 = match("MESSAGE#1060:00553/0", "nwparser.payload", "SCAN-MGR: Failed to get %{p0}"); - -var part1687 = match("MESSAGE#1060:00553/1_0", "nwparser.p0", "AltServer %{p0}"); - -var part1688 = match("MESSAGE#1060:00553/1_1", "nwparser.p0", "Version %{p0}"); - -var part1689 = match("MESSAGE#1060:00553/1_2", "nwparser.p0", "Path_GateLockCE %{p0}"); - -var select382 = linear_select([ - part1687, - part1688, - part1689, -]); - -var all350 = all_match({ - processors: [ - part1686, - select382, - dup325, - ], - on_success: processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1076 = msg("00553", all350); - -var part1690 = match("MESSAGE#1061:00553:01", "nwparser.payload", "SCAN-MGR: Zero pattern size from server.ini.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1077 = msg("00553:01", part1690); - -var part1691 = match("MESSAGE#1062:00553:02", "nwparser.payload", "SCAN-MGR: Pattern size from server.ini is too large: %{bytes->} (bytes).", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1078 = msg("00553:02", part1691); - -var part1692 = match("MESSAGE#1063:00553:03", "nwparser.payload", "SCAN-MGR: Pattern URL from server.ini is too long: %{fld2}; max is %{fld3}.", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1079 = msg("00553:03", part1692); - -var part1693 = match("MESSAGE#1064:00553:04/0", "nwparser.payload", "SCAN-MGR: Failed to retrieve %{p0}"); - -var select383 = linear_select([ - dup326, - dup327, -]); - -var part1694 = match("MESSAGE#1064:00553:04/2", "nwparser.p0", "file: %{fld2}; http status code: %{resultcode}."); - -var all351 = all_match({ - processors: [ - part1693, - select383, - part1694, - ], - on_success: processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1080 = msg("00553:04", all351); - -var part1695 = match("MESSAGE#1065:00553:05", "nwparser.payload", "SCAN-MGR: Failed to write pattern into a RAM file.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1081 = msg("00553:05", part1695); - -var part1696 = match("MESSAGE#1066:00553:06", "nwparser.payload", "SCAN-MGR: Check Pattern File failed: code from VSAPI: %{resultcode}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1082 = msg("00553:06", part1696); - -var part1697 = match("MESSAGE#1067:00553:07", "nwparser.payload", "SCAN-MGR: Failed to write pattern into flash.%{}", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1083 = msg("00553:07", part1697); - -var part1698 = match("MESSAGE#1068:00553:08/0", "nwparser.payload", "SCAN-MGR: Internal error while setting up for retrieving %{p0}"); - -var select384 = linear_select([ - dup327, - dup326, -]); - -var all352 = all_match({ - processors: [ - part1698, - select384, - dup328, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1084 = msg("00553:08", all352); - -var part1699 = match("MESSAGE#1069:00553:09", "nwparser.payload", "SCAN-MGR: %{fld2->} %{disposition}: Err: %{resultcode}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1085 = msg("00553:09", part1699); - -var part1700 = match("MESSAGE#1070:00553:10", "nwparser.payload", "SCAN-MGR: TMIntCPVSInit %{disposition->} due to %{result}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1086 = msg("00553:10", part1700); - -var part1701 = match("MESSAGE#1071:00553:11", "nwparser.payload", "SCAN-MGR: Attempted Pattern Creation Date(%{fld2}) is after AV Key Expiration date(%{fld3}).", processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1087 = msg("00553:11", part1701); - -var part1702 = match("MESSAGE#1072:00553:12", "nwparser.payload", "SCAN-MGR: TMIntSetDecompressLayer %{disposition}: Layer: %{fld2}, Err: %{resultcode}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1088 = msg("00553:12", part1702); - -var part1703 = match("MESSAGE#1073:00553:13", "nwparser.payload", "SCAN-MGR: TMIntSetExtractFileSizeLimit %{disposition}: Limit: %{fld2}, Err: %{resultcode}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1089 = msg("00553:13", part1703); - -var part1704 = match("MESSAGE#1074:00553:14", "nwparser.payload", "SCAN-MGR: TMIntScanFile %{disposition}: ret: %{fld2}; cpapiErrCode: %{resultcode}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1090 = msg("00553:14", part1704); - -var part1705 = match("MESSAGE#1075:00553:15", "nwparser.payload", "SCAN-MGR: VSAPI resource usage error. Left usage: %{fld2}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1091 = msg("00553:15", part1705); - -var part1706 = match("MESSAGE#1076:00553:16", "nwparser.payload", "SCAN-MGR: Set decompress layer to %{fld2}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1092 = msg("00553:16", part1706); - -var part1707 = match("MESSAGE#1077:00553:17", "nwparser.payload", "SCAN-MGR: Set maximum content size to %{fld2}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1093 = msg("00553:17", part1707); - -var part1708 = match("MESSAGE#1078:00553:18", "nwparser.payload", "SCAN-MGR: Set maximum number of concurrent messages to %{fld2}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1094 = msg("00553:18", part1708); - -var part1709 = match("MESSAGE#1079:00553:19", "nwparser.payload", "SCAN-MGR: Set drop if maximum number of concurrent messages exceeds max to %{fld2}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1095 = msg("00553:19", part1709); - -var part1710 = match("MESSAGE#1080:00553:20", "nwparser.payload", "SCAN-MGR: Set Pattern URL to %{fld2}; update interval is %{fld3}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1096 = msg("00553:20", part1710); - -var part1711 = match("MESSAGE#1081:00553:21", "nwparser.payload", "SCAN-MGR: Unset Pattern URL; Pattern will not be updated automatically.%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1097 = msg("00553:21", part1711); - -var part1712 = match("MESSAGE#1082:00553:22", "nwparser.payload", "SCAN-MGR: New pattern updated: version: %{version}, size: %{bytes->} (bytes).", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1098 = msg("00553:22", part1712); - -var select385 = linear_select([ - msg1076, - msg1077, - msg1078, - msg1079, - msg1080, - msg1081, - msg1082, - msg1083, - msg1084, - msg1085, - msg1086, - msg1087, - msg1088, - msg1089, - msg1090, - msg1091, - msg1092, - msg1093, - msg1094, - msg1095, - msg1096, - msg1097, - msg1098, -]); - -var part1713 = match("MESSAGE#1083:00554/0", "nwparser.payload", "SCAN-MGR: Cannot get %{p0}"); - -var part1714 = match("MESSAGE#1083:00554/1_0", "nwparser.p0", "AltServer info %{p0}"); - -var part1715 = match("MESSAGE#1083:00554/1_1", "nwparser.p0", "Version number %{p0}"); - -var part1716 = match("MESSAGE#1083:00554/1_2", "nwparser.p0", "Path_GateLockCE info %{p0}"); - -var select386 = linear_select([ - part1714, - part1715, - part1716, -]); - -var all353 = all_match({ - processors: [ - part1713, - select386, - dup325, - ], - on_success: processor_chain([ - dup144, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1099 = msg("00554", all353); - -var part1717 = match("MESSAGE#1084:00554:01", "nwparser.payload", "SCAN-MGR: Per server.ini file, the AV pattern file size is zero.%{}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1100 = msg("00554:01", part1717); - -var part1718 = match("MESSAGE#1085:00554:02", "nwparser.payload", "SCAN-MGR: AV pattern file size is too large (%{bytes->} bytes).", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1101 = msg("00554:02", part1718); - -var part1719 = match("MESSAGE#1086:00554:03", "nwparser.payload", "SCAN-MGR: Alternate AV pattern file server URL is too long: %{bytes->} bytes. Max: %{fld2->} bytes.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1102 = msg("00554:03", part1719); - -var part1720 = match("MESSAGE#1087:00554:04/0", "nwparser.payload", "SCAN-MGR: Cannot retrieve %{p0}"); - -var part1721 = match("MESSAGE#1087:00554:04/2", "nwparser.p0", "file from %{hostip}:%{network_port}. HTTP status code: %{fld2}."); - -var all354 = all_match({ - processors: [ - part1720, - dup405, - part1721, - ], - on_success: processor_chain([ - dup144, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1103 = msg("00554:04", all354); - -var part1722 = match("MESSAGE#1088:00554:05/0", "nwparser.payload", "SCAN-MGR: Cannot write AV pattern file to %{p0}"); - -var part1723 = match("MESSAGE#1088:00554:05/1_0", "nwparser.p0", "RAM %{p0}"); - -var part1724 = match("MESSAGE#1088:00554:05/1_1", "nwparser.p0", "flash %{p0}"); - -var select387 = linear_select([ - part1723, - part1724, -]); - -var all355 = all_match({ - processors: [ - part1722, - select387, - dup116, - ], - on_success: processor_chain([ - dup144, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1104 = msg("00554:05", all355); - -var part1725 = match("MESSAGE#1089:00554:06", "nwparser.payload", "SCAN-MGR: Cannot check AV pattern file. VSAPI code: %{fld2}", processor_chain([ - dup144, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1105 = msg("00554:06", part1725); - -var part1726 = match("MESSAGE#1090:00554:07/0", "nwparser.payload", "SCAN-MGR: Internal error occurred while retrieving %{p0}"); - -var all356 = all_match({ - processors: [ - part1726, - dup405, - dup328, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1106 = msg("00554:07", all356); - -var part1727 = match("MESSAGE#1091:00554:08/0", "nwparser.payload", "SCAN-MGR: Internal error occurred when calling this function: %{fld2}. %{fld3->} %{p0}"); - -var part1728 = match("MESSAGE#1091:00554:08/1_0", "nwparser.p0", "Error: %{resultcode->} %{p0}"); - -var part1729 = match("MESSAGE#1091:00554:08/1_1", "nwparser.p0", "Returned a NULL VSC handler %{p0}"); - -var part1730 = match("MESSAGE#1091:00554:08/1_2", "nwparser.p0", "cpapiErrCode: %{resultcode->} %{p0}"); - -var select388 = linear_select([ - part1728, - part1729, - part1730, -]); - -var all357 = all_match({ - processors: [ - part1727, - select388, - dup116, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1107 = msg("00554:08", all357); - -var part1731 = match("MESSAGE#1092:00554:09", "nwparser.payload", "SCAN-MGR: Number of decompression layers has been set to %{fld2}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1108 = msg("00554:09", part1731); - -var part1732 = match("MESSAGE#1093:00554:10", "nwparser.payload", "SCAN-MGR: Maximum content size has been set to %{fld2->} KB.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1109 = msg("00554:10", part1732); - -var part1733 = match("MESSAGE#1094:00554:11", "nwparser.payload", "SCAN-MGR: Maximum number of concurrent messages has been set to %{fld2}.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1110 = msg("00554:11", part1733); - -var part1734 = match("MESSAGE#1095:00554:12/0", "nwparser.payload", "SCAN-MGR: Fail mode has been set to %{p0}"); - -var part1735 = match("MESSAGE#1095:00554:12/1_0", "nwparser.p0", "drop %{p0}"); - -var part1736 = match("MESSAGE#1095:00554:12/1_1", "nwparser.p0", "pass %{p0}"); - -var select389 = linear_select([ - part1735, - part1736, -]); - -var part1737 = match("MESSAGE#1095:00554:12/2", "nwparser.p0", "unexamined traffic if %{p0}"); - -var part1738 = match("MESSAGE#1095:00554:12/3_0", "nwparser.p0", "content size %{p0}"); - -var part1739 = match("MESSAGE#1095:00554:12/3_1", "nwparser.p0", "number of concurrent messages %{p0}"); - -var select390 = linear_select([ - part1738, - part1739, -]); - -var part1740 = match("MESSAGE#1095:00554:12/4", "nwparser.p0", "exceeds max.%{}"); - -var all358 = all_match({ - processors: [ - part1734, - select389, - part1737, - select390, - part1740, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1111 = msg("00554:12", all358); - -var part1741 = match("MESSAGE#1096:00554:13", "nwparser.payload", "SCAN-MGR: URL for AV pattern update server has been set to %{fld2}, and the update interval to %{fld3->} minutes.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1112 = msg("00554:13", part1741); - -var part1742 = match("MESSAGE#1097:00554:14", "nwparser.payload", "SCAN-MGR: URL for AV pattern update server has been unset, and the update interval returned to its default.%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1113 = msg("00554:14", part1742); - -var part1743 = match("MESSAGE#1098:00554:15", "nwparser.payload", "SCAN-MGR: New AV pattern file has been updated. Version: %{version}; size: %{bytes->} bytes.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1114 = msg("00554:15", part1743); - -var part1744 = match("MESSAGE#1099:00554:16", "nwparser.payload", "SCAN-MGR: AV client has exceeded its resource allotment. Remaining available resources: %{fld2}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1115 = msg("00554:16", part1744); - -var part1745 = match("MESSAGE#1100:00554:17", "nwparser.payload", "SCAN-MGR: Attempted to load AV pattern file created %{fld2->} after the AV subscription expired. (Exp: %{fld3})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1116 = msg("00554:17", part1745); - -var select391 = linear_select([ - msg1099, - msg1100, - msg1101, - msg1102, - msg1103, - msg1104, - msg1105, - msg1106, - msg1107, - msg1108, - msg1109, - msg1110, - msg1111, - msg1112, - msg1113, - msg1114, - msg1115, - msg1116, -]); - -var part1746 = match("MESSAGE#1101:00555", "nwparser.payload", "Vrouter %{node->} PIMSM cannot process non-multicast address %{hostip}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1117 = msg("00555", part1746); - -var part1747 = match("MESSAGE#1102:00556", "nwparser.payload", "UF-MGR: Failed to process a request. Reason: %{result}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1118 = msg("00556", part1747); - -var part1748 = match("MESSAGE#1103:00556:01", "nwparser.payload", "UF-MGR: Failed to abort a transaction. Reason: %{result}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1119 = msg("00556:01", part1748); - -var part1749 = match("MESSAGE#1104:00556:02/0", "nwparser.payload", "UF-MGR: UF %{p0}"); - -var part1750 = match("MESSAGE#1104:00556:02/1_0", "nwparser.p0", "K%{p0}"); - -var part1751 = match("MESSAGE#1104:00556:02/1_1", "nwparser.p0", "k%{p0}"); - -var select392 = linear_select([ - part1750, - part1751, -]); - -var part1752 = match("MESSAGE#1104:00556:02/2", "nwparser.p0", "ey %{p0}"); - -var part1753 = match("MESSAGE#1104:00556:02/3_0", "nwparser.p0", "Expired%{p0}"); - -var part1754 = match("MESSAGE#1104:00556:02/3_1", "nwparser.p0", "expired%{p0}"); - -var select393 = linear_select([ - part1753, - part1754, -]); - -var part1755 = match("MESSAGE#1104:00556:02/4", "nwparser.p0", "%{}(expiration date: %{fld2}; current date: %{fld3})."); - -var all359 = all_match({ - processors: [ - part1749, - select392, - part1752, - select393, - part1755, - ], - on_success: processor_chain([ - dup254, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1120 = msg("00556:02", all359); - -var part1756 = match("MESSAGE#1105:00556:03/0", "nwparser.payload", "UF-MGR: Failed to %{p0}"); - -var part1757 = match("MESSAGE#1105:00556:03/1_0", "nwparser.p0", "enable %{p0}"); - -var part1758 = match("MESSAGE#1105:00556:03/1_1", "nwparser.p0", "disable %{p0}"); - -var select394 = linear_select([ - part1757, - part1758, -]); - -var part1759 = match("MESSAGE#1105:00556:03/2", "nwparser.p0", "cache.%{}"); - -var all360 = all_match({ - processors: [ - part1756, - select394, - part1759, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1121 = msg("00556:03", all360); - -var part1760 = match("MESSAGE#1106:00556:04", "nwparser.payload", "UF-MGR: Internal Error: %{resultcode}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1122 = msg("00556:04", part1760); - -var part1761 = match("MESSAGE#1107:00556:05", "nwparser.payload", "UF-MGR: Cache size changed to %{fld2}(K).", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1123 = msg("00556:05", part1761); - -var part1762 = match("MESSAGE#1108:00556:06", "nwparser.payload", "UF-MGR: Cache timeout changes to %{fld2->} (hours).", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1124 = msg("00556:06", part1762); - -var part1763 = match("MESSAGE#1109:00556:07", "nwparser.payload", "UF-MGR: Category update interval changed to %{fld2->} (weeks).", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1125 = msg("00556:07", part1763); - -var part1764 = match("MESSAGE#1110:00556:08/0", "nwparser.payload", "UF-MGR: Cache %{p0}"); - -var all361 = all_match({ - processors: [ - part1764, - dup358, - dup116, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1126 = msg("00556:08", all361); - -var part1765 = match("MESSAGE#1111:00556:09", "nwparser.payload", "UF-MGR: URL BLOCKED: ip_addr (%{fld2}) -> ip_addr (%{fld3}), %{fld4->} action: %{disposition}, category: %{fld5}, reason %{result}", processor_chain([ - dup232, - dup2, - dup3, - dup4, - dup5, - dup282, -])); - -var msg1127 = msg("00556:09", part1765); - -var part1766 = match("MESSAGE#1112:00556:10", "nwparser.payload", "UF-MGR: URL FILTER ERR: ip_addr (%{fld2}) -> ip_addr (%{fld3}), host: %{fld5->} page: %{fld4->} code: %{resultcode->} reason: %{result}.", processor_chain([ - dup232, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1128 = msg("00556:10", part1766); - -var part1767 = match("MESSAGE#1113:00556:11", "nwparser.payload", "UF-MGR: Primary CPA server changed to %{fld2}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1129 = msg("00556:11", part1767); - -var part1768 = match("MESSAGE#1114:00556:12/0", "nwparser.payload", "UF-MGR: %{fld2->} CPA server %{p0}"); - -var select395 = linear_select([ - dup140, - dup169, -]); - -var part1769 = match("MESSAGE#1114:00556:12/2", "nwparser.p0", "changed to %{fld3}."); - -var all362 = all_match({ - processors: [ - part1768, - select395, - part1769, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1130 = msg("00556:12", all362); - -var part1770 = match("MESSAGE#1115:00556:13", "nwparser.payload", "UF-MGR: SurfControl URL filtering %{disposition}.", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1131 = msg("00556:13", part1770); - -var part1771 = match("MESSAGE#1116:00556:14/0", "nwparser.payload", "UF-MGR: The url %{url->} was %{p0}"); - -var part1772 = match("MESSAGE#1116:00556:14/2", "nwparser.p0", "category %{fld2}."); - -var all363 = all_match({ - processors: [ - part1771, - dup406, - part1772, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1132 = msg("00556:14", all363); - -var part1773 = match("MESSAGE#1117:00556:15/0", "nwparser.payload", "UF-MGR: The category %{fld2->} was %{p0}"); - -var part1774 = match("MESSAGE#1117:00556:15/2", "nwparser.p0", "profile %{fld3->} with action %{disposition}."); - -var all364 = all_match({ - processors: [ - part1773, - dup406, - part1774, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - dup282, - ]), -}); - -var msg1133 = msg("00556:15", all364); - -var part1775 = match("MESSAGE#1118:00556:16/0", "nwparser.payload", "UF-MGR: The %{p0}"); - -var part1776 = match("MESSAGE#1118:00556:16/1_0", "nwparser.p0", "profile %{p0}"); - -var part1777 = match("MESSAGE#1118:00556:16/1_1", "nwparser.p0", "category %{p0}"); - -var select396 = linear_select([ - part1776, - part1777, -]); - -var part1778 = match("MESSAGE#1118:00556:16/2", "nwparser.p0", "%{fld2->} was %{p0}"); - -var select397 = linear_select([ - dup104, - dup120, -]); - -var all365 = all_match({ - processors: [ - part1775, - select396, - part1778, - select397, - dup116, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1134 = msg("00556:16", all365); - -var part1779 = match("MESSAGE#1119:00556:17/0", "nwparser.payload", "UF-MGR: The category %{fld2->} was set in profile %{profile->} as the %{p0}"); - -var part1780 = match("MESSAGE#1119:00556:17/1_0", "nwparser.p0", "black %{p0}"); - -var part1781 = match("MESSAGE#1119:00556:17/1_1", "nwparser.p0", "white %{p0}"); - -var select398 = linear_select([ - part1780, - part1781, -]); - -var part1782 = match("MESSAGE#1119:00556:17/2", "nwparser.p0", "list.%{}"); - -var all366 = all_match({ - processors: [ - part1779, - select398, - part1782, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1135 = msg("00556:17", all366); - -var part1783 = match("MESSAGE#1120:00556:18/0", "nwparser.payload", "UF-MGR: The action for %{fld2->} in profile %{profile->} was %{p0}"); - -var part1784 = match("MESSAGE#1120:00556:18/1_1", "nwparser.p0", "changed %{p0}"); - -var select399 = linear_select([ - dup101, - part1784, -]); - -var part1785 = match("MESSAGE#1120:00556:18/2", "nwparser.p0", "to %{fld3}."); - -var all367 = all_match({ - processors: [ - part1783, - select399, - part1785, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1136 = msg("00556:18", all367); - -var part1786 = match("MESSAGE#1121:00556:20/0", "nwparser.payload", "UF-MGR: The category list from the CPA server %{p0}"); - -var part1787 = match("MESSAGE#1121:00556:20/2", "nwparser.p0", "updated on%{p0}"); - -var select400 = linear_select([ - dup103, - dup96, -]); - -var part1788 = match("MESSAGE#1121:00556:20/4", "nwparser.p0", "the device.%{}"); - -var all368 = all_match({ - processors: [ - part1786, - dup355, - part1787, - select400, - part1788, - ], - on_success: processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1137 = msg("00556:20", all368); - -var part1789 = match("MESSAGE#1122:00556:21", "nwparser.payload", "UF-MGR: URL BLOCKED: %{saddr}(%{sport})->%{daddr}(%{dport}), %{fld2->} action: %{disposition}, category: %{category}, reason: %{result->} (%{fld1})", processor_chain([ - dup232, - dup2, - dup3, - dup9, - dup4, - dup5, - dup282, -])); - -var msg1138 = msg("00556:21", part1789); - -var part1790 = match("MESSAGE#1123:00556:22", "nwparser.payload", "UF-MGR: URL BLOCKED: %{saddr}(%{sport})->%{daddr}(%{dport}), %{fld2->} (%{fld1})", processor_chain([ - dup232, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1139 = msg("00556:22", part1790); - -var select401 = linear_select([ - msg1118, - msg1119, - msg1120, - msg1121, - msg1122, - msg1123, - msg1124, - msg1125, - msg1126, - msg1127, - msg1128, - msg1129, - msg1130, - msg1131, - msg1132, - msg1133, - msg1134, - msg1135, - msg1136, - msg1137, - msg1138, - msg1139, -]); - -var part1791 = match("MESSAGE#1124:00572", "nwparser.payload", "PPP LCP on interface %{interface->} is %{fld2}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1140 = msg("00572", part1791); - -var part1792 = match("MESSAGE#1125:00572:01", "nwparser.payload", "PPP authentication state on interface %{interface}: %{result}. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1141 = msg("00572:01", part1792); - -var part1793 = match("MESSAGE#1126:00572:03", "nwparser.payload", "PPP on interface %{interface->} is %{disposition->} by receiving Terminate-Request. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1142 = msg("00572:03", part1793); - -var select402 = linear_select([ - msg1140, - msg1141, - msg1142, -]); - -var part1794 = match("MESSAGE#1127:00615", "nwparser.payload", "PBR policy \"%{policyname}\" rebuilding lookup tree for virtual router \"%{node}\". (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg1143 = msg("00615", part1794); - -var part1795 = match("MESSAGE#1128:00615:01", "nwparser.payload", "PBR policy \"%{policyname}\" lookup tree rebuilt successfully in virtual router \"%{node}\". (%{fld1})", processor_chain([ - dup44, - dup2, - dup4, - dup5, - dup9, -])); - -var msg1144 = msg("00615:01", part1795); - -var select403 = linear_select([ - msg1143, - msg1144, -]); - -var part1796 = match("MESSAGE#1129:00601", "nwparser.payload", "%{signame->} attack! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol}, through policy %{policyname}. Occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup9, - dup4, - dup5, - dup61, -])); - -var msg1145 = msg("00601", part1796); - -var part1797 = match("MESSAGE#1130:00601:01", "nwparser.payload", "%{signame->} has been detected from %{saddr}/%{sport->} to %{daddr}/%{dport->} through policy %{policyname->} %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup9, - dup4, - dup5, - dup61, -])); - -var msg1146 = msg("00601:01", part1797); - -var part1798 = match("MESSAGE#1131:00601:18", "nwparser.payload", "Error in initializing multicast.%{}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1147 = msg("00601:18", part1798); - -var select404 = linear_select([ - msg1145, - msg1146, - msg1147, -]); - -var part1799 = match("MESSAGE#1132:00602", "nwparser.payload", "PIMSM Error in initializing interface state change%{}", processor_chain([ - dup19, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1148 = msg("00602", part1799); - -var part1800 = match("MESSAGE#1133:00612/0", "nwparser.payload", "Switch event: the status of ethernet port %{fld2->} changed to link %{p0}"); - -var part1801 = match("MESSAGE#1133:00612/2", "nwparser.p0", ", duplex %{p0}"); - -var part1802 = match("MESSAGE#1133:00612/3_0", "nwparser.p0", "full %{p0}"); - -var part1803 = match("MESSAGE#1133:00612/3_1", "nwparser.p0", "half %{p0}"); - -var select405 = linear_select([ - part1802, - part1803, -]); - -var part1804 = match("MESSAGE#1133:00612/4", "nwparser.p0", ", speed 10%{p0}"); - -var part1805 = match("MESSAGE#1133:00612/5_0", "nwparser.p0", "0 %{p0}"); - -var select406 = linear_select([ - part1805, - dup96, -]); - -var part1806 = match("MESSAGE#1133:00612/6", "nwparser.p0", "M. (%{fld1})"); - -var all369 = all_match({ - processors: [ - part1800, - dup353, - part1801, - select405, - part1804, - select406, - part1806, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1149 = msg("00612", all369); - -var part1807 = match("MESSAGE#1134:00620", "nwparser.payload", "RTSYNC: Event posted to send all the DRP routes to backup device. (%{fld1})", processor_chain([ - dup272, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1150 = msg("00620", part1807); - -var part1808 = match("MESSAGE#1135:00620:01/0", "nwparser.payload", "RTSYNC: %{p0}"); - -var part1809 = match("MESSAGE#1135:00620:01/1_0", "nwparser.p0", "Serviced%{p0}"); - -var part1810 = match("MESSAGE#1135:00620:01/1_1", "nwparser.p0", "Recieved%{p0}"); - -var select407 = linear_select([ - part1809, - part1810, -]); - -var part1811 = match("MESSAGE#1135:00620:01/2", "nwparser.p0", "%{}coldstart request for route synchronization from NSRP peer. (%{fld1})"); - -var all370 = all_match({ - processors: [ - part1808, - select407, - part1811, - ], - on_success: processor_chain([ - dup272, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1151 = msg("00620:01", all370); - -var part1812 = match("MESSAGE#1136:00620:02", "nwparser.payload", "RTSYNC: Started timer to purge all the DRP backup routes - %{fld2->} (%{fld1})", processor_chain([ - dup272, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1152 = msg("00620:02", part1812); - -var part1813 = match("MESSAGE#1137:00620:03", "nwparser.payload", "RTSYNC: Event posted to purge backup routes in all vrouters. (%{fld1})", processor_chain([ - dup272, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1153 = msg("00620:03", part1813); - -var part1814 = match("MESSAGE#1138:00620:04", "nwparser.payload", "RTSYNC: Timer to purge the DRP backup routes is stopped. (%{fld1})", processor_chain([ - dup272, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1154 = msg("00620:04", part1814); - -var select408 = linear_select([ - msg1150, - msg1151, - msg1152, - msg1153, - msg1154, -]); - -var part1815 = match("MESSAGE#1139:00622", "nwparser.payload", "NHRP : NHRP instance in virtual router %{node->} is created. (%{fld1})", processor_chain([ - dup273, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1155 = msg("00622", part1815); - -var part1816 = match("MESSAGE#1140:00625/0", "nwparser.payload", "Session (id %{sessionid->} src-ip %{saddr->} dst-ip %{daddr->} dst port %{dport}) route is %{p0}"); - -var part1817 = match("MESSAGE#1140:00625/1_0", "nwparser.p0", "invalid%{p0}"); - -var part1818 = match("MESSAGE#1140:00625/1_1", "nwparser.p0", "valid%{p0}"); - -var select409 = linear_select([ - part1817, - part1818, -]); - -var all371 = all_match({ - processors: [ - part1816, - select409, - dup49, - ], - on_success: processor_chain([ - dup273, - dup2, - dup4, - dup5, - dup9, - ]), -}); - -var msg1156 = msg("00625", all371); - -var part1819 = match("MESSAGE#1141:00628/0", "nwparser.payload", "audit log queue %{p0}"); - -var part1820 = match("MESSAGE#1141:00628/1_0", "nwparser.p0", "Traffic Log %{p0}"); - -var part1821 = match("MESSAGE#1141:00628/1_1", "nwparser.p0", "Event Alarm Log %{p0}"); - -var part1822 = match("MESSAGE#1141:00628/1_2", "nwparser.p0", "Event Log %{p0}"); - -var select410 = linear_select([ - part1820, - part1821, - part1822, -]); - -var part1823 = match("MESSAGE#1141:00628/2", "nwparser.p0", "is overwritten (%{fld1})"); - -var all372 = all_match({ - processors: [ - part1819, - select410, - part1823, - ], - on_success: processor_chain([ - dup223, - dup2, - dup4, - dup5, - dup9, - ]), -}); - -var msg1157 = msg("00628", all372); - -var part1824 = match("MESSAGE#1142:00767:50", "nwparser.payload", "Log setting was modified to %{disposition->} %{fld2->} level by admin %{administrator->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup4, - dup5, - dup9, - dup282, -])); - -var msg1158 = msg("00767:50", part1824); - -var part1825 = match("MESSAGE#1143:00767:51", "nwparser.payload", "Attack CS:Man in Middle is created by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} by admin %{administrator->} (%{fld1})", processor_chain([ - dup58, - dup2, - dup4, - dup5, - dup9, -])); - -var msg1159 = msg("00767:51", part1825); - -var part1826 = match("MESSAGE#1144:00767:52", "nwparser.payload", "Attack group %{group->} is created by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} by admin %{administrator->} (%{fld1})", processor_chain([ - dup58, - dup2, - dup4, - dup5, - dup9, -])); - -var msg1160 = msg("00767:52", part1826); - -var part1827 = match("MESSAGE#1145:00767:53", "nwparser.payload", "Attack CS:Man in Middle is added to attack group %{group->} by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} by admin %{administrator->} (%{fld1})", processor_chain([ - dup58, - dup2, - dup4, - dup5, - dup9, -])); - -var msg1161 = msg("00767:53", part1827); - -var part1828 = match("MESSAGE#1146:00767", "nwparser.payload", "Cannot contact the SecurID server%{}", processor_chain([ - dup27, - setc("ec_theme","Communication"), - dup39, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1162 = msg("00767", part1828); - -var part1829 = match("MESSAGE#1147:00767:01/0", "nwparser.payload", "System auto-config of file %{fld2->} from TFTP server %{hostip->} has %{p0}"); - -var part1830 = match("MESSAGE#1147:00767:01/1_0", "nwparser.p0", "been loaded successfully%{}"); - -var part1831 = match("MESSAGE#1147:00767:01/1_1", "nwparser.p0", "failed%{}"); - -var select411 = linear_select([ - part1830, - part1831, -]); - -var all373 = all_match({ - processors: [ - part1829, - select411, - ], - on_success: processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1163 = msg("00767:01", all373); - -var part1832 = match("MESSAGE#1148:00767:02", "nwparser.payload", "netscreen: System Config saved from host %{saddr}", processor_chain([ - setc("eventcategory","1702000000"), - dup2, - dup3, - dup4, - dup5, -])); - -var msg1164 = msg("00767:02", part1832); - -var part1833 = match("MESSAGE#1149:00767:03", "nwparser.payload", "System Config saved to filename %{filename}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1165 = msg("00767:03", part1833); - -var part1834 = match("MESSAGE#1150:00767:04", "nwparser.payload", "System is operational.%{}", processor_chain([ - dup44, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1166 = msg("00767:04", part1834); - -var part1835 = match("MESSAGE#1151:00767:05", "nwparser.payload", "The device cannot contact the SecurID server%{}", processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1167 = msg("00767:05", part1835); - -var part1836 = match("MESSAGE#1152:00767:06", "nwparser.payload", "The device cannot send data to the SecurID server%{}", processor_chain([ - dup27, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1168 = msg("00767:06", part1836); - -var part1837 = match("MESSAGE#1153:00767:07", "nwparser.payload", "The system configuration was saved from peer unit by admin%{}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1169 = msg("00767:07", part1837); - -var part1838 = match("MESSAGE#1154:00767:08/0", "nwparser.payload", "The system configuration was saved by admin %{p0}"); - -var all374 = all_match({ - processors: [ - part1838, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1170 = msg("00767:08", all374); - -var part1839 = match("MESSAGE#1155:00767:09/0", "nwparser.payload", "traffic shaping is turned O%{p0}"); - -var part1840 = match("MESSAGE#1155:00767:09/1_0", "nwparser.p0", "N%{}"); - -var part1841 = match("MESSAGE#1155:00767:09/1_1", "nwparser.p0", "FF%{}"); - -var select412 = linear_select([ - part1840, - part1841, -]); - -var all375 = all_match({ - processors: [ - part1839, - select412, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1171 = msg("00767:09", all375); - -var part1842 = match("MESSAGE#1156:00767:10/0", "nwparser.payload", "The system configuration was saved from host %{saddr->} by admin %{p0}"); - -var all376 = all_match({ - processors: [ - part1842, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1172 = msg("00767:10", all376); - -var part1843 = match("MESSAGE#1157:00767:11/0", "nwparser.payload", "Fatal error. The NetScreen device was unable to upgrade the %{p0}"); - -var part1844 = match("MESSAGE#1157:00767:11/1_1", "nwparser.p0", "file system %{p0}"); - -var select413 = linear_select([ - dup331, - part1844, -]); - -var part1845 = match("MESSAGE#1157:00767:11/2", "nwparser.p0", ", and the %{p0}"); - -var part1846 = match("MESSAGE#1157:00767:11/3_1", "nwparser.p0", "old file system %{p0}"); - -var select414 = linear_select([ - dup331, - part1846, -]); - -var part1847 = match("MESSAGE#1157:00767:11/4", "nwparser.p0", "is damaged.%{}"); - -var all377 = all_match({ - processors: [ - part1843, - select413, - part1845, - select414, - part1847, - ], - on_success: processor_chain([ - dup18, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1173 = msg("00767:11", all377); - -var part1848 = match("MESSAGE#1158:00767:12", "nwparser.payload", "System configuration saved by %{username->} via %{logon_type->} from host %{saddr->} to %{daddr}:%{dport->} by %{fld2->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1174 = msg("00767:12", part1848); - -var part1849 = match("MESSAGE#1159:00767:13/0", "nwparser.payload", "%{fld2}Environment variable %{fld3->} is changed to %{fld4->} by admin %{p0}"); - -var all378 = all_match({ - processors: [ - part1849, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1175 = msg("00767:13", all378); - -var part1850 = match("MESSAGE#1160:00767:14/0", "nwparser.payload", "System was %{p0}"); - -var part1851 = match("MESSAGE#1160:00767:14/1_0", "nwparser.p0", "reset %{p0}"); - -var select415 = linear_select([ - part1851, - dup262, -]); - -var part1852 = match("MESSAGE#1160:00767:14/2", "nwparser.p0", "at %{fld2->} by %{p0}"); - -var part1853 = match("MESSAGE#1160:00767:14/3_0", "nwparser.p0", "admin %{administrator}"); - -var part1854 = match_copy("MESSAGE#1160:00767:14/3_1", "nwparser.p0", "username"); - -var select416 = linear_select([ - part1853, - part1854, -]); - -var all379 = all_match({ - processors: [ - part1850, - select415, - part1852, - select416, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1176 = msg("00767:14", all379); - -var part1855 = match("MESSAGE#1161:00767:15/1_0", "nwparser.p0", "System %{p0}"); - -var part1856 = match("MESSAGE#1161:00767:15/1_1", "nwparser.p0", "Event %{p0}"); - -var part1857 = match("MESSAGE#1161:00767:15/1_2", "nwparser.p0", "Traffic %{p0}"); - -var select417 = linear_select([ - part1855, - part1856, - part1857, -]); - -var part1858 = match("MESSAGE#1161:00767:15/2", "nwparser.p0", "log was reviewed by %{p0}"); - -var part1859 = match("MESSAGE#1161:00767:15/4", "nwparser.p0", "%{} %{username}."); - -var all380 = all_match({ - processors: [ - dup183, - select417, - part1858, - dup336, - part1859, - ], - on_success: processor_chain([ - dup223, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1177 = msg("00767:15", all380); - -var part1860 = match("MESSAGE#1162:00767:16", "nwparser.payload", "%{fld2->} Admin %{administrator->} issued command %{info->} to redirect output.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1178 = msg("00767:16", part1860); - -var part1861 = match("MESSAGE#1163:00767:17/0", "nwparser.payload", "%{fld2->} Save new software from %{fld3->} to flash by admin %{p0}"); - -var all381 = all_match({ - processors: [ - part1861, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1179 = msg("00767:17", all381); - -var part1862 = match("MESSAGE#1164:00767:18", "nwparser.payload", "Attack database version %{version->} has been %{fld2->} saved to flash.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1180 = msg("00767:18", part1862); - -var part1863 = match("MESSAGE#1165:00767:19", "nwparser.payload", "Attack database version %{version->} was rejected because the authentication check failed.", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1181 = msg("00767:19", part1863); - -var part1864 = match("MESSAGE#1166:00767:20", "nwparser.payload", "The dictionary file version of the RADIUS server %{hostname->} does not match %{fld2}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1182 = msg("00767:20", part1864); - -var part1865 = match("MESSAGE#1167:00767:21", "nwparser.payload", "Session (%{fld2->} %{fld3}, %{fld4}) cleared %{fld5}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1183 = msg("00767:21", part1865); - -var part1866 = match("MESSAGE#1168:00767:22/0", "nwparser.payload", "The system configuration was not saved %{p0}"); - -var part1867 = match("MESSAGE#1168:00767:22/1_0", "nwparser.p0", "%{fld2->} by admin %{administrator->} via NSRP Peer %{p0}"); - -var part1868 = match("MESSAGE#1168:00767:22/1_1", "nwparser.p0", "%{fld2->} %{p0}"); - -var select418 = linear_select([ - part1867, - part1868, -]); - -var part1869 = match("MESSAGE#1168:00767:22/2", "nwparser.p0", "by administrator %{fld3}. %{p0}"); - -var part1870 = match("MESSAGE#1168:00767:22/3_0", "nwparser.p0", "It was locked %{p0}"); - -var part1871 = match("MESSAGE#1168:00767:22/3_1", "nwparser.p0", "Locked %{p0}"); - -var select419 = linear_select([ - part1870, - part1871, -]); - -var part1872 = match("MESSAGE#1168:00767:22/4", "nwparser.p0", "by administrator %{fld4->} %{p0}"); - -var all382 = all_match({ - processors: [ - part1866, - select418, - part1869, - select419, - part1872, - dup354, - ], - on_success: processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1184 = msg("00767:22", all382); - -var part1873 = match("MESSAGE#1169:00767:23", "nwparser.payload", "Save new software from slot filename %{filename->} to flash memory by administrator %{administrator}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var msg1185 = msg("00767:23", part1873); - -var part1874 = match("MESSAGE#1170:00767:25/0", "nwparser.payload", "System configuration saved by %{username->} via %{logon_type->} from %{p0}"); - -var select420 = linear_select([ - dup169, - dup16, -]); - -var part1875 = match("MESSAGE#1170:00767:25/3_0", "nwparser.p0", "%{saddr}:%{sport->} by %{p0}"); - -var part1876 = match("MESSAGE#1170:00767:25/3_1", "nwparser.p0", "%{saddr->} by %{p0}"); - -var select421 = linear_select([ - part1875, - part1876, -]); - -var all383 = all_match({ - processors: [ - part1874, - select420, - dup23, - select421, - dup108, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var msg1186 = msg("00767:25", all383); - -var part1877 = match("MESSAGE#1171:00767:26/0", "nwparser.payload", "Lock configuration %{p0}"); - -var part1878 = match("MESSAGE#1171:00767:26/1_0", "nwparser.p0", "started%{p0}"); - -var part1879 = match("MESSAGE#1171:00767:26/1_1", "nwparser.p0", "ended%{p0}"); - -var select422 = linear_select([ - part1878, - part1879, -]); - -var part1880 = match("MESSAGE#1171:00767:26/2", "nwparser.p0", "%{}by task %{p0}"); - -var part1881 = match("MESSAGE#1171:00767:26/3_0", "nwparser.p0", "%{fld3}, with a timeout value of %{fld2}"); - -var part1882 = match("MESSAGE#1171:00767:26/3_1", "nwparser.p0", "%{fld2->} (%{fld1})"); - -var select423 = linear_select([ - part1881, - part1882, -]); - -var all384 = all_match({ - processors: [ - part1877, - select422, - part1880, - select423, - ], - on_success: processor_chain([ - dup50, - dup43, - dup51, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1187 = msg("00767:26", all384); - -var part1883 = match("MESSAGE#1172:00767:27/0", "nwparser.payload", "Environment variable %{fld2->} changed to %{p0}"); - -var part1884 = match("MESSAGE#1172:00767:27/1_0", "nwparser.p0", "%{fld3->} by %{username->} (%{fld1})"); - -var part1885 = match_copy("MESSAGE#1172:00767:27/1_1", "nwparser.p0", "fld3"); - -var select424 = linear_select([ - part1884, - part1885, -]); - -var all385 = all_match({ - processors: [ - part1883, - select424, - ], - on_success: processor_chain([ - dup223, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1188 = msg("00767:27", all385); - -var part1886 = match("MESSAGE#1173:00767:28", "nwparser.payload", "The system configuration was loaded from IP address %{hostip->} under filename %{filename->} by administrator by admin %{administrator->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1189 = msg("00767:28", part1886); - -var part1887 = match("MESSAGE#1174:00767:29", "nwparser.payload", "Save configuration to IP address %{hostip->} under filename %{filename->} by administrator by admin %{administrator->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1190 = msg("00767:29", part1887); - -var part1888 = match("MESSAGE#1175:00767:30", "nwparser.payload", "%{fld2}: The system configuration was saved from host %{saddr->} by admin %{administrator->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1191 = msg("00767:30", part1888); - -var part1889 = match("MESSAGE#1176:00767:31/1_0", "nwparser.p0", "logged events or alarms %{p0}"); - -var part1890 = match("MESSAGE#1176:00767:31/1_1", "nwparser.p0", "traffic logs %{p0}"); - -var select425 = linear_select([ - part1889, - part1890, -]); - -var part1891 = match("MESSAGE#1176:00767:31/2", "nwparser.p0", "were cleared by admin %{p0}"); - -var all386 = all_match({ - processors: [ - dup186, - select425, - part1891, - dup397, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1192 = msg("00767:31", all386); - -var part1892 = match("MESSAGE#1177:00767:32/0", "nwparser.payload", "SIP parser error %{p0}"); - -var part1893 = match("MESSAGE#1177:00767:32/1_0", "nwparser.p0", "SIP-field%{p0}"); - -var part1894 = match("MESSAGE#1177:00767:32/1_1", "nwparser.p0", "Message%{p0}"); - -var select426 = linear_select([ - part1893, - part1894, -]); - -var part1895 = match("MESSAGE#1177:00767:32/2", "nwparser.p0", ": %{result}(%{fld1})"); - -var all387 = all_match({ - processors: [ - part1892, - select426, - part1895, - ], - on_success: processor_chain([ - dup27, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1193 = msg("00767:32", all387); - -var part1896 = match("MESSAGE#1178:00767:33", "nwparser.payload", "Daylight Saving Time has started. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1194 = msg("00767:33", part1896); - -var part1897 = match("MESSAGE#1179:00767:34", "nwparser.payload", "NetScreen devices do not support multiple IP addresses %{hostip->} or ports %{network_port->} in SIP headers RESPONSE (%{fld1})", processor_chain([ - dup313, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1195 = msg("00767:34", part1897); - -var part1898 = match("MESSAGE#1180:00767:35", "nwparser.payload", "Environment variable %{fld2->} set to %{fld3->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1196 = msg("00767:35", part1898); - -var part1899 = match("MESSAGE#1181:00767:36", "nwparser.payload", "System configuration saved from %{fld2->} by %{username->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1197 = msg("00767:36", part1899); - -var part1900 = match("MESSAGE#1182:00767:37", "nwparser.payload", "Trial keys are available to download to enable advanced features. %{space->} To find out, please visit %{url->} (%{fld1})", processor_chain([ - dup254, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1198 = msg("00767:37", part1900); - -var part1901 = match("MESSAGE#1183:00767:38", "nwparser.payload", "Log buffer was full and remaining messages were sent to external destination. %{fld2->} packets were dropped. (%{fld1})", processor_chain([ - setc("eventcategory","1602000000"), - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1199 = msg("00767:38", part1901); - -var part1902 = match("MESSAGE#1184:00767:39/0", "nwparser.payload", "Cannot %{p0}"); - -var part1903 = match("MESSAGE#1184:00767:39/1_0", "nwparser.p0", "download %{p0}"); - -var part1904 = match("MESSAGE#1184:00767:39/1_1", "nwparser.p0", "parse %{p0}"); - -var select427 = linear_select([ - part1903, - part1904, -]); - -var part1905 = match("MESSAGE#1184:00767:39/2", "nwparser.p0", "attack database %{p0}"); - -var part1906 = match("MESSAGE#1184:00767:39/3_0", "nwparser.p0", "from %{url->} (%{result}). %{p0}"); - -var part1907 = match("MESSAGE#1184:00767:39/3_1", "nwparser.p0", "%{fld2->} %{p0}"); - -var select428 = linear_select([ - part1906, - part1907, -]); - -var all388 = all_match({ - processors: [ - part1902, - select427, - part1905, - select428, - dup10, - ], - on_success: processor_chain([ - dup324, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1200 = msg("00767:39", all388); - -var part1908 = match("MESSAGE#1185:00767:40", "nwparser.payload", "Deep Inspection update key is %{disposition}. (%{fld1})", processor_chain([ - dup62, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1201 = msg("00767:40", part1908); - -var part1909 = match("MESSAGE#1186:00767:42", "nwparser.payload", "System configuration saved by %{username->} via %{logon_type->} to %{daddr}:%{dport->} by %{fld2->} (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1202 = msg("00767:42", part1909); - -var part1910 = match("MESSAGE#1187:00767:43", "nwparser.payload", "Daylight Saving Time ended. (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1203 = msg("00767:43", part1910); - -var part1911 = match("MESSAGE#1188:00767:44", "nwparser.payload", "New GMT zone ahead or behind by %{fld2->} (%{fld1})", processor_chain([ - dup44, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1204 = msg("00767:44", part1911); - -var part1912 = match("MESSAGE#1189:00767:45", "nwparser.payload", "Attack database version %{version->} is saved to flash. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1205 = msg("00767:45", part1912); - -var part1913 = match("MESSAGE#1190:00767:46", "nwparser.payload", "System configuration saved by netscreen via %{logon_type->} by netscreen. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1206 = msg("00767:46", part1913); - -var part1914 = match("MESSAGE#1191:00767:47", "nwparser.payload", "User %{username->} belongs to a different group in the RADIUS server than that allowed in the device. (%{fld1})", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup9, -])); - -var msg1207 = msg("00767:47", part1914); - -var part1915 = match("MESSAGE#1192:00767:24/0", "nwparser.payload", "System configuration saved by %{p0}"); - -var part1916 = match("MESSAGE#1192:00767:24/2", "nwparser.p0", "%{logon_type->} by %{fld2->} (%{fld1})"); - -var all389 = all_match({ - processors: [ - part1915, - dup364, - part1916, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup9, - dup4, - dup5, - ]), -}); - -var msg1208 = msg("00767:24", all389); - -var part1917 = match("MESSAGE#1193:00767:48", "nwparser.payload", "HA: Synchronization file(s) hidden file end with c sent to backup device in cluster. (%{fld1})", processor_chain([ - dup272, - dup2, - dup3, - dup9, - dup4, - dup5, -])); - -var msg1209 = msg("00767:48", part1917); - -var part1918 = match("MESSAGE#1194:00767:49/0", "nwparser.payload", "%{fld2->} turn o%{p0}"); - -var part1919 = match("MESSAGE#1194:00767:49/1_0", "nwparser.p0", "n%{p0}"); - -var part1920 = match("MESSAGE#1194:00767:49/1_1", "nwparser.p0", "ff%{p0}"); - -var select429 = linear_select([ - part1919, - part1920, -]); - -var part1921 = match("MESSAGE#1194:00767:49/2", "nwparser.p0", "%{}debug switch for %{fld3->} (%{fld1})"); - -var all390 = all_match({ - processors: [ - part1918, - select429, - part1921, - ], - on_success: processor_chain([ - dup1, - dup2, - dup4, - dup5, - dup9, - ]), -}); - -var msg1210 = msg("00767:49", all390); - -var select430 = linear_select([ - msg1158, - msg1159, - msg1160, - msg1161, - msg1162, - msg1163, - msg1164, - msg1165, - msg1166, - msg1167, - msg1168, - msg1169, - msg1170, - msg1171, - msg1172, - msg1173, - msg1174, - msg1175, - msg1176, - msg1177, - msg1178, - msg1179, - msg1180, - msg1181, - msg1182, - msg1183, - msg1184, - msg1185, - msg1186, - msg1187, - msg1188, - msg1189, - msg1190, - msg1191, - msg1192, - msg1193, - msg1194, - msg1195, - msg1196, - msg1197, - msg1198, - msg1199, - msg1200, - msg1201, - msg1202, - msg1203, - msg1204, - msg1205, - msg1206, - msg1207, - msg1208, - msg1209, - msg1210, -]); - -var part1922 = match("MESSAGE#1195:01269", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup277, - dup3, - dup275, - dup60, -])); - -var msg1211 = msg("01269", part1922); - -var msg1212 = msg("01269:01", dup407); - -var msg1213 = msg("01269:02", dup408); - -var msg1214 = msg("01269:03", dup409); - -var select431 = linear_select([ - msg1211, - msg1212, - msg1213, - msg1214, -]); - -var part1923 = match("MESSAGE#1199:17852", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup3, - dup276, - dup277, - dup275, - dup332, -])); - -var msg1215 = msg("17852", part1923); - -var part1924 = match("MESSAGE#1200:17852:01", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup332, - dup282, -])); - -var msg1216 = msg("17852:01", part1924); - -var part1925 = match("MESSAGE#1201:17852:02", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup276, - dup277, - dup61, -])); - -var msg1217 = msg("17852:02", part1925); - -var part1926 = match("MESSAGE#1202:17852:03", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup332, - dup282, -])); - -var msg1218 = msg("17852:03", part1926); - -var select432 = linear_select([ - msg1215, - msg1216, - msg1217, - msg1218, -]); - -var msg1219 = msg("23184", dup410); - -var part1927 = match("MESSAGE#1204:23184:01", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} (%{fld3}) proto=%{protocol->} direction=%{direction->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup61, - dup282, -])); - -var msg1220 = msg("23184:01", part1927); - -var part1928 = match("MESSAGE#1205:23184:02", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} (%{fld3}) proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup3, - dup276, - dup277, - dup275, - dup61, -])); - -var msg1221 = msg("23184:02", part1928); - -var part1929 = match("MESSAGE#1206:23184:03", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} (%{fld3}) proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup332, - dup282, -])); - -var msg1222 = msg("23184:03", part1929); - -var select433 = linear_select([ - msg1219, - msg1220, - msg1221, - msg1222, -]); - -var msg1223 = msg("27052", dup410); - -var part1930 = match("MESSAGE#1208:27052:01", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} (%{fld3}) proto=%{protocol}direction=%{direction->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup61, - dup282, -])); - -var msg1224 = msg("27052:01", part1930); - -var select434 = linear_select([ - msg1223, - msg1224, -]); - -var part1931 = match("MESSAGE#1209:39568", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup185, - dup2, - dup4, - dup277, - dup5, - dup274, - dup3, - dup275, - dup276, - dup60, -])); - -var msg1225 = msg("39568", part1931); - -var msg1226 = msg("39568:01", dup407); - -var msg1227 = msg("39568:02", dup408); - -var msg1228 = msg("39568:03", dup409); - -var select435 = linear_select([ - msg1225, - msg1226, - msg1227, - msg1228, -]); - -var chain1 = processor_chain([ - select2, - msgid_select({ - "00001": select6, - "00002": select29, - "00003": select31, - "00004": select33, - "00005": select39, - "00006": select40, - "00007": select63, - "00008": select66, - "00009": select83, - "00010": select86, - "00011": select100, - "00012": select101, - "00013": select102, - "00014": select104, - "00015": select114, - "00016": select115, - "00017": select125, - "00018": select138, - "00019": select147, - "00020": select150, - "00021": select151, - "00022": select163, - "00023": select164, - "00024": select170, - "00025": select171, - "00026": select176, - "00027": select184, - "00028": msg469, - "00029": select188, - "00030": select197, - "00031": select205, - "00032": select207, - "00033": select214, - "00034": select225, - "00035": select232, - "00036": select234, - "00037": select241, - "00038": msg660, - "00039": msg661, - "00040": select244, - "00041": select245, - "00042": select246, - "00043": msg668, - "00044": select248, - "00045": msg671, - "00047": msg672, - "00048": select257, - "00049": select258, - "00050": msg682, - "00051": msg683, - "00052": msg684, - "00055": select265, - "00056": msg696, - "00057": msg697, - "00058": msg698, - "00059": select272, - "00062": select273, - "00063": msg713, - "00064": select274, - "00070": select276, - "00071": select277, - "00072": select278, - "00073": select279, - "00074": msg726, - "00075": select280, - "00076": select281, - "00077": select282, - "00084": msg735, - "00090": msg736, - "00200": msg737, - "00201": msg738, - "00202": msg739, - "00203": msg740, - "00206": select285, - "00207": select286, - "00257": select291, - "00259": select294, - "00262": msg778, - "00263": msg779, - "00400": msg780, - "00401": msg781, - "00402": select296, - "00403": msg784, - "00404": msg785, - "00405": msg786, - "00406": msg787, - "00407": msg788, - "00408": msg789, - "00409": msg790, - "00410": select297, - "00411": msg793, - "00413": select298, - "00414": select299, - "00415": msg799, - "00423": msg800, - "00429": select300, - "00430": select301, - "00431": msg805, - "00432": msg806, - "00433": msg807, - "00434": msg808, - "00435": select302, - "00436": select303, - "00437": select304, - "00438": select305, - "00440": select306, - "00441": msg823, - "00442": msg824, - "00443": msg825, - "00511": select307, - "00513": msg841, - "00515": select328, - "00518": select331, - "00519": select336, - "00520": select339, - "00521": msg890, - "00522": msg891, - "00523": msg892, - "00524": select340, - "00525": select341, - "00526": msg912, - "00527": select348, - "00528": select354, - "00529": select357, - "00530": select358, - "00531": select362, - "00533": msg973, - "00534": msg974, - "00535": select363, - "00536": select365, - "00537": select366, - "00538": select372, - "00539": select373, - "00541": select375, - "00542": msg1062, - "00543": msg1063, - "00544": msg1064, - "00546": msg1065, - "00547": select379, - "00549": msg1070, - "00551": select381, - "00553": select385, - "00554": select391, - "00555": msg1117, - "00556": select401, - "00572": select402, - "00601": select404, - "00602": msg1148, - "00612": msg1149, - "00615": select403, - "00620": select408, - "00622": msg1155, - "00625": msg1156, - "00628": msg1157, - "00767": select430, - "01269": select431, - "17852": select432, - "23184": select433, - "27052": select434, - "39568": select435, - }), -]); - -var part1932 = match("MESSAGE#2:00001:02/0", "nwparser.payload", "Address %{group_object->} for %{p0}"); - -var part1933 = match("MESSAGE#2:00001:02/1_1", "nwparser.p0", "domain address %{domain->} in zone %{p0}"); - -var part1934 = match("MESSAGE#4:00001:04/3_0", "nwparser.p0", " (%{fld1})"); - -var part1935 = match("MESSAGE#5:00001:05/1_0", "nwparser.p0", "(%{fld1})"); - -var part1936 = match_copy("MESSAGE#5:00001:05/1_1", "nwparser.p0", "fld1"); - -var part1937 = match("MESSAGE#8:00001:08/0", "nwparser.payload", "Address %{p0}"); - -var part1938 = match("MESSAGE#8:00001:08/1_0", "nwparser.p0", "MIP(%{interface}) %{p0}"); - -var part1939 = match("MESSAGE#8:00001:08/1_1", "nwparser.p0", "%{group_object->} %{p0}"); - -var part1940 = match("MESSAGE#8:00001:08/3_0", "nwparser.p0", "admin %{p0}"); - -var part1941 = match_copy("MESSAGE#8:00001:08/3_1", "nwparser.p0", "p0"); - -var part1942 = match("MESSAGE#25:00002:20/1_1", "nwparser.p0", "from host %{saddr->} "); - -var part1943 = match_copy("MESSAGE#25:00002:20/1_2", "nwparser.p0", ""); - -var part1944 = match("MESSAGE#26:00002:21/1", "nwparser.p0", "%{p0}"); - -var part1945 = match("MESSAGE#26:00002:21/2_0", "nwparser.p0", "password %{p0}"); - -var part1946 = match("MESSAGE#26:00002:21/2_1", "nwparser.p0", "name %{p0}"); - -var part1947 = match_copy("MESSAGE#27:00002:22/1_2", "nwparser.p0", "administrator"); - -var part1948 = match_copy("MESSAGE#42:00002:38/1_1", "nwparser.p0", "disposition"); - -var part1949 = match("MESSAGE#46:00002:42/1_1", "nwparser.p0", "via %{p0}"); - -var part1950 = match("MESSAGE#46:00002:42/4", "nwparser.p0", "%{fld1})"); - -var part1951 = match("MESSAGE#52:00002:48/3_1", "nwparser.p0", "%{logon_type->} from host %{saddr->} to %{daddr}:%{dport}. (%{p0}"); - -var part1952 = match("MESSAGE#53:00002:52/3_0", "nwparser.p0", "admin %{administrator->} via %{p0}"); - -var part1953 = match("MESSAGE#53:00002:52/3_2", "nwparser.p0", "%{username->} via %{p0}"); - -var part1954 = match("MESSAGE#53:00002:52/4_0", "nwparser.p0", "NSRP Peer . (%{p0}"); - -var part1955 = match("MESSAGE#55:00002:54/2", "nwparser.p0", ". (%{fld1})"); - -var part1956 = match("MESSAGE#56:00002/1_1", "nwparser.p0", "changed%{p0}"); - -var part1957 = match("MESSAGE#61:00003:05/0", "nwparser.payload", "The %{p0}"); - -var part1958 = match("MESSAGE#66:00004:04/1_0", "nwparser.p0", "interface%{p0}"); - -var part1959 = match("MESSAGE#66:00004:04/1_1", "nwparser.p0", "Interface%{p0}"); - -var part1960 = match("MESSAGE#76:00004:14/0", "nwparser.payload", "DNS entries have been %{p0}"); - -var part1961 = match("MESSAGE#79:00004:17/0", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{p0}"); - -var part1962 = match("MESSAGE#79:00004:17/1_0", "nwparser.p0", "%{zone}, %{p0}"); - -var part1963 = match("MESSAGE#79:00004:17/1_1", "nwparser.p0", "%{zone->} %{p0}"); - -var part1964 = match("MESSAGE#79:00004:17/2", "nwparser.p0", "int %{interface}).%{space}Occurred %{dclass_counter1->} times. (%{fld1})"); - -var part1965 = match("MESSAGE#83:00005:03/1_0", "nwparser.p0", "%{dport},%{p0}"); - -var part1966 = match("MESSAGE#83:00005:03/1_1", "nwparser.p0", "%{dport->} %{p0}"); - -var part1967 = match("MESSAGE#83:00005:03/2", "nwparser.p0", "%{space}using protocol %{p0}"); - -var part1968 = match("MESSAGE#83:00005:03/3_0", "nwparser.p0", "%{protocol},%{p0}"); - -var part1969 = match("MESSAGE#83:00005:03/3_1", "nwparser.p0", "%{protocol->} %{p0}"); - -var part1970 = match("MESSAGE#83:00005:03/5_1", "nwparser.p0", ". %{p0}"); - -var part1971 = match("MESSAGE#86:00005:06/0_0", "nwparser.payload", "%{fld2}: SYN %{p0}"); - -var part1972 = match("MESSAGE#86:00005:06/0_1", "nwparser.payload", "SYN %{p0}"); - -var part1973 = match("MESSAGE#87:00005:07/1_2", "nwparser.p0", "timeout value %{p0}"); - -var part1974 = match("MESSAGE#88:00005:08/2_0", "nwparser.p0", "destination %{p0}"); - -var part1975 = match("MESSAGE#88:00005:08/2_1", "nwparser.p0", "source %{p0}"); - -var part1976 = match("MESSAGE#97:00005:17/0", "nwparser.payload", "A %{p0}"); - -var part1977 = match("MESSAGE#98:00005:18/0", "nwparser.payload", "%{signame->} From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var part1978 = match("MESSAGE#98:00005:18/1_0", "nwparser.p0", ", int %{p0}"); - -var part1979 = match("MESSAGE#98:00005:18/1_1", "nwparser.p0", "int %{p0}"); - -var part1980 = match("MESSAGE#98:00005:18/2", "nwparser.p0", "%{interface}).%{space}Occurred %{dclass_counter1->} times. (%{fld1})"); - -var part1981 = match("MESSAGE#111:00007:04/0", "nwparser.payload", "HA %{p0}"); - -var part1982 = match("MESSAGE#111:00007:04/1_0", "nwparser.p0", "encryption %{p0}"); - -var part1983 = match("MESSAGE#111:00007:04/1_1", "nwparser.p0", "authentication %{p0}"); - -var part1984 = match("MESSAGE#111:00007:04/3_1", "nwparser.p0", "key %{p0}"); - -var part1985 = match("MESSAGE#118:00007:11/1_0", "nwparser.p0", "disabled%{}"); - -var part1986 = match("MESSAGE#118:00007:11/1_1", "nwparser.p0", "set to %{trigger_val}"); - -var part1987 = match("MESSAGE#127:00007:21/1_0", "nwparser.p0", "up%{}"); - -var part1988 = match("MESSAGE#127:00007:21/1_1", "nwparser.p0", "down%{}"); - -var part1989 = match("MESSAGE#139:00007:33/2_1", "nwparser.p0", " %{p0}"); - -var part1990 = match("MESSAGE#143:00007:37/1_0", "nwparser.p0", "set%{}"); - -var part1991 = match("MESSAGE#143:00007:37/1_1", "nwparser.p0", "unset%{}"); - -var part1992 = match("MESSAGE#144:00007:38/1_0", "nwparser.p0", "undefined %{p0}"); - -var part1993 = match("MESSAGE#144:00007:38/1_1", "nwparser.p0", "set %{p0}"); - -var part1994 = match("MESSAGE#144:00007:38/1_2", "nwparser.p0", "active %{p0}"); - -var part1995 = match("MESSAGE#144:00007:38/2", "nwparser.p0", "to %{p0}"); - -var part1996 = match("MESSAGE#157:00007:51/1_0", "nwparser.p0", "created %{p0}"); - -var part1997 = match("MESSAGE#157:00007:51/3_0", "nwparser.p0", ", %{p0}"); - -var part1998 = match("MESSAGE#157:00007:51/5_0", "nwparser.p0", "is %{p0}"); - -var part1999 = match("MESSAGE#157:00007:51/5_1", "nwparser.p0", "was %{p0}"); - -var part2000 = match("MESSAGE#157:00007:51/6", "nwparser.p0", "%{fld2}"); - -var part2001 = match("MESSAGE#163:00007:57/1_0", "nwparser.p0", "threshold %{p0}"); - -var part2002 = match("MESSAGE#163:00007:57/1_1", "nwparser.p0", "interval %{p0}"); - -var part2003 = match("MESSAGE#163:00007:57/3_0", "nwparser.p0", "of %{p0}"); - -var part2004 = match("MESSAGE#163:00007:57/3_1", "nwparser.p0", "that %{p0}"); - -var part2005 = match("MESSAGE#170:00007:64/0_0", "nwparser.payload", "Zone %{p0}"); - -var part2006 = match("MESSAGE#170:00007:64/0_1", "nwparser.payload", "Interface %{p0}"); - -var part2007 = match("MESSAGE#172:00007:66/2_1", "nwparser.p0", "n %{p0}"); - -var part2008 = match("MESSAGE#174:00007:68/4", "nwparser.p0", ".%{}"); - -var part2009 = match("MESSAGE#195:00009:06/1", "nwparser.p0", "for %{p0}"); - -var part2010 = match("MESSAGE#195:00009:06/2_0", "nwparser.p0", "the %{p0}"); - -var part2011 = match("MESSAGE#195:00009:06/4_0", "nwparser.p0", "removed %{p0}"); - -var part2012 = match("MESSAGE#202:00009:14/2_0", "nwparser.p0", "interface %{p0}"); - -var part2013 = match("MESSAGE#202:00009:14/2_1", "nwparser.p0", "the interface %{p0}"); - -var part2014 = match_copy("MESSAGE#202:00009:14/4_1", "nwparser.p0", "interface"); - -var part2015 = match("MESSAGE#203:00009:15/1_1", "nwparser.p0", "s %{p0}"); - -var part2016 = match("MESSAGE#203:00009:15/2", "nwparser.p0", "on interface %{interface->} %{p0}"); - -var part2017 = match("MESSAGE#203:00009:15/3_0", "nwparser.p0", "has been %{p0}"); - -var part2018 = match("MESSAGE#203:00009:15/4", "nwparser.p0", "%{disposition}."); - -var part2019 = match("MESSAGE#204:00009:16/3_0", "nwparser.p0", "removed from %{p0}"); - -var part2020 = match("MESSAGE#204:00009:16/3_1", "nwparser.p0", "added to %{p0}"); - -var part2021 = match("MESSAGE#210:00009:21/2", "nwparser.p0", "%{interface}). Occurred %{dclass_counter1->} times. (%{fld1})"); - -var part2022 = match("MESSAGE#219:00010:03/0", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var part2023 = match("MESSAGE#224:00011:04/1_1", "nwparser.p0", "Interface %{p0}"); - -var part2024 = match("MESSAGE#233:00011:14/1_0", "nwparser.p0", "set to %{fld2}"); - -var part2025 = match("MESSAGE#237:00011:18/4_1", "nwparser.p0", "gateway %{p0}"); - -var part2026 = match("MESSAGE#238:00011:19/6", "nwparser.p0", "%{} %{disposition}"); - -var part2027 = match("MESSAGE#274:00015:02/1_1", "nwparser.p0", "port number %{p0}"); - -var part2028 = match("MESSAGE#274:00015:02/2", "nwparser.p0", "has been %{disposition}"); - -var part2029 = match("MESSAGE#276:00015:04/1_0", "nwparser.p0", "IP %{p0}"); - -var part2030 = match("MESSAGE#276:00015:04/1_1", "nwparser.p0", "port %{p0}"); - -var part2031 = match("MESSAGE#284:00015:12/3_0", "nwparser.p0", "up %{p0}"); - -var part2032 = match("MESSAGE#284:00015:12/3_1", "nwparser.p0", "down %{p0}"); - -var part2033 = match("MESSAGE#294:00015:22/2_0", "nwparser.p0", "(%{fld1}) "); - -var part2034 = match("MESSAGE#317:00017:01/2_0", "nwparser.p0", ": %{p0}"); - -var part2035 = match("MESSAGE#320:00017:04/0", "nwparser.payload", "IP %{p0}"); - -var part2036 = match("MESSAGE#320:00017:04/1_0", "nwparser.p0", "address pool %{p0}"); - -var part2037 = match("MESSAGE#320:00017:04/1_1", "nwparser.p0", "pool %{p0}"); - -var part2038 = match("MESSAGE#326:00017:10/1_0", "nwparser.p0", "enabled %{p0}"); - -var part2039 = match("MESSAGE#326:00017:10/1_1", "nwparser.p0", "disabled %{p0}"); - -var part2040 = match("MESSAGE#332:00017:15/1_0", "nwparser.p0", "AH %{p0}"); - -var part2041 = match("MESSAGE#332:00017:15/1_1", "nwparser.p0", "ESP %{p0}"); - -var part2042 = match("MESSAGE#354:00018:11/0", "nwparser.payload", "%{} %{p0}"); - -var part2043 = match("MESSAGE#356:00018:32/0_0", "nwparser.payload", "Source%{p0}"); - -var part2044 = match("MESSAGE#356:00018:32/0_1", "nwparser.payload", "Destination%{p0}"); - -var part2045 = match("MESSAGE#356:00018:32/2_0", "nwparser.p0", "from %{p0}"); - -var part2046 = match("MESSAGE#356:00018:32/3", "nwparser.p0", "policy ID %{policy_id->} by admin %{administrator->} via NSRP Peer . (%{fld1})"); - -var part2047 = match("MESSAGE#375:00019:01/0", "nwparser.payload", "Attempt to enable %{p0}"); - -var part2048 = match("MESSAGE#375:00019:01/1_0", "nwparser.p0", "traffic logging via syslog %{p0}"); - -var part2049 = match("MESSAGE#375:00019:01/1_1", "nwparser.p0", "syslog %{p0}"); - -var part2050 = match("MESSAGE#378:00019:04/0", "nwparser.payload", "Syslog %{p0}"); - -var part2051 = match("MESSAGE#378:00019:04/1_0", "nwparser.p0", "host %{p0}"); - -var part2052 = match("MESSAGE#378:00019:04/3_1", "nwparser.p0", "domain name %{p0}"); - -var part2053 = match("MESSAGE#378:00019:04/4", "nwparser.p0", "has been changed to %{fld2}"); - -var part2054 = match("MESSAGE#380:00019:06/1_0", "nwparser.p0", "security facility %{p0}"); - -var part2055 = match("MESSAGE#380:00019:06/1_1", "nwparser.p0", "facility %{p0}"); - -var part2056 = match("MESSAGE#380:00019:06/3_0", "nwparser.p0", "local0%{}"); - -var part2057 = match("MESSAGE#380:00019:06/3_1", "nwparser.p0", "local1%{}"); - -var part2058 = match("MESSAGE#380:00019:06/3_2", "nwparser.p0", "local2%{}"); - -var part2059 = match("MESSAGE#380:00019:06/3_3", "nwparser.p0", "local3%{}"); - -var part2060 = match("MESSAGE#380:00019:06/3_4", "nwparser.p0", "local4%{}"); - -var part2061 = match("MESSAGE#380:00019:06/3_5", "nwparser.p0", "local5%{}"); - -var part2062 = match("MESSAGE#380:00019:06/3_6", "nwparser.p0", "local6%{}"); - -var part2063 = match("MESSAGE#380:00019:06/3_7", "nwparser.p0", "local7%{}"); - -var part2064 = match("MESSAGE#380:00019:06/3_8", "nwparser.p0", "auth/sec%{}"); - -var part2065 = match("MESSAGE#384:00019:10/0", "nwparser.payload", "%{fld2->} %{p0}"); - -var part2066 = match("MESSAGE#405:00022/0", "nwparser.payload", "All %{p0}"); - -var part2067 = match("MESSAGE#414:00022:09/1_0", "nwparser.p0", "primary %{p0}"); - -var part2068 = match("MESSAGE#414:00022:09/1_1", "nwparser.p0", "secondary %{p0}"); - -var part2069 = match("MESSAGE#414:00022:09/3_0", "nwparser.p0", "t %{p0}"); - -var part2070 = match("MESSAGE#414:00022:09/3_1", "nwparser.p0", "w %{p0}"); - -var part2071 = match("MESSAGE#423:00024/1", "nwparser.p0", "server %{p0}"); - -var part2072 = match("MESSAGE#426:00024:03/1_0", "nwparser.p0", "has %{p0}"); - -var part2073 = match("MESSAGE#434:00026:01/0", "nwparser.payload", "SCS%{p0}"); - -var part2074 = match("MESSAGE#434:00026:01/3_0", "nwparser.p0", "bound to %{p0}"); - -var part2075 = match("MESSAGE#434:00026:01/3_1", "nwparser.p0", "unbound from %{p0}"); - -var part2076 = match("MESSAGE#441:00026:08/1_1", "nwparser.p0", "PKA RSA %{p0}"); - -var part2077 = match("MESSAGE#443:00026:10/3_1", "nwparser.p0", "unbind %{p0}"); - -var part2078 = match("MESSAGE#443:00026:10/4", "nwparser.p0", "PKA key %{p0}"); - -var part2079 = match("MESSAGE#446:00027/0", "nwparser.payload", "Multiple login failures %{p0}"); - -var part2080 = match("MESSAGE#446:00027/1_0", "nwparser.p0", "occurred for %{p0}"); - -var part2081 = match("MESSAGE#451:00027:05/5_0", "nwparser.p0", "aborted%{}"); - -var part2082 = match("MESSAGE#451:00027:05/5_1", "nwparser.p0", "performed%{}"); - -var part2083 = match("MESSAGE#466:00029:03/0", "nwparser.payload", "IP pool of DHCP server on %{p0}"); - -var part2084 = match("MESSAGE#492:00030:17/1_0", "nwparser.p0", "certificate %{p0}"); - -var part2085 = match("MESSAGE#492:00030:17/1_1", "nwparser.p0", "CRL %{p0}"); - -var part2086 = match("MESSAGE#493:00030:40/1_0", "nwparser.p0", "auto %{p0}"); - -var part2087 = match("MESSAGE#508:00030:55/1_0", "nwparser.p0", "RSA %{p0}"); - -var part2088 = match("MESSAGE#508:00030:55/1_1", "nwparser.p0", "DSA %{p0}"); - -var part2089 = match("MESSAGE#508:00030:55/2", "nwparser.p0", "key pair.%{}"); - -var part2090 = match("MESSAGE#539:00030:86/0", "nwparser.payload", "FIPS test for %{p0}"); - -var part2091 = match("MESSAGE#539:00030:86/1_0", "nwparser.p0", "ECDSA %{p0}"); - -var part2092 = match("MESSAGE#543:00031:02/1_0", "nwparser.p0", "yes %{p0}"); - -var part2093 = match("MESSAGE#543:00031:02/1_1", "nwparser.p0", "no %{p0}"); - -var part2094 = match("MESSAGE#545:00031:04/1_1", "nwparser.p0", "location %{p0}"); - -var part2095 = match("MESSAGE#548:00031:05/2", "nwparser.p0", "%{} %{interface}"); - -var part2096 = match("MESSAGE#549:00031:06/0", "nwparser.payload", "arp re%{p0}"); - -var part2097 = match("MESSAGE#549:00031:06/1_1", "nwparser.p0", "q %{p0}"); - -var part2098 = match("MESSAGE#549:00031:06/1_2", "nwparser.p0", "ply %{p0}"); - -var part2099 = match("MESSAGE#549:00031:06/9_0", "nwparser.p0", "%{interface->} (%{fld1})"); - -var part2100 = match("MESSAGE#561:00033/0_0", "nwparser.payload", "Global PRO %{p0}"); - -var part2101 = match("MESSAGE#561:00033/0_1", "nwparser.payload", "%{fld3->} %{p0}"); - -var part2102 = match("MESSAGE#569:00033:08/0", "nwparser.payload", "NACN Policy Manager %{p0}"); - -var part2103 = match("MESSAGE#569:00033:08/1_0", "nwparser.p0", "1 %{p0}"); - -var part2104 = match("MESSAGE#569:00033:08/1_1", "nwparser.p0", "2 %{p0}"); - -var part2105 = match("MESSAGE#571:00033:10/3_1", "nwparser.p0", "unset %{p0}"); - -var part2106 = match("MESSAGE#581:00033:21/0", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var part2107 = match("MESSAGE#586:00034:01/2_1", "nwparser.p0", "SSH %{p0}"); - -var part2108 = match("MESSAGE#588:00034:03/0_0", "nwparser.payload", "SCS: NetScreen %{p0}"); - -var part2109 = match("MESSAGE#588:00034:03/0_1", "nwparser.payload", "NetScreen %{p0}"); - -var part2110 = match("MESSAGE#595:00034:10/0", "nwparser.payload", "S%{p0}"); - -var part2111 = match("MESSAGE#595:00034:10/1_0", "nwparser.p0", "CS: SSH%{p0}"); - -var part2112 = match("MESSAGE#595:00034:10/1_1", "nwparser.p0", "SH%{p0}"); - -var part2113 = match("MESSAGE#596:00034:12/3_0", "nwparser.p0", "the root system %{p0}"); - -var part2114 = match("MESSAGE#596:00034:12/3_1", "nwparser.p0", "vsys %{fld2->} %{p0}"); - -var part2115 = match("MESSAGE#599:00034:18/1_0", "nwparser.p0", "CS: SSH %{p0}"); - -var part2116 = match("MESSAGE#599:00034:18/1_1", "nwparser.p0", "SH %{p0}"); - -var part2117 = match("MESSAGE#630:00035:06/1_0", "nwparser.p0", "a %{p0}"); - -var part2118 = match("MESSAGE#630:00035:06/1_1", "nwparser.p0", "ert %{p0}"); - -var part2119 = match("MESSAGE#633:00035:09/0", "nwparser.payload", "SSL %{p0}"); - -var part2120 = match("MESSAGE#644:00037:01/1_0", "nwparser.p0", "id: %{p0}"); - -var part2121 = match("MESSAGE#644:00037:01/1_1", "nwparser.p0", "ID %{p0}"); - -var part2122 = match("MESSAGE#659:00044/1_0", "nwparser.p0", "permit %{p0}"); - -var part2123 = match("MESSAGE#675:00055/0", "nwparser.payload", "IGMP %{p0}"); - -var part2124 = match("MESSAGE#677:00055:02/0", "nwparser.payload", "IGMP will %{p0}"); - -var part2125 = match("MESSAGE#677:00055:02/1_0", "nwparser.p0", "not do %{p0}"); - -var part2126 = match("MESSAGE#677:00055:02/1_1", "nwparser.p0", "do %{p0}"); - -var part2127 = match("MESSAGE#689:00059/1_1", "nwparser.p0", "shut down %{p0}"); - -var part2128 = match("MESSAGE#707:00070/0", "nwparser.payload", "NSRP: %{p0}"); - -var part2129 = match("MESSAGE#707:00070/1_0", "nwparser.p0", "Unit %{p0}"); - -var part2130 = match("MESSAGE#707:00070/1_1", "nwparser.p0", "local unit= %{p0}"); - -var part2131 = match("MESSAGE#707:00070/2", "nwparser.p0", "%{fld2->} of VSD group %{group->} %{info}"); - -var part2132 = match("MESSAGE#708:00070:01/0", "nwparser.payload", "The local device %{fld2->} in the Virtual Sec%{p0}"); - -var part2133 = match("MESSAGE#708:00070:01/1_0", "nwparser.p0", "ruity%{p0}"); - -var part2134 = match("MESSAGE#708:00070:01/1_1", "nwparser.p0", "urity%{p0}"); - -var part2135 = match("MESSAGE#713:00072:01/2", "nwparser.p0", "%{}Device group %{group->} changed state"); - -var part2136 = match("MESSAGE#717:00075/2", "nwparser.p0", "%{fld2->} of VSD group %{group->} %{info}"); - -var part2137 = match("MESSAGE#748:00257:19/0", "nwparser.payload", "start_time=%{p0}"); - -var part2138 = match("MESSAGE#748:00257:19/1_0", "nwparser.p0", "\\\"%{fld2}\\\"%{p0}"); - -var part2139 = match("MESSAGE#748:00257:19/1_1", "nwparser.p0", " \"%{fld2}\" %{p0}"); - -var part2140 = match_copy("MESSAGE#756:00257:10/1_1", "nwparser.p0", "daddr"); - -var part2141 = match("MESSAGE#760:00259/0_0", "nwparser.payload", "Admin %{p0}"); - -var part2142 = match("MESSAGE#760:00259/0_1", "nwparser.payload", "Vsys admin %{p0}"); - -var part2143 = match("MESSAGE#760:00259/2_1", "nwparser.p0", "Telnet %{p0}"); - -var part2144 = match("MESSAGE#777:00406/2", "nwparser.p0", "%{interface}). Occurred %{dclass_counter1->} times."); - -var part2145 = match("MESSAGE#790:00423/2", "nwparser.p0", "%{interface}).%{space}Occurred %{dclass_counter1->} times."); - -var part2146 = match("MESSAGE#793:00430/2", "nwparser.p0", "%{interface}).%{space}Occurred %{dclass_counter1->} times.%{p0}"); - -var part2147 = match("MESSAGE#795:00431/0", "nwparser.payload", "%{obj_type->} %{disposition}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var part2148 = match("MESSAGE#797:00433/0", "nwparser.payload", "%{signame->} %{disposition}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{zone->} %{p0}"); - -var part2149 = match("MESSAGE#804:00437:01/0", "nwparser.payload", "%{signame}! From %{saddr}:%{sport->} to %{daddr}:%{dport}, proto %{protocol->} (zone %{p0}"); - -var part2150 = match("MESSAGE#817:00511:01/1_0", "nwparser.p0", "%{administrator->} (%{fld1})"); - -var part2151 = match("MESSAGE#835:00515:04/2_1", "nwparser.p0", "ut %{p0}"); - -var part2152 = match("MESSAGE#835:00515:04/4_0", "nwparser.p0", "%{logon_type->} from %{saddr}:%{sport}"); - -var part2153 = match("MESSAGE#837:00515:05/1_0", "nwparser.p0", "user %{p0}"); - -var part2154 = match("MESSAGE#837:00515:05/5_0", "nwparser.p0", "the %{logon_type}"); - -var part2155 = match("MESSAGE#869:00519:01/1_0", "nwparser.p0", "WebAuth user %{p0}"); - -var part2156 = match("MESSAGE#876:00520:02/1_1", "nwparser.p0", "backup1 %{p0}"); - -var part2157 = match("MESSAGE#876:00520:02/1_2", "nwparser.p0", "backup2 %{p0}"); - -var part2158 = match("MESSAGE#890:00524:13/1_0", "nwparser.p0", ",%{p0}"); - -var part2159 = match("MESSAGE#901:00527/1_0", "nwparser.p0", "assigned %{p0}"); - -var part2160 = match("MESSAGE#901:00527/3_0", "nwparser.p0", "assigned to %{p0}"); - -var part2161 = match("MESSAGE#927:00528:15/1_0", "nwparser.p0", "'%{administrator}' %{p0}"); - -var part2162 = match("MESSAGE#930:00528:18/0", "nwparser.payload", "SSH: P%{p0}"); - -var part2163 = match("MESSAGE#930:00528:18/1_0", "nwparser.p0", "KA %{p0}"); - -var part2164 = match("MESSAGE#930:00528:18/1_1", "nwparser.p0", "assword %{p0}"); - -var part2165 = match("MESSAGE#930:00528:18/3_0", "nwparser.p0", "\\'%{administrator}\\' %{p0}"); - -var part2166 = match("MESSAGE#930:00528:18/4", "nwparser.p0", "at host %{saddr}"); - -var part2167 = match("MESSAGE#932:00528:19/0", "nwparser.payload", "%{}S%{p0}"); - -var part2168 = match("MESSAGE#932:00528:19/1_0", "nwparser.p0", "CS %{p0}"); - -var part2169 = match("MESSAGE#1060:00553/2", "nwparser.p0", "from server.ini file.%{}"); - -var part2170 = match("MESSAGE#1064:00553:04/1_0", "nwparser.p0", "pattern %{p0}"); - -var part2171 = match("MESSAGE#1064:00553:04/1_1", "nwparser.p0", "server.ini %{p0}"); - -var part2172 = match("MESSAGE#1068:00553:08/2", "nwparser.p0", "file.%{}"); - -var part2173 = match("MESSAGE#1087:00554:04/1_1", "nwparser.p0", "AV pattern %{p0}"); - -var part2174 = match("MESSAGE#1116:00556:14/1_0", "nwparser.p0", "added into %{p0}"); - -var part2175 = match("MESSAGE#1157:00767:11/1_0", "nwparser.p0", "loader %{p0}"); - -var select436 = linear_select([ - dup10, - dup11, -]); - -var part2176 = match("MESSAGE#7:00001:07", "nwparser.payload", "Policy ID=%{policy_id->} Rate=%{fld2->} exceeds threshold", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var select437 = linear_select([ - dup13, - dup14, -]); - -var select438 = linear_select([ - dup15, - dup16, -]); - -var select439 = linear_select([ - dup56, - dup57, -]); - -var select440 = linear_select([ - dup65, - dup66, -]); - -var select441 = linear_select([ - dup68, - dup69, -]); - -var select442 = linear_select([ - dup71, - dup72, -]); - -var part2177 = match("MESSAGE#84:00005:04", "nwparser.payload", "%{signame->} from %{saddr}/%{sport->} to %{daddr}/%{dport->} protocol %{protocol->} (%{interface})", processor_chain([ - dup58, - dup2, - dup3, - dup4, - dup5, - dup61, -])); - -var select443 = linear_select([ - dup74, - dup75, -]); - -var select444 = linear_select([ - dup81, - dup82, -]); - -var select445 = linear_select([ - dup24, - dup90, -]); - -var select446 = linear_select([ - dup94, - dup95, -]); - -var select447 = linear_select([ - dup98, - dup99, -]); - -var select448 = linear_select([ - dup100, - dup101, - dup102, -]); - -var select449 = linear_select([ - dup113, - dup114, -]); - -var select450 = linear_select([ - dup111, - dup16, -]); - -var select451 = linear_select([ - dup127, - dup107, -]); - -var select452 = linear_select([ - dup8, - dup21, -]); - -var select453 = linear_select([ - dup122, - dup133, -]); - -var select454 = linear_select([ - dup142, - dup143, -]); - -var select455 = linear_select([ - dup145, - dup21, -]); - -var select456 = linear_select([ - dup127, - dup106, -]); - -var select457 = linear_select([ - dup152, - dup96, -]); - -var select458 = linear_select([ - dup154, - dup155, -]); - -var select459 = linear_select([ - dup156, - dup157, -]); - -var select460 = linear_select([ - dup99, - dup134, -]); - -var select461 = linear_select([ - dup158, - dup159, -]); - -var select462 = linear_select([ - dup161, - dup162, -]); - -var select463 = linear_select([ - dup163, - dup103, -]); - -var select464 = linear_select([ - dup162, - dup161, -]); - -var select465 = linear_select([ - dup46, - dup47, -]); - -var select466 = linear_select([ - dup166, - dup167, -]); - -var select467 = linear_select([ - dup172, - dup173, -]); - -var select468 = linear_select([ - dup174, - dup175, - dup176, - dup177, - dup178, - dup179, - dup180, - dup181, - dup182, -]); - -var select469 = linear_select([ - dup49, - dup21, -]); - -var select470 = linear_select([ - dup189, - dup190, -]); - -var select471 = linear_select([ - dup96, - dup152, -]); - -var select472 = linear_select([ - dup196, - dup197, -]); - -var select473 = linear_select([ - dup24, - dup200, -]); - -var select474 = linear_select([ - dup103, - dup163, -]); - -var select475 = linear_select([ - dup205, - dup118, -]); - -var part2178 = match("MESSAGE#477:00030:02", "nwparser.payload", "%{change_attribute->} has been changed from %{change_old->} to %{change_new}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var select476 = linear_select([ - dup212, - dup213, -]); - -var select477 = linear_select([ - dup215, - dup216, -]); - -var select478 = linear_select([ - dup222, - dup215, -]); - -var select479 = linear_select([ - dup224, - dup225, -]); - -var select480 = linear_select([ - dup231, - dup124, -]); - -var select481 = linear_select([ - dup229, - dup230, -]); - -var select482 = linear_select([ - dup233, - dup234, -]); - -var select483 = linear_select([ - dup236, - dup237, -]); - -var select484 = linear_select([ - dup242, - dup243, -]); - -var select485 = linear_select([ - dup245, - dup246, -]); - -var select486 = linear_select([ - dup247, - dup248, -]); - -var select487 = linear_select([ - dup249, - dup250, -]); - -var select488 = linear_select([ - dup251, - dup252, -]); - -var select489 = linear_select([ - dup260, - dup261, -]); - -var select490 = linear_select([ - dup264, - dup265, -]); - -var select491 = linear_select([ - dup268, - dup269, -]); - -var part2179 = match("MESSAGE#716:00074", "nwparser.payload", "The local device %{fld2->} in the Virtual Security Device group %{group->} %{info}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, -])); - -var select492 = linear_select([ - dup284, - dup285, -]); - -var select493 = linear_select([ - dup287, - dup288, -]); - -var part2180 = match("MESSAGE#799:00435", "nwparser.payload", "%{signame->} From %{saddr->} to %{daddr}, using protocol %{protocol}, and arriving at interface %{dinterface->} in zone %{dst_zone}.%{space}The attack occurred %{dclass_counter1->} times.", processor_chain([ - dup58, - dup2, - dup59, - dup4, - dup5, - dup3, - dup60, -])); - -var part2181 = match("MESSAGE#814:00442", "nwparser.payload", "%{signame->} From %{saddr->} to zone %{zone}, proto %{protocol->} (int %{interface}). Occurred %{dclass_counter1->} times. (%{fld1})", processor_chain([ - dup58, - dup4, - dup59, - dup5, - dup9, - dup2, - dup3, - dup60, -])); - -var select494 = linear_select([ - dup300, - dup26, -]); - -var select495 = linear_select([ - dup115, - dup303, -]); - -var select496 = linear_select([ - dup125, - dup96, -]); - -var select497 = linear_select([ - dup189, - dup308, - dup309, -]); - -var select498 = linear_select([ - dup310, - dup16, -]); - -var select499 = linear_select([ - dup317, - dup318, -]); - -var select500 = linear_select([ - dup319, - dup315, -]); - -var select501 = linear_select([ - dup322, - dup250, -]); - -var select502 = linear_select([ - dup327, - dup329, -]); - -var select503 = linear_select([ - dup330, - dup129, -]); - -var part2182 = match("MESSAGE#1196:01269:01", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} direction=%{direction->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup60, - dup282, -])); - -var part2183 = match("MESSAGE#1197:01269:02", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup276, - dup277, - dup60, -])); - -var part2184 = match("MESSAGE#1198:01269:03", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} proto=%{protocol->} src zone=%{src_zone->} dst zone=%{dst_zone->} action=%{disposition->} sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} icmp type=%{icmptype}", processor_chain([ - dup281, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup60, - dup282, -])); - -var part2185 = match("MESSAGE#1203:23184", "nwparser.payload", "start_time=\"%{fld2}\" duration=%{duration->} policy_id=%{policy_id->} service=%{service->} (%{fld3}) proto=%{protocol->} direction=%{direction->} action=Deny sent=%{sbytes->} rcvd=%{rbytes->} src=%{saddr->} dst=%{daddr->} src_port=%{sport->} dst_port=%{dport}", processor_chain([ - dup185, - dup2, - dup4, - dup5, - dup274, - dup3, - dup275, - dup276, - dup277, - dup61, -])); - -var all391 = all_match({ - processors: [ - dup263, - dup390, - dup266, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var all392 = all_match({ - processors: [ - dup267, - dup391, - dup270, - ], - on_success: processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - ]), -}); - -var all393 = all_match({ - processors: [ - dup80, - dup343, - dup293, - ], - on_success: processor_chain([ - dup58, - dup2, - dup59, - dup3, - dup4, - dup5, - dup61, - ]), -}); - -var all394 = all_match({ - processors: [ - dup296, - dup343, - dup131, - ], - on_success: processor_chain([ - dup297, - dup2, - dup3, - dup9, - dup59, - dup4, - dup5, - dup61, - ]), -}); - -var all395 = all_match({ - processors: [ - dup298, - dup343, - dup131, - ], - on_success: processor_chain([ - dup297, - dup2, - dup3, - dup9, - dup59, - dup4, - dup5, - dup61, - ]), -}); diff --git a/x-pack/filebeat/module/juniper/netscreen/ingest/pipeline.yml b/x-pack/filebeat/module/juniper/netscreen/ingest/pipeline.yml deleted file mode 100644 index 74d2f3cc11a..00000000000 --- a/x-pack/filebeat/module/juniper/netscreen/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Netscreen - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/juniper/netscreen/manifest.yml b/x-pack/filebeat/module/juniper/netscreen/manifest.yml deleted file mode 100644 index a6e16398dd2..00000000000 --- a/x-pack/filebeat/module/juniper/netscreen/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["juniper.netscreen", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9539 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/juniper/netscreen/test/generated.log b/x-pack/filebeat/module/juniper/netscreen/test/generated.log deleted file mode 100644 index 3d8481ffa94..00000000000 --- a/x-pack/filebeat/module/juniper/netscreen/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -modtempo: NetScreen device_id=olab system-low-00628(rci): audit log queue Event Alarm Log is overwritten (2016-1-29 06:09:59) -luptat: NetScreen device_id=isiutal [moenimi]system-low-00620(gnaali): RTSYNC: Timer to purge the DRP backup routes is stopped. (2016-2-12 13:12:33) -deomni: NetScreen device_id=tquovol [ntsuntin]system-medium-00062(tatno): Track IP IP address 10.159.227.210 succeeded. (ofdeF) -untutlab: NetScreen device_id=tem [ons]system-medium-00004: DNS lookup time has been changed to start at ationu:ali with an interval of nsect -eve: NetScreen device_id=tatiset [eprehen]system-medium-00034(piscing): Ethernet driver ran out of rx bd (port 1044) -eomnisis: NetScreen device_id=mqui [civeli]system-high-00026: SCS: SCS has been tasuntex for enp0s5377 . -rehender: NetScreen device_id=eporroqu [uat]system-high-00026(atquovo): SSH: Maximum number of PKA keys (suntinc) has been bound to user 'xeac' Key not bound. (Key ID nidolo) -intoccae: NetScreen device_id=ents [pida]system-low-00535(idolor): PKCS #7 data cannot be decapsulated -numqu: NetScreen device_id=qui [No Name]system-medium-00520: Active Server Switchover: New requests for equi server will try agnaali from now on. (2016-5-22 14:30:33) -ipitla: NetScreen device_id=quae [maccusa]system-high-00072(rQuisau): NSRP: Unit idex of VSD group xerci aqu -atu: NetScreen device_id=umexerci [ern]system-low-00084(iadese): RTSYNC: NSRP route synchronization is nsectet -dol: NetScreen device_id=leumiu [namali]system-medium-00527(atevel): MAC address 01:00:5e:11:0a:26 has detected an IP conflict and has declined address 10.90.127.74 -acc: NetScreen device_id=amc [atur]system-low-00050(corp): Track IP enabled (2016-7-18 18:40:50) -tper: NetScreen device_id=olor [Neque]system-medium-00524(xerc): SNMP request from an unknown SNMP community public at 10.61.30.190:2509 has been received. (2016-8-2 01:43:25) -etdol: NetScreen device_id=uela [boN]system-medium-00521: Can't connect to E-mail server 10.210.240.175 -ati: NetScreen device_id=tlabo [uames]system-medium-00553(mpo): SCAN-MGR: Set maximum content size to offi. -umwr: NetScreen device_id=oluptate [issus]system-high-00005(uaUteni): SYN flood udantium has been changed to pre -tate: NetScreen device_id=imvenia [spi]system-high-00038(etdo): OSPF routing instance in vrouter urerepr is ese -smo: NetScreen device_id=etcons [iusmodi]system-medium-00012: ate Service group uiac has epte member idolo from host 10.170.139.87 -ersp: NetScreen device_id=tquov [diconseq]system-high-00551(mod): Rapid Deployment cannot start because gateway has undergone configuration changes. (2016-10-26 19:58:50) -mquame: NetScreen device_id=nihilmol [xercita]system-medium-00071(tiumt): The local device reetdolo in the Virtual Security Device group norum changed state -isnisi: NetScreen device_id=ritatise [uamei]system-medium-00057(quatur): uisa: static multicast route src=10.198.41.214, grp=cusant input ifp = lo2786 output ifp = eth3657 added -isis: NetScreen device_id=uasiar [utlab]system-high-00075(loremqu): The local device dantium in the Virtual Security Device group lor velillu -bor: NetScreen device_id=rauto [ationev]system-low-00039(mdol): BGP instance name created for vr itation -iaeco: NetScreen device_id=equaturv [siu]system-high-00262(veniamqu): Admin user rum has been rejected via the quaea server at 10.11.251.51 -orroq: NetScreen device_id=vitaedic [orin]system-high-00038(ons): OSPF routing instance in vrouter remagn ecillu -enderit: NetScreen device_id=taut [tanimi]system-medium-00515(commodi): emporain Admin User "ntiumto" logged in for umetMalo(https) management (port 2206) from 10.80.237.27:2883 -ori: NetScreen device_id=tconsect [rum]system-high-00073(eporroq): NSRP: Unit ulla of VSD group iqu oin -mipsum: NetScreen device_id=lmo [aliquamq]system-medium-00030: X509 certificate for ScreenOS image authentication is invalid -orroqu: NetScreen device_id=elitsed [labore]system-medium-00034(erc): PPPoE Settings changed -ntNe: NetScreen device_id=itanim [nesciun]system-medium-00612: Switch event: the status of ethernet port mollita changed to link down , duplex full , speed 10 M. (2017-4-2 01:27:07) -quide: NetScreen device_id=quaU [undeomni]system-medium-00077(acomm): NSRP: local unit= iutali of VSD group itat stlaboru -emq: NetScreen device_id=plicaboN [amc]system-high-00536(acommo): IKE 10.10.77.119: Dropped packet because remote gateway OK is not used in any VPN tunnel configurations -scivel: NetScreen device_id=henderi [iusmodt]system-medium-00536(tquas): IKE 10.200.22.41: Received incorrect ID payload: IP address lorinr instead of IP address ercita -equu: NetScreen device_id=sintoc [atae]system-medium-00203(tem): mestq lsa flood on interface eth82 has dropped a packet. -iqui: NetScreen device_id=tesseci [tat]system-high-00011(cive): The virtual router nse has been made unsharable -rroqui: NetScreen device_id=ursin [utemvel]system-medium-00002: ADMIN AUTH: Privilege requested for unknown user atu. Possible HA syncronization problem. -orumSe: NetScreen device_id=dolor [isiut]system-high-00206(emagn): OSPF instance with router-id emulla received a Hello packet flood from neighbor (IP address 10.219.1.151, router ID mnihilm) on Interface enp0s3375 forcing the interface to drop the packet. -eque: NetScreen device_id=eufug [est]system-medium-00075: The local device ntincul in the Virtual Security Device group reet tquo -imadmini: NetScreen device_id=ide [edq]system-medium-00026(tise): SSH: Attempt to unbind PKA key from admin user 'ntut' (Key ID emullam) -ihilmole: NetScreen device_id=saquaea [ons]system-high-00048(quas): Route map entry with sequence number gia in route map binck-ospf in virtual router itatio was porinc (2017-8-22 23:52:50) -orum: NetScreen device_id=oinBCSed [orem]system-medium-00050(ilm): Track IP enabled (2017-9-6 06:55:24) -ncididun: NetScreen device_id=hen [periamea]system-medium-00555: Vrouter ali PIMSM cannot process non-multicast address 10.158.18.51 -umwri: NetScreen device_id=odoc [atura]system-high-00030: SYSTEM CPU utilization is high (oreeu > nvo ) iamqui times in tassita minute (2017-10-4 21:00:32)< -inc: NetScreen device_id=tect [uiad]system-low-00003: The console debug buffer has been roinBCSe -nseq: NetScreen device_id=borumSec [tatemseq]system-medium-00026(dmi): SCS has been tam for eth7686 . -uiineavo: NetScreen device_id=sistena [uidexeac]system-high-00620(amquisno): RTSYNC: Event posted to send all the DRP routes to backup device. (2017-11-16 18:08:15) -sunt: NetScreen device_id=dquianon [urExc]system-high-00025(iamqui): PKI: The current device quide to save the certificate authority configuration. -etdol: NetScreen device_id=Sed [oremeumf]system-high-00076: The local device etur in the Virtual Security Device group fugiatn enima -giatquo: NetScreen device_id=lors [its]system-low-00524: SNMP request from an unknown SNMP community public at 10.46.217.155:76 has been received. (2017-12-29 15:15:58) -magnaa: NetScreen device_id=sumquiad [No Name]system-high-00628: audit log queue Event Log is overwritten (2018-1-12 22:18:32) -tnulapa: NetScreen device_id=madmi [No Name]system-high-00628(adeser): audit log queue Event Log is overwritten (2018-1-27 05:21:06) -laboree: NetScreen device_id=udantiu [itametco]system-high-00556(stiaecon): UF-MGR: usBono CPA server port changed to rumexe. -nturmag: NetScreen device_id=uredol [maliqua]system-medium-00058(mquia): PIMSM protocol configured on interface eth2266 -ueporroq: NetScreen device_id=ute [No Name]system-low-00625: Session (id tationu src-ip 10.142.21.251 dst-ip 10.154.16.147 dst port 6881) route is valid. (2018-3-11 02:28:49) -adipi: NetScreen device_id=mquis [ratvo]system-low-00042(isno): Replay packet detected on IPSec tunnel on enp0s1170 with tunnel ID nderiti! From 10.105.212.51 to 10.119.53.68/1783, giatqu (2018-3-25 09:31:24) -emvel: NetScreen device_id=pta [dolo]system-medium-00057(eacommod): uamqu: static multicast route src=10.174.2.175, grp=aparia input ifp = lo6813 output ifp = enp0s90 added -giat: NetScreen device_id=ttenb [eirure]system-high-00549(rem): add-route-> untrust-vr: exer -lapari: NetScreen device_id=rcitat [cinge]system-high-00536(luptate): IKE gateway eritqu has been elites. pariat -accus: NetScreen device_id=CSed [tiu]system-low-00049(upta): The router-id of virtual router "asper" used by OSPF, BGP routing instances id has been uninitialized. (dictasun) -itanimi: NetScreen device_id=onoru [data]system-high-00064(eosqui): Can not create track-ip list -int: NetScreen device_id=ionevo [llitani]system-high-00541(itametco): The system killed OSPF neighbor because the current router could not see itself in the hello packet. Neighbor changed state from etcons to etco state, (neighbor router-id 1iuntN, ip-address 10.89.179.48). (2018-6-19 03:46:49) -mmodicon: NetScreen device_id=eetdo [mquisno]system-low-00017(lup): mipsamv From 10.57.108.5:5523 using protocol icmp on interface enp0s4987. The attack occurred 2282 times -inimve: NetScreen device_id=aea [emipsumd]system-low-00263(ptat): Admin user saq has been accepted via the asiarch server at 10.197.10.110 -tlab: NetScreen device_id=vel [ionevo]system-high-00622: NHRP : NHRP instance in virtual router ptate is created. (2018-8-1 00:54:32) -qui: NetScreen device_id=caboN [imipsam]system-high-00528(catcupid): SSH: Admin user 'ritquiin' at host 10.59.51.171 requested unsupported authentication method texplica -udexerci: NetScreen device_id=uae [imveni]system-medium-00071(ptatemse): NSRP: Unit itationu of VSD group setquas nbyCi -isno: NetScreen device_id=luptatev [occaeca]system-high-00018(urau): aeca Policy (oNem, itaedict ) was eroi from host 10.80.103.229 by admin fugitsed (2018-9-12 22:02:15) -utlabore: NetScreen device_id=edquiano [mSecti]system-high-00207(tDuisaut): RIP database size limit exceeded for uel, RIP route dropped. -agn: NetScreen device_id=iqu [quamqua]system-high-00075: NSRP: Unit equeporr of VSD group amremap oremagna -ntium: NetScreen device_id=ide [quunturm]system-low-00040(isautem): High watermark for early aging has been changed to the default usan -catcu: NetScreen device_id=quame [tionemu]system-low-00524(eursi): SNMP host 10.163.9.35 cannot be removed from community uatDu because failure -cteturad: NetScreen device_id=modi [No Name]system-low-00625(ecatcu): Session (id ntoccae src-ip 10.51.161.245 dst-ip 10.193.80.21 dst port 5657) route is valid. (2018-11-23 09:15:06) -chit: NetScreen device_id=iusmodit [lor]system-high-00524(adeserun): SNMP request has been received, but success -vento: NetScreen device_id=litsed [ciun]system-medium-00072: The local device inrepr in the Virtual Security Device group lla changed state -rissusci: NetScreen device_id=uaturQ [iusmod]system-medium-00533(mips): VIP server 10.41.222.7 is now responding -upta: NetScreen device_id=ivel [tmollita]system-low-00070(deFinib): NSRP: nsrp control channel change to lo4065 -ommodic: NetScreen device_id=mmodic [essequam]system-low-00040(nihi): VPN 'xeaco' from 10.134.20.213 is eavolupt (2019-2-2 20:27:57) -ptasnul: NetScreen device_id=utaliqui [mcorpor]system-medium-00023(ostru): VIP/load balance server 10.110.144.189 cannot be contacted -luptatem: NetScreen device_id=ing [hen]system-medium-00034(umquid): SCS: SCS has been olabo for tasnu with conse existing PKA keys already bound to ruredolo SSH users. -iat: NetScreen device_id=orain [equaturQ]system-low-00554: SCAN-MGR: Attempted to load AV pattern file created quia after the AV subscription expired. (Exp: Exce) -dese: NetScreen device_id=ptasn [liqui]system-low-00541: ScreenOS invol serial # Loremips: Asset recovery has been cidun -ole: NetScreen device_id=odi [tper]system-medium-00628(ectetur): audit log queue Event Log is overwritten (2019-4-15 07:40:49) -iadolo: NetScreen device_id=ecatcup [No Name]system-high-00628: audit log queue Traffic Log is overwritten (2019-4-29 14:43:23) -qui: NetScreen device_id=iaecon [dminima]system-high-00538(psaquaea): NACN failed to register to Policy Manager eabillo because of success -eosqu: NetScreen device_id=reetdolo [umquam]system-low-00075(enderi): The local device labore in the Virtual Security Device group uasiarch changed state from iamquisn to inoperable. (2019-5-28 04:48:31) -veleumi: NetScreen device_id=volupt [equ]system-high-00535(ure): SCEP_FAILURE message has been received from the CA -reseo: NetScreen device_id=entoreve [rudexer]system-medium-00026(iruredol): IKE iad: Missing heartbeats have exceeded the threshold. All Phase 1 and 2 SAs have been removed -ptate: NetScreen device_id=oloreeu [imipsa]system-high-00038: OSPF routing instance in vrouter uame taevitae -archi: NetScreen device_id=caboNe [ptate]system-high-00003(ius): Multiple authentication failures have been detected! -remap: NetScreen device_id=ntium [veniamqu]system-high-00529: DNS entries have been refreshed by HA -llumdo: NetScreen device_id=tot [itquii]system-high-00625(erspici): Session (id oreeu src-ip 10.126.150.15 dst-ip 10.185.50.112 dst port 7180) route is invalid. (2019-8-21 23:03:57) -quepo: NetScreen device_id=tDuisa [iscive]system-medium-00521: Can't connect to E-mail server 10.152.90.59 -lorem: NetScreen device_id=icons [hende]system-low-00077(usBonor): HA link disconnect. Begin to use second path of HA -preh: NetScreen device_id=dol [No Name]system-low-00625: Session (id gnamal src-ip 10.119.181.171 dst-ip 10.166.144.66 dst port 3051) route is invalid. (2019-10-3 20:11:40) -avolup: NetScreen device_id=litse [archit]system-high-00041(untutlab): A route-map name in virtual router estqu has been removed -eddoeiu: NetScreen device_id=consect [eetdolo]system-medium-00038(remipsum): OSPF routing instance in vrouter ons emporin -texpl: NetScreen device_id=isquames [No Name]system-low-00021: DIP port-translation stickiness was atio by utla via ntm from host 10.96.165.147 to 10.96.218.99:277 (2019-11-15 17:19:22) -elaudant: NetScreen device_id=ratvolu [odte]system-medium-00021(eum): DIP port-translation stickiness was uidol by repr via idu from host 10.201.72.59 to 10.230.29.67:7478 (2019-11-30 00:21:57) -toc: NetScreen device_id=rau [sciuntN]system-low-00602: PIMSM Error in initializing interface state change diff --git a/x-pack/filebeat/module/juniper/netscreen/test/generated.log-expected.json b/x-pack/filebeat/module/juniper/netscreen/test/generated.log-expected.json deleted file mode 100644 index 0ca48b975b4..00000000000 --- a/x-pack/filebeat/module/juniper/netscreen/test/generated.log-expected.json +++ /dev/null @@ -1,2520 +0,0 @@ -[ - { - "event.code": "00628", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "modtempo: NetScreen device_id=olab system-low-00628(rci): audit log queue Event Alarm Log is overwritten (2016-1-29 06:09:59)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 0, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00628", - "rsa.misc.hardware_id": "olab", - "rsa.misc.severity": "low", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00620", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "luptat: NetScreen device_id=isiutal [moenimi]system-low-00620(gnaali): RTSYNC: Timer to purge the DRP backup routes is stopped. (2016-2-12 13:12:33)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 126, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00620", - "rsa.misc.hardware_id": "isiutal", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "moenimi", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00062", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "deomni: NetScreen device_id=tquovol [ntsuntin]system-medium-00062(tatno): Track IP IP address 10.159.227.210 succeeded. (ofdeF)", - "fileset.name": "netscreen", - "host.ip": "10.159.227.210", - "input.type": "log", - "log.level": "medium", - "log.offset": 275, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.159.227.210" - ], - "rsa.internal.event_desc": "Track IP succeeded", - "rsa.internal.messageid": "00062", - "rsa.misc.hardware_id": "tquovol", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "ntsuntin", - "rsa.time.event_time_str": "ofdeF", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00004", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "untutlab: NetScreen device_id=tem [ons]system-medium-00004: DNS lookup time has been changed to start at ationu:ali with an interval of nsect", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 403, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00004", - "rsa.misc.hardware_id": "tem", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "ons", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00034", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "eve: NetScreen device_id=tatiset [eprehen]system-medium-00034(piscing): Ethernet driver ran out of rx bd (port 1044)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 545, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00034", - "rsa.misc.hardware_id": "tatiset", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "eprehen", - "rsa.network.network_port": 1044, - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00026", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "eomnisis: NetScreen device_id=mqui [civeli]system-high-00026: SCS: SCS has been tasuntex for enp0s5377 .", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 662, - "network.interface.name": "enp0s5377", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00026", - "rsa.misc.disposition": "tasuntex", - "rsa.misc.hardware_id": "mqui", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "civeli", - "rsa.network.interface": "enp0s5377", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00026", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "rehender: NetScreen device_id=eporroqu [uat]system-high-00026(atquovo): SSH: Maximum number of PKA keys (suntinc) has been bound to user 'xeac' Key not bound. (Key ID nidolo)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 767, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.user": [ - "xeac" - ], - "rsa.internal.messageid": "00026", - "rsa.misc.hardware_id": "eporroqu", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "uat", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "xeac" - }, - { - "event.code": "00535", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "intoccae: NetScreen device_id=ents [pida]system-low-00535(idolor): PKCS #7 data cannot be decapsulated", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 942, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00535", - "rsa.misc.hardware_id": "ents", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "pida", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00520", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "numqu: NetScreen device_id=qui [No Name]system-medium-00520: Active Server Switchover: New requests for equi server will try agnaali from now on. (2016-5-22 14:30:33)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 1045, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00520", - "rsa.misc.hardware_id": "qui", - "rsa.misc.severity": "medium", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00072", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ipitla: NetScreen device_id=quae [maccusa]system-high-00072(rQuisau): NSRP: Unit idex of VSD group xerci aqu", - "fileset.name": "netscreen", - "group.name": "xerci", - "input.type": "log", - "log.level": "high", - "log.offset": 1212, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "aqu", - "rsa.internal.messageid": "00072", - "rsa.misc.group": "xerci", - "rsa.misc.hardware_id": "quae", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "maccusa", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00084", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "atu: NetScreen device_id=umexerci [ern]system-low-00084(iadese): RTSYNC: NSRP route synchronization is nsectet", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 1321, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00084", - "rsa.misc.disposition": "nsectet", - "rsa.misc.hardware_id": "umexerci", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "ern", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00527", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "dol: NetScreen device_id=leumiu [namali]system-medium-00527(atevel): MAC address 01:00:5e:11:0a:26 has detected an IP conflict and has declined address 10.90.127.74", - "fileset.name": "netscreen", - "host.ip": "10.90.127.74", - "host.mac": "01:00:5e:11:0a:26", - "input.type": "log", - "log.level": "medium", - "log.offset": 1432, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.90.127.74" - ], - "rsa.internal.messageid": "00527", - "rsa.misc.hardware_id": "leumiu", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "namali", - "rsa.network.eth_host": "01:00:5e:11:0a:26", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00050", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "acc: NetScreen device_id=amc [atur]system-low-00050(corp): Track IP enabled (2016-7-18 18:40:50)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 1597, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00050", - "rsa.misc.hardware_id": "amc", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "atur", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00524", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "tper: NetScreen device_id=olor [Neque]system-medium-00524(xerc): SNMP request from an unknown SNMP community public at 10.61.30.190:2509 has been received. (2016-8-2 01:43:25)", - "fileset.name": "netscreen", - "host.ip": "10.61.30.190", - "input.type": "log", - "log.level": "medium", - "log.offset": 1694, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.61.30.190" - ], - "rsa.internal.messageid": "00524", - "rsa.misc.hardware_id": "olor", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "Neque", - "rsa.network.network_port": 2509, - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00521", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "etdol: NetScreen device_id=uela [boN]system-medium-00521: Can't connect to E-mail server 10.210.240.175", - "fileset.name": "netscreen", - "host.ip": "10.210.240.175", - "input.type": "log", - "log.level": "medium", - "log.offset": 1870, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.210.240.175" - ], - "rsa.internal.messageid": "00521", - "rsa.misc.hardware_id": "uela", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "boN", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00553", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ati: NetScreen device_id=tlabo [uames]system-medium-00553(mpo): SCAN-MGR: Set maximum content size to offi.", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 1974, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00553", - "rsa.misc.hardware_id": "tlabo", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "uames", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00005", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "umwr: NetScreen device_id=oluptate [issus]system-high-00005(uaUteni): SYN flood udantium has been changed to pre", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 2082, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00005", - "rsa.misc.hardware_id": "oluptate", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "issus", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00038", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "tate: NetScreen device_id=imvenia [spi]system-high-00038(etdo): OSPF routing instance in vrouter urerepr is ese", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 2195, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00038", - "rsa.misc.disposition": "ese", - "rsa.misc.hardware_id": "imvenia", - "rsa.misc.node": "urerepr", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "spi", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00012", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "smo: NetScreen device_id=etcons [iusmodi]system-medium-00012: ate Service group uiac has epte member idolo from host 10.170.139.87", - "fileset.name": "netscreen", - "group.name": "uiac", - "input.type": "log", - "log.level": "medium", - "log.offset": 2307, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.170.139.87" - ], - "related.user": [ - "idolo" - ], - "rsa.internal.messageid": "00012", - "rsa.misc.disposition": "epte", - "rsa.misc.group": "uiac", - "rsa.misc.hardware_id": "etcons", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "iusmodi", - "service.type": "juniper", - "source.ip": "10.170.139.87", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "idolo" - }, - { - "event.code": "00551", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ersp: NetScreen device_id=tquov [diconseq]system-high-00551(mod): Rapid Deployment cannot start because gateway has undergone configuration changes. (2016-10-26 19:58:50)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 2438, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00551", - "rsa.misc.hardware_id": "tquov", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "diconseq", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00071", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "mquame: NetScreen device_id=nihilmol [xercita]system-medium-00071(tiumt): The local device reetdolo in the Virtual Security Device group norum changed state", - "fileset.name": "netscreen", - "group.name": "norum", - "input.type": "log", - "log.level": "medium", - "log.offset": 2609, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00071", - "rsa.misc.group": "norum", - "rsa.misc.hardware_id": "nihilmol", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "xercita", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00057", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "isnisi: NetScreen device_id=ritatise [uamei]system-medium-00057(quatur): uisa: static multicast route src=10.198.41.214, grp=cusant input ifp = lo2786 output ifp = eth3657 added", - "fileset.name": "netscreen", - "group.name": "cusant", - "input.type": "log", - "log.level": "medium", - "log.offset": 2766, - "observer.egress.interface.name": "eth3657", - "observer.ingress.interface.name": "lo2786", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.198.41.214" - ], - "rsa.internal.messageid": "00057", - "rsa.misc.group": "cusant", - "rsa.misc.hardware_id": "ritatise", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "uamei", - "rsa.network.dinterface": "eth3657", - "rsa.network.sinterface": "lo2786", - "service.type": "juniper", - "source.ip": "10.198.41.214", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00075", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "isis: NetScreen device_id=uasiar [utlab]system-high-00075(loremqu): The local device dantium in the Virtual Security Device group lor velillu", - "fileset.name": "netscreen", - "group.name": "lor", - "input.type": "log", - "log.level": "high", - "log.offset": 2944, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "velillu", - "rsa.internal.messageid": "00075", - "rsa.misc.group": "lor", - "rsa.misc.hardware_id": "uasiar", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "utlab", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00039", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "bor: NetScreen device_id=rauto [ationev]system-low-00039(mdol): BGP instance name created for vr itation", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 3086, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00039", - "rsa.misc.hardware_id": "rauto", - "rsa.misc.node": "itation", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "ationev", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00262", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "iaeco: NetScreen device_id=equaturv [siu]system-high-00262(veniamqu): Admin user rum has been rejected via the quaea server at 10.11.251.51", - "fileset.name": "netscreen", - "host.ip": "10.11.251.51", - "input.type": "log", - "log.level": "high", - "log.offset": 3191, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.11.251.51" - ], - "related.user": [ - "rum" - ], - "rsa.identity.logon_type": "quaea", - "rsa.internal.messageid": "00262", - "rsa.misc.hardware_id": "equaturv", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "siu", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "rum" - }, - { - "event.code": "00038", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "orroq: NetScreen device_id=vitaedic [orin]system-high-00038(ons): OSPF routing instance in vrouter remagn ecillu", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 3331, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00038", - "rsa.misc.disposition": "ecillu", - "rsa.misc.hardware_id": "vitaedic", - "rsa.misc.node": "remagn", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "orin", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00515", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "enderit: NetScreen device_id=taut [tanimi]system-medium-00515(commodi): emporain Admin User \"ntiumto\" logged in for umetMalo(https) management (port 2206) from 10.80.237.27:2883", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 3444, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.80.237.27" - ], - "related.user": [ - "ntiumto" - ], - "rsa.identity.logon_type": "umetMalo", - "rsa.internal.messageid": "00515", - "rsa.misc.hardware_id": "taut", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "tanimi", - "rsa.network.network_port": 2206, - "service.type": "juniper", - "source.ip": "10.80.237.27", - "source.port": 2883, - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "ntiumto" - }, - { - "event.code": "00073", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ori: NetScreen device_id=tconsect [rum]system-high-00073(eporroq): NSRP: Unit ulla of VSD group iqu oin", - "fileset.name": "netscreen", - "group.name": "iqu", - "input.type": "log", - "log.level": "high", - "log.offset": 3622, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "oin", - "rsa.internal.messageid": "00073", - "rsa.misc.group": "iqu", - "rsa.misc.hardware_id": "tconsect", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "rum", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00030", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "mipsum: NetScreen device_id=lmo [aliquamq]system-medium-00030: X509 certificate for ScreenOS image authentication is invalid", - "event.outcome": "unknown", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 3726, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00030", - "rsa.investigations.ec_outcome": "Error", - "rsa.investigations.ec_subject": "Certificate", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.hardware_id": "lmo", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "aliquamq", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00034", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "orroqu: NetScreen device_id=elitsed [labore]system-medium-00034(erc): PPPoE Settings changed", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 3851, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00034", - "rsa.misc.hardware_id": "elitsed", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "labore", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00612", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ntNe: NetScreen device_id=itanim [nesciun]system-medium-00612: Switch event: the status of ethernet port mollita changed to link down , duplex full , speed 10 M. (2017-4-2 01:27:07)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 3944, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00612", - "rsa.misc.hardware_id": "itanim", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "nesciun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00077", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "quide: NetScreen device_id=quaU [undeomni]system-medium-00077(acomm): NSRP: local unit= iutali of VSD group itat stlaboru", - "fileset.name": "netscreen", - "group.name": "itat", - "input.type": "log", - "log.level": "medium", - "log.offset": 4126, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "stlaboru", - "rsa.internal.messageid": "00077", - "rsa.misc.group": "itat", - "rsa.misc.hardware_id": "quaU", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "undeomni", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00536", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "emq: NetScreen device_id=plicaboN [amc]system-high-00536(acommo): IKE 10.10.77.119: Dropped packet because remote gateway OK is not used in any VPN tunnel configurations", - "fileset.name": "netscreen", - "host.ip": "10.10.77.119", - "input.type": "log", - "log.level": "high", - "log.offset": 4248, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.10.77.119" - ], - "rsa.internal.messageid": "00536", - "rsa.misc.hardware_id": "plicaboN", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "amc", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00536", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "scivel: NetScreen device_id=henderi [iusmodt]system-medium-00536(tquas): IKE 10.200.22.41: Received incorrect ID payload: IP address lorinr instead of IP address ercita", - "fileset.name": "netscreen", - "host.ip": "10.200.22.41", - "input.type": "log", - "log.level": "medium", - "log.offset": 4418, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.200.22.41" - ], - "rsa.internal.messageid": "00536", - "rsa.misc.hardware_id": "henderi", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "iusmodt", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00203", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "equu: NetScreen device_id=sintoc [atae]system-medium-00203(tem): mestq lsa flood on interface eth82 has dropped a packet.", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 4587, - "network.interface.name": "eth82", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00203", - "rsa.misc.hardware_id": "sintoc", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "atae", - "rsa.network.interface": "eth82", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00011", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "iqui: NetScreen device_id=tesseci [tat]system-high-00011(cive): The virtual router nse has been made unsharable", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 4709, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00011", - "rsa.misc.hardware_id": "tesseci", - "rsa.misc.node": "nse", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "tat", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00002", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "rroqui: NetScreen device_id=ursin [utemvel]system-medium-00002: ADMIN AUTH: Privilege requested for unknown user atu. Possible HA syncronization problem.", - "event.outcome": "unknown", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 4821, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.user": [ - "atu" - ], - "rsa.internal.messageid": "00002", - "rsa.investigations.ec_outcome": "Error", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.hardware_id": "ursin", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "utemvel", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "atu" - }, - { - "event.code": "00206", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "orumSe: NetScreen device_id=dolor [isiut]system-high-00206(emagn): OSPF instance with router-id emulla received a Hello packet flood from neighbor (IP address 10.219.1.151, router ID mnihilm) on Interface enp0s3375 forcing the interface to drop the packet.", - "fileset.name": "netscreen", - "host.ip": "10.219.1.151", - "input.type": "log", - "log.level": "high", - "log.offset": 4975, - "network.interface.name": "enp0s3375", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.219.1.151" - ], - "rsa.internal.messageid": "00206", - "rsa.misc.hardware_id": "dolor", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "isiut", - "rsa.network.interface": "enp0s3375", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00075", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "eque: NetScreen device_id=eufug [est]system-medium-00075: The local device ntincul in the Virtual Security Device group reet tquo", - "fileset.name": "netscreen", - "group.name": "reet", - "input.type": "log", - "log.level": "medium", - "log.offset": 5232, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "tquo", - "rsa.internal.messageid": "00075", - "rsa.misc.group": "reet", - "rsa.misc.hardware_id": "eufug", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "est", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00026", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "imadmini: NetScreen device_id=ide [edq]system-medium-00026(tise): SSH: Attempt to unbind PKA key from admin user 'ntut' (Key ID emullam)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 5362, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.user": [ - "ntut" - ], - "rsa.internal.messageid": "00026", - "rsa.misc.hardware_id": "ide", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "edq", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "ntut" - }, - { - "event.code": "00048", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ihilmole: NetScreen device_id=saquaea [ons]system-high-00048(quas): Route map entry with sequence number gia in route map binck-ospf in virtual router itatio was porinc (2017-8-22 23:52:50)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 5499, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00048", - "rsa.misc.disposition": "porinc", - "rsa.misc.hardware_id": "saquaea", - "rsa.misc.node": "itatio", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "ons", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00050", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "orum: NetScreen device_id=oinBCSed [orem]system-medium-00050(ilm): Track IP enabled (2017-9-6 06:55:24)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 5689, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00050", - "rsa.misc.hardware_id": "oinBCSed", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "orem", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00555", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ncididun: NetScreen device_id=hen [periamea]system-medium-00555: Vrouter ali PIMSM cannot process non-multicast address 10.158.18.51", - "fileset.name": "netscreen", - "host.ip": "10.158.18.51", - "input.type": "log", - "log.level": "medium", - "log.offset": 5793, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.158.18.51" - ], - "rsa.internal.messageid": "00555", - "rsa.misc.hardware_id": "hen", - "rsa.misc.node": "ali", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "periamea", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00030", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "umwri: NetScreen device_id=odoc [atura]system-high-00030: SYSTEM CPU utilization is high (oreeu > nvo ) iamqui times in tassita minute (2017-10-4 21:00:32)<", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 5926, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00030", - "rsa.misc.hardware_id": "odoc", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "atura", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00003", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "inc: NetScreen device_id=tect [uiad]system-low-00003: The console debug buffer has been roinBCSe", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 6093, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00003", - "rsa.misc.disposition": "roinBCSe", - "rsa.misc.hardware_id": "tect", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "uiad", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00026", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "nseq: NetScreen device_id=borumSec [tatemseq]system-medium-00026(dmi): SCS has been tam for eth7686 .", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 6190, - "network.interface.name": "eth7686", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00026", - "rsa.misc.disposition": "tam", - "rsa.misc.hardware_id": "borumSec", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "tatemseq", - "rsa.network.interface": "eth7686", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00620", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "uiineavo: NetScreen device_id=sistena [uidexeac]system-high-00620(amquisno): RTSYNC: Event posted to send all the DRP routes to backup device. (2017-11-16 18:08:15)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 6292, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00620", - "rsa.misc.hardware_id": "sistena", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "uidexeac", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00025", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "sunt: NetScreen device_id=dquianon [urExc]system-high-00025(iamqui): PKI: The current device quide to save the certificate authority configuration.", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 6457, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00025", - "rsa.misc.disposition": "quide", - "rsa.misc.hardware_id": "dquianon", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "urExc", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00076", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "etdol: NetScreen device_id=Sed [oremeumf]system-high-00076: The local device etur in the Virtual Security Device group fugiatn enima", - "fileset.name": "netscreen", - "group.name": "fugiatn", - "input.type": "log", - "log.level": "high", - "log.offset": 6605, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "enima", - "rsa.internal.messageid": "00076", - "rsa.misc.group": "fugiatn", - "rsa.misc.hardware_id": "Sed", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "oremeumf", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00524", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "giatquo: NetScreen device_id=lors [its]system-low-00524: SNMP request from an unknown SNMP community public at 10.46.217.155:76 has been received. (2017-12-29 15:15:58)", - "fileset.name": "netscreen", - "host.ip": "10.46.217.155", - "input.type": "log", - "log.level": "low", - "log.offset": 6738, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.46.217.155" - ], - "rsa.internal.messageid": "00524", - "rsa.misc.hardware_id": "lors", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "its", - "rsa.network.network_port": 76, - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00628", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "magnaa: NetScreen device_id=sumquiad [No Name]system-high-00628: audit log queue Event Log is overwritten (2018-1-12 22:18:32)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 6907, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00628", - "rsa.misc.hardware_id": "sumquiad", - "rsa.misc.severity": "high", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00628", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "tnulapa: NetScreen device_id=madmi [No Name]system-high-00628(adeser): audit log queue Event Log is overwritten (2018-1-27 05:21:06)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 7034, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00628", - "rsa.misc.hardware_id": "madmi", - "rsa.misc.severity": "high", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00556", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "laboree: NetScreen device_id=udantiu [itametco]system-high-00556(stiaecon): UF-MGR: usBono CPA server port changed to rumexe.", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 7167, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00556", - "rsa.misc.hardware_id": "udantiu", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "itametco", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00058", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "nturmag: NetScreen device_id=uredol [maliqua]system-medium-00058(mquia): PIMSM protocol configured on interface eth2266", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 7293, - "network.interface.name": "eth2266", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00058", - "rsa.misc.hardware_id": "uredol", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "maliqua", - "rsa.network.interface": "eth2266", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "destination.ip": "10.154.16.147", - "destination.port": 6881, - "event.code": "00625", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ueporroq: NetScreen device_id=ute [No Name]system-low-00625: Session (id tationu src-ip 10.142.21.251 dst-ip 10.154.16.147 dst port 6881) route is valid. (2018-3-11 02:28:49)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 7413, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.142.21.251", - "10.154.16.147" - ], - "rsa.internal.messageid": "00625", - "rsa.misc.hardware_id": "ute", - "rsa.misc.log_session_id": "tationu", - "rsa.misc.severity": "low", - "service.type": "juniper", - "source.ip": "10.142.21.251", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "destination.ip": "10.119.53.68", - "destination.port": 1783, - "event.code": "00042", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "adipi: NetScreen device_id=mquis [ratvo]system-low-00042(isno): Replay packet detected on IPSec tunnel on enp0s1170 with tunnel ID nderiti! From 10.105.212.51 to 10.119.53.68/1783, giatqu (2018-3-25 09:31:24)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 7588, - "network.interface.name": "enp0s1170", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.105.212.51", - "10.119.53.68" - ], - "rsa.db.index": "giatqu", - "rsa.internal.messageid": "00042", - "rsa.misc.hardware_id": "mquis", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "ratvo", - "rsa.network.interface": "enp0s1170", - "service.type": "juniper", - "source.ip": "10.105.212.51", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00057", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "emvel: NetScreen device_id=pta [dolo]system-medium-00057(eacommod): uamqu: static multicast route src=10.174.2.175, grp=aparia input ifp = lo6813 output ifp = enp0s90 added", - "fileset.name": "netscreen", - "group.name": "aparia", - "input.type": "log", - "log.level": "medium", - "log.offset": 7797, - "observer.egress.interface.name": "enp0s90", - "observer.ingress.interface.name": "lo6813", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.174.2.175" - ], - "rsa.internal.messageid": "00057", - "rsa.misc.group": "aparia", - "rsa.misc.hardware_id": "pta", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "dolo", - "rsa.network.dinterface": "enp0s90", - "rsa.network.sinterface": "lo6813", - "service.type": "juniper", - "source.ip": "10.174.2.175", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00549", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "giat: NetScreen device_id=ttenb [eirure]system-high-00549(rem): add-route-> untrust-vr: exer", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 7970, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00549", - "rsa.misc.hardware_id": "ttenb", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "eirure", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00536", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "lapari: NetScreen device_id=rcitat [cinge]system-high-00536(luptate): IKE gateway eritqu has been elites. pariat", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 8063, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "pariat", - "rsa.internal.messageid": "00536", - "rsa.misc.disposition": "elites", - "rsa.misc.hardware_id": "rcitat", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "cinge", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00049", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "accus: NetScreen device_id=CSed [tiu]system-low-00049(upta): The router-id of virtual router \"asper\" used by OSPF, BGP routing instances id has been uninitialized. (dictasun)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 8176, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00049", - "rsa.misc.hardware_id": "CSed", - "rsa.misc.node": "asper", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "tiu", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00064", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "itanimi: NetScreen device_id=onoru [data]system-high-00064(eosqui): Can not create track-ip list", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 8351, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00064", - "rsa.misc.hardware_id": "onoru", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "data", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00541", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "int: NetScreen device_id=ionevo [llitani]system-high-00541(itametco): The system killed OSPF neighbor because the current router could not see itself in the hello packet. Neighbor changed state from etcons to etco state, (neighbor router-id 1iuntN, ip-address 10.89.179.48). (2018-6-19 03:46:49)", - "fileset.name": "netscreen", - "host.ip": "10.89.179.48", - "input.type": "log", - "log.level": "high", - "log.offset": 8448, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.89.179.48" - ], - "rsa.internal.messageid": "00541", - "rsa.misc.change_new": "etco", - "rsa.misc.change_old": "etcons", - "rsa.misc.hardware_id": "ionevo", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "llitani", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00017", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "mmodicon: NetScreen device_id=eetdo [mquisno]system-low-00017(lup): mipsamv From 10.57.108.5:5523 using protocol icmp on interface enp0s4987. The attack occurred 2282 times", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 8744, - "network.interface.name": "enp0s4987", - "network.protocol": "icmp", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.57.108.5" - ], - "rsa.counters.dclass_c1": 2282, - "rsa.counters.dclass_c1_str": "Number of times the attack occurred", - "rsa.internal.messageid": "00017", - "rsa.misc.hardware_id": "eetdo", - "rsa.misc.policy_name": "mipsamv", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "mquisno", - "rsa.network.interface": "enp0s4987", - "service.type": "juniper", - "source.ip": "10.57.108.5", - "source.port": 5523, - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00263", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "inimve: NetScreen device_id=aea [emipsumd]system-low-00263(ptat): Admin user saq has been accepted via the asiarch server at 10.197.10.110", - "fileset.name": "netscreen", - "host.ip": "10.197.10.110", - "input.type": "log", - "log.level": "low", - "log.offset": 8917, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.197.10.110" - ], - "related.user": [ - "saq" - ], - "rsa.identity.logon_type": "asiarch", - "rsa.internal.messageid": "00263", - "rsa.misc.hardware_id": "aea", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "emipsumd", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "saq" - }, - { - "event.code": "00622", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "tlab: NetScreen device_id=vel [ionevo]system-high-00622: NHRP : NHRP instance in virtual router ptate is created. (2018-8-1 00:54:32)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 9056, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00622", - "rsa.misc.hardware_id": "vel", - "rsa.misc.node": "ptate", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "ionevo", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00528", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "qui: NetScreen device_id=caboN [imipsam]system-high-00528(catcupid): SSH: Admin user 'ritquiin' at host 10.59.51.171 requested unsupported authentication method texplica", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 9190, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.59.51.171" - ], - "related.user": [ - "ritquiin" - ], - "rsa.internal.messageid": "00528", - "rsa.misc.hardware_id": "caboN", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "imipsam", - "service.type": "juniper", - "source.ip": "10.59.51.171", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "ritquiin" - }, - { - "event.code": "00071", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "udexerci: NetScreen device_id=uae [imveni]system-medium-00071(ptatemse): NSRP: Unit itationu of VSD group setquas nbyCi", - "fileset.name": "netscreen", - "group.name": "setquas", - "input.type": "log", - "log.level": "medium", - "log.offset": 9360, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "nbyCi", - "rsa.internal.messageid": "00071", - "rsa.misc.group": "setquas", - "rsa.misc.hardware_id": "uae", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "imveni", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00018", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "isno: NetScreen device_id=luptatev [occaeca]system-high-00018(urau): aeca Policy (oNem, itaedict ) was eroi from host 10.80.103.229 by admin fugitsed (2018-9-12 22:02:15)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 9480, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.80.103.229" - ], - "related.user": [ - "fugitsed" - ], - "rsa.db.index": "itaedict", - "rsa.internal.messageid": "00018", - "rsa.misc.disposition": "eroi", - "rsa.misc.hardware_id": "luptatev", - "rsa.misc.policy_id": "oNem", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "occaeca", - "service.type": "juniper", - "source.ip": "10.80.103.229", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "fugitsed" - }, - { - "event.code": "00207", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "utlabore: NetScreen device_id=edquiano [mSecti]system-high-00207(tDuisaut): RIP database size limit exceeded for uel, RIP route dropped.", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 9651, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00207", - "rsa.misc.hardware_id": "edquiano", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "mSecti", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00075", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "agn: NetScreen device_id=iqu [quamqua]system-high-00075: NSRP: Unit equeporr of VSD group amremap oremagna", - "fileset.name": "netscreen", - "group.name": "amremap", - "input.type": "log", - "log.level": "high", - "log.offset": 9788, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.db.index": "oremagna", - "rsa.internal.messageid": "00075", - "rsa.misc.group": "amremap", - "rsa.misc.hardware_id": "iqu", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "quamqua", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00040", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ntium: NetScreen device_id=ide [quunturm]system-low-00040(isautem): High watermark for early aging has been changed to the default usan", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 9895, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00040", - "rsa.misc.hardware_id": "ide", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "quunturm", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00524", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "catcu: NetScreen device_id=quame [tionemu]system-low-00524(eursi): SNMP host 10.163.9.35 cannot be removed from community uatDu because failure", - "fileset.name": "netscreen", - "host.ip": "10.163.9.35", - "input.type": "log", - "log.level": "low", - "log.offset": 10031, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.163.9.35" - ], - "rsa.internal.messageid": "00524", - "rsa.misc.hardware_id": "quame", - "rsa.misc.result": "failure", - "rsa.misc.severity": "low", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "destination.ip": "10.193.80.21", - "destination.port": 5657, - "event.code": "00625", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "cteturad: NetScreen device_id=modi [No Name]system-low-00625(ecatcu): Session (id ntoccae src-ip 10.51.161.245 dst-ip 10.193.80.21 dst port 5657) route is valid. (2018-11-23 09:15:06)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 10175, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.193.80.21", - "10.51.161.245" - ], - "rsa.internal.messageid": "00625", - "rsa.misc.hardware_id": "modi", - "rsa.misc.log_session_id": "ntoccae", - "rsa.misc.severity": "low", - "service.type": "juniper", - "source.ip": "10.51.161.245", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00524", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "chit: NetScreen device_id=iusmodit [lor]system-high-00524(adeserun): SNMP request has been received, but success", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 10359, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00524", - "rsa.misc.hardware_id": "iusmodit", - "rsa.misc.result": "success", - "rsa.misc.severity": "high", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00072", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "vento: NetScreen device_id=litsed [ciun]system-medium-00072: The local device inrepr in the Virtual Security Device group lla changed state", - "fileset.name": "netscreen", - "group.name": "lla", - "input.type": "log", - "log.level": "medium", - "log.offset": 10472, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00072", - "rsa.misc.group": "lla", - "rsa.misc.hardware_id": "litsed", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "ciun", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00533", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "rissusci: NetScreen device_id=uaturQ [iusmod]system-medium-00533(mips): VIP server 10.41.222.7 is now responding", - "fileset.name": "netscreen", - "host.ip": "10.41.222.7", - "input.type": "log", - "log.level": "medium", - "log.offset": 10612, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.41.222.7" - ], - "rsa.internal.messageid": "00533", - "rsa.misc.hardware_id": "uaturQ", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "iusmod", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00070", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "upta: NetScreen device_id=ivel [tmollita]system-low-00070(deFinib): NSRP: nsrp control channel change to lo4065", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 10725, - "network.interface.name": "lo4065", - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00070", - "rsa.misc.hardware_id": "ivel", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "tmollita", - "rsa.network.interface": "lo4065", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "destination.ip": "10.134.20.213", - "event.code": "00040", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ommodic: NetScreen device_id=mmodic [essequam]system-low-00040(nihi): VPN 'xeaco' from 10.134.20.213 is eavolupt (2019-2-2 20:27:57)", - "fileset.name": "netscreen", - "group.name": "xeaco", - "input.type": "log", - "log.level": "low", - "log.offset": 10837, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.134.20.213" - ], - "rsa.internal.messageid": "00040", - "rsa.misc.disposition": "eavolupt", - "rsa.misc.group": "xeaco", - "rsa.misc.hardware_id": "mmodic", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "essequam", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00023", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ptasnul: NetScreen device_id=utaliqui [mcorpor]system-medium-00023(ostru): VIP/load balance server 10.110.144.189 cannot be contacted", - "fileset.name": "netscreen", - "host.ip": "10.110.144.189", - "input.type": "log", - "log.level": "medium", - "log.offset": 10970, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.110.144.189" - ], - "rsa.internal.messageid": "00023", - "rsa.misc.hardware_id": "utaliqui", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "mcorpor", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00034", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "luptatem: NetScreen device_id=ing [hen]system-medium-00034(umquid): SCS: SCS has been olabo for tasnu with conse existing PKA keys already bound to ruredolo SSH users.", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 11104, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.user": [ - "tasnu" - ], - "rsa.internal.messageid": "00034", - "rsa.misc.disposition": "olabo", - "rsa.misc.hardware_id": "ing", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "hen", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "tasnu" - }, - { - "event.code": "00554", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "iat: NetScreen device_id=orain [equaturQ]system-low-00554: SCAN-MGR: Attempted to load AV pattern file created quia after the AV subscription expired. (Exp: Exce)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 11272, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00554", - "rsa.misc.hardware_id": "orain", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "equaturQ", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00541", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "dese: NetScreen device_id=ptasn [liqui]system-low-00541: ScreenOS invol serial # Loremips: Asset recovery has been cidun", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 11435, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00541", - "rsa.misc.disposition": "cidun", - "rsa.misc.hardware_id": "ptasn", - "rsa.misc.serial_number": "Loremips", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "liqui", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00628", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ole: NetScreen device_id=odi [tper]system-medium-00628(ectetur): audit log queue Event Log is overwritten (2019-4-15 07:40:49)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 11556, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00628", - "rsa.misc.hardware_id": "odi", - "rsa.misc.severity": "medium", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00628", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "iadolo: NetScreen device_id=ecatcup [No Name]system-high-00628: audit log queue Traffic Log is overwritten (2019-4-29 14:43:23)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 11683, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00628", - "rsa.misc.hardware_id": "ecatcup", - "rsa.misc.severity": "high", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00538", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "qui: NetScreen device_id=iaecon [dminima]system-high-00538(psaquaea): NACN failed to register to Policy Manager eabillo because of success", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 11811, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00538", - "rsa.misc.hardware_id": "iaecon", - "rsa.misc.result": "success", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "dminima", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00075", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "eosqu: NetScreen device_id=reetdolo [umquam]system-low-00075(enderi): The local device labore in the Virtual Security Device group uasiarch changed state from iamquisn to inoperable. (2019-5-28 04:48:31)", - "fileset.name": "netscreen", - "group.name": "uasiarch", - "input.type": "log", - "log.level": "low", - "log.offset": 11950, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.event_desc": "local device in the Virtual Security Device group changed state to inoperable", - "rsa.internal.messageid": "00075", - "rsa.misc.event_state": "iamquisn", - "rsa.misc.group": "uasiarch", - "rsa.misc.hardware_id": "reetdolo", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "umquam", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00535", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "veleumi: NetScreen device_id=volupt [equ]system-high-00535(ure): SCEP_FAILURE message has been received from the CA", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 12154, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00535", - "rsa.misc.hardware_id": "volupt", - "rsa.misc.result": "SCEP_FAILURE message", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "equ", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00026", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "reseo: NetScreen device_id=entoreve [rudexer]system-medium-00026(iruredol): IKE iad: Missing heartbeats have exceeded the threshold. All Phase 1 and 2 SAs have been removed", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 12270, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00026", - "rsa.misc.hardware_id": "entoreve", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "rudexer", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00038", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "ptate: NetScreen device_id=oloreeu [imipsa]system-high-00038: OSPF routing instance in vrouter uame taevitae", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 12443, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00038", - "rsa.misc.disposition": "taevitae", - "rsa.misc.hardware_id": "oloreeu", - "rsa.misc.node": "uame", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "imipsa", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00003", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "archi: NetScreen device_id=caboNe [ptate]system-high-00003(ius): Multiple authentication failures have been detected!", - "event.outcome": "failure", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 12552, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00003", - "rsa.investigations.ec_outcome": "Failure", - "rsa.investigations.ec_theme": "Authentication", - "rsa.misc.hardware_id": "caboNe", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "ptate", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00529", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "remap: NetScreen device_id=ntium [veniamqu]system-high-00529: DNS entries have been refreshed by HA", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 12670, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00529", - "rsa.misc.hardware_id": "ntium", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "veniamqu", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "destination.ip": "10.185.50.112", - "destination.port": 7180, - "event.code": "00625", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "llumdo: NetScreen device_id=tot [itquii]system-high-00625(erspici): Session (id oreeu src-ip 10.126.150.15 dst-ip 10.185.50.112 dst port 7180) route is invalid. (2019-8-21 23:03:57)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 12770, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.126.150.15", - "10.185.50.112" - ], - "rsa.internal.messageid": "00625", - "rsa.misc.hardware_id": "tot", - "rsa.misc.log_session_id": "oreeu", - "rsa.misc.severity": "high", - "service.type": "juniper", - "source.ip": "10.126.150.15", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00521", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "quepo: NetScreen device_id=tDuisa [iscive]system-medium-00521: Can't connect to E-mail server 10.152.90.59", - "fileset.name": "netscreen", - "host.ip": "10.152.90.59", - "input.type": "log", - "log.level": "medium", - "log.offset": 12952, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.152.90.59" - ], - "rsa.internal.messageid": "00521", - "rsa.misc.hardware_id": "tDuisa", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "iscive", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00077", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "lorem: NetScreen device_id=icons [hende]system-low-00077(usBonor): HA link disconnect. Begin to use second path of HA", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 13059, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00077", - "rsa.misc.hardware_id": "icons", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "hende", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "destination.ip": "10.166.144.66", - "destination.port": 3051, - "event.code": "00625", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "preh: NetScreen device_id=dol [No Name]system-low-00625: Session (id gnamal src-ip 10.119.181.171 dst-ip 10.166.144.66 dst port 3051) route is invalid. (2019-10-3 20:11:40)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 13177, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.119.181.171", - "10.166.144.66" - ], - "rsa.internal.messageid": "00625", - "rsa.misc.hardware_id": "dol", - "rsa.misc.log_session_id": "gnamal", - "rsa.misc.severity": "low", - "service.type": "juniper", - "source.ip": "10.119.181.171", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00041", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "avolup: NetScreen device_id=litse [archit]system-high-00041(untutlab): A route-map name in virtual router estqu has been removed", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "high", - "log.offset": 13350, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00041", - "rsa.misc.hardware_id": "litse", - "rsa.misc.node": "estqu", - "rsa.misc.severity": "high", - "rsa.misc.vsys": "archit", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "event.code": "00038", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "eddoeiu: NetScreen device_id=consect [eetdolo]system-medium-00038(remipsum): OSPF routing instance in vrouter ons emporin", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 13479, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00038", - "rsa.misc.disposition": "emporin", - "rsa.misc.hardware_id": "consect", - "rsa.misc.node": "ons", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "eetdolo", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - }, - { - "destination.ip": "10.96.218.99", - "destination.port": 277, - "event.code": "00021", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "texpl: NetScreen device_id=isquames [No Name]system-low-00021: DIP port-translation stickiness was atio by utla via ntm from host 10.96.165.147 to 10.96.218.99:277 (2019-11-15 17:19:22)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 13601, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.96.165.147", - "10.96.218.99" - ], - "related.user": [ - "utla" - ], - "rsa.db.index": "DIP port-translation stickiness was modified", - "rsa.identity.logon_type": "ntm", - "rsa.internal.messageid": "00021", - "rsa.misc.disposition": "atio", - "rsa.misc.hardware_id": "isquames", - "rsa.misc.severity": "low", - "service.type": "juniper", - "source.ip": "10.96.165.147", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "utla" - }, - { - "destination.ip": "10.230.29.67", - "destination.port": 7478, - "event.code": "00021", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "elaudant: NetScreen device_id=ratvolu [odte]system-medium-00021(eum): DIP port-translation stickiness was uidol by repr via idu from host 10.201.72.59 to 10.230.29.67:7478 (2019-11-30 00:21:57)", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "medium", - "log.offset": 13787, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "related.ip": [ - "10.201.72.59", - "10.230.29.67" - ], - "related.user": [ - "repr" - ], - "rsa.db.index": "DIP port-translation stickiness was modified", - "rsa.identity.logon_type": "idu", - "rsa.internal.messageid": "00021", - "rsa.misc.disposition": "uidol", - "rsa.misc.hardware_id": "ratvolu", - "rsa.misc.severity": "medium", - "service.type": "juniper", - "source.ip": "10.201.72.59", - "tags": [ - "forwarded", - "juniper.netscreen" - ], - "user.name": "repr" - }, - { - "event.code": "00602", - "event.dataset": "juniper.netscreen", - "event.module": "juniper", - "event.original": "toc: NetScreen device_id=rau [sciuntN]system-low-00602: PIMSM Error in initializing interface state change", - "fileset.name": "netscreen", - "input.type": "log", - "log.level": "low", - "log.offset": 13981, - "observer.product": "Netscreen", - "observer.type": "Firewall", - "observer.vendor": "Juniper", - "rsa.internal.messageid": "00602", - "rsa.misc.hardware_id": "rau", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "sciuntN", - "service.type": "juniper", - "tags": [ - "forwarded", - "juniper.netscreen" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/microsoft/_meta/config.yml b/x-pack/filebeat/module/microsoft/_meta/config.yml index 96b1f3db1db..f041d63920c 100644 --- a/x-pack/filebeat/module/microsoft/_meta/config.yml +++ b/x-pack/filebeat/module/microsoft/_meta/config.yml @@ -26,25 +26,7 @@ # Oauth Token URL, should include the tenant ID #var.oauth2.token_url: "https://login.microsoftonline.com/TENANT-ID/oauth2/v2.0/token" - + # Related scopes, default should be included #var.oauth2.scopes: # - "https://api.security.microsoft.com/.default" - dhcp: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9515 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/microsoft/_meta/docs.asciidoc b/x-pack/filebeat/module/microsoft/_meta/docs.asciidoc index 048354d95a8..49b4c9e4cb1 100644 --- a/x-pack/filebeat/module/microsoft/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/microsoft/_meta/docs.asciidoc @@ -17,7 +17,6 @@ This is a module for ingesting data from the different Microsoft Products. Curre - `defender_atp` fileset: Supports Microsoft Defender for Endpoint (Microsoft Defender ATP) - `m365_defender` fileset: Supports Microsoft 365 Defender (Microsoft Threat Protection) -- `dhcp` fileset: Supports Microsoft DHCP logs include::../include/what-happens.asciidoc[] @@ -212,52 +211,6 @@ image::./images/siem-events-cs.jpg[] [float] And for all other Defender ATP event types, go to Host -> Events. -:fileset_ex: dhcp - -[float] -==== `dhcp` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/microsoft_dhcp[Microsoft DHCP] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "msdhcp" device revision 99. - -include::../include/var-paths.asciidoc[] - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9515` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. :has-dashboards!: diff --git a/x-pack/filebeat/module/microsoft/dhcp/_meta/fields.yml b/x-pack/filebeat/module/microsoft/dhcp/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/microsoft/dhcp/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/microsoft/dhcp/config/input.yml b/x-pack/filebeat/module/microsoft/dhcp/config/input.yml deleted file mode 100644 index 1c7ee86cc9d..00000000000 --- a/x-pack/filebeat/module/microsoft/dhcp/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Microsoft" - product: "DHCP" - type: "Application" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/microsoft/dhcp/config/liblogparser.js - - ${path.home}/module/microsoft/dhcp/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/microsoft/dhcp/config/liblogparser.js b/x-pack/filebeat/module/microsoft/dhcp/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/microsoft/dhcp/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i> for migration options."] - -experimental[] - -This is a module for receiving Arbor Peakflow SP logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: sightline - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `sightline` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "arborpeakflowsp" device revision 109. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9502` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/netscout/_meta/fields.yml b/x-pack/filebeat/module/netscout/_meta/fields.yml deleted file mode 100644 index 19fcd1463f8..00000000000 --- a/x-pack/filebeat/module/netscout/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: netscout - title: Arbor Peakflow SP - description: > - netscout fields. - fields: diff --git a/x-pack/filebeat/module/netscout/fields.go b/x-pack/filebeat/module/netscout/fields.go deleted file mode 100644 index 0a75eba568d..00000000000 --- a/x-pack/filebeat/module/netscout/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package netscout - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "netscout", asset.ModuleFieldsPri, AssetNetscout); err != nil { - panic(err) - } -} - -// AssetNetscout returns asset data. -// This is the base64 encoded zlib format compressed contents of module/netscout. -func AssetNetscout() string { - return "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" -} diff --git a/x-pack/filebeat/module/netscout/sightline/_meta/fields.yml b/x-pack/filebeat/module/netscout/sightline/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/netscout/sightline/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/netscout/sightline/config/input.yml b/x-pack/filebeat/module/netscout/sightline/config/input.yml deleted file mode 100644 index 677a2b3462e..00000000000 --- a/x-pack/filebeat/module/netscout/sightline/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Netscout" - product: "Arbor" - type: "DDOS" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/netscout/sightline/config/liblogparser.js - - ${path.home}/module/netscout/sightline/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/netscout/sightline/config/liblogparser.js b/x-pack/filebeat/module/netscout/sightline/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/netscout/sightline/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{msgIdPart2->} %{p0}"); - -var dup11 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(" "), - field("p0"), - ], -}); - -var dup12 = setc("eventcategory","1801010000"); - -var dup13 = setf("msg","$MSG"); - -var dup14 = date_time({ - dest: "starttime", - args: ["fld15","fld16","fld17","fld18","fld19","fld20"], - fmts: [ - [dW,dM,dD,dH,dT,dS], - ], -}); - -var dup15 = setc("eventcategory","1801020000"); - -var dup16 = date_time({ - dest: "endtime", - args: ["fld15","fld16","fld17","fld18","fld19","fld20"], - fmts: [ - [dW,dM,dD,dH,dT,dS], - ], -}); - -var dup17 = setc("eventcategory","1607000000"); - -var dup18 = setc("eventcategory","1605000000"); - -var dup19 = setc("eventcategory","1701000000"); - -var dup20 = setc("eventcategory","1603010000"); - -var dup21 = match("MESSAGE#19:mitigation:TMS_Start/1_0", "nwparser.p0", "%{fld21}, %{p0}"); - -var dup22 = match("MESSAGE#19:mitigation:TMS_Start/1_1", "nwparser.p0", ", %{p0}"); - -var dup23 = match("MESSAGE#19:mitigation:TMS_Start/2", "nwparser.p0", "leader %{parent_node}"); - -var dup24 = setc("eventcategory","1502020000"); - -var dup25 = setc("event_type","TMS mitigation"); - -var dup26 = setc("disposition","ongoing"); - -var dup27 = setc("disposition","done"); - -var dup28 = setc("event_type","Third party mitigation"); - -var dup29 = setc("event_type","Blackhole mitigation"); - -var dup30 = setc("event_type","Flowspec mitigation"); - -var dup31 = match("MESSAGE#39:anomaly:Resource_Info:01/1_0", "nwparser.p0", "%{fld21->} duration %{p0}"); - -var dup32 = match("MESSAGE#39:anomaly:Resource_Info:01/1_1", "nwparser.p0", "duration %{p0}"); - -var dup33 = match("MESSAGE#39:anomaly:Resource_Info:01/2", "nwparser.p0", "%{duration->} percent %{fld3->} rate %{fld4->} rateUnit %{fld5->} protocol %{protocol->} flags %{fld6->} url %{url}, %{info}"); - -var dup34 = setc("eventcategory","1002000000"); - -var dup35 = setc("signame","Bandwidth"); - -var dup36 = date_time({ - dest: "starttime", - args: ["fld15","fld16","fld17","fld18","fld19","fld20"], - fmts: [ - [dW,dM,dD,dN,dU,dO], - ], -}); - -var dup37 = match("MESSAGE#40:anomaly:Resource_Info:02/2", "nwparser.p0", "%{duration->} percent %{fld3->} rate %{fld4->} rateUnit %{fld5->} protocol %{protocol->} flags %{fld6->} url %{url}"); - -var dup38 = date_time({ - dest: "starttime", - args: ["fld2","fld3"], - fmts: [ - [dW,dc("-"),dM,dc("-"),dF,dZ], - ], -}); - -var dup39 = match("HEADER#0:0001/0", "message", "%{hmonth->} %{hday->} %{htime->} %{hdata}: %{p0}", processor_chain([ - dup1, -])); - -var dup40 = linear_select([ - dup2, - dup3, -]); - -var dup41 = linear_select([ - dup6, - dup7, - dup8, - dup9, -]); - -var dup42 = match("MESSAGE#2:BGP:Down", "nwparser.payload", "%{protocol->} down for router %{node}, leader %{parent_node->} since %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup12, - dup13, - dup14, -])); - -var dup43 = match("MESSAGE#3:BGP:Restored", "nwparser.payload", "%{protocol->} restored for router %{node}, leader %{parent_node->} at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup15, - dup13, - dup16, -])); - -var dup44 = linear_select([ - dup21, - dup22, -]); - -var dup45 = linear_select([ - dup31, - dup32, -]); - -var part1 = match("HEADER#0:0001/1_0", "nwparser.p0", "TMS %{p0}"); - -var part2 = match("HEADER#0:0001/1_1", "nwparser.p0", "Third party %{p0}"); - -var part3 = match("HEADER#0:0001/1_2", "nwparser.p0", "Blackhole %{p0}"); - -var part4 = match("HEADER#0:0001/1_3", "nwparser.p0", "Flowspec %{p0}"); - -var select1 = linear_select([ - part1, - part2, - part3, - part4, -]); - -var part5 = match("HEADER#0:0001/2", "nwparser.p0", "%{} %{messageid->} %{p0}"); - -var all1 = all_match({ - processors: [ - dup39, - select1, - part5, - ], - on_success: processor_chain([ - setc("header_id","0001"), - ]), -}); - -var part6 = match("HEADER#1:0002/2", "nwparser.p0", "%{}interface %{msgIdPart1->} %{msgIdPart2->} %{p0}"); - -var all2 = all_match({ - processors: [ - dup39, - dup40, - part6, - ], - on_success: processor_chain([ - setc("header_id","0002"), - dup4, - ]), -}); - -var part7 = match("HEADER#2:0008/4", "nwparser.p0", "%{} %{msgIdPart1->} %{hfld1->} for service %{p0}"); - -var all3 = all_match({ - processors: [ - dup39, - dup40, - dup5, - dup41, - part7, - ], - on_success: processor_chain([ - setc("header_id","0008"), - call({ - dest: "nwparser.messageid", - fn: STRCAT, - args: [ - constant("usage_"), - field("msgIdPart1"), - ], - }), - ]), -}); - -var all4 = all_match({ - processors: [ - dup39, - dup40, - dup5, - dup41, - dup10, - ], - on_success: processor_chain([ - setc("header_id","0003"), - dup4, - ]), -}); - -var part8 = match("HEADER#4:0004/1_2", "nwparser.p0", "High %{p0}"); - -var select2 = linear_select([ - dup2, - dup3, - part8, -]); - -var all5 = all_match({ - processors: [ - dup39, - select2, - dup10, - ], - on_success: processor_chain([ - setc("header_id","0004"), - dup4, - ]), -}); - -var hdr1 = match("HEADER#5:0005", "message", "%{hmonth->} %{hday->} %{htime->} pfsp: The %{messageid->} %{p0}", processor_chain([ - setc("header_id","0005"), - dup11, -])); - -var hdr2 = match("HEADER#6:0006", "message", "%{hmonth->} %{hday->} %{htime->} pfsp: Alert %{messageid->} %{p0}", processor_chain([ - setc("header_id","0006"), - dup11, -])); - -var hdr3 = match("HEADER#7:0007", "message", "%{hmonth->} %{hday->} %{htime->} pfsp: %{messageid->} %{p0}", processor_chain([ - setc("header_id","0007"), - dup11, -])); - -var hdr4 = match("HEADER#8:0010", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1}: %{msgIdPart1->} %{msgIdPart2}: %{payload}", processor_chain([ - setc("header_id","0010"), - dup4, -])); - -var hdr5 = match("HEADER#9:0009", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1}: %{messageid}: %{payload}", processor_chain([ - setc("header_id","0009"), -])); - -var select3 = linear_select([ - all1, - all2, - all3, - all4, - all5, - hdr1, - hdr2, - hdr3, - hdr4, - hdr5, -]); - -var part9 = match("MESSAGE#0:Flow:Down", "nwparser.payload", "Flow down for router %{node}, leader %{parent_node->} since %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup12, - dup13, - dup14, -])); - -var msg1 = msg("Flow:Down", part9); - -var part10 = match("MESSAGE#1:Flow:Restored", "nwparser.payload", "Flow restored for router %{node}, leader %{parent_node->} at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup15, - dup13, - dup16, -])); - -var msg2 = msg("Flow:Restored", part10); - -var select4 = linear_select([ - msg1, - msg2, -]); - -var msg3 = msg("BGP:Down", dup42); - -var msg4 = msg("BGP:Restored", dup43); - -var part11 = match("MESSAGE#4:BGP:Instability", "nwparser.payload", "%{protocol->} instability router %{node->} threshold %{fld25->} (%{fld1}) observed %{trigger_val->} (%{fld2})", processor_chain([ - dup17, - dup13, -])); - -var msg5 = msg("BGP:Instability", part11); - -var part12 = match("MESSAGE#5:BGP:Instability_Ended", "nwparser.payload", "%{protocol->} Instability for router %{node->} ended", processor_chain([ - dup18, - dup13, -])); - -var msg6 = msg("BGP:Instability_Ended", part12); - -var part13 = match("MESSAGE#6:BGP:Hijack", "nwparser.payload", "%{protocol->} Hijack local_prefix %{fld26->} router %{node->} bgp_prefix %{fld27->} bgp_attributes %{event_description}", processor_chain([ - setc("eventcategory","1002050000"), - dup13, -])); - -var msg7 = msg("BGP:Hijack", part13); - -var part14 = match("MESSAGE#7:BGP:Hijack_Done", "nwparser.payload", "%{protocol->} Hijack for prefix %{fld26->} router %{node->} done", processor_chain([ - dup18, - dup13, -])); - -var msg8 = msg("BGP:Hijack_Done", part14); - -var part15 = match("MESSAGE#8:BGP:Trap", "nwparser.payload", "%{protocol->} Trap %{node}: Prefix %{fld5->} %{fld6->} %{event_description}", processor_chain([ - dup19, - dup13, -])); - -var msg9 = msg("BGP:Trap", part15); - -var select5 = linear_select([ - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, -]); - -var part16 = match("MESSAGE#9:Device:Unreachable", "nwparser.payload", "Device %{node->} unreachable by controller %{parent_node->} since %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20}", processor_chain([ - dup12, - dup13, - dup14, -])); - -var msg10 = msg("Device:Unreachable", part16); - -var part17 = match("MESSAGE#10:Device:Reachable", "nwparser.payload", "Device %{node->} reachable again by controller %{parent_node->} at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup15, - dup13, - dup16, -])); - -var msg11 = msg("Device:Reachable", part17); - -var select6 = linear_select([ - msg10, - msg11, -]); - -var part18 = match("MESSAGE#11:Hardware:Failure", "nwparser.payload", "Hardware failure on %{node->} since %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} GMT: %{event_description}", processor_chain([ - dup20, - dup13, - dup14, -])); - -var msg12 = msg("Hardware:Failure", part18); - -var part19 = match("MESSAGE#12:Hardware:Failure_Done", "nwparser.payload", "Hardware failure on %{node->} done at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21->} GMT: %{event_description}", processor_chain([ - dup18, - dup13, - dup16, -])); - -var msg13 = msg("Hardware:Failure_Done", part19); - -var select7 = linear_select([ - msg12, - msg13, -]); - -var msg14 = msg("SNMP:Down", dup42); - -var msg15 = msg("SNMP:Restored", dup43); - -var select8 = linear_select([ - msg14, - msg15, -]); - -var part20 = match("MESSAGE#15:configuration", "nwparser.payload", "configuration was changed on leader %{parent_node->} to version %{version->} by %{administrator}", processor_chain([ - dup19, - dup13, - setc("event_description","Configuration changed"), -])); - -var msg16 = msg("configuration", part20); - -var part21 = match("MESSAGE#16:Autoclassification", "nwparser.payload", "Autoclassification was restarted on %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21->} by %{administrator}", processor_chain([ - dup19, - dup13, - setc("event_description","Autoclassification restarted"), - dup14, -])); - -var msg17 = msg("Autoclassification", part21); - -var part22 = match("MESSAGE#17:GRE:Down", "nwparser.payload", "GRE tunnel down for destination %{daddr}, leader %{parent_node->} since %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup12, - dup13, - dup14, -])); - -var msg18 = msg("GRE:Down", part22); - -var part23 = match("MESSAGE#18:GRE:Restored", "nwparser.payload", "GRE tunnel restored for destination %{daddr}, leader %{parent_node->} at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - setc("eventcategory","1801020100"), - dup13, - dup16, -])); - -var msg19 = msg("GRE:Restored", part23); - -var select9 = linear_select([ - msg18, - msg19, -]); - -var part24 = match("MESSAGE#19:mitigation:TMS_Start/0", "nwparser.payload", "pfsp: TMS mitigation %{policyname->} started at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all6 = all_match({ - processors: [ - part24, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup25, - dup26, - dup14, - ]), -}); - -var msg20 = msg("mitigation:TMS_Start", all6); - -var part25 = match("MESSAGE#20:mitigation:TMS_Stop/0", "nwparser.payload", "pfsp: TMS mitigation %{policyname->} stopped at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all7 = all_match({ - processors: [ - part25, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup25, - dup27, - dup16, - ]), -}); - -var msg21 = msg("mitigation:TMS_Stop", all7); - -var part26 = match("MESSAGE#21:mitigation:Thirdparty_Start/0", "nwparser.payload", "pfsp: Third party mitigation %{node->} started at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all8 = all_match({ - processors: [ - part26, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup28, - dup26, - dup14, - ]), -}); - -var msg22 = msg("mitigation:Thirdparty_Start", all8); - -var part27 = match("MESSAGE#22:mitigation:Thirdparty_Stop/0", "nwparser.payload", "pfsp: Third party mitigation %{node->} stopped at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all9 = all_match({ - processors: [ - part27, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup28, - dup27, - ]), -}); - -var msg23 = msg("mitigation:Thirdparty_Stop", all9); - -var part28 = match("MESSAGE#23:mitigation:Blackhole_Start/0", "nwparser.payload", "pfsp: Blackhole mitigation %{node->} started at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all10 = all_match({ - processors: [ - part28, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup29, - dup26, - dup14, - ]), -}); - -var msg24 = msg("mitigation:Blackhole_Start", all10); - -var part29 = match("MESSAGE#24:mitigation:Blackhole_Stop/0", "nwparser.payload", "pfsp: Blackhole mitigation %{node->} stopped at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all11 = all_match({ - processors: [ - part29, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup29, - dup27, - ]), -}); - -var msg25 = msg("mitigation:Blackhole_Stop", all11); - -var part30 = match("MESSAGE#25:mitigation:Flowspec_Start/0", "nwparser.payload", "pfsp: Flowspec mitigation %{node->} started at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all12 = all_match({ - processors: [ - part30, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup30, - dup26, - dup14, - ]), -}); - -var msg26 = msg("mitigation:Flowspec_Start", all12); - -var part31 = match("MESSAGE#26:mitigation:Flowspec_Stop/0", "nwparser.payload", "pfsp: Flowspec mitigation %{node->} stopped at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all13 = all_match({ - processors: [ - part31, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - dup30, - dup27, - ]), -}); - -var msg27 = msg("mitigation:Flowspec_Stop", all13); - -var select10 = linear_select([ - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, - msg26, - msg27, -]); - -var part32 = match("MESSAGE#27:TMS:Fault_Cleared", "nwparser.payload", "TMS '%{event_description}' fault for resource '%{resource}' on TMS %{node->} cleared", processor_chain([ - dup18, - dup13, - setc("event_type","Fault Cleared"), -])); - -var msg28 = msg("TMS:Fault_Cleared", part32); - -var part33 = match("MESSAGE#28:TMS:Fault", "nwparser.payload", "TMS '%{event_description}' fault for resource '%{resource}' on TMS %{node}", processor_chain([ - dup20, - dup13, - setc("event_type","Fault Occured"), -])); - -var msg29 = msg("TMS:Fault", part33); - -var select11 = linear_select([ - msg28, - msg29, -]); - -var part34 = match("MESSAGE#29:usage_alert:Interface", "nwparser.payload", "pfsp: %{trigger_desc->} interface usage alert %{fld1->} for router %{node->} interface \"%{interface}\" speed %{fld2->} threshold %{fld25->} observed %{trigger_val->} pct %{fld3}", processor_chain([ - dup17, - dup13, -])); - -var msg30 = msg("usage_alert:Interface", part34); - -var part35 = match("MESSAGE#30:usage_alert:Interface_Done", "nwparser.payload", "pfsp: %{trigger_desc->} interface usage alert %{fld1->} done for router %{node->} interface \"%{interface}\"", processor_chain([ - dup18, - dup13, -])); - -var msg31 = msg("usage_alert:Interface_Done", part35); - -var part36 = match("MESSAGE#31:usage_alert:Fingerprint_Threshold", "nwparser.payload", "pfsp: %{trigger_desc->} usage alert %{fld1->} for fingerprint %{policyname->} threshold %{fld25->} observed %{trigger_val}", processor_chain([ - dup17, - dup13, -])); - -var msg32 = msg("usage_alert:Fingerprint_Threshold", part36); - -var part37 = match("MESSAGE#32:usage_alert:Fingerprint_Threshold_Done", "nwparser.payload", "pfsp: %{trigger_desc->} usage alert %{fld1->} for fingerprint %{policyname->} done", processor_chain([ - dup18, - dup13, -])); - -var msg33 = msg("usage_alert:Fingerprint_Threshold_Done", part37); - -var part38 = match("MESSAGE#33:usage_alert:Service_Threshold", "nwparser.payload", "pfsp: %{trigger_desc->} %{fld1->} usage alert %{fld2->} for service %{service}, %{application->} threshold %{fld25->} observed %{trigger_val}", processor_chain([ - dup17, - dup13, -])); - -var msg34 = msg("usage_alert:Service_Threshold", part38); - -var part39 = match("MESSAGE#34:usage_alert:Service_Threshold_Done", "nwparser.payload", "pfsp: %{trigger_desc->} %{fld1->} alert %{fld2->} for service %{service->} done", processor_chain([ - dup18, - dup13, -])); - -var msg35 = msg("usage_alert:Service_Threshold_Done", part39); - -var part40 = match("MESSAGE#35:usage_alert:ManagedObject_Threshold", "nwparser.payload", "pfsp: %{trigger_desc->} usage alert %{fld1->} for %{category->} %{fld2->} threshold %{fld25->} observed %{trigger_val}", processor_chain([ - dup17, - dup13, -])); - -var msg36 = msg("usage_alert:ManagedObject_Threshold", part40); - -var part41 = match("MESSAGE#36:usage_alert:ManagedObject_Threshold_Done", "nwparser.payload", "pfsp: %{trigger_desc->} usage alert %{fld1->} for %{fld3->} %{fld4->} done", processor_chain([ - dup18, - dup13, -])); - -var msg37 = msg("usage_alert:ManagedObject_Threshold_Done", part41); - -var select12 = linear_select([ - msg30, - msg31, - msg32, - msg33, - msg34, - msg35, - msg36, - msg37, -]); - -var part42 = match("MESSAGE#37:Test", "nwparser.payload", "Test syslog message%{}", processor_chain([ - dup18, - dup13, -])); - -var msg38 = msg("Test", part42); - -var part43 = match("MESSAGE#38:script/0", "nwparser.payload", "script %{node->} ran at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all14 = all_match({ - processors: [ - part43, - dup44, - dup23, - ], - on_success: processor_chain([ - dup24, - dup13, - setc("event_type","Script mitigation"), - dup26, - dup14, - ]), -}); - -var msg39 = msg("script", all14); - -var part44 = match("MESSAGE#39:anomaly:Resource_Info:01/0", "nwparser.payload", "anomaly Bandwidth id %{event_id->} status %{disposition->} severity %{severity->} classification %{category->} impact %{fld10->} src %{daddr}/%{dport->} %{fld1->} dst %{saddr}/%{sport->} %{fld2->} start %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all15 = all_match({ - processors: [ - part44, - dup45, - dup33, - ], - on_success: processor_chain([ - dup34, - dup13, - dup35, - dup36, - ]), -}); - -var msg40 = msg("anomaly:Resource_Info:01", all15); - -var part45 = match("MESSAGE#40:anomaly:Resource_Info:02/0", "nwparser.payload", "anomaly Bandwidth id %{event_id->} status %{disposition->} severity %{severity->} classification %{category->} src %{daddr}/%{dport->} %{fld1->} dst %{saddr}/%{sport->} %{fld2->} start %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all16 = all_match({ - processors: [ - part45, - dup45, - dup37, - ], - on_success: processor_chain([ - dup34, - dup13, - dup35, - dup36, - ]), -}); - -var msg41 = msg("anomaly:Resource_Info:02", all16); - -var part46 = match("MESSAGE#41:anomaly:Resource_Info:03/0", "nwparser.payload", "anomaly %{signame->} id %{event_id->} status %{disposition->} severity %{severity->} classification %{category->} impact %{fld10->} src %{daddr}/%{dport->} %{fld1->} dst %{saddr}/%{sport->} %{fld2->} start %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all17 = all_match({ - processors: [ - part46, - dup45, - dup33, - ], - on_success: processor_chain([ - dup34, - dup13, - dup36, - ]), -}); - -var msg42 = msg("anomaly:Resource_Info:03", all17); - -var part47 = match("MESSAGE#42:anomaly:Resource_Info:04/0", "nwparser.payload", "anomaly %{signame->} id %{event_id->} status %{disposition->} severity %{severity->} classification %{category->} src %{daddr}/%{dport->} %{fld1->} dst %{saddr}/%{sport->} %{fld2->} start %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{p0}"); - -var all18 = all_match({ - processors: [ - part47, - dup45, - dup37, - ], - on_success: processor_chain([ - dup34, - dup13, - dup36, - ]), -}); - -var msg43 = msg("anomaly:Resource_Info:04", all18); - -var part48 = match("MESSAGE#43:anomaly:Router_Info:01", "nwparser.payload", "anomaly Bandwidth id %{sigid->} status %{disposition->} severity %{severity->} classification %{category->} router %{fld6->} router_name %{node->} interface %{fld4->} interface_name \"%{interface}\" %{fld5}", processor_chain([ - dup34, - dup13, - dup35, -])); - -var msg44 = msg("anomaly:Router_Info:01", part48); - -var part49 = match("MESSAGE#44:anomaly:Router_Info:02", "nwparser.payload", "anomaly %{signame->} id %{sigid->} status %{disposition->} severity %{severity->} classification %{category->} router %{fld6->} router_name %{node->} interface %{fld4->} interface_name \"%{interface}\" %{fld5}", processor_chain([ - dup34, - dup13, -])); - -var msg45 = msg("anomaly:Router_Info:02", part49); - -var select13 = linear_select([ - msg40, - msg41, - msg42, - msg43, - msg44, - msg45, -]); - -var part50 = match("MESSAGE#45:Peakflow:Unreachable", "nwparser.payload", "Peakflow device %{node->} unreachable by %{parent_node->} since %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20}", processor_chain([ - dup12, - dup13, - dup14, -])); - -var msg46 = msg("Peakflow:Unreachable", part50); - -var part51 = match("MESSAGE#46:Peakflow:Reachable", "nwparser.payload", "Peakflow device %{node->} reachable again by %{parent_node->} at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup15, - dup13, - dup16, -])); - -var msg47 = msg("Peakflow:Reachable", part51); - -var select14 = linear_select([ - msg46, - msg47, -]); - -var part52 = match("MESSAGE#47:Host:Detection", "nwparser.payload", "Host Detection alert %{fld1}, start %{fld2->} %{fld3->} %{fld4}, duration %{duration}, stop %{fld5->} %{fld6->} %{fld7}, , importance %{severity}, managed_objects (%{fld8}), is now %{result}, (parent managed object %{fld9})", processor_chain([ - dup18, - dup13, - dup38, - date_time({ - dest: "endtime", - args: ["fld5","fld6"], - fmts: [ - [dW,dc("-"),dM,dc("-"),dF,dZ], - ], - }), -])); - -var msg48 = msg("Host:Detection", part52); - -var part53 = match("MESSAGE#48:Host:Detection:01", "nwparser.payload", "Host Detection alert %{fld1}, start %{fld2->} %{fld3->} %{fld4}, duration %{duration}, direction %{direction}, host %{saddr}, signatures (%{signame}), impact %{fld5}, importance %{severity}, managed_objects (%{fld6}), (parent managed object %{fld7})", processor_chain([ - dup18, - dup13, - dup38, -])); - -var msg49 = msg("Host:Detection:01", part53); - -var select15 = linear_select([ - msg48, - msg49, -]); - -var part54 = match("MESSAGE#49:Infrastructure", "nwparser.payload", "AIF license expiring cleared,URL: %{url}", processor_chain([ - dup18, - dup13, - setc("event_description","AIF license expiring cleared"), -])); - -var msg50 = msg("Infrastructure", part54); - -var part55 = match("MESSAGE#50:Infrastructure:02", "nwparser.payload", "Hardware sensor detected a critical state. System Fan%{fld1}:%{fld2}Triggering value:%{fld3},URL:%{url}", processor_chain([ - dup18, - dup13, - setc("event_description","Hardware sensor detected a critical state"), -])); - -var msg51 = msg("Infrastructure:02", part55); - -var part56 = match("MESSAGE#51:Infrastructure:01", "nwparser.payload", "AIF license expired cleared,URL: %{url}", processor_chain([ - dup18, - dup13, - setc("event_description","AIF license expired cleared"), -])); - -var msg52 = msg("Infrastructure:01", part56); - -var select16 = linear_select([ - msg50, - msg51, - msg52, -]); - -var part57 = match("MESSAGE#52:Blocked_Host", "nwparser.payload", "Blocked host%{saddr}at%{fld1}by Blocked Countries using%{protocol}destination%{daddr},URL:%{url}", processor_chain([ - setc("eventcategory","1803000000"), - dup13, -])); - -var msg53 = msg("Blocked_Host", part57); - -var part58 = match("MESSAGE#53:Change_Log", "nwparser.payload", "Username:%{username}, Subsystem:%{fld1}, Setting Type:%{fld2}, Message:%{fld3}", processor_chain([ - dup18, - dup13, -])); - -var msg54 = msg("Change_Log", part58); - -var part59 = match("MESSAGE#54:Protection_Mode", "nwparser.payload", "Changed protection mode to active for protection group%{group},URL:%{url}", processor_chain([ - dup18, - dup13, - setc("event_description","Changed protection mode to active for protection group"), -])); - -var msg55 = msg("Protection_Mode", part59); - -var chain1 = processor_chain([ - select3, - msgid_select({ - "Autoclassification": msg17, - "BGP": select5, - "Blocked_Host": msg53, - "Change_Log": msg54, - "Device": select6, - "Flow": select4, - "GRE": select9, - "Hardware": select7, - "Host": select15, - "Infrastructure": select16, - "Peakflow": select14, - "Protection_Mode": msg55, - "SNMP": select8, - "TMS": select11, - "Test": msg38, - "anomaly": select13, - "configuration": msg16, - "mitigation": select10, - "script": msg39, - "usage_alert": select12, - }), -]); - -var part60 = match("HEADER#1:0002/1_0", "nwparser.p0", "high %{p0}"); - -var part61 = match("HEADER#1:0002/1_1", "nwparser.p0", "low %{p0}"); - -var part62 = match("HEADER#2:0008/2", "nwparser.p0", "%{} %{p0}"); - -var part63 = match("HEADER#2:0008/3_0", "nwparser.p0", "jitter %{p0}"); - -var part64 = match("HEADER#2:0008/3_1", "nwparser.p0", "loss %{p0}"); - -var part65 = match("HEADER#2:0008/3_2", "nwparser.p0", "bps %{p0}"); - -var part66 = match("HEADER#2:0008/3_3", "nwparser.p0", "pps %{p0}"); - -var part67 = match("HEADER#3:0003/4", "nwparser.p0", "%{} %{msgIdPart1->} %{msgIdPart2->} %{p0}"); - -var part68 = match("MESSAGE#19:mitigation:TMS_Start/1_0", "nwparser.p0", "%{fld21}, %{p0}"); - -var part69 = match("MESSAGE#19:mitigation:TMS_Start/1_1", "nwparser.p0", ", %{p0}"); - -var part70 = match("MESSAGE#19:mitigation:TMS_Start/2", "nwparser.p0", "leader %{parent_node}"); - -var part71 = match("MESSAGE#39:anomaly:Resource_Info:01/1_0", "nwparser.p0", "%{fld21->} duration %{p0}"); - -var part72 = match("MESSAGE#39:anomaly:Resource_Info:01/1_1", "nwparser.p0", "duration %{p0}"); - -var part73 = match("MESSAGE#39:anomaly:Resource_Info:01/2", "nwparser.p0", "%{duration->} percent %{fld3->} rate %{fld4->} rateUnit %{fld5->} protocol %{protocol->} flags %{fld6->} url %{url}, %{info}"); - -var part74 = match("MESSAGE#40:anomaly:Resource_Info:02/2", "nwparser.p0", "%{duration->} percent %{fld3->} rate %{fld4->} rateUnit %{fld5->} protocol %{protocol->} flags %{fld6->} url %{url}"); - -var hdr6 = match("HEADER#0:0001/0", "message", "%{hmonth->} %{hday->} %{htime->} %{hdata}: %{p0}", processor_chain([ - dup1, -])); - -var select17 = linear_select([ - dup2, - dup3, -]); - -var select18 = linear_select([ - dup6, - dup7, - dup8, - dup9, -]); - -var part75 = match("MESSAGE#2:BGP:Down", "nwparser.payload", "%{protocol->} down for router %{node}, leader %{parent_node->} since %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup12, - dup13, - dup14, -])); - -var part76 = match("MESSAGE#3:BGP:Restored", "nwparser.payload", "%{protocol->} restored for router %{node}, leader %{parent_node->} at %{fld15}-%{fld16}-%{fld17->} %{fld18}:%{fld19}:%{fld20->} %{fld21}", processor_chain([ - dup15, - dup13, - dup16, -])); - -var select19 = linear_select([ - dup21, - dup22, -]); - -var select20 = linear_select([ - dup31, - dup32, -]); diff --git a/x-pack/filebeat/module/netscout/sightline/ingest/pipeline.yml b/x-pack/filebeat/module/netscout/sightline/ingest/pipeline.yml deleted file mode 100644 index 22f32138c27..00000000000 --- a/x-pack/filebeat/module/netscout/sightline/ingest/pipeline.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -description: Pipeline for Arbor Peakflow SP - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/netscout/sightline/manifest.yml b/x-pack/filebeat/module/netscout/sightline/manifest.yml deleted file mode 100644 index e10cef66bf8..00000000000 --- a/x-pack/filebeat/module/netscout/sightline/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["netscout.sightline", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9524 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/netscout/sightline/test/generated.log b/x-pack/filebeat/module/netscout/sightline/test/generated.log deleted file mode 100644 index bd8d089c540..00000000000 --- a/x-pack/filebeat/module/netscout/sightline/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -January 29 06:09:59 pfsp: The configuration was changed on leader olab to version 1.6078 by rci -February 12 13:12:33 pfsp: Alert Autoclassification was restarted on 2016-02-12 13:12:33 uredolor by tatemac -February 26 20:15:08 ntsunti: Change Log: Username:nseq, Subsystem:itinvol, Setting Type:psa, Message:umq -March 12 03:17:42 pfsp: Test syslog message -March 26 10:20:16 pfsp: Alert Device ritquiin unreachable by controller umqui since 2016-03-26 10:20:16 -April 9 17:22:51 pfsp: Alert Host Detection alert riosam, start 2016-04-9 17:22:51 anonnu, duration 116.480000, direction external, host 10.51.132.10, signatures (utper), impact squame, importance medium, managed_objects (omm), (parent managed object iin) -April 24 00:25:25 pfsp: Autoclassification was restarted on 2016-04-24 00:25:25 nim by incidi -May 8 07:27:59 pfsp: Alert Peakflow device oloremqu unreachable by temvel since 2016-05-08 07:27:59 -May 22 14:30:33 pfsp: Autoclassification was restarted on 2016-05-22 14:30:33 serror by anti -June 5 21:33:08 pfsp: script ufugiatn ran at 2016-06-05 21:33:08 tionulam, leader uameius -June 20 04:35:42 pfsp: Alert Test syslog message -July 4 11:38:16 pfsp: configuration was changed on leader uipexea to version 1.5162 by nci -July 18 18:40:50 pfsp: The SNMP restored for router mvolu, leader radip at 2016-07-18 18:40:50 tNequ -August 2 01:43:25 tatno: Protection Mode: Changed protection mode to active for protection groupdquiac,URL:https://mail.example.net/uam/untutl.jpg?llu=uptassi#tamremap -August 16 08:45:59 pfsp: Alert script estqui ran at 2016-08-16 08:45:59 uasiarch, leader emaper -August 30 15:48:33 eum: Blocked Host: Blocked host10.66.171.247atsitby Blocked Countries usingudpdestination10.155.162.162,URL:https://www5.example.org/seq/olorema.jpg?quid=fug#uatDuis -September 13 22:51:07 pfsp: Alert TMS 'eip' fault for resource 'lupta' on TMS iusmodt -September 28 05:53:42 pfsp: Alert Autoclassification was restarted on 2016-09-28 05:53:42 atatnonp by uiano -October 12 12:56:16 temq: Blocked Host: Blocked host10.38.77.13ataquaeabby Blocked Countries usingipv6-icmpdestination10.179.26.34,URL:https://example.org/isiu/nimadmi.gif?ari=equun#suntinc -October 26 19:58:50 pfsp: Hardware failure on tatevel since 2016-10-26 19:58:50 GMT: abilloi -November 10 03:01:24 pfsp: The anomaly ore id 2933 status tsed severity very-high classification enimad router incididu router_name eci interface aali interface_name "lo5882" porainc -November 24 10:03:59 moll: anomaly: anomaly Bandwidth id 2902 status inim severity high classification deomni router tquovol router_name ntsuntin interface aecatcup interface_name "lo4987" oluptate -December 8 17:06:33 pfsp: Alert Autoclassification was restarted on 2016-12-08 17:06:33 iam by qua -December 23 00:09:07 pfsp: Test syslog message -January 6 07:11:41 pfsp: Autoclassification was restarted on 2017-01-06 07:11:41 olupta by turveli -January 20 14:14:16 pfsp: Alert Autoclassification was restarted on 2017-01-20 14:14:16 ntutl by caecatc -February 3 21:16:50 pfsp: Alert GRE tunnel restored for destination 10.224.68.213, leader taed at 2017-02-03 21:16:50 lup -February 18 04:19:24 pfsp: Alert Hardware failure on aperi since 2017-02-18 04:19:24 GMT: lor -March 4 11:21:59 pfsp: The BGP Instability for router oin ended -March 18 18:24:33 pfsp: Hardware failure on ritatis done at 2017-03-18 18:24:33 oloremi GMT: pitla -April 2 01:27:07 eomnisis: Change Log: Username:mqui, Subsystem:civeli, Setting Type:errorsi, Message:des -April 16 08:29:41 pfsp: Device tdolorem unreachable by controller ono since 2017-04-16 08:29:41 -April 30 15:32:16 pfsp: The GRE tunnel down for destination 10.60.185.151, leader uidolo since 2017-04-30 15:32:16 lumquido -May 14 22:34:50 Lor: Test: Test syslog message -May 29 05:37:24 pfsp: Alert script modoco ran at 2017-05-29 05:37:24 , leader estqu -June 12 12:39:58 intoccae: Protection Mode: Changed protection mode to active for protection groupents,URL:https://www.example.net/nse/sinto.gif?CSed=lupt#psaquae -June 26 19:42:33 pfsp: The BGP Trap reetd: Prefix lumqui itinvo mdolore -July 11 02:45:07 pfsp: Device mque reachable again by controller uovolup at 2017-07-11 02:45:07 samvolu -July 25 09:47:41 pfsp: The Host Detection alert eirure, start 2017-07-25 09:47:41 conseq, duration 38.117000, stop 2017-07-25 09:47:41 mpori, , importance very-high, managed_objects (atu), is now unknown, (parent managed object lpaqui) -August 8 16:50:15 pfsp: BGP Trap doloremi: Prefix luptasn hitect dol -August 22 23:52:50 nsecte: BGP: ipv6 instability router tincu threshold ari (exercit) observed sci (quamnih) -September 6 06:55:24 emoe: Protection Mode: Changed protection mode to active for protection groupeaq,URL:https://mail.example.net/corp/modtemp.jpg?oluptas=tNequepo#lup -September 20 13:57:58 evita: Change Log: Username:suntexp, Subsystem:duntut, Setting Type:magni, Message:pisciv -October 4 21:00:32 radipisc: Blocked Host: Blocked host10.136.232.108atabiby Blocked Countries usingrdpdestination10.168.131.247,URL:https://example.net/temqu/edol.jpg?ipi=reseos#pariatu -October 19 04:03:07 pfsp: GRE tunnel restored for destination 10.209.182.237, leader tper at 2017-10-19 04:03:07 olor -November 2 11:05:41 pfsp: Alert Device xerc reachable again by controller iutali at 2017-11-02 11:05:41 fdeFi -November 16 18:08:15 pfsp: BGP down for router ati, leader tlabo since 2017-11-16 18:08:15 uames -December 1 01:10:49 pfsp: script offi ran at 2017-12-01 01:10:49 , leader giatnu -December 15 08:13:24 untex: Blocked Host: Blocked host10.83.23.104attisetqby Blocked Countries usingrdpdestination10.163.161.165,URL:https://www5.example.org/atem/gnido.txt?tmollita=fde#nsecte -December 29 15:15:58 pfsp: GRE tunnel restored for destination 10.53.248.4, leader derit at 2017-12-29 15:15:58 dexea -January 12 22:18:32 pfsp: Test syslog message -January 27 05:21:06 pfsp: Alert Flow down for router tessec, leader olupta since 2018-01-27 05:21:06 litse -February 10 12:23:41 pfsp: Alert Host Detection alert sperna, start 2018-02-10 12:23:41 sintocc, duration 24.633000, stop 2018-02-10 12:23:41 scivelit, , importance medium, managed_objects (ehen), is now success, (parent managed object quameius) -February 24 19:26:15 ate: Change Log: Username:uiac, Subsystem:epte, Setting Type:idolo, Message:quinesc -March 11 02:28:49 pfsp: BGP Instability for router iatisu ended -March 25 09:31:24 evolu: Change Log: Username:ersp, Subsystem:tquov, Setting Type:diconseq, Message:inven -April 8 16:33:58 pfsp: Test syslog message -April 22 23:36:32 Sedutp: Test: Test syslog message -May 7 06:39:06 ema: Change Log: Username:rsitv, Subsystem:iciade, Setting Type:ntiumt, Message:iquipe -May 21 13:41:41 quin: Protection Mode: Changed protection mode to active for protection groupupida,URL:https://api.example.com/eufugi/pici.html?ccaecat=tquiin#tse -June 4 20:44:15 minimav: Change Log: Username:udexerci, Subsystem:naal, Setting Type:lore, Message:tnonpro -June 19 03:46:49 pfsp: The Device illoin unreachable by controller tanimid since 2018-06-19 03:46:49 -July 3 10:49:23 pfsp: configuration was changed on leader natuse to version 1.4425 by ati -July 17 17:51:58 boree: anomaly: anomaly Bandwidth id 2366 status queips severity low classification itess router iscinge router_name ofdeFini interface irat interface_name "enp0s4306" aturauto -August 1 00:54:32 pfsp: SNMP restored for router entsunt, leader ihilm at 2018-08-01 00:54:32 dmin -August 15 07:57:06 pfsp: The Host Detection alert uscipitl, start 2018-08-15 07:57:06 uia, duration 29.657000, direction internal, host 10.54.49.84, signatures (ciad), impact tali, importance medium, managed_objects (mexe), (parent managed object its) -August 29 14:59:40 pfsp: Alert Test syslog message -September 12 22:02:15 pfsp: anomaly Bandwidth id 5089 status commodo severity medium classification tutlab router sau router_name atevelit interface meius interface_name "lo4293" labo -September 27 05:04:49 pfsp: Alert script nre ran at 2018-09-27 05:04:49 veli, leader volupta -October 11 12:07:23 pfsp: The BGP instability router uptate threshold mac (iumdol) observed tpersp (stla) -October 25 19:09:57 pfsp: Alert TMS 'tem' fault for resource 'dol' on TMS proiden -November 9 02:12:32 pfsp: Device isis reachable again by controller uasiar at 2018-11-09 02:12:32 utlab -November 23 09:15:06 pfsp: Alert script dantium ran at 2018-11-23 09:15:06 lor, leader velillu -December 7 16:17:40 pfsp: The script tvolu ran at 2018-12-07 16:17:40 nreprehe, leader tetu -December 21 23:20:14 temporin: Blocked Host: Blocked host10.122.76.148atmiuby Blocked Countries usingipv6-icmpdestination10.28.226.128,URL:https://mail.example.org/idunt/luptat.txt?ica=lillum#remips -January 5 06:22:49 cola: Protection Mode: Changed protection mode to active for protection groupamcor,URL:https://internal.example.com/ineavol/iosa.html?usc=rem#amvolupt -January 19 13:25:23 mnis: Protection Mode: Changed protection mode to active for protection groupequepor,URL:https://internal.example.org/quaUten/nisiut.txt?teturad=perspici#itation -February 2 20:27:57 nimave: Protection Mode: Changed protection mode to active for protection groupisciv,URL:https://mail.example.org/nofd/dipisci.txt?ilmol=eri#quunt -February 17 03:30:32 iosamnis: Blocked Host: Blocked host10.31.177.226atdeserunby Blocked Countries usingggpdestination10.98.209.10,URL:https://www.example.org/ptateve/enderi.html?toccaec=fugi#labo -March 3 10:33:06 estl: Blocked Host: Blocked host10.44.47.27atmmodocby Blocked Countries usingigmpdestination10.179.210.218,URL:https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo -March 17 17:35:40 pfsp: Alert configuration was changed on leader emvele to version 1.2883 by lor -April 1 00:38:14 pfsp: Alert BGP instability router iquamqua threshold sit (rumSect) observed ita (vitaed) -April 15 07:40:49 pfsp: Alert Test syslog message -April 29 14:43:23 numquam: Change Log: Username:tMal, Subsystem:ommodo, Setting Type:uptat, Message:idex -May 13 21:45:57 pfsp: Alert configuration was changed on leader maveni to version 1.2552 by onu -May 28 04:48:31 pfsp: Alert BGP Hijack for prefix tlaboree router norumet done -June 11 11:51:06 pfsp: Host Detection alert col, start 2019-06-11 11:51:06 mve, duration 177.586000, stop 2019-06-11 11:51:06 tinvolup, , importance very-high, managed_objects (Sedutpe), is now failure, (parent managed object rroq) -June 25 18:53:40 pfsp: script remipsum ran at 2019-06-25 18:53:40 , leader tempor -July 10 01:56:14 ccae: Change Log: Username:orroqu, Subsystem:elitsed, Setting Type:labore, Message:uela -July 24 08:58:48 uto: Test: Test syslog message -August 7 16:01:23 remq: Change Log: Username:veniamq, Subsystem:occ, Setting Type:oloreseo, Message:iruredol -August 21 23:03:57 cupi: Blocked Host: Blocked host10.151.129.181atduntby Blocked Countries usingggpdestination10.55.156.64,URL:https://www.example.net/itanim/nesciun.txt?mollita=tatem#iae -September 5 06:06:31 eumi: Protection Mode: Changed protection mode to active for protection groupquasiarc,URL:https://www.example.net/rever/ore.jpg?oluptat=metco#acom -September 19 13:09:05 pfsp: The Host Detection alert inBCSedu, start 2019-09-19 13:09:05 erspi, duration 77.637000, direction internal, host 10.46.77.76, signatures (iacons), impact occaec, importance medium, managed_objects (uov), (parent managed object quaeab) -October 3 20:11:40 pfsp: Hardware failure on ntiu since 2019-10-03 20:11:40 GMT: radipisc -October 18 03:14:14 pfsp: script vitaed ran at 2019-10-18 03:14:14 ser, leader etconsec -November 1 10:16:48 upt: Blocked Host: Blocked host10.73.89.189atidoloby Blocked Countries usingicmpdestination10.166.90.130,URL:https://api.example.org/eosquira/pta.htm?econs=lmolesti#apariatu -November 15 17:19:22 pfsp: Alert script msequ ran at 2019-11-15 17:19:22 uat, leader lupta -November 30 00:21:57 tlabori: Protection Mode: Changed protection mode to active for protection grouplaudan,URL:https://www5.example.com/atcupida/tessequa.htm?dolores=equamnih#taliqui -December 14 07:24:31 destlabo: Change Log: Username:rcitat, Subsystem:dolorema, Setting Type:emagn, Message:radipis diff --git a/x-pack/filebeat/module/netscout/sightline/test/generated.log-expected.json b/x-pack/filebeat/module/netscout/sightline/test/generated.log-expected.json deleted file mode 100644 index 4f6e77ae773..00000000000 --- a/x-pack/filebeat/module/netscout/sightline/test/generated.log-expected.json +++ /dev/null @@ -1,2449 +0,0 @@ -[ - { - "event.code": "configuration", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "January 29 06:09:59 pfsp: The configuration was changed on leader olab to version 1.6078 by rci", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 0, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "observer.version": "1.6078", - "related.user": [ - "rci" - ], - "rsa.internal.event_desc": "Configuration changed", - "rsa.internal.messageid": "configuration", - "rsa.misc.parent_node": "olab", - "rsa.misc.version": "1.6078", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "rci" - }, - { - "event.code": "Autoclassification", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 12 13:12:33 pfsp: Alert Autoclassification was restarted on 2016-02-12 13:12:33 uredolor by tatemac", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 96, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "tatemac" - ], - "rsa.internal.event_desc": "Autoclassification restarted", - "rsa.internal.messageid": "Autoclassification", - "rsa.time.starttime": "2016-02-12T15:12:33.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "tatemac" - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 26 20:15:08 ntsunti: Change Log: Username:nseq, Subsystem:itinvol, Setting Type:psa, Message:umq", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 205, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "nseq" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "nseq" - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 12 03:17:42 pfsp: Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 311, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Device", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 26 10:20:16 pfsp: Alert Device ritquiin unreachable by controller umqui since 2016-03-26 10:20:16", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 355, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Device", - "rsa.misc.node": "ritquiin", - "rsa.misc.parent_node": "umqui", - "rsa.time.starttime": "2016-03-26T12:20:16.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 9 17:22:51 pfsp: Alert Host Detection alert riosam, start 2016-04-9 17:22:51 anonnu, duration 116.480000, direction external, host 10.51.132.10, signatures (utper), impact squame, importance medium, managed_objects (omm), (parent managed object iin)", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "medium", - "log.offset": 459, - "network.direction": "external", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.51.132.10" - ], - "rsa.internal.messageid": "Host", - "rsa.misc.policy_name": "utper", - "rsa.misc.severity": "medium", - "rsa.time.duration_time": 116.48, - "rsa.time.starttime": "2016-04-09T19:22:51.000Z", - "service.type": "netscout", - "source.ip": "10.51.132.10", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Autoclassification", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 24 00:25:25 pfsp: Autoclassification was restarted on 2016-04-24 00:25:25 nim by incidi", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 715, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "incidi" - ], - "rsa.internal.event_desc": "Autoclassification restarted", - "rsa.internal.messageid": "Autoclassification", - "rsa.time.starttime": "2016-04-24T02:25:25.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "incidi" - }, - { - "event.code": "Peakflow", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 8 07:27:59 pfsp: Alert Peakflow device oloremqu unreachable by temvel since 2016-05-08 07:27:59", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 809, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Peakflow", - "rsa.misc.node": "oloremqu", - "rsa.misc.parent_node": "temvel", - "rsa.time.starttime": "2016-05-08T09:27:59.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Autoclassification", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 22 14:30:33 pfsp: Autoclassification was restarted on 2016-05-22 14:30:33 serror by anti", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 909, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "anti" - ], - "rsa.internal.event_desc": "Autoclassification restarted", - "rsa.internal.messageid": "Autoclassification", - "rsa.time.starttime": "2016-05-22T16:30:33.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "anti" - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 5 21:33:08 pfsp: script ufugiatn ran at 2016-06-05 21:33:08 tionulam, leader uameius", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1002, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "ufugiatn", - "rsa.misc.parent_node": "uameius", - "rsa.time.starttime": "2016-06-05T23:33:08.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 20 04:35:42 pfsp: Alert Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1092, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "configuration", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 4 11:38:16 pfsp: configuration was changed on leader uipexea to version 1.5162 by nci", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1141, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "observer.version": "1.5162", - "related.user": [ - "nci" - ], - "rsa.internal.event_desc": "Configuration changed", - "rsa.internal.messageid": "configuration", - "rsa.misc.parent_node": "uipexea", - "rsa.misc.version": "1.5162", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "nci" - }, - { - "event.code": "SNMP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 18 18:40:50 pfsp: The SNMP restored for router mvolu, leader radip at 2016-07-18 18:40:50 tNequ", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1232, - "network.protocol": "SNMP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "SNMP", - "rsa.misc.node": "mvolu", - "rsa.misc.parent_node": "radip", - "rsa.time.endtime": "2016-07-18T20:40:50.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 2 01:43:25 tatno: Protection Mode: Changed protection mode to active for protection groupdquiac,URL:https://mail.example.net/uam/untutl.jpg?llu=uptassi#tamremap", - "fileset.name": "sightline", - "group.name": "dquiac", - "input.type": "log", - "log.offset": 1333, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "dquiac", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "mail.example.net", - "url.extension": "jpg", - "url.fragment": "tamremap", - "url.original": "https://mail.example.net/uam/untutl.jpg?llu=uptassi#tamremap", - "url.path": "/uam/untutl.jpg", - "url.query": "llu=uptassi", - "url.scheme": "https" - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 16 08:45:59 pfsp: Alert script estqui ran at 2016-08-16 08:45:59 uasiarch, leader emaper", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1501, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "estqui", - "rsa.misc.parent_node": "emaper", - "rsa.time.starttime": "2016-08-16T10:45:59.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "destination.ip": "10.155.162.162", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 30 15:48:33 eum: Blocked Host: Blocked host10.66.171.247atsitby Blocked Countries usingudpdestination10.155.162.162,URL:https://www5.example.org/seq/olorema.jpg?quid=fug#uatDuis", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1597, - "network.protocol": "udp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.155.162.162", - "10.66.171.247" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.66.171.247", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www5.example.org", - "url.extension": "jpg", - "url.fragment": "uatDuis", - "url.original": "https://www5.example.org/seq/olorema.jpg?quid=fug#uatDuis", - "url.path": "/seq/olorema.jpg", - "url.query": "quid=fug", - "url.scheme": "https" - }, - { - "event.action": "Fault Occured", - "event.code": "TMS", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 13 22:51:07 pfsp: Alert TMS 'eip' fault for resource 'lupta' on TMS iusmodt", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1782, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "eip", - "rsa.internal.messageid": "TMS", - "rsa.internal.resource": "lupta", - "rsa.misc.event_type": "Fault Occured", - "rsa.misc.node": "iusmodt", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Autoclassification", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 28 05:53:42 pfsp: Alert Autoclassification was restarted on 2016-09-28 05:53:42 atatnonp by uiano", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1868, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "uiano" - ], - "rsa.internal.event_desc": "Autoclassification restarted", - "rsa.internal.messageid": "Autoclassification", - "rsa.time.starttime": "2016-09-28T07:53:42.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "uiano" - }, - { - "destination.ip": "10.179.26.34", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 12 12:56:16 temq: Blocked Host: Blocked host10.38.77.13ataquaeabby Blocked Countries usingipv6-icmpdestination10.179.26.34,URL:https://example.org/isiu/nimadmi.gif?ari=equun#suntinc", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 1976, - "network.protocol": "ipv6-icmp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.179.26.34", - "10.38.77.13" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.38.77.13", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "example.org", - "url.extension": "gif", - "url.fragment": "suntinc", - "url.original": "https://example.org/isiu/nimadmi.gif?ari=equun#suntinc", - "url.path": "/isiu/nimadmi.gif", - "url.query": "ari=equun", - "url.scheme": "https" - }, - { - "event.code": "Hardware", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 26 19:58:50 pfsp: Hardware failure on tatevel since 2016-10-26 19:58:50 GMT: abilloi", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 2166, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "abilloi", - "rsa.internal.messageid": "Hardware", - "rsa.misc.node": "tatevel", - "rsa.time.starttime": "2016-10-26T21:58:50.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "anomaly", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 10 03:01:24 pfsp: The anomaly ore id 2933 status tsed severity very-high classification enimad router incididu router_name eci interface aali interface_name \"lo5882\" porainc", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2259, - "network.interface.name": "lo5882", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "anomaly", - "rsa.misc.category": "enimad", - "rsa.misc.disposition": "tsed", - "rsa.misc.node": "eci", - "rsa.misc.policy_name": "ore", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id": 2933, - "rsa.network.interface": "lo5882", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "anomaly", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 24 10:03:59 moll: anomaly: anomaly Bandwidth id 2902 status inim severity high classification deomni router tquovol router_name ntsuntin interface aecatcup interface_name \"lo4987\" oluptate", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "high", - "log.offset": 2442, - "network.interface.name": "lo4987", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "anomaly", - "rsa.misc.category": "deomni", - "rsa.misc.disposition": "inim", - "rsa.misc.node": "ntsuntin", - "rsa.misc.policy_name": "Bandwidth", - "rsa.misc.severity": "high", - "rsa.misc.sig_id": 2902, - "rsa.network.interface": "lo4987", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Autoclassification", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 8 17:06:33 pfsp: Alert Autoclassification was restarted on 2016-12-08 17:06:33 iam by qua", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 2640, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "qua" - ], - "rsa.internal.event_desc": "Autoclassification restarted", - "rsa.internal.messageid": "Autoclassification", - "rsa.time.starttime": "2016-12-08T19:06:33.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "qua" - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 23 00:09:07 pfsp: Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 2739, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Autoclassification", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "January 6 07:11:41 pfsp: Autoclassification was restarted on 2017-01-06 07:11:41 olupta by turveli", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 2786, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "turveli" - ], - "rsa.internal.event_desc": "Autoclassification restarted", - "rsa.internal.messageid": "Autoclassification", - "rsa.time.starttime": "2017-01-06T09:11:41.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "turveli" - }, - { - "event.code": "Autoclassification", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "January 20 14:14:16 pfsp: Alert Autoclassification was restarted on 2017-01-20 14:14:16 ntutl by caecatc", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 2885, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "caecatc" - ], - "rsa.internal.event_desc": "Autoclassification restarted", - "rsa.internal.messageid": "Autoclassification", - "rsa.time.starttime": "2017-01-20T16:14:16.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "caecatc" - }, - { - "destination.ip": "10.224.68.213", - "event.code": "GRE", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 3 21:16:50 pfsp: Alert GRE tunnel restored for destination 10.224.68.213, leader taed at 2017-02-03 21:16:50 lup", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 2990, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.224.68.213" - ], - "rsa.internal.messageid": "GRE", - "rsa.misc.parent_node": "taed", - "rsa.time.endtime": "2017-02-03T23:16:50.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Hardware", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 18 04:19:24 pfsp: Alert Hardware failure on aperi since 2017-02-18 04:19:24 GMT: lor", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3112, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "lor", - "rsa.internal.messageid": "Hardware", - "rsa.misc.node": "aperi", - "rsa.time.starttime": "2017-02-18T06:19:24.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 4 11:21:59 pfsp: The BGP Instability for router oin ended", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3206, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "oin", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Hardware", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 18 18:24:33 pfsp: Hardware failure on ritatis done at 2017-03-18 18:24:33 oloremi GMT: pitla", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3270, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "pitla", - "rsa.internal.messageid": "Hardware", - "rsa.misc.node": "ritatis", - "rsa.time.endtime": "2017-03-18T20:24:33.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 2 01:27:07 eomnisis: Change Log: Username:mqui, Subsystem:civeli, Setting Type:errorsi, Message:des", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3369, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "mqui" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "mqui" - }, - { - "event.code": "Device", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 16 08:29:41 pfsp: Device tdolorem unreachable by controller ono since 2017-04-16 08:29:41", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3475, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Device", - "rsa.misc.node": "tdolorem", - "rsa.misc.parent_node": "ono", - "rsa.time.starttime": "2017-04-16T10:29:41.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "destination.ip": "10.60.185.151", - "event.code": "GRE", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 30 15:32:16 pfsp: The GRE tunnel down for destination 10.60.185.151, leader uidolo since 2017-04-30 15:32:16 lumquido", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3571, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.60.185.151" - ], - "rsa.internal.messageid": "GRE", - "rsa.misc.parent_node": "uidolo", - "rsa.time.starttime": "2017-04-30T17:32:16.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 14 22:34:50 Lor: Test: Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3695, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 29 05:37:24 pfsp: Alert script modoco ran at 2017-05-29 05:37:24 , leader estqu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3742, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "modoco", - "rsa.misc.parent_node": "estqu", - "rsa.time.starttime": "2017-05-29T07:37:24.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 12 12:39:58 intoccae: Protection Mode: Changed protection mode to active for protection groupents,URL:https://www.example.net/nse/sinto.gif?CSed=lupt#psaquae", - "fileset.name": "sightline", - "group.name": "ents", - "input.type": "log", - "log.offset": 3826, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "ents", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www.example.net", - "url.extension": "gif", - "url.fragment": "psaquae", - "url.original": "https://www.example.net/nse/sinto.gif?CSed=lupt#psaquae", - "url.path": "/nse/sinto.gif", - "url.query": "CSed=lupt", - "url.scheme": "https" - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 26 19:42:33 pfsp: The BGP Trap reetd: Prefix lumqui itinvo mdolore", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 3989, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "mdolore", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "reetd", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Device", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 11 02:45:07 pfsp: Device mque reachable again by controller uovolup at 2017-07-11 02:45:07 samvolu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 4061, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Device", - "rsa.misc.node": "mque", - "rsa.misc.parent_node": "uovolup", - "rsa.time.endtime": "2017-07-11T04:45:07.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 25 09:47:41 pfsp: The Host Detection alert eirure, start 2017-07-25 09:47:41 conseq, duration 38.117000, stop 2017-07-25 09:47:41 mpori, , importance very-high, managed_objects (atu), is now unknown, (parent managed object lpaqui)", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4165, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Host", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "very-high", - "rsa.time.duration_time": 38.117, - "rsa.time.endtime": "2017-07-25T11:47:41.000Z", - "rsa.time.starttime": "2017-07-25T11:47:41.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 8 16:50:15 pfsp: BGP Trap doloremi: Prefix luptasn hitect dol", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 4401, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "dol", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "doloremi", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 22 23:52:50 nsecte: BGP: ipv6 instability router tincu threshold ari (exercit) observed sci (quamnih)", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 4470, - "network.protocol": "ipv6", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "tincu", - "rsa.misc.trigger_val": "sci", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 6 06:55:24 emoe: Protection Mode: Changed protection mode to active for protection groupeaq,URL:https://mail.example.net/corp/modtemp.jpg?oluptas=tNequepo#lup", - "fileset.name": "sightline", - "group.name": "eaq", - "input.type": "log", - "log.offset": 4579, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "eaq", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "mail.example.net", - "url.extension": "jpg", - "url.fragment": "lup", - "url.original": "https://mail.example.net/corp/modtemp.jpg?oluptas=tNequepo#lup", - "url.path": "/corp/modtemp.jpg", - "url.query": "oluptas=tNequepo", - "url.scheme": "https" - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 20 13:57:58 evita: Change Log: Username:suntexp, Subsystem:duntut, Setting Type:magni, Message:pisciv", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 4748, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "suntexp" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "suntexp" - }, - { - "destination.ip": "10.168.131.247", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 4 21:00:32 radipisc: Blocked Host: Blocked host10.136.232.108atabiby Blocked Countries usingrdpdestination10.168.131.247,URL:https://example.net/temqu/edol.jpg?ipi=reseos#pariatu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 4860, - "network.protocol": "rdp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.136.232.108", - "10.168.131.247" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.136.232.108", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "example.net", - "url.extension": "jpg", - "url.fragment": "pariatu", - "url.original": "https://example.net/temqu/edol.jpg?ipi=reseos#pariatu", - "url.path": "/temqu/edol.jpg", - "url.query": "ipi=reseos", - "url.scheme": "https" - }, - { - "destination.ip": "10.209.182.237", - "event.code": "GRE", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 19 04:03:07 pfsp: GRE tunnel restored for destination 10.209.182.237, leader tper at 2017-10-19 04:03:07 olor", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5047, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.209.182.237" - ], - "rsa.internal.messageid": "GRE", - "rsa.misc.parent_node": "tper", - "rsa.time.endtime": "2017-10-19T06:03:07.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Device", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 2 11:05:41 pfsp: Alert Device xerc reachable again by controller iutali at 2017-11-02 11:05:41 fdeFi", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5165, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Device", - "rsa.misc.node": "xerc", - "rsa.misc.parent_node": "iutali", - "rsa.time.endtime": "2017-11-02T13:05:41.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 16 18:08:15 pfsp: BGP down for router ati, leader tlabo since 2017-11-16 18:08:15 uames", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5275, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "ati", - "rsa.misc.parent_node": "tlabo", - "rsa.time.starttime": "2017-11-16T20:08:15.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 1 01:10:49 pfsp: script offi ran at 2017-12-01 01:10:49 , leader giatnu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5372, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "offi", - "rsa.misc.parent_node": "giatnu", - "rsa.time.starttime": "2017-12-01T03:10:49.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "destination.ip": "10.163.161.165", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 15 08:13:24 untex: Blocked Host: Blocked host10.83.23.104attisetqby Blocked Countries usingrdpdestination10.163.161.165,URL:https://www5.example.org/atem/gnido.txt?tmollita=fde#nsecte", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5453, - "network.protocol": "rdp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.163.161.165", - "10.83.23.104" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.83.23.104", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www5.example.org", - "url.extension": "txt", - "url.fragment": "nsecte", - "url.original": "https://www5.example.org/atem/gnido.txt?tmollita=fde#nsecte", - "url.path": "/atem/gnido.txt", - "url.query": "tmollita=fde", - "url.scheme": "https" - }, - { - "destination.ip": "10.53.248.4", - "event.code": "GRE", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 29 15:15:58 pfsp: GRE tunnel restored for destination 10.53.248.4, leader derit at 2017-12-29 15:15:58 dexea", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5646, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.53.248.4" - ], - "rsa.internal.messageid": "GRE", - "rsa.misc.parent_node": "derit", - "rsa.time.endtime": "2017-12-29T17:15:58.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "January 12 22:18:32 pfsp: Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5764, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Flow", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "January 27 05:21:06 pfsp: Alert Flow down for router tessec, leader olupta since 2018-01-27 05:21:06 litse", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 5810, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Flow", - "rsa.misc.node": "tessec", - "rsa.misc.parent_node": "olupta", - "rsa.time.starttime": "2018-01-27T07:21:06.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 10 12:23:41 pfsp: Alert Host Detection alert sperna, start 2018-02-10 12:23:41 sintocc, duration 24.633000, stop 2018-02-10 12:23:41 scivelit, , importance medium, managed_objects (ehen), is now success, (parent managed object quameius)", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "medium", - "log.offset": 5917, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Host", - "rsa.misc.result": "success", - "rsa.misc.severity": "medium", - "rsa.time.duration_time": 24.633, - "rsa.time.endtime": "2018-02-10T14:23:41.000Z", - "rsa.time.starttime": "2018-02-10T14:23:41.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 24 19:26:15 ate: Change Log: Username:uiac, Subsystem:epte, Setting Type:idolo, Message:quinesc", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6163, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "uiac" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "uiac" - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 11 02:28:49 pfsp: BGP Instability for router iatisu ended", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6268, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "iatisu", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 25 09:31:24 evolu: Change Log: Username:ersp, Subsystem:tquov, Setting Type:diconseq, Message:inven", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6332, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "ersp" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "ersp" - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 8 16:33:58 pfsp: Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6438, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 22 23:36:32 Sedutp: Test: Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6481, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 7 06:39:06 ema: Change Log: Username:rsitv, Subsystem:iciade, Setting Type:ntiumt, Message:iquipe", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6533, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "rsitv" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "rsitv" - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 21 13:41:41 quin: Protection Mode: Changed protection mode to active for protection groupupida,URL:https://api.example.com/eufugi/pici.html?ccaecat=tquiin#tse", - "fileset.name": "sightline", - "group.name": "upida", - "input.type": "log", - "log.offset": 6635, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "upida", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "api.example.com", - "url.extension": "html", - "url.fragment": "tse", - "url.original": "https://api.example.com/eufugi/pici.html?ccaecat=tquiin#tse", - "url.path": "/eufugi/pici.html", - "url.query": "ccaecat=tquiin", - "url.scheme": "https" - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 4 20:44:15 minimav: Change Log: Username:udexerci, Subsystem:naal, Setting Type:lore, Message:tnonpro", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6798, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "udexerci" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "udexerci" - }, - { - "event.code": "Device", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 19 03:46:49 pfsp: The Device illoin unreachable by controller tanimid since 2018-06-19 03:46:49", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 6905, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Device", - "rsa.misc.node": "illoin", - "rsa.misc.parent_node": "tanimid", - "rsa.time.starttime": "2018-06-19T05:46:49.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "configuration", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 3 10:49:23 pfsp: configuration was changed on leader natuse to version 1.4425 by ati", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 7006, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "observer.version": "1.4425", - "related.user": [ - "ati" - ], - "rsa.internal.event_desc": "Configuration changed", - "rsa.internal.messageid": "configuration", - "rsa.misc.parent_node": "natuse", - "rsa.misc.version": "1.4425", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "ati" - }, - { - "event.code": "anomaly", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 17 17:51:58 boree: anomaly: anomaly Bandwidth id 2366 status queips severity low classification itess router iscinge router_name ofdeFini interface irat interface_name \"enp0s4306\" aturauto", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "low", - "log.offset": 7096, - "network.interface.name": "enp0s4306", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "anomaly", - "rsa.misc.category": "itess", - "rsa.misc.disposition": "queips", - "rsa.misc.node": "ofdeFini", - "rsa.misc.policy_name": "Bandwidth", - "rsa.misc.severity": "low", - "rsa.misc.sig_id": 2366, - "rsa.network.interface": "enp0s4306", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "SNMP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 1 00:54:32 pfsp: SNMP restored for router entsunt, leader ihilm at 2018-08-01 00:54:32 dmin", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 7290, - "network.protocol": "SNMP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "SNMP", - "rsa.misc.node": "entsunt", - "rsa.misc.parent_node": "ihilm", - "rsa.time.endtime": "2018-08-01T02:54:32.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 15 07:57:06 pfsp: The Host Detection alert uscipitl, start 2018-08-15 07:57:06 uia, duration 29.657000, direction internal, host 10.54.49.84, signatures (ciad), impact tali, importance medium, managed_objects (mexe), (parent managed object its)", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "medium", - "log.offset": 7389, - "network.direction": "internal", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.54.49.84" - ], - "rsa.internal.messageid": "Host", - "rsa.misc.policy_name": "ciad", - "rsa.misc.severity": "medium", - "rsa.time.duration_time": 29.657, - "rsa.time.starttime": "2018-08-15T09:57:06.000Z", - "service.type": "netscout", - "source.ip": "10.54.49.84", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 29 14:59:40 pfsp: Alert Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 7641, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "anomaly", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 12 22:02:15 pfsp: anomaly Bandwidth id 5089 status commodo severity medium classification tutlab router sau router_name atevelit interface meius interface_name \"lo4293\" labo", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "medium", - "log.offset": 7692, - "network.interface.name": "lo4293", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "anomaly", - "rsa.misc.category": "tutlab", - "rsa.misc.disposition": "commodo", - "rsa.misc.node": "atevelit", - "rsa.misc.policy_name": "Bandwidth", - "rsa.misc.severity": "medium", - "rsa.misc.sig_id": 5089, - "rsa.network.interface": "lo4293", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 27 05:04:49 pfsp: Alert script nre ran at 2018-09-27 05:04:49 veli, leader volupta", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 7876, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "nre", - "rsa.misc.parent_node": "volupta", - "rsa.time.starttime": "2018-09-27T07:04:49.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 11 12:07:23 pfsp: The BGP instability router uptate threshold mac (iumdol) observed tpersp (stla)", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 7969, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "uptate", - "rsa.misc.trigger_val": "tpersp", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Fault Occured", - "event.code": "TMS", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 25 19:09:57 pfsp: Alert TMS 'tem' fault for resource 'dol' on TMS proiden", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 8075, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "tem", - "rsa.internal.messageid": "TMS", - "rsa.internal.resource": "dol", - "rsa.misc.event_type": "Fault Occured", - "rsa.misc.node": "proiden", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Device", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 9 02:12:32 pfsp: Device isis reachable again by controller uasiar at 2018-11-09 02:12:32 utlab", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 8157, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Device", - "rsa.misc.node": "isis", - "rsa.misc.parent_node": "uasiar", - "rsa.time.endtime": "2018-11-09T04:12:32.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 23 09:15:06 pfsp: Alert script dantium ran at 2018-11-23 09:15:06 lor, leader velillu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 8261, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "dantium", - "rsa.misc.parent_node": "velillu", - "rsa.time.starttime": "2018-11-23T11:15:06.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 7 16:17:40 pfsp: The script tvolu ran at 2018-12-07 16:17:40 nreprehe, leader tetu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 8356, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "tvolu", - "rsa.misc.parent_node": "tetu", - "rsa.time.starttime": "2018-12-07T18:17:40.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "destination.ip": "10.28.226.128", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 21 23:20:14 temporin: Blocked Host: Blocked host10.122.76.148atmiuby Blocked Countries usingipv6-icmpdestination10.28.226.128,URL:https://mail.example.org/idunt/luptat.txt?ica=lillum#remips", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 8448, - "network.protocol": "ipv6-icmp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.122.76.148", - "10.28.226.128" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.122.76.148", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "mail.example.org", - "url.extension": "txt", - "url.fragment": "remips", - "url.original": "https://mail.example.org/idunt/luptat.txt?ica=lillum#remips", - "url.path": "/idunt/luptat.txt", - "url.query": "ica=lillum", - "url.scheme": "https" - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "January 5 06:22:49 cola: Protection Mode: Changed protection mode to active for protection groupamcor,URL:https://internal.example.com/ineavol/iosa.html?usc=rem#amvolupt", - "fileset.name": "sightline", - "group.name": "amcor", - "input.type": "log", - "log.offset": 8647, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "amcor", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "internal.example.com", - "url.extension": "html", - "url.fragment": "amvolupt", - "url.original": "https://internal.example.com/ineavol/iosa.html?usc=rem#amvolupt", - "url.path": "/ineavol/iosa.html", - "url.query": "usc=rem", - "url.scheme": "https" - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "January 19 13:25:23 mnis: Protection Mode: Changed protection mode to active for protection groupequepor,URL:https://internal.example.org/quaUten/nisiut.txt?teturad=perspici#itation", - "fileset.name": "sightline", - "group.name": "equepor", - "input.type": "log", - "log.offset": 8817, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "equepor", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "internal.example.org", - "url.extension": "txt", - "url.fragment": "itation", - "url.original": "https://internal.example.org/quaUten/nisiut.txt?teturad=perspici#itation", - "url.path": "/quaUten/nisiut.txt", - "url.query": "teturad=perspici", - "url.scheme": "https" - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 2 20:27:57 nimave: Protection Mode: Changed protection mode to active for protection groupisciv,URL:https://mail.example.org/nofd/dipisci.txt?ilmol=eri#quunt", - "fileset.name": "sightline", - "group.name": "isciv", - "input.type": "log", - "log.offset": 8999, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "isciv", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "mail.example.org", - "url.extension": "txt", - "url.fragment": "quunt", - "url.original": "https://mail.example.org/nofd/dipisci.txt?ilmol=eri#quunt", - "url.path": "/nofd/dipisci.txt", - "url.query": "ilmol=eri", - "url.scheme": "https" - }, - { - "destination.ip": "10.98.209.10", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "February 17 03:30:32 iosamnis: Blocked Host: Blocked host10.31.177.226atdeserunby Blocked Countries usingggpdestination10.98.209.10,URL:https://www.example.org/ptateve/enderi.html?toccaec=fugi#labo", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 9166, - "network.protocol": "ggp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.31.177.226", - "10.98.209.10" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.31.177.226", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www.example.org", - "url.extension": "html", - "url.fragment": "labo", - "url.original": "https://www.example.org/ptateve/enderi.html?toccaec=fugi#labo", - "url.path": "/ptateve/enderi.html", - "url.query": "toccaec=fugi", - "url.scheme": "https" - }, - { - "destination.ip": "10.179.210.218", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 3 10:33:06 estl: Blocked Host: Blocked host10.44.47.27atmmodocby Blocked Countries usingigmpdestination10.179.210.218,URL:https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 9364, - "network.protocol": "igmp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.179.210.218", - "10.44.47.27" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.44.47.27", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www.example.org", - "url.extension": "jpg", - "url.fragment": "umetMalo", - "url.original": "https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo", - "url.path": "/tanimi/rumSecti.jpg", - "url.query": "emporain=ntiumto", - "url.scheme": "https" - }, - { - "event.code": "configuration", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "March 17 17:35:40 pfsp: Alert configuration was changed on leader emvele to version 1.2883 by lor", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 9562, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "observer.version": "1.2883", - "related.user": [ - "lor" - ], - "rsa.internal.event_desc": "Configuration changed", - "rsa.internal.messageid": "configuration", - "rsa.misc.parent_node": "emvele", - "rsa.misc.version": "1.2883", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "lor" - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 1 00:38:14 pfsp: Alert BGP instability router iquamqua threshold sit (rumSect) observed ita (vitaed)", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 9660, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "iquamqua", - "rsa.misc.trigger_val": "ita", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 15 07:40:49 pfsp: Alert Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 9767, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "April 29 14:43:23 numquam: Change Log: Username:tMal, Subsystem:ommodo, Setting Type:uptat, Message:idex", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 9817, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "tMal" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "tMal" - }, - { - "event.code": "configuration", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 13 21:45:57 pfsp: Alert configuration was changed on leader maveni to version 1.2552 by onu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 9922, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "observer.version": "1.2552", - "related.user": [ - "onu" - ], - "rsa.internal.event_desc": "Configuration changed", - "rsa.internal.messageid": "configuration", - "rsa.misc.parent_node": "maveni", - "rsa.misc.version": "1.2552", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "onu" - }, - { - "event.code": "BGP", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "May 28 04:48:31 pfsp: Alert BGP Hijack for prefix tlaboree router norumet done", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 10018, - "network.protocol": "BGP", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "BGP", - "rsa.misc.node": "norumet", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 11 11:51:06 pfsp: Host Detection alert col, start 2019-06-11 11:51:06 mve, duration 177.586000, stop 2019-06-11 11:51:06 tinvolup, , importance very-high, managed_objects (Sedutpe), is now failure, (parent managed object rroq)", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "very-high", - "log.offset": 10097, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Host", - "rsa.misc.result": "failure", - "rsa.misc.severity": "very-high", - "rsa.time.duration_time": 177.586, - "rsa.time.endtime": "2019-06-11T13:51:06.000Z", - "rsa.time.starttime": "2019-06-11T13:51:06.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "June 25 18:53:40 pfsp: script remipsum ran at 2019-06-25 18:53:40 , leader tempor", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 10329, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "remipsum", - "rsa.misc.parent_node": "tempor", - "rsa.time.starttime": "2019-06-25T20:53:40.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 10 01:56:14 ccae: Change Log: Username:orroqu, Subsystem:elitsed, Setting Type:labore, Message:uela", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 10411, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "orroqu" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "orroqu" - }, - { - "event.code": "Test", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "July 24 08:58:48 uto: Test: Test syslog message", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 10516, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "Test", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 7 16:01:23 remq: Change Log: Username:veniamq, Subsystem:occ, Setting Type:oloreseo, Message:iruredol", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 10564, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "veniamq" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "veniamq" - }, - { - "destination.ip": "10.55.156.64", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "August 21 23:03:57 cupi: Blocked Host: Blocked host10.151.129.181atduntby Blocked Countries usingggpdestination10.55.156.64,URL:https://www.example.net/itanim/nesciun.txt?mollita=tatem#iae", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 10673, - "network.protocol": "ggp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.151.129.181", - "10.55.156.64" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.151.129.181", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www.example.net", - "url.extension": "txt", - "url.fragment": "iae", - "url.original": "https://www.example.net/itanim/nesciun.txt?mollita=tatem#iae", - "url.path": "/itanim/nesciun.txt", - "url.query": "mollita=tatem", - "url.scheme": "https" - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 5 06:06:31 eumi: Protection Mode: Changed protection mode to active for protection groupquasiarc,URL:https://www.example.net/rever/ore.jpg?oluptat=metco#acom", - "fileset.name": "sightline", - "group.name": "quasiarc", - "input.type": "log", - "log.offset": 10862, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "quasiarc", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www.example.net", - "url.extension": "jpg", - "url.fragment": "acom", - "url.original": "https://www.example.net/rever/ore.jpg?oluptat=metco#acom", - "url.path": "/rever/ore.jpg", - "url.query": "oluptat=metco", - "url.scheme": "https" - }, - { - "event.code": "Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "September 19 13:09:05 pfsp: The Host Detection alert inBCSedu, start 2019-09-19 13:09:05 erspi, duration 77.637000, direction internal, host 10.46.77.76, signatures (iacons), impact occaec, importance medium, managed_objects (uov), (parent managed object quaeab)", - "fileset.name": "sightline", - "input.type": "log", - "log.level": "medium", - "log.offset": 11030, - "network.direction": "internal", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.46.77.76" - ], - "rsa.internal.messageid": "Host", - "rsa.misc.policy_name": "iacons", - "rsa.misc.severity": "medium", - "rsa.time.duration_time": 77.637, - "rsa.time.starttime": "2019-09-19T15:09:05.000Z", - "service.type": "netscout", - "source.ip": "10.46.77.76", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Hardware", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 3 20:11:40 pfsp: Hardware failure on ntiu since 2019-10-03 20:11:40 GMT: radipisc", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 11293, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "radipisc", - "rsa.internal.messageid": "Hardware", - "rsa.misc.node": "ntiu", - "rsa.time.starttime": "2019-10-03T22:11:40.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "October 18 03:14:14 pfsp: script vitaed ran at 2019-10-18 03:14:14 ser, leader etconsec", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 11383, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "vitaed", - "rsa.misc.parent_node": "etconsec", - "rsa.time.starttime": "2019-10-18T05:14:14.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "destination.ip": "10.166.90.130", - "event.code": "Blocked_Host", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 1 10:16:48 upt: Blocked Host: Blocked host10.73.89.189atidoloby Blocked Countries usingicmpdestination10.166.90.130,URL:https://api.example.org/eosquira/pta.htm?econs=lmolesti#apariatu", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 11471, - "network.protocol": "icmp", - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.ip": [ - "10.166.90.130", - "10.73.89.189" - ], - "rsa.internal.messageid": "Blocked_Host", - "rsa.misc.msgIdPart1": "Blocked", - "rsa.misc.msgIdPart2": "Host", - "service.type": "netscout", - "source.ip": "10.73.89.189", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "api.example.org", - "url.extension": "htm", - "url.fragment": "apariatu", - "url.original": "https://api.example.org/eosquira/pta.htm?econs=lmolesti#apariatu", - "url.path": "/eosquira/pta.htm", - "url.query": "econs=lmolesti", - "url.scheme": "https" - }, - { - "event.action": "Script mitigation", - "event.code": "script", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 15 17:19:22 pfsp: Alert script msequ ran at 2019-11-15 17:19:22 uat, leader lupta", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 11665, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.messageid": "script", - "rsa.misc.disposition": "ongoing", - "rsa.misc.event_type": "Script mitigation", - "rsa.misc.node": "msequ", - "rsa.misc.parent_node": "lupta", - "rsa.time.starttime": "2019-11-15T19:19:22.000Z", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ] - }, - { - "event.code": "Protection_Mode", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "November 30 00:21:57 tlabori: Protection Mode: Changed protection mode to active for protection grouplaudan,URL:https://www5.example.com/atcupida/tessequa.htm?dolores=equamnih#taliqui", - "fileset.name": "sightline", - "group.name": "laudan", - "input.type": "log", - "log.offset": 11756, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "rsa.internal.event_desc": "Changed protection mode to active for protection group", - "rsa.internal.messageid": "Protection_Mode", - "rsa.misc.group": "laudan", - "rsa.misc.msgIdPart1": "Protection", - "rsa.misc.msgIdPart2": "Mode", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "url.domain": "www5.example.com", - "url.extension": "htm", - "url.fragment": "taliqui", - "url.original": "https://www5.example.com/atcupida/tessequa.htm?dolores=equamnih#taliqui", - "url.path": "/atcupida/tessequa.htm", - "url.query": "dolores=equamnih", - "url.scheme": "https" - }, - { - "event.code": "Change_Log", - "event.dataset": "netscout.sightline", - "event.module": "netscout", - "event.original": "December 14 07:24:31 destlabo: Change Log: Username:rcitat, Subsystem:dolorema, Setting Type:emagn, Message:radipis", - "fileset.name": "sightline", - "input.type": "log", - "log.offset": 11940, - "observer.product": "Arbor", - "observer.type": "DDOS", - "observer.vendor": "Netscout", - "related.user": [ - "rcitat" - ], - "rsa.internal.messageid": "Change_Log", - "rsa.misc.msgIdPart1": "Change", - "rsa.misc.msgIdPart2": "Log", - "service.type": "netscout", - "tags": [ - "forwarded", - "netscout.sightline" - ], - "user.name": "rcitat" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/proofpoint/README.md b/x-pack/filebeat/module/proofpoint/README.md deleted file mode 100644 index 9ce835721f0..00000000000 --- a/x-pack/filebeat/module/proofpoint/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# proofpoint module - -This is a module for Proofpoint Email Security logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML proofpoint version 131 -at 2020-09-01 14:17:48.203341 +0000 UTC. - diff --git a/x-pack/filebeat/module/proofpoint/_meta/config.yml b/x-pack/filebeat/module/proofpoint/_meta/config.yml deleted file mode 100644 index 05dcc780bcd..00000000000 --- a/x-pack/filebeat/module/proofpoint/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: proofpoint - emailsecurity: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9531 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/proofpoint/_meta/docs.asciidoc b/x-pack/filebeat/module/proofpoint/_meta/docs.asciidoc deleted file mode 100644 index 0e678fa7896..00000000000 --- a/x-pack/filebeat/module/proofpoint/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: proofpoint -:has-dashboards: false - -== Proofpoint module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/proofpoint_tap[Proofpoint TAP] Elastic integration instead."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Proofpoint Email Security logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: emailsecurity - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `emailsecurity` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "proofpoint" device revision 131. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9531` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/proofpoint/_meta/fields.yml b/x-pack/filebeat/module/proofpoint/_meta/fields.yml deleted file mode 100644 index 6a65d925e9e..00000000000 --- a/x-pack/filebeat/module/proofpoint/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: proofpoint - title: Proofpoint Email Security - description: > - proofpoint fields. - fields: diff --git a/x-pack/filebeat/module/proofpoint/emailsecurity/_meta/fields.yml b/x-pack/filebeat/module/proofpoint/emailsecurity/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/proofpoint/emailsecurity/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/proofpoint/emailsecurity/config/input.yml b/x-pack/filebeat/module/proofpoint/emailsecurity/config/input.yml deleted file mode 100644 index e339988e8dc..00000000000 --- a/x-pack/filebeat/module/proofpoint/emailsecurity/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Proofpoint" - product: "Email" - type: "Firewall" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/proofpoint/emailsecurity/config/liblogparser.js - - ${path.home}/module/proofpoint/emailsecurity/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/proofpoint/emailsecurity/config/liblogparser.js b/x-pack/filebeat/module/proofpoint/emailsecurity/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/proofpoint/emailsecurity/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} sampling=%{fld19}"); - -var dup15 = match_copy("MESSAGE#11:mail_env_from:ofrom/1_1", "nwparser.p0", "hostip"); - -var dup16 = setc("eventcategory","1207030000"); - -var dup17 = setc("eventcategory","1207000000"); - -var dup18 = match("MESSAGE#25:session_judge/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} %{p0}"); - -var dup19 = match("MESSAGE#25:session_judge/1_0", "nwparser.p0", "attachment=%{fld58->} file=%{fld1->} mod=%{p0}"); - -var dup20 = match("MESSAGE#25:session_judge/1_1", "nwparser.p0", "mod=%{p0}"); - -var dup21 = call({ - dest: "nwparser.filename", - fn: RMQ, - args: [ - field("fld1"), - ], -}); - -var dup22 = setc("eventcategory","1207040200"); - -var dup23 = match("MESSAGE#39:av_run:02/1_1", "nwparser.p0", "vendor=%{fld36->} version=\"%{component_version}\" duration=%{p0}"); - -var dup24 = match_copy("MESSAGE#39:av_run:02/2", "nwparser.p0", "duration_string"); - -var dup25 = setc("eventcategory","1003010000"); - -var dup26 = setc("eventcategory","1003000000"); - -var dup27 = setc("eventcategory","1207040000"); - -var dup28 = match("MESSAGE#98:queued-alert/3_0", "nwparser.p0", "[%{daddr}] [%{daddr}],%{p0}"); - -var dup29 = match("MESSAGE#98:queued-alert/3_1", "nwparser.p0", "[%{daddr}],%{p0}"); - -var dup30 = match("MESSAGE#98:queued-alert/3_2", "nwparser.p0", "%{dhost->} [%{daddr}],%{p0}"); - -var dup31 = match("MESSAGE#98:queued-alert/3_3", "nwparser.p0", "%{dhost},%{p0}"); - -var dup32 = match("MESSAGE#98:queued-alert/4", "nwparser.p0", "%{}dsn=%{resultcode}, stat=%{info}"); - -var dup33 = match("MESSAGE#99:queued-alert:01/1_1", "nwparser.p0", "[%{daddr}]"); - -var dup34 = match("MESSAGE#99:queued-alert:01/1_2", "nwparser.p0", "%{dhost->} [%{daddr}]"); - -var dup35 = match_copy("MESSAGE#99:queued-alert:01/1_3", "nwparser.p0", "dhost"); - -var dup36 = date_time({ - dest: "event_time", - args: ["hdate","htime"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup37 = match("MESSAGE#100:queued-alert:02/0", "nwparser.payload", "%{agent}[%{process_id}]: STARTTLS=%{fld1}, relay=%{p0}"); - -var dup38 = match("MESSAGE#101:queued-VoltageEncrypt/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld51}: to=%{to}, delay=%{fld53}, xdelay=%{fld54}, mailer=%{fld55}, pri=%{fld23}, relay=%{p0}"); - -var dup39 = match("MESSAGE#120:queued-VoltageEncrypt:01/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: from=%{from}, size=%{bytes}, class=%{fld57}, nrcpts=%{fld58}, msgid=%{id}, proto=%{protocol}, daemon=%{fld69}, relay=%{p0}"); - -var dup40 = match("MESSAGE#120:queued-VoltageEncrypt:01/1_0", "nwparser.p0", "[%{daddr}] [%{daddr}]"); - -var dup41 = match("MESSAGE#104:queued-default:02/2", "nwparser.p0", "%{}field=%{fld2}, status=%{info}"); - -var dup42 = match("MESSAGE#105:queued-default:03/2", "nwparser.p0", "%{}version=%{fld55}, verify=%{fld57}, cipher=%{fld58}, bits=%{fld59}"); - -var dup43 = match("MESSAGE#116:queued-eurort:02/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: from=%{from}, size=%{bytes}, class=%{fld57}, nrcpts=%{fld58}, msgid=%{id}, proto=%{protocol}, daemon=%{fld69}, tls_verify=%{fld70}, auth=%{fld71}, relay=%{p0}"); - -var dup44 = match("MESSAGE#126:sendmail/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: to=%{to}, delay=%{fld53}, xdelay=%{fld54}, mailer=%{fld55}, pri=%{fld23}, relay=%{p0}"); - -var dup45 = linear_select([ - dup1, - dup2, - dup3, - dup4, - dup5, -]); - -var dup46 = linear_select([ - dup14, - dup15, -]); - -var dup47 = linear_select([ - dup19, - dup20, -]); - -var dup48 = match("MESSAGE#43:av_refresh", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} vendor=%{fld36->} engine=%{fld49->} definitions=%{fld50->} signatures=%{fld94}", processor_chain([ - dup26, - dup9, -])); - -var dup49 = match("MESSAGE#48:access_run:03", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var dup50 = match("MESSAGE#49:access_run:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var dup51 = match("MESSAGE#51:access_refresh:01", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} action=%{action->} dict=%{fld37->} file=%{filename}", processor_chain([ - dup17, - dup9, -])); - -var dup52 = match("MESSAGE#52:access_load", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5}", processor_chain([ - dup17, - dup9, -])); - -var dup53 = match("MESSAGE#64:spam_refresh", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} engine=%{fld49->} definitions=%{fld50}", processor_chain([ - dup27, - dup9, -])); - -var dup54 = match("MESSAGE#71:zerohour_refresh", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} version=%{fld55}", processor_chain([ - dup17, - dup9, -])); - -var dup55 = match("MESSAGE#82:cvtd:01", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} sig=%{fld60}", processor_chain([ - dup17, - dup9, -])); - -var dup56 = match("MESSAGE#83:cvtd", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type}", processor_chain([ - dup17, - dup9, -])); - -var dup57 = match("MESSAGE#87:soap_listen", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type->} addr=%{saddr}", processor_chain([ - dup17, - dup9, -])); - -var dup58 = linear_select([ - dup28, - dup29, - dup30, - dup31, -]); - -var dup59 = linear_select([ - dup40, - dup33, - dup34, - dup35, -]); - -var dup60 = match("MESSAGE#106:queued-default:04", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: timeout waiting for input from %{fld11->} during server cmd read", processor_chain([ - dup17, - dup9, -])); - -var dup61 = match("MESSAGE#113:queued-reinject:06", "nwparser.payload", "%{agent}[%{process_id}]: %{event_description}", processor_chain([ - dup17, - dup9, -])); - -var dup62 = match("MESSAGE#141:info:pid", "nwparser.payload", "%{fld0->} %{severity->} pid=%{process_id->} %{web_method->} /%{info}: %{resultcode}", processor_chain([ - dup17, - dup9, -])); - -var dup63 = all_match({ - processors: [ - dup38, - dup58, - dup32, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var dup64 = all_match({ - processors: [ - dup39, - dup59, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var dup65 = all_match({ - processors: [ - dup37, - dup58, - dup41, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var dup66 = all_match({ - processors: [ - dup37, - dup58, - dup42, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var dup67 = all_match({ - processors: [ - dup43, - dup59, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var dup68 = all_match({ - processors: [ - dup44, - dup58, - dup32, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var hdr1 = match("HEADER#0:0024/0", "message", "%{hdate}T%{htime}.%{hfld1->} %{hfld2->} %{hinstance}[%{hfld3}]: %{p0}", processor_chain([ - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant("["), - field("hfld3"), - constant("]: "), - field("p0"), - ], - }), -])); - -var part1 = match("HEADER#0:0024/2", "nwparser.p0", "%{}s=%{hfld4->} cmd=send %{p0}"); - -var all1 = all_match({ - processors: [ - hdr1, - dup45, - part1, - ], - on_success: processor_chain([ - setc("header_id","0024"), - setc("messageid","send"), - ]), -}); - -var hdr2 = match("HEADER#1:0023/0", "message", "%{hdate}T%{htime}.%{hfld1->} %{hfld2->} %{messageid}[%{hfld3}]: %{p0}"); - -var part2 = match("HEADER#1:0023/2", "nwparser.p0", "%{} %{payload}"); - -var all2 = all_match({ - processors: [ - hdr2, - dup45, - part2, - ], - on_success: processor_chain([ - setc("header_id","0023"), - ]), -}); - -var hdr3 = match("HEADER#2:0025", "message", "%{hdate}T%{htime}.%{hfld1->} %{hinstance->} %{messageid}[%{hfld2}]: %{p0}", processor_chain([ - setc("header_id","0025"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("hfld2"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr4 = match("HEADER#3:0026", "message", "%{hmonth->} %{hday->} %{htime->} %{hostname->} %{hinstance}[%{hfld4}]: %{hseverity->} s=%{hfld1->} m=%{hfld2->} x=%{hfld3->} attachment=%{hfld7->} file=%{hfld5->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0026"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant("["), - field("hfld4"), - constant("]: "), - field("hseverity"), - constant(" s="), - field("hfld1"), - constant(" m="), - field("hfld2"), - constant(" x="), - field("hfld3"), - constant(" attachment="), - field("hfld7"), - constant(" file="), - field("hfld5"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr5 = match("HEADER#4:0003", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} s=%{hfld1->} m=%{hfld2->} x=%{hfld3->} attachment=%{hfld7->} file=%{hfld5->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0003"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" s="), - field("hfld1"), - constant(" m="), - field("hfld2"), - constant(" x="), - field("hfld3"), - constant(" attachment="), - field("hfld7"), - constant(" file="), - field("hfld5"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr6 = match("HEADER#5:0015", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance}[%{hfld2}]: %{hseverity->} s=%{hfld3->} m=%{hfld4->} x=%{hfld5->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0015"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant("["), - field("hfld2"), - constant("]: "), - field("hseverity"), - constant(" s="), - field("hfld3"), - constant(" m="), - field("hfld4"), - constant(" x="), - field("hfld5"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr7 = match("HEADER#6:0016", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance}[%{hfld2}]: %{hseverity->} s=%{hfld3->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0016"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant("["), - field("hfld2"), - constant("]: "), - field("hseverity"), - constant(" s="), - field("hfld3"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr8 = match("HEADER#7:0017", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance}[%{hfld2}]: %{severity->} mod=%{msgIdPart1->} %{p0}", processor_chain([ - setc("header_id","0017"), - call({ - dest: "nwparser.messageid", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant("_ttl"), - ], - }), - dup7, -])); - -var hdr9 = match("HEADER#8:0018", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance}: %{hseverity->} s=%{hfld2->} m=%{hfld3->} x=%{hfld4->} cmd=%{messageid->} %{p0}", processor_chain([ - setc("header_id","0018"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(": "), - field("hseverity"), - constant(" s="), - field("hfld2"), - constant(" m="), - field("hfld3"), - constant(" x="), - field("hfld4"), - constant(" cmd="), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr10 = match("HEADER#9:0019", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance->} %{hseverity->} s=%{hfld2->} mod=%{messageid->} %{p0}", processor_chain([ - setc("header_id","0019"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" s="), - field("hfld2"), - constant(" mod="), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr11 = match("HEADER#10:0020", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance}[%{hfld2}]: %{hseverity->} mod=%{msgIdPart1->} %{msgIdPart2}=%{hfld3->} %{p0}", processor_chain([ - setc("header_id","0020"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant("["), - field("hfld2"), - constant("]: "), - field("hseverity"), - constant(" mod="), - field("msgIdPart1"), - constant(" "), - field("msgIdPart2"), - constant("="), - field("hfld3"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr12 = match("HEADER#11:0021", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance}[%{hfld2}]: %{severity->} mod=%{msgIdPart1->} %{p0}", processor_chain([ - setc("header_id","0021"), - call({ - dest: "nwparser.messageid", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant("_type"), - ], - }), - dup7, -])); - -var hdr13 = match("HEADER#12:0022", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld1->} %{hinstance}: %{hseverity->} s=%{hfld2->} m=%{hfld3->} x=%{hfld4->} %{msgIdPart1}=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0022"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(": "), - field("hseverity"), - constant(" s="), - field("hfld2"), - constant(" m="), - field("hfld3"), - constant(" x="), - field("hfld4"), - constant(" "), - field("msgIdPart1"), - constant("="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr14 = match("HEADER#13:0001", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} s=%{hfld1->} m=%{hfld2->} x=%{hfld3->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0001"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" s="), - field("hfld1"), - constant(" m="), - field("hfld2"), - constant(" x="), - field("hfld3"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr15 = match("HEADER#14:0008", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} s=%{hfld1->} m=%{hfld2->} x=%{hfld3->} cmd=%{messageid->} %{p0}", processor_chain([ - setc("header_id","0008"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" s="), - field("hfld1"), - constant(" m="), - field("hfld2"), - constant(" x="), - field("hfld3"), - constant(" cmd="), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr16 = match("HEADER#15:0002", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} s=%{hfld1->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0002"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" s="), - field("hfld1"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr17 = match("HEADER#16:0007", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} s=%{hfld1->} mod=%{messageid->} %{p0}", processor_chain([ - setc("header_id","0007"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" s="), - field("hfld1"), - constant(" mod="), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr18 = match("HEADER#17:0012", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} s=%{hfld1->} cmd=%{messageid->} %{p0}", processor_chain([ - setc("header_id","0012"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" s="), - field("hfld1"), - constant(" cmd="), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr19 = match("HEADER#18:0004", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} mod=%{msgIdPart1->} type=%{hfld5->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0004"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" mod="), - field("msgIdPart1"), - constant(" type="), - field("hfld5"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr20 = match("HEADER#19:0005", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} pid=%{hfld5->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0005"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" pid="), - field("hfld5"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr21 = match("HEADER#20:0006", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} mod=%{msgIdPart1->} cmd=%{msgIdPart2->} %{p0}", processor_chain([ - setc("header_id","0006"), - dup6, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" mod="), - field("msgIdPart1"), - constant(" cmd="), - field("msgIdPart2"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr22 = match("HEADER#21:0009", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{hseverity->} mod=%{messageid->} %{p0}", processor_chain([ - setc("header_id","0009"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("hseverity"), - constant(" mod="), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr23 = match("HEADER#22:0014", "message", "%{hmonth->} %{hday->} %{htime->} %{hfld2->} %{hinstance}[%{hfld1}]: %{messageid->} %{p0}", processor_chain([ - setc("header_id","0014"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant("["), - field("hfld1"), - constant("]: "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr24 = match("HEADER#23:0013", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{messageid}[%{hfld1}]: %{p0}", processor_chain([ - setc("header_id","0013"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("messageid"), - constant("["), - field("hfld1"), - constant("]: "), - field("p0"), - ], - }), -])); - -var hdr25 = match("HEADER#24:0011", "message", "%{hmonth->} %{hday->} %{htime->} %{hinstance->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0011"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hinstance"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr26 = match("HEADER#25:0010", "message", "%{messageid}[%{hfld1}]: %{p0}", processor_chain([ - setc("header_id","0010"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("["), - field("hfld1"), - constant("]: "), - field("p0"), - ], - }), -])); - -var select1 = linear_select([ - all1, - all2, - hdr3, - hdr4, - hdr5, - hdr6, - hdr7, - hdr8, - hdr9, - hdr10, - hdr11, - hdr12, - hdr13, - hdr14, - hdr15, - hdr16, - hdr17, - hdr18, - hdr19, - hdr20, - hdr21, - hdr22, - hdr23, - hdr24, - hdr25, - hdr26, -]); - -var part3 = match("MESSAGE#0:mail_env_rcpt", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} r=%{event_counter->} value=%{to->} verified=%{fld3->} routes=%{fld4}", processor_chain([ - dup8, - dup9, -])); - -var msg1 = msg("mail_env_rcpt", part3); - -var part4 = match("MESSAGE#1:mail_env_rcpt:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} r=%{event_counter->} value=%{to->} verified=%{fld3->} routes=%{fld4}", processor_chain([ - dup8, - dup9, -])); - -var msg2 = msg("mail_env_rcpt:01", part4); - -var select2 = linear_select([ - msg1, - msg2, -]); - -var part5 = match("MESSAGE#2:mail_attachment", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} id=%{fld5->} file=%{filename->} mime=%{content_type->} type=%{fld6->} omime=%{fld7->} oext=%{fld8->} corrupted=%{fld9->} protected=%{fld10->} size=%{bytes->} virtual=%{fld11->} a=%{fld12}", processor_chain([ - dup10, - dup9, -])); - -var msg3 = msg("mail_attachment", part5); - -var part6 = match("MESSAGE#3:mail_attachment:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} id=%{fld5->} file=%{filename->} mime=%{content_type->} type=%{fld6->} omime=%{fld7->} oext=%{fld8->} corrupted=%{fld9->} protected=%{fld10->} size=%{bytes->} virtual=%{fld11->} a=%{fld12}", processor_chain([ - dup10, - dup9, -])); - -var msg4 = msg("mail_attachment:01", part6); - -var part7 = match("MESSAGE#4:mail_attachment:02", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} id=%{fld5->} file=%{filename->} mime=%{content_type->} type=%{fld6->} omime=%{fld7->} oext=%{fld8->} corrupted=%{fld9->} protected=%{fld10->} size=%{bytes->} virtual=%{fld11}", processor_chain([ - dup10, - dup9, -])); - -var msg5 = msg("mail_attachment:02", part7); - -var part8 = match("MESSAGE#5:mail_attachment:03", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} id=%{fld5->} file=%{filename->} mime=%{content_type->} type=%{fld6->} omime=%{fld7->} oext=%{fld8->} corrupted=%{fld9->} protected=%{fld10->} size=%{bytes->} virtual=%{fld11}", processor_chain([ - dup10, - dup9, -])); - -var msg6 = msg("mail_attachment:03", part8); - -var select3 = linear_select([ - msg3, - msg4, - msg5, - msg6, -]); - -var part9 = match("MESSAGE#6:mail_msg", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} attachments=%{dclass_counter1->} rcpts=%{dclass_counter2->} routes=%{fld4->} size=%{bytes->} guid=%{fld14->} hdr_mid=%{id->} qid=%{fld15->} subject=%{subject->} spamscore=%{reputation_num->} virusname=%{threat_name->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup11, - dup9, - dup12, - dup13, -])); - -var msg7 = msg("mail_msg", part9); - -var part10 = match("MESSAGE#7:mail_msg:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} attachments=%{dclass_counter1->} rcpts=%{dclass_counter2->} routes=%{fld4->} size=%{bytes->} guid=%{fld14->} hdr_mid=%{id->} qid=%{fld15->} subject=%{subject->} spamscore=%{reputation_num->} virusname=%{threat_name->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup11, - dup9, - dup12, - dup13, -])); - -var msg8 = msg("mail_msg:01", part10); - -var part11 = match("MESSAGE#8:mail_msg:04", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} attachments=%{dclass_counter1->} rcpts=%{dclass_counter2->} routes=%{fld4->} size=%{bytes->} guid=%{fld14->} hdr_mid=%{id->} qid=%{fld15->} subject=%{subject->} virusname=%{threat_name->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup11, - dup9, - dup12, - dup13, -])); - -var msg9 = msg("mail_msg:04", part11); - -var part12 = match("MESSAGE#9:mail_msg:02", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} attachments=%{dclass_counter1->} rcpts=%{dclass_counter2->} routes=%{fld4->} size=%{bytes->} guid=%{fld14->} hdr_mid=%{id->} qid=%{fld15->} subject=%{subject->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup11, - dup9, - dup12, - dup13, -])); - -var msg10 = msg("mail_msg:02", part12); - -var part13 = match("MESSAGE#10:mail_msg:03", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} attachments=%{dclass_counter1->} rcpts=%{dclass_counter2->} routes=%{fld4->} size=%{bytes->} guid=%{fld14->} hdr_mid=%{id->} qid=%{fld15->} subject=%{subject->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup11, - dup9, - dup12, - dup13, -])); - -var msg11 = msg("mail_msg:03", part13); - -var select4 = linear_select([ - msg7, - msg8, - msg9, - msg10, - msg11, -]); - -var part14 = match("MESSAGE#11:mail_env_from:ofrom/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} value=%{to->} ofrom=%{from->} qid=%{fld15->} tls=%{fld17->} routes=%{fld4->} notroutes=%{fld18->} host=%{hostname->} ip=%{p0}"); - -var all3 = all_match({ - processors: [ - part14, - dup46, - ], - on_success: processor_chain([ - dup16, - dup9, - ]), -}); - -var msg12 = msg("mail_env_from:ofrom", all3); - -var part15 = match("MESSAGE#12:mail_env_from:ofrom:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} value=%{to->} ofrom=%{from->} qid=%{fld15->} tls=%{fld17->} routes=%{fld4->} notroutes=%{fld18->} host=%{hostname->} ip=%{hostip->} sampling=%{fld19}", processor_chain([ - dup16, - dup9, -])); - -var msg13 = msg("mail_env_from:ofrom:01", part15); - -var part16 = match("MESSAGE#13:mail_env_from/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} value=%{from->} qid=%{fld15->} tls=%{fld17->} routes=%{fld4->} notroutes=%{fld18->} host=%{hostname->} ip=%{p0}"); - -var all4 = all_match({ - processors: [ - part16, - dup46, - ], - on_success: processor_chain([ - dup16, - dup9, - ]), -}); - -var msg14 = msg("mail_env_from", all4); - -var part17 = match("MESSAGE#14:mail_env_from:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} value=%{from->} qid=%{fld15->} tls=%{fld17->} routes=%{fld4->} notroutes=%{fld18->} host=%{hostname->} ip=%{hostip->} sampling=%{fld19}", processor_chain([ - dup16, - dup9, -])); - -var msg15 = msg("mail_env_from:01", part17); - -var select5 = linear_select([ - msg12, - msg13, - msg14, - msg15, -]); - -var part18 = match("MESSAGE#15:mail_helo", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} value=%{ddomain->} routes=%{fld4}", processor_chain([ - dup17, - dup9, -])); - -var msg16 = msg("mail_helo", part18); - -var part19 = match("MESSAGE#16:mail_helo:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} value=%{ddomain->} routes=%{fld4}", processor_chain([ - dup17, - dup9, -])); - -var msg17 = msg("mail_helo:01", part19); - -var select6 = linear_select([ - msg16, - msg17, -]); - -var part20 = match("MESSAGE#17:mail_continue-system-sendmail", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} action=%{action->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg18 = msg("mail_continue-system-sendmail", part20); - -var part21 = match("MESSAGE#18:mail_release", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} status=%{result->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg19 = msg("mail_release", part21); - -var part22 = match("MESSAGE#19:session_data/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} %{p0}"); - -var part23 = match("MESSAGE#19:session_data/1_0", "nwparser.p0", "rcpt_notroutes=%{fld20->} data_routes=%{fld21}"); - -var part24 = match("MESSAGE#19:session_data/1_1", "nwparser.p0", "rcpt=%{to->} suborg=%{fld22}"); - -var part25 = match("MESSAGE#19:session_data/1_2", "nwparser.p0", "from=%{from->} suborg=%{fld22}"); - -var select7 = linear_select([ - part23, - part24, - part25, -]); - -var all5 = all_match({ - processors: [ - part22, - select7, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg20 = msg("session_data", all5); - -var part26 = match("MESSAGE#20:session_data:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rcpt_notroutes=%{fld20->} data_routes=%{fld21}", processor_chain([ - dup17, - dup9, -])); - -var msg21 = msg("session_data:01", part26); - -var select8 = linear_select([ - msg20, - msg21, -]); - -var part27 = match("MESSAGE#21:session_store", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} folder=%{fld22->} pri=%{fld23->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg22 = msg("session_store", part27); - -var part28 = match("MESSAGE#22:session_store:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} folder=%{fld22->} pri=%{fld23->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg23 = msg("session_store:01", part28); - -var select9 = linear_select([ - msg22, - msg23, -]); - -var part29 = match("MESSAGE#23:session_headers", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} routes=%{fld4->} notroutes=%{fld18}", processor_chain([ - dup17, - dup9, -])); - -var msg24 = msg("session_headers", part29); - -var part30 = match("MESSAGE#24:session_headers:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} routes=%{fld4->} notroutes=%{fld18}", processor_chain([ - dup17, - dup9, -])); - -var msg25 = msg("session_headers:01", part30); - -var select10 = linear_select([ - msg24, - msg25, -]); - -var part31 = match("MESSAGE#25:session_judge/2", "nwparser.p0", "%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename}"); - -var all6 = all_match({ - processors: [ - dup18, - dup47, - part31, - ], - on_success: processor_chain([ - dup17, - dup9, - dup21, - ]), -}); - -var msg26 = msg("session_judge", all6); - -var part32 = match("MESSAGE#26:session_judge:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename}", processor_chain([ - dup17, - dup9, -])); - -var msg27 = msg("session_judge:01", part32); - -var select11 = linear_select([ - msg26, - msg27, -]); - -var part33 = match("MESSAGE#27:session_connect", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} ip=%{hostip->} country=%{location_country->} lip=%{fld24->} prot=%{fld25->} hops_active=%{fld26->} routes=%{fld4->} notroutes=%{fld18->} perlwait=%{fld27}", processor_chain([ - dup17, - dup9, -])); - -var msg28 = msg("session_connect", part33); - -var part34 = match("MESSAGE#28:session_connect:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} ip=%{hostip->} country=%{location_country->} lip=%{fld24->} prot=%{fld25->} hops_active=%{fld26->} routes=%{fld4->} notroutes=%{fld18->} perlwait=%{fld27}", processor_chain([ - dup17, - dup9, -])); - -var msg29 = msg("session_connect:01", part34); - -var select12 = linear_select([ - msg28, - msg29, -]); - -var part35 = match("MESSAGE#29:session_resolve", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} host=%{hostname->} resolve=%{fld28->} reverse=%{fld13->} routes=%{fld4->} notroutes=%{fld18}", processor_chain([ - dup17, - dup9, -])); - -var msg30 = msg("session_resolve", part35); - -var part36 = match("MESSAGE#30:session_resolve:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} host=%{hostname->} resolve=%{fld28->} reverse=%{fld13->} routes=%{fld4->} notroutes=%{fld18}", processor_chain([ - dup17, - dup9, -])); - -var msg31 = msg("session_resolve:01", part36); - -var select13 = linear_select([ - msg30, - msg31, -]); - -var part37 = match("MESSAGE#31:session_throttle", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} ip=%{hostip->} rate=%{fld29->} crate=%{fld30->} limit=%{fld31}", processor_chain([ - dup17, - dup9, -])); - -var msg32 = msg("session_throttle", part37); - -var part38 = match("MESSAGE#32:session_throttle:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} ip=%{hostip->} rate=%{fld29->} crate=%{fld30->} limit=%{fld31}", processor_chain([ - dup17, - dup9, -])); - -var msg33 = msg("session_throttle:01", part38); - -var select14 = linear_select([ - msg32, - msg33, -]); - -var part39 = match("MESSAGE#33:session_dispose", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} rate=%{fld58}", processor_chain([ - dup22, - dup9, -])); - -var msg34 = msg("session_dispose", part39); - -var part40 = match("MESSAGE#34:session_dispose:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} rate=%{fld58}", processor_chain([ - dup22, - dup9, -])); - -var msg35 = msg("session_dispose:01", part40); - -var part41 = match("MESSAGE#35:session_dispose:02/2", "nwparser.p0", "%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action}"); - -var all7 = all_match({ - processors: [ - dup18, - dup47, - part41, - ], - on_success: processor_chain([ - dup22, - dup9, - dup21, - ]), -}); - -var msg36 = msg("session_dispose:02", all7); - -var part42 = match("MESSAGE#36:session_dispose:03", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action}", processor_chain([ - dup22, - dup9, -])); - -var msg37 = msg("session_dispose:03", part42); - -var select15 = linear_select([ - msg34, - msg35, - msg36, - msg37, -]); - -var part43 = match("MESSAGE#37:session_disconnect", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} helo=%{fld32->} msgs=%{fld33->} rcpts=%{dclass_counter2->} routes=%{fld4->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup17, - dup9, - dup13, -])); - -var msg38 = msg("session_disconnect", part43); - -var part44 = match("MESSAGE#38:session_disconnect:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} helo=%{fld32->} msgs=%{fld33->} rcpts=%{dclass_counter2->} routes=%{fld4->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup17, - dup9, - dup13, -])); - -var msg39 = msg("session_disconnect:01", part44); - -var select16 = linear_select([ - msg38, - msg39, -]); - -var part45 = match("MESSAGE#39:av_run:02/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} attachment=%{fld58->} file=%{fld1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} name=%{fld34->} %{p0}"); - -var part46 = match("MESSAGE#39:av_run:02/1_0", "nwparser.p0", "cleaned=%{fld35->} vendor=%{fld36->} duration=%{p0}"); - -var part47 = match("MESSAGE#39:av_run:02/1_2", "nwparser.p0", "vendor=%{fld36->} duration=%{p0}"); - -var select17 = linear_select([ - part46, - dup23, - part47, -]); - -var all8 = all_match({ - processors: [ - part45, - select17, - dup24, - ], - on_success: processor_chain([ - dup25, - dup9, - dup21, - ]), -}); - -var msg40 = msg("av_run:02", all8); - -var part48 = match("MESSAGE#40:av_run:03", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} attachment=%{fld58->} file=%{filename->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} name=%{fld34->} cleaned=%{fld35->} vendor=%{fld36->} duration=%{duration_string}", processor_chain([ - dup25, - dup9, -])); - -var msg41 = msg("av_run:03", part48); - -var part49 = match("MESSAGE#41:av_run/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} %{p0}"); - -var part50 = match("MESSAGE#41:av_run/1_1", "nwparser.p0", "name=%{fld34->} cleaned=%{fld35->} vendor=%{fld36->} duration=%{p0}"); - -var part51 = match("MESSAGE#41:av_run/1_2", "nwparser.p0", "name=%{fld34->} vendor=%{fld36->} duration=%{p0}"); - -var select18 = linear_select([ - dup23, - part50, - part51, -]); - -var all9 = all_match({ - processors: [ - part49, - select18, - dup24, - ], - on_success: processor_chain([ - dup25, - dup9, - ]), -}); - -var msg42 = msg("av_run", all9); - -var part52 = match("MESSAGE#42:av_run:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} name=%{fld34->} cleaned=%{fld35->} vendor=%{fld36->} duration=%{duration_string}", processor_chain([ - dup25, - dup9, -])); - -var msg43 = msg("av_run:01", part52); - -var select19 = linear_select([ - msg40, - msg41, - msg42, - msg43, -]); - -var msg44 = msg("av_refresh", dup48); - -var msg45 = msg("av_init", dup48); - -var part53 = match("MESSAGE#45:av_load", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5}", processor_chain([ - dup26, - dup9, -])); - -var msg46 = msg("av_load", part53); - -var part54 = match("MESSAGE#46:access_run:02", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} attachment=%{fld58->} file=%{filename->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg47 = msg("access_run:02", part54); - -var part55 = match("MESSAGE#47:access_run:04", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} attachment=%{fld58->} file=%{filename->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg48 = msg("access_run:04", part55); - -var msg49 = msg("access_run:03", dup49); - -var msg50 = msg("access_run:01", dup50); - -var select20 = linear_select([ - msg47, - msg48, - msg49, - msg50, -]); - -var part56 = match("MESSAGE#50:access_refresh", "nwparser.payload", "%{fld0->} %{severity->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} action=%{action->} dict=%{fld37->} file=%{filename}", processor_chain([ - dup17, - dup9, -])); - -var msg51 = msg("access_refresh", part56); - -var msg52 = msg("access_refresh:01", dup51); - -var select21 = linear_select([ - msg51, - msg52, -]); - -var msg53 = msg("access_load", dup52); - -var msg54 = msg("regulation_init", dup51); - -var msg55 = msg("regulation_refresh", dup51); - -var part57 = match("MESSAGE#55:spam_run:rule/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} policy=%{fld38->} score=%{fld39->} spamscore=%{reputation_num->} %{p0}"); - -var part58 = match("MESSAGE#55:spam_run:rule/1_0", "nwparser.p0", "ipscore=%{fld40->} suspectscore=%{p0}"); - -var part59 = match("MESSAGE#55:spam_run:rule/1_1", "nwparser.p0", "suspectscore=%{p0}"); - -var select22 = linear_select([ - part58, - part59, -]); - -var part60 = match("MESSAGE#55:spam_run:rule/2", "nwparser.p0", "%{fld41->} phishscore=%{fld42->} %{p0}"); - -var part61 = match("MESSAGE#55:spam_run:rule/3_0", "nwparser.p0", "bulkscore=%{fld43->} adultscore=%{fld44->} classifier=%{p0}"); - -var part62 = match("MESSAGE#55:spam_run:rule/3_1", "nwparser.p0", "adultscore=%{fld44->} bulkscore=%{fld43->} classifier=%{p0}"); - -var select23 = linear_select([ - part61, - part62, -]); - -var part63 = match("MESSAGE#55:spam_run:rule/4", "nwparser.p0", "%{fld45->} adjust=%{fld46->} reason=%{fld47->} scancount=%{fld48->} engine=%{fld49->} definitions=%{fld50->} raw=%{fld51->} tests=%{fld52->} duration=%{duration_string}"); - -var all10 = all_match({ - processors: [ - part57, - select22, - part60, - select23, - part63, - ], - on_success: processor_chain([ - dup27, - dup9, - ]), -}); - -var msg56 = msg("spam_run:rule", all10); - -var part64 = match("MESSAGE#56:spam_run:rule_02", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} policy=%{fld38->} score=%{fld39->} spamscore=%{reputation_num->} ipscore=%{fld40->} suspectscore=%{fld41->} phishscore=%{fld42->} bulkscore=%{fld43->} adultscore=%{fld44->} classifier=%{fld45->} adjust=%{fld46->} reason=%{fld47->} scancount=%{fld48->} engine=%{fld49->} definitions=%{fld50->} raw=%{fld51->} tests=%{fld52->} duration=%{duration_string}", processor_chain([ - dup27, - dup9, -])); - -var msg57 = msg("spam_run:rule_02", part64); - -var part65 = match("MESSAGE#57:spam_run:rule_03", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} policy=%{fld38->} score=%{fld39->} ndrscore=%{fld57->} ipscore=%{fld40->} suspectscore=%{fld41->} phishscore=%{fld42->} bulkscore=%{fld43->} spamscore=%{reputation_num->} adjustscore=%{fld58->} adultscore=%{fld44->} classifier=%{fld45->} adjust=%{fld46->} reason=%{fld47->} scancount=%{fld48->} engine=%{fld49->} definitions=%{fld50->} raw=%{fld51->} tests=%{fld52->} duration=%{duration_string}", processor_chain([ - dup27, - dup9, -])); - -var msg58 = msg("spam_run:rule_03", part65); - -var part66 = match("MESSAGE#58:spam_run:rule_04", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} policy=%{fld38->} score=%{fld39->} kscore.is_bulkscore=%{fld57->} kscore.compositescore=%{fld40->} circleOfTrustscore=%{fld41->} compositescore=%{fld42->} urlsuspect_oldscore=%{fld43->} suspectscore=%{reputation_num->} recipient_domain_to_sender_totalscore=%{fld58->} phishscore=%{fld44->} bulkscore=%{fld45->} kscore.is_spamscore=%{fld46->} recipient_to_sender_totalscore=%{fld47->} recipient_domain_to_sender_domain_totalscore=%{fld48->} rbsscore=%{fld49->} spamscore=%{fld50->} recipient_to_sender_domain_totalscore=%{fld51->} urlsuspectscore=%{fld52->} %{fld53->} duration=%{duration_string}", processor_chain([ - dup27, - dup9, -])); - -var msg59 = msg("spam_run:rule_04", part66); - -var part67 = match("MESSAGE#59:spam_run:rule_05", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} policy=%{fld38->} score=%{fld39->} ndrscore=%{fld53->} suspectscore=%{fld40->} malwarescore=%{fld41->} phishscore=%{fld42->} bulkscore=%{fld43->} spamscore=%{reputation_num->} adjustscore=%{fld54->} adultscore=%{fld44->} classifier=%{fld45->} adjust=%{fld46->} reason=%{fld47->} scancount=%{fld48->} engine=%{fld49->} definitions=%{fld50->} raw=%{fld51->} tests=%{fld52->} duration=%{duration_string}", processor_chain([ - dup27, - dup9, -])); - -var msg60 = msg("spam_run:rule_05", part67); - -var part68 = match("MESSAGE#60:spam_run:rule_06", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} mod=%{agent->} total_uri_count=%{dclass_counter1->} uris_excluded_from_report_info=%{dclass_counter2}", processor_chain([ - dup27, - dup9, -])); - -var msg61 = msg("spam_run:rule_06", part68); - -var part69 = match("MESSAGE#61:spam_run:action_01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} action=%{action->} score=%{fld39->} submsgadjust=%{fld53->} spamscore=%{reputation_num->} ipscore=%{fld40->} suspectscore=%{fld41->} phishscore=%{fld42->} bulkscore=%{fld43->} adultscore=%{fld44->} tests=%{fld52}", processor_chain([ - dup27, - dup9, -])); - -var msg62 = msg("spam_run:action_01", part69); - -var part70 = match("MESSAGE#62:spam_run:action", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} action=%{action->} score=%{fld39->} submsgadjust=%{fld53->} spamscore=%{reputation_num->} ipscore=%{fld40->} suspectscore=%{fld41->} phishscore=%{fld42->} bulkscore=%{fld43->} adultscore=%{fld44->} tests=%{fld52}", processor_chain([ - dup27, - dup9, -])); - -var msg63 = msg("spam_run:action", part70); - -var part71 = match("MESSAGE#63:spam_run:action_02", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} action=%{action->} num_domains=%{fld53->} num_domains_to_lookup=%{fld40}", processor_chain([ - dup27, - dup9, -])); - -var msg64 = msg("spam_run:action_02", part71); - -var select24 = linear_select([ - msg56, - msg57, - msg58, - msg59, - msg60, - msg61, - msg62, - msg63, - msg64, -]); - -var msg65 = msg("spam_refresh", dup53); - -var msg66 = msg("spam_init", dup53); - -var part72 = match("MESSAGE#66:spam_load", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5}", processor_chain([ - dup27, - dup9, -])); - -var msg67 = msg("spam_load", part72); - -var part73 = match("MESSAGE#67:batv_run", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} policy=%{fld38->} address=%{fld54}", processor_chain([ - dup17, - dup9, -])); - -var msg68 = msg("batv_run", part73); - -var part74 = match("MESSAGE#68:batv_run:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} policy=%{fld38->} address=%{fld54}", processor_chain([ - dup17, - dup9, -])); - -var msg69 = msg("batv_run:01", part74); - -var msg70 = msg("batv_run:02", dup49); - -var msg71 = msg("batv_run:03", dup50); - -var select25 = linear_select([ - msg68, - msg69, - msg70, - msg71, -]); - -var msg72 = msg("zerohour_refresh", dup54); - -var msg73 = msg("zerohour_init", dup54); - -var msg74 = msg("zerohour_load", dup52); - -var part75 = match("MESSAGE#74:zerohour_run", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} count=%{fld2->} name=%{fld34->} init_time=%{fld3->} init_virusthreat=%{fld4->} virusthreat=%{fld5->} virusthreatid=%{fld6->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg75 = msg("zerohour_run", part75); - -var part76 = match("MESSAGE#75:zerohour_run:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} count=%{fld2->} name=%{fld34->} init_time=%{fld3->} init_virusthreat=%{fld4->} virusthreat=%{fld5->} virusthreatid=%{fld6->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg76 = msg("zerohour_run:01", part76); - -var select26 = linear_select([ - msg75, - msg76, -]); - -var part77 = match("MESSAGE#76:service_refresh", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg77 = msg("service_refresh", part77); - -var part78 = match("MESSAGE#77:perl_clone", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type->} id=%{fld5->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg78 = msg("perl_clone", part78); - -var part79 = match("MESSAGE#78:cvt_convert", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} cset=%{fld56->} name=%{fld34->} status=%{result->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg79 = msg("cvt_convert", part79); - -var part80 = match("MESSAGE#79:cvt_convert:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} cset=%{fld56->} name=%{fld34->} status=%{result->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg80 = msg("cvt_convert:01", part80); - -var part81 = match("MESSAGE#80:cvt_convert:02", "nwparser.payload", "%{fld0->} %{severity->} pid=%{process_id->} mod=%{agent->} cmd=%{obj_type->} cset=%{fld56->} name=%{fld34->} status=%{result->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg81 = msg("cvt_convert:02", part81); - -var select27 = linear_select([ - msg79, - msg80, - msg81, -]); - -var part82 = match("MESSAGE#81:cvt_detect", "nwparser.payload", "%{fld0->} %{severity->} pid=%{process_id->} mod=%{agent->} cmd=%{obj_type->} name=%{fld34->} status=%{result->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg82 = msg("cvt_detect", part82); - -var msg83 = msg("cvtd:01", dup55); - -var msg84 = msg("cvtd", dup56); - -var select28 = linear_select([ - msg83, - msg84, -]); - -var part83 = match("MESSAGE#84:cvtd_encrypted", "nwparser.payload", "%{fld0->} %{severity->} pid=%{fld5->} mod=%{agent->} encrypted=%{fld6}", processor_chain([ - dup17, - dup9, -])); - -var msg85 = msg("cvtd_encrypted", part83); - -var msg86 = msg("filter:01", dup55); - -var msg87 = msg("filter", dup56); - -var select29 = linear_select([ - msg86, - msg87, -]); - -var msg88 = msg("soap_listen", dup57); - -var msg89 = msg("http_listen", dup57); - -var part84 = match("MESSAGE#89:mltr", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} %{event_description}", processor_chain([ - dup17, - dup9, -])); - -var msg90 = msg("mltr", part84); - -var msg91 = msg("milter_listen", dup57); - -var msg92 = msg("smtpsrv_load", dup52); - -var msg93 = msg("smtpsrv_listen", dup57); - -var part85 = match("MESSAGE#93:smtpsrv_run", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg94 = msg("smtpsrv_run", part85); - -var part86 = match("MESSAGE#94:smtpsrv/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} %{p0}"); - -var part87 = match("MESSAGE#94:smtpsrv/1_0", "nwparser.p0", "%{result->} err=%{fld58}"); - -var part88 = match_copy("MESSAGE#94:smtpsrv/1_1", "nwparser.p0", "result"); - -var select30 = linear_select([ - part87, - part88, -]); - -var all11 = all_match({ - processors: [ - part86, - select30, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg95 = msg("smtpsrv", all11); - -var part89 = match("MESSAGE#95:send", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} cmd=%{obj_type->} profile=%{fld52->} qid=%{fld15->} rcpts=%{to}", processor_chain([ - dup17, - dup9, -])); - -var msg96 = msg("send", part89); - -var part90 = match("MESSAGE#96:send:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} cmd=%{obj_type->} profile=%{fld52->} qid=%{fld15->} rcpts=%{to}", processor_chain([ - dup17, - dup9, -])); - -var msg97 = msg("send:01", part90); - -var part91 = match("MESSAGE#97:send:02", "nwparser.payload", "%{fld0}: %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} cmd=%{obj_type->} rcpt=%{to->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg98 = msg("send:02", part91); - -var select31 = linear_select([ - msg96, - msg97, - msg98, -]); - -var part92 = match("MESSAGE#98:queued-alert/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld51}: to=%{to}, delay=%{fld53}, xdelay=%{fld54}, mailer=%{p0}"); - -var part93 = match("MESSAGE#98:queued-alert/1_0", "nwparser.p0", "%{fld55->} tls_verify=%{fld70}, pri=%{p0}"); - -var part94 = match("MESSAGE#98:queued-alert/1_1", "nwparser.p0", "%{fld55}, pri=%{p0}"); - -var select32 = linear_select([ - part93, - part94, -]); - -var part95 = match("MESSAGE#98:queued-alert/2", "nwparser.p0", "%{fld23}, relay=%{p0}"); - -var all12 = all_match({ - processors: [ - part92, - select32, - part95, - dup58, - dup32, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg99 = msg("queued-alert", all12); - -var part96 = match("MESSAGE#99:queued-alert:01/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: from=%{from}, size=%{bytes}, class=%{fld57}, nrcpts=%{fld58}, msgid=%{id}, proto=%{protocol}, daemon=%{fld69}, tls_verify=%{fld70}, auth=%{authmethod}, relay=%{p0}"); - -var part97 = match("MESSAGE#99:queued-alert:01/1_0", "nwparser.p0", "[%{fld50}] [%{daddr}]"); - -var select33 = linear_select([ - part97, - dup33, - dup34, - dup35, -]); - -var all13 = all_match({ - processors: [ - part96, - select33, - ], - on_success: processor_chain([ - dup17, - dup9, - dup36, - ]), -}); - -var msg100 = msg("queued-alert:01", all13); - -var part98 = match("MESSAGE#100:queued-alert:02/1_0", "nwparser.p0", "[%{fld50}] [%{daddr}],%{p0}"); - -var select34 = linear_select([ - part98, - dup29, - dup30, - dup31, -]); - -var part99 = match("MESSAGE#100:queued-alert:02/2", "nwparser.p0", "%{}version=%{version}, verify=%{fld57}, cipher=%{s_cipher}, bits=%{fld59}"); - -var all14 = all_match({ - processors: [ - dup37, - select34, - part99, - ], - on_success: processor_chain([ - dup17, - dup9, - dup36, - ]), -}); - -var msg101 = msg("queued-alert:02", all14); - -var select35 = linear_select([ - msg99, - msg100, - msg101, -]); - -var msg102 = msg("queued-VoltageEncrypt", dup63); - -var msg103 = msg("queued-VoltageEncrypt:01", dup64); - -var select36 = linear_select([ - msg102, - msg103, -]); - -var msg104 = msg("queued-default", dup63); - -var msg105 = msg("queued-default:01", dup64); - -var msg106 = msg("queued-default:02", dup65); - -var msg107 = msg("queued-default:03", dup66); - -var msg108 = msg("queued-default:04", dup60); - -var select37 = linear_select([ - msg104, - msg105, - msg106, - msg107, - msg108, -]); - -var msg109 = msg("queued-reinject", dup63); - -var msg110 = msg("queued-reinject:01", dup64); - -var msg111 = msg("queued-reinject:02", dup65); - -var msg112 = msg("queued-reinject:03", dup66); - -var part100 = match("MESSAGE#111:queued-reinject:05", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: maxrcpts=%{fld56}, rcpts=%{fld57}, count=%{fld58}, ids=%{fld59}", processor_chain([ - dup17, - dup9, -])); - -var msg113 = msg("queued-reinject:05", part100); - -var msg114 = msg("queued-reinject:04", dup60); - -var msg115 = msg("queued-reinject:06", dup61); - -var select38 = linear_select([ - msg109, - msg110, - msg111, - msg112, - msg113, - msg114, - msg115, -]); - -var part101 = match("MESSAGE#114:queued-eurort/2", "nwparser.p0", "%{}version=%{version}, verify=%{disposition}, cipher=%{fld58}, bits=%{fld59}"); - -var all15 = all_match({ - processors: [ - dup37, - dup58, - part101, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg116 = msg("queued-eurort", all15); - -var msg117 = msg("queued-eurort:01", dup63); - -var msg118 = msg("queued-eurort:02", dup67); - -var msg119 = msg("queued-eurort:03", dup60); - -var select39 = linear_select([ - msg116, - msg117, - msg118, - msg119, -]); - -var msg120 = msg("queued-vdedc2v5", dup63); - -var msg121 = msg("queued-vdedc2v5:01", dup67); - -var select40 = linear_select([ - msg120, - msg121, -]); - -var msg122 = msg("sm-msp-queue", dup66); - -var part102 = match("MESSAGE#122:sm-msp-queue:01", "nwparser.payload", "%{agent}[%{process_id}]: starting daemon (%{fld7}): %{fld6}", processor_chain([ - setc("eventcategory","1605000000"), - dup9, -])); - -var msg123 = msg("sm-msp-queue:01", part102); - -var part103 = match("MESSAGE#123:sm-msp-queue:02/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: to=%{to}, ctladdr=%{fld13}, delay=%{fld53}, xdelay=%{fld54}, mailer=%{fld55}, pri=%{fld23}, relay=%{p0}"); - -var all16 = all_match({ - processors: [ - part103, - dup58, - dup32, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg124 = msg("sm-msp-queue:02", all16); - -var select41 = linear_select([ - msg122, - msg123, - msg124, -]); - -var part104 = match("MESSAGE#124:sendmail:15/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: to=%{to}, delay=%{fld53}, xdelay=%{fld54}, mailer=%{fld55}, tls_verify=%{fld24}, pri=%{fld23}, relay=%{p0}"); - -var part105 = match("MESSAGE#124:sendmail:15/1_1", "nwparser.p0", "%{dhost}. [%{daddr}],%{p0}"); - -var part106 = match("MESSAGE#124:sendmail:15/1_2", "nwparser.p0", "%{dhost}.,%{p0}"); - -var select42 = linear_select([ - dup28, - part105, - part106, -]); - -var all17 = all_match({ - processors: [ - part104, - select42, - dup32, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg125 = msg("sendmail:15", all17); - -var part107 = match("MESSAGE#125:sendmail:14/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: from=%{from}, size=%{bytes}, class=%{fld54}, nrcpts=%{fld55}, msgid=%{id}, proto=%{protocol}, daemon=%{p0}"); - -var part108 = match("MESSAGE#125:sendmail:14/1_0", "nwparser.p0", "%{fld69}, tls_verify=%{fld70}, auth=%{authmethod}, relay=%{p0}"); - -var part109 = match("MESSAGE#125:sendmail:14/1_1", "nwparser.p0", "%{fld69}, relay=%{p0}"); - -var select43 = linear_select([ - part108, - part109, -]); - -var all18 = all_match({ - processors: [ - part107, - select43, - dup59, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg126 = msg("sendmail:14", all18); - -var msg127 = msg("sendmail", dup68); - -var part110 = match("MESSAGE#127:sendmail:01", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: available mech=%{fld2}, allowed mech=%{fld3}", processor_chain([ - dup17, - dup9, -])); - -var msg128 = msg("sendmail:01", part110); - -var part111 = match("MESSAGE#128:sendmail:02", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: milter=%{fld2}, action=%{action}, reject=%{fld3}", processor_chain([ - dup17, - dup9, -])); - -var msg129 = msg("sendmail:02", part111); - -var part112 = match("MESSAGE#129:sendmail:03", "nwparser.payload", "%{agent}[%{process_id}]: %{fld51}: %{fld57}: host=%{hostname}, addr=%{saddr}, reject=%{fld3}", processor_chain([ - dup17, - dup9, -])); - -var msg130 = msg("sendmail:03", part112); - -var part113 = match("MESSAGE#130:sendmail:08", "nwparser.payload", "%{fld10->} %{agent}[%{process_id}]: %{fld1}: Milter %{action}: %{fld2}: %{fld3}: vendor=%{fld36->} engine=%{fld49->} definitions=%{fld50->} signatures=%{fld94}", processor_chain([ - dup17, - dup9, -])); - -var msg131 = msg("sendmail:08", part113); - -var part114 = match("MESSAGE#131:sendmail:09", "nwparser.payload", "%{fld10->} %{agent}[%{process_id}]: %{fld1}: Milter %{action}: %{fld2}: %{fld3}: rule=%{rulename->} policy=%{fld38->} score=%{fld39->} spamscore=%{reputation_num->} suspectscore=%{fld41->} phishscore=%{fld42->} adultscore=%{fld44->} bulkscore=%{fld43->} classifier=%{fld45->} adjust=%{fld46->} reason=%{fld47->} scancount=%{fld48->} engine=%{fld49->} definitions=%{fld50}", processor_chain([ - dup17, - dup9, -])); - -var msg132 = msg("sendmail:09", part114); - -var part115 = match("MESSAGE#132:sendmail:10/0", "nwparser.payload", "%{fld10->} %{agent}[%{process_id}]: %{fld1}: Milter %{action}: rcpt%{p0}"); - -var part116 = match("MESSAGE#132:sendmail:10/1_0", "nwparser.p0", ": %{p0}"); - -var part117 = match_copy("MESSAGE#132:sendmail:10/1_1", "nwparser.p0", "p0"); - -var select44 = linear_select([ - part116, - part117, -]); - -var part118 = match("MESSAGE#132:sendmail:10/2", "nwparser.p0", "%{} %{fld2}"); - -var all19 = all_match({ - processors: [ - part115, - select44, - part118, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg133 = msg("sendmail:10", all19); - -var part119 = match("MESSAGE#133:sendmail:11/0", "nwparser.payload", "%{fld10->} %{agent}[%{process_id}]: STARTTLS=%{fld1}, relay=%{p0}"); - -var all20 = all_match({ - processors: [ - part119, - dup58, - dup42, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg134 = msg("sendmail:11", all20); - -var part120 = match("MESSAGE#134:sendmail:12", "nwparser.payload", "%{fld10->} %{agent}[%{process_id}]: %{fld1}: SYSERR(%{fld2}): %{action}: %{event_description->} from %{from}, from=%{fld3}", processor_chain([ - dup17, - dup9, -])); - -var msg135 = msg("sendmail:12", part120); - -var part121 = match("MESSAGE#135:sendmail:13/0_0", "nwparser.payload", "%{fld10->} %{agent}]%{p0}"); - -var part122 = match("MESSAGE#135:sendmail:13/0_1", "nwparser.payload", "%{agent}]%{p0}"); - -var select45 = linear_select([ - part121, - part122, -]); - -var part123 = match("MESSAGE#135:sendmail:13/1", "nwparser.p0", "%{process_id}[: %{fld1}: SYSERR(%{fld2}): %{action}: %{event_description->} file %{filename}: %{fld3}"); - -var all21 = all_match({ - processors: [ - select45, - part123, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg136 = msg("sendmail:13", all21); - -var part124 = match("MESSAGE#136:sendmail:04", "nwparser.payload", "%{agent}[%{process_id}]: %{fld51}: %{fld57}:%{event_description}", processor_chain([ - dup17, - dup9, -])); - -var msg137 = msg("sendmail:04", part124); - -var part125 = match("MESSAGE#137:sendmail:05", "nwparser.payload", "%{agent}[%{process_id}]: %{fld51}:%{event_description}", processor_chain([ - dup17, - dup9, -])); - -var msg138 = msg("sendmail:05", part125); - -var part126 = match("MESSAGE#169:sendmail:06/0", "nwparser.payload", "%{agent}[%{process_id}]: AUTH=%{authmethod}, relay=%{p0}"); - -var part127 = match("MESSAGE#169:sendmail:06/2", "nwparser.p0", "%{}authid=%{uid}, mech=%{scheme}, bits=%{fld59}"); - -var all22 = all_match({ - processors: [ - part126, - dup58, - part127, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg139 = msg("sendmail:06", all22); - -var msg140 = msg("sendmail:07", dup61); - -var select46 = linear_select([ - msg125, - msg126, - msg127, - msg128, - msg129, - msg130, - msg131, - msg132, - msg133, - msg134, - msg135, - msg136, - msg137, - msg138, - msg139, - msg140, -]); - -var part128 = match("MESSAGE#138:info:eid_pid_status", "nwparser.payload", "%{fld0->} %{severity->} eid=%{fld4->} pid=%{process_id->} status=%{fld29}", processor_chain([ - dup17, - dup9, -])); - -var msg141 = msg("info:eid_pid_status", part128); - -var part129 = match("MESSAGE#139:info:eid_status", "nwparser.payload", "%{fld0->} %{severity->} eid=%{fld4->} status=%{fld29}", processor_chain([ - dup17, - dup9, -])); - -var msg142 = msg("info:eid_status", part129); - -var part130 = match("MESSAGE#140:info:eid", "nwparser.payload", "%{fld0->} %{severity->} eid=%{fld4->} %{info}", processor_chain([ - dup17, - dup9, -])); - -var msg143 = msg("info:eid", part130); - -var msg144 = msg("info:pid", dup62); - -var part131 = match("MESSAGE#143:info/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{p0}"); - -var part132 = match("MESSAGE#143:info/1_0", "nwparser.p0", "%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} ofrom=%{from}"); - -var part133 = match("MESSAGE#143:info/1_1", "nwparser.p0", "%{sessionid1->} status=%{info->} restquery_stage=%{fld3}"); - -var part134 = match_copy("MESSAGE#143:info/1_2", "nwparser.p0", "sessionid1"); - -var select47 = linear_select([ - part132, - part133, - part134, -]); - -var all23 = all_match({ - processors: [ - part131, - select47, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg145 = msg("info", all23); - -var part135 = match("MESSAGE#144:info:02", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} sys=%{fld1->} evt=%{action->} active=%{fld2->} expires=%{fld3->} msg=%{event_description}", processor_chain([ - dup17, - dup9, -])); - -var msg146 = msg("info:02", part135); - -var part136 = match("MESSAGE#145:info:03", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} server=%{saddr->} elapsed=%{duration_string->} avgtime=%{fld2->} qname=%{fld3->} qtype=%{fld4}", processor_chain([ - dup17, - dup9, -])); - -var msg147 = msg("info:03", part136); - -var part137 = match("MESSAGE#146:info:01", "nwparser.payload", "%{fld0->} %{severity->} %{web_method->} /%{info}: %{resultcode}", processor_chain([ - dup17, - dup9, -])); - -var msg148 = msg("info:01", part137); - -var part138 = match("MESSAGE#147:info:04/0", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} sys=%{fld1->} evt=%{p0}"); - -var part139 = match("MESSAGE#147:info:04/1_0", "nwparser.p0", "%{action->} msg=%{event_description}"); - -var part140 = match_copy("MESSAGE#147:info:04/1_1", "nwparser.p0", "action"); - -var select48 = linear_select([ - part139, - part140, -]); - -var all24 = all_match({ - processors: [ - part138, - select48, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg149 = msg("info:04", all24); - -var part141 = match("MESSAGE#148:info:05/0", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} %{p0}"); - -var part142 = match("MESSAGE#148:info:05/1_0", "nwparser.p0", "type=%{fld6->} cmd=%{obj_type->} id=%{fld5}"); - -var part143 = match("MESSAGE#148:info:05/1_1", "nwparser.p0", "cmd=%{obj_type}"); - -var select49 = linear_select([ - part142, - part143, -]); - -var all25 = all_match({ - processors: [ - part141, - select49, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg150 = msg("info:05", all25); - -var select50 = linear_select([ - msg141, - msg142, - msg143, - msg144, - msg145, - msg146, - msg147, - msg148, - msg149, - msg150, -]); - -var msg151 = msg("note:pid", dup62); - -var part144 = match("MESSAGE#149:note:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} module=%{agent->} action=%{action->} size=%{bytes}", processor_chain([ - dup17, - dup9, -])); - -var msg152 = msg("note:01", part144); - -var select51 = linear_select([ - msg151, - msg152, -]); - -var part145 = match("MESSAGE#150:rprt", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} secprofile_name=%{fld3->} rcpts=%{dclass_counter2->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var msg153 = msg("rprt", part145); - -var part146 = match("MESSAGE#151:err", "nwparser.payload", "%{fld0->} %{severity->} eid=%{fld4->} module=%{agent->} age=%{fld6->} limit=%{fld31}", processor_chain([ - dup17, - dup9, -])); - -var msg154 = msg("err", part146); - -var part147 = match("MESSAGE#152:warn", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} eid=%{fld4->} result=%{result}", processor_chain([ - dup17, - dup9, -])); - -var msg155 = msg("warn", part147); - -var part148 = match("MESSAGE#153:warn:01", "nwparser.payload", "%{fld0->} %{severity->} eid=%{fld4->} status=\"%{event_state->} file: %{filename}\"", processor_chain([ - dup17, - dup9, -])); - -var msg156 = msg("warn:01", part148); - -var part149 = match("MESSAGE#154:warn:02", "nwparser.payload", "%{fld0->} %{severity->} eid=%{fld4->} status=\"%{event_state->} file %{filename->} does not contain enough (or correct) info. Fix this or remove the file.\"", processor_chain([ - dup17, - dup9, - setc("event_description","does not contain enough (or correct) info. Fix this or remove the file"), -])); - -var msg157 = msg("warn:02", part149); - -var select52 = linear_select([ - msg155, - msg156, - msg157, -]); - -var msg158 = msg("queued-aglife", dup68); - -var msg159 = msg("pdr_run", dup50); - -var part150 = match("MESSAGE#157:pdr_ttl/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} ttl=%{fld1->} reply=\"%{p0}"); - -var part151 = match("MESSAGE#157:pdr_ttl/1_0", "nwparser.p0", "\\\"%{fld2->} rscore=%{fld3}\\\"\""); - -var part152 = match("MESSAGE#157:pdr_ttl/1_1", "nwparser.p0", "%{fld2}\""); - -var select53 = linear_select([ - part151, - part152, -]); - -var all26 = all_match({ - processors: [ - part150, - select53, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var msg160 = msg("pdr_ttl", all26); - -var part153 = match("MESSAGE#158:dkimv_run:signature", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} signature=%{fld1->} identity=%{sigid_string->} host=%{hostname->} result=%{result->} result_detail=%{fld2}", processor_chain([ - dup17, - dup9, -])); - -var msg161 = msg("dkimv_run:signature", part153); - -var part154 = match("MESSAGE#159:dkimv_run:status", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} status=\"%{info}, %{event_state}\"", processor_chain([ - dup17, - dup9, -])); - -var msg162 = msg("dkimv_run:status", part154); - -var select54 = linear_select([ - msg161, - msg162, -]); - -var part155 = match("MESSAGE#160:dkimv_type", "nwparser.payload", "%{fld0}: %{severity->} mod=%{agent->} unexpected response type=%{fld1}", processor_chain([ - dup17, - dup9, - setc("result","unexpected response"), -])); - -var msg163 = msg("dkimv_type", part155); - -var part156 = match("MESSAGE#161:dkimv_type:01", "nwparser.payload", "%{fld0}: %{severity->} mod=%{agent->} type=%{fld1->} cmd=%{obj_type->} id=%{fld5->} publickey_cache_entries=%{fld6}", processor_chain([ - dup17, - dup9, -])); - -var msg164 = msg("dkimv_type:01", part156); - -var select55 = linear_select([ - msg163, - msg164, -]); - -var msg165 = msg("dmarc_run:rule", dup49); - -var part157 = match("MESSAGE#163:dmarc_run:result", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} result=%{result->} result_detail=%{fld2}", processor_chain([ - dup17, - dup9, -])); - -var msg166 = msg("dmarc_run:result", part157); - -var select56 = linear_select([ - msg165, - msg166, -]); - -var part158 = match("MESSAGE#164:dmarc_type", "nwparser.payload", "%{fld0}: %{severity->} mod=%{agent->} type=%{fld1->} cmd=%{obj_type->} id=%{fld5->} policy_cache_entries=%{fld6}", processor_chain([ - dup17, - dup9, -])); - -var msg167 = msg("dmarc_type", part158); - -var msg168 = msg("spf_run:rule", dup49); - -var part159 = match("MESSAGE#166:spf_run:cmd", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} cmd=%{obj_type->} result=%{result}", processor_chain([ - dup17, - dup9, -])); - -var msg169 = msg("spf_run:cmd", part159); - -var select57 = linear_select([ - msg168, - msg169, -]); - -var part160 = match("MESSAGE#167:action_checksubmsg", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} action=%{action->} score=%{fld39->} submsgadjust=%{fld53->} spamscore=%{reputation_num->} suspectscore=%{fld41->} malwarescore=%{fld49->} phishscore=%{fld42->} adultscore=%{fld44->} bulkscore=%{fld43->} tests=%{fld52}", processor_chain([ - dup17, - dup9, -])); - -var msg170 = msg("action_checksubmsg", part160); - -var part161 = match("MESSAGE#168:rest_oauth", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type->} authscope=%{fld5->} err=%{fld58}", processor_chain([ - dup17, - dup9, -])); - -var msg171 = msg("rest_oauth", part161); - -var part162 = match("MESSAGE#171:filter_instance1:01", "nwparser.payload", "mod=%{agent->} type=%{fld1->} cmd=%{obj_type->} id=%{id->} load smartid ccard", processor_chain([ - dup17, - dup9, - setc("event_description","load smartid ccard"), - dup36, -])); - -var msg172 = msg("filter_instance1:01", part162); - -var part163 = match("MESSAGE#172:filter_instance1:02", "nwparser.payload", "mod=%{agent->} type=%{fld1->} cmd=%{obj_type->} id=%{id->} load smartid jcb", processor_chain([ - dup17, - dup9, - setc("event_description","load smartid jcb"), - dup36, -])); - -var msg173 = msg("filter_instance1:02", part163); - -var part164 = match("MESSAGE#173:filter_instance1:03/0", "nwparser.payload", "s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} attachments=%{dclass_counter1->} rcpts=%{dclass_counter2->} routes=%{fld4->} size=%{bytes->} guid=%{fld14->} hdr_mid=%{id->} qid=%{fld15->} subject=\"%{subject}\" %{p0}"); - -var part165 = match("MESSAGE#173:filter_instance1:03/1_0", "nwparser.p0", "spamscore=%{reputation_num->} virusname=%{threat_name->} duration=%{p0}"); - -var part166 = match("MESSAGE#173:filter_instance1:03/1_1", "nwparser.p0", "duration=%{p0}"); - -var select58 = linear_select([ - part165, - part166, -]); - -var part167 = match("MESSAGE#173:filter_instance1:03/2", "nwparser.p0", "%{fld16->} elapsed=%{duration_string}"); - -var all27 = all_match({ - processors: [ - part164, - select58, - part167, - ], - on_success: processor_chain([ - dup11, - dup9, - dup12, - dup13, - dup36, - ]), -}); - -var msg174 = msg("filter_instance1:03", all27); - -var part168 = match("MESSAGE#174:filter_instance1:04", "nwparser.payload", "s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} module=%{event_source->} rule=%{rulename->} action=%{action->} helo=%{fld32->} msgs=%{fld33->} rcpts=%{dclass_counter2->} routes=%{fld4->} duration=%{duration_string->} elapsed=%{fld16}", processor_chain([ - dup17, - dup9, - dup13, - dup36, -])); - -var msg175 = msg("filter_instance1:04", part168); - -var part169 = match("MESSAGE#175:filter_instance1:05", "nwparser.payload", "s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} header.from=\"\\\"%{info}\\\" %{fld4->} \u003c\u003c%{user_address}>\"", processor_chain([ - dup17, - dup9, - dup36, -])); - -var msg176 = msg("filter_instance1:05", part169); - -var part170 = tagval("MESSAGE#176:filter_instance1", "nwparser.payload", tvm, { - "X-Proofpoint-Spam-Details": "fld71", - "a": "fld12", - "action": "action", - "active": "fld2", - "addr": "saddr", - "adjust": "fld46", - "adjustscore": "fld54", - "adultscore": "fld44", - "alert": "fld53", - "attachments": "fld80", - "avgtime": "fld2", - "bulkscore": "fld43", - "cipher": "s_cipher", - "cipher_bits": "fld59", - "classifier": "fld45", - "cmd": "obj_type", - "corrupted": "fld9", - "country": "location_country", - "data_notroutes": "fld32", - "data_routes": "fld31", - "definitions": "fld50", - "delegate-for": "fld5", - "dict": "fld87", - "dkimresult": "fld65", - "duration": "duration_string", - "elapsed": "duration_string", - "engine": "fld49", - "evt": "action", - "expires": "fld3", - "file": "filename", - "from": "from", - "guid": "fld14", - "hdr_mid": "id", - "header-size": "bytes", - "header.from": "fld40", - "helo": "fld32", - "hops-ip": "fld61", - "hops_active": "fld26", - "host": "hostname", - "id": "id", - "install_dir": "directory", - "instance": "fld90", - "ip": "hostip", - "ksurl": "fld7", - "lint": "fld33", - "lip": "fld24", - "m": "mail_id", - "malwarescore": "fld41", - "maxfd": "fld91", - "method": "fld37", - "mime": "content_type", - "mlxlogscore": "fld95", - "mlxscore": "fld94", - "mod": "agent", - "module": "event_source", - "msg": "msg", - "msgs": "fld76", - "notroutes": "fld18", - "num_domains": "fld53", - "num_domains_to_lookup": "fld40", - "oext": "fld8", - "omime": "fld7", - "perlwait": "fld27", - "phishscore": "fld42", - "pid": "process_id", - "policy": "fld48", - "policy_cache_entries": "fld6", - "profile": "fld52", - "prot": "fld25", - "protected": "fld10", - "publickey_cache_entries": "fld6", - "qid": "fld15", - "qname": "fld3", - "qtype": "fld4", - "query": "fld38", - "r": "event_counter", - "rcpt": "to", - "rcpt_notroutes": "fld29", - "rcpt_routes": "fld28", - "rcpts": "fld59", - "realm": "fld61", - "reason": "fld47", - "record": "fld39", - "release": "fld92", - "resolve": "fld28", - "result": "result", - "result_detail": "fld74", - "result_record": "fld2", - "reverse": "fld13", - "rewritten": "fld17", - "routes": "fld4", - "rule": "rulename", - "s": "sessionid", - "scancount": "fld18", - "score": "fld39", - "server": "saddr", - "sha256": "checksum", - "sig": "fld60", - "signatures": "fld94", - "size": "bytes", - "smtp.mailfrom": "fld44", - "spamscore": "reputation_num", - "spfresult": "fld68", - "subject": "subject", - "submsgadjust": "fld53", - "suborg": "fld22", - "suspectscore": "fld41", - "sys": "fld1", - "tests": "fld52", - "threshold": "fld11", - "tls": "fld60", - "tls_version": "fld84", - "type": "fld1", - "uid": "uid", - "user": "username", - "value": "context", - "vendor": "fld36", - "verified": "fld3", - "verify": "fld57", - "version": "version", - "virtual": "fld11", - "virusname": "threat_name", - "x": "sessionid1", -}, processor_chain([ - dup17, - dup36, -])); - -var msg177 = msg("filter_instance1", part170); - -var select59 = linear_select([ - msg172, - msg173, - msg174, - msg175, - msg176, - msg177, -]); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "access_load": msg53, - "access_refresh": select21, - "access_run": select20, - "action_checksubmsg": msg170, - "av_init": msg45, - "av_load": msg46, - "av_refresh": msg44, - "av_run": select19, - "batv_run": select25, - "cvt_convert": select27, - "cvt_detect": msg82, - "cvtd": select28, - "cvtd_encrypted": msg85, - "dkimv_run": select54, - "dkimv_type": select55, - "dmarc_run": select56, - "dmarc_type": msg167, - "err": msg154, - "filter": select29, - "filter_instance1": select59, - "http_listen": msg89, - "info": select50, - "mail_attachment": select3, - "mail_continue-system-sendmail": msg18, - "mail_env_from": select5, - "mail_env_rcpt": select2, - "mail_helo": select6, - "mail_msg": select4, - "mail_release": msg19, - "milter_listen": msg91, - "mltr": msg90, - "note": select51, - "pdr_run": msg159, - "pdr_ttl": msg160, - "perl_clone": msg78, - "queued-VoltageEncrypt": select36, - "queued-aglife": msg158, - "queued-alert": select35, - "queued-default": select37, - "queued-eurort": select39, - "queued-reinject": select38, - "queued-vdedc2v5": select40, - "regulation_init": msg54, - "regulation_refresh": msg55, - "rest_oauth": msg171, - "rprt": msg153, - "send": select31, - "sendmail": select46, - "service_refresh": msg77, - "session_connect": select12, - "session_data": select8, - "session_disconnect": select16, - "session_dispose": select15, - "session_headers": select10, - "session_judge": select11, - "session_resolve": select13, - "session_store": select9, - "session_throttle": select14, - "sm-msp-queue": select41, - "smtpsrv": msg95, - "smtpsrv_listen": msg93, - "smtpsrv_load": msg92, - "smtpsrv_run": msg94, - "soap_listen": msg88, - "spam_init": msg66, - "spam_load": msg67, - "spam_refresh": msg65, - "spam_run": select24, - "spf_run": select57, - "warn": select52, - "zerohour_init": msg73, - "zerohour_load": msg74, - "zerohour_refresh": msg72, - "zerohour_run": select26, - }), -]); - -var part171 = match("HEADER#0:0024/1_0", "nwparser.p0", "info%{p0}"); - -var part172 = match("HEADER#0:0024/1_1", "nwparser.p0", "rprt%{p0}"); - -var part173 = match("HEADER#0:0024/1_2", "nwparser.p0", "warn%{p0}"); - -var part174 = match("HEADER#0:0024/1_3", "nwparser.p0", "err%{p0}"); - -var part175 = match("HEADER#0:0024/1_4", "nwparser.p0", "note%{p0}"); - -var part176 = match("MESSAGE#11:mail_env_from:ofrom/1_0", "nwparser.p0", "%{hostip->} sampling=%{fld19}"); - -var part177 = match_copy("MESSAGE#11:mail_env_from:ofrom/1_1", "nwparser.p0", "hostip"); - -var part178 = match("MESSAGE#25:session_judge/0", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} %{p0}"); - -var part179 = match("MESSAGE#25:session_judge/1_0", "nwparser.p0", "attachment=%{fld58->} file=%{fld1->} mod=%{p0}"); - -var part180 = match("MESSAGE#25:session_judge/1_1", "nwparser.p0", "mod=%{p0}"); - -var part181 = match("MESSAGE#39:av_run:02/1_1", "nwparser.p0", "vendor=%{fld36->} version=\"%{component_version}\" duration=%{p0}"); - -var part182 = match_copy("MESSAGE#39:av_run:02/2", "nwparser.p0", "duration_string"); - -var part183 = match("MESSAGE#98:queued-alert/3_0", "nwparser.p0", "[%{daddr}] [%{daddr}],%{p0}"); - -var part184 = match("MESSAGE#98:queued-alert/3_1", "nwparser.p0", "[%{daddr}],%{p0}"); - -var part185 = match("MESSAGE#98:queued-alert/3_2", "nwparser.p0", "%{dhost->} [%{daddr}],%{p0}"); - -var part186 = match("MESSAGE#98:queued-alert/3_3", "nwparser.p0", "%{dhost},%{p0}"); - -var part187 = match("MESSAGE#98:queued-alert/4", "nwparser.p0", "%{}dsn=%{resultcode}, stat=%{info}"); - -var part188 = match("MESSAGE#99:queued-alert:01/1_1", "nwparser.p0", "[%{daddr}]"); - -var part189 = match("MESSAGE#99:queued-alert:01/1_2", "nwparser.p0", "%{dhost->} [%{daddr}]"); - -var part190 = match_copy("MESSAGE#99:queued-alert:01/1_3", "nwparser.p0", "dhost"); - -var part191 = match("MESSAGE#100:queued-alert:02/0", "nwparser.payload", "%{agent}[%{process_id}]: STARTTLS=%{fld1}, relay=%{p0}"); - -var part192 = match("MESSAGE#101:queued-VoltageEncrypt/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld51}: to=%{to}, delay=%{fld53}, xdelay=%{fld54}, mailer=%{fld55}, pri=%{fld23}, relay=%{p0}"); - -var part193 = match("MESSAGE#120:queued-VoltageEncrypt:01/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: from=%{from}, size=%{bytes}, class=%{fld57}, nrcpts=%{fld58}, msgid=%{id}, proto=%{protocol}, daemon=%{fld69}, relay=%{p0}"); - -var part194 = match("MESSAGE#120:queued-VoltageEncrypt:01/1_0", "nwparser.p0", "[%{daddr}] [%{daddr}]"); - -var part195 = match("MESSAGE#104:queued-default:02/2", "nwparser.p0", "%{}field=%{fld2}, status=%{info}"); - -var part196 = match("MESSAGE#105:queued-default:03/2", "nwparser.p0", "%{}version=%{fld55}, verify=%{fld57}, cipher=%{fld58}, bits=%{fld59}"); - -var part197 = match("MESSAGE#116:queued-eurort:02/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: from=%{from}, size=%{bytes}, class=%{fld57}, nrcpts=%{fld58}, msgid=%{id}, proto=%{protocol}, daemon=%{fld69}, tls_verify=%{fld70}, auth=%{fld71}, relay=%{p0}"); - -var part198 = match("MESSAGE#126:sendmail/0", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: to=%{to}, delay=%{fld53}, xdelay=%{fld54}, mailer=%{fld55}, pri=%{fld23}, relay=%{p0}"); - -var select60 = linear_select([ - dup1, - dup2, - dup3, - dup4, - dup5, -]); - -var select61 = linear_select([ - dup14, - dup15, -]); - -var select62 = linear_select([ - dup19, - dup20, -]); - -var part199 = match("MESSAGE#43:av_refresh", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} vendor=%{fld36->} engine=%{fld49->} definitions=%{fld50->} signatures=%{fld94}", processor_chain([ - dup26, - dup9, -])); - -var part200 = match("MESSAGE#48:access_run:03", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} m=%{mail_id->} x=%{sessionid1->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var part201 = match("MESSAGE#49:access_run:01", "nwparser.payload", "%{fld0->} %{severity->} s=%{sessionid->} mod=%{agent->} cmd=%{obj_type->} rule=%{rulename->} duration=%{duration_string}", processor_chain([ - dup17, - dup9, -])); - -var part202 = match("MESSAGE#51:access_refresh:01", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} action=%{action->} dict=%{fld37->} file=%{filename}", processor_chain([ - dup17, - dup9, -])); - -var part203 = match("MESSAGE#52:access_load", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5}", processor_chain([ - dup17, - dup9, -])); - -var part204 = match("MESSAGE#64:spam_refresh", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} engine=%{fld49->} definitions=%{fld50}", processor_chain([ - dup27, - dup9, -])); - -var part205 = match("MESSAGE#71:zerohour_refresh", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} type=%{fld6->} cmd=%{obj_type->} id=%{fld5->} version=%{fld55}", processor_chain([ - dup17, - dup9, -])); - -var part206 = match("MESSAGE#82:cvtd:01", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} sig=%{fld60}", processor_chain([ - dup17, - dup9, -])); - -var part207 = match("MESSAGE#83:cvtd", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type}", processor_chain([ - dup17, - dup9, -])); - -var part208 = match("MESSAGE#87:soap_listen", "nwparser.payload", "%{fld0->} %{severity->} mod=%{agent->} cmd=%{obj_type->} addr=%{saddr}", processor_chain([ - dup17, - dup9, -])); - -var select63 = linear_select([ - dup28, - dup29, - dup30, - dup31, -]); - -var select64 = linear_select([ - dup40, - dup33, - dup34, - dup35, -]); - -var part209 = match("MESSAGE#106:queued-default:04", "nwparser.payload", "%{agent}[%{process_id}]: %{fld1}: timeout waiting for input from %{fld11->} during server cmd read", processor_chain([ - dup17, - dup9, -])); - -var part210 = match("MESSAGE#113:queued-reinject:06", "nwparser.payload", "%{agent}[%{process_id}]: %{event_description}", processor_chain([ - dup17, - dup9, -])); - -var part211 = match("MESSAGE#141:info:pid", "nwparser.payload", "%{fld0->} %{severity->} pid=%{process_id->} %{web_method->} /%{info}: %{resultcode}", processor_chain([ - dup17, - dup9, -])); - -var all28 = all_match({ - processors: [ - dup38, - dup58, - dup32, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var all29 = all_match({ - processors: [ - dup39, - dup59, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var all30 = all_match({ - processors: [ - dup37, - dup58, - dup41, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var all31 = all_match({ - processors: [ - dup37, - dup58, - dup42, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var all32 = all_match({ - processors: [ - dup43, - dup59, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); - -var all33 = all_match({ - processors: [ - dup44, - dup58, - dup32, - ], - on_success: processor_chain([ - dup17, - dup9, - ]), -}); diff --git a/x-pack/filebeat/module/proofpoint/emailsecurity/ingest/pipeline.yml b/x-pack/filebeat/module/proofpoint/emailsecurity/ingest/pipeline.yml deleted file mode 100644 index 6d2b0346ac2..00000000000 --- a/x-pack/filebeat/module/proofpoint/emailsecurity/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Proofpoint Email Security - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/proofpoint/emailsecurity/manifest.yml b/x-pack/filebeat/module/proofpoint/emailsecurity/manifest.yml deleted file mode 100644 index 508b0323eb3..00000000000 --- a/x-pack/filebeat/module/proofpoint/emailsecurity/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["proofpoint.emailsecurity", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9547 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log b/x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log deleted file mode 100644 index 2c98612c595..00000000000 --- a/x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -January 29 06:09:59 avolupt low mod=perl cmd=clone cmd=olab id=nto duration=sse -2016/02/12T13:12:33.umdo itessequ session_store[vol]: info luptat high s=nibus mod=mipsumq cmd=gnaali module=enatus rule=mquia folder=ameaqu pri=aqu duration=utper -February 26 20:15:08 emape low s=incidi mod=session_connect cmd=nse ip=10.46.185.46 country=temvel lip=iatu prot=serror hops_active=anti routes=ofdeF notroutes=metcons perlwait=roinBCS -2016/03/12T03:17:42.iam mqua queued-eurort[3391]: olab: from=mquisnos, size=5771, class=ore, nrcpts=etconsec, msgid=err, proto=rdp, daemon=mUt, tls_verify=usmodte, auth=ele, relay=tenbyCic5882.api.home [10.69.20.77] -March 26 10:20:16 pteursi medium mod=service cmd=refresh cmd=turveli duration=toccae -April 9 17:22:51 ccusan low mod=zerohour type=Ciceroi cmd=refresh id=aveniam version=uradi -April 24 00:25:25 aboreetd high mod=smtpsrv cmd=listen cmd=dun addr=10.89.185.38 -May 8 07:27:59 ctetura medium mod=zerohour type=dolore cmd=init id=abor version=iqui -May 22 14:30:33 ritatis oloremi high s=icab mod=av_run cmd=mwr rule=fugi name=inculpaq cleaned=agna vendor=tionemu duration=eomnisis -2016/06/05T21:33:08.incidi picia queued-reinject[mUtenima]: warn emaperi[7183]: sumquiad: from=dexeaco, size=6178, class=colabor, nrcpts=iusmodt, msgid=etdolo, proto=tcp, daemon=lorumw, relay=ommod3671.mail.domain -June 20 04:35:42 imadmi high s=tion mod=session_judge cmd=eataev module=liquide rule=uasia -2016/07/04T11:38:16.uames tati access_run[utaliqu]: warn oriosamn medium s=santium m=iciatisu x=rehender mod=eporroqu cmd=uat rule=tem duration=est -July 18 18:40:50 samvolu err eid=ittenbyC module=isc age=aturve limit=emulla -2016/08/02T01:43:25.itame eumfug zerohour_init[lit]: note asun low mod=quamnih type=oluptate cmd=onseq id=serunt version=aquaeabi -August 16 08:45:59 ento warn eid=pic status="evita file suntexp does not contain enough (or correct) info. Fix this or remove the file." -August 30 15:48:33 tmo very-high s=abi mod=spam_run cmd=sectetur rule=uioffi policy=oru score=temqu ndrscore=edol ipscore=colab suspectscore=ommodico phishscore=quatD bulkscore=mcolab spamscore=67.309000 adjustscore=tenima adultscore=tsedqu classifier=agnid adjust=proide reason=dolorem scancount=tlab engine=volupt definitions=osqui raw=xerc tests=iutali duration=fdeFi -2016/09/13T22:51:07.sequine ectio dkimv_type[dutper]: err lamcolab: low mod=radi unexpected response type=gel -September 28 05:53:42 xeacomm very-high mod=av type=aturQui cmd=load id=utlabor -October 12 12:56:16 madmi tur low s=uatD mod=mail_attachment cmd=ariatu id=edquiac file=nci mime=tev type=saute omime=ntocca oext=ostru corrupted=ntoccae protected=autf size=3471 virtual=temquiav -2016/10/26T19:58:50.tor qui queued-aglife[4499]: eavolup: to=fugiatn, delay=docon, xdelay=etconsec, mailer=ios, pri=evolu, relay=ersp3536.www5.lan, dsn=sauteiru, stat=mod -2016/11/10T03:01:24.iquipe itempor mail_env_rcpt[quin]: err upida high s=nve m=remag x=uredol mod=ccaecat cmd=tquiin r=7440 value=temqu verified=ovol routes=ptasn -November 24 10:03:59 idolore low mod=spam type=eetdolo cmd=refresh id=cteturad engine=untut definitions=uamni -December 8 17:06:33 orumSe high mod=regulation type=isnost cmd=init id=queips action=cancel dict=itess file=iscinge -2016-12-23T12:09:07.inci atatn queued-alert[temUt]: info avol[752]: STARTTLS=essequam, relay=[10.193.83.81], version=1.5020, verify=str, cipher=iat, bits=etur -2017/01/06T07:11:41.isnostr umqu smtpsrv_run[tinv]: warn adipisc medium mod=isnisi cmd=ritatise rule=uamei duration=siut -2017/01/20T14:14:16.ttenby boris dkimv_run[stenatu]: err isiuta low s=ratv m=riat x=ianon mod=tsed cmd=nts status="siut, tconsect" -2017/02/03T21:16:50.ctetura aveni sendmail[elit]: note seosqui sequamni[3866]: STARTTLS=tdol, relay=sit6590.lan [10.123.143.188], version=ncididun, verify=umSe, cipher=xeacomm, bits=cinge -February 18 04:19:24 runtmol very-high mod=spam type=odi cmd=load id=ptass -March 4 11:21:59 aec medium mod=spam type=iduntu cmd=load id=ccaeca -March 18 18:24:33 leumiu tla very-high s=uaeratv mod=session_connect cmd=isa ip=10.38.65.236 country=dqu lip=pid prot=rExc hops_active=iusmo routes=tame notroutes=naaliq perlwait=nte -2017/04/02T01:27:07.ullamcor itationu dmarc_run[proident]: rprt maliquam medium s=atione m=lores x=ritati mod=orisni cmd=ons rule=remagn duration=ecillu -April 16 08:29:41 umetMalo high mod=av type=utp cmd=refresh id=aeconseq vendor=lor engine=Sedut definitions=yCiceroi signatures=quunt -April 30 15:32:16 aliq low mod=access type=teni cmd=refresh id=dquiac action=accept dict=tore file=elits -2017/05/14T22:34:50.uamnihi risnis mail_release[uov]: info itlab low s=sBono m=loremqu x=tetur mod=amvo cmd=siuta status=failure err=ommodo -May 29 05:37:24 atv high mod=access type=quira cmd=refresh id=rehende action=block dict=obeataev file=tempor -June 12 12:39:58 tlaboree note s=norumet m=dtempo x=tin module=fugitse action=deny size=3916 -2017/06/26T19:42:33.aturQu aaliq session_store[mipsamvo]: warn eiusmod very-high s=reetdo m=oreveri x=ehende mod=eaqueip cmd=eum module=lamc rule=umetMal folder=asper pri=umq duration=naal -2017/07/11T02:45:07.uto iuntNequ pdr_ttl[esseq]: warn aincidun low s=veniamq mod=occ ttl=oloreseo reply="\"iruredol rscore=veniamqu\"" -July 25 09:47:41 minim ataevi low s=repreh mod=av_run cmd=plic rule=irured name=illumqui cleaned=saq vendor=amali duration=ate -2017/08/08T16:50:15.autfugi tasun mail_continue-system-sendmail[duntutla]: err ntium low s=asuntexp mod=adminim cmd=orisni action=cancel err=lmole -2017/08/22T23:52:50.dolorem tem spam_init[exeacomm]: info aspe very-high mod=mides type=ciun cmd=olupta id=tsuntinc engine=inrepreh definitions=quovo -September 6 06:55:24 occaec acommodi medium s=quaeab mod=mail_env_rcpt cmd=fici r=5161 value=dipiscin verified=olup routes=aco -2017/09/20T13:57:58.mag tob smtpsrv_load[dolores]: rprt equamnih high mod=deF type=itempo cmd=orumw id=redol -October 4 21:00:32 radipis high s=tiumto mod=mail_env_from cmd=litan value=nder qid=stenatus tls=equep routes=ever notroutes=tali host=BCS3474.lan ip=10.1.204.187 sampling=quin -2017/10/19T04:03:07.nculpaq culpaqui regulation_init[tvolup]: note tdolore low mod=col type=obea cmd=emp id=agnaaliq action=cancel dict=uptatem file=oinv -queued-reinject[2957]: odt -2017/11/16T18:08:15.caecat rautod rprt[olest]: info eataev very-high s=ritati m=edquia x=itesse mod=mullam cmd=mexerc secprofile_name=meaque rcpts=5808 duration=mip -2017/12/01T01:10:49.deriti sintocc session_throttle[cididu]: rprt uteir high s=mwrit mod=ptat cmd=der rule=equuntur ip=10.219.133.187 rate=quameiu crate=diduntu limit=eiusmod -December 15 08:13:24 tassita very-high mod=smtpsrv cmd=run cmd=oremi rule=ugitsedq duration=turmag -2017/12/29T15:15:58.consecte pteurs dkimv_run[catcupi]: info autf very-high s=tiaecon m=uaturve x=amquisno mod=uido cmd=tla signature=mquiad identity=CSe host=lors7553.api.local result=unknown result_detail=rroqui -2018/01/12T22:18:32.itae dtempo cvtd[atnula]: warn ditautf low mod=iquidex cmd=olup -2018/01/27T05:21:06.rspici snisi queued-aglife[766]: olor: to=etquasia, delay=nula, xdelay=quiacons, mailer=uisa, pri=xeacommo, relay=[10.65.174.31], dsn=atur, stat=issu -2018/02/10T12:23:41.ite tasnul note[tuserr]: note tise very-high s=tnul m=expl x=ess module=quiad action=cancel size=6084 -2018/02/24T19:26:15.llumq tenim spam_init[eiusmo]: warn ainc medium mod=antiumdo type=ecill cmd=iduntu id=pisci engine=sunt definitions=texplica -March 11 02:28:49 ate action_checksubmsg s=con m=tqu x=eirur action=accept score=tametco submsgadjust=mquisnos spamscore=25.933000 suspectscore=cit malwarescore=siar phishscore=isn adultscore=veniamq bulkscore=lup tests=iumtotam -2018/03/25T09:31:24.voluptas velill regulation_init[rspic]: err orinrepr high mod=meum type=borumSec cmd=aecatcup id=snisiut action=allow dict=nre file=inB -2018/04/08T16:33:58.upt ulamc cvt_detect[cept]: err aedictas low pid=4253 mod=orio cmd=gna name=ici status=success err=olu -2018/04/22T23:36:32.seq moll queued-VoltageEncrypt[2861]: sunt: from=dquianon, size=956, class=itesse, nrcpts=iamqui, msgid=quide, proto=igmp, daemon=cididun, relay=str4641.domain [10.151.31.58] -2018/05/07T06:39:06.cti rumSecti session_throttle[riamea]: info eca very-high s=tes mod=equam cmd=isi rule=iaecon ip=10.119.38.124 rate=rep crate=remap limit=deri -May 21 13:41:41 scipit high pid=745 mod=cvt cmd=detect cmd=borisnis name=onorumet status=success err=isiutali -June 4 20:44:15 aedict low mod=cvtd cmd=miurere -2018/06/19T03:46:49.seq rumSe queued-vdedc2v5[tatnonp]: rprt ommo[4821]: idunt: to=expl, delay=olore, xdelay=uian, mailer=atuserro, pri=madminim, relay=[10.52.47.230] [10.113.119.47], dsn=quioff, stat=iuntN -2018/07/03T10:49:23.mquis lorsi filter[tetura]: rprt eeufug high mod=modt sig=iduntutl -July 17 17:51:58 expl very-high pid=prehende mod=cvtd cmd=encrypted encrypted=lup -August 1 00:54:32 umd sumd medium s=dat mod=session_judge cmd=aUtenima module=turQuis rule=taevi -2018/08/15T07:57:06.ercitati eve spf_run[rro]: err oeiusmo very-high s=cusanti m=tconse x=rem mod=tseddoei cmd=teursint rule=etMa duration=llita -2018/08/29T14:59:40.nostrum orroquis av_init[eumi]: info tvo low mod=tuser type=mmo cmd=eve id=nbyCicer vendor=scipit engine=equuntu definitions=quamni signatures=turveli -September 12 22:02:15 ihilm medium s=caboNemo mod=mltr uptas -2018/09/27T05:04:49.dol exe info[tis]: note oluptat low eid=tinvolup pid=497 status=tvol -October 11 12:07:23 eritqui medium s=atus mod=session_judge cmd=tassitas module=obea rule=velite -2018/10/25T19:09:57.lore luptate av_init[eritqu]: err elites very-high mod=tamr type=serr cmd=usci id=unturmag vendor=dexeaco engine=lupta definitions=ura signatures=oreeufug -2018/11/09T02:12:32.ree itten milter_listen[quipexea]: warn orsitv medium mod=nostrum cmd=autodita addr=10.27.154.247 -2018/11/23T09:15:06.utfugi ursintoc dkimv_type[tio]: rprt mmodicon: high mod=trudex unexpected response type=tvol -2018/12/07T16:17:40.rehen uaeab session_throttle[ptat]: warn mipsu high s=eturadip mod=amquaera cmd=rsitamet rule=leumiur ip=10.253.121.154 rate=olesti crate=edquia limit=ihi -December 21 23:20:14 emoenimi high pid=5895 mod=cvt cmd=detect cmd=mqu name=onorume status=unknown err=veleu -January 5 06:22:49 dquia high s=bori mod=mltr dipi -January 19 13:25:23 quovolu high s=dexe mod=mltr nemul -2019/02/02T20:27:57.quatur dminim mail_msg[ptatevel]: warn aperiame very-high s=eirured mod=sequamn cmd=perspici module=inimve rule=aea action=allow attachments=5821 rcpts=296 routes=ptat size=4878 guid=nde hdr_mid=quame qid=orumwri subject=atisu spamscore=66.849000 virusname=tse duration=rad elapsed=iat -2019/02/17T03:30:32.lorum suntexpl sm-msp-queue[iqu]: rprt iquamqu[6293]: audant: to=obeata, ctladdr=uredol, delay=uptat, xdelay=toditau, mailer=uiad, pri=nvolupta, relay=[10.80.133.120] [10.147.147.248], dsn=onpr, stat=uira -2019/03/03T10:33:06.aliqu sequine regulation_refresh[utaliqui]: note isciv very-high mod=econ type=aborio cmd=rve id=catcup action=deny dict=runtmoll file=busBon -2019/03/17T17:35:40.occaeca dan queued-alert[pta]: err upt[4762]: itaedict: to=eroi, delay=onemull, xdelay=mdo, mailer=labore, pri=lorem, relay=[10.68.159.207] [10.232.240.177], dsn=estq, stat=quasiarc -2019/04/01T00:38:14.tDuisaut uel warn[dexerc]: info vol high eid=agn status="iqu file: quamqua" -April 15 07:40:49 uunturm very-high mod=regulation type=iaconseq cmd=init id=tseddo action=cancel dict=rissusci file=ectetur -April 29 14:43:23 quaturve medium mod=zerohour type=gnamali cmd=init id=iumtota version=issusci -2019/05/13T21:45:57.ecillumd iumto dmarc_type[sequatu]: rprt tiumtot: medium mod=mdoloree type=que cmd=inBCSed id=cteturad policy_cache_entries=umq -May 28 04:48:31 reseo quam very-high s=pariat mod=mail_env_rcpt cmd=icaboNe r=4840 value=lumd verified=tiaec routes=lorem -June 11 11:51:06 seq low mod=info sys=lorsita evt=deny active=itation expires=utlabo msg=tat -June 25 18:53:40 ididu medium s=epteurs mod=mail_env_from cmd=itse value=rever ofrom=sBonoru qid=ecatcu tls=ntoccae routes=iscive notroutes=amni host=etconse5657.api.lan ip=10.118.249.126 sampling=dminimv -2019/07/10T01:56:14.rep nostru access_load[docons]: info emipsumq low mod=qua type=modit cmd=tatione id=aedicta -July 24 08:58:48 uas high s=reeufu mod=mail_env_from cmd=umexe value=xce ofrom=omnisis qid=corporis tls=tco routes=stiaec notroutes=Cicero host=ven5410.mail.host ip=10.170.55.203 sampling=deom -2019/08/07T16:01:23.Utenima nse info[umq]: note enim low mod=meaquei sys=snisiu evt=allow active=atev expires=vento msg=litsed -August 21 23:03:57 susc taed high s=mipsumd mod=mail_continue-system-sendmail cmd=eiusmo action=block err=sum -September 5 06:06:31 ipex low s=upta cmd=send profile=ivel qid=tmollita rcpts=tionofd -2019/09/19T13:09:05.ccaec repreh http_listen[imven]: note usan very-high mod=idolo cmd=olup addr=10.199.46.88 -2019/10/03T20:11:40.nulapari beataevi queued-VoltageEncrypt[3274]: eruntmol: from=plicab, size=5930, class=dmin, nrcpts=sum, msgid=lloinve, proto=ggp, daemon=nim, relay=Sedutper7794.www5.domain [10.154.22.241] -2019/10/18T03:14:14.nvol doloreeu cvtd_encrypted[elillumq]: info loremeum medium pid=obeataev mod=rrorsit encrypted=aincid -November 1 10:16:48 nis info pid=472 iin /uteiru: xer -2019/11/15T17:19:22.isauteir eritquii soap_listen[atevelit]: note dese low mod=ionula cmd=itaed addr=10.38.111.125 -November 30 00:21:57 ationem high mod=spam type=ing cmd=load id=ollita -2019/12/14T07:24:31.nih ncididu queued-default[4250]: STARTTLS=gitsed, relay=estla4081.corp, version=meumf, verify=rExce, cipher=quisquam, bits=boreet diff --git a/x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log-expected.json b/x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log-expected.json deleted file mode 100644 index 337be783e7a..00000000000 --- a/x-pack/filebeat/module/proofpoint/emailsecurity/test/generated.log-expected.json +++ /dev/null @@ -1,2555 +0,0 @@ -[ - { - "event.code": "perl_clone", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "January 29 06:09:59 avolupt low mod=perl cmd=clone cmd=olab id=nto duration=sse", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 0, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "perl_clone", - "rsa.misc.client": "perl", - "rsa.misc.msgIdPart1": "perl", - "rsa.misc.msgIdPart2": "clone", - "rsa.misc.obj_type": "clone cmd=olab", - "rsa.misc.severity": "low", - "rsa.time.duration_str": "sse", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_store", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/02/12T13:12:33.umdo itessequ session_store[vol]: info luptat high s=nibus mod=mipsumq cmd=gnaali module=enatus rule=mquia folder=ameaqu pri=aqu duration=utper", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 80, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.hosts": [ - "enatus" - ], - "rsa.internal.messageid": "session_store", - "rsa.misc.client": "mipsumq", - "rsa.misc.event_source": "enatus", - "rsa.misc.log_session_id": "nibus", - "rsa.misc.obj_type": "gnaali", - "rsa.misc.rule_name": "mquia", - "rsa.misc.severity": "high", - "rsa.time.duration_str": "utper", - "rule.name": "mquia", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_connect_nse", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "February 26 20:15:08 emape low s=incidi mod=session_connect cmd=nse ip=10.46.185.46 country=temvel lip=iatu prot=serror hops_active=anti routes=ofdeF notroutes=metcons perlwait=roinBCS", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 244, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "session_connect_nse", - "rsa.misc.msgIdPart1": "session_connect", - "rsa.misc.msgIdPart2": "nse", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.address": "tenbyCic5882.api.home", - "destination.ip": "10.69.20.77", - "event.code": "err", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/03/12T03:17:42.iam mqua queued-eurort[3391]: olab: from=mquisnos, size=5771, class=ore, nrcpts=etconsec, msgid=err, proto=rdp, daemon=mUt, tls_verify=usmodte, auth=ele, relay=tenbyCic5882.api.home [10.69.20.77]", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 429, - "network.bytes": 5771, - "network.protocol": "rdp", - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 3391, - "related.hosts": [ - "tenbyCic5882.api.home" - ], - "related.ip": [ - "10.69.20.77" - ], - "rsa.email.email_src": "mquisnos", - "rsa.internal.messageid": "queued-eurort", - "rsa.misc.client": "queued-eurort", - "rsa.misc.reference_id": "err", - "rsa.network.host_dst": "tenbyCic5882.api.home", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "service_refresh", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "March 26 10:20:16 pteursi medium mod=service cmd=refresh cmd=turveli duration=toccae", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 645, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "service_refresh", - "rsa.misc.client": "service", - "rsa.misc.msgIdPart1": "service", - "rsa.misc.msgIdPart2": "refresh", - "rsa.misc.obj_type": "refresh cmd=turveli", - "rsa.misc.severity": "medium", - "rsa.time.duration_str": "toccae", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "zerohour_refresh", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "April 9 17:22:51 ccusan low mod=zerohour type=Ciceroi cmd=refresh id=aveniam version=uradi", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 730, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "zerohour_refresh", - "rsa.misc.client": "zerohour", - "rsa.misc.msgIdPart1": "zerohour", - "rsa.misc.msgIdPart2": "refresh", - "rsa.misc.obj_type": "refresh", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "smtpsrv_listen", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "April 24 00:25:25 aboreetd high mod=smtpsrv cmd=listen cmd=dun addr=10.89.185.38", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 821, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.89.185.38" - ], - "rsa.internal.messageid": "smtpsrv_listen", - "rsa.misc.client": "smtpsrv", - "rsa.misc.msgIdPart1": "smtpsrv", - "rsa.misc.msgIdPart2": "listen", - "rsa.misc.obj_type": "listen cmd=dun", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "source.ip": "10.89.185.38", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "zerohour_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "May 8 07:27:59 ctetura medium mod=zerohour type=dolore cmd=init id=abor version=iqui", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 902, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "zerohour_init", - "rsa.misc.client": "zerohour", - "rsa.misc.msgIdPart1": "zerohour", - "rsa.misc.msgIdPart2": "init", - "rsa.misc.obj_type": "init", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "av_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "May 22 14:30:33 ritatis oloremi high s=icab mod=av_run cmd=mwr rule=fugi name=inculpaq cleaned=agna vendor=tionemu duration=eomnisis", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 987, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "av_run", - "rsa.misc.client": "av_run", - "rsa.misc.log_session_id": "icab", - "rsa.misc.obj_type": "mwr", - "rsa.misc.rule_name": "fugi", - "rsa.misc.severity": "high", - "rsa.time.duration_str": "eomnisis", - "rule.name": "fugi", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.address": "ommod3671.mail.domain", - "event.code": "etdolo", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/06/05T21:33:08.incidi picia queued-reinject[mUtenima]: warn emaperi[7183]: sumquiad: from=dexeaco, size=6178, class=colabor, nrcpts=iusmodt, msgid=etdolo, proto=tcp, daemon=lorumw, relay=ommod3671.mail.domain", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 1120, - "network.bytes": 6178, - "network.protocol": "tcp", - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 7183, - "related.hosts": [ - "ommod3671.mail.domain" - ], - "rsa.email.email_src": "dexeaco", - "rsa.internal.messageid": "queued-reinject", - "rsa.misc.client": "emaperi", - "rsa.misc.reference_id": "etdolo", - "rsa.network.host_dst": "ommod3671.mail.domain", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_judge_eataev", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "June 20 04:35:42 imadmi high s=tion mod=session_judge cmd=eataev module=liquide rule=uasia", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 1334, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "session_judge_eataev", - "rsa.misc.msgIdPart1": "session_judge", - "rsa.misc.msgIdPart2": "eataev", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "access_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/07/04T11:38:16.uames tati access_run[utaliqu]: warn oriosamn medium s=santium m=iciatisu x=rehender mod=eporroqu cmd=uat rule=tem duration=est", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 1425, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "access_run", - "rsa.misc.client": "eporroqu", - "rsa.misc.log_session_id": "santium", - "rsa.misc.log_session_id1": "rehender", - "rsa.misc.mail_id": "iciatisu", - "rsa.misc.obj_type": "uat", - "rsa.misc.rule_name": "tem", - "rsa.misc.severity": "medium", - "rsa.time.duration_str": "est", - "rule.name": "tem", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "err", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "July 18 18:40:50 samvolu err eid=ittenbyC module=isc age=aturve limit=emulla", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "err", - "log.offset": 1573, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "err", - "rsa.misc.client": "isc", - "rsa.misc.severity": "err", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "zerohour_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/08/02T01:43:25.itame eumfug zerohour_init[lit]: note asun low mod=quamnih type=oluptate cmd=onseq id=serunt version=aquaeabi", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 1650, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "zerohour_init", - "rsa.misc.client": "quamnih", - "rsa.misc.obj_type": "onseq", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "warn", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "August 16 08:45:59 ento warn eid=pic status=\"evita file suntexp does not contain enough (or correct) info. Fix this or remove the file.\"", - "file.name": "suntexp", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "warn", - "log.offset": 1780, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.event_desc": "does not contain enough (or correct) info. Fix this or remove the file", - "rsa.internal.messageid": "warn", - "rsa.misc.event_state": "evita", - "rsa.misc.severity": "warn", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spam_run_sectetur", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "August 30 15:48:33 tmo very-high s=abi mod=spam_run cmd=sectetur rule=uioffi policy=oru score=temqu ndrscore=edol ipscore=colab suspectscore=ommodico phishscore=quatD bulkscore=mcolab spamscore=67.309000 adjustscore=tenima adultscore=tsedqu classifier=agnid adjust=proide reason=dolorem scancount=tlab engine=volupt definitions=osqui raw=xerc tests=iutali duration=fdeFi", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 1917, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spam_run_sectetur", - "rsa.misc.msgIdPart1": "spam_run", - "rsa.misc.msgIdPart2": "sectetur", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "dkimv_type", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/09/13T22:51:07.sequine ectio dkimv_type[dutper]: err lamcolab: low mod=radi unexpected response type=gel", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 2288, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "dkimv_type", - "rsa.misc.client": "radi", - "rsa.misc.result": "unexpected response", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "av_load", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "September 28 05:53:42 xeacomm very-high mod=av type=aturQui cmd=load id=utlabor", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2398, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "av_load", - "rsa.misc.client": "av", - "rsa.misc.msgIdPart1": "av", - "rsa.misc.msgIdPart2": "load", - "rsa.misc.obj_type": "load", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_attachment", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "October 12 12:56:16 madmi tur low s=uatD mod=mail_attachment cmd=ariatu id=edquiac file=nci mime=tev type=saute omime=ntocca oext=ostru corrupted=ntoccae protected=autf size=3471 virtual=temquiav", - "file.name": "nci", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 2478, - "network.bytes": 3471, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "mail_attachment", - "rsa.misc.client": "mail_attachment", - "rsa.misc.content_type": "tev", - "rsa.misc.log_session_id": "uatD", - "rsa.misc.obj_type": "ariatu", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.address": "ersp3536.www5.lan", - "event.code": "queued-aglife", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/10/26T19:58:50.tor qui queued-aglife[4499]: eavolup: to=fugiatn, delay=docon, xdelay=etconsec, mailer=ios, pri=evolu, relay=ersp3536.www5.lan, dsn=sauteiru, stat=mod", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 2674, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 4499, - "related.hosts": [ - "ersp3536.www5.lan" - ], - "rsa.db.index": "mod", - "rsa.email.email_dst": "fugiatn", - "rsa.internal.messageid": "queued-aglife", - "rsa.misc.client": "queued-aglife", - "rsa.misc.result_code": "sauteiru", - "rsa.network.host_dst": "ersp3536.www5.lan", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_env_rcpt", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016/11/10T03:01:24.iquipe itempor mail_env_rcpt[quin]: err upida high s=nve m=remag x=uredol mod=ccaecat cmd=tquiin r=7440 value=temqu verified=ovol routes=ptasn", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 2845, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.counters.event_counter": 7440, - "rsa.email.email_dst": "temqu", - "rsa.internal.messageid": "mail_env_rcpt", - "rsa.misc.client": "ccaecat", - "rsa.misc.log_session_id": "nve", - "rsa.misc.log_session_id1": "uredol", - "rsa.misc.mail_id": "remag", - "rsa.misc.obj_type": "tquiin", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spam_refresh", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "November 24 10:03:59 idolore low mod=spam type=eetdolo cmd=refresh id=cteturad engine=untut definitions=uamni", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 3008, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spam_refresh", - "rsa.misc.client": "spam", - "rsa.misc.msgIdPart1": "spam", - "rsa.misc.msgIdPart2": "refresh", - "rsa.misc.obj_type": "refresh", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "cancel", - "event.code": "regulation_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "December 8 17:06:33 orumSe high mod=regulation type=isnost cmd=init id=queips action=cancel dict=itess file=iscinge", - "file.name": "iscinge", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 3118, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "regulation_init", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "regulation", - "rsa.misc.msgIdPart1": "regulation", - "rsa.misc.msgIdPart2": "init", - "rsa.misc.obj_type": "init", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.ip": "10.193.83.81", - "event.code": "queued-alert", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2016-12-23T12:09:07.inci atatn queued-alert[temUt]: info avol[752]: STARTTLS=essequam, relay=[10.193.83.81], version=1.5020, verify=str, cipher=iat, bits=etur", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 3234, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "observer.version": "1.5020", - "process.pid": 752, - "related.ip": [ - "10.193.83.81" - ], - "rsa.crypto.cipher_src": "iat", - "rsa.internal.messageid": "queued-alert", - "rsa.misc.client": "avol", - "rsa.misc.version": "1.5020", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "smtpsrv_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/01/06T07:11:41.isnostr umqu smtpsrv_run[tinv]: warn adipisc medium mod=isnisi cmd=ritatise rule=uamei duration=siut", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 3393, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "smtpsrv_run", - "rsa.misc.client": "isnisi", - "rsa.misc.obj_type": "ritatise", - "rsa.misc.rule_name": "uamei", - "rsa.misc.severity": "medium", - "rsa.time.duration_str": "siut", - "rule.name": "uamei", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "dkimv_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/01/20T14:14:16.ttenby boris dkimv_run[stenatu]: err isiuta low s=ratv m=riat x=ianon mod=tsed cmd=nts status=\"siut, tconsect\"", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 3514, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.db.index": "siut", - "rsa.internal.messageid": "dkimv_run", - "rsa.misc.client": "tsed", - "rsa.misc.event_state": "tconsect", - "rsa.misc.log_session_id": "ratv", - "rsa.misc.log_session_id1": "ianon", - "rsa.misc.mail_id": "riat", - "rsa.misc.obj_type": "nts", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.address": "sit6590.lan", - "destination.ip": "10.123.143.188", - "event.code": "sendmail", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/02/03T21:16:50.ctetura aveni sendmail[elit]: note seosqui sequamni[3866]: STARTTLS=tdol, relay=sit6590.lan [10.123.143.188], version=ncididun, verify=umSe, cipher=xeacomm, bits=cinge", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 3645, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 3866, - "related.hosts": [ - "sit6590.lan" - ], - "related.ip": [ - "10.123.143.188" - ], - "rsa.internal.messageid": "sendmail", - "rsa.misc.client": "sequamni", - "rsa.network.host_dst": "sit6590.lan", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spam_load", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "February 18 04:19:24 runtmol very-high mod=spam type=odi cmd=load id=ptass", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3833, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spam_load", - "rsa.misc.client": "spam", - "rsa.misc.msgIdPart1": "spam", - "rsa.misc.msgIdPart2": "load", - "rsa.misc.obj_type": "load", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spam_load", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "March 4 11:21:59 aec medium mod=spam type=iduntu cmd=load id=ccaeca", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 3908, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spam_load", - "rsa.misc.client": "spam", - "rsa.misc.msgIdPart1": "spam", - "rsa.misc.msgIdPart2": "load", - "rsa.misc.obj_type": "load", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_connect", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "March 18 18:24:33 leumiu tla very-high s=uaeratv mod=session_connect cmd=isa ip=10.38.65.236 country=dqu lip=pid prot=rExc hops_active=iusmo routes=tame notroutes=naaliq perlwait=nte", - "fileset.name": "emailsecurity", - "geo.country_name": "dqu", - "host.ip": "10.38.65.236", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3976, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.38.65.236" - ], - "rsa.internal.messageid": "session_connect", - "rsa.misc.client": "session_connect", - "rsa.misc.log_session_id": "uaeratv", - "rsa.misc.obj_type": "isa", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "dmarc_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/04/02T01:27:07.ullamcor itationu dmarc_run[proident]: rprt maliquam medium s=atione m=lores x=ritati mod=orisni cmd=ons rule=remagn duration=ecillu", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 4159, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "dmarc_run", - "rsa.misc.client": "orisni", - "rsa.misc.log_session_id": "atione", - "rsa.misc.log_session_id1": "ritati", - "rsa.misc.mail_id": "lores", - "rsa.misc.obj_type": "ons", - "rsa.misc.rule_name": "remagn", - "rsa.misc.severity": "medium", - "rsa.time.duration_str": "ecillu", - "rule.name": "remagn", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "av_refresh", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "April 16 08:29:41 umetMalo high mod=av type=utp cmd=refresh id=aeconseq vendor=lor engine=Sedut definitions=yCiceroi signatures=quunt", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 4312, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "av_refresh", - "rsa.misc.client": "av", - "rsa.misc.msgIdPart1": "av", - "rsa.misc.msgIdPart2": "refresh", - "rsa.misc.obj_type": "refresh", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "accept", - "event.code": "access_refresh", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "April 30 15:32:16 aliq low mod=access type=teni cmd=refresh id=dquiac action=accept dict=tore file=elits", - "file.name": "elits", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 4446, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "access_refresh", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.client": "access", - "rsa.misc.msgIdPart1": "access", - "rsa.misc.msgIdPart2": "refresh", - "rsa.misc.obj_type": "refresh", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_release", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/05/14T22:34:50.uamnihi risnis mail_release[uov]: info itlab low s=sBono m=loremqu x=tetur mod=amvo cmd=siuta status=failure err=ommodo", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 4551, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "mail_release", - "rsa.misc.client": "amvo", - "rsa.misc.log_session_id": "sBono", - "rsa.misc.log_session_id1": "tetur", - "rsa.misc.mail_id": "loremqu", - "rsa.misc.obj_type": "siuta", - "rsa.misc.result": "failure", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "block", - "event.code": "access_refresh", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "May 29 05:37:24 atv high mod=access type=quira cmd=refresh id=rehende action=block dict=obeataev file=tempor", - "file.name": "tempor", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 4691, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "access_refresh", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.client": "access", - "rsa.misc.msgIdPart1": "access", - "rsa.misc.msgIdPart2": "refresh", - "rsa.misc.obj_type": "refresh", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "deny", - "event.code": "note", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "June 12 12:39:58 tlaboree note s=norumet m=dtempo x=tin module=fugitse action=deny size=3916", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "note", - "log.offset": 4800, - "network.bytes": 3916, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "note", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.client": "fugitse", - "rsa.misc.log_session_id": "norumet", - "rsa.misc.log_session_id1": "tin", - "rsa.misc.mail_id": "dtempo", - "rsa.misc.severity": "note", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_store", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/06/26T19:42:33.aturQu aaliq session_store[mipsamvo]: warn eiusmod very-high s=reetdo m=oreveri x=ehende mod=eaqueip cmd=eum module=lamc rule=umetMal folder=asper pri=umq duration=naal", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4893, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.hosts": [ - "lamc" - ], - "rsa.internal.messageid": "session_store", - "rsa.misc.client": "eaqueip", - "rsa.misc.event_source": "lamc", - "rsa.misc.log_session_id": "reetdo", - "rsa.misc.log_session_id1": "ehende", - "rsa.misc.mail_id": "oreveri", - "rsa.misc.obj_type": "eum", - "rsa.misc.rule_name": "umetMal", - "rsa.misc.severity": "very-high", - "rsa.time.duration_str": "naal", - "rule.name": "umetMal", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "pdr_ttl", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/07/11T02:45:07.uto iuntNequ pdr_ttl[esseq]: warn aincidun low s=veniamq mod=occ ttl=oloreseo reply=\"\\\"iruredol rscore=veniamqu\\\"\"", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 5082, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "pdr_ttl", - "rsa.misc.client": "occ", - "rsa.misc.log_session_id": "veniamq", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "av_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "July 25 09:47:41 minim ataevi low s=repreh mod=av_run cmd=plic rule=irured name=illumqui cleaned=saq vendor=amali duration=ate", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 5217, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "av_run", - "rsa.misc.client": "av_run", - "rsa.misc.log_session_id": "repreh", - "rsa.misc.obj_type": "plic", - "rsa.misc.rule_name": "irured", - "rsa.misc.severity": "low", - "rsa.time.duration_str": "ate", - "rule.name": "irured", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "cancel", - "event.code": "mail_continue-system-sendmail", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/08/08T16:50:15.autfugi tasun mail_continue-system-sendmail[duntutla]: err ntium low s=asuntexp mod=adminim cmd=orisni action=cancel err=lmole", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 5344, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "mail_continue-system-sendmail", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "adminim", - "rsa.misc.log_session_id": "asuntexp", - "rsa.misc.obj_type": "orisni", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spam_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/08/22T23:52:50.dolorem tem spam_init[exeacomm]: info aspe very-high mod=mides type=ciun cmd=olupta id=tsuntinc engine=inrepreh definitions=quovo", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 5491, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spam_init", - "rsa.misc.client": "mides", - "rsa.misc.obj_type": "olupta", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_env_rcpt", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "September 6 06:55:24 occaec acommodi medium s=quaeab mod=mail_env_rcpt cmd=fici r=5161 value=dipiscin verified=olup routes=aco", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 5641, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.counters.event_counter": 5161, - "rsa.email.email_dst": "dipiscin", - "rsa.internal.messageid": "mail_env_rcpt", - "rsa.misc.client": "mail_env_rcpt", - "rsa.misc.log_session_id": "quaeab", - "rsa.misc.obj_type": "fici", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "smtpsrv_load", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/09/20T13:57:58.mag tob smtpsrv_load[dolores]: rprt equamnih high mod=deF type=itempo cmd=orumw id=redol", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 5768, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "smtpsrv_load", - "rsa.misc.client": "deF", - "rsa.misc.obj_type": "orumw", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_env_from_litan", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "October 4 21:00:32 radipis high s=tiumto mod=mail_env_from cmd=litan value=nder qid=stenatus tls=equep routes=ever notroutes=tali host=BCS3474.lan ip=10.1.204.187 sampling=quin", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 5877, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "mail_env_from_litan", - "rsa.misc.msgIdPart1": "mail_env_from", - "rsa.misc.msgIdPart2": "litan", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "cancel", - "event.code": "regulation_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/10/19T04:03:07.nculpaq culpaqui regulation_init[tvolup]: note tdolore low mod=col type=obea cmd=emp id=agnaaliq action=cancel dict=uptatem file=oinv", - "file.name": "oinv", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 6054, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "regulation_init", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "col", - "rsa.misc.obj_type": "emp", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "queued-reinject", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "queued-reinject[2957]: odt", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 6208, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 2957, - "rsa.internal.event_desc": "odt", - "rsa.internal.messageid": "queued-reinject", - "rsa.misc.client": "queued-reinject", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "rprt", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/11/16T18:08:15.caecat rautod rprt[olest]: info eataev very-high s=ritati m=edquia x=itesse mod=mullam cmd=mexerc secprofile_name=meaque rcpts=5808 duration=mip", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6235, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.counters.dclass_c2": 5808, - "rsa.internal.messageid": "rprt", - "rsa.misc.client": "mullam", - "rsa.misc.log_session_id": "ritati", - "rsa.misc.log_session_id1": "itesse", - "rsa.misc.mail_id": "edquia", - "rsa.misc.obj_type": "mexerc", - "rsa.misc.severity": "very-high", - "rsa.time.duration_str": "mip", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_throttle", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/12/01T01:10:49.deriti sintocc session_throttle[cididu]: rprt uteir high s=mwrit mod=ptat cmd=der rule=equuntur ip=10.219.133.187 rate=quameiu crate=diduntu limit=eiusmod", - "fileset.name": "emailsecurity", - "host.ip": "10.219.133.187", - "input.type": "log", - "log.level": "high", - "log.offset": 6400, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.219.133.187" - ], - "rsa.internal.messageid": "session_throttle", - "rsa.misc.client": "ptat", - "rsa.misc.log_session_id": "mwrit", - "rsa.misc.obj_type": "der", - "rsa.misc.rule_name": "equuntur", - "rsa.misc.severity": "high", - "rule.name": "equuntur", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "smtpsrv_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "December 15 08:13:24 tassita very-high mod=smtpsrv cmd=run cmd=oremi rule=ugitsedq duration=turmag", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6575, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "smtpsrv_run", - "rsa.misc.client": "smtpsrv", - "rsa.misc.msgIdPart1": "smtpsrv", - "rsa.misc.msgIdPart2": "run", - "rsa.misc.obj_type": "run cmd=oremi", - "rsa.misc.rule_name": "ugitsedq", - "rsa.misc.severity": "very-high", - "rsa.time.duration_str": "turmag", - "rule.name": "ugitsedq", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "dkimv_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2017/12/29T15:15:58.consecte pteurs dkimv_run[catcupi]: info autf very-high s=tiaecon m=uaturve x=amquisno mod=uido cmd=tla signature=mquiad identity=CSe host=lors7553.api.local result=unknown result_detail=rroqui", - "fileset.name": "emailsecurity", - "host.name": "lors7553.api.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6674, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.hosts": [ - "lors7553.api.local" - ], - "rsa.internal.messageid": "dkimv_run", - "rsa.misc.client": "uido", - "rsa.misc.log_session_id": "tiaecon", - "rsa.misc.log_session_id1": "amquisno", - "rsa.misc.mail_id": "uaturve", - "rsa.misc.obj_type": "tla", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "very-high", - "rsa.misc.sig_id_str": "CSe", - "rsa.network.alias_host": [ - "lors7553.api.local" - ], - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "cvtd", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/01/12T22:18:32.itae dtempo cvtd[atnula]: warn ditautf low mod=iquidex cmd=olup", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 6888, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "cvtd", - "rsa.misc.client": "iquidex", - "rsa.misc.obj_type": "olup", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.ip": "10.65.174.31", - "event.code": "queued-aglife", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/01/27T05:21:06.rspici snisi queued-aglife[766]: olor: to=etquasia, delay=nula, xdelay=quiacons, mailer=uisa, pri=xeacommo, relay=[10.65.174.31], dsn=atur, stat=issu", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 6972, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 766, - "related.ip": [ - "10.65.174.31" - ], - "rsa.db.index": "issu", - "rsa.email.email_dst": "etquasia", - "rsa.internal.messageid": "queued-aglife", - "rsa.misc.client": "queued-aglife", - "rsa.misc.result_code": "atur", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "cancel", - "event.code": "note", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/02/10T12:23:41.ite tasnul note[tuserr]: note tise very-high s=tnul m=expl x=ess module=quiad action=cancel size=6084", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 7142, - "network.bytes": 6084, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "note", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "quiad", - "rsa.misc.log_session_id": "tnul", - "rsa.misc.log_session_id1": "ess", - "rsa.misc.mail_id": "expl", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spam_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/02/24T19:26:15.llumq tenim spam_init[eiusmo]: warn ainc medium mod=antiumdo type=ecill cmd=iduntu id=pisci engine=sunt definitions=texplica", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 7264, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spam_init", - "rsa.misc.client": "antiumdo", - "rsa.misc.obj_type": "iduntu", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "accept", - "event.code": "action_checksubmsg", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "March 11 02:28:49 ate action_checksubmsg s=con m=tqu x=eirur action=accept score=tametco submsgadjust=mquisnos spamscore=25.933000 suspectscore=cit malwarescore=siar phishscore=isn adultscore=veniamq bulkscore=lup tests=iumtotam", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "action_checksubmsg", - "log.offset": 7409, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "action_checksubmsg", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.log_session_id": "con", - "rsa.misc.log_session_id1": "eirur", - "rsa.misc.mail_id": "tqu", - "rsa.misc.severity": "action_checksubmsg", - "rsa.web.reputation_num": 25.933, - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "allow", - "event.code": "regulation_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/03/25T09:31:24.voluptas velill regulation_init[rspic]: err orinrepr high mod=meum type=borumSec cmd=aecatcup id=snisiut action=allow dict=nre file=inB", - "file.name": "inB", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 7638, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "regulation_init", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.client": "meum", - "rsa.misc.obj_type": "aecatcup", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "cvt_detect", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/04/08T16:33:58.upt ulamc cvt_detect[cept]: err aedictas low pid=4253 mod=orio cmd=gna name=ici status=success err=olu", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 7794, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 4253, - "rsa.internal.messageid": "cvt_detect", - "rsa.misc.client": "orio", - "rsa.misc.obj_type": "gna", - "rsa.misc.result": "success", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.address": "str4641.domain", - "destination.ip": "10.151.31.58", - "event.code": "quide", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/04/22T23:36:32.seq moll queued-VoltageEncrypt[2861]: sunt: from=dquianon, size=956, class=itesse, nrcpts=iamqui, msgid=quide, proto=igmp, daemon=cididun, relay=str4641.domain [10.151.31.58]", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 7917, - "network.bytes": 956, - "network.protocol": "igmp", - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 2861, - "related.hosts": [ - "str4641.domain" - ], - "related.ip": [ - "10.151.31.58" - ], - "rsa.email.email_src": "dquianon", - "rsa.internal.messageid": "queued-VoltageEncrypt", - "rsa.misc.client": "queued-VoltageEncrypt", - "rsa.misc.reference_id": "quide", - "rsa.network.host_dst": "str4641.domain", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_throttle", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/05/07T06:39:06.cti rumSecti session_throttle[riamea]: info eca very-high s=tes mod=equam cmd=isi rule=iaecon ip=10.119.38.124 rate=rep crate=remap limit=deri", - "fileset.name": "emailsecurity", - "host.ip": "10.119.38.124", - "input.type": "log", - "log.level": "very-high", - "log.offset": 8112, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.119.38.124" - ], - "rsa.internal.messageid": "session_throttle", - "rsa.misc.client": "equam", - "rsa.misc.log_session_id": "tes", - "rsa.misc.obj_type": "isi", - "rsa.misc.rule_name": "iaecon", - "rsa.misc.severity": "very-high", - "rule.name": "iaecon", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "cvt_detect", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "May 21 13:41:41 scipit high pid=745 mod=cvt cmd=detect cmd=borisnis name=onorumet status=success err=isiutali", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 8275, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 745, - "rsa.internal.messageid": "cvt_detect", - "rsa.misc.client": "cvt", - "rsa.misc.msgIdPart1": "cvt", - "rsa.misc.msgIdPart2": "detect", - "rsa.misc.obj_type": "detect cmd=borisnis", - "rsa.misc.result": "success", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "cvtd", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "June 4 20:44:15 aedict low mod=cvtd cmd=miurere", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 8385, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "cvtd", - "rsa.misc.client": "cvtd", - "rsa.misc.obj_type": "miurere", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.ip": "10.113.119.47", - "event.code": "queued-vdedc2v5", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/06/19T03:46:49.seq rumSe queued-vdedc2v5[tatnonp]: rprt ommo[4821]: idunt: to=expl, delay=olore, xdelay=uian, mailer=atuserro, pri=madminim, relay=[10.52.47.230] [10.113.119.47], dsn=quioff, stat=iuntN", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 8433, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 4821, - "related.ip": [ - "10.113.119.47" - ], - "rsa.db.index": "iuntN", - "rsa.email.email_dst": "expl", - "rsa.internal.messageid": "queued-vdedc2v5", - "rsa.misc.client": "ommo", - "rsa.misc.result_code": "quioff", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "filter", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/07/03T10:49:23.mquis lorsi filter[tetura]: rprt eeufug high mod=modt sig=iduntutl", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 8640, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "filter", - "rsa.misc.client": "modt", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "cvtd_encrypted", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "July 17 17:51:58 expl very-high pid=prehende mod=cvtd cmd=encrypted encrypted=lup", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 8727, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "cvtd_encrypted", - "rsa.misc.client": "cvtd cmd=encrypted", - "rsa.misc.msgIdPart1": "cvtd", - "rsa.misc.msgIdPart2": "encrypted", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_judge", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "August 1 00:54:32 umd sumd medium s=dat mod=session_judge cmd=aUtenima module=turQuis rule=taevi", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 8809, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.hosts": [ - "turQuis" - ], - "rsa.internal.messageid": "session_judge", - "rsa.misc.client": "session_judge", - "rsa.misc.event_source": "turQuis", - "rsa.misc.log_session_id": "dat", - "rsa.misc.obj_type": "aUtenima", - "rsa.misc.rule_name": "taevi", - "rsa.misc.severity": "medium", - "rule.name": "taevi", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spf_run", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/08/15T07:57:06.ercitati eve spf_run[rro]: err oeiusmo very-high s=cusanti m=tconse x=rem mod=tseddoei cmd=teursint rule=etMa duration=llita", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 8906, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spf_run", - "rsa.misc.client": "tseddoei", - "rsa.misc.log_session_id": "cusanti", - "rsa.misc.log_session_id1": "rem", - "rsa.misc.mail_id": "tconse", - "rsa.misc.obj_type": "teursint", - "rsa.misc.rule_name": "etMa", - "rsa.misc.severity": "very-high", - "rsa.time.duration_str": "llita", - "rule.name": "etMa", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "av_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/08/29T14:59:40.nostrum orroquis av_init[eumi]: info tvo low mod=tuser type=mmo cmd=eve id=nbyCicer vendor=scipit engine=equuntu definitions=quamni signatures=turveli", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 9051, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "av_init", - "rsa.misc.client": "tuser", - "rsa.misc.obj_type": "eve", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mltr", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "September 12 22:02:15 ihilm medium s=caboNemo mod=mltr uptas", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 9222, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.event_desc": "uptas", - "rsa.internal.messageid": "mltr", - "rsa.misc.client": "mltr", - "rsa.misc.log_session_id": "caboNemo", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "info", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/09/27T05:04:49.dol exe info[tis]: note oluptat low eid=tinvolup pid=497 status=tvol", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 9283, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 497, - "rsa.internal.messageid": "info", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_judge_tassitas", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "October 11 12:07:23 eritqui medium s=atus mod=session_judge cmd=tassitas module=obea rule=velite", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 9372, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "session_judge_tassitas", - "rsa.misc.msgIdPart1": "session_judge", - "rsa.misc.msgIdPart2": "tassitas", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "av_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/10/25T19:09:57.lore luptate av_init[eritqu]: err elites very-high mod=tamr type=serr cmd=usci id=unturmag vendor=dexeaco engine=lupta definitions=ura signatures=oreeufug", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 9469, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "av_init", - "rsa.misc.client": "tamr", - "rsa.misc.obj_type": "usci", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "milter_listen", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/11/09T02:12:32.ree itten milter_listen[quipexea]: warn orsitv medium mod=nostrum cmd=autodita addr=10.27.154.247", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 9644, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.27.154.247" - ], - "rsa.internal.messageid": "milter_listen", - "rsa.misc.client": "nostrum", - "rsa.misc.obj_type": "autodita", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "source.ip": "10.27.154.247", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "dkimv_type", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/11/23T09:15:06.utfugi ursintoc dkimv_type[tio]: rprt mmodicon: high mod=trudex unexpected response type=tvol", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 9762, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "dkimv_type", - "rsa.misc.client": "trudex", - "rsa.misc.result": "unexpected response", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "session_throttle", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2018/12/07T16:17:40.rehen uaeab session_throttle[ptat]: warn mipsu high s=eturadip mod=amquaera cmd=rsitamet rule=leumiur ip=10.253.121.154 rate=olesti crate=edquia limit=ihi", - "fileset.name": "emailsecurity", - "host.ip": "10.253.121.154", - "input.type": "log", - "log.level": "high", - "log.offset": 9876, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.253.121.154" - ], - "rsa.internal.messageid": "session_throttle", - "rsa.misc.client": "amquaera", - "rsa.misc.log_session_id": "eturadip", - "rsa.misc.obj_type": "rsitamet", - "rsa.misc.rule_name": "leumiur", - "rsa.misc.severity": "high", - "rule.name": "leumiur", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "cvt_detect", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "December 21 23:20:14 emoenimi high pid=5895 mod=cvt cmd=detect cmd=mqu name=onorume status=unknown err=veleu", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 10051, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 5895, - "rsa.internal.messageid": "cvt_detect", - "rsa.misc.client": "cvt", - "rsa.misc.msgIdPart1": "cvt", - "rsa.misc.msgIdPart2": "detect", - "rsa.misc.obj_type": "detect cmd=mqu", - "rsa.misc.result": "unknown", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mltr", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "January 5 06:22:49 dquia high s=bori mod=mltr dipi", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 10160, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.event_desc": "dipi", - "rsa.internal.messageid": "mltr", - "rsa.misc.client": "mltr", - "rsa.misc.log_session_id": "bori", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mltr", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "January 19 13:25:23 quovolu high s=dexe mod=mltr nemul", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 10211, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.event_desc": "nemul", - "rsa.internal.messageid": "mltr", - "rsa.misc.client": "mltr", - "rsa.misc.log_session_id": "dexe", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "allow", - "event.code": "quame", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/02/02T20:27:57.quatur dminim mail_msg[ptatevel]: warn aperiame very-high s=eirured mod=sequamn cmd=perspici module=inimve rule=aea action=allow attachments=5821 rcpts=296 routes=ptat size=4878 guid=nde hdr_mid=quame qid=orumwri subject=atisu spamscore=66.849000 virusname=tse duration=rad elapsed=iat", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 10266, - "network.bytes": 4878, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.hosts": [ - "inimve" - ], - "rsa.counters.dclass_c1": 5821, - "rsa.counters.dclass_c1_str": "No of attachments:", - "rsa.counters.dclass_c2": 296, - "rsa.counters.dclass_c2_str": "No of recipients:", - "rsa.email.subject": "atisu", - "rsa.internal.messageid": "mail_msg", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.client": "sequamn", - "rsa.misc.event_source": "inimve", - "rsa.misc.log_session_id": "eirured", - "rsa.misc.obj_type": "perspici", - "rsa.misc.reference_id": "quame", - "rsa.misc.rule_name": "aea", - "rsa.misc.severity": "very-high", - "rsa.threat.threat_category": "tse", - "rsa.time.duration_str": "rad", - "rsa.web.reputation_num": 66.849, - "rule.name": "aea", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.ip": "10.147.147.248", - "event.code": "sm-msp-queue", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/02/17T03:30:32.lorum suntexpl sm-msp-queue[iqu]: rprt iquamqu[6293]: audant: to=obeata, ctladdr=uredol, delay=uptat, xdelay=toditau, mailer=uiad, pri=nvolupta, relay=[10.80.133.120] [10.147.147.248], dsn=onpr, stat=uira", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 10572, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 6293, - "related.ip": [ - "10.147.147.248" - ], - "rsa.db.index": "uira", - "rsa.email.email_dst": "obeata", - "rsa.internal.messageid": "sm-msp-queue", - "rsa.misc.client": "iquamqu", - "rsa.misc.result_code": "onpr", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "deny", - "event.code": "regulation_refresh", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/03/03T10:33:06.aliqu sequine regulation_refresh[utaliqui]: note isciv very-high mod=econ type=aborio cmd=rve id=catcup action=deny dict=runtmoll file=busBon", - "file.name": "busBon", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 10797, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "regulation_refresh", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.client": "econ", - "rsa.misc.obj_type": "rve", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.ip": "10.232.240.177", - "event.code": "queued-alert", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/03/17T17:35:40.occaeca dan queued-alert[pta]: err upt[4762]: itaedict: to=eroi, delay=onemull, xdelay=mdo, mailer=labore, pri=lorem, relay=[10.68.159.207] [10.232.240.177], dsn=estq, stat=quasiarc", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 10959, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 4762, - "related.ip": [ - "10.232.240.177" - ], - "rsa.db.index": "quasiarc", - "rsa.email.email_dst": "eroi", - "rsa.internal.messageid": "queued-alert", - "rsa.misc.client": "upt", - "rsa.misc.result_code": "estq", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "warn", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/04/01T00:38:14.tDuisaut uel warn[dexerc]: info vol high eid=agn status=\"iqu file: quamqua\"", - "file.name": "quamqua", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 11161, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "warn", - "rsa.misc.event_state": "iqu", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "cancel", - "event.code": "regulation_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "April 15 07:40:49 uunturm very-high mod=regulation type=iaconseq cmd=init id=tseddo action=cancel dict=rissusci file=ectetur", - "file.name": "ectetur", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 11257, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "regulation_init", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.client": "regulation", - "rsa.misc.msgIdPart1": "regulation", - "rsa.misc.msgIdPart2": "init", - "rsa.misc.obj_type": "init", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "zerohour_init", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "April 29 14:43:23 quaturve medium mod=zerohour type=gnamali cmd=init id=iumtota version=issusci", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 11382, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "zerohour_init", - "rsa.misc.client": "zerohour", - "rsa.misc.msgIdPart1": "zerohour", - "rsa.misc.msgIdPart2": "init", - "rsa.misc.obj_type": "init", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "dmarc_type", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/05/13T21:45:57.ecillumd iumto dmarc_type[sequatu]: rprt tiumtot: medium mod=mdoloree type=que cmd=inBCSed id=cteturad policy_cache_entries=umq", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 11478, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "dmarc_type", - "rsa.misc.client": "mdoloree", - "rsa.misc.obj_type": "inBCSed", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_env_rcpt", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "May 28 04:48:31 reseo quam very-high s=pariat mod=mail_env_rcpt cmd=icaboNe r=4840 value=lumd verified=tiaec routes=lorem", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 11626, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.counters.event_counter": 4840, - "rsa.email.email_dst": "lumd", - "rsa.internal.messageid": "mail_env_rcpt", - "rsa.misc.client": "mail_env_rcpt", - "rsa.misc.log_session_id": "pariat", - "rsa.misc.obj_type": "icaboNe", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "deny", - "event.code": "info", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "June 11 11:51:06 seq low mod=info sys=lorsita evt=deny active=itation expires=utlabo msg=tat", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 11748, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.event_desc": "tat", - "rsa.internal.messageid": "info", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.client": "info", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_env_from_itse", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "June 25 18:53:40 ididu medium s=epteurs mod=mail_env_from cmd=itse value=rever ofrom=sBonoru qid=ecatcu tls=ntoccae routes=iscive notroutes=amni host=etconse5657.api.lan ip=10.118.249.126 sampling=dminimv", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 11841, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "mail_env_from_itse", - "rsa.misc.msgIdPart1": "mail_env_from", - "rsa.misc.msgIdPart2": "itse", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "access_load", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/07/10T01:56:14.rep nostru access_load[docons]: info emipsumq low mod=qua type=modit cmd=tatione id=aedicta", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 12046, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "access_load", - "rsa.misc.client": "qua", - "rsa.misc.obj_type": "tatione", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "mail_env_from_umexe", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "July 24 08:58:48 uas high s=reeufu mod=mail_env_from cmd=umexe value=xce ofrom=omnisis qid=corporis tls=tco routes=stiaec notroutes=Cicero host=ven5410.mail.host ip=10.170.55.203 sampling=deom", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 12158, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "mail_env_from_umexe", - "rsa.misc.msgIdPart1": "mail_env_from", - "rsa.misc.msgIdPart2": "umexe", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "allow", - "event.code": "info", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/08/07T16:01:23.Utenima nse info[umq]: note enim low mod=meaquei sys=snisiu evt=allow active=atev expires=vento msg=litsed", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 12351, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.event_desc": "litsed", - "rsa.internal.messageid": "info", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.client": "meaquei", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.action": "block", - "event.code": "mail_continue-system-sendmail", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "August 21 23:03:57 susc taed high s=mipsumd mod=mail_continue-system-sendmail cmd=eiusmo action=block err=sum", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 12478, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "mail_continue-system-sendmail", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.client": "mail_continue-system-sendmail", - "rsa.misc.log_session_id": "mipsumd", - "rsa.misc.obj_type": "eiusmo", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "send", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "September 5 06:06:31 ipex low s=upta cmd=send profile=ivel qid=tmollita rcpts=tionofd", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 12588, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.email.email_dst": "tionofd", - "rsa.internal.messageid": "send", - "rsa.misc.log_session_id": "upta", - "rsa.misc.obj_type": "send", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "http_listen", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/09/19T13:09:05.ccaec repreh http_listen[imven]: note usan very-high mod=idolo cmd=olup addr=10.199.46.88", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "very-high", - "log.offset": 12674, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.199.46.88" - ], - "rsa.internal.messageid": "http_listen", - "rsa.misc.client": "idolo", - "rsa.misc.obj_type": "olup", - "rsa.misc.severity": "very-high", - "service.type": "proofpoint", - "source.ip": "10.199.46.88", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.address": "Sedutper7794.www5.domain", - "destination.ip": "10.154.22.241", - "event.code": "lloinve", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/10/03T20:11:40.nulapari beataevi queued-VoltageEncrypt[3274]: eruntmol: from=plicab, size=5930, class=dmin, nrcpts=sum, msgid=lloinve, proto=ggp, daemon=nim, relay=Sedutper7794.www5.domain [10.154.22.241]", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 12784, - "network.bytes": 5930, - "network.protocol": "ggp", - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 3274, - "related.hosts": [ - "Sedutper7794.www5.domain" - ], - "related.ip": [ - "10.154.22.241" - ], - "rsa.email.email_src": "plicab", - "rsa.internal.messageid": "queued-VoltageEncrypt", - "rsa.misc.client": "queued-VoltageEncrypt", - "rsa.misc.reference_id": "lloinve", - "rsa.network.host_dst": "Sedutper7794.www5.domain", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "cvtd_encrypted", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/10/18T03:14:14.nvol doloreeu cvtd_encrypted[elillumq]: info loremeum medium pid=obeataev mod=rrorsit encrypted=aincid", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "medium", - "log.offset": 12994, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "cvtd_encrypted", - "rsa.misc.client": "rrorsit", - "rsa.misc.severity": "medium", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "info", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "November 1 10:16:48 nis info pid=472 iin /uteiru: xer", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "info", - "log.offset": 13117, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 472, - "rsa.db.index": "uteiru", - "rsa.internal.messageid": "info", - "rsa.misc.action": [ - "iin" - ], - "rsa.misc.result_code": "xer", - "rsa.misc.severity": "info", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "soap_listen", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/11/15T17:19:22.isauteir eritquii soap_listen[atevelit]: note dese low mod=ionula cmd=itaed addr=10.38.111.125", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "low", - "log.offset": 13171, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "related.ip": [ - "10.38.111.125" - ], - "rsa.internal.messageid": "soap_listen", - "rsa.misc.client": "ionula", - "rsa.misc.obj_type": "itaed", - "rsa.misc.severity": "low", - "service.type": "proofpoint", - "source.ip": "10.38.111.125", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "event.code": "spam_load", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "November 30 00:21:57 ationem high mod=spam type=ing cmd=load id=ollita", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.level": "high", - "log.offset": 13286, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "rsa.internal.messageid": "spam_load", - "rsa.misc.client": "spam", - "rsa.misc.msgIdPart1": "spam", - "rsa.misc.msgIdPart2": "load", - "rsa.misc.obj_type": "load", - "rsa.misc.severity": "high", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - }, - { - "destination.address": "estla4081.corp", - "event.code": "queued-default", - "event.dataset": "proofpoint.emailsecurity", - "event.module": "proofpoint", - "event.original": "2019/12/14T07:24:31.nih ncididu queued-default[4250]: STARTTLS=gitsed, relay=estla4081.corp, version=meumf, verify=rExce, cipher=quisquam, bits=boreet", - "fileset.name": "emailsecurity", - "input.type": "log", - "log.offset": 13357, - "observer.product": "Email", - "observer.type": "Firewall", - "observer.vendor": "Proofpoint", - "process.pid": 4250, - "related.hosts": [ - "estla4081.corp" - ], - "rsa.internal.messageid": "queued-default", - "rsa.misc.client": "queued-default", - "rsa.network.host_dst": "estla4081.corp", - "service.type": "proofpoint", - "tags": [ - "forwarded", - "proofpoint.emailsecurity" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/proofpoint/fields.go b/x-pack/filebeat/module/proofpoint/fields.go deleted file mode 100644 index ed84d3f4abb..00000000000 --- a/x-pack/filebeat/module/proofpoint/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package proofpoint - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "proofpoint", asset.ModuleFieldsPri, AssetProofpoint); err != nil { - panic(err) - } -} - -// AssetProofpoint returns asset data. -// This is the base64 encoded zlib format compressed contents of module/proofpoint. -func AssetProofpoint() string { - return "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" -} diff --git a/x-pack/filebeat/module/radware/README.md b/x-pack/filebeat/module/radware/README.md deleted file mode 100644 index d85f315d23f..00000000000 --- a/x-pack/filebeat/module/radware/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# radware module - -This is a module for Radware DefensePro logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML radwaredp version 114 -at 2020-07-13 17:55:41.342523 +0000 UTC. - diff --git a/x-pack/filebeat/module/radware/_meta/config.yml b/x-pack/filebeat/module/radware/_meta/config.yml deleted file mode 100644 index 5341bf6064f..00000000000 --- a/x-pack/filebeat/module/radware/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: radware - defensepro: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9518 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/radware/_meta/docs.asciidoc b/x-pack/filebeat/module/radware/_meta/docs.asciidoc deleted file mode 100644 index 834586f8535..00000000000 --- a/x-pack/filebeat/module/radware/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: radware -:has-dashboards: false - -== Radware module - -deprecated::[8.12.0,"This module is deprecated. See <> for migration options."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Radware DefensePro logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: defensepro - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `defensepro` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "radwaredp" device revision 114. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9518` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/radware/_meta/fields.yml b/x-pack/filebeat/module/radware/_meta/fields.yml deleted file mode 100644 index 394601bc000..00000000000 --- a/x-pack/filebeat/module/radware/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: radware - title: Radware DefensePro - description: > - radware fields. - fields: diff --git a/x-pack/filebeat/module/radware/defensepro/_meta/fields.yml b/x-pack/filebeat/module/radware/defensepro/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/radware/defensepro/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/radware/defensepro/config/input.yml b/x-pack/filebeat/module/radware/defensepro/config/input.yml deleted file mode 100644 index 929b596bbd9..00000000000 --- a/x-pack/filebeat/module/radware/defensepro/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Radware" - product: "DefensePro" - type: "IDS" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/radware/defensepro/config/liblogparser.js - - ${path.home}/module/radware/defensepro/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/radware/defensepro/config/liblogparser.js b/x-pack/filebeat/module/radware/defensepro/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/radware/defensepro/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{fld2->} %{severity->} %{id->} %{category->} \"%{event_type}\" %{protocol->} %{p0}"); - -var dup2 = match("MESSAGE#0:Intrusions:01/1_0", "nwparser.p0", "%{saddr}:%{p0}"); - -var dup3 = match("MESSAGE#0:Intrusions:01/1_1", "nwparser.p0", "%{saddr->} %{p0}"); - -var dup4 = match("MESSAGE#0:Intrusions:01/2", "nwparser.p0", "%{sport->} %{p0}"); - -var dup5 = match("MESSAGE#0:Intrusions:01/3_0", "nwparser.p0", "%{daddr}:%{p0}"); - -var dup6 = match("MESSAGE#0:Intrusions:01/3_1", "nwparser.p0", "%{daddr->} %{p0}"); - -var dup7 = match("MESSAGE#0:Intrusions:01/4", "nwparser.p0", "%{dport->} %{interface->} %{context->} \"%{policyname}\" %{event_state->} %{packets->} %{dclass_counter1->} %{vlan->} %{fld15->} %{fld16->} %{risk->} %{p0}"); - -var dup8 = match("MESSAGE#0:Intrusions:01/5_0", "nwparser.p0", "%{action->} %{sigid_string}"); - -var dup9 = match_copy("MESSAGE#0:Intrusions:01/5_1", "nwparser.p0", "action"); - -var dup10 = setc("eventcategory","1001000000"); - -var dup11 = setc("ec_theme","TEV"); - -var dup12 = setf("msg","$MSG"); - -var dup13 = date_time({ - dest: "event_time", - args: ["fld1","fld2"], - fmts: [ - [dF,dc("-"),dG,dc("-"),dW,dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup14 = setc("dclass_counter1_string","Bandwidth in Kbps"); - -var dup15 = match("MESSAGE#1:Intrusions:02/0", "nwparser.payload", "%{id->} %{category->} \\\"%{event_type}\\\" %{protocol->} %{p0}"); - -var dup16 = match("MESSAGE#1:Intrusions:02/4", "nwparser.p0", "%{dport->} %{interface->} %{context->} \\\"%{policyname}\\\" %{event_state->} %{packets->} %{dclass_counter1->} %{fld1->} %{risk->} %{action->} %{vlan->} %{fld15->} %{fld16->} %{direction}"); - -var dup17 = setc("eventcategory","1002000000"); - -var dup18 = setc("ec_subject","NetworkComm"); - -var dup19 = setc("ec_activity","Scan"); - -var dup20 = setc("eventcategory","1401000000"); - -var dup21 = setc("ec_subject","User"); - -var dup22 = setc("ec_theme","ALM"); - -var dup23 = setc("ec_activity","Modify"); - -var dup24 = setc("ec_theme","Configuration"); - -var dup25 = setc("eventcategory","1612000000"); - -var dup26 = match("MESSAGE#22:Login:04/1_0", "nwparser.p0", "for user%{p0}"); - -var dup27 = match("MESSAGE#22:Login:04/1_1", "nwparser.p0", "user%{p0}"); - -var dup28 = match("MESSAGE#22:Login:04/2", "nwparser.p0", "%{} %{username->} via %{network_service->} (IP: %{saddr})%{p0}"); - -var dup29 = match("MESSAGE#22:Login:04/3_0", "nwparser.p0", ": %{result}"); - -var dup30 = match_copy("MESSAGE#22:Login:04/3_1", "nwparser.p0", "result"); - -var dup31 = setc("eventcategory","1401030000"); - -var dup32 = setc("ec_activity","Logon"); - -var dup33 = setc("ec_theme","Authentication"); - -var dup34 = setc("ec_outcome","Failure"); - -var dup35 = setc("event_description","Login Failed"); - -var dup36 = setc("ec_outcome","Error"); - -var dup37 = setc("eventcategory","1603000000"); - -var dup38 = setc("ec_theme","AccessControl"); - -var dup39 = setc("eventcategory","1401060000"); - -var dup40 = setc("ec_outcome","Success"); - -var dup41 = setc("event_description","User logged in"); - -var dup42 = linear_select([ - dup2, - dup3, -]); - -var dup43 = linear_select([ - dup5, - dup6, -]); - -var dup44 = linear_select([ - dup8, - dup9, -]); - -var dup45 = linear_select([ - dup26, - dup27, -]); - -var dup46 = linear_select([ - dup29, - dup30, -]); - -var dup47 = all_match({ - processors: [ - dup1, - dup42, - dup4, - dup43, - dup7, - dup44, - ], - on_success: processor_chain([ - dup10, - dup11, - dup12, - dup13, - dup14, - ]), -}); - -var dup48 = all_match({ - processors: [ - dup15, - dup42, - dup4, - dup43, - dup16, - ], - on_success: processor_chain([ - dup10, - dup11, - dup12, - dup14, - ]), -}); - -var dup49 = all_match({ - processors: [ - dup1, - dup42, - dup4, - dup43, - dup7, - dup44, - ], - on_success: processor_chain([ - dup17, - dup11, - dup12, - dup13, - dup14, - ]), -}); - -var dup50 = all_match({ - processors: [ - dup15, - dup42, - dup4, - dup43, - dup16, - ], - on_success: processor_chain([ - dup17, - dup11, - dup12, - dup14, - ]), -}); - -var hdr1 = match("HEADER#0:0001", "message", "%DefensePro %{hfld1->} %{hfld2->} %{hfld3->} %{messageid->} \\\"%{hfld4}\\\" %{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld3"), - constant(" "), - field("messageid"), - constant(" \\\""), - field("hfld4"), - constant("\\\" "), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%DefensePro %{messageid->} %{p0}", processor_chain([ - setc("header_id","0002"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr3 = match("HEADER#2:0003", "message", "DefensePro: %{hdate->} %{htime->} %{hfld1->} %{hfld2->} %{messageid->} \"%{hfld3}\" %{p0}", processor_chain([ - setc("header_id","0003"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("hfld2"), - constant(" "), - field("messageid"), - constant(" \""), - field("hfld3"), - constant("\" "), - field("p0"), - ], - }), -])); - -var hdr4 = match("HEADER#3:0004", "message", "DefensePro: %{hdate->} %{htime->} %{hfld1->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0004"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hdate"), - constant(" "), - field("htime"), - constant(" "), - field("hfld1"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, -]); - -var msg1 = msg("Intrusions:01", dup47); - -var msg2 = msg("Intrusions:02", dup48); - -var select2 = linear_select([ - msg1, - msg2, -]); - -var msg3 = msg("SynFlood:01", dup49); - -var msg4 = msg("Behavioral-DoS:01", dup49); - -var msg5 = msg("Behavioral-DoS:02", dup50); - -var select3 = linear_select([ - msg4, - msg5, -]); - -var all1 = all_match({ - processors: [ - dup1, - dup42, - dup4, - dup43, - dup7, - dup44, - ], - on_success: processor_chain([ - dup10, - dup18, - dup19, - dup11, - dup12, - dup13, - dup14, - ]), -}); - -var msg6 = msg("Anti-Scanning:01", all1); - -var all2 = all_match({ - processors: [ - dup15, - dup42, - dup4, - dup43, - dup16, - ], - on_success: processor_chain([ - dup10, - dup18, - dup19, - dup11, - dup12, - dup14, - ]), -}); - -var msg7 = msg("Anti-Scanning:02", all2); - -var select4 = linear_select([ - msg6, - msg7, -]); - -var msg8 = msg("DoS:01", dup49); - -var all3 = all_match({ - processors: [ - dup15, - dup42, - dup4, - dup43, - dup16, - ], - on_success: processor_chain([ - dup17, - dup18, - dup19, - dup11, - dup12, - dup14, - ]), -}); - -var msg9 = msg("DoS:02", all3); - -var select5 = linear_select([ - msg8, - msg9, -]); - -var msg10 = msg("Cracking-Protection:01", dup47); - -var msg11 = msg("Cracking-Protection:02", dup48); - -var select6 = linear_select([ - msg10, - msg11, -]); - -var msg12 = msg("Anomalies:01", dup49); - -var msg13 = msg("Anomalies:02", dup50); - -var select7 = linear_select([ - msg12, - msg13, -]); - -var msg14 = msg("HttpFlood:01", dup49); - -var msg15 = msg("HttpFlood:02", dup50); - -var select8 = linear_select([ - msg14, - msg15, -]); - -var part1 = match("MESSAGE#15:COMMAND:", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} COMMAND: \"%{action}\" by user %{username->} via %{network_service}, source IP %{saddr}", processor_chain([ - dup20, - dup21, - setc("ec_activity","Execute"), - dup22, - dup12, - dup13, -])); - -var msg16 = msg("COMMAND:", part1); - -var part2 = match("MESSAGE#16:Configuration:01", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} %{event_description->} set %{change_new}, Old Values: %{change_old}, ACTION: %{action->} by user %{username->} via %{network_service->} source IP %{saddr}", processor_chain([ - dup20, - dup21, - dup23, - dup24, - dup12, - dup13, -])); - -var msg17 = msg("Configuration:01", part2); - -var part3 = match("MESSAGE#17:Configuration:02", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} %{event_description}, ACTION: %{action->} by user %{username->} via %{network_service->} source IP %{saddr}", processor_chain([ - dup20, - dup21, - dup24, - dup12, - dup13, -])); - -var msg18 = msg("Configuration:02", part3); - -var part4 = match("MESSAGE#18:Configuration:03", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Configuration File downloaded from device by user %{username->} via %{network_service}, source IP %{saddr}", processor_chain([ - dup20, - dup21, - dup24, - dup12, - setc("event_description","Configuration File downloaded"), - dup13, -])); - -var msg19 = msg("Configuration:03", part4); - -var part5 = match("MESSAGE#19:Configuration:04", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Configuration Upload has been completed", processor_chain([ - dup25, - dup24, - dup12, - setc("event_description","Configuration Upload has been completed"), - dup13, -])); - -var msg20 = msg("Configuration:04", part5); - -var part6 = match("MESSAGE#20:Configuration:05", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Configuration Download has been completed", processor_chain([ - dup25, - dup24, - dup12, - setc("event_description","Configuration Download has been completed"), - dup13, -])); - -var msg21 = msg("Configuration:05", part6); - -var part7 = match("MESSAGE#21:Configuration:06", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Configuration file has been modified. Device may fail to load configuration file!", processor_chain([ - dup25, - dup23, - dup24, - dup12, - setc("event_description","Configuration file has been modified. Device may fail to load configuration file!"), - dup13, -])); - -var msg22 = msg("Configuration:06", part7); - -var select9 = linear_select([ - msg17, - msg18, - msg19, - msg20, - msg21, - msg22, -]); - -var part8 = match("MESSAGE#22:Login:04/0", "nwparser.payload", "Login failed %{p0}"); - -var all4 = all_match({ - processors: [ - part8, - dup45, - dup28, - dup46, - ], - on_success: processor_chain([ - dup31, - dup21, - dup32, - dup33, - dup34, - dup12, - dup35, - ]), -}); - -var msg23 = msg("Login:04", all4); - -var part9 = match("MESSAGE#23:Login:05", "nwparser.payload", "Login locked user %{username->} (IP: %{saddr}): %{result}", processor_chain([ - dup31, - dup21, - dup32, - dup33, - dup36, - dup12, - setc("event_description","Login Locked"), -])); - -var msg24 = msg("Login:05", part9); - -var part10 = match("MESSAGE#24:Login:01/0", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Login failed %{p0}"); - -var all5 = all_match({ - processors: [ - part10, - dup45, - dup28, - dup46, - ], - on_success: processor_chain([ - dup31, - dup21, - dup32, - dup33, - dup34, - dup12, - dup35, - dup13, - ]), -}); - -var msg25 = msg("Login:01", all5); - -var part11 = match("MESSAGE#25:Login:02", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Login failed via %{network_service->} (IP: %{saddr}): %{result}", processor_chain([ - dup31, - dup21, - dup32, - dup33, - dup34, - dup12, - dup35, - dup13, -])); - -var msg26 = msg("Login:02", part11); - -var part12 = match("MESSAGE#26:Login:03", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Login locked user %{username->} (IP: %{saddr}): %{result}", processor_chain([ - dup31, - dup21, - dup32, - dup33, - dup36, - dup12, - dup35, - dup13, -])); - -var msg27 = msg("Login:03", part12); - -var select10 = linear_select([ - msg23, - msg24, - msg25, - msg26, - msg27, -]); - -var part13 = match("MESSAGE#27:Connection", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Connection to NTP server timed out", processor_chain([ - dup37, - dup22, - dup12, - setc("event_description","Connection to NTP server timed out"), - dup13, -])); - -var msg28 = msg("Connection", part13); - -var part14 = match("MESSAGE#28:Device", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Device was rebooted by user %{username->} via %{network_service}, source IP %{saddr}", processor_chain([ - dup20, - dup21, - dup22, - dup12, - setc("event_description","Device was rebooted"), - dup13, -])); - -var msg29 = msg("Device", part14); - -var part15 = match("MESSAGE#29:Power", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Power supply fully operational", processor_chain([ - dup25, - dup22, - dup12, - setc("event_description","Power supply fully operational"), - dup13, -])); - -var msg30 = msg("Power", part15); - -var part16 = match("MESSAGE#30:Cold", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Cold Start", processor_chain([ - dup25, - setc("ec_activity","Start"), - dup22, - dup12, - setc("event_description","Cold Start"), - dup13, -])); - -var msg31 = msg("Cold", part16); - -var part17 = match("MESSAGE#31:Port/0", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Port %{interface->} %{p0}"); - -var part18 = match("MESSAGE#31:Port/1_0", "nwparser.p0", "Down%{}"); - -var part19 = match("MESSAGE#31:Port/1_1", "nwparser.p0", "Up%{}"); - -var select11 = linear_select([ - part18, - part19, -]); - -var all6 = all_match({ - processors: [ - part17, - select11, - ], - on_success: processor_chain([ - dup25, - dup22, - dup12, - setc("event_description","Port Status Change"), - dup13, - ]), -}); - -var msg32 = msg("Port", all6); - -var part20 = match("MESSAGE#32:DefensePro", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} DefensePro was powered off", processor_chain([ - dup25, - dup22, - dup12, - setc("event_description","DefensePro Powered off"), - dup13, -])); - -var msg33 = msg("DefensePro", part20); - -var part21 = match("MESSAGE#33:Access:01/0", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} %{id->} %{category->} \"%{event_type}\" %{protocol->} %{saddr->} %{sport->} %{daddr->} %{dport->} %{interface->} %{context->} \"%{policyname}\" %{event_state->} %{packets->} %{dclass_counter1->} %{vlan->} %{fld15->} %{fld16->} %{risk->} %{p0}"); - -var all7 = all_match({ - processors: [ - part21, - dup44, - ], - on_success: processor_chain([ - dup37, - dup38, - dup12, - dup13, - ]), -}); - -var msg34 = msg("Access:01", all7); - -var part22 = match("MESSAGE#34:Access", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Access attempted by unauthorized NMS, Community: %{fld3}, IP: \"%{saddr}\"", processor_chain([ - dup37, - dup38, - dup12, - setc("event_description","Access attempted by unauthorized NMS"), - dup13, -])); - -var msg35 = msg("Access", part22); - -var select12 = linear_select([ - msg34, - msg35, -]); - -var part23 = match("MESSAGE#35:Please", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Please reboot the device for the latest changes to take effect", processor_chain([ - dup20, - dup22, - dup12, - setc("event_description","Reboot required for latest changes"), - dup13, -])); - -var msg36 = msg("Please", part23); - -var part24 = match("MESSAGE#36:User:01", "nwparser.payload", "User %{username->} logged in via %{network_service->} (IP: %{saddr})", processor_chain([ - dup39, - dup21, - dup32, - dup33, - dup40, - dup12, - dup41, -])); - -var msg37 = msg("User:01", part24); - -var part25 = match("MESSAGE#37:User", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} User %{username->} logged in via %{network_service->} (IP: %{saddr})", processor_chain([ - dup39, - dup21, - dup32, - dup33, - dup40, - dup12, - dup41, - dup13, -])); - -var msg38 = msg("User", part25); - -var select13 = linear_select([ - msg37, - msg38, -]); - -var part26 = match("MESSAGE#38:Certificate", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Certificate named %{fld3->} expired on %{fld4->} %{fld5}", processor_chain([ - dup20, - dup12, - setc("event_description","Certificate expired"), - dup13, - date_time({ - dest: "endtime", - args: ["fld5"], - fmts: [ - [dB,dF,dH,dc(":"),dU,dc(":"),dO,dW], - ], - }), -])); - -var msg39 = msg("Certificate", part26); - -var part27 = match("MESSAGE#39:Vision", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} Vision %{event_description->} by user %{username->} via %{network_service}, source IP %{saddr}", processor_chain([ - dup20, - dup12, - dup13, -])); - -var msg40 = msg("Vision", part27); - -var part28 = match("MESSAGE#40:Updating", "nwparser.payload", "Updating policy database%{fld1}", processor_chain([ - dup25, - dup22, - dup12, - setc("event_description","Updating policy database"), -])); - -var msg41 = msg("Updating", part28); - -var part29 = match("MESSAGE#41:Policy", "nwparser.payload", "Policy database updated successfully.%{}", processor_chain([ - dup25, - dup24, - dup40, - dup12, - setc("event_description","Policy database updated successfully"), -])); - -var msg42 = msg("Policy", part29); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "Access": select12, - "Anomalies": select7, - "Anti-Scanning": select4, - "Behavioral-DoS": select3, - "COMMAND:": msg16, - "Certificate": msg39, - "Cold": msg31, - "Configuration": select9, - "Connection": msg28, - "Cracking-Protection": select6, - "DefensePro": msg33, - "Device": msg29, - "DoS": select5, - "HttpFlood": select8, - "Intrusions": select2, - "Login": select10, - "Please": msg36, - "Policy": msg42, - "Port": msg32, - "Power": msg30, - "SynFlood": msg3, - "Updating": msg41, - "User": select13, - "Vision": msg40, - }), -]); - -var part30 = match("MESSAGE#0:Intrusions:01/0", "nwparser.payload", "%{fld1->} %{fld2->} %{severity->} %{id->} %{category->} \"%{event_type}\" %{protocol->} %{p0}"); - -var part31 = match("MESSAGE#0:Intrusions:01/1_0", "nwparser.p0", "%{saddr}:%{p0}"); - -var part32 = match("MESSAGE#0:Intrusions:01/1_1", "nwparser.p0", "%{saddr->} %{p0}"); - -var part33 = match("MESSAGE#0:Intrusions:01/2", "nwparser.p0", "%{sport->} %{p0}"); - -var part34 = match("MESSAGE#0:Intrusions:01/3_0", "nwparser.p0", "%{daddr}:%{p0}"); - -var part35 = match("MESSAGE#0:Intrusions:01/3_1", "nwparser.p0", "%{daddr->} %{p0}"); - -var part36 = match("MESSAGE#0:Intrusions:01/4", "nwparser.p0", "%{dport->} %{interface->} %{context->} \"%{policyname}\" %{event_state->} %{packets->} %{dclass_counter1->} %{vlan->} %{fld15->} %{fld16->} %{risk->} %{p0}"); - -var part37 = match("MESSAGE#0:Intrusions:01/5_0", "nwparser.p0", "%{action->} %{sigid_string}"); - -var part38 = match_copy("MESSAGE#0:Intrusions:01/5_1", "nwparser.p0", "action"); - -var part39 = match("MESSAGE#1:Intrusions:02/0", "nwparser.payload", "%{id->} %{category->} \\\"%{event_type}\\\" %{protocol->} %{p0}"); - -var part40 = match("MESSAGE#1:Intrusions:02/4", "nwparser.p0", "%{dport->} %{interface->} %{context->} \\\"%{policyname}\\\" %{event_state->} %{packets->} %{dclass_counter1->} %{fld1->} %{risk->} %{action->} %{vlan->} %{fld15->} %{fld16->} %{direction}"); - -var part41 = match("MESSAGE#22:Login:04/1_0", "nwparser.p0", "for user%{p0}"); - -var part42 = match("MESSAGE#22:Login:04/1_1", "nwparser.p0", "user%{p0}"); - -var part43 = match("MESSAGE#22:Login:04/2", "nwparser.p0", "%{} %{username->} via %{network_service->} (IP: %{saddr})%{p0}"); - -var part44 = match("MESSAGE#22:Login:04/3_0", "nwparser.p0", ": %{result}"); - -var part45 = match_copy("MESSAGE#22:Login:04/3_1", "nwparser.p0", "result"); - -var select14 = linear_select([ - dup2, - dup3, -]); - -var select15 = linear_select([ - dup5, - dup6, -]); - -var select16 = linear_select([ - dup8, - dup9, -]); - -var select17 = linear_select([ - dup26, - dup27, -]); - -var select18 = linear_select([ - dup29, - dup30, -]); - -var all8 = all_match({ - processors: [ - dup1, - dup42, - dup4, - dup43, - dup7, - dup44, - ], - on_success: processor_chain([ - dup10, - dup11, - dup12, - dup13, - dup14, - ]), -}); - -var all9 = all_match({ - processors: [ - dup15, - dup42, - dup4, - dup43, - dup16, - ], - on_success: processor_chain([ - dup10, - dup11, - dup12, - dup14, - ]), -}); - -var all10 = all_match({ - processors: [ - dup1, - dup42, - dup4, - dup43, - dup7, - dup44, - ], - on_success: processor_chain([ - dup17, - dup11, - dup12, - dup13, - dup14, - ]), -}); - -var all11 = all_match({ - processors: [ - dup15, - dup42, - dup4, - dup43, - dup16, - ], - on_success: processor_chain([ - dup17, - dup11, - dup12, - dup14, - ]), -}); diff --git a/x-pack/filebeat/module/radware/defensepro/ingest/pipeline.yml b/x-pack/filebeat/module/radware/defensepro/ingest/pipeline.yml deleted file mode 100644 index 4812096fb70..00000000000 --- a/x-pack/filebeat/module/radware/defensepro/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Radware DefensePro - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/radware/defensepro/manifest.yml b/x-pack/filebeat/module/radware/defensepro/manifest.yml deleted file mode 100644 index b516c39cec5..00000000000 --- a/x-pack/filebeat/module/radware/defensepro/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["radware.defensepro", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9535 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/radware/fields.go b/x-pack/filebeat/module/radware/fields.go deleted file mode 100644 index 5dc61100f7a..00000000000 --- a/x-pack/filebeat/module/radware/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package radware - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "radware", asset.ModuleFieldsPri, AssetRadware); err != nil { - panic(err) - } -} - -// AssetRadware returns asset data. -// This is the base64 encoded zlib format compressed contents of module/radware. -func AssetRadware() string { - return "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" -} diff --git a/x-pack/filebeat/module/snort/README.md b/x-pack/filebeat/module/snort/README.md deleted file mode 100644 index 3be60407787..00000000000 --- a/x-pack/filebeat/module/snort/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# snort module - -This is a module for Snort/Sourcefire logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML snort version 134 -at 2020-09-01 14:18:11.30825 +0000 UTC. - diff --git a/x-pack/filebeat/module/snort/_meta/config.yml b/x-pack/filebeat/module/snort/_meta/config.yml deleted file mode 100644 index e428234a180..00000000000 --- a/x-pack/filebeat/module/snort/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: snort - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9532 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/snort/_meta/docs.asciidoc b/x-pack/filebeat/module/snort/_meta/docs.asciidoc deleted file mode 100644 index 025afa52f35..00000000000 --- a/x-pack/filebeat/module/snort/_meta/docs.asciidoc +++ /dev/null @@ -1,72 +0,0 @@ -[role="xpack"] - -:modulename: snort -:has-dashboards: false - -== Snort module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/snort[Snort] Elastic integration instead."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -:modulename!: - -This is a module for receiving Snort/Sourcefire logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: log - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `log` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "snort" device revision 134. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9532` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/snort/_meta/fields.yml b/x-pack/filebeat/module/snort/_meta/fields.yml deleted file mode 100644 index f9589132eb0..00000000000 --- a/x-pack/filebeat/module/snort/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: snort - title: Snort/Sourcefire - description: > - snort fields. - fields: diff --git a/x-pack/filebeat/module/snort/fields.go b/x-pack/filebeat/module/snort/fields.go deleted file mode 100644 index 7d0c47bdb78..00000000000 --- a/x-pack/filebeat/module/snort/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package snort - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "snort", asset.ModuleFieldsPri, AssetSnort); err != nil { - panic(err) - } -} - -// AssetSnort returns asset data. -// This is the base64 encoded zlib format compressed contents of module/snort. -func AssetSnort() string { - return "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" -} diff --git a/x-pack/filebeat/module/snort/log/_meta/fields.yml b/x-pack/filebeat/module/snort/log/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/snort/log/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/snort/log/config/input.yml b/x-pack/filebeat/module/snort/log/config/input.yml deleted file mode 100644 index 2678c7fa271..00000000000 --- a/x-pack/filebeat/module/snort/log/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Snort" - product: "IDS" - type: "IDS" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/snort/log/config/liblogparser.js - - ${path.home}/module/snort/log/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/snort/log/config/liblogparser.js b/x-pack/filebeat/module/snort/log/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/snort/log/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{day->} %{time->} %{host->} %{hfld1}: [%{hevent_source}:%{messageid}:%{hversion}] %{p0}"); - -var dup3 = match("HEADER#2:00010/1_0", "nwparser.p0", "\"%{hfld10}\" [Impact: %{p0}"); - -var dup4 = match("HEADER#2:00010/1_1", "nwparser.p0", "%{hfld10->} [Impact: %{p0}"); - -var dup5 = match("HEADER#3:00011/2", "nwparser.p0", "%{result}] From %{hfld11->} at %{fld9->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{payload}"); - -var dup6 = match("HEADER#4:00012/1_0", "nwparser.p0", "\"%{hfld10}\" [Classification: %{p0}"); - -var dup7 = match("HEADER#4:00012/1_1", "nwparser.p0", "%{hfld10->} [Classification: %{p0}"); - -var dup8 = match("HEADER#4:00012/2", "nwparser.p0", "%{sigtype}] [Priority: %{payload}"); - -var dup9 = match("HEADER#5:00013/1_0", "nwparser.p0", "\"%{hfld10}\" [%{p0}"); - -var dup10 = match("HEADER#5:00013/1_1", "nwparser.p0", "%{hfld10->} [%{p0}"); - -var dup11 = match("HEADER#5:00013/2", "nwparser.p0", "%{info}] [Priority: %{payload}"); - -var dup12 = match("HEADER#7:00020/0", "message", "%{month->} %{day->} %{time->} snort[%{hpid}]: [%{hevent_source}:%{messageid}:%{hversion}] %{p0}"); - -var dup13 = match("HEADER#7:00020/2", "nwparser.p0", "%{result}] From %{group_object}/%{hfld11->} at %{fld9->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{payload}"); - -var dup14 = match("HEADER#11:00030/0", "message", "%{month->} %{day->} %{time->} snort: [%{hevent_source}:%{messageid}:%{hversion}] %{p0}"); - -var dup15 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant(" "), - field("p0"), - ], -}); - -var dup16 = setc("messageid","Primary_Detection_Engine"); - -var dup17 = call({ - dest: "nwparser.messageid", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant("_"), - field("msgIdPart2"), - ], -}); - -var dup18 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant(" "), - field("msgIdPart2"), - constant(" From "), - field("hsensor"), - constant(" at "), - field("p0"), - ], -}); - -var dup19 = call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant(" "), - field("msgIdPart2"), - constant(" "), - field("msgIdPart3"), - constant(" "), - field("p0"), - ], -}); - -var dup20 = match("HEADER#26:0011/1_1", "nwparser.p0", "at%{p0}"); - -var dup21 = match("HEADER#26:0011/2", "nwparser.p0", "%{} %{p0}"); - -var dup22 = call({ - dest: "nwparser.messageid", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant("_"), - field("msgIdPart2"), - constant("_"), - field("msgIdPart3"), - ], -}); - -var dup23 = call({ - dest: "nwparser.messageid", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant("_"), - field("msgIdPart2"), - constant("_"), - field("msgIdPart3"), - constant("_"), - field("msgIdPart4"), - ], -}); - -var dup24 = setc("messageid","HMNOTIFY"); - -var dup25 = setc("messageid","SystemSettings"); - -var dup26 = match("HEADER#41:0024/1_0", "nwparser.p0", "[%{hpid}]: [%{p0}"); - -var dup27 = match("HEADER#41:0024/1_1", "nwparser.p0", ": [%{p0}"); - -var dup28 = match("HEADER#41:0024/2", "nwparser.p0", "]%{hversion}:%{hfld2}:%{hevent_source->} %{payload}"); - -var dup29 = setc("messageid","Snort_AlertLog"); - -var dup30 = match("HEADER#43:0023/0", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: [%{hevent_source}:%{hfld2}:%{hversion}] %{p0}"); - -var dup31 = date_time({ - dest: "event_time", - args: ["month","day","time"], - fmts: [ - [dB,dF,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup32 = setf("msg","$MSG"); - -var dup33 = match("MESSAGE#1:0/0_0", "nwparser.payload", "%{threat_val->} ]:alert {%{p0}"); - -var dup34 = match("MESSAGE#1:0/0_1", "nwparser.payload", "%{threat_val->} ]: %{fld1->} {%{p0}"); - -var dup35 = match("MESSAGE#1:0/0_2", "nwparser.payload", "%{threat_val}]: {%{p0}"); - -var dup36 = match("MESSAGE#1:0/0_3", "nwparser.payload", "%{threat_val->} ] {%{p0}"); - -var dup37 = match("MESSAGE#1:0/1", "nwparser.p0", "%{protocol}} %{p0}"); - -var dup38 = match("MESSAGE#1:0/2_0", "nwparser.p0", "%{saddr}:%{sport->} (%{location_src}) -> %{p0}"); - -var dup39 = match("MESSAGE#1:0/2_1", "nwparser.p0", "%{saddr}:%{sport->} -> %{p0}"); - -var dup40 = match("MESSAGE#1:0/2_2", "nwparser.p0", "%{saddr->} -> %{p0}"); - -var dup41 = match("MESSAGE#1:0/3_0", "nwparser.p0", "%{daddr}:%{dport->} (%{location_dst})"); - -var dup42 = match("MESSAGE#1:0/3_1", "nwparser.p0", "%{daddr}:%{dport}"); - -var dup43 = match_copy("MESSAGE#1:0/3_2", "nwparser.p0", "daddr"); - -var dup44 = setc("eventcategory","1003030000"); - -var dup45 = setf("severity","threat_val"); - -var dup46 = setf("event_log","hfld1"); - -var dup47 = setf("hostname","host"); - -var dup48 = setf("hostid","host"); - -var dup49 = setf("event_counter","hevent_source"); - -var dup50 = setf("sigid","messageid"); - -var dup51 = setf("version","hversion"); - -var dup52 = setf("sensor","hfld11"); - -var dup53 = setf("context","hfld10"); - -var dup54 = setf("fld10","hfld10"); - -var dup55 = call({ - dest: "nwparser.signame", - fn: RMQ, - args: [ - field("fld10"), - ], -}); - -var dup56 = date_time({ - dest: "event_time", - args: ["event_time_string"], - fmts: [ - [dB,dF,dH,dc(":"),dU,dc(":"),dO,dW,dc(" UTC")], - ], -}); - -var dup57 = match("MESSAGE#2:0:01/0", "nwparser.payload", "%{context->} %{p0}"); - -var dup58 = match("MESSAGE#2:0:01/1_0", "nwparser.p0", "\u003c\u003c%{interface}> %{p0}"); - -var dup59 = match_copy("MESSAGE#2:0:01/1_1", "nwparser.p0", "p0"); - -var dup60 = match("MESSAGE#2:0:01/2", "nwparser.p0", "{%{protocol}} %{p0}"); - -var dup61 = setc("eventcategory","1103000000"); - -var dup62 = setc("eventcategory","1002040000"); - -var dup63 = setc("eventcategory","1001020206"); - -var dup64 = setc("eventcategory","1002000000"); - -var dup65 = setc("eventcategory","1001020200"); - -var dup66 = match("MESSAGE#33:10/0", "nwparser.payload", "%{threat_val->} ]%{p0}"); - -var dup67 = match("MESSAGE#33:10/1_0", "nwparser.p0", " \u003c\u003c%{interface}> %{p0}"); - -var dup68 = match("MESSAGE#33:10/1_1", "nwparser.p0", ": %{p0}"); - -var dup69 = match("MESSAGE#33:10/1_2", "nwparser.p0", " %{p0}"); - -var dup70 = setc("eventcategory","1001020100"); - -var dup71 = setc("eventcategory","1001030000"); - -var dup72 = setc("ec_subject","NetworkComm"); - -var dup73 = setc("ec_activity","Detect"); - -var dup74 = setc("ec_theme","TEV"); - -var dup75 = match("MESSAGE#80:103:01/0", "nwparser.payload", "%{context->} \u003c\u003c%{interface}> %{protocol->} %{p0}"); - -var dup76 = setf("signame","context"); - -var dup77 = setc("ec_subject","Process"); - -var dup78 = setc("eventcategory","1001020204"); - -var dup79 = setc("eventcategory","1001030500"); - -var dup80 = setc("eventcategory","1001020300"); - -var dup81 = setc("eventcategory","1001030305"); - -var dup82 = setc("eventcategory","1104000000"); - -var dup83 = setc("eventcategory","1001020205"); - -var dup84 = setc("ec_activity","Scan"); - -var dup85 = setc("eventcategory","1002010100"); - -var dup86 = setc("eventcategory","1002060000"); - -var dup87 = setc("eventcategory","1103020000"); - -var dup88 = setc("eventcategory","1103030000"); - -var dup89 = setc("eventcategory","1001020309"); - -var dup90 = setc("eventcategory","1301000000"); - -var dup91 = setc("eventcategory","1401030000"); - -var dup92 = setc("eventcategory","1003020000"); - -var dup93 = setc("eventcategory","1001030202"); - -var dup94 = setc("eventcategory","1001020308"); - -var dup95 = setc("eventcategory","1001030301"); - -var dup96 = setc("eventcategory","1001030304"); - -var dup97 = setc("eventcategory","1001020306"); - -var dup98 = setc("eventcategory","1001030302"); - -var dup99 = setc("eventcategory","1001020202"); - -var dup100 = setc("eventcategory","1003010000"); - -var dup101 = setc("eventcategory","1001020305"); - -var dup102 = setc("eventcategory","1003000000"); - -var dup103 = setc("eventcategory","1001030201"); - -var dup104 = setc("eventcategory","1001030203"); - -var dup105 = setc("eventcategory","1001020301"); - -var dup106 = setc("eventcategory","1001020304"); - -var dup107 = setc("eventcategory","1201010000"); - -var dup108 = setc("eventcategory","1303000000"); - -var dup109 = setc("eventcategory","1001020203"); - -var dup110 = setc("eventcategory","1204000000"); - -var dup111 = setc("eventcategory","1001020307"); - -var dup112 = setc("eventcategory","1401060000"); - -var dup113 = match("MESSAGE#5535:3086/0_0", "nwparser.payload", "%{threat_val->} ]:alert %{p0}"); - -var dup114 = match("MESSAGE#5535:3086/0_1", "nwparser.payload", "%{threat_val}]: %{p0}"); - -var dup115 = match("MESSAGE#5535:3086/0_2", "nwparser.payload", "%{threat_val->} ] %{p0}"); - -var dup116 = match("MESSAGE#5535:3086/1", "nwparser.p0", "%{p0}"); - -var dup117 = setc("eventcategory","1003050000"); - -var dup118 = setc("eventcategory","1001020201"); - -var dup119 = setc("eventcategory","1207040100"); - -var dup120 = setc("eventcategory","1102000000"); - -var dup121 = setc("eventcategory","1003010800"); - -var dup122 = setc("eventcategory","1603090000"); - -var dup123 = setc("eventcategory","1003040000"); - -var dup124 = match("MESSAGE#30119:28015/1_1", "nwparser.p0", ":alert %{p0}"); - -var dup125 = match("MESSAGE#36377:34596/3_1", "nwparser.p0", "%{saddr->} -> %{p0}"); - -var dup126 = match("MESSAGE#36377:34596/4_1", "nwparser.p0", "%{daddr}"); - -var dup127 = setc("eventcategory","1605000000"); - -var dup128 = setc("dclass_counter1_string","connections"); - -var dup129 = date_time({ - dest: "event_time", - args: ["event_time_string"], - fmts: [ - [dB,dF,dH,dc(":"),dT,dc(":"),dS,dW], - ], -}); - -var dup130 = match("MESSAGE#38458:MAC_Information_Change/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} MAC: %{smacaddr->} TTL %{p0}"); - -var dup131 = match("MESSAGE#38458:MAC_Information_Change/1_0", "nwparser.p0", "%{sinterface->} (%{protocol->} detected)"); - -var dup132 = match_copy("MESSAGE#38458:MAC_Information_Change/1_1", "nwparser.p0", "sinterface"); - -var dup133 = match("MESSAGE#38461:New_Host/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> %{p0}"); - -var dup134 = match_copy("MESSAGE#38462:New_Network_Protocol/2", "nwparser.p0", "protocol"); - -var dup135 = setc("eventcategory","1605020000"); - -var dup136 = match("MESSAGE#38468:TCP_Service_Information_Update/1_0", "nwparser.p0", "%{protocol->} Confidence: %{result}"); - -var dup137 = setc("ec_subject","User"); - -var dup138 = setc("ec_activity","Logon"); - -var dup139 = setc("ec_theme","Authentication"); - -var dup140 = setc("ec_outcome","Success"); - -var dup141 = setf("filename","hfld1"); - -var dup142 = setf("username","hfld3"); - -var dup143 = setf("hostip","hfld2"); - -var dup144 = setc("ec_activity","Logoff"); - -var dup145 = match("MESSAGE#38495:SystemSettings:09/1_0", "nwparser.p0", ">%{p0}"); - -var dup146 = setc("category","Session Expiration"); - -var dup147 = match("MESSAGE#38514:Primary_Detection_Engine/0", "nwparser.payload", "%{fld1}][%{policyname}] Connection Type: %{event_state}, User: %{username}, Client: %{application}, Application Protocol: %{protocol}, Web App: %{application}, Access Control Rule Name: %{rulename}, Access Control Rule Action: %{action}, Access Control Rule Reasons: %{result}, URL Category: %{category}, URL Reputation: %{p0}"); - -var dup148 = match("MESSAGE#38514:Primary_Detection_Engine/1_0", "nwparser.p0", "Risk unknown, URL: %{p0}"); - -var dup149 = match("MESSAGE#38514:Primary_Detection_Engine/1_1", "nwparser.p0", "%{reputation_num}, URL: %{p0}"); - -var dup150 = setc("eventcategory","1801000000"); - -var dup151 = setc("dclass_counter1_string","Number of File Events"); - -var dup152 = setc("dclass_counter2_string","Number of IPS Events"); - -var dup153 = match("MESSAGE#38521:Network_Based_Retrospective/1_0", "nwparser.p0", "-*> %{p0}"); - -var dup154 = match("MESSAGE#38521:Network_Based_Retrospective/1_1", "nwparser.p0", "> %{p0}"); - -var dup155 = match("MESSAGE#38522:Network_Based_Retrospective:01/1_0", "nwparser.p0", "From \"%{sensor}\" at %{p0}"); - -var dup156 = match("MESSAGE#38522:Network_Based_Retrospective:01/1_1", "nwparser.p0", "at %{p0}"); - -var dup157 = match("MESSAGE#38522:Network_Based_Retrospective:01/2", "nwparser.p0", "%{fld6->} %{event_time_string->} UTC %{p0}"); - -var dup158 = date_time({ - dest: "event_time", - args: ["month","day","time"], - fmts: [ - [dB,dF,dH,dc(":"),dT,dc(":"),dS], - ], -}); - -var dup159 = match("MESSAGE#38528:Client_Update/4", "nwparser.p0", "IP Address: %{saddr->} %{network_service}"); - -var dup160 = match("MESSAGE#38530:UDP_Server_Information_Update/4", "nwparser.p0", "IP Address: %{saddr->} Port: %{sport->} Service: %{p0}"); - -var dup161 = date_time({ - dest: "event_time", - args: ["hyear","hmonth","day","time"], - fmts: [ - [dW,dG,dF,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup162 = date_time({ - dest: "event_time", - args: ["month","day","hyear","time"], - fmts: [ - [dB,dF,dW,dH,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup163 = date_time({ - dest: "starttime", - args: ["fld21"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dc("T"),dH,dc(":"),dU,dc(":"),dO,dc("Z")], - ], -}); - -var dup164 = setf("msg_id","hfld3"); - -var dup165 = constant("1003030000"); - -var dup166 = constant("1001000000"); - -var dup167 = linear_select([ - dup3, - dup4, -]); - -var dup168 = linear_select([ - dup6, - dup7, -]); - -var dup169 = linear_select([ - dup9, - dup10, -]); - -var dup170 = match("HEADER#26:0011/0", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: \u003c\u003c*- %{msgIdPart1->} %{msgIdPart2->} %{msgIdPart3->} %{p0}", processor_chain([ - dup19, -])); - -var dup171 = linear_select([ - dup26, - dup27, -]); - -var dup172 = linear_select([ - dup33, - dup34, - dup35, - dup36, -]); - -var dup173 = linear_select([ - dup38, - dup39, - dup40, -]); - -var dup174 = linear_select([ - dup41, - dup42, - dup43, -]); - -var dup175 = linear_select([ - dup58, - dup59, -]); - -var dup176 = linear_select([ - dup67, - dup68, - dup69, -]); - -var dup177 = linear_select([ - dup113, - dup114, - dup115, -]); - -var dup178 = linear_select([ - dup68, - dup69, -]); - -var dup179 = linear_select([ - dup67, - dup124, - dup68, - dup69, -]); - -var dup180 = linear_select([ - dup39, - dup125, -]); - -var dup181 = linear_select([ - dup42, - dup126, -]); - -var dup182 = linear_select([ - dup131, - dup132, -]); - -var dup183 = match("MESSAGE#38465:OS_Confidence_Update", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} OS: %{version->} Confidence: %{result}", processor_chain([ - dup127, - dup31, - dup32, - dup47, - dup129, -])); - -var dup184 = match("MESSAGE#38467:TCP_Service_Confidence_Update", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Port: %{sport->} Service: %{protocol->} Confidence: %{result}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var dup185 = linear_select([ - dup136, - dup134, -]); - -var dup186 = match("MESSAGE#38471:New_Client_Application", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} %{product}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var dup187 = match("MESSAGE#38473:New_TCP_Service", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Port: %{sport}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var dup188 = match("MESSAGE#38475:TCP_Port_Timeout", "nwparser.payload", "%{context->} From %{sensor->} at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var dup189 = linear_select([ - dup148, - dup149, -]); - -var dup190 = linear_select([ - dup153, - dup154, -]); - -var dup191 = linear_select([ - dup155, - dup156, -]); - -var dup192 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup193 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var dup194 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup195 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var dup196 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup197 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup63, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup198 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup199 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup65, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup200 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup201 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup70, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup202 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup203 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup204 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup205 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup206 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup207 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup208 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup209 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup210 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup211 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup212 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup213 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup82, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup214 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup215 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup85, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup216 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup85, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup217 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup218 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup86, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup219 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup86, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup220 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup221 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup63, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup222 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup223 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup224 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup87, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup225 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup88, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup226 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup88, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup227 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup228 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup229 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup230 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup231 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup232 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup233 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup234 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup235 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup236 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup91, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup237 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup91, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup238 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup239 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup240 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup93, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup241 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup93, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup242 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup243 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup244 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup245 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup246 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup95, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup247 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup95, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup248 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup96, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup249 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup96, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup250 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup97, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup251 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup97, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup252 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup253 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup254 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup255 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup256 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup257 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup98, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup258 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup259 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup260 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup99, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup261 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup99, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup262 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup263 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup264 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup265 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup266 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup267 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup268 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup269 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup102, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup270 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup102, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup271 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup103, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup272 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup103, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup273 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup90, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup274 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup104, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup275 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup104, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup276 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup105, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup277 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup105, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup278 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup106, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup279 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup106, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup280 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup98, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup281 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup107, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup282 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup107, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup283 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup284 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup285 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup108, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup286 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup108, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup287 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup288 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup289 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup70, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup290 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup291 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup292 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup293 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup294 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup295 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup109, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup296 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup109, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup297 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup110, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup298 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup111, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup299 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup111, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup300 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup110, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var dup301 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup112, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup302 = all_match({ - processors: [ - dup177, - dup116, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup303 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup117, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup304 = all_match({ - processors: [ - dup177, - dup116, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup305 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup118, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup306 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup105, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup307 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup70, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup308 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup309 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup63, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup310 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup311 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup312 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup119, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup313 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup120, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup314 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup315 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup316 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup65, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup317 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup121, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup318 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup319 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup122, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup320 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup123, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup321 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup322 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup99, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup323 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup324 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup325 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup102, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup326 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup119, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup327 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup121, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup328 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup93, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup329 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup120, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup330 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup108, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup331 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup104, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup332 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup90, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup333 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup334 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup335 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup97, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup336 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup337 = all_match({ - processors: [ - dup66, - dup179, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup338 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup118, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup339 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup340 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup341 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup63, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup342 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup102, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup343 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup344 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup70, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup345 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup64, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup346 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup99, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup347 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup348 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup65, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup349 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup105, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup350 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup351 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup352 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup104, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var dup353 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var dup354 = all_match({ - processors: [ - dup130, - dup182, - ], - on_success: processor_chain([ - dup127, - dup31, - dup32, - dup47, - dup129, - ]), -}); - -var dup355 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - dup159, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var dup356 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - dup160, - dup185, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var hdr1 = match("HEADER#0:0055", "message", "%{hyear}-%{hmonth}-%{day}T%{time}Z %FTD-%{fld2}-%{hfld3}:%{payload}", processor_chain([ - setc("header_id","0055"), - dup1, -])); - -var hdr2 = match("HEADER#1:0056", "message", "%{hyear}-%{hmonth}-%{day}T%{time}Z %{hostname->} %{fld1->} %NGIPS-%{severity}-%{hfld3}:%{payload}", processor_chain([ - setc("header_id","0056"), - setc("messageid","NGIPS_events"), -])); - -var part1 = match("HEADER#2:00010/2", "nwparser.p0", "%{result}] From %{p0}"); - -var part2 = match("HEADER#2:00010/3_0", "nwparser.p0", "\"%{group_object}/%{hfld11}\" at %{p0}"); - -var part3 = match("HEADER#2:00010/3_1", "nwparser.p0", "%{group_object}/%{hfld11->} at %{p0}"); - -var select1 = linear_select([ - part2, - part3, -]); - -var part4 = match("HEADER#2:00010/4", "nwparser.p0", "%{fld9->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{payload}"); - -var all1 = all_match({ - processors: [ - dup2, - dup167, - part1, - select1, - part4, - ], - on_success: processor_chain([ - setc("header_id","00010"), - ]), -}); - -var all2 = all_match({ - processors: [ - dup2, - dup167, - dup5, - ], - on_success: processor_chain([ - setc("header_id","00011"), - ]), -}); - -var all3 = all_match({ - processors: [ - dup2, - dup168, - dup8, - ], - on_success: processor_chain([ - setc("header_id","00012"), - ]), -}); - -var all4 = all_match({ - processors: [ - dup2, - dup169, - dup11, - ], - on_success: processor_chain([ - setc("header_id","00013"), - ]), -}); - -var hdr3 = match("HEADER#6:0015", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: %{hfld2}:%{hfld3->} at %{hfld4}: [%{hevent_source}:%{messageid}:%{hversion}]%{payload}", processor_chain([ - setc("header_id","0015"), -])); - -var all5 = all_match({ - processors: [ - dup12, - dup167, - dup13, - ], - on_success: processor_chain([ - setc("header_id","00020"), - ]), -}); - -var all6 = all_match({ - processors: [ - dup12, - dup167, - dup5, - ], - on_success: processor_chain([ - setc("header_id","00021"), - ]), -}); - -var all7 = all_match({ - processors: [ - dup12, - dup168, - dup8, - ], - on_success: processor_chain([ - setc("header_id","00022"), - ]), -}); - -var all8 = all_match({ - processors: [ - dup12, - dup169, - dup11, - ], - on_success: processor_chain([ - setc("header_id","00023"), - ]), -}); - -var all9 = all_match({ - processors: [ - dup14, - dup167, - dup13, - ], - on_success: processor_chain([ - setc("header_id","00030"), - ]), -}); - -var all10 = all_match({ - processors: [ - dup14, - dup167, - dup5, - ], - on_success: processor_chain([ - setc("header_id","00031"), - ]), -}); - -var all11 = all_match({ - processors: [ - dup14, - dup168, - dup8, - ], - on_success: processor_chain([ - setc("header_id","00032"), - ]), -}); - -var all12 = all_match({ - processors: [ - dup14, - dup169, - dup11, - ], - on_success: processor_chain([ - setc("header_id","00033"), - ]), -}); - -var hdr4 = match("HEADER#15:0030/0", "message", "snort[%{hpid}]: [%{hevent_source}:%{messageid}:%{hversion}] %{p0}"); - -var all13 = all_match({ - processors: [ - hdr4, - dup168, - dup8, - ], - on_success: processor_chain([ - setc("header_id","0030"), - ]), -}); - -var hdr5 = match("HEADER#16:0004", "message", "snort[%{hpid}]: [%{hevent_source}:%{messageid}:%{hversion}] %{payload}", processor_chain([ - setc("header_id","0004"), -])); - -var hdr6 = match("HEADER#17:0005", "message", "snort: [%{hevent_source}:%{messageid}:%{hversion}] %{payload}", processor_chain([ - setc("header_id","0005"), -])); - -var hdr7 = match("HEADER#18:0018", "message", "snort[%{hpid}]: %{messageid}: %{payload}", processor_chain([ - setc("header_id","0018"), -])); - -var hdr8 = match("HEADER#19:0006", "message", "snort: %{messageid}: %{payload}", processor_chain([ - setc("header_id","0006"), -])); - -var hdr9 = match("HEADER#20:0007", "message", "%{month->} %{day->} %{time->} %{host->} snort[%{hpid}]: %{messageid->} %{p0}", processor_chain([ - setc("header_id","0007"), - dup15, -])); - -var hdr10 = match("HEADER#21:0008", "message", "%{month->} %{day->} %{time->} %{host->} snort[%{hpid}]: [%{hevent_source}:%{messageid}:%{hversion}] %{payload}", processor_chain([ - setc("header_id","0008"), -])); - -var hdr11 = match("HEADER#22:0046", "message", "%{month->} %{day->} %{time->} %{hostname->} %{hfld1}: [Primary Detection Engine (%{hfld10})][%{policyname}][%{hfld2}:%{id}:%{hfld3}]%{payload}", processor_chain([ - setc("header_id","0046"), - dup16, -])); - -var hdr12 = match("HEADER#23:0009", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: [%{hpid}][%{hevent_source}:%{messageid}:%{hversion}] %{payload}", processor_chain([ - setc("header_id","0009"), -])); - -var hdr13 = match("HEADER#24:0022", "message", "%{hfld1->} %{hfld2->} %{hfld3->} %{host->} %{hfld5}: %{hfld6}: %{hfld7}: \u003c\u003c*- %{msgIdPart1->} %{msgIdPart2->} From %{hsensor->} at %{p0}", processor_chain([ - setc("header_id","0022"), - dup17, - dup18, -])); - -var hdr14 = match("HEADER#25:0010", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: \u003c\u003c*- %{msgIdPart1->} %{msgIdPart2->} From %{hsensor->} at %{p0}", processor_chain([ - setc("header_id","0010"), - dup17, - dup18, -])); - -var part5 = match("HEADER#26:0011/1_0", "nwparser.p0", "From %{hsensor->} at%{p0}"); - -var select2 = linear_select([ - part5, - dup20, -]); - -var all14 = all_match({ - processors: [ - dup170, - select2, - dup21, - ], - on_success: processor_chain([ - setc("header_id","0011"), - dup22, - ]), -}); - -var part6 = match("HEADER#27:0014/1_0", "nwparser.p0", "%{fld10->} From %{hsensor->} at%{p0}"); - -var select3 = linear_select([ - part6, - dup20, -]); - -var all15 = all_match({ - processors: [ - dup170, - select3, - dup21, - ], - on_success: processor_chain([ - setc("header_id","0014"), - dup22, - ]), -}); - -var hdr15 = match("HEADER#28:0012", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: \u003c\u003c*- %{msgIdPart1->} %{msgIdPart2->} %{msgIdPart3->} %{msgIdPart4->} From %{hsensor->} at %{p0}", processor_chain([ - setc("header_id","0012"), - dup23, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant(" "), - field("msgIdPart2"), - constant(" "), - field("msgIdPart3"), - constant(" "), - field("msgIdPart4"), - constant(" From "), - field("hsensor"), - constant(" at "), - field("p0"), - ], - }), -])); - -var hdr16 = match("HEADER#29:0016", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: \u003c\u003c*- %{msgIdPart1->} %{msgIdPart2->} %{msgIdPart3->} %{msgIdPart4->} %{hfld12->} From %{hsensor->} at %{p0}", processor_chain([ - setc("header_id","0016"), - dup23, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant(" "), - field("msgIdPart2"), - constant(" "), - field("msgIdPart3"), - constant(" "), - field("msgIdPart4"), - constant(" "), - field("hfld12"), - constant(" From "), - field("hsensor"), - constant(" at "), - field("p0"), - ], - }), -])); - -var hdr17 = match("HEADER#30:0013", "message", "%{month->} %{day->} %{time->} %{host->} snort: %{messageid}:%{payload}", processor_chain([ - setc("header_id","0013"), -])); - -var hdr18 = match("HEADER#31:0020", "message", "%{month->} %{day->} %{time->} %{host->} %{fld}: HMNOTIFY: %{payload}", processor_chain([ - setc("header_id","0020"), - dup24, -])); - -var hdr19 = match("HEADER#32:0035", "message", "%{month->} %{day->} %{time->} %{host->} : HMNOTIFY: %{payload}", processor_chain([ - setc("header_id","0035"), - dup24, -])); - -var hdr20 = match("HEADER#33:0017", "message", "%{month->} %{day->} %{time->} %{host->} %{fld}: [%{hevent_source}:%{hsigid}:%{hversion}] \"%{messageid->} %{p0}", processor_chain([ - setc("header_id","0017"), - dup15, -])); - -var hdr21 = match("HEADER#34:0019", "message", "%{month->} %{day->} %{time->} %{host->} %{fld}: [%{hevent_source}:%{hsigid}:%{hversion}] %{messageid->} %{p0}", processor_chain([ - setc("header_id","0019"), - dup15, -])); - -var hdr22 = match("HEADER#35:0041", "message", "%{month->} %{day->} %{time->} %{hostname->} %{hfld1}: [Primary Detection Engine%{payload}", processor_chain([ - setc("header_id","0041"), - dup16, -])); - -var hdr23 = match("HEADER#36:0045", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: Protocol: %{hprotocol}, %{payload}", processor_chain([ - setc("header_id","0045"), - setc("messageid","connection_events"), -])); - -var hdr24 = match("HEADER#37:0042", "message", "%{month->} %{day->} %{time->} %{hfld1}: %{hfld4->} %{host}: %{hfld3}@%{hfld2}, %{payload}", processor_chain([ - setc("header_id","0042"), - dup25, -])); - -var hdr25 = match("HEADER#38:00212", "message", "%{month->} %{day->} %{time->} %{hfld1}: [%{hfld5}] %{host}: %{hfld3}@%{hfld2}, %{payload}", processor_chain([ - setc("header_id","00212"), - dup25, -])); - -var hdr26 = match("HEADER#39:0021", "message", "%{month->} %{day->} %{time->} %{hfld1}: %{host}: %{hfld3}@%{hfld2}, %{payload}", processor_chain([ - setc("header_id","0021"), - dup25, -])); - -var hdr27 = match("HEADER#40:0029", "message", "%{month->} %{day->} %{time->} %{host}: [%{hevent_source}:%{messageid}:%{hversion}] %{payload}", processor_chain([ - setc("header_id","0029"), -])); - -var hdr28 = match("HEADER#41:0024/0", "message", "snort%{p0}"); - -var all16 = all_match({ - processors: [ - hdr28, - dup171, - dup28, - ], - on_success: processor_chain([ - setc("header_id","0024"), - dup29, - ]), -}); - -var hdr29 = match("HEADER#42:0025/0", "message", "%{month->} %{day->} %{time->} snort%{p0}"); - -var all17 = all_match({ - processors: [ - hdr29, - dup171, - dup28, - ], - on_success: processor_chain([ - setc("header_id","0025"), - dup29, - ]), -}); - -var part7 = match("HEADER#43:0023/2", "nwparser.p0", "%{result}] From %{group_object}/%{hfld11->} at %{fld6->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{payload}"); - -var all18 = all_match({ - processors: [ - dup30, - dup167, - part7, - ], - on_success: processor_chain([ - setc("header_id","0023"), - dup29, - ]), -}); - -var part8 = match("HEADER#44:0026/2", "nwparser.p0", "%{result}] From %{hfld11->} at %{fld6->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{payload}"); - -var all19 = all_match({ - processors: [ - dup30, - dup167, - part8, - ], - on_success: processor_chain([ - setc("header_id","0026"), - dup29, - ]), -}); - -var all20 = all_match({ - processors: [ - dup30, - dup168, - dup8, - ], - on_success: processor_chain([ - setc("header_id","0027"), - dup29, - ]), -}); - -var all21 = all_match({ - processors: [ - dup30, - dup169, - dup11, - ], - on_success: processor_chain([ - setc("header_id","0028"), - dup29, - ]), -}); - -var hdr30 = match("HEADER#47:0040", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: Sha256:%{hfld2->} Disposition: Malware%{p0}", processor_chain([ - setc("header_id","0040"), - setc("messageid","MALWARE"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hfld2"), - constant(" Disposition: Malware"), - field("p0"), - ], - }), -])); - -var hdr31 = match("HEADER#48:0043", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: \u003c\u003c- %{msgIdPart1->} %{msgIdPart2->} %{msgIdPart3->} From %{hsensor->} at %{p0}", processor_chain([ - setc("header_id","0043"), - dup22, - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("msgIdPart1"), - constant(" "), - field("msgIdPart2"), - constant(" "), - field("msgIdPart3"), - constant(" From "), - field("hsensor"), - constant(" at "), - field("p0"), - ], - }), -])); - -var hdr32 = match("HEADER#49:0044", "message", "%{month->} %{day->} %{time->} %{host->} %{messageid}[%{process_id}]: %{payload}", processor_chain([ - setc("header_id","0044"), -])); - -var hdr33 = match("HEADER#50:0057/0", "message", "%{month->} %{day->} %{hyear->} %{time->} %{p0}"); - -var part9 = match("HEADER#50:0057/1_0", "nwparser.p0", "%{hostname}: %FTD-%{p0}"); - -var part10 = match("HEADER#50:0057/1_1", "nwparser.p0", "%{hostname->} %FTD-%{p0}"); - -var select4 = linear_select([ - part9, - part10, -]); - -var part11 = match("HEADER#50:0057/2", "nwparser.p0", "%{fld2}-%{hfld3}:%{payload}"); - -var all22 = all_match({ - processors: [ - hdr33, - select4, - part11, - ], - on_success: processor_chain([ - setc("header_id","0057"), - dup1, - ]), -}); - -var hdr34 = match("HEADER#51:0058", "message", "%{hyear}-%{hmonth}-%{day}T%{time}Z %{hostname->} %FTD-%{fld2}-%{hfld3}:%{payload}", processor_chain([ - setc("header_id","0058"), - dup1, -])); - -var select5 = linear_select([ - hdr1, - hdr2, - all1, - all2, - all3, - all4, - hdr3, - all5, - all6, - all7, - all8, - all9, - all10, - all11, - all12, - all13, - hdr5, - hdr6, - hdr7, - hdr8, - hdr9, - hdr10, - hdr11, - hdr12, - hdr13, - hdr14, - all14, - all15, - hdr15, - hdr16, - hdr17, - hdr18, - hdr19, - hdr20, - hdr21, - hdr22, - hdr23, - hdr24, - hdr25, - hdr26, - hdr27, - all16, - all17, - all18, - all19, - all20, - all21, - hdr30, - hdr31, - hdr32, - all22, - hdr34, -]); - -var part12 = match("MESSAGE#0:HMNOTIFY", "nwparser.payload", "%{event_type->} (Sensor %{sensor}): Severity:%{severity}: %{result}", processor_chain([ - setc("eventcategory","1604000000"), - dup31, - dup32, -])); - -var msg1 = msg("HMNOTIFY", part12); - -var msg2 = msg("0", dup192); - -var msg3 = msg("0:01", dup193); - -var select6 = linear_select([ - msg2, - msg3, -]); - -var msg4 = msg("1", dup194); - -var msg5 = msg("1:01", dup195); - -var select7 = linear_select([ - msg4, - msg5, -]); - -var msg6 = msg("2", dup192); - -var msg7 = msg("2:01", dup193); - -var select8 = linear_select([ - msg6, - msg7, -]); - -var msg8 = msg("3", dup192); - -var msg9 = msg("3:01", dup193); - -var select9 = linear_select([ - msg8, - msg9, -]); - -var msg10 = msg("3-10127", dup196); - -var msg11 = msg("3-10161", dup197); - -var msg12 = msg("3-10480", dup196); - -var msg13 = msg("3-10481", dup196); - -var msg14 = msg("3-11619", dup196); - -var msg15 = msg("3-11672", dup196); - -var msg16 = msg("3-12028", dup196); - -var msg17 = msg("3-12636", dup196); - -var msg18 = msg("3-12692", dup196); - -var msg19 = msg("3-7019", dup196); - -var msg20 = msg("3-7196", dup197); - -var msg21 = msg("3-8092", dup198); - -var msg22 = msg("3-8351", dup197); - -var msg23 = msg("3-10126", dup196); - -var msg24 = msg("4", dup192); - -var msg25 = msg("4:01", dup193); - -var select10 = linear_select([ - msg24, - msg25, -]); - -var msg26 = msg("5", dup195); - -var msg27 = msg("6", dup192); - -var msg28 = msg("6:01", dup193); - -var select11 = linear_select([ - msg27, - msg28, -]); - -var msg29 = msg("7", dup192); - -var msg30 = msg("7:01", dup193); - -var select12 = linear_select([ - msg29, - msg30, -]); - -var msg31 = msg("8", dup194); - -var msg32 = msg("8:01", dup195); - -var select13 = linear_select([ - msg31, - msg32, -]); - -var msg33 = msg("9", dup199); - -var msg34 = msg("10", dup200); - -var all23 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - setc("eventcategory","1614000000"), - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg35 = msg("11", all23); - -var msg36 = msg("12", dup192); - -var msg37 = msg("12:01", dup193); - -var select14 = linear_select([ - msg36, - msg37, -]); - -var msg38 = msg("13", dup192); - -var msg39 = msg("13:01", dup193); - -var select15 = linear_select([ - msg38, - msg39, -]); - -var msg40 = msg("14", dup192); - -var msg41 = msg("15", dup192); - -var msg42 = msg("15:01", dup193); - -var select16 = linear_select([ - msg41, - msg42, -]); - -var msg43 = msg("16", dup192); - -var msg44 = msg("16:01", dup193); - -var select17 = linear_select([ - msg43, - msg44, -]); - -var msg45 = msg("17", dup192); - -var msg46 = msg("17:01", dup193); - -var select18 = linear_select([ - msg45, - msg46, -]); - -var msg47 = msg("18", dup192); - -var msg48 = msg("18:01", dup193); - -var select19 = linear_select([ - msg47, - msg48, -]); - -var msg49 = msg("19", dup194); - -var msg50 = msg("19:01", dup195); - -var select20 = linear_select([ - msg49, - msg50, -]); - -var msg51 = msg("20", dup194); - -var msg52 = msg("20:01", dup195); - -var select21 = linear_select([ - msg51, - msg52, -]); - -var msg53 = msg("21", dup194); - -var msg54 = msg("21:01", dup195); - -var select22 = linear_select([ - msg53, - msg54, -]); - -var msg55 = msg("23", dup194); - -var msg56 = msg("23:01", dup195); - -var select23 = linear_select([ - msg55, - msg56, -]); - -var msg57 = msg("24", dup201); - -var msg58 = msg("25", dup201); - -var all24 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup70, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var msg59 = msg("25:01", all24); - -var select24 = linear_select([ - msg58, - msg59, -]); - -var msg60 = msg("26", dup195); - -var msg61 = msg("27", dup202); - -var msg62 = msg("28", dup202); - -var msg63 = msg("29", dup202); - -var msg64 = msg("30", dup202); - -var msg65 = msg("34", dup202); - -var msg66 = msg("45", dup192); - -var msg67 = msg("46", dup192); - -var msg68 = msg("46:01", dup193); - -var select25 = linear_select([ - msg67, - msg68, -]); - -var msg69 = msg("47", dup192); - -var msg70 = msg("47:01", dup193); - -var select26 = linear_select([ - msg69, - msg70, -]); - -var msg71 = msg("54", dup192); - -var msg72 = msg("54:01", dup193); - -var select27 = linear_select([ - msg71, - msg72, -]); - -var msg73 = msg("55", dup192); - -var msg74 = msg("55:01", dup193); - -var select28 = linear_select([ - msg73, - msg74, -]); - -var msg75 = msg("58", dup192); - -var msg76 = msg("58:01", dup193); - -var select29 = linear_select([ - msg75, - msg76, -]); - -var msg77 = msg("96", dup192); - -var msg78 = msg("97", dup192); - -var msg79 = msg("97:01", dup193); - -var select30 = linear_select([ - msg78, - msg79, -]); - -var msg80 = msg("103", dup203); - -var msg81 = msg("103:01", dup204); - -var select31 = linear_select([ - msg80, - msg81, -]); - -var msg82 = msg("104", dup205); - -var msg83 = msg("104:01", dup206); - -var select32 = linear_select([ - msg82, - msg83, -]); - -var msg84 = msg("105", dup203); - -var msg85 = msg("105:01", dup204); - -var select33 = linear_select([ - msg84, - msg85, -]); - -var msg86 = msg("105-1", dup203); - -var msg87 = msg("105-2", dup203); - -var msg88 = msg("105-3", dup203); - -var msg89 = msg("105-4", dup207); - -var msg90 = msg("106", dup203); - -var msg91 = msg("106:01", dup204); - -var select34 = linear_select([ - msg90, - msg91, -]); - -var msg92 = msg("106-1", dup208); - -var msg93 = msg("106-2", dup209); - -var msg94 = msg("106-3", dup208); - -var msg95 = msg("106-4", dup208); - -var msg96 = msg("107", dup203); - -var msg97 = msg("107:01", dup204); - -var select35 = linear_select([ - msg96, - msg97, -]); - -var msg98 = msg("108", dup203); - -var all25 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var msg99 = msg("108:01", all25); - -var msg100 = msg("108:02", dup204); - -var select36 = linear_select([ - msg98, - msg99, - msg100, -]); - -var msg101 = msg("109", dup203); - -var msg102 = msg("109:01", dup204); - -var select37 = linear_select([ - msg101, - msg102, -]); - -var msg103 = msg("110", dup203); - -var msg104 = msg("110:01", dup204); - -var select38 = linear_select([ - msg103, - msg104, -]); - -var msg105 = msg("110-1", dup207); - -var msg106 = msg("110-2", dup207); - -var msg107 = msg("110-3", dup207); - -var msg108 = msg("110-4", dup207); - -var msg109 = msg("111", dup203); - -var msg110 = msg("111:01", dup204); - -var select39 = linear_select([ - msg109, - msg110, -]); - -var msg111 = msg("111-1", dup207); - -var msg112 = msg("111-10", dup207); - -var msg113 = msg("111-11", dup207); - -var msg114 = msg("111-12", dup207); - -var msg115 = msg("111-13", dup207); - -var msg116 = msg("111-14", dup207); - -var msg117 = msg("111-15", dup207); - -var msg118 = msg("111-16", dup207); - -var msg119 = msg("111-17", dup207); - -var msg120 = msg("111-2", dup207); - -var msg121 = msg("111-3", dup207); - -var msg122 = msg("111-4", dup207); - -var msg123 = msg("111-5", dup207); - -var msg124 = msg("111-6", dup207); - -var msg125 = msg("111-7", dup207); - -var msg126 = msg("111-8", dup207); - -var msg127 = msg("111-9", dup207); - -var msg128 = msg("112", dup203); - -var msg129 = msg("112:01", dup204); - -var select40 = linear_select([ - msg128, - msg129, -]); - -var msg130 = msg("112-1", dup207); - -var msg131 = msg("112-2", dup207); - -var msg132 = msg("112-3", dup207); - -var msg133 = msg("112-4", dup207); - -var msg134 = msg("113", dup203); - -var msg135 = msg("113:01", dup204); - -var select41 = linear_select([ - msg134, - msg135, -]); - -var msg136 = msg("114", dup203); - -var msg137 = msg("114:01", dup204); - -var select42 = linear_select([ - msg136, - msg137, -]); - -var msg138 = msg("115", dup203); - -var msg139 = msg("115:01", dup204); - -var select43 = linear_select([ - msg138, - msg139, -]); - -var msg140 = msg("115-1", dup207); - -var msg141 = msg("115-2", dup207); - -var msg142 = msg("115-3", dup210); - -var msg143 = msg("115-4", dup210); - -var msg144 = msg("115-5", dup207); - -var msg145 = msg("116", dup203); - -var msg146 = msg("116:01", dup204); - -var select44 = linear_select([ - msg145, - msg146, -]); - -var msg147 = msg("116-5", dup209); - -var msg148 = msg("117", dup203); - -var msg149 = msg("117:01", dup204); - -var select45 = linear_select([ - msg148, - msg149, -]); - -var msg150 = msg("118", dup203); - -var msg151 = msg("118:01", dup204); - -var select46 = linear_select([ - msg150, - msg151, -]); - -var msg152 = msg("119", dup203); - -var all26 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var msg153 = msg("119:01", all26); - -var select47 = linear_select([ - msg152, - msg153, -]); - -var msg154 = msg("119-1", dup211); - -var msg155 = msg("119-10", dup211); - -var msg156 = msg("119-11", dup211); - -var msg157 = msg("119-12", dup211); - -var msg158 = msg("119-13", dup211); - -var msg159 = msg("119-14", dup211); - -var msg160 = msg("119-15", dup211); - -var msg161 = msg("119-16", dup211); - -var msg162 = msg("119-17", dup211); - -var msg163 = msg("119-18", dup211); - -var msg164 = msg("119-2", dup211); - -var msg165 = msg("119-3", dup211); - -var msg166 = msg("119-4", dup211); - -var msg167 = msg("119-5", dup211); - -var msg168 = msg("119-6", dup211); - -var msg169 = msg("119-7", dup211); - -var msg170 = msg("119-8", dup211); - -var msg171 = msg("119-9", dup211); - -var msg172 = msg("120", dup203); - -var msg173 = msg("120:01", dup204); - -var select48 = linear_select([ - msg172, - msg173, -]); - -var msg174 = msg("120-1", dup211); - -var msg175 = msg("121", dup203); - -var msg176 = msg("121:01", dup204); - -var select49 = linear_select([ - msg175, - msg176, -]); - -var msg177 = msg("121-1", dup212); - -var msg178 = msg("121-2", dup212); - -var msg179 = msg("121-3", dup212); - -var msg180 = msg("121-4", dup212); - -var msg181 = msg("122", dup203); - -var msg182 = msg("122:01", dup204); - -var select50 = linear_select([ - msg181, - msg182, -]); - -var msg183 = msg("122-1", dup212); - -var msg184 = msg("122-10", dup212); - -var msg185 = msg("122-11", dup213); - -var msg186 = msg("122-12", dup212); - -var msg187 = msg("122-13", dup212); - -var msg188 = msg("122-14", dup212); - -var msg189 = msg("122-15", dup213); - -var msg190 = msg("122-16", dup212); - -var msg191 = msg("122-17", dup212); - -var msg192 = msg("122-18", dup212); - -var msg193 = msg("122-19", dup213); - -var msg194 = msg("122-2", dup212); - -var msg195 = msg("122-20", dup212); - -var msg196 = msg("122-21", dup212); - -var msg197 = msg("122-22", dup212); - -var msg198 = msg("122-23", dup213); - -var msg199 = msg("122-24", dup212); - -var msg200 = msg("122-25", dup213); - -var msg201 = msg("122-26", dup213); - -var msg202 = msg("122-27", dup212); - -var msg203 = msg("122-3", dup213); - -var msg204 = msg("122-4", dup212); - -var msg205 = msg("122-5", dup212); - -var msg206 = msg("122-6", dup212); - -var msg207 = msg("122-7", dup213); - -var msg208 = msg("122-8", dup212); - -var msg209 = msg("122-9", dup212); - -var msg210 = msg("123-10", dup207); - -var msg211 = msg("123-9", dup207); - -var msg212 = msg("124", dup203); - -var msg213 = msg("124:01", dup204); - -var select51 = linear_select([ - msg212, - msg213, -]); - -var msg214 = msg("124-1", dup210); - -var msg215 = msg("125", dup203); - -var msg216 = msg("125:01", dup204); - -var select52 = linear_select([ - msg215, - msg216, -]); - -var msg217 = msg("125-3", dup207); - -var msg218 = msg("125-5", dup207); - -var msg219 = msg("125-6", dup214); - -var msg220 = msg("125-8", dup207); - -var msg221 = msg("126", dup203); - -var msg222 = msg("126:01", dup204); - -var select53 = linear_select([ - msg221, - msg222, -]); - -var msg223 = msg("126-1", dup207); - -var msg224 = msg("127", dup203); - -var msg225 = msg("127:01", dup204); - -var select54 = linear_select([ - msg224, - msg225, -]); - -var msg226 = msg("128", dup203); - -var msg227 = msg("128:01", dup204); - -var select55 = linear_select([ - msg226, - msg227, -]); - -var msg228 = msg("129", dup203); - -var msg229 = msg("129:01", dup204); - -var select56 = linear_select([ - msg228, - msg229, -]); - -var msg230 = msg("129-2", dup207); - -var msg231 = msg("129-6", dup207); - -var msg232 = msg("130", dup203); - -var msg233 = msg("130:01", dup204); - -var select57 = linear_select([ - msg232, - msg233, -]); - -var msg234 = msg("131", dup203); - -var msg235 = msg("131:01", dup204); - -var select58 = linear_select([ - msg234, - msg235, -]); - -var msg236 = msg("131-3", dup207); - -var msg237 = msg("132", dup203); - -var msg238 = msg("132:01", dup204); - -var select59 = linear_select([ - msg237, - msg238, -]); - -var msg239 = msg("133", dup203); - -var msg240 = msg("133:01", dup204); - -var select60 = linear_select([ - msg239, - msg240, -]); - -var msg241 = msg("134", dup203); - -var msg242 = msg("134:01", dup204); - -var select61 = linear_select([ - msg241, - msg242, -]); - -var msg243 = msg("135", dup203); - -var msg244 = msg("135:01", dup204); - -var select62 = linear_select([ - msg243, - msg244, -]); - -var msg245 = msg("136", dup203); - -var msg246 = msg("136:01", dup204); - -var select63 = linear_select([ - msg245, - msg246, -]); - -var msg247 = msg("137", dup203); - -var msg248 = msg("137:01", dup204); - -var select64 = linear_select([ - msg247, - msg248, -]); - -var msg249 = msg("138", dup203); - -var msg250 = msg("138:01", dup204); - -var select65 = linear_select([ - msg249, - msg250, -]); - -var msg251 = msg("140", dup203); - -var msg252 = msg("140:01", dup204); - -var select66 = linear_select([ - msg251, - msg252, -]); - -var msg253 = msg("141", dup203); - -var msg254 = msg("141:01", dup204); - -var select67 = linear_select([ - msg253, - msg254, -]); - -var msg255 = msg("142", dup203); - -var msg256 = msg("142:01", dup204); - -var select68 = linear_select([ - msg255, - msg256, -]); - -var msg257 = msg("143", dup203); - -var msg258 = msg("143:01", dup204); - -var select69 = linear_select([ - msg257, - msg258, -]); - -var msg259 = msg("144", dup214); - -var all27 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg260 = msg("144:01", all27); - -var select70 = linear_select([ - msg259, - msg260, -]); - -var msg261 = msg("145", dup203); - -var msg262 = msg("145:01", dup204); - -var select71 = linear_select([ - msg261, - msg262, -]); - -var msg263 = msg("146", dup203); - -var msg264 = msg("146:01", dup204); - -var select72 = linear_select([ - msg263, - msg264, -]); - -var msg265 = msg("147", dup203); - -var msg266 = msg("147:01", dup204); - -var select73 = linear_select([ - msg265, - msg266, -]); - -var msg267 = msg("148", dup203); - -var msg268 = msg("148:01", dup204); - -var select74 = linear_select([ - msg267, - msg268, -]); - -var msg269 = msg("149", dup203); - -var msg270 = msg("149:01", dup204); - -var select75 = linear_select([ - msg269, - msg270, -]); - -var msg271 = msg("150", dup203); - -var msg272 = msg("150:01", dup204); - -var select76 = linear_select([ - msg271, - msg272, -]); - -var msg273 = msg("151", dup203); - -var msg274 = msg("151:01", dup204); - -var select77 = linear_select([ - msg273, - msg274, -]); - -var msg275 = msg("152", dup203); - -var msg276 = msg("152:01", dup204); - -var select78 = linear_select([ - msg275, - msg276, -]); - -var msg277 = msg("153", dup203); - -var msg278 = msg("153:01", dup204); - -var select79 = linear_select([ - msg277, - msg278, -]); - -var msg279 = msg("154", dup203); - -var msg280 = msg("154:01", dup204); - -var select80 = linear_select([ - msg279, - msg280, -]); - -var msg281 = msg("155", dup203); - -var msg282 = msg("155:01", dup204); - -var select81 = linear_select([ - msg281, - msg282, -]); - -var msg283 = msg("156", dup203); - -var msg284 = msg("156:01", dup204); - -var select82 = linear_select([ - msg283, - msg284, -]); - -var msg285 = msg("157", dup203); - -var msg286 = msg("157:01", dup204); - -var select83 = linear_select([ - msg285, - msg286, -]); - -var msg287 = msg("158", dup203); - -var msg288 = msg("158:01", dup204); - -var select84 = linear_select([ - msg287, - msg288, -]); - -var msg289 = msg("159", dup203); - -var msg290 = msg("159:01", dup204); - -var select85 = linear_select([ - msg289, - msg290, -]); - -var msg291 = msg("160", dup203); - -var msg292 = msg("160:01", dup204); - -var select86 = linear_select([ - msg291, - msg292, -]); - -var msg293 = msg("161", dup203); - -var msg294 = msg("161:01", dup204); - -var select87 = linear_select([ - msg293, - msg294, -]); - -var msg295 = msg("162", dup203); - -var msg296 = msg("162:01", dup204); - -var select88 = linear_select([ - msg295, - msg296, -]); - -var msg297 = msg("163", dup203); - -var msg298 = msg("163:01", dup204); - -var select89 = linear_select([ - msg297, - msg298, -]); - -var msg299 = msg("164", dup203); - -var msg300 = msg("164:01", dup204); - -var select90 = linear_select([ - msg299, - msg300, -]); - -var msg301 = msg("165", dup203); - -var msg302 = msg("165:01", dup204); - -var select91 = linear_select([ - msg301, - msg302, -]); - -var msg303 = msg("166", dup203); - -var msg304 = msg("166:01", dup204); - -var select92 = linear_select([ - msg303, - msg304, -]); - -var msg305 = msg("167", dup203); - -var msg306 = msg("167:01", dup204); - -var select93 = linear_select([ - msg305, - msg306, -]); - -var msg307 = msg("168", dup203); - -var msg308 = msg("168:01", dup204); - -var select94 = linear_select([ - msg307, - msg308, -]); - -var msg309 = msg("169", dup203); - -var msg310 = msg("169:01", dup204); - -var select95 = linear_select([ - msg309, - msg310, -]); - -var msg311 = msg("170", dup203); - -var msg312 = msg("170:01", dup204); - -var select96 = linear_select([ - msg311, - msg312, -]); - -var msg313 = msg("171", dup203); - -var msg314 = msg("171:01", dup204); - -var select97 = linear_select([ - msg313, - msg314, -]); - -var msg315 = msg("172", dup203); - -var msg316 = msg("172:01", dup204); - -var select98 = linear_select([ - msg315, - msg316, -]); - -var msg317 = msg("173", dup203); - -var msg318 = msg("173:01", dup204); - -var select99 = linear_select([ - msg317, - msg318, -]); - -var msg319 = msg("174", dup203); - -var msg320 = msg("174:01", dup204); - -var select100 = linear_select([ - msg319, - msg320, -]); - -var msg321 = msg("175", dup203); - -var msg322 = msg("175:01", dup204); - -var select101 = linear_select([ - msg321, - msg322, -]); - -var msg323 = msg("176", dup203); - -var msg324 = msg("176:01", dup204); - -var select102 = linear_select([ - msg323, - msg324, -]); - -var msg325 = msg("177", dup203); - -var msg326 = msg("177:01", dup204); - -var select103 = linear_select([ - msg325, - msg326, -]); - -var msg327 = msg("179", dup203); - -var msg328 = msg("179:01", dup204); - -var select104 = linear_select([ - msg327, - msg328, -]); - -var msg329 = msg("180", dup203); - -var msg330 = msg("180:01", dup204); - -var select105 = linear_select([ - msg329, - msg330, -]); - -var all28 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup72, - dup73, - dup74, - dup84, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg331 = msg("181", all28); - -var all29 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup72, - dup73, - dup74, - dup84, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg332 = msg("181:01", all29); - -var select106 = linear_select([ - msg331, - msg332, -]); - -var msg333 = msg("182", dup203); - -var msg334 = msg("182:01", dup204); - -var select107 = linear_select([ - msg333, - msg334, -]); - -var msg335 = msg("183", dup203); - -var msg336 = msg("183:01", dup204); - -var select108 = linear_select([ - msg335, - msg336, -]); - -var msg337 = msg("184", dup203); - -var msg338 = msg("184:01", dup204); - -var select109 = linear_select([ - msg337, - msg338, -]); - -var msg339 = msg("185", dup203); - -var msg340 = msg("185:01", dup204); - -var select110 = linear_select([ - msg339, - msg340, -]); - -var msg341 = msg("186", dup203); - -var msg342 = msg("186:01", dup204); - -var select111 = linear_select([ - msg341, - msg342, -]); - -var msg343 = msg("187", dup203); - -var msg344 = msg("187:01", dup204); - -var select112 = linear_select([ - msg343, - msg344, -]); - -var msg345 = msg("188", dup203); - -var msg346 = msg("188:01", dup204); - -var select113 = linear_select([ - msg345, - msg346, -]); - -var msg347 = msg("189", dup203); - -var msg348 = msg("189:01", dup204); - -var select114 = linear_select([ - msg347, - msg348, -]); - -var msg349 = msg("190", dup203); - -var msg350 = msg("190:01", dup204); - -var select115 = linear_select([ - msg349, - msg350, -]); - -var msg351 = msg("191", dup203); - -var msg352 = msg("191:01", dup204); - -var select116 = linear_select([ - msg351, - msg352, -]); - -var msg353 = msg("192", dup203); - -var msg354 = msg("192:01", dup204); - -var select117 = linear_select([ - msg353, - msg354, -]); - -var msg355 = msg("193", dup203); - -var msg356 = msg("193:01", dup204); - -var select118 = linear_select([ - msg355, - msg356, -]); - -var msg357 = msg("194", dup203); - -var msg358 = msg("194:01", dup204); - -var select119 = linear_select([ - msg357, - msg358, -]); - -var msg359 = msg("195", dup203); - -var msg360 = msg("195:01", dup204); - -var select120 = linear_select([ - msg359, - msg360, -]); - -var msg361 = msg("196", dup203); - -var msg362 = msg("196:01", dup204); - -var select121 = linear_select([ - msg361, - msg362, -]); - -var msg363 = msg("197", dup203); - -var msg364 = msg("197:01", dup204); - -var select122 = linear_select([ - msg363, - msg364, -]); - -var msg365 = msg("198", dup203); - -var msg366 = msg("198:01", dup204); - -var select123 = linear_select([ - msg365, - msg366, -]); - -var msg367 = msg("199", dup203); - -var msg368 = msg("199:01", dup204); - -var select124 = linear_select([ - msg367, - msg368, -]); - -var msg369 = msg("200", dup203); - -var msg370 = msg("200:01", dup204); - -var select125 = linear_select([ - msg369, - msg370, -]); - -var msg371 = msg("201", dup203); - -var msg372 = msg("201:01", dup204); - -var select126 = linear_select([ - msg371, - msg372, -]); - -var msg373 = msg("202", dup203); - -var msg374 = msg("202:01", dup204); - -var select127 = linear_select([ - msg373, - msg374, -]); - -var msg375 = msg("203", dup203); - -var msg376 = msg("203:01", dup204); - -var select128 = linear_select([ - msg375, - msg376, -]); - -var msg377 = msg("204", dup203); - -var msg378 = msg("204:01", dup204); - -var select129 = linear_select([ - msg377, - msg378, -]); - -var msg379 = msg("205", dup203); - -var msg380 = msg("205:01", dup204); - -var select130 = linear_select([ - msg379, - msg380, -]); - -var msg381 = msg("206", dup203); - -var msg382 = msg("206:01", dup204); - -var select131 = linear_select([ - msg381, - msg382, -]); - -var msg383 = msg("207", dup203); - -var msg384 = msg("207:01", dup204); - -var select132 = linear_select([ - msg383, - msg384, -]); - -var msg385 = msg("208", dup203); - -var msg386 = msg("208:01", dup204); - -var select133 = linear_select([ - msg385, - msg386, -]); - -var msg387 = msg("209", dup203); - -var msg388 = msg("209:01", dup204); - -var select134 = linear_select([ - msg387, - msg388, -]); - -var msg389 = msg("210", dup203); - -var msg390 = msg("210:01", dup204); - -var select135 = linear_select([ - msg389, - msg390, -]); - -var msg391 = msg("211", dup203); - -var msg392 = msg("211:01", dup204); - -var select136 = linear_select([ - msg391, - msg392, -]); - -var msg393 = msg("212", dup203); - -var msg394 = msg("212:01", dup204); - -var select137 = linear_select([ - msg393, - msg394, -]); - -var msg395 = msg("213", dup203); - -var msg396 = msg("213:01", dup204); - -var select138 = linear_select([ - msg395, - msg396, -]); - -var msg397 = msg("214", dup203); - -var msg398 = msg("214:01", dup204); - -var select139 = linear_select([ - msg397, - msg398, -]); - -var msg399 = msg("215", dup203); - -var msg400 = msg("215:01", dup204); - -var select140 = linear_select([ - msg399, - msg400, -]); - -var msg401 = msg("216", dup203); - -var msg402 = msg("216:01", dup204); - -var select141 = linear_select([ - msg401, - msg402, -]); - -var msg403 = msg("217", dup203); - -var msg404 = msg("217:01", dup204); - -var select142 = linear_select([ - msg403, - msg404, -]); - -var msg405 = msg("218", dup203); - -var msg406 = msg("218:01", dup204); - -var select143 = linear_select([ - msg405, - msg406, -]); - -var msg407 = msg("219", dup203); - -var msg408 = msg("219:01", dup204); - -var select144 = linear_select([ - msg407, - msg408, -]); - -var msg409 = msg("220", dup203); - -var msg410 = msg("220:01", dup204); - -var select145 = linear_select([ - msg409, - msg410, -]); - -var msg411 = msg("221", dup215); - -var msg412 = msg("221:01", dup216); - -var select146 = linear_select([ - msg411, - msg412, -]); - -var msg413 = msg("222", dup215); - -var msg414 = msg("222:01", dup216); - -var select147 = linear_select([ - msg413, - msg414, -]); - -var msg415 = msg("223", dup215); - -var msg416 = msg("223:01", dup216); - -var select148 = linear_select([ - msg415, - msg416, -]); - -var msg417 = msg("224", dup215); - -var msg418 = msg("224:01", dup216); - -var select149 = linear_select([ - msg417, - msg418, -]); - -var msg419 = msg("225", dup215); - -var msg420 = msg("225:01", dup216); - -var select150 = linear_select([ - msg419, - msg420, -]); - -var msg421 = msg("226", dup215); - -var msg422 = msg("226:01", dup216); - -var select151 = linear_select([ - msg421, - msg422, -]); - -var msg423 = msg("227", dup215); - -var msg424 = msg("227:01", dup216); - -var select152 = linear_select([ - msg423, - msg424, -]); - -var msg425 = msg("228", dup215); - -var msg426 = msg("228:01", dup216); - -var select153 = linear_select([ - msg425, - msg426, -]); - -var msg427 = msg("229", dup215); - -var msg428 = msg("229:01", dup216); - -var select154 = linear_select([ - msg427, - msg428, -]); - -var msg429 = msg("230", dup215); - -var msg430 = msg("230:01", dup216); - -var select155 = linear_select([ - msg429, - msg430, -]); - -var msg431 = msg("231", dup215); - -var msg432 = msg("231:01", dup216); - -var select156 = linear_select([ - msg431, - msg432, -]); - -var msg433 = msg("232", dup215); - -var msg434 = msg("232:01", dup216); - -var select157 = linear_select([ - msg433, - msg434, -]); - -var msg435 = msg("233", dup215); - -var msg436 = msg("233:01", dup216); - -var select158 = linear_select([ - msg435, - msg436, -]); - -var msg437 = msg("234", dup215); - -var msg438 = msg("234:01", dup216); - -var select159 = linear_select([ - msg437, - msg438, -]); - -var msg439 = msg("235", dup215); - -var msg440 = msg("235:01", dup216); - -var select160 = linear_select([ - msg439, - msg440, -]); - -var msg441 = msg("236", dup215); - -var msg442 = msg("236:01", dup216); - -var select161 = linear_select([ - msg441, - msg442, -]); - -var msg443 = msg("237", dup215); - -var msg444 = msg("237:01", dup216); - -var select162 = linear_select([ - msg443, - msg444, -]); - -var msg445 = msg("238", dup215); - -var msg446 = msg("238:01", dup216); - -var select163 = linear_select([ - msg445, - msg446, -]); - -var msg447 = msg("239", dup215); - -var msg448 = msg("239:01", dup216); - -var select164 = linear_select([ - msg447, - msg448, -]); - -var msg449 = msg("240", dup215); - -var msg450 = msg("240:01", dup216); - -var select165 = linear_select([ - msg449, - msg450, -]); - -var msg451 = msg("241", dup215); - -var msg452 = msg("241:01", dup216); - -var select166 = linear_select([ - msg451, - msg452, -]); - -var msg453 = msg("243", dup215); - -var msg454 = msg("243:01", dup216); - -var select167 = linear_select([ - msg453, - msg454, -]); - -var msg455 = msg("244", dup215); - -var msg456 = msg("244:01", dup216); - -var select168 = linear_select([ - msg455, - msg456, -]); - -var msg457 = msg("245", dup215); - -var msg458 = msg("245:01", dup216); - -var select169 = linear_select([ - msg457, - msg458, -]); - -var msg459 = msg("246", dup215); - -var msg460 = msg("246:01", dup216); - -var select170 = linear_select([ - msg459, - msg460, -]); - -var msg461 = msg("247", dup215); - -var msg462 = msg("247:01", dup216); - -var select171 = linear_select([ - msg461, - msg462, -]); - -var msg463 = msg("248", dup215); - -var msg464 = msg("248:01", dup216); - -var select172 = linear_select([ - msg463, - msg464, -]); - -var msg465 = msg("249", dup215); - -var msg466 = msg("249:01", dup216); - -var select173 = linear_select([ - msg465, - msg466, -]); - -var msg467 = msg("250", dup215); - -var msg468 = msg("250:01", dup216); - -var select174 = linear_select([ - msg467, - msg468, -]); - -var msg469 = msg("251", dup215); - -var msg470 = msg("251:01", dup216); - -var select175 = linear_select([ - msg469, - msg470, -]); - -var msg471 = msg("252", dup196); - -var msg472 = msg("252:01", dup217); - -var select176 = linear_select([ - msg471, - msg472, -]); - -var msg473 = msg("253", dup196); - -var msg474 = msg("253:01", dup217); - -var select177 = linear_select([ - msg473, - msg474, -]); - -var msg475 = msg("254", dup196); - -var msg476 = msg("254:01", dup217); - -var select178 = linear_select([ - msg475, - msg476, -]); - -var msg477 = msg("255", dup196); - -var msg478 = msg("255:01", dup217); - -var select179 = linear_select([ - msg477, - msg478, -]); - -var msg479 = msg("256", dup196); - -var msg480 = msg("256:01", dup217); - -var select180 = linear_select([ - msg479, - msg480, -]); - -var msg481 = msg("257", dup196); - -var msg482 = msg("257:01", dup217); - -var select181 = linear_select([ - msg481, - msg482, -]); - -var msg483 = msg("258", dup218); - -var msg484 = msg("258:01", dup219); - -var select182 = linear_select([ - msg483, - msg484, -]); - -var msg485 = msg("259", dup218); - -var msg486 = msg("259:01", dup219); - -var select183 = linear_select([ - msg485, - msg486, -]); - -var msg487 = msg("260", dup218); - -var msg488 = msg("260:01", dup219); - -var select184 = linear_select([ - msg487, - msg488, -]); - -var msg489 = msg("261", dup218); - -var msg490 = msg("261:01", dup219); - -var select185 = linear_select([ - msg489, - msg490, -]); - -var msg491 = msg("262", dup218); - -var msg492 = msg("262:01", dup219); - -var select186 = linear_select([ - msg491, - msg492, -]); - -var msg493 = msg("264", dup218); - -var msg494 = msg("264:01", dup219); - -var select187 = linear_select([ - msg493, - msg494, -]); - -var msg495 = msg("265", dup218); - -var msg496 = msg("265:01", dup219); - -var select188 = linear_select([ - msg495, - msg496, -]); - -var msg497 = msg("266", dup218); - -var msg498 = msg("266:01", dup219); - -var select189 = linear_select([ - msg497, - msg498, -]); - -var msg499 = msg("267", dup218); - -var msg500 = msg("267:01", dup219); - -var select190 = linear_select([ - msg499, - msg500, -]); - -var msg501 = msg("268", dup198); - -var msg502 = msg("268:01", dup220); - -var select191 = linear_select([ - msg501, - msg502, -]); - -var msg503 = msg("269", dup198); - -var msg504 = msg("269:01", dup220); - -var select192 = linear_select([ - msg503, - msg504, -]); - -var msg505 = msg("270", dup198); - -var msg506 = msg("270:01", dup220); - -var select193 = linear_select([ - msg505, - msg506, -]); - -var msg507 = msg("271", dup198); - -var msg508 = msg("271:01", dup220); - -var select194 = linear_select([ - msg507, - msg508, -]); - -var msg509 = msg("272", dup198); - -var msg510 = msg("272:01", dup220); - -var select195 = linear_select([ - msg509, - msg510, -]); - -var msg511 = msg("273", dup198); - -var msg512 = msg("273:01", dup220); - -var select196 = linear_select([ - msg511, - msg512, -]); - -var msg513 = msg("274", dup198); - -var msg514 = msg("274:01", dup220); - -var select197 = linear_select([ - msg513, - msg514, -]); - -var msg515 = msg("275", dup198); - -var msg516 = msg("275:01", dup220); - -var select198 = linear_select([ - msg515, - msg516, -]); - -var msg517 = msg("276", dup198); - -var msg518 = msg("276:01", dup220); - -var select199 = linear_select([ - msg517, - msg518, -]); - -var msg519 = msg("277", dup198); - -var msg520 = msg("277:01", dup220); - -var select200 = linear_select([ - msg519, - msg520, -]); - -var msg521 = msg("278", dup198); - -var msg522 = msg("278:01", dup220); - -var select201 = linear_select([ - msg521, - msg522, -]); - -var msg523 = msg("279", dup198); - -var msg524 = msg("279:01", dup220); - -var select202 = linear_select([ - msg523, - msg524, -]); - -var msg525 = msg("280", dup198); - -var msg526 = msg("280:01", dup220); - -var select203 = linear_select([ - msg525, - msg526, -]); - -var msg527 = msg("281", dup198); - -var msg528 = msg("281:01", dup220); - -var select204 = linear_select([ - msg527, - msg528, -]); - -var msg529 = msg("282", dup198); - -var msg530 = msg("282:01", dup220); - -var select205 = linear_select([ - msg529, - msg530, -]); - -var msg531 = msg("283", dup197); - -var msg532 = msg("283:01", dup221); - -var select206 = linear_select([ - msg531, - msg532, -]); - -var msg533 = msg("284", dup197); - -var msg534 = msg("284:01", dup221); - -var select207 = linear_select([ - msg533, - msg534, -]); - -var msg535 = msg("285", dup197); - -var msg536 = msg("285:01", dup221); - -var select208 = linear_select([ - msg535, - msg536, -]); - -var msg537 = msg("286", dup197); - -var msg538 = msg("286:01", dup221); - -var select209 = linear_select([ - msg537, - msg538, -]); - -var msg539 = msg("287", dup197); - -var msg540 = msg("287:01", dup221); - -var select210 = linear_select([ - msg539, - msg540, -]); - -var msg541 = msg("288", dup197); - -var msg542 = msg("288:01", dup221); - -var select211 = linear_select([ - msg541, - msg542, -]); - -var msg543 = msg("289", dup197); - -var msg544 = msg("289:01", dup221); - -var select212 = linear_select([ - msg543, - msg544, -]); - -var msg545 = msg("290", dup197); - -var msg546 = msg("290:01", dup221); - -var select213 = linear_select([ - msg545, - msg546, -]); - -var msg547 = msg("291", dup197); - -var msg548 = msg("291:01", dup221); - -var select214 = linear_select([ - msg547, - msg548, -]); - -var msg549 = msg("292", dup197); - -var msg550 = msg("292:01", dup221); - -var select215 = linear_select([ - msg549, - msg550, -]); - -var msg551 = msg("293", dup197); - -var msg552 = msg("293:01", dup221); - -var select216 = linear_select([ - msg551, - msg552, -]); - -var msg553 = msg("295", dup197); - -var msg554 = msg("295:01", dup221); - -var select217 = linear_select([ - msg553, - msg554, -]); - -var msg555 = msg("296", dup197); - -var msg556 = msg("296:01", dup221); - -var select218 = linear_select([ - msg555, - msg556, -]); - -var msg557 = msg("297", dup197); - -var msg558 = msg("297:01", dup221); - -var select219 = linear_select([ - msg557, - msg558, -]); - -var msg559 = msg("298", dup197); - -var msg560 = msg("298:01", dup221); - -var select220 = linear_select([ - msg559, - msg560, -]); - -var msg561 = msg("299", dup197); - -var msg562 = msg("299:01", dup221); - -var select221 = linear_select([ - msg561, - msg562, -]); - -var msg563 = msg("300", dup197); - -var msg564 = msg("300:01", dup221); - -var select222 = linear_select([ - msg563, - msg564, -]); - -var msg565 = msg("301", dup197); - -var msg566 = msg("301:01", dup221); - -var select223 = linear_select([ - msg565, - msg566, -]); - -var msg567 = msg("302", dup197); - -var msg568 = msg("302:01", dup221); - -var select224 = linear_select([ - msg567, - msg568, -]); - -var msg569 = msg("303", dup218); - -var msg570 = msg("303:01", dup219); - -var select225 = linear_select([ - msg569, - msg570, -]); - -var msg571 = msg("304", dup197); - -var msg572 = msg("304:01", dup221); - -var select226 = linear_select([ - msg571, - msg572, -]); - -var msg573 = msg("305", dup197); - -var msg574 = msg("305:01", dup221); - -var select227 = linear_select([ - msg573, - msg574, -]); - -var msg575 = msg("306", dup196); - -var msg576 = msg("306:01", dup217); - -var select228 = linear_select([ - msg575, - msg576, -]); - -var msg577 = msg("307", dup197); - -var msg578 = msg("307:01", dup221); - -var select229 = linear_select([ - msg577, - msg578, -]); - -var msg579 = msg("308", dup197); - -var msg580 = msg("308:01", dup221); - -var select230 = linear_select([ - msg579, - msg580, -]); - -var msg581 = msg("309", dup197); - -var msg582 = msg("309:01", dup221); - -var select231 = linear_select([ - msg581, - msg582, -]); - -var msg583 = msg("310", dup197); - -var msg584 = msg("310:01", dup221); - -var select232 = linear_select([ - msg583, - msg584, -]); - -var msg585 = msg("311", dup197); - -var msg586 = msg("311:01", dup221); - -var select233 = linear_select([ - msg585, - msg586, -]); - -var msg587 = msg("312", dup222); - -var msg588 = msg("312:01", dup223); - -var select234 = linear_select([ - msg587, - msg588, -]); - -var msg589 = msg("313", dup197); - -var msg590 = msg("313:01", dup221); - -var select235 = linear_select([ - msg589, - msg590, -]); - -var msg591 = msg("314", dup218); - -var msg592 = msg("314:01", dup219); - -var select236 = linear_select([ - msg591, - msg592, -]); - -var msg593 = msg("315", dup197); - -var msg594 = msg("315:01", dup221); - -var select237 = linear_select([ - msg593, - msg594, -]); - -var msg595 = msg("316", dup197); - -var msg596 = msg("316:01", dup221); - -var select238 = linear_select([ - msg595, - msg596, -]); - -var msg597 = msg("317", dup197); - -var msg598 = msg("317:01", dup221); - -var select239 = linear_select([ - msg597, - msg598, -]); - -var msg599 = msg("318", dup196); - -var msg600 = msg("318:01", dup217); - -var select240 = linear_select([ - msg599, - msg600, -]); - -var msg601 = msg("319", dup197); - -var msg602 = msg("319:01", dup221); - -var select241 = linear_select([ - msg601, - msg602, -]); - -var msg603 = msg("320", dup205); - -var msg604 = msg("320:01", dup206); - -var select242 = linear_select([ - msg603, - msg604, -]); - -var msg605 = msg("321", dup224); - -var all30 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup87, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg606 = msg("321:01", all30); - -var select243 = linear_select([ - msg605, - msg606, -]); - -var msg607 = msg("322", dup225); - -var msg608 = msg("322:01", dup226); - -var select244 = linear_select([ - msg607, - msg608, -]); - -var msg609 = msg("323", dup225); - -var msg610 = msg("323:01", dup226); - -var select245 = linear_select([ - msg609, - msg610, -]); - -var msg611 = msg("324", dup225); - -var msg612 = msg("324:01", dup226); - -var select246 = linear_select([ - msg611, - msg612, -]); - -var msg613 = msg("325", dup225); - -var msg614 = msg("325:01", dup226); - -var select247 = linear_select([ - msg613, - msg614, -]); - -var msg615 = msg("326", dup225); - -var msg616 = msg("326:01", dup226); - -var select248 = linear_select([ - msg615, - msg616, -]); - -var msg617 = msg("327", dup225); - -var msg618 = msg("327:01", dup226); - -var select249 = linear_select([ - msg617, - msg618, -]); - -var msg619 = msg("328", dup225); - -var msg620 = msg("328:01", dup226); - -var select250 = linear_select([ - msg619, - msg620, -]); - -var msg621 = msg("329", dup225); - -var msg622 = msg("329:01", dup226); - -var select251 = linear_select([ - msg621, - msg622, -]); - -var msg623 = msg("330", dup225); - -var msg624 = msg("330:01", dup226); - -var select252 = linear_select([ - msg623, - msg624, -]); - -var msg625 = msg("331", dup225); - -var msg626 = msg("331:01", dup226); - -var select253 = linear_select([ - msg625, - msg626, -]); - -var msg627 = msg("332", dup225); - -var msg628 = msg("332:01", dup226); - -var select254 = linear_select([ - msg627, - msg628, -]); - -var msg629 = msg("333", dup225); - -var msg630 = msg("333:01", dup226); - -var select255 = linear_select([ - msg629, - msg630, -]); - -var msg631 = msg("334", dup227); - -var msg632 = msg("334:01", dup228); - -var select256 = linear_select([ - msg631, - msg632, -]); - -var msg633 = msg("335", dup227); - -var msg634 = msg("335:01", dup228); - -var select257 = linear_select([ - msg633, - msg634, -]); - -var msg635 = msg("336", dup227); - -var msg636 = msg("336:01", dup228); - -var select258 = linear_select([ - msg635, - msg636, -]); - -var msg637 = msg("337", dup222); - -var msg638 = msg("337:01", dup223); - -var select259 = linear_select([ - msg637, - msg638, -]); - -var msg639 = msg("338", dup227); - -var msg640 = msg("338:01", dup228); - -var select260 = linear_select([ - msg639, - msg640, -]); - -var msg641 = msg("339", dup227); - -var msg642 = msg("339:01", dup228); - -var select261 = linear_select([ - msg641, - msg642, -]); - -var msg643 = msg("340", dup197); - -var msg644 = msg("340:01", dup221); - -var select262 = linear_select([ - msg643, - msg644, -]); - -var msg645 = msg("341", dup197); - -var msg646 = msg("341:01", dup221); - -var select263 = linear_select([ - msg645, - msg646, -]); - -var msg647 = msg("342", dup197); - -var msg648 = msg("342:01", dup221); - -var select264 = linear_select([ - msg647, - msg648, -]); - -var msg649 = msg("343", dup197); - -var msg650 = msg("343:01", dup221); - -var select265 = linear_select([ - msg649, - msg650, -]); - -var msg651 = msg("344", dup197); - -var msg652 = msg("344:01", dup221); - -var select266 = linear_select([ - msg651, - msg652, -]); - -var msg653 = msg("345", dup197); - -var msg654 = msg("345:01", dup221); - -var select267 = linear_select([ - msg653, - msg654, -]); - -var msg655 = msg("346", dup227); - -var msg656 = msg("346:01", dup228); - -var select268 = linear_select([ - msg655, - msg656, -]); - -var msg657 = msg("347", dup227); - -var msg658 = msg("347:01", dup228); - -var select269 = linear_select([ - msg657, - msg658, -]); - -var msg659 = msg("348", dup227); - -var msg660 = msg("348:01", dup228); - -var select270 = linear_select([ - msg659, - msg660, -]); - -var msg661 = msg("349", dup197); - -var msg662 = msg("349:01", dup221); - -var select271 = linear_select([ - msg661, - msg662, -]); - -var msg663 = msg("350", dup197); - -var msg664 = msg("350:01", dup221); - -var select272 = linear_select([ - msg663, - msg664, -]); - -var msg665 = msg("351", dup197); - -var msg666 = msg("351:01", dup221); - -var select273 = linear_select([ - msg665, - msg666, -]); - -var msg667 = msg("352", dup197); - -var msg668 = msg("352:01", dup221); - -var select274 = linear_select([ - msg667, - msg668, -]); - -var msg669 = msg("353", dup194); - -var msg670 = msg("353:01", dup229); - -var select275 = linear_select([ - msg669, - msg670, -]); - -var msg671 = msg("354", dup194); - -var msg672 = msg("354:01", dup229); - -var select276 = linear_select([ - msg671, - msg672, -]); - -var msg673 = msg("355", dup227); - -var msg674 = msg("355:01", dup228); - -var select277 = linear_select([ - msg673, - msg674, -]); - -var msg675 = msg("356", dup227); - -var msg676 = msg("356:01", dup228); - -var select278 = linear_select([ - msg675, - msg676, -]); - -var msg677 = msg("357", dup194); - -var msg678 = msg("357:01", dup229); - -var select279 = linear_select([ - msg677, - msg678, -]); - -var msg679 = msg("358", dup194); - -var msg680 = msg("358:01", dup229); - -var select280 = linear_select([ - msg679, - msg680, -]); - -var all31 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup82, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg681 = msg("359", all31); - -var all32 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup82, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg682 = msg("359:01", all32); - -var select281 = linear_select([ - msg681, - msg682, -]); - -var msg683 = msg("360", dup227); - -var msg684 = msg("360:01", dup228); - -var select282 = linear_select([ - msg683, - msg684, -]); - -var msg685 = msg("361", dup227); - -var msg686 = msg("361:01", dup228); - -var select283 = linear_select([ - msg685, - msg686, -]); - -var msg687 = msg("362", dup227); - -var msg688 = msg("362:01", dup228); - -var select284 = linear_select([ - msg687, - msg688, -]); - -var msg689 = msg("363", dup230); - -var msg690 = msg("363:01", dup231); - -var select285 = linear_select([ - msg689, - msg690, -]); - -var msg691 = msg("364", dup230); - -var msg692 = msg("364:01", dup231); - -var select286 = linear_select([ - msg691, - msg692, -]); - -var msg693 = msg("365", dup232); - -var msg694 = msg("365:01", dup231); - -var select287 = linear_select([ - msg693, - msg694, -]); - -var msg695 = msg("366", dup232); - -var msg696 = msg("366:01", dup231); - -var select288 = linear_select([ - msg695, - msg696, -]); - -var msg697 = msg("368", dup232); - -var msg698 = msg("368:01", dup231); - -var select289 = linear_select([ - msg697, - msg698, -]); - -var msg699 = msg("369", dup232); - -var msg700 = msg("369:01", dup231); - -var select290 = linear_select([ - msg699, - msg700, -]); - -var msg701 = msg("370", dup232); - -var msg702 = msg("370:01", dup231); - -var select291 = linear_select([ - msg701, - msg702, -]); - -var msg703 = msg("371", dup232); - -var msg704 = msg("371:01", dup231); - -var select292 = linear_select([ - msg703, - msg704, -]); - -var msg705 = msg("372", dup232); - -var msg706 = msg("372:01", dup231); - -var select293 = linear_select([ - msg705, - msg706, -]); - -var msg707 = msg("373", dup232); - -var msg708 = msg("373:01", dup231); - -var select294 = linear_select([ - msg707, - msg708, -]); - -var msg709 = msg("374", dup232); - -var msg710 = msg("374:01", dup231); - -var select295 = linear_select([ - msg709, - msg710, -]); - -var msg711 = msg("375", dup232); - -var msg712 = msg("375:01", dup231); - -var select296 = linear_select([ - msg711, - msg712, -]); - -var msg713 = msg("376", dup232); - -var msg714 = msg("376:01", dup233); - -var select297 = linear_select([ - msg713, - msg714, -]); - -var msg715 = msg("377", dup232); - -var msg716 = msg("377:01", dup231); - -var select298 = linear_select([ - msg715, - msg716, -]); - -var msg717 = msg("378", dup232); - -var msg718 = msg("378:01", dup231); - -var select299 = linear_select([ - msg717, - msg718, -]); - -var msg719 = msg("379", dup232); - -var msg720 = msg("379:01", dup231); - -var select300 = linear_select([ - msg719, - msg720, -]); - -var msg721 = msg("380", dup232); - -var msg722 = msg("380:01", dup231); - -var select301 = linear_select([ - msg721, - msg722, -]); - -var msg723 = msg("381", dup232); - -var msg724 = msg("381:01", dup231); - -var select302 = linear_select([ - msg723, - msg724, -]); - -var msg725 = msg("382", dup232); - -var msg726 = msg("382:01", dup231); - -var select303 = linear_select([ - msg725, - msg726, -]); - -var msg727 = msg("384", dup232); - -var msg728 = msg("384:01", dup231); - -var select304 = linear_select([ - msg727, - msg728, -]); - -var msg729 = msg("385", dup232); - -var msg730 = msg("385:01", dup231); - -var select305 = linear_select([ - msg729, - msg730, -]); - -var msg731 = msg("386", dup232); - -var msg732 = msg("386:01", dup231); - -var select306 = linear_select([ - msg731, - msg732, -]); - -var msg733 = msg("387", dup232); - -var msg734 = msg("387:01", dup231); - -var select307 = linear_select([ - msg733, - msg734, -]); - -var msg735 = msg("388", dup232); - -var msg736 = msg("388:01", dup231); - -var select308 = linear_select([ - msg735, - msg736, -]); - -var msg737 = msg("389", dup232); - -var msg738 = msg("389:01", dup231); - -var select309 = linear_select([ - msg737, - msg738, -]); - -var msg739 = msg("390", dup230); - -var msg740 = msg("390:01", dup231); - -var select310 = linear_select([ - msg739, - msg740, -]); - -var msg741 = msg("391", dup232); - -var msg742 = msg("391:01", dup231); - -var select311 = linear_select([ - msg741, - msg742, -]); - -var msg743 = msg("392", dup232); - -var msg744 = msg("392:01", dup231); - -var select312 = linear_select([ - msg743, - msg744, -]); - -var msg745 = msg("393", dup232); - -var msg746 = msg("393:01", dup231); - -var select313 = linear_select([ - msg745, - msg746, -]); - -var msg747 = msg("394", dup232); - -var msg748 = msg("394:01", dup231); - -var select314 = linear_select([ - msg747, - msg748, -]); - -var msg749 = msg("395", dup232); - -var msg750 = msg("395:01", dup231); - -var select315 = linear_select([ - msg749, - msg750, -]); - -var msg751 = msg("396", dup232); - -var msg752 = msg("396:01", dup231); - -var select316 = linear_select([ - msg751, - msg752, -]); - -var msg753 = msg("397", dup232); - -var msg754 = msg("397:01", dup231); - -var select317 = linear_select([ - msg753, - msg754, -]); - -var msg755 = msg("398", dup232); - -var msg756 = msg("398:01", dup231); - -var select318 = linear_select([ - msg755, - msg756, -]); - -var msg757 = msg("399", dup232); - -var msg758 = msg("399:01", dup231); - -var select319 = linear_select([ - msg757, - msg758, -]); - -var msg759 = msg("400", dup232); - -var msg760 = msg("400:01", dup231); - -var select320 = linear_select([ - msg759, - msg760, -]); - -var msg761 = msg("401", dup232); - -var msg762 = msg("401:01", dup231); - -var select321 = linear_select([ - msg761, - msg762, -]); - -var msg763 = msg("402", dup232); - -var msg764 = msg("402:01", dup231); - -var select322 = linear_select([ - msg763, - msg764, -]); - -var msg765 = msg("403", dup232); - -var msg766 = msg("403:01", dup231); - -var select323 = linear_select([ - msg765, - msg766, -]); - -var msg767 = msg("404", dup232); - -var msg768 = msg("404:01", dup231); - -var select324 = linear_select([ - msg767, - msg768, -]); - -var msg769 = msg("405", dup232); - -var msg770 = msg("405:01", dup231); - -var select325 = linear_select([ - msg769, - msg770, -]); - -var msg771 = msg("406", dup232); - -var msg772 = msg("406:01", dup231); - -var select326 = linear_select([ - msg771, - msg772, -]); - -var msg773 = msg("407", dup232); - -var msg774 = msg("407:01", dup231); - -var select327 = linear_select([ - msg773, - msg774, -]); - -var msg775 = msg("408", dup232); - -var msg776 = msg("408:01", dup231); - -var select328 = linear_select([ - msg775, - msg776, -]); - -var msg777 = msg("409", dup232); - -var msg778 = msg("409:01", dup231); - -var select329 = linear_select([ - msg777, - msg778, -]); - -var msg779 = msg("410", dup232); - -var msg780 = msg("410:01", dup231); - -var select330 = linear_select([ - msg779, - msg780, -]); - -var msg781 = msg("411", dup232); - -var msg782 = msg("411:01", dup231); - -var select331 = linear_select([ - msg781, - msg782, -]); - -var msg783 = msg("412", dup232); - -var msg784 = msg("412:01", dup231); - -var select332 = linear_select([ - msg783, - msg784, -]); - -var msg785 = msg("413", dup232); - -var msg786 = msg("413:01", dup231); - -var select333 = linear_select([ - msg785, - msg786, -]); - -var msg787 = msg("414", dup232); - -var msg788 = msg("414:01", dup231); - -var select334 = linear_select([ - msg787, - msg788, -]); - -var msg789 = msg("415", dup232); - -var msg790 = msg("415:01", dup231); - -var select335 = linear_select([ - msg789, - msg790, -]); - -var msg791 = msg("416", dup232); - -var msg792 = msg("416:01", dup231); - -var select336 = linear_select([ - msg791, - msg792, -]); - -var msg793 = msg("417", dup232); - -var msg794 = msg("417:01", dup231); - -var select337 = linear_select([ - msg793, - msg794, -]); - -var msg795 = msg("418", dup232); - -var msg796 = msg("418:01", dup231); - -var select338 = linear_select([ - msg795, - msg796, -]); - -var msg797 = msg("419", dup232); - -var msg798 = msg("419:01", dup231); - -var select339 = linear_select([ - msg797, - msg798, -]); - -var msg799 = msg("420", dup232); - -var msg800 = msg("420:01", dup231); - -var select340 = linear_select([ - msg799, - msg800, -]); - -var msg801 = msg("421", dup232); - -var msg802 = msg("421:01", dup231); - -var select341 = linear_select([ - msg801, - msg802, -]); - -var msg803 = msg("422", dup232); - -var msg804 = msg("422:01", dup231); - -var select342 = linear_select([ - msg803, - msg804, -]); - -var msg805 = msg("423", dup232); - -var msg806 = msg("423:01", dup231); - -var select343 = linear_select([ - msg805, - msg806, -]); - -var msg807 = msg("424", dup232); - -var msg808 = msg("424:01", dup231); - -var select344 = linear_select([ - msg807, - msg808, -]); - -var msg809 = msg("425", dup232); - -var msg810 = msg("425:01", dup231); - -var select345 = linear_select([ - msg809, - msg810, -]); - -var msg811 = msg("426", dup232); - -var msg812 = msg("426:01", dup231); - -var select346 = linear_select([ - msg811, - msg812, -]); - -var msg813 = msg("427", dup232); - -var msg814 = msg("427:01", dup231); - -var select347 = linear_select([ - msg813, - msg814, -]); - -var msg815 = msg("428", dup232); - -var msg816 = msg("428:01", dup231); - -var select348 = linear_select([ - msg815, - msg816, -]); - -var msg817 = msg("429", dup232); - -var msg818 = msg("429:01", dup231); - -var select349 = linear_select([ - msg817, - msg818, -]); - -var msg819 = msg("430", dup232); - -var msg820 = msg("430:01", dup231); - -var select350 = linear_select([ - msg819, - msg820, -]); - -var all33 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup90, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg821 = msg("431", all33); - -var all34 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup90, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg822 = msg("431:01", all34); - -var select351 = linear_select([ - msg821, - msg822, -]); - -var msg823 = msg("432", dup232); - -var msg824 = msg("432:01", dup231); - -var select352 = linear_select([ - msg823, - msg824, -]); - -var msg825 = msg("433", dup232); - -var msg826 = msg("433:01", dup231); - -var select353 = linear_select([ - msg825, - msg826, -]); - -var msg827 = msg("436", dup232); - -var msg828 = msg("436:01", dup231); - -var select354 = linear_select([ - msg827, - msg828, -]); - -var msg829 = msg("437", dup232); - -var msg830 = msg("437:01", dup231); - -var select355 = linear_select([ - msg829, - msg830, -]); - -var msg831 = msg("438", dup232); - -var msg832 = msg("438:01", dup231); - -var select356 = linear_select([ - msg831, - msg832, -]); - -var msg833 = msg("439", dup232); - -var msg834 = msg("439:01", dup231); - -var select357 = linear_select([ - msg833, - msg834, -]); - -var msg835 = msg("440", dup232); - -var msg836 = msg("440:01", dup231); - -var select358 = linear_select([ - msg835, - msg836, -]); - -var msg837 = msg("441", dup232); - -var msg838 = msg("441:01", dup231); - -var select359 = linear_select([ - msg837, - msg838, -]); - -var msg839 = msg("443", dup232); - -var msg840 = msg("443:01", dup231); - -var select360 = linear_select([ - msg839, - msg840, -]); - -var msg841 = msg("445", dup232); - -var msg842 = msg("445:01", dup231); - -var select361 = linear_select([ - msg841, - msg842, -]); - -var msg843 = msg("446", dup232); - -var msg844 = msg("446:01", dup231); - -var select362 = linear_select([ - msg843, - msg844, -]); - -var msg845 = msg("448", dup232); - -var msg846 = msg("448:01", dup231); - -var select363 = linear_select([ - msg845, - msg846, -]); - -var msg847 = msg("449", dup232); - -var msg848 = msg("449:01", dup231); - -var select364 = linear_select([ - msg847, - msg848, -]); - -var msg849 = msg("450", dup232); - -var msg850 = msg("450:01", dup231); - -var select365 = linear_select([ - msg849, - msg850, -]); - -var msg851 = msg("451", dup232); - -var msg852 = msg("451:01", dup231); - -var select366 = linear_select([ - msg851, - msg852, -]); - -var msg853 = msg("452", dup232); - -var msg854 = msg("452:01", dup231); - -var select367 = linear_select([ - msg853, - msg854, -]); - -var msg855 = msg("453", dup232); - -var msg856 = msg("453:01", dup231); - -var select368 = linear_select([ - msg855, - msg856, -]); - -var msg857 = msg("454", dup232); - -var msg858 = msg("454:01", dup231); - -var select369 = linear_select([ - msg857, - msg858, -]); - -var msg859 = msg("455", dup232); - -var msg860 = msg("455:01", dup231); - -var select370 = linear_select([ - msg859, - msg860, -]); - -var msg861 = msg("456", dup232); - -var msg862 = msg("456:01", dup231); - -var select371 = linear_select([ - msg861, - msg862, -]); - -var msg863 = msg("457", dup232); - -var msg864 = msg("457:01", dup231); - -var select372 = linear_select([ - msg863, - msg864, -]); - -var msg865 = msg("458", dup232); - -var msg866 = msg("458:01", dup231); - -var select373 = linear_select([ - msg865, - msg866, -]); - -var msg867 = msg("459", dup232); - -var msg868 = msg("459:01", dup231); - -var select374 = linear_select([ - msg867, - msg868, -]); - -var msg869 = msg("460", dup232); - -var msg870 = msg("460:01", dup231); - -var select375 = linear_select([ - msg869, - msg870, -]); - -var msg871 = msg("461", dup232); - -var msg872 = msg("461:01", dup231); - -var select376 = linear_select([ - msg871, - msg872, -]); - -var msg873 = msg("462", dup232); - -var msg874 = msg("462:01", dup231); - -var select377 = linear_select([ - msg873, - msg874, -]); - -var msg875 = msg("463", dup232); - -var msg876 = msg("463:01", dup231); - -var select378 = linear_select([ - msg875, - msg876, -]); - -var msg877 = msg("465", dup232); - -var msg878 = msg("465:01", dup231); - -var select379 = linear_select([ - msg877, - msg878, -]); - -var msg879 = msg("466", dup232); - -var msg880 = msg("466:01", dup231); - -var select380 = linear_select([ - msg879, - msg880, -]); - -var msg881 = msg("467", dup232); - -var msg882 = msg("467:01", dup231); - -var select381 = linear_select([ - msg881, - msg882, -]); - -var msg883 = msg("469", dup232); - -var msg884 = msg("469:01", dup231); - -var select382 = linear_select([ - msg883, - msg884, -]); - -var msg885 = msg("471", dup230); - -var msg886 = msg("471:01", dup233); - -var select383 = linear_select([ - msg885, - msg886, -]); - -var msg887 = msg("472", dup232); - -var msg888 = msg("472:01", dup231); - -var select384 = linear_select([ - msg887, - msg888, -]); - -var msg889 = msg("473", dup232); - -var msg890 = msg("473:01", dup231); - -var select385 = linear_select([ - msg889, - msg890, -]); - -var msg891 = msg("474", dup234); - -var msg892 = msg("474:01", dup235); - -var select386 = linear_select([ - msg891, - msg892, -]); - -var msg893 = msg("475", dup232); - -var msg894 = msg("475:01", dup231); - -var select387 = linear_select([ - msg893, - msg894, -]); - -var msg895 = msg("476", dup234); - -var msg896 = msg("476:01", dup235); - -var select388 = linear_select([ - msg895, - msg896, -]); - -var msg897 = msg("477", dup230); - -var msg898 = msg("477:01", dup233); - -var select389 = linear_select([ - msg897, - msg898, -]); - -var msg899 = msg("478", dup194); - -var msg900 = msg("478:01", dup229); - -var select390 = linear_select([ - msg899, - msg900, -]); - -var msg901 = msg("480", dup232); - -var msg902 = msg("480:01", dup231); - -var select391 = linear_select([ - msg901, - msg902, -]); - -var msg903 = msg("481", dup232); - -var msg904 = msg("481:01", dup231); - -var select392 = linear_select([ - msg903, - msg904, -]); - -var msg905 = msg("482", dup232); - -var msg906 = msg("482:01", dup231); - -var select393 = linear_select([ - msg905, - msg906, -]); - -var msg907 = msg("483", dup232); - -var msg908 = msg("483:01", dup231); - -var select394 = linear_select([ - msg907, - msg908, -]); - -var msg909 = msg("484", dup234); - -var msg910 = msg("484:01", dup235); - -var select395 = linear_select([ - msg909, - msg910, -]); - -var msg911 = msg("485", dup232); - -var msg912 = msg("485:01", dup231); - -var select396 = linear_select([ - msg911, - msg912, -]); - -var msg913 = msg("486", dup232); - -var msg914 = msg("486:01", dup231); - -var select397 = linear_select([ - msg913, - msg914, -]); - -var msg915 = msg("487", dup232); - -var msg916 = msg("487:01", dup231); - -var select398 = linear_select([ - msg915, - msg916, -]); - -var msg917 = msg("488", dup196); - -var msg918 = msg("488:01", dup217); - -var select399 = linear_select([ - msg917, - msg918, -]); - -var msg919 = msg("489", dup227); - -var msg920 = msg("489:01", dup228); - -var select400 = linear_select([ - msg919, - msg920, -]); - -var msg921 = msg("490", dup196); - -var msg922 = msg("490:01", dup217); - -var select401 = linear_select([ - msg921, - msg922, -]); - -var msg923 = msg("491", dup227); - -var msg924 = msg("492", dup236); - -var msg925 = msg("492:01", dup237); - -var select402 = linear_select([ - msg924, - msg925, -]); - -var msg926 = msg("493", dup196); - -var msg927 = msg("493:01", dup217); - -var select403 = linear_select([ - msg926, - msg927, -]); - -var msg928 = msg("494", dup196); - -var msg929 = msg("494:01", dup217); - -var select404 = linear_select([ - msg928, - msg929, -]); - -var msg930 = msg("495", dup196); - -var msg931 = msg("495:01", dup217); - -var select405 = linear_select([ - msg930, - msg931, -]); - -var msg932 = msg("496", dup196); - -var msg933 = msg("496:01", dup217); - -var select406 = linear_select([ - msg932, - msg933, -]); - -var msg934 = msg("497", dup196); - -var msg935 = msg("497:01", dup217); - -var select407 = linear_select([ - msg934, - msg935, -]); - -var msg936 = msg("498", dup196); - -var msg937 = msg("498:01", dup217); - -var select408 = linear_select([ - msg936, - msg937, -]); - -var msg938 = msg("499", dup230); - -var msg939 = msg("499:01", dup233); - -var select409 = linear_select([ - msg938, - msg939, -]); - -var msg940 = msg("500", dup196); - -var msg941 = msg("500:01", dup217); - -var select410 = linear_select([ - msg940, - msg941, -]); - -var msg942 = msg("501", dup196); - -var msg943 = msg("501:01", dup217); - -var select411 = linear_select([ - msg942, - msg943, -]); - -var msg944 = msg("502", dup196); - -var msg945 = msg("502:01", dup217); - -var select412 = linear_select([ - msg944, - msg945, -]); - -var msg946 = msg("503", dup196); - -var msg947 = msg("503:01", dup217); - -var select413 = linear_select([ - msg946, - msg947, -]); - -var msg948 = msg("504", dup196); - -var msg949 = msg("504:01", dup217); - -var select414 = linear_select([ - msg948, - msg949, -]); - -var msg950 = msg("505", dup196); - -var msg951 = msg("505:01", dup217); - -var select415 = linear_select([ - msg950, - msg951, -]); - -var msg952 = msg("506", dup238); - -var msg953 = msg("506:01", dup239); - -var select416 = linear_select([ - msg952, - msg953, -]); - -var msg954 = msg("507", dup196); - -var msg955 = msg("507:01", dup217); - -var select417 = linear_select([ - msg954, - msg955, -]); - -var msg956 = msg("508", dup196); - -var msg957 = msg("508:01", dup217); - -var select418 = linear_select([ - msg956, - msg957, -]); - -var msg958 = msg("509", dup240); - -var msg959 = msg("509:01", dup241); - -var select419 = linear_select([ - msg958, - msg959, -]); - -var msg960 = msg("510", dup196); - -var msg961 = msg("510:01", dup217); - -var select420 = linear_select([ - msg960, - msg961, -]); - -var msg962 = msg("511", dup196); - -var msg963 = msg("511:01", dup217); - -var select421 = linear_select([ - msg962, - msg963, -]); - -var msg964 = msg("512", dup236); - -var msg965 = msg("512:01", dup237); - -var select422 = linear_select([ - msg964, - msg965, -]); - -var msg966 = msg("513", dup196); - -var msg967 = msg("513:01", dup217); - -var select423 = linear_select([ - msg966, - msg967, -]); - -var msg968 = msg("514", dup238); - -var msg969 = msg("514:01", dup239); - -var select424 = linear_select([ - msg968, - msg969, -]); - -var msg970 = msg("516", dup242); - -var msg971 = msg("516:01", dup243); - -var select425 = linear_select([ - msg970, - msg971, -]); - -var msg972 = msg("517", dup196); - -var msg973 = msg("517:01", dup217); - -var select426 = linear_select([ - msg972, - msg973, -]); - -var msg974 = msg("518", dup196); - -var msg975 = msg("518:01", dup217); - -var select427 = linear_select([ - msg974, - msg975, -]); - -var msg976 = msg("519", dup196); - -var msg977 = msg("519:01", dup217); - -var select428 = linear_select([ - msg976, - msg977, -]); - -var msg978 = msg("520", dup196); - -var msg979 = msg("520:01", dup217); - -var select429 = linear_select([ - msg978, - msg979, -]); - -var msg980 = msg("521", dup196); - -var msg981 = msg("521:01", dup217); - -var select430 = linear_select([ - msg980, - msg981, -]); - -var msg982 = msg("522", dup196); - -var msg983 = msg("522:01", dup217); - -var select431 = linear_select([ - msg982, - msg983, -]); - -var msg984 = msg("523", dup196); - -var msg985 = msg("523:01", dup217); - -var select432 = linear_select([ - msg984, - msg985, -]); - -var msg986 = msg("524", dup244); - -var msg987 = msg("524:01", dup245); - -var select433 = linear_select([ - msg986, - msg987, -]); - -var msg988 = msg("525", dup196); - -var msg989 = msg("525:01", dup217); - -var select434 = linear_select([ - msg988, - msg989, -]); - -var msg990 = msg("526", dup244); - -var msg991 = msg("526:01", dup245); - -var select435 = linear_select([ - msg990, - msg991, -]); - -var msg992 = msg("527", dup196); - -var msg993 = msg("527:01", dup217); - -var select436 = linear_select([ - msg992, - msg993, -]); - -var msg994 = msg("528", dup196); - -var msg995 = msg("528:01", dup217); - -var select437 = linear_select([ - msg994, - msg995, -]); - -var msg996 = msg("529", dup198); - -var msg997 = msg("529:01", dup220); - -var select438 = linear_select([ - msg996, - msg997, -]); - -var msg998 = msg("530", dup196); - -var msg999 = msg("530:01", dup217); - -var select439 = linear_select([ - msg998, - msg999, -]); - -var msg1000 = msg("532", dup246); - -var msg1001 = msg("532:01", dup247); - -var select440 = linear_select([ - msg1000, - msg1001, -]); - -var msg1002 = msg("533", dup246); - -var msg1003 = msg("533:01", dup247); - -var select441 = linear_select([ - msg1002, - msg1003, -]); - -var msg1004 = msg("534", dup196); - -var msg1005 = msg("534:01", dup217); - -var select442 = linear_select([ - msg1004, - msg1005, -]); - -var msg1006 = msg("535", dup196); - -var msg1007 = msg("535:01", dup217); - -var select443 = linear_select([ - msg1006, - msg1007, -]); - -var msg1008 = msg("536", dup246); - -var msg1009 = msg("536:01", dup247); - -var select444 = linear_select([ - msg1008, - msg1009, -]); - -var msg1010 = msg("537", dup246); - -var msg1011 = msg("537:01", dup247); - -var select445 = linear_select([ - msg1010, - msg1011, -]); - -var msg1012 = msg("538", dup246); - -var msg1013 = msg("538:01", dup247); - -var select446 = linear_select([ - msg1012, - msg1013, -]); - -var msg1014 = msg("539", dup246); - -var msg1015 = msg("539:01", dup247); - -var select447 = linear_select([ - msg1014, - msg1015, -]); - -var msg1016 = msg("540", dup196); - -var msg1017 = msg("540:01", dup217); - -var select448 = linear_select([ - msg1016, - msg1017, -]); - -var msg1018 = msg("541", dup196); - -var msg1019 = msg("541:01", dup217); - -var select449 = linear_select([ - msg1018, - msg1019, -]); - -var msg1020 = msg("542", dup196); - -var msg1021 = msg("542:01", dup217); - -var select450 = linear_select([ - msg1020, - msg1021, -]); - -var msg1022 = msg("543", dup227); - -var msg1023 = msg("543:01", dup228); - -var select451 = linear_select([ - msg1022, - msg1023, -]); - -var msg1024 = msg("544", dup227); - -var msg1025 = msg("544:01", dup228); - -var select452 = linear_select([ - msg1024, - msg1025, -]); - -var msg1026 = msg("545", dup227); - -var msg1027 = msg("545:01", dup228); - -var select453 = linear_select([ - msg1026, - msg1027, -]); - -var msg1028 = msg("546", dup227); - -var msg1029 = msg("546:01", dup228); - -var select454 = linear_select([ - msg1028, - msg1029, -]); - -var msg1030 = msg("547", dup227); - -var msg1031 = msg("547:01", dup228); - -var select455 = linear_select([ - msg1030, - msg1031, -]); - -var msg1032 = msg("548", dup227); - -var msg1033 = msg("548:01", dup228); - -var select456 = linear_select([ - msg1032, - msg1033, -]); - -var msg1034 = msg("549", dup196); - -var msg1035 = msg("549:01", dup217); - -var select457 = linear_select([ - msg1034, - msg1035, -]); - -var msg1036 = msg("550", dup196); - -var msg1037 = msg("550:01", dup217); - -var select458 = linear_select([ - msg1036, - msg1037, -]); - -var msg1038 = msg("551", dup196); - -var msg1039 = msg("551:01", dup217); - -var select459 = linear_select([ - msg1038, - msg1039, -]); - -var msg1040 = msg("552", dup196); - -var msg1041 = msg("552:01", dup217); - -var select460 = linear_select([ - msg1040, - msg1041, -]); - -var msg1042 = msg("553", dup227); - -var msg1043 = msg("553:01", dup228); - -var select461 = linear_select([ - msg1042, - msg1043, -]); - -var msg1044 = msg("554", dup227); - -var msg1045 = msg("554:01", dup228); - -var select462 = linear_select([ - msg1044, - msg1045, -]); - -var msg1046 = msg("555", dup248); - -var msg1047 = msg("555:01", dup249); - -var select463 = linear_select([ - msg1046, - msg1047, -]); - -var msg1048 = msg("556", dup196); - -var msg1049 = msg("556:01", dup217); - -var select464 = linear_select([ - msg1048, - msg1049, -]); - -var msg1050 = msg("557", dup196); - -var msg1051 = msg("557:01", dup217); - -var select465 = linear_select([ - msg1050, - msg1051, -]); - -var msg1052 = msg("558", dup196); - -var msg1053 = msg("558:01", dup217); - -var select466 = linear_select([ - msg1052, - msg1053, -]); - -var msg1054 = msg("559", dup196); - -var msg1055 = msg("559:01", dup217); - -var select467 = linear_select([ - msg1054, - msg1055, -]); - -var msg1056 = msg("560", dup196); - -var msg1057 = msg("560:01", dup217); - -var select468 = linear_select([ - msg1056, - msg1057, -]); - -var msg1058 = msg("561", dup196); - -var msg1059 = msg("561:01", dup217); - -var select469 = linear_select([ - msg1058, - msg1059, -]); - -var msg1060 = msg("562", dup196); - -var msg1061 = msg("562:01", dup217); - -var select470 = linear_select([ - msg1060, - msg1061, -]); - -var msg1062 = msg("563", dup196); - -var msg1063 = msg("563:01", dup217); - -var select471 = linear_select([ - msg1062, - msg1063, -]); - -var msg1064 = msg("564", dup196); - -var msg1065 = msg("564:01", dup217); - -var select472 = linear_select([ - msg1064, - msg1065, -]); - -var msg1066 = msg("565", dup196); - -var msg1067 = msg("565:01", dup217); - -var select473 = linear_select([ - msg1066, - msg1067, -]); - -var msg1068 = msg("566", dup196); - -var msg1069 = msg("566:01", dup217); - -var select474 = linear_select([ - msg1068, - msg1069, -]); - -var msg1070 = msg("567", dup250); - -var msg1071 = msg("567:01", dup251); - -var select475 = linear_select([ - msg1070, - msg1071, -]); - -var msg1072 = msg("568", dup196); - -var msg1073 = msg("568:01", dup217); - -var select476 = linear_select([ - msg1072, - msg1073, -]); - -var msg1074 = msg("569", dup252); - -var all35 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg1075 = msg("569:01", all35); - -var select477 = linear_select([ - msg1074, - msg1075, -]); - -var msg1076 = msg("570", dup197); - -var msg1077 = msg("570:01", dup221); - -var select478 = linear_select([ - msg1076, - msg1077, -]); - -var msg1078 = msg("571", dup197); - -var msg1079 = msg("571:01", dup221); - -var select479 = linear_select([ - msg1078, - msg1079, -]); - -var msg1080 = msg("572", dup198); - -var msg1081 = msg("572:01", dup220); - -var select480 = linear_select([ - msg1080, - msg1081, -]); - -var msg1082 = msg("573", dup197); - -var msg1083 = msg("573:01", dup221); - -var select481 = linear_select([ - msg1082, - msg1083, -]); - -var msg1084 = msg("574", dup253); - -var msg1085 = msg("574:01", dup254); - -var select482 = linear_select([ - msg1084, - msg1085, -]); - -var msg1086 = msg("575", dup255); - -var msg1087 = msg("575:01", dup256); - -var select483 = linear_select([ - msg1086, - msg1087, -]); - -var msg1088 = msg("576", dup255); - -var msg1089 = msg("576:01", dup256); - -var select484 = linear_select([ - msg1088, - msg1089, -]); - -var msg1090 = msg("577", dup255); - -var msg1091 = msg("577:01", dup256); - -var select485 = linear_select([ - msg1090, - msg1091, -]); - -var msg1092 = msg("578", dup255); - -var msg1093 = msg("578:01", dup256); - -var select486 = linear_select([ - msg1092, - msg1093, -]); - -var msg1094 = msg("579", dup255); - -var msg1095 = msg("579:01", dup256); - -var select487 = linear_select([ - msg1094, - msg1095, -]); - -var msg1096 = msg("580", dup255); - -var msg1097 = msg("580:01", dup256); - -var select488 = linear_select([ - msg1096, - msg1097, -]); - -var msg1098 = msg("581", dup257); - -var all36 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup98, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg1099 = msg("581:01", all36); - -var select489 = linear_select([ - msg1098, - msg1099, -]); - -var msg1100 = msg("582", dup255); - -var msg1101 = msg("582:01", dup256); - -var select490 = linear_select([ - msg1100, - msg1101, -]); - -var msg1102 = msg("583", dup255); - -var msg1103 = msg("583:01", dup256); - -var select491 = linear_select([ - msg1102, - msg1103, -]); - -var msg1104 = msg("584", dup255); - -var msg1105 = msg("584:01", dup256); - -var select492 = linear_select([ - msg1104, - msg1105, -]); - -var msg1106 = msg("585", dup255); - -var msg1107 = msg("585:01", dup256); - -var select493 = linear_select([ - msg1106, - msg1107, -]); - -var msg1108 = msg("586", dup255); - -var msg1109 = msg("586:01", dup256); - -var select494 = linear_select([ - msg1108, - msg1109, -]); - -var msg1110 = msg("587", dup255); - -var msg1111 = msg("587:01", dup256); - -var select495 = linear_select([ - msg1110, - msg1111, -]); - -var msg1112 = msg("588", dup255); - -var msg1113 = msg("588:01", dup256); - -var select496 = linear_select([ - msg1112, - msg1113, -]); - -var msg1114 = msg("589", dup255); - -var msg1115 = msg("589:01", dup256); - -var select497 = linear_select([ - msg1114, - msg1115, -]); - -var msg1116 = msg("590", dup255); - -var msg1117 = msg("590:01", dup256); - -var select498 = linear_select([ - msg1116, - msg1117, -]); - -var msg1118 = msg("591", dup255); - -var msg1119 = msg("591:01", dup256); - -var select499 = linear_select([ - msg1118, - msg1119, -]); - -var msg1120 = msg("592", dup255); - -var msg1121 = msg("592:01", dup256); - -var select500 = linear_select([ - msg1120, - msg1121, -]); - -var msg1122 = msg("593", dup255); - -var msg1123 = msg("593:01", dup256); - -var select501 = linear_select([ - msg1122, - msg1123, -]); - -var msg1124 = msg("594", dup255); - -var msg1125 = msg("594:01", dup256); - -var select502 = linear_select([ - msg1124, - msg1125, -]); - -var msg1126 = msg("595", dup258); - -var msg1127 = msg("595:01", dup259); - -var select503 = linear_select([ - msg1126, - msg1127, -]); - -var msg1128 = msg("596", dup255); - -var msg1129 = msg("596:01", dup256); - -var select504 = linear_select([ - msg1128, - msg1129, -]); - -var msg1130 = msg("597", dup255); - -var msg1131 = msg("597:01", dup256); - -var select505 = linear_select([ - msg1130, - msg1131, -]); - -var msg1132 = msg("598", dup258); - -var msg1133 = msg("598:01", dup259); - -var select506 = linear_select([ - msg1132, - msg1133, -]); - -var msg1134 = msg("599", dup258); - -var msg1135 = msg("599:01", dup259); - -var select507 = linear_select([ - msg1134, - msg1135, -]); - -var msg1136 = msg("600", dup255); - -var msg1137 = msg("600:01", dup256); - -var select508 = linear_select([ - msg1136, - msg1137, -]); - -var msg1138 = msg("601", dup196); - -var msg1139 = msg("601:01", dup217); - -var select509 = linear_select([ - msg1138, - msg1139, -]); - -var msg1140 = msg("602", dup196); - -var msg1141 = msg("602:01", dup217); - -var select510 = linear_select([ - msg1140, - msg1141, -]); - -var msg1142 = msg("603", dup196); - -var msg1143 = msg("603:01", dup217); - -var select511 = linear_select([ - msg1142, - msg1143, -]); - -var msg1144 = msg("604", dup196); - -var msg1145 = msg("604:01", dup217); - -var select512 = linear_select([ - msg1144, - msg1145, -]); - -var msg1146 = msg("605", dup236); - -var msg1147 = msg("605:01", dup237); - -var select513 = linear_select([ - msg1146, - msg1147, -]); - -var msg1148 = msg("606", dup196); - -var msg1149 = msg("606:01", dup217); - -var select514 = linear_select([ - msg1148, - msg1149, -]); - -var msg1150 = msg("607", dup196); - -var msg1151 = msg("607:01", dup217); - -var select515 = linear_select([ - msg1150, - msg1151, -]); - -var msg1152 = msg("608", dup196); - -var msg1153 = msg("608:01", dup217); - -var select516 = linear_select([ - msg1152, - msg1153, -]); - -var msg1154 = msg("609", dup196); - -var msg1155 = msg("609:01", dup217); - -var select517 = linear_select([ - msg1154, - msg1155, -]); - -var msg1156 = msg("610", dup196); - -var msg1157 = msg("610:01", dup217); - -var select518 = linear_select([ - msg1156, - msg1157, -]); - -var msg1158 = msg("611", dup236); - -var msg1159 = msg("611:01", dup237); - -var select519 = linear_select([ - msg1158, - msg1159, -]); - -var msg1160 = msg("612", dup255); - -var msg1161 = msg("612:01", dup256); - -var select520 = linear_select([ - msg1160, - msg1161, -]); - -var msg1162 = msg("613", dup194); - -var msg1163 = msg("613:01", dup229); - -var select521 = linear_select([ - msg1162, - msg1163, -]); - -var msg1164 = msg("614", dup205); - -var msg1165 = msg("614:01", dup206); - -var select522 = linear_select([ - msg1164, - msg1165, -]); - -var msg1166 = msg("615", dup194); - -var msg1167 = msg("615:01", dup229); - -var select523 = linear_select([ - msg1166, - msg1167, -]); - -var msg1168 = msg("616", dup194); - -var msg1169 = msg("616:01", dup229); - -var select524 = linear_select([ - msg1168, - msg1169, -]); - -var msg1170 = msg("617", dup194); - -var msg1171 = msg("617:01", dup229); - -var select525 = linear_select([ - msg1170, - msg1171, -]); - -var msg1172 = msg("618", dup194); - -var msg1173 = msg("618:01", dup229); - -var select526 = linear_select([ - msg1172, - msg1173, -]); - -var msg1174 = msg("619", dup194); - -var msg1175 = msg("619:01", dup229); - -var select527 = linear_select([ - msg1174, - msg1175, -]); - -var msg1176 = msg("620", dup194); - -var msg1177 = msg("620:01", dup229); - -var select528 = linear_select([ - msg1176, - msg1177, -]); - -var msg1178 = msg("621", dup194); - -var msg1179 = msg("621:01", dup229); - -var select529 = linear_select([ - msg1178, - msg1179, -]); - -var msg1180 = msg("622", dup194); - -var msg1181 = msg("622:01", dup229); - -var select530 = linear_select([ - msg1180, - msg1181, -]); - -var msg1182 = msg("623", dup194); - -var msg1183 = msg("623:01", dup229); - -var select531 = linear_select([ - msg1182, - msg1183, -]); - -var msg1184 = msg("624", dup194); - -var msg1185 = msg("624:01", dup229); - -var select532 = linear_select([ - msg1184, - msg1185, -]); - -var msg1186 = msg("625", dup194); - -var msg1187 = msg("625:01", dup229); - -var select533 = linear_select([ - msg1186, - msg1187, -]); - -var msg1188 = msg("626", dup194); - -var msg1189 = msg("626:01", dup229); - -var select534 = linear_select([ - msg1188, - msg1189, -]); - -var msg1190 = msg("627", dup194); - -var msg1191 = msg("627:01", dup229); - -var select535 = linear_select([ - msg1190, - msg1191, -]); - -var msg1192 = msg("628", dup234); - -var msg1193 = msg("628:01", dup235); - -var select536 = linear_select([ - msg1192, - msg1193, -]); - -var msg1194 = msg("629", dup225); - -var msg1195 = msg("629:01", dup226); - -var select537 = linear_select([ - msg1194, - msg1195, -]); - -var msg1196 = msg("630", dup234); - -var msg1197 = msg("630:01", dup229); - -var select538 = linear_select([ - msg1196, - msg1197, -]); - -var all37 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup97, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg1198 = msg("631", all37); - -var msg1199 = msg("631:01", dup251); - -var select539 = linear_select([ - msg1198, - msg1199, -]); - -var msg1200 = msg("632", dup250); - -var msg1201 = msg("632:01", dup251); - -var select540 = linear_select([ - msg1200, - msg1201, -]); - -var msg1202 = msg("634", dup194); - -var msg1203 = msg("634:01", dup229); - -var select541 = linear_select([ - msg1202, - msg1203, -]); - -var msg1204 = msg("635", dup194); - -var msg1205 = msg("635:01", dup229); - -var select542 = linear_select([ - msg1204, - msg1205, -]); - -var msg1206 = msg("636", dup194); - -var msg1207 = msg("636:01", dup229); - -var select543 = linear_select([ - msg1206, - msg1207, -]); - -var msg1208 = msg("637", dup194); - -var msg1209 = msg("637:01", dup229); - -var select544 = linear_select([ - msg1208, - msg1209, -]); - -var msg1210 = msg("638", dup196); - -var msg1211 = msg("638:01", dup217); - -var select545 = linear_select([ - msg1210, - msg1211, -]); - -var msg1212 = msg("639", dup196); - -var msg1213 = msg("639:01", dup217); - -var select546 = linear_select([ - msg1212, - msg1213, -]); - -var msg1214 = msg("640", dup196); - -var msg1215 = msg("640:01", dup217); - -var select547 = linear_select([ - msg1214, - msg1215, -]); - -var msg1216 = msg("641", dup196); - -var msg1217 = msg("641:01", dup217); - -var select548 = linear_select([ - msg1216, - msg1217, -]); - -var msg1218 = msg("642", dup196); - -var msg1219 = msg("642:01", dup217); - -var select549 = linear_select([ - msg1218, - msg1219, -]); - -var msg1220 = msg("643", dup196); - -var msg1221 = msg("643:01", dup217); - -var select550 = linear_select([ - msg1220, - msg1221, -]); - -var msg1222 = msg("644", dup196); - -var msg1223 = msg("644:01", dup217); - -var select551 = linear_select([ - msg1222, - msg1223, -]); - -var msg1224 = msg("645", dup196); - -var msg1225 = msg("645:01", dup217); - -var select552 = linear_select([ - msg1224, - msg1225, -]); - -var msg1226 = msg("646", dup196); - -var msg1227 = msg("646:01", dup217); - -var select553 = linear_select([ - msg1226, - msg1227, -]); - -var msg1228 = msg("647", dup196); - -var msg1229 = msg("647:01", dup217); - -var select554 = linear_select([ - msg1228, - msg1229, -]); - -var msg1230 = msg("648", dup196); - -var msg1231 = msg("648:01", dup217); - -var select555 = linear_select([ - msg1230, - msg1231, -]); - -var msg1232 = msg("649", dup196); - -var msg1233 = msg("649:01", dup217); - -var select556 = linear_select([ - msg1232, - msg1233, -]); - -var msg1234 = msg("650", dup196); - -var msg1235 = msg("650:01", dup217); - -var select557 = linear_select([ - msg1234, - msg1235, -]); - -var msg1236 = msg("651", dup196); - -var msg1237 = msg("651:01", dup217); - -var select558 = linear_select([ - msg1236, - msg1237, -]); - -var msg1238 = msg("652", dup196); - -var msg1239 = msg("652:01", dup217); - -var select559 = linear_select([ - msg1238, - msg1239, -]); - -var msg1240 = msg("653", dup196); - -var msg1241 = msg("653:01", dup217); - -var select560 = linear_select([ - msg1240, - msg1241, -]); - -var msg1242 = msg("654", dup197); - -var msg1243 = msg("654:01", dup221); - -var select561 = linear_select([ - msg1242, - msg1243, -]); - -var msg1244 = msg("655", dup250); - -var msg1245 = msg("655:01", dup251); - -var select562 = linear_select([ - msg1244, - msg1245, -]); - -var msg1246 = msg("656", dup197); - -var msg1247 = msg("656:01", dup221); - -var select563 = linear_select([ - msg1246, - msg1247, -]); - -var msg1248 = msg("657", dup197); - -var msg1249 = msg("657:01", dup221); - -var select564 = linear_select([ - msg1248, - msg1249, -]); - -var msg1250 = msg("658", dup198); - -var msg1251 = msg("658:01", dup220); - -var select565 = linear_select([ - msg1250, - msg1251, -]); - -var msg1252 = msg("659", dup250); - -var msg1253 = msg("659:01", dup251); - -var select566 = linear_select([ - msg1252, - msg1253, -]); - -var msg1254 = msg("660", dup250); - -var msg1255 = msg("660:01", dup251); - -var select567 = linear_select([ - msg1254, - msg1255, -]); - -var msg1256 = msg("661", dup250); - -var msg1257 = msg("661:01", dup251); - -var select568 = linear_select([ - msg1256, - msg1257, -]); - -var msg1258 = msg("662", dup250); - -var msg1259 = msg("662:01", dup251); - -var select569 = linear_select([ - msg1258, - msg1259, -]); - -var msg1260 = msg("663", dup250); - -var msg1261 = msg("663:01", dup251); - -var select570 = linear_select([ - msg1260, - msg1261, -]); - -var msg1262 = msg("664", dup250); - -var msg1263 = msg("664:01", dup251); - -var select571 = linear_select([ - msg1262, - msg1263, -]); - -var msg1264 = msg("665", dup250); - -var msg1265 = msg("665:01", dup251); - -var select572 = linear_select([ - msg1264, - msg1265, -]); - -var msg1266 = msg("666", dup250); - -var msg1267 = msg("666:01", dup251); - -var select573 = linear_select([ - msg1266, - msg1267, -]); - -var msg1268 = msg("667", dup250); - -var msg1269 = msg("667:01", dup251); - -var select574 = linear_select([ - msg1268, - msg1269, -]); - -var msg1270 = msg("668", dup250); - -var msg1271 = msg("668:01", dup251); - -var select575 = linear_select([ - msg1270, - msg1271, -]); - -var msg1272 = msg("669", dup250); - -var msg1273 = msg("669:01", dup251); - -var select576 = linear_select([ - msg1272, - msg1273, -]); - -var msg1274 = msg("670", dup250); - -var msg1275 = msg("670:01", dup251); - -var select577 = linear_select([ - msg1274, - msg1275, -]); - -var msg1276 = msg("671", dup250); - -var msg1277 = msg("671:01", dup251); - -var select578 = linear_select([ - msg1276, - msg1277, -]); - -var msg1278 = msg("672", dup250); - -var msg1279 = msg("672:01", dup251); - -var select579 = linear_select([ - msg1278, - msg1279, -]); - -var msg1280 = msg("673", dup260); - -var msg1281 = msg("673:01", dup261); - -var select580 = linear_select([ - msg1280, - msg1281, -]); - -var msg1282 = msg("674", dup197); - -var msg1283 = msg("674:01", dup221); - -var select581 = linear_select([ - msg1282, - msg1283, -]); - -var msg1284 = msg("675", dup197); - -var msg1285 = msg("675:01", dup221); - -var select582 = linear_select([ - msg1284, - msg1285, -]); - -var msg1286 = msg("676", dup260); - -var msg1287 = msg("676:01", dup261); - -var select583 = linear_select([ - msg1286, - msg1287, -]); - -var msg1288 = msg("677", dup196); - -var msg1289 = msg("677:01", dup217); - -var select584 = linear_select([ - msg1288, - msg1289, -]); - -var msg1290 = msg("678", dup196); - -var msg1291 = msg("678:01", dup217); - -var select585 = linear_select([ - msg1290, - msg1291, -]); - -var msg1292 = msg("679", dup196); - -var msg1293 = msg("679:01", dup217); - -var select586 = linear_select([ - msg1292, - msg1293, -]); - -var msg1294 = msg("680", dup236); - -var msg1295 = msg("680:01", dup237); - -var select587 = linear_select([ - msg1294, - msg1295, -]); - -var msg1296 = msg("681", dup260); - -var msg1297 = msg("681:01", dup261); - -var select588 = linear_select([ - msg1296, - msg1297, -]); - -var msg1298 = msg("682", dup197); - -var msg1299 = msg("682:01", dup221); - -var select589 = linear_select([ - msg1298, - msg1299, -]); - -var msg1300 = msg("683", dup196); - -var msg1301 = msg("683:01", dup217); - -var select590 = linear_select([ - msg1300, - msg1301, -]); - -var msg1302 = msg("684", dup196); - -var msg1303 = msg("684:01", dup217); - -var select591 = linear_select([ - msg1302, - msg1303, -]); - -var msg1304 = msg("685", dup196); - -var msg1305 = msg("685:01", dup217); - -var select592 = linear_select([ - msg1304, - msg1305, -]); - -var msg1306 = msg("686", dup240); - -var msg1307 = msg("686:01", dup241); - -var select593 = linear_select([ - msg1306, - msg1307, -]); - -var msg1308 = msg("687", dup260); - -var msg1309 = msg("687:01", dup261); - -var select594 = linear_select([ - msg1308, - msg1309, -]); - -var msg1310 = msg("688", dup236); - -var msg1311 = msg("688:01", dup237); - -var select595 = linear_select([ - msg1310, - msg1311, -]); - -var msg1312 = msg("689", dup240); - -var msg1313 = msg("689:01", dup241); - -var select596 = linear_select([ - msg1312, - msg1313, -]); - -var msg1314 = msg("690", dup197); - -var msg1315 = msg("690:01", dup221); - -var select597 = linear_select([ - msg1314, - msg1315, -]); - -var msg1316 = msg("691", dup240); - -var msg1317 = msg("691:01", dup241); - -var select598 = linear_select([ - msg1316, - msg1317, -]); - -var msg1318 = msg("692", dup240); - -var msg1319 = msg("692:01", dup241); - -var select599 = linear_select([ - msg1318, - msg1319, -]); - -var msg1320 = msg("693", dup240); - -var msg1321 = msg("693:01", dup241); - -var select600 = linear_select([ - msg1320, - msg1321, -]); - -var msg1322 = msg("694", dup240); - -var msg1323 = msg("694:01", dup241); - -var select601 = linear_select([ - msg1322, - msg1323, -]); - -var msg1324 = msg("695", dup197); - -var msg1325 = msg("695:01", dup221); - -var select602 = linear_select([ - msg1324, - msg1325, -]); - -var msg1326 = msg("696", dup197); - -var msg1327 = msg("696:01", dup221); - -var select603 = linear_select([ - msg1326, - msg1327, -]); - -var msg1328 = msg("697", dup197); - -var msg1329 = msg("697:01", dup221); - -var select604 = linear_select([ - msg1328, - msg1329, -]); - -var msg1330 = msg("698", dup197); - -var msg1331 = msg("698:01", dup221); - -var select605 = linear_select([ - msg1330, - msg1331, -]); - -var msg1332 = msg("699", dup197); - -var msg1333 = msg("699:01", dup221); - -var select606 = linear_select([ - msg1332, - msg1333, -]); - -var msg1334 = msg("700", dup197); - -var msg1335 = msg("700:01", dup221); - -var select607 = linear_select([ - msg1334, - msg1335, -]); - -var msg1336 = msg("701", dup197); - -var msg1337 = msg("701:01", dup221); - -var select608 = linear_select([ - msg1336, - msg1337, -]); - -var msg1338 = msg("702", dup197); - -var msg1339 = msg("702:01", dup221); - -var select609 = linear_select([ - msg1338, - msg1339, -]); - -var msg1340 = msg("703", dup197); - -var msg1341 = msg("703:01", dup221); - -var select610 = linear_select([ - msg1340, - msg1341, -]); - -var msg1342 = msg("704", dup197); - -var msg1343 = msg("704:01", dup221); - -var select611 = linear_select([ - msg1342, - msg1343, -]); - -var msg1344 = msg("705", dup197); - -var msg1345 = msg("705:01", dup221); - -var select612 = linear_select([ - msg1344, - msg1345, -]); - -var msg1346 = msg("706", dup197); - -var msg1347 = msg("706:01", dup221); - -var select613 = linear_select([ - msg1346, - msg1347, -]); - -var msg1348 = msg("707", dup197); - -var msg1349 = msg("707:01", dup221); - -var select614 = linear_select([ - msg1348, - msg1349, -]); - -var msg1350 = msg("708", dup197); - -var msg1351 = msg("708:01", dup221); - -var select615 = linear_select([ - msg1350, - msg1351, -]); - -var msg1352 = msg("709", dup248); - -var msg1353 = msg("709:01", dup249); - -var select616 = linear_select([ - msg1352, - msg1353, -]); - -var msg1354 = msg("710", dup248); - -var msg1355 = msg("710:01", dup249); - -var select617 = linear_select([ - msg1354, - msg1355, -]); - -var msg1356 = msg("711", dup196); - -var msg1357 = msg("711:01", dup217); - -var select618 = linear_select([ - msg1356, - msg1357, -]); - -var msg1358 = msg("712", dup196); - -var msg1359 = msg("712:01", dup217); - -var select619 = linear_select([ - msg1358, - msg1359, -]); - -var msg1360 = msg("713", dup198); - -var msg1361 = msg("713:01", dup220); - -var select620 = linear_select([ - msg1360, - msg1361, -]); - -var msg1362 = msg("714", dup196); - -var msg1363 = msg("714:01", dup217); - -var select621 = linear_select([ - msg1362, - msg1363, -]); - -var msg1364 = msg("715", dup248); - -var msg1365 = msg("715:01", dup249); - -var select622 = linear_select([ - msg1364, - msg1365, -]); - -var msg1366 = msg("716", dup248); - -var msg1367 = msg("716:01", dup249); - -var select623 = linear_select([ - msg1366, - msg1367, -]); - -var msg1368 = msg("717", dup196); - -var msg1369 = msg("717:01", dup217); - -var select624 = linear_select([ - msg1368, - msg1369, -]); - -var msg1370 = msg("718", dup196); - -var msg1371 = msg("718:01", dup217); - -var select625 = linear_select([ - msg1370, - msg1371, -]); - -var msg1372 = msg("719", dup196); - -var msg1373 = msg("719:01", dup217); - -var select626 = linear_select([ - msg1372, - msg1373, -]); - -var msg1374 = msg("720", dup192); - -var msg1375 = msg("720:01", dup262); - -var select627 = linear_select([ - msg1374, - msg1375, -]); - -var msg1376 = msg("721", dup263); - -var msg1377 = msg("721:01", dup264); - -var select628 = linear_select([ - msg1376, - msg1377, -]); - -var msg1378 = msg("722", dup238); - -var msg1379 = msg("722:01", dup239); - -var select629 = linear_select([ - msg1378, - msg1379, -]); - -var msg1380 = msg("723", dup238); - -var msg1381 = msg("723:01", dup239); - -var select630 = linear_select([ - msg1380, - msg1381, -]); - -var msg1382 = msg("724", dup238); - -var msg1383 = msg("724:01", dup239); - -var select631 = linear_select([ - msg1382, - msg1383, -]); - -var msg1384 = msg("725", dup238); - -var msg1385 = msg("725:01", dup239); - -var select632 = linear_select([ - msg1384, - msg1385, -]); - -var msg1386 = msg("726", dup238); - -var msg1387 = msg("726:01", dup239); - -var select633 = linear_select([ - msg1386, - msg1387, -]); - -var msg1388 = msg("727", dup238); - -var msg1389 = msg("727:01", dup239); - -var select634 = linear_select([ - msg1388, - msg1389, -]); - -var msg1390 = msg("728", dup238); - -var msg1391 = msg("728:01", dup239); - -var select635 = linear_select([ - msg1390, - msg1391, -]); - -var msg1392 = msg("729", dup263); - -var msg1393 = msg("729:01", dup264); - -var select636 = linear_select([ - msg1392, - msg1393, -]); - -var msg1394 = msg("730", dup263); - -var msg1395 = msg("730:01", dup264); - -var select637 = linear_select([ - msg1394, - msg1395, -]); - -var msg1396 = msg("731", dup238); - -var msg1397 = msg("731:01", dup239); - -var select638 = linear_select([ - msg1396, - msg1397, -]); - -var msg1398 = msg("732", dup238); - -var msg1399 = msg("732:01", dup239); - -var select639 = linear_select([ - msg1398, - msg1399, -]); - -var msg1400 = msg("733", dup238); - -var msg1401 = msg("733:01", dup239); - -var select640 = linear_select([ - msg1400, - msg1401, -]); - -var msg1402 = msg("734", dup238); - -var msg1403 = msg("734:01", dup239); - -var select641 = linear_select([ - msg1402, - msg1403, -]); - -var msg1404 = msg("735", dup238); - -var msg1405 = msg("735:01", dup239); - -var select642 = linear_select([ - msg1404, - msg1405, -]); - -var msg1406 = msg("736", dup263); - -var msg1407 = msg("736:01", dup264); - -var select643 = linear_select([ - msg1406, - msg1407, -]); - -var msg1408 = msg("737", dup263); - -var msg1409 = msg("737:01", dup264); - -var select644 = linear_select([ - msg1408, - msg1409, -]); - -var msg1410 = msg("738", dup263); - -var msg1411 = msg("738:01", dup264); - -var select645 = linear_select([ - msg1410, - msg1411, -]); - -var msg1412 = msg("739", dup238); - -var msg1413 = msg("739:01", dup239); - -var select646 = linear_select([ - msg1412, - msg1413, -]); - -var msg1414 = msg("740", dup263); - -var msg1415 = msg("740:01", dup264); - -var select647 = linear_select([ - msg1414, - msg1415, -]); - -var msg1416 = msg("741", dup238); - -var msg1417 = msg("741:01", dup239); - -var select648 = linear_select([ - msg1416, - msg1417, -]); - -var msg1418 = msg("742", dup238); - -var msg1419 = msg("742:01", dup239); - -var select649 = linear_select([ - msg1418, - msg1419, -]); - -var msg1420 = msg("743", dup238); - -var msg1421 = msg("743:01", dup239); - -var select650 = linear_select([ - msg1420, - msg1421, -]); - -var msg1422 = msg("744", dup238); - -var msg1423 = msg("744:01", dup239); - -var select651 = linear_select([ - msg1422, - msg1423, -]); - -var msg1424 = msg("745", dup238); - -var msg1425 = msg("745:01", dup239); - -var select652 = linear_select([ - msg1424, - msg1425, -]); - -var msg1426 = msg("746", dup238); - -var msg1427 = msg("746:01", dup239); - -var select653 = linear_select([ - msg1426, - msg1427, -]); - -var msg1428 = msg("747", dup238); - -var msg1429 = msg("747:01", dup239); - -var select654 = linear_select([ - msg1428, - msg1429, -]); - -var msg1430 = msg("748", dup238); - -var msg1431 = msg("748:01", dup239); - -var select655 = linear_select([ - msg1430, - msg1431, -]); - -var msg1432 = msg("749", dup238); - -var msg1433 = msg("749:01", dup239); - -var select656 = linear_select([ - msg1432, - msg1433, -]); - -var msg1434 = msg("751", dup238); - -var msg1435 = msg("751:01", dup239); - -var select657 = linear_select([ - msg1434, - msg1435, -]); - -var msg1436 = msg("752", dup238); - -var msg1437 = msg("752:01", dup239); - -var select658 = linear_select([ - msg1436, - msg1437, -]); - -var msg1438 = msg("753", dup238); - -var msg1439 = msg("753:01", dup239); - -var select659 = linear_select([ - msg1438, - msg1439, -]); - -var msg1440 = msg("754", dup263); - -var msg1441 = msg("754:01", dup264); - -var select660 = linear_select([ - msg1440, - msg1441, -]); - -var msg1442 = msg("755", dup238); - -var msg1443 = msg("755:01", dup239); - -var select661 = linear_select([ - msg1442, - msg1443, -]); - -var msg1444 = msg("756", dup238); - -var msg1445 = msg("756:01", dup239); - -var select662 = linear_select([ - msg1444, - msg1445, -]); - -var msg1446 = msg("757", dup192); - -var msg1447 = msg("757:01", dup262); - -var select663 = linear_select([ - msg1446, - msg1447, -]); - -var msg1448 = msg("758", dup192); - -var msg1449 = msg("758:01", dup262); - -var select664 = linear_select([ - msg1448, - msg1449, -]); - -var msg1450 = msg("759", dup263); - -var msg1451 = msg("759:01", dup264); - -var select665 = linear_select([ - msg1450, - msg1451, -]); - -var msg1452 = msg("760", dup238); - -var msg1453 = msg("760:01", dup239); - -var select666 = linear_select([ - msg1452, - msg1453, -]); - -var msg1454 = msg("761", dup238); - -var msg1455 = msg("761:01", dup239); - -var select667 = linear_select([ - msg1454, - msg1455, -]); - -var msg1456 = msg("762", dup238); - -var msg1457 = msg("762:01", dup239); - -var select668 = linear_select([ - msg1456, - msg1457, -]); - -var msg1458 = msg("763", dup238); - -var msg1459 = msg("763:01", dup239); - -var select669 = linear_select([ - msg1458, - msg1459, -]); - -var msg1460 = msg("764", dup238); - -var msg1461 = msg("764:01", dup239); - -var select670 = linear_select([ - msg1460, - msg1461, -]); - -var msg1462 = msg("765", dup238); - -var msg1463 = msg("765:01", dup239); - -var select671 = linear_select([ - msg1462, - msg1463, -]); - -var msg1464 = msg("766", dup238); - -var msg1465 = msg("766:01", dup239); - -var select672 = linear_select([ - msg1464, - msg1465, -]); - -var msg1466 = msg("767", dup238); - -var msg1467 = msg("767:01", dup239); - -var select673 = linear_select([ - msg1466, - msg1467, -]); - -var msg1468 = msg("768", dup238); - -var msg1469 = msg("768:01", dup239); - -var select674 = linear_select([ - msg1468, - msg1469, -]); - -var msg1470 = msg("769", dup238); - -var msg1471 = msg("769:01", dup239); - -var select675 = linear_select([ - msg1470, - msg1471, -]); - -var msg1472 = msg("770", dup238); - -var msg1473 = msg("770:01", dup239); - -var select676 = linear_select([ - msg1472, - msg1473, -]); - -var msg1474 = msg("771", dup192); - -var msg1475 = msg("771:01", dup262); - -var select677 = linear_select([ - msg1474, - msg1475, -]); - -var msg1476 = msg("772", dup192); - -var msg1477 = msg("772:01", dup262); - -var select678 = linear_select([ - msg1476, - msg1477, -]); - -var msg1478 = msg("773", dup263); - -var msg1479 = msg("773:01", dup264); - -var select679 = linear_select([ - msg1478, - msg1479, -]); - -var msg1480 = msg("774", dup192); - -var msg1481 = msg("774:01", dup262); - -var select680 = linear_select([ - msg1480, - msg1481, -]); - -var msg1482 = msg("775", dup238); - -var msg1483 = msg("775:01", dup239); - -var select681 = linear_select([ - msg1482, - msg1483, -]); - -var msg1484 = msg("776", dup238); - -var msg1485 = msg("776:01", dup239); - -var select682 = linear_select([ - msg1484, - msg1485, -]); - -var msg1486 = msg("777", dup238); - -var msg1487 = msg("777:01", dup239); - -var select683 = linear_select([ - msg1486, - msg1487, -]); - -var msg1488 = msg("778", dup263); - -var msg1489 = msg("778:01", dup264); - -var select684 = linear_select([ - msg1488, - msg1489, -]); - -var msg1490 = msg("779", dup238); - -var msg1491 = msg("779:01", dup239); - -var select685 = linear_select([ - msg1490, - msg1491, -]); - -var msg1492 = msg("780", dup238); - -var msg1493 = msg("780:01", dup239); - -var select686 = linear_select([ - msg1492, - msg1493, -]); - -var msg1494 = msg("781", dup238); - -var msg1495 = msg("781:01", dup239); - -var select687 = linear_select([ - msg1494, - msg1495, -]); - -var msg1496 = msg("782", dup238); - -var msg1497 = msg("782:01", dup239); - -var select688 = linear_select([ - msg1496, - msg1497, -]); - -var msg1498 = msg("783", dup238); - -var msg1499 = msg("783:01", dup239); - -var select689 = linear_select([ - msg1498, - msg1499, -]); - -var msg1500 = msg("784", dup238); - -var msg1501 = msg("784:01", dup239); - -var select690 = linear_select([ - msg1500, - msg1501, -]); - -var msg1502 = msg("785", dup238); - -var msg1503 = msg("785:01", dup239); - -var select691 = linear_select([ - msg1502, - msg1503, -]); - -var msg1504 = msg("786", dup238); - -var msg1505 = msg("786:01", dup239); - -var select692 = linear_select([ - msg1504, - msg1505, -]); - -var msg1506 = msg("787", dup238); - -var msg1507 = msg("787:01", dup239); - -var select693 = linear_select([ - msg1506, - msg1507, -]); - -var msg1508 = msg("788", dup238); - -var msg1509 = msg("788:01", dup239); - -var select694 = linear_select([ - msg1508, - msg1509, -]); - -var msg1510 = msg("789", dup238); - -var msg1511 = msg("789:01", dup239); - -var select695 = linear_select([ - msg1510, - msg1511, -]); - -var msg1512 = msg("790", dup238); - -var msg1513 = msg("790:01", dup239); - -var select696 = linear_select([ - msg1512, - msg1513, -]); - -var msg1514 = msg("791", dup238); - -var msg1515 = msg("791:01", dup239); - -var select697 = linear_select([ - msg1514, - msg1515, -]); - -var msg1516 = msg("792", dup238); - -var msg1517 = msg("792:01", dup239); - -var select698 = linear_select([ - msg1516, - msg1517, -]); - -var msg1518 = msg("793", dup263); - -var msg1519 = msg("793:01", dup264); - -var select699 = linear_select([ - msg1518, - msg1519, -]); - -var msg1520 = msg("794", dup238); - -var msg1521 = msg("794:01", dup239); - -var select700 = linear_select([ - msg1520, - msg1521, -]); - -var msg1522 = msg("795", dup238); - -var msg1523 = msg("795:01", dup239); - -var select701 = linear_select([ - msg1522, - msg1523, -]); - -var msg1524 = msg("796", dup238); - -var msg1525 = msg("796:01", dup239); - -var select702 = linear_select([ - msg1524, - msg1525, -]); - -var msg1526 = msg("797", dup238); - -var msg1527 = msg("797:01", dup239); - -var select703 = linear_select([ - msg1526, - msg1527, -]); - -var msg1528 = msg("798", dup238); - -var msg1529 = msg("798:01", dup239); - -var select704 = linear_select([ - msg1528, - msg1529, -]); - -var msg1530 = msg("799", dup238); - -var msg1531 = msg("799:01", dup239); - -var select705 = linear_select([ - msg1530, - msg1531, -]); - -var msg1532 = msg("800", dup238); - -var msg1533 = msg("800:01", dup239); - -var select706 = linear_select([ - msg1532, - msg1533, -]); - -var msg1534 = msg("801", dup238); - -var msg1535 = msg("801:01", dup239); - -var select707 = linear_select([ - msg1534, - msg1535, -]); - -var msg1536 = msg("802", dup192); - -var msg1537 = msg("802:01", dup262); - -var select708 = linear_select([ - msg1536, - msg1537, -]); - -var msg1538 = msg("803", dup265); - -var msg1539 = msg("803:01", dup266); - -var select709 = linear_select([ - msg1538, - msg1539, -]); - -var msg1540 = msg("804", dup267); - -var msg1541 = msg("804:01", dup268); - -var select710 = linear_select([ - msg1540, - msg1541, -]); - -var msg1542 = msg("805", dup265); - -var msg1543 = msg("805:01", dup266); - -var select711 = linear_select([ - msg1542, - msg1543, -]); - -var msg1544 = msg("806", dup265); - -var msg1545 = msg("806:01", dup266); - -var select712 = linear_select([ - msg1544, - msg1545, -]); - -var msg1546 = msg("807", dup265); - -var msg1547 = msg("807:01", dup266); - -var select713 = linear_select([ - msg1546, - msg1547, -]); - -var msg1548 = msg("808", dup265); - -var msg1549 = msg("808:01", dup266); - -var select714 = linear_select([ - msg1548, - msg1549, -]); - -var msg1550 = msg("809", dup269); - -var msg1551 = msg("809:01", dup270); - -var select715 = linear_select([ - msg1550, - msg1551, -]); - -var msg1552 = msg("810", dup265); - -var msg1553 = msg("810:01", dup266); - -var select716 = linear_select([ - msg1552, - msg1553, -]); - -var msg1554 = msg("811", dup265); - -var msg1555 = msg("811:01", dup266); - -var select717 = linear_select([ - msg1554, - msg1555, -]); - -var msg1556 = msg("812", dup265); - -var msg1557 = msg("812:01", dup266); - -var select718 = linear_select([ - msg1556, - msg1557, -]); - -var msg1558 = msg("813", dup265); - -var msg1559 = msg("813:01", dup266); - -var select719 = linear_select([ - msg1558, - msg1559, -]); - -var msg1560 = msg("815", dup265); - -var msg1561 = msg("815:01", dup266); - -var select720 = linear_select([ - msg1560, - msg1561, -]); - -var msg1562 = msg("817", dup265); - -var msg1563 = msg("817:01", dup266); - -var select721 = linear_select([ - msg1562, - msg1563, -]); - -var msg1564 = msg("818", dup265); - -var msg1565 = msg("818:01", dup266); - -var select722 = linear_select([ - msg1564, - msg1565, -]); - -var msg1566 = msg("819", dup265); - -var msg1567 = msg("819:01", dup266); - -var select723 = linear_select([ - msg1566, - msg1567, -]); - -var msg1568 = msg("820", dup265); - -var msg1569 = msg("820:01", dup266); - -var select724 = linear_select([ - msg1568, - msg1569, -]); - -var msg1570 = msg("821", dup267); - -var msg1571 = msg("821:01", dup268); - -var select725 = linear_select([ - msg1570, - msg1571, -]); - -var msg1572 = msg("823", dup265); - -var msg1573 = msg("823:01", dup266); - -var select726 = linear_select([ - msg1572, - msg1573, -]); - -var msg1574 = msg("824", dup265); - -var msg1575 = msg("824:01", dup266); - -var select727 = linear_select([ - msg1574, - msg1575, -]); - -var msg1576 = msg("825", dup265); - -var msg1577 = msg("825:01", dup266); - -var select728 = linear_select([ - msg1576, - msg1577, -]); - -var msg1578 = msg("826", dup265); - -var msg1579 = msg("826:01", dup266); - -var select729 = linear_select([ - msg1578, - msg1579, -]); - -var msg1580 = msg("827", dup265); - -var msg1581 = msg("827:01", dup266); - -var select730 = linear_select([ - msg1580, - msg1581, -]); - -var msg1582 = msg("828", dup265); - -var msg1583 = msg("828:01", dup266); - -var select731 = linear_select([ - msg1582, - msg1583, -]); - -var msg1584 = msg("829", dup265); - -var msg1585 = msg("829:01", dup266); - -var select732 = linear_select([ - msg1584, - msg1585, -]); - -var msg1586 = msg("830", dup265); - -var msg1587 = msg("830:01", dup266); - -var select733 = linear_select([ - msg1586, - msg1587, -]); - -var msg1588 = msg("832", dup265); - -var msg1589 = msg("832:01", dup266); - -var select734 = linear_select([ - msg1588, - msg1589, -]); - -var msg1590 = msg("833", dup265); - -var msg1591 = msg("833:01", dup266); - -var select735 = linear_select([ - msg1590, - msg1591, -]); - -var msg1592 = msg("834", dup265); - -var msg1593 = msg("834:01", dup266); - -var select736 = linear_select([ - msg1592, - msg1593, -]); - -var msg1594 = msg("835", dup265); - -var msg1595 = msg("835:01", dup266); - -var select737 = linear_select([ - msg1594, - msg1595, -]); - -var msg1596 = msg("836", dup265); - -var msg1597 = msg("836:01", dup266); - -var select738 = linear_select([ - msg1596, - msg1597, -]); - -var msg1598 = msg("837", dup265); - -var msg1599 = msg("837:01", dup266); - -var select739 = linear_select([ - msg1598, - msg1599, -]); - -var msg1600 = msg("838", dup265); - -var msg1601 = msg("838:01", dup266); - -var select740 = linear_select([ - msg1600, - msg1601, -]); - -var msg1602 = msg("839", dup225); - -var msg1603 = msg("839:01", dup226); - -var select741 = linear_select([ - msg1602, - msg1603, -]); - -var msg1604 = msg("840", dup265); - -var msg1605 = msg("840:01", dup266); - -var select742 = linear_select([ - msg1604, - msg1605, -]); - -var msg1606 = msg("841", dup265); - -var msg1607 = msg("841:01", dup266); - -var select743 = linear_select([ - msg1606, - msg1607, -]); - -var msg1608 = msg("842", dup265); - -var msg1609 = msg("842:01", dup266); - -var select744 = linear_select([ - msg1608, - msg1609, -]); - -var msg1610 = msg("843", dup265); - -var msg1611 = msg("843:01", dup266); - -var select745 = linear_select([ - msg1610, - msg1611, -]); - -var msg1612 = msg("844", dup265); - -var msg1613 = msg("844:01", dup266); - -var select746 = linear_select([ - msg1612, - msg1613, -]); - -var msg1614 = msg("845", dup265); - -var msg1615 = msg("845:01", dup266); - -var select747 = linear_select([ - msg1614, - msg1615, -]); - -var msg1616 = msg("846", dup265); - -var msg1617 = msg("846:01", dup266); - -var select748 = linear_select([ - msg1616, - msg1617, -]); - -var msg1618 = msg("847", dup265); - -var msg1619 = msg("847:01", dup266); - -var select749 = linear_select([ - msg1618, - msg1619, -]); - -var msg1620 = msg("848", dup265); - -var msg1621 = msg("848:01", dup266); - -var select750 = linear_select([ - msg1620, - msg1621, -]); - -var msg1622 = msg("849", dup265); - -var msg1623 = msg("849:01", dup266); - -var select751 = linear_select([ - msg1622, - msg1623, -]); - -var msg1624 = msg("850", dup265); - -var msg1625 = msg("850:01", dup266); - -var select752 = linear_select([ - msg1624, - msg1625, -]); - -var msg1626 = msg("851", dup265); - -var msg1627 = msg("851:01", dup266); - -var select753 = linear_select([ - msg1626, - msg1627, -]); - -var msg1628 = msg("852", dup265); - -var msg1629 = msg("852:01", dup266); - -var select754 = linear_select([ - msg1628, - msg1629, -]); - -var msg1630 = msg("853", dup265); - -var msg1631 = msg("853:01", dup266); - -var select755 = linear_select([ - msg1630, - msg1631, -]); - -var msg1632 = msg("854", dup265); - -var msg1633 = msg("854:01", dup266); - -var select756 = linear_select([ - msg1632, - msg1633, -]); - -var msg1634 = msg("855", dup265); - -var msg1635 = msg("855:01", dup266); - -var select757 = linear_select([ - msg1634, - msg1635, -]); - -var msg1636 = msg("856", dup265); - -var msg1637 = msg("856:01", dup266); - -var select758 = linear_select([ - msg1636, - msg1637, -]); - -var msg1638 = msg("857", dup265); - -var msg1639 = msg("857:01", dup266); - -var select759 = linear_select([ - msg1638, - msg1639, -]); - -var msg1640 = msg("858", dup265); - -var msg1641 = msg("858:01", dup266); - -var select760 = linear_select([ - msg1640, - msg1641, -]); - -var msg1642 = msg("859", dup265); - -var msg1643 = msg("859:01", dup266); - -var select761 = linear_select([ - msg1642, - msg1643, -]); - -var msg1644 = msg("860", dup265); - -var msg1645 = msg("860:01", dup266); - -var select762 = linear_select([ - msg1644, - msg1645, -]); - -var msg1646 = msg("861", dup240); - -var msg1647 = msg("861:01", dup241); - -var select763 = linear_select([ - msg1646, - msg1647, -]); - -var msg1648 = msg("862", dup265); - -var msg1649 = msg("862:01", dup266); - -var select764 = linear_select([ - msg1648, - msg1649, -]); - -var msg1650 = msg("863", dup265); - -var msg1651 = msg("863:01", dup266); - -var select765 = linear_select([ - msg1650, - msg1651, -]); - -var msg1652 = msg("864", dup265); - -var msg1653 = msg("864:01", dup266); - -var select766 = linear_select([ - msg1652, - msg1653, -]); - -var msg1654 = msg("865", dup265); - -var msg1655 = msg("865:01", dup266); - -var select767 = linear_select([ - msg1654, - msg1655, -]); - -var msg1656 = msg("866", dup265); - -var msg1657 = msg("866:01", dup266); - -var select768 = linear_select([ - msg1656, - msg1657, -]); - -var msg1658 = msg("867", dup265); - -var msg1659 = msg("867:01", dup266); - -var select769 = linear_select([ - msg1658, - msg1659, -]); - -var msg1660 = msg("868", dup265); - -var msg1661 = msg("868:01", dup266); - -var select770 = linear_select([ - msg1660, - msg1661, -]); - -var msg1662 = msg("869", dup265); - -var msg1663 = msg("869:01", dup266); - -var select771 = linear_select([ - msg1662, - msg1663, -]); - -var msg1664 = msg("870", dup265); - -var msg1665 = msg("870:01", dup266); - -var select772 = linear_select([ - msg1664, - msg1665, -]); - -var msg1666 = msg("871", dup265); - -var msg1667 = msg("871:01", dup266); - -var select773 = linear_select([ - msg1666, - msg1667, -]); - -var msg1668 = msg("872", dup265); - -var msg1669 = msg("872:01", dup266); - -var select774 = linear_select([ - msg1668, - msg1669, -]); - -var msg1670 = msg("873", dup265); - -var msg1671 = msg("873:01", dup266); - -var select775 = linear_select([ - msg1670, - msg1671, -]); - -var msg1672 = msg("874", dup240); - -var msg1673 = msg("874:01", dup241); - -var select776 = linear_select([ - msg1672, - msg1673, -]); - -var msg1674 = msg("875", dup265); - -var msg1675 = msg("875:01", dup266); - -var select777 = linear_select([ - msg1674, - msg1675, -]); - -var msg1676 = msg("876", dup267); - -var msg1677 = msg("876:01", dup268); - -var select778 = linear_select([ - msg1676, - msg1677, -]); - -var msg1678 = msg("877", dup265); - -var msg1679 = msg("877:01", dup266); - -var select779 = linear_select([ - msg1678, - msg1679, -]); - -var msg1680 = msg("878", dup265); - -var msg1681 = msg("878:01", dup266); - -var select780 = linear_select([ - msg1680, - msg1681, -]); - -var msg1682 = msg("879", dup265); - -var msg1683 = msg("879:01", dup266); - -var select781 = linear_select([ - msg1682, - msg1683, -]); - -var msg1684 = msg("880", dup265); - -var msg1685 = msg("880:01", dup266); - -var select782 = linear_select([ - msg1684, - msg1685, -]); - -var msg1686 = msg("881", dup265); - -var msg1687 = msg("881:01", dup266); - -var select783 = linear_select([ - msg1686, - msg1687, -]); - -var msg1688 = msg("882", dup265); - -var msg1689 = msg("882:01", dup266); - -var select784 = linear_select([ - msg1688, - msg1689, -]); - -var msg1690 = msg("883", dup265); - -var msg1691 = msg("883:01", dup266); - -var select785 = linear_select([ - msg1690, - msg1691, -]); - -var msg1692 = msg("884", dup265); - -var msg1693 = msg("884:01", dup266); - -var select786 = linear_select([ - msg1692, - msg1693, -]); - -var msg1694 = msg("885", dup265); - -var msg1695 = msg("885:01", dup266); - -var select787 = linear_select([ - msg1694, - msg1695, -]); - -var msg1696 = msg("886", dup265); - -var msg1697 = msg("886:01", dup266); - -var select788 = linear_select([ - msg1696, - msg1697, -]); - -var msg1698 = msg("887", dup240); - -var msg1699 = msg("887:01", dup241); - -var select789 = linear_select([ - msg1698, - msg1699, -]); - -var msg1700 = msg("888", dup265); - -var msg1701 = msg("888:01", dup266); - -var select790 = linear_select([ - msg1700, - msg1701, -]); - -var msg1702 = msg("889", dup265); - -var msg1703 = msg("889:01", dup266); - -var select791 = linear_select([ - msg1702, - msg1703, -]); - -var msg1704 = msg("890", dup265); - -var msg1705 = msg("890:01", dup266); - -var select792 = linear_select([ - msg1704, - msg1705, -]); - -var msg1706 = msg("891", dup265); - -var msg1707 = msg("891:01", dup266); - -var select793 = linear_select([ - msg1706, - msg1707, -]); - -var msg1708 = msg("892", dup265); - -var msg1709 = msg("892:01", dup266); - -var select794 = linear_select([ - msg1708, - msg1709, -]); - -var msg1710 = msg("893", dup265); - -var msg1711 = msg("893:01", dup266); - -var select795 = linear_select([ - msg1710, - msg1711, -]); - -var msg1712 = msg("894", dup265); - -var msg1713 = msg("894:01", dup266); - -var select796 = linear_select([ - msg1712, - msg1713, -]); - -var msg1714 = msg("895", dup265); - -var msg1715 = msg("895:01", dup266); - -var select797 = linear_select([ - msg1714, - msg1715, -]); - -var msg1716 = msg("896", dup197); - -var msg1717 = msg("896:01", dup266); - -var select798 = linear_select([ - msg1716, - msg1717, -]); - -var msg1718 = msg("897", dup265); - -var msg1719 = msg("897:01", dup266); - -var select799 = linear_select([ - msg1718, - msg1719, -]); - -var msg1720 = msg("898", dup265); - -var msg1721 = msg("898:01", dup266); - -var select800 = linear_select([ - msg1720, - msg1721, -]); - -var msg1722 = msg("899", dup265); - -var msg1723 = msg("899:01", dup266); - -var select801 = linear_select([ - msg1722, - msg1723, -]); - -var msg1724 = msg("900", dup265); - -var msg1725 = msg("900:01", dup266); - -var select802 = linear_select([ - msg1724, - msg1725, -]); - -var msg1726 = msg("901", dup265); - -var msg1727 = msg("901:01", dup266); - -var select803 = linear_select([ - msg1726, - msg1727, -]); - -var msg1728 = msg("902", dup265); - -var msg1729 = msg("902:01", dup266); - -var select804 = linear_select([ - msg1728, - msg1729, -]); - -var msg1730 = msg("903", dup265); - -var msg1731 = msg("903:01", dup266); - -var select805 = linear_select([ - msg1730, - msg1731, -]); - -var msg1732 = msg("904", dup196); - -var msg1733 = msg("904:01", dup217); - -var select806 = linear_select([ - msg1732, - msg1733, -]); - -var msg1734 = msg("905", dup265); - -var msg1735 = msg("905:01", dup266); - -var select807 = linear_select([ - msg1734, - msg1735, -]); - -var msg1736 = msg("906", dup265); - -var msg1737 = msg("906:01", dup266); - -var select808 = linear_select([ - msg1736, - msg1737, -]); - -var msg1738 = msg("907", dup265); - -var msg1739 = msg("907:01", dup266); - -var select809 = linear_select([ - msg1738, - msg1739, -]); - -var msg1740 = msg("908", dup265); - -var msg1741 = msg("908:01", dup266); - -var select810 = linear_select([ - msg1740, - msg1741, -]); - -var msg1742 = msg("909", dup265); - -var msg1743 = msg("909:01", dup266); - -var select811 = linear_select([ - msg1742, - msg1743, -]); - -var msg1744 = msg("910", dup265); - -var msg1745 = msg("910:01", dup266); - -var select812 = linear_select([ - msg1744, - msg1745, -]); - -var msg1746 = msg("911", dup265); - -var msg1747 = msg("911:01", dup266); - -var select813 = linear_select([ - msg1746, - msg1747, -]); - -var msg1748 = msg("912", dup265); - -var msg1749 = msg("912:01", dup266); - -var select814 = linear_select([ - msg1748, - msg1749, -]); - -var msg1750 = msg("913", dup265); - -var msg1751 = msg("913:01", dup266); - -var select815 = linear_select([ - msg1750, - msg1751, -]); - -var msg1752 = msg("914", dup265); - -var msg1753 = msg("914:01", dup266); - -var select816 = linear_select([ - msg1752, - msg1753, -]); - -var msg1754 = msg("915", dup265); - -var msg1755 = msg("915:01", dup266); - -var select817 = linear_select([ - msg1754, - msg1755, -]); - -var msg1756 = msg("916", dup271); - -var msg1757 = msg("916:01", dup272); - -var select818 = linear_select([ - msg1756, - msg1757, -]); - -var msg1758 = msg("917", dup265); - -var msg1759 = msg("917:01", dup266); - -var select819 = linear_select([ - msg1758, - msg1759, -]); - -var msg1760 = msg("918", dup265); - -var msg1761 = msg("918:01", dup266); - -var select820 = linear_select([ - msg1760, - msg1761, -]); - -var msg1762 = msg("919", dup265); - -var msg1763 = msg("919:01", dup266); - -var select821 = linear_select([ - msg1762, - msg1763, -]); - -var msg1764 = msg("920", dup265); - -var msg1765 = msg("920:01", dup266); - -var select822 = linear_select([ - msg1764, - msg1765, -]); - -var msg1766 = msg("921", dup265); - -var msg1767 = msg("921:01", dup266); - -var select823 = linear_select([ - msg1766, - msg1767, -]); - -var msg1768 = msg("922", dup265); - -var msg1769 = msg("922:01", dup266); - -var select824 = linear_select([ - msg1768, - msg1769, -]); - -var msg1770 = msg("923", dup271); - -var msg1771 = msg("923:01", dup272); - -var select825 = linear_select([ - msg1770, - msg1771, -]); - -var msg1772 = msg("924", dup265); - -var msg1773 = msg("924:01", dup266); - -var select826 = linear_select([ - msg1772, - msg1773, -]); - -var msg1774 = msg("925", dup265); - -var msg1775 = msg("925:01", dup266); - -var select827 = linear_select([ - msg1774, - msg1775, -]); - -var msg1776 = msg("926", dup271); - -var msg1777 = msg("926:01", dup272); - -var select828 = linear_select([ - msg1776, - msg1777, -]); - -var msg1778 = msg("927", dup265); - -var msg1779 = msg("927:01", dup266); - -var select829 = linear_select([ - msg1778, - msg1779, -]); - -var msg1780 = msg("928", dup265); - -var msg1781 = msg("928:01", dup266); - -var select830 = linear_select([ - msg1780, - msg1781, -]); - -var msg1782 = msg("929", dup265); - -var msg1783 = msg("929:01", dup266); - -var select831 = linear_select([ - msg1782, - msg1783, -]); - -var msg1784 = msg("930", dup265); - -var msg1785 = msg("930:01", dup266); - -var select832 = linear_select([ - msg1784, - msg1785, -]); - -var msg1786 = msg("931", dup265); - -var msg1787 = msg("931:01", dup266); - -var select833 = linear_select([ - msg1786, - msg1787, -]); - -var msg1788 = msg("932", dup265); - -var msg1789 = msg("932:01", dup266); - -var select834 = linear_select([ - msg1788, - msg1789, -]); - -var msg1790 = msg("933", dup265); - -var msg1791 = msg("933:01", dup266); - -var select835 = linear_select([ - msg1790, - msg1791, -]); - -var msg1792 = msg("935", dup198); - -var msg1793 = msg("935:01", dup220); - -var select836 = linear_select([ - msg1792, - msg1793, -]); - -var msg1794 = msg("936", dup265); - -var msg1795 = msg("936:01", dup266); - -var select837 = linear_select([ - msg1794, - msg1795, -]); - -var msg1796 = msg("937", dup265); - -var msg1797 = msg("937:01", dup266); - -var select838 = linear_select([ - msg1796, - msg1797, -]); - -var msg1798 = msg("939", dup196); - -var msg1799 = msg("939:01", dup217); - -var select839 = linear_select([ - msg1798, - msg1799, -]); - -var msg1800 = msg("940", dup265); - -var msg1801 = msg("940:01", dup217); - -var select840 = linear_select([ - msg1800, - msg1801, -]); - -var msg1802 = msg("941", dup265); - -var msg1803 = msg("941:01", dup266); - -var select841 = linear_select([ - msg1802, - msg1803, -]); - -var msg1804 = msg("942", dup265); - -var msg1805 = msg("942:01", dup266); - -var select842 = linear_select([ - msg1804, - msg1805, -]); - -var msg1806 = msg("943", dup265); - -var msg1807 = msg("943:01", dup266); - -var select843 = linear_select([ - msg1806, - msg1807, -]); - -var msg1808 = msg("944", dup265); - -var msg1809 = msg("944:01", dup266); - -var select844 = linear_select([ - msg1808, - msg1809, -]); - -var msg1810 = msg("945", dup265); - -var msg1811 = msg("945:01", dup266); - -var select845 = linear_select([ - msg1810, - msg1811, -]); - -var msg1812 = msg("946", dup265); - -var msg1813 = msg("946:01", dup266); - -var select846 = linear_select([ - msg1812, - msg1813, -]); - -var msg1814 = msg("947", dup265); - -var msg1815 = msg("947:01", dup266); - -var select847 = linear_select([ - msg1814, - msg1815, -]); - -var msg1816 = msg("948", dup265); - -var msg1817 = msg("948:01", dup266); - -var select848 = linear_select([ - msg1816, - msg1817, -]); - -var msg1818 = msg("949", dup265); - -var msg1819 = msg("949:01", dup266); - -var select849 = linear_select([ - msg1818, - msg1819, -]); - -var msg1820 = msg("950", dup265); - -var msg1821 = msg("950:01", dup266); - -var select850 = linear_select([ - msg1820, - msg1821, -]); - -var msg1822 = msg("951", dup265); - -var msg1823 = msg("951:01", dup266); - -var select851 = linear_select([ - msg1822, - msg1823, -]); - -var msg1824 = msg("952", dup265); - -var msg1825 = msg("952:01", dup266); - -var select852 = linear_select([ - msg1824, - msg1825, -]); - -var msg1826 = msg("953", dup265); - -var msg1827 = msg("953:01", dup217); - -var select853 = linear_select([ - msg1826, - msg1827, -]); - -var msg1828 = msg("954", dup265); - -var msg1829 = msg("954:01", dup266); - -var select854 = linear_select([ - msg1828, - msg1829, -]); - -var msg1830 = msg("955", dup265); - -var msg1831 = msg("955:01", dup266); - -var select855 = linear_select([ - msg1830, - msg1831, -]); - -var msg1832 = msg("956", dup265); - -var msg1833 = msg("956:01", dup266); - -var select856 = linear_select([ - msg1832, - msg1833, -]); - -var msg1834 = msg("957", dup265); - -var msg1835 = msg("957:01", dup266); - -var select857 = linear_select([ - msg1834, - msg1835, -]); - -var msg1836 = msg("958", dup265); - -var msg1837 = msg("958:01", dup266); - -var select858 = linear_select([ - msg1836, - msg1837, -]); - -var msg1838 = msg("959", dup196); - -var msg1839 = msg("959:01", dup217); - -var select859 = linear_select([ - msg1838, - msg1839, -]); - -var msg1840 = msg("960", dup265); - -var msg1841 = msg("960:01", dup266); - -var select860 = linear_select([ - msg1840, - msg1841, -]); - -var msg1842 = msg("961", dup265); - -var msg1843 = msg("961:01", dup266); - -var select861 = linear_select([ - msg1842, - msg1843, -]); - -var msg1844 = msg("962", dup265); - -var msg1845 = msg("962:01", dup217); - -var select862 = linear_select([ - msg1844, - msg1845, -]); - -var msg1846 = msg("963", dup265); - -var msg1847 = msg("963:01", dup266); - -var select863 = linear_select([ - msg1846, - msg1847, -]); - -var msg1848 = msg("964", dup265); - -var msg1849 = msg("964:01", dup266); - -var select864 = linear_select([ - msg1848, - msg1849, -]); - -var msg1850 = msg("965", dup265); - -var msg1851 = msg("965:01", dup266); - -var select865 = linear_select([ - msg1850, - msg1851, -]); - -var msg1852 = msg("966", dup265); - -var msg1853 = msg("966:01", dup266); - -var select866 = linear_select([ - msg1852, - msg1853, -]); - -var msg1854 = msg("967", dup265); - -var msg1855 = msg("967:01", dup266); - -var select867 = linear_select([ - msg1854, - msg1855, -]); - -var msg1856 = msg("968", dup265); - -var msg1857 = msg("968:01", dup266); - -var select868 = linear_select([ - msg1856, - msg1857, -]); - -var msg1858 = msg("969", dup265); - -var msg1859 = msg("969:01", dup266); - -var select869 = linear_select([ - msg1858, - msg1859, -]); - -var msg1860 = msg("970", dup265); - -var msg1861 = msg("970:01", dup266); - -var select870 = linear_select([ - msg1860, - msg1861, -]); - -var msg1862 = msg("971", dup265); - -var msg1863 = msg("971:01", dup266); - -var select871 = linear_select([ - msg1862, - msg1863, -]); - -var msg1864 = msg("972", dup265); - -var msg1865 = msg("972:01", dup266); - -var select872 = linear_select([ - msg1864, - msg1865, -]); - -var msg1866 = msg("973", dup265); - -var msg1867 = msg("973:01", dup266); - -var select873 = linear_select([ - msg1866, - msg1867, -]); - -var msg1868 = msg("974", dup265); - -var msg1869 = msg("974:01", dup266); - -var select874 = linear_select([ - msg1868, - msg1869, -]); - -var msg1870 = msg("975", dup265); - -var msg1871 = msg("975:01", dup266); - -var select875 = linear_select([ - msg1870, - msg1871, -]); - -var msg1872 = msg("976", dup265); - -var msg1873 = msg("976:01", dup266); - -var select876 = linear_select([ - msg1872, - msg1873, -]); - -var msg1874 = msg("977", dup265); - -var msg1875 = msg("977:01", dup266); - -var select877 = linear_select([ - msg1874, - msg1875, -]); - -var msg1876 = msg("978", dup196); - -var msg1877 = msg("978:01", dup217); - -var select878 = linear_select([ - msg1876, - msg1877, -]); - -var msg1878 = msg("979", dup196); - -var msg1879 = msg("979:01", dup217); - -var select879 = linear_select([ - msg1878, - msg1879, -]); - -var msg1880 = msg("980", dup265); - -var msg1881 = msg("980:01", dup266); - -var select880 = linear_select([ - msg1880, - msg1881, -]); - -var msg1882 = msg("981", dup265); - -var msg1883 = msg("981:01", dup266); - -var select881 = linear_select([ - msg1882, - msg1883, -]); - -var msg1884 = msg("982", dup265); - -var msg1885 = msg("982:01", dup266); - -var select882 = linear_select([ - msg1884, - msg1885, -]); - -var msg1886 = msg("983", dup265); - -var msg1887 = msg("983:01", dup266); - -var select883 = linear_select([ - msg1886, - msg1887, -]); - -var msg1888 = msg("984", dup265); - -var msg1889 = msg("984:01", dup266); - -var select884 = linear_select([ - msg1888, - msg1889, -]); - -var msg1890 = msg("985", dup265); - -var msg1891 = msg("985:01", dup266); - -var select885 = linear_select([ - msg1890, - msg1891, -]); - -var msg1892 = msg("986", dup265); - -var msg1893 = msg("986:01", dup266); - -var select886 = linear_select([ - msg1892, - msg1893, -]); - -var msg1894 = msg("987", dup265); - -var msg1895 = msg("987:01", dup266); - -var select887 = linear_select([ - msg1894, - msg1895, -]); - -var msg1896 = msg("988", dup265); - -var msg1897 = msg("988:01", dup266); - -var select888 = linear_select([ - msg1896, - msg1897, -]); - -var msg1898 = msg("989", dup192); - -var msg1899 = msg("989:01", dup262); - -var select889 = linear_select([ - msg1898, - msg1899, -]); - -var msg1900 = msg("990", dup265); - -var msg1901 = msg("990:01", dup266); - -var select890 = linear_select([ - msg1900, - msg1901, -]); - -var msg1902 = msg("991", dup265); - -var msg1903 = msg("991:01", dup266); - -var select891 = linear_select([ - msg1902, - msg1903, -]); - -var msg1904 = msg("992", dup265); - -var msg1905 = msg("992:01", dup266); - -var select892 = linear_select([ - msg1904, - msg1905, -]); - -var msg1906 = msg("993", dup265); - -var msg1907 = msg("993:01", dup266); - -var select893 = linear_select([ - msg1906, - msg1907, -]); - -var msg1908 = msg("994", dup265); - -var msg1909 = msg("994:01", dup266); - -var select894 = linear_select([ - msg1908, - msg1909, -]); - -var msg1910 = msg("995", dup265); - -var msg1911 = msg("995:01", dup266); - -var select895 = linear_select([ - msg1910, - msg1911, -]); - -var msg1912 = msg("996", dup265); - -var msg1913 = msg("996:01", dup266); - -var select896 = linear_select([ - msg1912, - msg1913, -]); - -var msg1914 = msg("997", dup265); - -var msg1915 = msg("997:01", dup266); - -var select897 = linear_select([ - msg1914, - msg1915, -]); - -var msg1916 = msg("998", dup265); - -var msg1917 = msg("998:01", dup266); - -var select898 = linear_select([ - msg1916, - msg1917, -]); - -var msg1918 = msg("999", dup265); - -var msg1919 = msg("999:01", dup266); - -var select899 = linear_select([ - msg1918, - msg1919, -]); - -var msg1920 = msg("1000", dup265); - -var msg1921 = msg("1000:01", dup266); - -var select900 = linear_select([ - msg1920, - msg1921, -]); - -var msg1922 = msg("1001", dup265); - -var msg1923 = msg("1001:01", dup266); - -var select901 = linear_select([ - msg1922, - msg1923, -]); - -var msg1924 = msg("1002", dup265); - -var msg1925 = msg("1002:01", dup266); - -var select902 = linear_select([ - msg1924, - msg1925, -]); - -var msg1926 = msg("1003", dup265); - -var msg1927 = msg("1003:01", dup266); - -var select903 = linear_select([ - msg1926, - msg1927, -]); - -var msg1928 = msg("1004", dup265); - -var msg1929 = msg("1004:01", dup266); - -var select904 = linear_select([ - msg1928, - msg1929, -]); - -var msg1930 = msg("1005", dup265); - -var msg1931 = msg("1005:01", dup266); - -var select905 = linear_select([ - msg1930, - msg1931, -]); - -var msg1932 = msg("1007", dup265); - -var msg1933 = msg("1007:01", dup266); - -var select906 = linear_select([ - msg1932, - msg1933, -]); - -var msg1934 = msg("1008", dup265); - -var msg1935 = msg("1008:01", dup266); - -var select907 = linear_select([ - msg1934, - msg1935, -]); - -var msg1936 = msg("1009", dup196); - -var msg1937 = msg("1009:01", dup217); - -var select908 = linear_select([ - msg1936, - msg1937, -]); - -var msg1938 = msg("1010", dup265); - -var msg1939 = msg("1010:01", dup266); - -var select909 = linear_select([ - msg1938, - msg1939, -]); - -var msg1940 = msg("1011", dup267); - -var msg1941 = msg("1011:01", dup268); - -var select910 = linear_select([ - msg1940, - msg1941, -]); - -var msg1942 = msg("1012", dup265); - -var msg1943 = msg("1012:01", dup266); - -var select911 = linear_select([ - msg1942, - msg1943, -]); - -var msg1944 = msg("1013", dup265); - -var msg1945 = msg("1013:01", dup266); - -var select912 = linear_select([ - msg1944, - msg1945, -]); - -var msg1946 = msg("1014", dup267); - -var msg1947 = msg("1014:01", dup268); - -var select913 = linear_select([ - msg1946, - msg1947, -]); - -var msg1948 = msg("1015", dup265); - -var msg1949 = msg("1015:01", dup266); - -var select914 = linear_select([ - msg1948, - msg1949, -]); - -var msg1950 = msg("1016", dup265); - -var msg1951 = msg("1016:01", dup266); - -var select915 = linear_select([ - msg1950, - msg1951, -]); - -var msg1952 = msg("1017", dup265); - -var msg1953 = msg("1017:01", dup266); - -var select916 = linear_select([ - msg1952, - msg1953, -]); - -var msg1954 = msg("1018", dup265); - -var msg1955 = msg("1018:01", dup266); - -var select917 = linear_select([ - msg1954, - msg1955, -]); - -var msg1956 = msg("1019", dup265); - -var msg1957 = msg("1019:01", dup266); - -var select918 = linear_select([ - msg1956, - msg1957, -]); - -var msg1958 = msg("1020", dup265); - -var msg1959 = msg("1020:01", dup266); - -var select919 = linear_select([ - msg1958, - msg1959, -]); - -var msg1960 = msg("1021", dup265); - -var msg1961 = msg("1021:01", dup266); - -var select920 = linear_select([ - msg1960, - msg1961, -]); - -var msg1962 = msg("1022", dup265); - -var msg1963 = msg("1022:01", dup266); - -var select921 = linear_select([ - msg1962, - msg1963, -]); - -var msg1964 = msg("1023", dup265); - -var msg1965 = msg("1023:01", dup266); - -var select922 = linear_select([ - msg1964, - msg1965, -]); - -var msg1966 = msg("1024", dup265); - -var msg1967 = msg("1024:01", dup266); - -var select923 = linear_select([ - msg1966, - msg1967, -]); - -var msg1968 = msg("1025", dup265); - -var msg1969 = msg("1025:01", dup266); - -var select924 = linear_select([ - msg1968, - msg1969, -]); - -var msg1970 = msg("1026", dup265); - -var msg1971 = msg("1026:01", dup266); - -var select925 = linear_select([ - msg1970, - msg1971, -]); - -var msg1972 = msg("1027", dup265); - -var msg1973 = msg("1027:01", dup266); - -var select926 = linear_select([ - msg1972, - msg1973, -]); - -var msg1974 = msg("1028", dup265); - -var msg1975 = msg("1028:01", dup266); - -var select927 = linear_select([ - msg1974, - msg1975, -]); - -var msg1976 = msg("1029", dup265); - -var msg1977 = msg("1029:01", dup266); - -var select928 = linear_select([ - msg1976, - msg1977, -]); - -var msg1978 = msg("1030", dup265); - -var msg1979 = msg("1030:01", dup266); - -var select929 = linear_select([ - msg1978, - msg1979, -]); - -var msg1980 = msg("1031", dup265); - -var msg1981 = msg("1031:01", dup266); - -var select930 = linear_select([ - msg1980, - msg1981, -]); - -var msg1982 = msg("1032", dup265); - -var msg1983 = msg("1032:01", dup266); - -var select931 = linear_select([ - msg1982, - msg1983, -]); - -var msg1984 = msg("1033", dup265); - -var msg1985 = msg("1033:01", dup266); - -var select932 = linear_select([ - msg1984, - msg1985, -]); - -var msg1986 = msg("1034", dup265); - -var msg1987 = msg("1034:01", dup266); - -var select933 = linear_select([ - msg1986, - msg1987, -]); - -var msg1988 = msg("1035", dup265); - -var msg1989 = msg("1035:01", dup266); - -var select934 = linear_select([ - msg1988, - msg1989, -]); - -var msg1990 = msg("1036", dup265); - -var msg1991 = msg("1036:01", dup266); - -var select935 = linear_select([ - msg1990, - msg1991, -]); - -var msg1992 = msg("1037", dup265); - -var msg1993 = msg("1037:01", dup266); - -var select936 = linear_select([ - msg1992, - msg1993, -]); - -var msg1994 = msg("1038", dup265); - -var msg1995 = msg("1038:01", dup266); - -var select937 = linear_select([ - msg1994, - msg1995, -]); - -var msg1996 = msg("1039", dup265); - -var msg1997 = msg("1039:01", dup266); - -var select938 = linear_select([ - msg1996, - msg1997, -]); - -var msg1998 = msg("1040", dup265); - -var msg1999 = msg("1040:01", dup266); - -var select939 = linear_select([ - msg1998, - msg1999, -]); - -var msg2000 = msg("1041", dup265); - -var msg2001 = msg("1041:01", dup266); - -var select940 = linear_select([ - msg2000, - msg2001, -]); - -var msg2002 = msg("1042", dup196); - -var msg2003 = msg("1042:01", dup217); - -var select941 = linear_select([ - msg2002, - msg2003, -]); - -var msg2004 = msg("1043", dup265); - -var msg2005 = msg("1043:01", dup266); - -var select942 = linear_select([ - msg2004, - msg2005, -]); - -var msg2006 = msg("1044", dup265); - -var msg2007 = msg("1044:01", dup266); - -var select943 = linear_select([ - msg2006, - msg2007, -]); - -var msg2008 = msg("1045", dup273); - -var all38 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup90, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg2009 = msg("1045:01", all38); - -var select944 = linear_select([ - msg2008, - msg2009, -]); - -var msg2010 = msg("1046", dup265); - -var msg2011 = msg("1046:01", dup266); - -var select945 = linear_select([ - msg2010, - msg2011, -]); - -var msg2012 = msg("1047", dup198); - -var msg2013 = msg("1047:01", dup220); - -var select946 = linear_select([ - msg2012, - msg2013, -]); - -var msg2014 = msg("1048", dup265); - -var msg2015 = msg("1048:01", dup266); - -var select947 = linear_select([ - msg2014, - msg2015, -]); - -var msg2016 = msg("1049", dup198); - -var msg2017 = msg("1049:01", dup220); - -var select948 = linear_select([ - msg2016, - msg2017, -]); - -var msg2018 = msg("1050", dup265); - -var msg2019 = msg("1050:01", dup266); - -var select949 = linear_select([ - msg2018, - msg2019, -]); - -var msg2020 = msg("1051", dup265); - -var msg2021 = msg("1051:01", dup266); - -var select950 = linear_select([ - msg2020, - msg2021, -]); - -var msg2022 = msg("1052", dup265); - -var msg2023 = msg("1052:01", dup266); - -var select951 = linear_select([ - msg2022, - msg2023, -]); - -var msg2024 = msg("1053", dup267); - -var msg2025 = msg("1053:01", dup268); - -var select952 = linear_select([ - msg2024, - msg2025, -]); - -var msg2026 = msg("1054", dup265); - -var msg2027 = msg("1054:01", dup266); - -var select953 = linear_select([ - msg2026, - msg2027, -]); - -var msg2028 = msg("1055", dup265); - -var msg2029 = msg("1055:01", dup266); - -var select954 = linear_select([ - msg2028, - msg2029, -]); - -var msg2030 = msg("1056", dup265); - -var msg2031 = msg("1056:01", dup266); - -var select955 = linear_select([ - msg2030, - msg2031, -]); - -var msg2032 = msg("1057", dup265); - -var msg2033 = msg("1057:01", dup266); - -var select956 = linear_select([ - msg2032, - msg2033, -]); - -var msg2034 = msg("1058", dup265); - -var msg2035 = msg("1058:01", dup266); - -var select957 = linear_select([ - msg2034, - msg2035, -]); - -var msg2036 = msg("1059", dup265); - -var msg2037 = msg("1059:01", dup266); - -var select958 = linear_select([ - msg2036, - msg2037, -]); - -var msg2038 = msg("1060", dup265); - -var msg2039 = msg("1060:01", dup266); - -var select959 = linear_select([ - msg2038, - msg2039, -]); - -var msg2040 = msg("1061", dup265); - -var msg2041 = msg("1061:01", dup266); - -var select960 = linear_select([ - msg2040, - msg2041, -]); - -var msg2042 = msg("1062", dup265); - -var msg2043 = msg("1062:01", dup266); - -var select961 = linear_select([ - msg2042, - msg2043, -]); - -var msg2044 = msg("1063", dup267); - -var msg2045 = msg("1063:01", dup268); - -var select962 = linear_select([ - msg2044, - msg2045, -]); - -var msg2046 = msg("1064", dup265); - -var msg2047 = msg("1064:01", dup266); - -var select963 = linear_select([ - msg2046, - msg2047, -]); - -var msg2048 = msg("1065", dup265); - -var msg2049 = msg("1065:01", dup266); - -var select964 = linear_select([ - msg2048, - msg2049, -]); - -var msg2050 = msg("1066", dup248); - -var msg2051 = msg("1066:01", dup249); - -var select965 = linear_select([ - msg2050, - msg2051, -]); - -var msg2052 = msg("1067", dup265); - -var msg2053 = msg("1067:01", dup266); - -var select966 = linear_select([ - msg2052, - msg2053, -]); - -var msg2054 = msg("1068", dup274); - -var msg2055 = msg("1068:01", dup275); - -var select967 = linear_select([ - msg2054, - msg2055, -]); - -var msg2056 = msg("1069", dup265); - -var msg2057 = msg("1069:01", dup266); - -var select968 = linear_select([ - msg2056, - msg2057, -]); - -var msg2058 = msg("1070", dup265); - -var msg2059 = msg("1070:01", dup266); - -var select969 = linear_select([ - msg2058, - msg2059, -]); - -var msg2060 = msg("1071", dup265); - -var msg2061 = msg("1071:01", dup266); - -var select970 = linear_select([ - msg2060, - msg2061, -]); - -var msg2062 = msg("1072", dup265); - -var msg2063 = msg("1072:01", dup266); - -var select971 = linear_select([ - msg2062, - msg2063, -]); - -var msg2064 = msg("1073", dup265); - -var msg2065 = msg("1073:01", dup266); - -var select972 = linear_select([ - msg2064, - msg2065, -]); - -var msg2066 = msg("1075", dup265); - -var msg2067 = msg("1075:01", dup266); - -var select973 = linear_select([ - msg2066, - msg2067, -]); - -var msg2068 = msg("1076", dup265); - -var msg2069 = msg("1076:01", dup266); - -var select974 = linear_select([ - msg2068, - msg2069, -]); - -var msg2070 = msg("1077", dup265); - -var msg2071 = msg("1077:01", dup266); - -var select975 = linear_select([ - msg2070, - msg2071, -]); - -var msg2072 = msg("1078", dup265); - -var msg2073 = msg("1078:01", dup266); - -var select976 = linear_select([ - msg2072, - msg2073, -]); - -var msg2074 = msg("1079", dup265); - -var msg2075 = msg("1079:01", dup266); - -var select977 = linear_select([ - msg2074, - msg2075, -]); - -var msg2076 = msg("1080", dup267); - -var msg2077 = msg("1080:01", dup268); - -var select978 = linear_select([ - msg2076, - msg2077, -]); - -var msg2078 = msg("1081", dup198); - -var msg2079 = msg("1081:01", dup220); - -var select979 = linear_select([ - msg2078, - msg2079, -]); - -var msg2080 = msg("1082", dup196); - -var msg2081 = msg("1082:01", dup217); - -var select980 = linear_select([ - msg2080, - msg2081, -]); - -var msg2082 = msg("1083", dup198); - -var msg2083 = msg("1083:01", dup220); - -var select981 = linear_select([ - msg2082, - msg2083, -]); - -var msg2084 = msg("1084", dup198); - -var msg2085 = msg("1084:01", dup220); - -var select982 = linear_select([ - msg2084, - msg2085, -]); - -var msg2086 = msg("1085", dup197); - -var msg2087 = msg("1085:01", dup221); - -var select983 = linear_select([ - msg2086, - msg2087, -]); - -var msg2088 = msg("1086", dup197); - -var msg2089 = msg("1086:01", dup221); - -var select984 = linear_select([ - msg2088, - msg2089, -]); - -var msg2090 = msg("1087", dup196); - -var msg2091 = msg("1087:01", dup217); - -var select985 = linear_select([ - msg2090, - msg2091, -]); - -var msg2092 = msg("1088", dup265); - -var msg2093 = msg("1088:01", dup266); - -var select986 = linear_select([ - msg2092, - msg2093, -]); - -var msg2094 = msg("1089", dup265); - -var msg2095 = msg("1089:01", dup266); - -var select987 = linear_select([ - msg2094, - msg2095, -]); - -var msg2096 = msg("1090", dup265); - -var msg2097 = msg("1090:01", dup266); - -var select988 = linear_select([ - msg2096, - msg2097, -]); - -var msg2098 = msg("1091", dup198); - -var msg2099 = msg("1091:01", dup220); - -var select989 = linear_select([ - msg2098, - msg2099, -]); - -var msg2100 = msg("1092", dup265); - -var msg2101 = msg("1092:01", dup266); - -var select990 = linear_select([ - msg2100, - msg2101, -]); - -var msg2102 = msg("1093", dup265); - -var msg2103 = msg("1093:01", dup266); - -var select991 = linear_select([ - msg2102, - msg2103, -]); - -var msg2104 = msg("1094", dup265); - -var msg2105 = msg("1094:01", dup266); - -var select992 = linear_select([ - msg2104, - msg2105, -]); - -var msg2106 = msg("1095", dup265); - -var msg2107 = msg("1095:01", dup266); - -var select993 = linear_select([ - msg2106, - msg2107, -]); - -var msg2108 = msg("1096", dup265); - -var msg2109 = msg("1096:01", dup266); - -var select994 = linear_select([ - msg2108, - msg2109, -]); - -var msg2110 = msg("1097", dup267); - -var msg2111 = msg("1097:01", dup268); - -var select995 = linear_select([ - msg2110, - msg2111, -]); - -var msg2112 = msg("1098", dup265); - -var msg2113 = msg("1098:01", dup266); - -var select996 = linear_select([ - msg2112, - msg2113, -]); - -var msg2114 = msg("1099", dup194); - -var msg2115 = msg("1099:01", dup229); - -var select997 = linear_select([ - msg2114, - msg2115, -]); - -var msg2116 = msg("1100", dup196); - -var msg2117 = msg("1100:01", dup217); - -var select998 = linear_select([ - msg2116, - msg2117, -]); - -var msg2118 = msg("1101", dup196); - -var msg2119 = msg("1101:01", dup217); - -var select999 = linear_select([ - msg2118, - msg2119, -]); - -var msg2120 = msg("1102", dup196); - -var msg2121 = msg("1102:01", dup217); - -var select1000 = linear_select([ - msg2120, - msg2121, -]); - -var msg2122 = msg("1103", dup196); - -var msg2123 = msg("1103:01", dup217); - -var select1001 = linear_select([ - msg2122, - msg2123, -]); - -var msg2124 = msg("1104", dup196); - -var msg2125 = msg("1104:01", dup217); - -var select1002 = linear_select([ - msg2124, - msg2125, -]); - -var msg2126 = msg("1105", dup265); - -var msg2127 = msg("1105:01", dup266); - -var select1003 = linear_select([ - msg2126, - msg2127, -]); - -var msg2128 = msg("1106", dup265); - -var msg2129 = msg("1106:01", dup266); - -var select1004 = linear_select([ - msg2128, - msg2129, -]); - -var msg2130 = msg("1107", dup265); - -var msg2131 = msg("1107:01", dup266); - -var select1005 = linear_select([ - msg2130, - msg2131, -]); - -var msg2132 = msg("1108", dup265); - -var msg2133 = msg("1108:01", dup266); - -var select1006 = linear_select([ - msg2132, - msg2133, -]); - -var msg2134 = msg("1109", dup265); - -var msg2135 = msg("1109:01", dup266); - -var select1007 = linear_select([ - msg2134, - msg2135, -]); - -var msg2136 = msg("1110", dup265); - -var msg2137 = msg("1110:01", dup266); - -var select1008 = linear_select([ - msg2136, - msg2137, -]); - -var msg2138 = msg("1111", dup267); - -var msg2139 = msg("1111:01", dup268); - -var select1009 = linear_select([ - msg2138, - msg2139, -]); - -var msg2140 = msg("1112", dup265); - -var msg2141 = msg("1112:01", dup266); - -var select1010 = linear_select([ - msg2140, - msg2141, -]); - -var msg2142 = msg("1113", dup265); - -var msg2143 = msg("1113:01", dup266); - -var select1011 = linear_select([ - msg2142, - msg2143, -]); - -var msg2144 = msg("1114", dup196); - -var msg2145 = msg("1114:01", dup217); - -var select1012 = linear_select([ - msg2144, - msg2145, -]); - -var msg2146 = msg("1115", dup198); - -var msg2147 = msg("1115:01", dup220); - -var select1013 = linear_select([ - msg2146, - msg2147, -]); - -var msg2148 = msg("1116", dup265); - -var msg2149 = msg("1116:01", dup266); - -var select1014 = linear_select([ - msg2148, - msg2149, -]); - -var msg2150 = msg("1117", dup265); - -var msg2151 = msg("1117:01", dup266); - -var select1015 = linear_select([ - msg2150, - msg2151, -]); - -var msg2152 = msg("1118", dup196); - -var msg2153 = msg("1118:01", dup217); - -var select1016 = linear_select([ - msg2152, - msg2153, -]); - -var msg2154 = msg("1119", dup265); - -var msg2155 = msg("1119:01", dup266); - -var select1017 = linear_select([ - msg2154, - msg2155, -]); - -var msg2156 = msg("1120", dup265); - -var msg2157 = msg("1120:01", dup266); - -var select1018 = linear_select([ - msg2156, - msg2157, -]); - -var msg2158 = msg("1121", dup265); - -var msg2159 = msg("1121:01", dup266); - -var select1019 = linear_select([ - msg2158, - msg2159, -]); - -var msg2160 = msg("1122", dup196); - -var msg2161 = msg("1122:01", dup217); - -var select1020 = linear_select([ - msg2160, - msg2161, -]); - -var msg2162 = msg("1123", dup265); - -var msg2163 = msg("1123:01", dup266); - -var select1021 = linear_select([ - msg2162, - msg2163, -]); - -var msg2164 = msg("1124", dup265); - -var msg2165 = msg("1124:01", dup266); - -var select1022 = linear_select([ - msg2164, - msg2165, -]); - -var msg2166 = msg("1125", dup265); - -var msg2167 = msg("1125:01", dup266); - -var select1023 = linear_select([ - msg2166, - msg2167, -]); - -var msg2168 = msg("1126", dup265); - -var msg2169 = msg("1126:01", dup266); - -var select1024 = linear_select([ - msg2168, - msg2169, -]); - -var msg2170 = msg("1127", dup265); - -var msg2171 = msg("1127:01", dup266); - -var select1025 = linear_select([ - msg2170, - msg2171, -]); - -var msg2172 = msg("1128", dup265); - -var msg2173 = msg("1128:01", dup266); - -var select1026 = linear_select([ - msg2172, - msg2173, -]); - -var msg2174 = msg("1129", dup265); - -var msg2175 = msg("1129:01", dup266); - -var select1027 = linear_select([ - msg2174, - msg2175, -]); - -var msg2176 = msg("1130", dup265); - -var msg2177 = msg("1130:01", dup266); - -var select1028 = linear_select([ - msg2176, - msg2177, -]); - -var msg2178 = msg("1131", dup265); - -var msg2179 = msg("1131:01", dup266); - -var select1029 = linear_select([ - msg2178, - msg2179, -]); - -var msg2180 = msg("1132", dup197); - -var msg2181 = msg("1132:01", dup221); - -var select1030 = linear_select([ - msg2180, - msg2181, -]); - -var msg2182 = msg("1133", dup194); - -var msg2183 = msg("1133:01", dup229); - -var select1031 = linear_select([ - msg2182, - msg2183, -]); - -var msg2184 = msg("1134", dup265); - -var msg2185 = msg("1134:01", dup266); - -var select1032 = linear_select([ - msg2184, - msg2185, -]); - -var msg2186 = msg("1136", dup196); - -var msg2187 = msg("1136:01", dup217); - -var select1033 = linear_select([ - msg2186, - msg2187, -]); - -var msg2188 = msg("1137", dup265); - -var msg2189 = msg("1137:01", dup266); - -var select1034 = linear_select([ - msg2188, - msg2189, -]); - -var msg2190 = msg("1138", dup198); - -var msg2191 = msg("1138:01", dup220); - -var select1035 = linear_select([ - msg2190, - msg2191, -]); - -var msg2192 = msg("1139", dup196); - -var msg2193 = msg("1139:01", dup217); - -var select1036 = linear_select([ - msg2192, - msg2193, -]); - -var msg2194 = msg("1140", dup265); - -var msg2195 = msg("1140:01", dup266); - -var select1037 = linear_select([ - msg2194, - msg2195, -]); - -var msg2196 = msg("1141", dup265); - -var msg2197 = msg("1141:01", dup266); - -var select1038 = linear_select([ - msg2196, - msg2197, -]); - -var msg2198 = msg("1142", dup265); - -var msg2199 = msg("1142:01", dup266); - -var select1039 = linear_select([ - msg2198, - msg2199, -]); - -var msg2200 = msg("1143", dup265); - -var msg2201 = msg("1143:01", dup266); - -var select1040 = linear_select([ - msg2200, - msg2201, -]); - -var msg2202 = msg("1144", dup265); - -var msg2203 = msg("1144:01", dup266); - -var select1041 = linear_select([ - msg2202, - msg2203, -]); - -var msg2204 = msg("1145", dup265); - -var msg2205 = msg("1145:01", dup266); - -var select1042 = linear_select([ - msg2204, - msg2205, -]); - -var msg2206 = msg("1146", dup265); - -var msg2207 = msg("1146:01", dup266); - -var select1043 = linear_select([ - msg2206, - msg2207, -]); - -var msg2208 = msg("1147", dup265); - -var msg2209 = msg("1147:01", dup266); - -var select1044 = linear_select([ - msg2208, - msg2209, -]); - -var msg2210 = msg("1148", dup265); - -var msg2211 = msg("1148:01", dup266); - -var select1045 = linear_select([ - msg2210, - msg2211, -]); - -var msg2212 = msg("1149", dup265); - -var msg2213 = msg("1149:01", dup266); - -var select1046 = linear_select([ - msg2212, - msg2213, -]); - -var msg2214 = msg("1150", dup265); - -var msg2215 = msg("1150:01", dup266); - -var select1047 = linear_select([ - msg2214, - msg2215, -]); - -var msg2216 = msg("1151", dup265); - -var msg2217 = msg("1151:01", dup266); - -var select1048 = linear_select([ - msg2216, - msg2217, -]); - -var msg2218 = msg("1152", dup265); - -var msg2219 = msg("1152:01", dup266); - -var select1049 = linear_select([ - msg2218, - msg2219, -]); - -var msg2220 = msg("1153", dup265); - -var msg2221 = msg("1153:01", dup266); - -var select1050 = linear_select([ - msg2220, - msg2221, -]); - -var msg2222 = msg("1154", dup265); - -var msg2223 = msg("1154:01", dup266); - -var select1051 = linear_select([ - msg2222, - msg2223, -]); - -var msg2224 = msg("1155", dup265); - -var msg2225 = msg("1155:01", dup266); - -var select1052 = linear_select([ - msg2224, - msg2225, -]); - -var msg2226 = msg("1156", dup265); - -var msg2227 = msg("1156:01", dup266); - -var select1053 = linear_select([ - msg2226, - msg2227, -]); - -var msg2228 = msg("1157", dup265); - -var msg2229 = msg("1157:01", dup266); - -var select1054 = linear_select([ - msg2228, - msg2229, -]); - -var msg2230 = msg("1158", dup265); - -var msg2231 = msg("1158:01", dup266); - -var select1055 = linear_select([ - msg2230, - msg2231, -]); - -var msg2232 = msg("1159", dup265); - -var msg2233 = msg("1159:01", dup266); - -var select1056 = linear_select([ - msg2232, - msg2233, -]); - -var msg2234 = msg("1160", dup196); - -var msg2235 = msg("1160:01", dup217); - -var select1057 = linear_select([ - msg2234, - msg2235, -]); - -var msg2236 = msg("1161", dup265); - -var msg2237 = msg("1161:01", dup266); - -var select1058 = linear_select([ - msg2236, - msg2237, -]); - -var msg2238 = msg("1162", dup265); - -var msg2239 = msg("1162:01", dup266); - -var select1059 = linear_select([ - msg2238, - msg2239, -]); - -var msg2240 = msg("1163", dup265); - -var msg2241 = msg("1163:01", dup266); - -var select1060 = linear_select([ - msg2240, - msg2241, -]); - -var msg2242 = msg("1164", dup265); - -var msg2243 = msg("1164:01", dup266); - -var select1061 = linear_select([ - msg2242, - msg2243, -]); - -var msg2244 = msg("1165", dup265); - -var msg2245 = msg("1165:01", dup266); - -var select1062 = linear_select([ - msg2244, - msg2245, -]); - -var msg2246 = msg("1166", dup265); - -var msg2247 = msg("1166:01", dup266); - -var select1063 = linear_select([ - msg2246, - msg2247, -]); - -var msg2248 = msg("1167", dup265); - -var msg2249 = msg("1167:01", dup266); - -var select1064 = linear_select([ - msg2248, - msg2249, -]); - -var msg2250 = msg("1168", dup265); - -var msg2251 = msg("1168:01", dup266); - -var select1065 = linear_select([ - msg2250, - msg2251, -]); - -var msg2252 = msg("1171", dup196); - -var msg2253 = msg("1171:01", dup217); - -var select1066 = linear_select([ - msg2252, - msg2253, -]); - -var msg2254 = msg("1172", dup265); - -var msg2255 = msg("1172:01", dup266); - -var select1067 = linear_select([ - msg2254, - msg2255, -]); - -var msg2256 = msg("1173", dup265); - -var msg2257 = msg("1173:01", dup266); - -var select1068 = linear_select([ - msg2256, - msg2257, -]); - -var msg2258 = msg("1174", dup265); - -var msg2259 = msg("1174:01", dup266); - -var select1069 = linear_select([ - msg2258, - msg2259, -]); - -var msg2260 = msg("1175", dup265); - -var msg2261 = msg("1175:01", dup266); - -var select1070 = linear_select([ - msg2260, - msg2261, -]); - -var msg2262 = msg("1176", dup265); - -var msg2263 = msg("1176:01", dup266); - -var select1071 = linear_select([ - msg2262, - msg2263, -]); - -var msg2264 = msg("1177", dup196); - -var msg2265 = msg("1177:01", dup217); - -var select1072 = linear_select([ - msg2264, - msg2265, -]); - -var msg2266 = msg("1178", dup265); - -var msg2267 = msg("1178:01", dup266); - -var select1073 = linear_select([ - msg2266, - msg2267, -]); - -var msg2268 = msg("1179", dup265); - -var msg2269 = msg("1179:01", dup266); - -var select1074 = linear_select([ - msg2268, - msg2269, -]); - -var msg2270 = msg("1180", dup265); - -var msg2271 = msg("1180:01", dup266); - -var select1075 = linear_select([ - msg2270, - msg2271, -]); - -var msg2272 = msg("1181", dup198); - -var msg2273 = msg("1181:01", dup220); - -var select1076 = linear_select([ - msg2272, - msg2273, -]); - -var msg2274 = msg("1182", dup265); - -var msg2275 = msg("1182:01", dup266); - -var select1077 = linear_select([ - msg2274, - msg2275, -]); - -var msg2276 = msg("1183", dup196); - -var msg2277 = msg("1183:01", dup217); - -var select1078 = linear_select([ - msg2276, - msg2277, -]); - -var msg2278 = msg("1184", dup196); - -var msg2279 = msg("1184:01", dup217); - -var select1079 = linear_select([ - msg2278, - msg2279, -]); - -var msg2280 = msg("1185", dup265); - -var msg2281 = msg("1185:01", dup266); - -var select1080 = linear_select([ - msg2280, - msg2281, -]); - -var msg2282 = msg("1186", dup196); - -var msg2283 = msg("1186:01", dup217); - -var select1081 = linear_select([ - msg2282, - msg2283, -]); - -var msg2284 = msg("1187", dup265); - -var msg2285 = msg("1187:01", dup266); - -var select1082 = linear_select([ - msg2284, - msg2285, -]); - -var msg2286 = msg("1188", dup196); - -var msg2287 = msg("1188:01", dup217); - -var select1083 = linear_select([ - msg2286, - msg2287, -]); - -var msg2288 = msg("1189", dup196); - -var msg2289 = msg("1189:01", dup217); - -var select1084 = linear_select([ - msg2288, - msg2289, -]); - -var msg2290 = msg("1190", dup196); - -var msg2291 = msg("1190:01", dup217); - -var select1085 = linear_select([ - msg2290, - msg2291, -]); - -var msg2292 = msg("1191", dup196); - -var msg2293 = msg("1191:01", dup217); - -var select1086 = linear_select([ - msg2292, - msg2293, -]); - -var msg2294 = msg("1192", dup194); - -var msg2295 = msg("1192:01", dup229); - -var select1087 = linear_select([ - msg2294, - msg2295, -]); - -var msg2296 = msg("1193", dup269); - -var msg2297 = msg("1193:01", dup270); - -var select1088 = linear_select([ - msg2296, - msg2297, -]); - -var msg2298 = msg("1194", dup265); - -var msg2299 = msg("1194:01", dup266); - -var select1089 = linear_select([ - msg2298, - msg2299, -]); - -var msg2300 = msg("1195", dup265); - -var msg2301 = msg("1195:01", dup266); - -var select1090 = linear_select([ - msg2300, - msg2301, -]); - -var msg2302 = msg("1196", dup265); - -var msg2303 = msg("1196:01", dup266); - -var select1091 = linear_select([ - msg2302, - msg2303, -]); - -var msg2304 = msg("1197", dup265); - -var msg2305 = msg("1197:01", dup266); - -var select1092 = linear_select([ - msg2304, - msg2305, -]); - -var msg2306 = msg("1198", dup196); - -var msg2307 = msg("1198:01", dup217); - -var select1093 = linear_select([ - msg2306, - msg2307, -]); - -var msg2308 = msg("1199", dup265); - -var msg2309 = msg("1199:01", dup266); - -var select1094 = linear_select([ - msg2308, - msg2309, -]); - -var msg2310 = msg("1200", dup196); - -var msg2311 = msg("1200:01", dup217); - -var select1095 = linear_select([ - msg2310, - msg2311, -]); - -var msg2312 = msg("1201", dup196); - -var msg2313 = msg("1201:01", dup217); - -var select1096 = linear_select([ - msg2312, - msg2313, -]); - -var msg2314 = msg("1202", dup265); - -var msg2315 = msg("1202:01", dup266); - -var select1097 = linear_select([ - msg2314, - msg2315, -]); - -var msg2316 = msg("1204", dup265); - -var msg2317 = msg("1204:01", dup266); - -var select1098 = linear_select([ - msg2316, - msg2317, -]); - -var msg2318 = msg("1205", dup265); - -var msg2319 = msg("1205:01", dup266); - -var select1099 = linear_select([ - msg2318, - msg2319, -]); - -var msg2320 = msg("1206", dup265); - -var msg2321 = msg("1206:01", dup266); - -var select1100 = linear_select([ - msg2320, - msg2321, -]); - -var msg2322 = msg("1207", dup265); - -var msg2323 = msg("1207:01", dup266); - -var select1101 = linear_select([ - msg2322, - msg2323, -]); - -var msg2324 = msg("1208", dup265); - -var msg2325 = msg("1208:01", dup266); - -var select1102 = linear_select([ - msg2324, - msg2325, -]); - -var msg2326 = msg("1209", dup265); - -var msg2327 = msg("1209:01", dup266); - -var select1103 = linear_select([ - msg2326, - msg2327, -]); - -var msg2328 = msg("1211", dup265); - -var msg2329 = msg("1211:01", dup266); - -var select1104 = linear_select([ - msg2328, - msg2329, -]); - -var msg2330 = msg("1212", dup265); - -var msg2331 = msg("1212:01", dup266); - -var select1105 = linear_select([ - msg2330, - msg2331, -]); - -var msg2332 = msg("1213", dup265); - -var msg2333 = msg("1213:01", dup266); - -var select1106 = linear_select([ - msg2332, - msg2333, -]); - -var msg2334 = msg("1214", dup265); - -var msg2335 = msg("1214:01", dup266); - -var select1107 = linear_select([ - msg2334, - msg2335, -]); - -var msg2336 = msg("1215", dup265); - -var msg2337 = msg("1215:01", dup266); - -var select1108 = linear_select([ - msg2336, - msg2337, -]); - -var msg2338 = msg("1216", dup265); - -var msg2339 = msg("1216:01", dup266); - -var select1109 = linear_select([ - msg2338, - msg2339, -]); - -var msg2340 = msg("1217", dup265); - -var msg2341 = msg("1217:01", dup266); - -var select1110 = linear_select([ - msg2340, - msg2341, -]); - -var msg2342 = msg("1218", dup265); - -var msg2343 = msg("1218:01", dup266); - -var select1111 = linear_select([ - msg2342, - msg2343, -]); - -var msg2344 = msg("1219", dup265); - -var msg2345 = msg("1219:01", dup266); - -var select1112 = linear_select([ - msg2344, - msg2345, -]); - -var msg2346 = msg("1220", dup265); - -var msg2347 = msg("1220:01", dup266); - -var select1113 = linear_select([ - msg2346, - msg2347, -]); - -var msg2348 = msg("1221", dup265); - -var msg2349 = msg("1221:01", dup266); - -var select1114 = linear_select([ - msg2348, - msg2349, -]); - -var msg2350 = msg("1222", dup265); - -var msg2351 = msg("1222:01", dup266); - -var select1115 = linear_select([ - msg2350, - msg2351, -]); - -var msg2352 = msg("1224", dup265); - -var msg2353 = msg("1224:01", dup266); - -var select1116 = linear_select([ - msg2352, - msg2353, -]); - -var msg2354 = msg("1225", dup196); - -var msg2355 = msg("1225:01", dup217); - -var select1117 = linear_select([ - msg2354, - msg2355, -]); - -var msg2356 = msg("1226", dup196); - -var msg2357 = msg("1226:01", dup217); - -var select1118 = linear_select([ - msg2356, - msg2357, -]); - -var msg2358 = msg("1227", dup196); - -var msg2359 = msg("1227:01", dup217); - -var select1119 = linear_select([ - msg2358, - msg2359, -]); - -var msg2360 = msg("1228", dup194); - -var msg2361 = msg("1228:01", dup229); - -var select1120 = linear_select([ - msg2360, - msg2361, -]); - -var msg2362 = msg("1229", dup227); - -var msg2363 = msg("1229:01", dup228); - -var select1121 = linear_select([ - msg2362, - msg2363, -]); - -var msg2364 = msg("1230", dup263); - -var msg2365 = msg("1230:01", dup264); - -var select1122 = linear_select([ - msg2364, - msg2365, -]); - -var msg2366 = msg("1231", dup263); - -var msg2367 = msg("1231:01", dup264); - -var select1123 = linear_select([ - msg2366, - msg2367, -]); - -var msg2368 = msg("1232", dup263); - -var msg2369 = msg("1232:01", dup264); - -var select1124 = linear_select([ - msg2368, - msg2369, -]); - -var msg2370 = msg("1233", dup265); - -var msg2371 = msg("1233:01", dup266); - -var select1125 = linear_select([ - msg2370, - msg2371, -]); - -var msg2372 = msg("1234", dup263); - -var msg2373 = msg("1234:01", dup264); - -var select1126 = linear_select([ - msg2372, - msg2373, -]); - -var msg2374 = msg("1235", dup263); - -var msg2375 = msg("1235:01", dup264); - -var select1127 = linear_select([ - msg2374, - msg2375, -]); - -var msg2376 = msg("1236", dup196); - -var msg2377 = msg("1236:01", dup217); - -var select1128 = linear_select([ - msg2376, - msg2377, -]); - -var msg2378 = msg("1237", dup196); - -var msg2379 = msg("1237:01", dup217); - -var select1129 = linear_select([ - msg2378, - msg2379, -]); - -var msg2380 = msg("1238", dup196); - -var msg2381 = msg("1238:01", dup217); - -var select1130 = linear_select([ - msg2380, - msg2381, -]); - -var msg2382 = msg("1239", dup276); - -var msg2383 = msg("1239:01", dup277); - -var select1131 = linear_select([ - msg2382, - msg2383, -]); - -var msg2384 = msg("1240", dup197); - -var msg2385 = msg("1240:01", dup221); - -var select1132 = linear_select([ - msg2384, - msg2385, -]); - -var msg2386 = msg("1241", dup265); - -var msg2387 = msg("1241:01", dup266); - -var select1133 = linear_select([ - msg2386, - msg2387, -]); - -var msg2388 = msg("1242", dup265); - -var msg2389 = msg("1242:01", dup266); - -var select1134 = linear_select([ - msg2388, - msg2389, -]); - -var msg2390 = msg("1243", dup265); - -var msg2391 = msg("1243:01", dup266); - -var select1135 = linear_select([ - msg2390, - msg2391, -]); - -var msg2392 = msg("1244", dup265); - -var msg2393 = msg("1244:01", dup266); - -var select1136 = linear_select([ - msg2392, - msg2393, -]); - -var msg2394 = msg("1245", dup265); - -var msg2395 = msg("1245:01", dup266); - -var select1137 = linear_select([ - msg2394, - msg2395, -]); - -var msg2396 = msg("1246", dup267); - -var msg2397 = msg("1246:01", dup268); - -var select1138 = linear_select([ - msg2396, - msg2397, -]); - -var msg2398 = msg("1247", dup267); - -var msg2399 = msg("1247:01", dup268); - -var select1139 = linear_select([ - msg2398, - msg2399, -]); - -var msg2400 = msg("1248", dup265); - -var msg2401 = msg("1248:01", dup266); - -var select1140 = linear_select([ - msg2400, - msg2401, -]); - -var msg2402 = msg("1249", dup265); - -var msg2403 = msg("1249:01", dup266); - -var select1141 = linear_select([ - msg2402, - msg2403, -]); - -var msg2404 = msg("1250", dup265); - -var msg2405 = msg("1250:01", dup266); - -var select1142 = linear_select([ - msg2404, - msg2405, -]); - -var msg2406 = msg("1251", dup196); - -var msg2407 = msg("1251:01", dup217); - -var select1143 = linear_select([ - msg2406, - msg2407, -]); - -var msg2408 = msg("1252", dup278); - -var msg2409 = msg("1252:01", dup279); - -var select1144 = linear_select([ - msg2408, - msg2409, -]); - -var msg2410 = msg("1253", dup278); - -var msg2411 = msg("1253:01", dup279); - -var select1145 = linear_select([ - msg2410, - msg2411, -]); - -var msg2412 = msg("1254", dup265); - -var msg2413 = msg("1254:01", dup266); - -var select1146 = linear_select([ - msg2412, - msg2413, -]); - -var msg2414 = msg("1255", dup265); - -var msg2415 = msg("1255:01", dup266); - -var select1147 = linear_select([ - msg2414, - msg2415, -]); - -var msg2416 = msg("1256", dup265); - -var msg2417 = msg("1256:01", dup266); - -var select1148 = linear_select([ - msg2416, - msg2417, -]); - -var msg2418 = msg("1257", dup198); - -var msg2419 = msg("1257:01", dup220); - -var select1149 = linear_select([ - msg2418, - msg2419, -]); - -var msg2420 = msg("1258", dup198); - -var msg2421 = msg("1258:01", dup220); - -var select1150 = linear_select([ - msg2420, - msg2421, -]); - -var msg2422 = msg("1259", dup265); - -var msg2423 = msg("1259:01", dup266); - -var select1151 = linear_select([ - msg2422, - msg2423, -]); - -var msg2424 = msg("1260", dup196); - -var msg2425 = msg("1260:01", dup217); - -var select1152 = linear_select([ - msg2424, - msg2425, -]); - -var msg2426 = msg("1261", dup197); - -var msg2427 = msg("1261:01", dup221); - -var select1153 = linear_select([ - msg2426, - msg2427, -]); - -var msg2428 = msg("1262", dup258); - -var msg2429 = msg("1262:01", dup259); - -var select1154 = linear_select([ - msg2428, - msg2429, -]); - -var msg2430 = msg("1263", dup258); - -var msg2431 = msg("1263:01", dup259); - -var select1155 = linear_select([ - msg2430, - msg2431, -]); - -var msg2432 = msg("1264", dup258); - -var msg2433 = msg("1264:01", dup259); - -var select1156 = linear_select([ - msg2432, - msg2433, -]); - -var msg2434 = msg("1265", dup258); - -var msg2435 = msg("1265:01", dup259); - -var select1157 = linear_select([ - msg2434, - msg2435, -]); - -var msg2436 = msg("1266", dup258); - -var msg2437 = msg("1266:01", dup259); - -var select1158 = linear_select([ - msg2436, - msg2437, -]); - -var msg2438 = msg("1267", dup258); - -var msg2439 = msg("1267:01", dup259); - -var select1159 = linear_select([ - msg2438, - msg2439, -]); - -var msg2440 = msg("1268", dup280); - -var all39 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup98, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg2441 = msg("1268:01", all39); - -var select1160 = linear_select([ - msg2440, - msg2441, -]); - -var msg2442 = msg("1269", dup258); - -var msg2443 = msg("1269:01", dup259); - -var select1161 = linear_select([ - msg2442, - msg2443, -]); - -var msg2444 = msg("1270", dup258); - -var msg2445 = msg("1270:01", dup259); - -var select1162 = linear_select([ - msg2444, - msg2445, -]); - -var msg2446 = msg("1271", dup258); - -var msg2447 = msg("1271:01", dup259); - -var select1163 = linear_select([ - msg2446, - msg2447, -]); - -var msg2448 = msg("1272", dup258); - -var msg2449 = msg("1272:01", dup259); - -var select1164 = linear_select([ - msg2448, - msg2449, -]); - -var msg2450 = msg("1273", dup258); - -var msg2451 = msg("1273:01", dup259); - -var select1165 = linear_select([ - msg2450, - msg2451, -]); - -var msg2452 = msg("1274", dup258); - -var msg2453 = msg("1274:01", dup259); - -var select1166 = linear_select([ - msg2452, - msg2453, -]); - -var msg2454 = msg("1275", dup258); - -var msg2455 = msg("1275:01", dup259); - -var select1167 = linear_select([ - msg2454, - msg2455, -]); - -var msg2456 = msg("1276", dup258); - -var msg2457 = msg("1276:01", dup259); - -var select1168 = linear_select([ - msg2456, - msg2457, -]); - -var msg2458 = msg("1277", dup255); - -var msg2459 = msg("1277:01", dup256); - -var select1169 = linear_select([ - msg2458, - msg2459, -]); - -var msg2460 = msg("1278", dup255); - -var msg2461 = msg("1278:01", dup256); - -var select1170 = linear_select([ - msg2460, - msg2461, -]); - -var msg2462 = msg("1279", dup255); - -var msg2463 = msg("1279:01", dup256); - -var select1171 = linear_select([ - msg2462, - msg2463, -]); - -var msg2464 = msg("1280", dup255); - -var msg2465 = msg("1280:01", dup256); - -var select1172 = linear_select([ - msg2464, - msg2465, -]); - -var msg2466 = msg("1281", dup255); - -var msg2467 = msg("1281:01", dup256); - -var select1173 = linear_select([ - msg2466, - msg2467, -]); - -var msg2468 = msg("1282", dup255); - -var msg2469 = msg("1282:01", dup256); - -var select1174 = linear_select([ - msg2468, - msg2469, -]); - -var msg2470 = msg("1283", dup198); - -var msg2471 = msg("1283:01", dup220); - -var select1175 = linear_select([ - msg2470, - msg2471, -]); - -var msg2472 = msg("1284", dup265); - -var msg2473 = msg("1284:01", dup266); - -var select1176 = linear_select([ - msg2472, - msg2473, -]); - -var msg2474 = msg("1285", dup265); - -var msg2475 = msg("1285:01", dup266); - -var select1177 = linear_select([ - msg2474, - msg2475, -]); - -var msg2476 = msg("1286", dup265); - -var msg2477 = msg("1286:01", dup266); - -var select1178 = linear_select([ - msg2476, - msg2477, -]); - -var msg2478 = msg("1287", dup265); - -var msg2479 = msg("1287:01", dup266); - -var select1179 = linear_select([ - msg2478, - msg2479, -]); - -var msg2480 = msg("1288", dup265); - -var msg2481 = msg("1288:01", dup266); - -var select1180 = linear_select([ - msg2480, - msg2481, -]); - -var msg2482 = msg("1289", dup196); - -var msg2483 = msg("1289:01", dup217); - -var select1181 = linear_select([ - msg2482, - msg2483, -]); - -var msg2484 = msg("1290", dup265); - -var msg2485 = msg("1290:01", dup266); - -var select1182 = linear_select([ - msg2484, - msg2485, -]); - -var msg2486 = msg("1291", dup265); - -var msg2487 = msg("1291:01", dup266); - -var select1183 = linear_select([ - msg2486, - msg2487, -]); - -var msg2488 = msg("1292", dup196); - -var msg2489 = msg("1292:01", dup217); - -var select1184 = linear_select([ - msg2488, - msg2489, -]); - -var msg2490 = msg("1293", dup196); - -var msg2491 = msg("1293:01", dup217); - -var select1185 = linear_select([ - msg2490, - msg2491, -]); - -var msg2492 = msg("1294", dup196); - -var msg2493 = msg("1294:01", dup217); - -var select1186 = linear_select([ - msg2492, - msg2493, -]); - -var msg2494 = msg("1295", dup196); - -var msg2495 = msg("1295:01", dup217); - -var select1187 = linear_select([ - msg2494, - msg2495, -]); - -var msg2496 = msg("1296", dup255); - -var msg2497 = msg("1296:01", dup256); - -var select1188 = linear_select([ - msg2496, - msg2497, -]); - -var msg2498 = msg("1297", dup255); - -var msg2499 = msg("1297:01", dup256); - -var select1189 = linear_select([ - msg2498, - msg2499, -]); - -var msg2500 = msg("1298", dup255); - -var msg2501 = msg("1298:01", dup256); - -var select1190 = linear_select([ - msg2500, - msg2501, -]); - -var msg2502 = msg("1299", dup255); - -var msg2503 = msg("1299:01", dup256); - -var select1191 = linear_select([ - msg2502, - msg2503, -]); - -var msg2504 = msg("1300", dup265); - -var msg2505 = msg("1300:01", dup266); - -var select1192 = linear_select([ - msg2504, - msg2505, -]); - -var msg2506 = msg("1301", dup265); - -var msg2507 = msg("1301:01", dup266); - -var select1193 = linear_select([ - msg2506, - msg2507, -]); - -var msg2508 = msg("1302", dup265); - -var msg2509 = msg("1302:01", dup266); - -var select1194 = linear_select([ - msg2508, - msg2509, -]); - -var msg2510 = msg("1303", dup265); - -var msg2511 = msg("1303:01", dup266); - -var select1195 = linear_select([ - msg2510, - msg2511, -]); - -var msg2512 = msg("1304", dup265); - -var msg2513 = msg("1304:01", dup266); - -var select1196 = linear_select([ - msg2512, - msg2513, -]); - -var msg2514 = msg("1305", dup265); - -var msg2515 = msg("1305:01", dup266); - -var select1197 = linear_select([ - msg2514, - msg2515, -]); - -var msg2516 = msg("1306", dup265); - -var msg2517 = msg("1306:01", dup266); - -var select1198 = linear_select([ - msg2516, - msg2517, -]); - -var msg2518 = msg("1307", dup265); - -var msg2519 = msg("1307:01", dup266); - -var select1199 = linear_select([ - msg2518, - msg2519, -]); - -var msg2520 = msg("1308", dup265); - -var msg2521 = msg("1308:01", dup266); - -var select1200 = linear_select([ - msg2520, - msg2521, -]); - -var msg2522 = msg("1309", dup265); - -var msg2523 = msg("1309:01", dup266); - -var select1201 = linear_select([ - msg2522, - msg2523, -]); - -var msg2524 = msg("1310", dup281); - -var msg2525 = msg("1310:01", dup282); - -var select1202 = linear_select([ - msg2524, - msg2525, -]); - -var msg2526 = msg("1311", dup281); - -var msg2527 = msg("1311:01", dup282); - -var select1203 = linear_select([ - msg2526, - msg2527, -]); - -var msg2528 = msg("1312", dup281); - -var msg2529 = msg("1312:01", dup282); - -var select1204 = linear_select([ - msg2528, - msg2529, -]); - -var msg2530 = msg("1313", dup281); - -var msg2531 = msg("1313:01", dup282); - -var select1205 = linear_select([ - msg2530, - msg2531, -]); - -var msg2532 = msg("1314", dup281); - -var msg2533 = msg("1314:01", dup282); - -var select1206 = linear_select([ - msg2532, - msg2533, -]); - -var msg2534 = msg("1315", dup281); - -var msg2535 = msg("1315:01", dup282); - -var select1207 = linear_select([ - msg2534, - msg2535, -]); - -var msg2536 = msg("1316", dup281); - -var msg2537 = msg("1316:01", dup282); - -var select1208 = linear_select([ - msg2536, - msg2537, -]); - -var msg2538 = msg("1317", dup281); - -var msg2539 = msg("1317:01", dup282); - -var select1209 = linear_select([ - msg2538, - msg2539, -]); - -var msg2540 = msg("1318", dup281); - -var msg2541 = msg("1318:01", dup282); - -var select1210 = linear_select([ - msg2540, - msg2541, -]); - -var msg2542 = msg("1319", dup281); - -var msg2543 = msg("1319:01", dup282); - -var select1211 = linear_select([ - msg2542, - msg2543, -]); - -var msg2544 = msg("1320", dup281); - -var msg2545 = msg("1320:01", dup282); - -var select1212 = linear_select([ - msg2544, - msg2545, -]); - -var msg2546 = msg("1321", dup196); - -var msg2547 = msg("1321:01", dup217); - -var select1213 = linear_select([ - msg2546, - msg2547, -]); - -var msg2548 = msg("1322", dup196); - -var msg2549 = msg("1322:01", dup217); - -var select1214 = linear_select([ - msg2548, - msg2549, -]); - -var msg2550 = msg("1323", dup196); - -var msg2551 = msg("1323:01", dup217); - -var select1215 = linear_select([ - msg2550, - msg2551, -]); - -var msg2552 = msg("1324", dup197); - -var msg2553 = msg("1324:01", dup221); - -var select1216 = linear_select([ - msg2552, - msg2553, -]); - -var msg2554 = msg("1325", dup197); - -var msg2555 = msg("1325:01", dup221); - -var select1217 = linear_select([ - msg2554, - msg2555, -]); - -var msg2556 = msg("1326", dup197); - -var msg2557 = msg("1326:01", dup221); - -var select1218 = linear_select([ - msg2556, - msg2557, -]); - -var msg2558 = msg("1327", dup197); - -var msg2559 = msg("1327:01", dup221); - -var select1219 = linear_select([ - msg2558, - msg2559, -]); - -var msg2560 = msg("1328", dup265); - -var msg2561 = msg("1328:01", dup266); - -var select1220 = linear_select([ - msg2560, - msg2561, -]); - -var msg2562 = msg("1329", dup265); - -var msg2563 = msg("1329:01", dup266); - -var select1221 = linear_select([ - msg2562, - msg2563, -]); - -var msg2564 = msg("1330", dup265); - -var msg2565 = msg("1330:01", dup266); - -var select1222 = linear_select([ - msg2564, - msg2565, -]); - -var msg2566 = msg("1331", dup265); - -var msg2567 = msg("1331:01", dup266); - -var select1223 = linear_select([ - msg2566, - msg2567, -]); - -var msg2568 = msg("1332", dup265); - -var msg2569 = msg("1332:01", dup266); - -var select1224 = linear_select([ - msg2568, - msg2569, -]); - -var msg2570 = msg("1333", dup265); - -var msg2571 = msg("1333:01", dup266); - -var select1225 = linear_select([ - msg2570, - msg2571, -]); - -var msg2572 = msg("1334", dup265); - -var msg2573 = msg("1334:01", dup266); - -var select1226 = linear_select([ - msg2572, - msg2573, -]); - -var msg2574 = msg("1335", dup265); - -var msg2575 = msg("1335:01", dup266); - -var select1227 = linear_select([ - msg2574, - msg2575, -]); - -var msg2576 = msg("1336", dup265); - -var msg2577 = msg("1336:01", dup266); - -var select1228 = linear_select([ - msg2576, - msg2577, -]); - -var msg2578 = msg("1337", dup265); - -var msg2579 = msg("1337:01", dup266); - -var select1229 = linear_select([ - msg2578, - msg2579, -]); - -var msg2580 = msg("1338", dup265); - -var msg2581 = msg("1338:01", dup266); - -var select1230 = linear_select([ - msg2580, - msg2581, -]); - -var msg2582 = msg("1339", dup265); - -var msg2583 = msg("1339:01", dup266); - -var select1231 = linear_select([ - msg2582, - msg2583, -]); - -var msg2584 = msg("1340", dup274); - -var msg2585 = msg("1340:01", dup275); - -var select1232 = linear_select([ - msg2584, - msg2585, -]); - -var msg2586 = msg("1341", dup265); - -var msg2587 = msg("1341:01", dup266); - -var select1233 = linear_select([ - msg2586, - msg2587, -]); - -var msg2588 = msg("1342", dup265); - -var msg2589 = msg("1342:01", dup266); - -var select1234 = linear_select([ - msg2588, - msg2589, -]); - -var msg2590 = msg("1343", dup265); - -var msg2591 = msg("1343:01", dup266); - -var select1235 = linear_select([ - msg2590, - msg2591, -]); - -var msg2592 = msg("1344", dup265); - -var msg2593 = msg("1344:01", dup266); - -var select1236 = linear_select([ - msg2592, - msg2593, -]); - -var msg2594 = msg("1345", dup265); - -var msg2595 = msg("1345:01", dup266); - -var select1237 = linear_select([ - msg2594, - msg2595, -]); - -var msg2596 = msg("1346", dup265); - -var msg2597 = msg("1346:01", dup266); - -var select1238 = linear_select([ - msg2596, - msg2597, -]); - -var msg2598 = msg("1347", dup265); - -var msg2599 = msg("1347:01", dup266); - -var select1239 = linear_select([ - msg2598, - msg2599, -]); - -var msg2600 = msg("1348", dup265); - -var msg2601 = msg("1348:01", dup266); - -var select1240 = linear_select([ - msg2600, - msg2601, -]); - -var msg2602 = msg("1349", dup265); - -var msg2603 = msg("1349:01", dup266); - -var select1241 = linear_select([ - msg2602, - msg2603, -]); - -var msg2604 = msg("1350", dup265); - -var msg2605 = msg("1350:01", dup266); - -var select1242 = linear_select([ - msg2604, - msg2605, -]); - -var msg2606 = msg("1351", dup267); - -var msg2607 = msg("1351:01", dup268); - -var select1243 = linear_select([ - msg2606, - msg2607, -]); - -var msg2608 = msg("1352", dup267); - -var msg2609 = msg("1352:01", dup268); - -var select1244 = linear_select([ - msg2608, - msg2609, -]); - -var msg2610 = msg("1353", dup265); - -var msg2611 = msg("1353:01", dup266); - -var select1245 = linear_select([ - msg2610, - msg2611, -]); - -var msg2612 = msg("1354", dup265); - -var msg2613 = msg("1354:01", dup266); - -var select1246 = linear_select([ - msg2612, - msg2613, -]); - -var msg2614 = msg("1355", dup267); - -var msg2615 = msg("1355:01", dup268); - -var select1247 = linear_select([ - msg2614, - msg2615, -]); - -var msg2616 = msg("1356", dup267); - -var msg2617 = msg("1356:01", dup268); - -var select1248 = linear_select([ - msg2616, - msg2617, -]); - -var msg2618 = msg("1357", dup265); - -var msg2619 = msg("1357:01", dup266); - -var select1249 = linear_select([ - msg2618, - msg2619, -]); - -var msg2620 = msg("1358", dup265); - -var msg2621 = msg("1358:01", dup266); - -var select1250 = linear_select([ - msg2620, - msg2621, -]); - -var msg2622 = msg("1359", dup265); - -var msg2623 = msg("1359:01", dup266); - -var select1251 = linear_select([ - msg2622, - msg2623, -]); - -var msg2624 = msg("1360", dup265); - -var msg2625 = msg("1360:01", dup266); - -var select1252 = linear_select([ - msg2624, - msg2625, -]); - -var msg2626 = msg("1361", dup265); - -var msg2627 = msg("1361:01", dup266); - -var select1253 = linear_select([ - msg2626, - msg2627, -]); - -var msg2628 = msg("1362", dup265); - -var msg2629 = msg("1362:01", dup266); - -var select1254 = linear_select([ - msg2628, - msg2629, -]); - -var msg2630 = msg("1363", dup265); - -var msg2631 = msg("1363:01", dup266); - -var select1255 = linear_select([ - msg2630, - msg2631, -]); - -var msg2632 = msg("1364", dup265); - -var msg2633 = msg("1364:01", dup266); - -var select1256 = linear_select([ - msg2632, - msg2633, -]); - -var msg2634 = msg("1365", dup265); - -var msg2635 = msg("1365:01", dup266); - -var select1257 = linear_select([ - msg2634, - msg2635, -]); - -var msg2636 = msg("1366", dup265); - -var msg2637 = msg("1366:01", dup266); - -var select1258 = linear_select([ - msg2636, - msg2637, -]); - -var msg2638 = msg("1367", dup265); - -var msg2639 = msg("1367:01", dup266); - -var select1259 = linear_select([ - msg2638, - msg2639, -]); - -var msg2640 = msg("1368", dup265); - -var msg2641 = msg("1368:01", dup266); - -var select1260 = linear_select([ - msg2640, - msg2641, -]); - -var msg2642 = msg("1369", dup265); - -var msg2643 = msg("1369:01", dup266); - -var select1261 = linear_select([ - msg2642, - msg2643, -]); - -var msg2644 = msg("1370", dup265); - -var msg2645 = msg("1370:01", dup266); - -var select1262 = linear_select([ - msg2644, - msg2645, -]); - -var msg2646 = msg("1371", dup265); - -var msg2647 = msg("1371:01", dup266); - -var select1263 = linear_select([ - msg2646, - msg2647, -]); - -var msg2648 = msg("1372", dup265); - -var msg2649 = msg("1372:01", dup266); - -var select1264 = linear_select([ - msg2648, - msg2649, -]); - -var msg2650 = msg("1373", dup265); - -var msg2651 = msg("1373:01", dup266); - -var select1265 = linear_select([ - msg2650, - msg2651, -]); - -var msg2652 = msg("1374", dup265); - -var msg2653 = msg("1374:01", dup266); - -var select1266 = linear_select([ - msg2652, - msg2653, -]); - -var msg2654 = msg("1375", dup238); - -var msg2655 = msg("1375:01", dup239); - -var select1267 = linear_select([ - msg2654, - msg2655, -]); - -var msg2656 = msg("1376", dup265); - -var msg2657 = msg("1376:01", dup266); - -var select1268 = linear_select([ - msg2656, - msg2657, -]); - -var msg2658 = msg("1377", dup227); - -var msg2659 = msg("1377:01", dup228); - -var select1269 = linear_select([ - msg2658, - msg2659, -]); - -var msg2660 = msg("1378", dup227); - -var msg2661 = msg("1378:01", dup228); - -var select1270 = linear_select([ - msg2660, - msg2661, -]); - -var msg2662 = msg("1379", dup222); - -var msg2663 = msg("1379:01", dup223); - -var select1271 = linear_select([ - msg2662, - msg2663, -]); - -var msg2664 = msg("1380", dup265); - -var msg2665 = msg("1380:01", dup266); - -var select1272 = linear_select([ - msg2664, - msg2665, -]); - -var msg2666 = msg("1381", dup194); - -var msg2667 = msg("1381:01", dup229); - -var select1273 = linear_select([ - msg2666, - msg2667, -]); - -var msg2668 = msg("1382", dup222); - -var msg2669 = msg("1382:01", dup223); - -var select1274 = linear_select([ - msg2668, - msg2669, -]); - -var msg2670 = msg("1383", dup196); - -var msg2671 = msg("1383:01", dup217); - -var select1275 = linear_select([ - msg2670, - msg2671, -]); - -var msg2672 = msg("1384", dup196); - -var msg2673 = msg("1384:01", dup217); - -var select1276 = linear_select([ - msg2672, - msg2673, -]); - -var msg2674 = msg("1385", dup240); - -var msg2675 = msg("1385:01", dup241); - -var select1277 = linear_select([ - msg2674, - msg2675, -]); - -var msg2676 = msg("1386", dup197); - -var msg2677 = msg("1386:01", dup221); - -var select1278 = linear_select([ - msg2676, - msg2677, -]); - -var msg2678 = msg("1387", dup197); - -var msg2679 = msg("1387:01", dup221); - -var select1279 = linear_select([ - msg2678, - msg2679, -]); - -var msg2680 = msg("1388", dup222); - -var msg2681 = msg("1388:01", dup223); - -var select1280 = linear_select([ - msg2680, - msg2681, -]); - -var msg2682 = msg("1389", dup265); - -var msg2683 = msg("1389:01", dup266); - -var select1281 = linear_select([ - msg2682, - msg2683, -]); - -var msg2684 = msg("1390", dup196); - -var msg2685 = msg("1390:01", dup217); - -var select1282 = linear_select([ - msg2684, - msg2685, -]); - -var msg2686 = msg("1391", dup267); - -var msg2687 = msg("1391:01", dup268); - -var select1283 = linear_select([ - msg2686, - msg2687, -]); - -var msg2688 = msg("1392", dup265); - -var msg2689 = msg("1392:01", dup266); - -var select1284 = linear_select([ - msg2688, - msg2689, -]); - -var msg2690 = msg("1393", dup196); - -var msg2691 = msg("1393:01", dup217); - -var select1285 = linear_select([ - msg2690, - msg2691, -]); - -var msg2692 = msg("1394", dup196); - -var msg2693 = msg("1394:01", dup217); - -var select1286 = linear_select([ - msg2692, - msg2693, -]); - -var msg2694 = msg("1395", dup265); - -var msg2695 = msg("1395:01", dup266); - -var select1287 = linear_select([ - msg2694, - msg2695, -]); - -var msg2696 = msg("1396", dup265); - -var msg2697 = msg("1396:01", dup266); - -var select1288 = linear_select([ - msg2696, - msg2697, -]); - -var msg2698 = msg("1397", dup265); - -var msg2699 = msg("1397:01", dup266); - -var select1289 = linear_select([ - msg2698, - msg2699, -]); - -var msg2700 = msg("1398", dup196); - -var msg2701 = msg("1398:01", dup217); - -var select1290 = linear_select([ - msg2700, - msg2701, -]); - -var msg2702 = msg("1399", dup265); - -var msg2703 = msg("1399:01", dup266); - -var select1291 = linear_select([ - msg2702, - msg2703, -]); - -var msg2704 = msg("1400", dup265); - -var msg2705 = msg("1400:01", dup266); - -var select1292 = linear_select([ - msg2704, - msg2705, -]); - -var msg2706 = msg("1401", dup265); - -var msg2707 = msg("1401:01", dup266); - -var select1293 = linear_select([ - msg2706, - msg2707, -]); - -var msg2708 = msg("1402", dup265); - -var msg2709 = msg("1402:01", dup266); - -var select1294 = linear_select([ - msg2708, - msg2709, -]); - -var msg2710 = msg("1403", dup265); - -var msg2711 = msg("1403:01", dup266); - -var select1295 = linear_select([ - msg2710, - msg2711, -]); - -var msg2712 = msg("1404", dup265); - -var msg2713 = msg("1404:01", dup266); - -var select1296 = linear_select([ - msg2712, - msg2713, -]); - -var msg2714 = msg("1405", dup265); - -var msg2715 = msg("1405:01", dup266); - -var select1297 = linear_select([ - msg2714, - msg2715, -]); - -var msg2716 = msg("1406", dup265); - -var msg2717 = msg("1406:01", dup266); - -var select1298 = linear_select([ - msg2716, - msg2717, -]); - -var msg2718 = msg("1407", dup265); - -var msg2719 = msg("1407:01", dup266); - -var select1299 = linear_select([ - msg2718, - msg2719, -]); - -var msg2720 = msg("1408", dup198); - -var msg2721 = msg("1408:01", dup220); - -var select1300 = linear_select([ - msg2720, - msg2721, -]); - -var msg2722 = msg("1409", dup222); - -var msg2723 = msg("1409:01", dup223); - -var select1301 = linear_select([ - msg2722, - msg2723, -]); - -var msg2724 = msg("1410", dup265); - -var msg2725 = msg("1410:01", dup266); - -var select1302 = linear_select([ - msg2724, - msg2725, -]); - -var msg2726 = msg("1411", dup242); - -var msg2727 = msg("1411:01", dup243); - -var select1303 = linear_select([ - msg2726, - msg2727, -]); - -var msg2728 = msg("1412", dup283); - -var msg2729 = msg("1412:01", dup284); - -var select1304 = linear_select([ - msg2728, - msg2729, -]); - -var msg2730 = msg("1413", dup242); - -var msg2731 = msg("1413:01", dup243); - -var select1305 = linear_select([ - msg2730, - msg2731, -]); - -var msg2732 = msg("1414", dup283); - -var msg2733 = msg("1414:01", dup284); - -var select1306 = linear_select([ - msg2732, - msg2733, -]); - -var msg2734 = msg("1415", dup242); - -var msg2735 = msg("1415:01", dup243); - -var select1307 = linear_select([ - msg2734, - msg2735, -]); - -var msg2736 = msg("1416", dup242); - -var msg2737 = msg("1416:01", dup243); - -var select1308 = linear_select([ - msg2736, - msg2737, -]); - -var msg2738 = msg("1417", dup242); - -var msg2739 = msg("1417:01", dup243); - -var select1309 = linear_select([ - msg2738, - msg2739, -]); - -var msg2740 = msg("1418", dup283); - -var msg2741 = msg("1418:01", dup284); - -var select1310 = linear_select([ - msg2740, - msg2741, -]); - -var msg2742 = msg("1419", dup242); - -var msg2743 = msg("1419:01", dup243); - -var select1311 = linear_select([ - msg2742, - msg2743, -]); - -var msg2744 = msg("1420", dup283); - -var msg2745 = msg("1420:01", dup284); - -var select1312 = linear_select([ - msg2744, - msg2745, -]); - -var msg2746 = msg("1421", dup253); - -var msg2747 = msg("1421:01", dup254); - -var select1313 = linear_select([ - msg2746, - msg2747, -]); - -var msg2748 = msg("1422", dup222); - -var msg2749 = msg("1422:01", dup223); - -var select1314 = linear_select([ - msg2748, - msg2749, -]); - -var msg2750 = msg("1423", dup197); - -var msg2751 = msg("1423:01", dup217); - -var select1315 = linear_select([ - msg2750, - msg2751, -]); - -var msg2752 = msg("1424", dup196); - -var msg2753 = msg("1424:01", dup217); - -var select1316 = linear_select([ - msg2752, - msg2753, -]); - -var msg2754 = msg("1425", dup265); - -var msg2755 = msg("1425:01", dup217); - -var select1317 = linear_select([ - msg2754, - msg2755, -]); - -var msg2756 = msg("1426", dup242); - -var msg2757 = msg("1426:01", dup243); - -var select1318 = linear_select([ - msg2756, - msg2757, -]); - -var msg2758 = msg("1427", dup242); - -var msg2759 = msg("1427:01", dup243); - -var select1319 = linear_select([ - msg2758, - msg2759, -]); - -var msg2760 = msg("1428", dup196); - -var msg2761 = msg("1428:01", dup217); - -var select1320 = linear_select([ - msg2760, - msg2761, -]); - -var msg2762 = msg("1429", dup196); - -var msg2763 = msg("1429:01", dup217); - -var select1321 = linear_select([ - msg2762, - msg2763, -]); - -var msg2764 = msg("1430", dup278); - -var msg2765 = msg("1430:01", dup279); - -var select1322 = linear_select([ - msg2764, - msg2765, -]); - -var msg2766 = msg("1431", dup196); - -var msg2767 = msg("1431:01", dup217); - -var select1323 = linear_select([ - msg2766, - msg2767, -]); - -var msg2768 = msg("1432", dup196); - -var msg2769 = msg("1432:01", dup217); - -var select1324 = linear_select([ - msg2768, - msg2769, -]); - -var msg2770 = msg("1433", dup265); - -var msg2771 = msg("1433:01", dup266); - -var select1325 = linear_select([ - msg2770, - msg2771, -]); - -var msg2772 = msg("1434", dup265); - -var msg2773 = msg("1434:01", dup266); - -var select1326 = linear_select([ - msg2772, - msg2773, -]); - -var msg2774 = msg("1435", dup196); - -var msg2775 = msg("1435:01", dup217); - -var select1327 = linear_select([ - msg2774, - msg2775, -]); - -var msg2776 = msg("1436", dup196); - -var msg2777 = msg("1436:01", dup217); - -var select1328 = linear_select([ - msg2776, - msg2777, -]); - -var msg2778 = msg("1437", dup196); - -var msg2779 = msg("1437:01", dup217); - -var select1329 = linear_select([ - msg2778, - msg2779, -]); - -var msg2780 = msg("1438", dup196); - -var msg2781 = msg("1438:01", dup217); - -var select1330 = linear_select([ - msg2780, - msg2781, -]); - -var msg2782 = msg("1439", dup196); - -var msg2783 = msg("1439:01", dup217); - -var select1331 = linear_select([ - msg2782, - msg2783, -]); - -var msg2784 = msg("1440", dup196); - -var msg2785 = msg("1440:01", dup217); - -var select1332 = linear_select([ - msg2784, - msg2785, -]); - -var msg2786 = msg("1441", dup196); - -var msg2787 = msg("1441:01", dup217); - -var select1333 = linear_select([ - msg2786, - msg2787, -]); - -var msg2788 = msg("1442", dup196); - -var msg2789 = msg("1442:01", dup217); - -var select1334 = linear_select([ - msg2788, - msg2789, -]); - -var msg2790 = msg("1443", dup196); - -var msg2791 = msg("1443:01", dup217); - -var select1335 = linear_select([ - msg2790, - msg2791, -]); - -var msg2792 = msg("1444", dup196); - -var msg2793 = msg("1444:01", dup217); - -var select1336 = linear_select([ - msg2792, - msg2793, -]); - -var msg2794 = msg("1445", dup227); - -var msg2795 = msg("1445:01", dup228); - -var select1337 = linear_select([ - msg2794, - msg2795, -]); - -var msg2796 = msg("1446", dup250); - -var msg2797 = msg("1446:01", dup251); - -var select1338 = linear_select([ - msg2796, - msg2797, -]); - -var msg2798 = msg("1447", dup196); - -var msg2799 = msg("1447:01", dup217); - -var select1339 = linear_select([ - msg2798, - msg2799, -]); - -var msg2800 = msg("1448", dup196); - -var msg2801 = msg("1448:01", dup217); - -var select1340 = linear_select([ - msg2800, - msg2801, -]); - -var msg2802 = msg("1449", dup227); - -var msg2803 = msg("1449:01", dup228); - -var select1341 = linear_select([ - msg2802, - msg2803, -]); - -var msg2804 = msg("1450", dup250); - -var msg2805 = msg("1450:01", dup251); - -var select1342 = linear_select([ - msg2804, - msg2805, -]); - -var msg2806 = msg("1451", dup265); - -var msg2807 = msg("1451:01", dup266); - -var select1343 = linear_select([ - msg2806, - msg2807, -]); - -var msg2808 = msg("1452", dup265); - -var msg2809 = msg("1452:01", dup266); - -var select1344 = linear_select([ - msg2808, - msg2809, -]); - -var msg2810 = msg("1453", dup265); - -var msg2811 = msg("1453:01", dup266); - -var select1345 = linear_select([ - msg2810, - msg2811, -]); - -var msg2812 = msg("1454", dup265); - -var msg2813 = msg("1454:01", dup266); - -var select1346 = linear_select([ - msg2812, - msg2813, -]); - -var msg2814 = msg("1455", dup265); - -var msg2815 = msg("1455:01", dup266); - -var select1347 = linear_select([ - msg2814, - msg2815, -]); - -var msg2816 = msg("1456", dup265); - -var msg2817 = msg("1456:01", dup266); - -var select1348 = linear_select([ - msg2816, - msg2817, -]); - -var msg2818 = msg("1457", dup265); - -var msg2819 = msg("1457:01", dup266); - -var select1349 = linear_select([ - msg2818, - msg2819, -]); - -var msg2820 = msg("1458", dup265); - -var msg2821 = msg("1458:01", dup266); - -var select1350 = linear_select([ - msg2820, - msg2821, -]); - -var msg2822 = msg("1459", dup265); - -var msg2823 = msg("1459:01", dup266); - -var select1351 = linear_select([ - msg2822, - msg2823, -]); - -var msg2824 = msg("1460", dup265); - -var msg2825 = msg("1460:01", dup266); - -var select1352 = linear_select([ - msg2824, - msg2825, -]); - -var msg2826 = msg("1461", dup265); - -var msg2827 = msg("1461:01", dup266); - -var select1353 = linear_select([ - msg2826, - msg2827, -]); - -var msg2828 = msg("1462", dup265); - -var msg2829 = msg("1462:01", dup266); - -var select1354 = linear_select([ - msg2828, - msg2829, -]); - -var msg2830 = msg("1463", dup196); - -var msg2831 = msg("1463:01", dup217); - -var select1355 = linear_select([ - msg2830, - msg2831, -]); - -var msg2832 = msg("1464", dup196); - -var msg2833 = msg("1464:01", dup217); - -var select1356 = linear_select([ - msg2832, - msg2833, -]); - -var msg2834 = msg("1465", dup265); - -var msg2835 = msg("1465:01", dup266); - -var select1357 = linear_select([ - msg2834, - msg2835, -]); - -var msg2836 = msg("1466", dup265); - -var msg2837 = msg("1466:01", dup266); - -var select1358 = linear_select([ - msg2836, - msg2837, -]); - -var msg2838 = msg("1467", dup265); - -var msg2839 = msg("1467:01", dup266); - -var select1359 = linear_select([ - msg2838, - msg2839, -]); - -var msg2840 = msg("1468", dup265); - -var msg2841 = msg("1468:01", dup266); - -var select1360 = linear_select([ - msg2840, - msg2841, -]); - -var msg2842 = msg("1469", dup265); - -var msg2843 = msg("1469:01", dup266); - -var select1361 = linear_select([ - msg2842, - msg2843, -]); - -var msg2844 = msg("1470", dup265); - -var msg2845 = msg("1470:01", dup266); - -var select1362 = linear_select([ - msg2844, - msg2845, -]); - -var msg2846 = msg("1471", dup265); - -var msg2847 = msg("1471:01", dup266); - -var select1363 = linear_select([ - msg2846, - msg2847, -]); - -var msg2848 = msg("1472", dup265); - -var msg2849 = msg("1472:01", dup266); - -var select1364 = linear_select([ - msg2848, - msg2849, -]); - -var msg2850 = msg("1473", dup265); - -var msg2851 = msg("1473:01", dup266); - -var select1365 = linear_select([ - msg2850, - msg2851, -]); - -var msg2852 = msg("1474", dup265); - -var msg2853 = msg("1474:01", dup266); - -var select1366 = linear_select([ - msg2852, - msg2853, -]); - -var msg2854 = msg("1475", dup265); - -var msg2855 = msg("1475:01", dup266); - -var select1367 = linear_select([ - msg2854, - msg2855, -]); - -var msg2856 = msg("1476", dup265); - -var msg2857 = msg("1476:01", dup266); - -var select1368 = linear_select([ - msg2856, - msg2857, -]); - -var msg2858 = msg("1477", dup265); - -var msg2859 = msg("1477:01", dup266); - -var select1369 = linear_select([ - msg2858, - msg2859, -]); - -var msg2860 = msg("1478", dup265); - -var msg2861 = msg("1478:01", dup266); - -var select1370 = linear_select([ - msg2860, - msg2861, -]); - -var msg2862 = msg("1479", dup265); - -var msg2863 = msg("1479:01", dup266); - -var select1371 = linear_select([ - msg2862, - msg2863, -]); - -var msg2864 = msg("1480", dup265); - -var msg2865 = msg("1480:01", dup266); - -var select1372 = linear_select([ - msg2864, - msg2865, -]); - -var msg2866 = msg("1481", dup265); - -var msg2867 = msg("1481:01", dup266); - -var select1373 = linear_select([ - msg2866, - msg2867, -]); - -var msg2868 = msg("1482", dup265); - -var msg2869 = msg("1482:01", dup266); - -var select1374 = linear_select([ - msg2868, - msg2869, -]); - -var msg2870 = msg("1483", dup265); - -var msg2871 = msg("1483:01", dup266); - -var select1375 = linear_select([ - msg2870, - msg2871, -]); - -var msg2872 = msg("1484", dup265); - -var msg2873 = msg("1484:01", dup266); - -var select1376 = linear_select([ - msg2872, - msg2873, -]); - -var msg2874 = msg("1485", dup265); - -var msg2875 = msg("1485:01", dup266); - -var select1377 = linear_select([ - msg2874, - msg2875, -]); - -var msg2876 = msg("1486", dup265); - -var msg2877 = msg("1486:01", dup266); - -var select1378 = linear_select([ - msg2876, - msg2877, -]); - -var msg2878 = msg("1487", dup265); - -var msg2879 = msg("1487:01", dup266); - -var select1379 = linear_select([ - msg2878, - msg2879, -]); - -var msg2880 = msg("1488", dup265); - -var msg2881 = msg("1488:01", dup266); - -var select1380 = linear_select([ - msg2880, - msg2881, -]); - -var msg2882 = msg("1489", dup265); - -var msg2883 = msg("1489:01", dup266); - -var select1381 = linear_select([ - msg2882, - msg2883, -]); - -var msg2884 = msg("1490", dup265); - -var msg2885 = msg("1490:01", dup266); - -var select1382 = linear_select([ - msg2884, - msg2885, -]); - -var msg2886 = msg("1491", dup265); - -var msg2887 = msg("1491:01", dup266); - -var select1383 = linear_select([ - msg2886, - msg2887, -]); - -var msg2888 = msg("1492", dup265); - -var msg2889 = msg("1492:01", dup266); - -var select1384 = linear_select([ - msg2888, - msg2889, -]); - -var msg2890 = msg("1493", dup265); - -var msg2891 = msg("1493:01", dup266); - -var select1385 = linear_select([ - msg2890, - msg2891, -]); - -var msg2892 = msg("1494", dup265); - -var msg2893 = msg("1494:01", dup266); - -var select1386 = linear_select([ - msg2892, - msg2893, -]); - -var msg2894 = msg("1495", dup265); - -var msg2895 = msg("1495:01", dup266); - -var select1387 = linear_select([ - msg2894, - msg2895, -]); - -var msg2896 = msg("1496", dup265); - -var msg2897 = msg("1496:01", dup266); - -var select1388 = linear_select([ - msg2896, - msg2897, -]); - -var msg2898 = msg("1497", dup265); - -var msg2899 = msg("1497:01", dup266); - -var select1389 = linear_select([ - msg2898, - msg2899, -]); - -var msg2900 = msg("1498", dup265); - -var msg2901 = msg("1498:01", dup266); - -var select1390 = linear_select([ - msg2900, - msg2901, -]); - -var msg2902 = msg("1499", dup265); - -var msg2903 = msg("1499:01", dup266); - -var select1391 = linear_select([ - msg2902, - msg2903, -]); - -var msg2904 = msg("1500", dup265); - -var msg2905 = msg("1500:01", dup266); - -var select1392 = linear_select([ - msg2904, - msg2905, -]); - -var msg2906 = msg("1501", dup265); - -var msg2907 = msg("1501:01", dup266); - -var select1393 = linear_select([ - msg2906, - msg2907, -]); - -var msg2908 = msg("1502", dup265); - -var msg2909 = msg("1502:01", dup266); - -var select1394 = linear_select([ - msg2908, - msg2909, -]); - -var msg2910 = msg("1503", dup265); - -var msg2911 = msg("1503:01", dup266); - -var select1395 = linear_select([ - msg2910, - msg2911, -]); - -var msg2912 = msg("1504", dup196); - -var msg2913 = msg("1504:01", dup217); - -var select1396 = linear_select([ - msg2912, - msg2913, -]); - -var msg2914 = msg("1505", dup269); - -var msg2915 = msg("1505:01", dup270); - -var select1397 = linear_select([ - msg2914, - msg2915, -]); - -var msg2916 = msg("1506", dup269); - -var msg2917 = msg("1506:01", dup270); - -var select1398 = linear_select([ - msg2916, - msg2917, -]); - -var msg2918 = msg("1507", dup269); - -var msg2919 = msg("1507:01", dup270); - -var select1399 = linear_select([ - msg2918, - msg2919, -]); - -var msg2920 = msg("1508", dup265); - -var msg2921 = msg("1508:01", dup266); - -var select1400 = linear_select([ - msg2920, - msg2921, -]); - -var msg2922 = msg("1509", dup265); - -var msg2923 = msg("1509:01", dup266); - -var select1401 = linear_select([ - msg2922, - msg2923, -]); - -var msg2924 = msg("1510", dup269); - -var msg2925 = msg("1510:01", dup270); - -var select1402 = linear_select([ - msg2924, - msg2925, -]); - -var msg2926 = msg("1511", dup265); - -var msg2927 = msg("1511:01", dup266); - -var select1403 = linear_select([ - msg2926, - msg2927, -]); - -var msg2928 = msg("1512", dup269); - -var msg2929 = msg("1512:01", dup270); - -var select1404 = linear_select([ - msg2928, - msg2929, -]); - -var msg2930 = msg("1513", dup265); - -var msg2931 = msg("1513:01", dup266); - -var select1405 = linear_select([ - msg2930, - msg2931, -]); - -var msg2932 = msg("1514", dup269); - -var msg2933 = msg("1514:01", dup270); - -var select1406 = linear_select([ - msg2932, - msg2933, -]); - -var msg2934 = msg("1515", dup265); - -var msg2935 = msg("1515:01", dup266); - -var select1407 = linear_select([ - msg2934, - msg2935, -]); - -var msg2936 = msg("1516", dup269); - -var msg2937 = msg("1516:01", dup270); - -var select1408 = linear_select([ - msg2936, - msg2937, -]); - -var msg2938 = msg("1517", dup265); - -var msg2939 = msg("1517:01", dup266); - -var select1409 = linear_select([ - msg2938, - msg2939, -]); - -var msg2940 = msg("1518", dup265); - -var msg2941 = msg("1518:01", dup266); - -var select1410 = linear_select([ - msg2940, - msg2941, -]); - -var msg2942 = msg("1519", dup265); - -var msg2943 = msg("1519:01", dup266); - -var select1411 = linear_select([ - msg2942, - msg2943, -]); - -var msg2944 = msg("1520", dup265); - -var msg2945 = msg("1520:01", dup266); - -var select1412 = linear_select([ - msg2944, - msg2945, -]); - -var msg2946 = msg("1521", dup265); - -var msg2947 = msg("1521:01", dup266); - -var select1413 = linear_select([ - msg2946, - msg2947, -]); - -var msg2948 = msg("1522", dup265); - -var msg2949 = msg("1522:01", dup266); - -var select1414 = linear_select([ - msg2948, - msg2949, -]); - -var msg2950 = msg("1523", dup265); - -var msg2951 = msg("1523:01", dup266); - -var select1415 = linear_select([ - msg2950, - msg2951, -]); - -var msg2952 = msg("1524", dup265); - -var msg2953 = msg("1524:01", dup266); - -var select1416 = linear_select([ - msg2952, - msg2953, -]); - -var msg2954 = msg("1525", dup265); - -var msg2955 = msg("1525:01", dup266); - -var select1417 = linear_select([ - msg2954, - msg2955, -]); - -var msg2956 = msg("1526", dup265); - -var msg2957 = msg("1526:01", dup266); - -var select1418 = linear_select([ - msg2956, - msg2957, -]); - -var msg2958 = msg("1527", dup240); - -var msg2959 = msg("1527:01", dup241); - -var select1419 = linear_select([ - msg2958, - msg2959, -]); - -var msg2960 = msg("1528", dup265); - -var msg2961 = msg("1528:01", dup266); - -var select1420 = linear_select([ - msg2960, - msg2961, -]); - -var msg2962 = msg("1529", dup222); - -var msg2963 = msg("1529:01", dup223); - -var select1421 = linear_select([ - msg2962, - msg2963, -]); - -var msg2964 = msg("1530", dup227); - -var msg2965 = msg("1530:01", dup228); - -var select1422 = linear_select([ - msg2964, - msg2965, -]); - -var msg2966 = msg("1531", dup265); - -var msg2967 = msg("1531:01", dup266); - -var select1423 = linear_select([ - msg2966, - msg2967, -]); - -var msg2968 = msg("1532", dup265); - -var msg2969 = msg("1532:01", dup266); - -var select1424 = linear_select([ - msg2968, - msg2969, -]); - -var msg2970 = msg("1533", dup265); - -var msg2971 = msg("1533:01", dup266); - -var select1425 = linear_select([ - msg2970, - msg2971, -]); - -var msg2972 = msg("1534", dup265); - -var msg2973 = msg("1534:01", dup266); - -var select1426 = linear_select([ - msg2972, - msg2973, -]); - -var msg2974 = msg("1535", dup265); - -var msg2975 = msg("1535:01", dup266); - -var select1427 = linear_select([ - msg2974, - msg2975, -]); - -var msg2976 = msg("1536", dup269); - -var msg2977 = msg("1536:01", dup270); - -var select1428 = linear_select([ - msg2976, - msg2977, -]); - -var msg2978 = msg("1537", dup265); - -var msg2979 = msg("1537:01", dup266); - -var select1429 = linear_select([ - msg2978, - msg2979, -]); - -var msg2980 = msg("1538", dup222); - -var msg2981 = msg("1538:01", dup223); - -var select1430 = linear_select([ - msg2980, - msg2981, -]); - -var msg2982 = msg("1539", dup265); - -var msg2983 = msg("1539:01", dup266); - -var select1431 = linear_select([ - msg2982, - msg2983, -]); - -var msg2984 = msg("1540", dup265); - -var msg2985 = msg("1540:01", dup266); - -var select1432 = linear_select([ - msg2984, - msg2985, -]); - -var msg2986 = msg("1541", dup225); - -var msg2987 = msg("1541:01", dup226); - -var select1433 = linear_select([ - msg2986, - msg2987, -]); - -var msg2988 = msg("1542", dup265); - -var msg2989 = msg("1542:01", dup266); - -var select1434 = linear_select([ - msg2988, - msg2989, -]); - -var msg2990 = msg("1543", dup265); - -var msg2991 = msg("1543:01", dup266); - -var select1435 = linear_select([ - msg2990, - msg2991, -]); - -var msg2992 = msg("1544", dup267); - -var msg2993 = msg("1544:01", dup268); - -var select1436 = linear_select([ - msg2992, - msg2993, -]); - -var msg2994 = msg("1545", dup198); - -var msg2995 = msg("1545:01", dup220); - -var select1437 = linear_select([ - msg2994, - msg2995, -]); - -var msg2996 = msg("1546", dup198); - -var msg2997 = msg("1546:01", dup220); - -var select1438 = linear_select([ - msg2996, - msg2997, -]); - -var msg2998 = msg("1547", dup269); - -var msg2999 = msg("1547:01", dup270); - -var select1439 = linear_select([ - msg2998, - msg2999, -]); - -var msg3000 = msg("1548", dup265); - -var msg3001 = msg("1548:01", dup266); - -var select1440 = linear_select([ - msg3000, - msg3001, -]); - -var msg3002 = msg("1549", dup222); - -var msg3003 = msg("1549:01", dup223); - -var select1441 = linear_select([ - msg3002, - msg3003, -]); - -var msg3004 = msg("1550", dup222); - -var msg3005 = msg("1550:01", dup223); - -var select1442 = linear_select([ - msg3004, - msg3005, -]); - -var msg3006 = msg("1551", dup265); - -var msg3007 = msg("1551:01", dup266); - -var select1443 = linear_select([ - msg3006, - msg3007, -]); - -var msg3008 = msg("1552", dup265); - -var msg3009 = msg("1552:01", dup266); - -var select1444 = linear_select([ - msg3008, - msg3009, -]); - -var msg3010 = msg("1553", dup265); - -var msg3011 = msg("1553:01", dup266); - -var select1445 = linear_select([ - msg3010, - msg3011, -]); - -var msg3012 = msg("1554", dup265); - -var msg3013 = msg("1554:01", dup266); - -var select1446 = linear_select([ - msg3012, - msg3013, -]); - -var msg3014 = msg("1555", dup265); - -var msg3015 = msg("1555:01", dup266); - -var select1447 = linear_select([ - msg3014, - msg3015, -]); - -var msg3016 = msg("1556", dup265); - -var msg3017 = msg("1556:01", dup266); - -var select1448 = linear_select([ - msg3016, - msg3017, -]); - -var msg3018 = msg("1557", dup265); - -var msg3019 = msg("1557:01", dup266); - -var select1449 = linear_select([ - msg3018, - msg3019, -]); - -var msg3020 = msg("1558", dup267); - -var msg3021 = msg("1558:01", dup268); - -var select1450 = linear_select([ - msg3020, - msg3021, -]); - -var msg3022 = msg("1559", dup265); - -var msg3023 = msg("1559:01", dup266); - -var select1451 = linear_select([ - msg3022, - msg3023, -]); - -var msg3024 = msg("1560", dup265); - -var msg3025 = msg("1560:01", dup266); - -var select1452 = linear_select([ - msg3024, - msg3025, -]); - -var msg3026 = msg("1561", dup265); - -var msg3027 = msg("1561:01", dup266); - -var select1453 = linear_select([ - msg3026, - msg3027, -]); - -var msg3028 = msg("1562", dup222); - -var msg3029 = msg("1562:01", dup223); - -var select1454 = linear_select([ - msg3028, - msg3029, -]); - -var msg3030 = msg("1563", dup265); - -var msg3031 = msg("1563:01", dup266); - -var select1455 = linear_select([ - msg3030, - msg3031, -]); - -var msg3032 = msg("1564", dup265); - -var msg3033 = msg("1564:01", dup266); - -var select1456 = linear_select([ - msg3032, - msg3033, -]); - -var msg3034 = msg("1565", dup269); - -var msg3035 = msg("1565:01", dup270); - -var select1457 = linear_select([ - msg3034, - msg3035, -]); - -var msg3036 = msg("1566", dup265); - -var msg3037 = msg("1566:01", dup266); - -var select1458 = linear_select([ - msg3036, - msg3037, -]); - -var msg3038 = msg("1567", dup265); - -var msg3039 = msg("1567:01", dup266); - -var select1459 = linear_select([ - msg3038, - msg3039, -]); - -var msg3040 = msg("1568", dup265); - -var msg3041 = msg("1568:01", dup266); - -var select1460 = linear_select([ - msg3040, - msg3041, -]); - -var msg3042 = msg("1569", dup265); - -var msg3043 = msg("1569:01", dup266); - -var select1461 = linear_select([ - msg3042, - msg3043, -]); - -var msg3044 = msg("1570", dup265); - -var msg3045 = msg("1570:01", dup266); - -var select1462 = linear_select([ - msg3044, - msg3045, -]); - -var msg3046 = msg("1571", dup265); - -var msg3047 = msg("1571:01", dup266); - -var select1463 = linear_select([ - msg3046, - msg3047, -]); - -var msg3048 = msg("1572", dup265); - -var msg3049 = msg("1572:01", dup266); - -var select1464 = linear_select([ - msg3048, - msg3049, -]); - -var msg3050 = msg("1573", dup265); - -var msg3051 = msg("1573:01", dup266); - -var select1465 = linear_select([ - msg3050, - msg3051, -]); - -var msg3052 = msg("1574", dup265); - -var msg3053 = msg("1574:01", dup266); - -var select1466 = linear_select([ - msg3052, - msg3053, -]); - -var msg3054 = msg("1575", dup265); - -var msg3055 = msg("1575:01", dup266); - -var select1467 = linear_select([ - msg3054, - msg3055, -]); - -var msg3056 = msg("1576", dup265); - -var msg3057 = msg("1576:01", dup266); - -var select1468 = linear_select([ - msg3056, - msg3057, -]); - -var msg3058 = msg("1577", dup265); - -var msg3059 = msg("1577:01", dup266); - -var select1469 = linear_select([ - msg3058, - msg3059, -]); - -var msg3060 = msg("1578", dup265); - -var msg3061 = msg("1578:01", dup266); - -var select1470 = linear_select([ - msg3060, - msg3061, -]); - -var msg3062 = msg("1579", dup265); - -var msg3063 = msg("1579:01", dup266); - -var select1471 = linear_select([ - msg3062, - msg3063, -]); - -var msg3064 = msg("1580", dup265); - -var msg3065 = msg("1580:01", dup266); - -var select1472 = linear_select([ - msg3064, - msg3065, -]); - -var msg3066 = msg("1581", dup265); - -var msg3067 = msg("1581:01", dup266); - -var select1473 = linear_select([ - msg3066, - msg3067, -]); - -var msg3068 = msg("1582", dup265); - -var msg3069 = msg("1582:01", dup266); - -var select1474 = linear_select([ - msg3068, - msg3069, -]); - -var msg3070 = msg("1583", dup265); - -var msg3071 = msg("1583:01", dup266); - -var select1475 = linear_select([ - msg3070, - msg3071, -]); - -var msg3072 = msg("1584", dup265); - -var msg3073 = msg("1584:01", dup266); - -var select1476 = linear_select([ - msg3072, - msg3073, -]); - -var msg3074 = msg("1585", dup265); - -var msg3075 = msg("1585:01", dup266); - -var select1477 = linear_select([ - msg3074, - msg3075, -]); - -var msg3076 = msg("1586", dup265); - -var msg3077 = msg("1586:01", dup266); - -var select1478 = linear_select([ - msg3076, - msg3077, -]); - -var msg3078 = msg("1587", dup265); - -var msg3079 = msg("1587:01", dup266); - -var select1479 = linear_select([ - msg3078, - msg3079, -]); - -var msg3080 = msg("1588", dup265); - -var msg3081 = msg("1588:01", dup266); - -var select1480 = linear_select([ - msg3080, - msg3081, -]); - -var msg3082 = msg("1589", dup265); - -var msg3083 = msg("1589:01", dup266); - -var select1481 = linear_select([ - msg3082, - msg3083, -]); - -var msg3084 = msg("1590", dup265); - -var msg3085 = msg("1590:01", dup266); - -var select1482 = linear_select([ - msg3084, - msg3085, -]); - -var msg3086 = msg("1591", dup265); - -var msg3087 = msg("1591:01", dup266); - -var select1483 = linear_select([ - msg3086, - msg3087, -]); - -var msg3088 = msg("1592", dup265); - -var msg3089 = msg("1592:01", dup266); - -var select1484 = linear_select([ - msg3088, - msg3089, -]); - -var msg3090 = msg("1593", dup265); - -var msg3091 = msg("1593:01", dup266); - -var select1485 = linear_select([ - msg3090, - msg3091, -]); - -var msg3092 = msg("1594", dup265); - -var msg3093 = msg("1594:01", dup266); - -var select1486 = linear_select([ - msg3092, - msg3093, -]); - -var msg3094 = msg("1595", dup265); - -var msg3095 = msg("1595:01", dup266); - -var select1487 = linear_select([ - msg3094, - msg3095, -]); - -var msg3096 = msg("1597", dup265); - -var msg3097 = msg("1597:01", dup266); - -var select1488 = linear_select([ - msg3096, - msg3097, -]); - -var msg3098 = msg("1598", dup265); - -var msg3099 = msg("1598:01", dup266); - -var select1489 = linear_select([ - msg3098, - msg3099, -]); - -var msg3100 = msg("1599", dup265); - -var msg3101 = msg("1599:01", dup266); - -var select1490 = linear_select([ - msg3100, - msg3101, -]); - -var msg3102 = msg("1600", dup265); - -var msg3103 = msg("1600:01", dup266); - -var select1491 = linear_select([ - msg3102, - msg3103, -]); - -var msg3104 = msg("1601", dup265); - -var msg3105 = msg("1601:01", dup266); - -var select1492 = linear_select([ - msg3104, - msg3105, -]); - -var msg3106 = msg("1602", dup265); - -var msg3107 = msg("1602:01", dup266); - -var select1493 = linear_select([ - msg3106, - msg3107, -]); - -var msg3108 = msg("1603", dup265); - -var msg3109 = msg("1603:01", dup266); - -var select1494 = linear_select([ - msg3108, - msg3109, -]); - -var msg3110 = msg("1604", dup265); - -var msg3111 = msg("1604:01", dup266); - -var select1495 = linear_select([ - msg3110, - msg3111, -]); - -var msg3112 = msg("1605", dup198); - -var msg3113 = msg("1605:01", dup220); - -var select1496 = linear_select([ - msg3112, - msg3113, -]); - -var msg3114 = msg("1606", dup265); - -var msg3115 = msg("1606:01", dup266); - -var select1497 = linear_select([ - msg3114, - msg3115, -]); - -var msg3116 = msg("1607", dup265); - -var msg3117 = msg("1607:01", dup266); - -var select1498 = linear_select([ - msg3116, - msg3117, -]); - -var msg3118 = msg("1608", dup265); - -var msg3119 = msg("1608:01", dup266); - -var select1499 = linear_select([ - msg3118, - msg3119, -]); - -var msg3120 = msg("1609", dup265); - -var msg3121 = msg("1609:01", dup266); - -var select1500 = linear_select([ - msg3120, - msg3121, -]); - -var msg3122 = msg("1610", dup269); - -var msg3123 = msg("1610:01", dup270); - -var select1501 = linear_select([ - msg3122, - msg3123, -]); - -var msg3124 = msg("1611", dup265); - -var msg3125 = msg("1611:01", dup266); - -var select1502 = linear_select([ - msg3124, - msg3125, -]); - -var msg3126 = msg("1612", dup265); - -var msg3127 = msg("1612:01", dup266); - -var select1503 = linear_select([ - msg3126, - msg3127, -]); - -var msg3128 = msg("1613", dup265); - -var msg3129 = msg("1613:01", dup266); - -var select1504 = linear_select([ - msg3128, - msg3129, -]); - -var msg3130 = msg("1614", dup265); - -var msg3131 = msg("1614:01", dup266); - -var select1505 = linear_select([ - msg3130, - msg3131, -]); - -var msg3132 = msg("1615", dup265); - -var msg3133 = msg("1615:01", dup266); - -var select1506 = linear_select([ - msg3132, - msg3133, -]); - -var msg3134 = msg("1616", dup196); - -var msg3135 = msg("1616:01", dup217); - -var select1507 = linear_select([ - msg3134, - msg3135, -]); - -var msg3136 = msg("1617", dup265); - -var msg3137 = msg("1617:01", dup266); - -var select1508 = linear_select([ - msg3136, - msg3137, -]); - -var msg3138 = msg("1618", dup196); - -var msg3139 = msg("1618:01", dup217); - -var select1509 = linear_select([ - msg3138, - msg3139, -]); - -var msg3140 = msg("1619", dup265); - -var msg3141 = msg("1619:01", dup266); - -var select1510 = linear_select([ - msg3140, - msg3141, -]); - -var msg3142 = msg("1620", dup196); - -var msg3143 = msg("1620:01", dup217); - -var select1511 = linear_select([ - msg3142, - msg3143, -]); - -var msg3144 = msg("1621", dup222); - -var msg3145 = msg("1621:01", dup223); - -var select1512 = linear_select([ - msg3144, - msg3145, -]); - -var msg3146 = msg("1622", dup227); - -var msg3147 = msg("1622:01", dup228); - -var select1513 = linear_select([ - msg3146, - msg3147, -]); - -var msg3148 = msg("1623", dup227); - -var msg3149 = msg("1623:01", dup228); - -var select1514 = linear_select([ - msg3148, - msg3149, -]); - -var msg3150 = msg("1624", dup222); - -var msg3151 = msg("1624:01", dup223); - -var select1515 = linear_select([ - msg3150, - msg3151, -]); - -var msg3152 = msg("1625", dup222); - -var msg3153 = msg("1625:01", dup223); - -var select1516 = linear_select([ - msg3152, - msg3153, -]); - -var msg3154 = msg("1626", dup265); - -var msg3155 = msg("1626:01", dup266); - -var select1517 = linear_select([ - msg3154, - msg3155, -]); - -var msg3156 = msg("1627", dup196); - -var msg3157 = msg("1627:01", dup217); - -var select1518 = linear_select([ - msg3156, - msg3157, -]); - -var msg3158 = msg("1628", dup265); - -var msg3159 = msg("1628:01", dup266); - -var select1519 = linear_select([ - msg3158, - msg3159, -]); - -var msg3160 = msg("1629", dup196); - -var msg3161 = msg("1629:01", dup217); - -var select1520 = linear_select([ - msg3160, - msg3161, -]); - -var msg3162 = msg("1630", dup227); - -var msg3163 = msg("1630:01", dup228); - -var select1521 = linear_select([ - msg3162, - msg3163, -]); - -var msg3164 = msg("1631", dup196); - -var msg3165 = msg("1631:01", dup217); - -var select1522 = linear_select([ - msg3164, - msg3165, -]); - -var msg3166 = msg("1632", dup196); - -var msg3167 = msg("1632:01", dup217); - -var select1523 = linear_select([ - msg3166, - msg3167, -]); - -var msg3168 = msg("1633", dup196); - -var msg3169 = msg("1633:01", dup217); - -var select1524 = linear_select([ - msg3168, - msg3169, -]); - -var msg3170 = msg("1634", dup222); - -var msg3171 = msg("1634:01", dup223); - -var select1525 = linear_select([ - msg3170, - msg3171, -]); - -var msg3172 = msg("1635", dup222); - -var msg3173 = msg("1635:01", dup223); - -var select1526 = linear_select([ - msg3172, - msg3173, -]); - -var msg3174 = msg("1636", dup222); - -var msg3175 = msg("1636:01", dup223); - -var select1527 = linear_select([ - msg3174, - msg3175, -]); - -var msg3176 = msg("1637", dup265); - -var msg3177 = msg("1637:01", dup266); - -var select1528 = linear_select([ - msg3176, - msg3177, -]); - -var msg3178 = msg("1638", dup194); - -var msg3179 = msg("1638:01", dup229); - -var select1529 = linear_select([ - msg3178, - msg3179, -]); - -var msg3180 = msg("1639", dup196); - -var msg3181 = msg("1639:01", dup217); - -var select1530 = linear_select([ - msg3180, - msg3181, -]); - -var msg3182 = msg("1640", dup196); - -var msg3183 = msg("1640:01", dup217); - -var select1531 = linear_select([ - msg3182, - msg3183, -]); - -var msg3184 = msg("1641", dup198); - -var msg3185 = msg("1641:01", dup220); - -var select1532 = linear_select([ - msg3184, - msg3185, -]); - -var msg3186 = msg("1642", dup265); - -var msg3187 = msg("1642:01", dup266); - -var select1533 = linear_select([ - msg3186, - msg3187, -]); - -var msg3188 = msg("1643", dup265); - -var msg3189 = msg("1643:01", dup266); - -var select1534 = linear_select([ - msg3188, - msg3189, -]); - -var msg3190 = msg("1644", dup265); - -var msg3191 = msg("1644:01", dup266); - -var select1535 = linear_select([ - msg3190, - msg3191, -]); - -var msg3192 = msg("1645", dup265); - -var msg3193 = msg("1645:01", dup266); - -var select1536 = linear_select([ - msg3192, - msg3193, -]); - -var msg3194 = msg("1646", dup265); - -var msg3195 = msg("1646:01", dup266); - -var select1537 = linear_select([ - msg3194, - msg3195, -]); - -var msg3196 = msg("1647", dup265); - -var msg3197 = msg("1647:01", dup266); - -var select1538 = linear_select([ - msg3196, - msg3197, -]); - -var msg3198 = msg("1648", dup265); - -var msg3199 = msg("1648:01", dup266); - -var select1539 = linear_select([ - msg3198, - msg3199, -]); - -var msg3200 = msg("1649", dup265); - -var msg3201 = msg("1649:01", dup266); - -var select1540 = linear_select([ - msg3200, - msg3201, -]); - -var msg3202 = msg("1650", dup265); - -var msg3203 = msg("1650:01", dup266); - -var select1541 = linear_select([ - msg3202, - msg3203, -]); - -var msg3204 = msg("1651", dup265); - -var msg3205 = msg("1651:01", dup266); - -var select1542 = linear_select([ - msg3204, - msg3205, -]); - -var msg3206 = msg("1652", dup265); - -var msg3207 = msg("1652:01", dup266); - -var select1543 = linear_select([ - msg3206, - msg3207, -]); - -var msg3208 = msg("1653", dup265); - -var msg3209 = msg("1653:01", dup266); - -var select1544 = linear_select([ - msg3208, - msg3209, -]); - -var msg3210 = msg("1654", dup265); - -var msg3211 = msg("1654:01", dup266); - -var select1545 = linear_select([ - msg3210, - msg3211, -]); - -var msg3212 = msg("1655", dup269); - -var msg3213 = msg("1655:01", dup270); - -var select1546 = linear_select([ - msg3212, - msg3213, -]); - -var msg3214 = msg("1656", dup265); - -var msg3215 = msg("1656:01", dup266); - -var select1547 = linear_select([ - msg3214, - msg3215, -]); - -var msg3216 = msg("1657", dup265); - -var msg3217 = msg("1657:01", dup266); - -var select1548 = linear_select([ - msg3216, - msg3217, -]); - -var msg3218 = msg("1658", dup265); - -var msg3219 = msg("1658:01", dup266); - -var select1549 = linear_select([ - msg3218, - msg3219, -]); - -var msg3220 = msg("1659", dup265); - -var msg3221 = msg("1659:01", dup266); - -var select1550 = linear_select([ - msg3220, - msg3221, -]); - -var msg3222 = msg("1660", dup265); - -var msg3223 = msg("1660:01", dup266); - -var select1551 = linear_select([ - msg3222, - msg3223, -]); - -var msg3224 = msg("1661", dup265); - -var msg3225 = msg("1661:01", dup266); - -var select1552 = linear_select([ - msg3224, - msg3225, -]); - -var msg3226 = msg("1662", dup265); - -var msg3227 = msg("1662:01", dup266); - -var select1553 = linear_select([ - msg3226, - msg3227, -]); - -var msg3228 = msg("1663", dup265); - -var msg3229 = msg("1663:01", dup266); - -var select1554 = linear_select([ - msg3228, - msg3229, -]); - -var msg3230 = msg("1664", dup265); - -var msg3231 = msg("1664:01", dup266); - -var select1555 = linear_select([ - msg3230, - msg3231, -]); - -var msg3232 = msg("1665", dup265); - -var msg3233 = msg("1665:01", dup266); - -var select1556 = linear_select([ - msg3232, - msg3233, -]); - -var msg3234 = msg("1666", dup196); - -var msg3235 = msg("1666:01", dup217); - -var select1557 = linear_select([ - msg3234, - msg3235, -]); - -var msg3236 = msg("1667", dup265); - -var msg3237 = msg("1667:01", dup266); - -var select1558 = linear_select([ - msg3236, - msg3237, -]); - -var msg3238 = msg("1668", dup265); - -var msg3239 = msg("1668:01", dup266); - -var select1559 = linear_select([ - msg3238, - msg3239, -]); - -var msg3240 = msg("1669", dup198); - -var msg3241 = msg("1669:01", dup220); - -var select1560 = linear_select([ - msg3240, - msg3241, -]); - -var msg3242 = msg("1670", dup265); - -var msg3243 = msg("1670:01", dup266); - -var select1561 = linear_select([ - msg3242, - msg3243, -]); - -var msg3244 = msg("1671", dup265); - -var msg3245 = msg("1671:01", dup266); - -var select1562 = linear_select([ - msg3244, - msg3245, -]); - -var msg3246 = msg("1672", dup227); - -var msg3247 = msg("1672:01", dup228); - -var select1563 = linear_select([ - msg3246, - msg3247, -]); - -var msg3248 = msg("1673", dup196); - -var msg3249 = msg("1673:01", dup217); - -var select1564 = linear_select([ - msg3248, - msg3249, -]); - -var msg3250 = msg("1674", dup196); - -var msg3251 = msg("1674:01", dup217); - -var select1565 = linear_select([ - msg3250, - msg3251, -]); - -var msg3252 = msg("1675", dup196); - -var msg3253 = msg("1675:01", dup217); - -var select1566 = linear_select([ - msg3252, - msg3253, -]); - -var msg3254 = msg("1676", dup196); - -var msg3255 = msg("1676:01", dup217); - -var select1567 = linear_select([ - msg3254, - msg3255, -]); - -var msg3256 = msg("1677", dup196); - -var msg3257 = msg("1677:01", dup217); - -var select1568 = linear_select([ - msg3256, - msg3257, -]); - -var msg3258 = msg("1678", dup196); - -var msg3259 = msg("1678:01", dup217); - -var select1569 = linear_select([ - msg3258, - msg3259, -]); - -var msg3260 = msg("1679", dup196); - -var msg3261 = msg("1679:01", dup217); - -var select1570 = linear_select([ - msg3260, - msg3261, -]); - -var msg3262 = msg("1680", dup196); - -var msg3263 = msg("1680:01", dup217); - -var select1571 = linear_select([ - msg3262, - msg3263, -]); - -var msg3264 = msg("1681", dup196); - -var msg3265 = msg("1681:01", dup217); - -var select1572 = linear_select([ - msg3264, - msg3265, -]); - -var msg3266 = msg("1682", dup196); - -var msg3267 = msg("1682:01", dup217); - -var select1573 = linear_select([ - msg3266, - msg3267, -]); - -var msg3268 = msg("1683", dup196); - -var msg3269 = msg("1683:01", dup217); - -var select1574 = linear_select([ - msg3268, - msg3269, -]); - -var msg3270 = msg("1684", dup196); - -var msg3271 = msg("1684:01", dup217); - -var select1575 = linear_select([ - msg3270, - msg3271, -]); - -var msg3272 = msg("1685", dup196); - -var msg3273 = msg("1685:01", dup217); - -var select1576 = linear_select([ - msg3272, - msg3273, -]); - -var msg3274 = msg("1686", dup196); - -var msg3275 = msg("1686:01", dup217); - -var select1577 = linear_select([ - msg3274, - msg3275, -]); - -var msg3276 = msg("1687", dup196); - -var msg3277 = msg("1687:01", dup217); - -var select1578 = linear_select([ - msg3276, - msg3277, -]); - -var msg3278 = msg("1688", dup196); - -var msg3279 = msg("1688:01", dup217); - -var select1579 = linear_select([ - msg3278, - msg3279, -]); - -var msg3280 = msg("1689", dup196); - -var msg3281 = msg("1689:01", dup217); - -var select1580 = linear_select([ - msg3280, - msg3281, -]); - -var msg3282 = msg("1690", dup196); - -var msg3283 = msg("1690:01", dup217); - -var select1581 = linear_select([ - msg3282, - msg3283, -]); - -var msg3284 = msg("1691", dup196); - -var msg3285 = msg("1691:01", dup217); - -var select1582 = linear_select([ - msg3284, - msg3285, -]); - -var msg3286 = msg("1692", dup196); - -var msg3287 = msg("1692:01", dup217); - -var select1583 = linear_select([ - msg3286, - msg3287, -]); - -var msg3288 = msg("1693", dup196); - -var msg3289 = msg("1693:01", dup217); - -var select1584 = linear_select([ - msg3288, - msg3289, -]); - -var msg3290 = msg("1694", dup196); - -var msg3291 = msg("1694:01", dup217); - -var select1585 = linear_select([ - msg3290, - msg3291, -]); - -var msg3292 = msg("1695", dup196); - -var msg3293 = msg("1695:01", dup217); - -var select1586 = linear_select([ - msg3292, - msg3293, -]); - -var msg3294 = msg("1696", dup196); - -var msg3295 = msg("1696:01", dup217); - -var select1587 = linear_select([ - msg3294, - msg3295, -]); - -var msg3296 = msg("1697", dup196); - -var msg3297 = msg("1697:01", dup217); - -var select1588 = linear_select([ - msg3296, - msg3297, -]); - -var msg3298 = msg("1698", dup196); - -var msg3299 = msg("1698:01", dup217); - -var select1589 = linear_select([ - msg3298, - msg3299, -]); - -var msg3300 = msg("1699", dup196); - -var msg3301 = msg("1699:01", dup217); - -var select1590 = linear_select([ - msg3300, - msg3301, -]); - -var msg3302 = msg("1700", dup265); - -var msg3303 = msg("1700:01", dup266); - -var select1591 = linear_select([ - msg3302, - msg3303, -]); - -var msg3304 = msg("1701", dup265); - -var msg3305 = msg("1701:01", dup266); - -var select1592 = linear_select([ - msg3304, - msg3305, -]); - -var msg3306 = msg("1702", dup265); - -var msg3307 = msg("1702:01", dup266); - -var select1593 = linear_select([ - msg3306, - msg3307, -]); - -var msg3308 = msg("1703", dup265); - -var msg3309 = msg("1703:01", dup266); - -var select1594 = linear_select([ - msg3308, - msg3309, -]); - -var msg3310 = msg("1704", dup265); - -var msg3311 = msg("1704:01", dup266); - -var select1595 = linear_select([ - msg3310, - msg3311, -]); - -var msg3312 = msg("1705", dup269); - -var msg3313 = msg("1705:01", dup270); - -var select1596 = linear_select([ - msg3312, - msg3313, -]); - -var msg3314 = msg("1706", dup265); - -var msg3315 = msg("1706:01", dup266); - -var select1597 = linear_select([ - msg3314, - msg3315, -]); - -var msg3316 = msg("1707", dup269); - -var msg3317 = msg("1707:01", dup270); - -var select1598 = linear_select([ - msg3316, - msg3317, -]); - -var msg3318 = msg("1708", dup265); - -var msg3319 = msg("1708:01", dup266); - -var select1599 = linear_select([ - msg3318, - msg3319, -]); - -var msg3320 = msg("1709", dup265); - -var msg3321 = msg("1709:01", dup266); - -var select1600 = linear_select([ - msg3320, - msg3321, -]); - -var msg3322 = msg("1710", dup265); - -var msg3323 = msg("1710:01", dup266); - -var select1601 = linear_select([ - msg3322, - msg3323, -]); - -var msg3324 = msg("1711", dup265); - -var msg3325 = msg("1711:01", dup266); - -var select1602 = linear_select([ - msg3324, - msg3325, -]); - -var msg3326 = msg("1712", dup265); - -var msg3327 = msg("1712:01", dup266); - -var select1603 = linear_select([ - msg3326, - msg3327, -]); - -var msg3328 = msg("1713", dup265); - -var msg3329 = msg("1713:01", dup266); - -var select1604 = linear_select([ - msg3328, - msg3329, -]); - -var msg3330 = msg("1714", dup265); - -var msg3331 = msg("1714:01", dup266); - -var select1605 = linear_select([ - msg3330, - msg3331, -]); - -var msg3332 = msg("1715", dup265); - -var msg3333 = msg("1715:01", dup266); - -var select1606 = linear_select([ - msg3332, - msg3333, -]); - -var msg3334 = msg("1716", dup265); - -var msg3335 = msg("1716:01", dup266); - -var select1607 = linear_select([ - msg3334, - msg3335, -]); - -var msg3336 = msg("1717", dup265); - -var msg3337 = msg("1717:01", dup266); - -var select1608 = linear_select([ - msg3336, - msg3337, -]); - -var msg3338 = msg("1718", dup265); - -var msg3339 = msg("1718:01", dup266); - -var select1609 = linear_select([ - msg3338, - msg3339, -]); - -var msg3340 = msg("1719", dup265); - -var msg3341 = msg("1719:01", dup266); - -var select1610 = linear_select([ - msg3340, - msg3341, -]); - -var msg3342 = msg("1720", dup265); - -var msg3343 = msg("1720:01", dup266); - -var select1611 = linear_select([ - msg3342, - msg3343, -]); - -var msg3344 = msg("1721", dup265); - -var msg3345 = msg("1721:01", dup266); - -var select1612 = linear_select([ - msg3344, - msg3345, -]); - -var msg3346 = msg("1722", dup265); - -var msg3347 = msg("1722:01", dup266); - -var select1613 = linear_select([ - msg3346, - msg3347, -]); - -var msg3348 = msg("1723", dup265); - -var msg3349 = msg("1723:01", dup266); - -var select1614 = linear_select([ - msg3348, - msg3349, -]); - -var msg3350 = msg("1724", dup265); - -var msg3351 = msg("1724:01", dup266); - -var select1615 = linear_select([ - msg3350, - msg3351, -]); - -var msg3352 = msg("1725", dup265); - -var msg3353 = msg("1725:01", dup266); - -var select1616 = linear_select([ - msg3352, - msg3353, -]); - -var msg3354 = msg("1726", dup265); - -var msg3355 = msg("1726:01", dup266); - -var select1617 = linear_select([ - msg3354, - msg3355, -]); - -var msg3356 = msg("1727", dup265); - -var msg3357 = msg("1727:01", dup266); - -var select1618 = linear_select([ - msg3356, - msg3357, -]); - -var msg3358 = msg("1728", dup227); - -var msg3359 = msg("1728:01", dup228); - -var select1619 = linear_select([ - msg3358, - msg3359, -]); - -var msg3360 = msg("1729", dup196); - -var msg3361 = msg("1729:01", dup217); - -var select1620 = linear_select([ - msg3360, - msg3361, -]); - -var msg3362 = msg("1730", dup265); - -var msg3363 = msg("1730:01", dup266); - -var select1621 = linear_select([ - msg3362, - msg3363, -]); - -var msg3364 = msg("1731", dup265); - -var msg3365 = msg("1731:01", dup266); - -var select1622 = linear_select([ - msg3364, - msg3365, -]); - -var msg3366 = msg("1732", dup255); - -var msg3367 = msg("1732:01", dup256); - -var select1623 = linear_select([ - msg3366, - msg3367, -]); - -var msg3368 = msg("1733", dup258); - -var msg3369 = msg("1733:01", dup259); - -var select1624 = linear_select([ - msg3368, - msg3369, -]); - -var msg3370 = msg("1734", dup222); - -var msg3371 = msg("1734:01", dup223); - -var select1625 = linear_select([ - msg3370, - msg3371, -]); - -var msg3372 = msg("1735", dup265); - -var msg3373 = msg("1735:01", dup266); - -var select1626 = linear_select([ - msg3372, - msg3373, -]); - -var msg3374 = msg("1736", dup265); - -var msg3375 = msg("1736:01", dup266); - -var select1627 = linear_select([ - msg3374, - msg3375, -]); - -var msg3376 = msg("1737", dup265); - -var msg3377 = msg("1737:01", dup266); - -var select1628 = linear_select([ - msg3376, - msg3377, -]); - -var msg3378 = msg("1738", dup265); - -var msg3379 = msg("1738:01", dup266); - -var select1629 = linear_select([ - msg3378, - msg3379, -]); - -var msg3380 = msg("1739", dup285); - -var msg3381 = msg("1739:01", dup286); - -var select1630 = linear_select([ - msg3380, - msg3381, -]); - -var msg3382 = msg("1740", dup285); - -var msg3383 = msg("1740:01", dup286); - -var select1631 = linear_select([ - msg3382, - msg3383, -]); - -var msg3384 = msg("1741", dup265); - -var msg3385 = msg("1741:01", dup266); - -var select1632 = linear_select([ - msg3384, - msg3385, -]); - -var msg3386 = msg("1742", dup198); - -var msg3387 = msg("1742:01", dup220); - -var select1633 = linear_select([ - msg3386, - msg3387, -]); - -var msg3388 = msg("1743", dup198); - -var msg3389 = msg("1743:01", dup220); - -var select1634 = linear_select([ - msg3388, - msg3389, -]); - -var msg3390 = msg("1744", dup285); - -var msg3391 = msg("1744:01", dup286); - -var select1635 = linear_select([ - msg3390, - msg3391, -]); - -var msg3392 = msg("1745", dup265); - -var msg3393 = msg("1745:01", dup266); - -var select1636 = linear_select([ - msg3392, - msg3393, -]); - -var msg3394 = msg("1746", dup255); - -var msg3395 = msg("1746:01", dup256); - -var select1637 = linear_select([ - msg3394, - msg3395, -]); - -var msg3396 = msg("1747", dup258); - -var msg3397 = msg("1747:01", dup259); - -var select1638 = linear_select([ - msg3396, - msg3397, -]); - -var msg3398 = msg("1748", dup222); - -var msg3399 = msg("1748:01", dup223); - -var select1639 = linear_select([ - msg3398, - msg3399, -]); - -var msg3400 = msg("1749", dup265); - -var msg3401 = msg("1749:01", dup266); - -var select1640 = linear_select([ - msg3400, - msg3401, -]); - -var msg3402 = msg("1750", dup265); - -var msg3403 = msg("1750:01", dup266); - -var select1641 = linear_select([ - msg3402, - msg3403, -]); - -var msg3404 = msg("1751", dup222); - -var msg3405 = msg("1751:01", dup223); - -var select1642 = linear_select([ - msg3404, - msg3405, -]); - -var msg3406 = msg("1752", dup196); - -var msg3407 = msg("1752:01", dup217); - -var select1643 = linear_select([ - msg3406, - msg3407, -]); - -var msg3408 = msg("1753", dup265); - -var msg3409 = msg("1753:01", dup266); - -var select1644 = linear_select([ - msg3408, - msg3409, -]); - -var msg3410 = msg("1754", dup265); - -var msg3411 = msg("1754:01", dup266); - -var select1645 = linear_select([ - msg3410, - msg3411, -]); - -var msg3412 = msg("1755", dup222); - -var msg3413 = msg("1755:01", dup223); - -var select1646 = linear_select([ - msg3412, - msg3413, -]); - -var msg3414 = msg("1756", dup265); - -var msg3415 = msg("1756:01", dup266); - -var select1647 = linear_select([ - msg3414, - msg3415, -]); - -var msg3416 = msg("1757", dup269); - -var msg3417 = msg("1757:01", dup270); - -var select1648 = linear_select([ - msg3416, - msg3417, -]); - -var msg3418 = msg("1758", dup265); - -var msg3419 = msg("1758:01", dup266); - -var select1649 = linear_select([ - msg3418, - msg3419, -]); - -var msg3420 = msg("1759", dup260); - -var msg3421 = msg("1759:01", dup261); - -var select1650 = linear_select([ - msg3420, - msg3421, -]); - -var msg3422 = msg("1760", dup196); - -var msg3423 = msg("1760:01", dup217); - -var select1651 = linear_select([ - msg3422, - msg3423, -]); - -var msg3424 = msg("1761", dup196); - -var msg3425 = msg("1761:01", dup217); - -var select1652 = linear_select([ - msg3424, - msg3425, -]); - -var msg3426 = msg("1762", dup269); - -var msg3427 = msg("1762:01", dup270); - -var select1653 = linear_select([ - msg3426, - msg3427, -]); - -var msg3428 = msg("1763", dup198); - -var msg3429 = msg("1763:01", dup220); - -var select1654 = linear_select([ - msg3428, - msg3429, -]); - -var msg3430 = msg("1764", dup198); - -var msg3431 = msg("1764:01", dup220); - -var select1655 = linear_select([ - msg3430, - msg3431, -]); - -var msg3432 = msg("1765", dup265); - -var msg3433 = msg("1765:01", dup266); - -var select1656 = linear_select([ - msg3432, - msg3433, -]); - -var msg3434 = msg("1766", dup265); - -var msg3435 = msg("1766:01", dup266); - -var select1657 = linear_select([ - msg3434, - msg3435, -]); - -var msg3436 = msg("1767", dup265); - -var msg3437 = msg("1767:01", dup266); - -var select1658 = linear_select([ - msg3436, - msg3437, -]); - -var msg3438 = msg("1768", dup267); - -var msg3439 = msg("1768:01", dup268); - -var select1659 = linear_select([ - msg3438, - msg3439, -]); - -var msg3440 = msg("1769", dup265); - -var msg3441 = msg("1769:01", dup266); - -var select1660 = linear_select([ - msg3440, - msg3441, -]); - -var msg3442 = msg("1770", dup265); - -var msg3443 = msg("1770:01", dup266); - -var select1661 = linear_select([ - msg3442, - msg3443, -]); - -var msg3444 = msg("1771", dup287); - -var msg3445 = msg("1771:01", dup288); - -var select1662 = linear_select([ - msg3444, - msg3445, -]); - -var msg3446 = msg("1772", dup265); - -var msg3447 = msg("1772:01", dup266); - -var select1663 = linear_select([ - msg3446, - msg3447, -]); - -var msg3448 = msg("1773", dup265); - -var msg3449 = msg("1773:01", dup266); - -var select1664 = linear_select([ - msg3448, - msg3449, -]); - -var msg3450 = msg("1774", dup265); - -var msg3451 = msg("1774:01", dup266); - -var select1665 = linear_select([ - msg3450, - msg3451, -]); - -var msg3452 = msg("1775", dup240); - -var msg3453 = msg("1775:01", dup241); - -var select1666 = linear_select([ - msg3452, - msg3453, -]); - -var msg3454 = msg("1776", dup240); - -var msg3455 = msg("1776:01", dup241); - -var select1667 = linear_select([ - msg3454, - msg3455, -]); - -var msg3456 = msg("1777", dup198); - -var msg3457 = msg("1777:01", dup220); - -var select1668 = linear_select([ - msg3456, - msg3457, -]); - -var msg3458 = msg("1778", dup198); - -var msg3459 = msg("1778:01", dup220); - -var select1669 = linear_select([ - msg3458, - msg3459, -]); - -var msg3460 = msg("1779", dup227); - -var msg3461 = msg("1779:01", dup228); - -var select1670 = linear_select([ - msg3460, - msg3461, -]); - -var msg3462 = msg("1780", dup222); - -var msg3463 = msg("1780:01", dup223); - -var select1671 = linear_select([ - msg3462, - msg3463, -]); - -var msg3464 = msg("1781", dup281); - -var msg3465 = msg("1781:01", dup282); - -var select1672 = linear_select([ - msg3464, - msg3465, -]); - -var msg3466 = msg("1782", dup281); - -var msg3467 = msg("1782:01", dup282); - -var select1673 = linear_select([ - msg3466, - msg3467, -]); - -var msg3468 = msg("1783", dup281); - -var msg3469 = msg("1783:01", dup282); - -var select1674 = linear_select([ - msg3468, - msg3469, -]); - -var msg3470 = msg("1784", dup281); - -var msg3471 = msg("1784:01", dup282); - -var select1675 = linear_select([ - msg3470, - msg3471, -]); - -var msg3472 = msg("1785", dup281); - -var msg3473 = msg("1785:01", dup282); - -var select1676 = linear_select([ - msg3472, - msg3473, -]); - -var msg3474 = msg("1786", dup281); - -var msg3475 = msg("1786:01", dup282); - -var select1677 = linear_select([ - msg3474, - msg3475, -]); - -var msg3476 = msg("1787", dup265); - -var msg3477 = msg("1787:01", dup266); - -var select1678 = linear_select([ - msg3476, - msg3477, -]); - -var msg3478 = msg("1788", dup265); - -var msg3479 = msg("1788:01", dup266); - -var select1679 = linear_select([ - msg3478, - msg3479, -]); - -var msg3480 = msg("1789", dup196); - -var msg3481 = msg("1789:01", dup217); - -var select1680 = linear_select([ - msg3480, - msg3481, -]); - -var msg3482 = msg("1790", dup196); - -var msg3483 = msg("1790:01", dup217); - -var select1681 = linear_select([ - msg3482, - msg3483, -]); - -var msg3484 = msg("1791", dup192); - -var msg3485 = msg("1791:01", dup262); - -var select1682 = linear_select([ - msg3484, - msg3485, -]); - -var msg3486 = msg("1792", dup222); - -var msg3487 = msg("1792:01", dup223); - -var select1683 = linear_select([ - msg3486, - msg3487, -]); - -var msg3488 = msg("1793", dup281); - -var msg3489 = msg("1793:01", dup282); - -var select1684 = linear_select([ - msg3488, - msg3489, -]); - -var msg3490 = msg("1794", dup281); - -var msg3491 = msg("1794:01", dup282); - -var select1685 = linear_select([ - msg3490, - msg3491, -]); - -var msg3492 = msg("1795", dup281); - -var msg3493 = msg("1795:01", dup282); - -var select1686 = linear_select([ - msg3492, - msg3493, -]); - -var msg3494 = msg("1796", dup281); - -var msg3495 = msg("1796:01", dup282); - -var select1687 = linear_select([ - msg3494, - msg3495, -]); - -var msg3496 = msg("1797", dup281); - -var msg3497 = msg("1797:01", dup282); - -var select1688 = linear_select([ - msg3496, - msg3497, -]); - -var msg3498 = msg("1798", dup281); - -var msg3499 = msg("1798:01", dup282); - -var select1689 = linear_select([ - msg3498, - msg3499, -]); - -var msg3500 = msg("1799", dup281); - -var msg3501 = msg("1799:01", dup282); - -var select1690 = linear_select([ - msg3500, - msg3501, -]); - -var msg3502 = msg("1800", dup263); - -var msg3503 = msg("1800:01", dup264); - -var select1691 = linear_select([ - msg3502, - msg3503, -]); - -var msg3504 = msg("1801", dup267); - -var msg3505 = msg("1801:01", dup268); - -var select1692 = linear_select([ - msg3504, - msg3505, -]); - -var msg3506 = msg("1802", dup267); - -var msg3507 = msg("1802:01", dup268); - -var select1693 = linear_select([ - msg3506, - msg3507, -]); - -var msg3508 = msg("1803", dup267); - -var msg3509 = msg("1803:01", dup268); - -var select1694 = linear_select([ - msg3508, - msg3509, -]); - -var msg3510 = msg("1804", dup267); - -var msg3511 = msg("1804:01", dup268); - -var select1695 = linear_select([ - msg3510, - msg3511, -]); - -var msg3512 = msg("1805", dup265); - -var msg3513 = msg("1805:01", dup266); - -var select1696 = linear_select([ - msg3512, - msg3513, -]); - -var msg3514 = msg("1806", dup196); - -var msg3515 = msg("1806:01", dup217); - -var select1697 = linear_select([ - msg3514, - msg3515, -]); - -var msg3516 = msg("1807", dup265); - -var msg3517 = msg("1807:01", dup266); - -var select1698 = linear_select([ - msg3516, - msg3517, -]); - -var msg3518 = msg("1808", dup267); - -var msg3519 = msg("1808:01", dup268); - -var select1699 = linear_select([ - msg3518, - msg3519, -]); - -var msg3520 = msg("1809", dup238); - -var msg3521 = msg("1809:01", dup239); - -var select1700 = linear_select([ - msg3520, - msg3521, -]); - -var msg3522 = msg("1810", dup196); - -var msg3523 = msg("1810:01", dup217); - -var select1701 = linear_select([ - msg3522, - msg3523, -]); - -var msg3524 = msg("1811", dup196); - -var msg3525 = msg("1811:01", dup217); - -var select1702 = linear_select([ - msg3524, - msg3525, -]); - -var msg3526 = msg("1812", dup196); - -var msg3527 = msg("1812:01", dup217); - -var select1703 = linear_select([ - msg3526, - msg3527, -]); - -var msg3528 = msg("1813", dup232); - -var msg3529 = msg("1813:01", dup231); - -var select1704 = linear_select([ - msg3528, - msg3529, -]); - -var msg3530 = msg("1814", dup198); - -var msg3531 = msg("1814:01", dup220); - -var select1705 = linear_select([ - msg3530, - msg3531, -]); - -var msg3532 = msg("1815", dup265); - -var msg3533 = msg("1815:01", dup266); - -var select1706 = linear_select([ - msg3532, - msg3533, -]); - -var msg3534 = msg("1816", dup265); - -var msg3535 = msg("1816:01", dup266); - -var select1707 = linear_select([ - msg3534, - msg3535, -]); - -var msg3536 = msg("1817", dup265); - -var msg3537 = msg("1817:01", dup266); - -var select1708 = linear_select([ - msg3536, - msg3537, -]); - -var msg3538 = msg("1818", dup265); - -var msg3539 = msg("1818:01", dup266); - -var select1709 = linear_select([ - msg3538, - msg3539, -]); - -var msg3540 = msg("1819", dup196); - -var msg3541 = msg("1819:01", dup217); - -var select1710 = linear_select([ - msg3540, - msg3541, -]); - -var msg3542 = msg("1820", dup265); - -var msg3543 = msg("1820:01", dup266); - -var select1711 = linear_select([ - msg3542, - msg3543, -]); - -var msg3544 = msg("1821", dup201); - -var msg3545 = msg("1821:01", dup289); - -var select1712 = linear_select([ - msg3544, - msg3545, -]); - -var msg3546 = msg("1822", dup265); - -var msg3547 = msg("1822:01", dup266); - -var select1713 = linear_select([ - msg3546, - msg3547, -]); - -var msg3548 = msg("1823", dup265); - -var msg3549 = msg("1823:01", dup266); - -var select1714 = linear_select([ - msg3548, - msg3549, -]); - -var msg3550 = msg("1824", dup265); - -var msg3551 = msg("1824:01", dup266); - -var select1715 = linear_select([ - msg3550, - msg3551, -]); - -var msg3552 = msg("1825", dup265); - -var msg3553 = msg("1825:01", dup266); - -var select1716 = linear_select([ - msg3552, - msg3553, -]); - -var msg3554 = msg("1826", dup265); - -var msg3555 = msg("1826:01", dup266); - -var select1717 = linear_select([ - msg3554, - msg3555, -]); - -var msg3556 = msg("1827", dup265); - -var msg3557 = msg("1827:01", dup266); - -var select1718 = linear_select([ - msg3556, - msg3557, -]); - -var msg3558 = msg("1828", dup265); - -var msg3559 = msg("1828:01", dup266); - -var select1719 = linear_select([ - msg3558, - msg3559, -]); - -var msg3560 = msg("1829", dup265); - -var msg3561 = msg("1829:01", dup266); - -var select1720 = linear_select([ - msg3560, - msg3561, -]); - -var msg3562 = msg("1830", dup265); - -var msg3563 = msg("1830:01", dup266); - -var select1721 = linear_select([ - msg3562, - msg3563, -]); - -var msg3564 = msg("1831", dup198); - -var msg3565 = msg("1831:01", dup220); - -var select1722 = linear_select([ - msg3564, - msg3565, -]); - -var msg3566 = msg("1832", dup196); - -var msg3567 = msg("1832:01", dup217); - -var select1723 = linear_select([ - msg3566, - msg3567, -]); - -var msg3568 = msg("1833", dup281); - -var msg3569 = msg("1833:01", dup282); - -var select1724 = linear_select([ - msg3568, - msg3569, -]); - -var msg3570 = msg("1834", dup265); - -var msg3571 = msg("1834:01", dup266); - -var select1725 = linear_select([ - msg3570, - msg3571, -]); - -var msg3572 = msg("1835", dup265); - -var msg3573 = msg("1835:01", dup266); - -var select1726 = linear_select([ - msg3572, - msg3573, -]); - -var msg3574 = msg("1836", dup281); - -var msg3575 = msg("1836:01", dup282); - -var select1727 = linear_select([ - msg3574, - msg3575, -]); - -var msg3576 = msg("1837", dup281); - -var msg3577 = msg("1837:01", dup282); - -var select1728 = linear_select([ - msg3576, - msg3577, -]); - -var msg3578 = msg("1838", dup197); - -var msg3579 = msg("1838:01", dup221); - -var select1729 = linear_select([ - msg3578, - msg3579, -]); - -var msg3580 = msg("1839", dup265); - -var msg3581 = msg("1839:01", dup266); - -var select1730 = linear_select([ - msg3580, - msg3581, -]); - -var msg3582 = msg("1840", dup265); - -var msg3583 = msg("1840:01", dup266); - -var select1731 = linear_select([ - msg3582, - msg3583, -]); - -var msg3584 = msg("1841", dup265); - -var msg3585 = msg("1841:01", dup266); - -var select1732 = linear_select([ - msg3584, - msg3585, -]); - -var msg3586 = msg("1842", dup222); - -var msg3587 = msg("1842:01", dup223); - -var select1733 = linear_select([ - msg3586, - msg3587, -]); - -var msg3588 = msg("1843", dup205); - -var msg3589 = msg("1843:01", dup206); - -var select1734 = linear_select([ - msg3588, - msg3589, -]); - -var msg3590 = msg("1844", dup222); - -var msg3591 = msg("1844:01", dup223); - -var select1735 = linear_select([ - msg3590, - msg3591, -]); - -var msg3592 = msg("1845", dup222); - -var msg3593 = msg("1845:01", dup223); - -var select1736 = linear_select([ - msg3592, - msg3593, -]); - -var msg3594 = msg("1846", dup196); - -var msg3595 = msg("1846:01", dup217); - -var select1737 = linear_select([ - msg3594, - msg3595, -]); - -var msg3596 = msg("1847", dup265); - -var msg3597 = msg("1847:01", dup266); - -var select1738 = linear_select([ - msg3596, - msg3597, -]); - -var msg3598 = msg("1848", dup265); - -var msg3599 = msg("1848:01", dup266); - -var select1739 = linear_select([ - msg3598, - msg3599, -]); - -var msg3600 = msg("1849", dup265); - -var msg3601 = msg("1849:01", dup266); - -var select1740 = linear_select([ - msg3600, - msg3601, -]); - -var msg3602 = msg("1850", dup197); - -var msg3603 = msg("1850:01", dup221); - -var select1741 = linear_select([ - msg3602, - msg3603, -]); - -var msg3604 = msg("1851", dup265); - -var msg3605 = msg("1851:01", dup266); - -var select1742 = linear_select([ - msg3604, - msg3605, -]); - -var msg3606 = msg("1852", dup265); - -var msg3607 = msg("1852:01", dup266); - -var select1743 = linear_select([ - msg3606, - msg3607, -]); - -var msg3608 = msg("1853", dup205); - -var msg3609 = msg("1853:01", dup206); - -var select1744 = linear_select([ - msg3608, - msg3609, -]); - -var msg3610 = msg("1854", dup215); - -var msg3611 = msg("1854:01", dup216); - -var select1745 = linear_select([ - msg3610, - msg3611, -]); - -var msg3612 = msg("1855", dup215); - -var msg3613 = msg("1855:01", dup216); - -var select1746 = linear_select([ - msg3612, - msg3613, -]); - -var msg3614 = msg("1856", dup215); - -var msg3615 = msg("1856:01", dup216); - -var select1747 = linear_select([ - msg3614, - msg3615, -]); - -var msg3616 = msg("1857", dup265); - -var msg3617 = msg("1857:01", dup266); - -var select1748 = linear_select([ - msg3616, - msg3617, -]); - -var msg3618 = msg("1858", dup265); - -var msg3619 = msg("1858:01", dup266); - -var select1749 = linear_select([ - msg3618, - msg3619, -]); - -var msg3620 = msg("1859", dup265); - -var msg3621 = msg("1859:01", dup266); - -var select1750 = linear_select([ - msg3620, - msg3621, -]); - -var msg3622 = msg("1860", dup265); - -var msg3623 = msg("1860:01", dup266); - -var select1751 = linear_select([ - msg3622, - msg3623, -]); - -var msg3624 = msg("1861", dup265); - -var msg3625 = msg("1861:01", dup266); - -var select1752 = linear_select([ - msg3624, - msg3625, -]); - -var msg3626 = msg("1862", dup265); - -var msg3627 = msg("1862:01", dup266); - -var select1753 = linear_select([ - msg3626, - msg3627, -]); - -var msg3628 = msg("1863", dup267); - -var msg3629 = msg("1863:01", dup268); - -var select1754 = linear_select([ - msg3628, - msg3629, -]); - -var msg3630 = msg("1864", dup227); - -var msg3631 = msg("1864:01", dup228); - -var select1755 = linear_select([ - msg3630, - msg3631, -]); - -var msg3632 = msg("1865", dup265); - -var msg3633 = msg("1865:01", dup266); - -var select1756 = linear_select([ - msg3632, - msg3633, -]); - -var msg3634 = msg("1866", dup222); - -var msg3635 = msg("1866:01", dup223); - -var select1757 = linear_select([ - msg3634, - msg3635, -]); - -var msg3636 = msg("1867", dup196); - -var msg3637 = msg("1867:01", dup217); - -var select1758 = linear_select([ - msg3636, - msg3637, -]); - -var msg3638 = msg("1868", dup265); - -var msg3639 = msg("1869", dup265); - -var msg3640 = msg("1870", dup265); - -var msg3641 = msg("1870:01", dup266); - -var select1759 = linear_select([ - msg3640, - msg3641, -]); - -var msg3642 = msg("1871", dup240); - -var msg3643 = msg("1871:01", dup241); - -var select1760 = linear_select([ - msg3642, - msg3643, -]); - -var msg3644 = msg("1872", dup265); - -var msg3645 = msg("1872:01", dup266); - -var select1761 = linear_select([ - msg3644, - msg3645, -]); - -var msg3646 = msg("1873", dup265); - -var msg3647 = msg("1873:01", dup266); - -var select1762 = linear_select([ - msg3646, - msg3647, -]); - -var msg3648 = msg("1874", dup265); - -var msg3649 = msg("1874:01", dup266); - -var select1763 = linear_select([ - msg3648, - msg3649, -]); - -var msg3650 = msg("1875", dup265); - -var msg3651 = msg("1875:01", dup266); - -var select1764 = linear_select([ - msg3650, - msg3651, -]); - -var msg3652 = msg("1876", dup265); - -var msg3653 = msg("1876:01", dup266); - -var select1765 = linear_select([ - msg3652, - msg3653, -]); - -var msg3654 = msg("1877", dup265); - -var msg3655 = msg("1877:01", dup266); - -var select1766 = linear_select([ - msg3654, - msg3655, -]); - -var msg3656 = msg("1878", dup265); - -var msg3657 = msg("1878:01", dup266); - -var select1767 = linear_select([ - msg3656, - msg3657, -]); - -var msg3658 = msg("1879", dup269); - -var msg3659 = msg("1879:01", dup270); - -var select1768 = linear_select([ - msg3658, - msg3659, -]); - -var msg3660 = msg("1880", dup265); - -var msg3661 = msg("1880:01", dup266); - -var select1769 = linear_select([ - msg3660, - msg3661, -]); - -var msg3662 = msg("1881", dup238); - -var msg3663 = msg("1881:01", dup239); - -var select1770 = linear_select([ - msg3662, - msg3663, -]); - -var msg3664 = msg("1882", dup196); - -var msg3665 = msg("1882:01", dup217); - -var select1771 = linear_select([ - msg3664, - msg3665, -]); - -var msg3666 = msg("1883", dup196); - -var msg3667 = msg("1883:01", dup217); - -var select1772 = linear_select([ - msg3666, - msg3667, -]); - -var msg3668 = msg("1884", dup196); - -var msg3669 = msg("1884:01", dup217); - -var select1773 = linear_select([ - msg3668, - msg3669, -]); - -var msg3670 = msg("1885", dup196); - -var msg3671 = msg("1885:01", dup217); - -var select1774 = linear_select([ - msg3670, - msg3671, -]); - -var msg3672 = msg("1886", dup196); - -var msg3673 = msg("1886:01", dup217); - -var select1775 = linear_select([ - msg3672, - msg3673, -]); - -var msg3674 = msg("1887", dup238); - -var msg3675 = msg("1887:01", dup239); - -var select1776 = linear_select([ - msg3674, - msg3675, -]); - -var msg3676 = msg("1888", dup222); - -var msg3677 = msg("1888:01", dup223); - -var select1777 = linear_select([ - msg3676, - msg3677, -]); - -var msg3678 = msg("1889", dup290); - -var all40 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg3679 = msg("1889:01", all40); - -var select1778 = linear_select([ - msg3678, - msg3679, -]); - -var msg3680 = msg("1890", dup208); - -var msg3681 = msg("1890:01", dup291); - -var select1779 = linear_select([ - msg3680, - msg3681, -]); - -var msg3682 = msg("1891", dup208); - -var msg3683 = msg("1891:01", dup291); - -var select1780 = linear_select([ - msg3682, - msg3683, -]); - -var msg3684 = msg("1892", dup292); - -var msg3685 = msg("1893", dup292); - -var all41 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg3686 = msg("1893:01", all41); - -var select1781 = linear_select([ - msg3685, - msg3686, -]); - -var msg3687 = msg("1894", dup293); - -var msg3688 = msg("1894:01", dup294); - -var select1782 = linear_select([ - msg3687, - msg3688, -]); - -var msg3689 = msg("1895", dup293); - -var msg3690 = msg("1895:01", dup294); - -var select1783 = linear_select([ - msg3689, - msg3690, -]); - -var msg3691 = msg("1896", dup293); - -var msg3692 = msg("1896:01", dup294); - -var select1784 = linear_select([ - msg3691, - msg3692, -]); - -var msg3693 = msg("1897", dup293); - -var msg3694 = msg("1897:01", dup294); - -var select1785 = linear_select([ - msg3693, - msg3694, -]); - -var msg3695 = msg("1898", dup293); - -var msg3696 = msg("1898:01", dup294); - -var select1786 = linear_select([ - msg3695, - msg3696, -]); - -var msg3697 = msg("1899", dup293); - -var msg3698 = msg("1899:01", dup294); - -var select1787 = linear_select([ - msg3697, - msg3698, -]); - -var msg3699 = msg("1900", dup293); - -var msg3700 = msg("1900:01", dup294); - -var select1788 = linear_select([ - msg3699, - msg3700, -]); - -var msg3701 = msg("1901", dup222); - -var msg3702 = msg("1901:01", dup223); - -var select1789 = linear_select([ - msg3701, - msg3702, -]); - -var msg3703 = msg("1902", dup222); - -var msg3704 = msg("1902:01", dup223); - -var select1790 = linear_select([ - msg3703, - msg3704, -]); - -var msg3705 = msg("1903", dup222); - -var msg3706 = msg("1903:01", dup223); - -var select1791 = linear_select([ - msg3705, - msg3706, -]); - -var msg3707 = msg("1904", dup222); - -var msg3708 = msg("1904:01", dup223); - -var select1792 = linear_select([ - msg3707, - msg3708, -]); - -var msg3709 = msg("1905", dup222); - -var msg3710 = msg("1905:01", dup223); - -var select1793 = linear_select([ - msg3709, - msg3710, -]); - -var msg3711 = msg("1906", dup201); - -var msg3712 = msg("1906:01", dup289); - -var select1794 = linear_select([ - msg3711, - msg3712, -]); - -var msg3713 = msg("1907", dup222); - -var msg3714 = msg("1907:01", dup217); - -var select1795 = linear_select([ - msg3713, - msg3714, -]); - -var msg3715 = msg("1908", dup201); - -var msg3716 = msg("1908:01", dup289); - -var select1796 = linear_select([ - msg3715, - msg3716, -]); - -var msg3717 = msg("1909", dup201); - -var msg3718 = msg("1909:01", dup289); - -var select1797 = linear_select([ - msg3717, - msg3718, -]); - -var msg3719 = msg("1910", dup222); - -var msg3720 = msg("1910:01", dup217); - -var select1798 = linear_select([ - msg3719, - msg3720, -]); - -var msg3721 = msg("1911", dup222); - -var msg3722 = msg("1911:01", dup223); - -var select1799 = linear_select([ - msg3721, - msg3722, -]); - -var msg3723 = msg("1912", dup201); - -var msg3724 = msg("1912:01", dup289); - -var select1800 = linear_select([ - msg3723, - msg3724, -]); - -var msg3725 = msg("1913", dup255); - -var msg3726 = msg("1913:01", dup217); - -var select1801 = linear_select([ - msg3725, - msg3726, -]); - -var msg3727 = msg("1914", dup201); - -var msg3728 = msg("1914:01", dup217); - -var select1802 = linear_select([ - msg3727, - msg3728, -]); - -var msg3729 = msg("1915", dup255); - -var msg3730 = msg("1915:01", dup217); - -var select1803 = linear_select([ - msg3729, - msg3730, -]); - -var msg3731 = msg("1916", dup201); - -var msg3732 = msg("1916:01", dup217); - -var select1804 = linear_select([ - msg3731, - msg3732, -]); - -var msg3733 = msg("1917", dup194); - -var msg3734 = msg("1917:01", dup217); - -var select1805 = linear_select([ - msg3733, - msg3734, -]); - -var msg3735 = msg("1918", dup234); - -var msg3736 = msg("1918:01", dup235); - -var select1806 = linear_select([ - msg3735, - msg3736, -]); - -var msg3737 = msg("1919", dup222); - -var msg3738 = msg("1919:01", dup223); - -var select1807 = linear_select([ - msg3737, - msg3738, -]); - -var msg3739 = msg("1920", dup222); - -var msg3740 = msg("1920:01", dup223); - -var select1808 = linear_select([ - msg3739, - msg3740, -]); - -var msg3741 = msg("1921", dup201); - -var msg3742 = msg("1921:01", dup289); - -var select1809 = linear_select([ - msg3741, - msg3742, -]); - -var msg3743 = msg("1922", dup255); - -var msg3744 = msg("1922:01", dup217); - -var select1810 = linear_select([ - msg3743, - msg3744, -]); - -var msg3745 = msg("1923", dup258); - -var all42 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup85, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg3746 = msg("1923:01", all42); - -var select1811 = linear_select([ - msg3745, - msg3746, -]); - -var msg3747 = msg("1924", dup255); - -var msg3748 = msg("1924:01", dup216); - -var select1812 = linear_select([ - msg3747, - msg3748, -]); - -var msg3749 = msg("1925", dup287); - -var msg3750 = msg("1925:01", dup288); - -var select1813 = linear_select([ - msg3749, - msg3750, -]); - -var msg3751 = msg("1926", dup255); - -var msg3752 = msg("1926:01", dup256); - -var select1814 = linear_select([ - msg3751, - msg3752, -]); - -var msg3753 = msg("1927", dup227); - -var msg3754 = msg("1927:01", dup216); - -var select1815 = linear_select([ - msg3753, - msg3754, -]); - -var msg3755 = msg("1928", dup227); - -var msg3756 = msg("1928:01", dup216); - -var select1816 = linear_select([ - msg3755, - msg3756, -]); - -var msg3757 = msg("1929", dup192); - -var msg3758 = msg("1929:01", dup216); - -var select1817 = linear_select([ - msg3757, - msg3758, -]); - -var msg3759 = msg("1930", dup222); - -var msg3760 = msg("1930:01", dup223); - -var select1818 = linear_select([ - msg3759, - msg3760, -]); - -var msg3761 = msg("1931", dup265); - -var msg3762 = msg("1931:01", dup266); - -var select1819 = linear_select([ - msg3761, - msg3762, -]); - -var msg3763 = msg("1932", dup265); - -var msg3764 = msg("1932:01", dup216); - -var select1820 = linear_select([ - msg3763, - msg3764, -]); - -var msg3765 = msg("1933", dup265); - -var msg3766 = msg("1933:01", dup266); - -var select1821 = linear_select([ - msg3765, - msg3766, -]); - -var msg3767 = msg("1934", dup222); - -var msg3768 = msg("1934:01", dup223); - -var select1822 = linear_select([ - msg3767, - msg3768, -]); - -var msg3769 = msg("1935", dup196); - -var msg3770 = msg("1935:01", dup217); - -var select1823 = linear_select([ - msg3769, - msg3770, -]); - -var msg3771 = msg("1936", dup222); - -var msg3772 = msg("1936:01", dup223); - -var select1824 = linear_select([ - msg3771, - msg3772, -]); - -var msg3773 = msg("1937", dup222); - -var msg3774 = msg("1937:01", dup219); - -var select1825 = linear_select([ - msg3773, - msg3774, -]); - -var msg3775 = msg("1938", dup222); - -var msg3776 = msg("1938:01", dup219); - -var select1826 = linear_select([ - msg3775, - msg3776, -]); - -var msg3777 = msg("1939", dup197); - -var msg3778 = msg("1939:01", dup219); - -var select1827 = linear_select([ - msg3777, - msg3778, -]); - -var msg3779 = msg("1940", dup196); - -var msg3780 = msg("1940:01", dup217); - -var select1828 = linear_select([ - msg3779, - msg3780, -]); - -var msg3781 = msg("1941", dup295); - -var msg3782 = msg("1941:01", dup296); - -var select1829 = linear_select([ - msg3781, - msg3782, -]); - -var msg3783 = msg("1942", dup222); - -var msg3784 = msg("1942:01", dup219); - -var select1830 = linear_select([ - msg3783, - msg3784, -]); - -var msg3785 = msg("1943", dup265); - -var msg3786 = msg("1943:01", dup266); - -var select1831 = linear_select([ - msg3785, - msg3786, -]); - -var msg3787 = msg("1944", dup265); - -var msg3788 = msg("1944:01", dup266); - -var select1832 = linear_select([ - msg3787, - msg3788, -]); - -var msg3789 = msg("1945", dup265); - -var msg3790 = msg("1945:01", dup266); - -var select1833 = linear_select([ - msg3789, - msg3790, -]); - -var msg3791 = msg("1946", dup265); - -var msg3792 = msg("1946:01", dup266); - -var select1834 = linear_select([ - msg3791, - msg3792, -]); - -var msg3793 = msg("1947", dup269); - -var msg3794 = msg("1947:01", dup270); - -var select1835 = linear_select([ - msg3793, - msg3794, -]); - -var msg3795 = msg("1948", dup196); - -var msg3796 = msg("1948:01", dup217); - -var select1836 = linear_select([ - msg3795, - msg3796, -]); - -var msg3797 = msg("1949", dup255); - -var msg3798 = msg("1949:01", dup220); - -var select1837 = linear_select([ - msg3797, - msg3798, -]); - -var msg3799 = msg("1950", dup258); - -var all43 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg3800 = msg("1950:01", all43); - -var select1838 = linear_select([ - msg3799, - msg3800, -]); - -var msg3801 = msg("1951", dup287); - -var msg3802 = msg("1951:01", dup288); - -var select1839 = linear_select([ - msg3801, - msg3802, -]); - -var msg3803 = msg("1952", dup255); - -var msg3804 = msg("1952:01", dup266); - -var select1840 = linear_select([ - msg3803, - msg3804, -]); - -var msg3805 = msg("1953", dup287); - -var msg3806 = msg("1953:01", dup288); - -var select1841 = linear_select([ - msg3805, - msg3806, -]); - -var msg3807 = msg("1954", dup255); - -var msg3808 = msg("1954:01", dup256); - -var select1842 = linear_select([ - msg3807, - msg3808, -]); - -var msg3809 = msg("1955", dup287); - -var msg3810 = msg("1955:01", dup221); - -var select1843 = linear_select([ - msg3809, - msg3810, -]); - -var msg3811 = msg("1956", dup255); - -var msg3812 = msg("1956:01", dup217); - -var select1844 = linear_select([ - msg3811, - msg3812, -]); - -var msg3813 = msg("1957", dup258); - -var msg3814 = msg("1957:01", dup259); - -var select1845 = linear_select([ - msg3813, - msg3814, -]); - -var msg3815 = msg("1958", dup255); - -var msg3816 = msg("1958:01", dup256); - -var select1846 = linear_select([ - msg3815, - msg3816, -]); - -var msg3817 = msg("1959", dup280); - -var msg3818 = msg("1959:01", dup245); - -var select1847 = linear_select([ - msg3817, - msg3818, -]); - -var msg3819 = msg("1960", dup257); - -var msg3820 = msg("1960:01", dup221); - -var select1848 = linear_select([ - msg3819, - msg3820, -]); - -var msg3821 = msg("1961", dup258); - -var all44 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup88, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var msg3822 = msg("1961:01", all44); - -var select1849 = linear_select([ - msg3821, - msg3822, -]); - -var msg3823 = msg("1962", dup255); - -var msg3824 = msg("1962:01", dup226); - -var select1850 = linear_select([ - msg3823, - msg3824, -]); - -var msg3825 = msg("1963", dup222); - -var msg3826 = msg("1963:01", dup223); - -var select1851 = linear_select([ - msg3825, - msg3826, -]); - -var msg3827 = msg("1964", dup222); - -var msg3828 = msg("1964:01", dup223); - -var select1852 = linear_select([ - msg3827, - msg3828, -]); - -var msg3829 = msg("1965", dup201); - -var msg3830 = msg("1965:01", dup226); - -var select1853 = linear_select([ - msg3829, - msg3830, -]); - -var msg3831 = msg("1966", dup196); - -var msg3832 = msg("1966:01", dup226); - -var select1854 = linear_select([ - msg3831, - msg3832, -]); - -var msg3833 = msg("1967", dup265); - -var msg3834 = msg("1967:01", dup226); - -var select1855 = linear_select([ - msg3833, - msg3834, -]); - -var msg3835 = msg("1968", dup265); - -var msg3836 = msg("1968:01", dup226); - -var select1856 = linear_select([ - msg3835, - msg3836, -]); - -var msg3837 = msg("1969", dup265); - -var msg3838 = msg("1969:01", dup228); - -var select1857 = linear_select([ - msg3837, - msg3838, -]); - -var msg3839 = msg("1970", dup297); - -var msg3840 = msg("1970:01", dup228); - -var select1858 = linear_select([ - msg3839, - msg3840, -]); - -var msg3841 = msg("1971", dup227); - -var msg3842 = msg("1971:01", dup223); - -var select1859 = linear_select([ - msg3841, - msg3842, -]); - -var msg3843 = msg("1972", dup222); - -var msg3844 = msg("1972:01", dup223); - -var select1860 = linear_select([ - msg3843, - msg3844, -]); - -var msg3845 = msg("1973", dup222); - -var msg3846 = msg("1973:01", dup228); - -var select1861 = linear_select([ - msg3845, - msg3846, -]); - -var msg3847 = msg("1974", dup222); - -var msg3848 = msg("1974:01", dup223); - -var select1862 = linear_select([ - msg3847, - msg3848, -]); - -var msg3849 = msg("1975", dup222); - -var msg3850 = msg("1975:01", dup228); - -var select1863 = linear_select([ - msg3849, - msg3850, -]); - -var msg3851 = msg("1976", dup222); - -var msg3852 = msg("1976:01", dup223); - -var select1864 = linear_select([ - msg3851, - msg3852, -]); - -var msg3853 = msg("1977", dup265); - -var msg3854 = msg("1977:01", dup223); - -var select1865 = linear_select([ - msg3853, - msg3854, -]); - -var msg3855 = msg("1978", dup265); - -var msg3856 = msg("1978:01", dup266); - -var select1866 = linear_select([ - msg3855, - msg3856, -]); - -var msg3857 = msg("1979", dup265); - -var msg3858 = msg("1979:01", dup266); - -var select1867 = linear_select([ - msg3857, - msg3858, -]); - -var msg3859 = msg("1980", dup192); - -var msg3860 = msg("1980:01", dup262); - -var select1868 = linear_select([ - msg3859, - msg3860, -]); - -var msg3861 = msg("1981", dup192); - -var msg3862 = msg("1981:01", dup262); - -var select1869 = linear_select([ - msg3861, - msg3862, -]); - -var msg3863 = msg("1982", dup192); - -var msg3864 = msg("1982:01", dup262); - -var select1870 = linear_select([ - msg3863, - msg3864, -]); - -var msg3865 = msg("1983", dup192); - -var msg3866 = msg("1983:01", dup262); - -var select1871 = linear_select([ - msg3865, - msg3866, -]); - -var msg3867 = msg("1984", dup192); - -var msg3868 = msg("1984:01", dup262); - -var select1872 = linear_select([ - msg3867, - msg3868, -]); - -var msg3869 = msg("1985", dup192); - -var msg3870 = msg("1985:01", dup262); - -var select1873 = linear_select([ - msg3869, - msg3870, -]); - -var msg3871 = msg("1986", dup196); - -var msg3872 = msg("1986:01", dup217); - -var select1874 = linear_select([ - msg3871, - msg3872, -]); - -var msg3873 = msg("1987", dup222); - -var msg3874 = msg("1987:01", dup223); - -var select1875 = linear_select([ - msg3873, - msg3874, -]); - -var msg3875 = msg("1988", dup196); - -var msg3876 = msg("1988:01", dup217); - -var select1876 = linear_select([ - msg3875, - msg3876, -]); - -var msg3877 = msg("1989", dup196); - -var msg3878 = msg("1989:01", dup217); - -var select1877 = linear_select([ - msg3877, - msg3878, -]); - -var msg3879 = msg("1990", dup196); - -var msg3880 = msg("1990:01", dup217); - -var select1878 = linear_select([ - msg3879, - msg3880, -]); - -var msg3881 = msg("1991", dup196); - -var msg3882 = msg("1991:01", dup217); - -var select1879 = linear_select([ - msg3881, - msg3882, -]); - -var msg3883 = msg("1992", dup227); - -var msg3884 = msg("1992:01", dup228); - -var select1880 = linear_select([ - msg3883, - msg3884, -]); - -var msg3885 = msg("1993", dup222); - -var msg3886 = msg("1993:01", dup223); - -var select1881 = linear_select([ - msg3885, - msg3886, -]); - -var msg3887 = msg("1994", dup265); - -var msg3888 = msg("1994:01", dup266); - -var select1882 = linear_select([ - msg3887, - msg3888, -]); - -var msg3889 = msg("1995", dup265); - -var msg3890 = msg("1995:01", dup266); - -var select1883 = linear_select([ - msg3889, - msg3890, -]); - -var msg3891 = msg("1996", dup265); - -var msg3892 = msg("1996:01", dup266); - -var select1884 = linear_select([ - msg3891, - msg3892, -]); - -var msg3893 = msg("1997", dup265); - -var msg3894 = msg("1997:01", dup266); - -var select1885 = linear_select([ - msg3893, - msg3894, -]); - -var msg3895 = msg("1998", dup265); - -var msg3896 = msg("1998:01", dup266); - -var select1886 = linear_select([ - msg3895, - msg3896, -]); - -var msg3897 = msg("1999", dup265); - -var msg3898 = msg("1999:01", dup266); - -var select1887 = linear_select([ - msg3897, - msg3898, -]); - -var msg3899 = msg("2000", dup265); - -var msg3900 = msg("2000:01", dup266); - -var select1888 = linear_select([ - msg3899, - msg3900, -]); - -var msg3901 = msg("2001", dup265); - -var msg3902 = msg("2001:01", dup266); - -var select1889 = linear_select([ - msg3901, - msg3902, -]); - -var msg3903 = msg("2002", dup196); - -var msg3904 = msg("2002:01", dup217); - -var select1890 = linear_select([ - msg3903, - msg3904, -]); - -var msg3905 = msg("2003", dup238); - -var msg3906 = msg("2003:01", dup239); - -var select1891 = linear_select([ - msg3905, - msg3906, -]); - -var msg3907 = msg("2004", dup238); - -var msg3908 = msg("2004:01", dup239); - -var select1892 = linear_select([ - msg3907, - msg3908, -]); - -var msg3909 = msg("2005", dup258); - -var msg3910 = msg("2005:01", dup259); - -var select1893 = linear_select([ - msg3909, - msg3910, -]); - -var msg3911 = msg("2006", dup255); - -var msg3912 = msg("2006:01", dup256); - -var select1894 = linear_select([ - msg3911, - msg3912, -]); - -var msg3913 = msg("2007", dup255); - -var msg3914 = msg("2007:01", dup256); - -var select1895 = linear_select([ - msg3913, - msg3914, -]); - -var msg3915 = msg("2008", dup196); - -var msg3916 = msg("2008:01", dup217); - -var select1896 = linear_select([ - msg3915, - msg3916, -]); - -var msg3917 = msg("2009", dup196); - -var msg3918 = msg("2009:01", dup217); - -var select1897 = linear_select([ - msg3917, - msg3918, -]); - -var msg3919 = msg("2010", dup196); - -var msg3920 = msg("2010:01", dup217); - -var select1898 = linear_select([ - msg3919, - msg3920, -]); - -var msg3921 = msg("2011", dup196); - -var msg3922 = msg("2011:01", dup217); - -var select1899 = linear_select([ - msg3921, - msg3922, -]); - -var msg3923 = msg("2012", dup196); - -var msg3924 = msg("2012:01", dup217); - -var select1900 = linear_select([ - msg3923, - msg3924, -]); - -var msg3925 = msg("2013", dup196); - -var msg3926 = msg("2013:01", dup217); - -var select1901 = linear_select([ - msg3925, - msg3926, -]); - -var msg3927 = msg("2014", dup255); - -var msg3928 = msg("2014:01", dup256); - -var select1902 = linear_select([ - msg3927, - msg3928, -]); - -var msg3929 = msg("2015", dup258); - -var msg3930 = msg("2015:01", dup259); - -var select1903 = linear_select([ - msg3929, - msg3930, -]); - -var msg3931 = msg("2016", dup255); - -var msg3932 = msg("2016:01", dup256); - -var select1904 = linear_select([ - msg3931, - msg3932, -]); - -var msg3933 = msg("2017", dup258); - -var msg3934 = msg("2017:01", dup259); - -var select1905 = linear_select([ - msg3933, - msg3934, -]); - -var msg3935 = msg("2018", dup287); - -var msg3936 = msg("2018:01", dup288); - -var select1906 = linear_select([ - msg3935, - msg3936, -]); - -var msg3937 = msg("2019", dup255); - -var msg3938 = msg("2019:01", dup256); - -var select1907 = linear_select([ - msg3937, - msg3938, -]); - -var msg3939 = msg("2020", dup287); - -var msg3940 = msg("2020:01", dup288); - -var select1908 = linear_select([ - msg3939, - msg3940, -]); - -var msg3941 = msg("2021", dup255); - -var msg3942 = msg("2021:01", dup256); - -var select1909 = linear_select([ - msg3941, - msg3942, -]); - -var msg3943 = msg("2022", dup287); - -var msg3944 = msg("2022:01", dup288); - -var select1910 = linear_select([ - msg3943, - msg3944, -]); - -var msg3945 = msg("2023", dup255); - -var msg3946 = msg("2023:01", dup256); - -var select1911 = linear_select([ - msg3945, - msg3946, -]); - -var msg3947 = msg("2024", dup222); - -var msg3948 = msg("2024:01", dup223); - -var select1912 = linear_select([ - msg3947, - msg3948, -]); - -var msg3949 = msg("2025", dup222); - -var msg3950 = msg("2025:01", dup223); - -var select1913 = linear_select([ - msg3949, - msg3950, -]); - -var msg3951 = msg("2026", dup222); - -var msg3952 = msg("2026:01", dup223); - -var select1914 = linear_select([ - msg3951, - msg3952, -]); - -var msg3953 = msg("2027", dup222); - -var msg3954 = msg("2027:01", dup223); - -var select1915 = linear_select([ - msg3953, - msg3954, -]); - -var msg3955 = msg("2028", dup222); - -var msg3956 = msg("2028:01", dup223); - -var select1916 = linear_select([ - msg3955, - msg3956, -]); - -var msg3957 = msg("2029", dup222); - -var msg3958 = msg("2029:01", dup223); - -var select1917 = linear_select([ - msg3957, - msg3958, -]); - -var msg3959 = msg("2030", dup222); - -var msg3960 = msg("2030:01", dup223); - -var select1918 = linear_select([ - msg3959, - msg3960, -]); - -var msg3961 = msg("2031", dup255); - -var msg3962 = msg("2031:01", dup256); - -var select1919 = linear_select([ - msg3961, - msg3962, -]); - -var msg3963 = msg("2032", dup255); - -var msg3964 = msg("2032:01", dup256); - -var select1920 = linear_select([ - msg3963, - msg3964, -]); - -var msg3965 = msg("2033", dup255); - -var msg3966 = msg("2033:01", dup256); - -var select1921 = linear_select([ - msg3965, - msg3966, -]); - -var msg3967 = msg("2034", dup255); - -var msg3968 = msg("2034:01", dup256); - -var select1922 = linear_select([ - msg3967, - msg3968, -]); - -var msg3969 = msg("2035", dup258); - -var msg3970 = msg("2035:01", dup259); - -var select1923 = linear_select([ - msg3969, - msg3970, -]); - -var msg3971 = msg("2036", dup255); - -var msg3972 = msg("2036:01", dup256); - -var select1924 = linear_select([ - msg3971, - msg3972, -]); - -var msg3973 = msg("2037", dup255); - -var msg3974 = msg("2037:01", dup256); - -var select1925 = linear_select([ - msg3973, - msg3974, -]); - -var msg3975 = msg("2038", dup255); - -var msg3976 = msg("2038:01", dup256); - -var select1926 = linear_select([ - msg3975, - msg3976, -]); - -var msg3977 = msg("2039", dup196); - -var msg3978 = msg("2039:01", dup217); - -var select1927 = linear_select([ - msg3977, - msg3978, -]); - -var msg3979 = msg("2040", dup196); - -var msg3980 = msg("2040:01", dup217); - -var select1928 = linear_select([ - msg3979, - msg3980, -]); - -var msg3981 = msg("2041", dup236); - -var msg3982 = msg("2041:01", dup237); - -var select1929 = linear_select([ - msg3981, - msg3982, -]); - -var msg3983 = msg("2042", dup196); - -var msg3984 = msg("2042:01", dup217); - -var select1930 = linear_select([ - msg3983, - msg3984, -]); - -var msg3985 = msg("2043", dup236); - -var msg3986 = msg("2043:01", dup237); - -var select1931 = linear_select([ - msg3985, - msg3986, -]); - -var msg3987 = msg("2044", dup196); - -var msg3988 = msg("2044:01", dup217); - -var select1932 = linear_select([ - msg3987, - msg3988, -]); - -var msg3989 = msg("2045", dup222); - -var msg3990 = msg("2045:01", dup223); - -var select1933 = linear_select([ - msg3989, - msg3990, -]); - -var msg3991 = msg("2046", dup222); - -var msg3992 = msg("2046:01", dup223); - -var select1934 = linear_select([ - msg3991, - msg3992, -]); - -var msg3993 = msg("2047", dup196); - -var msg3994 = msg("2047:01", dup217); - -var select1935 = linear_select([ - msg3993, - msg3994, -]); - -var msg3995 = msg("2048", dup222); - -var msg3996 = msg("2048:01", dup223); - -var select1936 = linear_select([ - msg3995, - msg3996, -]); - -var msg3997 = msg("2049", dup240); - -var msg3998 = msg("2049:01", dup241); - -var select1937 = linear_select([ - msg3997, - msg3998, -]); - -var msg3999 = msg("2050", dup260); - -var msg4000 = msg("2050:01", dup261); - -var select1938 = linear_select([ - msg3999, - msg4000, -]); - -var msg4001 = msg("2051", dup265); - -var msg4002 = msg("2051:01", dup266); - -var select1939 = linear_select([ - msg4001, - msg4002, -]); - -var msg4003 = msg("2052", dup197); - -var msg4004 = msg("2052:01", dup221); - -var select1940 = linear_select([ - msg4003, - msg4004, -]); - -var msg4005 = msg("2053", dup265); - -var msg4006 = msg("2053:01", dup266); - -var select1941 = linear_select([ - msg4005, - msg4006, -]); - -var msg4007 = msg("2054", dup265); - -var msg4008 = msg("2054:01", dup266); - -var select1942 = linear_select([ - msg4007, - msg4008, -]); - -var msg4009 = msg("2055", dup265); - -var msg4010 = msg("2055:01", dup266); - -var select1943 = linear_select([ - msg4009, - msg4010, -]); - -var msg4011 = msg("2056", dup265); - -var msg4012 = msg("2056:01", dup266); - -var select1944 = linear_select([ - msg4011, - msg4012, -]); - -var msg4013 = msg("2057", dup265); - -var msg4014 = msg("2057:01", dup266); - -var select1945 = linear_select([ - msg4013, - msg4014, -]); - -var msg4015 = msg("2058", dup265); - -var msg4016 = msg("2058:01", dup266); - -var select1946 = linear_select([ - msg4015, - msg4016, -]); - -var msg4017 = msg("2059", dup265); - -var msg4018 = msg("2059:01", dup266); - -var select1947 = linear_select([ - msg4017, - msg4018, -]); - -var msg4019 = msg("2060", dup265); - -var msg4020 = msg("2060:01", dup266); - -var select1948 = linear_select([ - msg4019, - msg4020, -]); - -var msg4021 = msg("2061", dup265); - -var msg4022 = msg("2061:01", dup266); - -var select1949 = linear_select([ - msg4021, - msg4022, -]); - -var msg4023 = msg("2062", dup265); - -var msg4024 = msg("2062:01", dup266); - -var select1950 = linear_select([ - msg4023, - msg4024, -]); - -var msg4025 = msg("2063", dup260); - -var msg4026 = msg("2063:01", dup261); - -var select1951 = linear_select([ - msg4025, - msg4026, -]); - -var msg4027 = msg("2064", dup265); - -var msg4028 = msg("2064:01", dup266); - -var select1952 = linear_select([ - msg4027, - msg4028, -]); - -var msg4029 = msg("2065", dup265); - -var msg4030 = msg("2065:01", dup266); - -var select1953 = linear_select([ - msg4029, - msg4030, -]); - -var msg4031 = msg("2066", dup265); - -var msg4032 = msg("2066:01", dup266); - -var select1954 = linear_select([ - msg4031, - msg4032, -]); - -var msg4033 = msg("2067", dup265); - -var msg4034 = msg("2067:01", dup266); - -var select1955 = linear_select([ - msg4033, - msg4034, -]); - -var msg4035 = msg("2068", dup265); - -var msg4036 = msg("2068:01", dup266); - -var select1956 = linear_select([ - msg4035, - msg4036, -]); - -var msg4037 = msg("2069", dup265); - -var msg4038 = msg("2069:01", dup266); - -var select1957 = linear_select([ - msg4037, - msg4038, -]); - -var msg4039 = msg("2070", dup265); - -var msg4040 = msg("2070:01", dup266); - -var select1958 = linear_select([ - msg4039, - msg4040, -]); - -var msg4041 = msg("2071", dup265); - -var msg4042 = msg("2071:01", dup266); - -var select1959 = linear_select([ - msg4041, - msg4042, -]); - -var msg4043 = msg("2072", dup265); - -var msg4044 = msg("2072:01", dup266); - -var select1960 = linear_select([ - msg4043, - msg4044, -]); - -var msg4045 = msg("2073", dup265); - -var msg4046 = msg("2073:01", dup266); - -var select1961 = linear_select([ - msg4045, - msg4046, -]); - -var msg4047 = msg("2074", dup265); - -var msg4048 = msg("2074:01", dup266); - -var select1962 = linear_select([ - msg4047, - msg4048, -]); - -var msg4049 = msg("2075", dup265); - -var msg4050 = msg("2075:01", dup266); - -var select1963 = linear_select([ - msg4049, - msg4050, -]); - -var msg4051 = msg("2076", dup265); - -var msg4052 = msg("2076:01", dup266); - -var select1964 = linear_select([ - msg4051, - msg4052, -]); - -var msg4053 = msg("2077", dup265); - -var msg4054 = msg("2077:01", dup266); - -var select1965 = linear_select([ - msg4053, - msg4054, -]); - -var msg4055 = msg("2078", dup265); - -var msg4056 = msg("2078:01", dup266); - -var select1966 = linear_select([ - msg4055, - msg4056, -]); - -var msg4057 = msg("2079", dup258); - -var msg4058 = msg("2079:01", dup259); - -var select1967 = linear_select([ - msg4057, - msg4058, -]); - -var msg4059 = msg("2080", dup255); - -var msg4060 = msg("2080:01", dup256); - -var select1968 = linear_select([ - msg4059, - msg4060, -]); - -var msg4061 = msg("2081", dup258); - -var msg4062 = msg("2081:01", dup259); - -var select1969 = linear_select([ - msg4061, - msg4062, -]); - -var msg4063 = msg("2082", dup255); - -var msg4064 = msg("2082:01", dup256); - -var select1970 = linear_select([ - msg4063, - msg4064, -]); - -var msg4065 = msg("2083", dup255); - -var msg4066 = msg("2083:01", dup256); - -var select1971 = linear_select([ - msg4065, - msg4066, -]); - -var msg4067 = msg("2084", dup255); - -var msg4068 = msg("2084:01", dup256); - -var select1972 = linear_select([ - msg4067, - msg4068, -]); - -var msg4069 = msg("2085", dup265); - -var msg4070 = msg("2085:01", dup266); - -var select1973 = linear_select([ - msg4069, - msg4070, -]); - -var msg4071 = msg("2086", dup265); - -var msg4072 = msg("2086:01", dup266); - -var select1974 = linear_select([ - msg4071, - msg4072, -]); - -var msg4073 = msg("2087", dup222); - -var msg4074 = msg("2087:01", dup223); - -var select1975 = linear_select([ - msg4073, - msg4074, -]); - -var msg4075 = msg("2088", dup255); - -var msg4076 = msg("2088:01", dup256); - -var select1976 = linear_select([ - msg4075, - msg4076, -]); - -var msg4077 = msg("2089", dup255); - -var msg4078 = msg("2089:01", dup256); - -var select1977 = linear_select([ - msg4077, - msg4078, -]); - -var msg4079 = msg("2090", dup267); - -var msg4080 = msg("2090:01", dup268); - -var select1978 = linear_select([ - msg4079, - msg4080, -]); - -var msg4081 = msg("2091", dup194); - -var msg4082 = msg("2091:01", dup229); - -var select1979 = linear_select([ - msg4081, - msg4082, -]); - -var msg4083 = msg("2092", dup222); - -var msg4084 = msg("2092:01", dup223); - -var select1980 = linear_select([ - msg4083, - msg4084, -]); - -var msg4085 = msg("2093", dup222); - -var msg4086 = msg("2093:01", dup223); - -var select1981 = linear_select([ - msg4085, - msg4086, -]); - -var msg4087 = msg("2094", dup222); - -var msg4088 = msg("2094:01", dup223); - -var select1982 = linear_select([ - msg4087, - msg4088, -]); - -var msg4089 = msg("2095", dup201); - -var msg4090 = msg("2095:01", dup289); - -var select1983 = linear_select([ - msg4089, - msg4090, -]); - -var msg4091 = msg("2096", dup192); - -var msg4092 = msg("2096:01", dup262); - -var select1984 = linear_select([ - msg4091, - msg4092, -]); - -var msg4093 = msg("2097", dup192); - -var msg4094 = msg("2097:01", dup262); - -var select1985 = linear_select([ - msg4093, - msg4094, -]); - -var msg4095 = msg("2098", dup192); - -var msg4096 = msg("2098:01", dup262); - -var select1986 = linear_select([ - msg4095, - msg4096, -]); - -var msg4097 = msg("2099", dup192); - -var msg4098 = msg("2099:01", dup262); - -var select1987 = linear_select([ - msg4097, - msg4098, -]); - -var msg4099 = msg("2100", dup192); - -var msg4100 = msg("2100:01", dup262); - -var select1988 = linear_select([ - msg4099, - msg4100, -]); - -var msg4101 = msg("2101", dup198); - -var msg4102 = msg("2101:01", dup220); - -var select1989 = linear_select([ - msg4101, - msg4102, -]); - -var msg4103 = msg("2102", dup198); - -var msg4104 = msg("2102:01", dup220); - -var select1990 = linear_select([ - msg4103, - msg4104, -]); - -var msg4105 = msg("2103", dup276); - -var msg4106 = msg("2103:01", dup277); - -var select1991 = linear_select([ - msg4105, - msg4106, -]); - -var msg4107 = msg("2104", dup197); - -var msg4108 = msg("2104:01", dup221); - -var select1992 = linear_select([ - msg4107, - msg4108, -]); - -var msg4109 = msg("2105", dup222); - -var msg4110 = msg("2105:01", dup223); - -var select1993 = linear_select([ - msg4109, - msg4110, -]); - -var msg4111 = msg("2106", dup222); - -var msg4112 = msg("2106:01", dup223); - -var select1994 = linear_select([ - msg4111, - msg4112, -]); - -var msg4113 = msg("2107", dup222); - -var msg4114 = msg("2107:01", dup223); - -var select1995 = linear_select([ - msg4113, - msg4114, -]); - -var msg4115 = msg("2108", dup222); - -var msg4116 = msg("2108:01", dup223); - -var select1996 = linear_select([ - msg4115, - msg4116, -]); - -var msg4117 = msg("2109", dup222); - -var msg4118 = msg("2109:01", dup223); - -var select1997 = linear_select([ - msg4117, - msg4118, -]); - -var msg4119 = msg("2110", dup222); - -var msg4120 = msg("2110:01", dup223); - -var select1998 = linear_select([ - msg4119, - msg4120, -]); - -var msg4121 = msg("2111", dup222); - -var msg4122 = msg("2111:01", dup223); - -var select1999 = linear_select([ - msg4121, - msg4122, -]); - -var msg4123 = msg("2112", dup222); - -var msg4124 = msg("2112:01", dup223); - -var select2000 = linear_select([ - msg4123, - msg4124, -]); - -var msg4125 = msg("2113", dup222); - -var msg4126 = msg("2113:01", dup223); - -var select2001 = linear_select([ - msg4125, - msg4126, -]); - -var msg4127 = msg("2114", dup222); - -var msg4128 = msg("2114:01", dup223); - -var select2002 = linear_select([ - msg4127, - msg4128, -]); - -var msg4129 = msg("2115", dup265); - -var msg4130 = msg("2115:01", dup266); - -var select2003 = linear_select([ - msg4129, - msg4130, -]); - -var msg4131 = msg("2116", dup265); - -var msg4132 = msg("2116:01", dup266); - -var select2004 = linear_select([ - msg4131, - msg4132, -]); - -var msg4133 = msg("2117", dup265); - -var msg4134 = msg("2117:01", dup266); - -var select2005 = linear_select([ - msg4133, - msg4134, -]); - -var msg4135 = msg("2118", dup222); - -var msg4136 = msg("2118:01", dup223); - -var select2006 = linear_select([ - msg4135, - msg4136, -]); - -var msg4137 = msg("2119", dup222); - -var msg4138 = msg("2119:01", dup223); - -var select2007 = linear_select([ - msg4137, - msg4138, -]); - -var msg4139 = msg("2120", dup222); - -var msg4140 = msg("2120:01", dup223); - -var select2008 = linear_select([ - msg4139, - msg4140, -]); - -var msg4141 = msg("2121", dup298); - -var msg4142 = msg("2121:01", dup299); - -var select2009 = linear_select([ - msg4141, - msg4142, -]); - -var msg4143 = msg("2122", dup298); - -var msg4144 = msg("2122:01", dup299); - -var select2010 = linear_select([ - msg4143, - msg4144, -]); - -var msg4145 = msg("2123", dup196); - -var msg4146 = msg("2123:01", dup217); - -var select2011 = linear_select([ - msg4145, - msg4146, -]); - -var msg4147 = msg("2124", dup192); - -var msg4148 = msg("2124:01", dup262); - -var select2012 = linear_select([ - msg4147, - msg4148, -]); - -var msg4149 = msg("2125", dup227); - -var msg4150 = msg("2125:01", dup228); - -var select2013 = linear_select([ - msg4149, - msg4150, -]); - -var msg4151 = msg("2126", dup222); - -var msg4152 = msg("2126:01", dup223); - -var select2014 = linear_select([ - msg4151, - msg4152, -]); - -var msg4153 = msg("2127", dup265); - -var msg4154 = msg("2127:01", dup266); - -var select2015 = linear_select([ - msg4153, - msg4154, -]); - -var msg4155 = msg("2128", dup265); - -var msg4156 = msg("2128:01", dup266); - -var select2016 = linear_select([ - msg4155, - msg4156, -]); - -var msg4157 = msg("2129", dup265); - -var msg4158 = msg("2129:01", dup266); - -var select2017 = linear_select([ - msg4157, - msg4158, -]); - -var msg4159 = msg("2130", dup265); - -var msg4160 = msg("2130:01", dup266); - -var select2018 = linear_select([ - msg4159, - msg4160, -]); - -var msg4161 = msg("2131", dup265); - -var msg4162 = msg("2131:01", dup266); - -var select2019 = linear_select([ - msg4161, - msg4162, -]); - -var msg4163 = msg("2132", dup265); - -var msg4164 = msg("2132:01", dup266); - -var select2020 = linear_select([ - msg4163, - msg4164, -]); - -var msg4165 = msg("2133", dup265); - -var msg4166 = msg("2133:01", dup266); - -var select2021 = linear_select([ - msg4165, - msg4166, -]); - -var msg4167 = msg("2134", dup265); - -var msg4168 = msg("2134:01", dup266); - -var select2022 = linear_select([ - msg4167, - msg4168, -]); - -var msg4169 = msg("2135", dup265); - -var msg4170 = msg("2135:01", dup266); - -var select2023 = linear_select([ - msg4169, - msg4170, -]); - -var msg4171 = msg("2136", dup285); - -var msg4172 = msg("2136:01", dup286); - -var select2024 = linear_select([ - msg4171, - msg4172, -]); - -var msg4173 = msg("2137", dup265); - -var msg4174 = msg("2137:01", dup266); - -var select2025 = linear_select([ - msg4173, - msg4174, -]); - -var msg4175 = msg("2138", dup265); - -var msg4176 = msg("2138:01", dup266); - -var select2026 = linear_select([ - msg4175, - msg4176, -]); - -var msg4177 = msg("2139", dup265); - -var msg4178 = msg("2139:01", dup266); - -var select2027 = linear_select([ - msg4177, - msg4178, -]); - -var msg4179 = msg("2140", dup265); - -var msg4180 = msg("2140:01", dup266); - -var select2028 = linear_select([ - msg4179, - msg4180, -]); - -var msg4181 = msg("2141", dup265); - -var msg4182 = msg("2141:01", dup266); - -var select2029 = linear_select([ - msg4181, - msg4182, -]); - -var msg4183 = msg("2142", dup265); - -var msg4184 = msg("2142:01", dup266); - -var select2030 = linear_select([ - msg4183, - msg4184, -]); - -var msg4185 = msg("2143", dup265); - -var msg4186 = msg("2143:01", dup266); - -var select2031 = linear_select([ - msg4185, - msg4186, -]); - -var msg4187 = msg("2144", dup265); - -var msg4188 = msg("2144:01", dup266); - -var select2032 = linear_select([ - msg4187, - msg4188, -]); - -var msg4189 = msg("2145", dup265); - -var msg4190 = msg("2145:01", dup266); - -var select2033 = linear_select([ - msg4189, - msg4190, -]); - -var msg4191 = msg("2146", dup265); - -var msg4192 = msg("2146:01", dup266); - -var select2034 = linear_select([ - msg4191, - msg4192, -]); - -var msg4193 = msg("2147", dup265); - -var msg4194 = msg("2147:01", dup266); - -var select2035 = linear_select([ - msg4193, - msg4194, -]); - -var msg4195 = msg("2148", dup265); - -var msg4196 = msg("2148:01", dup266); - -var select2036 = linear_select([ - msg4195, - msg4196, -]); - -var msg4197 = msg("2149", dup265); - -var msg4198 = msg("2149:01", dup266); - -var select2037 = linear_select([ - msg4197, - msg4198, -]); - -var msg4199 = msg("2150", dup265); - -var msg4200 = msg("2150:01", dup266); - -var select2038 = linear_select([ - msg4199, - msg4200, -]); - -var msg4201 = msg("2151", dup265); - -var msg4202 = msg("2151:01", dup266); - -var select2039 = linear_select([ - msg4201, - msg4202, -]); - -var msg4203 = msg("2152", dup265); - -var msg4204 = msg("2152:01", dup266); - -var select2040 = linear_select([ - msg4203, - msg4204, -]); - -var msg4205 = msg("2153", dup265); - -var msg4206 = msg("2153:01", dup266); - -var select2041 = linear_select([ - msg4205, - msg4206, -]); - -var msg4207 = msg("2154", dup265); - -var msg4208 = msg("2154:01", dup266); - -var select2042 = linear_select([ - msg4207, - msg4208, -]); - -var msg4209 = msg("2155", dup265); - -var msg4210 = msg("2155:01", dup266); - -var select2043 = linear_select([ - msg4209, - msg4210, -]); - -var msg4211 = msg("2156", dup265); - -var msg4212 = msg("2156:01", dup266); - -var select2044 = linear_select([ - msg4211, - msg4212, -]); - -var msg4213 = msg("2157", dup265); - -var msg4214 = msg("2157:01", dup266); - -var select2045 = linear_select([ - msg4213, - msg4214, -]); - -var msg4215 = msg("2158", dup196); - -var msg4216 = msg("2158:01", dup217); - -var select2046 = linear_select([ - msg4215, - msg4216, -]); - -var msg4217 = msg("2159", dup196); - -var msg4218 = msg("2159:01", dup217); - -var select2047 = linear_select([ - msg4217, - msg4218, -]); - -var msg4219 = msg("2160", dup263); - -var msg4220 = msg("2160:01", dup264); - -var select2048 = linear_select([ - msg4219, - msg4220, -]); - -var msg4221 = msg("2161", dup263); - -var msg4222 = msg("2161:01", dup264); - -var select2049 = linear_select([ - msg4221, - msg4222, -]); - -var msg4223 = msg("2162", dup263); - -var msg4224 = msg("2162:01", dup264); - -var select2050 = linear_select([ - msg4223, - msg4224, -]); - -var msg4225 = msg("2163", dup263); - -var msg4226 = msg("2163:01", dup264); - -var select2051 = linear_select([ - msg4225, - msg4226, -]); - -var msg4227 = msg("2164", dup263); - -var msg4228 = msg("2164:01", dup264); - -var select2052 = linear_select([ - msg4227, - msg4228, -]); - -var msg4229 = msg("2165", dup263); - -var msg4230 = msg("2165:01", dup264); - -var select2053 = linear_select([ - msg4229, - msg4230, -]); - -var msg4231 = msg("2166", dup263); - -var msg4232 = msg("2166:01", dup264); - -var select2054 = linear_select([ - msg4231, - msg4232, -]); - -var msg4233 = msg("2167", dup263); - -var msg4234 = msg("2167:01", dup264); - -var select2055 = linear_select([ - msg4233, - msg4234, -]); - -var msg4235 = msg("2168", dup263); - -var msg4236 = msg("2168:01", dup264); - -var select2056 = linear_select([ - msg4235, - msg4236, -]); - -var msg4237 = msg("2169", dup263); - -var msg4238 = msg("2169:01", dup264); - -var select2057 = linear_select([ - msg4237, - msg4238, -]); - -var msg4239 = msg("2170", dup263); - -var msg4240 = msg("2170:01", dup264); - -var select2058 = linear_select([ - msg4239, - msg4240, -]); - -var msg4241 = msg("2171", dup263); - -var msg4242 = msg("2171:01", dup264); - -var select2059 = linear_select([ - msg4241, - msg4242, -]); - -var msg4243 = msg("2172", dup263); - -var msg4244 = msg("2172:01", dup264); - -var select2060 = linear_select([ - msg4243, - msg4244, -]); - -var msg4245 = msg("2173", dup263); - -var msg4246 = msg("2173:01", dup264); - -var select2061 = linear_select([ - msg4245, - msg4246, -]); - -var msg4247 = msg("2174", dup276); - -var msg4248 = msg("2174:01", dup277); - -var select2062 = linear_select([ - msg4247, - msg4248, -]); - -var msg4249 = msg("2175", dup276); - -var msg4250 = msg("2175:01", dup277); - -var select2063 = linear_select([ - msg4249, - msg4250, -]); - -var msg4251 = msg("2176", dup246); - -var msg4252 = msg("2176:01", dup247); - -var select2064 = linear_select([ - msg4251, - msg4252, -]); - -var msg4253 = msg("2177", dup246); - -var msg4254 = msg("2177:01", dup247); - -var select2065 = linear_select([ - msg4253, - msg4254, -]); - -var msg4255 = msg("2178", dup227); - -var msg4256 = msg("2178:01", dup228); - -var select2066 = linear_select([ - msg4255, - msg4256, -]); - -var msg4257 = msg("2179", dup227); - -var msg4258 = msg("2179:01", dup228); - -var select2067 = linear_select([ - msg4257, - msg4258, -]); - -var msg4259 = msg("2180", dup196); - -var msg4260 = msg("2180:01", dup217); - -var select2068 = linear_select([ - msg4259, - msg4260, -]); - -var msg4261 = msg("2181", dup196); - -var msg4262 = msg("2181:01", dup217); - -var select2069 = linear_select([ - msg4261, - msg4262, -]); - -var msg4263 = msg("2182", dup192); - -var msg4264 = msg("2182:01", dup262); - -var select2070 = linear_select([ - msg4263, - msg4264, -]); - -var msg4265 = msg("2183", dup222); - -var msg4266 = msg("2183:01", dup223); - -var select2071 = linear_select([ - msg4265, - msg4266, -]); - -var msg4267 = msg("2184", dup201); - -var msg4268 = msg("2184:01", dup289); - -var select2072 = linear_select([ - msg4267, - msg4268, -]); - -var msg4269 = msg("2185", dup222); - -var msg4270 = msg("2185:01", dup223); - -var select2073 = linear_select([ - msg4269, - msg4270, -]); - -var msg4271 = msg("2186", dup196); - -var msg4272 = msg("2186:01", dup217); - -var select2074 = linear_select([ - msg4271, - msg4272, -]); - -var msg4273 = msg("2187", dup196); - -var msg4274 = msg("2187:01", dup217); - -var select2075 = linear_select([ - msg4273, - msg4274, -]); - -var msg4275 = msg("2188", dup196); - -var msg4276 = msg("2188:01", dup217); - -var select2076 = linear_select([ - msg4275, - msg4276, -]); - -var msg4277 = msg("2189", dup196); - -var msg4278 = msg("2189:01", dup217); - -var select2077 = linear_select([ - msg4277, - msg4278, -]); - -var msg4279 = msg("2190", dup276); - -var msg4280 = msg("2190:01", dup277); - -var select2078 = linear_select([ - msg4279, - msg4280, -]); - -var msg4281 = msg("2191", dup276); - -var msg4282 = msg("2191:01", dup277); - -var select2079 = linear_select([ - msg4281, - msg4282, -]); - -var msg4283 = msg("2192", dup276); - -var msg4284 = msg("2192:01", dup277); - -var select2080 = linear_select([ - msg4283, - msg4284, -]); - -var msg4285 = msg("2193", dup276); - -var msg4286 = msg("2193:01", dup277); - -var select2081 = linear_select([ - msg4285, - msg4286, -]); - -var msg4287 = msg("2194", dup265); - -var msg4288 = msg("2194:01", dup266); - -var select2082 = linear_select([ - msg4287, - msg4288, -]); - -var msg4289 = msg("2195", dup265); - -var msg4290 = msg("2195:01", dup266); - -var select2083 = linear_select([ - msg4289, - msg4290, -]); - -var msg4291 = msg("2196", dup265); - -var msg4292 = msg("2196:01", dup266); - -var select2084 = linear_select([ - msg4291, - msg4292, -]); - -var msg4293 = msg("2197", dup265); - -var msg4294 = msg("2197:01", dup266); - -var select2085 = linear_select([ - msg4293, - msg4294, -]); - -var msg4295 = msg("2198", dup265); - -var msg4296 = msg("2198:01", dup266); - -var select2086 = linear_select([ - msg4295, - msg4296, -]); - -var msg4297 = msg("2199", dup265); - -var msg4298 = msg("2199:01", dup266); - -var select2087 = linear_select([ - msg4297, - msg4298, -]); - -var msg4299 = msg("2200", dup265); - -var msg4300 = msg("2200:01", dup266); - -var select2088 = linear_select([ - msg4299, - msg4300, -]); - -var msg4301 = msg("2201", dup265); - -var msg4302 = msg("2201:01", dup266); - -var select2089 = linear_select([ - msg4301, - msg4302, -]); - -var msg4303 = msg("2202", dup265); - -var msg4304 = msg("2202:01", dup266); - -var select2090 = linear_select([ - msg4303, - msg4304, -]); - -var msg4305 = msg("2203", dup265); - -var msg4306 = msg("2203:01", dup266); - -var select2091 = linear_select([ - msg4305, - msg4306, -]); - -var msg4307 = msg("2204", dup265); - -var msg4308 = msg("2204:01", dup266); - -var select2092 = linear_select([ - msg4307, - msg4308, -]); - -var msg4309 = msg("2205", dup265); - -var msg4310 = msg("2205:01", dup266); - -var select2093 = linear_select([ - msg4309, - msg4310, -]); - -var msg4311 = msg("2206", dup265); - -var msg4312 = msg("2206:01", dup266); - -var select2094 = linear_select([ - msg4311, - msg4312, -]); - -var msg4313 = msg("2207", dup265); - -var msg4314 = msg("2207:01", dup266); - -var select2095 = linear_select([ - msg4313, - msg4314, -]); - -var msg4315 = msg("2208", dup265); - -var msg4316 = msg("2208:01", dup266); - -var select2096 = linear_select([ - msg4315, - msg4316, -]); - -var msg4317 = msg("2209", dup265); - -var msg4318 = msg("2209:01", dup266); - -var select2097 = linear_select([ - msg4317, - msg4318, -]); - -var msg4319 = msg("2210", dup265); - -var msg4320 = msg("2210:01", dup266); - -var select2098 = linear_select([ - msg4319, - msg4320, -]); - -var msg4321 = msg("2211", dup265); - -var msg4322 = msg("2211:01", dup266); - -var select2099 = linear_select([ - msg4321, - msg4322, -]); - -var msg4323 = msg("2212", dup265); - -var msg4324 = msg("2212:01", dup266); - -var select2100 = linear_select([ - msg4323, - msg4324, -]); - -var msg4325 = msg("2213", dup265); - -var msg4326 = msg("2213:01", dup266); - -var select2101 = linear_select([ - msg4325, - msg4326, -]); - -var msg4327 = msg("2214", dup265); - -var msg4328 = msg("2214:01", dup266); - -var select2102 = linear_select([ - msg4327, - msg4328, -]); - -var msg4329 = msg("2215", dup265); - -var msg4330 = msg("2215:01", dup266); - -var select2103 = linear_select([ - msg4329, - msg4330, -]); - -var msg4331 = msg("2216", dup265); - -var msg4332 = msg("2216:01", dup266); - -var select2104 = linear_select([ - msg4331, - msg4332, -]); - -var msg4333 = msg("2217", dup265); - -var msg4334 = msg("2217:01", dup266); - -var select2105 = linear_select([ - msg4333, - msg4334, -]); - -var msg4335 = msg("2218", dup265); - -var msg4336 = msg("2218:01", dup266); - -var select2106 = linear_select([ - msg4335, - msg4336, -]); - -var msg4337 = msg("2219", dup265); - -var msg4338 = msg("2219:01", dup266); - -var select2107 = linear_select([ - msg4337, - msg4338, -]); - -var msg4339 = msg("2220", dup265); - -var msg4340 = msg("2220:01", dup266); - -var select2108 = linear_select([ - msg4339, - msg4340, -]); - -var msg4341 = msg("2221", dup265); - -var msg4342 = msg("2221:01", dup266); - -var select2109 = linear_select([ - msg4341, - msg4342, -]); - -var msg4343 = msg("2222", dup194); - -var msg4344 = msg("2222:01", dup229); - -var select2110 = linear_select([ - msg4343, - msg4344, -]); - -var msg4345 = msg("2223", dup265); - -var msg4346 = msg("2223:01", dup266); - -var select2111 = linear_select([ - msg4345, - msg4346, -]); - -var msg4347 = msg("2224", dup265); - -var msg4348 = msg("2224:01", dup266); - -var select2112 = linear_select([ - msg4347, - msg4348, -]); - -var msg4349 = msg("2225", dup265); - -var msg4350 = msg("2225:01", dup266); - -var select2113 = linear_select([ - msg4349, - msg4350, -]); - -var msg4351 = msg("2226", dup265); - -var msg4352 = msg("2226:01", dup266); - -var select2114 = linear_select([ - msg4351, - msg4352, -]); - -var msg4353 = msg("2227", dup265); - -var msg4354 = msg("2227:01", dup266); - -var select2115 = linear_select([ - msg4353, - msg4354, -]); - -var msg4355 = msg("2228", dup240); - -var msg4356 = msg("2228:01", dup241); - -var select2116 = linear_select([ - msg4355, - msg4356, -]); - -var msg4357 = msg("2229", dup265); - -var msg4358 = msg("2229:01", dup266); - -var select2117 = linear_select([ - msg4357, - msg4358, -]); - -var msg4359 = msg("2230", dup265); - -var msg4360 = msg("2230:01", dup266); - -var select2118 = linear_select([ - msg4359, - msg4360, -]); - -var msg4361 = msg("2231", dup265); - -var msg4362 = msg("2231:01", dup266); - -var select2119 = linear_select([ - msg4361, - msg4362, -]); - -var msg4363 = msg("2232", dup265); - -var msg4364 = msg("2232:01", dup266); - -var select2120 = linear_select([ - msg4363, - msg4364, -]); - -var msg4365 = msg("2233", dup265); - -var msg4366 = msg("2233:01", dup266); - -var select2121 = linear_select([ - msg4365, - msg4366, -]); - -var msg4367 = msg("2234", dup265); - -var msg4368 = msg("2234:01", dup266); - -var select2122 = linear_select([ - msg4367, - msg4368, -]); - -var msg4369 = msg("2235", dup265); - -var msg4370 = msg("2235:01", dup266); - -var select2123 = linear_select([ - msg4369, - msg4370, -]); - -var msg4371 = msg("2236", dup265); - -var msg4372 = msg("2236:01", dup266); - -var select2124 = linear_select([ - msg4371, - msg4372, -]); - -var msg4373 = msg("2237", dup265); - -var msg4374 = msg("2237:01", dup266); - -var select2125 = linear_select([ - msg4373, - msg4374, -]); - -var msg4375 = msg("2238", dup265); - -var msg4376 = msg("2238:01", dup266); - -var select2126 = linear_select([ - msg4375, - msg4376, -]); - -var msg4377 = msg("2239", dup265); - -var msg4378 = msg("2239:01", dup266); - -var select2127 = linear_select([ - msg4377, - msg4378, -]); - -var msg4379 = msg("2240", dup265); - -var msg4380 = msg("2240:01", dup266); - -var select2128 = linear_select([ - msg4379, - msg4380, -]); - -var msg4381 = msg("2241", dup265); - -var msg4382 = msg("2241:01", dup266); - -var select2129 = linear_select([ - msg4381, - msg4382, -]); - -var msg4383 = msg("2242", dup265); - -var msg4384 = msg("2242:01", dup266); - -var select2130 = linear_select([ - msg4383, - msg4384, -]); - -var msg4385 = msg("2243", dup265); - -var msg4386 = msg("2243:01", dup266); - -var select2131 = linear_select([ - msg4385, - msg4386, -]); - -var msg4387 = msg("2244", dup265); - -var msg4388 = msg("2244:01", dup266); - -var select2132 = linear_select([ - msg4387, - msg4388, -]); - -var msg4389 = msg("2245", dup265); - -var msg4390 = msg("2245:01", dup266); - -var select2133 = linear_select([ - msg4389, - msg4390, -]); - -var msg4391 = msg("2246", dup265); - -var msg4392 = msg("2246:01", dup266); - -var select2134 = linear_select([ - msg4391, - msg4392, -]); - -var msg4393 = msg("2247", dup265); - -var msg4394 = msg("2247:01", dup266); - -var select2135 = linear_select([ - msg4393, - msg4394, -]); - -var msg4395 = msg("2248", dup265); - -var msg4396 = msg("2248:01", dup266); - -var select2136 = linear_select([ - msg4395, - msg4396, -]); - -var msg4397 = msg("2249", dup265); - -var msg4398 = msg("2249:01", dup266); - -var select2137 = linear_select([ - msg4397, - msg4398, -]); - -var msg4399 = msg("2250", dup298); - -var msg4400 = msg("2250:01", dup299); - -var select2138 = linear_select([ - msg4399, - msg4400, -]); - -var msg4401 = msg("2251", dup276); - -var msg4402 = msg("2251:01", dup277); - -var select2139 = linear_select([ - msg4401, - msg4402, -]); - -var msg4403 = msg("2252", dup276); - -var msg4404 = msg("2252:01", dup277); - -var select2140 = linear_select([ - msg4403, - msg4404, -]); - -var msg4405 = msg("2253", dup222); - -var msg4406 = msg("2253:01", dup223); - -var select2141 = linear_select([ - msg4405, - msg4406, -]); - -var msg4407 = msg("2254", dup222); - -var msg4408 = msg("2254:01", dup223); - -var select2142 = linear_select([ - msg4407, - msg4408, -]); - -var msg4409 = msg("2255", dup255); - -var msg4410 = msg("2255:01", dup256); - -var select2143 = linear_select([ - msg4409, - msg4410, -]); - -var msg4411 = msg("2256", dup255); - -var msg4412 = msg("2256:01", dup256); - -var select2144 = linear_select([ - msg4411, - msg4412, -]); - -var msg4413 = msg("2257", dup276); - -var msg4414 = msg("2257:01", dup277); - -var select2145 = linear_select([ - msg4413, - msg4414, -]); - -var msg4415 = msg("2258", dup276); - -var msg4416 = msg("2258:01", dup277); - -var select2146 = linear_select([ - msg4415, - msg4416, -]); - -var msg4417 = msg("2259", dup222); - -var msg4418 = msg("2259:01", dup223); - -var select2147 = linear_select([ - msg4417, - msg4418, -]); - -var msg4419 = msg("2260", dup222); - -var msg4420 = msg("2260:01", dup223); - -var select2148 = linear_select([ - msg4419, - msg4420, -]); - -var msg4421 = msg("2261", dup194); - -var msg4422 = msg("2261:01", dup229); - -var select2149 = linear_select([ - msg4421, - msg4422, -]); - -var msg4423 = msg("2262", dup194); - -var msg4424 = msg("2262:01", dup229); - -var select2150 = linear_select([ - msg4423, - msg4424, -]); - -var msg4425 = msg("2263", dup194); - -var msg4426 = msg("2263:01", dup229); - -var select2151 = linear_select([ - msg4425, - msg4426, -]); - -var msg4427 = msg("2264", dup194); - -var msg4428 = msg("2264:01", dup229); - -var select2152 = linear_select([ - msg4427, - msg4428, -]); - -var msg4429 = msg("2265", dup194); - -var msg4430 = msg("2265:01", dup229); - -var select2153 = linear_select([ - msg4429, - msg4430, -]); - -var msg4431 = msg("2266", dup194); - -var msg4432 = msg("2266:01", dup229); - -var select2154 = linear_select([ - msg4431, - msg4432, -]); - -var msg4433 = msg("2267", dup194); - -var msg4434 = msg("2267:01", dup229); - -var select2155 = linear_select([ - msg4433, - msg4434, -]); - -var msg4435 = msg("2268", dup194); - -var msg4436 = msg("2268:01", dup229); - -var select2156 = linear_select([ - msg4435, - msg4436, -]); - -var msg4437 = msg("2269", dup194); - -var msg4438 = msg("2269:01", dup229); - -var select2157 = linear_select([ - msg4437, - msg4438, -]); - -var msg4439 = msg("2270", dup194); - -var msg4440 = msg("2270:01", dup229); - -var select2158 = linear_select([ - msg4439, - msg4440, -]); - -var msg4441 = msg("2271", dup192); - -var msg4442 = msg("2271:01", dup262); - -var select2159 = linear_select([ - msg4441, - msg4442, -]); - -var msg4443 = msg("2272", dup222); - -var msg4444 = msg("2272:01", dup223); - -var select2160 = linear_select([ - msg4443, - msg4444, -]); - -var msg4445 = msg("2273", dup196); - -var msg4446 = msg("2273:01", dup217); - -var select2161 = linear_select([ - msg4445, - msg4446, -]); - -var msg4447 = msg("2274", dup298); - -var msg4448 = msg("2274:01", dup299); - -var select2162 = linear_select([ - msg4447, - msg4448, -]); - -var msg4449 = msg("2275", dup250); - -var msg4450 = msg("2275:01", dup251); - -var select2163 = linear_select([ - msg4449, - msg4450, -]); - -var msg4451 = msg("2276", dup265); - -var msg4452 = msg("2276:01", dup266); - -var select2164 = linear_select([ - msg4451, - msg4452, -]); - -var msg4453 = msg("2277", dup265); - -var msg4454 = msg("2277:01", dup266); - -var select2165 = linear_select([ - msg4453, - msg4454, -]); - -var msg4455 = msg("2278", dup265); - -var msg4456 = msg("2278:01", dup266); - -var select2166 = linear_select([ - msg4455, - msg4456, -]); - -var msg4457 = msg("2279", dup265); - -var msg4458 = msg("2279:01", dup266); - -var select2167 = linear_select([ - msg4457, - msg4458, -]); - -var msg4459 = msg("2280", dup265); - -var msg4460 = msg("2280:01", dup266); - -var select2168 = linear_select([ - msg4459, - msg4460, -]); - -var msg4461 = msg("2281", dup265); - -var msg4462 = msg("2281:01", dup266); - -var select2169 = linear_select([ - msg4461, - msg4462, -]); - -var msg4463 = msg("2282", dup265); - -var msg4464 = msg("2282:01", dup266); - -var select2170 = linear_select([ - msg4463, - msg4464, -]); - -var msg4465 = msg("2283", dup265); - -var msg4466 = msg("2283:01", dup266); - -var select2171 = linear_select([ - msg4465, - msg4466, -]); - -var msg4467 = msg("2284", dup265); - -var msg4468 = msg("2284:01", dup266); - -var select2172 = linear_select([ - msg4467, - msg4468, -]); - -var msg4469 = msg("2285", dup265); - -var msg4470 = msg("2285:01", dup266); - -var select2173 = linear_select([ - msg4469, - msg4470, -]); - -var msg4471 = msg("2286", dup265); - -var msg4472 = msg("2286:01", dup266); - -var select2174 = linear_select([ - msg4471, - msg4472, -]); - -var msg4473 = msg("2287", dup265); - -var msg4474 = msg("2287:01", dup266); - -var select2175 = linear_select([ - msg4473, - msg4474, -]); - -var msg4475 = msg("2288", dup265); - -var msg4476 = msg("2288:01", dup266); - -var select2176 = linear_select([ - msg4475, - msg4476, -]); - -var msg4477 = msg("2289", dup265); - -var msg4478 = msg("2289:01", dup266); - -var select2177 = linear_select([ - msg4477, - msg4478, -]); - -var msg4479 = msg("2290", dup265); - -var msg4480 = msg("2290:01", dup266); - -var select2178 = linear_select([ - msg4479, - msg4480, -]); - -var msg4481 = msg("2291", dup265); - -var msg4482 = msg("2291:01", dup266); - -var select2179 = linear_select([ - msg4481, - msg4482, -]); - -var msg4483 = msg("2292", dup265); - -var msg4484 = msg("2292:01", dup266); - -var select2180 = linear_select([ - msg4483, - msg4484, -]); - -var msg4485 = msg("2293", dup265); - -var msg4486 = msg("2293:01", dup266); - -var select2181 = linear_select([ - msg4485, - msg4486, -]); - -var msg4487 = msg("2294", dup265); - -var msg4488 = msg("2294:01", dup266); - -var select2182 = linear_select([ - msg4487, - msg4488, -]); - -var msg4489 = msg("2295", dup265); - -var msg4490 = msg("2295:01", dup266); - -var select2183 = linear_select([ - msg4489, - msg4490, -]); - -var msg4491 = msg("2296", dup265); - -var msg4492 = msg("2296:01", dup266); - -var select2184 = linear_select([ - msg4491, - msg4492, -]); - -var msg4493 = msg("2297", dup265); - -var msg4494 = msg("2297:01", dup266); - -var select2185 = linear_select([ - msg4493, - msg4494, -]); - -var msg4495 = msg("2298", dup265); - -var msg4496 = msg("2298:01", dup266); - -var select2186 = linear_select([ - msg4495, - msg4496, -]); - -var msg4497 = msg("2299", dup265); - -var msg4498 = msg("2299:01", dup266); - -var select2187 = linear_select([ - msg4497, - msg4498, -]); - -var msg4499 = msg("2300", dup265); - -var msg4500 = msg("2300:01", dup266); - -var select2188 = linear_select([ - msg4499, - msg4500, -]); - -var msg4501 = msg("2301", dup265); - -var msg4502 = msg("2301:01", dup266); - -var select2189 = linear_select([ - msg4501, - msg4502, -]); - -var msg4503 = msg("2302", dup265); - -var msg4504 = msg("2302:01", dup266); - -var select2190 = linear_select([ - msg4503, - msg4504, -]); - -var msg4505 = msg("2303", dup265); - -var msg4506 = msg("2303:01", dup266); - -var select2191 = linear_select([ - msg4505, - msg4506, -]); - -var msg4507 = msg("2304", dup265); - -var msg4508 = msg("2304:01", dup266); - -var select2192 = linear_select([ - msg4507, - msg4508, -]); - -var msg4509 = msg("2305", dup265); - -var msg4510 = msg("2305:01", dup266); - -var select2193 = linear_select([ - msg4509, - msg4510, -]); - -var msg4511 = msg("2306", dup265); - -var msg4512 = msg("2306:01", dup266); - -var select2194 = linear_select([ - msg4511, - msg4512, -]); - -var msg4513 = msg("2307", dup265); - -var msg4514 = msg("2307:01", dup266); - -var select2195 = linear_select([ - msg4513, - msg4514, -]); - -var msg4515 = msg("2308", dup276); - -var msg4516 = msg("2308:01", dup277); - -var select2196 = linear_select([ - msg4515, - msg4516, -]); - -var msg4517 = msg("2309", dup276); - -var msg4518 = msg("2309:01", dup277); - -var select2197 = linear_select([ - msg4517, - msg4518, -]); - -var msg4519 = msg("2310", dup276); - -var msg4520 = msg("2310:01", dup277); - -var select2198 = linear_select([ - msg4519, - msg4520, -]); - -var msg4521 = msg("2311", dup276); - -var msg4522 = msg("2311:01", dup277); - -var select2199 = linear_select([ - msg4521, - msg4522, -]); - -var msg4523 = msg("2312", dup196); - -var msg4524 = msg("2312:01", dup217); - -var select2200 = linear_select([ - msg4523, - msg4524, -]); - -var msg4525 = msg("2313", dup196); - -var msg4526 = msg("2313:01", dup217); - -var select2201 = linear_select([ - msg4525, - msg4526, -]); - -var msg4527 = msg("2314", dup196); - -var msg4528 = msg("2314:01", dup217); - -var select2202 = linear_select([ - msg4527, - msg4528, -]); - -var msg4529 = msg("2315", dup276); - -var msg4530 = msg("2315:01", dup277); - -var select2203 = linear_select([ - msg4529, - msg4530, -]); - -var msg4531 = msg("2316", dup276); - -var msg4532 = msg("2316:01", dup277); - -var select2204 = linear_select([ - msg4531, - msg4532, -]); - -var msg4533 = msg("2317", dup196); - -var msg4534 = msg("2317:01", dup217); - -var select2205 = linear_select([ - msg4533, - msg4534, -]); - -var msg4535 = msg("2318", dup196); - -var msg4536 = msg("2318:01", dup217); - -var select2206 = linear_select([ - msg4535, - msg4536, -]); - -var msg4537 = msg("2319", dup222); - -var msg4538 = msg("2319:01", dup223); - -var select2207 = linear_select([ - msg4537, - msg4538, -]); - -var msg4539 = msg("2320", dup222); - -var msg4540 = msg("2320:01", dup223); - -var select2208 = linear_select([ - msg4539, - msg4540, -]); - -var msg4541 = msg("2321", dup265); - -var msg4542 = msg("2321:01", dup266); - -var select2209 = linear_select([ - msg4541, - msg4542, -]); - -var msg4543 = msg("2322", dup265); - -var msg4544 = msg("2322:01", dup266); - -var select2210 = linear_select([ - msg4543, - msg4544, -]); - -var msg4545 = msg("2323", dup265); - -var msg4546 = msg("2323:01", dup266); - -var select2211 = linear_select([ - msg4545, - msg4546, -]); - -var msg4547 = msg("2324", dup265); - -var msg4548 = msg("2324:01", dup266); - -var select2212 = linear_select([ - msg4547, - msg4548, -]); - -var msg4549 = msg("2325", dup265); - -var msg4550 = msg("2325:01", dup266); - -var select2213 = linear_select([ - msg4549, - msg4550, -]); - -var msg4551 = msg("2326", dup265); - -var msg4552 = msg("2326:01", dup266); - -var select2214 = linear_select([ - msg4551, - msg4552, -]); - -var msg4553 = msg("2327", dup265); - -var msg4554 = msg("2327:01", dup266); - -var select2215 = linear_select([ - msg4553, - msg4554, -]); - -var msg4555 = msg("2328", dup265); - -var msg4556 = msg("2328:01", dup266); - -var select2216 = linear_select([ - msg4555, - msg4556, -]); - -var msg4557 = msg("2329", dup260); - -var msg4558 = msg("2329:01", dup261); - -var select2217 = linear_select([ - msg4557, - msg4558, -]); - -var msg4559 = msg("2330", dup222); - -var msg4560 = msg("2330:01", dup223); - -var select2218 = linear_select([ - msg4559, - msg4560, -]); - -var msg4561 = msg("2331", dup265); - -var msg4562 = msg("2331:01", dup266); - -var select2219 = linear_select([ - msg4561, - msg4562, -]); - -var msg4563 = msg("2332", dup227); - -var msg4564 = msg("2332:01", dup228); - -var select2220 = linear_select([ - msg4563, - msg4564, -]); - -var msg4565 = msg("2333", dup227); - -var msg4566 = msg("2333:01", dup228); - -var select2221 = linear_select([ - msg4565, - msg4566, -]); - -var msg4567 = msg("2334", dup227); - -var msg4568 = msg("2334:01", dup228); - -var select2222 = linear_select([ - msg4567, - msg4568, -]); - -var msg4569 = msg("2335", dup227); - -var msg4570 = msg("2335:01", dup228); - -var select2223 = linear_select([ - msg4569, - msg4570, -]); - -var msg4571 = msg("2336", dup274); - -var msg4572 = msg("2336:01", dup275); - -var select2224 = linear_select([ - msg4571, - msg4572, -]); - -var msg4573 = msg("2337", dup295); - -var msg4574 = msg("2337:01", dup296); - -var select2225 = linear_select([ - msg4573, - msg4574, -]); - -var msg4575 = msg("2338", dup222); - -var msg4576 = msg("2338:01", dup223); - -var select2226 = linear_select([ - msg4575, - msg4576, -]); - -var msg4577 = msg("2339", dup274); - -var msg4578 = msg("2339:01", dup275); - -var select2227 = linear_select([ - msg4577, - msg4578, -]); - -var msg4579 = msg("2340", dup222); - -var msg4580 = msg("2340:01", dup223); - -var select2228 = linear_select([ - msg4579, - msg4580, -]); - -var msg4581 = msg("2341", dup265); - -var msg4582 = msg("2341:01", dup266); - -var select2229 = linear_select([ - msg4581, - msg4582, -]); - -var msg4583 = msg("2342", dup265); - -var msg4584 = msg("2342:01", dup266); - -var select2230 = linear_select([ - msg4583, - msg4584, -]); - -var msg4585 = msg("2343", dup222); - -var msg4586 = msg("2343:01", dup223); - -var select2231 = linear_select([ - msg4585, - msg4586, -]); - -var msg4587 = msg("2344", dup222); - -var msg4588 = msg("2344:01", dup223); - -var select2232 = linear_select([ - msg4587, - msg4588, -]); - -var msg4589 = msg("2345", dup265); - -var msg4590 = msg("2345:01", dup266); - -var select2233 = linear_select([ - msg4589, - msg4590, -]); - -var msg4591 = msg("2346", dup265); - -var msg4592 = msg("2346:01", dup266); - -var select2234 = linear_select([ - msg4591, - msg4592, -]); - -var msg4593 = msg("2347", dup265); - -var msg4594 = msg("2347:01", dup266); - -var select2235 = linear_select([ - msg4593, - msg4594, -]); - -var msg4595 = msg("2348", dup276); - -var msg4596 = msg("2348:01", dup277); - -var select2236 = linear_select([ - msg4595, - msg4596, -]); - -var msg4597 = msg("2349", dup276); - -var msg4598 = msg("2349:01", dup277); - -var select2237 = linear_select([ - msg4597, - msg4598, -]); - -var msg4599 = msg("2350", dup276); - -var msg4600 = msg("2350:01", dup277); - -var select2238 = linear_select([ - msg4599, - msg4600, -]); - -var msg4601 = msg("2351", dup276); - -var msg4602 = msg("2351:01", dup277); - -var select2239 = linear_select([ - msg4601, - msg4602, -]); - -var msg4603 = msg("2352", dup276); - -var msg4604 = msg("2352:01", dup277); - -var select2240 = linear_select([ - msg4603, - msg4604, -]); - -var msg4605 = msg("2353", dup196); - -var msg4606 = msg("2353:01", dup217); - -var select2241 = linear_select([ - msg4605, - msg4606, -]); - -var msg4607 = msg("2354", dup196); - -var msg4608 = msg("2354:01", dup217); - -var select2242 = linear_select([ - msg4607, - msg4608, -]); - -var msg4609 = msg("2355", dup196); - -var msg4610 = msg("2355:01", dup217); - -var select2243 = linear_select([ - msg4609, - msg4610, -]); - -var msg4611 = msg("2356", dup196); - -var msg4612 = msg("2356:01", dup217); - -var select2244 = linear_select([ - msg4611, - msg4612, -]); - -var msg4613 = msg("2357", dup196); - -var msg4614 = msg("2357:01", dup217); - -var select2245 = linear_select([ - msg4613, - msg4614, -]); - -var msg4615 = msg("2358", dup196); - -var msg4616 = msg("2358:01", dup217); - -var select2246 = linear_select([ - msg4615, - msg4616, -]); - -var msg4617 = msg("2359", dup196); - -var msg4618 = msg("2359:01", dup217); - -var select2247 = linear_select([ - msg4617, - msg4618, -]); - -var msg4619 = msg("2360", dup196); - -var msg4620 = msg("2360:01", dup217); - -var select2248 = linear_select([ - msg4619, - msg4620, -]); - -var msg4621 = msg("2361", dup196); - -var msg4622 = msg("2361:01", dup217); - -var select2249 = linear_select([ - msg4621, - msg4622, -]); - -var msg4623 = msg("2362", dup196); - -var msg4624 = msg("2362:01", dup217); - -var select2250 = linear_select([ - msg4623, - msg4624, -]); - -var msg4625 = msg("2363", dup265); - -var msg4626 = msg("2363:01", dup266); - -var select2251 = linear_select([ - msg4625, - msg4626, -]); - -var msg4627 = msg("2364", dup265); - -var msg4628 = msg("2364:01", dup266); - -var select2252 = linear_select([ - msg4627, - msg4628, -]); - -var msg4629 = msg("2365", dup265); - -var msg4630 = msg("2365:01", dup266); - -var select2253 = linear_select([ - msg4629, - msg4630, -]); - -var msg4631 = msg("2366", dup265); - -var msg4632 = msg("2366:01", dup266); - -var select2254 = linear_select([ - msg4631, - msg4632, -]); - -var msg4633 = msg("2367", dup265); - -var msg4634 = msg("2367:01", dup266); - -var select2255 = linear_select([ - msg4633, - msg4634, -]); - -var msg4635 = msg("2368", dup265); - -var msg4636 = msg("2368:01", dup266); - -var select2256 = linear_select([ - msg4635, - msg4636, -]); - -var msg4637 = msg("2369", dup265); - -var msg4638 = msg("2369:01", dup266); - -var select2257 = linear_select([ - msg4637, - msg4638, -]); - -var msg4639 = msg("2370", dup265); - -var msg4640 = msg("2370:01", dup266); - -var select2258 = linear_select([ - msg4639, - msg4640, -]); - -var msg4641 = msg("2371", dup265); - -var msg4642 = msg("2371:01", dup266); - -var select2259 = linear_select([ - msg4641, - msg4642, -]); - -var msg4643 = msg("2372", dup265); - -var msg4644 = msg("2372:01", dup266); - -var select2260 = linear_select([ - msg4643, - msg4644, -]); - -var msg4645 = msg("2373", dup222); - -var msg4646 = msg("2373:01", dup266); - -var select2261 = linear_select([ - msg4645, - msg4646, -]); - -var msg4647 = msg("2374", dup222); - -var msg4648 = msg("2374:01", dup266); - -var select2262 = linear_select([ - msg4647, - msg4648, -]); - -var msg4649 = msg("2375", dup192); - -var msg4650 = msg("2375:01", dup266); - -var select2263 = linear_select([ - msg4649, - msg4650, -]); - -var msg4651 = msg("2376", dup222); - -var msg4652 = msg("2376:01", dup266); - -var select2264 = linear_select([ - msg4651, - msg4652, -]); - -var msg4653 = msg("2377", dup222); - -var msg4654 = msg("2377:01", dup217); - -var select2265 = linear_select([ - msg4653, - msg4654, -]); - -var msg4655 = msg("2378", dup222); - -var msg4656 = msg("2378:01", dup266); - -var select2266 = linear_select([ - msg4655, - msg4656, -]); - -var msg4657 = msg("2379", dup222); - -var msg4658 = msg("2379:01", dup266); - -var select2267 = linear_select([ - msg4657, - msg4658, -]); - -var msg4659 = msg("2380", dup222); - -var msg4660 = msg("2380:01", dup217); - -var select2268 = linear_select([ - msg4659, - msg4660, -]); - -var msg4661 = msg("2381", dup267); - -var msg4662 = msg("2381:01", dup268); - -var select2269 = linear_select([ - msg4661, - msg4662, -]); - -var msg4663 = msg("2382", dup276); - -var msg4664 = msg("2382:01", dup266); - -var select2270 = linear_select([ - msg4663, - msg4664, -]); - -var msg4665 = msg("2383", dup276); - -var msg4666 = msg("2383:01", dup266); - -var select2271 = linear_select([ - msg4665, - msg4666, -]); - -var msg4667 = msg("2384", dup276); - -var msg4668 = msg("2384:01", dup266); - -var select2272 = linear_select([ - msg4667, - msg4668, -]); - -var msg4669 = msg("2385", dup276); - -var msg4670 = msg("2385:01", dup266); - -var select2273 = linear_select([ - msg4669, - msg4670, -]); - -var msg4671 = msg("2386", dup194); - -var msg4672 = msg("2386:01", dup266); - -var select2274 = linear_select([ - msg4671, - msg4672, -]); - -var msg4673 = msg("2387", dup265); - -var msg4674 = msg("2387:01", dup266); - -var select2275 = linear_select([ - msg4673, - msg4674, -]); - -var msg4675 = msg("2388", dup265); - -var msg4676 = msg("2388:01", dup266); - -var select2276 = linear_select([ - msg4675, - msg4676, -]); - -var msg4677 = msg("2389", dup222); - -var msg4678 = msg("2389:01", dup266); - -var select2277 = linear_select([ - msg4677, - msg4678, -]); - -var msg4679 = msg("2390", dup222); - -var msg4680 = msg("2390:01", dup266); - -var select2278 = linear_select([ - msg4679, - msg4680, -]); - -var msg4681 = msg("2391", dup222); - -var msg4682 = msg("2391:01", dup266); - -var select2279 = linear_select([ - msg4681, - msg4682, -]); - -var msg4683 = msg("2392", dup222); - -var msg4684 = msg("2392:01", dup266); - -var select2280 = linear_select([ - msg4683, - msg4684, -]); - -var msg4685 = msg("2393", dup265); - -var msg4686 = msg("2393:01", dup266); - -var select2281 = linear_select([ - msg4685, - msg4686, -]); - -var msg4687 = msg("2394", dup198); - -var msg4688 = msg("2394:01", dup266); - -var select2282 = linear_select([ - msg4687, - msg4688, -]); - -var msg4689 = msg("2395", dup265); - -var msg4690 = msg("2395:01", dup266); - -var select2283 = linear_select([ - msg4689, - msg4690, -]); - -var msg4691 = msg("2396", dup269); - -var msg4692 = msg("2396:01", dup266); - -var select2284 = linear_select([ - msg4691, - msg4692, -]); - -var msg4693 = msg("2397", dup265); - -var msg4694 = msg("2397:01", dup266); - -var select2285 = linear_select([ - msg4693, - msg4694, -]); - -var msg4695 = msg("2398", dup265); - -var msg4696 = msg("2398:01", dup266); - -var select2286 = linear_select([ - msg4695, - msg4696, -]); - -var msg4697 = msg("2399", dup265); - -var msg4698 = msg("2399:01", dup300); - -var select2287 = linear_select([ - msg4697, - msg4698, -]); - -var msg4699 = msg("2400", dup265); - -var msg4700 = msg("2400:01", dup266); - -var select2288 = linear_select([ - msg4699, - msg4700, -]); - -var msg4701 = msg("2401", dup276); - -var msg4702 = msg("2401:01", dup266); - -var select2289 = linear_select([ - msg4701, - msg4702, -]); - -var msg4703 = msg("2402", dup276); - -var msg4704 = msg("2402:01", dup277); - -var select2290 = linear_select([ - msg4703, - msg4704, -]); - -var msg4705 = msg("2403", dup276); - -var msg4706 = msg("2403:01", dup266); - -var select2291 = linear_select([ - msg4705, - msg4706, -]); - -var msg4707 = msg("2404", dup276); - -var msg4708 = msg("2404:01", dup266); - -var select2292 = linear_select([ - msg4707, - msg4708, -]); - -var msg4709 = msg("2405", dup265); - -var msg4710 = msg("2405:01", dup266); - -var select2293 = linear_select([ - msg4709, - msg4710, -]); - -var msg4711 = msg("2406", dup248); - -var msg4712 = msg("2406:01", dup266); - -var select2294 = linear_select([ - msg4711, - msg4712, -]); - -var msg4713 = msg("2407", dup265); - -var msg4714 = msg("2407:01", dup266); - -var select2295 = linear_select([ - msg4713, - msg4714, -]); - -var msg4715 = msg("2408", dup265); - -var msg4716 = msg("2408:01", dup266); - -var select2296 = linear_select([ - msg4715, - msg4716, -]); - -var msg4717 = msg("2409", dup222); - -var msg4718 = msg("2409:01", dup268); - -var select2297 = linear_select([ - msg4717, - msg4718, -]); - -var msg4719 = msg("2410", dup265); - -var msg4720 = msg("2410:01", dup229); - -var select2298 = linear_select([ - msg4719, - msg4720, -]); - -var msg4721 = msg("2411", dup267); - -var msg4722 = msg("2411:01", dup266); - -var select2299 = linear_select([ - msg4721, - msg4722, -]); - -var msg4723 = msg("2412", dup287); - -var msg4724 = msg("2412:01", dup266); - -var select2300 = linear_select([ - msg4723, - msg4724, -]); - -var msg4725 = msg("2413", dup196); - -var msg4726 = msg("2413:01", dup266); - -var select2301 = linear_select([ - msg4725, - msg4726, -]); - -var msg4727 = msg("2414", dup196); - -var msg4728 = msg("2414:01", dup266); - -var select2302 = linear_select([ - msg4727, - msg4728, -]); - -var msg4729 = msg("2415", dup196); - -var msg4730 = msg("2415:01", dup266); - -var select2303 = linear_select([ - msg4729, - msg4730, -]); - -var msg4731 = msg("2416", dup227); - -var msg4732 = msg("2416:01", dup266); - -var select2304 = linear_select([ - msg4731, - msg4732, -]); - -var msg4733 = msg("2417", dup227); - -var msg4734 = msg("2417:01", dup266); - -var select2305 = linear_select([ - msg4733, - msg4734, -]); - -var msg4735 = msg("2418", dup196); - -var msg4736 = msg("2418:01", dup266); - -var select2306 = linear_select([ - msg4735, - msg4736, -]); - -var msg4737 = msg("2419", dup196); - -var msg4738 = msg("2419:01", dup266); - -var select2307 = linear_select([ - msg4737, - msg4738, -]); - -var msg4739 = msg("2420", dup196); - -var msg4740 = msg("2420:01", dup266); - -var select2308 = linear_select([ - msg4739, - msg4740, -]); - -var msg4741 = msg("2421", dup196); - -var msg4742 = msg("2421:01", dup270); - -var select2309 = linear_select([ - msg4741, - msg4742, -]); - -var msg4743 = msg("2422", dup196); - -var msg4744 = msg("2422:01", dup266); - -var select2310 = linear_select([ - msg4743, - msg4744, -]); - -var msg4745 = msg("2423", dup196); - -var msg4746 = msg("2423:01", dup217); - -var select2311 = linear_select([ - msg4745, - msg4746, -]); - -var msg4747 = msg("2424", dup222); - -var msg4748 = msg("2424:01", dup223); - -var select2312 = linear_select([ - msg4747, - msg4748, -]); - -var msg4749 = msg("2425", dup222); - -var msg4750 = msg("2425:01", dup223); - -var select2313 = linear_select([ - msg4749, - msg4750, -]); - -var msg4751 = msg("2426", dup222); - -var msg4752 = msg("2426:01", dup266); - -var select2314 = linear_select([ - msg4751, - msg4752, -]); - -var msg4753 = msg("2427", dup222); - -var msg4754 = msg("2427:01", dup266); - -var select2315 = linear_select([ - msg4753, - msg4754, -]); - -var msg4755 = msg("2428", dup222); - -var msg4756 = msg("2428:01", dup266); - -var select2316 = linear_select([ - msg4755, - msg4756, -]); - -var msg4757 = msg("2429", dup222); - -var msg4758 = msg("2429:01", dup266); - -var select2317 = linear_select([ - msg4757, - msg4758, -]); - -var msg4759 = msg("2430", dup222); - -var msg4760 = msg("2430:01", dup266); - -var select2318 = linear_select([ - msg4759, - msg4760, -]); - -var msg4761 = msg("2431", dup222); - -var msg4762 = msg("2431:01", dup266); - -var select2319 = linear_select([ - msg4761, - msg4762, -]); - -var all45 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - setc("eventcategory","1001030303"), - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg4763 = msg("2432", all45); - -var msg4764 = msg("2432:01", dup266); - -var select2320 = linear_select([ - msg4763, - msg4764, -]); - -var msg4765 = msg("2433", dup267); - -var msg4766 = msg("2433:01", dup266); - -var select2321 = linear_select([ - msg4765, - msg4766, -]); - -var msg4767 = msg("2434", dup265); - -var msg4768 = msg("2434:01", dup266); - -var select2322 = linear_select([ - msg4767, - msg4768, -]); - -var msg4769 = msg("2435", dup265); - -var msg4770 = msg("2435:01", dup266); - -var select2323 = linear_select([ - msg4769, - msg4770, -]); - -var msg4771 = msg("2436", dup265); - -var msg4772 = msg("2436:01", dup266); - -var select2324 = linear_select([ - msg4771, - msg4772, -]); - -var msg4773 = msg("2437", dup265); - -var msg4774 = msg("2437:01", dup266); - -var select2325 = linear_select([ - msg4773, - msg4774, -]); - -var msg4775 = msg("2438", dup267); - -var msg4776 = msg("2438:01", dup266); - -var select2326 = linear_select([ - msg4775, - msg4776, -]); - -var msg4777 = msg("2439", dup267); - -var msg4778 = msg("2439:01", dup266); - -var select2327 = linear_select([ - msg4777, - msg4778, -]); - -var msg4779 = msg("2440", dup267); - -var msg4780 = msg("2440:01", dup266); - -var select2328 = linear_select([ - msg4779, - msg4780, -]); - -var msg4781 = msg("2441", dup285); - -var msg4782 = msg("2441:01", dup266); - -var select2329 = linear_select([ - msg4781, - msg4782, -]); - -var msg4783 = msg("2442", dup267); - -var msg4784 = msg("2442:01", dup266); - -var select2330 = linear_select([ - msg4783, - msg4784, -]); - -var msg4785 = msg("2443", dup222); - -var msg4786 = msg("2443:01", dup266); - -var select2331 = linear_select([ - msg4785, - msg4786, -]); - -var msg4787 = msg("2444", dup222); - -var msg4788 = msg("2444:01", dup266); - -var select2332 = linear_select([ - msg4787, - msg4788, -]); - -var msg4789 = msg("2445", dup222); - -var msg4790 = msg("2445:01", dup266); - -var select2333 = linear_select([ - msg4789, - msg4790, -]); - -var msg4791 = msg("2446", dup222); - -var msg4792 = msg("2446:01", dup223); - -var select2334 = linear_select([ - msg4791, - msg4792, -]); - -var msg4793 = msg("2447", dup265); - -var msg4794 = msg("2447:01", dup266); - -var select2335 = linear_select([ - msg4793, - msg4794, -]); - -var msg4795 = msg("2448", dup265); - -var msg4796 = msg("2448:01", dup266); - -var select2336 = linear_select([ - msg4795, - msg4796, -]); - -var msg4797 = msg("2449", dup222); - -var msg4798 = msg("2449:01", dup266); - -var select2337 = linear_select([ - msg4797, - msg4798, -]); - -var msg4799 = msg("2450", dup301); - -var msg4800 = msg("2450:01", dup266); - -var select2338 = linear_select([ - msg4799, - msg4800, -]); - -var msg4801 = msg("2451", dup196); - -var msg4802 = msg("2451:01", dup266); - -var select2339 = linear_select([ - msg4801, - msg4802, -]); - -var msg4803 = msg("2452", dup196); - -var msg4804 = msg("2452:01", dup266); - -var select2340 = linear_select([ - msg4803, - msg4804, -]); - -var msg4805 = msg("2453", dup196); - -var msg4806 = msg("2453:01", dup266); - -var select2341 = linear_select([ - msg4805, - msg4806, -]); - -var msg4807 = msg("2454", dup301); - -var msg4808 = msg("2454:01", dup266); - -var select2342 = linear_select([ - msg4807, - msg4808, -]); - -var msg4809 = msg("2455", dup196); - -var msg4810 = msg("2455:01", dup266); - -var select2343 = linear_select([ - msg4809, - msg4810, -]); - -var msg4811 = msg("2456", dup196); - -var msg4812 = msg("2456:01", dup217); - -var select2344 = linear_select([ - msg4811, - msg4812, -]); - -var msg4813 = msg("2457", dup196); - -var msg4814 = msg("2457:01", dup217); - -var select2345 = linear_select([ - msg4813, - msg4814, -]); - -var msg4815 = msg("2458", dup196); - -var msg4816 = msg("2458:01", dup217); - -var select2346 = linear_select([ - msg4815, - msg4816, -]); - -var msg4817 = msg("2459", dup196); - -var msg4818 = msg("2459:01", dup266); - -var select2347 = linear_select([ - msg4817, - msg4818, -]); - -var msg4819 = msg("2460", dup196); - -var msg4820 = msg("2460:01", dup270); - -var select2348 = linear_select([ - msg4819, - msg4820, -]); - -var msg4821 = msg("2461", dup196); - -var msg4822 = msg("2461:01", dup241); - -var select2349 = linear_select([ - msg4821, - msg4822, -]); - -var msg4823 = msg("2462", dup222); - -var msg4824 = msg("2462:01", dup266); - -var select2350 = linear_select([ - msg4823, - msg4824, -]); - -var msg4825 = msg("2463", dup222); - -var msg4826 = msg("2463:01", dup266); - -var select2351 = linear_select([ - msg4825, - msg4826, -]); - -var msg4827 = msg("2464", dup222); - -var msg4828 = msg("2464:01", dup266); - -var select2352 = linear_select([ - msg4827, - msg4828, -]); - -var msg4829 = msg("2465", dup246); - -var msg4830 = msg("2465:01", dup266); - -var select2353 = linear_select([ - msg4829, - msg4830, -]); - -var msg4831 = msg("2466", dup246); - -var msg4832 = msg("2466:01", dup286); - -var select2354 = linear_select([ - msg4831, - msg4832, -]); - -var msg4833 = msg("2467", dup246); - -var msg4834 = msg("2467:01", dup247); - -var select2355 = linear_select([ - msg4833, - msg4834, -]); - -var msg4835 = msg("2468", dup246); - -var msg4836 = msg("2468:01", dup247); - -var select2356 = linear_select([ - msg4835, - msg4836, -]); - -var msg4837 = msg("2469", dup246); - -var msg4838 = msg("2469:01", dup247); - -var select2357 = linear_select([ - msg4837, - msg4838, -]); - -var msg4839 = msg("2470", dup246); - -var msg4840 = msg("2470:01", dup247); - -var select2358 = linear_select([ - msg4839, - msg4840, -]); - -var msg4841 = msg("2471", dup246); - -var msg4842 = msg("2471:01", dup247); - -var select2359 = linear_select([ - msg4841, - msg4842, -]); - -var msg4843 = msg("2472", dup246); - -var msg4844 = msg("2472:01", dup247); - -var select2360 = linear_select([ - msg4843, - msg4844, -]); - -var msg4845 = msg("2473", dup246); - -var msg4846 = msg("2473:01", dup247); - -var select2361 = linear_select([ - msg4845, - msg4846, -]); - -var msg4847 = msg("2474", dup246); - -var msg4848 = msg("2474:01", dup247); - -var select2362 = linear_select([ - msg4847, - msg4848, -]); - -var msg4849 = msg("2475", dup246); - -var msg4850 = msg("2475:01", dup247); - -var select2363 = linear_select([ - msg4849, - msg4850, -]); - -var msg4851 = msg("2476", dup276); - -var msg4852 = msg("2476:01", dup277); - -var select2364 = linear_select([ - msg4851, - msg4852, -]); - -var msg4853 = msg("2477", dup276); - -var msg4854 = msg("2477:01", dup277); - -var select2365 = linear_select([ - msg4853, - msg4854, -]); - -var msg4855 = msg("2478", dup276); - -var msg4856 = msg("2478:01", dup277); - -var select2366 = linear_select([ - msg4855, - msg4856, -]); - -var msg4857 = msg("2479", dup276); - -var msg4858 = msg("2479:01", dup277); - -var select2367 = linear_select([ - msg4857, - msg4858, -]); - -var msg4859 = msg("2480", dup276); - -var msg4860 = msg("2480:01", dup277); - -var select2368 = linear_select([ - msg4859, - msg4860, -]); - -var msg4861 = msg("2481", dup276); - -var msg4862 = msg("2481:01", dup277); - -var select2369 = linear_select([ - msg4861, - msg4862, -]); - -var msg4863 = msg("2482", dup276); - -var msg4864 = msg("2482:01", dup277); - -var select2370 = linear_select([ - msg4863, - msg4864, -]); - -var msg4865 = msg("2483", dup276); - -var msg4866 = msg("2483:01", dup277); - -var select2371 = linear_select([ - msg4865, - msg4866, -]); - -var msg4867 = msg("2484", dup265); - -var msg4868 = msg("2484:01", dup266); - -var select2372 = linear_select([ - msg4867, - msg4868, -]); - -var msg4869 = msg("2485", dup194); - -var msg4870 = msg("2485:01", dup229); - -var select2373 = linear_select([ - msg4869, - msg4870, -]); - -var msg4871 = msg("2486", dup198); - -var msg4872 = msg("2486:01", dup220); - -var select2374 = linear_select([ - msg4871, - msg4872, -]); - -var msg4873 = msg("2487", dup297); - -var msg4874 = msg("2487:01", dup300); - -var select2375 = linear_select([ - msg4873, - msg4874, -]); - -var msg4875 = msg("2488", dup197); - -var msg4876 = msg("2488:01", dup221); - -var select2376 = linear_select([ - msg4875, - msg4876, -]); - -var msg4877 = msg("2489", dup222); - -var msg4878 = msg("2489:01", dup223); - -var select2377 = linear_select([ - msg4877, - msg4878, -]); - -var msg4879 = msg("2490", dup222); - -var msg4880 = msg("2490:01", dup223); - -var select2378 = linear_select([ - msg4879, - msg4880, -]); - -var msg4881 = msg("2491", dup276); - -var msg4882 = msg("2491:01", dup277); - -var select2379 = linear_select([ - msg4881, - msg4882, -]); - -var msg4883 = msg("2492", dup276); - -var msg4884 = msg("2492:01", dup277); - -var select2380 = linear_select([ - msg4883, - msg4884, -]); - -var msg4885 = msg("2493", dup276); - -var msg4886 = msg("2493:01", dup277); - -var select2381 = linear_select([ - msg4885, - msg4886, -]); - -var msg4887 = msg("2494", dup276); - -var msg4888 = msg("2494:01", dup277); - -var select2382 = linear_select([ - msg4887, - msg4888, -]); - -var msg4889 = msg("2495", dup276); - -var msg4890 = msg("2495:01", dup277); - -var select2383 = linear_select([ - msg4889, - msg4890, -]); - -var msg4891 = msg("2496", dup276); - -var msg4892 = msg("2496:01", dup277); - -var select2384 = linear_select([ - msg4891, - msg4892, -]); - -var msg4893 = msg("2497", dup196); - -var msg4894 = msg("2497:01", dup217); - -var select2385 = linear_select([ - msg4893, - msg4894, -]); - -var msg4895 = msg("2498", dup196); - -var msg4896 = msg("2498:01", dup217); - -var select2386 = linear_select([ - msg4895, - msg4896, -]); - -var msg4897 = msg("2499", dup196); - -var msg4898 = msg("2499:01", dup217); - -var select2387 = linear_select([ - msg4897, - msg4898, -]); - -var msg4899 = msg("2500", dup298); - -var msg4900 = msg("2500:01", dup299); - -var select2388 = linear_select([ - msg4899, - msg4900, -]); - -var msg4901 = msg("2501", dup298); - -var msg4902 = msg("2501:01", dup299); - -var select2389 = linear_select([ - msg4901, - msg4902, -]); - -var msg4903 = msg("2502", dup298); - -var msg4904 = msg("2502:01", dup299); - -var select2390 = linear_select([ - msg4903, - msg4904, -]); - -var msg4905 = msg("2503", dup250); - -var msg4906 = msg("2503:01", dup251); - -var select2391 = linear_select([ - msg4905, - msg4906, -]); - -var msg4907 = msg("2504", dup250); - -var msg4908 = msg("2504:01", dup251); - -var select2392 = linear_select([ - msg4907, - msg4908, -]); - -var msg4909 = msg("2505", dup265); - -var msg4910 = msg("2505:01", dup266); - -var select2393 = linear_select([ - msg4909, - msg4910, -]); - -var msg4911 = msg("2506", dup265); - -var msg4912 = msg("2506:01", dup266); - -var select2394 = linear_select([ - msg4911, - msg4912, -]); - -var msg4913 = msg("2507", dup276); - -var msg4914 = msg("2507:01", dup277); - -var select2395 = linear_select([ - msg4913, - msg4914, -]); - -var msg4915 = msg("2508", dup276); - -var msg4916 = msg("2508:01", dup277); - -var select2396 = linear_select([ - msg4915, - msg4916, -]); - -var msg4917 = msg("2509", dup276); - -var msg4918 = msg("2509:01", dup277); - -var select2397 = linear_select([ - msg4917, - msg4918, -]); - -var msg4919 = msg("2510", dup276); - -var msg4920 = msg("2510:01", dup277); - -var select2398 = linear_select([ - msg4919, - msg4920, -]); - -var msg4921 = msg("2511", dup276); - -var msg4922 = msg("2511:01", dup277); - -var select2399 = linear_select([ - msg4921, - msg4922, -]); - -var msg4923 = msg("2512", dup276); - -var msg4924 = msg("2512:01", dup277); - -var select2400 = linear_select([ - msg4923, - msg4924, -]); - -var msg4925 = msg("2513", dup276); - -var msg4926 = msg("2513:01", dup277); - -var select2401 = linear_select([ - msg4925, - msg4926, -]); - -var msg4927 = msg("2514", dup276); - -var msg4928 = msg("2514:01", dup277); - -var select2402 = linear_select([ - msg4927, - msg4928, -]); - -var msg4929 = msg("2515", dup267); - -var msg4930 = msg("2515:01", dup268); - -var select2403 = linear_select([ - msg4929, - msg4930, -]); - -var msg4931 = msg("2516", dup222); - -var msg4932 = msg("2516:01", dup223); - -var select2404 = linear_select([ - msg4931, - msg4932, -]); - -var msg4933 = msg("2517", dup222); - -var msg4934 = msg("2517:01", dup223); - -var select2405 = linear_select([ - msg4933, - msg4934, -]); - -var msg4935 = msg("2518", dup222); - -var msg4936 = msg("2518:01", dup223); - -var select2406 = linear_select([ - msg4935, - msg4936, -]); - -var msg4937 = msg("2519", dup222); - -var msg4938 = msg("2519:01", dup223); - -var select2407 = linear_select([ - msg4937, - msg4938, -]); - -var msg4939 = msg("2520", dup265); - -var msg4940 = msg("2520:01", dup266); - -var select2408 = linear_select([ - msg4939, - msg4940, -]); - -var msg4941 = msg("2521", dup265); - -var msg4942 = msg("2521:01", dup266); - -var select2409 = linear_select([ - msg4941, - msg4942, -]); - -var msg4943 = msg("2522", dup265); - -var msg4944 = msg("2522:01", dup266); - -var select2410 = linear_select([ - msg4943, - msg4944, -]); - -var msg4945 = msg("2523", dup198); - -var msg4946 = msg("2523:01", dup220); - -var select2411 = linear_select([ - msg4945, - msg4946, -]); - -var msg4947 = msg("2524", dup276); - -var msg4948 = msg("2524:01", dup277); - -var select2412 = linear_select([ - msg4947, - msg4948, -]); - -var msg4949 = msg("2525", dup276); - -var msg4950 = msg("2525:01", dup277); - -var select2413 = linear_select([ - msg4949, - msg4950, -]); - -var msg4951 = msg("2526", dup276); - -var msg4952 = msg("2526:01", dup277); - -var select2414 = linear_select([ - msg4951, - msg4952, -]); - -var msg4953 = msg("2527", dup250); - -var msg4954 = msg("2527:01", dup251); - -var select2415 = linear_select([ - msg4953, - msg4954, -]); - -var msg4955 = msg("2528", dup222); - -var msg4956 = msg("2528:01", dup223); - -var select2416 = linear_select([ - msg4955, - msg4956, -]); - -var msg4957 = msg("2529", dup196); - -var msg4958 = msg("2529:01", dup217); - -var select2417 = linear_select([ - msg4957, - msg4958, -]); - -var msg4959 = msg("2530", dup196); - -var msg4960 = msg("2530:01", dup217); - -var select2418 = linear_select([ - msg4959, - msg4960, -]); - -var msg4961 = msg("2531", dup196); - -var msg4962 = msg("2531:01", dup217); - -var select2419 = linear_select([ - msg4961, - msg4962, -]); - -var msg4963 = msg("2532", dup298); - -var msg4964 = msg("2532:01", dup299); - -var select2420 = linear_select([ - msg4963, - msg4964, -]); - -var msg4965 = msg("2533", dup298); - -var msg4966 = msg("2533:01", dup299); - -var select2421 = linear_select([ - msg4965, - msg4966, -]); - -var msg4967 = msg("2534", dup298); - -var msg4968 = msg("2534:01", dup299); - -var select2422 = linear_select([ - msg4967, - msg4968, -]); - -var msg4969 = msg("2535", dup298); - -var msg4970 = msg("2535:01", dup299); - -var select2423 = linear_select([ - msg4969, - msg4970, -]); - -var msg4971 = msg("2536", dup298); - -var msg4972 = msg("2536:01", dup299); - -var select2424 = linear_select([ - msg4971, - msg4972, -]); - -var msg4973 = msg("2537", dup298); - -var msg4974 = msg("2537:01", dup299); - -var select2425 = linear_select([ - msg4973, - msg4974, -]); - -var msg4975 = msg("2538", dup250); - -var msg4976 = msg("2538:01", dup251); - -var select2426 = linear_select([ - msg4975, - msg4976, -]); - -var msg4977 = msg("2539", dup250); - -var msg4978 = msg("2539:01", dup251); - -var select2427 = linear_select([ - msg4977, - msg4978, -]); - -var msg4979 = msg("2540", dup250); - -var msg4980 = msg("2540:01", dup251); - -var select2428 = linear_select([ - msg4979, - msg4980, -]); - -var msg4981 = msg("2541", dup250); - -var msg4982 = msg("2541:01", dup251); - -var select2429 = linear_select([ - msg4981, - msg4982, -]); - -var msg4983 = msg("2542", dup250); - -var msg4984 = msg("2542:01", dup251); - -var select2430 = linear_select([ - msg4983, - msg4984, -]); - -var msg4985 = msg("2543", dup250); - -var msg4986 = msg("2543:01", dup251); - -var select2431 = linear_select([ - msg4985, - msg4986, -]); - -var msg4987 = msg("2544", dup250); - -var msg4988 = msg("2544:01", dup251); - -var select2432 = linear_select([ - msg4987, - msg4988, -]); - -var msg4989 = msg("2545", dup222); - -var msg4990 = msg("2545:01", dup223); - -var select2433 = linear_select([ - msg4989, - msg4990, -]); - -var msg4991 = msg("2546", dup222); - -var msg4992 = msg("2546:01", dup223); - -var select2434 = linear_select([ - msg4991, - msg4992, -]); - -var msg4993 = msg("2547", dup196); - -var msg4994 = msg("2547:01", dup217); - -var select2435 = linear_select([ - msg4993, - msg4994, -]); - -var msg4995 = msg("2548", dup196); - -var msg4996 = msg("2548:01", dup217); - -var select2436 = linear_select([ - msg4995, - msg4996, -]); - -var msg4997 = msg("2549", dup196); - -var msg4998 = msg("2549:01", dup217); - -var select2437 = linear_select([ - msg4997, - msg4998, -]); - -var msg4999 = msg("2550", dup197); - -var msg5000 = msg("2550:01", dup221); - -var select2438 = linear_select([ - msg4999, - msg5000, -]); - -var msg5001 = msg("2551", dup222); - -var msg5002 = msg("2552", dup222); - -var msg5003 = msg("2553", dup222); - -var msg5004 = msg("2554", dup222); - -var msg5005 = msg("2555", dup222); - -var msg5006 = msg("2556", dup222); - -var msg5007 = msg("2557", dup222); - -var msg5008 = msg("2558", dup222); - -var msg5009 = msg("2559", dup222); - -var msg5010 = msg("2560", dup222); - -var msg5011 = msg("2561", dup196); - -var msg5012 = msg("2562", dup265); - -var msg5013 = msg("2563", dup276); - -var msg5014 = msg("2564", dup276); - -var msg5015 = msg("2565", dup265); - -var msg5016 = msg("2566", dup265); - -var msg5017 = msg("2567", dup265); - -var msg5018 = msg("2568", dup265); - -var msg5019 = msg("2569", dup265); - -var msg5020 = msg("2570", dup196); - -var msg5021 = msg("2571", dup265); - -var msg5022 = msg("2572", dup267); - -var msg5023 = msg("2573", dup265); - -var msg5024 = msg("2574", dup227); - -var msg5025 = msg("2575", dup265); - -var msg5026 = msg("2576", dup222); - -var msg5027 = msg("2577", dup265); - -var msg5028 = msg("2578", dup197); - -var msg5029 = msg("2579", dup197); - -var msg5030 = msg("2580", dup265); - -var msg5031 = msg("2581", dup265); - -var msg5032 = msg("2582", dup265); - -var msg5033 = msg("2583", dup222); - -var msg5034 = msg("2584", dup222); - -var msg5035 = msg("2585", dup196); - -var msg5036 = msg("2586", dup196); - -var msg5037 = msg("2587", dup196); - -var msg5038 = msg("2588", dup265); - -var msg5039 = msg("2589", dup265); - -var msg5040 = msg("2590", dup222); - -var msg5041 = msg("2590:01", dup223); - -var select2439 = linear_select([ - msg5040, - msg5041, -]); - -var msg5042 = msg("2591", dup222); - -var msg5043 = msg("2592", dup222); - -var msg5044 = msg("2593", dup222); - -var msg5045 = msg("2594", dup222); - -var msg5046 = msg("2595", dup222); - -var msg5047 = msg("2596", dup222); - -var msg5048 = msg("2597", dup267); - -var msg5049 = msg("2598", dup267); - -var msg5050 = msg("2599", dup222); - -var msg5051 = msg("2600", dup222); - -var msg5052 = msg("2601", dup222); - -var msg5053 = msg("2602", dup222); - -var msg5054 = msg("2603", dup222); - -var msg5055 = msg("2604", dup222); - -var msg5056 = msg("2605", dup222); - -var msg5057 = msg("2606", dup222); - -var msg5058 = msg("2607", dup222); - -var msg5059 = msg("2608", dup222); - -var msg5060 = msg("2609", dup222); - -var msg5061 = msg("2610", dup222); - -var msg5062 = msg("2611", dup222); - -var msg5063 = msg("2612", dup222); - -var msg5064 = msg("2613", dup222); - -var msg5065 = msg("2614", dup222); - -var msg5066 = msg("2615", dup222); - -var msg5067 = msg("2616", dup222); - -var msg5068 = msg("2617", dup222); - -var msg5069 = msg("2618", dup222); - -var msg5070 = msg("2619", dup222); - -var msg5071 = msg("2620", dup222); - -var msg5072 = msg("2621", dup222); - -var msg5073 = msg("2622", dup222); - -var msg5074 = msg("2623", dup222); - -var msg5075 = msg("2624", dup222); - -var msg5076 = msg("2625", dup222); - -var msg5077 = msg("2626", dup222); - -var msg5078 = msg("2627", dup222); - -var msg5079 = msg("2628", dup222); - -var msg5080 = msg("2629", dup222); - -var msg5081 = msg("2630", dup222); - -var msg5082 = msg("2631", dup222); - -var msg5083 = msg("2632", dup222); - -var msg5084 = msg("2633", dup222); - -var msg5085 = msg("2634", dup222); - -var msg5086 = msg("2635", dup222); - -var msg5087 = msg("2636", dup222); - -var msg5088 = msg("2637", dup222); - -var msg5089 = msg("2638", dup222); - -var msg5090 = msg("2639", dup222); - -var msg5091 = msg("2640", dup222); - -var msg5092 = msg("2641", dup222); - -var msg5093 = msg("2642", dup222); - -var msg5094 = msg("2643", dup222); - -var msg5095 = msg("2644", dup222); - -var msg5096 = msg("2645", dup222); - -var msg5097 = msg("2646", dup222); - -var msg5098 = msg("2647", dup222); - -var msg5099 = msg("2648", dup222); - -var msg5100 = msg("2649", dup222); - -var msg5101 = msg("2650", dup222); - -var msg5102 = msg("2651", dup222); - -var msg5103 = msg("2652", dup222); - -var msg5104 = msg("2653", dup222); - -var msg5105 = msg("2654", dup240); - -var msg5106 = msg("2655", dup196); - -var msg5107 = msg("2656", dup267); - -var msg5108 = msg("2657", dup267); - -var msg5109 = msg("2658", dup265); - -var msg5110 = msg("2659", dup265); - -var msg5111 = msg("2660", dup265); - -var msg5112 = msg("2661", dup265); - -var msg5113 = msg("2662", dup265); - -var msg5114 = msg("2663", dup267); - -var msg5115 = msg("2664", dup196); - -var msg5116 = msg("2665", dup196); - -var msg5117 = msg("2666", dup298); - -var msg5118 = msg("2667", dup265); - -var msg5119 = msg("2668", dup265); - -var msg5120 = msg("2669", dup265); - -var msg5121 = msg("2670", dup265); - -var msg5122 = msg("2671", dup267); - -var msg5123 = msg("2672", dup265); - -var msg5124 = msg("2673", dup267); - -var msg5125 = msg("2674", dup222); - -var msg5126 = msg("2675", dup222); - -var msg5127 = msg("2676", dup222); - -var msg5128 = msg("2677", dup222); - -var msg5129 = msg("2678", dup222); - -var msg5130 = msg("2679", dup222); - -var msg5131 = msg("2680", dup222); - -var msg5132 = msg("2681", dup222); - -var msg5133 = msg("2682", dup222); - -var msg5134 = msg("2683", dup222); - -var msg5135 = msg("2684", dup222); - -var msg5136 = msg("2685", dup222); - -var msg5137 = msg("2686", dup222); - -var msg5138 = msg("2687", dup222); - -var msg5139 = msg("2688", dup222); - -var msg5140 = msg("2689", dup222); - -var msg5141 = msg("2690", dup222); - -var msg5142 = msg("2691", dup222); - -var msg5143 = msg("2692", dup222); - -var msg5144 = msg("2693", dup222); - -var msg5145 = msg("2694", dup222); - -var msg5146 = msg("2695", dup222); - -var msg5147 = msg("2696", dup222); - -var msg5148 = msg("2697", dup222); - -var msg5149 = msg("2698", dup222); - -var msg5150 = msg("2699", dup222); - -var msg5151 = msg("2700", dup222); - -var msg5152 = msg("2701", dup260); - -var msg5153 = msg("2702", dup260); - -var msg5154 = msg("2703", dup260); - -var msg5155 = msg("2704", dup260); - -var msg5156 = msg("2705", dup267); - -var msg5157 = msg("2706", dup196); - -var msg5158 = msg("2707", dup197); - -var msg5159 = msg("2708", dup222); - -var msg5160 = msg("2709", dup222); - -var msg5161 = msg("2710", dup222); - -var msg5162 = msg("2711", dup222); - -var msg5163 = msg("2712", dup222); - -var msg5164 = msg("2713", dup222); - -var msg5165 = msg("2714", dup222); - -var msg5166 = msg("2715", dup222); - -var msg5167 = msg("2716", dup222); - -var msg5168 = msg("2717", dup222); - -var msg5169 = msg("2718", dup222); - -var msg5170 = msg("2719", dup222); - -var msg5171 = msg("2720", dup222); - -var msg5172 = msg("2721", dup222); - -var msg5173 = msg("2722", dup222); - -var msg5174 = msg("2723", dup222); - -var msg5175 = msg("2724", dup222); - -var msg5176 = msg("2725", dup222); - -var msg5177 = msg("2726", dup222); - -var msg5178 = msg("2727", dup222); - -var msg5179 = msg("2728", dup222); - -var msg5180 = msg("2729", dup222); - -var msg5181 = msg("2730", dup222); - -var msg5182 = msg("2731", dup222); - -var msg5183 = msg("2732", dup222); - -var msg5184 = msg("2733", dup222); - -var msg5185 = msg("2734", dup222); - -var msg5186 = msg("2735", dup222); - -var msg5187 = msg("2736", dup222); - -var msg5188 = msg("2737", dup222); - -var msg5189 = msg("2738", dup222); - -var msg5190 = msg("2739", dup222); - -var msg5191 = msg("2740", dup222); - -var msg5192 = msg("2741", dup222); - -var msg5193 = msg("2742", dup222); - -var msg5194 = msg("2743", dup222); - -var msg5195 = msg("2744", dup222); - -var msg5196 = msg("2745", dup222); - -var msg5197 = msg("2746", dup222); - -var msg5198 = msg("2747", dup222); - -var msg5199 = msg("2748", dup222); - -var msg5200 = msg("2749", dup222); - -var msg5201 = msg("2750", dup222); - -var msg5202 = msg("2751", dup222); - -var msg5203 = msg("2752", dup222); - -var msg5204 = msg("2753", dup222); - -var msg5205 = msg("2754", dup222); - -var msg5206 = msg("2755", dup222); - -var msg5207 = msg("2756", dup222); - -var msg5208 = msg("2757", dup222); - -var msg5209 = msg("2758", dup222); - -var msg5210 = msg("2759", dup222); - -var msg5211 = msg("2760", dup222); - -var msg5212 = msg("2761", dup222); - -var msg5213 = msg("2762", dup222); - -var msg5214 = msg("2763", dup222); - -var msg5215 = msg("2764", dup222); - -var msg5216 = msg("2765", dup222); - -var msg5217 = msg("2766", dup222); - -var msg5218 = msg("2767", dup222); - -var msg5219 = msg("2768", dup222); - -var msg5220 = msg("2769", dup222); - -var msg5221 = msg("2770", dup222); - -var msg5222 = msg("2771", dup222); - -var msg5223 = msg("2772", dup222); - -var msg5224 = msg("2773", dup222); - -var msg5225 = msg("2774", dup222); - -var msg5226 = msg("2775", dup222); - -var msg5227 = msg("2776", dup222); - -var msg5228 = msg("2777", dup222); - -var msg5229 = msg("2778", dup222); - -var msg5230 = msg("2779", dup222); - -var msg5231 = msg("2780", dup222); - -var msg5232 = msg("2781", dup222); - -var msg5233 = msg("2782", dup222); - -var msg5234 = msg("2783", dup222); - -var msg5235 = msg("2784", dup222); - -var msg5236 = msg("2785", dup222); - -var msg5237 = msg("2786", dup222); - -var msg5238 = msg("2787", dup222); - -var msg5239 = msg("2788", dup222); - -var msg5240 = msg("2789", dup222); - -var msg5241 = msg("2790", dup222); - -var msg5242 = msg("2791", dup222); - -var msg5243 = msg("2792", dup222); - -var msg5244 = msg("2793", dup222); - -var msg5245 = msg("2794", dup222); - -var msg5246 = msg("2795", dup222); - -var msg5247 = msg("2796", dup222); - -var msg5248 = msg("2797", dup222); - -var msg5249 = msg("2798", dup222); - -var msg5250 = msg("2799", dup222); - -var msg5251 = msg("2800", dup222); - -var msg5252 = msg("2801", dup222); - -var msg5253 = msg("2802", dup222); - -var msg5254 = msg("2803", dup222); - -var msg5255 = msg("2804", dup222); - -var msg5256 = msg("2805", dup222); - -var msg5257 = msg("2806", dup222); - -var msg5258 = msg("2807", dup222); - -var msg5259 = msg("2808", dup222); - -var msg5260 = msg("2809", dup222); - -var msg5261 = msg("2810", dup222); - -var msg5262 = msg("2811", dup222); - -var msg5263 = msg("2812", dup222); - -var msg5264 = msg("2813", dup222); - -var msg5265 = msg("2814", dup222); - -var msg5266 = msg("2815", dup222); - -var msg5267 = msg("2816", dup222); - -var msg5268 = msg("2817", dup222); - -var msg5269 = msg("2818", dup222); - -var msg5270 = msg("2819", dup222); - -var msg5271 = msg("2820", dup222); - -var msg5272 = msg("2821", dup222); - -var msg5273 = msg("2822", dup222); - -var msg5274 = msg("2823", dup222); - -var msg5275 = msg("2824", dup222); - -var msg5276 = msg("2825", dup222); - -var msg5277 = msg("2826", dup222); - -var msg5278 = msg("2827", dup222); - -var msg5279 = msg("2828", dup222); - -var msg5280 = msg("2829", dup222); - -var msg5281 = msg("2830", dup222); - -var msg5282 = msg("2831", dup222); - -var msg5283 = msg("2832", dup222); - -var msg5284 = msg("2833", dup222); - -var msg5285 = msg("2834", dup222); - -var msg5286 = msg("2835", dup222); - -var msg5287 = msg("2836", dup222); - -var msg5288 = msg("2837", dup222); - -var msg5289 = msg("2838", dup222); - -var msg5290 = msg("2839", dup222); - -var msg5291 = msg("2840", dup222); - -var msg5292 = msg("2841", dup222); - -var msg5293 = msg("2842", dup222); - -var msg5294 = msg("2843", dup222); - -var msg5295 = msg("2844", dup222); - -var msg5296 = msg("2845", dup222); - -var msg5297 = msg("2846", dup222); - -var msg5298 = msg("2847", dup222); - -var msg5299 = msg("2848", dup222); - -var msg5300 = msg("2849", dup222); - -var msg5301 = msg("2850", dup222); - -var msg5302 = msg("2851", dup222); - -var msg5303 = msg("2852", dup222); - -var msg5304 = msg("2853", dup222); - -var msg5305 = msg("2854", dup222); - -var msg5306 = msg("2855", dup222); - -var msg5307 = msg("2856", dup222); - -var msg5308 = msg("2857", dup222); - -var msg5309 = msg("2858", dup222); - -var msg5310 = msg("2859", dup222); - -var msg5311 = msg("2860", dup222); - -var msg5312 = msg("2861", dup222); - -var msg5313 = msg("2862", dup222); - -var msg5314 = msg("2863", dup222); - -var msg5315 = msg("2864", dup222); - -var msg5316 = msg("2865", dup222); - -var msg5317 = msg("2866", dup222); - -var msg5318 = msg("2867", dup222); - -var msg5319 = msg("2868", dup222); - -var msg5320 = msg("2869", dup222); - -var msg5321 = msg("2870", dup222); - -var msg5322 = msg("2871", dup222); - -var msg5323 = msg("2872", dup222); - -var msg5324 = msg("2873", dup222); - -var msg5325 = msg("2874", dup222); - -var msg5326 = msg("2875", dup222); - -var msg5327 = msg("2876", dup222); - -var msg5328 = msg("2877", dup222); - -var msg5329 = msg("2878", dup222); - -var msg5330 = msg("2879", dup222); - -var msg5331 = msg("2880", dup222); - -var msg5332 = msg("2881", dup222); - -var msg5333 = msg("2882", dup222); - -var msg5334 = msg("2883", dup222); - -var msg5335 = msg("2884", dup222); - -var msg5336 = msg("2885", dup222); - -var msg5337 = msg("2886", dup222); - -var msg5338 = msg("2887", dup222); - -var msg5339 = msg("2888", dup222); - -var msg5340 = msg("2889", dup222); - -var msg5341 = msg("2890", dup222); - -var msg5342 = msg("2891", dup222); - -var msg5343 = msg("2892", dup222); - -var msg5344 = msg("2893", dup222); - -var msg5345 = msg("2894", dup222); - -var msg5346 = msg("2895", dup222); - -var msg5347 = msg("2896", dup222); - -var msg5348 = msg("2897", dup222); - -var msg5349 = msg("2898", dup222); - -var msg5350 = msg("2899", dup222); - -var msg5351 = msg("2900", dup222); - -var msg5352 = msg("2901", dup222); - -var msg5353 = msg("2902", dup222); - -var msg5354 = msg("2903", dup222); - -var msg5355 = msg("2904", dup222); - -var msg5356 = msg("2905", dup222); - -var msg5357 = msg("2906", dup222); - -var msg5358 = msg("2907", dup222); - -var msg5359 = msg("2908", dup222); - -var msg5360 = msg("2909", dup222); - -var msg5361 = msg("2910", dup222); - -var msg5362 = msg("2911", dup222); - -var msg5363 = msg("2912", dup222); - -var msg5364 = msg("2913", dup222); - -var msg5365 = msg("2914", dup222); - -var msg5366 = msg("2915", dup222); - -var msg5367 = msg("2916", dup222); - -var msg5368 = msg("2917", dup222); - -var msg5369 = msg("2918", dup222); - -var msg5370 = msg("2919", dup222); - -var msg5371 = msg("2921", dup244); - -var msg5372 = msg("2922", dup196); - -var msg5373 = msg("2923", dup236); - -var msg5374 = msg("2924", dup236); - -var msg5375 = msg("2925", dup196); - -var msg5376 = msg("2926", dup196); - -var msg5377 = msg("2927", dup222); - -var msg5378 = msg("2928", dup276); - -var msg5379 = msg("2929", dup276); - -var msg5380 = msg("2930", dup276); - -var msg5381 = msg("2931", dup276); - -var msg5382 = msg("2932", dup276); - -var msg5383 = msg("2933", dup276); - -var msg5384 = msg("2934", dup276); - -var msg5385 = msg("2935", dup276); - -var msg5386 = msg("2936", dup276); - -var msg5387 = msg("2937", dup276); - -var msg5388 = msg("2938", dup276); - -var msg5389 = msg("2939", dup276); - -var msg5390 = msg("2940", dup276); - -var msg5391 = msg("2941", dup276); - -var msg5392 = msg("2942", dup276); - -var msg5393 = msg("2943", dup276); - -var msg5394 = msg("2944", dup276); - -var msg5395 = msg("2945", dup276); - -var msg5396 = msg("2946", dup276); - -var msg5397 = msg("2947", dup276); - -var msg5398 = msg("2948", dup276); - -var msg5399 = msg("2949", dup276); - -var msg5400 = msg("2950", dup197); - -var msg5401 = msg("2951", dup197); - -var msg5402 = msg("2952", dup246); - -var msg5403 = msg("2953", dup246); - -var msg5404 = msg("2954", dup246); - -var msg5405 = msg("2955", dup246); - -var msg5406 = msg("2956", dup276); - -var msg5407 = msg("2957", dup276); - -var msg5408 = msg("2958", dup276); - -var msg5409 = msg("2959", dup276); - -var msg5410 = msg("2960", dup276); - -var msg5411 = msg("2961", dup276); - -var msg5412 = msg("2962", dup276); - -var msg5413 = msg("2963", dup276); - -var msg5414 = msg("2964", dup276); - -var msg5415 = msg("2965", dup276); - -var msg5416 = msg("2966", dup276); - -var msg5417 = msg("2967", dup276); - -var msg5418 = msg("2968", dup276); - -var msg5419 = msg("2969", dup276); - -var msg5420 = msg("2970", dup276); - -var msg5421 = msg("2971", dup276); - -var msg5422 = msg("2972", dup246); - -var msg5423 = msg("2973", dup246); - -var msg5424 = msg("2974", dup246); - -var msg5425 = msg("2975", dup246); - -var msg5426 = msg("2976", dup246); - -var msg5427 = msg("2977", dup246); - -var msg5428 = msg("2978", dup246); - -var msg5429 = msg("2979", dup246); - -var msg5430 = msg("2980", dup246); - -var msg5431 = msg("2981", dup246); - -var msg5432 = msg("2982", dup246); - -var msg5433 = msg("2983", dup246); - -var msg5434 = msg("2984", dup276); - -var msg5435 = msg("2985", dup276); - -var msg5436 = msg("2986", dup276); - -var msg5437 = msg("2987", dup276); - -var msg5438 = msg("2988", dup276); - -var msg5439 = msg("2989", dup276); - -var msg5440 = msg("2990", dup276); - -var msg5441 = msg("2991", dup276); - -var msg5442 = msg("2992", dup276); - -var msg5443 = msg("2993", dup276); - -var msg5444 = msg("2994", dup276); - -var msg5445 = msg("2995", dup276); - -var msg5446 = msg("2996", dup276); - -var msg5447 = msg("2997", dup276); - -var msg5448 = msg("2998", dup276); - -var msg5449 = msg("2999", dup276); - -var msg5450 = msg("3000", dup276); - -var msg5451 = msg("3001", dup276); - -var msg5452 = msg("3002", dup276); - -var msg5453 = msg("3003", dup276); - -var msg5454 = msg("3004", dup276); - -var msg5455 = msg("3005", dup276); - -var msg5456 = msg("3006", dup222); - -var msg5457 = msg("3007", dup222); - -var msg5458 = msg("3008", dup222); - -var msg5459 = msg("3009", dup205); - -var msg5460 = msg("3010", dup205); - -var msg5461 = msg("3011", dup205); - -var msg5462 = msg("3012", dup205); - -var msg5463 = msg("3013", dup205); - -var msg5464 = msg("3014", dup205); - -var msg5465 = msg("3015", dup205); - -var msg5466 = msg("3016", dup205); - -var msg5467 = msg("3017", dup222); - -var msg5468 = msg("3018", dup276); - -var msg5469 = msg("3019", dup276); - -var msg5470 = msg("3020", dup276); - -var msg5471 = msg("3021", dup276); - -var msg5472 = msg("3022", dup276); - -var msg5473 = msg("3023", dup276); - -var msg5474 = msg("3024", dup276); - -var msg5475 = msg("3025", dup276); - -var msg5476 = msg("3026", dup276); - -var msg5477 = msg("3027", dup276); - -var msg5478 = msg("3028", dup276); - -var msg5479 = msg("3029", dup276); - -var msg5480 = msg("3030", dup276); - -var msg5481 = msg("3031", dup276); - -var msg5482 = msg("3032", dup276); - -var msg5483 = msg("3033", dup276); - -var msg5484 = msg("3034", dup276); - -var msg5485 = msg("3035", dup276); - -var msg5486 = msg("3036", dup276); - -var msg5487 = msg("3037", dup276); - -var msg5488 = msg("3038", dup276); - -var msg5489 = msg("3039", dup276); - -var msg5490 = msg("3040", dup276); - -var msg5491 = msg("3041", dup276); - -var msg5492 = msg("3042", dup198); - -var msg5493 = msg("3043", dup198); - -var msg5494 = msg("3044", dup198); - -var msg5495 = msg("3045", dup198); - -var msg5496 = msg("3046", dup198); - -var msg5497 = msg("3047", dup198); - -var msg5498 = msg("3048", dup198); - -var msg5499 = msg("3049", dup198); - -var msg5500 = msg("3050", dup198); - -var msg5501 = msg("3051", dup198); - -var msg5502 = msg("3052", dup198); - -var msg5503 = msg("3053", dup198); - -var msg5504 = msg("3054", dup198); - -var msg5505 = msg("3055", dup198); - -var msg5506 = msg("3056", dup198); - -var msg5507 = msg("3057", dup198); - -var msg5508 = msg("3058", dup222); - -var msg5509 = msg("3059", dup265); - -var msg5510 = msg("3060", dup265); - -var msg5511 = msg("3061", dup196); - -var msg5512 = msg("3062", dup265); - -var msg5513 = msg("3063", dup205); - -var msg5514 = msg("3064", dup205); - -var msg5515 = msg("3065", dup222); - -var msg5516 = msg("3066", dup222); - -var msg5517 = msg("3067", dup222); - -var msg5518 = msg("3068", dup222); - -var msg5519 = msg("3069", dup222); - -var msg5520 = msg("3070", dup222); - -var msg5521 = msg("3071", dup222); - -var msg5522 = msg("3072", dup222); - -var msg5523 = msg("3073", dup222); - -var msg5524 = msg("3074", dup222); - -var msg5525 = msg("3075", dup222); - -var msg5526 = msg("3076", dup222); - -var msg5527 = msg("3077", dup222); - -var msg5528 = msg("3078", dup222); - -var msg5529 = msg("3079", dup197); - -var msg5530 = msg("3080", dup222); - -var msg5531 = msg("3081", dup205); - -var msg5532 = msg("3082", dup205); - -var msg5533 = msg("3083", dup205); - -var msg5534 = msg("3084", dup222); - -var msg5535 = msg("3085", dup222); - -var msg5536 = msg("3086", dup302); - -var msg5537 = msg("3087", dup267); - -var msg5538 = msg("3088", dup267); - -var msg5539 = msg("3089", dup198); - -var msg5540 = msg("3090", dup276); - -var msg5541 = msg("3091", dup276); - -var msg5542 = msg("3092", dup276); - -var msg5543 = msg("3093", dup276); - -var msg5544 = msg("3094", dup276); - -var msg5545 = msg("3095", dup276); - -var msg5546 = msg("3096", dup276); - -var msg5547 = msg("3097", dup276); - -var msg5548 = msg("3098", dup276); - -var msg5549 = msg("3099", dup276); - -var msg5550 = msg("3100", dup276); - -var msg5551 = msg("3101", dup276); - -var msg5552 = msg("3102", dup276); - -var msg5553 = msg("3103", dup276); - -var msg5554 = msg("3104", dup276); - -var msg5555 = msg("3105", dup276); - -var msg5556 = msg("3106", dup276); - -var msg5557 = msg("3107", dup276); - -var msg5558 = msg("3108", dup276); - -var msg5559 = msg("3109", dup276); - -var msg5560 = msg("3110", dup276); - -var msg5561 = msg("3111", dup276); - -var msg5562 = msg("3112", dup276); - -var msg5563 = msg("3113", dup276); - -var msg5564 = msg("3114", dup276); - -var msg5565 = msg("3115", dup276); - -var msg5566 = msg("3116", dup276); - -var msg5567 = msg("3117", dup276); - -var msg5568 = msg("3118", dup276); - -var msg5569 = msg("3119", dup276); - -var msg5570 = msg("3120", dup276); - -var msg5571 = msg("3121", dup276); - -var msg5572 = msg("3122", dup276); - -var msg5573 = msg("3123", dup276); - -var msg5574 = msg("3124", dup276); - -var msg5575 = msg("3125", dup276); - -var msg5576 = msg("3126", dup276); - -var msg5577 = msg("3127", dup276); - -var msg5578 = msg("3128", dup276); - -var msg5579 = msg("3129", dup276); - -var msg5580 = msg("3130", dup197); - -var msg5581 = msg("3131", dup265); - -var msg5582 = msg("3132", dup265); - -var msg5583 = msg("3133", dup265); - -var msg5584 = msg("3134", dup265); - -var msg5585 = msg("3135", dup276); - -var msg5586 = msg("3136", dup276); - -var msg5587 = msg("3137", dup276); - -var msg5588 = msg("3138", dup276); - -var msg5589 = msg("3139", dup276); - -var msg5590 = msg("3140", dup276); - -var msg5591 = msg("3141", dup276); - -var msg5592 = msg("3142", dup276); - -var msg5593 = msg("3143", dup276); - -var msg5594 = msg("3144", dup276); - -var msg5595 = msg("3145", dup276); - -var msg5596 = msg("3146", dup276); - -var msg5597 = msg("3147", dup278); - -var msg5598 = msg("3148", dup265); - -var msg5599 = msg("3149", dup267); - -var msg5600 = msg("3150", dup297); - -var msg5601 = msg("3151", dup225); - -var msg5602 = msg("3152", dup236); - -var msg5603 = msg("3153", dup197); - -var msg5604 = msg("3154", dup197); - -var msg5605 = msg("3155", dup205); - -var msg5606 = msg("3156", dup276); - -var msg5607 = msg("3157", dup276); - -var msg5608 = msg("3158", dup276); - -var msg5609 = msg("3159", dup276); - -var msg5610 = msg("3160", dup276); - -var msg5611 = msg("3161", dup276); - -var msg5612 = msg("3162", dup276); - -var msg5613 = msg("3163", dup276); - -var msg5614 = msg("3164", dup276); - -var msg5615 = msg("3165", dup276); - -var msg5616 = msg("3166", dup201); - -var msg5617 = msg("3167", dup276); - -var msg5618 = msg("3168", dup201); - -var msg5619 = msg("3169", dup201); - -var msg5620 = msg("3170", dup201); - -var msg5621 = msg("3171", dup276); - -var msg5622 = msg("3172", dup276); - -var msg5623 = msg("3173", dup276); - -var msg5624 = msg("3174", dup276); - -var msg5625 = msg("3175", dup276); - -var msg5626 = msg("3176", dup276); - -var msg5627 = msg("3177", dup276); - -var msg5628 = msg("3178", dup276); - -var msg5629 = msg("3179", dup276); - -var msg5630 = msg("3180", dup276); - -var msg5631 = msg("3181", dup276); - -var msg5632 = msg("3182", dup276); - -var msg5633 = msg("3183", dup276); - -var msg5634 = msg("3184", dup276); - -var msg5635 = msg("3185", dup276); - -var msg5636 = msg("3186", dup276); - -var msg5637 = msg("3187", dup276); - -var msg5638 = msg("3188", dup276); - -var msg5639 = msg("3189", dup276); - -var msg5640 = msg("3190", dup276); - -var msg5641 = msg("3191", dup276); - -var msg5642 = msg("3192", dup265); - -var msg5643 = msg("3193", dup267); - -var msg5644 = msg("3194", dup267); - -var msg5645 = msg("3195", dup276); - -var msg5646 = msg("3196", dup276); - -var msg5647 = msg("3197", dup276); - -var msg5648 = msg("3198", dup276); - -var msg5649 = msg("3199", dup222); - -var msg5650 = msg("3200", dup222); - -var msg5651 = msg("3201", dup271); - -var msg5652 = msg("3202", dup276); - -var msg5653 = msg("3203", dup276); - -var msg5654 = msg("3204", dup276); - -var msg5655 = msg("3205", dup276); - -var msg5656 = msg("3206", dup276); - -var msg5657 = msg("3207", dup276); - -var msg5658 = msg("3208", dup276); - -var msg5659 = msg("3209", dup276); - -var msg5660 = msg("3210", dup276); - -var msg5661 = msg("3211", dup276); - -var msg5662 = msg("3212", dup276); - -var msg5663 = msg("3213", dup276); - -var msg5664 = msg("3214", dup276); - -var msg5665 = msg("3215", dup276); - -var msg5666 = msg("3216", dup276); - -var msg5667 = msg("3217", dup276); - -var msg5668 = msg("3218", dup276); - -var msg5669 = msg("3219", dup276); - -var msg5670 = msg("3220", dup276); - -var msg5671 = msg("3221", dup276); - -var msg5672 = msg("3222", dup276); - -var msg5673 = msg("3223", dup276); - -var msg5674 = msg("3224", dup276); - -var msg5675 = msg("3225", dup276); - -var msg5676 = msg("3226", dup276); - -var msg5677 = msg("3227", dup276); - -var msg5678 = msg("3228", dup276); - -var msg5679 = msg("3229", dup276); - -var msg5680 = msg("3230", dup276); - -var msg5681 = msg("3231", dup276); - -var msg5682 = msg("3232", dup276); - -var msg5683 = msg("3233", dup276); - -var msg5684 = msg("3234", dup276); - -var msg5685 = msg("3235", dup276); - -var msg5686 = msg("3236", dup276); - -var msg5687 = msg("3237", dup276); - -var msg5688 = msg("3238", dup201); - -var msg5689 = msg("3239", dup201); - -var msg5690 = msg("3240", dup276); - -var msg5691 = msg("3241", dup276); - -var msg5692 = msg("3242", dup276); - -var msg5693 = msg("3243", dup276); - -var msg5694 = msg("3244", dup276); - -var msg5695 = msg("3245", dup276); - -var msg5696 = msg("3246", dup276); - -var msg5697 = msg("3247", dup276); - -var msg5698 = msg("3248", dup276); - -var msg5699 = msg("3249", dup276); - -var msg5700 = msg("3250", dup276); - -var msg5701 = msg("3251", dup276); - -var msg5702 = msg("3252", dup276); - -var msg5703 = msg("3253", dup276); - -var msg5704 = msg("3254", dup276); - -var msg5705 = msg("3255", dup276); - -var msg5706 = msg("3256", dup201); - -var msg5707 = msg("3257", dup201); - -var msg5708 = msg("3258", dup201); - -var msg5709 = msg("3259", dup201); - -var msg5710 = msg("3260", dup201); - -var msg5711 = msg("3261", dup201); - -var msg5712 = msg("3262", dup276); - -var msg5713 = msg("3263", dup276); - -var msg5714 = msg("3264", dup276); - -var msg5715 = msg("3265", dup276); - -var msg5716 = msg("3266", dup276); - -var msg5717 = msg("3267", dup276); - -var msg5718 = msg("3268", dup276); - -var msg5719 = msg("3269", dup276); - -var msg5720 = msg("3270", dup276); - -var msg5721 = msg("3271", dup276); - -var msg5722 = msg("3272", dup205); - -var msg5723 = msg("3273", dup236); - -var msg5724 = msg("3274", dup278); - -var msg5725 = msg("3275", dup276); - -var msg5726 = msg("3276", dup276); - -var msg5727 = msg("3277", dup255); - -var msg5728 = msg("3278", dup255); - -var msg5729 = msg("3279", dup255); - -var msg5730 = msg("3280", dup255); - -var msg5731 = msg("3281", dup255); - -var msg5732 = msg("3282", dup255); - -var msg5733 = msg("3283", dup255); - -var msg5734 = msg("3284", dup255); - -var msg5735 = msg("3285", dup255); - -var msg5736 = msg("3286", dup255); - -var msg5737 = msg("3287", dup255); - -var msg5738 = msg("3288", dup255); - -var msg5739 = msg("3289", dup255); - -var msg5740 = msg("3290", dup255); - -var msg5741 = msg("3291", dup255); - -var msg5742 = msg("3292", dup255); - -var msg5743 = msg("3293", dup255); - -var msg5744 = msg("3294", dup255); - -var msg5745 = msg("3295", dup255); - -var msg5746 = msg("3296", dup255); - -var msg5747 = msg("3297", dup255); - -var msg5748 = msg("3298", dup255); - -var msg5749 = msg("3299", dup255); - -var msg5750 = msg("3300", dup255); - -var msg5751 = msg("3301", dup255); - -var msg5752 = msg("3302", dup255); - -var msg5753 = msg("3303", dup255); - -var msg5754 = msg("3304", dup255); - -var msg5755 = msg("3305", dup255); - -var msg5756 = msg("3306", dup255); - -var msg5757 = msg("3307", dup255); - -var msg5758 = msg("3308", dup255); - -var msg5759 = msg("3309", dup255); - -var msg5760 = msg("3310", dup255); - -var msg5761 = msg("3311", dup255); - -var msg5762 = msg("3312", dup255); - -var msg5763 = msg("3313", dup255); - -var msg5764 = msg("3314", dup255); - -var msg5765 = msg("3315", dup255); - -var msg5766 = msg("3316", dup255); - -var msg5767 = msg("3317", dup255); - -var msg5768 = msg("3318", dup255); - -var msg5769 = msg("3319", dup255); - -var msg5770 = msg("3320", dup255); - -var msg5771 = msg("3321", dup255); - -var msg5772 = msg("3322", dup255); - -var msg5773 = msg("3323", dup255); - -var msg5774 = msg("3324", dup255); - -var msg5775 = msg("3325", dup255); - -var msg5776 = msg("3326", dup255); - -var msg5777 = msg("3327", dup255); - -var msg5778 = msg("3328", dup255); - -var msg5779 = msg("3329", dup255); - -var msg5780 = msg("3330", dup255); - -var msg5781 = msg("3331", dup255); - -var msg5782 = msg("3332", dup255); - -var msg5783 = msg("3333", dup255); - -var msg5784 = msg("3334", dup255); - -var msg5785 = msg("3335", dup255); - -var msg5786 = msg("3336", dup255); - -var msg5787 = msg("3337", dup255); - -var msg5788 = msg("3338", dup255); - -var msg5789 = msg("3339", dup255); - -var msg5790 = msg("3340", dup255); - -var msg5791 = msg("3341", dup255); - -var msg5792 = msg("3342", dup255); - -var msg5793 = msg("3343", dup255); - -var msg5794 = msg("3344", dup255); - -var msg5795 = msg("3345", dup255); - -var msg5796 = msg("3346", dup255); - -var msg5797 = msg("3347", dup255); - -var msg5798 = msg("3348", dup255); - -var msg5799 = msg("3349", dup255); - -var msg5800 = msg("3350", dup255); - -var msg5801 = msg("3351", dup255); - -var msg5802 = msg("3352", dup255); - -var msg5803 = msg("3353", dup255); - -var msg5804 = msg("3354", dup255); - -var msg5805 = msg("3355", dup255); - -var msg5806 = msg("3356", dup255); - -var msg5807 = msg("3357", dup255); - -var msg5808 = msg("3358", dup255); - -var msg5809 = msg("3359", dup255); - -var msg5810 = msg("3360", dup255); - -var msg5811 = msg("3361", dup255); - -var msg5812 = msg("3362", dup255); - -var msg5813 = msg("3363", dup255); - -var msg5814 = msg("3364", dup255); - -var msg5815 = msg("3365", dup255); - -var msg5816 = msg("3366", dup255); - -var msg5817 = msg("3367", dup255); - -var msg5818 = msg("3368", dup255); - -var msg5819 = msg("3369", dup255); - -var msg5820 = msg("3370", dup255); - -var msg5821 = msg("3371", dup255); - -var msg5822 = msg("3372", dup255); - -var msg5823 = msg("3373", dup255); - -var msg5824 = msg("3374", dup255); - -var msg5825 = msg("3375", dup255); - -var msg5826 = msg("3376", dup255); - -var msg5827 = msg("3377", dup276); - -var msg5828 = msg("3378", dup276); - -var msg5829 = msg("3379", dup276); - -var msg5830 = msg("3380", dup276); - -var msg5831 = msg("3381", dup276); - -var msg5832 = msg("3382", dup276); - -var msg5833 = msg("3383", dup276); - -var msg5834 = msg("3384", dup276); - -var msg5835 = msg("3385", dup276); - -var msg5836 = msg("3386", dup276); - -var msg5837 = msg("3387", dup276); - -var msg5838 = msg("3388", dup276); - -var msg5839 = msg("3389", dup276); - -var msg5840 = msg("3390", dup276); - -var msg5841 = msg("3391", dup276); - -var msg5842 = msg("3392", dup276); - -var msg5843 = msg("3393", dup276); - -var msg5844 = msg("3394", dup276); - -var msg5845 = msg("3395", dup276); - -var msg5846 = msg("3396", dup276); - -var msg5847 = msg("3397", dup276); - -var msg5848 = msg("3398", dup276); - -var msg5849 = msg("3399", dup276); - -var msg5850 = msg("3400", dup276); - -var msg5851 = msg("3401", dup276); - -var msg5852 = msg("3402", dup276); - -var msg5853 = msg("3403", dup276); - -var msg5854 = msg("3404", dup276); - -var msg5855 = msg("3405", dup276); - -var msg5856 = msg("3406", dup276); - -var msg5857 = msg("3407", dup276); - -var msg5858 = msg("3408", dup276); - -var msg5859 = msg("3409", dup276); - -var msg5860 = msg("3410", dup276); - -var msg5861 = msg("3411", dup276); - -var msg5862 = msg("3412", dup276); - -var msg5863 = msg("3413", dup276); - -var msg5864 = msg("3414", dup276); - -var msg5865 = msg("3415", dup276); - -var msg5866 = msg("3416", dup276); - -var msg5867 = msg("3417", dup276); - -var msg5868 = msg("3418", dup276); - -var msg5869 = msg("3419", dup276); - -var msg5870 = msg("3420", dup276); - -var msg5871 = msg("3421", dup276); - -var msg5872 = msg("3422", dup276); - -var msg5873 = msg("3423", dup276); - -var msg5874 = msg("3424", dup276); - -var msg5875 = msg("3425", dup276); - -var msg5876 = msg("3426", dup276); - -var msg5877 = msg("3427", dup276); - -var msg5878 = msg("3428", dup276); - -var msg5879 = msg("3429", dup276); - -var msg5880 = msg("3430", dup276); - -var msg5881 = msg("3431", dup276); - -var msg5882 = msg("3432", dup276); - -var msg5883 = msg("3433", dup276); - -var msg5884 = msg("3434", dup276); - -var msg5885 = msg("3435", dup276); - -var msg5886 = msg("3436", dup276); - -var msg5887 = msg("3437", dup276); - -var msg5888 = msg("3438", dup276); - -var msg5889 = msg("3439", dup276); - -var msg5890 = msg("3440", dup276); - -var msg5891 = msg("3441", dup227); - -var msg5892 = msg("3442", dup198); - -var msg5893 = msg("3443", dup240); - -var msg5894 = msg("3444", dup240); - -var msg5895 = msg("3445", dup240); - -var msg5896 = msg("3446", dup240); - -var msg5897 = msg("3447", dup240); - -var msg5898 = msg("3448", dup240); - -var msg5899 = msg("3449", dup240); - -var msg5900 = msg("3450", dup240); - -var msg5901 = msg("3451", dup240); - -var msg5902 = msg("3452", dup240); - -var msg5903 = msg("3453", dup196); - -var msg5904 = msg("3454", dup196); - -var msg5905 = msg("3455", dup197); - -var msg5906 = msg("3456", dup240); - -var msg5907 = msg("3457", dup222); - -var msg5908 = msg("3458", dup222); - -var msg5909 = msg("3459", dup196); - -var msg5910 = msg("3460", dup227); - -var msg5911 = msg("3461", dup297); - -var msg5912 = msg("3462", dup222); - -var msg5913 = msg("3463", dup265); - -var msg5914 = msg("3464", dup267); - -var msg5915 = msg("3465", dup265); - -var msg5916 = msg("3466", dup267); - -var msg5917 = msg("3467", dup265); - -var msg5918 = msg("3468", dup265); - -var msg5919 = msg("3469", dup198); - -var msg5920 = msg("3470", dup197); - -var msg5921 = msg("3471", dup267); - -var msg5922 = msg("3472", dup197); - -var msg5923 = msg("3473", dup267); - -var msg5924 = msg("3474", dup197); - -var msg5925 = msg("3475", dup197); - -var msg5926 = msg("3476", dup197); - -var msg5927 = msg("3477", dup197); - -var msg5928 = msg("3478", dup197); - -var msg5929 = msg("3479", dup197); - -var msg5930 = msg("3480", dup197); - -var msg5931 = msg("3481", dup197); - -var msg5932 = msg("3482", dup197); - -var msg5933 = msg("3483", dup197); - -var msg5934 = msg("3484", dup197); - -var msg5935 = msg("3485", dup197); - -var msg5936 = msg("3486", dup265); - -var msg5937 = msg("3487", dup196); - -var msg5938 = msg("3488", dup196); - -var msg5939 = msg("3489", dup196); - -var msg5940 = msg("3490", dup196); - -var msg5941 = msg("3491", dup196); - -var msg5942 = msg("3492", dup196); - -var msg5943 = msg("3493", dup250); - -var msg5944 = msg("3494", dup250); - -var msg5945 = msg("3495", dup250); - -var msg5946 = msg("3496", dup250); - -var msg5947 = msg("3497", dup250); - -var msg5948 = msg("3498", dup250); - -var msg5949 = msg("3499", dup298); - -var msg5950 = msg("3500", dup298); - -var msg5951 = msg("3501", dup298); - -var msg5952 = msg("3502", dup298); - -var msg5953 = msg("3503", dup298); - -var msg5954 = msg("3504", dup298); - -var msg5955 = msg("3505", dup298); - -var msg5956 = msg("3506", dup298); - -var msg5957 = msg("3507", dup298); - -var msg5958 = msg("3508", dup298); - -var msg5959 = msg("3509", dup298); - -var msg5960 = msg("3510", dup298); - -var msg5961 = msg("3511", dup222); - -var msg5962 = msg("3512", dup196); - -var msg5963 = msg("3513", dup196); - -var msg5964 = msg("3514", dup196); - -var msg5965 = msg("3515", dup196); - -var msg5966 = msg("3516", dup196); - -var msg5967 = msg("3517", dup222); - -var msg5968 = msg("3518", dup197); - -var msg5969 = msg("3519", dup197); - -var msg5970 = msg("3520", dup222); - -var msg5971 = msg("3521", dup222); - -var msg5972 = msg("3522", dup222); - -var msg5973 = msg("3523", dup227); - -var msg5974 = msg("3524", dup196); - -var msg5975 = msg("3525", dup196); - -var msg5976 = msg("3526", dup222); - -var msg5977 = msg("3527", dup222); - -var msg5978 = msg("3528", dup240); - -var msg5979 = msg("3529", dup222); - -var msg5980 = msg("3530", dup197); - -var msg5981 = msg("3531", dup197); - -var msg5982 = msg("3532", dup222); - -var msg5983 = msg("3533", dup278); - -var msg5984 = msg("3534", dup197); - -var msg5985 = msg("3535", dup196); - -var msg5986 = msg("3536", dup197); - -var msg5987 = msg("3537", dup278); - -var msg5988 = msg("3538", dup222); - -var msg5989 = msg("3539", dup222); - -var msg5990 = msg("3540", dup222); - -var msg5991 = msg("3541", dup222); - -var msg5992 = msg("3542", dup240); - -var msg5993 = msg("3543", dup240); - -var msg5994 = msg("3544", dup265); - -var msg5995 = msg("3545", dup265); - -var msg5996 = msg("3546", dup267); - -var msg5997 = msg("3547", dup267); - -var msg5998 = msg("3548", dup265); - -var msg5999 = msg("3549", dup265); - -var msg6000 = msg("3550", dup267); - -var msg6001 = msg("3551", dup265); - -var msg6002 = msg("3552", dup265); - -var msg6003 = msg("3553", dup265); - -var msg6004 = msg("3554", dup276); - -var msg6005 = msg("3555", dup276); - -var msg6006 = msg("3556", dup276); - -var msg6007 = msg("3557", dup276); - -var msg6008 = msg("3558", dup276); - -var msg6009 = msg("3559", dup276); - -var msg6010 = msg("3560", dup276); - -var msg6011 = msg("3561", dup276); - -var msg6012 = msg("3562", dup276); - -var msg6013 = msg("3563", dup276); - -var msg6014 = msg("3564", dup276); - -var msg6015 = msg("3565", dup276); - -var msg6016 = msg("3566", dup276); - -var msg6017 = msg("3567", dup276); - -var msg6018 = msg("3568", dup276); - -var msg6019 = msg("3569", dup276); - -var msg6020 = msg("3570", dup276); - -var msg6021 = msg("3571", dup276); - -var msg6022 = msg("3572", dup276); - -var msg6023 = msg("3573", dup276); - -var msg6024 = msg("3574", dup276); - -var msg6025 = msg("3575", dup276); - -var msg6026 = msg("3576", dup276); - -var msg6027 = msg("3577", dup276); - -var msg6028 = msg("3578", dup276); - -var msg6029 = msg("3579", dup276); - -var msg6030 = msg("3580", dup276); - -var msg6031 = msg("3581", dup276); - -var msg6032 = msg("3582", dup276); - -var msg6033 = msg("3583", dup276); - -var msg6034 = msg("3584", dup276); - -var msg6035 = msg("3585", dup276); - -var msg6036 = msg("3586", dup276); - -var msg6037 = msg("3587", dup276); - -var msg6038 = msg("3588", dup276); - -var msg6039 = msg("3589", dup276); - -var msg6040 = msg("3590", dup276); - -var msg6041 = msg("3591", dup276); - -var msg6042 = msg("3592", dup276); - -var msg6043 = msg("3593", dup276); - -var msg6044 = msg("3594", dup276); - -var msg6045 = msg("3595", dup276); - -var msg6046 = msg("3596", dup276); - -var msg6047 = msg("3597", dup276); - -var msg6048 = msg("3598", dup276); - -var msg6049 = msg("3599", dup276); - -var msg6050 = msg("3600", dup276); - -var msg6051 = msg("3601", dup276); - -var msg6052 = msg("3602", dup276); - -var msg6053 = msg("3603", dup276); - -var msg6054 = msg("3604", dup276); - -var msg6055 = msg("3605", dup276); - -var msg6056 = msg("3606", dup276); - -var msg6057 = msg("3607", dup276); - -var msg6058 = msg("3608", dup276); - -var msg6059 = msg("3609", dup276); - -var msg6060 = msg("3610", dup276); - -var msg6061 = msg("3611", dup276); - -var msg6062 = msg("3612", dup276); - -var msg6063 = msg("3613", dup276); - -var msg6064 = msg("3614", dup276); - -var msg6065 = msg("3615", dup276); - -var msg6066 = msg("3616", dup276); - -var msg6067 = msg("3617", dup276); - -var msg6068 = msg("3618", dup276); - -var msg6069 = msg("3619", dup276); - -var msg6070 = msg("3620", dup276); - -var msg6071 = msg("3621", dup276); - -var msg6072 = msg("3622", dup276); - -var msg6073 = msg("3623", dup276); - -var msg6074 = msg("3624", dup276); - -var msg6075 = msg("3625", dup276); - -var msg6076 = msg("3626", dup198); - -var msg6077 = msg("3627", dup196); - -var msg6078 = msg("3628", dup196); - -var msg6079 = msg("3629", dup265); - -var msg6080 = msg("3630", dup222); - -var msg6081 = msg("3631", dup222); - -var msg6082 = msg("3632", dup267); - -var msg6083 = msg("3633", dup196); - -var msg6084 = msg("3634", dup267); - -var msg6085 = msg("3635", dup205); - -var msg6086 = msg("3636", dup205); - -var msg6087 = msg("3637", dup196); - -var msg6088 = msg("3638", dup267); - -var msg6089 = msg("3639", dup198); - -var msg6090 = msg("3640", dup198); - -var msg6091 = msg("3641", dup198); - -var msg6092 = msg("3642", dup198); - -var msg6093 = msg("3643", dup198); - -var msg6094 = msg("3644", dup198); - -var msg6095 = msg("3645", dup198); - -var msg6096 = msg("3646", dup198); - -var msg6097 = msg("3647", dup198); - -var msg6098 = msg("3648", dup198); - -var msg6099 = msg("3649", dup198); - -var msg6100 = msg("3650", dup198); - -var msg6101 = msg("3651", dup222); - -var msg6102 = msg("3652", dup222); - -var msg6103 = msg("3653", dup222); - -var msg6104 = msg("3654", dup222); - -var msg6105 = msg("3655", dup222); - -var msg6106 = msg("3656", dup222); - -var msg6107 = msg("3657", dup196); - -var msg6108 = msg("3658", dup222); - -var msg6109 = msg("3659", dup222); - -var msg6110 = msg("3660", dup222); - -var msg6111 = msg("3661", dup222); - -var msg6112 = msg("3662", dup222); - -var msg6113 = msg("3663", dup222); - -var msg6114 = msg("3664", dup222); - -var msg6115 = msg("3665", dup196); - -var msg6116 = msg("3666", dup196); - -var msg6117 = msg("3667", dup285); - -var msg6118 = msg("3668", dup285); - -var msg6119 = msg("3669", dup260); - -var msg6120 = msg("3670", dup260); - -var msg6121 = msg("3671", dup260); - -var msg6122 = msg("3672", dup260); - -var msg6123 = msg("3673", dup198); - -var msg6124 = msg("3674", dup265); - -var msg6125 = msg("3675", dup198); - -var msg6126 = msg("3676", dup265); - -var msg6127 = msg("3677", dup201); - -var msg6128 = msg("3678", dup201); - -var msg6129 = msg("3679", dup201); - -var msg6130 = msg("3680", dup196); - -var msg6131 = msg("3681", dup196); - -var msg6132 = msg("3682", dup250); - -var msg6133 = msg("3683", dup267); - -var msg6134 = msg("3684", dup196); - -var msg6135 = msg("3685", dup201); - -var msg6136 = msg("3686", dup197); - -var msg6137 = msg("3687", dup248); - -var msg6138 = msg("3688", dup248); - -var msg6139 = msg("3689", dup267); - -var msg6140 = msg("3690", dup260); - -var msg6141 = msg("3691", dup196); - -var msg6142 = msg("3692", dup196); - -var msg6143 = msg("3693", dup267); - -var msg6144 = msg("3694", dup265); - -var msg6145 = msg("3695", dup222); - -var msg6146 = msg("3696", dup198); - -var msg6147 = msg("3697", dup276); - -var msg6148 = msg("3698", dup276); - -var msg6149 = msg("3699", dup276); - -var msg6150 = msg("3700", dup276); - -var msg6151 = msg("3701", dup276); - -var msg6152 = msg("3702", dup276); - -var msg6153 = msg("3703", dup276); - -var msg6154 = msg("3704", dup276); - -var msg6155 = msg("3705", dup276); - -var msg6156 = msg("3706", dup276); - -var msg6157 = msg("3707", dup276); - -var msg6158 = msg("3708", dup276); - -var msg6159 = msg("3709", dup276); - -var msg6160 = msg("3710", dup276); - -var msg6161 = msg("3711", dup276); - -var msg6162 = msg("3712", dup276); - -var msg6163 = msg("3713", dup276); - -var msg6164 = msg("3714", dup276); - -var msg6165 = msg("3715", dup276); - -var msg6166 = msg("3716", dup276); - -var msg6167 = msg("3717", dup276); - -var msg6168 = msg("3718", dup276); - -var msg6169 = msg("3719", dup276); - -var msg6170 = msg("3720", dup276); - -var msg6171 = msg("3721", dup276); - -var msg6172 = msg("3722", dup276); - -var msg6173 = msg("3723", dup276); - -var msg6174 = msg("3724", dup276); - -var msg6175 = msg("3725", dup276); - -var msg6176 = msg("3726", dup276); - -var msg6177 = msg("3727", dup276); - -var msg6178 = msg("3728", dup276); - -var msg6179 = msg("3729", dup276); - -var msg6180 = msg("3730", dup276); - -var msg6181 = msg("3731", dup276); - -var msg6182 = msg("3732", dup276); - -var msg6183 = msg("3733", dup276); - -var msg6184 = msg("3734", dup276); - -var msg6185 = msg("3735", dup276); - -var msg6186 = msg("3736", dup276); - -var msg6187 = msg("3737", dup276); - -var msg6188 = msg("3738", dup276); - -var msg6189 = msg("3739", dup276); - -var msg6190 = msg("3740", dup276); - -var msg6191 = msg("3741", dup276); - -var msg6192 = msg("3742", dup276); - -var msg6193 = msg("3743", dup276); - -var msg6194 = msg("3744", dup276); - -var msg6195 = msg("3745", dup276); - -var msg6196 = msg("3746", dup276); - -var msg6197 = msg("3747", dup276); - -var msg6198 = msg("3748", dup276); - -var msg6199 = msg("3749", dup276); - -var msg6200 = msg("3750", dup276); - -var msg6201 = msg("3751", dup276); - -var msg6202 = msg("3752", dup276); - -var msg6203 = msg("3753", dup276); - -var msg6204 = msg("3754", dup276); - -var msg6205 = msg("3755", dup276); - -var msg6206 = msg("3756", dup276); - -var msg6207 = msg("3757", dup276); - -var msg6208 = msg("3758", dup276); - -var msg6209 = msg("3759", dup276); - -var msg6210 = msg("3760", dup276); - -var msg6211 = msg("3761", dup276); - -var msg6212 = msg("3762", dup276); - -var msg6213 = msg("3763", dup276); - -var msg6214 = msg("3764", dup276); - -var msg6215 = msg("3765", dup276); - -var msg6216 = msg("3766", dup276); - -var msg6217 = msg("3767", dup276); - -var msg6218 = msg("3768", dup276); - -var msg6219 = msg("3769", dup276); - -var msg6220 = msg("3770", dup276); - -var msg6221 = msg("3771", dup276); - -var msg6222 = msg("3772", dup276); - -var msg6223 = msg("3773", dup276); - -var msg6224 = msg("3774", dup276); - -var msg6225 = msg("3775", dup276); - -var msg6226 = msg("3776", dup276); - -var msg6227 = msg("3777", dup276); - -var msg6228 = msg("3778", dup276); - -var msg6229 = msg("3779", dup276); - -var msg6230 = msg("3780", dup276); - -var msg6231 = msg("3781", dup276); - -var msg6232 = msg("3782", dup276); - -var msg6233 = msg("3783", dup276); - -var msg6234 = msg("3784", dup276); - -var msg6235 = msg("3785", dup276); - -var msg6236 = msg("3786", dup276); - -var msg6237 = msg("3787", dup276); - -var msg6238 = msg("3788", dup276); - -var msg6239 = msg("3789", dup276); - -var msg6240 = msg("3790", dup276); - -var msg6241 = msg("3791", dup276); - -var msg6242 = msg("3792", dup276); - -var msg6243 = msg("3793", dup276); - -var msg6244 = msg("3794", dup276); - -var msg6245 = msg("3795", dup276); - -var msg6246 = msg("3796", dup276); - -var msg6247 = msg("3797", dup276); - -var msg6248 = msg("3798", dup276); - -var msg6249 = msg("3799", dup276); - -var msg6250 = msg("3800", dup276); - -var msg6251 = msg("3801", dup276); - -var msg6252 = msg("3802", dup276); - -var msg6253 = msg("3803", dup276); - -var msg6254 = msg("3804", dup276); - -var msg6255 = msg("3805", dup276); - -var msg6256 = msg("3806", dup276); - -var msg6257 = msg("3807", dup276); - -var msg6258 = msg("3808", dup276); - -var msg6259 = msg("3809", dup276); - -var msg6260 = msg("3810", dup276); - -var msg6261 = msg("3811", dup276); - -var msg6262 = msg("3812", dup276); - -var msg6263 = msg("3813", dup267); - -var msg6264 = msg("3814", dup265); - -var msg6265 = msg("3815", dup222); - -var msg6266 = msg("3816", dup267); - -var msg6267 = msg("3817", dup295); - -var msg6268 = msg("3818", dup295); - -var msg6269 = msg("3819", dup196); - -var msg6270 = msg("3820", dup265); - -var msg6271 = msg("3821", dup265); - -var msg6272 = msg("3822", dup265); - -var msg6273 = msg("3823", dup267); - -var msg6274 = msg("3824", dup222); - -var msg6275 = msg("3825", dup196); - -var msg6276 = msg("3826", dup196); - -var msg6277 = msg("3827", dup265); - -var msg6278 = msg("3828", dup276); - -var msg6279 = msg("3829", dup276); - -var msg6280 = msg("3830", dup276); - -var msg6281 = msg("3831", dup276); - -var msg6282 = msg("3832", dup276); - -var msg6283 = msg("3833", dup276); - -var msg6284 = msg("3834", dup276); - -var msg6285 = msg("3835", dup276); - -var msg6286 = msg("3836", dup276); - -var msg6287 = msg("3837", dup276); - -var msg6288 = msg("3838", dup276); - -var msg6289 = msg("3839", dup276); - -var msg6290 = msg("3840", dup276); - -var msg6291 = msg("3841", dup276); - -var msg6292 = msg("3842", dup276); - -var msg6293 = msg("3843", dup276); - -var msg6294 = msg("3844", dup276); - -var msg6295 = msg("3845", dup276); - -var msg6296 = msg("3846", dup276); - -var msg6297 = msg("3847", dup276); - -var msg6298 = msg("3848", dup276); - -var msg6299 = msg("3849", dup276); - -var msg6300 = msg("3850", dup276); - -var msg6301 = msg("3851", dup276); - -var msg6302 = msg("3852", dup276); - -var msg6303 = msg("3853", dup276); - -var msg6304 = msg("3854", dup276); - -var msg6305 = msg("3855", dup276); - -var msg6306 = msg("3856", dup276); - -var msg6307 = msg("3857", dup276); - -var msg6308 = msg("3858", dup276); - -var msg6309 = msg("3859", dup276); - -var msg6310 = msg("3860", dup276); - -var msg6311 = msg("3861", dup276); - -var msg6312 = msg("3862", dup276); - -var msg6313 = msg("3863", dup276); - -var msg6314 = msg("3864", dup276); - -var msg6315 = msg("3865", dup276); - -var msg6316 = msg("3866", dup276); - -var msg6317 = msg("3867", dup276); - -var msg6318 = msg("3868", dup276); - -var msg6319 = msg("3869", dup276); - -var msg6320 = msg("3870", dup276); - -var msg6321 = msg("3871", dup276); - -var msg6322 = msg("3872", dup276); - -var msg6323 = msg("3873", dup276); - -var msg6324 = msg("3874", dup276); - -var msg6325 = msg("3875", dup276); - -var msg6326 = msg("3876", dup276); - -var msg6327 = msg("3877", dup276); - -var msg6328 = msg("3878", dup276); - -var msg6329 = msg("3879", dup276); - -var msg6330 = msg("3880", dup276); - -var msg6331 = msg("3881", dup276); - -var msg6332 = msg("3882", dup276); - -var msg6333 = msg("3883", dup276); - -var msg6334 = msg("3884", dup276); - -var msg6335 = msg("3885", dup276); - -var msg6336 = msg("3886", dup276); - -var msg6337 = msg("3887", dup276); - -var msg6338 = msg("3888", dup276); - -var msg6339 = msg("3889", dup276); - -var msg6340 = msg("3890", dup276); - -var msg6341 = msg("3891", dup276); - -var msg6342 = msg("3892", dup276); - -var msg6343 = msg("3893", dup276); - -var msg6344 = msg("3894", dup276); - -var msg6345 = msg("3895", dup276); - -var msg6346 = msg("3896", dup276); - -var msg6347 = msg("3897", dup276); - -var msg6348 = msg("3898", dup276); - -var msg6349 = msg("3899", dup276); - -var msg6350 = msg("3900", dup276); - -var msg6351 = msg("3901", dup276); - -var msg6352 = msg("3902", dup276); - -var msg6353 = msg("3903", dup276); - -var msg6354 = msg("3904", dup276); - -var msg6355 = msg("3905", dup276); - -var msg6356 = msg("3906", dup276); - -var msg6357 = msg("3907", dup276); - -var msg6358 = msg("3908", dup276); - -var msg6359 = msg("3909", dup276); - -var msg6360 = msg("3910", dup276); - -var msg6361 = msg("3911", dup276); - -var msg6362 = msg("3912", dup276); - -var msg6363 = msg("3913", dup276); - -var msg6364 = msg("3914", dup276); - -var msg6365 = msg("3915", dup276); - -var msg6366 = msg("3916", dup276); - -var msg6367 = msg("3917", dup276); - -var msg6368 = msg("3918", dup276); - -var msg6369 = msg("3919", dup276); - -var msg6370 = msg("3920", dup276); - -var msg6371 = msg("3921", dup276); - -var msg6372 = msg("3922", dup276); - -var msg6373 = msg("3923", dup276); - -var msg6374 = msg("3924", dup276); - -var msg6375 = msg("3925", dup276); - -var msg6376 = msg("3926", dup276); - -var msg6377 = msg("3927", dup276); - -var msg6378 = msg("3928", dup276); - -var msg6379 = msg("3929", dup276); - -var msg6380 = msg("3930", dup276); - -var msg6381 = msg("3931", dup276); - -var msg6382 = msg("3932", dup276); - -var msg6383 = msg("3933", dup276); - -var msg6384 = msg("3934", dup276); - -var msg6385 = msg("3935", dup276); - -var msg6386 = msg("3936", dup276); - -var msg6387 = msg("3937", dup276); - -var msg6388 = msg("3938", dup276); - -var msg6389 = msg("3939", dup276); - -var msg6390 = msg("3940", dup276); - -var msg6391 = msg("3941", dup276); - -var msg6392 = msg("3942", dup276); - -var msg6393 = msg("3943", dup276); - -var msg6394 = msg("3944", dup276); - -var msg6395 = msg("3945", dup276); - -var msg6396 = msg("3946", dup276); - -var msg6397 = msg("3947", dup276); - -var msg6398 = msg("3948", dup276); - -var msg6399 = msg("3949", dup276); - -var msg6400 = msg("3950", dup276); - -var msg6401 = msg("3951", dup276); - -var msg6402 = msg("3952", dup276); - -var msg6403 = msg("3953", dup276); - -var msg6404 = msg("3954", dup276); - -var msg6405 = msg("3955", dup276); - -var msg6406 = msg("3956", dup276); - -var msg6407 = msg("3957", dup276); - -var msg6408 = msg("3958", dup276); - -var msg6409 = msg("3959", dup276); - -var msg6410 = msg("3960", dup276); - -var msg6411 = msg("3961", dup276); - -var msg6412 = msg("3962", dup276); - -var msg6413 = msg("3963", dup276); - -var msg6414 = msg("3964", dup276); - -var msg6415 = msg("3965", dup276); - -var msg6416 = msg("3966", dup276); - -var msg6417 = msg("3967", dup276); - -var msg6418 = msg("3968", dup276); - -var msg6419 = msg("3969", dup276); - -var msg6420 = msg("3970", dup276); - -var msg6421 = msg("3971", dup276); - -var msg6422 = msg("3972", dup276); - -var msg6423 = msg("3973", dup276); - -var msg6424 = msg("3974", dup276); - -var msg6425 = msg("3975", dup276); - -var msg6426 = msg("3976", dup276); - -var msg6427 = msg("3977", dup276); - -var msg6428 = msg("3978", dup276); - -var msg6429 = msg("3979", dup276); - -var msg6430 = msg("3980", dup276); - -var msg6431 = msg("3981", dup276); - -var msg6432 = msg("3982", dup276); - -var msg6433 = msg("3983", dup276); - -var msg6434 = msg("3984", dup276); - -var msg6435 = msg("3985", dup276); - -var msg6436 = msg("3986", dup276); - -var msg6437 = msg("3987", dup276); - -var msg6438 = msg("3988", dup276); - -var msg6439 = msg("3989", dup276); - -var msg6440 = msg("3990", dup276); - -var msg6441 = msg("3991", dup276); - -var msg6442 = msg("3992", dup276); - -var msg6443 = msg("3993", dup276); - -var msg6444 = msg("3994", dup276); - -var msg6445 = msg("3995", dup276); - -var msg6446 = msg("3996", dup276); - -var msg6447 = msg("3997", dup276); - -var msg6448 = msg("3998", dup276); - -var msg6449 = msg("3999", dup276); - -var msg6450 = msg("4000", dup276); - -var msg6451 = msg("4001", dup276); - -var msg6452 = msg("4002", dup276); - -var msg6453 = msg("4003", dup276); - -var msg6454 = msg("4004", dup276); - -var msg6455 = msg("4005", dup276); - -var msg6456 = msg("4006", dup276); - -var msg6457 = msg("4007", dup276); - -var msg6458 = msg("4008", dup276); - -var msg6459 = msg("4009", dup276); - -var msg6460 = msg("4010", dup276); - -var msg6461 = msg("4011", dup276); - -var msg6462 = msg("4012", dup276); - -var msg6463 = msg("4013", dup276); - -var msg6464 = msg("4014", dup276); - -var msg6465 = msg("4015", dup276); - -var msg6466 = msg("4016", dup276); - -var msg6467 = msg("4017", dup276); - -var msg6468 = msg("4018", dup276); - -var msg6469 = msg("4019", dup276); - -var msg6470 = msg("4020", dup276); - -var msg6471 = msg("4021", dup276); - -var msg6472 = msg("4022", dup276); - -var msg6473 = msg("4023", dup276); - -var msg6474 = msg("4024", dup276); - -var msg6475 = msg("4025", dup276); - -var msg6476 = msg("4026", dup276); - -var msg6477 = msg("4027", dup276); - -var msg6478 = msg("4028", dup276); - -var msg6479 = msg("4029", dup276); - -var msg6480 = msg("4030", dup276); - -var msg6481 = msg("4031", dup276); - -var msg6482 = msg("4032", dup276); - -var msg6483 = msg("4033", dup276); - -var msg6484 = msg("4034", dup276); - -var msg6485 = msg("4035", dup276); - -var msg6486 = msg("4036", dup276); - -var msg6487 = msg("4037", dup276); - -var msg6488 = msg("4038", dup276); - -var msg6489 = msg("4039", dup276); - -var msg6490 = msg("4040", dup276); - -var msg6491 = msg("4041", dup276); - -var msg6492 = msg("4042", dup276); - -var msg6493 = msg("4043", dup276); - -var msg6494 = msg("4044", dup276); - -var msg6495 = msg("4045", dup276); - -var msg6496 = msg("4046", dup276); - -var msg6497 = msg("4047", dup276); - -var msg6498 = msg("4048", dup276); - -var msg6499 = msg("4049", dup276); - -var msg6500 = msg("4050", dup276); - -var msg6501 = msg("4051", dup276); - -var msg6502 = msg("4052", dup276); - -var msg6503 = msg("4053", dup276); - -var msg6504 = msg("4054", dup276); - -var msg6505 = msg("4055", dup276); - -var msg6506 = msg("4056", dup276); - -var msg6507 = msg("4057", dup276); - -var msg6508 = msg("4058", dup276); - -var msg6509 = msg("4059", dup276); - -var msg6510 = msg("4060", dup196); - -var msg6511 = msg("4061", dup276); - -var msg6512 = msg("4062", dup276); - -var msg6513 = msg("4063", dup276); - -var msg6514 = msg("4064", dup276); - -var msg6515 = msg("4065", dup276); - -var msg6516 = msg("4066", dup276); - -var msg6517 = msg("4067", dup276); - -var msg6518 = msg("4068", dup276); - -var msg6519 = msg("4069", dup276); - -var msg6520 = msg("4070", dup276); - -var msg6521 = msg("4071", dup276); - -var msg6522 = msg("4072", dup276); - -var msg6523 = msg("4073", dup276); - -var msg6524 = msg("4074", dup276); - -var msg6525 = msg("4075", dup276); - -var msg6526 = msg("4076", dup276); - -var msg6527 = msg("4077", dup276); - -var msg6528 = msg("4078", dup276); - -var msg6529 = msg("4079", dup276); - -var msg6530 = msg("4080", dup276); - -var msg6531 = msg("4081", dup276); - -var msg6532 = msg("4082", dup276); - -var msg6533 = msg("4083", dup276); - -var msg6534 = msg("4084", dup276); - -var msg6535 = msg("4085", dup276); - -var msg6536 = msg("4086", dup276); - -var msg6537 = msg("4087", dup276); - -var msg6538 = msg("4088", dup276); - -var msg6539 = msg("4089", dup276); - -var msg6540 = msg("4090", dup276); - -var msg6541 = msg("4091", dup276); - -var msg6542 = msg("4092", dup276); - -var msg6543 = msg("4093", dup276); - -var msg6544 = msg("4094", dup276); - -var msg6545 = msg("4095", dup276); - -var msg6546 = msg("4096", dup276); - -var msg6547 = msg("4097", dup276); - -var msg6548 = msg("4098", dup276); - -var msg6549 = msg("4099", dup276); - -var msg6550 = msg("4100", dup276); - -var msg6551 = msg("4101", dup276); - -var msg6552 = msg("4102", dup276); - -var msg6553 = msg("4103", dup276); - -var msg6554 = msg("4104", dup276); - -var msg6555 = msg("4105", dup276); - -var msg6556 = msg("4106", dup276); - -var msg6557 = msg("4107", dup276); - -var msg6558 = msg("4108", dup276); - -var msg6559 = msg("4109", dup276); - -var msg6560 = msg("4110", dup276); - -var msg6561 = msg("4111", dup276); - -var msg6562 = msg("4112", dup276); - -var msg6563 = msg("4113", dup276); - -var msg6564 = msg("4114", dup276); - -var msg6565 = msg("4115", dup276); - -var msg6566 = msg("4116", dup276); - -var msg6567 = msg("4117", dup276); - -var msg6568 = msg("4118", dup276); - -var msg6569 = msg("4119", dup276); - -var msg6570 = msg("4120", dup276); - -var msg6571 = msg("4121", dup276); - -var msg6572 = msg("4122", dup276); - -var msg6573 = msg("4123", dup276); - -var msg6574 = msg("4124", dup276); - -var msg6575 = msg("4125", dup276); - -var msg6576 = msg("4126", dup196); - -var msg6577 = msg("4127", dup222); - -var msg6578 = msg("4128", dup265); - -var msg6579 = msg("4129", dup198); - -var msg6580 = msg("4130", dup222); - -var msg6581 = msg("4131", dup196); - -var msg6582 = msg("4132", dup265); - -var msg6583 = msg("4133", dup265); - -var msg6584 = msg("4134", dup265); - -var msg6585 = msg("4135", dup267); - -var msg6586 = msg("4136", dup267); - -var msg6587 = msg("4140", dup198); - -var msg6588 = msg("4141", dup198); - -var msg6589 = msg("4142", dup196); - -var msg6590 = msg("4143", dup196); - -var msg6591 = msg("4144", dup196); - -var msg6592 = msg("4145", dup265); - -var msg6593 = msg("4146", dup265); - -var msg6594 = msg("4147", dup265); - -var msg6595 = msg("4148", dup265); - -var msg6596 = msg("4149", dup265); - -var msg6597 = msg("4150", dup265); - -var msg6598 = msg("4151", dup265); - -var msg6599 = msg("4152", dup265); - -var msg6600 = msg("4153", dup265); - -var msg6601 = msg("4154", dup265); - -var msg6602 = msg("4155", dup265); - -var msg6603 = msg("4156", dup265); - -var msg6604 = msg("4157", dup265); - -var msg6605 = msg("4158", dup265); - -var msg6606 = msg("4159", dup265); - -var msg6607 = msg("4160", dup265); - -var msg6608 = msg("4161", dup265); - -var msg6609 = msg("4162", dup265); - -var msg6610 = msg("4163", dup265); - -var msg6611 = msg("4164", dup265); - -var msg6612 = msg("4165", dup265); - -var msg6613 = msg("4166", dup265); - -var msg6614 = msg("4167", dup265); - -var msg6615 = msg("4168", dup265); - -var msg6616 = msg("4169", dup265); - -var msg6617 = msg("4170", dup265); - -var msg6618 = msg("4171", dup265); - -var msg6619 = msg("4172", dup265); - -var msg6620 = msg("4173", dup265); - -var msg6621 = msg("4174", dup265); - -var msg6622 = msg("4175", dup265); - -var msg6623 = msg("4176", dup265); - -var msg6624 = msg("4177", dup265); - -var msg6625 = msg("4178", dup265); - -var msg6626 = msg("4179", dup265); - -var msg6627 = msg("4180", dup194); - -var msg6628 = msg("4181", dup265); - -var msg6629 = msg("4182", dup265); - -var msg6630 = msg("4183", dup265); - -var msg6631 = msg("4184", dup265); - -var msg6632 = msg("4185", dup265); - -var msg6633 = msg("4186", dup265); - -var msg6634 = msg("4187", dup265); - -var msg6635 = msg("4188", dup194); - -var msg6636 = msg("4189", dup265); - -var msg6637 = msg("4190", dup265); - -var msg6638 = msg("4191", dup265); - -var msg6639 = msg("4192", dup265); - -var msg6640 = msg("4193", dup265); - -var msg6641 = msg("4194", dup196); - -var msg6642 = msg("4195", dup265); - -var msg6643 = msg("4196", dup265); - -var msg6644 = msg("4197", dup265); - -var msg6645 = msg("4198", dup265); - -var msg6646 = msg("4199", dup265); - -var msg6647 = msg("4200", dup265); - -var msg6648 = msg("4201", dup265); - -var msg6649 = msg("4202", dup265); - -var msg6650 = msg("4203", dup265); - -var msg6651 = msg("4204", dup265); - -var msg6652 = msg("4205", dup265); - -var msg6653 = msg("4206", dup265); - -var msg6654 = msg("4207", dup265); - -var msg6655 = msg("4208", dup265); - -var msg6656 = msg("4209", dup265); - -var msg6657 = msg("4210", dup265); - -var msg6658 = msg("4211", dup265); - -var msg6659 = msg("4212", dup265); - -var msg6660 = msg("4213", dup265); - -var msg6661 = msg("4214", dup265); - -var msg6662 = msg("4215", dup265); - -var msg6663 = msg("4216", dup265); - -var msg6664 = msg("4217", dup265); - -var msg6665 = msg("4218", dup265); - -var msg6666 = msg("4219", dup265); - -var msg6667 = msg("4220", dup265); - -var msg6668 = msg("4221", dup265); - -var msg6669 = msg("4222", dup265); - -var msg6670 = msg("4223", dup265); - -var msg6671 = msg("4224", dup265); - -var msg6672 = msg("4225", dup265); - -var msg6673 = msg("4226", dup265); - -var msg6674 = msg("4227", dup265); - -var msg6675 = msg("4228", dup265); - -var msg6676 = msg("4229", dup265); - -var msg6677 = msg("4230", dup265); - -var msg6678 = msg("4231", dup265); - -var msg6679 = msg("4232", dup265); - -var msg6680 = msg("4233", dup265); - -var msg6681 = msg("4234", dup265); - -var msg6682 = msg("4235", dup265); - -var msg6683 = msg("4236", dup265); - -var msg6684 = msg("4237", dup276); - -var msg6685 = msg("4238", dup276); - -var msg6686 = msg("4239", dup276); - -var msg6687 = msg("4240", dup276); - -var msg6688 = msg("4241", dup276); - -var msg6689 = msg("4242", dup276); - -var msg6690 = msg("4243", dup276); - -var msg6691 = msg("4244", dup276); - -var msg6692 = msg("4245", dup276); - -var msg6693 = msg("4246", dup276); - -var msg6694 = msg("4247", dup276); - -var msg6695 = msg("4248", dup276); - -var msg6696 = msg("4249", dup276); - -var msg6697 = msg("4250", dup276); - -var msg6698 = msg("4251", dup276); - -var msg6699 = msg("4252", dup276); - -var msg6700 = msg("4253", dup276); - -var msg6701 = msg("4254", dup276); - -var msg6702 = msg("4255", dup276); - -var msg6703 = msg("4256", dup276); - -var msg6704 = msg("4257", dup276); - -var msg6705 = msg("4258", dup276); - -var msg6706 = msg("4259", dup276); - -var msg6707 = msg("4260", dup276); - -var msg6708 = msg("4261", dup276); - -var msg6709 = msg("4262", dup276); - -var msg6710 = msg("4263", dup276); - -var msg6711 = msg("4264", dup276); - -var msg6712 = msg("4265", dup276); - -var msg6713 = msg("4266", dup276); - -var msg6714 = msg("4267", dup276); - -var msg6715 = msg("4268", dup276); - -var msg6716 = msg("4269", dup276); - -var msg6717 = msg("4270", dup276); - -var msg6718 = msg("4271", dup276); - -var msg6719 = msg("4272", dup276); - -var msg6720 = msg("4273", dup276); - -var msg6721 = msg("4274", dup276); - -var msg6722 = msg("4275", dup276); - -var msg6723 = msg("4276", dup276); - -var msg6724 = msg("4277", dup276); - -var msg6725 = msg("4278", dup276); - -var msg6726 = msg("4279", dup276); - -var msg6727 = msg("4280", dup276); - -var msg6728 = msg("4281", dup276); - -var msg6729 = msg("4282", dup276); - -var msg6730 = msg("4283", dup276); - -var msg6731 = msg("4284", dup276); - -var msg6732 = msg("4285", dup276); - -var msg6733 = msg("4286", dup276); - -var msg6734 = msg("4287", dup276); - -var msg6735 = msg("4288", dup276); - -var msg6736 = msg("4289", dup276); - -var msg6737 = msg("4290", dup276); - -var msg6738 = msg("4291", dup276); - -var msg6739 = msg("4292", dup276); - -var msg6740 = msg("4293", dup276); - -var msg6741 = msg("4294", dup276); - -var msg6742 = msg("4295", dup276); - -var msg6743 = msg("4296", dup276); - -var msg6744 = msg("4297", dup276); - -var msg6745 = msg("4298", dup276); - -var msg6746 = msg("4299", dup276); - -var msg6747 = msg("4300", dup276); - -var msg6748 = msg("4301", dup276); - -var msg6749 = msg("4302", dup276); - -var msg6750 = msg("4303", dup276); - -var msg6751 = msg("4304", dup276); - -var msg6752 = msg("4305", dup276); - -var msg6753 = msg("4306", dup276); - -var msg6754 = msg("4307", dup276); - -var msg6755 = msg("4308", dup276); - -var msg6756 = msg("4309", dup276); - -var msg6757 = msg("4310", dup276); - -var msg6758 = msg("4311", dup276); - -var msg6759 = msg("4312", dup276); - -var msg6760 = msg("4313", dup276); - -var msg6761 = msg("4314", dup276); - -var msg6762 = msg("4315", dup276); - -var msg6763 = msg("4316", dup276); - -var msg6764 = msg("4317", dup276); - -var msg6765 = msg("4318", dup276); - -var msg6766 = msg("4319", dup276); - -var msg6767 = msg("4320", dup276); - -var msg6768 = msg("4321", dup276); - -var msg6769 = msg("4322", dup276); - -var msg6770 = msg("4323", dup276); - -var msg6771 = msg("4324", dup276); - -var msg6772 = msg("4325", dup276); - -var msg6773 = msg("4326", dup276); - -var msg6774 = msg("4327", dup276); - -var msg6775 = msg("4328", dup276); - -var msg6776 = msg("4329", dup276); - -var msg6777 = msg("4330", dup276); - -var msg6778 = msg("4331", dup276); - -var msg6779 = msg("4332", dup276); - -var msg6780 = msg("4333", dup276); - -var msg6781 = msg("4334", dup276); - -var msg6782 = msg("4335", dup276); - -var msg6783 = msg("4336", dup276); - -var msg6784 = msg("4337", dup276); - -var msg6785 = msg("4338", dup276); - -var msg6786 = msg("4339", dup276); - -var msg6787 = msg("4340", dup276); - -var msg6788 = msg("4341", dup276); - -var msg6789 = msg("4342", dup276); - -var msg6790 = msg("4343", dup276); - -var msg6791 = msg("4344", dup276); - -var msg6792 = msg("4345", dup276); - -var msg6793 = msg("4346", dup276); - -var msg6794 = msg("4347", dup276); - -var msg6795 = msg("4348", dup276); - -var msg6796 = msg("4349", dup276); - -var msg6797 = msg("4350", dup276); - -var msg6798 = msg("4351", dup276); - -var msg6799 = msg("4352", dup276); - -var msg6800 = msg("4353", dup276); - -var msg6801 = msg("4354", dup276); - -var msg6802 = msg("4355", dup276); - -var msg6803 = msg("4356", dup276); - -var msg6804 = msg("4357", dup276); - -var msg6805 = msg("4358", dup276); - -var msg6806 = msg("4359", dup276); - -var msg6807 = msg("4360", dup276); - -var msg6808 = msg("4361", dup276); - -var msg6809 = msg("4362", dup276); - -var msg6810 = msg("4363", dup276); - -var msg6811 = msg("4364", dup276); - -var msg6812 = msg("4365", dup276); - -var msg6813 = msg("4366", dup276); - -var msg6814 = msg("4367", dup276); - -var msg6815 = msg("4368", dup276); - -var msg6816 = msg("4369", dup276); - -var msg6817 = msg("4370", dup276); - -var msg6818 = msg("4371", dup276); - -var msg6819 = msg("4372", dup276); - -var msg6820 = msg("4373", dup276); - -var msg6821 = msg("4374", dup276); - -var msg6822 = msg("4375", dup276); - -var msg6823 = msg("4376", dup276); - -var msg6824 = msg("4377", dup276); - -var msg6825 = msg("4378", dup276); - -var msg6826 = msg("4379", dup276); - -var msg6827 = msg("4380", dup276); - -var msg6828 = msg("4381", dup276); - -var msg6829 = msg("4382", dup276); - -var msg6830 = msg("4383", dup276); - -var msg6831 = msg("4384", dup276); - -var msg6832 = msg("4385", dup276); - -var msg6833 = msg("4386", dup276); - -var msg6834 = msg("4387", dup276); - -var msg6835 = msg("4388", dup276); - -var msg6836 = msg("4389", dup276); - -var msg6837 = msg("4390", dup276); - -var msg6838 = msg("4391", dup276); - -var msg6839 = msg("4392", dup276); - -var msg6840 = msg("4393", dup276); - -var msg6841 = msg("4394", dup276); - -var msg6842 = msg("4395", dup276); - -var msg6843 = msg("4396", dup276); - -var msg6844 = msg("4397", dup276); - -var msg6845 = msg("4398", dup276); - -var msg6846 = msg("4399", dup276); - -var msg6847 = msg("4400", dup276); - -var msg6848 = msg("4401", dup276); - -var msg6849 = msg("4402", dup276); - -var msg6850 = msg("4403", dup276); - -var msg6851 = msg("4404", dup276); - -var msg6852 = msg("4405", dup276); - -var msg6853 = msg("4406", dup276); - -var msg6854 = msg("4407", dup276); - -var msg6855 = msg("4408", dup276); - -var msg6856 = msg("4409", dup276); - -var msg6857 = msg("4410", dup276); - -var msg6858 = msg("4411", dup276); - -var msg6859 = msg("4412", dup276); - -var msg6860 = msg("4413", dup276); - -var msg6861 = msg("4414", dup276); - -var msg6862 = msg("4415", dup276); - -var msg6863 = msg("4416", dup276); - -var msg6864 = msg("4417", dup276); - -var msg6865 = msg("4418", dup276); - -var msg6866 = msg("4419", dup276); - -var msg6867 = msg("4420", dup276); - -var msg6868 = msg("4421", dup276); - -var msg6869 = msg("4422", dup276); - -var msg6870 = msg("4423", dup276); - -var msg6871 = msg("4424", dup276); - -var msg6872 = msg("4425", dup276); - -var msg6873 = msg("4426", dup276); - -var msg6874 = msg("4427", dup276); - -var msg6875 = msg("4428", dup276); - -var msg6876 = msg("4429", dup276); - -var msg6877 = msg("4430", dup276); - -var msg6878 = msg("4431", dup276); - -var msg6879 = msg("4432", dup276); - -var msg6880 = msg("4433", dup276); - -var msg6881 = msg("4434", dup276); - -var msg6882 = msg("4435", dup276); - -var msg6883 = msg("4436", dup276); - -var msg6884 = msg("4437", dup276); - -var msg6885 = msg("4438", dup276); - -var msg6886 = msg("4439", dup276); - -var msg6887 = msg("4440", dup276); - -var msg6888 = msg("4441", dup276); - -var msg6889 = msg("4442", dup276); - -var msg6890 = msg("4443", dup276); - -var msg6891 = msg("4444", dup276); - -var msg6892 = msg("4445", dup276); - -var msg6893 = msg("4446", dup276); - -var msg6894 = msg("4447", dup276); - -var msg6895 = msg("4448", dup276); - -var msg6896 = msg("4449", dup276); - -var msg6897 = msg("4450", dup276); - -var msg6898 = msg("4451", dup276); - -var msg6899 = msg("4452", dup276); - -var msg6900 = msg("4453", dup276); - -var msg6901 = msg("4454", dup276); - -var msg6902 = msg("4455", dup276); - -var msg6903 = msg("4456", dup276); - -var msg6904 = msg("4457", dup276); - -var msg6905 = msg("4458", dup276); - -var msg6906 = msg("4459", dup276); - -var msg6907 = msg("4460", dup276); - -var msg6908 = msg("4461", dup276); - -var msg6909 = msg("4462", dup276); - -var msg6910 = msg("4463", dup276); - -var msg6911 = msg("4464", dup276); - -var msg6912 = msg("4465", dup276); - -var msg6913 = msg("4466", dup276); - -var msg6914 = msg("4467", dup276); - -var msg6915 = msg("4468", dup276); - -var msg6916 = msg("4469", dup276); - -var msg6917 = msg("4470", dup276); - -var msg6918 = msg("4471", dup276); - -var msg6919 = msg("4472", dup276); - -var msg6920 = msg("4473", dup276); - -var msg6921 = msg("4474", dup276); - -var msg6922 = msg("4475", dup276); - -var msg6923 = msg("4476", dup276); - -var msg6924 = msg("4477", dup276); - -var msg6925 = msg("4478", dup276); - -var msg6926 = msg("4479", dup276); - -var msg6927 = msg("4480", dup276); - -var msg6928 = msg("4481", dup276); - -var msg6929 = msg("4482", dup276); - -var msg6930 = msg("4483", dup276); - -var msg6931 = msg("4484", dup276); - -var msg6932 = msg("4485", dup276); - -var msg6933 = msg("4486", dup276); - -var msg6934 = msg("4487", dup276); - -var msg6935 = msg("4488", dup276); - -var msg6936 = msg("4489", dup276); - -var msg6937 = msg("4490", dup276); - -var msg6938 = msg("4491", dup276); - -var msg6939 = msg("4492", dup276); - -var msg6940 = msg("4493", dup276); - -var msg6941 = msg("4494", dup276); - -var msg6942 = msg("4495", dup276); - -var msg6943 = msg("4496", dup276); - -var msg6944 = msg("4497", dup276); - -var msg6945 = msg("4498", dup276); - -var msg6946 = msg("4499", dup276); - -var msg6947 = msg("4500", dup276); - -var msg6948 = msg("4501", dup276); - -var msg6949 = msg("4502", dup276); - -var msg6950 = msg("4503", dup276); - -var msg6951 = msg("4504", dup276); - -var msg6952 = msg("4505", dup276); - -var msg6953 = msg("4506", dup276); - -var msg6954 = msg("4507", dup276); - -var msg6955 = msg("4508", dup276); - -var msg6956 = msg("4509", dup276); - -var msg6957 = msg("4510", dup276); - -var msg6958 = msg("4511", dup276); - -var msg6959 = msg("4512", dup276); - -var msg6960 = msg("4513", dup276); - -var msg6961 = msg("4514", dup276); - -var msg6962 = msg("4515", dup276); - -var msg6963 = msg("4516", dup276); - -var msg6964 = msg("4517", dup276); - -var msg6965 = msg("4518", dup276); - -var msg6966 = msg("4519", dup276); - -var msg6967 = msg("4520", dup276); - -var msg6968 = msg("4521", dup276); - -var msg6969 = msg("4522", dup276); - -var msg6970 = msg("4523", dup276); - -var msg6971 = msg("4524", dup276); - -var msg6972 = msg("4525", dup276); - -var msg6973 = msg("4526", dup276); - -var msg6974 = msg("4527", dup276); - -var msg6975 = msg("4528", dup276); - -var msg6976 = msg("4529", dup276); - -var msg6977 = msg("4530", dup276); - -var msg6978 = msg("4531", dup276); - -var msg6979 = msg("4532", dup276); - -var msg6980 = msg("4533", dup276); - -var msg6981 = msg("4534", dup276); - -var msg6982 = msg("4535", dup276); - -var msg6983 = msg("4536", dup276); - -var msg6984 = msg("4537", dup276); - -var msg6985 = msg("4538", dup276); - -var msg6986 = msg("4539", dup276); - -var msg6987 = msg("4540", dup276); - -var msg6988 = msg("4541", dup276); - -var msg6989 = msg("4542", dup276); - -var msg6990 = msg("4543", dup276); - -var msg6991 = msg("4544", dup276); - -var msg6992 = msg("4545", dup276); - -var msg6993 = msg("4546", dup276); - -var msg6994 = msg("4547", dup276); - -var msg6995 = msg("4548", dup276); - -var msg6996 = msg("4549", dup276); - -var msg6997 = msg("4550", dup276); - -var msg6998 = msg("4551", dup276); - -var msg6999 = msg("4552", dup276); - -var msg7000 = msg("4553", dup276); - -var msg7001 = msg("4554", dup276); - -var msg7002 = msg("4555", dup276); - -var msg7003 = msg("4556", dup276); - -var msg7004 = msg("4557", dup276); - -var msg7005 = msg("4558", dup276); - -var msg7006 = msg("4559", dup276); - -var msg7007 = msg("4560", dup276); - -var msg7008 = msg("4561", dup276); - -var msg7009 = msg("4562", dup276); - -var msg7010 = msg("4563", dup276); - -var msg7011 = msg("4564", dup276); - -var msg7012 = msg("4565", dup276); - -var msg7013 = msg("4566", dup276); - -var msg7014 = msg("4567", dup276); - -var msg7015 = msg("4568", dup276); - -var msg7016 = msg("4569", dup276); - -var msg7017 = msg("4570", dup276); - -var msg7018 = msg("4571", dup276); - -var msg7019 = msg("4572", dup276); - -var msg7020 = msg("4573", dup276); - -var msg7021 = msg("4574", dup276); - -var msg7022 = msg("4575", dup276); - -var msg7023 = msg("4576", dup276); - -var msg7024 = msg("4577", dup276); - -var msg7025 = msg("4578", dup276); - -var msg7026 = msg("4579", dup276); - -var msg7027 = msg("4580", dup276); - -var msg7028 = msg("4581", dup276); - -var msg7029 = msg("4582", dup276); - -var msg7030 = msg("4583", dup276); - -var msg7031 = msg("4584", dup276); - -var msg7032 = msg("4585", dup276); - -var msg7033 = msg("4586", dup276); - -var msg7034 = msg("4587", dup276); - -var msg7035 = msg("4588", dup276); - -var msg7036 = msg("4589", dup276); - -var msg7037 = msg("4590", dup276); - -var msg7038 = msg("4591", dup276); - -var msg7039 = msg("4592", dup276); - -var msg7040 = msg("4593", dup276); - -var msg7041 = msg("4594", dup276); - -var msg7042 = msg("4595", dup276); - -var msg7043 = msg("4596", dup276); - -var msg7044 = msg("4597", dup276); - -var msg7045 = msg("4598", dup276); - -var msg7046 = msg("4599", dup276); - -var msg7047 = msg("4600", dup276); - -var msg7048 = msg("4601", dup276); - -var msg7049 = msg("4602", dup276); - -var msg7050 = msg("4603", dup276); - -var msg7051 = msg("4604", dup276); - -var msg7052 = msg("4605", dup276); - -var msg7053 = msg("4606", dup276); - -var msg7054 = msg("4607", dup276); - -var msg7055 = msg("4608", dup276); - -var msg7056 = msg("4609", dup276); - -var msg7057 = msg("4610", dup276); - -var msg7058 = msg("4611", dup276); - -var msg7059 = msg("4612", dup276); - -var msg7060 = msg("4613", dup276); - -var msg7061 = msg("4614", dup276); - -var msg7062 = msg("4615", dup276); - -var msg7063 = msg("4616", dup276); - -var msg7064 = msg("4617", dup276); - -var msg7065 = msg("4618", dup276); - -var msg7066 = msg("4619", dup276); - -var msg7067 = msg("4620", dup276); - -var msg7068 = msg("4621", dup276); - -var msg7069 = msg("4622", dup276); - -var msg7070 = msg("4623", dup276); - -var msg7071 = msg("4624", dup276); - -var msg7072 = msg("4625", dup276); - -var msg7073 = msg("4626", dup276); - -var msg7074 = msg("4627", dup276); - -var msg7075 = msg("4628", dup276); - -var msg7076 = msg("4629", dup276); - -var msg7077 = msg("4630", dup276); - -var msg7078 = msg("4631", dup276); - -var msg7079 = msg("4632", dup276); - -var msg7080 = msg("4633", dup276); - -var msg7081 = msg("4634", dup276); - -var msg7082 = msg("4635", dup276); - -var msg7083 = msg("4636", dup276); - -var msg7084 = msg("4637", dup267); - -var msg7085 = msg("4638", dup198); - -var msg7086 = msg("4639", dup222); - -var msg7087 = msg("4640", dup222); - -var msg7088 = msg("4641", dup222); - -var msg7089 = msg("4642", dup222); - -var msg7090 = msg("4643", dup267); - -var msg7091 = msg("4644", dup267); - -var msg7092 = msg("4645", dup196); - -var msg7093 = msg("4646", dup196); - -var msg7094 = msg("4647", dup201); - -var msg7095 = msg("4648", dup265); - -var msg7096 = msg("4649", dup260); - -var msg7097 = msg("4650", dup265); - -var msg7098 = msg("4651", dup276); - -var msg7099 = msg("4652", dup276); - -var msg7100 = msg("4653", dup276); - -var msg7101 = msg("4654", dup276); - -var msg7102 = msg("4655", dup276); - -var msg7103 = msg("4656", dup276); - -var msg7104 = msg("4657", dup276); - -var msg7105 = msg("4658", dup276); - -var msg7106 = msg("4659", dup276); - -var msg7107 = msg("4660", dup276); - -var msg7108 = msg("4661", dup276); - -var msg7109 = msg("4662", dup276); - -var msg7110 = msg("4663", dup276); - -var msg7111 = msg("4664", dup276); - -var msg7112 = msg("4665", dup276); - -var msg7113 = msg("4666", dup276); - -var msg7114 = msg("4667", dup276); - -var msg7115 = msg("4668", dup276); - -var msg7116 = msg("4669", dup276); - -var msg7117 = msg("4670", dup276); - -var msg7118 = msg("4671", dup276); - -var msg7119 = msg("4672", dup276); - -var msg7120 = msg("4673", dup276); - -var msg7121 = msg("4674", dup276); - -var msg7122 = msg("4675", dup267); - -var msg7123 = msg("4676", dup222); - -var msg7124 = msg("4677", dup222); - -var msg7125 = msg("4678", dup196); - -var msg7126 = msg("4679", dup267); - -var msg7127 = msg("4680", dup267); - -var msg7128 = msg("4681", dup265); - -var msg7129 = msg("4682", dup276); - -var msg7130 = msg("4683", dup276); - -var msg7131 = msg("4684", dup276); - -var msg7132 = msg("4685", dup276); - -var msg7133 = msg("4686", dup276); - -var msg7134 = msg("4687", dup276); - -var msg7135 = msg("4688", dup276); - -var msg7136 = msg("4689", dup276); - -var msg7137 = msg("4690", dup276); - -var msg7138 = msg("4691", dup276); - -var msg7139 = msg("4692", dup276); - -var msg7140 = msg("4693", dup276); - -var msg7141 = msg("4694", dup276); - -var msg7142 = msg("4695", dup276); - -var msg7143 = msg("4696", dup276); - -var msg7144 = msg("4697", dup276); - -var msg7145 = msg("4698", dup276); - -var msg7146 = msg("4699", dup276); - -var msg7147 = msg("4700", dup276); - -var msg7148 = msg("4701", dup276); - -var msg7149 = msg("4702", dup276); - -var msg7150 = msg("4703", dup276); - -var msg7151 = msg("4704", dup276); - -var msg7152 = msg("4705", dup276); - -var msg7153 = msg("4706", dup276); - -var msg7154 = msg("4707", dup276); - -var msg7155 = msg("4708", dup276); - -var msg7156 = msg("4709", dup276); - -var msg7157 = msg("4710", dup276); - -var msg7158 = msg("4711", dup276); - -var msg7159 = msg("4712", dup276); - -var msg7160 = msg("4713", dup276); - -var msg7161 = msg("4714", dup276); - -var msg7162 = msg("4715", dup276); - -var msg7163 = msg("4716", dup276); - -var msg7164 = msg("4717", dup276); - -var msg7165 = msg("4718", dup276); - -var msg7166 = msg("4719", dup276); - -var msg7167 = msg("4720", dup276); - -var msg7168 = msg("4721", dup276); - -var msg7169 = msg("4722", dup276); - -var msg7170 = msg("4723", dup276); - -var msg7171 = msg("4724", dup276); - -var msg7172 = msg("4725", dup276); - -var msg7173 = msg("4726", dup276); - -var msg7174 = msg("4727", dup276); - -var msg7175 = msg("4728", dup276); - -var msg7176 = msg("4729", dup276); - -var msg7177 = msg("4730", dup276); - -var msg7178 = msg("4731", dup276); - -var msg7179 = msg("4732", dup276); - -var msg7180 = msg("4733", dup276); - -var msg7181 = msg("4734", dup276); - -var msg7182 = msg("4735", dup276); - -var msg7183 = msg("4736", dup276); - -var msg7184 = msg("4737", dup276); - -var msg7185 = msg("4738", dup276); - -var msg7186 = msg("4739", dup276); - -var msg7187 = msg("4740", dup276); - -var msg7188 = msg("4741", dup276); - -var msg7189 = msg("4742", dup276); - -var msg7190 = msg("4743", dup276); - -var msg7191 = msg("4744", dup276); - -var msg7192 = msg("4745", dup276); - -var msg7193 = msg("4746", dup276); - -var msg7194 = msg("4747", dup276); - -var msg7195 = msg("4748", dup276); - -var msg7196 = msg("4749", dup276); - -var msg7197 = msg("4750", dup276); - -var msg7198 = msg("4751", dup276); - -var msg7199 = msg("4752", dup276); - -var msg7200 = msg("4753", dup276); - -var msg7201 = msg("4754", dup201); - -var msg7202 = msg("4755", dup201); - -var msg7203 = msg("4756", dup201); - -var msg7204 = msg("4757", dup201); - -var msg7205 = msg("4758", dup276); - -var msg7206 = msg("4759", dup276); - -var msg7207 = msg("4760", dup276); - -var msg7208 = msg("4761", dup276); - -var msg7209 = msg("4762", dup276); - -var msg7210 = msg("4763", dup276); - -var msg7211 = msg("4764", dup276); - -var msg7212 = msg("4765", dup276); - -var msg7213 = msg("4766", dup276); - -var msg7214 = msg("4767", dup276); - -var msg7215 = msg("4768", dup276); - -var msg7216 = msg("4769", dup276); - -var msg7217 = msg("4770", dup276); - -var msg7218 = msg("4771", dup276); - -var msg7219 = msg("4772", dup276); - -var msg7220 = msg("4773", dup276); - -var msg7221 = msg("4774", dup276); - -var msg7222 = msg("4775", dup276); - -var msg7223 = msg("4776", dup276); - -var msg7224 = msg("4777", dup276); - -var msg7225 = msg("4778", dup276); - -var msg7226 = msg("4779", dup276); - -var msg7227 = msg("4780", dup276); - -var msg7228 = msg("4781", dup276); - -var msg7229 = msg("4782", dup276); - -var msg7230 = msg("4783", dup276); - -var msg7231 = msg("4784", dup276); - -var msg7232 = msg("4785", dup276); - -var msg7233 = msg("4786", dup276); - -var msg7234 = msg("4787", dup276); - -var msg7235 = msg("4788", dup276); - -var msg7236 = msg("4789", dup276); - -var msg7237 = msg("4790", dup276); - -var msg7238 = msg("4791", dup276); - -var msg7239 = msg("4792", dup276); - -var msg7240 = msg("4793", dup276); - -var msg7241 = msg("4794", dup276); - -var msg7242 = msg("4795", dup276); - -var msg7243 = msg("4796", dup276); - -var msg7244 = msg("4797", dup276); - -var msg7245 = msg("4798", dup276); - -var msg7246 = msg("4799", dup276); - -var msg7247 = msg("4800", dup276); - -var msg7248 = msg("4801", dup276); - -var msg7249 = msg("4802", dup276); - -var msg7250 = msg("4803", dup276); - -var msg7251 = msg("4804", dup276); - -var msg7252 = msg("4805", dup276); - -var msg7253 = msg("4806", dup276); - -var msg7254 = msg("4807", dup276); - -var msg7255 = msg("4808", dup276); - -var msg7256 = msg("4809", dup276); - -var msg7257 = msg("4810", dup276); - -var msg7258 = msg("4811", dup276); - -var msg7259 = msg("4812", dup276); - -var msg7260 = msg("4813", dup276); - -var msg7261 = msg("4814", dup276); - -var msg7262 = msg("4815", dup276); - -var msg7263 = msg("4816", dup276); - -var msg7264 = msg("4817", dup276); - -var msg7265 = msg("4818", dup276); - -var msg7266 = msg("4819", dup276); - -var msg7267 = msg("4820", dup276); - -var msg7268 = msg("4821", dup276); - -var msg7269 = msg("4822", dup201); - -var msg7270 = msg("4823", dup201); - -var msg7271 = msg("4824", dup201); - -var msg7272 = msg("4825", dup201); - -var msg7273 = msg("4826", dup276); - -var msg7274 = msg("4827", dup276); - -var msg7275 = msg("4828", dup276); - -var msg7276 = msg("4829", dup276); - -var msg7277 = msg("4830", dup276); - -var msg7278 = msg("4831", dup276); - -var msg7279 = msg("4832", dup276); - -var msg7280 = msg("4833", dup276); - -var msg7281 = msg("4834", dup276); - -var msg7282 = msg("4835", dup276); - -var msg7283 = msg("4836", dup276); - -var msg7284 = msg("4837", dup276); - -var msg7285 = msg("4838", dup276); - -var msg7286 = msg("4839", dup276); - -var msg7287 = msg("4840", dup276); - -var msg7288 = msg("4841", dup276); - -var msg7289 = msg("4842", dup276); - -var msg7290 = msg("4843", dup276); - -var msg7291 = msg("4844", dup276); - -var msg7292 = msg("4845", dup276); - -var msg7293 = msg("4846", dup276); - -var msg7294 = msg("4847", dup276); - -var msg7295 = msg("4848", dup276); - -var msg7296 = msg("4849", dup276); - -var msg7297 = msg("4850", dup276); - -var msg7298 = msg("4851", dup276); - -var msg7299 = msg("4852", dup276); - -var msg7300 = msg("4853", dup276); - -var msg7301 = msg("4854", dup276); - -var msg7302 = msg("4855", dup276); - -var msg7303 = msg("4856", dup276); - -var msg7304 = msg("4857", dup276); - -var msg7305 = msg("4858", dup276); - -var msg7306 = msg("4859", dup276); - -var msg7307 = msg("4860", dup276); - -var msg7308 = msg("4861", dup276); - -var msg7309 = msg("4862", dup276); - -var msg7310 = msg("4863", dup276); - -var msg7311 = msg("4864", dup276); - -var msg7312 = msg("4865", dup276); - -var msg7313 = msg("4866", dup276); - -var msg7314 = msg("4867", dup276); - -var msg7315 = msg("4868", dup276); - -var msg7316 = msg("4869", dup276); - -var msg7317 = msg("4870", dup276); - -var msg7318 = msg("4871", dup276); - -var msg7319 = msg("4872", dup276); - -var msg7320 = msg("4873", dup276); - -var msg7321 = msg("4874", dup276); - -var msg7322 = msg("4875", dup276); - -var msg7323 = msg("4876", dup276); - -var msg7324 = msg("4877", dup276); - -var msg7325 = msg("4878", dup276); - -var msg7326 = msg("4879", dup276); - -var msg7327 = msg("4880", dup276); - -var msg7328 = msg("4881", dup276); - -var msg7329 = msg("4882", dup276); - -var msg7330 = msg("4883", dup276); - -var msg7331 = msg("4884", dup276); - -var msg7332 = msg("4885", dup276); - -var msg7333 = msg("4886", dup276); - -var msg7334 = msg("4887", dup276); - -var msg7335 = msg("4888", dup276); - -var msg7336 = msg("4889", dup276); - -var msg7337 = msg("4890", dup265); - -var msg7338 = msg("4891", dup265); - -var msg7339 = msg("4892", dup265); - -var msg7340 = msg("4893", dup265); - -var msg7341 = msg("4894", dup265); - -var msg7342 = msg("4895", dup265); - -var msg7343 = msg("4896", dup265); - -var msg7344 = msg("4897", dup265); - -var msg7345 = msg("4898", dup265); - -var msg7346 = msg("4899", dup265); - -var msg7347 = msg("4900", dup265); - -var msg7348 = msg("4901", dup265); - -var msg7349 = msg("4902", dup265); - -var msg7350 = msg("4903", dup265); - -var msg7351 = msg("4904", dup265); - -var msg7352 = msg("4905", dup265); - -var msg7353 = msg("4906", dup265); - -var msg7354 = msg("4907", dup265); - -var msg7355 = msg("4908", dup265); - -var msg7356 = msg("4909", dup265); - -var msg7357 = msg("4910", dup265); - -var msg7358 = msg("4911", dup265); - -var msg7359 = msg("4912", dup265); - -var msg7360 = msg("4913", dup265); - -var msg7361 = msg("4914", dup265); - -var msg7362 = msg("4915", dup265); - -var msg7363 = msg("4916", dup201); - -var msg7364 = msg("4917", dup201); - -var msg7365 = msg("4918", dup198); - -var msg7366 = msg("4919", dup198); - -var msg7367 = msg("4920", dup198); - -var msg7368 = msg("4921", dup198); - -var msg7369 = msg("4922", dup198); - -var msg7370 = msg("4923", dup198); - -var msg7371 = msg("4924", dup198); - -var msg7372 = msg("4925", dup198); - -var msg7373 = msg("4926", dup198); - -var msg7374 = msg("4927", dup198); - -var msg7375 = msg("4928", dup198); - -var msg7376 = msg("4929", dup198); - -var msg7377 = msg("4930", dup198); - -var msg7378 = msg("4931", dup198); - -var msg7379 = msg("4932", dup198); - -var msg7380 = msg("4933", dup198); - -var msg7381 = msg("4934", dup198); - -var msg7382 = msg("4935", dup198); - -var msg7383 = msg("4936", dup198); - -var msg7384 = msg("4937", dup198); - -var msg7385 = msg("4938", dup198); - -var msg7386 = msg("4939", dup198); - -var msg7387 = msg("4940", dup198); - -var msg7388 = msg("4941", dup198); - -var msg7389 = msg("4942", dup198); - -var msg7390 = msg("4943", dup198); - -var msg7391 = msg("4944", dup198); - -var msg7392 = msg("4945", dup198); - -var msg7393 = msg("4946", dup198); - -var msg7394 = msg("4947", dup198); - -var msg7395 = msg("4948", dup198); - -var msg7396 = msg("4949", dup198); - -var msg7397 = msg("4950", dup198); - -var msg7398 = msg("4951", dup198); - -var msg7399 = msg("4952", dup198); - -var msg7400 = msg("4953", dup198); - -var msg7401 = msg("4954", dup198); - -var msg7402 = msg("4955", dup198); - -var msg7403 = msg("4956", dup198); - -var msg7404 = msg("4957", dup198); - -var msg7405 = msg("4958", dup198); - -var msg7406 = msg("4959", dup198); - -var msg7407 = msg("4960", dup198); - -var msg7408 = msg("4961", dup198); - -var msg7409 = msg("4962", dup198); - -var msg7410 = msg("4963", dup198); - -var msg7411 = msg("4964", dup198); - -var msg7412 = msg("4965", dup198); - -var msg7413 = msg("4966", dup198); - -var msg7414 = msg("4967", dup198); - -var msg7415 = msg("4968", dup198); - -var msg7416 = msg("4969", dup198); - -var msg7417 = msg("4970", dup198); - -var msg7418 = msg("4971", dup198); - -var msg7419 = msg("4972", dup198); - -var msg7420 = msg("4973", dup198); - -var msg7421 = msg("4974", dup198); - -var msg7422 = msg("4975", dup198); - -var msg7423 = msg("4976", dup198); - -var msg7424 = msg("4977", dup198); - -var msg7425 = msg("4978", dup198); - -var msg7426 = msg("4979", dup198); - -var msg7427 = msg("4980", dup198); - -var msg7428 = msg("4981", dup198); - -var msg7429 = msg("4982", dup265); - -var msg7430 = msg("4983", dup265); - -var msg7431 = msg("4984", dup236); - -var msg7432 = msg("4985", dup267); - -var msg7433 = msg("4986", dup267); - -var msg7434 = msg("4987", dup267); - -var msg7435 = msg("4988", dup265); - -var msg7436 = msg("4989", dup260); - -var msg7437 = msg("4990", dup260); - -var msg7438 = msg("4991", dup276); - -var msg7439 = msg("4992", dup276); - -var msg7440 = msg("4993", dup276); - -var msg7441 = msg("4994", dup276); - -var msg7442 = msg("4995", dup276); - -var msg7443 = msg("4996", dup276); - -var msg7444 = msg("4997", dup276); - -var msg7445 = msg("4998", dup276); - -var msg7446 = msg("4999", dup276); - -var msg7447 = msg("5000", dup276); - -var msg7448 = msg("5001", dup276); - -var msg7449 = msg("5002", dup276); - -var msg7450 = msg("5003", dup276); - -var msg7451 = msg("5004", dup276); - -var msg7452 = msg("5005", dup276); - -var msg7453 = msg("5006", dup276); - -var msg7454 = msg("5007", dup276); - -var msg7455 = msg("5008", dup276); - -var msg7456 = msg("5009", dup276); - -var msg7457 = msg("5010", dup276); - -var msg7458 = msg("5011", dup276); - -var msg7459 = msg("5012", dup276); - -var msg7460 = msg("5013", dup276); - -var msg7461 = msg("5014", dup276); - -var msg7462 = msg("5015", dup276); - -var msg7463 = msg("5016", dup276); - -var msg7464 = msg("5017", dup276); - -var msg7465 = msg("5018", dup276); - -var msg7466 = msg("5019", dup276); - -var msg7467 = msg("5020", dup276); - -var msg7468 = msg("5021", dup276); - -var msg7469 = msg("5022", dup276); - -var msg7470 = msg("5023", dup276); - -var msg7471 = msg("5024", dup276); - -var msg7472 = msg("5025", dup276); - -var msg7473 = msg("5026", dup276); - -var msg7474 = msg("5027", dup276); - -var msg7475 = msg("5028", dup276); - -var msg7476 = msg("5029", dup276); - -var msg7477 = msg("5030", dup276); - -var msg7478 = msg("5031", dup276); - -var msg7479 = msg("5032", dup276); - -var msg7480 = msg("5033", dup276); - -var msg7481 = msg("5034", dup276); - -var msg7482 = msg("5035", dup276); - -var msg7483 = msg("5036", dup276); - -var msg7484 = msg("5037", dup276); - -var msg7485 = msg("5038", dup276); - -var msg7486 = msg("5039", dup276); - -var msg7487 = msg("5040", dup276); - -var msg7488 = msg("5041", dup276); - -var msg7489 = msg("5042", dup276); - -var msg7490 = msg("5043", dup276); - -var msg7491 = msg("5044", dup276); - -var msg7492 = msg("5045", dup276); - -var msg7493 = msg("5046", dup276); - -var msg7494 = msg("5047", dup276); - -var msg7495 = msg("5048", dup276); - -var msg7496 = msg("5049", dup276); - -var msg7497 = msg("5050", dup276); - -var msg7498 = msg("5051", dup276); - -var msg7499 = msg("5052", dup276); - -var msg7500 = msg("5053", dup276); - -var msg7501 = msg("5054", dup276); - -var msg7502 = msg("5055", dup276); - -var msg7503 = msg("5056", dup276); - -var msg7504 = msg("5057", dup276); - -var msg7505 = msg("5058", dup276); - -var msg7506 = msg("5059", dup276); - -var msg7507 = msg("5060", dup276); - -var msg7508 = msg("5061", dup276); - -var msg7509 = msg("5062", dup276); - -var msg7510 = msg("5063", dup276); - -var msg7511 = msg("5064", dup276); - -var msg7512 = msg("5065", dup276); - -var msg7513 = msg("5066", dup276); - -var msg7514 = msg("5067", dup276); - -var msg7515 = msg("5068", dup276); - -var msg7516 = msg("5069", dup276); - -var msg7517 = msg("5070", dup276); - -var msg7518 = msg("5071", dup276); - -var msg7519 = msg("5072", dup276); - -var msg7520 = msg("5073", dup276); - -var msg7521 = msg("5074", dup276); - -var msg7522 = msg("5075", dup276); - -var msg7523 = msg("5076", dup276); - -var msg7524 = msg("5077", dup276); - -var msg7525 = msg("5078", dup276); - -var msg7526 = msg("5079", dup276); - -var msg7527 = msg("5080", dup276); - -var msg7528 = msg("5081", dup276); - -var msg7529 = msg("5082", dup276); - -var msg7530 = msg("5083", dup276); - -var msg7531 = msg("5084", dup276); - -var msg7532 = msg("5085", dup276); - -var msg7533 = msg("5086", dup276); - -var msg7534 = msg("5087", dup276); - -var msg7535 = msg("5088", dup276); - -var msg7536 = msg("5089", dup276); - -var msg7537 = msg("5090", dup276); - -var msg7538 = msg("5091", dup276); - -var msg7539 = msg("5092", dup276); - -var msg7540 = msg("5093", dup276); - -var msg7541 = msg("5094", dup276); - -var msg7542 = msg("5095", dup276); - -var msg7543 = msg("5096", dup276); - -var msg7544 = msg("5097", dup276); - -var msg7545 = msg("5098", dup276); - -var msg7546 = msg("5099", dup276); - -var msg7547 = msg("5100", dup276); - -var msg7548 = msg("5101", dup276); - -var msg7549 = msg("5102", dup276); - -var msg7550 = msg("5103", dup276); - -var msg7551 = msg("5104", dup276); - -var msg7552 = msg("5105", dup276); - -var msg7553 = msg("5106", dup276); - -var msg7554 = msg("5107", dup276); - -var msg7555 = msg("5108", dup276); - -var msg7556 = msg("5109", dup276); - -var msg7557 = msg("5110", dup276); - -var msg7558 = msg("5111", dup276); - -var msg7559 = msg("5112", dup276); - -var msg7560 = msg("5113", dup276); - -var msg7561 = msg("5114", dup276); - -var msg7562 = msg("5115", dup276); - -var msg7563 = msg("5116", dup276); - -var msg7564 = msg("5117", dup276); - -var msg7565 = msg("5118", dup276); - -var msg7566 = msg("5119", dup276); - -var msg7567 = msg("5120", dup276); - -var msg7568 = msg("5121", dup276); - -var msg7569 = msg("5122", dup276); - -var msg7570 = msg("5123", dup276); - -var msg7571 = msg("5124", dup276); - -var msg7572 = msg("5125", dup276); - -var msg7573 = msg("5126", dup276); - -var msg7574 = msg("5127", dup276); - -var msg7575 = msg("5128", dup276); - -var msg7576 = msg("5129", dup276); - -var msg7577 = msg("5130", dup276); - -var msg7578 = msg("5131", dup276); - -var msg7579 = msg("5132", dup276); - -var msg7580 = msg("5133", dup276); - -var msg7581 = msg("5134", dup276); - -var msg7582 = msg("5135", dup276); - -var msg7583 = msg("5136", dup276); - -var msg7584 = msg("5137", dup276); - -var msg7585 = msg("5138", dup276); - -var msg7586 = msg("5139", dup276); - -var msg7587 = msg("5140", dup276); - -var msg7588 = msg("5141", dup276); - -var msg7589 = msg("5142", dup276); - -var msg7590 = msg("5143", dup276); - -var msg7591 = msg("5144", dup276); - -var msg7592 = msg("5145", dup276); - -var msg7593 = msg("5146", dup276); - -var msg7594 = msg("5147", dup276); - -var msg7595 = msg("5148", dup276); - -var msg7596 = msg("5149", dup276); - -var msg7597 = msg("5150", dup276); - -var msg7598 = msg("5151", dup276); - -var msg7599 = msg("5152", dup276); - -var msg7600 = msg("5153", dup276); - -var msg7601 = msg("5154", dup276); - -var msg7602 = msg("5155", dup276); - -var msg7603 = msg("5156", dup276); - -var msg7604 = msg("5157", dup276); - -var msg7605 = msg("5158", dup276); - -var msg7606 = msg("5159", dup276); - -var msg7607 = msg("5160", dup276); - -var msg7608 = msg("5161", dup276); - -var msg7609 = msg("5162", dup276); - -var msg7610 = msg("5163", dup276); - -var msg7611 = msg("5164", dup276); - -var msg7612 = msg("5165", dup276); - -var msg7613 = msg("5166", dup276); - -var msg7614 = msg("5167", dup276); - -var msg7615 = msg("5168", dup276); - -var msg7616 = msg("5169", dup276); - -var msg7617 = msg("5170", dup276); - -var msg7618 = msg("5171", dup276); - -var msg7619 = msg("5172", dup276); - -var msg7620 = msg("5173", dup276); - -var msg7621 = msg("5174", dup276); - -var msg7622 = msg("5175", dup276); - -var msg7623 = msg("5176", dup276); - -var msg7624 = msg("5177", dup276); - -var msg7625 = msg("5178", dup276); - -var msg7626 = msg("5179", dup276); - -var msg7627 = msg("5180", dup276); - -var msg7628 = msg("5181", dup276); - -var msg7629 = msg("5182", dup276); - -var msg7630 = msg("5183", dup276); - -var msg7631 = msg("5184", dup276); - -var msg7632 = msg("5185", dup276); - -var msg7633 = msg("5186", dup276); - -var msg7634 = msg("5187", dup276); - -var msg7635 = msg("5188", dup276); - -var msg7636 = msg("5189", dup276); - -var msg7637 = msg("5190", dup276); - -var msg7638 = msg("5191", dup276); - -var msg7639 = msg("5192", dup276); - -var msg7640 = msg("5193", dup276); - -var msg7641 = msg("5194", dup276); - -var msg7642 = msg("5195", dup276); - -var msg7643 = msg("5196", dup276); - -var msg7644 = msg("5197", dup276); - -var msg7645 = msg("5198", dup276); - -var msg7646 = msg("5199", dup276); - -var msg7647 = msg("5200", dup276); - -var msg7648 = msg("5201", dup276); - -var msg7649 = msg("5202", dup276); - -var msg7650 = msg("5203", dup276); - -var msg7651 = msg("5204", dup276); - -var msg7652 = msg("5205", dup276); - -var msg7653 = msg("5206", dup276); - -var msg7654 = msg("5207", dup276); - -var msg7655 = msg("5208", dup276); - -var msg7656 = msg("5209", dup276); - -var msg7657 = msg("5210", dup276); - -var msg7658 = msg("5211", dup276); - -var msg7659 = msg("5212", dup276); - -var msg7660 = msg("5213", dup276); - -var msg7661 = msg("5214", dup276); - -var msg7662 = msg("5215", dup276); - -var msg7663 = msg("5216", dup276); - -var msg7664 = msg("5217", dup276); - -var msg7665 = msg("5218", dup276); - -var msg7666 = msg("5219", dup276); - -var msg7667 = msg("5220", dup276); - -var msg7668 = msg("5221", dup276); - -var msg7669 = msg("5222", dup276); - -var msg7670 = msg("5223", dup276); - -var msg7671 = msg("5224", dup276); - -var msg7672 = msg("5225", dup276); - -var msg7673 = msg("5226", dup276); - -var msg7674 = msg("5227", dup276); - -var msg7675 = msg("5228", dup276); - -var msg7676 = msg("5229", dup276); - -var msg7677 = msg("5230", dup276); - -var msg7678 = msg("5231", dup276); - -var msg7679 = msg("5232", dup276); - -var msg7680 = msg("5233", dup276); - -var msg7681 = msg("5234", dup276); - -var msg7682 = msg("5235", dup276); - -var msg7683 = msg("5236", dup276); - -var msg7684 = msg("5237", dup276); - -var msg7685 = msg("5238", dup276); - -var msg7686 = msg("5239", dup276); - -var msg7687 = msg("5240", dup276); - -var msg7688 = msg("5241", dup276); - -var msg7689 = msg("5242", dup276); - -var msg7690 = msg("5243", dup276); - -var msg7691 = msg("5244", dup276); - -var msg7692 = msg("5245", dup276); - -var msg7693 = msg("5246", dup276); - -var msg7694 = msg("5247", dup276); - -var msg7695 = msg("5248", dup276); - -var msg7696 = msg("5249", dup276); - -var msg7697 = msg("5250", dup276); - -var msg7698 = msg("5251", dup276); - -var msg7699 = msg("5252", dup276); - -var msg7700 = msg("5253", dup276); - -var msg7701 = msg("5254", dup276); - -var msg7702 = msg("5255", dup276); - -var msg7703 = msg("5256", dup276); - -var msg7704 = msg("5257", dup276); - -var msg7705 = msg("5258", dup276); - -var msg7706 = msg("5259", dup276); - -var msg7707 = msg("5260", dup276); - -var msg7708 = msg("5261", dup276); - -var msg7709 = msg("5262", dup276); - -var msg7710 = msg("5263", dup276); - -var msg7711 = msg("5264", dup276); - -var msg7712 = msg("5265", dup276); - -var msg7713 = msg("5266", dup276); - -var msg7714 = msg("5267", dup276); - -var msg7715 = msg("5268", dup276); - -var msg7716 = msg("5269", dup276); - -var msg7717 = msg("5270", dup276); - -var msg7718 = msg("5271", dup276); - -var msg7719 = msg("5272", dup276); - -var msg7720 = msg("5273", dup276); - -var msg7721 = msg("5274", dup276); - -var msg7722 = msg("5275", dup276); - -var msg7723 = msg("5276", dup276); - -var msg7724 = msg("5277", dup276); - -var msg7725 = msg("5278", dup276); - -var msg7726 = msg("5279", dup276); - -var msg7727 = msg("5280", dup276); - -var msg7728 = msg("5281", dup276); - -var msg7729 = msg("5282", dup276); - -var msg7730 = msg("5283", dup276); - -var msg7731 = msg("5284", dup276); - -var msg7732 = msg("5285", dup276); - -var msg7733 = msg("5286", dup276); - -var msg7734 = msg("5287", dup276); - -var msg7735 = msg("5288", dup276); - -var msg7736 = msg("5289", dup276); - -var msg7737 = msg("5290", dup276); - -var msg7738 = msg("5291", dup276); - -var msg7739 = msg("5292", dup276); - -var msg7740 = msg("5293", dup276); - -var msg7741 = msg("5294", dup276); - -var msg7742 = msg("5295", dup276); - -var msg7743 = msg("5296", dup276); - -var msg7744 = msg("5297", dup276); - -var msg7745 = msg("5298", dup276); - -var msg7746 = msg("5299", dup276); - -var msg7747 = msg("5300", dup276); - -var msg7748 = msg("5301", dup201); - -var msg7749 = msg("5302", dup276); - -var msg7750 = msg("5303", dup201); - -var msg7751 = msg("5304", dup201); - -var msg7752 = msg("5305", dup276); - -var msg7753 = msg("5306", dup201); - -var msg7754 = msg("5307", dup276); - -var msg7755 = msg("5308", dup276); - -var msg7756 = msg("5309", dup201); - -var msg7757 = msg("5310", dup276); - -var msg7758 = msg("5311", dup201); - -var msg7759 = msg("5312", dup201); - -var msg7760 = msg("5313", dup276); - -var msg7761 = msg("5314", dup201); - -var msg7762 = msg("5315", dup276); - -var msg7763 = msg("5316", dup222); - -var msg7764 = msg("5317", dup222); - -var msg7765 = msg("5318", dup269); - -var msg7766 = msg("5319", dup269); - -var msg7767 = msg("5320", dup263); - -var msg7768 = msg("5321", dup263); - -var msg7769 = msg("5322", dup263); - -var msg7770 = msg("5323", dup263); - -var msg7771 = msg("5324", dup263); - -var msg7772 = msg("5325", dup201); - -var msg7773 = msg("5326", dup201); - -var msg7774 = msg("5327", dup201); - -var msg7775 = msg("5328", dup201); - -var msg7776 = msg("5329", dup201); - -var msg7777 = msg("5330", dup201); - -var msg7778 = msg("5331", dup201); - -var msg7779 = msg("5332", dup201); - -var msg7780 = msg("5333", dup276); - -var msg7781 = msg("5334", dup276); - -var msg7782 = msg("5335", dup276); - -var msg7783 = msg("5336", dup276); - -var msg7784 = msg("5337", dup276); - -var msg7785 = msg("5338", dup276); - -var msg7786 = msg("5339", dup276); - -var msg7787 = msg("5340", dup276); - -var msg7788 = msg("5341", dup276); - -var msg7789 = msg("5342", dup276); - -var msg7790 = msg("5343", dup276); - -var msg7791 = msg("5344", dup276); - -var msg7792 = msg("5345", dup276); - -var msg7793 = msg("5346", dup276); - -var msg7794 = msg("5347", dup276); - -var msg7795 = msg("5348", dup276); - -var msg7796 = msg("5349", dup276); - -var msg7797 = msg("5350", dup276); - -var msg7798 = msg("5351", dup276); - -var msg7799 = msg("5352", dup276); - -var msg7800 = msg("5353", dup276); - -var msg7801 = msg("5354", dup276); - -var msg7802 = msg("5355", dup276); - -var msg7803 = msg("5356", dup276); - -var msg7804 = msg("5357", dup276); - -var msg7805 = msg("5358", dup276); - -var msg7806 = msg("5359", dup276); - -var msg7807 = msg("5360", dup276); - -var msg7808 = msg("5361", dup276); - -var msg7809 = msg("5362", dup276); - -var msg7810 = msg("5363", dup276); - -var msg7811 = msg("5364", dup276); - -var msg7812 = msg("5365", dup276); - -var msg7813 = msg("5366", dup276); - -var msg7814 = msg("5367", dup276); - -var msg7815 = msg("5368", dup276); - -var msg7816 = msg("5369", dup276); - -var msg7817 = msg("5370", dup276); - -var msg7818 = msg("5371", dup276); - -var msg7819 = msg("5372", dup276); - -var msg7820 = msg("5373", dup276); - -var msg7821 = msg("5374", dup276); - -var msg7822 = msg("5375", dup276); - -var msg7823 = msg("5376", dup276); - -var msg7824 = msg("5377", dup276); - -var msg7825 = msg("5378", dup276); - -var msg7826 = msg("5379", dup276); - -var msg7827 = msg("5380", dup276); - -var msg7828 = msg("5381", dup276); - -var msg7829 = msg("5382", dup276); - -var msg7830 = msg("5383", dup276); - -var msg7831 = msg("5384", dup276); - -var msg7832 = msg("5385", dup276); - -var msg7833 = msg("5386", dup276); - -var msg7834 = msg("5387", dup276); - -var msg7835 = msg("5388", dup276); - -var msg7836 = msg("5389", dup276); - -var msg7837 = msg("5390", dup276); - -var msg7838 = msg("5391", dup276); - -var msg7839 = msg("5392", dup276); - -var msg7840 = msg("5393", dup276); - -var msg7841 = msg("5394", dup276); - -var msg7842 = msg("5395", dup276); - -var msg7843 = msg("5396", dup276); - -var msg7844 = msg("5397", dup276); - -var msg7845 = msg("5398", dup276); - -var msg7846 = msg("5399", dup276); - -var msg7847 = msg("5400", dup276); - -var msg7848 = msg("5401", dup276); - -var msg7849 = msg("5402", dup276); - -var msg7850 = msg("5403", dup276); - -var msg7851 = msg("5404", dup276); - -var msg7852 = msg("5405", dup276); - -var msg7853 = msg("5406", dup276); - -var msg7854 = msg("5407", dup276); - -var msg7855 = msg("5408", dup276); - -var msg7856 = msg("5409", dup276); - -var msg7857 = msg("5410", dup276); - -var msg7858 = msg("5411", dup276); - -var msg7859 = msg("5412", dup276); - -var msg7860 = msg("5413", dup276); - -var msg7861 = msg("5414", dup276); - -var msg7862 = msg("5415", dup276); - -var msg7863 = msg("5416", dup276); - -var msg7864 = msg("5417", dup276); - -var msg7865 = msg("5418", dup276); - -var msg7866 = msg("5419", dup276); - -var msg7867 = msg("5420", dup276); - -var msg7868 = msg("5421", dup276); - -var msg7869 = msg("5422", dup276); - -var msg7870 = msg("5423", dup276); - -var msg7871 = msg("5424", dup276); - -var msg7872 = msg("5425", dup276); - -var msg7873 = msg("5426", dup276); - -var msg7874 = msg("5427", dup276); - -var msg7875 = msg("5428", dup276); - -var msg7876 = msg("5429", dup276); - -var msg7877 = msg("5430", dup276); - -var msg7878 = msg("5431", dup276); - -var msg7879 = msg("5432", dup276); - -var msg7880 = msg("5433", dup276); - -var msg7881 = msg("5434", dup276); - -var msg7882 = msg("5435", dup276); - -var msg7883 = msg("5436", dup276); - -var msg7884 = msg("5437", dup276); - -var msg7885 = msg("5438", dup276); - -var msg7886 = msg("5439", dup276); - -var msg7887 = msg("5440", dup276); - -var msg7888 = msg("5441", dup276); - -var msg7889 = msg("5442", dup276); - -var msg7890 = msg("5443", dup276); - -var msg7891 = msg("5444", dup276); - -var msg7892 = msg("5445", dup276); - -var msg7893 = msg("5446", dup276); - -var msg7894 = msg("5447", dup276); - -var msg7895 = msg("5448", dup276); - -var msg7896 = msg("5449", dup276); - -var msg7897 = msg("5450", dup276); - -var msg7898 = msg("5451", dup276); - -var msg7899 = msg("5452", dup276); - -var msg7900 = msg("5453", dup276); - -var msg7901 = msg("5454", dup276); - -var msg7902 = msg("5455", dup276); - -var msg7903 = msg("5456", dup276); - -var msg7904 = msg("5457", dup276); - -var msg7905 = msg("5458", dup276); - -var msg7906 = msg("5459", dup276); - -var msg7907 = msg("5460", dup276); - -var msg7908 = msg("5461", dup276); - -var msg7909 = msg("5462", dup276); - -var msg7910 = msg("5463", dup276); - -var msg7911 = msg("5464", dup276); - -var msg7912 = msg("5465", dup276); - -var msg7913 = msg("5466", dup276); - -var msg7914 = msg("5467", dup276); - -var msg7915 = msg("5468", dup276); - -var msg7916 = msg("5469", dup276); - -var msg7917 = msg("5470", dup276); - -var msg7918 = msg("5471", dup276); - -var msg7919 = msg("5472", dup276); - -var msg7920 = msg("5473", dup276); - -var msg7921 = msg("5474", dup276); - -var msg7922 = msg("5475", dup276); - -var msg7923 = msg("5476", dup276); - -var msg7924 = msg("5477", dup276); - -var msg7925 = msg("5478", dup276); - -var msg7926 = msg("5479", dup276); - -var msg7927 = msg("5480", dup276); - -var msg7928 = msg("5481", dup276); - -var msg7929 = msg("5482", dup276); - -var msg7930 = msg("5483", dup276); - -var msg7931 = msg("5484", dup276); - -var msg7932 = msg("5485", dup276); - -var msg7933 = msg("5486", dup276); - -var msg7934 = msg("5487", dup276); - -var msg7935 = msg("5488", dup276); - -var msg7936 = msg("5489", dup276); - -var msg7937 = msg("5490", dup276); - -var msg7938 = msg("5491", dup276); - -var msg7939 = msg("5492", dup276); - -var msg7940 = msg("5493", dup276); - -var msg7941 = msg("5494", dup276); - -var msg7942 = msg("5495", dup276); - -var msg7943 = msg("5496", dup276); - -var msg7944 = msg("5497", dup276); - -var msg7945 = msg("5498", dup276); - -var msg7946 = msg("5499", dup276); - -var msg7947 = msg("5500", dup276); - -var msg7948 = msg("5501", dup276); - -var msg7949 = msg("5502", dup276); - -var msg7950 = msg("5503", dup276); - -var msg7951 = msg("5504", dup276); - -var msg7952 = msg("5505", dup276); - -var msg7953 = msg("5506", dup276); - -var msg7954 = msg("5507", dup276); - -var msg7955 = msg("5508", dup276); - -var msg7956 = msg("5509", dup276); - -var msg7957 = msg("5510", dup276); - -var msg7958 = msg("5511", dup276); - -var msg7959 = msg("5512", dup276); - -var msg7960 = msg("5513", dup276); - -var msg7961 = msg("5514", dup276); - -var msg7962 = msg("5515", dup276); - -var msg7963 = msg("5516", dup276); - -var msg7964 = msg("5517", dup276); - -var msg7965 = msg("5518", dup276); - -var msg7966 = msg("5519", dup276); - -var msg7967 = msg("5520", dup276); - -var msg7968 = msg("5521", dup276); - -var msg7969 = msg("5522", dup276); - -var msg7970 = msg("5523", dup276); - -var msg7971 = msg("5524", dup276); - -var msg7972 = msg("5525", dup276); - -var msg7973 = msg("5526", dup276); - -var msg7974 = msg("5527", dup276); - -var msg7975 = msg("5528", dup276); - -var msg7976 = msg("5529", dup276); - -var msg7977 = msg("5530", dup276); - -var msg7978 = msg("5531", dup276); - -var msg7979 = msg("5532", dup276); - -var msg7980 = msg("5533", dup276); - -var msg7981 = msg("5534", dup276); - -var msg7982 = msg("5535", dup276); - -var msg7983 = msg("5536", dup276); - -var msg7984 = msg("5537", dup276); - -var msg7985 = msg("5538", dup276); - -var msg7986 = msg("5539", dup276); - -var msg7987 = msg("5540", dup276); - -var msg7988 = msg("5541", dup276); - -var msg7989 = msg("5542", dup276); - -var msg7990 = msg("5543", dup276); - -var msg7991 = msg("5544", dup276); - -var msg7992 = msg("5545", dup276); - -var msg7993 = msg("5546", dup276); - -var msg7994 = msg("5547", dup276); - -var msg7995 = msg("5548", dup276); - -var msg7996 = msg("5549", dup276); - -var msg7997 = msg("5550", dup276); - -var msg7998 = msg("5551", dup276); - -var msg7999 = msg("5552", dup276); - -var msg8000 = msg("5553", dup276); - -var msg8001 = msg("5554", dup276); - -var msg8002 = msg("5555", dup276); - -var msg8003 = msg("5556", dup276); - -var msg8004 = msg("5557", dup276); - -var msg8005 = msg("5558", dup276); - -var msg8006 = msg("5559", dup276); - -var msg8007 = msg("5560", dup276); - -var msg8008 = msg("5561", dup276); - -var msg8009 = msg("5562", dup276); - -var msg8010 = msg("5563", dup276); - -var msg8011 = msg("5564", dup276); - -var msg8012 = msg("5565", dup276); - -var msg8013 = msg("5566", dup276); - -var msg8014 = msg("5567", dup276); - -var msg8015 = msg("5568", dup276); - -var msg8016 = msg("5569", dup276); - -var msg8017 = msg("5570", dup276); - -var msg8018 = msg("5571", dup276); - -var msg8019 = msg("5572", dup276); - -var msg8020 = msg("5573", dup276); - -var msg8021 = msg("5574", dup276); - -var msg8022 = msg("5575", dup276); - -var msg8023 = msg("5576", dup276); - -var msg8024 = msg("5577", dup276); - -var msg8025 = msg("5578", dup276); - -var msg8026 = msg("5579", dup276); - -var msg8027 = msg("5580", dup276); - -var msg8028 = msg("5581", dup276); - -var msg8029 = msg("5582", dup276); - -var msg8030 = msg("5583", dup276); - -var msg8031 = msg("5584", dup276); - -var msg8032 = msg("5585", dup276); - -var msg8033 = msg("5586", dup276); - -var msg8034 = msg("5587", dup276); - -var msg8035 = msg("5588", dup276); - -var msg8036 = msg("5589", dup276); - -var msg8037 = msg("5590", dup276); - -var msg8038 = msg("5591", dup276); - -var msg8039 = msg("5592", dup276); - -var msg8040 = msg("5593", dup276); - -var msg8041 = msg("5594", dup276); - -var msg8042 = msg("5595", dup276); - -var msg8043 = msg("5596", dup276); - -var msg8044 = msg("5597", dup276); - -var msg8045 = msg("5598", dup276); - -var msg8046 = msg("5599", dup276); - -var msg8047 = msg("5600", dup276); - -var msg8048 = msg("5601", dup276); - -var msg8049 = msg("5602", dup276); - -var msg8050 = msg("5603", dup276); - -var msg8051 = msg("5604", dup276); - -var msg8052 = msg("5605", dup276); - -var msg8053 = msg("5606", dup276); - -var msg8054 = msg("5607", dup276); - -var msg8055 = msg("5608", dup276); - -var msg8056 = msg("5609", dup276); - -var msg8057 = msg("5610", dup276); - -var msg8058 = msg("5611", dup276); - -var msg8059 = msg("5612", dup276); - -var msg8060 = msg("5613", dup276); - -var msg8061 = msg("5614", dup276); - -var msg8062 = msg("5615", dup276); - -var msg8063 = msg("5616", dup276); - -var msg8064 = msg("5617", dup276); - -var msg8065 = msg("5618", dup276); - -var msg8066 = msg("5619", dup276); - -var msg8067 = msg("5620", dup276); - -var msg8068 = msg("5621", dup276); - -var msg8069 = msg("5622", dup276); - -var msg8070 = msg("5623", dup276); - -var msg8071 = msg("5624", dup276); - -var msg8072 = msg("5625", dup276); - -var msg8073 = msg("5626", dup276); - -var msg8074 = msg("5627", dup276); - -var msg8075 = msg("5628", dup276); - -var msg8076 = msg("5629", dup276); - -var msg8077 = msg("5630", dup276); - -var msg8078 = msg("5631", dup276); - -var msg8079 = msg("5632", dup276); - -var msg8080 = msg("5633", dup276); - -var msg8081 = msg("5634", dup276); - -var msg8082 = msg("5635", dup276); - -var msg8083 = msg("5636", dup276); - -var msg8084 = msg("5637", dup276); - -var msg8085 = msg("5638", dup276); - -var msg8086 = msg("5639", dup276); - -var msg8087 = msg("5640", dup276); - -var msg8088 = msg("5641", dup276); - -var msg8089 = msg("5642", dup276); - -var msg8090 = msg("5643", dup276); - -var msg8091 = msg("5644", dup276); - -var msg8092 = msg("5645", dup276); - -var msg8093 = msg("5646", dup276); - -var msg8094 = msg("5647", dup276); - -var msg8095 = msg("5648", dup276); - -var msg8096 = msg("5649", dup276); - -var msg8097 = msg("5650", dup276); - -var msg8098 = msg("5651", dup276); - -var msg8099 = msg("5652", dup276); - -var msg8100 = msg("5653", dup276); - -var msg8101 = msg("5654", dup276); - -var msg8102 = msg("5655", dup276); - -var msg8103 = msg("5656", dup276); - -var msg8104 = msg("5657", dup276); - -var msg8105 = msg("5658", dup276); - -var msg8106 = msg("5659", dup276); - -var msg8107 = msg("5660", dup276); - -var msg8108 = msg("5661", dup276); - -var msg8109 = msg("5662", dup276); - -var msg8110 = msg("5663", dup276); - -var msg8111 = msg("5664", dup276); - -var msg8112 = msg("5665", dup276); - -var msg8113 = msg("5666", dup276); - -var msg8114 = msg("5667", dup276); - -var msg8115 = msg("5668", dup276); - -var msg8116 = msg("5669", dup276); - -var msg8117 = msg("5670", dup276); - -var msg8118 = msg("5671", dup276); - -var msg8119 = msg("5672", dup276); - -var msg8120 = msg("5673", dup276); - -var msg8121 = msg("5674", dup276); - -var msg8122 = msg("5675", dup276); - -var msg8123 = msg("5676", dup276); - -var msg8124 = msg("5677", dup276); - -var msg8125 = msg("5678", dup276); - -var msg8126 = msg("5679", dup276); - -var msg8127 = msg("5680", dup276); - -var msg8128 = msg("5681", dup276); - -var msg8129 = msg("5682", dup276); - -var msg8130 = msg("5683", dup276); - -var msg8131 = msg("5684", dup276); - -var msg8132 = msg("5685", dup250); - -var msg8133 = msg("5686", dup250); - -var msg8134 = msg("5687", dup250); - -var msg8135 = msg("5688", dup250); - -var msg8136 = msg("5689", dup250); - -var msg8137 = msg("5690", dup250); - -var msg8138 = msg("5691", dup250); - -var msg8139 = msg("5692", dup196); - -var msg8140 = msg("5693", dup196); - -var msg8141 = msg("5694", dup196); - -var msg8142 = msg("5695", dup267); - -var msg8143 = msg("5696", dup196); - -var msg8144 = msg("5697", dup196); - -var msg8145 = msg("5698", dup196); - -var msg8146 = msg("5699", dup196); - -var msg8147 = msg("5700", dup196); - -var msg8148 = msg("5701", dup196); - -var msg8149 = msg("5702", dup196); - -var msg8150 = msg("5703", dup196); - -var msg8151 = msg("5704", dup222); - -var msg8152 = msg("5705", dup222); - -var msg8153 = msg("5706", dup196); - -var msg8154 = msg("5707", dup196); - -var msg8155 = msg("5708", dup196); - -var msg8156 = msg("5709", dup265); - -var msg8157 = msg("5710", dup267); - -var msg8158 = msg("5711", dup267); - -var msg8159 = msg("5712", dup267); - -var msg8160 = msg("5713", dup197); - -var msg8161 = msg("5714", dup250); - -var msg8162 = msg("5715", dup201); - -var msg8163 = msg("5716", dup198); - -var msg8164 = msg("5717", dup198); - -var msg8165 = msg("5718", dup198); - -var msg8166 = msg("5719", dup198); - -var msg8167 = msg("5720", dup198); - -var msg8168 = msg("5721", dup198); - -var msg8169 = msg("5722", dup198); - -var msg8170 = msg("5723", dup198); - -var msg8171 = msg("5724", dup198); - -var msg8172 = msg("5725", dup198); - -var msg8173 = msg("5726", dup198); - -var msg8174 = msg("5727", dup198); - -var msg8175 = msg("5728", dup198); - -var msg8176 = msg("5729", dup198); - -var msg8177 = msg("5730", dup198); - -var msg8178 = msg("5731", dup198); - -var msg8179 = msg("5732", dup198); - -var msg8180 = msg("5733", dup198); - -var msg8181 = msg("5734", dup198); - -var msg8182 = msg("5735", dup198); - -var msg8183 = msg("5736", dup198); - -var msg8184 = msg("5737", dup198); - -var msg8185 = msg("5738", dup198); - -var msg8186 = msg("5739", dup197); - -var msg8187 = msg("5740", dup265); - -var msg8188 = msg("5741", dup267); - -var msg8189 = msg("5742", dup303); - -var msg8190 = msg("5743", dup303); - -var msg8191 = msg("5744", dup303); - -var msg8192 = msg("5745", dup303); - -var msg8193 = msg("5746", dup303); - -var msg8194 = msg("5747", dup303); - -var msg8195 = msg("5748", dup303); - -var msg8196 = msg("5749", dup303); - -var msg8197 = msg("5750", dup303); - -var msg8198 = msg("5751", dup303); - -var msg8199 = msg("5752", dup303); - -var msg8200 = msg("5753", dup303); - -var msg8201 = msg("5754", dup303); - -var msg8202 = msg("5755", dup303); - -var msg8203 = msg("5756", dup303); - -var msg8204 = msg("5757", dup303); - -var msg8205 = msg("5758", dup303); - -var msg8206 = msg("5759", dup303); - -var msg8207 = msg("5760", dup303); - -var msg8208 = msg("5761", dup303); - -var msg8209 = msg("5762", dup303); - -var msg8210 = msg("5763", dup303); - -var msg8211 = msg("5764", dup303); - -var msg8212 = msg("5765", dup303); - -var msg8213 = msg("5766", dup303); - -var msg8214 = msg("5767", dup303); - -var msg8215 = msg("5768", dup303); - -var msg8216 = msg("5769", dup303); - -var msg8217 = msg("5770", dup303); - -var msg8218 = msg("5771", dup303); - -var msg8219 = msg("5772", dup303); - -var msg8220 = msg("5773", dup303); - -var msg8221 = msg("5774", dup303); - -var msg8222 = msg("5775", dup303); - -var msg8223 = msg("5776", dup303); - -var msg8224 = msg("5777", dup303); - -var msg8225 = msg("5778", dup303); - -var msg8226 = msg("5779", dup303); - -var msg8227 = msg("5780", dup303); - -var msg8228 = msg("5781", dup303); - -var msg8229 = msg("5782", dup303); - -var msg8230 = msg("5783", dup303); - -var msg8231 = msg("5784", dup303); - -var msg8232 = msg("5785", dup303); - -var msg8233 = msg("5786", dup303); - -var msg8234 = msg("5787", dup303); - -var msg8235 = msg("5788", dup303); - -var msg8236 = msg("5789", dup303); - -var msg8237 = msg("5790", dup303); - -var msg8238 = msg("5791", dup303); - -var msg8239 = msg("5792", dup303); - -var msg8240 = msg("5793", dup303); - -var msg8241 = msg("5794", dup303); - -var msg8242 = msg("5795", dup303); - -var msg8243 = msg("5796", dup303); - -var msg8244 = msg("5797", dup303); - -var msg8245 = msg("5798", dup303); - -var msg8246 = msg("5799", dup303); - -var msg8247 = msg("5800", dup303); - -var msg8248 = msg("5801", dup303); - -var msg8249 = msg("5802", dup303); - -var msg8250 = msg("5803", dup303); - -var msg8251 = msg("5804", dup303); - -var msg8252 = msg("5805", dup303); - -var msg8253 = msg("5806", dup303); - -var msg8254 = msg("5807", dup303); - -var msg8255 = msg("5808", dup303); - -var msg8256 = msg("5809", dup303); - -var msg8257 = msg("5810", dup303); - -var msg8258 = msg("5811", dup303); - -var msg8259 = msg("5812", dup303); - -var msg8260 = msg("5813", dup303); - -var msg8261 = msg("5814", dup303); - -var msg8262 = msg("5815", dup303); - -var msg8263 = msg("5816", dup303); - -var msg8264 = msg("5817", dup303); - -var msg8265 = msg("5818", dup303); - -var msg8266 = msg("5819", dup303); - -var msg8267 = msg("5820", dup303); - -var msg8268 = msg("5821", dup303); - -var msg8269 = msg("5822", dup303); - -var msg8270 = msg("5823", dup303); - -var msg8271 = msg("5824", dup303); - -var msg8272 = msg("5825", dup303); - -var msg8273 = msg("5826", dup303); - -var msg8274 = msg("5827", dup303); - -var msg8275 = msg("5828", dup303); - -var msg8276 = msg("5829", dup303); - -var msg8277 = msg("5830", dup303); - -var msg8278 = msg("5831", dup303); - -var msg8279 = msg("5832", dup303); - -var msg8280 = msg("5833", dup303); - -var msg8281 = msg("5834", dup303); - -var msg8282 = msg("5835", dup303); - -var msg8283 = msg("5836", dup303); - -var msg8284 = msg("5837", dup303); - -var msg8285 = msg("5838", dup303); - -var msg8286 = msg("5839", dup303); - -var msg8287 = msg("5840", dup303); - -var msg8288 = msg("5841", dup303); - -var msg8289 = msg("5842", dup303); - -var msg8290 = msg("5843", dup303); - -var msg8291 = msg("5844", dup303); - -var msg8292 = msg("5845", dup303); - -var msg8293 = msg("5846", dup303); - -var msg8294 = msg("5847", dup303); - -var msg8295 = msg("5848", dup303); - -var msg8296 = msg("5849", dup303); - -var msg8297 = msg("5850", dup303); - -var msg8298 = msg("5851", dup303); - -var msg8299 = msg("5852", dup303); - -var msg8300 = msg("5853", dup303); - -var msg8301 = msg("5854", dup303); - -var msg8302 = msg("5855", dup303); - -var msg8303 = msg("5856", dup303); - -var msg8304 = msg("5857", dup303); - -var msg8305 = msg("5858", dup303); - -var msg8306 = msg("5859", dup303); - -var msg8307 = msg("5860", dup303); - -var msg8308 = msg("5861", dup303); - -var msg8309 = msg("5862", dup303); - -var msg8310 = msg("5863", dup303); - -var msg8311 = msg("5864", dup303); - -var msg8312 = msg("5865", dup303); - -var msg8313 = msg("5866", dup303); - -var msg8314 = msg("5867", dup303); - -var msg8315 = msg("5868", dup303); - -var msg8316 = msg("5869", dup303); - -var msg8317 = msg("5870", dup303); - -var msg8318 = msg("5871", dup303); - -var msg8319 = msg("5872", dup303); - -var msg8320 = msg("5873", dup303); - -var msg8321 = msg("5874", dup303); - -var msg8322 = msg("5875", dup303); - -var msg8323 = msg("5876", dup303); - -var msg8324 = msg("5877", dup303); - -var msg8325 = msg("5878", dup303); - -var msg8326 = msg("5879", dup303); - -var msg8327 = msg("5880", dup303); - -var msg8328 = msg("5881", dup303); - -var msg8329 = msg("5882", dup303); - -var msg8330 = msg("5883", dup303); - -var msg8331 = msg("5884", dup303); - -var msg8332 = msg("5885", dup303); - -var msg8333 = msg("5886", dup303); - -var msg8334 = msg("5887", dup303); - -var msg8335 = msg("5888", dup303); - -var msg8336 = msg("5889", dup303); - -var msg8337 = msg("5890", dup303); - -var msg8338 = msg("5891", dup303); - -var msg8339 = msg("5892", dup303); - -var msg8340 = msg("5893", dup303); - -var msg8341 = msg("5894", dup303); - -var msg8342 = msg("5895", dup303); - -var msg8343 = msg("5896", dup303); - -var msg8344 = msg("5897", dup303); - -var msg8345 = msg("5898", dup303); - -var msg8346 = msg("5899", dup303); - -var msg8347 = msg("5900", dup303); - -var msg8348 = msg("5901", dup303); - -var msg8349 = msg("5902", dup303); - -var msg8350 = msg("5903", dup303); - -var msg8351 = msg("5904", dup303); - -var msg8352 = msg("5905", dup303); - -var msg8353 = msg("5906", dup303); - -var msg8354 = msg("5907", dup303); - -var msg8355 = msg("5908", dup303); - -var msg8356 = msg("5909", dup303); - -var msg8357 = msg("5910", dup303); - -var msg8358 = msg("5911", dup303); - -var msg8359 = msg("5912", dup303); - -var msg8360 = msg("5913", dup303); - -var msg8361 = msg("5914", dup303); - -var msg8362 = msg("5915", dup303); - -var msg8363 = msg("5916", dup303); - -var msg8364 = msg("5917", dup303); - -var msg8365 = msg("5918", dup303); - -var msg8366 = msg("5919", dup303); - -var msg8367 = msg("5920", dup303); - -var msg8368 = msg("5921", dup303); - -var msg8369 = msg("5922", dup303); - -var msg8370 = msg("5923", dup303); - -var msg8371 = msg("5924", dup303); - -var msg8372 = msg("5925", dup303); - -var msg8373 = msg("5926", dup303); - -var msg8374 = msg("5927", dup303); - -var msg8375 = msg("5928", dup303); - -var msg8376 = msg("5929", dup303); - -var msg8377 = msg("5930", dup303); - -var msg8378 = msg("5931", dup303); - -var msg8379 = msg("5932", dup303); - -var msg8380 = msg("5933", dup303); - -var msg8381 = msg("5934", dup303); - -var msg8382 = msg("5935", dup303); - -var msg8383 = msg("5936", dup303); - -var msg8384 = msg("5937", dup303); - -var msg8385 = msg("5938", dup303); - -var msg8386 = msg("5939", dup303); - -var msg8387 = msg("5940", dup303); - -var msg8388 = msg("5941", dup303); - -var msg8389 = msg("5942", dup303); - -var msg8390 = msg("5943", dup303); - -var msg8391 = msg("5944", dup303); - -var msg8392 = msg("5945", dup303); - -var msg8393 = msg("5946", dup303); - -var msg8394 = msg("5947", dup303); - -var msg8395 = msg("5948", dup303); - -var msg8396 = msg("5949", dup303); - -var msg8397 = msg("5950", dup303); - -var msg8398 = msg("5951", dup303); - -var msg8399 = msg("5952", dup303); - -var msg8400 = msg("5953", dup303); - -var msg8401 = msg("5954", dup303); - -var msg8402 = msg("5955", dup303); - -var msg8403 = msg("5956", dup303); - -var msg8404 = msg("5957", dup303); - -var msg8405 = msg("5958", dup303); - -var msg8406 = msg("5959", dup303); - -var msg8407 = msg("5960", dup303); - -var msg8408 = msg("5961", dup303); - -var msg8409 = msg("5962", dup303); - -var msg8410 = msg("5963", dup303); - -var msg8411 = msg("5964", dup303); - -var msg8412 = msg("5965", dup303); - -var msg8413 = msg("5966", dup303); - -var msg8414 = msg("5967", dup303); - -var msg8415 = msg("5968", dup303); - -var msg8416 = msg("5969", dup303); - -var msg8417 = msg("5970", dup303); - -var msg8418 = msg("5971", dup303); - -var msg8419 = msg("5972", dup303); - -var msg8420 = msg("5973", dup303); - -var msg8421 = msg("5974", dup303); - -var msg8422 = msg("5975", dup303); - -var msg8423 = msg("5976", dup303); - -var msg8424 = msg("5977", dup303); - -var msg8425 = msg("5978", dup303); - -var msg8426 = msg("5979", dup303); - -var msg8427 = msg("5980", dup303); - -var msg8428 = msg("5981", dup303); - -var msg8429 = msg("5982", dup303); - -var msg8430 = msg("5983", dup303); - -var msg8431 = msg("5984", dup303); - -var msg8432 = msg("5985", dup303); - -var msg8433 = msg("5986", dup303); - -var msg8434 = msg("5987", dup303); - -var msg8435 = msg("5988", dup303); - -var msg8436 = msg("5989", dup303); - -var msg8437 = msg("5990", dup303); - -var msg8438 = msg("5991", dup303); - -var msg8439 = msg("5992", dup303); - -var msg8440 = msg("5993", dup303); - -var msg8441 = msg("5994", dup303); - -var msg8442 = msg("5995", dup303); - -var msg8443 = msg("5996", dup303); - -var msg8444 = msg("5997", dup267); - -var msg8445 = msg("5998", dup196); - -var msg8446 = msg("5999", dup196); - -var msg8447 = msg("6000", dup196); - -var msg8448 = msg("6001", dup196); - -var msg8449 = msg("6002", dup265); - -var msg8450 = msg("6003", dup265); - -var msg8451 = msg("6004", dup265); - -var msg8452 = msg("6005", dup265); - -var msg8453 = msg("6006", dup265); - -var msg8454 = msg("6007", dup265); - -var msg8455 = msg("6008", dup265); - -var msg8456 = msg("6009", dup265); - -var msg8457 = msg("6010", dup196); - -var msg8458 = msg("6011", dup222); - -var msg8459 = msg("6012", dup205); - -var msg8460 = msg("6013", dup205); - -var msg8461 = msg("6014", dup205); - -var msg8462 = msg("6015", dup205); - -var msg8463 = msg("6016", dup205); - -var msg8464 = msg("6017", dup205); - -var msg8465 = msg("6018", dup205); - -var msg8466 = msg("6019", dup205); - -var msg8467 = msg("6020", dup205); - -var msg8468 = msg("6021", dup205); - -var msg8469 = msg("6022", dup205); - -var msg8470 = msg("6023", dup205); - -var msg8471 = msg("6024", dup205); - -var msg8472 = msg("6025", dup205); - -var msg8473 = msg("6026", dup205); - -var msg8474 = msg("6027", dup205); - -var msg8475 = msg("6028", dup205); - -var msg8476 = msg("6029", dup205); - -var msg8477 = msg("6030", dup205); - -var msg8478 = msg("6031", dup205); - -var msg8479 = msg("6032", dup205); - -var msg8480 = msg("6033", dup205); - -var msg8481 = msg("6034", dup205); - -var msg8482 = msg("6035", dup205); - -var msg8483 = msg("6036", dup205); - -var msg8484 = msg("6037", dup205); - -var msg8485 = msg("6038", dup205); - -var msg8486 = msg("6039", dup205); - -var msg8487 = msg("6040", dup205); - -var msg8488 = msg("6041", dup205); - -var msg8489 = msg("6042", dup205); - -var msg8490 = msg("6043", dup205); - -var msg8491 = msg("6044", dup205); - -var msg8492 = msg("6045", dup205); - -var msg8493 = msg("6046", dup205); - -var msg8494 = msg("6047", dup205); - -var msg8495 = msg("6048", dup205); - -var msg8496 = msg("6049", dup205); - -var msg8497 = msg("6050", dup205); - -var msg8498 = msg("6051", dup205); - -var msg8499 = msg("6052", dup205); - -var msg8500 = msg("6053", dup205); - -var msg8501 = msg("6054", dup205); - -var msg8502 = msg("6055", dup205); - -var msg8503 = msg("6056", dup205); - -var msg8504 = msg("6057", dup205); - -var msg8505 = msg("6058", dup205); - -var msg8506 = msg("6059", dup205); - -var all46 = all_match({ - processors: [ - dup66, - dup178, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - date_time({ - dest: "event_time", - args: ["event_time_string"], - fmts: [ - [dB,dF,dH,dc(":"),dU,dc(":"),dO], - ], - }), - ]), -}); - -var msg8507 = msg("6060", all46); - -var msg8508 = msg("6061", dup205); - -var msg8509 = msg("6062", dup205); - -var msg8510 = msg("6063", dup205); - -var msg8511 = msg("6064", dup205); - -var msg8512 = msg("6065", dup205); - -var msg8513 = msg("6066", dup205); - -var msg8514 = msg("6067", dup205); - -var msg8515 = msg("6068", dup205); - -var msg8516 = msg("6069", dup205); - -var msg8517 = msg("6070", dup205); - -var msg8518 = msg("6071", dup205); - -var msg8519 = msg("6072", dup205); - -var msg8520 = msg("6073", dup205); - -var msg8521 = msg("6074", dup205); - -var msg8522 = msg("6075", dup205); - -var msg8523 = msg("6076", dup205); - -var msg8524 = msg("6077", dup205); - -var msg8525 = msg("6078", dup205); - -var msg8526 = msg("6079", dup205); - -var msg8527 = msg("6080", dup205); - -var msg8528 = msg("6081", dup205); - -var msg8529 = msg("6082", dup205); - -var msg8530 = msg("6083", dup205); - -var msg8531 = msg("6084", dup205); - -var msg8532 = msg("6085", dup205); - -var msg8533 = msg("6086", dup205); - -var msg8534 = msg("6087", dup205); - -var msg8535 = msg("6088", dup205); - -var msg8536 = msg("6089", dup205); - -var msg8537 = msg("6090", dup205); - -var msg8538 = msg("6091", dup205); - -var msg8539 = msg("6092", dup205); - -var msg8540 = msg("6093", dup205); - -var msg8541 = msg("6094", dup205); - -var msg8542 = msg("6095", dup205); - -var msg8543 = msg("6096", dup205); - -var msg8544 = msg("6097", dup205); - -var msg8545 = msg("6098", dup205); - -var msg8546 = msg("6099", dup205); - -var msg8547 = msg("6100", dup205); - -var msg8548 = msg("6101", dup205); - -var msg8549 = msg("6102", dup205); - -var msg8550 = msg("6103", dup205); - -var msg8551 = msg("6104", dup205); - -var msg8552 = msg("6105", dup205); - -var msg8553 = msg("6106", dup205); - -var msg8554 = msg("6107", dup205); - -var msg8555 = msg("6108", dup205); - -var msg8556 = msg("6109", dup205); - -var msg8557 = msg("6110", dup205); - -var msg8558 = msg("6111", dup205); - -var msg8559 = msg("6112", dup205); - -var msg8560 = msg("6113", dup205); - -var msg8561 = msg("6114", dup205); - -var msg8562 = msg("6115", dup205); - -var msg8563 = msg("6116", dup205); - -var msg8564 = msg("6117", dup205); - -var msg8565 = msg("6118", dup205); - -var msg8566 = msg("6119", dup205); - -var msg8567 = msg("6120", dup205); - -var msg8568 = msg("6121", dup205); - -var msg8569 = msg("6122", dup205); - -var msg8570 = msg("6123", dup205); - -var msg8571 = msg("6124", dup205); - -var msg8572 = msg("6125", dup205); - -var msg8573 = msg("6126", dup205); - -var msg8574 = msg("6127", dup205); - -var msg8575 = msg("6128", dup205); - -var msg8576 = msg("6129", dup205); - -var msg8577 = msg("6130", dup205); - -var msg8578 = msg("6131", dup205); - -var msg8579 = msg("6132", dup205); - -var msg8580 = msg("6133", dup205); - -var msg8581 = msg("6134", dup205); - -var msg8582 = msg("6135", dup205); - -var msg8583 = msg("6136", dup205); - -var msg8584 = msg("6137", dup205); - -var msg8585 = msg("6138", dup205); - -var msg8586 = msg("6139", dup205); - -var msg8587 = msg("6140", dup205); - -var msg8588 = msg("6141", dup205); - -var msg8589 = msg("6142", dup205); - -var msg8590 = msg("6143", dup205); - -var msg8591 = msg("6144", dup205); - -var msg8592 = msg("6145", dup205); - -var msg8593 = msg("6146", dup205); - -var msg8594 = msg("6147", dup205); - -var msg8595 = msg("6148", dup205); - -var msg8596 = msg("6149", dup205); - -var msg8597 = msg("6150", dup205); - -var msg8598 = msg("6151", dup205); - -var msg8599 = msg("6152", dup205); - -var msg8600 = msg("6153", dup205); - -var msg8601 = msg("6154", dup205); - -var msg8602 = msg("6155", dup205); - -var msg8603 = msg("6156", dup205); - -var msg8604 = msg("6157", dup205); - -var msg8605 = msg("6158", dup205); - -var msg8606 = msg("6159", dup205); - -var msg8607 = msg("6160", dup205); - -var msg8608 = msg("6161", dup205); - -var msg8609 = msg("6162", dup205); - -var msg8610 = msg("6163", dup205); - -var msg8611 = msg("6164", dup205); - -var msg8612 = msg("6165", dup205); - -var msg8613 = msg("6166", dup205); - -var msg8614 = msg("6167", dup205); - -var msg8615 = msg("6168", dup205); - -var msg8616 = msg("6169", dup205); - -var msg8617 = msg("6170", dup205); - -var msg8618 = msg("6171", dup205); - -var msg8619 = msg("6172", dup205); - -var msg8620 = msg("6173", dup205); - -var msg8621 = msg("6174", dup205); - -var msg8622 = msg("6175", dup205); - -var msg8623 = msg("6176", dup205); - -var msg8624 = msg("6177", dup205); - -var msg8625 = msg("6178", dup205); - -var msg8626 = msg("6179", dup205); - -var msg8627 = msg("6180", dup205); - -var msg8628 = msg("6181", dup205); - -var msg8629 = msg("6182", dup196); - -var msg8630 = msg("6183", dup303); - -var msg8631 = msg("6184", dup303); - -var msg8632 = msg("6185", dup303); - -var msg8633 = msg("6186", dup303); - -var msg8634 = msg("6187", dup303); - -var msg8635 = msg("6188", dup303); - -var msg8636 = msg("6189", dup303); - -var msg8637 = msg("6190", dup303); - -var msg8638 = msg("6191", dup303); - -var msg8639 = msg("6192", dup303); - -var msg8640 = msg("6193", dup303); - -var msg8641 = msg("6194", dup303); - -var msg8642 = msg("6195", dup303); - -var msg8643 = msg("6196", dup303); - -var msg8644 = msg("6197", dup303); - -var msg8645 = msg("6198", dup303); - -var msg8646 = msg("6199", dup303); - -var msg8647 = msg("6200", dup303); - -var msg8648 = msg("6201", dup303); - -var msg8649 = msg("6202", dup303); - -var msg8650 = msg("6203", dup303); - -var msg8651 = msg("6204", dup303); - -var msg8652 = msg("6205", dup303); - -var msg8653 = msg("6206", dup303); - -var msg8654 = msg("6207", dup303); - -var msg8655 = msg("6208", dup303); - -var msg8656 = msg("6209", dup303); - -var msg8657 = msg("6210", dup303); - -var msg8658 = msg("6211", dup303); - -var msg8659 = msg("6212", dup303); - -var msg8660 = msg("6213", dup303); - -var msg8661 = msg("6214", dup303); - -var msg8662 = msg("6215", dup303); - -var msg8663 = msg("6216", dup303); - -var msg8664 = msg("6217", dup303); - -var msg8665 = msg("6218", dup303); - -var msg8666 = msg("6219", dup303); - -var msg8667 = msg("6220", dup303); - -var msg8668 = msg("6221", dup303); - -var msg8669 = msg("6222", dup303); - -var msg8670 = msg("6223", dup303); - -var msg8671 = msg("6224", dup303); - -var msg8672 = msg("6225", dup303); - -var msg8673 = msg("6226", dup303); - -var msg8674 = msg("6227", dup303); - -var msg8675 = msg("6228", dup303); - -var msg8676 = msg("6229", dup303); - -var msg8677 = msg("6230", dup303); - -var msg8678 = msg("6231", dup303); - -var msg8679 = msg("6232", dup303); - -var msg8680 = msg("6233", dup303); - -var msg8681 = msg("6234", dup303); - -var msg8682 = msg("6235", dup303); - -var msg8683 = msg("6236", dup303); - -var msg8684 = msg("6237", dup303); - -var msg8685 = msg("6238", dup303); - -var msg8686 = msg("6239", dup303); - -var msg8687 = msg("6240", dup303); - -var msg8688 = msg("6241", dup303); - -var msg8689 = msg("6242", dup303); - -var msg8690 = msg("6243", dup303); - -var msg8691 = msg("6244", dup303); - -var msg8692 = msg("6245", dup303); - -var msg8693 = msg("6246", dup303); - -var msg8694 = msg("6247", dup303); - -var msg8695 = msg("6248", dup303); - -var msg8696 = msg("6249", dup303); - -var msg8697 = msg("6250", dup303); - -var msg8698 = msg("6251", dup303); - -var msg8699 = msg("6252", dup303); - -var msg8700 = msg("6253", dup303); - -var msg8701 = msg("6254", dup303); - -var msg8702 = msg("6255", dup303); - -var msg8703 = msg("6256", dup303); - -var msg8704 = msg("6257", dup303); - -var msg8705 = msg("6258", dup303); - -var msg8706 = msg("6259", dup303); - -var msg8707 = msg("6260", dup303); - -var msg8708 = msg("6261", dup303); - -var msg8709 = msg("6262", dup303); - -var msg8710 = msg("6263", dup303); - -var msg8711 = msg("6264", dup303); - -var msg8712 = msg("6265", dup303); - -var msg8713 = msg("6266", dup303); - -var msg8714 = msg("6267", dup303); - -var msg8715 = msg("6268", dup303); - -var msg8716 = msg("6269", dup303); - -var msg8717 = msg("6270", dup303); - -var msg8718 = msg("6271", dup303); - -var msg8719 = msg("6272", dup303); - -var msg8720 = msg("6273", dup303); - -var msg8721 = msg("6274", dup303); - -var msg8722 = msg("6275", dup303); - -var msg8723 = msg("6276", dup303); - -var msg8724 = msg("6277", dup303); - -var msg8725 = msg("6278", dup303); - -var msg8726 = msg("6279", dup303); - -var msg8727 = msg("6280", dup303); - -var msg8728 = msg("6281", dup303); - -var msg8729 = msg("6282", dup303); - -var msg8730 = msg("6283", dup303); - -var msg8731 = msg("6284", dup303); - -var msg8732 = msg("6285", dup205); - -var msg8733 = msg("6286", dup205); - -var msg8734 = msg("6287", dup205); - -var msg8735 = msg("6288", dup205); - -var msg8736 = msg("6289", dup205); - -var msg8737 = msg("6290", dup205); - -var msg8738 = msg("6291", dup205); - -var msg8739 = msg("6292", dup205); - -var msg8740 = msg("6293", dup205); - -var msg8741 = msg("6294", dup205); - -var msg8742 = msg("6295", dup205); - -var msg8743 = msg("6296", dup205); - -var msg8744 = msg("6297", dup205); - -var msg8745 = msg("6298", dup205); - -var msg8746 = msg("6299", dup205); - -var msg8747 = msg("6300", dup205); - -var msg8748 = msg("6301", dup205); - -var msg8749 = msg("6302", dup205); - -var msg8750 = msg("6303", dup205); - -var msg8751 = msg("6304", dup205); - -var msg8752 = msg("6305", dup205); - -var msg8753 = msg("6306", dup205); - -var msg8754 = msg("6307", dup205); - -var msg8755 = msg("6308", dup205); - -var msg8756 = msg("6309", dup205); - -var msg8757 = msg("6310", dup205); - -var msg8758 = msg("6311", dup205); - -var msg8759 = msg("6312", dup205); - -var msg8760 = msg("6313", dup205); - -var msg8761 = msg("6314", dup205); - -var msg8762 = msg("6315", dup205); - -var msg8763 = msg("6316", dup205); - -var msg8764 = msg("6317", dup205); - -var msg8765 = msg("6318", dup205); - -var msg8766 = msg("6319", dup205); - -var msg8767 = msg("6320", dup205); - -var msg8768 = msg("6321", dup205); - -var msg8769 = msg("6322", dup205); - -var msg8770 = msg("6323", dup205); - -var msg8771 = msg("6324", dup205); - -var msg8772 = msg("6325", dup205); - -var msg8773 = msg("6326", dup205); - -var msg8774 = msg("6327", dup205); - -var msg8775 = msg("6328", dup205); - -var msg8776 = msg("6329", dup205); - -var msg8777 = msg("6330", dup205); - -var msg8778 = msg("6331", dup205); - -var msg8779 = msg("6332", dup205); - -var msg8780 = msg("6333", dup205); - -var msg8781 = msg("6334", dup205); - -var msg8782 = msg("6335", dup205); - -var msg8783 = msg("6336", dup205); - -var msg8784 = msg("6337", dup205); - -var msg8785 = msg("6338", dup205); - -var msg8786 = msg("6339", dup205); - -var msg8787 = msg("6340", dup303); - -var msg8788 = msg("6341", dup303); - -var msg8789 = msg("6342", dup303); - -var msg8790 = msg("6343", dup303); - -var msg8791 = msg("6344", dup303); - -var msg8792 = msg("6345", dup303); - -var msg8793 = msg("6346", dup303); - -var msg8794 = msg("6347", dup303); - -var msg8795 = msg("6348", dup303); - -var msg8796 = msg("6349", dup303); - -var msg8797 = msg("6350", dup303); - -var msg8798 = msg("6351", dup303); - -var msg8799 = msg("6352", dup303); - -var msg8800 = msg("6353", dup303); - -var msg8801 = msg("6354", dup303); - -var msg8802 = msg("6355", dup303); - -var msg8803 = msg("6356", dup303); - -var msg8804 = msg("6357", dup303); - -var msg8805 = msg("6358", dup303); - -var msg8806 = msg("6359", dup303); - -var msg8807 = msg("6360", dup303); - -var msg8808 = msg("6361", dup303); - -var msg8809 = msg("6362", dup303); - -var msg8810 = msg("6363", dup303); - -var msg8811 = msg("6364", dup303); - -var msg8812 = msg("6365", dup303); - -var msg8813 = msg("6366", dup303); - -var msg8814 = msg("6367", dup303); - -var msg8815 = msg("6368", dup303); - -var msg8816 = msg("6369", dup303); - -var msg8817 = msg("6370", dup303); - -var msg8818 = msg("6371", dup303); - -var msg8819 = msg("6372", dup303); - -var msg8820 = msg("6373", dup303); - -var msg8821 = msg("6374", dup303); - -var msg8822 = msg("6375", dup303); - -var msg8823 = msg("6376", dup303); - -var msg8824 = msg("6377", dup303); - -var msg8825 = msg("6378", dup303); - -var msg8826 = msg("6379", dup303); - -var msg8827 = msg("6380", dup303); - -var msg8828 = msg("6381", dup303); - -var msg8829 = msg("6382", dup303); - -var msg8830 = msg("6383", dup303); - -var msg8831 = msg("6384", dup303); - -var msg8832 = msg("6385", dup303); - -var msg8833 = msg("6386", dup303); - -var msg8834 = msg("6387", dup303); - -var msg8835 = msg("6388", dup303); - -var msg8836 = msg("6389", dup303); - -var msg8837 = msg("6390", dup303); - -var msg8838 = msg("6391", dup303); - -var msg8839 = msg("6392", dup303); - -var msg8840 = msg("6393", dup303); - -var msg8841 = msg("6394", dup303); - -var msg8842 = msg("6395", dup205); - -var msg8843 = msg("6396", dup205); - -var msg8844 = msg("6397", dup205); - -var msg8845 = msg("6398", dup205); - -var msg8846 = msg("6399", dup205); - -var msg8847 = msg("6400", dup205); - -var msg8848 = msg("6401", dup205); - -var msg8849 = msg("6402", dup205); - -var msg8850 = msg("6403", dup269); - -var msg8851 = msg("6404", dup196); - -var msg8852 = msg("6405", dup222); - -var msg8853 = msg("6406", dup196); - -var msg8854 = msg("6407", dup196); - -var msg8855 = msg("6408", dup196); - -var msg8856 = msg("6409", dup267); - -var msg8857 = msg("6410", dup267); - -var msg8858 = msg("6411", dup267); - -var msg8859 = msg("6412", dup250); - -var msg8860 = msg("6413", dup250); - -var msg8861 = msg("6414", dup267); - -var msg8862 = msg("6415", dup276); - -var msg8863 = msg("6416", dup276); - -var msg8864 = msg("6417", dup276); - -var msg8865 = msg("6418", dup276); - -var msg8866 = msg("6419", dup276); - -var msg8867 = msg("6420", dup276); - -var msg8868 = msg("6421", dup276); - -var msg8869 = msg("6422", dup276); - -var msg8870 = msg("6423", dup276); - -var msg8871 = msg("6424", dup276); - -var msg8872 = msg("6425", dup276); - -var msg8873 = msg("6426", dup276); - -var msg8874 = msg("6427", dup276); - -var msg8875 = msg("6428", dup276); - -var msg8876 = msg("6429", dup276); - -var msg8877 = msg("6430", dup276); - -var msg8878 = msg("6431", dup276); - -var msg8879 = msg("6432", dup276); - -var msg8880 = msg("6433", dup276); - -var msg8881 = msg("6434", dup276); - -var msg8882 = msg("6435", dup276); - -var msg8883 = msg("6436", dup276); - -var msg8884 = msg("6437", dup276); - -var msg8885 = msg("6438", dup276); - -var msg8886 = msg("6439", dup276); - -var msg8887 = msg("6440", dup276); - -var msg8888 = msg("6441", dup276); - -var msg8889 = msg("6442", dup276); - -var msg8890 = msg("6443", dup276); - -var msg8891 = msg("6444", dup276); - -var msg8892 = msg("6445", dup276); - -var msg8893 = msg("6446", dup276); - -var msg8894 = msg("6447", dup276); - -var msg8895 = msg("6448", dup276); - -var msg8896 = msg("6449", dup276); - -var msg8897 = msg("6450", dup276); - -var msg8898 = msg("6451", dup276); - -var msg8899 = msg("6452", dup276); - -var msg8900 = msg("6453", dup276); - -var msg8901 = msg("6454", dup276); - -var msg8902 = msg("6455", dup276); - -var msg8903 = msg("6456", dup276); - -var msg8904 = msg("6457", dup276); - -var msg8905 = msg("6458", dup276); - -var msg8906 = msg("6459", dup276); - -var msg8907 = msg("6460", dup276); - -var msg8908 = msg("6461", dup276); - -var msg8909 = msg("6462", dup276); - -var msg8910 = msg("6463", dup276); - -var msg8911 = msg("6464", dup276); - -var msg8912 = msg("6465", dup276); - -var msg8913 = msg("6466", dup276); - -var msg8914 = msg("6467", dup196); - -var msg8915 = msg("6468", dup196); - -var msg8916 = msg("6469", dup196); - -var msg8917 = msg("6470", dup196); - -var msg8918 = msg("6471", dup285); - -var msg8919 = msg("6472", dup205); - -var msg8920 = msg("6473", dup205); - -var msg8921 = msg("6474", dup205); - -var msg8922 = msg("6475", dup205); - -var msg8923 = msg("6476", dup205); - -var msg8924 = msg("6477", dup303); - -var msg8925 = msg("6478", dup303); - -var msg8926 = msg("6479", dup303); - -var msg8927 = msg("6480", dup303); - -var msg8928 = msg("6481", dup303); - -var msg8929 = msg("6482", dup303); - -var msg8930 = msg("6483", dup303); - -var msg8931 = msg("6484", dup303); - -var msg8932 = msg("6485", dup303); - -var msg8933 = msg("6486", dup303); - -var msg8934 = msg("6487", dup303); - -var msg8935 = msg("6488", dup303); - -var msg8936 = msg("6489", dup303); - -var msg8937 = msg("6490", dup303); - -var msg8938 = msg("6491", dup303); - -var msg8939 = msg("6492", dup205); - -var msg8940 = msg("6493", dup205); - -var msg8941 = msg("6494", dup303); - -var msg8942 = msg("6495", dup303); - -var msg8943 = msg("6496", dup303); - -var msg8944 = msg("6497", dup205); - -var msg8945 = msg("6498", dup205); - -var msg8946 = msg("6499", dup205); - -var msg8947 = msg("6500", dup205); - -var msg8948 = msg("6501", dup205); - -var msg8949 = msg("6502", dup197); - -var msg8950 = msg("6503", dup197); - -var msg8951 = msg("6504", dup194); - -var msg8952 = msg("6505", dup267); - -var msg8953 = msg("6506", dup267); - -var msg8954 = msg("6507", dup267); - -var msg8955 = msg("6508", dup222); - -var msg8956 = msg("6509", dup267); - -var msg8957 = msg("6510", dup267); - -var msg8958 = msg("6511", dup267); - -var msg8959 = msg("6512", dup194); - -var msg8960 = msg("6513", dup222); - -var msg8961 = msg("6514", dup222); - -var msg8962 = msg("6515", dup222); - -var msg8963 = msg("6516", dup265); - -var msg8964 = msg("6517", dup265); - -var msg8965 = msg("6518", dup265); - -var msg8966 = msg("6519", dup265); - -var msg8967 = msg("6520", dup276); - -var msg8968 = msg("6521", dup276); - -var msg8969 = msg("6522", dup276); - -var msg8970 = msg("6523", dup276); - -var msg8971 = msg("6524", dup276); - -var msg8972 = msg("6525", dup276); - -var msg8973 = msg("6526", dup276); - -var msg8974 = msg("6527", dup276); - -var msg8975 = msg("6528", dup276); - -var msg8976 = msg("6529", dup276); - -var msg8977 = msg("6530", dup276); - -var msg8978 = msg("6531", dup276); - -var msg8979 = msg("6532", dup276); - -var msg8980 = msg("6533", dup276); - -var msg8981 = msg("6534", dup276); - -var msg8982 = msg("6535", dup276); - -var msg8983 = msg("6536", dup276); - -var msg8984 = msg("6537", dup276); - -var msg8985 = msg("6538", dup276); - -var msg8986 = msg("6539", dup276); - -var msg8987 = msg("6540", dup276); - -var msg8988 = msg("6541", dup276); - -var msg8989 = msg("6542", dup276); - -var msg8990 = msg("6543", dup276); - -var msg8991 = msg("6544", dup276); - -var msg8992 = msg("6545", dup276); - -var msg8993 = msg("6546", dup276); - -var msg8994 = msg("6547", dup276); - -var msg8995 = msg("6548", dup276); - -var msg8996 = msg("6549", dup276); - -var msg8997 = msg("6550", dup276); - -var msg8998 = msg("6551", dup276); - -var msg8999 = msg("6552", dup276); - -var msg9000 = msg("6553", dup276); - -var msg9001 = msg("6554", dup276); - -var msg9002 = msg("6555", dup276); - -var msg9003 = msg("6556", dup276); - -var msg9004 = msg("6557", dup276); - -var msg9005 = msg("6558", dup276); - -var msg9006 = msg("6559", dup276); - -var msg9007 = msg("6560", dup276); - -var msg9008 = msg("6561", dup276); - -var msg9009 = msg("6562", dup276); - -var msg9010 = msg("6563", dup276); - -var msg9011 = msg("6564", dup276); - -var msg9012 = msg("6565", dup276); - -var msg9013 = msg("6566", dup276); - -var msg9014 = msg("6567", dup276); - -var msg9015 = msg("6568", dup276); - -var msg9016 = msg("6569", dup276); - -var msg9017 = msg("6570", dup276); - -var msg9018 = msg("6571", dup276); - -var msg9019 = msg("6572", dup276); - -var msg9020 = msg("6573", dup276); - -var msg9021 = msg("6574", dup276); - -var msg9022 = msg("6575", dup276); - -var msg9023 = msg("6576", dup276); - -var msg9024 = msg("6577", dup276); - -var msg9025 = msg("6578", dup276); - -var msg9026 = msg("6579", dup276); - -var msg9027 = msg("6580", dup276); - -var msg9028 = msg("6581", dup276); - -var msg9029 = msg("6582", dup276); - -var msg9030 = msg("6583", dup276); - -var msg9031 = msg("6584", dup276); - -var msg9032 = msg("6585", dup276); - -var msg9033 = msg("6586", dup276); - -var msg9034 = msg("6587", dup276); - -var msg9035 = msg("6588", dup276); - -var msg9036 = msg("6589", dup276); - -var msg9037 = msg("6590", dup276); - -var msg9038 = msg("6591", dup276); - -var msg9039 = msg("6592", dup276); - -var msg9040 = msg("6593", dup276); - -var msg9041 = msg("6594", dup276); - -var msg9042 = msg("6595", dup276); - -var msg9043 = msg("6596", dup276); - -var msg9044 = msg("6597", dup276); - -var msg9045 = msg("6598", dup276); - -var msg9046 = msg("6599", dup276); - -var msg9047 = msg("6600", dup276); - -var msg9048 = msg("6601", dup276); - -var msg9049 = msg("6602", dup276); - -var msg9050 = msg("6603", dup276); - -var msg9051 = msg("6604", dup276); - -var msg9052 = msg("6605", dup276); - -var msg9053 = msg("6606", dup276); - -var msg9054 = msg("6607", dup276); - -var msg9055 = msg("6608", dup276); - -var msg9056 = msg("6609", dup276); - -var msg9057 = msg("6610", dup276); - -var msg9058 = msg("6611", dup276); - -var msg9059 = msg("6612", dup276); - -var msg9060 = msg("6613", dup276); - -var msg9061 = msg("6614", dup276); - -var msg9062 = msg("6615", dup276); - -var msg9063 = msg("6616", dup276); - -var msg9064 = msg("6617", dup276); - -var msg9065 = msg("6618", dup276); - -var msg9066 = msg("6619", dup276); - -var msg9067 = msg("6620", dup276); - -var msg9068 = msg("6621", dup276); - -var msg9069 = msg("6622", dup276); - -var msg9070 = msg("6623", dup276); - -var msg9071 = msg("6624", dup276); - -var msg9072 = msg("6625", dup276); - -var msg9073 = msg("6626", dup276); - -var msg9074 = msg("6627", dup276); - -var msg9075 = msg("6628", dup276); - -var msg9076 = msg("6629", dup276); - -var msg9077 = msg("6630", dup276); - -var msg9078 = msg("6631", dup276); - -var msg9079 = msg("6632", dup276); - -var msg9080 = msg("6633", dup276); - -var msg9081 = msg("6634", dup276); - -var msg9082 = msg("6635", dup276); - -var msg9083 = msg("6636", dup276); - -var msg9084 = msg("6637", dup276); - -var msg9085 = msg("6638", dup276); - -var msg9086 = msg("6639", dup276); - -var msg9087 = msg("6640", dup276); - -var msg9088 = msg("6641", dup276); - -var msg9089 = msg("6642", dup276); - -var msg9090 = msg("6643", dup276); - -var msg9091 = msg("6644", dup276); - -var msg9092 = msg("6645", dup276); - -var msg9093 = msg("6646", dup276); - -var msg9094 = msg("6647", dup276); - -var msg9095 = msg("6648", dup276); - -var msg9096 = msg("6649", dup276); - -var msg9097 = msg("6650", dup276); - -var msg9098 = msg("6651", dup276); - -var msg9099 = msg("6652", dup276); - -var msg9100 = msg("6653", dup276); - -var msg9101 = msg("6654", dup276); - -var msg9102 = msg("6655", dup276); - -var msg9103 = msg("6656", dup276); - -var msg9104 = msg("6657", dup276); - -var msg9105 = msg("6658", dup276); - -var msg9106 = msg("6659", dup276); - -var msg9107 = msg("6660", dup276); - -var msg9108 = msg("6661", dup276); - -var msg9109 = msg("6662", dup276); - -var msg9110 = msg("6663", dup276); - -var msg9111 = msg("6664", dup276); - -var msg9112 = msg("6665", dup276); - -var msg9113 = msg("6666", dup276); - -var msg9114 = msg("6667", dup276); - -var msg9115 = msg("6668", dup276); - -var msg9116 = msg("6669", dup276); - -var msg9117 = msg("6670", dup276); - -var msg9118 = msg("6671", dup276); - -var msg9119 = msg("6672", dup276); - -var msg9120 = msg("6673", dup276); - -var msg9121 = msg("6674", dup276); - -var msg9122 = msg("6675", dup276); - -var msg9123 = msg("6676", dup276); - -var msg9124 = msg("6677", dup276); - -var msg9125 = msg("6678", dup276); - -var msg9126 = msg("6679", dup276); - -var msg9127 = msg("6680", dup265); - -var msg9128 = msg("6681", dup265); - -var msg9129 = msg("6682", dup265); - -var msg9130 = msg("6683", dup265); - -var msg9131 = msg("6684", dup265); - -var msg9132 = msg("6685", dup265); - -var msg9133 = msg("6686", dup265); - -var msg9134 = msg("6687", dup265); - -var msg9135 = msg("6688", dup196); - -var msg9136 = msg("6689", dup267); - -var msg9137 = msg("6690", dup267); - -var msg9138 = msg("6691", dup267); - -var msg9139 = msg("6692", dup267); - -var msg9140 = msg("6693", dup267); - -var msg9141 = msg("6694", dup267); - -var msg9142 = msg("6695", dup267); - -var msg9143 = msg("6696", dup267); - -var msg9144 = msg("6697", dup267); - -var msg9145 = msg("6698", dup267); - -var msg9146 = msg("6699", dup267); - -var msg9147 = msg("6700", dup304); - -var msg9148 = msg("6701", dup267); - -var msg9149 = msg("6702", dup276); - -var msg9150 = msg("6703", dup276); - -var msg9151 = msg("6704", dup276); - -var msg9152 = msg("6705", dup276); - -var msg9153 = msg("6706", dup276); - -var msg9154 = msg("6707", dup276); - -var msg9155 = msg("6708", dup276); - -var msg9156 = msg("6709", dup276); - -var msg9157 = msg("6710", dup276); - -var msg9158 = msg("6711", dup276); - -var msg9159 = msg("6712", dup276); - -var msg9160 = msg("6713", dup276); - -var msg9161 = msg("6714", dup276); - -var msg9162 = msg("6715", dup276); - -var msg9163 = msg("6716", dup276); - -var msg9164 = msg("6717", dup276); - -var msg9165 = msg("6718", dup276); - -var msg9166 = msg("6719", dup276); - -var msg9167 = msg("6720", dup276); - -var msg9168 = msg("6721", dup276); - -var msg9169 = msg("6722", dup276); - -var msg9170 = msg("6723", dup276); - -var msg9171 = msg("6724", dup276); - -var msg9172 = msg("6725", dup276); - -var msg9173 = msg("6726", dup276); - -var msg9174 = msg("6727", dup276); - -var msg9175 = msg("6728", dup276); - -var msg9176 = msg("6729", dup276); - -var msg9177 = msg("6730", dup276); - -var msg9178 = msg("6731", dup276); - -var msg9179 = msg("6732", dup276); - -var msg9180 = msg("6733", dup276); - -var msg9181 = msg("6734", dup276); - -var msg9182 = msg("6735", dup276); - -var msg9183 = msg("6736", dup276); - -var msg9184 = msg("6737", dup276); - -var msg9185 = msg("6738", dup276); - -var msg9186 = msg("6739", dup276); - -var msg9187 = msg("6740", dup276); - -var msg9188 = msg("6741", dup276); - -var msg9189 = msg("6742", dup276); - -var msg9190 = msg("6743", dup276); - -var msg9191 = msg("6744", dup276); - -var msg9192 = msg("6745", dup276); - -var msg9193 = msg("6746", dup276); - -var msg9194 = msg("6747", dup276); - -var msg9195 = msg("6748", dup276); - -var msg9196 = msg("6749", dup276); - -var msg9197 = msg("6750", dup276); - -var msg9198 = msg("6751", dup276); - -var msg9199 = msg("6752", dup276); - -var msg9200 = msg("6753", dup276); - -var msg9201 = msg("6754", dup276); - -var msg9202 = msg("6755", dup276); - -var msg9203 = msg("6756", dup276); - -var msg9204 = msg("6757", dup276); - -var msg9205 = msg("6758", dup276); - -var msg9206 = msg("6759", dup276); - -var msg9207 = msg("6760", dup276); - -var msg9208 = msg("6761", dup276); - -var msg9209 = msg("6762", dup276); - -var msg9210 = msg("6763", dup276); - -var msg9211 = msg("6764", dup276); - -var msg9212 = msg("6765", dup276); - -var msg9213 = msg("6766", dup276); - -var msg9214 = msg("6767", dup276); - -var msg9215 = msg("6768", dup276); - -var msg9216 = msg("6769", dup276); - -var msg9217 = msg("6770", dup276); - -var msg9218 = msg("6771", dup276); - -var msg9219 = msg("6772", dup276); - -var msg9220 = msg("6773", dup276); - -var msg9221 = msg("6774", dup276); - -var msg9222 = msg("6775", dup276); - -var msg9223 = msg("6776", dup276); - -var msg9224 = msg("6777", dup276); - -var msg9225 = msg("6778", dup276); - -var msg9226 = msg("6779", dup276); - -var msg9227 = msg("6780", dup276); - -var msg9228 = msg("6781", dup276); - -var msg9229 = msg("6782", dup276); - -var msg9230 = msg("6783", dup276); - -var msg9231 = msg("6784", dup276); - -var msg9232 = msg("6785", dup276); - -var msg9233 = msg("6786", dup276); - -var msg9234 = msg("6787", dup276); - -var msg9235 = msg("6788", dup276); - -var msg9236 = msg("6789", dup276); - -var msg9237 = msg("6790", dup276); - -var msg9238 = msg("6791", dup276); - -var msg9239 = msg("6792", dup276); - -var msg9240 = msg("6793", dup276); - -var msg9241 = msg("6794", dup276); - -var msg9242 = msg("6795", dup276); - -var msg9243 = msg("6796", dup276); - -var msg9244 = msg("6797", dup276); - -var msg9245 = msg("6798", dup276); - -var msg9246 = msg("6799", dup276); - -var msg9247 = msg("6800", dup276); - -var msg9248 = msg("6801", dup276); - -var msg9249 = msg("6802", dup276); - -var msg9250 = msg("6803", dup276); - -var msg9251 = msg("6804", dup276); - -var msg9252 = msg("6805", dup276); - -var msg9253 = msg("6806", dup276); - -var msg9254 = msg("6807", dup276); - -var msg9255 = msg("6808", dup276); - -var msg9256 = msg("6809", dup276); - -var msg9257 = msg("6810", dup276); - -var msg9258 = msg("6811", dup276); - -var msg9259 = msg("6812", dup276); - -var msg9260 = msg("6813", dup276); - -var msg9261 = msg("6814", dup276); - -var msg9262 = msg("6815", dup276); - -var msg9263 = msg("6816", dup276); - -var msg9264 = msg("6817", dup276); - -var msg9265 = msg("6818", dup276); - -var msg9266 = msg("6819", dup276); - -var msg9267 = msg("6820", dup276); - -var msg9268 = msg("6821", dup276); - -var msg9269 = msg("6822", dup276); - -var msg9270 = msg("6823", dup276); - -var msg9271 = msg("6824", dup276); - -var msg9272 = msg("6825", dup276); - -var msg9273 = msg("6826", dup276); - -var msg9274 = msg("6827", dup276); - -var msg9275 = msg("6828", dup276); - -var msg9276 = msg("6829", dup276); - -var msg9277 = msg("6830", dup276); - -var msg9278 = msg("6831", dup276); - -var msg9279 = msg("6832", dup276); - -var msg9280 = msg("6833", dup276); - -var msg9281 = msg("6834", dup276); - -var msg9282 = msg("6835", dup276); - -var msg9283 = msg("6836", dup276); - -var msg9284 = msg("6837", dup276); - -var msg9285 = msg("6838", dup276); - -var msg9286 = msg("6839", dup276); - -var msg9287 = msg("6840", dup276); - -var msg9288 = msg("6841", dup276); - -var msg9289 = msg("6842", dup276); - -var msg9290 = msg("6843", dup276); - -var msg9291 = msg("6844", dup276); - -var msg9292 = msg("6845", dup276); - -var msg9293 = msg("6846", dup276); - -var msg9294 = msg("6847", dup276); - -var msg9295 = msg("6848", dup276); - -var msg9296 = msg("6849", dup276); - -var msg9297 = msg("6850", dup276); - -var msg9298 = msg("6851", dup276); - -var msg9299 = msg("6852", dup276); - -var msg9300 = msg("6853", dup276); - -var msg9301 = msg("6854", dup276); - -var msg9302 = msg("6855", dup276); - -var msg9303 = msg("6856", dup276); - -var msg9304 = msg("6857", dup276); - -var msg9305 = msg("6858", dup276); - -var msg9306 = msg("6859", dup276); - -var msg9307 = msg("6860", dup276); - -var msg9308 = msg("6861", dup276); - -var msg9309 = msg("6862", dup276); - -var msg9310 = msg("6863", dup276); - -var msg9311 = msg("6864", dup276); - -var msg9312 = msg("6865", dup276); - -var msg9313 = msg("6866", dup276); - -var msg9314 = msg("6867", dup276); - -var msg9315 = msg("6868", dup276); - -var msg9316 = msg("6869", dup276); - -var msg9317 = msg("6870", dup276); - -var msg9318 = msg("6871", dup276); - -var msg9319 = msg("6872", dup276); - -var msg9320 = msg("6873", dup276); - -var msg9321 = msg("6874", dup276); - -var msg9322 = msg("6875", dup276); - -var msg9323 = msg("6876", dup276); - -var msg9324 = msg("6877", dup276); - -var msg9325 = msg("6878", dup276); - -var msg9326 = msg("6879", dup276); - -var msg9327 = msg("6880", dup276); - -var msg9328 = msg("6881", dup276); - -var msg9329 = msg("6882", dup276); - -var msg9330 = msg("6883", dup276); - -var msg9331 = msg("6884", dup276); - -var msg9332 = msg("6885", dup276); - -var msg9333 = msg("6886", dup276); - -var msg9334 = msg("6887", dup276); - -var msg9335 = msg("6888", dup276); - -var msg9336 = msg("6889", dup276); - -var msg9337 = msg("6890", dup276); - -var msg9338 = msg("6891", dup276); - -var msg9339 = msg("6892", dup276); - -var msg9340 = msg("6893", dup276); - -var msg9341 = msg("6894", dup276); - -var msg9342 = msg("6895", dup276); - -var msg9343 = msg("6896", dup276); - -var msg9344 = msg("6897", dup276); - -var msg9345 = msg("6898", dup276); - -var msg9346 = msg("6899", dup276); - -var msg9347 = msg("6900", dup276); - -var msg9348 = msg("6901", dup276); - -var msg9349 = msg("6902", dup276); - -var msg9350 = msg("6903", dup276); - -var msg9351 = msg("6904", dup276); - -var msg9352 = msg("6905", dup276); - -var msg9353 = msg("6906", dup276); - -var msg9354 = msg("6907", dup276); - -var msg9355 = msg("6908", dup276); - -var msg9356 = msg("6909", dup276); - -var msg9357 = msg("6910", dup276); - -var msg9358 = msg("6911", dup276); - -var msg9359 = msg("6912", dup276); - -var msg9360 = msg("6913", dup276); - -var msg9361 = msg("6914", dup276); - -var msg9362 = msg("6915", dup276); - -var msg9363 = msg("6916", dup276); - -var msg9364 = msg("6917", dup276); - -var msg9365 = msg("6918", dup276); - -var msg9366 = msg("6919", dup276); - -var msg9367 = msg("6920", dup276); - -var msg9368 = msg("6921", dup276); - -var msg9369 = msg("6922", dup276); - -var msg9370 = msg("6923", dup276); - -var msg9371 = msg("6924", dup276); - -var msg9372 = msg("6925", dup276); - -var msg9373 = msg("6926", dup276); - -var msg9374 = msg("6927", dup276); - -var msg9375 = msg("6928", dup276); - -var msg9376 = msg("6929", dup276); - -var msg9377 = msg("6930", dup276); - -var msg9378 = msg("6931", dup276); - -var msg9379 = msg("6932", dup276); - -var msg9380 = msg("6933", dup276); - -var msg9381 = msg("6934", dup276); - -var msg9382 = msg("6935", dup276); - -var msg9383 = msg("6936", dup276); - -var msg9384 = msg("6937", dup276); - -var msg9385 = msg("6938", dup276); - -var msg9386 = msg("6939", dup276); - -var msg9387 = msg("6940", dup276); - -var msg9388 = msg("6941", dup276); - -var msg9389 = msg("6942", dup276); - -var msg9390 = msg("6943", dup276); - -var msg9391 = msg("6944", dup276); - -var msg9392 = msg("6945", dup276); - -var msg9393 = msg("6946", dup276); - -var msg9394 = msg("6947", dup276); - -var msg9395 = msg("6948", dup276); - -var msg9396 = msg("6949", dup276); - -var msg9397 = msg("6950", dup276); - -var msg9398 = msg("6951", dup276); - -var msg9399 = msg("6952", dup276); - -var msg9400 = msg("6953", dup276); - -var msg9401 = msg("6954", dup276); - -var msg9402 = msg("6955", dup276); - -var msg9403 = msg("6956", dup276); - -var msg9404 = msg("6957", dup276); - -var msg9405 = msg("6958", dup276); - -var msg9406 = msg("6959", dup276); - -var msg9407 = msg("6960", dup276); - -var msg9408 = msg("6961", dup276); - -var msg9409 = msg("6962", dup276); - -var msg9410 = msg("6963", dup276); - -var msg9411 = msg("6964", dup276); - -var msg9412 = msg("6965", dup276); - -var msg9413 = msg("6966", dup276); - -var msg9414 = msg("6967", dup276); - -var msg9415 = msg("6968", dup276); - -var msg9416 = msg("6969", dup276); - -var msg9417 = msg("6970", dup276); - -var msg9418 = msg("6971", dup276); - -var msg9419 = msg("6972", dup276); - -var msg9420 = msg("6973", dup276); - -var msg9421 = msg("6974", dup276); - -var msg9422 = msg("6975", dup276); - -var msg9423 = msg("6976", dup276); - -var msg9424 = msg("6977", dup276); - -var msg9425 = msg("6978", dup276); - -var msg9426 = msg("6979", dup276); - -var msg9427 = msg("6980", dup276); - -var msg9428 = msg("6981", dup276); - -var msg9429 = msg("6982", dup276); - -var msg9430 = msg("6983", dup276); - -var msg9431 = msg("6984", dup276); - -var msg9432 = msg("6985", dup276); - -var msg9433 = msg("6986", dup276); - -var msg9434 = msg("6987", dup276); - -var msg9435 = msg("6988", dup276); - -var msg9436 = msg("6989", dup276); - -var msg9437 = msg("6990", dup276); - -var msg9438 = msg("6991", dup276); - -var msg9439 = msg("6992", dup276); - -var msg9440 = msg("6993", dup276); - -var msg9441 = msg("6994", dup276); - -var msg9442 = msg("6995", dup276); - -var msg9443 = msg("6996", dup276); - -var msg9444 = msg("6997", dup276); - -var msg9445 = msg("6998", dup276); - -var msg9446 = msg("6999", dup276); - -var msg9447 = msg("7000", dup276); - -var msg9448 = msg("7001", dup276); - -var msg9449 = msg("7002", dup267); - -var msg9450 = msg("7003", dup265); - -var msg9451 = msg("7004", dup265); - -var msg9452 = msg("7005", dup265); - -var msg9453 = msg("7006", dup265); - -var msg9454 = msg("7007", dup265); - -var msg9455 = msg("7008", dup265); - -var msg9456 = msg("7009", dup265); - -var msg9457 = msg("7010", dup265); - -var msg9458 = msg("7011", dup265); - -var msg9459 = msg("7012", dup265); - -var msg9460 = msg("7013", dup265); - -var msg9461 = msg("7014", dup265); - -var msg9462 = msg("7015", dup265); - -var msg9463 = msg("7016", dup265); - -var msg9464 = msg("7017", dup265); - -var msg9465 = msg("7018", dup265); - -var msg9466 = msg("7019", dup196); - -var msg9467 = msg("7020", dup265); - -var msg9468 = msg("7021", dup198); - -var msg9469 = msg("7022", dup267); - -var msg9470 = msg("7023", dup196); - -var msg9471 = msg("7024", dup267); - -var msg9472 = msg("7025", dup267); - -var msg9473 = msg("7026", dup265); - -var msg9474 = msg("7027", dup265); - -var msg9475 = msg("7028", dup265); - -var msg9476 = msg("7029", dup265); - -var msg9477 = msg("7030", dup196); - -var msg9478 = msg("7031", dup196); - -var msg9479 = msg("7032", dup196); - -var msg9480 = msg("7033", dup196); - -var msg9481 = msg("7034", dup196); - -var msg9482 = msg("7035", dup276); - -var msg9483 = msg("7036", dup276); - -var msg9484 = msg("7037", dup276); - -var msg9485 = msg("7038", dup276); - -var msg9486 = msg("7039", dup276); - -var msg9487 = msg("7040", dup276); - -var msg9488 = msg("7041", dup276); - -var msg9489 = msg("7042", dup276); - -var msg9490 = msg("7043", dup276); - -var msg9491 = msg("7044", dup276); - -var msg9492 = msg("7045", dup276); - -var msg9493 = msg("7046", dup276); - -var msg9494 = msg("7047", dup267); - -var msg9495 = msg("7048", dup267); - -var msg9496 = msg("7049", dup303); - -var msg9497 = msg("7050", dup303); - -var msg9498 = msg("7051", dup303); - -var msg9499 = msg("7052", dup303); - -var msg9500 = msg("7053", dup303); - -var msg9501 = msg("7054", dup303); - -var msg9502 = msg("7055", dup303); - -var msg9503 = msg("7056", dup205); - -var msg9504 = msg("7057", dup205); - -var msg9505 = msg("7058", dup205); - -var msg9506 = msg("7059", dup205); - -var msg9507 = msg("7060", dup205); - -var msg9508 = msg("7061", dup205); - -var msg9509 = msg("7062", dup205); - -var msg9510 = msg("7063", dup205); - -var msg9511 = msg("7064", dup205); - -var msg9512 = msg("7065", dup205); - -var msg9513 = msg("7066", dup205); - -var msg9514 = msg("7067", dup205); - -var msg9515 = msg("7068", dup205); - -var msg9516 = msg("7069", dup205); - -var msg9517 = msg("7070", dup265); - -var msg9518 = msg("7071", dup265); - -var msg9519 = msg("7072", dup205); - -var msg9520 = msg("7073", dup205); - -var msg9521 = msg("7074", dup205); - -var msg9522 = msg("7075", dup205); - -var msg9523 = msg("7076", dup205); - -var msg9524 = msg("7077", dup205); - -var msg9525 = msg("7078", dup205); - -var msg9526 = msg("7079", dup205); - -var msg9527 = msg("7080", dup205); - -var msg9528 = msg("7081", dup205); - -var msg9529 = msg("7082", dup205); - -var msg9530 = msg("7083", dup205); - -var msg9531 = msg("7084", dup205); - -var msg9532 = msg("7085", dup205); - -var msg9533 = msg("7086", dup205); - -var msg9534 = msg("7087", dup205); - -var msg9535 = msg("7088", dup205); - -var msg9536 = msg("7089", dup205); - -var msg9537 = msg("7090", dup205); - -var msg9538 = msg("7091", dup205); - -var msg9539 = msg("7092", dup205); - -var msg9540 = msg("7093", dup205); - -var msg9541 = msg("7094", dup205); - -var msg9542 = msg("7095", dup205); - -var msg9543 = msg("7096", dup205); - -var msg9544 = msg("7097", dup205); - -var msg9545 = msg("7098", dup205); - -var msg9546 = msg("7099", dup205); - -var msg9547 = msg("7100", dup205); - -var msg9548 = msg("7101", dup205); - -var msg9549 = msg("7102", dup205); - -var msg9550 = msg("7103", dup205); - -var msg9551 = msg("7104", dup205); - -var msg9552 = msg("7105", dup205); - -var msg9553 = msg("7106", dup205); - -var msg9554 = msg("7107", dup205); - -var msg9555 = msg("7108", dup205); - -var msg9556 = msg("7109", dup205); - -var msg9557 = msg("7110", dup205); - -var msg9558 = msg("7111", dup205); - -var msg9559 = msg("7112", dup205); - -var msg9560 = msg("7113", dup205); - -var msg9561 = msg("7114", dup205); - -var msg9562 = msg("7115", dup205); - -var msg9563 = msg("7116", dup205); - -var msg9564 = msg("7117", dup205); - -var msg9565 = msg("7118", dup205); - -var msg9566 = msg("7119", dup205); - -var msg9567 = msg("7120", dup205); - -var msg9568 = msg("7121", dup205); - -var msg9569 = msg("7122", dup205); - -var msg9570 = msg("7123", dup303); - -var msg9571 = msg("7124", dup303); - -var msg9572 = msg("7125", dup303); - -var msg9573 = msg("7126", dup192); - -var msg9574 = msg("7127", dup303); - -var msg9575 = msg("7128", dup303); - -var msg9576 = msg("7129", dup303); - -var msg9577 = msg("7130", dup303); - -var msg9578 = msg("7131", dup303); - -var msg9579 = msg("7132", dup303); - -var msg9580 = msg("7133", dup303); - -var msg9581 = msg("7134", dup303); - -var msg9582 = msg("7135", dup303); - -var msg9583 = msg("7136", dup303); - -var msg9584 = msg("7137", dup303); - -var msg9585 = msg("7138", dup192); - -var msg9586 = msg("7139", dup192); - -var msg9587 = msg("7140", dup303); - -var msg9588 = msg("7141", dup303); - -var msg9589 = msg("7142", dup303); - -var msg9590 = msg("7143", dup303); - -var msg9591 = msg("7144", dup303); - -var msg9592 = msg("7145", dup303); - -var msg9593 = msg("7146", dup303); - -var msg9594 = msg("7147", dup303); - -var msg9595 = msg("7148", dup303); - -var msg9596 = msg("7149", dup303); - -var msg9597 = msg("7150", dup303); - -var msg9598 = msg("7151", dup303); - -var msg9599 = msg("7152", dup303); - -var msg9600 = msg("7153", dup303); - -var msg9601 = msg("7154", dup303); - -var msg9602 = msg("7155", dup303); - -var msg9603 = msg("7156", dup303); - -var msg9604 = msg("7157", dup303); - -var msg9605 = msg("7158", dup303); - -var msg9606 = msg("7159", dup303); - -var msg9607 = msg("7160", dup303); - -var msg9608 = msg("7161", dup303); - -var msg9609 = msg("7162", dup303); - -var msg9610 = msg("7163", dup303); - -var msg9611 = msg("7164", dup303); - -var msg9612 = msg("7165", dup303); - -var msg9613 = msg("7166", dup303); - -var msg9614 = msg("7167", dup303); - -var msg9615 = msg("7168", dup303); - -var msg9616 = msg("7169", dup303); - -var msg9617 = msg("7170", dup303); - -var msg9618 = msg("7171", dup303); - -var msg9619 = msg("7172", dup303); - -var msg9620 = msg("7173", dup303); - -var msg9621 = msg("7174", dup303); - -var msg9622 = msg("7175", dup303); - -var msg9623 = msg("7176", dup303); - -var msg9624 = msg("7177", dup303); - -var msg9625 = msg("7178", dup303); - -var msg9626 = msg("7179", dup303); - -var msg9627 = msg("7180", dup303); - -var msg9628 = msg("7181", dup303); - -var msg9629 = msg("7182", dup303); - -var msg9630 = msg("7183", dup303); - -var msg9631 = msg("7184", dup303); - -var msg9632 = msg("7185", dup303); - -var msg9633 = msg("7186", dup303); - -var msg9634 = msg("7187", dup303); - -var msg9635 = msg("7188", dup303); - -var msg9636 = msg("7189", dup303); - -var msg9637 = msg("7190", dup303); - -var msg9638 = msg("7191", dup303); - -var msg9639 = msg("7192", dup303); - -var msg9640 = msg("7193", dup303); - -var msg9641 = msg("7194", dup303); - -var msg9642 = msg("7195", dup303); - -var msg9643 = msg("7196", dup222); - -var msg9644 = msg("7197", dup265); - -var msg9645 = msg("7198", dup265); - -var msg9646 = msg("7199", dup267); - -var msg9647 = msg("7200", dup267); - -var msg9648 = msg("7201", dup267); - -var msg9649 = msg("7202", dup267); - -var msg9650 = msg("7203", dup267); - -var msg9651 = msg("7204", dup267); - -var msg9652 = msg("7205", dup267); - -var msg9653 = msg("7206", dup196); - -var msg9654 = msg("7207", dup260); - -var msg9655 = msg("7208", dup196); - -var msg9656 = msg("7209", dup276); - -var msg9657 = msg("7210", dup276); - -var msg9658 = msg("7211", dup276); - -var msg9659 = msg("7212", dup276); - -var msg9660 = msg("7213", dup276); - -var msg9661 = msg("7214", dup276); - -var msg9662 = msg("7215", dup276); - -var msg9663 = msg("7216", dup276); - -var msg9664 = msg("7217", dup276); - -var msg9665 = msg("7218", dup276); - -var msg9666 = msg("7219", dup276); - -var msg9667 = msg("7220", dup276); - -var msg9668 = msg("7221", dup276); - -var msg9669 = msg("7222", dup276); - -var msg9670 = msg("7223", dup276); - -var msg9671 = msg("7224", dup276); - -var msg9672 = msg("7225", dup276); - -var msg9673 = msg("7226", dup276); - -var msg9674 = msg("7227", dup276); - -var msg9675 = msg("7228", dup276); - -var msg9676 = msg("7229", dup276); - -var msg9677 = msg("7230", dup276); - -var msg9678 = msg("7231", dup276); - -var msg9679 = msg("7232", dup276); - -var msg9680 = msg("7233", dup276); - -var msg9681 = msg("7234", dup276); - -var msg9682 = msg("7235", dup276); - -var msg9683 = msg("7236", dup276); - -var msg9684 = msg("7237", dup276); - -var msg9685 = msg("7238", dup276); - -var msg9686 = msg("7239", dup276); - -var msg9687 = msg("7240", dup276); - -var msg9688 = msg("7241", dup276); - -var msg9689 = msg("7242", dup276); - -var msg9690 = msg("7243", dup276); - -var msg9691 = msg("7244", dup276); - -var msg9692 = msg("7245", dup276); - -var msg9693 = msg("7246", dup276); - -var msg9694 = msg("7247", dup276); - -var msg9695 = msg("7248", dup276); - -var msg9696 = msg("7249", dup276); - -var msg9697 = msg("7250", dup276); - -var msg9698 = msg("7251", dup276); - -var msg9699 = msg("7252", dup276); - -var msg9700 = msg("7253", dup276); - -var msg9701 = msg("7254", dup276); - -var msg9702 = msg("7255", dup276); - -var msg9703 = msg("7256", dup276); - -var msg9704 = msg("7257", dup276); - -var msg9705 = msg("7258", dup276); - -var msg9706 = msg("7259", dup276); - -var msg9707 = msg("7260", dup276); - -var msg9708 = msg("7261", dup276); - -var msg9709 = msg("7262", dup276); - -var msg9710 = msg("7263", dup276); - -var msg9711 = msg("7264", dup276); - -var msg9712 = msg("7265", dup276); - -var msg9713 = msg("7266", dup276); - -var msg9714 = msg("7267", dup276); - -var msg9715 = msg("7268", dup276); - -var msg9716 = msg("7269", dup276); - -var msg9717 = msg("7270", dup276); - -var msg9718 = msg("7271", dup276); - -var msg9719 = msg("7272", dup276); - -var msg9720 = msg("7273", dup276); - -var msg9721 = msg("7274", dup276); - -var msg9722 = msg("7275", dup276); - -var msg9723 = msg("7276", dup276); - -var msg9724 = msg("7277", dup276); - -var msg9725 = msg("7278", dup276); - -var msg9726 = msg("7279", dup276); - -var msg9727 = msg("7280", dup276); - -var msg9728 = msg("7281", dup276); - -var msg9729 = msg("7282", dup276); - -var msg9730 = msg("7283", dup276); - -var msg9731 = msg("7284", dup276); - -var msg9732 = msg("7285", dup276); - -var msg9733 = msg("7286", dup276); - -var msg9734 = msg("7287", dup276); - -var msg9735 = msg("7288", dup276); - -var msg9736 = msg("7289", dup276); - -var msg9737 = msg("7290", dup276); - -var msg9738 = msg("7291", dup276); - -var msg9739 = msg("7292", dup276); - -var msg9740 = msg("7293", dup276); - -var msg9741 = msg("7294", dup276); - -var msg9742 = msg("7295", dup276); - -var msg9743 = msg("7296", dup276); - -var msg9744 = msg("7297", dup276); - -var msg9745 = msg("7298", dup276); - -var msg9746 = msg("7299", dup276); - -var msg9747 = msg("7300", dup276); - -var msg9748 = msg("7301", dup276); - -var msg9749 = msg("7302", dup276); - -var msg9750 = msg("7303", dup276); - -var msg9751 = msg("7304", dup276); - -var msg9752 = msg("7305", dup276); - -var msg9753 = msg("7306", dup276); - -var msg9754 = msg("7307", dup276); - -var msg9755 = msg("7308", dup276); - -var msg9756 = msg("7309", dup276); - -var msg9757 = msg("7310", dup276); - -var msg9758 = msg("7311", dup276); - -var msg9759 = msg("7312", dup276); - -var msg9760 = msg("7313", dup276); - -var msg9761 = msg("7314", dup276); - -var msg9762 = msg("7315", dup276); - -var msg9763 = msg("7316", dup276); - -var msg9764 = msg("7317", dup276); - -var msg9765 = msg("7318", dup276); - -var msg9766 = msg("7319", dup276); - -var msg9767 = msg("7320", dup276); - -var msg9768 = msg("7321", dup276); - -var msg9769 = msg("7322", dup276); - -var msg9770 = msg("7323", dup276); - -var msg9771 = msg("7324", dup276); - -var msg9772 = msg("7325", dup276); - -var msg9773 = msg("7326", dup276); - -var msg9774 = msg("7327", dup276); - -var msg9775 = msg("7328", dup276); - -var msg9776 = msg("7329", dup276); - -var msg9777 = msg("7330", dup276); - -var msg9778 = msg("7331", dup276); - -var msg9779 = msg("7332", dup276); - -var msg9780 = msg("7333", dup276); - -var msg9781 = msg("7334", dup276); - -var msg9782 = msg("7335", dup276); - -var msg9783 = msg("7336", dup276); - -var msg9784 = msg("7337", dup276); - -var msg9785 = msg("7338", dup276); - -var msg9786 = msg("7339", dup276); - -var msg9787 = msg("7340", dup276); - -var msg9788 = msg("7341", dup276); - -var msg9789 = msg("7342", dup276); - -var msg9790 = msg("7343", dup276); - -var msg9791 = msg("7344", dup276); - -var msg9792 = msg("7345", dup276); - -var msg9793 = msg("7346", dup276); - -var msg9794 = msg("7347", dup276); - -var msg9795 = msg("7348", dup276); - -var msg9796 = msg("7349", dup276); - -var msg9797 = msg("7350", dup276); - -var msg9798 = msg("7351", dup276); - -var msg9799 = msg("7352", dup276); - -var msg9800 = msg("7353", dup276); - -var msg9801 = msg("7354", dup276); - -var msg9802 = msg("7355", dup276); - -var msg9803 = msg("7356", dup276); - -var msg9804 = msg("7357", dup276); - -var msg9805 = msg("7358", dup276); - -var msg9806 = msg("7359", dup276); - -var msg9807 = msg("7360", dup276); - -var msg9808 = msg("7361", dup276); - -var msg9809 = msg("7362", dup276); - -var msg9810 = msg("7363", dup276); - -var msg9811 = msg("7364", dup276); - -var msg9812 = msg("7365", dup276); - -var msg9813 = msg("7366", dup276); - -var msg9814 = msg("7367", dup276); - -var msg9815 = msg("7368", dup276); - -var msg9816 = msg("7369", dup276); - -var msg9817 = msg("7370", dup276); - -var msg9818 = msg("7371", dup276); - -var msg9819 = msg("7372", dup276); - -var msg9820 = msg("7373", dup276); - -var msg9821 = msg("7374", dup276); - -var msg9822 = msg("7375", dup276); - -var msg9823 = msg("7376", dup276); - -var msg9824 = msg("7377", dup276); - -var msg9825 = msg("7378", dup276); - -var msg9826 = msg("7379", dup276); - -var msg9827 = msg("7380", dup276); - -var msg9828 = msg("7381", dup276); - -var msg9829 = msg("7382", dup276); - -var msg9830 = msg("7383", dup276); - -var msg9831 = msg("7384", dup276); - -var msg9832 = msg("7385", dup276); - -var msg9833 = msg("7386", dup276); - -var msg9834 = msg("7387", dup276); - -var msg9835 = msg("7388", dup276); - -var msg9836 = msg("7389", dup276); - -var msg9837 = msg("7390", dup276); - -var msg9838 = msg("7391", dup276); - -var msg9839 = msg("7392", dup276); - -var msg9840 = msg("7393", dup276); - -var msg9841 = msg("7394", dup276); - -var msg9842 = msg("7395", dup276); - -var msg9843 = msg("7396", dup276); - -var msg9844 = msg("7397", dup276); - -var msg9845 = msg("7398", dup276); - -var msg9846 = msg("7399", dup276); - -var msg9847 = msg("7400", dup276); - -var msg9848 = msg("7401", dup276); - -var msg9849 = msg("7402", dup276); - -var msg9850 = msg("7403", dup276); - -var msg9851 = msg("7404", dup276); - -var msg9852 = msg("7405", dup276); - -var msg9853 = msg("7406", dup276); - -var msg9854 = msg("7407", dup276); - -var msg9855 = msg("7408", dup276); - -var msg9856 = msg("7409", dup276); - -var msg9857 = msg("7410", dup276); - -var msg9858 = msg("7411", dup276); - -var msg9859 = msg("7412", dup276); - -var msg9860 = msg("7413", dup276); - -var msg9861 = msg("7414", dup276); - -var msg9862 = msg("7415", dup276); - -var msg9863 = msg("7416", dup276); - -var msg9864 = msg("7417", dup276); - -var msg9865 = msg("7418", dup276); - -var msg9866 = msg("7419", dup276); - -var msg9867 = msg("7420", dup276); - -var msg9868 = msg("7421", dup196); - -var msg9869 = msg("7422", dup287); - -var msg9870 = msg("7423", dup287); - -var msg9871 = msg("7424", dup287); - -var msg9872 = msg("7425", dup265); - -var msg9873 = msg("7426", dup265); - -var msg9874 = msg("7427", dup265); - -var msg9875 = msg("7428", dup265); - -var msg9876 = msg("7429", dup265); - -var msg9877 = msg("7430", dup265); - -var msg9878 = msg("7431", dup265); - -var msg9879 = msg("7432", dup265); - -var msg9880 = msg("7433", dup265); - -var msg9881 = msg("7434", dup265); - -var msg9882 = msg("7435", dup265); - -var msg9883 = msg("7436", dup265); - -var msg9884 = msg("7437", dup265); - -var msg9885 = msg("7438", dup265); - -var msg9886 = msg("7439", dup265); - -var msg9887 = msg("7440", dup265); - -var msg9888 = msg("7441", dup265); - -var msg9889 = msg("7442", dup265); - -var msg9890 = msg("7443", dup265); - -var msg9891 = msg("7444", dup265); - -var msg9892 = msg("7445", dup265); - -var msg9893 = msg("7446", dup265); - -var msg9894 = msg("7447", dup265); - -var msg9895 = msg("7448", dup265); - -var msg9896 = msg("7449", dup265); - -var msg9897 = msg("7450", dup265); - -var msg9898 = msg("7451", dup265); - -var msg9899 = msg("7452", dup265); - -var msg9900 = msg("7453", dup265); - -var msg9901 = msg("7454", dup265); - -var msg9902 = msg("7455", dup265); - -var msg9903 = msg("7456", dup265); - -var msg9904 = msg("7457", dup265); - -var msg9905 = msg("7458", dup265); - -var msg9906 = msg("7459", dup265); - -var msg9907 = msg("7460", dup265); - -var msg9908 = msg("7461", dup265); - -var msg9909 = msg("7462", dup265); - -var msg9910 = msg("7463", dup265); - -var msg9911 = msg("7464", dup265); - -var msg9912 = msg("7465", dup265); - -var msg9913 = msg("7466", dup265); - -var msg9914 = msg("7467", dup265); - -var msg9915 = msg("7468", dup265); - -var msg9916 = msg("7469", dup265); - -var msg9917 = msg("7470", dup265); - -var msg9918 = msg("7471", dup265); - -var msg9919 = msg("7472", dup265); - -var msg9920 = msg("7473", dup265); - -var msg9921 = msg("7474", dup265); - -var msg9922 = msg("7475", dup265); - -var msg9923 = msg("7476", dup265); - -var msg9924 = msg("7477", dup265); - -var msg9925 = msg("7478", dup265); - -var msg9926 = msg("7479", dup265); - -var msg9927 = msg("7480", dup265); - -var msg9928 = msg("7481", dup265); - -var msg9929 = msg("7482", dup265); - -var msg9930 = msg("7483", dup265); - -var msg9931 = msg("7484", dup265); - -var msg9932 = msg("7485", dup265); - -var msg9933 = msg("7486", dup265); - -var msg9934 = msg("7487", dup265); - -var msg9935 = msg("7488", dup265); - -var msg9936 = msg("7489", dup265); - -var msg9937 = msg("7490", dup265); - -var msg9938 = msg("7491", dup265); - -var msg9939 = msg("7492", dup265); - -var msg9940 = msg("7493", dup265); - -var msg9941 = msg("7494", dup265); - -var msg9942 = msg("7495", dup265); - -var msg9943 = msg("7496", dup265); - -var msg9944 = msg("7497", dup265); - -var msg9945 = msg("7498", dup265); - -var msg9946 = msg("7499", dup265); - -var msg9947 = msg("7500", dup265); - -var msg9948 = msg("7501", dup265); - -var msg9949 = msg("7502", dup265); - -var msg9950 = msg("7503", dup265); - -var msg9951 = msg("7504", dup303); - -var msg9952 = msg("7505", dup303); - -var msg9953 = msg("7506", dup303); - -var msg9954 = msg("7507", dup303); - -var msg9955 = msg("7508", dup303); - -var msg9956 = msg("7509", dup303); - -var msg9957 = msg("7510", dup303); - -var msg9958 = msg("7511", dup303); - -var msg9959 = msg("7512", dup303); - -var msg9960 = msg("7513", dup303); - -var msg9961 = msg("7514", dup303); - -var msg9962 = msg("7515", dup303); - -var msg9963 = msg("7516", dup303); - -var msg9964 = msg("7517", dup303); - -var msg9965 = msg("7518", dup303); - -var msg9966 = msg("7519", dup303); - -var msg9967 = msg("7520", dup303); - -var msg9968 = msg("7521", dup303); - -var msg9969 = msg("7522", dup303); - -var msg9970 = msg("7523", dup303); - -var msg9971 = msg("7524", dup303); - -var msg9972 = msg("7525", dup303); - -var msg9973 = msg("7526", dup303); - -var msg9974 = msg("7527", dup303); - -var msg9975 = msg("7528", dup303); - -var msg9976 = msg("7529", dup303); - -var msg9977 = msg("7530", dup303); - -var msg9978 = msg("7531", dup303); - -var msg9979 = msg("7532", dup303); - -var msg9980 = msg("7533", dup303); - -var msg9981 = msg("7534", dup303); - -var msg9982 = msg("7535", dup303); - -var msg9983 = msg("7536", dup303); - -var msg9984 = msg("7537", dup303); - -var msg9985 = msg("7538", dup303); - -var msg9986 = msg("7539", dup303); - -var msg9987 = msg("7540", dup303); - -var msg9988 = msg("7541", dup303); - -var msg9989 = msg("7542", dup303); - -var msg9990 = msg("7543", dup303); - -var msg9991 = msg("7544", dup303); - -var msg9992 = msg("7545", dup303); - -var msg9993 = msg("7546", dup303); - -var msg9994 = msg("7547", dup303); - -var msg9995 = msg("7548", dup303); - -var msg9996 = msg("7549", dup303); - -var msg9997 = msg("7550", dup303); - -var msg9998 = msg("7551", dup303); - -var msg9999 = msg("7552", dup303); - -var msg10000 = msg("7553", dup303); - -var msg10001 = msg("7554", dup303); - -var msg10002 = msg("7555", dup303); - -var msg10003 = msg("7556", dup303); - -var msg10004 = msg("7557", dup303); - -var msg10005 = msg("7558", dup303); - -var msg10006 = msg("7559", dup303); - -var msg10007 = msg("7560", dup303); - -var msg10008 = msg("7561", dup303); - -var msg10009 = msg("7562", dup303); - -var msg10010 = msg("7563", dup303); - -var msg10011 = msg("7564", dup303); - -var msg10012 = msg("7565", dup303); - -var msg10013 = msg("7566", dup303); - -var msg10014 = msg("7567", dup303); - -var msg10015 = msg("7568", dup303); - -var msg10016 = msg("7569", dup303); - -var msg10017 = msg("7570", dup303); - -var msg10018 = msg("7571", dup303); - -var msg10019 = msg("7572", dup303); - -var msg10020 = msg("7573", dup303); - -var msg10021 = msg("7574", dup303); - -var msg10022 = msg("7575", dup303); - -var msg10023 = msg("7576", dup303); - -var msg10024 = msg("7577", dup303); - -var msg10025 = msg("7578", dup303); - -var msg10026 = msg("7579", dup303); - -var msg10027 = msg("7580", dup303); - -var msg10028 = msg("7581", dup303); - -var msg10029 = msg("7582", dup303); - -var msg10030 = msg("7583", dup303); - -var msg10031 = msg("7584", dup303); - -var msg10032 = msg("7585", dup303); - -var msg10033 = msg("7586", dup303); - -var msg10034 = msg("7587", dup303); - -var msg10035 = msg("7588", dup303); - -var msg10036 = msg("7589", dup303); - -var msg10037 = msg("7590", dup303); - -var msg10038 = msg("7591", dup303); - -var msg10039 = msg("7592", dup303); - -var msg10040 = msg("7593", dup303); - -var msg10041 = msg("7594", dup303); - -var msg10042 = msg("7595", dup303); - -var msg10043 = msg("7596", dup303); - -var msg10044 = msg("7597", dup303); - -var msg10045 = msg("7598", dup303); - -var msg10046 = msg("7599", dup303); - -var msg10047 = msg("7600", dup303); - -var msg10048 = msg("7601", dup303); - -var msg10049 = msg("7602", dup303); - -var msg10050 = msg("7603", dup303); - -var msg10051 = msg("7604", dup205); - -var msg10052 = msg("7605", dup205); - -var msg10053 = msg("7606", dup205); - -var msg10054 = msg("7607", dup205); - -var msg10055 = msg("7608", dup205); - -var msg10056 = msg("7609", dup205); - -var msg10057 = msg("7610", dup205); - -var msg10058 = msg("7611", dup205); - -var msg10059 = msg("7612", dup205); - -var msg10060 = msg("7613", dup205); - -var msg10061 = msg("7614", dup205); - -var msg10062 = msg("7615", dup205); - -var msg10063 = msg("7616", dup205); - -var msg10064 = msg("7617", dup205); - -var msg10065 = msg("7618", dup205); - -var msg10066 = msg("7619", dup205); - -var msg10067 = msg("7620", dup205); - -var msg10068 = msg("7621", dup205); - -var msg10069 = msg("7622", dup205); - -var msg10070 = msg("7623", dup205); - -var msg10071 = msg("7624", dup205); - -var msg10072 = msg("7625", dup205); - -var msg10073 = msg("7626", dup205); - -var msg10074 = msg("7627", dup205); - -var msg10075 = msg("7628", dup205); - -var msg10076 = msg("7629", dup205); - -var msg10077 = msg("7630", dup205); - -var msg10078 = msg("7631", dup205); - -var msg10079 = msg("7632", dup205); - -var msg10080 = msg("7633", dup205); - -var msg10081 = msg("7634", dup205); - -var msg10082 = msg("7635", dup205); - -var msg10083 = msg("7636", dup205); - -var msg10084 = msg("7637", dup205); - -var msg10085 = msg("7638", dup205); - -var msg10086 = msg("7639", dup205); - -var msg10087 = msg("7640", dup205); - -var msg10088 = msg("7641", dup205); - -var msg10089 = msg("7642", dup205); - -var msg10090 = msg("7643", dup205); - -var msg10091 = msg("7644", dup205); - -var msg10092 = msg("7645", dup205); - -var msg10093 = msg("7646", dup205); - -var msg10094 = msg("7647", dup205); - -var msg10095 = msg("7648", dup205); - -var msg10096 = msg("7649", dup205); - -var msg10097 = msg("7650", dup205); - -var msg10098 = msg("7651", dup205); - -var msg10099 = msg("7652", dup205); - -var msg10100 = msg("7653", dup205); - -var msg10101 = msg("7654", dup205); - -var msg10102 = msg("7655", dup205); - -var msg10103 = msg("7656", dup205); - -var msg10104 = msg("7657", dup205); - -var msg10105 = msg("7658", dup205); - -var msg10106 = msg("7659", dup205); - -var msg10107 = msg("7660", dup205); - -var msg10108 = msg("7661", dup205); - -var msg10109 = msg("7662", dup205); - -var msg10110 = msg("7663", dup205); - -var msg10111 = msg("7664", dup205); - -var msg10112 = msg("7665", dup205); - -var msg10113 = msg("7666", dup205); - -var msg10114 = msg("7667", dup205); - -var msg10115 = msg("7668", dup205); - -var msg10116 = msg("7669", dup205); - -var msg10117 = msg("7670", dup205); - -var msg10118 = msg("7671", dup205); - -var msg10119 = msg("7672", dup205); - -var msg10120 = msg("7673", dup205); - -var msg10121 = msg("7674", dup205); - -var msg10122 = msg("7675", dup205); - -var msg10123 = msg("7676", dup205); - -var msg10124 = msg("7677", dup205); - -var msg10125 = msg("7678", dup205); - -var msg10126 = msg("7679", dup205); - -var msg10127 = msg("7680", dup205); - -var msg10128 = msg("7681", dup205); - -var msg10129 = msg("7682", dup205); - -var msg10130 = msg("7683", dup205); - -var msg10131 = msg("7684", dup205); - -var msg10132 = msg("7685", dup205); - -var msg10133 = msg("7686", dup205); - -var msg10134 = msg("7687", dup205); - -var msg10135 = msg("7688", dup205); - -var msg10136 = msg("7689", dup205); - -var msg10137 = msg("7690", dup205); - -var msg10138 = msg("7691", dup205); - -var msg10139 = msg("7692", dup205); - -var msg10140 = msg("7693", dup205); - -var msg10141 = msg("7694", dup205); - -var msg10142 = msg("7695", dup205); - -var msg10143 = msg("7696", dup205); - -var msg10144 = msg("7697", dup205); - -var msg10145 = msg("7698", dup205); - -var msg10146 = msg("7699", dup205); - -var msg10147 = msg("7700", dup205); - -var msg10148 = msg("7701", dup205); - -var msg10149 = msg("7702", dup205); - -var msg10150 = msg("7703", dup205); - -var msg10151 = msg("7704", dup205); - -var msg10152 = msg("7705", dup205); - -var msg10153 = msg("7706", dup205); - -var msg10154 = msg("7707", dup205); - -var msg10155 = msg("7708", dup205); - -var msg10156 = msg("7709", dup205); - -var msg10157 = msg("7710", dup205); - -var msg10158 = msg("7711", dup205); - -var msg10159 = msg("7712", dup205); - -var msg10160 = msg("7713", dup205); - -var msg10161 = msg("7714", dup205); - -var msg10162 = msg("7715", dup205); - -var msg10163 = msg("7716", dup205); - -var msg10164 = msg("7717", dup205); - -var msg10165 = msg("7718", dup205); - -var msg10166 = msg("7719", dup205); - -var msg10167 = msg("7720", dup205); - -var msg10168 = msg("7721", dup205); - -var msg10169 = msg("7722", dup205); - -var msg10170 = msg("7723", dup205); - -var msg10171 = msg("7724", dup205); - -var msg10172 = msg("7725", dup205); - -var msg10173 = msg("7726", dup205); - -var msg10174 = msg("7727", dup205); - -var msg10175 = msg("7728", dup205); - -var msg10176 = msg("7729", dup205); - -var msg10177 = msg("7730", dup205); - -var msg10178 = msg("7731", dup205); - -var msg10179 = msg("7732", dup205); - -var msg10180 = msg("7733", dup205); - -var msg10181 = msg("7734", dup205); - -var msg10182 = msg("7735", dup205); - -var msg10183 = msg("7736", dup205); - -var msg10184 = msg("7737", dup205); - -var msg10185 = msg("7738", dup205); - -var msg10186 = msg("7739", dup205); - -var msg10187 = msg("7740", dup205); - -var msg10188 = msg("7741", dup205); - -var msg10189 = msg("7742", dup205); - -var msg10190 = msg("7743", dup205); - -var msg10191 = msg("7744", dup205); - -var msg10192 = msg("7745", dup205); - -var msg10193 = msg("7746", dup205); - -var msg10194 = msg("7747", dup205); - -var msg10195 = msg("7748", dup205); - -var msg10196 = msg("7749", dup205); - -var msg10197 = msg("7750", dup205); - -var msg10198 = msg("7751", dup205); - -var msg10199 = msg("7752", dup205); - -var msg10200 = msg("7753", dup205); - -var msg10201 = msg("7754", dup205); - -var msg10202 = msg("7755", dup205); - -var msg10203 = msg("7756", dup205); - -var msg10204 = msg("7757", dup205); - -var msg10205 = msg("7758", dup205); - -var msg10206 = msg("7759", dup205); - -var msg10207 = msg("7760", dup205); - -var msg10208 = msg("7761", dup205); - -var msg10209 = msg("7762", dup205); - -var msg10210 = msg("7763", dup205); - -var msg10211 = msg("7764", dup205); - -var msg10212 = msg("7765", dup205); - -var msg10213 = msg("7766", dup205); - -var msg10214 = msg("7767", dup205); - -var msg10215 = msg("7768", dup205); - -var msg10216 = msg("7769", dup205); - -var msg10217 = msg("7770", dup205); - -var msg10218 = msg("7771", dup205); - -var msg10219 = msg("7772", dup205); - -var msg10220 = msg("7773", dup205); - -var msg10221 = msg("7774", dup205); - -var msg10222 = msg("7775", dup205); - -var msg10223 = msg("7776", dup205); - -var msg10224 = msg("7777", dup205); - -var msg10225 = msg("7778", dup205); - -var msg10226 = msg("7779", dup205); - -var msg10227 = msg("7780", dup205); - -var msg10228 = msg("7781", dup205); - -var msg10229 = msg("7782", dup205); - -var msg10230 = msg("7783", dup205); - -var msg10231 = msg("7784", dup205); - -var msg10232 = msg("7785", dup205); - -var msg10233 = msg("7786", dup205); - -var msg10234 = msg("7787", dup205); - -var msg10235 = msg("7788", dup205); - -var msg10236 = msg("7789", dup205); - -var msg10237 = msg("7790", dup205); - -var msg10238 = msg("7791", dup205); - -var msg10239 = msg("7792", dup205); - -var msg10240 = msg("7793", dup205); - -var msg10241 = msg("7794", dup205); - -var msg10242 = msg("7795", dup205); - -var msg10243 = msg("7796", dup205); - -var msg10244 = msg("7797", dup205); - -var msg10245 = msg("7798", dup205); - -var msg10246 = msg("7799", dup205); - -var msg10247 = msg("7800", dup205); - -var msg10248 = msg("7801", dup205); - -var msg10249 = msg("7802", dup205); - -var msg10250 = msg("7803", dup205); - -var msg10251 = msg("7804", dup205); - -var msg10252 = msg("7805", dup205); - -var msg10253 = msg("7806", dup205); - -var msg10254 = msg("7807", dup205); - -var msg10255 = msg("7808", dup205); - -var msg10256 = msg("7809", dup205); - -var msg10257 = msg("7810", dup205); - -var msg10258 = msg("7811", dup205); - -var msg10259 = msg("7812", dup205); - -var msg10260 = msg("7813", dup205); - -var msg10261 = msg("7814", dup205); - -var msg10262 = msg("7815", dup205); - -var msg10263 = msg("7816", dup205); - -var msg10264 = msg("7817", dup205); - -var msg10265 = msg("7818", dup205); - -var msg10266 = msg("7819", dup205); - -var msg10267 = msg("7820", dup205); - -var msg10268 = msg("7821", dup205); - -var msg10269 = msg("7822", dup205); - -var msg10270 = msg("7823", dup303); - -var msg10271 = msg("7824", dup303); - -var msg10272 = msg("7825", dup303); - -var msg10273 = msg("7826", dup303); - -var msg10274 = msg("7827", dup303); - -var msg10275 = msg("7828", dup303); - -var msg10276 = msg("7829", dup303); - -var msg10277 = msg("7830", dup303); - -var msg10278 = msg("7831", dup303); - -var msg10279 = msg("7832", dup303); - -var msg10280 = msg("7833", dup303); - -var msg10281 = msg("7834", dup303); - -var msg10282 = msg("7835", dup303); - -var msg10283 = msg("7836", dup303); - -var msg10284 = msg("7837", dup303); - -var msg10285 = msg("7838", dup303); - -var msg10286 = msg("7839", dup303); - -var msg10287 = msg("7840", dup303); - -var msg10288 = msg("7841", dup303); - -var msg10289 = msg("7842", dup303); - -var msg10290 = msg("7843", dup303); - -var msg10291 = msg("7844", dup303); - -var msg10292 = msg("7845", dup303); - -var msg10293 = msg("7846", dup303); - -var msg10294 = msg("7847", dup303); - -var msg10295 = msg("7848", dup303); - -var msg10296 = msg("7849", dup303); - -var msg10297 = msg("7850", dup303); - -var msg10298 = msg("7851", dup303); - -var msg10299 = msg("7852", dup303); - -var msg10300 = msg("7853", dup303); - -var msg10301 = msg("7854", dup303); - -var msg10302 = msg("7855", dup303); - -var msg10303 = msg("7856", dup303); - -var msg10304 = msg("7857", dup303); - -var msg10305 = msg("7858", dup196); - -var msg10306 = msg("7859", dup196); - -var msg10307 = msg("7860", dup196); - -var msg10308 = msg("7861", dup196); - -var msg10309 = msg("7862", dup265); - -var msg10310 = msg("7863", dup265); - -var msg10311 = msg("7864", dup265); - -var msg10312 = msg("7865", dup265); - -var msg10313 = msg("7866", dup265); - -var msg10314 = msg("7867", dup265); - -var msg10315 = msg("7868", dup265); - -var msg10316 = msg("7869", dup265); - -var msg10317 = msg("7870", dup265); - -var msg10318 = msg("7871", dup265); - -var msg10319 = msg("7872", dup265); - -var msg10320 = msg("7873", dup265); - -var msg10321 = msg("7874", dup265); - -var msg10322 = msg("7875", dup265); - -var msg10323 = msg("7876", dup265); - -var msg10324 = msg("7877", dup265); - -var msg10325 = msg("7878", dup265); - -var msg10326 = msg("7879", dup265); - -var msg10327 = msg("7880", dup265); - -var msg10328 = msg("7881", dup265); - -var msg10329 = msg("7882", dup265); - -var msg10330 = msg("7883", dup265); - -var msg10331 = msg("7884", dup265); - -var msg10332 = msg("7885", dup265); - -var msg10333 = msg("7886", dup265); - -var msg10334 = msg("7887", dup265); - -var msg10335 = msg("7888", dup265); - -var msg10336 = msg("7889", dup265); - -var msg10337 = msg("7890", dup265); - -var msg10338 = msg("7891", dup265); - -var msg10339 = msg("7892", dup265); - -var msg10340 = msg("7893", dup265); - -var msg10341 = msg("7894", dup265); - -var msg10342 = msg("7895", dup265); - -var msg10343 = msg("7896", dup265); - -var msg10344 = msg("7897", dup265); - -var msg10345 = msg("7898", dup265); - -var msg10346 = msg("7899", dup265); - -var msg10347 = msg("7900", dup265); - -var msg10348 = msg("7901", dup265); - -var msg10349 = msg("7902", dup265); - -var msg10350 = msg("7903", dup265); - -var msg10351 = msg("7904", dup265); - -var msg10352 = msg("7905", dup265); - -var msg10353 = msg("7906", dup265); - -var msg10354 = msg("7907", dup265); - -var msg10355 = msg("7908", dup265); - -var msg10356 = msg("7909", dup265); - -var msg10357 = msg("7910", dup265); - -var msg10358 = msg("7911", dup265); - -var msg10359 = msg("7912", dup265); - -var msg10360 = msg("7913", dup265); - -var msg10361 = msg("7914", dup265); - -var msg10362 = msg("7915", dup265); - -var msg10363 = msg("7916", dup265); - -var msg10364 = msg("7917", dup265); - -var msg10365 = msg("7918", dup265); - -var msg10366 = msg("7919", dup265); - -var msg10367 = msg("7920", dup265); - -var msg10368 = msg("7921", dup265); - -var msg10369 = msg("7922", dup265); - -var msg10370 = msg("7923", dup265); - -var msg10371 = msg("7924", dup265); - -var msg10372 = msg("7925", dup265); - -var msg10373 = msg("7926", dup265); - -var msg10374 = msg("7927", dup265); - -var msg10375 = msg("7928", dup265); - -var msg10376 = msg("7929", dup265); - -var msg10377 = msg("7930", dup265); - -var msg10378 = msg("7931", dup265); - -var msg10379 = msg("7932", dup265); - -var msg10380 = msg("7933", dup265); - -var msg10381 = msg("7934", dup265); - -var msg10382 = msg("7935", dup265); - -var msg10383 = msg("7936", dup265); - -var msg10384 = msg("7937", dup265); - -var msg10385 = msg("7938", dup265); - -var msg10386 = msg("7939", dup265); - -var msg10387 = msg("7940", dup265); - -var msg10388 = msg("7941", dup265); - -var msg10389 = msg("7942", dup265); - -var msg10390 = msg("7943", dup265); - -var msg10391 = msg("7944", dup265); - -var msg10392 = msg("7945", dup265); - -var msg10393 = msg("7946", dup265); - -var msg10394 = msg("7947", dup265); - -var msg10395 = msg("7948", dup265); - -var msg10396 = msg("7949", dup265); - -var msg10397 = msg("7950", dup265); - -var msg10398 = msg("7951", dup265); - -var msg10399 = msg("7952", dup265); - -var msg10400 = msg("7953", dup265); - -var msg10401 = msg("7954", dup265); - -var msg10402 = msg("7955", dup265); - -var msg10403 = msg("7956", dup265); - -var msg10404 = msg("7957", dup265); - -var msg10405 = msg("7958", dup265); - -var msg10406 = msg("7959", dup265); - -var msg10407 = msg("7960", dup265); - -var msg10408 = msg("7961", dup265); - -var msg10409 = msg("7962", dup265); - -var msg10410 = msg("7963", dup265); - -var msg10411 = msg("7964", dup265); - -var msg10412 = msg("7965", dup265); - -var msg10413 = msg("7966", dup265); - -var msg10414 = msg("7967", dup265); - -var msg10415 = msg("7968", dup265); - -var msg10416 = msg("7969", dup265); - -var msg10417 = msg("7970", dup265); - -var msg10418 = msg("7971", dup265); - -var msg10419 = msg("7972", dup265); - -var msg10420 = msg("7973", dup265); - -var msg10421 = msg("7974", dup265); - -var msg10422 = msg("7975", dup265); - -var msg10423 = msg("7976", dup265); - -var msg10424 = msg("7977", dup265); - -var msg10425 = msg("7978", dup265); - -var msg10426 = msg("7979", dup265); - -var msg10427 = msg("7980", dup265); - -var msg10428 = msg("7981", dup265); - -var msg10429 = msg("7982", dup265); - -var msg10430 = msg("7983", dup265); - -var msg10431 = msg("7984", dup265); - -var msg10432 = msg("7985", dup265); - -var msg10433 = msg("7986", dup265); - -var msg10434 = msg("7987", dup265); - -var msg10435 = msg("7988", dup265); - -var msg10436 = msg("7989", dup265); - -var msg10437 = msg("7990", dup265); - -var msg10438 = msg("7991", dup265); - -var msg10439 = msg("7992", dup265); - -var msg10440 = msg("7993", dup265); - -var msg10441 = msg("7994", dup265); - -var msg10442 = msg("7995", dup265); - -var msg10443 = msg("7996", dup265); - -var msg10444 = msg("7997", dup265); - -var msg10445 = msg("7998", dup265); - -var msg10446 = msg("7999", dup265); - -var msg10447 = msg("8000", dup265); - -var msg10448 = msg("8001", dup265); - -var msg10449 = msg("8002", dup265); - -var msg10450 = msg("8003", dup265); - -var msg10451 = msg("8004", dup265); - -var msg10452 = msg("8005", dup265); - -var msg10453 = msg("8006", dup265); - -var msg10454 = msg("8007", dup265); - -var msg10455 = msg("8008", dup265); - -var msg10456 = msg("8009", dup265); - -var msg10457 = msg("8010", dup265); - -var msg10458 = msg("8011", dup265); - -var msg10459 = msg("8012", dup265); - -var msg10460 = msg("8013", dup265); - -var msg10461 = msg("8014", dup265); - -var msg10462 = msg("8015", dup265); - -var msg10463 = msg("8016", dup265); - -var msg10464 = msg("8017", dup265); - -var msg10465 = msg("8018", dup265); - -var msg10466 = msg("8019", dup265); - -var msg10467 = msg("8020", dup265); - -var msg10468 = msg("8021", dup265); - -var msg10469 = msg("8022", dup265); - -var msg10470 = msg("8023", dup265); - -var msg10471 = msg("8024", dup265); - -var msg10472 = msg("8025", dup265); - -var msg10473 = msg("8026", dup265); - -var msg10474 = msg("8027", dup265); - -var msg10475 = msg("8028", dup265); - -var msg10476 = msg("8029", dup265); - -var msg10477 = msg("8030", dup265); - -var msg10478 = msg("8031", dup265); - -var msg10479 = msg("8032", dup265); - -var msg10480 = msg("8033", dup265); - -var msg10481 = msg("8034", dup265); - -var msg10482 = msg("8035", dup265); - -var msg10483 = msg("8036", dup265); - -var msg10484 = msg("8037", dup265); - -var msg10485 = msg("8038", dup265); - -var msg10486 = msg("8039", dup265); - -var msg10487 = msg("8040", dup265); - -var msg10488 = msg("8041", dup265); - -var msg10489 = msg("8042", dup265); - -var msg10490 = msg("8043", dup265); - -var msg10491 = msg("8044", dup265); - -var msg10492 = msg("8045", dup265); - -var msg10493 = msg("8046", dup265); - -var msg10494 = msg("8047", dup265); - -var msg10495 = msg("8048", dup265); - -var msg10496 = msg("8049", dup265); - -var msg10497 = msg("8050", dup265); - -var msg10498 = msg("8051", dup265); - -var msg10499 = msg("8052", dup265); - -var msg10500 = msg("8053", dup265); - -var msg10501 = msg("8054", dup265); - -var msg10502 = msg("8055", dup265); - -var msg10503 = msg("8056", dup198); - -var msg10504 = msg("8057", dup198); - -var msg10505 = msg("8058", dup265); - -var msg10506 = msg("8059", dup260); - -var msg10507 = msg("8060", dup197); - -var msg10508 = msg("8061", dup265); - -var msg10509 = msg("8062", dup265); - -var msg10510 = msg("8063", dup265); - -var msg10511 = msg("8064", dup265); - -var msg10512 = msg("8065", dup265); - -var msg10513 = msg("8066", dup265); - -var msg10514 = msg("8067", dup265); - -var msg10515 = msg("8068", dup265); - -var msg10516 = msg("8069", dup265); - -var msg10517 = msg("8070", dup265); - -var msg10518 = msg("8071", dup303); - -var msg10519 = msg("8072", dup303); - -var msg10520 = msg("8073", dup303); - -var msg10521 = msg("8074", dup205); - -var msg10522 = msg("8075", dup205); - -var msg10523 = msg("8076", dup205); - -var msg10524 = msg("8077", dup205); - -var msg10525 = msg("8078", dup205); - -var msg10526 = msg("8079", dup205); - -var msg10527 = msg("8080", dup205); - -var msg10528 = msg("8081", dup194); - -var msg10529 = msg("8082", dup196); - -var msg10530 = msg("8083", dup197); - -var msg10531 = msg("8084", dup265); - -var msg10532 = msg("8085", dup267); - -var msg10533 = msg("8086", dup267); - -var msg10534 = msg("8087", dup201); - -var msg10535 = msg("8088", dup267); - -var msg10536 = msg("8089", dup267); - -var msg10537 = msg("8090", dup201); - -var msg10538 = msg("8091", dup267); - -var msg10539 = msg("8092", dup198); - -var msg10540 = msg("8093", dup276); - -var msg10541 = msg("8094", dup276); - -var msg10542 = msg("8095", dup276); - -var msg10543 = msg("8096", dup276); - -var msg10544 = msg("8097", dup276); - -var msg10545 = msg("8098", dup276); - -var msg10546 = msg("8099", dup276); - -var msg10547 = msg("8100", dup276); - -var msg10548 = msg("8101", dup276); - -var msg10549 = msg("8102", dup276); - -var msg10550 = msg("8103", dup276); - -var msg10551 = msg("8104", dup276); - -var msg10552 = msg("8105", dup276); - -var msg10553 = msg("8106", dup276); - -var msg10554 = msg("8107", dup276); - -var msg10555 = msg("8108", dup276); - -var msg10556 = msg("8109", dup276); - -var msg10557 = msg("8110", dup276); - -var msg10558 = msg("8111", dup276); - -var msg10559 = msg("8112", dup276); - -var msg10560 = msg("8113", dup276); - -var msg10561 = msg("8114", dup276); - -var msg10562 = msg("8115", dup276); - -var msg10563 = msg("8116", dup276); - -var msg10564 = msg("8117", dup276); - -var msg10565 = msg("8118", dup276); - -var msg10566 = msg("8119", dup276); - -var msg10567 = msg("8120", dup276); - -var msg10568 = msg("8121", dup276); - -var msg10569 = msg("8122", dup276); - -var msg10570 = msg("8123", dup276); - -var msg10571 = msg("8124", dup276); - -var msg10572 = msg("8125", dup276); - -var msg10573 = msg("8126", dup276); - -var msg10574 = msg("8127", dup276); - -var msg10575 = msg("8128", dup276); - -var msg10576 = msg("8129", dup276); - -var msg10577 = msg("8130", dup276); - -var msg10578 = msg("8131", dup276); - -var msg10579 = msg("8132", dup276); - -var msg10580 = msg("8133", dup276); - -var msg10581 = msg("8134", dup276); - -var msg10582 = msg("8135", dup276); - -var msg10583 = msg("8136", dup276); - -var msg10584 = msg("8137", dup276); - -var msg10585 = msg("8138", dup276); - -var msg10586 = msg("8139", dup276); - -var msg10587 = msg("8140", dup276); - -var msg10588 = msg("8141", dup276); - -var msg10589 = msg("8142", dup276); - -var msg10590 = msg("8143", dup276); - -var msg10591 = msg("8144", dup276); - -var msg10592 = msg("8145", dup276); - -var msg10593 = msg("8146", dup276); - -var msg10594 = msg("8147", dup276); - -var msg10595 = msg("8148", dup276); - -var msg10596 = msg("8149", dup276); - -var msg10597 = msg("8150", dup276); - -var msg10598 = msg("8151", dup276); - -var msg10599 = msg("8152", dup276); - -var msg10600 = msg("8153", dup276); - -var msg10601 = msg("8154", dup276); - -var msg10602 = msg("8155", dup276); - -var msg10603 = msg("8156", dup276); - -var msg10604 = msg("8157", dup276); - -var msg10605 = msg("8158", dup276); - -var msg10606 = msg("8159", dup276); - -var msg10607 = msg("8160", dup276); - -var msg10608 = msg("8161", dup276); - -var msg10609 = msg("8162", dup276); - -var msg10610 = msg("8163", dup276); - -var msg10611 = msg("8164", dup276); - -var msg10612 = msg("8165", dup276); - -var msg10613 = msg("8166", dup276); - -var msg10614 = msg("8167", dup276); - -var msg10615 = msg("8168", dup276); - -var msg10616 = msg("8169", dup276); - -var msg10617 = msg("8170", dup276); - -var msg10618 = msg("8171", dup276); - -var msg10619 = msg("8172", dup276); - -var msg10620 = msg("8173", dup276); - -var msg10621 = msg("8174", dup276); - -var msg10622 = msg("8175", dup276); - -var msg10623 = msg("8176", dup276); - -var msg10624 = msg("8177", dup276); - -var msg10625 = msg("8178", dup276); - -var msg10626 = msg("8179", dup276); - -var msg10627 = msg("8180", dup276); - -var msg10628 = msg("8181", dup276); - -var msg10629 = msg("8182", dup276); - -var msg10630 = msg("8183", dup276); - -var msg10631 = msg("8184", dup276); - -var msg10632 = msg("8185", dup276); - -var msg10633 = msg("8186", dup276); - -var msg10634 = msg("8187", dup276); - -var msg10635 = msg("8188", dup276); - -var msg10636 = msg("8189", dup276); - -var msg10637 = msg("8190", dup276); - -var msg10638 = msg("8191", dup276); - -var msg10639 = msg("8192", dup276); - -var msg10640 = msg("8193", dup276); - -var msg10641 = msg("8194", dup276); - -var msg10642 = msg("8195", dup276); - -var msg10643 = msg("8196", dup276); - -var msg10644 = msg("8197", dup276); - -var msg10645 = msg("8198", dup276); - -var msg10646 = msg("8199", dup276); - -var msg10647 = msg("8200", dup276); - -var msg10648 = msg("8201", dup276); - -var msg10649 = msg("8202", dup276); - -var msg10650 = msg("8203", dup276); - -var msg10651 = msg("8204", dup276); - -var msg10652 = msg("8205", dup276); - -var msg10653 = msg("8206", dup276); - -var msg10654 = msg("8207", dup276); - -var msg10655 = msg("8208", dup276); - -var msg10656 = msg("8209", dup276); - -var msg10657 = msg("8210", dup276); - -var msg10658 = msg("8211", dup276); - -var msg10659 = msg("8212", dup276); - -var msg10660 = msg("8213", dup276); - -var msg10661 = msg("8214", dup276); - -var msg10662 = msg("8215", dup276); - -var msg10663 = msg("8216", dup276); - -var msg10664 = msg("8217", dup276); - -var msg10665 = msg("8218", dup276); - -var msg10666 = msg("8219", dup276); - -var msg10667 = msg("8220", dup276); - -var msg10668 = msg("8221", dup276); - -var msg10669 = msg("8222", dup276); - -var msg10670 = msg("8223", dup276); - -var msg10671 = msg("8224", dup276); - -var msg10672 = msg("8225", dup276); - -var msg10673 = msg("8226", dup276); - -var msg10674 = msg("8227", dup276); - -var msg10675 = msg("8228", dup276); - -var msg10676 = msg("8229", dup276); - -var msg10677 = msg("8230", dup276); - -var msg10678 = msg("8231", dup276); - -var msg10679 = msg("8232", dup276); - -var msg10680 = msg("8233", dup276); - -var msg10681 = msg("8234", dup276); - -var msg10682 = msg("8235", dup276); - -var msg10683 = msg("8236", dup276); - -var msg10684 = msg("8237", dup276); - -var msg10685 = msg("8238", dup276); - -var msg10686 = msg("8239", dup276); - -var msg10687 = msg("8240", dup276); - -var msg10688 = msg("8241", dup276); - -var msg10689 = msg("8242", dup276); - -var msg10690 = msg("8243", dup276); - -var msg10691 = msg("8244", dup276); - -var msg10692 = msg("8245", dup276); - -var msg10693 = msg("8246", dup276); - -var msg10694 = msg("8247", dup276); - -var msg10695 = msg("8248", dup276); - -var msg10696 = msg("8249", dup276); - -var msg10697 = msg("8250", dup276); - -var msg10698 = msg("8251", dup276); - -var msg10699 = msg("8252", dup276); - -var msg10700 = msg("8253", dup276); - -var msg10701 = msg("8254", dup276); - -var msg10702 = msg("8255", dup276); - -var msg10703 = msg("8256", dup276); - -var msg10704 = msg("8257", dup276); - -var msg10705 = msg("8258", dup276); - -var msg10706 = msg("8259", dup276); - -var msg10707 = msg("8260", dup276); - -var msg10708 = msg("8261", dup276); - -var msg10709 = msg("8262", dup276); - -var msg10710 = msg("8263", dup276); - -var msg10711 = msg("8264", dup276); - -var msg10712 = msg("8265", dup276); - -var msg10713 = msg("8266", dup276); - -var msg10714 = msg("8267", dup276); - -var msg10715 = msg("8268", dup276); - -var msg10716 = msg("8269", dup276); - -var msg10717 = msg("8270", dup276); - -var msg10718 = msg("8271", dup276); - -var msg10719 = msg("8272", dup276); - -var msg10720 = msg("8273", dup276); - -var msg10721 = msg("8274", dup276); - -var msg10722 = msg("8275", dup276); - -var msg10723 = msg("8276", dup276); - -var msg10724 = msg("8277", dup276); - -var msg10725 = msg("8278", dup276); - -var msg10726 = msg("8279", dup276); - -var msg10727 = msg("8280", dup276); - -var msg10728 = msg("8281", dup276); - -var msg10729 = msg("8282", dup276); - -var msg10730 = msg("8283", dup276); - -var msg10731 = msg("8284", dup276); - -var msg10732 = msg("8285", dup276); - -var msg10733 = msg("8286", dup276); - -var msg10734 = msg("8287", dup276); - -var msg10735 = msg("8288", dup276); - -var msg10736 = msg("8289", dup276); - -var msg10737 = msg("8290", dup276); - -var msg10738 = msg("8291", dup276); - -var msg10739 = msg("8292", dup276); - -var msg10740 = msg("8293", dup276); - -var msg10741 = msg("8294", dup276); - -var msg10742 = msg("8295", dup276); - -var msg10743 = msg("8296", dup276); - -var msg10744 = msg("8297", dup276); - -var msg10745 = msg("8298", dup276); - -var msg10746 = msg("8299", dup276); - -var msg10747 = msg("8300", dup276); - -var msg10748 = msg("8301", dup276); - -var msg10749 = msg("8302", dup276); - -var msg10750 = msg("8303", dup276); - -var msg10751 = msg("8304", dup276); - -var msg10752 = msg("8305", dup276); - -var msg10753 = msg("8306", dup276); - -var msg10754 = msg("8307", dup276); - -var msg10755 = msg("8308", dup276); - -var msg10756 = msg("8309", dup276); - -var msg10757 = msg("8310", dup276); - -var msg10758 = msg("8311", dup276); - -var msg10759 = msg("8312", dup276); - -var msg10760 = msg("8313", dup276); - -var msg10761 = msg("8314", dup276); - -var msg10762 = msg("8315", dup276); - -var msg10763 = msg("8316", dup276); - -var msg10764 = msg("8317", dup276); - -var msg10765 = msg("8318", dup276); - -var msg10766 = msg("8319", dup276); - -var msg10767 = msg("8320", dup276); - -var msg10768 = msg("8321", dup276); - -var msg10769 = msg("8322", dup276); - -var msg10770 = msg("8323", dup276); - -var msg10771 = msg("8324", dup276); - -var msg10772 = msg("8325", dup276); - -var msg10773 = msg("8326", dup276); - -var msg10774 = msg("8327", dup276); - -var msg10775 = msg("8328", dup276); - -var msg10776 = msg("8329", dup276); - -var msg10777 = msg("8330", dup276); - -var msg10778 = msg("8331", dup276); - -var msg10779 = msg("8332", dup276); - -var msg10780 = msg("8333", dup276); - -var msg10781 = msg("8334", dup276); - -var msg10782 = msg("8335", dup276); - -var msg10783 = msg("8336", dup276); - -var msg10784 = msg("8337", dup276); - -var msg10785 = msg("8338", dup276); - -var msg10786 = msg("8339", dup276); - -var msg10787 = msg("8340", dup276); - -var msg10788 = msg("8341", dup276); - -var msg10789 = msg("8342", dup276); - -var msg10790 = msg("8343", dup276); - -var msg10791 = msg("8344", dup276); - -var msg10792 = msg("8345", dup276); - -var msg10793 = msg("8346", dup276); - -var msg10794 = msg("8347", dup276); - -var msg10795 = msg("8348", dup276); - -var msg10796 = msg("8349", dup265); - -var msg10797 = msg("8350", dup196); - -var msg10798 = msg("8351", dup222); - -var msg10799 = msg("8352", dup303); - -var msg10800 = msg("8353", dup303); - -var msg10801 = msg("8354", dup303); - -var msg10802 = msg("8355", dup303); - -var msg10803 = msg("8356", dup303); - -var msg10804 = msg("8357", dup303); - -var msg10805 = msg("8358", dup303); - -var msg10806 = msg("8359", dup303); - -var msg10807 = msg("8360", dup303); - -var msg10808 = msg("8361", dup205); - -var msg10809 = msg("8362", dup205); - -var msg10810 = msg("8363", dup265); - -var msg10811 = msg("8364", dup265); - -var msg10812 = msg("8365", dup265); - -var msg10813 = msg("8366", dup265); - -var msg10814 = msg("8367", dup265); - -var msg10815 = msg("8368", dup265); - -var msg10816 = msg("8369", dup265); - -var msg10817 = msg("8370", dup265); - -var msg10818 = msg("8371", dup265); - -var msg10819 = msg("8372", dup265); - -var msg10820 = msg("8373", dup265); - -var msg10821 = msg("8374", dup265); - -var msg10822 = msg("8375", dup265); - -var msg10823 = msg("8376", dup265); - -var msg10824 = msg("8377", dup265); - -var msg10825 = msg("8378", dup265); - -var msg10826 = msg("8379", dup265); - -var msg10827 = msg("8380", dup265); - -var msg10828 = msg("8381", dup265); - -var msg10829 = msg("8382", dup265); - -var msg10830 = msg("8383", dup265); - -var msg10831 = msg("8384", dup265); - -var msg10832 = msg("8385", dup265); - -var msg10833 = msg("8386", dup265); - -var msg10834 = msg("8387", dup265); - -var msg10835 = msg("8388", dup265); - -var msg10836 = msg("8389", dup265); - -var msg10837 = msg("8390", dup265); - -var msg10838 = msg("8391", dup265); - -var msg10839 = msg("8392", dup265); - -var msg10840 = msg("8393", dup265); - -var msg10841 = msg("8394", dup265); - -var msg10842 = msg("8395", dup265); - -var msg10843 = msg("8396", dup265); - -var msg10844 = msg("8397", dup265); - -var msg10845 = msg("8398", dup265); - -var msg10846 = msg("8399", dup265); - -var msg10847 = msg("8400", dup265); - -var msg10848 = msg("8401", dup265); - -var msg10849 = msg("8402", dup265); - -var msg10850 = msg("8403", dup265); - -var msg10851 = msg("8404", dup265); - -var msg10852 = msg("8405", dup265); - -var msg10853 = msg("8406", dup265); - -var msg10854 = msg("8407", dup267); - -var msg10855 = msg("8408", dup267); - -var msg10856 = msg("8409", dup265); - -var msg10857 = msg("8410", dup265); - -var msg10858 = msg("8411", dup265); - -var msg10859 = msg("8412", dup265); - -var msg10860 = msg("8413", dup265); - -var msg10861 = msg("8414", dup201); - -var msg10862 = msg("8415", dup222); - -var msg10863 = msg("8416", dup267); - -var msg10864 = msg("8417", dup265); - -var msg10865 = msg("8418", dup265); - -var msg10866 = msg("8419", dup265); - -var msg10867 = msg("8420", dup265); - -var msg10868 = msg("8421", dup265); - -var msg10869 = msg("8422", dup265); - -var msg10870 = msg("8423", dup265); - -var msg10871 = msg("8424", dup265); - -var msg10872 = msg("8425", dup265); - -var msg10873 = msg("8426", dup201); - -var msg10874 = msg("8427", dup201); - -var msg10875 = msg("8428", dup201); - -var msg10876 = msg("8429", dup201); - -var msg10877 = msg("8430", dup201); - -var msg10878 = msg("8431", dup201); - -var msg10879 = msg("8432", dup201); - -var msg10880 = msg("8433", dup201); - -var msg10881 = msg("8434", dup201); - -var msg10882 = msg("8435", dup201); - -var msg10883 = msg("8436", dup201); - -var msg10884 = msg("8437", dup201); - -var msg10885 = msg("8438", dup201); - -var msg10886 = msg("8439", dup201); - -var msg10887 = msg("8440", dup201); - -var msg10888 = msg("8441", dup267); - -var msg10889 = msg("8442", dup250); - -var msg10890 = msg("8443", dup265); - -var msg10891 = msg("8444", dup265); - -var msg10892 = msg("8445", dup265); - -var msg10893 = msg("8446", dup196); - -var msg10894 = msg("8447", dup265); - -var msg10895 = msg("8448", dup267); - -var msg10896 = msg("8449", dup276); - -var msg10897 = msg("8450", dup276); - -var msg10898 = msg("8451", dup276); - -var msg10899 = msg("8452", dup276); - -var msg10900 = msg("8453", dup276); - -var msg10901 = msg("8454", dup276); - -var msg10902 = msg("8455", dup276); - -var msg10903 = msg("8456", dup276); - -var msg10904 = msg("8457", dup276); - -var msg10905 = msg("8458", dup276); - -var msg10906 = msg("8459", dup276); - -var msg10907 = msg("8460", dup276); - -var msg10908 = msg("8461", dup303); - -var msg10909 = msg("8462", dup303); - -var msg10910 = msg("8463", dup303); - -var msg10911 = msg("8464", dup303); - -var msg10912 = msg("8465", dup303); - -var msg10913 = msg("8466", dup303); - -var msg10914 = msg("8467", dup303); - -var msg10915 = msg("8468", dup303); - -var msg10916 = msg("8469", dup303); - -var msg10917 = msg("8470", dup205); - -var msg10918 = msg("8471", dup205); - -var msg10919 = msg("8472", dup205); - -var msg10920 = msg("8473", dup205); - -var msg10921 = msg("8474", dup205); - -var msg10922 = msg("8475", dup205); - -var msg10923 = msg("8476", dup205); - -var msg10924 = msg("8477", dup205); - -var msg10925 = msg("8478", dup265); - -var msg10926 = msg("8479", dup222); - -var msg10927 = msg("8480", dup222); - -var msg10928 = msg("8481", dup198); - -var msg10929 = msg("8482", dup196); - -var msg10930 = msg("8483", dup196); - -var msg10931 = msg("8484", dup301); - -var msg10932 = msg("8485", dup265); - -var msg10933 = msg("8486", dup265); - -var msg10934 = msg("8487", dup265); - -var msg10935 = msg("8488", dup265); - -var msg10936 = msg("8489", dup265); - -var msg10937 = msg("8490", dup265); - -var msg10938 = msg("8491", dup265); - -var msg10939 = msg("8492", dup265); - -var msg10940 = msg("8493", dup265); - -var msg10941 = msg("8494", dup197); - -var msg10942 = msg("8495", dup197); - -var msg10943 = msg("8496", dup240); - -var msg10944 = msg("8497", dup240); - -var msg10945 = msg("8498", dup240); - -var msg10946 = msg("8499", dup240); - -var msg10947 = msg("8500", dup240); - -var msg10948 = msg("8501", dup240); - -var msg10949 = msg("8502", dup240); - -var msg10950 = msg("8503", dup240); - -var msg10951 = msg("8504", dup240); - -var msg10952 = msg("8505", dup240); - -var msg10953 = msg("8506", dup240); - -var msg10954 = msg("8507", dup240); - -var msg10955 = msg("8508", dup240); - -var msg10956 = msg("8509", dup240); - -var msg10957 = msg("8510", dup240); - -var msg10958 = msg("8511", dup240); - -var msg10959 = msg("8512", dup240); - -var msg10960 = msg("8513", dup240); - -var msg10961 = msg("8514", dup240); - -var msg10962 = msg("8515", dup240); - -var msg10963 = msg("8516", dup240); - -var msg10964 = msg("8517", dup240); - -var msg10965 = msg("8518", dup240); - -var msg10966 = msg("8519", dup240); - -var msg10967 = msg("8520", dup240); - -var msg10968 = msg("8521", dup240); - -var msg10969 = msg("8522", dup240); - -var msg10970 = msg("8523", dup240); - -var msg10971 = msg("8524", dup240); - -var msg10972 = msg("8525", dup240); - -var msg10973 = msg("8526", dup240); - -var msg10974 = msg("8527", dup240); - -var msg10975 = msg("8528", dup240); - -var msg10976 = msg("8529", dup240); - -var msg10977 = msg("8530", dup240); - -var msg10978 = msg("8531", dup240); - -var msg10979 = msg("8532", dup240); - -var msg10980 = msg("8533", dup240); - -var msg10981 = msg("8534", dup240); - -var msg10982 = msg("8535", dup240); - -var msg10983 = msg("8536", dup240); - -var msg10984 = msg("8537", dup240); - -var msg10985 = msg("8538", dup240); - -var msg10986 = msg("8539", dup240); - -var msg10987 = msg("8540", dup240); - -var msg10988 = msg("8541", dup222); - -var msg10989 = msg("8542", dup303); - -var msg10990 = msg("8543", dup303); - -var msg10991 = msg("8544", dup303); - -var msg10992 = msg("8545", dup303); - -var msg10993 = msg("8546", dup303); - -var msg10994 = msg("8547", dup205); - -var msg10995 = msg("8548", dup205); - -var msg10996 = msg("8549", dup205); - -var msg10997 = msg("8550", dup222); - -var msg10998 = msg("8551", dup222); - -var msg10999 = msg("8552", dup276); - -var msg11000 = msg("8553", dup276); - -var msg11001 = msg("8554", dup276); - -var msg11002 = msg("8555", dup276); - -var msg11003 = msg("8556", dup276); - -var msg11004 = msg("8557", dup276); - -var msg11005 = msg("8558", dup276); - -var msg11006 = msg("8559", dup276); - -var msg11007 = msg("8560", dup276); - -var msg11008 = msg("8561", dup276); - -var msg11009 = msg("8562", dup276); - -var msg11010 = msg("8563", dup276); - -var msg11011 = msg("8564", dup276); - -var msg11012 = msg("8565", dup276); - -var msg11013 = msg("8566", dup276); - -var msg11014 = msg("8567", dup276); - -var msg11015 = msg("8568", dup276); - -var msg11016 = msg("8569", dup276); - -var msg11017 = msg("8570", dup276); - -var msg11018 = msg("8571", dup276); - -var msg11019 = msg("8572", dup276); - -var msg11020 = msg("8573", dup276); - -var msg11021 = msg("8574", dup276); - -var msg11022 = msg("8575", dup276); - -var msg11023 = msg("8576", dup276); - -var msg11024 = msg("8577", dup276); - -var msg11025 = msg("8578", dup276); - -var msg11026 = msg("8579", dup276); - -var msg11027 = msg("8580", dup276); - -var msg11028 = msg("8581", dup276); - -var msg11029 = msg("8582", dup276); - -var msg11030 = msg("8583", dup276); - -var msg11031 = msg("8584", dup276); - -var msg11032 = msg("8585", dup276); - -var msg11033 = msg("8586", dup276); - -var msg11034 = msg("8587", dup276); - -var msg11035 = msg("8588", dup276); - -var msg11036 = msg("8589", dup276); - -var msg11037 = msg("8590", dup276); - -var msg11038 = msg("8591", dup276); - -var msg11039 = msg("8592", dup276); - -var msg11040 = msg("8593", dup276); - -var msg11041 = msg("8594", dup276); - -var msg11042 = msg("8595", dup276); - -var msg11043 = msg("8596", dup276); - -var msg11044 = msg("8597", dup276); - -var msg11045 = msg("8598", dup276); - -var msg11046 = msg("8599", dup276); - -var msg11047 = msg("8600", dup276); - -var msg11048 = msg("8601", dup276); - -var msg11049 = msg("8602", dup276); - -var msg11050 = msg("8603", dup276); - -var msg11051 = msg("8604", dup276); - -var msg11052 = msg("8605", dup276); - -var msg11053 = msg("8606", dup276); - -var msg11054 = msg("8607", dup276); - -var msg11055 = msg("8608", dup276); - -var msg11056 = msg("8609", dup276); - -var msg11057 = msg("8610", dup276); - -var msg11058 = msg("8611", dup276); - -var msg11059 = msg("8612", dup276); - -var msg11060 = msg("8613", dup276); - -var msg11061 = msg("8614", dup276); - -var msg11062 = msg("8615", dup276); - -var msg11063 = msg("8616", dup276); - -var msg11064 = msg("8617", dup276); - -var msg11065 = msg("8618", dup276); - -var msg11066 = msg("8619", dup276); - -var msg11067 = msg("8620", dup276); - -var msg11068 = msg("8621", dup276); - -var msg11069 = msg("8622", dup276); - -var msg11070 = msg("8623", dup276); - -var msg11071 = msg("8624", dup276); - -var msg11072 = msg("8625", dup276); - -var msg11073 = msg("8626", dup276); - -var msg11074 = msg("8627", dup276); - -var msg11075 = msg("8628", dup276); - -var msg11076 = msg("8629", dup276); - -var msg11077 = msg("8630", dup276); - -var msg11078 = msg("8631", dup276); - -var msg11079 = msg("8632", dup276); - -var msg11080 = msg("8633", dup276); - -var msg11081 = msg("8634", dup276); - -var msg11082 = msg("8635", dup276); - -var msg11083 = msg("8636", dup276); - -var msg11084 = msg("8637", dup276); - -var msg11085 = msg("8638", dup276); - -var msg11086 = msg("8639", dup276); - -var msg11087 = msg("8640", dup276); - -var msg11088 = msg("8641", dup276); - -var msg11089 = msg("8642", dup276); - -var msg11090 = msg("8643", dup276); - -var msg11091 = msg("8644", dup276); - -var msg11092 = msg("8645", dup276); - -var msg11093 = msg("8646", dup276); - -var msg11094 = msg("8647", dup276); - -var msg11095 = msg("8648", dup276); - -var msg11096 = msg("8649", dup276); - -var msg11097 = msg("8650", dup276); - -var msg11098 = msg("8651", dup276); - -var msg11099 = msg("8652", dup276); - -var msg11100 = msg("8653", dup276); - -var msg11101 = msg("8654", dup276); - -var msg11102 = msg("8655", dup276); - -var msg11103 = msg("8656", dup276); - -var msg11104 = msg("8657", dup276); - -var msg11105 = msg("8658", dup276); - -var msg11106 = msg("8659", dup276); - -var msg11107 = msg("8660", dup276); - -var msg11108 = msg("8661", dup276); - -var msg11109 = msg("8662", dup276); - -var msg11110 = msg("8663", dup276); - -var msg11111 = msg("8664", dup276); - -var msg11112 = msg("8665", dup276); - -var msg11113 = msg("8666", dup276); - -var msg11114 = msg("8667", dup276); - -var msg11115 = msg("8668", dup276); - -var msg11116 = msg("8669", dup276); - -var msg11117 = msg("8670", dup276); - -var msg11118 = msg("8671", dup276); - -var msg11119 = msg("8672", dup276); - -var msg11120 = msg("8673", dup276); - -var msg11121 = msg("8674", dup276); - -var msg11122 = msg("8675", dup276); - -var msg11123 = msg("8676", dup276); - -var msg11124 = msg("8677", dup276); - -var msg11125 = msg("8678", dup276); - -var msg11126 = msg("8679", dup276); - -var msg11127 = msg("8680", dup276); - -var msg11128 = msg("8681", dup276); - -var msg11129 = msg("8682", dup276); - -var msg11130 = msg("8683", dup276); - -var msg11131 = msg("8684", dup276); - -var msg11132 = msg("8685", dup276); - -var msg11133 = msg("8686", dup276); - -var msg11134 = msg("8687", dup276); - -var msg11135 = msg("8688", dup276); - -var msg11136 = msg("8689", dup276); - -var msg11137 = msg("8690", dup201); - -var msg11138 = msg("8691", dup276); - -var msg11139 = msg("8692", dup201); - -var msg11140 = msg("8693", dup276); - -var msg11141 = msg("8694", dup201); - -var msg11142 = msg("8695", dup201); - -var msg11143 = msg("8696", dup276); - -var msg11144 = msg("8697", dup201); - -var msg11145 = msg("8698", dup276); - -var msg11146 = msg("8699", dup201); - -var msg11147 = msg("8700", dup265); - -var msg11148 = msg("8701", dup267); - -var msg11149 = msg("8702", dup222); - -var msg11150 = msg("8703", dup222); - -var msg11151 = msg("8704", dup250); - -var msg11152 = msg("8705", dup222); - -var msg11153 = msg("8706", dup222); - -var msg11154 = msg("8707", dup269); - -var msg11155 = msg("8708", dup267); - -var msg11156 = msg("8709", dup198); - -var msg11157 = msg("8710", dup198); - -var msg11158 = msg("8711", dup267); - -var msg11159 = msg("8712", dup269); - -var msg11160 = msg("8713", dup260); - -var msg11161 = msg("8714", dup260); - -var msg11162 = msg("8715", dup260); - -var msg11163 = msg("8716", dup260); - -var msg11164 = msg("8717", dup265); - -var msg11165 = msg("8718", dup265); - -var msg11166 = msg("8719", dup265); - -var msg11167 = msg("8720", dup265); - -var msg11168 = msg("8721", dup265); - -var msg11169 = msg("8722", dup265); - -var msg11170 = msg("8723", dup265); - -var msg11171 = msg("8724", dup265); - -var msg11172 = msg("8725", dup265); - -var msg11173 = msg("8726", dup265); - -var msg11174 = msg("8727", dup265); - -var msg11175 = msg("8728", dup265); - -var msg11176 = msg("8729", dup222); - -var msg11177 = msg("8730", dup198); - -var msg11178 = msg("8731", dup196); - -var msg11179 = msg("8732", dup196); - -var msg11180 = msg("8733", dup196); - -var msg11181 = msg("8734", dup269); - -var msg11182 = msg("8735", dup265); - -var msg11183 = msg("8736", dup265); - -var msg11184 = msg("8737", dup265); - -var msg11185 = msg("8738", dup265); - -var msg11186 = msg("8739", dup265); - -var msg11187 = msg("8740", dup265); - -var msg11188 = msg("8741", dup265); - -var msg11189 = msg("8742", dup265); - -var msg11190 = msg("8743", dup265); - -var msg11191 = msg("8744", dup265); - -var msg11192 = msg("8745", dup265); - -var msg11193 = msg("8746", dup265); - -var msg11194 = msg("8747", dup265); - -var msg11195 = msg("8748", dup265); - -var msg11196 = msg("8749", dup265); - -var msg11197 = msg("8750", dup265); - -var msg11198 = msg("8751", dup265); - -var msg11199 = msg("8752", dup265); - -var msg11200 = msg("8753", dup265); - -var msg11201 = msg("8754", dup265); - -var msg11202 = msg("8755", dup265); - -var msg11203 = msg("8756", dup265); - -var msg11204 = msg("8757", dup265); - -var msg11205 = msg("8758", dup265); - -var msg11206 = msg("8759", dup265); - -var msg11207 = msg("8760", dup265); - -var msg11208 = msg("8761", dup265); - -var msg11209 = msg("8762", dup265); - -var msg11210 = msg("8763", dup265); - -var msg11211 = msg("8764", dup265); - -var msg11212 = msg("8765", dup265); - -var msg11213 = msg("8766", dup265); - -var msg11214 = msg("8767", dup265); - -var msg11215 = msg("8768", dup265); - -var msg11216 = msg("8769", dup265); - -var msg11217 = msg("8770", dup265); - -var msg11218 = msg("8771", dup265); - -var msg11219 = msg("8772", dup265); - -var msg11220 = msg("8773", dup265); - -var msg11221 = msg("8774", dup265); - -var msg11222 = msg("8775", dup265); - -var msg11223 = msg("8776", dup265); - -var msg11224 = msg("8777", dup265); - -var msg11225 = msg("8778", dup265); - -var msg11226 = msg("8779", dup265); - -var msg11227 = msg("8780", dup265); - -var msg11228 = msg("8781", dup265); - -var msg11229 = msg("8782", dup265); - -var msg11230 = msg("8783", dup265); - -var msg11231 = msg("8784", dup265); - -var msg11232 = msg("8785", dup265); - -var msg11233 = msg("8786", dup265); - -var msg11234 = msg("8787", dup265); - -var msg11235 = msg("8788", dup265); - -var msg11236 = msg("8789", dup265); - -var msg11237 = msg("8790", dup265); - -var msg11238 = msg("8791", dup265); - -var msg11239 = msg("8792", dup265); - -var msg11240 = msg("8793", dup265); - -var msg11241 = msg("8794", dup265); - -var msg11242 = msg("8795", dup265); - -var msg11243 = msg("8796", dup265); - -var msg11244 = msg("8797", dup265); - -var msg11245 = msg("8798", dup265); - -var msg11246 = msg("8799", dup265); - -var msg11247 = msg("8800", dup265); - -var msg11248 = msg("8801", dup265); - -var msg11249 = msg("8802", dup265); - -var msg11250 = msg("8803", dup265); - -var msg11251 = msg("8804", dup265); - -var msg11252 = msg("8805", dup265); - -var msg11253 = msg("8806", dup265); - -var msg11254 = msg("8807", dup265); - -var msg11255 = msg("8808", dup265); - -var msg11256 = msg("8809", dup265); - -var msg11257 = msg("8810", dup265); - -var msg11258 = msg("8811", dup265); - -var msg11259 = msg("8812", dup265); - -var msg11260 = msg("8813", dup265); - -var msg11261 = msg("8814", dup265); - -var msg11262 = msg("8815", dup265); - -var msg11263 = msg("8816", dup265); - -var msg11264 = msg("8817", dup265); - -var msg11265 = msg("8818", dup265); - -var msg11266 = msg("8819", dup265); - -var msg11267 = msg("8820", dup265); - -var msg11268 = msg("8821", dup265); - -var msg11269 = msg("8822", dup265); - -var msg11270 = msg("8823", dup265); - -var msg11271 = msg("8824", dup265); - -var msg11272 = msg("8825", dup265); - -var msg11273 = msg("8826", dup265); - -var msg11274 = msg("8827", dup265); - -var msg11275 = msg("8828", dup265); - -var msg11276 = msg("8829", dup265); - -var msg11277 = msg("8830", dup265); - -var msg11278 = msg("8831", dup265); - -var msg11279 = msg("8832", dup265); - -var msg11280 = msg("8833", dup265); - -var msg11281 = msg("8834", dup265); - -var msg11282 = msg("8835", dup265); - -var msg11283 = msg("8836", dup265); - -var msg11284 = msg("8837", dup265); - -var msg11285 = msg("8838", dup265); - -var msg11286 = msg("8839", dup265); - -var msg11287 = msg("8840", dup265); - -var msg11288 = msg("8841", dup265); - -var msg11289 = msg("8842", dup265); - -var msg11290 = msg("8843", dup265); - -var msg11291 = msg("8844", dup265); - -var msg11292 = msg("8845", dup265); - -var msg11293 = msg("8846", dup265); - -var msg11294 = msg("8847", dup265); - -var msg11295 = msg("8848", dup265); - -var msg11296 = msg("8849", dup265); - -var msg11297 = msg("8850", dup265); - -var msg11298 = msg("8851", dup265); - -var msg11299 = msg("8852", dup265); - -var msg11300 = msg("8853", dup265); - -var msg11301 = msg("8854", dup265); - -var msg11302 = msg("8855", dup265); - -var msg11303 = msg("8856", dup265); - -var msg11304 = msg("8857", dup276); - -var msg11305 = msg("8858", dup276); - -var msg11306 = msg("8859", dup276); - -var msg11307 = msg("8860", dup276); - -var msg11308 = msg("8861", dup276); - -var msg11309 = msg("8862", dup276); - -var msg11310 = msg("8863", dup276); - -var msg11311 = msg("8864", dup276); - -var msg11312 = msg("8865", dup276); - -var msg11313 = msg("8866", dup276); - -var msg11314 = msg("8867", dup276); - -var msg11315 = msg("8868", dup276); - -var msg11316 = msg("8869", dup276); - -var msg11317 = msg("8870", dup276); - -var msg11318 = msg("8871", dup276); - -var msg11319 = msg("8872", dup276); - -var msg11320 = msg("8873", dup276); - -var msg11321 = msg("8874", dup276); - -var msg11322 = msg("8875", dup276); - -var msg11323 = msg("8876", dup276); - -var msg11324 = msg("8877", dup276); - -var msg11325 = msg("8878", dup276); - -var msg11326 = msg("8879", dup276); - -var msg11327 = msg("8880", dup276); - -var msg11328 = msg("8881", dup276); - -var msg11329 = msg("8882", dup276); - -var msg11330 = msg("8883", dup276); - -var msg11331 = msg("8884", dup276); - -var msg11332 = msg("8885", dup276); - -var msg11333 = msg("8886", dup276); - -var msg11334 = msg("8887", dup276); - -var msg11335 = msg("8888", dup276); - -var msg11336 = msg("8889", dup276); - -var msg11337 = msg("8890", dup276); - -var msg11338 = msg("8891", dup276); - -var msg11339 = msg("8892", dup276); - -var msg11340 = msg("8893", dup276); - -var msg11341 = msg("8894", dup276); - -var msg11342 = msg("8895", dup276); - -var msg11343 = msg("8896", dup276); - -var msg11344 = msg("8897", dup276); - -var msg11345 = msg("8898", dup276); - -var msg11346 = msg("8899", dup276); - -var msg11347 = msg("8900", dup276); - -var msg11348 = msg("8901", dup276); - -var msg11349 = msg("8902", dup276); - -var msg11350 = msg("8903", dup276); - -var msg11351 = msg("8904", dup276); - -var msg11352 = msg("8905", dup276); - -var msg11353 = msg("8906", dup276); - -var msg11354 = msg("8907", dup276); - -var msg11355 = msg("8908", dup276); - -var msg11356 = msg("8909", dup276); - -var msg11357 = msg("8910", dup276); - -var msg11358 = msg("8911", dup276); - -var msg11359 = msg("8912", dup276); - -var msg11360 = msg("8913", dup276); - -var msg11361 = msg("8914", dup276); - -var msg11362 = msg("8915", dup276); - -var msg11363 = msg("8916", dup276); - -var msg11364 = msg("8917", dup276); - -var msg11365 = msg("8918", dup276); - -var msg11366 = msg("8919", dup276); - -var msg11367 = msg("8920", dup276); - -var msg11368 = msg("8921", dup276); - -var msg11369 = msg("8922", dup276); - -var msg11370 = msg("8923", dup276); - -var msg11371 = msg("8924", dup276); - -var msg11372 = msg("8925", dup276); - -var msg11373 = msg("8926", dup276); - -var msg11374 = msg("8927", dup276); - -var msg11375 = msg("8928", dup276); - -var msg11376 = msg("8929", dup276); - -var msg11377 = msg("8930", dup276); - -var msg11378 = msg("8931", dup276); - -var msg11379 = msg("8932", dup276); - -var msg11380 = msg("8933", dup276); - -var msg11381 = msg("8934", dup276); - -var msg11382 = msg("8935", dup276); - -var msg11383 = msg("8936", dup276); - -var msg11384 = msg("8937", dup276); - -var msg11385 = msg("8938", dup276); - -var msg11386 = msg("8939", dup276); - -var msg11387 = msg("8940", dup276); - -var msg11388 = msg("8941", dup276); - -var msg11389 = msg("8942", dup276); - -var msg11390 = msg("8943", dup276); - -var msg11391 = msg("8944", dup276); - -var msg11392 = msg("8945", dup276); - -var msg11393 = msg("8946", dup276); - -var msg11394 = msg("8947", dup276); - -var msg11395 = msg("8948", dup276); - -var msg11396 = msg("8949", dup276); - -var msg11397 = msg("8950", dup276); - -var msg11398 = msg("8951", dup276); - -var msg11399 = msg("8952", dup276); - -var msg11400 = msg("8953", dup276); - -var msg11401 = msg("8954", dup276); - -var msg11402 = msg("8955", dup276); - -var msg11403 = msg("8956", dup276); - -var msg11404 = msg("8957", dup276); - -var msg11405 = msg("8958", dup276); - -var msg11406 = msg("8959", dup276); - -var msg11407 = msg("8960", dup276); - -var msg11408 = msg("8961", dup276); - -var msg11409 = msg("8962", dup276); - -var msg11410 = msg("8963", dup276); - -var msg11411 = msg("8964", dup276); - -var msg11412 = msg("8965", dup276); - -var msg11413 = msg("8966", dup276); - -var msg11414 = msg("8967", dup276); - -var msg11415 = msg("8968", dup276); - -var msg11416 = msg("8969", dup276); - -var msg11417 = msg("8970", dup276); - -var msg11418 = msg("8971", dup276); - -var msg11419 = msg("8972", dup276); - -var msg11420 = msg("8973", dup276); - -var msg11421 = msg("8974", dup276); - -var msg11422 = msg("8975", dup276); - -var msg11423 = msg("8976", dup276); - -var msg11424 = msg("8977", dup276); - -var msg11425 = msg("8978", dup276); - -var msg11426 = msg("8979", dup276); - -var msg11427 = msg("8980", dup276); - -var msg11428 = msg("8981", dup276); - -var msg11429 = msg("8982", dup276); - -var msg11430 = msg("8983", dup276); - -var msg11431 = msg("8984", dup276); - -var msg11432 = msg("8985", dup276); - -var msg11433 = msg("8986", dup276); - -var msg11434 = msg("8987", dup276); - -var msg11435 = msg("8988", dup276); - -var msg11436 = msg("8989", dup276); - -var msg11437 = msg("8990", dup276); - -var msg11438 = msg("8991", dup276); - -var msg11439 = msg("8992", dup276); - -var msg11440 = msg("8993", dup276); - -var msg11441 = msg("8994", dup276); - -var msg11442 = msg("8995", dup276); - -var msg11443 = msg("8996", dup276); - -var msg11444 = msg("8997", dup276); - -var msg11445 = msg("8998", dup276); - -var msg11446 = msg("8999", dup276); - -var msg11447 = msg("9000", dup276); - -var msg11448 = msg("9001", dup276); - -var msg11449 = msg("9002", dup276); - -var msg11450 = msg("9003", dup276); - -var msg11451 = msg("9004", dup276); - -var msg11452 = msg("9005", dup276); - -var msg11453 = msg("9006", dup276); - -var msg11454 = msg("9007", dup276); - -var msg11455 = msg("9008", dup276); - -var msg11456 = msg("9009", dup276); - -var msg11457 = msg("9010", dup276); - -var msg11458 = msg("9011", dup276); - -var msg11459 = msg("9012", dup276); - -var msg11460 = msg("9013", dup276); - -var msg11461 = msg("9014", dup276); - -var msg11462 = msg("9015", dup276); - -var msg11463 = msg("9016", dup276); - -var msg11464 = msg("9017", dup276); - -var msg11465 = msg("9018", dup276); - -var msg11466 = msg("9019", dup276); - -var msg11467 = msg("9020", dup276); - -var msg11468 = msg("9021", dup276); - -var msg11469 = msg("9022", dup276); - -var msg11470 = msg("9023", dup276); - -var msg11471 = msg("9024", dup276); - -var msg11472 = msg("9025", dup276); - -var msg11473 = msg("9026", dup276); - -var msg11474 = msg("9027", dup276); - -var msg11475 = msg("9028", dup276); - -var msg11476 = msg("9029", dup276); - -var msg11477 = msg("9030", dup276); - -var msg11478 = msg("9031", dup276); - -var msg11479 = msg("9032", dup276); - -var msg11480 = msg("9033", dup276); - -var msg11481 = msg("9034", dup276); - -var msg11482 = msg("9035", dup276); - -var msg11483 = msg("9036", dup276); - -var msg11484 = msg("9037", dup276); - -var msg11485 = msg("9038", dup276); - -var msg11486 = msg("9039", dup276); - -var msg11487 = msg("9040", dup276); - -var msg11488 = msg("9041", dup276); - -var msg11489 = msg("9042", dup276); - -var msg11490 = msg("9043", dup276); - -var msg11491 = msg("9044", dup276); - -var msg11492 = msg("9045", dup276); - -var msg11493 = msg("9046", dup276); - -var msg11494 = msg("9047", dup276); - -var msg11495 = msg("9048", dup276); - -var msg11496 = msg("9049", dup276); - -var msg11497 = msg("9050", dup276); - -var msg11498 = msg("9051", dup276); - -var msg11499 = msg("9052", dup276); - -var msg11500 = msg("9053", dup276); - -var msg11501 = msg("9054", dup276); - -var msg11502 = msg("9055", dup276); - -var msg11503 = msg("9056", dup276); - -var msg11504 = msg("9057", dup276); - -var msg11505 = msg("9058", dup276); - -var msg11506 = msg("9059", dup276); - -var msg11507 = msg("9060", dup276); - -var msg11508 = msg("9061", dup276); - -var msg11509 = msg("9062", dup276); - -var msg11510 = msg("9063", dup276); - -var msg11511 = msg("9064", dup276); - -var msg11512 = msg("9065", dup276); - -var msg11513 = msg("9066", dup276); - -var msg11514 = msg("9067", dup276); - -var msg11515 = msg("9068", dup276); - -var msg11516 = msg("9069", dup276); - -var msg11517 = msg("9070", dup276); - -var msg11518 = msg("9071", dup276); - -var msg11519 = msg("9072", dup276); - -var msg11520 = msg("9073", dup276); - -var msg11521 = msg("9074", dup276); - -var msg11522 = msg("9075", dup276); - -var msg11523 = msg("9076", dup276); - -var msg11524 = msg("9077", dup276); - -var msg11525 = msg("9078", dup276); - -var msg11526 = msg("9079", dup276); - -var msg11527 = msg("9080", dup276); - -var msg11528 = msg("9081", dup276); - -var msg11529 = msg("9082", dup276); - -var msg11530 = msg("9083", dup276); - -var msg11531 = msg("9084", dup276); - -var msg11532 = msg("9085", dup276); - -var msg11533 = msg("9086", dup276); - -var msg11534 = msg("9087", dup276); - -var msg11535 = msg("9088", dup276); - -var msg11536 = msg("9089", dup276); - -var msg11537 = msg("9090", dup276); - -var msg11538 = msg("9091", dup276); - -var msg11539 = msg("9092", dup276); - -var msg11540 = msg("9093", dup276); - -var msg11541 = msg("9094", dup276); - -var msg11542 = msg("9095", dup276); - -var msg11543 = msg("9096", dup276); - -var msg11544 = msg("9097", dup276); - -var msg11545 = msg("9098", dup276); - -var msg11546 = msg("9099", dup276); - -var msg11547 = msg("9100", dup276); - -var msg11548 = msg("9101", dup276); - -var msg11549 = msg("9102", dup276); - -var msg11550 = msg("9103", dup276); - -var msg11551 = msg("9104", dup276); - -var msg11552 = msg("9105", dup276); - -var msg11553 = msg("9106", dup276); - -var msg11554 = msg("9107", dup276); - -var msg11555 = msg("9108", dup276); - -var msg11556 = msg("9109", dup276); - -var msg11557 = msg("9110", dup276); - -var msg11558 = msg("9111", dup276); - -var msg11559 = msg("9112", dup276); - -var msg11560 = msg("9113", dup276); - -var msg11561 = msg("9114", dup276); - -var msg11562 = msg("9115", dup276); - -var msg11563 = msg("9116", dup276); - -var msg11564 = msg("9117", dup276); - -var msg11565 = msg("9118", dup276); - -var msg11566 = msg("9119", dup276); - -var msg11567 = msg("9120", dup276); - -var msg11568 = msg("9121", dup276); - -var msg11569 = msg("9122", dup276); - -var msg11570 = msg("9123", dup276); - -var msg11571 = msg("9124", dup276); - -var msg11572 = msg("9125", dup276); - -var msg11573 = msg("9126", dup276); - -var msg11574 = msg("9127", dup276); - -var msg11575 = msg("9128", dup276); - -var msg11576 = msg("9129", dup265); - -var msg11577 = msg("9130", dup265); - -var msg11578 = msg("9131", dup265); - -var msg11579 = msg("9132", dup276); - -var msg11580 = msg("9133", dup276); - -var msg11581 = msg("9134", dup276); - -var msg11582 = msg("9135", dup276); - -var msg11583 = msg("9136", dup276); - -var msg11584 = msg("9137", dup276); - -var msg11585 = msg("9138", dup276); - -var msg11586 = msg("9139", dup276); - -var msg11587 = msg("9140", dup276); - -var msg11588 = msg("9141", dup276); - -var msg11589 = msg("9142", dup276); - -var msg11590 = msg("9143", dup276); - -var msg11591 = msg("9144", dup276); - -var msg11592 = msg("9145", dup276); - -var msg11593 = msg("9146", dup276); - -var msg11594 = msg("9147", dup276); - -var msg11595 = msg("9148", dup276); - -var msg11596 = msg("9149", dup276); - -var msg11597 = msg("9150", dup276); - -var msg11598 = msg("9151", dup276); - -var msg11599 = msg("9152", dup276); - -var msg11600 = msg("9153", dup276); - -var msg11601 = msg("9154", dup276); - -var msg11602 = msg("9155", dup276); - -var msg11603 = msg("9156", dup276); - -var msg11604 = msg("9157", dup276); - -var msg11605 = msg("9158", dup276); - -var msg11606 = msg("9159", dup276); - -var msg11607 = msg("9160", dup276); - -var msg11608 = msg("9161", dup276); - -var msg11609 = msg("9162", dup276); - -var msg11610 = msg("9163", dup276); - -var msg11611 = msg("9164", dup276); - -var msg11612 = msg("9165", dup276); - -var msg11613 = msg("9166", dup276); - -var msg11614 = msg("9167", dup276); - -var msg11615 = msg("9168", dup276); - -var msg11616 = msg("9169", dup276); - -var msg11617 = msg("9170", dup276); - -var msg11618 = msg("9171", dup276); - -var msg11619 = msg("9172", dup276); - -var msg11620 = msg("9173", dup276); - -var msg11621 = msg("9174", dup276); - -var msg11622 = msg("9175", dup276); - -var msg11623 = msg("9176", dup276); - -var msg11624 = msg("9177", dup276); - -var msg11625 = msg("9178", dup276); - -var msg11626 = msg("9179", dup276); - -var msg11627 = msg("9180", dup276); - -var msg11628 = msg("9181", dup276); - -var msg11629 = msg("9182", dup276); - -var msg11630 = msg("9183", dup276); - -var msg11631 = msg("9184", dup276); - -var msg11632 = msg("9185", dup276); - -var msg11633 = msg("9186", dup276); - -var msg11634 = msg("9187", dup276); - -var msg11635 = msg("9188", dup276); - -var msg11636 = msg("9189", dup276); - -var msg11637 = msg("9190", dup276); - -var msg11638 = msg("9191", dup276); - -var msg11639 = msg("9192", dup276); - -var msg11640 = msg("9193", dup276); - -var msg11641 = msg("9194", dup276); - -var msg11642 = msg("9195", dup276); - -var msg11643 = msg("9196", dup276); - -var msg11644 = msg("9197", dup276); - -var msg11645 = msg("9198", dup276); - -var msg11646 = msg("9199", dup276); - -var msg11647 = msg("9200", dup276); - -var msg11648 = msg("9201", dup276); - -var msg11649 = msg("9202", dup276); - -var msg11650 = msg("9203", dup276); - -var msg11651 = msg("9204", dup276); - -var msg11652 = msg("9205", dup276); - -var msg11653 = msg("9206", dup276); - -var msg11654 = msg("9207", dup276); - -var msg11655 = msg("9208", dup276); - -var msg11656 = msg("9209", dup276); - -var msg11657 = msg("9210", dup276); - -var msg11658 = msg("9211", dup276); - -var msg11659 = msg("9212", dup276); - -var msg11660 = msg("9213", dup276); - -var msg11661 = msg("9214", dup276); - -var msg11662 = msg("9215", dup276); - -var msg11663 = msg("9216", dup276); - -var msg11664 = msg("9217", dup276); - -var msg11665 = msg("9218", dup276); - -var msg11666 = msg("9219", dup276); - -var msg11667 = msg("9220", dup276); - -var msg11668 = msg("9221", dup276); - -var msg11669 = msg("9222", dup276); - -var msg11670 = msg("9223", dup276); - -var msg11671 = msg("9224", dup276); - -var msg11672 = msg("9225", dup276); - -var msg11673 = msg("9226", dup276); - -var msg11674 = msg("9227", dup276); - -var msg11675 = msg("9228", dup276); - -var msg11676 = msg("9229", dup276); - -var msg11677 = msg("9230", dup276); - -var msg11678 = msg("9231", dup276); - -var msg11679 = msg("9232", dup276); - -var msg11680 = msg("9233", dup276); - -var msg11681 = msg("9234", dup276); - -var msg11682 = msg("9235", dup276); - -var msg11683 = msg("9236", dup276); - -var msg11684 = msg("9237", dup276); - -var msg11685 = msg("9238", dup276); - -var msg11686 = msg("9239", dup276); - -var msg11687 = msg("9240", dup276); - -var msg11688 = msg("9241", dup276); - -var msg11689 = msg("9242", dup276); - -var msg11690 = msg("9243", dup276); - -var msg11691 = msg("9244", dup276); - -var msg11692 = msg("9245", dup276); - -var msg11693 = msg("9246", dup276); - -var msg11694 = msg("9247", dup276); - -var msg11695 = msg("9248", dup276); - -var msg11696 = msg("9249", dup276); - -var msg11697 = msg("9250", dup276); - -var msg11698 = msg("9251", dup276); - -var msg11699 = msg("9252", dup276); - -var msg11700 = msg("9253", dup276); - -var msg11701 = msg("9254", dup276); - -var msg11702 = msg("9255", dup276); - -var msg11703 = msg("9256", dup276); - -var msg11704 = msg("9257", dup276); - -var msg11705 = msg("9258", dup276); - -var msg11706 = msg("9259", dup276); - -var msg11707 = msg("9260", dup276); - -var msg11708 = msg("9261", dup276); - -var msg11709 = msg("9262", dup276); - -var msg11710 = msg("9263", dup276); - -var msg11711 = msg("9264", dup276); - -var msg11712 = msg("9265", dup276); - -var msg11713 = msg("9266", dup276); - -var msg11714 = msg("9267", dup276); - -var msg11715 = msg("9268", dup276); - -var msg11716 = msg("9269", dup276); - -var msg11717 = msg("9270", dup276); - -var msg11718 = msg("9271", dup276); - -var msg11719 = msg("9272", dup276); - -var msg11720 = msg("9273", dup276); - -var msg11721 = msg("9274", dup276); - -var msg11722 = msg("9275", dup276); - -var msg11723 = msg("9276", dup276); - -var msg11724 = msg("9277", dup276); - -var msg11725 = msg("9278", dup276); - -var msg11726 = msg("9279", dup276); - -var msg11727 = msg("9280", dup276); - -var msg11728 = msg("9281", dup276); - -var msg11729 = msg("9282", dup276); - -var msg11730 = msg("9283", dup276); - -var msg11731 = msg("9284", dup276); - -var msg11732 = msg("9285", dup276); - -var msg11733 = msg("9286", dup276); - -var msg11734 = msg("9287", dup276); - -var msg11735 = msg("9288", dup276); - -var msg11736 = msg("9289", dup276); - -var msg11737 = msg("9290", dup276); - -var msg11738 = msg("9291", dup276); - -var msg11739 = msg("9292", dup276); - -var msg11740 = msg("9293", dup276); - -var msg11741 = msg("9294", dup276); - -var msg11742 = msg("9295", dup276); - -var msg11743 = msg("9296", dup276); - -var msg11744 = msg("9297", dup276); - -var msg11745 = msg("9298", dup276); - -var msg11746 = msg("9299", dup276); - -var msg11747 = msg("9300", dup276); - -var msg11748 = msg("9301", dup276); - -var msg11749 = msg("9302", dup276); - -var msg11750 = msg("9303", dup276); - -var msg11751 = msg("9304", dup276); - -var msg11752 = msg("9305", dup276); - -var msg11753 = msg("9306", dup276); - -var msg11754 = msg("9307", dup276); - -var msg11755 = msg("9308", dup276); - -var msg11756 = msg("9309", dup276); - -var msg11757 = msg("9310", dup276); - -var msg11758 = msg("9311", dup276); - -var msg11759 = msg("9312", dup276); - -var msg11760 = msg("9313", dup276); - -var msg11761 = msg("9314", dup276); - -var msg11762 = msg("9315", dup276); - -var msg11763 = msg("9316", dup276); - -var msg11764 = msg("9317", dup276); - -var msg11765 = msg("9318", dup276); - -var msg11766 = msg("9319", dup276); - -var msg11767 = msg("9320", dup276); - -var msg11768 = msg("9321", dup276); - -var msg11769 = msg("9322", dup276); - -var msg11770 = msg("9323", dup276); - -var msg11771 = msg("9324", dup196); - -var msg11772 = msg("9325", dup198); - -var msg11773 = msg("9326", dup250); - -var msg11774 = msg("9327", dup250); - -var msg11775 = msg("9328", dup250); - -var msg11776 = msg("9329", dup250); - -var msg11777 = msg("9330", dup250); - -var msg11778 = msg("9331", dup250); - -var msg11779 = msg("9332", dup250); - -var msg11780 = msg("9333", dup250); - -var msg11781 = msg("9334", dup250); - -var msg11782 = msg("9335", dup250); - -var msg11783 = msg("9336", dup250); - -var msg11784 = msg("9337", dup250); - -var msg11785 = msg("9338", dup250); - -var msg11786 = msg("9339", dup196); - -var msg11787 = msg("9340", dup196); - -var msg11788 = msg("9341", dup227); - -var msg11789 = msg("9342", dup250); - -var msg11790 = msg("9343", dup250); - -var msg11791 = msg("9344", dup250); - -var msg11792 = msg("9345", dup287); - -var msg11793 = msg("9346", dup196); - -var msg11794 = msg("9347", dup196); - -var msg11795 = msg("9348", dup250); - -var msg11796 = msg("9349", dup250); - -var msg11797 = msg("9350", dup250); - -var msg11798 = msg("9351", dup196); - -var msg11799 = msg("9352", dup250); - -var msg11800 = msg("9353", dup196); - -var msg11801 = msg("9354", dup196); - -var msg11802 = msg("9355", dup196); - -var msg11803 = msg("9356", dup196); - -var msg11804 = msg("9357", dup196); - -var msg11805 = msg("9358", dup250); - -var msg11806 = msg("9359", dup250); - -var msg11807 = msg("9360", dup250); - -var msg11808 = msg("9361", dup250); - -var msg11809 = msg("9362", dup250); - -var msg11810 = msg("9363", dup196); - -var msg11811 = msg("9364", dup196); - -var msg11812 = msg("9365", dup250); - -var msg11813 = msg("9366", dup250); - -var msg11814 = msg("9367", dup250); - -var msg11815 = msg("9368", dup250); - -var msg11816 = msg("9369", dup250); - -var msg11817 = msg("9370", dup250); - -var msg11818 = msg("9371", dup250); - -var msg11819 = msg("9372", dup250); - -var msg11820 = msg("9373", dup250); - -var msg11821 = msg("9374", dup250); - -var msg11822 = msg("9375", dup250); - -var msg11823 = msg("9376", dup250); - -var msg11824 = msg("9377", dup250); - -var msg11825 = msg("9378", dup250); - -var msg11826 = msg("9379", dup250); - -var msg11827 = msg("9380", dup196); - -var msg11828 = msg("9381", dup250); - -var msg11829 = msg("9382", dup250); - -var msg11830 = msg("9383", dup250); - -var msg11831 = msg("9384", dup250); - -var msg11832 = msg("9385", dup250); - -var msg11833 = msg("9386", dup250); - -var msg11834 = msg("9387", dup196); - -var msg11835 = msg("9388", dup250); - -var msg11836 = msg("9389", dup250); - -var msg11837 = msg("9390", dup196); - -var msg11838 = msg("9391", dup250); - -var msg11839 = msg("9392", dup250); - -var msg11840 = msg("9393", dup250); - -var msg11841 = msg("9394", dup250); - -var msg11842 = msg("9395", dup196); - -var msg11843 = msg("9396", dup196); - -var msg11844 = msg("9397", dup250); - -var msg11845 = msg("9398", dup250); - -var msg11846 = msg("9399", dup250); - -var msg11847 = msg("9400", dup250); - -var msg11848 = msg("9401", dup265); - -var msg11849 = msg("9402", dup274); - -var msg11850 = msg("9403", dup250); - -var msg11851 = msg("9404", dup250); - -var msg11852 = msg("9405", dup250); - -var msg11853 = msg("9406", dup250); - -var msg11854 = msg("9407", dup196); - -var msg11855 = msg("9408", dup250); - -var msg11856 = msg("9409", dup250); - -var msg11857 = msg("9410", dup250); - -var msg11858 = msg("9411", dup250); - -var msg11859 = msg("9412", dup196); - -var msg11860 = msg("9413", dup250); - -var msg11861 = msg("9414", dup250); - -var msg11862 = msg("9415", dup250); - -var msg11863 = msg("9416", dup250); - -var msg11864 = msg("9417", dup250); - -var msg11865 = msg("9418", dup265); - -var msg11866 = msg("9419", dup196); - -var msg11867 = msg("9420", dup196); - -var msg11868 = msg("9421", dup196); - -var msg11869 = msg("9422", dup196); - -var msg11870 = msg("9423", dup196); - -var msg11871 = msg("9424", dup196); - -var msg11872 = msg("9425", dup196); - -var msg11873 = msg("9426", dup196); - -var msg11874 = msg("9427", dup265); - -var msg11875 = msg("9428", dup265); - -var msg11876 = msg("9429", dup265); - -var msg11877 = msg("9430", dup265); - -var msg11878 = msg("9431", dup222); - -var msg11879 = msg("9432", dup267); - -var msg11880 = msg("9433", dup267); - -var msg11881 = msg("9434", dup267); - -var msg11882 = msg("9435", dup267); - -var msg11883 = msg("9436", dup267); - -var msg11884 = msg("9437", dup276); - -var msg11885 = msg("9438", dup276); - -var msg11886 = msg("9439", dup276); - -var msg11887 = msg("9440", dup276); - -var msg11888 = msg("9441", dup276); - -var msg11889 = msg("9442", dup276); - -var msg11890 = msg("9443", dup276); - -var msg11891 = msg("9444", dup276); - -var msg11892 = msg("9445", dup276); - -var msg11893 = msg("9446", dup276); - -var msg11894 = msg("9447", dup276); - -var msg11895 = msg("9448", dup276); - -var msg11896 = msg("9449", dup276); - -var msg11897 = msg("9450", dup276); - -var msg11898 = msg("9451", dup276); - -var msg11899 = msg("9452", dup276); - -var msg11900 = msg("9453", dup276); - -var msg11901 = msg("9454", dup276); - -var msg11902 = msg("9455", dup276); - -var msg11903 = msg("9456", dup276); - -var msg11904 = msg("9457", dup276); - -var msg11905 = msg("9458", dup276); - -var msg11906 = msg("9459", dup276); - -var msg11907 = msg("9460", dup276); - -var msg11908 = msg("9461", dup276); - -var msg11909 = msg("9462", dup276); - -var msg11910 = msg("9463", dup276); - -var msg11911 = msg("9464", dup276); - -var msg11912 = msg("9465", dup276); - -var msg11913 = msg("9466", dup276); - -var msg11914 = msg("9467", dup276); - -var msg11915 = msg("9468", dup276); - -var msg11916 = msg("9469", dup276); - -var msg11917 = msg("9470", dup276); - -var msg11918 = msg("9471", dup276); - -var msg11919 = msg("9472", dup276); - -var msg11920 = msg("9473", dup276); - -var msg11921 = msg("9474", dup276); - -var msg11922 = msg("9475", dup276); - -var msg11923 = msg("9476", dup276); - -var msg11924 = msg("9477", dup276); - -var msg11925 = msg("9478", dup276); - -var msg11926 = msg("9479", dup276); - -var msg11927 = msg("9480", dup276); - -var msg11928 = msg("9481", dup276); - -var msg11929 = msg("9482", dup276); - -var msg11930 = msg("9483", dup276); - -var msg11931 = msg("9484", dup276); - -var msg11932 = msg("9485", dup276); - -var msg11933 = msg("9486", dup276); - -var msg11934 = msg("9487", dup276); - -var msg11935 = msg("9488", dup276); - -var msg11936 = msg("9489", dup276); - -var msg11937 = msg("9490", dup276); - -var msg11938 = msg("9491", dup276); - -var msg11939 = msg("9492", dup276); - -var msg11940 = msg("9493", dup276); - -var msg11941 = msg("9494", dup276); - -var msg11942 = msg("9495", dup276); - -var msg11943 = msg("9496", dup276); - -var msg11944 = msg("9497", dup276); - -var msg11945 = msg("9498", dup276); - -var msg11946 = msg("9499", dup276); - -var msg11947 = msg("9500", dup276); - -var msg11948 = msg("9501", dup276); - -var msg11949 = msg("9502", dup276); - -var msg11950 = msg("9503", dup276); - -var msg11951 = msg("9504", dup276); - -var msg11952 = msg("9505", dup276); - -var msg11953 = msg("9506", dup276); - -var msg11954 = msg("9507", dup276); - -var msg11955 = msg("9508", dup276); - -var msg11956 = msg("9509", dup276); - -var msg11957 = msg("9510", dup276); - -var msg11958 = msg("9511", dup276); - -var msg11959 = msg("9512", dup276); - -var msg11960 = msg("9513", dup276); - -var msg11961 = msg("9514", dup276); - -var msg11962 = msg("9515", dup276); - -var msg11963 = msg("9516", dup276); - -var msg11964 = msg("9517", dup276); - -var msg11965 = msg("9518", dup276); - -var msg11966 = msg("9519", dup276); - -var msg11967 = msg("9520", dup276); - -var msg11968 = msg("9521", dup276); - -var msg11969 = msg("9522", dup276); - -var msg11970 = msg("9523", dup276); - -var msg11971 = msg("9524", dup276); - -var msg11972 = msg("9525", dup276); - -var msg11973 = msg("9526", dup276); - -var msg11974 = msg("9527", dup276); - -var msg11975 = msg("9528", dup276); - -var msg11976 = msg("9529", dup276); - -var msg11977 = msg("9530", dup276); - -var msg11978 = msg("9531", dup276); - -var msg11979 = msg("9532", dup276); - -var msg11980 = msg("9533", dup276); - -var msg11981 = msg("9534", dup276); - -var msg11982 = msg("9535", dup276); - -var msg11983 = msg("9536", dup276); - -var msg11984 = msg("9537", dup276); - -var msg11985 = msg("9538", dup276); - -var msg11986 = msg("9539", dup276); - -var msg11987 = msg("9540", dup276); - -var msg11988 = msg("9541", dup276); - -var msg11989 = msg("9542", dup276); - -var msg11990 = msg("9543", dup276); - -var msg11991 = msg("9544", dup276); - -var msg11992 = msg("9545", dup276); - -var msg11993 = msg("9546", dup276); - -var msg11994 = msg("9547", dup276); - -var msg11995 = msg("9548", dup276); - -var msg11996 = msg("9549", dup276); - -var msg11997 = msg("9550", dup276); - -var msg11998 = msg("9551", dup276); - -var msg11999 = msg("9552", dup276); - -var msg12000 = msg("9553", dup276); - -var msg12001 = msg("9554", dup276); - -var msg12002 = msg("9555", dup276); - -var msg12003 = msg("9556", dup276); - -var msg12004 = msg("9557", dup276); - -var msg12005 = msg("9558", dup276); - -var msg12006 = msg("9559", dup276); - -var msg12007 = msg("9560", dup276); - -var msg12008 = msg("9561", dup276); - -var msg12009 = msg("9562", dup276); - -var msg12010 = msg("9563", dup276); - -var msg12011 = msg("9564", dup276); - -var msg12012 = msg("9565", dup276); - -var msg12013 = msg("9566", dup276); - -var msg12014 = msg("9567", dup276); - -var msg12015 = msg("9568", dup276); - -var msg12016 = msg("9569", dup276); - -var msg12017 = msg("9570", dup276); - -var msg12018 = msg("9571", dup276); - -var msg12019 = msg("9572", dup276); - -var msg12020 = msg("9573", dup276); - -var msg12021 = msg("9574", dup276); - -var msg12022 = msg("9575", dup276); - -var msg12023 = msg("9576", dup276); - -var msg12024 = msg("9577", dup276); - -var msg12025 = msg("9578", dup276); - -var msg12026 = msg("9579", dup276); - -var msg12027 = msg("9580", dup276); - -var msg12028 = msg("9581", dup276); - -var msg12029 = msg("9582", dup276); - -var msg12030 = msg("9583", dup276); - -var msg12031 = msg("9584", dup276); - -var msg12032 = msg("9585", dup276); - -var msg12033 = msg("9586", dup276); - -var msg12034 = msg("9587", dup276); - -var msg12035 = msg("9588", dup276); - -var msg12036 = msg("9589", dup276); - -var msg12037 = msg("9590", dup276); - -var msg12038 = msg("9591", dup276); - -var msg12039 = msg("9592", dup276); - -var msg12040 = msg("9593", dup276); - -var msg12041 = msg("9594", dup276); - -var msg12042 = msg("9595", dup276); - -var msg12043 = msg("9596", dup276); - -var msg12044 = msg("9597", dup276); - -var msg12045 = msg("9598", dup276); - -var msg12046 = msg("9599", dup276); - -var msg12047 = msg("9600", dup276); - -var msg12048 = msg("9601", dup276); - -var msg12049 = msg("9602", dup276); - -var msg12050 = msg("9603", dup276); - -var msg12051 = msg("9604", dup276); - -var msg12052 = msg("9605", dup276); - -var msg12053 = msg("9606", dup276); - -var msg12054 = msg("9607", dup276); - -var msg12055 = msg("9608", dup276); - -var msg12056 = msg("9609", dup276); - -var msg12057 = msg("9610", dup276); - -var msg12058 = msg("9611", dup276); - -var msg12059 = msg("9612", dup276); - -var msg12060 = msg("9613", dup276); - -var msg12061 = msg("9614", dup276); - -var msg12062 = msg("9615", dup276); - -var msg12063 = msg("9616", dup276); - -var msg12064 = msg("9617", dup276); - -var msg12065 = msg("9618", dup276); - -var msg12066 = msg("9619", dup267); - -var msg12067 = msg("9620", dup267); - -var msg12068 = msg("9621", dup295); - -var msg12069 = msg("9622", dup198); - -var msg12070 = msg("9623", dup273); - -var msg12071 = msg("9624", dup273); - -var msg12072 = msg("9625", dup267); - -var msg12073 = msg("9626", dup265); - -var msg12074 = msg("9627", dup265); - -var msg12075 = msg("9628", dup265); - -var msg12076 = msg("9629", dup265); - -var msg12077 = msg("9630", dup265); - -var msg12078 = msg("9631", dup265); - -var msg12079 = msg("9632", dup222); - -var msg12080 = msg("9633", dup222); - -var msg12081 = msg("9634", dup222); - -var msg12082 = msg("9635", dup222); - -var msg12083 = msg("9636", dup222); - -var msg12084 = msg("9637", dup267); - -var msg12085 = msg("9638", dup274); - -var msg12086 = msg("9639", dup265); - -var msg12087 = msg("9640", dup265); - -var msg12088 = msg("9641", dup267); - -var msg12089 = msg("9642", dup267); - -var msg12090 = msg("9643", dup267); - -var msg12091 = msg("9644", dup303); - -var msg12092 = msg("9645", dup303); - -var msg12093 = msg("9646", dup303); - -var msg12094 = msg("9647", dup303); - -var msg12095 = msg("9648", dup303); - -var msg12096 = msg("9649", dup303); - -var msg12097 = msg("9650", dup303); - -var msg12098 = msg("9651", dup303); - -var msg12099 = msg("9652", dup303); - -var msg12100 = msg("9653", dup205); - -var msg12101 = msg("9654", dup205); - -var msg12102 = msg("9655", dup205); - -var msg12103 = msg("9656", dup205); - -var msg12104 = msg("9657", dup205); - -var msg12105 = msg("9658", dup205); - -var msg12106 = msg("9659", dup205); - -var msg12107 = msg("9660", dup205); - -var msg12108 = msg("9661", dup205); - -var msg12109 = msg("9662", dup205); - -var msg12110 = msg("9663", dup205); - -var msg12111 = msg("9664", dup205); - -var msg12112 = msg("9665", dup205); - -var msg12113 = msg("9666", dup205); - -var msg12114 = msg("9667", dup205); - -var msg12115 = msg("9668", dup265); - -var msg12116 = msg("9669", dup265); - -var msg12117 = msg("9670", dup265); - -var msg12118 = msg("9671", dup265); - -var msg12119 = msg("9672", dup265); - -var msg12120 = msg("9673", dup265); - -var msg12121 = msg("9674", dup276); - -var msg12122 = msg("9675", dup276); - -var msg12123 = msg("9676", dup276); - -var msg12124 = msg("9677", dup276); - -var msg12125 = msg("9678", dup276); - -var msg12126 = msg("9679", dup276); - -var msg12127 = msg("9680", dup276); - -var msg12128 = msg("9681", dup276); - -var msg12129 = msg("9682", dup276); - -var msg12130 = msg("9683", dup276); - -var msg12131 = msg("9684", dup276); - -var msg12132 = msg("9685", dup276); - -var msg12133 = msg("9686", dup276); - -var msg12134 = msg("9687", dup276); - -var msg12135 = msg("9688", dup276); - -var msg12136 = msg("9689", dup276); - -var msg12137 = msg("9690", dup276); - -var msg12138 = msg("9691", dup276); - -var msg12139 = msg("9692", dup276); - -var msg12140 = msg("9693", dup276); - -var msg12141 = msg("9694", dup276); - -var msg12142 = msg("9695", dup276); - -var msg12143 = msg("9696", dup276); - -var msg12144 = msg("9697", dup276); - -var msg12145 = msg("9698", dup276); - -var msg12146 = msg("9699", dup276); - -var msg12147 = msg("9700", dup276); - -var msg12148 = msg("9701", dup276); - -var msg12149 = msg("9702", dup276); - -var msg12150 = msg("9703", dup276); - -var msg12151 = msg("9704", dup276); - -var msg12152 = msg("9705", dup276); - -var msg12153 = msg("9706", dup276); - -var msg12154 = msg("9707", dup276); - -var msg12155 = msg("9708", dup276); - -var msg12156 = msg("9709", dup276); - -var msg12157 = msg("9710", dup276); - -var msg12158 = msg("9711", dup276); - -var msg12159 = msg("9712", dup276); - -var msg12160 = msg("9713", dup276); - -var msg12161 = msg("9714", dup276); - -var msg12162 = msg("9715", dup276); - -var msg12163 = msg("9716", dup276); - -var msg12164 = msg("9717", dup276); - -var msg12165 = msg("9718", dup276); - -var msg12166 = msg("9719", dup276); - -var msg12167 = msg("9720", dup276); - -var msg12168 = msg("9721", dup276); - -var msg12169 = msg("9722", dup276); - -var msg12170 = msg("9723", dup276); - -var msg12171 = msg("9724", dup276); - -var msg12172 = msg("9725", dup276); - -var msg12173 = msg("9726", dup276); - -var msg12174 = msg("9727", dup276); - -var msg12175 = msg("9728", dup276); - -var msg12176 = msg("9729", dup276); - -var msg12177 = msg("9730", dup276); - -var msg12178 = msg("9731", dup276); - -var msg12179 = msg("9732", dup276); - -var msg12180 = msg("9733", dup276); - -var msg12181 = msg("9734", dup276); - -var msg12182 = msg("9735", dup276); - -var msg12183 = msg("9736", dup276); - -var msg12184 = msg("9737", dup276); - -var msg12185 = msg("9738", dup276); - -var msg12186 = msg("9739", dup276); - -var msg12187 = msg("9740", dup276); - -var msg12188 = msg("9741", dup276); - -var msg12189 = msg("9742", dup276); - -var msg12190 = msg("9743", dup276); - -var msg12191 = msg("9744", dup276); - -var msg12192 = msg("9745", dup276); - -var msg12193 = msg("9746", dup276); - -var msg12194 = msg("9747", dup276); - -var msg12195 = msg("9748", dup276); - -var msg12196 = msg("9749", dup276); - -var msg12197 = msg("9750", dup276); - -var msg12198 = msg("9751", dup276); - -var msg12199 = msg("9752", dup276); - -var msg12200 = msg("9753", dup276); - -var msg12201 = msg("9754", dup276); - -var msg12202 = msg("9755", dup276); - -var msg12203 = msg("9756", dup276); - -var msg12204 = msg("9757", dup276); - -var msg12205 = msg("9758", dup276); - -var msg12206 = msg("9759", dup276); - -var msg12207 = msg("9760", dup276); - -var msg12208 = msg("9761", dup276); - -var msg12209 = msg("9762", dup276); - -var msg12210 = msg("9763", dup276); - -var msg12211 = msg("9764", dup276); - -var msg12212 = msg("9765", dup276); - -var msg12213 = msg("9766", dup276); - -var msg12214 = msg("9767", dup276); - -var msg12215 = msg("9768", dup201); - -var msg12216 = msg("9769", dup276); - -var msg12217 = msg("9770", dup201); - -var msg12218 = msg("9771", dup276); - -var msg12219 = msg("9772", dup276); - -var msg12220 = msg("9773", dup201); - -var msg12221 = msg("9774", dup201); - -var msg12222 = msg("9775", dup276); - -var msg12223 = msg("9776", dup276); - -var msg12224 = msg("9777", dup276); - -var msg12225 = msg("9778", dup276); - -var msg12226 = msg("9779", dup201); - -var msg12227 = msg("9780", dup276); - -var msg12228 = msg("9781", dup276); - -var msg12229 = msg("9782", dup276); - -var msg12230 = msg("9783", dup201); - -var msg12231 = msg("9784", dup276); - -var msg12232 = msg("9785", dup201); - -var msg12233 = msg("9786", dup276); - -var msg12234 = msg("9787", dup276); - -var msg12235 = msg("9788", dup201); - -var msg12236 = msg("9789", dup276); - -var msg12237 = msg("9790", dup196); - -var msg12238 = msg("9791", dup265); - -var msg12239 = msg("9792", dup222); - -var msg12240 = msg("9793", dup265); - -var msg12241 = msg("9794", dup265); - -var msg12242 = msg("9795", dup194); - -var msg12243 = msg("9796", dup194); - -var msg12244 = msg("9797", dup194); - -var msg12245 = msg("9798", dup194); - -var msg12246 = msg("9799", dup194); - -var msg12247 = msg("9800", dup194); - -var msg12248 = msg("9801", dup198); - -var msg12249 = msg("9802", dup276); - -var msg12250 = msg("9803", dup276); - -var msg12251 = msg("9804", dup276); - -var msg12252 = msg("9805", dup276); - -var msg12253 = msg("9806", dup276); - -var msg12254 = msg("9807", dup276); - -var msg12255 = msg("9808", dup276); - -var msg12256 = msg("9809", dup276); - -var msg12257 = msg("9810", dup276); - -var msg12258 = msg("9811", dup276); - -var msg12259 = msg("9812", dup265); - -var msg12260 = msg("9813", dup222); - -var msg12261 = msg("9814", dup265); - -var msg12262 = msg("9815", dup265); - -var msg12263 = msg("9816", dup265); - -var msg12264 = msg("9817", dup265); - -var msg12265 = msg("9818", dup265); - -var msg12266 = msg("9819", dup265); - -var msg12267 = msg("9820", dup265); - -var msg12268 = msg("9821", dup265); - -var msg12269 = msg("9822", dup265); - -var msg12270 = msg("9823", dup267); - -var msg12271 = msg("9824", dup265); - -var msg12272 = msg("9825", dup265); - -var msg12273 = msg("9826", dup265); - -var msg12274 = msg("9827", dup303); - -var msg12275 = msg("9828", dup303); - -var msg12276 = msg("9829", dup303); - -var msg12277 = msg("9830", dup303); - -var msg12278 = msg("9831", dup303); - -var msg12279 = msg("9832", dup205); - -var msg12280 = msg("9833", dup205); - -var msg12281 = msg("9834", dup205); - -var msg12282 = msg("9835", dup205); - -var msg12283 = msg("9836", dup205); - -var msg12284 = msg("9837", dup205); - -var msg12285 = msg("9838", dup205); - -var msg12286 = msg("9839", dup205); - -var msg12287 = msg("9840", dup265); - -var msg12288 = msg("9841", dup222); - -var msg12289 = msg("9842", dup265); - -var msg12290 = msg("9843", dup265); - -var msg12291 = msg("9844", dup265); - -var msg12292 = msg("9845", dup265); - -var msg12293 = msg("9846", dup265); - -var msg12294 = msg("9847", dup265); - -var msg12295 = msg("9848", dup267); - -var msg12296 = msg("9849", dup267); - -var msg12297 = msg("9850", dup276); - -var msg12298 = msg("9851", dup276); - -var msg12299 = msg("9852", dup276); - -var msg12300 = msg("9853", dup276); - -var msg12301 = msg("9854", dup276); - -var msg12302 = msg("9855", dup276); - -var msg12303 = msg("9856", dup276); - -var msg12304 = msg("9857", dup276); - -var msg12305 = msg("9858", dup276); - -var msg12306 = msg("9859", dup276); - -var msg12307 = msg("9860", dup276); - -var msg12308 = msg("9861", dup276); - -var msg12309 = msg("9862", dup276); - -var msg12310 = msg("9863", dup276); - -var msg12311 = msg("9864", dup276); - -var msg12312 = msg("9865", dup276); - -var msg12313 = msg("9866", dup276); - -var msg12314 = msg("9867", dup276); - -var msg12315 = msg("9868", dup276); - -var msg12316 = msg("9869", dup276); - -var msg12317 = msg("9870", dup276); - -var msg12318 = msg("9871", dup276); - -var msg12319 = msg("9872", dup276); - -var msg12320 = msg("9873", dup276); - -var msg12321 = msg("9874", dup276); - -var msg12322 = msg("9875", dup276); - -var msg12323 = msg("9876", dup276); - -var msg12324 = msg("9877", dup276); - -var msg12325 = msg("9878", dup276); - -var msg12326 = msg("9879", dup276); - -var msg12327 = msg("9880", dup276); - -var msg12328 = msg("9881", dup276); - -var msg12329 = msg("9882", dup276); - -var msg12330 = msg("9883", dup276); - -var msg12331 = msg("9884", dup276); - -var msg12332 = msg("9885", dup276); - -var msg12333 = msg("9886", dup276); - -var msg12334 = msg("9887", dup276); - -var msg12335 = msg("9888", dup276); - -var msg12336 = msg("9889", dup276); - -var msg12337 = msg("9890", dup276); - -var msg12338 = msg("9891", dup276); - -var msg12339 = msg("9892", dup276); - -var msg12340 = msg("9893", dup276); - -var msg12341 = msg("9894", dup276); - -var msg12342 = msg("9895", dup276); - -var msg12343 = msg("9896", dup276); - -var msg12344 = msg("9897", dup276); - -var msg12345 = msg("9898", dup276); - -var msg12346 = msg("9899", dup276); - -var msg12347 = msg("9900", dup276); - -var msg12348 = msg("9901", dup276); - -var msg12349 = msg("9902", dup276); - -var msg12350 = msg("9903", dup276); - -var msg12351 = msg("9904", dup276); - -var msg12352 = msg("9905", dup276); - -var msg12353 = msg("9906", dup276); - -var msg12354 = msg("9907", dup276); - -var msg12355 = msg("9908", dup276); - -var msg12356 = msg("9909", dup276); - -var msg12357 = msg("9910", dup276); - -var msg12358 = msg("9911", dup276); - -var msg12359 = msg("9912", dup276); - -var msg12360 = msg("9913", dup276); - -var msg12361 = msg("9914", dup276); - -var msg12362 = msg("9915", dup276); - -var msg12363 = msg("9916", dup276); - -var msg12364 = msg("9917", dup276); - -var msg12365 = msg("9918", dup276); - -var msg12366 = msg("9919", dup276); - -var msg12367 = msg("9920", dup276); - -var msg12368 = msg("9921", dup276); - -var msg12369 = msg("9922", dup276); - -var msg12370 = msg("9923", dup276); - -var msg12371 = msg("9924", dup276); - -var msg12372 = msg("9925", dup276); - -var msg12373 = msg("9926", dup276); - -var msg12374 = msg("9927", dup276); - -var msg12375 = msg("9928", dup276); - -var msg12376 = msg("9929", dup276); - -var msg12377 = msg("9930", dup276); - -var msg12378 = msg("9931", dup276); - -var msg12379 = msg("9932", dup276); - -var msg12380 = msg("9933", dup276); - -var msg12381 = msg("9934", dup276); - -var msg12382 = msg("9935", dup276); - -var msg12383 = msg("9936", dup276); - -var msg12384 = msg("9937", dup276); - -var msg12385 = msg("9938", dup276); - -var msg12386 = msg("9939", dup276); - -var msg12387 = msg("9940", dup276); - -var msg12388 = msg("9941", dup276); - -var msg12389 = msg("9942", dup276); - -var msg12390 = msg("9943", dup276); - -var msg12391 = msg("9944", dup276); - -var msg12392 = msg("9945", dup276); - -var msg12393 = msg("9946", dup276); - -var msg12394 = msg("9947", dup276); - -var msg12395 = msg("9948", dup276); - -var msg12396 = msg("9949", dup276); - -var msg12397 = msg("9950", dup276); - -var msg12398 = msg("9951", dup276); - -var msg12399 = msg("9952", dup276); - -var msg12400 = msg("9953", dup276); - -var msg12401 = msg("9954", dup276); - -var msg12402 = msg("9955", dup276); - -var msg12403 = msg("9956", dup276); - -var msg12404 = msg("9957", dup276); - -var msg12405 = msg("9958", dup276); - -var msg12406 = msg("9959", dup276); - -var msg12407 = msg("9960", dup276); - -var msg12408 = msg("9961", dup276); - -var msg12409 = msg("9962", dup276); - -var msg12410 = msg("9963", dup276); - -var msg12411 = msg("9964", dup276); - -var msg12412 = msg("9965", dup276); - -var msg12413 = msg("9966", dup276); - -var msg12414 = msg("9967", dup276); - -var msg12415 = msg("9968", dup276); - -var msg12416 = msg("9969", dup276); - -var msg12417 = msg("9970", dup276); - -var msg12418 = msg("9971", dup276); - -var msg12419 = msg("9972", dup276); - -var msg12420 = msg("9973", dup276); - -var msg12421 = msg("9974", dup276); - -var msg12422 = msg("9975", dup276); - -var msg12423 = msg("9976", dup276); - -var msg12424 = msg("9977", dup276); - -var msg12425 = msg("9978", dup276); - -var msg12426 = msg("9979", dup276); - -var msg12427 = msg("9980", dup276); - -var msg12428 = msg("9981", dup276); - -var msg12429 = msg("9982", dup276); - -var msg12430 = msg("9983", dup276); - -var msg12431 = msg("9984", dup276); - -var msg12432 = msg("9985", dup276); - -var msg12433 = msg("9986", dup276); - -var msg12434 = msg("9987", dup276); - -var msg12435 = msg("9988", dup276); - -var msg12436 = msg("9989", dup276); - -var msg12437 = msg("9990", dup276); - -var msg12438 = msg("9991", dup276); - -var msg12439 = msg("9992", dup276); - -var msg12440 = msg("9993", dup276); - -var msg12441 = msg("9994", dup276); - -var msg12442 = msg("9995", dup276); - -var msg12443 = msg("9996", dup276); - -var msg12444 = msg("9997", dup276); - -var msg12445 = msg("9998", dup276); - -var msg12446 = msg("9999", dup276); - -var msg12447 = msg("10000", dup276); - -var msg12448 = msg("10001", dup276); - -var msg12449 = msg("10002", dup276); - -var msg12450 = msg("10003", dup276); - -var msg12451 = msg("10004", dup276); - -var msg12452 = msg("10005", dup276); - -var msg12453 = msg("10006", dup276); - -var msg12454 = msg("10007", dup276); - -var msg12455 = msg("10008", dup276); - -var msg12456 = msg("10009", dup276); - -var msg12457 = msg("10010", dup222); - -var msg12458 = msg("10011", dup222); - -var msg12459 = msg("10012", dup222); - -var msg12460 = msg("10013", dup265); - -var msg12461 = msg("10014", dup265); - -var msg12462 = msg("10015", dup265); - -var msg12463 = msg("10016", dup265); - -var msg12464 = msg("10017", dup265); - -var msg12465 = msg("10018", dup276); - -var msg12466 = msg("10019", dup276); - -var msg12467 = msg("10020", dup276); - -var msg12468 = msg("10021", dup276); - -var msg12469 = msg("10022", dup276); - -var msg12470 = msg("10023", dup276); - -var msg12471 = msg("10024", dup276); - -var msg12472 = msg("10025", dup276); - -var msg12473 = msg("10026", dup276); - -var msg12474 = msg("10027", dup276); - -var msg12475 = msg("10028", dup276); - -var msg12476 = msg("10029", dup276); - -var msg12477 = msg("10030", dup276); - -var msg12478 = msg("10031", dup276); - -var msg12479 = msg("10032", dup276); - -var msg12480 = msg("10033", dup276); - -var msg12481 = msg("10034", dup276); - -var msg12482 = msg("10035", dup276); - -var msg12483 = msg("10036", dup276); - -var msg12484 = msg("10037", dup276); - -var msg12485 = msg("10038", dup276); - -var msg12486 = msg("10039", dup276); - -var msg12487 = msg("10040", dup276); - -var msg12488 = msg("10041", dup276); - -var msg12489 = msg("10042", dup276); - -var msg12490 = msg("10043", dup276); - -var msg12491 = msg("10044", dup276); - -var msg12492 = msg("10045", dup276); - -var msg12493 = msg("10046", dup276); - -var msg12494 = msg("10047", dup276); - -var msg12495 = msg("10048", dup276); - -var msg12496 = msg("10049", dup276); - -var msg12497 = msg("10050", dup276); - -var msg12498 = msg("10051", dup276); - -var msg12499 = msg("10052", dup276); - -var msg12500 = msg("10053", dup276); - -var msg12501 = msg("10054", dup276); - -var msg12502 = msg("10055", dup276); - -var msg12503 = msg("10056", dup276); - -var msg12504 = msg("10057", dup276); - -var msg12505 = msg("10058", dup276); - -var msg12506 = msg("10059", dup276); - -var msg12507 = msg("10060", dup276); - -var msg12508 = msg("10061", dup276); - -var msg12509 = msg("10062", dup267); - -var msg12510 = msg("10063", dup265); - -var msg12511 = msg("10064", dup222); - -var msg12512 = msg("10065", dup192); - -var msg12513 = msg("10066", dup192); - -var msg12514 = msg("10067", dup192); - -var msg12515 = msg("10068", dup192); - -var msg12516 = msg("10069", dup192); - -var msg12517 = msg("10070", dup192); - -var msg12518 = msg("10071", dup192); - -var msg12519 = msg("10072", dup192); - -var msg12520 = msg("10073", dup192); - -var msg12521 = msg("10074", dup192); - -var msg12522 = msg("10075", dup192); - -var msg12523 = msg("10076", dup192); - -var msg12524 = msg("10077", dup192); - -var msg12525 = msg("10078", dup250); - -var msg12526 = msg("10079", dup250); - -var msg12527 = msg("10080", dup250); - -var msg12528 = msg("10081", dup250); - -var msg12529 = msg("10082", dup250); - -var msg12530 = msg("10083", dup250); - -var msg12531 = msg("10084", dup265); - -var msg12532 = msg("10085", dup265); - -var msg12533 = msg("10086", dup265); - -var msg12534 = msg("10087", dup222); - -var msg12535 = msg("10088", dup303); - -var msg12536 = msg("10089", dup303); - -var msg12537 = msg("10090", dup303); - -var msg12538 = msg("10091", dup303); - -var msg12539 = msg("10092", dup303); - -var msg12540 = msg("10093", dup303); - -var msg12541 = msg("10094", dup303); - -var msg12542 = msg("10095", dup303); - -var msg12543 = msg("10096", dup303); - -var msg12544 = msg("10097", dup303); - -var msg12545 = msg("10098", dup303); - -var msg12546 = msg("10099", dup303); - -var msg12547 = msg("10100", dup303); - -var msg12548 = msg("10101", dup205); - -var msg12549 = msg("10102", dup205); - -var msg12550 = msg("10103", dup205); - -var msg12551 = msg("10104", dup205); - -var msg12552 = msg("10105", dup205); - -var msg12553 = msg("10106", dup205); - -var msg12554 = msg("10107", dup205); - -var msg12555 = msg("10108", dup205); - -var msg12556 = msg("10109", dup205); - -var msg12557 = msg("10110", dup205); - -var msg12558 = msg("10111", dup205); - -var msg12559 = msg("10112", dup205); - -var msg12560 = msg("10113", dup192); - -var msg12561 = msg("10114", dup192); - -var msg12562 = msg("10115", dup198); - -var msg12563 = msg("10116", dup265); - -var msg12564 = msg("10117", dup276); - -var msg12565 = msg("10118", dup276); - -var msg12566 = msg("10119", dup276); - -var msg12567 = msg("10120", dup276); - -var msg12568 = msg("10121", dup276); - -var msg12569 = msg("10122", dup276); - -var msg12570 = msg("10123", dup287); - -var msg12571 = msg("10124", dup285); - -var msg12572 = msg("10125", dup222); - -var msg12573 = msg("10126", dup265); - -var msg12574 = msg("10127", dup198); - -var msg12575 = msg("10128", dup265); - -var msg12576 = msg("10129", dup265); - -var msg12577 = msg("10130", dup196); - -var msg12578 = msg("10131", dup269); - -var msg12579 = msg("10132", dup198); - -var msg12580 = msg("10133", dup198); - -var msg12581 = msg("10134", dup222); - -var msg12582 = msg("10135", dup198); - -var msg12583 = msg("10136", dup285); - -var msg12584 = msg("10137", dup265); - -var msg12585 = msg("10138", dup265); - -var msg12586 = msg("10139", dup265); - -var msg12587 = msg("10140", dup265); - -var msg12588 = msg("10141", dup265); - -var msg12589 = msg("10142", dup265); - -var msg12590 = msg("10143", dup265); - -var msg12591 = msg("10144", dup265); - -var msg12592 = msg("10145", dup265); - -var msg12593 = msg("10146", dup265); - -var msg12594 = msg("10147", dup265); - -var msg12595 = msg("10148", dup265); - -var msg12596 = msg("10149", dup265); - -var msg12597 = msg("10150", dup265); - -var msg12598 = msg("10151", dup265); - -var msg12599 = msg("10152", dup265); - -var msg12600 = msg("10153", dup265); - -var msg12601 = msg("10154", dup265); - -var msg12602 = msg("10155", dup265); - -var msg12603 = msg("10156", dup265); - -var msg12604 = msg("10157", dup265); - -var msg12605 = msg("10158", dup276); - -var msg12606 = msg("10159", dup276); - -var msg12607 = msg("10160", dup276); - -var msg12608 = msg("10161", dup276); - -var msg12609 = msg("10162", dup265); - -var msg12610 = msg("10163", dup265); - -var msg12611 = msg("10164", dup303); - -var msg12612 = msg("10165", dup303); - -var msg12613 = msg("10166", dup303); - -var msg12614 = msg("10167", dup303); - -var msg12615 = msg("10168", dup205); - -var msg12616 = msg("10169", dup205); - -var msg12617 = msg("10170", dup265); - -var msg12618 = msg("10171", dup265); - -var msg12619 = msg("10172", dup267); - -var msg12620 = msg("10173", dup194); - -var msg12621 = msg("10174", dup194); - -var msg12622 = msg("10175", dup194); - -var msg12623 = msg("10176", dup224); - -var msg12624 = msg("10177", dup224); - -var msg12625 = msg("10178", dup224); - -var msg12626 = msg("10179", dup303); - -var msg12627 = msg("10180", dup303); - -var msg12628 = msg("10181", dup303); - -var msg12629 = msg("10182", dup303); - -var msg12630 = msg("10183", dup303); - -var msg12631 = msg("10184", dup205); - -var msg12632 = msg("10185", dup205); - -var msg12633 = msg("10186", dup250); - -var msg12634 = msg("10187", dup197); - -var msg12635 = msg("10188", dup222); - -var msg12636 = msg("10189", dup265); - -var msg12637 = msg("10190", dup265); - -var msg12638 = msg("10191", dup265); - -var msg12639 = msg("10192", dup265); - -var msg12640 = msg("10193", dup265); - -var msg12641 = msg("10194", dup265); - -var msg12642 = msg("10195", dup267); - -var msg12643 = msg("10196", dup205); - -var msg12644 = msg("10197", dup205); - -var msg12645 = msg("10198", dup276); - -var msg12646 = msg("10199", dup276); - -var msg12647 = msg("10200", dup276); - -var msg12648 = msg("10201", dup276); - -var msg12649 = msg("10202", dup194); - -var msg12650 = msg("10203", dup194); - -var msg12651 = msg("10204", dup194); - -var msg12652 = msg("10205", dup194); - -var msg12653 = msg("10206", dup194); - -var msg12654 = msg("10207", dup194); - -var msg12655 = msg("10208", dup276); - -var msg12656 = msg("10209", dup276); - -var msg12657 = msg("10210", dup276); - -var msg12658 = msg("10211", dup276); - -var msg12659 = msg("10212", dup276); - -var msg12660 = msg("10213", dup276); - -var msg12661 = msg("10214", dup265); - -var msg12662 = msg("10215", dup265); - -var msg12663 = msg("10216", dup265); - -var msg12664 = msg("10217", dup276); - -var msg12665 = msg("10218", dup276); - -var msg12666 = msg("10219", dup276); - -var msg12667 = msg("10220", dup276); - -var msg12668 = msg("10221", dup276); - -var msg12669 = msg("10222", dup276); - -var msg12670 = msg("10223", dup276); - -var msg12671 = msg("10224", dup276); - -var msg12672 = msg("10225", dup276); - -var msg12673 = msg("10226", dup276); - -var msg12674 = msg("10227", dup276); - -var msg12675 = msg("10228", dup276); - -var msg12676 = msg("10229", dup276); - -var msg12677 = msg("10230", dup276); - -var msg12678 = msg("10231", dup276); - -var msg12679 = msg("10232", dup276); - -var msg12680 = msg("10233", dup276); - -var msg12681 = msg("10234", dup276); - -var msg12682 = msg("10235", dup276); - -var msg12683 = msg("10236", dup276); - -var msg12684 = msg("10237", dup276); - -var msg12685 = msg("10238", dup276); - -var msg12686 = msg("10239", dup276); - -var msg12687 = msg("10240", dup276); - -var msg12688 = msg("10241", dup276); - -var msg12689 = msg("10242", dup276); - -var msg12690 = msg("10243", dup276); - -var msg12691 = msg("10244", dup276); - -var msg12692 = msg("10245", dup276); - -var msg12693 = msg("10246", dup276); - -var msg12694 = msg("10247", dup276); - -var msg12695 = msg("10248", dup276); - -var msg12696 = msg("10249", dup276); - -var msg12697 = msg("10250", dup276); - -var msg12698 = msg("10251", dup276); - -var msg12699 = msg("10252", dup276); - -var msg12700 = msg("10253", dup276); - -var msg12701 = msg("10254", dup276); - -var msg12702 = msg("10255", dup276); - -var msg12703 = msg("10256", dup276); - -var msg12704 = msg("10257", dup276); - -var msg12705 = msg("10258", dup276); - -var msg12706 = msg("10259", dup276); - -var msg12707 = msg("10260", dup276); - -var msg12708 = msg("10261", dup276); - -var msg12709 = msg("10262", dup276); - -var msg12710 = msg("10263", dup276); - -var msg12711 = msg("10264", dup276); - -var msg12712 = msg("10265", dup276); - -var msg12713 = msg("10266", dup276); - -var msg12714 = msg("10267", dup276); - -var msg12715 = msg("10268", dup276); - -var msg12716 = msg("10269", dup276); - -var msg12717 = msg("10270", dup276); - -var msg12718 = msg("10271", dup276); - -var msg12719 = msg("10272", dup276); - -var msg12720 = msg("10273", dup276); - -var msg12721 = msg("10274", dup276); - -var msg12722 = msg("10275", dup276); - -var msg12723 = msg("10276", dup276); - -var msg12724 = msg("10277", dup276); - -var msg12725 = msg("10278", dup276); - -var msg12726 = msg("10279", dup276); - -var msg12727 = msg("10280", dup276); - -var msg12728 = msg("10281", dup276); - -var msg12729 = msg("10282", dup276); - -var msg12730 = msg("10283", dup276); - -var msg12731 = msg("10284", dup276); - -var msg12732 = msg("10285", dup276); - -var msg12733 = msg("10286", dup276); - -var msg12734 = msg("10287", dup276); - -var msg12735 = msg("10288", dup276); - -var msg12736 = msg("10289", dup276); - -var msg12737 = msg("10290", dup276); - -var msg12738 = msg("10291", dup276); - -var msg12739 = msg("10292", dup276); - -var msg12740 = msg("10293", dup276); - -var msg12741 = msg("10294", dup276); - -var msg12742 = msg("10295", dup276); - -var msg12743 = msg("10296", dup276); - -var msg12744 = msg("10297", dup276); - -var msg12745 = msg("10298", dup276); - -var msg12746 = msg("10299", dup276); - -var msg12747 = msg("10300", dup276); - -var msg12748 = msg("10301", dup276); - -var msg12749 = msg("10302", dup276); - -var msg12750 = msg("10303", dup276); - -var msg12751 = msg("10304", dup276); - -var msg12752 = msg("10305", dup276); - -var msg12753 = msg("10306", dup276); - -var msg12754 = msg("10307", dup276); - -var msg12755 = msg("10308", dup276); - -var msg12756 = msg("10309", dup276); - -var msg12757 = msg("10310", dup276); - -var msg12758 = msg("10311", dup276); - -var msg12759 = msg("10312", dup276); - -var msg12760 = msg("10313", dup276); - -var msg12761 = msg("10314", dup276); - -var msg12762 = msg("10315", dup276); - -var msg12763 = msg("10316", dup276); - -var msg12764 = msg("10317", dup276); - -var msg12765 = msg("10318", dup276); - -var msg12766 = msg("10319", dup276); - -var msg12767 = msg("10320", dup276); - -var msg12768 = msg("10321", dup276); - -var msg12769 = msg("10322", dup276); - -var msg12770 = msg("10323", dup276); - -var msg12771 = msg("10324", dup276); - -var msg12772 = msg("10325", dup276); - -var msg12773 = msg("10326", dup276); - -var msg12774 = msg("10327", dup276); - -var msg12775 = msg("10328", dup276); - -var msg12776 = msg("10329", dup276); - -var msg12777 = msg("10330", dup276); - -var msg12778 = msg("10331", dup276); - -var msg12779 = msg("10332", dup276); - -var msg12780 = msg("10333", dup276); - -var msg12781 = msg("10334", dup276); - -var msg12782 = msg("10335", dup276); - -var msg12783 = msg("10336", dup276); - -var msg12784 = msg("10337", dup276); - -var msg12785 = msg("10338", dup276); - -var msg12786 = msg("10339", dup276); - -var msg12787 = msg("10340", dup276); - -var msg12788 = msg("10341", dup276); - -var msg12789 = msg("10342", dup276); - -var msg12790 = msg("10343", dup276); - -var msg12791 = msg("10344", dup276); - -var msg12792 = msg("10345", dup276); - -var msg12793 = msg("10346", dup276); - -var msg12794 = msg("10347", dup276); - -var msg12795 = msg("10348", dup276); - -var msg12796 = msg("10349", dup276); - -var msg12797 = msg("10350", dup276); - -var msg12798 = msg("10351", dup276); - -var msg12799 = msg("10352", dup276); - -var msg12800 = msg("10353", dup276); - -var msg12801 = msg("10354", dup276); - -var msg12802 = msg("10355", dup276); - -var msg12803 = msg("10356", dup276); - -var msg12804 = msg("10357", dup276); - -var msg12805 = msg("10358", dup276); - -var msg12806 = msg("10359", dup276); - -var msg12807 = msg("10360", dup276); - -var msg12808 = msg("10361", dup276); - -var msg12809 = msg("10362", dup276); - -var msg12810 = msg("10363", dup276); - -var msg12811 = msg("10364", dup276); - -var msg12812 = msg("10365", dup276); - -var msg12813 = msg("10366", dup276); - -var msg12814 = msg("10367", dup276); - -var msg12815 = msg("10368", dup276); - -var msg12816 = msg("10369", dup276); - -var msg12817 = msg("10370", dup276); - -var msg12818 = msg("10371", dup276); - -var msg12819 = msg("10372", dup276); - -var msg12820 = msg("10373", dup276); - -var msg12821 = msg("10374", dup276); - -var msg12822 = msg("10375", dup276); - -var msg12823 = msg("10376", dup276); - -var msg12824 = msg("10377", dup276); - -var msg12825 = msg("10378", dup276); - -var msg12826 = msg("10379", dup276); - -var msg12827 = msg("10380", dup276); - -var msg12828 = msg("10381", dup276); - -var msg12829 = msg("10382", dup276); - -var msg12830 = msg("10383", dup276); - -var msg12831 = msg("10384", dup276); - -var msg12832 = msg("10385", dup276); - -var msg12833 = msg("10386", dup276); - -var msg12834 = msg("10387", dup265); - -var msg12835 = msg("10388", dup265); - -var msg12836 = msg("10389", dup265); - -var msg12837 = msg("10390", dup265); - -var msg12838 = msg("10391", dup265); - -var msg12839 = msg("10392", dup265); - -var msg12840 = msg("10393", dup265); - -var msg12841 = msg("10394", dup265); - -var msg12842 = msg("10395", dup265); - -var msg12843 = msg("10396", dup265); - -var msg12844 = msg("10397", dup265); - -var msg12845 = msg("10398", dup265); - -var msg12846 = msg("10399", dup265); - -var msg12847 = msg("10400", dup265); - -var msg12848 = msg("10401", dup265); - -var msg12849 = msg("10402", dup192); - -var msg12850 = msg("10403", dup192); - -var msg12851 = msg("10404", dup265); - -var msg12852 = msg("10405", dup265); - -var msg12853 = msg("10406", dup265); - -var msg12854 = msg("10407", dup222); - -var msg12855 = msg("10408", dup287); - -var msg12856 = msg("10409", dup258); - -var msg12857 = msg("10410", dup287); - -var msg12858 = msg("10411", dup258); - -var msg12859 = msg("10412", dup265); - -var msg12860 = msg("10413", dup265); - -var msg12861 = msg("10414", dup265); - -var msg12862 = msg("10415", dup265); - -var msg12863 = msg("10416", dup265); - -var msg12864 = msg("10417", dup265); - -var msg12865 = msg("10418", dup196); - -var msg12866 = msg("10419", dup265); - -var msg12867 = msg("10420", dup265); - -var msg12868 = msg("10421", dup265); - -var msg12869 = msg("10422", dup265); - -var msg12870 = msg("10423", dup265); - -var msg12871 = msg("10424", dup265); - -var msg12872 = msg("10425", dup265); - -var msg12873 = msg("10426", dup265); - -var msg12874 = msg("10427", dup194); - -var msg12875 = msg("10428", dup194); - -var msg12876 = msg("10429", dup194); - -var msg12877 = msg("10430", dup194); - -var msg12878 = msg("10431", dup194); - -var msg12879 = msg("10432", dup194); - -var msg12880 = msg("10433", dup194); - -var msg12881 = msg("10434", dup194); - -var msg12882 = msg("10435", dup303); - -var msg12883 = msg("10436", dup303); - -var msg12884 = msg("10437", dup303); - -var msg12885 = msg("10438", dup303); - -var msg12886 = msg("10439", dup303); - -var msg12887 = msg("10440", dup303); - -var msg12888 = msg("10441", dup303); - -var msg12889 = msg("10442", dup192); - -var msg12890 = msg("10443", dup192); - -var msg12891 = msg("10444", dup192); - -var msg12892 = msg("10445", dup192); - -var msg12893 = msg("10446", dup192); - -var msg12894 = msg("10447", dup192); - -var msg12895 = msg("10448", dup192); - -var msg12896 = msg("10449", dup192); - -var msg12897 = msg("10450", dup192); - -var msg12898 = msg("10451", dup192); - -var msg12899 = msg("10452", dup192); - -var msg12900 = msg("10453", dup192); - -var msg12901 = msg("10454", dup192); - -var msg12902 = msg("10455", dup192); - -var msg12903 = msg("10456", dup192); - -var msg12904 = msg("10457", dup192); - -var msg12905 = msg("10458", dup192); - -var msg12906 = msg("10459", dup192); - -var msg12907 = msg("10460", dup192); - -var msg12908 = msg("10461", dup192); - -var msg12909 = msg("10462", dup192); - -var msg12910 = msg("10463", dup192); - -var msg12911 = msg("10464", dup285); - -var msg12912 = msg("10465", dup265); - -var msg12913 = msg("10466", dup265); - -var msg12914 = msg("10467", dup265); - -var msg12915 = msg("10468", dup265); - -var msg12916 = msg("10469", dup265); - -var msg12917 = msg("10470", dup265); - -var msg12918 = msg("10471", dup265); - -var msg12919 = msg("10472", dup265); - -var msg12920 = msg("10473", dup265); - -var msg12921 = msg("10474", dup265); - -var msg12922 = msg("10475", dup222); - -var msg12923 = msg("10476", dup265); - -var msg12924 = msg("10477", dup265); - -var msg12925 = msg("10478", dup265); - -var msg12926 = msg("10479", dup265); - -var msg12927 = msg("10480", dup222); - -var msg12928 = msg("10481", dup222); - -var msg12929 = msg("10482", dup287); - -var msg12930 = msg("10483", dup258); - -var msg12931 = msg("10484", dup287); - -var msg12932 = msg("10485", dup258); - -var msg12933 = msg("10486", dup276); - -var msg12934 = msg("10487", dup276); - -var msg12935 = msg("10488", dup276); - -var msg12936 = msg("10489", dup276); - -var msg12937 = msg("10490", dup276); - -var msg12938 = msg("10491", dup276); - -var msg12939 = msg("10492", dup276); - -var msg12940 = msg("10493", dup276); - -var msg12941 = msg("10494", dup276); - -var msg12942 = msg("10495", dup276); - -var msg12943 = msg("10496", dup276); - -var msg12944 = msg("10497", dup276); - -var msg12945 = msg("10498", dup276); - -var msg12946 = msg("10499", dup276); - -var msg12947 = msg("10500", dup276); - -var msg12948 = msg("10501", dup276); - -var msg12949 = msg("10502", dup276); - -var msg12950 = msg("10503", dup276); - -var msg12951 = msg("10504", dup196); - -var msg12952 = msg("10505", dup196); - -var msg12953 = msg("10506", dup196); - -var msg12954 = msg("10507", dup196); - -var msg12955 = msg("10508", dup196); - -var msg12956 = msg("10509", dup196); - -var msg12957 = msg("10510", dup196); - -var msg12958 = msg("10511", dup196); - -var msg12959 = msg("10512", dup196); - -var msg12960 = msg("10513", dup196); - -var msg12961 = msg("10514", dup276); - -var msg12962 = msg("10515", dup276); - -var msg12963 = msg("10516", dup276); - -var msg12964 = msg("10517", dup276); - -var msg12965 = msg("10518", dup276); - -var msg12966 = msg("10519", dup276); - -var msg12967 = msg("10520", dup276); - -var msg12968 = msg("10521", dup276); - -var msg12969 = msg("10522", dup276); - -var msg12970 = msg("10523", dup276); - -var msg12971 = msg("10524", dup276); - -var msg12972 = msg("10525", dup276); - -var msg12973 = msg("10526", dup276); - -var msg12974 = msg("10527", dup276); - -var msg12975 = msg("10528", dup276); - -var msg12976 = msg("10529", dup276); - -var msg12977 = msg("10530", dup276); - -var msg12978 = msg("10531", dup276); - -var msg12979 = msg("10532", dup276); - -var msg12980 = msg("10533", dup276); - -var msg12981 = msg("10534", dup276); - -var msg12982 = msg("10535", dup276); - -var msg12983 = msg("10536", dup276); - -var msg12984 = msg("10537", dup276); - -var msg12985 = msg("10538", dup276); - -var msg12986 = msg("10539", dup276); - -var msg12987 = msg("10540", dup276); - -var msg12988 = msg("10541", dup276); - -var msg12989 = msg("10542", dup276); - -var msg12990 = msg("10543", dup276); - -var msg12991 = msg("10544", dup276); - -var msg12992 = msg("10545", dup276); - -var msg12993 = msg("10546", dup276); - -var msg12994 = msg("10547", dup276); - -var msg12995 = msg("10548", dup276); - -var msg12996 = msg("10549", dup276); - -var msg12997 = msg("10550", dup276); - -var msg12998 = msg("10551", dup276); - -var msg12999 = msg("10552", dup276); - -var msg13000 = msg("10553", dup276); - -var msg13001 = msg("10554", dup276); - -var msg13002 = msg("10555", dup276); - -var msg13003 = msg("10556", dup276); - -var msg13004 = msg("10557", dup276); - -var msg13005 = msg("10558", dup276); - -var msg13006 = msg("10559", dup276); - -var msg13007 = msg("10560", dup276); - -var msg13008 = msg("10561", dup276); - -var msg13009 = msg("10562", dup276); - -var msg13010 = msg("10563", dup276); - -var msg13011 = msg("10564", dup276); - -var msg13012 = msg("10565", dup276); - -var msg13013 = msg("10566", dup276); - -var msg13014 = msg("10567", dup276); - -var msg13015 = msg("10568", dup276); - -var msg13016 = msg("10569", dup276); - -var msg13017 = msg("10570", dup276); - -var msg13018 = msg("10571", dup276); - -var msg13019 = msg("10572", dup276); - -var msg13020 = msg("10573", dup276); - -var msg13021 = msg("10574", dup276); - -var msg13022 = msg("10575", dup276); - -var msg13023 = msg("10576", dup276); - -var msg13024 = msg("10577", dup276); - -var msg13025 = msg("10578", dup276); - -var msg13026 = msg("10579", dup276); - -var msg13027 = msg("10580", dup276); - -var msg13028 = msg("10581", dup276); - -var msg13029 = msg("10582", dup276); - -var msg13030 = msg("10583", dup276); - -var msg13031 = msg("10584", dup276); - -var msg13032 = msg("10585", dup276); - -var msg13033 = msg("10586", dup276); - -var msg13034 = msg("10587", dup276); - -var msg13035 = msg("10588", dup276); - -var msg13036 = msg("10589", dup276); - -var msg13037 = msg("10590", dup276); - -var msg13038 = msg("10591", dup276); - -var msg13039 = msg("10592", dup276); - -var msg13040 = msg("10593", dup276); - -var msg13041 = msg("10594", dup276); - -var msg13042 = msg("10595", dup276); - -var msg13043 = msg("10596", dup276); - -var msg13044 = msg("10597", dup276); - -var msg13045 = msg("10598", dup276); - -var msg13046 = msg("10599", dup276); - -var msg13047 = msg("10600", dup276); - -var msg13048 = msg("10601", dup276); - -var msg13049 = msg("10602", dup276); - -var msg13050 = msg("10603", dup276); - -var msg13051 = msg("10604", dup276); - -var msg13052 = msg("10605", dup276); - -var msg13053 = msg("10606", dup276); - -var msg13054 = msg("10607", dup276); - -var msg13055 = msg("10608", dup276); - -var msg13056 = msg("10609", dup276); - -var msg13057 = msg("10610", dup276); - -var msg13058 = msg("10611", dup276); - -var msg13059 = msg("10612", dup276); - -var msg13060 = msg("10613", dup276); - -var msg13061 = msg("10614", dup276); - -var msg13062 = msg("10615", dup276); - -var msg13063 = msg("10616", dup276); - -var msg13064 = msg("10617", dup276); - -var msg13065 = msg("10618", dup276); - -var msg13066 = msg("10619", dup276); - -var msg13067 = msg("10620", dup276); - -var msg13068 = msg("10621", dup276); - -var msg13069 = msg("10622", dup276); - -var msg13070 = msg("10623", dup276); - -var msg13071 = msg("10624", dup276); - -var msg13072 = msg("10625", dup276); - -var msg13073 = msg("10626", dup276); - -var msg13074 = msg("10627", dup276); - -var msg13075 = msg("10628", dup276); - -var msg13076 = msg("10629", dup276); - -var msg13077 = msg("10630", dup276); - -var msg13078 = msg("10631", dup276); - -var msg13079 = msg("10632", dup276); - -var msg13080 = msg("10633", dup276); - -var msg13081 = msg("10634", dup276); - -var msg13082 = msg("10635", dup276); - -var msg13083 = msg("10636", dup276); - -var msg13084 = msg("10637", dup276); - -var msg13085 = msg("10638", dup276); - -var msg13086 = msg("10639", dup276); - -var msg13087 = msg("10640", dup276); - -var msg13088 = msg("10641", dup276); - -var msg13089 = msg("10642", dup276); - -var msg13090 = msg("10643", dup276); - -var msg13091 = msg("10644", dup276); - -var msg13092 = msg("10645", dup276); - -var msg13093 = msg("10646", dup276); - -var msg13094 = msg("10647", dup276); - -var msg13095 = msg("10648", dup276); - -var msg13096 = msg("10649", dup276); - -var msg13097 = msg("10650", dup276); - -var msg13098 = msg("10651", dup276); - -var msg13099 = msg("10652", dup276); - -var msg13100 = msg("10653", dup276); - -var msg13101 = msg("10654", dup276); - -var msg13102 = msg("10655", dup276); - -var msg13103 = msg("10656", dup276); - -var msg13104 = msg("10657", dup276); - -var msg13105 = msg("10658", dup276); - -var msg13106 = msg("10659", dup276); - -var msg13107 = msg("10660", dup276); - -var msg13108 = msg("10661", dup276); - -var msg13109 = msg("10662", dup276); - -var msg13110 = msg("10663", dup276); - -var msg13111 = msg("10664", dup276); - -var msg13112 = msg("10665", dup276); - -var msg13113 = msg("10666", dup276); - -var msg13114 = msg("10667", dup276); - -var msg13115 = msg("10668", dup276); - -var msg13116 = msg("10669", dup276); - -var msg13117 = msg("10670", dup201); - -var msg13118 = msg("10671", dup276); - -var msg13119 = msg("10672", dup276); - -var msg13120 = msg("10673", dup201); - -var msg13121 = msg("10674", dup276); - -var msg13122 = msg("10675", dup201); - -var msg13123 = msg("10676", dup201); - -var msg13124 = msg("10677", dup201); - -var msg13125 = msg("10678", dup276); - -var msg13126 = msg("10679", dup276); - -var msg13127 = msg("10680", dup201); - -var msg13128 = msg("10681", dup276); - -var msg13129 = msg("10682", dup276); - -var msg13130 = msg("10683", dup201); - -var msg13131 = msg("10684", dup201); - -var msg13132 = msg("10685", dup276); - -var msg13133 = msg("10686", dup276); - -var msg13134 = msg("10687", dup276); - -var msg13135 = msg("10688", dup276); - -var msg13136 = msg("10689", dup201); - -var msg13137 = msg("10690", dup276); - -var msg13138 = msg("10691", dup201); - -var msg13139 = msg("10692", dup276); - -var msg13140 = msg("10693", dup276); - -var msg13141 = msg("10694", dup201); - -var msg13142 = msg("10695", dup201); - -var msg13143 = msg("10696", dup276); - -var msg13144 = msg("10697", dup276); - -var msg13145 = msg("10698", dup276); - -var msg13146 = msg("10699", dup276); - -var msg13147 = msg("10700", dup276); - -var msg13148 = msg("10701", dup276); - -var msg13149 = msg("10702", dup276); - -var msg13150 = msg("10703", dup276); - -var msg13151 = msg("10704", dup276); - -var msg13152 = msg("10705", dup276); - -var msg13153 = msg("10706", dup276); - -var msg13154 = msg("10707", dup276); - -var msg13155 = msg("10708", dup276); - -var msg13156 = msg("10709", dup276); - -var msg13157 = msg("10710", dup276); - -var msg13158 = msg("10711", dup276); - -var msg13159 = msg("10712", dup276); - -var msg13160 = msg("10713", dup276); - -var msg13161 = msg("10714", dup276); - -var msg13162 = msg("10715", dup276); - -var msg13163 = msg("10716", dup276); - -var msg13164 = msg("10717", dup276); - -var msg13165 = msg("10718", dup276); - -var msg13166 = msg("10719", dup276); - -var msg13167 = msg("10720", dup276); - -var msg13168 = msg("10721", dup276); - -var msg13169 = msg("10722", dup276); - -var msg13170 = msg("10723", dup276); - -var msg13171 = msg("10724", dup276); - -var msg13172 = msg("10725", dup276); - -var msg13173 = msg("10726", dup276); - -var msg13174 = msg("10727", dup276); - -var msg13175 = msg("10728", dup276); - -var msg13176 = msg("10729", dup276); - -var msg13177 = msg("10730", dup276); - -var msg13178 = msg("10731", dup276); - -var msg13179 = msg("10732", dup276); - -var msg13180 = msg("10733", dup276); - -var msg13181 = msg("10734", dup276); - -var msg13182 = msg("10735", dup276); - -var msg13183 = msg("10736", dup276); - -var msg13184 = msg("10737", dup276); - -var msg13185 = msg("10738", dup276); - -var msg13186 = msg("10739", dup276); - -var msg13187 = msg("10740", dup276); - -var msg13188 = msg("10741", dup276); - -var msg13189 = msg("10742", dup276); - -var msg13190 = msg("10743", dup276); - -var msg13191 = msg("10744", dup276); - -var msg13192 = msg("10745", dup276); - -var msg13193 = msg("10746", dup276); - -var msg13194 = msg("10747", dup276); - -var msg13195 = msg("10748", dup276); - -var msg13196 = msg("10749", dup276); - -var msg13197 = msg("10750", dup276); - -var msg13198 = msg("10751", dup276); - -var msg13199 = msg("10752", dup276); - -var msg13200 = msg("10753", dup276); - -var msg13201 = msg("10754", dup276); - -var msg13202 = msg("10755", dup276); - -var msg13203 = msg("10756", dup276); - -var msg13204 = msg("10757", dup276); - -var msg13205 = msg("10758", dup276); - -var msg13206 = msg("10759", dup276); - -var msg13207 = msg("10760", dup276); - -var msg13208 = msg("10761", dup276); - -var msg13209 = msg("10762", dup276); - -var msg13210 = msg("10763", dup276); - -var msg13211 = msg("10764", dup276); - -var msg13212 = msg("10765", dup276); - -var msg13213 = msg("10766", dup276); - -var msg13214 = msg("10767", dup276); - -var msg13215 = msg("10768", dup276); - -var msg13216 = msg("10769", dup276); - -var msg13217 = msg("10770", dup276); - -var msg13218 = msg("10771", dup276); - -var msg13219 = msg("10772", dup276); - -var msg13220 = msg("10773", dup276); - -var msg13221 = msg("10774", dup276); - -var msg13222 = msg("10775", dup276); - -var msg13223 = msg("10776", dup276); - -var msg13224 = msg("10777", dup276); - -var msg13225 = msg("10778", dup276); - -var msg13226 = msg("10779", dup276); - -var msg13227 = msg("10780", dup276); - -var msg13228 = msg("10781", dup276); - -var msg13229 = msg("10782", dup276); - -var msg13230 = msg("10783", dup276); - -var msg13231 = msg("10784", dup276); - -var msg13232 = msg("10785", dup276); - -var msg13233 = msg("10786", dup276); - -var msg13234 = msg("10787", dup276); - -var msg13235 = msg("10788", dup276); - -var msg13236 = msg("10789", dup276); - -var msg13237 = msg("10790", dup276); - -var msg13238 = msg("10791", dup276); - -var msg13239 = msg("10792", dup276); - -var msg13240 = msg("10793", dup276); - -var msg13241 = msg("10794", dup276); - -var msg13242 = msg("10795", dup276); - -var msg13243 = msg("10796", dup276); - -var msg13244 = msg("10797", dup276); - -var msg13245 = msg("10798", dup276); - -var msg13246 = msg("10799", dup276); - -var msg13247 = msg("10800", dup276); - -var msg13248 = msg("10801", dup276); - -var msg13249 = msg("10802", dup276); - -var msg13250 = msg("10803", dup276); - -var msg13251 = msg("10804", dup276); - -var msg13252 = msg("10805", dup276); - -var msg13253 = msg("10806", dup276); - -var msg13254 = msg("10807", dup276); - -var msg13255 = msg("10808", dup276); - -var msg13256 = msg("10809", dup276); - -var msg13257 = msg("10810", dup276); - -var msg13258 = msg("10811", dup276); - -var msg13259 = msg("10812", dup276); - -var msg13260 = msg("10813", dup276); - -var msg13261 = msg("10814", dup276); - -var msg13262 = msg("10815", dup276); - -var msg13263 = msg("10816", dup276); - -var msg13264 = msg("10817", dup276); - -var msg13265 = msg("10818", dup276); - -var msg13266 = msg("10819", dup276); - -var msg13267 = msg("10820", dup276); - -var msg13268 = msg("10821", dup276); - -var msg13269 = msg("10822", dup276); - -var msg13270 = msg("10823", dup276); - -var msg13271 = msg("10824", dup276); - -var msg13272 = msg("10825", dup276); - -var msg13273 = msg("10826", dup276); - -var msg13274 = msg("10827", dup276); - -var msg13275 = msg("10828", dup276); - -var msg13276 = msg("10829", dup276); - -var msg13277 = msg("10830", dup276); - -var msg13278 = msg("10831", dup276); - -var msg13279 = msg("10832", dup276); - -var msg13280 = msg("10833", dup276); - -var msg13281 = msg("10834", dup276); - -var msg13282 = msg("10835", dup276); - -var msg13283 = msg("10836", dup276); - -var msg13284 = msg("10837", dup276); - -var msg13285 = msg("10838", dup276); - -var msg13286 = msg("10839", dup276); - -var msg13287 = msg("10840", dup276); - -var msg13288 = msg("10841", dup276); - -var msg13289 = msg("10842", dup276); - -var msg13290 = msg("10843", dup276); - -var msg13291 = msg("10844", dup276); - -var msg13292 = msg("10845", dup276); - -var msg13293 = msg("10846", dup276); - -var msg13294 = msg("10847", dup276); - -var msg13295 = msg("10848", dup276); - -var msg13296 = msg("10849", dup276); - -var msg13297 = msg("10850", dup276); - -var msg13298 = msg("10851", dup276); - -var msg13299 = msg("10852", dup276); - -var msg13300 = msg("10853", dup276); - -var msg13301 = msg("10854", dup276); - -var msg13302 = msg("10855", dup276); - -var msg13303 = msg("10856", dup276); - -var msg13304 = msg("10857", dup276); - -var msg13305 = msg("10858", dup276); - -var msg13306 = msg("10859", dup276); - -var msg13307 = msg("10860", dup276); - -var msg13308 = msg("10861", dup276); - -var msg13309 = msg("10862", dup276); - -var msg13310 = msg("10863", dup276); - -var msg13311 = msg("10864", dup276); - -var msg13312 = msg("10865", dup276); - -var msg13313 = msg("10866", dup276); - -var msg13314 = msg("10867", dup276); - -var msg13315 = msg("10868", dup276); - -var msg13316 = msg("10869", dup276); - -var msg13317 = msg("10870", dup276); - -var msg13318 = msg("10871", dup276); - -var msg13319 = msg("10872", dup276); - -var msg13320 = msg("10873", dup276); - -var msg13321 = msg("10874", dup276); - -var msg13322 = msg("10875", dup276); - -var msg13323 = msg("10876", dup276); - -var msg13324 = msg("10877", dup276); - -var msg13325 = msg("10878", dup276); - -var msg13326 = msg("10879", dup276); - -var msg13327 = msg("10880", dup276); - -var msg13328 = msg("10881", dup276); - -var msg13329 = msg("10882", dup276); - -var msg13330 = msg("10883", dup276); - -var msg13331 = msg("10884", dup276); - -var msg13332 = msg("10885", dup276); - -var msg13333 = msg("10886", dup276); - -var msg13334 = msg("10887", dup276); - -var msg13335 = msg("10888", dup276); - -var msg13336 = msg("10889", dup276); - -var msg13337 = msg("10890", dup276); - -var msg13338 = msg("10891", dup276); - -var msg13339 = msg("10892", dup276); - -var msg13340 = msg("10893", dup276); - -var msg13341 = msg("10894", dup276); - -var msg13342 = msg("10895", dup276); - -var msg13343 = msg("10896", dup276); - -var msg13344 = msg("10897", dup276); - -var msg13345 = msg("10898", dup276); - -var msg13346 = msg("10899", dup276); - -var msg13347 = msg("10900", dup276); - -var msg13348 = msg("10901", dup276); - -var msg13349 = msg("10902", dup276); - -var msg13350 = msg("10903", dup276); - -var msg13351 = msg("10904", dup276); - -var msg13352 = msg("10905", dup276); - -var msg13353 = msg("10906", dup276); - -var msg13354 = msg("10907", dup276); - -var msg13355 = msg("10908", dup276); - -var msg13356 = msg("10909", dup276); - -var msg13357 = msg("10910", dup276); - -var msg13358 = msg("10911", dup276); - -var msg13359 = msg("10912", dup276); - -var msg13360 = msg("10913", dup276); - -var msg13361 = msg("10914", dup276); - -var msg13362 = msg("10915", dup276); - -var msg13363 = msg("10916", dup276); - -var msg13364 = msg("10917", dup276); - -var msg13365 = msg("10918", dup276); - -var msg13366 = msg("10919", dup276); - -var msg13367 = msg("10920", dup276); - -var msg13368 = msg("10921", dup276); - -var msg13369 = msg("10922", dup276); - -var msg13370 = msg("10923", dup276); - -var msg13371 = msg("10924", dup276); - -var msg13372 = msg("10925", dup276); - -var msg13373 = msg("10926", dup276); - -var msg13374 = msg("10927", dup276); - -var msg13375 = msg("10928", dup276); - -var msg13376 = msg("10929", dup276); - -var msg13377 = msg("10930", dup276); - -var msg13378 = msg("10931", dup276); - -var msg13379 = msg("10932", dup276); - -var msg13380 = msg("10933", dup276); - -var msg13381 = msg("10934", dup276); - -var msg13382 = msg("10935", dup276); - -var msg13383 = msg("10936", dup276); - -var msg13384 = msg("10937", dup276); - -var msg13385 = msg("10938", dup276); - -var msg13386 = msg("10939", dup276); - -var msg13387 = msg("10940", dup276); - -var msg13388 = msg("10941", dup276); - -var msg13389 = msg("10942", dup276); - -var msg13390 = msg("10943", dup276); - -var msg13391 = msg("10944", dup276); - -var msg13392 = msg("10945", dup276); - -var msg13393 = msg("10946", dup276); - -var msg13394 = msg("10947", dup276); - -var msg13395 = msg("10948", dup276); - -var msg13396 = msg("10949", dup276); - -var msg13397 = msg("10950", dup276); - -var msg13398 = msg("10951", dup276); - -var msg13399 = msg("10952", dup276); - -var msg13400 = msg("10953", dup276); - -var msg13401 = msg("10954", dup201); - -var msg13402 = msg("10955", dup201); - -var msg13403 = msg("10956", dup201); - -var msg13404 = msg("10957", dup201); - -var msg13405 = msg("10958", dup276); - -var msg13406 = msg("10959", dup201); - -var msg13407 = msg("10960", dup276); - -var msg13408 = msg("10961", dup276); - -var msg13409 = msg("10962", dup276); - -var msg13410 = msg("10963", dup276); - -var msg13411 = msg("10964", dup201); - -var msg13412 = msg("10965", dup276); - -var msg13413 = msg("10966", dup201); - -var msg13414 = msg("10967", dup201); - -var msg13415 = msg("10968", dup276); - -var msg13416 = msg("10969", dup276); - -var msg13417 = msg("10970", dup201); - -var msg13418 = msg("10971", dup201); - -var msg13419 = msg("10972", dup201); - -var msg13420 = msg("10973", dup201); - -var msg13421 = msg("10974", dup276); - -var msg13422 = msg("10975", dup276); - -var msg13423 = msg("10976", dup276); - -var msg13424 = msg("10977", dup276); - -var msg13425 = msg("10978", dup265); - -var msg13426 = msg("10979", dup265); - -var msg13427 = msg("10980", dup265); - -var msg13428 = msg("10981", dup265); - -var msg13429 = msg("10982", dup265); - -var msg13430 = msg("10983", dup265); - -var msg13431 = msg("10984", dup265); - -var msg13432 = msg("10985", dup265); - -var msg13433 = msg("10986", dup265); - -var msg13434 = msg("10987", dup265); - -var msg13435 = msg("10988", dup265); - -var msg13436 = msg("10989", dup265); - -var msg13437 = msg("10990", dup265); - -var msg13438 = msg("10991", dup265); - -var msg13439 = msg("10992", dup265); - -var msg13440 = msg("10993", dup265); - -var msg13441 = msg("10994", dup265); - -var msg13442 = msg("10995", dup198); - -var msg13443 = msg("10996", dup265); - -var msg13444 = msg("10997", dup267); - -var msg13445 = msg("10998", dup197); - -var msg13446 = msg("10999", dup265); - -var msg13447 = msg("11000", dup222); - -var msg13448 = msg("11001", dup222); - -var msg13449 = msg("11002", dup222); - -var msg13450 = msg("11003", dup222); - -var msg13451 = msg("11004", dup197); - -var msg13452 = msg("11005", dup276); - -var msg13453 = msg("11006", dup276); - -var msg13454 = msg("11007", dup276); - -var msg13455 = msg("11008", dup276); - -var msg13456 = msg("11009", dup276); - -var msg13457 = msg("11010", dup276); - -var msg13458 = msg("11011", dup276); - -var msg13459 = msg("11012", dup276); - -var msg13460 = msg("11013", dup276); - -var msg13461 = msg("11014", dup276); - -var msg13462 = msg("11015", dup276); - -var msg13463 = msg("11016", dup276); - -var msg13464 = msg("11017", dup276); - -var msg13465 = msg("11018", dup276); - -var msg13466 = msg("11019", dup276); - -var msg13467 = msg("11020", dup276); - -var msg13468 = msg("11021", dup276); - -var msg13469 = msg("11022", dup276); - -var msg13470 = msg("11023", dup276); - -var msg13471 = msg("11024", dup276); - -var msg13472 = msg("11025", dup276); - -var msg13473 = msg("11026", dup276); - -var msg13474 = msg("11027", dup276); - -var msg13475 = msg("11028", dup276); - -var msg13476 = msg("11029", dup276); - -var msg13477 = msg("11030", dup276); - -var msg13478 = msg("11031", dup276); - -var msg13479 = msg("11032", dup276); - -var msg13480 = msg("11033", dup276); - -var msg13481 = msg("11034", dup276); - -var msg13482 = msg("11035", dup276); - -var msg13483 = msg("11036", dup276); - -var msg13484 = msg("11037", dup276); - -var msg13485 = msg("11038", dup276); - -var msg13486 = msg("11039", dup276); - -var msg13487 = msg("11040", dup276); - -var msg13488 = msg("11041", dup276); - -var msg13489 = msg("11042", dup276); - -var msg13490 = msg("11043", dup276); - -var msg13491 = msg("11044", dup276); - -var msg13492 = msg("11045", dup276); - -var msg13493 = msg("11046", dup276); - -var msg13494 = msg("11047", dup276); - -var msg13495 = msg("11048", dup276); - -var msg13496 = msg("11049", dup276); - -var msg13497 = msg("11050", dup276); - -var msg13498 = msg("11051", dup276); - -var msg13499 = msg("11052", dup276); - -var msg13500 = msg("11053", dup276); - -var msg13501 = msg("11054", dup276); - -var msg13502 = msg("11055", dup276); - -var msg13503 = msg("11056", dup276); - -var msg13504 = msg("11057", dup276); - -var msg13505 = msg("11058", dup276); - -var msg13506 = msg("11059", dup276); - -var msg13507 = msg("11060", dup276); - -var msg13508 = msg("11061", dup276); - -var msg13509 = msg("11062", dup276); - -var msg13510 = msg("11063", dup276); - -var msg13511 = msg("11064", dup276); - -var msg13512 = msg("11065", dup276); - -var msg13513 = msg("11066", dup276); - -var msg13514 = msg("11067", dup276); - -var msg13515 = msg("11068", dup276); - -var msg13516 = msg("11069", dup276); - -var msg13517 = msg("11070", dup276); - -var msg13518 = msg("11071", dup276); - -var msg13519 = msg("11072", dup276); - -var msg13520 = msg("11073", dup276); - -var msg13521 = msg("11074", dup276); - -var msg13522 = msg("11075", dup276); - -var msg13523 = msg("11076", dup276); - -var msg13524 = msg("11077", dup276); - -var msg13525 = msg("11078", dup276); - -var msg13526 = msg("11079", dup276); - -var msg13527 = msg("11080", dup276); - -var msg13528 = msg("11081", dup276); - -var msg13529 = msg("11082", dup276); - -var msg13530 = msg("11083", dup276); - -var msg13531 = msg("11084", dup276); - -var msg13532 = msg("11085", dup276); - -var msg13533 = msg("11086", dup276); - -var msg13534 = msg("11087", dup276); - -var msg13535 = msg("11088", dup276); - -var msg13536 = msg("11089", dup276); - -var msg13537 = msg("11090", dup276); - -var msg13538 = msg("11091", dup276); - -var msg13539 = msg("11092", dup276); - -var msg13540 = msg("11093", dup276); - -var msg13541 = msg("11094", dup276); - -var msg13542 = msg("11095", dup276); - -var msg13543 = msg("11096", dup276); - -var msg13544 = msg("11097", dup276); - -var msg13545 = msg("11098", dup276); - -var msg13546 = msg("11099", dup276); - -var msg13547 = msg("11100", dup276); - -var msg13548 = msg("11101", dup276); - -var msg13549 = msg("11102", dup276); - -var msg13550 = msg("11103", dup276); - -var msg13551 = msg("11104", dup276); - -var msg13552 = msg("11105", dup276); - -var msg13553 = msg("11106", dup276); - -var msg13554 = msg("11107", dup276); - -var msg13555 = msg("11108", dup276); - -var msg13556 = msg("11109", dup276); - -var msg13557 = msg("11110", dup276); - -var msg13558 = msg("11111", dup276); - -var msg13559 = msg("11112", dup276); - -var msg13560 = msg("11113", dup276); - -var msg13561 = msg("11114", dup276); - -var msg13562 = msg("11115", dup276); - -var msg13563 = msg("11116", dup276); - -var msg13564 = msg("11117", dup276); - -var msg13565 = msg("11118", dup276); - -var msg13566 = msg("11119", dup276); - -var msg13567 = msg("11120", dup276); - -var msg13568 = msg("11121", dup276); - -var msg13569 = msg("11122", dup276); - -var msg13570 = msg("11123", dup276); - -var msg13571 = msg("11124", dup276); - -var msg13572 = msg("11125", dup276); - -var msg13573 = msg("11126", dup276); - -var msg13574 = msg("11127", dup276); - -var msg13575 = msg("11128", dup276); - -var msg13576 = msg("11129", dup276); - -var msg13577 = msg("11130", dup276); - -var msg13578 = msg("11131", dup276); - -var msg13579 = msg("11132", dup276); - -var msg13580 = msg("11133", dup276); - -var msg13581 = msg("11134", dup276); - -var msg13582 = msg("11135", dup276); - -var msg13583 = msg("11136", dup276); - -var msg13584 = msg("11137", dup276); - -var msg13585 = msg("11138", dup276); - -var msg13586 = msg("11139", dup276); - -var msg13587 = msg("11140", dup276); - -var msg13588 = msg("11141", dup276); - -var msg13589 = msg("11142", dup276); - -var msg13590 = msg("11143", dup276); - -var msg13591 = msg("11144", dup276); - -var msg13592 = msg("11145", dup276); - -var msg13593 = msg("11146", dup276); - -var msg13594 = msg("11147", dup276); - -var msg13595 = msg("11148", dup276); - -var msg13596 = msg("11149", dup276); - -var msg13597 = msg("11150", dup276); - -var msg13598 = msg("11151", dup276); - -var msg13599 = msg("11152", dup276); - -var msg13600 = msg("11153", dup276); - -var msg13601 = msg("11154", dup276); - -var msg13602 = msg("11155", dup276); - -var msg13603 = msg("11156", dup276); - -var msg13604 = msg("11157", dup276); - -var msg13605 = msg("11158", dup276); - -var msg13606 = msg("11159", dup276); - -var msg13607 = msg("11160", dup276); - -var msg13608 = msg("11161", dup276); - -var msg13609 = msg("11162", dup276); - -var msg13610 = msg("11163", dup276); - -var msg13611 = msg("11164", dup276); - -var msg13612 = msg("11165", dup276); - -var msg13613 = msg("11166", dup276); - -var msg13614 = msg("11167", dup276); - -var msg13615 = msg("11168", dup276); - -var msg13616 = msg("11169", dup276); - -var msg13617 = msg("11170", dup276); - -var msg13618 = msg("11171", dup276); - -var msg13619 = msg("11172", dup276); - -var msg13620 = msg("11173", dup276); - -var msg13621 = msg("11174", dup276); - -var msg13622 = msg("11175", dup201); - -var msg13623 = msg("11176", dup265); - -var msg13624 = msg("11177", dup265); - -var msg13625 = msg("11178", dup265); - -var msg13626 = msg("11179", dup265); - -var msg13627 = msg("11180", dup196); - -var msg13628 = msg("11181", dup265); - -var msg13629 = msg("11182", dup265); - -var msg13630 = msg("11183", dup265); - -var msg13631 = msg("11184", dup265); - -var msg13632 = msg("11185", dup198); - -var msg13633 = msg("11186", dup198); - -var msg13634 = msg("11187", dup265); - -var msg13635 = msg("11188", dup265); - -var msg13636 = msg("11189", dup265); - -var msg13637 = msg("11190", dup265); - -var msg13638 = msg("11191", dup196); - -var msg13639 = msg("11192", dup196); - -var msg13640 = msg("11193", dup240); - -var msg13641 = msg("11194", dup240); - -var msg13642 = msg("11196", dup197); - -var msg13643 = msg("11197", dup265); - -var msg13644 = msg("11198", dup265); - -var msg13645 = msg("11199", dup265); - -var msg13646 = msg("11200", dup265); - -var msg13647 = msg("11201", dup265); - -var msg13648 = msg("11202", dup265); - -var msg13649 = msg("11203", dup196); - -var msg13650 = msg("11204", dup196); - -var msg13651 = msg("11205", dup196); - -var msg13652 = msg("11206", dup265); - -var msg13653 = msg("11207", dup265); - -var msg13654 = msg("11208", dup265); - -var msg13655 = msg("11209", dup265); - -var msg13656 = msg("11210", dup265); - -var msg13657 = msg("11211", dup265); - -var msg13658 = msg("11212", dup265); - -var msg13659 = msg("11213", dup265); - -var msg13660 = msg("11214", dup265); - -var msg13661 = msg("11215", dup265); - -var msg13662 = msg("11216", dup265); - -var msg13663 = msg("11217", dup265); - -var msg13664 = msg("11218", dup265); - -var msg13665 = msg("11219", dup265); - -var msg13666 = msg("11220", dup265); - -var msg13667 = msg("11221", dup265); - -var msg13668 = msg("11222", dup198); - -var msg13669 = msg("11223", dup269); - -var msg13670 = msg("11224", dup265); - -var msg13671 = msg("11225", dup265); - -var msg13672 = msg("11226", dup265); - -var msg13673 = msg("11227", dup265); - -var msg13674 = msg("11228", dup265); - -var msg13675 = msg("11229", dup265); - -var msg13676 = msg("11230", dup265); - -var msg13677 = msg("11231", dup265); - -var msg13678 = msg("11232", dup265); - -var msg13679 = msg("11233", dup265); - -var msg13680 = msg("11234", dup265); - -var msg13681 = msg("11235", dup265); - -var msg13682 = msg("11236", dup265); - -var msg13683 = msg("11237", dup265); - -var msg13684 = msg("11238", dup265); - -var msg13685 = msg("11239", dup265); - -var msg13686 = msg("11240", dup265); - -var msg13687 = msg("11241", dup265); - -var msg13688 = msg("11242", dup265); - -var msg13689 = msg("11243", dup265); - -var msg13690 = msg("11244", dup265); - -var msg13691 = msg("11245", dup265); - -var msg13692 = msg("11246", dup265); - -var msg13693 = msg("11247", dup265); - -var msg13694 = msg("11248", dup265); - -var msg13695 = msg("11249", dup265); - -var msg13696 = msg("11250", dup265); - -var msg13697 = msg("11251", dup265); - -var msg13698 = msg("11252", dup265); - -var msg13699 = msg("11253", dup265); - -var msg13700 = msg("11254", dup265); - -var msg13701 = msg("11255", dup265); - -var msg13702 = msg("11256", dup265); - -var msg13703 = msg("11257", dup267); - -var msg13704 = msg("11258", dup197); - -var msg13705 = msg("11259", dup265); - -var msg13706 = msg("11260", dup265); - -var msg13707 = msg("11261", dup265); - -var msg13708 = msg("11262", dup265); - -var msg13709 = msg("11263", dup198); - -var msg13710 = msg("11264", dup260); - -var msg13711 = msg("11265", dup222); - -var msg13712 = msg("11266", dup222); - -var msg13713 = msg("11267", dup267); - -var msg13714 = msg("11268", dup194); - -var msg13715 = msg("11269", dup194); - -var msg13716 = msg("11270", dup194); - -var msg13717 = msg("11271", dup194); - -var msg13718 = msg("11272", dup267); - -var msg13719 = msg("11273", dup198); - -var msg13720 = msg("11274", dup265); - -var msg13721 = msg("11275", dup265); - -var msg13722 = msg("11276", dup265); - -var msg13723 = msg("11277", dup265); - -var msg13724 = msg("11278", dup265); - -var msg13725 = msg("11279", dup265); - -var msg13726 = msg("11280", dup265); - -var msg13727 = msg("11281", dup265); - -var msg13728 = msg("11282", dup265); - -var msg13729 = msg("11283", dup265); - -var msg13730 = msg("11284", dup265); - -var msg13731 = msg("11285", dup265); - -var msg13732 = msg("11286", dup265); - -var msg13733 = msg("11287", dup265); - -var msg13734 = msg("11288", dup287); - -var msg13735 = msg("11289", dup198); - -var msg13736 = msg("11290", dup197); - -var msg13737 = msg("11291", dup265); - -var msg13738 = msg("11292", dup265); - -var msg13739 = msg("11293", dup265); - -var msg13740 = msg("11294", dup265); - -var msg13741 = msg("11295", dup265); - -var msg13742 = msg("11296", dup265); - -var msg13743 = msg("11297", dup265); - -var msg13744 = msg("11298", dup265); - -var msg13745 = msg("11299", dup265); - -var msg13746 = msg("11300", dup265); - -var msg13747 = msg("11301", dup265); - -var msg13748 = msg("11302", dup265); - -var msg13749 = msg("11303", dup265); - -var msg13750 = msg("11304", dup265); - -var msg13751 = msg("11305", dup303); - -var msg13752 = msg("11306", dup303); - -var msg13753 = msg("11307", dup303); - -var msg13754 = msg("11308", dup303); - -var msg13755 = msg("11309", dup303); - -var msg13756 = msg("11310", dup303); - -var msg13757 = msg("11311", dup303); - -var msg13758 = msg("11312", dup303); - -var msg13759 = msg("11313", dup303); - -var msg13760 = msg("11314", dup192); - -var msg13761 = msg("11315", dup192); - -var msg13762 = msg("11316", dup192); - -var msg13763 = msg("11317", dup192); - -var msg13764 = msg("11318", dup192); - -var msg13765 = msg("11319", dup192); - -var msg13766 = msg("11320", dup192); - -var msg13767 = msg("11321", dup192); - -var msg13768 = msg("11322", dup192); - -var msg13769 = msg("11323", dup192); - -var msg13770 = msg("11324", dup265); - -var msg13771 = msg("11325", dup265); - -var msg13772 = msg("11326", dup276); - -var msg13773 = msg("11327", dup276); - -var msg13774 = msg("11328", dup276); - -var msg13775 = msg("11329", dup276); - -var msg13776 = msg("11330", dup276); - -var msg13777 = msg("11331", dup276); - -var msg13778 = msg("11332", dup276); - -var msg13779 = msg("11333", dup276); - -var msg13780 = msg("11334", dup276); - -var msg13781 = msg("11335", dup276); - -var msg13782 = msg("11336", dup276); - -var msg13783 = msg("11337", dup276); - -var msg13784 = msg("11338", dup276); - -var msg13785 = msg("11339", dup276); - -var msg13786 = msg("11340", dup276); - -var msg13787 = msg("11341", dup276); - -var msg13788 = msg("11342", dup276); - -var msg13789 = msg("11343", dup276); - -var msg13790 = msg("11344", dup276); - -var msg13791 = msg("11345", dup276); - -var msg13792 = msg("11346", dup276); - -var msg13793 = msg("11347", dup276); - -var msg13794 = msg("11348", dup276); - -var msg13795 = msg("11349", dup276); - -var msg13796 = msg("11350", dup276); - -var msg13797 = msg("11351", dup276); - -var msg13798 = msg("11352", dup276); - -var msg13799 = msg("11353", dup276); - -var msg13800 = msg("11354", dup276); - -var msg13801 = msg("11355", dup276); - -var msg13802 = msg("11356", dup276); - -var msg13803 = msg("11357", dup276); - -var msg13804 = msg("11358", dup276); - -var msg13805 = msg("11359", dup276); - -var msg13806 = msg("11360", dup276); - -var msg13807 = msg("11361", dup276); - -var msg13808 = msg("11362", dup276); - -var msg13809 = msg("11363", dup276); - -var msg13810 = msg("11364", dup276); - -var msg13811 = msg("11365", dup276); - -var msg13812 = msg("11366", dup276); - -var msg13813 = msg("11367", dup276); - -var msg13814 = msg("11368", dup276); - -var msg13815 = msg("11369", dup276); - -var msg13816 = msg("11370", dup276); - -var msg13817 = msg("11371", dup276); - -var msg13818 = msg("11372", dup276); - -var msg13819 = msg("11373", dup276); - -var msg13820 = msg("11374", dup276); - -var msg13821 = msg("11375", dup276); - -var msg13822 = msg("11376", dup276); - -var msg13823 = msg("11377", dup276); - -var msg13824 = msg("11378", dup276); - -var msg13825 = msg("11379", dup276); - -var msg13826 = msg("11380", dup276); - -var msg13827 = msg("11381", dup276); - -var msg13828 = msg("11382", dup276); - -var msg13829 = msg("11383", dup276); - -var msg13830 = msg("11384", dup276); - -var msg13831 = msg("11385", dup276); - -var msg13832 = msg("11386", dup276); - -var msg13833 = msg("11387", dup276); - -var msg13834 = msg("11388", dup276); - -var msg13835 = msg("11389", dup276); - -var msg13836 = msg("11390", dup276); - -var msg13837 = msg("11391", dup276); - -var msg13838 = msg("11392", dup276); - -var msg13839 = msg("11393", dup276); - -var msg13840 = msg("11394", dup276); - -var msg13841 = msg("11395", dup276); - -var msg13842 = msg("11396", dup276); - -var msg13843 = msg("11397", dup276); - -var msg13844 = msg("11398", dup276); - -var msg13845 = msg("11399", dup276); - -var msg13846 = msg("11400", dup276); - -var msg13847 = msg("11401", dup276); - -var msg13848 = msg("11402", dup276); - -var msg13849 = msg("11403", dup276); - -var msg13850 = msg("11404", dup276); - -var msg13851 = msg("11405", dup276); - -var msg13852 = msg("11406", dup276); - -var msg13853 = msg("11407", dup276); - -var msg13854 = msg("11408", dup276); - -var msg13855 = msg("11409", dup276); - -var msg13856 = msg("11410", dup276); - -var msg13857 = msg("11411", dup276); - -var msg13858 = msg("11412", dup276); - -var msg13859 = msg("11413", dup276); - -var msg13860 = msg("11414", dup276); - -var msg13861 = msg("11415", dup276); - -var msg13862 = msg("11416", dup276); - -var msg13863 = msg("11417", dup276); - -var msg13864 = msg("11418", dup276); - -var msg13865 = msg("11419", dup276); - -var msg13866 = msg("11420", dup276); - -var msg13867 = msg("11421", dup276); - -var msg13868 = msg("11422", dup276); - -var msg13869 = msg("11423", dup276); - -var msg13870 = msg("11424", dup276); - -var msg13871 = msg("11425", dup276); - -var msg13872 = msg("11426", dup276); - -var msg13873 = msg("11427", dup276); - -var msg13874 = msg("11428", dup276); - -var msg13875 = msg("11429", dup276); - -var msg13876 = msg("11430", dup276); - -var msg13877 = msg("11431", dup276); - -var msg13878 = msg("11432", dup276); - -var msg13879 = msg("11433", dup276); - -var msg13880 = msg("11434", dup276); - -var msg13881 = msg("11435", dup276); - -var msg13882 = msg("11436", dup276); - -var msg13883 = msg("11437", dup276); - -var msg13884 = msg("11438", dup276); - -var msg13885 = msg("11439", dup276); - -var msg13886 = msg("11440", dup276); - -var msg13887 = msg("11441", dup276); - -var msg13888 = msg("11442", dup276); - -var msg13889 = msg("11443", dup276); - -var msg13890 = msg("11444", dup276); - -var msg13891 = msg("11445", dup276); - -var msg13892 = msg("11446", dup276); - -var msg13893 = msg("11447", dup276); - -var msg13894 = msg("11448", dup276); - -var msg13895 = msg("11449", dup276); - -var msg13896 = msg("11450", dup276); - -var msg13897 = msg("11451", dup276); - -var msg13898 = msg("11452", dup276); - -var msg13899 = msg("11453", dup276); - -var msg13900 = msg("11454", dup276); - -var msg13901 = msg("11455", dup276); - -var msg13902 = msg("11456", dup276); - -var msg13903 = msg("11457", dup276); - -var msg13904 = msg("11458", dup276); - -var msg13905 = msg("11459", dup276); - -var msg13906 = msg("11460", dup276); - -var msg13907 = msg("11461", dup276); - -var msg13908 = msg("11462", dup276); - -var msg13909 = msg("11463", dup276); - -var msg13910 = msg("11464", dup276); - -var msg13911 = msg("11465", dup276); - -var msg13912 = msg("11466", dup276); - -var msg13913 = msg("11467", dup276); - -var msg13914 = msg("11468", dup276); - -var msg13915 = msg("11469", dup276); - -var msg13916 = msg("11470", dup276); - -var msg13917 = msg("11471", dup276); - -var msg13918 = msg("11472", dup276); - -var msg13919 = msg("11473", dup276); - -var msg13920 = msg("11474", dup276); - -var msg13921 = msg("11475", dup276); - -var msg13922 = msg("11476", dup276); - -var msg13923 = msg("11477", dup276); - -var msg13924 = msg("11478", dup276); - -var msg13925 = msg("11479", dup276); - -var msg13926 = msg("11480", dup276); - -var msg13927 = msg("11481", dup276); - -var msg13928 = msg("11482", dup276); - -var msg13929 = msg("11483", dup276); - -var msg13930 = msg("11484", dup276); - -var msg13931 = msg("11485", dup276); - -var msg13932 = msg("11486", dup276); - -var msg13933 = msg("11487", dup276); - -var msg13934 = msg("11488", dup276); - -var msg13935 = msg("11489", dup276); - -var msg13936 = msg("11490", dup276); - -var msg13937 = msg("11491", dup276); - -var msg13938 = msg("11492", dup276); - -var msg13939 = msg("11493", dup276); - -var msg13940 = msg("11494", dup276); - -var msg13941 = msg("11495", dup276); - -var msg13942 = msg("11496", dup276); - -var msg13943 = msg("11497", dup276); - -var msg13944 = msg("11498", dup276); - -var msg13945 = msg("11499", dup276); - -var msg13946 = msg("11500", dup276); - -var msg13947 = msg("11501", dup276); - -var msg13948 = msg("11502", dup276); - -var msg13949 = msg("11503", dup276); - -var msg13950 = msg("11504", dup276); - -var msg13951 = msg("11505", dup276); - -var msg13952 = msg("11506", dup276); - -var msg13953 = msg("11507", dup276); - -var msg13954 = msg("11508", dup276); - -var msg13955 = msg("11509", dup276); - -var msg13956 = msg("11510", dup276); - -var msg13957 = msg("11511", dup276); - -var msg13958 = msg("11512", dup276); - -var msg13959 = msg("11513", dup276); - -var msg13960 = msg("11514", dup276); - -var msg13961 = msg("11515", dup276); - -var msg13962 = msg("11516", dup276); - -var msg13963 = msg("11517", dup276); - -var msg13964 = msg("11518", dup276); - -var msg13965 = msg("11519", dup276); - -var msg13966 = msg("11520", dup276); - -var msg13967 = msg("11521", dup276); - -var msg13968 = msg("11522", dup276); - -var msg13969 = msg("11523", dup276); - -var msg13970 = msg("11524", dup276); - -var msg13971 = msg("11525", dup276); - -var msg13972 = msg("11526", dup276); - -var msg13973 = msg("11527", dup276); - -var msg13974 = msg("11528", dup276); - -var msg13975 = msg("11529", dup276); - -var msg13976 = msg("11530", dup276); - -var msg13977 = msg("11531", dup276); - -var msg13978 = msg("11532", dup276); - -var msg13979 = msg("11533", dup276); - -var msg13980 = msg("11534", dup276); - -var msg13981 = msg("11535", dup276); - -var msg13982 = msg("11536", dup276); - -var msg13983 = msg("11537", dup276); - -var msg13984 = msg("11538", dup276); - -var msg13985 = msg("11539", dup276); - -var msg13986 = msg("11540", dup276); - -var msg13987 = msg("11541", dup276); - -var msg13988 = msg("11542", dup276); - -var msg13989 = msg("11543", dup276); - -var msg13990 = msg("11544", dup276); - -var msg13991 = msg("11545", dup276); - -var msg13992 = msg("11546", dup276); - -var msg13993 = msg("11547", dup276); - -var msg13994 = msg("11548", dup276); - -var msg13995 = msg("11549", dup276); - -var msg13996 = msg("11550", dup276); - -var msg13997 = msg("11551", dup276); - -var msg13998 = msg("11552", dup276); - -var msg13999 = msg("11553", dup276); - -var msg14000 = msg("11554", dup276); - -var msg14001 = msg("11555", dup276); - -var msg14002 = msg("11556", dup276); - -var msg14003 = msg("11557", dup276); - -var msg14004 = msg("11558", dup276); - -var msg14005 = msg("11559", dup276); - -var msg14006 = msg("11560", dup276); - -var msg14007 = msg("11561", dup276); - -var msg14008 = msg("11562", dup276); - -var msg14009 = msg("11563", dup276); - -var msg14010 = msg("11564", dup276); - -var msg14011 = msg("11565", dup276); - -var msg14012 = msg("11566", dup276); - -var msg14013 = msg("11567", dup276); - -var msg14014 = msg("11568", dup276); - -var msg14015 = msg("11569", dup276); - -var msg14016 = msg("11570", dup276); - -var msg14017 = msg("11571", dup276); - -var msg14018 = msg("11572", dup276); - -var msg14019 = msg("11573", dup276); - -var msg14020 = msg("11574", dup276); - -var msg14021 = msg("11575", dup276); - -var msg14022 = msg("11576", dup276); - -var msg14023 = msg("11577", dup276); - -var msg14024 = msg("11578", dup276); - -var msg14025 = msg("11579", dup276); - -var msg14026 = msg("11580", dup276); - -var msg14027 = msg("11581", dup276); - -var msg14028 = msg("11582", dup276); - -var msg14029 = msg("11583", dup276); - -var msg14030 = msg("11584", dup276); - -var msg14031 = msg("11585", dup276); - -var msg14032 = msg("11586", dup276); - -var msg14033 = msg("11587", dup276); - -var msg14034 = msg("11588", dup201); - -var msg14035 = msg("11589", dup201); - -var msg14036 = msg("11590", dup201); - -var msg14037 = msg("11591", dup276); - -var msg14038 = msg("11592", dup276); - -var msg14039 = msg("11593", dup276); - -var msg14040 = msg("11594", dup276); - -var msg14041 = msg("11595", dup201); - -var msg14042 = msg("11596", dup201); - -var msg14043 = msg("11597", dup276); - -var msg14044 = msg("11598", dup201); - -var msg14045 = msg("11599", dup276); - -var msg14046 = msg("11600", dup276); - -var msg14047 = msg("11601", dup201); - -var msg14048 = msg("11602", dup276); - -var msg14049 = msg("11603", dup276); - -var msg14050 = msg("11604", dup276); - -var msg14051 = msg("11605", dup201); - -var msg14052 = msg("11606", dup276); - -var msg14053 = msg("11607", dup276); - -var msg14054 = msg("11608", dup276); - -var msg14055 = msg("11609", dup201); - -var msg14056 = msg("11610", dup201); - -var msg14057 = msg("11611", dup276); - -var msg14058 = msg("11612", dup201); - -var msg14059 = msg("11613", dup201); - -var msg14060 = msg("11614", dup276); - -var msg14061 = msg("11615", dup276); - -var msg14062 = msg("11616", dup260); - -var msg14063 = msg("11617", dup197); - -var msg14064 = msg("11618", dup197); - -var msg14065 = msg("11619", dup260); - -var msg14066 = msg("11620", dup265); - -var msg14067 = msg("11621", dup265); - -var msg14068 = msg("11622", dup265); - -var msg14069 = msg("11623", dup265); - -var msg14070 = msg("11624", dup265); - -var msg14071 = msg("11625", dup265); - -var msg14072 = msg("11626", dup265); - -var msg14073 = msg("11627", dup265); - -var msg14074 = msg("11628", dup265); - -var msg14075 = msg("11629", dup265); - -var msg14076 = msg("11630", dup265); - -var msg14077 = msg("11631", dup265); - -var msg14078 = msg("11632", dup265); - -var msg14079 = msg("11633", dup265); - -var msg14080 = msg("11634", dup265); - -var msg14081 = msg("11635", dup265); - -var msg14082 = msg("11636", dup265); - -var msg14083 = msg("11637", dup265); - -var msg14084 = msg("11638", dup265); - -var msg14085 = msg("11639", dup265); - -var msg14086 = msg("11640", dup265); - -var msg14087 = msg("11641", dup265); - -var msg14088 = msg("11642", dup265); - -var msg14089 = msg("11643", dup265); - -var msg14090 = msg("11644", dup265); - -var msg14091 = msg("11645", dup265); - -var msg14092 = msg("11646", dup265); - -var msg14093 = msg("11647", dup265); - -var msg14094 = msg("11648", dup265); - -var msg14095 = msg("11649", dup265); - -var msg14096 = msg("11650", dup265); - -var msg14097 = msg("11651", dup265); - -var msg14098 = msg("11652", dup265); - -var msg14099 = msg("11653", dup265); - -var msg14100 = msg("11654", dup265); - -var msg14101 = msg("11655", dup265); - -var msg14102 = msg("11656", dup265); - -var msg14103 = msg("11657", dup265); - -var msg14104 = msg("11658", dup265); - -var msg14105 = msg("11659", dup265); - -var msg14106 = msg("11660", dup265); - -var msg14107 = msg("11661", dup265); - -var msg14108 = msg("11662", dup265); - -var msg14109 = msg("11663", dup265); - -var msg14110 = msg("11664", dup265); - -var msg14111 = msg("11665", dup265); - -var msg14112 = msg("11666", dup265); - -var msg14113 = msg("11667", dup265); - -var msg14114 = msg("11668", dup267); - -var msg14115 = msg("11669", dup222); - -var msg14116 = msg("11670", dup197); - -var msg14117 = msg("11671", dup265); - -var msg14118 = msg("11672", dup222); - -var msg14119 = msg("11673", dup265); - -var msg14120 = msg("11674", dup265); - -var msg14121 = msg("11675", dup265); - -var msg14122 = msg("11676", dup265); - -var msg14123 = msg("11677", dup265); - -var msg14124 = msg("11678", dup265); - -var msg14125 = msg("11679", dup267); - -var msg14126 = msg("11680", dup222); - -var msg14127 = msg("11681", dup196); - -var msg14128 = msg("11682", dup287); - -var msg14129 = msg("11683", dup260); - -var msg14130 = msg("11684", dup222); - -var msg14131 = msg("11685", dup240); - -var msg14132 = msg("11686", dup222); - -var msg14133 = msg("11687", dup196); - -var msg14134 = msg("11688", dup276); - -var msg14135 = msg("11689", dup276); - -var msg14136 = msg("11690", dup276); - -var msg14137 = msg("11691", dup276); - -var msg14138 = msg("11692", dup276); - -var msg14139 = msg("11693", dup276); - -var msg14140 = msg("11694", dup276); - -var msg14141 = msg("11695", dup276); - -var msg14142 = msg("11696", dup276); - -var msg14143 = msg("11697", dup276); - -var msg14144 = msg("11698", dup276); - -var msg14145 = msg("11699", dup276); - -var msg14146 = msg("11700", dup276); - -var msg14147 = msg("11701", dup276); - -var msg14148 = msg("11702", dup276); - -var msg14149 = msg("11703", dup276); - -var msg14150 = msg("11704", dup276); - -var msg14151 = msg("11705", dup276); - -var msg14152 = msg("11706", dup276); - -var msg14153 = msg("11707", dup276); - -var msg14154 = msg("11708", dup276); - -var msg14155 = msg("11709", dup276); - -var msg14156 = msg("11710", dup276); - -var msg14157 = msg("11711", dup276); - -var msg14158 = msg("11712", dup276); - -var msg14159 = msg("11713", dup276); - -var msg14160 = msg("11714", dup276); - -var msg14161 = msg("11715", dup276); - -var msg14162 = msg("11716", dup276); - -var msg14163 = msg("11717", dup276); - -var msg14164 = msg("11718", dup276); - -var msg14165 = msg("11719", dup276); - -var msg14166 = msg("11720", dup276); - -var msg14167 = msg("11721", dup276); - -var msg14168 = msg("11722", dup276); - -var msg14169 = msg("11723", dup276); - -var msg14170 = msg("11724", dup276); - -var msg14171 = msg("11725", dup276); - -var msg14172 = msg("11726", dup276); - -var msg14173 = msg("11727", dup276); - -var msg14174 = msg("11728", dup276); - -var msg14175 = msg("11729", dup276); - -var msg14176 = msg("11730", dup276); - -var msg14177 = msg("11731", dup276); - -var msg14178 = msg("11732", dup276); - -var msg14179 = msg("11733", dup276); - -var msg14180 = msg("11734", dup276); - -var msg14181 = msg("11735", dup276); - -var msg14182 = msg("11736", dup276); - -var msg14183 = msg("11737", dup276); - -var msg14184 = msg("11738", dup276); - -var msg14185 = msg("11739", dup276); - -var msg14186 = msg("11740", dup276); - -var msg14187 = msg("11741", dup276); - -var msg14188 = msg("11742", dup276); - -var msg14189 = msg("11743", dup276); - -var msg14190 = msg("11744", dup276); - -var msg14191 = msg("11745", dup276); - -var msg14192 = msg("11746", dup276); - -var msg14193 = msg("11747", dup276); - -var msg14194 = msg("11748", dup276); - -var msg14195 = msg("11749", dup276); - -var msg14196 = msg("11750", dup276); - -var msg14197 = msg("11751", dup276); - -var msg14198 = msg("11752", dup276); - -var msg14199 = msg("11753", dup276); - -var msg14200 = msg("11754", dup276); - -var msg14201 = msg("11755", dup276); - -var msg14202 = msg("11756", dup276); - -var msg14203 = msg("11757", dup276); - -var msg14204 = msg("11758", dup276); - -var msg14205 = msg("11759", dup276); - -var msg14206 = msg("11760", dup276); - -var msg14207 = msg("11761", dup276); - -var msg14208 = msg("11762", dup276); - -var msg14209 = msg("11763", dup276); - -var msg14210 = msg("11764", dup276); - -var msg14211 = msg("11765", dup276); - -var msg14212 = msg("11766", dup276); - -var msg14213 = msg("11767", dup276); - -var msg14214 = msg("11768", dup276); - -var msg14215 = msg("11769", dup276); - -var msg14216 = msg("11770", dup276); - -var msg14217 = msg("11771", dup276); - -var msg14218 = msg("11772", dup276); - -var msg14219 = msg("11773", dup276); - -var msg14220 = msg("11774", dup276); - -var msg14221 = msg("11775", dup276); - -var msg14222 = msg("11776", dup276); - -var msg14223 = msg("11777", dup276); - -var msg14224 = msg("11778", dup276); - -var msg14225 = msg("11779", dup276); - -var msg14226 = msg("11780", dup276); - -var msg14227 = msg("11781", dup276); - -var msg14228 = msg("11782", dup276); - -var msg14229 = msg("11783", dup276); - -var msg14230 = msg("11784", dup276); - -var msg14231 = msg("11785", dup276); - -var msg14232 = msg("11786", dup276); - -var msg14233 = msg("11787", dup276); - -var msg14234 = msg("11788", dup276); - -var msg14235 = msg("11789", dup276); - -var msg14236 = msg("11790", dup276); - -var msg14237 = msg("11791", dup276); - -var msg14238 = msg("11792", dup276); - -var msg14239 = msg("11793", dup276); - -var msg14240 = msg("11794", dup276); - -var msg14241 = msg("11795", dup276); - -var msg14242 = msg("11796", dup276); - -var msg14243 = msg("11797", dup276); - -var msg14244 = msg("11798", dup276); - -var msg14245 = msg("11799", dup276); - -var msg14246 = msg("11800", dup276); - -var msg14247 = msg("11801", dup276); - -var msg14248 = msg("11802", dup276); - -var msg14249 = msg("11803", dup276); - -var msg14250 = msg("11804", dup276); - -var msg14251 = msg("11805", dup276); - -var msg14252 = msg("11806", dup276); - -var msg14253 = msg("11807", dup276); - -var msg14254 = msg("11808", dup276); - -var msg14255 = msg("11809", dup276); - -var msg14256 = msg("11810", dup276); - -var msg14257 = msg("11811", dup276); - -var msg14258 = msg("11812", dup276); - -var msg14259 = msg("11813", dup276); - -var msg14260 = msg("11814", dup276); - -var msg14261 = msg("11815", dup276); - -var msg14262 = msg("11816", dup196); - -var msg14263 = msg("11817", dup265); - -var msg14264 = msg("11818", dup265); - -var msg14265 = msg("11819", dup265); - -var msg14266 = msg("11820", dup265); - -var msg14267 = msg("11821", dup265); - -var msg14268 = msg("11822", dup265); - -var msg14269 = msg("11823", dup265); - -var msg14270 = msg("11824", dup265); - -var msg14271 = msg("11825", dup265); - -var msg14272 = msg("11826", dup265); - -var msg14273 = msg("11827", dup265); - -var msg14274 = msg("11828", dup265); - -var msg14275 = msg("11829", dup265); - -var msg14276 = msg("11830", dup265); - -var msg14277 = msg("11831", dup265); - -var msg14278 = msg("11832", dup265); - -var msg14279 = msg("11833", dup265); - -var msg14280 = msg("11834", dup265); - -var msg14281 = msg("11835", dup196); - -var msg14282 = msg("11836", dup196); - -var msg14283 = msg("11837", dup250); - -var msg14284 = msg("11838", dup267); - -var msg14285 = msg("11839", dup265); - -var msg14286 = msg("11840", dup265); - -var msg14287 = msg("11841", dup265); - -var msg14288 = msg("11842", dup265); - -var msg14289 = msg("11843", dup276); - -var msg14290 = msg("11844", dup276); - -var msg14291 = msg("11845", dup276); - -var msg14292 = msg("11846", dup276); - -var msg14293 = msg("11847", dup276); - -var msg14294 = msg("11848", dup276); - -var msg14295 = msg("11849", dup276); - -var msg14296 = msg("11850", dup276); - -var msg14297 = msg("11851", dup276); - -var msg14298 = msg("11852", dup276); - -var msg14299 = msg("11853", dup276); - -var msg14300 = msg("11854", dup276); - -var msg14301 = msg("11855", dup276); - -var msg14302 = msg("11856", dup276); - -var msg14303 = msg("11857", dup276); - -var msg14304 = msg("11858", dup276); - -var msg14305 = msg("11859", dup276); - -var msg14306 = msg("11860", dup276); - -var msg14307 = msg("11861", dup276); - -var msg14308 = msg("11862", dup276); - -var msg14309 = msg("11863", dup276); - -var msg14310 = msg("11864", dup276); - -var msg14311 = msg("11865", dup276); - -var msg14312 = msg("11866", dup276); - -var msg14313 = msg("11867", dup276); - -var msg14314 = msg("11868", dup276); - -var msg14315 = msg("11869", dup276); - -var msg14316 = msg("11870", dup276); - -var msg14317 = msg("11871", dup276); - -var msg14318 = msg("11872", dup276); - -var msg14319 = msg("11873", dup276); - -var msg14320 = msg("11874", dup276); - -var msg14321 = msg("11875", dup276); - -var msg14322 = msg("11876", dup276); - -var msg14323 = msg("11877", dup276); - -var msg14324 = msg("11878", dup276); - -var msg14325 = msg("11879", dup276); - -var msg14326 = msg("11880", dup276); - -var msg14327 = msg("11881", dup276); - -var msg14328 = msg("11882", dup276); - -var msg14329 = msg("11883", dup276); - -var msg14330 = msg("11884", dup276); - -var msg14331 = msg("11885", dup276); - -var msg14332 = msg("11886", dup276); - -var msg14333 = msg("11887", dup276); - -var msg14334 = msg("11888", dup276); - -var msg14335 = msg("11889", dup276); - -var msg14336 = msg("11890", dup276); - -var msg14337 = msg("11891", dup276); - -var msg14338 = msg("11892", dup276); - -var msg14339 = msg("11893", dup276); - -var msg14340 = msg("11894", dup276); - -var msg14341 = msg("11895", dup276); - -var msg14342 = msg("11896", dup276); - -var msg14343 = msg("11897", dup276); - -var msg14344 = msg("11898", dup276); - -var msg14345 = msg("11899", dup276); - -var msg14346 = msg("11900", dup276); - -var msg14347 = msg("11901", dup276); - -var msg14348 = msg("11902", dup276); - -var msg14349 = msg("11903", dup276); - -var msg14350 = msg("11904", dup276); - -var msg14351 = msg("11905", dup276); - -var msg14352 = msg("11906", dup276); - -var msg14353 = msg("11907", dup276); - -var msg14354 = msg("11908", dup276); - -var msg14355 = msg("11909", dup276); - -var msg14356 = msg("11910", dup276); - -var msg14357 = msg("11911", dup276); - -var msg14358 = msg("11912", dup276); - -var msg14359 = msg("11913", dup276); - -var msg14360 = msg("11914", dup276); - -var msg14361 = msg("11915", dup276); - -var msg14362 = msg("11916", dup276); - -var msg14363 = msg("11917", dup276); - -var msg14364 = msg("11918", dup276); - -var msg14365 = msg("11919", dup276); - -var msg14366 = msg("11920", dup276); - -var msg14367 = msg("11921", dup276); - -var msg14368 = msg("11922", dup276); - -var msg14369 = msg("11923", dup276); - -var msg14370 = msg("11924", dup276); - -var msg14371 = msg("11925", dup276); - -var msg14372 = msg("11926", dup276); - -var msg14373 = msg("11927", dup276); - -var msg14374 = msg("11928", dup276); - -var msg14375 = msg("11929", dup276); - -var msg14376 = msg("11930", dup276); - -var msg14377 = msg("11931", dup276); - -var msg14378 = msg("11932", dup276); - -var msg14379 = msg("11933", dup276); - -var msg14380 = msg("11934", dup276); - -var msg14381 = msg("11935", dup276); - -var msg14382 = msg("11936", dup276); - -var msg14383 = msg("11937", dup276); - -var msg14384 = msg("11938", dup276); - -var msg14385 = msg("11939", dup265); - -var msg14386 = msg("11940", dup265); - -var msg14387 = msg("11941", dup265); - -var msg14388 = msg("11942", dup265); - -var msg14389 = msg("11943", dup265); - -var msg14390 = msg("11944", dup265); - -var msg14391 = msg("11945", dup276); - -var msg14392 = msg("11946", dup196); - -var msg14393 = msg("11947", dup196); - -var msg14394 = msg("11948", dup303); - -var msg14395 = msg("11949", dup192); - -var msg14396 = msg("11950", dup192); - -var msg14397 = msg("11951", dup192); - -var msg14398 = msg("11952", dup192); - -var msg14399 = msg("11953", dup192); - -var msg14400 = msg("11954", dup192); - -var msg14401 = msg("11955", dup276); - -var msg14402 = msg("11956", dup276); - -var msg14403 = msg("11957", dup276); - -var msg14404 = msg("11958", dup276); - -var msg14405 = msg("11959", dup276); - -var msg14406 = msg("11960", dup276); - -var msg14407 = msg("11961", dup276); - -var msg14408 = msg("11962", dup276); - -var msg14409 = msg("11963", dup276); - -var msg14410 = msg("11964", dup276); - -var msg14411 = msg("11965", dup265); - -var msg14412 = msg("11966", dup265); - -var msg14413 = msg("11967", dup265); - -var msg14414 = msg("11968", dup196); - -var msg14415 = msg("11969", dup273); - -var msg14416 = msg("11970", dup198); - -var msg14417 = msg("11971", dup201); - -var msg14418 = msg("11972", dup196); - -var msg14419 = msg("11973", dup201); - -var msg14420 = msg("11974", dup287); - -var msg14421 = msg("11975", dup196); - -var msg14422 = msg("11976", dup197); - -var msg14423 = msg("11977", dup197); - -var msg14424 = msg("11978", dup201); - -var msg14425 = msg("11979", dup196); - -var msg14426 = msg("11980", dup201); - -var msg14427 = msg("11981", dup201); - -var msg14428 = msg("11982", dup196); - -var msg14429 = msg("11983", dup196); - -var msg14430 = msg("11984", dup196); - -var msg14431 = msg("11985", dup201); - -var msg14432 = msg("11986", dup287); - -var msg14433 = msg("11987", dup287); - -var msg14434 = msg("11988", dup287); - -var msg14435 = msg("11989", dup287); - -var msg14436 = msg("11990", dup287); - -var msg14437 = msg("11991", dup287); - -var msg14438 = msg("11992", dup297); - -var msg14439 = msg("11993", dup287); - -var msg14440 = msg("11994", dup287); - -var msg14441 = msg("11995", dup297); - -var msg14442 = msg("11996", dup287); - -var msg14443 = msg("11997", dup287); - -var msg14444 = msg("11998", dup287); - -var msg14445 = msg("11999", dup287); - -var msg14446 = msg("12000", dup196); - -var msg14447 = msg("12001", dup201); - -var msg14448 = msg("12002", dup197); - -var msg14449 = msg("12003", dup197); - -var msg14450 = msg("12004", dup196); - -var msg14451 = msg("12005", dup196); - -var msg14452 = msg("12006", dup196); - -var msg14453 = msg("12007", dup273); - -var msg14454 = msg("12008", dup287); - -var msg14455 = msg("12009", dup197); - -var msg14456 = msg("12010", dup265); - -var msg14457 = msg("12011", dup265); - -var msg14458 = msg("12012", dup265); - -var msg14459 = msg("12013", dup265); - -var msg14460 = msg("12014", dup265); - -var msg14461 = msg("12015", dup265); - -var msg14462 = msg("12016", dup265); - -var msg14463 = msg("12017", dup265); - -var msg14464 = msg("12018", dup265); - -var msg14465 = msg("12019", dup265); - -var msg14466 = msg("12020", dup265); - -var msg14467 = msg("12021", dup265); - -var msg14468 = msg("12022", dup265); - -var msg14469 = msg("12023", dup265); - -var msg14470 = msg("12024", dup265); - -var msg14471 = msg("12025", dup265); - -var msg14472 = msg("12026", dup265); - -var msg14473 = msg("12027", dup260); - -var msg14474 = msg("12028", dup250); - -var msg14475 = msg("12029", dup265); - -var msg14476 = msg("12030", dup265); - -var msg14477 = msg("12031", dup197); - -var msg14478 = msg("12032", dup197); - -var msg14479 = msg("12033", dup197); - -var msg14480 = msg("12034", dup197); - -var msg14481 = msg("12035", dup197); - -var msg14482 = msg("12036", dup197); - -var msg14483 = msg("12037", dup197); - -var msg14484 = msg("12038", dup197); - -var msg14485 = msg("12039", dup197); - -var msg14486 = msg("12040", dup197); - -var msg14487 = msg("12041", dup197); - -var msg14488 = msg("12042", dup197); - -var msg14489 = msg("12043", dup198); - -var msg14490 = msg("12044", dup198); - -var msg14491 = msg("12045", dup198); - -var msg14492 = msg("12046", dup273); - -var msg14493 = msg("12047", dup303); - -var msg14494 = msg("12048", dup303); - -var msg14495 = msg("12049", dup303); - -var msg14496 = msg("12050", dup303); - -var msg14497 = msg("12051", dup192); - -var msg14498 = msg("12052", dup192); - -var msg14499 = msg("12053", dup192); - -var msg14500 = msg("12054", dup192); - -var msg14501 = msg("12055", dup192); - -var msg14502 = msg("12056", dup267); - -var msg14503 = msg("12057", dup265); - -var msg14504 = msg("12058", dup222); - -var msg14505 = msg("12059", dup240); - -var msg14506 = msg("12060", dup240); - -var msg14507 = msg("12061", dup287); - -var msg14508 = msg("12062", dup265); - -var msg14509 = msg("12063", dup265); - -var msg14510 = msg("12064", dup265); - -var msg14511 = msg("12065", dup196); - -var msg14512 = msg("12066", dup196); - -var msg14513 = msg("12067", dup196); - -var msg14514 = msg("12068", dup196); - -var msg14515 = msg("12069", dup196); - -var msg14516 = msg("12070", dup196); - -var msg14517 = msg("12072", dup287); - -var msg14518 = msg("12073", dup196); - -var msg14519 = msg("12074", dup196); - -var msg14520 = msg("12075", dup269); - -var msg14521 = msg("12076", dup198); - -var msg14522 = msg("12077", dup192); - -var msg14523 = msg("12078", dup197); - -var msg14524 = msg("12079", dup197); - -var msg14525 = msg("12080", dup196); - -var msg14526 = msg("12081", dup222); - -var msg14527 = msg("12082", dup198); - -var msg14528 = msg("12083", dup265); - -var msg14529 = msg("12084", dup265); - -var msg14530 = msg("12085", dup265); - -var msg14531 = msg("12086", dup265); - -var msg14532 = msg("12087", dup265); - -var msg14533 = msg("12088", dup265); - -var msg14534 = msg("12089", dup265); - -var msg14535 = msg("12090", dup265); - -var msg14536 = msg("12091", dup198); - -var msg14537 = msg("12092", dup198); - -var msg14538 = msg("12093", dup198); - -var msg14539 = msg("12094", dup198); - -var msg14540 = msg("12095", dup265); - -var msg14541 = msg("12096", dup265); - -var msg14542 = msg("12097", dup265); - -var msg14543 = msg("12098", dup265); - -var msg14544 = msg("12099", dup269); - -var msg14545 = msg("12100", dup276); - -var msg14546 = msg("12101", dup276); - -var msg14547 = msg("12102", dup276); - -var msg14548 = msg("12103", dup276); - -var msg14549 = msg("12104", dup276); - -var msg14550 = msg("12105", dup276); - -var msg14551 = msg("12106", dup276); - -var msg14552 = msg("12107", dup276); - -var msg14553 = msg("12108", dup276); - -var msg14554 = msg("12109", dup276); - -var msg14555 = msg("12110", dup276); - -var msg14556 = msg("12111", dup276); - -var msg14557 = msg("12112", dup194); - -var msg14558 = msg("12113", dup197); - -var msg14559 = msg("12114", dup201); - -var msg14560 = msg("12115", dup201); - -var msg14561 = msg("12116", dup265); - -var msg14562 = msg("12117", dup265); - -var msg14563 = msg("12118", dup265); - -var msg14564 = msg("12119", dup265); - -var msg14565 = msg("12120", dup303); - -var msg14566 = msg("12121", dup303); - -var msg14567 = msg("12122", dup303); - -var msg14568 = msg("12123", dup303); - -var msg14569 = msg("12124", dup303); - -var msg14570 = msg("12125", dup303); - -var msg14571 = msg("12126", dup303); - -var msg14572 = msg("12127", dup303); - -var msg14573 = msg("12128", dup303); - -var msg14574 = msg("12129", dup303); - -var msg14575 = msg("12130", dup303); - -var msg14576 = msg("12131", dup303); - -var msg14577 = msg("12132", dup303); - -var msg14578 = msg("12133", dup303); - -var msg14579 = msg("12134", dup303); - -var msg14580 = msg("12135", dup303); - -var msg14581 = msg("12136", dup303); - -var msg14582 = msg("12137", dup303); - -var msg14583 = msg("12138", dup303); - -var msg14584 = msg("12139", dup303); - -var msg14585 = msg("12140", dup303); - -var msg14586 = msg("12141", dup303); - -var msg14587 = msg("12142", dup192); - -var msg14588 = msg("12143", dup192); - -var msg14589 = msg("12144", dup192); - -var msg14590 = msg("12145", dup192); - -var msg14591 = msg("12146", dup192); - -var msg14592 = msg("12147", dup192); - -var msg14593 = msg("12148", dup192); - -var msg14594 = msg("12149", dup192); - -var msg14595 = msg("12150", dup192); - -var msg14596 = msg("12151", dup192); - -var msg14597 = msg("12152", dup192); - -var msg14598 = msg("12153", dup192); - -var msg14599 = msg("12154", dup192); - -var msg14600 = msg("12155", dup192); - -var msg14601 = msg("12156", dup192); - -var msg14602 = msg("12157", dup192); - -var msg14603 = msg("12158", dup192); - -var msg14604 = msg("12159", dup192); - -var msg14605 = msg("12160", dup192); - -var msg14606 = msg("12161", dup192); - -var msg14607 = msg("12162", dup192); - -var msg14608 = msg("12163", dup192); - -var msg14609 = msg("12164", dup192); - -var msg14610 = msg("12165", dup192); - -var msg14611 = msg("12166", dup192); - -var msg14612 = msg("12167", dup196); - -var msg14613 = msg("12168", dup265); - -var msg14614 = msg("12169", dup265); - -var msg14615 = msg("12170", dup287); - -var msg14616 = msg("12171", dup287); - -var msg14617 = msg("12172", dup196); - -var msg14618 = msg("12173", dup196); - -var msg14619 = msg("12174", dup196); - -var msg14620 = msg("12175", dup196); - -var msg14621 = msg("12176", dup196); - -var msg14622 = msg("12177", dup196); - -var msg14623 = msg("12178", dup196); - -var msg14624 = msg("12179", dup196); - -var msg14625 = msg("12180", dup196); - -var msg14626 = msg("12181", dup196); - -var msg14627 = msg("12182", dup196); - -var msg14628 = msg("12183", dup197); - -var msg14629 = msg("12184", dup269); - -var msg14630 = msg("12185", dup287); - -var msg14631 = msg("12186", dup258); - -var msg14632 = msg("12187", dup287); - -var msg14633 = msg("12188", dup253); - -var msg14634 = msg("12189", dup265); - -var msg14635 = msg("12190", dup265); - -var msg14636 = msg("12191", dup265); - -var msg14637 = msg("12192", dup265); - -var msg14638 = msg("12193", dup265); - -var msg14639 = msg("12194", dup265); - -var msg14640 = msg("12195", dup265); - -var msg14641 = msg("12196", dup265); - -var msg14642 = msg("12197", dup222); - -var msg14643 = msg("12198", dup242); - -var msg14644 = msg("12199", dup198); - -var msg14645 = msg("12200", dup265); - -var msg14646 = msg("12201", dup265); - -var msg14647 = msg("12202", dup222); - -var msg14648 = msg("12203", dup265); - -var msg14649 = msg("12204", dup265); - -var msg14650 = msg("12205", dup265); - -var msg14651 = msg("12206", dup265); - -var msg14652 = msg("12207", dup265); - -var msg14653 = msg("12208", dup265); - -var msg14654 = msg("12209", dup196); - -var msg14655 = msg("12210", dup287); - -var msg14656 = msg("12211", dup287); - -var msg14657 = msg("12212", dup201); - -var msg14658 = msg("12213", dup201); - -var msg14659 = msg("12214", dup201); - -var msg14660 = msg("12215", dup201); - -var msg14661 = msg("12216", dup222); - -var msg14662 = msg("12217", dup222); - -var msg14663 = msg("12218", dup222); - -var msg14664 = msg("12219", dup197); - -var msg14665 = msg("12220", dup196); - -var msg14666 = msg("12221", dup265); - -var msg14667 = msg("12222", dup196); - -var msg14668 = msg("12223", dup196); - -var msg14669 = msg("12224", dup303); - -var msg14670 = msg("12225", dup303); - -var msg14671 = msg("12226", dup303); - -var msg14672 = msg("12227", dup303); - -var msg14673 = msg("12228", dup303); - -var msg14674 = msg("12229", dup303); - -var msg14675 = msg("12230", dup303); - -var msg14676 = msg("12231", dup303); - -var msg14677 = msg("12232", dup303); - -var msg14678 = msg("12233", dup192); - -var msg14679 = msg("12234", dup192); - -var msg14680 = msg("12235", dup192); - -var msg14681 = msg("12236", dup192); - -var msg14682 = msg("12237", dup192); - -var msg14683 = msg("12238", dup192); - -var msg14684 = msg("12239", dup192); - -var msg14685 = msg("12240", dup192); - -var msg14686 = msg("12241", dup192); - -var msg14687 = msg("12242", dup192); - -var msg14688 = msg("12243", dup192); - -var msg14689 = msg("12244", dup192); - -var msg14690 = msg("12245", dup192); - -var msg14691 = msg("12246", dup265); - -var msg14692 = msg("12247", dup265); - -var msg14693 = msg("12248", dup265); - -var msg14694 = msg("12249", dup265); - -var msg14695 = msg("12250", dup265); - -var msg14696 = msg("12251", dup265); - -var msg14697 = msg("12252", dup265); - -var msg14698 = msg("12253", dup265); - -var msg14699 = msg("12254", dup196); - -var msg14700 = msg("12255", dup265); - -var msg14701 = msg("12256", dup196); - -var msg14702 = msg("12257", dup265); - -var msg14703 = msg("12258", dup265); - -var msg14704 = msg("12259", dup265); - -var msg14705 = msg("12260", dup265); - -var msg14706 = msg("12261", dup265); - -var msg14707 = msg("12262", dup265); - -var msg14708 = msg("12263", dup265); - -var msg14709 = msg("12264", dup265); - -var msg14710 = msg("12265", dup265); - -var msg14711 = msg("12266", dup265); - -var msg14712 = msg("12267", dup265); - -var msg14713 = msg("12268", dup265); - -var msg14714 = msg("12269", dup265); - -var msg14715 = msg("12270", dup265); - -var msg14716 = msg("12271", dup265); - -var msg14717 = msg("12272", dup265); - -var msg14718 = msg("12273", dup265); - -var msg14719 = msg("12274", dup265); - -var msg14720 = msg("12275", dup265); - -var msg14721 = msg("12276", dup265); - -var msg14722 = msg("12277", dup196); - -var msg14723 = msg("12278", dup196); - -var msg14724 = msg("12279", dup197); - -var msg14725 = msg("12280", dup196); - -var msg14726 = msg("12281", dup196); - -var msg14727 = msg("12282", dup196); - -var msg14728 = msg("12283", dup196); - -var msg14729 = msg("12284", dup267); - -var msg14730 = msg("12285", dup196); - -var msg14731 = msg("12286", dup267); - -var msg14732 = msg("12287", dup303); - -var msg14733 = msg("12288", dup303); - -var msg14734 = msg("12289", dup303); - -var msg14735 = msg("12290", dup303); - -var msg14736 = msg("12291", dup303); - -var msg14737 = msg("12292", dup303); - -var msg14738 = msg("12293", dup303); - -var msg14739 = msg("12294", dup303); - -var msg14740 = msg("12295", dup303); - -var msg14741 = msg("12296", dup303); - -var msg14742 = msg("12297", dup192); - -var msg14743 = msg("12298", dup192); - -var msg14744 = msg("12299", dup196); - -var msg14745 = msg("12300", dup196); - -var msg14746 = msg("12301", dup265); - -var msg14747 = msg("12302", dup265); - -var msg14748 = msg("12303", dup196); - -var msg14749 = msg("12304", dup196); - -var msg14750 = msg("12305", dup196); - -var msg14751 = msg("12306", dup196); - -var msg14752 = msg("12307", dup276); - -var msg14753 = msg("12308", dup276); - -var msg14754 = msg("12309", dup276); - -var msg14755 = msg("12310", dup276); - -var msg14756 = msg("12311", dup276); - -var msg14757 = msg("12312", dup276); - -var msg14758 = msg("12313", dup276); - -var msg14759 = msg("12314", dup276); - -var msg14760 = msg("12315", dup276); - -var msg14761 = msg("12316", dup276); - -var msg14762 = msg("12317", dup276); - -var msg14763 = msg("12318", dup276); - -var msg14764 = msg("12319", dup276); - -var msg14765 = msg("12320", dup276); - -var msg14766 = msg("12321", dup276); - -var msg14767 = msg("12322", dup276); - -var msg14768 = msg("12323", dup276); - -var msg14769 = msg("12324", dup276); - -var msg14770 = msg("12325", dup276); - -var msg14771 = msg("12326", dup276); - -var msg14772 = msg("12327", dup276); - -var msg14773 = msg("12328", dup276); - -var msg14774 = msg("12329", dup276); - -var msg14775 = msg("12330", dup276); - -var msg14776 = msg("12331", dup276); - -var msg14777 = msg("12332", dup276); - -var msg14778 = msg("12333", dup276); - -var msg14779 = msg("12334", dup276); - -var msg14780 = msg("12335", dup276); - -var msg14781 = msg("12336", dup276); - -var msg14782 = msg("12337", dup276); - -var msg14783 = msg("12338", dup276); - -var msg14784 = msg("12339", dup276); - -var msg14785 = msg("12340", dup276); - -var msg14786 = msg("12341", dup276); - -var msg14787 = msg("12342", dup276); - -var msg14788 = msg("12343", dup276); - -var msg14789 = msg("12344", dup276); - -var msg14790 = msg("12345", dup276); - -var msg14791 = msg("12346", dup276); - -var msg14792 = msg("12347", dup276); - -var msg14793 = msg("12348", dup276); - -var msg14794 = msg("12349", dup276); - -var msg14795 = msg("12350", dup276); - -var msg14796 = msg("12351", dup276); - -var msg14797 = msg("12352", dup276); - -var msg14798 = msg("12353", dup276); - -var msg14799 = msg("12354", dup276); - -var msg14800 = msg("12355", dup276); - -var msg14801 = msg("12356", dup276); - -var msg14802 = msg("12357", dup196); - -var msg14803 = msg("12358", dup197); - -var msg14804 = msg("12359", dup197); - -var msg14805 = msg("12360", dup267); - -var msg14806 = msg("12361", dup303); - -var msg14807 = msg("12362", dup197); - -var msg14808 = msg("12363", dup303); - -var msg14809 = msg("12364", dup303); - -var msg14810 = msg("12365", dup303); - -var msg14811 = msg("12366", dup303); - -var msg14812 = msg("12367", dup303); - -var msg14813 = msg("12368", dup303); - -var msg14814 = msg("12369", dup303); - -var msg14815 = msg("12370", dup303); - -var msg14816 = msg("12371", dup303); - -var msg14817 = msg("12372", dup303); - -var msg14818 = msg("12373", dup192); - -var msg14819 = msg("12374", dup192); - -var msg14820 = msg("12375", dup192); - -var msg14821 = msg("12376", dup192); - -var msg14822 = msg("12377", dup192); - -var msg14823 = msg("12378", dup192); - -var msg14824 = msg("12379", dup303); - -var msg14825 = msg("12380", dup265); - -var msg14826 = msg("12381", dup265); - -var msg14827 = msg("12382", dup265); - -var msg14828 = msg("12383", dup265); - -var msg14829 = msg("12384", dup265); - -var msg14830 = msg("12385", dup265); - -var msg14831 = msg("12386", dup265); - -var msg14832 = msg("12387", dup265); - -var msg14833 = msg("12388", dup265); - -var msg14834 = msg("12389", dup265); - -var msg14835 = msg("12390", dup196); - -var msg14836 = msg("12391", dup196); - -var msg14837 = msg("12392", dup196); - -var msg14838 = msg("12393", dup265); - -var msg14839 = msg("12394", dup265); - -var msg14840 = msg("12395", dup265); - -var msg14841 = msg("12396", dup265); - -var msg14842 = msg("12397", dup265); - -var msg14843 = msg("12398", dup265); - -var msg14844 = msg("12399", dup265); - -var msg14845 = msg("12400", dup265); - -var msg14846 = msg("12401", dup265); - -var msg14847 = msg("12402", dup265); - -var msg14848 = msg("12403", dup265); - -var msg14849 = msg("12404", dup265); - -var msg14850 = msg("12405", dup265); - -var msg14851 = msg("12406", dup265); - -var msg14852 = msg("12407", dup265); - -var msg14853 = msg("12408", dup265); - -var msg14854 = msg("12409", dup265); - -var msg14855 = msg("12410", dup265); - -var msg14856 = msg("12411", dup265); - -var msg14857 = msg("12412", dup265); - -var msg14858 = msg("12413", dup265); - -var msg14859 = msg("12414", dup265); - -var msg14860 = msg("12415", dup265); - -var msg14861 = msg("12416", dup265); - -var msg14862 = msg("12417", dup265); - -var msg14863 = msg("12418", dup265); - -var msg14864 = msg("12419", dup265); - -var msg14865 = msg("12420", dup265); - -var msg14866 = msg("12421", dup196); - -var msg14867 = msg("12422", dup196); - -var msg14868 = msg("12423", dup250); - -var msg14869 = msg("12424", dup222); - -var msg14870 = msg("12425", dup196); - -var msg14871 = msg("12426", dup196); - -var msg14872 = msg("12427", dup196); - -var msg14873 = msg("12428", dup265); - -var msg14874 = msg("12429", dup265); - -var msg14875 = msg("12430", dup265); - -var msg14876 = msg("12431", dup265); - -var msg14877 = msg("12432", dup265); - -var msg14878 = msg("12433", dup265); - -var msg14879 = msg("12434", dup265); - -var msg14880 = msg("12435", dup265); - -var msg14881 = msg("12436", dup196); - -var msg14882 = msg("12437", dup196); - -var msg14883 = msg("12438", dup265); - -var msg14884 = msg("12439", dup265); - -var msg14885 = msg("12440", dup265); - -var msg14886 = msg("12441", dup265); - -var msg14887 = msg("12442", dup265); - -var msg14888 = msg("12443", dup265); - -var msg14889 = msg("12444", dup240); - -var msg14890 = msg("12445", dup240); - -var msg14891 = msg("12446", dup240); - -var msg14892 = msg("12447", dup240); - -var msg14893 = msg("12448", dup265); - -var msg14894 = msg("12449", dup265); - -var msg14895 = msg("12450", dup265); - -var msg14896 = msg("12451", dup265); - -var msg14897 = msg("12452", dup265); - -var msg14898 = msg("12453", dup265); - -var msg14899 = msg("12454", dup196); - -var msg14900 = msg("12455", dup196); - -var msg14901 = msg("12456", dup196); - -var msg14902 = msg("12457", dup196); - -var msg14903 = msg("12458", dup287); - -var msg14904 = msg("12459", dup265); - -var msg14905 = msg("12460", dup265); - -var msg14906 = msg("12461", dup265); - -var msg14907 = msg("12462", dup265); - -var msg14908 = msg("12463", dup222); - -var msg14909 = msg("12464", dup222); - -var msg14910 = msg("12465", dup196); - -var msg14911 = msg("12466", dup265); - -var msg14912 = msg("12467", dup265); - -var msg14913 = msg("12468", dup265); - -var msg14914 = msg("12469", dup265); - -var msg14915 = msg("12470", dup265); - -var msg14916 = msg("12471", dup265); - -var msg14917 = msg("12472", dup265); - -var msg14918 = msg("12473", dup265); - -var msg14919 = msg("12474", dup265); - -var msg14920 = msg("12475", dup265); - -var msg14921 = msg("12476", dup265); - -var msg14922 = msg("12477", dup265); - -var msg14923 = msg("12478", dup265); - -var msg14924 = msg("12479", dup265); - -var msg14925 = msg("12480", dup303); - -var msg14926 = msg("12481", dup303); - -var msg14927 = msg("12482", dup303); - -var msg14928 = msg("12483", dup303); - -var msg14929 = msg("12484", dup303); - -var msg14930 = msg("12485", dup303); - -var msg14931 = msg("12486", dup303); - -var msg14932 = msg("12487", dup303); - -var msg14933 = msg("12488", dup303); - -var msg14934 = msg("12489", dup276); - -var msg14935 = msg("12490", dup276); - -var msg14936 = msg("12491", dup276); - -var msg14937 = msg("12492", dup276); - -var msg14938 = msg("12493", dup276); - -var msg14939 = msg("12494", dup276); - -var msg14940 = msg("12495", dup276); - -var msg14941 = msg("12496", dup276); - -var msg14942 = msg("12497", dup276); - -var msg14943 = msg("12498", dup276); - -var msg14944 = msg("12499", dup276); - -var msg14945 = msg("12500", dup276); - -var msg14946 = msg("12501", dup276); - -var msg14947 = msg("12502", dup276); - -var msg14948 = msg("12503", dup276); - -var msg14949 = msg("12504", dup276); - -var msg14950 = msg("12505", dup276); - -var msg14951 = msg("12506", dup276); - -var msg14952 = msg("12507", dup276); - -var msg14953 = msg("12508", dup276); - -var msg14954 = msg("12509", dup276); - -var msg14955 = msg("12510", dup276); - -var msg14956 = msg("12511", dup276); - -var msg14957 = msg("12512", dup276); - -var msg14958 = msg("12513", dup276); - -var msg14959 = msg("12514", dup276); - -var msg14960 = msg("12515", dup276); - -var msg14961 = msg("12516", dup276); - -var msg14962 = msg("12517", dup276); - -var msg14963 = msg("12518", dup276); - -var msg14964 = msg("12519", dup276); - -var msg14965 = msg("12520", dup276); - -var msg14966 = msg("12521", dup276); - -var msg14967 = msg("12522", dup276); - -var msg14968 = msg("12523", dup276); - -var msg14969 = msg("12524", dup276); - -var msg14970 = msg("12525", dup276); - -var msg14971 = msg("12526", dup276); - -var msg14972 = msg("12527", dup276); - -var msg14973 = msg("12528", dup276); - -var msg14974 = msg("12529", dup276); - -var msg14975 = msg("12530", dup276); - -var msg14976 = msg("12531", dup276); - -var msg14977 = msg("12532", dup276); - -var msg14978 = msg("12533", dup276); - -var msg14979 = msg("12534", dup276); - -var msg14980 = msg("12535", dup276); - -var msg14981 = msg("12536", dup276); - -var msg14982 = msg("12537", dup276); - -var msg14983 = msg("12538", dup276); - -var msg14984 = msg("12539", dup276); - -var msg14985 = msg("12540", dup276); - -var msg14986 = msg("12541", dup276); - -var msg14987 = msg("12542", dup276); - -var msg14988 = msg("12543", dup276); - -var msg14989 = msg("12544", dup276); - -var msg14990 = msg("12545", dup276); - -var msg14991 = msg("12546", dup276); - -var msg14992 = msg("12547", dup276); - -var msg14993 = msg("12548", dup276); - -var msg14994 = msg("12549", dup276); - -var msg14995 = msg("12550", dup276); - -var msg14996 = msg("12551", dup276); - -var msg14997 = msg("12552", dup276); - -var msg14998 = msg("12553", dup276); - -var msg14999 = msg("12554", dup276); - -var msg15000 = msg("12555", dup276); - -var msg15001 = msg("12556", dup276); - -var msg15002 = msg("12557", dup276); - -var msg15003 = msg("12558", dup276); - -var msg15004 = msg("12559", dup276); - -var msg15005 = msg("12560", dup276); - -var msg15006 = msg("12561", dup276); - -var msg15007 = msg("12562", dup276); - -var msg15008 = msg("12563", dup276); - -var msg15009 = msg("12564", dup276); - -var msg15010 = msg("12565", dup276); - -var msg15011 = msg("12566", dup276); - -var msg15012 = msg("12567", dup276); - -var msg15013 = msg("12568", dup276); - -var msg15014 = msg("12569", dup276); - -var msg15015 = msg("12570", dup276); - -var msg15016 = msg("12571", dup276); - -var msg15017 = msg("12572", dup276); - -var msg15018 = msg("12573", dup276); - -var msg15019 = msg("12574", dup276); - -var msg15020 = msg("12575", dup276); - -var msg15021 = msg("12576", dup276); - -var msg15022 = msg("12577", dup276); - -var msg15023 = msg("12578", dup276); - -var msg15024 = msg("12579", dup276); - -var msg15025 = msg("12580", dup276); - -var msg15026 = msg("12581", dup276); - -var msg15027 = msg("12582", dup276); - -var msg15028 = msg("12583", dup276); - -var msg15029 = msg("12584", dup276); - -var msg15030 = msg("12585", dup276); - -var msg15031 = msg("12586", dup276); - -var msg15032 = msg("12587", dup276); - -var msg15033 = msg("12588", dup276); - -var msg15034 = msg("12589", dup276); - -var msg15035 = msg("12590", dup276); - -var msg15036 = msg("12591", dup198); - -var msg15037 = msg("12592", dup201); - -var msg15038 = msg("12593", dup196); - -var msg15039 = msg("12594", dup198); - -var msg15040 = msg("12595", dup269); - -var msg15041 = msg("12596", dup222); - -var msg15042 = msg("12597", dup198); - -var msg15043 = msg("12598", dup265); - -var msg15044 = msg("12599", dup265); - -var msg15045 = msg("12600", dup265); - -var msg15046 = msg("12601", dup265); - -var msg15047 = msg("12602", dup265); - -var msg15048 = msg("12603", dup265); - -var msg15049 = msg("12604", dup265); - -var msg15050 = msg("12605", dup265); - -var msg15051 = msg("12606", dup265); - -var msg15052 = msg("12607", dup265); - -var msg15053 = msg("12608", dup258); - -var msg15054 = msg("12609", dup258); - -var msg15055 = msg("12610", dup302); - -var msg15056 = msg("12611", dup196); - -var msg15057 = msg("12612", dup265); - -var msg15058 = msg("12613", dup265); - -var msg15059 = msg("12614", dup265); - -var msg15060 = msg("12615", dup265); - -var msg15061 = msg("12616", dup265); - -var msg15062 = msg("12617", dup265); - -var msg15063 = msg("12618", dup267); - -var msg15064 = msg("12619", dup196); - -var msg15065 = msg("12620", dup303); - -var msg15066 = msg("12621", dup303); - -var msg15067 = msg("12622", dup303); - -var msg15068 = msg("12623", dup303); - -var msg15069 = msg("12624", dup303); - -var msg15070 = msg("12625", dup303); - -var msg15071 = msg("12626", dup258); - -var msg15072 = msg("12627", dup287); - -var msg15073 = msg("12628", dup258); - -var msg15074 = msg("12629", dup265); - -var msg15075 = msg("12630", dup196); - -var msg15076 = msg("12631", dup196); - -var msg15077 = msg("12632", dup196); - -var msg15078 = msg("12633", dup196); - -var msg15079 = msg("12634", dup196); - -var msg15080 = msg("12635", dup198); - -var msg15081 = msg("12636", dup222); - -var msg15082 = msg("12637", dup194); - -var msg15083 = msg("12638", dup194); - -var msg15084 = msg("12639", dup194); - -var msg15085 = msg("12640", dup194); - -var msg15086 = msg("12641", dup196); - -var msg15087 = msg("12642", dup198); - -var msg15088 = msg("12643", dup265); - -var msg15089 = msg("12644", dup265); - -var msg15090 = msg("12645", dup265); - -var msg15091 = msg("12646", dup265); - -var msg15092 = msg("12647", dup265); - -var msg15093 = msg("12648", dup265); - -var msg15094 = msg("12649", dup265); - -var msg15095 = msg("12650", dup265); - -var msg15096 = msg("12651", dup265); - -var msg15097 = msg("12652", dup303); - -var msg15098 = msg("12653", dup303); - -var msg15099 = msg("12654", dup303); - -var msg15100 = msg("12655", dup303); - -var msg15101 = msg("12656", dup303); - -var msg15102 = msg("12657", dup303); - -var msg15103 = msg("12658", dup303); - -var msg15104 = msg("12659", dup303); - -var msg15105 = msg("12660", dup303); - -var msg15106 = msg("12661", dup192); - -var msg15107 = msg("12663", dup265); - -var msg15108 = msg("12664", dup196); - -var msg15109 = msg("12665", dup222); - -var msg15110 = msg("12666", dup222); - -var msg15111 = msg("12667", dup269); - -var msg15112 = msg("12668", dup265); - -var msg15113 = msg("12669", dup265); - -var msg15114 = msg("12670", dup265); - -var msg15115 = msg("12671", dup265); - -var msg15116 = msg("12672", dup303); - -var msg15117 = msg("12673", dup303); - -var msg15118 = msg("12674", dup303); - -var msg15119 = msg("12675", dup192); - -var msg15120 = msg("12676", dup303); - -var msg15121 = msg("12677", dup303); - -var msg15122 = msg("12678", dup303); - -var msg15123 = msg("12679", dup303); - -var msg15124 = msg("12680", dup201); - -var msg15125 = msg("12681", dup197); - -var msg15126 = msg("12682", dup201); - -var msg15127 = msg("12683", dup201); - -var msg15128 = msg("12684", dup192); - -var msg15129 = msg("12685", dup197); - -var msg15130 = msg("12686", dup196); - -var msg15131 = msg("12687", dup267); - -var msg15132 = msg("12688", dup267); - -var msg15133 = msg("12689", dup265); - -var msg15134 = msg("12690", dup265); - -var msg15135 = msg("12691", dup196); - -var msg15136 = msg("12692", dup201); - -var msg15137 = msg("12693", dup303); - -var msg15138 = msg("12694", dup303); - -var msg15139 = msg("12695", dup303); - -var msg15140 = msg("12696", dup303); - -var msg15141 = msg("12697", dup303); - -var msg15142 = msg("12698", dup303); - -var msg15143 = msg("12699", dup192); - -var msg15144 = msg("12700", dup192); - -var msg15145 = msg("12701", dup192); - -var msg15146 = msg("12702", dup192); - -var msg15147 = msg("12703", dup265); - -var msg15148 = msg("12704", dup197); - -var msg15149 = msg("12705", dup197); - -var msg15150 = msg("12706", dup197); - -var msg15151 = msg("12707", dup267); - -var msg15152 = msg("12708", dup222); - -var msg15153 = msg("12709", dup196); - -var msg15154 = msg("12710", dup196); - -var msg15155 = msg("12711", dup265); - -var msg15156 = msg("12712", dup242); - -var msg15157 = msg("12713", dup222); - -var msg15158 = msg("12714", dup265); - -var msg15159 = msg("12715", dup265); - -var msg15160 = msg("12716", dup265); - -var msg15161 = msg("12717", dup265); - -var msg15162 = msg("12718", dup303); - -var msg15163 = msg("12719", dup303); - -var msg15164 = msg("12720", dup303); - -var msg15165 = msg("12721", dup303); - -var msg15166 = msg("12722", dup303); - -var msg15167 = msg("12723", dup303); - -var msg15168 = msg("12724", dup192); - -var msg15169 = msg("12725", dup192); - -var msg15170 = msg("12726", dup192); - -var msg15171 = msg("12727", dup192); - -var msg15172 = msg("12728", dup267); - -var msg15173 = msg("12729", dup265); - -var msg15174 = msg("12730", dup265); - -var msg15175 = msg("12731", dup265); - -var msg15176 = msg("12732", dup265); - -var msg15177 = msg("12733", dup265); - -var msg15178 = msg("12734", dup265); - -var msg15179 = msg("12735", dup265); - -var msg15180 = msg("12736", dup265); - -var msg15181 = msg("12737", dup265); - -var msg15182 = msg("12738", dup265); - -var msg15183 = msg("12739", dup265); - -var msg15184 = msg("12740", dup265); - -var msg15185 = msg("12741", dup201); - -var msg15186 = msg("12742", dup222); - -var msg15187 = msg("12743", dup201); - -var msg15188 = msg("12744", dup267); - -var msg15189 = msg("12745", dup267); - -var msg15190 = msg("12746", dup222); - -var msg15191 = msg("12747", dup194); - -var msg15192 = msg("12748", dup194); - -var msg15193 = msg("12749", dup194); - -var msg15194 = msg("12750", dup194); - -var msg15195 = msg("12751", dup265); - -var msg15196 = msg("12752", dup265); - -var msg15197 = msg("12753", dup265); - -var msg15198 = msg("12754", dup265); - -var msg15199 = msg("12755", dup265); - -var msg15200 = msg("12756", dup265); - -var msg15201 = msg("12757", dup267); - -var msg15202 = msg("12758", dup303); - -var msg15203 = msg("12759", dup303); - -var msg15204 = msg("12760", dup303); - -var msg15205 = msg("12761", dup303); - -var msg15206 = msg("12762", dup265); - -var msg15207 = msg("12763", dup265); - -var msg15208 = msg("12764", dup265); - -var msg15209 = msg("12765", dup265); - -var msg15210 = msg("12766", dup265); - -var msg15211 = msg("12767", dup265); - -var msg15212 = msg("12768", dup265); - -var msg15213 = msg("12769", dup265); - -var msg15214 = msg("12770", dup196); - -var msg15215 = msg("12771", dup196); - -var msg15216 = msg("12772", dup196); - -var msg15217 = msg("12773", dup196); - -var msg15218 = msg("12774", dup196); - -var msg15219 = msg("12775", dup196); - -var msg15220 = msg("12776", dup265); - -var msg15221 = msg("12777", dup265); - -var msg15222 = msg("12778", dup265); - -var msg15223 = msg("12779", dup265); - -var msg15224 = msg("12780", dup265); - -var msg15225 = msg("12781", dup265); - -var msg15226 = msg("12782", dup265); - -var msg15227 = msg("12783", dup265); - -var msg15228 = msg("12784", dup197); - -var msg15229 = msg("12785", dup197); - -var msg15230 = msg("12786", dup222); - -var msg15231 = msg("12787", dup222); - -var msg15232 = msg("12788", dup222); - -var msg15233 = msg("12789", dup303); - -var msg15234 = msg("12790", dup303); - -var msg15235 = msg("12791", dup303); - -var msg15236 = msg("12792", dup303); - -var msg15237 = msg("12793", dup303); - -var msg15238 = msg("12794", dup303); - -var msg15239 = msg("12795", dup303); - -var msg15240 = msg("12796", dup303); - -var msg15241 = msg("12797", dup303); - -var msg15242 = msg("12798", dup196); - -var msg15243 = msg("12799", dup196); - -var msg15244 = msg("12800", dup196); - -var msg15245 = msg("12801", dup196); - -var msg15246 = msg("12802", dup196); - -var msg15247 = msg("12803", dup265); - -var msg15248 = msg("12804", dup265); - -var msg15249 = msg("12805", dup265); - -var msg15250 = msg("12806", dup265); - -var msg15251 = msg("12807", dup250); - -var msg15252 = msg("12808", dup276); - -var msg15253 = msg("12809", dup276); - -var msg15254 = msg("12810", dup276); - -var msg15255 = msg("12811", dup276); - -var msg15256 = msg("12812", dup276); - -var msg15257 = msg("12813", dup276); - -var msg15258 = msg("12814", dup276); - -var msg15259 = msg("12815", dup276); - -var msg15260 = msg("12816", dup276); - -var msg15261 = msg("12817", dup276); - -var msg15262 = msg("12818", dup276); - -var msg15263 = msg("12819", dup276); - -var msg15264 = msg("12820", dup276); - -var msg15265 = msg("12821", dup276); - -var msg15266 = msg("12822", dup276); - -var msg15267 = msg("12823", dup276); - -var msg15268 = msg("12824", dup276); - -var msg15269 = msg("12825", dup276); - -var msg15270 = msg("12826", dup276); - -var msg15271 = msg("12827", dup276); - -var msg15272 = msg("12828", dup276); - -var msg15273 = msg("12829", dup276); - -var msg15274 = msg("12830", dup276); - -var msg15275 = msg("12831", dup276); - -var msg15276 = msg("12832", dup276); - -var msg15277 = msg("12833", dup276); - -var msg15278 = msg("12834", dup276); - -var msg15279 = msg("12835", dup276); - -var msg15280 = msg("12836", dup276); - -var msg15281 = msg("12837", dup276); - -var msg15282 = msg("12838", dup276); - -var msg15283 = msg("12839", dup276); - -var msg15284 = msg("12840", dup276); - -var msg15285 = msg("12841", dup276); - -var msg15286 = msg("12842", dup276); - -var msg15287 = msg("12843", dup276); - -var msg15288 = msg("12844", dup276); - -var msg15289 = msg("12845", dup276); - -var msg15290 = msg("12846", dup276); - -var msg15291 = msg("12847", dup276); - -var msg15292 = msg("12848", dup276); - -var msg15293 = msg("12849", dup276); - -var msg15294 = msg("12850", dup276); - -var msg15295 = msg("12851", dup276); - -var msg15296 = msg("12852", dup276); - -var msg15297 = msg("12853", dup276); - -var msg15298 = msg("12854", dup276); - -var msg15299 = msg("12855", dup276); - -var msg15300 = msg("12856", dup276); - -var msg15301 = msg("12857", dup276); - -var msg15302 = msg("12858", dup276); - -var msg15303 = msg("12859", dup276); - -var msg15304 = msg("12860", dup276); - -var msg15305 = msg("12861", dup276); - -var msg15306 = msg("12862", dup276); - -var msg15307 = msg("12863", dup276); - -var msg15308 = msg("12864", dup276); - -var msg15309 = msg("12865", dup276); - -var msg15310 = msg("12866", dup276); - -var msg15311 = msg("12867", dup276); - -var msg15312 = msg("12868", dup276); - -var msg15313 = msg("12869", dup276); - -var msg15314 = msg("12870", dup276); - -var msg15315 = msg("12871", dup276); - -var msg15316 = msg("12872", dup276); - -var msg15317 = msg("12873", dup276); - -var msg15318 = msg("12874", dup276); - -var msg15319 = msg("12875", dup276); - -var msg15320 = msg("12876", dup276); - -var msg15321 = msg("12877", dup276); - -var msg15322 = msg("12878", dup276); - -var msg15323 = msg("12879", dup276); - -var msg15324 = msg("12880", dup276); - -var msg15325 = msg("12881", dup276); - -var msg15326 = msg("12882", dup276); - -var msg15327 = msg("12883", dup276); - -var msg15328 = msg("12884", dup276); - -var msg15329 = msg("12885", dup276); - -var msg15330 = msg("12886", dup276); - -var msg15331 = msg("12887", dup276); - -var msg15332 = msg("12888", dup276); - -var msg15333 = msg("12889", dup276); - -var msg15334 = msg("12890", dup276); - -var msg15335 = msg("12891", dup276); - -var msg15336 = msg("12892", dup276); - -var msg15337 = msg("12893", dup276); - -var msg15338 = msg("12894", dup276); - -var msg15339 = msg("12895", dup276); - -var msg15340 = msg("12896", dup276); - -var msg15341 = msg("12897", dup276); - -var msg15342 = msg("12898", dup276); - -var msg15343 = msg("12899", dup276); - -var msg15344 = msg("12900", dup276); - -var msg15345 = msg("12901", dup276); - -var msg15346 = msg("12902", dup276); - -var msg15347 = msg("12903", dup276); - -var msg15348 = msg("12904", dup222); - -var msg15349 = msg("12905", dup222); - -var msg15350 = msg("12906", dup276); - -var msg15351 = msg("12907", dup276); - -var msg15352 = msg("12908", dup276); - -var msg15353 = msg("12909", dup276); - -var msg15354 = msg("12910", dup276); - -var msg15355 = msg("12911", dup276); - -var msg15356 = msg("12912", dup276); - -var msg15357 = msg("12913", dup276); - -var msg15358 = msg("12914", dup276); - -var msg15359 = msg("12915", dup276); - -var msg15360 = msg("12916", dup276); - -var msg15361 = msg("12917", dup276); - -var msg15362 = msg("12918", dup276); - -var msg15363 = msg("12919", dup276); - -var msg15364 = msg("12920", dup276); - -var msg15365 = msg("12921", dup276); - -var msg15366 = msg("12922", dup276); - -var msg15367 = msg("12923", dup276); - -var msg15368 = msg("12924", dup276); - -var msg15369 = msg("12925", dup276); - -var msg15370 = msg("12926", dup276); - -var msg15371 = msg("12927", dup276); - -var msg15372 = msg("12928", dup276); - -var msg15373 = msg("12929", dup276); - -var msg15374 = msg("12930", dup276); - -var msg15375 = msg("12931", dup276); - -var msg15376 = msg("12932", dup276); - -var msg15377 = msg("12933", dup276); - -var msg15378 = msg("12934", dup276); - -var msg15379 = msg("12935", dup276); - -var msg15380 = msg("12936", dup276); - -var msg15381 = msg("12937", dup276); - -var msg15382 = msg("12938", dup276); - -var msg15383 = msg("12939", dup276); - -var msg15384 = msg("12940", dup276); - -var msg15385 = msg("12941", dup276); - -var msg15386 = msg("12942", dup276); - -var msg15387 = msg("12943", dup276); - -var msg15388 = msg("12944", dup276); - -var msg15389 = msg("12945", dup276); - -var msg15390 = msg("12946", dup276); - -var msg15391 = msg("12947", dup276); - -var msg15392 = msg("12948", dup265); - -var msg15393 = msg("12949", dup265); - -var msg15394 = msg("12950", dup265); - -var msg15395 = msg("12951", dup265); - -var msg15396 = msg("12952", dup265); - -var msg15397 = msg("12953", dup265); - -var msg15398 = msg("12954", dup265); - -var msg15399 = msg("12955", dup265); - -var msg15400 = msg("12956", dup265); - -var msg15401 = msg("12957", dup265); - -var msg15402 = msg("12958", dup265); - -var msg15403 = msg("12959", dup265); - -var msg15404 = msg("12960", dup265); - -var msg15405 = msg("12961", dup265); - -var msg15406 = msg("12962", dup265); - -var msg15407 = msg("12963", dup265); - -var msg15408 = msg("12964", dup265); - -var msg15409 = msg("12965", dup265); - -var msg15410 = msg("12966", dup265); - -var msg15411 = msg("12967", dup265); - -var msg15412 = msg("12968", dup265); - -var msg15413 = msg("12969", dup265); - -var msg15414 = msg("12970", dup265); - -var msg15415 = msg("12971", dup222); - -var msg15416 = msg("12972", dup265); - -var msg15417 = msg("12973", dup276); - -var msg15418 = msg("12974", dup276); - -var msg15419 = msg("12975", dup276); - -var msg15420 = msg("12976", dup276); - -var msg15421 = msg("12977", dup276); - -var msg15422 = msg("12978", dup276); - -var msg15423 = msg("12979", dup276); - -var msg15424 = msg("12980", dup276); - -var msg15425 = msg("12981", dup276); - -var msg15426 = msg("12982", dup276); - -var msg15427 = msg("12983", dup222); - -var msg15428 = msg("12984", dup276); - -var msg15429 = msg("12985", dup276); - -var msg15430 = msg("12986", dup276); - -var msg15431 = msg("12987", dup276); - -var msg15432 = msg("12988", dup276); - -var msg15433 = msg("12989", dup276); - -var msg15434 = msg("12990", dup276); - -var msg15435 = msg("12991", dup276); - -var msg15436 = msg("12992", dup276); - -var msg15437 = msg("12993", dup276); - -var msg15438 = msg("12994", dup276); - -var msg15439 = msg("12995", dup276); - -var msg15440 = msg("12996", dup276); - -var msg15441 = msg("12997", dup276); - -var msg15442 = msg("12998", dup276); - -var msg15443 = msg("12999", dup276); - -var msg15444 = msg("13000", dup276); - -var msg15445 = msg("13001", dup276); - -var msg15446 = msg("13002", dup276); - -var msg15447 = msg("13003", dup276); - -var msg15448 = msg("13004", dup276); - -var msg15449 = msg("13005", dup276); - -var msg15450 = msg("13006", dup276); - -var msg15451 = msg("13007", dup276); - -var msg15452 = msg("13008", dup276); - -var msg15453 = msg("13009", dup276); - -var msg15454 = msg("13010", dup276); - -var msg15455 = msg("13011", dup276); - -var msg15456 = msg("13012", dup276); - -var msg15457 = msg("13013", dup276); - -var msg15458 = msg("13014", dup276); - -var msg15459 = msg("13015", dup276); - -var msg15460 = msg("13016", dup276); - -var msg15461 = msg("13017", dup276); - -var msg15462 = msg("13018", dup276); - -var msg15463 = msg("13019", dup276); - -var msg15464 = msg("13020", dup276); - -var msg15465 = msg("13021", dup276); - -var msg15466 = msg("13022", dup276); - -var msg15467 = msg("13023", dup276); - -var msg15468 = msg("13024", dup276); - -var msg15469 = msg("13025", dup276); - -var msg15470 = msg("13026", dup276); - -var msg15471 = msg("13027", dup276); - -var msg15472 = msg("13028", dup276); - -var msg15473 = msg("13029", dup276); - -var msg15474 = msg("13030", dup276); - -var msg15475 = msg("13031", dup276); - -var msg15476 = msg("13032", dup276); - -var msg15477 = msg("13033", dup276); - -var msg15478 = msg("13034", dup276); - -var msg15479 = msg("13035", dup276); - -var msg15480 = msg("13036", dup276); - -var msg15481 = msg("13037", dup276); - -var msg15482 = msg("13038", dup276); - -var msg15483 = msg("13039", dup276); - -var msg15484 = msg("13040", dup276); - -var msg15485 = msg("13041", dup276); - -var msg15486 = msg("13042", dup276); - -var msg15487 = msg("13043", dup276); - -var msg15488 = msg("13044", dup276); - -var msg15489 = msg("13045", dup276); - -var msg15490 = msg("13046", dup276); - -var msg15491 = msg("13047", dup276); - -var msg15492 = msg("13048", dup276); - -var msg15493 = msg("13049", dup276); - -var msg15494 = msg("13050", dup276); - -var msg15495 = msg("13051", dup276); - -var msg15496 = msg("13052", dup276); - -var msg15497 = msg("13053", dup276); - -var msg15498 = msg("13054", dup276); - -var msg15499 = msg("13055", dup276); - -var msg15500 = msg("13056", dup276); - -var msg15501 = msg("13057", dup276); - -var msg15502 = msg("13058", dup276); - -var msg15503 = msg("13059", dup276); - -var msg15504 = msg("13060", dup276); - -var msg15505 = msg("13061", dup276); - -var msg15506 = msg("13062", dup276); - -var msg15507 = msg("13063", dup276); - -var msg15508 = msg("13064", dup276); - -var msg15509 = msg("13065", dup276); - -var msg15510 = msg("13066", dup276); - -var msg15511 = msg("13067", dup276); - -var msg15512 = msg("13068", dup276); - -var msg15513 = msg("13069", dup276); - -var msg15514 = msg("13070", dup276); - -var msg15515 = msg("13071", dup276); - -var msg15516 = msg("13072", dup276); - -var msg15517 = msg("13073", dup276); - -var msg15518 = msg("13074", dup276); - -var msg15519 = msg("13075", dup276); - -var msg15520 = msg("13076", dup276); - -var msg15521 = msg("13077", dup276); - -var msg15522 = msg("13078", dup276); - -var msg15523 = msg("13079", dup276); - -var msg15524 = msg("13080", dup276); - -var msg15525 = msg("13081", dup276); - -var msg15526 = msg("13082", dup276); - -var msg15527 = msg("13083", dup276); - -var msg15528 = msg("13084", dup276); - -var msg15529 = msg("13085", dup276); - -var msg15530 = msg("13086", dup276); - -var msg15531 = msg("13087", dup276); - -var msg15532 = msg("13088", dup276); - -var msg15533 = msg("13089", dup276); - -var msg15534 = msg("13090", dup276); - -var msg15535 = msg("13091", dup276); - -var msg15536 = msg("13092", dup276); - -var msg15537 = msg("13093", dup276); - -var msg15538 = msg("13094", dup276); - -var msg15539 = msg("13095", dup276); - -var msg15540 = msg("13096", dup276); - -var msg15541 = msg("13097", dup276); - -var msg15542 = msg("13098", dup276); - -var msg15543 = msg("13099", dup276); - -var msg15544 = msg("13100", dup276); - -var msg15545 = msg("13101", dup276); - -var msg15546 = msg("13102", dup276); - -var msg15547 = msg("13103", dup276); - -var msg15548 = msg("13104", dup276); - -var msg15549 = msg("13105", dup276); - -var msg15550 = msg("13106", dup276); - -var msg15551 = msg("13107", dup276); - -var msg15552 = msg("13108", dup276); - -var msg15553 = msg("13109", dup276); - -var msg15554 = msg("13110", dup276); - -var msg15555 = msg("13111", dup276); - -var msg15556 = msg("13112", dup276); - -var msg15557 = msg("13113", dup276); - -var msg15558 = msg("13114", dup276); - -var msg15559 = msg("13115", dup276); - -var msg15560 = msg("13116", dup276); - -var msg15561 = msg("13117", dup276); - -var msg15562 = msg("13118", dup276); - -var msg15563 = msg("13119", dup276); - -var msg15564 = msg("13120", dup276); - -var msg15565 = msg("13121", dup276); - -var msg15566 = msg("13122", dup276); - -var msg15567 = msg("13123", dup276); - -var msg15568 = msg("13124", dup276); - -var msg15569 = msg("13125", dup276); - -var msg15570 = msg("13126", dup276); - -var msg15571 = msg("13127", dup276); - -var msg15572 = msg("13128", dup276); - -var msg15573 = msg("13129", dup276); - -var msg15574 = msg("13130", dup201); - -var msg15575 = msg("13131", dup276); - -var msg15576 = msg("13132", dup276); - -var msg15577 = msg("13133", dup276); - -var msg15578 = msg("13134", dup201); - -var msg15579 = msg("13135", dup276); - -var msg15580 = msg("13136", dup276); - -var msg15581 = msg("13137", dup276); - -var msg15582 = msg("13138", dup276); - -var msg15583 = msg("13139", dup201); - -var msg15584 = msg("13140", dup201); - -var msg15585 = msg("13141", dup276); - -var msg15586 = msg("13142", dup276); - -var msg15587 = msg("13143", dup201); - -var msg15588 = msg("13144", dup201); - -var msg15589 = msg("13145", dup201); - -var msg15590 = msg("13146", dup276); - -var msg15591 = msg("13147", dup201); - -var msg15592 = msg("13148", dup201); - -var msg15593 = msg("13149", dup276); - -var msg15594 = msg("13150", dup276); - -var msg15595 = msg("13151", dup276); - -var msg15596 = msg("13152", dup201); - -var msg15597 = msg("13153", dup276); - -var msg15598 = msg("13154", dup276); - -var msg15599 = msg("13155", dup201); - -var msg15600 = msg("13156", dup201); - -var msg15601 = msg("13157", dup276); - -var msg15602 = msg("13158", dup222); - -var msg15603 = msg("13159", dup222); - -var msg15604 = msg("13160", dup267); - -var msg15605 = msg("13161", dup222); - -var msg15606 = msg("13162", dup276); - -var msg15607 = msg("13163", dup276); - -var msg15608 = msg("13164", dup276); - -var msg15609 = msg("13165", dup276); - -var msg15610 = msg("13166", dup276); - -var msg15611 = msg("13167", dup276); - -var msg15612 = msg("13168", dup276); - -var msg15613 = msg("13169", dup276); - -var msg15614 = msg("13170", dup276); - -var msg15615 = msg("13171", dup276); - -var msg15616 = msg("13172", dup276); - -var msg15617 = msg("13173", dup276); - -var msg15618 = msg("13174", dup276); - -var msg15619 = msg("13175", dup276); - -var msg15620 = msg("13176", dup276); - -var msg15621 = msg("13177", dup276); - -var msg15622 = msg("13178", dup276); - -var msg15623 = msg("13179", dup276); - -var msg15624 = msg("13180", dup276); - -var msg15625 = msg("13181", dup276); - -var msg15626 = msg("13182", dup276); - -var msg15627 = msg("13183", dup276); - -var msg15628 = msg("13184", dup276); - -var msg15629 = msg("13185", dup276); - -var msg15630 = msg("13186", dup276); - -var msg15631 = msg("13187", dup276); - -var msg15632 = msg("13188", dup276); - -var msg15633 = msg("13189", dup276); - -var msg15634 = msg("13190", dup276); - -var msg15635 = msg("13191", dup276); - -var msg15636 = msg("13192", dup276); - -var msg15637 = msg("13193", dup276); - -var msg15638 = msg("13194", dup276); - -var msg15639 = msg("13195", dup276); - -var msg15640 = msg("13196", dup276); - -var msg15641 = msg("13197", dup276); - -var msg15642 = msg("13198", dup276); - -var msg15643 = msg("13199", dup276); - -var msg15644 = msg("13200", dup276); - -var msg15645 = msg("13201", dup276); - -var msg15646 = msg("13202", dup276); - -var msg15647 = msg("13203", dup276); - -var msg15648 = msg("13204", dup276); - -var msg15649 = msg("13205", dup276); - -var msg15650 = msg("13206", dup276); - -var msg15651 = msg("13207", dup276); - -var msg15652 = msg("13208", dup276); - -var msg15653 = msg("13209", dup276); - -var msg15654 = msg("13210", dup276); - -var msg15655 = msg("13211", dup276); - -var msg15656 = msg("13212", dup276); - -var msg15657 = msg("13213", dup276); - -var msg15658 = msg("13214", dup276); - -var msg15659 = msg("13215", dup276); - -var msg15660 = msg("13216", dup265); - -var msg15661 = msg("13217", dup265); - -var msg15662 = msg("13218", dup265); - -var msg15663 = msg("13219", dup265); - -var msg15664 = msg("13220", dup265); - -var msg15665 = msg("13221", dup222); - -var msg15666 = msg("13222", dup222); - -var msg15667 = msg("13223", dup269); - -var msg15668 = msg("13224", dup265); - -var msg15669 = msg("13225", dup265); - -var msg15670 = msg("13226", dup265); - -var msg15671 = msg("13227", dup265); - -var msg15672 = msg("13228", dup265); - -var msg15673 = msg("13229", dup265); - -var msg15674 = msg("13230", dup265); - -var msg15675 = msg("13231", dup265); - -var msg15676 = msg("13232", dup265); - -var msg15677 = msg("13233", dup265); - -var msg15678 = msg("13234", dup265); - -var msg15679 = msg("13235", dup265); - -var msg15680 = msg("13236", dup303); - -var msg15681 = msg("13237", dup303); - -var msg15682 = msg("13238", dup303); - -var msg15683 = msg("13239", dup303); - -var msg15684 = msg("13240", dup303); - -var msg15685 = msg("13241", dup303); - -var msg15686 = msg("13242", dup303); - -var msg15687 = msg("13243", dup303); - -var msg15688 = msg("13244", dup303); - -var msg15689 = msg("13245", dup192); - -var msg15690 = msg("13246", dup192); - -var msg15691 = msg("13247", dup192); - -var msg15692 = msg("13248", dup192); - -var msg15693 = msg("13249", dup196); - -var msg15694 = msg("13250", dup287); - -var msg15695 = msg("13251", dup258); - -var msg15696 = msg("13252", dup287); - -var msg15697 = msg("13253", dup258); - -var msg15698 = msg("13254", dup287); - -var msg15699 = msg("13255", dup258); - -var msg15700 = msg("13256", dup287); - -var msg15701 = msg("13257", dup258); - -var msg15702 = msg("13258", dup265); - -var msg15703 = msg("13259", dup265); - -var msg15704 = msg("13260", dup265); - -var msg15705 = msg("13261", dup265); - -var msg15706 = msg("13262", dup265); - -var msg15707 = msg("13263", dup265); - -var msg15708 = msg("13264", dup265); - -var msg15709 = msg("13265", dup265); - -var msg15710 = msg("13266", dup265); - -var msg15711 = msg("13267", dup265); - -var msg15712 = msg("13268", dup269); - -var msg15713 = msg("13269", dup196); - -var msg15714 = msg("13270", dup196); - -var msg15715 = msg("13271", dup196); - -var msg15716 = msg("13272", dup196); - -var msg15717 = msg("13273", dup265); - -var msg15718 = msg("13274", dup265); - -var msg15719 = msg("13275", dup265); - -var msg15720 = msg("13276", dup265); - -var msg15721 = msg("13277", dup303); - -var msg15722 = msg("13278", dup303); - -var msg15723 = msg("13279", dup303); - -var msg15724 = msg("13280", dup303); - -var msg15725 = msg("13281", dup303); - -var msg15726 = msg("13282", dup303); - -var msg15727 = msg("13283", dup303); - -var msg15728 = msg("13284", dup303); - -var msg15729 = msg("13285", dup303); - -var msg15730 = msg("13286", dup303); - -var msg15731 = msg("13287", dup201); - -var msg15732 = msg("13288", dup201); - -var msg15733 = msg("13289", dup265); - -var msg15734 = msg("13290", dup265); - -var msg15735 = msg("13291", dup222); - -var msg15736 = msg("13292", dup196); - -var msg15737 = msg("13293", dup267); - -var msg15738 = msg("13294", dup265); - -var msg15739 = msg("13295", dup265); - -var msg15740 = msg("13296", dup265); - -var msg15741 = msg("13297", dup265); - -var msg15742 = msg("13298", dup265); - -var msg15743 = msg("13299", dup265); - -var msg15744 = msg("13300", dup267); - -var msg15745 = msg("13301", dup267); - -var msg15746 = msg("13302", dup265); - -var msg15747 = msg("13303", dup265); - -var msg15748 = msg("13304", dup265); - -var msg15749 = msg("13305", dup265); - -var msg15750 = msg("13306", dup265); - -var msg15751 = msg("13307", dup198); - -var msg15752 = msg("13308", dup265); - -var msg15753 = msg("13309", dup198); - -var msg15754 = msg("13310", dup198); - -var msg15755 = msg("13311", dup198); - -var msg15756 = msg("13312", dup265); - -var msg15757 = msg("13313", dup265); - -var msg15758 = msg("13314", dup265); - -var msg15759 = msg("13315", dup265); - -var msg15760 = msg("13316", dup267); - -var msg15761 = msg("13317", dup267); - -var msg15762 = msg("13318", dup267); - -var msg15763 = msg("13319", dup267); - -var msg15764 = msg("13320", dup267); - -var msg15765 = msg("13321", dup265); - -var msg15766 = msg("13322", dup265); - -var msg15767 = msg("13323", dup265); - -var msg15768 = msg("13324", dup265); - -var msg15769 = msg("13325", dup265); - -var msg15770 = msg("13326", dup265); - -var msg15771 = msg("13327", dup265); - -var msg15772 = msg("13328", dup265); - -var msg15773 = msg("13329", dup265); - -var msg15774 = msg("13330", dup265); - -var msg15775 = msg("13331", dup265); - -var msg15776 = msg("13332", dup265); - -var msg15777 = msg("13333", dup265); - -var msg15778 = msg("13334", dup265); - -var msg15779 = msg("13335", dup265); - -var msg15780 = msg("13336", dup265); - -var msg15781 = msg("13337", dup194); - -var msg15782 = msg("13338", dup194); - -var msg15783 = msg("13339", dup303); - -var msg15784 = msg("13340", dup303); - -var msg15785 = msg("13341", dup303); - -var msg15786 = msg("13342", dup303); - -var msg15787 = msg("13343", dup303); - -var msg15788 = msg("13344", dup303); - -var msg15789 = msg("13345", dup303); - -var msg15790 = msg("13346", dup303); - -var msg15791 = msg("13347", dup303); - -var msg15792 = msg("13348", dup265); - -var msg15793 = msg("13349", dup265); - -var msg15794 = msg("13350", dup265); - -var msg15795 = msg("13351", dup265); - -var msg15796 = msg("13352", dup265); - -var msg15797 = msg("13353", dup265); - -var msg15798 = msg("13354", dup265); - -var msg15799 = msg("13355", dup265); - -var msg15800 = msg("13356", dup260); - -var msg15801 = msg("13357", dup236); - -var msg15802 = msg("13358", dup273); - -var msg15803 = msg("13359", dup236); - -var msg15804 = msg("13360", dup236); - -var msg15805 = msg("13361", dup222); - -var msg15806 = msg("13362", dup222); - -var msg15807 = msg("13363", dup222); - -var msg15808 = msg("13364", dup197); - -var msg15809 = msg("13365", dup222); - -var msg15810 = msg("13366", dup260); - -var msg15811 = msg("13367", dup276); - -var msg15812 = msg("13368", dup276); - -var msg15813 = msg("13369", dup276); - -var msg15814 = msg("13370", dup276); - -var msg15815 = msg("13371", dup276); - -var msg15816 = msg("13372", dup276); - -var msg15817 = msg("13373", dup276); - -var msg15818 = msg("13374", dup276); - -var msg15819 = msg("13375", dup276); - -var msg15820 = msg("13376", dup276); - -var msg15821 = msg("13377", dup276); - -var msg15822 = msg("13378", dup276); - -var msg15823 = msg("13379", dup276); - -var msg15824 = msg("13380", dup276); - -var msg15825 = msg("13381", dup276); - -var msg15826 = msg("13382", dup276); - -var msg15827 = msg("13383", dup276); - -var msg15828 = msg("13384", dup276); - -var msg15829 = msg("13385", dup276); - -var msg15830 = msg("13386", dup276); - -var msg15831 = msg("13387", dup276); - -var msg15832 = msg("13388", dup276); - -var msg15833 = msg("13389", dup276); - -var msg15834 = msg("13390", dup276); - -var msg15835 = msg("13391", dup276); - -var msg15836 = msg("13392", dup276); - -var msg15837 = msg("13393", dup276); - -var msg15838 = msg("13394", dup276); - -var msg15839 = msg("13395", dup276); - -var msg15840 = msg("13396", dup276); - -var msg15841 = msg("13397", dup276); - -var msg15842 = msg("13398", dup276); - -var msg15843 = msg("13399", dup276); - -var msg15844 = msg("13400", dup276); - -var msg15845 = msg("13401", dup276); - -var msg15846 = msg("13402", dup276); - -var msg15847 = msg("13403", dup276); - -var msg15848 = msg("13404", dup276); - -var msg15849 = msg("13405", dup276); - -var msg15850 = msg("13406", dup276); - -var msg15851 = msg("13407", dup276); - -var msg15852 = msg("13408", dup276); - -var msg15853 = msg("13409", dup276); - -var msg15854 = msg("13410", dup276); - -var msg15855 = msg("13411", dup276); - -var msg15856 = msg("13412", dup276); - -var msg15857 = msg("13413", dup276); - -var msg15858 = msg("13414", dup276); - -var msg15859 = msg("13415", dup197); - -var msg15860 = msg("13416", dup198); - -var msg15861 = msg("13417", dup222); - -var msg15862 = msg("13418", dup198); - -var msg15863 = msg("13419", dup265); - -var msg15864 = msg("13420", dup265); - -var msg15865 = msg("13421", dup265); - -var msg15866 = msg("13422", dup265); - -var msg15867 = msg("13423", dup265); - -var msg15868 = msg("13424", dup265); - -var msg15869 = msg("13425", dup198); - -var msg15870 = msg("13426", dup265); - -var msg15871 = msg("13427", dup265); - -var msg15872 = msg("13428", dup265); - -var msg15873 = msg("13429", dup265); - -var msg15874 = msg("13430", dup265); - -var msg15875 = msg("13431", dup265); - -var msg15876 = msg("13432", dup265); - -var msg15877 = msg("13433", dup265); - -var msg15878 = msg("13434", dup265); - -var msg15879 = msg("13435", dup265); - -var msg15880 = msg("13436", dup265); - -var msg15881 = msg("13437", dup265); - -var msg15882 = msg("13438", dup265); - -var msg15883 = msg("13439", dup265); - -var msg15884 = msg("13440", dup265); - -var msg15885 = msg("13441", dup265); - -var msg15886 = msg("13442", dup265); - -var msg15887 = msg("13443", dup265); - -var msg15888 = msg("13444", dup265); - -var msg15889 = msg("13445", dup265); - -var msg15890 = msg("13446", dup265); - -var msg15891 = msg("13447", dup265); - -var msg15892 = msg("13448", dup201); - -var msg15893 = msg("13449", dup201); - -var msg15894 = msg("13450", dup198); - -var msg15895 = msg("13451", dup265); - -var msg15896 = msg("13452", dup265); - -var msg15897 = msg("13453", dup265); - -var msg15898 = msg("13454", dup265); - -var msg15899 = msg("13455", dup265); - -var msg15900 = msg("13456", dup265); - -var msg15901 = msg("13457", dup265); - -var msg15902 = msg("13458", dup265); - -var msg15903 = msg("13459", dup265); - -var msg15904 = msg("13460", dup265); - -var msg15905 = msg("13465", dup265); - -var msg15906 = msg("13466", dup265); - -var msg15907 = msg("13467", dup265); - -var msg15908 = msg("13468", dup265); - -var msg15909 = msg("13469", dup265); - -var msg15910 = msg("13470", dup196); - -var msg15911 = msg("13471", dup196); - -var msg15912 = msg("13472", dup196); - -var msg15913 = msg("13473", dup196); - -var msg15914 = msg("13474", dup267); - -var msg15915 = msg("13475", dup198); - -var msg15916 = msg("13476", dup197); - -var msg15917 = msg("13477", dup196); - -var msg15918 = msg("13478", dup196); - -var msg15919 = msg("13479", dup303); - -var msg15920 = msg("13480", dup303); - -var msg15921 = msg("13481", dup303); - -var msg15922 = msg("13482", dup303); - -var msg15923 = msg("13483", dup303); - -var msg15924 = msg("13484", dup303); - -var msg15925 = msg("13485", dup303); - -var msg15926 = msg("13486", dup303); - -var msg15927 = msg("13487", dup303); - -var msg15928 = msg("13488", dup303); - -var msg15929 = msg("13489", dup303); - -var msg15930 = msg("13490", dup303); - -var msg15931 = msg("13491", dup303); - -var msg15932 = msg("13492", dup303); - -var msg15933 = msg("13493", dup303); - -var msg15934 = msg("13494", dup303); - -var msg15935 = msg("13495", dup303); - -var msg15936 = msg("13496", dup303); - -var msg15937 = msg("13497", dup303); - -var msg15938 = msg("13498", dup303); - -var msg15939 = msg("13499", dup303); - -var msg15940 = msg("13500", dup303); - -var msg15941 = msg("13501", dup303); - -var msg15942 = msg("13502", dup303); - -var msg15943 = msg("13503", dup303); - -var msg15944 = msg("13504", dup303); - -var msg15945 = msg("13505", dup303); - -var msg15946 = msg("13506", dup192); - -var msg15947 = msg("13507", dup192); - -var msg15948 = msg("13508", dup192); - -var msg15949 = msg("13509", dup192); - -var msg15950 = msg("13510", dup222); - -var msg15951 = msg("13511", dup196); - -var msg15952 = msg("13512", dup260); - -var msg15953 = msg("13513", dup260); - -var msg15954 = msg("13514", dup260); - -var msg15955 = msg("13515", dup196); - -var msg15956 = msg("13516", dup197); - -var msg15957 = msg("13517", dup196); - -var msg15958 = msg("13518", dup265); - -var msg15959 = msg("13519", dup222); - -var msg15960 = msg("13520", dup269); - -var msg15961 = msg("13521", dup269); - -var msg15962 = msg("13522", dup197); - -var msg15963 = msg("13523", dup265); - -var msg15964 = msg("13524", dup265); - -var msg15965 = msg("13525", dup265); - -var msg15966 = msg("13526", dup265); - -var msg15967 = msg("13527", dup265); - -var msg15968 = msg("13528", dup265); - -var msg15969 = msg("13529", dup265); - -var msg15970 = msg("13530", dup265); - -var msg15971 = msg("13531", dup265); - -var msg15972 = msg("13532", dup265); - -var msg15973 = msg("13533", dup265); - -var msg15974 = msg("13534", dup265); - -var msg15975 = msg("13535", dup265); - -var msg15976 = msg("13536", dup265); - -var msg15977 = msg("13537", dup265); - -var msg15978 = msg("13538", dup265); - -var msg15979 = msg("13539", dup267); - -var msg15980 = msg("13540", dup267); - -var msg15981 = msg("13541", dup267); - -var msg15982 = msg("13542", dup267); - -var msg15983 = msg("13543", dup265); - -var msg15984 = msg("13544", dup265); - -var msg15985 = msg("13545", dup265); - -var msg15986 = msg("13546", dup265); - -var msg15987 = msg("13547", dup265); - -var msg15988 = msg("13548", dup265); - -var msg15989 = msg("13549", dup265); - -var msg15990 = msg("13550", dup265); - -var msg15991 = msg("13551", dup260); - -var msg15992 = msg("13552", dup222); - -var msg15993 = msg("13553", dup197); - -var msg15994 = msg("13554", dup197); - -var msg15995 = msg("13555", dup197); - -var msg15996 = msg("13556", dup303); - -var msg15997 = msg("13557", dup303); - -var msg15998 = msg("13558", dup303); - -var msg15999 = msg("13559", dup303); - -var msg16000 = msg("13560", dup303); - -var msg16001 = msg("13561", dup303); - -var msg16002 = msg("13562", dup303); - -var msg16003 = msg("13563", dup303); - -var msg16004 = msg("13564", dup303); - -var msg16005 = msg("13565", dup303); - -var msg16006 = msg("13566", dup303); - -var msg16007 = msg("13567", dup303); - -var msg16008 = msg("13568", dup303); - -var msg16009 = msg("13569", dup269); - -var msg16010 = msg("13570", dup265); - -var msg16011 = msg("13571", dup265); - -var msg16012 = msg("13572", dup269); - -var msg16013 = msg("13573", dup265); - -var msg16014 = msg("13580", dup267); - -var msg16015 = msg("13581", dup267); - -var msg16016 = msg("13582", dup265); - -var msg16017 = msg("13583", dup266); - -var msg16018 = msg("13584", dup266); - -var msg16019 = msg("13585", dup217); - -var all47 = all_match({ - processors: [ - dup66, - dup178, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup76, - dup56, - ]), -}); - -var msg16020 = msg("13585:01", all47); - -var select2440 = linear_select([ - msg16019, - msg16020, -]); - -var msg16021 = msg("13586", dup196); - -var msg16022 = msg("13587", dup287); - -var msg16023 = msg("13588", dup287); - -var msg16024 = msg("13589", dup287); - -var msg16025 = msg("13590", dup287); - -var msg16026 = msg("13591", dup194); - -var msg16027 = msg("13592", dup269); - -var msg16028 = msg("13593", dup260); - -var msg16029 = msg("13593:01", dup261); - -var select2441 = linear_select([ - msg16028, - msg16029, -]); - -var msg16030 = msg("13594", dup198); - -var msg16031 = msg("13595", dup266); - -var msg16032 = msg("13596", dup266); - -var msg16033 = msg("13597", dup266); - -var msg16034 = msg("13598", dup266); - -var msg16035 = msg("13599", dup229); - -var msg16036 = msg("13600", dup229); - -var msg16037 = msg("13601", dup229); - -var msg16038 = msg("13602", dup229); - -var msg16039 = msg("13603", dup266); - -var msg16040 = msg("13604", dup266); - -var msg16041 = msg("13605", dup266); - -var msg16042 = msg("13606", dup266); - -var msg16043 = msg("13607", dup266); - -var msg16044 = msg("13608", dup266); - -var msg16045 = msg("13609", dup266); - -var msg16046 = msg("13610", dup266); - -var msg16047 = msg("13611", dup196); - -var msg16048 = msg("13612", dup285); - -var msg16049 = msg("13613", dup285); - -var msg16050 = msg("13614", dup222); - -var msg16051 = msg("13615", dup222); - -var msg16052 = msg("13616", dup197); - -var msg16053 = msg("13617", dup222); - -var msg16054 = msg("13618", dup222); - -var msg16055 = msg("13619", dup196); - -var msg16056 = msg("13620", dup222); - -var msg16057 = msg("13621", dup266); - -var msg16058 = msg("13622", dup266); - -var msg16059 = msg("13623", dup266); - -var msg16060 = msg("13624", dup266); - -var msg16061 = msg("13625", dup262); - -var msg16062 = msg("13626", dup265); - -var msg16063 = msg("13627", dup266); - -var msg16064 = msg("13628", dup265); - -var msg16065 = msg("13628:01", dup266); - -var select2442 = linear_select([ - msg16064, - msg16065, -]); - -var msg16066 = msg("13629", dup265); - -var msg16067 = msg("13630", dup265); - -var msg16068 = msg("13631", dup196); - -var msg16069 = msg("13632", dup266); - -var msg16070 = msg("13633", dup265); - -var msg16071 = msg("13634", dup265); - -var msg16072 = msg("13635", dup192); - -var msg16073 = msg("13636", dup192); - -var msg16074 = msg("13637", dup303); - -var msg16075 = msg("13638", dup303); - -var msg16076 = msg("13639", dup303); - -var msg16077 = msg("13640", dup303); - -var msg16078 = msg("13641", dup303); - -var msg16079 = msg("13642", dup303); - -var msg16080 = msg("13643", dup303); - -var msg16081 = msg("13644", dup303); - -var msg16082 = msg("13645", dup303); - -var msg16083 = msg("13646", dup303); - -var msg16084 = msg("13647", dup303); - -var msg16085 = msg("13648", dup303); - -var msg16086 = msg("13649", dup303); - -var msg16087 = msg("13650", dup303); - -var msg16088 = msg("13651", dup303); - -var msg16089 = msg("13652", dup303); - -var msg16090 = msg("13653", dup303); - -var msg16091 = msg("13654", dup192); - -var msg16092 = msg("13655", dup192); - -var msg16093 = msg("13656", dup267); - -var msg16094 = msg("13657", dup265); - -var msg16095 = msg("13658", dup265); - -var msg16096 = msg("13659", dup265); - -var msg16097 = msg("13660", dup265); - -var msg16098 = msg("13661", dup265); - -var msg16099 = msg("13662", dup265); - -var msg16100 = msg("13663", dup222); - -var msg16101 = msg("13664", dup196); - -var msg16102 = msg("13665", dup267); - -var msg16103 = msg("13666", dup267); - -var msg16104 = msg("13667", dup196); - -var msg16105 = msg("13668", dup265); - -var msg16106 = msg("13669", dup265); - -var msg16107 = msg("13670", dup265); - -var msg16108 = msg("13671", dup265); - -var msg16109 = msg("13672", dup265); - -var msg16110 = msg("13673", dup265); - -var msg16111 = msg("13674", dup265); - -var msg16112 = msg("13675", dup265); - -var msg16113 = msg("13676", dup267); - -var msg16114 = msg("13677", dup265); - -var msg16115 = msg("13678", dup196); - -var msg16116 = msg("13679", dup265); - -var msg16117 = msg("13680", dup265); - -var msg16118 = msg("13681", dup265); - -var msg16119 = msg("13682", dup265); - -var msg16120 = msg("13683", dup265); - -var msg16121 = msg("13684", dup265); - -var msg16122 = msg("13685", dup265); - -var msg16123 = msg("13686", dup265); - -var msg16124 = msg("13687", dup265); - -var msg16125 = msg("13688", dup265); - -var msg16126 = msg("13689", dup265); - -var msg16127 = msg("13690", dup265); - -var msg16128 = msg("13691", dup265); - -var msg16129 = msg("13692", dup265); - -var msg16130 = msg("13693", dup196); - -var msg16131 = msg("13694", dup196); - -var msg16132 = msg("13695", dup196); - -var msg16133 = msg("13696", dup196); - -var msg16134 = msg("13697", dup196); - -var msg16135 = msg("13698", dup196); - -var msg16136 = msg("13699", dup265); - -var msg16137 = msg("13700", dup265); - -var msg16138 = msg("13709", dup240); - -var msg16139 = msg("13710", dup240); - -var msg16140 = msg("13711", dup201); - -var msg16141 = msg("13712", dup260); - -var msg16142 = msg("13713", dup260); - -var msg16143 = msg("13714", dup201); - -var msg16144 = msg("13715", dup267); - -var msg16145 = msg("13716", dup287); - -var msg16146 = msg("13717", dup258); - -var msg16147 = msg("13718", dup222); - -var msg16148 = msg("13719", dup197); - -var msg16149 = msg("13720", dup265); - -var msg16150 = msg("13721", dup265); - -var msg16151 = msg("13722", dup265); - -var msg16152 = msg("13723", dup265); - -var msg16153 = msg("13724", dup265); - -var msg16154 = msg("13725", dup265); - -var msg16155 = msg("13726", dup265); - -var msg16156 = msg("13727", dup265); - -var msg16157 = msg("13728", dup265); - -var msg16158 = msg("13729", dup265); - -var msg16159 = msg("13730", dup265); - -var msg16160 = msg("13731", dup265); - -var msg16161 = msg("13732", dup265); - -var msg16162 = msg("13733", dup265); - -var msg16163 = msg("13734", dup265); - -var msg16164 = msg("13735", dup265); - -var msg16165 = msg("13736", dup265); - -var msg16166 = msg("13737", dup265); - -var msg16167 = msg("13738", dup265); - -var msg16168 = msg("13739", dup265); - -var msg16169 = msg("13740", dup265); - -var msg16170 = msg("13741", dup265); - -var msg16171 = msg("13742", dup265); - -var msg16172 = msg("13743", dup265); - -var msg16173 = msg("13744", dup265); - -var msg16174 = msg("13745", dup265); - -var msg16175 = msg("13746", dup265); - -var msg16176 = msg("13747", dup265); - -var msg16177 = msg("13748", dup265); - -var msg16178 = msg("13749", dup265); - -var msg16179 = msg("13750", dup265); - -var msg16180 = msg("13751", dup265); - -var msg16181 = msg("13752", dup265); - -var msg16182 = msg("13753", dup265); - -var msg16183 = msg("13754", dup265); - -var msg16184 = msg("13755", dup265); - -var msg16185 = msg("13756", dup265); - -var msg16186 = msg("13757", dup265); - -var msg16187 = msg("13758", dup265); - -var msg16188 = msg("13759", dup265); - -var msg16189 = msg("13760", dup265); - -var msg16190 = msg("13761", dup265); - -var msg16191 = msg("13762", dup303); - -var msg16192 = msg("13763", dup303); - -var msg16193 = msg("13764", dup303); - -var msg16194 = msg("13765", dup303); - -var msg16195 = msg("13766", dup303); - -var msg16196 = msg("13767", dup303); - -var msg16197 = msg("13768", dup303); - -var msg16198 = msg("13769", dup303); - -var msg16199 = msg("13770", dup303); - -var msg16200 = msg("13771", dup303); - -var msg16201 = msg("13772", dup303); - -var msg16202 = msg("13773", dup198); - -var msg16203 = msg("13774", dup192); - -var msg16204 = msg("13775", dup192); - -var msg16205 = msg("13776", dup303); - -var msg16206 = msg("13777", dup303); - -var msg16207 = msg("13778", dup303); - -var msg16208 = msg("13779", dup303); - -var msg16209 = msg("13780", dup303); - -var msg16210 = msg("13781", dup303); - -var msg16211 = msg("13782", dup303); - -var msg16212 = msg("13783", dup265); - -var msg16213 = msg("13784", dup265); - -var msg16214 = msg("13785", dup265); - -var msg16215 = msg("13786", dup265); - -var msg16216 = msg("13787", dup265); - -var msg16217 = msg("13788", dup265); - -var msg16218 = msg("13789", dup265); - -var msg16219 = msg("13790", dup267); - -var msg16220 = msg("13791", dup260); - -var msg16221 = msg("13797", dup196); - -var msg16222 = msg("13798", dup198); - -var msg16223 = msg("13799", dup267); - -var msg16224 = msg("13800", dup222); - -var msg16225 = msg("13801", dup196); - -var msg16226 = msg("13802", dup198); - -var msg16227 = msg("13803", dup267); - -var msg16228 = msg("13804", dup222); - -var msg16229 = msg("13805", dup287); - -var msg16230 = msg("13806", dup258); - -var msg16231 = msg("13807", dup267); - -var msg16232 = msg("13808", dup303); - -var msg16233 = msg("13809", dup303); - -var msg16234 = msg("13810", dup303); - -var msg16235 = msg("13811", dup303); - -var msg16236 = msg("13812", dup303); - -var msg16237 = msg("13813", dup303); - -var msg16238 = msg("13814", dup192); - -var msg16239 = msg("13815", dup192); - -var msg16240 = msg("13816", dup255); - -var msg16241 = msg("13817", dup255); - -var msg16242 = msg("13818", dup255); - -var msg16243 = msg("13819", dup267); - -var msg16244 = msg("13820", dup265); - -var msg16245 = msg("13821", dup265); - -var msg16246 = msg("13822", dup265); - -var msg16247 = msg("13823", dup267); - -var msg16248 = msg("13824", dup269); - -var msg16249 = msg("13825", dup198); - -var msg16250 = msg("13826", dup196); - -var msg16251 = msg("13827", dup198); - -var msg16252 = msg("13828", dup265); - -var msg16253 = msg("13829", dup265); - -var msg16254 = msg("13830", dup265); - -var msg16255 = msg("13831", dup265); - -var msg16256 = msg("13832", dup265); - -var msg16257 = msg("13833", dup265); - -var msg16258 = msg("13834", dup265); - -var msg16259 = msg("13835", dup198); - -var msg16260 = msg("13838", dup267); - -var msg16261 = msg("13839", dup196); - -var msg16262 = msg("13840", dup197); - -var msg16263 = msg("13841", dup197); - -var msg16264 = msg("13842", dup197); - -var msg16265 = msg("13843", dup197); - -var msg16266 = msg("13844", dup196); - -var msg16267 = msg("13845", dup196); - -var msg16268 = msg("13846", dup222); - -var msg16269 = msg("13847", dup303); - -var msg16270 = msg("13848", dup303); - -var msg16271 = msg("13849", dup303); - -var msg16272 = msg("13850", dup303); - -var msg16273 = msg("13851", dup303); - -var msg16274 = msg("13852", dup303); - -var msg16275 = msg("13853", dup303); - -var msg16276 = msg("13854", dup303); - -var msg16277 = msg("13855", dup303); - -var msg16278 = msg("13856", dup192); - -var msg16279 = msg("13857", dup265); - -var msg16280 = msg("13858", dup265); - -var msg16281 = msg("13859", dup265); - -var msg16282 = msg("13860", dup265); - -var msg16283 = msg("13861", dup196); - -var msg16284 = msg("13862", dup196); - -var msg16285 = msg("13863", dup301); - -var msg16286 = msg("13864", dup196); - -var msg16287 = msg("13865", dup267); - -var msg16288 = msg("13866", dup303); - -var msg16289 = msg("13867", dup303); - -var msg16290 = msg("13868", dup303); - -var msg16291 = msg("13869", dup303); - -var msg16292 = msg("13870", dup303); - -var msg16293 = msg("13871", dup303); - -var msg16294 = msg("13872", dup303); - -var msg16295 = msg("13873", dup303); - -var msg16296 = msg("13874", dup303); - -var msg16297 = msg("13875", dup303); - -var msg16298 = msg("13876", dup192); - -var msg16299 = msg("13877", dup192); - -var msg16300 = msg("13878", dup192); - -var msg16301 = msg("13879", dup269); - -var msg16302 = msg("13880", dup196); - -var msg16303 = msg("13881", dup196); - -var msg16304 = msg("13882", dup196); - -var msg16305 = msg("13883", dup265); - -var msg16306 = msg("13884", dup265); - -var msg16307 = msg("13885", dup265); - -var msg16308 = msg("13886", dup265); - -var msg16309 = msg("13887", dup196); - -var msg16310 = msg("13888", dup260); - -var msg16311 = msg("13889", dup260); - -var msg16312 = msg("13890", dup260); - -var msg16313 = msg("13891", dup240); - -var msg16314 = msg("13892", dup196); - -var msg16315 = msg("13893", dup265); - -var msg16316 = msg("13894", dup287); - -var msg16317 = msg("13895", dup201); - -var msg16318 = msg("13896", dup196); - -var msg16319 = msg("13897", dup222); - -var msg16320 = msg("13898", dup196); - -var msg16321 = msg("13899", dup196); - -var msg16322 = msg("13900", dup196); - -var msg16323 = msg("13901", dup276); - -var msg16324 = msg("13902", dup201); - -var msg16325 = msg("13903", dup265); - -var msg16326 = msg("13904", dup265); - -var msg16327 = msg("13905", dup265); - -var msg16328 = msg("13906", dup265); - -var msg16329 = msg("13907", dup265); - -var msg16330 = msg("13908", dup265); - -var msg16331 = msg("13909", dup265); - -var msg16332 = msg("13910", dup265); - -var msg16333 = msg("13911", dup265); - -var msg16334 = msg("13912", dup196); - -var msg16335 = msg("13913", dup265); - -var msg16336 = msg("13914", dup265); - -var msg16337 = msg("13915", dup265); - -var msg16338 = msg("13916", dup222); - -var msg16339 = msg("13917", dup267); - -var msg16340 = msg("13918", dup267); - -var msg16341 = msg("13919", dup267); - -var msg16342 = msg("13920", dup267); - -var msg16343 = msg("13921", dup196); - -var msg16344 = msg("13922", dup197); - -var msg16345 = msg("13923", dup198); - -var msg16346 = msg("13924", dup267); - -var msg16347 = msg("13925", dup222); - -var msg16348 = msg("13926", dup197); - -var msg16349 = msg("13927", dup295); - -var msg16350 = msg("13928", dup260); - -var msg16351 = msg("13929", dup260); - -var msg16352 = msg("13930", dup303); - -var msg16353 = msg("13931", dup303); - -var msg16354 = msg("13932", dup303); - -var msg16355 = msg("13933", dup303); - -var msg16356 = msg("13934", dup303); - -var msg16357 = msg("13935", dup303); - -var msg16358 = msg("13936", dup303); - -var msg16359 = msg("13937", dup303); - -var msg16360 = msg("13938", dup303); - -var msg16361 = msg("13939", dup303); - -var msg16362 = msg("13940", dup303); - -var msg16363 = msg("13941", dup192); - -var msg16364 = msg("13942", dup192); - -var msg16365 = msg("13943", dup303); - -var msg16366 = msg("13944", dup192); - -var msg16367 = msg("13945", dup192); - -var msg16368 = msg("13946", dup267); - -var msg16369 = msg("13947", dup267); - -var msg16370 = msg("13948", dup196); - -var msg16371 = msg("13949", dup196); - -var msg16372 = msg("13950", dup267); - -var msg16373 = msg("13951", dup267); - -var msg16374 = msg("13952", dup192); - -var msg16375 = msg("13953", dup192); - -var msg16376 = msg("13954", dup267); - -var msg16377 = msg("13958", dup267); - -var msg16378 = msg("13960", dup267); - -var msg16379 = msg("13961", dup267); - -var msg16380 = msg("13962", dup265); - -var msg16381 = msg("13963", dup267); - -var msg16382 = msg("13964", dup196); - -var msg16383 = msg("13965", dup265); - -var msg16384 = msg("13966", dup265); - -var msg16385 = msg("13967", dup265); - -var msg16386 = msg("13968", dup265); - -var msg16387 = msg("13969", dup267); - -var msg16388 = msg("13970", dup192); - -var msg16389 = msg("13971", dup267); - -var msg16390 = msg("13972", dup269); - -var msg16391 = msg("13973", dup267); - -var msg16392 = msg("13974", dup265); - -var msg16393 = msg("13975", dup265); - -var msg16394 = msg("13976", dup265); - -var msg16395 = msg("13977", dup265); - -var msg16396 = msg("13978", dup265); - -var msg16397 = msg("13979", dup265); - -var msg16398 = msg("13980", dup267); - -var msg16399 = msg("13981", dup269); - -var msg16400 = msg("13982", dup265); - -var msg16401 = msg("13983", dup196); - -var msg16402 = msg("13984", dup255); - -var msg16403 = msg("13985", dup255); - -var msg16404 = msg("13986", dup255); - -var msg16405 = msg("13987", dup260); - -var msg16406 = msg("13988", dup260); - -var msg16407 = msg("13989", dup260); - -var msg16408 = msg("13990", dup260); - -var msg16409 = msg("13991", dup240); - -var msg16410 = msg("13992", dup240); - -var msg16411 = msg("13993", dup240); - -var msg16412 = msg("13994", dup240); - -var msg16413 = msg("13995", dup240); - -var msg16414 = msg("13996", dup240); - -var msg16415 = msg("13997", dup240); - -var msg16416 = msg("13998", dup240); - -var msg16417 = msg("13999", dup260); - -var msg16418 = msg("14000", dup260); - -var msg16419 = msg("14001", dup260); - -var msg16420 = msg("14002", dup260); - -var msg16421 = msg("14003", dup260); - -var msg16422 = msg("14004", dup260); - -var msg16423 = msg("14005", dup260); - -var msg16424 = msg("14006", dup260); - -var msg16425 = msg("14007", dup260); - -var msg16426 = msg("14008", dup260); - -var msg16427 = msg("14013", dup265); - -var msg16428 = msg("14014", dup265); - -var msg16429 = msg("14015", dup265); - -var msg16430 = msg("14016", dup265); - -var msg16431 = msg("14017", dup196); - -var msg16432 = msg("14018", dup196); - -var msg16433 = msg("14019", dup267); - -var msg16434 = msg("14020", dup267); - -var msg16435 = msg("14021", dup265); - -var msg16436 = msg("14022", dup265); - -var msg16437 = msg("14023", dup265); - -var msg16438 = msg("14024", dup265); - -var msg16439 = msg("14025", dup265); - -var msg16440 = msg("14026", dup265); - -var msg16441 = msg("14027", dup265); - -var msg16442 = msg("14028", dup265); - -var msg16443 = msg("14029", dup265); - -var msg16444 = msg("14030", dup265); - -var msg16445 = msg("14031", dup265); - -var msg16446 = msg("14032", dup265); - -var msg16447 = msg("14033", dup265); - -var msg16448 = msg("14034", dup265); - -var msg16449 = msg("14035", dup265); - -var msg16450 = msg("14036", dup265); - -var msg16451 = msg("14037", dup201); - -var msg16452 = msg("14038", dup201); - -var msg16453 = msg("14039", dup222); - -var msg16454 = msg("14040", dup222); - -var msg16455 = msg("14041", dup222); - -var msg16456 = msg("14042", dup265); - -var msg16457 = msg("14043", dup265); - -var msg16458 = msg("14044", dup265); - -var msg16459 = msg("14045", dup265); - -var msg16460 = msg("14046", dup265); - -var msg16461 = msg("14047", dup265); - -var msg16462 = msg("14048", dup265); - -var msg16463 = msg("14049", dup265); - -var msg16464 = msg("14050", dup265); - -var msg16465 = msg("14051", dup265); - -var msg16466 = msg("14052", dup265); - -var msg16467 = msg("14053", dup265); - -var msg16468 = msg("14054", dup303); - -var msg16469 = msg("14055", dup303); - -var msg16470 = msg("14056", dup303); - -var msg16471 = msg("14057", dup303); - -var msg16472 = msg("14058", dup303); - -var msg16473 = msg("14059", dup303); - -var msg16474 = msg("14060", dup303); - -var msg16475 = msg("14061", dup303); - -var msg16476 = msg("14062", dup303); - -var msg16477 = msg("14063", dup303); - -var msg16478 = msg("14064", dup303); - -var msg16479 = msg("14065", dup303); - -var msg16480 = msg("14066", dup303); - -var msg16481 = msg("14067", dup303); - -var msg16482 = msg("14068", dup303); - -var msg16483 = msg("14069", dup303); - -var msg16484 = msg("14070", dup303); - -var msg16485 = msg("14071", dup303); - -var msg16486 = msg("14072", dup303); - -var msg16487 = msg("14073", dup303); - -var msg16488 = msg("14074", dup303); - -var msg16489 = msg("14075", dup303); - -var msg16490 = msg("14076", dup303); - -var msg16491 = msg("14077", dup303); - -var msg16492 = msg("14078", dup303); - -var msg16493 = msg("14079", dup303); - -var msg16494 = msg("14080", dup303); - -var msg16495 = msg("14081", dup192); - -var msg16496 = msg("14082", dup192); - -var msg16497 = msg("14083", dup192); - -var msg16498 = msg("14084", dup192); - -var msg16499 = msg("14085", dup192); - -var msg16500 = msg("14086", dup192); - -var msg16501 = msg("14087", dup192); - -var msg16502 = msg("14088", dup265); - -var msg16503 = msg("14089", dup265); - -var msg16504 = msg("14090", dup265); - -var msg16505 = msg("14091", dup265); - -var msg16506 = msg("14092", dup265); - -var msg16507 = msg("14093", dup265); - -var msg16508 = msg("14094", dup265); - -var msg16509 = msg("14095", dup265); - -var msg16510 = msg("14096", dup265); - -var msg16511 = msg("14097", dup265); - -var msg16512 = msg("14098", dup265); - -var msg16513 = msg("14099", dup265); - -var msg16514 = msg("14100", dup265); - -var msg16515 = msg("14101", dup265); - -var msg16516 = msg("14102", dup265); - -var msg16517 = msg("14103", dup265); - -var msg16518 = msg("14104", dup265); - -var msg16519 = msg("14105", dup265); - -var msg16520 = msg("14106", dup265); - -var msg16521 = msg("14107", dup265); - -var msg16522 = msg("14108", dup265); - -var msg16523 = msg("14109", dup265); - -var msg16524 = msg("14110", dup265); - -var msg16525 = msg("14111", dup265); - -var msg16526 = msg("14112", dup265); - -var msg16527 = msg("14113", dup265); - -var msg16528 = msg("14114", dup265); - -var msg16529 = msg("14115", dup265); - -var msg16530 = msg("14116", dup265); - -var msg16531 = msg("14117", dup265); - -var msg16532 = msg("14118", dup265); - -var msg16533 = msg("14119", dup265); - -var msg16534 = msg("14120", dup265); - -var msg16535 = msg("14121", dup265); - -var msg16536 = msg("14122", dup265); - -var msg16537 = msg("14123", dup265); - -var msg16538 = msg("14124", dup265); - -var msg16539 = msg("14125", dup265); - -var msg16540 = msg("14126", dup265); - -var msg16541 = msg("14127", dup265); - -var msg16542 = msg("14128", dup265); - -var msg16543 = msg("14129", dup265); - -var msg16544 = msg("14130", dup265); - -var msg16545 = msg("14131", dup265); - -var msg16546 = msg("14132", dup265); - -var msg16547 = msg("14133", dup265); - -var msg16548 = msg("14134", dup265); - -var msg16549 = msg("14135", dup265); - -var msg16550 = msg("14136", dup265); - -var msg16551 = msg("14137", dup265); - -var msg16552 = msg("14138", dup265); - -var msg16553 = msg("14139", dup265); - -var msg16554 = msg("14140", dup265); - -var msg16555 = msg("14141", dup265); - -var msg16556 = msg("14142", dup265); - -var msg16557 = msg("14143", dup265); - -var msg16558 = msg("14144", dup265); - -var msg16559 = msg("14145", dup265); - -var msg16560 = msg("14146", dup265); - -var msg16561 = msg("14147", dup265); - -var msg16562 = msg("14148", dup265); - -var msg16563 = msg("14149", dup265); - -var msg16564 = msg("14150", dup265); - -var msg16565 = msg("14151", dup265); - -var msg16566 = msg("14152", dup265); - -var msg16567 = msg("14153", dup265); - -var msg16568 = msg("14154", dup265); - -var msg16569 = msg("14155", dup265); - -var msg16570 = msg("14156", dup265); - -var msg16571 = msg("14157", dup265); - -var msg16572 = msg("14158", dup265); - -var msg16573 = msg("14159", dup265); - -var msg16574 = msg("14160", dup265); - -var msg16575 = msg("14161", dup265); - -var msg16576 = msg("14162", dup265); - -var msg16577 = msg("14163", dup265); - -var msg16578 = msg("14164", dup265); - -var msg16579 = msg("14165", dup265); - -var msg16580 = msg("14166", dup265); - -var msg16581 = msg("14167", dup265); - -var msg16582 = msg("14168", dup265); - -var msg16583 = msg("14169", dup265); - -var msg16584 = msg("14170", dup265); - -var msg16585 = msg("14171", dup265); - -var msg16586 = msg("14172", dup265); - -var msg16587 = msg("14173", dup265); - -var msg16588 = msg("14174", dup265); - -var msg16589 = msg("14175", dup265); - -var msg16590 = msg("14176", dup265); - -var msg16591 = msg("14177", dup265); - -var msg16592 = msg("14178", dup265); - -var msg16593 = msg("14179", dup265); - -var msg16594 = msg("14180", dup265); - -var msg16595 = msg("14181", dup265); - -var msg16596 = msg("14182", dup265); - -var msg16597 = msg("14183", dup265); - -var msg16598 = msg("14184", dup265); - -var msg16599 = msg("14185", dup265); - -var msg16600 = msg("14186", dup265); - -var msg16601 = msg("14187", dup265); - -var msg16602 = msg("14188", dup265); - -var msg16603 = msg("14189", dup265); - -var msg16604 = msg("14190", dup265); - -var msg16605 = msg("14191", dup265); - -var msg16606 = msg("14192", dup265); - -var msg16607 = msg("14193", dup265); - -var msg16608 = msg("14194", dup265); - -var msg16609 = msg("14195", dup265); - -var msg16610 = msg("14196", dup265); - -var msg16611 = msg("14197", dup265); - -var msg16612 = msg("14198", dup265); - -var msg16613 = msg("14199", dup265); - -var msg16614 = msg("14200", dup265); - -var msg16615 = msg("14201", dup265); - -var msg16616 = msg("14202", dup265); - -var msg16617 = msg("14203", dup265); - -var msg16618 = msg("14204", dup265); - -var msg16619 = msg("14205", dup265); - -var msg16620 = msg("14206", dup265); - -var msg16621 = msg("14207", dup265); - -var msg16622 = msg("14208", dup265); - -var msg16623 = msg("14209", dup265); - -var msg16624 = msg("14210", dup265); - -var msg16625 = msg("14211", dup265); - -var msg16626 = msg("14212", dup265); - -var msg16627 = msg("14213", dup265); - -var msg16628 = msg("14214", dup265); - -var msg16629 = msg("14215", dup265); - -var msg16630 = msg("14216", dup265); - -var msg16631 = msg("14217", dup265); - -var msg16632 = msg("14218", dup265); - -var msg16633 = msg("14219", dup265); - -var msg16634 = msg("14220", dup265); - -var msg16635 = msg("14221", dup265); - -var msg16636 = msg("14222", dup265); - -var msg16637 = msg("14223", dup265); - -var msg16638 = msg("14224", dup265); - -var msg16639 = msg("14225", dup265); - -var msg16640 = msg("14226", dup265); - -var msg16641 = msg("14227", dup265); - -var msg16642 = msg("14228", dup265); - -var msg16643 = msg("14229", dup265); - -var msg16644 = msg("14230", dup222); - -var msg16645 = msg("14231", dup265); - -var msg16646 = msg("14232", dup265); - -var msg16647 = msg("14233", dup265); - -var msg16648 = msg("14234", dup265); - -var msg16649 = msg("14235", dup265); - -var msg16650 = msg("14236", dup265); - -var msg16651 = msg("14237", dup265); - -var msg16652 = msg("14238", dup265); - -var msg16653 = msg("14239", dup265); - -var msg16654 = msg("14240", dup265); - -var msg16655 = msg("14241", dup265); - -var msg16656 = msg("14242", dup265); - -var msg16657 = msg("14243", dup265); - -var msg16658 = msg("14244", dup265); - -var msg16659 = msg("14245", dup265); - -var msg16660 = msg("14246", dup265); - -var msg16661 = msg("14247", dup265); - -var msg16662 = msg("14248", dup265); - -var msg16663 = msg("14249", dup265); - -var msg16664 = msg("14250", dup265); - -var msg16665 = msg("14251", dup222); - -var msg16666 = msg("14252", dup269); - -var msg16667 = msg("14253", dup269); - -var msg16668 = msg("14254", dup269); - -var msg16669 = msg("14255", dup265); - -var msg16670 = msg("14256", dup265); - -var msg16671 = msg("14257", dup265); - -var msg16672 = msg("14258", dup265); - -var msg16673 = msg("14259", dup267); - -var msg16674 = msg("14260", dup267); - -var msg16675 = msg("14261", dup267); - -var msg16676 = msg("14262", dup267); - -var msg16677 = msg("14263", dup222); - -var msg16678 = msg("14264", dup196); - -var msg16679 = msg("14265", dup305); - -var msg16680 = msg("14266", dup265); - -var msg16681 = msg("14267", dup265); - -var msg16682 = msg("14268", dup265); - -var msg16683 = msg("14269", dup265); - -var msg16684 = msg("14270", dup265); - -var msg16685 = msg("14271", dup265); - -var msg16686 = msg("14272", dup265); - -var msg16687 = msg("14273", dup265); - -var msg16688 = msg("14274", dup265); - -var msg16689 = msg("14275", dup265); - -var msg16690 = msg("14276", dup265); - -var msg16691 = msg("14277", dup265); - -var msg16692 = msg("14278", dup265); - -var msg16693 = msg("14279", dup265); - -var msg16694 = msg("14280", dup265); - -var msg16695 = msg("14281", dup265); - -var msg16696 = msg("14282", dup265); - -var msg16697 = msg("14283", dup265); - -var msg16698 = msg("14284", dup265); - -var msg16699 = msg("14285", dup265); - -var msg16700 = msg("14286", dup265); - -var msg16701 = msg("14287", dup265); - -var msg16702 = msg("14288", dup265); - -var msg16703 = msg("14289", dup265); - -var msg16704 = msg("14290", dup265); - -var msg16705 = msg("14291", dup265); - -var msg16706 = msg("14292", dup265); - -var msg16707 = msg("14293", dup265); - -var msg16708 = msg("14294", dup265); - -var msg16709 = msg("14295", dup265); - -var msg16710 = msg("14296", dup265); - -var msg16711 = msg("14297", dup265); - -var msg16712 = msg("14298", dup265); - -var msg16713 = msg("14299", dup265); - -var msg16714 = msg("14300", dup265); - -var msg16715 = msg("14301", dup265); - -var msg16716 = msg("14302", dup265); - -var msg16717 = msg("14303", dup265); - -var msg16718 = msg("14304", dup265); - -var msg16719 = msg("14305", dup265); - -var msg16720 = msg("14306", dup265); - -var msg16721 = msg("14307", dup265); - -var msg16722 = msg("14308", dup265); - -var msg16723 = msg("14309", dup265); - -var msg16724 = msg("14310", dup265); - -var msg16725 = msg("14311", dup265); - -var msg16726 = msg("14312", dup265); - -var msg16727 = msg("14313", dup265); - -var msg16728 = msg("14314", dup265); - -var msg16729 = msg("14315", dup265); - -var msg16730 = msg("14316", dup267); - -var msg16731 = msg("14317", dup267); - -var msg16732 = msg("14318", dup267); - -var msg16733 = msg("14319", dup267); - -var msg16734 = msg("14320", dup265); - -var msg16735 = msg("14321", dup265); - -var msg16736 = msg("14322", dup265); - -var msg16737 = msg("14323", dup265); - -var msg16738 = msg("14324", dup265); - -var msg16739 = msg("14325", dup265); - -var msg16740 = msg("14326", dup265); - -var msg16741 = msg("14327", dup265); - -var msg16742 = msg("14328", dup265); - -var msg16743 = msg("14329", dup265); - -var msg16744 = msg("14330", dup265); - -var msg16745 = msg("14331", dup265); - -var msg16746 = msg("14332", dup265); - -var msg16747 = msg("14333", dup265); - -var msg16748 = msg("14334", dup265); - -var msg16749 = msg("14335", dup265); - -var msg16750 = msg("14336", dup265); - -var msg16751 = msg("14337", dup265); - -var msg16752 = msg("14338", dup265); - -var msg16753 = msg("14339", dup265); - -var msg16754 = msg("14340", dup265); - -var msg16755 = msg("14341", dup265); - -var msg16756 = msg("14342", dup265); - -var msg16757 = msg("14343", dup265); - -var msg16758 = msg("14344", dup265); - -var msg16759 = msg("14345", dup265); - -var msg16760 = msg("14346", dup265); - -var msg16761 = msg("14347", dup265); - -var msg16762 = msg("14348", dup265); - -var msg16763 = msg("14349", dup265); - -var msg16764 = msg("14350", dup265); - -var msg16765 = msg("14351", dup265); - -var msg16766 = msg("14352", dup265); - -var msg16767 = msg("14353", dup265); - -var msg16768 = msg("14354", dup265); - -var msg16769 = msg("14355", dup265); - -var msg16770 = msg("14356", dup265); - -var msg16771 = msg("14357", dup265); - -var msg16772 = msg("14358", dup265); - -var msg16773 = msg("14359", dup265); - -var msg16774 = msg("14360", dup265); - -var msg16775 = msg("14361", dup265); - -var msg16776 = msg("14362", dup265); - -var msg16777 = msg("14363", dup265); - -var msg16778 = msg("14364", dup265); - -var msg16779 = msg("14365", dup265); - -var msg16780 = msg("14366", dup265); - -var msg16781 = msg("14367", dup265); - -var msg16782 = msg("14368", dup265); - -var msg16783 = msg("14369", dup265); - -var msg16784 = msg("14370", dup265); - -var msg16785 = msg("14371", dup265); - -var msg16786 = msg("14372", dup265); - -var msg16787 = msg("14373", dup265); - -var msg16788 = msg("14374", dup265); - -var msg16789 = msg("14375", dup265); - -var msg16790 = msg("14376", dup265); - -var msg16791 = msg("14377", dup265); - -var msg16792 = msg("14378", dup265); - -var msg16793 = msg("14379", dup265); - -var msg16794 = msg("14380", dup265); - -var msg16795 = msg("14381", dup265); - -var msg16796 = msg("14382", dup265); - -var msg16797 = msg("14383", dup265); - -var msg16798 = msg("14384", dup265); - -var msg16799 = msg("14385", dup265); - -var msg16800 = msg("14386", dup265); - -var msg16801 = msg("14387", dup265); - -var msg16802 = msg("14388", dup265); - -var msg16803 = msg("14389", dup265); - -var msg16804 = msg("14390", dup265); - -var msg16805 = msg("14391", dup265); - -var msg16806 = msg("14392", dup265); - -var msg16807 = msg("14393", dup265); - -var msg16808 = msg("14394", dup265); - -var msg16809 = msg("14395", dup265); - -var msg16810 = msg("14396", dup265); - -var msg16811 = msg("14397", dup265); - -var msg16812 = msg("14398", dup265); - -var msg16813 = msg("14399", dup265); - -var msg16814 = msg("14400", dup265); - -var msg16815 = msg("14401", dup265); - -var msg16816 = msg("14402", dup265); - -var msg16817 = msg("14403", dup265); - -var msg16818 = msg("14404", dup265); - -var msg16819 = msg("14405", dup265); - -var msg16820 = msg("14406", dup265); - -var msg16821 = msg("14407", dup265); - -var msg16822 = msg("14408", dup265); - -var msg16823 = msg("14409", dup265); - -var msg16824 = msg("14410", dup265); - -var msg16825 = msg("14411", dup265); - -var msg16826 = msg("14412", dup265); - -var msg16827 = msg("14413", dup265); - -var msg16828 = msg("14414", dup265); - -var msg16829 = msg("14415", dup265); - -var msg16830 = msg("14416", dup265); - -var msg16831 = msg("14417", dup265); - -var msg16832 = msg("14418", dup265); - -var msg16833 = msg("14419", dup265); - -var msg16834 = msg("14420", dup265); - -var msg16835 = msg("14421", dup265); - -var msg16836 = msg("14422", dup265); - -var msg16837 = msg("14423", dup265); - -var msg16838 = msg("14424", dup265); - -var msg16839 = msg("14425", dup265); - -var msg16840 = msg("14426", dup265); - -var msg16841 = msg("14427", dup265); - -var msg16842 = msg("14428", dup265); - -var msg16843 = msg("14429", dup265); - -var msg16844 = msg("14430", dup265); - -var msg16845 = msg("14431", dup265); - -var msg16846 = msg("14432", dup265); - -var msg16847 = msg("14433", dup265); - -var msg16848 = msg("14434", dup265); - -var msg16849 = msg("14435", dup265); - -var msg16850 = msg("14436", dup265); - -var msg16851 = msg("14437", dup265); - -var msg16852 = msg("14438", dup265); - -var msg16853 = msg("14439", dup265); - -var msg16854 = msg("14440", dup265); - -var msg16855 = msg("14441", dup265); - -var msg16856 = msg("14442", dup265); - -var msg16857 = msg("14443", dup265); - -var msg16858 = msg("14444", dup265); - -var msg16859 = msg("14445", dup265); - -var msg16860 = msg("14446", dup265); - -var msg16861 = msg("14447", dup265); - -var msg16862 = msg("14448", dup265); - -var msg16863 = msg("14449", dup265); - -var msg16864 = msg("14450", dup265); - -var msg16865 = msg("14451", dup265); - -var msg16866 = msg("14452", dup265); - -var msg16867 = msg("14453", dup265); - -var msg16868 = msg("14454", dup265); - -var msg16869 = msg("14455", dup265); - -var msg16870 = msg("14456", dup265); - -var msg16871 = msg("14457", dup265); - -var msg16872 = msg("14458", dup265); - -var msg16873 = msg("14459", dup265); - -var msg16874 = msg("14460", dup265); - -var msg16875 = msg("14461", dup265); - -var msg16876 = msg("14462", dup265); - -var msg16877 = msg("14463", dup265); - -var msg16878 = msg("14464", dup265); - -var msg16879 = msg("14465", dup265); - -var msg16880 = msg("14466", dup265); - -var msg16881 = msg("14467", dup265); - -var msg16882 = msg("14468", dup265); - -var msg16883 = msg("14469", dup265); - -var msg16884 = msg("14470", dup265); - -var msg16885 = msg("14471", dup265); - -var msg16886 = msg("14472", dup265); - -var msg16887 = msg("14473", dup265); - -var msg16888 = msg("14474", dup265); - -var msg16889 = msg("14475", dup265); - -var msg16890 = msg("14476", dup265); - -var msg16891 = msg("14477", dup265); - -var msg16892 = msg("14478", dup265); - -var msg16893 = msg("14479", dup265); - -var msg16894 = msg("14480", dup265); - -var msg16895 = msg("14481", dup265); - -var msg16896 = msg("14482", dup265); - -var msg16897 = msg("14483", dup265); - -var msg16898 = msg("14484", dup265); - -var msg16899 = msg("14485", dup265); - -var msg16900 = msg("14486", dup265); - -var msg16901 = msg("14487", dup265); - -var msg16902 = msg("14488", dup265); - -var msg16903 = msg("14489", dup265); - -var msg16904 = msg("14490", dup265); - -var msg16905 = msg("14491", dup265); - -var msg16906 = msg("14492", dup265); - -var msg16907 = msg("14493", dup265); - -var msg16908 = msg("14494", dup265); - -var msg16909 = msg("14495", dup265); - -var msg16910 = msg("14496", dup265); - -var msg16911 = msg("14497", dup265); - -var msg16912 = msg("14498", dup265); - -var msg16913 = msg("14499", dup265); - -var msg16914 = msg("14500", dup265); - -var msg16915 = msg("14501", dup265); - -var msg16916 = msg("14502", dup265); - -var msg16917 = msg("14503", dup265); - -var msg16918 = msg("14504", dup265); - -var msg16919 = msg("14505", dup265); - -var msg16920 = msg("14506", dup265); - -var msg16921 = msg("14507", dup265); - -var msg16922 = msg("14508", dup265); - -var msg16923 = msg("14509", dup265); - -var msg16924 = msg("14510", dup265); - -var msg16925 = msg("14511", dup265); - -var msg16926 = msg("14512", dup265); - -var msg16927 = msg("14513", dup265); - -var msg16928 = msg("14514", dup265); - -var msg16929 = msg("14515", dup265); - -var msg16930 = msg("14516", dup265); - -var msg16931 = msg("14517", dup265); - -var msg16932 = msg("14518", dup265); - -var msg16933 = msg("14519", dup265); - -var msg16934 = msg("14520", dup265); - -var msg16935 = msg("14521", dup265); - -var msg16936 = msg("14522", dup265); - -var msg16937 = msg("14523", dup265); - -var msg16938 = msg("14524", dup265); - -var msg16939 = msg("14525", dup265); - -var msg16940 = msg("14526", dup265); - -var msg16941 = msg("14527", dup265); - -var msg16942 = msg("14528", dup265); - -var msg16943 = msg("14529", dup265); - -var msg16944 = msg("14530", dup265); - -var msg16945 = msg("14531", dup265); - -var msg16946 = msg("14532", dup265); - -var msg16947 = msg("14533", dup265); - -var msg16948 = msg("14534", dup265); - -var msg16949 = msg("14535", dup265); - -var msg16950 = msg("14536", dup265); - -var msg16951 = msg("14537", dup265); - -var msg16952 = msg("14538", dup265); - -var msg16953 = msg("14539", dup265); - -var msg16954 = msg("14540", dup265); - -var msg16955 = msg("14541", dup265); - -var msg16956 = msg("14542", dup265); - -var msg16957 = msg("14543", dup265); - -var msg16958 = msg("14544", dup265); - -var msg16959 = msg("14545", dup265); - -var msg16960 = msg("14546", dup265); - -var msg16961 = msg("14547", dup265); - -var msg16962 = msg("14548", dup265); - -var msg16963 = msg("14549", dup265); - -var msg16964 = msg("14550", dup265); - -var msg16965 = msg("14551", dup265); - -var msg16966 = msg("14552", dup265); - -var msg16967 = msg("14553", dup265); - -var msg16968 = msg("14554", dup265); - -var msg16969 = msg("14555", dup265); - -var msg16970 = msg("14556", dup265); - -var msg16971 = msg("14557", dup265); - -var msg16972 = msg("14558", dup265); - -var msg16973 = msg("14559", dup265); - -var msg16974 = msg("14560", dup265); - -var msg16975 = msg("14561", dup265); - -var msg16976 = msg("14562", dup265); - -var msg16977 = msg("14563", dup265); - -var msg16978 = msg("14564", dup265); - -var msg16979 = msg("14565", dup265); - -var msg16980 = msg("14566", dup265); - -var msg16981 = msg("14567", dup265); - -var msg16982 = msg("14568", dup265); - -var msg16983 = msg("14569", dup265); - -var msg16984 = msg("14570", dup265); - -var msg16985 = msg("14571", dup265); - -var msg16986 = msg("14572", dup265); - -var msg16987 = msg("14573", dup265); - -var msg16988 = msg("14574", dup265); - -var msg16989 = msg("14575", dup265); - -var msg16990 = msg("14576", dup265); - -var msg16991 = msg("14577", dup265); - -var msg16992 = msg("14578", dup265); - -var msg16993 = msg("14579", dup265); - -var msg16994 = msg("14580", dup265); - -var msg16995 = msg("14581", dup265); - -var msg16996 = msg("14582", dup265); - -var msg16997 = msg("14583", dup265); - -var msg16998 = msg("14584", dup265); - -var msg16999 = msg("14585", dup265); - -var msg17000 = msg("14586", dup265); - -var msg17001 = msg("14587", dup265); - -var msg17002 = msg("14588", dup265); - -var msg17003 = msg("14589", dup265); - -var msg17004 = msg("14590", dup265); - -var msg17005 = msg("14591", dup265); - -var msg17006 = msg("14592", dup265); - -var msg17007 = msg("14593", dup265); - -var msg17008 = msg("14594", dup265); - -var msg17009 = msg("14595", dup265); - -var msg17010 = msg("14596", dup265); - -var msg17011 = msg("14597", dup265); - -var msg17012 = msg("14598", dup265); - -var msg17013 = msg("14599", dup265); - -var msg17014 = msg("14600", dup222); - -var msg17015 = msg("14601", dup222); - -var msg17016 = msg("14602", dup222); - -var msg17017 = msg("14603", dup265); - -var msg17018 = msg("14604", dup265); - -var msg17019 = msg("14605", dup265); - -var msg17020 = msg("14606", dup265); - -var msg17021 = msg("14607", dup222); - -var msg17022 = msg("14608", dup197); - -var msg17023 = msg("14609", dup197); - -var msg17024 = msg("14610", dup265); - -var msg17025 = msg("14611", dup265); - -var msg17026 = msg("14612", dup265); - -var msg17027 = msg("14613", dup265); - -var msg17028 = msg("14614", dup265); - -var msg17029 = msg("14615", dup196); - -var msg17030 = msg("14616", dup201); - -var msg17031 = msg("14617", dup201); - -var msg17032 = msg("14618", dup201); - -var msg17033 = msg("14619", dup201); - -var msg17034 = msg("14620", dup201); - -var msg17035 = msg("14621", dup201); - -var msg17036 = msg("14622", dup201); - -var msg17037 = msg("14623", dup201); - -var msg17038 = msg("14624", dup201); - -var msg17039 = msg("14625", dup201); - -var msg17040 = msg("14626", dup201); - -var msg17041 = msg("14627", dup201); - -var msg17042 = msg("14628", dup265); - -var msg17043 = msg("14629", dup265); - -var msg17044 = msg("14630", dup265); - -var msg17045 = msg("14631", dup265); - -var msg17046 = msg("14632", dup265); - -var msg17047 = msg("14633", dup265); - -var msg17048 = msg("14634", dup265); - -var msg17049 = msg("14635", dup265); - -var msg17050 = msg("14636", dup265); - -var msg17051 = msg("14637", dup265); - -var msg17052 = msg("14638", dup265); - -var msg17053 = msg("14639", dup265); - -var msg17054 = msg("14640", dup265); - -var msg17055 = msg("14641", dup267); - -var msg17056 = msg("14642", dup196); - -var msg17057 = msg("14643", dup267); - -var msg17058 = msg("14644", dup196); - -var msg17059 = msg("14645", dup267); - -var msg17060 = msg("14646", dup198); - -var msg17061 = msg("14647", dup276); - -var msg17062 = msg("14648", dup276); - -var msg17063 = msg("14649", dup276); - -var msg17064 = msg("14650", dup276); - -var msg17065 = msg("14651", dup276); - -var msg17066 = msg("14652", dup276); - -var msg17067 = msg("14653", dup276); - -var msg17068 = msg("14654", dup276); - -var msg17069 = msg("14655", dup265); - -var msg17070 = msg("14656", dup265); - -var msg17071 = msg("14657", dup265); - -var msg17072 = msg("14661", dup276); - -var msg17073 = msg("14662", dup306); - -var msg17074 = msg("14663", dup306); - -var msg17075 = msg("14664", dup306); - -var msg17076 = msg("14665", dup306); - -var msg17077 = msg("14666", dup306); - -var msg17078 = msg("14667", dup306); - -var msg17079 = msg("14668", dup306); - -var msg17080 = msg("14669", dup306); - -var msg17081 = msg("14670", dup306); - -var msg17082 = msg("14671", dup306); - -var msg17083 = msg("14672", dup306); - -var msg17084 = msg("14673", dup306); - -var msg17085 = msg("14674", dup306); - -var msg17086 = msg("14675", dup306); - -var msg17087 = msg("14676", dup306); - -var msg17088 = msg("14677", dup306); - -var msg17089 = msg("14678", dup306); - -var msg17090 = msg("14679", dup306); - -var msg17091 = msg("14680", dup306); - -var msg17092 = msg("14681", dup306); - -var msg17093 = msg("14682", dup306); - -var msg17094 = msg("14683", dup306); - -var msg17095 = msg("14684", dup306); - -var msg17096 = msg("14685", dup306); - -var msg17097 = msg("14686", dup306); - -var msg17098 = msg("14687", dup306); - -var msg17099 = msg("14688", dup306); - -var msg17100 = msg("14689", dup306); - -var msg17101 = msg("14690", dup306); - -var msg17102 = msg("14691", dup306); - -var msg17103 = msg("14692", dup306); - -var msg17104 = msg("14693", dup306); - -var msg17105 = msg("14694", dup306); - -var msg17106 = msg("14695", dup306); - -var msg17107 = msg("14696", dup306); - -var msg17108 = msg("14697", dup306); - -var msg17109 = msg("14698", dup306); - -var msg17110 = msg("14699", dup306); - -var msg17111 = msg("14700", dup306); - -var msg17112 = msg("14701", dup306); - -var msg17113 = msg("14702", dup306); - -var msg17114 = msg("14703", dup306); - -var msg17115 = msg("14704", dup306); - -var msg17116 = msg("14705", dup306); - -var msg17117 = msg("14706", dup306); - -var msg17118 = msg("14707", dup306); - -var msg17119 = msg("14708", dup306); - -var msg17120 = msg("14709", dup276); - -var msg17121 = msg("14710", dup276); - -var msg17122 = msg("14711", dup276); - -var msg17123 = msg("14712", dup276); - -var msg17124 = msg("14713", dup276); - -var msg17125 = msg("14714", dup276); - -var msg17126 = msg("14715", dup276); - -var msg17127 = msg("14716", dup276); - -var msg17128 = msg("14717", dup276); - -var msg17129 = msg("14718", dup276); - -var msg17130 = msg("14719", dup276); - -var msg17131 = msg("14720", dup276); - -var msg17132 = msg("14721", dup276); - -var msg17133 = msg("14722", dup276); - -var msg17134 = msg("14723", dup276); - -var msg17135 = msg("14724", dup276); - -var msg17136 = msg("14725", dup201); - -var msg17137 = msg("14726", dup201); - -var msg17138 = msg("14727", dup307); - -var msg17139 = msg("14728", dup307); - -var msg17140 = msg("14729", dup307); - -var msg17141 = msg("14730", dup307); - -var msg17142 = msg("14731", dup307); - -var msg17143 = msg("14732", dup307); - -var msg17144 = msg("14733", dup307); - -var msg17145 = msg("14734", dup307); - -var msg17146 = msg("14735", dup307); - -var msg17147 = msg("14736", dup307); - -var msg17148 = msg("14737", dup276); - -var msg17149 = msg("14738", dup308); - -var msg17150 = msg("14739", dup308); - -var msg17151 = msg("14740", dup308); - -var msg17152 = msg("14741", dup273); - -var msg17153 = msg("14742", dup198); - -var msg17154 = msg("14743", dup227); - -var msg17155 = msg("14744", dup265); - -var msg17156 = msg("14745", dup265); - -var msg17157 = msg("14746", dup265); - -var msg17158 = msg("14747", dup265); - -var msg17159 = msg("14748", dup265); - -var msg17160 = msg("14749", dup265); - -var msg17161 = msg("14750", dup265); - -var msg17162 = msg("14751", dup265); - -var msg17163 = msg("14752", dup265); - -var msg17164 = msg("14753", dup265); - -var msg17165 = msg("14754", dup265); - -var msg17166 = msg("14755", dup265); - -var msg17167 = msg("14756", dup240); - -var msg17168 = msg("14757", dup240); - -var msg17169 = msg("14758", dup240); - -var msg17170 = msg("14759", dup240); - -var msg17171 = msg("14760", dup265); - -var msg17172 = msg("14761", dup265); - -var msg17173 = msg("14762", dup265); - -var msg17174 = msg("14763", dup265); - -var msg17175 = msg("14764", dup265); - -var msg17176 = msg("14765", dup265); - -var msg17177 = msg("14766", dup265); - -var msg17178 = msg("14767", dup265); - -var msg17179 = msg("14768", dup285); - -var msg17180 = msg("14769", dup222); - -var msg17181 = msg("14770", dup287); - -var msg17182 = msg("14771", dup197); - -var msg17183 = msg("14772", dup198); - -var msg17184 = msg("14773", dup222); - -var msg17185 = msg("14774", dup196); - -var msg17186 = msg("14775", dup196); - -var msg17187 = msg("14776", dup201); - -var msg17188 = msg("14777", dup196); - -var msg17189 = msg("14778", dup265); - -var msg17190 = msg("14779", dup265); - -var msg17191 = msg("14780", dup265); - -var msg17192 = msg("14781", dup265); - -var msg17193 = msg("14782", dup201); - -var msg17194 = msg("14783", dup201); - -var msg17195 = msg("14784", dup309); - -var msg17196 = msg("14785", dup309); - -var msg17197 = msg("14786", dup309); - -var msg17198 = msg("14787", dup309); - -var msg17199 = msg("14788", dup309); - -var msg17200 = msg("14789", dup309); - -var msg17201 = msg("14790", dup309); - -var msg17202 = msg("14791", dup309); - -var msg17203 = msg("14792", dup309); - -var msg17204 = msg("14793", dup309); - -var msg17205 = msg("14794", dup309); - -var msg17206 = msg("14795", dup309); - -var msg17207 = msg("14796", dup309); - -var msg17208 = msg("14797", dup309); - -var msg17209 = msg("14798", dup309); - -var msg17210 = msg("14799", dup309); - -var msg17211 = msg("14800", dup309); - -var msg17212 = msg("14801", dup309); - -var msg17213 = msg("14802", dup309); - -var msg17214 = msg("14803", dup309); - -var msg17215 = msg("14804", dup309); - -var msg17216 = msg("14805", dup309); - -var msg17217 = msg("14806", dup309); - -var msg17218 = msg("14807", dup309); - -var msg17219 = msg("14808", dup309); - -var msg17220 = msg("14809", dup309); - -var msg17221 = msg("14810", dup309); - -var msg17222 = msg("14811", dup309); - -var msg17223 = msg("14812", dup309); - -var msg17224 = msg("14813", dup309); - -var msg17225 = msg("14814", dup309); - -var msg17226 = msg("14815", dup309); - -var msg17227 = msg("14816", dup309); - -var msg17228 = msg("14817", dup197); - -var msg17229 = msg("14818", dup309); - -var msg17230 = msg("14819", dup309); - -var msg17231 = msg("14820", dup309); - -var msg17232 = msg("14821", dup309); - -var msg17233 = msg("14822", dup309); - -var msg17234 = msg("14823", dup309); - -var msg17235 = msg("14824", dup309); - -var msg17236 = msg("14825", dup309); - -var msg17237 = msg("14826", dup309); - -var msg17238 = msg("14827", dup309); - -var msg17239 = msg("14828", dup309); - -var msg17240 = msg("14829", dup309); - -var msg17241 = msg("14830", dup309); - -var msg17242 = msg("14831", dup309); - -var msg17243 = msg("14832", dup309); - -var msg17244 = msg("14833", dup309); - -var msg17245 = msg("14834", dup309); - -var msg17246 = msg("14835", dup309); - -var msg17247 = msg("14836", dup309); - -var msg17248 = msg("14837", dup309); - -var msg17249 = msg("14838", dup309); - -var msg17250 = msg("14839", dup309); - -var msg17251 = msg("14840", dup309); - -var msg17252 = msg("14841", dup309); - -var msg17253 = msg("14842", dup309); - -var msg17254 = msg("14843", dup309); - -var msg17255 = msg("14844", dup309); - -var msg17256 = msg("14845", dup309); - -var msg17257 = msg("14846", dup309); - -var msg17258 = msg("14847", dup309); - -var msg17259 = msg("14848", dup309); - -var msg17260 = msg("14849", dup309); - -var msg17261 = msg("14850", dup309); - -var msg17262 = msg("14851", dup309); - -var msg17263 = msg("14852", dup309); - -var msg17264 = msg("14853", dup309); - -var msg17265 = msg("14854", dup309); - -var msg17266 = msg("14855", dup309); - -var msg17267 = msg("14856", dup309); - -var msg17268 = msg("14857", dup309); - -var msg17269 = msg("14858", dup309); - -var msg17270 = msg("14859", dup309); - -var msg17271 = msg("14860", dup309); - -var msg17272 = msg("14861", dup309); - -var msg17273 = msg("14862", dup309); - -var msg17274 = msg("14863", dup309); - -var msg17275 = msg("14864", dup309); - -var msg17276 = msg("14865", dup309); - -var msg17277 = msg("14866", dup309); - -var msg17278 = msg("14867", dup309); - -var msg17279 = msg("14868", dup309); - -var msg17280 = msg("14869", dup309); - -var msg17281 = msg("14870", dup309); - -var msg17282 = msg("14871", dup309); - -var msg17283 = msg("14896", dup276); - -var msg17284 = msg("14897", dup265); - -var msg17285 = msg("14898", dup265); - -var msg17286 = msg("14899", dup276); - -var msg17287 = msg("14900", dup276); - -var msg17288 = msg("14986", dup196); - -var msg17289 = msg("14987", dup276); - -var msg17290 = msg("14988", dup276); - -var msg17291 = msg("14989", dup267); - -var msg17292 = msg("14990", dup267); - -var msg17293 = msg("14991", dup260); - -var msg17294 = msg("14992", dup267); - -var msg17295 = msg("14993", dup265); - -var msg17296 = msg("14994", dup265); - -var msg17297 = msg("14995", dup265); - -var msg17298 = msg("14996", dup265); - -var msg17299 = msg("14997", dup265); - -var msg17300 = msg("14998", dup265); - -var msg17301 = msg("14999", dup265); - -var msg17302 = msg("15000", dup265); - -var msg17303 = msg("15001", dup265); - -var msg17304 = msg("15002", dup265); - -var msg17305 = msg("15003", dup265); - -var msg17306 = msg("15004", dup265); - -var msg17307 = msg("15005", dup265); - -var msg17308 = msg("15006", dup265); - -var msg17309 = msg("15007", dup265); - -var msg17310 = msg("15008", dup265); - -var msg17311 = msg("15009", dup276); - -var msg17312 = msg("15010", dup222); - -var msg17313 = msg("15011", dup265); - -var msg17314 = msg("15012", dup265); - -var msg17315 = msg("15013", dup265); - -var msg17316 = msg("15014", dup267); - -var msg17317 = msg("15015", dup201); - -var msg17318 = msg("15016", dup307); - -var msg17319 = msg("15017", dup307); - -var msg17320 = msg("15018", dup307); - -var msg17321 = msg("15019", dup307); - -var msg17322 = msg("15020", dup307); - -var msg17323 = msg("15021", dup309); - -var msg17324 = msg("15022", dup309); - -var msg17325 = msg("15023", dup309); - -var msg17326 = msg("15024", dup309); - -var msg17327 = msg("15025", dup309); - -var msg17328 = msg("15026", dup309); - -var msg17329 = msg("15027", dup309); - -var msg17330 = msg("15028", dup309); - -var msg17331 = msg("15029", dup309); - -var msg17332 = msg("15030", dup309); - -var msg17333 = msg("15031", dup309); - -var msg17334 = msg("15032", dup309); - -var msg17335 = msg("15033", dup309); - -var msg17336 = msg("15034", dup309); - -var msg17337 = msg("15035", dup309); - -var msg17338 = msg("15036", dup309); - -var msg17339 = msg("15037", dup309); - -var msg17340 = msg("15038", dup309); - -var msg17341 = msg("15039", dup309); - -var msg17342 = msg("15040", dup309); - -var msg17343 = msg("15041", dup309); - -var msg17344 = msg("15042", dup309); - -var msg17345 = msg("15043", dup309); - -var msg17346 = msg("15044", dup309); - -var msg17347 = msg("15045", dup309); - -var msg17348 = msg("15046", dup309); - -var msg17349 = msg("15047", dup309); - -var msg17350 = msg("15048", dup309); - -var msg17351 = msg("15049", dup309); - -var msg17352 = msg("15050", dup309); - -var msg17353 = msg("15051", dup309); - -var msg17354 = msg("15052", dup309); - -var msg17355 = msg("15053", dup309); - -var msg17356 = msg("15054", dup309); - -var msg17357 = msg("15055", dup309); - -var msg17358 = msg("15056", dup309); - -var msg17359 = msg("15057", dup309); - -var msg17360 = msg("15058", dup309); - -var msg17361 = msg("15059", dup309); - -var msg17362 = msg("15060", dup309); - -var msg17363 = msg("15061", dup309); - -var msg17364 = msg("15062", dup309); - -var msg17365 = msg("15063", dup309); - -var msg17366 = msg("15064", dup309); - -var msg17367 = msg("15065", dup309); - -var msg17368 = msg("15066", dup309); - -var msg17369 = msg("15067", dup309); - -var msg17370 = msg("15068", dup309); - -var msg17371 = msg("15069", dup265); - -var msg17372 = msg("15070", dup265); - -var msg17373 = msg("15071", dup196); - -var msg17374 = msg("15072", dup196); - -var msg17375 = msg("15073", dup196); - -var msg17376 = msg("15074", dup196); - -var msg17377 = msg("15075", dup196); - -var msg17378 = msg("15076", dup197); - -var msg17379 = msg("15077", dup197); - -var msg17380 = msg("15078", dup222); - -var msg17381 = msg("15079", dup265); - -var msg17382 = msg("15080", dup222); - -var msg17383 = msg("15081", dup267); - -var msg17384 = msg("15082", dup222); - -var msg17385 = msg("15083", dup196); - -var msg17386 = msg("15084", dup265); - -var msg17387 = msg("15085", dup265); - -var msg17388 = msg("15086", dup265); - -var msg17389 = msg("15087", dup265); - -var msg17390 = msg("15088", dup265); - -var msg17391 = msg("15089", dup265); - -var msg17392 = msg("15090", dup265); - -var msg17393 = msg("15091", dup265); - -var msg17394 = msg("15092", dup265); - -var msg17395 = msg("15093", dup265); - -var msg17396 = msg("15094", dup265); - -var msg17397 = msg("15095", dup265); - -var msg17398 = msg("15096", dup265); - -var msg17399 = msg("15097", dup265); - -var msg17400 = msg("15098", dup265); - -var msg17401 = msg("15099", dup265); - -var msg17402 = msg("15100", dup265); - -var msg17403 = msg("15101", dup265); - -var msg17404 = msg("15102", dup265); - -var msg17405 = msg("15103", dup265); - -var msg17406 = msg("15104", dup267); - -var msg17407 = msg("15105", dup267); - -var msg17408 = msg("15106", dup267); - -var msg17409 = msg("15107", dup267); - -var msg17410 = msg("15108", dup267); - -var msg17411 = msg("15109", dup265); - -var msg17412 = msg("15110", dup265); - -var msg17413 = msg("15111", dup265); - -var msg17414 = msg("15112", dup265); - -var msg17415 = msg("15113", dup265); - -var msg17416 = msg("15114", dup267); - -var msg17417 = msg("15115", dup267); - -var msg17418 = msg("15116", dup265); - -var msg17419 = msg("15117", dup269); - -var msg17420 = msg("15118", dup265); - -var msg17421 = msg("15119", dup265); - -var msg17422 = msg("15120", dup265); - -var msg17423 = msg("15121", dup265); - -var msg17424 = msg("15122", dup265); - -var msg17425 = msg("15123", dup265); - -var msg17426 = msg("15124", dup276); - -var msg17427 = msg("15125", dup267); - -var msg17428 = msg("15126", dup265); - -var msg17429 = msg("15127", dup276); - -var msg17430 = msg("15128", dup276); - -var msg17431 = msg("15129", dup276); - -var msg17432 = msg("15130", dup276); - -var msg17433 = msg("15131", dup276); - -var msg17434 = msg("15132", dup276); - -var msg17435 = msg("15133", dup276); - -var msg17436 = msg("15134", dup276); - -var msg17437 = msg("15135", dup276); - -var msg17438 = msg("15136", dup276); - -var msg17439 = msg("15137", dup276); - -var msg17440 = msg("15138", dup276); - -var msg17441 = msg("15139", dup276); - -var msg17442 = msg("15140", dup276); - -var msg17443 = msg("15141", dup276); - -var msg17444 = msg("15142", dup276); - -var msg17445 = msg("15143", dup240); - -var msg17446 = msg("15144", dup240); - -var msg17447 = msg("15145", dup222); - -var msg17448 = msg("15146", dup222); - -var msg17449 = msg("15147", dup222); - -var msg17450 = msg("15148", dup198); - -var msg17451 = msg("15149", dup198); - -var msg17452 = msg("15150", dup285); - -var msg17453 = msg("15151", dup285); - -var msg17454 = msg("15152", dup285); - -var msg17455 = msg("15153", dup285); - -var msg17456 = msg("15154", dup285); - -var msg17457 = msg("15155", dup285); - -var msg17458 = msg("15156", dup285); - -var msg17459 = msg("15157", dup265); - -var msg17460 = msg("15158", dup265); - -var msg17461 = msg("15159", dup265); - -var msg17462 = msg("15160", dup265); - -var msg17463 = msg("15161", dup265); - -var msg17464 = msg("15162", dup265); - -var msg17465 = msg("15163", dup222); - -var msg17466 = msg("15164", dup196); - -var msg17467 = msg("15165", dup192); - -var msg17468 = msg("15166", dup267); - -var msg17469 = msg("15167", dup196); - -var msg17470 = msg("15168", dup196); - -var msg17471 = msg("15169", dup196); - -var msg17472 = msg("15170", dup196); - -var msg17473 = msg("15171", dup265); - -var msg17474 = msg("15172", dup196); - -var msg17475 = msg("15173", dup265); - -var msg17476 = msg("15174", dup265); - -var msg17477 = msg("15175", dup265); - -var msg17478 = msg("15176", dup265); - -var msg17479 = msg("15177", dup265); - -var msg17480 = msg("15178", dup265); - -var msg17481 = msg("15179", dup265); - -var msg17482 = msg("15180", dup265); - -var msg17483 = msg("15181", dup265); - -var msg17484 = msg("15182", dup265); - -var msg17485 = msg("15183", dup265); - -var msg17486 = msg("15184", dup265); - -var msg17487 = msg("15185", dup196); - -var msg17488 = msg("15186", dup201); - -var msg17489 = msg("15187", dup201); - -var msg17490 = msg("15188", dup201); - -var msg17491 = msg("15189", dup201); - -var msg17492 = msg("15190", dup267); - -var msg17493 = msg("15191", dup197); - -var msg17494 = msg("15192", dup265); - -var msg17495 = msg("15193", dup265); - -var msg17496 = msg("15194", dup265); - -var msg17497 = msg("15195", dup265); - -var msg17498 = msg("15196", dup276); - -var msg17499 = msg("15197", dup276); - -var msg17500 = msg("15198", dup276); - -var msg17501 = msg("15199", dup276); - -var msg17502 = msg("15200", dup276); - -var msg17503 = msg("15201", dup276); - -var msg17504 = msg("15202", dup276); - -var msg17505 = msg("15203", dup276); - -var msg17506 = msg("15204", dup276); - -var msg17507 = msg("15205", dup276); - -var msg17508 = msg("15206", dup276); - -var msg17509 = msg("15207", dup276); - -var msg17510 = msg("15208", dup276); - -var msg17511 = msg("15209", dup276); - -var msg17512 = msg("15210", dup276); - -var msg17513 = msg("15211", dup276); - -var msg17514 = msg("15212", dup276); - -var msg17515 = msg("15213", dup276); - -var msg17516 = msg("15214", dup276); - -var msg17517 = msg("15215", dup276); - -var msg17518 = msg("15216", dup276); - -var msg17519 = msg("15217", dup276); - -var msg17520 = msg("15218", dup276); - -var msg17521 = msg("15219", dup276); - -var msg17522 = msg("15220", dup276); - -var msg17523 = msg("15221", dup276); - -var msg17524 = msg("15222", dup276); - -var msg17525 = msg("15223", dup276); - -var msg17526 = msg("15224", dup276); - -var msg17527 = msg("15225", dup276); - -var msg17528 = msg("15226", dup276); - -var msg17529 = msg("15227", dup276); - -var msg17530 = msg("15228", dup265); - -var msg17531 = msg("15229", dup265); - -var msg17532 = msg("15230", dup265); - -var msg17533 = msg("15231", dup265); - -var msg17534 = msg("15232", dup265); - -var msg17535 = msg("15233", dup265); - -var msg17536 = msg("15234", dup265); - -var msg17537 = msg("15235", dup265); - -var msg17538 = msg("15236", dup267); - -var msg17539 = msg("15237", dup265); - -var msg17540 = msg("15238", dup196); - -var msg17541 = msg("15239", dup265); - -var msg17542 = msg("15240", dup265); - -var msg17543 = msg("15241", dup222); - -var msg17544 = msg("15242", dup267); - -var msg17545 = msg("15243", dup265); - -var msg17546 = msg("15244", dup265); - -var msg17547 = msg("15245", dup265); - -var msg17548 = msg("15246", dup265); - -var msg17549 = msg("15247", dup265); - -var msg17550 = msg("15248", dup265); - -var msg17551 = msg("15249", dup265); - -var msg17552 = msg("15250", dup265); - -var msg17553 = msg("15251", dup265); - -var msg17554 = msg("15252", dup265); - -var msg17555 = msg("15253", dup265); - -var msg17556 = msg("15254", dup265); - -var msg17557 = msg("15255", dup222); - -var msg17558 = msg("15256", dup196); - -var msg17559 = msg("15257", dup196); - -var msg17560 = msg("15258", dup196); - -var msg17561 = msg("15259", dup198); - -var msg17562 = msg("15260", dup198); - -var msg17563 = msg("15261", dup196); - -var msg17564 = msg("15262", dup196); - -var msg17565 = msg("15263", dup198); - -var msg17566 = msg("15264", dup267); - -var msg17567 = msg("15265", dup265); - -var msg17568 = msg("15266", dup265); - -var msg17569 = msg("15267", dup265); - -var msg17570 = msg("15268", dup265); - -var msg17571 = msg("15269", dup265); - -var msg17572 = msg("15270", dup265); - -var msg17573 = msg("15271", dup265); - -var msg17574 = msg("15272", dup265); - -var msg17575 = msg("15273", dup265); - -var msg17576 = msg("15274", dup265); - -var msg17577 = msg("15275", dup265); - -var msg17578 = msg("15276", dup265); - -var msg17579 = msg("15277", dup265); - -var msg17580 = msg("15278", dup265); - -var msg17581 = msg("15279", dup265); - -var msg17582 = msg("15280", dup265); - -var msg17583 = msg("15281", dup265); - -var msg17584 = msg("15282", dup265); - -var msg17585 = msg("15283", dup265); - -var msg17586 = msg("15284", dup265); - -var msg17587 = msg("15285", dup265); - -var msg17588 = msg("15286", dup265); - -var msg17589 = msg("15287", dup265); - -var msg17590 = msg("15288", dup265); - -var msg17591 = msg("15289", dup265); - -var msg17592 = msg("15290", dup265); - -var msg17593 = msg("15291", dup265); - -var msg17594 = msg("15292", dup196); - -var msg17595 = msg("15293", dup196); - -var msg17596 = msg("15294", dup265); - -var msg17597 = msg("15295", dup192); - -var msg17598 = msg("15296", dup192); - -var msg17599 = msg("15297", dup192); - -var msg17600 = msg("15298", dup267); - -var msg17601 = msg("15299", dup265); - -var msg17602 = msg("15300", dup267); - -var msg17603 = msg("15301", dup250); - -var msg17604 = msg("15302", dup198); - -var msg17605 = msg("15303", dup269); - -var msg17606 = msg("15304", dup265); - -var msg17607 = msg("15305", dup265); - -var msg17608 = msg("15306", dup267); - -var msg17609 = msg("15307", dup265); - -var msg17610 = msg("15308", dup265); - -var msg17611 = msg("15309", dup265); - -var msg17612 = msg("15310", dup265); - -var msg17613 = msg("15311", dup265); - -var msg17614 = msg("15312", dup265); - -var msg17615 = msg("15313", dup265); - -var msg17616 = msg("15314", dup265); - -var msg17617 = msg("15315", dup265); - -var msg17618 = msg("15316", dup265); - -var msg17619 = msg("15317", dup265); - -var msg17620 = msg("15318", dup265); - -var msg17621 = msg("15319", dup276); - -var msg17622 = msg("15320", dup276); - -var msg17623 = msg("15321", dup276); - -var msg17624 = msg("15322", dup276); - -var msg17625 = msg("15323", dup276); - -var msg17626 = msg("15324", dup276); - -var msg17627 = msg("15325", dup276); - -var msg17628 = msg("15326", dup276); - -var msg17629 = msg("15327", dup218); - -var msg17630 = msg("15328", dup267); - -var msg17631 = msg("15329", dup250); - -var msg17632 = msg("15330", dup265); - -var msg17633 = msg("15331", dup265); - -var msg17634 = msg("15332", dup265); - -var msg17635 = msg("15333", dup265); - -var msg17636 = msg("15334", dup265); - -var msg17637 = msg("15335", dup265); - -var msg17638 = msg("15336", dup265); - -var msg17639 = msg("15337", dup265); - -var msg17640 = msg("15338", dup265); - -var msg17641 = msg("15339", dup265); - -var msg17642 = msg("15340", dup265); - -var msg17643 = msg("15341", dup265); - -var msg17644 = msg("15342", dup265); - -var msg17645 = msg("15343", dup265); - -var msg17646 = msg("15344", dup265); - -var msg17647 = msg("15345", dup265); - -var msg17648 = msg("15346", dup197); - -var msg17649 = msg("15347", dup197); - -var msg17650 = msg("15348", dup197); - -var msg17651 = msg("15349", dup197); - -var msg17652 = msg("15350", dup265); - -var msg17653 = msg("15351", dup265); - -var msg17654 = msg("15352", dup265); - -var msg17655 = msg("15353", dup265); - -var msg17656 = msg("15354", dup250); - -var msg17657 = msg("15355", dup267); - -var msg17658 = msg("15356", dup250); - -var msg17659 = msg("15357", dup267); - -var msg17660 = msg("15358", dup250); - -var msg17661 = msg("15359", dup250); - -var msg17662 = msg("15360", dup250); - -var msg17663 = msg("15361", dup196); - -var msg17664 = msg("15362", dup196); - -var msg17665 = msg("15363", dup265); - -var msg17666 = msg("15364", dup222); - -var msg17667 = msg("15365", dup265); - -var all48 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - setc("eventcategory","1001030300"), - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg17668 = msg("15366", all48); - -var msg17669 = msg("15367", dup201); - -var msg17670 = msg("15368", dup265); - -var msg17671 = msg("15369", dup265); - -var msg17672 = msg("15370", dup265); - -var msg17673 = msg("15371", dup265); - -var msg17674 = msg("15372", dup265); - -var msg17675 = msg("15373", dup265); - -var msg17676 = msg("15374", dup265); - -var msg17677 = msg("15375", dup265); - -var msg17678 = msg("15376", dup265); - -var msg17679 = msg("15377", dup265); - -var msg17680 = msg("15378", dup265); - -var msg17681 = msg("15379", dup265); - -var msg17682 = msg("15380", dup265); - -var msg17683 = msg("15381", dup265); - -var msg17684 = msg("15382", dup222); - -var msg17685 = msg("15383", dup196); - -var msg17686 = msg("15384", dup265); - -var msg17687 = msg("15385", dup265); - -var msg17688 = msg("15386", dup196); - -var msg17689 = msg("15387", dup276); - -var msg17690 = msg("15388", dup222); - -var msg17691 = msg("15389", dup196); - -var msg17692 = msg("15390", dup196); - -var msg17693 = msg("15391", dup196); - -var msg17694 = msg("15392", dup196); - -var msg17695 = msg("15393", dup196); - -var msg17696 = msg("15394", dup196); - -var msg17697 = msg("15395", dup196); - -var msg17698 = msg("15396", dup196); - -var msg17699 = msg("15397", dup196); - -var msg17700 = msg("15398", dup196); - -var msg17701 = msg("15399", dup196); - -var msg17702 = msg("15400", dup196); - -var msg17703 = msg("15401", dup196); - -var msg17704 = msg("15402", dup196); - -var msg17705 = msg("15403", dup196); - -var msg17706 = msg("15404", dup196); - -var msg17707 = msg("15405", dup196); - -var msg17708 = msg("15406", dup196); - -var msg17709 = msg("15407", dup196); - -var msg17710 = msg("15408", dup196); - -var msg17711 = msg("15409", dup196); - -var msg17712 = msg("15410", dup196); - -var msg17713 = msg("15411", dup196); - -var msg17714 = msg("15412", dup222); - -var msg17715 = msg("15413", dup222); - -var msg17716 = msg("15414", dup196); - -var msg17717 = msg("15415", dup196); - -var msg17718 = msg("15416", dup196); - -var msg17719 = msg("15417", dup196); - -var msg17720 = msg("15418", dup196); - -var msg17721 = msg("15420", dup196); - -var msg17722 = msg("15421", dup196); - -var msg17723 = msg("15422", dup222); - -var msg17724 = msg("15423", dup263); - -var msg17725 = msg("15424", dup260); - -var msg17726 = msg("15425", dup260); - -var msg17727 = msg("15426", dup265); - -var msg17728 = msg("15427", dup265); - -var msg17729 = msg("15428", dup265); - -var msg17730 = msg("15429", dup196); - -var msg17731 = msg("15430", dup267); - -var msg17732 = msg("15431", dup222); - -var msg17733 = msg("15432", dup269); - -var msg17734 = msg("15433", dup267); - -var msg17735 = msg("15434", dup267); - -var msg17736 = msg("15435", dup198); - -var msg17737 = msg("15436", dup196); - -var msg17738 = msg("15437", dup196); - -var msg17739 = msg("15438", dup196); - -var msg17740 = msg("15439", dup196); - -var msg17741 = msg("15440", dup196); - -var msg17742 = msg("15441", dup196); - -var msg17743 = msg("15442", dup198); - -var msg17744 = msg("15443", dup198); - -var msg17745 = msg("15444", dup265); - -var msg17746 = msg("15445", dup287); - -var msg17747 = msg("15446", dup267); - -var msg17748 = msg("15447", dup265); - -var msg17749 = msg("15448", dup276); - -var msg17750 = msg("15449", dup196); - -var msg17751 = msg("15450", dup196); - -var msg17752 = msg("15451", dup196); - -var msg17753 = msg("15452", dup196); - -var msg17754 = msg("15453", dup276); - -var msg17755 = msg("15454", dup267); - -var msg17756 = msg("15455", dup222); - -var msg17757 = msg("15456", dup265); - -var msg17758 = msg("15457", dup269); - -var msg17759 = msg("15458", dup196); - -var msg17760 = msg("15459", dup196); - -var msg17761 = msg("15460", dup196); - -var msg17762 = msg("15461", dup196); - -var msg17763 = msg("15462", dup265); - -var msg17764 = msg("15463", dup265); - -var msg17765 = msg("15464", dup265); - -var msg17766 = msg("15465", dup267); - -var msg17767 = msg("15466", dup222); - -var msg17768 = msg("15467", dup222); - -var msg17769 = msg("15468", dup265); - -var msg17770 = msg("15469", dup265); - -var msg17771 = msg("15470", dup269); - -var msg17772 = msg("15471", dup196); - -var msg17773 = msg("15472", dup267); - -var msg17774 = msg("15473", dup267); - -var msg17775 = msg("15474", dup198); - -var msg17776 = msg("15475", dup265); - -var msg17777 = msg("15476", dup263); - -var msg17778 = msg("15477", dup222); - -var msg17779 = msg("15478", dup196); - -var msg17780 = msg("15479", dup222); - -var msg17781 = msg("15480", dup265); - -var msg17782 = msg("15481", dup196); - -var msg17783 = msg("15482", dup273); - -var msg17784 = msg("15483", dup265); - -var msg17785 = msg("15484", dup197); - -var msg17786 = msg("15485", dup197); - -var msg17787 = msg("15486", dup192); - -var msg17788 = msg("15487", dup196); - -var msg17789 = msg("15488", dup196); - -var msg17790 = msg("15489", dup222); - -var msg17791 = msg("15490", dup269); - -var msg17792 = msg("15491", dup222); - -var msg17793 = msg("15492", dup196); - -var msg17794 = msg("15493", dup196); - -var msg17795 = msg("15494", dup250); - -var msg17796 = msg("15495", dup250); - -var msg17797 = msg("15496", dup250); - -var msg17798 = msg("15497", dup250); - -var msg17799 = msg("15498", dup267); - -var msg17800 = msg("15499", dup267); - -var msg17801 = msg("15500", dup196); - -var msg17802 = msg("15501", dup265); - -var msg17803 = msg("15502", dup265); - -var msg17804 = msg("15503", dup196); - -var msg17805 = msg("15504", dup196); - -var msg17806 = msg("15505", dup265); - -var msg17807 = msg("15506", dup267); - -var msg17808 = msg("15507", dup201); - -var msg17809 = msg("15508", dup201); - -var msg17810 = msg("15509", dup198); - -var msg17811 = msg("15510", dup194); - -var msg17812 = msg("15511", dup222); - -var msg17813 = msg("15512", dup276); - -var msg17814 = msg("15513", dup276); - -var msg17815 = msg("15514", dup201); - -var msg17816 = msg("15515", dup260); - -var msg17817 = msg("15516", dup265); - -var msg17818 = msg("15517", dup267); - -var msg17819 = msg("15518", dup265); - -var msg17820 = msg("15519", dup267); - -var msg17821 = msg("15520", dup267); - -var msg17822 = msg("15521", dup267); - -var msg17823 = msg("15522", dup198); - -var msg17824 = msg("15523", dup222); - -var msg17825 = msg("15524", dup196); - -var msg17826 = msg("15525", dup196); - -var msg17827 = msg("15526", dup222); - -var msg17828 = msg("15527", dup198); - -var msg17829 = msg("15528", dup276); - -var msg17830 = msg("15529", dup265); - -var msg17831 = msg("15530", dup310); - -var msg17832 = msg("15531", dup267); - -var msg17833 = msg("15532", dup310); - -var msg17834 = msg("15533", dup310); - -var msg17835 = msg("15534", dup267); - -var msg17836 = msg("15535", dup267); - -var msg17837 = msg("15536", dup267); - -var msg17838 = msg("15537", dup267); - -var msg17839 = msg("15538", dup265); - -var msg17840 = msg("15539", dup267); - -var msg17841 = msg("15540", dup265); - -var msg17842 = msg("15541", dup267); - -var msg17843 = msg("15542", dup267); - -var msg17844 = msg("15543", dup265); - -var msg17845 = msg("15544", dup265); - -var msg17846 = msg("15545", dup265); - -var msg17847 = msg("15546", dup265); - -var msg17848 = msg("15547", dup265); - -var msg17849 = msg("15548", dup265); - -var msg17850 = msg("15549", dup265); - -var msg17851 = msg("15550", dup265); - -var msg17852 = msg("15551", dup265); - -var msg17853 = msg("15552", dup265); - -var msg17854 = msg("15553", dup263); - -var msg17855 = msg("15554", dup196); - -var msg17856 = msg("15555", dup222); - -var msg17857 = msg("15556", dup269); - -var msg17858 = msg("15557", dup265); - -var msg17859 = msg("15558", dup265); - -var msg17860 = msg("15559", dup201); - -var msg17861 = msg("15560", dup196); - -var msg17862 = msg("15561", dup196); - -var msg17863 = msg("15562", dup265); - -var msg17864 = msg("15563", dup192); - -var msg17865 = msg("15564", dup192); - -var msg17866 = msg("15565", dup192); - -var msg17867 = msg("15566", dup303); - -var msg17868 = msg("15567", dup303); - -var msg17869 = msg("15568", dup196); - -var msg17870 = msg("15569", dup196); - -var msg17871 = msg("15570", dup196); - -var msg17872 = msg("15571", dup222); - -var msg17873 = msg("15572", dup198); - -var msg17874 = msg("15573", dup222); - -var msg17875 = msg("15574", dup222); - -var msg17876 = msg("15575", dup196); - -var msg17877 = msg("15576", dup196); - -var msg17878 = msg("15577", dup196); - -var msg17879 = msg("15578", dup198); - -var msg17880 = msg("15579", dup198); - -var msg17881 = msg("15580", dup196); - -var msg17882 = msg("15581", dup198); - -var msg17883 = msg("15582", dup265); - -var msg17884 = msg("15583", dup194); - -var msg17885 = msg("15584", dup260); - -var msg17886 = msg("15585", dup265); - -var msg17887 = msg("15586", dup265); - -var msg17888 = msg("15587", dup265); - -var msg17889 = msg("15588", dup265); - -var msg17890 = msg("15589", dup265); - -var msg17891 = msg("15590", dup265); - -var msg17892 = msg("15591", dup265); - -var msg17893 = msg("15592", dup265); - -var msg17894 = msg("15593", dup265); - -var msg17895 = msg("15594", dup265); - -var msg17896 = msg("15595", dup265); - -var msg17897 = msg("15596", dup265); - -var msg17898 = msg("15597", dup265); - -var msg17899 = msg("15598", dup265); - -var msg17900 = msg("15599", dup265); - -var msg17901 = msg("15600", dup265); - -var msg17902 = msg("15601", dup265); - -var msg17903 = msg("15602", dup265); - -var msg17904 = msg("15603", dup265); - -var msg17905 = msg("15604", dup265); - -var msg17906 = msg("15605", dup265); - -var msg17907 = msg("15606", dup265); - -var msg17908 = msg("15607", dup265); - -var msg17909 = msg("15608", dup265); - -var msg17910 = msg("15609", dup265); - -var msg17911 = msg("15610", dup265); - -var msg17912 = msg("15611", dup265); - -var msg17913 = msg("15612", dup265); - -var msg17914 = msg("15613", dup265); - -var msg17915 = msg("15614", dup265); - -var msg17916 = msg("15615", dup265); - -var msg17917 = msg("15616", dup265); - -var msg17918 = msg("15617", dup265); - -var msg17919 = msg("15618", dup265); - -var msg17920 = msg("15619", dup265); - -var msg17921 = msg("15620", dup265); - -var msg17922 = msg("15621", dup265); - -var msg17923 = msg("15622", dup265); - -var msg17924 = msg("15623", dup265); - -var msg17925 = msg("15624", dup265); - -var msg17926 = msg("15625", dup265); - -var msg17927 = msg("15626", dup265); - -var msg17928 = msg("15627", dup265); - -var msg17929 = msg("15628", dup265); - -var msg17930 = msg("15629", dup265); - -var msg17931 = msg("15630", dup265); - -var msg17932 = msg("15631", dup265); - -var msg17933 = msg("15632", dup265); - -var msg17934 = msg("15633", dup265); - -var msg17935 = msg("15634", dup265); - -var msg17936 = msg("15635", dup265); - -var msg17937 = msg("15636", dup265); - -var msg17938 = msg("15637", dup265); - -var msg17939 = msg("15638", dup265); - -var msg17940 = msg("15639", dup265); - -var msg17941 = msg("15640", dup265); - -var msg17942 = msg("15641", dup265); - -var msg17943 = msg("15642", dup265); - -var msg17944 = msg("15643", dup265); - -var msg17945 = msg("15644", dup265); - -var msg17946 = msg("15645", dup265); - -var msg17947 = msg("15646", dup265); - -var msg17948 = msg("15647", dup265); - -var msg17949 = msg("15648", dup265); - -var msg17950 = msg("15649", dup265); - -var msg17951 = msg("15650", dup265); - -var msg17952 = msg("15651", dup265); - -var msg17953 = msg("15652", dup265); - -var msg17954 = msg("15653", dup265); - -var msg17955 = msg("15654", dup265); - -var msg17956 = msg("15655", dup265); - -var msg17957 = msg("15656", dup265); - -var msg17958 = msg("15657", dup265); - -var msg17959 = msg("15658", dup265); - -var msg17960 = msg("15659", dup265); - -var msg17961 = msg("15660", dup265); - -var msg17962 = msg("15661", dup265); - -var msg17963 = msg("15662", dup265); - -var msg17964 = msg("15663", dup265); - -var msg17965 = msg("15664", dup265); - -var msg17966 = msg("15665", dup265); - -var msg17967 = msg("15666", dup265); - -var msg17968 = msg("15667", dup265); - -var msg17969 = msg("15668", dup265); - -var msg17970 = msg("15669", dup265); - -var msg17971 = msg("15670", dup265); - -var msg17972 = msg("15671", dup265); - -var msg17973 = msg("15672", dup265); - -var msg17974 = msg("15673", dup265); - -var msg17975 = msg("15674", dup265); - -var msg17976 = msg("15675", dup265); - -var msg17977 = msg("15676", dup265); - -var msg17978 = msg("15677", dup265); - -var msg17979 = msg("15678", dup196); - -var msg17980 = msg("15679", dup196); - -var msg17981 = msg("15680", dup196); - -var msg17982 = msg("15681", dup269); - -var msg17983 = msg("15682", dup265); - -var msg17984 = msg("15683", dup285); - -var msg17985 = msg("15684", dup196); - -var msg17986 = msg("15685", dup265); - -var msg17987 = msg("15686", dup265); - -var msg17988 = msg("15687", dup265); - -var msg17989 = msg("15688", dup265); - -var msg17990 = msg("15689", dup265); - -var msg17991 = msg("15690", dup265); - -var msg17992 = msg("15691", dup265); - -var msg17993 = msg("15692", dup265); - -var msg17994 = msg("15693", dup267); - -var msg17995 = msg("15694", dup267); - -var msg17996 = msg("15695", dup267); - -var msg17997 = msg("15696", dup287); - -var msg17998 = msg("15697", dup265); - -var msg17999 = msg("15698", dup265); - -var msg18000 = msg("15699", dup222); - -var msg18001 = msg("15700", dup222); - -var msg18002 = msg("15701", dup285); - -var msg18003 = msg("15702", dup201); - -var msg18004 = msg("15703", dup267); - -var msg18005 = msg("15704", dup267); - -var msg18006 = msg("15705", dup267); - -var msg18007 = msg("15706", dup267); - -var msg18008 = msg("15707", dup267); - -var msg18009 = msg("15708", dup222); - -var msg18010 = msg("15709", dup267); - -var msg18011 = msg("15710", dup276); - -var msg18012 = msg("15711", dup222); - -var msg18013 = msg("15712", dup196); - -var msg18014 = msg("15713", dup196); - -var msg18015 = msg("15714", dup196); - -var msg18016 = msg("15715", dup197); - -var msg18017 = msg("15716", dup196); - -var msg18018 = msg("15717", dup196); - -var msg18019 = msg("15718", dup196); - -var msg18020 = msg("15719", dup196); - -var msg18021 = msg("15720", dup196); - -var msg18022 = msg("15721", dup196); - -var msg18023 = msg("15722", dup201); - -var msg18024 = msg("15723", dup260); - -var msg18025 = msg("15724", dup260); - -var msg18026 = msg("15725", dup260); - -var msg18027 = msg("15726", dup222); - -var msg18028 = msg("15727", dup196); - -var msg18029 = msg("15728", dup287); - -var msg18030 = msg("15729", dup287); - -var msg18031 = msg("15730", dup192); - -var msg18032 = msg("15731", dup269); - -var msg18033 = msg("15732", dup196); - -var msg18034 = msg("15733", dup196); - -var msg18035 = msg("15734", dup198); - -var msg18036 = msg("15847", dup276); - -var msg18037 = msg("15848", dup196); - -var msg18038 = msg("15849", dup196); - -var msg18039 = msg("15850", dup196); - -var all49 = all_match({ - processors: [ - dup177, - dup116, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg18040 = msg("15851", all49); - -var msg18041 = msg("15852", dup265); - -var msg18042 = msg("15853", dup265); - -var msg18043 = msg("15854", dup265); - -var msg18044 = msg("15855", dup265); - -var msg18045 = msg("15856", dup265); - -var msg18046 = msg("15857", dup196); - -var msg18047 = msg("15858", dup265); - -var msg18048 = msg("15859", dup265); - -var msg18049 = msg("15860", dup276); - -var msg18050 = msg("15861", dup265); - -var msg18051 = msg("15862", dup265); - -var msg18052 = msg("15863", dup265); - -var msg18053 = msg("15864", dup265); - -var msg18054 = msg("15865", dup265); - -var msg18055 = msg("15866", dup267); - -var msg18056 = msg("15867", dup265); - -var msg18057 = msg("15868", dup197); - -var msg18058 = msg("15869", dup267); - -var msg18059 = msg("15870", dup265); - -var msg18060 = msg("15871", dup265); - -var msg18061 = msg("15872", dup265); - -var msg18062 = msg("15873", dup196); - -var msg18063 = msg("15874", dup260); - -var msg18064 = msg("15875", dup260); - -var msg18065 = msg("15876", dup260); - -var msg18066 = msg("15877", dup260); - -var msg18067 = msg("15878", dup265); - -var msg18068 = msg("15879", dup265); - -var msg18069 = msg("15880", dup196); - -var msg18070 = msg("15881", dup276); - -var msg18071 = msg("15882", dup196); - -var msg18072 = msg("15883", dup222); - -var msg18073 = msg("15884", dup222); - -var msg18074 = msg("15885", dup222); - -var msg18075 = msg("15886", dup222); - -var msg18076 = msg("15887", dup222); - -var msg18077 = msg("15888", dup222); - -var msg18078 = msg("15889", dup222); - -var msg18079 = msg("15890", dup222); - -var msg18080 = msg("15891", dup222); - -var msg18081 = msg("15892", dup222); - -var msg18082 = msg("15893", dup196); - -var msg18083 = msg("15894", dup196); - -var msg18084 = msg("15895", dup222); - -var msg18085 = msg("15896", dup198); - -var msg18086 = msg("15897", dup267); - -var msg18087 = msg("15898", dup265); - -var msg18088 = msg("15899", dup265); - -var msg18089 = msg("15900", dup265); - -var msg18090 = msg("15901", dup222); - -var msg18091 = msg("15902", dup196); - -var msg18092 = msg("15903", dup196); - -var msg18093 = msg("15904", dup265); - -var msg18094 = msg("15905", dup265); - -var msg18095 = msg("15906", dup222); - -var msg18096 = msg("15907", dup222); - -var msg18097 = msg("15908", dup194); - -var msg18098 = msg("15909", dup265); - -var msg18099 = msg("15910", dup196); - -var msg18100 = msg("15911", dup276); - -var msg18101 = msg("15912", dup196); - -var msg18102 = msg("15913", dup265); - -var msg18103 = msg("15914", dup265); - -var msg18104 = msg("15915", dup265); - -var msg18105 = msg("15916", dup265); - -var msg18106 = msg("15917", dup297); - -var msg18107 = msg("15918", dup265); - -var msg18108 = msg("15919", dup265); - -var msg18109 = msg("15920", dup265); - -var msg18110 = msg("15921", dup265); - -var msg18111 = msg("15922", dup265); - -var msg18112 = msg("15923", dup265); - -var msg18113 = msg("15924", dup265); - -var msg18114 = msg("15925", dup265); - -var msg18115 = msg("15926", dup265); - -var msg18116 = msg("15927", dup265); - -var msg18117 = msg("15928", dup265); - -var msg18118 = msg("15929", dup265); - -var msg18119 = msg("15930", dup198); - -var msg18120 = msg("15931", dup196); - -var msg18121 = msg("15932", dup198); - -var msg18122 = msg("15933", dup265); - -var msg18123 = msg("15934", dup196); - -var msg18124 = msg("15935", dup196); - -var msg18125 = msg("15936", dup196); - -var msg18126 = msg("15937", dup197); - -var msg18127 = msg("15938", dup192); - -var msg18128 = msg("15939", dup196); - -var msg18129 = msg("15940", dup201); - -var msg18130 = msg("15941", dup198); - -var msg18131 = msg("15942", dup201); - -var msg18132 = msg("15943", dup201); - -var msg18133 = msg("15944", dup198); - -var msg18134 = msg("15945", dup265); - -var msg18135 = msg("15946", dup267); - -var msg18136 = msg("15947", dup287); - -var msg18137 = msg("15948", dup222); - -var msg18138 = msg("15949", dup222); - -var msg18139 = msg("15950", dup222); - -var msg18140 = msg("15951", dup260); - -var msg18141 = msg("15952", dup269); - -var msg18142 = msg("15953", dup265); - -var msg18143 = msg("15954", dup198); - -var msg18144 = msg("15955", dup196); - -var msg18145 = msg("15956", dup265); - -var msg18146 = msg("15957", dup198); - -var msg18147 = msg("15958", dup267); - -var msg18148 = msg("15959", dup198); - -var msg18149 = msg("15960", dup198); - -var msg18150 = msg("15961", dup196); - -var msg18151 = msg("15962", dup222); - -var msg18152 = msg("15963", dup218); - -var msg18153 = msg("15964", dup196); - -var msg18154 = msg("15965", dup222); - -var msg18155 = msg("15966", dup194); - -var msg18156 = msg("15967", dup222); - -var msg18157 = msg("15968", dup201); - -var msg18158 = msg("15969", dup198); - -var msg18159 = msg("15970", dup222); - -var msg18160 = msg("15971", dup196); - -var msg18161 = msg("15972", dup196); - -var msg18162 = msg("15973", dup222); - -var msg18163 = msg("15974", dup197); - -var msg18164 = msg("15975", dup267); - -var msg18165 = msg("15976", dup267); - -var msg18166 = msg("15977", dup201); - -var msg18167 = msg("15978", dup267); - -var msg18168 = msg("15979", dup222); - -var msg18169 = msg("15980", dup265); - -var msg18170 = msg("15981", dup198); - -var msg18171 = msg("15982", dup198); - -var msg18172 = msg("15983", dup196); - -var msg18173 = msg("15984", dup198); - -var msg18174 = msg("15985", dup196); - -var msg18175 = msg("15986", dup222); - -var msg18176 = msg("15987", dup265); - -var msg18177 = msg("15988", dup196); - -var msg18178 = msg("15989", dup198); - -var msg18179 = msg("15990", dup265); - -var msg18180 = msg("15991", dup198); - -var msg18181 = msg("15992", dup194); - -var msg18182 = msg("15993", dup201); - -var msg18183 = msg("15994", dup198); - -var msg18184 = msg("15995", dup269); - -var msg18185 = msg("15996", dup222); - -var msg18186 = msg("15997", dup196); - -var msg18187 = msg("15998", dup196); - -var msg18188 = msg("15999", dup287); - -var msg18189 = msg("16000", dup265); - -var msg18190 = msg("16001", dup196); - -var msg18191 = msg("16002", dup267); - -var msg18192 = msg("16003", dup267); - -var msg18193 = msg("16004", dup267); - -var msg18194 = msg("16005", dup201); - -var msg18195 = msg("16006", dup196); - -var msg18196 = msg("16007", dup196); - -var all50 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg18197 = msg("16008", all50); - -var msg18198 = msg("16009", dup222); - -var msg18199 = msg("16010", dup287); - -var msg18200 = msg("16011", dup196); - -var msg18201 = msg("16012", dup265); - -var msg18202 = msg("16013", dup196); - -var msg18203 = msg("16014", dup198); - -var msg18204 = msg("16015", dup222); - -var msg18205 = msg("16016", dup222); - -var msg18206 = msg("16017", dup222); - -var msg18207 = msg("16018", dup197); - -var msg18208 = msg("16019", dup222); - -var msg18209 = msg("16020", dup240); - -var msg18210 = msg("16021", dup265); - -var msg18211 = msg("16022", dup196); - -var msg18212 = msg("16023", dup196); - -var msg18213 = msg("16024", dup201); - -var msg18214 = msg("16025", dup222); - -var msg18215 = msg("16026", dup265); - -var msg18216 = msg("16027", dup267); - -var msg18217 = msg("16028", dup196); - -var msg18218 = msg("16029", dup197); - -var msg18219 = msg("16030", dup197); - -var msg18220 = msg("16031", dup265); - -var msg18221 = msg("16032", dup265); - -var msg18222 = msg("16033", dup196); - -var msg18223 = msg("16034", dup222); - -var msg18224 = msg("16035", dup196); - -var msg18225 = msg("16036", dup196); - -var msg18226 = msg("16037", dup222); - -var msg18227 = msg("16038", dup201); - -var msg18228 = msg("16039", dup198); - -var msg18229 = msg("16040", dup196); - -var msg18230 = msg("16041", dup222); - -var msg18231 = msg("16042", dup287); - -var msg18232 = msg("16043", dup265); - -var msg18233 = msg("16044", dup267); - -var msg18234 = msg("16045", dup196); - -var msg18235 = msg("16046", dup196); - -var msg18236 = msg("16047", dup196); - -var msg18237 = msg("16048", dup265); - -var msg18238 = msg("16049", dup260); - -var msg18239 = msg("16050", dup265); - -var msg18240 = msg("16051", dup196); - -var msg18241 = msg("16052", dup198); - -var msg18242 = msg("16053", dup267); - -var msg18243 = msg("16054", dup197); - -var msg18244 = msg("16055", dup222); - -var msg18245 = msg("16056", dup285); - -var msg18246 = msg("16057", dup222); - -var msg18247 = msg("16058", dup222); - -var msg18248 = msg("16059", dup196); - -var msg18249 = msg("16060", dup196); - -var msg18250 = msg("16061", dup196); - -var msg18251 = msg("16062", dup222); - -var msg18252 = msg("16063", dup267); - -var msg18253 = msg("16064", dup196); - -var msg18254 = msg("16065", dup196); - -var msg18255 = msg("16066", dup198); - -var msg18256 = msg("16067", dup196); - -var msg18257 = msg("16068", dup196); - -var msg18258 = msg("16069", dup222); - -var msg18259 = msg("16070", dup222); - -var msg18260 = msg("16071", dup198); - -var msg18261 = msg("16072", dup222); - -var msg18262 = msg("16073", dup197); - -var msg18263 = msg("16074", dup196); - -var msg18264 = msg("16075", dup196); - -var msg18265 = msg("16076", dup201); - -var msg18266 = msg("16077", dup201); - -var msg18267 = msg("16078", dup196); - -var msg18268 = msg("16079", dup267); - -var msg18269 = msg("16080", dup196); - -var msg18270 = msg("16081", dup201); - -var msg18271 = msg("16082", dup252); - -var msg18272 = msg("16083", dup287); - -var msg18273 = msg("16084", dup258); - -var msg18274 = msg("16085", dup201); - -var msg18275 = msg("16086", dup252); - -var msg18276 = msg("16087", dup263); - -var msg18277 = msg("16089", dup222); - -var msg18278 = msg("16090", dup267); - -var msg18279 = msg("16091", dup198); - -var msg18280 = msg("16092", dup192); - -var msg18281 = msg("16093", dup192); - -var msg18282 = msg("16094", dup192); - -var msg18283 = msg("16095", dup192); - -var msg18284 = msg("16096", dup192); - -var msg18285 = msg("16097", dup192); - -var msg18286 = msg("16098", dup192); - -var msg18287 = msg("16099", dup192); - -var msg18288 = msg("16100", dup192); - -var msg18289 = msg("16101", dup192); - -var msg18290 = msg("16102", dup192); - -var msg18291 = msg("16103", dup192); - -var msg18292 = msg("16104", dup192); - -var msg18293 = msg("16105", dup192); - -var msg18294 = msg("16106", dup192); - -var msg18295 = msg("16107", dup192); - -var msg18296 = msg("16108", dup192); - -var msg18297 = msg("16109", dup192); - -var msg18298 = msg("16110", dup192); - -var msg18299 = msg("16111", dup192); - -var msg18300 = msg("16112", dup192); - -var msg18301 = msg("16113", dup192); - -var msg18302 = msg("16114", dup303); - -var msg18303 = msg("16115", dup303); - -var msg18304 = msg("16116", dup303); - -var msg18305 = msg("16117", dup303); - -var msg18306 = msg("16118", dup303); - -var msg18307 = msg("16119", dup303); - -var msg18308 = msg("16120", dup303); - -var msg18309 = msg("16121", dup303); - -var msg18310 = msg("16122", dup303); - -var msg18311 = msg("16123", dup303); - -var msg18312 = msg("16124", dup192); - -var msg18313 = msg("16125", dup303); - -var msg18314 = msg("16126", dup303); - -var msg18315 = msg("16127", dup303); - -var msg18316 = msg("16128", dup303); - -var msg18317 = msg("16129", dup303); - -var msg18318 = msg("16130", dup303); - -var msg18319 = msg("16131", dup192); - -var msg18320 = msg("16132", dup303); - -var msg18321 = msg("16133", dup303); - -var msg18322 = msg("16134", dup303); - -var msg18323 = msg("16135", dup303); - -var msg18324 = msg("16136", dup303); - -var msg18325 = msg("16137", dup303); - -var msg18326 = msg("16138", dup303); - -var msg18327 = msg("16139", dup192); - -var msg18328 = msg("16140", dup192); - -var msg18329 = msg("16141", dup192); - -var msg18330 = msg("16142", dup196); - -var msg18331 = msg("16143", dup196); - -var msg18332 = msg("16144", dup196); - -var msg18333 = msg("16145", dup222); - -var msg18334 = msg("16146", dup311); - -var msg18335 = msg("16147", dup198); - -var msg18336 = msg("16148", dup196); - -var msg18337 = msg("16149", dup196); - -var msg18338 = msg("16150", dup196); - -var msg18339 = msg("16151", dup265); - -var msg18340 = msg("16152", dup196); - -var msg18341 = msg("16153", dup196); - -var msg18342 = msg("16154", dup196); - -var msg18343 = msg("16155", dup196); - -var msg18344 = msg("16156", dup196); - -var msg18345 = msg("16157", dup196); - -var msg18346 = msg("16158", dup196); - -var msg18347 = msg("16159", dup240); - -var msg18348 = msg("16160", dup240); - -var msg18349 = msg("16161", dup240); - -var msg18350 = msg("16162", dup240); - -var msg18351 = msg("16163", dup240); - -var msg18352 = msg("16164", dup240); - -var msg18353 = msg("16165", dup240); - -var msg18354 = msg("16166", dup240); - -var msg18355 = msg("16167", dup240); - -var msg18356 = msg("16168", dup198); - -var msg18357 = msg("16169", dup265); - -var msg18358 = msg("16170", dup267); - -var msg18359 = msg("16171", dup267); - -var msg18360 = msg("16172", dup196); - -var msg18361 = msg("16173", dup196); - -var msg18362 = msg("16174", dup196); - -var msg18363 = msg("16175", dup198); - -var msg18364 = msg("16176", dup196); - -var msg18365 = msg("16177", dup196); - -var msg18366 = msg("16178", dup196); - -var msg18367 = msg("16179", dup287); - -var msg18368 = msg("16180", dup265); - -var msg18369 = msg("16181", dup267); - -var msg18370 = msg("16182", dup196); - -var msg18371 = msg("16183", dup196); - -var msg18372 = msg("16184", dup222); - -var msg18373 = msg("16185", dup196); - -var msg18374 = msg("16186", dup267); - -var msg18375 = msg("16187", dup269); - -var msg18376 = msg("16188", dup265); - -var msg18377 = msg("16189", dup260); - -var msg18378 = msg("16190", dup196); - -var msg18379 = msg("16191", dup285); - -var msg18380 = msg("16192", dup285); - -var msg18381 = msg("16193", dup222); - -var msg18382 = msg("16194", dup267); - -var msg18383 = msg("16195", dup267); - -var msg18384 = msg("16196", dup273); - -var msg18385 = msg("16197", dup198); - -var msg18386 = msg("16198", dup260); - -var msg18387 = msg("16199", dup198); - -var msg18388 = msg("16200", dup196); - -var msg18389 = msg("16201", dup201); - -var msg18390 = msg("16202", dup198); - -var msg18391 = msg("16203", dup198); - -var msg18392 = msg("16204", dup267); - -var msg18393 = msg("16205", dup265); - -var msg18394 = msg("16206", dup196); - -var msg18395 = msg("16207", dup267); - -var msg18396 = msg("16208", dup260); - -var msg18397 = msg("16209", dup198); - -var msg18398 = msg("16210", dup198); - -var msg18399 = msg("16211", dup198); - -var msg18400 = msg("16212", dup198); - -var msg18401 = msg("16213", dup267); - -var msg18402 = msg("16214", dup198); - -var msg18403 = msg("16215", dup287); - -var msg18404 = msg("16216", dup265); - -var msg18405 = msg("16217", dup197); - -var msg18406 = msg("16218", dup265); - -var msg18407 = msg("16219", dup196); - -var msg18408 = msg("16220", dup265); - -var msg18409 = msg("16221", dup198); - -var msg18410 = msg("16222", dup269); - -var msg18411 = msg("16223", dup265); - -var msg18412 = msg("16224", dup265); - -var msg18413 = msg("16225", dup196); - -var msg18414 = msg("16226", dup196); - -var msg18415 = msg("16227", dup265); - -var msg18416 = msg("16228", dup269); - -var msg18417 = msg("16229", dup265); - -var msg18418 = msg("16230", dup265); - -var msg18419 = msg("16231", dup267); - -var msg18420 = msg("16232", dup267); - -var msg18421 = msg("16233", dup267); - -var msg18422 = msg("16234", dup267); - -var msg18423 = msg("16235", dup196); - -var msg18424 = msg("16236", dup196); - -var msg18425 = msg("16237", dup198); - -var msg18426 = msg("16238", dup201); - -var msg18427 = msg("16239", dup201); - -var msg18428 = msg("16240", dup196); - -var msg18429 = msg("16241", dup267); - -var msg18430 = msg("16242", dup192); - -var msg18431 = msg("16243", dup192); - -var msg18432 = msg("16244", dup192); - -var msg18433 = msg("16245", dup192); - -var msg18434 = msg("16246", dup192); - -var msg18435 = msg("16247", dup192); - -var msg18436 = msg("16248", dup192); - -var msg18437 = msg("16249", dup192); - -var msg18438 = msg("16250", dup192); - -var msg18439 = msg("16251", dup192); - -var msg18440 = msg("16252", dup192); - -var msg18441 = msg("16253", dup192); - -var msg18442 = msg("16254", dup192); - -var msg18443 = msg("16255", dup192); - -var msg18444 = msg("16256", dup192); - -var msg18445 = msg("16257", dup192); - -var msg18446 = msg("16258", dup192); - -var msg18447 = msg("16259", dup192); - -var msg18448 = msg("16260", dup192); - -var msg18449 = msg("16261", dup192); - -var msg18450 = msg("16262", dup192); - -var msg18451 = msg("16263", dup192); - -var msg18452 = msg("16264", dup192); - -var msg18453 = msg("16265", dup192); - -var msg18454 = msg("16266", dup192); - -var msg18455 = msg("16267", dup192); - -var msg18456 = msg("16268", dup192); - -var msg18457 = msg("16269", dup192); - -var msg18458 = msg("16270", dup192); - -var msg18459 = msg("16271", dup192); - -var msg18460 = msg("16272", dup192); - -var msg18461 = msg("16273", dup192); - -var msg18462 = msg("16274", dup192); - -var msg18463 = msg("16275", dup192); - -var msg18464 = msg("16276", dup303); - -var msg18465 = msg("16277", dup303); - -var msg18466 = msg("16278", dup303); - -var msg18467 = msg("16279", dup192); - -var msg18468 = msg("16280", dup192); - -var msg18469 = msg("16281", dup196); - -var msg18470 = msg("16282", dup196); - -var msg18471 = msg("16283", dup267); - -var msg18472 = msg("16284", dup196); - -var msg18473 = msg("16285", dup222); - -var msg18474 = msg("16286", dup265); - -var msg18475 = msg("16287", dup198); - -var msg18476 = msg("16288", dup222); - -var msg18477 = msg("16289", dup192); - -var msg18478 = msg("16290", dup260); - -var msg18479 = msg("16291", dup267); - -var msg18480 = msg("16292", dup222); - -var msg18481 = msg("16293", dup265); - -var msg18482 = msg("16294", dup201); - -var msg18483 = msg("16295", dup194); - -var msg18484 = msg("16296", dup194); - -var msg18485 = msg("16297", dup196); - -var msg18486 = msg("16298", dup196); - -var msg18487 = msg("16299", dup196); - -var msg18488 = msg("16300", dup265); - -var msg18489 = msg("16301", dup265); - -var msg18490 = msg("16302", dup196); - -var msg18491 = msg("16303", dup196); - -var msg18492 = msg("16304", dup196); - -var msg18493 = msg("16305", dup265); - -var msg18494 = msg("16306", dup265); - -var msg18495 = msg("16307", dup265); - -var msg18496 = msg("16308", dup265); - -var msg18497 = msg("16309", dup222); - -var msg18498 = msg("16310", dup269); - -var msg18499 = msg("16311", dup269); - -var msg18500 = msg("16312", dup269); - -var msg18501 = msg("16313", dup196); - -var msg18502 = msg("16314", dup222); - -var msg18503 = msg("16315", dup265); - -var msg18504 = msg("16316", dup265); - -var msg18505 = msg("16317", dup196); - -var msg18506 = msg("16318", dup265); - -var msg18507 = msg("16319", dup265); - -var msg18508 = msg("16320", dup267); - -var msg18509 = msg("16321", dup265); - -var msg18510 = msg("16322", dup265); - -var msg18511 = msg("16323", dup196); - -var msg18512 = msg("16324", dup265); - -var msg18513 = msg("16325", dup196); - -var msg18514 = msg("16326", dup196); - -var msg18515 = msg("16327", dup201); - -var msg18516 = msg("16328", dup196); - -var msg18517 = msg("16329", dup285); - -var msg18518 = msg("16330", dup265); - -var msg18519 = msg("16331", dup267); - -var msg18520 = msg("16332", dup269); - -var msg18521 = msg("16333", dup265); - -var msg18522 = msg("16334", dup196); - -var msg18523 = msg("16335", dup197); - -var msg18524 = msg("16336", dup267); - -var msg18525 = msg("16337", dup196); - -var msg18526 = msg("16338", dup265); - -var msg18527 = msg("16339", dup265); - -var msg18528 = msg("16340", dup196); - -var msg18529 = msg("16341", dup198); - -var msg18530 = msg("16342", dup265); - -var msg18531 = msg("16343", dup196); - -var msg18532 = msg("16344", dup287); - -var msg18533 = msg("16345", dup267); - -var msg18534 = msg("16346", dup267); - -var msg18535 = msg("16347", dup196); - -var msg18536 = msg("16348", dup198); - -var msg18537 = msg("16349", dup198); - -var msg18538 = msg("16350", dup198); - -var msg18539 = msg("16351", dup201); - -var all51 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - setc("eventcategory","1001020302"), - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg18540 = msg("16352", all51); - -var msg18541 = msg("16353", dup265); - -var msg18542 = msg("16354", dup197); - -var msg18543 = msg("16355", dup267); - -var msg18544 = msg("16356", dup201); - -var msg18545 = msg("16357", dup201); - -var msg18546 = msg("16358", dup192); - -var msg18547 = msg("16359", dup267); - -var msg18548 = msg("16360", dup265); - -var msg18549 = msg("16361", dup267); - -var msg18550 = msg("16362", dup196); - -var msg18551 = msg("16363", dup227); - -var msg18552 = msg("16364", dup198); - -var msg18553 = msg("16365", dup192); - -var msg18554 = msg("16366", dup222); - -var msg18555 = msg("16367", dup265); - -var msg18556 = msg("16368", dup196); - -var msg18557 = msg("16369", dup196); - -var msg18558 = msg("16370", dup265); - -var msg18559 = msg("16371", dup265); - -var msg18560 = msg("16372", dup265); - -var msg18561 = msg("16373", dup267); - -var msg18562 = msg("16374", dup196); - -var msg18563 = msg("16375", dup222); - -var msg18564 = msg("16376", dup196); - -var msg18565 = msg("16377", dup196); - -var msg18566 = msg("16378", dup267); - -var msg18567 = msg("16379", dup265); - -var msg18568 = msg("16380", dup265); - -var msg18569 = msg("16381", dup246); - -var msg18570 = msg("16382", dup265); - -var msg18571 = msg("16383", dup196); - -var msg18572 = msg("16384", dup198); - -var msg18573 = msg("16385", dup260); - -var msg18574 = msg("16386", dup265); - -var msg18575 = msg("16387", dup265); - -var msg18576 = msg("16388", dup265); - -var msg18577 = msg("16389", dup265); - -var msg18578 = msg("16390", dup196); - -var msg18579 = msg("16391", dup192); - -var msg18580 = msg("16392", dup273); - -var msg18581 = msg("16393", dup197); - -var msg18582 = msg("16394", dup198); - -var msg18583 = msg("16395", dup276); - -var msg18584 = msg("16396", dup276); - -var msg18585 = msg("16397", dup246); - -var msg18586 = msg("16398", dup246); - -var msg18587 = msg("16399", dup246); - -var msg18588 = msg("16400", dup246); - -var msg18589 = msg("16401", dup246); - -var msg18590 = msg("16402", dup246); - -var msg18591 = msg("16403", dup246); - -var msg18592 = msg("16404", dup246); - -var msg18593 = msg("16405", dup201); - -var msg18594 = msg("16406", dup265); - -var msg18595 = msg("16407", dup265); - -var msg18596 = msg("16408", dup198); - -var msg18597 = msg("16409", dup267); - -var msg18598 = msg("16410", dup265); - -var msg18599 = msg("16411", dup267); - -var msg18600 = msg("16412", dup267); - -var msg18601 = msg("16413", dup267); - -var msg18602 = msg("16414", dup267); - -var msg18603 = msg("16415", dup265); - -var msg18604 = msg("16416", dup196); - -var msg18605 = msg("16417", dup276); - -var msg18606 = msg("16418", dup276); - -var msg18607 = msg("16419", dup265); - -var msg18608 = msg("16420", dup265); - -var msg18609 = msg("16421", dup196); - -var msg18610 = msg("16422", dup196); - -var msg18611 = msg("16423", dup267); - -var msg18612 = msg("16424", dup265); - -var msg18613 = msg("16425", dup267); - -var msg18614 = msg("16426", dup267); - -var msg18615 = msg("16427", dup267); - -var msg18616 = msg("16428", dup222); - -var msg18617 = msg("16429", dup267); - -var msg18618 = msg("16430", dup267); - -var msg18619 = msg("16431", dup260); - -var msg18620 = msg("16432", dup265); - -var msg18621 = msg("16433", dup198); - -var msg18622 = msg("16434", dup196); - -var msg18623 = msg("16435", dup196); - -var msg18624 = msg("16436", dup196); - -var msg18625 = msg("16437", dup222); - -var msg18626 = msg("16438", dup269); - -var msg18627 = msg("16439", dup196); - -var msg18628 = msg("16440", dup196); - -var msg18629 = msg("16441", dup196); - -var msg18630 = msg("16442", dup196); - -var msg18631 = msg("16443", dup196); - -var msg18632 = msg("16444", dup196); - -var msg18633 = msg("16445", dup198); - -var msg18634 = msg("16446", dup287); - -var msg18635 = msg("16447", dup258); - -var msg18636 = msg("16448", dup201); - -var msg18637 = msg("16449", dup252); - -var msg18638 = msg("16450", dup260); - -var msg18639 = msg("16451", dup198); - -var msg18640 = msg("16452", dup265); - -var msg18641 = msg("16453", dup198); - -var msg18642 = msg("16454", dup198); - -var msg18643 = msg("16455", dup303); - -var msg18644 = msg("16456", dup303); - -var msg18645 = msg("16457", dup192); - -var msg18646 = msg("16458", dup267); - -var msg18647 = msg("16459", dup192); - -var msg18648 = msg("16460", dup297); - -var msg18649 = msg("16461", dup196); - -var msg18650 = msg("16462", dup196); - -var msg18651 = msg("16463", dup196); - -var msg18652 = msg("16464", dup267); - -var msg18653 = msg("16465", dup267); - -var msg18654 = msg("16466", dup196); - -var msg18655 = msg("16467", dup196); - -var msg18656 = msg("16468", dup196); - -var msg18657 = msg("16469", dup305); - -var msg18658 = msg("16470", dup267); - -var msg18659 = msg("16471", dup267); - -var msg18660 = msg("16472", dup267); - -var msg18661 = msg("16473", dup265); - -var msg18662 = msg("16474", dup196); - -var msg18663 = msg("16475", dup196); - -var msg18664 = msg("16476", dup265); - -var msg18665 = msg("16477", dup265); - -var msg18666 = msg("16478", dup265); - -var msg18667 = msg("16479", dup196); - -var msg18668 = msg("16480", dup196); - -var msg18669 = msg("16481", dup267); - -var msg18670 = msg("16482", dup310); - -var msg18671 = msg("16483", dup238); - -var msg18672 = msg("16484", dup196); - -var msg18673 = msg("16485", dup196); - -var msg18674 = msg("16486", dup192); - -var msg18675 = msg("16487", dup192); - -var msg18676 = msg("16488", dup192); - -var msg18677 = msg("16489", dup303); - -var msg18678 = msg("16490", dup196); - -var msg18679 = msg("16492", dup196); - -var msg18680 = msg("16493", dup196); - -var msg18681 = msg("16494", dup196); - -var msg18682 = msg("16495", dup196); - -var msg18683 = msg("16496", dup196); - -var msg18684 = msg("16497", dup196); - -var msg18685 = msg("16498", dup196); - -var msg18686 = msg("16499", dup196); - -var msg18687 = msg("16500", dup196); - -var msg18688 = msg("16501", dup196); - -var msg18689 = msg("16502", dup196); - -var msg18690 = msg("16503", dup267); - -var msg18691 = msg("16504", dup267); - -var msg18692 = msg("16505", dup267); - -var msg18693 = msg("16506", dup267); - -var msg18694 = msg("16507", dup267); - -var msg18695 = msg("16508", dup267); - -var msg18696 = msg("16509", dup267); - -var msg18697 = msg("16510", dup197); - -var msg18698 = msg("16511", dup197); - -var msg18699 = msg("16512", dup267); - -var msg18700 = msg("16513", dup196); - -var msg18701 = msg("16514", dup196); - -var msg18702 = msg("16515", dup196); - -var msg18703 = msg("16516", dup196); - -var msg18704 = msg("16517", dup196); - -var msg18705 = msg("16518", dup196); - -var msg18706 = msg("16519", dup196); - -var msg18707 = msg("16520", dup196); - -var msg18708 = msg("16521", dup196); - -var msg18709 = msg("16522", dup196); - -var msg18710 = msg("16523", dup196); - -var msg18711 = msg("16524", dup196); - -var msg18712 = msg("16525", dup196); - -var msg18713 = msg("16526", dup196); - -var msg18714 = msg("16527", dup196); - -var msg18715 = msg("16528", dup196); - -var msg18716 = msg("16529", dup196); - -var msg18717 = msg("16530", dup265); - -var msg18718 = msg("16531", dup276); - -var msg18719 = msg("16532", dup276); - -var msg18720 = msg("16533", dup267); - -var msg18721 = msg("16534", dup250); - -var msg18722 = msg("16535", dup267); - -var msg18723 = msg("16536", dup267); - -var msg18724 = msg("16537", dup267); - -var msg18725 = msg("16538", dup196); - -var msg18726 = msg("16539", dup197); - -var msg18727 = msg("16540", dup276); - -var msg18728 = msg("16541", dup197); - -var msg18729 = msg("16542", dup197); - -var msg18730 = msg("16543", dup267); - -var msg18731 = msg("16544", dup311); - -var msg18732 = msg("16545", dup267); - -var msg18733 = msg("16546", dup197); - -var msg18734 = msg("16547", dup196); - -var msg18735 = msg("16548", dup196); - -var msg18736 = msg("16549", dup196); - -var msg18737 = msg("16550", dup196); - -var msg18738 = msg("16551", dup196); - -var msg18739 = msg("16552", dup196); - -var msg18740 = msg("16553", dup267); - -var msg18741 = msg("16554", dup196); - -var msg18742 = msg("16555", dup196); - -var msg18743 = msg("16556", dup196); - -var msg18744 = msg("16557", dup196); - -var msg18745 = msg("16558", dup196); - -var msg18746 = msg("16559", dup309); - -var msg18747 = msg("16560", dup265); - -var msg18748 = msg("16561", dup267); - -var msg18749 = msg("16562", dup267); - -var msg18750 = msg("16563", dup267); - -var msg18751 = msg("16564", dup267); - -var msg18752 = msg("16565", dup265); - -var msg18753 = msg("16566", dup265); - -var msg18754 = msg("16567", dup265); - -var msg18755 = msg("16568", dup265); - -var msg18756 = msg("16569", dup265); - -var msg18757 = msg("16570", dup265); - -var msg18758 = msg("16571", dup265); - -var msg18759 = msg("16572", dup265); - -var msg18760 = msg("16573", dup196); - -var msg18761 = msg("16574", dup196); - -var msg18762 = msg("16575", dup222); - -var msg18763 = msg("16576", dup222); - -var msg18764 = msg("16577", dup276); - -var msg18765 = msg("16578", dup222); - -var msg18766 = msg("16579", dup222); - -var msg18767 = msg("16580", dup202); - -var msg18768 = msg("16581", dup202); - -var msg18769 = msg("16582", dup267); - -var msg18770 = msg("16583", dup267); - -var msg18771 = msg("16584", dup267); - -var msg18772 = msg("16585", dup267); - -var msg18773 = msg("16586", dup267); - -var msg18774 = msg("16587", dup201); - -var msg18775 = msg("16588", dup196); - -var msg18776 = msg("16589", dup222); - -var msg18777 = msg("16590", dup196); - -var msg18778 = msg("16591", dup196); - -var msg18779 = msg("16592", dup196); - -var msg18780 = msg("16593", dup267); - -var msg18781 = msg("16594", dup298); - -var msg18782 = msg("16595", dup267); - -var msg18783 = msg("16596", dup267); - -var msg18784 = msg("16597", dup222); - -var msg18785 = msg("16598", dup197); - -var msg18786 = msg("16599", dup222); - -var msg18787 = msg("16600", dup192); - -var msg18788 = msg("16601", dup267); - -var msg18789 = msg("16602", dup196); - -var msg18790 = msg("16603", dup197); - -var msg18791 = msg("16604", dup267); - -var msg18792 = msg("16605", dup267); - -var msg18793 = msg("16606", dup222); - -var msg18794 = msg("16607", dup196); - -var msg18795 = msg("16608", dup197); - -var msg18796 = msg("16609", dup197); - -var msg18797 = msg("16610", dup222); - -var msg18798 = msg("16611", dup267); - -var msg18799 = msg("16612", dup267); - -var msg18800 = msg("16613", dup192); - -var msg18801 = msg("16614", dup192); - -var msg18802 = msg("16615", dup192); - -var msg18803 = msg("16616", dup192); - -var msg18804 = msg("16617", dup192); - -var msg18805 = msg("16618", dup192); - -var msg18806 = msg("16619", dup192); - -var msg18807 = msg("16620", dup192); - -var msg18808 = msg("16621", dup192); - -var msg18809 = msg("16622", dup192); - -var msg18810 = msg("16623", dup192); - -var msg18811 = msg("16624", dup192); - -var msg18812 = msg("16625", dup192); - -var msg18813 = msg("16626", dup192); - -var msg18814 = msg("16627", dup192); - -var msg18815 = msg("16628", dup192); - -var msg18816 = msg("16629", dup196); - -var msg18817 = msg("16630", dup196); - -var msg18818 = msg("16631", dup196); - -var msg18819 = msg("16632", dup196); - -var msg18820 = msg("16633", dup267); - -var msg18821 = msg("16634", dup267); - -var msg18822 = msg("16635", dup265); - -var msg18823 = msg("16636", dup196); - -var msg18824 = msg("16637", dup196); - -var msg18825 = msg("16638", dup267); - -var msg18826 = msg("16639", dup267); - -var msg18827 = msg("16640", dup267); - -var msg18828 = msg("16641", dup267); - -var msg18829 = msg("16642", dup196); - -var msg18830 = msg("16643", dup267); - -var msg18831 = msg("16644", dup196); - -var msg18832 = msg("16645", dup196); - -var msg18833 = msg("16646", dup222); - -var msg18834 = msg("16647", dup267); - -var msg18835 = msg("16648", dup196); - -var msg18836 = msg("16649", dup267); - -var msg18837 = msg("16650", dup267); - -var msg18838 = msg("16651", dup267); - -var msg18839 = msg("16652", dup267); - -var msg18840 = msg("16653", dup267); - -var msg18841 = msg("16654", dup267); - -var msg18842 = msg("16655", dup267); - -var msg18843 = msg("16656", dup267); - -var msg18844 = msg("16657", dup267); - -var msg18845 = msg("16658", dup267); - -var msg18846 = msg("16659", dup196); - -var msg18847 = msg("16660", dup198); - -var msg18848 = msg("16661", dup196); - -var msg18849 = msg("16662", dup267); - -var msg18850 = msg("16663", dup267); - -var msg18851 = msg("16664", dup196); - -var msg18852 = msg("16665", dup265); - -var msg18853 = msg("16666", dup196); - -var msg18854 = msg("16667", dup196); - -var msg18855 = msg("16668", dup202); - -var msg18856 = msg("16669", dup303); - -var msg18857 = msg("16670", dup303); - -var msg18858 = msg("16671", dup267); - -var msg18859 = msg("16672", dup197); - -var msg18860 = msg("16673", dup267); - -var msg18861 = msg("16674", dup267); - -var msg18862 = msg("16675", dup196); - -var msg18863 = msg("16676", dup196); - -var msg18864 = msg("16677", dup196); - -var msg18865 = msg("16678", dup265); - -var msg18866 = msg("16679", dup201); - -var msg18867 = msg("16680", dup196); - -var msg18868 = msg("16681", dup267); - -var msg18869 = msg("16682", dup265); - -var msg18870 = msg("16683", dup267); - -var msg18871 = msg("16684", dup198); - -var msg18872 = msg("16685", dup222); - -var msg18873 = msg("16686", dup267); - -var msg18874 = msg("16687", dup201); - -var msg18875 = msg("16688", dup196); - -var msg18876 = msg("16689", dup265); - -var msg18877 = msg("16690", dup196); - -var msg18878 = msg("16691", dup265); - -var msg18879 = msg("16692", dup197); - -var msg18880 = msg("16693", dup303); - -var msg18881 = msg("16694", dup198); - -var msg18882 = msg("16695", dup303); - -var msg18883 = msg("16696", dup197); - -var msg18884 = msg("16697", dup198); - -var msg18885 = msg("16698", dup198); - -var msg18886 = msg("16699", dup257); - -var msg18887 = msg("16700", dup257); - -var msg18888 = msg("16701", dup257); - -var msg18889 = msg("16702", dup257); - -var msg18890 = msg("16703", dup260); - -var msg18891 = msg("16704", dup197); - -var msg18892 = msg("16705", dup222); - -var msg18893 = msg("16706", dup201); - -var msg18894 = msg("16707", dup260); - -var msg18895 = msg("16708", dup260); - -var msg18896 = msg("16709", dup198); - -var msg18897 = msg("16710", dup287); - -var msg18898 = msg("16711", dup201); - -var msg18899 = msg("16712", dup267); - -var msg18900 = msg("16713", dup267); - -var msg18901 = msg("16714", dup222); - -var msg18902 = msg("16715", dup267); - -var msg18903 = msg("16716", dup197); - -var msg18904 = msg("16717", dup287); - -var msg18905 = msg("16718", dup196); - -var msg18906 = msg("16719", dup201); - -var msg18907 = msg("16720", dup197); - -var msg18908 = msg("16721", dup197); - -var msg18909 = msg("16722", dup260); - -var msg18910 = msg("16723", dup260); - -var msg18911 = msg("16724", dup222); - -var msg18912 = msg("16725", dup197); - -var msg18913 = msg("16726", dup197); - -var msg18914 = msg("16727", dup201); - -var msg18915 = msg("16728", dup276); - -var msg18916 = msg("16729", dup197); - -var msg18917 = msg("16730", dup197); - -var msg18918 = msg("16731", dup197); - -var msg18919 = msg("16732", dup201); - -var msg18920 = msg("16733", dup197); - -var msg18921 = msg("16734", dup197); - -var msg18922 = msg("16735", dup222); - -var msg18923 = msg("16736", dup201); - -var msg18924 = msg("16737", dup197); - -var msg18925 = msg("16738", dup197); - -var msg18926 = msg("16739", dup201); - -var msg18927 = msg("16740", dup267); - -var msg18928 = msg("16741", dup267); - -var msg18929 = msg("16742", dup265); - -var msg18930 = msg("16743", dup197); - -var msg18931 = msg("16744", dup199); - -var msg18932 = msg("16745", dup197); - -var msg18933 = msg("16746", dup265); - -var msg18934 = msg("16747", dup265); - -var msg18935 = msg("16748", dup265); - -var msg18936 = msg("16749", dup265); - -var msg18937 = msg("16750", dup197); - -var msg18938 = msg("16751", dup197); - -var msg18939 = msg("16752", dup197); - -var msg18940 = msg("16753", dup197); - -var msg18941 = msg("16754", dup276); - -var msg18942 = msg("16755", dup276); - -var msg18943 = msg("16756", dup276); - -var msg18944 = msg("16757", dup276); - -var msg18945 = msg("16758", dup276); - -var msg18946 = msg("16759", dup276); - -var msg18947 = msg("16760", dup276); - -var msg18948 = msg("16761", dup276); - -var msg18949 = msg("16762", dup197); - -var msg18950 = msg("16763", dup197); - -var msg18951 = msg("16764", dup197); - -var msg18952 = msg("16765", dup197); - -var msg18953 = msg("16766", dup197); - -var msg18954 = msg("16767", dup265); - -var msg18955 = msg("16768", dup265); - -var msg18956 = msg("16769", dup265); - -var msg18957 = msg("16770", dup265); - -var msg18958 = msg("16771", dup197); - -var msg18959 = msg("16772", dup265); - -var msg18960 = msg("16773", dup265); - -var msg18961 = msg("16774", dup265); - -var msg18962 = msg("16775", dup265); - -var msg18963 = msg("16776", dup201); - -var msg18964 = msg("16777", dup198); - -var msg18965 = msg("16778", dup198); - -var msg18966 = msg("16779", dup265); - -var msg18967 = msg("16780", dup265); - -var msg18968 = msg("16781", dup265); - -var msg18969 = msg("16782", dup265); - -var msg18970 = msg("16783", dup265); - -var msg18971 = msg("16784", dup265); - -var msg18972 = msg("16785", dup267); - -var msg18973 = msg("16786", dup197); - -var msg18974 = msg("16787", dup201); - -var msg18975 = msg("16788", dup267); - -var msg18976 = msg("16789", dup267); - -var msg18977 = msg("16790", dup267); - -var msg18978 = msg("16791", dup265); - -var msg18979 = msg("16792", dup265); - -var msg18980 = msg("16793", dup265); - -var msg18981 = msg("16794", dup265); - -var msg18982 = msg("16795", dup227); - -var msg18983 = msg("16796", dup255); - -var msg18984 = msg("16797", dup201); - -var msg18985 = msg("16798", dup197); - -var msg18986 = msg("16799", dup197); - -var msg18987 = msg("16800", dup197); - -var msg18988 = msg("16801", dup267); - -var msg18989 = msg("16802", dup265); - -var msg18990 = msg("16803", dup265); - -var msg18991 = msg("16804", dup192); - -var msg18992 = msg("16805", dup192); - -var msg18993 = msg("16806", dup227); - -var msg18994 = msg("16807", dup227); - -var msg18995 = msg("16808", dup192); - -var msg18996 = msg("16809", dup202); - -var msg18997 = msg("16810", dup202); - -var msg18998 = msg("16811", dup202); - -var msg18999 = msg("16812", dup202); - -var msg19000 = msg("16813", dup202); - -var msg19001 = msg("16814", dup202); - -var msg19002 = msg("16815", dup202); - -var msg19003 = msg("16816", dup202); - -var msg19004 = msg("16817", dup202); - -var msg19005 = msg("16818", dup202); - -var msg19006 = msg("16819", dup202); - -var msg19007 = msg("16820", dup202); - -var msg19008 = msg("16821", dup202); - -var msg19009 = msg("16822", dup202); - -var msg19010 = msg("16823", dup202); - -var msg19011 = msg("16824", dup202); - -var msg19012 = msg("16825", dup202); - -var msg19013 = msg("16826", dup202); - -var msg19014 = msg("16827", dup202); - -var msg19015 = msg("16828", dup202); - -var msg19016 = msg("16829", dup202); - -var msg19017 = msg("16830", dup202); - -var msg19018 = msg("16831", dup202); - -var msg19019 = msg("16832", dup202); - -var msg19020 = msg("16833", dup202); - -var msg19021 = msg("16834", dup263); - -var msg19022 = msg("16835", dup263); - -var msg19023 = msg("16836", dup263); - -var msg19024 = msg("16837", dup263); - -var msg19025 = msg("16838", dup263); - -var msg19026 = msg("16839", dup263); - -var msg19027 = msg("16840", dup263); - -var msg19028 = msg("16841", dup263); - -var msg19029 = msg("16842", dup263); - -var msg19030 = msg("16843", dup263); - -var msg19031 = msg("16844", dup263); - -var msg19032 = msg("16845", dup263); - -var msg19033 = msg("16846", dup263); - -var msg19034 = msg("16847", dup263); - -var msg19035 = msg("16848", dup263); - -var msg19036 = msg("16849", dup263); - -var msg19037 = msg("16850", dup263); - -var msg19038 = msg("16851", dup263); - -var msg19039 = msg("16852", dup263); - -var msg19040 = msg("16853", dup263); - -var msg19041 = msg("16854", dup263); - -var msg19042 = msg("16855", dup263); - -var msg19043 = msg("16856", dup263); - -var msg19044 = msg("16857", dup263); - -var msg19045 = msg("16858", dup263); - -var msg19046 = msg("16859", dup263); - -var msg19047 = msg("16860", dup263); - -var msg19048 = msg("16861", dup263); - -var msg19049 = msg("16862", dup263); - -var msg19050 = msg("16863", dup263); - -var msg19051 = msg("16864", dup263); - -var msg19052 = msg("16865", dup263); - -var msg19053 = msg("16866", dup263); - -var msg19054 = msg("16867", dup263); - -var msg19055 = msg("16868", dup263); - -var msg19056 = msg("16869", dup263); - -var msg19057 = msg("16870", dup263); - -var msg19058 = msg("16871", dup263); - -var msg19059 = msg("16872", dup263); - -var msg19060 = msg("16873", dup263); - -var msg19061 = msg("16874", dup263); - -var msg19062 = msg("16875", dup263); - -var msg19063 = msg("16876", dup263); - -var msg19064 = msg("16877", dup263); - -var msg19065 = msg("16878", dup263); - -var msg19066 = msg("16879", dup263); - -var msg19067 = msg("16880", dup263); - -var msg19068 = msg("16881", dup263); - -var msg19069 = msg("16882", dup263); - -var msg19070 = msg("16883", dup263); - -var msg19071 = msg("16884", dup263); - -var msg19072 = msg("16885", dup263); - -var msg19073 = msg("16886", dup263); - -var msg19074 = msg("16887", dup263); - -var msg19075 = msg("16888", dup263); - -var msg19076 = msg("16889", dup263); - -var msg19077 = msg("16890", dup263); - -var msg19078 = msg("16891", dup263); - -var msg19079 = msg("16892", dup263); - -var msg19080 = msg("16893", dup263); - -var msg19081 = msg("16894", dup263); - -var msg19082 = msg("16895", dup263); - -var msg19083 = msg("16896", dup263); - -var msg19084 = msg("16897", dup263); - -var msg19085 = msg("16898", dup263); - -var msg19086 = msg("16899", dup263); - -var msg19087 = msg("16900", dup263); - -var msg19088 = msg("16901", dup263); - -var msg19089 = msg("16902", dup263); - -var msg19090 = msg("16903", dup263); - -var msg19091 = msg("16904", dup263); - -var msg19092 = msg("16905", dup263); - -var msg19093 = msg("16906", dup263); - -var msg19094 = msg("16907", dup263); - -var msg19095 = msg("16908", dup263); - -var msg19096 = msg("16909", dup263); - -var msg19097 = msg("16910", dup263); - -var msg19098 = msg("16911", dup269); - -var msg19099 = msg("16912", dup269); - -var msg19100 = msg("16913", dup269); - -var msg19101 = msg("16914", dup269); - -var msg19102 = msg("16915", dup269); - -var msg19103 = msg("16916", dup269); - -var msg19104 = msg("16917", dup269); - -var msg19105 = msg("16918", dup269); - -var msg19106 = msg("16919", dup269); - -var msg19107 = msg("16920", dup269); - -var msg19108 = msg("16921", dup269); - -var msg19109 = msg("16922", dup269); - -var msg19110 = msg("16923", dup269); - -var msg19111 = msg("16924", dup269); - -var msg19112 = msg("16925", dup269); - -var msg19113 = msg("16926", dup255); - -var msg19114 = msg("16927", dup269); - -var msg19115 = msg("16928", dup269); - -var msg19116 = msg("16929", dup269); - -var msg19117 = msg("16930", dup269); - -var msg19118 = msg("16931", dup269); - -var msg19119 = msg("16932", dup269); - -var msg19120 = msg("16933", dup269); - -var msg19121 = msg("16934", dup312); - -var msg19122 = msg("16935", dup312); - -var msg19123 = msg("16936", dup312); - -var msg19124 = msg("16937", dup312); - -var msg19125 = msg("16938", dup312); - -var msg19126 = msg("16939", dup312); - -var msg19127 = msg("16940", dup312); - -var msg19128 = msg("16941", dup312); - -var msg19129 = msg("16942", dup312); - -var msg19130 = msg("16943", dup312); - -var msg19131 = msg("16944", dup312); - -var msg19132 = msg("16945", dup312); - -var msg19133 = msg("16946", dup312); - -var msg19134 = msg("16947", dup312); - -var msg19135 = msg("16948", dup312); - -var msg19136 = msg("16949", dup312); - -var msg19137 = msg("16950", dup312); - -var msg19138 = msg("16951", dup312); - -var msg19139 = msg("16952", dup312); - -var msg19140 = msg("16953", dup312); - -var msg19141 = msg("16954", dup312); - -var msg19142 = msg("16955", dup312); - -var msg19143 = msg("16956", dup312); - -var msg19144 = msg("16957", dup312); - -var msg19145 = msg("16958", dup312); - -var msg19146 = msg("16959", dup312); - -var msg19147 = msg("16960", dup312); - -var msg19148 = msg("16961", dup312); - -var msg19149 = msg("16962", dup312); - -var msg19150 = msg("16963", dup312); - -var msg19151 = msg("16964", dup312); - -var msg19152 = msg("16965", dup312); - -var msg19153 = msg("16966", dup312); - -var msg19154 = msg("16967", dup312); - -var msg19155 = msg("16968", dup312); - -var msg19156 = msg("16969", dup312); - -var msg19157 = msg("16970", dup312); - -var msg19158 = msg("16971", dup312); - -var msg19159 = msg("16972", dup312); - -var msg19160 = msg("16973", dup312); - -var msg19161 = msg("16974", dup312); - -var msg19162 = msg("16975", dup312); - -var msg19163 = msg("16976", dup312); - -var msg19164 = msg("16977", dup312); - -var msg19165 = msg("16978", dup312); - -var msg19166 = msg("16979", dup312); - -var msg19167 = msg("16980", dup312); - -var msg19168 = msg("16981", dup312); - -var msg19169 = msg("16982", dup312); - -var msg19170 = msg("16983", dup312); - -var msg19171 = msg("16984", dup312); - -var msg19172 = msg("16985", dup312); - -var msg19173 = msg("16986", dup312); - -var msg19174 = msg("16987", dup312); - -var msg19175 = msg("16988", dup312); - -var msg19176 = msg("16989", dup312); - -var msg19177 = msg("16990", dup312); - -var msg19178 = msg("16991", dup312); - -var msg19179 = msg("16992", dup312); - -var msg19180 = msg("16993", dup312); - -var msg19181 = msg("16994", dup312); - -var msg19182 = msg("16995", dup312); - -var msg19183 = msg("16996", dup312); - -var msg19184 = msg("16997", dup312); - -var msg19185 = msg("16998", dup312); - -var msg19186 = msg("16999", dup312); - -var msg19187 = msg("17000", dup312); - -var msg19188 = msg("17001", dup312); - -var msg19189 = msg("17002", dup312); - -var msg19190 = msg("17003", dup312); - -var msg19191 = msg("17004", dup312); - -var msg19192 = msg("17005", dup312); - -var msg19193 = msg("17006", dup312); - -var msg19194 = msg("17007", dup312); - -var msg19195 = msg("17008", dup312); - -var msg19196 = msg("17009", dup312); - -var msg19197 = msg("17010", dup312); - -var msg19198 = msg("17011", dup312); - -var msg19199 = msg("17012", dup312); - -var msg19200 = msg("17013", dup312); - -var msg19201 = msg("17014", dup312); - -var msg19202 = msg("17015", dup312); - -var msg19203 = msg("17016", dup312); - -var msg19204 = msg("17017", dup312); - -var msg19205 = msg("17018", dup312); - -var msg19206 = msg("17019", dup312); - -var msg19207 = msg("17020", dup312); - -var msg19208 = msg("17021", dup312); - -var msg19209 = msg("17022", dup312); - -var msg19210 = msg("17023", dup312); - -var msg19211 = msg("17024", dup312); - -var msg19212 = msg("17025", dup312); - -var msg19213 = msg("17026", dup312); - -var msg19214 = msg("17027", dup312); - -var msg19215 = msg("17028", dup312); - -var msg19216 = msg("17029", dup312); - -var msg19217 = msg("17030", dup312); - -var msg19218 = msg("17031", dup312); - -var msg19219 = msg("17032", dup312); - -var msg19220 = msg("17033", dup312); - -var msg19221 = msg("17034", dup267); - -var msg19222 = msg("17035", dup267); - -var msg19223 = msg("17036", dup267); - -var msg19224 = msg("17037", dup267); - -var msg19225 = msg("17038", dup267); - -var msg19226 = msg("17039", dup267); - -var msg19227 = msg("17041", dup265); - -var msg19228 = msg("17042", dup265); - -var msg19229 = msg("17043", dup202); - -var msg19230 = msg("17044", dup240); - -var msg19231 = msg("17045", dup197); - -var msg19232 = msg("17046", dup197); - -var msg19233 = msg("17047", dup255); - -var msg19234 = msg("17048", dup201); - -var msg19235 = msg("17049", dup265); - -var msg19236 = msg("17050", dup265); - -var msg19237 = msg("17051", dup265); - -var msg19238 = msg("17052", dup265); - -var msg19239 = msg("17053", dup265); - -var msg19240 = msg("17054", dup265); - -var msg19241 = msg("17055", dup198); - -var msg19242 = msg("17056", dup201); - -var msg19243 = msg("17057", dup267); - -var msg19244 = msg("17058", dup287); - -var msg19245 = msg("17059", dup227); - -var msg19246 = msg("17060", dup197); - -var msg19247 = msg("17061", dup265); - -var msg19248 = msg("17062", dup265); - -var msg19249 = msg("17063", dup265); - -var msg19250 = msg("17064", dup265); - -var msg19251 = msg("17065", dup265); - -var msg19252 = msg("17066", dup265); - -var msg19253 = msg("17067", dup265); - -var msg19254 = msg("17068", dup265); - -var msg19255 = msg("17069", dup265); - -var msg19256 = msg("17070", dup265); - -var msg19257 = msg("17071", dup265); - -var msg19258 = msg("17072", dup265); - -var msg19259 = msg("17073", dup265); - -var msg19260 = msg("17074", dup265); - -var msg19261 = msg("17075", dup265); - -var msg19262 = msg("17076", dup265); - -var msg19263 = msg("17077", dup197); - -var msg19264 = msg("17078", dup265); - -var msg19265 = msg("17079", dup265); - -var msg19266 = msg("17080", dup265); - -var msg19267 = msg("17081", dup265); - -var msg19268 = msg("17082", dup265); - -var msg19269 = msg("17083", dup265); - -var msg19270 = msg("17084", dup265); - -var msg19271 = msg("17085", dup265); - -var msg19272 = msg("17086", dup197); - -var msg19273 = msg("17087", dup265); - -var msg19274 = msg("17088", dup265); - -var msg19275 = msg("17089", dup265); - -var msg19276 = msg("17090", dup265); - -var msg19277 = msg("17091", dup197); - -var msg19278 = msg("17092", dup265); - -var msg19279 = msg("17093", dup265); - -var msg19280 = msg("17094", dup265); - -var msg19281 = msg("17095", dup265); - -var msg19282 = msg("17096", dup265); - -var msg19283 = msg("17097", dup265); - -var msg19284 = msg("17098", dup197); - -var msg19285 = msg("17099", dup250); - -var msg19286 = msg("17100", dup250); - -var msg19287 = msg("17101", dup250); - -var msg19288 = msg("17102", dup250); - -var msg19289 = msg("17103", dup265); - -var msg19290 = msg("17104", dup197); - -var msg19291 = msg("17105", dup197); - -var msg19292 = msg("17106", dup269); - -var msg19293 = msg("17107", dup197); - -var msg19294 = msg("17108", dup197); - -var msg19295 = msg("17109", dup267); - -var msg19296 = msg("17110", dup202); - -var msg19297 = msg("17111", dup197); - -var msg19298 = msg("17112", dup255); - -var msg19299 = msg("17113", dup202); - -var msg19300 = msg("17114", dup267); - -var msg19301 = msg("17115", dup265); - -var msg19302 = msg("17116", dup265); - -var msg19303 = msg("17117", dup267); - -var msg19304 = msg("17118", dup267); - -var msg19305 = msg("17119", dup197); - -var msg19306 = msg("17120", dup267); - -var msg19307 = msg("17121", dup267); - -var msg19308 = msg("17122", dup267); - -var msg19309 = msg("17123", dup267); - -var msg19310 = msg("17124", dup267); - -var msg19311 = msg("17125", dup197); - -var msg19312 = msg("17126", dup202); - -var msg19313 = msg("17127", dup276); - -var msg19314 = msg("17128", dup267); - -var msg19315 = msg("17129", dup267); - -var msg19316 = msg("17130", dup267); - -var msg19317 = msg("17131", dup267); - -var msg19318 = msg("17132", dup267); - -var msg19319 = msg("17133", dup265); - -var msg19320 = msg("17134", dup197); - -var msg19321 = msg("17135", dup197); - -var msg19322 = msg("17136", dup267); - -var msg19323 = msg("17137", dup265); - -var msg19324 = msg("17138", dup201); - -var msg19325 = msg("17139", dup267); - -var msg19326 = msg("17140", dup197); - -var msg19327 = msg("17141", dup267); - -var msg19328 = msg("17142", dup201); - -var msg19329 = msg("17143", dup197); - -var msg19330 = msg("17144", dup197); - -var msg19331 = msg("17145", dup197); - -var msg19332 = msg("17146", dup197); - -var msg19333 = msg("17147", dup197); - -var msg19334 = msg("17148", dup201); - -var msg19335 = msg("17149", dup201); - -var msg19336 = msg("17150", dup201); - -var msg19337 = msg("17151", dup198); - -var msg19338 = msg("17152", dup198); - -var msg19339 = msg("17153", dup267); - -var msg19340 = msg("17154", dup267); - -var msg19341 = msg("17155", dup201); - -var msg19342 = msg("17156", dup267); - -var msg19343 = msg("17157", dup265); - -var msg19344 = msg("17158", dup265); - -var msg19345 = msg("17159", dup265); - -var msg19346 = msg("17160", dup197); - -var msg19347 = msg("17161", dup265); - -var msg19348 = msg("17162", dup265); - -var msg19349 = msg("17163", dup265); - -var msg19350 = msg("17164", dup265); - -var msg19351 = msg("17165", dup265); - -var msg19352 = msg("17166", dup201); - -var msg19353 = msg("17167", dup265); - -var msg19354 = msg("17168", dup265); - -var msg19355 = msg("17169", dup265); - -var msg19356 = msg("17170", dup265); - -var msg19357 = msg("17171", dup265); - -var msg19358 = msg("17172", dup265); - -var msg19359 = msg("17173", dup265); - -var msg19360 = msg("17174", dup265); - -var msg19361 = msg("17175", dup265); - -var msg19362 = msg("17176", dup265); - -var msg19363 = msg("17177", dup265); - -var msg19364 = msg("17178", dup265); - -var msg19365 = msg("17179", dup267); - -var msg19366 = msg("17180", dup267); - -var msg19367 = msg("17181", dup267); - -var msg19368 = msg("17182", dup267); - -var msg19369 = msg("17183", dup267); - -var msg19370 = msg("17184", dup267); - -var msg19371 = msg("17185", dup267); - -var msg19372 = msg("17186", dup267); - -var msg19373 = msg("17187", dup267); - -var msg19374 = msg("17188", dup267); - -var msg19375 = msg("17189", dup267); - -var msg19376 = msg("17190", dup267); - -var msg19377 = msg("17191", dup267); - -var msg19378 = msg("17192", dup267); - -var msg19379 = msg("17193", dup267); - -var msg19380 = msg("17194", dup267); - -var msg19381 = msg("17195", dup311); - -var msg19382 = msg("17196", dup267); - -var msg19383 = msg("17197", dup267); - -var msg19384 = msg("17198", dup267); - -var msg19385 = msg("17199", dup197); - -var msg19386 = msg("17200", dup197); - -var msg19387 = msg("17201", dup197); - -var msg19388 = msg("17202", dup197); - -var msg19389 = msg("17203", dup197); - -var msg19390 = msg("17204", dup197); - -var msg19391 = msg("17205", dup201); - -var msg19392 = msg("17206", dup201); - -var msg19393 = msg("17207", dup267); - -var msg19394 = msg("17208", dup267); - -var msg19395 = msg("17209", dup197); - -var msg19396 = msg("17210", dup267); - -var msg19397 = msg("17211", dup267); - -var msg19398 = msg("17212", dup201); - -var msg19399 = msg("17213", dup265); - -var msg19400 = msg("17214", dup197); - -var msg19401 = msg("17215", dup197); - -var msg19402 = msg("17216", dup267); - -var msg19403 = msg("17217", dup267); - -var msg19404 = msg("17218", dup267); - -var msg19405 = msg("17219", dup197); - -var msg19406 = msg("17220", dup197); - -var msg19407 = msg("17221", dup197); - -var msg19408 = msg("17222", dup197); - -var msg19409 = msg("17223", dup267); - -var msg19410 = msg("17224", dup250); - -var msg19411 = msg("17225", dup202); - -var msg19412 = msg("17226", dup202); - -var msg19413 = msg("17227", dup267); - -var msg19414 = msg("17228", dup267); - -var msg19415 = msg("17229", dup202); - -var msg19416 = msg("17230", dup202); - -var msg19417 = msg("17231", dup202); - -var msg19418 = msg("17232", dup202); - -var msg19419 = msg("17233", dup267); - -var msg19420 = msg("17234", dup238); - -var msg19421 = msg("17235", dup238); - -var msg19422 = msg("17236", dup267); - -var msg19423 = msg("17237", dup202); - -var msg19424 = msg("17238", dup197); - -var msg19425 = msg("17239", dup197); - -var msg19426 = msg("17240", dup197); - -var msg19427 = msg("17241", dup265); - -var msg19428 = msg("17242", dup267); - -var msg19429 = msg("17243", dup267); - -var msg19430 = msg("17244", dup197); - -var msg19431 = msg("17245", dup267); - -var msg19432 = msg("17246", dup287); - -var msg19433 = msg("17247", dup287); - -var msg19434 = msg("17248", dup287); - -var msg19435 = msg("17249", dup197); - -var msg19436 = msg("17250", dup197); - -var msg19437 = msg("17251", dup267); - -var msg19438 = msg("17252", dup276); - -var msg19439 = msg("17253", dup306); - -var msg19440 = msg("17254", dup265); - -var msg19441 = msg("17255", dup197); - -var msg19442 = msg("17256", dup267); - -var msg19443 = msg("17257", dup267); - -var msg19444 = msg("17258", dup267); - -var msg19445 = msg("17259", dup265); - -var msg19446 = msg("17260", dup201); - -var msg19447 = msg("17261", dup267); - -var msg19448 = msg("17262", dup267); - -var msg19449 = msg("17263", dup267); - -var msg19450 = msg("17264", dup267); - -var msg19451 = msg("17265", dup265); - -var msg19452 = msg("17266", dup287); - -var msg19453 = msg("17267", dup287); - -var msg19454 = msg("17268", dup267); - -var msg19455 = msg("17269", dup197); - -var msg19456 = msg("17270", dup260); - -var msg19457 = msg("17271", dup201); - -var msg19458 = msg("17272", dup197); - -var msg19459 = msg("17273", dup197); - -var msg19460 = msg("17274", dup197); - -var msg19461 = msg("17275", dup287); - -var msg19462 = msg("17276", dup287); - -var msg19463 = msg("17277", dup265); - -var msg19464 = msg("17278", dup265); - -var msg19465 = msg("17279", dup265); - -var msg19466 = msg("17280", dup265); - -var msg19467 = msg("17281", dup197); - -var msg19468 = msg("17282", dup197); - -var msg19469 = msg("17283", dup197); - -var msg19470 = msg("17284", dup201); - -var msg19471 = msg("17285", dup267); - -var msg19472 = msg("17286", dup197); - -var msg19473 = msg("17287", dup267); - -var msg19474 = msg("17288", dup197); - -var msg19475 = msg("17289", dup201); - -var msg19476 = msg("17290", dup202); - -var msg19477 = msg("17291", dup202); - -var msg19478 = msg("17292", dup267); - -var msg19479 = msg("17293", dup197); - -var msg19480 = msg("17294", dup197); - -var msg19481 = msg("17295", dup197); - -var msg19482 = msg("17296", dup265); - -var msg19483 = msg("17297", dup197); - -var msg19484 = msg("17298", dup197); - -var msg19485 = msg("17299", dup198); - -var msg19486 = msg("17300", dup197); - -var msg19487 = msg("17301", dup267); - -var msg19488 = msg("17302", dup198); - -var msg19489 = msg("17303", dup267); - -var msg19490 = msg("17304", dup197); - -var msg19491 = msg("17305", dup197); - -var msg19492 = msg("17306", dup198); - -var msg19493 = msg("17307", dup260); - -var msg19494 = msg("17308", dup267); - -var msg19495 = msg("17309", dup197); - -var msg19496 = msg("17310", dup267); - -var msg19497 = msg("17311", dup269); - -var msg19498 = msg("17312", dup269); - -var msg19499 = msg("17313", dup202); - -var msg19500 = msg("17314", dup202); - -var msg19501 = msg("17315", dup197); - -var msg19502 = msg("17316", dup267); - -var msg19503 = msg("17317", dup198); - -var msg19504 = msg("17318", dup267); - -var msg19505 = msg("17319", dup267); - -var msg19506 = msg("17320", dup267); - -var msg19507 = msg("17321", dup201); - -var msg19508 = msg("17322", dup202); - -var msg19509 = msg("17323", dup202); - -var msg19510 = msg("17324", dup199); - -var msg19511 = msg("17325", dup202); - -var msg19512 = msg("17326", dup197); - -var msg19513 = msg("17327", dup202); - -var msg19514 = msg("17328", dup197); - -var msg19515 = msg("17329", dup227); - -var msg19516 = msg("17330", dup265); - -var msg19517 = msg("17331", dup197); - -var msg19518 = msg("17332", dup250); - -var msg19519 = msg("17333", dup197); - -var msg19520 = msg("17334", dup197); - -var msg19521 = msg("17335", dup199); - -var msg19522 = msg("17336", dup199); - -var msg19523 = msg("17337", dup202); - -var msg19524 = msg("17338", dup202); - -var msg19525 = msg("17339", dup202); - -var msg19526 = msg("17340", dup202); - -var msg19527 = msg("17341", dup199); - -var msg19528 = msg("17342", dup199); - -var msg19529 = msg("17343", dup199); - -var msg19530 = msg("17344", dup199); - -var msg19531 = msg("17345", dup199); - -var msg19532 = msg("17346", dup267); - -var msg19533 = msg("17347", dup197); - -var msg19534 = msg("17348", dup197); - -var msg19535 = msg("17349", dup197); - -var msg19536 = msg("17350", dup267); - -var msg19537 = msg("17351", dup197); - -var msg19538 = msg("17352", dup197); - -var msg19539 = msg("17353", dup267); - -var msg19540 = msg("17354", dup198); - -var msg19541 = msg("17355", dup267); - -var msg19542 = msg("17356", dup197); - -var msg19543 = msg("17357", dup197); - -var msg19544 = msg("17358", dup197); - -var msg19545 = msg("17359", dup265); - -var msg19546 = msg("17360", dup197); - -var msg19547 = msg("17361", dup198); - -var msg19548 = msg("17362", dup197); - -var msg19549 = msg("17363", dup267); - -var msg19550 = msg("17364", dup202); - -var msg19551 = msg("17365", dup197); - -var msg19552 = msg("17366", dup197); - -var msg19553 = msg("17367", dup227); - -var msg19554 = msg("17368", dup267); - -var msg19555 = msg("17369", dup197); - -var msg19556 = msg("17370", dup265); - -var msg19557 = msg("17371", dup265); - -var msg19558 = msg("17372", dup197); - -var msg19559 = msg("17373", dup197); - -var msg19560 = msg("17374", dup197); - -var msg19561 = msg("17375", dup197); - -var msg19562 = msg("17376", dup267); - -var msg19563 = msg("17377", dup267); - -var msg19564 = msg("17378", dup197); - -var msg19565 = msg("17379", dup197); - -var msg19566 = msg("17380", dup265); - -var msg19567 = msg("17381", dup197); - -var msg19568 = msg("17382", dup267); - -var msg19569 = msg("17383", dup267); - -var msg19570 = msg("17384", dup197); - -var msg19571 = msg("17385", dup197); - -var msg19572 = msg("17386", dup267); - -var msg19573 = msg("17387", dup265); - -var msg19574 = msg("17388", dup197); - -var msg19575 = msg("17389", dup267); - -var msg19576 = msg("17390", dup198); - -var msg19577 = msg("17391", dup265); - -var msg19578 = msg("17392", dup199); - -var msg19579 = msg("17393", dup199); - -var msg19580 = msg("17394", dup265); - -var msg19581 = msg("17395", dup197); - -var msg19582 = msg("17396", dup267); - -var msg19583 = msg("17397", dup197); - -var msg19584 = msg("17398", dup267); - -var msg19585 = msg("17399", dup267); - -var msg19586 = msg("17400", dup263); - -var msg19587 = msg("17401", dup267); - -var msg19588 = msg("17402", dup267); - -var msg19589 = msg("17403", dup197); - -var msg19590 = msg("17404", dup197); - -var msg19591 = msg("17405", dup197); - -var msg19592 = msg("17406", dup197); - -var msg19593 = msg("17407", dup265); - -var msg19594 = msg("17408", dup197); - -var msg19595 = msg("17409", dup267); - -var msg19596 = msg("17410", dup197); - -var msg19597 = msg("17411", dup267); - -var msg19598 = msg("17412", dup260); - -var msg19599 = msg("17413", dup197); - -var msg19600 = msg("17414", dup287); - -var msg19601 = msg("17415", dup287); - -var msg19602 = msg("17416", dup198); - -var msg19603 = msg("17417", dup198); - -var msg19604 = msg("17418", dup202); - -var msg19605 = msg("17419", dup240); - -var msg19606 = msg("17420", dup265); - -var msg19607 = msg("17421", dup201); - -var msg19608 = msg("17422", dup267); - -var msg19609 = msg("17423", dup197); - -var msg19610 = msg("17424", dup201); - -var msg19611 = msg("17425", dup197); - -var msg19612 = msg("17426", dup265); - -var msg19613 = msg("17427", dup202); - -var msg19614 = msg("17428", dup202); - -var msg19615 = msg("17429", dup265); - -var msg19616 = msg("17430", dup267); - -var msg19617 = msg("17431", dup267); - -var msg19618 = msg("17432", dup197); - -var msg19619 = msg("17433", dup267); - -var msg19620 = msg("17434", dup267); - -var msg19621 = msg("17435", dup255); - -var msg19622 = msg("17436", dup255); - -var msg19623 = msg("17437", dup255); - -var msg19624 = msg("17438", dup255); - -var msg19625 = msg("17439", dup267); - -var msg19626 = msg("17440", dup197); - -var msg19627 = msg("17441", dup265); - -var msg19628 = msg("17442", dup267); - -var msg19629 = msg("17443", dup197); - -var msg19630 = msg("17444", dup197); - -var msg19631 = msg("17445", dup267); - -var msg19632 = msg("17446", dup227); - -var msg19633 = msg("17447", dup202); - -var msg19634 = msg("17448", dup267); - -var msg19635 = msg("17449", dup260); - -var msg19636 = msg("17450", dup197); - -var msg19637 = msg("17451", dup265); - -var msg19638 = msg("17452", dup265); - -var msg19639 = msg("17453", dup265); - -var msg19640 = msg("17454", dup265); - -var msg19641 = msg("17455", dup265); - -var msg19642 = msg("17456", dup265); - -var msg19643 = msg("17457", dup267); - -var msg19644 = msg("17458", dup201); - -var msg19645 = msg("17459", dup201); - -var msg19646 = msg("17460", dup201); - -var msg19647 = msg("17461", dup201); - -var msg19648 = msg("17462", dup267); - -var msg19649 = msg("17463", dup269); - -var msg19650 = msg("17464", dup265); - -var msg19651 = msg("17465", dup265); - -var msg19652 = msg("17466", dup267); - -var msg19653 = msg("17467", dup267); - -var msg19654 = msg("17468", dup267); - -var msg19655 = msg("17469", dup197); - -var msg19656 = msg("17470", dup267); - -var msg19657 = msg("17471", dup201); - -var msg19658 = msg("17472", dup201); - -var msg19659 = msg("17473", dup267); - -var msg19660 = msg("17474", dup201); - -var msg19661 = msg("17475", dup201); - -var msg19662 = msg("17476", dup267); - -var msg19663 = msg("17477", dup201); - -var msg19664 = msg("17478", dup267); - -var msg19665 = msg("17479", dup267); - -var msg19666 = msg("17480", dup201); - -var msg19667 = msg("17481", dup197); - -var msg19668 = msg("17482", dup197); - -var msg19669 = msg("17483", dup198); - -var msg19670 = msg("17484", dup198); - -var msg19671 = msg("17485", dup313); - -var msg19672 = msg("17486", dup197); - -var msg19673 = msg("17487", dup265); - -var msg19674 = msg("17488", dup267); - -var msg19675 = msg("17489", dup197); - -var msg19676 = msg("17490", dup267); - -var msg19677 = msg("17491", dup267); - -var msg19678 = msg("17492", dup267); - -var msg19679 = msg("17493", dup197); - -var msg19680 = msg("17494", dup197); - -var msg19681 = msg("17495", dup267); - -var msg19682 = msg("17496", dup267); - -var msg19683 = msg("17497", dup267); - -var msg19684 = msg("17498", dup265); - -var msg19685 = msg("17499", dup265); - -var msg19686 = msg("17500", dup265); - -var msg19687 = msg("17501", dup265); - -var msg19688 = msg("17502", dup265); - -var msg19689 = msg("17503", dup202); - -var msg19690 = msg("17504", dup197); - -var msg19691 = msg("17505", dup267); - -var msg19692 = msg("17506", dup267); - -var msg19693 = msg("17507", dup267); - -var msg19694 = msg("17508", dup265); - -var msg19695 = msg("17509", dup265); - -var msg19696 = msg("17510", dup265); - -var msg19697 = msg("17511", dup267); - -var msg19698 = msg("17512", dup201); - -var msg19699 = msg("17513", dup201); - -var msg19700 = msg("17514", dup201); - -var msg19701 = msg("17515", dup201); - -var msg19702 = msg("17516", dup201); - -var msg19703 = msg("17517", dup267); - -var msg19704 = msg("17518", dup227); - -var msg19705 = msg("17519", dup197); - -var msg19706 = msg("17520", dup267); - -var msg19707 = msg("17521", dup227); - -var msg19708 = msg("17522", dup197); - -var msg19709 = msg("17523", dup197); - -var msg19710 = msg("17524", dup197); - -var msg19711 = msg("17525", dup202); - -var msg19712 = msg("17526", dup197); - -var msg19713 = msg("17527", dup197); - -var msg19714 = msg("17528", dup197); - -var msg19715 = msg("17529", dup267); - -var msg19716 = msg("17530", dup197); - -var msg19717 = msg("17531", dup197); - -var msg19718 = msg("17532", dup267); - -var msg19719 = msg("17533", dup265); - -var msg19720 = msg("17534", dup202); - -var msg19721 = msg("17535", dup201); - -var msg19722 = msg("17536", dup197); - -var msg19723 = msg("17537", dup267); - -var msg19724 = msg("17538", dup267); - -var msg19725 = msg("17539", dup267); - -var msg19726 = msg("17540", dup202); - -var msg19727 = msg("17541", dup197); - -var msg19728 = msg("17542", dup267); - -var msg19729 = msg("17543", dup267); - -var msg19730 = msg("17544", dup197); - -var msg19731 = msg("17545", dup197); - -var msg19732 = msg("17546", dup202); - -var msg19733 = msg("17547", dup202); - -var msg19734 = msg("17548", dup197); - -var msg19735 = msg("17549", dup267); - -var msg19736 = msg("17550", dup197); - -var msg19737 = msg("17551", dup267); - -var msg19738 = msg("17552", dup265); - -var msg19739 = msg("17553", dup197); - -var msg19740 = msg("17554", dup267); - -var msg19741 = msg("17555", dup267); - -var msg19742 = msg("17556", dup267); - -var msg19743 = msg("17557", dup197); - -var msg19744 = msg("17558", dup197); - -var msg19745 = msg("17559", dup197); - -var msg19746 = msg("17560", dup197); - -var msg19747 = msg("17561", dup197); - -var msg19748 = msg("17562", dup197); - -var msg19749 = msg("17563", dup197); - -var msg19750 = msg("17564", dup202); - -var msg19751 = msg("17565", dup267); - -var msg19752 = msg("17566", dup267); - -var msg19753 = msg("17567", dup309); - -var msg19754 = msg("17568", dup197); - -var msg19755 = msg("17569", dup201); - -var msg19756 = msg("17570", dup267); - -var msg19757 = msg("17571", dup269); - -var msg19758 = msg("17572", dup265); - -var msg19759 = msg("17573", dup197); - -var msg19760 = msg("17574", dup197); - -var msg19761 = msg("17575", dup265); - -var msg19762 = msg("17576", dup265); - -var msg19763 = msg("17577", dup202); - -var msg19764 = msg("17578", dup197); - -var msg19765 = msg("17579", dup267); - -var msg19766 = msg("17580", dup267); - -var msg19767 = msg("17581", dup267); - -var msg19768 = msg("17582", dup265); - -var msg19769 = msg("17583", dup265); - -var msg19770 = msg("17584", dup202); - -var msg19771 = msg("17585", dup267); - -var msg19772 = msg("17586", dup269); - -var msg19773 = msg("17587", dup267); - -var msg19774 = msg("17588", dup265); - -var msg19775 = msg("17589", dup265); - -var msg19776 = msg("17590", dup260); - -var msg19777 = msg("17591", dup267); - -var msg19778 = msg("17592", dup265); - -var msg19779 = msg("17593", dup265); - -var msg19780 = msg("17594", dup265); - -var msg19781 = msg("17595", dup265); - -var msg19782 = msg("17596", dup265); - -var msg19783 = msg("17597", dup265); - -var msg19784 = msg("17598", dup202); - -var msg19785 = msg("17599", dup198); - -var msg19786 = msg("17600", dup202); - -var msg19787 = msg("17601", dup267); - -var msg19788 = msg("17602", dup198); - -var msg19789 = msg("17603", dup267); - -var msg19790 = msg("17604", dup267); - -var msg19791 = msg("17605", dup197); - -var msg19792 = msg("17606", dup267); - -var msg19793 = msg("17607", dup309); - -var msg19794 = msg("17608", dup267); - -var msg19795 = msg("17609", dup197); - -var msg19796 = msg("17610", dup201); - -var msg19797 = msg("17611", dup201); - -var msg19798 = msg("17612", dup201); - -var msg19799 = msg("17613", dup267); - -var msg19800 = msg("17614", dup265); - -var msg19801 = msg("17616", dup265); - -var msg19802 = msg("17618", dup267); - -var msg19803 = msg("17619", dup267); - -var msg19804 = msg("17620", dup197); - -var msg19805 = msg("17621", dup197); - -var msg19806 = msg("17622", dup267); - -var msg19807 = msg("17623", dup197); - -var msg19808 = msg("17624", dup197); - -var msg19809 = msg("17625", dup198); - -var msg19810 = msg("17626", dup197); - -var msg19811 = msg("17628", dup267); - -var msg19812 = msg("17629", dup265); - -var msg19813 = msg("17630", dup267); - -var msg19814 = msg("17631", dup197); - -var msg19815 = msg("17632", dup309); - -var msg19816 = msg("17633", dup197); - -var msg19817 = msg("17634", dup201); - -var msg19818 = msg("17635", dup201); - -var msg19819 = msg("17636", dup201); - -var msg19820 = msg("17637", dup201); - -var msg19821 = msg("17638", dup199); - -var msg19822 = msg("17639", dup306); - -var msg19823 = msg("17640", dup201); - -var msg19824 = msg("17641", dup197); - -var msg19825 = msg("17642", dup267); - -var msg19826 = msg("17643", dup314); - -var msg19827 = msg("17644", dup267); - -var msg19828 = msg("17645", dup267); - -var msg19829 = msg("17646", dup267); - -var msg19830 = msg("17647", dup267); - -var msg19831 = msg("17648", dup265); - -var msg19832 = msg("17649", dup197); - -var msg19833 = msg("17650", dup197); - -var msg19834 = msg("17651", dup287); - -var msg19835 = msg("17652", dup265); - -var msg19836 = msg("17653", dup265); - -var msg19837 = msg("17654", dup267); - -var msg19838 = msg("17655", dup267); - -var msg19839 = msg("17656", dup197); - -var msg19840 = msg("17657", dup311); - -var msg19841 = msg("17658", dup267); - -var msg19842 = msg("17659", dup197); - -var msg19843 = msg("17660", dup267); - -var msg19844 = msg("17661", dup309); - -var msg19845 = msg("17662", dup267); - -var msg19846 = msg("17663", dup197); - -var msg19847 = msg("17664", dup267); - -var msg19848 = msg("17665", dup201); - -var msg19849 = msg("17666", dup197); - -var msg19850 = msg("17667", dup198); - -var msg19851 = msg("17668", dup202); - -var msg19852 = msg("17669", dup267); - -var msg19853 = msg("17670", dup265); - -var msg19854 = msg("17671", dup265); - -var msg19855 = msg("17672", dup265); - -var msg19856 = msg("17673", dup265); - -var msg19857 = msg("17674", dup265); - -var msg19858 = msg("17675", dup265); - -var msg19859 = msg("17676", dup265); - -var msg19860 = msg("17677", dup265); - -var msg19861 = msg("17678", dup197); - -var msg19862 = msg("17679", dup265); - -var msg19863 = msg("17680", dup198); - -var msg19864 = msg("17685", dup267); - -var msg19865 = msg("17686", dup267); - -var msg19866 = msg("17687", dup267); - -var msg19867 = msg("17688", dup267); - -var msg19868 = msg("17689", dup267); - -var msg19869 = msg("17690", dup267); - -var msg19870 = msg("17691", dup267); - -var msg19871 = msg("17692", dup267); - -var msg19872 = msg("17693", dup309); - -var msg19873 = msg("17694", dup309); - -var msg19874 = msg("17695", dup197); - -var msg19875 = msg("17696", dup267); - -var msg19876 = msg("17697", dup309); - -var msg19877 = msg("17698", dup197); - -var msg19878 = msg("17699", dup315); - -var msg19879 = msg("17700", dup197); - -var msg19880 = msg("17701", dup267); - -var msg19881 = msg("17702", dup255); - -var msg19882 = msg("17703", dup267); - -var msg19883 = msg("17704", dup197); - -var msg19884 = msg("17705", dup197); - -var msg19885 = msg("17706", dup267); - -var msg19886 = msg("17707", dup201); - -var msg19887 = msg("17708", dup197); - -var msg19888 = msg("17709", dup267); - -var msg19889 = msg("17710", dup197); - -var msg19890 = msg("17711", dup267); - -var msg19891 = msg("17712", dup267); - -var msg19892 = msg("17713", dup197); - -var msg19893 = msg("17714", dup255); - -var msg19894 = msg("17715", dup255); - -var msg19895 = msg("17716", dup197); - -var msg19896 = msg("17717", dup197); - -var msg19897 = msg("17718", dup267); - -var msg19898 = msg("17719", dup267); - -var msg19899 = msg("17720", dup197); - -var msg19900 = msg("17721", dup267); - -var msg19901 = msg("17722", dup197); - -var msg19902 = msg("17723", dup276); - -var msg19903 = msg("17724", dup269); - -var msg19904 = msg("17725", dup197); - -var msg19905 = msg("17726", dup267); - -var msg19906 = msg("17727", dup197); - -var msg19907 = msg("17728", dup197); - -var msg19908 = msg("17729", dup267); - -var msg19909 = msg("17730", dup267); - -var msg19910 = msg("17731", dup202); - -var msg19911 = msg("17732", dup265); - -var msg19912 = msg("17733", dup265); - -var msg19913 = msg("17734", dup265); - -var msg19914 = msg("17735", dup197); - -var msg19915 = msg("17736", dup197); - -var msg19916 = msg("17737", dup197); - -var msg19917 = msg("17738", dup267); - -var msg19918 = msg("17739", dup202); - -var msg19919 = msg("17740", dup197); - -var msg19920 = msg("17741", dup311); - -var msg19921 = msg("17742", dup267); - -var msg19922 = msg("17743", dup267); - -var msg19923 = msg("17745", dup276); - -var msg19924 = msg("17746", dup197); - -var msg19925 = msg("17747", dup197); - -var msg19926 = msg("17748", dup202); - -var msg19927 = msg("17749", dup255); - -var msg19928 = msg("17750", dup198); - -var msg19929 = msg("17751", dup265); - -var msg19930 = msg("17752", dup267); - -var msg19931 = msg("17753", dup267); - -var msg19932 = msg("17754", dup267); - -var msg19933 = msg("17755", dup267); - -var msg19934 = msg("17756", dup197); - -var msg19935 = msg("17757", dup197); - -var msg19936 = msg("17758", dup267); - -var msg19937 = msg("17759", dup267); - -var msg19938 = msg("17760", dup267); - -var msg19939 = msg("17762", dup267); - -var msg19940 = msg("17763", dup267); - -var msg19941 = msg("17764", dup267); - -var msg19942 = msg("17765", dup197); - -var msg19943 = msg("17766", dup267); - -var msg19944 = msg("17767", dup267); - -var msg19945 = msg("17768", dup267); - -var msg19946 = msg("17769", dup267); - -var msg19947 = msg("17770", dup265); - -var msg19948 = msg("17771", dup267); - -var msg19949 = msg("17772", dup265); - -var msg19950 = msg("17773", dup267); - -var msg19951 = msg("17774", dup267); - -var msg19952 = msg("17775", dup316); - -var msg19953 = msg("17776", dup197); - -var msg19954 = msg("17777", dup197); - -var msg19955 = msg("17778", dup201); - -var msg19956 = msg("17779", dup260); - -var msg19957 = msg("17780", dup197); - -var msg19958 = msg("17781", dup267); - -var msg19959 = msg("17782", dup202); - -var msg19960 = msg("17783", dup202); - -var msg19961 = msg("17784", dup202); - -var msg19962 = msg("17785", dup202); - -var msg19963 = msg("17786", dup202); - -var msg19964 = msg("17787", dup202); - -var msg19965 = msg("17788", dup202); - -var msg19966 = msg("17789", dup202); - -var msg19967 = msg("17790", dup202); - -var msg19968 = msg("17791", dup202); - -var msg19969 = msg("17792", dup202); - -var msg19970 = msg("17793", dup202); - -var msg19971 = msg("17794", dup202); - -var msg19972 = msg("17795", dup202); - -var msg19973 = msg("17796", dup202); - -var msg19974 = msg("17797", dup202); - -var msg19975 = msg("17798", dup202); - -var msg19976 = msg("17799", dup202); - -var msg19977 = msg("17800", dup202); - -var msg19978 = msg("17801", dup202); - -var msg19979 = msg("17802", dup202); - -var msg19980 = msg("17803", dup267); - -var msg19981 = msg("17804", dup267); - -var msg19982 = msg("17805", dup238); - -var msg19983 = msg("17806", dup267); - -var msg19984 = msg("17807", dup267); - -var msg19985 = msg("17808", dup267); - -var msg19986 = msg("17809", dup202); - -var msg19987 = msg("17810", dup263); - -var msg19988 = msg("17811", dup263); - -var msg19989 = msg("17812", dup269); - -var msg19990 = msg("17813", dup263); - -var msg19991 = msg("17814", dup263); - -var msg19992 = msg("17815", dup263); - -var msg19993 = msg("17816", dup263); - -var msg19994 = msg("17817", dup263); - -var msg19995 = msg("17818", dup263); - -var msg19996 = msg("17819", dup263); - -var msg19997 = msg("17820", dup263); - -var msg19998 = msg("17821", dup263); - -var msg19999 = msg("17822", dup263); - -var msg20000 = msg("17823", dup263); - -var msg20001 = msg("17824", dup263); - -var msg20002 = msg("17825", dup263); - -var msg20003 = msg("17826", dup263); - -var msg20004 = msg("17827", dup263); - -var msg20005 = msg("17828", dup263); - -var msg20006 = msg("17829", dup263); - -var msg20007 = msg("17830", dup263); - -var msg20008 = msg("17831", dup263); - -var msg20009 = msg("17832", dup263); - -var msg20010 = msg("17833", dup263); - -var msg20011 = msg("17834", dup263); - -var msg20012 = msg("17835", dup263); - -var msg20013 = msg("17836", dup263); - -var msg20014 = msg("17837", dup263); - -var msg20015 = msg("17838", dup263); - -var msg20016 = msg("17839", dup263); - -var msg20017 = msg("17840", dup263); - -var msg20018 = msg("17841", dup263); - -var msg20019 = msg("17842", dup263); - -var msg20020 = msg("17843", dup263); - -var msg20021 = msg("17844", dup263); - -var msg20022 = msg("17845", dup263); - -var msg20023 = msg("17846", dup263); - -var msg20024 = msg("17847", dup263); - -var msg20025 = msg("17848", dup263); - -var msg20026 = msg("17849", dup263); - -var msg20027 = msg("17850", dup263); - -var msg20028 = msg("17851", dup263); - -var msg20029 = msg("17852", dup263); - -var msg20030 = msg("17853", dup263); - -var msg20031 = msg("17854", dup263); - -var msg20032 = msg("17855", dup263); - -var msg20033 = msg("17856", dup263); - -var msg20034 = msg("17857", dup263); - -var msg20035 = msg("17858", dup263); - -var msg20036 = msg("17859", dup263); - -var msg20037 = msg("17860", dup263); - -var msg20038 = msg("17861", dup263); - -var msg20039 = msg("17862", dup263); - -var msg20040 = msg("17863", dup263); - -var msg20041 = msg("17864", dup263); - -var msg20042 = msg("17865", dup263); - -var msg20043 = msg("17866", dup263); - -var msg20044 = msg("17867", dup263); - -var msg20045 = msg("17868", dup263); - -var msg20046 = msg("17869", dup263); - -var msg20047 = msg("17870", dup263); - -var msg20048 = msg("17871", dup263); - -var msg20049 = msg("17872", dup263); - -var msg20050 = msg("17873", dup263); - -var msg20051 = msg("17874", dup263); - -var msg20052 = msg("17875", dup197); - -var msg20053 = msg("17876", dup263); - -var msg20054 = msg("17877", dup263); - -var msg20055 = msg("17878", dup263); - -var msg20056 = msg("17879", dup263); - -var msg20057 = msg("17880", dup263); - -var msg20058 = msg("17881", dup263); - -var msg20059 = msg("17882", dup263); - -var msg20060 = msg("17883", dup263); - -var msg20061 = msg("17884", dup263); - -var msg20062 = msg("17885", dup263); - -var msg20063 = msg("17886", dup263); - -var msg20064 = msg("17887", dup263); - -var msg20065 = msg("17888", dup263); - -var msg20066 = msg("17889", dup263); - -var msg20067 = msg("17890", dup263); - -var msg20068 = msg("17891", dup263); - -var msg20069 = msg("17892", dup263); - -var msg20070 = msg("17893", dup263); - -var msg20071 = msg("17894", dup263); - -var msg20072 = msg("17895", dup263); - -var msg20073 = msg("17896", dup263); - -var msg20074 = msg("17897", dup263); - -var msg20075 = msg("17898", dup269); - -var msg20076 = msg("17899", dup269); - -var msg20077 = msg("17900", dup269); - -var msg20078 = msg("17901", dup269); - -var msg20079 = msg("17902", dup269); - -var msg20080 = msg("17903", dup269); - -var msg20081 = msg("17904", dup269); - -var msg20082 = msg("17905", dup269); - -var msg20083 = msg("17906", dup269); - -var msg20084 = msg("17907", dup269); - -var msg20085 = msg("17908", dup269); - -var msg20086 = msg("17909", dup269); - -var msg20087 = msg("17910", dup269); - -var msg20088 = msg("17911", dup269); - -var msg20089 = msg("17912", dup269); - -var msg20090 = msg("17913", dup269); - -var msg20091 = msg("17914", dup269); - -var msg20092 = msg("17915", dup269); - -var msg20093 = msg("17916", dup269); - -var msg20094 = msg("17917", dup269); - -var msg20095 = msg("17918", dup312); - -var msg20096 = msg("17919", dup312); - -var msg20097 = msg("17920", dup312); - -var msg20098 = msg("17921", dup312); - -var msg20099 = msg("17922", dup312); - -var msg20100 = msg("17923", dup312); - -var msg20101 = msg("17924", dup312); - -var msg20102 = msg("17925", dup312); - -var msg20103 = msg("17926", dup312); - -var msg20104 = msg("17927", dup312); - -var msg20105 = msg("17928", dup312); - -var msg20106 = msg("17929", dup312); - -var msg20107 = msg("17930", dup312); - -var msg20108 = msg("17931", dup312); - -var msg20109 = msg("17932", dup312); - -var msg20110 = msg("17933", dup312); - -var msg20111 = msg("17934", dup312); - -var msg20112 = msg("17935", dup312); - -var msg20113 = msg("17936", dup312); - -var msg20114 = msg("17937", dup312); - -var msg20115 = msg("17938", dup312); - -var msg20116 = msg("17939", dup312); - -var msg20117 = msg("17940", dup312); - -var msg20118 = msg("17941", dup312); - -var msg20119 = msg("17942", dup312); - -var msg20120 = msg("17943", dup312); - -var msg20121 = msg("17944", dup312); - -var msg20122 = msg("17945", dup312); - -var msg20123 = msg("17946", dup312); - -var msg20124 = msg("17947", dup312); - -var msg20125 = msg("17948", dup312); - -var msg20126 = msg("17949", dup312); - -var msg20127 = msg("17950", dup312); - -var msg20128 = msg("17951", dup312); - -var msg20129 = msg("17952", dup312); - -var msg20130 = msg("17953", dup312); - -var msg20131 = msg("17954", dup312); - -var msg20132 = msg("17955", dup312); - -var msg20133 = msg("17956", dup312); - -var msg20134 = msg("17957", dup312); - -var msg20135 = msg("17958", dup312); - -var msg20136 = msg("17959", dup312); - -var msg20137 = msg("17960", dup312); - -var msg20138 = msg("17961", dup312); - -var msg20139 = msg("17962", dup312); - -var msg20140 = msg("17963", dup312); - -var msg20141 = msg("17964", dup312); - -var msg20142 = msg("17965", dup312); - -var msg20143 = msg("17966", dup312); - -var msg20144 = msg("17967", dup312); - -var msg20145 = msg("17968", dup312); - -var msg20146 = msg("17969", dup312); - -var msg20147 = msg("17970", dup312); - -var msg20148 = msg("17971", dup312); - -var msg20149 = msg("17972", dup312); - -var msg20150 = msg("17973", dup287); - -var msg20151 = msg("17974", dup312); - -var msg20152 = msg("17975", dup312); - -var msg20153 = msg("17976", dup312); - -var msg20154 = msg("17977", dup312); - -var msg20155 = msg("17978", dup312); - -var msg20156 = msg("17979", dup312); - -var msg20157 = msg("17980", dup312); - -var msg20158 = msg("17981", dup312); - -var msg20159 = msg("17982", dup312); - -var msg20160 = msg("17983", dup312); - -var msg20161 = msg("17984", dup312); - -var msg20162 = msg("17985", dup312); - -var msg20163 = msg("17986", dup312); - -var msg20164 = msg("17987", dup312); - -var msg20165 = msg("17988", dup312); - -var msg20166 = msg("17989", dup312); - -var msg20167 = msg("17990", dup312); - -var msg20168 = msg("17991", dup312); - -var msg20169 = msg("17992", dup312); - -var msg20170 = msg("17993", dup312); - -var msg20171 = msg("17994", dup312); - -var msg20172 = msg("17995", dup312); - -var msg20173 = msg("17996", dup312); - -var msg20174 = msg("17997", dup312); - -var msg20175 = msg("17998", dup312); - -var msg20176 = msg("17999", dup312); - -var msg20177 = msg("18000", dup312); - -var msg20178 = msg("18001", dup312); - -var msg20179 = msg("18002", dup312); - -var msg20180 = msg("18003", dup312); - -var msg20181 = msg("18004", dup287); - -var msg20182 = msg("18005", dup312); - -var msg20183 = msg("18006", dup312); - -var msg20184 = msg("18007", dup312); - -var msg20185 = msg("18008", dup312); - -var msg20186 = msg("18009", dup312); - -var msg20187 = msg("18010", dup312); - -var msg20188 = msg("18011", dup312); - -var msg20189 = msg("18012", dup312); - -var msg20190 = msg("18013", dup312); - -var msg20191 = msg("18014", dup312); - -var msg20192 = msg("18015", dup312); - -var msg20193 = msg("18016", dup312); - -var msg20194 = msg("18017", dup312); - -var msg20195 = msg("18018", dup312); - -var msg20196 = msg("18019", dup312); - -var msg20197 = msg("18020", dup312); - -var msg20198 = msg("18021", dup312); - -var msg20199 = msg("18022", dup312); - -var msg20200 = msg("18023", dup312); - -var msg20201 = msg("18024", dup312); - -var msg20202 = msg("18025", dup312); - -var msg20203 = msg("18026", dup312); - -var msg20204 = msg("18027", dup312); - -var msg20205 = msg("18028", dup312); - -var msg20206 = msg("18029", dup312); - -var msg20207 = msg("18030", dup312); - -var msg20208 = msg("18031", dup312); - -var msg20209 = msg("18032", dup312); - -var msg20210 = msg("18033", dup312); - -var msg20211 = msg("18034", dup312); - -var msg20212 = msg("18035", dup312); - -var msg20213 = msg("18036", dup312); - -var msg20214 = msg("18037", dup312); - -var msg20215 = msg("18038", dup312); - -var msg20216 = msg("18039", dup312); - -var msg20217 = msg("18040", dup312); - -var msg20218 = msg("18041", dup312); - -var msg20219 = msg("18042", dup312); - -var msg20220 = msg("18043", dup312); - -var msg20221 = msg("18044", dup312); - -var msg20222 = msg("18045", dup312); - -var msg20223 = msg("18046", dup312); - -var msg20224 = msg("18047", dup312); - -var msg20225 = msg("18048", dup312); - -var msg20226 = msg("18049", dup312); - -var msg20227 = msg("18050", dup312); - -var msg20228 = msg("18051", dup265); - -var msg20229 = msg("18052", dup265); - -var msg20230 = msg("18053", dup312); - -var msg20231 = msg("18054", dup312); - -var msg20232 = msg("18055", dup312); - -var msg20233 = msg("18056", dup312); - -var msg20234 = msg("18057", dup312); - -var msg20235 = msg("18058", dup312); - -var msg20236 = msg("18059", dup312); - -var msg20237 = msg("18060", dup312); - -var msg20238 = msg("18061", dup312); - -var msg20239 = msg("18062", dup267); - -var msg20240 = msg("18063", dup267); - -var msg20241 = msg("18064", dup267); - -var msg20242 = msg("18065", dup267); - -var msg20243 = msg("18066", dup267); - -var msg20244 = msg("18067", dup267); - -var msg20245 = msg("18068", dup267); - -var msg20246 = msg("18069", dup265); - -var msg20247 = msg("18070", dup276); - -var msg20248 = msg("18071", dup267); - -var msg20249 = msg("18072", dup265); - -var msg20250 = msg("18073", dup267); - -var msg20251 = msg("18074", dup265); - -var msg20252 = msg("18076", dup265); - -var msg20253 = msg("18077", dup197); - -var msg20254 = msg("18078", dup197); - -var msg20255 = msg("18079", dup263); - -var msg20256 = msg("18080", dup263); - -var msg20257 = msg("18081", dup263); - -var msg20258 = msg("18082", dup263); - -var msg20259 = msg("18083", dup263); - -var msg20260 = msg("18084", dup263); - -var msg20261 = msg("18085", dup263); - -var msg20262 = msg("18086", dup263); - -var msg20263 = msg("18087", dup263); - -var msg20264 = msg("18088", dup263); - -var msg20265 = msg("18089", dup263); - -var msg20266 = msg("18090", dup263); - -var msg20267 = msg("18091", dup263); - -var msg20268 = msg("18092", dup263); - -var msg20269 = msg("18093", dup263); - -var msg20270 = msg("18094", dup263); - -var msg20271 = msg("18095", dup263); - -var msg20272 = msg("18096", dup265); - -var msg20273 = msg("18097", dup265); - -var msg20274 = msg("18098", dup269); - -var msg20275 = msg("18099", dup269); - -var msg20276 = msg("18100", dup263); - -var msg20277 = msg("18101", dup267); - -var msg20278 = msg("18102", dup202); - -var msg20279 = msg("18103", dup263); - -var msg20280 = msg("18104", dup263); - -var msg20281 = msg("18105", dup263); - -var msg20282 = msg("18106", dup263); - -var msg20283 = msg("18107", dup263); - -var msg20284 = msg("18108", dup263); - -var msg20285 = msg("18109", dup263); - -var msg20286 = msg("18110", dup263); - -var msg20287 = msg("18111", dup263); - -var msg20288 = msg("18112", dup263); - -var msg20289 = msg("18113", dup263); - -var msg20290 = msg("18114", dup263); - -var msg20291 = msg("18115", dup263); - -var msg20292 = msg("18116", dup263); - -var msg20293 = msg("18117", dup263); - -var msg20294 = msg("18118", dup263); - -var msg20295 = msg("18119", dup263); - -var msg20296 = msg("18120", dup263); - -var msg20297 = msg("18121", dup263); - -var msg20298 = msg("18122", dup263); - -var msg20299 = msg("18123", dup263); - -var msg20300 = msg("18124", dup263); - -var msg20301 = msg("18125", dup263); - -var msg20302 = msg("18126", dup263); - -var msg20303 = msg("18127", dup263); - -var msg20304 = msg("18128", dup263); - -var msg20305 = msg("18129", dup263); - -var msg20306 = msg("18130", dup263); - -var msg20307 = msg("18131", dup263); - -var msg20308 = msg("18132", dup263); - -var msg20309 = msg("18133", dup263); - -var msg20310 = msg("18134", dup263); - -var msg20311 = msg("18135", dup263); - -var msg20312 = msg("18136", dup263); - -var msg20313 = msg("18137", dup263); - -var msg20314 = msg("18138", dup263); - -var msg20315 = msg("18139", dup263); - -var msg20316 = msg("18140", dup263); - -var msg20317 = msg("18141", dup263); - -var msg20318 = msg("18142", dup263); - -var msg20319 = msg("18143", dup263); - -var msg20320 = msg("18144", dup263); - -var msg20321 = msg("18145", dup263); - -var msg20322 = msg("18146", dup263); - -var msg20323 = msg("18147", dup263); - -var msg20324 = msg("18148", dup263); - -var msg20325 = msg("18149", dup263); - -var msg20326 = msg("18150", dup263); - -var msg20327 = msg("18151", dup263); - -var msg20328 = msg("18152", dup263); - -var msg20329 = msg("18153", dup263); - -var msg20330 = msg("18154", dup263); - -var msg20331 = msg("18155", dup263); - -var msg20332 = msg("18156", dup263); - -var msg20333 = msg("18157", dup263); - -var msg20334 = msg("18158", dup263); - -var msg20335 = msg("18159", dup263); - -var msg20336 = msg("18160", dup263); - -var msg20337 = msg("18161", dup263); - -var msg20338 = msg("18162", dup263); - -var msg20339 = msg("18163", dup263); - -var msg20340 = msg("18164", dup263); - -var msg20341 = msg("18165", dup263); - -var msg20342 = msg("18166", dup263); - -var msg20343 = msg("18167", dup265); - -var msg20344 = msg("18168", dup265); - -var msg20345 = msg("18169", dup265); - -var msg20346 = msg("18170", dup267); - -var msg20347 = msg("18171", dup201); - -var msg20348 = msg("18172", dup201); - -var msg20349 = msg("18173", dup201); - -var msg20350 = msg("18174", dup267); - -var msg20351 = msg("18175", dup267); - -var msg20352 = msg("18176", dup267); - -var msg20353 = msg("18177", dup267); - -var msg20354 = msg("18178", dup267); - -var msg20355 = msg("18179", dup194); - -var msg20356 = msg("18180", dup307); - -var msg20357 = msg("18181", dup227); - -var msg20358 = msg("18182", dup227); - -var msg20359 = msg("18183", dup263); - -var msg20360 = msg("18184", dup263); - -var msg20361 = msg("18185", dup263); - -var msg20362 = msg("18186", dup267); - -var msg20363 = msg("18187", dup267); - -var msg20364 = msg("18188", dup287); - -var msg20365 = msg("18189", dup255); - -var msg20366 = msg("18190", dup255); - -var msg20367 = msg("18191", dup255); - -var msg20368 = msg("18192", dup255); - -var msg20369 = msg("18193", dup269); - -var msg20370 = msg("18194", dup269); - -var msg20371 = msg("18195", dup198); - -var msg20372 = msg("18196", dup265); - -var msg20373 = msg("18197", dup267); - -var msg20374 = msg("18198", dup267); - -var msg20375 = msg("18199", dup267); - -var msg20376 = msg("18200", dup197); - -var msg20377 = msg("18201", dup267); - -var msg20378 = msg("18202", dup269); - -var msg20379 = msg("18203", dup269); - -var msg20380 = msg("18204", dup269); - -var msg20381 = msg("18205", dup269); - -var msg20382 = msg("18206", dup269); - -var msg20383 = msg("18207", dup269); - -var msg20384 = msg("18208", dup267); - -var msg20385 = msg("18209", dup276); - -var msg20386 = msg("18210", dup267); - -var msg20387 = msg("18211", dup306); - -var msg20388 = msg("18212", dup197); - -var msg20389 = msg("18213", dup267); - -var msg20390 = msg("18214", dup267); - -var msg20391 = msg("18215", dup255); - -var msg20392 = msg("18216", dup265); - -var msg20393 = msg("18217", dup267); - -var msg20394 = msg("18218", dup287); - -var msg20395 = msg("18219", dup267); - -var msg20396 = msg("18220", dup267); - -var msg20397 = msg("18221", dup267); - -var msg20398 = msg("18222", dup267); - -var msg20399 = msg("18223", dup267); - -var msg20400 = msg("18224", dup267); - -var msg20401 = msg("18225", dup276); - -var msg20402 = msg("18226", dup276); - -var msg20403 = msg("18227", dup276); - -var msg20404 = msg("18228", dup202); - -var msg20405 = msg("18229", dup197); - -var msg20406 = msg("18230", dup267); - -var msg20407 = msg("18231", dup265); - -var msg20408 = msg("18232", dup202); - -var msg20409 = msg("18233", dup267); - -var msg20410 = msg("18234", dup265); - -var msg20411 = msg("18235", dup267); - -var msg20412 = msg("18236", dup267); - -var msg20413 = msg("18237", dup267); - -var msg20414 = msg("18238", dup267); - -var msg20415 = msg("18239", dup269); - -var msg20416 = msg("18240", dup265); - -var msg20417 = msg("18241", dup265); - -var msg20418 = msg("18242", dup265); - -var msg20419 = msg("18243", dup227); - -var msg20420 = msg("18244", dup197); - -var msg20421 = msg("18245", dup197); - -var msg20422 = msg("18246", dup197); - -var msg20423 = msg("18247", dup269); - -var msg20424 = msg("18248", dup197); - -var msg20425 = msg("18249", dup201); - -var msg20426 = msg("18250", dup197); - -var msg20427 = msg("18251", dup263); - -var msg20428 = msg("18252", dup255); - -var msg20429 = msg("18253", dup263); - -var msg20430 = msg("18254", dup263); - -var msg20431 = msg("18255", dup263); - -var msg20432 = msg("18256", dup263); - -var msg20433 = msg("18257", dup263); - -var msg20434 = msg("18258", dup263); - -var msg20435 = msg("18259", dup263); - -var msg20436 = msg("18260", dup263); - -var msg20437 = msg("18261", dup267); - -var msg20438 = msg("18262", dup267); - -var msg20439 = msg("18263", dup287); - -var msg20440 = msg("18264", dup287); - -var msg20441 = msg("18265", dup265); - -var msg20442 = msg("18266", dup255); - -var msg20443 = msg("18267", dup255); - -var msg20444 = msg("18268", dup263); - -var msg20445 = msg("18269", dup263); - -var msg20446 = msg("18270", dup263); - -var msg20447 = msg("18271", dup263); - -var msg20448 = msg("18272", dup263); - -var msg20449 = msg("18273", dup265); - -var msg20450 = msg("18274", dup265); - -var msg20451 = msg("18275", dup265); - -var msg20452 = msg("18276", dup202); - -var msg20453 = msg("18277", dup267); - -var msg20454 = msg("18278", dup276); - -var msg20455 = msg("18279", dup192); - -var msg20456 = msg("18280", dup267); - -var msg20457 = msg("18281", dup192); - -var msg20458 = msg("18282", dup267); - -var msg20459 = msg("18283", dup197); - -var msg20460 = msg("18284", dup197); - -var msg20461 = msg("18285", dup197); - -var msg20462 = msg("18286", dup267); - -var msg20463 = msg("18287", dup197); - -var msg20464 = msg("18288", dup197); - -var msg20465 = msg("18289", dup197); - -var msg20466 = msg("18290", dup197); - -var msg20467 = msg("18291", dup197); - -var msg20468 = msg("18292", dup197); - -var msg20469 = msg("18293", dup199); - -var msg20470 = msg("18294", dup197); - -var msg20471 = msg("18295", dup197); - -var msg20472 = msg("18296", dup267); - -var msg20473 = msg("18297", dup197); - -var msg20474 = msg("18298", dup267); - -var msg20475 = msg("18299", dup265); - -var msg20476 = msg("18300", dup199); - -var msg20477 = msg("18301", dup267); - -var msg20478 = msg("18302", dup267); - -var msg20479 = msg("18303", dup201); - -var msg20480 = msg("18304", dup267); - -var msg20481 = msg("18305", dup267); - -var msg20482 = msg("18306", dup267); - -var msg20483 = msg("18307", dup267); - -var msg20484 = msg("18308", dup197); - -var msg20485 = msg("18309", dup197); - -var msg20486 = msg("18310", dup267); - -var msg20487 = msg("18311", dup265); - -var msg20488 = msg("18312", dup197); - -var msg20489 = msg("18313", dup267); - -var msg20490 = msg("18314", dup201); - -var msg20491 = msg("18315", dup201); - -var msg20492 = msg("18316", dup255); - -var msg20493 = msg("18317", dup201); - -var msg20494 = msg("18318", dup202); - -var msg20495 = msg("18319", dup201); - -var msg20496 = msg("18320", dup197); - -var msg20497 = msg("18321", dup265); - -var msg20498 = msg("18322", dup265); - -var msg20499 = msg("18323", dup265); - -var msg20500 = msg("18324", dup265); - -var msg20501 = msg("18325", dup265); - -var msg20502 = msg("18326", dup227); - -var msg20503 = msg("18327", dup197); - -var msg20504 = msg("18328", dup267); - -var msg20505 = msg("18329", dup265); - -var msg20506 = msg("18330", dup276); - -var msg20507 = msg("18331", dup197); - -var msg20508 = msg("18332", dup267); - -var msg20509 = msg("18333", dup267); - -var msg20510 = msg("18334", dup267); - -var msg20511 = msg("18335", dup265); - -var msg20512 = msg("18336", dup269); - -var msg20513 = msg("18337", dup269); - -var msg20514 = msg("18338", dup269); - -var msg20515 = msg("18339", dup269); - -var msg20516 = msg("18340", dup269); - -var msg20517 = msg("18341", dup269); - -var msg20518 = msg("18342", dup269); - -var msg20519 = msg("18343", dup269); - -var msg20520 = msg("18344", dup269); - -var msg20521 = msg("18345", dup269); - -var msg20522 = msg("18346", dup269); - -var msg20523 = msg("18347", dup269); - -var msg20524 = msg("18348", dup269); - -var msg20525 = msg("18349", dup269); - -var msg20526 = msg("18350", dup269); - -var msg20527 = msg("18351", dup269); - -var msg20528 = msg("18352", dup269); - -var msg20529 = msg("18353", dup269); - -var msg20530 = msg("18354", dup269); - -var msg20531 = msg("18355", dup269); - -var msg20532 = msg("18356", dup269); - -var msg20533 = msg("18357", dup269); - -var msg20534 = msg("18358", dup269); - -var msg20535 = msg("18359", dup269); - -var msg20536 = msg("18360", dup269); - -var msg20537 = msg("18361", dup269); - -var msg20538 = msg("18362", dup269); - -var msg20539 = msg("18363", dup269); - -var msg20540 = msg("18364", dup269); - -var msg20541 = msg("18365", dup269); - -var msg20542 = msg("18366", dup269); - -var msg20543 = msg("18367", dup269); - -var msg20544 = msg("18368", dup269); - -var msg20545 = msg("18369", dup269); - -var msg20546 = msg("18370", dup269); - -var msg20547 = msg("18371", dup269); - -var msg20548 = msg("18372", dup269); - -var msg20549 = msg("18373", dup269); - -var msg20550 = msg("18374", dup269); - -var msg20551 = msg("18375", dup269); - -var msg20552 = msg("18376", dup269); - -var msg20553 = msg("18377", dup269); - -var msg20554 = msg("18378", dup269); - -var msg20555 = msg("18379", dup269); - -var msg20556 = msg("18380", dup269); - -var msg20557 = msg("18381", dup269); - -var msg20558 = msg("18382", dup269); - -var msg20559 = msg("18383", dup269); - -var msg20560 = msg("18384", dup269); - -var msg20561 = msg("18385", dup269); - -var msg20562 = msg("18386", dup269); - -var msg20563 = msg("18387", dup269); - -var msg20564 = msg("18388", dup269); - -var msg20565 = msg("18389", dup269); - -var msg20566 = msg("18390", dup269); - -var msg20567 = msg("18391", dup269); - -var msg20568 = msg("18392", dup269); - -var msg20569 = msg("18393", dup269); - -var msg20570 = msg("18394", dup269); - -var msg20571 = msg("18395", dup269); - -var msg20572 = msg("18396", dup265); - -var msg20573 = msg("18397", dup267); - -var msg20574 = msg("18398", dup265); - -var msg20575 = msg("18399", dup267); - -var msg20576 = msg("18400", dup202); - -var msg20577 = msg("18401", dup201); - -var msg20578 = msg("18402", dup267); - -var msg20579 = msg("18403", dup197); - -var msg20580 = msg("18404", dup267); - -var msg20581 = msg("18405", dup197); - -var msg20582 = msg("18406", dup201); - -var msg20583 = msg("18407", dup287); - -var msg20584 = msg("18408", dup267); - -var msg20585 = msg("18409", dup267); - -var msg20586 = msg("18410", dup267); - -var msg20587 = msg("18411", dup202); - -var msg20588 = msg("18412", dup202); - -var msg20589 = msg("18413", dup267); - -var msg20590 = msg("18414", dup265); - -var msg20591 = msg("18415", dup202); - -var msg20592 = msg("18416", dup197); - -var msg20593 = msg("18417", dup197); - -var msg20594 = msg("18418", dup267); - -var msg20595 = msg("18419", dup267); - -var msg20596 = msg("18420", dup201); - -var msg20597 = msg("18421", dup267); - -var msg20598 = msg("18422", dup306); - -var msg20599 = msg("18423", dup306); - -var msg20600 = msg("18424", dup306); - -var msg20601 = msg("18425", dup306); - -var msg20602 = msg("18426", dup260); - -var msg20603 = msg("18427", dup311); - -var msg20604 = msg("18428", dup311); - -var msg20605 = msg("18429", dup311); - -var msg20606 = msg("18430", dup311); - -var msg20607 = msg("18431", dup260); - -var msg20608 = msg("18432", dup267); - -var msg20609 = msg("18433", dup276); - -var msg20610 = msg("18434", dup276); - -var msg20611 = msg("18435", dup276); - -var msg20612 = msg("18436", dup276); - -var msg20613 = msg("18437", dup276); - -var msg20614 = msg("18438", dup276); - -var msg20615 = msg("18439", dup267); - -var msg20616 = msg("18440", dup267); - -var msg20617 = msg("18441", dup267); - -var msg20618 = msg("18442", dup267); - -var msg20619 = msg("18443", dup267); - -var msg20620 = msg("18444", dup202); - -var msg20621 = msg("18445", dup267); - -var msg20622 = msg("18446", dup276); - -var msg20623 = msg("18447", dup267); - -var msg20624 = msg("18448", dup267); - -var msg20625 = msg("18449", dup267); - -var msg20626 = msg("18450", dup202); - -var msg20627 = msg("18451", dup197); - -var msg20628 = msg("18452", dup267); - -var msg20629 = msg("18453", dup267); - -var msg20630 = msg("18454", dup267); - -var msg20631 = msg("18455", dup202); - -var msg20632 = msg("18456", dup265); - -var msg20633 = msg("18457", dup197); - -var msg20634 = msg("18458", dup202); - -var msg20635 = msg("18459", dup202); - -var msg20636 = msg("18460", dup197); - -var msg20637 = msg("18461", dup197); - -var msg20638 = msg("18462", dup197); - -var msg20639 = msg("18463", dup267); - -var msg20640 = msg("18464", dup265); - -var msg20641 = msg("18465", dup267); - -var msg20642 = msg("18466", dup267); - -var msg20643 = msg("18467", dup267); - -var msg20644 = msg("18468", dup197); - -var msg20645 = msg("18469", dup255); - -var msg20646 = msg("18470", dup198); - -var msg20647 = msg("18471", dup198); - -var msg20648 = msg("18472", dup201); - -var msg20649 = msg("18473", dup232); - -var msg20650 = msg("18474", dup232); - -var msg20651 = msg("18475", dup197); - -var msg20652 = msg("18476", dup197); - -var msg20653 = msg("18477", dup197); - -var msg20654 = msg("18478", dup265); - -var msg20655 = msg("18479", dup265); - -var msg20656 = msg("18480", dup197); - -var msg20657 = msg("18481", dup197); - -var msg20658 = msg("18482", dup267); - -var msg20659 = msg("18483", dup197); - -var msg20660 = msg("18484", dup197); - -var msg20661 = msg("18485", dup267); - -var msg20662 = msg("18486", dup267); - -var msg20663 = msg("18487", dup197); - -var msg20664 = msg("18488", dup267); - -var msg20665 = msg("18489", dup276); - -var msg20666 = msg("18490", dup265); - -var msg20667 = msg("18491", dup265); - -var msg20668 = msg("18492", dup263); - -var msg20669 = msg("18493", dup265); - -var msg20670 = msg("18494", dup276); - -var msg20671 = msg("18495", dup267); - -var msg20672 = msg("18496", dup267); - -var msg20673 = msg("18497", dup276); - -var msg20674 = msg("18498", dup267); - -var msg20675 = msg("18499", dup267); - -var msg20676 = msg("18500", dup276); - -var msg20677 = msg("18501", dup263); - -var msg20678 = msg("18502", dup287); - -var msg20679 = msg("18503", dup267); - -var msg20680 = msg("18504", dup197); - -var msg20681 = msg("18505", dup197); - -var msg20682 = msg("18506", dup197); - -var msg20683 = msg("18507", dup197); - -var msg20684 = msg("18508", dup267); - -var msg20685 = msg("18509", dup267); - -var msg20686 = msg("18510", dup197); - -var msg20687 = msg("18511", dup198); - -var msg20688 = msg("18512", dup197); - -var msg20689 = msg("18513", dup260); - -var msg20690 = msg("18514", dup267); - -var msg20691 = msg("18515", dup267); - -var msg20692 = msg("18516", dup202); - -var msg20693 = msg("18517", dup197); - -var msg20694 = msg("18518", dup269); - -var msg20695 = msg("18519", dup269); - -var msg20696 = msg("18520", dup267); - -var msg20697 = msg("18521", dup269); - -var msg20698 = msg("18522", dup269); - -var msg20699 = msg("18523", dup267); - -var msg20700 = msg("18524", dup287); - -var msg20701 = msg("18525", dup197); - -var msg20702 = msg("18526", dup267); - -var msg20703 = msg("18527", dup267); - -var msg20704 = msg("18528", dup265); - -var msg20705 = msg("18529", dup311); - -var msg20706 = msg("18530", dup311); - -var msg20707 = msg("18531", dup201); - -var msg20708 = msg("18532", dup201); - -var msg20709 = msg("18533", dup198); - -var msg20710 = msg("18534", dup198); - -var msg20711 = msg("18535", dup201); - -var msg20712 = msg("18536", dup202); - -var msg20713 = msg("18537", dup197); - -var msg20714 = msg("18538", dup267); - -var msg20715 = msg("18539", dup267); - -var msg20716 = msg("18540", dup267); - -var msg20717 = msg("18541", dup202); - -var msg20718 = msg("18542", dup267); - -var msg20719 = msg("18543", dup202); - -var msg20720 = msg("18544", dup202); - -var msg20721 = msg("18545", dup202); - -var msg20722 = msg("18546", dup202); - -var msg20723 = msg("18547", dup202); - -var msg20724 = msg("18548", dup202); - -var msg20725 = msg("18549", dup202); - -var msg20726 = msg("18550", dup202); - -var msg20727 = msg("18551", dup250); - -var msg20728 = msg("18552", dup250); - -var msg20729 = msg("18553", dup250); - -var msg20730 = msg("18554", dup250); - -var msg20731 = msg("18555", dup267); - -var msg20732 = msg("18556", dup260); - -var msg20733 = msg("18557", dup255); - -var msg20734 = msg("18558", dup255); - -var msg20735 = msg("18559", dup267); - -var msg20736 = msg("18560", dup267); - -var msg20737 = msg("18561", dup197); - -var msg20738 = msg("18562", dup303); - -var msg20739 = msg("18563", dup192); - -var msg20740 = msg("18564", dup303); - -var msg20741 = msg("18565", dup265); - -var msg20742 = msg("18566", dup265); - -var msg20743 = msg("18567", dup265); - -var msg20744 = msg("18568", dup265); - -var msg20745 = msg("18569", dup265); - -var msg20746 = msg("18570", dup265); - -var msg20747 = msg("18571", dup265); - -var msg20748 = msg("18572", dup265); - -var msg20749 = msg("18573", dup265); - -var msg20750 = msg("18574", dup197); - -var msg20751 = msg("18575", dup227); - -var msg20752 = msg("18576", dup265); - -var msg20753 = msg("18577", dup192); - -var msg20754 = msg("18578", dup197); - -var msg20755 = msg("18579", dup197); - -var msg20756 = msg("18580", dup227); - -var msg20757 = msg("18581", dup265); - -var msg20758 = msg("18582", dup265); - -var msg20759 = msg("18583", dup197); - -var msg20760 = msg("18584", dup197); - -var msg20761 = msg("18585", dup267); - -var msg20762 = msg("18586", dup260); - -var msg20763 = msg("18587", dup197); - -var msg20764 = msg("18588", dup227); - -var msg20765 = msg("18589", dup267); - -var msg20766 = msg("18590", dup197); - -var msg20767 = msg("18591", dup197); - -var msg20768 = msg("18592", dup267); - -var msg20769 = msg("18593", dup265); - -var msg20770 = msg("18594", dup202); - -var msg20771 = msg("18595", dup202); - -var msg20772 = msg("18596", dup197); - -var msg20773 = msg("18597", dup197); - -var msg20774 = msg("18598", dup227); - -var msg20775 = msg("18599", dup197); - -var msg20776 = msg("18600", dup197); - -var msg20777 = msg("18601", dup202); - -var msg20778 = msg("18602", dup260); - -var msg20779 = msg("18603", dup197); - -var msg20780 = msg("18604", dup201); - -var msg20781 = msg("18605", dup197); - -var msg20782 = msg("18606", dup202); - -var msg20783 = msg("18607", dup202); - -var msg20784 = msg("18608", dup202); - -var msg20785 = msg("18609", dup202); - -var msg20786 = msg("18610", dup197); - -var msg20787 = msg("18611", dup309); - -var msg20788 = msg("18612", dup309); - -var msg20789 = msg("18613", dup309); - -var msg20790 = msg("18614", dup202); - -var msg20791 = msg("18615", dup197); - -var msg20792 = msg("18616", dup197); - -var msg20793 = msg("18617", dup202); - -var msg20794 = msg("18618", dup202); - -var msg20795 = msg("18619", dup267); - -var msg20796 = msg("18620", dup267); - -var msg20797 = msg("18621", dup267); - -var msg20798 = msg("18622", dup267); - -var msg20799 = msg("18623", dup267); - -var msg20800 = msg("18624", dup267); - -var msg20801 = msg("18625", dup276); - -var msg20802 = msg("18626", dup276); - -var msg20803 = msg("18627", dup276); - -var msg20804 = msg("18628", dup276); - -var msg20805 = msg("18629", dup276); - -var msg20806 = msg("18630", dup197); - -var msg20807 = msg("18631", dup197); - -var msg20808 = msg("18632", dup267); - -var msg20809 = msg("18633", dup267); - -var msg20810 = msg("18634", dup267); - -var msg20811 = msg("18635", dup202); - -var msg20812 = msg("18636", dup267); - -var msg20813 = msg("18637", dup267); - -var msg20814 = msg("18638", dup267); - -var msg20815 = msg("18639", dup267); - -var msg20816 = msg("18640", dup265); - -var msg20817 = msg("18641", dup267); - -var msg20818 = msg("18642", dup197); - -var msg20819 = msg("18643", dup197); - -var msg20820 = msg("18644", dup267); - -var msg20821 = msg("18645", dup267); - -var msg20822 = msg("18646", dup267); - -var msg20823 = msg("18647", dup311); - -var msg20824 = msg("18648", dup202); - -var msg20825 = msg("18649", dup197); - -var msg20826 = msg("18650", dup276); - -var msg20827 = msg("18651", dup197); - -var msg20828 = msg("18652", dup197); - -var msg20829 = msg("18653", dup314); - -var msg20830 = msg("18654", dup202); - -var msg20831 = msg("18655", dup267); - -var msg20832 = msg("18656", dup197); - -var msg20833 = msg("18657", dup267); - -var msg20834 = msg("18658", dup197); - -var msg20835 = msg("18659", dup197); - -var msg20836 = msg("18660", dup197); - -var msg20837 = msg("18661", dup267); - -var msg20838 = msg("18662", dup267); - -var msg20839 = msg("18663", dup267); - -var msg20840 = msg("18664", dup267); - -var msg20841 = msg("18665", dup267); - -var msg20842 = msg("18666", dup267); - -var msg20843 = msg("18667", dup267); - -var msg20844 = msg("18668", dup265); - -var msg20845 = msg("18669", dup265); - -var msg20846 = msg("18670", dup267); - -var msg20847 = msg("18671", dup267); - -var msg20848 = msg("18672", dup265); - -var msg20849 = msg("18673", dup267); - -var msg20850 = msg("18674", dup265); - -var msg20851 = msg("18675", dup265); - -var msg20852 = msg("18676", dup197); - -var msg20853 = msg("18677", dup309); - -var msg20854 = msg("18678", dup267); - -var msg20855 = msg("18679", dup267); - -var msg20856 = msg("18680", dup202); - -var msg20857 = msg("18681", dup202); - -var msg20858 = msg("18682", dup202); - -var msg20859 = msg("18683", dup202); - -var msg20860 = msg("18684", dup202); - -var msg20861 = msg("18685", dup202); - -var msg20862 = msg("18686", dup192); - -var msg20863 = msg("18687", dup192); - -var msg20864 = msg("18688", dup192); - -var msg20865 = msg("18689", dup192); - -var msg20866 = msg("18690", dup192); - -var msg20867 = msg("18691", dup202); - -var msg20868 = msg("18700", dup202); - -var msg20869 = msg("18701", dup250); - -var msg20870 = msg("18702", dup250); - -var msg20871 = msg("18703", dup250); - -var msg20872 = msg("18704", dup250); - -var msg20873 = msg("18705", dup250); - -var msg20874 = msg("18706", dup202); - -var msg20875 = msg("18707", dup303); - -var msg20876 = msg("18708", dup263); - -var msg20877 = msg("18709", dup192); - -var msg20878 = msg("18710", dup197); - -var msg20879 = msg("18711", dup303); - -var msg20880 = msg("18712", dup263); - -var msg20881 = msg("18713", dup198); - -var msg20882 = msg("18714", dup198); - -var msg20883 = msg("18715", dup303); - -var msg20884 = msg("18716", dup192); - -var msg20885 = msg("18717", dup192); - -var msg20886 = msg("18718", dup303); - -var msg20887 = msg("18719", dup192); - -var msg20888 = msg("18720", dup192); - -var msg20889 = msg("18721", dup197); - -var msg20890 = msg("18722", dup197); - -var msg20891 = msg("18723", dup303); - -var msg20892 = msg("18724", dup303); - -var msg20893 = msg("18725", dup197); - -var msg20894 = msg("18726", dup197); - -var msg20895 = msg("18727", dup197); - -var msg20896 = msg("18728", dup197); - -var msg20897 = msg("18729", dup197); - -var msg20898 = msg("18730", dup197); - -var msg20899 = msg("18731", dup197); - -var msg20900 = msg("18732", dup197); - -var msg20901 = msg("18733", dup197); - -var msg20902 = msg("18734", dup197); - -var msg20903 = msg("18735", dup197); - -var msg20904 = msg("18736", dup197); - -var msg20905 = msg("18737", dup197); - -var msg20906 = msg("18738", dup197); - -var msg20907 = msg("18739", dup238); - -var msg20908 = msg("18740", dup267); - -var msg20909 = msg("18741", dup265); - -var msg20910 = msg("18742", dup267); - -var msg20911 = msg("18743", dup267); - -var msg20912 = msg("18744", dup197); - -var msg20913 = msg("18745", dup197); - -var msg20914 = msg("18746", dup197); - -var msg20915 = msg("18747", dup197); - -var msg20916 = msg("18748", dup197); - -var msg20917 = msg("18749", dup197); - -var msg20918 = msg("18750", dup201); - -var msg20919 = msg("18751", dup197); - -var msg20920 = msg("18752", dup197); - -var msg20921 = msg("18753", dup267); - -var msg20922 = msg("18754", dup267); - -var msg20923 = msg("18755", dup267); - -var msg20924 = msg("18756", dup267); - -var msg20925 = msg("18757", dup267); - -var msg20926 = msg("18758", dup287); - -var msg20927 = msg("18759", dup197); - -var msg20928 = msg("18760", dup197); - -var msg20929 = msg("18761", dup265); - -var msg20930 = msg("18762", dup269); - -var msg20931 = msg("18763", dup197); - -var msg20932 = msg("18764", dup201); - -var msg20933 = msg("18765", dup250); - -var msg20934 = msg("18766", dup267); - -var msg20935 = msg("18767", dup201); - -var msg20936 = msg("18768", dup197); - -var msg20937 = msg("18769", dup197); - -var msg20938 = msg("18770", dup267); - -var msg20939 = msg("18771", dup267); - -var msg20940 = msg("18772", dup267); - -var msg20941 = msg("18773", dup269); - -var msg20942 = msg("18774", dup269); - -var msg20943 = msg("18775", dup269); - -var msg20944 = msg("18776", dup267); - -var msg20945 = msg("18777", dup198); - -var msg20946 = msg("18778", dup197); - -var msg20947 = msg("18779", dup197); - -var msg20948 = msg("18780", dup197); - -var msg20949 = msg("18781", dup197); - -var msg20950 = msg("18782", dup269); - -var msg20951 = msg("18783", dup197); - -var msg20952 = msg("18784", dup197); - -var msg20953 = msg("18785", dup197); - -var msg20954 = msg("18786", dup197); - -var msg20955 = msg("18787", dup197); - -var msg20956 = msg("18788", dup197); - -var msg20957 = msg("18789", dup197); - -var msg20958 = msg("18790", dup201); - -var msg20959 = msg("18791", dup197); - -var msg20960 = msg("18792", dup267); - -var msg20961 = msg("18793", dup267); - -var msg20962 = msg("18794", dup265); - -var msg20963 = msg("18795", dup267); - -var msg20964 = msg("18796", dup197); - -var msg20965 = msg("18797", dup267); - -var msg20966 = msg("18798", dup198); - -var msg20967 = msg("18799", dup198); - -var msg20968 = msg("18800", dup202); - -var msg20969 = msg("18801", dup267); - -var msg20970 = msg("18802", dup265); - -var msg20971 = msg("18803", dup197); - -var msg20972 = msg("18804", dup267); - -var msg20973 = msg("18805", dup267); - -var msg20974 = msg("18806", dup267); - -var msg20975 = msg("18807", dup198); - -var msg20976 = msg("18808", dup201); - -var msg20977 = msg("18809", dup197); - -var msg20978 = msg("18810", dup265); - -var msg20979 = msg("18811", dup250); - -var msg20980 = msg("18812", dup250); - -var msg20981 = msg("18813", dup250); - -var msg20982 = msg("18814", dup250); - -var msg20983 = msg("18815", dup250); - -var msg20984 = msg("18816", dup250); - -var msg20985 = msg("18817", dup250); - -var msg20986 = msg("18818", dup250); - -var msg20987 = msg("18819", dup250); - -var msg20988 = msg("18820", dup250); - -var msg20989 = msg("18821", dup250); - -var msg20990 = msg("18822", dup250); - -var msg20991 = msg("18823", dup250); - -var msg20992 = msg("18824", dup250); - -var msg20993 = msg("18825", dup250); - -var msg20994 = msg("18826", dup250); - -var msg20995 = msg("18827", dup250); - -var msg20996 = msg("18828", dup250); - -var msg20997 = msg("18829", dup250); - -var msg20998 = msg("18830", dup250); - -var msg20999 = msg("18831", dup250); - -var msg21000 = msg("18832", dup250); - -var msg21001 = msg("18833", dup250); - -var msg21002 = msg("18834", dup250); - -var msg21003 = msg("18835", dup250); - -var msg21004 = msg("18836", dup250); - -var msg21005 = msg("18837", dup250); - -var msg21006 = msg("18838", dup250); - -var msg21007 = msg("18839", dup250); - -var msg21008 = msg("18840", dup250); - -var msg21009 = msg("18841", dup250); - -var msg21010 = msg("18842", dup250); - -var msg21011 = msg("18843", dup250); - -var msg21012 = msg("18844", dup250); - -var msg21013 = msg("18845", dup250); - -var msg21014 = msg("18846", dup250); - -var msg21015 = msg("18847", dup250); - -var msg21016 = msg("18848", dup250); - -var msg21017 = msg("18849", dup250); - -var msg21018 = msg("18850", dup250); - -var msg21019 = msg("18851", dup250); - -var msg21020 = msg("18852", dup250); - -var msg21021 = msg("18853", dup250); - -var msg21022 = msg("18854", dup250); - -var msg21023 = msg("18855", dup250); - -var msg21024 = msg("18856", dup250); - -var msg21025 = msg("18857", dup250); - -var msg21026 = msg("18858", dup250); - -var msg21027 = msg("18859", dup250); - -var msg21028 = msg("18860", dup250); - -var msg21029 = msg("18861", dup250); - -var msg21030 = msg("18862", dup250); - -var msg21031 = msg("18863", dup250); - -var msg21032 = msg("18864", dup250); - -var msg21033 = msg("18865", dup250); - -var msg21034 = msg("18866", dup250); - -var msg21035 = msg("18867", dup250); - -var msg21036 = msg("18868", dup250); - -var msg21037 = msg("18869", dup250); - -var msg21038 = msg("18870", dup250); - -var msg21039 = msg("18871", dup250); - -var msg21040 = msg("18872", dup250); - -var msg21041 = msg("18873", dup250); - -var msg21042 = msg("18874", dup250); - -var msg21043 = msg("18875", dup250); - -var msg21044 = msg("18876", dup250); - -var msg21045 = msg("18877", dup250); - -var msg21046 = msg("18878", dup250); - -var msg21047 = msg("18879", dup250); - -var msg21048 = msg("18880", dup250); - -var msg21049 = msg("18881", dup250); - -var msg21050 = msg("18882", dup250); - -var msg21051 = msg("18883", dup250); - -var msg21052 = msg("18884", dup250); - -var msg21053 = msg("18885", dup250); - -var msg21054 = msg("18886", dup250); - -var msg21055 = msg("18887", dup250); - -var msg21056 = msg("18888", dup250); - -var msg21057 = msg("18889", dup250); - -var msg21058 = msg("18890", dup250); - -var msg21059 = msg("18891", dup250); - -var msg21060 = msg("18892", dup250); - -var msg21061 = msg("18893", dup250); - -var msg21062 = msg("18894", dup250); - -var msg21063 = msg("18895", dup250); - -var msg21064 = msg("18896", dup250); - -var msg21065 = msg("18897", dup250); - -var msg21066 = msg("18898", dup250); - -var msg21067 = msg("18899", dup250); - -var msg21068 = msg("18900", dup269); - -var msg21069 = msg("18901", dup267); - -var msg21070 = msg("18902", dup267); - -var msg21071 = msg("18903", dup267); - -var msg21072 = msg("18904", dup265); - -var msg21073 = msg("18905", dup197); - -var msg21074 = msg("18906", dup197); - -var msg21075 = msg("18907", dup197); - -var msg21076 = msg("18908", dup197); - -var msg21077 = msg("18909", dup197); - -var msg21078 = msg("18910", dup197); - -var msg21079 = msg("18911", dup197); - -var msg21080 = msg("18912", dup197); - -var msg21081 = msg("18913", dup197); - -var msg21082 = msg("18914", dup197); - -var msg21083 = msg("18915", dup197); - -var msg21084 = msg("18916", dup197); - -var msg21085 = msg("18917", dup197); - -var msg21086 = msg("18918", dup197); - -var msg21087 = msg("18919", dup197); - -var msg21088 = msg("18920", dup197); - -var msg21089 = msg("18921", dup197); - -var msg21090 = msg("18922", dup197); - -var msg21091 = msg("18923", dup197); - -var msg21092 = msg("18924", dup197); - -var msg21093 = msg("18925", dup197); - -var msg21094 = msg("18926", dup201); - -var msg21095 = msg("18927", dup265); - -var msg21096 = msg("18928", dup197); - -var msg21097 = msg("18929", dup199); - -var msg21098 = msg("18930", dup267); - -var msg21099 = msg("18931", dup267); - -var msg21100 = msg("18932", dup265); - -var msg21101 = msg("18933", dup274); - -var msg21102 = msg("18934", dup197); - -var msg21103 = msg("18935", dup198); - -var msg21104 = msg("18936", dup269); - -var msg21105 = msg("18937", dup269); - -var msg21106 = msg("18938", dup269); - -var msg21107 = msg("18939", dup202); - -var msg21108 = msg("18940", dup269); - -var msg21109 = msg("18941", dup202); - -var msg21110 = msg("18942", dup269); - -var msg21111 = msg("18943", dup269); - -var msg21112 = msg("18944", dup269); - -var msg21113 = msg("18945", dup263); - -var msg21114 = msg("18946", dup192); - -var msg21115 = msg("18947", dup192); - -var msg21116 = msg("18948", dup267); - -var msg21117 = msg("18949", dup267); - -var msg21118 = msg("18950", dup267); - -var msg21119 = msg("18951", dup267); - -var msg21120 = msg("18952", dup267); - -var msg21121 = msg("18953", dup267); - -var msg21122 = msg("18954", dup267); - -var msg21123 = msg("18955", dup201); - -var msg21124 = msg("18956", dup201); - -var msg21125 = msg("18957", dup267); - -var msg21126 = msg("18958", dup267); - -var msg21127 = msg("18959", dup267); - -var msg21128 = msg("18960", dup267); - -var msg21129 = msg("18961", dup265); - -var msg21130 = msg("18962", dup265); - -var msg21131 = msg("18963", dup201); - -var msg21132 = msg("18964", dup267); - -var msg21133 = msg("18965", dup201); - -var msg21134 = msg("18966", dup267); - -var msg21135 = msg("18967", dup287); - -var msg21136 = msg("18968", dup201); - -var msg21137 = msg("18969", dup201); - -var msg21138 = msg("18970", dup202); - -var msg21139 = msg("18971", dup202); - -var msg21140 = msg("18972", dup199); - -var msg21141 = msg("18973", dup267); - -var msg21142 = msg("18974", dup265); - -var msg21143 = msg("18975", dup265); - -var msg21144 = msg("18976", dup202); - -var msg21145 = msg("18977", dup192); - -var msg21146 = msg("18978", dup192); - -var msg21147 = msg("18979", dup238); - -var msg21148 = msg("18980", dup303); - -var msg21149 = msg("18981", dup303); - -var msg21150 = msg("18982", dup303); - -var msg21151 = msg("18983", dup267); - -var msg21152 = msg("18984", dup269); - -var msg21153 = msg("18985", dup265); - -var msg21154 = msg("18986", dup267); - -var msg21155 = msg("18987", dup267); - -var msg21156 = msg("18988", dup267); - -var msg21157 = msg("18989", dup267); - -var msg21158 = msg("18990", dup267); - -var msg21159 = msg("18991", dup267); - -var msg21160 = msg("18992", dup267); - -var msg21161 = msg("18993", dup267); - -var msg21162 = msg("18994", dup197); - -var msg21163 = msg("18995", dup202); - -var msg21164 = msg("18996", dup202); - -var msg21165 = msg("18997", dup198); - -var msg21166 = msg("18998", dup197); - -var msg21167 = msg("18999", dup197); - -var msg21168 = msg("19000", dup240); - -var msg21169 = msg("19001", dup240); - -var msg21170 = msg("19002", dup197); - -var msg21171 = msg("19003", dup202); - -var msg21172 = msg("19004", dup202); - -var msg21173 = msg("19005", dup267); - -var msg21174 = msg("19006", dup197); - -var msg21175 = msg("19007", dup197); - -var msg21176 = msg("19008", dup267); - -var msg21177 = msg("19009", dup267); - -var msg21178 = msg("19010", dup267); - -var msg21179 = msg("19011", dup197); - -var msg21180 = msg("19012", dup197); - -var msg21181 = msg("19013", dup295); - -var msg21182 = msg("19014", dup295); - -var msg21183 = msg("19015", dup312); - -var msg21184 = msg("19016", dup192); - -var msg21185 = msg("19017", dup192); - -var msg21186 = msg("19018", dup192); - -var msg21187 = msg("19019", dup192); - -var msg21188 = msg("19020", dup267); - -var msg21189 = msg("19021", dup192); - -var msg21190 = msg("19022", dup192); - -var msg21191 = msg("19023", dup192); - -var msg21192 = msg("19024", dup192); - -var msg21193 = msg("19025", dup192); - -var msg21194 = msg("19026", dup303); - -var msg21195 = msg("19027", dup202); - -var msg21196 = msg("19028", dup192); - -var msg21197 = msg("19029", dup192); - -var msg21198 = msg("19030", dup192); - -var msg21199 = msg("19031", dup202); - -var msg21200 = msg("19032", dup192); - -var msg21201 = msg("19033", dup192); - -var msg21202 = msg("19034", dup192); - -var msg21203 = msg("19035", dup192); - -var msg21204 = msg("19036", dup192); - -var msg21205 = msg("19037", dup192); - -var msg21206 = msg("19038", dup192); - -var msg21207 = msg("19039", dup192); - -var msg21208 = msg("19040", dup192); - -var msg21209 = msg("19041", dup192); - -var msg21210 = msg("19042", dup192); - -var msg21211 = msg("19043", dup303); - -var msg21212 = msg("19044", dup303); - -var msg21213 = msg("19045", dup192); - -var msg21214 = msg("19046", dup303); - -var msg21215 = msg("19047", dup303); - -var msg21216 = msg("19048", dup192); - -var msg21217 = msg("19049", dup192); - -var msg21218 = msg("19050", dup192); - -var msg21219 = msg("19051", dup192); - -var msg21220 = msg("19052", dup265); - -var msg21221 = msg("19053", dup238); - -var msg21222 = msg("19054", dup192); - -var msg21223 = msg("19055", dup192); - -var msg21224 = msg("19056", dup192); - -var msg21225 = msg("19057", dup192); - -var msg21226 = msg("19058", dup238); - -var msg21227 = msg("19059", dup303); - -var msg21228 = msg("19060", dup192); - -var msg21229 = msg("19061", dup263); - -var msg21230 = msg("19062", dup192); - -var msg21231 = msg("19063", dup197); - -var msg21232 = msg("19064", dup267); - -var msg21233 = msg("19065", dup202); - -var msg21234 = msg("19066", dup202); - -var msg21235 = msg("19067", dup202); - -var msg21236 = msg("19068", dup202); - -var msg21237 = msg("19069", dup202); - -var msg21238 = msg("19070", dup202); - -var msg21239 = msg("19071", dup267); - -var msg21240 = msg("19072", dup197); - -var msg21241 = msg("19073", dup198); - -var msg21242 = msg("19074", dup265); - -var msg21243 = msg("19075", dup202); - -var msg21244 = msg("19076", dup202); - -var msg21245 = msg("19077", dup202); - -var msg21246 = msg("19078", dup267); - -var msg21247 = msg("19079", dup267); - -var msg21248 = msg("19080", dup267); - -var msg21249 = msg("19081", dup267); - -var msg21250 = msg("19082", dup267); - -var msg21251 = msg("19083", dup267); - -var msg21252 = msg("19084", dup267); - -var msg21253 = msg("19085", dup265); - -var msg21254 = msg("19086", dup202); - -var msg21255 = msg("19087", dup197); - -var msg21256 = msg("19088", dup197); - -var msg21257 = msg("19089", dup197); - -var msg21258 = msg("19090", dup197); - -var msg21259 = msg("19091", dup202); - -var msg21260 = msg("19092", dup202); - -var msg21261 = msg("19093", dup240); - -var msg21262 = msg("19094", dup240); - -var msg21263 = msg("19095", dup267); - -var msg21264 = msg("19096", dup267); - -var msg21265 = msg("19097", dup267); - -var msg21266 = msg("19098", dup202); - -var msg21267 = msg("19099", dup267); - -var msg21268 = msg("19100", dup197); - -var msg21269 = msg("19101", dup198); - -var msg21270 = msg("19102", dup265); - -var msg21271 = msg("19103", dup265); - -var msg21272 = msg("19104", dup197); - -var msg21273 = msg("19105", dup197); - -var msg21274 = msg("19106", dup303); - -var msg21275 = msg("19107", dup267); - -var msg21276 = msg("19108", dup265); - -var msg21277 = msg("19109", dup265); - -var msg21278 = msg("19110", dup265); - -var msg21279 = msg("19111", dup198); - -var msg21280 = msg("19112", dup197); - -var msg21281 = msg("19113", dup197); - -var msg21282 = msg("19114", dup197); - -var msg21283 = msg("19115", dup197); - -var msg21284 = msg("19116", dup267); - -var msg21285 = msg("19117", dup197); - -var msg21286 = msg("19118", dup201); - -var msg21287 = msg("19119", dup267); - -var msg21288 = msg("19120", dup197); - -var msg21289 = msg("19121", dup197); - -var msg21290 = msg("19122", dup312); - -var msg21291 = msg("19123", dup202); - -var msg21292 = msg("19124", dup267); - -var msg21293 = msg("19125", dup197); - -var msg21294 = msg("19126", dup197); - -var msg21295 = msg("19127", dup197); - -var msg21296 = msg("19128", dup202); - -var msg21297 = msg("19129", dup202); - -var msg21298 = msg("19130", dup267); - -var msg21299 = msg("19131", dup197); - -var msg21300 = msg("19132", dup197); - -var msg21301 = msg("19133", dup202); - -var msg21302 = msg("19134", dup267); - -var msg21303 = msg("19135", dup192); - -var msg21304 = msg("19136", dup201); - -var msg21305 = msg("19137", dup197); - -var msg21306 = msg("19138", dup197); - -var msg21307 = msg("19139", dup197); - -var msg21308 = msg("19140", dup197); - -var msg21309 = msg("19141", dup267); - -var msg21310 = msg("19142", dup260); - -var msg21311 = msg("19143", dup267); - -var msg21312 = msg("19144", dup267); - -var msg21313 = msg("19145", dup267); - -var msg21314 = msg("19146", dup267); - -var msg21315 = msg("19147", dup267); - -var msg21316 = msg("19148", dup267); - -var msg21317 = msg("19149", dup267); - -var msg21318 = msg("19150", dup267); - -var msg21319 = msg("19151", dup265); - -var msg21320 = msg("19152", dup265); - -var msg21321 = msg("19153", dup267); - -var msg21322 = msg("19154", dup202); - -var msg21323 = msg("19155", dup197); - -var msg21324 = msg("19156", dup197); - -var msg21325 = msg("19157", dup265); - -var msg21326 = msg("19158", dup202); - -var msg21327 = msg("19159", dup198); - -var msg21328 = msg("19160", dup197); - -var msg21329 = msg("19161", dup197); - -var msg21330 = msg("19162", dup202); - -var msg21331 = msg("19163", dup202); - -var msg21332 = msg("19164", dup192); - -var msg21333 = msg("19165", dup269); - -var msg21334 = msg("19166", dup202); - -var msg21335 = msg("19167", dup197); - -var msg21336 = msg("19168", dup197); - -var msg21337 = msg("19169", dup267); - -var msg21338 = msg("19170", dup267); - -var msg21339 = msg("19171", dup267); - -var msg21340 = msg("19172", dup276); - -var msg21341 = msg("19173", dup255); - -var msg21342 = msg("19174", dup267); - -var msg21343 = msg("19175", dup269); - -var msg21344 = msg("19176", dup265); - -var msg21345 = msg("19177", dup265); - -var msg21346 = msg("19178", dup202); - -var msg21347 = msg("19179", dup202); - -var msg21348 = msg("19180", dup267); - -var msg21349 = msg("19181", dup267); - -var msg21350 = msg("19182", dup197); - -var msg21351 = msg("19183", dup197); - -var msg21352 = msg("19184", dup267); - -var msg21353 = msg("19185", dup267); - -var msg21354 = msg("19186", dup265); - -var msg21355 = msg("19187", dup267); - -var msg21356 = msg("19188", dup267); - -var msg21357 = msg("19189", dup197); - -var msg21358 = msg("19190", dup246); - -var msg21359 = msg("19191", dup276); - -var msg21360 = msg("19192", dup198); - -var msg21361 = msg("19193", dup265); - -var msg21362 = msg("19194", dup265); - -var msg21363 = msg("19195", dup202); - -var msg21364 = msg("19196", dup267); - -var msg21365 = msg("19197", dup265); - -var msg21366 = msg("19198", dup265); - -var msg21367 = msg("19199", dup276); - -var msg21368 = msg("19200", dup267); - -var msg21369 = msg("19201", dup260); - -var msg21370 = msg("19202", dup260); - -var msg21371 = msg("19203", dup267); - -var msg21372 = msg("19204", dup267); - -var msg21373 = msg("19205", dup198); - -var msg21374 = msg("19206", dup197); - -var msg21375 = msg("19207", dup197); - -var msg21376 = msg("19208", dup197); - -var msg21377 = msg("19209", dup197); - -var msg21378 = msg("19210", dup197); - -var msg21379 = msg("19211", dup202); - -var msg21380 = msg("19212", dup197); - -var msg21381 = msg("19213", dup197); - -var msg21382 = msg("19214", dup265); - -var msg21383 = msg("19215", dup202); - -var msg21384 = msg("19216", dup267); - -var msg21385 = msg("19217", dup267); - -var msg21386 = msg("19218", dup265); - -var msg21387 = msg("19219", dup267); - -var msg21388 = msg("19220", dup267); - -var msg21389 = msg("19221", dup197); - -var msg21390 = msg("19222", dup267); - -var msg21391 = msg("19223", dup267); - -var msg21392 = msg("19224", dup202); - -var msg21393 = msg("19225", dup267); - -var msg21394 = msg("19226", dup197); - -var msg21395 = msg("19227", dup197); - -var msg21396 = msg("19228", dup199); - -var msg21397 = msg("19229", dup267); - -var msg21398 = msg("19230", dup267); - -var msg21399 = msg("19231", dup267); - -var msg21400 = msg("19232", dup267); - -var msg21401 = msg("19233", dup265); - -var msg21402 = msg("19234", dup265); - -var msg21403 = msg("19235", dup267); - -var msg21404 = msg("19236", dup267); - -var msg21405 = msg("19237", dup267); - -var msg21406 = msg("19238", dup267); - -var msg21407 = msg("19239", dup265); - -var msg21408 = msg("19240", dup265); - -var msg21409 = msg("19241", dup202); - -var msg21410 = msg("19242", dup202); - -var msg21411 = msg("19243", dup267); - -var msg21412 = msg("19244", dup265); - -var msg21413 = msg("19245", dup265); - -var msg21414 = msg("19246", dup265); - -var msg21415 = msg("19247", dup267); - -var msg21416 = msg("19248", dup197); - -var msg21417 = msg("19249", dup267); - -var msg21418 = msg("19250", dup197); - -var msg21419 = msg("19251", dup267); - -var msg21420 = msg("19252", dup265); - -var msg21421 = msg("19253", dup265); - -var msg21422 = msg("19254", dup201); - -var msg21423 = msg("19255", dup201); - -var msg21424 = msg("19256", dup269); - -var msg21425 = msg("19257", dup267); - -var msg21426 = msg("19258", dup267); - -var msg21427 = msg("19259", dup267); - -var msg21428 = msg("19260", dup202); - -var msg21429 = msg("19261", dup267); - -var msg21430 = msg("19262", dup267); - -var msg21431 = msg("19263", dup267); - -var msg21432 = msg("19264", dup267); - -var msg21433 = msg("19265", dup267); - -var msg21434 = msg("19266", dup267); - -var msg21435 = msg("19267", dup199); - -var msg21436 = msg("19268", dup202); - -var msg21437 = msg("19269", dup250); - -var msg21438 = msg("19270", dup250); - -var msg21439 = msg("19271", dup250); - -var msg21440 = msg("19272", dup250); - -var msg21441 = msg("19273", dup250); - -var msg21442 = msg("19274", dup250); - -var msg21443 = msg("19275", dup298); - -var msg21444 = msg("19276", dup298); - -var msg21445 = msg("19277", dup298); - -var msg21446 = msg("19278", dup298); - -var msg21447 = msg("19279", dup298); - -var msg21448 = msg("19280", dup298); - -var msg21449 = msg("19281", dup199); - -var msg21450 = msg("19282", dup199); - -var msg21451 = msg("19283", dup199); - -var msg21452 = msg("19284", dup199); - -var msg21453 = msg("19285", dup199); - -var msg21454 = msg("19286", dup199); - -var msg21455 = msg("19287", dup199); - -var msg21456 = msg("19288", dup199); - -var msg21457 = msg("19289", dup265); - -var msg21458 = msg("19290", dup276); - -var msg21459 = msg("19291", dup276); - -var msg21460 = msg("19292", dup202); - -var msg21461 = msg("19293", dup267); - -var msg21462 = msg("19294", dup267); - -var msg21463 = msg("19295", dup267); - -var msg21464 = msg("19296", dup267); - -var msg21465 = msg("19297", dup201); - -var msg21466 = msg("19298", dup201); - -var msg21467 = msg("19299", dup267); - -var msg21468 = msg("19300", dup267); - -var msg21469 = msg("19301", dup287); - -var msg21470 = msg("19302", dup287); - -var msg21471 = msg("19303", dup267); - -var msg21472 = msg("19304", dup265); - -var msg21473 = msg("19305", dup265); - -var msg21474 = msg("19306", dup267); - -var msg21475 = msg("19307", dup265); - -var msg21476 = msg("19308", dup197); - -var msg21477 = msg("19309", dup303); - -var msg21478 = msg("19310", dup192); - -var msg21479 = msg("19311", dup303); - -var msg21480 = msg("19312", dup192); - -var msg21481 = msg("19313", dup198); - -var msg21482 = msg("19314", dup276); - -var msg21483 = msg("19315", dup267); - -var msg21484 = msg("19316", dup267); - -var msg21485 = msg("19317", dup197); - -var msg21486 = msg("19318", dup267); - -var msg21487 = msg("19319", dup267); - -var msg21488 = msg("19320", dup267); - -var msg21489 = msg("19321", dup197); - -var msg21490 = msg("19322", dup202); - -var msg21491 = msg("19323", dup201); - -var msg21492 = msg("19324", dup303); - -var msg21493 = msg("19325", dup303); - -var msg21494 = msg("19326", dup192); - -var msg21495 = msg("19327", dup192); - -var msg21496 = msg("19328", dup192); - -var msg21497 = msg("19329", dup192); - -var msg21498 = msg("19330", dup192); - -var msg21499 = msg("19331", dup192); - -var msg21500 = msg("19332", dup192); - -var msg21501 = msg("19333", dup197); - -var msg21502 = msg("19334", dup197); - -var msg21503 = msg("19335", dup297); - -var msg21504 = msg("19336", dup297); - -var msg21505 = msg("19337", dup202); - -var msg21506 = msg("19338", dup202); - -var msg21507 = msg("19339", dup192); - -var msg21508 = msg("19340", dup263); - -var msg21509 = msg("19341", dup238); - -var msg21510 = msg("19342", dup263); - -var msg21511 = msg("19343", dup263); - -var msg21512 = msg("19344", dup263); - -var msg21513 = msg("19345", dup192); - -var msg21514 = msg("19346", dup192); - -var msg21515 = msg("19347", dup192); - -var msg21516 = msg("19348", dup192); - -var msg21517 = msg("19349", dup192); - -var msg21518 = msg("19350", dup197); - -var msg21519 = msg("19351", dup192); - -var msg21520 = msg("19352", dup192); - -var msg21521 = msg("19353", dup192); - -var msg21522 = msg("19354", dup192); - -var msg21523 = msg("19355", dup192); - -var msg21524 = msg("19356", dup202); - -var msg21525 = msg("19357", dup238); - -var msg21526 = msg("19358", dup202); - -var msg21527 = msg("19359", dup192); - -var msg21528 = msg("19360", dup192); - -var msg21529 = msg("19361", dup192); - -var msg21530 = msg("19362", dup192); - -var msg21531 = msg("19363", dup192); - -var msg21532 = msg("19364", dup202); - -var msg21533 = msg("19365", dup202); - -var msg21534 = msg("19366", dup192); - -var msg21535 = msg("19367", dup238); - -var msg21536 = msg("19368", dup192); - -var msg21537 = msg("19369", dup192); - -var msg21538 = msg("19370", dup192); - -var msg21539 = msg("19371", dup192); - -var msg21540 = msg("19372", dup269); - -var msg21541 = msg("19373", dup201); - -var msg21542 = msg("19374", dup201); - -var msg21543 = msg("19375", dup287); - -var msg21544 = msg("19376", dup287); - -var msg21545 = msg("19377", dup202); - -var msg21546 = msg("19378", dup202); - -var msg21547 = msg("19379", dup201); - -var msg21548 = msg("19380", dup201); - -var msg21549 = msg("19381", dup287); - -var msg21550 = msg("19382", dup287); - -var msg21551 = msg("19383", dup287); - -var msg21552 = msg("19384", dup287); - -var msg21553 = msg("19385", dup201); - -var msg21554 = msg("19386", dup201); - -var msg21555 = msg("19387", dup287); - -var msg21556 = msg("19388", dup287); - -var msg21557 = msg("19389", dup197); - -var msg21558 = msg("19390", dup197); - -var msg21559 = msg("19391", dup303); - -var msg21560 = msg("19392", dup303); - -var msg21561 = msg("19393", dup303); - -var msg21562 = msg("19394", dup192); - -var msg21563 = msg("19395", dup192); - -var msg21564 = msg("19396", dup192); - -var msg21565 = msg("19397", dup192); - -var msg21566 = msg("19398", dup192); - -var msg21567 = msg("19399", dup238); - -var msg21568 = msg("19400", dup238); - -var msg21569 = msg("19401", dup238); - -var msg21570 = msg("19402", dup238); - -var msg21571 = msg("19403", dup267); - -var msg21572 = msg("19404", dup192); - -var msg21573 = msg("19405", dup267); - -var msg21574 = msg("19406", dup267); - -var msg21575 = msg("19407", dup267); - -var msg21576 = msg("19408", dup267); - -var msg21577 = msg("19409", dup202); - -var msg21578 = msg("19410", dup202); - -var msg21579 = msg("19411", dup269); - -var msg21580 = msg("19412", dup267); - -var msg21581 = msg("19413", dup197); - -var msg21582 = msg("19414", dup197); - -var msg21583 = msg("19415", dup227); - -var msg21584 = msg("19416", dup265); - -var msg21585 = msg("19417", dup265); - -var msg21586 = msg("19418", dup265); - -var msg21587 = msg("19419", dup265); - -var msg21588 = msg("19420", dup197); - -var msg21589 = msg("19421", dup197); - -var msg21590 = msg("19422", dup265); - -var msg21591 = msg("19423", dup265); - -var msg21592 = msg("19424", dup265); - -var msg21593 = msg("19425", dup265); - -var msg21594 = msg("19426", dup192); - -var msg21595 = msg("19427", dup192); - -var msg21596 = msg("19428", dup192); - -var msg21597 = msg("19429", dup198); - -var msg21598 = msg("19430", dup265); - -var msg21599 = msg("19431", dup197); - -var msg21600 = msg("19432", dup197); - -var msg21601 = msg("19433", dup192); - -var msg21602 = msg("19434", dup269); - -var msg21603 = msg("19435", dup192); - -var msg21604 = msg("19436", dup267); - -var msg21605 = msg("19437", dup260); - -var msg21606 = msg("19438", dup260); - -var msg21607 = msg("19439", dup260); - -var msg21608 = msg("19440", dup260); - -var msg21609 = msg("19441", dup199); - -var msg21610 = msg("19442", dup267); - -var msg21611 = msg("19443", dup267); - -var msg21612 = msg("19444", dup265); - -var msg21613 = msg("19445", dup265); - -var msg21614 = msg("19446", dup265); - -var msg21615 = msg("19447", dup265); - -var msg21616 = msg("19448", dup265); - -var msg21617 = msg("19449", dup265); - -var msg21618 = msg("19450", dup265); - -var msg21619 = msg("19451", dup199); - -var msg21620 = msg("19452", dup199); - -var msg21621 = msg("19453", dup192); - -var msg21622 = msg("19454", dup192); - -var msg21623 = msg("19455", dup238); - -var msg21624 = msg("19456", dup192); - -var msg21625 = msg("19457", dup192); - -var msg21626 = msg("19458", dup197); - -var msg21627 = msg("19459", dup197); - -var msg21628 = msg("19460", dup265); - -var msg21629 = msg("19461", dup265); - -var msg21630 = msg("19462", dup267); - -var msg21631 = msg("19463", dup265); - -var msg21632 = msg("19464", dup197); - -var msg21633 = msg("19465", dup276); - -var msg21634 = msg("19466", dup267); - -var msg21635 = msg("19467", dup202); - -var msg21636 = msg("19468", dup267); - -var msg21637 = msg("19469", dup202); - -var msg21638 = msg("19470", dup263); - -var msg21639 = msg("19471", dup317); - -var msg21640 = msg("19472", dup317); - -var msg21641 = msg("19473", dup317); - -var msg21642 = msg("19474", dup202); - -var msg21643 = msg("19475", dup202); - -var msg21644 = msg("19476", dup267); - -var msg21645 = msg("19477", dup192); - -var msg21646 = msg("19478", dup238); - -var msg21647 = msg("19479", dup238); - -var msg21648 = msg("19480", dup198); - -var msg21649 = msg("19481", dup238); - -var msg21650 = msg("19482", dup269); - -var msg21651 = msg("19483", dup192); - -var msg21652 = msg("19484", dup192); - -var msg21653 = msg("19485", dup303); - -var msg21654 = msg("19486", dup303); - -var msg21655 = msg("19487", dup192); - -var msg21656 = msg("19488", dup238); - -var msg21657 = msg("19489", dup192); - -var msg21658 = msg("19490", dup192); - -var msg21659 = msg("19491", dup192); - -var msg21660 = msg("19492", dup192); - -var msg21661 = msg("19493", dup269); - -var msg21662 = msg("19494", dup192); - -var msg21663 = msg("19495", dup238); - -var msg21664 = msg("19496", dup263); - -var msg21665 = msg("19497", dup263); - -var msg21666 = msg("19498", dup263); - -var msg21667 = msg("19499", dup263); - -var msg21668 = msg("19500", dup263); - -var msg21669 = msg("19501", dup263); - -var msg21670 = msg("19502", dup263); - -var msg21671 = msg("19503", dup263); - -var msg21672 = msg("19504", dup263); - -var msg21673 = msg("19505", dup263); - -var msg21674 = msg("19506", dup263); - -var msg21675 = msg("19507", dup263); - -var msg21676 = msg("19508", dup263); - -var msg21677 = msg("19509", dup263); - -var msg21678 = msg("19510", dup263); - -var msg21679 = msg("19511", dup263); - -var msg21680 = msg("19512", dup263); - -var msg21681 = msg("19513", dup263); - -var msg21682 = msg("19514", dup263); - -var msg21683 = msg("19515", dup263); - -var msg21684 = msg("19516", dup263); - -var msg21685 = msg("19517", dup263); - -var msg21686 = msg("19518", dup263); - -var msg21687 = msg("19519", dup263); - -var msg21688 = msg("19520", dup263); - -var msg21689 = msg("19521", dup263); - -var msg21690 = msg("19522", dup263); - -var msg21691 = msg("19523", dup263); - -var msg21692 = msg("19524", dup263); - -var msg21693 = msg("19525", dup263); - -var msg21694 = msg("19526", dup263); - -var msg21695 = msg("19527", dup263); - -var msg21696 = msg("19528", dup263); - -var msg21697 = msg("19529", dup263); - -var msg21698 = msg("19530", dup263); - -var msg21699 = msg("19531", dup263); - -var msg21700 = msg("19532", dup263); - -var msg21701 = msg("19533", dup263); - -var msg21702 = msg("19534", dup263); - -var msg21703 = msg("19535", dup263); - -var msg21704 = msg("19536", dup263); - -var msg21705 = msg("19537", dup263); - -var msg21706 = msg("19538", dup263); - -var msg21707 = msg("19539", dup263); - -var msg21708 = msg("19540", dup263); - -var msg21709 = msg("19541", dup263); - -var msg21710 = msg("19542", dup263); - -var msg21711 = msg("19543", dup263); - -var msg21712 = msg("19544", dup263); - -var msg21713 = msg("19545", dup263); - -var msg21714 = msg("19546", dup263); - -var msg21715 = msg("19547", dup263); - -var msg21716 = msg("19548", dup263); - -var msg21717 = msg("19549", dup263); - -var msg21718 = msg("19550", dup263); - -var msg21719 = msg("19551", dup202); - -var msg21720 = msg("19552", dup267); - -var msg21721 = msg("19553", dup267); - -var msg21722 = msg("19554", dup263); - -var msg21723 = msg("19555", dup192); - -var msg21724 = msg("19556", dup192); - -var msg21725 = msg("19557", dup192); - -var msg21726 = msg("19558", dup267); - -var msg21727 = msg("19559", dup192); - -var msg21728 = msg("19560", dup197); - -var msg21729 = msg("19561", dup265); - -var msg21730 = msg("19562", dup265); - -var msg21731 = msg("19563", dup265); - -var msg21732 = msg("19564", dup265); - -var msg21733 = msg("19565", dup265); - -var msg21734 = msg("19566", dup303); - -var msg21735 = msg("19567", dup303); - -var msg21736 = msg("19568", dup192); - -var msg21737 = msg("19569", dup192); - -var msg21738 = msg("19570", dup263); - -var msg21739 = msg("19571", dup263); - -var msg21740 = msg("19572", dup192); - -var msg21741 = msg("19573", dup290); - -var msg21742 = msg("19574", dup290); - -var msg21743 = msg("19575", dup290); - -var msg21744 = msg("19576", dup263); - -var msg21745 = msg("19577", dup205); - -var msg21746 = msg("19578", dup303); - -var msg21747 = msg("19579", dup192); - -var msg21748 = msg("19580", dup238); - -var msg21749 = msg("19581", dup192); - -var msg21750 = msg("19582", dup192); - -var msg21751 = msg("19583", dup192); - -var msg21752 = msg("19584", dup238); - -var msg21753 = msg("19585", dup238); - -var msg21754 = msg("19586", dup192); - -var msg21755 = msg("19587", dup192); - -var msg21756 = msg("19588", dup192); - -var msg21757 = msg("19589", dup269); - -var msg21758 = msg("19590", dup192); - -var msg21759 = msg("19591", dup192); - -var msg21760 = msg("19592", dup192); - -var msg21761 = msg("19593", dup238); - -var msg21762 = msg("19594", dup303); - -var msg21763 = msg("19595", dup269); - -var msg21764 = msg("19596", dup192); - -var msg21765 = msg("19597", dup192); - -var msg21766 = msg("19598", dup303); - -var msg21767 = msg("19599", dup260); - -var msg21768 = msg("19600", dup260); - -var msg21769 = msg("19601", dup276); - -var msg21770 = msg("19602", dup276); - -var msg21771 = msg("19603", dup267); - -var msg21772 = msg("19604", dup267); - -var msg21773 = msg("19605", dup267); - -var msg21774 = msg("19606", dup267); - -var msg21775 = msg("19607", dup267); - -var msg21776 = msg("19608", dup192); - -var msg21777 = msg("19609", dup267); - -var msg21778 = msg("19610", dup265); - -var msg21779 = msg("19611", dup269); - -var msg21780 = msg("19612", dup192); - -var msg21781 = msg("19613", dup192); - -var msg21782 = msg("19614", dup192); - -var msg21783 = msg("19615", dup192); - -var msg21784 = msg("19616", dup192); - -var msg21785 = msg("19617", dup276); - -var msg21786 = msg("19618", dup276); - -var msg21787 = msg("19619", dup267); - -var msg21788 = msg("19620", dup267); - -var msg21789 = msg("19621", dup197); - -var msg21790 = msg("19622", dup269); - -var msg21791 = msg("19623", dup269); - -var msg21792 = msg("19624", dup269); - -var msg21793 = msg("19625", dup269); - -var msg21794 = msg("19626", dup269); - -var msg21795 = msg("19627", dup269); - -var msg21796 = msg("19628", dup269); - -var msg21797 = msg("19629", dup269); - -var msg21798 = msg("19630", dup269); - -var msg21799 = msg("19631", dup269); - -var msg21800 = msg("19632", dup269); - -var msg21801 = msg("19633", dup269); - -var msg21802 = msg("19634", dup269); - -var msg21803 = msg("19635", dup269); - -var msg21804 = msg("19636", dup269); - -var msg21805 = msg("19637", dup269); - -var msg21806 = msg("19638", dup269); - -var msg21807 = msg("19639", dup263); - -var msg21808 = msg("19640", dup263); - -var msg21809 = msg("19641", dup263); - -var msg21810 = msg("19642", dup263); - -var msg21811 = msg("19643", dup263); - -var msg21812 = msg("19644", dup263); - -var msg21813 = msg("19645", dup201); - -var msg21814 = msg("19646", dup267); - -var msg21815 = msg("19647", dup267); - -var msg21816 = msg("19648", dup267); - -var msg21817 = msg("19649", dup197); - -var msg21818 = msg("19650", dup265); - -var msg21819 = msg("19651", dup265); - -var msg21820 = msg("19652", dup202); - -var msg21821 = msg("19653", dup267); - -var msg21822 = msg("19654", dup192); - -var msg21823 = msg("19655", dup192); - -var msg21824 = msg("19656", dup192); - -var msg21825 = msg("19657", dup202); - -var msg21826 = msg("19658", dup192); - -var msg21827 = msg("19659", dup192); - -var msg21828 = msg("19660", dup192); - -var msg21829 = msg("19661", dup267); - -var msg21830 = msg("19662", dup263); - -var msg21831 = msg("19663", dup263); - -var msg21832 = msg("19664", dup263); - -var msg21833 = msg("19665", dup201); - -var msg21834 = msg("19666", dup267); - -var msg21835 = msg("19667", dup267); - -var msg21836 = msg("19668", dup276); - -var msg21837 = msg("19669", dup248); - -var msg21838 = msg("19670", dup278); - -var msg21839 = msg("19671", dup267); - -var msg21840 = msg("19672", dup267); - -var msg21841 = msg("19673", dup276); - -var msg21842 = msg("19674", dup267); - -var msg21843 = msg("19675", dup267); - -var msg21844 = msg("19676", dup267); - -var msg21845 = msg("19677", dup267); - -var msg21846 = msg("19678", dup267); - -var msg21847 = msg("19679", dup267); - -var msg21848 = msg("19680", dup267); - -var msg21849 = msg("19681", dup265); - -var msg21850 = msg("19682", dup201); - -var msg21851 = msg("19683", dup201); - -var msg21852 = msg("19684", dup267); - -var msg21853 = msg("19685", dup197); - -var msg21854 = msg("19686", dup267); - -var msg21855 = msg("19687", dup265); - -var msg21856 = msg("19688", dup201); - -var msg21857 = msg("19689", dup287); - -var msg21858 = msg("19690", dup267); - -var msg21859 = msg("19691", dup201); - -var msg21860 = msg("19692", dup265); - -var msg21861 = msg("19693", dup197); - -var msg21862 = msg("19694", dup265); - -var msg21863 = msg("19695", dup192); - -var msg21864 = msg("19696", dup192); - -var msg21865 = msg("19697", dup192); - -var msg21866 = msg("19698", dup192); - -var msg21867 = msg("19699", dup192); - -var msg21868 = msg("19700", dup192); - -var msg21869 = msg("19701", dup192); - -var msg21870 = msg("19702", dup192); - -var msg21871 = msg("19703", dup238); - -var msg21872 = msg("19704", dup192); - -var msg21873 = msg("19705", dup192); - -var msg21874 = msg("19706", dup192); - -var msg21875 = msg("19707", dup197); - -var msg21876 = msg("19708", dup267); - -var msg21877 = msg("19709", dup198); - -var msg21878 = msg("19710", dup267); - -var msg21879 = msg("19711", dup192); - -var msg21880 = msg("19712", dup192); - -var msg21881 = msg("19713", dup197); - -var msg21882 = msg("19714", dup197); - -var msg21883 = msg("19715", dup192); - -var msg21884 = msg("19716", dup192); - -var msg21885 = msg("19717", dup263); - -var msg21886 = msg("19718", dup192); - -var msg21887 = msg("19719", dup238); - -var msg21888 = msg("19720", dup192); - -var msg21889 = msg("19721", dup192); - -var msg21890 = msg("19722", dup192); - -var msg21891 = msg("19723", dup202); - -var msg21892 = msg("19724", dup192); - -var msg21893 = msg("19725", dup202); - -var msg21894 = msg("19726", dup202); - -var msg21895 = msg("19727", dup192); - -var msg21896 = msg("19728", dup202); - -var msg21897 = msg("19729", dup202); - -var msg21898 = msg("19730", dup202); - -var msg21899 = msg("19731", dup202); - -var msg21900 = msg("19732", dup202); - -var msg21901 = msg("19733", dup192); - -var msg21902 = msg("19734", dup263); - -var msg21903 = msg("19735", dup202); - -var msg21904 = msg("19736", dup202); - -var msg21905 = msg("19737", dup202); - -var msg21906 = msg("19738", dup263); - -var msg21907 = msg("19739", dup192); - -var msg21908 = msg("19740", dup238); - -var msg21909 = msg("19741", dup303); - -var msg21910 = msg("19742", dup192); - -var msg21911 = msg("19743", dup192); - -var msg21912 = msg("19744", dup238); - -var msg21913 = msg("19745", dup192); - -var msg21914 = msg("19746", dup192); - -var msg21915 = msg("19747", dup192); - -var msg21916 = msg("19748", dup192); - -var msg21917 = msg("19749", dup192); - -var msg21918 = msg("19750", dup192); - -var msg21919 = msg("19751", dup238); - -var msg21920 = msg("19752", dup192); - -var msg21921 = msg("19753", dup192); - -var msg21922 = msg("19754", dup192); - -var msg21923 = msg("19755", dup192); - -var msg21924 = msg("19756", dup269); - -var msg21925 = msg("19757", dup192); - -var msg21926 = msg("19758", dup192); - -var msg21927 = msg("19759", dup192); - -var msg21928 = msg("19760", dup192); - -var msg21929 = msg("19761", dup227); - -var msg21930 = msg("19762", dup192); - -var msg21931 = msg("19763", dup192); - -var msg21932 = msg("19764", dup192); - -var msg21933 = msg("19765", dup192); - -var msg21934 = msg("19766", dup238); - -var msg21935 = msg("19767", dup192); - -var msg21936 = msg("19768", dup263); - -var msg21937 = msg("19769", dup198); - -var msg21938 = msg("19770", dup198); - -var msg21939 = msg("19771", dup198); - -var msg21940 = msg("19772", dup263); - -var msg21941 = msg("19773", dup263); - -var msg21942 = msg("19774", dup192); - -var msg21943 = msg("19775", dup303); - -var msg21944 = msg("19776", dup192); - -var msg21945 = msg("19777", dup263); - -var msg21946 = msg("19778", dup269); - -var msg21947 = msg("19779", dup260); - -var msg21948 = msg("19780", dup202); - -var msg21949 = msg("19781", dup192); - -var msg21950 = msg("19782", dup192); - -var msg21951 = msg("19783", dup192); - -var msg21952 = msg("19784", dup238); - -var msg21953 = msg("19785", dup192); - -var msg21954 = msg("19786", dup263); - -var msg21955 = msg("19787", dup267); - -var msg21956 = msg("19788", dup192); - -var msg21957 = msg("19789", dup238); - -var msg21958 = msg("19790", dup238); - -var msg21959 = msg("19791", dup192); - -var msg21960 = msg("19792", dup192); - -var msg21961 = msg("19793", dup192); - -var msg21962 = msg("19794", dup192); - -var msg21963 = msg("19795", dup263); - -var msg21964 = msg("19796", dup192); - -var msg21965 = msg("19797", dup192); - -var msg21966 = msg("19798", dup192); - -var msg21967 = msg("19799", dup192); - -var msg21968 = msg("19800", dup192); - -var msg21969 = msg("19801", dup192); - -var msg21970 = msg("19802", dup192); - -var msg21971 = msg("19803", dup192); - -var msg21972 = msg("19804", dup192); - -var msg21973 = msg("19805", dup192); - -var msg21974 = msg("19806", dup267); - -var msg21975 = msg("19807", dup267); - -var msg21976 = msg("19808", dup267); - -var msg21977 = msg("19809", dup267); - -var msg21978 = msg("19810", dup260); - -var msg21979 = msg("19811", dup202); - -var msg21980 = msg("19812", dup267); - -var msg21981 = msg("19813", dup197); - -var msg21982 = msg("19814", dup267); - -var msg21983 = msg("19815", dup267); - -var msg21984 = msg("19816", dup276); - -var msg21985 = msg("19817", dup201); - -var msg21986 = msg("19818", dup265); - -var msg21987 = msg("19819", dup192); - -var msg21988 = msg("19820", dup192); - -var msg21989 = msg("19821", dup238); - -var msg21990 = msg("19822", dup192); - -var msg21991 = msg("19823", dup303); - -var msg21992 = msg("19824", dup192); - -var msg21993 = msg("19825", dup198); - -var msg21994 = msg("19826", dup267); - -var msg21995 = msg("19827", dup303); - -var msg21996 = msg("19828", dup192); - -var msg21997 = msg("19829", dup192); - -var msg21998 = msg("19830", dup192); - -var msg21999 = msg("19831", dup192); - -var msg22000 = msg("19832", dup192); - -var msg22001 = msg("19833", dup192); - -var msg22002 = msg("19834", dup192); - -var msg22003 = msg("19835", dup303); - -var msg22004 = msg("19836", dup192); - -var msg22005 = msg("19837", dup303); - -var msg22006 = msg("19838", dup303); - -var msg22007 = msg("19839", dup263); - -var msg22008 = msg("19840", dup303); - -var msg22009 = msg("19841", dup303); - -var msg22010 = msg("19842", dup263); - -var msg22011 = msg("19843", dup263); - -var msg22012 = msg("19844", dup192); - -var msg22013 = msg("19845", dup192); - -var msg22014 = msg("19846", dup192); - -var msg22015 = msg("19847", dup192); - -var msg22016 = msg("19848", dup263); - -var msg22017 = msg("19849", dup263); - -var msg22018 = msg("19850", dup238); - -var msg22019 = msg("19851", dup238); - -var msg22020 = msg("19852", dup192); - -var msg22021 = msg("19853", dup303); - -var msg22022 = msg("19854", dup192); - -var msg22023 = msg("19855", dup192); - -var msg22024 = msg("19856", dup192); - -var msg22025 = msg("19857", dup192); - -var msg22026 = msg("19858", dup192); - -var msg22027 = msg("19859", dup303); - -var msg22028 = msg("19860", dup303); - -var msg22029 = msg("19861", dup192); - -var msg22030 = msg("19862", dup192); - -var msg22031 = msg("19863", dup265); - -var msg22032 = msg("19864", dup192); - -var msg22033 = msg("19865", dup192); - -var msg22034 = msg("19866", dup192); - -var msg22035 = msg("19867", dup287); - -var msg22036 = msg("19868", dup263); - -var msg22037 = msg("19869", dup198); - -var msg22038 = msg("19870", dup198); - -var msg22039 = msg("19871", dup197); - -var msg22040 = msg("19872", dup267); - -var msg22041 = msg("19873", dup267); - -var msg22042 = msg("19874", dup263); - -var msg22043 = msg("19875", dup263); - -var msg22044 = msg("19876", dup263); - -var msg22045 = msg("19877", dup263); - -var msg22046 = msg("19878", dup263); - -var msg22047 = msg("19879", dup263); - -var msg22048 = msg("19880", dup263); - -var msg22049 = msg("19881", dup263); - -var msg22050 = msg("19882", dup269); - -var msg22051 = msg("19883", dup197); - -var msg22052 = msg("19884", dup287); - -var msg22053 = msg("19885", dup197); - -var msg22054 = msg("19886", dup267); - -var msg22055 = msg("19887", dup287); - -var msg22056 = msg("19888", dup287); - -var msg22057 = msg("19889", dup202); - -var msg22058 = msg("19890", dup255); - -var msg22059 = msg("19891", dup197); - -var msg22060 = msg("19892", dup197); - -var msg22061 = msg("19893", dup197); - -var msg22062 = msg("19894", dup267); - -var msg22063 = msg("19895", dup205); - -var msg22064 = msg("19896", dup263); - -var msg22065 = msg("19897", dup263); - -var msg22066 = msg("19898", dup205); - -var msg22067 = msg("19899", dup303); - -var msg22068 = msg("19900", dup303); - -var msg22069 = msg("19901", dup303); - -var msg22070 = msg("19902", dup303); - -var msg22071 = msg("19903", dup303); - -var msg22072 = msg("19904", dup303); - -var msg22073 = msg("19905", dup205); - -var msg22074 = msg("19906", dup202); - -var msg22075 = msg("19907", dup202); - -var msg22076 = msg("19908", dup197); - -var msg22077 = msg("19909", dup202); - -var msg22078 = msg("19910", dup265); - -var msg22079 = msg("19911", dup197); - -var msg22080 = msg("19912", dup263); - -var msg22081 = msg("19914", dup263); - -var msg22082 = msg("19915", dup205); - -var msg22083 = msg("19916", dup192); - -var msg22084 = msg("19917", dup205); - -var msg22085 = msg("19918", dup238); - -var msg22086 = msg("19919", dup205); - -var msg22087 = msg("19920", dup205); - -var msg22088 = msg("19921", dup192); - -var msg22089 = msg("19922", dup205); - -var msg22090 = msg("19923", dup263); - -var msg22091 = msg("19924", dup192); - -var msg22092 = msg("19925", dup201); - -var msg22093 = msg("19926", dup197); - -var msg22094 = msg("19927", dup318); - -var msg22095 = msg("19928", dup318); - -var msg22096 = msg("19929", dup318); - -var msg22097 = msg("19930", dup318); - -var msg22098 = msg("19931", dup205); - -var msg22099 = msg("19932", dup265); - -var msg22100 = msg("19933", dup265); - -var msg22101 = msg("19934", dup269); - -var msg22102 = msg("19935", dup205); - -var msg22103 = msg("19936", dup205); - -var msg22104 = msg("19937", dup267); - -var msg22105 = msg("19938", dup197); - -var msg22106 = msg("19939", dup303); - -var msg22107 = msg("19940", dup205); - -var msg22108 = msg("19941", dup205); - -var msg22109 = msg("19942", dup205); - -var msg22110 = msg("19943", dup267); - -var msg22111 = msg("19944", dup205); - -var msg22112 = msg("19945", dup205); - -var msg22113 = msg("19946", dup205); - -var msg22114 = msg("19947", dup205); - -var msg22115 = msg("19948", dup205); - -var msg22116 = msg("19949", dup205); - -var msg22117 = msg("19950", dup192); - -var msg22118 = msg("19951", dup263); - -var msg22119 = msg("19952", dup192); - -var msg22120 = msg("19953", dup205); - -var msg22121 = msg("19954", dup192); - -var msg22122 = msg("19955", dup192); - -var msg22123 = msg("19956", dup197); - -var msg22124 = msg("19957", dup267); - -var msg22125 = msg("19958", dup205); - -var msg22126 = msg("19959", dup205); - -var msg22127 = msg("19960", dup205); - -var msg22128 = msg("19961", dup205); - -var msg22129 = msg("19962", dup290); - -var msg22130 = msg("19963", dup205); - -var msg22131 = msg("19964", dup318); - -var msg22132 = msg("19965", dup205); - -var msg22133 = msg("19966", dup263); - -var msg22134 = msg("19967", dup205); - -var msg22135 = msg("19968", dup205); - -var msg22136 = msg("19969", dup205); - -var msg22137 = msg("19970", dup205); - -var msg22138 = msg("19971", dup303); - -var msg22139 = msg("19972", dup197); - -var msg22140 = msg("19973", dup290); - -var msg22141 = msg("19974", dup205); - -var msg22142 = msg("19975", dup205); - -var msg22143 = msg("19976", dup238); - -var msg22144 = msg("19977", dup205); - -var msg22145 = msg("19978", dup290); - -var msg22146 = msg("19979", dup263); - -var msg22147 = msg("19980", dup263); - -var msg22148 = msg("19981", dup192); - -var msg22149 = msg("19982", dup205); - -var msg22150 = msg("19983", dup205); - -var msg22151 = msg("19984", dup263); - -var msg22152 = msg("19985", dup263); - -var msg22153 = msg("19986", dup263); - -var msg22154 = msg("19987", dup303); - -var msg22155 = msg("19988", dup205); - -var msg22156 = msg("19989", dup303); - -var msg22157 = msg("19990", dup303); - -var msg22158 = msg("19991", dup205); - -var msg22159 = msg("19992", dup205); - -var msg22160 = msg("19993", dup192); - -var msg22161 = msg("19994", dup263); - -var msg22162 = msg("19995", dup202); - -var msg22163 = msg("19996", dup238); - -var msg22164 = msg("19997", dup192); - -var msg22165 = msg("19998", dup192); - -var msg22166 = msg("19999", dup303); - -var msg22167 = msg("20000", dup202); - -var msg22168 = msg("20001", dup192); - -var msg22169 = msg("20002", dup192); - -var msg22170 = msg("20003", dup192); - -var msg22171 = msg("20004", dup192); - -var msg22172 = msg("20005", dup192); - -var msg22173 = msg("20006", dup238); - -var msg22174 = msg("20007", dup303); - -var msg22175 = msg("20008", dup202); - -var msg22176 = msg("20009", dup269); - -var msg22177 = msg("20010", dup287); - -var msg22178 = msg("20011", dup202); - -var msg22179 = msg("20012", dup269); - -var msg22180 = msg("20013", dup197); - -var msg22181 = msg("20014", dup192); - -var msg22182 = msg("20015", dup192); - -var msg22183 = msg("20016", dup192); - -var msg22184 = msg("20017", dup238); - -var msg22185 = msg("20018", dup238); - -var msg22186 = msg("20019", dup238); - -var msg22187 = msg("20020", dup263); - -var msg22188 = msg("20021", dup269); - -var msg22189 = msg("20022", dup238); - -var msg22190 = msg("20023", dup263); - -var msg22191 = msg("20024", dup192); - -var msg22192 = msg("20025", dup263); - -var msg22193 = msg("20026", dup192); - -var msg22194 = msg("20027", dup263); - -var msg22195 = msg("20028", dup263); - -var msg22196 = msg("20029", dup267); - -var msg22197 = msg("20030", dup202); - -var msg22198 = msg("20031", dup267); - -var msg22199 = msg("20032", dup265); - -var msg22200 = msg("20033", dup265); - -var msg22201 = msg("20034", dup201); - -var msg22202 = msg("20035", dup192); - -var msg22203 = msg("20036", dup192); - -var msg22204 = msg("20037", dup192); - -var msg22205 = msg("20038", dup192); - -var msg22206 = msg("20039", dup269); - -var msg22207 = msg("20040", dup192); - -var msg22208 = msg("20041", dup263); - -var msg22209 = msg("20042", dup192); - -var msg22210 = msg("20043", dup263); - -var msg22211 = msg("20044", dup265); - -var msg22212 = msg("20045", dup260); - -var msg22213 = msg("20046", dup260); - -var msg22214 = msg("20047", dup260); - -var msg22215 = msg("20048", dup267); - -var msg22216 = msg("20049", dup267); - -var msg22217 = msg("20050", dup267); - -var msg22218 = msg("20051", dup197); - -var msg22219 = msg("20052", dup197); - -var msg22220 = msg("20053", dup240); - -var msg22221 = msg("20054", dup198); - -var msg22222 = msg("20055", dup197); - -var msg22223 = msg("20056", dup265); - -var msg22224 = msg("20057", dup202); - -var msg22225 = msg("20058", dup267); - -var msg22226 = msg("20059", dup267); - -var msg22227 = msg("20060", dup197); - -var msg22228 = msg("20061", dup201); - -var msg22229 = msg("20062", dup267); - -var msg22230 = msg("20063", dup303); - -var msg22231 = msg("20064", dup263); - -var msg22232 = msg("20065", dup192); - -var msg22233 = msg("20066", dup192); - -var msg22234 = msg("20067", dup192); - -var msg22235 = msg("20068", dup269); - -var msg22236 = msg("20069", dup192); - -var msg22237 = msg("20070", dup265); - -var msg22238 = msg("20071", dup265); - -var msg22239 = msg("20072", dup265); - -var msg22240 = msg("20073", dup267); - -var msg22241 = msg("20074", dup192); - -var msg22242 = msg("20075", dup192); - -var msg22243 = msg("20076", dup192); - -var msg22244 = msg("20077", dup192); - -var msg22245 = msg("20078", dup192); - -var msg22246 = msg("20079", dup192); - -var msg22247 = msg("20080", dup192); - -var msg22248 = msg("20081", dup192); - -var msg22249 = msg("20082", dup192); - -var msg22250 = msg("20083", dup192); - -var msg22251 = msg("20084", dup197); - -var msg22252 = msg("20085", dup192); - -var msg22253 = msg("20086", dup192); - -var msg22254 = msg("20087", dup192); - -var msg22255 = msg("20088", dup192); - -var msg22256 = msg("20089", dup202); - -var msg22257 = msg("20090", dup202); - -var msg22258 = msg("20091", dup202); - -var msg22259 = msg("20092", dup202); - -var msg22260 = msg("20093", dup202); - -var msg22261 = msg("20094", dup202); - -var msg22262 = msg("20095", dup313); - -var msg22263 = msg("20096", dup192); - -var msg22264 = msg("20097", dup192); - -var msg22265 = msg("20098", dup192); - -var msg22266 = msg("20099", dup192); - -var msg22267 = msg("20100", dup263); - -var msg22268 = msg("20101", dup263); - -var msg22269 = msg("20102", dup263); - -var msg22270 = msg("20103", dup263); - -var msg22271 = msg("20104", dup269); - -var msg22272 = msg("20105", dup269); - -var msg22273 = msg("20106", dup269); - -var msg22274 = msg("20107", dup192); - -var msg22275 = msg("20108", dup192); - -var msg22276 = msg("20109", dup192); - -var msg22277 = msg("20110", dup267); - -var msg22278 = msg("20111", dup267); - -var msg22279 = msg("20112", dup267); - -var msg22280 = msg("20113", dup267); - -var msg22281 = msg("20114", dup201); - -var msg22282 = msg("20115", dup267); - -var msg22283 = msg("20116", dup201); - -var msg22284 = msg("20117", dup267); - -var msg22285 = msg("20118", dup276); - -var msg22286 = msg("20119", dup267); - -var msg22287 = msg("20120", dup267); - -var msg22288 = msg("20121", dup202); - -var msg22289 = msg("20122", dup202); - -var msg22290 = msg("20123", dup202); - -var msg22291 = msg("20124", dup202); - -var msg22292 = msg("20125", dup202); - -var msg22293 = msg("20126", dup202); - -var msg22294 = msg("20127", dup267); - -var msg22295 = msg("20128", dup202); - -var msg22296 = msg("20129", dup202); - -var msg22297 = msg("20130", dup267); - -var msg22298 = msg("20131", dup287); - -var msg22299 = msg("20132", dup198); - -var msg22300 = msg("20133", dup265); - -var msg22301 = msg("20134", dup197); - -var msg22302 = msg("20135", dup197); - -var msg22303 = msg("20136", dup202); - -var msg22304 = msg("20137", dup265); - -var msg22305 = msg("20138", dup287); - -var msg22306 = msg("20139", dup197); - -var msg22307 = msg("20140", dup197); - -var msg22308 = msg("20141", dup197); - -var msg22309 = msg("20142", dup267); - -var msg22310 = msg("20143", dup263); - -var msg22311 = msg("20144", dup267); - -var msg22312 = msg("20145", dup267); - -var msg22313 = msg("20146", dup202); - -var msg22314 = msg("20147", dup267); - -var msg22315 = msg("20148", dup267); - -var msg22316 = msg("20149", dup267); - -var msg22317 = msg("20150", dup267); - -var msg22318 = msg("20151", dup202); - -var msg22319 = msg("20152", dup267); - -var msg22320 = msg("20153", dup267); - -var msg22321 = msg("20154", dup267); - -var msg22322 = msg("20155", dup267); - -var msg22323 = msg("20156", dup267); - -var msg22324 = msg("20157", dup202); - -var msg22325 = msg("20158", dup265); - -var msg22326 = msg("20159", dup265); - -var msg22327 = msg("20160", dup265); - -var msg22328 = msg("20161", dup265); - -var msg22329 = msg("20162", dup265); - -var msg22330 = msg("20163", dup197); - -var msg22331 = msg("20164", dup197); - -var msg22332 = msg("20165", dup197); - -var msg22333 = msg("20166", dup197); - -var msg22334 = msg("20167", dup197); - -var msg22335 = msg("20168", dup267); - -var msg22336 = msg("20169", dup267); - -var msg22337 = msg("20170", dup267); - -var msg22338 = msg("20171", dup267); - -var msg22339 = msg("20172", dup202); - -var msg22340 = msg("20173", dup202); - -var msg22341 = msg("20174", dup202); - -var msg22342 = msg("20175", dup265); - -var msg22343 = msg("20176", dup197); - -var msg22344 = msg("20177", dup197); - -var msg22345 = msg("20178", dup198); - -var msg22346 = msg("20179", dup197); - -var msg22347 = msg("20180", dup197); - -var msg22348 = msg("20181", dup265); - -var msg22349 = msg("20182", dup265); - -var msg22350 = msg("20183", dup202); - -var msg22351 = msg("20184", dup199); - -var msg22352 = msg("20185", dup199); - -var msg22353 = msg("20186", dup199); - -var msg22354 = msg("20187", dup199); - -var msg22355 = msg("20188", dup199); - -var msg22356 = msg("20189", dup199); - -var msg22357 = msg("20190", dup199); - -var msg22358 = msg("20191", dup199); - -var msg22359 = msg("20192", dup199); - -var msg22360 = msg("20193", dup199); - -var msg22361 = msg("20194", dup199); - -var msg22362 = msg("20195", dup199); - -var msg22363 = msg("20196", dup199); - -var msg22364 = msg("20197", dup199); - -var msg22365 = msg("20198", dup199); - -var msg22366 = msg("20199", dup199); - -var msg22367 = msg("20200", dup199); - -var msg22368 = msg("20201", dup269); - -var msg22369 = msg("20202", dup202); - -var msg22370 = msg("20203", dup263); - -var msg22371 = msg("20204", dup192); - -var msg22372 = msg("20205", dup202); - -var msg22373 = msg("20206", dup202); - -var msg22374 = msg("20207", dup197); - -var msg22375 = msg("20208", dup197); - -var msg22376 = msg("20209", dup197); - -var msg22377 = msg("20210", dup197); - -var msg22378 = msg("20211", dup197); - -var msg22379 = msg("20212", dup202); - -var msg22380 = msg("20213", dup202); - -var msg22381 = msg("20214", dup267); - -var msg22382 = msg("20215", dup202); - -var msg22383 = msg("20216", dup198); - -var msg22384 = msg("20217", dup198); - -var msg22385 = msg("20218", dup198); - -var msg22386 = msg("20219", dup192); - -var msg22387 = msg("20220", dup263); - -var msg22388 = msg("20221", dup192); - -var msg22389 = msg("20222", dup192); - -var msg22390 = msg("20223", dup265); - -var msg22391 = msg("20224", dup197); - -var msg22392 = msg("20225", dup246); - -var msg22393 = msg("20226", dup197); - -var msg22394 = msg("20227", dup267); - -var msg22395 = msg("20228", dup202); - -var msg22396 = msg("20229", dup202); - -var msg22397 = msg("20230", dup269); - -var msg22398 = msg("20231", dup269); - -var msg22399 = msg("20232", dup192); - -var msg22400 = msg("20233", dup192); - -var msg22401 = msg("20234", dup192); - -var msg22402 = msg("20235", dup192); - -var msg22403 = msg("20236", dup197); - -var msg22404 = msg("20237", dup197); - -var msg22405 = msg("20238", dup267); - -var msg22406 = msg("20239", dup197); - -var msg22407 = msg("20240", dup197); - -var msg22408 = msg("20241", dup197); - -var msg22409 = msg("20242", dup197); - -var msg22410 = msg("20243", dup202); - -var msg22411 = msg("20244", dup202); - -var msg22412 = msg("20245", dup202); - -var msg22413 = msg("20246", dup267); - -var msg22414 = msg("20247", dup267); - -var msg22415 = msg("20248", dup255); - -var msg22416 = msg("20249", dup267); - -var msg22417 = msg("20250", dup197); - -var msg22418 = msg("20251", dup198); - -var msg22419 = msg("20252", dup202); - -var msg22420 = msg("20253", dup276); - -var msg22421 = msg("20254", dup267); - -var msg22422 = msg("20255", dup202); - -var msg22423 = msg("20256", dup267); - -var msg22424 = msg("20257", dup265); - -var msg22425 = msg("20258", dup201); - -var msg22426 = msg("20259", dup265); - -var msg22427 = msg("20260", dup265); - -var msg22428 = msg("20261", dup265); - -var msg22429 = msg("20262", dup265); - -var msg22430 = msg("20263", dup265); - -var msg22431 = msg("20264", dup267); - -var msg22432 = msg("20265", dup202); - -var msg22433 = msg("20266", dup267); - -var msg22434 = msg("20267", dup267); - -var msg22435 = msg("20268", dup269); - -var msg22436 = msg("20269", dup265); - -var msg22437 = msg("20270", dup267); - -var msg22438 = msg("20271", dup198); - -var msg22439 = msg("20272", dup197); - -var msg22440 = msg("20273", dup267); - -var msg22441 = msg("20274", dup255); - -var msg22442 = msg("20275", dup201); - -var msg22443 = msg("20276", dup202); - -var msg22444 = msg("20277", dup265); - -var msg22445 = msg("20278", dup265); - -var msg22446 = msg("20279", dup265); - -var msg22447 = msg("20280", dup202); - -var msg22448 = msg("20281", dup202); - -var msg22449 = msg("20282", dup265); - -var msg22450 = msg("20283", dup197); - -var msg22451 = msg("20284", dup197); - -var msg22452 = msg("20285", dup265); - -var msg22453 = msg("20286", dup265); - -var msg22454 = msg("20287", dup265); - -var msg22455 = msg("20288", dup197); - -var msg22456 = msg("20289", dup198); - -var msg22457 = msg("20290", dup198); - -var msg22458 = msg("20291", dup192); - -var msg22459 = msg("20292", dup192); - -var msg22460 = msg("20293", dup269); - -var msg22461 = msg("20294", dup267); - -var msg22462 = msg("20295", dup267); - -var msg22463 = msg("20296", dup202); - -var msg22464 = msg("20297", dup202); - -var msg22465 = msg("20298", dup287); - -var msg22466 = msg("20299", dup287); - -var msg22467 = msg("20300", dup201); - -var msg22468 = msg("20301", dup201); - -var msg22469 = msg("20302", dup202); - -var msg22470 = msg("20303", dup287); - -var msg22471 = msg("20304", dup287); - -var msg22472 = msg("20305", dup287); - -var msg22473 = msg("20306", dup287); - -var msg22474 = msg("20307", dup287); - -var msg22475 = msg("20308", dup287); - -var msg22476 = msg("20309", dup202); - -var msg22477 = msg("20310", dup202); - -var msg22478 = msg("20311", dup202); - -var msg22479 = msg("20312", dup287); - -var msg22480 = msg("20313", dup202); - -var msg22481 = msg("20314", dup287); - -var msg22482 = msg("20315", dup287); - -var msg22483 = msg("20316", dup202); - -var msg22484 = msg("20317", dup202); - -var msg22485 = msg("20318", dup287); - -var msg22486 = msg("20319", dup287); - -var msg22487 = msg("20320", dup201); - -var msg22488 = msg("20321", dup201); - -var msg22489 = msg("20322", dup287); - -var msg22490 = msg("20323", dup287); - -var msg22491 = msg("20324", dup287); - -var msg22492 = msg("20325", dup287); - -var msg22493 = msg("20326", dup287); - -var msg22494 = msg("20327", dup287); - -var msg22495 = msg("20328", dup202); - -var msg22496 = msg("20329", dup202); - -var msg22497 = msg("20330", dup202); - -var msg22498 = msg("20331", dup202); - -var msg22499 = msg("20332", dup202); - -var msg22500 = msg("20333", dup287); - -var msg22501 = msg("20334", dup201); - -var msg22502 = msg("20335", dup201); - -var msg22503 = msg("20336", dup287); - -var msg22504 = msg("20337", dup287); - -var msg22505 = msg("20338", dup287); - -var msg22506 = msg("20339", dup287); - -var msg22507 = msg("20340", dup287); - -var msg22508 = msg("20341", dup287); - -var msg22509 = msg("20342", dup202); - -var msg22510 = msg("20343", dup202); - -var msg22511 = msg("20344", dup202); - -var msg22512 = msg("20345", dup202); - -var msg22513 = msg("20346", dup202); - -var msg22514 = msg("20347", dup202); - -var msg22515 = msg("20348", dup201); - -var msg22516 = msg("20349", dup201); - -var msg22517 = msg("20350", dup287); - -var msg22518 = msg("20351", dup287); - -var msg22519 = msg("20352", dup201); - -var msg22520 = msg("20353", dup287); - -var msg22521 = msg("20354", dup287); - -var msg22522 = msg("20355", dup287); - -var msg22523 = msg("20356", dup201); - -var msg22524 = msg("20357", dup201); - -var msg22525 = msg("20358", dup287); - -var msg22526 = msg("20359", dup287); - -var msg22527 = msg("20360", dup202); - -var msg22528 = msg("20361", dup202); - -var msg22529 = msg("20362", dup202); - -var msg22530 = msg("20363", dup202); - -var msg22531 = msg("20364", dup287); - -var msg22532 = msg("20365", dup287); - -var msg22533 = msg("20366", dup201); - -var msg22534 = msg("20367", dup201); - -var msg22535 = msg("20368", dup287); - -var msg22536 = msg("20369", dup287); - -var msg22537 = msg("20370", dup287); - -var msg22538 = msg("20371", dup287); - -var msg22539 = msg("20372", dup287); - -var msg22540 = msg("20373", dup287); - -var msg22541 = msg("20374", dup202); - -var msg22542 = msg("20375", dup202); - -var msg22543 = msg("20376", dup287); - -var msg22544 = msg("20377", dup287); - -var msg22545 = msg("20378", dup287); - -var msg22546 = msg("20379", dup287); - -var msg22547 = msg("20380", dup287); - -var msg22548 = msg("20381", dup202); - -var msg22549 = msg("20382", dup202); - -var msg22550 = msg("20383", dup202); - -var msg22551 = msg("20384", dup202); - -var msg22552 = msg("20385", dup201); - -var msg22553 = msg("20386", dup202); - -var msg22554 = msg("20387", dup201); - -var msg22555 = msg("20388", dup201); - -var msg22556 = msg("20389", dup201); - -var msg22557 = msg("20390", dup202); - -var msg22558 = msg("20391", dup201); - -var msg22559 = msg("20392", dup201); - -var msg22560 = msg("20393", dup197); - -var msg22561 = msg("20394", dup197); - -var msg22562 = msg("20395", dup197); - -var msg22563 = msg("20396", dup197); - -var msg22564 = msg("20397", dup197); - -var msg22565 = msg("20398", dup197); - -var msg22566 = msg("20399", dup197); - -var msg22567 = msg("20400", dup197); - -var msg22568 = msg("20401", dup197); - -var msg22569 = msg("20402", dup197); - -var msg22570 = msg("20403", dup197); - -var msg22571 = msg("20404", dup202); - -var msg22572 = msg("20405", dup287); - -var msg22573 = msg("20406", dup202); - -var msg22574 = msg("20407", dup202); - -var msg22575 = msg("20408", dup202); - -var msg22576 = msg("20409", dup202); - -var msg22577 = msg("20410", dup273); - -var msg22578 = msg("20411", dup202); - -var msg22579 = msg("20412", dup202); - -var msg22580 = msg("20413", dup202); - -var msg22581 = msg("20414", dup287); - -var msg22582 = msg("20415", dup202); - -var msg22583 = msg("20416", dup202); - -var msg22584 = msg("20417", dup202); - -var msg22585 = msg("20418", dup202); - -var msg22586 = msg("20419", dup273); - -var msg22587 = msg("20420", dup202); - -var msg22588 = msg("20421", dup202); - -var msg22589 = msg("20422", dup287); - -var msg22590 = msg("20423", dup287); - -var msg22591 = msg("20424", dup287); - -var msg22592 = msg("20425", dup287); - -var msg22593 = msg("20426", dup201); - -var msg22594 = msg("20427", dup287); - -var msg22595 = msg("20428", dup192); - -var msg22596 = msg("20429", dup267); - -var msg22597 = msg("20430", dup265); - -var msg22598 = msg("20431", dup197); - -var msg22599 = msg("20432", dup192); - -var msg22600 = msg("20433", dup303); - -var msg22601 = msg("20434", dup263); - -var msg22602 = msg("20435", dup192); - -var msg22603 = msg("20436", dup198); - -var msg22604 = msg("20437", dup198); - -var msg22605 = msg("20438", dup198); - -var msg22606 = msg("20439", dup198); - -var msg22607 = msg("20440", dup197); - -var msg22608 = msg("20441", dup197); - -var msg22609 = msg("20442", dup197); - -var msg22610 = msg("20443", dup202); - -var msg22611 = msg("20444", dup197); - -var msg22612 = msg("20445", dup197); - -var msg22613 = msg("20446", dup197); - -var msg22614 = msg("20447", dup192); - -var msg22615 = msg("20448", dup192); - -var msg22616 = msg("20449", dup238); - -var msg22617 = msg("20450", dup202); - -var msg22618 = msg("20451", dup202); - -var msg22619 = msg("20452", dup287); - -var msg22620 = msg("20453", dup287); - -var msg22621 = msg("20454", dup287); - -var msg22622 = msg("20455", dup202); - -var msg22623 = msg("20456", dup202); - -var msg22624 = msg("20457", dup202); - -var msg22625 = msg("20458", dup287); - -var msg22626 = msg("20459", dup202); - -var msg22627 = msg("20460", dup202); - -var msg22628 = msg("20461", dup202); - -var msg22629 = msg("20462", dup202); - -var msg22630 = msg("20463", dup287); - -var msg22631 = msg("20464", dup287); - -var msg22632 = msg("20465", dup287); - -var msg22633 = msg("20466", dup287); - -var msg22634 = msg("20467", dup287); - -var msg22635 = msg("20468", dup287); - -var msg22636 = msg("20469", dup287); - -var msg22637 = msg("20470", dup202); - -var msg22638 = msg("20471", dup202); - -var msg22639 = msg("20472", dup202); - -var msg22640 = msg("20473", dup202); - -var msg22641 = msg("20474", dup202); - -var msg22642 = msg("20475", dup202); - -var msg22643 = msg("20476", dup202); - -var msg22644 = msg("20477", dup202); - -var msg22645 = msg("20478", dup202); - -var msg22646 = msg("20479", dup202); - -var msg22647 = msg("20480", dup202); - -var msg22648 = msg("20481", dup202); - -var msg22649 = msg("20482", dup202); - -var msg22650 = msg("20483", dup202); - -var msg22651 = msg("20484", dup202); - -var msg22652 = msg("20485", dup287); - -var msg22653 = msg("20486", dup202); - -var msg22654 = msg("20487", dup287); - -var msg22655 = msg("20488", dup202); - -var msg22656 = msg("20489", dup202); - -var msg22657 = msg("20490", dup202); - -var msg22658 = msg("20491", dup202); - -var msg22659 = msg("20492", dup202); - -var msg22660 = msg("20493", dup202); - -var msg22661 = msg("20494", dup202); - -var msg22662 = msg("20495", dup202); - -var msg22663 = msg("20496", dup202); - -var msg22664 = msg("20497", dup202); - -var msg22665 = msg("20498", dup202); - -var msg22666 = msg("20499", dup202); - -var msg22667 = msg("20500", dup202); - -var msg22668 = msg("20501", dup202); - -var msg22669 = msg("20502", dup202); - -var msg22670 = msg("20503", dup202); - -var msg22671 = msg("20504", dup202); - -var msg22672 = msg("20505", dup202); - -var msg22673 = msg("20506", dup202); - -var msg22674 = msg("20507", dup202); - -var msg22675 = msg("20508", dup202); - -var msg22676 = msg("20509", dup202); - -var msg22677 = msg("20510", dup202); - -var msg22678 = msg("20511", dup202); - -var msg22679 = msg("20512", dup202); - -var msg22680 = msg("20513", dup202); - -var msg22681 = msg("20514", dup202); - -var msg22682 = msg("20515", dup202); - -var msg22683 = msg("20516", dup202); - -var msg22684 = msg("20517", dup202); - -var msg22685 = msg("20518", dup202); - -var msg22686 = msg("20519", dup202); - -var msg22687 = msg("20520", dup202); - -var msg22688 = msg("20521", dup202); - -var msg22689 = msg("20522", dup202); - -var msg22690 = msg("20523", dup269); - -var msg22691 = msg("20524", dup269); - -var msg22692 = msg("20525", dup192); - -var msg22693 = msg("20526", dup263); - -var msg22694 = msg("20527", dup202); - -var msg22695 = msg("20528", dup265); - -var msg22696 = msg("20529", dup267); - -var msg22697 = msg("20530", dup265); - -var msg22698 = msg("20531", dup265); - -var msg22699 = msg("20532", dup197); - -var msg22700 = msg("20533", dup265); - -var msg22701 = msg("20534", dup201); - -var msg22702 = msg("20535", dup265); - -var msg22703 = msg("20536", dup265); - -var msg22704 = msg("20537", dup265); - -var msg22705 = msg("20538", dup265); - -var msg22706 = msg("20539", dup265); - -var msg22707 = msg("20540", dup202); - -var msg22708 = msg("20541", dup276); - -var msg22709 = msg("20542", dup267); - -var msg22710 = msg("20543", dup201); - -var msg22711 = msg("20544", dup202); - -var msg22712 = msg("20545", dup202); - -var msg22713 = msg("20546", dup197); - -var msg22714 = msg("20547", dup197); - -var msg22715 = msg("20548", dup319); - -var msg22716 = msg("20549", dup287); - -var msg22717 = msg("20550", dup201); - -var msg22718 = msg("20551", dup197); - -var msg22719 = msg("20552", dup197); - -var msg22720 = msg("20553", dup197); - -var msg22721 = msg("20554", dup267); - -var msg22722 = msg("20555", dup197); - -var msg22723 = msg("20556", dup202); - -var msg22724 = msg("20557", dup197); - -var msg22725 = msg("20558", dup269); - -var msg22726 = msg("20559", dup197); - -var msg22727 = msg("20560", dup201); - -var msg22728 = msg("20561", dup192); - -var msg22729 = msg("20562", dup192); - -var msg22730 = msg("20563", dup202); - -var msg22731 = msg("20564", dup202); - -var msg22732 = msg("20565", dup197); - -var msg22733 = msg("20566", dup197); - -var msg22734 = msg("20567", dup267); - -var msg22735 = msg("20568", dup201); - -var msg22736 = msg("20569", dup202); - -var msg22737 = msg("20570", dup202); - -var msg22738 = msg("20571", dup202); - -var msg22739 = msg("20572", dup197); - -var msg22740 = msg("20573", dup265); - -var msg22741 = msg("20574", dup265); - -var msg22742 = msg("20575", dup267); - -var msg22743 = msg("20576", dup197); - -var msg22744 = msg("20577", dup267); - -var msg22745 = msg("20578", dup197); - -var msg22746 = msg("20579", dup267); - -var msg22747 = msg("20580", dup265); - -var msg22748 = msg("20581", dup267); - -var msg22749 = msg("20582", dup267); - -var msg22750 = msg("20583", dup265); - -var msg22751 = msg("20584", dup265); - -var msg22752 = msg("20585", dup265); - -var msg22753 = msg("20586", dup265); - -var msg22754 = msg("20587", dup192); - -var msg22755 = msg("20588", dup202); - -var msg22756 = msg("20589", dup202); - -var msg22757 = msg("20590", dup267); - -var msg22758 = msg("20591", dup265); - -var msg22759 = msg("20592", dup265); - -var msg22760 = msg("20593", dup265); - -var msg22761 = msg("20594", dup197); - -var msg22762 = msg("20595", dup192); - -var msg22763 = msg("20596", dup267); - -var msg22764 = msg("20597", dup267); - -var msg22765 = msg("20598", dup267); - -var msg22766 = msg("20599", dup267); - -var msg22767 = msg("20600", dup202); - -var msg22768 = msg("20601", dup202); - -var msg22769 = msg("20602", dup202); - -var msg22770 = msg("20603", dup197); - -var msg22771 = msg("20604", dup192); - -var msg22772 = msg("20605", dup192); - -var msg22773 = msg("20606", dup192); - -var msg22774 = msg("20607", dup197); - -var msg22775 = msg("20608", dup197); - -var msg22776 = msg("20609", dup197); - -var msg22777 = msg("20610", dup267); - -var msg22778 = msg("20611", dup197); - -var msg22779 = msg("20612", dup198); - -var msg22780 = msg("20613", dup198); - -var msg22781 = msg("20614", dup267); - -var msg22782 = msg("20615", dup260); - -var msg22783 = msg("20616", dup197); - -var msg22784 = msg("20617", dup267); - -var msg22785 = msg("20618", dup267); - -var msg22786 = msg("20619", dup197); - -var msg22787 = msg("20620", dup197); - -var msg22788 = msg("20621", dup202); - -var msg22789 = msg("20622", dup201); - -var msg22790 = msg("20623", dup260); - -var msg22791 = msg("20624", dup260); - -var msg22792 = msg("20625", dup260); - -var msg22793 = msg("20626", dup192); - -var msg22794 = msg("20627", dup192); - -var msg22795 = msg("20628", dup260); - -var msg22796 = msg("20629", dup260); - -var msg22797 = msg("20630", dup202); - -var msg22798 = msg("20631", dup202); - -var msg22799 = msg("20632", dup202); - -var msg22800 = msg("20633", dup202); - -var msg22801 = msg("20634", dup198); - -var msg22802 = msg("20635", dup260); - -var msg22803 = msg("20636", dup267); - -var msg22804 = msg("20637", dup267); - -var msg22805 = msg("20638", dup267); - -var msg22806 = msg("20639", dup263); - -var msg22807 = msg("20640", dup260); - -var msg22808 = msg("20641", dup260); - -var msg22809 = msg("20642", dup260); - -var msg22810 = msg("20643", dup260); - -var msg22811 = msg("20644", dup260); - -var msg22812 = msg("20645", dup260); - -var msg22813 = msg("20646", dup260); - -var msg22814 = msg("20647", dup260); - -var msg22815 = msg("20648", dup260); - -var msg22816 = msg("20649", dup260); - -var msg22817 = msg("20650", dup202); - -var msg22818 = msg("20651", dup202); - -var msg22819 = msg("20652", dup202); - -var msg22820 = msg("20653", dup197); - -var msg22821 = msg("20654", dup202); - -var msg22822 = msg("20655", dup267); - -var msg22823 = msg("20656", dup202); - -var msg22824 = msg("20657", dup202); - -var msg22825 = msg("20658", dup202); - -var msg22826 = msg("20659", dup267); - -var msg22827 = msg("20660", dup201); - -var msg22828 = msg("20661", dup202); - -var msg22829 = msg("20662", dup197); - -var msg22830 = msg("20663", dup202); - -var msg22831 = msg("20664", dup265); - -var msg22832 = msg("20665", dup265); - -var msg22833 = msg("20666", dup197); - -var msg22834 = msg("20667", dup197); - -var msg22835 = msg("20668", dup269); - -var msg22836 = msg("20669", dup269); - -var msg22837 = msg("20670", dup197); - -var msg22838 = msg("20671", dup267); - -var msg22839 = msg("20672", dup202); - -var msg22840 = msg("20673", dup267); - -var msg22841 = msg("20674", dup267); - -var msg22842 = msg("20675", dup267); - -var msg22843 = msg("20676", dup192); - -var msg22844 = msg("20677", dup192); - -var msg22845 = msg("20678", dup192); - -var msg22846 = msg("20679", dup192); - -var msg22847 = msg("20680", dup202); - -var msg22848 = msg("20681", dup192); - -var msg22849 = msg("20682", dup192); - -var msg22850 = msg("20683", dup202); - -var msg22851 = msg("20684", dup202); - -var msg22852 = msg("20685", dup192); - -var msg22853 = msg("20686", dup192); - -var msg22854 = msg("20687", dup192); - -var msg22855 = msg("20688", dup192); - -var msg22856 = msg("20689", dup192); - -var msg22857 = msg("20690", dup198); - -var msg22858 = msg("20691", dup265); - -var msg22859 = msg("20692", dup265); - -var msg22860 = msg("20693", dup192); - -var msg22861 = msg("20694", dup192); - -var msg22862 = msg("20695", dup192); - -var msg22863 = msg("20696", dup192); - -var msg22864 = msg("20697", dup192); - -var msg22865 = msg("20698", dup199); - -var msg22866 = msg("20699", dup267); - -var msg22867 = msg("20700", dup276); - -var msg22868 = msg("20701", dup276); - -var msg22869 = msg("20702", dup267); - -var msg22870 = msg("20703", dup267); - -var msg22871 = msg("20704", dup267); - -var msg22872 = msg("20705", dup265); - -var msg22873 = msg("20706", dup265); - -var msg22874 = msg("20707", dup265); - -var msg22875 = msg("20708", dup265); - -var msg22876 = msg("20709", dup265); - -var msg22877 = msg("20710", dup265); - -var msg22878 = msg("20711", dup265); - -var msg22879 = msg("20712", dup265); - -var msg22880 = msg("20713", dup265); - -var msg22881 = msg("20714", dup265); - -var msg22882 = msg("20715", dup265); - -var msg22883 = msg("20716", dup265); - -var msg22884 = msg("20717", dup202); - -var msg22885 = msg("20718", dup267); - -var msg22886 = msg("20719", dup267); - -var msg22887 = msg("20720", dup267); - -var msg22888 = msg("20721", dup267); - -var msg22889 = msg("20722", dup201); - -var msg22890 = msg("20723", dup202); - -var msg22891 = msg("20724", dup202); - -var msg22892 = msg("20725", dup198); - -var msg22893 = msg("20726", dup197); - -var msg22894 = msg("20727", dup265); - -var msg22895 = msg("20728", dup202); - -var msg22896 = msg("20729", dup267); - -var msg22897 = msg("20730", dup202); - -var msg22898 = msg("20731", dup202); - -var msg22899 = msg("20732", dup202); - -var msg22900 = msg("20733", dup202); - -var msg22901 = msg("20734", dup197); - -var msg22902 = msg("20735", dup202); - -var msg22903 = msg("20736", dup265); - -var msg22904 = msg("20737", dup285); - -var msg22905 = msg("20738", dup197); - -var msg22906 = msg("20739", dup265); - -var msg22907 = msg("20740", dup197); - -var msg22908 = msg("20741", dup198); - -var msg22909 = msg("20742", dup201); - -var msg22910 = msg("20743", dup201); - -var msg22911 = msg("20744", dup267); - -var msg22912 = msg("20745", dup197); - -var msg22913 = msg("20746", dup197); - -var msg22914 = msg("20747", dup197); - -var msg22915 = msg("20748", dup267); - -var msg22916 = msg("20749", dup197); - -var msg22917 = msg("20750", dup202); - -var msg22918 = msg("20751", dup202); - -var msg22919 = msg("20752", dup303); - -var msg22920 = msg("20753", dup303); - -var msg22921 = msg("20754", dup202); - -var msg22922 = msg("20755", dup202); - -var msg22923 = msg("20756", dup202); - -var msg22924 = msg("20757", dup202); - -var msg22925 = msg("20758", dup287); - -var msg22926 = msg("20759", dup192); - -var msg22927 = msg("20760", dup269); - -var msg22928 = msg("20761", dup197); - -var msg22929 = msg("20762", dup202); - -var msg22930 = msg("20763", dup192); - -var msg22931 = msg("20764", dup197); - -var msg22932 = msg("20765", dup265); - -var msg22933 = msg("20766", dup267); - -var msg22934 = msg("20767", dup267); - -var msg22935 = msg("20768", dup267); - -var msg22936 = msg("20769", dup267); - -var msg22937 = msg("20770", dup267); - -var msg22938 = msg("20771", dup267); - -var msg22939 = msg("20772", dup267); - -var msg22940 = msg("20773", dup267); - -var msg22941 = msg("20774", dup267); - -var msg22942 = msg("20775", dup267); - -var msg22943 = msg("20776", dup267); - -var msg22944 = msg("20777", dup267); - -var msg22945 = msg("20778", dup287); - -var msg22946 = msg("20779", dup287); - -var msg22947 = msg("20780", dup287); - -var msg22948 = msg("20781", dup287); - -var msg22949 = msg("20782", dup287); - -var msg22950 = msg("20783", dup287); - -var msg22951 = msg("20784", dup287); - -var msg22952 = msg("20785", dup287); - -var msg22953 = msg("20786", dup267); - -var msg22954 = msg("20787", dup267); - -var msg22955 = msg("20788", dup267); - -var msg22956 = msg("20789", dup267); - -var msg22957 = msg("20790", dup267); - -var msg22958 = msg("20791", dup202); - -var msg22959 = msg("20792", dup202); - -var msg22960 = msg("20793", dup202); - -var msg22961 = msg("20794", dup202); - -var msg22962 = msg("20795", dup202); - -var msg22963 = msg("20796", dup202); - -var msg22964 = msg("20797", dup202); - -var msg22965 = msg("20798", dup202); - -var msg22966 = msg("20799", dup202); - -var msg22967 = msg("20800", dup202); - -var msg22968 = msg("20801", dup202); - -var msg22969 = msg("20802", dup267); - -var msg22970 = msg("20803", dup287); - -var msg22971 = msg("20804", dup267); - -var msg22972 = msg("20805", dup267); - -var msg22973 = msg("20806", dup267); - -var msg22974 = msg("20807", dup267); - -var msg22975 = msg("20808", dup267); - -var msg22976 = msg("20809", dup267); - -var msg22977 = msg("20810", dup267); - -var msg22978 = msg("20811", dup267); - -var msg22979 = msg("20812", dup197); - -var msg22980 = msg("20813", dup197); - -var msg22981 = msg("20814", dup201); - -var msg22982 = msg("20815", dup202); - -var msg22983 = msg("20816", dup202); - -var msg22984 = msg("20817", dup202); - -var msg22985 = msg("20818", dup202); - -var msg22986 = msg("20819", dup265); - -var msg22987 = msg("20820", dup267); - -var msg22988 = msg("20821", dup267); - -var msg22989 = msg("20822", dup267); - -var msg22990 = msg("20823", dup267); - -var msg22991 = msg("20824", dup267); - -var msg22992 = msg("20825", dup267); - -var msg22993 = msg("20826", dup201); - -var msg22994 = msg("20827", dup267); - -var msg22995 = msg("20828", dup265); - -var msg22996 = msg("20829", dup265); - -var msg22997 = msg("20830", dup192); - -var msg22998 = msg("20831", dup201); - -var msg22999 = msg("20832", dup260); - -var msg23000 = msg("20833", dup263); - -var msg23001 = msg("20834", dup267); - -var msg23002 = msg("20835", dup267); - -var msg23003 = msg("20836", dup202); - -var msg23004 = msg("20837", dup192); - -var msg23005 = msg("20838", dup192); - -var msg23006 = msg("20839", dup202); - -var msg23007 = msg("20840", dup202); - -var msg23008 = msg("20841", dup202); - -var msg23009 = msg("20842", dup197); - -var msg23010 = msg("20843", dup197); - -var msg23011 = msg("20844", dup202); - -var msg23012 = msg("20845", dup267); - -var msg23013 = msg("20846", dup197); - -var msg23014 = msg("20847", dup197); - -var msg23015 = msg("20848", dup202); - -var msg23016 = msg("20849", dup202); - -var msg23017 = msg("20850", dup202); - -var msg23018 = msg("20851", dup202); - -var msg23019 = msg("20852", dup287); - -var msg23020 = msg("20853", dup201); - -var msg23021 = msg("20854", dup202); - -var msg23022 = msg("20855", dup202); - -var msg23023 = msg("20856", dup202); - -var msg23024 = msg("20857", dup202); - -var msg23025 = msg("20858", dup197); - -var msg23026 = msg("20859", dup287); - -var msg23027 = msg("20860", dup202); - -var msg23028 = msg("20861", dup201); - -var msg23029 = msg("20862", dup265); - -var msg23030 = msg("20863", dup265); - -var msg23031 = msg("20864", dup265); - -var msg23032 = msg("20865", dup265); - -var msg23033 = msg("20866", dup265); - -var msg23034 = msg("20867", dup265); - -var msg23035 = msg("20868", dup265); - -var msg23036 = msg("20869", dup287); - -var msg23037 = msg("20870", dup201); - -var msg23038 = msg("20871", dup267); - -var msg23039 = msg("20872", dup267); - -var msg23040 = msg("20873", dup202); - -var msg23041 = msg("20874", dup267); - -var msg23042 = msg("20875", dup265); - -var msg23043 = msg("20876", dup267); - -var msg23044 = msg("20877", dup238); - -var msg23045 = msg("20878", dup276); - -var msg23046 = msg("20879", dup267); - -var msg23047 = msg("20880", dup267); - -var msg23048 = msg("20881", dup202); - -var msg23049 = msg("20882", dup202); - -var msg23050 = msg("20883", dup265); - -var msg23051 = msg("20884", dup267); - -var msg23052 = msg("20885", dup202); - -var msg23053 = msg("20886", dup202); - -var msg23054 = msg("20887", dup202); - -var msg23055 = msg("20888", dup202); - -var msg23056 = msg("20889", dup197); - -var msg23057 = msg("20890", dup202); - -var msg23058 = msg("20891", dup202); - -var msg23059 = msg("20892", dup238); - -var msg23060 = msg("20893", dup202); - -var msg23061 = msg("20894", dup202); - -var msg23062 = msg("20895", dup287); - -var msg23063 = msg("20896", dup287); - -var msg23064 = msg("20897", dup202); - -var msg23065 = msg("20898", dup202); - -var msg23066 = msg("20899", dup202); - -var msg23067 = msg("20900", dup197); - -var msg23068 = msg("20901", dup267); - -var msg23069 = msg("20902", dup197); - -var msg23070 = msg("20903", dup197); - -var msg23071 = msg("20904", dup197); - -var msg23072 = msg("20905", dup202); - -var msg23073 = msg("20906", dup202); - -var msg23074 = msg("20907", dup202); - -var msg23075 = msg("20908", dup202); - -var msg23076 = msg("20909", dup269); - -var msg23077 = msg("20910", dup269); - -var msg23078 = msg("20911", dup202); - -var msg23079 = msg("20912", dup202); - -var msg23080 = msg("20913", dup202); - -var msg23081 = msg("20914", dup202); - -var msg23082 = msg("20915", dup202); - -var msg23083 = msg("20916", dup202); - -var msg23084 = msg("20917", dup202); - -var msg23085 = msg("20918", dup202); - -var msg23086 = msg("20919", dup267); - -var msg23087 = msg("20920", dup267); - -var msg23088 = msg("20921", dup197); - -var msg23089 = msg("20922", dup197); - -var msg23090 = msg("20923", dup197); - -var msg23091 = msg("20924", dup202); - -var msg23092 = msg("20925", dup202); - -var msg23093 = msg("20926", dup202); - -var msg23094 = msg("20927", dup192); - -var msg23095 = msg("20928", dup202); - -var msg23096 = msg("20929", dup202); - -var msg23097 = msg("20930", dup202); - -var msg23098 = msg("20931", dup202); - -var msg23099 = msg("20932", dup202); - -var msg23100 = msg("20933", dup202); - -var msg23101 = msg("20934", dup202); - -var msg23102 = msg("20935", dup202); - -var msg23103 = msg("20936", dup202); - -var msg23104 = msg("20937", dup202); - -var msg23105 = msg("20938", dup202); - -var msg23106 = msg("20939", dup202); - -var msg23107 = msg("20940", dup202); - -var msg23108 = msg("20941", dup202); - -var msg23109 = msg("20942", dup202); - -var msg23110 = msg("20943", dup202); - -var msg23111 = msg("20944", dup202); - -var msg23112 = msg("20945", dup202); - -var msg23113 = msg("20946", dup202); - -var msg23114 = msg("20947", dup202); - -var msg23115 = msg("20948", dup202); - -var msg23116 = msg("20949", dup265); - -var msg23117 = msg("20950", dup202); - -var msg23118 = msg("20951", dup202); - -var msg23119 = msg("20952", dup202); - -var msg23120 = msg("20953", dup202); - -var msg23121 = msg("20954", dup202); - -var msg23122 = msg("20955", dup202); - -var msg23123 = msg("20956", dup202); - -var msg23124 = msg("20957", dup202); - -var msg23125 = msg("20958", dup202); - -var msg23126 = msg("20959", dup202); - -var msg23127 = msg("20960", dup202); - -var msg23128 = msg("20961", dup202); - -var msg23129 = msg("20962", dup202); - -var msg23130 = msg("20963", dup202); - -var msg23131 = msg("20964", dup202); - -var msg23132 = msg("20965", dup202); - -var msg23133 = msg("20966", dup202); - -var msg23134 = msg("20967", dup202); - -var msg23135 = msg("20968", dup202); - -var msg23136 = msg("20969", dup202); - -var msg23137 = msg("20970", dup202); - -var msg23138 = msg("20971", dup202); - -var msg23139 = msg("20972", dup202); - -var msg23140 = msg("20973", dup202); - -var msg23141 = msg("20974", dup202); - -var msg23142 = msg("20975", dup202); - -var msg23143 = msg("20976", dup202); - -var msg23144 = msg("20977", dup202); - -var msg23145 = msg("20978", dup202); - -var msg23146 = msg("20979", dup202); - -var msg23147 = msg("20980", dup202); - -var msg23148 = msg("20981", dup202); - -var msg23149 = msg("20982", dup202); - -var msg23150 = msg("20983", dup202); - -var msg23151 = msg("20984", dup202); - -var msg23152 = msg("20985", dup202); - -var msg23153 = msg("20986", dup202); - -var msg23154 = msg("20987", dup202); - -var msg23155 = msg("20988", dup267); - -var msg23156 = msg("20989", dup199); - -var msg23157 = msg("20990", dup199); - -var msg23158 = msg("20991", dup202); - -var msg23159 = msg("20992", dup202); - -var msg23160 = msg("20993", dup197); - -var msg23161 = msg("20994", dup197); - -var msg23162 = msg("20995", dup202); - -var msg23163 = msg("20996", dup202); - -var msg23164 = msg("20997", dup267); - -var msg23165 = msg("20998", dup267); - -var msg23166 = msg("20999", dup202); - -var msg23167 = msg("21000", dup202); - -var msg23168 = msg("21001", dup202); - -var msg23169 = msg("21002", dup202); - -var msg23170 = msg("21003", dup202); - -var msg23171 = msg("21004", dup202); - -var msg23172 = msg("21005", dup202); - -var msg23173 = msg("21006", dup202); - -var msg23174 = msg("21007", dup202); - -var msg23175 = msg("21008", dup202); - -var msg23176 = msg("21009", dup202); - -var msg23177 = msg("21010", dup202); - -var msg23178 = msg("21011", dup202); - -var msg23179 = msg("21012", dup202); - -var msg23180 = msg("21013", dup202); - -var msg23181 = msg("21014", dup202); - -var msg23182 = msg("21015", dup202); - -var msg23183 = msg("21016", dup202); - -var msg23184 = msg("21017", dup202); - -var msg23185 = msg("21018", dup202); - -var msg23186 = msg("21019", dup197); - -var msg23187 = msg("21020", dup197); - -var msg23188 = msg("21021", dup197); - -var msg23189 = msg("21022", dup265); - -var msg23190 = msg("21023", dup265); - -var msg23191 = msg("21024", dup265); - -var msg23192 = msg("21025", dup202); - -var msg23193 = msg("21026", dup265); - -var msg23194 = msg("21027", dup202); - -var msg23195 = msg("21028", dup192); - -var msg23196 = msg("21029", dup265); - -var msg23197 = msg("21030", dup265); - -var msg23198 = msg("21031", dup265); - -var msg23199 = msg("21032", dup265); - -var msg23200 = msg("21033", dup265); - -var msg23201 = msg("21034", dup265); - -var msg23202 = msg("21035", dup202); - -var msg23203 = msg("21036", dup202); - -var msg23204 = msg("21037", dup287); - -var msg23205 = msg("21038", dup287); - -var msg23206 = msg("21039", dup287); - -var msg23207 = msg("21040", dup287); - -var msg23208 = msg("21041", dup202); - -var msg23209 = msg("21042", dup202); - -var msg23210 = msg("21043", dup202); - -var msg23211 = msg("21044", dup202); - -var msg23212 = msg("21045", dup202); - -var msg23213 = msg("21046", dup269); - -var msg23214 = msg("21047", dup269); - -var msg23215 = msg("21048", dup263); - -var msg23216 = msg("21049", dup263); - -var msg23217 = msg("21050", dup197); - -var msg23218 = msg("21051", dup267); - -var msg23219 = msg("21052", dup202); - -var msg23220 = msg("21053", dup202); - -var msg23221 = msg("21054", dup202); - -var msg23222 = msg("21055", dup192); - -var msg23223 = msg("21056", dup202); - -var msg23224 = msg("21057", dup201); - -var msg23225 = msg("21058", dup202); - -var msg23226 = msg("21059", dup202); - -var msg23227 = msg("21060", dup267); - -var msg23228 = msg("21061", dup202); - -var msg23229 = msg("21062", dup202); - -var msg23230 = msg("21063", dup265); - -var msg23231 = msg("21064", dup265); - -var msg23232 = msg("21065", dup201); - -var msg23233 = msg("21066", dup201); - -var msg23234 = msg("21067", dup201); - -var msg23235 = msg("21068", dup267); - -var msg23236 = msg("21069", dup267); - -var msg23237 = msg("21070", dup267); - -var msg23238 = msg("21071", dup267); - -var msg23239 = msg("21072", dup267); - -var msg23240 = msg("21073", dup267); - -var msg23241 = msg("21074", dup267); - -var msg23242 = msg("21075", dup267); - -var msg23243 = msg("21076", dup265); - -var msg23244 = msg("21077", dup202); - -var msg23245 = msg("21078", dup267); - -var msg23246 = msg("21079", dup202); - -var msg23247 = msg("21080", dup267); - -var msg23248 = msg("21081", dup267); - -var msg23249 = msg("21082", dup202); - -var msg23250 = msg("21083", dup202); - -var msg23251 = msg("21084", dup260); - -var msg23252 = msg("21085", dup260); - -var msg23253 = msg("21086", dup267); - -var msg23254 = msg("21087", dup238); - -var msg23255 = msg("21088", dup267); - -var msg23256 = msg("21089", dup267); - -var msg23257 = msg("21090", dup267); - -var msg23258 = msg("21091", dup267); - -var msg23259 = msg("21092", dup267); - -var msg23260 = msg("21093", dup267); - -var msg23261 = msg("21094", dup265); - -var msg23262 = msg("21095", dup265); - -var msg23263 = msg("21096", dup267); - -var msg23264 = msg("21097", dup267); - -var msg23265 = msg("21098", dup267); - -var msg23266 = msg("21099", dup267); - -var msg23267 = msg("21100", dup197); - -var msg23268 = msg("21101", dup287); - -var msg23269 = msg("21102", dup287); - -var msg23270 = msg("21103", dup287); - -var msg23271 = msg("21104", dup198); - -var msg23272 = msg("21105", dup197); - -var msg23273 = msg("21106", dup202); - -var msg23274 = msg("21107", dup197); - -var msg23275 = msg("21108", dup267); - -var msg23276 = msg("21109", dup202); - -var msg23277 = msg("21110", dup202); - -var msg23278 = msg("21111", dup202); - -var msg23279 = msg("21112", dup267); - -var msg23280 = msg("21113", dup202); - -var msg23281 = msg("21114", dup202); - -var msg23282 = msg("21115", dup202); - -var msg23283 = msg("21116", dup267); - -var msg23284 = msg("21117", dup192); - -var msg23285 = msg("21118", dup192); - -var msg23286 = msg("21119", dup192); - -var msg23287 = msg("21120", dup192); - -var msg23288 = msg("21121", dup192); - -var msg23289 = msg("21122", dup202); - -var msg23290 = msg("21123", dup202); - -var msg23291 = msg("21124", dup202); - -var msg23292 = msg("21125", dup202); - -var msg23293 = msg("21126", dup202); - -var msg23294 = msg("21127", dup202); - -var msg23295 = msg("21128", dup202); - -var msg23296 = msg("21129", dup192); - -var msg23297 = msg("21130", dup192); - -var msg23298 = msg("21131", dup192); - -var msg23299 = msg("21132", dup192); - -var msg23300 = msg("21133", dup192); - -var msg23301 = msg("21134", dup192); - -var msg23302 = msg("21135", dup192); - -var msg23303 = msg("21136", dup192); - -var msg23304 = msg("21137", dup192); - -var msg23305 = msg("21138", dup192); - -var msg23306 = msg("21139", dup192); - -var msg23307 = msg("21140", dup192); - -var msg23308 = msg("21141", dup267); - -var msg23309 = msg("21142", dup202); - -var msg23310 = msg("21143", dup202); - -var msg23311 = msg("21144", dup202); - -var msg23312 = msg("21145", dup202); - -var msg23313 = msg("21146", dup197); - -var msg23314 = msg("21147", dup197); - -var msg23315 = msg("21148", dup197); - -var msg23316 = msg("21149", dup197); - -var msg23317 = msg("21150", dup198); - -var msg23318 = msg("21151", dup202); - -var msg23319 = msg("21152", dup202); - -var msg23320 = msg("21153", dup202); - -var msg23321 = msg("21154", dup197); - -var msg23322 = msg("21155", dup197); - -var msg23323 = msg("21156", dup267); - -var msg23324 = msg("21157", dup267); - -var msg23325 = msg("21158", dup267); - -var msg23326 = msg("21159", dup267); - -var msg23327 = msg("21160", dup197); - -var msg23328 = msg("21161", dup265); - -var msg23329 = msg("21162", dup197); - -var msg23330 = msg("21163", dup197); - -var msg23331 = msg("21164", dup201); - -var msg23332 = msg("21165", dup265); - -var msg23333 = msg("21166", dup267); - -var msg23334 = msg("21167", dup267); - -var msg23335 = msg("21168", dup197); - -var msg23336 = msg("21169", dup303); - -var msg23337 = msg("21170", dup267); - -var msg23338 = msg("21171", dup320); - -var msg23339 = msg("21172", dup320); - -var msg23340 = msg("21173", dup320); - -var msg23341 = msg("21174", dup202); - -var msg23342 = msg("21175", dup269); - -var msg23343 = msg("21176", dup303); - -var msg23344 = msg("21177", dup192); - -var msg23345 = msg("21178", dup192); - -var msg23346 = msg("21179", dup192); - -var msg23347 = msg("21180", dup238); - -var msg23348 = msg("21181", dup192); - -var msg23349 = msg("21182", dup192); - -var msg23350 = msg("21183", dup192); - -var msg23351 = msg("21184", dup303); - -var msg23352 = msg("21185", dup238); - -var msg23353 = msg("21186", dup267); - -var msg23354 = msg("21187", dup192); - -var msg23355 = msg("21188", dup269); - -var msg23356 = msg("21189", dup267); - -var msg23357 = msg("21190", dup287); - -var msg23358 = msg("21191", dup276); - -var msg23359 = msg("21192", dup192); - -var msg23360 = msg("21193", dup192); - -var msg23361 = msg("21194", dup192); - -var msg23362 = msg("21195", dup192); - -var msg23363 = msg("21196", dup192); - -var msg23364 = msg("21197", dup192); - -var msg23365 = msg("21198", dup192); - -var msg23366 = msg("21199", dup192); - -var msg23367 = msg("21200", dup192); - -var msg23368 = msg("21201", dup192); - -var msg23369 = msg("21202", dup192); - -var msg23370 = msg("21203", dup263); - -var msg23371 = msg("21204", dup263); - -var msg23372 = msg("21205", dup263); - -var msg23373 = msg("21206", dup269); - -var msg23374 = msg("21207", dup192); - -var msg23375 = msg("21208", dup192); - -var msg23376 = msg("21209", dup192); - -var msg23377 = msg("21210", dup192); - -var msg23378 = msg("21211", dup192); - -var msg23379 = msg("21212", dup192); - -var msg23380 = msg("21213", dup238); - -var msg23381 = msg("21214", dup265); - -var msg23382 = msg("21215", dup192); - -var msg23383 = msg("21216", dup192); - -var msg23384 = msg("21217", dup192); - -var msg23385 = msg("21218", dup192); - -var msg23386 = msg("21219", dup192); - -var msg23387 = msg("21220", dup192); - -var msg23388 = msg("21221", dup192); - -var msg23389 = msg("21222", dup202); - -var msg23390 = msg("21223", dup192); - -var msg23391 = msg("21224", dup192); - -var msg23392 = msg("21225", dup269); - -var msg23393 = msg("21226", dup202); - -var msg23394 = msg("21227", dup192); - -var msg23395 = msg("21228", dup202); - -var msg23396 = msg("21229", dup198); - -var msg23397 = msg("21230", dup192); - -var msg23398 = msg("21231", dup202); - -var msg23399 = msg("21232", dup202); - -var msg23400 = msg("21233", dup265); - -var msg23401 = msg("21234", dup309); - -var msg23402 = msg("21235", dup197); - -var msg23403 = msg("21236", dup197); - -var msg23404 = msg("21237", dup197); - -var msg23405 = msg("21238", dup197); - -var msg23406 = msg("21239", dup202); - -var msg23407 = msg("21240", dup192); - -var msg23408 = msg("21241", dup192); - -var msg23409 = msg("21242", dup192); - -var msg23410 = msg("21243", dup267); - -var msg23411 = msg("21244", dup267); - -var msg23412 = msg("21245", dup263); - -var msg23413 = msg("21246", dup269); - -var msg23414 = msg("21247", dup197); - -var msg23415 = msg("21248", dup197); - -var msg23416 = msg("21249", dup192); - -var msg23417 = msg("21250", dup192); - -var msg23418 = msg("21251", dup192); - -var msg23419 = msg("21252", dup192); - -var msg23420 = msg("21253", dup267); - -var msg23421 = msg("21254", dup265); - -var msg23422 = msg("21255", dup227); - -var msg23423 = msg("21256", dup227); - -var msg23424 = msg("21257", dup194); - -var msg23425 = msg("21258", dup199); - -var msg23426 = msg("21259", dup267); - -var msg23427 = msg("21260", dup198); - -var msg23428 = msg("21261", dup197); - -var msg23429 = msg("21262", dup255); - -var msg23430 = msg("21263", dup197); - -var msg23431 = msg("21264", dup202); - -var msg23432 = msg("21265", dup199); - -var msg23433 = msg("21266", dup269); - -var msg23434 = msg("21267", dup287); - -var msg23435 = msg("21268", dup267); - -var msg23436 = msg("21269", dup202); - -var msg23437 = msg("21270", dup201); - -var msg23438 = msg("21271", dup260); - -var msg23439 = msg("21272", dup267); - -var msg23440 = msg("21273", dup202); - -var msg23441 = msg("21274", dup202); - -var msg23442 = msg("21275", dup192); - -var msg23443 = msg("21276", dup192); - -var msg23444 = msg("21277", dup192); - -var msg23445 = msg("21278", dup269); - -var msg23446 = msg("21279", dup192); - -var msg23447 = msg("21280", dup192); - -var msg23448 = msg("21281", dup267); - -var msg23449 = msg("21282", dup202); - -var msg23450 = msg("21283", dup202); - -var msg23451 = msg("21284", dup202); - -var msg23452 = msg("21285", dup202); - -var msg23453 = msg("21286", dup202); - -var msg23454 = msg("21287", dup202); - -var msg23455 = msg("21288", dup202); - -var msg23456 = msg("21289", dup276); - -var msg23457 = msg("21290", dup267); - -var msg23458 = msg("21291", dup202); - -var msg23459 = msg("21292", dup267); - -var msg23460 = msg("21293", dup267); - -var msg23461 = msg("21294", dup192); - -var msg23462 = msg("21295", dup202); - -var msg23463 = msg("21296", dup202); - -var msg23464 = msg("21297", dup265); - -var msg23465 = msg("21298", dup265); - -var msg23466 = msg("21299", dup267); - -var msg23467 = msg("21300", dup265); - -var msg23468 = msg("21301", dup267); - -var msg23469 = msg("21302", dup267); - -var msg23470 = msg("21303", dup192); - -var msg23471 = msg("21304", dup192); - -var msg23472 = msg("21305", dup197); - -var msg23473 = msg("21306", dup202); - -var msg23474 = msg("21307", dup267); - -var msg23475 = msg("21308", dup267); - -var msg23476 = msg("21309", dup276); - -var msg23477 = msg("21310", dup267); - -var msg23478 = msg("21311", dup202); - -var msg23479 = msg("21312", dup202); - -var msg23480 = msg("21313", dup202); - -var msg23481 = msg("21314", dup265); - -var msg23482 = msg("21315", dup198); - -var msg23483 = msg("21316", dup267); - -var msg23484 = msg("21317", dup197); - -var msg23485 = msg("21318", dup202); - -var msg23486 = msg("21319", dup276); - -var msg23487 = msg("21320", dup276); - -var msg23488 = msg("21321", dup276); - -var msg23489 = msg("21322", dup267); - -var msg23490 = msg("21323", dup267); - -var msg23491 = msg("21324", dup267); - -var msg23492 = msg("21325", dup202); - -var msg23493 = msg("21326", dup267); - -var msg23494 = msg("21327", dup194); - -var msg23495 = msg("21328", dup201); - -var msg23496 = msg("21329", dup201); - -var msg23497 = msg("21330", dup201); - -var msg23498 = msg("21331", dup201); - -var msg23499 = msg("21332", dup202); - -var msg23500 = msg("21333", dup265); - -var msg23501 = msg("21334", dup265); - -var msg23502 = msg("21335", dup287); - -var msg23503 = msg("21336", dup202); - -var msg23504 = msg("21337", dup265); - -var msg23505 = msg("21338", dup202); - -var msg23506 = msg("21339", dup267); - -var msg23507 = msg("21340", dup267); - -var msg23508 = msg("21341", dup267); - -var msg23509 = msg("21342", dup267); - -var msg23510 = msg("21343", dup267); - -var msg23511 = msg("21344", dup267); - -var msg23512 = msg("21345", dup267); - -var msg23513 = msg("21346", dup267); - -var msg23514 = msg("21347", dup202); - -var msg23515 = msg("21348", dup202); - -var msg23516 = msg("21349", dup197); - -var msg23517 = msg("21350", dup197); - -var msg23518 = msg("21351", dup267); - -var msg23519 = msg("21352", dup267); - -var msg23520 = msg("21353", dup269); - -var msg23521 = msg("21354", dup313); - -var msg23522 = msg("21355", dup313); - -var msg23523 = msg("21356", dup265); - -var msg23524 = msg("21357", dup267); - -var msg23525 = msg("21358", dup201); - -var msg23526 = msg("21359", dup192); - -var msg23527 = msg("21360", dup192); - -var msg23528 = msg("21361", dup238); - -var msg23529 = msg("21362", dup192); - -var msg23530 = msg("21363", dup202); - -var msg23531 = msg("21364", dup192); - -var msg23532 = msg("21365", dup192); - -var msg23533 = msg("21366", dup192); - -var msg23534 = msg("21367", dup192); - -var msg23535 = msg("21368", dup202); - -var msg23536 = msg("21369", dup202); - -var msg23537 = msg("21370", dup197); - -var msg23538 = msg("21371", dup197); - -var msg23539 = msg("21372", dup263); - -var msg23540 = msg("21373", dup263); - -var msg23541 = msg("21374", dup192); - -var msg23542 = msg("21375", dup267); - -var msg23543 = msg("21376", dup192); - -var msg23544 = msg("21377", dup260); - -var msg23545 = msg("21378", dup201); - -var msg23546 = msg("21379", dup202); - -var msg23547 = msg("21380", dup202); - -var msg23548 = msg("21381", dup202); - -var msg23549 = msg("21382", dup202); - -var msg23550 = msg("21383", dup202); - -var msg23551 = msg("21384", dup202); - -var msg23552 = msg("21385", dup265); - -var msg23553 = msg("21386", dup202); - -var msg23554 = msg("21387", dup267); - -var msg23555 = msg("21388", dup265); - -var msg23556 = msg("21389", dup265); - -var msg23557 = msg("21390", dup202); - -var msg23558 = msg("21391", dup202); - -var msg23559 = msg("21392", dup267); - -var msg23560 = msg("21393", dup197); - -var msg23561 = msg("21394", dup267); - -var msg23562 = msg("21395", dup260); - -var msg23563 = msg("21396", dup260); - -var msg23564 = msg("21397", dup197); - -var msg23565 = msg("21398", dup202); - -var msg23566 = msg("21399", dup267); - -var msg23567 = msg("21400", dup192); - -var msg23568 = msg("21401", dup192); - -var msg23569 = msg("21402", dup192); - -var msg23570 = msg("21403", dup238); - -var msg23571 = msg("21404", dup238); - -var msg23572 = msg("21405", dup267); - -var msg23573 = msg("21406", dup265); - -var msg23574 = msg("21407", dup201); - -var msg23575 = msg("21408", dup265); - -var msg23576 = msg("21409", dup201); - -var msg23577 = msg("21410", dup202); - -var msg23578 = msg("21411", dup202); - -var msg23579 = msg("21412", dup202); - -var msg23580 = msg("21413", dup201); - -var msg23581 = msg("21414", dup267); - -var msg23582 = msg("21415", dup267); - -var msg23583 = msg("21416", dup192); - -var msg23584 = msg("21417", dup267); - -var msg23585 = msg("21418", dup192); - -var msg23586 = msg("21419", dup197); - -var msg23587 = msg("21420", dup197); - -var msg23588 = msg("21421", dup197); - -var msg23589 = msg("21422", dup267); - -var msg23590 = msg("21423", dup267); - -var msg23591 = msg("21424", dup192); - -var msg23592 = msg("21425", dup192); - -var msg23593 = msg("21426", dup192); - -var msg23594 = msg("21427", dup192); - -var msg23595 = msg("21428", dup192); - -var msg23596 = msg("21429", dup269); - -var msg23597 = msg("21430", dup192); - -var msg23598 = msg("21431", dup267); - -var msg23599 = msg("21432", dup202); - -var msg23600 = msg("21433", dup202); - -var msg23601 = msg("21434", dup192); - -var msg23602 = msg("21435", dup192); - -var msg23603 = msg("21436", dup192); - -var msg23604 = msg("21437", dup197); - -var msg23605 = msg("21438", dup267); - -var msg23606 = msg("21439", dup267); - -var msg23607 = msg("21440", dup192); - -var msg23608 = msg("21441", dup202); - -var msg23609 = msg("21442", dup269); - -var msg23610 = msg("21443", dup202); - -var msg23611 = msg("21444", dup202); - -var msg23612 = msg("21445", dup227); - -var msg23613 = msg("21446", dup202); - -var msg23614 = msg("21447", dup202); - -var msg23615 = msg("21448", dup192); - -var msg23616 = msg("21449", dup192); - -var msg23617 = msg("21450", dup192); - -var msg23618 = msg("21451", dup269); - -var msg23619 = msg("21452", dup192); - -var msg23620 = msg("21453", dup269); - -var msg23621 = msg("21454", dup192); - -var msg23622 = msg("21455", dup269); - -var msg23623 = msg("21456", dup202); - -var msg23624 = msg("21457", dup267); - -var msg23625 = msg("21458", dup267); - -var msg23626 = msg("21459", dup260); - -var msg23627 = msg("21460", dup202); - -var msg23628 = msg("21461", dup202); - -var msg23629 = msg("21462", dup202); - -var msg23630 = msg("21463", dup202); - -var msg23631 = msg("21464", dup202); - -var msg23632 = msg("21465", dup265); - -var msg23633 = msg("21466", dup202); - -var msg23634 = msg("21467", dup202); - -var msg23635 = msg("21468", dup192); - -var msg23636 = msg("21469", dup269); - -var msg23637 = msg("21470", dup192); - -var msg23638 = msg("21471", dup202); - -var msg23639 = msg("21472", dup192); - -var msg23640 = msg("21473", dup192); - -var msg23641 = msg("21474", dup192); - -var msg23642 = msg("21475", dup269); - -var msg23643 = msg("21476", dup269); - -var msg23644 = msg("21477", dup192); - -var msg23645 = msg("21478", dup202); - -var msg23646 = msg("21479", dup202); - -var msg23647 = msg("21480", dup202); - -var msg23648 = msg("21481", dup267); - -var msg23649 = msg("21482", dup199); - -var msg23650 = msg("21483", dup197); - -var msg23651 = msg("21484", dup201); - -var msg23652 = msg("21485", dup198); - -var msg23653 = msg("21486", dup192); - -var msg23654 = msg("21487", dup192); - -var msg23655 = msg("21488", dup269); - -var msg23656 = msg("21489", dup267); - -var msg23657 = msg("21490", dup202); - -var msg23658 = msg("21491", dup197); - -var msg23659 = msg("21492", dup202); - -var msg23660 = msg("21493", dup265); - -var msg23661 = msg("21494", dup192); - -var msg23662 = msg("21495", dup192); - -var msg23663 = msg("21496", dup192); - -var msg23664 = msg("21497", dup192); - -var msg23665 = msg("21498", dup202); - -var msg23666 = msg("21499", dup202); - -var msg23667 = msg("21500", dup202); - -var msg23668 = msg("21501", dup265); - -var msg23669 = msg("21502", dup192); - -var msg23670 = msg("21503", dup267); - -var msg23671 = msg("21504", dup267); - -var msg23672 = msg("21505", dup267); - -var msg23673 = msg("21506", dup267); - -var msg23674 = msg("21507", dup267); - -var msg23675 = msg("21508", dup267); - -var msg23676 = msg("21509", dup267); - -var msg23677 = msg("21510", dup267); - -var msg23678 = msg("21511", dup192); - -var msg23679 = msg("21512", dup192); - -var msg23680 = msg("21513", dup198); - -var msg23681 = msg("21514", dup192); - -var msg23682 = msg("21515", dup265); - -var msg23683 = msg("21516", dup265); - -var msg23684 = msg("21517", dup265); - -var msg23685 = msg("21518", dup192); - -var msg23686 = msg("21519", dup202); - -var msg23687 = msg("21520", dup192); - -var msg23688 = msg("21521", dup192); - -var msg23689 = msg("21522", dup267); - -var msg23690 = msg("21523", dup192); - -var msg23691 = msg("21524", dup267); - -var msg23692 = msg("21525", dup192); - -var msg23693 = msg("21526", dup269); - -var msg23694 = msg("21527", dup192); - -var msg23695 = msg("21528", dup192); - -var msg23696 = msg("21529", dup197); - -var msg23697 = msg("21530", dup287); - -var msg23698 = msg("21531", dup265); - -var msg23699 = msg("21532", dup265); - -var msg23700 = msg("21533", dup287); - -var msg23701 = msg("21534", dup201); - -var msg23702 = msg("21535", dup201); - -var msg23703 = msg("21536", dup265); - -var msg23704 = msg("21537", dup269); - -var msg23705 = msg("21538", dup202); - -var msg23706 = msg("21539", dup202); - -var msg23707 = msg("21540", dup192); - -var msg23708 = msg("21541", dup192); - -var msg23709 = msg("21542", dup192); - -var msg23710 = msg("21543", dup192); - -var msg23711 = msg("21544", dup313); - -var msg23712 = msg("21545", dup313); - -var all52 = all_match({ - processors: [ - dup66, - dup178, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup120, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg23713 = msg("21546", all52); - -var msg23714 = msg("21547", dup192); - -var msg23715 = msg("21548", dup202); - -var msg23716 = msg("21549", dup202); - -var msg23717 = msg("21550", dup192); - -var msg23718 = msg("21551", dup192); - -var msg23719 = msg("21552", dup192); - -var msg23720 = msg("21553", dup192); - -var msg23721 = msg("21554", dup192); - -var msg23722 = msg("21555", dup205); - -var msg23723 = msg("21556", dup202); - -var msg23724 = msg("21557", dup201); - -var msg23725 = msg("21558", dup265); - -var msg23726 = msg("21559", dup265); - -var msg23727 = msg("21560", dup265); - -var msg23728 = msg("21561", dup265); - -var msg23729 = msg("21562", dup192); - -var msg23730 = msg("21563", dup192); - -var msg23731 = msg("21564", dup192); - -var msg23732 = msg("21565", dup192); - -var msg23733 = msg("21566", dup276); - -var msg23734 = msg("21567", dup267); - -var msg23735 = msg("21568", dup198); - -var msg23736 = msg("21569", dup265); - -var msg23737 = msg("21570", dup197); - -var msg23738 = msg("21571", dup267); - -var msg23739 = msg("21572", dup267); - -var msg23740 = msg("21573", dup202); - -var msg23741 = msg("21574", dup202); - -var msg23742 = msg("21575", dup202); - -var msg23743 = msg("21576", dup202); - -var msg23744 = msg("21577", dup202); - -var msg23745 = msg("21578", dup202); - -var msg23746 = msg("21579", dup202); - -var msg23747 = msg("21580", dup202); - -var msg23748 = msg("21581", dup202); - -var msg23749 = msg("21582", dup202); - -var msg23750 = msg("21583", dup269); - -var msg23751 = msg("21584", dup202); - -var msg23752 = msg("21585", dup202); - -var msg23753 = msg("21586", dup202); - -var msg23754 = msg("21587", dup267); - -var msg23755 = msg("21588", dup263); - -var msg23756 = msg("21589", dup265); - -var msg23757 = msg("21590", dup265); - -var msg23758 = msg("21591", dup263); - -var msg23759 = msg("21592", dup267); - -var msg23760 = msg("21593", dup192); - -var msg23761 = msg("21594", dup267); - -var msg23762 = msg("21595", dup202); - -var msg23763 = msg("21596", dup202); - -var msg23764 = msg("21597", dup202); - -var msg23765 = msg("21598", dup202); - -var msg23766 = msg("21599", dup201); - -var msg23767 = msg("21600", dup201); - -var msg23768 = msg("21601", dup201); - -var msg23769 = msg("21602", dup201); - -var msg23770 = msg("21603", dup201); - -var msg23771 = msg("21604", dup201); - -var msg23772 = msg("21605", dup201); - -var msg23773 = msg("21606", dup201); - -var msg23774 = msg("21607", dup267); - -var msg23775 = msg("21608", dup198); - -var msg23776 = msg("21609", dup267); - -var msg23777 = msg("21610", dup192); - -var msg23778 = msg("21611", dup202); - -var msg23779 = msg("21612", dup202); - -var msg23780 = msg("21613", dup202); - -var msg23781 = msg("21614", dup202); - -var msg23782 = msg("21615", dup202); - -var msg23783 = msg("21616", dup202); - -var msg23784 = msg("21617", dup202); - -var msg23785 = msg("21618", dup202); - -var msg23786 = msg("21619", dup267); - -var msg23787 = msg("21620", dup202); - -var msg23788 = msg("21621", dup202); - -var msg23789 = msg("21622", dup192); - -var msg23790 = msg("21623", dup202); - -var msg23791 = msg("21624", dup202); - -var msg23792 = msg("21625", dup202); - -var msg23793 = msg("21626", dup202); - -var msg23794 = msg("21627", dup202); - -var msg23795 = msg("21628", dup202); - -var msg23796 = msg("21629", dup265); - -var msg23797 = msg("21630", dup265); - -var msg23798 = msg("21631", dup192); - -var msg23799 = msg("21632", dup192); - -var msg23800 = msg("21633", dup276); - -var msg23801 = msg("21634", dup267); - -var msg23802 = msg("21635", dup192); - -var msg23803 = msg("21636", dup263); - -var msg23804 = msg("21637", dup312); - -var msg23805 = msg("21638", dup192); - -var msg23806 = msg("21639", dup263); - -var msg23807 = msg("21640", dup267); - -var msg23808 = msg("21641", dup192); - -var msg23809 = msg("21642", dup269); - -var msg23810 = msg("21643", dup192); - -var msg23811 = msg("21644", dup263); - -var msg23812 = msg("21645", dup263); - -var msg23813 = msg("21646", dup202); - -var msg23814 = msg("21647", dup202); - -var msg23815 = msg("21648", dup202); - -var msg23816 = msg("21649", dup202); - -var msg23817 = msg("21650", dup202); - -var msg23818 = msg("21651", dup202); - -var msg23819 = msg("21652", dup202); - -var msg23820 = msg("21653", dup265); - -var msg23821 = msg("21654", dup202); - -var msg23822 = msg("21655", dup267); - -var msg23823 = msg("21656", dup267); - -var msg23824 = msg("21657", dup202); - -var msg23825 = msg("21658", dup202); - -var msg23826 = msg("21659", dup202); - -var msg23827 = msg("21660", dup202); - -var msg23828 = msg("21661", dup202); - -var msg23829 = msg("21662", dup248); - -var msg23830 = msg("21663", dup260); - -var msg23831 = msg("21664", dup202); - -var msg23832 = msg("21665", dup202); - -var msg23833 = msg("21666", dup202); - -var msg23834 = msg("21667", dup265); - -var msg23835 = msg("21668", dup267); - -var msg23836 = msg("21669", dup287); - -var msg23837 = msg("21670", dup267); - -var msg23838 = msg("21671", dup201); - -var msg23839 = msg("21672", dup201); - -var msg23840 = msg("21673", dup287); - -var msg23841 = msg("21674", dup197); - -var msg23842 = msg("21675", dup197); - -var msg23843 = msg("21676", dup197); - -var msg23844 = msg("21677", dup197); - -var msg23845 = msg("21678", dup267); - -var msg23846 = msg("21679", dup267); - -var msg23847 = msg("21680", dup267); - -var msg23848 = msg("21681", dup267); - -var msg23849 = msg("21682", dup267); - -var msg23850 = msg("21683", dup267); - -var msg23851 = msg("21684", dup267); - -var msg23852 = msg("21685", dup267); - -var msg23853 = msg("21686", dup267); - -var msg23854 = msg("21687", dup202); - -var msg23855 = msg("21688", dup202); - -var msg23856 = msg("21689", dup202); - -var msg23857 = msg("21690", dup202); - -var msg23858 = msg("21691", dup202); - -var msg23859 = msg("21692", dup202); - -var msg23860 = msg("21693", dup202); - -var msg23861 = msg("21694", dup202); - -var msg23862 = msg("21695", dup202); - -var msg23863 = msg("21696", dup202); - -var msg23864 = msg("21697", dup202); - -var msg23865 = msg("21698", dup202); - -var msg23866 = msg("21699", dup202); - -var msg23867 = msg("21700", dup202); - -var msg23868 = msg("21701", dup202); - -var msg23869 = msg("21702", dup202); - -var msg23870 = msg("21703", dup202); - -var msg23871 = msg("21704", dup202); - -var msg23872 = msg("21705", dup202); - -var msg23873 = msg("21706", dup202); - -var msg23874 = msg("21707", dup202); - -var msg23875 = msg("21708", dup202); - -var msg23876 = msg("21709", dup202); - -var msg23877 = msg("21710", dup202); - -var msg23878 = msg("21711", dup202); - -var msg23879 = msg("21712", dup202); - -var msg23880 = msg("21713", dup202); - -var msg23881 = msg("21714", dup202); - -var msg23882 = msg("21715", dup202); - -var msg23883 = msg("21716", dup202); - -var msg23884 = msg("21717", dup202); - -var msg23885 = msg("21718", dup202); - -var msg23886 = msg("21719", dup202); - -var msg23887 = msg("21720", dup202); - -var msg23888 = msg("21721", dup202); - -var msg23889 = msg("21722", dup202); - -var msg23890 = msg("21723", dup202); - -var msg23891 = msg("21724", dup202); - -var msg23892 = msg("21725", dup202); - -var msg23893 = msg("21726", dup202); - -var msg23894 = msg("21727", dup202); - -var msg23895 = msg("21728", dup202); - -var msg23896 = msg("21729", dup202); - -var msg23897 = msg("21730", dup202); - -var msg23898 = msg("21731", dup202); - -var msg23899 = msg("21732", dup202); - -var msg23900 = msg("21733", dup202); - -var msg23901 = msg("21734", dup202); - -var msg23902 = msg("21735", dup202); - -var msg23903 = msg("21736", dup202); - -var msg23904 = msg("21737", dup202); - -var msg23905 = msg("21738", dup202); - -var msg23906 = msg("21739", dup202); - -var msg23907 = msg("21740", dup202); - -var msg23908 = msg("21741", dup202); - -var msg23909 = msg("21742", dup202); - -var msg23910 = msg("21743", dup202); - -var msg23911 = msg("21744", dup202); - -var msg23912 = msg("21745", dup202); - -var msg23913 = msg("21746", dup202); - -var msg23914 = msg("21747", dup202); - -var msg23915 = msg("21748", dup202); - -var msg23916 = msg("21749", dup202); - -var msg23917 = msg("21750", dup202); - -var msg23918 = msg("21751", dup202); - -var msg23919 = msg("21752", dup197); - -var msg23920 = msg("21753", dup197); - -var msg23921 = msg("21754", dup265); - -var msg23922 = msg("21755", dup202); - -var msg23923 = msg("21756", dup202); - -var msg23924 = msg("21757", dup202); - -var msg23925 = msg("21758", dup202); - -var msg23926 = msg("21759", dup197); - -var msg23927 = msg("21760", dup202); - -var msg23928 = msg("21761", dup202); - -var msg23929 = msg("21762", dup197); - -var msg23930 = msg("21763", dup198); - -var msg23931 = msg("21764", dup197); - -var msg23932 = msg("21765", dup202); - -var msg23933 = msg("21766", dup267); - -var msg23934 = msg("21767", dup287); - -var msg23935 = msg("21768", dup287); - -var msg23936 = msg("21769", dup192); - -var msg23937 = msg("21770", dup197); - -var msg23938 = msg("21771", dup197); - -var msg23939 = msg("21772", dup197); - -var msg23940 = msg("21773", dup197); - -var msg23941 = msg("21774", dup197); - -var msg23942 = msg("21775", dup197); - -var msg23943 = msg("21776", dup198); - -var msg23944 = msg("21777", dup260); - -var msg23945 = msg("21778", dup260); - -var msg23946 = msg("21779", dup260); - -var msg23947 = msg("21780", dup260); - -var msg23948 = msg("21781", dup260); - -var msg23949 = msg("21782", dup267); - -var msg23950 = msg("21783", dup267); - -var msg23951 = msg("21784", dup267); - -var msg23952 = msg("21785", dup201); - -var msg23953 = msg("21786", dup201); - -var msg23954 = msg("21787", dup201); - -var msg23955 = msg("21788", dup260); - -var msg23956 = msg("21789", dup260); - -var msg23957 = msg("21790", dup269); - -var msg23958 = msg("21791", dup265); - -var msg23959 = msg("21792", dup202); - -var msg23960 = msg("21793", dup265); - -var msg23961 = msg("21794", dup197); - -var msg23962 = msg("21795", dup285); - -var msg23963 = msg("21796", dup265); - -var msg23964 = msg("21797", dup197); - -var msg23965 = msg("21798", dup197); - -var msg23966 = msg("21799", dup197); - -var msg23967 = msg("21800", dup197); - -var msg23968 = msg("21801", dup197); - -var msg23969 = msg("21802", dup202); - -var msg23970 = msg("21803", dup202); - -var msg23971 = msg("21804", dup202); - -var msg23972 = msg("21805", dup197); - -var msg23973 = msg("21806", dup276); - -var msg23974 = msg("21807", dup202); - -var msg23975 = msg("21808", dup202); - -var msg23976 = msg("21809", dup202); - -var msg23977 = msg("21810", dup202); - -var msg23978 = msg("21811", dup202); - -var msg23979 = msg("21812", dup202); - -var msg23980 = msg("21813", dup202); - -var msg23981 = msg("21814", dup202); - -var msg23982 = msg("21815", dup202); - -var msg23983 = msg("21816", dup202); - -var msg23984 = msg("21817", dup198); - -var msg23985 = msg("21818", dup265); - -var msg23986 = msg("21819", dup265); - -var msg23987 = msg("21820", dup265); - -var msg23988 = msg("21821", dup265); - -var msg23989 = msg("21822", dup265); - -var msg23990 = msg("21823", dup265); - -var msg23991 = msg("21824", dup265); - -var msg23992 = msg("21825", dup265); - -var msg23993 = msg("21826", dup265); - -var msg23994 = msg("21827", dup265); - -var msg23995 = msg("21828", dup265); - -var msg23996 = msg("21829", dup265); - -var msg23997 = msg("21830", dup265); - -var msg23998 = msg("21831", dup265); - -var msg23999 = msg("21832", dup265); - -var msg24000 = msg("21833", dup265); - -var msg24001 = msg("21834", dup265); - -var msg24002 = msg("21835", dup265); - -var msg24003 = msg("21836", dup265); - -var msg24004 = msg("21837", dup265); - -var msg24005 = msg("21838", dup265); - -var msg24006 = msg("21839", dup265); - -var msg24007 = msg("21840", dup265); - -var msg24008 = msg("21841", dup265); - -var msg24009 = msg("21842", dup265); - -var msg24010 = msg("21843", dup265); - -var msg24011 = msg("21844", dup265); - -var msg24012 = msg("21845", dup202); - -var msg24013 = msg("21846", dup202); - -var msg24014 = msg("21847", dup202); - -var msg24015 = msg("21848", dup202); - -var msg24016 = msg("21849", dup202); - -var msg24017 = msg("21850", dup202); - -var msg24018 = msg("21851", dup202); - -var msg24019 = msg("21852", dup192); - -var msg24020 = msg("21853", dup230); - -var msg24021 = msg("21854", dup202); - -var msg24022 = msg("21855", dup202); - -var msg24023 = msg("21856", dup287); - -var msg24024 = msg("21857", dup287); - -var msg24025 = msg("21858", dup267); - -var msg24026 = msg("21859", dup267); - -var msg24027 = msg("21860", dup267); - -var msg24028 = msg("21861", dup202); - -var msg24029 = msg("21862", dup202); - -var msg24030 = msg("21863", dup202); - -var msg24031 = msg("21864", dup202); - -var msg24032 = msg("21865", dup202); - -var msg24033 = msg("21866", dup202); - -var msg24034 = msg("21867", dup202); - -var msg24035 = msg("21868", dup202); - -var msg24036 = msg("21869", dup202); - -var msg24037 = msg("21870", dup202); - -var msg24038 = msg("21871", dup202); - -var msg24039 = msg("21872", dup202); - -var msg24040 = msg("21873", dup202); - -var msg24041 = msg("21874", dup267); - -var msg24042 = msg("21875", dup267); - -var msg24043 = msg("21876", dup267); - -var msg24044 = msg("21877", dup202); - -var msg24045 = msg("21878", dup197); - -var msg24046 = msg("21879", dup202); - -var msg24047 = msg("21880", dup202); - -var msg24048 = msg("21881", dup287); - -var msg24049 = msg("21882", dup265); - -var msg24050 = msg("21883", dup265); - -var msg24051 = msg("21884", dup202); - -var msg24052 = msg("21885", dup202); - -var msg24053 = msg("21886", dup202); - -var msg24054 = msg("21887", dup202); - -var msg24055 = msg("21888", dup202); - -var msg24056 = msg("21889", dup202); - -var msg24057 = msg("21890", dup202); - -var msg24058 = msg("21891", dup202); - -var msg24059 = msg("21892", dup202); - -var msg24060 = msg("21893", dup202); - -var msg24061 = msg("21894", dup202); - -var msg24062 = msg("21895", dup202); - -var msg24063 = msg("21896", dup197); - -var msg24064 = msg("21897", dup197); - -var msg24065 = msg("21898", dup197); - -var msg24066 = msg("21899", dup197); - -var msg24067 = msg("21900", dup197); - -var msg24068 = msg("21901", dup197); - -var msg24069 = msg("21902", dup197); - -var msg24070 = msg("21903", dup197); - -var msg24071 = msg("21904", dup197); - -var msg24072 = msg("21905", dup197); - -var msg24073 = msg("21906", dup197); - -var msg24074 = msg("21907", dup197); - -var msg24075 = msg("21908", dup267); - -var msg24076 = msg("21909", dup267); - -var msg24077 = msg("21910", dup263); - -var msg24078 = msg("21911", dup202); - -var msg24079 = msg("21912", dup202); - -var msg24080 = msg("21913", dup265); - -var msg24081 = msg("21914", dup197); - -var msg24082 = msg("21915", dup267); - -var msg24083 = msg("21916", dup267); - -var msg24084 = msg("21917", dup197); - -var msg24085 = msg("21918", dup197); - -var msg24086 = msg("21919", dup197); - -var msg24087 = msg("21920", dup197); - -var msg24088 = msg("21921", dup197); - -var msg24089 = msg("21922", dup197); - -var msg24090 = msg("21923", dup265); - -var msg24091 = msg("21924", dup263); - -var msg24092 = msg("21925", dup269); - -var msg24093 = msg("21926", dup265); - -var msg24094 = msg("21927", dup197); - -var msg24095 = msg("21928", dup197); - -var msg24096 = msg("21929", dup305); - -var msg24097 = msg("21930", dup305); - -var msg24098 = msg("21931", dup197); - -var msg24099 = msg("21932", dup197); - -var msg24100 = msg("21933", dup197); - -var msg24101 = msg("21934", dup303); - -var msg24102 = msg("21935", dup197); - -var msg24103 = msg("21937", dup197); - -var msg24104 = msg("21938", dup192); - -var msg24105 = msg("21939", dup202); - -var msg24106 = msg("21940", dup202); - -var msg24107 = msg("21941", dup202); - -var msg24108 = msg("21942", dup197); - -var msg24109 = msg("21943", dup197); - -var msg24110 = msg("21944", dup265); - -var msg24111 = msg("21945", dup192); - -var msg24112 = msg("21946", dup192); - -var msg24113 = msg("21947", dup192); - -var msg24114 = msg("21948", dup269); - -var msg24115 = msg("21949", dup201); - -var msg24116 = msg("21950", dup265); - -var msg24117 = msg("21951", dup265); - -var msg24118 = msg("21952", dup197); - -var msg24119 = msg("21953", dup287); - -var msg24120 = msg("21954", dup287); - -var msg24121 = msg("21955", dup202); - -var msg24122 = msg("21956", dup202); - -var msg24123 = msg("21957", dup202); - -var msg24124 = msg("21958", dup202); - -var msg24125 = msg("21959", dup202); - -var msg24126 = msg("21960", dup202); - -var msg24127 = msg("21961", dup287); - -var msg24128 = msg("21962", dup202); - -var msg24129 = msg("21963", dup202); - -var msg24130 = msg("21964", dup202); - -var msg24131 = msg("21965", dup269); - -var msg24132 = msg("21966", dup192); - -var msg24133 = msg("21967", dup287); - -var msg24134 = msg("21968", dup192); - -var msg24135 = msg("21969", dup192); - -var msg24136 = msg("21970", dup192); - -var msg24137 = msg("21971", dup192); - -var msg24138 = msg("21972", dup192); - -var msg24139 = msg("21973", dup192); - -var msg24140 = msg("21974", dup269); - -var msg24141 = msg("21975", dup269); - -var msg24142 = msg("21976", dup192); - -var msg24143 = msg("21977", dup192); - -var msg24144 = msg("21978", dup192); - -var msg24145 = msg("21979", dup192); - -var msg24146 = msg("21980", dup192); - -var msg24147 = msg("21981", dup192); - -var msg24148 = msg("21982", dup192); - -var msg24149 = msg("21983", dup192); - -var msg24150 = msg("21984", dup192); - -var msg24151 = msg("21985", dup197); - -var msg24152 = msg("21986", dup197); - -var msg24153 = msg("21987", dup197); - -var msg24154 = msg("21988", dup197); - -var msg24155 = msg("21989", dup197); - -var msg24156 = msg("21990", dup197); - -var msg24157 = msg("21991", dup267); - -var msg24158 = msg("21992", dup267); - -var msg24159 = msg("21993", dup267); - -var msg24160 = msg("21994", dup267); - -var msg24161 = msg("21995", dup202); - -var msg24162 = msg("21996", dup202); - -var msg24163 = msg("21997", dup192); - -var msg24164 = msg("21998", dup192); - -var msg24165 = msg("21999", dup202); - -var msg24166 = msg("22000", dup238); - -var msg24167 = msg("22001", dup238); - -var msg24168 = msg("22002", dup202); - -var msg24169 = msg("22003", dup265); - -var msg24170 = msg("22004", dup276); - -var msg24171 = msg("22005", dup276); - -var msg24172 = msg("22006", dup276); - -var msg24173 = msg("22007", dup276); - -var msg24174 = msg("22008", dup276); - -var msg24175 = msg("22009", dup276); - -var msg24176 = msg("22010", dup276); - -var msg24177 = msg("22011", dup276); - -var msg24178 = msg("22012", dup276); - -var msg24179 = msg("22013", dup202); - -var msg24180 = msg("22014", dup202); - -var msg24181 = msg("22015", dup202); - -var msg24182 = msg("22016", dup202); - -var msg24183 = msg("22017", dup202); - -var msg24184 = msg("22018", dup202); - -var msg24185 = msg("22019", dup202); - -var msg24186 = msg("22020", dup202); - -var msg24187 = msg("22021", dup202); - -var msg24188 = msg("22022", dup202); - -var msg24189 = msg("22023", dup202); - -var msg24190 = msg("22024", dup202); - -var msg24191 = msg("22025", dup202); - -var msg24192 = msg("22026", dup202); - -var msg24193 = msg("22027", dup202); - -var msg24194 = msg("22028", dup202); - -var msg24195 = msg("22029", dup197); - -var msg24196 = msg("22030", dup197); - -var msg24197 = msg("22031", dup197); - -var msg24198 = msg("22032", dup197); - -var msg24199 = msg("22033", dup263); - -var msg24200 = msg("22034", dup263); - -var msg24201 = msg("22035", dup197); - -var msg24202 = msg("22036", dup197); - -var msg24203 = msg("22037", dup197); - -var msg24204 = msg("22038", dup265); - -var msg24205 = msg("22039", dup202); - -var msg24206 = msg("22040", dup202); - -var msg24207 = msg("22041", dup202); - -var msg24208 = msg("22042", dup202); - -var msg24209 = msg("22043", dup202); - -var msg24210 = msg("22044", dup202); - -var msg24211 = msg("22045", dup202); - -var msg24212 = msg("22046", dup202); - -var msg24213 = msg("22047", dup192); - -var msg24214 = msg("22048", dup192); - -var msg24215 = msg("22049", dup265); - -var msg24216 = msg("22050", dup202); - -var msg24217 = msg("22051", dup263); - -var msg24218 = msg("22052", dup197); - -var msg24219 = msg("22053", dup192); - -var msg24220 = msg("22054", dup192); - -var msg24221 = msg("22055", dup202); - -var msg24222 = msg("22056", dup192); - -var msg24223 = msg("22057", dup192); - -var msg24224 = msg("22058", dup192); - -var msg24225 = msg("22059", dup192); - -var msg24226 = msg("22060", dup192); - -var msg24227 = msg("22061", dup269); - -var msg24228 = msg("22062", dup192); - -var msg24229 = msg("22063", dup302); - -var msg24230 = msg("22064", dup199); - -var msg24231 = msg("22065", dup192); - -var msg24232 = msg("22066", dup197); - -var msg24233 = msg("22067", dup202); - -var msg24234 = msg("22068", dup202); - -var msg24235 = msg("22069", dup202); - -var msg24236 = msg("22070", dup202); - -var msg24237 = msg("22071", dup314); - -var msg24238 = msg("22072", dup314); - -var msg24239 = msg("22073", dup314); - -var msg24240 = msg("22074", dup314); - -var msg24241 = msg("22075", dup197); - -var msg24242 = msg("22076", dup197); - -var msg24243 = msg("22077", dup197); - -var msg24244 = msg("22078", dup197); - -var msg24245 = msg("22079", dup267); - -var msg24246 = msg("22080", dup269); - -var msg24247 = msg("22081", dup197); - -var msg24248 = msg("22082", dup202); - -var msg24249 = msg("22083", dup202); - -var msg24250 = msg("22084", dup202); - -var msg24251 = msg("22085", dup197); - -var msg24252 = msg("22086", dup197); - -var msg24253 = msg("22087", dup197); - -var msg24254 = msg("22088", dup267); - -var msg24255 = msg("22089", dup265); - -var msg24256 = msg("22090", dup269); - -var msg24257 = msg("22091", dup197); - -var msg24258 = msg("22092", dup197); - -var msg24259 = msg("22093", dup197); - -var msg24260 = msg("22094", dup197); - -var msg24261 = msg("22095", dup192); - -var msg24262 = msg("22096", dup263); - -var msg24263 = msg("22097", dup199); - -var msg24264 = msg("22098", dup202); - -var msg24265 = msg("22099", dup192); - -var msg24266 = msg("22100", dup192); - -var msg24267 = msg("22101", dup197); - -var msg24268 = msg("22102", dup197); - -var msg24269 = msg("22103", dup192); - -var msg24270 = msg("22104", dup197); - -var msg24271 = msg("22105", dup197); - -var msg24272 = msg("22106", dup197); - -var msg24273 = msg("22107", dup197); - -var msg24274 = msg("22108", dup197); - -var msg24275 = msg("22109", dup197); - -var msg24276 = msg("22110", dup267); - -var msg24277 = msg("22111", dup267); - -var msg24278 = msg("22112", dup267); - -var msg24279 = msg("22113", dup267); - -var msg24280 = msg("22114", dup267); - -var msg24281 = msg("22115", dup267); - -var msg24282 = msg("22116", dup263); - -var msg24283 = msg("22117", dup263); - -var msg24284 = msg("22118", dup263); - -var msg24285 = msg("22119", dup263); - -var msg24286 = msg("22120", dup263); - -var msg24287 = msg("22121", dup263); - -var msg24288 = msg("22122", dup263); - -var msg24289 = msg("22123", dup263); - -var msg24290 = msg("22124", dup263); - -var msg24291 = msg("22125", dup263); - -var msg24292 = msg("22126", dup263); - -var msg24293 = msg("22127", dup263); - -var msg24294 = msg("22128", dup263); - -var msg24295 = msg("22129", dup263); - -var msg24296 = msg("22130", dup263); - -var msg24297 = msg("22131", dup263); - -var msg24298 = msg("22132", dup263); - -var msg24299 = msg("22133", dup263); - -var msg24300 = msg("22134", dup263); - -var msg24301 = msg("22135", dup263); - -var msg24302 = msg("22136", dup263); - -var msg24303 = msg("22137", dup263); - -var msg24304 = msg("22138", dup263); - -var msg24305 = msg("22139", dup263); - -var msg24306 = msg("22140", dup263); - -var msg24307 = msg("22141", dup263); - -var msg24308 = msg("22142", dup263); - -var msg24309 = msg("22143", dup263); - -var msg24310 = msg("22144", dup263); - -var msg24311 = msg("22145", dup263); - -var msg24312 = msg("22146", dup263); - -var msg24313 = msg("22147", dup263); - -var msg24314 = msg("22148", dup263); - -var msg24315 = msg("22149", dup263); - -var msg24316 = msg("22150", dup263); - -var msg24317 = msg("22151", dup263); - -var msg24318 = msg("22152", dup263); - -var msg24319 = msg("22153", dup263); - -var msg24320 = msg("22154", dup263); - -var msg24321 = msg("22155", dup263); - -var msg24322 = msg("22156", dup263); - -var msg24323 = msg("22157", dup263); - -var msg24324 = msg("22158", dup263); - -var msg24325 = msg("22159", dup263); - -var msg24326 = msg("22160", dup263); - -var msg24327 = msg("22161", dup263); - -var msg24328 = msg("22162", dup263); - -var msg24329 = msg("22163", dup263); - -var msg24330 = msg("22164", dup263); - -var msg24331 = msg("22165", dup263); - -var msg24332 = msg("22166", dup263); - -var msg24333 = msg("22167", dup263); - -var msg24334 = msg("22168", dup263); - -var msg24335 = msg("22169", dup263); - -var msg24336 = msg("22170", dup263); - -var msg24337 = msg("22171", dup263); - -var msg24338 = msg("22172", dup263); - -var msg24339 = msg("22173", dup263); - -var msg24340 = msg("22174", dup263); - -var msg24341 = msg("22175", dup263); - -var msg24342 = msg("22176", dup263); - -var msg24343 = msg("22177", dup263); - -var msg24344 = msg("22178", dup263); - -var msg24345 = msg("22179", dup263); - -var msg24346 = msg("22180", dup263); - -var msg24347 = msg("22181", dup263); - -var msg24348 = msg("22182", dup263); - -var msg24349 = msg("22183", dup263); - -var msg24350 = msg("22184", dup263); - -var msg24351 = msg("22185", dup263); - -var msg24352 = msg("22186", dup263); - -var msg24353 = msg("22187", dup263); - -var msg24354 = msg("22188", dup263); - -var msg24355 = msg("22189", dup263); - -var msg24356 = msg("22190", dup263); - -var msg24357 = msg("22191", dup263); - -var msg24358 = msg("22192", dup263); - -var msg24359 = msg("22193", dup263); - -var msg24360 = msg("22194", dup263); - -var msg24361 = msg("22195", dup263); - -var msg24362 = msg("22196", dup263); - -var msg24363 = msg("22197", dup263); - -var msg24364 = msg("22198", dup263); - -var msg24365 = msg("22199", dup263); - -var msg24366 = msg("22200", dup263); - -var msg24367 = msg("22201", dup263); - -var msg24368 = msg("22202", dup263); - -var msg24369 = msg("22203", dup263); - -var msg24370 = msg("22204", dup263); - -var msg24371 = msg("22205", dup263); - -var msg24372 = msg("22206", dup263); - -var msg24373 = msg("22207", dup263); - -var msg24374 = msg("22208", dup263); - -var msg24375 = msg("22209", dup263); - -var msg24376 = msg("22210", dup263); - -var msg24377 = msg("22211", dup263); - -var msg24378 = msg("22212", dup263); - -var msg24379 = msg("22213", dup263); - -var msg24380 = msg("22214", dup263); - -var msg24381 = msg("22215", dup263); - -var msg24382 = msg("22216", dup263); - -var msg24383 = msg("22217", dup263); - -var msg24384 = msg("22218", dup263); - -var msg24385 = msg("22219", dup263); - -var msg24386 = msg("22220", dup263); - -var msg24387 = msg("22221", dup263); - -var msg24388 = msg("22222", dup263); - -var msg24389 = msg("22223", dup263); - -var msg24390 = msg("22224", dup263); - -var msg24391 = msg("22225", dup263); - -var msg24392 = msg("22226", dup263); - -var msg24393 = msg("22227", dup263); - -var msg24394 = msg("22228", dup263); - -var msg24395 = msg("22229", dup263); - -var msg24396 = msg("22230", dup263); - -var msg24397 = msg("22231", dup263); - -var msg24398 = msg("22232", dup263); - -var msg24399 = msg("22233", dup263); - -var msg24400 = msg("22234", dup263); - -var msg24401 = msg("22235", dup263); - -var msg24402 = msg("22236", dup263); - -var msg24403 = msg("22237", dup263); - -var msg24404 = msg("22238", dup263); - -var msg24405 = msg("22239", dup263); - -var msg24406 = msg("22240", dup263); - -var msg24407 = msg("22241", dup263); - -var msg24408 = msg("22242", dup263); - -var msg24409 = msg("22243", dup263); - -var msg24410 = msg("22244", dup263); - -var msg24411 = msg("22245", dup263); - -var msg24412 = msg("22246", dup263); - -var msg24413 = msg("22247", dup269); - -var msg24414 = msg("22248", dup263); - -var msg24415 = msg("22249", dup263); - -var msg24416 = msg("22250", dup263); - -var msg24417 = msg("22251", dup263); - -var msg24418 = msg("22252", dup263); - -var msg24419 = msg("22253", dup263); - -var msg24420 = msg("22254", dup263); - -var msg24421 = msg("22255", dup263); - -var msg24422 = msg("22256", dup263); - -var msg24423 = msg("22257", dup263); - -var msg24424 = msg("22258", dup263); - -var msg24425 = msg("22259", dup263); - -var msg24426 = msg("22260", dup263); - -var msg24427 = msg("22261", dup263); - -var msg24428 = msg("22262", dup263); - -var msg24429 = msg("22263", dup263); - -var msg24430 = msg("22264", dup263); - -var msg24431 = msg("22265", dup263); - -var msg24432 = msg("22266", dup263); - -var msg24433 = msg("22267", dup263); - -var msg24434 = msg("22268", dup263); - -var msg24435 = msg("22269", dup263); - -var msg24436 = msg("22270", dup263); - -var msg24437 = msg("22271", dup263); - -var msg24438 = msg("22272", dup263); - -var msg24439 = msg("22273", dup263); - -var msg24440 = msg("22274", dup263); - -var msg24441 = msg("22275", dup263); - -var msg24442 = msg("22276", dup263); - -var msg24443 = msg("22277", dup263); - -var msg24444 = msg("22278", dup263); - -var msg24445 = msg("22279", dup263); - -var msg24446 = msg("22280", dup263); - -var msg24447 = msg("22281", dup263); - -var msg24448 = msg("22282", dup263); - -var msg24449 = msg("22283", dup263); - -var msg24450 = msg("22284", dup263); - -var msg24451 = msg("22285", dup263); - -var msg24452 = msg("22286", dup263); - -var msg24453 = msg("22287", dup263); - -var msg24454 = msg("22288", dup263); - -var msg24455 = msg("22289", dup263); - -var msg24456 = msg("22290", dup263); - -var msg24457 = msg("22291", dup263); - -var msg24458 = msg("22292", dup263); - -var msg24459 = msg("22293", dup263); - -var msg24460 = msg("22294", dup263); - -var msg24461 = msg("22295", dup263); - -var msg24462 = msg("22296", dup263); - -var msg24463 = msg("22297", dup263); - -var msg24464 = msg("22298", dup263); - -var msg24465 = msg("22299", dup263); - -var msg24466 = msg("22300", dup263); - -var msg24467 = msg("22301", dup263); - -var msg24468 = msg("22302", dup263); - -var msg24469 = msg("22303", dup263); - -var msg24470 = msg("22304", dup263); - -var msg24471 = msg("22305", dup263); - -var msg24472 = msg("22306", dup263); - -var msg24473 = msg("22307", dup263); - -var msg24474 = msg("22308", dup269); - -var msg24475 = msg("22309", dup263); - -var msg24476 = msg("22310", dup263); - -var msg24477 = msg("22311", dup263); - -var msg24478 = msg("22312", dup263); - -var msg24479 = msg("22313", dup263); - -var msg24480 = msg("22314", dup263); - -var msg24481 = msg("22315", dup263); - -var msg24482 = msg("22316", dup263); - -var msg24483 = msg("22317", dup263); - -var msg24484 = msg("22318", dup263); - -var msg24485 = msg("22319", dup263); - -var msg24486 = msg("22320", dup263); - -var msg24487 = msg("22321", dup263); - -var msg24488 = msg("22322", dup263); - -var msg24489 = msg("22323", dup263); - -var msg24490 = msg("22324", dup263); - -var msg24491 = msg("22325", dup263); - -var msg24492 = msg("22326", dup263); - -var msg24493 = msg("22327", dup263); - -var msg24494 = msg("22328", dup263); - -var msg24495 = msg("22329", dup263); - -var msg24496 = msg("22330", dup263); - -var msg24497 = msg("22331", dup263); - -var msg24498 = msg("22332", dup263); - -var msg24499 = msg("22333", dup263); - -var msg24500 = msg("22334", dup263); - -var msg24501 = msg("22335", dup263); - -var msg24502 = msg("22336", dup263); - -var msg24503 = msg("22337", dup263); - -var msg24504 = msg("22338", dup263); - -var msg24505 = msg("22339", dup227); - -var msg24506 = msg("22340", dup227); - -var msg24507 = msg("22341", dup263); - -var msg24508 = msg("22342", dup263); - -var msg24509 = msg("22343", dup263); - -var msg24510 = msg("22344", dup263); - -var msg24511 = msg("22345", dup263); - -var msg24512 = msg("22346", dup263); - -var msg24513 = msg("22347", dup263); - -var msg24514 = msg("22348", dup263); - -var msg24515 = msg("22349", dup263); - -var msg24516 = msg("22350", dup263); - -var msg24517 = msg("22351", dup263); - -var msg24518 = msg("22352", dup263); - -var msg24519 = msg("22353", dup263); - -var msg24520 = msg("22354", dup263); - -var msg24521 = msg("22355", dup263); - -var msg24522 = msg("22356", dup263); - -var msg24523 = msg("22357", dup263); - -var msg24524 = msg("22358", dup263); - -var msg24525 = msg("22359", dup263); - -var msg24526 = msg("22360", dup263); - -var msg24527 = msg("22361", dup263); - -var msg24528 = msg("22362", dup263); - -var msg24529 = msg("22363", dup263); - -var msg24530 = msg("22364", dup263); - -var msg24531 = msg("22365", dup263); - -var msg24532 = msg("22366", dup263); - -var msg24533 = msg("22367", dup263); - -var msg24534 = msg("22368", dup263); - -var msg24535 = msg("22369", dup263); - -var msg24536 = msg("22370", dup263); - -var msg24537 = msg("22371", dup263); - -var msg24538 = msg("22372", dup263); - -var msg24539 = msg("22373", dup263); - -var msg24540 = msg("22374", dup263); - -var msg24541 = msg("22375", dup263); - -var msg24542 = msg("22376", dup263); - -var msg24543 = msg("22377", dup263); - -var msg24544 = msg("22378", dup263); - -var msg24545 = msg("22379", dup263); - -var msg24546 = msg("22380", dup263); - -var msg24547 = msg("22381", dup263); - -var msg24548 = msg("22382", dup263); - -var msg24549 = msg("22383", dup263); - -var msg24550 = msg("22384", dup263); - -var msg24551 = msg("22385", dup263); - -var msg24552 = msg("22386", dup263); - -var msg24553 = msg("22387", dup263); - -var msg24554 = msg("22388", dup263); - -var msg24555 = msg("22389", dup263); - -var msg24556 = msg("22390", dup263); - -var msg24557 = msg("22391", dup263); - -var msg24558 = msg("22392", dup263); - -var msg24559 = msg("22393", dup263); - -var msg24560 = msg("22394", dup263); - -var msg24561 = msg("22395", dup263); - -var msg24562 = msg("22396", dup263); - -var msg24563 = msg("22397", dup263); - -var msg24564 = msg("22398", dup263); - -var msg24565 = msg("22399", dup263); - -var msg24566 = msg("22400", dup263); - -var msg24567 = msg("22401", dup263); - -var msg24568 = msg("22402", dup263); - -var msg24569 = msg("22403", dup263); - -var msg24570 = msg("22404", dup263); - -var msg24571 = msg("22405", dup263); - -var msg24572 = msg("22406", dup263); - -var msg24573 = msg("22407", dup227); - -var msg24574 = msg("22408", dup263); - -var msg24575 = msg("22409", dup263); - -var msg24576 = msg("22410", dup263); - -var msg24577 = msg("22411", dup263); - -var msg24578 = msg("22412", dup263); - -var msg24579 = msg("22413", dup263); - -var msg24580 = msg("22414", dup263); - -var msg24581 = msg("22415", dup263); - -var msg24582 = msg("22416", dup263); - -var msg24583 = msg("22417", dup263); - -var msg24584 = msg("22418", dup263); - -var msg24585 = msg("22419", dup263); - -var msg24586 = msg("22420", dup263); - -var msg24587 = msg("22421", dup263); - -var msg24588 = msg("22422", dup263); - -var msg24589 = msg("22423", dup263); - -var msg24590 = msg("22424", dup263); - -var msg24591 = msg("22425", dup263); - -var msg24592 = msg("22426", dup263); - -var msg24593 = msg("22427", dup263); - -var msg24594 = msg("22428", dup263); - -var msg24595 = msg("22429", dup263); - -var msg24596 = msg("22430", dup263); - -var msg24597 = msg("22431", dup263); - -var msg24598 = msg("22432", dup263); - -var msg24599 = msg("22433", dup263); - -var msg24600 = msg("22434", dup263); - -var msg24601 = msg("22435", dup263); - -var msg24602 = msg("22436", dup263); - -var msg24603 = msg("22437", dup263); - -var msg24604 = msg("22438", dup263); - -var msg24605 = msg("22439", dup263); - -var msg24606 = msg("22440", dup263); - -var msg24607 = msg("22441", dup263); - -var msg24608 = msg("22442", dup263); - -var msg24609 = msg("22443", dup263); - -var msg24610 = msg("22444", dup263); - -var msg24611 = msg("22445", dup263); - -var msg24612 = msg("22446", dup263); - -var msg24613 = msg("22447", dup263); - -var msg24614 = msg("22448", dup263); - -var msg24615 = msg("22449", dup263); - -var msg24616 = msg("22450", dup263); - -var msg24617 = msg("22451", dup263); - -var msg24618 = msg("22452", dup263); - -var msg24619 = msg("22453", dup263); - -var msg24620 = msg("22454", dup263); - -var msg24621 = msg("22455", dup263); - -var msg24622 = msg("22456", dup263); - -var msg24623 = msg("22457", dup263); - -var msg24624 = msg("22458", dup263); - -var msg24625 = msg("22459", dup263); - -var msg24626 = msg("22460", dup263); - -var msg24627 = msg("22461", dup263); - -var msg24628 = msg("22462", dup263); - -var msg24629 = msg("22463", dup263); - -var msg24630 = msg("22464", dup263); - -var msg24631 = msg("22465", dup263); - -var msg24632 = msg("22466", dup263); - -var msg24633 = msg("22467", dup263); - -var msg24634 = msg("22468", dup263); - -var msg24635 = msg("22469", dup263); - -var msg24636 = msg("22470", dup263); - -var msg24637 = msg("22471", dup263); - -var msg24638 = msg("22472", dup263); - -var msg24639 = msg("22473", dup263); - -var msg24640 = msg("22474", dup263); - -var msg24641 = msg("22475", dup263); - -var msg24642 = msg("22476", dup263); - -var msg24643 = msg("22477", dup263); - -var msg24644 = msg("22478", dup263); - -var msg24645 = msg("22479", dup263); - -var msg24646 = msg("22480", dup263); - -var msg24647 = msg("22481", dup263); - -var msg24648 = msg("22482", dup263); - -var msg24649 = msg("22483", dup263); - -var msg24650 = msg("22484", dup263); - -var msg24651 = msg("22485", dup263); - -var msg24652 = msg("22486", dup263); - -var msg24653 = msg("22487", dup263); - -var msg24654 = msg("22488", dup263); - -var msg24655 = msg("22489", dup263); - -var msg24656 = msg("22490", dup263); - -var msg24657 = msg("22491", dup263); - -var msg24658 = msg("22492", dup263); - -var msg24659 = msg("22493", dup263); - -var msg24660 = msg("22494", dup263); - -var msg24661 = msg("22495", dup263); - -var msg24662 = msg("22496", dup263); - -var msg24663 = msg("22497", dup263); - -var msg24664 = msg("22498", dup263); - -var msg24665 = msg("22499", dup263); - -var msg24666 = msg("22500", dup263); - -var msg24667 = msg("22501", dup263); - -var msg24668 = msg("22502", dup263); - -var msg24669 = msg("22503", dup263); - -var msg24670 = msg("22504", dup263); - -var msg24671 = msg("22505", dup263); - -var msg24672 = msg("22506", dup263); - -var msg24673 = msg("22507", dup263); - -var msg24674 = msg("22508", dup263); - -var msg24675 = msg("22509", dup263); - -var msg24676 = msg("22510", dup263); - -var msg24677 = msg("22511", dup263); - -var msg24678 = msg("22512", dup263); - -var msg24679 = msg("22513", dup263); - -var msg24680 = msg("22514", dup263); - -var msg24681 = msg("22515", dup263); - -var msg24682 = msg("22516", dup263); - -var msg24683 = msg("22517", dup263); - -var msg24684 = msg("22518", dup263); - -var msg24685 = msg("22519", dup263); - -var msg24686 = msg("22520", dup263); - -var msg24687 = msg("22521", dup263); - -var msg24688 = msg("22522", dup263); - -var msg24689 = msg("22523", dup263); - -var msg24690 = msg("22524", dup263); - -var msg24691 = msg("22525", dup263); - -var msg24692 = msg("22526", dup263); - -var msg24693 = msg("22527", dup263); - -var msg24694 = msg("22528", dup263); - -var msg24695 = msg("22529", dup263); - -var msg24696 = msg("22530", dup263); - -var msg24697 = msg("22531", dup263); - -var msg24698 = msg("22532", dup263); - -var msg24699 = msg("22533", dup263); - -var msg24700 = msg("22534", dup263); - -var msg24701 = msg("22535", dup263); - -var msg24702 = msg("22536", dup263); - -var msg24703 = msg("22537", dup263); - -var msg24704 = msg("22538", dup263); - -var msg24705 = msg("22539", dup263); - -var msg24706 = msg("22540", dup263); - -var msg24707 = msg("22541", dup263); - -var msg24708 = msg("22542", dup263); - -var msg24709 = msg("22543", dup263); - -var msg24710 = msg("22544", dup263); - -var msg24711 = msg("22545", dup263); - -var msg24712 = msg("22546", dup263); - -var msg24713 = msg("22547", dup263); - -var msg24714 = msg("22548", dup263); - -var msg24715 = msg("22549", dup263); - -var msg24716 = msg("22550", dup263); - -var msg24717 = msg("22551", dup263); - -var msg24718 = msg("22552", dup263); - -var msg24719 = msg("22553", dup263); - -var msg24720 = msg("22554", dup263); - -var msg24721 = msg("22555", dup263); - -var msg24722 = msg("22556", dup263); - -var msg24723 = msg("22557", dup263); - -var msg24724 = msg("22558", dup263); - -var msg24725 = msg("22559", dup263); - -var msg24726 = msg("22560", dup263); - -var msg24727 = msg("22561", dup263); - -var msg24728 = msg("22562", dup263); - -var msg24729 = msg("22563", dup263); - -var msg24730 = msg("22564", dup263); - -var msg24731 = msg("22565", dup263); - -var msg24732 = msg("22566", dup263); - -var msg24733 = msg("22567", dup263); - -var msg24734 = msg("22568", dup263); - -var msg24735 = msg("22569", dup263); - -var msg24736 = msg("22570", dup263); - -var msg24737 = msg("22571", dup263); - -var msg24738 = msg("22572", dup263); - -var msg24739 = msg("22573", dup263); - -var msg24740 = msg("22574", dup263); - -var msg24741 = msg("22575", dup263); - -var msg24742 = msg("22576", dup263); - -var msg24743 = msg("22577", dup263); - -var msg24744 = msg("22578", dup298); - -var msg24745 = msg("22579", dup298); - -var msg24746 = msg("22580", dup263); - -var msg24747 = msg("22581", dup263); - -var msg24748 = msg("22582", dup263); - -var msg24749 = msg("22583", dup263); - -var msg24750 = msg("22584", dup263); - -var msg24751 = msg("22585", dup263); - -var msg24752 = msg("22586", dup263); - -var msg24753 = msg("22587", dup263); - -var msg24754 = msg("22588", dup263); - -var msg24755 = msg("22589", dup263); - -var msg24756 = msg("22590", dup263); - -var msg24757 = msg("22591", dup263); - -var msg24758 = msg("22592", dup250); - -var msg24759 = msg("22593", dup263); - -var msg24760 = msg("22594", dup263); - -var msg24761 = msg("22595", dup263); - -var msg24762 = msg("22596", dup263); - -var msg24763 = msg("22597", dup263); - -var msg24764 = msg("22598", dup263); - -var msg24765 = msg("22599", dup263); - -var msg24766 = msg("22600", dup263); - -var msg24767 = msg("22601", dup263); - -var msg24768 = msg("22602", dup263); - -var msg24769 = msg("22603", dup263); - -var msg24770 = msg("22604", dup263); - -var msg24771 = msg("22605", dup263); - -var msg24772 = msg("22606", dup263); - -var msg24773 = msg("22607", dup263); - -var msg24774 = msg("22608", dup263); - -var msg24775 = msg("22609", dup263); - -var msg24776 = msg("22610", dup263); - -var msg24777 = msg("22611", dup263); - -var msg24778 = msg("22612", dup263); - -var msg24779 = msg("22613", dup263); - -var msg24780 = msg("22614", dup263); - -var msg24781 = msg("22615", dup263); - -var msg24782 = msg("22616", dup263); - -var msg24783 = msg("22617", dup263); - -var msg24784 = msg("22618", dup263); - -var msg24785 = msg("22619", dup263); - -var msg24786 = msg("22620", dup263); - -var msg24787 = msg("22621", dup263); - -var msg24788 = msg("22622", dup263); - -var msg24789 = msg("22623", dup263); - -var msg24790 = msg("22624", dup263); - -var msg24791 = msg("22625", dup263); - -var msg24792 = msg("22626", dup263); - -var msg24793 = msg("22627", dup263); - -var msg24794 = msg("22628", dup263); - -var msg24795 = msg("22629", dup263); - -var msg24796 = msg("22630", dup263); - -var msg24797 = msg("22631", dup263); - -var msg24798 = msg("22632", dup263); - -var msg24799 = msg("22633", dup263); - -var msg24800 = msg("22634", dup263); - -var msg24801 = msg("22635", dup263); - -var msg24802 = msg("22636", dup263); - -var msg24803 = msg("22637", dup263); - -var msg24804 = msg("22638", dup263); - -var msg24805 = msg("22639", dup263); - -var msg24806 = msg("22640", dup263); - -var msg24807 = msg("22641", dup263); - -var msg24808 = msg("22642", dup263); - -var msg24809 = msg("22643", dup263); - -var msg24810 = msg("22644", dup263); - -var msg24811 = msg("22645", dup263); - -var msg24812 = msg("22646", dup263); - -var msg24813 = msg("22647", dup263); - -var msg24814 = msg("22648", dup263); - -var msg24815 = msg("22649", dup263); - -var msg24816 = msg("22650", dup263); - -var msg24817 = msg("22651", dup263); - -var msg24818 = msg("22652", dup263); - -var msg24819 = msg("22653", dup263); - -var msg24820 = msg("22654", dup263); - -var msg24821 = msg("22655", dup263); - -var msg24822 = msg("22656", dup250); - -var msg24823 = msg("22657", dup250); - -var msg24824 = msg("22658", dup263); - -var msg24825 = msg("22659", dup263); - -var msg24826 = msg("22660", dup263); - -var msg24827 = msg("22661", dup263); - -var msg24828 = msg("22662", dup263); - -var msg24829 = msg("22663", dup263); - -var msg24830 = msg("22664", dup263); - -var msg24831 = msg("22665", dup263); - -var msg24832 = msg("22666", dup263); - -var msg24833 = msg("22667", dup263); - -var msg24834 = msg("22668", dup263); - -var msg24835 = msg("22669", dup263); - -var msg24836 = msg("22670", dup263); - -var msg24837 = msg("22671", dup263); - -var msg24838 = msg("22672", dup263); - -var msg24839 = msg("22673", dup263); - -var msg24840 = msg("22674", dup263); - -var msg24841 = msg("22675", dup263); - -var msg24842 = msg("22676", dup263); - -var msg24843 = msg("22677", dup263); - -var msg24844 = msg("22678", dup263); - -var msg24845 = msg("22679", dup263); - -var msg24846 = msg("22680", dup263); - -var msg24847 = msg("22681", dup263); - -var msg24848 = msg("22682", dup263); - -var msg24849 = msg("22683", dup263); - -var msg24850 = msg("22684", dup263); - -var msg24851 = msg("22685", dup263); - -var msg24852 = msg("22686", dup263); - -var msg24853 = msg("22687", dup263); - -var msg24854 = msg("22688", dup263); - -var msg24855 = msg("22689", dup263); - -var msg24856 = msg("22690", dup263); - -var msg24857 = msg("22691", dup263); - -var msg24858 = msg("22692", dup263); - -var msg24859 = msg("22693", dup263); - -var msg24860 = msg("22694", dup263); - -var msg24861 = msg("22695", dup263); - -var msg24862 = msg("22696", dup263); - -var msg24863 = msg("22697", dup263); - -var msg24864 = msg("22698", dup263); - -var msg24865 = msg("22699", dup263); - -var msg24866 = msg("22700", dup263); - -var msg24867 = msg("22701", dup263); - -var msg24868 = msg("22702", dup263); - -var msg24869 = msg("22703", dup263); - -var msg24870 = msg("22704", dup263); - -var msg24871 = msg("22705", dup263); - -var msg24872 = msg("22706", dup263); - -var msg24873 = msg("22707", dup263); - -var msg24874 = msg("22708", dup263); - -var msg24875 = msg("22709", dup263); - -var msg24876 = msg("22710", dup263); - -var msg24877 = msg("22711", dup263); - -var msg24878 = msg("22712", dup263); - -var msg24879 = msg("22713", dup263); - -var msg24880 = msg("22714", dup263); - -var msg24881 = msg("22715", dup263); - -var msg24882 = msg("22716", dup263); - -var msg24883 = msg("22717", dup263); - -var msg24884 = msg("22718", dup263); - -var msg24885 = msg("22719", dup263); - -var msg24886 = msg("22720", dup263); - -var msg24887 = msg("22721", dup263); - -var msg24888 = msg("22722", dup263); - -var msg24889 = msg("22723", dup263); - -var msg24890 = msg("22724", dup263); - -var msg24891 = msg("22725", dup263); - -var msg24892 = msg("22726", dup263); - -var msg24893 = msg("22727", dup263); - -var msg24894 = msg("22728", dup263); - -var msg24895 = msg("22729", dup263); - -var msg24896 = msg("22730", dup263); - -var msg24897 = msg("22731", dup263); - -var msg24898 = msg("22732", dup263); - -var msg24899 = msg("22733", dup263); - -var msg24900 = msg("22734", dup263); - -var msg24901 = msg("22735", dup263); - -var msg24902 = msg("22736", dup263); - -var msg24903 = msg("22737", dup263); - -var msg24904 = msg("22738", dup263); - -var msg24905 = msg("22739", dup263); - -var msg24906 = msg("22740", dup263); - -var msg24907 = msg("22741", dup263); - -var msg24908 = msg("22742", dup263); - -var msg24909 = msg("22743", dup263); - -var msg24910 = msg("22744", dup263); - -var msg24911 = msg("22745", dup263); - -var msg24912 = msg("22746", dup263); - -var msg24913 = msg("22747", dup263); - -var msg24914 = msg("22748", dup263); - -var msg24915 = msg("22749", dup263); - -var msg24916 = msg("22750", dup263); - -var msg24917 = msg("22751", dup263); - -var msg24918 = msg("22752", dup263); - -var msg24919 = msg("22753", dup263); - -var msg24920 = msg("22754", dup263); - -var msg24921 = msg("22755", dup263); - -var msg24922 = msg("22756", dup263); - -var msg24923 = msg("22757", dup263); - -var msg24924 = msg("22758", dup263); - -var msg24925 = msg("22759", dup263); - -var msg24926 = msg("22760", dup263); - -var msg24927 = msg("22761", dup263); - -var msg24928 = msg("22762", dup263); - -var msg24929 = msg("22763", dup263); - -var msg24930 = msg("22764", dup263); - -var msg24931 = msg("22765", dup263); - -var msg24932 = msg("22766", dup263); - -var msg24933 = msg("22767", dup263); - -var msg24934 = msg("22768", dup263); - -var msg24935 = msg("22769", dup263); - -var msg24936 = msg("22770", dup263); - -var msg24937 = msg("22771", dup263); - -var msg24938 = msg("22772", dup263); - -var msg24939 = msg("22773", dup263); - -var msg24940 = msg("22774", dup263); - -var msg24941 = msg("22775", dup263); - -var msg24942 = msg("22776", dup263); - -var msg24943 = msg("22777", dup263); - -var msg24944 = msg("22778", dup263); - -var msg24945 = msg("22779", dup263); - -var msg24946 = msg("22780", dup263); - -var msg24947 = msg("22781", dup263); - -var msg24948 = msg("22782", dup263); - -var msg24949 = msg("22783", dup263); - -var msg24950 = msg("22784", dup263); - -var msg24951 = msg("22785", dup263); - -var msg24952 = msg("22786", dup263); - -var msg24953 = msg("22787", dup263); - -var msg24954 = msg("22788", dup263); - -var msg24955 = msg("22789", dup263); - -var msg24956 = msg("22790", dup263); - -var msg24957 = msg("22791", dup263); - -var msg24958 = msg("22792", dup263); - -var msg24959 = msg("22793", dup263); - -var msg24960 = msg("22794", dup263); - -var msg24961 = msg("22795", dup263); - -var msg24962 = msg("22796", dup263); - -var msg24963 = msg("22797", dup263); - -var msg24964 = msg("22798", dup263); - -var msg24965 = msg("22799", dup263); - -var msg24966 = msg("22800", dup263); - -var msg24967 = msg("22801", dup263); - -var msg24968 = msg("22802", dup263); - -var msg24969 = msg("22803", dup263); - -var msg24970 = msg("22804", dup263); - -var msg24971 = msg("22805", dup263); - -var msg24972 = msg("22806", dup263); - -var msg24973 = msg("22807", dup263); - -var msg24974 = msg("22808", dup263); - -var msg24975 = msg("22809", dup263); - -var msg24976 = msg("22810", dup263); - -var msg24977 = msg("22811", dup263); - -var msg24978 = msg("22812", dup263); - -var msg24979 = msg("22813", dup263); - -var msg24980 = msg("22814", dup263); - -var msg24981 = msg("22815", dup263); - -var msg24982 = msg("22816", dup263); - -var msg24983 = msg("22817", dup263); - -var msg24984 = msg("22818", dup263); - -var msg24985 = msg("22819", dup263); - -var msg24986 = msg("22820", dup263); - -var msg24987 = msg("22821", dup263); - -var msg24988 = msg("22822", dup263); - -var msg24989 = msg("22823", dup263); - -var msg24990 = msg("22824", dup263); - -var msg24991 = msg("22825", dup263); - -var msg24992 = msg("22826", dup263); - -var msg24993 = msg("22827", dup263); - -var msg24994 = msg("22828", dup263); - -var msg24995 = msg("22829", dup263); - -var msg24996 = msg("22830", dup263); - -var msg24997 = msg("22831", dup263); - -var msg24998 = msg("22832", dup263); - -var msg24999 = msg("22833", dup263); - -var msg25000 = msg("22834", dup263); - -var msg25001 = msg("22835", dup263); - -var msg25002 = msg("22836", dup263); - -var msg25003 = msg("22837", dup263); - -var msg25004 = msg("22838", dup263); - -var msg25005 = msg("22839", dup263); - -var msg25006 = msg("22840", dup263); - -var msg25007 = msg("22841", dup263); - -var msg25008 = msg("22842", dup263); - -var msg25009 = msg("22843", dup263); - -var msg25010 = msg("22844", dup263); - -var msg25011 = msg("22845", dup263); - -var msg25012 = msg("22846", dup263); - -var msg25013 = msg("22847", dup263); - -var msg25014 = msg("22848", dup263); - -var msg25015 = msg("22849", dup263); - -var msg25016 = msg("22850", dup263); - -var msg25017 = msg("22851", dup263); - -var msg25018 = msg("22852", dup263); - -var msg25019 = msg("22853", dup263); - -var msg25020 = msg("22854", dup263); - -var msg25021 = msg("22855", dup263); - -var msg25022 = msg("22856", dup263); - -var msg25023 = msg("22857", dup263); - -var msg25024 = msg("22858", dup263); - -var msg25025 = msg("22859", dup263); - -var msg25026 = msg("22860", dup263); - -var msg25027 = msg("22861", dup263); - -var msg25028 = msg("22862", dup263); - -var msg25029 = msg("22863", dup263); - -var msg25030 = msg("22864", dup263); - -var msg25031 = msg("22865", dup263); - -var msg25032 = msg("22866", dup263); - -var msg25033 = msg("22867", dup263); - -var msg25034 = msg("22868", dup263); - -var msg25035 = msg("22869", dup263); - -var msg25036 = msg("22870", dup263); - -var msg25037 = msg("22871", dup263); - -var msg25038 = msg("22872", dup263); - -var msg25039 = msg("22873", dup263); - -var msg25040 = msg("22874", dup263); - -var msg25041 = msg("22875", dup250); - -var msg25042 = msg("22876", dup263); - -var msg25043 = msg("22877", dup263); - -var msg25044 = msg("22878", dup263); - -var msg25045 = msg("22879", dup263); - -var msg25046 = msg("22880", dup263); - -var msg25047 = msg("22881", dup263); - -var msg25048 = msg("22882", dup263); - -var msg25049 = msg("22883", dup263); - -var msg25050 = msg("22884", dup263); - -var msg25051 = msg("22885", dup263); - -var msg25052 = msg("22886", dup263); - -var msg25053 = msg("22887", dup263); - -var msg25054 = msg("22888", dup263); - -var msg25055 = msg("22889", dup263); - -var msg25056 = msg("22890", dup263); - -var msg25057 = msg("22891", dup263); - -var msg25058 = msg("22892", dup263); - -var msg25059 = msg("22893", dup263); - -var msg25060 = msg("22894", dup263); - -var msg25061 = msg("22895", dup263); - -var msg25062 = msg("22896", dup263); - -var msg25063 = msg("22897", dup263); - -var msg25064 = msg("22898", dup263); - -var msg25065 = msg("22899", dup263); - -var msg25066 = msg("22900", dup263); - -var msg25067 = msg("22901", dup263); - -var msg25068 = msg("22902", dup263); - -var msg25069 = msg("22903", dup263); - -var msg25070 = msg("22904", dup263); - -var msg25071 = msg("22905", dup263); - -var msg25072 = msg("22906", dup263); - -var msg25073 = msg("22907", dup263); - -var msg25074 = msg("22908", dup263); - -var msg25075 = msg("22909", dup263); - -var msg25076 = msg("22910", dup263); - -var msg25077 = msg("22911", dup263); - -var msg25078 = msg("22912", dup263); - -var msg25079 = msg("22913", dup263); - -var msg25080 = msg("22914", dup263); - -var msg25081 = msg("22915", dup202); - -var msg25082 = msg("22916", dup202); - -var msg25083 = msg("22917", dup192); - -var msg25084 = msg("22918", dup192); - -var msg25085 = msg("22919", dup192); - -var msg25086 = msg("22920", dup192); - -var msg25087 = msg("22921", dup192); - -var msg25088 = msg("22922", dup192); - -var msg25089 = msg("22923", dup192); - -var msg25090 = msg("22924", dup227); - -var msg25091 = msg("22925", dup192); - -var msg25092 = msg("22926", dup192); - -var msg25093 = msg("22927", dup192); - -var msg25094 = msg("22928", dup192); - -var msg25095 = msg("22929", dup192); - -var msg25096 = msg("22930", dup192); - -var msg25097 = msg("22931", dup192); - -var msg25098 = msg("22932", dup192); - -var msg25099 = msg("22933", dup192); - -var msg25100 = msg("22934", dup192); - -var msg25101 = msg("22935", dup192); - -var msg25102 = msg("22936", dup192); - -var msg25103 = msg("22937", dup192); - -var msg25104 = msg("22938", dup197); - -var msg25105 = msg("22939", dup269); - -var msg25106 = msg("22940", dup202); - -var msg25107 = msg("22941", dup269); - -var msg25108 = msg("22942", dup285); - -var msg25109 = msg("22943", dup202); - -var msg25110 = msg("22944", dup202); - -var msg25111 = msg("22945", dup202); - -var msg25112 = msg("22946", dup202); - -var msg25113 = msg("22947", dup197); - -var msg25114 = msg("22948", dup201); - -var msg25115 = msg("22949", dup202); - -var msg25116 = msg("22950", dup197); - -var msg25117 = msg("22951", dup197); - -var msg25118 = msg("22952", dup199); - -var msg25119 = msg("22953", dup198); - -var msg25120 = msg("22954", dup197); - -var msg25121 = msg("22955", dup202); - -var msg25122 = msg("22956", dup202); - -var msg25123 = msg("22957", dup263); - -var msg25124 = msg("22958", dup263); - -var msg25125 = msg("22959", dup263); - -var msg25126 = msg("22960", dup263); - -var msg25127 = msg("22961", dup202); - -var msg25128 = msg("22962", dup202); - -var msg25129 = msg("22963", dup202); - -var msg25130 = msg("22964", dup202); - -var msg25131 = msg("22965", dup202); - -var msg25132 = msg("22966", dup202); - -var msg25133 = msg("22967", dup202); - -var msg25134 = msg("22968", dup202); - -var msg25135 = msg("22969", dup202); - -var msg25136 = msg("22970", dup202); - -var msg25137 = msg("22971", dup202); - -var msg25138 = msg("22972", dup202); - -var msg25139 = msg("22973", dup202); - -var msg25140 = msg("22974", dup202); - -var msg25141 = msg("22975", dup202); - -var msg25142 = msg("22976", dup202); - -var msg25143 = msg("22977", dup202); - -var msg25144 = msg("22978", dup202); - -var msg25145 = msg("22979", dup202); - -var msg25146 = msg("22980", dup202); - -var msg25147 = msg("22981", dup202); - -var msg25148 = msg("22982", dup202); - -var msg25149 = msg("22983", dup202); - -var msg25150 = msg("22984", dup202); - -var msg25151 = msg("22985", dup202); - -var msg25152 = msg("22986", dup202); - -var msg25153 = msg("22987", dup202); - -var msg25154 = msg("22988", dup202); - -var msg25155 = msg("22989", dup202); - -var msg25156 = msg("22990", dup202); - -var msg25157 = msg("22991", dup202); - -var msg25158 = msg("22992", dup202); - -var msg25159 = msg("22993", dup202); - -var msg25160 = msg("22994", dup202); - -var msg25161 = msg("22995", dup202); - -var msg25162 = msg("22996", dup202); - -var msg25163 = msg("22997", dup202); - -var msg25164 = msg("22998", dup202); - -var msg25165 = msg("22999", dup202); - -var msg25166 = msg("23000", dup202); - -var msg25167 = msg("23001", dup202); - -var msg25168 = msg("23002", dup202); - -var msg25169 = msg("23003", dup202); - -var msg25170 = msg("23004", dup197); - -var msg25171 = msg("23005", dup197); - -var msg25172 = msg("23006", dup197); - -var msg25173 = msg("23007", dup197); - -var msg25174 = msg("23008", dup201); - -var msg25175 = msg("23009", dup197); - -var msg25176 = msg("23010", dup197); - -var msg25177 = msg("23011", dup202); - -var msg25178 = msg("23012", dup202); - -var msg25179 = msg("23013", dup202); - -var msg25180 = msg("23014", dup197); - -var msg25181 = msg("23015", dup265); - -var msg25182 = msg("23016", dup192); - -var msg25183 = msg("23017", dup202); - -var msg25184 = msg("23018", dup202); - -var msg25185 = msg("23019", dup269); - -var msg25186 = msg("23020", dup263); - -var msg25187 = msg("23021", dup263); - -var msg25188 = msg("23022", dup263); - -var msg25189 = msg("23023", dup263); - -var msg25190 = msg("23024", dup263); - -var msg25191 = msg("23025", dup263); - -var msg25192 = msg("23026", dup263); - -var msg25193 = msg("23027", dup263); - -var msg25194 = msg("23028", dup263); - -var msg25195 = msg("23029", dup263); - -var msg25196 = msg("23030", dup263); - -var msg25197 = msg("23031", dup263); - -var msg25198 = msg("23032", dup263); - -var msg25199 = msg("23033", dup263); - -var msg25200 = msg("23034", dup263); - -var msg25201 = msg("23035", dup263); - -var msg25202 = msg("23036", dup263); - -var msg25203 = msg("23037", dup263); - -var msg25204 = msg("23038", dup263); - -var msg25205 = msg("23039", dup287); - -var msg25206 = msg("23040", dup287); - -var msg25207 = msg("23041", dup202); - -var msg25208 = msg("23042", dup269); - -var msg25209 = msg("23043", dup269); - -var msg25210 = msg("23044", dup269); - -var msg25211 = msg("23045", dup269); - -var msg25212 = msg("23046", dup267); - -var msg25213 = msg("23047", dup267); - -var msg25214 = msg("23048", dup265); - -var msg25215 = msg("23049", dup265); - -var msg25216 = msg("23050", dup265); - -var msg25217 = msg("23051", dup202); - -var msg25218 = msg("23054", dup267); - -var msg25219 = msg("23055", dup227); - -var msg25220 = msg("23056", dup197); - -var msg25221 = msg("23057", dup263); - -var msg25222 = msg("23058", dup202); - -var msg25223 = msg("23059", dup197); - -var msg25224 = msg("23060", dup267); - -var msg25225 = msg("23061", dup263); - -var msg25226 = msg("23062", dup263); - -var msg25227 = msg("23063", dup263); - -var msg25228 = msg("23064", dup263); - -var msg25229 = msg("23065", dup263); - -var msg25230 = msg("23066", dup263); - -var msg25231 = msg("23067", dup263); - -var msg25232 = msg("23068", dup263); - -var msg25233 = msg("23069", dup263); - -var msg25234 = msg("23070", dup263); - -var msg25235 = msg("23071", dup263); - -var msg25236 = msg("23072", dup263); - -var msg25237 = msg("23073", dup263); - -var msg25238 = msg("23074", dup263); - -var msg25239 = msg("23075", dup263); - -var msg25240 = msg("23076", dup263); - -var msg25241 = msg("23077", dup263); - -var msg25242 = msg("23078", dup263); - -var msg25243 = msg("23079", dup263); - -var msg25244 = msg("23080", dup263); - -var msg25245 = msg("23081", dup263); - -var msg25246 = msg("23082", dup263); - -var msg25247 = msg("23083", dup263); - -var msg25248 = msg("23084", dup263); - -var msg25249 = msg("23085", dup202); - -var msg25250 = msg("23086", dup202); - -var msg25251 = msg("23087", dup202); - -var msg25252 = msg("23088", dup202); - -var msg25253 = msg("23089", dup202); - -var msg25254 = msg("23090", dup265); - -var msg25255 = msg("23091", dup197); - -var msg25256 = msg("23092", dup197); - -var msg25257 = msg("23093", dup197); - -var msg25258 = msg("23094", dup197); - -var msg25259 = msg("23095", dup197); - -var msg25260 = msg("23096", dup267); - -var msg25261 = msg("23097", dup198); - -var msg25262 = msg("23098", dup197); - -var msg25263 = msg("23099", dup198); - -var msg25264 = msg("23100", dup197); - -var msg25265 = msg("23101", dup197); - -var msg25266 = msg("23102", dup192); - -var msg25267 = msg("23103", dup192); - -var msg25268 = msg("23104", dup192); - -var msg25269 = msg("23105", dup197); - -var msg25270 = msg("23106", dup192); - -var msg25271 = msg("23107", dup265); - -var msg25272 = msg("23108", dup192); - -var msg25273 = msg("23109", dup192); - -var msg25274 = msg("23110", dup197); - -var msg25275 = msg("23111", dup304); - -var msg25276 = msg("23112", dup198); - -var msg25277 = msg("23113", dup269); - -var msg25278 = msg("23114", dup269); - -var msg25279 = msg("23115", dup240); - -var msg25280 = msg("23116", dup265); - -var msg25281 = msg("23117", dup265); - -var msg25282 = msg("23118", dup265); - -var msg25283 = msg("23119", dup202); - -var msg25284 = msg("23120", dup202); - -var msg25285 = msg("23121", dup265); - -var msg25286 = msg("23122", dup265); - -var msg25287 = msg("23123", dup265); - -var msg25288 = msg("23124", dup267); - -var msg25289 = msg("23125", dup267); - -var msg25290 = msg("23126", dup267); - -var msg25291 = msg("23127", dup267); - -var msg25292 = msg("23128", dup265); - -var msg25293 = msg("23129", dup202); - -var msg25294 = msg("23130", dup202); - -var msg25295 = msg("23131", dup202); - -var msg25296 = msg("23132", dup202); - -var msg25297 = msg("23133", dup197); - -var msg25298 = msg("23134", dup265); - -var msg25299 = msg("23135", dup267); - -var msg25300 = msg("23136", dup267); - -var msg25301 = msg("23137", dup267); - -var msg25302 = msg("23138", dup201); - -var msg25303 = msg("23139", dup201); - -var msg25304 = msg("23140", dup269); - -var msg25305 = msg("23141", dup267); - -var msg25306 = msg("23142", dup265); - -var msg25307 = msg("23143", dup265); - -var msg25308 = msg("23144", dup265); - -var msg25309 = msg("23145", dup265); - -var msg25310 = msg("23146", dup265); - -var msg25311 = msg("23147", dup267); - -var msg25312 = msg("23148", dup202); - -var msg25313 = msg("23149", dup267); - -var msg25314 = msg("23150", dup197); - -var msg25315 = msg("23151", dup197); - -var msg25316 = msg("23152", dup197); - -var msg25317 = msg("23153", dup197); - -var msg25318 = msg("23154", dup197); - -var msg25319 = msg("23155", dup197); - -var msg25320 = msg("23156", dup267); - -var msg25321 = msg("23157", dup267); - -var msg25322 = msg("23158", dup202); - -var msg25323 = msg("23159", dup202); - -var msg25324 = msg("23160", dup202); - -var msg25325 = msg("23161", dup202); - -var msg25326 = msg("23162", dup276); - -var msg25327 = msg("23163", dup276); - -var msg25328 = msg("23164", dup267); - -var msg25329 = msg("23165", dup267); - -var msg25330 = msg("23166", dup202); - -var msg25331 = msg("23167", dup202); - -var msg25332 = msg("23168", dup202); - -var msg25333 = msg("23169", dup202); - -var msg25334 = msg("23170", dup197); - -var msg25335 = msg("23171", dup202); - -var msg25336 = msg("23172", dup265); - -var msg25337 = msg("23173", dup192); - -var msg25338 = msg("23174", dup197); - -var msg25339 = msg("23175", dup197); - -var msg25340 = msg("23176", dup202); - -var msg25341 = msg("23177", dup267); - -var msg25342 = msg("23178", dup197); - -var msg25343 = msg("23179", dup269); - -var msg25344 = msg("23180", dup250); - -var msg25345 = msg("23181", dup202); - -var msg25346 = msg("23182", dup267); - -var msg25347 = msg("23183", dup202); - -var msg25348 = msg("23184", dup202); - -var msg25349 = msg("23185", dup202); - -var msg25350 = msg("23186", dup265); - -var msg25351 = msg("23187", dup202); - -var msg25352 = msg("23188", dup202); - -var msg25353 = msg("23189", dup202); - -var msg25354 = msg("23190", dup202); - -var msg25355 = msg("23191", dup202); - -var msg25356 = msg("23192", dup202); - -var msg25357 = msg("23193", dup202); - -var msg25358 = msg("23194", dup202); - -var msg25359 = msg("23195", dup202); - -var msg25360 = msg("23196", dup202); - -var msg25361 = msg("23197", dup202); - -var msg25362 = msg("23198", dup202); - -var msg25363 = msg("23199", dup202); - -var msg25364 = msg("23200", dup202); - -var msg25365 = msg("23201", dup202); - -var msg25366 = msg("23202", dup202); - -var msg25367 = msg("23203", dup202); - -var msg25368 = msg("23204", dup202); - -var msg25369 = msg("23205", dup202); - -var msg25370 = msg("23206", dup202); - -var msg25371 = msg("23207", dup202); - -var msg25372 = msg("23208", dup202); - -var msg25373 = msg("23209", dup267); - -var msg25374 = msg("23210", dup267); - -var msg25375 = msg("23211", dup197); - -var msg25376 = msg("23212", dup265); - -var msg25377 = msg("23213", dup260); - -var msg25378 = msg("23214", dup192); - -var msg25379 = msg("23215", dup192); - -var msg25380 = msg("23216", dup260); - -var msg25381 = msg("23217", dup199); - -var msg25382 = msg("23218", dup267); - -var msg25383 = msg("23219", dup267); - -var msg25384 = msg("23220", dup267); - -var msg25385 = msg("23221", dup202); - -var msg25386 = msg("23222", dup202); - -var msg25387 = msg("23223", dup202); - -var msg25388 = msg("23224", dup202); - -var msg25389 = msg("23225", dup202); - -var msg25390 = msg("23226", dup202); - -var msg25391 = msg("23227", dup197); - -var msg25392 = msg("23228", dup265); - -var msg25393 = msg("23229", dup265); - -var msg25394 = msg("23230", dup197); - -var msg25395 = msg("23231", dup197); - -var msg25396 = msg("23232", dup197); - -var msg25397 = msg("23233", dup197); - -var msg25398 = msg("23234", dup202); - -var msg25399 = msg("23235", dup202); - -var msg25400 = msg("23236", dup199); - -var msg25401 = msg("23237", dup276); - -var msg25402 = msg("23238", dup276); - -var msg25403 = msg("23239", dup267); - -var msg25404 = msg("23240", dup276); - -var msg25405 = msg("23241", dup260); - -var msg25406 = msg("23242", dup202); - -var msg25407 = msg("23243", dup201); - -var msg25408 = msg("23244", dup192); - -var msg25409 = msg("23245", dup192); - -var msg25410 = msg("23246", dup303); - -var msg25411 = msg("23247", dup303); - -var msg25412 = msg("23248", dup267); - -var msg25413 = msg("23249", dup267); - -var msg25414 = msg("23250", dup202); - -var msg25415 = msg("23251", dup192); - -var msg25416 = msg("23252", dup202); - -var msg25417 = msg("23253", dup265); - -var msg25418 = msg("23254", dup192); - -var msg25419 = msg("23255", dup192); - -var msg25420 = msg("23256", dup202); - -var msg25421 = msg("23257", dup192); - -var msg25422 = msg("23258", dup267); - -var msg25423 = msg("23259", dup267); - -var msg25424 = msg("23260", dup267); - -var msg25425 = msg("23261", dup202); - -var msg25426 = msg("23262", dup192); - -var msg25427 = msg("23263", dup267); - -var msg25428 = msg("23264", dup267); - -var msg25429 = msg("23265", dup267); - -var msg25430 = msg("23266", dup197); - -var msg25431 = msg("23267", dup197); - -var msg25432 = msg("23268", dup197); - -var msg25433 = msg("23269", dup197); - -var msg25434 = msg("23270", dup197); - -var msg25435 = msg("23271", dup197); - -var msg25436 = msg("23272", dup197); - -var msg25437 = msg("23273", dup267); - -var msg25438 = msg("23274", dup267); - -var msg25439 = msg("23275", dup267); - -var msg25440 = msg("23276", dup267); - -var msg25441 = msg("23277", dup267); - -var msg25442 = msg("23278", dup265); - -var msg25443 = msg("23279", dup267); - -var msg25444 = msg("23280", dup265); - -var msg25445 = msg("23281", dup265); - -var msg25446 = msg("23282", dup265); - -var msg25447 = msg("23283", dup265); - -var msg25448 = msg("23284", dup265); - -var msg25449 = msg("23285", dup265); - -var msg25450 = msg("23286", dup265); - -var msg25451 = msg("23287", dup265); - -var msg25452 = msg("23288", dup265); - -var msg25453 = msg("23289", dup265); - -var msg25454 = msg("23290", dup265); - -var msg25455 = msg("23291", dup265); - -var msg25456 = msg("23292", dup265); - -var msg25457 = msg("23293", dup265); - -var msg25458 = msg("23294", dup265); - -var msg25459 = msg("23295", dup265); - -var msg25460 = msg("23296", dup265); - -var msg25461 = msg("23297", dup265); - -var msg25462 = msg("23298", dup265); - -var msg25463 = msg("23299", dup265); - -var msg25464 = msg("23300", dup265); - -var msg25465 = msg("23301", dup265); - -var msg25466 = msg("23302", dup265); - -var msg25467 = msg("23303", dup265); - -var msg25468 = msg("23304", dup265); - -var msg25469 = msg("23305", dup197); - -var msg25470 = msg("23306", dup192); - -var msg25471 = msg("23307", dup192); - -var msg25472 = msg("23308", dup192); - -var msg25473 = msg("23309", dup267); - -var msg25474 = msg("23310", dup267); - -var msg25475 = msg("23311", dup267); - -var msg25476 = msg("23312", dup267); - -var msg25477 = msg("23313", dup267); - -var msg25478 = msg("23314", dup276); - -var msg25479 = msg("23315", dup276); - -var msg25480 = msg("23316", dup267); - -var msg25481 = msg("23317", dup192); - -var msg25482 = msg("23318", dup287); - -var msg25483 = msg("23319", dup202); - -var msg25484 = msg("23320", dup202); - -var msg25485 = msg("23321", dup202); - -var msg25486 = msg("23322", dup202); - -var msg25487 = msg("23323", dup287); - -var msg25488 = msg("23324", dup287); - -var msg25489 = msg("23325", dup287); - -var msg25490 = msg("23326", dup287); - -var msg25491 = msg("23327", dup287); - -var msg25492 = msg("23328", dup287); - -var msg25493 = msg("23329", dup287); - -var msg25494 = msg("23330", dup197); - -var msg25495 = msg("23331", dup192); - -var msg25496 = msg("23332", dup192); - -var msg25497 = msg("23333", dup192); - -var msg25498 = msg("23334", dup192); - -var msg25499 = msg("23335", dup192); - -var msg25500 = msg("23336", dup192); - -var msg25501 = msg("23337", dup192); - -var msg25502 = msg("23338", dup192); - -var msg25503 = msg("23339", dup192); - -var msg25504 = msg("23340", dup192); - -var msg25505 = msg("23341", dup192); - -var msg25506 = msg("23342", dup192); - -var msg25507 = msg("23343", dup192); - -var msg25508 = msg("23344", dup192); - -var msg25509 = msg("23345", dup192); - -var msg25510 = msg("23346", dup197); - -var msg25511 = msg("23347", dup202); - -var msg25512 = msg("23348", dup202); - -var msg25513 = msg("23349", dup202); - -var msg25514 = msg("23350", dup202); - -var msg25515 = msg("23351", dup287); - -var msg25516 = msg("23352", dup265); - -var msg25517 = msg("23353", dup265); - -var msg25518 = msg("23354", dup197); - -var msg25519 = msg("23355", dup197); - -var msg25520 = msg("23356", dup197); - -var msg25521 = msg("23357", dup287); - -var msg25522 = msg("23358", dup287); - -var msg25523 = msg("23359", dup287); - -var msg25524 = msg("23360", dup265); - -var msg25525 = msg("23361", dup265); - -var msg25526 = msg("23362", dup265); - -var msg25527 = msg("23363", dup197); - -var msg25528 = msg("23364", dup197); - -var msg25529 = msg("23365", dup197); - -var msg25530 = msg("23366", dup197); - -var msg25531 = msg("23367", dup197); - -var msg25532 = msg("23368", dup274); - -var msg25533 = msg("23369", dup263); - -var msg25534 = msg("23370", dup197); - -var msg25535 = msg("23371", dup197); - -var msg25536 = msg("23372", dup265); - -var msg25537 = msg("23373", dup265); - -var msg25538 = msg("23374", dup265); - -var msg25539 = msg("23375", dup265); - -var msg25540 = msg("23376", dup265); - -var msg25541 = msg("23377", dup269); - -var msg25542 = msg("23378", dup269); - -var msg25543 = msg("23379", dup192); - -var msg25544 = msg("23380", dup192); - -var msg25545 = msg("23381", dup192); - -var msg25546 = msg("23382", dup192); - -var msg25547 = msg("23383", dup192); - -var msg25548 = msg("23384", dup267); - -var msg25549 = msg("23385", dup267); - -var msg25550 = msg("23386", dup197); - -var msg25551 = msg("23387", dup192); - -var msg25552 = msg("23388", dup192); - -var msg25553 = msg("23389", dup192); - -var msg25554 = msg("23390", dup192); - -var msg25555 = msg("23391", dup192); - -var msg25556 = msg("23392", dup198); - -var msg25557 = msg("23393", dup202); - -var msg25558 = msg("23394", dup192); - -var msg25559 = msg("23395", dup265); - -var msg25560 = msg("23396", dup265); - -var msg25561 = msg("23397", dup197); - -var msg25562 = msg("23398", dup197); - -var msg25563 = msg("23399", dup192); - -var msg25564 = msg("23400", dup202); - -var msg25565 = msg("23401", dup265); - -var msg25566 = msg("23402", dup265); - -var msg25567 = msg("23403", dup265); - -var msg25568 = msg("23404", dup197); - -var msg25569 = msg("23405", dup260); - -var msg25570 = msg("23406", dup260); - -var msg25571 = msg("23407", dup267); - -var msg25572 = msg("23408", dup265); - -var msg25573 = msg("23409", dup267); - -var msg25574 = msg("23410", dup267); - -var msg25575 = msg("23411", dup267); - -var msg25576 = msg("23412", dup267); - -var msg25577 = msg("23413", dup267); - -var msg25578 = msg("23414", dup267); - -var msg25579 = msg("23415", dup267); - -var msg25580 = msg("23416", dup267); - -var msg25581 = msg("23417", dup267); - -var msg25582 = msg("23418", dup267); - -var msg25583 = msg("23419", dup267); - -var msg25584 = msg("23420", dup267); - -var msg25585 = msg("23421", dup267); - -var msg25586 = msg("23422", dup267); - -var msg25587 = msg("23423", dup267); - -var msg25588 = msg("23424", dup267); - -var msg25589 = msg("23425", dup267); - -var msg25590 = msg("23426", dup267); - -var msg25591 = msg("23427", dup267); - -var msg25592 = msg("23428", dup267); - -var msg25593 = msg("23429", dup267); - -var msg25594 = msg("23430", dup267); - -var msg25595 = msg("23431", dup267); - -var msg25596 = msg("23432", dup267); - -var msg25597 = msg("23433", dup267); - -var msg25598 = msg("23434", dup267); - -var msg25599 = msg("23435", dup202); - -var msg25600 = msg("23436", dup267); - -var msg25601 = msg("23437", dup267); - -var msg25602 = msg("23438", dup265); - -var msg25603 = msg("23439", dup265); - -var msg25604 = msg("23440", dup265); - -var msg25605 = msg("23441", dup265); - -var msg25606 = msg("23442", dup199); - -var msg25607 = msg("23443", dup199); - -var msg25608 = msg("23444", dup197); - -var msg25609 = msg("23445", dup267); - -var msg25610 = msg("23446", dup192); - -var msg25611 = msg("23447", dup192); - -var msg25612 = msg("23448", dup238); - -var msg25613 = msg("23449", dup192); - -var msg25614 = msg("23450", dup192); - -var msg25615 = msg("23451", dup287); - -var msg25616 = msg("23452", dup263); - -var msg25617 = msg("23453", dup263); - -var msg25618 = msg("23454", dup263); - -var msg25619 = msg("23455", dup263); - -var msg25620 = msg("23456", dup197); - -var msg25621 = msg("23457", dup197); - -var msg25622 = msg("23458", dup197); - -var msg25623 = msg("23459", dup197); - -var msg25624 = msg("23460", dup192); - -var msg25625 = msg("23461", dup197); - -var msg25626 = msg("23462", dup197); - -var msg25627 = msg("23463", dup197); - -var msg25628 = msg("23464", dup201); - -var msg25629 = msg("23465", dup197); - -var msg25630 = msg("23466", dup265); - -var msg25631 = msg("23467", dup202); - -var msg25632 = msg("23468", dup192); - -var msg25633 = msg("23469", dup192); - -var msg25634 = msg("23470", dup265); - -var msg25635 = msg("23471", dup265); - -var msg25636 = msg("23472", dup303); - -var msg25637 = msg("23473", dup202); - -var msg25638 = msg("23474", dup202); - -var msg25639 = msg("23475", dup202); - -var msg25640 = msg("23476", dup202); - -var msg25641 = msg("23477", dup202); - -var msg25642 = msg("23478", dup197); - -var msg25643 = msg("23479", dup197); - -var msg25644 = msg("23480", dup265); - -var msg25645 = msg("23481", dup202); - -var msg25646 = msg("23482", dup202); - -var msg25647 = msg("23483", dup192); - -var msg25648 = msg("23484", dup202); - -var msg25649 = msg("23485", dup265); - -var msg25650 = msg("23486", dup202); - -var msg25651 = msg("23487", dup202); - -var msg25652 = msg("23488", dup202); - -var msg25653 = msg("23489", dup197); - -var msg25654 = msg("23490", dup267); - -var msg25655 = msg("23491", dup192); - -var msg25656 = msg("23492", dup192); - -var msg25657 = msg("23493", dup192); - -var msg25658 = msg("23494", dup192); - -var msg25659 = msg("23495", dup192); - -var all53 = all_match({ - processors: [ - dup177, - dup116, - dup173, - dup174, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg25660 = msg("23496", all53); - -var msg25661 = msg("23497", dup202); - -var msg25662 = msg("23498", dup202); - -var msg25663 = msg("23499", dup197); - -var msg25664 = msg("23500", dup267); - -var msg25665 = msg("23501", dup201); - -var msg25666 = msg("23502", dup201); - -var msg25667 = msg("23503", dup201); - -var msg25668 = msg("23504", dup267); - -var msg25669 = msg("23505", dup267); - -var msg25670 = msg("23506", dup267); - -var msg25671 = msg("23507", dup197); - -var msg25672 = msg("23508", dup197); - -var msg25673 = msg("23509", dup267); - -var msg25674 = msg("23510", dup267); - -var msg25675 = msg("23511", dup267); - -var msg25676 = msg("23512", dup267); - -var msg25677 = msg("23513", dup267); - -var msg25678 = msg("23514", dup267); - -var msg25679 = msg("23515", dup267); - -var msg25680 = msg("23516", dup267); - -var msg25681 = msg("23517", dup197); - -var msg25682 = msg("23518", dup197); - -var msg25683 = msg("23519", dup269); - -var msg25684 = msg("23520", dup269); - -var msg25685 = msg("23521", dup269); - -var msg25686 = msg("23522", dup267); - -var msg25687 = msg("23523", dup267); - -var msg25688 = msg("23524", dup267); - -var msg25689 = msg("23525", dup197); - -var msg25690 = msg("23526", dup197); - -var msg25691 = msg("23527", dup197); - -var msg25692 = msg("23528", dup197); - -var msg25693 = msg("23529", dup197); - -var msg25694 = msg("23530", dup197); - -var msg25695 = msg("23531", dup197); - -var msg25696 = msg("23532", dup197); - -var msg25697 = msg("23533", dup197); - -var msg25698 = msg("23534", dup197); - -var msg25699 = msg("23535", dup197); - -var msg25700 = msg("23536", dup197); - -var msg25701 = msg("23537", dup197); - -var msg25702 = msg("23538", dup197); - -var msg25703 = msg("23539", dup197); - -var msg25704 = msg("23540", dup197); - -var msg25705 = msg("23541", dup197); - -var msg25706 = msg("23542", dup197); - -var msg25707 = msg("23543", dup197); - -var msg25708 = msg("23544", dup197); - -var msg25709 = msg("23545", dup197); - -var msg25710 = msg("23546", dup197); - -var msg25711 = msg("23547", dup197); - -var msg25712 = msg("23548", dup197); - -var msg25713 = msg("23549", dup197); - -var msg25714 = msg("23550", dup197); - -var msg25715 = msg("23551", dup197); - -var msg25716 = msg("23552", dup197); - -var msg25717 = msg("23553", dup197); - -var msg25718 = msg("23554", dup197); - -var msg25719 = msg("23555", dup197); - -var msg25720 = msg("23556", dup197); - -var msg25721 = msg("23557", dup197); - -var msg25722 = msg("23558", dup197); - -var msg25723 = msg("23559", dup197); - -var msg25724 = msg("23560", dup201); - -var msg25725 = msg("23561", dup202); - -var msg25726 = msg("23562", dup202); - -var msg25727 = msg("23563", dup202); - -var msg25728 = msg("23564", dup197); - -var msg25729 = msg("23565", dup197); - -var msg25730 = msg("23566", dup197); - -var msg25731 = msg("23567", dup267); - -var msg25732 = msg("23568", dup267); - -var msg25733 = msg("23569", dup267); - -var msg25734 = msg("23570", dup202); - -var msg25735 = msg("23571", dup202); - -var msg25736 = msg("23572", dup202); - -var msg25737 = msg("23573", dup297); - -var msg25738 = msg("23574", dup202); - -var msg25739 = msg("23575", dup202); - -var msg25740 = msg("23576", dup202); - -var msg25741 = msg("23577", dup197); - -var msg25742 = msg("23578", dup267); - -var msg25743 = msg("23579", dup267); - -var msg25744 = msg("23580", dup197); - -var msg25745 = msg("23581", dup197); - -var msg25746 = msg("23582", dup197); - -var msg25747 = msg("23583", dup197); - -var msg25748 = msg("23584", dup197); - -var msg25749 = msg("23585", dup201); - -var msg25750 = msg("23586", dup197); - -var msg25751 = msg("23587", dup197); - -var msg25752 = msg("23588", dup197); - -var msg25753 = msg("23589", dup197); - -var msg25754 = msg("23590", dup197); - -var msg25755 = msg("23591", dup267); - -var msg25756 = msg("23592", dup267); - -var msg25757 = msg("23593", dup192); - -var msg25758 = msg("23594", dup192); - -var msg25759 = msg("23595", dup192); - -var msg25760 = msg("23596", dup269); - -var msg25761 = msg("23597", dup192); - -var msg25762 = msg("23598", dup202); - -var msg25763 = msg("23599", dup202); - -var msg25764 = msg("23600", dup192); - -var msg25765 = msg("23601", dup194); - -var msg25766 = msg("23602", dup194); - -var msg25767 = msg("23603", dup194); - -var msg25768 = msg("23604", dup194); - -var msg25769 = msg("23605", dup202); - -var msg25770 = msg("23606", dup192); - -var msg25771 = msg("23607", dup192); - -var msg25772 = msg("23608", dup313); - -var msg25773 = msg("23609", dup265); - -var msg25774 = msg("23610", dup238); - -var msg25775 = msg("23611", dup202); - -var msg25776 = msg("23612", dup202); - -var msg25777 = msg("23613", dup265); - -var msg25778 = msg("23614", dup201); - -var msg25779 = msg("23615", dup303); - -var msg25780 = msg("23616", dup202); - -var msg25781 = msg("23617", dup287); - -var msg25782 = msg("23618", dup202); - -var msg25783 = msg("23619", dup202); - -var msg25784 = msg("23620", dup202); - -var msg25785 = msg("23621", dup202); - -var msg25786 = msg("23622", dup202); - -var msg25787 = msg("23623", dup267); - -var msg25788 = msg("23624", dup265); - -var msg25789 = msg("23625", dup265); - -var msg25790 = msg("23626", dup310); - -var msg25791 = msg("23627", dup269); - -var msg25792 = msg("23628", dup192); - -var msg25793 = msg("23629", dup263); - -var msg25794 = msg("23630", dup192); - -var msg25795 = msg("23631", dup267); - -var msg25796 = msg("23632", dup197); - -var msg25797 = msg("23633", dup287); - -var msg25798 = msg("23634", dup287); - -var msg25799 = msg("23635", dup192); - -var msg25800 = msg("23636", dup202); - -var msg25801 = msg("23637", dup202); - -var msg25802 = msg("23638", dup202); - -var msg25803 = msg("23639", dup202); - -var msg25804 = msg("23640", dup202); - -var msg25805 = msg("23641", dup287); - -var msg25806 = msg("23642", dup287); - -var msg25807 = msg("23643", dup287); - -var msg25808 = msg("23644", dup202); - -var msg25809 = msg("23645", dup202); - -var msg25810 = msg("23646", dup287); - -var msg25811 = msg("23647", dup202); - -var msg25812 = msg("23648", dup202); - -var msg25813 = msg("23649", dup202); - -var msg25814 = msg("23650", dup202); - -var msg25815 = msg("23651", dup287); - -var msg25816 = msg("23652", dup287); - -var msg25817 = msg("23653", dup287); - -var msg25818 = msg("23654", dup287); - -var msg25819 = msg("23655", dup287); - -var msg25820 = msg("23656", dup287); - -var msg25821 = msg("23657", dup287); - -var msg25822 = msg("23658", dup202); - -var msg25823 = msg("23659", dup202); - -var msg25824 = msg("23660", dup202); - -var msg25825 = msg("23661", dup202); - -var msg25826 = msg("23662", dup202); - -var msg25827 = msg("23663", dup202); - -var msg25828 = msg("23664", dup202); - -var msg25829 = msg("23665", dup202); - -var msg25830 = msg("23666", dup202); - -var msg25831 = msg("23667", dup202); - -var msg25832 = msg("23668", dup202); - -var msg25833 = msg("23669", dup287); - -var msg25834 = msg("23670", dup202); - -var msg25835 = msg("23671", dup287); - -var msg25836 = msg("23672", dup202); - -var msg25837 = msg("23673", dup202); - -var msg25838 = msg("23674", dup202); - -var msg25839 = msg("23675", dup202); - -var msg25840 = msg("23676", dup202); - -var msg25841 = msg("23677", dup202); - -var msg25842 = msg("23678", dup202); - -var msg25843 = msg("23679", dup202); - -var msg25844 = msg("23680", dup202); - -var msg25845 = msg("23681", dup202); - -var msg25846 = msg("23682", dup202); - -var msg25847 = msg("23683", dup202); - -var msg25848 = msg("23684", dup202); - -var msg25849 = msg("23685", dup202); - -var msg25850 = msg("23686", dup202); - -var msg25851 = msg("23687", dup202); - -var msg25852 = msg("23688", dup202); - -var msg25853 = msg("23689", dup202); - -var msg25854 = msg("23690", dup202); - -var msg25855 = msg("23691", dup202); - -var msg25856 = msg("23692", dup202); - -var msg25857 = msg("23693", dup202); - -var msg25858 = msg("23694", dup202); - -var msg25859 = msg("23695", dup202); - -var msg25860 = msg("23696", dup202); - -var msg25861 = msg("23697", dup202); - -var msg25862 = msg("23698", dup269); - -var msg25863 = msg("23699", dup202); - -var msg25864 = msg("23700", dup202); - -var msg25865 = msg("23701", dup202); - -var msg25866 = msg("23702", dup202); - -var msg25867 = msg("23703", dup269); - -var msg25868 = msg("23704", dup267); - -var msg25869 = msg("23705", dup267); - -var msg25870 = msg("23706", dup267); - -var msg25871 = msg("23707", dup202); - -var msg25872 = msg("23708", dup202); - -var msg25873 = msg("23709", dup202); - -var msg25874 = msg("23710", dup202); - -var msg25875 = msg("23711", dup202); - -var msg25876 = msg("23712", dup202); - -var msg25877 = msg("23713", dup202); - -var msg25878 = msg("23714", dup202); - -var msg25879 = msg("23715", dup202); - -var msg25880 = msg("23716", dup202); - -var msg25881 = msg("23717", dup202); - -var msg25882 = msg("23718", dup202); - -var msg25883 = msg("23719", dup267); - -var msg25884 = msg("23720", dup202); - -var msg25885 = msg("23721", dup202); - -var msg25886 = msg("23722", dup202); - -var msg25887 = msg("23723", dup202); - -var msg25888 = msg("23724", dup202); - -var msg25889 = msg("23725", dup267); - -var msg25890 = msg("23726", dup267); - -var msg25891 = msg("23727", dup202); - -var msg25892 = msg("23728", dup202); - -var msg25893 = msg("23729", dup202); - -var msg25894 = msg("23730", dup202); - -var msg25895 = msg("23731", dup202); - -var msg25896 = msg("23732", dup269); - -var msg25897 = msg("23733", dup202); - -var msg25898 = msg("23734", dup202); - -var msg25899 = msg("23735", dup202); - -var msg25900 = msg("23736", dup202); - -var msg25901 = msg("23737", dup202); - -var msg25902 = msg("23738", dup202); - -var msg25903 = msg("23739", dup202); - -var msg25904 = msg("23740", dup202); - -var msg25905 = msg("23741", dup202); - -var msg25906 = msg("23742", dup202); - -var msg25907 = msg("23743", dup202); - -var msg25908 = msg("23744", dup202); - -var msg25909 = msg("23745", dup202); - -var msg25910 = msg("23746", dup202); - -var msg25911 = msg("23747", dup202); - -var msg25912 = msg("23748", dup202); - -var msg25913 = msg("23749", dup202); - -var msg25914 = msg("23750", dup202); - -var msg25915 = msg("23751", dup202); - -var msg25916 = msg("23752", dup202); - -var msg25917 = msg("23753", dup202); - -var msg25918 = msg("23754", dup202); - -var msg25919 = msg("23755", dup202); - -var msg25920 = msg("23756", dup267); - -var msg25921 = msg("23757", dup202); - -var msg25922 = msg("23758", dup202); - -var msg25923 = msg("23759", dup202); - -var msg25924 = msg("23760", dup202); - -var msg25925 = msg("23761", dup202); - -var msg25926 = msg("23762", dup202); - -var msg25927 = msg("23763", dup202); - -var msg25928 = msg("23764", dup202); - -var msg25929 = msg("23765", dup202); - -var msg25930 = msg("23766", dup202); - -var msg25931 = msg("23767", dup202); - -var msg25932 = msg("23768", dup202); - -var msg25933 = msg("23769", dup202); - -var msg25934 = msg("23770", dup202); - -var msg25935 = msg("23771", dup202); - -var msg25936 = msg("23772", dup202); - -var msg25937 = msg("23773", dup202); - -var msg25938 = msg("23774", dup202); - -var msg25939 = msg("23775", dup202); - -var msg25940 = msg("23776", dup202); - -var msg25941 = msg("23777", dup202); - -var msg25942 = msg("23778", dup192); - -var msg25943 = msg("23779", dup265); - -var msg25944 = msg("23780", dup192); - -var msg25945 = msg("23781", dup202); - -var msg25946 = msg("23782", dup192); - -var msg25947 = msg("23783", dup199); - -var msg25948 = msg("23784", dup260); - -var msg25949 = msg("23785", dup202); - -var msg25950 = msg("23786", dup202); - -var msg25951 = msg("23787", dup192); - -var msg25952 = msg("23788", dup192); - -var msg25953 = msg("23789", dup267); - -var msg25954 = msg("23790", dup267); - -var msg25955 = msg("23791", dup265); - -var msg25956 = msg("23792", dup265); - -var msg25957 = msg("23793", dup250); - -var msg25958 = msg("23794", dup202); - -var msg25959 = msg("23795", dup263); - -var msg25960 = msg("23796", dup197); - -var msg25961 = msg("23797", dup202); - -var msg25962 = msg("23798", dup202); - -var msg25963 = msg("23799", dup263); - -var msg25964 = msg("23800", dup263); - -var msg25965 = msg("23801", dup263); - -var msg25966 = msg("23802", dup263); - -var msg25967 = msg("23803", dup263); - -var msg25968 = msg("23804", dup263); - -var msg25969 = msg("23805", dup267); - -var msg25970 = msg("23806", dup197); - -var msg25971 = msg("23807", dup202); - -var msg25972 = msg("23808", dup202); - -var msg25973 = msg("23809", dup202); - -var msg25974 = msg("23810", dup202); - -var msg25975 = msg("23811", dup202); - -var msg25976 = msg("23812", dup202); - -var msg25977 = msg("23813", dup202); - -var msg25978 = msg("23814", dup202); - -var msg25979 = msg("23815", dup202); - -var msg25980 = msg("23816", dup202); - -var msg25981 = msg("23817", dup202); - -var msg25982 = msg("23818", dup202); - -var msg25983 = msg("23819", dup202); - -var msg25984 = msg("23820", dup202); - -var msg25985 = msg("23821", dup202); - -var msg25986 = msg("23822", dup202); - -var msg25987 = msg("23823", dup202); - -var msg25988 = msg("23824", dup263); - -var msg25989 = msg("23825", dup202); - -var msg25990 = msg("23826", dup202); - -var msg25991 = msg("23827", dup265); - -var msg25992 = msg("23828", dup265); - -var msg25993 = msg("23829", dup202); - -var msg25994 = msg("23830", dup202); - -var msg25995 = msg("23831", dup265); - -var msg25996 = msg("23832", dup265); - -var msg25997 = msg("23833", dup202); - -var msg25998 = msg("23834", dup267); - -var msg25999 = msg("23835", dup267); - -var msg26000 = msg("23836", dup265); - -var msg26001 = msg("23837", dup276); - -var msg26002 = msg("23838", dup276); - -var msg26003 = msg("23839", dup197); - -var msg26004 = msg("23840", dup267); - -var msg26005 = msg("23841", dup267); - -var msg26006 = msg("23842", dup197); - -var msg26007 = msg("23843", dup197); - -var msg26008 = msg("23844", dup201); - -var msg26009 = msg("23845", dup201); - -var msg26010 = msg("23846", dup267); - -var msg26011 = msg("23847", dup276); - -var msg26012 = msg("23848", dup202); - -var msg26013 = msg("23849", dup202); - -var msg26014 = msg("23850", dup202); - -var msg26015 = msg("23851", dup269); - -var msg26016 = msg("23852", dup269); - -var msg26017 = msg("23853", dup267); - -var msg26018 = msg("23854", dup267); - -var msg26019 = msg("23855", dup267); - -var msg26020 = msg("23856", dup267); - -var msg26021 = msg("23857", dup250); - -var msg26022 = msg("23858", dup250); - -var msg26023 = msg("23859", dup250); - -var msg26024 = msg("23860", dup265); - -var msg26025 = msg("23861", dup265); - -var msg26026 = msg("23862", dup265); - -var msg26027 = msg("23863", dup303); - -var msg26028 = msg("23864", dup202); - -var msg26029 = msg("23865", dup202); - -var msg26030 = msg("23866", dup202); - -var msg26031 = msg("23867", dup202); - -var msg26032 = msg("23868", dup202); - -var msg26033 = msg("23869", dup202); - -var msg26034 = msg("23870", dup202); - -var msg26035 = msg("23871", dup202); - -var msg26036 = msg("23872", dup201); - -var msg26037 = msg("23873", dup201); - -var msg26038 = msg("23874", dup201); - -var msg26039 = msg("23875", dup201); - -var msg26040 = msg("23876", dup192); - -var msg26041 = msg("23877", dup192); - -var msg26042 = msg("23878", dup265); - -var msg26043 = msg("23879", dup197); - -var msg26044 = msg("23880", dup197); - -var msg26045 = msg("23881", dup202); - -var msg26046 = msg("23882", dup202); - -var msg26047 = msg("23883", dup202); - -var msg26048 = msg("23884", dup202); - -var msg26049 = msg("23885", dup202); - -var msg26050 = msg("23886", dup202); - -var msg26051 = msg("23887", dup202); - -var msg26052 = msg("23888", dup202); - -var msg26053 = msg("23889", dup202); - -var msg26054 = msg("23890", dup202); - -var msg26055 = msg("23891", dup202); - -var msg26056 = msg("23892", dup202); - -var msg26057 = msg("23893", dup192); - -var msg26058 = msg("23894", dup250); - -var msg26059 = msg("23895", dup265); - -var msg26060 = msg("23896", dup265); - -var msg26061 = msg("23897", dup287); - -var msg26062 = msg("23898", dup222); - -var msg26063 = msg("23899", dup201); - -var msg26064 = msg("23900", dup201); - -var msg26065 = msg("23901", dup201); - -var msg26066 = msg("23902", dup201); - -var msg26067 = msg("23903", dup269); - -var msg26068 = msg("23904", dup263); - -var msg26069 = msg("23905", dup267); - -var msg26070 = msg("23906", dup267); - -var msg26071 = msg("23907", dup267); - -var msg26072 = msg("23908", dup267); - -var msg26073 = msg("23909", dup267); - -var msg26074 = msg("23910", dup267); - -var msg26075 = msg("23911", dup267); - -var msg26076 = msg("23912", dup267); - -var msg26077 = msg("23913", dup267); - -var msg26078 = msg("23914", dup267); - -var msg26079 = msg("23915", dup267); - -var msg26080 = msg("23916", dup267); - -var msg26081 = msg("23917", dup267); - -var msg26082 = msg("23918", dup267); - -var msg26083 = msg("23919", dup267); - -var msg26084 = msg("23920", dup267); - -var msg26085 = msg("23921", dup267); - -var msg26086 = msg("23922", dup267); - -var msg26087 = msg("23923", dup267); - -var msg26088 = msg("23924", dup267); - -var msg26089 = msg("23925", dup267); - -var msg26090 = msg("23926", dup267); - -var msg26091 = msg("23927", dup267); - -var msg26092 = msg("23928", dup267); - -var msg26093 = msg("23929", dup267); - -var msg26094 = msg("23930", dup267); - -var msg26095 = msg("23931", dup267); - -var msg26096 = msg("23932", dup267); - -var msg26097 = msg("23933", dup267); - -var msg26098 = msg("23934", dup260); - -var msg26099 = msg("23935", dup192); - -var msg26100 = msg("23936", dup192); - -var msg26101 = msg("23937", dup265); - -var msg26102 = msg("23938", dup192); - -var msg26103 = msg("23939", dup317); - -var msg26104 = msg("23940", dup317); - -var msg26105 = msg("23941", dup192); - -var msg26106 = msg("23942", dup192); - -var msg26107 = msg("23943", dup197); - -var msg26108 = msg("23944", dup265); - -var msg26109 = msg("23945", dup192); - -var msg26110 = msg("23946", dup192); - -var msg26111 = msg("23947", dup260); - -var msg26112 = msg("23948", dup192); - -var msg26113 = msg("23949", dup192); - -var msg26114 = msg("23950", dup267); - -var msg26115 = msg("23951", dup267); - -var msg26116 = msg("23952", dup197); - -var msg26117 = msg("23953", dup192); - -var msg26118 = msg("23954", dup303); - -var msg26119 = msg("23955", dup202); - -var msg26120 = msg("23956", dup197); - -var msg26121 = msg("23957", dup197); - -var msg26122 = msg("23958", dup197); - -var msg26123 = msg("23959", dup197); - -var msg26124 = msg("23960", dup197); - -var msg26125 = msg("23961", dup197); - -var msg26126 = msg("23962", dup202); - -var msg26127 = msg("23963", dup192); - -var msg26128 = msg("23964", dup267); - -var msg26129 = msg("23965", dup267); - -var msg26130 = msg("23966", dup287); - -var msg26131 = msg("23967", dup267); - -var msg26132 = msg("23968", dup192); - -var msg26133 = msg("23969", dup303); - -var msg26134 = msg("23970", dup202); - -var msg26135 = msg("23971", dup192); - -var msg26136 = msg("23972", dup192); - -var msg26137 = msg("23973", dup192); - -var msg26138 = msg("23974", dup197); - -var msg26139 = msg("23975", dup197); - -var msg26140 = msg("23976", dup192); - -var msg26141 = msg("23977", dup192); - -var msg26142 = msg("23978", dup192); - -var msg26143 = msg("23979", dup197); - -var msg26144 = msg("23980", dup197); - -var msg26145 = msg("23981", dup197); - -var msg26146 = msg("23982", dup197); - -var msg26147 = msg("23983", dup197); - -var msg26148 = msg("23984", dup265); - -var msg26149 = msg("23985", dup197); - -var msg26150 = msg("23986", dup197); - -var msg26151 = msg("23987", dup192); - -var msg26152 = msg("23988", dup265); - -var msg26153 = msg("23989", dup197); - -var msg26154 = msg("23990", dup202); - -var msg26155 = msg("23991", dup202); - -var msg26156 = msg("23992", dup197); - -var msg26157 = msg("23993", dup197); - -var msg26158 = msg("23994", dup265); - -var msg26159 = msg("23995", dup265); - -var msg26160 = msg("23996", dup267); - -var msg26161 = msg("23997", dup267); - -var msg26162 = msg("23998", dup197); - -var msg26163 = msg("23999", dup267); - -var msg26164 = msg("24000", dup267); - -var msg26165 = msg("24001", dup267); - -var msg26166 = msg("24002", dup267); - -var msg26167 = msg("24003", dup267); - -var msg26168 = msg("24004", dup197); - -var msg26169 = msg("24005", dup197); - -var msg26170 = msg("24006", dup201); - -var msg26171 = msg("24007", dup197); - -var msg26172 = msg("24008", dup267); - -var msg26173 = msg("24009", dup263); - -var msg26174 = msg("24010", dup192); - -var msg26175 = msg("24011", dup192); - -var msg26176 = msg("24012", dup192); - -var msg26177 = msg("24013", dup192); - -var msg26178 = msg("24014", dup192); - -var msg26179 = msg("24015", dup192); - -var msg26180 = msg("24016", dup192); - -var msg26181 = msg("24017", dup269); - -var msg26182 = msg("24018", dup269); - -var msg26183 = msg("24019", dup269); - -var msg26184 = msg("24020", dup267); - -var msg26185 = msg("24021", dup267); - -var msg26186 = msg("24022", dup267); - -var msg26187 = msg("24023", dup267); - -var msg26188 = msg("24024", dup267); - -var msg26189 = msg("24025", dup267); - -var msg26190 = msg("24026", dup267); - -var msg26191 = msg("24027", dup267); - -var msg26192 = msg("24028", dup267); - -var msg26193 = msg("24029", dup197); - -var msg26194 = msg("24030", dup197); - -var msg26195 = msg("24031", dup263); - -var msg26196 = msg("24032", dup263); - -var msg26197 = msg("24033", dup263); - -var msg26198 = msg("24034", dup263); - -var msg26199 = msg("24035", dup202); - -var msg26200 = msg("24036", dup267); - -var msg26201 = msg("24037", dup267); - -var msg26202 = msg("24038", dup267); - -var msg26203 = msg("24039", dup265); - -var msg26204 = msg("24040", dup265); - -var msg26205 = msg("24041", dup265); - -var msg26206 = msg("24042", dup265); - -var msg26207 = msg("24043", dup265); - -var msg26208 = msg("24044", dup265); - -var msg26209 = msg("24045", dup202); - -var msg26210 = msg("24046", dup202); - -var msg26211 = msg("24047", dup202); - -var msg26212 = msg("24048", dup202); - -var msg26213 = msg("24049", dup202); - -var msg26214 = msg("24050", dup202); - -var msg26215 = msg("24051", dup267); - -var msg26216 = msg("24052", dup267); - -var msg26217 = msg("24053", dup202); - -var msg26218 = msg("24054", dup202); - -var msg26219 = msg("24055", dup267); - -var msg26220 = msg("24056", dup267); - -var msg26221 = msg("24057", dup267); - -var msg26222 = msg("24058", dup267); - -var msg26223 = msg("24059", dup197); - -var msg26224 = msg("24060", dup197); - -var msg26225 = msg("24061", dup197); - -var msg26226 = msg("24062", dup192); - -var msg26227 = msg("24063", dup267); - -var msg26228 = msg("24064", dup267); - -var msg26229 = msg("24065", dup267); - -var msg26230 = msg("24066", dup267); - -var msg26231 = msg("24067", dup269); - -var msg26232 = msg("24068", dup269); - -var msg26233 = msg("24069", dup269); - -var msg26234 = msg("24070", dup269); - -var msg26235 = msg("24071", dup287); - -var msg26236 = msg("24072", dup287); - -var msg26237 = msg("24073", dup287); - -var msg26238 = msg("24074", dup202); - -var msg26239 = msg("24075", dup202); - -var msg26240 = msg("24076", dup202); - -var msg26241 = msg("24077", dup263); - -var msg26242 = msg("24078", dup202); - -var msg26243 = msg("24079", dup202); - -var msg26244 = msg("24080", dup202); - -var msg26245 = msg("24081", dup202); - -var msg26246 = msg("24082", dup263); - -var msg26247 = msg("24083", dup201); - -var msg26248 = msg("24084", dup267); - -var msg26249 = msg("24085", dup267); - -var msg26250 = msg("24086", dup263); - -var msg26251 = msg("24087", dup287); - -var msg26252 = msg("24088", dup230); - -var msg26253 = msg("24089", dup265); - -var msg26254 = msg("24090", dup267); - -var msg26255 = msg("24091", dup199); - -var msg26256 = msg("24092", dup263); - -var msg26257 = msg("24093", dup265); - -var msg26258 = msg("24094", dup202); - -var msg26259 = msg("24095", dup202); - -var msg26260 = msg("24096", dup202); - -var msg26261 = msg("24097", dup202); - -var msg26262 = msg("24098", dup202); - -var msg26263 = msg("24099", dup263); - -var msg26264 = msg("24100", dup202); - -var msg26265 = msg("24101", dup202); - -var msg26266 = msg("24102", dup263); - -var msg26267 = msg("24103", dup265); - -var msg26268 = msg("24104", dup265); - -var msg26269 = msg("24105", dup265); - -var msg26270 = msg("24106", dup265); - -var msg26271 = msg("24107", dup265); - -var msg26272 = msg("24108", dup265); - -var msg26273 = msg("24109", dup265); - -var msg26274 = msg("24110", dup265); - -var msg26275 = msg("24111", dup269); - -var msg26276 = msg("24112", dup260); - -var msg26277 = msg("24113", dup265); - -var msg26278 = msg("24114", dup199); - -var msg26279 = msg("24115", dup263); - -var msg26280 = msg("24116", dup263); - -var msg26281 = msg("24117", dup263); - -var msg26282 = msg("24118", dup263); - -var msg26283 = msg("24119", dup263); - -var msg26284 = msg("24120", dup263); - -var msg26285 = msg("24121", dup263); - -var msg26286 = msg("24122", dup263); - -var msg26287 = msg("24123", dup263); - -var msg26288 = msg("24124", dup267); - -var msg26289 = msg("24125", dup267); - -var msg26290 = msg("24126", dup267); - -var msg26291 = msg("24127", dup192); - -var msg26292 = msg("24128", dup265); - -var msg26293 = msg("24129", dup197); - -var msg26294 = msg("24130", dup197); - -var msg26295 = msg("24131", dup267); - -var msg26296 = msg("24132", dup267); - -var msg26297 = msg("24133", dup267); - -var msg26298 = msg("24134", dup267); - -var msg26299 = msg("24135", dup267); - -var msg26300 = msg("24136", dup267); - -var msg26301 = msg("24137", dup267); - -var msg26302 = msg("24138", dup202); - -var msg26303 = msg("24139", dup202); - -var msg26304 = msg("24140", dup202); - -var msg26305 = msg("24141", dup202); - -var msg26306 = msg("24142", dup202); - -var msg26307 = msg("24143", dup263); - -var msg26308 = msg("24144", dup263); - -var msg26309 = msg("24145", dup263); - -var msg26310 = msg("24146", dup263); - -var msg26311 = msg("24147", dup201); - -var msg26312 = msg("24148", dup269); - -var msg26313 = msg("24149", dup269); - -var msg26314 = msg("24150", dup202); - -var msg26315 = msg("24151", dup202); - -var msg26316 = msg("24152", dup267); - -var msg26317 = msg("24153", dup267); - -var msg26318 = msg("24154", dup198); - -var msg26319 = msg("24155", dup198); - -var msg26320 = msg("24156", dup202); - -var msg26321 = msg("24157", dup202); - -var msg26322 = msg("24158", dup202); - -var msg26323 = msg("24159", dup197); - -var msg26324 = msg("24160", dup197); - -var msg26325 = msg("24161", dup197); - -var msg26326 = msg("24162", dup197); - -var msg26327 = msg("24163", dup197); - -var msg26328 = msg("24164", dup197); - -var msg26329 = msg("24165", dup197); - -var msg26330 = msg("24166", dup197); - -var msg26331 = msg("24167", dup202); - -var msg26332 = msg("24168", dup269); - -var msg26333 = msg("24169", dup263); - -var msg26334 = msg("24170", dup267); - -var msg26335 = msg("24171", dup267); - -var msg26336 = msg("24172", dup260); - -var msg26337 = msg("24173", dup263); - -var msg26338 = msg("24174", dup263); - -var msg26339 = msg("24175", dup263); - -var msg26340 = msg("24176", dup201); - -var msg26341 = msg("24177", dup201); - -var msg26342 = msg("24178", dup201); - -var msg26343 = msg("24179", dup201); - -var msg26344 = msg("24180", dup201); - -var msg26345 = msg("24181", dup201); - -var msg26346 = msg("24182", dup263); - -var msg26347 = msg("24183", dup263); - -var msg26348 = msg("24184", dup263); - -var msg26349 = msg("24185", dup263); - -var msg26350 = msg("24186", dup197); - -var msg26351 = msg("24187", dup197); - -var msg26352 = msg("24188", dup197); - -var msg26353 = msg("24189", dup197); - -var msg26354 = msg("24190", dup202); - -var msg26355 = msg("24191", dup263); - -var msg26356 = msg("24192", dup197); - -var msg26357 = msg("24193", dup197); - -var msg26358 = msg("24194", dup197); - -var msg26359 = msg("24195", dup197); - -var msg26360 = msg("24196", dup265); - -var msg26361 = msg("24197", dup265); - -var msg26362 = msg("24198", dup197); - -var msg26363 = msg("24199", dup267); - -var msg26364 = msg("24200", dup267); - -var msg26365 = msg("24201", dup267); - -var msg26366 = msg("24202", dup267); - -var msg26367 = msg("24203", dup267); - -var msg26368 = msg("24204", dup267); - -var msg26369 = msg("24205", dup267); - -var msg26370 = msg("24206", dup202); - -var msg26371 = msg("24207", dup197); - -var msg26372 = msg("24208", dup197); - -var msg26373 = msg("24209", dup197); - -var msg26374 = msg("24210", dup267); - -var msg26375 = msg("24211", dup263); - -var msg26376 = msg("24212", dup267); - -var msg26377 = msg("24213", dup202); - -var msg26378 = msg("24214", dup263); - -var msg26379 = msg("24215", dup263); - -var msg26380 = msg("24216", dup263); - -var msg26381 = msg("24217", dup263); - -var msg26382 = msg("24218", dup202); - -var msg26383 = msg("24219", dup202); - -var msg26384 = msg("24220", dup197); - -var msg26385 = msg("24221", dup267); - -var msg26386 = msg("24222", dup267); - -var msg26387 = msg("24223", dup267); - -var msg26388 = msg("24224", dup263); - -var msg26389 = msg("24225", dup269); - -var msg26390 = msg("24226", dup267); - -var msg26391 = msg("24227", dup267); - -var msg26392 = msg("24228", dup267); - -var msg26393 = msg("24229", dup201); - -var msg26394 = msg("24230", dup201); - -var msg26395 = msg("24231", dup267); - -var msg26396 = msg("24232", dup267); - -var msg26397 = msg("24233", dup267); - -var msg26398 = msg("24234", dup267); - -var msg26399 = msg("24235", dup263); - -var msg26400 = msg("24236", dup263); - -var msg26401 = msg("24237", dup197); - -var msg26402 = msg("24238", dup197); - -var msg26403 = msg("24239", dup197); - -var msg26404 = msg("24240", dup197); - -var msg26405 = msg("24241", dup197); - -var msg26406 = msg("24242", dup197); - -var msg26407 = msg("24243", dup269); - -var msg26408 = msg("24244", dup197); - -var msg26409 = msg("24245", dup197); - -var msg26410 = msg("24246", dup265); - -var msg26411 = msg("24247", dup265); - -var msg26412 = msg("24248", dup265); - -var msg26413 = msg("24249", dup265); - -var msg26414 = msg("24250", dup202); - -var msg26415 = msg("24251", dup263); - -var msg26416 = msg("24252", dup267); - -var msg26417 = msg("24253", dup202); - -var msg26418 = msg("24254", dup202); - -var msg26419 = msg("24255", dup263); - -var msg26420 = msg("24256", dup265); - -var msg26421 = msg("24257", dup263); - -var msg26422 = msg("24258", dup263); - -var msg26423 = msg("24259", dup263); - -var msg26424 = msg("24260", dup263); - -var msg26425 = msg("24261", dup263); - -var msg26426 = msg("24262", dup263); - -var msg26427 = msg("24263", dup269); - -var msg26428 = msg("24264", dup269); - -var msg26429 = msg("24265", dup269); - -var msg26430 = msg("24266", dup197); - -var msg26431 = msg("24267", dup197); - -var msg26432 = msg("24268", dup197); - -var msg26433 = msg("24269", dup197); - -var msg26434 = msg("24270", dup287); - -var msg26435 = msg("24271", dup263); - -var msg26436 = msg("24272", dup197); - -var msg26437 = msg("24273", dup197); - -var msg26438 = msg("24274", dup265); - -var msg26439 = msg("24275", dup265); - -var msg26440 = msg("24276", dup265); - -var msg26441 = msg("24277", dup267); - -var msg26442 = msg("24278", dup267); - -var msg26443 = msg("24279", dup267); - -var msg26444 = msg("24280", dup267); - -var msg26445 = msg("24281", dup265); - -var msg26446 = msg("24282", dup265); - -var msg26447 = msg("24283", dup267); - -var msg26448 = msg("24284", dup197); - -var msg26449 = msg("24285", dup263); - -var msg26450 = msg("24286", dup263); - -var msg26451 = msg("24287", dup263); - -var msg26452 = msg("24288", dup263); - -var msg26453 = msg("24289", dup267); - -var msg26454 = msg("24290", dup267); - -var msg26455 = msg("24291", dup265); - -var msg26456 = msg("24292", dup265); - -var msg26457 = msg("24293", dup255); - -var msg26458 = msg("24294", dup197); - -var all54 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg26459 = msg("24295", all54); - -var msg26460 = msg("24296", dup232); - -var msg26461 = msg("24297", dup232); - -var msg26462 = msg("24298", dup232); - -var msg26463 = msg("24299", dup232); - -var msg26464 = msg("24300", dup197); - -var msg26465 = msg("24301", dup232); - -var msg26466 = msg("24302", dup232); - -var msg26467 = msg("24303", dup232); - -var msg26468 = msg("24304", dup313); - -var msg26469 = msg("24305", dup232); - -var msg26470 = msg("24306", dup265); - -var msg26471 = msg("24307", dup263); - -var msg26472 = msg("24308", dup263); - -var msg26473 = msg("24309", dup263); - -var msg26474 = msg("24310", dup263); - -var msg26475 = msg("24311", dup263); - -var msg26476 = msg("24312", dup263); - -var msg26477 = msg("24313", dup265); - -var msg26478 = msg("24314", dup197); - -var msg26479 = msg("24315", dup197); - -var msg26480 = msg("24316", dup197); - -var msg26481 = msg("24317", dup197); - -var msg26482 = msg("24318", dup197); - -var msg26483 = msg("24319", dup197); - -var msg26484 = msg("24320", dup197); - -var msg26485 = msg("24321", dup197); - -var msg26486 = msg("24322", dup265); - -var msg26487 = msg("24323", dup265); - -var msg26488 = msg("24324", dup197); - -var msg26489 = msg("24325", dup197); - -var msg26490 = msg("24326", dup197); - -var msg26491 = msg("24327", dup197); - -var msg26492 = msg("24328", dup197); - -var msg26493 = msg("24329", dup197); - -var msg26494 = msg("24330", dup197); - -var msg26495 = msg("24331", dup197); - -var msg26496 = msg("24332", dup197); - -var msg26497 = msg("24333", dup197); - -var msg26498 = msg("24334", dup269); - -var msg26499 = msg("24335", dup197); - -var msg26500 = msg("24336", dup197); - -var msg26501 = msg("24337", dup198); - -var msg26502 = msg("24338", dup197); - -var msg26503 = msg("24339", dup255); - -var msg26504 = msg("24340", dup263); - -var msg26505 = msg("24341", dup263); - -var msg26506 = msg("24342", dup265); - -var msg26507 = msg("24343", dup265); - -var msg26508 = msg("24344", dup267); - -var msg26509 = msg("24345", dup263); - -var msg26510 = msg("24346", dup263); - -var msg26511 = msg("24347", dup263); - -var msg26512 = msg("24348", dup265); - -var msg26513 = msg("24349", dup263); - -var msg26514 = msg("24350", dup263); - -var msg26515 = msg("24351", dup197); - -var msg26516 = msg("24352", dup197); - -var msg26517 = msg("24353", dup197); - -var msg26518 = msg("24354", dup197); - -var msg26519 = msg("24355", dup267); - -var msg26520 = msg("24356", dup267); - -var msg26521 = msg("24357", dup197); - -var msg26522 = msg("24358", dup197); - -var msg26523 = msg("24359", dup276); - -var msg26524 = msg("24360", dup276); - -var msg26525 = msg("24361", dup263); - -var msg26526 = msg("24362", dup202); - -var msg26527 = msg("24363", dup202); - -var msg26528 = msg("24364", dup202); - -var msg26529 = msg("24365", dup202); - -var msg26530 = msg("24366", dup319); - -var msg26531 = msg("24367", dup319); - -var msg26532 = msg("24368", dup260); - -var msg26533 = msg("24369", dup260); - -var msg26534 = msg("24370", dup197); - -var msg26535 = msg("24371", dup197); - -var msg26536 = msg("24372", dup198); - -var msg26537 = msg("24373", dup263); - -var msg26538 = msg("24374", dup263); - -var msg26539 = msg("24375", dup263); - -var msg26540 = msg("24376", dup263); - -var msg26541 = msg("24377", dup263); - -var msg26542 = msg("24378", dup287); - -var msg26543 = msg("24379", dup197); - -var msg26544 = msg("24380", dup197); - -var msg26545 = msg("24381", dup263); - -var msg26546 = msg("24382", dup263); - -var msg26547 = msg("24383", dup263); - -var msg26548 = msg("24384", dup263); - -var msg26549 = msg("24385", dup263); - -var msg26550 = msg("24386", dup287); - -var msg26551 = msg("24387", dup287); - -var msg26552 = msg("24388", dup202); - -var msg26553 = msg("24389", dup202); - -var msg26554 = msg("24390", dup202); - -var msg26555 = msg("24391", dup202); - -var msg26556 = msg("24392", dup202); - -var msg26557 = msg("24393", dup267); - -var msg26558 = msg("24394", dup267); - -var msg26559 = msg("24395", dup197); - -var msg26560 = msg("24396", dup197); - -var msg26561 = msg("24397", dup202); - -var msg26562 = msg("24398", dup263); - -var msg26563 = msg("24399", dup263); - -var msg26564 = msg("24400", dup263); - -var msg26565 = msg("24401", dup197); - -var msg26566 = msg("24402", dup263); - -var msg26567 = msg("24403", dup263); - -var msg26568 = msg("24404", dup263); - -var msg26569 = msg("24405", dup263); - -var msg26570 = msg("24406", dup263); - -var msg26571 = msg("24407", dup263); - -var msg26572 = msg("24408", dup263); - -var msg26573 = msg("24409", dup263); - -var msg26574 = msg("24410", dup263); - -var msg26575 = msg("24411", dup263); - -var msg26576 = msg("24412", dup202); - -var msg26577 = msg("24413", dup202); - -var msg26578 = msg("24414", dup197); - -var msg26579 = msg("24415", dup197); - -var msg26580 = msg("24416", dup263); - -var msg26581 = msg("24417", dup263); - -var msg26582 = msg("24418", dup263); - -var msg26583 = msg("24419", dup263); - -var msg26584 = msg("24420", dup263); - -var msg26585 = msg("24421", dup260); - -var msg26586 = msg("24422", dup260); - -var msg26587 = msg("24423", dup240); - -var msg26588 = msg("24424", dup240); - -var msg26589 = msg("24425", dup199); - -var msg26590 = msg("24426", dup263); - -var msg26591 = msg("24427", dup263); - -var msg26592 = msg("24428", dup201); - -var msg26593 = msg("24429", dup201); - -var msg26594 = msg("24430", dup201); - -var msg26595 = msg("24431", dup201); - -var msg26596 = msg("24432", dup202); - -var msg26597 = msg("24433", dup202); - -var msg26598 = msg("24434", dup202); - -var msg26599 = msg("24435", dup265); - -var msg26600 = msg("24436", dup265); - -var msg26601 = msg("24437", dup263); - -var msg26602 = msg("24438", dup263); - -var msg26603 = msg("24439", dup269); - -var msg26604 = msg("24440", dup287); - -var msg26605 = msg("24441", dup269); - -var msg26606 = msg("24442", dup269); - -var msg26607 = msg("24443", dup263); - -var msg26608 = msg("24444", dup263); - -var msg26609 = msg("24445", dup263); - -var msg26610 = msg("24446", dup255); - -var msg26611 = msg("24447", dup202); - -var msg26612 = msg("24448", dup202); - -var msg26613 = msg("24449", dup267); - -var msg26614 = msg("24450", dup263); - -var msg26615 = msg("24451", dup263); - -var msg26616 = msg("24452", dup197); - -var msg26617 = msg("24453", dup202); - -var msg26618 = msg("24454", dup202); - -var msg26619 = msg("24455", dup202); - -var msg26620 = msg("24456", dup202); - -var msg26621 = msg("24457", dup202); - -var msg26622 = msg("24458", dup202); - -var msg26623 = msg("24459", dup202); - -var msg26624 = msg("24460", dup202); - -var msg26625 = msg("24461", dup202); - -var msg26626 = msg("24462", dup202); - -var msg26627 = msg("24463", dup202); - -var msg26628 = msg("24464", dup202); - -var msg26629 = msg("24465", dup202); - -var msg26630 = msg("24466", dup202); - -var msg26631 = msg("24467", dup202); - -var msg26632 = msg("24468", dup202); - -var msg26633 = msg("24469", dup202); - -var msg26634 = msg("24470", dup202); - -var msg26635 = msg("24471", dup202); - -var msg26636 = msg("24472", dup202); - -var msg26637 = msg("24473", dup202); - -var msg26638 = msg("24474", dup202); - -var msg26639 = msg("24475", dup267); - -var msg26640 = msg("24476", dup197); - -var msg26641 = msg("24477", dup197); - -var msg26642 = msg("24478", dup197); - -var msg26643 = msg("24479", dup197); - -var msg26644 = msg("24480", dup197); - -var msg26645 = msg("24481", dup197); - -var msg26646 = msg("24482", dup263); - -var msg26647 = msg("24483", dup202); - -var msg26648 = msg("24484", dup202); - -var msg26649 = msg("24485", dup197); - -var msg26650 = msg("24486", dup197); - -var msg26651 = msg("24487", dup197); - -var msg26652 = msg("24488", dup267); - -var msg26653 = msg("24489", dup267); - -var msg26654 = msg("24490", dup267); - -var msg26655 = msg("24491", dup321); - -var msg26656 = msg("24492", dup321); - -var msg26657 = msg("24493", dup321); - -var msg26658 = msg("24494", dup321); - -var msg26659 = msg("24495", dup321); - -var msg26660 = msg("24496", dup321); - -var msg26661 = msg("24497", dup321); - -var msg26662 = msg("24498", dup311); - -var msg26663 = msg("24499", dup311); - -var msg26664 = msg("24500", dup314); - -var msg26665 = msg("24501", dup311); - -var msg26666 = msg("24502", dup311); - -var msg26667 = msg("24503", dup308); - -var msg26668 = msg("24504", dup321); - -var msg26669 = msg("24505", dup321); - -var msg26670 = msg("24506", dup314); - -var msg26671 = msg("24507", dup309); - -var msg26672 = msg("24508", dup309); - -var msg26673 = msg("24509", dup314); - -var msg26674 = msg("24510", dup311); - -var msg26675 = msg("24511", dup311); - -var msg26676 = msg("24512", dup309); - -var msg26677 = msg("24513", dup309); - -var msg26678 = msg("24514", dup321); - -var msg26679 = msg("24515", dup321); - -var msg26680 = msg("24516", dup321); - -var msg26681 = msg("24517", dup322); - -var msg26682 = msg("24518", dup311); - -var msg26683 = msg("24519", dup311); - -var msg26684 = msg("24520", dup323); - -var msg26685 = msg("24521", dup314); - -var msg26686 = msg("24522", dup308); - -var msg26687 = msg("24523", dup321); - -var msg26688 = msg("24524", dup324); - -var msg26689 = msg("24525", dup311); - -var msg26690 = msg("24526", dup311); - -var msg26691 = msg("24527", dup311); - -var msg26692 = msg("24528", dup311); - -var msg26693 = msg("24529", dup321); - -var msg26694 = msg("24530", dup321); - -var msg26695 = msg("24531", dup321); - -var msg26696 = msg("24532", dup321); - -var msg26697 = msg("24533", dup321); - -var msg26698 = msg("24534", dup321); - -var msg26699 = msg("24535", dup309); - -var msg26700 = msg("24536", dup309); - -var msg26701 = msg("24537", dup309); - -var msg26702 = msg("24538", dup309); - -var msg26703 = msg("24539", dup321); - -var msg26704 = msg("24540", dup321); - -var msg26705 = msg("24541", dup321); - -var msg26706 = msg("24542", dup321); - -var msg26707 = msg("24543", dup311); - -var msg26708 = msg("24544", dup311); - -var msg26709 = msg("24545", dup321); - -var msg26710 = msg("24546", dup311); - -var msg26711 = msg("24547", dup311); - -var msg26712 = msg("24548", dup311); - -var msg26713 = msg("24549", dup309); - -var msg26714 = msg("24550", dup309); - -var msg26715 = msg("24551", dup309); - -var msg26716 = msg("24552", dup309); - -var msg26717 = msg("24553", dup309); - -var msg26718 = msg("24554", dup314); - -var msg26719 = msg("24555", dup314); - -var msg26720 = msg("24556", dup309); - -var msg26721 = msg("24557", dup309); - -var msg26722 = msg("24558", dup309); - -var msg26723 = msg("24559", dup314); - -var msg26724 = msg("24560", dup314); - -var msg26725 = msg("24561", dup311); - -var msg26726 = msg("24562", dup321); - -var msg26727 = msg("24563", dup321); - -var msg26728 = msg("24564", dup321); - -var msg26729 = msg("24565", dup321); - -var msg26730 = msg("24566", dup321); - -var msg26731 = msg("24567", dup321); - -var msg26732 = msg("24568", dup325); - -var msg26733 = msg("24569", dup321); - -var msg26734 = msg("24570", dup314); - -var msg26735 = msg("24571", dup314); - -var msg26736 = msg("24572", dup314); - -var msg26737 = msg("24573", dup314); - -var msg26738 = msg("24574", dup314); - -var msg26739 = msg("24575", dup325); - -var msg26740 = msg("24576", dup321); - -var msg26741 = msg("24577", dup325); - -var msg26742 = msg("24578", dup314); - -var msg26743 = msg("24579", dup314); - -var msg26744 = msg("24580", dup314); - -var msg26745 = msg("24581", dup314); - -var msg26746 = msg("24582", dup314); - -var msg26747 = msg("24583", dup314); - -var msg26748 = msg("24584", dup314); - -var msg26749 = msg("24585", dup314); - -var msg26750 = msg("24586", dup321); - -var msg26751 = msg("24587", dup309); - -var msg26752 = msg("24588", dup309); - -var msg26753 = msg("24589", dup311); - -var msg26754 = msg("24590", dup311); - -var msg26755 = msg("24591", dup311); - -var msg26756 = msg("24592", dup311); - -var msg26757 = msg("24593", dup311); - -var msg26758 = msg("24594", dup321); - -var msg26759 = msg("24595", dup311); - -var msg26760 = msg("24596", dup311); - -var msg26761 = msg("24597", dup311); - -var msg26762 = msg("24598", dup326); - -var msg26763 = msg("24599", dup314); - -var msg26764 = msg("24600", dup311); - -var msg26765 = msg("24601", dup311); - -var msg26766 = msg("24602", dup311); - -var msg26767 = msg("24603", dup311); - -var msg26768 = msg("24604", dup311); - -var msg26769 = msg("24605", dup311); - -var msg26770 = msg("24606", dup311); - -var msg26771 = msg("24607", dup311); - -var msg26772 = msg("24608", dup311); - -var msg26773 = msg("24609", dup311); - -var msg26774 = msg("24610", dup311); - -var msg26775 = msg("24611", dup311); - -var msg26776 = msg("24612", dup311); - -var msg26777 = msg("24613", dup311); - -var msg26778 = msg("24614", dup311); - -var msg26779 = msg("24615", dup311); - -var msg26780 = msg("24616", dup311); - -var msg26781 = msg("24617", dup311); - -var msg26782 = msg("24618", dup311); - -var msg26783 = msg("24619", dup311); - -var msg26784 = msg("24620", dup311); - -var msg26785 = msg("24621", dup311); - -var msg26786 = msg("24622", dup311); - -var msg26787 = msg("24623", dup325); - -var msg26788 = msg("24624", dup321); - -var msg26789 = msg("24625", dup309); - -var msg26790 = msg("24626", dup309); - -var msg26791 = msg("24627", dup324); - -var msg26792 = msg("24628", dup316); - -var msg26793 = msg("24629", dup322); - -var msg26794 = msg("24630", dup321); - -var msg26795 = msg("24631", dup325); - -var msg26796 = msg("24632", dup325); - -var msg26797 = msg("24633", dup325); - -var msg26798 = msg("24634", dup325); - -var msg26799 = msg("24635", dup321); - -var msg26800 = msg("24636", dup311); - -var msg26801 = msg("24637", dup311); - -var msg26802 = msg("24638", dup311); - -var msg26803 = msg("24639", dup308); - -var msg26804 = msg("24640", dup309); - -var msg26805 = msg("24641", dup309); - -var msg26806 = msg("24642", dup311); - -var msg26807 = msg("24643", dup314); - -var msg26808 = msg("24644", dup314); - -var msg26809 = msg("24645", dup314); - -var msg26810 = msg("24646", dup314); - -var msg26811 = msg("24647", dup309); - -var msg26812 = msg("24648", dup311); - -var msg26813 = msg("24649", dup309); - -var msg26814 = msg("24650", dup309); - -var msg26815 = msg("24651", dup323); - -var msg26816 = msg("24652", dup311); - -var msg26817 = msg("24653", dup325); - -var msg26818 = msg("24654", dup325); - -var msg26819 = msg("24655", dup311); - -var msg26820 = msg("24656", dup311); - -var msg26821 = msg("24657", dup309); - -var msg26822 = msg("24658", dup309); - -var msg26823 = msg("24659", dup309); - -var msg26824 = msg("24660", dup325); - -var msg26825 = msg("24661", dup325); - -var msg26826 = msg("24662", dup311); - -var msg26827 = msg("24663", dup311); - -var msg26828 = msg("24664", dup311); - -var msg26829 = msg("24665", dup311); - -var msg26830 = msg("24666", dup309); - -var msg26831 = msg("24667", dup311); - -var msg26832 = msg("24668", dup311); - -var msg26833 = msg("24669", dup311); - -var msg26834 = msg("24670", dup311); - -var msg26835 = msg("24671", dup311); - -var msg26836 = msg("24672", dup309); - -var msg26837 = msg("24673", dup309); - -var msg26838 = msg("24674", dup309); - -var msg26839 = msg("24675", dup307); - -var msg26840 = msg("24676", dup307); - -var msg26841 = msg("24677", dup324); - -var msg26842 = msg("24678", dup309); - -var msg26843 = msg("24679", dup309); - -var msg26844 = msg("24680", dup309); - -var msg26845 = msg("24681", dup309); - -var msg26846 = msg("24682", dup309); - -var msg26847 = msg("24683", dup309); - -var msg26848 = msg("24684", dup309); - -var msg26849 = msg("24685", dup309); - -var msg26850 = msg("24686", dup309); - -var msg26851 = msg("24687", dup311); - -var msg26852 = msg("24688", dup311); - -var msg26853 = msg("24689", dup314); - -var msg26854 = msg("24690", dup314); - -var msg26855 = msg("24691", dup314); - -var msg26856 = msg("24692", dup314); - -var msg26857 = msg("24693", dup309); - -var msg26858 = msg("24694", dup311); - -var msg26859 = msg("24695", dup311); - -var msg26860 = msg("24696", dup308); - -var msg26861 = msg("24697", dup324); - -var msg26862 = msg("24698", dup324); - -var msg26863 = msg("24699", dup307); - -var msg26864 = msg("24700", dup307); - -var msg26865 = msg("24701", dup309); - -var msg26866 = msg("24702", dup324); - -var msg26867 = msg("24703", dup324); - -var msg26868 = msg("24704", dup322); - -var msg26869 = msg("24705", dup322); - -var msg26870 = msg("24706", dup309); - -var msg26871 = msg("24707", dup309); - -var msg26872 = msg("24708", dup314); - -var msg26873 = msg("24709", dup314); - -var msg26874 = msg("24710", dup314); - -var msg26875 = msg("24711", dup309); - -var msg26876 = msg("24712", dup309); - -var msg26877 = msg("24713", dup309); - -var msg26878 = msg("24714", dup309); - -var msg26879 = msg("24715", dup309); - -var msg26880 = msg("24716", dup309); - -var msg26881 = msg("24717", dup309); - -var msg26882 = msg("24718", dup309); - -var msg26883 = msg("24719", dup314); - -var msg26884 = msg("24720", dup323); - -var msg26885 = msg("24721", dup314); - -var msg26886 = msg("24722", dup314); - -var msg26887 = msg("24723", dup314); - -var msg26888 = msg("24724", dup314); - -var msg26889 = msg("24725", dup314); - -var msg26890 = msg("24726", dup314); - -var msg26891 = msg("24727", dup311); - -var msg26892 = msg("24728", dup311); - -var msg26893 = msg("24729", dup311); - -var msg26894 = msg("24730", dup311); - -var msg26895 = msg("24731", dup311); - -var msg26896 = msg("24732", dup311); - -var msg26897 = msg("24733", dup311); - -var msg26898 = msg("24734", dup311); - -var msg26899 = msg("24735", dup311); - -var msg26900 = msg("24736", dup311); - -var msg26901 = msg("24737", dup311); - -var msg26902 = msg("24738", dup309); - -var msg26903 = msg("24739", dup307); - -var msg26904 = msg("24740", dup327); - -var msg26905 = msg("24741", dup307); - -var msg26906 = msg("24742", dup307); - -var msg26907 = msg("24743", dup307); - -var msg26908 = msg("24744", dup307); - -var msg26909 = msg("24745", dup307); - -var msg26910 = msg("24746", dup307); - -var msg26911 = msg("24747", dup307); - -var msg26912 = msg("24748", dup307); - -var msg26913 = msg("24749", dup307); - -var msg26914 = msg("24750", dup307); - -var msg26915 = msg("24751", dup307); - -var msg26916 = msg("24752", dup307); - -var msg26917 = msg("24753", dup307); - -var msg26918 = msg("24754", dup307); - -var msg26919 = msg("24755", dup307); - -var msg26920 = msg("24756", dup307); - -var msg26921 = msg("24757", dup307); - -var msg26922 = msg("24758", dup307); - -var msg26923 = msg("24759", dup307); - -var msg26924 = msg("24760", dup307); - -var msg26925 = msg("24761", dup324); - -var msg26926 = msg("24762", dup324); - -var msg26927 = msg("24763", dup309); - -var msg26928 = msg("24764", dup309); - -var msg26929 = msg("24765", dup309); - -var msg26930 = msg("24766", dup314); - -var msg26931 = msg("24767", dup314); - -var msg26932 = msg("24768", dup309); - -var msg26933 = msg("24769", dup311); - -var msg26934 = msg("24770", dup311); - -var msg26935 = msg("24771", dup309); - -var msg26936 = msg("24772", dup309); - -var msg26937 = msg("24773", dup309); - -var msg26938 = msg("24774", dup323); - -var msg26939 = msg("24775", dup323); - -var msg26940 = msg("24776", dup323); - -var msg26941 = msg("24777", dup323); - -var msg26942 = msg("24778", dup311); - -var msg26943 = msg("24779", dup311); - -var msg26944 = msg("24780", dup311); - -var msg26945 = msg("24781", dup311); - -var msg26946 = msg("24782", dup311); - -var msg26947 = msg("24783", dup311); - -var msg26948 = msg("24784", dup311); - -var msg26949 = msg("24785", dup311); - -var msg26950 = msg("24786", dup311); - -var msg26951 = msg("24787", dup311); - -var msg26952 = msg("24788", dup311); - -var msg26953 = msg("24789", dup311); - -var msg26954 = msg("24790", dup311); - -var msg26955 = msg("24791", dup311); - -var msg26956 = msg("24792", dup325); - -var msg26957 = msg("24793", dup311); - -var msg26958 = msg("24794", dup311); - -var msg26959 = msg("24795", dup311); - -var msg26960 = msg("24796", dup311); - -var msg26961 = msg("24797", dup311); - -var msg26962 = msg("24798", dup311); - -var msg26963 = msg("24799", dup311); - -var msg26964 = msg("24800", dup311); - -var msg26965 = msg("24801", dup322); - -var msg26966 = msg("24802", dup309); - -var msg26967 = msg("24803", dup314); - -var msg26968 = msg("24804", dup307); - -var msg26969 = msg("24805", dup310); - -var msg26970 = msg("24806", dup314); - -var msg26971 = msg("24807", dup314); - -var msg26972 = msg("24808", dup325); - -var msg26973 = msg("24809", dup325); - -var msg26974 = msg("24810", dup314); - -var msg26975 = msg("24811", dup314); - -var msg26976 = msg("24812", dup314); - -var msg26977 = msg("24813", dup314); - -var msg26978 = msg("24814", dup315); - -var msg26979 = msg("24815", dup309); - -var msg26980 = msg("24816", dup314); - -var msg26981 = msg("24817", dup314); - -var msg26982 = msg("24818", dup314); - -var msg26983 = msg("24819", dup314); - -var msg26984 = msg("24820", dup314); - -var msg26985 = msg("24821", dup314); - -var msg26986 = msg("24822", dup314); - -var msg26987 = msg("24823", dup309); - -var msg26988 = msg("24824", dup314); - -var msg26989 = msg("24825", dup314); - -var msg26990 = msg("24826", dup314); - -var msg26991 = msg("24827", dup309); - -var msg26992 = msg("24828", dup309); - -var msg26993 = msg("24829", dup309); - -var msg26994 = msg("24830", dup309); - -var msg26995 = msg("24831", dup309); - -var msg26996 = msg("24832", dup309); - -var msg26997 = msg("24833", dup309); - -var msg26998 = msg("24834", dup309); - -var msg26999 = msg("24835", dup309); - -var msg27000 = msg("24836", dup309); - -var msg27001 = msg("24837", dup311); - -var msg27002 = msg("24838", dup311); - -var msg27003 = msg("24839", dup311); - -var msg27004 = msg("24840", dup311); - -var msg27005 = msg("24841", dup311); - -var msg27006 = msg("24842", dup321); - -var msg27007 = msg("24843", dup321); - -var msg27008 = msg("24844", dup321); - -var msg27009 = msg("24845", dup321); - -var msg27010 = msg("24846", dup321); - -var msg27011 = msg("24847", dup321); - -var msg27012 = msg("24848", dup321); - -var msg27013 = msg("24849", dup321); - -var msg27014 = msg("24850", dup321); - -var msg27015 = msg("24851", dup321); - -var msg27016 = msg("24852", dup321); - -var msg27017 = msg("24853", dup321); - -var msg27018 = msg("24854", dup321); - -var msg27019 = msg("24855", dup321); - -var msg27020 = msg("24856", dup321); - -var msg27021 = msg("24857", dup321); - -var msg27022 = msg("24858", dup321); - -var msg27023 = msg("24859", dup321); - -var msg27024 = msg("24860", dup311); - -var msg27025 = msg("24861", dup311); - -var msg27026 = msg("24862", dup311); - -var msg27027 = msg("24863", dup311); - -var msg27028 = msg("24864", dup311); - -var msg27029 = msg("24865", dup311); - -var msg27030 = msg("24866", dup314); - -var msg27031 = msg("24867", dup314); - -var msg27032 = msg("24868", dup309); - -var msg27033 = msg("24869", dup311); - -var msg27034 = msg("24870", dup311); - -var msg27035 = msg("24871", dup311); - -var msg27036 = msg("24872", dup311); - -var msg27037 = msg("24873", dup321); - -var msg27038 = msg("24874", dup307); - -var msg27039 = msg("24875", dup307); - -var msg27040 = msg("24876", dup307); - -var msg27041 = msg("24877", dup307); - -var msg27042 = msg("24878", dup314); - -var msg27043 = msg("24879", dup314); - -var msg27044 = msg("24880", dup314); - -var msg27045 = msg("24881", dup314); - -var msg27046 = msg("24882", dup314); - -var msg27047 = msg("24883", dup311); - -var msg27048 = msg("24884", dup311); - -var msg27049 = msg("24885", dup321); - -var msg27050 = msg("24886", dup321); - -var msg27051 = msg("24887", dup321); - -var msg27052 = msg("24888", dup311); - -var msg27053 = msg("24889", dup309); - -var msg27054 = msg("24890", dup309); - -var msg27055 = msg("24891", dup309); - -var msg27056 = msg("24892", dup309); - -var msg27057 = msg("24893", dup309); - -var msg27058 = msg("24894", dup309); - -var msg27059 = msg("24895", dup323); - -var msg27060 = msg("24896", dup323); - -var msg27061 = msg("24897", dup322); - -var msg27062 = msg("24898", dup307); - -var msg27063 = msg("24899", dup311); - -var msg27064 = msg("24900", dup311); - -var msg27065 = msg("24901", dup314); - -var msg27066 = msg("24902", dup314); - -var msg27067 = msg("24903", dup314); - -var msg27068 = msg("24904", dup309); - -var msg27069 = msg("24905", dup309); - -var msg27070 = msg("24906", dup309); - -var msg27071 = msg("24907", dup316); - -var msg27072 = msg("24908", dup328); - -var msg27073 = msg("24909", dup328); - -var msg27074 = msg("24910", dup322); - -var msg27075 = msg("24911", dup309); - -var msg27076 = msg("24912", dup309); - -var msg27077 = msg("24913", dup309); - -var msg27078 = msg("24914", dup309); - -var msg27079 = msg("24915", dup309); - -var msg27080 = msg("24916", dup321); - -var msg27081 = msg("24917", dup321); - -var msg27082 = msg("24918", dup321); - -var msg27083 = msg("24955", dup309); - -var msg27084 = msg("24956", dup311); - -var msg27085 = msg("24957", dup314); - -var msg27086 = msg("24958", dup314); - -var msg27087 = msg("24959", dup314); - -var msg27088 = msg("24960", dup314); - -var msg27089 = msg("24961", dup314); - -var msg27090 = msg("24962", dup314); - -var msg27091 = msg("24963", dup314); - -var msg27092 = msg("24964", dup309); - -var msg27093 = msg("24965", dup309); - -var msg27094 = msg("24966", dup309); - -var msg27095 = msg("24967", dup309); - -var msg27096 = msg("24968", dup309); - -var msg27097 = msg("24969", dup309); - -var msg27098 = msg("24970", dup309); - -var msg27099 = msg("24971", dup311); - -var all55 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup95, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg27100 = msg("24972", all55); - -var msg27101 = msg("24973", dup309); - -var msg27102 = msg("24974", dup309); - -var msg27103 = msg("24975", dup309); - -var msg27104 = msg("24976", dup321); - -var msg27105 = msg("24977", dup311); - -var msg27106 = msg("24978", dup311); - -var msg27107 = msg("24979", dup311); - -var msg27108 = msg("24980", dup323); - -var msg27109 = msg("24981", dup323); - -var msg27110 = msg("24982", dup323); - -var msg27111 = msg("24983", dup323); - -var msg27112 = msg("24984", dup314); - -var msg27113 = msg("24985", dup309); - -var msg27114 = msg("24986", dup309); - -var msg27115 = msg("24987", dup323); - -var msg27116 = msg("24988", dup309); - -var msg27117 = msg("24989", dup314); - -var msg27118 = msg("24990", dup314); - -var msg27119 = msg("24991", dup309); - -var msg27120 = msg("24992", dup309); - -var msg27121 = msg("24993", dup311); - -var msg27122 = msg("24994", dup314); - -var msg27123 = msg("24995", dup309); - -var msg27124 = msg("24996", dup309); - -var msg27125 = msg("24997", dup309); - -var msg27126 = msg("24998", dup309); - -var msg27127 = msg("24999", dup309); - -var msg27128 = msg("25000", dup309); - -var msg27129 = msg("25001", dup321); - -var msg27130 = msg("25002", dup321); - -var msg27131 = msg("25003", dup309); - -var msg27132 = msg("25004", dup311); - -var msg27133 = msg("25005", dup311); - -var msg27134 = msg("25006", dup307); - -var msg27135 = msg("25007", dup321); - -var msg27136 = msg("25008", dup311); - -var msg27137 = msg("25009", dup325); - -var msg27138 = msg("25010", dup321); - -var msg27139 = msg("25011", dup321); - -var msg27140 = msg("25012", dup309); - -var msg27141 = msg("25013", dup309); - -var msg27142 = msg("25014", dup323); - -var msg27143 = msg("25015", dup321); - -var msg27144 = msg("25016", dup321); - -var msg27145 = msg("25017", dup311); - -var msg27146 = msg("25018", dup321); - -var msg27147 = msg("25019", dup316); - -var msg27148 = msg("25020", dup316); - -var msg27149 = msg("25021", dup321); - -var msg27150 = msg("25022", dup321); - -var msg27151 = msg("25023", dup321); - -var msg27152 = msg("25024", dup321); - -var msg27153 = msg("25025", dup321); - -var msg27154 = msg("25026", dup321); - -var msg27155 = msg("25027", dup321); - -var msg27156 = msg("25028", dup321); - -var msg27157 = msg("25029", dup321); - -var msg27158 = msg("25030", dup321); - -var msg27159 = msg("25031", dup321); - -var msg27160 = msg("25032", dup314); - -var msg27161 = msg("25033", dup314); - -var msg27162 = msg("25034", dup314); - -var msg27163 = msg("25035", dup314); - -var msg27164 = msg("25036", dup324); - -var msg27165 = msg("25037", dup311); - -var msg27166 = msg("25038", dup311); - -var msg27167 = msg("25039", dup311); - -var msg27168 = msg("25040", dup311); - -var msg27169 = msg("25041", dup311); - -var msg27170 = msg("25042", dup311); - -var msg27171 = msg("25043", dup311); - -var msg27172 = msg("25044", dup311); - -var msg27173 = msg("25045", dup311); - -var msg27174 = msg("25046", dup311); - -var msg27175 = msg("25047", dup311); - -var msg27176 = msg("25048", dup311); - -var msg27177 = msg("25049", dup321); - -var msg27178 = msg("25050", dup321); - -var msg27179 = msg("25051", dup311); - -var msg27180 = msg("25052", dup311); - -var msg27181 = msg("25053", dup311); - -var msg27182 = msg("25054", dup321); - -var msg27183 = msg("25055", dup311); - -var msg27184 = msg("25056", dup311); - -var msg27185 = msg("25057", dup314); - -var msg27186 = msg("25058", dup311); - -var msg27187 = msg("25059", dup309); - -var msg27188 = msg("25060", dup314); - -var msg27189 = msg("25061", dup314); - -var msg27190 = msg("25062", dup314); - -var msg27191 = msg("25063", dup309); - -var msg27192 = msg("25064", dup309); - -var msg27193 = msg("25065", dup309); - -var msg27194 = msg("25066", dup309); - -var msg27195 = msg("25067", dup321); - -var msg27196 = msg("25068", dup321); - -var msg27197 = msg("25069", dup321); - -var msg27198 = msg("25070", dup321); - -var msg27199 = msg("25071", dup321); - -var msg27200 = msg("25072", dup321); - -var msg27201 = msg("25073", dup321); - -var msg27202 = msg("25074", dup321); - -var msg27203 = msg("25075", dup321); - -var msg27204 = msg("25076", dup321); - -var msg27205 = msg("25077", dup321); - -var msg27206 = msg("25078", dup311); - -var msg27207 = msg("25079", dup311); - -var msg27208 = msg("25080", dup329); - -var msg27209 = msg("25081", dup329); - -var msg27210 = msg("25082", dup314); - -var msg27211 = msg("25083", dup314); - -var msg27212 = msg("25084", dup311); - -var msg27213 = msg("25085", dup311); - -var msg27214 = msg("25086", dup311); - -var msg27215 = msg("25087", dup311); - -var msg27216 = msg("25088", dup311); - -var msg27217 = msg("25089", dup311); - -var msg27218 = msg("25090", dup311); - -var msg27219 = msg("25091", dup311); - -var msg27220 = msg("25092", dup311); - -var msg27221 = msg("25093", dup311); - -var msg27222 = msg("25094", dup311); - -var msg27223 = msg("25095", dup311); - -var msg27224 = msg("25096", dup311); - -var msg27225 = msg("25097", dup311); - -var msg27226 = msg("25098", dup321); - -var msg27227 = msg("25099", dup321); - -var msg27228 = msg("25100", dup321); - -var msg27229 = msg("25101", dup309); - -var msg27230 = msg("25102", dup307); - -var msg27231 = msg("25103", dup311); - -var msg27232 = msg("25104", dup314); - -var msg27233 = msg("25105", dup314); - -var msg27234 = msg("25106", dup311); - -var msg27235 = msg("25107", dup321); - -var msg27236 = msg("25108", dup321); - -var msg27237 = msg("25109", dup321); - -var msg27238 = msg("25110", dup321); - -var msg27239 = msg("25111", dup309); - -var msg27240 = msg("25112", dup309); - -var msg27241 = msg("25113", dup309); - -var msg27242 = msg("25114", dup309); - -var msg27243 = msg("25115", dup309); - -var msg27244 = msg("25116", dup309); - -var msg27245 = msg("25117", dup309); - -var msg27246 = msg("25118", dup309); - -var msg27247 = msg("25119", dup325); - -var msg27248 = msg("25120", dup314); - -var msg27249 = msg("25121", dup311); - -var msg27250 = msg("25122", dup311); - -var msg27251 = msg("25123", dup311); - -var msg27252 = msg("25124", dup311); - -var msg27253 = msg("25125", dup325); - -var msg27254 = msg("25126", dup325); - -var msg27255 = msg("25127", dup325); - -var msg27256 = msg("25128", dup325); - -var msg27257 = msg("25129", dup325); - -var msg27258 = msg("25130", dup325); - -var msg27259 = msg("25131", dup325); - -var msg27260 = msg("25132", dup325); - -var msg27261 = msg("25133", dup325); - -var msg27262 = msg("25134", dup325); - -var msg27263 = msg("25135", dup311); - -var msg27264 = msg("25136", dup311); - -var msg27265 = msg("25137", dup311); - -var msg27266 = msg("25138", dup311); - -var msg27267 = msg("25139", dup311); - -var msg27268 = msg("25140", dup311); - -var msg27269 = msg("25141", dup321); - -var msg27270 = msg("25142", dup321); - -var msg27271 = msg("25143", dup321); - -var msg27272 = msg("25144", dup321); - -var msg27273 = msg("25145", dup321); - -var msg27274 = msg("25146", dup321); - -var msg27275 = msg("25147", dup321); - -var msg27276 = msg("25148", dup321); - -var msg27277 = msg("25149", dup321); - -var msg27278 = msg("25150", dup321); - -var msg27279 = msg("25151", dup321); - -var msg27280 = msg("25152", dup321); - -var msg27281 = msg("25153", dup321); - -var msg27282 = msg("25154", dup321); - -var msg27283 = msg("25155", dup321); - -var msg27284 = msg("25156", dup321); - -var msg27285 = msg("25157", dup321); - -var msg27286 = msg("25158", dup321); - -var msg27287 = msg("25159", dup321); - -var msg27288 = msg("25160", dup321); - -var msg27289 = msg("25161", dup321); - -var msg27290 = msg("25162", dup321); - -var msg27291 = msg("25163", dup321); - -var msg27292 = msg("25164", dup321); - -var msg27293 = msg("25165", dup321); - -var msg27294 = msg("25166", dup321); - -var msg27295 = msg("25167", dup321); - -var msg27296 = msg("25168", dup321); - -var msg27297 = msg("25169", dup321); - -var msg27298 = msg("25170", dup321); - -var msg27299 = msg("25171", dup321); - -var msg27300 = msg("25172", dup321); - -var msg27301 = msg("25173", dup321); - -var msg27302 = msg("25174", dup321); - -var msg27303 = msg("25175", dup321); - -var msg27304 = msg("25176", dup321); - -var msg27305 = msg("25177", dup321); - -var msg27306 = msg("25178", dup308); - -var msg27307 = msg("25179", dup321); - -var msg27308 = msg("25180", dup321); - -var msg27309 = msg("25181", dup321); - -var msg27310 = msg("25182", dup321); - -var msg27311 = msg("25183", dup321); - -var msg27312 = msg("25184", dup321); - -var msg27313 = msg("25185", dup321); - -var msg27314 = msg("25186", dup321); - -var msg27315 = msg("25187", dup321); - -var msg27316 = msg("25188", dup321); - -var msg27317 = msg("25189", dup321); - -var msg27318 = msg("25190", dup321); - -var msg27319 = msg("25191", dup321); - -var msg27320 = msg("25192", dup321); - -var msg27321 = msg("25193", dup321); - -var msg27322 = msg("25194", dup321); - -var msg27323 = msg("25195", dup321); - -var msg27324 = msg("25196", dup321); - -var msg27325 = msg("25197", dup321); - -var msg27326 = msg("25198", dup321); - -var msg27327 = msg("25199", dup321); - -var msg27328 = msg("25200", dup321); - -var msg27329 = msg("25201", dup321); - -var msg27330 = msg("25202", dup321); - -var msg27331 = msg("25203", dup321); - -var msg27332 = msg("25204", dup321); - -var msg27333 = msg("25205", dup321); - -var msg27334 = msg("25206", dup321); - -var msg27335 = msg("25207", dup321); - -var msg27336 = msg("25208", dup321); - -var msg27337 = msg("25209", dup321); - -var msg27338 = msg("25210", dup321); - -var msg27339 = msg("25211", dup321); - -var msg27340 = msg("25212", dup321); - -var msg27341 = msg("25213", dup321); - -var msg27342 = msg("25214", dup321); - -var msg27343 = msg("25215", dup321); - -var msg27344 = msg("25216", dup321); - -var msg27345 = msg("25217", dup321); - -var msg27346 = msg("25218", dup321); - -var msg27347 = msg("25219", dup321); - -var msg27348 = msg("25220", dup321); - -var msg27349 = msg("25221", dup321); - -var msg27350 = msg("25222", dup321); - -var msg27351 = msg("25223", dup321); - -var msg27352 = msg("25224", dup321); - -var msg27353 = msg("25225", dup325); - -var msg27354 = msg("25226", dup325); - -var msg27355 = msg("25227", dup314); - -var msg27356 = msg("25228", dup314); - -var msg27357 = msg("25229", dup321); - -var msg27358 = msg("25230", dup321); - -var msg27359 = msg("25231", dup321); - -var msg27360 = msg("25232", dup311); - -var msg27361 = msg("25233", dup311); - -var msg27362 = msg("25234", dup325); - -var msg27363 = msg("25235", dup325); - -var msg27364 = msg("25236", dup311); - -var msg27365 = msg("25237", dup321); - -var msg27366 = msg("25238", dup311); - -var msg27367 = msg("25239", dup321); - -var msg27368 = msg("25240", dup321); - -var msg27369 = msg("25241", dup321); - -var msg27370 = msg("25242", dup321); - -var msg27371 = msg("25243", dup325); - -var msg27372 = msg("25244", dup321); - -var msg27373 = msg("25245", dup325); - -var msg27374 = msg("25246", dup311); - -var msg27375 = msg("25247", dup309); - -var msg27376 = msg("25248", dup309); - -var msg27377 = msg("25249", dup321); - -var msg27378 = msg("25250", dup314); - -var msg27379 = msg("25251", dup314); - -var msg27380 = msg("25252", dup309); - -var msg27381 = msg("25253", dup309); - -var msg27382 = msg("25254", dup314); - -var msg27383 = msg("25255", dup311); - -var msg27384 = msg("25256", dup321); - -var msg27385 = msg("25257", dup321); - -var msg27386 = msg("25258", dup321); - -var msg27387 = msg("25259", dup321); - -var msg27388 = msg("25260", dup325); - -var msg27389 = msg("25261", dup325); - -var msg27390 = msg("25262", dup325); - -var msg27391 = msg("25263", dup314); - -var msg27392 = msg("25264", dup314); - -var msg27393 = msg("25265", dup314); - -var msg27394 = msg("25266", dup311); - -var msg27395 = msg("25267", dup311); - -var msg27396 = msg("25268", dup321); - -var msg27397 = msg("25269", dup321); - -var msg27398 = msg("25270", dup309); - -var msg27399 = msg("25271", dup321); - -var msg27400 = msg("25272", dup311); - -var msg27401 = msg("25273", dup311); - -var msg27402 = msg("25274", dup324); - -var msg27403 = msg("25275", dup311); - -var msg27404 = msg("25276", dup311); - -var msg27405 = msg("25277", dup321); - -var msg27406 = msg("25278", dup321); - -var msg27407 = msg("25279", dup321); - -var msg27408 = msg("25280", dup321); - -var msg27409 = msg("25281", dup321); - -var msg27410 = msg("25282", dup321); - -var msg27411 = msg("25283", dup321); - -var msg27412 = msg("25284", dup321); - -var msg27413 = msg("25285", dup322); - -var msg27414 = msg("25286", dup314); - -var msg27415 = msg("25287", dup311); - -var msg27416 = msg("25288", dup311); - -var msg27417 = msg("25289", dup323); - -var msg27418 = msg("25290", dup323); - -var msg27419 = msg("25291", dup323); - -var msg27420 = msg("25292", dup323); - -var msg27421 = msg("25293", dup307); - -var msg27422 = msg("25294", dup307); - -var msg27423 = msg("25295", dup307); - -var msg27424 = msg("25296", dup307); - -var msg27425 = msg("25297", dup311); - -var msg27426 = msg("25298", dup311); - -var msg27427 = msg("25299", dup314); - -var msg27428 = msg("25300", dup314); - -var msg27429 = msg("25301", dup311); - -var msg27430 = msg("25302", dup311); - -var msg27431 = msg("25303", dup311); - -var msg27432 = msg("25304", dup311); - -var msg27433 = msg("25305", dup314); - -var msg27434 = msg("25306", dup314); - -var msg27435 = msg("25307", dup314); - -var msg27436 = msg("25308", dup314); - -var msg27437 = msg("25309", dup309); - -var msg27438 = msg("25310", dup309); - -var msg27439 = msg("25311", dup309); - -var msg27440 = msg("25312", dup311); - -var msg27441 = msg("25313", dup311); - -var msg27442 = msg("25314", dup324); - -var msg27443 = msg("25315", dup314); - -var msg27444 = msg("25316", dup309); - -var msg27445 = msg("25317", dup314); - -var msg27446 = msg("25318", dup314); - -var msg27447 = msg("25319", dup314); - -var msg27448 = msg("25320", dup311); - -var msg27449 = msg("25321", dup309); - -var msg27450 = msg("25322", dup311); - -var msg27451 = msg("25323", dup311); - -var msg27452 = msg("25324", dup311); - -var msg27453 = msg("25325", dup311); - -var msg27454 = msg("25326", dup311); - -var msg27455 = msg("25327", dup311); - -var msg27456 = msg("25328", dup311); - -var msg27457 = msg("25329", dup311); - -var msg27458 = msg("25330", dup309); - -var msg27459 = msg("25331", dup309); - -var msg27460 = msg("25332", dup309); - -var msg27461 = msg("25333", dup309); - -var msg27462 = msg("25334", dup309); - -var msg27463 = msg("25335", dup309); - -var msg27464 = msg("25336", dup309); - -var msg27465 = msg("25337", dup309); - -var msg27466 = msg("25338", dup309); - -var msg27467 = msg("25339", dup309); - -var msg27468 = msg("25340", dup309); - -var msg27469 = msg("25341", dup311); - -var msg27470 = msg("25342", dup324); - -var msg27471 = msg("25343", dup311); - -var msg27472 = msg("25344", dup311); - -var msg27473 = msg("25345", dup311); - -var msg27474 = msg("25346", dup311); - -var msg27475 = msg("25347", dup311); - -var msg27476 = msg("25348", dup311); - -var msg27477 = msg("25349", dup311); - -var msg27478 = msg("25350", dup311); - -var msg27479 = msg("25351", dup311); - -var msg27480 = msg("25352", dup311); - -var msg27481 = msg("25353", dup309); - -var msg27482 = msg("25354", dup309); - -var msg27483 = msg("25355", dup307); - -var msg27484 = msg("25356", dup309); - -var msg27485 = msg("25357", dup311); - -var msg27486 = msg("25358", dup311); - -var msg27487 = msg("25359", dup311); - -var msg27488 = msg("25360", dup311); - -var msg27489 = msg("25361", dup311); - -var msg27490 = msg("25362", dup311); - -var msg27491 = msg("25363", dup311); - -var msg27492 = msg("25364", dup311); - -var msg27493 = msg("25365", dup311); - -var msg27494 = msg("25366", dup309); - -var msg27495 = msg("25367", dup309); - -var msg27496 = msg("25368", dup321); - -var msg27497 = msg("25369", dup307); - -var msg27498 = msg("25370", dup311); - -var msg27499 = msg("25371", dup321); - -var msg27500 = msg("25372", dup325); - -var msg27501 = msg("25373", dup314); - -var msg27502 = msg("25374", dup314); - -var msg27503 = msg("25375", dup314); - -var msg27504 = msg("25376", dup309); - -var msg27505 = msg("25377", dup309); - -var msg27506 = msg("25378", dup309); - -var msg27507 = msg("25379", dup309); - -var msg27508 = msg("25380", dup309); - -var msg27509 = msg("25381", dup311); - -var msg27510 = msg("25382", dup311); - -var msg27511 = msg("25383", dup311); - -var msg27512 = msg("25384", dup311); - -var msg27513 = msg("25385", dup311); - -var msg27514 = msg("25386", dup311); - -var msg27515 = msg("25387", dup311); - -var msg27516 = msg("25388", dup311); - -var msg27517 = msg("25389", dup311); - -var msg27518 = msg("25390", dup311); - -var msg27519 = msg("25391", dup311); - -var msg27520 = msg("25392", dup307); - -var msg27521 = msg("25393", dup309); - -var msg27522 = msg("25394", dup314); - -var msg27523 = msg("25395", dup314); - -var msg27524 = msg("25396", dup314); - -var msg27525 = msg("25397", dup314); - -var msg27526 = msg("25398", dup314); - -var msg27527 = msg("25399", dup314); - -var msg27528 = msg("25400", dup314); - -var msg27529 = msg("25401", dup321); - -var msg27530 = msg("25402", dup321); - -var msg27531 = msg("25403", dup321); - -var msg27532 = msg("25404", dup321); - -var msg27533 = msg("25405", dup321); - -var msg27534 = msg("25406", dup321); - -var msg27535 = msg("25407", dup321); - -var msg27536 = msg("25408", dup321); - -var msg27537 = msg("25409", dup321); - -var msg27538 = msg("25410", dup321); - -var msg27539 = msg("25411", dup321); - -var msg27540 = msg("25412", dup321); - -var msg27541 = msg("25413", dup321); - -var msg27542 = msg("25414", dup321); - -var msg27543 = msg("25415", dup321); - -var msg27544 = msg("25416", dup321); - -var msg27545 = msg("25417", dup321); - -var msg27546 = msg("25418", dup321); - -var msg27547 = msg("25419", dup321); - -var msg27548 = msg("25420", dup321); - -var msg27549 = msg("25421", dup321); - -var msg27550 = msg("25422", dup321); - -var msg27551 = msg("25423", dup321); - -var msg27552 = msg("25424", dup321); - -var msg27553 = msg("25425", dup321); - -var msg27554 = msg("25426", dup321); - -var msg27555 = msg("25427", dup321); - -var msg27556 = msg("25428", dup321); - -var msg27557 = msg("25429", dup321); - -var msg27558 = msg("25430", dup321); - -var msg27559 = msg("25431", dup321); - -var msg27560 = msg("25432", dup321); - -var msg27561 = msg("25433", dup321); - -var msg27562 = msg("25434", dup321); - -var msg27563 = msg("25435", dup321); - -var msg27564 = msg("25436", dup321); - -var msg27565 = msg("25437", dup321); - -var msg27566 = msg("25438", dup321); - -var msg27567 = msg("25439", dup321); - -var msg27568 = msg("25440", dup321); - -var msg27569 = msg("25441", dup321); - -var msg27570 = msg("25442", dup321); - -var msg27571 = msg("25443", dup321); - -var msg27572 = msg("25444", dup321); - -var msg27573 = msg("25445", dup321); - -var msg27574 = msg("25446", dup321); - -var msg27575 = msg("25447", dup321); - -var msg27576 = msg("25448", dup321); - -var msg27577 = msg("25449", dup323); - -var msg27578 = msg("25450", dup323); - -var msg27579 = msg("25451", dup314); - -var msg27580 = msg("25452", dup314); - -var msg27581 = msg("25453", dup314); - -var msg27582 = msg("25454", dup314); - -var msg27583 = msg("25455", dup314); - -var msg27584 = msg("25456", dup314); - -var msg27585 = msg("25457", dup314); - -var msg27586 = msg("25458", dup314); - -var msg27587 = msg("25459", dup309); - -var msg27588 = msg("25460", dup309); - -var msg27589 = msg("25461", dup309); - -var msg27590 = msg("25462", dup309); - -var msg27591 = msg("25463", dup309); - -var msg27592 = msg("25464", dup309); - -var msg27593 = msg("25465", dup321); - -var msg27594 = msg("25466", dup324); - -var msg27595 = msg("25467", dup324); - -var msg27596 = msg("25468", dup324); - -var msg27597 = msg("25469", dup324); - -var msg27598 = msg("25470", dup321); - -var msg27599 = msg("25471", dup321); - -var msg27600 = msg("25472", dup311); - -var msg27601 = msg("25473", dup311); - -var msg27602 = msg("25474", dup314); - -var msg27603 = msg("25475", dup323); - -var msg27604 = msg("25476", dup325); - -var msg27605 = msg("25477", dup321); - -var msg27606 = msg("25478", dup314); - -var msg27607 = msg("25479", dup314); - -var msg27608 = msg("25502", dup309); - -var msg27609 = msg("25503", dup321); - -var msg27610 = msg("25504", dup321); - -var msg27611 = msg("25505", dup311); - -var msg27612 = msg("25506", dup311); - -var msg27613 = msg("25507", dup311); - -var msg27614 = msg("25508", dup311); - -var msg27615 = msg("25509", dup311); - -var msg27616 = msg("25510", dup311); - -var msg27617 = msg("25511", dup321); - -var msg27618 = msg("25512", dup321); - -var msg27619 = msg("25513", dup311); - -var msg27620 = msg("25514", dup311); - -var msg27621 = msg("25515", dup311); - -var msg27622 = msg("25516", dup314); - -var msg27623 = msg("25517", dup314); - -var msg27624 = msg("25518", dup323); - -var msg27625 = msg("25519", dup323); - -var msg27626 = msg("25520", dup323); - -var msg27627 = msg("25521", dup314); - -var msg27628 = msg("25522", dup314); - -var msg27629 = msg("25523", dup314); - -var msg27630 = msg("25524", dup314); - -var msg27631 = msg("25525", dup314); - -var msg27632 = msg("25526", dup307); - -var msg27633 = msg("25527", dup309); - -var msg27634 = msg("25528", dup311); - -var msg27635 = msg("25529", dup321); - -var msg27636 = msg("25530", dup321); - -var msg27637 = msg("25531", dup321); - -var msg27638 = msg("25532", dup321); - -var msg27639 = msg("25533", dup325); - -var msg27640 = msg("25534", dup330); - -var msg27641 = msg("25535", dup311); - -var msg27642 = msg("25536", dup314); - -var msg27643 = msg("25537", dup314); - -var msg27644 = msg("25538", dup311); - -var msg27645 = msg("25539", dup311); - -var msg27646 = msg("25540", dup311); - -var msg27647 = msg("25541", dup321); - -var msg27648 = msg("25542", dup308); - -var msg27649 = msg("25543", dup321); - -var msg27650 = msg("25544", dup325); - -var msg27651 = msg("25545", dup321); - -var msg27652 = msg("25546", dup321); - -var msg27653 = msg("25547", dup321); - -var msg27654 = msg("25548", dup321); - -var msg27655 = msg("25549", dup309); - -var msg27656 = msg("25550", dup309); - -var msg27657 = msg("25551", dup321); - -var msg27658 = msg("25552", dup314); - -var msg27659 = msg("25553", dup321); - -var msg27660 = msg("25554", dup321); - -var msg27661 = msg("25555", dup321); - -var msg27662 = msg("25556", dup314); - -var msg27663 = msg("25557", dup316); - -var msg27664 = msg("25558", dup311); - -var msg27665 = msg("25559", dup311); - -var msg27666 = msg("25560", dup311); - -var msg27667 = msg("25561", dup311); - -var msg27668 = msg("25562", dup314); - -var msg27669 = msg("25563", dup309); - -var msg27670 = msg("25564", dup309); - -var msg27671 = msg("25565", dup314); - -var msg27672 = msg("25566", dup314); - -var msg27673 = msg("25567", dup311); - -var msg27674 = msg("25568", dup311); - -var msg27675 = msg("25569", dup311); - -var msg27676 = msg("25570", dup321); - -var msg27677 = msg("25571", dup321); - -var msg27678 = msg("25572", dup321); - -var msg27679 = msg("25573", dup311); - -var msg27680 = msg("25574", dup311); - -var msg27681 = msg("25575", dup311); - -var msg27682 = msg("25576", dup311); - -var msg27683 = msg("25577", dup321); - -var msg27684 = msg("25578", dup311); - -var msg27685 = msg("25579", dup311); - -var msg27686 = msg("25580", dup311); - -var msg27687 = msg("25581", dup316); - -var msg27688 = msg("25582", dup316); - -var msg27689 = msg("25583", dup316); - -var msg27690 = msg("25584", dup316); - -var msg27691 = msg("25585", dup316); - -var msg27692 = msg("25586", dup309); - -var msg27693 = msg("25587", dup309); - -var msg27694 = msg("25588", dup309); - -var msg27695 = msg("25589", dup309); - -var msg27696 = msg("25590", dup311); - -var msg27697 = msg("25591", dup311); - -var msg27698 = msg("25592", dup314); - -var msg27699 = msg("25593", dup311); - -var msg27700 = msg("25594", dup311); - -var msg27701 = msg("25595", dup311); - -var msg27702 = msg("25596", dup311); - -var msg27703 = msg("25597", dup311); - -var msg27704 = msg("25598", dup311); - -var msg27705 = msg("25599", dup321); - -var msg27706 = msg("25600", dup321); - -var msg27707 = msg("25601", dup309); - -var msg27708 = msg("25602", dup314); - -var msg27709 = msg("25603", dup311); - -var msg27710 = msg("25604", dup314); - -var msg27711 = msg("25605", dup314); - -var msg27712 = msg("25606", dup314); - -var msg27713 = msg("25607", dup309); - -var msg27714 = msg("25608", dup309); - -var msg27715 = msg("25609", dup321); - -var msg27716 = msg("25610", dup321); - -var msg27717 = msg("25611", dup311); - -var msg27718 = msg("25612", dup309); - -var msg27719 = msg("25613", dup314); - -var msg27720 = msg("25614", dup314); - -var msg27721 = msg("25615", dup314); - -var msg27722 = msg("25616", dup314); - -var msg27723 = msg("25617", dup309); - -var msg27724 = msg("25618", dup309); - -var msg27725 = msg("25619", dup309); - -var msg27726 = msg("25620", dup309); - -var msg27727 = msg("25621", dup314); - -var msg27728 = msg("25622", dup314); - -var msg27729 = msg("25623", dup321); - -var msg27730 = msg("25624", dup321); - -var msg27731 = msg("25625", dup321); - -var msg27732 = msg("25626", dup321); - -var msg27733 = msg("25627", dup321); - -var msg27734 = msg("25628", dup321); - -var msg27735 = msg("25630", dup309); - -var msg27736 = msg("25631", dup309); - -var msg27737 = msg("25632", dup321); - -var msg27738 = msg("25633", dup321); - -var msg27739 = msg("25634", dup316); - -var msg27740 = msg("25635", dup316); - -var msg27741 = msg("25636", dup316); - -var msg27742 = msg("25637", dup316); - -var msg27743 = msg("25638", dup316); - -var msg27744 = msg("25639", dup316); - -var msg27745 = msg("25640", dup316); - -var msg27746 = msg("25641", dup316); - -var msg27747 = msg("25642", dup316); - -var msg27748 = msg("25643", dup316); - -var msg27749 = msg("25644", dup309); - -var msg27750 = msg("25645", dup309); - -var msg27751 = msg("25646", dup309); - -var msg27752 = msg("25647", dup309); - -var msg27753 = msg("25648", dup309); - -var msg27754 = msg("25649", dup309); - -var msg27755 = msg("25650", dup309); - -var msg27756 = msg("25651", dup311); - -var msg27757 = msg("25652", dup321); - -var msg27758 = msg("25653", dup314); - -var msg27759 = msg("25654", dup309); - -var msg27760 = msg("25655", dup309); - -var msg27761 = msg("25656", dup309); - -var msg27762 = msg("25657", dup314); - -var msg27763 = msg("25658", dup314); - -var msg27764 = msg("25659", dup325); - -var msg27765 = msg("25660", dup321); - -var msg27766 = msg("25661", dup321); - -var msg27767 = msg("25662", dup321); - -var msg27768 = msg("25663", dup321); - -var msg27769 = msg("25664", dup309); - -var msg27770 = msg("25665", dup321); - -var msg27771 = msg("25666", dup321); - -var msg27772 = msg("25667", dup321); - -var msg27773 = msg("25668", dup321); - -var msg27774 = msg("25669", dup321); - -var msg27775 = msg("25670", dup321); - -var msg27776 = msg("25671", dup321); - -var msg27777 = msg("25672", dup321); - -var msg27778 = msg("25673", dup321); - -var msg27779 = msg("25674", dup321); - -var msg27780 = msg("25675", dup321); - -var msg27781 = msg("25676", dup311); - -var msg27782 = msg("25677", dup311); - -var msg27783 = msg("25678", dup311); - -var msg27784 = msg("25679", dup311); - -var msg27785 = msg("25680", dup314); - -var msg27786 = msg("25681", dup309); - -var msg27787 = msg("25682", dup314); - -var msg27788 = msg("25683", dup309); - -var msg27789 = msg("25684", dup321); - -var msg27790 = msg("25685", dup321); - -var msg27791 = msg("25686", dup321); - -var msg27792 = msg("25687", dup321); - -var msg27793 = msg("25688", dup321); - -var msg27794 = msg("25689", dup321); - -var msg27795 = msg("25690", dup321); - -var msg27796 = msg("25691", dup321); - -var msg27797 = msg("25692", dup321); - -var msg27798 = msg("25693", dup321); - -var msg27799 = msg("25694", dup321); - -var msg27800 = msg("25695", dup321); - -var msg27801 = msg("25696", dup321); - -var msg27802 = msg("25697", dup321); - -var msg27803 = msg("25698", dup321); - -var msg27804 = msg("25699", dup321); - -var msg27805 = msg("25700", dup321); - -var msg27806 = msg("25701", dup321); - -var msg27807 = msg("25702", dup321); - -var msg27808 = msg("25703", dup321); - -var msg27809 = msg("25704", dup321); - -var msg27810 = msg("25705", dup321); - -var msg27811 = msg("25706", dup321); - -var msg27812 = msg("25707", dup321); - -var msg27813 = msg("25708", dup321); - -var msg27814 = msg("25709", dup321); - -var msg27815 = msg("25710", dup321); - -var msg27816 = msg("25711", dup321); - -var msg27817 = msg("25712", dup321); - -var msg27818 = msg("25713", dup321); - -var msg27819 = msg("25714", dup321); - -var msg27820 = msg("25715", dup321); - -var msg27821 = msg("25716", dup321); - -var msg27822 = msg("25717", dup321); - -var msg27823 = msg("25718", dup321); - -var msg27824 = msg("25719", dup321); - -var msg27825 = msg("25720", dup321); - -var msg27826 = msg("25721", dup321); - -var msg27827 = msg("25722", dup321); - -var msg27828 = msg("25723", dup321); - -var msg27829 = msg("25724", dup321); - -var msg27830 = msg("25725", dup321); - -var msg27831 = msg("25726", dup321); - -var msg27832 = msg("25727", dup321); - -var msg27833 = msg("25728", dup321); - -var msg27834 = msg("25729", dup321); - -var msg27835 = msg("25730", dup321); - -var msg27836 = msg("25731", dup321); - -var msg27837 = msg("25732", dup321); - -var msg27838 = msg("25733", dup321); - -var msg27839 = msg("25734", dup321); - -var msg27840 = msg("25735", dup321); - -var msg27841 = msg("25736", dup321); - -var msg27842 = msg("25737", dup321); - -var msg27843 = msg("25738", dup321); - -var msg27844 = msg("25739", dup321); - -var msg27845 = msg("25740", dup321); - -var msg27846 = msg("25741", dup321); - -var msg27847 = msg("25742", dup321); - -var msg27848 = msg("25743", dup321); - -var msg27849 = msg("25744", dup321); - -var msg27850 = msg("25745", dup321); - -var msg27851 = msg("25746", dup321); - -var msg27852 = msg("25747", dup321); - -var msg27853 = msg("25748", dup321); - -var msg27854 = msg("25749", dup321); - -var msg27855 = msg("25750", dup321); - -var msg27856 = msg("25751", dup321); - -var msg27857 = msg("25752", dup321); - -var msg27858 = msg("25753", dup321); - -var msg27859 = msg("25754", dup321); - -var msg27860 = msg("25755", dup321); - -var msg27861 = msg("25756", dup321); - -var msg27862 = msg("25757", dup321); - -var msg27863 = msg("25758", dup321); - -var msg27864 = msg("25759", dup321); - -var msg27865 = msg("25760", dup321); - -var msg27866 = msg("25761", dup321); - -var msg27867 = msg("25762", dup321); - -var msg27868 = msg("25763", dup321); - -var msg27869 = msg("25764", dup321); - -var msg27870 = msg("25765", dup321); - -var msg27871 = msg("25766", dup321); - -var msg27872 = msg("25767", dup314); - -var msg27873 = msg("25768", dup309); - -var msg27874 = msg("25769", dup314); - -var msg27875 = msg("25770", dup311); - -var msg27876 = msg("25771", dup325); - -var msg27877 = msg("25772", dup325); - -var msg27878 = msg("25773", dup325); - -var msg27879 = msg("25774", dup323); - -var msg27880 = msg("25775", dup325); - -var msg27881 = msg("25776", dup311); - -var msg27882 = msg("25777", dup311); - -var msg27883 = msg("25778", dup325); - -var msg27884 = msg("25779", dup311); - -var msg27885 = msg("25780", dup309); - -var msg27886 = msg("25781", dup311); - -var msg27887 = msg("25782", dup311); - -var msg27888 = msg("25783", dup322); - -var msg27889 = msg("25784", dup325); - -var msg27890 = msg("25785", dup325); - -var msg27891 = msg("25786", dup311); - -var msg27892 = msg("25787", dup311); - -var msg27893 = msg("25788", dup325); - -var msg27894 = msg("25789", dup325); - -var msg27895 = msg("25790", dup325); - -var msg27896 = msg("25791", dup325); - -var msg27897 = msg("25792", dup325); - -var msg27898 = msg("25793", dup325); - -var msg27899 = msg("25794", dup325); - -var msg27900 = msg("25795", dup309); - -var msg27901 = msg("25796", dup309); - -var msg27902 = msg("25797", dup311); - -var msg27903 = msg("25798", dup307); - -var msg27904 = msg("25799", dup311); - -var msg27905 = msg("25800", dup307); - -var msg27906 = msg("25801", dup311); - -var msg27907 = msg("25802", dup311); - -var msg27908 = msg("25803", dup311); - -var msg27909 = msg("25804", dup311); - -var msg27910 = msg("25805", dup311); - -var msg27911 = msg("25806", dup311); - -var msg27912 = msg("25807", dup321); - -var msg27913 = msg("25808", dup311); - -var msg27914 = msg("25809", dup321); - -var msg27915 = msg("25810", dup311); - -var msg27916 = msg("25811", dup311); - -var msg27917 = msg("25812", dup311); - -var msg27918 = msg("25813", dup311); - -var msg27919 = msg("25814", dup314); - -var msg27920 = msg("25815", dup309); - -var msg27921 = msg("25816", dup309); - -var msg27922 = msg("25817", dup321); - -var msg27923 = msg("25818", dup325); - -var msg27924 = msg("25819", dup325); - -var msg27925 = msg("25820", dup311); - -var msg27926 = msg("25821", dup311); - -var msg27927 = msg("25822", dup311); - -var msg27928 = msg("25823", dup311); - -var msg27929 = msg("25824", dup311); - -var msg27930 = msg("25825", dup314); - -var msg27931 = msg("25826", dup314); - -var msg27932 = msg("25827", dup314); - -var msg27933 = msg("25828", dup314); - -var msg27934 = msg("25829", dup321); - -var msg27935 = msg("25830", dup325); - -var msg27936 = msg("25831", dup311); - -var msg27937 = msg("25832", dup311); - -var msg27938 = msg("25833", dup325); - -var msg27939 = msg("25834", dup311); - -var msg27940 = msg("25835", dup307); - -var msg27941 = msg("25836", dup325); - -var msg27942 = msg("25837", dup325); - -var msg27943 = msg("25838", dup325); - -var msg27944 = msg("25839", dup325); - -var msg27945 = msg("25840", dup325); - -var msg27946 = msg("25841", dup325); - -var msg27947 = msg("25842", dup325); - -var msg27948 = msg("25843", dup325); - -var msg27949 = msg("25844", dup325); - -var msg27950 = msg("25845", dup325); - -var msg27951 = msg("25846", dup325); - -var msg27952 = msg("25847", dup325); - -var msg27953 = msg("25848", dup325); - -var msg27954 = msg("25849", dup314); - -var msg27955 = msg("25850", dup314); - -var msg27956 = msg("25851", dup314); - -var msg27957 = msg("25852", dup314); - -var msg27958 = msg("25853", dup309); - -var msg27959 = msg("25854", dup321); - -var msg27960 = msg("25855", dup311); - -var msg27961 = msg("25856", dup309); - -var msg27962 = msg("25857", dup311); - -var msg27963 = msg("25858", dup311); - -var msg27964 = msg("25859", dup311); - -var msg27965 = msg("25860", dup311); - -var msg27966 = msg("25861", dup311); - -var msg27967 = msg("25862", dup311); - -var msg27968 = msg("25863", dup321); - -var msg27969 = msg("25864", dup321); - -var msg27970 = msg("25865", dup321); - -var msg27971 = msg("25866", dup321); - -var msg27972 = msg("25867", dup321); - -var msg27973 = msg("25868", dup321); - -var msg27974 = msg("25869", dup309); - -var msg27975 = msg("25870", dup309); - -var msg27976 = msg("25871", dup309); - -var msg27977 = msg("25872", dup309); - -var msg27978 = msg("25873", dup309); - -var msg27979 = msg("25874", dup309); - -var msg27980 = msg("25875", dup309); - -var msg27981 = msg("25876", dup309); - -var msg27982 = msg("25877", dup309); - -var msg27983 = msg("25878", dup309); - -var msg27984 = msg("25879", dup309); - -var msg27985 = msg("25880", dup309); - -var msg27986 = msg("25881", dup309); - -var msg27987 = msg("25882", dup309); - -var msg27988 = msg("25883", dup309); - -var msg27989 = msg("25884", dup309); - -var msg27990 = msg("25885", dup309); - -var msg27991 = msg("25886", dup309); - -var msg27992 = msg("25887", dup309); - -var msg27993 = msg("25888", dup309); - -var msg27994 = msg("25889", dup309); - -var msg27995 = msg("25890", dup309); - -var msg27996 = msg("25891", dup309); - -var msg27997 = msg("25892", dup309); - -var msg27998 = msg("25893", dup309); - -var msg27999 = msg("25894", dup309); - -var msg28000 = msg("25895", dup309); - -var msg28001 = msg("25896", dup309); - -var msg28002 = msg("25897", dup309); - -var msg28003 = msg("25898", dup309); - -var msg28004 = msg("25899", dup309); - -var msg28005 = msg("25900", dup309); - -var msg28006 = msg("25901", dup309); - -var msg28007 = msg("25902", dup309); - -var msg28008 = msg("25903", dup309); - -var msg28009 = msg("25904", dup309); - -var msg28010 = msg("25905", dup309); - -var msg28011 = msg("25906", dup309); - -var msg28012 = msg("25907", dup314); - -var msg28013 = msg("25908", dup309); - -var msg28014 = msg("25909", dup309); - -var msg28015 = msg("25910", dup309); - -var msg28016 = msg("25911", dup309); - -var msg28017 = msg("25912", dup309); - -var msg28018 = msg("25913", dup309); - -var msg28019 = msg("25914", dup309); - -var msg28020 = msg("25915", dup309); - -var msg28021 = msg("25916", dup309); - -var msg28022 = msg("25917", dup309); - -var msg28023 = msg("25918", dup309); - -var msg28024 = msg("25919", dup309); - -var msg28025 = msg("25920", dup309); - -var msg28026 = msg("25921", dup309); - -var msg28027 = msg("25922", dup309); - -var msg28028 = msg("25923", dup309); - -var msg28029 = msg("25924", dup309); - -var msg28030 = msg("25925", dup309); - -var msg28031 = msg("25926", dup309); - -var msg28032 = msg("25927", dup309); - -var msg28033 = msg("25928", dup314); - -var msg28034 = msg("25929", dup314); - -var msg28035 = msg("25930", dup314); - -var msg28036 = msg("25931", dup314); - -var msg28037 = msg("25932", dup314); - -var msg28038 = msg("25933", dup314); - -var msg28039 = msg("25934", dup314); - -var msg28040 = msg("25935", dup314); - -var msg28041 = msg("25936", dup314); - -var msg28042 = msg("25937", dup314); - -var msg28043 = msg("25938", dup314); - -var msg28044 = msg("25939", dup314); - -var msg28045 = msg("25940", dup314); - -var msg28046 = msg("25941", dup314); - -var msg28047 = msg("25942", dup314); - -var msg28048 = msg("25943", dup314); - -var msg28049 = msg("25944", dup314); - -var msg28050 = msg("25945", dup314); - -var msg28051 = msg("25946", dup321); - -var msg28052 = msg("25947", dup314); - -var msg28053 = msg("25948", dup311); - -var msg28054 = msg("25949", dup321); - -var msg28055 = msg("25950", dup311); - -var msg28056 = msg("25951", dup311); - -var msg28057 = msg("25952", dup311); - -var msg28058 = msg("25953", dup311); - -var msg28059 = msg("25954", dup311); - -var msg28060 = msg("25955", dup311); - -var msg28061 = msg("25956", dup311); - -var msg28062 = msg("25957", dup311); - -var msg28063 = msg("25958", dup311); - -var msg28064 = msg("25959", dup311); - -var msg28065 = msg("25960", dup311); - -var msg28066 = msg("25961", dup311); - -var msg28067 = msg("25962", dup311); - -var msg28068 = msg("25963", dup311); - -var msg28069 = msg("25964", dup311); - -var msg28070 = msg("25965", dup311); - -var msg28071 = msg("25966", dup311); - -var msg28072 = msg("25967", dup311); - -var msg28073 = msg("25968", dup311); - -var msg28074 = msg("25969", dup309); - -var msg28075 = msg("25970", dup314); - -var msg28076 = msg("25971", dup311); - -var msg28077 = msg("25972", dup311); - -var msg28078 = msg("25973", dup321); - -var msg28079 = msg("25974", dup321); - -var msg28080 = msg("25975", dup314); - -var msg28081 = msg("25976", dup314); - -var msg28082 = msg("25977", dup314); - -var msg28083 = msg("25978", dup321); - -var msg28084 = msg("25979", dup321); - -var msg28085 = msg("25980", dup325); - -var msg28086 = msg("25981", dup314); - -var msg28087 = msg("25982", dup311); - -var msg28088 = msg("25983", dup327); - -var msg28089 = msg("25984", dup311); - -var msg28090 = msg("25985", dup311); - -var msg28091 = msg("25986", dup311); - -var msg28092 = msg("25987", dup321); - -var msg28093 = msg("25988", dup311); - -var msg28094 = msg("25989", dup311); - -var msg28095 = msg("25990", dup321); - -var msg28096 = msg("25991", dup321); - -var msg28097 = msg("25992", dup321); - -var msg28098 = msg("25993", dup321); - -var msg28099 = msg("25994", dup321); - -var msg28100 = msg("25995", dup321); - -var msg28101 = msg("25996", dup321); - -var msg28102 = msg("25997", dup321); - -var msg28103 = msg("25998", dup321); - -var msg28104 = msg("25999", dup321); - -var msg28105 = msg("26000", dup307); - -var msg28106 = msg("26001", dup307); - -var msg28107 = msg("26002", dup307); - -var msg28108 = msg("26003", dup307); - -var msg28109 = msg("26004", dup307); - -var msg28110 = msg("26005", dup307); - -var msg28111 = msg("26006", dup307); - -var msg28112 = msg("26007", dup307); - -var msg28113 = msg("26008", dup316); - -var msg28114 = msg("26009", dup316); - -var msg28115 = msg("26010", dup321); - -var msg28116 = msg("26011", dup309); - -var msg28117 = msg("26012", dup311); - -var msg28118 = msg("26013", dup311); - -var msg28119 = msg("26014", dup311); - -var msg28120 = msg("26015", dup321); - -var msg28121 = msg("26016", dup321); - -var msg28122 = msg("26017", dup321); - -var msg28123 = msg("26018", dup321); - -var msg28124 = msg("26019", dup321); - -var msg28125 = msg("26020", dup311); - -var msg28126 = msg("26021", dup314); - -var msg28127 = msg("26022", dup314); - -var msg28128 = msg("26023", dup321); - -var msg28129 = msg("26024", dup321); - -var msg28130 = msg("26025", dup314); - -var msg28131 = msg("26026", dup321); - -var msg28132 = msg("26027", dup309); - -var msg28133 = msg("26028", dup311); - -var msg28134 = msg("26029", dup311); - -var msg28135 = msg("26030", dup325); - -var msg28136 = msg("26031", dup311); - -var msg28137 = msg("26032", dup311); - -var msg28138 = msg("26033", dup311); - -var msg28139 = msg("26034", dup311); - -var msg28140 = msg("26035", dup311); - -var msg28141 = msg("26036", dup311); - -var msg28142 = msg("26037", dup311); - -var msg28143 = msg("26038", dup311); - -var msg28144 = msg("26039", dup311); - -var msg28145 = msg("26040", dup311); - -var msg28146 = msg("26041", dup311); - -var msg28147 = msg("26042", dup311); - -var msg28148 = msg("26043", dup311); - -var msg28149 = msg("26044", dup311); - -var msg28150 = msg("26045", dup311); - -var msg28151 = msg("26046", dup311); - -var msg28152 = msg("26047", dup311); - -var msg28153 = msg("26048", dup311); - -var msg28154 = msg("26049", dup311); - -var msg28155 = msg("26050", dup311); - -var msg28156 = msg("26051", dup311); - -var msg28157 = msg("26052", dup311); - -var msg28158 = msg("26053", dup311); - -var msg28159 = msg("26054", dup311); - -var msg28160 = msg("26055", dup311); - -var msg28161 = msg("26056", dup311); - -var msg28162 = msg("26057", dup323); - -var msg28163 = msg("26058", dup323); - -var msg28164 = msg("26059", dup314); - -var msg28165 = msg("26060", dup314); - -var msg28166 = msg("26061", dup314); - -var msg28167 = msg("26062", dup314); - -var msg28168 = msg("26063", dup314); - -var msg28169 = msg("26064", dup314); - -var msg28170 = msg("26065", dup314); - -var msg28171 = msg("26066", dup311); - -var msg28172 = msg("26067", dup311); - -var msg28173 = msg("26068", dup311); - -var msg28174 = msg("26069", dup311); - -var msg28175 = msg("26070", dup311); - -var msg28176 = msg("26071", dup311); - -var msg28177 = msg("26072", dup321); - -var msg28178 = msg("26073", dup309); - -var msg28179 = msg("26074", dup309); - -var msg28180 = msg("26075", dup321); - -var msg28181 = msg("26076", dup323); - -var msg28182 = msg("26077", dup323); - -var msg28183 = msg("26078", dup314); - -var msg28184 = msg("26079", dup314); - -var msg28185 = msg("26080", dup309); - -var msg28186 = msg("26081", dup325); - -var msg28187 = msg("26082", dup309); - -var msg28188 = msg("26083", dup314); - -var msg28189 = msg("26084", dup314); - -var msg28190 = msg("26085", dup314); - -var msg28191 = msg("26086", dup321); - -var msg28192 = msg("26087", dup321); - -var msg28193 = msg("26088", dup321); - -var msg28194 = msg("26089", dup309); - -var msg28195 = msg("26090", dup311); - -var msg28196 = msg("26091", dup311); - -var msg28197 = msg("26092", dup311); - -var msg28198 = msg("26093", dup311); - -var msg28199 = msg("26094", dup311); - -var msg28200 = msg("26095", dup311); - -var msg28201 = msg("26096", dup311); - -var msg28202 = msg("26097", dup311); - -var msg28203 = msg("26098", dup311); - -var msg28204 = msg("26099", dup311); - -var msg28205 = msg("26100", dup311); - -var msg28206 = msg("26101", dup314); - -var msg28207 = msg("26102", dup321); - -var msg28208 = msg("26103", dup309); - -var msg28209 = msg("26104", dup321); - -var msg28210 = msg("26105", dup309); - -var msg28211 = msg("26106", dup321); - -var msg28212 = msg("26107", dup316); - -var msg28213 = msg("26108", dup316); - -var msg28214 = msg("26109", dup309); - -var msg28215 = msg("26110", dup311); - -var msg28216 = msg("26111", dup311); - -var msg28217 = msg("26112", dup311); - -var msg28218 = msg("26113", dup311); - -var msg28219 = msg("26114", dup321); - -var msg28220 = msg("26115", dup321); - -var msg28221 = msg("26116", dup321); - -var msg28222 = msg("26117", dup321); - -var msg28223 = msg("26118", dup321); - -var msg28224 = msg("26119", dup321); - -var msg28225 = msg("26120", dup321); - -var msg28226 = msg("26121", dup321); - -var msg28227 = msg("26122", dup309); - -var msg28228 = msg("26123", dup309); - -var msg28229 = msg("26124", dup311); - -var msg28230 = msg("26125", dup325); - -var msg28231 = msg("26126", dup325); - -var msg28232 = msg("26127", dup325); - -var msg28233 = msg("26128", dup325); - -var msg28234 = msg("26129", dup325); - -var msg28235 = msg("26130", dup325); - -var msg28236 = msg("26131", dup311); - -var msg28237 = msg("26132", dup325); - -var msg28238 = msg("26133", dup325); - -var msg28239 = msg("26134", dup311); - -var msg28240 = msg("26135", dup325); - -var msg28241 = msg("26136", dup325); - -var msg28242 = msg("26137", dup325); - -var msg28243 = msg("26138", dup325); - -var msg28244 = msg("26139", dup321); - -var msg28245 = msg("26140", dup321); - -var msg28246 = msg("26141", dup321); - -var msg28247 = msg("26142", dup321); - -var msg28248 = msg("26143", dup321); - -var msg28249 = msg("26144", dup321); - -var msg28250 = msg("26145", dup321); - -var msg28251 = msg("26146", dup321); - -var msg28252 = msg("26147", dup321); - -var msg28253 = msg("26148", dup321); - -var msg28254 = msg("26149", dup321); - -var msg28255 = msg("26150", dup321); - -var msg28256 = msg("26151", dup321); - -var msg28257 = msg("26152", dup321); - -var msg28258 = msg("26153", dup321); - -var msg28259 = msg("26154", dup321); - -var msg28260 = msg("26155", dup321); - -var msg28261 = msg("26156", dup321); - -var msg28262 = msg("26157", dup325); - -var msg28263 = msg("26158", dup325); - -var msg28264 = msg("26159", dup325); - -var msg28265 = msg("26160", dup325); - -var msg28266 = msg("26161", dup325); - -var msg28267 = msg("26162", dup325); - -var msg28268 = msg("26163", dup309); - -var msg28269 = msg("26164", dup309); - -var msg28270 = msg("26165", dup314); - -var msg28271 = msg("26166", dup314); - -var msg28272 = msg("26167", dup314); - -var msg28273 = msg("26168", dup325); - -var msg28274 = msg("26169", dup325); - -var msg28275 = msg("26170", dup309); - -var msg28276 = msg("26171", dup309); - -var msg28277 = msg("26172", dup309); - -var msg28278 = msg("26173", dup309); - -var msg28279 = msg("26174", dup309); - -var msg28280 = msg("26175", dup309); - -var msg28281 = msg("26176", dup309); - -var msg28282 = msg("26177", dup309); - -var msg28283 = msg("26178", dup321); - -var msg28284 = msg("26179", dup331); - -var msg28285 = msg("26180", dup309); - -var msg28286 = msg("26181", dup314); - -var msg28287 = msg("26182", dup314); - -var msg28288 = msg("26183", dup314); - -var msg28289 = msg("26184", dup314); - -var msg28290 = msg("26185", dup314); - -var msg28291 = msg("26186", dup314); - -var msg28292 = msg("26187", dup314); - -var msg28293 = msg("26188", dup309); - -var msg28294 = msg("26189", dup321); - -var msg28295 = msg("26190", dup321); - -var msg28296 = msg("26191", dup314); - -var msg28297 = msg("26192", dup321); - -var msg28298 = msg("26193", dup311); - -var msg28299 = msg("26194", dup311); - -var msg28300 = msg("26195", dup309); - -var msg28301 = msg("26196", dup309); - -var msg28302 = msg("26197", dup309); - -var msg28303 = msg("26198", dup309); - -var msg28304 = msg("26199", dup309); - -var msg28305 = msg("26200", dup309); - -var msg28306 = msg("26201", dup321); - -var msg28307 = msg("26202", dup321); - -var msg28308 = msg("26203", dup321); - -var msg28309 = msg("26204", dup321); - -var msg28310 = msg("26205", dup321); - -var msg28311 = msg("26206", dup314); - -var msg28312 = msg("26207", dup314); - -var msg28313 = msg("26208", dup314); - -var msg28314 = msg("26209", dup309); - -var msg28315 = msg("26210", dup309); - -var msg28316 = msg("26211", dup321); - -var msg28317 = msg("26212", dup321); - -var msg28318 = msg("26213", dup311); - -var msg28319 = msg("26214", dup311); - -var msg28320 = msg("26215", dup311); - -var msg28321 = msg("26216", dup325); - -var msg28322 = msg("26217", dup325); - -var msg28323 = msg("26218", dup325); - -var msg28324 = msg("26219", dup325); - -var msg28325 = msg("26220", dup325); - -var msg28326 = msg("26221", dup325); - -var msg28327 = msg("26222", dup325); - -var msg28328 = msg("26223", dup325); - -var msg28329 = msg("26224", dup325); - -var msg28330 = msg("26225", dup325); - -var msg28331 = msg("26226", dup311); - -var msg28332 = msg("26227", dup311); - -var msg28333 = msg("26228", dup311); - -var msg28334 = msg("26229", dup311); - -var msg28335 = msg("26230", dup307); - -var msg28336 = msg("26231", dup311); - -var msg28337 = msg("26232", dup311); - -var msg28338 = msg("26233", dup311); - -var msg28339 = msg("26234", dup311); - -var msg28340 = msg("26235", dup311); - -var msg28341 = msg("26236", dup311); - -var msg28342 = msg("26237", dup311); - -var msg28343 = msg("26238", dup321); - -var msg28344 = msg("26239", dup321); - -var msg28345 = msg("26240", dup321); - -var msg28346 = msg("26241", dup314); - -var msg28347 = msg("26242", dup309); - -var msg28348 = msg("26243", dup309); - -var msg28349 = msg("26244", dup321); - -var msg28350 = msg("26245", dup321); - -var msg28351 = msg("26246", dup321); - -var msg28352 = msg("26247", dup321); - -var msg28353 = msg("26248", dup325); - -var msg28354 = msg("26249", dup321); - -var msg28355 = msg("26250", dup311); - -var msg28356 = msg("26251", dup314); - -var msg28357 = msg("26252", dup311); - -var msg28358 = msg("26253", dup311); - -var msg28359 = msg("26254", dup311); - -var msg28360 = msg("26255", dup311); - -var msg28361 = msg("26256", dup311); - -var msg28362 = msg("26257", dup311); - -var msg28363 = msg("26258", dup314); - -var msg28364 = msg("26259", dup314); - -var msg28365 = msg("26260", dup321); - -var msg28366 = msg("26261", dup311); - -var msg28367 = msg("26262", dup316); - -var msg28368 = msg("26263", dup311); - -var msg28369 = msg("26264", dup321); - -var msg28370 = msg("26265", dup321); - -var msg28371 = msg("26266", dup321); - -var msg28372 = msg("26267", dup321); - -var msg28373 = msg("26268", dup321); - -var msg28374 = msg("26269", dup321); - -var msg28375 = msg("26270", dup321); - -var msg28376 = msg("26271", dup321); - -var msg28377 = msg("26272", dup321); - -var msg28378 = msg("26273", dup321); - -var msg28379 = msg("26274", dup311); - -var msg28380 = msg("26275", dup311); - -var msg28381 = msg("26276", dup311); - -var msg28382 = msg("26277", dup311); - -var msg28383 = msg("26278", dup332); - -var msg28384 = msg("26279", dup332); - -var msg28385 = msg("26280", dup309); - -var msg28386 = msg("26281", dup309); - -var msg28387 = msg("26282", dup309); - -var msg28388 = msg("26283", dup309); - -var msg28389 = msg("26284", dup321); - -var msg28390 = msg("26285", dup321); - -var msg28391 = msg("26286", dup329); - -var msg28392 = msg("26287", dup314); - -var msg28393 = msg("26288", dup321); - -var msg28394 = msg("26289", dup321); - -var msg28395 = msg("26290", dup321); - -var msg28396 = msg("26291", dup321); - -var msg28397 = msg("26292", dup314); - -var msg28398 = msg("26293", dup311); - -var msg28399 = msg("26294", dup314); - -var msg28400 = msg("26295", dup314); - -var msg28401 = msg("26296", dup311); - -var msg28402 = msg("26297", dup311); - -var msg28403 = msg("26298", dup307); - -var msg28404 = msg("26299", dup322); - -var msg28405 = msg("26300", dup322); - -var msg28406 = msg("26301", dup307); - -var msg28407 = msg("26302", dup322); - -var msg28408 = msg("26303", dup322); - -var msg28409 = msg("26304", dup322); - -var msg28410 = msg("26305", dup307); - -var msg28411 = msg("26306", dup322); - -var msg28412 = msg("26307", dup322); - -var msg28413 = msg("26308", dup322); - -var msg28414 = msg("26309", dup307); - -var msg28415 = msg("26310", dup322); - -var msg28416 = msg("26311", dup322); - -var msg28417 = msg("26312", dup322); - -var msg28418 = msg("26313", dup307); - -var msg28419 = msg("26314", dup311); - -var msg28420 = msg("26315", dup311); - -var msg28421 = msg("26316", dup311); - -var msg28422 = msg("26317", dup309); - -var msg28423 = msg("26318", dup309); - -var msg28424 = msg("26319", dup321); - -var msg28425 = msg("26320", dup316); - -var msg28426 = msg("26321", dup306); - -var msg28427 = msg("26322", dup306); - -var msg28428 = msg("26323", dup311); - -var msg28429 = msg("26324", dup324); - -var msg28430 = msg("26325", dup321); - -var msg28431 = msg("26326", dup321); - -var msg28432 = msg("26327", dup321); - -var msg28433 = msg("26328", dup321); - -var msg28434 = msg("26329", dup309); - -var msg28435 = msg("26330", dup309); - -var msg28436 = msg("26331", dup321); - -var msg28437 = msg("26332", dup321); - -var msg28438 = msg("26333", dup309); - -var msg28439 = msg("26334", dup309); - -var msg28440 = msg("26335", dup321); - -var msg28441 = msg("26336", dup309); - -var msg28442 = msg("26337", dup311); - -var msg28443 = msg("26338", dup311); - -var msg28444 = msg("26339", dup311); - -var msg28445 = msg("26340", dup309); - -var msg28446 = msg("26341", dup311); - -var msg28447 = msg("26342", dup311); - -var msg28448 = msg("26343", dup311); - -var msg28449 = msg("26344", dup311); - -var msg28450 = msg("26345", dup311); - -var msg28451 = msg("26346", dup311); - -var msg28452 = msg("26347", dup311); - -var msg28453 = msg("26348", dup311); - -var msg28454 = msg("26349", dup311); - -var msg28455 = msg("26350", dup311); - -var msg28456 = msg("26351", dup311); - -var msg28457 = msg("26352", dup311); - -var msg28458 = msg("26353", dup323); - -var msg28459 = msg("26354", dup311); - -var msg28460 = msg("26355", dup314); - -var msg28461 = msg("26356", dup314); - -var msg28462 = msg("26357", dup314); - -var msg28463 = msg("26358", dup314); - -var msg28464 = msg("26359", dup314); - -var msg28465 = msg("26360", dup314); - -var msg28466 = msg("26361", dup314); - -var msg28467 = msg("26362", dup314); - -var msg28468 = msg("26363", dup314); - -var msg28469 = msg("26364", dup314); - -var msg28470 = msg("26365", dup314); - -var msg28471 = msg("26366", dup311); - -var msg28472 = msg("26367", dup311); - -var msg28473 = msg("26368", dup311); - -var msg28474 = msg("26369", dup321); - -var msg28475 = msg("26370", dup321); - -var msg28476 = msg("26371", dup321); - -var msg28477 = msg("26372", dup324); - -var msg28478 = msg("26373", dup324); - -var msg28479 = msg("26374", dup324); - -var msg28480 = msg("26375", dup314); - -var msg28481 = msg("26376", dup314); - -var msg28482 = msg("26377", dup311); - -var msg28483 = msg("26378", dup314); - -var msg28484 = msg("26379", dup324); - -var msg28485 = msg("26380", dup323); - -var msg28486 = msg("26381", dup323); - -var msg28487 = msg("26382", dup323); - -var msg28488 = msg("26383", dup311); - -var msg28489 = msg("26384", dup311); - -var msg28490 = msg("26385", dup311); - -var msg28491 = msg("26386", dup330); - -var msg28492 = msg("26387", dup321); - -var msg28493 = msg("26388", dup321); - -var msg28494 = msg("26389", dup314); - -var msg28495 = msg("26390", dup314); - -var msg28496 = msg("26391", dup309); - -var msg28497 = msg("26392", dup314); - -var msg28498 = msg("26393", dup314); - -var msg28499 = msg("26394", dup309); - -var msg28500 = msg("26395", dup321); - -var msg28501 = msg("26396", dup321); - -var msg28502 = msg("26397", dup323); - -var msg28503 = msg("26398", dup321); - -var msg28504 = msg("26399", dup321); - -var msg28505 = msg("26400", dup321); - -var msg28506 = msg("26401", dup321); - -var msg28507 = msg("26402", dup321); - -var msg28508 = msg("26403", dup321); - -var msg28509 = msg("26404", dup321); - -var msg28510 = msg("26405", dup321); - -var msg28511 = msg("26406", dup321); - -var msg28512 = msg("26407", dup321); - -var msg28513 = msg("26408", dup321); - -var msg28514 = msg("26409", dup321); - -var msg28515 = msg("26410", dup323); - -var msg28516 = msg("26411", dup321); - -var msg28517 = msg("26412", dup311); - -var msg28518 = msg("26413", dup321); - -var msg28519 = msg("26414", dup311); - -var msg28520 = msg("26415", dup314); - -var msg28521 = msg("26416", dup314); - -var msg28522 = msg("26417", dup314); - -var msg28523 = msg("26418", dup307); - -var msg28524 = msg("26419", dup325); - -var msg28525 = msg("26420", dup325); - -var msg28526 = msg("26421", dup309); - -var msg28527 = msg("26422", dup314); - -var msg28528 = msg("26423", dup314); - -var msg28529 = msg("26424", dup314); - -var msg28530 = msg("26425", dup307); - -var msg28531 = msg("26426", dup307); - -var msg28532 = msg("26427", dup324); - -var msg28533 = msg("26428", dup321); - -var msg28534 = msg("26429", dup314); - -var msg28535 = msg("26430", dup314); - -var msg28536 = msg("26431", dup311); - -var msg28537 = msg("26432", dup309); - -var msg28538 = msg("26433", dup309); - -var msg28539 = msg("26434", dup311); - -var msg28540 = msg("26435", dup321); - -var msg28541 = msg("26436", dup314); - -var msg28542 = msg("26437", dup314); - -var msg28543 = msg("26438", dup314); - -var msg28544 = msg("26439", dup325); - -var msg28545 = msg("26440", dup323); - -var msg28546 = msg("26441", dup323); - -var msg28547 = msg("26442", dup321); - -var msg28548 = msg("26443", dup321); - -var msg28549 = msg("26444", dup321); - -var msg28550 = msg("26445", dup321); - -var msg28551 = msg("26446", dup321); - -var msg28552 = msg("26447", dup321); - -var msg28553 = msg("26448", dup321); - -var msg28554 = msg("26449", dup321); - -var msg28555 = msg("26450", dup321); - -var msg28556 = msg("26451", dup323); - -var msg28557 = msg("26452", dup321); - -var msg28558 = msg("26453", dup309); - -var msg28559 = msg("26454", dup309); - -var msg28560 = msg("26455", dup309); - -var msg28561 = msg("26456", dup314); - -var msg28562 = msg("26457", dup314); - -var msg28563 = msg("26458", dup314); - -var msg28564 = msg("26459", dup309); - -var msg28565 = msg("26460", dup309); - -var msg28566 = msg("26461", dup309); - -var msg28567 = msg("26462", dup309); - -var msg28568 = msg("26463", dup321); - -var msg28569 = msg("26464", dup321); - -var msg28570 = msg("26465", dup314); - -var msg28571 = msg("26466", dup314); - -var msg28572 = msg("26467", dup321); - -var msg28573 = msg("26468", dup311); - -var msg28574 = msg("26469", dup311); - -var msg28575 = msg("26470", dup310); - -var msg28576 = msg("26471", dup333); - -var msg28577 = msg("26472", dup311); - -var msg28578 = msg("26473", dup309); - -var msg28579 = msg("26474", dup309); - -var msg28580 = msg("26475", dup309); - -var msg28581 = msg("26476", dup309); - -var msg28582 = msg("26477", dup309); - -var msg28583 = msg("26478", dup309); - -var msg28584 = msg("26479", dup309); - -var msg28585 = msg("26480", dup321); - -var msg28586 = msg("26481", dup321); - -var msg28587 = msg("26482", dup321); - -var msg28588 = msg("26483", dup323); - -var msg28589 = msg("26484", dup311); - -var msg28590 = msg("26485", dup311); - -var msg28591 = msg("26486", dup311); - -var msg28592 = msg("26487", dup311); - -var msg28593 = msg("26488", dup314); - -var msg28594 = msg("26489", dup309); - -var msg28595 = msg("26490", dup309); - -var msg28596 = msg("26491", dup311); - -var msg28597 = msg("26492", dup314); - -var msg28598 = msg("26493", dup314); - -var msg28599 = msg("26494", dup314); - -var msg28600 = msg("26495", dup309); - -var msg28601 = msg("26496", dup309); - -var msg28602 = msg("26497", dup314); - -var msg28603 = msg("26498", dup314); - -var msg28604 = msg("26499", dup311); - -var msg28605 = msg("26500", dup311); - -var msg28606 = msg("26501", dup309); - -var msg28607 = msg("26502", dup309); - -var msg28608 = msg("26503", dup309); - -var msg28609 = msg("26504", dup309); - -var msg28610 = msg("26505", dup314); - -var msg28611 = msg("26506", dup311); - -var msg28612 = msg("26507", dup311); - -var msg28613 = msg("26508", dup307); - -var msg28614 = msg("26509", dup307); - -var msg28615 = msg("26510", dup311); - -var msg28616 = msg("26511", dup311); - -var msg28617 = msg("26512", dup311); - -var msg28618 = msg("26513", dup323); - -var msg28619 = msg("26514", dup314); - -var msg28620 = msg("26515", dup314); - -var msg28621 = msg("26516", dup314); - -var msg28622 = msg("26517", dup314); - -var msg28623 = msg("26518", dup314); - -var msg28624 = msg("26519", dup314); - -var msg28625 = msg("26520", dup311); - -var msg28626 = msg("26521", dup311); - -var msg28627 = msg("26522", dup325); - -var msg28628 = msg("26523", dup314); - -var msg28629 = msg("26524", dup314); - -var msg28630 = msg("26525", dup314); - -var msg28631 = msg("26526", dup311); - -var msg28632 = msg("26527", dup311); - -var msg28633 = msg("26528", dup200); - -var msg28634 = msg("26529", dup200); - -var msg28635 = msg("26530", dup200); - -var msg28636 = msg("26531", dup321); - -var msg28637 = msg("26532", dup321); - -var msg28638 = msg("26533", dup321); - -var msg28639 = msg("26534", dup311); - -var msg28640 = msg("26535", dup311); - -var msg28641 = msg("26536", dup311); - -var msg28642 = msg("26537", dup311); - -var msg28643 = msg("26538", dup311); - -var msg28644 = msg("26539", dup311); - -var msg28645 = msg("26540", dup311); - -var msg28646 = msg("26541", dup311); - -var msg28647 = msg("26542", dup325); - -var msg28648 = msg("26543", dup314); - -var msg28649 = msg("26544", dup314); - -var msg28650 = msg("26545", dup314); - -var msg28651 = msg("26546", dup314); - -var msg28652 = msg("26547", dup311); - -var msg28653 = msg("26548", dup309); - -var msg28654 = msg("26549", dup311); - -var msg28655 = msg("26550", dup311); - -var msg28656 = msg("26551", dup311); - -var msg28657 = msg("26552", dup311); - -var msg28658 = msg("26553", dup321); - -var msg28659 = msg("26554", dup321); - -var msg28660 = msg("26555", dup321); - -var msg28661 = msg("26556", dup321); - -var msg28662 = msg("26557", dup314); - -var msg28663 = msg("26558", dup325); - -var msg28664 = msg("26559", dup307); - -var msg28665 = msg("26560", dup321); - -var msg28666 = msg("26561", dup321); - -var msg28667 = msg("26562", dup311); - -var msg28668 = msg("26563", dup321); - -var msg28669 = msg("26564", dup307); - -var msg28670 = msg("26565", dup314); - -var msg28671 = msg("26566", dup314); - -var msg28672 = msg("26567", dup314); - -var msg28673 = msg("26568", dup314); - -var msg28674 = msg("26569", dup325); - -var msg28675 = msg("26570", dup325); - -var msg28676 = msg("26571", dup325); - -var msg28677 = msg("26572", dup325); - -var msg28678 = msg("26573", dup311); - -var msg28679 = msg("26574", dup311); - -var msg28680 = msg("26575", dup324); - -var msg28681 = msg("26576", dup311); - -var msg28682 = msg("26577", dup325); - -var msg28683 = msg("26578", dup321); - -var msg28684 = msg("26579", dup321); - -var msg28685 = msg("26580", dup321); - -var msg28686 = msg("26581", dup321); - -var msg28687 = msg("26582", dup321); - -var msg28688 = msg("26583", dup321); - -var msg28689 = msg("26584", dup325); - -var msg28690 = msg("26585", dup314); - -var msg28691 = msg("26586", dup316); - -var msg28692 = msg("26587", dup314); - -var msg28693 = msg("26588", dup314); - -var msg28694 = msg("26589", dup321); - -var msg28695 = msg("26590", dup311); - -var msg28696 = msg("26591", dup307); - -var msg28697 = msg("26592", dup314); - -var msg28698 = msg("26593", dup309); - -var msg28699 = msg("26594", dup307); - -var msg28700 = msg("26595", dup323); - -var msg28701 = msg("26596", dup323); - -var msg28702 = msg("26597", dup309); - -var msg28703 = msg("26598", dup323); - -var msg28704 = msg("26599", dup311); - -var msg28705 = msg("26600", dup311); - -var msg28706 = msg("26601", dup311); - -var msg28707 = msg("26602", dup309); - -var msg28708 = msg("26603", dup321); - -var msg28709 = msg("26604", dup321); - -var msg28710 = msg("26605", dup321); - -var msg28711 = msg("26606", dup321); - -var msg28712 = msg("26607", dup321); - -var msg28713 = msg("26608", dup321); - -var msg28714 = msg("26609", dup321); - -var msg28715 = msg("26610", dup321); - -var msg28716 = msg("26611", dup321); - -var msg28717 = msg("26612", dup321); - -var msg28718 = msg("26613", dup321); - -var msg28719 = msg("26614", dup321); - -var msg28720 = msg("26615", dup323); - -var msg28721 = msg("26616", dup323); - -var msg28722 = msg("26617", dup311); - -var msg28723 = msg("26618", dup311); - -var msg28724 = msg("26619", dup325); - -var msg28725 = msg("26620", dup325); - -var msg28726 = msg("26621", dup314); - -var msg28727 = msg("26622", dup314); - -var msg28728 = msg("26623", dup314); - -var msg28729 = msg("26624", dup323); - -var msg28730 = msg("26625", dup323); - -var msg28731 = msg("26626", dup309); - -var msg28732 = msg("26627", dup309); - -var msg28733 = msg("26628", dup309); - -var msg28734 = msg("26629", dup325); - -var msg28735 = msg("26630", dup325); - -var msg28736 = msg("26631", dup325); - -var msg28737 = msg("26632", dup324); - -var msg28738 = msg("26633", dup314); - -var msg28739 = msg("26634", dup311); - -var msg28740 = msg("26635", dup311); - -var msg28741 = msg("26636", dup325); - -var msg28742 = msg("26637", dup325); - -var msg28743 = msg("26638", dup311); - -var msg28744 = msg("26639", dup314); - -var msg28745 = msg("26640", dup314); - -var msg28746 = msg("26641", dup311); - -var msg28747 = msg("26642", dup311); - -var msg28748 = msg("26643", dup324); - -var msg28749 = msg("26644", dup314); - -var msg28750 = msg("26645", dup314); - -var msg28751 = msg("26646", dup314); - -var msg28752 = msg("26647", dup314); - -var msg28753 = msg("26648", dup311); - -var msg28754 = msg("26649", dup311); - -var msg28755 = msg("26650", dup323); - -var msg28756 = msg("26651", dup309); - -var msg28757 = msg("26652", dup309); - -var msg28758 = msg("26653", dup311); - -var msg28759 = msg("26654", dup321); - -var msg28760 = msg("26655", dup321); - -var msg28761 = msg("26656", dup321); - -var msg28762 = msg("26657", dup321); - -var msg28763 = msg("26658", dup314); - -var msg28764 = msg("26659", dup314); - -var msg28765 = msg("26660", dup311); - -var msg28766 = msg("26661", dup311); - -var msg28767 = msg("26662", dup311); - -var msg28768 = msg("26663", dup309); - -var msg28769 = msg("26664", dup314); - -var msg28770 = msg("26665", dup314); - -var msg28771 = msg("26666", dup325); - -var msg28772 = msg("26667", dup309); - -var msg28773 = msg("26668", dup325); - -var msg28774 = msg("26669", dup314); - -var msg28775 = msg("26670", dup321); - -var msg28776 = msg("26671", dup321); - -var msg28777 = msg("26672", dup309); - -var msg28778 = msg("26673", dup309); - -var msg28779 = msg("26674", dup309); - -var msg28780 = msg("26675", dup309); - -var msg28781 = msg("26676", dup309); - -var msg28782 = msg("26677", dup321); - -var msg28783 = msg("26678", dup321); - -var msg28784 = msg("26679", dup321); - -var msg28785 = msg("26680", dup321); - -var msg28786 = msg("26681", dup321); - -var msg28787 = msg("26682", dup314); - -var msg28788 = msg("26683", dup321); - -var msg28789 = msg("26684", dup321); - -var msg28790 = msg("26685", dup325); - -var msg28791 = msg("26686", dup325); - -var msg28792 = msg("26687", dup314); - -var msg28793 = msg("26688", dup314); - -var msg28794 = msg("26689", dup321); - -var msg28795 = msg("26690", dup321); - -var msg28796 = msg("26691", dup321); - -var msg28797 = msg("26692", dup321); - -var msg28798 = msg("26693", dup321); - -var msg28799 = msg("26694", dup311); - -var msg28800 = msg("26695", dup321); - -var msg28801 = msg("26696", dup321); - -var msg28802 = msg("26697", dup321); - -var msg28803 = msg("26698", dup311); - -var msg28804 = msg("26699", dup309); - -var msg28805 = msg("26700", dup309); - -var msg28806 = msg("26701", dup309); - -var msg28807 = msg("26702", dup325); - -var msg28808 = msg("26703", dup321); - -var msg28809 = msg("26704", dup314); - -var msg28810 = msg("26705", dup321); - -var msg28811 = msg("26706", dup309); - -var msg28812 = msg("26707", dup309); - -var msg28813 = msg("26708", dup309); - -var msg28814 = msg("26709", dup309); - -var msg28815 = msg("26710", dup309); - -var msg28816 = msg("26711", dup309); - -var msg28817 = msg("26712", dup321); - -var msg28818 = msg("26713", dup321); - -var msg28819 = msg("26714", dup321); - -var msg28820 = msg("26715", dup321); - -var msg28821 = msg("26716", dup311); - -var msg28822 = msg("26717", dup311); - -var msg28823 = msg("26718", dup321); - -var msg28824 = msg("26719", dup321); - -var msg28825 = msg("26720", dup321); - -var msg28826 = msg("26721", dup321); - -var msg28827 = msg("26722", dup321); - -var msg28828 = msg("26723", dup321); - -var msg28829 = msg("26724", dup309); - -var msg28830 = msg("26725", dup321); - -var msg28831 = msg("26726", dup321); - -var msg28832 = msg("26727", dup321); - -var msg28833 = msg("26728", dup321); - -var msg28834 = msg("26729", dup321); - -var msg28835 = msg("26730", dup321); - -var msg28836 = msg("26731", dup321); - -var msg28837 = msg("26732", dup321); - -var msg28838 = msg("26733", dup321); - -var msg28839 = msg("26734", dup321); - -var msg28840 = msg("26735", dup321); - -var msg28841 = msg("26736", dup334); - -var msg28842 = msg("26737", dup321); - -var msg28843 = msg("26738", dup321); - -var msg28844 = msg("26739", dup321); - -var msg28845 = msg("26740", dup321); - -var msg28846 = msg("26741", dup311); - -var msg28847 = msg("26742", dup321); - -var msg28848 = msg("26743", dup324); - -var msg28849 = msg("26744", dup321); - -var msg28850 = msg("26745", dup333); - -var msg28851 = msg("26746", dup321); - -var msg28852 = msg("26747", dup324); - -var msg28853 = msg("26748", dup321); - -var msg28854 = msg("26749", dup321); - -var msg28855 = msg("26750", dup321); - -var msg28856 = msg("26751", dup325); - -var msg28857 = msg("26752", dup310); - -var msg28858 = msg("26753", dup325); - -var msg28859 = msg("26754", dup325); - -var msg28860 = msg("26755", dup309); - -var msg28861 = msg("26756", dup321); - -var msg28862 = msg("26757", dup321); - -var msg28863 = msg("26758", dup321); - -var msg28864 = msg("26759", dup323); - -var msg28865 = msg("26760", dup321); - -var msg28866 = msg("26761", dup321); - -var msg28867 = msg("26762", dup321); - -var msg28868 = msg("26763", dup321); - -var msg28869 = msg("26764", dup314); - -var msg28870 = msg("26765", dup314); - -var msg28871 = msg("26766", dup314); - -var msg28872 = msg("26767", dup314); - -var msg28873 = msg("26768", dup321); - -var msg28874 = msg("26769", dup324); - -var msg28875 = msg("26770", dup321); - -var msg28876 = msg("26771", dup321); - -var msg28877 = msg("26772", dup311); - -var msg28878 = msg("26773", dup321); - -var msg28879 = msg("26774", dup321); - -var msg28880 = msg("26775", dup321); - -var msg28881 = msg("26776", dup321); - -var msg28882 = msg("26777", dup321); - -var msg28883 = msg("26778", dup321); - -var msg28884 = msg("26779", dup321); - -var msg28885 = msg("26780", dup310); - -var msg28886 = msg("26781", dup321); - -var msg28887 = msg("26782", dup321); - -var msg28888 = msg("26783", dup321); - -var msg28889 = msg("26784", dup321); - -var msg28890 = msg("26785", dup321); - -var msg28891 = msg("26786", dup316); - -var msg28892 = msg("26787", dup316); - -var msg28893 = msg("26788", dup316); - -var msg28894 = msg("26789", dup316); - -var msg28895 = msg("26790", dup316); - -var msg28896 = msg("26791", dup316); - -var msg28897 = msg("26792", dup321); - -var msg28898 = msg("26793", dup321); - -var msg28899 = msg("26794", dup314); - -var msg28900 = msg("26795", dup321); - -var msg28901 = msg("26796", dup321); - -var msg28902 = msg("26797", dup314); - -var msg28903 = msg("26798", dup314); - -var msg28904 = msg("26799", dup309); - -var msg28905 = msg("26800", dup309); - -var msg28906 = msg("26801", dup309); - -var msg28907 = msg("26802", dup335); - -var msg28908 = msg("26803", dup321); - -var msg28909 = msg("26804", dup311); - -var msg28910 = msg("26805", dup311); - -var msg28911 = msg("26806", dup311); - -var msg28912 = msg("26807", dup311); - -var msg28913 = msg("26808", dup311); - -var msg28914 = msg("26809", dup321); - -var msg28915 = msg("26810", dup321); - -var msg28916 = msg("26811", dup321); - -var msg28917 = msg("26812", dup321); - -var msg28918 = msg("26813", dup321); - -var msg28919 = msg("26814", dup311); - -var msg28920 = msg("26815", dup321); - -var msg28921 = msg("26816", dup321); - -var msg28922 = msg("26817", dup323); - -var msg28923 = msg("26818", dup321); - -var msg28924 = msg("26819", dup321); - -var msg28925 = msg("26820", dup321); - -var msg28926 = msg("26821", dup321); - -var msg28927 = msg("26822", dup321); - -var msg28928 = msg("26823", dup321); - -var msg28929 = msg("26824", dup311); - -var msg28930 = msg("26825", dup311); - -var msg28931 = msg("26826", dup321); - -var msg28932 = msg("26827", dup321); - -var msg28933 = msg("26828", dup321); - -var msg28934 = msg("26829", dup322); - -var msg28935 = msg("26830", dup309); - -var msg28936 = msg("26831", dup309); - -var msg28937 = msg("26832", dup309); - -var msg28938 = msg("26833", dup309); - -var msg28939 = msg("26834", dup311); - -var msg28940 = msg("26835", dup321); - -var msg28941 = msg("26836", dup321); - -var msg28942 = msg("26837", dup321); - -var msg28943 = msg("26838", dup311); - -var msg28944 = msg("26839", dup321); - -var msg28945 = msg("26840", dup321); - -var msg28946 = msg("26841", dup321); - -var msg28947 = msg("26842", dup321); - -var msg28948 = msg("26843", dup314); - -var msg28949 = msg("26844", dup311); - -var msg28950 = msg("26845", dup325); - -var msg28951 = msg("26846", dup325); - -var msg28952 = msg("26847", dup325); - -var msg28953 = msg("26848", dup325); - -var msg28954 = msg("26849", dup323); - -var msg28955 = msg("26850", dup314); - -var msg28956 = msg("26851", dup314); - -var msg28957 = msg("26852", dup311); - -var msg28958 = msg("26853", dup311); - -var msg28959 = msg("26854", dup309); - -var msg28960 = msg("26855", dup309); - -var msg28961 = msg("26856", dup309); - -var msg28962 = msg("26857", dup309); - -var msg28963 = msg("26858", dup309); - -var msg28964 = msg("26859", dup309); - -var msg28965 = msg("26860", dup309); - -var msg28966 = msg("26861", dup309); - -var msg28967 = msg("26862", dup309); - -var msg28968 = msg("26863", dup309); - -var msg28969 = msg("26864", dup309); - -var msg28970 = msg("26865", dup307); - -var msg28971 = msg("26866", dup309); - -var msg28972 = msg("26867", dup325); - -var msg28973 = msg("26868", dup325); - -var msg28974 = msg("26869", dup311); - -var msg28975 = msg("26870", dup311); - -var msg28976 = msg("26871", dup311); - -var msg28977 = msg("26872", dup311); - -var msg28978 = msg("26873", dup325); - -var msg28979 = msg("26874", dup325); - -var msg28980 = msg("26875", dup325); - -var msg28981 = msg("26876", dup325); - -var msg28982 = msg("26877", dup323); - -var msg28983 = msg("26878", dup325); - -var msg28984 = msg("26879", dup314); - -var msg28985 = msg("26880", dup321); - -var msg28986 = msg("26881", dup321); - -var msg28987 = msg("26882", dup325); - -var msg28988 = msg("26883", dup325); - -var msg28989 = msg("26884", dup325); - -var msg28990 = msg("26885", dup325); - -var msg28991 = msg("26886", dup325); - -var msg28992 = msg("26887", dup325); - -var msg28993 = msg("26888", dup311); - -var msg28994 = msg("26889", dup311); - -var msg28995 = msg("26890", dup325); - -var msg28996 = msg("26891", dup311); - -var msg28997 = msg("26892", dup311); - -var msg28998 = msg("26893", dup311); - -var msg28999 = msg("26894", dup311); - -var msg29000 = msg("26895", dup311); - -var msg29001 = msg("26896", dup311); - -var msg29002 = msg("26897", dup311); - -var msg29003 = msg("26898", dup322); - -var msg29004 = msg("26899", dup322); - -var msg29005 = msg("26900", dup322); - -var msg29006 = msg("26901", dup322); - -var msg29007 = msg("26902", dup314); - -var msg29008 = msg("26903", dup314); - -var msg29009 = msg("26904", dup314); - -var msg29010 = msg("26905", dup324); - -var msg29011 = msg("26906", dup311); - -var msg29012 = msg("26907", dup311); - -var msg29013 = msg("26908", dup311); - -var msg29014 = msg("26909", dup314); - -var msg29015 = msg("26910", dup321); - -var msg29016 = msg("26911", dup321); - -var msg29017 = msg("26912", dup321); - -var msg29018 = msg("26913", dup321); - -var msg29019 = msg("26914", dup321); - -var msg29020 = msg("26915", dup321); - -var msg29021 = msg("26916", dup321); - -var msg29022 = msg("26917", dup321); - -var msg29023 = msg("26918", dup321); - -var msg29024 = msg("26919", dup321); - -var msg29025 = msg("26920", dup321); - -var msg29026 = msg("26921", dup321); - -var msg29027 = msg("26922", dup311); - -var msg29028 = msg("26923", dup321); - -var msg29029 = msg("26924", dup321); - -var msg29030 = msg("26925", dup322); - -var msg29031 = msg("26926", dup323); - -var msg29032 = msg("26927", dup309); - -var msg29033 = msg("26928", dup309); - -var msg29034 = msg("26929", dup311); - -var msg29035 = msg("26930", dup321); - -var msg29036 = msg("26931", dup321); - -var msg29037 = msg("26932", dup321); - -var msg29038 = msg("26933", dup321); - -var msg29039 = msg("26934", dup321); - -var msg29040 = msg("26935", dup311); - -var msg29041 = msg("26936", dup311); - -var msg29042 = msg("26937", dup311); - -var msg29043 = msg("26938", dup314); - -var msg29044 = msg("26939", dup314); - -var msg29045 = msg("26940", dup323); - -var msg29046 = msg("26941", dup323); - -var msg29047 = msg("26942", dup323); - -var msg29048 = msg("26943", dup321); - -var msg29049 = msg("26944", dup321); - -var msg29050 = msg("26945", dup321); - -var msg29051 = msg("26946", dup321); - -var msg29052 = msg("26947", dup311); - -var msg29053 = msg("26948", dup311); - -var msg29054 = msg("26949", dup311); - -var msg29055 = msg("26950", dup311); - -var msg29056 = msg("26951", dup311); - -var msg29057 = msg("26952", dup321); - -var msg29058 = msg("26953", dup311); - -var msg29059 = msg("26954", dup321); - -var msg29060 = msg("26955", dup321); - -var msg29061 = msg("26956", dup311); - -var msg29062 = msg("26957", dup311); - -var msg29063 = msg("26958", dup311); - -var msg29064 = msg("26959", dup311); - -var msg29065 = msg("26960", dup311); - -var msg29066 = msg("26961", dup311); - -var msg29067 = msg("26962", dup311); - -var msg29068 = msg("26963", dup311); - -var msg29069 = msg("26964", dup311); - -var msg29070 = msg("26965", dup321); - -var msg29071 = msg("26966", dup321); - -var msg29072 = msg("26967", dup321); - -var msg29073 = msg("26968", dup321); - -var msg29074 = msg("26969", dup321); - -var msg29075 = msg("26970", dup321); - -var msg29076 = msg("26971", dup321); - -var msg29077 = msg("26972", dup307); - -var msg29078 = msg("26973", dup309); - -var msg29079 = msg("26974", dup314); - -var msg29080 = msg("26975", dup314); - -var msg29081 = msg("26976", dup309); - -var msg29082 = msg("26977", dup309); - -var msg29083 = msg("26978", dup309); - -var msg29084 = msg("26979", dup309); - -var msg29085 = msg("26980", dup315); - -var msg29086 = msg("26981", dup324); - -var msg29087 = msg("26982", dup311); - -var msg29088 = msg("26983", dup311); - -var msg29089 = msg("26984", dup321); - -var msg29090 = msg("26985", dup311); - -var msg29091 = msg("26986", dup321); - -var msg29092 = msg("26987", dup321); - -var msg29093 = msg("26988", dup325); - -var msg29094 = msg("26989", dup323); - -var msg29095 = msg("26990", dup311); - -var msg29096 = msg("26991", dup311); - -var msg29097 = msg("26992", dup311); - -var msg29098 = msg("26993", dup314); - -var msg29099 = msg("26994", dup314); - -var msg29100 = msg("26995", dup321); - -var msg29101 = msg("26996", dup321); - -var msg29102 = msg("26997", dup321); - -var msg29103 = msg("26998", dup321); - -var msg29104 = msg("26999", dup321); - -var msg29105 = msg("27000", dup321); - -var msg29106 = msg("27001", dup309); - -var msg29107 = msg("27002", dup321); - -var msg29108 = msg("27003", dup321); - -var msg29109 = msg("27004", dup311); - -var msg29110 = msg("27005", dup311); - -var msg29111 = msg("27006", dup309); - -var msg29112 = msg("27007", dup321); - -var msg29113 = msg("27008", dup321); - -var msg29114 = msg("27009", dup321); - -var msg29115 = msg("27010", dup321); - -var msg29116 = msg("27011", dup321); - -var msg29117 = msg("27012", dup321); - -var msg29118 = msg("27013", dup321); - -var msg29119 = msg("27014", dup323); - -var msg29120 = msg("27015", dup325); - -var msg29121 = msg("27016", dup314); - -var msg29122 = msg("27017", dup321); - -var msg29123 = msg("27018", dup314); - -var msg29124 = msg("27019", dup314); - -var msg29125 = msg("27020", dup314); - -var msg29126 = msg("27021", dup321); - -var msg29127 = msg("27022", dup321); - -var msg29128 = msg("27023", dup321); - -var msg29129 = msg("27024", dup321); - -var msg29130 = msg("27025", dup321); - -var msg29131 = msg("27026", dup311); - -var msg29132 = msg("27027", dup311); - -var msg29133 = msg("27028", dup314); - -var msg29134 = msg("27029", dup314); - -var msg29135 = msg("27030", dup314); - -var msg29136 = msg("27031", dup314); - -var msg29137 = msg("27032", dup314); - -var msg29138 = msg("27033", dup321); - -var msg29139 = msg("27034", dup321); - -var msg29140 = msg("27035", dup321); - -var msg29141 = msg("27036", dup314); - -var msg29142 = msg("27037", dup314); - -var msg29143 = msg("27038", dup314); - -var msg29144 = msg("27039", dup321); - -var msg29145 = msg("27040", dup311); - -var msg29146 = msg("27041", dup311); - -var msg29147 = msg("27042", dup311); - -var msg29148 = msg("27043", dup321); - -var msg29149 = msg("27044", dup325); - -var msg29150 = msg("27045", dup321); - -var msg29151 = msg("27046", dup327); - -var msg29152 = msg("27047", dup314); - -var msg29153 = msg("27048", dup323); - -var msg29154 = msg("27049", dup321); - -var msg29155 = msg("27050", dup321); - -var msg29156 = msg("27051", dup321); - -var msg29157 = msg("27052", dup321); - -var msg29158 = msg("27053", dup321); - -var msg29159 = msg("27054", dup321); - -var msg29160 = msg("27055", dup321); - -var msg29161 = msg("27056", dup321); - -var msg29162 = msg("27057", dup321); - -var msg29163 = msg("27058", dup321); - -var msg29164 = msg("27059", dup321); - -var msg29165 = msg("27060", dup321); - -var msg29166 = msg("27061", dup311); - -var msg29167 = msg("27062", dup311); - -var msg29168 = msg("27063", dup311); - -var msg29169 = msg("27064", dup314); - -var msg29170 = msg("27065", dup321); - -var msg29171 = msg("27066", dup321); - -var msg29172 = msg("27067", dup311); - -var msg29173 = msg("27068", dup311); - -var msg29174 = msg("27069", dup311); - -var msg29175 = msg("27070", dup311); - -var msg29176 = msg("27071", dup311); - -var msg29177 = msg("27072", dup311); - -var msg29178 = msg("27073", dup311); - -var msg29179 = msg("27074", dup311); - -var msg29180 = msg("27075", dup311); - -var msg29181 = msg("27076", dup314); - -var msg29182 = msg("27077", dup314); - -var msg29183 = msg("27078", dup311); - -var msg29184 = msg("27079", dup311); - -var msg29185 = msg("27080", dup311); - -var msg29186 = msg("27081", dup311); - -var msg29187 = msg("27082", dup311); - -var msg29188 = msg("27083", dup311); - -var msg29189 = msg("27084", dup311); - -var msg29190 = msg("27085", dup307); - -var msg29191 = msg("27086", dup311); - -var msg29192 = msg("27087", dup311); - -var msg29193 = msg("27088", dup311); - -var msg29194 = msg("27089", dup309); - -var msg29195 = msg("27090", dup309); - -var msg29196 = msg("27091", dup321); - -var msg29197 = msg("27092", dup311); - -var msg29198 = msg("27093", dup321); - -var msg29199 = msg("27094", dup200); - -var msg29200 = msg("27095", dup200); - -var msg29201 = msg("27096", dup311); - -var msg29202 = msg("27097", dup200); - -var msg29203 = msg("27098", dup200); - -var msg29204 = msg("27099", dup200); - -var msg29205 = msg("27100", dup311); - -var msg29206 = msg("27101", dup311); - -var msg29207 = msg("27102", dup309); - -var msg29208 = msg("27103", dup309); - -var msg29209 = msg("27104", dup316); - -var msg29210 = msg("27105", dup316); - -var msg29211 = msg("27106", dup311); - -var msg29212 = msg("27107", dup311); - -var msg29213 = msg("27108", dup307); - -var msg29214 = msg("27109", dup311); - -var msg29215 = msg("27110", dup311); - -var msg29216 = msg("27111", dup314); - -var msg29217 = msg("27112", dup314); - -var msg29218 = msg("27113", dup311); - -var msg29219 = msg("27114", dup321); - -var msg29220 = msg("27115", dup311); - -var msg29221 = msg("27116", dup314); - -var msg29222 = msg("27117", dup314); - -var msg29223 = msg("27118", dup314); - -var msg29224 = msg("27119", dup307); - -var msg29225 = msg("27120", dup321); - -var msg29226 = msg("27121", dup314); - -var msg29227 = msg("27122", dup309); - -var msg29228 = msg("27123", dup309); - -var msg29229 = msg("27124", dup309); - -var msg29230 = msg("27125", dup309); - -var msg29231 = msg("27126", dup325); - -var msg29232 = msg("27127", dup325); - -var msg29233 = msg("27128", dup325); - -var msg29234 = msg("27129", dup325); - -var msg29235 = msg("27130", dup325); - -var msg29236 = msg("27131", dup325); - -var msg29237 = msg("27132", dup325); - -var msg29238 = msg("27133", dup325); - -var msg29239 = msg("27134", dup325); - -var msg29240 = msg("27135", dup325); - -var msg29241 = msg("27136", dup311); - -var msg29242 = msg("27137", dup311); - -var msg29243 = msg("27138", dup311); - -var msg29244 = msg("27139", dup311); - -var msg29245 = msg("27140", dup311); - -var msg29246 = msg("27141", dup311); - -var msg29247 = msg("27142", dup311); - -var msg29248 = msg("27143", dup311); - -var msg29249 = msg("27144", dup311); - -var msg29250 = msg("27145", dup321); - -var msg29251 = msg("27146", dup321); - -var msg29252 = msg("27147", dup325); - -var msg29253 = msg("27148", dup325); - -var msg29254 = msg("27149", dup325); - -var msg29255 = msg("27150", dup325); - -var msg29256 = msg("27151", dup325); - -var msg29257 = msg("27152", dup325); - -var msg29258 = msg("27153", dup325); - -var msg29259 = msg("27154", dup325); - -var msg29260 = msg("27155", dup321); - -var msg29261 = msg("27156", dup309); - -var msg29262 = msg("27157", dup309); - -var msg29263 = msg("27158", dup321); - -var msg29264 = msg("27159", dup321); - -var msg29265 = msg("27160", dup321); - -var msg29266 = msg("27161", dup311); - -var msg29267 = msg("27162", dup311); - -var msg29268 = msg("27163", dup311); - -var msg29269 = msg("27164", dup311); - -var msg29270 = msg("27165", dup314); - -var msg29271 = msg("27166", dup309); - -var msg29272 = msg("27167", dup309); - -var msg29273 = msg("27168", dup309); - -var msg29274 = msg("27169", dup321); - -var msg29275 = msg("27170", dup309); - -var msg29276 = msg("27171", dup325); - -var msg29277 = msg("27172", dup325); - -var msg29278 = msg("27173", dup314); - -var msg29279 = msg("27174", dup314); - -var msg29280 = msg("27175", dup314); - -var msg29281 = msg("27176", dup314); - -var msg29282 = msg("27177", dup314); - -var msg29283 = msg("27178", dup321); - -var all56 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup111, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg29284 = msg("27179", all56); - -var msg29285 = msg("27180", dup321); - -var msg29286 = msg("27181", dup321); - -var msg29287 = msg("27182", dup325); - -var msg29288 = msg("27183", dup325); - -var msg29289 = msg("27184", dup325); - -var msg29290 = msg("27185", dup325); - -var msg29291 = msg("27186", dup325); - -var msg29292 = msg("27187", dup325); - -var msg29293 = msg("27188", dup314); - -var msg29294 = msg("27189", dup314); - -var msg29295 = msg("27190", dup314); - -var msg29296 = msg("27191", dup314); - -var msg29297 = msg("27192", dup314); - -var msg29298 = msg("27193", dup324); - -var msg29299 = msg("27194", dup324); - -var msg29300 = msg("27195", dup324); - -var msg29301 = msg("27196", dup314); - -var msg29302 = msg("27197", dup321); - -var msg29303 = msg("27198", dup321); - -var msg29304 = msg("27199", dup321); - -var msg29305 = msg("27200", dup321); - -var msg29306 = msg("27201", dup321); - -var msg29307 = msg("27202", dup310); - -var msg29308 = msg("27203", dup314); - -var msg29309 = msg("27204", dup321); - -var msg29310 = msg("27205", dup309); - -var msg29311 = msg("27206", dup314); - -var msg29312 = msg("27207", dup314); - -var msg29313 = msg("27208", dup309); - -var msg29314 = msg("27209", dup311); - -var msg29315 = msg("27210", dup323); - -var msg29316 = msg("27211", dup309); - -var msg29317 = msg("27212", dup309); - -var msg29318 = msg("27213", dup309); - -var msg29319 = msg("27214", dup309); - -var msg29320 = msg("27215", dup309); - -var msg29321 = msg("27216", dup309); - -var msg29322 = msg("27217", dup309); - -var msg29323 = msg("27218", dup314); - -var msg29324 = msg("27219", dup314); - -var msg29325 = msg("27220", dup311); - -var msg29326 = msg("27221", dup311); - -var msg29327 = msg("27222", dup311); - -var msg29328 = msg("27223", dup314); - -var msg29329 = msg("27224", dup314); - -var msg29330 = msg("27225", dup324); - -var msg29331 = msg("27226", dup314); - -var msg29332 = msg("27227", dup328); - -var msg29333 = msg("27228", dup321); - -var msg29334 = msg("27229", dup311); - -var msg29335 = msg("27230", dup314); - -var msg29336 = msg("27231", dup314); - -var msg29337 = msg("27232", dup309); - -var msg29338 = msg("27233", dup309); - -var msg29339 = msg("27234", dup324); - -var msg29340 = msg("27235", dup311); - -var msg29341 = msg("27236", dup309); - -var msg29342 = msg("27237", dup314); - -var msg29343 = msg("27238", dup314); - -var msg29344 = msg("27239", dup314); - -var msg29345 = msg("27240", dup323); - -var msg29346 = msg("27241", dup311); - -var msg29347 = msg("27242", dup311); - -var msg29348 = msg("27243", dup314); - -var msg29349 = msg("27244", dup314); - -var msg29350 = msg("27245", dup311); - -var msg29351 = msg("27246", dup321); - -var msg29352 = msg("27247", dup321); - -var msg29353 = msg("27248", dup321); - -var msg29354 = msg("27249", dup309); - -var msg29355 = msg("27250", dup309); - -var msg29356 = msg("27251", dup309); - -var msg29357 = msg("27252", dup321); - -var msg29358 = msg("27253", dup321); - -var msg29359 = msg("27254", dup321); - -var msg29360 = msg("27255", dup200); - -var msg29361 = msg("27256", dup321); - -var msg29362 = msg("27257", dup321); - -var msg29363 = msg("27258", dup314); - -var msg29364 = msg("27259", dup314); - -var msg29365 = msg("27260", dup321); - -var msg29366 = msg("27261", dup309); - -var msg29367 = msg("27262", dup309); - -var msg29368 = msg("27263", dup325); - -var msg29369 = msg("27264", dup309); - -var msg29370 = msg("27265", dup309); - -var msg29371 = msg("27266", dup309); - -var msg29372 = msg("27267", dup307); - -var msg29373 = msg("27268", dup307); - -var msg29374 = msg("27269", dup333); - -var msg29375 = msg("27270", dup333); - -var msg29376 = msg("27271", dup311); - -var msg29377 = msg("27272", dup314); - -var msg29378 = msg("27273", dup311); - -var msg29379 = msg("27274", dup311); - -var msg29380 = msg("27275", dup314); - -var msg29381 = msg("27276", dup314); - -var msg29382 = msg("27277", dup314); - -var msg29383 = msg("27278", dup309); - -var msg29384 = msg("27279", dup309); - -var msg29385 = msg("27280", dup309); - -var msg29386 = msg("27281", dup309); - -var msg29387 = msg("27282", dup314); - -var msg29388 = msg("27283", dup314); - -var msg29389 = msg("27284", dup314); - -var msg29390 = msg("27285", dup322); - -var msg29391 = msg("27286", dup322); - -var msg29392 = msg("27287", dup322); - -var msg29393 = msg("27288", dup322); - -var msg29394 = msg("27289", dup321); - -var msg29395 = msg("27290", dup321); - -var msg29396 = msg("27291", dup321); - -var msg29397 = msg("27292", dup321); - -var msg29398 = msg("27293", dup321); - -var msg29399 = msg("27294", dup321); - -var msg29400 = msg("27295", dup321); - -var msg29401 = msg("27296", dup321); - -var msg29402 = msg("27297", dup321); - -var msg29403 = msg("27298", dup321); - -var msg29404 = msg("27299", dup321); - -var msg29405 = msg("27300", dup321); - -var msg29406 = msg("27301", dup321); - -var msg29407 = msg("27302", dup321); - -var msg29408 = msg("27303", dup321); - -var msg29409 = msg("27304", dup321); - -var msg29410 = msg("27305", dup321); - -var msg29411 = msg("27306", dup321); - -var msg29412 = msg("27307", dup321); - -var msg29413 = msg("27308", dup321); - -var msg29414 = msg("27309", dup321); - -var msg29415 = msg("27310", dup321); - -var msg29416 = msg("27311", dup321); - -var msg29417 = msg("27312", dup321); - -var msg29418 = msg("27313", dup321); - -var msg29419 = msg("27314", dup321); - -var msg29420 = msg("27315", dup321); - -var msg29421 = msg("27316", dup321); - -var msg29422 = msg("27317", dup321); - -var msg29423 = msg("27318", dup321); - -var msg29424 = msg("27319", dup321); - -var msg29425 = msg("27320", dup321); - -var msg29426 = msg("27321", dup321); - -var msg29427 = msg("27322", dup321); - -var msg29428 = msg("27323", dup321); - -var msg29429 = msg("27324", dup321); - -var msg29430 = msg("27325", dup321); - -var msg29431 = msg("27326", dup321); - -var msg29432 = msg("27327", dup321); - -var msg29433 = msg("27328", dup321); - -var msg29434 = msg("27329", dup321); - -var msg29435 = msg("27330", dup321); - -var msg29436 = msg("27331", dup321); - -var msg29437 = msg("27332", dup321); - -var msg29438 = msg("27333", dup321); - -var msg29439 = msg("27334", dup321); - -var msg29440 = msg("27335", dup321); - -var msg29441 = msg("27336", dup321); - -var msg29442 = msg("27337", dup321); - -var msg29443 = msg("27338", dup321); - -var msg29444 = msg("27339", dup321); - -var msg29445 = msg("27340", dup321); - -var msg29446 = msg("27341", dup321); - -var msg29447 = msg("27342", dup321); - -var msg29448 = msg("27343", dup321); - -var msg29449 = msg("27344", dup321); - -var msg29450 = msg("27345", dup321); - -var msg29451 = msg("27346", dup321); - -var msg29452 = msg("27347", dup321); - -var msg29453 = msg("27348", dup321); - -var msg29454 = msg("27349", dup321); - -var msg29455 = msg("27350", dup321); - -var msg29456 = msg("27351", dup321); - -var msg29457 = msg("27352", dup321); - -var msg29458 = msg("27353", dup321); - -var msg29459 = msg("27354", dup321); - -var msg29460 = msg("27355", dup321); - -var msg29461 = msg("27356", dup321); - -var msg29462 = msg("27357", dup321); - -var msg29463 = msg("27358", dup321); - -var msg29464 = msg("27359", dup321); - -var msg29465 = msg("27360", dup321); - -var msg29466 = msg("27361", dup321); - -var msg29467 = msg("27362", dup321); - -var msg29468 = msg("27363", dup321); - -var msg29469 = msg("27364", dup321); - -var msg29470 = msg("27365", dup321); - -var msg29471 = msg("27366", dup321); - -var msg29472 = msg("27367", dup321); - -var msg29473 = msg("27368", dup321); - -var msg29474 = msg("27369", dup321); - -var msg29475 = msg("27370", dup321); - -var msg29476 = msg("27371", dup321); - -var msg29477 = msg("27372", dup321); - -var msg29478 = msg("27373", dup321); - -var msg29479 = msg("27374", dup321); - -var msg29480 = msg("27375", dup321); - -var msg29481 = msg("27376", dup321); - -var msg29482 = msg("27377", dup321); - -var msg29483 = msg("27378", dup321); - -var msg29484 = msg("27379", dup321); - -var msg29485 = msg("27380", dup321); - -var msg29486 = msg("27381", dup321); - -var msg29487 = msg("27382", dup321); - -var msg29488 = msg("27383", dup321); - -var msg29489 = msg("27384", dup321); - -var msg29490 = msg("27385", dup321); - -var msg29491 = msg("27386", dup321); - -var msg29492 = msg("27387", dup321); - -var msg29493 = msg("27388", dup321); - -var msg29494 = msg("27389", dup321); - -var msg29495 = msg("27390", dup321); - -var msg29496 = msg("27391", dup321); - -var msg29497 = msg("27392", dup321); - -var msg29498 = msg("27393", dup321); - -var msg29499 = msg("27394", dup321); - -var msg29500 = msg("27395", dup321); - -var msg29501 = msg("27396", dup321); - -var msg29502 = msg("27397", dup321); - -var msg29503 = msg("27398", dup321); - -var msg29504 = msg("27399", dup321); - -var msg29505 = msg("27400", dup321); - -var msg29506 = msg("27401", dup321); - -var msg29507 = msg("27402", dup321); - -var msg29508 = msg("27403", dup321); - -var msg29509 = msg("27404", dup321); - -var msg29510 = msg("27405", dup321); - -var msg29511 = msg("27406", dup321); - -var msg29512 = msg("27407", dup321); - -var msg29513 = msg("27408", dup321); - -var msg29514 = msg("27409", dup321); - -var msg29515 = msg("27410", dup321); - -var msg29516 = msg("27411", dup321); - -var msg29517 = msg("27412", dup321); - -var msg29518 = msg("27413", dup321); - -var msg29519 = msg("27414", dup321); - -var msg29520 = msg("27415", dup321); - -var msg29521 = msg("27416", dup321); - -var msg29522 = msg("27417", dup321); - -var msg29523 = msg("27418", dup321); - -var msg29524 = msg("27419", dup321); - -var msg29525 = msg("27420", dup321); - -var msg29526 = msg("27421", dup321); - -var msg29527 = msg("27422", dup321); - -var msg29528 = msg("27423", dup321); - -var msg29529 = msg("27424", dup321); - -var msg29530 = msg("27425", dup321); - -var msg29531 = msg("27426", dup321); - -var msg29532 = msg("27427", dup321); - -var msg29533 = msg("27428", dup321); - -var msg29534 = msg("27429", dup321); - -var msg29535 = msg("27430", dup321); - -var msg29536 = msg("27431", dup321); - -var msg29537 = msg("27432", dup321); - -var msg29538 = msg("27433", dup321); - -var msg29539 = msg("27434", dup321); - -var msg29540 = msg("27435", dup321); - -var msg29541 = msg("27436", dup321); - -var msg29542 = msg("27437", dup321); - -var msg29543 = msg("27438", dup321); - -var msg29544 = msg("27439", dup321); - -var msg29545 = msg("27440", dup321); - -var msg29546 = msg("27441", dup321); - -var msg29547 = msg("27442", dup321); - -var msg29548 = msg("27443", dup321); - -var msg29549 = msg("27444", dup321); - -var msg29550 = msg("27445", dup321); - -var msg29551 = msg("27446", dup321); - -var msg29552 = msg("27447", dup321); - -var msg29553 = msg("27448", dup321); - -var msg29554 = msg("27449", dup321); - -var msg29555 = msg("27450", dup321); - -var msg29556 = msg("27451", dup321); - -var msg29557 = msg("27452", dup321); - -var msg29558 = msg("27453", dup321); - -var msg29559 = msg("27454", dup321); - -var msg29560 = msg("27455", dup321); - -var msg29561 = msg("27456", dup321); - -var msg29562 = msg("27457", dup321); - -var msg29563 = msg("27458", dup321); - -var msg29564 = msg("27459", dup321); - -var msg29565 = msg("27460", dup321); - -var msg29566 = msg("27461", dup321); - -var msg29567 = msg("27462", dup321); - -var msg29568 = msg("27463", dup321); - -var msg29569 = msg("27464", dup321); - -var msg29570 = msg("27465", dup321); - -var msg29571 = msg("27466", dup321); - -var msg29572 = msg("27467", dup321); - -var msg29573 = msg("27468", dup321); - -var msg29574 = msg("27469", dup321); - -var msg29575 = msg("27470", dup321); - -var msg29576 = msg("27471", dup321); - -var msg29577 = msg("27472", dup321); - -var msg29578 = msg("27473", dup321); - -var msg29579 = msg("27474", dup321); - -var msg29580 = msg("27475", dup321); - -var msg29581 = msg("27476", dup321); - -var msg29582 = msg("27477", dup321); - -var msg29583 = msg("27478", dup321); - -var msg29584 = msg("27479", dup321); - -var msg29585 = msg("27480", dup321); - -var msg29586 = msg("27481", dup321); - -var msg29587 = msg("27482", dup321); - -var msg29588 = msg("27483", dup321); - -var msg29589 = msg("27484", dup321); - -var msg29590 = msg("27485", dup321); - -var msg29591 = msg("27486", dup321); - -var msg29592 = msg("27487", dup321); - -var msg29593 = msg("27488", dup321); - -var msg29594 = msg("27489", dup321); - -var msg29595 = msg("27490", dup321); - -var msg29596 = msg("27491", dup321); - -var msg29597 = msg("27492", dup321); - -var msg29598 = msg("27493", dup321); - -var msg29599 = msg("27494", dup321); - -var msg29600 = msg("27495", dup321); - -var msg29601 = msg("27496", dup321); - -var msg29602 = msg("27497", dup321); - -var msg29603 = msg("27498", dup321); - -var msg29604 = msg("27499", dup321); - -var msg29605 = msg("27500", dup321); - -var msg29606 = msg("27501", dup321); - -var msg29607 = msg("27502", dup321); - -var msg29608 = msg("27503", dup321); - -var msg29609 = msg("27504", dup321); - -var msg29610 = msg("27505", dup321); - -var msg29611 = msg("27506", dup321); - -var msg29612 = msg("27507", dup321); - -var msg29613 = msg("27508", dup321); - -var msg29614 = msg("27509", dup321); - -var msg29615 = msg("27510", dup321); - -var msg29616 = msg("27511", dup321); - -var msg29617 = msg("27512", dup321); - -var msg29618 = msg("27513", dup321); - -var msg29619 = msg("27514", dup321); - -var msg29620 = msg("27515", dup321); - -var msg29621 = msg("27516", dup321); - -var msg29622 = msg("27517", dup321); - -var msg29623 = msg("27518", dup321); - -var msg29624 = msg("27519", dup321); - -var msg29625 = msg("27520", dup321); - -var msg29626 = msg("27521", dup321); - -var msg29627 = msg("27522", dup321); - -var msg29628 = msg("27523", dup321); - -var msg29629 = msg("27524", dup321); - -var msg29630 = msg("27525", dup309); - -var msg29631 = msg("27526", dup309); - -var msg29632 = msg("27527", dup309); - -var msg29633 = msg("27528", dup309); - -var msg29634 = msg("27529", dup309); - -var msg29635 = msg("27530", dup309); - -var msg29636 = msg("27531", dup325); - -var msg29637 = msg("27532", dup311); - -var msg29638 = msg("27533", dup321); - -var msg29639 = msg("27534", dup321); - -var msg29640 = msg("27535", dup321); - -var msg29641 = msg("27536", dup323); - -var msg29642 = msg("27537", dup321); - -var msg29643 = msg("27538", dup321); - -var msg29644 = msg("27539", dup309); - -var msg29645 = msg("27540", dup329); - -var msg29646 = msg("27541", dup329); - -var msg29647 = msg("27542", dup314); - -var msg29648 = msg("27543", dup314); - -var msg29649 = msg("27544", dup321); - -var msg29650 = msg("27545", dup321); - -var msg29651 = msg("27546", dup321); - -var msg29652 = msg("27547", dup321); - -var msg29653 = msg("27548", dup321); - -var msg29654 = msg("27549", dup321); - -var msg29655 = msg("27550", dup311); - -var msg29656 = msg("27551", dup321); - -var msg29657 = msg("27552", dup311); - -var msg29658 = msg("27553", dup311); - -var msg29659 = msg("27554", dup311); - -var msg29660 = msg("27555", dup311); - -var msg29661 = msg("27556", dup311); - -var msg29662 = msg("27557", dup311); - -var msg29663 = msg("27558", dup321); - -var msg29664 = msg("27559", dup321); - -var msg29665 = msg("27560", dup321); - -var msg29666 = msg("27561", dup321); - -var msg29667 = msg("27562", dup321); - -var msg29668 = msg("27563", dup321); - -var msg29669 = msg("27564", dup333); - -var msg29670 = msg("27565", dup311); - -var msg29671 = msg("27566", dup321); - -var msg29672 = msg("27567", dup325); - -var msg29673 = msg("27568", dup311); - -var msg29674 = msg("27569", dup307); - -var msg29675 = msg("27570", dup314); - -var msg29676 = msg("27571", dup309); - -var msg29677 = msg("27572", dup311); - -var msg29678 = msg("27573", dup311); - -var msg29679 = msg("27574", dup311); - -var msg29680 = msg("27575", dup311); - -var msg29681 = msg("27576", dup309); - -var msg29682 = msg("27577", dup321); - -var msg29683 = msg("27578", dup200); - -var msg29684 = msg("27579", dup311); - -var msg29685 = msg("27580", dup307); - -var msg29686 = msg("27581", dup307); - -var msg29687 = msg("27582", dup307); - -var msg29688 = msg("27583", dup307); - -var msg29689 = msg("27584", dup307); - -var msg29690 = msg("27585", dup307); - -var msg29691 = msg("27586", dup307); - -var msg29692 = msg("27587", dup307); - -var msg29693 = msg("27588", dup307); - -var msg29694 = msg("27589", dup307); - -var msg29695 = msg("27590", dup307); - -var msg29696 = msg("27591", dup307); - -var msg29697 = msg("27592", dup311); - -var msg29698 = msg("27593", dup314); - -var msg29699 = msg("27594", dup321); - -var msg29700 = msg("27595", dup321); - -var msg29701 = msg("27596", dup321); - -var msg29702 = msg("27597", dup311); - -var msg29703 = msg("27598", dup316); - -var msg29704 = msg("27599", dup321); - -var msg29705 = msg("27600", dup321); - -var msg29706 = msg("27601", dup321); - -var msg29707 = msg("27602", dup311); - -var msg29708 = msg("27603", dup311); - -var msg29709 = msg("27604", dup326); - -var msg29710 = msg("27605", dup325); - -var msg29711 = msg("27606", dup325); - -var msg29712 = msg("27607", dup325); - -var msg29713 = msg("27608", dup309); - -var msg29714 = msg("27609", dup314); - -var msg29715 = msg("27610", dup334); - -var msg29716 = msg("27611", dup334); - -var msg29717 = msg("27612", dup325); - -var msg29718 = msg("27613", dup325); - -var msg29719 = msg("27614", dup325); - -var msg29720 = msg("27615", dup325); - -var msg29721 = msg("27616", dup325); - -var msg29722 = msg("27617", dup309); - -var msg29723 = msg("27618", dup309); - -var msg29724 = msg("27619", dup309); - -var msg29725 = msg("27620", dup325); - -var msg29726 = msg("27621", dup311); - -var msg29727 = msg("27622", dup311); - -var msg29728 = msg("27623", dup311); - -var msg29729 = msg("27624", dup334); - -var msg29730 = msg("27625", dup321); - -var msg29731 = msg("27626", dup333); - -var msg29732 = msg("27627", dup321); - -var msg29733 = msg("27628", dup321); - -var msg29734 = msg("27629", dup321); - -var msg29735 = msg("27630", dup321); - -var msg29736 = msg("27631", dup321); - -var msg29737 = msg("27632", dup321); - -var msg29738 = msg("27633", dup321); - -var msg29739 = msg("27634", dup309); - -var msg29740 = msg("27635", dup309); - -var msg29741 = msg("27636", dup321); - -var msg29742 = msg("27637", dup321); - -var msg29743 = msg("27638", dup314); - -var msg29744 = msg("27639", dup323); - -var msg29745 = msg("27640", dup321); - -var msg29746 = msg("27641", dup321); - -var msg29747 = msg("27642", dup321); - -var msg29748 = msg("27643", dup321); - -var msg29749 = msg("27644", dup321); - -var msg29750 = msg("27645", dup321); - -var msg29751 = msg("27646", dup309); - -var msg29752 = msg("27647", dup321); - -var msg29753 = msg("27648", dup321); - -var msg29754 = msg("27649", dup321); - -var msg29755 = msg("27650", dup321); - -var msg29756 = msg("27651", dup321); - -var msg29757 = msg("27652", dup321); - -var msg29758 = msg("27653", dup321); - -var msg29759 = msg("27654", dup321); - -var msg29760 = msg("27655", dup321); - -var msg29761 = msg("27656", dup311); - -var msg29762 = msg("27657", dup311); - -var msg29763 = msg("27658", dup311); - -var msg29764 = msg("27659", dup321); - -var msg29765 = msg("27660", dup321); - -var msg29766 = msg("27661", dup321); - -var msg29767 = msg("27662", dup321); - -var msg29768 = msg("27663", dup325); - -var msg29769 = msg("27664", dup321); - -var msg29770 = msg("27665", dup321); - -var msg29771 = msg("27666", dup324); - -var msg29772 = msg("27667", dup314); - -var msg29773 = msg("27668", dup314); - -var msg29774 = msg("27669", dup314); - -var msg29775 = msg("27670", dup321); - -var msg29776 = msg("27671", dup309); - -var msg29777 = msg("27672", dup311); - -var msg29778 = msg("27673", dup311); - -var msg29779 = msg("27674", dup311); - -var msg29780 = msg("27675", dup311); - -var msg29781 = msg("27676", dup311); - -var msg29782 = msg("27677", dup311); - -var msg29783 = msg("27678", dup321); - -var msg29784 = msg("27679", dup321); - -var msg29785 = msg("27680", dup321); - -var msg29786 = msg("27681", dup322); - -var msg29787 = msg("27682", dup322); - -var msg29788 = msg("27683", dup322); - -var msg29789 = msg("27684", dup322); - -var msg29790 = msg("27685", dup322); - -var msg29791 = msg("27686", dup322); - -var msg29792 = msg("27687", dup322); - -var msg29793 = msg("27688", dup314); - -var msg29794 = msg("27689", dup330); - -var msg29795 = msg("27690", dup330); - -var msg29796 = msg("27691", dup309); - -var msg29797 = msg("27692", dup309); - -var msg29798 = msg("27693", dup309); - -var msg29799 = msg("27694", dup309); - -var msg29800 = msg("27695", dup311); - -var msg29801 = msg("27696", dup311); - -var msg29802 = msg("27697", dup311); - -var msg29803 = msg("27698", dup333); - -var msg29804 = msg("27699", dup321); - -var msg29805 = msg("27700", dup327); - -var msg29806 = msg("27701", dup311); - -var msg29807 = msg("27702", dup311); - -var msg29808 = msg("27703", dup311); - -var msg29809 = msg("27704", dup311); - -var msg29810 = msg("27705", dup311); - -var msg29811 = msg("27706", dup311); - -var msg29812 = msg("27707", dup321); - -var msg29813 = msg("27708", dup321); - -var msg29814 = msg("27709", dup325); - -var msg29815 = msg("27710", dup325); - -var msg29816 = msg("27711", dup321); - -var msg29817 = msg("27712", dup311); - -var msg29818 = msg("27713", dup311); - -var msg29819 = msg("27714", dup311); - -var msg29820 = msg("27715", dup311); - -var msg29821 = msg("27716", dup311); - -var msg29822 = msg("27717", dup311); - -var msg29823 = msg("27718", dup309); - -var msg29824 = msg("27719", dup309); - -var msg29825 = msg("27720", dup321); - -var msg29826 = msg("27721", dup311); - -var msg29827 = msg("27722", dup311); - -var msg29828 = msg("27723", dup322); - -var msg29829 = msg("27724", dup322); - -var msg29830 = msg("27725", dup335); - -var msg29831 = msg("27726", dup324); - -var msg29832 = msg("27727", dup324); - -var msg29833 = msg("27728", dup324); - -var msg29834 = msg("27729", dup314); - -var msg29835 = msg("27730", dup314); - -var msg29836 = msg("27731", dup314); - -var msg29837 = msg("27732", dup314); - -var msg29838 = msg("27733", dup307); - -var msg29839 = msg("27734", dup307); - -var msg29840 = msg("27735", dup311); - -var msg29841 = msg("27736", dup311); - -var msg29842 = msg("27737", dup311); - -var msg29843 = msg("27738", dup307); - -var msg29844 = msg("27739", dup307); - -var msg29845 = msg("27740", dup307); - -var msg29846 = msg("27741", dup307); - -var msg29847 = msg("27742", dup309); - -var msg29848 = msg("27743", dup309); - -var msg29849 = msg("27744", dup309); - -var msg29850 = msg("27745", dup309); - -var msg29851 = msg("27746", dup321); - -var msg29852 = msg("27747", dup321); - -var msg29853 = msg("27748", dup322); - -var msg29854 = msg("27749", dup322); - -var msg29855 = msg("27750", dup309); - -var msg29856 = msg("27751", dup309); - -var msg29857 = msg("27752", dup322); - -var msg29858 = msg("27753", dup322); - -var msg29859 = msg("27754", dup309); - -var msg29860 = msg("27755", dup309); - -var msg29861 = msg("27756", dup311); - -var msg29862 = msg("27757", dup314); - -var msg29863 = msg("27758", dup314); - -var msg29864 = msg("27759", dup321); - -var msg29865 = msg("27760", dup314); - -var msg29866 = msg("27761", dup314); - -var msg29867 = msg("27762", dup314); - -var msg29868 = msg("27763", dup314); - -var msg29869 = msg("27764", dup309); - -var msg29870 = msg("27765", dup309); - -var msg29871 = msg("27766", dup314); - -var msg29872 = msg("27767", dup314); - -var msg29873 = msg("27768", dup314); - -var msg29874 = msg("27769", dup309); - -var msg29875 = msg("27770", dup309); - -var msg29876 = msg("27771", dup309); - -var msg29877 = msg("27772", dup309); - -var msg29878 = msg("27773", dup309); - -var msg29879 = msg("27774", dup321); - -var msg29880 = msg("27775", dup321); - -var msg29881 = msg("27776", dup307); - -var msg29882 = msg("27777", dup311); - -var msg29883 = msg("27778", dup307); - -var msg29884 = msg("27779", dup307); - -var msg29885 = msg("27780", dup307); - -var msg29886 = msg("27781", dup314); - -var msg29887 = msg("27782", dup314); - -var msg29888 = msg("27783", dup311); - -var msg29889 = msg("27784", dup311); - -var msg29890 = msg("27785", dup311); - -var msg29891 = msg("27786", dup309); - -var msg29892 = msg("27787", dup309); - -var msg29893 = msg("27788", dup314); - -var msg29894 = msg("27789", dup314); - -var msg29895 = msg("27790", dup314); - -var msg29896 = msg("27791", dup314); - -var msg29897 = msg("27792", dup314); - -var msg29898 = msg("27793", dup314); - -var msg29899 = msg("27794", dup314); - -var msg29900 = msg("27795", dup314); - -var msg29901 = msg("27796", dup322); - -var msg29902 = msg("27797", dup322); - -var msg29903 = msg("27798", dup314); - -var msg29904 = msg("27799", dup314); - -var msg29905 = msg("27800", dup314); - -var msg29906 = msg("27801", dup321); - -var msg29907 = msg("27802", dup321); - -var msg29908 = msg("27803", dup321); - -var msg29909 = msg("27804", dup321); - -var msg29910 = msg("27805", dup321); - -var msg29911 = msg("27806", dup321); - -var msg29912 = msg("27807", dup311); - -var msg29913 = msg("27808", dup311); - -var msg29914 = msg("27809", dup311); - -var msg29915 = msg("27810", dup311); - -var msg29916 = msg("27811", dup321); - -var msg29917 = msg("27812", dup321); - -var msg29918 = msg("27813", dup311); - -var msg29919 = msg("27814", dup311); - -var msg29920 = msg("27815", dup311); - -var msg29921 = msg("27816", dup307); - -var msg29922 = msg("27817", dup321); - -var msg29923 = msg("27818", dup324); - -var msg29924 = msg("27819", dup324); - -var msg29925 = msg("27820", dup309); - -var msg29926 = msg("27821", dup309); - -var msg29927 = msg("27822", dup311); - -var msg29928 = msg("27823", dup325); - -var msg29929 = msg("27824", dup309); - -var msg29930 = msg("27825", dup309); - -var msg29931 = msg("27826", dup311); - -var msg29932 = msg("27827", dup311); - -var msg29933 = msg("27828", dup311); - -var msg29934 = msg("27829", dup325); - -var msg29935 = msg("27830", dup325); - -var msg29936 = msg("27831", dup323); - -var msg29937 = msg("27832", dup323); - -var msg29938 = msg("27833", dup323); - -var msg29939 = msg("27834", dup323); - -var msg29940 = msg("27835", dup325); - -var msg29941 = msg("27836", dup325); - -var msg29942 = msg("27837", dup325); - -var msg29943 = msg("27838", dup325); - -var msg29944 = msg("27839", dup325); - -var msg29945 = msg("27840", dup325); - -var msg29946 = msg("27841", dup325); - -var msg29947 = msg("27842", dup325); - -var msg29948 = msg("27843", dup325); - -var msg29949 = msg("27844", dup325); - -var msg29950 = msg("27845", dup311); - -var msg29951 = msg("27846", dup311); - -var msg29952 = msg("27847", dup314); - -var msg29953 = msg("27848", dup314); - -var msg29954 = msg("27849", dup314); - -var msg29955 = msg("27850", dup309); - -var msg29956 = msg("27851", dup309); - -var msg29957 = msg("27852", dup309); - -var msg29958 = msg("27853", dup309); - -var msg29959 = msg("27854", dup309); - -var msg29960 = msg("27855", dup309); - -var msg29961 = msg("27856", dup309); - -var msg29962 = msg("27857", dup309); - -var msg29963 = msg("27858", dup309); - -var msg29964 = msg("27859", dup309); - -var msg29965 = msg("27860", dup324); - -var msg29966 = msg("27861", dup314); - -var msg29967 = msg("27862", dup323); - -var msg29968 = msg("27863", dup311); - -var msg29969 = msg("27864", dup321); - -var msg29970 = msg("27865", dup311); - -var msg29971 = msg("27866", dup311); - -var msg29972 = msg("27867", dup321); - -var msg29973 = msg("27868", dup325); - -var msg29974 = msg("27869", dup314); - -var msg29975 = msg("27870", dup314); - -var msg29976 = msg("27871", dup314); - -var msg29977 = msg("27872", dup314); - -var msg29978 = msg("27873", dup311); - -var msg29979 = msg("27874", dup311); - -var msg29980 = msg("27875", dup311); - -var msg29981 = msg("27876", dup311); - -var msg29982 = msg("27877", dup311); - -var msg29983 = msg("27878", dup311); - -var msg29984 = msg("27879", dup311); - -var msg29985 = msg("27880", dup311); - -var msg29986 = msg("27881", dup311); - -var msg29987 = msg("27882", dup311); - -var msg29988 = msg("27883", dup311); - -var msg29989 = msg("27884", dup311); - -var msg29990 = msg("27885", dup311); - -var msg29991 = msg("27886", dup311); - -var msg29992 = msg("27887", dup311); - -var msg29993 = msg("27888", dup311); - -var msg29994 = msg("27889", dup311); - -var msg29995 = msg("27890", dup311); - -var msg29996 = msg("27891", dup311); - -var msg29997 = msg("27892", dup311); - -var msg29998 = msg("27893", dup311); - -var msg29999 = msg("27894", dup307); - -var msg30000 = msg("27895", dup307); - -var msg30001 = msg("27896", dup307); - -var msg30002 = msg("27897", dup307); - -var msg30003 = msg("27898", dup307); - -var msg30004 = msg("27899", dup323); - -var msg30005 = msg("27900", dup323); - -var msg30006 = msg("27901", dup311); - -var msg30007 = msg("27902", dup323); - -var msg30008 = msg("27903", dup311); - -var msg30009 = msg("27904", dup323); - -var msg30010 = msg("27905", dup321); - -var msg30011 = msg("27906", dup311); - -var msg30012 = msg("27907", dup311); - -var msg30013 = msg("27908", dup325); - -var msg30014 = msg("27909", dup325); - -var msg30015 = msg("27910", dup321); - -var msg30016 = msg("27911", dup311); - -var msg30017 = msg("27912", dup311); - -var msg30018 = msg("27913", dup321); - -var msg30019 = msg("27914", dup321); - -var msg30020 = msg("27915", dup321); - -var msg30021 = msg("27916", dup321); - -var msg30022 = msg("27917", dup321); - -var msg30023 = msg("27918", dup321); - -var msg30024 = msg("27919", dup321); - -var msg30025 = msg("27920", dup311); - -var msg30026 = msg("27921", dup316); - -var msg30027 = msg("27922", dup314); - -var msg30028 = msg("27923", dup314); - -var msg30029 = msg("27924", dup314); - -var msg30030 = msg("27925", dup314); - -var msg30031 = msg("27926", dup314); - -var msg30032 = msg("27927", dup314); - -var msg30033 = msg("27928", dup314); - -var msg30034 = msg("27929", dup314); - -var msg30035 = msg("27930", dup329); - -var msg30036 = msg("27931", dup329); - -var msg30037 = msg("27932", dup329); - -var msg30038 = msg("27933", dup314); - -var msg30039 = msg("27934", dup314); - -var msg30040 = msg("27935", dup311); - -var msg30041 = msg("27936", dup311); - -var msg30042 = msg("27937", dup314); - -var msg30043 = msg("27938", dup329); - -var msg30044 = msg("27939", dup321); - -var msg30045 = msg("27940", dup324); - -var msg30046 = msg("27941", dup314); - -var msg30047 = msg("27942", dup311); - -var msg30048 = msg("27943", dup311); - -var msg30049 = msg("27944", dup311); - -var msg30050 = msg("27945", dup309); - -var msg30051 = msg("27946", dup321); - -var msg30052 = msg("27947", dup309); - -var msg30053 = msg("27948", dup309); - -var msg30054 = msg("27949", dup321); - -var msg30055 = msg("27950", dup321); - -var msg30056 = msg("27951", dup321); - -var msg30057 = msg("27952", dup321); - -var msg30058 = msg("27953", dup321); - -var msg30059 = msg("27954", dup321); - -var msg30060 = msg("27955", dup321); - -var msg30061 = msg("27956", dup321); - -var msg30062 = msg("27957", dup321); - -var msg30063 = msg("27958", dup321); - -var msg30064 = msg("27959", dup321); - -var msg30065 = msg("27960", dup321); - -var msg30066 = msg("27961", dup321); - -var msg30067 = msg("27962", dup321); - -var msg30068 = msg("27963", dup321); - -var msg30069 = msg("27964", dup321); - -var msg30070 = msg("27965", dup321); - -var msg30071 = msg("27966", dup321); - -var msg30072 = msg("27967", dup321); - -var msg30073 = msg("27968", dup321); - -var msg30074 = msg("27969", dup321); - -var msg30075 = msg("27970", dup321); - -var msg30076 = msg("27971", dup321); - -var msg30077 = msg("27972", dup321); - -var msg30078 = msg("27973", dup321); - -var msg30079 = msg("27974", dup321); - -var msg30080 = msg("27975", dup321); - -var msg30081 = msg("27976", dup321); - -var msg30082 = msg("27977", dup321); - -var msg30083 = msg("27978", dup321); - -var msg30084 = msg("27979", dup321); - -var msg30085 = msg("27980", dup325); - -var msg30086 = msg("27981", dup325); - -var msg30087 = msg("27982", dup311); - -var msg30088 = msg("27983", dup323); - -var msg30089 = msg("27984", dup329); - -var msg30090 = msg("27985", dup329); - -var msg30091 = msg("27986", dup329); - -var msg30092 = msg("27987", dup329); - -var msg30093 = msg("27988", dup329); - -var msg30094 = msg("27989", dup329); - -var msg30095 = msg("27990", dup329); - -var msg30096 = msg("27991", dup329); - -var msg30097 = msg("27992", dup329); - -var msg30098 = msg("27993", dup329); - -var msg30099 = msg("27994", dup329); - -var msg30100 = msg("27995", dup329); - -var msg30101 = msg("27996", dup329); - -var msg30102 = msg("27997", dup329); - -var msg30103 = msg("27998", dup329); - -var msg30104 = msg("27999", dup314); - -var msg30105 = msg("28000", dup311); - -var msg30106 = msg("28001", dup323); - -var msg30107 = msg("28002", dup336); - -var msg30108 = msg("28003", dup336); - -var msg30109 = msg("28004", dup321); - -var msg30110 = msg("28005", dup321); - -var msg30111 = msg("28006", dup321); - -var msg30112 = msg("28007", dup321); - -var msg30113 = msg("28008", dup321); - -var msg30114 = msg("28009", dup321); - -var msg30115 = msg("28010", dup321); - -var msg30116 = msg("28011", dup321); - -var msg30117 = msg("28012", dup321); - -var msg30118 = msg("28013", dup311); - -var msg30119 = msg("28014", dup311); - -var msg30120 = msg("28015", dup337); - -var msg30121 = msg("28016", dup311); - -var msg30122 = msg("28017", dup311); - -var msg30123 = msg("28018", dup311); - -var msg30124 = msg("28019", dup311); - -var msg30125 = msg("28020", dup311); - -var msg30126 = msg("28021", dup311); - -var msg30127 = msg("28022", dup311); - -var msg30128 = msg("28023", dup311); - -var msg30129 = msg("28024", dup307); - -var msg30130 = msg("28025", dup307); - -var msg30131 = msg("28026", dup311); - -var msg30132 = msg("28027", dup311); - -var msg30133 = msg("28028", dup311); - -var msg30134 = msg("28029", dup311); - -var msg30135 = msg("28030", dup311); - -var msg30136 = msg("28031", dup311); - -var msg30137 = msg("28032", dup311); - -var msg30138 = msg("28033", dup321); - -var msg30139 = msg("28034", dup321); - -var msg30140 = msg("28035", dup321); - -var msg30141 = msg("28036", dup321); - -var msg30142 = msg("28037", dup311); - -var msg30143 = msg("28038", dup311); - -var msg30144 = msg("28039", dup337); - -var msg30145 = msg("28040", dup321); - -var msg30146 = msg("28041", dup310); - -var msg30147 = msg("28042", dup321); - -var msg30148 = msg("28043", dup311); - -var msg30149 = msg("28044", dup321); - -var msg30150 = msg("28045", dup321); - -var msg30151 = msg("28046", dup314); - -var msg30152 = msg("28047", dup307); - -var msg30153 = msg("28048", dup311); - -var msg30154 = msg("28049", dup311); - -var msg30155 = msg("28050", dup311); - -var msg30156 = msg("28051", dup311); - -var msg30157 = msg("28052", dup311); - -var msg30158 = msg("28053", dup321); - -var msg30159 = msg("28054", dup307); - -var msg30160 = msg("28055", dup200); - -var msg30161 = msg("28056", dup200); - -var msg30162 = msg("28057", dup200); - -var msg30163 = msg("28058", dup321); - -var msg30164 = msg("28059", dup321); - -var msg30165 = msg("28060", dup321); - -var msg30166 = msg("28061", dup321); - -var msg30167 = msg("28062", dup321); - -var msg30168 = msg("28063", dup321); - -var msg30169 = msg("28064", dup321); - -var msg30170 = msg("28065", dup321); - -var msg30171 = msg("28066", dup321); - -var msg30172 = msg("28067", dup321); - -var msg30173 = msg("28068", dup314); - -var msg30174 = msg("28069", dup321); - -var msg30175 = msg("28070", dup321); - -var msg30176 = msg("28071", dup310); - -var msg30177 = msg("28072", dup321); - -var msg30178 = msg("28073", dup321); - -var msg30179 = msg("28074", dup321); - -var msg30180 = msg("28075", dup321); - -var msg30181 = msg("28076", dup314); - -var msg30182 = msg("28077", dup321); - -var msg30183 = msg("28078", dup321); - -var msg30184 = msg("28079", dup321); - -var msg30185 = msg("28080", dup321); - -var msg30186 = msg("28081", dup200); - -var msg30187 = msg("28082", dup200); - -var msg30188 = msg("28083", dup311); - -var msg30189 = msg("28084", dup321); - -var msg30190 = msg("28085", dup321); - -var msg30191 = msg("28086", dup200); - -var msg30192 = msg("28087", dup200); - -var msg30193 = msg("28088", dup309); - -var msg30194 = msg("28089", dup323); - -var msg30195 = msg("28090", dup323); - -var msg30196 = msg("28093", dup314); - -var msg30197 = msg("28094", dup321); - -var msg30198 = msg("28095", dup321); - -var msg30199 = msg("28096", dup321); - -var msg30200 = msg("28097", dup321); - -var msg30201 = msg("28098", dup322); - -var msg30202 = msg("28099", dup322); - -var msg30203 = msg("28100", dup322); - -var msg30204 = msg("28101", dup322); - -var msg30205 = msg("28102", dup322); - -var msg30206 = msg("28103", dup309); - -var msg30207 = msg("28104", dup321); - -var msg30208 = msg("28105", dup321); - -var msg30209 = msg("28106", dup321); - -var msg30210 = msg("28107", dup321); - -var msg30211 = msg("28108", dup311); - -var msg30212 = msg("28109", dup311); - -var msg30213 = msg("28110", dup311); - -var msg30214 = msg("28111", dup311); - -var msg30215 = msg("28112", dup325); - -var msg30216 = msg("28113", dup309); - -var msg30217 = msg("28114", dup321); - -var msg30218 = msg("28115", dup321); - -var msg30219 = msg("28116", dup321); - -var msg30220 = msg("28117", dup321); - -var msg30221 = msg("28118", dup321); - -var msg30222 = msg("28119", dup321); - -var msg30223 = msg("28120", dup321); - -var msg30224 = msg("28121", dup321); - -var msg30225 = msg("28122", dup321); - -var msg30226 = msg("28123", dup321); - -var msg30227 = msg("28124", dup309); - -var msg30228 = msg("28125", dup321); - -var msg30229 = msg("28126", dup314); - -var msg30230 = msg("28127", dup314); - -var msg30231 = msg("28128", dup309); - -var msg30232 = msg("28129", dup309); - -var msg30233 = msg("28130", dup309); - -var msg30234 = msg("28131", dup309); - -var msg30235 = msg("28132", dup309); - -var msg30236 = msg("28133", dup309); - -var msg30237 = msg("28134", dup321); - -var msg30238 = msg("28135", dup309); - -var msg30239 = msg("28136", dup309); - -var msg30240 = msg("28137", dup309); - -var msg30241 = msg("28138", dup337); - -var msg30242 = msg("28139", dup311); - -var msg30243 = msg("28140", dup321); - -var msg30244 = msg("28141", dup321); - -var msg30245 = msg("28142", dup321); - -var msg30246 = msg("28143", dup321); - -var msg30247 = msg("28144", dup321); - -var msg30248 = msg("28145", dup314); - -var msg30249 = msg("28146", dup321); - -var msg30250 = msg("28147", dup321); - -var msg30251 = msg("28148", dup321); - -var msg30252 = msg("28149", dup314); - -var msg30253 = msg("28150", dup314); - -var msg30254 = msg("28151", dup325); - -var msg30255 = msg("28152", dup321); - -var msg30256 = msg("28153", dup321); - -var msg30257 = msg("28154", dup321); - -var msg30258 = msg("28155", dup321); - -var msg30259 = msg("28156", dup321); - -var msg30260 = msg("28157", dup311); - -var msg30261 = msg("28158", dup325); - -var msg30262 = msg("28159", dup325); - -var msg30263 = msg("28160", dup325); - -var msg30264 = msg("28161", dup324); - -var msg30265 = msg("28162", dup324); - -var msg30266 = msg("28163", dup311); - -var msg30267 = msg("28164", dup321); - -var msg30268 = msg("28165", dup323); - -var msg30269 = msg("28166", dup321); - -var msg30270 = msg("28167", dup321); - -var msg30271 = msg("28168", dup321); - -var msg30272 = msg("28169", dup321); - -var msg30273 = msg("28170", dup321); - -var msg30274 = msg("28171", dup321); - -var msg30275 = msg("28172", dup321); - -var msg30276 = msg("28173", dup321); - -var msg30277 = msg("28174", dup321); - -var msg30278 = msg("28175", dup321); - -var msg30279 = msg("28176", dup321); - -var msg30280 = msg("28177", dup321); - -var msg30281 = msg("28178", dup321); - -var msg30282 = msg("28179", dup321); - -var msg30283 = msg("28180", dup321); - -var msg30284 = msg("28181", dup321); - -var msg30285 = msg("28182", dup321); - -var msg30286 = msg("28183", dup321); - -var msg30287 = msg("28184", dup321); - -var msg30288 = msg("28185", dup321); - -var msg30289 = msg("28186", dup321); - -var msg30290 = msg("28187", dup321); - -var msg30291 = msg("28188", dup321); - -var msg30292 = msg("28189", dup321); - -var msg30293 = msg("28190", dup311); - -var msg30294 = msg("28191", dup325); - -var msg30295 = msg("28192", dup321); - -var msg30296 = msg("28193", dup321); - -var msg30297 = msg("28194", dup311); - -var msg30298 = msg("28195", dup311); - -var msg30299 = msg("28196", dup311); - -var msg30300 = msg("28197", dup311); - -var msg30301 = msg("28198", dup311); - -var msg30302 = msg("28199", dup311); - -var msg30303 = msg("28200", dup311); - -var msg30304 = msg("28201", dup314); - -var msg30305 = msg("28202", dup324); - -var msg30306 = msg("28203", dup324); - -var msg30307 = msg("28204", dup311); - -var msg30308 = msg("28205", dup309); - -var msg30309 = msg("28206", dup309); - -var msg30310 = msg("28207", dup311); - -var msg30311 = msg("28208", dup311); - -var msg30312 = msg("28209", dup321); - -var msg30313 = msg("28210", dup321); - -var msg30314 = msg("28211", dup321); - -var msg30315 = msg("28212", dup321); - -var msg30316 = msg("28213", dup311); - -var msg30317 = msg("28214", dup311); - -var msg30318 = msg("28215", dup311); - -var msg30319 = msg("28216", dup333); - -var msg30320 = msg("28217", dup321); - -var msg30321 = msg("28218", dup321); - -var msg30322 = msg("28219", dup321); - -var msg30323 = msg("28220", dup321); - -var msg30324 = msg("28221", dup321); - -var msg30325 = msg("28222", dup321); - -var msg30326 = msg("28223", dup321); - -var msg30327 = msg("28224", dup321); - -var msg30328 = msg("28225", dup321); - -var msg30329 = msg("28226", dup321); - -var msg30330 = msg("28227", dup309); - -var msg30331 = msg("28228", dup309); - -var msg30332 = msg("28229", dup321); - -var msg30333 = msg("28230", dup321); - -var msg30334 = msg("28231", dup323); - -var msg30335 = msg("28232", dup323); - -var msg30336 = msg("28233", dup311); - -var msg30337 = msg("28234", dup321); - -var msg30338 = msg("28235", dup311); - -var msg30339 = msg("28236", dup311); - -var msg30340 = msg("28237", dup311); - -var msg30341 = msg("28238", dup307); - -var msg30342 = msg("28239", dup321); - -var msg30343 = msg("28240", dup200); - -var msg30344 = msg("28241", dup321); - -var msg30345 = msg("28242", dup321); - -var msg30346 = msg("28243", dup321); - -var msg30347 = msg("28244", dup321); - -var msg30348 = msg("28245", dup314); - -var msg30349 = msg("28246", dup314); - -var msg30350 = msg("28247", dup321); - -var msg30351 = msg("28248", dup321); - -var msg30352 = msg("28249", dup321); - -var msg30353 = msg("28250", dup321); - -var msg30354 = msg("28251", dup322); - -var msg30355 = msg("28252", dup309); - -var msg30356 = msg("28253", dup321); - -var msg30357 = msg("28254", dup321); - -var msg30358 = msg("28255", dup321); - -var msg30359 = msg("28256", dup309); - -var msg30360 = msg("28257", dup311); - -var msg30361 = msg("28258", dup311); - -var msg30362 = msg("28259", dup311); - -var msg30363 = msg("28260", dup311); - -var msg30364 = msg("28261", dup309); - -var msg30365 = msg("28262", dup309); - -var msg30366 = msg("28263", dup309); - -var msg30367 = msg("28264", dup311); - -var msg30368 = msg("28265", dup311); - -var msg30369 = msg("28266", dup309); - -var msg30370 = msg("28267", dup325); - -var msg30371 = msg("28268", dup325); - -var msg30372 = msg("28269", dup325); - -var msg30373 = msg("28270", dup325); - -var msg30374 = msg("28271", dup325); - -var msg30375 = msg("28272", dup325); - -var msg30376 = msg("28273", dup311); - -var msg30377 = msg("28274", dup311); - -var msg30378 = msg("28275", dup311); - -var msg30379 = msg("28276", dup311); - -var msg30380 = msg("28277", dup311); - -var msg30381 = msg("28278", dup322); - -var msg30382 = msg("28279", dup321); - -var msg30383 = msg("28280", dup321); - -var msg30384 = msg("28281", dup321); - -var msg30385 = msg("28282", dup321); - -var msg30386 = msg("28283", dup321); - -var msg30387 = msg("28284", dup311); - -var msg30388 = msg("28285", dup321); - -var msg30389 = msg("28286", dup309); - -var msg30390 = msg("28287", dup311); - -var msg30391 = msg("28288", dup311); - -var msg30392 = msg("28289", dup311); - -var msg30393 = msg("28290", dup311); - -var msg30394 = msg("28291", dup311); - -var msg30395 = msg("28292", dup334); - -var msg30396 = msg("28293", dup324); - -var msg30397 = msg("28294", dup324); - -var msg30398 = msg("28295", dup324); - -var msg30399 = msg("28296", dup324); - -var msg30400 = msg("28297", dup321); - -var msg30401 = msg("28298", dup311); - -var msg30402 = msg("28299", dup322); - -var msg30403 = msg("28300", dup321); - -var msg30404 = msg("28303", dup309); - -var msg30405 = msg("28304", dup311); - -var msg30406 = msg("28305", dup321); - -var msg30407 = msg("28306", dup325); - -var msg30408 = msg("28309", dup311); - -var msg30409 = msg("28315", dup309); - -var msg30410 = msg("28323", dup321); - -var msg30411 = msg("28325", dup321); - -var msg30412 = msg("28326", dup321); - -var msg30413 = msg("28327", dup321); - -var msg30414 = msg("28328", dup321); - -var msg30415 = msg("28329", dup321); - -var msg30416 = msg("28330", dup321); - -var msg30417 = msg("28331", dup309); - -var msg30418 = msg("28332", dup309); - -var msg30419 = msg("28333", dup309); - -var msg30420 = msg("28334", dup309); - -var msg30421 = msg("28335", dup309); - -var msg30422 = msg("28336", dup309); - -var msg30423 = msg("28337", dup309); - -var msg30424 = msg("28338", dup309); - -var msg30425 = msg("28339", dup309); - -var msg30426 = msg("28340", dup309); - -var msg30427 = msg("28341", dup309); - -var msg30428 = msg("28342", dup309); - -var msg30429 = msg("28343", dup309); - -var msg30430 = msg("28344", dup322); - -var msg30431 = msg("28345", dup311); - -var msg30432 = msg("28346", dup311); - -var msg30433 = msg("28347", dup321); - -var msg30434 = msg("28348", dup321); - -var msg30435 = msg("28349", dup314); - -var msg30436 = msg("28350", dup314); - -var msg30437 = msg("28351", dup314); - -var msg30438 = msg("28352", dup311); - -var msg30439 = msg("28353", dup311); - -var msg30440 = msg("28354", dup311); - -var msg30441 = msg("28355", dup311); - -var msg30442 = msg("28356", dup311); - -var msg30443 = msg("28357", dup311); - -var msg30444 = msg("28358", dup311); - -var msg30445 = msg("28359", dup311); - -var msg30446 = msg("28360", dup311); - -var msg30447 = msg("28361", dup311); - -var msg30448 = msg("28362", dup325); - -var msg30449 = msg("28363", dup325); - -var msg30450 = msg("28364", dup325); - -var msg30451 = msg("28365", dup321); - -var msg30452 = msg("28366", dup321); - -var msg30453 = msg("28367", dup314); - -var msg30454 = msg("28368", dup314); - -var msg30455 = msg("28369", dup314); - -var msg30456 = msg("28370", dup314); - -var msg30457 = msg("28371", dup321); - -var msg30458 = msg("28372", dup321); - -var msg30459 = msg("28373", dup321); - -var msg30460 = msg("28374", dup311); - -var msg30461 = msg("28375", dup311); - -var msg30462 = msg("28376", dup311); - -var msg30463 = msg("28377", dup311); - -var msg30464 = msg("28378", dup311); - -var msg30465 = msg("28379", dup311); - -var msg30466 = msg("28380", dup311); - -var msg30467 = msg("28381", dup321); - -var msg30468 = msg("28382", dup314); - -var msg30469 = msg("28383", dup314); - -var msg30470 = msg("28384", dup314); - -var msg30471 = msg("28385", dup311); - -var msg30472 = msg("28386", dup314); - -var msg30473 = msg("28387", dup314); - -var msg30474 = msg("28388", dup311); - -var msg30475 = msg("28389", dup311); - -var msg30476 = msg("28390", dup309); - -var msg30477 = msg("28391", dup309); - -var msg30478 = msg("28392", dup309); - -var msg30479 = msg("28393", dup311); - -var msg30480 = msg("28394", dup311); - -var msg30481 = msg("28395", dup311); - -var msg30482 = msg("28396", dup311); - -var msg30483 = msg("28397", dup311); - -var msg30484 = msg("28398", dup311); - -var msg30485 = msg("28399", dup321); - -var msg30486 = msg("28400", dup321); - -var msg30487 = msg("28401", dup200); - -var msg30488 = msg("28402", dup200); - -var msg30489 = msg("28403", dup200); - -var msg30490 = msg("28404", dup321); - -var msg30491 = msg("28405", dup321); - -var msg30492 = msg("28406", dup321); - -var msg30493 = msg("28407", dup314); - -var msg30494 = msg("28408", dup311); - -var msg30495 = msg("28409", dup311); - -var msg30496 = msg("28410", dup321); - -var msg30497 = msg("28411", dup321); - -var msg30498 = msg("28412", dup311); - -var msg30499 = msg("28413", dup311); - -var msg30500 = msg("28414", dup311); - -var msg30501 = msg("28415", dup321); - -var msg30502 = msg("28416", dup321); - -var msg30503 = msg("28417", dup321); - -var msg30504 = msg("28418", dup321); - -var msg30505 = msg("28419", dup321); - -var msg30506 = msg("28420", dup311); - -var msg30507 = msg("28421", dup311); - -var msg30508 = msg("28422", dup311); - -var msg30509 = msg("28423", dup307); - -var msg30510 = msg("28424", dup311); - -var msg30511 = msg("28425", dup314); - -var msg30512 = msg("28426", dup311); - -var msg30513 = msg("28427", dup311); - -var msg30514 = msg("28428", dup311); - -var msg30515 = msg("28429", dup311); - -var msg30516 = msg("28430", dup307); - -var msg30517 = msg("28431", dup307); - -var msg30518 = msg("28432", dup307); - -var msg30519 = msg("28433", dup307); - -var msg30520 = msg("28434", dup307); - -var msg30521 = msg("28435", dup314); - -var msg30522 = msg("28436", dup314); - -var msg30523 = msg("28437", dup314); - -var msg30524 = msg("28438", dup314); - -var msg30525 = msg("28439", dup321); - -var msg30526 = msg("28440", dup309); - -var msg30527 = msg("28441", dup309); - -var msg30528 = msg("28442", dup309); - -var msg30529 = msg("28443", dup309); - -var msg30530 = msg("28444", dup321); - -var msg30531 = msg("28445", dup321); - -var msg30532 = msg("28446", dup321); - -var msg30533 = msg("28447", dup311); - -var msg30534 = msg("28448", dup314); - -var msg30535 = msg("28449", dup311); - -var msg30536 = msg("28450", dup311); - -var msg30537 = msg("28451", dup311); - -var msg30538 = msg("28452", dup311); - -var msg30539 = msg("28453", dup311); - -var msg30540 = msg("28454", dup311); - -var msg30541 = msg("28455", dup311); - -var msg30542 = msg("28456", dup311); - -var msg30543 = msg("28457", dup311); - -var msg30544 = msg("28458", dup311); - -var msg30545 = msg("28459", dup311); - -var msg30546 = msg("28460", dup311); - -var msg30547 = msg("28461", dup309); - -var msg30548 = msg("28462", dup309); - -var msg30549 = msg("28463", dup309); - -var msg30550 = msg("28464", dup309); - -var msg30551 = msg("28465", dup309); - -var msg30552 = msg("28466", dup309); - -var msg30553 = msg("28467", dup309); - -var msg30554 = msg("28468", dup309); - -var msg30555 = msg("28469", dup309); - -var msg30556 = msg("28470", dup309); - -var msg30557 = msg("28471", dup309); - -var msg30558 = msg("28472", dup309); - -var msg30559 = msg("28473", dup309); - -var msg30560 = msg("28474", dup311); - -var msg30561 = msg("28475", dup311); - -var msg30562 = msg("28476", dup311); - -var msg30563 = msg("28477", dup311); - -var msg30564 = msg("28478", dup311); - -var msg30565 = msg("28479", dup321); - -var msg30566 = msg("28480", dup333); - -var msg30567 = msg("28481", dup321); - -var msg30568 = msg("28482", dup321); - -var msg30569 = msg("28483", dup321); - -var msg30570 = msg("28484", dup321); - -var msg30571 = msg("28485", dup321); - -var msg30572 = msg("28486", dup321); - -var msg30573 = msg("28487", dup311); - -var msg30574 = msg("28488", dup311); - -var msg30575 = msg("28489", dup325); - -var msg30576 = msg("28490", dup311); - -var msg30577 = msg("28491", dup325); - -var msg30578 = msg("28492", dup325); - -var msg30579 = msg("28493", dup321); - -var msg30580 = msg("28494", dup311); - -var msg30581 = msg("28495", dup311); - -var msg30582 = msg("28496", dup325); - -var msg30583 = msg("28497", dup314); - -var msg30584 = msg("28498", dup309); - -var msg30585 = msg("28499", dup309); - -var msg30586 = msg("28500", dup314); - -var msg30587 = msg("28501", dup314); - -var msg30588 = msg("28502", dup309); - -var msg30589 = msg("28503", dup309); - -var msg30590 = msg("28504", dup325); - -var msg30591 = msg("28505", dup314); - -var msg30592 = msg("28506", dup314); - -var msg30593 = msg("28507", dup314); - -var msg30594 = msg("28508", dup314); - -var msg30595 = msg("28509", dup309); - -var msg30596 = msg("28510", dup309); - -var msg30597 = msg("28511", dup309); - -var msg30598 = msg("28512", dup309); - -var msg30599 = msg("28513", dup309); - -var msg30600 = msg("28514", dup309); - -var msg30601 = msg("28515", dup309); - -var msg30602 = msg("28516", dup309); - -var msg30603 = msg("28517", dup309); - -var msg30604 = msg("28518", dup309); - -var msg30605 = msg("28519", dup309); - -var msg30606 = msg("28520", dup309); - -var msg30607 = msg("28521", dup309); - -var msg30608 = msg("28522", dup325); - -var msg30609 = msg("28523", dup325); - -var msg30610 = msg("28524", dup325); - -var msg30611 = msg("28525", dup309); - -var msg30612 = msg("28526", dup309); - -var msg30613 = msg("28527", dup321); - -var msg30614 = msg("28528", dup321); - -var msg30615 = msg("28529", dup321); - -var msg30616 = msg("28530", dup314); - -var msg30617 = msg("28531", dup321); - -var msg30618 = msg("28532", dup324); - -var msg30619 = msg("28533", dup321); - -var msg30620 = msg("28534", dup307); - -var msg30621 = msg("28535", dup307); - -var msg30622 = msg("28536", dup307); - -var msg30623 = msg("28537", dup307); - -var msg30624 = msg("28538", dup321); - -var msg30625 = msg("28539", dup321); - -var msg30626 = msg("28540", dup321); - -var msg30627 = msg("28541", dup321); - -var msg30628 = msg("28542", dup321); - -var msg30629 = msg("28543", dup321); - -var msg30630 = msg("28544", dup309); - -var msg30631 = msg("28545", dup309); - -var msg30632 = msg("28546", dup309); - -var msg30633 = msg("28547", dup321); - -var msg30634 = msg("28548", dup321); - -var msg30635 = msg("28549", dup309); - -var msg30636 = msg("28550", dup309); - -var msg30637 = msg("28551", dup333); - -var msg30638 = msg("28552", dup336); - -var msg30639 = msg("28553", dup321); - -var msg30640 = msg("28554", dup321); - -var msg30641 = msg("28555", dup328); - -var msg30642 = msg("28556", dup329); - -var msg30643 = msg("28557", dup329); - -var msg30644 = msg("28558", dup325); - -var msg30645 = msg("28559", dup321); - -var msg30646 = msg("28560", dup333); - -var msg30647 = msg("28561", dup321); - -var msg30648 = msg("28562", dup321); - -var msg30649 = msg("28563", dup321); - -var msg30650 = msg("28564", dup321); - -var msg30651 = msg("28565", dup321); - -var msg30652 = msg("28566", dup314); - -var msg30653 = msg("28567", dup314); - -var msg30654 = msg("28568", dup311); - -var msg30655 = msg("28569", dup311); - -var msg30656 = msg("28570", dup314); - -var msg30657 = msg("28571", dup314); - -var msg30658 = msg("28572", dup314); - -var msg30659 = msg("28573", dup314); - -var msg30660 = msg("28574", dup314); - -var msg30661 = msg("28575", dup311); - -var msg30662 = msg("28576", dup311); - -var msg30663 = msg("28577", dup314); - -var msg30664 = msg("28578", dup314); - -var msg30665 = msg("28579", dup323); - -var msg30666 = msg("28580", dup323); - -var msg30667 = msg("28581", dup323); - -var msg30668 = msg("28582", dup323); - -var msg30669 = msg("28583", dup323); - -var msg30670 = msg("28584", dup323); - -var msg30671 = msg("28585", dup309); - -var msg30672 = msg("28586", dup309); - -var msg30673 = msg("28587", dup314); - -var msg30674 = msg("28588", dup314); - -var msg30675 = msg("28589", dup311); - -var msg30676 = msg("28590", dup311); - -var msg30677 = msg("28591", dup311); - -var msg30678 = msg("28592", dup311); - -var msg30679 = msg("28593", dup307); - -var msg30680 = msg("28594", dup311); - -var msg30681 = msg("28595", dup311); - -var msg30682 = msg("28596", dup311); - -var msg30683 = msg("28597", dup314); - -var msg30684 = msg("28598", dup314); - -var msg30685 = msg("28599", dup321); - -var msg30686 = msg("28600", dup314); - -var msg30687 = msg("28601", dup314); - -var msg30688 = msg("28602", dup314); - -var msg30689 = msg("28603", dup314); - -var msg30690 = msg("28604", dup321); - -var msg30691 = msg("28605", dup321); - -var msg30692 = msg("28606", dup321); - -var msg30693 = msg("28607", dup321); - -var msg30694 = msg("28608", dup311); - -var msg30695 = msg("28609", dup311); - -var msg30696 = msg("28610", dup311); - -var msg30697 = msg("28611", dup311); - -var msg30698 = msg("28612", dup311); - -var msg30699 = msg("28613", dup311); - -var msg30700 = msg("28614", dup311); - -var msg30701 = msg("28615", dup311); - -var msg30702 = msg("28616", dup311); - -var msg30703 = msg("28617", dup324); - -var msg30704 = msg("28618", dup324); - -var msg30705 = msg("28619", dup311); - -var msg30706 = msg("28620", dup311); - -var msg30707 = msg("28621", dup309); - -var msg30708 = msg("28622", dup311); - -var msg30709 = msg("28623", dup309); - -var msg30710 = msg("28624", dup309); - -var msg30711 = msg("28625", dup309); - -var msg30712 = msg("28626", dup309); - -var msg30713 = msg("28627", dup311); - -var msg30714 = msg("28628", dup311); - -var msg30715 = msg("28629", dup323); - -var msg30716 = msg("28630", dup323); - -var msg30717 = msg("28631", dup309); - -var msg30718 = msg("28632", dup309); - -var msg30719 = msg("28633", dup311); - -var msg30720 = msg("28634", dup309); - -var msg30721 = msg("28635", dup309); - -var msg30722 = msg("28636", dup311); - -var msg30723 = msg("28637", dup311); - -var msg30724 = msg("28638", dup309); - -var msg30725 = msg("28639", dup309); - -var msg30726 = msg("28640", dup309); - -var msg30727 = msg("28641", dup309); - -var msg30728 = msg("28642", dup311); - -var msg30729 = msg("28643", dup311); - -var msg30730 = msg("28644", dup311); - -var msg30731 = msg("28645", dup311); - -var msg30732 = msg("28646", dup311); - -var msg30733 = msg("28647", dup311); - -var msg30734 = msg("28648", dup311); - -var msg30735 = msg("28649", dup311); - -var msg30736 = msg("28650", dup311); - -var msg30737 = msg("28651", dup311); - -var msg30738 = msg("28652", dup311); - -var msg30739 = msg("28653", dup311); - -var msg30740 = msg("28654", dup311); - -var msg30741 = msg("28655", dup311); - -var msg30742 = msg("28656", dup311); - -var msg30743 = msg("28657", dup311); - -var msg30744 = msg("28658", dup314); - -var msg30745 = msg("28659", dup311); - -var msg30746 = msg("28660", dup311); - -var msg30747 = msg("28661", dup311); - -var msg30748 = msg("28662", dup311); - -var msg30749 = msg("28663", dup311); - -var msg30750 = msg("28664", dup309); - -var msg30751 = msg("28665", dup309); - -var msg30752 = msg("28666", dup309); - -var msg30753 = msg("28667", dup311); - -var msg30754 = msg("28668", dup311); - -var msg30755 = msg("28669", dup311); - -var msg30756 = msg("28670", dup311); - -var msg30757 = msg("28671", dup311); - -var msg30758 = msg("28672", dup311); - -var msg30759 = msg("28673", dup311); - -var msg30760 = msg("28674", dup311); - -var msg30761 = msg("28675", dup311); - -var msg30762 = msg("28676", dup311); - -var msg30763 = msg("28677", dup311); - -var msg30764 = msg("28678", dup311); - -var msg30765 = msg("28679", dup311); - -var msg30766 = msg("28680", dup311); - -var msg30767 = msg("28681", dup311); - -var msg30768 = msg("28682", dup311); - -var msg30769 = msg("28683", dup311); - -var msg30770 = msg("28684", dup311); - -var msg30771 = msg("28685", dup311); - -var msg30772 = msg("28686", dup311); - -var msg30773 = msg("28687", dup307); - -var msg30774 = msg("28688", dup307); - -var msg30775 = msg("28689", dup307); - -var msg30776 = msg("28690", dup307); - -var msg30777 = msg("28691", dup311); - -var msg30778 = msg("28692", dup311); - -var msg30779 = msg("28693", dup311); - -var msg30780 = msg("28694", dup311); - -var msg30781 = msg("28695", dup323); - -var msg30782 = msg("28696", dup323); - -var msg30783 = msg("28697", dup323); - -var msg30784 = msg("28698", dup323); - -var msg30785 = msg("28699", dup311); - -var msg30786 = msg("28700", dup311); - -var msg30787 = msg("28701", dup311); - -var msg30788 = msg("28702", dup311); - -var msg30789 = msg("28703", dup311); - -var msg30790 = msg("28704", dup311); - -var msg30791 = msg("28705", dup311); - -var msg30792 = msg("28706", dup311); - -var msg30793 = msg("28707", dup311); - -var msg30794 = msg("28708", dup311); - -var msg30795 = msg("28709", dup311); - -var msg30796 = msg("28710", dup309); - -var msg30797 = msg("28711", dup309); - -var msg30798 = msg("28712", dup309); - -var msg30799 = msg("28713", dup309); - -var msg30800 = msg("28714", dup309); - -var msg30801 = msg("28715", dup309); - -var msg30802 = msg("28716", dup311); - -var msg30803 = msg("28717", dup311); - -var msg30804 = msg("28718", dup311); - -var msg30805 = msg("28719", dup311); - -var msg30806 = msg("28720", dup311); - -var msg30807 = msg("28721", dup311); - -var msg30808 = msg("28722", dup323); - -var msg30809 = msg("28723", dup323); - -var msg30810 = msg("28724", dup321); - -var msg30811 = msg("28725", dup309); - -var msg30812 = msg("28726", dup309); - -var msg30813 = msg("28727", dup309); - -var msg30814 = msg("28728", dup311); - -var msg30815 = msg("28729", dup311); - -var msg30816 = msg("28730", dup311); - -var msg30817 = msg("28731", dup311); - -var msg30818 = msg("28732", dup311); - -var msg30819 = msg("28733", dup311); - -var msg30820 = msg("28734", dup311); - -var msg30821 = msg("28735", dup311); - -var msg30822 = msg("28736", dup311); - -var msg30823 = msg("28737", dup311); - -var msg30824 = msg("28738", dup311); - -var msg30825 = msg("28739", dup311); - -var msg30826 = msg("28740", dup311); - -var msg30827 = msg("28741", dup311); - -var msg30828 = msg("28742", dup311); - -var msg30829 = msg("28743", dup311); - -var msg30830 = msg("28744", dup309); - -var msg30831 = msg("28745", dup309); - -var msg30832 = msg("28746", dup311); - -var msg30833 = msg("28747", dup311); - -var msg30834 = msg("28748", dup311); - -var msg30835 = msg("28749", dup314); - -var msg30836 = msg("28750", dup314); - -var msg30837 = msg("28751", dup314); - -var msg30838 = msg("28752", dup314); - -var msg30839 = msg("28753", dup314); - -var msg30840 = msg("28754", dup314); - -var msg30841 = msg("28755", dup314); - -var msg30842 = msg("28756", dup314); - -var msg30843 = msg("28757", dup314); - -var msg30844 = msg("28758", dup314); - -var msg30845 = msg("28759", dup314); - -var msg30846 = msg("28760", dup314); - -var msg30847 = msg("28761", dup314); - -var msg30848 = msg("28762", dup314); - -var msg30849 = msg("28763", dup314); - -var msg30850 = msg("28764", dup314); - -var msg30851 = msg("28765", dup314); - -var msg30852 = msg("28766", dup314); - -var msg30853 = msg("28767", dup314); - -var msg30854 = msg("28768", dup314); - -var msg30855 = msg("28769", dup314); - -var msg30856 = msg("28770", dup314); - -var msg30857 = msg("28771", dup314); - -var msg30858 = msg("28772", dup314); - -var msg30859 = msg("28773", dup314); - -var msg30860 = msg("28774", dup314); - -var msg30861 = msg("28775", dup314); - -var msg30862 = msg("28776", dup314); - -var msg30863 = msg("28777", dup314); - -var msg30864 = msg("28778", dup314); - -var msg30865 = msg("28779", dup314); - -var msg30866 = msg("28780", dup314); - -var msg30867 = msg("28781", dup314); - -var msg30868 = msg("28782", dup314); - -var msg30869 = msg("28783", dup314); - -var msg30870 = msg("28784", dup314); - -var msg30871 = msg("28785", dup314); - -var msg30872 = msg("28786", dup314); - -var msg30873 = msg("28787", dup314); - -var msg30874 = msg("28788", dup314); - -var msg30875 = msg("28789", dup314); - -var msg30876 = msg("28790", dup311); - -var msg30877 = msg("28791", dup314); - -var msg30878 = msg("28792", dup314); - -var msg30879 = msg("28793", dup314); - -var msg30880 = msg("28794", dup309); - -var msg30881 = msg("28795", dup311); - -var msg30882 = msg("28796", dup311); - -var msg30883 = msg("28797", dup307); - -var msg30884 = msg("28798", dup307); - -var msg30885 = msg("28799", dup321); - -var msg30886 = msg("28800", dup321); - -var msg30887 = msg("28801", dup321); - -var msg30888 = msg("28802", dup321); - -var msg30889 = msg("28803", dup321); - -var msg30890 = msg("28804", dup321); - -var msg30891 = msg("28805", dup321); - -var msg30892 = msg("28806", dup321); - -var msg30893 = msg("28807", dup321); - -var msg30894 = msg("28808", dup321); - -var msg30895 = msg("28809", dup321); - -var msg30896 = msg("28810", dup321); - -var msg30897 = msg("28811", dup311); - -var msg30898 = msg("28812", dup311); - -var msg30899 = msg("28813", dup321); - -var msg30900 = msg("28814", dup321); - -var msg30901 = msg("28815", dup321); - -var msg30902 = msg("28816", dup321); - -var msg30903 = msg("28817", dup321); - -var msg30904 = msg("28818", dup307); - -var msg30905 = msg("28819", dup307); - -var msg30906 = msg("28820", dup323); - -var msg30907 = msg("28821", dup314); - -var msg30908 = msg("28822", dup314); - -var msg30909 = msg("28823", dup314); - -var msg30910 = msg("28824", dup314); - -var msg30911 = msg("28825", dup314); - -var msg30912 = msg("28826", dup314); - -var msg30913 = msg("28827", dup314); - -var msg30914 = msg("28828", dup321); - -var msg30915 = msg("28829", dup321); - -var msg30916 = msg("28830", dup321); - -var msg30917 = msg("28831", dup311); - -var msg30918 = msg("28832", dup311); - -var msg30919 = msg("28833", dup307); - -var msg30920 = msg("28834", dup307); - -var msg30921 = msg("28835", dup307); - -var msg30922 = msg("28836", dup311); - -var msg30923 = msg("28837", dup311); - -var msg30924 = msg("28838", dup311); - -var msg30925 = msg("28839", dup307); - -var msg30926 = msg("28840", dup307); - -var msg30927 = msg("28841", dup307); - -var msg30928 = msg("28842", dup311); - -var msg30929 = msg("28843", dup323); - -var msg30930 = msg("28844", dup323); - -var msg30931 = msg("28845", dup323); - -var msg30932 = msg("28846", dup323); - -var msg30933 = msg("28847", dup323); - -var msg30934 = msg("28848", dup323); - -var msg30935 = msg("28849", dup308); - -var msg30936 = msg("28850", dup311); - -var msg30937 = msg("28851", dup311); - -var msg30938 = msg("28852", dup325); - -var msg30939 = msg("28853", dup323); - -var msg30940 = msg("28854", dup311); - -var msg30941 = msg("28855", dup311); - -var msg30942 = msg("28856", dup321); - -var msg30943 = msg("28857", dup321); - -var msg30944 = msg("28858", dup321); - -var msg30945 = msg("28859", dup325); - -var msg30946 = msg("28860", dup325); - -var msg30947 = msg("28861", dup321); - -var msg30948 = msg("28862", dup325); - -var msg30949 = msg("28863", dup325); - -var msg30950 = msg("28864", dup321); - -var msg30951 = msg("28865", dup325); - -var msg30952 = msg("28866", dup325); - -var msg30953 = msg("28867", dup314); - -var msg30954 = msg("28868", dup314); - -var msg30955 = msg("28869", dup314); - -var msg30956 = msg("28870", dup314); - -var msg30957 = msg("28871", dup314); - -var msg30958 = msg("28872", dup314); - -var msg30959 = msg("28873", dup325); - -var msg30960 = msg("28874", dup325); - -var msg30961 = msg("28875", dup325); - -var msg30962 = msg("28876", dup325); - -var msg30963 = msg("28877", dup325); - -var msg30964 = msg("28878", dup325); - -var msg30965 = msg("28879", dup321); - -var msg30966 = msg("28880", dup311); - -var msg30967 = msg("28881", dup325); - -var msg30968 = msg("28882", dup325); - -var msg30969 = msg("28883", dup321); - -var msg30970 = msg("28884", dup321); - -var msg30971 = msg("28885", dup321); - -var msg30972 = msg("28886", dup321); - -var msg30973 = msg("28887", dup311); - -var msg30974 = msg("28888", dup311); - -var msg30975 = msg("28889", dup311); - -var msg30976 = msg("28890", dup311); - -var msg30977 = msg("28891", dup321); - -var msg30978 = msg("28892", dup321); - -var msg30979 = msg("28893", dup314); - -var msg30980 = msg("28894", dup314); - -var msg30981 = msg("28895", dup314); - -var msg30982 = msg("28896", dup314); - -var msg30983 = msg("28897", dup314); - -var msg30984 = msg("28898", dup314); - -var msg30985 = msg("28899", dup314); - -var msg30986 = msg("28900", dup314); - -var msg30987 = msg("28901", dup314); - -var msg30988 = msg("28902", dup309); - -var msg30989 = msg("28903", dup309); - -var msg30990 = msg("28904", dup309); - -var msg30991 = msg("28905", dup309); - -var msg30992 = msg("28906", dup309); - -var msg30993 = msg("28907", dup309); - -var msg30994 = msg("28908", dup322); - -var msg30995 = msg("28909", dup314); - -var msg30996 = msg("28910", dup311); - -var msg30997 = msg("28911", dup311); - -var msg30998 = msg("28912", dup314); - -var msg30999 = msg("28913", dup321); - -var msg31000 = msg("28914", dup321); - -var msg31001 = msg("28915", dup309); - -var msg31002 = msg("28916", dup309); - -var msg31003 = msg("28917", dup314); - -var msg31004 = msg("28918", dup321); - -var msg31005 = msg("28919", dup321); - -var msg31006 = msg("28920", dup311); - -var msg31007 = msg("28921", dup311); - -var msg31008 = msg("28922", dup311); - -var msg31009 = msg("28923", dup311); - -var msg31010 = msg("28924", dup311); - -var msg31011 = msg("28925", dup311); - -var msg31012 = msg("28926", dup309); - -var msg31013 = msg("28927", dup309); - -var msg31014 = msg("28928", dup321); - -var msg31015 = msg("28929", dup321); - -var msg31016 = msg("28930", dup321); - -var msg31017 = msg("28931", dup325); - -var msg31018 = msg("28932", dup325); - -var msg31019 = msg("28933", dup321); - -var msg31020 = msg("28934", dup321); - -var msg31021 = msg("28935", dup321); - -var msg31022 = msg("28936", dup314); - -var msg31023 = msg("28937", dup311); - -var msg31024 = msg("28938", dup321); - -var msg31025 = msg("28939", dup321); - -var msg31026 = msg("28940", dup325); - -var msg31027 = msg("28941", dup311); - -var msg31028 = msg("28942", dup314); - -var msg31029 = msg("28943", dup314); - -var msg31030 = msg("28944", dup314); - -var msg31031 = msg("28945", dup314); - -var msg31032 = msg("28946", dup311); - -var msg31033 = msg("28947", dup321); - -var msg31034 = msg("28948", dup321); - -var msg31035 = msg("28949", dup321); - -var msg31036 = msg("28950", dup325); - -var msg31037 = msg("28951", dup325); - -var msg31038 = msg("28952", dup311); - -var msg31039 = msg("28953", dup311); - -var msg31040 = msg("28954", dup321); - -var msg31041 = msg("28955", dup310); - -var msg31042 = msg("28956", dup314); - -var msg31043 = msg("28957", dup314); - -var msg31044 = msg("28958", dup321); - -var msg31045 = msg("28959", dup321); - -var msg31046 = msg("28960", dup321); - -var msg31047 = msg("28961", dup309); - -var msg31048 = msg("28962", dup309); - -var msg31049 = msg("28963", dup311); - -var msg31050 = msg("28964", dup307); - -var msg31051 = msg("28965", dup307); - -var msg31052 = msg("28966", dup311); - -var msg31053 = msg("28967", dup311); - -var msg31054 = msg("28968", dup311); - -var msg31055 = msg("28969", dup311); - -var msg31056 = msg("28970", dup314); - -var msg31057 = msg("28971", dup314); - -var msg31058 = msg("28972", dup311); - -var msg31059 = msg("28973", dup311); - -var msg31060 = msg("28974", dup311); - -var msg31061 = msg("28975", dup311); - -var msg31062 = msg("28976", dup321); - -var msg31063 = msg("28977", dup321); - -var msg31064 = msg("28978", dup321); - -var msg31065 = msg("28979", dup321); - -var msg31066 = msg("28980", dup321); - -var msg31067 = msg("28981", dup321); - -var msg31068 = msg("28982", dup321); - -var msg31069 = msg("28983", dup311); - -var msg31070 = msg("28984", dup311); - -var msg31071 = msg("28985", dup311); - -var msg31072 = msg("28986", dup321); - -var msg31073 = msg("28987", dup321); - -var msg31074 = msg("28988", dup321); - -var msg31075 = msg("28989", dup321); - -var msg31076 = msg("28990", dup321); - -var msg31077 = msg("28991", dup333); - -var msg31078 = msg("28992", dup321); - -var msg31079 = msg("28993", dup323); - -var msg31080 = msg("28994", dup321); - -var msg31081 = msg("28995", dup321); - -var msg31082 = msg("28996", dup321); - -var msg31083 = msg("28997", dup325); - -var msg31084 = msg("28998", dup314); - -var msg31085 = msg("28999", dup314); - -var msg31086 = msg("29000", dup314); - -var msg31087 = msg("29001", dup311); - -var msg31088 = msg("29002", dup311); - -var msg31089 = msg("29003", dup311); - -var msg31090 = msg("29004", dup311); - -var msg31091 = msg("29005", dup309); - -var msg31092 = msg("29006", dup314); - -var msg31093 = msg("29007", dup314); - -var msg31094 = msg("29008", dup314); - -var msg31095 = msg("29009", dup309); - -var msg31096 = msg("29010", dup309); - -var msg31097 = msg("29011", dup321); - -var msg31098 = msg("29012", dup321); - -var msg31099 = msg("29013", dup321); - -var msg31100 = msg("29014", dup309); - -var msg31101 = msg("29015", dup321); - -var msg31102 = msg("29016", dup321); - -var msg31103 = msg("29017", dup314); - -var msg31104 = msg("29018", dup322); - -var msg31105 = msg("29019", dup314); - -var msg31106 = msg("29020", dup321); - -var msg31107 = msg("29021", dup321); - -var msg31108 = msg("29022", dup321); - -var msg31109 = msg("29023", dup311); - -var msg31110 = msg("29024", dup311); - -var msg31111 = msg("29025", dup311); - -var msg31112 = msg("29026", dup321); - -var msg31113 = msg("29027", dup311); - -var msg31114 = msg("29028", dup328); - -var msg31115 = msg("29029", dup328); - -var msg31116 = msg("29030", dup321); - -var msg31117 = msg("29031", dup321); - -var msg31118 = msg("29032", dup309); - -var msg31119 = msg("29033", dup309); - -var msg31120 = msg("29034", dup325); - -var msg31121 = msg("29035", dup325); - -var msg31122 = msg("29036", dup311); - -var msg31123 = msg("29037", dup325); - -var msg31124 = msg("29038", dup321); - -var msg31125 = msg("29039", dup321); - -var msg31126 = msg("29040", dup311); - -var msg31127 = msg("29041", dup314); - -var msg31128 = msg("29042", dup314); - -var msg31129 = msg("29043", dup321); - -var msg31130 = msg("29044", dup321); - -var msg31131 = msg("29045", dup321); - -var msg31132 = msg("29046", dup325); - -var msg31133 = msg("29047", dup311); - -var msg31134 = msg("29048", dup311); - -var msg31135 = msg("29049", dup311); - -var msg31136 = msg("29050", dup311); - -var msg31137 = msg("29051", dup311); - -var msg31138 = msg("29052", dup311); - -var msg31139 = msg("29053", dup311); - -var msg31140 = msg("29054", dup311); - -var msg31141 = msg("29055", dup321); - -var msg31142 = msg("29056", dup321); - -var msg31143 = msg("29057", dup321); - -var msg31144 = msg("29058", dup321); - -var msg31145 = msg("29059", dup314); - -var msg31146 = msg("29060", dup314); - -var msg31147 = msg("29061", dup311); - -var msg31148 = msg("29062", dup314); - -var msg31149 = msg("29063", dup314); - -var msg31150 = msg("29064", dup314); - -var msg31151 = msg("29065", dup314); - -var msg31152 = msg("29066", dup311); - -var msg31153 = msg("29067", dup321); - -var msg31154 = msg("29068", dup321); - -var msg31155 = msg("29069", dup321); - -var msg31156 = msg("29070", dup321); - -var msg31157 = msg("29071", dup321); - -var msg31158 = msg("29072", dup321); - -var msg31159 = msg("29073", dup321); - -var msg31160 = msg("29074", dup321); - -var msg31161 = msg("29075", dup321); - -var msg31162 = msg("29076", dup321); - -var msg31163 = msg("29077", dup321); - -var msg31164 = msg("29078", dup321); - -var msg31165 = msg("29079", dup321); - -var msg31166 = msg("29080", dup333); - -var msg31167 = msg("29081", dup321); - -var msg31168 = msg("29082", dup321); - -var msg31169 = msg("29083", dup321); - -var msg31170 = msg("29084", dup321); - -var msg31171 = msg("29085", dup321); - -var msg31172 = msg("29086", dup321); - -var msg31173 = msg("29087", dup321); - -var msg31174 = msg("29088", dup321); - -var msg31175 = msg("29089", dup321); - -var msg31176 = msg("29090", dup311); - -var msg31177 = msg("29091", dup321); - -var msg31178 = msg("29092", dup314); - -var msg31179 = msg("29093", dup321); - -var msg31180 = msg("29094", dup321); - -var msg31181 = msg("29095", dup333); - -var msg31182 = msg("29096", dup333); - -var msg31183 = msg("29097", dup314); - -var msg31184 = msg("29098", dup314); - -var msg31185 = msg("29099", dup314); - -var msg31186 = msg("29100", dup314); - -var msg31187 = msg("29101", dup314); - -var msg31188 = msg("29102", dup314); - -var msg31189 = msg("29103", dup321); - -var msg31190 = msg("29104", dup321); - -var msg31191 = msg("29105", dup314); - -var msg31192 = msg("29106", dup321); - -var msg31193 = msg("29107", dup321); - -var msg31194 = msg("29108", dup321); - -var msg31195 = msg("29109", dup321); - -var msg31196 = msg("29110", dup314); - -var msg31197 = msg("29111", dup321); - -var msg31198 = msg("29112", dup321); - -var msg31199 = msg("29113", dup321); - -var msg31200 = msg("29114", dup321); - -var msg31201 = msg("29115", dup321); - -var msg31202 = msg("29116", dup321); - -var msg31203 = msg("29117", dup321); - -var msg31204 = msg("29118", dup314); - -var msg31205 = msg("29119", dup321); - -var msg31206 = msg("29120", dup321); - -var msg31207 = msg("29121", dup321); - -var msg31208 = msg("29122", dup321); - -var msg31209 = msg("29123", dup321); - -var msg31210 = msg("29124", dup321); - -var msg31211 = msg("29125", dup321); - -var msg31212 = msg("29126", dup321); - -var msg31213 = msg("29127", dup321); - -var msg31214 = msg("29128", dup311); - -var msg31215 = msg("29129", dup311); - -var msg31216 = msg("29130", dup311); - -var msg31217 = msg("29131", dup311); - -var msg31218 = msg("29132", dup321); - -var msg31219 = msg("29133", dup321); - -var msg31220 = msg("29134", dup321); - -var msg31221 = msg("29135", dup324); - -var msg31222 = msg("29136", dup321); - -var msg31223 = msg("29137", dup321); - -var msg31224 = msg("29138", dup321); - -var msg31225 = msg("29139", dup325); - -var msg31226 = msg("29140", dup321); - -var msg31227 = msg("29141", dup314); - -var msg31228 = msg("29142", dup314); - -var msg31229 = msg("29143", dup325); - -var msg31230 = msg("29144", dup321); - -var msg31231 = msg("29145", dup321); - -var msg31232 = msg("29146", dup321); - -var msg31233 = msg("29147", dup321); - -var msg31234 = msg("29148", dup321); - -var msg31235 = msg("29149", dup321); - -var msg31236 = msg("29150", dup311); - -var msg31237 = msg("29151", dup321); - -var msg31238 = msg("29152", dup321); - -var msg31239 = msg("29153", dup321); - -var msg31240 = msg("29154", dup321); - -var msg31241 = msg("29155", dup321); - -var msg31242 = msg("29156", dup321); - -var msg31243 = msg("29157", dup311); - -var msg31244 = msg("29158", dup311); - -var msg31245 = msg("29159", dup311); - -var msg31246 = msg("29160", dup311); - -var msg31247 = msg("29161", dup321); - -var msg31248 = msg("29162", dup314); - -var msg31249 = msg("29163", dup311); - -var msg31250 = msg("29164", dup311); - -var msg31251 = msg("29165", dup311); - -var msg31252 = msg("29166", dup311); - -var msg31253 = msg("29167", dup311); - -var msg31254 = msg("29168", dup311); - -var msg31255 = msg("29169", dup311); - -var msg31256 = msg("29170", dup314); - -var msg31257 = msg("29171", dup321); - -var msg31258 = msg("29172", dup321); - -var msg31259 = msg("29173", dup321); - -var msg31260 = msg("29174", dup325); - -var msg31261 = msg("29175", dup321); - -var msg31262 = msg("29176", dup321); - -var msg31263 = msg("29177", dup321); - -var msg31264 = msg("29178", dup321); - -var msg31265 = msg("29179", dup321); - -var msg31266 = msg("29180", dup325); - -var msg31267 = msg("29181", dup321); - -var msg31268 = msg("29182", dup309); - -var msg31269 = msg("29183", dup309); - -var msg31270 = msg("29184", dup309); - -var msg31271 = msg("29185", dup309); - -var msg31272 = msg("29186", dup311); - -var msg31273 = msg("29187", dup311); - -var msg31274 = msg("29188", dup311); - -var msg31275 = msg("29189", dup311); - -var msg31276 = msg("29190", dup307); - -var msg31277 = msg("29191", dup311); - -var msg31278 = msg("29192", dup311); - -var msg31279 = msg("29193", dup311); - -var msg31280 = msg("29194", dup309); - -var msg31281 = msg("29195", dup309); - -var msg31282 = msg("29196", dup309); - -var msg31283 = msg("29197", dup309); - -var msg31284 = msg("29198", dup309); - -var msg31285 = msg("29199", dup309); - -var msg31286 = msg("29200", dup314); - -var msg31287 = msg("29201", dup309); - -var msg31288 = msg("29202", dup309); - -var msg31289 = msg("29203", dup314); - -var msg31290 = msg("29204", dup314); - -var msg31291 = msg("29205", dup314); - -var msg31292 = msg("29206", dup314); - -var msg31293 = msg("29207", dup309); - -var msg31294 = msg("29208", dup309); - -var msg31295 = msg("29209", dup309); - -var msg31296 = msg("29210", dup309); - -var msg31297 = msg("29211", dup309); - -var msg31298 = msg("29212", dup309); - -var msg31299 = msg("29213", dup314); - -var msg31300 = msg("29214", dup311); - -var msg31301 = msg("29215", dup309); - -var msg31302 = msg("29216", dup321); - -var msg31303 = msg("29217", dup321); - -var msg31304 = msg("29218", dup311); - -var msg31305 = msg("29219", dup311); - -var msg31306 = msg("29220", dup321); - -var msg31307 = msg("29221", dup325); - -var msg31308 = msg("29222", dup325); - -var msg31309 = msg("29223", dup325); - -var msg31310 = msg("29224", dup314); - -var msg31311 = msg("29225", dup314); - -var msg31312 = msg("29226", dup325); - -var msg31313 = msg("29227", dup325); - -var msg31314 = msg("29228", dup325); - -var msg31315 = msg("29229", dup325); - -var msg31316 = msg("29230", dup325); - -var msg31317 = msg("29231", dup325); - -var msg31318 = msg("29232", dup325); - -var msg31319 = msg("29233", dup325); - -var msg31320 = msg("29234", dup325); - -var msg31321 = msg("29235", dup325); - -var msg31322 = msg("29236", dup325); - -var msg31323 = msg("29237", dup325); - -var msg31324 = msg("29238", dup325); - -var msg31325 = msg("29239", dup325); - -var msg31326 = msg("29240", dup325); - -var msg31327 = msg("29241", dup325); - -var msg31328 = msg("29242", dup325); - -var msg31329 = msg("29243", dup325); - -var msg31330 = msg("29244", dup325); - -var msg31331 = msg("29245", dup325); - -var msg31332 = msg("29246", dup325); - -var msg31333 = msg("29247", dup325); - -var msg31334 = msg("29248", dup325); - -var msg31335 = msg("29249", dup325); - -var msg31336 = msg("29250", dup325); - -var msg31337 = msg("29251", dup325); - -var msg31338 = msg("29252", dup325); - -var msg31339 = msg("29253", dup325); - -var msg31340 = msg("29254", dup325); - -var msg31341 = msg("29255", dup325); - -var msg31342 = msg("29256", dup325); - -var msg31343 = msg("29257", dup325); - -var msg31344 = msg("29258", dup314); - -var msg31345 = msg("29259", dup321); - -var msg31346 = msg("29260", dup321); - -var msg31347 = msg("29261", dup321); - -var msg31348 = msg("29262", dup321); - -var msg31349 = msg("29263", dup321); - -var msg31350 = msg("29264", dup309); - -var msg31351 = msg("29265", dup311); - -var msg31352 = msg("29266", dup314); - -var msg31353 = msg("29267", dup311); - -var msg31354 = msg("29268", dup309); - -var msg31355 = msg("29269", dup309); - -var msg31356 = msg("29270", dup311); - -var msg31357 = msg("29271", dup311); - -var msg31358 = msg("29272", dup311); - -var msg31359 = msg("29273", dup311); - -var msg31360 = msg("29274", dup314); - -var msg31361 = msg("29275", dup314); - -var msg31362 = msg("29276", dup314); - -var msg31363 = msg("29277", dup309); - -var msg31364 = msg("29278", dup309); - -var msg31365 = msg("29279", dup309); - -var msg31366 = msg("29280", dup309); - -var msg31367 = msg("29281", dup311); - -var msg31368 = msg("29282", dup311); - -var msg31369 = msg("29283", dup311); - -var msg31370 = msg("29284", dup311); - -var msg31371 = msg("29285", dup311); - -var msg31372 = msg("29286", dup311); - -var msg31373 = msg("29287", dup311); - -var msg31374 = msg("29288", dup311); - -var msg31375 = msg("29289", dup321); - -var msg31376 = msg("29290", dup321); - -var msg31377 = msg("29291", dup321); - -var msg31378 = msg("29292", dup321); - -var msg31379 = msg("29293", dup321); - -var msg31380 = msg("29294", dup321); - -var msg31381 = msg("29295", dup321); - -var msg31382 = msg("29296", dup314); - -var msg31383 = msg("29297", dup314); - -var msg31384 = msg("29298", dup321); - -var msg31385 = msg("29299", dup321); - -var msg31386 = msg("29300", dup321); - -var msg31387 = msg("29301", dup321); - -var msg31388 = msg("29302", dup321); - -var msg31389 = msg("29303", dup321); - -var msg31390 = msg("29304", dup321); - -var msg31391 = msg("29305", dup321); - -var msg31392 = msg("29306", dup321); - -var msg31393 = msg("29307", dup321); - -var msg31394 = msg("29313", dup321); - -var msg31395 = msg("29314", dup336); - -var msg31396 = msg("29315", dup336); - -var msg31397 = msg("29316", dup336); - -var msg31398 = msg("29317", dup314); - -var msg31399 = msg("29318", dup314); - -var msg31400 = msg("29319", dup314); - -var msg31401 = msg("29320", dup314); - -var msg31402 = msg("29321", dup314); - -var msg31403 = msg("29322", dup314); - -var msg31404 = msg("29323", dup329); - -var msg31405 = msg("29324", dup321); - -var msg31406 = msg("29325", dup321); - -var msg31407 = msg("29326", dup309); - -var msg31408 = msg("29327", dup309); - -var msg31409 = msg("29328", dup309); - -var msg31410 = msg("29329", dup309); - -var msg31411 = msg("29330", dup321); - -var msg31412 = msg("29331", dup321); - -var msg31413 = msg("29332", dup321); - -var msg31414 = msg("29333", dup321); - -var msg31415 = msg("29334", dup321); - -var msg31416 = msg("29335", dup321); - -var msg31417 = msg("29336", dup321); - -var msg31418 = msg("29337", dup321); - -var msg31419 = msg("29338", dup321); - -var msg31420 = msg("29339", dup321); - -var msg31421 = msg("29340", dup321); - -var msg31422 = msg("29341", dup325); - -var msg31423 = msg("29342", dup321); - -var msg31424 = msg("29343", dup321); - -var msg31425 = msg("29344", dup321); - -var msg31426 = msg("29345", dup321); - -var msg31427 = msg("29346", dup311); - -var msg31428 = msg("29347", dup321); - -var msg31429 = msg("29348", dup321); - -var msg31430 = msg("29349", dup321); - -var msg31431 = msg("29350", dup321); - -var msg31432 = msg("29351", dup321); - -var msg31433 = msg("29352", dup321); - -var msg31434 = msg("29353", dup321); - -var msg31435 = msg("29354", dup336); - -var msg31436 = msg("29355", dup321); - -var msg31437 = msg("29356", dup321); - -var all57 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup123, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg31438 = msg("29357", all57); - -var msg31439 = msg("29358", dup325); - -var msg31440 = msg("29359", dup321); - -var msg31441 = msg("29360", dup311); - -var msg31442 = msg("29361", dup311); - -var msg31443 = msg("29362", dup324); - -var msg31444 = msg("29363", dup321); - -var msg31445 = msg("29364", dup321); - -var msg31446 = msg("29365", dup321); - -var msg31447 = msg("29366", dup321); - -var msg31448 = msg("29367", dup321); - -var msg31449 = msg("29368", dup321); - -var msg31450 = msg("29369", dup321); - -var msg31451 = msg("29370", dup321); - -var msg31452 = msg("29371", dup325); - -var msg31453 = msg("29372", dup321); - -var msg31454 = msg("29373", dup321); - -var msg31455 = msg("29374", dup324); - -var msg31456 = msg("29375", dup324); - -var msg31457 = msg("29376", dup321); - -var msg31458 = msg("29377", dup321); - -var msg31459 = msg("29378", dup321); - -var msg31460 = msg("29379", dup321); - -var msg31461 = msg("29380", dup321); - -var msg31462 = msg("29381", dup329); - -var msg31463 = msg("29382", dup329); - -var msg31464 = msg("29383", dup329); - -var msg31465 = msg("29384", dup314); - -var msg31466 = msg("29385", dup314); - -var msg31467 = msg("29386", dup314); - -var msg31468 = msg("29387", dup311); - -var msg31469 = msg("29388", dup321); - -var msg31470 = msg("29389", dup321); - -var msg31471 = msg("29390", dup314); - -var msg31472 = msg("29391", dup314); - -var msg31473 = msg("29392", dup314); - -var msg31474 = msg("29393", dup324); - -var msg31475 = msg("29394", dup309); - -var msg31476 = msg("29395", dup321); - -var msg31477 = msg("29396", dup311); - -var msg31478 = msg("29397", dup311); - -var msg31479 = msg("29398", dup311); - -var msg31480 = msg("29399", dup311); - -var msg31481 = msg("29400", dup314); - -var msg31482 = msg("29401", dup311); - -var msg31483 = msg("29402", dup311); - -var msg31484 = msg("29403", dup311); - -var msg31485 = msg("29404", dup309); - -var msg31486 = msg("29405", dup314); - -var msg31487 = msg("29406", dup314); - -var msg31488 = msg("29407", dup314); - -var msg31489 = msg("29408", dup321); - -var msg31490 = msg("29409", dup323); - -var msg31491 = msg("29410", dup323); - -var msg31492 = msg("29411", dup311); - -var msg31493 = msg("29412", dup311); - -var msg31494 = msg("29413", dup311); - -var msg31495 = msg("29414", dup311); - -var msg31496 = msg("29415", dup321); - -var msg31497 = msg("29416", dup321); - -var msg31498 = msg("29417", dup321); - -var msg31499 = msg("29418", dup314); - -var msg31500 = msg("29419", dup314); - -var msg31501 = msg("29420", dup333); - -var msg31502 = msg("29421", dup333); - -var msg31503 = msg("29422", dup321); - -var msg31504 = msg("29423", dup324); - -var msg31505 = msg("29424", dup321); - -var msg31506 = msg("29425", dup321); - -var msg31507 = msg("29426", dup321); - -var msg31508 = msg("29427", dup321); - -var msg31509 = msg("29428", dup321); - -var msg31510 = msg("29429", dup321); - -var msg31511 = msg("29430", dup321); - -var msg31512 = msg("29431", dup325); - -var msg31513 = msg("29432", dup321); - -var msg31514 = msg("29433", dup314); - -var msg31515 = msg("29434", dup309); - -var msg31516 = msg("29435", dup311); - -var msg31517 = msg("29436", dup311); - -var msg31518 = msg("29437", dup314); - -var msg31519 = msg("29438", dup314); - -var msg31520 = msg("29439", dup314); - -var msg31521 = msg("29440", dup321); - -var msg31522 = msg("29442", dup311); - -var msg31523 = msg("29443", dup311); - -var msg31524 = msg("29444", dup311); - -var msg31525 = msg("29445", dup311); - -var msg31526 = msg("29446", dup311); - -var msg31527 = msg("29447", dup307); - -var msg31528 = msg("29448", dup311); - -var msg31529 = msg("29449", dup311); - -var msg31530 = msg("29450", dup311); - -var msg31531 = msg("29451", dup311); - -var msg31532 = msg("29452", dup311); - -var msg31533 = msg("29453", dup311); - -var msg31534 = msg("29454", dup334); - -var msg31535 = msg("29455", dup334); - -var msg31536 = msg("29456", dup334); - -var msg31537 = msg("29457", dup334); - -var msg31538 = msg("29458", dup321); - -var msg31539 = msg("29459", dup321); - -var msg31540 = msg("29460", dup321); - -var msg31541 = msg("29461", dup321); - -var msg31542 = msg("29462", dup325); - -var msg31543 = msg("29463", dup321); - -var msg31544 = msg("29464", dup321); - -var msg31545 = msg("29465", dup309); - -var msg31546 = msg("29466", dup309); - -var msg31547 = msg("29467", dup309); - -var msg31548 = msg("29468", dup309); - -var msg31549 = msg("29469", dup321); - -var msg31550 = msg("29470", dup321); - -var msg31551 = msg("29471", dup321); - -var msg31552 = msg("29472", dup321); - -var msg31553 = msg("29473", dup321); - -var msg31554 = msg("29474", dup321); - -var msg31555 = msg("29475", dup321); - -var msg31556 = msg("29476", dup321); - -var msg31557 = msg("29477", dup321); - -var msg31558 = msg("29478", dup321); - -var msg31559 = msg("29479", dup321); - -var msg31560 = msg("29480", dup321); - -var msg31561 = msg("29481", dup321); - -var msg31562 = msg("29482", dup321); - -var msg31563 = msg("29483", dup321); - -var msg31564 = msg("29484", dup321); - -var msg31565 = msg("29485", dup314); - -var msg31566 = msg("29486", dup314); - -var msg31567 = msg("29487", dup314); - -var msg31568 = msg("29488", dup314); - -var msg31569 = msg("29489", dup321); - -var msg31570 = msg("29490", dup309); - -var msg31571 = msg("29491", dup309); - -var msg31572 = msg("29492", dup321); - -var msg31573 = msg("29493", dup321); - -var msg31574 = msg("29494", dup321); - -var msg31575 = msg("29495", dup321); - -var msg31576 = msg("29496", dup321); - -var msg31577 = msg("29497", dup321); - -var msg31578 = msg("29498", dup314); - -var msg31579 = msg("29499", dup314); - -var msg31580 = msg("29500", dup321); - -var msg31581 = msg("29501", dup311); - -var msg31582 = msg("29502", dup309); - -var msg31583 = msg("29503", dup314); - -var msg31584 = msg("29504", dup314); - -var msg31585 = msg("29505", dup311); - -var msg31586 = msg("29506", dup314); - -var msg31587 = msg("29507", dup314); - -var msg31588 = msg("29508", dup314); - -var msg31589 = msg("29509", dup323); - -var msg31590 = msg("29510", dup323); - -var msg31591 = msg("29511", dup309); - -var msg31592 = msg("29512", dup314); - -var msg31593 = msg("29513", dup309); - -var msg31594 = msg("29514", dup314); - -var msg31595 = msg("29515", dup309); - -var msg31596 = msg("29516", dup314); - -var msg31597 = msg("29517", dup314); - -var msg31598 = msg("29518", dup311); - -var msg31599 = msg("29519", dup314); - -var msg31600 = msg("29520", dup311); - -var msg31601 = msg("29521", dup311); - -var msg31602 = msg("29522", dup307); - -var msg31603 = msg("29523", dup309); - -var msg31604 = msg("29524", dup314); - -var msg31605 = msg("29525", dup314); - -var msg31606 = msg("29526", dup309); - -var msg31607 = msg("29527", dup309); - -var msg31608 = msg("29528", dup309); - -var msg31609 = msg("29529", dup309); - -var msg31610 = msg("29530", dup309); - -var msg31611 = msg("29531", dup309); - -var msg31612 = msg("29532", dup309); - -var msg31613 = msg("29533", dup314); - -var msg31614 = msg("29534", dup314); - -var msg31615 = msg("29535", dup307); - -var msg31616 = msg("29536", dup306); - -var msg31617 = msg("29537", dup314); - -var msg31618 = msg("29538", dup314); - -var msg31619 = msg("29539", dup309); - -var msg31620 = msg("29540", dup309); - -var msg31621 = msg("29541", dup309); - -var msg31622 = msg("29542", dup309); - -var msg31623 = msg("29543", dup309); - -var msg31624 = msg("29544", dup309); - -var msg31625 = msg("29545", dup309); - -var msg31626 = msg("29546", dup309); - -var msg31627 = msg("29547", dup311); - -var msg31628 = msg("29548", dup311); - -var msg31629 = msg("29549", dup316); - -var msg31630 = msg("29550", dup321); - -var msg31631 = msg("29551", dup311); - -var msg31632 = msg("29552", dup311); - -var msg31633 = msg("29553", dup311); - -var msg31634 = msg("29554", dup311); - -var msg31635 = msg("29555", dup321); - -var msg31636 = msg("29556", dup321); - -var msg31637 = msg("29557", dup321); - -var msg31638 = msg("29558", dup321); - -var msg31639 = msg("29559", dup321); - -var msg31640 = msg("29560", dup321); - -var msg31641 = msg("29561", dup321); - -var msg31642 = msg("29562", dup321); - -var msg31643 = msg("29563", dup321); - -var msg31644 = msg("29564", dup321); - -var msg31645 = msg("29565", dup321); - -var msg31646 = msg("29566", dup321); - -var msg31647 = msg("29567", dup321); - -var msg31648 = msg("29568", dup321); - -var msg31649 = msg("29569", dup321); - -var msg31650 = msg("29570", dup309); - -var msg31651 = msg("29571", dup309); - -var msg31652 = msg("29572", dup309); - -var msg31653 = msg("29573", dup309); - -var msg31654 = msg("29574", dup309); - -var msg31655 = msg("29575", dup309); - -var msg31656 = msg("29576", dup309); - -var msg31657 = msg("29577", dup309); - -var msg31658 = msg("29578", dup329); - -var msg31659 = msg("29579", dup311); - -var msg31660 = msg("29580", dup311); - -var msg31661 = msg("29581", dup308); - -var msg31662 = msg("29582", dup311); - -var msg31663 = msg("29583", dup314); - -var msg31664 = msg("29584", dup322); - -var msg31665 = msg("29585", dup309); - -var msg31666 = msg("29586", dup309); - -var msg31667 = msg("29587", dup309); - -var msg31668 = msg("29588", dup309); - -var msg31669 = msg("29589", dup309); - -var msg31670 = msg("29590", dup309); - -var msg31671 = msg("29591", dup309); - -var msg31672 = msg("29592", dup311); - -var msg31673 = msg("29593", dup323); - -var msg31674 = msg("29594", dup323); - -var msg31675 = msg("29595", dup323); - -var msg31676 = msg("29596", dup311); - -var msg31677 = msg("29597", dup311); - -var msg31678 = msg("29598", dup323); - -var msg31679 = msg("29599", dup323); - -var msg31680 = msg("29600", dup323); - -var msg31681 = msg("29601", dup323); - -var msg31682 = msg("29602", dup311); - -var msg31683 = msg("29603", dup311); - -var msg31684 = msg("29604", dup324); - -var msg31685 = msg("29605", dup309); - -var msg31686 = msg("29606", dup309); - -var msg31687 = msg("29607", dup307); - -var msg31688 = msg("29608", dup322); - -var msg31689 = msg("29609", dup322); - -var msg31690 = msg("29610", dup309); - -var msg31691 = msg("29611", dup309); - -var msg31692 = msg("29612", dup314); - -var msg31693 = msg("29613", dup314); - -var msg31694 = msg("29614", dup314); - -var msg31695 = msg("29615", dup321); - -var msg31696 = msg("29616", dup321); - -var msg31697 = msg("29617", dup314); - -var msg31698 = msg("29618", dup314); - -var msg31699 = msg("29619", dup314); - -var msg31700 = msg("29620", dup309); - -var msg31701 = msg("29621", dup307); - -var msg31702 = msg("29622", dup311); - -var msg31703 = msg("29623", dup311); - -var msg31704 = msg("29624", dup309); - -var msg31705 = msg("29625", dup309); - -var msg31706 = msg("29626", dup307); - -var msg31707 = msg("29627", dup307); - -var msg31708 = msg("29628", dup307); - -var msg31709 = msg("29629", dup307); - -var msg31710 = msg("29630", dup311); - -var msg31711 = msg("29631", dup314); - -var msg31712 = msg("29632", dup314); - -var msg31713 = msg("29633", dup314); - -var msg31714 = msg("29634", dup314); - -var msg31715 = msg("29635", dup321); - -var msg31716 = msg("29636", dup321); - -var msg31717 = msg("29637", dup321); - -var msg31718 = msg("29638", dup321); - -var msg31719 = msg("29639", dup311); - -var msg31720 = msg("29640", dup309); - -var msg31721 = msg("29641", dup309); - -var msg31722 = msg("29642", dup309); - -var msg31723 = msg("29643", dup309); - -var msg31724 = msg("29644", dup321); - -var msg31725 = msg("29645", dup325); - -var msg31726 = msg("29646", dup311); - -var msg31727 = msg("29647", dup311); - -var msg31728 = msg("29648", dup311); - -var msg31729 = msg("29649", dup314); - -var msg31730 = msg("29650", dup325); - -var msg31731 = msg("29651", dup325); - -var msg31732 = msg("29652", dup325); - -var msg31733 = msg("29653", dup321); - -var msg31734 = msg("29654", dup321); - -var msg31735 = msg("29655", dup325); - -var msg31736 = msg("29656", dup321); - -var msg31737 = msg("29657", dup321); - -var msg31738 = msg("29658", dup321); - -var msg31739 = msg("29659", dup321); - -var msg31740 = msg("29660", dup324); - -var msg31741 = msg("29661", dup324); - -var msg31742 = msg("29662", dup333); - -var msg31743 = msg("29663", dup321); - -var msg31744 = msg("29664", dup321); - -var msg31745 = msg("29665", dup321); - -var msg31746 = msg("29666", dup321); - -var msg31747 = msg("29667", dup325); - -var msg31748 = msg("29668", dup325); - -var msg31749 = msg("29669", dup311); - -var msg31750 = msg("29670", dup321); - -var msg31751 = msg("29671", dup325); - -var msg31752 = msg("29672", dup325); - -var msg31753 = msg("29673", dup325); - -var msg31754 = msg("29674", dup325); - -var msg31755 = msg("29675", dup325); - -var msg31756 = msg("29676", dup325); - -var msg31757 = msg("29677", dup325); - -var msg31758 = msg("29678", dup325); - -var msg31759 = msg("29679", dup325); - -var msg31760 = msg("29680", dup314); - -var msg31761 = msg("29681", dup314); - -var msg31762 = msg("29682", dup314); - -var msg31763 = msg("29683", dup314); - -var msg31764 = msg("29684", dup314); - -var msg31765 = msg("29685", dup314); - -var msg31766 = msg("29686", dup314); - -var msg31767 = msg("29687", dup314); - -var msg31768 = msg("29688", dup314); - -var msg31769 = msg("29689", dup314); - -var msg31770 = msg("29690", dup314); - -var msg31771 = msg("29691", dup314); - -var msg31772 = msg("29692", dup314); - -var msg31773 = msg("29693", dup314); - -var msg31774 = msg("29694", dup314); - -var msg31775 = msg("29695", dup314); - -var msg31776 = msg("29696", dup314); - -var msg31777 = msg("29697", dup314); - -var msg31778 = msg("29698", dup314); - -var msg31779 = msg("29699", dup314); - -var msg31780 = msg("29700", dup314); - -var msg31781 = msg("29701", dup314); - -var msg31782 = msg("29702", dup314); - -var msg31783 = msg("29703", dup314); - -var msg31784 = msg("29704", dup314); - -var msg31785 = msg("29705", dup314); - -var msg31786 = msg("29706", dup325); - -var msg31787 = msg("29707", dup325); - -var msg31788 = msg("29708", dup325); - -var msg31789 = msg("29709", dup311); - -var msg31790 = msg("29710", dup311); - -var msg31791 = msg("29711", dup325); - -var msg31792 = msg("29712", dup325); - -var msg31793 = msg("29713", dup311); - -var msg31794 = msg("29714", dup311); - -var msg31795 = msg("29715", dup324); - -var msg31796 = msg("29716", dup311); - -var msg31797 = msg("29717", dup325); - -var msg31798 = msg("29718", dup325); - -var msg31799 = msg("29719", dup325); - -var msg31800 = msg("29720", dup325); - -var msg31801 = msg("29721", dup325); - -var msg31802 = msg("29722", dup325); - -var msg31803 = msg("29723", dup309); - -var msg31804 = msg("29724", dup309); - -var msg31805 = msg("29725", dup309); - -var msg31806 = msg("29726", dup309); - -var msg31807 = msg("29727", dup325); - -var msg31808 = msg("29728", dup325); - -var msg31809 = msg("29729", dup325); - -var msg31810 = msg("29730", dup325); - -var msg31811 = msg("29731", dup325); - -var msg31812 = msg("29732", dup325); - -var msg31813 = msg("29733", dup311); - -var msg31814 = msg("29734", dup311); - -var msg31815 = msg("29735", dup325); - -var msg31816 = msg("29736", dup325); - -var msg31817 = msg("29737", dup325); - -var msg31818 = msg("29738", dup325); - -var msg31819 = msg("29739", dup321); - -var msg31820 = msg("29740", dup321); - -var msg31821 = msg("29741", dup311); - -var msg31822 = msg("29742", dup311); - -var msg31823 = msg("29743", dup325); - -var msg31824 = msg("29744", dup325); - -var msg31825 = msg("29745", dup314); - -var msg31826 = msg("29746", dup314); - -var msg31827 = msg("29747", dup314); - -var msg31828 = msg("29748", dup314); - -var msg31829 = msg("29749", dup314); - -var msg31830 = msg("29750", dup330); - -var msg31831 = msg("29751", dup330); - -var msg31832 = msg("29752", dup330); - -var msg31833 = msg("29753", dup311); - -var msg31834 = msg("29754", dup311); - -var msg31835 = msg("29755", dup311); - -var msg31836 = msg("29756", dup322); - -var msg31837 = msg("29757", dup311); - -var msg31838 = msg("29758", dup311); - -var msg31839 = msg("29759", dup324); - -var msg31840 = msg("29760", dup325); - -var msg31841 = msg("29761", dup321); - -var msg31842 = msg("29762", dup321); - -var msg31843 = msg("29763", dup321); - -var msg31844 = msg("29764", dup321); - -var msg31845 = msg("29765", dup321); - -var msg31846 = msg("29766", dup333); - -var msg31847 = msg("29767", dup321); - -var msg31848 = msg("29768", dup321); - -var msg31849 = msg("29769", dup321); - -var msg31850 = msg("29770", dup321); - -var msg31851 = msg("29771", dup321); - -var msg31852 = msg("29772", dup321); - -var msg31853 = msg("29773", dup321); - -var msg31854 = msg("29774", dup321); - -var msg31855 = msg("29775", dup321); - -var msg31856 = msg("29776", dup321); - -var msg31857 = msg("29777", dup321); - -var msg31858 = msg("29778", dup321); - -var msg31859 = msg("29779", dup321); - -var msg31860 = msg("29780", dup321); - -var msg31861 = msg("29781", dup333); - -var msg31862 = msg("29782", dup333); - -var msg31863 = msg("29783", dup321); - -var msg31864 = msg("29784", dup321); - -var msg31865 = msg("29785", dup321); - -var msg31866 = msg("29786", dup321); - -var msg31867 = msg("29787", dup321); - -var msg31868 = msg("29788", dup321); - -var msg31869 = msg("29789", dup321); - -var msg31870 = msg("29790", dup321); - -var msg31871 = msg("29791", dup321); - -var msg31872 = msg("29792", dup307); - -var msg31873 = msg("29793", dup307); - -var msg31874 = msg("29794", dup323); - -var msg31875 = msg("29795", dup323); - -var msg31876 = msg("29796", dup325); - -var msg31877 = msg("29797", dup325); - -var msg31878 = msg("29798", dup314); - -var msg31879 = msg("29799", dup314); - -var msg31880 = msg("29800", dup311); - -var msg31881 = msg("29801", dup311); - -var msg31882 = msg("29802", dup311); - -var msg31883 = msg("29803", dup311); - -var msg31884 = msg("29804", dup311); - -var msg31885 = msg("29805", dup311); - -var msg31886 = msg("29806", dup311); - -var msg31887 = msg("29807", dup314); - -var msg31888 = msg("29808", dup311); - -var msg31889 = msg("29809", dup314); - -var msg31890 = msg("29810", dup314); - -var msg31891 = msg("29811", dup314); - -var msg31892 = msg("29812", dup314); - -var msg31893 = msg("29813", dup314); - -var msg31894 = msg("29814", dup324); - -var msg31895 = msg("29815", dup316); - -var msg31896 = msg("29816", dup321); - -var msg31897 = msg("29817", dup321); - -var msg31898 = msg("29818", dup321); - -var msg31899 = msg("29819", dup325); - -var msg31900 = msg("29820", dup325); - -var msg31901 = msg("29821", dup325); - -var msg31902 = msg("29822", dup325); - -var msg31903 = msg("29823", dup311); - -var msg31904 = msg("29824", dup325); - -var msg31905 = msg("29825", dup321); - -var msg31906 = msg("29826", dup321); - -var msg31907 = msg("29827", dup321); - -var msg31908 = msg("29828", dup321); - -var msg31909 = msg("29829", dup311); - -var msg31910 = msg("29830", dup311); - -var msg31911 = msg("29831", dup311); - -var msg31912 = msg("29832", dup321); - -var msg31913 = msg("29833", dup321); - -var msg31914 = msg("29834", dup314); - -var msg31915 = msg("29835", dup323); - -var msg31916 = msg("29836", dup323); - -var msg31917 = msg("29837", dup321); - -var msg31918 = msg("29838", dup321); - -var msg31919 = msg("29839", dup321); - -var msg31920 = msg("29840", dup321); - -var msg31921 = msg("29841", dup321); - -var msg31922 = msg("29842", dup321); - -var msg31923 = msg("29843", dup321); - -var msg31924 = msg("29844", dup321); - -var msg31925 = msg("29845", dup321); - -var msg31926 = msg("29846", dup321); - -var msg31927 = msg("29847", dup321); - -var msg31928 = msg("29848", dup321); - -var msg31929 = msg("29849", dup321); - -var msg31930 = msg("29850", dup321); - -var msg31931 = msg("29851", dup321); - -var msg31932 = msg("29852", dup321); - -var msg31933 = msg("29853", dup321); - -var msg31934 = msg("29854", dup321); - -var msg31935 = msg("29855", dup321); - -var msg31936 = msg("29856", dup321); - -var msg31937 = msg("29857", dup321); - -var msg31938 = msg("29858", dup321); - -var msg31939 = msg("29859", dup314); - -var msg31940 = msg("29860", dup321); - -var msg31941 = msg("29861", dup321); - -var msg31942 = msg("29862", dup321); - -var msg31943 = msg("29863", dup321); - -var msg31944 = msg("29864", dup311); - -var msg31945 = msg("29865", dup321); - -var msg31946 = msg("29866", dup324); - -var msg31947 = msg("29867", dup321); - -var msg31948 = msg("29868", dup321); - -var msg31949 = msg("29869", dup311); - -var msg31950 = msg("29870", dup310); - -var msg31951 = msg("29871", dup311); - -var msg31952 = msg("29872", dup321); - -var msg31953 = msg("29873", dup321); - -var msg31954 = msg("29874", dup321); - -var msg31955 = msg("29875", dup321); - -var msg31956 = msg("29876", dup324); - -var msg31957 = msg("29877", dup324); - -var msg31958 = msg("29878", dup322); - -var msg31959 = msg("29879", dup322); - -var msg31960 = msg("29880", dup322); - -var msg31961 = msg("29881", dup322); - -var msg31962 = msg("29882", dup321); - -var msg31963 = msg("29883", dup321); - -var msg31964 = msg("29884", dup321); - -var msg31965 = msg("29885", dup321); - -var msg31966 = msg("29886", dup321); - -var msg31967 = msg("29887", dup325); - -var msg31968 = msg("29888", dup324); - -var msg31969 = msg("29889", dup324); - -var msg31970 = msg("29890", dup311); - -var msg31971 = msg("29891", dup321); - -var msg31972 = msg("29892", dup321); - -var msg31973 = msg("29893", dup321); - -var msg31974 = msg("29894", dup321); - -var msg31975 = msg("29895", dup321); - -var msg31976 = msg("29896", dup324); - -var msg31977 = msg("29897", dup325); - -var msg31978 = msg("29898", dup321); - -var msg31979 = msg("29899", dup321); - -var msg31980 = msg("29900", dup321); - -var msg31981 = msg("29901", dup321); - -var msg31982 = msg("29902", dup314); - -var msg31983 = msg("29903", dup314); - -var msg31984 = msg("29904", dup314); - -var msg31985 = msg("29905", dup314); - -var msg31986 = msg("29906", dup324); - -var msg31987 = msg("29907", dup324); - -var msg31988 = msg("29909", dup311); - -var msg31989 = msg("29910", dup321); - -var msg31990 = msg("29911", dup321); - -var msg31991 = msg("29912", dup321); - -var msg31992 = msg("29913", dup321); - -var msg31993 = msg("29914", dup321); - -var msg31994 = msg("29915", dup321); - -var msg31995 = msg("29916", dup321); - -var msg31996 = msg("29917", dup321); - -var msg31997 = msg("29918", dup321); - -var msg31998 = msg("29919", dup321); - -var msg31999 = msg("29920", dup321); - -var msg32000 = msg("29921", dup321); - -var msg32001 = msg("29922", dup321); - -var msg32002 = msg("29923", dup321); - -var msg32003 = msg("29924", dup321); - -var msg32004 = msg("29925", dup321); - -var msg32005 = msg("29926", dup309); - -var msg32006 = msg("29927", dup309); - -var msg32007 = msg("29928", dup314); - -var msg32008 = msg("29929", dup314); - -var msg32009 = msg("29930", dup314); - -var msg32010 = msg("29931", dup314); - -var msg32011 = msg("29932", dup325); - -var msg32012 = msg("29933", dup325); - -var msg32013 = msg("29934", dup309); - -var msg32014 = msg("29935", dup324); - -var msg32015 = msg("29936", dup311); - -var msg32016 = msg("29937", dup309); - -var msg32017 = msg("29938", dup309); - -var msg32018 = msg("29939", dup309); - -var msg32019 = msg("29940", dup309); - -var msg32020 = msg("29941", dup309); - -var msg32021 = msg("29942", dup309); - -var msg32022 = msg("29943", dup311); - -var msg32023 = msg("29944", dup307); - -var msg32024 = msg("29945", dup307); - -var msg32025 = msg("29946", dup309); - -var msg32026 = msg("29947", dup309); - -var msg32027 = msg("29948", dup309); - -var msg32028 = msg("29949", dup316); - -var msg32029 = msg("29950", dup324); - -var msg32030 = msg("29951", dup309); - -var msg32031 = msg("29952", dup309); - -var msg32032 = msg("29953", dup309); - -var msg32033 = msg("29954", dup309); - -var msg32034 = msg("29955", dup311); - -var msg32035 = msg("29956", dup311); - -var msg32036 = msg("29957", dup309); - -var msg32037 = msg("29958", dup309); - -var msg32038 = msg("29959", dup309); - -var msg32039 = msg("29960", dup324); - -var msg32040 = msg("29961", dup324); - -var msg32041 = msg("29962", dup324); - -var msg32042 = msg("29963", dup324); - -var msg32043 = msg("29964", dup314); - -var msg32044 = msg("29965", dup324); - -var msg32045 = msg("29966", dup309); - -var msg32046 = msg("29967", dup309); - -var msg32047 = msg("29968", dup309); - -var msg32048 = msg("29969", dup311); - -var msg32049 = msg("29970", dup311); - -var msg32050 = msg("29971", dup311); - -var msg32051 = msg("29972", dup311); - -var msg32052 = msg("29973", dup321); - -var msg32053 = msg("29974", dup321); - -var msg32054 = msg("29975", dup321); - -var msg32055 = msg("29976", dup321); - -var msg32056 = msg("29977", dup321); - -var msg32057 = msg("29978", dup321); - -var msg32058 = msg("29979", dup311); - -var msg32059 = msg("29980", dup321); - -var msg32060 = msg("29981", dup321); - -var msg32061 = msg("29982", dup321); - -var msg32062 = msg("29983", dup325); - -var msg32063 = msg("29984", dup325); - -var msg32064 = msg("29985", dup321); - -var msg32065 = msg("29986", dup321); - -var msg32066 = msg("29987", dup321); - -var msg32067 = msg("29988", dup325); - -var msg32068 = msg("29989", dup325); - -var msg32069 = msg("29990", dup321); - -var msg32070 = msg("29991", dup321); - -var msg32071 = msg("29992", dup309); - -var msg32072 = msg("29993", dup321); - -var msg32073 = msg("29994", dup321); - -var msg32074 = msg("29995", dup321); - -var msg32075 = msg("29996", dup321); - -var msg32076 = msg("29997", dup321); - -var msg32077 = msg("29998", dup321); - -var msg32078 = msg("29999", dup325); - -var msg32079 = msg("30000", dup311); - -var msg32080 = msg("30001", dup311); - -var msg32081 = msg("30002", dup311); - -var msg32082 = msg("30003", dup311); - -var msg32083 = msg("30004", dup311); - -var msg32084 = msg("30005", dup311); - -var msg32085 = msg("30006", dup311); - -var msg32086 = msg("30007", dup311); - -var msg32087 = msg("30008", dup311); - -var msg32088 = msg("30009", dup311); - -var msg32089 = msg("30010", dup314); - -var msg32090 = msg("30011", dup311); - -var msg32091 = msg("30012", dup314); - -var msg32092 = msg("30013", dup314); - -var msg32093 = msg("30014", dup314); - -var msg32094 = msg("30015", dup314); - -var msg32095 = msg("30016", dup314); - -var msg32096 = msg("30017", dup314); - -var msg32097 = msg("30018", dup314); - -var msg32098 = msg("30019", dup309); - -var msg32099 = msg("30020", dup309); - -var msg32100 = msg("30021", dup309); - -var msg32101 = msg("30022", dup309); - -var msg32102 = msg("30023", dup309); - -var msg32103 = msg("30024", dup309); - -var msg32104 = msg("30025", dup309); - -var msg32105 = msg("30026", dup309); - -var msg32106 = msg("30027", dup309); - -var msg32107 = msg("30028", dup309); - -var msg32108 = msg("30029", dup309); - -var msg32109 = msg("30030", dup309); - -var msg32110 = msg("30031", dup309); - -var msg32111 = msg("30032", dup309); - -var msg32112 = msg("30033", dup314); - -var msg32113 = msg("30034", dup321); - -var msg32114 = msg("30035", dup321); - -var msg32115 = msg("30036", dup321); - -var msg32116 = msg("30037", dup321); - -var msg32117 = msg("30038", dup314); - -var msg32118 = msg("30039", dup321); - -var msg32119 = msg("30040", dup322); - -var msg32120 = msg("30041", dup322); - -var msg32121 = msg("30042", dup316); - -var msg32122 = msg("30043", dup321); - -var msg32123 = msg("30044", dup321); - -var msg32124 = msg("30045", dup321); - -var msg32125 = msg("30046", dup321); - -var msg32126 = msg("30047", dup321); - -var msg32127 = msg("30048", dup309); - -var msg32128 = msg("30049", dup309); - -var msg32129 = msg("30050", dup314); - -var msg32130 = msg("30051", dup314); - -var msg32131 = msg("30052", dup309); - -var msg32132 = msg("30053", dup309); - -var msg32133 = msg("30054", dup333); - -var msg32134 = msg("30055", dup333); - -var msg32135 = msg("30056", dup321); - -var msg32136 = msg("30057", dup321); - -var msg32137 = msg("30058", dup333); - -var msg32138 = msg("30059", dup321); - -var msg32139 = msg("30060", dup321); - -var msg32140 = msg("30061", dup321); - -var msg32141 = msg("30062", dup321); - -var msg32142 = msg("30063", dup321); - -var msg32143 = msg("30064", dup321); - -var msg32144 = msg("30065", dup314); - -var msg32145 = msg("30066", dup325); - -var msg32146 = msg("30067", dup321); - -var msg32147 = msg("30068", dup321); - -var msg32148 = msg("30069", dup321); - -var msg32149 = msg("30070", dup321); - -var msg32150 = msg("30071", dup321); - -var msg32151 = msg("30072", dup321); - -var msg32152 = msg("30073", dup321); - -var msg32153 = msg("30074", dup321); - -var msg32154 = msg("30075", dup321); - -var msg32155 = msg("30076", dup321); - -var msg32156 = msg("30077", dup321); - -var msg32157 = msg("30078", dup321); - -var msg32158 = msg("30079", dup325); - -var msg32159 = msg("30080", dup325); - -var msg32160 = msg("30081", dup325); - -var msg32161 = msg("30082", dup325); - -var msg32162 = msg("30083", dup321); - -var msg32163 = msg("30084", dup321); - -var msg32164 = msg("30085", dup321); - -var msg32165 = msg("30086", dup321); - -var msg32166 = msg("30087", dup321); - -var msg32167 = msg("30088", dup321); - -var msg32168 = msg("30089", dup321); - -var msg32169 = msg("30090", dup321); - -var msg32170 = msg("30091", dup321); - -var msg32171 = msg("30092", dup314); - -var msg32172 = msg("30093", dup314); - -var msg32173 = msg("30094", dup309); - -var msg32174 = msg("30095", dup309); - -var msg32175 = msg("30096", dup309); - -var msg32176 = msg("30097", dup309); - -var msg32177 = msg("30098", dup333); - -var msg32178 = msg("30099", dup321); - -var msg32179 = msg("30100", dup333); - -var msg32180 = msg("30101", dup333); - -var msg32181 = msg("30102", dup325); - -var msg32182 = msg("30103", dup325); - -var msg32183 = msg("30104", dup325); - -var msg32184 = msg("30105", dup325); - -var msg32185 = msg("30106", dup325); - -var msg32186 = msg("30107", dup325); - -var msg32187 = msg("30108", dup325); - -var msg32188 = msg("30109", dup325); - -var msg32189 = msg("30110", dup325); - -var msg32190 = msg("30111", dup325); - -var msg32191 = msg("30112", dup325); - -var msg32192 = msg("30113", dup325); - -var msg32193 = msg("30114", dup309); - -var msg32194 = msg("30115", dup309); - -var msg32195 = msg("30116", dup325); - -var msg32196 = msg("30117", dup325); - -var msg32197 = msg("30118", dup325); - -var msg32198 = msg("30119", dup325); - -var msg32199 = msg("30120", dup325); - -var msg32200 = msg("30121", dup325); - -var msg32201 = msg("30122", dup311); - -var msg32202 = msg("30123", dup325); - -var msg32203 = msg("30124", dup325); - -var msg32204 = msg("30125", dup325); - -var msg32205 = msg("30126", dup325); - -var msg32206 = msg("30127", dup311); - -var msg32207 = msg("30128", dup311); - -var msg32208 = msg("30129", dup325); - -var msg32209 = msg("30130", dup325); - -var msg32210 = msg("30131", dup325); - -var msg32211 = msg("30132", dup325); - -var msg32212 = msg("30133", dup311); - -var msg32213 = msg("30134", dup311); - -var msg32214 = msg("30135", dup311); - -var msg32215 = msg("30136", dup311); - -var msg32216 = msg("30137", dup321); - -var msg32217 = msg("30138", dup321); - -var msg32218 = msg("30139", dup314); - -var msg32219 = msg("30140", dup325); - -var msg32220 = msg("30141", dup325); - -var msg32221 = msg("30142", dup325); - -var msg32222 = msg("30143", dup325); - -var msg32223 = msg("30144", dup309); - -var msg32224 = msg("30145", dup309); - -var msg32225 = msg("30146", dup314); - -var msg32226 = msg("30147", dup314); - -var msg32227 = msg("30148", dup314); - -var msg32228 = msg("30149", dup314); - -var msg32229 = msg("30150", dup311); - -var msg32230 = msg("30151", dup311); - -var msg32231 = msg("30152", dup311); - -var msg32232 = msg("30153", dup309); - -var msg32233 = msg("30154", dup309); - -var msg32234 = msg("30155", dup309); - -var msg32235 = msg("30156", dup309); - -var msg32236 = msg("30157", dup309); - -var msg32237 = msg("30158", dup309); - -var msg32238 = msg("30159", dup309); - -var msg32239 = msg("30160", dup309); - -var msg32240 = msg("30161", dup309); - -var msg32241 = msg("30162", dup309); - -var msg32242 = msg("30163", dup309); - -var msg32243 = msg("30164", dup309); - -var msg32244 = msg("30165", dup309); - -var msg32245 = msg("30166", dup309); - -var msg32246 = msg("30167", dup321); - -var msg32247 = msg("30168", dup321); - -var msg32248 = msg("30169", dup325); - -var msg32249 = msg("30170", dup321); - -var msg32250 = msg("30171", dup321); - -var msg32251 = msg("30172", dup321); - -var msg32252 = msg("30173", dup321); - -var msg32253 = msg("30174", dup321); - -var msg32254 = msg("30175", dup321); - -var msg32255 = msg("30176", dup321); - -var msg32256 = msg("30177", dup321); - -var msg32257 = msg("30178", dup321); - -var msg32258 = msg("30179", dup321); - -var msg32259 = msg("30180", dup321); - -var msg32260 = msg("30181", dup321); - -var msg32261 = msg("30182", dup321); - -var msg32262 = msg("30183", dup321); - -var msg32263 = msg("30184", dup321); - -var msg32264 = msg("30185", dup321); - -var msg32265 = msg("30186", dup321); - -var msg32266 = msg("30187", dup321); - -var msg32267 = msg("30188", dup321); - -var msg32268 = msg("30189", dup321); - -var msg32269 = msg("30190", dup321); - -var msg32270 = msg("30191", dup321); - -var msg32271 = msg("30192", dup321); - -var msg32272 = msg("30193", dup321); - -var msg32273 = msg("30194", dup311); - -var msg32274 = msg("30195", dup314); - -var msg32275 = msg("30196", dup321); - -var msg32276 = msg("30197", dup321); - -var msg32277 = msg("30198", dup321); - -var msg32278 = msg("30199", dup324); - -var msg32279 = msg("30200", dup324); - -var msg32280 = msg("30201", dup325); - -var msg32281 = msg("30202", dup309); - -var msg32282 = msg("30203", dup321); - -var msg32283 = msg("30204", dup321); - -var msg32284 = msg("30205", dup309); - -var msg32285 = msg("30206", dup309); - -var msg32286 = msg("30207", dup309); - -var msg32287 = msg("30208", dup321); - -var msg32288 = msg("30209", dup324); - -var msg32289 = msg("30210", dup325); - -var msg32290 = msg("30211", dup321); - -var msg32291 = msg("30212", dup309); - -var msg32292 = msg("30213", dup309); - -var msg32293 = msg("30214", dup321); - -var msg32294 = msg("30215", dup309); - -var msg32295 = msg("30216", dup321); - -var msg32296 = msg("30217", dup311); - -var msg32297 = msg("30218", dup311); - -var msg32298 = msg("30219", dup311); - -var msg32299 = msg("30220", dup311); - -var msg32300 = msg("30221", dup316); - -var msg32301 = msg("30222", dup316); - -var msg32302 = msg("30223", dup316); - -var msg32303 = msg("30224", dup316); - -var msg32304 = msg("30225", dup316); - -var msg32305 = msg("30226", dup316); - -var msg32306 = msg("30227", dup316); - -var msg32307 = msg("30228", dup316); - -var msg32308 = msg("30229", dup316); - -var msg32309 = msg("30230", dup311); - -var msg32310 = msg("30231", dup321); - -var msg32311 = msg("30232", dup311); - -var msg32312 = msg("30233", dup311); - -var msg32313 = msg("30234", dup321); - -var msg32314 = msg("30235", dup321); - -var msg32315 = msg("30236", dup311); - -var msg32316 = msg("30237", dup321); - -var msg32317 = msg("30238", dup321); - -var msg32318 = msg("30239", dup321); - -var msg32319 = msg("30240", dup324); - -var msg32320 = msg("30241", dup324); - -var msg32321 = msg("30242", dup309); - -var msg32322 = msg("30243", dup309); - -var msg32323 = msg("30244", dup338); - -var msg32324 = msg("30245", dup309); - -var msg32325 = msg("30246", dup309); - -var msg32326 = msg("30247", dup338); - -var msg32327 = msg("30248", dup338); - -var msg32328 = msg("30249", dup314); - -var msg32329 = msg("30250", dup325); - -var msg32330 = msg("30251", dup321); - -var msg32331 = msg("30252", dup314); - -var msg32332 = msg("30253", dup314); - -var msg32333 = msg("30254", dup314); - -var msg32334 = msg("30255", dup310); - -var msg32335 = msg("30256", dup310); - -var msg32336 = msg("30257", dup325); - -var msg32337 = msg("30258", dup321); - -var msg32338 = msg("30259", dup321); - -var msg32339 = msg("30260", dup321); - -var msg32340 = msg("30261", dup321); - -var msg32341 = msg("30262", dup321); - -var msg32342 = msg("30263", dup314); - -var msg32343 = msg("30264", dup314); - -var msg32344 = msg("30265", dup314); - -var msg32345 = msg("30266", dup314); - -var msg32346 = msg("30267", dup314); - -var msg32347 = msg("30268", dup314); - -var msg32348 = msg("30269", dup321); - -var msg32349 = msg("30270", dup321); - -var msg32350 = msg("30271", dup321); - -var msg32351 = msg("30272", dup321); - -var msg32352 = msg("30273", dup321); - -var msg32353 = msg("30274", dup311); - -var msg32354 = msg("30275", dup321); - -var msg32355 = msg("30276", dup321); - -var msg32356 = msg("30277", dup321); - -var msg32357 = msg("30278", dup321); - -var msg32358 = msg("30279", dup321); - -var msg32359 = msg("30280", dup311); - -var msg32360 = msg("30281", dup311); - -var msg32361 = msg("30282", dup323); - -var msg32362 = msg("30283", dup323); - -var msg32363 = msg("30284", dup321); - -var msg32364 = msg("30285", dup321); - -var msg32365 = msg("30286", dup321); - -var msg32366 = msg("30287", dup307); - -var msg32367 = msg("30288", dup321); - -var msg32368 = msg("30289", dup325); - -var msg32369 = msg("30290", dup325); - -var msg32370 = msg("30291", dup309); - -var msg32371 = msg("30292", dup309); - -var msg32372 = msg("30293", dup309); - -var msg32373 = msg("30294", dup322); - -var msg32374 = msg("30295", dup322); - -var msg32375 = msg("30296", dup322); - -var msg32376 = msg("30297", dup314); - -var msg32377 = msg("30298", dup321); - -var msg32378 = msg("30299", dup321); - -var msg32379 = msg("30300", dup321); - -var msg32380 = msg("30301", dup325); - -var msg32381 = msg("30302", dup321); - -var msg32382 = msg("30303", dup321); - -var msg32383 = msg("30304", dup321); - -var msg32384 = msg("30305", dup311); - -var msg32385 = msg("30306", dup311); - -var msg32386 = msg("30307", dup314); - -var msg32387 = msg("30308", dup325); - -var msg32388 = msg("30309", dup325); - -var msg32389 = msg("30310", dup321); - -var msg32390 = msg("30311", dup321); - -var msg32391 = msg("30312", dup311); - -var msg32392 = msg("30313", dup311); - -var msg32393 = msg("30314", dup325); - -var msg32394 = msg("30315", dup325); - -var msg32395 = msg("30316", dup311); - -var msg32396 = msg("30317", dup311); - -var msg32397 = msg("30318", dup311); - -var msg32398 = msg("30319", dup311); - -var msg32399 = msg("30320", dup321); - -var msg32400 = msg("30321", dup321); - -var msg32401 = msg("30322", dup321); - -var msg32402 = msg("30323", dup321); - -var msg32403 = msg("30324", dup311); - -var msg32404 = msg("30325", dup311); - -var msg32405 = msg("30326", dup324); - -var msg32406 = msg("30327", dup325); - -var msg32407 = msg("30328", dup325); - -var msg32408 = msg("30329", dup314); - -var msg32409 = msg("30330", dup314); - -var msg32410 = msg("30331", dup325); - -var msg32411 = msg("30332", dup321); - -var msg32412 = msg("30333", dup321); - -var msg32413 = msg("30334", dup321); - -var msg32414 = msg("30335", dup321); - -var msg32415 = msg("30336", dup321); - -var msg32416 = msg("30337", dup324); - -var msg32417 = msg("30338", dup309); - -var all58 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup96, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg32418 = msg("30339", all58); - -var msg32419 = msg("30340", dup324); - -var msg32420 = msg("30341", dup309); - -var msg32421 = msg("30342", dup310); - -var msg32422 = msg("30343", dup322); - -var msg32423 = msg("30344", dup325); - -var msg32424 = msg("30345", dup325); - -var msg32425 = msg("30347", dup309); - -var msg32426 = msg("30348", dup309); - -var msg32427 = msg("30349", dup309); - -var msg32428 = msg("30350", dup316); - -var msg32429 = msg("30351", dup316); - -var msg32430 = msg("30352", dup316); - -var msg32431 = msg("30353", dup316); - -var msg32432 = msg("30354", dup316); - -var msg32433 = msg("30355", dup316); - -var msg32434 = msg("30356", dup316); - -var msg32435 = msg("30357", dup316); - -var msg32436 = msg("30358", dup316); - -var msg32437 = msg("30359", dup316); - -var msg32438 = msg("30360", dup316); - -var msg32439 = msg("30361", dup316); - -var msg32440 = msg("30362", dup316); - -var msg32441 = msg("30363", dup316); - -var msg32442 = msg("30364", dup316); - -var msg32443 = msg("30365", dup316); - -var msg32444 = msg("30366", dup316); - -var msg32445 = msg("30367", dup316); - -var msg32446 = msg("30368", dup316); - -var msg32447 = msg("30369", dup316); - -var msg32448 = msg("30370", dup316); - -var msg32449 = msg("30371", dup316); - -var msg32450 = msg("30372", dup316); - -var msg32451 = msg("30373", dup316); - -var msg32452 = msg("30374", dup316); - -var msg32453 = msg("30375", dup316); - -var msg32454 = msg("30376", dup316); - -var msg32455 = msg("30377", dup316); - -var msg32456 = msg("30378", dup316); - -var msg32457 = msg("30379", dup316); - -var msg32458 = msg("30380", dup316); - -var msg32459 = msg("30381", dup316); - -var msg32460 = msg("30382", dup316); - -var msg32461 = msg("30383", dup316); - -var msg32462 = msg("30384", dup316); - -var msg32463 = msg("30385", dup316); - -var msg32464 = msg("30386", dup316); - -var msg32465 = msg("30387", dup316); - -var msg32466 = msg("30388", dup316); - -var msg32467 = msg("30389", dup316); - -var msg32468 = msg("30390", dup316); - -var msg32469 = msg("30391", dup316); - -var msg32470 = msg("30392", dup316); - -var msg32471 = msg("30393", dup316); - -var msg32472 = msg("30394", dup316); - -var msg32473 = msg("30395", dup316); - -var msg32474 = msg("30396", dup316); - -var msg32475 = msg("30397", dup316); - -var msg32476 = msg("30398", dup316); - -var msg32477 = msg("30399", dup316); - -var msg32478 = msg("30400", dup316); - -var msg32479 = msg("30401", dup316); - -var msg32480 = msg("30402", dup316); - -var msg32481 = msg("30403", dup316); - -var msg32482 = msg("30404", dup316); - -var msg32483 = msg("30405", dup316); - -var msg32484 = msg("30406", dup316); - -var msg32485 = msg("30407", dup316); - -var msg32486 = msg("30408", dup316); - -var msg32487 = msg("30409", dup316); - -var msg32488 = msg("30410", dup316); - -var msg32489 = msg("30411", dup316); - -var msg32490 = msg("30412", dup316); - -var msg32491 = msg("30413", dup316); - -var msg32492 = msg("30414", dup316); - -var msg32493 = msg("30415", dup316); - -var msg32494 = msg("30416", dup316); - -var msg32495 = msg("30417", dup316); - -var msg32496 = msg("30418", dup316); - -var msg32497 = msg("30419", dup316); - -var msg32498 = msg("30420", dup316); - -var msg32499 = msg("30421", dup316); - -var msg32500 = msg("30422", dup316); - -var msg32501 = msg("30423", dup316); - -var msg32502 = msg("30424", dup316); - -var msg32503 = msg("30425", dup316); - -var msg32504 = msg("30426", dup316); - -var msg32505 = msg("30427", dup316); - -var msg32506 = msg("30428", dup316); - -var msg32507 = msg("30429", dup316); - -var msg32508 = msg("30430", dup316); - -var msg32509 = msg("30431", dup316); - -var msg32510 = msg("30432", dup316); - -var msg32511 = msg("30433", dup316); - -var msg32512 = msg("30434", dup316); - -var msg32513 = msg("30435", dup316); - -var msg32514 = msg("30436", dup316); - -var msg32515 = msg("30437", dup316); - -var msg32516 = msg("30438", dup316); - -var msg32517 = msg("30439", dup316); - -var msg32518 = msg("30440", dup316); - -var msg32519 = msg("30441", dup316); - -var msg32520 = msg("30442", dup316); - -var msg32521 = msg("30443", dup316); - -var msg32522 = msg("30444", dup316); - -var msg32523 = msg("30445", dup316); - -var msg32524 = msg("30446", dup316); - -var msg32525 = msg("30447", dup316); - -var msg32526 = msg("30448", dup316); - -var msg32527 = msg("30449", dup316); - -var msg32528 = msg("30450", dup316); - -var msg32529 = msg("30451", dup316); - -var msg32530 = msg("30452", dup316); - -var msg32531 = msg("30453", dup316); - -var msg32532 = msg("30454", dup316); - -var msg32533 = msg("30455", dup316); - -var msg32534 = msg("30456", dup316); - -var msg32535 = msg("30457", dup316); - -var msg32536 = msg("30458", dup316); - -var msg32537 = msg("30459", dup316); - -var msg32538 = msg("30460", dup316); - -var msg32539 = msg("30461", dup316); - -var msg32540 = msg("30462", dup316); - -var msg32541 = msg("30463", dup316); - -var msg32542 = msg("30464", dup316); - -var msg32543 = msg("30465", dup316); - -var msg32544 = msg("30466", dup316); - -var msg32545 = msg("30467", dup316); - -var msg32546 = msg("30468", dup316); - -var msg32547 = msg("30469", dup316); - -var msg32548 = msg("30470", dup316); - -var msg32549 = msg("30471", dup316); - -var msg32550 = msg("30472", dup316); - -var msg32551 = msg("30473", dup316); - -var msg32552 = msg("30474", dup316); - -var msg32553 = msg("30475", dup316); - -var msg32554 = msg("30476", dup316); - -var msg32555 = msg("30477", dup316); - -var msg32556 = msg("30478", dup316); - -var msg32557 = msg("30479", dup316); - -var msg32558 = msg("30480", dup316); - -var msg32559 = msg("30481", dup321); - -var msg32560 = msg("30482", dup321); - -var msg32561 = msg("30483", dup321); - -var msg32562 = msg("30484", dup321); - -var msg32563 = msg("30485", dup314); - -var msg32564 = msg("30486", dup314); - -var msg32565 = msg("30487", dup309); - -var msg32566 = msg("30488", dup309); - -var msg32567 = msg("30489", dup309); - -var msg32568 = msg("30490", dup311); - -var msg32569 = msg("30491", dup311); - -var msg32570 = msg("30492", dup321); - -var msg32571 = msg("30493", dup321); - -var msg32572 = msg("30494", dup321); - -var msg32573 = msg("30495", dup321); - -var msg32574 = msg("30496", dup321); - -var msg32575 = msg("30497", dup325); - -var msg32576 = msg("30498", dup325); - -var msg32577 = msg("30499", dup311); - -var msg32578 = msg("30500", dup311); - -var msg32579 = msg("30501", dup325); - -var msg32580 = msg("30502", dup325); - -var msg32581 = msg("30503", dup325); - -var msg32582 = msg("30504", dup325); - -var msg32583 = msg("30505", dup325); - -var msg32584 = msg("30506", dup325); - -var msg32585 = msg("30507", dup309); - -var msg32586 = msg("30508", dup325); - -var msg32587 = msg("30509", dup325); - -var msg32588 = msg("30510", dup316); - -var msg32589 = msg("30511", dup316); - -var msg32590 = msg("30512", dup316); - -var msg32591 = msg("30513", dup316); - -var msg32592 = msg("30514", dup316); - -var msg32593 = msg("30515", dup316); - -var msg32594 = msg("30516", dup316); - -var msg32595 = msg("30517", dup316); - -var msg32596 = msg("30518", dup325); - -var msg32597 = msg("30519", dup321); - -var msg32598 = msg("30520", dup309); - -var msg32599 = msg("30521", dup309); - -var msg32600 = msg("30522", dup309); - -var msg32601 = msg("30523", dup309); - -var all59 = all_match({ - processors: [ - dup66, - dup179, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup63, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg32602 = msg("30524", all59); - -var msg32603 = msg("30525", dup309); - -var msg32604 = msg("30526", dup311); - -var msg32605 = msg("30527", dup311); - -var msg32606 = msg("30528", dup323); - -var msg32607 = msg("30529", dup323); - -var msg32608 = msg("30530", dup309); - -var msg32609 = msg("30531", dup309); - -var msg32610 = msg("30532", dup314); - -var msg32611 = msg("30533", dup309); - -var msg32612 = msg("30534", dup309); - -var msg32613 = msg("30535", dup314); - -var msg32614 = msg("30536", dup314); - -var msg32615 = msg("30537", dup314); - -var msg32616 = msg("30538", dup314); - -var msg32617 = msg("30539", dup314); - -var msg32618 = msg("30540", dup314); - -var msg32619 = msg("30541", dup321); - -var msg32620 = msg("30542", dup321); - -var msg32621 = msg("30543", dup321); - -var msg32622 = msg("30544", dup321); - -var msg32623 = msg("30545", dup321); - -var msg32624 = msg("30546", dup321); - -var msg32625 = msg("30547", dup321); - -var msg32626 = msg("30548", dup321); - -var msg32627 = msg("30549", dup311); - -var msg32628 = msg("30550", dup321); - -var msg32629 = msg("30551", dup325); - -var msg32630 = msg("30552", dup325); - -var msg32631 = msg("30553", dup314); - -var msg32632 = msg("30554", dup314); - -var msg32633 = msg("30555", dup314); - -var msg32634 = msg("30556", dup314); - -var msg32635 = msg("30562", dup309); - -var msg32636 = msg("30566", dup321); - -var msg32637 = msg("30570", dup321); - -var msg32638 = msg("30711", dup309); - -var msg32639 = msg("30712", dup309); - -var msg32640 = msg("30713", dup309); - -var msg32641 = msg("30714", dup309); - -var msg32642 = msg("30715", dup309); - -var msg32643 = msg("30716", dup309); - -var msg32644 = msg("30717", dup309); - -var msg32645 = msg("30718", dup309); - -var msg32646 = msg("30719", dup314); - -var msg32647 = msg("30720", dup314); - -var msg32648 = msg("30721", dup314); - -var msg32649 = msg("30722", dup314); - -var msg32650 = msg("30723", dup314); - -var msg32651 = msg("30724", dup314); - -var msg32652 = msg("30725", dup314); - -var msg32653 = msg("30726", dup314); - -var msg32654 = msg("30727", dup309); - -var msg32655 = msg("30728", dup309); - -var msg32656 = msg("30729", dup309); - -var msg32657 = msg("30730", dup309); - -var msg32658 = msg("30731", dup309); - -var msg32659 = msg("30732", dup309); - -var msg32660 = msg("30733", dup309); - -var msg32661 = msg("30734", dup309); - -var msg32662 = msg("30735", dup314); - -var msg32663 = msg("30736", dup314); - -var msg32664 = msg("30737", dup314); - -var msg32665 = msg("30738", dup314); - -var msg32666 = msg("30739", dup314); - -var msg32667 = msg("30740", dup314); - -var msg32668 = msg("30741", dup314); - -var msg32669 = msg("30742", dup314); - -var msg32670 = msg("30743", dup321); - -var msg32671 = msg("30744", dup321); - -var msg32672 = msg("30745", dup321); - -var msg32673 = msg("30746", dup321); - -var msg32674 = msg("30747", dup321); - -var msg32675 = msg("30748", dup321); - -var msg32676 = msg("30749", dup321); - -var msg32677 = msg("30750", dup321); - -var msg32678 = msg("30751", dup321); - -var msg32679 = msg("30752", dup321); - -var msg32680 = msg("30753", dup321); - -var msg32681 = msg("30754", dup311); - -var msg32682 = msg("30755", dup311); - -var msg32683 = msg("30756", dup314); - -var msg32684 = msg("30757", dup314); - -var msg32685 = msg("30758", dup314); - -var msg32686 = msg("30759", dup314); - -var msg32687 = msg("30760", dup314); - -var msg32688 = msg("30761", dup309); - -var msg32689 = msg("30762", dup309); - -var msg32690 = msg("30763", dup309); - -var msg32691 = msg("30764", dup309); - -var msg32692 = msg("30765", dup314); - -var msg32693 = msg("30766", dup311); - -var msg32694 = msg("30767", dup311); - -var msg32695 = msg("30768", dup311); - -var msg32696 = msg("30777", dup314); - -var msg32697 = msg("30778", dup314); - -var msg32698 = msg("30779", dup314); - -var msg32699 = msg("30780", dup314); - -var msg32700 = msg("30781", dup314); - -var msg32701 = msg("30782", dup314); - -var msg32702 = msg("30783", dup314); - -var msg32703 = msg("30784", dup314); - -var msg32704 = msg("30785", dup314); - -var msg32705 = msg("30786", dup314); - -var msg32706 = msg("30787", dup314); - -var msg32707 = msg("30788", dup314); - -var msg32708 = msg("30789", dup311); - -var msg32709 = msg("30790", dup314); - -var msg32710 = msg("30791", dup314); - -var msg32711 = msg("30792", dup314); - -var msg32712 = msg("30793", dup314); - -var msg32713 = msg("30794", dup325); - -var msg32714 = msg("30795", dup321); - -var msg32715 = msg("30796", dup321); - -var msg32716 = msg("30797", dup309); - -var msg32717 = msg("30798", dup309); - -var msg32718 = msg("30799", dup309); - -var msg32719 = msg("30800", dup309); - -var msg32720 = msg("30801", dup309); - -var msg32721 = msg("30802", dup309); - -var msg32722 = msg("30803", dup325); - -var msg32723 = msg("30804", dup321); - -var msg32724 = msg("30805", dup321); - -var msg32725 = msg("30806", dup321); - -var msg32726 = msg("30807", dup321); - -var msg32727 = msg("30808", dup321); - -var msg32728 = msg("30809", dup321); - -var msg32729 = msg("30810", dup321); - -var msg32730 = msg("30811", dup321); - -var msg32731 = msg("30812", dup321); - -var msg32732 = msg("30813", dup321); - -var msg32733 = msg("30814", dup321); - -var msg32734 = msg("30815", dup321); - -var msg32735 = msg("30816", dup314); - -var msg32736 = msg("30817", dup314); - -var msg32737 = msg("30818", dup314); - -var msg32738 = msg("30819", dup314); - -var msg32739 = msg("30820", dup314); - -var msg32740 = msg("30821", dup314); - -var msg32741 = msg("30822", dup314); - -var msg32742 = msg("30823", dup314); - -var msg32743 = msg("30824", dup321); - -var msg32744 = msg("30825", dup321); - -var msg32745 = msg("30826", dup321); - -var msg32746 = msg("30827", dup321); - -var msg32747 = msg("30828", dup321); - -var msg32748 = msg("30829", dup321); - -var msg32749 = msg("30830", dup321); - -var msg32750 = msg("30831", dup321); - -var msg32751 = msg("30832", dup321); - -var msg32752 = msg("30833", dup321); - -var msg32753 = msg("30834", dup321); - -var msg32754 = msg("30835", dup321); - -var msg32755 = msg("30836", dup321); - -var msg32756 = msg("30837", dup321); - -var msg32757 = msg("30838", dup321); - -var msg32758 = msg("30839", dup321); - -var msg32759 = msg("30840", dup321); - -var msg32760 = msg("30841", dup321); - -var msg32761 = msg("30842", dup321); - -var msg32762 = msg("30843", dup311); - -var msg32763 = msg("30844", dup311); - -var msg32764 = msg("30845", dup307); - -var msg32765 = msg("30846", dup307); - -var msg32766 = msg("30847", dup325); - -var msg32767 = msg("30848", dup325); - -var msg32768 = msg("30849", dup325); - -var msg32769 = msg("30850", dup325); - -var msg32770 = msg("30851", dup325); - -var msg32771 = msg("30852", dup311); - -var msg32772 = msg("30853", dup329); - -var msg32773 = msg("30854", dup329); - -var msg32774 = msg("30855", dup329); - -var msg32775 = msg("30856", dup329); - -var msg32776 = msg("30857", dup329); - -var msg32777 = msg("30858", dup329); - -var msg32778 = msg("30859", dup329); - -var msg32779 = msg("30860", dup329); - -var msg32780 = msg("30861", dup329); - -var msg32781 = msg("30862", dup329); - -var msg32782 = msg("30863", dup329); - -var msg32783 = msg("30864", dup329); - -var msg32784 = msg("30865", dup329); - -var msg32785 = msg("30866", dup329); - -var msg32786 = msg("30867", dup329); - -var msg32787 = msg("30868", dup329); - -var msg32788 = msg("30869", dup329); - -var msg32789 = msg("30870", dup329); - -var msg32790 = msg("30871", dup329); - -var msg32791 = msg("30872", dup329); - -var msg32792 = msg("30873", dup329); - -var msg32793 = msg("30874", dup329); - -var msg32794 = msg("30875", dup329); - -var msg32795 = msg("30876", dup309); - -var msg32796 = msg("30877", dup309); - -var msg32797 = msg("30878", dup311); - -var msg32798 = msg("30879", dup321); - -var msg32799 = msg("30880", dup200); - -var msg32800 = msg("30881", dup329); - -var msg32801 = msg("30882", dup321); - -var msg32802 = msg("30883", dup321); - -var msg32803 = msg("30884", dup324); - -var msg32804 = msg("30885", dup307); - -var msg32805 = msg("30886", dup307); - -var msg32806 = msg("30887", dup316); - -var msg32807 = msg("30888", dup316); - -var msg32808 = msg("30889", dup309); - -var msg32809 = msg("30890", dup309); - -var msg32810 = msg("30891", dup321); - -var msg32811 = msg("30892", dup325); - -var msg32812 = msg("30893", dup325); - -var msg32813 = msg("30894", dup325); - -var msg32814 = msg("30895", dup325); - -var msg32815 = msg("30896", dup321); - -var msg32816 = msg("30897", dup321); - -var msg32817 = msg("30898", dup314); - -var msg32818 = msg("30899", dup321); - -var msg32819 = msg("30900", dup321); - -var msg32820 = msg("30901", dup325); - -var msg32821 = msg("30902", dup311); - -var msg32822 = msg("30903", dup311); - -var msg32823 = msg("30904", dup311); - -var msg32824 = msg("30905", dup311); - -var msg32825 = msg("30906", dup311); - -var msg32826 = msg("30907", dup311); - -var msg32827 = msg("30908", dup311); - -var msg32828 = msg("30909", dup311); - -var msg32829 = msg("30910", dup314); - -var msg32830 = msg("30911", dup314); - -var msg32831 = msg("30912", dup311); - -var msg32832 = msg("30913", dup311); - -var msg32833 = msg("30914", dup321); - -var msg32834 = msg("30915", dup321); - -var msg32835 = msg("30916", dup333); - -var msg32836 = msg("30917", dup321); - -var msg32837 = msg("30918", dup325); - -var msg32838 = msg("30919", dup321); - -var msg32839 = msg("30920", dup307); - -var msg32840 = msg("30921", dup311); - -var msg32841 = msg("30922", dup311); - -var msg32842 = msg("30923", dup321); - -var msg32843 = msg("30924", dup321); - -var msg32844 = msg("30925", dup321); - -var msg32845 = msg("30926", dup321); - -var msg32846 = msg("30927", dup321); - -var msg32847 = msg("30928", dup314); - -var msg32848 = msg("30929", dup310); - -var msg32849 = msg("30930", dup321); - -var msg32850 = msg("30931", dup310); - -var msg32851 = msg("30932", dup311); - -var msg32852 = msg("30933", dup311); - -var msg32853 = msg("30934", dup311); - -var msg32854 = msg("30935", dup311); - -var msg32855 = msg("30936", dup311); - -var msg32856 = msg("30937", dup311); - -var msg32857 = msg("30938", dup321); - -var msg32858 = msg("30939", dup311); - -var msg32859 = msg("30940", dup311); - -var msg32860 = msg("30941", dup309); - -var msg32861 = msg("30942", dup311); - -var msg32862 = msg("30943", dup311); - -var msg32863 = msg("30944", dup314); - -var msg32864 = msg("30945", dup333); - -var msg32865 = msg("30946", dup321); - -var msg32866 = msg("30947", dup321); - -var msg32867 = msg("30948", dup321); - -var msg32868 = msg("30949", dup321); - -var msg32869 = msg("30950", dup311); - -var msg32870 = msg("30951", dup314); - -var msg32871 = msg("30952", dup321); - -var msg32872 = msg("30953", dup321); - -var msg32873 = msg("30954", dup321); - -var msg32874 = msg("30955", dup321); - -var msg32875 = msg("30956", dup311); - -var msg32876 = msg("30957", dup311); - -var msg32877 = msg("30958", dup311); - -var msg32878 = msg("30959", dup311); - -var msg32879 = msg("30960", dup311); - -var msg32880 = msg("30961", dup325); - -var msg32881 = msg("30962", dup325); - -var msg32882 = msg("30963", dup325); - -var msg32883 = msg("30964", dup325); - -var msg32884 = msg("30965", dup311); - -var msg32885 = msg("30966", dup311); - -var msg32886 = msg("30967", dup311); - -var msg32887 = msg("30968", dup311); - -var msg32888 = msg("30969", dup311); - -var msg32889 = msg("30970", dup311); - -var msg32890 = msg("30971", dup311); - -var msg32891 = msg("30972", dup311); - -var msg32892 = msg("30973", dup311); - -var msg32893 = msg("30974", dup307); - -var msg32894 = msg("30975", dup311); - -var msg32895 = msg("30976", dup311); - -var msg32896 = msg("30977", dup321); - -var msg32897 = msg("30978", dup321); - -var msg32898 = msg("30979", dup321); - -var msg32899 = msg("30980", dup321); - -var msg32900 = msg("30981", dup321); - -var msg32901 = msg("30982", dup321); - -var msg32902 = msg("30983", dup321); - -var msg32903 = msg("30984", dup321); - -var msg32904 = msg("30985", dup321); - -var msg32905 = msg("30986", dup321); - -var msg32906 = msg("30987", dup321); - -var msg32907 = msg("30988", dup321); - -var msg32908 = msg("30989", dup321); - -var msg32909 = msg("30990", dup311); - -var msg32910 = msg("30991", dup311); - -var msg32911 = msg("30992", dup314); - -var msg32912 = msg("30993", dup314); - -var msg32913 = msg("30994", dup314); - -var msg32914 = msg("30995", dup314); - -var msg32915 = msg("30996", dup314); - -var msg32916 = msg("30997", dup321); - -var msg32917 = msg("30998", dup321); - -var msg32918 = msg("30999", dup321); - -var msg32919 = msg("31000", dup321); - -var msg32920 = msg("31001", dup321); - -var msg32921 = msg("31002", dup321); - -var msg32922 = msg("31003", dup321); - -var msg32923 = msg("31004", dup321); - -var msg32924 = msg("31005", dup321); - -var msg32925 = msg("31006", dup321); - -var msg32926 = msg("31007", dup323); - -var msg32927 = msg("31008", dup309); - -var msg32928 = msg("31009", dup309); - -var msg32929 = msg("31010", dup321); - -var msg32930 = msg("31011", dup314); - -var msg32931 = msg("31012", dup314); - -var msg32932 = msg("31013", dup314); - -var msg32933 = msg("31014", dup321); - -var msg32934 = msg("31015", dup309); - -var msg32935 = msg("31016", dup309); - -var msg32936 = msg("31017", dup325); - -var msg32937 = msg("31018", dup325); - -var msg32938 = msg("31019", dup321); - -var msg32939 = msg("31020", dup321); - -var msg32940 = msg("31021", dup311); - -var msg32941 = msg("31022", dup311); - -var msg32942 = msg("31023", dup311); - -var msg32943 = msg("31024", dup311); - -var msg32944 = msg("31025", dup311); - -var msg32945 = msg("31026", dup311); - -var msg32946 = msg("31027", dup309); - -var msg32947 = msg("31028", dup309); - -var msg32948 = msg("31029", dup309); - -var msg32949 = msg("31030", dup309); - -var msg32950 = msg("31031", dup309); - -var msg32951 = msg("31032", dup309); - -var msg32952 = msg("31033", dup321); - -var msg32953 = msg("31034", dup321); - -var msg32954 = msg("31035", dup321); - -var msg32955 = msg("31036", dup321); - -var msg32956 = msg("31037", dup309); - -var msg32957 = msg("31038", dup309); - -var msg32958 = msg("31039", dup309); - -var msg32959 = msg("31040", dup309); - -var msg32960 = msg("31041", dup309); - -var msg32961 = msg("31042", dup321); - -var msg32962 = msg("31043", dup314); - -var msg32963 = msg("31044", dup314); - -var msg32964 = msg("31045", dup330); - -var msg32965 = msg("31046", dup311); - -var msg32966 = msg("31048", dup321); - -var msg32967 = msg("31049", dup321); - -var msg32968 = msg("31050", dup321); - -var msg32969 = msg("31051", dup321); - -var msg32970 = msg("31052", dup321); - -var msg32971 = msg("31053", dup321); - -var msg32972 = msg("31054", dup321); - -var msg32973 = msg("31055", dup321); - -var msg32974 = msg("31056", dup315); - -var msg32975 = msg("31057", dup315); - -var msg32976 = msg("31058", dup315); - -var msg32977 = msg("31059", dup315); - -var msg32978 = msg("31060", dup325); - -var msg32979 = msg("31061", dup325); - -var msg32980 = msg("31062", dup325); - -var msg32981 = msg("31063", dup333); - -var msg32982 = msg("31064", dup321); - -var msg32983 = msg("31065", dup321); - -var msg32984 = msg("31066", dup321); - -var msg32985 = msg("31067", dup322); - -var msg32986 = msg("31068", dup307); - -var msg32987 = msg("31069", dup307); - -var msg32988 = msg("31070", dup321); - -var msg32989 = msg("31071", dup335); - -var msg32990 = msg("31072", dup321); - -var msg32991 = msg("31073", dup321); - -var msg32992 = msg("31074", dup321); - -var msg32993 = msg("31075", dup325); - -var msg32994 = msg("31076", dup314); - -var msg32995 = msg("31077", dup321); - -var msg32996 = msg("31078", dup321); - -var msg32997 = msg("31079", dup321); - -var msg32998 = msg("31080", dup321); - -var msg32999 = msg("31081", dup321); - -var msg33000 = msg("31082", dup323); - -var msg33001 = msg("31083", dup321); - -var msg33002 = msg("31084", dup321); - -var msg33003 = msg("31085", dup314); - -var msg33004 = msg("31086", dup314); - -var msg33005 = msg("31087", dup311); - -var msg33006 = msg("31088", dup311); - -var msg33007 = msg("31089", dup321); - -var msg33008 = msg("31090", dup325); - -var msg33009 = msg("31091", dup321); - -var msg33010 = msg("31092", dup311); - -var msg33011 = msg("31093", dup311); - -var msg33012 = msg("31094", dup311); - -var msg33013 = msg("31095", dup315); - -var msg33014 = msg("31096", dup315); - -var msg33015 = msg("31097", dup315); - -var msg33016 = msg("31098", dup315); - -var msg33017 = msg("31099", dup315); - -var msg33018 = msg("31100", dup315); - -var msg33019 = msg("31101", dup314); - -var msg33020 = msg("31102", dup321); - -var msg33021 = msg("31103", dup309); - -var msg33022 = msg("31104", dup309); - -var msg33023 = msg("31105", dup309); - -var msg33024 = msg("31106", dup309); - -var msg33025 = msg("31107", dup321); - -var msg33026 = msg("31108", dup321); - -var msg33027 = msg("31109", dup321); - -var msg33028 = msg("31110", dup321); - -var msg33029 = msg("31111", dup321); - -var msg33030 = msg("31112", dup321); - -var msg33031 = msg("31113", dup321); - -var msg33032 = msg("31114", dup321); - -var msg33033 = msg("31115", dup321); - -var msg33034 = msg("31116", dup321); - -var msg33035 = msg("31117", dup321); - -var msg33036 = msg("31118", dup321); - -var msg33037 = msg("31119", dup321); - -var msg33038 = msg("31120", dup321); - -var msg33039 = msg("31121", dup321); - -var msg33040 = msg("31122", dup325); - -var msg33041 = msg("31123", dup321); - -var msg33042 = msg("31124", dup321); - -var msg33043 = msg("31125", dup309); - -var msg33044 = msg("31126", dup309); - -var msg33045 = msg("31127", dup309); - -var msg33046 = msg("31128", dup333); - -var msg33047 = msg("31129", dup311); - -var msg33048 = msg("31130", dup311); - -var msg33049 = msg("31131", dup321); - -var msg33050 = msg("31132", dup321); - -var msg33051 = msg("31133", dup321); - -var msg33052 = msg("31134", dup321); - -var msg33053 = msg("31135", dup321); - -var msg33054 = msg("31136", dup321); - -var msg33055 = msg("31137", dup321); - -var msg33056 = msg("31138", dup321); - -var msg33057 = msg("31139", dup321); - -var msg33058 = msg("31140", dup321); - -var msg33059 = msg("31141", dup321); - -var msg33060 = msg("31142", dup321); - -var msg33061 = msg("31143", dup314); - -var msg33062 = msg("31144", dup321); - -var msg33063 = msg("31145", dup321); - -var msg33064 = msg("31146", dup321); - -var msg33065 = msg("31167", dup321); - -var msg33066 = msg("31176", dup309); - -var msg33067 = msg("31177", dup309); - -var msg33068 = msg("31178", dup309); - -var msg33069 = msg("31179", dup309); - -var msg33070 = msg("31180", dup324); - -var msg33071 = msg("31181", dup324); - -var msg33072 = msg("31182", dup309); - -var msg33073 = msg("31183", dup321); - -var msg33074 = msg("31184", dup321); - -var msg33075 = msg("31185", dup321); - -var msg33076 = msg("31186", dup321); - -var msg33077 = msg("31187", dup321); - -var msg33078 = msg("31188", dup309); - -var msg33079 = msg("31189", dup309); - -var msg33080 = msg("31190", dup325); - -var msg33081 = msg("31191", dup325); - -var msg33082 = msg("31192", dup325); - -var msg33083 = msg("31193", dup325); - -var msg33084 = msg("31194", dup325); - -var msg33085 = msg("31195", dup314); - -var msg33086 = msg("31196", dup325); - -var msg33087 = msg("31197", dup325); - -var msg33088 = msg("31198", dup325); - -var msg33089 = msg("31199", dup325); - -var msg33090 = msg("31200", dup325); - -var msg33091 = msg("31201", dup325); - -var msg33092 = msg("31202", dup325); - -var msg33093 = msg("31203", dup325); - -var msg33094 = msg("31204", dup325); - -var msg33095 = msg("31205", dup325); - -var msg33096 = msg("31206", dup325); - -var msg33097 = msg("31207", dup325); - -var msg33098 = msg("31208", dup325); - -var msg33099 = msg("31209", dup325); - -var msg33100 = msg("31210", dup309); - -var msg33101 = msg("31211", dup309); - -var msg33102 = msg("31212", dup310); - -var msg33103 = msg("31213", dup310); - -var msg33104 = msg("31214", dup321); - -var msg33105 = msg("31215", dup325); - -var msg33106 = msg("31216", dup325); - -var msg33107 = msg("31217", dup314); - -var msg33108 = msg("31218", dup321); - -var msg33109 = msg("31219", dup325); - -var msg33110 = msg("31220", dup325); - -var msg33111 = msg("31221", dup321); - -var msg33112 = msg("31222", dup321); - -var msg33113 = msg("31223", dup321); - -var msg33114 = msg("31224", dup321); - -var msg33115 = msg("31225", dup325); - -var msg33116 = msg("31226", dup321); - -var msg33117 = msg("31227", dup321); - -var msg33118 = msg("31228", dup321); - -var msg33119 = msg("31229", dup311); - -var msg33120 = msg("31230", dup311); - -var msg33121 = msg("31231", dup311); - -var msg33122 = msg("31232", dup311); - -var msg33123 = msg("31233", dup321); - -var msg33124 = msg("31234", dup321); - -var msg33125 = msg("31235", dup321); - -var msg33126 = msg("31236", dup321); - -var msg33127 = msg("31237", dup311); - -var msg33128 = msg("31238", dup311); - -var msg33129 = msg("31239", dup321); - -var msg33130 = msg("31240", dup324); - -var msg33131 = msg("31241", dup324); - -var msg33132 = msg("31242", dup321); - -var msg33133 = msg("31243", dup321); - -var msg33134 = msg("31244", dup321); - -var msg33135 = msg("31245", dup311); - -var msg33136 = msg("31246", dup311); - -var msg33137 = msg("31247", dup321); - -var msg33138 = msg("31248", dup321); - -var msg33139 = msg("31249", dup321); - -var msg33140 = msg("31250", dup321); - -var msg33141 = msg("31251", dup321); - -var msg33142 = msg("31252", dup321); - -var msg33143 = msg("31253", dup321); - -var msg33144 = msg("31254", dup321); - -var msg33145 = msg("31255", dup321); - -var msg33146 = msg("31256", dup321); - -var msg33147 = msg("31257", dup321); - -var msg33148 = msg("31258", dup321); - -var msg33149 = msg("31259", dup314); - -var msg33150 = msg("31260", dup310); - -var msg33151 = msg("31261", dup321); - -var msg33152 = msg("31262", dup321); - -var msg33153 = msg("31263", dup321); - -var msg33154 = msg("31264", dup321); - -var msg33155 = msg("31265", dup321); - -var msg33156 = msg("31266", dup321); - -var msg33157 = msg("31267", dup321); - -var msg33158 = msg("31268", dup321); - -var msg33159 = msg("31269", dup321); - -var msg33160 = msg("31270", dup321); - -var msg33161 = msg("31271", dup321); - -var msg33162 = msg("31272", dup321); - -var msg33163 = msg("31273", dup321); - -var msg33164 = msg("31274", dup311); - -var msg33165 = msg("31275", dup311); - -var msg33166 = msg("31276", dup311); - -var msg33167 = msg("31277", dup311); - -var msg33168 = msg("31278", dup311); - -var msg33169 = msg("31279", dup311); - -var msg33170 = msg("31280", dup311); - -var msg33171 = msg("31281", dup314); - -var msg33172 = msg("31282", dup314); - -var msg33173 = msg("31283", dup325); - -var msg33174 = msg("31284", dup325); - -var msg33175 = msg("31285", dup325); - -var msg33176 = msg("31286", dup325); - -var msg33177 = msg("31287", dup321); - -var msg33178 = msg("31288", dup321); - -var msg33179 = msg("31289", dup314); - -var msg33180 = msg("31290", dup321); - -var msg33181 = msg("31291", dup311); - -var msg33182 = msg("31292", dup311); - -var msg33183 = msg("31293", dup321); - -var msg33184 = msg("31294", dup321); - -var msg33185 = msg("31295", dup321); - -var msg33186 = msg("31296", dup325); - -var msg33187 = msg("31297", dup324); - -var msg33188 = msg("31298", dup311); - -var msg33189 = msg("31299", dup321); - -var msg33190 = msg("31300", dup322); - -var msg33191 = msg("31301", dup311); - -var msg33192 = msg("31302", dup314); - -var msg33193 = msg("31303", dup321); - -var msg33194 = msg("31304", dup314); - -var msg33195 = msg("31305", dup314); - -var msg33196 = msg("31306", dup321); - -var msg33197 = msg("31307", dup321); - -var msg33198 = msg("31308", dup311); - -var msg33199 = msg("31309", dup311); - -var msg33200 = msg("31310", dup309); - -var msg33201 = msg("31311", dup309); - -var msg33202 = msg("31312", dup309); - -var msg33203 = msg("31313", dup321); - -var msg33204 = msg("31314", dup321); - -var msg33205 = msg("31315", dup321); - -var msg33206 = msg("31316", dup321); - -var msg33207 = msg("31317", dup321); - -var msg33208 = msg("31318", dup321); - -var msg33209 = msg("31319", dup321); - -var msg33210 = msg("31320", dup307); - -var msg33211 = msg("31321", dup307); - -var msg33212 = msg("31322", dup307); - -var msg33213 = msg("31323", dup311); - -var msg33214 = msg("31324", dup311); - -var msg33215 = msg("31325", dup311); - -var msg33216 = msg("31326", dup321); - -var msg33217 = msg("31327", dup321); - -var msg33218 = msg("31328", dup321); - -var msg33219 = msg("31329", dup321); - -var msg33220 = msg("31330", dup316); - -var msg33221 = msg("31331", dup311); - -var msg33222 = msg("31332", dup311); - -var msg33223 = msg("31333", dup314); - -var msg33224 = msg("31334", dup314); - -var msg33225 = msg("31335", dup314); - -var msg33226 = msg("31336", dup314); - -var msg33227 = msg("31337", dup311); - -var msg33228 = msg("31338", dup309); - -var msg33229 = msg("31339", dup314); - -var msg33230 = msg("31340", dup314); - -var msg33231 = msg("31341", dup314); - -var msg33232 = msg("31342", dup314); - -var msg33233 = msg("31343", dup321); - -var msg33234 = msg("31344", dup321); - -var msg33235 = msg("31345", dup321); - -var msg33236 = msg("31346", dup321); - -var msg33237 = msg("31347", dup311); - -var msg33238 = msg("31348", dup311); - -var msg33239 = msg("31349", dup311); - -var msg33240 = msg("31350", dup311); - -var msg33241 = msg("31351", dup311); - -var msg33242 = msg("31352", dup311); - -var msg33243 = msg("31353", dup311); - -var msg33244 = msg("31354", dup311); - -var msg33245 = msg("31355", dup321); - -var msg33246 = msg("31356", dup311); - -var msg33247 = msg("31357", dup321); - -var msg33248 = msg("31358", dup321); - -var msg33249 = msg("31359", dup321); - -var msg33250 = msg("31360", dup311); - -var msg33251 = msg("31361", dup309); - -var msg33252 = msg("31362", dup311); - -var msg33253 = msg("31363", dup314); - -var msg33254 = msg("31364", dup323); - -var msg33255 = msg("31365", dup311); - -var msg33256 = msg("31366", dup314); - -var msg33257 = msg("31367", dup314); - -var msg33258 = msg("31368", dup311); - -var msg33259 = msg("31369", dup311); - -var msg33260 = msg("31370", dup311); - -var msg33261 = msg("31371", dup311); - -var msg33262 = msg("31372", dup311); - -var msg33263 = msg("31373", dup309); - -var msg33264 = msg("31374", dup309); - -var msg33265 = msg("31375", dup309); - -var msg33266 = msg("31376", dup314); - -var msg33267 = msg("31377", dup314); - -var msg33268 = msg("31378", dup309); - -var msg33269 = msg("31379", dup309); - -var msg33270 = msg("31380", dup311); - -var msg33271 = msg("31381", dup311); - -var msg33272 = msg("31382", dup325); - -var msg33273 = msg("31383", dup325); - -var msg33274 = msg("31384", dup325); - -var msg33275 = msg("31385", dup325); - -var msg33276 = msg("31386", dup325); - -var msg33277 = msg("31387", dup325); - -var msg33278 = msg("31388", dup311); - -var msg33279 = msg("31389", dup311); - -var msg33280 = msg("31390", dup325); - -var msg33281 = msg("31391", dup325); - -var msg33282 = msg("31392", dup311); - -var msg33283 = msg("31393", dup311); - -var msg33284 = msg("31394", dup311); - -var msg33285 = msg("31395", dup311); - -var msg33286 = msg("31396", dup311); - -var msg33287 = msg("31397", dup311); - -var msg33288 = msg("31398", dup311); - -var msg33289 = msg("31399", dup314); - -var msg33290 = msg("31400", dup314); - -var msg33291 = msg("31401", dup314); - -var msg33292 = msg("31402", dup311); - -var msg33293 = msg("31403", dup325); - -var msg33294 = msg("31404", dup325); - -var all60 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg33295 = msg("31405", all60); - -var msg33296 = msg("31406", dup324); - -var msg33297 = msg("31407", dup314); - -var msg33298 = msg("31408", dup314); - -var msg33299 = msg("31409", dup314); - -var msg33300 = msg("31410", dup314); - -var msg33301 = msg("31411", dup311); - -var msg33302 = msg("31412", dup311); - -var msg33303 = msg("31413", dup311); - -var msg33304 = msg("31414", dup311); - -var msg33305 = msg("31415", dup311); - -var msg33306 = msg("31416", dup311); - -var msg33307 = msg("31417", dup325); - -var msg33308 = msg("31418", dup321); - -var msg33309 = msg("31419", dup311); - -var msg33310 = msg("31420", dup309); - -var msg33311 = msg("31421", dup309); - -var msg33312 = msg("31422", dup325); - -var msg33313 = msg("31423", dup321); - -var msg33314 = msg("31424", dup321); - -var msg33315 = msg("31425", dup314); - -var msg33316 = msg("31426", dup322); - -var msg33317 = msg("31427", dup311); - -var msg33318 = msg("31428", dup311); - -var msg33319 = msg("31429", dup311); - -var msg33320 = msg("31433", dup321); - -var msg33321 = msg("31434", dup309); - -var msg33322 = msg("31435", dup309); - -var msg33323 = msg("31436", dup309); - -var msg33324 = msg("31437", dup309); - -var msg33325 = msg("31438", dup311); - -var msg33326 = msg("31439", dup309); - -var msg33327 = msg("31440", dup309); - -var msg33328 = msg("31441", dup309); - -var msg33329 = msg("31442", dup321); - -var msg33330 = msg("31443", dup309); - -var msg33331 = msg("31444", dup321); - -var msg33332 = msg("31445", dup321); - -var msg33333 = msg("31446", dup321); - -var msg33334 = msg("31447", dup321); - -var msg33335 = msg("31448", dup321); - -var msg33336 = msg("31449", dup321); - -var msg33337 = msg("31450", dup321); - -var msg33338 = msg("31451", dup311); - -var msg33339 = msg("31452", dup321); - -var msg33340 = msg("31453", dup321); - -var msg33341 = msg("31454", dup321); - -var msg33342 = msg("31455", dup311); - -var msg33343 = msg("31456", dup321); - -var msg33344 = msg("31457", dup321); - -var msg33345 = msg("31458", dup321); - -var msg33346 = msg("31459", dup321); - -var msg33347 = msg("31460", dup309); - -var msg33348 = msg("31461", dup309); - -var msg33349 = msg("31462", dup309); - -var msg33350 = msg("31463", dup321); - -var msg33351 = msg("31464", dup321); - -var msg33352 = msg("31465", dup321); - -var msg33353 = msg("31466", dup321); - -var msg33354 = msg("31467", dup321); - -var msg33355 = msg("31468", dup321); - -var msg33356 = msg("31469", dup325); - -var msg33357 = msg("31470", dup325); - -var msg33358 = msg("31471", dup325); - -var msg33359 = msg("31472", dup321); - -var msg33360 = msg("31473", dup309); - -var msg33361 = msg("31474", dup309); - -var msg33362 = msg("31475", dup309); - -var msg33363 = msg("31476", dup309); - -var msg33364 = msg("31477", dup307); - -var msg33365 = msg("31478", dup307); - -var msg33366 = msg("31479", dup307); - -var msg33367 = msg("31480", dup307); - -var msg33368 = msg("31481", dup307); - -var msg33369 = msg("31482", dup307); - -var msg33370 = msg("31483", dup307); - -var msg33371 = msg("31484", dup307); - -var msg33372 = msg("31485", dup325); - -var msg33373 = msg("31486", dup325); - -var msg33374 = msg("31487", dup311); - -var msg33375 = msg("31488", dup311); - -var msg33376 = msg("31489", dup314); - -var msg33377 = msg("31490", dup314); - -var msg33378 = msg("31491", dup314); - -var msg33379 = msg("31492", dup314); - -var msg33380 = msg("31493", dup314); - -var msg33381 = msg("31494", dup314); - -var msg33382 = msg("31495", dup325); - -var msg33383 = msg("31496", dup325); - -var msg33384 = msg("31497", dup314); - -var msg33385 = msg("31498", dup314); - -var msg33386 = msg("31499", dup314); - -var msg33387 = msg("31500", dup314); - -var msg33388 = msg("31501", dup314); - -var msg33389 = msg("31502", dup314); - -var msg33390 = msg("31503", dup314); - -var msg33391 = msg("31504", dup311); - -var msg33392 = msg("31505", dup316); - -var msg33393 = msg("31506", dup316); - -var msg33394 = msg("31507", dup321); - -var msg33395 = msg("31508", dup321); - -var msg33396 = msg("31509", dup321); - -var msg33397 = msg("31510", dup321); - -var msg33398 = msg("31511", dup311); - -var msg33399 = msg("31512", dup311); - -var msg33400 = msg("31513", dup323); - -var msg33401 = msg("31514", dup321); - -var msg33402 = msg("31515", dup321); - -var msg33403 = msg("31516", dup321); - -var msg33404 = msg("31517", dup321); - -var msg33405 = msg("31518", dup321); - -var msg33406 = msg("31519", dup309); - -var msg33407 = msg("31520", dup309); - -var msg33408 = msg("31521", dup309); - -var msg33409 = msg("31522", dup309); - -var msg33410 = msg("31523", dup309); - -var msg33411 = msg("31524", dup309); - -var msg33412 = msg("31525", dup314); - -var msg33413 = msg("31526", dup314); - -var msg33414 = msg("31527", dup321); - -var msg33415 = msg("31528", dup321); - -var msg33416 = msg("31529", dup307); - -var msg33417 = msg("31530", dup321); - -var msg33418 = msg("31531", dup314); - -var msg33419 = msg("31532", dup314); - -var msg33420 = msg("31533", dup325); - -var msg33421 = msg("31534", dup309); - -var msg33422 = msg("31535", dup309); - -var msg33423 = msg("31536", dup309); - -var msg33424 = msg("31537", dup309); - -var msg33425 = msg("31538", dup314); - -var msg33426 = msg("31539", dup314); - -var msg33427 = msg("31540", dup309); - -var msg33428 = msg("31541", dup309); - -var msg33429 = msg("31542", dup307); - -var msg33430 = msg("31543", dup325); - -var msg33431 = msg("31544", dup321); - -var msg33432 = msg("31545", dup321); - -var msg33433 = msg("31546", dup307); - -var msg33434 = msg("31547", dup321); - -var msg33435 = msg("31548", dup321); - -var msg33436 = msg("31549", dup314); - -var msg33437 = msg("31550", dup314); - -var msg33438 = msg("31551", dup314); - -var msg33439 = msg("31552", dup314); - -var msg33440 = msg("31553", dup314); - -var msg33441 = msg("31554", dup314); - -var msg33442 = msg("31555", dup311); - -var msg33443 = msg("31556", dup310); - -var msg33444 = msg("31557", dup325); - -var msg33445 = msg("31558", dup321); - -var msg33446 = msg("31559", dup321); - -var msg33447 = msg("31560", dup314); - -var msg33448 = msg("31561", dup314); - -var msg33449 = msg("31562", dup309); - -var msg33450 = msg("31563", dup321); - -var msg33451 = msg("31564", dup333); - -var msg33452 = msg("31565", dup314); - -var msg33453 = msg("31566", dup314); - -var msg33454 = msg("31567", dup316); - -var msg33455 = msg("31568", dup314); - -var msg33456 = msg("31569", dup311); - -var msg33457 = msg("31570", dup322); - -var msg33458 = msg("31571", dup309); - -var msg33459 = msg("31572", dup309); - -var msg33460 = msg("31573", dup309); - -var msg33461 = msg("31574", dup309); - -var msg33462 = msg("31575", dup309); - -var msg33463 = msg("31576", dup309); - -var msg33464 = msg("31577", dup315); - -var msg33465 = msg("31578", dup315); - -var msg33466 = msg("31579", dup309); - -var msg33467 = msg("31580", dup311); - -var msg33468 = msg("31581", dup311); - -var msg33469 = msg("31582", dup311); - -var msg33470 = msg("31583", dup311); - -var msg33471 = msg("31584", dup323); - -var msg33472 = msg("31585", dup323); - -var msg33473 = msg("31586", dup321); - -var msg33474 = msg("31587", dup314); - -var msg33475 = msg("31588", dup307); - -var msg33476 = msg("31589", dup309); - -var msg33477 = msg("31590", dup309); - -var msg33478 = msg("31591", dup309); - -var msg33479 = msg("31592", dup309); - -var msg33480 = msg("31593", dup321); - -var msg33481 = msg("31594", dup314); - -var msg33482 = msg("31595", dup314); - -var msg33483 = msg("31596", dup314); - -var msg33484 = msg("31597", dup314); - -var msg33485 = msg("31598", dup314); - -var msg33486 = msg("31599", dup314); - -var all61 = all_match({ - processors: [ - dup66, - dup179, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg33487 = msg("31600", all61); - -var msg33488 = msg("31601", dup321); - -var msg33489 = msg("31602", dup321); - -var msg33490 = msg("31603", dup321); - -var msg33491 = msg("31604", dup321); - -var msg33492 = msg("31605", dup321); - -var msg33493 = msg("31606", dup321); - -var msg33494 = msg("31607", dup321); - -var msg33495 = msg("31608", dup311); - -var msg33496 = msg("31609", dup311); - -var msg33497 = msg("31610", dup311); - -var msg33498 = msg("31611", dup311); - -var msg33499 = msg("31612", dup324); - -var msg33500 = msg("31613", dup324); - -var msg33501 = msg("31614", dup314); - -var msg33502 = msg("31615", dup324); - -var msg33503 = msg("31616", dup324); - -var msg33504 = msg("31617", dup325); - -var msg33505 = msg("31618", dup325); - -var msg33506 = msg("31619", dup325); - -var msg33507 = msg("31620", dup325); - -var msg33508 = msg("31621", dup325); - -var msg33509 = msg("31622", dup325); - -var msg33510 = msg("31623", dup325); - -var msg33511 = msg("31624", dup325); - -var msg33512 = msg("31625", dup325); - -var msg33513 = msg("31626", dup325); - -var msg33514 = msg("31627", dup325); - -var msg33515 = msg("31628", dup325); - -var msg33516 = msg("31629", dup325); - -var msg33517 = msg("31630", dup325); - -var msg33518 = msg("31631", dup321); - -var msg33519 = msg("31632", dup321); - -var msg33520 = msg("31633", dup321); - -var msg33521 = msg("31634", dup309); - -var msg33522 = msg("31635", dup309); - -var msg33523 = msg("31636", dup322); - -var msg33524 = msg("31637", dup323); - -var msg33525 = msg("31638", dup314); - -var msg33526 = msg("31639", dup321); - -var msg33527 = msg("31640", dup321); - -var msg33528 = msg("31641", dup321); - -var msg33529 = msg("31642", dup321); - -var msg33530 = msg("31643", dup321); - -var msg33531 = msg("31644", dup321); - -var msg33532 = msg("31645", dup325); - -var msg33533 = msg("31646", dup325); - -var msg33534 = msg("31647", dup316); - -var msg33535 = msg("31648", dup316); - -var msg33536 = msg("31649", dup321); - -var msg33537 = msg("31650", dup311); - -var msg33538 = msg("31651", dup316); - -var msg33539 = msg("31652", dup316); - -var msg33540 = msg("31653", dup321); - -var msg33541 = msg("31654", dup321); - -var msg33542 = msg("31655", dup321); - -var msg33543 = msg("31656", dup321); - -var msg33544 = msg("31657", dup321); - -var msg33545 = msg("31658", dup321); - -var msg33546 = msg("31659", dup321); - -var msg33547 = msg("31660", dup321); - -var msg33548 = msg("31661", dup321); - -var msg33549 = msg("31662", dup321); - -var msg33550 = msg("31663", dup321); - -var msg33551 = msg("31664", dup328); - -var msg33552 = msg("31665", dup328); - -var msg33553 = msg("31666", dup328); - -var msg33554 = msg("31667", dup328); - -var msg33555 = msg("31668", dup311); - -var msg33556 = msg("31669", dup321); - -var msg33557 = msg("31670", dup309); - -var msg33558 = msg("31671", dup309); - -var msg33559 = msg("31672", dup324); - -var msg33560 = msg("31673", dup311); - -var msg33561 = msg("31674", dup311); - -var msg33562 = msg("31675", dup311); - -var msg33563 = msg("31676", dup311); - -var msg33564 = msg("31677", dup311); - -var msg33565 = msg("31678", dup314); - -var msg33566 = msg("31679", dup314); - -var msg33567 = msg("31680", dup321); - -var msg33568 = msg("31681", dup321); - -var msg33569 = msg("31682", dup321); - -var msg33570 = msg("31683", dup321); - -var msg33571 = msg("31684", dup314); - -var msg33572 = msg("31685", dup314); - -var msg33573 = msg("31686", dup309); - -var msg33574 = msg("31687", dup309); - -var msg33575 = msg("31688", dup325); - -var msg33576 = msg("31689", dup321); - -var msg33577 = msg("31690", dup333); - -var msg33578 = msg("31691", dup321); - -var msg33579 = msg("31692", dup311); - -var msg33580 = msg("31693", dup321); - -var msg33581 = msg("31694", dup311); - -var msg33582 = msg("31695", dup311); - -var msg33583 = msg("31696", dup314); - -var msg33584 = msg("31697", dup314); - -var msg33585 = msg("31698", dup314); - -var msg33586 = msg("31699", dup311); - -var msg33587 = msg("31700", dup311); - -var msg33588 = msg("31701", dup311); - -var msg33589 = msg("31702", dup314); - -var msg33590 = msg("31703", dup314); - -var msg33591 = msg("31704", dup311); - -var msg33592 = msg("31705", dup329); - -var msg33593 = msg("31706", dup321); - -var msg33594 = msg("31707", dup314); - -var msg33595 = msg("31708", dup314); - -var msg33596 = msg("31709", dup314); - -var msg33597 = msg("31710", dup321); - -var msg33598 = msg("31711", dup333); - -var msg33599 = msg("31712", dup321); - -var msg33600 = msg("31713", dup321); - -var msg33601 = msg("31714", dup321); - -var msg33602 = msg("31715", dup321); - -var msg33603 = msg("31716", dup321); - -var msg33604 = msg("31717", dup321); - -var msg33605 = msg("31718", dup321); - -var msg33606 = msg("31719", dup307); - -var msg33607 = msg("31720", dup321); - -var msg33608 = msg("31721", dup321); - -var msg33609 = msg("31722", dup321); - -var msg33610 = msg("31723", dup314); - -var msg33611 = msg("31724", dup314); - -var msg33612 = msg("31725", dup314); - -var msg33613 = msg("31726", dup314); - -var msg33614 = msg("31727", dup314); - -var msg33615 = msg("31728", dup322); - -var msg33616 = msg("31729", dup322); - -var msg33617 = msg("31730", dup322); - -var msg33618 = msg("31731", dup322); - -var msg33619 = msg("31732", dup314); - -var msg33620 = msg("31733", dup314); - -var msg33621 = msg("31734", dup311); - -var msg33622 = msg("31735", dup325); - -var msg33623 = msg("31736", dup325); - -var msg33624 = msg("31737", dup321); - -var msg33625 = msg("31738", dup329); - -var msg33626 = msg("31739", dup314); - -var msg33627 = msg("31740", dup314); - -var msg33628 = msg("31741", dup316); - -var msg33629 = msg("31742", dup333); - -var msg33630 = msg("31743", dup311); - -var msg33631 = msg("31744", dup321); - -var msg33632 = msg("31745", dup316); - -var msg33633 = msg("31746", dup321); - -var msg33634 = msg("31747", dup316); - -var msg33635 = msg("31748", dup321); - -var msg33636 = msg("31749", dup323); - -var msg33637 = msg("31750", dup323); - -var msg33638 = msg("31751", dup309); - -var msg33639 = msg("31752", dup309); - -var msg33640 = msg("31753", dup321); - -var msg33641 = msg("31754", dup321); - -var msg33642 = msg("31755", dup321); - -var msg33643 = msg("31756", dup314); - -var msg33644 = msg("31757", dup314); - -var msg33645 = msg("31758", dup314); - -var msg33646 = msg("31759", dup314); - -var msg33647 = msg("31760", dup325); - -var msg33648 = msg("31761", dup325); - -var msg33649 = msg("31762", dup325); - -var msg33650 = msg("31763", dup325); - -var msg33651 = msg("31764", dup324); - -var msg33652 = msg("31765", dup324); - -var msg33653 = msg("31766", dup314); - -var msg33654 = msg("31767", dup311); - -var msg33655 = msg("31768", dup321); - -var msg33656 = msg("31769", dup311); - -var msg33657 = msg("31770", dup311); - -var msg33658 = msg("31771", dup314); - -var msg33659 = msg("31772", dup321); - -var msg33660 = msg("31773", dup314); - -var msg33661 = msg("31774", dup314); - -var msg33662 = msg("31775", dup314); - -var msg33663 = msg("31776", dup314); - -var msg33664 = msg("31777", dup309); - -var msg33665 = msg("31778", dup309); - -var msg33666 = msg("31779", dup309); - -var msg33667 = msg("31780", dup309); - -var msg33668 = msg("31781", dup321); - -var msg33669 = msg("31782", dup325); - -var msg33670 = msg("31783", dup325); - -var msg33671 = msg("31784", dup325); - -var msg33672 = msg("31785", dup325); - -var msg33673 = msg("31786", dup325); - -var msg33674 = msg("31787", dup325); - -var msg33675 = msg("31788", dup325); - -var msg33676 = msg("31789", dup325); - -var msg33677 = msg("31790", dup325); - -var msg33678 = msg("31791", dup325); - -var msg33679 = msg("31792", dup325); - -var msg33680 = msg("31793", dup325); - -var msg33681 = msg("31794", dup325); - -var msg33682 = msg("31795", dup325); - -var msg33683 = msg("31796", dup325); - -var msg33684 = msg("31797", dup325); - -var msg33685 = msg("31798", dup314); - -var msg33686 = msg("31799", dup311); - -var msg33687 = msg("31800", dup311); - -var msg33688 = msg("31801", dup325); - -var msg33689 = msg("31802", dup325); - -var msg33690 = msg("31803", dup321); - -var msg33691 = msg("31804", dup321); - -var msg33692 = msg("31805", dup321); - -var msg33693 = msg("31806", dup321); - -var msg33694 = msg("31807", dup321); - -var msg33695 = msg("31808", dup323); - -var msg33696 = msg("31809", dup309); - -var msg33697 = msg("31810", dup309); - -var msg33698 = msg("31811", dup325); - -var msg33699 = msg("31812", dup325); - -var msg33700 = msg("31813", dup325); - -var msg33701 = msg("31814", dup321); - -var msg33702 = msg("31815", dup321); - -var msg33703 = msg("31816", dup321); - -var msg33704 = msg("31817", dup321); - -var msg33705 = msg("31818", dup314); - -var msg33706 = msg("31819", dup314); - -var msg33707 = msg("31820", dup321); - -var msg33708 = msg("31821", dup307); - -var msg33709 = msg("31822", dup307); - -var msg33710 = msg("31823", dup316); - -var msg33711 = msg("31824", dup321); - -var msg33712 = msg("31825", dup321); - -var msg33713 = msg("31826", dup310); - -var msg33714 = msg("31827", dup321); - -var msg33715 = msg("31828", dup321); - -var msg33716 = msg("31829", dup321); - -var msg33717 = msg("31830", dup333); - -var msg33718 = msg("31831", dup333); - -var msg33719 = msg("31832", dup321); - -var msg33720 = msg("31833", dup321); - -var msg33721 = msg("31834", dup321); - -var msg33722 = msg("31835", dup321); - -var msg33723 = msg("31836", dup321); - -var msg33724 = msg("31837", dup321); - -var msg33725 = msg("31838", dup314); - -var msg33726 = msg("31839", dup314); - -var msg33727 = msg("31840", dup314); - -var msg33728 = msg("31841", dup314); - -var msg33729 = msg("31842", dup314); - -var msg33730 = msg("31843", dup309); - -var msg33731 = msg("31844", dup309); - -var msg33732 = msg("31845", dup309); - -var msg33733 = msg("31846", dup332); - -var msg33734 = msg("31847", dup309); - -var msg33735 = msg("31848", dup309); - -var msg33736 = msg("31849", dup309); - -var msg33737 = msg("31850", dup309); - -var msg33738 = msg("31851", dup315); - -var msg33739 = msg("31852", dup315); - -var msg33740 = msg("31853", dup315); - -var msg33741 = msg("31854", dup315); - -var msg33742 = msg("31855", dup315); - -var msg33743 = msg("31856", dup315); - -var msg33744 = msg("31857", dup311); - -var msg33745 = msg("31858", dup311); - -var msg33746 = msg("31859", dup311); - -var msg33747 = msg("31860", dup311); - -var msg33748 = msg("31861", dup314); - -var msg33749 = msg("31862", dup314); - -var msg33750 = msg("31863", dup321); - -var msg33751 = msg("31864", dup321); - -var msg33752 = msg("31865", dup314); - -var msg33753 = msg("31866", dup314); - -var msg33754 = msg("31867", dup314); - -var msg33755 = msg("31868", dup314); - -var msg33756 = msg("31869", dup314); - -var msg33757 = msg("31870", dup314); - -var msg33758 = msg("31871", dup314); - -var msg33759 = msg("31872", dup321); - -var msg33760 = msg("31873", dup314); - -var msg33761 = msg("31874", dup314); - -var msg33762 = msg("31875", dup309); - -var msg33763 = msg("31876", dup309); - -var msg33764 = msg("31877", dup311); - -var msg33765 = msg("31878", dup311); - -var msg33766 = msg("31879", dup311); - -var msg33767 = msg("31880", dup311); - -var msg33768 = msg("31881", dup311); - -var msg33769 = msg("31882", dup311); - -var msg33770 = msg("31883", dup321); - -var msg33771 = msg("31884", dup321); - -var msg33772 = msg("31885", dup321); - -var msg33773 = msg("31886", dup311); - -var msg33774 = msg("31887", dup311); - -var msg33775 = msg("31888", dup311); - -var msg33776 = msg("31889", dup316); - -var msg33777 = msg("31890", dup316); - -var msg33778 = msg("31891", dup311); - -var msg33779 = msg("31892", dup311); - -var msg33780 = msg("31893", dup321); - -var msg33781 = msg("31894", dup321); - -var msg33782 = msg("31895", dup321); - -var msg33783 = msg("31896", dup321); - -var msg33784 = msg("31897", dup321); - -var msg33785 = msg("31898", dup311); - -var msg33786 = msg("31899", dup316); - -var msg33787 = msg("31900", dup316); - -var msg33788 = msg("31901", dup316); - -var msg33789 = msg("31902", dup307); - -var msg33790 = msg("31903", dup307); - -var msg33791 = msg("31904", dup321); - -var msg33792 = msg("31905", dup314); - -var msg33793 = msg("31906", dup314); - -var msg33794 = msg("31907", dup321); - -var msg33795 = msg("31908", dup321); - -var msg33796 = msg("31909", dup321); - -var msg33797 = msg("31910", dup321); - -var msg33798 = msg("31911", dup321); - -var msg33799 = msg("31912", dup311); - -var msg33800 = msg("31913", dup321); - -var msg33801 = msg("31914", dup311); - -var msg33802 = msg("31915", dup321); - -var msg33803 = msg("31916", dup321); - -var msg33804 = msg("31917", dup321); - -var msg33805 = msg("31918", dup321); - -var msg33806 = msg("31919", dup321); - -var msg33807 = msg("31920", dup321); - -var msg33808 = msg("31921", dup321); - -var msg33809 = msg("31922", dup321); - -var msg33810 = msg("31923", dup310); - -var msg33811 = msg("31924", dup321); - -var msg33812 = msg("31925", dup321); - -var msg33813 = msg("31926", dup309); - -var msg33814 = msg("31927", dup309); - -var msg33815 = msg("31928", dup321); - -var msg33816 = msg("31929", dup321); - -var msg33817 = msg("31930", dup321); - -var msg33818 = msg("31931", dup321); - -var msg33819 = msg("31932", dup321); - -var msg33820 = msg("31933", dup321); - -var msg33821 = msg("31934", dup321); - -var msg33822 = msg("31935", dup321); - -var msg33823 = msg("31936", dup321); - -var msg33824 = msg("31937", dup321); - -var msg33825 = msg("31938", dup321); - -var msg33826 = msg("31939", dup314); - -var msg33827 = msg("31940", dup314); - -var msg33828 = msg("31941", dup321); - -var msg33829 = msg("31942", dup314); - -var msg33830 = msg("31943", dup314); - -var msg33831 = msg("31944", dup321); - -var msg33832 = msg("31945", dup316); - -var msg33833 = msg("31946", dup311); - -var msg33834 = msg("31947", dup325); - -var msg33835 = msg("31948", dup325); - -var msg33836 = msg("31949", dup325); - -var msg33837 = msg("31950", dup321); - -var msg33838 = msg("31951", dup321); - -var msg33839 = msg("31952", dup321); - -var msg33840 = msg("31953", dup321); - -var msg33841 = msg("31954", dup321); - -var msg33842 = msg("31955", dup321); - -var msg33843 = msg("31956", dup316); - -var msg33844 = msg("31957", dup321); - -var msg33845 = msg("31958", dup321); - -var msg33846 = msg("31959", dup321); - -var msg33847 = msg("31960", dup325); - -var msg33848 = msg("31961", dup321); - -var msg33849 = msg("31962", dup321); - -var msg33850 = msg("31963", dup321); - -var msg33851 = msg("31964", dup321); - -var msg33852 = msg("31965", dup311); - -var msg33853 = msg("31966", dup311); - -var msg33854 = msg("31967", dup311); - -var msg33855 = msg("31968", dup311); - -var msg33856 = msg("31969", dup311); - -var msg33857 = msg("31970", dup311); - -var msg33858 = msg("31971", dup307); - -var msg33859 = msg("31972", dup311); - -var msg33860 = msg("31973", dup321); - -var msg33861 = msg("31974", dup321); - -var msg33862 = msg("31975", dup311); - -var msg33863 = msg("31976", dup311); - -var msg33864 = msg("31977", dup337); - -var msg33865 = msg("31978", dup337); - -var msg33866 = msg("31979", dup323); - -var msg33867 = msg("31980", dup324); - -var msg33868 = msg("31981", dup324); - -var msg33869 = msg("31982", dup329); - -var msg33870 = msg("31983", dup309); - -var msg33871 = msg("31984", dup324); - -var msg33872 = msg("31985", dup311); - -var msg33873 = msg("31986", dup309); - -var msg33874 = msg("31987", dup309); - -var msg33875 = msg("31988", dup311); - -var msg33876 = msg("31989", dup321); - -var msg33877 = msg("31990", dup325); - -var msg33878 = msg("31991", dup325); - -var msg33879 = msg("31992", dup200); - -var msg33880 = msg("31993", dup200); - -var msg33881 = msg("31994", dup200); - -var msg33882 = msg("31995", dup200); - -var msg33883 = msg("31996", dup200); - -var msg33884 = msg("31997", dup200); - -var msg33885 = msg("31998", dup200); - -var msg33886 = msg("31999", dup200); - -var msg33887 = msg("32000", dup200); - -var msg33888 = msg("32001", dup200); - -var msg33889 = msg("32002", dup321); - -var msg33890 = msg("32003", dup324); - -var msg33891 = msg("32004", dup324); - -var msg33892 = msg("32005", dup321); - -var msg33893 = msg("32006", dup321); - -var msg33894 = msg("32007", dup332); - -var msg33895 = msg("32008", dup311); - -var msg33896 = msg("32009", dup309); - -var msg33897 = msg("32010", dup309); - -var msg33898 = msg("32011", dup309); - -var msg33899 = msg("32012", dup323); - -var msg33900 = msg("32013", dup321); - -var msg33901 = msg("32014", dup311); - -var msg33902 = msg("32015", dup321); - -var msg33903 = msg("32016", dup321); - -var msg33904 = msg("32017", dup321); - -var msg33905 = msg("32018", dup321); - -var msg33906 = msg("32019", dup325); - -var msg33907 = msg("32020", dup321); - -var msg33908 = msg("32021", dup309); - -var msg33909 = msg("32022", dup309); - -var msg33910 = msg("32023", dup321); - -var msg33911 = msg("32024", dup314); - -var msg33912 = msg("32025", dup314); - -var msg33913 = msg("32026", dup314); - -var msg33914 = msg("32027", dup314); - -var msg33915 = msg("32028", dup321); - -var msg33916 = msg("32029", dup314); - -var msg33917 = msg("32030", dup325); - -var msg33918 = msg("32031", dup321); - -var msg33919 = msg("32032", dup321); - -var msg33920 = msg("32033", dup321); - -var msg33921 = msg("32034", dup321); - -var msg33922 = msg("32035", dup321); - -var msg33923 = msg("32036", dup321); - -var msg33924 = msg("32037", dup321); - -var msg33925 = msg("32038", dup311); - -var msg33926 = msg("32039", dup311); - -var msg33927 = msg("32040", dup321); - -var msg33928 = msg("32041", dup311); - -var msg33929 = msg("32042", dup311); - -var msg33930 = msg("32043", dup311); - -var msg33931 = msg("32044", dup314); - -var msg33932 = msg("32045", dup324); - -var msg33933 = msg("32046", dup324); - -var msg33934 = msg("32047", dup324); - -var msg33935 = msg("32048", dup321); - -var msg33936 = msg("32049", dup324); - -var msg33937 = msg("32050", dup321); - -var msg33938 = msg("32051", dup321); - -var msg33939 = msg("32052", dup314); - -var msg33940 = msg("32053", dup321); - -var msg33941 = msg("32054", dup321); - -var msg33942 = msg("32055", dup321); - -var msg33943 = msg("32056", dup314); - -var msg33944 = msg("32057", dup323); - -var msg33945 = msg("32058", dup321); - -var msg33946 = msg("32059", dup309); - -var msg33947 = msg("32060", dup325); - -var msg33948 = msg("32061", dup321); - -var msg33949 = msg("32062", dup309); - -var msg33950 = msg("32063", dup309); - -var msg33951 = msg("32064", dup309); - -var msg33952 = msg("32065", dup321); - -var msg33953 = msg("32066", dup321); - -var msg33954 = msg("32067", dup321); - -var msg33955 = msg("32068", dup314); - -var msg33956 = msg("32069", dup311); - -var msg33957 = msg("32070", dup321); - -var msg33958 = msg("32071", dup321); - -var msg33959 = msg("32072", dup321); - -var msg33960 = msg("32073", dup321); - -var msg33961 = msg("32074", dup321); - -var msg33962 = msg("32075", dup321); - -var msg33963 = msg("32076", dup314); - -var msg33964 = msg("32077", dup314); - -var msg33965 = msg("32078", dup321); - -var msg33966 = msg("32079", dup321); - -var msg33967 = msg("32080", dup321); - -var msg33968 = msg("32081", dup321); - -var msg33969 = msg("32082", dup309); - -var msg33970 = msg("32083", dup309); - -var msg33971 = msg("32084", dup309); - -var msg33972 = msg("32085", dup309); - -var msg33973 = msg("32086", dup321); - -var msg33974 = msg("32087", dup309); - -var msg33975 = msg("32088", dup309); - -var msg33976 = msg("32089", dup309); - -var msg33977 = msg("32090", dup321); - -var msg33978 = msg("32091", dup321); - -var msg33979 = msg("32092", dup325); - -var msg33980 = msg("32093", dup321); - -var msg33981 = msg("32094", dup309); - -var msg33982 = msg("32095", dup309); - -var msg33983 = msg("32096", dup321); - -var msg33984 = msg("32097", dup309); - -var msg33985 = msg("32098", dup309); - -var msg33986 = msg("32099", dup309); - -var msg33987 = msg("32100", dup309); - -var msg33988 = msg("32101", dup311); - -var msg33989 = msg("32102", dup311); - -var msg33990 = msg("32103", dup311); - -var msg33991 = msg("32104", dup311); - -var msg33992 = msg("32105", dup311); - -var msg33993 = msg("32106", dup316); - -var msg33994 = msg("32107", dup314); - -var msg33995 = msg("32108", dup314); - -var msg33996 = msg("32109", dup309); - -var msg33997 = msg("32110", dup324); - -var msg33998 = msg("32111", dup324); - -var msg33999 = msg("32112", dup324); - -var msg34000 = msg("32113", dup324); - -var msg34001 = msg("32114", dup308); - -var msg34002 = msg("32115", dup328); - -var msg34003 = msg("32116", dup328); - -var msg34004 = msg("32117", dup321); - -var msg34005 = msg("32118", dup321); - -var msg34006 = msg("32119", dup321); - -var msg34007 = msg("32120", dup321); - -var msg34008 = msg("32121", dup321); - -var msg34009 = msg("32122", dup309); - -var msg34010 = msg("32123", dup321); - -var msg34011 = msg("32124", dup200); - -var msg34012 = msg("32125", dup325); - -var msg34013 = msg("32126", dup321); - -var msg34014 = msg("32127", dup316); - -var msg34015 = msg("32128", dup316); - -var msg34016 = msg("32129", dup321); - -var msg34017 = msg("32130", dup321); - -var msg34018 = msg("32131", dup309); - -var msg34019 = msg("32132", dup309); - -var msg34020 = msg("32133", dup309); - -var msg34021 = msg("32134", dup314); - -var msg34022 = msg("32135", dup314); - -var msg34023 = msg("32136", dup307); - -var msg34024 = msg("32137", dup325); - -var msg34025 = msg("32138", dup325); - -var msg34026 = msg("32139", dup325); - -var msg34027 = msg("32140", dup325); - -var msg34028 = msg("32141", dup311); - -var msg34029 = msg("32142", dup311); - -var msg34030 = msg("32143", dup311); - -var msg34031 = msg("32144", dup311); - -var msg34032 = msg("32145", dup311); - -var msg34033 = msg("32146", dup311); - -var msg34034 = msg("32147", dup309); - -var msg34035 = msg("32148", dup309); - -var msg34036 = msg("32149", dup311); - -var msg34037 = msg("32150", dup311); - -var msg34038 = msg("32151", dup311); - -var msg34039 = msg("32152", dup311); - -var msg34040 = msg("32153", dup325); - -var msg34041 = msg("32154", dup325); - -var msg34042 = msg("32155", dup325); - -var msg34043 = msg("32156", dup325); - -var msg34044 = msg("32157", dup325); - -var msg34045 = msg("32158", dup325); - -var msg34046 = msg("32159", dup325); - -var msg34047 = msg("32160", dup325); - -var msg34048 = msg("32161", dup323); - -var msg34049 = msg("32162", dup323); - -var msg34050 = msg("32163", dup314); - -var msg34051 = msg("32164", dup314); - -var msg34052 = msg("32165", dup314); - -var msg34053 = msg("32166", dup311); - -var msg34054 = msg("32167", dup311); - -var msg34055 = msg("32168", dup325); - -var msg34056 = msg("32169", dup325); - -var msg34057 = msg("32170", dup309); - -var msg34058 = msg("32171", dup309); - -var msg34059 = msg("32172", dup321); - -var msg34060 = msg("32173", dup321); - -var msg34061 = msg("32174", dup321); - -var msg34062 = msg("32175", dup321); - -var msg34063 = msg("32176", dup321); - -var msg34064 = msg("32177", dup321); - -var msg34065 = msg("32178", dup321); - -var msg34066 = msg("32179", dup321); - -var msg34067 = msg("32180", dup321); - -var msg34068 = msg("32181", dup321); - -var msg34069 = msg("32182", dup311); - -var msg34070 = msg("32183", dup311); - -var msg34071 = msg("32184", dup311); - -var msg34072 = msg("32185", dup311); - -var msg34073 = msg("32186", dup314); - -var msg34074 = msg("32187", dup314); - -var msg34075 = msg("32188", dup321); - -var msg34076 = msg("32189", dup321); - -var msg34077 = msg("32190", dup311); - -var msg34078 = msg("32191", dup311); - -var msg34079 = msg("32192", dup321); - -var msg34080 = msg("32193", dup321); - -var msg34081 = msg("32194", dup321); - -var msg34082 = msg("32195", dup321); - -var msg34083 = msg("32196", dup321); - -var msg34084 = msg("32197", dup321); - -var msg34085 = msg("32198", dup321); - -var msg34086 = msg("32199", dup314); - -var msg34087 = msg("32200", dup321); - -var msg34088 = msg("32201", dup321); - -var msg34089 = msg("32202", dup321); - -var msg34090 = msg("32203", dup316); - -var msg34091 = msg("32204", dup314); - -var msg34092 = msg("32205", dup314); - -var msg34093 = msg("32206", dup309); - -var msg34094 = msg("32207", dup309); - -var msg34095 = msg("32208", dup309); - -var msg34096 = msg("32209", dup309); - -var msg34097 = msg("32210", dup309); - -var msg34098 = msg("32211", dup309); - -var msg34099 = msg("32212", dup309); - -var msg34100 = msg("32213", dup309); - -var msg34101 = msg("32214", dup309); - -var msg34102 = msg("32215", dup309); - -var msg34103 = msg("32216", dup309); - -var msg34104 = msg("32217", dup307); - -var msg34105 = msg("32218", dup307); - -var msg34106 = msg("32219", dup321); - -var msg34107 = msg("32220", dup321); - -var msg34108 = msg("32221", dup321); - -var msg34109 = msg("32222", dup321); - -var msg34110 = msg("32223", dup309); - -var msg34111 = msg("32224", dup309); - -var msg34112 = msg("32225", dup321); - -var msg34113 = msg("32226", dup309); - -var msg34114 = msg("32227", dup309); - -var msg34115 = msg("32228", dup309); - -var msg34116 = msg("32229", dup309); - -var msg34117 = msg("32230", dup311); - -var msg34118 = msg("32231", dup311); - -var msg34119 = msg("32232", dup311); - -var msg34120 = msg("32233", dup311); - -var msg34121 = msg("32234", dup311); - -var msg34122 = msg("32235", dup311); - -var msg34123 = msg("32236", dup311); - -var msg34124 = msg("32237", dup311); - -var msg34125 = msg("32238", dup311); - -var msg34126 = msg("32239", dup311); - -var msg34127 = msg("32240", dup314); - -var msg34128 = msg("32241", dup321); - -var msg34129 = msg("32242", dup321); - -var msg34130 = msg("32243", dup321); - -var msg34131 = msg("32244", dup323); - -var msg34132 = msg("32245", dup307); - -var msg34133 = msg("32246", dup307); - -var msg34134 = msg("32247", dup311); - -var msg34135 = msg("32248", dup321); - -var msg34136 = msg("32249", dup321); - -var msg34137 = msg("32250", dup321); - -var msg34138 = msg("32251", dup314); - -var msg34139 = msg("32252", dup314); - -var msg34140 = msg("32253", dup314); - -var msg34141 = msg("32254", dup314); - -var msg34142 = msg("32255", dup314); - -var msg34143 = msg("32256", dup314); - -var msg34144 = msg("32257", dup314); - -var msg34145 = msg("32258", dup314); - -var msg34146 = msg("32259", dup321); - -var msg34147 = msg("32260", dup321); - -var msg34148 = msg("32261", dup316); - -var msg34149 = msg("32262", dup325); - -var msg34150 = msg("32263", dup325); - -var msg34151 = msg("32264", dup314); - -var msg34152 = msg("32265", dup314); - -var msg34153 = msg("32266", dup325); - -var msg34154 = msg("32267", dup325); - -var msg34155 = msg("32268", dup316); - -var msg34156 = msg("32269", dup316); - -var msg34157 = msg("32270", dup321); - -var msg34158 = msg("32271", dup321); - -var msg34159 = msg("32272", dup321); - -var msg34160 = msg("32273", dup321); - -var msg34161 = msg("32274", dup314); - -var msg34162 = msg("32275", dup314); - -var msg34163 = msg("32276", dup311); - -var msg34164 = msg("32277", dup314); - -var msg34165 = msg("32278", dup321); - -var msg34166 = msg("32279", dup321); - -var msg34167 = msg("32280", dup321); - -var msg34168 = msg("32281", dup321); - -var msg34169 = msg("32282", dup321); - -var msg34170 = msg("32283", dup321); - -var msg34171 = msg("32284", dup321); - -var msg34172 = msg("32285", dup321); - -var msg34173 = msg("32286", dup321); - -var msg34174 = msg("32287", dup321); - -var msg34175 = msg("32288", dup321); - -var msg34176 = msg("32289", dup321); - -var msg34177 = msg("32290", dup321); - -var msg34178 = msg("32291", dup321); - -var msg34179 = msg("32292", dup321); - -var msg34180 = msg("32293", dup321); - -var msg34181 = msg("32294", dup325); - -var msg34182 = msg("32295", dup325); - -var msg34183 = msg("32296", dup325); - -var msg34184 = msg("32297", dup321); - -var msg34185 = msg("32298", dup321); - -var msg34186 = msg("32299", dup321); - -var msg34187 = msg("32300", dup321); - -var msg34188 = msg("32301", dup324); - -var msg34189 = msg("32302", dup324); - -var msg34190 = msg("32303", dup324); - -var msg34191 = msg("32304", dup324); - -var msg34192 = msg("32305", dup324); - -var msg34193 = msg("32306", dup324); - -var msg34194 = msg("32307", dup324); - -var msg34195 = msg("32308", dup324); - -var msg34196 = msg("32309", dup333); - -var msg34197 = msg("32310", dup321); - -var msg34198 = msg("32311", dup321); - -var msg34199 = msg("32312", dup321); - -var msg34200 = msg("32313", dup314); - -var msg34201 = msg("32314", dup314); - -var msg34202 = msg("32315", dup314); - -var msg34203 = msg("32316", dup314); - -var msg34204 = msg("32319", dup314); - -var msg34205 = msg("32320", dup314); - -var msg34206 = msg("32334", dup321); - -var msg34207 = msg("32335", dup311); - -var msg34208 = msg("32336", dup311); - -var msg34209 = msg("32337", dup311); - -var msg34210 = msg("32338", dup321); - -var msg34211 = msg("32342", dup316); - -var msg34212 = msg("32343", dup321); - -var msg34213 = msg("32344", dup321); - -var msg34214 = msg("32345", dup314); - -var msg34215 = msg("32346", dup314); - -var msg34216 = msg("32347", dup314); - -var msg34217 = msg("32348", dup314); - -var msg34218 = msg("32349", dup314); - -var msg34219 = msg("32350", dup323); - -var msg34220 = msg("32351", dup323); - -var msg34221 = msg("32352", dup316); - -var msg34222 = msg("32353", dup322); - -var msg34223 = msg("32354", dup321); - -var msg34224 = msg("32355", dup314); - -var msg34225 = msg("32356", dup308); - -var msg34226 = msg("32357", dup321); - -var msg34227 = msg("32358", dup311); - -var msg34228 = msg("32359", dup314); - -var msg34229 = msg("32360", dup314); - -var msg34230 = msg("32361", dup309); - -var msg34231 = msg("32362", dup325); - -var msg34232 = msg("32363", dup325); - -var msg34233 = msg("32364", dup311); - -var msg34234 = msg("32365", dup311); - -var msg34235 = msg("32366", dup311); - -var msg34236 = msg("32367", dup321); - -var msg34237 = msg("32368", dup321); - -var msg34238 = msg("32369", dup309); - -var msg34239 = msg("32370", dup309); - -var msg34240 = msg("32371", dup309); - -var msg34241 = msg("32372", dup321); - -var msg34242 = msg("32373", dup321); - -var msg34243 = msg("32374", dup321); - -var msg34244 = msg("32375", dup314); - -var msg34245 = msg("32376", dup309); - -var msg34246 = msg("32377", dup309); - -var msg34247 = msg("32378", dup314); - -var msg34248 = msg("32379", dup321); - -var msg34249 = msg("32380", dup314); - -var msg34250 = msg("32381", dup309); - -var msg34251 = msg("32382", dup309); - -var msg34252 = msg("32383", dup325); - -var msg34253 = msg("32384", dup325); - -var msg34254 = msg("32385", dup321); - -var msg34255 = msg("32386", dup311); - -var msg34256 = msg("32387", dup311); - -var msg34257 = msg("32388", dup311); - -var msg34258 = msg("32389", dup311); - -var msg34259 = msg("32390", dup311); - -var msg34260 = msg("32391", dup321); - -var msg34261 = msg("32392", dup321); - -var msg34262 = msg("32393", dup321); - -var msg34263 = msg("32394", dup321); - -var msg34264 = msg("32395", dup321); - -var msg34265 = msg("32396", dup321); - -var msg34266 = msg("32397", dup321); - -var msg34267 = msg("32398", dup314); - -var msg34268 = msg("32399", dup311); - -var msg34269 = msg("32400", dup321); - -var msg34270 = msg("32401", dup321); - -var msg34271 = msg("32402", dup325); - -var msg34272 = msg("32403", dup309); - -var msg34273 = msg("32404", dup314); - -var msg34274 = msg("32405", dup314); - -var msg34275 = msg("32406", dup314); - -var msg34276 = msg("32407", dup314); - -var msg34277 = msg("32408", dup314); - -var msg34278 = msg("32409", dup314); - -var msg34279 = msg("32410", dup314); - -var msg34280 = msg("32411", dup314); - -var msg34281 = msg("32412", dup314); - -var msg34282 = msg("32413", dup314); - -var msg34283 = msg("32414", dup309); - -var msg34284 = msg("32415", dup309); - -var msg34285 = msg("32416", dup309); - -var msg34286 = msg("32417", dup309); - -var msg34287 = msg("32418", dup309); - -var msg34288 = msg("32419", dup309); - -var msg34289 = msg("32420", dup309); - -var msg34290 = msg("32421", dup309); - -var msg34291 = msg("32422", dup309); - -var msg34292 = msg("32423", dup314); - -var msg34293 = msg("32424", dup311); - -var msg34294 = msg("32425", dup311); - -var msg34295 = msg("32426", dup325); - -var msg34296 = msg("32427", dup325); - -var msg34297 = msg("32428", dup309); - -var msg34298 = msg("32429", dup309); - -var msg34299 = msg("32430", dup311); - -var msg34300 = msg("32431", dup311); - -var msg34301 = msg("32432", dup309); - -var msg34302 = msg("32433", dup309); - -var msg34303 = msg("32434", dup309); - -var msg34304 = msg("32435", dup309); - -var msg34305 = msg("32436", dup325); - -var msg34306 = msg("32437", dup325); - -var msg34307 = msg("32438", dup325); - -var msg34308 = msg("32439", dup325); - -var msg34309 = msg("32440", dup325); - -var msg34310 = msg("32441", dup325); - -var msg34311 = msg("32442", dup325); - -var msg34312 = msg("32443", dup325); - -var msg34313 = msg("32444", dup314); - -var msg34314 = msg("32445", dup314); - -var msg34315 = msg("32446", dup321); - -var msg34316 = msg("32447", dup321); - -var msg34317 = msg("32448", dup321); - -var msg34318 = msg("32449", dup321); - -var msg34319 = msg("32450", dup321); - -var msg34320 = msg("32451", dup321); - -var msg34321 = msg("32452", dup321); - -var msg34322 = msg("32453", dup321); - -var msg34323 = msg("32454", dup321); - -var msg34324 = msg("32455", dup325); - -var msg34325 = msg("32456", dup321); - -var msg34326 = msg("32457", dup321); - -var msg34327 = msg("32458", dup323); - -var msg34328 = msg("32459", dup323); - -var msg34329 = msg("32460", dup311); - -var msg34330 = msg("32461", dup311); - -var msg34331 = msg("32462", dup307); - -var msg34332 = msg("32463", dup321); - -var msg34333 = msg("32464", dup321); - -var msg34334 = msg("32465", dup324); - -var msg34335 = msg("32466", dup324); - -var msg34336 = msg("32467", dup324); - -var msg34337 = msg("32468", dup324); - -var msg34338 = msg("32469", dup321); - -var msg34339 = msg("32470", dup309); - -var msg34340 = msg("32471", dup309); - -var msg34341 = msg("32472", dup309); - -var msg34342 = msg("32473", dup309); - -var msg34343 = msg("32474", dup311); - -var msg34344 = msg("32475", dup311); - -var msg34345 = msg("32476", dup309); - -var msg34346 = msg("32477", dup309); - -var msg34347 = msg("32478", dup325); - -var msg34348 = msg("32479", dup325); - -var msg34349 = msg("32480", dup314); - -var msg34350 = msg("32481", dup314); - -var msg34351 = msg("32482", dup325); - -var msg34352 = msg("32483", dup325); - -var msg34353 = msg("32484", dup325); - -var msg34354 = msg("32485", dup325); - -var msg34355 = msg("32486", dup321); - -var msg34356 = msg("32487", dup321); - -var msg34357 = msg("32488", dup325); - -var msg34358 = msg("32489", dup323); - -var msg34359 = msg("32490", dup323); - -var msg34360 = msg("32491", dup325); - -var msg34361 = msg("32492", dup325); - -var msg34362 = msg("32493", dup321); - -var msg34363 = msg("32494", dup321); - -var msg34364 = msg("32495", dup325); - -var msg34365 = msg("32496", dup325); - -var msg34366 = msg("32497", dup325); - -var msg34367 = msg("32498", dup325); - -var msg34368 = msg("32499", dup325); - -var msg34369 = msg("32500", dup325); - -var msg34370 = msg("32501", dup314); - -var msg34371 = msg("32502", dup314); - -var msg34372 = msg("32503", dup325); - -var msg34373 = msg("32504", dup321); - -var msg34374 = msg("32505", dup321); - -var msg34375 = msg("32506", dup321); - -var msg34376 = msg("32507", dup325); - -var msg34377 = msg("32508", dup309); - -var msg34378 = msg("32509", dup309); - -var msg34379 = msg("32510", dup321); - -var msg34380 = msg("32511", dup321); - -var msg34381 = msg("32512", dup321); - -var msg34382 = msg("32513", dup321); - -var msg34383 = msg("32514", dup309); - -var msg34384 = msg("32515", dup309); - -var msg34385 = msg("32516", dup309); - -var msg34386 = msg("32517", dup309); - -var msg34387 = msg("32518", dup311); - -var msg34388 = msg("32519", dup311); - -var msg34389 = msg("32520", dup314); - -var msg34390 = msg("32521", dup321); - -var msg34391 = msg("32522", dup321); - -var msg34392 = msg("32523", dup316); - -var msg34393 = msg("32524", dup316); - -var msg34394 = msg("32525", dup333); - -var msg34395 = msg("32526", dup314); - -var msg34396 = msg("32527", dup314); - -var msg34397 = msg("32528", dup314); - -var msg34398 = msg("32529", dup321); - -var msg34399 = msg("32530", dup309); - -var msg34400 = msg("32531", dup321); - -var msg34401 = msg("32532", dup311); - -var msg34402 = msg("32533", dup311); - -var msg34403 = msg("32534", dup324); - -var msg34404 = msg("32535", dup324); - -var msg34405 = msg("32536", dup324); - -var msg34406 = msg("32537", dup324); - -var msg34407 = msg("32538", dup324); - -var msg34408 = msg("32539", dup324); - -var msg34409 = msg("32540", dup324); - -var msg34410 = msg("32541", dup324); - -var msg34411 = msg("32542", dup324); - -var msg34412 = msg("32543", dup324); - -var msg34413 = msg("32544", dup324); - -var msg34414 = msg("32545", dup324); - -var msg34415 = msg("32546", dup307); - -var msg34416 = msg("32547", dup307); - -var msg34417 = msg("32548", dup321); - -var msg34418 = msg("32549", dup321); - -var msg34419 = msg("32550", dup321); - -var msg34420 = msg("32551", dup321); - -var msg34421 = msg("32552", dup324); - -var msg34422 = msg("32553", dup324); - -var msg34423 = msg("32554", dup311); - -var msg34424 = msg("32555", dup311); - -var msg34425 = msg("32556", dup321); - -var msg34426 = msg("32557", dup321); - -var msg34427 = msg("32558", dup311); - -var msg34428 = msg("32559", dup311); - -var msg34429 = msg("32560", dup311); - -var msg34430 = msg("32561", dup311); - -var msg34431 = msg("32562", dup309); - -var msg34432 = msg("32563", dup314); - -var msg34433 = msg("32564", dup309); - -var msg34434 = msg("32565", dup309); - -var msg34435 = msg("32566", dup314); - -var msg34436 = msg("32567", dup309); - -var msg34437 = msg("32568", dup309); - -var msg34438 = msg("32569", dup309); - -var msg34439 = msg("32570", dup309); - -var msg34440 = msg("32571", dup309); - -var msg34441 = msg("32572", dup309); - -var msg34442 = msg("32573", dup309); - -var msg34443 = msg("32574", dup309); - -var msg34444 = msg("32575", dup309); - -var msg34445 = msg("32576", dup309); - -var msg34446 = msg("32577", dup321); - -var msg34447 = msg("32578", dup321); - -var msg34448 = msg("32579", dup314); - -var msg34449 = msg("32580", dup314); - -var msg34450 = msg("32581", dup311); - -var msg34451 = msg("32582", dup311); - -var msg34452 = msg("32583", dup321); - -var msg34453 = msg("32584", dup321); - -var msg34454 = msg("32585", dup321); - -var msg34455 = msg("32586", dup321); - -var msg34456 = msg("32587", dup309); - -var msg34457 = msg("32588", dup309); - -var msg34458 = msg("32589", dup309); - -var msg34459 = msg("32590", dup314); - -var msg34460 = msg("32591", dup314); - -var msg34461 = msg("32592", dup314); - -var msg34462 = msg("32593", dup314); - -var msg34463 = msg("32594", dup314); - -var msg34464 = msg("32595", dup314); - -var msg34465 = msg("32596", dup314); - -var msg34466 = msg("32597", dup314); - -var msg34467 = msg("32598", dup323); - -var msg34468 = msg("32599", dup321); - -var msg34469 = msg("32600", dup323); - -var msg34470 = msg("32601", dup309); - -var msg34471 = msg("32602", dup314); - -var msg34472 = msg("32603", dup314); - -var msg34473 = msg("32604", dup321); - -var msg34474 = msg("32605", dup321); - -var msg34475 = msg("32606", dup321); - -var msg34476 = msg("32607", dup310); - -var msg34477 = msg("32608", dup310); - -var msg34478 = msg("32609", dup321); - -var msg34479 = msg("32610", dup321); - -var msg34480 = msg("32611", dup314); - -var msg34481 = msg("32612", dup321); - -var msg34482 = msg("32613", dup321); - -var msg34483 = msg("32614", dup321); - -var msg34484 = msg("32615", dup316); - -var msg34485 = msg("32616", dup314); - -var msg34486 = msg("32617", dup314); - -var msg34487 = msg("32618", dup314); - -var msg34488 = msg("32619", dup309); - -var msg34489 = msg("32620", dup309); - -var msg34490 = msg("32621", dup321); - -var msg34491 = msg("32622", dup321); - -var msg34492 = msg("32623", dup321); - -var msg34493 = msg("32624", dup321); - -var msg34494 = msg("32625", dup309); - -var msg34495 = msg("32626", dup314); - -var msg34496 = msg("32627", dup314); - -var msg34497 = msg("32628", dup309); - -var msg34498 = msg("32629", dup309); - -var msg34499 = msg("32630", dup309); - -var msg34500 = msg("32631", dup309); - -var msg34501 = msg("32632", dup314); - -var msg34502 = msg("32633", dup314); - -var msg34503 = msg("32634", dup314); - -var msg34504 = msg("32635", dup314); - -var msg34505 = msg("32636", dup311); - -var msg34506 = msg("32637", dup331); - -var msg34507 = msg("32638", dup311); - -var msg34508 = msg("32639", dup311); - -var msg34509 = msg("32640", dup311); - -var msg34510 = msg("32641", dup311); - -var msg34511 = msg("32642", dup314); - -var msg34512 = msg("32643", dup309); - -var msg34513 = msg("32644", dup309); - -var msg34514 = msg("32645", dup325); - -var msg34515 = msg("32646", dup321); - -var msg34516 = msg("32647", dup328); - -var msg34517 = msg("32648", dup328); - -var msg34518 = msg("32649", dup328); - -var msg34519 = msg("32650", dup328); - -var msg34520 = msg("32651", dup328); - -var msg34521 = msg("32652", dup321); - -var msg34522 = msg("32653", dup321); - -var msg34523 = msg("32654", dup321); - -var msg34524 = msg("32655", dup321); - -var msg34525 = msg("32656", dup321); - -var msg34526 = msg("32657", dup321); - -var msg34527 = msg("32658", dup321); - -var msg34528 = msg("32659", dup321); - -var msg34529 = msg("32660", dup321); - -var msg34530 = msg("32661", dup321); - -var msg34531 = msg("32662", dup321); - -var msg34532 = msg("32663", dup321); - -var msg34533 = msg("32664", dup321); - -var msg34534 = msg("32665", dup321); - -var msg34535 = msg("32666", dup321); - -var msg34536 = msg("32667", dup321); - -var msg34537 = msg("32668", dup314); - -var msg34538 = msg("32669", dup314); - -var msg34539 = msg("32670", dup321); - -var msg34540 = msg("32671", dup309); - -var msg34541 = msg("32672", dup333); - -var msg34542 = msg("32673", dup311); - -var msg34543 = msg("32674", dup321); - -var msg34544 = msg("32675", dup325); - -var msg34545 = msg("32676", dup321); - -var msg34546 = msg("32677", dup321); - -var msg34547 = msg("32678", dup321); - -var msg34548 = msg("32679", dup325); - -var msg34549 = msg("32680", dup325); - -var msg34550 = msg("32681", dup311); - -var msg34551 = msg("32682", dup311); - -var msg34552 = msg("32683", dup309); - -var msg34553 = msg("32684", dup309); - -var msg34554 = msg("32685", dup325); - -var msg34555 = msg("32686", dup325); - -var msg34556 = msg("32687", dup309); - -var msg34557 = msg("32688", dup309); - -var msg34558 = msg("32689", dup325); - -var msg34559 = msg("32690", dup325); - -var msg34560 = msg("32691", dup325); - -var msg34561 = msg("32692", dup325); - -var msg34562 = msg("32693", dup309); - -var msg34563 = msg("32694", dup309); - -var msg34564 = msg("32695", dup325); - -var msg34565 = msg("32696", dup325); - -var msg34566 = msg("32697", dup325); - -var msg34567 = msg("32698", dup325); - -var msg34568 = msg("32699", dup325); - -var msg34569 = msg("32700", dup325); - -var msg34570 = msg("32701", dup325); - -var msg34571 = msg("32702", dup325); - -var msg34572 = msg("32703", dup323); - -var msg34573 = msg("32704", dup323); - -var msg34574 = msg("32705", dup314); - -var msg34575 = msg("32706", dup321); - -var msg34576 = msg("32707", dup309); - -var msg34577 = msg("32708", dup309); - -var msg34578 = msg("32709", dup323); - -var msg34579 = msg("32710", dup325); - -var msg34580 = msg("32711", dup309); - -var msg34581 = msg("32712", dup309); - -var msg34582 = msg("32713", dup311); - -var msg34583 = msg("32714", dup311); - -var msg34584 = msg("32715", dup311); - -var msg34585 = msg("32716", dup311); - -var msg34586 = msg("32717", dup311); - -var msg34587 = msg("32718", dup309); - -var msg34588 = msg("32719", dup309); - -var msg34589 = msg("32720", dup325); - -var msg34590 = msg("32721", dup325); - -var msg34591 = msg("32722", dup325); - -var msg34592 = msg("32723", dup325); - -var msg34593 = msg("32724", dup325); - -var msg34594 = msg("32725", dup325); - -var msg34595 = msg("32726", dup321); - -var msg34596 = msg("32727", dup321); - -var msg34597 = msg("32728", dup321); - -var msg34598 = msg("32729", dup314); - -var msg34599 = msg("32730", dup311); - -var msg34600 = msg("32731", dup309); - -var msg34601 = msg("32732", dup309); - -var msg34602 = msg("32733", dup321); - -var msg34603 = msg("32734", dup321); - -var msg34604 = msg("32735", dup321); - -var msg34605 = msg("32736", dup321); - -var msg34606 = msg("32737", dup322); - -var msg34607 = msg("32738", dup307); - -var msg34608 = msg("32739", dup307); - -var msg34609 = msg("32740", dup314); - -var msg34610 = msg("32741", dup314); - -var msg34611 = msg("32742", dup311); - -var msg34612 = msg("32743", dup321); - -var msg34613 = msg("32744", dup314); - -var msg34614 = msg("32745", dup314); - -var msg34615 = msg("32746", dup314); - -var msg34616 = msg("32747", dup321); - -var msg34617 = msg("32748", dup309); - -var msg34618 = msg("32749", dup311); - -var msg34619 = msg("32750", dup311); - -var msg34620 = msg("32751", dup311); - -var msg34621 = msg("32752", dup311); - -var msg34622 = msg("32753", dup311); - -var msg34623 = msg("32754", dup328); - -var msg34624 = msg("32755", dup314); - -var msg34625 = msg("32756", dup314); - -var msg34626 = msg("32757", dup314); - -var msg34627 = msg("32758", dup314); - -var msg34628 = msg("32759", dup314); - -var msg34629 = msg("32760", dup314); - -var msg34630 = msg("32761", dup322); - -var msg34631 = msg("32762", dup325); - -var msg34632 = msg("32763", dup325); - -var msg34633 = msg("32764", dup323); - -var msg34634 = msg("32765", dup323); - -var msg34635 = msg("32766", dup323); - -var msg34636 = msg("32767", dup323); - -var msg34637 = msg("32768", dup322); - -var msg34638 = msg("32769", dup321); - -var msg34639 = msg("32770", dup321); - -var msg34640 = msg("32771", dup321); - -var msg34641 = msg("32772", dup321); - -var msg34642 = msg("32773", dup311); - -var msg34643 = msg("32774", dup200); - -var msg34644 = msg("32775", dup314); - -var msg34645 = msg("32776", dup321); - -var msg34646 = msg("32777", dup325); - -var msg34647 = msg("32778", dup325); - -var msg34648 = msg("32779", dup321); - -var msg34649 = msg("32780", dup321); - -var msg34650 = msg("32781", dup321); - -var msg34651 = msg("32782", dup309); - -var msg34652 = msg("32783", dup309); - -var msg34653 = msg("32784", dup309); - -var msg34654 = msg("32785", dup309); - -var msg34655 = msg("32786", dup311); - -var msg34656 = msg("32787", dup307); - -var msg34657 = msg("32788", dup307); - -var msg34658 = msg("32789", dup307); - -var msg34659 = msg("32790", dup307); - -var msg34660 = msg("32791", dup321); - -var msg34661 = msg("32792", dup321); - -var msg34662 = msg("32793", dup309); - -var msg34663 = msg("32794", dup309); - -var msg34664 = msg("32795", dup314); - -var msg34665 = msg("32796", dup314); - -var msg34666 = msg("32797", dup314); - -var msg34667 = msg("32798", dup314); - -var msg34668 = msg("32799", dup314); - -var msg34669 = msg("32800", dup314); - -var msg34670 = msg("32801", dup314); - -var msg34671 = msg("32802", dup314); - -var msg34672 = msg("32803", dup311); - -var msg34673 = msg("32804", dup311); - -var msg34674 = msg("32805", dup309); - -var msg34675 = msg("32806", dup309); - -var msg34676 = msg("32807", dup309); - -var msg34677 = msg("32808", dup309); - -var msg34678 = msg("32809", dup309); - -var msg34679 = msg("32810", dup309); - -var msg34680 = msg("32811", dup309); - -var msg34681 = msg("32812", dup309); - -var msg34682 = msg("32813", dup314); - -var msg34683 = msg("32814", dup314); - -var msg34684 = msg("32815", dup311); - -var msg34685 = msg("32816", dup311); - -var msg34686 = msg("32817", dup324); - -var msg34687 = msg("32818", dup324); - -var msg34688 = msg("32819", dup311); - -var msg34689 = msg("32820", dup311); - -var msg34690 = msg("32821", dup325); - -var msg34691 = msg("32822", dup325); - -var msg34692 = msg("32823", dup321); - -var msg34693 = msg("32824", dup321); - -var msg34694 = msg("32825", dup321); - -var msg34695 = msg("32826", dup321); - -var msg34696 = msg("32827", dup321); - -var msg34697 = msg("32828", dup309); - -var msg34698 = msg("32829", dup309); - -var msg34699 = msg("32830", dup309); - -var msg34700 = msg("32831", dup309); - -var msg34701 = msg("32832", dup309); - -var msg34702 = msg("32833", dup309); - -var msg34703 = msg("32834", dup309); - -var msg34704 = msg("32835", dup309); - -var msg34705 = msg("32836", dup309); - -var msg34706 = msg("32837", dup309); - -var msg34707 = msg("32838", dup314); - -var msg34708 = msg("32839", dup314); - -var msg34709 = msg("32840", dup314); - -var msg34710 = msg("32841", dup314); - -var msg34711 = msg("32842", dup314); - -var msg34712 = msg("32843", dup325); - -var msg34713 = msg("32844", dup311); - -var msg34714 = msg("32845", dup314); - -var msg34715 = msg("32846", dup314); - -var msg34716 = msg("32847", dup314); - -var msg34717 = msg("32848", dup314); - -var msg34718 = msg("32849", dup314); - -var msg34719 = msg("32850", dup314); - -var msg34720 = msg("32851", dup314); - -var msg34721 = msg("32852", dup321); - -var msg34722 = msg("32853", dup321); - -var msg34723 = msg("32854", dup321); - -var msg34724 = msg("32855", dup314); - -var msg34725 = msg("32856", dup314); - -var msg34726 = msg("32857", dup309); - -var msg34727 = msg("32858", dup309); - -var msg34728 = msg("32859", dup309); - -var msg34729 = msg("32860", dup309); - -var msg34730 = msg("32861", dup309); - -var msg34731 = msg("32862", dup309); - -var msg34732 = msg("32863", dup309); - -var msg34733 = msg("32864", dup306); - -var msg34734 = msg("32865", dup329); - -var msg34735 = msg("32866", dup314); - -var msg34736 = msg("32867", dup314); - -var msg34737 = msg("32868", dup314); - -var msg34738 = msg("32869", dup311); - -var msg34739 = msg("32870", dup311); - -var msg34740 = msg("32871", dup307); - -var msg34741 = msg("32872", dup309); - -var msg34742 = msg("32873", dup314); - -var msg34743 = msg("32874", dup314); - -var msg34744 = msg("32875", dup321); - -var msg34745 = msg("32876", dup311); - -var msg34746 = msg("32877", dup311); - -var msg34747 = msg("32878", dup311); - -var msg34748 = msg("32879", dup311); - -var msg34749 = msg("32880", dup311); - -var msg34750 = msg("32881", dup321); - -var msg34751 = msg("32882", dup321); - -var msg34752 = msg("32883", dup314); - -var msg34753 = msg("32884", dup314); - -var msg34754 = msg("32885", dup311); - -var msg34755 = msg("32886", dup311); - -var msg34756 = msg("32887", dup307); - -var msg34757 = msg("32888", dup321); - -var msg34758 = msg("32889", dup307); - -var msg34759 = msg("32890", dup309); - -var msg34760 = msg("32891", dup321); - -var msg34761 = msg("32892", dup321); - -var msg34762 = msg("32893", dup321); - -var msg34763 = msg("32894", dup314); - -var msg34764 = msg("32895", dup314); - -var msg34765 = msg("32896", dup314); - -var msg34766 = msg("32897", dup314); - -var msg34767 = msg("32898", dup309); - -var msg34768 = msg("32899", dup309); - -var msg34769 = msg("32900", dup314); - -var msg34770 = msg("32901", dup309); - -var msg34771 = msg("32902", dup309); - -var msg34772 = msg("32903", dup309); - -var msg34773 = msg("32904", dup309); - -var msg34774 = msg("32905", dup311); - -var msg34775 = msg("32906", dup311); - -var msg34776 = msg("32907", dup314); - -var msg34777 = msg("32908", dup321); - -var msg34778 = msg("32909", dup321); - -var msg34779 = msg("32910", dup321); - -var msg34780 = msg("32911", dup323); - -var msg34781 = msg("32912", dup323); - -var msg34782 = msg("32913", dup323); - -var msg34783 = msg("32914", dup323); - -var msg34784 = msg("32915", dup323); - -var msg34785 = msg("32916", dup323); - -var msg34786 = msg("32917", dup323); - -var msg34787 = msg("32918", dup323); - -var msg34788 = msg("32919", dup323); - -var msg34789 = msg("32920", dup323); - -var msg34790 = msg("32921", dup323); - -var msg34791 = msg("32922", dup323); - -var msg34792 = msg("32923", dup323); - -var msg34793 = msg("32924", dup323); - -var msg34794 = msg("32925", dup323); - -var msg34795 = msg("32926", dup323); - -var msg34796 = msg("32927", dup323); - -var msg34797 = msg("32928", dup323); - -var msg34798 = msg("32929", dup323); - -var msg34799 = msg("32930", dup323); - -var msg34800 = msg("32931", dup323); - -var msg34801 = msg("32932", dup323); - -var msg34802 = msg("32933", dup323); - -var msg34803 = msg("32934", dup323); - -var msg34804 = msg("32935", dup323); - -var msg34805 = msg("32936", dup323); - -var msg34806 = msg("32937", dup323); - -var msg34807 = msg("32938", dup323); - -var msg34808 = msg("32939", dup311); - -var msg34809 = msg("32940", dup309); - -var msg34810 = msg("32941", dup309); - -var msg34811 = msg("32942", dup309); - -var msg34812 = msg("32943", dup309); - -var msg34813 = msg("32944", dup325); - -var msg34814 = msg("32945", dup311); - -var msg34815 = msg("32946", dup311); - -var msg34816 = msg("32947", dup311); - -var msg34817 = msg("32948", dup311); - -var msg34818 = msg("32949", dup311); - -var msg34819 = msg("32950", dup321); - -var msg34820 = msg("32951", dup311); - -var msg34821 = msg("32952", dup314); - -var msg34822 = msg("32953", dup311); - -var msg34823 = msg("32954", dup311); - -var msg34824 = msg("32955", dup311); - -var msg34825 = msg("32956", dup321); - -var msg34826 = msg("32957", dup321); - -var msg34827 = msg("32958", dup321); - -var msg34828 = msg("32959", dup309); - -var msg34829 = msg("32960", dup309); - -var msg34830 = msg("32961", dup309); - -var msg34831 = msg("32962", dup314); - -var msg34832 = msg("32963", dup314); - -var msg34833 = msg("32964", dup314); - -var msg34834 = msg("32965", dup330); - -var msg34835 = msg("32966", dup330); - -var msg34836 = msg("32967", dup314); - -var msg34837 = msg("32968", dup323); - -var msg34838 = msg("32969", dup323); - -var msg34839 = msg("32970", dup323); - -var msg34840 = msg("32971", dup307); - -var msg34841 = msg("32972", dup321); - -var msg34842 = msg("32973", dup321); - -var msg34843 = msg("32974", dup314); - -var msg34844 = msg("32975", dup314); - -var msg34845 = msg("32976", dup321); - -var msg34846 = msg("32977", dup321); - -var msg34847 = msg("32978", dup325); - -var msg34848 = msg("32979", dup325); - -var msg34849 = msg("32980", dup325); - -var msg34850 = msg("32981", dup321); - -var msg34851 = msg("32982", dup321); - -var msg34852 = msg("32983", dup321); - -var msg34853 = msg("32984", dup321); - -var msg34854 = msg("32985", dup321); - -var msg34855 = msg("32986", dup321); - -var msg34856 = msg("32987", dup321); - -var msg34857 = msg("32988", dup321); - -var msg34858 = msg("32989", dup321); - -var msg34859 = msg("32990", dup321); - -var msg34860 = msg("32991", dup311); - -var msg34861 = msg("32992", dup311); - -var msg34862 = msg("32993", dup314); - -var msg34863 = msg("32994", dup314); - -var msg34864 = msg("32995", dup311); - -var msg34865 = msg("32996", dup309); - -var msg34866 = msg("32997", dup311); - -var msg34867 = msg("32998", dup311); - -var msg34868 = msg("32999", dup311); - -var msg34869 = msg("33000", dup311); - -var msg34870 = msg("33001", dup311); - -var msg34871 = msg("33002", dup311); - -var msg34872 = msg("33003", dup314); - -var msg34873 = msg("33004", dup314); - -var msg34874 = msg("33005", dup309); - -var msg34875 = msg("33006", dup309); - -var msg34876 = msg("33007", dup309); - -var msg34877 = msg("33008", dup309); - -var msg34878 = msg("33009", dup309); - -var msg34879 = msg("33010", dup309); - -var msg34880 = msg("33011", dup309); - -var msg34881 = msg("33012", dup309); - -var msg34882 = msg("33013", dup314); - -var msg34883 = msg("33014", dup314); - -var msg34884 = msg("33015", dup311); - -var msg34885 = msg("33016", dup309); - -var msg34886 = msg("33017", dup309); - -var msg34887 = msg("33018", dup309); - -var msg34888 = msg("33019", dup309); - -var msg34889 = msg("33020", dup309); - -var msg34890 = msg("33021", dup309); - -var msg34891 = msg("33022", dup309); - -var msg34892 = msg("33023", dup309); - -var msg34893 = msg("33024", dup311); - -var msg34894 = msg("33025", dup311); - -var msg34895 = msg("33026", dup314); - -var msg34896 = msg("33027", dup314); - -var msg34897 = msg("33028", dup314); - -var msg34898 = msg("33029", dup309); - -var msg34899 = msg("33030", dup309); - -var msg34900 = msg("33031", dup309); - -var msg34901 = msg("33032", dup309); - -var msg34902 = msg("33033", dup309); - -var msg34903 = msg("33034", dup309); - -var msg34904 = msg("33035", dup309); - -var msg34905 = msg("33036", dup309); - -var msg34906 = msg("33037", dup309); - -var msg34907 = msg("33038", dup309); - -var msg34908 = msg("33039", dup309); - -var msg34909 = msg("33040", dup309); - -var msg34910 = msg("33041", dup309); - -var msg34911 = msg("33042", dup309); - -var msg34912 = msg("33043", dup307); - -var msg34913 = msg("33044", dup314); - -var msg34914 = msg("33045", dup314); - -var msg34915 = msg("33046", dup314); - -var msg34916 = msg("33047", dup325); - -var msg34917 = msg("33048", dup314); - -var msg34918 = msg("33049", dup314); - -var msg34919 = msg("33050", dup309); - -var msg34920 = msg("33051", dup314); - -var msg34921 = msg("33052", dup314); - -var msg34922 = msg("33053", dup324); - -var msg34923 = msg("33054", dup321); - -var msg34924 = msg("33055", dup321); - -var msg34925 = msg("33056", dup321); - -var msg34926 = msg("33057", dup321); - -var msg34927 = msg("33058", dup321); - -var msg34928 = msg("33059", dup321); - -var msg34929 = msg("33060", dup321); - -var msg34930 = msg("33061", dup321); - -var msg34931 = msg("33062", dup333); - -var msg34932 = msg("33063", dup333); - -var msg34933 = msg("33064", dup321); - -var msg34934 = msg("33065", dup321); - -var msg34935 = msg("33066", dup321); - -var msg34936 = msg("33067", dup321); - -var msg34937 = msg("33068", dup321); - -var msg34938 = msg("33069", dup321); - -var msg34939 = msg("33070", dup333); - -var msg34940 = msg("33071", dup333); - -var msg34941 = msg("33072", dup333); - -var msg34942 = msg("33073", dup333); - -var msg34943 = msg("33074", dup323); - -var msg34944 = msg("33075", dup323); - -var msg34945 = msg("33076", dup323); - -var msg34946 = msg("33077", dup324); - -var msg34947 = msg("33078", dup324); - -var msg34948 = msg("33079", dup324); - -var msg34949 = msg("33080", dup324); - -var msg34950 = msg("33081", dup321); - -var msg34951 = msg("33082", dup321); - -var msg34952 = msg("33083", dup321); - -var msg34953 = msg("33084", dup321); - -var msg34954 = msg("33085", dup325); - -var msg34955 = msg("33086", dup325); - -var msg34956 = msg("33087", dup309); - -var msg34957 = msg("33088", dup311); - -var msg34958 = msg("33089", dup311); - -var msg34959 = msg("33090", dup311); - -var msg34960 = msg("33091", dup311); - -var msg34961 = msg("33092", dup311); - -var msg34962 = msg("33093", dup325); - -var msg34963 = msg("33094", dup325); - -var msg34964 = msg("33095", dup325); - -var msg34965 = msg("33096", dup325); - -var msg34966 = msg("33097", dup325); - -var msg34967 = msg("33098", dup325); - -var msg34968 = msg("33099", dup325); - -var msg34969 = msg("33100", dup314); - -var msg34970 = msg("33101", dup314); - -var msg34971 = msg("33102", dup314); - -var msg34972 = msg("33103", dup314); - -var msg34973 = msg("33104", dup323); - -var msg34974 = msg("33105", dup336); - -var msg34975 = msg("33106", dup336); - -var msg34976 = msg("33107", dup336); - -var msg34977 = msg("33108", dup336); - -var msg34978 = msg("33109", dup314); - -var msg34979 = msg("33110", dup314); - -var msg34980 = msg("33111", dup314); - -var msg34981 = msg("33112", dup314); - -var msg34982 = msg("33113", dup311); - -var msg34983 = msg("33114", dup311); - -var msg34984 = msg("33115", dup309); - -var msg34985 = msg("33116", dup309); - -var msg34986 = msg("33117", dup321); - -var msg34987 = msg("33118", dup321); - -var msg34988 = msg("33119", dup321); - -var msg34989 = msg("33120", dup321); - -var msg34990 = msg("33121", dup321); - -var msg34991 = msg("33122", dup321); - -var msg34992 = msg("33123", dup321); - -var msg34993 = msg("33124", dup321); - -var msg34994 = msg("33125", dup321); - -var msg34995 = msg("33126", dup321); - -var msg34996 = msg("33127", dup321); - -var msg34997 = msg("33128", dup321); - -var msg34998 = msg("33129", dup321); - -var msg34999 = msg("33130", dup321); - -var msg35000 = msg("33131", dup321); - -var msg35001 = msg("33132", dup321); - -var msg35002 = msg("33133", dup321); - -var msg35003 = msg("33134", dup321); - -var msg35004 = msg("33135", dup321); - -var msg35005 = msg("33136", dup321); - -var msg35006 = msg("33137", dup321); - -var msg35007 = msg("33138", dup321); - -var msg35008 = msg("33139", dup321); - -var msg35009 = msg("33140", dup321); - -var msg35010 = msg("33141", dup321); - -var msg35011 = msg("33142", dup321); - -var msg35012 = msg("33143", dup321); - -var msg35013 = msg("33144", dup321); - -var msg35014 = msg("33145", dup321); - -var msg35015 = msg("33146", dup321); - -var msg35016 = msg("33147", dup335); - -var msg35017 = msg("33148", dup335); - -var msg35018 = msg("33149", dup321); - -var msg35019 = msg("33150", dup321); - -var msg35020 = msg("33151", dup321); - -var msg35021 = msg("33152", dup321); - -var msg35022 = msg("33153", dup321); - -var msg35023 = msg("33154", dup321); - -var msg35024 = msg("33155", dup314); - -var msg35025 = msg("33156", dup314); - -var msg35026 = msg("33157", dup307); - -var msg35027 = msg("33158", dup307); - -var msg35028 = msg("33159", dup324); - -var msg35029 = msg("33160", dup324); - -var msg35030 = msg("33161", dup321); - -var msg35031 = msg("33162", dup325); - -var msg35032 = msg("33163", dup325); - -var msg35033 = msg("33164", dup309); - -var msg35034 = msg("33165", dup321); - -var msg35035 = msg("33166", dup311); - -var msg35036 = msg("33167", dup311); - -var msg35037 = msg("33168", dup311); - -var msg35038 = msg("33169", dup311); - -var msg35039 = msg("33170", dup333); - -var msg35040 = msg("33171", dup333); - -var msg35041 = msg("33172", dup333); - -var msg35042 = msg("33173", dup333); - -var msg35043 = msg("33174", dup333); - -var msg35044 = msg("33175", dup333); - -var msg35045 = msg("33176", dup311); - -var msg35046 = msg("33177", dup311); - -var msg35047 = msg("33178", dup309); - -var msg35048 = msg("33179", dup309); - -var msg35049 = msg("33180", dup309); - -var msg35050 = msg("33181", dup309); - -var msg35051 = msg("33182", dup311); - -var msg35052 = msg("33183", dup311); - -var msg35053 = msg("33184", dup311); - -var msg35054 = msg("33185", dup311); - -var msg35055 = msg("33186", dup311); - -var msg35056 = msg("33187", dup311); - -var msg35057 = msg("33188", dup321); - -var msg35058 = msg("33189", dup316); - -var msg35059 = msg("33190", dup316); - -var msg35060 = msg("33191", dup325); - -var msg35061 = msg("33192", dup325); - -var msg35062 = msg("33193", dup325); - -var msg35063 = msg("33194", dup325); - -var msg35064 = msg("33195", dup325); - -var msg35065 = msg("33196", dup325); - -var msg35066 = msg("33197", dup314); - -var msg35067 = msg("33198", dup309); - -var msg35068 = msg("33199", dup321); - -var msg35069 = msg("33200", dup321); - -var msg35070 = msg("33201", dup311); - -var msg35071 = msg("33202", dup311); - -var msg35072 = msg("33203", dup311); - -var msg35073 = msg("33204", dup311); - -var msg35074 = msg("33205", dup311); - -var msg35075 = msg("33206", dup311); - -var msg35076 = msg("33207", dup325); - -var msg35077 = msg("33208", dup321); - -var msg35078 = msg("33209", dup321); - -var msg35079 = msg("33210", dup321); - -var msg35080 = msg("33211", dup321); - -var msg35081 = msg("33212", dup333); - -var msg35082 = msg("33213", dup311); - -var msg35083 = msg("33214", dup311); - -var msg35084 = msg("33215", dup321); - -var msg35085 = msg("33216", dup321); - -var msg35086 = msg("33217", dup321); - -var msg35087 = msg("33218", dup321); - -var msg35088 = msg("33219", dup321); - -var msg35089 = msg("33220", dup321); - -var msg35090 = msg("33221", dup321); - -var msg35091 = msg("33222", dup321); - -var msg35092 = msg("33223", dup321); - -var msg35093 = msg("33224", dup200); - -var msg35094 = msg("33225", dup309); - -var msg35095 = msg("33226", dup309); - -var msg35096 = msg("33227", dup321); - -var msg35097 = msg("33228", dup321); - -var msg35098 = msg("33229", dup311); - -var msg35099 = msg("33230", dup325); - -var msg35100 = msg("33231", dup325); - -var msg35101 = msg("33232", dup325); - -var msg35102 = msg("33233", dup325); - -var msg35103 = msg("33234", dup325); - -var msg35104 = msg("33235", dup325); - -var msg35105 = msg("33236", dup325); - -var msg35106 = msg("33237", dup325); - -var msg35107 = msg("33238", dup325); - -var msg35108 = msg("33239", dup325); - -var msg35109 = msg("33240", dup325); - -var msg35110 = msg("33241", dup325); - -var msg35111 = msg("33242", dup325); - -var msg35112 = msg("33243", dup325); - -var msg35113 = msg("33244", dup325); - -var msg35114 = msg("33245", dup325); - -var msg35115 = msg("33246", dup325); - -var msg35116 = msg("33247", dup325); - -var msg35117 = msg("33248", dup325); - -var msg35118 = msg("33249", dup325); - -var msg35119 = msg("33250", dup325); - -var msg35120 = msg("33251", dup325); - -var msg35121 = msg("33252", dup325); - -var msg35122 = msg("33253", dup325); - -var msg35123 = msg("33254", dup325); - -var msg35124 = msg("33255", dup325); - -var msg35125 = msg("33256", dup325); - -var msg35126 = msg("33257", dup325); - -var msg35127 = msg("33258", dup325); - -var msg35128 = msg("33259", dup325); - -var msg35129 = msg("33260", dup325); - -var msg35130 = msg("33261", dup314); - -var msg35131 = msg("33262", dup314); - -var msg35132 = msg("33263", dup314); - -var msg35133 = msg("33264", dup314); - -var msg35134 = msg("33265", dup314); - -var msg35135 = msg("33266", dup314); - -var msg35136 = msg("33267", dup314); - -var msg35137 = msg("33268", dup314); - -var msg35138 = msg("33269", dup314); - -var msg35139 = msg("33270", dup314); - -var msg35140 = msg("33271", dup311); - -var msg35141 = msg("33272", dup311); - -var msg35142 = msg("33273", dup311); - -var msg35143 = msg("33274", dup311); - -var msg35144 = msg("33275", dup309); - -var msg35145 = msg("33276", dup316); - -var msg35146 = msg("33277", dup316); - -var msg35147 = msg("33278", dup316); - -var msg35148 = msg("33279", dup311); - -var msg35149 = msg("33280", dup321); - -var msg35150 = msg("33281", dup321); - -var msg35151 = msg("33282", dup321); - -var msg35152 = msg("33283", dup321); - -var msg35153 = msg("33284", dup321); - -var msg35154 = msg("33285", dup321); - -var msg35155 = msg("33286", dup311); - -var msg35156 = msg("33287", dup325); - -var msg35157 = msg("33288", dup325); - -var msg35158 = msg("33289", dup321); - -var msg35159 = msg("33290", dup314); - -var msg35160 = msg("33291", dup314); - -var msg35161 = msg("33292", dup311); - -var msg35162 = msg("33293", dup314); - -var msg35163 = msg("33294", dup314); - -var msg35164 = msg("33295", dup309); - -var msg35165 = msg("33296", dup309); - -var msg35166 = msg("33297", dup309); - -var msg35167 = msg("33298", dup309); - -var msg35168 = msg("33299", dup321); - -var msg35169 = msg("33300", dup324); - -var msg35170 = msg("33301", dup324); - -var msg35171 = msg("33302", dup324); - -var msg35172 = msg("33303", dup324); - -var msg35173 = msg("33304", dup321); - -var msg35174 = msg("33305", dup321); - -var msg35175 = msg("33306", dup321); - -var msg35176 = msg("33307", dup311); - -var msg35177 = msg("33308", dup311); - -var msg35178 = msg("33309", dup309); - -var msg35179 = msg("33310", dup309); - -var msg35180 = msg("33311", dup321); - -var msg35181 = msg("33312", dup311); - -var msg35182 = msg("33313", dup311); - -var msg35183 = msg("33314", dup325); - -var msg35184 = msg("33315", dup325); - -var msg35185 = msg("33316", dup325); - -var msg35186 = msg("33317", dup325); - -var msg35187 = msg("33318", dup325); - -var msg35188 = msg("33319", dup325); - -var msg35189 = msg("33320", dup325); - -var msg35190 = msg("33321", dup325); - -var msg35191 = msg("33322", dup325); - -var msg35192 = msg("33323", dup311); - -var msg35193 = msg("33324", dup325); - -var msg35194 = msg("33325", dup325); - -var msg35195 = msg("33326", dup321); - -var msg35196 = msg("33327", dup321); - -var msg35197 = msg("33328", dup321); - -var msg35198 = msg("33329", dup321); - -var msg35199 = msg("33330", dup321); - -var msg35200 = msg("33331", dup325); - -var msg35201 = msg("33332", dup325); - -var msg35202 = msg("33333", dup325); - -var msg35203 = msg("33334", dup325); - -var msg35204 = msg("33335", dup325); - -var msg35205 = msg("33336", dup325); - -var msg35206 = msg("33337", dup325); - -var msg35207 = msg("33338", dup325); - -var msg35208 = msg("33339", dup316); - -var msg35209 = msg("33340", dup325); - -var msg35210 = msg("33341", dup325); - -var msg35211 = msg("33342", dup321); - -var msg35212 = msg("33343", dup314); - -var msg35213 = msg("33344", dup314); - -var msg35214 = msg("33345", dup325); - -var msg35215 = msg("33346", dup325); - -var msg35216 = msg("33347", dup325); - -var msg35217 = msg("33348", dup325); - -var msg35218 = msg("33349", dup325); - -var msg35219 = msg("33350", dup309); - -var msg35220 = msg("33351", dup309); - -var msg35221 = msg("33352", dup311); - -var msg35222 = msg("33353", dup325); - -var msg35223 = msg("33354", dup325); - -var msg35224 = msg("33355", dup314); - -var msg35225 = msg("33356", dup325); - -var msg35226 = msg("33357", dup325); - -var msg35227 = msg("33358", dup325); - -var msg35228 = msg("33359", dup325); - -var msg35229 = msg("33360", dup325); - -var msg35230 = msg("33361", dup325); - -var msg35231 = msg("33362", dup309); - -var msg35232 = msg("33363", dup314); - -var msg35233 = msg("33364", dup314); - -var msg35234 = msg("33365", dup325); - -var msg35235 = msg("33366", dup325); - -var msg35236 = msg("33367", dup314); - -var msg35237 = msg("33368", dup314); - -var msg35238 = msg("33369", dup314); - -var msg35239 = msg("33370", dup314); - -var msg35240 = msg("33371", dup314); - -var msg35241 = msg("33372", dup314); - -var msg35242 = msg("33373", dup314); - -var msg35243 = msg("33374", dup314); - -var msg35244 = msg("33375", dup314); - -var msg35245 = msg("33376", dup314); - -var msg35246 = msg("33377", dup314); - -var msg35247 = msg("33378", dup314); - -var msg35248 = msg("33379", dup314); - -var msg35249 = msg("33380", dup314); - -var msg35250 = msg("33381", dup314); - -var msg35251 = msg("33382", dup314); - -var msg35252 = msg("33383", dup314); - -var msg35253 = msg("33384", dup314); - -var msg35254 = msg("33385", dup314); - -var msg35255 = msg("33386", dup314); - -var msg35256 = msg("33387", dup314); - -var msg35257 = msg("33388", dup314); - -var msg35258 = msg("33389", dup314); - -var msg35259 = msg("33390", dup314); - -var msg35260 = msg("33391", dup314); - -var msg35261 = msg("33392", dup314); - -var msg35262 = msg("33393", dup314); - -var msg35263 = msg("33394", dup314); - -var msg35264 = msg("33395", dup314); - -var msg35265 = msg("33396", dup314); - -var msg35266 = msg("33397", dup314); - -var msg35267 = msg("33398", dup314); - -var msg35268 = msg("33399", dup314); - -var msg35269 = msg("33400", dup314); - -var msg35270 = msg("33401", dup314); - -var msg35271 = msg("33402", dup314); - -var msg35272 = msg("33403", dup314); - -var msg35273 = msg("33404", dup314); - -var msg35274 = msg("33405", dup314); - -var msg35275 = msg("33406", dup314); - -var msg35276 = msg("33407", dup314); - -var msg35277 = msg("33408", dup314); - -var msg35278 = msg("33409", dup314); - -var msg35279 = msg("33410", dup314); - -var msg35280 = msg("33411", dup321); - -var msg35281 = msg("33412", dup311); - -var msg35282 = msg("33413", dup325); - -var msg35283 = msg("33414", dup325); - -var msg35284 = msg("33415", dup325); - -var msg35285 = msg("33416", dup325); - -var msg35286 = msg("33417", dup325); - -var msg35287 = msg("33418", dup325); - -var msg35288 = msg("33419", dup325); - -var msg35289 = msg("33420", dup325); - -var msg35290 = msg("33421", dup311); - -var msg35291 = msg("33422", dup311); - -var msg35292 = msg("33423", dup325); - -var msg35293 = msg("33424", dup325); - -var msg35294 = msg("33425", dup325); - -var msg35295 = msg("33426", dup325); - -var msg35296 = msg("33427", dup325); - -var msg35297 = msg("33428", dup325); - -var msg35298 = msg("33429", dup311); - -var msg35299 = msg("33430", dup314); - -var msg35300 = msg("33431", dup321); - -var msg35301 = msg("33432", dup321); - -var msg35302 = msg("33433", dup321); - -var msg35303 = msg("33434", dup321); - -var msg35304 = msg("33435", dup321); - -var msg35305 = msg("33436", dup309); - -var msg35306 = msg("33437", dup309); - -var msg35307 = msg("33438", dup321); - -var msg35308 = msg("33439", dup321); - -var msg35309 = msg("33440", dup311); - -var msg35310 = msg("33441", dup309); - -var msg35311 = msg("33442", dup309); - -var msg35312 = msg("33443", dup321); - -var msg35313 = msg("33444", dup321); - -var msg35314 = msg("33445", dup323); - -var msg35315 = msg("33446", dup316); - -var msg35316 = msg("33447", dup316); - -var msg35317 = msg("33448", dup316); - -var msg35318 = msg("33449", dup323); - -var msg35319 = msg("33450", dup321); - -var msg35320 = msg("33451", dup309); - -var msg35321 = msg("33452", dup314); - -var msg35322 = msg("33453", dup321); - -var msg35323 = msg("33454", dup309); - -var msg35324 = msg("33455", dup309); - -var msg35325 = msg("33456", dup321); - -var msg35326 = msg("33457", dup321); - -var msg35327 = msg("33458", dup311); - -var msg35328 = msg("33459", dup311); - -var msg35329 = msg("33460", dup311); - -var msg35330 = msg("33461", dup311); - -var msg35331 = msg("33462", dup311); - -var msg35332 = msg("33463", dup311); - -var msg35333 = msg("33464", dup321); - -var msg35334 = msg("33465", dup309); - -var msg35335 = msg("33466", dup309); - -var msg35336 = msg("33467", dup309); - -var msg35337 = msg("33468", dup309); - -var msg35338 = msg("33469", dup311); - -var msg35339 = msg("33470", dup311); - -var msg35340 = msg("33471", dup311); - -var msg35341 = msg("33472", dup311); - -var msg35342 = msg("33473", dup311); - -var msg35343 = msg("33474", dup311); - -var msg35344 = msg("33475", dup314); - -var msg35345 = msg("33476", dup314); - -var msg35346 = msg("33477", dup314); - -var msg35347 = msg("33478", dup314); - -var msg35348 = msg("33564", dup309); - -var msg35349 = msg("33565", dup311); - -var msg35350 = msg("33566", dup309); - -var msg35351 = msg("33567", dup309); - -var msg35352 = msg("33568", dup309); - -var msg35353 = msg("33569", dup311); - -var msg35354 = msg("33570", dup311); - -var msg35355 = msg("33571", dup311); - -var msg35356 = msg("33572", dup311); - -var msg35357 = msg("33573", dup323); - -var msg35358 = msg("33574", dup323); - -var msg35359 = msg("33575", dup311); - -var msg35360 = msg("33576", dup311); - -var msg35361 = msg("33577", dup311); - -var msg35362 = msg("33578", dup311); - -var msg35363 = msg("33579", dup314); - -var msg35364 = msg("33580", dup321); - -var msg35365 = msg("33581", dup314); - -var msg35366 = msg("33582", dup309); - -var msg35367 = msg("33583", dup324); - -var msg35368 = msg("33584", dup311); - -var msg35369 = msg("33585", dup311); - -var msg35370 = msg("33586", dup311); - -var msg35371 = msg("33587", dup309); - -var msg35372 = msg("33588", dup309); - -var msg35373 = msg("33589", dup309); - -var msg35374 = msg("33590", dup309); - -var msg35375 = msg("33591", dup309); - -var msg35376 = msg("33592", dup309); - -var msg35377 = msg("33593", dup309); - -var msg35378 = msg("33594", dup321); - -var msg35379 = msg("33595", dup309); - -var msg35380 = msg("33596", dup309); - -var msg35381 = msg("33597", dup314); - -var msg35382 = msg("33598", dup314); - -var msg35383 = msg("33599", dup314); - -var msg35384 = msg("33600", dup321); - -var msg35385 = msg("33601", dup311); - -var msg35386 = msg("33602", dup311); - -var msg35387 = msg("33603", dup311); - -var msg35388 = msg("33604", dup311); - -var msg35389 = msg("33605", dup325); - -var msg35390 = msg("33606", dup325); - -var msg35391 = msg("33607", dup314); - -var msg35392 = msg("33608", dup314); - -var msg35393 = msg("33609", dup310); - -var msg35394 = msg("33610", dup310); - -var msg35395 = msg("33611", dup310); - -var msg35396 = msg("33612", dup314); - -var msg35397 = msg("33613", dup314); - -var msg35398 = msg("33614", dup314); - -var msg35399 = msg("33615", dup311); - -var msg35400 = msg("33618", dup321); - -var msg35401 = msg("33619", dup321); - -var msg35402 = msg("33620", dup321); - -var msg35403 = msg("33621", dup321); - -var msg35404 = msg("33622", dup324); - -var msg35405 = msg("33623", dup324); - -var msg35406 = msg("33624", dup324); - -var msg35407 = msg("33625", dup324); - -var msg35408 = msg("33626", dup324); - -var msg35409 = msg("33627", dup324); - -var msg35410 = msg("33628", dup324); - -var msg35411 = msg("33629", dup324); - -var msg35412 = msg("33630", dup324); - -var msg35413 = msg("33631", dup324); - -var msg35414 = msg("33632", dup316); - -var msg35415 = msg("33633", dup325); - -var msg35416 = msg("33634", dup324); - -var msg35417 = msg("33635", dup324); - -var msg35418 = msg("33636", dup308); - -var msg35419 = msg("33637", dup322); - -var msg35420 = msg("33638", dup324); - -var msg35421 = msg("33639", dup324); - -var msg35422 = msg("33640", dup314); - -var msg35423 = msg("33641", dup314); - -var msg35424 = msg("33642", dup314); - -var msg35425 = msg("33643", dup309); - -var msg35426 = msg("33644", dup309); - -var msg35427 = msg("33645", dup321); - -var msg35428 = msg("33646", dup324); - -var msg35429 = msg("33647", dup324); - -var msg35430 = msg("33648", dup324); - -var msg35431 = msg("33649", dup325); - -var msg35432 = msg("33650", dup321); - -var msg35433 = msg("33651", dup322); - -var msg35434 = msg("33652", dup322); - -var msg35435 = msg("33653", dup322); - -var all62 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup122, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg35436 = msg("33654", all62); - -var msg35437 = msg("33655", dup310); - -var msg35438 = msg("33656", dup321); - -var msg35439 = msg("33657", dup307); - -var msg35440 = msg("33658", dup307); - -var msg35441 = msg("33659", dup307); - -var msg35442 = msg("33660", dup321); - -var msg35443 = msg("33661", dup314); - -var msg35444 = msg("33662", dup314); - -var msg35445 = msg("33663", dup311); - -var msg35446 = msg("33664", dup314); - -var msg35447 = msg("33665", dup316); - -var msg35448 = msg("33666", dup314); - -var msg35449 = msg("33667", dup314); - -var msg35450 = msg("33668", dup314); - -var msg35451 = msg("33669", dup311); - -var msg35452 = msg("33670", dup324); - -var msg35453 = msg("33671", dup324); - -var msg35454 = msg("33672", dup324); - -var msg35455 = msg("33673", dup321); - -var msg35456 = msg("33674", dup321); - -var msg35457 = msg("33675", dup321); - -var msg35458 = msg("33676", dup316); - -var msg35459 = msg("33677", dup321); - -var msg35460 = msg("33678", dup321); - -var msg35461 = msg("33679", dup324); - -var msg35462 = msg("33680", dup324); - -var msg35463 = msg("33681", dup321); - -var msg35464 = msg("33682", dup314); - -var msg35465 = msg("33683", dup314); - -var msg35466 = msg("33684", dup311); - -var msg35467 = msg("33685", dup311); - -var msg35468 = msg("33686", dup323); - -var msg35469 = msg("33687", dup323); - -var msg35470 = msg("33688", dup323); - -var msg35471 = msg("33689", dup323); - -var msg35472 = msg("33690", dup323); - -var msg35473 = msg("33691", dup323); - -var msg35474 = msg("33692", dup323); - -var msg35475 = msg("33693", dup323); - -var msg35476 = msg("33694", dup323); - -var msg35477 = msg("33695", dup323); - -var msg35478 = msg("33696", dup323); - -var msg35479 = msg("33697", dup323); - -var msg35480 = msg("33698", dup323); - -var msg35481 = msg("33699", dup323); - -var msg35482 = msg("33700", dup323); - -var msg35483 = msg("33701", dup323); - -var msg35484 = msg("33702", dup323); - -var msg35485 = msg("33703", dup323); - -var msg35486 = msg("33704", dup321); - -var msg35487 = msg("33705", dup309); - -var msg35488 = msg("33706", dup309); - -var msg35489 = msg("33707", dup325); - -var msg35490 = msg("33708", dup325); - -var msg35491 = msg("33709", dup323); - -var msg35492 = msg("33710", dup323); - -var msg35493 = msg("33711", dup314); - -var msg35494 = msg("33712", dup314); - -var msg35495 = msg("33713", dup309); - -var msg35496 = msg("33714", dup309); - -var msg35497 = msg("33715", dup309); - -var msg35498 = msg("33716", dup309); - -var msg35499 = msg("33717", dup314); - -var msg35500 = msg("33718", dup311); - -var msg35501 = msg("33719", dup311); - -var msg35502 = msg("33720", dup325); - -var msg35503 = msg("33721", dup325); - -var msg35504 = msg("33722", dup309); - -var msg35505 = msg("33723", dup309); - -var msg35506 = msg("33724", dup311); - -var msg35507 = msg("33725", dup311); - -var msg35508 = msg("33726", dup325); - -var msg35509 = msg("33727", dup325); - -var msg35510 = msg("33728", dup314); - -var msg35511 = msg("33729", dup314); - -var msg35512 = msg("33730", dup325); - -var msg35513 = msg("33731", dup325); - -var msg35514 = msg("33732", dup314); - -var msg35515 = msg("33733", dup314); - -var msg35516 = msg("33734", dup309); - -var msg35517 = msg("33735", dup309); - -var msg35518 = msg("33736", dup325); - -var msg35519 = msg("33737", dup325); - -var msg35520 = msg("33738", dup325); - -var msg35521 = msg("33739", dup325); - -var msg35522 = msg("33740", dup314); - -var msg35523 = msg("33741", dup325); - -var msg35524 = msg("33742", dup325); - -var msg35525 = msg("33743", dup309); - -var msg35526 = msg("33744", dup309); - -var msg35527 = msg("33745", dup321); - -var msg35528 = msg("33746", dup321); - -var msg35529 = msg("33747", dup321); - -var msg35530 = msg("33748", dup321); - -var msg35531 = msg("33749", dup321); - -var msg35532 = msg("33750", dup321); - -var msg35533 = msg("33751", dup321); - -var msg35534 = msg("33752", dup321); - -var msg35535 = msg("33753", dup321); - -var msg35536 = msg("33754", dup321); - -var msg35537 = msg("33755", dup321); - -var msg35538 = msg("33756", dup321); - -var msg35539 = msg("33757", dup321); - -var msg35540 = msg("33758", dup321); - -var msg35541 = msg("33759", dup321); - -var msg35542 = msg("33760", dup325); - -var msg35543 = msg("33761", dup325); - -var msg35544 = msg("33762", dup311); - -var msg35545 = msg("33763", dup325); - -var msg35546 = msg("33764", dup325); - -var msg35547 = msg("33765", dup323); - -var msg35548 = msg("33766", dup323); - -var msg35549 = msg("33767", dup314); - -var msg35550 = msg("33768", dup314); - -var msg35551 = msg("33769", dup314); - -var msg35552 = msg("33770", dup314); - -var msg35553 = msg("33771", dup314); - -var msg35554 = msg("33772", dup314); - -var msg35555 = msg("33773", dup314); - -var msg35556 = msg("33774", dup314); - -var msg35557 = msg("33775", dup325); - -var msg35558 = msg("33776", dup325); - -var msg35559 = msg("33777", dup323); - -var msg35560 = msg("33778", dup323); - -var msg35561 = msg("33779", dup323); - -var msg35562 = msg("33780", dup323); - -var msg35563 = msg("33781", dup323); - -var msg35564 = msg("33782", dup323); - -var msg35565 = msg("33783", dup323); - -var msg35566 = msg("33784", dup323); - -var msg35567 = msg("33785", dup323); - -var msg35568 = msg("33786", dup323); - -var msg35569 = msg("33787", dup323); - -var msg35570 = msg("33788", dup323); - -var msg35571 = msg("33789", dup323); - -var msg35572 = msg("33790", dup323); - -var msg35573 = msg("33791", dup323); - -var msg35574 = msg("33792", dup323); - -var msg35575 = msg("33793", dup323); - -var msg35576 = msg("33794", dup323); - -var msg35577 = msg("33795", dup323); - -var msg35578 = msg("33796", dup323); - -var msg35579 = msg("33797", dup323); - -var msg35580 = msg("33798", dup323); - -var msg35581 = msg("33799", dup323); - -var msg35582 = msg("33800", dup323); - -var msg35583 = msg("33801", dup323); - -var msg35584 = msg("33802", dup323); - -var msg35585 = msg("33803", dup323); - -var msg35586 = msg("33804", dup323); - -var msg35587 = msg("33805", dup323); - -var msg35588 = msg("33806", dup323); - -var msg35589 = msg("33807", dup316); - -var msg35590 = msg("33808", dup314); - -var msg35591 = msg("33809", dup314); - -var msg35592 = msg("33810", dup311); - -var msg35593 = msg("33811", dup314); - -var msg35594 = msg("33812", dup311); - -var msg35595 = msg("33813", dup310); - -var msg35596 = msg("33814", dup307); - -var msg35597 = msg("33815", dup321); - -var msg35598 = msg("33816", dup321); - -var msg35599 = msg("33817", dup310); - -var msg35600 = msg("33818", dup321); - -var msg35601 = msg("33819", dup321); - -var msg35602 = msg("33820", dup321); - -var msg35603 = msg("33821", dup321); - -var msg35604 = msg("33822", dup321); - -var msg35605 = msg("33823", dup321); - -var msg35606 = msg("33824", dup311); - -var msg35607 = msg("33825", dup314); - -var msg35608 = msg("33826", dup324); - -var msg35609 = msg("33827", dup311); - -var msg35610 = msg("33828", dup311); - -var msg35611 = msg("33829", dup311); - -var msg35612 = msg("33830", dup307); - -var msg35613 = msg("33831", dup325); - -var msg35614 = msg("33832", dup316); - -var msg35615 = msg("33833", dup321); - -var msg35616 = msg("33834", dup321); - -var msg35617 = msg("33835", dup321); - -var msg35618 = msg("33836", dup321); - -var msg35619 = msg("33837", dup321); - -var msg35620 = msg("33838", dup321); - -var msg35621 = msg("33839", dup321); - -var msg35622 = msg("33840", dup321); - -var msg35623 = msg("33841", dup321); - -var msg35624 = msg("33842", dup321); - -var msg35625 = msg("33843", dup321); - -var msg35626 = msg("33844", dup321); - -var msg35627 = msg("33845", dup321); - -var msg35628 = msg("33846", dup321); - -var msg35629 = msg("33847", dup321); - -var msg35630 = msg("33848", dup321); - -var msg35631 = msg("33849", dup321); - -var msg35632 = msg("33850", dup321); - -var msg35633 = msg("33851", dup321); - -var msg35634 = msg("33852", dup321); - -var msg35635 = msg("33853", dup307); - -var msg35636 = msg("33854", dup321); - -var msg35637 = msg("33855", dup325); - -var msg35638 = msg("33856", dup314); - -var msg35639 = msg("33857", dup321); - -var msg35640 = msg("33858", dup314); - -var msg35641 = msg("33859", dup321); - -var msg35642 = msg("33860", dup321); - -var msg35643 = msg("33861", dup321); - -var msg35644 = msg("33862", dup321); - -var msg35645 = msg("33863", dup321); - -var msg35646 = msg("33864", dup321); - -var msg35647 = msg("33865", dup321); - -var msg35648 = msg("33866", dup321); - -var msg35649 = msg("33867", dup321); - -var msg35650 = msg("33868", dup321); - -var msg35651 = msg("33869", dup323); - -var msg35652 = msg("33870", dup323); - -var msg35653 = msg("33871", dup332); - -var msg35654 = msg("33872", dup321); - -var msg35655 = msg("33873", dup321); - -var msg35656 = msg("33874", dup321); - -var msg35657 = msg("33875", dup314); - -var msg35658 = msg("33876", dup321); - -var msg35659 = msg("33877", dup321); - -var msg35660 = msg("33878", dup321); - -var msg35661 = msg("33879", dup321); - -var msg35662 = msg("33880", dup321); - -var msg35663 = msg("33881", dup321); - -var msg35664 = msg("33882", dup321); - -var msg35665 = msg("33883", dup321); - -var msg35666 = msg("33884", dup325); - -var msg35667 = msg("33885", dup321); - -var msg35668 = msg("33886", dup321); - -var msg35669 = msg("33887", dup316); - -var msg35670 = msg("33888", dup316); - -var msg35671 = msg("33889", dup316); - -var msg35672 = msg("33890", dup316); - -var msg35673 = msg("33891", dup321); - -var msg35674 = msg("33892", dup321); - -var msg35675 = msg("33893", dup321); - -var msg35676 = msg("33894", dup311); - -var msg35677 = msg("33895", dup311); - -var msg35678 = msg("33896", dup311); - -var msg35679 = msg("33897", dup307); - -var msg35680 = msg("33898", dup307); - -var msg35681 = msg("33899", dup311); - -var msg35682 = msg("33900", dup311); - -var msg35683 = msg("33901", dup311); - -var msg35684 = msg("33902", dup311); - -var msg35685 = msg("33903", dup307); - -var msg35686 = msg("33904", dup307); - -var msg35687 = msg("33905", dup311); - -var msg35688 = msg("33906", dup311); - -var msg35689 = msg("33907", dup325); - -var msg35690 = msg("33908", dup309); - -var msg35691 = msg("33909", dup309); - -var msg35692 = msg("33910", dup324); - -var msg35693 = msg("33911", dup324); - -var msg35694 = msg("33912", dup321); - -var msg35695 = msg("33913", dup321); - -var msg35696 = msg("33914", dup325); - -var msg35697 = msg("33915", dup314); - -var msg35698 = msg("33916", dup314); - -var msg35699 = msg("33917", dup314); - -var msg35700 = msg("33918", dup314); - -var msg35701 = msg("33919", dup314); - -var msg35702 = msg("33920", dup314); - -var msg35703 = msg("33921", dup314); - -var msg35704 = msg("33922", dup307); - -var msg35705 = msg("33923", dup309); - -var msg35706 = msg("33924", dup309); - -var msg35707 = msg("33925", dup309); - -var msg35708 = msg("33926", dup309); - -var msg35709 = msg("33927", dup334); - -var msg35710 = msg("33928", dup324); - -var msg35711 = msg("33929", dup324); - -var msg35712 = msg("33930", dup321); - -var msg35713 = msg("33931", dup321); - -var msg35714 = msg("33932", dup321); - -var msg35715 = msg("33933", dup321); - -var msg35716 = msg("33934", dup314); - -var msg35717 = msg("33935", dup314); - -var msg35718 = msg("33936", dup316); - -var msg35719 = msg("33937", dup316); - -var msg35720 = msg("33938", dup316); - -var msg35721 = msg("33939", dup311); - -var msg35722 = msg("33940", dup311); - -var msg35723 = msg("33941", dup311); - -var msg35724 = msg("33942", dup311); - -var msg35725 = msg("33943", dup311); - -var msg35726 = msg("33944", dup309); - -var msg35727 = msg("33945", dup309); - -var msg35728 = msg("33946", dup309); - -var msg35729 = msg("33947", dup309); - -var msg35730 = msg("33948", dup309); - -var msg35731 = msg("33949", dup309); - -var msg35732 = msg("33950", dup309); - -var msg35733 = msg("33951", dup309); - -var msg35734 = msg("33952", dup309); - -var msg35735 = msg("33953", dup309); - -var msg35736 = msg("33954", dup309); - -var msg35737 = msg("33955", dup309); - -var msg35738 = msg("33956", dup309); - -var msg35739 = msg("33957", dup309); - -var msg35740 = msg("33958", dup309); - -var msg35741 = msg("33959", dup309); - -var msg35742 = msg("33960", dup311); - -var msg35743 = msg("33961", dup311); - -var msg35744 = msg("33962", dup314); - -var msg35745 = msg("33963", dup314); - -var msg35746 = msg("33964", dup314); - -var msg35747 = msg("33965", dup321); - -var msg35748 = msg("33966", dup321); - -var msg35749 = msg("33967", dup311); - -var msg35750 = msg("33968", dup311); - -var msg35751 = msg("33969", dup311); - -var msg35752 = msg("33970", dup311); - -var msg35753 = msg("33971", dup314); - -var msg35754 = msg("33972", dup314); - -var msg35755 = msg("33973", dup314); - -var msg35756 = msg("33974", dup314); - -var msg35757 = msg("33975", dup314); - -var msg35758 = msg("33976", dup314); - -var msg35759 = msg("33977", dup314); - -var msg35760 = msg("33978", dup314); - -var msg35761 = msg("33979", dup309); - -var msg35762 = msg("33980", dup309); - -var msg35763 = msg("33981", dup311); - -var msg35764 = msg("33982", dup311); - -var msg35765 = msg("33983", dup311); - -var msg35766 = msg("33984", dup316); - -var msg35767 = msg("33985", dup321); - -var msg35768 = msg("33986", dup314); - -var msg35769 = msg("33987", dup311); - -var msg35770 = msg("33988", dup321); - -var msg35771 = msg("33989", dup321); - -var msg35772 = msg("33990", dup321); - -var msg35773 = msg("33991", dup321); - -var msg35774 = msg("33992", dup321); - -var msg35775 = msg("33993", dup321); - -var msg35776 = msg("33994", dup321); - -var msg35777 = msg("33995", dup321); - -var msg35778 = msg("33996", dup321); - -var msg35779 = msg("33997", dup321); - -var msg35780 = msg("33998", dup311); - -var msg35781 = msg("33999", dup311); - -var msg35782 = msg("34000", dup311); - -var msg35783 = msg("34001", dup321); - -var msg35784 = msg("34002", dup321); - -var msg35785 = msg("34003", dup321); - -var msg35786 = msg("34004", dup325); - -var msg35787 = msg("34005", dup325); - -var msg35788 = msg("34006", dup325); - -var msg35789 = msg("34007", dup325); - -var msg35790 = msg("34008", dup325); - -var msg35791 = msg("34009", dup325); - -var msg35792 = msg("34010", dup325); - -var msg35793 = msg("34011", dup325); - -var msg35794 = msg("34012", dup325); - -var msg35795 = msg("34013", dup321); - -var msg35796 = msg("34014", dup314); - -var msg35797 = msg("34015", dup314); - -var msg35798 = msg("34016", dup314); - -var msg35799 = msg("34017", dup314); - -var msg35800 = msg("34018", dup316); - -var msg35801 = msg("34019", dup316); - -var msg35802 = msg("34020", dup311); - -var msg35803 = msg("34021", dup311); - -var msg35804 = msg("34022", dup323); - -var msg35805 = msg("34023", dup323); - -var msg35806 = msg("34024", dup314); - -var msg35807 = msg("34025", dup321); - -var msg35808 = msg("34026", dup321); - -var msg35809 = msg("34027", dup309); - -var msg35810 = msg("34028", dup321); - -var msg35811 = msg("34029", dup321); - -var msg35812 = msg("34030", dup321); - -var msg35813 = msg("34031", dup321); - -var msg35814 = msg("34032", dup321); - -var msg35815 = msg("34033", dup321); - -var msg35816 = msg("34034", dup321); - -var msg35817 = msg("34035", dup321); - -var msg35818 = msg("34036", dup321); - -var msg35819 = msg("34037", dup321); - -var msg35820 = msg("34038", dup321); - -var msg35821 = msg("34039", dup321); - -var msg35822 = msg("34040", dup321); - -var msg35823 = msg("34041", dup321); - -var msg35824 = msg("34042", dup321); - -var msg35825 = msg("34043", dup321); - -var msg35826 = msg("34044", dup321); - -var msg35827 = msg("34045", dup321); - -var msg35828 = msg("34046", dup325); - -var msg35829 = msg("34047", dup321); - -var msg35830 = msg("34048", dup324); - -var msg35831 = msg("34049", dup321); - -var msg35832 = msg("34050", dup321); - -var msg35833 = msg("34051", dup324); - -var msg35834 = msg("34052", dup321); - -var msg35835 = msg("34053", dup314); - -var msg35836 = msg("34054", dup314); - -var msg35837 = msg("34055", dup314); - -var msg35838 = msg("34056", dup314); - -var msg35839 = msg("34057", dup309); - -var msg35840 = msg("34058", dup309); - -var msg35841 = msg("34059", dup325); - -var msg35842 = msg("34060", dup325); - -var msg35843 = msg("34061", dup309); - -var msg35844 = msg("34062", dup309); - -var msg35845 = msg("34063", dup309); - -var msg35846 = msg("34064", dup325); - -var msg35847 = msg("34065", dup325); - -var msg35848 = msg("34066", dup309); - -var msg35849 = msg("34067", dup309); - -var msg35850 = msg("34068", dup325); - -var msg35851 = msg("34069", dup325); - -var msg35852 = msg("34070", dup325); - -var msg35853 = msg("34071", dup325); - -var msg35854 = msg("34072", dup325); - -var msg35855 = msg("34073", dup325); - -var msg35856 = msg("34074", dup325); - -var msg35857 = msg("34075", dup325); - -var msg35858 = msg("34076", dup325); - -var msg35859 = msg("34077", dup325); - -var msg35860 = msg("34078", dup311); - -var msg35861 = msg("34079", dup311); - -var msg35862 = msg("34080", dup311); - -var msg35863 = msg("34081", dup311); - -var msg35864 = msg("34082", dup311); - -var msg35865 = msg("34083", dup311); - -var msg35866 = msg("34084", dup325); - -var msg35867 = msg("34085", dup325); - -var msg35868 = msg("34086", dup309); - -var msg35869 = msg("34087", dup309); - -var msg35870 = msg("34088", dup314); - -var msg35871 = msg("34089", dup325); - -var msg35872 = msg("34090", dup325); - -var msg35873 = msg("34091", dup311); - -var msg35874 = msg("34092", dup311); - -var msg35875 = msg("34093", dup309); - -var msg35876 = msg("34094", dup309); - -var msg35877 = msg("34095", dup314); - -var msg35878 = msg("34096", dup314); - -var msg35879 = msg("34097", dup311); - -var msg35880 = msg("34098", dup311); - -var msg35881 = msg("34099", dup314); - -var msg35882 = msg("34100", dup309); - -var msg35883 = msg("34101", dup309); - -var msg35884 = msg("34102", dup309); - -var msg35885 = msg("34103", dup309); - -var msg35886 = msg("34104", dup314); - -var msg35887 = msg("34105", dup314); - -var msg35888 = msg("34106", dup314); - -var msg35889 = msg("34107", dup321); - -var msg35890 = msg("34108", dup321); - -var msg35891 = msg("34109", dup307); - -var msg35892 = msg("34110", dup307); - -var msg35893 = msg("34111", dup321); - -var msg35894 = msg("34112", dup324); - -var msg35895 = msg("34113", dup321); - -var msg35896 = msg("34114", dup324); - -var msg35897 = msg("34115", dup321); - -var msg35898 = msg("34116", dup321); - -var msg35899 = msg("34117", dup321); - -var msg35900 = msg("34118", dup323); - -var msg35901 = msg("34119", dup321); - -var msg35902 = msg("34120", dup321); - -var msg35903 = msg("34121", dup321); - -var msg35904 = msg("34122", dup321); - -var msg35905 = msg("34123", dup314); - -var msg35906 = msg("34124", dup314); - -var msg35907 = msg("34125", dup321); - -var msg35908 = msg("34126", dup321); - -var msg35909 = msg("34127", dup321); - -var msg35910 = msg("34128", dup321); - -var msg35911 = msg("34129", dup321); - -var msg35912 = msg("34130", dup321); - -var msg35913 = msg("34131", dup309); - -var msg35914 = msg("34132", dup321); - -var msg35915 = msg("34133", dup309); - -var msg35916 = msg("34134", dup309); - -var msg35917 = msg("34135", dup314); - -var msg35918 = msg("34136", dup328); - -var msg35919 = msg("34137", dup321); - -var msg35920 = msg("34138", dup321); - -var msg35921 = msg("34139", dup314); - -var msg35922 = msg("34140", dup321); - -var msg35923 = msg("34141", dup309); - -var msg35924 = msg("34142", dup309); - -var msg35925 = msg("34143", dup321); - -var msg35926 = msg("34144", dup321); - -var msg35927 = msg("34145", dup321); - -var msg35928 = msg("34146", dup321); - -var msg35929 = msg("34147", dup314); - -var msg35930 = msg("34148", dup314); - -var msg35931 = msg("34149", dup314); - -var msg35932 = msg("34150", dup314); - -var msg35933 = msg("34151", dup314); - -var msg35934 = msg("34152", dup314); - -var msg35935 = msg("34153", dup314); - -var msg35936 = msg("34154", dup314); - -var msg35937 = msg("34155", dup321); - -var msg35938 = msg("34156", dup311); - -var msg35939 = msg("34157", dup311); - -var msg35940 = msg("34158", dup311); - -var msg35941 = msg("34159", dup311); - -var msg35942 = msg("34160", dup324); - -var msg35943 = msg("34161", dup321); - -var msg35944 = msg("34162", dup309); - -var msg35945 = msg("34163", dup309); - -var msg35946 = msg("34164", dup309); - -var msg35947 = msg("34165", dup309); - -var msg35948 = msg("34166", dup314); - -var msg35949 = msg("34167", dup314); - -var msg35950 = msg("34168", dup314); - -var msg35951 = msg("34169", dup314); - -var msg35952 = msg("34170", dup311); - -var msg35953 = msg("34171", dup311); - -var msg35954 = msg("34172", dup314); - -var msg35955 = msg("34173", dup314); - -var msg35956 = msg("34174", dup314); - -var msg35957 = msg("34175", dup314); - -var msg35958 = msg("34176", dup314); - -var msg35959 = msg("34177", dup314); - -var msg35960 = msg("34178", dup314); - -var msg35961 = msg("34179", dup314); - -var msg35962 = msg("34180", dup311); - -var msg35963 = msg("34181", dup321); - -var msg35964 = msg("34182", dup321); - -var msg35965 = msg("34183", dup321); - -var msg35966 = msg("34184", dup311); - -var msg35967 = msg("34185", dup311); - -var msg35968 = msg("34186", dup311); - -var msg35969 = msg("34187", dup311); - -var msg35970 = msg("34188", dup311); - -var msg35971 = msg("34189", dup311); - -var msg35972 = msg("34190", dup314); - -var msg35973 = msg("34191", dup314); - -var msg35974 = msg("34192", dup314); - -var msg35975 = msg("34193", dup314); - -var msg35976 = msg("34194", dup314); - -var msg35977 = msg("34195", dup325); - -var msg35978 = msg("34196", dup325); - -var msg35979 = msg("34197", dup325); - -var msg35980 = msg("34198", dup325); - -var msg35981 = msg("34199", dup325); - -var msg35982 = msg("34200", dup325); - -var msg35983 = msg("34201", dup325); - -var msg35984 = msg("34202", dup325); - -var msg35985 = msg("34203", dup325); - -var msg35986 = msg("34204", dup325); - -var msg35987 = msg("34205", dup325); - -var msg35988 = msg("34206", dup325); - -var msg35989 = msg("34207", dup325); - -var msg35990 = msg("34208", dup325); - -var msg35991 = msg("34209", dup325); - -var msg35992 = msg("34210", dup325); - -var msg35993 = msg("34211", dup325); - -var msg35994 = msg("34212", dup325); - -var msg35995 = msg("34213", dup324); - -var msg35996 = msg("34214", dup321); - -var msg35997 = msg("34215", dup311); - -var msg35998 = msg("34216", dup321); - -var msg35999 = msg("34217", dup321); - -var msg36000 = msg("34218", dup321); - -var msg36001 = msg("34219", dup321); - -var msg36002 = msg("34220", dup316); - -var msg36003 = msg("34221", dup316); - -var msg36004 = msg("34222", dup316); - -var msg36005 = msg("34223", dup321); - -var msg36006 = msg("34224", dup316); - -var msg36007 = msg("34225", dup333); - -var msg36008 = msg("34226", dup323); - -var msg36009 = msg("34227", dup323); - -var msg36010 = msg("34228", dup311); - -var msg36011 = msg("34229", dup311); - -var msg36012 = msg("34230", dup311); - -var msg36013 = msg("34231", dup311); - -var msg36014 = msg("34232", dup314); - -var msg36015 = msg("34233", dup314); - -var msg36016 = msg("34234", dup314); - -var msg36017 = msg("34235", dup314); - -var msg36018 = msg("34236", dup321); - -var msg36019 = msg("34237", dup321); - -var msg36020 = msg("34238", dup307); - -var msg36021 = msg("34239", dup307); - -var msg36022 = msg("34240", dup314); - -var msg36023 = msg("34241", dup314); - -var msg36024 = msg("34242", dup314); - -var msg36025 = msg("34243", dup314); - -var msg36026 = msg("34244", dup314); - -var msg36027 = msg("34245", dup314); - -var msg36028 = msg("34246", dup321); - -var msg36029 = msg("34247", dup314); - -var msg36030 = msg("34248", dup314); - -var msg36031 = msg("34249", dup314); - -var msg36032 = msg("34250", dup314); - -var msg36033 = msg("34251", dup324); - -var msg36034 = msg("34252", dup324); - -var msg36035 = msg("34253", dup324); - -var msg36036 = msg("34254", dup324); - -var msg36037 = msg("34255", dup314); - -var msg36038 = msg("34256", dup314); - -var msg36039 = msg("34257", dup314); - -var msg36040 = msg("34258", dup314); - -var msg36041 = msg("34259", dup314); - -var msg36042 = msg("34260", dup314); - -var msg36043 = msg("34261", dup324); - -var msg36044 = msg("34262", dup324); - -var msg36045 = msg("34263", dup324); - -var msg36046 = msg("34264", dup309); - -var msg36047 = msg("34265", dup309); - -var msg36048 = msg("34266", dup309); - -var msg36049 = msg("34267", dup309); - -var msg36050 = msg("34268", dup309); - -var msg36051 = msg("34269", dup309); - -var msg36052 = msg("34270", dup309); - -var msg36053 = msg("34271", dup309); - -var msg36054 = msg("34272", dup314); - -var msg36055 = msg("34273", dup314); - -var msg36056 = msg("34274", dup314); - -var msg36057 = msg("34275", dup314); - -var msg36058 = msg("34276", dup309); - -var msg36059 = msg("34277", dup309); - -var msg36060 = msg("34278", dup309); - -var msg36061 = msg("34279", dup309); - -var msg36062 = msg("34280", dup321); - -var msg36063 = msg("34281", dup321); - -var msg36064 = msg("34282", dup321); - -var msg36065 = msg("34283", dup321); - -var msg36066 = msg("34284", dup311); - -var msg36067 = msg("34285", dup311); - -var msg36068 = msg("34286", dup321); - -var msg36069 = msg("34287", dup314); - -var msg36070 = msg("34288", dup324); - -var msg36071 = msg("34289", dup321); - -var msg36072 = msg("34290", dup321); - -var msg36073 = msg("34291", dup325); - -var msg36074 = msg("34292", dup321); - -var msg36075 = msg("34293", dup309); - -var msg36076 = msg("34294", dup309); - -var msg36077 = msg("34295", dup322); - -var msg36078 = msg("34296", dup321); - -var msg36079 = msg("34297", dup321); - -var msg36080 = msg("34298", dup314); - -var msg36081 = msg("34299", dup325); - -var msg36082 = msg("34300", dup307); - -var msg36083 = msg("34301", dup314); - -var msg36084 = msg("34302", dup311); - -var msg36085 = msg("34303", dup311); - -var msg36086 = msg("34304", dup311); - -var msg36087 = msg("34305", dup311); - -var msg36088 = msg("34306", dup310); - -var msg36089 = msg("34307", dup321); - -var msg36090 = msg("34308", dup321); - -var msg36091 = msg("34309", dup321); - -var msg36092 = msg("34310", dup321); - -var msg36093 = msg("34311", dup321); - -var msg36094 = msg("34312", dup321); - -var msg36095 = msg("34313", dup321); - -var msg36096 = msg("34314", dup321); - -var msg36097 = msg("34315", dup321); - -var msg36098 = msg("34316", dup321); - -var msg36099 = msg("34317", dup321); - -var msg36100 = msg("34318", dup321); - -var msg36101 = msg("34319", dup321); - -var msg36102 = msg("34320", dup325); - -var msg36103 = msg("34321", dup325); - -var msg36104 = msg("34322", dup321); - -var msg36105 = msg("34323", dup321); - -var msg36106 = msg("34324", dup321); - -var msg36107 = msg("34325", dup321); - -var msg36108 = msg("34326", dup321); - -var msg36109 = msg("34327", dup321); - -var msg36110 = msg("34328", dup314); - -var msg36111 = msg("34329", dup321); - -var msg36112 = msg("34330", dup311); - -var msg36113 = msg("34331", dup311); - -var msg36114 = msg("34332", dup311); - -var msg36115 = msg("34333", dup311); - -var msg36116 = msg("34334", dup311); - -var msg36117 = msg("34335", dup311); - -var msg36118 = msg("34336", dup321); - -var msg36119 = msg("34337", dup321); - -var msg36120 = msg("34338", dup321); - -var msg36121 = msg("34339", dup321); - -var msg36122 = msg("34340", dup314); - -var msg36123 = msg("34341", dup314); - -var msg36124 = msg("34342", dup314); - -var msg36125 = msg("34343", dup309); - -var msg36126 = msg("34344", dup309); - -var msg36127 = msg("34345", dup314); - -var msg36128 = msg("34346", dup321); - -var msg36129 = msg("34347", dup321); - -var msg36130 = msg("34348", dup311); - -var msg36131 = msg("34349", dup309); - -var msg36132 = msg("34350", dup309); - -var msg36133 = msg("34351", dup309); - -var msg36134 = msg("34352", dup309); - -var msg36135 = msg("34353", dup309); - -var msg36136 = msg("34354", dup311); - -var msg36137 = msg("34355", dup311); - -var msg36138 = msg("34356", dup311); - -var msg36139 = msg("34357", dup311); - -var msg36140 = msg("34358", dup311); - -var msg36141 = msg("34359", dup314); - -var msg36142 = msg("34360", dup314); - -var msg36143 = msg("34361", dup314); - -var msg36144 = msg("34362", dup321); - -var msg36145 = msg("34363", dup322); - -var msg36146 = msg("34364", dup314); - -var msg36147 = msg("34365", dup311); - -var msg36148 = msg("34366", dup321); - -var msg36149 = msg("34367", dup321); - -var msg36150 = msg("34368", dup321); - -var msg36151 = msg("34369", dup316); - -var msg36152 = msg("34370", dup321); - -var msg36153 = msg("34371", dup311); - -var msg36154 = msg("34372", dup311); - -var msg36155 = msg("34373", dup307); - -var msg36156 = msg("34374", dup307); - -var msg36157 = msg("34375", dup307); - -var msg36158 = msg("34376", dup307); - -var msg36159 = msg("34377", dup314); - -var msg36160 = msg("34378", dup314); - -var msg36161 = msg("34379", dup325); - -var msg36162 = msg("34380", dup325); - -var msg36163 = msg("34381", dup325); - -var msg36164 = msg("34382", dup325); - -var msg36165 = msg("34383", dup311); - -var msg36166 = msg("34384", dup311); - -var msg36167 = msg("34385", dup311); - -var msg36168 = msg("34386", dup311); - -var msg36169 = msg("34387", dup314); - -var msg36170 = msg("34388", dup314); - -var msg36171 = msg("34389", dup314); - -var msg36172 = msg("34390", dup314); - -var msg36173 = msg("34391", dup325); - -var msg36174 = msg("34392", dup325); - -var msg36175 = msg("34393", dup323); - -var msg36176 = msg("34394", dup323); - -var msg36177 = msg("34395", dup314); - -var msg36178 = msg("34396", dup314); - -var msg36179 = msg("34397", dup314); - -var msg36180 = msg("34398", dup314); - -var msg36181 = msg("34399", dup311); - -var msg36182 = msg("34400", dup311); - -var msg36183 = msg("34401", dup311); - -var msg36184 = msg("34402", dup311); - -var msg36185 = msg("34403", dup314); - -var msg36186 = msg("34404", dup314); - -var msg36187 = msg("34405", dup325); - -var msg36188 = msg("34406", dup325); - -var msg36189 = msg("34407", dup325); - -var msg36190 = msg("34408", dup325); - -var msg36191 = msg("34409", dup325); - -var msg36192 = msg("34410", dup325); - -var msg36193 = msg("34411", dup325); - -var msg36194 = msg("34412", dup325); - -var msg36195 = msg("34413", dup314); - -var msg36196 = msg("34414", dup314); - -var msg36197 = msg("34415", dup325); - -var msg36198 = msg("34416", dup325); - -var msg36199 = msg("34417", dup325); - -var msg36200 = msg("34418", dup325); - -var msg36201 = msg("34419", dup325); - -var msg36202 = msg("34420", dup325); - -var msg36203 = msg("34421", dup325); - -var msg36204 = msg("34422", dup325); - -var msg36205 = msg("34423", dup325); - -var msg36206 = msg("34424", dup325); - -var msg36207 = msg("34425", dup325); - -var msg36208 = msg("34426", dup314); - -var msg36209 = msg("34427", dup314); - -var msg36210 = msg("34428", dup309); - -var msg36211 = msg("34429", dup309); - -var msg36212 = msg("34430", dup325); - -var msg36213 = msg("34431", dup325); - -var msg36214 = msg("34432", dup325); - -var msg36215 = msg("34433", dup325); - -var msg36216 = msg("34434", dup324); - -var msg36217 = msg("34435", dup324); - -var msg36218 = msg("34436", dup325); - -var msg36219 = msg("34437", dup325); - -var msg36220 = msg("34438", dup309); - -var msg36221 = msg("34439", dup309); - -var msg36222 = msg("34440", dup314); - -var msg36223 = msg("34441", dup314); - -var msg36224 = msg("34442", dup314); - -var msg36225 = msg("34443", dup314); - -var msg36226 = msg("34444", dup325); - -var msg36227 = msg("34445", dup325); - -var msg36228 = msg("34446", dup321); - -var msg36229 = msg("34447", dup333); - -var msg36230 = msg("34448", dup314); - -var msg36231 = msg("34449", dup314); - -var msg36232 = msg("34450", dup314); - -var msg36233 = msg("34451", dup314); - -var msg36234 = msg("34452", dup321); - -var msg36235 = msg("34453", dup321); - -var msg36236 = msg("34454", dup314); - -var msg36237 = msg("34455", dup314); - -var msg36238 = msg("34456", dup314); - -var msg36239 = msg("34457", dup314); - -var msg36240 = msg("34458", dup321); - -var msg36241 = msg("34459", dup321); - -var msg36242 = msg("34460", dup321); - -var msg36243 = msg("34461", dup321); - -var msg36244 = msg("34462", dup321); - -var msg36245 = msg("34463", dup314); - -var msg36246 = msg("34464", dup311); - -var msg36247 = msg("34465", dup325); - -var msg36248 = msg("34466", dup311); - -var msg36249 = msg("34467", dup311); - -var msg36250 = msg("34468", dup321); - -var msg36251 = msg("34469", dup321); - -var msg36252 = msg("34470", dup321); - -var msg36253 = msg("34471", dup314); - -var msg36254 = msg("34472", dup322); - -var msg36255 = msg("34473", dup314); - -var msg36256 = msg("34474", dup314); - -var all63 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup87, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg36257 = msg("34475", all63); - -var msg36258 = msg("34476", dup323); - -var msg36259 = msg("34477", dup314); - -var msg36260 = msg("34478", dup314); - -var msg36261 = msg("34479", dup311); - -var msg36262 = msg("34480", dup311); - -var msg36263 = msg("34481", dup309); - -var msg36264 = msg("34482", dup309); - -var msg36265 = msg("34483", dup309); - -var msg36266 = msg("34484", dup309); - -var msg36267 = msg("34485", dup309); - -var msg36268 = msg("34486", dup309); - -var msg36269 = msg("34487", dup309); - -var msg36270 = msg("34488", dup309); - -var msg36271 = msg("34489", dup321); - -var msg36272 = msg("34490", dup321); - -var msg36273 = msg("34491", dup321); - -var msg36274 = msg("34492", dup314); - -var msg36275 = msg("34493", dup314); - -var msg36276 = msg("34494", dup314); - -var msg36277 = msg("34495", dup314); - -var msg36278 = msg("34496", dup327); - -var msg36279 = msg("34497", dup327); - -var msg36280 = msg("34498", dup314); - -var msg36281 = msg("34499", dup314); - -var msg36282 = msg("34500", dup321); - -var msg36283 = msg("34501", dup321); - -var msg36284 = msg("34502", dup311); - -var msg36285 = msg("34503", dup311); - -var msg36286 = msg("34504", dup311); - -var msg36287 = msg("34505", dup311); - -var msg36288 = msg("34506", dup311); - -var msg36289 = msg("34507", dup311); - -var msg36290 = msg("34508", dup311); - -var msg36291 = msg("34509", dup311); - -var msg36292 = msg("34510", dup311); - -var msg36293 = msg("34511", dup311); - -var msg36294 = msg("34512", dup311); - -var msg36295 = msg("34513", dup311); - -var msg36296 = msg("34514", dup314); - -var msg36297 = msg("34515", dup314); - -var msg36298 = msg("34516", dup314); - -var msg36299 = msg("34517", dup314); - -var msg36300 = msg("34518", dup311); - -var msg36301 = msg("34519", dup311); - -var msg36302 = msg("34520", dup311); - -var msg36303 = msg("34521", dup311); - -var msg36304 = msg("34522", dup311); - -var msg36305 = msg("34523", dup311); - -var msg36306 = msg("34524", dup311); - -var msg36307 = msg("34525", dup311); - -var msg36308 = msg("34526", dup311); - -var msg36309 = msg("34527", dup311); - -var msg36310 = msg("34528", dup314); - -var msg36311 = msg("34529", dup314); - -var msg36312 = msg("34530", dup323); - -var msg36313 = msg("34531", dup323); - -var msg36314 = msg("34532", dup325); - -var msg36315 = msg("34533", dup325); - -var msg36316 = msg("34534", dup314); - -var msg36317 = msg("34535", dup314); - -var msg36318 = msg("34536", dup314); - -var msg36319 = msg("34537", dup314); - -var msg36320 = msg("34538", dup314); - -var msg36321 = msg("34539", dup314); - -var msg36322 = msg("34540", dup321); - -var msg36323 = msg("34541", dup321); - -var msg36324 = msg("34542", dup314); - -var msg36325 = msg("34543", dup314); - -var msg36326 = msg("34544", dup314); - -var msg36327 = msg("34545", dup314); - -var msg36328 = msg("34546", dup314); - -var msg36329 = msg("34547", dup314); - -var msg36330 = msg("34548", dup314); - -var msg36331 = msg("34549", dup314); - -var msg36332 = msg("34550", dup307); - -var msg36333 = msg("34551", dup307); - -var msg36334 = msg("34552", dup311); - -var msg36335 = msg("34553", dup309); - -var msg36336 = msg("34554", dup309); - -var msg36337 = msg("34555", dup309); - -var msg36338 = msg("34556", dup309); - -var msg36339 = msg("34557", dup307); - -var msg36340 = msg("34558", dup307); - -var msg36341 = msg("34559", dup314); - -var msg36342 = msg("34560", dup314); - -var msg36343 = msg("34561", dup311); - -var msg36344 = msg("34562", dup311); - -var msg36345 = msg("34563", dup311); - -var msg36346 = msg("34564", dup311); - -var msg36347 = msg("34565", dup311); - -var msg36348 = msg("34566", dup309); - -var msg36349 = msg("34567", dup321); - -var msg36350 = msg("34568", dup314); - -var msg36351 = msg("34569", dup314); - -var msg36352 = msg("34570", dup321); - -var msg36353 = msg("34571", dup321); - -var msg36354 = msg("34572", dup321); - -var msg36355 = msg("34573", dup314); - -var msg36356 = msg("34574", dup314); - -var msg36357 = msg("34575", dup314); - -var msg36358 = msg("34576", dup314); - -var msg36359 = msg("34577", dup314); - -var msg36360 = msg("34578", dup314); - -var msg36361 = msg("34579", dup314); - -var msg36362 = msg("34580", dup314); - -var msg36363 = msg("34581", dup321); - -var msg36364 = msg("34582", dup314); - -var msg36365 = msg("34583", dup314); - -var msg36366 = msg("34584", dup314); - -var msg36367 = msg("34585", dup314); - -var msg36368 = msg("34586", dup314); - -var msg36369 = msg("34587", dup314); - -var msg36370 = msg("34588", dup314); - -var msg36371 = msg("34589", dup314); - -var msg36372 = msg("34590", dup314); - -var msg36373 = msg("34591", dup314); - -var msg36374 = msg("34592", dup314); - -var msg36375 = msg("34593", dup314); - -var msg36376 = msg("34594", dup314); - -var msg36377 = msg("34595", dup314); - -var msg36378 = msg("34596", dup339); - -var msg36379 = msg("34597", dup339); - -var msg36380 = msg("34598", dup339); - -var msg36381 = msg("34599", dup339); - -var msg36382 = msg("34600", dup339); - -var msg36383 = msg("34601", dup339); - -var msg36384 = msg("34602", dup340); - -var msg36385 = msg("34603", dup341); - -var msg36386 = msg("34604", dup340); - -var msg36387 = msg("34605", dup340); - -var msg36388 = msg("34606", dup340); - -var msg36389 = msg("34607", dup342); - -var msg36390 = msg("34608", dup339); - -var msg36391 = msg("34609", dup339); - -var msg36392 = msg("34610", dup339); - -var msg36393 = msg("34611", dup339); - -var msg36394 = msg("34612", dup343); - -var msg36395 = msg("34613", dup343); - -var msg36396 = msg("34614", dup339); - -var msg36397 = msg("34615", dup344); - -var msg36398 = msg("34616", dup344); - -var msg36399 = msg("34617", dup344); - -var msg36400 = msg("34618", dup344); - -var msg36401 = msg("34619", dup340); - -var msg36402 = msg("34620", dup340); - -var msg36403 = msg("34621", dup340); - -var msg36404 = msg("34622", dup339); - -var msg36405 = msg("34623", dup341); - -var msg36406 = msg("34624", dup339); - -var msg36407 = msg("34625", dup343); - -var msg36408 = msg("34626", dup343); - -var msg36409 = msg("34627", dup343); - -var msg36410 = msg("34628", dup343); - -var msg36411 = msg("34629", dup340); - -var msg36412 = msg("34630", dup340); - -var msg36413 = msg("34631", dup340); - -var msg36414 = msg("34632", dup341); - -var msg36415 = msg("34633", dup340); - -var msg36416 = msg("34634", dup340); - -var msg36417 = msg("34635", dup340); - -var msg36418 = msg("34636", dup339); - -var msg36419 = msg("34637", dup339); - -var msg36420 = msg("34638", dup340); - -var msg36421 = msg("34639", dup340); - -var msg36422 = msg("34640", dup340); - -var msg36423 = msg("34641", dup345); - -var msg36424 = msg("34642", dup345); - -var msg36425 = msg("34643", dup340); - -var msg36426 = msg("34644", dup340); - -var msg36427 = msg("34645", dup341); - -var msg36428 = msg("34646", dup346); - -var msg36429 = msg("34647", dup346); - -var msg36430 = msg("34648", dup346); - -var msg36431 = msg("34649", dup345); - -var msg36432 = msg("34650", dup341); - -var msg36433 = msg("34651", dup341); - -var msg36434 = msg("34652", dup340); - -var msg36435 = msg("34653", dup340); - -var msg36436 = msg("34654", dup339); - -var msg36437 = msg("34655", dup339); - -var msg36438 = msg("34656", dup339); - -var msg36439 = msg("34657", dup339); - -var msg36440 = msg("34658", dup339); - -var msg36441 = msg("34659", dup339); - -var msg36442 = msg("34660", dup339); - -var msg36443 = msg("34661", dup339); - -var msg36444 = msg("34662", dup339); - -var msg36445 = msg("34663", dup339); - -var msg36446 = msg("34664", dup339); - -var msg36447 = msg("34665", dup339); - -var msg36448 = msg("34666", dup339); - -var msg36449 = msg("34667", dup339); - -var msg36450 = msg("34668", dup339); - -var msg36451 = msg("34669", dup339); - -var msg36452 = msg("34670", dup339); - -var msg36453 = msg("34671", dup339); - -var msg36454 = msg("34672", dup339); - -var msg36455 = msg("34673", dup339); - -var msg36456 = msg("34674", dup339); - -var msg36457 = msg("34675", dup339); - -var msg36458 = msg("34676", dup339); - -var msg36459 = msg("34677", dup339); - -var msg36460 = msg("34678", dup339); - -var msg36461 = msg("34679", dup339); - -var msg36462 = msg("34680", dup339); - -var msg36463 = msg("34681", dup339); - -var msg36464 = msg("34682", dup339); - -var msg36465 = msg("34683", dup339); - -var msg36466 = msg("34684", dup339); - -var msg36467 = msg("34685", dup339); - -var msg36468 = msg("34686", dup339); - -var msg36469 = msg("34687", dup339); - -var msg36470 = msg("34688", dup339); - -var msg36471 = msg("34689", dup339); - -var msg36472 = msg("34690", dup339); - -var msg36473 = msg("34691", dup339); - -var msg36474 = msg("34692", dup339); - -var msg36475 = msg("34693", dup339); - -var msg36476 = msg("34694", dup339); - -var msg36477 = msg("34695", dup339); - -var msg36478 = msg("34696", dup339); - -var msg36479 = msg("34697", dup339); - -var msg36480 = msg("34698", dup339); - -var msg36481 = msg("34699", dup339); - -var msg36482 = msg("34700", dup339); - -var msg36483 = msg("34701", dup339); - -var msg36484 = msg("34702", dup339); - -var msg36485 = msg("34703", dup339); - -var msg36486 = msg("34704", dup339); - -var msg36487 = msg("34705", dup339); - -var msg36488 = msg("34706", dup339); - -var msg36489 = msg("34707", dup339); - -var msg36490 = msg("34708", dup339); - -var msg36491 = msg("34709", dup345); - -var msg36492 = msg("34710", dup347); - -var msg36493 = msg("34711", dup339); - -var msg36494 = msg("34712", dup339); - -var msg36495 = msg("34713", dup339); - -var msg36496 = msg("34714", dup341); - -var msg36497 = msg("34715", dup341); - -var msg36498 = msg("34716", dup340); - -var msg36499 = msg("34717", dup340); - -var msg36500 = msg("34718", dup340); - -var msg36501 = msg("34719", dup347); - -var msg36502 = msg("34720", dup347); - -var msg36503 = msg("34721", dup342); - -var msg36504 = msg("34722", dup342); - -var msg36505 = msg("34723", dup342); - -var msg36506 = msg("34724", dup342); - -var msg36507 = msg("34725", dup342); - -var msg36508 = msg("34726", dup342); - -var msg36509 = msg("34727", dup342); - -var msg36510 = msg("34728", dup342); - -var msg36511 = msg("34729", dup347); - -var msg36512 = msg("34730", dup347); - -var msg36513 = msg("34731", dup341); - -var msg36514 = msg("34732", dup341); - -var msg36515 = msg("34733", dup342); - -var msg36516 = msg("34734", dup342); - -var msg36517 = msg("34735", dup342); - -var msg36518 = msg("34736", dup342); - -var msg36519 = msg("34737", dup341); - -var msg36520 = msg("34738", dup341); - -var msg36521 = msg("34739", dup341); - -var msg36522 = msg("34740", dup341); - -var msg36523 = msg("34741", dup340); - -var msg36524 = msg("34742", dup340); - -var msg36525 = msg("34743", dup341); - -var msg36526 = msg("34744", dup341); - -var msg36527 = msg("34745", dup342); - -var msg36528 = msg("34746", dup342); - -var msg36529 = msg("34747", dup342); - -var msg36530 = msg("34748", dup342); - -var msg36531 = msg("34749", dup342); - -var msg36532 = msg("34750", dup342); - -var msg36533 = msg("34751", dup342); - -var msg36534 = msg("34752", dup342); - -var msg36535 = msg("34753", dup342); - -var msg36536 = msg("34754", dup342); - -var msg36537 = msg("34755", dup347); - -var msg36538 = msg("34756", dup347); - -var msg36539 = msg("34757", dup347); - -var msg36540 = msg("34758", dup347); - -var msg36541 = msg("34759", dup342); - -var msg36542 = msg("34760", dup342); - -var msg36543 = msg("34761", dup343); - -var msg36544 = msg("34762", dup343); - -var msg36545 = msg("34763", dup341); - -var msg36546 = msg("34764", dup341); - -var msg36547 = msg("34765", dup342); - -var msg36548 = msg("34766", dup342); - -var msg36549 = msg("34767", dup342); - -var msg36550 = msg("34768", dup342); - -var msg36551 = msg("34769", dup347); - -var msg36552 = msg("34770", dup340); - -var msg36553 = msg("34771", dup340); - -var msg36554 = msg("34772", dup342); - -var msg36555 = msg("34773", dup342); - -var msg36556 = msg("34774", dup347); - -var msg36557 = msg("34775", dup347); - -var msg36558 = msg("34776", dup340); - -var msg36559 = msg("34777", dup340); - -var msg36560 = msg("34778", dup342); - -var msg36561 = msg("34779", dup342); - -var msg36562 = msg("34780", dup347); - -var msg36563 = msg("34781", dup347); - -var msg36564 = msg("34782", dup340); - -var msg36565 = msg("34783", dup340); - -var msg36566 = msg("34784", dup340); - -var msg36567 = msg("34785", dup340); - -var msg36568 = msg("34786", dup347); - -var msg36569 = msg("34787", dup347); - -var msg36570 = msg("34788", dup340); - -var msg36571 = msg("34789", dup340); - -var msg36572 = msg("34790", dup342); - -var msg36573 = msg("34791", dup342); - -var msg36574 = msg("34792", dup340); - -var msg36575 = msg("34793", dup340); - -var msg36576 = msg("34794", dup347); - -var msg36577 = msg("34795", dup347); - -var msg36578 = msg("34796", dup347); - -var msg36579 = msg("34797", dup347); - -var msg36580 = msg("34798", dup341); - -var msg36581 = msg("34799", dup348); - -var msg36582 = msg("34800", dup346); - -var msg36583 = msg("34801", dup346); - -var msg36584 = msg("34802", dup345); - -var msg36585 = msg("34803", dup340); - -var msg36586 = msg("34804", dup340); - -var msg36587 = msg("34805", dup340); - -var msg36588 = msg("34806", dup340); - -var msg36589 = msg("34807", dup347); - -var msg36590 = msg("34808", dup347); - -var msg36591 = msg("34809", dup347); - -var msg36592 = msg("34810", dup347); - -var msg36593 = msg("34811", dup340); - -var msg36594 = msg("34812", dup340); - -var msg36595 = msg("34813", dup340); - -var msg36596 = msg("34814", dup340); - -var msg36597 = msg("34815", dup340); - -var msg36598 = msg("34816", dup347); - -var msg36599 = msg("34817", dup347); - -var msg36600 = msg("34818", dup339); - -var msg36601 = msg("34819", dup340); - -var msg36602 = msg("34820", dup340); - -var msg36603 = msg("34821", dup340); - -var msg36604 = msg("34822", dup340); - -var msg36605 = msg("34823", dup340); - -var msg36606 = msg("34824", dup342); - -var msg36607 = msg("34825", dup342); - -var msg36608 = msg("34826", dup339); - -var msg36609 = msg("34827", dup339); - -var msg36610 = msg("34828", dup339); - -var msg36611 = msg("34829", dup339); - -var msg36612 = msg("34830", dup339); - -var msg36613 = msg("34831", dup339); - -var msg36614 = msg("34832", dup339); - -var msg36615 = msg("34833", dup339); - -var all64 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg36616 = msg("34834", all64); - -var msg36617 = msg("34835", dup339); - -var msg36618 = msg("34836", dup347); - -var msg36619 = msg("34837", dup347); - -var msg36620 = msg("34838", dup347); - -var msg36621 = msg("34839", dup347); - -var msg36622 = msg("34840", dup347); - -var msg36623 = msg("34841", dup347); - -var msg36624 = msg("34842", dup347); - -var msg36625 = msg("34843", dup342); - -var msg36626 = msg("34844", dup339); - -var msg36627 = msg("34845", dup340); - -var msg36628 = msg("34846", dup340); - -var msg36629 = msg("34847", dup339); - -var msg36630 = msg("34848", dup341); - -var msg36631 = msg("34849", dup341); - -var msg36632 = msg("34850", dup341); - -var msg36633 = msg("34851", dup341); - -var msg36634 = msg("34852", dup339); - -var msg36635 = msg("34853", dup340); - -var msg36636 = msg("34854", dup340); - -var msg36637 = msg("34855", dup340); - -var msg36638 = msg("34856", dup340); - -var msg36639 = msg("34857", dup339); - -var msg36640 = msg("34858", dup340); - -var msg36641 = msg("34859", dup340); - -var msg36642 = msg("34860", dup340); - -var msg36643 = msg("34861", dup340); - -var msg36644 = msg("34862", dup339); - -var msg36645 = msg("34863", dup339); - -var msg36646 = msg("34864", dup340); - -var msg36647 = msg("34865", dup339); - -var msg36648 = msg("34866", dup339); - -var msg36649 = msg("34867", dup339); - -var msg36650 = msg("34868", dup339); - -var msg36651 = msg("34869", dup339); - -var msg36652 = msg("34870", dup339); - -var msg36653 = msg("34871", dup339); - -var msg36654 = msg("34872", dup339); - -var msg36655 = msg("34873", dup342); - -var msg36656 = msg("34874", dup342); - -var msg36657 = msg("34875", dup340); - -var msg36658 = msg("34876", dup339); - -var msg36659 = msg("34877", dup339); - -var msg36660 = msg("34878", dup342); - -var msg36661 = msg("34879", dup342); - -var msg36662 = msg("34880", dup342); - -var msg36663 = msg("34881", dup340); - -var msg36664 = msg("34882", dup340); - -var msg36665 = msg("34883", dup340); - -var msg36666 = msg("34884", dup343); - -var msg36667 = msg("34885", dup343); - -var msg36668 = msg("34886", dup339); - -var msg36669 = msg("34887", dup339); - -var msg36670 = msg("34888", dup339); - -var msg36671 = msg("34889", dup341); - -var msg36672 = msg("34890", dup347); - -var msg36673 = msg("34891", dup347); - -var msg36674 = msg("34892", dup347); - -var msg36675 = msg("34893", dup347); - -var msg36676 = msg("34894", dup347); - -var msg36677 = msg("34895", dup347); - -var msg36678 = msg("34896", dup347); - -var msg36679 = msg("34897", dup347); - -var msg36680 = msg("34898", dup347); - -var msg36681 = msg("34899", dup347); - -var msg36682 = msg("34900", dup347); - -var msg36683 = msg("34901", dup347); - -var msg36684 = msg("34902", dup344); - -var msg36685 = msg("34903", dup347); - -var msg36686 = msg("34904", dup347); - -var msg36687 = msg("34905", dup347); - -var msg36688 = msg("34906", dup347); - -var msg36689 = msg("34907", dup347); - -var msg36690 = msg("34908", dup347); - -var msg36691 = msg("34909", dup344); - -var msg36692 = msg("34910", dup344); - -var msg36693 = msg("34911", dup347); - -var msg36694 = msg("34912", dup347); - -var msg36695 = msg("34913", dup347); - -var msg36696 = msg("34914", dup347); - -var msg36697 = msg("34915", dup349); - -var msg36698 = msg("34916", dup349); - -var msg36699 = msg("34917", dup339); - -var msg36700 = msg("34918", dup340); - -var msg36701 = msg("34919", dup340); - -var msg36702 = msg("34920", dup340); - -var msg36703 = msg("34921", dup340); - -var msg36704 = msg("34922", dup340); - -var msg36705 = msg("34923", dup340); - -var msg36706 = msg("34924", dup341); - -var msg36707 = msg("34925", dup341); - -var msg36708 = msg("34926", dup339); - -var msg36709 = msg("34927", dup339); - -var msg36710 = msg("34928", dup339); - -var msg36711 = msg("34929", dup339); - -var msg36712 = msg("34930", dup339); - -var msg36713 = msg("34931", dup339); - -var msg36714 = msg("34932", dup339); - -var msg36715 = msg("34933", dup347); - -var msg36716 = msg("34934", dup339); - -var msg36717 = msg("34935", dup339); - -var msg36718 = msg("34936", dup339); - -var msg36719 = msg("34937", dup341); - -var msg36720 = msg("34938", dup341); - -var msg36721 = msg("34939", dup341); - -var msg36722 = msg("34940", dup341); - -var msg36723 = msg("34941", dup341); - -var msg36724 = msg("34942", dup341); - -var msg36725 = msg("34943", dup341); - -var msg36726 = msg("34944", dup340); - -var msg36727 = msg("34945", dup339); - -var msg36728 = msg("34946", dup340); - -var msg36729 = msg("34947", dup340); - -var msg36730 = msg("34948", dup347); - -var msg36731 = msg("34949", dup347); - -var msg36732 = msg("34950", dup339); - -var msg36733 = msg("34951", dup340); - -var msg36734 = msg("34952", dup345); - -var msg36735 = msg("34953", dup345); - -var msg36736 = msg("34954", dup345); - -var msg36737 = msg("34955", dup345); - -var msg36738 = msg("34956", dup345); - -var msg36739 = msg("34957", dup339); - -var msg36740 = msg("34958", dup339); - -var msg36741 = msg("34959", dup339); - -var msg36742 = msg("34960", dup340); - -var msg36743 = msg("34961", dup340); - -var msg36744 = msg("34962", dup340); - -var msg36745 = msg("34963", dup339); - -var msg36746 = msg("34964", dup339); - -var msg36747 = msg("34965", dup339); - -var msg36748 = msg("34966", dup339); - -var msg36749 = msg("34967", dup341); - -var msg36750 = msg("34968", dup340); - -var msg36751 = msg("34969", dup347); - -var msg36752 = msg("34970", dup347); - -var msg36753 = msg("34971", dup340); - -var msg36754 = msg("34972", dup340); - -var msg36755 = msg("34973", dup341); - -var msg36756 = msg("34974", dup341); - -var msg36757 = msg("34975", dup341); - -var msg36758 = msg("34976", dup340); - -var msg36759 = msg("34977", dup340); - -var msg36760 = msg("34978", dup340); - -var msg36761 = msg("34979", dup340); - -var msg36762 = msg("34980", dup340); - -var msg36763 = msg("34981", dup340); - -var msg36764 = msg("34982", dup339); - -var msg36765 = msg("34983", dup340); - -var msg36766 = msg("34984", dup341); - -var msg36767 = msg("34985", dup341); - -var msg36768 = msg("34986", dup341); - -var msg36769 = msg("34987", dup341); - -var msg36770 = msg("34988", dup341); - -var msg36771 = msg("34989", dup341); - -var msg36772 = msg("34990", dup347); - -var msg36773 = msg("34991", dup347); - -var msg36774 = msg("34992", dup347); - -var msg36775 = msg("34993", dup339); - -var msg36776 = msg("34994", dup339); - -var msg36777 = msg("34995", dup339); - -var msg36778 = msg("34996", dup339); - -var msg36779 = msg("34997", dup350); - -var msg36780 = msg("34998", dup339); - -var msg36781 = msg("34999", dup346); - -var msg36782 = msg("35000", dup346); - -var msg36783 = msg("35001", dup340); - -var msg36784 = msg("35002", dup340); - -var msg36785 = msg("35003", dup339); - -var msg36786 = msg("35004", dup339); - -var msg36787 = msg("35005", dup339); - -var msg36788 = msg("35006", dup347); - -var msg36789 = msg("35007", dup347); - -var msg36790 = msg("35008", dup347); - -var msg36791 = msg("35009", dup347); - -var msg36792 = msg("35010", dup347); - -var msg36793 = msg("35011", dup347); - -var msg36794 = msg("35012", dup342); - -var msg36795 = msg("35013", dup342); - -var msg36796 = msg("35014", dup346); - -var msg36797 = msg("35015", dup346); - -var msg36798 = msg("35016", dup346); - -var msg36799 = msg("35017", dup346); - -var msg36800 = msg("35018", dup341); - -var msg36801 = msg("35019", dup341); - -var msg36802 = msg("35020", dup341); - -var msg36803 = msg("35021", dup341); - -var msg36804 = msg("35022", dup340); - -var msg36805 = msg("35023", dup340); - -var msg36806 = msg("35024", dup348); - -var msg36807 = msg("35025", dup348); - -var msg36808 = msg("35026", dup348); - -var msg36809 = msg("35027", dup342); - -var msg36810 = msg("35028", dup339); - -var msg36811 = msg("35029", dup339); - -var msg36812 = msg("35030", dup339); - -var msg36813 = msg("35031", dup339); - -var msg36814 = msg("35032", dup340); - -var msg36815 = msg("35033", dup340); - -var msg36816 = msg("35034", dup339); - -var msg36817 = msg("35035", dup339); - -var msg36818 = msg("35036", dup339); - -var msg36819 = msg("35037", dup339); - -var msg36820 = msg("35038", dup340); - -var msg36821 = msg("35039", dup339); - -var msg36822 = msg("35040", dup347); - -var msg36823 = msg("35041", dup347); - -var msg36824 = msg("35042", dup340); - -var msg36825 = msg("35043", dup340); - -var msg36826 = msg("35044", dup347); - -var msg36827 = msg("35045", dup347); - -var msg36828 = msg("35046", dup339); - -var msg36829 = msg("35047", dup339); - -var msg36830 = msg("35048", dup340); - -var msg36831 = msg("35049", dup340); - -var msg36832 = msg("35050", dup339); - -var msg36833 = msg("35051", dup340); - -var msg36834 = msg("35052", dup340); - -var msg36835 = msg("35053", dup342); - -var msg36836 = msg("35062", dup339); - -var msg36837 = msg("35063", dup339); - -var msg36838 = msg("35064", dup339); - -var msg36839 = msg("35065", dup339); - -var msg36840 = msg("35066", dup339); - -var msg36841 = msg("35067", dup339); - -var msg36842 = msg("35068", dup339); - -var msg36843 = msg("35069", dup339); - -var msg36844 = msg("35070", dup340); - -var msg36845 = msg("35071", dup340); - -var msg36846 = msg("35072", dup340); - -var msg36847 = msg("35073", dup340); - -var msg36848 = msg("35074", dup340); - -var msg36849 = msg("35075", dup340); - -var msg36850 = msg("35076", dup339); - -var msg36851 = msg("35077", dup346); - -var msg36852 = msg("35078", dup346); - -var msg36853 = msg("35079", dup346); - -var msg36854 = msg("35080", dup339); - -var msg36855 = msg("35081", dup339); - -var msg36856 = msg("35082", dup339); - -var msg36857 = msg("35083", dup339); - -var msg36858 = msg("35084", dup347); - -var msg36859 = msg("35085", dup347); - -var msg36860 = msg("35086", dup347); - -var msg36861 = msg("35087", dup347); - -var msg36862 = msg("35088", dup347); - -var msg36863 = msg("35089", dup347); - -var msg36864 = msg("35090", dup341); - -var msg36865 = msg("35091", dup341); - -var msg36866 = msg("35092", dup341); - -var msg36867 = msg("35093", dup341); - -var msg36868 = msg("35094", dup343); - -var msg36869 = msg("35095", dup347); - -var msg36870 = msg("35096", dup347); - -var msg36871 = msg("35097", dup343); - -var msg36872 = msg("35098", dup343); - -var msg36873 = msg("35099", dup339); - -var msg36874 = msg("35100", dup339); - -var msg36875 = msg("35101", dup339); - -var msg36876 = msg("35102", dup339); - -var msg36877 = msg("35103", dup339); - -var msg36878 = msg("35104", dup339); - -var msg36879 = msg("35105", dup340); - -var msg36880 = msg("35106", dup340); - -var msg36881 = msg("35107", dup340); - -var msg36882 = msg("35108", dup340); - -var msg36883 = msg("35109", dup347); - -var msg36884 = msg("35110", dup347); - -var msg36885 = msg("35111", dup340); - -var msg36886 = msg("35112", dup343); - -var msg36887 = msg("35113", dup343); - -var msg36888 = msg("35114", dup347); - -var msg36889 = msg("35115", dup347); - -var msg36890 = msg("35116", dup342); - -var msg36891 = msg("35117", dup342); - -var msg36892 = msg("35118", dup340); - -var msg36893 = msg("35119", dup342); - -var msg36894 = msg("35120", dup342); - -var msg36895 = msg("35121", dup342); - -var msg36896 = msg("35122", dup342); - -var msg36897 = msg("35123", dup342); - -var msg36898 = msg("35124", dup342); - -var msg36899 = msg("35125", dup342); - -var msg36900 = msg("35126", dup342); - -var msg36901 = msg("35127", dup342); - -var msg36902 = msg("35128", dup342); - -var msg36903 = msg("35129", dup341); - -var msg36904 = msg("35130", dup341); - -var msg36905 = msg("35131", dup340); - -var msg36906 = msg("35132", dup340); - -var msg36907 = msg("35133", dup342); - -var msg36908 = msg("35134", dup342); - -var msg36909 = msg("35135", dup347); - -var msg36910 = msg("35136", dup347); - -var msg36911 = msg("35137", dup341); - -var msg36912 = msg("35138", dup341); - -var msg36913 = msg("35139", dup342); - -var msg36914 = msg("35140", dup342); - -var msg36915 = msg("35141", dup341); - -var msg36916 = msg("35142", dup341); - -var msg36917 = msg("35143", dup341); - -var msg36918 = msg("35144", dup341); - -var msg36919 = msg("35145", dup342); - -var msg36920 = msg("35146", dup342); - -var msg36921 = msg("35147", dup342); - -var msg36922 = msg("35148", dup342); - -var msg36923 = msg("35149", dup340); - -var msg36924 = msg("35150", dup340); - -var msg36925 = msg("35151", dup341); - -var msg36926 = msg("35152", dup342); - -var msg36927 = msg("35153", dup342); - -var msg36928 = msg("35154", dup342); - -var msg36929 = msg("35155", dup342); - -var msg36930 = msg("35156", dup342); - -var msg36931 = msg("35157", dup342); - -var msg36932 = msg("35158", dup342); - -var msg36933 = msg("35159", dup342); - -var msg36934 = msg("35160", dup341); - -var msg36935 = msg("35161", dup341); - -var msg36936 = msg("35162", dup341); - -var msg36937 = msg("35163", dup341); - -var msg36938 = msg("35164", dup342); - -var msg36939 = msg("35165", dup342); - -var msg36940 = msg("35166", dup341); - -var msg36941 = msg("35167", dup341); - -var msg36942 = msg("35168", dup341); - -var msg36943 = msg("35169", dup341); - -var msg36944 = msg("35170", dup342); - -var msg36945 = msg("35171", dup342); - -var msg36946 = msg("35172", dup342); - -var msg36947 = msg("35173", dup342); - -var msg36948 = msg("35174", dup351); - -var msg36949 = msg("35175", dup351); - -var msg36950 = msg("35176", dup341); - -var msg36951 = msg("35177", dup341); - -var msg36952 = msg("35178", dup342); - -var msg36953 = msg("35179", dup342); - -var msg36954 = msg("35180", dup340); - -var msg36955 = msg("35181", dup340); - -var msg36956 = msg("35182", dup342); - -var msg36957 = msg("35183", dup342); - -var msg36958 = msg("35184", dup342); - -var msg36959 = msg("35185", dup342); - -var msg36960 = msg("35186", dup342); - -var msg36961 = msg("35187", dup342); - -var msg36962 = msg("35188", dup342); - -var msg36963 = msg("35189", dup342); - -var msg36964 = msg("35190", dup341); - -var msg36965 = msg("35191", dup341); - -var msg36966 = msg("35192", dup342); - -var msg36967 = msg("35193", dup342); - -var msg36968 = msg("35194", dup342); - -var msg36969 = msg("35195", dup342); - -var msg36970 = msg("35196", dup342); - -var msg36971 = msg("35197", dup342); - -var msg36972 = msg("35198", dup346); - -var msg36973 = msg("35199", dup342); - -var msg36974 = msg("35200", dup342); - -var msg36975 = msg("35201", dup341); - -var msg36976 = msg("35202", dup341); - -var msg36977 = msg("35203", dup342); - -var msg36978 = msg("35204", dup342); - -var msg36979 = msg("35205", dup342); - -var msg36980 = msg("35206", dup342); - -var msg36981 = msg("35207", dup342); - -var msg36982 = msg("35208", dup342); - -var msg36983 = msg("35209", dup342); - -var msg36984 = msg("35210", dup342); - -var msg36985 = msg("35211", dup342); - -var msg36986 = msg("35212", dup342); - -var msg36987 = msg("35213", dup343); - -var msg36988 = msg("35214", dup343); - -var msg36989 = msg("35215", dup347); - -var msg36990 = msg("35216", dup347); - -var msg36991 = msg("35217", dup340); - -var msg36992 = msg("35218", dup340); - -var msg36993 = msg("35219", dup340); - -var msg36994 = msg("35220", dup340); - -var msg36995 = msg("35221", dup339); - -var msg36996 = msg("35222", dup342); - -var msg36997 = msg("35223", dup340); - -var msg36998 = msg("35224", dup340); - -var msg36999 = msg("35225", dup340); - -var msg37000 = msg("35226", dup340); - -var msg37001 = msg("35227", dup340); - -var msg37002 = msg("35228", dup340); - -var msg37003 = msg("35229", dup340); - -var msg37004 = msg("35230", dup340); - -var msg37005 = msg("35231", dup340); - -var msg37006 = msg("35232", dup340); - -var msg37007 = msg("35233", dup340); - -var msg37008 = msg("35234", dup340); - -var msg37009 = msg("35235", dup340); - -var msg37010 = msg("35236", dup340); - -var msg37011 = msg("35237", dup340); - -var msg37012 = msg("35238", dup340); - -var msg37013 = msg("35239", dup340); - -var msg37014 = msg("35240", dup340); - -var msg37015 = msg("35241", dup340); - -var msg37016 = msg("35242", dup340); - -var msg37017 = msg("35243", dup348); - -var msg37018 = msg("35244", dup348); - -var msg37019 = msg("35245", dup348); - -var msg37020 = msg("35246", dup348); - -var msg37021 = msg("35247", dup340); - -var msg37022 = msg("35248", dup340); - -var msg37023 = msg("35249", dup340); - -var msg37024 = msg("35250", dup340); - -var msg37025 = msg("35251", dup341); - -var msg37026 = msg("35252", dup341); - -var msg37027 = msg("35253", dup340); - -var msg37028 = msg("35254", dup339); - -var msg37029 = msg("35255", dup339); - -var msg37030 = msg("35256", dup347); - -var msg37031 = msg("35257", dup348); - -var msg37032 = msg("35258", dup348); - -var msg37033 = msg("35259", dup348); - -var msg37034 = msg("35260", dup348); - -var msg37035 = msg("35261", dup347); - -var msg37036 = msg("35262", dup347); - -var msg37037 = msg("35263", dup347); - -var msg37038 = msg("35264", dup347); - -var msg37039 = msg("35265", dup347); - -var msg37040 = msg("35266", dup347); - -var msg37041 = msg("35267", dup340); - -var msg37042 = msg("35268", dup340); - -var msg37043 = msg("35269", dup340); - -var msg37044 = msg("35270", dup340); - -var msg37045 = msg("35271", dup340); - -var msg37046 = msg("35272", dup340); - -var msg37047 = msg("35273", dup340); - -var msg37048 = msg("35274", dup340); - -var msg37049 = msg("35275", dup340); - -var msg37050 = msg("35276", dup340); - -var msg37051 = msg("35277", dup340); - -var msg37052 = msg("35278", dup340); - -var msg37053 = msg("35279", dup346); - -var msg37054 = msg("35280", dup346); - -var msg37055 = msg("35281", dup346); - -var msg37056 = msg("35282", dup340); - -var msg37057 = msg("35283", dup340); - -var msg37058 = msg("35284", dup340); - -var msg37059 = msg("35285", dup340); - -var msg37060 = msg("35286", dup340); - -var msg37061 = msg("35287", dup340); - -var msg37062 = msg("35288", dup340); - -var msg37063 = msg("35289", dup340); - -var msg37064 = msg("35290", dup340); - -var msg37065 = msg("35291", dup340); - -var msg37066 = msg("35292", dup340); - -var msg37067 = msg("35293", dup340); - -var msg37068 = msg("35294", dup340); - -var msg37069 = msg("35295", dup340); - -var msg37070 = msg("35296", dup340); - -var msg37071 = msg("35297", dup340); - -var msg37072 = msg("35298", dup340); - -var msg37073 = msg("35299", dup340); - -var msg37074 = msg("35300", dup339); - -var msg37075 = msg("35301", dup339); - -var msg37076 = msg("35302", dup340); - -var msg37077 = msg("35303", dup339); - -var msg37078 = msg("35304", dup341); - -var msg37079 = msg("35305", dup341); - -var msg37080 = msg("35306", dup339); - -var msg37081 = msg("35307", dup340); - -var msg37082 = msg("35308", dup341); - -var msg37083 = msg("35309", dup341); - -var msg37084 = msg("35310", dup348); - -var msg37085 = msg("35311", dup348); - -var msg37086 = msg("35312", dup339); - -var msg37087 = msg("35313", dup339); - -var msg37088 = msg("35314", dup350); - -var msg37089 = msg("35315", dup339); - -var msg37090 = msg("35316", dup342); - -var msg37091 = msg("35317", dup339); - -var msg37092 = msg("35318", dup339); - -var msg37093 = msg("35319", dup340); - -var msg37094 = msg("35320", dup340); - -var msg37095 = msg("35321", dup340); - -var msg37096 = msg("35322", dup340); - -var msg37097 = msg("35323", dup340); - -var msg37098 = msg("35324", dup340); - -var msg37099 = msg("35325", dup341); - -var msg37100 = msg("35326", dup341); - -var msg37101 = msg("35327", dup340); - -var msg37102 = msg("35328", dup340); - -var msg37103 = msg("35329", dup340); - -var msg37104 = msg("35330", dup340); - -var msg37105 = msg("35331", dup343); - -var msg37106 = msg("35332", dup343); - -var msg37107 = msg("35333", dup347); - -var msg37108 = msg("35334", dup347); - -var msg37109 = msg("35335", dup347); - -var msg37110 = msg("35336", dup352); - -var msg37111 = msg("35337", dup352); - -var msg37112 = msg("35338", dup352); - -var msg37113 = msg("35339", dup352); - -var msg37114 = msg("35340", dup352); - -var msg37115 = msg("35341", dup352); - -var msg37116 = msg("35342", dup352); - -var msg37117 = msg("35343", dup352); - -var msg37118 = msg("35344", dup339); - -var msg37119 = msg("35345", dup347); - -var msg37120 = msg("35346", dup347); - -var msg37121 = msg("35347", dup340); - -var msg37122 = msg("35348", dup339); - -var msg37123 = msg("35349", dup340); - -var msg37124 = msg("35350", dup340); - -var msg37125 = msg("35351", dup340); - -var msg37126 = msg("35352", dup340); - -var msg37127 = msg("35353", dup339); - -var msg37128 = msg("35354", dup346); - -var msg37129 = msg("35355", dup339); - -var msg37130 = msg("35356", dup344); - -var msg37131 = msg("35357", dup344); - -var msg37132 = msg("35358", dup340); - -var msg37133 = msg("35359", dup346); - -var msg37134 = msg("35360", dup341); - -var msg37135 = msg("35361", dup341); - -var msg37136 = msg("35362", dup341); - -var msg37137 = msg("35363", dup341); - -var msg37138 = msg("35364", dup340); - -var msg37139 = msg("35365", dup340); - -var msg37140 = msg("35366", dup340); - -var msg37141 = msg("35367", dup340); - -var msg37142 = msg("35368", dup339); - -var msg37143 = msg("35369", dup339); - -var msg37144 = msg("35370", dup339); - -var msg37145 = msg("35371", dup339); - -var msg37146 = msg("35372", dup348); - -var msg37147 = msg("35373", dup348); - -var msg37148 = msg("35374", dup348); - -var msg37149 = msg("35375", dup348); - -var msg37150 = msg("35376", dup340); - -var msg37151 = msg("35377", dup340); - -var msg37152 = msg("35378", dup340); - -var msg37153 = msg("35379", dup340); - -var msg37154 = msg("35380", dup343); - -var msg37155 = msg("35381", dup343); - -var msg37156 = msg("35382", dup343); - -var msg37157 = msg("35383", dup343); - -var msg37158 = msg("35384", dup339); - -var msg37159 = msg("35385", dup339); - -var msg37160 = msg("35386", dup339); - -var msg37161 = msg("35387", dup339); - -var msg37162 = msg("35388", dup339); - -var msg37163 = msg("35389", dup339); - -var msg37164 = msg("35390", dup339); - -var msg37165 = msg("35391", dup339); - -var msg37166 = msg("35392", dup339); - -var msg37167 = msg("35393", dup339); - -var msg37168 = msg("35394", dup339); - -var msg37169 = msg("35395", dup340); - -var msg37170 = msg("35396", dup340); - -var msg37171 = msg("35397", dup340); - -var msg37172 = msg("35398", dup340); - -var msg37173 = msg("35399", dup348); - -var msg37174 = msg("35400", dup339); - -var msg37175 = msg("35401", dup340); - -var msg37176 = msg("35402", dup340); - -var msg37177 = msg("35403", dup340); - -var msg37178 = msg("35404", dup340); - -var msg37179 = msg("35405", dup340); - -var msg37180 = msg("35406", dup341); - -var msg37181 = msg("35407", dup340); - -var msg37182 = msg("35408", dup340); - -var msg37183 = msg("35409", dup340); - -var msg37184 = msg("35410", dup340); - -var msg37185 = msg("35411", dup348); - -var msg37186 = msg("35412", dup348); - -var msg37187 = msg("35413", dup344); - -var msg37188 = msg("35414", dup344); - -var msg37189 = msg("35415", dup339); - -var msg37190 = msg("35416", dup339); - -var msg37191 = msg("35417", dup324); - -var msg37192 = msg("35418", dup324); - -var msg37193 = msg("35419", dup309); - -var msg37194 = msg("35420", dup309); - -var msg37195 = msg("35421", dup309); - -var msg37196 = msg("35422", dup309); - -var msg37197 = msg("35423", dup314); - -var msg37198 = msg("35424", dup324); - -var msg37199 = msg("35425", dup324); - -var msg37200 = msg("35426", dup321); - -var msg37201 = msg("35427", dup322); - -var msg37202 = msg("35428", dup322); - -var msg37203 = msg("35429", dup322); - -var msg37204 = msg("35430", dup314); - -var msg37205 = msg("35431", dup314); - -var msg37206 = msg("35432", dup314); - -var msg37207 = msg("35433", dup314); - -var msg37208 = msg("35434", dup309); - -var msg37209 = msg("35435", dup309); - -var msg37210 = msg("35436", dup321); - -var msg37211 = msg("35437", dup321); - -var msg37212 = msg("35438", dup307); - -var msg37213 = msg("35439", dup307); - -var msg37214 = msg("35440", dup309); - -var msg37215 = msg("35441", dup309); - -var msg37216 = msg("35442", dup309); - -var msg37217 = msg("35443", dup309); - -var msg37218 = msg("35444", dup314); - -var msg37219 = msg("35445", dup314); - -var msg37220 = msg("35446", dup314); - -var msg37221 = msg("35447", dup314); - -var msg37222 = msg("35448", dup321); - -var msg37223 = msg("35449", dup314); - -var msg37224 = msg("35450", dup314); - -var msg37225 = msg("35451", dup314); - -var msg37226 = msg("35452", dup314); - -var msg37227 = msg("35453", dup314); - -var msg37228 = msg("35454", dup314); - -var msg37229 = msg("35455", dup314); - -var msg37230 = msg("35456", dup314); - -var msg37231 = msg("35457", dup314); - -var msg37232 = msg("35458", dup314); - -var msg37233 = msg("35459", dup314); - -var msg37234 = msg("35460", dup311); - -var msg37235 = msg("35461", dup311); - -var msg37236 = msg("35462", dup321); - -var msg37237 = msg("35463", dup314); - -var msg37238 = msg("35464", dup314); - -var msg37239 = msg("35465", dup314); - -var msg37240 = msg("35466", dup314); - -var msg37241 = msg("35467", dup314); - -var msg37242 = msg("35468", dup314); - -var msg37243 = msg("35469", dup314); - -var msg37244 = msg("35470", dup321); - -var msg37245 = msg("35471", dup321); - -var msg37246 = msg("35472", dup321); - -var msg37247 = msg("35473", dup325); - -var msg37248 = msg("35474", dup325); - -var msg37249 = msg("35475", dup325); - -var msg37250 = msg("35476", dup325); - -var msg37251 = msg("35477", dup325); - -var msg37252 = msg("35478", dup325); - -var msg37253 = msg("35479", dup311); - -var msg37254 = msg("35480", dup311); - -var msg37255 = msg("35481", dup325); - -var msg37256 = msg("35482", dup325); - -var msg37257 = msg("35483", dup311); - -var msg37258 = msg("35484", dup311); - -var msg37259 = msg("35485", dup311); - -var msg37260 = msg("35486", dup311); - -var msg37261 = msg("35487", dup314); - -var msg37262 = msg("35488", dup314); - -var msg37263 = msg("35489", dup311); - -var msg37264 = msg("35490", dup311); - -var msg37265 = msg("35491", dup311); - -var msg37266 = msg("35492", dup311); - -var msg37267 = msg("35493", dup325); - -var msg37268 = msg("35494", dup325); - -var msg37269 = msg("35495", dup311); - -var msg37270 = msg("35496", dup311); - -var msg37271 = msg("35497", dup309); - -var msg37272 = msg("35498", dup309); - -var msg37273 = msg("35499", dup309); - -var msg37274 = msg("35500", dup309); - -var msg37275 = msg("35501", dup309); - -var msg37276 = msg("35502", dup309); - -var msg37277 = msg("35503", dup309); - -var msg37278 = msg("35504", dup309); - -var msg37279 = msg("35505", dup309); - -var msg37280 = msg("35506", dup309); - -var msg37281 = msg("35507", dup311); - -var msg37282 = msg("35508", dup311); - -var msg37283 = msg("35509", dup309); - -var msg37284 = msg("35510", dup309); - -var msg37285 = msg("35511", dup309); - -var msg37286 = msg("35512", dup309); - -var msg37287 = msg("35513", dup314); - -var msg37288 = msg("35514", dup314); - -var msg37289 = msg("35515", dup314); - -var msg37290 = msg("35516", dup314); - -var msg37291 = msg("35517", dup314); - -var msg37292 = msg("35518", dup314); - -var msg37293 = msg("35519", dup314); - -var msg37294 = msg("35520", dup314); - -var msg37295 = msg("35521", dup309); - -var msg37296 = msg("35522", dup309); - -var msg37297 = msg("35523", dup314); - -var msg37298 = msg("35524", dup314); - -var msg37299 = msg("35525", dup314); - -var msg37300 = msg("35526", dup314); - -var msg37301 = msg("35527", dup314); - -var msg37302 = msg("35528", dup314); - -var msg37303 = msg("35529", dup311); - -var msg37304 = msg("35530", dup311); - -var msg37305 = msg("35531", dup310); - -var msg37306 = msg("35532", dup310); - -var msg37307 = msg("35533", dup322); - -var msg37308 = msg("35534", dup322); - -var msg37309 = msg("35535", dup322); - -var msg37310 = msg("35536", dup311); - -var msg37311 = msg("35537", dup311); - -var msg37312 = msg("35538", dup314); - -var msg37313 = msg("35539", dup314); - -var msg37314 = msg("35540", dup322); - -var msg37315 = msg("35541", dup322); - -var msg37316 = msg("35542", dup311); - -var msg37317 = msg("35543", dup311); - -var msg37318 = msg("35544", dup311); - -var msg37319 = msg("35545", dup311); - -var msg37320 = msg("35546", dup311); - -var msg37321 = msg("35547", dup311); - -var msg37322 = msg("35548", dup311); - -var msg37323 = msg("35549", dup321); - -var msg37324 = msg("35550", dup311); - -var msg37325 = msg("35551", dup321); - -var msg37326 = msg("35552", dup311); - -var msg37327 = msg("35553", dup311); - -var msg37328 = msg("35554", dup311); - -var msg37329 = msg("35555", dup311); - -var msg37330 = msg("35556", dup314); - -var msg37331 = msg("35557", dup314); - -var msg37332 = msg("35558", dup314); - -var msg37333 = msg("35559", dup314); - -var msg37334 = msg("35560", dup314); - -var msg37335 = msg("35561", dup311); - -var msg37336 = msg("35562", dup311); - -var msg37337 = msg("35563", dup314); - -var msg37338 = msg("35564", dup314); - -var msg37339 = msg("35565", dup314); - -var msg37340 = msg("35566", dup314); - -var msg37341 = msg("35567", dup314); - -var msg37342 = msg("35568", dup314); - -var msg37343 = msg("35569", dup325); - -var msg37344 = msg("35570", dup321); - -var msg37345 = msg("35571", dup314); - -var msg37346 = msg("35572", dup314); - -var msg37347 = msg("35573", dup322); - -var msg37348 = msg("35574", dup314); - -var msg37349 = msg("35575", dup314); - -var msg37350 = msg("35576", dup314); - -var msg37351 = msg("35577", dup314); - -var msg37352 = msg("35578", dup309); - -var msg37353 = msg("35579", dup309); - -var msg37354 = msg("35580", dup309); - -var msg37355 = msg("35581", dup309); - -var msg37356 = msg("35582", dup311); - -var msg37357 = msg("35583", dup311); - -var msg37358 = msg("35584", dup314); - -var msg37359 = msg("35585", dup314); - -var msg37360 = msg("35586", dup314); - -var msg37361 = msg("35587", dup314); - -var msg37362 = msg("35588", dup314); - -var msg37363 = msg("35589", dup314); - -var msg37364 = msg("35590", dup314); - -var msg37365 = msg("35591", dup314); - -var msg37366 = msg("35592", dup309); - -var msg37367 = msg("35593", dup309); - -var msg37368 = msg("35594", dup309); - -var msg37369 = msg("35595", dup321); - -var msg37370 = msg("35596", dup321); - -var msg37371 = msg("35597", dup321); - -var msg37372 = msg("35598", dup314); - -var msg37373 = msg("35599", dup314); - -var msg37374 = msg("35600", dup314); - -var msg37375 = msg("35601", dup314); - -var msg37376 = msg("35602", dup314); - -var msg37377 = msg("35603", dup314); - -var msg37378 = msg("35604", dup314); - -var msg37379 = msg("35605", dup314); - -var msg37380 = msg("35606", dup314); - -var msg37381 = msg("35607", dup314); - -var msg37382 = msg("35608", dup314); - -var msg37383 = msg("35609", dup314); - -var msg37384 = msg("35610", dup314); - -var msg37385 = msg("35611", dup314); - -var msg37386 = msg("35612", dup314); - -var msg37387 = msg("35613", dup314); - -var msg37388 = msg("35614", dup311); - -var msg37389 = msg("35615", dup311); - -var msg37390 = msg("35616", dup311); - -var msg37391 = msg("35617", dup311); - -var msg37392 = msg("35618", dup323); - -var msg37393 = msg("35619", dup323); - -var msg37394 = msg("35620", dup323); - -var msg37395 = msg("35621", dup323); - -var msg37396 = msg("35622", dup323); - -var msg37397 = msg("35623", dup323); - -var msg37398 = msg("35628", dup309); - -var msg37399 = msg("35629", dup309); - -var msg37400 = msg("35630", dup324); - -var msg37401 = msg("35631", dup324); - -var msg37402 = msg("35632", dup314); - -var msg37403 = msg("35633", dup314); - -var msg37404 = msg("35634", dup314); - -var msg37405 = msg("35635", dup314); - -var msg37406 = msg("35636", dup309); - -var msg37407 = msg("35637", dup309); - -var msg37408 = msg("35638", dup314); - -var msg37409 = msg("35639", dup314); - -var msg37410 = msg("35640", dup314); - -var msg37411 = msg("35641", dup314); - -var msg37412 = msg("35642", dup314); - -var msg37413 = msg("35643", dup314); - -var msg37414 = msg("35644", dup314); - -var msg37415 = msg("35645", dup314); - -var msg37416 = msg("35646", dup314); - -var msg37417 = msg("35647", dup314); - -var msg37418 = msg("35648", dup314); - -var msg37419 = msg("35649", dup314); - -var msg37420 = msg("35650", dup314); - -var msg37421 = msg("35651", dup314); - -var msg37422 = msg("35652", dup314); - -var msg37423 = msg("35653", dup314); - -var msg37424 = msg("35654", dup314); - -var msg37425 = msg("35655", dup314); - -var msg37426 = msg("35656", dup314); - -var msg37427 = msg("35657", dup314); - -var msg37428 = msg("35658", dup314); - -var msg37429 = msg("35659", dup314); - -var msg37430 = msg("35660", dup314); - -var msg37431 = msg("35661", dup314); - -var msg37432 = msg("35662", dup314); - -var msg37433 = msg("35663", dup314); - -var msg37434 = msg("35664", dup314); - -var msg37435 = msg("35665", dup314); - -var msg37436 = msg("35666", dup311); - -var msg37437 = msg("35667", dup311); - -var msg37438 = msg("35668", dup311); - -var msg37439 = msg("35669", dup311); - -var msg37440 = msg("35670", dup314); - -var msg37441 = msg("35671", dup314); - -var msg37442 = msg("35672", dup314); - -var msg37443 = msg("35673", dup314); - -var msg37444 = msg("35674", dup314); - -var msg37445 = msg("35675", dup314); - -var msg37446 = msg("35676", dup314); - -var msg37447 = msg("35677", dup314); - -var msg37448 = msg("35678", dup314); - -var msg37449 = msg("35679", dup314); - -var msg37450 = msg("35680", dup314); - -var msg37451 = msg("35681", dup330); - -var msg37452 = msg("35682", dup314); - -var msg37453 = msg("35683", dup314); - -var msg37454 = msg("35684", dup314); - -var msg37455 = msg("35685", dup314); - -var msg37456 = msg("35686", dup314); - -var msg37457 = msg("35687", dup311); - -var msg37458 = msg("35691", dup314); - -var msg37459 = msg("35692", dup314); - -var msg37460 = msg("35693", dup314); - -var msg37461 = msg("35694", dup314); - -var msg37462 = msg("35695", dup314); - -var msg37463 = msg("35696", dup314); - -var msg37464 = msg("35697", dup314); - -var msg37465 = msg("35698", dup314); - -var msg37466 = msg("35699", dup314); - -var msg37467 = msg("35700", dup314); - -var msg37468 = msg("35701", dup322); - -var msg37469 = msg("35702", dup322); - -var msg37470 = msg("35703", dup322); - -var msg37471 = msg("35704", dup314); - -var msg37472 = msg("35705", dup314); - -var msg37473 = msg("35706", dup314); - -var msg37474 = msg("35707", dup314); - -var msg37475 = msg("35708", dup314); - -var msg37476 = msg("35709", dup314); - -var msg37477 = msg("35710", dup325); - -var msg37478 = msg("35719", dup311); - -var msg37479 = msg("35720", dup311); - -var msg37480 = msg("35723", dup311); - -var msg37481 = msg("35724", dup311); - -var msg37482 = msg("35731", dup311); - -var msg37483 = msg("35732", dup321); - -var msg37484 = msg("35733", dup321); - -var msg37485 = msg("35734", dup330); - -var msg37486 = msg("35735", dup314); - -var msg37487 = msg("35736", dup314); - -var msg37488 = msg("35737", dup307); - -var msg37489 = msg("35738", dup307); - -var msg37490 = msg("35739", dup307); - -var msg37491 = msg("35740", dup307); - -var msg37492 = msg("35741", dup314); - -var msg37493 = msg("35742", dup314); - -var msg37494 = msg("35743", dup314); - -var msg37495 = msg("35744", dup314); - -var msg37496 = msg("35745", dup311); - -var msg37497 = msg("35746", dup321); - -var msg37498 = msg("35747", dup325); - -var msg37499 = msg("35748", dup325); - -var msg37500 = msg("35749", dup321); - -var msg37501 = msg("35750", dup321); - -var msg37502 = msg("35751", dup309); - -var msg37503 = msg("35752", dup309); - -var msg37504 = msg("35753", dup314); - -var msg37505 = msg("35754", dup314); - -var msg37506 = msg("35755", dup314); - -var msg37507 = msg("35756", dup314); - -var msg37508 = msg("35757", dup314); - -var msg37509 = msg("35758", dup314); - -var msg37510 = msg("35759", dup314); - -var msg37511 = msg("35760", dup314); - -var msg37512 = msg("35761", dup314); - -var msg37513 = msg("35762", dup314); - -var msg37514 = msg("35763", dup324); - -var msg37515 = msg("35764", dup324); - -var msg37516 = msg("35765", dup324); - -var msg37517 = msg("35766", dup324); - -var msg37518 = msg("35767", dup314); - -var msg37519 = msg("35768", dup314); - -var msg37520 = msg("35769", dup321); - -var msg37521 = msg("35770", dup321); - -var msg37522 = msg("35771", dup325); - -var msg37523 = msg("35772", dup325); - -var msg37524 = msg("35779", dup314); - -var msg37525 = msg("35780", dup314); - -var msg37526 = msg("35781", dup314); - -var msg37527 = msg("35782", dup314); - -var msg37528 = msg("35783", dup321); - -var msg37529 = msg("35784", dup314); - -var msg37530 = msg("35785", dup314); - -var msg37531 = msg("35786", dup314); - -var msg37532 = msg("35787", dup314); - -var msg37533 = msg("35788", dup321); - -var msg37534 = msg("35789", dup321); - -var msg37535 = msg("35790", dup321); - -var msg37536 = msg("35791", dup321); - -var msg37537 = msg("35792", dup321); - -var msg37538 = msg("35793", dup321); - -var msg37539 = msg("35794", dup321); - -var msg37540 = msg("35795", dup314); - -var msg37541 = msg("35796", dup314); - -var msg37542 = msg("35797", dup314); - -var msg37543 = msg("35798", dup311); - -var msg37544 = msg("35799", dup311); - -var msg37545 = msg("35800", dup321); - -var msg37546 = msg("35801", dup321); - -var msg37547 = msg("35802", dup321); - -var msg37548 = msg("35803", dup321); - -var msg37549 = msg("35804", dup321); - -var msg37550 = msg("35805", dup311); - -var msg37551 = msg("35806", dup311); - -var msg37552 = msg("35807", dup314); - -var msg37553 = msg("35808", dup314); - -var msg37554 = msg("35809", dup323); - -var msg37555 = msg("35810", dup323); - -var msg37556 = msg("35811", dup323); - -var msg37557 = msg("35812", dup323); - -var msg37558 = msg("35813", dup314); - -var msg37559 = msg("35814", dup314); - -var msg37560 = msg("35815", dup314); - -var msg37561 = msg("35816", dup314); - -var msg37562 = msg("35817", dup314); - -var msg37563 = msg("35818", dup314); - -var msg37564 = msg("35819", dup322); - -var msg37565 = msg("35820", dup314); - -var msg37566 = msg("35821", dup314); - -var msg37567 = msg("35822", dup314); - -var msg37568 = msg("35823", dup314); - -var msg37569 = msg("35824", dup314); - -var msg37570 = msg("35825", dup314); - -var msg37571 = msg("35826", dup314); - -var msg37572 = msg("35827", dup314); - -var msg37573 = msg("35831", dup307); - -var msg37574 = msg("35836", dup325); - -var msg37575 = msg("35837", dup325); - -var msg37576 = msg("35838", dup321); - -var msg37577 = msg("35839", dup321); - -var msg37578 = msg("35840", dup321); - -var msg37579 = msg("35841", dup321); - -var msg37580 = msg("35842", dup321); - -var msg37581 = msg("35843", dup314); - -var msg37582 = msg("35844", dup314); - -var msg37583 = msg("35845", dup311); - -var msg37584 = msg("35846", dup311); - -var msg37585 = msg("35847", dup314); - -var msg37586 = msg("35848", dup309); - -var msg37587 = msg("35849", dup314); - -var msg37588 = msg("35850", dup314); - -var msg37589 = msg("35851", dup311); - -var msg37590 = msg("35852", dup314); - -var msg37591 = msg("35853", dup309); - -var msg37592 = msg("35854", dup309); - -var msg37593 = msg("35855", dup309); - -var msg37594 = msg("35856", dup309); - -var msg37595 = msg("35857", dup311); - -var msg37596 = msg("35858", dup311); - -var msg37597 = msg("35859", dup314); - -var msg37598 = msg("35860", dup314); - -var msg37599 = msg("35861", dup314); - -var msg37600 = msg("35862", dup314); - -var msg37601 = msg("35863", dup314); - -var msg37602 = msg("35864", dup314); - -var msg37603 = msg("35865", dup311); - -var msg37604 = msg("35866", dup311); - -var msg37605 = msg("35867", dup311); - -var msg37606 = msg("35868", dup325); - -var msg37607 = msg("35869", dup325); - -var msg37608 = msg("35870", dup325); - -var msg37609 = msg("35871", dup325); - -var msg37610 = msg("35872", dup314); - -var msg37611 = msg("35873", dup314); - -var msg37612 = msg("35874", dup314); - -var msg37613 = msg("35875", dup314); - -var msg37614 = msg("35876", dup311); - -var msg37615 = msg("35877", dup323); - -var msg37616 = msg("35878", dup323); - -var msg37617 = msg("35879", dup323); - -var msg37618 = msg("35880", dup323); - -var msg37619 = msg("35881", dup314); - -var msg37620 = msg("35882", dup314); - -var msg37621 = msg("35883", dup307); - -var msg37622 = msg("35884", dup314); - -var msg37623 = msg("35885", dup314); - -var msg37624 = msg("35886", dup314); - -var msg37625 = msg("35887", dup322); - -var msg37626 = msg("35888", dup314); - -var msg37627 = msg("35889", dup311); - -var msg37628 = msg("35890", dup322); - -var msg37629 = msg("35891", dup322); - -var msg37630 = msg("35892", dup314); - -var msg37631 = msg("35893", dup314); - -var msg37632 = msg("35894", dup316); - -var msg37633 = msg("35895", dup309); - -var msg37634 = msg("35896", dup309); - -var msg37635 = msg("35897", dup316); - -var msg37636 = msg("35898", dup309); - -var msg37637 = msg("35899", dup309); - -var msg37638 = msg("35900", dup309); - -var msg37639 = msg("35901", dup309); - -var msg37640 = msg("35902", dup316); - -var msg37641 = msg("35903", dup309); - -var msg37642 = msg("35904", dup309); - -var msg37643 = msg("35905", dup314); - -var msg37644 = msg("35906", dup309); - -var msg37645 = msg("35907", dup314); - -var msg37646 = msg("35908", dup309); - -var msg37647 = msg("35909", dup309); - -var msg37648 = msg("35910", dup314); - -var msg37649 = msg("35911", dup309); - -var msg37650 = msg("35912", dup309); - -var msg37651 = msg("35913", dup314); - -var msg37652 = msg("35914", dup314); - -var msg37653 = msg("35915", dup314); - -var msg37654 = msg("35916", dup314); - -var msg37655 = msg("35917", dup314); - -var msg37656 = msg("35918", dup309); - -var msg37657 = msg("35919", dup311); - -var msg37658 = msg("35920", dup314); - -var msg37659 = msg("35921", dup325); - -var msg37660 = msg("35922", dup309); - -var msg37661 = msg("35923", dup314); - -var msg37662 = msg("35924", dup311); - -var msg37663 = msg("35925", dup311); - -var msg37664 = msg("35926", dup330); - -var msg37665 = msg("35927", dup311); - -var msg37666 = msg("35928", dup311); - -var msg37667 = msg("35929", dup322); - -var msg37668 = msg("35930", dup322); - -var msg37669 = msg("35931", dup322); - -var msg37670 = msg("35932", dup322); - -var msg37671 = msg("35933", dup314); - -var msg37672 = msg("35934", dup314); - -var msg37673 = msg("35935", dup314); - -var msg37674 = msg("35936", dup314); - -var msg37675 = msg("35937", dup314); - -var msg37676 = msg("35938", dup314); - -var msg37677 = msg("35939", dup309); - -var msg37678 = msg("35940", dup309); - -var msg37679 = msg("35941", dup314); - -var msg37680 = msg("35942", dup324); - -var msg37681 = msg("35943", dup324); - -var msg37682 = msg("35944", dup309); - -var msg37683 = msg("35945", dup311); - -var msg37684 = msg("35946", dup311); - -var msg37685 = msg("35947", dup311); - -var msg37686 = msg("35948", dup311); - -var msg37687 = msg("35949", dup311); - -var msg37688 = msg("35950", dup311); - -var msg37689 = msg("35951", dup311); - -var msg37690 = msg("35952", dup311); - -var msg37691 = msg("35953", dup311); - -var msg37692 = msg("35954", dup311); - -var msg37693 = msg("35955", dup314); - -var msg37694 = msg("35956", dup314); - -var msg37695 = msg("35957", dup314); - -var msg37696 = msg("35958", dup314); - -var msg37697 = msg("35959", dup323); - -var msg37698 = msg("35960", dup323); - -var msg37699 = msg("35961", dup311); - -var msg37700 = msg("35962", dup311); - -var msg37701 = msg("35963", dup325); - -var msg37702 = msg("35964", dup325); - -var msg37703 = msg("35965", dup311); - -var msg37704 = msg("35966", dup311); - -var msg37705 = msg("35967", dup314); - -var msg37706 = msg("35968", dup314); - -var msg37707 = msg("35969", dup325); - -var msg37708 = msg("35970", dup325); - -var msg37709 = msg("35971", dup325); - -var msg37710 = msg("35972", dup325); - -var msg37711 = msg("35973", dup314); - -var msg37712 = msg("35974", dup314); - -var msg37713 = msg("35975", dup325); - -var msg37714 = msg("35976", dup325); - -var msg37715 = msg("35977", dup314); - -var msg37716 = msg("35978", dup314); - -var msg37717 = msg("35979", dup314); - -var msg37718 = msg("35980", dup314); - -var msg37719 = msg("35981", dup314); - -var msg37720 = msg("35982", dup311); - -var msg37721 = msg("35983", dup311); - -var msg37722 = msg("35984", dup324); - -var msg37723 = msg("35985", dup324); - -var msg37724 = msg("35986", dup314); - -var msg37725 = msg("35987", dup314); - -var msg37726 = msg("35988", dup309); - -var msg37727 = msg("35989", dup309); - -var msg37728 = msg("35990", dup311); - -var msg37729 = msg("35991", dup311); - -var msg37730 = msg("35992", dup325); - -var msg37731 = msg("35993", dup325); - -var msg37732 = msg("35994", dup314); - -var msg37733 = msg("35995", dup314); - -var msg37734 = msg("35996", dup309); - -var msg37735 = msg("35997", dup309); - -var msg37736 = msg("35998", dup311); - -var msg37737 = msg("35999", dup311); - -var msg37738 = msg("36000", dup309); - -var msg37739 = msg("36001", dup309); - -var msg37740 = msg("36002", dup309); - -var msg37741 = msg("36003", dup309); - -var msg37742 = msg("36004", dup325); - -var msg37743 = msg("36005", dup325); - -var msg37744 = msg("36006", dup325); - -var msg37745 = msg("36007", dup325); - -var msg37746 = msg("36008", dup325); - -var msg37747 = msg("36009", dup325); - -var msg37748 = msg("36010", dup314); - -var msg37749 = msg("36011", dup314); - -var msg37750 = msg("36012", dup314); - -var msg37751 = msg("36013", dup314); - -var msg37752 = msg("36014", dup309); - -var msg37753 = msg("36015", dup309); - -var msg37754 = msg("36016", dup314); - -var msg37755 = msg("36017", dup314); - -var msg37756 = msg("36018", dup325); - -var msg37757 = msg("36019", dup325); - -var msg37758 = msg("36020", dup325); - -var msg37759 = msg("36021", dup325); - -var msg37760 = msg("36022", dup314); - -var msg37761 = msg("36023", dup314); - -var msg37762 = msg("36024", dup314); - -var msg37763 = msg("36025", dup314); - -var msg37764 = msg("36026", dup309); - -var msg37765 = msg("36027", dup309); - -var msg37766 = msg("36028", dup314); - -var msg37767 = msg("36029", dup314); - -var msg37768 = msg("36030", dup316); - -var msg37769 = msg("36031", dup316); - -var msg37770 = msg("36032", dup316); - -var msg37771 = msg("36033", dup316); - -var msg37772 = msg("36034", dup314); - -var msg37773 = msg("36035", dup314); - -var msg37774 = msg("36036", dup314); - -var msg37775 = msg("36037", dup311); - -var msg37776 = msg("36038", dup311); - -var msg37777 = msg("36039", dup311); - -var msg37778 = msg("36040", dup311); - -var msg37779 = msg("36041", dup322); - -var msg37780 = msg("36042", dup322); - -var msg37781 = msg("36043", dup322); - -var msg37782 = msg("36044", dup321); - -var msg37783 = msg("36045", dup321); - -var msg37784 = msg("36046", dup321); - -var msg37785 = msg("36047", dup321); - -var msg37786 = msg("36048", dup321); - -var msg37787 = msg("36049", dup322); - -var msg37788 = msg("36050", dup322); - -var msg37789 = msg("36051", dup322); - -var msg37790 = msg("36052", dup314); - -var msg37791 = msg("36053", dup316); - -var msg37792 = msg("36054", dup321); - -var msg37793 = msg("36055", dup329); - -var msg37794 = msg("36056", dup329); - -var msg37795 = msg("36057", dup314); - -var msg37796 = msg("36058", dup314); - -var msg37797 = msg("36059", dup324); - -var msg37798 = msg("36060", dup321); - -var msg37799 = msg("36061", dup322); - -var msg37800 = msg("36062", dup314); - -var msg37801 = msg("36063", dup314); - -var msg37802 = msg("36064", dup321); - -var msg37803 = msg("36065", dup321); - -var msg37804 = msg("36066", dup321); - -var msg37805 = msg("36067", dup307); - -var msg37806 = msg("36068", dup309); - -var msg37807 = msg("36069", dup309); - -var msg37808 = msg("36070", dup314); - -var msg37809 = msg("36071", dup311); - -var msg37810 = msg("36072", dup324); - -var msg37811 = msg("36073", dup324); - -var msg37812 = msg("36074", dup324); - -var msg37813 = msg("36075", dup324); - -var msg37814 = msg("36076", dup324); - -var msg37815 = msg("36077", dup324); - -var msg37816 = msg("36078", dup324); - -var msg37817 = msg("36079", dup324); - -var msg37818 = msg("36080", dup324); - -var msg37819 = msg("36081", dup324); - -var msg37820 = msg("36082", dup324); - -var msg37821 = msg("36083", dup324); - -var msg37822 = msg("36084", dup324); - -var msg37823 = msg("36085", dup324); - -var msg37824 = msg("36086", dup324); - -var msg37825 = msg("36087", dup324); - -var msg37826 = msg("36088", dup324); - -var msg37827 = msg("36089", dup324); - -var msg37828 = msg("36090", dup324); - -var msg37829 = msg("36091", dup324); - -var msg37830 = msg("36092", dup324); - -var msg37831 = msg("36093", dup324); - -var msg37832 = msg("36094", dup324); - -var msg37833 = msg("36095", dup324); - -var msg37834 = msg("36096", dup324); - -var msg37835 = msg("36097", dup322); - -var msg37836 = msg("36098", dup322); - -var msg37837 = msg("36099", dup322); - -var msg37838 = msg("36100", dup314); - -var msg37839 = msg("36101", dup325); - -var msg37840 = msg("36102", dup325); - -var msg37841 = msg("36103", dup321); - -var msg37842 = msg("36104", dup314); - -var msg37843 = msg("36105", dup321); - -var msg37844 = msg("36106", dup321); - -var msg37845 = msg("36107", dup321); - -var msg37846 = msg("36108", dup321); - -var msg37847 = msg("36109", dup314); - -var msg37848 = msg("36110", dup314); - -var msg37849 = msg("36111", dup314); - -var msg37850 = msg("36112", dup314); - -var msg37851 = msg("36113", dup309); - -var msg37852 = msg("36114", dup309); - -var msg37853 = msg("36115", dup321); - -var msg37854 = msg("36116", dup314); - -var msg37855 = msg("36117", dup314); - -var msg37856 = msg("36118", dup314); - -var msg37857 = msg("36119", dup314); - -var msg37858 = msg("36120", dup309); - -var msg37859 = msg("36121", dup309); - -var msg37860 = msg("36122", dup309); - -var msg37861 = msg("36123", dup309); - -var msg37862 = msg("36124", dup314); - -var msg37863 = msg("36125", dup314); - -var msg37864 = msg("36126", dup314); - -var msg37865 = msg("36127", dup314); - -var msg37866 = msg("36128", dup314); - -var msg37867 = msg("36129", dup314); - -var msg37868 = msg("36130", dup329); - -var msg37869 = msg("36131", dup325); - -var msg37870 = msg("36132", dup321); - -var msg37871 = msg("36133", dup321); - -var msg37872 = msg("36134", dup321); - -var msg37873 = msg("36135", dup311); - -var msg37874 = msg("36136", dup311); - -var msg37875 = msg("36137", dup311); - -var msg37876 = msg("36138", dup311); - -var msg37877 = msg("36139", dup311); - -var msg37878 = msg("36140", dup311); - -var msg37879 = msg("36141", dup311); - -var msg37880 = msg("36142", dup311); - -var msg37881 = msg("36143", dup311); - -var msg37882 = msg("36144", dup311); - -var msg37883 = msg("36145", dup311); - -var msg37884 = msg("36146", dup311); - -var msg37885 = msg("36147", dup309); - -var msg37886 = msg("36148", dup309); - -var msg37887 = msg("36149", dup311); - -var msg37888 = msg("36150", dup311); - -var msg37889 = msg("36151", dup311); - -var msg37890 = msg("36152", dup311); - -var msg37891 = msg("36153", dup309); - -var msg37892 = msg("36154", dup314); - -var msg37893 = msg("36155", dup314); - -var msg37894 = msg("36156", dup314); - -var msg37895 = msg("36157", dup314); - -var msg37896 = msg("36158", dup311); - -var msg37897 = msg("36159", dup311); - -var msg37898 = msg("36160", dup309); - -var msg37899 = msg("36161", dup309); - -var msg37900 = msg("36162", dup309); - -var msg37901 = msg("36163", dup309); - -var msg37902 = msg("36164", dup309); - -var msg37903 = msg("36165", dup309); - -var msg37904 = msg("36166", dup309); - -var msg37905 = msg("36167", dup309); - -var msg37906 = msg("36168", dup309); - -var msg37907 = msg("36169", dup309); - -var msg37908 = msg("36170", dup309); - -var msg37909 = msg("36171", dup309); - -var msg37910 = msg("36172", dup309); - -var msg37911 = msg("36173", dup309); - -var msg37912 = msg("36174", dup309); - -var msg37913 = msg("36175", dup309); - -var msg37914 = msg("36176", dup309); - -var msg37915 = msg("36177", dup309); - -var msg37916 = msg("36178", dup316); - -var msg37917 = msg("36179", dup316); - -var msg37918 = msg("36180", dup316); - -var msg37919 = msg("36181", dup316); - -var msg37920 = msg("36182", dup311); - -var msg37921 = msg("36183", dup309); - -var msg37922 = msg("36184", dup311); - -var msg37923 = msg("36185", dup321); - -var msg37924 = msg("36186", dup321); - -var msg37925 = msg("36187", dup314); - -var msg37926 = msg("36188", dup314); - -var msg37927 = msg("36189", dup314); - -var msg37928 = msg("36190", dup314); - -var msg37929 = msg("36191", dup309); - -var msg37930 = msg("36192", dup309); - -var msg37931 = msg("36193", dup311); - -var msg37932 = msg("36194", dup309); - -var msg37933 = msg("36195", dup309); - -var msg37934 = msg("36196", dup309); - -var msg37935 = msg("36197", dup316); - -var msg37936 = msg("36198", dup321); - -var msg37937 = msg("36199", dup321); - -var msg37938 = msg("36200", dup321); - -var msg37939 = msg("36201", dup311); - -var msg37940 = msg("36202", dup321); - -var msg37941 = msg("36203", dup309); - -var msg37942 = msg("36204", dup309); - -var msg37943 = msg("36205", dup321); - -var msg37944 = msg("36206", dup321); - -var msg37945 = msg("36207", dup321); - -var msg37946 = msg("36208", dup314); - -var msg37947 = msg("36209", dup314); - -var msg37948 = msg("36224", dup323); - -var msg37949 = msg("36231", dup321); - -var msg37950 = msg("36232", dup321); - -var msg37951 = msg("36233", dup321); - -var msg37952 = msg("36234", dup321); - -var msg37953 = msg("36235", dup325); - -var msg37954 = msg("36236", dup325); - -var msg37955 = msg("36237", dup325); - -var msg37956 = msg("36238", dup325); - -var msg37957 = msg("36239", dup314); - -var msg37958 = msg("36240", dup314); - -var msg37959 = msg("36241", dup321); - -var msg37960 = msg("36242", dup314); - -var msg37961 = msg("36243", dup314); - -var msg37962 = msg("36244", dup309); - -var msg37963 = msg("36245", dup309); - -var msg37964 = msg("36246", dup323); - -var msg37965 = msg("36247", dup311); - -var msg37966 = msg("36248", dup311); - -var msg37967 = msg("36249", dup311); - -var msg37968 = msg("36250", dup309); - -var msg37969 = msg("36251", dup311); - -var msg37970 = msg("36252", dup324); - -var msg37971 = msg("36253", dup314); - -var msg37972 = msg("36254", dup311); - -var msg37973 = msg("36255", dup311); - -var msg37974 = msg("36256", dup314); - -var msg37975 = msg("36257", dup309); - -var msg37976 = msg("36258", dup309); - -var msg37977 = msg("36259", dup309); - -var msg37978 = msg("36260", dup309); - -var msg37979 = msg("36261", dup324); - -var msg37980 = msg("36262", dup324); - -var msg37981 = msg("36263", dup314); - -var msg37982 = msg("36264", dup314); - -var msg37983 = msg("36265", dup314); - -var msg37984 = msg("36266", dup314); - -var msg37985 = msg("36267", dup321); - -var msg37986 = msg("36268", dup321); - -var msg37987 = msg("36269", dup321); - -var msg37988 = msg("36270", dup316); - -var msg37989 = msg("36271", dup311); - -var msg37990 = msg("36272", dup314); - -var msg37991 = msg("36273", dup321); - -var msg37992 = msg("36274", dup321); - -var msg37993 = msg("36275", dup321); - -var msg37994 = msg("36276", dup321); - -var msg37995 = msg("36277", dup323); - -var msg37996 = msg("36278", dup323); - -var msg37997 = msg("36279", dup323); - -var msg37998 = msg("36280", dup323); - -var msg37999 = msg("36281", dup311); - -var msg38000 = msg("36282", dup314); - -var msg38001 = msg("36283", dup322); - -var msg38002 = msg("36284", dup322); - -var msg38003 = msg("36285", dup322); - -var msg38004 = msg("36286", dup311); - -var msg38005 = msg("36287", dup314); - -var msg38006 = msg("36288", dup314); - -var msg38007 = msg("36289", dup314); - -var msg38008 = msg("36290", dup314); - -var msg38009 = msg("36291", dup314); - -var msg38010 = msg("36292", dup314); - -var msg38011 = msg("36293", dup321); - -var msg38012 = msg("36294", dup321); - -var msg38013 = msg("36295", dup311); - -var msg38014 = msg("36296", dup311); - -var msg38015 = msg("36297", dup314); - -var msg38016 = msg("36298", dup314); - -var msg38017 = msg("36299", dup314); - -var msg38018 = msg("36300", dup314); - -var msg38019 = msg("36301", dup314); - -var msg38020 = msg("36302", dup314); - -var msg38021 = msg("36303", dup321); - -var msg38022 = msg("36304", dup321); - -var msg38023 = msg("36305", dup309); - -var msg38024 = msg("36306", dup309); - -var msg38025 = msg("36307", dup309); - -var msg38026 = msg("36308", dup309); - -var msg38027 = msg("36309", dup309); - -var msg38028 = msg("36310", dup309); - -var msg38029 = msg("36311", dup314); - -var msg38030 = msg("36312", dup314); - -var msg38031 = msg("36313", dup314); - -var msg38032 = msg("36314", dup314); - -var msg38033 = msg("36315", dup311); - -var msg38034 = msg("36316", dup314); - -var msg38035 = msg("36317", dup314); - -var msg38036 = msg("36318", dup314); - -var msg38037 = msg("36319", dup314); - -var msg38038 = msg("36320", dup314); - -var msg38039 = msg("36321", dup314); - -var msg38040 = msg("36322", dup314); - -var msg38041 = msg("36323", dup314); - -var msg38042 = msg("36324", dup314); - -var msg38043 = msg("36325", dup321); - -var msg38044 = msg("36326", dup321); - -var msg38045 = msg("36327", dup321); - -var msg38046 = msg("36328", dup321); - -var msg38047 = msg("36329", dup321); - -var msg38048 = msg("36330", dup314); - -var msg38049 = msg("36331", dup321); - -var msg38050 = msg("36332", dup311); - -var msg38051 = msg("36333", dup314); - -var msg38052 = msg("36334", dup314); - -var msg38053 = msg("36335", dup314); - -var msg38054 = msg("36336", dup314); - -var msg38055 = msg("36337", dup314); - -var msg38056 = msg("36338", dup310); - -var msg38057 = msg("36339", dup311); - -var msg38058 = msg("36340", dup311); - -var msg38059 = msg("36341", dup311); - -var msg38060 = msg("36342", dup311); - -var msg38061 = msg("36343", dup311); - -var msg38062 = msg("36344", dup311); - -var msg38063 = msg("36345", dup311); - -var msg38064 = msg("36346", dup311); - -var msg38065 = msg("36347", dup311); - -var msg38066 = msg("36348", dup311); - -var msg38067 = msg("36349", dup314); - -var msg38068 = msg("36350", dup314); - -var msg38069 = msg("36351", dup314); - -var msg38070 = msg("36352", dup314); - -var msg38071 = msg("36353", dup314); - -var msg38072 = msg("36354", dup314); - -var msg38073 = msg("36355", dup314); - -var msg38074 = msg("36356", dup314); - -var msg38075 = msg("36357", dup314); - -var msg38076 = msg("36358", dup314); - -var msg38077 = msg("36359", dup311); - -var msg38078 = msg("36360", dup311); - -var msg38079 = msg("36361", dup311); - -var msg38080 = msg("36362", dup311); - -var msg38081 = msg("36363", dup311); - -var msg38082 = msg("36364", dup311); - -var msg38083 = msg("36365", dup311); - -var msg38084 = msg("36366", dup311); - -var msg38085 = msg("36367", dup309); - -var msg38086 = msg("36368", dup309); - -var msg38087 = msg("36369", dup309); - -var msg38088 = msg("36370", dup309); - -var msg38089 = msg("36371", dup311); - -var msg38090 = msg("36372", dup311); - -var msg38091 = msg("36373", dup311); - -var msg38092 = msg("36374", dup311); - -var msg38093 = msg("36375", dup310); - -var msg38094 = msg("36376", dup309); - -var msg38095 = msg("36377", dup324); - -var msg38096 = msg("36378", dup324); - -var msg38097 = msg("36379", dup327); - -var msg38098 = msg("36380", dup314); - -var msg38099 = msg("36381", dup321); - -var msg38100 = msg("36382", dup321); - -var msg38101 = msg("36383", dup314); - -var msg38102 = msg("36384", dup314); - -var msg38103 = msg("36389", dup321); - -var msg38104 = msg("36390", dup321); - -var msg38105 = msg("36391", dup321); - -var msg38106 = msg("36392", dup321); - -var msg38107 = msg("36393", dup321); - -var msg38108 = msg("36394", dup321); - -var msg38109 = msg("36395", dup321); - -var msg38110 = msg("36396", dup321); - -var msg38111 = msg("36397", dup321); - -var msg38112 = msg("36398", dup311); - -var msg38113 = msg("36399", dup311); - -var msg38114 = msg("36400", dup311); - -var msg38115 = msg("36401", dup325); - -var msg38116 = msg("36402", dup325); - -var msg38117 = msg("36403", dup314); - -var msg38118 = msg("36404", dup314); - -var msg38119 = msg("36405", dup314); - -var msg38120 = msg("36406", dup314); - -var msg38121 = msg("36407", dup311); - -var msg38122 = msg("36408", dup311); - -var msg38123 = msg("36409", dup311); - -var msg38124 = msg("36410", dup311); - -var msg38125 = msg("36411", dup325); - -var msg38126 = msg("36412", dup325); - -var msg38127 = msg("36413", dup325); - -var msg38128 = msg("36414", dup325); - -var msg38129 = msg("36415", dup311); - -var msg38130 = msg("36416", dup311); - -var msg38131 = msg("36417", dup325); - -var msg38132 = msg("36418", dup325); - -var msg38133 = msg("36419", dup314); - -var msg38134 = msg("36420", dup314); - -var msg38135 = msg("36421", dup314); - -var msg38136 = msg("36422", dup314); - -var msg38137 = msg("36423", dup325); - -var msg38138 = msg("36424", dup325); - -var msg38139 = msg("36425", dup309); - -var msg38140 = msg("36426", dup309); - -var msg38141 = msg("36427", dup309); - -var msg38142 = msg("36428", dup309); - -var msg38143 = msg("36429", dup309); - -var msg38144 = msg("36430", dup309); - -var msg38145 = msg("36431", dup311); - -var msg38146 = msg("36432", dup311); - -var msg38147 = msg("36433", dup325); - -var msg38148 = msg("36434", dup325); - -var msg38149 = msg("36435", dup314); - -var msg38150 = msg("36436", dup325); - -var msg38151 = msg("36437", dup325); - -var msg38152 = msg("36438", dup325); - -var msg38153 = msg("36439", dup325); - -var msg38154 = msg("36440", dup325); - -var msg38155 = msg("36441", dup311); - -var msg38156 = msg("36442", dup311); - -var msg38157 = msg("36443", dup325); - -var msg38158 = msg("36444", dup325); - -var msg38159 = msg("36445", dup314); - -var msg38160 = msg("36446", dup314); - -var msg38161 = msg("36447", dup309); - -var msg38162 = msg("36448", dup309); - -var msg38163 = msg("36449", dup308); - -var msg38164 = msg("36450", dup325); - -var msg38165 = msg("36451", dup325); - -var msg38166 = msg("36452", dup311); - -var msg38167 = msg("36453", dup311); - -var msg38168 = msg("36454", dup311); - -var msg38169 = msg("36455", dup311); - -var msg38170 = msg("36456", dup309); - -var msg38171 = msg("36457", dup311); - -var msg38172 = msg("36458", dup323); - -var msg38173 = msg("36459", dup323); - -var msg38174 = msg("36460", dup321); - -var msg38175 = msg("36461", dup309); - -var msg38176 = msg("36462", dup309); - -var msg38177 = msg("36463", dup309); - -var msg38178 = msg("36464", dup321); - -var msg38179 = msg("36465", dup321); - -var msg38180 = msg("36466", dup321); - -var msg38181 = msg("36467", dup321); - -var msg38182 = msg("36468", dup321); - -var msg38183 = msg("36469", dup321); - -var msg38184 = msg("36470", dup321); - -var msg38185 = msg("36471", dup321); - -var msg38186 = msg("36472", dup314); - -var msg38187 = msg("36473", dup314); - -var msg38188 = msg("36474", dup314); - -var msg38189 = msg("36475", dup314); - -var msg38190 = msg("36476", dup314); - -var msg38191 = msg("36477", dup314); - -var msg38192 = msg("36478", dup314); - -var msg38193 = msg("36479", dup314); - -var msg38194 = msg("36480", dup314); - -var msg38195 = msg("36481", dup314); - -var msg38196 = msg("36482", dup314); - -var msg38197 = msg("36483", dup314); - -var msg38198 = msg("36484", dup314); - -var msg38199 = msg("36485", dup314); - -var msg38200 = msg("36486", dup314); - -var msg38201 = msg("36487", dup314); - -var msg38202 = msg("36488", dup314); - -var msg38203 = msg("36489", dup314); - -var msg38204 = msg("36490", dup314); - -var msg38205 = msg("36491", dup314); - -var msg38206 = msg("36492", dup311); - -var msg38207 = msg("36493", dup309); - -var msg38208 = msg("36494", dup323); - -var msg38209 = msg("36495", dup314); - -var msg38210 = msg("36496", dup314); - -var msg38211 = msg("36497", dup321); - -var msg38212 = msg("36498", dup309); - -var msg38213 = msg("36499", dup309); - -var msg38214 = msg("36500", dup309); - -var msg38215 = msg("36501", dup309); - -var msg38216 = msg("36502", dup314); - -var msg38217 = msg("36503", dup314); - -var msg38218 = msg("36504", dup314); - -var msg38219 = msg("36505", dup314); - -var msg38220 = msg("36506", dup321); - -var msg38221 = msg("36507", dup323); - -var msg38222 = msg("36508", dup323); - -var msg38223 = msg("36509", dup323); - -var msg38224 = msg("36510", dup323); - -var msg38225 = msg("36511", dup314); - -var msg38226 = msg("36512", dup314); - -var msg38227 = msg("36513", dup314); - -var msg38228 = msg("36514", dup314); - -var msg38229 = msg("36515", dup314); - -var msg38230 = msg("36516", dup314); - -var msg38231 = msg("36517", dup314); - -var msg38232 = msg("36518", dup321); - -var msg38233 = msg("36519", dup321); - -var msg38234 = msg("36520", dup321); - -var msg38235 = msg("36521", dup321); - -var msg38236 = msg("36522", dup321); - -var msg38237 = msg("36523", dup311); - -var msg38238 = msg("36524", dup309); - -var msg38239 = msg("36525", dup309); - -var msg38240 = msg("36526", dup321); - -var msg38241 = msg("36527", dup311); - -var msg38242 = msg("36528", dup311); - -var msg38243 = msg("36529", dup311); - -var msg38244 = msg("36530", dup311); - -var msg38245 = msg("36531", dup314); - -var msg38246 = msg("36532", dup311); - -var msg38247 = msg("36533", dup314); - -var msg38248 = msg("36534", dup314); - -var msg38249 = msg("36535", dup311); - -var msg38250 = msg("36536", dup309); - -var msg38251 = msg("36537", dup321); - -var msg38252 = msg("36538", dup321); - -var msg38253 = msg("36539", dup321); - -var msg38254 = msg("36540", dup321); - -var msg38255 = msg("36541", dup314); - -var msg38256 = msg("36542", dup309); - -var msg38257 = msg("36543", dup311); - -var msg38258 = msg("36544", dup323); - -var msg38259 = msg("36545", dup311); - -var msg38260 = msg("36546", dup311); - -var msg38261 = msg("36547", dup311); - -var msg38262 = msg("36548", dup311); - -var msg38263 = msg("36549", dup314); - -var msg38264 = msg("36550", dup314); - -var msg38265 = msg("36551", dup314); - -var msg38266 = msg("36552", dup314); - -var msg38267 = msg("36553", dup314); - -var msg38268 = msg("36554", dup314); - -var msg38269 = msg("36555", dup314); - -var msg38270 = msg("36556", dup314); - -var msg38271 = msg("36557", dup324); - -var msg38272 = msg("36558", dup324); - -var msg38273 = msg("36559", dup311); - -var msg38274 = msg("36560", dup311); - -var msg38275 = msg("36561", dup314); - -var msg38276 = msg("600009", dup196); - -var msg38277 = msg("600010", dup265); - -var msg38278 = msg("600015", dup265); - -var msg38279 = msg("6000022", dup353); - -var msg38280 = msg("600023", dup196); - -var msg38281 = msg("6000025", dup353); - -var msg38282 = msg("1000001", dup246); - -var msg38283 = msg("1000002", dup246); - -var msg38284 = msg("1000003", dup196); - -var all65 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var msg38285 = msg("1000003:01", all65); - -var select2443 = linear_select([ - msg38284, - msg38285, -]); - -var msg38286 = msg("1000004", dup196); - -var msg38287 = msg("1000005", dup196); - -var msg38288 = msg("1000007", dup265); - -var msg38289 = msg("1000010", dup230); - -var msg38290 = msg("1000012", dup196); - -var msg38291 = msg("1000014", dup265); - -var msg38292 = msg("1000015", dup297); - -var msg38293 = msg("1000016", dup242); - -var msg38294 = msg("1000020", dup192); - -var msg38295 = msg("1000021", dup276); - -var msg38296 = msg("1000022", dup276); - -var msg38297 = msg("1000023", dup196); - -var msg38298 = msg("1000024", dup196); - -var msg38299 = msg("1000026", dup192); - -var msg38300 = msg("1000028", dup196); - -var msg38301 = msg("1000029", dup265); - -var msg38302 = msg("1000030", dup196); - -var msg38303 = msg("1000031", dup265); - -var msg38304 = msg("1000032", dup285); - -var msg38305 = msg("1000033", dup265); - -var msg38306 = msg("1000034", dup265); - -var msg38307 = msg("1000035", dup265); - -var msg38308 = msg("1000036", dup196); - -var msg38309 = msg("1000037", dup196); - -var msg38310 = msg("1000038", dup196); - -var msg38311 = msg("1000039", dup265); - -var msg38312 = msg("1000040", dup265); - -var msg38313 = msg("1000041", dup196); - -var msg38314 = msg("1000043", dup265); - -var msg38315 = msg("1000044", dup196); - -var msg38316 = msg("1000045", dup196); - -var msg38317 = msg("1000046", dup196); - -var msg38318 = msg("1000047", dup196); - -var msg38319 = msg("1000048", dup196); - -var msg38320 = msg("1000049", dup265); - -var msg38321 = msg("1000050", dup265); - -var msg38322 = msg("1000054", dup196); - -var msg38323 = msg("1000055", dup196); - -var msg38324 = msg("1000056", dup196); - -var msg38325 = msg("1000057", dup196); - -var msg38326 = msg("2000480", dup230); - -var msg38327 = msg("2000538", dup194); - -var msg38328 = msg("2000540", dup194); - -var msg38329 = msg("2000562", dup263); - -var msg38330 = msg("2000648", dup196); - -var msg38331 = msg("2000716", dup248); - -var msg38332 = msg("2000969", dup265); - -var msg38333 = msg("2000971", dup265); - -var msg38334 = msg("2000974", dup265); - -var msg38335 = msg("2000976", dup265); - -var msg38336 = msg("2000977", dup265); - -var msg38337 = msg("2000987", dup265); - -var msg38338 = msg("2000990", dup265); - -var msg38339 = msg("2000993", dup265); - -var msg38340 = msg("2000997", dup265); - -var msg38341 = msg("2001002", dup265); - -var msg38342 = msg("2001010", dup265); - -var msg38343 = msg("2001012", dup265); - -var msg38344 = msg("2001013", dup265); - -var msg38345 = msg("2001023", dup265); - -var msg38346 = msg("2001025", dup265); - -var msg38347 = msg("2001030", dup265); - -var msg38348 = msg("2001040", dup265); - -var msg38349 = msg("2001042", dup196); - -var msg38350 = msg("2001244", dup265); - -var msg38351 = msg("2001245", dup265); - -var msg38352 = msg("2001286", dup265); - -var msg38353 = msg("2001287", dup265); - -var msg38354 = msg("2001288", dup265); - -var msg38355 = msg("2001367", dup265); - -var msg38356 = msg("2001400", dup265); - -var msg38357 = msg("2001402", dup265); - -var msg38358 = msg("2001411", dup242); - -var msg38359 = msg("2001417", dup242); - -var msg38360 = msg("2001419", dup242); - -var msg38361 = msg("2001567", dup265); - -var msg38362 = msg("2001568", dup265); - -var msg38363 = msg("2001569", dup194); - -var msg38364 = msg("2001579", dup194); - -var msg38365 = msg("2001581", dup194); - -var msg38366 = msg("2001726", dup265); - -var msg38367 = msg("2001801", dup267); - -var msg38368 = msg("2001852", dup265); - -var msg38369 = msg("2001893", dup242); - -var msg38370 = msg("2001904", dup194); - -var msg38371 = msg("2001945", dup265); - -var msg38372 = msg("2001970", dup297); - -var msg38373 = msg("2001972", dup194); - -var msg38374 = msg("2002032", dup192); - -var msg38375 = msg("2002134", dup265); - -var msg38376 = msg("2002170", dup196); - -var msg38377 = msg("2002176", dup265); - -var msg38378 = msg("2002190", dup265); - -var msg38379 = msg("2002196", dup196); - -var msg38380 = msg("2002200", dup265); - -var msg38381 = msg("2002205", dup303); - -var msg38382 = msg("2002910", dup194); - -var msg38383 = msg("2002911", dup194); - -var msg38384 = msg("2002992", dup194); - -var msg38385 = msg("2002993", dup194); - -var msg38386 = msg("2002994", dup194); - -var msg38387 = msg("2003157", dup192); - -var msg38388 = msg("2003183", dup192); - -var msg38389 = msg("2003380", dup192); - -var msg38390 = msg("2003642", dup192); - -var msg38391 = msg("2003870", dup194); - -var msg38392 = msg("2007142", dup192); - -var msg38393 = msg("2007585", dup192); - -var msg38394 = msg("2007588", dup192); - -var msg38395 = msg("2007594", dup192); - -var msg38396 = msg("2007688", dup192); - -var msg38397 = msg("2007702", dup192); - -var msg38398 = msg("2007724", dup192); - -var msg38399 = msg("2007920", dup192); - -var msg38400 = msg("2007962", dup192); - -var msg38401 = msg("2007963", dup265); - -var msg38402 = msg("2007964", dup192); - -var msg38403 = msg("2008010", dup192); - -var msg38404 = msg("2008056", dup192); - -var msg38405 = msg("2008059", dup192); - -var msg38406 = msg("2008082", dup192); - -var msg38407 = msg("2008109", dup192); - -var msg38408 = msg("2008124", dup192); - -var msg38409 = msg("2008143", dup192); - -var msg38410 = msg("2008182", dup192); - -var msg38411 = msg("2008194", dup192); - -var msg38412 = msg("2008335", dup192); - -var msg38413 = msg("2008373", dup196); - -var msg38414 = msg("2008384", dup192); - -var msg38415 = msg("2008386", dup192); - -var msg38416 = msg("2008420", dup192); - -var msg38417 = msg("2008475", dup196); - -var msg38418 = msg("2008480", dup192); - -var msg38419 = msg("2008505", dup196); - -var msg38420 = msg("2404003", dup196); - -var msg38421 = msg("2404011", dup196); - -var msg38422 = msg("2404013", dup196); - -var msg38423 = msg("2404015", dup196); - -var msg38424 = msg("2404016", dup196); - -var msg38425 = msg("3000005", dup194); - -var msg38426 = msg("3404269", dup194); - -var msg38427 = msg("3404272", dup194); - -var msg38428 = msg("8888888", dup314); - -var msg38429 = msg("8888889", dup314); - -var msg38430 = msg("100000121", dup265); - -var msg38431 = msg("100000122", dup267); - -var msg38432 = msg("100000137", dup287); - -var msg38433 = msg("100000138", dup265); - -var msg38434 = msg("100000160", dup197); - -var msg38435 = msg("100000161", dup287); - -var msg38436 = msg("100000185", dup265); - -var msg38437 = msg("100000211", dup265); - -var msg38438 = msg("100000213", dup265); - -var msg38439 = msg("100000219", dup250); - -var msg38440 = msg("100000241", dup196); - -var msg38441 = msg("100000262", dup196); - -var msg38442 = msg("100000266", dup196); - -var msg38443 = msg("100000272", dup196); - -var msg38444 = msg("100000273", dup196); - -var msg38445 = msg("100000274", dup194); - -var msg38446 = msg("100000275", dup194); - -var msg38447 = msg("100000277", dup196); - -var msg38448 = msg("100000278", dup196); - -var msg38449 = msg("100000550", dup265); - -var msg38450 = msg("100000687", dup198); - -var msg38451 = msg("100000689", dup250); - -var all66 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup127, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg38452 = msg("snort-sid-template", all66); - -var part13 = match("MESSAGE#38452:spp_portscan/0", "nwparser.payload", "PORTSCAN DETECTED from %{p0}"); - -var part14 = match("MESSAGE#38452:spp_portscan/1_0", "nwparser.p0", "%{saddr}:%{sport->} (%{location_src})(THRESHOLD %{p0}"); - -var part15 = match("MESSAGE#38452:spp_portscan/1_1", "nwparser.p0", "%{saddr}:%{sport}(THRESHOLD %{p0}"); - -var part16 = match("MESSAGE#38452:spp_portscan/1_2", "nwparser.p0", "%{saddr}(THRESHOLD %{p0}"); - -var select2444 = linear_select([ - part14, - part15, - part16, -]); - -var part17 = match("MESSAGE#38452:spp_portscan/2", "nwparser.p0", "%{dclass_counter1->} connections exceeded in %{duration->} seconds)"); - -var all67 = all_match({ - processors: [ - part13, - select2444, - part17, - ], - on_success: processor_chain([ - dup61, - dup31, - dup128, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var msg38453 = msg("spp_portscan", all67); - -var part18 = match("MESSAGE#38453:spp_portscan:01", "nwparser.payload", "portscan status from %{saddr}: %{dclass_counter1->} connections across %{fld1->} hosts: %{fld2}, %{fld3}", processor_chain([ - dup61, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup128, -])); - -var msg38454 = msg("spp_portscan:01", part18); - -var part19 = match("MESSAGE#38454:spp_portscan:02", "nwparser.payload", "End of portscan from %{saddr}: TOTAL time(%{fld1}) hosts(%{fld2}) %{fld3->} %{fld4}", processor_chain([ - dup61, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, -])); - -var msg38455 = msg("spp_portscan:02", part19); - -var msg38456 = msg("spp_portscan:03", dup194); - -var select2445 = linear_select([ - msg38453, - msg38454, - msg38455, - msg38456, -]); - -var part20 = match("MESSAGE#38456:Portscan", "nwparser.payload", "Portscan detected from %{saddr->} Talker(%{fld1}) Scanner(%{fld2})", processor_chain([ - dup61, - dup31, - dup32, -])); - -var msg38457 = msg("Portscan", part20); - -var part21 = match("MESSAGE#38457:Hops_Change", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Hops: %{result}", processor_chain([ - dup127, - dup31, - dup32, - dup47, - dup129, -])); - -var msg38458 = msg("Hops_Change", part21); - -var msg38459 = msg("MAC_Information_Change", dup354); - -var msg38460 = msg("Additional_MAC_Detected_for", dup354); - -var part22 = match("MESSAGE#38460:NETBIOS_Name_Change", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} NETBIOS Name: %{result}", processor_chain([ - dup127, - dup31, - dup32, - dup47, - dup129, -])); - -var msg38461 = msg("NETBIOS_Name_Change", part22); - -var part23 = match("MESSAGE#38461:New_Host/1_0", "nwparser.p0", "MAC Address: %{smacaddr->} Host Type: %{p0}"); - -var part24 = match("MESSAGE#38461:New_Host/1_1", "nwparser.p0", "IP Address: %{saddr->} Host Type: %{p0}"); - -var select2446 = linear_select([ - part23, - part24, -]); - -var part25 = match_copy("MESSAGE#38461:New_Host/2", "nwparser.p0", "fld7"); - -var all68 = all_match({ - processors: [ - dup133, - select2446, - part25, - ], - on_success: processor_chain([ - dup127, - dup31, - dup32, - dup47, - dup129, - ]), -}); - -var msg38462 = msg("New_Host", all68); - -var part26 = match("MESSAGE#38462:New_Network_Protocol/1_0", "nwparser.p0", "MAC Address: %{smacaddr->} Network Protocol: %{p0}"); - -var part27 = match("MESSAGE#38462:New_Network_Protocol/1_1", "nwparser.p0", "IP Address: %{saddr->} Network Protocol: %{p0}"); - -var select2447 = linear_select([ - part26, - part27, -]); - -var all69 = all_match({ - processors: [ - dup133, - select2447, - dup134, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, - ]), -}); - -var msg38463 = msg("New_Network_Protocol", all69); - -var part28 = match("MESSAGE#38463:New_UDP_Service", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Port: %{protocol}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var msg38464 = msg("New_UDP_Service", part28); - -var part29 = match("MESSAGE#38464:New_Transport_Protocol", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Transport Protocol: %{protocol}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var msg38465 = msg("New_Transport_Protocol", part29); - -var msg38466 = msg("OS_Confidence_Update", dup183); - -var msg38467 = msg("OS_Information_Update", dup183); - -var msg38468 = msg("TCP_Service_Confidence_Update", dup184); - -var part30 = match("MESSAGE#38468:TCP_Service_Information_Update/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Port: %{sport->} Service: %{p0}"); - -var all70 = all_match({ - processors: [ - part30, - dup185, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, - ]), -}); - -var msg38469 = msg("TCP_Service_Information_Update", all70); - -var part31 = match("MESSAGE#38469:VLAN_Tag_Information_Update", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> MAC Address: %{saddr->} VLAN ID: %{sport->} Type: %{protocol->} Priority: %{threat_val}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, - dup45, -])); - -var msg38470 = msg("VLAN_Tag_Information_Update", part31); - -var part32 = match("MESSAGE#38470:New_OS/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} OS: %{p0}"); - -var part33 = match("MESSAGE#38470:New_OS/1_0", "nwparser.p0", "%{os->} Device Info: %{fld7}"); - -var part34 = match_copy("MESSAGE#38470:New_OS/1_1", "nwparser.p0", "os"); - -var select2448 = linear_select([ - part33, - part34, -]); - -var all71 = all_match({ - processors: [ - part32, - select2448, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, - ]), -}); - -var msg38471 = msg("New_OS", all71); - -var msg38472 = msg("New_Client_Application", dup186); - -var msg38473 = msg("Client_Application_Update", dup186); - -var msg38474 = msg("New_TCP_Service", dup187); - -var msg38475 = msg("TCP_Port_Closed", dup187); - -var msg38476 = msg("TCP_Port_Timeout", dup188); - -var part35 = match("MESSAGE#38476:Client_Application_Timeout", "nwparser.payload", "%{context->} From %{sensor->} at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} web browser %{application}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var msg38477 = msg("Client_Application_Timeout", part35); - -var msg38478 = msg("Host_Timeout", dup188); - -var part36 = match("MESSAGE#38478:Identity_Timeout", "nwparser.payload", "%{context->} From %{sensor->} at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} OS%{os}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var msg38479 = msg("Identity_Timeout", part36); - -var part37 = match("MESSAGE#38479:Identity_Timeout:01/0", "nwparser.payload", "%{context->} From %{sensor->} at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Serv%{p0}"); - -var part38 = match("MESSAGE#38479:Identity_Timeout:01/1_0", "nwparser.p0", "ice%{p0}"); - -var part39 = match("MESSAGE#38479:Identity_Timeout:01/1_1", "nwparser.p0", "er%{p0}"); - -var select2449 = linear_select([ - part38, - part39, -]); - -var part40 = match("MESSAGE#38479:Identity_Timeout:01/2", "nwparser.p0", "%{}port: %{sport}/%{protocol->} %{network_service}"); - -var all72 = all_match({ - processors: [ - part37, - select2449, - part40, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, - ]), -}); - -var msg38480 = msg("Identity_Timeout:01", all72); - -var select2450 = linear_select([ - msg38479, - msg38480, -]); - -var msg38481 = msg("UDP_Port_Timeout", dup188); - -var msg38482 = msg("UDP_Service_Confidence_Update", dup184); - -var part41 = match("MESSAGE#38482:UDP_Service_Information_Update", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Port: %{sport->} Service: %{protocol->} Confidence: %{result->} Subtypes: %{fld1}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var msg38483 = msg("UDP_Service_Information_Update", part41); - -var msg38484 = msg("UDP_Service_Information_Update:01", dup184); - -var select2451 = linear_select([ - msg38483, - msg38484, -]); - -var part42 = match("MESSAGE#38484:EmergingThreats/0", "nwparser.payload", "%{context->} [%{p0}"); - -var part43 = match("MESSAGE#38484:EmergingThreats/1_0", "nwparser.p0", "Impact: %{result}] From \"%{sensor}\" at %{fld6->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{p0}"); - -var part44 = match("MESSAGE#38484:EmergingThreats/1_1", "nwparser.p0", "Classification: %{sigtype}] [Priority: %{p0}"); - -var part45 = match("MESSAGE#38484:EmergingThreats/1_2", "nwparser.p0", "%{info}] [Priority: %{p0}"); - -var select2452 = linear_select([ - part43, - part44, - part45, -]); - -var part46 = match("MESSAGE#38484:EmergingThreats/2", "nwparser.p0", "%{threat_val->} ]%{p0}"); - -var all73 = all_match({ - processors: [ - part42, - select2452, - part46, - dup178, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup102, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - setf("sigid","hsigid"), - dup51, - dup76, - dup56, - ]), -}); - -var msg38485 = msg("EmergingThreats", all73); - -var part47 = match("MESSAGE#38485:S5", "nwparser.payload", "Pruned session from cache that was using %{bytes->} bytes (%{result}). %{saddr->} %{fld1->} --> %{daddr->} %{fld2->} (%{fld3}) : %{info}", processor_chain([ - dup127, - dup31, - dup32, -])); - -var msg38486 = msg("S5", part47); - -var part48 = match("MESSAGE#38486:S5:01", "nwparser.payload", "Session exceeded configured max bytes to queue %{fld4->} using %{bytes->} bytes (%{result}). %{saddr->} %{fld1->} --> %{daddr->} %{fld2->} (%{fld3}) : %{info}", processor_chain([ - dup127, - dup31, - dup32, -])); - -var msg38487 = msg("S5:01", part48); - -var select2453 = linear_select([ - msg38486, - msg38487, -]); - -var part49 = match("MESSAGE#38487:SystemSettings:01", "nwparser.payload", "Login, Login Success%{}", processor_chain([ - dup112, - dup31, - dup32, - dup137, - dup138, - dup139, - dup140, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38488 = msg("SystemSettings:01", part49); - -var part50 = match("MESSAGE#38488:SystemSettings:02", "nwparser.payload", "Logout, Logout Success%{}", processor_chain([ - setc("eventcategory","1802000000"), - dup31, - dup32, - dup137, - dup144, - dup139, - dup140, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38489 = msg("SystemSettings:02", part50); - -var part51 = match("MESSAGE#38489:SystemSettings:03", "nwparser.payload", "System > %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","System"), -])); - -var msg38490 = msg("SystemSettings:03", part51); - -var part52 = match("MESSAGE#38490:SystemSettings:04", "nwparser.payload", "Policies > %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","Policies"), -])); - -var msg38491 = msg("SystemSettings:04", part52); - -var part53 = match("MESSAGE#38491:SystemSettings:05", "nwparser.payload", "Object > %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38492 = msg("SystemSettings:05", part53); - -var part54 = match("MESSAGE#38492:SystemSettings:06", "nwparser.payload", "Overview > %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38493 = msg("SystemSettings:06", part54); - -var part55 = match("MESSAGE#38493:SystemSettings:07", "nwparser.payload", "Task Queue, %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","Task Queue"), -])); - -var msg38494 = msg("SystemSettings:07", part55); - -var part56 = match("MESSAGE#38494:SystemSettings:08", "nwparser.payload", "Intrusion Policy > %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","Intrusion Policy"), -])); - -var msg38495 = msg("SystemSettings:08", part56); - -var part57 = match("MESSAGE#38495:SystemSettings:09/0", "nwparser.payload", "Analysis \u0026 Reporting %{p0}"); - -var part58 = match("MESSAGE#38495:SystemSettings:09/1_1", "nwparser.p0", ",%{p0}"); - -var select2454 = linear_select([ - dup145, - part58, -]); - -var part59 = match("MESSAGE#38495:SystemSettings:09/2", "nwparser.p0", "%{} %{info}"); - -var all74 = all_match({ - processors: [ - part57, - select2454, - part59, - ], - on_success: processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","Analysis \u0026 Reporting"), - ]), -}); - -var msg38496 = msg("SystemSettings:09", all74); - -var part60 = match("MESSAGE#38496:SystemSettings:10", "nwparser.payload", "Heartbeat, %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","Heartbeat"), -])); - -var msg38497 = msg("SystemSettings:10", part60); - -var part61 = match("MESSAGE#38497:SystemSettings:11", "nwparser.payload", "FailD, %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38498 = msg("SystemSettings:11", part61); - -var part62 = match("MESSAGE#38498:SystemSettings:12", "nwparser.payload", "Health > %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","Health"), -])); - -var msg38499 = msg("SystemSettings:12", part62); - -var part63 = match("MESSAGE#38499:SystemSettings:13", "nwparser.payload", "Session Expiration, %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - dup146, -])); - -var msg38500 = msg("SystemSettings:13", part63); - -var part64 = match("MESSAGE#38500:SystemSettings:14", "nwparser.payload", "Analysis %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - dup146, -])); - -var msg38501 = msg("SystemSettings:14", part64); - -var part65 = match("MESSAGE#38501:SystemSettings:15", "nwparser.payload", "Devices %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - dup146, -])); - -var msg38502 = msg("SystemSettings:15", part65); - -var part66 = match("MESSAGE#38502:SystemSettings:16", "nwparser.payload", "Intrusion Events,%{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, - setc("category","Intrusion Events"), -])); - -var msg38503 = msg("SystemSettings:16", part66); - -var part67 = match("MESSAGE#38503:SystemSettings:17", "nwparser.payload", "Login, Login Failed%{}", processor_chain([ - dup91, - dup31, - dup137, - dup138, - dup139, - setc("ec_outcome","Failure"), - dup32, - dup141, - dup47, - dup142, - dup143, - setc("event_description","Login Failed"), -])); - -var msg38504 = msg("SystemSettings:17", part67); - -var part68 = match("MESSAGE#38504:SystemSettings:18", "nwparser.payload", "Command Line,%{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38505 = msg("SystemSettings:18", part68); - -var part69 = match("MESSAGE#38505:SystemSettings:19", "nwparser.payload", "Access Control Policy > %{info}", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38506 = msg("SystemSettings:19", part69); - -var part70 = match_copy("MESSAGE#38506:SystemSettings:20", "nwparser.payload", "info", processor_chain([ - dup127, - dup31, - dup32, - dup141, - dup47, - dup142, - dup143, -])); - -var msg38507 = msg("SystemSettings:20", part70); - -var select2455 = linear_select([ - msg38488, - msg38489, - msg38490, - msg38491, - msg38492, - msg38493, - msg38494, - msg38495, - msg38496, - msg38497, - msg38498, - msg38499, - msg38500, - msg38501, - msg38502, - msg38503, - msg38504, - msg38505, - msg38506, - msg38507, -]); - -var msg38508 = msg("2100651", dup192); - -var msg38509 = msg("2101384", dup192); - -var msg38510 = msg("2101390", dup192); - -var msg38511 = msg("2101424", dup192); - -var msg38512 = msg("2101432", dup192); - -var msg38513 = msg("2101867", dup192); - -var msg38514 = msg("2101918", dup192); - -var part71 = match("MESSAGE#38514:Primary_Detection_Engine/2", "nwparser.p0", "%{url}, Interface Ingress: %{dinterface}, Interface Egress: %{sinterface}, Security Zone Ingress: %{dst_zone}, Security Zone Egress: %{src_zone}, Security Intelligence Matching IP: %{fld4}, Security Intelligence Category: %{fld5}, Client Version: %{version}, Number of File Events: %{dclass_counter1}, Number of IPS Events: %{dclass_counter2}, TCP Flags: %{fld6}, NetBIOS Domain: %{domain_id}, Initiator Packets: %{fld7}, Responder Packets: %{fld8}, Initiator Bytes: %{rbytes}, Responder Bytes: %{sbytes}, Context: %{context}, SSL Rule Name: %{fld9}, SSL Flow Status: %{fld10}, SSL Cipher Suite: %{fld11}, SSL Certificate: %{fld12}, SSL Subject CN: %{fld13}, SSL Subject Country: %{fld14}, SSL Subject OU: %{fld15}, SSL Subject Org: %{fld16}, SSL Issuer CN: %{fld17}, SSL Issuer Country: %{fld18}, SSL Issuer OU: %{fld19}, SSL Issuer Org: %{fld20}, SSL Valid Start Date: %{fld21}, SSL Valid End Date: %{fld22}, SSL Version: %{fld23}, SSL Server Certificate Status: %{fld24}, SSL Actual Action: %{fld25}, SSL Expected Action: %{fld26}, SSL Server Name: %{fld27}, SSL URL Category: %{fld28}, SSL Session ID: %{fld29}, SSL Ticket Id: %{fld30}, {%{protocol}} %{saddr->} -> %{daddr}, type:%{event_type}, code:%{event_description}"); - -var all75 = all_match({ - processors: [ - dup147, - dup189, - part71, - ], - on_success: processor_chain([ - dup150, - dup31, - dup32, - dup47, - dup151, - dup152, - ]), -}); - -var msg38515 = msg("Primary_Detection_Engine", all75); - -var part72 = match("MESSAGE#38515:Primary_Detection_Engine:01/2", "nwparser.p0", "%{url}, Interface Ingress: %{dinterface}, Interface Egress: %{sinterface}, Security Zone Ingress: %{dst_zone}, Security Zone Egress: %{src_zone}, Security Intelligence Matching IP: %{fld4}, Security Intelligence Category: %{fld5}, Client Version: %{version}, Number of File Events: %{dclass_counter1}, Number of IPS Events: %{dclass_counter2}, TCP Flags: %{fld6}, NetBIOS Domain: %{domain_id}, Initiator Packets: %{fld7}, Responder Packets: %{fld8}, Initiator Bytes: %{rbytes}, Responder Bytes: %{sbytes}, Context: %{context}, SSL Rule Name: %{fld9}, SSL Flow Status: %{fld10}, SSL Cipher Suite: %{fld11}, SSL Certificate: %{fld12}, SSL Subject CN: %{fld13}, SSL Subject Country: %{fld14}, SSL Subject OU: %{fld15}, SSL Subject Org: %{fld16}, SSL Issuer CN: %{fld17}, SSL Issuer Country: %{fld18}, SSL Issuer OU: %{fld19}, SSL Issuer Org: %{fld20}, SSL Valid Start Date: %{fld21}, SSL Valid End Date: %{fld22}, SSL Version: %{fld23}, SSL Server Certificate Status: %{fld24}, SSL Actual Action: %{fld25}, SSL Expected Action: %{fld26}, SSL Server Name: %{fld27}, SSL URL Category: %{fld28}, SSL Session ID: %{fld29}, SSL Ticket Id: %{fld30}, {%{protocol}} %{p0}"); - -var all76 = all_match({ - processors: [ - dup147, - dup189, - part72, - dup173, - dup174, - ], - on_success: processor_chain([ - dup150, - dup31, - dup32, - dup47, - dup151, - dup152, - ]), -}); - -var msg38516 = msg("Primary_Detection_Engine:01", all76); - -var part73 = match("MESSAGE#38516:Primary_Detection_Engine:02/2", "nwparser.p0", "%{url}, Interface Ingress: %{dinterface}, Interface Egress: %{sinterface}, Security Zone Ingress: %{dst_zone}, Security Zone Egress: %{src_zone}, Security Intelligence Matching IP: %{fld4}, Security Intelligence Category: %{fld5}, Client Version: %{version}, Number of File Events: %{dclass_counter1}, Number of IPS Events: %{dclass_counter2}, TCP Flags: %{fld6}, NetBIOS Domain: %{domain_id}, Initiator Packets: %{fld7}, Responder Packets: %{fld8}, Initiator Bytes: %{rbytes}, Responder Bytes: %{p0}"); - -var part74 = match("MESSAGE#38516:Primary_Detection_Engine:02/3_0", "nwparser.p0", "%{sbytes}, Context: %{context->} {%{p0}"); - -var part75 = match("MESSAGE#38516:Primary_Detection_Engine:02/3_1", "nwparser.p0", "%{sbytes->} {%{p0}"); - -var select2456 = linear_select([ - part74, - part75, -]); - -var all77 = all_match({ - processors: [ - dup147, - dup189, - part73, - select2456, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup150, - dup31, - dup32, - dup47, - dup151, - dup152, - ]), -}); - -var msg38517 = msg("Primary_Detection_Engine:02", all77); - -var part76 = match("MESSAGE#38517:Primary_Detection_Engine:03", "nwparser.payload", "\"%{context}\" [Classification:%{sigtype}] User:%{username}, Application:%{application}, Client:%{fld12}, App Protocol:%{fld14}, Interface Ingress:%{dinterface}, Interface Egress:%{sinterface}, Security Zone Ingress:%{dst_zone}, Security Zone Egress:%{src_zone}, Context:%{fld13}, SSL Flow Status:%{fld1}, SSL Actual Action:%{fld22}, SSL Certificate:%{fld3}, SSL Subject CN:%{fld4}, SSL Subject Country:%{fld5}, SSL Subject OU:%{fld6}, SSL Subject Org:%{fld7}, SSL Issuer CN:%{fld8}, SSL Issuer Country:%{fld9}, SSL Issuer OU:%{fld10}, SSL Issuer Org:%{fld11}, SSL Valid Start Date:%{fld12}, SSL Valid End Date:%{fld13}, [Priority:%{threat_val}] {%{protocol}}%{saddr}:%{sport}->%{daddr}:%{dport}", processor_chain([ - dup44, - dup31, - dup32, - dup48, - setf("sigid","id"), - setf("version","hfld3"), - dup45, -])); - -var msg38518 = msg("Primary_Detection_Engine:03", part76); - -var select2457 = linear_select([ - msg38515, - msg38516, - msg38517, - msg38518, -]); - -var part77 = match("MESSAGE#38518:Network_Based_Malware", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC > Sha256: %{checksum->} Disposition: %{disposition->} Threat name: %{threat_name->} IP Addresses: %{saddr}>%{daddr}", processor_chain([ - dup100, - dup31, - dup129, - dup32, - dup47, -])); - -var msg38519 = msg("Network_Based_Malware", part77); - -var part78 = match("MESSAGE#38519:Network_Based_Malware:01/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -%{p0}"); - -var part79 = match("MESSAGE#38519:Network_Based_Malware:01/1_0", "nwparser.p0", "*>%{p0}"); - -var select2458 = linear_select([ - part79, - dup145, -]); - -var part80 = match("MESSAGE#38519:Network_Based_Malware:01/2", "nwparser.p0", "%{} %{space}Sha256: %{checksum->} Disposition: %{disposition->} Threat name: %{threat_name->} IP Addresses: %{daddr}\u003c\u003c-%{saddr}"); - -var all78 = all_match({ - processors: [ - part78, - select2458, - part80, - ], - on_success: processor_chain([ - dup100, - dup31, - dup129, - dup32, - dup47, - ]), -}); - -var msg38520 = msg("Network_Based_Malware:01", all78); - -var part81 = match("MESSAGE#38520:Network_Based_Malware:02", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> Sha256: %{checksum->} Disposition: %{disposition->} Threat name: %{threat_name->} IP Addresses: %{saddr}->%{daddr}", processor_chain([ - dup100, - dup31, - dup129, - dup32, - dup47, -])); - -var msg38521 = msg("Network_Based_Malware:02", part81); - -var select2459 = linear_select([ - msg38519, - msg38520, - msg38521, -]); - -var part82 = match("MESSAGE#38521:Network_Based_Retrospective/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC %{p0}"); - -var part83 = match("MESSAGE#38521:Network_Based_Retrospective/2", "nwparser.p0", "Sha256: %{checksum->} Disposition: %{disposition->} Threat name: %{threat_name->} IP Addresses: %{p0}"); - -var part84 = match("MESSAGE#38521:Network_Based_Retrospective/3_0", "nwparser.p0", "%{saddr}->%{p0}"); - -var part85 = match("MESSAGE#38521:Network_Based_Retrospective/3_1", "nwparser.p0", "%{saddr}>%{p0}"); - -var select2460 = linear_select([ - part84, - part85, -]); - -var all79 = all_match({ - processors: [ - part82, - dup190, - part83, - select2460, - dup43, - ], - on_success: processor_chain([ - dup100, - dup31, - dup129, - dup32, - dup47, - ]), -}); - -var msg38522 = msg("Network_Based_Retrospective", all79); - -var part86 = match("MESSAGE#38522:Network_Based_Retrospective:01/4", "nwparser.p0", "Sha256: %{checksum->} Disposition: %{disposition->} Threat name: %{p0}"); - -var part87 = match("MESSAGE#38522:Network_Based_Retrospective:01/5_0", "nwparser.p0", "%{threat_name->} IP Addresses: %{daddr}\u003c\u003c-%{saddr}"); - -var part88 = match_copy("MESSAGE#38522:Network_Based_Retrospective:01/5_1", "nwparser.p0", "threat_name"); - -var select2461 = linear_select([ - part87, - part88, -]); - -var all80 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - part86, - select2461, - ], - on_success: processor_chain([ - dup100, - dup31, - dup129, - dup32, - dup47, - ]), -}); - -var msg38523 = msg("Network_Based_Retrospective:01", all80); - -var select2462 = linear_select([ - msg38522, - msg38523, -]); - -var part89 = match("MESSAGE#38523:MALWARE:02", "nwparser.payload", "%{checksum->} Disposition: %{disposition->} Threat name: %{threat_name->} IP Addresses: %{daddr}\u003c\u003c-%{saddr}", processor_chain([ - dup100, - dup32, - dup47, - dup158, -])); - -var msg38524 = msg("MALWARE:02", part89); - -var part90 = match("MESSAGE#38524:MALWARE:01", "nwparser.payload", "%{checksum->} Disposition: %{disposition->} Threat name: %{threat_name->} IP Addresses: %{saddr}->%{daddr}", processor_chain([ - dup100, - dup32, - dup47, - dup158, -])); - -var msg38525 = msg("MALWARE:01", part90); - -var part91 = match_copy("MESSAGE#38537:MALWARE", "nwparser.payload", "threat_val", processor_chain([ - dup71, - dup31, - dup45, - dup32, -])); - -var msg38526 = msg("MALWARE", part91); - -var select2463 = linear_select([ - msg38524, - msg38525, - msg38526, -]); - -var all81 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var msg38527 = msg("Snort_AlertLog", all81); - -var part92 = match("MESSAGE#38526:New_TCP_Port/4", "nwparser.p0", "IP Address: %{saddr->} Port: %{p0}"); - -var part93 = match("MESSAGE#38526:New_TCP_Port/5_0", "nwparser.p0", "%{sport->} Service: %{protocol->} Confidence: %{result}"); - -var part94 = match_copy("MESSAGE#38526:New_TCP_Port/5_1", "nwparser.p0", "sport"); - -var select2464 = linear_select([ - part93, - part94, -]); - -var all82 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - part92, - select2464, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var msg38528 = msg("New_TCP_Port", all82); - -var part95 = match("MESSAGE#38527:New_UDP_Port/4", "nwparser.p0", "IP Address: %{saddr->} Port: %{sport}"); - -var all83 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - part95, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var msg38529 = msg("New_UDP_Port", all83); - -var msg38530 = msg("Client_Update", dup355); - -var msg38531 = msg("New_Client", dup355); - -var msg38532 = msg("UDP_Server_Information_Update", dup356); - -var msg38533 = msg("TCP_Server_Information_Update", dup356); - -var part96 = match("MESSAGE#38532:Client_Timeout/1_1", "nwparser.p0", "From %{sensor->} at %{p0}"); - -var select2465 = linear_select([ - dup155, - part96, - dup156, -]); - -var all84 = all_match({ - processors: [ - dup57, - select2465, - dup157, - dup190, - dup159, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var msg38534 = msg("Client_Timeout", all84); - -var part97 = match("MESSAGE#38533:Host_IOC_Set/4", "nwparser.p0", "IP Address: %{saddr->} Category: %{category->} Event Type: %{event_type}"); - -var all85 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - part97, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var msg38535 = msg("Host_IOC_Set", all85); - -var part98 = match("MESSAGE#38534:Host_Type_Changed/4", "nwparser.p0", "IP Address: %{saddr->} Host Type: %{fld10}"); - -var all86 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - part98, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var msg38536 = msg("Host_Type_Changed", all86); - -var part99 = match("MESSAGE#38535:Login", "nwparser.payload", "Login Success%{}", processor_chain([ - dup112, - dup31, - dup32, - dup137, - dup138, - dup139, - dup140, - dup47, -])); - -var msg38537 = msg("Login", part99); - -var part100 = match("MESSAGE#38536:Logout", "nwparser.payload", "Logout Success%{}", processor_chain([ - setc("eventcategory","1401070000"), - dup31, - dup32, - dup137, - dup144, - dup139, - dup140, - dup47, -])); - -var msg38538 = msg("Logout", part100); - -var part101 = tagval("MESSAGE#38538:connection_events", "nwparser.payload", tvm, { - "ACPolicy": "fld44", - "AccessControlRuleAction": "action", - "AccessControlRuleName": "rulename", - "AccessControlRuleReason": "result", - "ApplicationProtocol": "protocol", - "Classification": "risk_info", - "Client": "application", - "ClientVersion": "version", - "ConnectType": "event_state", - "DE": "fld16", - "DNSQuery": "obj_name", - "DNSRecordType": "obj_type", - "DNSResponseType": "fld17", - "DNS_TTL": "fld7", - "DstIP": "daddr", - "DstPort": "dport", - "EgressInterface": "sinterface", - "EgressZone": "src_zone", - "FileCount": "dclass_counter1", - "GID": "fld28", - "HTTPReferer": "web_ref_host", - "HTTPResponse": "resultcode", - "ICMPCode": "resultcode", - "ICMPType": "event_type", - "IPReputationSICategory": "threat_name", - "IngressInterface": "dinterface", - "IngressZone": "dst_zone", - "InitiatorBytes": "sbytes", - "InitiatorPackets": "fld14", - "Message": "fld49", - "NAPPolicy": "policyname", - "OriginalClientIP": "fld1", - "Policy": "policyname", - "Prefilter Policy": "fld2", - "Priority": "threat_val", - "ReferencedHost": "fld3", - "ResponderBytes": "rbytes", - "ResponderPackets": "fld13", - "Revision": "fld46", - "SID": "sid", - "Sinkhole": "fld15", - "SrcIP": "saddr", - "SrcPort": "sport", - "TCPFlags": "fld12", - "URL": "url", - "URLCategory": "category", - "URLReputation": "reputation_num", - "User": "fld48", - "UserAgent": "user_agent", - "UserName": "username", - "WebApplication": "application", -}, processor_chain([ - dup150, - dup31, - dup32, - dup47, - setc("dclass_counter1_string","Number of Files"), - setf("protocol","hprotocol"), - lookup({ - dest: "nwparser.event_cat", - map: map_getEventLegacyCategory, - key: field("sid"), - }), - lookup({ - dest: "nwparser.event_cat_name", - map: map_getEventLegacyCategoryName, - key: field("event_cat"), - }), - call({ - dest: "nwparser.info", - fn: RMQ, - args: [ - field("fld49"), - ], - }), - dup45, - fqdn("fqdn","url"), - path("directory","url"), - page("filename_tmp","url"), - ext("web_extension_tmp","url"), - query("web_query","url"), - call({ - dest: "nwparser.filename", - fn: STRCAT, - args: [ - field("filename_tmp"), - field("web_extension_tmp"), - ], - }), -])); - -var msg38539 = msg("connection_events", part101); - -var part102 = match("MESSAGE#38539:FTD_events_01", "nwparser.payload", "SrcIP: %{daddr}, DstIP: %{saddr}, SrcPort: %{dport}, DstPort: %{sport}, Protocol: %{protocol}, FileDirection: Download, FileAction: %{action}, FileSHA256: %{checksum}, SHA_Disposition: %{disposition}, SperoDisposition: %{info}, ThreatName: %{threat_name}, ThreatScore: %{fld1}, FileName: %{filename}, FileType: %{filetype}, FileSize: %{filename_size}, ApplicationProtocol: %{protocol}, Client: %{application}, User: %{username}, FirstPacketSecond: %{fld21}, FilePolicy: %{policyname}, FileSandboxStatus: %{result}, URI: %{url}", processor_chain([ - dup150, - dup161, - dup162, - dup163, - dup32, - dup164, - setc("context","Download"), -])); - -var msg38540 = msg("FTD_events_01", part102); - -var part103 = match("MESSAGE#38540:FTD_events_02", "nwparser.payload", "SrcIP: %{saddr}, DstIP: %{daddr}, SrcPort: %{sport}, DstPort: %{dport}, Protocol: %{protocol}, FileDirection: Upload, FileAction: %{action}, FileSHA256: %{checksum}, SHA_Disposition: %{disposition}, SperoDisposition: %{info}, ThreatName: %{threat_name}, ThreatScore: %{fld1}, FileName: %{filename}, FileType: %{filetype}, FileSize: %{filename_size}, ApplicationProtocol: %{protocol}, Client: %{application}, User: %{username}, FirstPacketSecond: %{fld21}, FilePolicy: %{policyname}, FileSandboxStatus: %{result}, URI: %{url}", processor_chain([ - dup150, - dup161, - dup162, - dup163, - dup32, - dup164, - setc("context","Upload"), -])); - -var msg38541 = msg("FTD_events_02", part103); - -var part104 = match("MESSAGE#38541:FTD_events_03", "nwparser.payload", "User '%{username}' executed the '%{fld1}' command.", processor_chain([ - dup150, - dup162, - dup32, - dup164, -])); - -var msg38542 = msg("FTD_events_03", part104); - -var part105 = match("MESSAGE#38542:FTD_events_04", "nwparser.payload", "User '%{username}', running '%{application}' from IP%{hostip}, executed '%{fld1}'", processor_chain([ - dup150, - dup162, - dup32, - dup164, -])); - -var msg38543 = msg("FTD_events_04", part105); - -var part106 = match("MESSAGE#38543:FTD_events_05", "nwparser.payload", "%{dclass_counter1}in use,%{fld2}most used", processor_chain([ - dup150, - dup162, - dup32, - dup164, - setc("dclass_counter1_string","Number of Connections in use"), -])); - -var msg38544 = msg("FTD_events_05", part106); - -var part107 = match("MESSAGE#38544:FTD_events_06", "nwparser.payload", "Offloaded TCP Flow for connection%{connectionid}from%{dinterface}:%{daddr}/%{dport}(%{dtransaddr}/%{dtransport}) to%{sinterface}:%{saddr}/%{sport}(%{stransaddr}/%{stransport})", processor_chain([ - dup150, - dup162, - dup32, - dup164, - setc("event_description","Offloaded TCP Flow for connection"), -])); - -var msg38545 = msg("FTD_events_06", part107); - -var part108 = match("MESSAGE#38545:FTD_events_07", "nwparser.payload", "Failed to locate egress interface for %{protocol->} from %{sinterface}:%{saddr}/%{sport->} to %{daddr}/%{dport}", processor_chain([ - setc("eventcategory","1801010000"), - dup162, - dup32, - dup164, - setc("event_description","Failed to locate egress interface"), -])); - -var msg38546 = msg("FTD_events_07", part108); - -var part109 = match("MESSAGE#38546:FTD_events_08", "nwparser.payload", "TCP Flow is no longer offloaded for connection %{connectionid->} from %{dinterface}:%{daddr}/%{dport->} (%{dtransaddr}/%{dtransport}) to %{sinterface}:%{saddr}/%{sport->} (%{stransaddr}/%{stransport})", processor_chain([ - dup150, - dup162, - dup32, - dup164, - setc("event_description","TCP Flow is no longer offloaded for connection"), -])); - -var msg38547 = msg("FTD_events_08", part109); - -var part110 = match("MESSAGE#38547:FTD_events_09", "nwparser.payload", "CLOCK: System clock set, source: %{event_source}, IP: %{hostip}, before: %{change_old}, after: %{change_new}", processor_chain([ - dup150, - dup162, - dup32, - dup164, - setc("change_attribute","Time"), -])); - -var msg38548 = msg("FTD_events_09", part110); - -var part111 = tagval("MESSAGE#38548:FTD_events", "nwparser.payload", tvm, { - "ACPolicy": "fld44", - "AccessControlRuleAction": "action", - "AccessControlRuleName": "rulename", - "AccessControlRuleReason": "result", - "ApplicationProtocol": "protocol", - "Classification": "risk_info", - "Client": "application", - "ClientVersion": "version", - "ConnectType": "event_state", - "ConnectionDuration": "duration", - "DE": "fld16", - "DNSQuery": "obj_name", - "DNSRecordType": "obj_type", - "DNSResponseType": "fld17", - "DNS_TTL": "fld7", - "DstIP": "daddr", - "DstPort": "dport", - "EgressInterface": "sinterface", - "EgressZone": "src_zone", - "FileAction": "action", - "FileDirection": "context", - "FileName": "filename", - "FilePolicy": "policyname", - "FileSHA256": "checksum", - "FileSandboxStatus": "result", - "FileSize": "filename_size", - "FileType": "filetype", - "FirstPacketSecond": "starttime", - "GID": "fld28", - "HTTPReferer": "web_ref_host", - "HTTPResponse": "resultcode", - "ICMPCode": "resultcode", - "ICMPType": "event_type", - "IPReputationSICategory": "threat_name", - "IngressInterface": "dinterface", - "IngressZone": "dst_zone", - "InitiatorBytes": "sbytes", - "InitiatorPackets": "fld14", - "Message": "fld49", - "NAPPolicy": "policyname", - "OriginalClientIP": "fld1", - "Policy": "policyname", - "Prefilter Policy": "fld2", - "Priority": "threat_val", - "Protocol": "protocol", - "ReferencedHost": "fld3", - "ResponderBytes": "rbytes", - "ResponderPackets": "fld13", - "Revision": "fld46", - "SHA_Disposition": "disposition", - "SID": "sid", - "Sinkhole": "fld15", - "SperoDisposition": "info", - "SrcIP": "saddr", - "SrcPort": "sport", - "TCPFlags": "fld12", - "ThreatName": "threat_name", - "ThreatScore": "fld76", - "URI": "url", - "URL": "url", - "URLCategory": "category", - "URLReputation": "reputation_num", - "User": "username", - "UserAgent": "user_agent", - "UserName": "username", - "WebApplication": "application", -}, processor_chain([ - dup150, - dup161, - dup162, - dup32, - dup164, -])); - -var msg38549 = msg("FTD_events", part111); - -var select2466 = linear_select([ - msg38540, - msg38541, - msg38542, - msg38543, - msg38544, - msg38545, - msg38546, - msg38547, - msg38548, - msg38549, -]); - -var part112 = match("MESSAGE#38549:NGIPS_events_01/0", "nwparser.payload", "AccessControlRuleAction:%{action}, AccessControlRuleReason:%{result}, SrcIP:%{saddr}, DstIP:%{daddr}, SrcPort:%{sport}, DstPort:%{dport}, Protocol: %{protocol}, IngressInterface: %{dinterface}, IngressZone:%{dst_zone}, ACPolicy:%{fld44}, AccessControlRuleName:%{rulename}, Prefilter Policy:%{fld2}, User:%{fld48}, Client:%{application}, ApplicationProtocol:%{protocol}, InitiatorPackets:%{fld14}, ResponderPackets:%{fld13}, InitiatorBytes:%{sbytes}, ResponderBytes:%{rbytes}, NAPPolicy:%{policyname}, DNSQuery:%{hostname}, DNSRecordType: a host address,%{p0}"); - -var part113 = match("MESSAGE#38549:NGIPS_events_01/1_0", "nwparser.p0", " DNS_TTL: %{fld7},%{p0}"); - -var select2467 = linear_select([ - part113, - dup59, -]); - -var part114 = match("MESSAGE#38549:NGIPS_events_01/2", "nwparser.p0", "%{}DNSSICategory:%{category}"); - -var all87 = all_match({ - processors: [ - part112, - select2467, - part114, - ], - on_success: processor_chain([ - dup150, - dup161, - dup32, - dup164, - ]), -}); - -var msg38550 = msg("NGIPS_events_01", all87); - -var part115 = tagval("MESSAGE#38550:NGIPS_events", "nwparser.payload", tvm, { - "ACPolicy": "fld44", - "AccessControlRuleAction": "action", - "AccessControlRuleName": "rulename", - "AccessControlRuleReason": "result", - "ApplicationProtocol": "protocol", - "Classification": "risk_info", - "Client": "application", - "ClientVersion": "version", - "ConnectType": "event_state", - "ConnectionDuration": "duration", - "DE": "fld16", - "DNSQuery": "obj_name", - "DNSRecordType": "obj_type", - "DNSResponseType": "fld17", - "DNSSICategory": "category", - "DNS_TTL": "fld7", - "DstIP": "daddr", - "DstPort": "dport", - "EgressInterface": "sinterface", - "EgressZone": "src_zone", - "GID": "fld28", - "HTTPReferer": "web_ref_host", - "HTTPResponse": "resultcode", - "ICMPCode": "resultcode", - "ICMPType": "event_type", - "IPReputationSICategory": "threat_name", - "IPSCount": "dclass_counter1", - "IngressInterface": "dinterface", - "IngressZone": "dst_zone", - "InitiatorBytes": "sbytes", - "InitiatorPackets": "fld14", - "InlineResult": "action", - "Message": "event_description", - "NAPPolicy": "policyname", - "OriginalClientIP": "fld1", - "Policy": "policyname", - "Prefilter Policy": "fld2", - "Priority": "threat_val", - "Protocol": "protocol", - "ReferencedHost": "fld3", - "ResponderBytes": "rbytes", - "ResponderPackets": "fld13", - "Revision": "fld46", - "SID": "sid", - "Sinkhole": "fld15", - "SrcIP": "saddr", - "SrcPort": "sport", - "TCPFlags": "fld12", - "URL": "url", - "URLCategory": "category", - "URLReputation": "reputation_num", - "URLSICategory": "category", - "User": "fld48", - "UserAgent": "user_agent", - "UserName": "username", - "VLAN_ID": "vlan", - "WebApplication": "application", -}, processor_chain([ - dup150, - dup161, - dup32, - dup164, - setc("dclass_counter1_string"," The number of intrusion events"), - setf("hostname","obj_name"), -])); - -var msg38551 = msg("NGIPS_events", part115); - -var select2468 = linear_select([ - msg38550, - msg38551, -]); - -var chain1 = processor_chain([ - select5, - msgid_select({ - "0": select6, - "1": select7, - "10": msg34, - "1000": select900, - "10000": msg12447, - "1000001": msg38282, - "100000121": msg38430, - "100000122": msg38431, - "100000137": msg38432, - "100000138": msg38433, - "100000160": msg38434, - "100000161": msg38435, - "100000185": msg38436, - "1000002": msg38283, - "100000211": msg38437, - "100000213": msg38438, - "100000219": msg38439, - "100000241": msg38440, - "100000262": msg38441, - "100000266": msg38442, - "100000272": msg38443, - "100000273": msg38444, - "100000274": msg38445, - "100000275": msg38446, - "100000277": msg38447, - "100000278": msg38448, - "1000003": select2443, - "1000004": msg38286, - "1000005": msg38287, - "100000550": msg38449, - "100000687": msg38450, - "100000689": msg38451, - "1000007": msg38288, - "1000010": msg38289, - "1000012": msg38290, - "1000014": msg38291, - "1000015": msg38292, - "1000016": msg38293, - "1000020": msg38294, - "1000021": msg38295, - "1000022": msg38296, - "1000023": msg38297, - "1000024": msg38298, - "1000026": msg38299, - "1000028": msg38300, - "1000029": msg38301, - "1000030": msg38302, - "1000031": msg38303, - "1000032": msg38304, - "1000033": msg38305, - "1000034": msg38306, - "1000035": msg38307, - "1000036": msg38308, - "1000037": msg38309, - "1000038": msg38310, - "1000039": msg38311, - "1000040": msg38312, - "1000041": msg38313, - "1000043": msg38314, - "1000044": msg38315, - "1000045": msg38316, - "1000046": msg38317, - "1000047": msg38318, - "1000048": msg38319, - "1000049": msg38320, - "1000050": msg38321, - "1000054": msg38322, - "1000055": msg38323, - "1000056": msg38324, - "1000057": msg38325, - "10001": msg12448, - "10002": msg12449, - "10003": msg12450, - "10004": msg12451, - "10005": msg12452, - "10006": msg12453, - "10007": msg12454, - "10008": msg12455, - "10009": msg12456, - "1001": select901, - "10010": msg12457, - "10011": msg12458, - "10012": msg12459, - "10013": msg12460, - "10014": msg12461, - "10015": msg12462, - "10016": msg12463, - "10017": msg12464, - "10018": msg12465, - "10019": msg12466, - "1002": select902, - "10020": msg12467, - "10021": msg12468, - "10022": msg12469, - "10023": msg12470, - "10024": msg12471, - "10025": msg12472, - "10026": msg12473, - "10027": msg12474, - "10028": msg12475, - "10029": msg12476, - "1003": select903, - "10030": msg12477, - "10031": msg12478, - "10032": msg12479, - "10033": msg12480, - "10034": msg12481, - "10035": msg12482, - "10036": msg12483, - "10037": msg12484, - "10038": msg12485, - "10039": msg12486, - "1004": select904, - "10040": msg12487, - "10041": msg12488, - "10042": msg12489, - "10043": msg12490, - "10044": msg12491, - "10045": msg12492, - "10046": msg12493, - "10047": msg12494, - "10048": msg12495, - "10049": msg12496, - "1005": select905, - "10050": msg12497, - "10051": msg12498, - "10052": msg12499, - "10053": msg12500, - "10054": msg12501, - "10055": msg12502, - "10056": msg12503, - "10057": msg12504, - "10058": msg12505, - "10059": msg12506, - "10060": msg12507, - "10061": msg12508, - "10062": msg12509, - "10063": msg12510, - "10064": msg12511, - "10065": msg12512, - "10066": msg12513, - "10067": msg12514, - "10068": msg12515, - "10069": msg12516, - "1007": select906, - "10070": msg12517, - "10071": msg12518, - "10072": msg12519, - "10073": msg12520, - "10074": msg12521, - "10075": msg12522, - "10076": msg12523, - "10077": msg12524, - "10078": msg12525, - "10079": msg12526, - "1008": select907, - "10080": msg12527, - "10081": msg12528, - "10082": msg12529, - "10083": msg12530, - "10084": msg12531, - "10085": msg12532, - "10086": msg12533, - "10087": msg12534, - "10088": msg12535, - "10089": msg12536, - "1009": select908, - "10090": msg12537, - "10091": msg12538, - "10092": msg12539, - "10093": msg12540, - "10094": msg12541, - "10095": msg12542, - "10096": msg12543, - "10097": msg12544, - "10098": msg12545, - "10099": msg12546, - "1010": select909, - "10100": msg12547, - "10101": msg12548, - "10102": msg12549, - "10103": msg12550, - "10104": msg12551, - "10105": msg12552, - "10106": msg12553, - "10107": msg12554, - "10108": msg12555, - "10109": msg12556, - "1011": select910, - "10110": msg12557, - "10111": msg12558, - "10112": msg12559, - "10113": msg12560, - "10114": msg12561, - "10115": msg12562, - "10116": msg12563, - "10117": msg12564, - "10118": msg12565, - "10119": msg12566, - "1012": select911, - "10120": msg12567, - "10121": msg12568, - "10122": msg12569, - "10123": msg12570, - "10124": msg12571, - "10125": msg12572, - "10126": msg12573, - "10127": msg12574, - "10128": msg12575, - "10129": msg12576, - "1013": select912, - "10130": msg12577, - "10131": msg12578, - "10132": msg12579, - "10133": msg12580, - "10134": msg12581, - "10135": msg12582, - "10136": msg12583, - "10137": msg12584, - "10138": msg12585, - "10139": msg12586, - "1014": select913, - "10140": msg12587, - "10141": msg12588, - "10142": msg12589, - "10143": msg12590, - "10144": msg12591, - "10145": msg12592, - "10146": msg12593, - "10147": msg12594, - "10148": msg12595, - "10149": msg12596, - "1015": select914, - "10150": msg12597, - "10151": msg12598, - "10152": msg12599, - "10153": msg12600, - "10154": msg12601, - "10155": msg12602, - "10156": msg12603, - "10157": msg12604, - "10158": msg12605, - "10159": msg12606, - "1016": select915, - "10160": msg12607, - "10161": msg12608, - "10162": msg12609, - "10163": msg12610, - "10164": msg12611, - "10165": msg12612, - "10166": msg12613, - "10167": msg12614, - "10168": msg12615, - "10169": msg12616, - "1017": select916, - "10170": msg12617, - "10171": msg12618, - "10172": msg12619, - "10173": msg12620, - "10174": msg12621, - "10175": msg12622, - "10176": msg12623, - "10177": msg12624, - "10178": msg12625, - "10179": msg12626, - "1018": select917, - "10180": msg12627, - "10181": msg12628, - "10182": msg12629, - "10183": msg12630, - "10184": msg12631, - "10185": msg12632, - "10186": msg12633, - "10187": msg12634, - "10188": msg12635, - "10189": msg12636, - "1019": select918, - "10190": msg12637, - "10191": msg12638, - "10192": msg12639, - "10193": msg12640, - "10194": msg12641, - "10195": msg12642, - "10196": msg12643, - "10197": msg12644, - "10198": msg12645, - "10199": msg12646, - "1020": select919, - "10200": msg12647, - "10201": msg12648, - "10202": msg12649, - "10203": msg12650, - "10204": msg12651, - "10205": msg12652, - "10206": msg12653, - "10207": msg12654, - "10208": msg12655, - "10209": msg12656, - "1021": select920, - "10210": msg12657, - "10211": msg12658, - "10212": msg12659, - "10213": msg12660, - "10214": msg12661, - "10215": msg12662, - "10216": msg12663, - "10217": msg12664, - "10218": msg12665, - "10219": msg12666, - "1022": select921, - "10220": msg12667, - "10221": msg12668, - "10222": msg12669, - "10223": msg12670, - "10224": msg12671, - "10225": msg12672, - "10226": msg12673, - "10227": msg12674, - "10228": msg12675, - "10229": msg12676, - "1023": select922, - "10230": msg12677, - "10231": msg12678, - "10232": msg12679, - "10233": msg12680, - "10234": msg12681, - "10235": msg12682, - "10236": msg12683, - "10237": msg12684, - "10238": msg12685, - "10239": msg12686, - "1024": select923, - "10240": msg12687, - "10241": msg12688, - "10242": msg12689, - "10243": msg12690, - "10244": msg12691, - "10245": msg12692, - "10246": msg12693, - "10247": msg12694, - "10248": msg12695, - "10249": msg12696, - "1025": select924, - "10250": msg12697, - "10251": msg12698, - "10252": msg12699, - "10253": msg12700, - "10254": msg12701, - "10255": msg12702, - "10256": msg12703, - "10257": msg12704, - "10258": msg12705, - "10259": msg12706, - "1026": select925, - "10260": msg12707, - "10261": msg12708, - "10262": msg12709, - "10263": msg12710, - "10264": msg12711, - "10265": msg12712, - "10266": msg12713, - "10267": msg12714, - "10268": msg12715, - "10269": msg12716, - "1027": select926, - "10270": msg12717, - "10271": msg12718, - "10272": msg12719, - "10273": msg12720, - "10274": msg12721, - "10275": msg12722, - "10276": msg12723, - "10277": msg12724, - "10278": msg12725, - "10279": msg12726, - "1028": select927, - "10280": msg12727, - "10281": msg12728, - "10282": msg12729, - "10283": msg12730, - "10284": msg12731, - "10285": msg12732, - "10286": msg12733, - "10287": msg12734, - "10288": msg12735, - "10289": msg12736, - "1029": select928, - "10290": msg12737, - "10291": msg12738, - "10292": msg12739, - "10293": msg12740, - "10294": msg12741, - "10295": msg12742, - "10296": msg12743, - "10297": msg12744, - "10298": msg12745, - "10299": msg12746, - "103": select31, - "1030": select929, - "10300": msg12747, - "10301": msg12748, - "10302": msg12749, - "10303": msg12750, - "10304": msg12751, - "10305": msg12752, - "10306": msg12753, - "10307": msg12754, - "10308": msg12755, - "10309": msg12756, - "1031": select930, - "10310": msg12757, - "10311": msg12758, - "10312": msg12759, - "10313": msg12760, - "10314": msg12761, - "10315": msg12762, - "10316": msg12763, - "10317": msg12764, - "10318": msg12765, - "10319": msg12766, - "1032": select931, - "10320": msg12767, - "10321": msg12768, - "10322": msg12769, - "10323": msg12770, - "10324": msg12771, - "10325": msg12772, - "10326": msg12773, - "10327": msg12774, - "10328": msg12775, - "10329": msg12776, - "1033": select932, - "10330": msg12777, - "10331": msg12778, - "10332": msg12779, - "10333": msg12780, - "10334": msg12781, - "10335": msg12782, - "10336": msg12783, - "10337": msg12784, - "10338": msg12785, - "10339": msg12786, - "1034": select933, - "10340": msg12787, - "10341": msg12788, - "10342": msg12789, - "10343": msg12790, - "10344": msg12791, - "10345": msg12792, - "10346": msg12793, - "10347": msg12794, - "10348": msg12795, - "10349": msg12796, - "1035": select934, - "10350": msg12797, - "10351": msg12798, - "10352": msg12799, - "10353": msg12800, - "10354": msg12801, - "10355": msg12802, - "10356": msg12803, - "10357": msg12804, - "10358": msg12805, - "10359": msg12806, - "1036": select935, - "10360": msg12807, - "10361": msg12808, - "10362": msg12809, - "10363": msg12810, - "10364": msg12811, - "10365": msg12812, - "10366": msg12813, - "10367": msg12814, - "10368": msg12815, - "10369": msg12816, - "1037": select936, - "10370": msg12817, - "10371": msg12818, - "10372": msg12819, - "10373": msg12820, - "10374": msg12821, - "10375": msg12822, - "10376": msg12823, - "10377": msg12824, - "10378": msg12825, - "10379": msg12826, - "1038": select937, - "10380": msg12827, - "10381": msg12828, - "10382": msg12829, - "10383": msg12830, - "10384": msg12831, - "10385": msg12832, - "10386": msg12833, - "10387": msg12834, - "10388": msg12835, - "10389": msg12836, - "1039": select938, - "10390": msg12837, - "10391": msg12838, - "10392": msg12839, - "10393": msg12840, - "10394": msg12841, - "10395": msg12842, - "10396": msg12843, - "10397": msg12844, - "10398": msg12845, - "10399": msg12846, - "104": select32, - "1040": select939, - "10400": msg12847, - "10401": msg12848, - "10402": msg12849, - "10403": msg12850, - "10404": msg12851, - "10405": msg12852, - "10406": msg12853, - "10407": msg12854, - "10408": msg12855, - "10409": msg12856, - "1041": select940, - "10410": msg12857, - "10411": msg12858, - "10412": msg12859, - "10413": msg12860, - "10414": msg12861, - "10415": msg12862, - "10416": msg12863, - "10417": msg12864, - "10418": msg12865, - "10419": msg12866, - "1042": select941, - "10420": msg12867, - "10421": msg12868, - "10422": msg12869, - "10423": msg12870, - "10424": msg12871, - "10425": msg12872, - "10426": msg12873, - "10427": msg12874, - "10428": msg12875, - "10429": msg12876, - "1043": select942, - "10430": msg12877, - "10431": msg12878, - "10432": msg12879, - "10433": msg12880, - "10434": msg12881, - "10435": msg12882, - "10436": msg12883, - "10437": msg12884, - "10438": msg12885, - "10439": msg12886, - "1044": select943, - "10440": msg12887, - "10441": msg12888, - "10442": msg12889, - "10443": msg12890, - "10444": msg12891, - "10445": msg12892, - "10446": msg12893, - "10447": msg12894, - "10448": msg12895, - "10449": msg12896, - "1045": select944, - "10450": msg12897, - "10451": msg12898, - "10452": msg12899, - "10453": msg12900, - "10454": msg12901, - "10455": msg12902, - "10456": msg12903, - "10457": msg12904, - "10458": msg12905, - "10459": msg12906, - "1046": select945, - "10460": msg12907, - "10461": msg12908, - "10462": msg12909, - "10463": msg12910, - "10464": msg12911, - "10465": msg12912, - "10466": msg12913, - "10467": msg12914, - "10468": msg12915, - "10469": msg12916, - "1047": select946, - "10470": msg12917, - "10471": msg12918, - "10472": msg12919, - "10473": msg12920, - "10474": msg12921, - "10475": msg12922, - "10476": msg12923, - "10477": msg12924, - "10478": msg12925, - "10479": msg12926, - "1048": select947, - "10480": msg12927, - "10481": msg12928, - "10482": msg12929, - "10483": msg12930, - "10484": msg12931, - "10485": msg12932, - "10486": msg12933, - "10487": msg12934, - "10488": msg12935, - "10489": msg12936, - "1049": select948, - "10490": msg12937, - "10491": msg12938, - "10492": msg12939, - "10493": msg12940, - "10494": msg12941, - "10495": msg12942, - "10496": msg12943, - "10497": msg12944, - "10498": msg12945, - "10499": msg12946, - "105": select33, - "105-1": msg86, - "105-2": msg87, - "105-3": msg88, - "105-4": msg89, - "1050": select949, - "10500": msg12947, - "10501": msg12948, - "10502": msg12949, - "10503": msg12950, - "10504": msg12951, - "10505": msg12952, - "10506": msg12953, - "10507": msg12954, - "10508": msg12955, - "10509": msg12956, - "1051": select950, - "10510": msg12957, - "10511": msg12958, - "10512": msg12959, - "10513": msg12960, - "10514": msg12961, - "10515": msg12962, - "10516": msg12963, - "10517": msg12964, - "10518": msg12965, - "10519": msg12966, - "1052": select951, - "10520": msg12967, - "10521": msg12968, - "10522": msg12969, - "10523": msg12970, - "10524": msg12971, - "10525": msg12972, - "10526": msg12973, - "10527": msg12974, - "10528": msg12975, - "10529": msg12976, - "1053": select952, - "10530": msg12977, - "10531": msg12978, - "10532": msg12979, - "10533": msg12980, - "10534": msg12981, - "10535": msg12982, - "10536": msg12983, - "10537": msg12984, - "10538": msg12985, - "10539": msg12986, - "1054": select953, - "10540": msg12987, - "10541": msg12988, - "10542": msg12989, - "10543": msg12990, - "10544": msg12991, - "10545": msg12992, - "10546": msg12993, - "10547": msg12994, - "10548": msg12995, - "10549": msg12996, - "1055": select954, - "10550": msg12997, - "10551": msg12998, - "10552": msg12999, - "10553": msg13000, - "10554": msg13001, - "10555": msg13002, - "10556": msg13003, - "10557": msg13004, - "10558": msg13005, - "10559": msg13006, - "1056": select955, - "10560": msg13007, - "10561": msg13008, - "10562": msg13009, - "10563": msg13010, - "10564": msg13011, - "10565": msg13012, - "10566": msg13013, - "10567": msg13014, - "10568": msg13015, - "10569": msg13016, - "1057": select956, - "10570": msg13017, - "10571": msg13018, - "10572": msg13019, - "10573": msg13020, - "10574": msg13021, - "10575": msg13022, - "10576": msg13023, - "10577": msg13024, - "10578": msg13025, - "10579": msg13026, - "1058": select957, - "10580": msg13027, - "10581": msg13028, - "10582": msg13029, - "10583": msg13030, - "10584": msg13031, - "10585": msg13032, - "10586": msg13033, - "10587": msg13034, - "10588": msg13035, - "10589": msg13036, - "1059": select958, - "10590": msg13037, - "10591": msg13038, - "10592": msg13039, - "10593": msg13040, - "10594": msg13041, - "10595": msg13042, - "10596": msg13043, - "10597": msg13044, - "10598": msg13045, - "10599": msg13046, - "106": select34, - "106-1": msg92, - "106-2": msg93, - "106-3": msg94, - "106-4": msg95, - "1060": select959, - "10600": msg13047, - "10601": msg13048, - "10602": msg13049, - "10603": msg13050, - "10604": msg13051, - "10605": msg13052, - "10606": msg13053, - "10607": msg13054, - "10608": msg13055, - "10609": msg13056, - "1061": select960, - "10610": msg13057, - "10611": msg13058, - "10612": msg13059, - "10613": msg13060, - "10614": msg13061, - "10615": msg13062, - "10616": msg13063, - "10617": msg13064, - "10618": msg13065, - "10619": msg13066, - "1062": select961, - "10620": msg13067, - "10621": msg13068, - "10622": msg13069, - "10623": msg13070, - "10624": msg13071, - "10625": msg13072, - "10626": msg13073, - "10627": msg13074, - "10628": msg13075, - "10629": msg13076, - "1063": select962, - "10630": msg13077, - "10631": msg13078, - "10632": msg13079, - "10633": msg13080, - "10634": msg13081, - "10635": msg13082, - "10636": msg13083, - "10637": msg13084, - "10638": msg13085, - "10639": msg13086, - "1064": select963, - "10640": msg13087, - "10641": msg13088, - "10642": msg13089, - "10643": msg13090, - "10644": msg13091, - "10645": msg13092, - "10646": msg13093, - "10647": msg13094, - "10648": msg13095, - "10649": msg13096, - "1065": select964, - "10650": msg13097, - "10651": msg13098, - "10652": msg13099, - "10653": msg13100, - "10654": msg13101, - "10655": msg13102, - "10656": msg13103, - "10657": msg13104, - "10658": msg13105, - "10659": msg13106, - "1066": select965, - "10660": msg13107, - "10661": msg13108, - "10662": msg13109, - "10663": msg13110, - "10664": msg13111, - "10665": msg13112, - "10666": msg13113, - "10667": msg13114, - "10668": msg13115, - "10669": msg13116, - "1067": select966, - "10670": msg13117, - "10671": msg13118, - "10672": msg13119, - "10673": msg13120, - "10674": msg13121, - "10675": msg13122, - "10676": msg13123, - "10677": msg13124, - "10678": msg13125, - "10679": msg13126, - "1068": select967, - "10680": msg13127, - "10681": msg13128, - "10682": msg13129, - "10683": msg13130, - "10684": msg13131, - "10685": msg13132, - "10686": msg13133, - "10687": msg13134, - "10688": msg13135, - "10689": msg13136, - "1069": select968, - "10690": msg13137, - "10691": msg13138, - "10692": msg13139, - "10693": msg13140, - "10694": msg13141, - "10695": msg13142, - "10696": msg13143, - "10697": msg13144, - "10698": msg13145, - "10699": msg13146, - "107": select35, - "1070": select969, - "10700": msg13147, - "10701": msg13148, - "10702": msg13149, - "10703": msg13150, - "10704": msg13151, - "10705": msg13152, - "10706": msg13153, - "10707": msg13154, - "10708": msg13155, - "10709": msg13156, - "1071": select970, - "10710": msg13157, - "10711": msg13158, - "10712": msg13159, - "10713": msg13160, - "10714": msg13161, - "10715": msg13162, - "10716": msg13163, - "10717": msg13164, - "10718": msg13165, - "10719": msg13166, - "1072": select971, - "10720": msg13167, - "10721": msg13168, - "10722": msg13169, - "10723": msg13170, - "10724": msg13171, - "10725": msg13172, - "10726": msg13173, - "10727": msg13174, - "10728": msg13175, - "10729": msg13176, - "1073": select972, - "10730": msg13177, - "10731": msg13178, - "10732": msg13179, - "10733": msg13180, - "10734": msg13181, - "10735": msg13182, - "10736": msg13183, - "10737": msg13184, - "10738": msg13185, - "10739": msg13186, - "10740": msg13187, - "10741": msg13188, - "10742": msg13189, - "10743": msg13190, - "10744": msg13191, - "10745": msg13192, - "10746": msg13193, - "10747": msg13194, - "10748": msg13195, - "10749": msg13196, - "1075": select973, - "10750": msg13197, - "10751": msg13198, - "10752": msg13199, - "10753": msg13200, - "10754": msg13201, - "10755": msg13202, - "10756": msg13203, - "10757": msg13204, - "10758": msg13205, - "10759": msg13206, - "1076": select974, - "10760": msg13207, - "10761": msg13208, - "10762": msg13209, - "10763": msg13210, - "10764": msg13211, - "10765": msg13212, - "10766": msg13213, - "10767": msg13214, - "10768": msg13215, - "10769": msg13216, - "1077": select975, - "10770": msg13217, - "10771": msg13218, - "10772": msg13219, - "10773": msg13220, - "10774": msg13221, - "10775": msg13222, - "10776": msg13223, - "10777": msg13224, - "10778": msg13225, - "10779": msg13226, - "1078": select976, - "10780": msg13227, - "10781": msg13228, - "10782": msg13229, - "10783": msg13230, - "10784": msg13231, - "10785": msg13232, - "10786": msg13233, - "10787": msg13234, - "10788": msg13235, - "10789": msg13236, - "1079": select977, - "10790": msg13237, - "10791": msg13238, - "10792": msg13239, - "10793": msg13240, - "10794": msg13241, - "10795": msg13242, - "10796": msg13243, - "10797": msg13244, - "10798": msg13245, - "10799": msg13246, - "108": select36, - "1080": select978, - "10800": msg13247, - "10801": msg13248, - "10802": msg13249, - "10803": msg13250, - "10804": msg13251, - "10805": msg13252, - "10806": msg13253, - "10807": msg13254, - "10808": msg13255, - "10809": msg13256, - "1081": select979, - "10810": msg13257, - "10811": msg13258, - "10812": msg13259, - "10813": msg13260, - "10814": msg13261, - "10815": msg13262, - "10816": msg13263, - "10817": msg13264, - "10818": msg13265, - "10819": msg13266, - "1082": select980, - "10820": msg13267, - "10821": msg13268, - "10822": msg13269, - "10823": msg13270, - "10824": msg13271, - "10825": msg13272, - "10826": msg13273, - "10827": msg13274, - "10828": msg13275, - "10829": msg13276, - "1083": select981, - "10830": msg13277, - "10831": msg13278, - "10832": msg13279, - "10833": msg13280, - "10834": msg13281, - "10835": msg13282, - "10836": msg13283, - "10837": msg13284, - "10838": msg13285, - "10839": msg13286, - "1084": select982, - "10840": msg13287, - "10841": msg13288, - "10842": msg13289, - "10843": msg13290, - "10844": msg13291, - "10845": msg13292, - "10846": msg13293, - "10847": msg13294, - "10848": msg13295, - "10849": msg13296, - "1085": select983, - "10850": msg13297, - "10851": msg13298, - "10852": msg13299, - "10853": msg13300, - "10854": msg13301, - "10855": msg13302, - "10856": msg13303, - "10857": msg13304, - "10858": msg13305, - "10859": msg13306, - "1086": select984, - "10860": msg13307, - "10861": msg13308, - "10862": msg13309, - "10863": msg13310, - "10864": msg13311, - "10865": msg13312, - "10866": msg13313, - "10867": msg13314, - "10868": msg13315, - "10869": msg13316, - "1087": select985, - "10870": msg13317, - "10871": msg13318, - "10872": msg13319, - "10873": msg13320, - "10874": msg13321, - "10875": msg13322, - "10876": msg13323, - "10877": msg13324, - "10878": msg13325, - "10879": msg13326, - "1088": select986, - "10880": msg13327, - "10881": msg13328, - "10882": msg13329, - "10883": msg13330, - "10884": msg13331, - "10885": msg13332, - "10886": msg13333, - "10887": msg13334, - "10888": msg13335, - "10889": msg13336, - "1089": select987, - "10890": msg13337, - "10891": msg13338, - "10892": msg13339, - "10893": msg13340, - "10894": msg13341, - "10895": msg13342, - "10896": msg13343, - "10897": msg13344, - "10898": msg13345, - "10899": msg13346, - "109": select37, - "1090": select988, - "10900": msg13347, - "10901": msg13348, - "10902": msg13349, - "10903": msg13350, - "10904": msg13351, - "10905": msg13352, - "10906": msg13353, - "10907": msg13354, - "10908": msg13355, - "10909": msg13356, - "1091": select989, - "10910": msg13357, - "10911": msg13358, - "10912": msg13359, - "10913": msg13360, - "10914": msg13361, - "10915": msg13362, - "10916": msg13363, - "10917": msg13364, - "10918": msg13365, - "10919": msg13366, - "1092": select990, - "10920": msg13367, - "10921": msg13368, - "10922": msg13369, - "10923": msg13370, - "10924": msg13371, - "10925": msg13372, - "10926": msg13373, - "10927": msg13374, - "10928": msg13375, - "10929": msg13376, - "1093": select991, - "10930": msg13377, - "10931": msg13378, - "10932": msg13379, - "10933": msg13380, - "10934": msg13381, - "10935": msg13382, - "10936": msg13383, - "10937": msg13384, - "10938": msg13385, - "10939": msg13386, - "1094": select992, - "10940": msg13387, - "10941": msg13388, - "10942": msg13389, - "10943": msg13390, - "10944": msg13391, - "10945": msg13392, - "10946": msg13393, - "10947": msg13394, - "10948": msg13395, - "10949": msg13396, - "1095": select993, - "10950": msg13397, - "10951": msg13398, - "10952": msg13399, - "10953": msg13400, - "10954": msg13401, - "10955": msg13402, - "10956": msg13403, - "10957": msg13404, - "10958": msg13405, - "10959": msg13406, - "1096": select994, - "10960": msg13407, - "10961": msg13408, - "10962": msg13409, - "10963": msg13410, - "10964": msg13411, - "10965": msg13412, - "10966": msg13413, - "10967": msg13414, - "10968": msg13415, - "10969": msg13416, - "1097": select995, - "10970": msg13417, - "10971": msg13418, - "10972": msg13419, - "10973": msg13420, - "10974": msg13421, - "10975": msg13422, - "10976": msg13423, - "10977": msg13424, - "10978": msg13425, - "10979": msg13426, - "1098": select996, - "10980": msg13427, - "10981": msg13428, - "10982": msg13429, - "10983": msg13430, - "10984": msg13431, - "10985": msg13432, - "10986": msg13433, - "10987": msg13434, - "10988": msg13435, - "10989": msg13436, - "1099": select997, - "10990": msg13437, - "10991": msg13438, - "10992": msg13439, - "10993": msg13440, - "10994": msg13441, - "10995": msg13442, - "10996": msg13443, - "10997": msg13444, - "10998": msg13445, - "10999": msg13446, - "11": msg35, - "110": select38, - "110-1": msg105, - "110-2": msg106, - "110-3": msg107, - "110-4": msg108, - "1100": select998, - "11000": msg13447, - "11001": msg13448, - "11002": msg13449, - "11003": msg13450, - "11004": msg13451, - "11005": msg13452, - "11006": msg13453, - "11007": msg13454, - "11008": msg13455, - "11009": msg13456, - "1101": select999, - "11010": msg13457, - "11011": msg13458, - "11012": msg13459, - "11013": msg13460, - "11014": msg13461, - "11015": msg13462, - "11016": msg13463, - "11017": msg13464, - "11018": msg13465, - "11019": msg13466, - "1102": select1000, - "11020": msg13467, - "11021": msg13468, - "11022": msg13469, - "11023": msg13470, - "11024": msg13471, - "11025": msg13472, - "11026": msg13473, - "11027": msg13474, - "11028": msg13475, - "11029": msg13476, - "1103": select1001, - "11030": msg13477, - "11031": msg13478, - "11032": msg13479, - "11033": msg13480, - "11034": msg13481, - "11035": msg13482, - "11036": msg13483, - "11037": msg13484, - "11038": msg13485, - "11039": msg13486, - "1104": select1002, - "11040": msg13487, - "11041": msg13488, - "11042": msg13489, - "11043": msg13490, - "11044": msg13491, - "11045": msg13492, - "11046": msg13493, - "11047": msg13494, - "11048": msg13495, - "11049": msg13496, - "1105": select1003, - "11050": msg13497, - "11051": msg13498, - "11052": msg13499, - "11053": msg13500, - "11054": msg13501, - "11055": msg13502, - "11056": msg13503, - "11057": msg13504, - "11058": msg13505, - "11059": msg13506, - "1106": select1004, - "11060": msg13507, - "11061": msg13508, - "11062": msg13509, - "11063": msg13510, - "11064": msg13511, - "11065": msg13512, - "11066": msg13513, - "11067": msg13514, - "11068": msg13515, - "11069": msg13516, - "1107": select1005, - "11070": msg13517, - "11071": msg13518, - "11072": msg13519, - "11073": msg13520, - "11074": msg13521, - "11075": msg13522, - "11076": msg13523, - "11077": msg13524, - "11078": msg13525, - "11079": msg13526, - "1108": select1006, - "11080": msg13527, - "11081": msg13528, - "11082": msg13529, - "11083": msg13530, - "11084": msg13531, - "11085": msg13532, - "11086": msg13533, - "11087": msg13534, - "11088": msg13535, - "11089": msg13536, - "1109": select1007, - "11090": msg13537, - "11091": msg13538, - "11092": msg13539, - "11093": msg13540, - "11094": msg13541, - "11095": msg13542, - "11096": msg13543, - "11097": msg13544, - "11098": msg13545, - "11099": msg13546, - "111": select39, - "111-1": msg111, - "111-10": msg112, - "111-11": msg113, - "111-12": msg114, - "111-13": msg115, - "111-14": msg116, - "111-15": msg117, - "111-16": msg118, - "111-17": msg119, - "111-2": msg120, - "111-3": msg121, - "111-4": msg122, - "111-5": msg123, - "111-6": msg124, - "111-7": msg125, - "111-8": msg126, - "111-9": msg127, - "1110": select1008, - "11100": msg13547, - "11101": msg13548, - "11102": msg13549, - "11103": msg13550, - "11104": msg13551, - "11105": msg13552, - "11106": msg13553, - "11107": msg13554, - "11108": msg13555, - "11109": msg13556, - "1111": select1009, - "11110": msg13557, - "11111": msg13558, - "11112": msg13559, - "11113": msg13560, - "11114": msg13561, - "11115": msg13562, - "11116": msg13563, - "11117": msg13564, - "11118": msg13565, - "11119": msg13566, - "1112": select1010, - "11120": msg13567, - "11121": msg13568, - "11122": msg13569, - "11123": msg13570, - "11124": msg13571, - "11125": msg13572, - "11126": msg13573, - "11127": msg13574, - "11128": msg13575, - "11129": msg13576, - "1113": select1011, - "11130": msg13577, - "11131": msg13578, - "11132": msg13579, - "11133": msg13580, - "11134": msg13581, - "11135": msg13582, - "11136": msg13583, - "11137": msg13584, - "11138": msg13585, - "11139": msg13586, - "1114": select1012, - "11140": msg13587, - "11141": msg13588, - "11142": msg13589, - "11143": msg13590, - "11144": msg13591, - "11145": msg13592, - "11146": msg13593, - "11147": msg13594, - "11148": msg13595, - "11149": msg13596, - "1115": select1013, - "11150": msg13597, - "11151": msg13598, - "11152": msg13599, - "11153": msg13600, - "11154": msg13601, - "11155": msg13602, - "11156": msg13603, - "11157": msg13604, - "11158": msg13605, - "11159": msg13606, - "1116": select1014, - "11160": msg13607, - "11161": msg13608, - "11162": msg13609, - "11163": msg13610, - "11164": msg13611, - "11165": msg13612, - "11166": msg13613, - "11167": msg13614, - "11168": msg13615, - "11169": msg13616, - "1117": select1015, - "11170": msg13617, - "11171": msg13618, - "11172": msg13619, - "11173": msg13620, - "11174": msg13621, - "11175": msg13622, - "11176": msg13623, - "11177": msg13624, - "11178": msg13625, - "11179": msg13626, - "1118": select1016, - "11180": msg13627, - "11181": msg13628, - "11182": msg13629, - "11183": msg13630, - "11184": msg13631, - "11185": msg13632, - "11186": msg13633, - "11187": msg13634, - "11188": msg13635, - "11189": msg13636, - "1119": select1017, - "11190": msg13637, - "11191": msg13638, - "11192": msg13639, - "11193": msg13640, - "11194": msg13641, - "11196": msg13642, - "11197": msg13643, - "11198": msg13644, - "11199": msg13645, - "112": select40, - "112-1": msg130, - "112-2": msg131, - "112-3": msg132, - "112-4": msg133, - "1120": select1018, - "11200": msg13646, - "11201": msg13647, - "11202": msg13648, - "11203": msg13649, - "11204": msg13650, - "11205": msg13651, - "11206": msg13652, - "11207": msg13653, - "11208": msg13654, - "11209": msg13655, - "1121": select1019, - "11210": msg13656, - "11211": msg13657, - "11212": msg13658, - "11213": msg13659, - "11214": msg13660, - "11215": msg13661, - "11216": msg13662, - "11217": msg13663, - "11218": msg13664, - "11219": msg13665, - "1122": select1020, - "11220": msg13666, - "11221": msg13667, - "11222": msg13668, - "11223": msg13669, - "11224": msg13670, - "11225": msg13671, - "11226": msg13672, - "11227": msg13673, - "11228": msg13674, - "11229": msg13675, - "1123": select1021, - "11230": msg13676, - "11231": msg13677, - "11232": msg13678, - "11233": msg13679, - "11234": msg13680, - "11235": msg13681, - "11236": msg13682, - "11237": msg13683, - "11238": msg13684, - "11239": msg13685, - "1124": select1022, - "11240": msg13686, - "11241": msg13687, - "11242": msg13688, - "11243": msg13689, - "11244": msg13690, - "11245": msg13691, - "11246": msg13692, - "11247": msg13693, - "11248": msg13694, - "11249": msg13695, - "1125": select1023, - "11250": msg13696, - "11251": msg13697, - "11252": msg13698, - "11253": msg13699, - "11254": msg13700, - "11255": msg13701, - "11256": msg13702, - "11257": msg13703, - "11258": msg13704, - "11259": msg13705, - "1126": select1024, - "11260": msg13706, - "11261": msg13707, - "11262": msg13708, - "11263": msg13709, - "11264": msg13710, - "11265": msg13711, - "11266": msg13712, - "11267": msg13713, - "11268": msg13714, - "11269": msg13715, - "1127": select1025, - "11270": msg13716, - "11271": msg13717, - "11272": msg13718, - "11273": msg13719, - "11274": msg13720, - "11275": msg13721, - "11276": msg13722, - "11277": msg13723, - "11278": msg13724, - "11279": msg13725, - "1128": select1026, - "11280": msg13726, - "11281": msg13727, - "11282": msg13728, - "11283": msg13729, - "11284": msg13730, - "11285": msg13731, - "11286": msg13732, - "11287": msg13733, - "11288": msg13734, - "11289": msg13735, - "1129": select1027, - "11290": msg13736, - "11291": msg13737, - "11292": msg13738, - "11293": msg13739, - "11294": msg13740, - "11295": msg13741, - "11296": msg13742, - "11297": msg13743, - "11298": msg13744, - "11299": msg13745, - "113": select41, - "1130": select1028, - "11300": msg13746, - "11301": msg13747, - "11302": msg13748, - "11303": msg13749, - "11304": msg13750, - "11305": msg13751, - "11306": msg13752, - "11307": msg13753, - "11308": msg13754, - "11309": msg13755, - "1131": select1029, - "11310": msg13756, - "11311": msg13757, - "11312": msg13758, - "11313": msg13759, - "11314": msg13760, - "11315": msg13761, - "11316": msg13762, - "11317": msg13763, - "11318": msg13764, - "11319": msg13765, - "1132": select1030, - "11320": msg13766, - "11321": msg13767, - "11322": msg13768, - "11323": msg13769, - "11324": msg13770, - "11325": msg13771, - "11326": msg13772, - "11327": msg13773, - "11328": msg13774, - "11329": msg13775, - "1133": select1031, - "11330": msg13776, - "11331": msg13777, - "11332": msg13778, - "11333": msg13779, - "11334": msg13780, - "11335": msg13781, - "11336": msg13782, - "11337": msg13783, - "11338": msg13784, - "11339": msg13785, - "1134": select1032, - "11340": msg13786, - "11341": msg13787, - "11342": msg13788, - "11343": msg13789, - "11344": msg13790, - "11345": msg13791, - "11346": msg13792, - "11347": msg13793, - "11348": msg13794, - "11349": msg13795, - "11350": msg13796, - "11351": msg13797, - "11352": msg13798, - "11353": msg13799, - "11354": msg13800, - "11355": msg13801, - "11356": msg13802, - "11357": msg13803, - "11358": msg13804, - "11359": msg13805, - "1136": select1033, - "11360": msg13806, - "11361": msg13807, - "11362": msg13808, - "11363": msg13809, - "11364": msg13810, - "11365": msg13811, - "11366": msg13812, - "11367": msg13813, - "11368": msg13814, - "11369": msg13815, - "1137": select1034, - "11370": msg13816, - "11371": msg13817, - "11372": msg13818, - "11373": msg13819, - "11374": msg13820, - "11375": msg13821, - "11376": msg13822, - "11377": msg13823, - "11378": msg13824, - "11379": msg13825, - "1138": select1035, - "11380": msg13826, - "11381": msg13827, - "11382": msg13828, - "11383": msg13829, - "11384": msg13830, - "11385": msg13831, - "11386": msg13832, - "11387": msg13833, - "11388": msg13834, - "11389": msg13835, - "1139": select1036, - "11390": msg13836, - "11391": msg13837, - "11392": msg13838, - "11393": msg13839, - "11394": msg13840, - "11395": msg13841, - "11396": msg13842, - "11397": msg13843, - "11398": msg13844, - "11399": msg13845, - "114": select42, - "1140": select1037, - "11400": msg13846, - "11401": msg13847, - "11402": msg13848, - "11403": msg13849, - "11404": msg13850, - "11405": msg13851, - "11406": msg13852, - "11407": msg13853, - "11408": msg13854, - "11409": msg13855, - "1141": select1038, - "11410": msg13856, - "11411": msg13857, - "11412": msg13858, - "11413": msg13859, - "11414": msg13860, - "11415": msg13861, - "11416": msg13862, - "11417": msg13863, - "11418": msg13864, - "11419": msg13865, - "1142": select1039, - "11420": msg13866, - "11421": msg13867, - "11422": msg13868, - "11423": msg13869, - "11424": msg13870, - "11425": msg13871, - "11426": msg13872, - "11427": msg13873, - "11428": msg13874, - "11429": msg13875, - "1143": select1040, - "11430": msg13876, - "11431": msg13877, - "11432": msg13878, - "11433": msg13879, - "11434": msg13880, - "11435": msg13881, - "11436": msg13882, - "11437": msg13883, - "11438": msg13884, - "11439": msg13885, - "1144": select1041, - "11440": msg13886, - "11441": msg13887, - "11442": msg13888, - "11443": msg13889, - "11444": msg13890, - "11445": msg13891, - "11446": msg13892, - "11447": msg13893, - "11448": msg13894, - "11449": msg13895, - "1145": select1042, - "11450": msg13896, - "11451": msg13897, - "11452": msg13898, - "11453": msg13899, - "11454": msg13900, - "11455": msg13901, - "11456": msg13902, - "11457": msg13903, - "11458": msg13904, - "11459": msg13905, - "1146": select1043, - "11460": msg13906, - "11461": msg13907, - "11462": msg13908, - "11463": msg13909, - "11464": msg13910, - "11465": msg13911, - "11466": msg13912, - "11467": msg13913, - "11468": msg13914, - "11469": msg13915, - "1147": select1044, - "11470": msg13916, - "11471": msg13917, - "11472": msg13918, - "11473": msg13919, - "11474": msg13920, - "11475": msg13921, - "11476": msg13922, - "11477": msg13923, - "11478": msg13924, - "11479": msg13925, - "1148": select1045, - "11480": msg13926, - "11481": msg13927, - "11482": msg13928, - "11483": msg13929, - "11484": msg13930, - "11485": msg13931, - "11486": msg13932, - "11487": msg13933, - "11488": msg13934, - "11489": msg13935, - "1149": select1046, - "11490": msg13936, - "11491": msg13937, - "11492": msg13938, - "11493": msg13939, - "11494": msg13940, - "11495": msg13941, - "11496": msg13942, - "11497": msg13943, - "11498": msg13944, - "11499": msg13945, - "115": select43, - "115-1": msg140, - "115-2": msg141, - "115-3": msg142, - "115-4": msg143, - "115-5": msg144, - "1150": select1047, - "11500": msg13946, - "11501": msg13947, - "11502": msg13948, - "11503": msg13949, - "11504": msg13950, - "11505": msg13951, - "11506": msg13952, - "11507": msg13953, - "11508": msg13954, - "11509": msg13955, - "1151": select1048, - "11510": msg13956, - "11511": msg13957, - "11512": msg13958, - "11513": msg13959, - "11514": msg13960, - "11515": msg13961, - "11516": msg13962, - "11517": msg13963, - "11518": msg13964, - "11519": msg13965, - "1152": select1049, - "11520": msg13966, - "11521": msg13967, - "11522": msg13968, - "11523": msg13969, - "11524": msg13970, - "11525": msg13971, - "11526": msg13972, - "11527": msg13973, - "11528": msg13974, - "11529": msg13975, - "1153": select1050, - "11530": msg13976, - "11531": msg13977, - "11532": msg13978, - "11533": msg13979, - "11534": msg13980, - "11535": msg13981, - "11536": msg13982, - "11537": msg13983, - "11538": msg13984, - "11539": msg13985, - "1154": select1051, - "11540": msg13986, - "11541": msg13987, - "11542": msg13988, - "11543": msg13989, - "11544": msg13990, - "11545": msg13991, - "11546": msg13992, - "11547": msg13993, - "11548": msg13994, - "11549": msg13995, - "1155": select1052, - "11550": msg13996, - "11551": msg13997, - "11552": msg13998, - "11553": msg13999, - "11554": msg14000, - "11555": msg14001, - "11556": msg14002, - "11557": msg14003, - "11558": msg14004, - "11559": msg14005, - "1156": select1053, - "11560": msg14006, - "11561": msg14007, - "11562": msg14008, - "11563": msg14009, - "11564": msg14010, - "11565": msg14011, - "11566": msg14012, - "11567": msg14013, - "11568": msg14014, - "11569": msg14015, - "1157": select1054, - "11570": msg14016, - "11571": msg14017, - "11572": msg14018, - "11573": msg14019, - "11574": msg14020, - "11575": msg14021, - "11576": msg14022, - "11577": msg14023, - "11578": msg14024, - "11579": msg14025, - "1158": select1055, - "11580": msg14026, - "11581": msg14027, - "11582": msg14028, - "11583": msg14029, - "11584": msg14030, - "11585": msg14031, - "11586": msg14032, - "11587": msg14033, - "11588": msg14034, - "11589": msg14035, - "1159": select1056, - "11590": msg14036, - "11591": msg14037, - "11592": msg14038, - "11593": msg14039, - "11594": msg14040, - "11595": msg14041, - "11596": msg14042, - "11597": msg14043, - "11598": msg14044, - "11599": msg14045, - "116": select44, - "116-5": msg147, - "1160": select1057, - "11600": msg14046, - "11601": msg14047, - "11602": msg14048, - "11603": msg14049, - "11604": msg14050, - "11605": msg14051, - "11606": msg14052, - "11607": msg14053, - "11608": msg14054, - "11609": msg14055, - "1161": select1058, - "11610": msg14056, - "11611": msg14057, - "11612": msg14058, - "11613": msg14059, - "11614": msg14060, - "11615": msg14061, - "11616": msg14062, - "11617": msg14063, - "11618": msg14064, - "11619": msg14065, - "1162": select1059, - "11620": msg14066, - "11621": msg14067, - "11622": msg14068, - "11623": msg14069, - "11624": msg14070, - "11625": msg14071, - "11626": msg14072, - "11627": msg14073, - "11628": msg14074, - "11629": msg14075, - "1163": select1060, - "11630": msg14076, - "11631": msg14077, - "11632": msg14078, - "11633": msg14079, - "11634": msg14080, - "11635": msg14081, - "11636": msg14082, - "11637": msg14083, - "11638": msg14084, - "11639": msg14085, - "1164": select1061, - "11640": msg14086, - "11641": msg14087, - "11642": msg14088, - "11643": msg14089, - "11644": msg14090, - "11645": msg14091, - "11646": msg14092, - "11647": msg14093, - "11648": msg14094, - "11649": msg14095, - "1165": select1062, - "11650": msg14096, - "11651": msg14097, - "11652": msg14098, - "11653": msg14099, - "11654": msg14100, - "11655": msg14101, - "11656": msg14102, - "11657": msg14103, - "11658": msg14104, - "11659": msg14105, - "1166": select1063, - "11660": msg14106, - "11661": msg14107, - "11662": msg14108, - "11663": msg14109, - "11664": msg14110, - "11665": msg14111, - "11666": msg14112, - "11667": msg14113, - "11668": msg14114, - "11669": msg14115, - "1167": select1064, - "11670": msg14116, - "11671": msg14117, - "11672": msg14118, - "11673": msg14119, - "11674": msg14120, - "11675": msg14121, - "11676": msg14122, - "11677": msg14123, - "11678": msg14124, - "11679": msg14125, - "1168": select1065, - "11680": msg14126, - "11681": msg14127, - "11682": msg14128, - "11683": msg14129, - "11684": msg14130, - "11685": msg14131, - "11686": msg14132, - "11687": msg14133, - "11688": msg14134, - "11689": msg14135, - "11690": msg14136, - "11691": msg14137, - "11692": msg14138, - "11693": msg14139, - "11694": msg14140, - "11695": msg14141, - "11696": msg14142, - "11697": msg14143, - "11698": msg14144, - "11699": msg14145, - "117": select45, - "11700": msg14146, - "11701": msg14147, - "11702": msg14148, - "11703": msg14149, - "11704": msg14150, - "11705": msg14151, - "11706": msg14152, - "11707": msg14153, - "11708": msg14154, - "11709": msg14155, - "1171": select1066, - "11710": msg14156, - "11711": msg14157, - "11712": msg14158, - "11713": msg14159, - "11714": msg14160, - "11715": msg14161, - "11716": msg14162, - "11717": msg14163, - "11718": msg14164, - "11719": msg14165, - "1172": select1067, - "11720": msg14166, - "11721": msg14167, - "11722": msg14168, - "11723": msg14169, - "11724": msg14170, - "11725": msg14171, - "11726": msg14172, - "11727": msg14173, - "11728": msg14174, - "11729": msg14175, - "1173": select1068, - "11730": msg14176, - "11731": msg14177, - "11732": msg14178, - "11733": msg14179, - "11734": msg14180, - "11735": msg14181, - "11736": msg14182, - "11737": msg14183, - "11738": msg14184, - "11739": msg14185, - "1174": select1069, - "11740": msg14186, - "11741": msg14187, - "11742": msg14188, - "11743": msg14189, - "11744": msg14190, - "11745": msg14191, - "11746": msg14192, - "11747": msg14193, - "11748": msg14194, - "11749": msg14195, - "1175": select1070, - "11750": msg14196, - "11751": msg14197, - "11752": msg14198, - "11753": msg14199, - "11754": msg14200, - "11755": msg14201, - "11756": msg14202, - "11757": msg14203, - "11758": msg14204, - "11759": msg14205, - "1176": select1071, - "11760": msg14206, - "11761": msg14207, - "11762": msg14208, - "11763": msg14209, - "11764": msg14210, - "11765": msg14211, - "11766": msg14212, - "11767": msg14213, - "11768": msg14214, - "11769": msg14215, - "1177": select1072, - "11770": msg14216, - "11771": msg14217, - "11772": msg14218, - "11773": msg14219, - "11774": msg14220, - "11775": msg14221, - "11776": msg14222, - "11777": msg14223, - "11778": msg14224, - "11779": msg14225, - "1178": select1073, - "11780": msg14226, - "11781": msg14227, - "11782": msg14228, - "11783": msg14229, - "11784": msg14230, - "11785": msg14231, - "11786": msg14232, - "11787": msg14233, - "11788": msg14234, - "11789": msg14235, - "1179": select1074, - "11790": msg14236, - "11791": msg14237, - "11792": msg14238, - "11793": msg14239, - "11794": msg14240, - "11795": msg14241, - "11796": msg14242, - "11797": msg14243, - "11798": msg14244, - "11799": msg14245, - "118": select46, - "1180": select1075, - "11800": msg14246, - "11801": msg14247, - "11802": msg14248, - "11803": msg14249, - "11804": msg14250, - "11805": msg14251, - "11806": msg14252, - "11807": msg14253, - "11808": msg14254, - "11809": msg14255, - "1181": select1076, - "11810": msg14256, - "11811": msg14257, - "11812": msg14258, - "11813": msg14259, - "11814": msg14260, - "11815": msg14261, - "11816": msg14262, - "11817": msg14263, - "11818": msg14264, - "11819": msg14265, - "1182": select1077, - "11820": msg14266, - "11821": msg14267, - "11822": msg14268, - "11823": msg14269, - "11824": msg14270, - "11825": msg14271, - "11826": msg14272, - "11827": msg14273, - "11828": msg14274, - "11829": msg14275, - "1183": select1078, - "11830": msg14276, - "11831": msg14277, - "11832": msg14278, - "11833": msg14279, - "11834": msg14280, - "11835": msg14281, - "11836": msg14282, - "11837": msg14283, - "11838": msg14284, - "11839": msg14285, - "1184": select1079, - "11840": msg14286, - "11841": msg14287, - "11842": msg14288, - "11843": msg14289, - "11844": msg14290, - "11845": msg14291, - "11846": msg14292, - "11847": msg14293, - "11848": msg14294, - "11849": msg14295, - "1185": select1080, - "11850": msg14296, - "11851": msg14297, - "11852": msg14298, - "11853": msg14299, - "11854": msg14300, - "11855": msg14301, - "11856": msg14302, - "11857": msg14303, - "11858": msg14304, - "11859": msg14305, - "1186": select1081, - "11860": msg14306, - "11861": msg14307, - "11862": msg14308, - "11863": msg14309, - "11864": msg14310, - "11865": msg14311, - "11866": msg14312, - "11867": msg14313, - "11868": msg14314, - "11869": msg14315, - "1187": select1082, - "11870": msg14316, - "11871": msg14317, - "11872": msg14318, - "11873": msg14319, - "11874": msg14320, - "11875": msg14321, - "11876": msg14322, - "11877": msg14323, - "11878": msg14324, - "11879": msg14325, - "1188": select1083, - "11880": msg14326, - "11881": msg14327, - "11882": msg14328, - "11883": msg14329, - "11884": msg14330, - "11885": msg14331, - "11886": msg14332, - "11887": msg14333, - "11888": msg14334, - "11889": msg14335, - "1189": select1084, - "11890": msg14336, - "11891": msg14337, - "11892": msg14338, - "11893": msg14339, - "11894": msg14340, - "11895": msg14341, - "11896": msg14342, - "11897": msg14343, - "11898": msg14344, - "11899": msg14345, - "119": select47, - "119-1": msg154, - "119-10": msg155, - "119-11": msg156, - "119-12": msg157, - "119-13": msg158, - "119-14": msg159, - "119-15": msg160, - "119-16": msg161, - "119-17": msg162, - "119-18": msg163, - "119-2": msg164, - "119-3": msg165, - "119-4": msg166, - "119-5": msg167, - "119-6": msg168, - "119-7": msg169, - "119-8": msg170, - "119-9": msg171, - "1190": select1085, - "11900": msg14346, - "11901": msg14347, - "11902": msg14348, - "11903": msg14349, - "11904": msg14350, - "11905": msg14351, - "11906": msg14352, - "11907": msg14353, - "11908": msg14354, - "11909": msg14355, - "1191": select1086, - "11910": msg14356, - "11911": msg14357, - "11912": msg14358, - "11913": msg14359, - "11914": msg14360, - "11915": msg14361, - "11916": msg14362, - "11917": msg14363, - "11918": msg14364, - "11919": msg14365, - "1192": select1087, - "11920": msg14366, - "11921": msg14367, - "11922": msg14368, - "11923": msg14369, - "11924": msg14370, - "11925": msg14371, - "11926": msg14372, - "11927": msg14373, - "11928": msg14374, - "11929": msg14375, - "1193": select1088, - "11930": msg14376, - "11931": msg14377, - "11932": msg14378, - "11933": msg14379, - "11934": msg14380, - "11935": msg14381, - "11936": msg14382, - "11937": msg14383, - "11938": msg14384, - "11939": msg14385, - "1194": select1089, - "11940": msg14386, - "11941": msg14387, - "11942": msg14388, - "11943": msg14389, - "11944": msg14390, - "11945": msg14391, - "11946": msg14392, - "11947": msg14393, - "11948": msg14394, - "11949": msg14395, - "1195": select1090, - "11950": msg14396, - "11951": msg14397, - "11952": msg14398, - "11953": msg14399, - "11954": msg14400, - "11955": msg14401, - "11956": msg14402, - "11957": msg14403, - "11958": msg14404, - "11959": msg14405, - "1196": select1091, - "11960": msg14406, - "11961": msg14407, - "11962": msg14408, - "11963": msg14409, - "11964": msg14410, - "11965": msg14411, - "11966": msg14412, - "11967": msg14413, - "11968": msg14414, - "11969": msg14415, - "1197": select1092, - "11970": msg14416, - "11971": msg14417, - "11972": msg14418, - "11973": msg14419, - "11974": msg14420, - "11975": msg14421, - "11976": msg14422, - "11977": msg14423, - "11978": msg14424, - "11979": msg14425, - "1198": select1093, - "11980": msg14426, - "11981": msg14427, - "11982": msg14428, - "11983": msg14429, - "11984": msg14430, - "11985": msg14431, - "11986": msg14432, - "11987": msg14433, - "11988": msg14434, - "11989": msg14435, - "1199": select1094, - "11990": msg14436, - "11991": msg14437, - "11992": msg14438, - "11993": msg14439, - "11994": msg14440, - "11995": msg14441, - "11996": msg14442, - "11997": msg14443, - "11998": msg14444, - "11999": msg14445, - "12": select14, - "120": select48, - "120-1": msg174, - "1200": select1095, - "12000": msg14446, - "12001": msg14447, - "12002": msg14448, - "12003": msg14449, - "12004": msg14450, - "12005": msg14451, - "12006": msg14452, - "12007": msg14453, - "12008": msg14454, - "12009": msg14455, - "1201": select1096, - "12010": msg14456, - "12011": msg14457, - "12012": msg14458, - "12013": msg14459, - "12014": msg14460, - "12015": msg14461, - "12016": msg14462, - "12017": msg14463, - "12018": msg14464, - "12019": msg14465, - "1202": select1097, - "12020": msg14466, - "12021": msg14467, - "12022": msg14468, - "12023": msg14469, - "12024": msg14470, - "12025": msg14471, - "12026": msg14472, - "12027": msg14473, - "12028": msg14474, - "12029": msg14475, - "12030": msg14476, - "12031": msg14477, - "12032": msg14478, - "12033": msg14479, - "12034": msg14480, - "12035": msg14481, - "12036": msg14482, - "12037": msg14483, - "12038": msg14484, - "12039": msg14485, - "1204": select1098, - "12040": msg14486, - "12041": msg14487, - "12042": msg14488, - "12043": msg14489, - "12044": msg14490, - "12045": msg14491, - "12046": msg14492, - "12047": msg14493, - "12048": msg14494, - "12049": msg14495, - "1205": select1099, - "12050": msg14496, - "12051": msg14497, - "12052": msg14498, - "12053": msg14499, - "12054": msg14500, - "12055": msg14501, - "12056": msg14502, - "12057": msg14503, - "12058": msg14504, - "12059": msg14505, - "1206": select1100, - "12060": msg14506, - "12061": msg14507, - "12062": msg14508, - "12063": msg14509, - "12064": msg14510, - "12065": msg14511, - "12066": msg14512, - "12067": msg14513, - "12068": msg14514, - "12069": msg14515, - "1207": select1101, - "12070": msg14516, - "12072": msg14517, - "12073": msg14518, - "12074": msg14519, - "12075": msg14520, - "12076": msg14521, - "12077": msg14522, - "12078": msg14523, - "12079": msg14524, - "1208": select1102, - "12080": msg14525, - "12081": msg14526, - "12082": msg14527, - "12083": msg14528, - "12084": msg14529, - "12085": msg14530, - "12086": msg14531, - "12087": msg14532, - "12088": msg14533, - "12089": msg14534, - "1209": select1103, - "12090": msg14535, - "12091": msg14536, - "12092": msg14537, - "12093": msg14538, - "12094": msg14539, - "12095": msg14540, - "12096": msg14541, - "12097": msg14542, - "12098": msg14543, - "12099": msg14544, - "121": select49, - "121-1": msg177, - "121-2": msg178, - "121-3": msg179, - "121-4": msg180, - "12100": msg14545, - "12101": msg14546, - "12102": msg14547, - "12103": msg14548, - "12104": msg14549, - "12105": msg14550, - "12106": msg14551, - "12107": msg14552, - "12108": msg14553, - "12109": msg14554, - "1211": select1104, - "12110": msg14555, - "12111": msg14556, - "12112": msg14557, - "12113": msg14558, - "12114": msg14559, - "12115": msg14560, - "12116": msg14561, - "12117": msg14562, - "12118": msg14563, - "12119": msg14564, - "1212": select1105, - "12120": msg14565, - "12121": msg14566, - "12122": msg14567, - "12123": msg14568, - "12124": msg14569, - "12125": msg14570, - "12126": msg14571, - "12127": msg14572, - "12128": msg14573, - "12129": msg14574, - "1213": select1106, - "12130": msg14575, - "12131": msg14576, - "12132": msg14577, - "12133": msg14578, - "12134": msg14579, - "12135": msg14580, - "12136": msg14581, - "12137": msg14582, - "12138": msg14583, - "12139": msg14584, - "1214": select1107, - "12140": msg14585, - "12141": msg14586, - "12142": msg14587, - "12143": msg14588, - "12144": msg14589, - "12145": msg14590, - "12146": msg14591, - "12147": msg14592, - "12148": msg14593, - "12149": msg14594, - "1215": select1108, - "12150": msg14595, - "12151": msg14596, - "12152": msg14597, - "12153": msg14598, - "12154": msg14599, - "12155": msg14600, - "12156": msg14601, - "12157": msg14602, - "12158": msg14603, - "12159": msg14604, - "1216": select1109, - "12160": msg14605, - "12161": msg14606, - "12162": msg14607, - "12163": msg14608, - "12164": msg14609, - "12165": msg14610, - "12166": msg14611, - "12167": msg14612, - "12168": msg14613, - "12169": msg14614, - "1217": select1110, - "12170": msg14615, - "12171": msg14616, - "12172": msg14617, - "12173": msg14618, - "12174": msg14619, - "12175": msg14620, - "12176": msg14621, - "12177": msg14622, - "12178": msg14623, - "12179": msg14624, - "1218": select1111, - "12180": msg14625, - "12181": msg14626, - "12182": msg14627, - "12183": msg14628, - "12184": msg14629, - "12185": msg14630, - "12186": msg14631, - "12187": msg14632, - "12188": msg14633, - "12189": msg14634, - "1219": select1112, - "12190": msg14635, - "12191": msg14636, - "12192": msg14637, - "12193": msg14638, - "12194": msg14639, - "12195": msg14640, - "12196": msg14641, - "12197": msg14642, - "12198": msg14643, - "12199": msg14644, - "122": select50, - "122-1": msg183, - "122-10": msg184, - "122-11": msg185, - "122-12": msg186, - "122-13": msg187, - "122-14": msg188, - "122-15": msg189, - "122-16": msg190, - "122-17": msg191, - "122-18": msg192, - "122-19": msg193, - "122-2": msg194, - "122-20": msg195, - "122-21": msg196, - "122-22": msg197, - "122-23": msg198, - "122-24": msg199, - "122-25": msg200, - "122-26": msg201, - "122-27": msg202, - "122-3": msg203, - "122-4": msg204, - "122-5": msg205, - "122-6": msg206, - "122-7": msg207, - "122-8": msg208, - "122-9": msg209, - "1220": select1113, - "12200": msg14645, - "12201": msg14646, - "12202": msg14647, - "12203": msg14648, - "12204": msg14649, - "12205": msg14650, - "12206": msg14651, - "12207": msg14652, - "12208": msg14653, - "12209": msg14654, - "1221": select1114, - "12210": msg14655, - "12211": msg14656, - "12212": msg14657, - "12213": msg14658, - "12214": msg14659, - "12215": msg14660, - "12216": msg14661, - "12217": msg14662, - "12218": msg14663, - "12219": msg14664, - "1222": select1115, - "12220": msg14665, - "12221": msg14666, - "12222": msg14667, - "12223": msg14668, - "12224": msg14669, - "12225": msg14670, - "12226": msg14671, - "12227": msg14672, - "12228": msg14673, - "12229": msg14674, - "12230": msg14675, - "12231": msg14676, - "12232": msg14677, - "12233": msg14678, - "12234": msg14679, - "12235": msg14680, - "12236": msg14681, - "12237": msg14682, - "12238": msg14683, - "12239": msg14684, - "1224": select1116, - "12240": msg14685, - "12241": msg14686, - "12242": msg14687, - "12243": msg14688, - "12244": msg14689, - "12245": msg14690, - "12246": msg14691, - "12247": msg14692, - "12248": msg14693, - "12249": msg14694, - "1225": select1117, - "12250": msg14695, - "12251": msg14696, - "12252": msg14697, - "12253": msg14698, - "12254": msg14699, - "12255": msg14700, - "12256": msg14701, - "12257": msg14702, - "12258": msg14703, - "12259": msg14704, - "1226": select1118, - "12260": msg14705, - "12261": msg14706, - "12262": msg14707, - "12263": msg14708, - "12264": msg14709, - "12265": msg14710, - "12266": msg14711, - "12267": msg14712, - "12268": msg14713, - "12269": msg14714, - "1227": select1119, - "12270": msg14715, - "12271": msg14716, - "12272": msg14717, - "12273": msg14718, - "12274": msg14719, - "12275": msg14720, - "12276": msg14721, - "12277": msg14722, - "12278": msg14723, - "12279": msg14724, - "1228": select1120, - "12280": msg14725, - "12281": msg14726, - "12282": msg14727, - "12283": msg14728, - "12284": msg14729, - "12285": msg14730, - "12286": msg14731, - "12287": msg14732, - "12288": msg14733, - "12289": msg14734, - "1229": select1121, - "12290": msg14735, - "12291": msg14736, - "12292": msg14737, - "12293": msg14738, - "12294": msg14739, - "12295": msg14740, - "12296": msg14741, - "12297": msg14742, - "12298": msg14743, - "12299": msg14744, - "123-10": msg210, - "123-9": msg211, - "1230": select1122, - "12300": msg14745, - "12301": msg14746, - "12302": msg14747, - "12303": msg14748, - "12304": msg14749, - "12305": msg14750, - "12306": msg14751, - "12307": msg14752, - "12308": msg14753, - "12309": msg14754, - "1231": select1123, - "12310": msg14755, - "12311": msg14756, - "12312": msg14757, - "12313": msg14758, - "12314": msg14759, - "12315": msg14760, - "12316": msg14761, - "12317": msg14762, - "12318": msg14763, - "12319": msg14764, - "1232": select1124, - "12320": msg14765, - "12321": msg14766, - "12322": msg14767, - "12323": msg14768, - "12324": msg14769, - "12325": msg14770, - "12326": msg14771, - "12327": msg14772, - "12328": msg14773, - "12329": msg14774, - "1233": select1125, - "12330": msg14775, - "12331": msg14776, - "12332": msg14777, - "12333": msg14778, - "12334": msg14779, - "12335": msg14780, - "12336": msg14781, - "12337": msg14782, - "12338": msg14783, - "12339": msg14784, - "1234": select1126, - "12340": msg14785, - "12341": msg14786, - "12342": msg14787, - "12343": msg14788, - "12344": msg14789, - "12345": msg14790, - "12346": msg14791, - "12347": msg14792, - "12348": msg14793, - "12349": msg14794, - "1235": select1127, - "12350": msg14795, - "12351": msg14796, - "12352": msg14797, - "12353": msg14798, - "12354": msg14799, - "12355": msg14800, - "12356": msg14801, - "12357": msg14802, - "12358": msg14803, - "12359": msg14804, - "1236": select1128, - "12360": msg14805, - "12361": msg14806, - "12362": msg14807, - "12363": msg14808, - "12364": msg14809, - "12365": msg14810, - "12366": msg14811, - "12367": msg14812, - "12368": msg14813, - "12369": msg14814, - "1237": select1129, - "12370": msg14815, - "12371": msg14816, - "12372": msg14817, - "12373": msg14818, - "12374": msg14819, - "12375": msg14820, - "12376": msg14821, - "12377": msg14822, - "12378": msg14823, - "12379": msg14824, - "1238": select1130, - "12380": msg14825, - "12381": msg14826, - "12382": msg14827, - "12383": msg14828, - "12384": msg14829, - "12385": msg14830, - "12386": msg14831, - "12387": msg14832, - "12388": msg14833, - "12389": msg14834, - "1239": select1131, - "12390": msg14835, - "12391": msg14836, - "12392": msg14837, - "12393": msg14838, - "12394": msg14839, - "12395": msg14840, - "12396": msg14841, - "12397": msg14842, - "12398": msg14843, - "12399": msg14844, - "124": select51, - "124-1": msg214, - "1240": select1132, - "12400": msg14845, - "12401": msg14846, - "12402": msg14847, - "12403": msg14848, - "12404": msg14849, - "12405": msg14850, - "12406": msg14851, - "12407": msg14852, - "12408": msg14853, - "12409": msg14854, - "1241": select1133, - "12410": msg14855, - "12411": msg14856, - "12412": msg14857, - "12413": msg14858, - "12414": msg14859, - "12415": msg14860, - "12416": msg14861, - "12417": msg14862, - "12418": msg14863, - "12419": msg14864, - "1242": select1134, - "12420": msg14865, - "12421": msg14866, - "12422": msg14867, - "12423": msg14868, - "12424": msg14869, - "12425": msg14870, - "12426": msg14871, - "12427": msg14872, - "12428": msg14873, - "12429": msg14874, - "1243": select1135, - "12430": msg14875, - "12431": msg14876, - "12432": msg14877, - "12433": msg14878, - "12434": msg14879, - "12435": msg14880, - "12436": msg14881, - "12437": msg14882, - "12438": msg14883, - "12439": msg14884, - "1244": select1136, - "12440": msg14885, - "12441": msg14886, - "12442": msg14887, - "12443": msg14888, - "12444": msg14889, - "12445": msg14890, - "12446": msg14891, - "12447": msg14892, - "12448": msg14893, - "12449": msg14894, - "1245": select1137, - "12450": msg14895, - "12451": msg14896, - "12452": msg14897, - "12453": msg14898, - "12454": msg14899, - "12455": msg14900, - "12456": msg14901, - "12457": msg14902, - "12458": msg14903, - "12459": msg14904, - "1246": select1138, - "12460": msg14905, - "12461": msg14906, - "12462": msg14907, - "12463": msg14908, - "12464": msg14909, - "12465": msg14910, - "12466": msg14911, - "12467": msg14912, - "12468": msg14913, - "12469": msg14914, - "1247": select1139, - "12470": msg14915, - "12471": msg14916, - "12472": msg14917, - "12473": msg14918, - "12474": msg14919, - "12475": msg14920, - "12476": msg14921, - "12477": msg14922, - "12478": msg14923, - "12479": msg14924, - "1248": select1140, - "12480": msg14925, - "12481": msg14926, - "12482": msg14927, - "12483": msg14928, - "12484": msg14929, - "12485": msg14930, - "12486": msg14931, - "12487": msg14932, - "12488": msg14933, - "12489": msg14934, - "1249": select1141, - "12490": msg14935, - "12491": msg14936, - "12492": msg14937, - "12493": msg14938, - "12494": msg14939, - "12495": msg14940, - "12496": msg14941, - "12497": msg14942, - "12498": msg14943, - "12499": msg14944, - "125": select52, - "125-3": msg217, - "125-5": msg218, - "125-6": msg219, - "125-8": msg220, - "1250": select1142, - "12500": msg14945, - "12501": msg14946, - "12502": msg14947, - "12503": msg14948, - "12504": msg14949, - "12505": msg14950, - "12506": msg14951, - "12507": msg14952, - "12508": msg14953, - "12509": msg14954, - "1251": select1143, - "12510": msg14955, - "12511": msg14956, - "12512": msg14957, - "12513": msg14958, - "12514": msg14959, - "12515": msg14960, - "12516": msg14961, - "12517": msg14962, - "12518": msg14963, - "12519": msg14964, - "1252": select1144, - "12520": msg14965, - "12521": msg14966, - "12522": msg14967, - "12523": msg14968, - "12524": msg14969, - "12525": msg14970, - "12526": msg14971, - "12527": msg14972, - "12528": msg14973, - "12529": msg14974, - "1253": select1145, - "12530": msg14975, - "12531": msg14976, - "12532": msg14977, - "12533": msg14978, - "12534": msg14979, - "12535": msg14980, - "12536": msg14981, - "12537": msg14982, - "12538": msg14983, - "12539": msg14984, - "1254": select1146, - "12540": msg14985, - "12541": msg14986, - "12542": msg14987, - "12543": msg14988, - "12544": msg14989, - "12545": msg14990, - "12546": msg14991, - "12547": msg14992, - "12548": msg14993, - "12549": msg14994, - "1255": select1147, - "12550": msg14995, - "12551": msg14996, - "12552": msg14997, - "12553": msg14998, - "12554": msg14999, - "12555": msg15000, - "12556": msg15001, - "12557": msg15002, - "12558": msg15003, - "12559": msg15004, - "1256": select1148, - "12560": msg15005, - "12561": msg15006, - "12562": msg15007, - "12563": msg15008, - "12564": msg15009, - "12565": msg15010, - "12566": msg15011, - "12567": msg15012, - "12568": msg15013, - "12569": msg15014, - "1257": select1149, - "12570": msg15015, - "12571": msg15016, - "12572": msg15017, - "12573": msg15018, - "12574": msg15019, - "12575": msg15020, - "12576": msg15021, - "12577": msg15022, - "12578": msg15023, - "12579": msg15024, - "1258": select1150, - "12580": msg15025, - "12581": msg15026, - "12582": msg15027, - "12583": msg15028, - "12584": msg15029, - "12585": msg15030, - "12586": msg15031, - "12587": msg15032, - "12588": msg15033, - "12589": msg15034, - "1259": select1151, - "12590": msg15035, - "12591": msg15036, - "12592": msg15037, - "12593": msg15038, - "12594": msg15039, - "12595": msg15040, - "12596": msg15041, - "12597": msg15042, - "12598": msg15043, - "12599": msg15044, - "126": select53, - "126-1": msg223, - "1260": select1152, - "12600": msg15045, - "12601": msg15046, - "12602": msg15047, - "12603": msg15048, - "12604": msg15049, - "12605": msg15050, - "12606": msg15051, - "12607": msg15052, - "12608": msg15053, - "12609": msg15054, - "1261": select1153, - "12610": msg15055, - "12611": msg15056, - "12612": msg15057, - "12613": msg15058, - "12614": msg15059, - "12615": msg15060, - "12616": msg15061, - "12617": msg15062, - "12618": msg15063, - "12619": msg15064, - "1262": select1154, - "12620": msg15065, - "12621": msg15066, - "12622": msg15067, - "12623": msg15068, - "12624": msg15069, - "12625": msg15070, - "12626": msg15071, - "12627": msg15072, - "12628": msg15073, - "12629": msg15074, - "1263": select1155, - "12630": msg15075, - "12631": msg15076, - "12632": msg15077, - "12633": msg15078, - "12634": msg15079, - "12635": msg15080, - "12636": msg15081, - "12637": msg15082, - "12638": msg15083, - "12639": msg15084, - "1264": select1156, - "12640": msg15085, - "12641": msg15086, - "12642": msg15087, - "12643": msg15088, - "12644": msg15089, - "12645": msg15090, - "12646": msg15091, - "12647": msg15092, - "12648": msg15093, - "12649": msg15094, - "1265": select1157, - "12650": msg15095, - "12651": msg15096, - "12652": msg15097, - "12653": msg15098, - "12654": msg15099, - "12655": msg15100, - "12656": msg15101, - "12657": msg15102, - "12658": msg15103, - "12659": msg15104, - "1266": select1158, - "12660": msg15105, - "12661": msg15106, - "12663": msg15107, - "12664": msg15108, - "12665": msg15109, - "12666": msg15110, - "12667": msg15111, - "12668": msg15112, - "12669": msg15113, - "1267": select1159, - "12670": msg15114, - "12671": msg15115, - "12672": msg15116, - "12673": msg15117, - "12674": msg15118, - "12675": msg15119, - "12676": msg15120, - "12677": msg15121, - "12678": msg15122, - "12679": msg15123, - "1268": select1160, - "12680": msg15124, - "12681": msg15125, - "12682": msg15126, - "12683": msg15127, - "12684": msg15128, - "12685": msg15129, - "12686": msg15130, - "12687": msg15131, - "12688": msg15132, - "12689": msg15133, - "1269": select1161, - "12690": msg15134, - "12691": msg15135, - "12692": msg15136, - "12693": msg15137, - "12694": msg15138, - "12695": msg15139, - "12696": msg15140, - "12697": msg15141, - "12698": msg15142, - "12699": msg15143, - "127": select54, - "1270": select1162, - "12700": msg15144, - "12701": msg15145, - "12702": msg15146, - "12703": msg15147, - "12704": msg15148, - "12705": msg15149, - "12706": msg15150, - "12707": msg15151, - "12708": msg15152, - "12709": msg15153, - "1271": select1163, - "12710": msg15154, - "12711": msg15155, - "12712": msg15156, - "12713": msg15157, - "12714": msg15158, - "12715": msg15159, - "12716": msg15160, - "12717": msg15161, - "12718": msg15162, - "12719": msg15163, - "1272": select1164, - "12720": msg15164, - "12721": msg15165, - "12722": msg15166, - "12723": msg15167, - "12724": msg15168, - "12725": msg15169, - "12726": msg15170, - "12727": msg15171, - "12728": msg15172, - "12729": msg15173, - "1273": select1165, - "12730": msg15174, - "12731": msg15175, - "12732": msg15176, - "12733": msg15177, - "12734": msg15178, - "12735": msg15179, - "12736": msg15180, - "12737": msg15181, - "12738": msg15182, - "12739": msg15183, - "1274": select1166, - "12740": msg15184, - "12741": msg15185, - "12742": msg15186, - "12743": msg15187, - "12744": msg15188, - "12745": msg15189, - "12746": msg15190, - "12747": msg15191, - "12748": msg15192, - "12749": msg15193, - "1275": select1167, - "12750": msg15194, - "12751": msg15195, - "12752": msg15196, - "12753": msg15197, - "12754": msg15198, - "12755": msg15199, - "12756": msg15200, - "12757": msg15201, - "12758": msg15202, - "12759": msg15203, - "1276": select1168, - "12760": msg15204, - "12761": msg15205, - "12762": msg15206, - "12763": msg15207, - "12764": msg15208, - "12765": msg15209, - "12766": msg15210, - "12767": msg15211, - "12768": msg15212, - "12769": msg15213, - "1277": select1169, - "12770": msg15214, - "12771": msg15215, - "12772": msg15216, - "12773": msg15217, - "12774": msg15218, - "12775": msg15219, - "12776": msg15220, - "12777": msg15221, - "12778": msg15222, - "12779": msg15223, - "1278": select1170, - "12780": msg15224, - "12781": msg15225, - "12782": msg15226, - "12783": msg15227, - "12784": msg15228, - "12785": msg15229, - "12786": msg15230, - "12787": msg15231, - "12788": msg15232, - "12789": msg15233, - "1279": select1171, - "12790": msg15234, - "12791": msg15235, - "12792": msg15236, - "12793": msg15237, - "12794": msg15238, - "12795": msg15239, - "12796": msg15240, - "12797": msg15241, - "12798": msg15242, - "12799": msg15243, - "128": select55, - "1280": select1172, - "12800": msg15244, - "12801": msg15245, - "12802": msg15246, - "12803": msg15247, - "12804": msg15248, - "12805": msg15249, - "12806": msg15250, - "12807": msg15251, - "12808": msg15252, - "12809": msg15253, - "1281": select1173, - "12810": msg15254, - "12811": msg15255, - "12812": msg15256, - "12813": msg15257, - "12814": msg15258, - "12815": msg15259, - "12816": msg15260, - "12817": msg15261, - "12818": msg15262, - "12819": msg15263, - "1282": select1174, - "12820": msg15264, - "12821": msg15265, - "12822": msg15266, - "12823": msg15267, - "12824": msg15268, - "12825": msg15269, - "12826": msg15270, - "12827": msg15271, - "12828": msg15272, - "12829": msg15273, - "1283": select1175, - "12830": msg15274, - "12831": msg15275, - "12832": msg15276, - "12833": msg15277, - "12834": msg15278, - "12835": msg15279, - "12836": msg15280, - "12837": msg15281, - "12838": msg15282, - "12839": msg15283, - "1284": select1176, - "12840": msg15284, - "12841": msg15285, - "12842": msg15286, - "12843": msg15287, - "12844": msg15288, - "12845": msg15289, - "12846": msg15290, - "12847": msg15291, - "12848": msg15292, - "12849": msg15293, - "1285": select1177, - "12850": msg15294, - "12851": msg15295, - "12852": msg15296, - "12853": msg15297, - "12854": msg15298, - "12855": msg15299, - "12856": msg15300, - "12857": msg15301, - "12858": msg15302, - "12859": msg15303, - "1286": select1178, - "12860": msg15304, - "12861": msg15305, - "12862": msg15306, - "12863": msg15307, - "12864": msg15308, - "12865": msg15309, - "12866": msg15310, - "12867": msg15311, - "12868": msg15312, - "12869": msg15313, - "1287": select1179, - "12870": msg15314, - "12871": msg15315, - "12872": msg15316, - "12873": msg15317, - "12874": msg15318, - "12875": msg15319, - "12876": msg15320, - "12877": msg15321, - "12878": msg15322, - "12879": msg15323, - "1288": select1180, - "12880": msg15324, - "12881": msg15325, - "12882": msg15326, - "12883": msg15327, - "12884": msg15328, - "12885": msg15329, - "12886": msg15330, - "12887": msg15331, - "12888": msg15332, - "12889": msg15333, - "1289": select1181, - "12890": msg15334, - "12891": msg15335, - "12892": msg15336, - "12893": msg15337, - "12894": msg15338, - "12895": msg15339, - "12896": msg15340, - "12897": msg15341, - "12898": msg15342, - "12899": msg15343, - "129": select56, - "129-2": msg230, - "129-6": msg231, - "1290": select1182, - "12900": msg15344, - "12901": msg15345, - "12902": msg15346, - "12903": msg15347, - "12904": msg15348, - "12905": msg15349, - "12906": msg15350, - "12907": msg15351, - "12908": msg15352, - "12909": msg15353, - "1291": select1183, - "12910": msg15354, - "12911": msg15355, - "12912": msg15356, - "12913": msg15357, - "12914": msg15358, - "12915": msg15359, - "12916": msg15360, - "12917": msg15361, - "12918": msg15362, - "12919": msg15363, - "1292": select1184, - "12920": msg15364, - "12921": msg15365, - "12922": msg15366, - "12923": msg15367, - "12924": msg15368, - "12925": msg15369, - "12926": msg15370, - "12927": msg15371, - "12928": msg15372, - "12929": msg15373, - "1293": select1185, - "12930": msg15374, - "12931": msg15375, - "12932": msg15376, - "12933": msg15377, - "12934": msg15378, - "12935": msg15379, - "12936": msg15380, - "12937": msg15381, - "12938": msg15382, - "12939": msg15383, - "1294": select1186, - "12940": msg15384, - "12941": msg15385, - "12942": msg15386, - "12943": msg15387, - "12944": msg15388, - "12945": msg15389, - "12946": msg15390, - "12947": msg15391, - "12948": msg15392, - "12949": msg15393, - "1295": select1187, - "12950": msg15394, - "12951": msg15395, - "12952": msg15396, - "12953": msg15397, - "12954": msg15398, - "12955": msg15399, - "12956": msg15400, - "12957": msg15401, - "12958": msg15402, - "12959": msg15403, - "1296": select1188, - "12960": msg15404, - "12961": msg15405, - "12962": msg15406, - "12963": msg15407, - "12964": msg15408, - "12965": msg15409, - "12966": msg15410, - "12967": msg15411, - "12968": msg15412, - "12969": msg15413, - "1297": select1189, - "12970": msg15414, - "12971": msg15415, - "12972": msg15416, - "12973": msg15417, - "12974": msg15418, - "12975": msg15419, - "12976": msg15420, - "12977": msg15421, - "12978": msg15422, - "12979": msg15423, - "1298": select1190, - "12980": msg15424, - "12981": msg15425, - "12982": msg15426, - "12983": msg15427, - "12984": msg15428, - "12985": msg15429, - "12986": msg15430, - "12987": msg15431, - "12988": msg15432, - "12989": msg15433, - "1299": select1191, - "12990": msg15434, - "12991": msg15435, - "12992": msg15436, - "12993": msg15437, - "12994": msg15438, - "12995": msg15439, - "12996": msg15440, - "12997": msg15441, - "12998": msg15442, - "12999": msg15443, - "13": select15, - "130": select57, - "1300": select1192, - "13000": msg15444, - "13001": msg15445, - "13002": msg15446, - "13003": msg15447, - "13004": msg15448, - "13005": msg15449, - "13006": msg15450, - "13007": msg15451, - "13008": msg15452, - "13009": msg15453, - "1301": select1193, - "13010": msg15454, - "13011": msg15455, - "13012": msg15456, - "13013": msg15457, - "13014": msg15458, - "13015": msg15459, - "13016": msg15460, - "13017": msg15461, - "13018": msg15462, - "13019": msg15463, - "1302": select1194, - "13020": msg15464, - "13021": msg15465, - "13022": msg15466, - "13023": msg15467, - "13024": msg15468, - "13025": msg15469, - "13026": msg15470, - "13027": msg15471, - "13028": msg15472, - "13029": msg15473, - "1303": select1195, - "13030": msg15474, - "13031": msg15475, - "13032": msg15476, - "13033": msg15477, - "13034": msg15478, - "13035": msg15479, - "13036": msg15480, - "13037": msg15481, - "13038": msg15482, - "13039": msg15483, - "1304": select1196, - "13040": msg15484, - "13041": msg15485, - "13042": msg15486, - "13043": msg15487, - "13044": msg15488, - "13045": msg15489, - "13046": msg15490, - "13047": msg15491, - "13048": msg15492, - "13049": msg15493, - "1305": select1197, - "13050": msg15494, - "13051": msg15495, - "13052": msg15496, - "13053": msg15497, - "13054": msg15498, - "13055": msg15499, - "13056": msg15500, - "13057": msg15501, - "13058": msg15502, - "13059": msg15503, - "1306": select1198, - "13060": msg15504, - "13061": msg15505, - "13062": msg15506, - "13063": msg15507, - "13064": msg15508, - "13065": msg15509, - "13066": msg15510, - "13067": msg15511, - "13068": msg15512, - "13069": msg15513, - "1307": select1199, - "13070": msg15514, - "13071": msg15515, - "13072": msg15516, - "13073": msg15517, - "13074": msg15518, - "13075": msg15519, - "13076": msg15520, - "13077": msg15521, - "13078": msg15522, - "13079": msg15523, - "1308": select1200, - "13080": msg15524, - "13081": msg15525, - "13082": msg15526, - "13083": msg15527, - "13084": msg15528, - "13085": msg15529, - "13086": msg15530, - "13087": msg15531, - "13088": msg15532, - "13089": msg15533, - "1309": select1201, - "13090": msg15534, - "13091": msg15535, - "13092": msg15536, - "13093": msg15537, - "13094": msg15538, - "13095": msg15539, - "13096": msg15540, - "13097": msg15541, - "13098": msg15542, - "13099": msg15543, - "131": select58, - "131-3": msg236, - "1310": select1202, - "13100": msg15544, - "13101": msg15545, - "13102": msg15546, - "13103": msg15547, - "13104": msg15548, - "13105": msg15549, - "13106": msg15550, - "13107": msg15551, - "13108": msg15552, - "13109": msg15553, - "1311": select1203, - "13110": msg15554, - "13111": msg15555, - "13112": msg15556, - "13113": msg15557, - "13114": msg15558, - "13115": msg15559, - "13116": msg15560, - "13117": msg15561, - "13118": msg15562, - "13119": msg15563, - "1312": select1204, - "13120": msg15564, - "13121": msg15565, - "13122": msg15566, - "13123": msg15567, - "13124": msg15568, - "13125": msg15569, - "13126": msg15570, - "13127": msg15571, - "13128": msg15572, - "13129": msg15573, - "1313": select1205, - "13130": msg15574, - "13131": msg15575, - "13132": msg15576, - "13133": msg15577, - "13134": msg15578, - "13135": msg15579, - "13136": msg15580, - "13137": msg15581, - "13138": msg15582, - "13139": msg15583, - "1314": select1206, - "13140": msg15584, - "13141": msg15585, - "13142": msg15586, - "13143": msg15587, - "13144": msg15588, - "13145": msg15589, - "13146": msg15590, - "13147": msg15591, - "13148": msg15592, - "13149": msg15593, - "1315": select1207, - "13150": msg15594, - "13151": msg15595, - "13152": msg15596, - "13153": msg15597, - "13154": msg15598, - "13155": msg15599, - "13156": msg15600, - "13157": msg15601, - "13158": msg15602, - "13159": msg15603, - "1316": select1208, - "13160": msg15604, - "13161": msg15605, - "13162": msg15606, - "13163": msg15607, - "13164": msg15608, - "13165": msg15609, - "13166": msg15610, - "13167": msg15611, - "13168": msg15612, - "13169": msg15613, - "1317": select1209, - "13170": msg15614, - "13171": msg15615, - "13172": msg15616, - "13173": msg15617, - "13174": msg15618, - "13175": msg15619, - "13176": msg15620, - "13177": msg15621, - "13178": msg15622, - "13179": msg15623, - "1318": select1210, - "13180": msg15624, - "13181": msg15625, - "13182": msg15626, - "13183": msg15627, - "13184": msg15628, - "13185": msg15629, - "13186": msg15630, - "13187": msg15631, - "13188": msg15632, - "13189": msg15633, - "1319": select1211, - "13190": msg15634, - "13191": msg15635, - "13192": msg15636, - "13193": msg15637, - "13194": msg15638, - "13195": msg15639, - "13196": msg15640, - "13197": msg15641, - "13198": msg15642, - "13199": msg15643, - "132": select59, - "1320": select1212, - "13200": msg15644, - "13201": msg15645, - "13202": msg15646, - "13203": msg15647, - "13204": msg15648, - "13205": msg15649, - "13206": msg15650, - "13207": msg15651, - "13208": msg15652, - "13209": msg15653, - "1321": select1213, - "13210": msg15654, - "13211": msg15655, - "13212": msg15656, - "13213": msg15657, - "13214": msg15658, - "13215": msg15659, - "13216": msg15660, - "13217": msg15661, - "13218": msg15662, - "13219": msg15663, - "1322": select1214, - "13220": msg15664, - "13221": msg15665, - "13222": msg15666, - "13223": msg15667, - "13224": msg15668, - "13225": msg15669, - "13226": msg15670, - "13227": msg15671, - "13228": msg15672, - "13229": msg15673, - "1323": select1215, - "13230": msg15674, - "13231": msg15675, - "13232": msg15676, - "13233": msg15677, - "13234": msg15678, - "13235": msg15679, - "13236": msg15680, - "13237": msg15681, - "13238": msg15682, - "13239": msg15683, - "1324": select1216, - "13240": msg15684, - "13241": msg15685, - "13242": msg15686, - "13243": msg15687, - "13244": msg15688, - "13245": msg15689, - "13246": msg15690, - "13247": msg15691, - "13248": msg15692, - "13249": msg15693, - "1325": select1217, - "13250": msg15694, - "13251": msg15695, - "13252": msg15696, - "13253": msg15697, - "13254": msg15698, - "13255": msg15699, - "13256": msg15700, - "13257": msg15701, - "13258": msg15702, - "13259": msg15703, - "1326": select1218, - "13260": msg15704, - "13261": msg15705, - "13262": msg15706, - "13263": msg15707, - "13264": msg15708, - "13265": msg15709, - "13266": msg15710, - "13267": msg15711, - "13268": msg15712, - "13269": msg15713, - "1327": select1219, - "13270": msg15714, - "13271": msg15715, - "13272": msg15716, - "13273": msg15717, - "13274": msg15718, - "13275": msg15719, - "13276": msg15720, - "13277": msg15721, - "13278": msg15722, - "13279": msg15723, - "1328": select1220, - "13280": msg15724, - "13281": msg15725, - "13282": msg15726, - "13283": msg15727, - "13284": msg15728, - "13285": msg15729, - "13286": msg15730, - "13287": msg15731, - "13288": msg15732, - "13289": msg15733, - "1329": select1221, - "13290": msg15734, - "13291": msg15735, - "13292": msg15736, - "13293": msg15737, - "13294": msg15738, - "13295": msg15739, - "13296": msg15740, - "13297": msg15741, - "13298": msg15742, - "13299": msg15743, - "133": select60, - "1330": select1222, - "13300": msg15744, - "13301": msg15745, - "13302": msg15746, - "13303": msg15747, - "13304": msg15748, - "13305": msg15749, - "13306": msg15750, - "13307": msg15751, - "13308": msg15752, - "13309": msg15753, - "1331": select1223, - "13310": msg15754, - "13311": msg15755, - "13312": msg15756, - "13313": msg15757, - "13314": msg15758, - "13315": msg15759, - "13316": msg15760, - "13317": msg15761, - "13318": msg15762, - "13319": msg15763, - "1332": select1224, - "13320": msg15764, - "13321": msg15765, - "13322": msg15766, - "13323": msg15767, - "13324": msg15768, - "13325": msg15769, - "13326": msg15770, - "13327": msg15771, - "13328": msg15772, - "13329": msg15773, - "1333": select1225, - "13330": msg15774, - "13331": msg15775, - "13332": msg15776, - "13333": msg15777, - "13334": msg15778, - "13335": msg15779, - "13336": msg15780, - "13337": msg15781, - "13338": msg15782, - "13339": msg15783, - "1334": select1226, - "13340": msg15784, - "13341": msg15785, - "13342": msg15786, - "13343": msg15787, - "13344": msg15788, - "13345": msg15789, - "13346": msg15790, - "13347": msg15791, - "13348": msg15792, - "13349": msg15793, - "1335": select1227, - "13350": msg15794, - "13351": msg15795, - "13352": msg15796, - "13353": msg15797, - "13354": msg15798, - "13355": msg15799, - "13356": msg15800, - "13357": msg15801, - "13358": msg15802, - "13359": msg15803, - "1336": select1228, - "13360": msg15804, - "13361": msg15805, - "13362": msg15806, - "13363": msg15807, - "13364": msg15808, - "13365": msg15809, - "13366": msg15810, - "13367": msg15811, - "13368": msg15812, - "13369": msg15813, - "1337": select1229, - "13370": msg15814, - "13371": msg15815, - "13372": msg15816, - "13373": msg15817, - "13374": msg15818, - "13375": msg15819, - "13376": msg15820, - "13377": msg15821, - "13378": msg15822, - "13379": msg15823, - "1338": select1230, - "13380": msg15824, - "13381": msg15825, - "13382": msg15826, - "13383": msg15827, - "13384": msg15828, - "13385": msg15829, - "13386": msg15830, - "13387": msg15831, - "13388": msg15832, - "13389": msg15833, - "1339": select1231, - "13390": msg15834, - "13391": msg15835, - "13392": msg15836, - "13393": msg15837, - "13394": msg15838, - "13395": msg15839, - "13396": msg15840, - "13397": msg15841, - "13398": msg15842, - "13399": msg15843, - "134": select61, - "1340": select1232, - "13400": msg15844, - "13401": msg15845, - "13402": msg15846, - "13403": msg15847, - "13404": msg15848, - "13405": msg15849, - "13406": msg15850, - "13407": msg15851, - "13408": msg15852, - "13409": msg15853, - "1341": select1233, - "13410": msg15854, - "13411": msg15855, - "13412": msg15856, - "13413": msg15857, - "13414": msg15858, - "13415": msg15859, - "13416": msg15860, - "13417": msg15861, - "13418": msg15862, - "13419": msg15863, - "1342": select1234, - "13420": msg15864, - "13421": msg15865, - "13422": msg15866, - "13423": msg15867, - "13424": msg15868, - "13425": msg15869, - "13426": msg15870, - "13427": msg15871, - "13428": msg15872, - "13429": msg15873, - "1343": select1235, - "13430": msg15874, - "13431": msg15875, - "13432": msg15876, - "13433": msg15877, - "13434": msg15878, - "13435": msg15879, - "13436": msg15880, - "13437": msg15881, - "13438": msg15882, - "13439": msg15883, - "1344": select1236, - "13440": msg15884, - "13441": msg15885, - "13442": msg15886, - "13443": msg15887, - "13444": msg15888, - "13445": msg15889, - "13446": msg15890, - "13447": msg15891, - "13448": msg15892, - "13449": msg15893, - "1345": select1237, - "13450": msg15894, - "13451": msg15895, - "13452": msg15896, - "13453": msg15897, - "13454": msg15898, - "13455": msg15899, - "13456": msg15900, - "13457": msg15901, - "13458": msg15902, - "13459": msg15903, - "1346": select1238, - "13460": msg15904, - "13465": msg15905, - "13466": msg15906, - "13467": msg15907, - "13468": msg15908, - "13469": msg15909, - "1347": select1239, - "13470": msg15910, - "13471": msg15911, - "13472": msg15912, - "13473": msg15913, - "13474": msg15914, - "13475": msg15915, - "13476": msg15916, - "13477": msg15917, - "13478": msg15918, - "13479": msg15919, - "1348": select1240, - "13480": msg15920, - "13481": msg15921, - "13482": msg15922, - "13483": msg15923, - "13484": msg15924, - "13485": msg15925, - "13486": msg15926, - "13487": msg15927, - "13488": msg15928, - "13489": msg15929, - "1349": select1241, - "13490": msg15930, - "13491": msg15931, - "13492": msg15932, - "13493": msg15933, - "13494": msg15934, - "13495": msg15935, - "13496": msg15936, - "13497": msg15937, - "13498": msg15938, - "13499": msg15939, - "135": select62, - "1350": select1242, - "13500": msg15940, - "13501": msg15941, - "13502": msg15942, - "13503": msg15943, - "13504": msg15944, - "13505": msg15945, - "13506": msg15946, - "13507": msg15947, - "13508": msg15948, - "13509": msg15949, - "1351": select1243, - "13510": msg15950, - "13511": msg15951, - "13512": msg15952, - "13513": msg15953, - "13514": msg15954, - "13515": msg15955, - "13516": msg15956, - "13517": msg15957, - "13518": msg15958, - "13519": msg15959, - "1352": select1244, - "13520": msg15960, - "13521": msg15961, - "13522": msg15962, - "13523": msg15963, - "13524": msg15964, - "13525": msg15965, - "13526": msg15966, - "13527": msg15967, - "13528": msg15968, - "13529": msg15969, - "1353": select1245, - "13530": msg15970, - "13531": msg15971, - "13532": msg15972, - "13533": msg15973, - "13534": msg15974, - "13535": msg15975, - "13536": msg15976, - "13537": msg15977, - "13538": msg15978, - "13539": msg15979, - "1354": select1246, - "13540": msg15980, - "13541": msg15981, - "13542": msg15982, - "13543": msg15983, - "13544": msg15984, - "13545": msg15985, - "13546": msg15986, - "13547": msg15987, - "13548": msg15988, - "13549": msg15989, - "1355": select1247, - "13550": msg15990, - "13551": msg15991, - "13552": msg15992, - "13553": msg15993, - "13554": msg15994, - "13555": msg15995, - "13556": msg15996, - "13557": msg15997, - "13558": msg15998, - "13559": msg15999, - "1356": select1248, - "13560": msg16000, - "13561": msg16001, - "13562": msg16002, - "13563": msg16003, - "13564": msg16004, - "13565": msg16005, - "13566": msg16006, - "13567": msg16007, - "13568": msg16008, - "13569": msg16009, - "1357": select1249, - "13570": msg16010, - "13571": msg16011, - "13572": msg16012, - "13573": msg16013, - "1358": select1250, - "13580": msg16014, - "13581": msg16015, - "13582": msg16016, - "13583": msg16017, - "13584": msg16018, - "13585": select2440, - "13586": msg16021, - "13587": msg16022, - "13588": msg16023, - "13589": msg16024, - "1359": select1251, - "13590": msg16025, - "13591": msg16026, - "13592": msg16027, - "13593": select2441, - "13594": msg16030, - "13595": msg16031, - "13596": msg16032, - "13597": msg16033, - "13598": msg16034, - "13599": msg16035, - "136": select63, - "1360": select1252, - "13600": msg16036, - "13601": msg16037, - "13602": msg16038, - "13603": msg16039, - "13604": msg16040, - "13605": msg16041, - "13606": msg16042, - "13607": msg16043, - "13608": msg16044, - "13609": msg16045, - "1361": select1253, - "13610": msg16046, - "13611": msg16047, - "13612": msg16048, - "13613": msg16049, - "13614": msg16050, - "13615": msg16051, - "13616": msg16052, - "13617": msg16053, - "13618": msg16054, - "13619": msg16055, - "1362": select1254, - "13620": msg16056, - "13621": msg16057, - "13622": msg16058, - "13623": msg16059, - "13624": msg16060, - "13625": msg16061, - "13626": msg16062, - "13627": msg16063, - "13628": select2442, - "13629": msg16066, - "1363": select1255, - "13630": msg16067, - "13631": msg16068, - "13632": msg16069, - "13633": msg16070, - "13634": msg16071, - "13635": msg16072, - "13636": msg16073, - "13637": msg16074, - "13638": msg16075, - "13639": msg16076, - "1364": select1256, - "13640": msg16077, - "13641": msg16078, - "13642": msg16079, - "13643": msg16080, - "13644": msg16081, - "13645": msg16082, - "13646": msg16083, - "13647": msg16084, - "13648": msg16085, - "13649": msg16086, - "1365": select1257, - "13650": msg16087, - "13651": msg16088, - "13652": msg16089, - "13653": msg16090, - "13654": msg16091, - "13655": msg16092, - "13656": msg16093, - "13657": msg16094, - "13658": msg16095, - "13659": msg16096, - "1366": select1258, - "13660": msg16097, - "13661": msg16098, - "13662": msg16099, - "13663": msg16100, - "13664": msg16101, - "13665": msg16102, - "13666": msg16103, - "13667": msg16104, - "13668": msg16105, - "13669": msg16106, - "1367": select1259, - "13670": msg16107, - "13671": msg16108, - "13672": msg16109, - "13673": msg16110, - "13674": msg16111, - "13675": msg16112, - "13676": msg16113, - "13677": msg16114, - "13678": msg16115, - "13679": msg16116, - "1368": select1260, - "13680": msg16117, - "13681": msg16118, - "13682": msg16119, - "13683": msg16120, - "13684": msg16121, - "13685": msg16122, - "13686": msg16123, - "13687": msg16124, - "13688": msg16125, - "13689": msg16126, - "1369": select1261, - "13690": msg16127, - "13691": msg16128, - "13692": msg16129, - "13693": msg16130, - "13694": msg16131, - "13695": msg16132, - "13696": msg16133, - "13697": msg16134, - "13698": msg16135, - "13699": msg16136, - "137": select64, - "1370": select1262, - "13700": msg16137, - "13709": msg16138, - "1371": select1263, - "13710": msg16139, - "13711": msg16140, - "13712": msg16141, - "13713": msg16142, - "13714": msg16143, - "13715": msg16144, - "13716": msg16145, - "13717": msg16146, - "13718": msg16147, - "13719": msg16148, - "1372": select1264, - "13720": msg16149, - "13721": msg16150, - "13722": msg16151, - "13723": msg16152, - "13724": msg16153, - "13725": msg16154, - "13726": msg16155, - "13727": msg16156, - "13728": msg16157, - "13729": msg16158, - "1373": select1265, - "13730": msg16159, - "13731": msg16160, - "13732": msg16161, - "13733": msg16162, - "13734": msg16163, - "13735": msg16164, - "13736": msg16165, - "13737": msg16166, - "13738": msg16167, - "13739": msg16168, - "1374": select1266, - "13740": msg16169, - "13741": msg16170, - "13742": msg16171, - "13743": msg16172, - "13744": msg16173, - "13745": msg16174, - "13746": msg16175, - "13747": msg16176, - "13748": msg16177, - "13749": msg16178, - "1375": select1267, - "13750": msg16179, - "13751": msg16180, - "13752": msg16181, - "13753": msg16182, - "13754": msg16183, - "13755": msg16184, - "13756": msg16185, - "13757": msg16186, - "13758": msg16187, - "13759": msg16188, - "1376": select1268, - "13760": msg16189, - "13761": msg16190, - "13762": msg16191, - "13763": msg16192, - "13764": msg16193, - "13765": msg16194, - "13766": msg16195, - "13767": msg16196, - "13768": msg16197, - "13769": msg16198, - "1377": select1269, - "13770": msg16199, - "13771": msg16200, - "13772": msg16201, - "13773": msg16202, - "13774": msg16203, - "13775": msg16204, - "13776": msg16205, - "13777": msg16206, - "13778": msg16207, - "13779": msg16208, - "1378": select1270, - "13780": msg16209, - "13781": msg16210, - "13782": msg16211, - "13783": msg16212, - "13784": msg16213, - "13785": msg16214, - "13786": msg16215, - "13787": msg16216, - "13788": msg16217, - "13789": msg16218, - "1379": select1271, - "13790": msg16219, - "13791": msg16220, - "13797": msg16221, - "13798": msg16222, - "13799": msg16223, - "138": select65, - "1380": select1272, - "13800": msg16224, - "13801": msg16225, - "13802": msg16226, - "13803": msg16227, - "13804": msg16228, - "13805": msg16229, - "13806": msg16230, - "13807": msg16231, - "13808": msg16232, - "13809": msg16233, - "1381": select1273, - "13810": msg16234, - "13811": msg16235, - "13812": msg16236, - "13813": msg16237, - "13814": msg16238, - "13815": msg16239, - "13816": msg16240, - "13817": msg16241, - "13818": msg16242, - "13819": msg16243, - "1382": select1274, - "13820": msg16244, - "13821": msg16245, - "13822": msg16246, - "13823": msg16247, - "13824": msg16248, - "13825": msg16249, - "13826": msg16250, - "13827": msg16251, - "13828": msg16252, - "13829": msg16253, - "1383": select1275, - "13830": msg16254, - "13831": msg16255, - "13832": msg16256, - "13833": msg16257, - "13834": msg16258, - "13835": msg16259, - "13838": msg16260, - "13839": msg16261, - "1384": select1276, - "13840": msg16262, - "13841": msg16263, - "13842": msg16264, - "13843": msg16265, - "13844": msg16266, - "13845": msg16267, - "13846": msg16268, - "13847": msg16269, - "13848": msg16270, - "13849": msg16271, - "1385": select1277, - "13850": msg16272, - "13851": msg16273, - "13852": msg16274, - "13853": msg16275, - "13854": msg16276, - "13855": msg16277, - "13856": msg16278, - "13857": msg16279, - "13858": msg16280, - "13859": msg16281, - "1386": select1278, - "13860": msg16282, - "13861": msg16283, - "13862": msg16284, - "13863": msg16285, - "13864": msg16286, - "13865": msg16287, - "13866": msg16288, - "13867": msg16289, - "13868": msg16290, - "13869": msg16291, - "1387": select1279, - "13870": msg16292, - "13871": msg16293, - "13872": msg16294, - "13873": msg16295, - "13874": msg16296, - "13875": msg16297, - "13876": msg16298, - "13877": msg16299, - "13878": msg16300, - "13879": msg16301, - "1388": select1280, - "13880": msg16302, - "13881": msg16303, - "13882": msg16304, - "13883": msg16305, - "13884": msg16306, - "13885": msg16307, - "13886": msg16308, - "13887": msg16309, - "13888": msg16310, - "13889": msg16311, - "1389": select1281, - "13890": msg16312, - "13891": msg16313, - "13892": msg16314, - "13893": msg16315, - "13894": msg16316, - "13895": msg16317, - "13896": msg16318, - "13897": msg16319, - "13898": msg16320, - "13899": msg16321, - "1390": select1282, - "13900": msg16322, - "13901": msg16323, - "13902": msg16324, - "13903": msg16325, - "13904": msg16326, - "13905": msg16327, - "13906": msg16328, - "13907": msg16329, - "13908": msg16330, - "13909": msg16331, - "1391": select1283, - "13910": msg16332, - "13911": msg16333, - "13912": msg16334, - "13913": msg16335, - "13914": msg16336, - "13915": msg16337, - "13916": msg16338, - "13917": msg16339, - "13918": msg16340, - "13919": msg16341, - "1392": select1284, - "13920": msg16342, - "13921": msg16343, - "13922": msg16344, - "13923": msg16345, - "13924": msg16346, - "13925": msg16347, - "13926": msg16348, - "13927": msg16349, - "13928": msg16350, - "13929": msg16351, - "1393": select1285, - "13930": msg16352, - "13931": msg16353, - "13932": msg16354, - "13933": msg16355, - "13934": msg16356, - "13935": msg16357, - "13936": msg16358, - "13937": msg16359, - "13938": msg16360, - "13939": msg16361, - "1394": select1286, - "13940": msg16362, - "13941": msg16363, - "13942": msg16364, - "13943": msg16365, - "13944": msg16366, - "13945": msg16367, - "13946": msg16368, - "13947": msg16369, - "13948": msg16370, - "13949": msg16371, - "1395": select1287, - "13950": msg16372, - "13951": msg16373, - "13952": msg16374, - "13953": msg16375, - "13954": msg16376, - "13958": msg16377, - "1396": select1288, - "13960": msg16378, - "13961": msg16379, - "13962": msg16380, - "13963": msg16381, - "13964": msg16382, - "13965": msg16383, - "13966": msg16384, - "13967": msg16385, - "13968": msg16386, - "13969": msg16387, - "1397": select1289, - "13970": msg16388, - "13971": msg16389, - "13972": msg16390, - "13973": msg16391, - "13974": msg16392, - "13975": msg16393, - "13976": msg16394, - "13977": msg16395, - "13978": msg16396, - "13979": msg16397, - "1398": select1290, - "13980": msg16398, - "13981": msg16399, - "13982": msg16400, - "13983": msg16401, - "13984": msg16402, - "13985": msg16403, - "13986": msg16404, - "13987": msg16405, - "13988": msg16406, - "13989": msg16407, - "1399": select1291, - "13990": msg16408, - "13991": msg16409, - "13992": msg16410, - "13993": msg16411, - "13994": msg16412, - "13995": msg16413, - "13996": msg16414, - "13997": msg16415, - "13998": msg16416, - "13999": msg16417, - "14": msg40, - "140": select66, - "1400": select1292, - "14000": msg16418, - "14001": msg16419, - "14002": msg16420, - "14003": msg16421, - "14004": msg16422, - "14005": msg16423, - "14006": msg16424, - "14007": msg16425, - "14008": msg16426, - "1401": select1293, - "14013": msg16427, - "14014": msg16428, - "14015": msg16429, - "14016": msg16430, - "14017": msg16431, - "14018": msg16432, - "14019": msg16433, - "1402": select1294, - "14020": msg16434, - "14021": msg16435, - "14022": msg16436, - "14023": msg16437, - "14024": msg16438, - "14025": msg16439, - "14026": msg16440, - "14027": msg16441, - "14028": msg16442, - "14029": msg16443, - "1403": select1295, - "14030": msg16444, - "14031": msg16445, - "14032": msg16446, - "14033": msg16447, - "14034": msg16448, - "14035": msg16449, - "14036": msg16450, - "14037": msg16451, - "14038": msg16452, - "14039": msg16453, - "1404": select1296, - "14040": msg16454, - "14041": msg16455, - "14042": msg16456, - "14043": msg16457, - "14044": msg16458, - "14045": msg16459, - "14046": msg16460, - "14047": msg16461, - "14048": msg16462, - "14049": msg16463, - "1405": select1297, - "14050": msg16464, - "14051": msg16465, - "14052": msg16466, - "14053": msg16467, - "14054": msg16468, - "14055": msg16469, - "14056": msg16470, - "14057": msg16471, - "14058": msg16472, - "14059": msg16473, - "1406": select1298, - "14060": msg16474, - "14061": msg16475, - "14062": msg16476, - "14063": msg16477, - "14064": msg16478, - "14065": msg16479, - "14066": msg16480, - "14067": msg16481, - "14068": msg16482, - "14069": msg16483, - "1407": select1299, - "14070": msg16484, - "14071": msg16485, - "14072": msg16486, - "14073": msg16487, - "14074": msg16488, - "14075": msg16489, - "14076": msg16490, - "14077": msg16491, - "14078": msg16492, - "14079": msg16493, - "1408": select1300, - "14080": msg16494, - "14081": msg16495, - "14082": msg16496, - "14083": msg16497, - "14084": msg16498, - "14085": msg16499, - "14086": msg16500, - "14087": msg16501, - "14088": msg16502, - "14089": msg16503, - "1409": select1301, - "14090": msg16504, - "14091": msg16505, - "14092": msg16506, - "14093": msg16507, - "14094": msg16508, - "14095": msg16509, - "14096": msg16510, - "14097": msg16511, - "14098": msg16512, - "14099": msg16513, - "141": select67, - "1410": select1302, - "14100": msg16514, - "14101": msg16515, - "14102": msg16516, - "14103": msg16517, - "14104": msg16518, - "14105": msg16519, - "14106": msg16520, - "14107": msg16521, - "14108": msg16522, - "14109": msg16523, - "1411": select1303, - "14110": msg16524, - "14111": msg16525, - "14112": msg16526, - "14113": msg16527, - "14114": msg16528, - "14115": msg16529, - "14116": msg16530, - "14117": msg16531, - "14118": msg16532, - "14119": msg16533, - "1412": select1304, - "14120": msg16534, - "14121": msg16535, - "14122": msg16536, - "14123": msg16537, - "14124": msg16538, - "14125": msg16539, - "14126": msg16540, - "14127": msg16541, - "14128": msg16542, - "14129": msg16543, - "1413": select1305, - "14130": msg16544, - "14131": msg16545, - "14132": msg16546, - "14133": msg16547, - "14134": msg16548, - "14135": msg16549, - "14136": msg16550, - "14137": msg16551, - "14138": msg16552, - "14139": msg16553, - "1414": select1306, - "14140": msg16554, - "14141": msg16555, - "14142": msg16556, - "14143": msg16557, - "14144": msg16558, - "14145": msg16559, - "14146": msg16560, - "14147": msg16561, - "14148": msg16562, - "14149": msg16563, - "1415": select1307, - "14150": msg16564, - "14151": msg16565, - "14152": msg16566, - "14153": msg16567, - "14154": msg16568, - "14155": msg16569, - "14156": msg16570, - "14157": msg16571, - "14158": msg16572, - "14159": msg16573, - "1416": select1308, - "14160": msg16574, - "14161": msg16575, - "14162": msg16576, - "14163": msg16577, - "14164": msg16578, - "14165": msg16579, - "14166": msg16580, - "14167": msg16581, - "14168": msg16582, - "14169": msg16583, - "1417": select1309, - "14170": msg16584, - "14171": msg16585, - "14172": msg16586, - "14173": msg16587, - "14174": msg16588, - "14175": msg16589, - "14176": msg16590, - "14177": msg16591, - "14178": msg16592, - "14179": msg16593, - "1418": select1310, - "14180": msg16594, - "14181": msg16595, - "14182": msg16596, - "14183": msg16597, - "14184": msg16598, - "14185": msg16599, - "14186": msg16600, - "14187": msg16601, - "14188": msg16602, - "14189": msg16603, - "1419": select1311, - "14190": msg16604, - "14191": msg16605, - "14192": msg16606, - "14193": msg16607, - "14194": msg16608, - "14195": msg16609, - "14196": msg16610, - "14197": msg16611, - "14198": msg16612, - "14199": msg16613, - "142": select68, - "1420": select1312, - "14200": msg16614, - "14201": msg16615, - "14202": msg16616, - "14203": msg16617, - "14204": msg16618, - "14205": msg16619, - "14206": msg16620, - "14207": msg16621, - "14208": msg16622, - "14209": msg16623, - "1421": select1313, - "14210": msg16624, - "14211": msg16625, - "14212": msg16626, - "14213": msg16627, - "14214": msg16628, - "14215": msg16629, - "14216": msg16630, - "14217": msg16631, - "14218": msg16632, - "14219": msg16633, - "1422": select1314, - "14220": msg16634, - "14221": msg16635, - "14222": msg16636, - "14223": msg16637, - "14224": msg16638, - "14225": msg16639, - "14226": msg16640, - "14227": msg16641, - "14228": msg16642, - "14229": msg16643, - "1423": select1315, - "14230": msg16644, - "14231": msg16645, - "14232": msg16646, - "14233": msg16647, - "14234": msg16648, - "14235": msg16649, - "14236": msg16650, - "14237": msg16651, - "14238": msg16652, - "14239": msg16653, - "1424": select1316, - "14240": msg16654, - "14241": msg16655, - "14242": msg16656, - "14243": msg16657, - "14244": msg16658, - "14245": msg16659, - "14246": msg16660, - "14247": msg16661, - "14248": msg16662, - "14249": msg16663, - "1425": select1317, - "14250": msg16664, - "14251": msg16665, - "14252": msg16666, - "14253": msg16667, - "14254": msg16668, - "14255": msg16669, - "14256": msg16670, - "14257": msg16671, - "14258": msg16672, - "14259": msg16673, - "1426": select1318, - "14260": msg16674, - "14261": msg16675, - "14262": msg16676, - "14263": msg16677, - "14264": msg16678, - "14265": msg16679, - "14266": msg16680, - "14267": msg16681, - "14268": msg16682, - "14269": msg16683, - "1427": select1319, - "14270": msg16684, - "14271": msg16685, - "14272": msg16686, - "14273": msg16687, - "14274": msg16688, - "14275": msg16689, - "14276": msg16690, - "14277": msg16691, - "14278": msg16692, - "14279": msg16693, - "1428": select1320, - "14280": msg16694, - "14281": msg16695, - "14282": msg16696, - "14283": msg16697, - "14284": msg16698, - "14285": msg16699, - "14286": msg16700, - "14287": msg16701, - "14288": msg16702, - "14289": msg16703, - "1429": select1321, - "14290": msg16704, - "14291": msg16705, - "14292": msg16706, - "14293": msg16707, - "14294": msg16708, - "14295": msg16709, - "14296": msg16710, - "14297": msg16711, - "14298": msg16712, - "14299": msg16713, - "143": select69, - "1430": select1322, - "14300": msg16714, - "14301": msg16715, - "14302": msg16716, - "14303": msg16717, - "14304": msg16718, - "14305": msg16719, - "14306": msg16720, - "14307": msg16721, - "14308": msg16722, - "14309": msg16723, - "1431": select1323, - "14310": msg16724, - "14311": msg16725, - "14312": msg16726, - "14313": msg16727, - "14314": msg16728, - "14315": msg16729, - "14316": msg16730, - "14317": msg16731, - "14318": msg16732, - "14319": msg16733, - "1432": select1324, - "14320": msg16734, - "14321": msg16735, - "14322": msg16736, - "14323": msg16737, - "14324": msg16738, - "14325": msg16739, - "14326": msg16740, - "14327": msg16741, - "14328": msg16742, - "14329": msg16743, - "1433": select1325, - "14330": msg16744, - "14331": msg16745, - "14332": msg16746, - "14333": msg16747, - "14334": msg16748, - "14335": msg16749, - "14336": msg16750, - "14337": msg16751, - "14338": msg16752, - "14339": msg16753, - "1434": select1326, - "14340": msg16754, - "14341": msg16755, - "14342": msg16756, - "14343": msg16757, - "14344": msg16758, - "14345": msg16759, - "14346": msg16760, - "14347": msg16761, - "14348": msg16762, - "14349": msg16763, - "1435": select1327, - "14350": msg16764, - "14351": msg16765, - "14352": msg16766, - "14353": msg16767, - "14354": msg16768, - "14355": msg16769, - "14356": msg16770, - "14357": msg16771, - "14358": msg16772, - "14359": msg16773, - "1436": select1328, - "14360": msg16774, - "14361": msg16775, - "14362": msg16776, - "14363": msg16777, - "14364": msg16778, - "14365": msg16779, - "14366": msg16780, - "14367": msg16781, - "14368": msg16782, - "14369": msg16783, - "1437": select1329, - "14370": msg16784, - "14371": msg16785, - "14372": msg16786, - "14373": msg16787, - "14374": msg16788, - "14375": msg16789, - "14376": msg16790, - "14377": msg16791, - "14378": msg16792, - "14379": msg16793, - "1438": select1330, - "14380": msg16794, - "14381": msg16795, - "14382": msg16796, - "14383": msg16797, - "14384": msg16798, - "14385": msg16799, - "14386": msg16800, - "14387": msg16801, - "14388": msg16802, - "14389": msg16803, - "1439": select1331, - "14390": msg16804, - "14391": msg16805, - "14392": msg16806, - "14393": msg16807, - "14394": msg16808, - "14395": msg16809, - "14396": msg16810, - "14397": msg16811, - "14398": msg16812, - "14399": msg16813, - "144": select70, - "1440": select1332, - "14400": msg16814, - "14401": msg16815, - "14402": msg16816, - "14403": msg16817, - "14404": msg16818, - "14405": msg16819, - "14406": msg16820, - "14407": msg16821, - "14408": msg16822, - "14409": msg16823, - "1441": select1333, - "14410": msg16824, - "14411": msg16825, - "14412": msg16826, - "14413": msg16827, - "14414": msg16828, - "14415": msg16829, - "14416": msg16830, - "14417": msg16831, - "14418": msg16832, - "14419": msg16833, - "1442": select1334, - "14420": msg16834, - "14421": msg16835, - "14422": msg16836, - "14423": msg16837, - "14424": msg16838, - "14425": msg16839, - "14426": msg16840, - "14427": msg16841, - "14428": msg16842, - "14429": msg16843, - "1443": select1335, - "14430": msg16844, - "14431": msg16845, - "14432": msg16846, - "14433": msg16847, - "14434": msg16848, - "14435": msg16849, - "14436": msg16850, - "14437": msg16851, - "14438": msg16852, - "14439": msg16853, - "1444": select1336, - "14440": msg16854, - "14441": msg16855, - "14442": msg16856, - "14443": msg16857, - "14444": msg16858, - "14445": msg16859, - "14446": msg16860, - "14447": msg16861, - "14448": msg16862, - "14449": msg16863, - "1445": select1337, - "14450": msg16864, - "14451": msg16865, - "14452": msg16866, - "14453": msg16867, - "14454": msg16868, - "14455": msg16869, - "14456": msg16870, - "14457": msg16871, - "14458": msg16872, - "14459": msg16873, - "1446": select1338, - "14460": msg16874, - "14461": msg16875, - "14462": msg16876, - "14463": msg16877, - "14464": msg16878, - "14465": msg16879, - "14466": msg16880, - "14467": msg16881, - "14468": msg16882, - "14469": msg16883, - "1447": select1339, - "14470": msg16884, - "14471": msg16885, - "14472": msg16886, - "14473": msg16887, - "14474": msg16888, - "14475": msg16889, - "14476": msg16890, - "14477": msg16891, - "14478": msg16892, - "14479": msg16893, - "1448": select1340, - "14480": msg16894, - "14481": msg16895, - "14482": msg16896, - "14483": msg16897, - "14484": msg16898, - "14485": msg16899, - "14486": msg16900, - "14487": msg16901, - "14488": msg16902, - "14489": msg16903, - "1449": select1341, - "14490": msg16904, - "14491": msg16905, - "14492": msg16906, - "14493": msg16907, - "14494": msg16908, - "14495": msg16909, - "14496": msg16910, - "14497": msg16911, - "14498": msg16912, - "14499": msg16913, - "145": select71, - "1450": select1342, - "14500": msg16914, - "14501": msg16915, - "14502": msg16916, - "14503": msg16917, - "14504": msg16918, - "14505": msg16919, - "14506": msg16920, - "14507": msg16921, - "14508": msg16922, - "14509": msg16923, - "1451": select1343, - "14510": msg16924, - "14511": msg16925, - "14512": msg16926, - "14513": msg16927, - "14514": msg16928, - "14515": msg16929, - "14516": msg16930, - "14517": msg16931, - "14518": msg16932, - "14519": msg16933, - "1452": select1344, - "14520": msg16934, - "14521": msg16935, - "14522": msg16936, - "14523": msg16937, - "14524": msg16938, - "14525": msg16939, - "14526": msg16940, - "14527": msg16941, - "14528": msg16942, - "14529": msg16943, - "1453": select1345, - "14530": msg16944, - "14531": msg16945, - "14532": msg16946, - "14533": msg16947, - "14534": msg16948, - "14535": msg16949, - "14536": msg16950, - "14537": msg16951, - "14538": msg16952, - "14539": msg16953, - "1454": select1346, - "14540": msg16954, - "14541": msg16955, - "14542": msg16956, - "14543": msg16957, - "14544": msg16958, - "14545": msg16959, - "14546": msg16960, - "14547": msg16961, - "14548": msg16962, - "14549": msg16963, - "1455": select1347, - "14550": msg16964, - "14551": msg16965, - "14552": msg16966, - "14553": msg16967, - "14554": msg16968, - "14555": msg16969, - "14556": msg16970, - "14557": msg16971, - "14558": msg16972, - "14559": msg16973, - "1456": select1348, - "14560": msg16974, - "14561": msg16975, - "14562": msg16976, - "14563": msg16977, - "14564": msg16978, - "14565": msg16979, - "14566": msg16980, - "14567": msg16981, - "14568": msg16982, - "14569": msg16983, - "1457": select1349, - "14570": msg16984, - "14571": msg16985, - "14572": msg16986, - "14573": msg16987, - "14574": msg16988, - "14575": msg16989, - "14576": msg16990, - "14577": msg16991, - "14578": msg16992, - "14579": msg16993, - "1458": select1350, - "14580": msg16994, - "14581": msg16995, - "14582": msg16996, - "14583": msg16997, - "14584": msg16998, - "14585": msg16999, - "14586": msg17000, - "14587": msg17001, - "14588": msg17002, - "14589": msg17003, - "1459": select1351, - "14590": msg17004, - "14591": msg17005, - "14592": msg17006, - "14593": msg17007, - "14594": msg17008, - "14595": msg17009, - "14596": msg17010, - "14597": msg17011, - "14598": msg17012, - "14599": msg17013, - "146": select72, - "1460": select1352, - "14600": msg17014, - "14601": msg17015, - "14602": msg17016, - "14603": msg17017, - "14604": msg17018, - "14605": msg17019, - "14606": msg17020, - "14607": msg17021, - "14608": msg17022, - "14609": msg17023, - "1461": select1353, - "14610": msg17024, - "14611": msg17025, - "14612": msg17026, - "14613": msg17027, - "14614": msg17028, - "14615": msg17029, - "14616": msg17030, - "14617": msg17031, - "14618": msg17032, - "14619": msg17033, - "1462": select1354, - "14620": msg17034, - "14621": msg17035, - "14622": msg17036, - "14623": msg17037, - "14624": msg17038, - "14625": msg17039, - "14626": msg17040, - "14627": msg17041, - "14628": msg17042, - "14629": msg17043, - "1463": select1355, - "14630": msg17044, - "14631": msg17045, - "14632": msg17046, - "14633": msg17047, - "14634": msg17048, - "14635": msg17049, - "14636": msg17050, - "14637": msg17051, - "14638": msg17052, - "14639": msg17053, - "1464": select1356, - "14640": msg17054, - "14641": msg17055, - "14642": msg17056, - "14643": msg17057, - "14644": msg17058, - "14645": msg17059, - "14646": msg17060, - "14647": msg17061, - "14648": msg17062, - "14649": msg17063, - "1465": select1357, - "14650": msg17064, - "14651": msg17065, - "14652": msg17066, - "14653": msg17067, - "14654": msg17068, - "14655": msg17069, - "14656": msg17070, - "14657": msg17071, - "1466": select1358, - "14661": msg17072, - "14662": msg17073, - "14663": msg17074, - "14664": msg17075, - "14665": msg17076, - "14666": msg17077, - "14667": msg17078, - "14668": msg17079, - "14669": msg17080, - "1467": select1359, - "14670": msg17081, - "14671": msg17082, - "14672": msg17083, - "14673": msg17084, - "14674": msg17085, - "14675": msg17086, - "14676": msg17087, - "14677": msg17088, - "14678": msg17089, - "14679": msg17090, - "1468": select1360, - "14680": msg17091, - "14681": msg17092, - "14682": msg17093, - "14683": msg17094, - "14684": msg17095, - "14685": msg17096, - "14686": msg17097, - "14687": msg17098, - "14688": msg17099, - "14689": msg17100, - "1469": select1361, - "14690": msg17101, - "14691": msg17102, - "14692": msg17103, - "14693": msg17104, - "14694": msg17105, - "14695": msg17106, - "14696": msg17107, - "14697": msg17108, - "14698": msg17109, - "14699": msg17110, - "147": select73, - "1470": select1362, - "14700": msg17111, - "14701": msg17112, - "14702": msg17113, - "14703": msg17114, - "14704": msg17115, - "14705": msg17116, - "14706": msg17117, - "14707": msg17118, - "14708": msg17119, - "14709": msg17120, - "1471": select1363, - "14710": msg17121, - "14711": msg17122, - "14712": msg17123, - "14713": msg17124, - "14714": msg17125, - "14715": msg17126, - "14716": msg17127, - "14717": msg17128, - "14718": msg17129, - "14719": msg17130, - "1472": select1364, - "14720": msg17131, - "14721": msg17132, - "14722": msg17133, - "14723": msg17134, - "14724": msg17135, - "14725": msg17136, - "14726": msg17137, - "14727": msg17138, - "14728": msg17139, - "14729": msg17140, - "1473": select1365, - "14730": msg17141, - "14731": msg17142, - "14732": msg17143, - "14733": msg17144, - "14734": msg17145, - "14735": msg17146, - "14736": msg17147, - "14737": msg17148, - "14738": msg17149, - "14739": msg17150, - "1474": select1366, - "14740": msg17151, - "14741": msg17152, - "14742": msg17153, - "14743": msg17154, - "14744": msg17155, - "14745": msg17156, - "14746": msg17157, - "14747": msg17158, - "14748": msg17159, - "14749": msg17160, - "1475": select1367, - "14750": msg17161, - "14751": msg17162, - "14752": msg17163, - "14753": msg17164, - "14754": msg17165, - "14755": msg17166, - "14756": msg17167, - "14757": msg17168, - "14758": msg17169, - "14759": msg17170, - "1476": select1368, - "14760": msg17171, - "14761": msg17172, - "14762": msg17173, - "14763": msg17174, - "14764": msg17175, - "14765": msg17176, - "14766": msg17177, - "14767": msg17178, - "14768": msg17179, - "14769": msg17180, - "1477": select1369, - "14770": msg17181, - "14771": msg17182, - "14772": msg17183, - "14773": msg17184, - "14774": msg17185, - "14775": msg17186, - "14776": msg17187, - "14777": msg17188, - "14778": msg17189, - "14779": msg17190, - "1478": select1370, - "14780": msg17191, - "14781": msg17192, - "14782": msg17193, - "14783": msg17194, - "14784": msg17195, - "14785": msg17196, - "14786": msg17197, - "14787": msg17198, - "14788": msg17199, - "14789": msg17200, - "1479": select1371, - "14790": msg17201, - "14791": msg17202, - "14792": msg17203, - "14793": msg17204, - "14794": msg17205, - "14795": msg17206, - "14796": msg17207, - "14797": msg17208, - "14798": msg17209, - "14799": msg17210, - "148": select74, - "1480": select1372, - "14800": msg17211, - "14801": msg17212, - "14802": msg17213, - "14803": msg17214, - "14804": msg17215, - "14805": msg17216, - "14806": msg17217, - "14807": msg17218, - "14808": msg17219, - "14809": msg17220, - "1481": select1373, - "14810": msg17221, - "14811": msg17222, - "14812": msg17223, - "14813": msg17224, - "14814": msg17225, - "14815": msg17226, - "14816": msg17227, - "14817": msg17228, - "14818": msg17229, - "14819": msg17230, - "1482": select1374, - "14820": msg17231, - "14821": msg17232, - "14822": msg17233, - "14823": msg17234, - "14824": msg17235, - "14825": msg17236, - "14826": msg17237, - "14827": msg17238, - "14828": msg17239, - "14829": msg17240, - "1483": select1375, - "14830": msg17241, - "14831": msg17242, - "14832": msg17243, - "14833": msg17244, - "14834": msg17245, - "14835": msg17246, - "14836": msg17247, - "14837": msg17248, - "14838": msg17249, - "14839": msg17250, - "1484": select1376, - "14840": msg17251, - "14841": msg17252, - "14842": msg17253, - "14843": msg17254, - "14844": msg17255, - "14845": msg17256, - "14846": msg17257, - "14847": msg17258, - "14848": msg17259, - "14849": msg17260, - "1485": select1377, - "14850": msg17261, - "14851": msg17262, - "14852": msg17263, - "14853": msg17264, - "14854": msg17265, - "14855": msg17266, - "14856": msg17267, - "14857": msg17268, - "14858": msg17269, - "14859": msg17270, - "1486": select1378, - "14860": msg17271, - "14861": msg17272, - "14862": msg17273, - "14863": msg17274, - "14864": msg17275, - "14865": msg17276, - "14866": msg17277, - "14867": msg17278, - "14868": msg17279, - "14869": msg17280, - "1487": select1379, - "14870": msg17281, - "14871": msg17282, - "1488": select1380, - "1489": select1381, - "14896": msg17283, - "14897": msg17284, - "14898": msg17285, - "14899": msg17286, - "149": select75, - "1490": select1382, - "14900": msg17287, - "1491": select1383, - "1492": select1384, - "1493": select1385, - "1494": select1386, - "1495": select1387, - "1496": select1388, - "1497": select1389, - "1498": select1390, - "14986": msg17288, - "14987": msg17289, - "14988": msg17290, - "14989": msg17291, - "1499": select1391, - "14990": msg17292, - "14991": msg17293, - "14992": msg17294, - "14993": msg17295, - "14994": msg17296, - "14995": msg17297, - "14996": msg17298, - "14997": msg17299, - "14998": msg17300, - "14999": msg17301, - "15": select16, - "150": select76, - "1500": select1392, - "15000": msg17302, - "15001": msg17303, - "15002": msg17304, - "15003": msg17305, - "15004": msg17306, - "15005": msg17307, - "15006": msg17308, - "15007": msg17309, - "15008": msg17310, - "15009": msg17311, - "1501": select1393, - "15010": msg17312, - "15011": msg17313, - "15012": msg17314, - "15013": msg17315, - "15014": msg17316, - "15015": msg17317, - "15016": msg17318, - "15017": msg17319, - "15018": msg17320, - "15019": msg17321, - "1502": select1394, - "15020": msg17322, - "15021": msg17323, - "15022": msg17324, - "15023": msg17325, - "15024": msg17326, - "15025": msg17327, - "15026": msg17328, - "15027": msg17329, - "15028": msg17330, - "15029": msg17331, - "1503": select1395, - "15030": msg17332, - "15031": msg17333, - "15032": msg17334, - "15033": msg17335, - "15034": msg17336, - "15035": msg17337, - "15036": msg17338, - "15037": msg17339, - "15038": msg17340, - "15039": msg17341, - "1504": select1396, - "15040": msg17342, - "15041": msg17343, - "15042": msg17344, - "15043": msg17345, - "15044": msg17346, - "15045": msg17347, - "15046": msg17348, - "15047": msg17349, - "15048": msg17350, - "15049": msg17351, - "1505": select1397, - "15050": msg17352, - "15051": msg17353, - "15052": msg17354, - "15053": msg17355, - "15054": msg17356, - "15055": msg17357, - "15056": msg17358, - "15057": msg17359, - "15058": msg17360, - "15059": msg17361, - "1506": select1398, - "15060": msg17362, - "15061": msg17363, - "15062": msg17364, - "15063": msg17365, - "15064": msg17366, - "15065": msg17367, - "15066": msg17368, - "15067": msg17369, - "15068": msg17370, - "15069": msg17371, - "1507": select1399, - "15070": msg17372, - "15071": msg17373, - "15072": msg17374, - "15073": msg17375, - "15074": msg17376, - "15075": msg17377, - "15076": msg17378, - "15077": msg17379, - "15078": msg17380, - "15079": msg17381, - "1508": select1400, - "15080": msg17382, - "15081": msg17383, - "15082": msg17384, - "15083": msg17385, - "15084": msg17386, - "15085": msg17387, - "15086": msg17388, - "15087": msg17389, - "15088": msg17390, - "15089": msg17391, - "1509": select1401, - "15090": msg17392, - "15091": msg17393, - "15092": msg17394, - "15093": msg17395, - "15094": msg17396, - "15095": msg17397, - "15096": msg17398, - "15097": msg17399, - "15098": msg17400, - "15099": msg17401, - "151": select77, - "1510": select1402, - "15100": msg17402, - "15101": msg17403, - "15102": msg17404, - "15103": msg17405, - "15104": msg17406, - "15105": msg17407, - "15106": msg17408, - "15107": msg17409, - "15108": msg17410, - "15109": msg17411, - "1511": select1403, - "15110": msg17412, - "15111": msg17413, - "15112": msg17414, - "15113": msg17415, - "15114": msg17416, - "15115": msg17417, - "15116": msg17418, - "15117": msg17419, - "15118": msg17420, - "15119": msg17421, - "1512": select1404, - "15120": msg17422, - "15121": msg17423, - "15122": msg17424, - "15123": msg17425, - "15124": msg17426, - "15125": msg17427, - "15126": msg17428, - "15127": msg17429, - "15128": msg17430, - "15129": msg17431, - "1513": select1405, - "15130": msg17432, - "15131": msg17433, - "15132": msg17434, - "15133": msg17435, - "15134": msg17436, - "15135": msg17437, - "15136": msg17438, - "15137": msg17439, - "15138": msg17440, - "15139": msg17441, - "1514": select1406, - "15140": msg17442, - "15141": msg17443, - "15142": msg17444, - "15143": msg17445, - "15144": msg17446, - "15145": msg17447, - "15146": msg17448, - "15147": msg17449, - "15148": msg17450, - "15149": msg17451, - "1515": select1407, - "15150": msg17452, - "15151": msg17453, - "15152": msg17454, - "15153": msg17455, - "15154": msg17456, - "15155": msg17457, - "15156": msg17458, - "15157": msg17459, - "15158": msg17460, - "15159": msg17461, - "1516": select1408, - "15160": msg17462, - "15161": msg17463, - "15162": msg17464, - "15163": msg17465, - "15164": msg17466, - "15165": msg17467, - "15166": msg17468, - "15167": msg17469, - "15168": msg17470, - "15169": msg17471, - "1517": select1409, - "15170": msg17472, - "15171": msg17473, - "15172": msg17474, - "15173": msg17475, - "15174": msg17476, - "15175": msg17477, - "15176": msg17478, - "15177": msg17479, - "15178": msg17480, - "15179": msg17481, - "1518": select1410, - "15180": msg17482, - "15181": msg17483, - "15182": msg17484, - "15183": msg17485, - "15184": msg17486, - "15185": msg17487, - "15186": msg17488, - "15187": msg17489, - "15188": msg17490, - "15189": msg17491, - "1519": select1411, - "15190": msg17492, - "15191": msg17493, - "15192": msg17494, - "15193": msg17495, - "15194": msg17496, - "15195": msg17497, - "15196": msg17498, - "15197": msg17499, - "15198": msg17500, - "15199": msg17501, - "152": select78, - "1520": select1412, - "15200": msg17502, - "15201": msg17503, - "15202": msg17504, - "15203": msg17505, - "15204": msg17506, - "15205": msg17507, - "15206": msg17508, - "15207": msg17509, - "15208": msg17510, - "15209": msg17511, - "1521": select1413, - "15210": msg17512, - "15211": msg17513, - "15212": msg17514, - "15213": msg17515, - "15214": msg17516, - "15215": msg17517, - "15216": msg17518, - "15217": msg17519, - "15218": msg17520, - "15219": msg17521, - "1522": select1414, - "15220": msg17522, - "15221": msg17523, - "15222": msg17524, - "15223": msg17525, - "15224": msg17526, - "15225": msg17527, - "15226": msg17528, - "15227": msg17529, - "15228": msg17530, - "15229": msg17531, - "1523": select1415, - "15230": msg17532, - "15231": msg17533, - "15232": msg17534, - "15233": msg17535, - "15234": msg17536, - "15235": msg17537, - "15236": msg17538, - "15237": msg17539, - "15238": msg17540, - "15239": msg17541, - "1524": select1416, - "15240": msg17542, - "15241": msg17543, - "15242": msg17544, - "15243": msg17545, - "15244": msg17546, - "15245": msg17547, - "15246": msg17548, - "15247": msg17549, - "15248": msg17550, - "15249": msg17551, - "1525": select1417, - "15250": msg17552, - "15251": msg17553, - "15252": msg17554, - "15253": msg17555, - "15254": msg17556, - "15255": msg17557, - "15256": msg17558, - "15257": msg17559, - "15258": msg17560, - "15259": msg17561, - "1526": select1418, - "15260": msg17562, - "15261": msg17563, - "15262": msg17564, - "15263": msg17565, - "15264": msg17566, - "15265": msg17567, - "15266": msg17568, - "15267": msg17569, - "15268": msg17570, - "15269": msg17571, - "1527": select1419, - "15270": msg17572, - "15271": msg17573, - "15272": msg17574, - "15273": msg17575, - "15274": msg17576, - "15275": msg17577, - "15276": msg17578, - "15277": msg17579, - "15278": msg17580, - "15279": msg17581, - "1528": select1420, - "15280": msg17582, - "15281": msg17583, - "15282": msg17584, - "15283": msg17585, - "15284": msg17586, - "15285": msg17587, - "15286": msg17588, - "15287": msg17589, - "15288": msg17590, - "15289": msg17591, - "1529": select1421, - "15290": msg17592, - "15291": msg17593, - "15292": msg17594, - "15293": msg17595, - "15294": msg17596, - "15295": msg17597, - "15296": msg17598, - "15297": msg17599, - "15298": msg17600, - "15299": msg17601, - "153": select79, - "1530": select1422, - "15300": msg17602, - "15301": msg17603, - "15302": msg17604, - "15303": msg17605, - "15304": msg17606, - "15305": msg17607, - "15306": msg17608, - "15307": msg17609, - "15308": msg17610, - "15309": msg17611, - "1531": select1423, - "15310": msg17612, - "15311": msg17613, - "15312": msg17614, - "15313": msg17615, - "15314": msg17616, - "15315": msg17617, - "15316": msg17618, - "15317": msg17619, - "15318": msg17620, - "15319": msg17621, - "1532": select1424, - "15320": msg17622, - "15321": msg17623, - "15322": msg17624, - "15323": msg17625, - "15324": msg17626, - "15325": msg17627, - "15326": msg17628, - "15327": msg17629, - "15328": msg17630, - "15329": msg17631, - "1533": select1425, - "15330": msg17632, - "15331": msg17633, - "15332": msg17634, - "15333": msg17635, - "15334": msg17636, - "15335": msg17637, - "15336": msg17638, - "15337": msg17639, - "15338": msg17640, - "15339": msg17641, - "1534": select1426, - "15340": msg17642, - "15341": msg17643, - "15342": msg17644, - "15343": msg17645, - "15344": msg17646, - "15345": msg17647, - "15346": msg17648, - "15347": msg17649, - "15348": msg17650, - "15349": msg17651, - "1535": select1427, - "15350": msg17652, - "15351": msg17653, - "15352": msg17654, - "15353": msg17655, - "15354": msg17656, - "15355": msg17657, - "15356": msg17658, - "15357": msg17659, - "15358": msg17660, - "15359": msg17661, - "1536": select1428, - "15360": msg17662, - "15361": msg17663, - "15362": msg17664, - "15363": msg17665, - "15364": msg17666, - "15365": msg17667, - "15366": msg17668, - "15367": msg17669, - "15368": msg17670, - "15369": msg17671, - "1537": select1429, - "15370": msg17672, - "15371": msg17673, - "15372": msg17674, - "15373": msg17675, - "15374": msg17676, - "15375": msg17677, - "15376": msg17678, - "15377": msg17679, - "15378": msg17680, - "15379": msg17681, - "1538": select1430, - "15380": msg17682, - "15381": msg17683, - "15382": msg17684, - "15383": msg17685, - "15384": msg17686, - "15385": msg17687, - "15386": msg17688, - "15387": msg17689, - "15388": msg17690, - "15389": msg17691, - "1539": select1431, - "15390": msg17692, - "15391": msg17693, - "15392": msg17694, - "15393": msg17695, - "15394": msg17696, - "15395": msg17697, - "15396": msg17698, - "15397": msg17699, - "15398": msg17700, - "15399": msg17701, - "154": select80, - "1540": select1432, - "15400": msg17702, - "15401": msg17703, - "15402": msg17704, - "15403": msg17705, - "15404": msg17706, - "15405": msg17707, - "15406": msg17708, - "15407": msg17709, - "15408": msg17710, - "15409": msg17711, - "1541": select1433, - "15410": msg17712, - "15411": msg17713, - "15412": msg17714, - "15413": msg17715, - "15414": msg17716, - "15415": msg17717, - "15416": msg17718, - "15417": msg17719, - "15418": msg17720, - "1542": select1434, - "15420": msg17721, - "15421": msg17722, - "15422": msg17723, - "15423": msg17724, - "15424": msg17725, - "15425": msg17726, - "15426": msg17727, - "15427": msg17728, - "15428": msg17729, - "15429": msg17730, - "1543": select1435, - "15430": msg17731, - "15431": msg17732, - "15432": msg17733, - "15433": msg17734, - "15434": msg17735, - "15435": msg17736, - "15436": msg17737, - "15437": msg17738, - "15438": msg17739, - "15439": msg17740, - "1544": select1436, - "15440": msg17741, - "15441": msg17742, - "15442": msg17743, - "15443": msg17744, - "15444": msg17745, - "15445": msg17746, - "15446": msg17747, - "15447": msg17748, - "15448": msg17749, - "15449": msg17750, - "1545": select1437, - "15450": msg17751, - "15451": msg17752, - "15452": msg17753, - "15453": msg17754, - "15454": msg17755, - "15455": msg17756, - "15456": msg17757, - "15457": msg17758, - "15458": msg17759, - "15459": msg17760, - "1546": select1438, - "15460": msg17761, - "15461": msg17762, - "15462": msg17763, - "15463": msg17764, - "15464": msg17765, - "15465": msg17766, - "15466": msg17767, - "15467": msg17768, - "15468": msg17769, - "15469": msg17770, - "1547": select1439, - "15470": msg17771, - "15471": msg17772, - "15472": msg17773, - "15473": msg17774, - "15474": msg17775, - "15475": msg17776, - "15476": msg17777, - "15477": msg17778, - "15478": msg17779, - "15479": msg17780, - "1548": select1440, - "15480": msg17781, - "15481": msg17782, - "15482": msg17783, - "15483": msg17784, - "15484": msg17785, - "15485": msg17786, - "15486": msg17787, - "15487": msg17788, - "15488": msg17789, - "15489": msg17790, - "1549": select1441, - "15490": msg17791, - "15491": msg17792, - "15492": msg17793, - "15493": msg17794, - "15494": msg17795, - "15495": msg17796, - "15496": msg17797, - "15497": msg17798, - "15498": msg17799, - "15499": msg17800, - "155": select81, - "1550": select1442, - "15500": msg17801, - "15501": msg17802, - "15502": msg17803, - "15503": msg17804, - "15504": msg17805, - "15505": msg17806, - "15506": msg17807, - "15507": msg17808, - "15508": msg17809, - "15509": msg17810, - "1551": select1443, - "15510": msg17811, - "15511": msg17812, - "15512": msg17813, - "15513": msg17814, - "15514": msg17815, - "15515": msg17816, - "15516": msg17817, - "15517": msg17818, - "15518": msg17819, - "15519": msg17820, - "1552": select1444, - "15520": msg17821, - "15521": msg17822, - "15522": msg17823, - "15523": msg17824, - "15524": msg17825, - "15525": msg17826, - "15526": msg17827, - "15527": msg17828, - "15528": msg17829, - "15529": msg17830, - "1553": select1445, - "15530": msg17831, - "15531": msg17832, - "15532": msg17833, - "15533": msg17834, - "15534": msg17835, - "15535": msg17836, - "15536": msg17837, - "15537": msg17838, - "15538": msg17839, - "15539": msg17840, - "1554": select1446, - "15540": msg17841, - "15541": msg17842, - "15542": msg17843, - "15543": msg17844, - "15544": msg17845, - "15545": msg17846, - "15546": msg17847, - "15547": msg17848, - "15548": msg17849, - "15549": msg17850, - "1555": select1447, - "15550": msg17851, - "15551": msg17852, - "15552": msg17853, - "15553": msg17854, - "15554": msg17855, - "15555": msg17856, - "15556": msg17857, - "15557": msg17858, - "15558": msg17859, - "15559": msg17860, - "1556": select1448, - "15560": msg17861, - "15561": msg17862, - "15562": msg17863, - "15563": msg17864, - "15564": msg17865, - "15565": msg17866, - "15566": msg17867, - "15567": msg17868, - "15568": msg17869, - "15569": msg17870, - "1557": select1449, - "15570": msg17871, - "15571": msg17872, - "15572": msg17873, - "15573": msg17874, - "15574": msg17875, - "15575": msg17876, - "15576": msg17877, - "15577": msg17878, - "15578": msg17879, - "15579": msg17880, - "1558": select1450, - "15580": msg17881, - "15581": msg17882, - "15582": msg17883, - "15583": msg17884, - "15584": msg17885, - "15585": msg17886, - "15586": msg17887, - "15587": msg17888, - "15588": msg17889, - "15589": msg17890, - "1559": select1451, - "15590": msg17891, - "15591": msg17892, - "15592": msg17893, - "15593": msg17894, - "15594": msg17895, - "15595": msg17896, - "15596": msg17897, - "15597": msg17898, - "15598": msg17899, - "15599": msg17900, - "156": select82, - "1560": select1452, - "15600": msg17901, - "15601": msg17902, - "15602": msg17903, - "15603": msg17904, - "15604": msg17905, - "15605": msg17906, - "15606": msg17907, - "15607": msg17908, - "15608": msg17909, - "15609": msg17910, - "1561": select1453, - "15610": msg17911, - "15611": msg17912, - "15612": msg17913, - "15613": msg17914, - "15614": msg17915, - "15615": msg17916, - "15616": msg17917, - "15617": msg17918, - "15618": msg17919, - "15619": msg17920, - "1562": select1454, - "15620": msg17921, - "15621": msg17922, - "15622": msg17923, - "15623": msg17924, - "15624": msg17925, - "15625": msg17926, - "15626": msg17927, - "15627": msg17928, - "15628": msg17929, - "15629": msg17930, - "1563": select1455, - "15630": msg17931, - "15631": msg17932, - "15632": msg17933, - "15633": msg17934, - "15634": msg17935, - "15635": msg17936, - "15636": msg17937, - "15637": msg17938, - "15638": msg17939, - "15639": msg17940, - "1564": select1456, - "15640": msg17941, - "15641": msg17942, - "15642": msg17943, - "15643": msg17944, - "15644": msg17945, - "15645": msg17946, - "15646": msg17947, - "15647": msg17948, - "15648": msg17949, - "15649": msg17950, - "1565": select1457, - "15650": msg17951, - "15651": msg17952, - "15652": msg17953, - "15653": msg17954, - "15654": msg17955, - "15655": msg17956, - "15656": msg17957, - "15657": msg17958, - "15658": msg17959, - "15659": msg17960, - "1566": select1458, - "15660": msg17961, - "15661": msg17962, - "15662": msg17963, - "15663": msg17964, - "15664": msg17965, - "15665": msg17966, - "15666": msg17967, - "15667": msg17968, - "15668": msg17969, - "15669": msg17970, - "1567": select1459, - "15670": msg17971, - "15671": msg17972, - "15672": msg17973, - "15673": msg17974, - "15674": msg17975, - "15675": msg17976, - "15676": msg17977, - "15677": msg17978, - "15678": msg17979, - "15679": msg17980, - "1568": select1460, - "15680": msg17981, - "15681": msg17982, - "15682": msg17983, - "15683": msg17984, - "15684": msg17985, - "15685": msg17986, - "15686": msg17987, - "15687": msg17988, - "15688": msg17989, - "15689": msg17990, - "1569": select1461, - "15690": msg17991, - "15691": msg17992, - "15692": msg17993, - "15693": msg17994, - "15694": msg17995, - "15695": msg17996, - "15696": msg17997, - "15697": msg17998, - "15698": msg17999, - "15699": msg18000, - "157": select83, - "1570": select1462, - "15700": msg18001, - "15701": msg18002, - "15702": msg18003, - "15703": msg18004, - "15704": msg18005, - "15705": msg18006, - "15706": msg18007, - "15707": msg18008, - "15708": msg18009, - "15709": msg18010, - "1571": select1463, - "15710": msg18011, - "15711": msg18012, - "15712": msg18013, - "15713": msg18014, - "15714": msg18015, - "15715": msg18016, - "15716": msg18017, - "15717": msg18018, - "15718": msg18019, - "15719": msg18020, - "1572": select1464, - "15720": msg18021, - "15721": msg18022, - "15722": msg18023, - "15723": msg18024, - "15724": msg18025, - "15725": msg18026, - "15726": msg18027, - "15727": msg18028, - "15728": msg18029, - "15729": msg18030, - "1573": select1465, - "15730": msg18031, - "15731": msg18032, - "15732": msg18033, - "15733": msg18034, - "15734": msg18035, - "1574": select1466, - "1575": select1467, - "1576": select1468, - "1577": select1469, - "1578": select1470, - "1579": select1471, - "158": select84, - "1580": select1472, - "1581": select1473, - "1582": select1474, - "1583": select1475, - "1584": select1476, - "15847": msg18036, - "15848": msg18037, - "15849": msg18038, - "1585": select1477, - "15850": msg18039, - "15851": msg18040, - "15852": msg18041, - "15853": msg18042, - "15854": msg18043, - "15855": msg18044, - "15856": msg18045, - "15857": msg18046, - "15858": msg18047, - "15859": msg18048, - "1586": select1478, - "15860": msg18049, - "15861": msg18050, - "15862": msg18051, - "15863": msg18052, - "15864": msg18053, - "15865": msg18054, - "15866": msg18055, - "15867": msg18056, - "15868": msg18057, - "15869": msg18058, - "1587": select1479, - "15870": msg18059, - "15871": msg18060, - "15872": msg18061, - "15873": msg18062, - "15874": msg18063, - "15875": msg18064, - "15876": msg18065, - "15877": msg18066, - "15878": msg18067, - "15879": msg18068, - "1588": select1480, - "15880": msg18069, - "15881": msg18070, - "15882": msg18071, - "15883": msg18072, - "15884": msg18073, - "15885": msg18074, - "15886": msg18075, - "15887": msg18076, - "15888": msg18077, - "15889": msg18078, - "1589": select1481, - "15890": msg18079, - "15891": msg18080, - "15892": msg18081, - "15893": msg18082, - "15894": msg18083, - "15895": msg18084, - "15896": msg18085, - "15897": msg18086, - "15898": msg18087, - "15899": msg18088, - "159": select85, - "1590": select1482, - "15900": msg18089, - "15901": msg18090, - "15902": msg18091, - "15903": msg18092, - "15904": msg18093, - "15905": msg18094, - "15906": msg18095, - "15907": msg18096, - "15908": msg18097, - "15909": msg18098, - "1591": select1483, - "15910": msg18099, - "15911": msg18100, - "15912": msg18101, - "15913": msg18102, - "15914": msg18103, - "15915": msg18104, - "15916": msg18105, - "15917": msg18106, - "15918": msg18107, - "15919": msg18108, - "1592": select1484, - "15920": msg18109, - "15921": msg18110, - "15922": msg18111, - "15923": msg18112, - "15924": msg18113, - "15925": msg18114, - "15926": msg18115, - "15927": msg18116, - "15928": msg18117, - "15929": msg18118, - "1593": select1485, - "15930": msg18119, - "15931": msg18120, - "15932": msg18121, - "15933": msg18122, - "15934": msg18123, - "15935": msg18124, - "15936": msg18125, - "15937": msg18126, - "15938": msg18127, - "15939": msg18128, - "1594": select1486, - "15940": msg18129, - "15941": msg18130, - "15942": msg18131, - "15943": msg18132, - "15944": msg18133, - "15945": msg18134, - "15946": msg18135, - "15947": msg18136, - "15948": msg18137, - "15949": msg18138, - "1595": select1487, - "15950": msg18139, - "15951": msg18140, - "15952": msg18141, - "15953": msg18142, - "15954": msg18143, - "15955": msg18144, - "15956": msg18145, - "15957": msg18146, - "15958": msg18147, - "15959": msg18148, - "15960": msg18149, - "15961": msg18150, - "15962": msg18151, - "15963": msg18152, - "15964": msg18153, - "15965": msg18154, - "15966": msg18155, - "15967": msg18156, - "15968": msg18157, - "15969": msg18158, - "1597": select1488, - "15970": msg18159, - "15971": msg18160, - "15972": msg18161, - "15973": msg18162, - "15974": msg18163, - "15975": msg18164, - "15976": msg18165, - "15977": msg18166, - "15978": msg18167, - "15979": msg18168, - "1598": select1489, - "15980": msg18169, - "15981": msg18170, - "15982": msg18171, - "15983": msg18172, - "15984": msg18173, - "15985": msg18174, - "15986": msg18175, - "15987": msg18176, - "15988": msg18177, - "15989": msg18178, - "1599": select1490, - "15990": msg18179, - "15991": msg18180, - "15992": msg18181, - "15993": msg18182, - "15994": msg18183, - "15995": msg18184, - "15996": msg18185, - "15997": msg18186, - "15998": msg18187, - "15999": msg18188, - "16": select17, - "160": select86, - "1600": select1491, - "16000": msg18189, - "16001": msg18190, - "16002": msg18191, - "16003": msg18192, - "16004": msg18193, - "16005": msg18194, - "16006": msg18195, - "16007": msg18196, - "16008": msg18197, - "16009": msg18198, - "1601": select1492, - "16010": msg18199, - "16011": msg18200, - "16012": msg18201, - "16013": msg18202, - "16014": msg18203, - "16015": msg18204, - "16016": msg18205, - "16017": msg18206, - "16018": msg18207, - "16019": msg18208, - "1602": select1493, - "16020": msg18209, - "16021": msg18210, - "16022": msg18211, - "16023": msg18212, - "16024": msg18213, - "16025": msg18214, - "16026": msg18215, - "16027": msg18216, - "16028": msg18217, - "16029": msg18218, - "1603": select1494, - "16030": msg18219, - "16031": msg18220, - "16032": msg18221, - "16033": msg18222, - "16034": msg18223, - "16035": msg18224, - "16036": msg18225, - "16037": msg18226, - "16038": msg18227, - "16039": msg18228, - "1604": select1495, - "16040": msg18229, - "16041": msg18230, - "16042": msg18231, - "16043": msg18232, - "16044": msg18233, - "16045": msg18234, - "16046": msg18235, - "16047": msg18236, - "16048": msg18237, - "16049": msg18238, - "1605": select1496, - "16050": msg18239, - "16051": msg18240, - "16052": msg18241, - "16053": msg18242, - "16054": msg18243, - "16055": msg18244, - "16056": msg18245, - "16057": msg18246, - "16058": msg18247, - "16059": msg18248, - "1606": select1497, - "16060": msg18249, - "16061": msg18250, - "16062": msg18251, - "16063": msg18252, - "16064": msg18253, - "16065": msg18254, - "16066": msg18255, - "16067": msg18256, - "16068": msg18257, - "16069": msg18258, - "1607": select1498, - "16070": msg18259, - "16071": msg18260, - "16072": msg18261, - "16073": msg18262, - "16074": msg18263, - "16075": msg18264, - "16076": msg18265, - "16077": msg18266, - "16078": msg18267, - "16079": msg18268, - "1608": select1499, - "16080": msg18269, - "16081": msg18270, - "16082": msg18271, - "16083": msg18272, - "16084": msg18273, - "16085": msg18274, - "16086": msg18275, - "16087": msg18276, - "16089": msg18277, - "1609": select1500, - "16090": msg18278, - "16091": msg18279, - "16092": msg18280, - "16093": msg18281, - "16094": msg18282, - "16095": msg18283, - "16096": msg18284, - "16097": msg18285, - "16098": msg18286, - "16099": msg18287, - "161": select87, - "1610": select1501, - "16100": msg18288, - "16101": msg18289, - "16102": msg18290, - "16103": msg18291, - "16104": msg18292, - "16105": msg18293, - "16106": msg18294, - "16107": msg18295, - "16108": msg18296, - "16109": msg18297, - "1611": select1502, - "16110": msg18298, - "16111": msg18299, - "16112": msg18300, - "16113": msg18301, - "16114": msg18302, - "16115": msg18303, - "16116": msg18304, - "16117": msg18305, - "16118": msg18306, - "16119": msg18307, - "1612": select1503, - "16120": msg18308, - "16121": msg18309, - "16122": msg18310, - "16123": msg18311, - "16124": msg18312, - "16125": msg18313, - "16126": msg18314, - "16127": msg18315, - "16128": msg18316, - "16129": msg18317, - "1613": select1504, - "16130": msg18318, - "16131": msg18319, - "16132": msg18320, - "16133": msg18321, - "16134": msg18322, - "16135": msg18323, - "16136": msg18324, - "16137": msg18325, - "16138": msg18326, - "16139": msg18327, - "1614": select1505, - "16140": msg18328, - "16141": msg18329, - "16142": msg18330, - "16143": msg18331, - "16144": msg18332, - "16145": msg18333, - "16146": msg18334, - "16147": msg18335, - "16148": msg18336, - "16149": msg18337, - "1615": select1506, - "16150": msg18338, - "16151": msg18339, - "16152": msg18340, - "16153": msg18341, - "16154": msg18342, - "16155": msg18343, - "16156": msg18344, - "16157": msg18345, - "16158": msg18346, - "16159": msg18347, - "1616": select1507, - "16160": msg18348, - "16161": msg18349, - "16162": msg18350, - "16163": msg18351, - "16164": msg18352, - "16165": msg18353, - "16166": msg18354, - "16167": msg18355, - "16168": msg18356, - "16169": msg18357, - "1617": select1508, - "16170": msg18358, - "16171": msg18359, - "16172": msg18360, - "16173": msg18361, - "16174": msg18362, - "16175": msg18363, - "16176": msg18364, - "16177": msg18365, - "16178": msg18366, - "16179": msg18367, - "1618": select1509, - "16180": msg18368, - "16181": msg18369, - "16182": msg18370, - "16183": msg18371, - "16184": msg18372, - "16185": msg18373, - "16186": msg18374, - "16187": msg18375, - "16188": msg18376, - "16189": msg18377, - "1619": select1510, - "16190": msg18378, - "16191": msg18379, - "16192": msg18380, - "16193": msg18381, - "16194": msg18382, - "16195": msg18383, - "16196": msg18384, - "16197": msg18385, - "16198": msg18386, - "16199": msg18387, - "162": select88, - "1620": select1511, - "16200": msg18388, - "16201": msg18389, - "16202": msg18390, - "16203": msg18391, - "16204": msg18392, - "16205": msg18393, - "16206": msg18394, - "16207": msg18395, - "16208": msg18396, - "16209": msg18397, - "1621": select1512, - "16210": msg18398, - "16211": msg18399, - "16212": msg18400, - "16213": msg18401, - "16214": msg18402, - "16215": msg18403, - "16216": msg18404, - "16217": msg18405, - "16218": msg18406, - "16219": msg18407, - "1622": select1513, - "16220": msg18408, - "16221": msg18409, - "16222": msg18410, - "16223": msg18411, - "16224": msg18412, - "16225": msg18413, - "16226": msg18414, - "16227": msg18415, - "16228": msg18416, - "16229": msg18417, - "1623": select1514, - "16230": msg18418, - "16231": msg18419, - "16232": msg18420, - "16233": msg18421, - "16234": msg18422, - "16235": msg18423, - "16236": msg18424, - "16237": msg18425, - "16238": msg18426, - "16239": msg18427, - "1624": select1515, - "16240": msg18428, - "16241": msg18429, - "16242": msg18430, - "16243": msg18431, - "16244": msg18432, - "16245": msg18433, - "16246": msg18434, - "16247": msg18435, - "16248": msg18436, - "16249": msg18437, - "1625": select1516, - "16250": msg18438, - "16251": msg18439, - "16252": msg18440, - "16253": msg18441, - "16254": msg18442, - "16255": msg18443, - "16256": msg18444, - "16257": msg18445, - "16258": msg18446, - "16259": msg18447, - "1626": select1517, - "16260": msg18448, - "16261": msg18449, - "16262": msg18450, - "16263": msg18451, - "16264": msg18452, - "16265": msg18453, - "16266": msg18454, - "16267": msg18455, - "16268": msg18456, - "16269": msg18457, - "1627": select1518, - "16270": msg18458, - "16271": msg18459, - "16272": msg18460, - "16273": msg18461, - "16274": msg18462, - "16275": msg18463, - "16276": msg18464, - "16277": msg18465, - "16278": msg18466, - "16279": msg18467, - "1628": select1519, - "16280": msg18468, - "16281": msg18469, - "16282": msg18470, - "16283": msg18471, - "16284": msg18472, - "16285": msg18473, - "16286": msg18474, - "16287": msg18475, - "16288": msg18476, - "16289": msg18477, - "1629": select1520, - "16290": msg18478, - "16291": msg18479, - "16292": msg18480, - "16293": msg18481, - "16294": msg18482, - "16295": msg18483, - "16296": msg18484, - "16297": msg18485, - "16298": msg18486, - "16299": msg18487, - "163": select89, - "1630": select1521, - "16300": msg18488, - "16301": msg18489, - "16302": msg18490, - "16303": msg18491, - "16304": msg18492, - "16305": msg18493, - "16306": msg18494, - "16307": msg18495, - "16308": msg18496, - "16309": msg18497, - "1631": select1522, - "16310": msg18498, - "16311": msg18499, - "16312": msg18500, - "16313": msg18501, - "16314": msg18502, - "16315": msg18503, - "16316": msg18504, - "16317": msg18505, - "16318": msg18506, - "16319": msg18507, - "1632": select1523, - "16320": msg18508, - "16321": msg18509, - "16322": msg18510, - "16323": msg18511, - "16324": msg18512, - "16325": msg18513, - "16326": msg18514, - "16327": msg18515, - "16328": msg18516, - "16329": msg18517, - "1633": select1524, - "16330": msg18518, - "16331": msg18519, - "16332": msg18520, - "16333": msg18521, - "16334": msg18522, - "16335": msg18523, - "16336": msg18524, - "16337": msg18525, - "16338": msg18526, - "16339": msg18527, - "1634": select1525, - "16340": msg18528, - "16341": msg18529, - "16342": msg18530, - "16343": msg18531, - "16344": msg18532, - "16345": msg18533, - "16346": msg18534, - "16347": msg18535, - "16348": msg18536, - "16349": msg18537, - "1635": select1526, - "16350": msg18538, - "16351": msg18539, - "16352": msg18540, - "16353": msg18541, - "16354": msg18542, - "16355": msg18543, - "16356": msg18544, - "16357": msg18545, - "16358": msg18546, - "16359": msg18547, - "1636": select1527, - "16360": msg18548, - "16361": msg18549, - "16362": msg18550, - "16363": msg18551, - "16364": msg18552, - "16365": msg18553, - "16366": msg18554, - "16367": msg18555, - "16368": msg18556, - "16369": msg18557, - "1637": select1528, - "16370": msg18558, - "16371": msg18559, - "16372": msg18560, - "16373": msg18561, - "16374": msg18562, - "16375": msg18563, - "16376": msg18564, - "16377": msg18565, - "16378": msg18566, - "16379": msg18567, - "1638": select1529, - "16380": msg18568, - "16381": msg18569, - "16382": msg18570, - "16383": msg18571, - "16384": msg18572, - "16385": msg18573, - "16386": msg18574, - "16387": msg18575, - "16388": msg18576, - "16389": msg18577, - "1639": select1530, - "16390": msg18578, - "16391": msg18579, - "16392": msg18580, - "16393": msg18581, - "16394": msg18582, - "16395": msg18583, - "16396": msg18584, - "16397": msg18585, - "16398": msg18586, - "16399": msg18587, - "164": select90, - "1640": select1531, - "16400": msg18588, - "16401": msg18589, - "16402": msg18590, - "16403": msg18591, - "16404": msg18592, - "16405": msg18593, - "16406": msg18594, - "16407": msg18595, - "16408": msg18596, - "16409": msg18597, - "1641": select1532, - "16410": msg18598, - "16411": msg18599, - "16412": msg18600, - "16413": msg18601, - "16414": msg18602, - "16415": msg18603, - "16416": msg18604, - "16417": msg18605, - "16418": msg18606, - "16419": msg18607, - "1642": select1533, - "16420": msg18608, - "16421": msg18609, - "16422": msg18610, - "16423": msg18611, - "16424": msg18612, - "16425": msg18613, - "16426": msg18614, - "16427": msg18615, - "16428": msg18616, - "16429": msg18617, - "1643": select1534, - "16430": msg18618, - "16431": msg18619, - "16432": msg18620, - "16433": msg18621, - "16434": msg18622, - "16435": msg18623, - "16436": msg18624, - "16437": msg18625, - "16438": msg18626, - "16439": msg18627, - "1644": select1535, - "16440": msg18628, - "16441": msg18629, - "16442": msg18630, - "16443": msg18631, - "16444": msg18632, - "16445": msg18633, - "16446": msg18634, - "16447": msg18635, - "16448": msg18636, - "16449": msg18637, - "1645": select1536, - "16450": msg18638, - "16451": msg18639, - "16452": msg18640, - "16453": msg18641, - "16454": msg18642, - "16455": msg18643, - "16456": msg18644, - "16457": msg18645, - "16458": msg18646, - "16459": msg18647, - "1646": select1537, - "16460": msg18648, - "16461": msg18649, - "16462": msg18650, - "16463": msg18651, - "16464": msg18652, - "16465": msg18653, - "16466": msg18654, - "16467": msg18655, - "16468": msg18656, - "16469": msg18657, - "1647": select1538, - "16470": msg18658, - "16471": msg18659, - "16472": msg18660, - "16473": msg18661, - "16474": msg18662, - "16475": msg18663, - "16476": msg18664, - "16477": msg18665, - "16478": msg18666, - "16479": msg18667, - "1648": select1539, - "16480": msg18668, - "16481": msg18669, - "16482": msg18670, - "16483": msg18671, - "16484": msg18672, - "16485": msg18673, - "16486": msg18674, - "16487": msg18675, - "16488": msg18676, - "16489": msg18677, - "1649": select1540, - "16490": msg18678, - "16492": msg18679, - "16493": msg18680, - "16494": msg18681, - "16495": msg18682, - "16496": msg18683, - "16497": msg18684, - "16498": msg18685, - "16499": msg18686, - "165": select91, - "1650": select1541, - "16500": msg18687, - "16501": msg18688, - "16502": msg18689, - "16503": msg18690, - "16504": msg18691, - "16505": msg18692, - "16506": msg18693, - "16507": msg18694, - "16508": msg18695, - "16509": msg18696, - "1651": select1542, - "16510": msg18697, - "16511": msg18698, - "16512": msg18699, - "16513": msg18700, - "16514": msg18701, - "16515": msg18702, - "16516": msg18703, - "16517": msg18704, - "16518": msg18705, - "16519": msg18706, - "1652": select1543, - "16520": msg18707, - "16521": msg18708, - "16522": msg18709, - "16523": msg18710, - "16524": msg18711, - "16525": msg18712, - "16526": msg18713, - "16527": msg18714, - "16528": msg18715, - "16529": msg18716, - "1653": select1544, - "16530": msg18717, - "16531": msg18718, - "16532": msg18719, - "16533": msg18720, - "16534": msg18721, - "16535": msg18722, - "16536": msg18723, - "16537": msg18724, - "16538": msg18725, - "16539": msg18726, - "1654": select1545, - "16540": msg18727, - "16541": msg18728, - "16542": msg18729, - "16543": msg18730, - "16544": msg18731, - "16545": msg18732, - "16546": msg18733, - "16547": msg18734, - "16548": msg18735, - "16549": msg18736, - "1655": select1546, - "16550": msg18737, - "16551": msg18738, - "16552": msg18739, - "16553": msg18740, - "16554": msg18741, - "16555": msg18742, - "16556": msg18743, - "16557": msg18744, - "16558": msg18745, - "16559": msg18746, - "1656": select1547, - "16560": msg18747, - "16561": msg18748, - "16562": msg18749, - "16563": msg18750, - "16564": msg18751, - "16565": msg18752, - "16566": msg18753, - "16567": msg18754, - "16568": msg18755, - "16569": msg18756, - "1657": select1548, - "16570": msg18757, - "16571": msg18758, - "16572": msg18759, - "16573": msg18760, - "16574": msg18761, - "16575": msg18762, - "16576": msg18763, - "16577": msg18764, - "16578": msg18765, - "16579": msg18766, - "1658": select1549, - "16580": msg18767, - "16581": msg18768, - "16582": msg18769, - "16583": msg18770, - "16584": msg18771, - "16585": msg18772, - "16586": msg18773, - "16587": msg18774, - "16588": msg18775, - "16589": msg18776, - "1659": select1550, - "16590": msg18777, - "16591": msg18778, - "16592": msg18779, - "16593": msg18780, - "16594": msg18781, - "16595": msg18782, - "16596": msg18783, - "16597": msg18784, - "16598": msg18785, - "16599": msg18786, - "166": select92, - "1660": select1551, - "16600": msg18787, - "16601": msg18788, - "16602": msg18789, - "16603": msg18790, - "16604": msg18791, - "16605": msg18792, - "16606": msg18793, - "16607": msg18794, - "16608": msg18795, - "16609": msg18796, - "1661": select1552, - "16610": msg18797, - "16611": msg18798, - "16612": msg18799, - "16613": msg18800, - "16614": msg18801, - "16615": msg18802, - "16616": msg18803, - "16617": msg18804, - "16618": msg18805, - "16619": msg18806, - "1662": select1553, - "16620": msg18807, - "16621": msg18808, - "16622": msg18809, - "16623": msg18810, - "16624": msg18811, - "16625": msg18812, - "16626": msg18813, - "16627": msg18814, - "16628": msg18815, - "16629": msg18816, - "1663": select1554, - "16630": msg18817, - "16631": msg18818, - "16632": msg18819, - "16633": msg18820, - "16634": msg18821, - "16635": msg18822, - "16636": msg18823, - "16637": msg18824, - "16638": msg18825, - "16639": msg18826, - "1664": select1555, - "16640": msg18827, - "16641": msg18828, - "16642": msg18829, - "16643": msg18830, - "16644": msg18831, - "16645": msg18832, - "16646": msg18833, - "16647": msg18834, - "16648": msg18835, - "16649": msg18836, - "1665": select1556, - "16650": msg18837, - "16651": msg18838, - "16652": msg18839, - "16653": msg18840, - "16654": msg18841, - "16655": msg18842, - "16656": msg18843, - "16657": msg18844, - "16658": msg18845, - "16659": msg18846, - "1666": select1557, - "16660": msg18847, - "16661": msg18848, - "16662": msg18849, - "16663": msg18850, - "16664": msg18851, - "16665": msg18852, - "16666": msg18853, - "16667": msg18854, - "16668": msg18855, - "16669": msg18856, - "1667": select1558, - "16670": msg18857, - "16671": msg18858, - "16672": msg18859, - "16673": msg18860, - "16674": msg18861, - "16675": msg18862, - "16676": msg18863, - "16677": msg18864, - "16678": msg18865, - "16679": msg18866, - "1668": select1559, - "16680": msg18867, - "16681": msg18868, - "16682": msg18869, - "16683": msg18870, - "16684": msg18871, - "16685": msg18872, - "16686": msg18873, - "16687": msg18874, - "16688": msg18875, - "16689": msg18876, - "1669": select1560, - "16690": msg18877, - "16691": msg18878, - "16692": msg18879, - "16693": msg18880, - "16694": msg18881, - "16695": msg18882, - "16696": msg18883, - "16697": msg18884, - "16698": msg18885, - "16699": msg18886, - "167": select93, - "1670": select1561, - "16700": msg18887, - "16701": msg18888, - "16702": msg18889, - "16703": msg18890, - "16704": msg18891, - "16705": msg18892, - "16706": msg18893, - "16707": msg18894, - "16708": msg18895, - "16709": msg18896, - "1671": select1562, - "16710": msg18897, - "16711": msg18898, - "16712": msg18899, - "16713": msg18900, - "16714": msg18901, - "16715": msg18902, - "16716": msg18903, - "16717": msg18904, - "16718": msg18905, - "16719": msg18906, - "1672": select1563, - "16720": msg18907, - "16721": msg18908, - "16722": msg18909, - "16723": msg18910, - "16724": msg18911, - "16725": msg18912, - "16726": msg18913, - "16727": msg18914, - "16728": msg18915, - "16729": msg18916, - "1673": select1564, - "16730": msg18917, - "16731": msg18918, - "16732": msg18919, - "16733": msg18920, - "16734": msg18921, - "16735": msg18922, - "16736": msg18923, - "16737": msg18924, - "16738": msg18925, - "16739": msg18926, - "1674": select1565, - "16740": msg18927, - "16741": msg18928, - "16742": msg18929, - "16743": msg18930, - "16744": msg18931, - "16745": msg18932, - "16746": msg18933, - "16747": msg18934, - "16748": msg18935, - "16749": msg18936, - "1675": select1566, - "16750": msg18937, - "16751": msg18938, - "16752": msg18939, - "16753": msg18940, - "16754": msg18941, - "16755": msg18942, - "16756": msg18943, - "16757": msg18944, - "16758": msg18945, - "16759": msg18946, - "1676": select1567, - "16760": msg18947, - "16761": msg18948, - "16762": msg18949, - "16763": msg18950, - "16764": msg18951, - "16765": msg18952, - "16766": msg18953, - "16767": msg18954, - "16768": msg18955, - "16769": msg18956, - "1677": select1568, - "16770": msg18957, - "16771": msg18958, - "16772": msg18959, - "16773": msg18960, - "16774": msg18961, - "16775": msg18962, - "16776": msg18963, - "16777": msg18964, - "16778": msg18965, - "16779": msg18966, - "1678": select1569, - "16780": msg18967, - "16781": msg18968, - "16782": msg18969, - "16783": msg18970, - "16784": msg18971, - "16785": msg18972, - "16786": msg18973, - "16787": msg18974, - "16788": msg18975, - "16789": msg18976, - "1679": select1570, - "16790": msg18977, - "16791": msg18978, - "16792": msg18979, - "16793": msg18980, - "16794": msg18981, - "16795": msg18982, - "16796": msg18983, - "16797": msg18984, - "16798": msg18985, - "16799": msg18986, - "168": select94, - "1680": select1571, - "16800": msg18987, - "16801": msg18988, - "16802": msg18989, - "16803": msg18990, - "16804": msg18991, - "16805": msg18992, - "16806": msg18993, - "16807": msg18994, - "16808": msg18995, - "16809": msg18996, - "1681": select1572, - "16810": msg18997, - "16811": msg18998, - "16812": msg18999, - "16813": msg19000, - "16814": msg19001, - "16815": msg19002, - "16816": msg19003, - "16817": msg19004, - "16818": msg19005, - "16819": msg19006, - "1682": select1573, - "16820": msg19007, - "16821": msg19008, - "16822": msg19009, - "16823": msg19010, - "16824": msg19011, - "16825": msg19012, - "16826": msg19013, - "16827": msg19014, - "16828": msg19015, - "16829": msg19016, - "1683": select1574, - "16830": msg19017, - "16831": msg19018, - "16832": msg19019, - "16833": msg19020, - "16834": msg19021, - "16835": msg19022, - "16836": msg19023, - "16837": msg19024, - "16838": msg19025, - "16839": msg19026, - "1684": select1575, - "16840": msg19027, - "16841": msg19028, - "16842": msg19029, - "16843": msg19030, - "16844": msg19031, - "16845": msg19032, - "16846": msg19033, - "16847": msg19034, - "16848": msg19035, - "16849": msg19036, - "1685": select1576, - "16850": msg19037, - "16851": msg19038, - "16852": msg19039, - "16853": msg19040, - "16854": msg19041, - "16855": msg19042, - "16856": msg19043, - "16857": msg19044, - "16858": msg19045, - "16859": msg19046, - "1686": select1577, - "16860": msg19047, - "16861": msg19048, - "16862": msg19049, - "16863": msg19050, - "16864": msg19051, - "16865": msg19052, - "16866": msg19053, - "16867": msg19054, - "16868": msg19055, - "16869": msg19056, - "1687": select1578, - "16870": msg19057, - "16871": msg19058, - "16872": msg19059, - "16873": msg19060, - "16874": msg19061, - "16875": msg19062, - "16876": msg19063, - "16877": msg19064, - "16878": msg19065, - "16879": msg19066, - "1688": select1579, - "16880": msg19067, - "16881": msg19068, - "16882": msg19069, - "16883": msg19070, - "16884": msg19071, - "16885": msg19072, - "16886": msg19073, - "16887": msg19074, - "16888": msg19075, - "16889": msg19076, - "1689": select1580, - "16890": msg19077, - "16891": msg19078, - "16892": msg19079, - "16893": msg19080, - "16894": msg19081, - "16895": msg19082, - "16896": msg19083, - "16897": msg19084, - "16898": msg19085, - "16899": msg19086, - "169": select95, - "1690": select1581, - "16900": msg19087, - "16901": msg19088, - "16902": msg19089, - "16903": msg19090, - "16904": msg19091, - "16905": msg19092, - "16906": msg19093, - "16907": msg19094, - "16908": msg19095, - "16909": msg19096, - "1691": select1582, - "16910": msg19097, - "16911": msg19098, - "16912": msg19099, - "16913": msg19100, - "16914": msg19101, - "16915": msg19102, - "16916": msg19103, - "16917": msg19104, - "16918": msg19105, - "16919": msg19106, - "1692": select1583, - "16920": msg19107, - "16921": msg19108, - "16922": msg19109, - "16923": msg19110, - "16924": msg19111, - "16925": msg19112, - "16926": msg19113, - "16927": msg19114, - "16928": msg19115, - "16929": msg19116, - "1693": select1584, - "16930": msg19117, - "16931": msg19118, - "16932": msg19119, - "16933": msg19120, - "16934": msg19121, - "16935": msg19122, - "16936": msg19123, - "16937": msg19124, - "16938": msg19125, - "16939": msg19126, - "1694": select1585, - "16940": msg19127, - "16941": msg19128, - "16942": msg19129, - "16943": msg19130, - "16944": msg19131, - "16945": msg19132, - "16946": msg19133, - "16947": msg19134, - "16948": msg19135, - "16949": msg19136, - "1695": select1586, - "16950": msg19137, - "16951": msg19138, - "16952": msg19139, - "16953": msg19140, - "16954": msg19141, - "16955": msg19142, - "16956": msg19143, - "16957": msg19144, - "16958": msg19145, - "16959": msg19146, - "1696": select1587, - "16960": msg19147, - "16961": msg19148, - "16962": msg19149, - "16963": msg19150, - "16964": msg19151, - "16965": msg19152, - "16966": msg19153, - "16967": msg19154, - "16968": msg19155, - "16969": msg19156, - "1697": select1588, - "16970": msg19157, - "16971": msg19158, - "16972": msg19159, - "16973": msg19160, - "16974": msg19161, - "16975": msg19162, - "16976": msg19163, - "16977": msg19164, - "16978": msg19165, - "16979": msg19166, - "1698": select1589, - "16980": msg19167, - "16981": msg19168, - "16982": msg19169, - "16983": msg19170, - "16984": msg19171, - "16985": msg19172, - "16986": msg19173, - "16987": msg19174, - "16988": msg19175, - "16989": msg19176, - "1699": select1590, - "16990": msg19177, - "16991": msg19178, - "16992": msg19179, - "16993": msg19180, - "16994": msg19181, - "16995": msg19182, - "16996": msg19183, - "16997": msg19184, - "16998": msg19185, - "16999": msg19186, - "17": select18, - "170": select96, - "1700": select1591, - "17000": msg19187, - "17001": msg19188, - "17002": msg19189, - "17003": msg19190, - "17004": msg19191, - "17005": msg19192, - "17006": msg19193, - "17007": msg19194, - "17008": msg19195, - "17009": msg19196, - "1701": select1592, - "17010": msg19197, - "17011": msg19198, - "17012": msg19199, - "17013": msg19200, - "17014": msg19201, - "17015": msg19202, - "17016": msg19203, - "17017": msg19204, - "17018": msg19205, - "17019": msg19206, - "1702": select1593, - "17020": msg19207, - "17021": msg19208, - "17022": msg19209, - "17023": msg19210, - "17024": msg19211, - "17025": msg19212, - "17026": msg19213, - "17027": msg19214, - "17028": msg19215, - "17029": msg19216, - "1703": select1594, - "17030": msg19217, - "17031": msg19218, - "17032": msg19219, - "17033": msg19220, - "17034": msg19221, - "17035": msg19222, - "17036": msg19223, - "17037": msg19224, - "17038": msg19225, - "17039": msg19226, - "1704": select1595, - "17041": msg19227, - "17042": msg19228, - "17043": msg19229, - "17044": msg19230, - "17045": msg19231, - "17046": msg19232, - "17047": msg19233, - "17048": msg19234, - "17049": msg19235, - "1705": select1596, - "17050": msg19236, - "17051": msg19237, - "17052": msg19238, - "17053": msg19239, - "17054": msg19240, - "17055": msg19241, - "17056": msg19242, - "17057": msg19243, - "17058": msg19244, - "17059": msg19245, - "1706": select1597, - "17060": msg19246, - "17061": msg19247, - "17062": msg19248, - "17063": msg19249, - "17064": msg19250, - "17065": msg19251, - "17066": msg19252, - "17067": msg19253, - "17068": msg19254, - "17069": msg19255, - "1707": select1598, - "17070": msg19256, - "17071": msg19257, - "17072": msg19258, - "17073": msg19259, - "17074": msg19260, - "17075": msg19261, - "17076": msg19262, - "17077": msg19263, - "17078": msg19264, - "17079": msg19265, - "1708": select1599, - "17080": msg19266, - "17081": msg19267, - "17082": msg19268, - "17083": msg19269, - "17084": msg19270, - "17085": msg19271, - "17086": msg19272, - "17087": msg19273, - "17088": msg19274, - "17089": msg19275, - "1709": select1600, - "17090": msg19276, - "17091": msg19277, - "17092": msg19278, - "17093": msg19279, - "17094": msg19280, - "17095": msg19281, - "17096": msg19282, - "17097": msg19283, - "17098": msg19284, - "17099": msg19285, - "171": select97, - "1710": select1601, - "17100": msg19286, - "17101": msg19287, - "17102": msg19288, - "17103": msg19289, - "17104": msg19290, - "17105": msg19291, - "17106": msg19292, - "17107": msg19293, - "17108": msg19294, - "17109": msg19295, - "1711": select1602, - "17110": msg19296, - "17111": msg19297, - "17112": msg19298, - "17113": msg19299, - "17114": msg19300, - "17115": msg19301, - "17116": msg19302, - "17117": msg19303, - "17118": msg19304, - "17119": msg19305, - "1712": select1603, - "17120": msg19306, - "17121": msg19307, - "17122": msg19308, - "17123": msg19309, - "17124": msg19310, - "17125": msg19311, - "17126": msg19312, - "17127": msg19313, - "17128": msg19314, - "17129": msg19315, - "1713": select1604, - "17130": msg19316, - "17131": msg19317, - "17132": msg19318, - "17133": msg19319, - "17134": msg19320, - "17135": msg19321, - "17136": msg19322, - "17137": msg19323, - "17138": msg19324, - "17139": msg19325, - "1714": select1605, - "17140": msg19326, - "17141": msg19327, - "17142": msg19328, - "17143": msg19329, - "17144": msg19330, - "17145": msg19331, - "17146": msg19332, - "17147": msg19333, - "17148": msg19334, - "17149": msg19335, - "1715": select1606, - "17150": msg19336, - "17151": msg19337, - "17152": msg19338, - "17153": msg19339, - "17154": msg19340, - "17155": msg19341, - "17156": msg19342, - "17157": msg19343, - "17158": msg19344, - "17159": msg19345, - "1716": select1607, - "17160": msg19346, - "17161": msg19347, - "17162": msg19348, - "17163": msg19349, - "17164": msg19350, - "17165": msg19351, - "17166": msg19352, - "17167": msg19353, - "17168": msg19354, - "17169": msg19355, - "1717": select1608, - "17170": msg19356, - "17171": msg19357, - "17172": msg19358, - "17173": msg19359, - "17174": msg19360, - "17175": msg19361, - "17176": msg19362, - "17177": msg19363, - "17178": msg19364, - "17179": msg19365, - "1718": select1609, - "17180": msg19366, - "17181": msg19367, - "17182": msg19368, - "17183": msg19369, - "17184": msg19370, - "17185": msg19371, - "17186": msg19372, - "17187": msg19373, - "17188": msg19374, - "17189": msg19375, - "1719": select1610, - "17190": msg19376, - "17191": msg19377, - "17192": msg19378, - "17193": msg19379, - "17194": msg19380, - "17195": msg19381, - "17196": msg19382, - "17197": msg19383, - "17198": msg19384, - "17199": msg19385, - "172": select98, - "1720": select1611, - "17200": msg19386, - "17201": msg19387, - "17202": msg19388, - "17203": msg19389, - "17204": msg19390, - "17205": msg19391, - "17206": msg19392, - "17207": msg19393, - "17208": msg19394, - "17209": msg19395, - "1721": select1612, - "17210": msg19396, - "17211": msg19397, - "17212": msg19398, - "17213": msg19399, - "17214": msg19400, - "17215": msg19401, - "17216": msg19402, - "17217": msg19403, - "17218": msg19404, - "17219": msg19405, - "1722": select1613, - "17220": msg19406, - "17221": msg19407, - "17222": msg19408, - "17223": msg19409, - "17224": msg19410, - "17225": msg19411, - "17226": msg19412, - "17227": msg19413, - "17228": msg19414, - "17229": msg19415, - "1723": select1614, - "17230": msg19416, - "17231": msg19417, - "17232": msg19418, - "17233": msg19419, - "17234": msg19420, - "17235": msg19421, - "17236": msg19422, - "17237": msg19423, - "17238": msg19424, - "17239": msg19425, - "1724": select1615, - "17240": msg19426, - "17241": msg19427, - "17242": msg19428, - "17243": msg19429, - "17244": msg19430, - "17245": msg19431, - "17246": msg19432, - "17247": msg19433, - "17248": msg19434, - "17249": msg19435, - "1725": select1616, - "17250": msg19436, - "17251": msg19437, - "17252": msg19438, - "17253": msg19439, - "17254": msg19440, - "17255": msg19441, - "17256": msg19442, - "17257": msg19443, - "17258": msg19444, - "17259": msg19445, - "1726": select1617, - "17260": msg19446, - "17261": msg19447, - "17262": msg19448, - "17263": msg19449, - "17264": msg19450, - "17265": msg19451, - "17266": msg19452, - "17267": msg19453, - "17268": msg19454, - "17269": msg19455, - "1727": select1618, - "17270": msg19456, - "17271": msg19457, - "17272": msg19458, - "17273": msg19459, - "17274": msg19460, - "17275": msg19461, - "17276": msg19462, - "17277": msg19463, - "17278": msg19464, - "17279": msg19465, - "1728": select1619, - "17280": msg19466, - "17281": msg19467, - "17282": msg19468, - "17283": msg19469, - "17284": msg19470, - "17285": msg19471, - "17286": msg19472, - "17287": msg19473, - "17288": msg19474, - "17289": msg19475, - "1729": select1620, - "17290": msg19476, - "17291": msg19477, - "17292": msg19478, - "17293": msg19479, - "17294": msg19480, - "17295": msg19481, - "17296": msg19482, - "17297": msg19483, - "17298": msg19484, - "17299": msg19485, - "173": select99, - "1730": select1621, - "17300": msg19486, - "17301": msg19487, - "17302": msg19488, - "17303": msg19489, - "17304": msg19490, - "17305": msg19491, - "17306": msg19492, - "17307": msg19493, - "17308": msg19494, - "17309": msg19495, - "1731": select1622, - "17310": msg19496, - "17311": msg19497, - "17312": msg19498, - "17313": msg19499, - "17314": msg19500, - "17315": msg19501, - "17316": msg19502, - "17317": msg19503, - "17318": msg19504, - "17319": msg19505, - "1732": select1623, - "17320": msg19506, - "17321": msg19507, - "17322": msg19508, - "17323": msg19509, - "17324": msg19510, - "17325": msg19511, - "17326": msg19512, - "17327": msg19513, - "17328": msg19514, - "17329": msg19515, - "1733": select1624, - "17330": msg19516, - "17331": msg19517, - "17332": msg19518, - "17333": msg19519, - "17334": msg19520, - "17335": msg19521, - "17336": msg19522, - "17337": msg19523, - "17338": msg19524, - "17339": msg19525, - "1734": select1625, - "17340": msg19526, - "17341": msg19527, - "17342": msg19528, - "17343": msg19529, - "17344": msg19530, - "17345": msg19531, - "17346": msg19532, - "17347": msg19533, - "17348": msg19534, - "17349": msg19535, - "1735": select1626, - "17350": msg19536, - "17351": msg19537, - "17352": msg19538, - "17353": msg19539, - "17354": msg19540, - "17355": msg19541, - "17356": msg19542, - "17357": msg19543, - "17358": msg19544, - "17359": msg19545, - "1736": select1627, - "17360": msg19546, - "17361": msg19547, - "17362": msg19548, - "17363": msg19549, - "17364": msg19550, - "17365": msg19551, - "17366": msg19552, - "17367": msg19553, - "17368": msg19554, - "17369": msg19555, - "1737": select1628, - "17370": msg19556, - "17371": msg19557, - "17372": msg19558, - "17373": msg19559, - "17374": msg19560, - "17375": msg19561, - "17376": msg19562, - "17377": msg19563, - "17378": msg19564, - "17379": msg19565, - "1738": select1629, - "17380": msg19566, - "17381": msg19567, - "17382": msg19568, - "17383": msg19569, - "17384": msg19570, - "17385": msg19571, - "17386": msg19572, - "17387": msg19573, - "17388": msg19574, - "17389": msg19575, - "1739": select1630, - "17390": msg19576, - "17391": msg19577, - "17392": msg19578, - "17393": msg19579, - "17394": msg19580, - "17395": msg19581, - "17396": msg19582, - "17397": msg19583, - "17398": msg19584, - "17399": msg19585, - "174": select100, - "1740": select1631, - "17400": msg19586, - "17401": msg19587, - "17402": msg19588, - "17403": msg19589, - "17404": msg19590, - "17405": msg19591, - "17406": msg19592, - "17407": msg19593, - "17408": msg19594, - "17409": msg19595, - "1741": select1632, - "17410": msg19596, - "17411": msg19597, - "17412": msg19598, - "17413": msg19599, - "17414": msg19600, - "17415": msg19601, - "17416": msg19602, - "17417": msg19603, - "17418": msg19604, - "17419": msg19605, - "1742": select1633, - "17420": msg19606, - "17421": msg19607, - "17422": msg19608, - "17423": msg19609, - "17424": msg19610, - "17425": msg19611, - "17426": msg19612, - "17427": msg19613, - "17428": msg19614, - "17429": msg19615, - "1743": select1634, - "17430": msg19616, - "17431": msg19617, - "17432": msg19618, - "17433": msg19619, - "17434": msg19620, - "17435": msg19621, - "17436": msg19622, - "17437": msg19623, - "17438": msg19624, - "17439": msg19625, - "1744": select1635, - "17440": msg19626, - "17441": msg19627, - "17442": msg19628, - "17443": msg19629, - "17444": msg19630, - "17445": msg19631, - "17446": msg19632, - "17447": msg19633, - "17448": msg19634, - "17449": msg19635, - "1745": select1636, - "17450": msg19636, - "17451": msg19637, - "17452": msg19638, - "17453": msg19639, - "17454": msg19640, - "17455": msg19641, - "17456": msg19642, - "17457": msg19643, - "17458": msg19644, - "17459": msg19645, - "1746": select1637, - "17460": msg19646, - "17461": msg19647, - "17462": msg19648, - "17463": msg19649, - "17464": msg19650, - "17465": msg19651, - "17466": msg19652, - "17467": msg19653, - "17468": msg19654, - "17469": msg19655, - "1747": select1638, - "17470": msg19656, - "17471": msg19657, - "17472": msg19658, - "17473": msg19659, - "17474": msg19660, - "17475": msg19661, - "17476": msg19662, - "17477": msg19663, - "17478": msg19664, - "17479": msg19665, - "1748": select1639, - "17480": msg19666, - "17481": msg19667, - "17482": msg19668, - "17483": msg19669, - "17484": msg19670, - "17485": msg19671, - "17486": msg19672, - "17487": msg19673, - "17488": msg19674, - "17489": msg19675, - "1749": select1640, - "17490": msg19676, - "17491": msg19677, - "17492": msg19678, - "17493": msg19679, - "17494": msg19680, - "17495": msg19681, - "17496": msg19682, - "17497": msg19683, - "17498": msg19684, - "17499": msg19685, - "175": select101, - "1750": select1641, - "17500": msg19686, - "17501": msg19687, - "17502": msg19688, - "17503": msg19689, - "17504": msg19690, - "17505": msg19691, - "17506": msg19692, - "17507": msg19693, - "17508": msg19694, - "17509": msg19695, - "1751": select1642, - "17510": msg19696, - "17511": msg19697, - "17512": msg19698, - "17513": msg19699, - "17514": msg19700, - "17515": msg19701, - "17516": msg19702, - "17517": msg19703, - "17518": msg19704, - "17519": msg19705, - "1752": select1643, - "17520": msg19706, - "17521": msg19707, - "17522": msg19708, - "17523": msg19709, - "17524": msg19710, - "17525": msg19711, - "17526": msg19712, - "17527": msg19713, - "17528": msg19714, - "17529": msg19715, - "1753": select1644, - "17530": msg19716, - "17531": msg19717, - "17532": msg19718, - "17533": msg19719, - "17534": msg19720, - "17535": msg19721, - "17536": msg19722, - "17537": msg19723, - "17538": msg19724, - "17539": msg19725, - "1754": select1645, - "17540": msg19726, - "17541": msg19727, - "17542": msg19728, - "17543": msg19729, - "17544": msg19730, - "17545": msg19731, - "17546": msg19732, - "17547": msg19733, - "17548": msg19734, - "17549": msg19735, - "1755": select1646, - "17550": msg19736, - "17551": msg19737, - "17552": msg19738, - "17553": msg19739, - "17554": msg19740, - "17555": msg19741, - "17556": msg19742, - "17557": msg19743, - "17558": msg19744, - "17559": msg19745, - "1756": select1647, - "17560": msg19746, - "17561": msg19747, - "17562": msg19748, - "17563": msg19749, - "17564": msg19750, - "17565": msg19751, - "17566": msg19752, - "17567": msg19753, - "17568": msg19754, - "17569": msg19755, - "1757": select1648, - "17570": msg19756, - "17571": msg19757, - "17572": msg19758, - "17573": msg19759, - "17574": msg19760, - "17575": msg19761, - "17576": msg19762, - "17577": msg19763, - "17578": msg19764, - "17579": msg19765, - "1758": select1649, - "17580": msg19766, - "17581": msg19767, - "17582": msg19768, - "17583": msg19769, - "17584": msg19770, - "17585": msg19771, - "17586": msg19772, - "17587": msg19773, - "17588": msg19774, - "17589": msg19775, - "1759": select1650, - "17590": msg19776, - "17591": msg19777, - "17592": msg19778, - "17593": msg19779, - "17594": msg19780, - "17595": msg19781, - "17596": msg19782, - "17597": msg19783, - "17598": msg19784, - "17599": msg19785, - "176": select102, - "1760": select1651, - "17600": msg19786, - "17601": msg19787, - "17602": msg19788, - "17603": msg19789, - "17604": msg19790, - "17605": msg19791, - "17606": msg19792, - "17607": msg19793, - "17608": msg19794, - "17609": msg19795, - "1761": select1652, - "17610": msg19796, - "17611": msg19797, - "17612": msg19798, - "17613": msg19799, - "17614": msg19800, - "17616": msg19801, - "17618": msg19802, - "17619": msg19803, - "1762": select1653, - "17620": msg19804, - "17621": msg19805, - "17622": msg19806, - "17623": msg19807, - "17624": msg19808, - "17625": msg19809, - "17626": msg19810, - "17628": msg19811, - "17629": msg19812, - "1763": select1654, - "17630": msg19813, - "17631": msg19814, - "17632": msg19815, - "17633": msg19816, - "17634": msg19817, - "17635": msg19818, - "17636": msg19819, - "17637": msg19820, - "17638": msg19821, - "17639": msg19822, - "1764": select1655, - "17640": msg19823, - "17641": msg19824, - "17642": msg19825, - "17643": msg19826, - "17644": msg19827, - "17645": msg19828, - "17646": msg19829, - "17647": msg19830, - "17648": msg19831, - "17649": msg19832, - "1765": select1656, - "17650": msg19833, - "17651": msg19834, - "17652": msg19835, - "17653": msg19836, - "17654": msg19837, - "17655": msg19838, - "17656": msg19839, - "17657": msg19840, - "17658": msg19841, - "17659": msg19842, - "1766": select1657, - "17660": msg19843, - "17661": msg19844, - "17662": msg19845, - "17663": msg19846, - "17664": msg19847, - "17665": msg19848, - "17666": msg19849, - "17667": msg19850, - "17668": msg19851, - "17669": msg19852, - "1767": select1658, - "17670": msg19853, - "17671": msg19854, - "17672": msg19855, - "17673": msg19856, - "17674": msg19857, - "17675": msg19858, - "17676": msg19859, - "17677": msg19860, - "17678": msg19861, - "17679": msg19862, - "1768": select1659, - "17680": msg19863, - "17685": msg19864, - "17686": msg19865, - "17687": msg19866, - "17688": msg19867, - "17689": msg19868, - "1769": select1660, - "17690": msg19869, - "17691": msg19870, - "17692": msg19871, - "17693": msg19872, - "17694": msg19873, - "17695": msg19874, - "17696": msg19875, - "17697": msg19876, - "17698": msg19877, - "17699": msg19878, - "177": select103, - "1770": select1661, - "17700": msg19879, - "17701": msg19880, - "17702": msg19881, - "17703": msg19882, - "17704": msg19883, - "17705": msg19884, - "17706": msg19885, - "17707": msg19886, - "17708": msg19887, - "17709": msg19888, - "1771": select1662, - "17710": msg19889, - "17711": msg19890, - "17712": msg19891, - "17713": msg19892, - "17714": msg19893, - "17715": msg19894, - "17716": msg19895, - "17717": msg19896, - "17718": msg19897, - "17719": msg19898, - "1772": select1663, - "17720": msg19899, - "17721": msg19900, - "17722": msg19901, - "17723": msg19902, - "17724": msg19903, - "17725": msg19904, - "17726": msg19905, - "17727": msg19906, - "17728": msg19907, - "17729": msg19908, - "1773": select1664, - "17730": msg19909, - "17731": msg19910, - "17732": msg19911, - "17733": msg19912, - "17734": msg19913, - "17735": msg19914, - "17736": msg19915, - "17737": msg19916, - "17738": msg19917, - "17739": msg19918, - "1774": select1665, - "17740": msg19919, - "17741": msg19920, - "17742": msg19921, - "17743": msg19922, - "17745": msg19923, - "17746": msg19924, - "17747": msg19925, - "17748": msg19926, - "17749": msg19927, - "1775": select1666, - "17750": msg19928, - "17751": msg19929, - "17752": msg19930, - "17753": msg19931, - "17754": msg19932, - "17755": msg19933, - "17756": msg19934, - "17757": msg19935, - "17758": msg19936, - "17759": msg19937, - "1776": select1667, - "17760": msg19938, - "17762": msg19939, - "17763": msg19940, - "17764": msg19941, - "17765": msg19942, - "17766": msg19943, - "17767": msg19944, - "17768": msg19945, - "17769": msg19946, - "1777": select1668, - "17770": msg19947, - "17771": msg19948, - "17772": msg19949, - "17773": msg19950, - "17774": msg19951, - "17775": msg19952, - "17776": msg19953, - "17777": msg19954, - "17778": msg19955, - "17779": msg19956, - "1778": select1669, - "17780": msg19957, - "17781": msg19958, - "17782": msg19959, - "17783": msg19960, - "17784": msg19961, - "17785": msg19962, - "17786": msg19963, - "17787": msg19964, - "17788": msg19965, - "17789": msg19966, - "1779": select1670, - "17790": msg19967, - "17791": msg19968, - "17792": msg19969, - "17793": msg19970, - "17794": msg19971, - "17795": msg19972, - "17796": msg19973, - "17797": msg19974, - "17798": msg19975, - "17799": msg19976, - "1780": select1671, - "17800": msg19977, - "17801": msg19978, - "17802": msg19979, - "17803": msg19980, - "17804": msg19981, - "17805": msg19982, - "17806": msg19983, - "17807": msg19984, - "17808": msg19985, - "17809": msg19986, - "1781": select1672, - "17810": msg19987, - "17811": msg19988, - "17812": msg19989, - "17813": msg19990, - "17814": msg19991, - "17815": msg19992, - "17816": msg19993, - "17817": msg19994, - "17818": msg19995, - "17819": msg19996, - "1782": select1673, - "17820": msg19997, - "17821": msg19998, - "17822": msg19999, - "17823": msg20000, - "17824": msg20001, - "17825": msg20002, - "17826": msg20003, - "17827": msg20004, - "17828": msg20005, - "17829": msg20006, - "1783": select1674, - "17830": msg20007, - "17831": msg20008, - "17832": msg20009, - "17833": msg20010, - "17834": msg20011, - "17835": msg20012, - "17836": msg20013, - "17837": msg20014, - "17838": msg20015, - "17839": msg20016, - "1784": select1675, - "17840": msg20017, - "17841": msg20018, - "17842": msg20019, - "17843": msg20020, - "17844": msg20021, - "17845": msg20022, - "17846": msg20023, - "17847": msg20024, - "17848": msg20025, - "17849": msg20026, - "1785": select1676, - "17850": msg20027, - "17851": msg20028, - "17852": msg20029, - "17853": msg20030, - "17854": msg20031, - "17855": msg20032, - "17856": msg20033, - "17857": msg20034, - "17858": msg20035, - "17859": msg20036, - "1786": select1677, - "17860": msg20037, - "17861": msg20038, - "17862": msg20039, - "17863": msg20040, - "17864": msg20041, - "17865": msg20042, - "17866": msg20043, - "17867": msg20044, - "17868": msg20045, - "17869": msg20046, - "1787": select1678, - "17870": msg20047, - "17871": msg20048, - "17872": msg20049, - "17873": msg20050, - "17874": msg20051, - "17875": msg20052, - "17876": msg20053, - "17877": msg20054, - "17878": msg20055, - "17879": msg20056, - "1788": select1679, - "17880": msg20057, - "17881": msg20058, - "17882": msg20059, - "17883": msg20060, - "17884": msg20061, - "17885": msg20062, - "17886": msg20063, - "17887": msg20064, - "17888": msg20065, - "17889": msg20066, - "1789": select1680, - "17890": msg20067, - "17891": msg20068, - "17892": msg20069, - "17893": msg20070, - "17894": msg20071, - "17895": msg20072, - "17896": msg20073, - "17897": msg20074, - "17898": msg20075, - "17899": msg20076, - "179": select104, - "1790": select1681, - "17900": msg20077, - "17901": msg20078, - "17902": msg20079, - "17903": msg20080, - "17904": msg20081, - "17905": msg20082, - "17906": msg20083, - "17907": msg20084, - "17908": msg20085, - "17909": msg20086, - "1791": select1682, - "17910": msg20087, - "17911": msg20088, - "17912": msg20089, - "17913": msg20090, - "17914": msg20091, - "17915": msg20092, - "17916": msg20093, - "17917": msg20094, - "17918": msg20095, - "17919": msg20096, - "1792": select1683, - "17920": msg20097, - "17921": msg20098, - "17922": msg20099, - "17923": msg20100, - "17924": msg20101, - "17925": msg20102, - "17926": msg20103, - "17927": msg20104, - "17928": msg20105, - "17929": msg20106, - "1793": select1684, - "17930": msg20107, - "17931": msg20108, - "17932": msg20109, - "17933": msg20110, - "17934": msg20111, - "17935": msg20112, - "17936": msg20113, - "17937": msg20114, - "17938": msg20115, - "17939": msg20116, - "1794": select1685, - "17940": msg20117, - "17941": msg20118, - "17942": msg20119, - "17943": msg20120, - "17944": msg20121, - "17945": msg20122, - "17946": msg20123, - "17947": msg20124, - "17948": msg20125, - "17949": msg20126, - "1795": select1686, - "17950": msg20127, - "17951": msg20128, - "17952": msg20129, - "17953": msg20130, - "17954": msg20131, - "17955": msg20132, - "17956": msg20133, - "17957": msg20134, - "17958": msg20135, - "17959": msg20136, - "1796": select1687, - "17960": msg20137, - "17961": msg20138, - "17962": msg20139, - "17963": msg20140, - "17964": msg20141, - "17965": msg20142, - "17966": msg20143, - "17967": msg20144, - "17968": msg20145, - "17969": msg20146, - "1797": select1688, - "17970": msg20147, - "17971": msg20148, - "17972": msg20149, - "17973": msg20150, - "17974": msg20151, - "17975": msg20152, - "17976": msg20153, - "17977": msg20154, - "17978": msg20155, - "17979": msg20156, - "1798": select1689, - "17980": msg20157, - "17981": msg20158, - "17982": msg20159, - "17983": msg20160, - "17984": msg20161, - "17985": msg20162, - "17986": msg20163, - "17987": msg20164, - "17988": msg20165, - "17989": msg20166, - "1799": select1690, - "17990": msg20167, - "17991": msg20168, - "17992": msg20169, - "17993": msg20170, - "17994": msg20171, - "17995": msg20172, - "17996": msg20173, - "17997": msg20174, - "17998": msg20175, - "17999": msg20176, - "18": select19, - "180": select105, - "1800": select1691, - "18000": msg20177, - "18001": msg20178, - "18002": msg20179, - "18003": msg20180, - "18004": msg20181, - "18005": msg20182, - "18006": msg20183, - "18007": msg20184, - "18008": msg20185, - "18009": msg20186, - "1801": select1692, - "18010": msg20187, - "18011": msg20188, - "18012": msg20189, - "18013": msg20190, - "18014": msg20191, - "18015": msg20192, - "18016": msg20193, - "18017": msg20194, - "18018": msg20195, - "18019": msg20196, - "1802": select1693, - "18020": msg20197, - "18021": msg20198, - "18022": msg20199, - "18023": msg20200, - "18024": msg20201, - "18025": msg20202, - "18026": msg20203, - "18027": msg20204, - "18028": msg20205, - "18029": msg20206, - "1803": select1694, - "18030": msg20207, - "18031": msg20208, - "18032": msg20209, - "18033": msg20210, - "18034": msg20211, - "18035": msg20212, - "18036": msg20213, - "18037": msg20214, - "18038": msg20215, - "18039": msg20216, - "1804": select1695, - "18040": msg20217, - "18041": msg20218, - "18042": msg20219, - "18043": msg20220, - "18044": msg20221, - "18045": msg20222, - "18046": msg20223, - "18047": msg20224, - "18048": msg20225, - "18049": msg20226, - "1805": select1696, - "18050": msg20227, - "18051": msg20228, - "18052": msg20229, - "18053": msg20230, - "18054": msg20231, - "18055": msg20232, - "18056": msg20233, - "18057": msg20234, - "18058": msg20235, - "18059": msg20236, - "1806": select1697, - "18060": msg20237, - "18061": msg20238, - "18062": msg20239, - "18063": msg20240, - "18064": msg20241, - "18065": msg20242, - "18066": msg20243, - "18067": msg20244, - "18068": msg20245, - "18069": msg20246, - "1807": select1698, - "18070": msg20247, - "18071": msg20248, - "18072": msg20249, - "18073": msg20250, - "18074": msg20251, - "18076": msg20252, - "18077": msg20253, - "18078": msg20254, - "18079": msg20255, - "1808": select1699, - "18080": msg20256, - "18081": msg20257, - "18082": msg20258, - "18083": msg20259, - "18084": msg20260, - "18085": msg20261, - "18086": msg20262, - "18087": msg20263, - "18088": msg20264, - "18089": msg20265, - "1809": select1700, - "18090": msg20266, - "18091": msg20267, - "18092": msg20268, - "18093": msg20269, - "18094": msg20270, - "18095": msg20271, - "18096": msg20272, - "18097": msg20273, - "18098": msg20274, - "18099": msg20275, - "181": select106, - "1810": select1701, - "18100": msg20276, - "18101": msg20277, - "18102": msg20278, - "18103": msg20279, - "18104": msg20280, - "18105": msg20281, - "18106": msg20282, - "18107": msg20283, - "18108": msg20284, - "18109": msg20285, - "1811": select1702, - "18110": msg20286, - "18111": msg20287, - "18112": msg20288, - "18113": msg20289, - "18114": msg20290, - "18115": msg20291, - "18116": msg20292, - "18117": msg20293, - "18118": msg20294, - "18119": msg20295, - "1812": select1703, - "18120": msg20296, - "18121": msg20297, - "18122": msg20298, - "18123": msg20299, - "18124": msg20300, - "18125": msg20301, - "18126": msg20302, - "18127": msg20303, - "18128": msg20304, - "18129": msg20305, - "1813": select1704, - "18130": msg20306, - "18131": msg20307, - "18132": msg20308, - "18133": msg20309, - "18134": msg20310, - "18135": msg20311, - "18136": msg20312, - "18137": msg20313, - "18138": msg20314, - "18139": msg20315, - "1814": select1705, - "18140": msg20316, - "18141": msg20317, - "18142": msg20318, - "18143": msg20319, - "18144": msg20320, - "18145": msg20321, - "18146": msg20322, - "18147": msg20323, - "18148": msg20324, - "18149": msg20325, - "1815": select1706, - "18150": msg20326, - "18151": msg20327, - "18152": msg20328, - "18153": msg20329, - "18154": msg20330, - "18155": msg20331, - "18156": msg20332, - "18157": msg20333, - "18158": msg20334, - "18159": msg20335, - "1816": select1707, - "18160": msg20336, - "18161": msg20337, - "18162": msg20338, - "18163": msg20339, - "18164": msg20340, - "18165": msg20341, - "18166": msg20342, - "18167": msg20343, - "18168": msg20344, - "18169": msg20345, - "1817": select1708, - "18170": msg20346, - "18171": msg20347, - "18172": msg20348, - "18173": msg20349, - "18174": msg20350, - "18175": msg20351, - "18176": msg20352, - "18177": msg20353, - "18178": msg20354, - "18179": msg20355, - "1818": select1709, - "18180": msg20356, - "18181": msg20357, - "18182": msg20358, - "18183": msg20359, - "18184": msg20360, - "18185": msg20361, - "18186": msg20362, - "18187": msg20363, - "18188": msg20364, - "18189": msg20365, - "1819": select1710, - "18190": msg20366, - "18191": msg20367, - "18192": msg20368, - "18193": msg20369, - "18194": msg20370, - "18195": msg20371, - "18196": msg20372, - "18197": msg20373, - "18198": msg20374, - "18199": msg20375, - "182": select107, - "1820": select1711, - "18200": msg20376, - "18201": msg20377, - "18202": msg20378, - "18203": msg20379, - "18204": msg20380, - "18205": msg20381, - "18206": msg20382, - "18207": msg20383, - "18208": msg20384, - "18209": msg20385, - "1821": select1712, - "18210": msg20386, - "18211": msg20387, - "18212": msg20388, - "18213": msg20389, - "18214": msg20390, - "18215": msg20391, - "18216": msg20392, - "18217": msg20393, - "18218": msg20394, - "18219": msg20395, - "1822": select1713, - "18220": msg20396, - "18221": msg20397, - "18222": msg20398, - "18223": msg20399, - "18224": msg20400, - "18225": msg20401, - "18226": msg20402, - "18227": msg20403, - "18228": msg20404, - "18229": msg20405, - "1823": select1714, - "18230": msg20406, - "18231": msg20407, - "18232": msg20408, - "18233": msg20409, - "18234": msg20410, - "18235": msg20411, - "18236": msg20412, - "18237": msg20413, - "18238": msg20414, - "18239": msg20415, - "1824": select1715, - "18240": msg20416, - "18241": msg20417, - "18242": msg20418, - "18243": msg20419, - "18244": msg20420, - "18245": msg20421, - "18246": msg20422, - "18247": msg20423, - "18248": msg20424, - "18249": msg20425, - "1825": select1716, - "18250": msg20426, - "18251": msg20427, - "18252": msg20428, - "18253": msg20429, - "18254": msg20430, - "18255": msg20431, - "18256": msg20432, - "18257": msg20433, - "18258": msg20434, - "18259": msg20435, - "1826": select1717, - "18260": msg20436, - "18261": msg20437, - "18262": msg20438, - "18263": msg20439, - "18264": msg20440, - "18265": msg20441, - "18266": msg20442, - "18267": msg20443, - "18268": msg20444, - "18269": msg20445, - "1827": select1718, - "18270": msg20446, - "18271": msg20447, - "18272": msg20448, - "18273": msg20449, - "18274": msg20450, - "18275": msg20451, - "18276": msg20452, - "18277": msg20453, - "18278": msg20454, - "18279": msg20455, - "1828": select1719, - "18280": msg20456, - "18281": msg20457, - "18282": msg20458, - "18283": msg20459, - "18284": msg20460, - "18285": msg20461, - "18286": msg20462, - "18287": msg20463, - "18288": msg20464, - "18289": msg20465, - "1829": select1720, - "18290": msg20466, - "18291": msg20467, - "18292": msg20468, - "18293": msg20469, - "18294": msg20470, - "18295": msg20471, - "18296": msg20472, - "18297": msg20473, - "18298": msg20474, - "18299": msg20475, - "183": select108, - "1830": select1721, - "18300": msg20476, - "18301": msg20477, - "18302": msg20478, - "18303": msg20479, - "18304": msg20480, - "18305": msg20481, - "18306": msg20482, - "18307": msg20483, - "18308": msg20484, - "18309": msg20485, - "1831": select1722, - "18310": msg20486, - "18311": msg20487, - "18312": msg20488, - "18313": msg20489, - "18314": msg20490, - "18315": msg20491, - "18316": msg20492, - "18317": msg20493, - "18318": msg20494, - "18319": msg20495, - "1832": select1723, - "18320": msg20496, - "18321": msg20497, - "18322": msg20498, - "18323": msg20499, - "18324": msg20500, - "18325": msg20501, - "18326": msg20502, - "18327": msg20503, - "18328": msg20504, - "18329": msg20505, - "1833": select1724, - "18330": msg20506, - "18331": msg20507, - "18332": msg20508, - "18333": msg20509, - "18334": msg20510, - "18335": msg20511, - "18336": msg20512, - "18337": msg20513, - "18338": msg20514, - "18339": msg20515, - "1834": select1725, - "18340": msg20516, - "18341": msg20517, - "18342": msg20518, - "18343": msg20519, - "18344": msg20520, - "18345": msg20521, - "18346": msg20522, - "18347": msg20523, - "18348": msg20524, - "18349": msg20525, - "1835": select1726, - "18350": msg20526, - "18351": msg20527, - "18352": msg20528, - "18353": msg20529, - "18354": msg20530, - "18355": msg20531, - "18356": msg20532, - "18357": msg20533, - "18358": msg20534, - "18359": msg20535, - "1836": select1727, - "18360": msg20536, - "18361": msg20537, - "18362": msg20538, - "18363": msg20539, - "18364": msg20540, - "18365": msg20541, - "18366": msg20542, - "18367": msg20543, - "18368": msg20544, - "18369": msg20545, - "1837": select1728, - "18370": msg20546, - "18371": msg20547, - "18372": msg20548, - "18373": msg20549, - "18374": msg20550, - "18375": msg20551, - "18376": msg20552, - "18377": msg20553, - "18378": msg20554, - "18379": msg20555, - "1838": select1729, - "18380": msg20556, - "18381": msg20557, - "18382": msg20558, - "18383": msg20559, - "18384": msg20560, - "18385": msg20561, - "18386": msg20562, - "18387": msg20563, - "18388": msg20564, - "18389": msg20565, - "1839": select1730, - "18390": msg20566, - "18391": msg20567, - "18392": msg20568, - "18393": msg20569, - "18394": msg20570, - "18395": msg20571, - "18396": msg20572, - "18397": msg20573, - "18398": msg20574, - "18399": msg20575, - "184": select109, - "1840": select1731, - "18400": msg20576, - "18401": msg20577, - "18402": msg20578, - "18403": msg20579, - "18404": msg20580, - "18405": msg20581, - "18406": msg20582, - "18407": msg20583, - "18408": msg20584, - "18409": msg20585, - "1841": select1732, - "18410": msg20586, - "18411": msg20587, - "18412": msg20588, - "18413": msg20589, - "18414": msg20590, - "18415": msg20591, - "18416": msg20592, - "18417": msg20593, - "18418": msg20594, - "18419": msg20595, - "1842": select1733, - "18420": msg20596, - "18421": msg20597, - "18422": msg20598, - "18423": msg20599, - "18424": msg20600, - "18425": msg20601, - "18426": msg20602, - "18427": msg20603, - "18428": msg20604, - "18429": msg20605, - "1843": select1734, - "18430": msg20606, - "18431": msg20607, - "18432": msg20608, - "18433": msg20609, - "18434": msg20610, - "18435": msg20611, - "18436": msg20612, - "18437": msg20613, - "18438": msg20614, - "18439": msg20615, - "1844": select1735, - "18440": msg20616, - "18441": msg20617, - "18442": msg20618, - "18443": msg20619, - "18444": msg20620, - "18445": msg20621, - "18446": msg20622, - "18447": msg20623, - "18448": msg20624, - "18449": msg20625, - "1845": select1736, - "18450": msg20626, - "18451": msg20627, - "18452": msg20628, - "18453": msg20629, - "18454": msg20630, - "18455": msg20631, - "18456": msg20632, - "18457": msg20633, - "18458": msg20634, - "18459": msg20635, - "1846": select1737, - "18460": msg20636, - "18461": msg20637, - "18462": msg20638, - "18463": msg20639, - "18464": msg20640, - "18465": msg20641, - "18466": msg20642, - "18467": msg20643, - "18468": msg20644, - "18469": msg20645, - "1847": select1738, - "18470": msg20646, - "18471": msg20647, - "18472": msg20648, - "18473": msg20649, - "18474": msg20650, - "18475": msg20651, - "18476": msg20652, - "18477": msg20653, - "18478": msg20654, - "18479": msg20655, - "1848": select1739, - "18480": msg20656, - "18481": msg20657, - "18482": msg20658, - "18483": msg20659, - "18484": msg20660, - "18485": msg20661, - "18486": msg20662, - "18487": msg20663, - "18488": msg20664, - "18489": msg20665, - "1849": select1740, - "18490": msg20666, - "18491": msg20667, - "18492": msg20668, - "18493": msg20669, - "18494": msg20670, - "18495": msg20671, - "18496": msg20672, - "18497": msg20673, - "18498": msg20674, - "18499": msg20675, - "185": select110, - "1850": select1741, - "18500": msg20676, - "18501": msg20677, - "18502": msg20678, - "18503": msg20679, - "18504": msg20680, - "18505": msg20681, - "18506": msg20682, - "18507": msg20683, - "18508": msg20684, - "18509": msg20685, - "1851": select1742, - "18510": msg20686, - "18511": msg20687, - "18512": msg20688, - "18513": msg20689, - "18514": msg20690, - "18515": msg20691, - "18516": msg20692, - "18517": msg20693, - "18518": msg20694, - "18519": msg20695, - "1852": select1743, - "18520": msg20696, - "18521": msg20697, - "18522": msg20698, - "18523": msg20699, - "18524": msg20700, - "18525": msg20701, - "18526": msg20702, - "18527": msg20703, - "18528": msg20704, - "18529": msg20705, - "1853": select1744, - "18530": msg20706, - "18531": msg20707, - "18532": msg20708, - "18533": msg20709, - "18534": msg20710, - "18535": msg20711, - "18536": msg20712, - "18537": msg20713, - "18538": msg20714, - "18539": msg20715, - "1854": select1745, - "18540": msg20716, - "18541": msg20717, - "18542": msg20718, - "18543": msg20719, - "18544": msg20720, - "18545": msg20721, - "18546": msg20722, - "18547": msg20723, - "18548": msg20724, - "18549": msg20725, - "1855": select1746, - "18550": msg20726, - "18551": msg20727, - "18552": msg20728, - "18553": msg20729, - "18554": msg20730, - "18555": msg20731, - "18556": msg20732, - "18557": msg20733, - "18558": msg20734, - "18559": msg20735, - "1856": select1747, - "18560": msg20736, - "18561": msg20737, - "18562": msg20738, - "18563": msg20739, - "18564": msg20740, - "18565": msg20741, - "18566": msg20742, - "18567": msg20743, - "18568": msg20744, - "18569": msg20745, - "1857": select1748, - "18570": msg20746, - "18571": msg20747, - "18572": msg20748, - "18573": msg20749, - "18574": msg20750, - "18575": msg20751, - "18576": msg20752, - "18577": msg20753, - "18578": msg20754, - "18579": msg20755, - "1858": select1749, - "18580": msg20756, - "18581": msg20757, - "18582": msg20758, - "18583": msg20759, - "18584": msg20760, - "18585": msg20761, - "18586": msg20762, - "18587": msg20763, - "18588": msg20764, - "18589": msg20765, - "1859": select1750, - "18590": msg20766, - "18591": msg20767, - "18592": msg20768, - "18593": msg20769, - "18594": msg20770, - "18595": msg20771, - "18596": msg20772, - "18597": msg20773, - "18598": msg20774, - "18599": msg20775, - "186": select111, - "1860": select1751, - "18600": msg20776, - "18601": msg20777, - "18602": msg20778, - "18603": msg20779, - "18604": msg20780, - "18605": msg20781, - "18606": msg20782, - "18607": msg20783, - "18608": msg20784, - "18609": msg20785, - "1861": select1752, - "18610": msg20786, - "18611": msg20787, - "18612": msg20788, - "18613": msg20789, - "18614": msg20790, - "18615": msg20791, - "18616": msg20792, - "18617": msg20793, - "18618": msg20794, - "18619": msg20795, - "1862": select1753, - "18620": msg20796, - "18621": msg20797, - "18622": msg20798, - "18623": msg20799, - "18624": msg20800, - "18625": msg20801, - "18626": msg20802, - "18627": msg20803, - "18628": msg20804, - "18629": msg20805, - "1863": select1754, - "18630": msg20806, - "18631": msg20807, - "18632": msg20808, - "18633": msg20809, - "18634": msg20810, - "18635": msg20811, - "18636": msg20812, - "18637": msg20813, - "18638": msg20814, - "18639": msg20815, - "1864": select1755, - "18640": msg20816, - "18641": msg20817, - "18642": msg20818, - "18643": msg20819, - "18644": msg20820, - "18645": msg20821, - "18646": msg20822, - "18647": msg20823, - "18648": msg20824, - "18649": msg20825, - "1865": select1756, - "18650": msg20826, - "18651": msg20827, - "18652": msg20828, - "18653": msg20829, - "18654": msg20830, - "18655": msg20831, - "18656": msg20832, - "18657": msg20833, - "18658": msg20834, - "18659": msg20835, - "1866": select1757, - "18660": msg20836, - "18661": msg20837, - "18662": msg20838, - "18663": msg20839, - "18664": msg20840, - "18665": msg20841, - "18666": msg20842, - "18667": msg20843, - "18668": msg20844, - "18669": msg20845, - "1867": select1758, - "18670": msg20846, - "18671": msg20847, - "18672": msg20848, - "18673": msg20849, - "18674": msg20850, - "18675": msg20851, - "18676": msg20852, - "18677": msg20853, - "18678": msg20854, - "18679": msg20855, - "1868": msg3638, - "18680": msg20856, - "18681": msg20857, - "18682": msg20858, - "18683": msg20859, - "18684": msg20860, - "18685": msg20861, - "18686": msg20862, - "18687": msg20863, - "18688": msg20864, - "18689": msg20865, - "1869": msg3639, - "18690": msg20866, - "18691": msg20867, - "187": select112, - "1870": select1759, - "18700": msg20868, - "18701": msg20869, - "18702": msg20870, - "18703": msg20871, - "18704": msg20872, - "18705": msg20873, - "18706": msg20874, - "18707": msg20875, - "18708": msg20876, - "18709": msg20877, - "1871": select1760, - "18710": msg20878, - "18711": msg20879, - "18712": msg20880, - "18713": msg20881, - "18714": msg20882, - "18715": msg20883, - "18716": msg20884, - "18717": msg20885, - "18718": msg20886, - "18719": msg20887, - "1872": select1761, - "18720": msg20888, - "18721": msg20889, - "18722": msg20890, - "18723": msg20891, - "18724": msg20892, - "18725": msg20893, - "18726": msg20894, - "18727": msg20895, - "18728": msg20896, - "18729": msg20897, - "1873": select1762, - "18730": msg20898, - "18731": msg20899, - "18732": msg20900, - "18733": msg20901, - "18734": msg20902, - "18735": msg20903, - "18736": msg20904, - "18737": msg20905, - "18738": msg20906, - "18739": msg20907, - "1874": select1763, - "18740": msg20908, - "18741": msg20909, - "18742": msg20910, - "18743": msg20911, - "18744": msg20912, - "18745": msg20913, - "18746": msg20914, - "18747": msg20915, - "18748": msg20916, - "18749": msg20917, - "1875": select1764, - "18750": msg20918, - "18751": msg20919, - "18752": msg20920, - "18753": msg20921, - "18754": msg20922, - "18755": msg20923, - "18756": msg20924, - "18757": msg20925, - "18758": msg20926, - "18759": msg20927, - "1876": select1765, - "18760": msg20928, - "18761": msg20929, - "18762": msg20930, - "18763": msg20931, - "18764": msg20932, - "18765": msg20933, - "18766": msg20934, - "18767": msg20935, - "18768": msg20936, - "18769": msg20937, - "1877": select1766, - "18770": msg20938, - "18771": msg20939, - "18772": msg20940, - "18773": msg20941, - "18774": msg20942, - "18775": msg20943, - "18776": msg20944, - "18777": msg20945, - "18778": msg20946, - "18779": msg20947, - "1878": select1767, - "18780": msg20948, - "18781": msg20949, - "18782": msg20950, - "18783": msg20951, - "18784": msg20952, - "18785": msg20953, - "18786": msg20954, - "18787": msg20955, - "18788": msg20956, - "18789": msg20957, - "1879": select1768, - "18790": msg20958, - "18791": msg20959, - "18792": msg20960, - "18793": msg20961, - "18794": msg20962, - "18795": msg20963, - "18796": msg20964, - "18797": msg20965, - "18798": msg20966, - "18799": msg20967, - "188": select113, - "1880": select1769, - "18800": msg20968, - "18801": msg20969, - "18802": msg20970, - "18803": msg20971, - "18804": msg20972, - "18805": msg20973, - "18806": msg20974, - "18807": msg20975, - "18808": msg20976, - "18809": msg20977, - "1881": select1770, - "18810": msg20978, - "18811": msg20979, - "18812": msg20980, - "18813": msg20981, - "18814": msg20982, - "18815": msg20983, - "18816": msg20984, - "18817": msg20985, - "18818": msg20986, - "18819": msg20987, - "1882": select1771, - "18820": msg20988, - "18821": msg20989, - "18822": msg20990, - "18823": msg20991, - "18824": msg20992, - "18825": msg20993, - "18826": msg20994, - "18827": msg20995, - "18828": msg20996, - "18829": msg20997, - "1883": select1772, - "18830": msg20998, - "18831": msg20999, - "18832": msg21000, - "18833": msg21001, - "18834": msg21002, - "18835": msg21003, - "18836": msg21004, - "18837": msg21005, - "18838": msg21006, - "18839": msg21007, - "1884": select1773, - "18840": msg21008, - "18841": msg21009, - "18842": msg21010, - "18843": msg21011, - "18844": msg21012, - "18845": msg21013, - "18846": msg21014, - "18847": msg21015, - "18848": msg21016, - "18849": msg21017, - "1885": select1774, - "18850": msg21018, - "18851": msg21019, - "18852": msg21020, - "18853": msg21021, - "18854": msg21022, - "18855": msg21023, - "18856": msg21024, - "18857": msg21025, - "18858": msg21026, - "18859": msg21027, - "1886": select1775, - "18860": msg21028, - "18861": msg21029, - "18862": msg21030, - "18863": msg21031, - "18864": msg21032, - "18865": msg21033, - "18866": msg21034, - "18867": msg21035, - "18868": msg21036, - "18869": msg21037, - "1887": select1776, - "18870": msg21038, - "18871": msg21039, - "18872": msg21040, - "18873": msg21041, - "18874": msg21042, - "18875": msg21043, - "18876": msg21044, - "18877": msg21045, - "18878": msg21046, - "18879": msg21047, - "1888": select1777, - "18880": msg21048, - "18881": msg21049, - "18882": msg21050, - "18883": msg21051, - "18884": msg21052, - "18885": msg21053, - "18886": msg21054, - "18887": msg21055, - "18888": msg21056, - "18889": msg21057, - "1889": select1778, - "18890": msg21058, - "18891": msg21059, - "18892": msg21060, - "18893": msg21061, - "18894": msg21062, - "18895": msg21063, - "18896": msg21064, - "18897": msg21065, - "18898": msg21066, - "18899": msg21067, - "189": select114, - "1890": select1779, - "18900": msg21068, - "18901": msg21069, - "18902": msg21070, - "18903": msg21071, - "18904": msg21072, - "18905": msg21073, - "18906": msg21074, - "18907": msg21075, - "18908": msg21076, - "18909": msg21077, - "1891": select1780, - "18910": msg21078, - "18911": msg21079, - "18912": msg21080, - "18913": msg21081, - "18914": msg21082, - "18915": msg21083, - "18916": msg21084, - "18917": msg21085, - "18918": msg21086, - "18919": msg21087, - "1892": msg3684, - "18920": msg21088, - "18921": msg21089, - "18922": msg21090, - "18923": msg21091, - "18924": msg21092, - "18925": msg21093, - "18926": msg21094, - "18927": msg21095, - "18928": msg21096, - "18929": msg21097, - "1893": select1781, - "18930": msg21098, - "18931": msg21099, - "18932": msg21100, - "18933": msg21101, - "18934": msg21102, - "18935": msg21103, - "18936": msg21104, - "18937": msg21105, - "18938": msg21106, - "18939": msg21107, - "1894": select1782, - "18940": msg21108, - "18941": msg21109, - "18942": msg21110, - "18943": msg21111, - "18944": msg21112, - "18945": msg21113, - "18946": msg21114, - "18947": msg21115, - "18948": msg21116, - "18949": msg21117, - "1895": select1783, - "18950": msg21118, - "18951": msg21119, - "18952": msg21120, - "18953": msg21121, - "18954": msg21122, - "18955": msg21123, - "18956": msg21124, - "18957": msg21125, - "18958": msg21126, - "18959": msg21127, - "1896": select1784, - "18960": msg21128, - "18961": msg21129, - "18962": msg21130, - "18963": msg21131, - "18964": msg21132, - "18965": msg21133, - "18966": msg21134, - "18967": msg21135, - "18968": msg21136, - "18969": msg21137, - "1897": select1785, - "18970": msg21138, - "18971": msg21139, - "18972": msg21140, - "18973": msg21141, - "18974": msg21142, - "18975": msg21143, - "18976": msg21144, - "18977": msg21145, - "18978": msg21146, - "18979": msg21147, - "1898": select1786, - "18980": msg21148, - "18981": msg21149, - "18982": msg21150, - "18983": msg21151, - "18984": msg21152, - "18985": msg21153, - "18986": msg21154, - "18987": msg21155, - "18988": msg21156, - "18989": msg21157, - "1899": select1787, - "18990": msg21158, - "18991": msg21159, - "18992": msg21160, - "18993": msg21161, - "18994": msg21162, - "18995": msg21163, - "18996": msg21164, - "18997": msg21165, - "18998": msg21166, - "18999": msg21167, - "19": select20, - "190": select115, - "1900": select1788, - "19000": msg21168, - "19001": msg21169, - "19002": msg21170, - "19003": msg21171, - "19004": msg21172, - "19005": msg21173, - "19006": msg21174, - "19007": msg21175, - "19008": msg21176, - "19009": msg21177, - "1901": select1789, - "19010": msg21178, - "19011": msg21179, - "19012": msg21180, - "19013": msg21181, - "19014": msg21182, - "19015": msg21183, - "19016": msg21184, - "19017": msg21185, - "19018": msg21186, - "19019": msg21187, - "1902": select1790, - "19020": msg21188, - "19021": msg21189, - "19022": msg21190, - "19023": msg21191, - "19024": msg21192, - "19025": msg21193, - "19026": msg21194, - "19027": msg21195, - "19028": msg21196, - "19029": msg21197, - "1903": select1791, - "19030": msg21198, - "19031": msg21199, - "19032": msg21200, - "19033": msg21201, - "19034": msg21202, - "19035": msg21203, - "19036": msg21204, - "19037": msg21205, - "19038": msg21206, - "19039": msg21207, - "1904": select1792, - "19040": msg21208, - "19041": msg21209, - "19042": msg21210, - "19043": msg21211, - "19044": msg21212, - "19045": msg21213, - "19046": msg21214, - "19047": msg21215, - "19048": msg21216, - "19049": msg21217, - "1905": select1793, - "19050": msg21218, - "19051": msg21219, - "19052": msg21220, - "19053": msg21221, - "19054": msg21222, - "19055": msg21223, - "19056": msg21224, - "19057": msg21225, - "19058": msg21226, - "19059": msg21227, - "1906": select1794, - "19060": msg21228, - "19061": msg21229, - "19062": msg21230, - "19063": msg21231, - "19064": msg21232, - "19065": msg21233, - "19066": msg21234, - "19067": msg21235, - "19068": msg21236, - "19069": msg21237, - "1907": select1795, - "19070": msg21238, - "19071": msg21239, - "19072": msg21240, - "19073": msg21241, - "19074": msg21242, - "19075": msg21243, - "19076": msg21244, - "19077": msg21245, - "19078": msg21246, - "19079": msg21247, - "1908": select1796, - "19080": msg21248, - "19081": msg21249, - "19082": msg21250, - "19083": msg21251, - "19084": msg21252, - "19085": msg21253, - "19086": msg21254, - "19087": msg21255, - "19088": msg21256, - "19089": msg21257, - "1909": select1797, - "19090": msg21258, - "19091": msg21259, - "19092": msg21260, - "19093": msg21261, - "19094": msg21262, - "19095": msg21263, - "19096": msg21264, - "19097": msg21265, - "19098": msg21266, - "19099": msg21267, - "191": select116, - "1910": select1798, - "19100": msg21268, - "19101": msg21269, - "19102": msg21270, - "19103": msg21271, - "19104": msg21272, - "19105": msg21273, - "19106": msg21274, - "19107": msg21275, - "19108": msg21276, - "19109": msg21277, - "1911": select1799, - "19110": msg21278, - "19111": msg21279, - "19112": msg21280, - "19113": msg21281, - "19114": msg21282, - "19115": msg21283, - "19116": msg21284, - "19117": msg21285, - "19118": msg21286, - "19119": msg21287, - "1912": select1800, - "19120": msg21288, - "19121": msg21289, - "19122": msg21290, - "19123": msg21291, - "19124": msg21292, - "19125": msg21293, - "19126": msg21294, - "19127": msg21295, - "19128": msg21296, - "19129": msg21297, - "1913": select1801, - "19130": msg21298, - "19131": msg21299, - "19132": msg21300, - "19133": msg21301, - "19134": msg21302, - "19135": msg21303, - "19136": msg21304, - "19137": msg21305, - "19138": msg21306, - "19139": msg21307, - "1914": select1802, - "19140": msg21308, - "19141": msg21309, - "19142": msg21310, - "19143": msg21311, - "19144": msg21312, - "19145": msg21313, - "19146": msg21314, - "19147": msg21315, - "19148": msg21316, - "19149": msg21317, - "1915": select1803, - "19150": msg21318, - "19151": msg21319, - "19152": msg21320, - "19153": msg21321, - "19154": msg21322, - "19155": msg21323, - "19156": msg21324, - "19157": msg21325, - "19158": msg21326, - "19159": msg21327, - "1916": select1804, - "19160": msg21328, - "19161": msg21329, - "19162": msg21330, - "19163": msg21331, - "19164": msg21332, - "19165": msg21333, - "19166": msg21334, - "19167": msg21335, - "19168": msg21336, - "19169": msg21337, - "1917": select1805, - "19170": msg21338, - "19171": msg21339, - "19172": msg21340, - "19173": msg21341, - "19174": msg21342, - "19175": msg21343, - "19176": msg21344, - "19177": msg21345, - "19178": msg21346, - "19179": msg21347, - "1918": select1806, - "19180": msg21348, - "19181": msg21349, - "19182": msg21350, - "19183": msg21351, - "19184": msg21352, - "19185": msg21353, - "19186": msg21354, - "19187": msg21355, - "19188": msg21356, - "19189": msg21357, - "1919": select1807, - "19190": msg21358, - "19191": msg21359, - "19192": msg21360, - "19193": msg21361, - "19194": msg21362, - "19195": msg21363, - "19196": msg21364, - "19197": msg21365, - "19198": msg21366, - "19199": msg21367, - "192": select117, - "1920": select1808, - "19200": msg21368, - "19201": msg21369, - "19202": msg21370, - "19203": msg21371, - "19204": msg21372, - "19205": msg21373, - "19206": msg21374, - "19207": msg21375, - "19208": msg21376, - "19209": msg21377, - "1921": select1809, - "19210": msg21378, - "19211": msg21379, - "19212": msg21380, - "19213": msg21381, - "19214": msg21382, - "19215": msg21383, - "19216": msg21384, - "19217": msg21385, - "19218": msg21386, - "19219": msg21387, - "1922": select1810, - "19220": msg21388, - "19221": msg21389, - "19222": msg21390, - "19223": msg21391, - "19224": msg21392, - "19225": msg21393, - "19226": msg21394, - "19227": msg21395, - "19228": msg21396, - "19229": msg21397, - "1923": select1811, - "19230": msg21398, - "19231": msg21399, - "19232": msg21400, - "19233": msg21401, - "19234": msg21402, - "19235": msg21403, - "19236": msg21404, - "19237": msg21405, - "19238": msg21406, - "19239": msg21407, - "1924": select1812, - "19240": msg21408, - "19241": msg21409, - "19242": msg21410, - "19243": msg21411, - "19244": msg21412, - "19245": msg21413, - "19246": msg21414, - "19247": msg21415, - "19248": msg21416, - "19249": msg21417, - "1925": select1813, - "19250": msg21418, - "19251": msg21419, - "19252": msg21420, - "19253": msg21421, - "19254": msg21422, - "19255": msg21423, - "19256": msg21424, - "19257": msg21425, - "19258": msg21426, - "19259": msg21427, - "1926": select1814, - "19260": msg21428, - "19261": msg21429, - "19262": msg21430, - "19263": msg21431, - "19264": msg21432, - "19265": msg21433, - "19266": msg21434, - "19267": msg21435, - "19268": msg21436, - "19269": msg21437, - "1927": select1815, - "19270": msg21438, - "19271": msg21439, - "19272": msg21440, - "19273": msg21441, - "19274": msg21442, - "19275": msg21443, - "19276": msg21444, - "19277": msg21445, - "19278": msg21446, - "19279": msg21447, - "1928": select1816, - "19280": msg21448, - "19281": msg21449, - "19282": msg21450, - "19283": msg21451, - "19284": msg21452, - "19285": msg21453, - "19286": msg21454, - "19287": msg21455, - "19288": msg21456, - "19289": msg21457, - "1929": select1817, - "19290": msg21458, - "19291": msg21459, - "19292": msg21460, - "19293": msg21461, - "19294": msg21462, - "19295": msg21463, - "19296": msg21464, - "19297": msg21465, - "19298": msg21466, - "19299": msg21467, - "193": select118, - "1930": select1818, - "19300": msg21468, - "19301": msg21469, - "19302": msg21470, - "19303": msg21471, - "19304": msg21472, - "19305": msg21473, - "19306": msg21474, - "19307": msg21475, - "19308": msg21476, - "19309": msg21477, - "1931": select1819, - "19310": msg21478, - "19311": msg21479, - "19312": msg21480, - "19313": msg21481, - "19314": msg21482, - "19315": msg21483, - "19316": msg21484, - "19317": msg21485, - "19318": msg21486, - "19319": msg21487, - "1932": select1820, - "19320": msg21488, - "19321": msg21489, - "19322": msg21490, - "19323": msg21491, - "19324": msg21492, - "19325": msg21493, - "19326": msg21494, - "19327": msg21495, - "19328": msg21496, - "19329": msg21497, - "1933": select1821, - "19330": msg21498, - "19331": msg21499, - "19332": msg21500, - "19333": msg21501, - "19334": msg21502, - "19335": msg21503, - "19336": msg21504, - "19337": msg21505, - "19338": msg21506, - "19339": msg21507, - "1934": select1822, - "19340": msg21508, - "19341": msg21509, - "19342": msg21510, - "19343": msg21511, - "19344": msg21512, - "19345": msg21513, - "19346": msg21514, - "19347": msg21515, - "19348": msg21516, - "19349": msg21517, - "1935": select1823, - "19350": msg21518, - "19351": msg21519, - "19352": msg21520, - "19353": msg21521, - "19354": msg21522, - "19355": msg21523, - "19356": msg21524, - "19357": msg21525, - "19358": msg21526, - "19359": msg21527, - "1936": select1824, - "19360": msg21528, - "19361": msg21529, - "19362": msg21530, - "19363": msg21531, - "19364": msg21532, - "19365": msg21533, - "19366": msg21534, - "19367": msg21535, - "19368": msg21536, - "19369": msg21537, - "1937": select1825, - "19370": msg21538, - "19371": msg21539, - "19372": msg21540, - "19373": msg21541, - "19374": msg21542, - "19375": msg21543, - "19376": msg21544, - "19377": msg21545, - "19378": msg21546, - "19379": msg21547, - "1938": select1826, - "19380": msg21548, - "19381": msg21549, - "19382": msg21550, - "19383": msg21551, - "19384": msg21552, - "19385": msg21553, - "19386": msg21554, - "19387": msg21555, - "19388": msg21556, - "19389": msg21557, - "1939": select1827, - "19390": msg21558, - "19391": msg21559, - "19392": msg21560, - "19393": msg21561, - "19394": msg21562, - "19395": msg21563, - "19396": msg21564, - "19397": msg21565, - "19398": msg21566, - "19399": msg21567, - "194": select119, - "1940": select1828, - "19400": msg21568, - "19401": msg21569, - "19402": msg21570, - "19403": msg21571, - "19404": msg21572, - "19405": msg21573, - "19406": msg21574, - "19407": msg21575, - "19408": msg21576, - "19409": msg21577, - "1941": select1829, - "19410": msg21578, - "19411": msg21579, - "19412": msg21580, - "19413": msg21581, - "19414": msg21582, - "19415": msg21583, - "19416": msg21584, - "19417": msg21585, - "19418": msg21586, - "19419": msg21587, - "1942": select1830, - "19420": msg21588, - "19421": msg21589, - "19422": msg21590, - "19423": msg21591, - "19424": msg21592, - "19425": msg21593, - "19426": msg21594, - "19427": msg21595, - "19428": msg21596, - "19429": msg21597, - "1943": select1831, - "19430": msg21598, - "19431": msg21599, - "19432": msg21600, - "19433": msg21601, - "19434": msg21602, - "19435": msg21603, - "19436": msg21604, - "19437": msg21605, - "19438": msg21606, - "19439": msg21607, - "1944": select1832, - "19440": msg21608, - "19441": msg21609, - "19442": msg21610, - "19443": msg21611, - "19444": msg21612, - "19445": msg21613, - "19446": msg21614, - "19447": msg21615, - "19448": msg21616, - "19449": msg21617, - "1945": select1833, - "19450": msg21618, - "19451": msg21619, - "19452": msg21620, - "19453": msg21621, - "19454": msg21622, - "19455": msg21623, - "19456": msg21624, - "19457": msg21625, - "19458": msg21626, - "19459": msg21627, - "1946": select1834, - "19460": msg21628, - "19461": msg21629, - "19462": msg21630, - "19463": msg21631, - "19464": msg21632, - "19465": msg21633, - "19466": msg21634, - "19467": msg21635, - "19468": msg21636, - "19469": msg21637, - "1947": select1835, - "19470": msg21638, - "19471": msg21639, - "19472": msg21640, - "19473": msg21641, - "19474": msg21642, - "19475": msg21643, - "19476": msg21644, - "19477": msg21645, - "19478": msg21646, - "19479": msg21647, - "1948": select1836, - "19480": msg21648, - "19481": msg21649, - "19482": msg21650, - "19483": msg21651, - "19484": msg21652, - "19485": msg21653, - "19486": msg21654, - "19487": msg21655, - "19488": msg21656, - "19489": msg21657, - "1949": select1837, - "19490": msg21658, - "19491": msg21659, - "19492": msg21660, - "19493": msg21661, - "19494": msg21662, - "19495": msg21663, - "19496": msg21664, - "19497": msg21665, - "19498": msg21666, - "19499": msg21667, - "195": select120, - "1950": select1838, - "19500": msg21668, - "19501": msg21669, - "19502": msg21670, - "19503": msg21671, - "19504": msg21672, - "19505": msg21673, - "19506": msg21674, - "19507": msg21675, - "19508": msg21676, - "19509": msg21677, - "1951": select1839, - "19510": msg21678, - "19511": msg21679, - "19512": msg21680, - "19513": msg21681, - "19514": msg21682, - "19515": msg21683, - "19516": msg21684, - "19517": msg21685, - "19518": msg21686, - "19519": msg21687, - "1952": select1840, - "19520": msg21688, - "19521": msg21689, - "19522": msg21690, - "19523": msg21691, - "19524": msg21692, - "19525": msg21693, - "19526": msg21694, - "19527": msg21695, - "19528": msg21696, - "19529": msg21697, - "1953": select1841, - "19530": msg21698, - "19531": msg21699, - "19532": msg21700, - "19533": msg21701, - "19534": msg21702, - "19535": msg21703, - "19536": msg21704, - "19537": msg21705, - "19538": msg21706, - "19539": msg21707, - "1954": select1842, - "19540": msg21708, - "19541": msg21709, - "19542": msg21710, - "19543": msg21711, - "19544": msg21712, - "19545": msg21713, - "19546": msg21714, - "19547": msg21715, - "19548": msg21716, - "19549": msg21717, - "1955": select1843, - "19550": msg21718, - "19551": msg21719, - "19552": msg21720, - "19553": msg21721, - "19554": msg21722, - "19555": msg21723, - "19556": msg21724, - "19557": msg21725, - "19558": msg21726, - "19559": msg21727, - "1956": select1844, - "19560": msg21728, - "19561": msg21729, - "19562": msg21730, - "19563": msg21731, - "19564": msg21732, - "19565": msg21733, - "19566": msg21734, - "19567": msg21735, - "19568": msg21736, - "19569": msg21737, - "1957": select1845, - "19570": msg21738, - "19571": msg21739, - "19572": msg21740, - "19573": msg21741, - "19574": msg21742, - "19575": msg21743, - "19576": msg21744, - "19577": msg21745, - "19578": msg21746, - "19579": msg21747, - "1958": select1846, - "19580": msg21748, - "19581": msg21749, - "19582": msg21750, - "19583": msg21751, - "19584": msg21752, - "19585": msg21753, - "19586": msg21754, - "19587": msg21755, - "19588": msg21756, - "19589": msg21757, - "1959": select1847, - "19590": msg21758, - "19591": msg21759, - "19592": msg21760, - "19593": msg21761, - "19594": msg21762, - "19595": msg21763, - "19596": msg21764, - "19597": msg21765, - "19598": msg21766, - "19599": msg21767, - "196": select121, - "1960": select1848, - "19600": msg21768, - "19601": msg21769, - "19602": msg21770, - "19603": msg21771, - "19604": msg21772, - "19605": msg21773, - "19606": msg21774, - "19607": msg21775, - "19608": msg21776, - "19609": msg21777, - "1961": select1849, - "19610": msg21778, - "19611": msg21779, - "19612": msg21780, - "19613": msg21781, - "19614": msg21782, - "19615": msg21783, - "19616": msg21784, - "19617": msg21785, - "19618": msg21786, - "19619": msg21787, - "1962": select1850, - "19620": msg21788, - "19621": msg21789, - "19622": msg21790, - "19623": msg21791, - "19624": msg21792, - "19625": msg21793, - "19626": msg21794, - "19627": msg21795, - "19628": msg21796, - "19629": msg21797, - "1963": select1851, - "19630": msg21798, - "19631": msg21799, - "19632": msg21800, - "19633": msg21801, - "19634": msg21802, - "19635": msg21803, - "19636": msg21804, - "19637": msg21805, - "19638": msg21806, - "19639": msg21807, - "1964": select1852, - "19640": msg21808, - "19641": msg21809, - "19642": msg21810, - "19643": msg21811, - "19644": msg21812, - "19645": msg21813, - "19646": msg21814, - "19647": msg21815, - "19648": msg21816, - "19649": msg21817, - "1965": select1853, - "19650": msg21818, - "19651": msg21819, - "19652": msg21820, - "19653": msg21821, - "19654": msg21822, - "19655": msg21823, - "19656": msg21824, - "19657": msg21825, - "19658": msg21826, - "19659": msg21827, - "1966": select1854, - "19660": msg21828, - "19661": msg21829, - "19662": msg21830, - "19663": msg21831, - "19664": msg21832, - "19665": msg21833, - "19666": msg21834, - "19667": msg21835, - "19668": msg21836, - "19669": msg21837, - "1967": select1855, - "19670": msg21838, - "19671": msg21839, - "19672": msg21840, - "19673": msg21841, - "19674": msg21842, - "19675": msg21843, - "19676": msg21844, - "19677": msg21845, - "19678": msg21846, - "19679": msg21847, - "1968": select1856, - "19680": msg21848, - "19681": msg21849, - "19682": msg21850, - "19683": msg21851, - "19684": msg21852, - "19685": msg21853, - "19686": msg21854, - "19687": msg21855, - "19688": msg21856, - "19689": msg21857, - "1969": select1857, - "19690": msg21858, - "19691": msg21859, - "19692": msg21860, - "19693": msg21861, - "19694": msg21862, - "19695": msg21863, - "19696": msg21864, - "19697": msg21865, - "19698": msg21866, - "19699": msg21867, - "197": select122, - "1970": select1858, - "19700": msg21868, - "19701": msg21869, - "19702": msg21870, - "19703": msg21871, - "19704": msg21872, - "19705": msg21873, - "19706": msg21874, - "19707": msg21875, - "19708": msg21876, - "19709": msg21877, - "1971": select1859, - "19710": msg21878, - "19711": msg21879, - "19712": msg21880, - "19713": msg21881, - "19714": msg21882, - "19715": msg21883, - "19716": msg21884, - "19717": msg21885, - "19718": msg21886, - "19719": msg21887, - "1972": select1860, - "19720": msg21888, - "19721": msg21889, - "19722": msg21890, - "19723": msg21891, - "19724": msg21892, - "19725": msg21893, - "19726": msg21894, - "19727": msg21895, - "19728": msg21896, - "19729": msg21897, - "1973": select1861, - "19730": msg21898, - "19731": msg21899, - "19732": msg21900, - "19733": msg21901, - "19734": msg21902, - "19735": msg21903, - "19736": msg21904, - "19737": msg21905, - "19738": msg21906, - "19739": msg21907, - "1974": select1862, - "19740": msg21908, - "19741": msg21909, - "19742": msg21910, - "19743": msg21911, - "19744": msg21912, - "19745": msg21913, - "19746": msg21914, - "19747": msg21915, - "19748": msg21916, - "19749": msg21917, - "1975": select1863, - "19750": msg21918, - "19751": msg21919, - "19752": msg21920, - "19753": msg21921, - "19754": msg21922, - "19755": msg21923, - "19756": msg21924, - "19757": msg21925, - "19758": msg21926, - "19759": msg21927, - "1976": select1864, - "19760": msg21928, - "19761": msg21929, - "19762": msg21930, - "19763": msg21931, - "19764": msg21932, - "19765": msg21933, - "19766": msg21934, - "19767": msg21935, - "19768": msg21936, - "19769": msg21937, - "1977": select1865, - "19770": msg21938, - "19771": msg21939, - "19772": msg21940, - "19773": msg21941, - "19774": msg21942, - "19775": msg21943, - "19776": msg21944, - "19777": msg21945, - "19778": msg21946, - "19779": msg21947, - "1978": select1866, - "19780": msg21948, - "19781": msg21949, - "19782": msg21950, - "19783": msg21951, - "19784": msg21952, - "19785": msg21953, - "19786": msg21954, - "19787": msg21955, - "19788": msg21956, - "19789": msg21957, - "1979": select1867, - "19790": msg21958, - "19791": msg21959, - "19792": msg21960, - "19793": msg21961, - "19794": msg21962, - "19795": msg21963, - "19796": msg21964, - "19797": msg21965, - "19798": msg21966, - "19799": msg21967, - "198": select123, - "1980": select1868, - "19800": msg21968, - "19801": msg21969, - "19802": msg21970, - "19803": msg21971, - "19804": msg21972, - "19805": msg21973, - "19806": msg21974, - "19807": msg21975, - "19808": msg21976, - "19809": msg21977, - "1981": select1869, - "19810": msg21978, - "19811": msg21979, - "19812": msg21980, - "19813": msg21981, - "19814": msg21982, - "19815": msg21983, - "19816": msg21984, - "19817": msg21985, - "19818": msg21986, - "19819": msg21987, - "1982": select1870, - "19820": msg21988, - "19821": msg21989, - "19822": msg21990, - "19823": msg21991, - "19824": msg21992, - "19825": msg21993, - "19826": msg21994, - "19827": msg21995, - "19828": msg21996, - "19829": msg21997, - "1983": select1871, - "19830": msg21998, - "19831": msg21999, - "19832": msg22000, - "19833": msg22001, - "19834": msg22002, - "19835": msg22003, - "19836": msg22004, - "19837": msg22005, - "19838": msg22006, - "19839": msg22007, - "1984": select1872, - "19840": msg22008, - "19841": msg22009, - "19842": msg22010, - "19843": msg22011, - "19844": msg22012, - "19845": msg22013, - "19846": msg22014, - "19847": msg22015, - "19848": msg22016, - "19849": msg22017, - "1985": select1873, - "19850": msg22018, - "19851": msg22019, - "19852": msg22020, - "19853": msg22021, - "19854": msg22022, - "19855": msg22023, - "19856": msg22024, - "19857": msg22025, - "19858": msg22026, - "19859": msg22027, - "1986": select1874, - "19860": msg22028, - "19861": msg22029, - "19862": msg22030, - "19863": msg22031, - "19864": msg22032, - "19865": msg22033, - "19866": msg22034, - "19867": msg22035, - "19868": msg22036, - "19869": msg22037, - "1987": select1875, - "19870": msg22038, - "19871": msg22039, - "19872": msg22040, - "19873": msg22041, - "19874": msg22042, - "19875": msg22043, - "19876": msg22044, - "19877": msg22045, - "19878": msg22046, - "19879": msg22047, - "1988": select1876, - "19880": msg22048, - "19881": msg22049, - "19882": msg22050, - "19883": msg22051, - "19884": msg22052, - "19885": msg22053, - "19886": msg22054, - "19887": msg22055, - "19888": msg22056, - "19889": msg22057, - "1989": select1877, - "19890": msg22058, - "19891": msg22059, - "19892": msg22060, - "19893": msg22061, - "19894": msg22062, - "19895": msg22063, - "19896": msg22064, - "19897": msg22065, - "19898": msg22066, - "19899": msg22067, - "199": select124, - "1990": select1878, - "19900": msg22068, - "19901": msg22069, - "19902": msg22070, - "19903": msg22071, - "19904": msg22072, - "19905": msg22073, - "19906": msg22074, - "19907": msg22075, - "19908": msg22076, - "19909": msg22077, - "1991": select1879, - "19910": msg22078, - "19911": msg22079, - "19912": msg22080, - "19914": msg22081, - "19915": msg22082, - "19916": msg22083, - "19917": msg22084, - "19918": msg22085, - "19919": msg22086, - "1992": select1880, - "19920": msg22087, - "19921": msg22088, - "19922": msg22089, - "19923": msg22090, - "19924": msg22091, - "19925": msg22092, - "19926": msg22093, - "19927": msg22094, - "19928": msg22095, - "19929": msg22096, - "1993": select1881, - "19930": msg22097, - "19931": msg22098, - "19932": msg22099, - "19933": msg22100, - "19934": msg22101, - "19935": msg22102, - "19936": msg22103, - "19937": msg22104, - "19938": msg22105, - "19939": msg22106, - "1994": select1882, - "19940": msg22107, - "19941": msg22108, - "19942": msg22109, - "19943": msg22110, - "19944": msg22111, - "19945": msg22112, - "19946": msg22113, - "19947": msg22114, - "19948": msg22115, - "19949": msg22116, - "1995": select1883, - "19950": msg22117, - "19951": msg22118, - "19952": msg22119, - "19953": msg22120, - "19954": msg22121, - "19955": msg22122, - "19956": msg22123, - "19957": msg22124, - "19958": msg22125, - "19959": msg22126, - "1996": select1884, - "19960": msg22127, - "19961": msg22128, - "19962": msg22129, - "19963": msg22130, - "19964": msg22131, - "19965": msg22132, - "19966": msg22133, - "19967": msg22134, - "19968": msg22135, - "19969": msg22136, - "1997": select1885, - "19970": msg22137, - "19971": msg22138, - "19972": msg22139, - "19973": msg22140, - "19974": msg22141, - "19975": msg22142, - "19976": msg22143, - "19977": msg22144, - "19978": msg22145, - "19979": msg22146, - "1998": select1886, - "19980": msg22147, - "19981": msg22148, - "19982": msg22149, - "19983": msg22150, - "19984": msg22151, - "19985": msg22152, - "19986": msg22153, - "19987": msg22154, - "19988": msg22155, - "19989": msg22156, - "1999": select1887, - "19990": msg22157, - "19991": msg22158, - "19992": msg22159, - "19993": msg22160, - "19994": msg22161, - "19995": msg22162, - "19996": msg22163, - "19997": msg22164, - "19998": msg22165, - "19999": msg22166, - "2": select8, - "20": select21, - "200": select125, - "2000": select1888, - "20000": msg22167, - "20001": msg22168, - "20002": msg22169, - "20003": msg22170, - "20004": msg22171, - "2000480": msg38326, - "20005": msg22172, - "2000538": msg38327, - "2000540": msg38328, - "2000562": msg38329, - "20006": msg22173, - "2000648": msg38330, - "20007": msg22174, - "2000716": msg38331, - "20008": msg22175, - "20009": msg22176, - "2000969": msg38332, - "2000971": msg38333, - "2000974": msg38334, - "2000976": msg38335, - "2000977": msg38336, - "2000987": msg38337, - "2000990": msg38338, - "2000993": msg38339, - "2000997": msg38340, - "2001": select1889, - "20010": msg22177, - "2001002": msg38341, - "2001010": msg38342, - "2001012": msg38343, - "2001013": msg38344, - "2001023": msg38345, - "2001025": msg38346, - "2001030": msg38347, - "2001040": msg38348, - "2001042": msg38349, - "20011": msg22178, - "20012": msg22179, - "2001244": msg38350, - "2001245": msg38351, - "2001286": msg38352, - "2001287": msg38353, - "2001288": msg38354, - "20013": msg22180, - "2001367": msg38355, - "20014": msg22181, - "2001400": msg38356, - "2001402": msg38357, - "2001411": msg38358, - "2001417": msg38359, - "2001419": msg38360, - "20015": msg22182, - "2001567": msg38361, - "2001568": msg38362, - "2001569": msg38363, - "2001579": msg38364, - "2001581": msg38365, - "20016": msg22183, - "20017": msg22184, - "2001726": msg38366, - "20018": msg22185, - "2001801": msg38367, - "2001852": msg38368, - "2001893": msg38369, - "20019": msg22186, - "2001904": msg38370, - "2001945": msg38371, - "2001970": msg38372, - "2001972": msg38373, - "2002": select1890, - "20020": msg22187, - "2002032": msg38374, - "20021": msg22188, - "2002134": msg38375, - "2002170": msg38376, - "2002176": msg38377, - "2002190": msg38378, - "2002196": msg38379, - "20022": msg22189, - "2002200": msg38380, - "2002205": msg38381, - "20023": msg22190, - "20024": msg22191, - "20025": msg22192, - "20026": msg22193, - "20027": msg22194, - "20028": msg22195, - "20029": msg22196, - "2002910": msg38382, - "2002911": msg38383, - "2002992": msg38384, - "2002993": msg38385, - "2002994": msg38386, - "2003": select1891, - "20030": msg22197, - "20031": msg22198, - "2003157": msg38387, - "2003183": msg38388, - "20032": msg22199, - "20033": msg22200, - "2003380": msg38389, - "20034": msg22201, - "20035": msg22202, - "20036": msg22203, - "2003642": msg38390, - "20037": msg22204, - "20038": msg22205, - "2003870": msg38391, - "20039": msg22206, - "2004": select1892, - "20040": msg22207, - "20041": msg22208, - "20042": msg22209, - "20043": msg22210, - "20044": msg22211, - "20045": msg22212, - "20046": msg22213, - "20047": msg22214, - "20048": msg22215, - "20049": msg22216, - "2005": select1893, - "20050": msg22217, - "20051": msg22218, - "20052": msg22219, - "20053": msg22220, - "20054": msg22221, - "20055": msg22222, - "20056": msg22223, - "20057": msg22224, - "20058": msg22225, - "20059": msg22226, - "2006": select1894, - "20060": msg22227, - "20061": msg22228, - "20062": msg22229, - "20063": msg22230, - "20064": msg22231, - "20065": msg22232, - "20066": msg22233, - "20067": msg22234, - "20068": msg22235, - "20069": msg22236, - "2007": select1895, - "20070": msg22237, - "20071": msg22238, - "2007142": msg38392, - "20072": msg22239, - "20073": msg22240, - "20074": msg22241, - "20075": msg22242, - "2007585": msg38393, - "2007588": msg38394, - "2007594": msg38395, - "20076": msg22243, - "2007688": msg38396, - "20077": msg22244, - "2007702": msg38397, - "2007724": msg38398, - "20078": msg22245, - "20079": msg22246, - "2007920": msg38399, - "2007962": msg38400, - "2007963": msg38401, - "2007964": msg38402, - "2008": select1896, - "20080": msg22247, - "2008010": msg38403, - "2008056": msg38404, - "2008059": msg38405, - "2008082": msg38406, - "20081": msg22248, - "2008109": msg38407, - "2008124": msg38408, - "2008143": msg38409, - "2008182": msg38410, - "2008194": msg38411, - "20082": msg22249, - "20083": msg22250, - "2008335": msg38412, - "2008373": msg38413, - "2008384": msg38414, - "2008386": msg38415, - "20084": msg22251, - "2008420": msg38416, - "2008475": msg38417, - "2008480": msg38418, - "20085": msg22252, - "2008505": msg38419, - "20086": msg22253, - "20087": msg22254, - "20088": msg22255, - "20089": msg22256, - "2009": select1897, - "20090": msg22257, - "20091": msg22258, - "20092": msg22259, - "20093": msg22260, - "20094": msg22261, - "20095": msg22262, - "20096": msg22263, - "20097": msg22264, - "20098": msg22265, - "20099": msg22266, - "201": select126, - "2010": select1898, - "20100": msg22267, - "20101": msg22268, - "20102": msg22269, - "20103": msg22270, - "20104": msg22271, - "20105": msg22272, - "20106": msg22273, - "20107": msg22274, - "20108": msg22275, - "20109": msg22276, - "2011": select1899, - "20110": msg22277, - "20111": msg22278, - "20112": msg22279, - "20113": msg22280, - "20114": msg22281, - "20115": msg22282, - "20116": msg22283, - "20117": msg22284, - "20118": msg22285, - "20119": msg22286, - "2012": select1900, - "20120": msg22287, - "20121": msg22288, - "20122": msg22289, - "20123": msg22290, - "20124": msg22291, - "20125": msg22292, - "20126": msg22293, - "20127": msg22294, - "20128": msg22295, - "20129": msg22296, - "2013": select1901, - "20130": msg22297, - "20131": msg22298, - "20132": msg22299, - "20133": msg22300, - "20134": msg22301, - "20135": msg22302, - "20136": msg22303, - "20137": msg22304, - "20138": msg22305, - "20139": msg22306, - "2014": select1902, - "20140": msg22307, - "20141": msg22308, - "20142": msg22309, - "20143": msg22310, - "20144": msg22311, - "20145": msg22312, - "20146": msg22313, - "20147": msg22314, - "20148": msg22315, - "20149": msg22316, - "2015": select1903, - "20150": msg22317, - "20151": msg22318, - "20152": msg22319, - "20153": msg22320, - "20154": msg22321, - "20155": msg22322, - "20156": msg22323, - "20157": msg22324, - "20158": msg22325, - "20159": msg22326, - "2016": select1904, - "20160": msg22327, - "20161": msg22328, - "20162": msg22329, - "20163": msg22330, - "20164": msg22331, - "20165": msg22332, - "20166": msg22333, - "20167": msg22334, - "20168": msg22335, - "20169": msg22336, - "2017": select1905, - "20170": msg22337, - "20171": msg22338, - "20172": msg22339, - "20173": msg22340, - "20174": msg22341, - "20175": msg22342, - "20176": msg22343, - "20177": msg22344, - "20178": msg22345, - "20179": msg22346, - "2018": select1906, - "20180": msg22347, - "20181": msg22348, - "20182": msg22349, - "20183": msg22350, - "20184": msg22351, - "20185": msg22352, - "20186": msg22353, - "20187": msg22354, - "20188": msg22355, - "20189": msg22356, - "2019": select1907, - "20190": msg22357, - "20191": msg22358, - "20192": msg22359, - "20193": msg22360, - "20194": msg22361, - "20195": msg22362, - "20196": msg22363, - "20197": msg22364, - "20198": msg22365, - "20199": msg22366, - "202": select127, - "2020": select1908, - "20200": msg22367, - "20201": msg22368, - "20202": msg22369, - "20203": msg22370, - "20204": msg22371, - "20205": msg22372, - "20206": msg22373, - "20207": msg22374, - "20208": msg22375, - "20209": msg22376, - "2021": select1909, - "20210": msg22377, - "20211": msg22378, - "20212": msg22379, - "20213": msg22380, - "20214": msg22381, - "20215": msg22382, - "20216": msg22383, - "20217": msg22384, - "20218": msg22385, - "20219": msg22386, - "2022": select1910, - "20220": msg22387, - "20221": msg22388, - "20222": msg22389, - "20223": msg22390, - "20224": msg22391, - "20225": msg22392, - "20226": msg22393, - "20227": msg22394, - "20228": msg22395, - "20229": msg22396, - "2023": select1911, - "20230": msg22397, - "20231": msg22398, - "20232": msg22399, - "20233": msg22400, - "20234": msg22401, - "20235": msg22402, - "20236": msg22403, - "20237": msg22404, - "20238": msg22405, - "20239": msg22406, - "2024": select1912, - "20240": msg22407, - "20241": msg22408, - "20242": msg22409, - "20243": msg22410, - "20244": msg22411, - "20245": msg22412, - "20246": msg22413, - "20247": msg22414, - "20248": msg22415, - "20249": msg22416, - "2025": select1913, - "20250": msg22417, - "20251": msg22418, - "20252": msg22419, - "20253": msg22420, - "20254": msg22421, - "20255": msg22422, - "20256": msg22423, - "20257": msg22424, - "20258": msg22425, - "20259": msg22426, - "2026": select1914, - "20260": msg22427, - "20261": msg22428, - "20262": msg22429, - "20263": msg22430, - "20264": msg22431, - "20265": msg22432, - "20266": msg22433, - "20267": msg22434, - "20268": msg22435, - "20269": msg22436, - "2027": select1915, - "20270": msg22437, - "20271": msg22438, - "20272": msg22439, - "20273": msg22440, - "20274": msg22441, - "20275": msg22442, - "20276": msg22443, - "20277": msg22444, - "20278": msg22445, - "20279": msg22446, - "2028": select1916, - "20280": msg22447, - "20281": msg22448, - "20282": msg22449, - "20283": msg22450, - "20284": msg22451, - "20285": msg22452, - "20286": msg22453, - "20287": msg22454, - "20288": msg22455, - "20289": msg22456, - "2029": select1917, - "20290": msg22457, - "20291": msg22458, - "20292": msg22459, - "20293": msg22460, - "20294": msg22461, - "20295": msg22462, - "20296": msg22463, - "20297": msg22464, - "20298": msg22465, - "20299": msg22466, - "203": select128, - "2030": select1918, - "20300": msg22467, - "20301": msg22468, - "20302": msg22469, - "20303": msg22470, - "20304": msg22471, - "20305": msg22472, - "20306": msg22473, - "20307": msg22474, - "20308": msg22475, - "20309": msg22476, - "2031": select1919, - "20310": msg22477, - "20311": msg22478, - "20312": msg22479, - "20313": msg22480, - "20314": msg22481, - "20315": msg22482, - "20316": msg22483, - "20317": msg22484, - "20318": msg22485, - "20319": msg22486, - "2032": select1920, - "20320": msg22487, - "20321": msg22488, - "20322": msg22489, - "20323": msg22490, - "20324": msg22491, - "20325": msg22492, - "20326": msg22493, - "20327": msg22494, - "20328": msg22495, - "20329": msg22496, - "2033": select1921, - "20330": msg22497, - "20331": msg22498, - "20332": msg22499, - "20333": msg22500, - "20334": msg22501, - "20335": msg22502, - "20336": msg22503, - "20337": msg22504, - "20338": msg22505, - "20339": msg22506, - "2034": select1922, - "20340": msg22507, - "20341": msg22508, - "20342": msg22509, - "20343": msg22510, - "20344": msg22511, - "20345": msg22512, - "20346": msg22513, - "20347": msg22514, - "20348": msg22515, - "20349": msg22516, - "2035": select1923, - "20350": msg22517, - "20351": msg22518, - "20352": msg22519, - "20353": msg22520, - "20354": msg22521, - "20355": msg22522, - "20356": msg22523, - "20357": msg22524, - "20358": msg22525, - "20359": msg22526, - "2036": select1924, - "20360": msg22527, - "20361": msg22528, - "20362": msg22529, - "20363": msg22530, - "20364": msg22531, - "20365": msg22532, - "20366": msg22533, - "20367": msg22534, - "20368": msg22535, - "20369": msg22536, - "2037": select1925, - "20370": msg22537, - "20371": msg22538, - "20372": msg22539, - "20373": msg22540, - "20374": msg22541, - "20375": msg22542, - "20376": msg22543, - "20377": msg22544, - "20378": msg22545, - "20379": msg22546, - "2038": select1926, - "20380": msg22547, - "20381": msg22548, - "20382": msg22549, - "20383": msg22550, - "20384": msg22551, - "20385": msg22552, - "20386": msg22553, - "20387": msg22554, - "20388": msg22555, - "20389": msg22556, - "2039": select1927, - "20390": msg22557, - "20391": msg22558, - "20392": msg22559, - "20393": msg22560, - "20394": msg22561, - "20395": msg22562, - "20396": msg22563, - "20397": msg22564, - "20398": msg22565, - "20399": msg22566, - "204": select129, - "2040": select1928, - "20400": msg22567, - "20401": msg22568, - "20402": msg22569, - "20403": msg22570, - "20404": msg22571, - "20405": msg22572, - "20406": msg22573, - "20407": msg22574, - "20408": msg22575, - "20409": msg22576, - "2041": select1929, - "20410": msg22577, - "20411": msg22578, - "20412": msg22579, - "20413": msg22580, - "20414": msg22581, - "20415": msg22582, - "20416": msg22583, - "20417": msg22584, - "20418": msg22585, - "20419": msg22586, - "2042": select1930, - "20420": msg22587, - "20421": msg22588, - "20422": msg22589, - "20423": msg22590, - "20424": msg22591, - "20425": msg22592, - "20426": msg22593, - "20427": msg22594, - "20428": msg22595, - "20429": msg22596, - "2043": select1931, - "20430": msg22597, - "20431": msg22598, - "20432": msg22599, - "20433": msg22600, - "20434": msg22601, - "20435": msg22602, - "20436": msg22603, - "20437": msg22604, - "20438": msg22605, - "20439": msg22606, - "2044": select1932, - "20440": msg22607, - "20441": msg22608, - "20442": msg22609, - "20443": msg22610, - "20444": msg22611, - "20445": msg22612, - "20446": msg22613, - "20447": msg22614, - "20448": msg22615, - "20449": msg22616, - "2045": select1933, - "20450": msg22617, - "20451": msg22618, - "20452": msg22619, - "20453": msg22620, - "20454": msg22621, - "20455": msg22622, - "20456": msg22623, - "20457": msg22624, - "20458": msg22625, - "20459": msg22626, - "2046": select1934, - "20460": msg22627, - "20461": msg22628, - "20462": msg22629, - "20463": msg22630, - "20464": msg22631, - "20465": msg22632, - "20466": msg22633, - "20467": msg22634, - "20468": msg22635, - "20469": msg22636, - "2047": select1935, - "20470": msg22637, - "20471": msg22638, - "20472": msg22639, - "20473": msg22640, - "20474": msg22641, - "20475": msg22642, - "20476": msg22643, - "20477": msg22644, - "20478": msg22645, - "20479": msg22646, - "2048": select1936, - "20480": msg22647, - "20481": msg22648, - "20482": msg22649, - "20483": msg22650, - "20484": msg22651, - "20485": msg22652, - "20486": msg22653, - "20487": msg22654, - "20488": msg22655, - "20489": msg22656, - "2049": select1937, - "20490": msg22657, - "20491": msg22658, - "20492": msg22659, - "20493": msg22660, - "20494": msg22661, - "20495": msg22662, - "20496": msg22663, - "20497": msg22664, - "20498": msg22665, - "20499": msg22666, - "205": select130, - "2050": select1938, - "20500": msg22667, - "20501": msg22668, - "20502": msg22669, - "20503": msg22670, - "20504": msg22671, - "20505": msg22672, - "20506": msg22673, - "20507": msg22674, - "20508": msg22675, - "20509": msg22676, - "2051": select1939, - "20510": msg22677, - "20511": msg22678, - "20512": msg22679, - "20513": msg22680, - "20514": msg22681, - "20515": msg22682, - "20516": msg22683, - "20517": msg22684, - "20518": msg22685, - "20519": msg22686, - "2052": select1940, - "20520": msg22687, - "20521": msg22688, - "20522": msg22689, - "20523": msg22690, - "20524": msg22691, - "20525": msg22692, - "20526": msg22693, - "20527": msg22694, - "20528": msg22695, - "20529": msg22696, - "2053": select1941, - "20530": msg22697, - "20531": msg22698, - "20532": msg22699, - "20533": msg22700, - "20534": msg22701, - "20535": msg22702, - "20536": msg22703, - "20537": msg22704, - "20538": msg22705, - "20539": msg22706, - "2054": select1942, - "20540": msg22707, - "20541": msg22708, - "20542": msg22709, - "20543": msg22710, - "20544": msg22711, - "20545": msg22712, - "20546": msg22713, - "20547": msg22714, - "20548": msg22715, - "20549": msg22716, - "2055": select1943, - "20550": msg22717, - "20551": msg22718, - "20552": msg22719, - "20553": msg22720, - "20554": msg22721, - "20555": msg22722, - "20556": msg22723, - "20557": msg22724, - "20558": msg22725, - "20559": msg22726, - "2056": select1944, - "20560": msg22727, - "20561": msg22728, - "20562": msg22729, - "20563": msg22730, - "20564": msg22731, - "20565": msg22732, - "20566": msg22733, - "20567": msg22734, - "20568": msg22735, - "20569": msg22736, - "2057": select1945, - "20570": msg22737, - "20571": msg22738, - "20572": msg22739, - "20573": msg22740, - "20574": msg22741, - "20575": msg22742, - "20576": msg22743, - "20577": msg22744, - "20578": msg22745, - "20579": msg22746, - "2058": select1946, - "20580": msg22747, - "20581": msg22748, - "20582": msg22749, - "20583": msg22750, - "20584": msg22751, - "20585": msg22752, - "20586": msg22753, - "20587": msg22754, - "20588": msg22755, - "20589": msg22756, - "2059": select1947, - "20590": msg22757, - "20591": msg22758, - "20592": msg22759, - "20593": msg22760, - "20594": msg22761, - "20595": msg22762, - "20596": msg22763, - "20597": msg22764, - "20598": msg22765, - "20599": msg22766, - "206": select131, - "2060": select1948, - "20600": msg22767, - "20601": msg22768, - "20602": msg22769, - "20603": msg22770, - "20604": msg22771, - "20605": msg22772, - "20606": msg22773, - "20607": msg22774, - "20608": msg22775, - "20609": msg22776, - "2061": select1949, - "20610": msg22777, - "20611": msg22778, - "20612": msg22779, - "20613": msg22780, - "20614": msg22781, - "20615": msg22782, - "20616": msg22783, - "20617": msg22784, - "20618": msg22785, - "20619": msg22786, - "2062": select1950, - "20620": msg22787, - "20621": msg22788, - "20622": msg22789, - "20623": msg22790, - "20624": msg22791, - "20625": msg22792, - "20626": msg22793, - "20627": msg22794, - "20628": msg22795, - "20629": msg22796, - "2063": select1951, - "20630": msg22797, - "20631": msg22798, - "20632": msg22799, - "20633": msg22800, - "20634": msg22801, - "20635": msg22802, - "20636": msg22803, - "20637": msg22804, - "20638": msg22805, - "20639": msg22806, - "2064": select1952, - "20640": msg22807, - "20641": msg22808, - "20642": msg22809, - "20643": msg22810, - "20644": msg22811, - "20645": msg22812, - "20646": msg22813, - "20647": msg22814, - "20648": msg22815, - "20649": msg22816, - "2065": select1953, - "20650": msg22817, - "20651": msg22818, - "20652": msg22819, - "20653": msg22820, - "20654": msg22821, - "20655": msg22822, - "20656": msg22823, - "20657": msg22824, - "20658": msg22825, - "20659": msg22826, - "2066": select1954, - "20660": msg22827, - "20661": msg22828, - "20662": msg22829, - "20663": msg22830, - "20664": msg22831, - "20665": msg22832, - "20666": msg22833, - "20667": msg22834, - "20668": msg22835, - "20669": msg22836, - "2067": select1955, - "20670": msg22837, - "20671": msg22838, - "20672": msg22839, - "20673": msg22840, - "20674": msg22841, - "20675": msg22842, - "20676": msg22843, - "20677": msg22844, - "20678": msg22845, - "20679": msg22846, - "2068": select1956, - "20680": msg22847, - "20681": msg22848, - "20682": msg22849, - "20683": msg22850, - "20684": msg22851, - "20685": msg22852, - "20686": msg22853, - "20687": msg22854, - "20688": msg22855, - "20689": msg22856, - "2069": select1957, - "20690": msg22857, - "20691": msg22858, - "20692": msg22859, - "20693": msg22860, - "20694": msg22861, - "20695": msg22862, - "20696": msg22863, - "20697": msg22864, - "20698": msg22865, - "20699": msg22866, - "207": select132, - "2070": select1958, - "20700": msg22867, - "20701": msg22868, - "20702": msg22869, - "20703": msg22870, - "20704": msg22871, - "20705": msg22872, - "20706": msg22873, - "20707": msg22874, - "20708": msg22875, - "20709": msg22876, - "2071": select1959, - "20710": msg22877, - "20711": msg22878, - "20712": msg22879, - "20713": msg22880, - "20714": msg22881, - "20715": msg22882, - "20716": msg22883, - "20717": msg22884, - "20718": msg22885, - "20719": msg22886, - "2072": select1960, - "20720": msg22887, - "20721": msg22888, - "20722": msg22889, - "20723": msg22890, - "20724": msg22891, - "20725": msg22892, - "20726": msg22893, - "20727": msg22894, - "20728": msg22895, - "20729": msg22896, - "2073": select1961, - "20730": msg22897, - "20731": msg22898, - "20732": msg22899, - "20733": msg22900, - "20734": msg22901, - "20735": msg22902, - "20736": msg22903, - "20737": msg22904, - "20738": msg22905, - "20739": msg22906, - "2074": select1962, - "20740": msg22907, - "20741": msg22908, - "20742": msg22909, - "20743": msg22910, - "20744": msg22911, - "20745": msg22912, - "20746": msg22913, - "20747": msg22914, - "20748": msg22915, - "20749": msg22916, - "2075": select1963, - "20750": msg22917, - "20751": msg22918, - "20752": msg22919, - "20753": msg22920, - "20754": msg22921, - "20755": msg22922, - "20756": msg22923, - "20757": msg22924, - "20758": msg22925, - "20759": msg22926, - "2076": select1964, - "20760": msg22927, - "20761": msg22928, - "20762": msg22929, - "20763": msg22930, - "20764": msg22931, - "20765": msg22932, - "20766": msg22933, - "20767": msg22934, - "20768": msg22935, - "20769": msg22936, - "2077": select1965, - "20770": msg22937, - "20771": msg22938, - "20772": msg22939, - "20773": msg22940, - "20774": msg22941, - "20775": msg22942, - "20776": msg22943, - "20777": msg22944, - "20778": msg22945, - "20779": msg22946, - "2078": select1966, - "20780": msg22947, - "20781": msg22948, - "20782": msg22949, - "20783": msg22950, - "20784": msg22951, - "20785": msg22952, - "20786": msg22953, - "20787": msg22954, - "20788": msg22955, - "20789": msg22956, - "2079": select1967, - "20790": msg22957, - "20791": msg22958, - "20792": msg22959, - "20793": msg22960, - "20794": msg22961, - "20795": msg22962, - "20796": msg22963, - "20797": msg22964, - "20798": msg22965, - "20799": msg22966, - "208": select133, - "2080": select1968, - "20800": msg22967, - "20801": msg22968, - "20802": msg22969, - "20803": msg22970, - "20804": msg22971, - "20805": msg22972, - "20806": msg22973, - "20807": msg22974, - "20808": msg22975, - "20809": msg22976, - "2081": select1969, - "20810": msg22977, - "20811": msg22978, - "20812": msg22979, - "20813": msg22980, - "20814": msg22981, - "20815": msg22982, - "20816": msg22983, - "20817": msg22984, - "20818": msg22985, - "20819": msg22986, - "2082": select1970, - "20820": msg22987, - "20821": msg22988, - "20822": msg22989, - "20823": msg22990, - "20824": msg22991, - "20825": msg22992, - "20826": msg22993, - "20827": msg22994, - "20828": msg22995, - "20829": msg22996, - "2083": select1971, - "20830": msg22997, - "20831": msg22998, - "20832": msg22999, - "20833": msg23000, - "20834": msg23001, - "20835": msg23002, - "20836": msg23003, - "20837": msg23004, - "20838": msg23005, - "20839": msg23006, - "2084": select1972, - "20840": msg23007, - "20841": msg23008, - "20842": msg23009, - "20843": msg23010, - "20844": msg23011, - "20845": msg23012, - "20846": msg23013, - "20847": msg23014, - "20848": msg23015, - "20849": msg23016, - "2085": select1973, - "20850": msg23017, - "20851": msg23018, - "20852": msg23019, - "20853": msg23020, - "20854": msg23021, - "20855": msg23022, - "20856": msg23023, - "20857": msg23024, - "20858": msg23025, - "20859": msg23026, - "2086": select1974, - "20860": msg23027, - "20861": msg23028, - "20862": msg23029, - "20863": msg23030, - "20864": msg23031, - "20865": msg23032, - "20866": msg23033, - "20867": msg23034, - "20868": msg23035, - "20869": msg23036, - "2087": select1975, - "20870": msg23037, - "20871": msg23038, - "20872": msg23039, - "20873": msg23040, - "20874": msg23041, - "20875": msg23042, - "20876": msg23043, - "20877": msg23044, - "20878": msg23045, - "20879": msg23046, - "2088": select1976, - "20880": msg23047, - "20881": msg23048, - "20882": msg23049, - "20883": msg23050, - "20884": msg23051, - "20885": msg23052, - "20886": msg23053, - "20887": msg23054, - "20888": msg23055, - "20889": msg23056, - "2089": select1977, - "20890": msg23057, - "20891": msg23058, - "20892": msg23059, - "20893": msg23060, - "20894": msg23061, - "20895": msg23062, - "20896": msg23063, - "20897": msg23064, - "20898": msg23065, - "20899": msg23066, - "209": select134, - "2090": select1978, - "20900": msg23067, - "20901": msg23068, - "20902": msg23069, - "20903": msg23070, - "20904": msg23071, - "20905": msg23072, - "20906": msg23073, - "20907": msg23074, - "20908": msg23075, - "20909": msg23076, - "2091": select1979, - "20910": msg23077, - "20911": msg23078, - "20912": msg23079, - "20913": msg23080, - "20914": msg23081, - "20915": msg23082, - "20916": msg23083, - "20917": msg23084, - "20918": msg23085, - "20919": msg23086, - "2092": select1980, - "20920": msg23087, - "20921": msg23088, - "20922": msg23089, - "20923": msg23090, - "20924": msg23091, - "20925": msg23092, - "20926": msg23093, - "20927": msg23094, - "20928": msg23095, - "20929": msg23096, - "2093": select1981, - "20930": msg23097, - "20931": msg23098, - "20932": msg23099, - "20933": msg23100, - "20934": msg23101, - "20935": msg23102, - "20936": msg23103, - "20937": msg23104, - "20938": msg23105, - "20939": msg23106, - "2094": select1982, - "20940": msg23107, - "20941": msg23108, - "20942": msg23109, - "20943": msg23110, - "20944": msg23111, - "20945": msg23112, - "20946": msg23113, - "20947": msg23114, - "20948": msg23115, - "20949": msg23116, - "2095": select1983, - "20950": msg23117, - "20951": msg23118, - "20952": msg23119, - "20953": msg23120, - "20954": msg23121, - "20955": msg23122, - "20956": msg23123, - "20957": msg23124, - "20958": msg23125, - "20959": msg23126, - "2096": select1984, - "20960": msg23127, - "20961": msg23128, - "20962": msg23129, - "20963": msg23130, - "20964": msg23131, - "20965": msg23132, - "20966": msg23133, - "20967": msg23134, - "20968": msg23135, - "20969": msg23136, - "2097": select1985, - "20970": msg23137, - "20971": msg23138, - "20972": msg23139, - "20973": msg23140, - "20974": msg23141, - "20975": msg23142, - "20976": msg23143, - "20977": msg23144, - "20978": msg23145, - "20979": msg23146, - "2098": select1986, - "20980": msg23147, - "20981": msg23148, - "20982": msg23149, - "20983": msg23150, - "20984": msg23151, - "20985": msg23152, - "20986": msg23153, - "20987": msg23154, - "20988": msg23155, - "20989": msg23156, - "2099": select1987, - "20990": msg23157, - "20991": msg23158, - "20992": msg23159, - "20993": msg23160, - "20994": msg23161, - "20995": msg23162, - "20996": msg23163, - "20997": msg23164, - "20998": msg23165, - "20999": msg23166, - "21": select22, - "210": select135, - "2100": select1988, - "21000": msg23167, - "21001": msg23168, - "21002": msg23169, - "21003": msg23170, - "21004": msg23171, - "21005": msg23172, - "21006": msg23173, - "2100651": msg38508, - "21007": msg23174, - "21008": msg23175, - "21009": msg23176, - "2101": select1989, - "21010": msg23177, - "21011": msg23178, - "21012": msg23179, - "21013": msg23180, - "2101384": msg38509, - "2101390": msg38510, - "21014": msg23181, - "2101424": msg38511, - "2101432": msg38512, - "21015": msg23182, - "21016": msg23183, - "21017": msg23184, - "21018": msg23185, - "2101867": msg38513, - "21019": msg23186, - "2101918": msg38514, - "2102": select1990, - "21020": msg23187, - "21021": msg23188, - "21022": msg23189, - "21023": msg23190, - "21024": msg23191, - "21025": msg23192, - "21026": msg23193, - "21027": msg23194, - "21028": msg23195, - "21029": msg23196, - "2103": select1991, - "21030": msg23197, - "21031": msg23198, - "21032": msg23199, - "21033": msg23200, - "21034": msg23201, - "21035": msg23202, - "21036": msg23203, - "21037": msg23204, - "21038": msg23205, - "21039": msg23206, - "2104": select1992, - "21040": msg23207, - "21041": msg23208, - "21042": msg23209, - "21043": msg23210, - "21044": msg23211, - "21045": msg23212, - "21046": msg23213, - "21047": msg23214, - "21048": msg23215, - "21049": msg23216, - "2105": select1993, - "21050": msg23217, - "21051": msg23218, - "21052": msg23219, - "21053": msg23220, - "21054": msg23221, - "21055": msg23222, - "21056": msg23223, - "21057": msg23224, - "21058": msg23225, - "21059": msg23226, - "2106": select1994, - "21060": msg23227, - "21061": msg23228, - "21062": msg23229, - "21063": msg23230, - "21064": msg23231, - "21065": msg23232, - "21066": msg23233, - "21067": msg23234, - "21068": msg23235, - "21069": msg23236, - "2107": select1995, - "21070": msg23237, - "21071": msg23238, - "21072": msg23239, - "21073": msg23240, - "21074": msg23241, - "21075": msg23242, - "21076": msg23243, - "21077": msg23244, - "21078": msg23245, - "21079": msg23246, - "2108": select1996, - "21080": msg23247, - "21081": msg23248, - "21082": msg23249, - "21083": msg23250, - "21084": msg23251, - "21085": msg23252, - "21086": msg23253, - "21087": msg23254, - "21088": msg23255, - "21089": msg23256, - "2109": select1997, - "21090": msg23257, - "21091": msg23258, - "21092": msg23259, - "21093": msg23260, - "21094": msg23261, - "21095": msg23262, - "21096": msg23263, - "21097": msg23264, - "21098": msg23265, - "21099": msg23266, - "211": select136, - "2110": select1998, - "21100": msg23267, - "21101": msg23268, - "21102": msg23269, - "21103": msg23270, - "21104": msg23271, - "21105": msg23272, - "21106": msg23273, - "21107": msg23274, - "21108": msg23275, - "21109": msg23276, - "2111": select1999, - "21110": msg23277, - "21111": msg23278, - "21112": msg23279, - "21113": msg23280, - "21114": msg23281, - "21115": msg23282, - "21116": msg23283, - "21117": msg23284, - "21118": msg23285, - "21119": msg23286, - "2112": select2000, - "21120": msg23287, - "21121": msg23288, - "21122": msg23289, - "21123": msg23290, - "21124": msg23291, - "21125": msg23292, - "21126": msg23293, - "21127": msg23294, - "21128": msg23295, - "21129": msg23296, - "2113": select2001, - "21130": msg23297, - "21131": msg23298, - "21132": msg23299, - "21133": msg23300, - "21134": msg23301, - "21135": msg23302, - "21136": msg23303, - "21137": msg23304, - "21138": msg23305, - "21139": msg23306, - "2114": select2002, - "21140": msg23307, - "21141": msg23308, - "21142": msg23309, - "21143": msg23310, - "21144": msg23311, - "21145": msg23312, - "21146": msg23313, - "21147": msg23314, - "21148": msg23315, - "21149": msg23316, - "2115": select2003, - "21150": msg23317, - "21151": msg23318, - "21152": msg23319, - "21153": msg23320, - "21154": msg23321, - "21155": msg23322, - "21156": msg23323, - "21157": msg23324, - "21158": msg23325, - "21159": msg23326, - "2116": select2004, - "21160": msg23327, - "21161": msg23328, - "21162": msg23329, - "21163": msg23330, - "21164": msg23331, - "21165": msg23332, - "21166": msg23333, - "21167": msg23334, - "21168": msg23335, - "21169": msg23336, - "2117": select2005, - "21170": msg23337, - "21171": msg23338, - "21172": msg23339, - "21173": msg23340, - "21174": msg23341, - "21175": msg23342, - "21176": msg23343, - "21177": msg23344, - "21178": msg23345, - "21179": msg23346, - "2118": select2006, - "21180": msg23347, - "21181": msg23348, - "21182": msg23349, - "21183": msg23350, - "21184": msg23351, - "21185": msg23352, - "21186": msg23353, - "21187": msg23354, - "21188": msg23355, - "21189": msg23356, - "2119": select2007, - "21190": msg23357, - "21191": msg23358, - "21192": msg23359, - "21193": msg23360, - "21194": msg23361, - "21195": msg23362, - "21196": msg23363, - "21197": msg23364, - "21198": msg23365, - "21199": msg23366, - "212": select137, - "2120": select2008, - "21200": msg23367, - "21201": msg23368, - "21202": msg23369, - "21203": msg23370, - "21204": msg23371, - "21205": msg23372, - "21206": msg23373, - "21207": msg23374, - "21208": msg23375, - "21209": msg23376, - "2121": select2009, - "21210": msg23377, - "21211": msg23378, - "21212": msg23379, - "21213": msg23380, - "21214": msg23381, - "21215": msg23382, - "21216": msg23383, - "21217": msg23384, - "21218": msg23385, - "21219": msg23386, - "2122": select2010, - "21220": msg23387, - "21221": msg23388, - "21222": msg23389, - "21223": msg23390, - "21224": msg23391, - "21225": msg23392, - "21226": msg23393, - "21227": msg23394, - "21228": msg23395, - "21229": msg23396, - "2123": select2011, - "21230": msg23397, - "21231": msg23398, - "21232": msg23399, - "21233": msg23400, - "21234": msg23401, - "21235": msg23402, - "21236": msg23403, - "21237": msg23404, - "21238": msg23405, - "21239": msg23406, - "2124": select2012, - "21240": msg23407, - "21241": msg23408, - "21242": msg23409, - "21243": msg23410, - "21244": msg23411, - "21245": msg23412, - "21246": msg23413, - "21247": msg23414, - "21248": msg23415, - "21249": msg23416, - "2125": select2013, - "21250": msg23417, - "21251": msg23418, - "21252": msg23419, - "21253": msg23420, - "21254": msg23421, - "21255": msg23422, - "21256": msg23423, - "21257": msg23424, - "21258": msg23425, - "21259": msg23426, - "2126": select2014, - "21260": msg23427, - "21261": msg23428, - "21262": msg23429, - "21263": msg23430, - "21264": msg23431, - "21265": msg23432, - "21266": msg23433, - "21267": msg23434, - "21268": msg23435, - "21269": msg23436, - "2127": select2015, - "21270": msg23437, - "21271": msg23438, - "21272": msg23439, - "21273": msg23440, - "21274": msg23441, - "21275": msg23442, - "21276": msg23443, - "21277": msg23444, - "21278": msg23445, - "21279": msg23446, - "2128": select2016, - "21280": msg23447, - "21281": msg23448, - "21282": msg23449, - "21283": msg23450, - "21284": msg23451, - "21285": msg23452, - "21286": msg23453, - "21287": msg23454, - "21288": msg23455, - "21289": msg23456, - "2129": select2017, - "21290": msg23457, - "21291": msg23458, - "21292": msg23459, - "21293": msg23460, - "21294": msg23461, - "21295": msg23462, - "21296": msg23463, - "21297": msg23464, - "21298": msg23465, - "21299": msg23466, - "213": select138, - "2130": select2018, - "21300": msg23467, - "21301": msg23468, - "21302": msg23469, - "21303": msg23470, - "21304": msg23471, - "21305": msg23472, - "21306": msg23473, - "21307": msg23474, - "21308": msg23475, - "21309": msg23476, - "2131": select2019, - "21310": msg23477, - "21311": msg23478, - "21312": msg23479, - "21313": msg23480, - "21314": msg23481, - "21315": msg23482, - "21316": msg23483, - "21317": msg23484, - "21318": msg23485, - "21319": msg23486, - "2132": select2020, - "21320": msg23487, - "21321": msg23488, - "21322": msg23489, - "21323": msg23490, - "21324": msg23491, - "21325": msg23492, - "21326": msg23493, - "21327": msg23494, - "21328": msg23495, - "21329": msg23496, - "2133": select2021, - "21330": msg23497, - "21331": msg23498, - "21332": msg23499, - "21333": msg23500, - "21334": msg23501, - "21335": msg23502, - "21336": msg23503, - "21337": msg23504, - "21338": msg23505, - "21339": msg23506, - "2134": select2022, - "21340": msg23507, - "21341": msg23508, - "21342": msg23509, - "21343": msg23510, - "21344": msg23511, - "21345": msg23512, - "21346": msg23513, - "21347": msg23514, - "21348": msg23515, - "21349": msg23516, - "2135": select2023, - "21350": msg23517, - "21351": msg23518, - "21352": msg23519, - "21353": msg23520, - "21354": msg23521, - "21355": msg23522, - "21356": msg23523, - "21357": msg23524, - "21358": msg23525, - "21359": msg23526, - "2136": select2024, - "21360": msg23527, - "21361": msg23528, - "21362": msg23529, - "21363": msg23530, - "21364": msg23531, - "21365": msg23532, - "21366": msg23533, - "21367": msg23534, - "21368": msg23535, - "21369": msg23536, - "2137": select2025, - "21370": msg23537, - "21371": msg23538, - "21372": msg23539, - "21373": msg23540, - "21374": msg23541, - "21375": msg23542, - "21376": msg23543, - "21377": msg23544, - "21378": msg23545, - "21379": msg23546, - "2138": select2026, - "21380": msg23547, - "21381": msg23548, - "21382": msg23549, - "21383": msg23550, - "21384": msg23551, - "21385": msg23552, - "21386": msg23553, - "21387": msg23554, - "21388": msg23555, - "21389": msg23556, - "2139": select2027, - "21390": msg23557, - "21391": msg23558, - "21392": msg23559, - "21393": msg23560, - "21394": msg23561, - "21395": msg23562, - "21396": msg23563, - "21397": msg23564, - "21398": msg23565, - "21399": msg23566, - "214": select139, - "2140": select2028, - "21400": msg23567, - "21401": msg23568, - "21402": msg23569, - "21403": msg23570, - "21404": msg23571, - "21405": msg23572, - "21406": msg23573, - "21407": msg23574, - "21408": msg23575, - "21409": msg23576, - "2141": select2029, - "21410": msg23577, - "21411": msg23578, - "21412": msg23579, - "21413": msg23580, - "21414": msg23581, - "21415": msg23582, - "21416": msg23583, - "21417": msg23584, - "21418": msg23585, - "21419": msg23586, - "2142": select2030, - "21420": msg23587, - "21421": msg23588, - "21422": msg23589, - "21423": msg23590, - "21424": msg23591, - "21425": msg23592, - "21426": msg23593, - "21427": msg23594, - "21428": msg23595, - "21429": msg23596, - "2143": select2031, - "21430": msg23597, - "21431": msg23598, - "21432": msg23599, - "21433": msg23600, - "21434": msg23601, - "21435": msg23602, - "21436": msg23603, - "21437": msg23604, - "21438": msg23605, - "21439": msg23606, - "2144": select2032, - "21440": msg23607, - "21441": msg23608, - "21442": msg23609, - "21443": msg23610, - "21444": msg23611, - "21445": msg23612, - "21446": msg23613, - "21447": msg23614, - "21448": msg23615, - "21449": msg23616, - "2145": select2033, - "21450": msg23617, - "21451": msg23618, - "21452": msg23619, - "21453": msg23620, - "21454": msg23621, - "21455": msg23622, - "21456": msg23623, - "21457": msg23624, - "21458": msg23625, - "21459": msg23626, - "2146": select2034, - "21460": msg23627, - "21461": msg23628, - "21462": msg23629, - "21463": msg23630, - "21464": msg23631, - "21465": msg23632, - "21466": msg23633, - "21467": msg23634, - "21468": msg23635, - "21469": msg23636, - "2147": select2035, - "21470": msg23637, - "21471": msg23638, - "21472": msg23639, - "21473": msg23640, - "21474": msg23641, - "21475": msg23642, - "21476": msg23643, - "21477": msg23644, - "21478": msg23645, - "21479": msg23646, - "2148": select2036, - "21480": msg23647, - "21481": msg23648, - "21482": msg23649, - "21483": msg23650, - "21484": msg23651, - "21485": msg23652, - "21486": msg23653, - "21487": msg23654, - "21488": msg23655, - "21489": msg23656, - "2149": select2037, - "21490": msg23657, - "21491": msg23658, - "21492": msg23659, - "21493": msg23660, - "21494": msg23661, - "21495": msg23662, - "21496": msg23663, - "21497": msg23664, - "21498": msg23665, - "21499": msg23666, - "215": select140, - "2150": select2038, - "21500": msg23667, - "21501": msg23668, - "21502": msg23669, - "21503": msg23670, - "21504": msg23671, - "21505": msg23672, - "21506": msg23673, - "21507": msg23674, - "21508": msg23675, - "21509": msg23676, - "2151": select2039, - "21510": msg23677, - "21511": msg23678, - "21512": msg23679, - "21513": msg23680, - "21514": msg23681, - "21515": msg23682, - "21516": msg23683, - "21517": msg23684, - "21518": msg23685, - "21519": msg23686, - "2152": select2040, - "21520": msg23687, - "21521": msg23688, - "21522": msg23689, - "21523": msg23690, - "21524": msg23691, - "21525": msg23692, - "21526": msg23693, - "21527": msg23694, - "21528": msg23695, - "21529": msg23696, - "2153": select2041, - "21530": msg23697, - "21531": msg23698, - "21532": msg23699, - "21533": msg23700, - "21534": msg23701, - "21535": msg23702, - "21536": msg23703, - "21537": msg23704, - "21538": msg23705, - "21539": msg23706, - "2154": select2042, - "21540": msg23707, - "21541": msg23708, - "21542": msg23709, - "21543": msg23710, - "21544": msg23711, - "21545": msg23712, - "21546": msg23713, - "21547": msg23714, - "21548": msg23715, - "21549": msg23716, - "2155": select2043, - "21550": msg23717, - "21551": msg23718, - "21552": msg23719, - "21553": msg23720, - "21554": msg23721, - "21555": msg23722, - "21556": msg23723, - "21557": msg23724, - "21558": msg23725, - "21559": msg23726, - "2156": select2044, - "21560": msg23727, - "21561": msg23728, - "21562": msg23729, - "21563": msg23730, - "21564": msg23731, - "21565": msg23732, - "21566": msg23733, - "21567": msg23734, - "21568": msg23735, - "21569": msg23736, - "2157": select2045, - "21570": msg23737, - "21571": msg23738, - "21572": msg23739, - "21573": msg23740, - "21574": msg23741, - "21575": msg23742, - "21576": msg23743, - "21577": msg23744, - "21578": msg23745, - "21579": msg23746, - "2158": select2046, - "21580": msg23747, - "21581": msg23748, - "21582": msg23749, - "21583": msg23750, - "21584": msg23751, - "21585": msg23752, - "21586": msg23753, - "21587": msg23754, - "21588": msg23755, - "21589": msg23756, - "2159": select2047, - "21590": msg23757, - "21591": msg23758, - "21592": msg23759, - "21593": msg23760, - "21594": msg23761, - "21595": msg23762, - "21596": msg23763, - "21597": msg23764, - "21598": msg23765, - "21599": msg23766, - "216": select141, - "2160": select2048, - "21600": msg23767, - "21601": msg23768, - "21602": msg23769, - "21603": msg23770, - "21604": msg23771, - "21605": msg23772, - "21606": msg23773, - "21607": msg23774, - "21608": msg23775, - "21609": msg23776, - "2161": select2049, - "21610": msg23777, - "21611": msg23778, - "21612": msg23779, - "21613": msg23780, - "21614": msg23781, - "21615": msg23782, - "21616": msg23783, - "21617": msg23784, - "21618": msg23785, - "21619": msg23786, - "2162": select2050, - "21620": msg23787, - "21621": msg23788, - "21622": msg23789, - "21623": msg23790, - "21624": msg23791, - "21625": msg23792, - "21626": msg23793, - "21627": msg23794, - "21628": msg23795, - "21629": msg23796, - "2163": select2051, - "21630": msg23797, - "21631": msg23798, - "21632": msg23799, - "21633": msg23800, - "21634": msg23801, - "21635": msg23802, - "21636": msg23803, - "21637": msg23804, - "21638": msg23805, - "21639": msg23806, - "2164": select2052, - "21640": msg23807, - "21641": msg23808, - "21642": msg23809, - "21643": msg23810, - "21644": msg23811, - "21645": msg23812, - "21646": msg23813, - "21647": msg23814, - "21648": msg23815, - "21649": msg23816, - "2165": select2053, - "21650": msg23817, - "21651": msg23818, - "21652": msg23819, - "21653": msg23820, - "21654": msg23821, - "21655": msg23822, - "21656": msg23823, - "21657": msg23824, - "21658": msg23825, - "21659": msg23826, - "2166": select2054, - "21660": msg23827, - "21661": msg23828, - "21662": msg23829, - "21663": msg23830, - "21664": msg23831, - "21665": msg23832, - "21666": msg23833, - "21667": msg23834, - "21668": msg23835, - "21669": msg23836, - "2167": select2055, - "21670": msg23837, - "21671": msg23838, - "21672": msg23839, - "21673": msg23840, - "21674": msg23841, - "21675": msg23842, - "21676": msg23843, - "21677": msg23844, - "21678": msg23845, - "21679": msg23846, - "2168": select2056, - "21680": msg23847, - "21681": msg23848, - "21682": msg23849, - "21683": msg23850, - "21684": msg23851, - "21685": msg23852, - "21686": msg23853, - "21687": msg23854, - "21688": msg23855, - "21689": msg23856, - "2169": select2057, - "21690": msg23857, - "21691": msg23858, - "21692": msg23859, - "21693": msg23860, - "21694": msg23861, - "21695": msg23862, - "21696": msg23863, - "21697": msg23864, - "21698": msg23865, - "21699": msg23866, - "217": select142, - "2170": select2058, - "21700": msg23867, - "21701": msg23868, - "21702": msg23869, - "21703": msg23870, - "21704": msg23871, - "21705": msg23872, - "21706": msg23873, - "21707": msg23874, - "21708": msg23875, - "21709": msg23876, - "2171": select2059, - "21710": msg23877, - "21711": msg23878, - "21712": msg23879, - "21713": msg23880, - "21714": msg23881, - "21715": msg23882, - "21716": msg23883, - "21717": msg23884, - "21718": msg23885, - "21719": msg23886, - "2172": select2060, - "21720": msg23887, - "21721": msg23888, - "21722": msg23889, - "21723": msg23890, - "21724": msg23891, - "21725": msg23892, - "21726": msg23893, - "21727": msg23894, - "21728": msg23895, - "21729": msg23896, - "2173": select2061, - "21730": msg23897, - "21731": msg23898, - "21732": msg23899, - "21733": msg23900, - "21734": msg23901, - "21735": msg23902, - "21736": msg23903, - "21737": msg23904, - "21738": msg23905, - "21739": msg23906, - "2174": select2062, - "21740": msg23907, - "21741": msg23908, - "21742": msg23909, - "21743": msg23910, - "21744": msg23911, - "21745": msg23912, - "21746": msg23913, - "21747": msg23914, - "21748": msg23915, - "21749": msg23916, - "2175": select2063, - "21750": msg23917, - "21751": msg23918, - "21752": msg23919, - "21753": msg23920, - "21754": msg23921, - "21755": msg23922, - "21756": msg23923, - "21757": msg23924, - "21758": msg23925, - "21759": msg23926, - "2176": select2064, - "21760": msg23927, - "21761": msg23928, - "21762": msg23929, - "21763": msg23930, - "21764": msg23931, - "21765": msg23932, - "21766": msg23933, - "21767": msg23934, - "21768": msg23935, - "21769": msg23936, - "2177": select2065, - "21770": msg23937, - "21771": msg23938, - "21772": msg23939, - "21773": msg23940, - "21774": msg23941, - "21775": msg23942, - "21776": msg23943, - "21777": msg23944, - "21778": msg23945, - "21779": msg23946, - "2178": select2066, - "21780": msg23947, - "21781": msg23948, - "21782": msg23949, - "21783": msg23950, - "21784": msg23951, - "21785": msg23952, - "21786": msg23953, - "21787": msg23954, - "21788": msg23955, - "21789": msg23956, - "2179": select2067, - "21790": msg23957, - "21791": msg23958, - "21792": msg23959, - "21793": msg23960, - "21794": msg23961, - "21795": msg23962, - "21796": msg23963, - "21797": msg23964, - "21798": msg23965, - "21799": msg23966, - "218": select143, - "2180": select2068, - "21800": msg23967, - "21801": msg23968, - "21802": msg23969, - "21803": msg23970, - "21804": msg23971, - "21805": msg23972, - "21806": msg23973, - "21807": msg23974, - "21808": msg23975, - "21809": msg23976, - "2181": select2069, - "21810": msg23977, - "21811": msg23978, - "21812": msg23979, - "21813": msg23980, - "21814": msg23981, - "21815": msg23982, - "21816": msg23983, - "21817": msg23984, - "21818": msg23985, - "21819": msg23986, - "2182": select2070, - "21820": msg23987, - "21821": msg23988, - "21822": msg23989, - "21823": msg23990, - "21824": msg23991, - "21825": msg23992, - "21826": msg23993, - "21827": msg23994, - "21828": msg23995, - "21829": msg23996, - "2183": select2071, - "21830": msg23997, - "21831": msg23998, - "21832": msg23999, - "21833": msg24000, - "21834": msg24001, - "21835": msg24002, - "21836": msg24003, - "21837": msg24004, - "21838": msg24005, - "21839": msg24006, - "2184": select2072, - "21840": msg24007, - "21841": msg24008, - "21842": msg24009, - "21843": msg24010, - "21844": msg24011, - "21845": msg24012, - "21846": msg24013, - "21847": msg24014, - "21848": msg24015, - "21849": msg24016, - "2185": select2073, - "21850": msg24017, - "21851": msg24018, - "21852": msg24019, - "21853": msg24020, - "21854": msg24021, - "21855": msg24022, - "21856": msg24023, - "21857": msg24024, - "21858": msg24025, - "21859": msg24026, - "2186": select2074, - "21860": msg24027, - "21861": msg24028, - "21862": msg24029, - "21863": msg24030, - "21864": msg24031, - "21865": msg24032, - "21866": msg24033, - "21867": msg24034, - "21868": msg24035, - "21869": msg24036, - "2187": select2075, - "21870": msg24037, - "21871": msg24038, - "21872": msg24039, - "21873": msg24040, - "21874": msg24041, - "21875": msg24042, - "21876": msg24043, - "21877": msg24044, - "21878": msg24045, - "21879": msg24046, - "2188": select2076, - "21880": msg24047, - "21881": msg24048, - "21882": msg24049, - "21883": msg24050, - "21884": msg24051, - "21885": msg24052, - "21886": msg24053, - "21887": msg24054, - "21888": msg24055, - "21889": msg24056, - "2189": select2077, - "21890": msg24057, - "21891": msg24058, - "21892": msg24059, - "21893": msg24060, - "21894": msg24061, - "21895": msg24062, - "21896": msg24063, - "21897": msg24064, - "21898": msg24065, - "21899": msg24066, - "219": select144, - "2190": select2078, - "21900": msg24067, - "21901": msg24068, - "21902": msg24069, - "21903": msg24070, - "21904": msg24071, - "21905": msg24072, - "21906": msg24073, - "21907": msg24074, - "21908": msg24075, - "21909": msg24076, - "2191": select2079, - "21910": msg24077, - "21911": msg24078, - "21912": msg24079, - "21913": msg24080, - "21914": msg24081, - "21915": msg24082, - "21916": msg24083, - "21917": msg24084, - "21918": msg24085, - "21919": msg24086, - "2192": select2080, - "21920": msg24087, - "21921": msg24088, - "21922": msg24089, - "21923": msg24090, - "21924": msg24091, - "21925": msg24092, - "21926": msg24093, - "21927": msg24094, - "21928": msg24095, - "21929": msg24096, - "2193": select2081, - "21930": msg24097, - "21931": msg24098, - "21932": msg24099, - "21933": msg24100, - "21934": msg24101, - "21935": msg24102, - "21937": msg24103, - "21938": msg24104, - "21939": msg24105, - "2194": select2082, - "21940": msg24106, - "21941": msg24107, - "21942": msg24108, - "21943": msg24109, - "21944": msg24110, - "21945": msg24111, - "21946": msg24112, - "21947": msg24113, - "21948": msg24114, - "21949": msg24115, - "2195": select2083, - "21950": msg24116, - "21951": msg24117, - "21952": msg24118, - "21953": msg24119, - "21954": msg24120, - "21955": msg24121, - "21956": msg24122, - "21957": msg24123, - "21958": msg24124, - "21959": msg24125, - "2196": select2084, - "21960": msg24126, - "21961": msg24127, - "21962": msg24128, - "21963": msg24129, - "21964": msg24130, - "21965": msg24131, - "21966": msg24132, - "21967": msg24133, - "21968": msg24134, - "21969": msg24135, - "2197": select2085, - "21970": msg24136, - "21971": msg24137, - "21972": msg24138, - "21973": msg24139, - "21974": msg24140, - "21975": msg24141, - "21976": msg24142, - "21977": msg24143, - "21978": msg24144, - "21979": msg24145, - "2198": select2086, - "21980": msg24146, - "21981": msg24147, - "21982": msg24148, - "21983": msg24149, - "21984": msg24150, - "21985": msg24151, - "21986": msg24152, - "21987": msg24153, - "21988": msg24154, - "21989": msg24155, - "2199": select2087, - "21990": msg24156, - "21991": msg24157, - "21992": msg24158, - "21993": msg24159, - "21994": msg24160, - "21995": msg24161, - "21996": msg24162, - "21997": msg24163, - "21998": msg24164, - "21999": msg24165, - "220": select145, - "2200": select2088, - "22000": msg24166, - "22001": msg24167, - "22002": msg24168, - "22003": msg24169, - "22004": msg24170, - "22005": msg24171, - "22006": msg24172, - "22007": msg24173, - "22008": msg24174, - "22009": msg24175, - "2201": select2089, - "22010": msg24176, - "22011": msg24177, - "22012": msg24178, - "22013": msg24179, - "22014": msg24180, - "22015": msg24181, - "22016": msg24182, - "22017": msg24183, - "22018": msg24184, - "22019": msg24185, - "2202": select2090, - "22020": msg24186, - "22021": msg24187, - "22022": msg24188, - "22023": msg24189, - "22024": msg24190, - "22025": msg24191, - "22026": msg24192, - "22027": msg24193, - "22028": msg24194, - "22029": msg24195, - "2203": select2091, - "22030": msg24196, - "22031": msg24197, - "22032": msg24198, - "22033": msg24199, - "22034": msg24200, - "22035": msg24201, - "22036": msg24202, - "22037": msg24203, - "22038": msg24204, - "22039": msg24205, - "2204": select2092, - "22040": msg24206, - "22041": msg24207, - "22042": msg24208, - "22043": msg24209, - "22044": msg24210, - "22045": msg24211, - "22046": msg24212, - "22047": msg24213, - "22048": msg24214, - "22049": msg24215, - "2205": select2093, - "22050": msg24216, - "22051": msg24217, - "22052": msg24218, - "22053": msg24219, - "22054": msg24220, - "22055": msg24221, - "22056": msg24222, - "22057": msg24223, - "22058": msg24224, - "22059": msg24225, - "2206": select2094, - "22060": msg24226, - "22061": msg24227, - "22062": msg24228, - "22063": msg24229, - "22064": msg24230, - "22065": msg24231, - "22066": msg24232, - "22067": msg24233, - "22068": msg24234, - "22069": msg24235, - "2207": select2095, - "22070": msg24236, - "22071": msg24237, - "22072": msg24238, - "22073": msg24239, - "22074": msg24240, - "22075": msg24241, - "22076": msg24242, - "22077": msg24243, - "22078": msg24244, - "22079": msg24245, - "2208": select2096, - "22080": msg24246, - "22081": msg24247, - "22082": msg24248, - "22083": msg24249, - "22084": msg24250, - "22085": msg24251, - "22086": msg24252, - "22087": msg24253, - "22088": msg24254, - "22089": msg24255, - "2209": select2097, - "22090": msg24256, - "22091": msg24257, - "22092": msg24258, - "22093": msg24259, - "22094": msg24260, - "22095": msg24261, - "22096": msg24262, - "22097": msg24263, - "22098": msg24264, - "22099": msg24265, - "221": select146, - "2210": select2098, - "22100": msg24266, - "22101": msg24267, - "22102": msg24268, - "22103": msg24269, - "22104": msg24270, - "22105": msg24271, - "22106": msg24272, - "22107": msg24273, - "22108": msg24274, - "22109": msg24275, - "2211": select2099, - "22110": msg24276, - "22111": msg24277, - "22112": msg24278, - "22113": msg24279, - "22114": msg24280, - "22115": msg24281, - "22116": msg24282, - "22117": msg24283, - "22118": msg24284, - "22119": msg24285, - "2212": select2100, - "22120": msg24286, - "22121": msg24287, - "22122": msg24288, - "22123": msg24289, - "22124": msg24290, - "22125": msg24291, - "22126": msg24292, - "22127": msg24293, - "22128": msg24294, - "22129": msg24295, - "2213": select2101, - "22130": msg24296, - "22131": msg24297, - "22132": msg24298, - "22133": msg24299, - "22134": msg24300, - "22135": msg24301, - "22136": msg24302, - "22137": msg24303, - "22138": msg24304, - "22139": msg24305, - "2214": select2102, - "22140": msg24306, - "22141": msg24307, - "22142": msg24308, - "22143": msg24309, - "22144": msg24310, - "22145": msg24311, - "22146": msg24312, - "22147": msg24313, - "22148": msg24314, - "22149": msg24315, - "2215": select2103, - "22150": msg24316, - "22151": msg24317, - "22152": msg24318, - "22153": msg24319, - "22154": msg24320, - "22155": msg24321, - "22156": msg24322, - "22157": msg24323, - "22158": msg24324, - "22159": msg24325, - "2216": select2104, - "22160": msg24326, - "22161": msg24327, - "22162": msg24328, - "22163": msg24329, - "22164": msg24330, - "22165": msg24331, - "22166": msg24332, - "22167": msg24333, - "22168": msg24334, - "22169": msg24335, - "2217": select2105, - "22170": msg24336, - "22171": msg24337, - "22172": msg24338, - "22173": msg24339, - "22174": msg24340, - "22175": msg24341, - "22176": msg24342, - "22177": msg24343, - "22178": msg24344, - "22179": msg24345, - "2218": select2106, - "22180": msg24346, - "22181": msg24347, - "22182": msg24348, - "22183": msg24349, - "22184": msg24350, - "22185": msg24351, - "22186": msg24352, - "22187": msg24353, - "22188": msg24354, - "22189": msg24355, - "2219": select2107, - "22190": msg24356, - "22191": msg24357, - "22192": msg24358, - "22193": msg24359, - "22194": msg24360, - "22195": msg24361, - "22196": msg24362, - "22197": msg24363, - "22198": msg24364, - "22199": msg24365, - "222": select147, - "2220": select2108, - "22200": msg24366, - "22201": msg24367, - "22202": msg24368, - "22203": msg24369, - "22204": msg24370, - "22205": msg24371, - "22206": msg24372, - "22207": msg24373, - "22208": msg24374, - "22209": msg24375, - "2221": select2109, - "22210": msg24376, - "22211": msg24377, - "22212": msg24378, - "22213": msg24379, - "22214": msg24380, - "22215": msg24381, - "22216": msg24382, - "22217": msg24383, - "22218": msg24384, - "22219": msg24385, - "2222": select2110, - "22220": msg24386, - "22221": msg24387, - "22222": msg24388, - "22223": msg24389, - "22224": msg24390, - "22225": msg24391, - "22226": msg24392, - "22227": msg24393, - "22228": msg24394, - "22229": msg24395, - "2223": select2111, - "22230": msg24396, - "22231": msg24397, - "22232": msg24398, - "22233": msg24399, - "22234": msg24400, - "22235": msg24401, - "22236": msg24402, - "22237": msg24403, - "22238": msg24404, - "22239": msg24405, - "2224": select2112, - "22240": msg24406, - "22241": msg24407, - "22242": msg24408, - "22243": msg24409, - "22244": msg24410, - "22245": msg24411, - "22246": msg24412, - "22247": msg24413, - "22248": msg24414, - "22249": msg24415, - "2225": select2113, - "22250": msg24416, - "22251": msg24417, - "22252": msg24418, - "22253": msg24419, - "22254": msg24420, - "22255": msg24421, - "22256": msg24422, - "22257": msg24423, - "22258": msg24424, - "22259": msg24425, - "2226": select2114, - "22260": msg24426, - "22261": msg24427, - "22262": msg24428, - "22263": msg24429, - "22264": msg24430, - "22265": msg24431, - "22266": msg24432, - "22267": msg24433, - "22268": msg24434, - "22269": msg24435, - "2227": select2115, - "22270": msg24436, - "22271": msg24437, - "22272": msg24438, - "22273": msg24439, - "22274": msg24440, - "22275": msg24441, - "22276": msg24442, - "22277": msg24443, - "22278": msg24444, - "22279": msg24445, - "2228": select2116, - "22280": msg24446, - "22281": msg24447, - "22282": msg24448, - "22283": msg24449, - "22284": msg24450, - "22285": msg24451, - "22286": msg24452, - "22287": msg24453, - "22288": msg24454, - "22289": msg24455, - "2229": select2117, - "22290": msg24456, - "22291": msg24457, - "22292": msg24458, - "22293": msg24459, - "22294": msg24460, - "22295": msg24461, - "22296": msg24462, - "22297": msg24463, - "22298": msg24464, - "22299": msg24465, - "223": select148, - "2230": select2118, - "22300": msg24466, - "22301": msg24467, - "22302": msg24468, - "22303": msg24469, - "22304": msg24470, - "22305": msg24471, - "22306": msg24472, - "22307": msg24473, - "22308": msg24474, - "22309": msg24475, - "2231": select2119, - "22310": msg24476, - "22311": msg24477, - "22312": msg24478, - "22313": msg24479, - "22314": msg24480, - "22315": msg24481, - "22316": msg24482, - "22317": msg24483, - "22318": msg24484, - "22319": msg24485, - "2232": select2120, - "22320": msg24486, - "22321": msg24487, - "22322": msg24488, - "22323": msg24489, - "22324": msg24490, - "22325": msg24491, - "22326": msg24492, - "22327": msg24493, - "22328": msg24494, - "22329": msg24495, - "2233": select2121, - "22330": msg24496, - "22331": msg24497, - "22332": msg24498, - "22333": msg24499, - "22334": msg24500, - "22335": msg24501, - "22336": msg24502, - "22337": msg24503, - "22338": msg24504, - "22339": msg24505, - "2234": select2122, - "22340": msg24506, - "22341": msg24507, - "22342": msg24508, - "22343": msg24509, - "22344": msg24510, - "22345": msg24511, - "22346": msg24512, - "22347": msg24513, - "22348": msg24514, - "22349": msg24515, - "2235": select2123, - "22350": msg24516, - "22351": msg24517, - "22352": msg24518, - "22353": msg24519, - "22354": msg24520, - "22355": msg24521, - "22356": msg24522, - "22357": msg24523, - "22358": msg24524, - "22359": msg24525, - "2236": select2124, - "22360": msg24526, - "22361": msg24527, - "22362": msg24528, - "22363": msg24529, - "22364": msg24530, - "22365": msg24531, - "22366": msg24532, - "22367": msg24533, - "22368": msg24534, - "22369": msg24535, - "2237": select2125, - "22370": msg24536, - "22371": msg24537, - "22372": msg24538, - "22373": msg24539, - "22374": msg24540, - "22375": msg24541, - "22376": msg24542, - "22377": msg24543, - "22378": msg24544, - "22379": msg24545, - "2238": select2126, - "22380": msg24546, - "22381": msg24547, - "22382": msg24548, - "22383": msg24549, - "22384": msg24550, - "22385": msg24551, - "22386": msg24552, - "22387": msg24553, - "22388": msg24554, - "22389": msg24555, - "2239": select2127, - "22390": msg24556, - "22391": msg24557, - "22392": msg24558, - "22393": msg24559, - "22394": msg24560, - "22395": msg24561, - "22396": msg24562, - "22397": msg24563, - "22398": msg24564, - "22399": msg24565, - "224": select149, - "2240": select2128, - "22400": msg24566, - "22401": msg24567, - "22402": msg24568, - "22403": msg24569, - "22404": msg24570, - "22405": msg24571, - "22406": msg24572, - "22407": msg24573, - "22408": msg24574, - "22409": msg24575, - "2241": select2129, - "22410": msg24576, - "22411": msg24577, - "22412": msg24578, - "22413": msg24579, - "22414": msg24580, - "22415": msg24581, - "22416": msg24582, - "22417": msg24583, - "22418": msg24584, - "22419": msg24585, - "2242": select2130, - "22420": msg24586, - "22421": msg24587, - "22422": msg24588, - "22423": msg24589, - "22424": msg24590, - "22425": msg24591, - "22426": msg24592, - "22427": msg24593, - "22428": msg24594, - "22429": msg24595, - "2243": select2131, - "22430": msg24596, - "22431": msg24597, - "22432": msg24598, - "22433": msg24599, - "22434": msg24600, - "22435": msg24601, - "22436": msg24602, - "22437": msg24603, - "22438": msg24604, - "22439": msg24605, - "2244": select2132, - "22440": msg24606, - "22441": msg24607, - "22442": msg24608, - "22443": msg24609, - "22444": msg24610, - "22445": msg24611, - "22446": msg24612, - "22447": msg24613, - "22448": msg24614, - "22449": msg24615, - "2245": select2133, - "22450": msg24616, - "22451": msg24617, - "22452": msg24618, - "22453": msg24619, - "22454": msg24620, - "22455": msg24621, - "22456": msg24622, - "22457": msg24623, - "22458": msg24624, - "22459": msg24625, - "2246": select2134, - "22460": msg24626, - "22461": msg24627, - "22462": msg24628, - "22463": msg24629, - "22464": msg24630, - "22465": msg24631, - "22466": msg24632, - "22467": msg24633, - "22468": msg24634, - "22469": msg24635, - "2247": select2135, - "22470": msg24636, - "22471": msg24637, - "22472": msg24638, - "22473": msg24639, - "22474": msg24640, - "22475": msg24641, - "22476": msg24642, - "22477": msg24643, - "22478": msg24644, - "22479": msg24645, - "2248": select2136, - "22480": msg24646, - "22481": msg24647, - "22482": msg24648, - "22483": msg24649, - "22484": msg24650, - "22485": msg24651, - "22486": msg24652, - "22487": msg24653, - "22488": msg24654, - "22489": msg24655, - "2249": select2137, - "22490": msg24656, - "22491": msg24657, - "22492": msg24658, - "22493": msg24659, - "22494": msg24660, - "22495": msg24661, - "22496": msg24662, - "22497": msg24663, - "22498": msg24664, - "22499": msg24665, - "225": select150, - "2250": select2138, - "22500": msg24666, - "22501": msg24667, - "22502": msg24668, - "22503": msg24669, - "22504": msg24670, - "22505": msg24671, - "22506": msg24672, - "22507": msg24673, - "22508": msg24674, - "22509": msg24675, - "2251": select2139, - "22510": msg24676, - "22511": msg24677, - "22512": msg24678, - "22513": msg24679, - "22514": msg24680, - "22515": msg24681, - "22516": msg24682, - "22517": msg24683, - "22518": msg24684, - "22519": msg24685, - "2252": select2140, - "22520": msg24686, - "22521": msg24687, - "22522": msg24688, - "22523": msg24689, - "22524": msg24690, - "22525": msg24691, - "22526": msg24692, - "22527": msg24693, - "22528": msg24694, - "22529": msg24695, - "2253": select2141, - "22530": msg24696, - "22531": msg24697, - "22532": msg24698, - "22533": msg24699, - "22534": msg24700, - "22535": msg24701, - "22536": msg24702, - "22537": msg24703, - "22538": msg24704, - "22539": msg24705, - "2254": select2142, - "22540": msg24706, - "22541": msg24707, - "22542": msg24708, - "22543": msg24709, - "22544": msg24710, - "22545": msg24711, - "22546": msg24712, - "22547": msg24713, - "22548": msg24714, - "22549": msg24715, - "2255": select2143, - "22550": msg24716, - "22551": msg24717, - "22552": msg24718, - "22553": msg24719, - "22554": msg24720, - "22555": msg24721, - "22556": msg24722, - "22557": msg24723, - "22558": msg24724, - "22559": msg24725, - "2256": select2144, - "22560": msg24726, - "22561": msg24727, - "22562": msg24728, - "22563": msg24729, - "22564": msg24730, - "22565": msg24731, - "22566": msg24732, - "22567": msg24733, - "22568": msg24734, - "22569": msg24735, - "2257": select2145, - "22570": msg24736, - "22571": msg24737, - "22572": msg24738, - "22573": msg24739, - "22574": msg24740, - "22575": msg24741, - "22576": msg24742, - "22577": msg24743, - "22578": msg24744, - "22579": msg24745, - "2258": select2146, - "22580": msg24746, - "22581": msg24747, - "22582": msg24748, - "22583": msg24749, - "22584": msg24750, - "22585": msg24751, - "22586": msg24752, - "22587": msg24753, - "22588": msg24754, - "22589": msg24755, - "2259": select2147, - "22590": msg24756, - "22591": msg24757, - "22592": msg24758, - "22593": msg24759, - "22594": msg24760, - "22595": msg24761, - "22596": msg24762, - "22597": msg24763, - "22598": msg24764, - "22599": msg24765, - "226": select151, - "2260": select2148, - "22600": msg24766, - "22601": msg24767, - "22602": msg24768, - "22603": msg24769, - "22604": msg24770, - "22605": msg24771, - "22606": msg24772, - "22607": msg24773, - "22608": msg24774, - "22609": msg24775, - "2261": select2149, - "22610": msg24776, - "22611": msg24777, - "22612": msg24778, - "22613": msg24779, - "22614": msg24780, - "22615": msg24781, - "22616": msg24782, - "22617": msg24783, - "22618": msg24784, - "22619": msg24785, - "2262": select2150, - "22620": msg24786, - "22621": msg24787, - "22622": msg24788, - "22623": msg24789, - "22624": msg24790, - "22625": msg24791, - "22626": msg24792, - "22627": msg24793, - "22628": msg24794, - "22629": msg24795, - "2263": select2151, - "22630": msg24796, - "22631": msg24797, - "22632": msg24798, - "22633": msg24799, - "22634": msg24800, - "22635": msg24801, - "22636": msg24802, - "22637": msg24803, - "22638": msg24804, - "22639": msg24805, - "2264": select2152, - "22640": msg24806, - "22641": msg24807, - "22642": msg24808, - "22643": msg24809, - "22644": msg24810, - "22645": msg24811, - "22646": msg24812, - "22647": msg24813, - "22648": msg24814, - "22649": msg24815, - "2265": select2153, - "22650": msg24816, - "22651": msg24817, - "22652": msg24818, - "22653": msg24819, - "22654": msg24820, - "22655": msg24821, - "22656": msg24822, - "22657": msg24823, - "22658": msg24824, - "22659": msg24825, - "2266": select2154, - "22660": msg24826, - "22661": msg24827, - "22662": msg24828, - "22663": msg24829, - "22664": msg24830, - "22665": msg24831, - "22666": msg24832, - "22667": msg24833, - "22668": msg24834, - "22669": msg24835, - "2267": select2155, - "22670": msg24836, - "22671": msg24837, - "22672": msg24838, - "22673": msg24839, - "22674": msg24840, - "22675": msg24841, - "22676": msg24842, - "22677": msg24843, - "22678": msg24844, - "22679": msg24845, - "2268": select2156, - "22680": msg24846, - "22681": msg24847, - "22682": msg24848, - "22683": msg24849, - "22684": msg24850, - "22685": msg24851, - "22686": msg24852, - "22687": msg24853, - "22688": msg24854, - "22689": msg24855, - "2269": select2157, - "22690": msg24856, - "22691": msg24857, - "22692": msg24858, - "22693": msg24859, - "22694": msg24860, - "22695": msg24861, - "22696": msg24862, - "22697": msg24863, - "22698": msg24864, - "22699": msg24865, - "227": select152, - "2270": select2158, - "22700": msg24866, - "22701": msg24867, - "22702": msg24868, - "22703": msg24869, - "22704": msg24870, - "22705": msg24871, - "22706": msg24872, - "22707": msg24873, - "22708": msg24874, - "22709": msg24875, - "2271": select2159, - "22710": msg24876, - "22711": msg24877, - "22712": msg24878, - "22713": msg24879, - "22714": msg24880, - "22715": msg24881, - "22716": msg24882, - "22717": msg24883, - "22718": msg24884, - "22719": msg24885, - "2272": select2160, - "22720": msg24886, - "22721": msg24887, - "22722": msg24888, - "22723": msg24889, - "22724": msg24890, - "22725": msg24891, - "22726": msg24892, - "22727": msg24893, - "22728": msg24894, - "22729": msg24895, - "2273": select2161, - "22730": msg24896, - "22731": msg24897, - "22732": msg24898, - "22733": msg24899, - "22734": msg24900, - "22735": msg24901, - "22736": msg24902, - "22737": msg24903, - "22738": msg24904, - "22739": msg24905, - "2274": select2162, - "22740": msg24906, - "22741": msg24907, - "22742": msg24908, - "22743": msg24909, - "22744": msg24910, - "22745": msg24911, - "22746": msg24912, - "22747": msg24913, - "22748": msg24914, - "22749": msg24915, - "2275": select2163, - "22750": msg24916, - "22751": msg24917, - "22752": msg24918, - "22753": msg24919, - "22754": msg24920, - "22755": msg24921, - "22756": msg24922, - "22757": msg24923, - "22758": msg24924, - "22759": msg24925, - "2276": select2164, - "22760": msg24926, - "22761": msg24927, - "22762": msg24928, - "22763": msg24929, - "22764": msg24930, - "22765": msg24931, - "22766": msg24932, - "22767": msg24933, - "22768": msg24934, - "22769": msg24935, - "2277": select2165, - "22770": msg24936, - "22771": msg24937, - "22772": msg24938, - "22773": msg24939, - "22774": msg24940, - "22775": msg24941, - "22776": msg24942, - "22777": msg24943, - "22778": msg24944, - "22779": msg24945, - "2278": select2166, - "22780": msg24946, - "22781": msg24947, - "22782": msg24948, - "22783": msg24949, - "22784": msg24950, - "22785": msg24951, - "22786": msg24952, - "22787": msg24953, - "22788": msg24954, - "22789": msg24955, - "2279": select2167, - "22790": msg24956, - "22791": msg24957, - "22792": msg24958, - "22793": msg24959, - "22794": msg24960, - "22795": msg24961, - "22796": msg24962, - "22797": msg24963, - "22798": msg24964, - "22799": msg24965, - "228": select153, - "2280": select2168, - "22800": msg24966, - "22801": msg24967, - "22802": msg24968, - "22803": msg24969, - "22804": msg24970, - "22805": msg24971, - "22806": msg24972, - "22807": msg24973, - "22808": msg24974, - "22809": msg24975, - "2281": select2169, - "22810": msg24976, - "22811": msg24977, - "22812": msg24978, - "22813": msg24979, - "22814": msg24980, - "22815": msg24981, - "22816": msg24982, - "22817": msg24983, - "22818": msg24984, - "22819": msg24985, - "2282": select2170, - "22820": msg24986, - "22821": msg24987, - "22822": msg24988, - "22823": msg24989, - "22824": msg24990, - "22825": msg24991, - "22826": msg24992, - "22827": msg24993, - "22828": msg24994, - "22829": msg24995, - "2283": select2171, - "22830": msg24996, - "22831": msg24997, - "22832": msg24998, - "22833": msg24999, - "22834": msg25000, - "22835": msg25001, - "22836": msg25002, - "22837": msg25003, - "22838": msg25004, - "22839": msg25005, - "2284": select2172, - "22840": msg25006, - "22841": msg25007, - "22842": msg25008, - "22843": msg25009, - "22844": msg25010, - "22845": msg25011, - "22846": msg25012, - "22847": msg25013, - "22848": msg25014, - "22849": msg25015, - "2285": select2173, - "22850": msg25016, - "22851": msg25017, - "22852": msg25018, - "22853": msg25019, - "22854": msg25020, - "22855": msg25021, - "22856": msg25022, - "22857": msg25023, - "22858": msg25024, - "22859": msg25025, - "2286": select2174, - "22860": msg25026, - "22861": msg25027, - "22862": msg25028, - "22863": msg25029, - "22864": msg25030, - "22865": msg25031, - "22866": msg25032, - "22867": msg25033, - "22868": msg25034, - "22869": msg25035, - "2287": select2175, - "22870": msg25036, - "22871": msg25037, - "22872": msg25038, - "22873": msg25039, - "22874": msg25040, - "22875": msg25041, - "22876": msg25042, - "22877": msg25043, - "22878": msg25044, - "22879": msg25045, - "2288": select2176, - "22880": msg25046, - "22881": msg25047, - "22882": msg25048, - "22883": msg25049, - "22884": msg25050, - "22885": msg25051, - "22886": msg25052, - "22887": msg25053, - "22888": msg25054, - "22889": msg25055, - "2289": select2177, - "22890": msg25056, - "22891": msg25057, - "22892": msg25058, - "22893": msg25059, - "22894": msg25060, - "22895": msg25061, - "22896": msg25062, - "22897": msg25063, - "22898": msg25064, - "22899": msg25065, - "229": select154, - "2290": select2178, - "22900": msg25066, - "22901": msg25067, - "22902": msg25068, - "22903": msg25069, - "22904": msg25070, - "22905": msg25071, - "22906": msg25072, - "22907": msg25073, - "22908": msg25074, - "22909": msg25075, - "2291": select2179, - "22910": msg25076, - "22911": msg25077, - "22912": msg25078, - "22913": msg25079, - "22914": msg25080, - "22915": msg25081, - "22916": msg25082, - "22917": msg25083, - "22918": msg25084, - "22919": msg25085, - "2292": select2180, - "22920": msg25086, - "22921": msg25087, - "22922": msg25088, - "22923": msg25089, - "22924": msg25090, - "22925": msg25091, - "22926": msg25092, - "22927": msg25093, - "22928": msg25094, - "22929": msg25095, - "2293": select2181, - "22930": msg25096, - "22931": msg25097, - "22932": msg25098, - "22933": msg25099, - "22934": msg25100, - "22935": msg25101, - "22936": msg25102, - "22937": msg25103, - "22938": msg25104, - "22939": msg25105, - "2294": select2182, - "22940": msg25106, - "22941": msg25107, - "22942": msg25108, - "22943": msg25109, - "22944": msg25110, - "22945": msg25111, - "22946": msg25112, - "22947": msg25113, - "22948": msg25114, - "22949": msg25115, - "2295": select2183, - "22950": msg25116, - "22951": msg25117, - "22952": msg25118, - "22953": msg25119, - "22954": msg25120, - "22955": msg25121, - "22956": msg25122, - "22957": msg25123, - "22958": msg25124, - "22959": msg25125, - "2296": select2184, - "22960": msg25126, - "22961": msg25127, - "22962": msg25128, - "22963": msg25129, - "22964": msg25130, - "22965": msg25131, - "22966": msg25132, - "22967": msg25133, - "22968": msg25134, - "22969": msg25135, - "2297": select2185, - "22970": msg25136, - "22971": msg25137, - "22972": msg25138, - "22973": msg25139, - "22974": msg25140, - "22975": msg25141, - "22976": msg25142, - "22977": msg25143, - "22978": msg25144, - "22979": msg25145, - "2298": select2186, - "22980": msg25146, - "22981": msg25147, - "22982": msg25148, - "22983": msg25149, - "22984": msg25150, - "22985": msg25151, - "22986": msg25152, - "22987": msg25153, - "22988": msg25154, - "22989": msg25155, - "2299": select2187, - "22990": msg25156, - "22991": msg25157, - "22992": msg25158, - "22993": msg25159, - "22994": msg25160, - "22995": msg25161, - "22996": msg25162, - "22997": msg25163, - "22998": msg25164, - "22999": msg25165, - "23": select23, - "230": select155, - "2300": select2188, - "23000": msg25166, - "23001": msg25167, - "23002": msg25168, - "23003": msg25169, - "23004": msg25170, - "23005": msg25171, - "23006": msg25172, - "23007": msg25173, - "23008": msg25174, - "23009": msg25175, - "2301": select2189, - "23010": msg25176, - "23011": msg25177, - "23012": msg25178, - "23013": msg25179, - "23014": msg25180, - "23015": msg25181, - "23016": msg25182, - "23017": msg25183, - "23018": msg25184, - "23019": msg25185, - "2302": select2190, - "23020": msg25186, - "23021": msg25187, - "23022": msg25188, - "23023": msg25189, - "23024": msg25190, - "23025": msg25191, - "23026": msg25192, - "23027": msg25193, - "23028": msg25194, - "23029": msg25195, - "2303": select2191, - "23030": msg25196, - "23031": msg25197, - "23032": msg25198, - "23033": msg25199, - "23034": msg25200, - "23035": msg25201, - "23036": msg25202, - "23037": msg25203, - "23038": msg25204, - "23039": msg25205, - "2304": select2192, - "23040": msg25206, - "23041": msg25207, - "23042": msg25208, - "23043": msg25209, - "23044": msg25210, - "23045": msg25211, - "23046": msg25212, - "23047": msg25213, - "23048": msg25214, - "23049": msg25215, - "2305": select2193, - "23050": msg25216, - "23051": msg25217, - "23054": msg25218, - "23055": msg25219, - "23056": msg25220, - "23057": msg25221, - "23058": msg25222, - "23059": msg25223, - "2306": select2194, - "23060": msg25224, - "23061": msg25225, - "23062": msg25226, - "23063": msg25227, - "23064": msg25228, - "23065": msg25229, - "23066": msg25230, - "23067": msg25231, - "23068": msg25232, - "23069": msg25233, - "2307": select2195, - "23070": msg25234, - "23071": msg25235, - "23072": msg25236, - "23073": msg25237, - "23074": msg25238, - "23075": msg25239, - "23076": msg25240, - "23077": msg25241, - "23078": msg25242, - "23079": msg25243, - "2308": select2196, - "23080": msg25244, - "23081": msg25245, - "23082": msg25246, - "23083": msg25247, - "23084": msg25248, - "23085": msg25249, - "23086": msg25250, - "23087": msg25251, - "23088": msg25252, - "23089": msg25253, - "2309": select2197, - "23090": msg25254, - "23091": msg25255, - "23092": msg25256, - "23093": msg25257, - "23094": msg25258, - "23095": msg25259, - "23096": msg25260, - "23097": msg25261, - "23098": msg25262, - "23099": msg25263, - "231": select156, - "2310": select2198, - "23100": msg25264, - "23101": msg25265, - "23102": msg25266, - "23103": msg25267, - "23104": msg25268, - "23105": msg25269, - "23106": msg25270, - "23107": msg25271, - "23108": msg25272, - "23109": msg25273, - "2311": select2199, - "23110": msg25274, - "23111": msg25275, - "23112": msg25276, - "23113": msg25277, - "23114": msg25278, - "23115": msg25279, - "23116": msg25280, - "23117": msg25281, - "23118": msg25282, - "23119": msg25283, - "2312": select2200, - "23120": msg25284, - "23121": msg25285, - "23122": msg25286, - "23123": msg25287, - "23124": msg25288, - "23125": msg25289, - "23126": msg25290, - "23127": msg25291, - "23128": msg25292, - "23129": msg25293, - "2313": select2201, - "23130": msg25294, - "23131": msg25295, - "23132": msg25296, - "23133": msg25297, - "23134": msg25298, - "23135": msg25299, - "23136": msg25300, - "23137": msg25301, - "23138": msg25302, - "23139": msg25303, - "2314": select2202, - "23140": msg25304, - "23141": msg25305, - "23142": msg25306, - "23143": msg25307, - "23144": msg25308, - "23145": msg25309, - "23146": msg25310, - "23147": msg25311, - "23148": msg25312, - "23149": msg25313, - "2315": select2203, - "23150": msg25314, - "23151": msg25315, - "23152": msg25316, - "23153": msg25317, - "23154": msg25318, - "23155": msg25319, - "23156": msg25320, - "23157": msg25321, - "23158": msg25322, - "23159": msg25323, - "2316": select2204, - "23160": msg25324, - "23161": msg25325, - "23162": msg25326, - "23163": msg25327, - "23164": msg25328, - "23165": msg25329, - "23166": msg25330, - "23167": msg25331, - "23168": msg25332, - "23169": msg25333, - "2317": select2205, - "23170": msg25334, - "23171": msg25335, - "23172": msg25336, - "23173": msg25337, - "23174": msg25338, - "23175": msg25339, - "23176": msg25340, - "23177": msg25341, - "23178": msg25342, - "23179": msg25343, - "2318": select2206, - "23180": msg25344, - "23181": msg25345, - "23182": msg25346, - "23183": msg25347, - "23184": msg25348, - "23185": msg25349, - "23186": msg25350, - "23187": msg25351, - "23188": msg25352, - "23189": msg25353, - "2319": select2207, - "23190": msg25354, - "23191": msg25355, - "23192": msg25356, - "23193": msg25357, - "23194": msg25358, - "23195": msg25359, - "23196": msg25360, - "23197": msg25361, - "23198": msg25362, - "23199": msg25363, - "232": select157, - "2320": select2208, - "23200": msg25364, - "23201": msg25365, - "23202": msg25366, - "23203": msg25367, - "23204": msg25368, - "23205": msg25369, - "23206": msg25370, - "23207": msg25371, - "23208": msg25372, - "23209": msg25373, - "2321": select2209, - "23210": msg25374, - "23211": msg25375, - "23212": msg25376, - "23213": msg25377, - "23214": msg25378, - "23215": msg25379, - "23216": msg25380, - "23217": msg25381, - "23218": msg25382, - "23219": msg25383, - "2322": select2210, - "23220": msg25384, - "23221": msg25385, - "23222": msg25386, - "23223": msg25387, - "23224": msg25388, - "23225": msg25389, - "23226": msg25390, - "23227": msg25391, - "23228": msg25392, - "23229": msg25393, - "2323": select2211, - "23230": msg25394, - "23231": msg25395, - "23232": msg25396, - "23233": msg25397, - "23234": msg25398, - "23235": msg25399, - "23236": msg25400, - "23237": msg25401, - "23238": msg25402, - "23239": msg25403, - "2324": select2212, - "23240": msg25404, - "23241": msg25405, - "23242": msg25406, - "23243": msg25407, - "23244": msg25408, - "23245": msg25409, - "23246": msg25410, - "23247": msg25411, - "23248": msg25412, - "23249": msg25413, - "2325": select2213, - "23250": msg25414, - "23251": msg25415, - "23252": msg25416, - "23253": msg25417, - "23254": msg25418, - "23255": msg25419, - "23256": msg25420, - "23257": msg25421, - "23258": msg25422, - "23259": msg25423, - "2326": select2214, - "23260": msg25424, - "23261": msg25425, - "23262": msg25426, - "23263": msg25427, - "23264": msg25428, - "23265": msg25429, - "23266": msg25430, - "23267": msg25431, - "23268": msg25432, - "23269": msg25433, - "2327": select2215, - "23270": msg25434, - "23271": msg25435, - "23272": msg25436, - "23273": msg25437, - "23274": msg25438, - "23275": msg25439, - "23276": msg25440, - "23277": msg25441, - "23278": msg25442, - "23279": msg25443, - "2328": select2216, - "23280": msg25444, - "23281": msg25445, - "23282": msg25446, - "23283": msg25447, - "23284": msg25448, - "23285": msg25449, - "23286": msg25450, - "23287": msg25451, - "23288": msg25452, - "23289": msg25453, - "2329": select2217, - "23290": msg25454, - "23291": msg25455, - "23292": msg25456, - "23293": msg25457, - "23294": msg25458, - "23295": msg25459, - "23296": msg25460, - "23297": msg25461, - "23298": msg25462, - "23299": msg25463, - "233": select158, - "2330": select2218, - "23300": msg25464, - "23301": msg25465, - "23302": msg25466, - "23303": msg25467, - "23304": msg25468, - "23305": msg25469, - "23306": msg25470, - "23307": msg25471, - "23308": msg25472, - "23309": msg25473, - "2331": select2219, - "23310": msg25474, - "23311": msg25475, - "23312": msg25476, - "23313": msg25477, - "23314": msg25478, - "23315": msg25479, - "23316": msg25480, - "23317": msg25481, - "23318": msg25482, - "23319": msg25483, - "2332": select2220, - "23320": msg25484, - "23321": msg25485, - "23322": msg25486, - "23323": msg25487, - "23324": msg25488, - "23325": msg25489, - "23326": msg25490, - "23327": msg25491, - "23328": msg25492, - "23329": msg25493, - "2333": select2221, - "23330": msg25494, - "23331": msg25495, - "23332": msg25496, - "23333": msg25497, - "23334": msg25498, - "23335": msg25499, - "23336": msg25500, - "23337": msg25501, - "23338": msg25502, - "23339": msg25503, - "2334": select2222, - "23340": msg25504, - "23341": msg25505, - "23342": msg25506, - "23343": msg25507, - "23344": msg25508, - "23345": msg25509, - "23346": msg25510, - "23347": msg25511, - "23348": msg25512, - "23349": msg25513, - "2335": select2223, - "23350": msg25514, - "23351": msg25515, - "23352": msg25516, - "23353": msg25517, - "23354": msg25518, - "23355": msg25519, - "23356": msg25520, - "23357": msg25521, - "23358": msg25522, - "23359": msg25523, - "2336": select2224, - "23360": msg25524, - "23361": msg25525, - "23362": msg25526, - "23363": msg25527, - "23364": msg25528, - "23365": msg25529, - "23366": msg25530, - "23367": msg25531, - "23368": msg25532, - "23369": msg25533, - "2337": select2225, - "23370": msg25534, - "23371": msg25535, - "23372": msg25536, - "23373": msg25537, - "23374": msg25538, - "23375": msg25539, - "23376": msg25540, - "23377": msg25541, - "23378": msg25542, - "23379": msg25543, - "2338": select2226, - "23380": msg25544, - "23381": msg25545, - "23382": msg25546, - "23383": msg25547, - "23384": msg25548, - "23385": msg25549, - "23386": msg25550, - "23387": msg25551, - "23388": msg25552, - "23389": msg25553, - "2339": select2227, - "23390": msg25554, - "23391": msg25555, - "23392": msg25556, - "23393": msg25557, - "23394": msg25558, - "23395": msg25559, - "23396": msg25560, - "23397": msg25561, - "23398": msg25562, - "23399": msg25563, - "234": select159, - "2340": select2228, - "23400": msg25564, - "23401": msg25565, - "23402": msg25566, - "23403": msg25567, - "23404": msg25568, - "23405": msg25569, - "23406": msg25570, - "23407": msg25571, - "23408": msg25572, - "23409": msg25573, - "2341": select2229, - "23410": msg25574, - "23411": msg25575, - "23412": msg25576, - "23413": msg25577, - "23414": msg25578, - "23415": msg25579, - "23416": msg25580, - "23417": msg25581, - "23418": msg25582, - "23419": msg25583, - "2342": select2230, - "23420": msg25584, - "23421": msg25585, - "23422": msg25586, - "23423": msg25587, - "23424": msg25588, - "23425": msg25589, - "23426": msg25590, - "23427": msg25591, - "23428": msg25592, - "23429": msg25593, - "2343": select2231, - "23430": msg25594, - "23431": msg25595, - "23432": msg25596, - "23433": msg25597, - "23434": msg25598, - "23435": msg25599, - "23436": msg25600, - "23437": msg25601, - "23438": msg25602, - "23439": msg25603, - "2344": select2232, - "23440": msg25604, - "23441": msg25605, - "23442": msg25606, - "23443": msg25607, - "23444": msg25608, - "23445": msg25609, - "23446": msg25610, - "23447": msg25611, - "23448": msg25612, - "23449": msg25613, - "2345": select2233, - "23450": msg25614, - "23451": msg25615, - "23452": msg25616, - "23453": msg25617, - "23454": msg25618, - "23455": msg25619, - "23456": msg25620, - "23457": msg25621, - "23458": msg25622, - "23459": msg25623, - "2346": select2234, - "23460": msg25624, - "23461": msg25625, - "23462": msg25626, - "23463": msg25627, - "23464": msg25628, - "23465": msg25629, - "23466": msg25630, - "23467": msg25631, - "23468": msg25632, - "23469": msg25633, - "2347": select2235, - "23470": msg25634, - "23471": msg25635, - "23472": msg25636, - "23473": msg25637, - "23474": msg25638, - "23475": msg25639, - "23476": msg25640, - "23477": msg25641, - "23478": msg25642, - "23479": msg25643, - "2348": select2236, - "23480": msg25644, - "23481": msg25645, - "23482": msg25646, - "23483": msg25647, - "23484": msg25648, - "23485": msg25649, - "23486": msg25650, - "23487": msg25651, - "23488": msg25652, - "23489": msg25653, - "2349": select2237, - "23490": msg25654, - "23491": msg25655, - "23492": msg25656, - "23493": msg25657, - "23494": msg25658, - "23495": msg25659, - "23496": msg25660, - "23497": msg25661, - "23498": msg25662, - "23499": msg25663, - "235": select160, - "2350": select2238, - "23500": msg25664, - "23501": msg25665, - "23502": msg25666, - "23503": msg25667, - "23504": msg25668, - "23505": msg25669, - "23506": msg25670, - "23507": msg25671, - "23508": msg25672, - "23509": msg25673, - "2351": select2239, - "23510": msg25674, - "23511": msg25675, - "23512": msg25676, - "23513": msg25677, - "23514": msg25678, - "23515": msg25679, - "23516": msg25680, - "23517": msg25681, - "23518": msg25682, - "23519": msg25683, - "2352": select2240, - "23520": msg25684, - "23521": msg25685, - "23522": msg25686, - "23523": msg25687, - "23524": msg25688, - "23525": msg25689, - "23526": msg25690, - "23527": msg25691, - "23528": msg25692, - "23529": msg25693, - "2353": select2241, - "23530": msg25694, - "23531": msg25695, - "23532": msg25696, - "23533": msg25697, - "23534": msg25698, - "23535": msg25699, - "23536": msg25700, - "23537": msg25701, - "23538": msg25702, - "23539": msg25703, - "2354": select2242, - "23540": msg25704, - "23541": msg25705, - "23542": msg25706, - "23543": msg25707, - "23544": msg25708, - "23545": msg25709, - "23546": msg25710, - "23547": msg25711, - "23548": msg25712, - "23549": msg25713, - "2355": select2243, - "23550": msg25714, - "23551": msg25715, - "23552": msg25716, - "23553": msg25717, - "23554": msg25718, - "23555": msg25719, - "23556": msg25720, - "23557": msg25721, - "23558": msg25722, - "23559": msg25723, - "2356": select2244, - "23560": msg25724, - "23561": msg25725, - "23562": msg25726, - "23563": msg25727, - "23564": msg25728, - "23565": msg25729, - "23566": msg25730, - "23567": msg25731, - "23568": msg25732, - "23569": msg25733, - "2357": select2245, - "23570": msg25734, - "23571": msg25735, - "23572": msg25736, - "23573": msg25737, - "23574": msg25738, - "23575": msg25739, - "23576": msg25740, - "23577": msg25741, - "23578": msg25742, - "23579": msg25743, - "2358": select2246, - "23580": msg25744, - "23581": msg25745, - "23582": msg25746, - "23583": msg25747, - "23584": msg25748, - "23585": msg25749, - "23586": msg25750, - "23587": msg25751, - "23588": msg25752, - "23589": msg25753, - "2359": select2247, - "23590": msg25754, - "23591": msg25755, - "23592": msg25756, - "23593": msg25757, - "23594": msg25758, - "23595": msg25759, - "23596": msg25760, - "23597": msg25761, - "23598": msg25762, - "23599": msg25763, - "236": select161, - "2360": select2248, - "23600": msg25764, - "23601": msg25765, - "23602": msg25766, - "23603": msg25767, - "23604": msg25768, - "23605": msg25769, - "23606": msg25770, - "23607": msg25771, - "23608": msg25772, - "23609": msg25773, - "2361": select2249, - "23610": msg25774, - "23611": msg25775, - "23612": msg25776, - "23613": msg25777, - "23614": msg25778, - "23615": msg25779, - "23616": msg25780, - "23617": msg25781, - "23618": msg25782, - "23619": msg25783, - "2362": select2250, - "23620": msg25784, - "23621": msg25785, - "23622": msg25786, - "23623": msg25787, - "23624": msg25788, - "23625": msg25789, - "23626": msg25790, - "23627": msg25791, - "23628": msg25792, - "23629": msg25793, - "2363": select2251, - "23630": msg25794, - "23631": msg25795, - "23632": msg25796, - "23633": msg25797, - "23634": msg25798, - "23635": msg25799, - "23636": msg25800, - "23637": msg25801, - "23638": msg25802, - "23639": msg25803, - "2364": select2252, - "23640": msg25804, - "23641": msg25805, - "23642": msg25806, - "23643": msg25807, - "23644": msg25808, - "23645": msg25809, - "23646": msg25810, - "23647": msg25811, - "23648": msg25812, - "23649": msg25813, - "2365": select2253, - "23650": msg25814, - "23651": msg25815, - "23652": msg25816, - "23653": msg25817, - "23654": msg25818, - "23655": msg25819, - "23656": msg25820, - "23657": msg25821, - "23658": msg25822, - "23659": msg25823, - "2366": select2254, - "23660": msg25824, - "23661": msg25825, - "23662": msg25826, - "23663": msg25827, - "23664": msg25828, - "23665": msg25829, - "23666": msg25830, - "23667": msg25831, - "23668": msg25832, - "23669": msg25833, - "2367": select2255, - "23670": msg25834, - "23671": msg25835, - "23672": msg25836, - "23673": msg25837, - "23674": msg25838, - "23675": msg25839, - "23676": msg25840, - "23677": msg25841, - "23678": msg25842, - "23679": msg25843, - "2368": select2256, - "23680": msg25844, - "23681": msg25845, - "23682": msg25846, - "23683": msg25847, - "23684": msg25848, - "23685": msg25849, - "23686": msg25850, - "23687": msg25851, - "23688": msg25852, - "23689": msg25853, - "2369": select2257, - "23690": msg25854, - "23691": msg25855, - "23692": msg25856, - "23693": msg25857, - "23694": msg25858, - "23695": msg25859, - "23696": msg25860, - "23697": msg25861, - "23698": msg25862, - "23699": msg25863, - "237": select162, - "2370": select2258, - "23700": msg25864, - "23701": msg25865, - "23702": msg25866, - "23703": msg25867, - "23704": msg25868, - "23705": msg25869, - "23706": msg25870, - "23707": msg25871, - "23708": msg25872, - "23709": msg25873, - "2371": select2259, - "23710": msg25874, - "23711": msg25875, - "23712": msg25876, - "23713": msg25877, - "23714": msg25878, - "23715": msg25879, - "23716": msg25880, - "23717": msg25881, - "23718": msg25882, - "23719": msg25883, - "2372": select2260, - "23720": msg25884, - "23721": msg25885, - "23722": msg25886, - "23723": msg25887, - "23724": msg25888, - "23725": msg25889, - "23726": msg25890, - "23727": msg25891, - "23728": msg25892, - "23729": msg25893, - "2373": select2261, - "23730": msg25894, - "23731": msg25895, - "23732": msg25896, - "23733": msg25897, - "23734": msg25898, - "23735": msg25899, - "23736": msg25900, - "23737": msg25901, - "23738": msg25902, - "23739": msg25903, - "2374": select2262, - "23740": msg25904, - "23741": msg25905, - "23742": msg25906, - "23743": msg25907, - "23744": msg25908, - "23745": msg25909, - "23746": msg25910, - "23747": msg25911, - "23748": msg25912, - "23749": msg25913, - "2375": select2263, - "23750": msg25914, - "23751": msg25915, - "23752": msg25916, - "23753": msg25917, - "23754": msg25918, - "23755": msg25919, - "23756": msg25920, - "23757": msg25921, - "23758": msg25922, - "23759": msg25923, - "2376": select2264, - "23760": msg25924, - "23761": msg25925, - "23762": msg25926, - "23763": msg25927, - "23764": msg25928, - "23765": msg25929, - "23766": msg25930, - "23767": msg25931, - "23768": msg25932, - "23769": msg25933, - "2377": select2265, - "23770": msg25934, - "23771": msg25935, - "23772": msg25936, - "23773": msg25937, - "23774": msg25938, - "23775": msg25939, - "23776": msg25940, - "23777": msg25941, - "23778": msg25942, - "23779": msg25943, - "2378": select2266, - "23780": msg25944, - "23781": msg25945, - "23782": msg25946, - "23783": msg25947, - "23784": msg25948, - "23785": msg25949, - "23786": msg25950, - "23787": msg25951, - "23788": msg25952, - "23789": msg25953, - "2379": select2267, - "23790": msg25954, - "23791": msg25955, - "23792": msg25956, - "23793": msg25957, - "23794": msg25958, - "23795": msg25959, - "23796": msg25960, - "23797": msg25961, - "23798": msg25962, - "23799": msg25963, - "238": select163, - "2380": select2268, - "23800": msg25964, - "23801": msg25965, - "23802": msg25966, - "23803": msg25967, - "23804": msg25968, - "23805": msg25969, - "23806": msg25970, - "23807": msg25971, - "23808": msg25972, - "23809": msg25973, - "2381": select2269, - "23810": msg25974, - "23811": msg25975, - "23812": msg25976, - "23813": msg25977, - "23814": msg25978, - "23815": msg25979, - "23816": msg25980, - "23817": msg25981, - "23818": msg25982, - "23819": msg25983, - "2382": select2270, - "23820": msg25984, - "23821": msg25985, - "23822": msg25986, - "23823": msg25987, - "23824": msg25988, - "23825": msg25989, - "23826": msg25990, - "23827": msg25991, - "23828": msg25992, - "23829": msg25993, - "2383": select2271, - "23830": msg25994, - "23831": msg25995, - "23832": msg25996, - "23833": msg25997, - "23834": msg25998, - "23835": msg25999, - "23836": msg26000, - "23837": msg26001, - "23838": msg26002, - "23839": msg26003, - "2384": select2272, - "23840": msg26004, - "23841": msg26005, - "23842": msg26006, - "23843": msg26007, - "23844": msg26008, - "23845": msg26009, - "23846": msg26010, - "23847": msg26011, - "23848": msg26012, - "23849": msg26013, - "2385": select2273, - "23850": msg26014, - "23851": msg26015, - "23852": msg26016, - "23853": msg26017, - "23854": msg26018, - "23855": msg26019, - "23856": msg26020, - "23857": msg26021, - "23858": msg26022, - "23859": msg26023, - "2386": select2274, - "23860": msg26024, - "23861": msg26025, - "23862": msg26026, - "23863": msg26027, - "23864": msg26028, - "23865": msg26029, - "23866": msg26030, - "23867": msg26031, - "23868": msg26032, - "23869": msg26033, - "2387": select2275, - "23870": msg26034, - "23871": msg26035, - "23872": msg26036, - "23873": msg26037, - "23874": msg26038, - "23875": msg26039, - "23876": msg26040, - "23877": msg26041, - "23878": msg26042, - "23879": msg26043, - "2388": select2276, - "23880": msg26044, - "23881": msg26045, - "23882": msg26046, - "23883": msg26047, - "23884": msg26048, - "23885": msg26049, - "23886": msg26050, - "23887": msg26051, - "23888": msg26052, - "23889": msg26053, - "2389": select2277, - "23890": msg26054, - "23891": msg26055, - "23892": msg26056, - "23893": msg26057, - "23894": msg26058, - "23895": msg26059, - "23896": msg26060, - "23897": msg26061, - "23898": msg26062, - "23899": msg26063, - "239": select164, - "2390": select2278, - "23900": msg26064, - "23901": msg26065, - "23902": msg26066, - "23903": msg26067, - "23904": msg26068, - "23905": msg26069, - "23906": msg26070, - "23907": msg26071, - "23908": msg26072, - "23909": msg26073, - "2391": select2279, - "23910": msg26074, - "23911": msg26075, - "23912": msg26076, - "23913": msg26077, - "23914": msg26078, - "23915": msg26079, - "23916": msg26080, - "23917": msg26081, - "23918": msg26082, - "23919": msg26083, - "2392": select2280, - "23920": msg26084, - "23921": msg26085, - "23922": msg26086, - "23923": msg26087, - "23924": msg26088, - "23925": msg26089, - "23926": msg26090, - "23927": msg26091, - "23928": msg26092, - "23929": msg26093, - "2393": select2281, - "23930": msg26094, - "23931": msg26095, - "23932": msg26096, - "23933": msg26097, - "23934": msg26098, - "23935": msg26099, - "23936": msg26100, - "23937": msg26101, - "23938": msg26102, - "23939": msg26103, - "2394": select2282, - "23940": msg26104, - "23941": msg26105, - "23942": msg26106, - "23943": msg26107, - "23944": msg26108, - "23945": msg26109, - "23946": msg26110, - "23947": msg26111, - "23948": msg26112, - "23949": msg26113, - "2395": select2283, - "23950": msg26114, - "23951": msg26115, - "23952": msg26116, - "23953": msg26117, - "23954": msg26118, - "23955": msg26119, - "23956": msg26120, - "23957": msg26121, - "23958": msg26122, - "23959": msg26123, - "2396": select2284, - "23960": msg26124, - "23961": msg26125, - "23962": msg26126, - "23963": msg26127, - "23964": msg26128, - "23965": msg26129, - "23966": msg26130, - "23967": msg26131, - "23968": msg26132, - "23969": msg26133, - "2397": select2285, - "23970": msg26134, - "23971": msg26135, - "23972": msg26136, - "23973": msg26137, - "23974": msg26138, - "23975": msg26139, - "23976": msg26140, - "23977": msg26141, - "23978": msg26142, - "23979": msg26143, - "2398": select2286, - "23980": msg26144, - "23981": msg26145, - "23982": msg26146, - "23983": msg26147, - "23984": msg26148, - "23985": msg26149, - "23986": msg26150, - "23987": msg26151, - "23988": msg26152, - "23989": msg26153, - "2399": select2287, - "23990": msg26154, - "23991": msg26155, - "23992": msg26156, - "23993": msg26157, - "23994": msg26158, - "23995": msg26159, - "23996": msg26160, - "23997": msg26161, - "23998": msg26162, - "23999": msg26163, - "24": msg57, - "240": select165, - "2400": select2288, - "24000": msg26164, - "24001": msg26165, - "24002": msg26166, - "24003": msg26167, - "24004": msg26168, - "24005": msg26169, - "24006": msg26170, - "24007": msg26171, - "24008": msg26172, - "24009": msg26173, - "2401": select2289, - "24010": msg26174, - "24011": msg26175, - "24012": msg26176, - "24013": msg26177, - "24014": msg26178, - "24015": msg26179, - "24016": msg26180, - "24017": msg26181, - "24018": msg26182, - "24019": msg26183, - "2402": select2290, - "24020": msg26184, - "24021": msg26185, - "24022": msg26186, - "24023": msg26187, - "24024": msg26188, - "24025": msg26189, - "24026": msg26190, - "24027": msg26191, - "24028": msg26192, - "24029": msg26193, - "2403": select2291, - "24030": msg26194, - "24031": msg26195, - "24032": msg26196, - "24033": msg26197, - "24034": msg26198, - "24035": msg26199, - "24036": msg26200, - "24037": msg26201, - "24038": msg26202, - "24039": msg26203, - "2404": select2292, - "24040": msg26204, - "2404003": msg38420, - "2404011": msg38421, - "2404013": msg38422, - "2404015": msg38423, - "2404016": msg38424, - "24041": msg26205, - "24042": msg26206, - "24043": msg26207, - "24044": msg26208, - "24045": msg26209, - "24046": msg26210, - "24047": msg26211, - "24048": msg26212, - "24049": msg26213, - "2405": select2293, - "24050": msg26214, - "24051": msg26215, - "24052": msg26216, - "24053": msg26217, - "24054": msg26218, - "24055": msg26219, - "24056": msg26220, - "24057": msg26221, - "24058": msg26222, - "24059": msg26223, - "2406": select2294, - "24060": msg26224, - "24061": msg26225, - "24062": msg26226, - "24063": msg26227, - "24064": msg26228, - "24065": msg26229, - "24066": msg26230, - "24067": msg26231, - "24068": msg26232, - "24069": msg26233, - "2407": select2295, - "24070": msg26234, - "24071": msg26235, - "24072": msg26236, - "24073": msg26237, - "24074": msg26238, - "24075": msg26239, - "24076": msg26240, - "24077": msg26241, - "24078": msg26242, - "24079": msg26243, - "2408": select2296, - "24080": msg26244, - "24081": msg26245, - "24082": msg26246, - "24083": msg26247, - "24084": msg26248, - "24085": msg26249, - "24086": msg26250, - "24087": msg26251, - "24088": msg26252, - "24089": msg26253, - "2409": select2297, - "24090": msg26254, - "24091": msg26255, - "24092": msg26256, - "24093": msg26257, - "24094": msg26258, - "24095": msg26259, - "24096": msg26260, - "24097": msg26261, - "24098": msg26262, - "24099": msg26263, - "241": select166, - "2410": select2298, - "24100": msg26264, - "24101": msg26265, - "24102": msg26266, - "24103": msg26267, - "24104": msg26268, - "24105": msg26269, - "24106": msg26270, - "24107": msg26271, - "24108": msg26272, - "24109": msg26273, - "2411": select2299, - "24110": msg26274, - "24111": msg26275, - "24112": msg26276, - "24113": msg26277, - "24114": msg26278, - "24115": msg26279, - "24116": msg26280, - "24117": msg26281, - "24118": msg26282, - "24119": msg26283, - "2412": select2300, - "24120": msg26284, - "24121": msg26285, - "24122": msg26286, - "24123": msg26287, - "24124": msg26288, - "24125": msg26289, - "24126": msg26290, - "24127": msg26291, - "24128": msg26292, - "24129": msg26293, - "2413": select2301, - "24130": msg26294, - "24131": msg26295, - "24132": msg26296, - "24133": msg26297, - "24134": msg26298, - "24135": msg26299, - "24136": msg26300, - "24137": msg26301, - "24138": msg26302, - "24139": msg26303, - "2414": select2302, - "24140": msg26304, - "24141": msg26305, - "24142": msg26306, - "24143": msg26307, - "24144": msg26308, - "24145": msg26309, - "24146": msg26310, - "24147": msg26311, - "24148": msg26312, - "24149": msg26313, - "2415": select2303, - "24150": msg26314, - "24151": msg26315, - "24152": msg26316, - "24153": msg26317, - "24154": msg26318, - "24155": msg26319, - "24156": msg26320, - "24157": msg26321, - "24158": msg26322, - "24159": msg26323, - "2416": select2304, - "24160": msg26324, - "24161": msg26325, - "24162": msg26326, - "24163": msg26327, - "24164": msg26328, - "24165": msg26329, - "24166": msg26330, - "24167": msg26331, - "24168": msg26332, - "24169": msg26333, - "2417": select2305, - "24170": msg26334, - "24171": msg26335, - "24172": msg26336, - "24173": msg26337, - "24174": msg26338, - "24175": msg26339, - "24176": msg26340, - "24177": msg26341, - "24178": msg26342, - "24179": msg26343, - "2418": select2306, - "24180": msg26344, - "24181": msg26345, - "24182": msg26346, - "24183": msg26347, - "24184": msg26348, - "24185": msg26349, - "24186": msg26350, - "24187": msg26351, - "24188": msg26352, - "24189": msg26353, - "2419": select2307, - "24190": msg26354, - "24191": msg26355, - "24192": msg26356, - "24193": msg26357, - "24194": msg26358, - "24195": msg26359, - "24196": msg26360, - "24197": msg26361, - "24198": msg26362, - "24199": msg26363, - "2420": select2308, - "24200": msg26364, - "24201": msg26365, - "24202": msg26366, - "24203": msg26367, - "24204": msg26368, - "24205": msg26369, - "24206": msg26370, - "24207": msg26371, - "24208": msg26372, - "24209": msg26373, - "2421": select2309, - "24210": msg26374, - "24211": msg26375, - "24212": msg26376, - "24213": msg26377, - "24214": msg26378, - "24215": msg26379, - "24216": msg26380, - "24217": msg26381, - "24218": msg26382, - "24219": msg26383, - "2422": select2310, - "24220": msg26384, - "24221": msg26385, - "24222": msg26386, - "24223": msg26387, - "24224": msg26388, - "24225": msg26389, - "24226": msg26390, - "24227": msg26391, - "24228": msg26392, - "24229": msg26393, - "2423": select2311, - "24230": msg26394, - "24231": msg26395, - "24232": msg26396, - "24233": msg26397, - "24234": msg26398, - "24235": msg26399, - "24236": msg26400, - "24237": msg26401, - "24238": msg26402, - "24239": msg26403, - "2424": select2312, - "24240": msg26404, - "24241": msg26405, - "24242": msg26406, - "24243": msg26407, - "24244": msg26408, - "24245": msg26409, - "24246": msg26410, - "24247": msg26411, - "24248": msg26412, - "24249": msg26413, - "2425": select2313, - "24250": msg26414, - "24251": msg26415, - "24252": msg26416, - "24253": msg26417, - "24254": msg26418, - "24255": msg26419, - "24256": msg26420, - "24257": msg26421, - "24258": msg26422, - "24259": msg26423, - "2426": select2314, - "24260": msg26424, - "24261": msg26425, - "24262": msg26426, - "24263": msg26427, - "24264": msg26428, - "24265": msg26429, - "24266": msg26430, - "24267": msg26431, - "24268": msg26432, - "24269": msg26433, - "2427": select2315, - "24270": msg26434, - "24271": msg26435, - "24272": msg26436, - "24273": msg26437, - "24274": msg26438, - "24275": msg26439, - "24276": msg26440, - "24277": msg26441, - "24278": msg26442, - "24279": msg26443, - "2428": select2316, - "24280": msg26444, - "24281": msg26445, - "24282": msg26446, - "24283": msg26447, - "24284": msg26448, - "24285": msg26449, - "24286": msg26450, - "24287": msg26451, - "24288": msg26452, - "24289": msg26453, - "2429": select2317, - "24290": msg26454, - "24291": msg26455, - "24292": msg26456, - "24293": msg26457, - "24294": msg26458, - "24295": msg26459, - "24296": msg26460, - "24297": msg26461, - "24298": msg26462, - "24299": msg26463, - "243": select167, - "2430": select2318, - "24300": msg26464, - "24301": msg26465, - "24302": msg26466, - "24303": msg26467, - "24304": msg26468, - "24305": msg26469, - "24306": msg26470, - "24307": msg26471, - "24308": msg26472, - "24309": msg26473, - "2431": select2319, - "24310": msg26474, - "24311": msg26475, - "24312": msg26476, - "24313": msg26477, - "24314": msg26478, - "24315": msg26479, - "24316": msg26480, - "24317": msg26481, - "24318": msg26482, - "24319": msg26483, - "2432": select2320, - "24320": msg26484, - "24321": msg26485, - "24322": msg26486, - "24323": msg26487, - "24324": msg26488, - "24325": msg26489, - "24326": msg26490, - "24327": msg26491, - "24328": msg26492, - "24329": msg26493, - "2433": select2321, - "24330": msg26494, - "24331": msg26495, - "24332": msg26496, - "24333": msg26497, - "24334": msg26498, - "24335": msg26499, - "24336": msg26500, - "24337": msg26501, - "24338": msg26502, - "24339": msg26503, - "2434": select2322, - "24340": msg26504, - "24341": msg26505, - "24342": msg26506, - "24343": msg26507, - "24344": msg26508, - "24345": msg26509, - "24346": msg26510, - "24347": msg26511, - "24348": msg26512, - "24349": msg26513, - "2435": select2323, - "24350": msg26514, - "24351": msg26515, - "24352": msg26516, - "24353": msg26517, - "24354": msg26518, - "24355": msg26519, - "24356": msg26520, - "24357": msg26521, - "24358": msg26522, - "24359": msg26523, - "2436": select2324, - "24360": msg26524, - "24361": msg26525, - "24362": msg26526, - "24363": msg26527, - "24364": msg26528, - "24365": msg26529, - "24366": msg26530, - "24367": msg26531, - "24368": msg26532, - "24369": msg26533, - "2437": select2325, - "24370": msg26534, - "24371": msg26535, - "24372": msg26536, - "24373": msg26537, - "24374": msg26538, - "24375": msg26539, - "24376": msg26540, - "24377": msg26541, - "24378": msg26542, - "24379": msg26543, - "2438": select2326, - "24380": msg26544, - "24381": msg26545, - "24382": msg26546, - "24383": msg26547, - "24384": msg26548, - "24385": msg26549, - "24386": msg26550, - "24387": msg26551, - "24388": msg26552, - "24389": msg26553, - "2439": select2327, - "24390": msg26554, - "24391": msg26555, - "24392": msg26556, - "24393": msg26557, - "24394": msg26558, - "24395": msg26559, - "24396": msg26560, - "24397": msg26561, - "24398": msg26562, - "24399": msg26563, - "244": select168, - "2440": select2328, - "24400": msg26564, - "24401": msg26565, - "24402": msg26566, - "24403": msg26567, - "24404": msg26568, - "24405": msg26569, - "24406": msg26570, - "24407": msg26571, - "24408": msg26572, - "24409": msg26573, - "2441": select2329, - "24410": msg26574, - "24411": msg26575, - "24412": msg26576, - "24413": msg26577, - "24414": msg26578, - "24415": msg26579, - "24416": msg26580, - "24417": msg26581, - "24418": msg26582, - "24419": msg26583, - "2442": select2330, - "24420": msg26584, - "24421": msg26585, - "24422": msg26586, - "24423": msg26587, - "24424": msg26588, - "24425": msg26589, - "24426": msg26590, - "24427": msg26591, - "24428": msg26592, - "24429": msg26593, - "2443": select2331, - "24430": msg26594, - "24431": msg26595, - "24432": msg26596, - "24433": msg26597, - "24434": msg26598, - "24435": msg26599, - "24436": msg26600, - "24437": msg26601, - "24438": msg26602, - "24439": msg26603, - "2444": select2332, - "24440": msg26604, - "24441": msg26605, - "24442": msg26606, - "24443": msg26607, - "24444": msg26608, - "24445": msg26609, - "24446": msg26610, - "24447": msg26611, - "24448": msg26612, - "24449": msg26613, - "2445": select2333, - "24450": msg26614, - "24451": msg26615, - "24452": msg26616, - "24453": msg26617, - "24454": msg26618, - "24455": msg26619, - "24456": msg26620, - "24457": msg26621, - "24458": msg26622, - "24459": msg26623, - "2446": select2334, - "24460": msg26624, - "24461": msg26625, - "24462": msg26626, - "24463": msg26627, - "24464": msg26628, - "24465": msg26629, - "24466": msg26630, - "24467": msg26631, - "24468": msg26632, - "24469": msg26633, - "2447": select2335, - "24470": msg26634, - "24471": msg26635, - "24472": msg26636, - "24473": msg26637, - "24474": msg26638, - "24475": msg26639, - "24476": msg26640, - "24477": msg26641, - "24478": msg26642, - "24479": msg26643, - "2448": select2336, - "24480": msg26644, - "24481": msg26645, - "24482": msg26646, - "24483": msg26647, - "24484": msg26648, - "24485": msg26649, - "24486": msg26650, - "24487": msg26651, - "24488": msg26652, - "24489": msg26653, - "2449": select2337, - "24490": msg26654, - "24491": msg26655, - "24492": msg26656, - "24493": msg26657, - "24494": msg26658, - "24495": msg26659, - "24496": msg26660, - "24497": msg26661, - "24498": msg26662, - "24499": msg26663, - "245": select169, - "2450": select2338, - "24500": msg26664, - "24501": msg26665, - "24502": msg26666, - "24503": msg26667, - "24504": msg26668, - "24505": msg26669, - "24506": msg26670, - "24507": msg26671, - "24508": msg26672, - "24509": msg26673, - "2451": select2339, - "24510": msg26674, - "24511": msg26675, - "24512": msg26676, - "24513": msg26677, - "24514": msg26678, - "24515": msg26679, - "24516": msg26680, - "24517": msg26681, - "24518": msg26682, - "24519": msg26683, - "2452": select2340, - "24520": msg26684, - "24521": msg26685, - "24522": msg26686, - "24523": msg26687, - "24524": msg26688, - "24525": msg26689, - "24526": msg26690, - "24527": msg26691, - "24528": msg26692, - "24529": msg26693, - "2453": select2341, - "24530": msg26694, - "24531": msg26695, - "24532": msg26696, - "24533": msg26697, - "24534": msg26698, - "24535": msg26699, - "24536": msg26700, - "24537": msg26701, - "24538": msg26702, - "24539": msg26703, - "2454": select2342, - "24540": msg26704, - "24541": msg26705, - "24542": msg26706, - "24543": msg26707, - "24544": msg26708, - "24545": msg26709, - "24546": msg26710, - "24547": msg26711, - "24548": msg26712, - "24549": msg26713, - "2455": select2343, - "24550": msg26714, - "24551": msg26715, - "24552": msg26716, - "24553": msg26717, - "24554": msg26718, - "24555": msg26719, - "24556": msg26720, - "24557": msg26721, - "24558": msg26722, - "24559": msg26723, - "2456": select2344, - "24560": msg26724, - "24561": msg26725, - "24562": msg26726, - "24563": msg26727, - "24564": msg26728, - "24565": msg26729, - "24566": msg26730, - "24567": msg26731, - "24568": msg26732, - "24569": msg26733, - "2457": select2345, - "24570": msg26734, - "24571": msg26735, - "24572": msg26736, - "24573": msg26737, - "24574": msg26738, - "24575": msg26739, - "24576": msg26740, - "24577": msg26741, - "24578": msg26742, - "24579": msg26743, - "2458": select2346, - "24580": msg26744, - "24581": msg26745, - "24582": msg26746, - "24583": msg26747, - "24584": msg26748, - "24585": msg26749, - "24586": msg26750, - "24587": msg26751, - "24588": msg26752, - "24589": msg26753, - "2459": select2347, - "24590": msg26754, - "24591": msg26755, - "24592": msg26756, - "24593": msg26757, - "24594": msg26758, - "24595": msg26759, - "24596": msg26760, - "24597": msg26761, - "24598": msg26762, - "24599": msg26763, - "246": select170, - "2460": select2348, - "24600": msg26764, - "24601": msg26765, - "24602": msg26766, - "24603": msg26767, - "24604": msg26768, - "24605": msg26769, - "24606": msg26770, - "24607": msg26771, - "24608": msg26772, - "24609": msg26773, - "2461": select2349, - "24610": msg26774, - "24611": msg26775, - "24612": msg26776, - "24613": msg26777, - "24614": msg26778, - "24615": msg26779, - "24616": msg26780, - "24617": msg26781, - "24618": msg26782, - "24619": msg26783, - "2462": select2350, - "24620": msg26784, - "24621": msg26785, - "24622": msg26786, - "24623": msg26787, - "24624": msg26788, - "24625": msg26789, - "24626": msg26790, - "24627": msg26791, - "24628": msg26792, - "24629": msg26793, - "2463": select2351, - "24630": msg26794, - "24631": msg26795, - "24632": msg26796, - "24633": msg26797, - "24634": msg26798, - "24635": msg26799, - "24636": msg26800, - "24637": msg26801, - "24638": msg26802, - "24639": msg26803, - "2464": select2352, - "24640": msg26804, - "24641": msg26805, - "24642": msg26806, - "24643": msg26807, - "24644": msg26808, - "24645": msg26809, - "24646": msg26810, - "24647": msg26811, - "24648": msg26812, - "24649": msg26813, - "2465": select2353, - "24650": msg26814, - "24651": msg26815, - "24652": msg26816, - "24653": msg26817, - "24654": msg26818, - "24655": msg26819, - "24656": msg26820, - "24657": msg26821, - "24658": msg26822, - "24659": msg26823, - "2466": select2354, - "24660": msg26824, - "24661": msg26825, - "24662": msg26826, - "24663": msg26827, - "24664": msg26828, - "24665": msg26829, - "24666": msg26830, - "24667": msg26831, - "24668": msg26832, - "24669": msg26833, - "2467": select2355, - "24670": msg26834, - "24671": msg26835, - "24672": msg26836, - "24673": msg26837, - "24674": msg26838, - "24675": msg26839, - "24676": msg26840, - "24677": msg26841, - "24678": msg26842, - "24679": msg26843, - "2468": select2356, - "24680": msg26844, - "24681": msg26845, - "24682": msg26846, - "24683": msg26847, - "24684": msg26848, - "24685": msg26849, - "24686": msg26850, - "24687": msg26851, - "24688": msg26852, - "24689": msg26853, - "2469": select2357, - "24690": msg26854, - "24691": msg26855, - "24692": msg26856, - "24693": msg26857, - "24694": msg26858, - "24695": msg26859, - "24696": msg26860, - "24697": msg26861, - "24698": msg26862, - "24699": msg26863, - "247": select171, - "2470": select2358, - "24700": msg26864, - "24701": msg26865, - "24702": msg26866, - "24703": msg26867, - "24704": msg26868, - "24705": msg26869, - "24706": msg26870, - "24707": msg26871, - "24708": msg26872, - "24709": msg26873, - "2471": select2359, - "24710": msg26874, - "24711": msg26875, - "24712": msg26876, - "24713": msg26877, - "24714": msg26878, - "24715": msg26879, - "24716": msg26880, - "24717": msg26881, - "24718": msg26882, - "24719": msg26883, - "2472": select2360, - "24720": msg26884, - "24721": msg26885, - "24722": msg26886, - "24723": msg26887, - "24724": msg26888, - "24725": msg26889, - "24726": msg26890, - "24727": msg26891, - "24728": msg26892, - "24729": msg26893, - "2473": select2361, - "24730": msg26894, - "24731": msg26895, - "24732": msg26896, - "24733": msg26897, - "24734": msg26898, - "24735": msg26899, - "24736": msg26900, - "24737": msg26901, - "24738": msg26902, - "24739": msg26903, - "2474": select2362, - "24740": msg26904, - "24741": msg26905, - "24742": msg26906, - "24743": msg26907, - "24744": msg26908, - "24745": msg26909, - "24746": msg26910, - "24747": msg26911, - "24748": msg26912, - "24749": msg26913, - "2475": select2363, - "24750": msg26914, - "24751": msg26915, - "24752": msg26916, - "24753": msg26917, - "24754": msg26918, - "24755": msg26919, - "24756": msg26920, - "24757": msg26921, - "24758": msg26922, - "24759": msg26923, - "2476": select2364, - "24760": msg26924, - "24761": msg26925, - "24762": msg26926, - "24763": msg26927, - "24764": msg26928, - "24765": msg26929, - "24766": msg26930, - "24767": msg26931, - "24768": msg26932, - "24769": msg26933, - "2477": select2365, - "24770": msg26934, - "24771": msg26935, - "24772": msg26936, - "24773": msg26937, - "24774": msg26938, - "24775": msg26939, - "24776": msg26940, - "24777": msg26941, - "24778": msg26942, - "24779": msg26943, - "2478": select2366, - "24780": msg26944, - "24781": msg26945, - "24782": msg26946, - "24783": msg26947, - "24784": msg26948, - "24785": msg26949, - "24786": msg26950, - "24787": msg26951, - "24788": msg26952, - "24789": msg26953, - "2479": select2367, - "24790": msg26954, - "24791": msg26955, - "24792": msg26956, - "24793": msg26957, - "24794": msg26958, - "24795": msg26959, - "24796": msg26960, - "24797": msg26961, - "24798": msg26962, - "24799": msg26963, - "248": select172, - "2480": select2368, - "24800": msg26964, - "24801": msg26965, - "24802": msg26966, - "24803": msg26967, - "24804": msg26968, - "24805": msg26969, - "24806": msg26970, - "24807": msg26971, - "24808": msg26972, - "24809": msg26973, - "2481": select2369, - "24810": msg26974, - "24811": msg26975, - "24812": msg26976, - "24813": msg26977, - "24814": msg26978, - "24815": msg26979, - "24816": msg26980, - "24817": msg26981, - "24818": msg26982, - "24819": msg26983, - "2482": select2370, - "24820": msg26984, - "24821": msg26985, - "24822": msg26986, - "24823": msg26987, - "24824": msg26988, - "24825": msg26989, - "24826": msg26990, - "24827": msg26991, - "24828": msg26992, - "24829": msg26993, - "2483": select2371, - "24830": msg26994, - "24831": msg26995, - "24832": msg26996, - "24833": msg26997, - "24834": msg26998, - "24835": msg26999, - "24836": msg27000, - "24837": msg27001, - "24838": msg27002, - "24839": msg27003, - "2484": select2372, - "24840": msg27004, - "24841": msg27005, - "24842": msg27006, - "24843": msg27007, - "24844": msg27008, - "24845": msg27009, - "24846": msg27010, - "24847": msg27011, - "24848": msg27012, - "24849": msg27013, - "2485": select2373, - "24850": msg27014, - "24851": msg27015, - "24852": msg27016, - "24853": msg27017, - "24854": msg27018, - "24855": msg27019, - "24856": msg27020, - "24857": msg27021, - "24858": msg27022, - "24859": msg27023, - "2486": select2374, - "24860": msg27024, - "24861": msg27025, - "24862": msg27026, - "24863": msg27027, - "24864": msg27028, - "24865": msg27029, - "24866": msg27030, - "24867": msg27031, - "24868": msg27032, - "24869": msg27033, - "2487": select2375, - "24870": msg27034, - "24871": msg27035, - "24872": msg27036, - "24873": msg27037, - "24874": msg27038, - "24875": msg27039, - "24876": msg27040, - "24877": msg27041, - "24878": msg27042, - "24879": msg27043, - "2488": select2376, - "24880": msg27044, - "24881": msg27045, - "24882": msg27046, - "24883": msg27047, - "24884": msg27048, - "24885": msg27049, - "24886": msg27050, - "24887": msg27051, - "24888": msg27052, - "24889": msg27053, - "2489": select2377, - "24890": msg27054, - "24891": msg27055, - "24892": msg27056, - "24893": msg27057, - "24894": msg27058, - "24895": msg27059, - "24896": msg27060, - "24897": msg27061, - "24898": msg27062, - "24899": msg27063, - "249": select173, - "2490": select2378, - "24900": msg27064, - "24901": msg27065, - "24902": msg27066, - "24903": msg27067, - "24904": msg27068, - "24905": msg27069, - "24906": msg27070, - "24907": msg27071, - "24908": msg27072, - "24909": msg27073, - "2491": select2379, - "24910": msg27074, - "24911": msg27075, - "24912": msg27076, - "24913": msg27077, - "24914": msg27078, - "24915": msg27079, - "24916": msg27080, - "24917": msg27081, - "24918": msg27082, - "2492": select2380, - "2493": select2381, - "2494": select2382, - "2495": select2383, - "24955": msg27083, - "24956": msg27084, - "24957": msg27085, - "24958": msg27086, - "24959": msg27087, - "2496": select2384, - "24960": msg27088, - "24961": msg27089, - "24962": msg27090, - "24963": msg27091, - "24964": msg27092, - "24965": msg27093, - "24966": msg27094, - "24967": msg27095, - "24968": msg27096, - "24969": msg27097, - "2497": select2385, - "24970": msg27098, - "24971": msg27099, - "24972": msg27100, - "24973": msg27101, - "24974": msg27102, - "24975": msg27103, - "24976": msg27104, - "24977": msg27105, - "24978": msg27106, - "24979": msg27107, - "2498": select2386, - "24980": msg27108, - "24981": msg27109, - "24982": msg27110, - "24983": msg27111, - "24984": msg27112, - "24985": msg27113, - "24986": msg27114, - "24987": msg27115, - "24988": msg27116, - "24989": msg27117, - "2499": select2387, - "24990": msg27118, - "24991": msg27119, - "24992": msg27120, - "24993": msg27121, - "24994": msg27122, - "24995": msg27123, - "24996": msg27124, - "24997": msg27125, - "24998": msg27126, - "24999": msg27127, - "25": select24, - "250": select174, - "2500": select2388, - "25000": msg27128, - "25001": msg27129, - "25002": msg27130, - "25003": msg27131, - "25004": msg27132, - "25005": msg27133, - "25006": msg27134, - "25007": msg27135, - "25008": msg27136, - "25009": msg27137, - "2501": select2389, - "25010": msg27138, - "25011": msg27139, - "25012": msg27140, - "25013": msg27141, - "25014": msg27142, - "25015": msg27143, - "25016": msg27144, - "25017": msg27145, - "25018": msg27146, - "25019": msg27147, - "2502": select2390, - "25020": msg27148, - "25021": msg27149, - "25022": msg27150, - "25023": msg27151, - "25024": msg27152, - "25025": msg27153, - "25026": msg27154, - "25027": msg27155, - "25028": msg27156, - "25029": msg27157, - "2503": select2391, - "25030": msg27158, - "25031": msg27159, - "25032": msg27160, - "25033": msg27161, - "25034": msg27162, - "25035": msg27163, - "25036": msg27164, - "25037": msg27165, - "25038": msg27166, - "25039": msg27167, - "2504": select2392, - "25040": msg27168, - "25041": msg27169, - "25042": msg27170, - "25043": msg27171, - "25044": msg27172, - "25045": msg27173, - "25046": msg27174, - "25047": msg27175, - "25048": msg27176, - "25049": msg27177, - "2505": select2393, - "25050": msg27178, - "25051": msg27179, - "25052": msg27180, - "25053": msg27181, - "25054": msg27182, - "25055": msg27183, - "25056": msg27184, - "25057": msg27185, - "25058": msg27186, - "25059": msg27187, - "2506": select2394, - "25060": msg27188, - "25061": msg27189, - "25062": msg27190, - "25063": msg27191, - "25064": msg27192, - "25065": msg27193, - "25066": msg27194, - "25067": msg27195, - "25068": msg27196, - "25069": msg27197, - "2507": select2395, - "25070": msg27198, - "25071": msg27199, - "25072": msg27200, - "25073": msg27201, - "25074": msg27202, - "25075": msg27203, - "25076": msg27204, - "25077": msg27205, - "25078": msg27206, - "25079": msg27207, - "2508": select2396, - "25080": msg27208, - "25081": msg27209, - "25082": msg27210, - "25083": msg27211, - "25084": msg27212, - "25085": msg27213, - "25086": msg27214, - "25087": msg27215, - "25088": msg27216, - "25089": msg27217, - "2509": select2397, - "25090": msg27218, - "25091": msg27219, - "25092": msg27220, - "25093": msg27221, - "25094": msg27222, - "25095": msg27223, - "25096": msg27224, - "25097": msg27225, - "25098": msg27226, - "25099": msg27227, - "251": select175, - "2510": select2398, - "25100": msg27228, - "25101": msg27229, - "25102": msg27230, - "25103": msg27231, - "25104": msg27232, - "25105": msg27233, - "25106": msg27234, - "25107": msg27235, - "25108": msg27236, - "25109": msg27237, - "2511": select2399, - "25110": msg27238, - "25111": msg27239, - "25112": msg27240, - "25113": msg27241, - "25114": msg27242, - "25115": msg27243, - "25116": msg27244, - "25117": msg27245, - "25118": msg27246, - "25119": msg27247, - "2512": select2400, - "25120": msg27248, - "25121": msg27249, - "25122": msg27250, - "25123": msg27251, - "25124": msg27252, - "25125": msg27253, - "25126": msg27254, - "25127": msg27255, - "25128": msg27256, - "25129": msg27257, - "2513": select2401, - "25130": msg27258, - "25131": msg27259, - "25132": msg27260, - "25133": msg27261, - "25134": msg27262, - "25135": msg27263, - "25136": msg27264, - "25137": msg27265, - "25138": msg27266, - "25139": msg27267, - "2514": select2402, - "25140": msg27268, - "25141": msg27269, - "25142": msg27270, - "25143": msg27271, - "25144": msg27272, - "25145": msg27273, - "25146": msg27274, - "25147": msg27275, - "25148": msg27276, - "25149": msg27277, - "2515": select2403, - "25150": msg27278, - "25151": msg27279, - "25152": msg27280, - "25153": msg27281, - "25154": msg27282, - "25155": msg27283, - "25156": msg27284, - "25157": msg27285, - "25158": msg27286, - "25159": msg27287, - "2516": select2404, - "25160": msg27288, - "25161": msg27289, - "25162": msg27290, - "25163": msg27291, - "25164": msg27292, - "25165": msg27293, - "25166": msg27294, - "25167": msg27295, - "25168": msg27296, - "25169": msg27297, - "2517": select2405, - "25170": msg27298, - "25171": msg27299, - "25172": msg27300, - "25173": msg27301, - "25174": msg27302, - "25175": msg27303, - "25176": msg27304, - "25177": msg27305, - "25178": msg27306, - "25179": msg27307, - "2518": select2406, - "25180": msg27308, - "25181": msg27309, - "25182": msg27310, - "25183": msg27311, - "25184": msg27312, - "25185": msg27313, - "25186": msg27314, - "25187": msg27315, - "25188": msg27316, - "25189": msg27317, - "2519": select2407, - "25190": msg27318, - "25191": msg27319, - "25192": msg27320, - "25193": msg27321, - "25194": msg27322, - "25195": msg27323, - "25196": msg27324, - "25197": msg27325, - "25198": msg27326, - "25199": msg27327, - "252": select176, - "2520": select2408, - "25200": msg27328, - "25201": msg27329, - "25202": msg27330, - "25203": msg27331, - "25204": msg27332, - "25205": msg27333, - "25206": msg27334, - "25207": msg27335, - "25208": msg27336, - "25209": msg27337, - "2521": select2409, - "25210": msg27338, - "25211": msg27339, - "25212": msg27340, - "25213": msg27341, - "25214": msg27342, - "25215": msg27343, - "25216": msg27344, - "25217": msg27345, - "25218": msg27346, - "25219": msg27347, - "2522": select2410, - "25220": msg27348, - "25221": msg27349, - "25222": msg27350, - "25223": msg27351, - "25224": msg27352, - "25225": msg27353, - "25226": msg27354, - "25227": msg27355, - "25228": msg27356, - "25229": msg27357, - "2523": select2411, - "25230": msg27358, - "25231": msg27359, - "25232": msg27360, - "25233": msg27361, - "25234": msg27362, - "25235": msg27363, - "25236": msg27364, - "25237": msg27365, - "25238": msg27366, - "25239": msg27367, - "2524": select2412, - "25240": msg27368, - "25241": msg27369, - "25242": msg27370, - "25243": msg27371, - "25244": msg27372, - "25245": msg27373, - "25246": msg27374, - "25247": msg27375, - "25248": msg27376, - "25249": msg27377, - "2525": select2413, - "25250": msg27378, - "25251": msg27379, - "25252": msg27380, - "25253": msg27381, - "25254": msg27382, - "25255": msg27383, - "25256": msg27384, - "25257": msg27385, - "25258": msg27386, - "25259": msg27387, - "2526": select2414, - "25260": msg27388, - "25261": msg27389, - "25262": msg27390, - "25263": msg27391, - "25264": msg27392, - "25265": msg27393, - "25266": msg27394, - "25267": msg27395, - "25268": msg27396, - "25269": msg27397, - "2527": select2415, - "25270": msg27398, - "25271": msg27399, - "25272": msg27400, - "25273": msg27401, - "25274": msg27402, - "25275": msg27403, - "25276": msg27404, - "25277": msg27405, - "25278": msg27406, - "25279": msg27407, - "2528": select2416, - "25280": msg27408, - "25281": msg27409, - "25282": msg27410, - "25283": msg27411, - "25284": msg27412, - "25285": msg27413, - "25286": msg27414, - "25287": msg27415, - "25288": msg27416, - "25289": msg27417, - "2529": select2417, - "25290": msg27418, - "25291": msg27419, - "25292": msg27420, - "25293": msg27421, - "25294": msg27422, - "25295": msg27423, - "25296": msg27424, - "25297": msg27425, - "25298": msg27426, - "25299": msg27427, - "253": select177, - "2530": select2418, - "25300": msg27428, - "25301": msg27429, - "25302": msg27430, - "25303": msg27431, - "25304": msg27432, - "25305": msg27433, - "25306": msg27434, - "25307": msg27435, - "25308": msg27436, - "25309": msg27437, - "2531": select2419, - "25310": msg27438, - "25311": msg27439, - "25312": msg27440, - "25313": msg27441, - "25314": msg27442, - "25315": msg27443, - "25316": msg27444, - "25317": msg27445, - "25318": msg27446, - "25319": msg27447, - "2532": select2420, - "25320": msg27448, - "25321": msg27449, - "25322": msg27450, - "25323": msg27451, - "25324": msg27452, - "25325": msg27453, - "25326": msg27454, - "25327": msg27455, - "25328": msg27456, - "25329": msg27457, - "2533": select2421, - "25330": msg27458, - "25331": msg27459, - "25332": msg27460, - "25333": msg27461, - "25334": msg27462, - "25335": msg27463, - "25336": msg27464, - "25337": msg27465, - "25338": msg27466, - "25339": msg27467, - "2534": select2422, - "25340": msg27468, - "25341": msg27469, - "25342": msg27470, - "25343": msg27471, - "25344": msg27472, - "25345": msg27473, - "25346": msg27474, - "25347": msg27475, - "25348": msg27476, - "25349": msg27477, - "2535": select2423, - "25350": msg27478, - "25351": msg27479, - "25352": msg27480, - "25353": msg27481, - "25354": msg27482, - "25355": msg27483, - "25356": msg27484, - "25357": msg27485, - "25358": msg27486, - "25359": msg27487, - "2536": select2424, - "25360": msg27488, - "25361": msg27489, - "25362": msg27490, - "25363": msg27491, - "25364": msg27492, - "25365": msg27493, - "25366": msg27494, - "25367": msg27495, - "25368": msg27496, - "25369": msg27497, - "2537": select2425, - "25370": msg27498, - "25371": msg27499, - "25372": msg27500, - "25373": msg27501, - "25374": msg27502, - "25375": msg27503, - "25376": msg27504, - "25377": msg27505, - "25378": msg27506, - "25379": msg27507, - "2538": select2426, - "25380": msg27508, - "25381": msg27509, - "25382": msg27510, - "25383": msg27511, - "25384": msg27512, - "25385": msg27513, - "25386": msg27514, - "25387": msg27515, - "25388": msg27516, - "25389": msg27517, - "2539": select2427, - "25390": msg27518, - "25391": msg27519, - "25392": msg27520, - "25393": msg27521, - "25394": msg27522, - "25395": msg27523, - "25396": msg27524, - "25397": msg27525, - "25398": msg27526, - "25399": msg27527, - "254": select178, - "2540": select2428, - "25400": msg27528, - "25401": msg27529, - "25402": msg27530, - "25403": msg27531, - "25404": msg27532, - "25405": msg27533, - "25406": msg27534, - "25407": msg27535, - "25408": msg27536, - "25409": msg27537, - "2541": select2429, - "25410": msg27538, - "25411": msg27539, - "25412": msg27540, - "25413": msg27541, - "25414": msg27542, - "25415": msg27543, - "25416": msg27544, - "25417": msg27545, - "25418": msg27546, - "25419": msg27547, - "2542": select2430, - "25420": msg27548, - "25421": msg27549, - "25422": msg27550, - "25423": msg27551, - "25424": msg27552, - "25425": msg27553, - "25426": msg27554, - "25427": msg27555, - "25428": msg27556, - "25429": msg27557, - "2543": select2431, - "25430": msg27558, - "25431": msg27559, - "25432": msg27560, - "25433": msg27561, - "25434": msg27562, - "25435": msg27563, - "25436": msg27564, - "25437": msg27565, - "25438": msg27566, - "25439": msg27567, - "2544": select2432, - "25440": msg27568, - "25441": msg27569, - "25442": msg27570, - "25443": msg27571, - "25444": msg27572, - "25445": msg27573, - "25446": msg27574, - "25447": msg27575, - "25448": msg27576, - "25449": msg27577, - "2545": select2433, - "25450": msg27578, - "25451": msg27579, - "25452": msg27580, - "25453": msg27581, - "25454": msg27582, - "25455": msg27583, - "25456": msg27584, - "25457": msg27585, - "25458": msg27586, - "25459": msg27587, - "2546": select2434, - "25460": msg27588, - "25461": msg27589, - "25462": msg27590, - "25463": msg27591, - "25464": msg27592, - "25465": msg27593, - "25466": msg27594, - "25467": msg27595, - "25468": msg27596, - "25469": msg27597, - "2547": select2435, - "25470": msg27598, - "25471": msg27599, - "25472": msg27600, - "25473": msg27601, - "25474": msg27602, - "25475": msg27603, - "25476": msg27604, - "25477": msg27605, - "25478": msg27606, - "25479": msg27607, - "2548": select2436, - "2549": select2437, - "255": select179, - "2550": select2438, - "25502": msg27608, - "25503": msg27609, - "25504": msg27610, - "25505": msg27611, - "25506": msg27612, - "25507": msg27613, - "25508": msg27614, - "25509": msg27615, - "2551": msg5001, - "25510": msg27616, - "25511": msg27617, - "25512": msg27618, - "25513": msg27619, - "25514": msg27620, - "25515": msg27621, - "25516": msg27622, - "25517": msg27623, - "25518": msg27624, - "25519": msg27625, - "2552": msg5002, - "25520": msg27626, - "25521": msg27627, - "25522": msg27628, - "25523": msg27629, - "25524": msg27630, - "25525": msg27631, - "25526": msg27632, - "25527": msg27633, - "25528": msg27634, - "25529": msg27635, - "2553": msg5003, - "25530": msg27636, - "25531": msg27637, - "25532": msg27638, - "25533": msg27639, - "25534": msg27640, - "25535": msg27641, - "25536": msg27642, - "25537": msg27643, - "25538": msg27644, - "25539": msg27645, - "2554": msg5004, - "25540": msg27646, - "25541": msg27647, - "25542": msg27648, - "25543": msg27649, - "25544": msg27650, - "25545": msg27651, - "25546": msg27652, - "25547": msg27653, - "25548": msg27654, - "25549": msg27655, - "2555": msg5005, - "25550": msg27656, - "25551": msg27657, - "25552": msg27658, - "25553": msg27659, - "25554": msg27660, - "25555": msg27661, - "25556": msg27662, - "25557": msg27663, - "25558": msg27664, - "25559": msg27665, - "2556": msg5006, - "25560": msg27666, - "25561": msg27667, - "25562": msg27668, - "25563": msg27669, - "25564": msg27670, - "25565": msg27671, - "25566": msg27672, - "25567": msg27673, - "25568": msg27674, - "25569": msg27675, - "2557": msg5007, - "25570": msg27676, - "25571": msg27677, - "25572": msg27678, - "25573": msg27679, - "25574": msg27680, - "25575": msg27681, - "25576": msg27682, - "25577": msg27683, - "25578": msg27684, - "25579": msg27685, - "2558": msg5008, - "25580": msg27686, - "25581": msg27687, - "25582": msg27688, - "25583": msg27689, - "25584": msg27690, - "25585": msg27691, - "25586": msg27692, - "25587": msg27693, - "25588": msg27694, - "25589": msg27695, - "2559": msg5009, - "25590": msg27696, - "25591": msg27697, - "25592": msg27698, - "25593": msg27699, - "25594": msg27700, - "25595": msg27701, - "25596": msg27702, - "25597": msg27703, - "25598": msg27704, - "25599": msg27705, - "256": select180, - "2560": msg5010, - "25600": msg27706, - "25601": msg27707, - "25602": msg27708, - "25603": msg27709, - "25604": msg27710, - "25605": msg27711, - "25606": msg27712, - "25607": msg27713, - "25608": msg27714, - "25609": msg27715, - "2561": msg5011, - "25610": msg27716, - "25611": msg27717, - "25612": msg27718, - "25613": msg27719, - "25614": msg27720, - "25615": msg27721, - "25616": msg27722, - "25617": msg27723, - "25618": msg27724, - "25619": msg27725, - "2562": msg5012, - "25620": msg27726, - "25621": msg27727, - "25622": msg27728, - "25623": msg27729, - "25624": msg27730, - "25625": msg27731, - "25626": msg27732, - "25627": msg27733, - "25628": msg27734, - "2563": msg5013, - "25630": msg27735, - "25631": msg27736, - "25632": msg27737, - "25633": msg27738, - "25634": msg27739, - "25635": msg27740, - "25636": msg27741, - "25637": msg27742, - "25638": msg27743, - "25639": msg27744, - "2564": msg5014, - "25640": msg27745, - "25641": msg27746, - "25642": msg27747, - "25643": msg27748, - "25644": msg27749, - "25645": msg27750, - "25646": msg27751, - "25647": msg27752, - "25648": msg27753, - "25649": msg27754, - "2565": msg5015, - "25650": msg27755, - "25651": msg27756, - "25652": msg27757, - "25653": msg27758, - "25654": msg27759, - "25655": msg27760, - "25656": msg27761, - "25657": msg27762, - "25658": msg27763, - "25659": msg27764, - "2566": msg5016, - "25660": msg27765, - "25661": msg27766, - "25662": msg27767, - "25663": msg27768, - "25664": msg27769, - "25665": msg27770, - "25666": msg27771, - "25667": msg27772, - "25668": msg27773, - "25669": msg27774, - "2567": msg5017, - "25670": msg27775, - "25671": msg27776, - "25672": msg27777, - "25673": msg27778, - "25674": msg27779, - "25675": msg27780, - "25676": msg27781, - "25677": msg27782, - "25678": msg27783, - "25679": msg27784, - "2568": msg5018, - "25680": msg27785, - "25681": msg27786, - "25682": msg27787, - "25683": msg27788, - "25684": msg27789, - "25685": msg27790, - "25686": msg27791, - "25687": msg27792, - "25688": msg27793, - "25689": msg27794, - "2569": msg5019, - "25690": msg27795, - "25691": msg27796, - "25692": msg27797, - "25693": msg27798, - "25694": msg27799, - "25695": msg27800, - "25696": msg27801, - "25697": msg27802, - "25698": msg27803, - "25699": msg27804, - "257": select181, - "2570": msg5020, - "25700": msg27805, - "25701": msg27806, - "25702": msg27807, - "25703": msg27808, - "25704": msg27809, - "25705": msg27810, - "25706": msg27811, - "25707": msg27812, - "25708": msg27813, - "25709": msg27814, - "2571": msg5021, - "25710": msg27815, - "25711": msg27816, - "25712": msg27817, - "25713": msg27818, - "25714": msg27819, - "25715": msg27820, - "25716": msg27821, - "25717": msg27822, - "25718": msg27823, - "25719": msg27824, - "2572": msg5022, - "25720": msg27825, - "25721": msg27826, - "25722": msg27827, - "25723": msg27828, - "25724": msg27829, - "25725": msg27830, - "25726": msg27831, - "25727": msg27832, - "25728": msg27833, - "25729": msg27834, - "2573": msg5023, - "25730": msg27835, - "25731": msg27836, - "25732": msg27837, - "25733": msg27838, - "25734": msg27839, - "25735": msg27840, - "25736": msg27841, - "25737": msg27842, - "25738": msg27843, - "25739": msg27844, - "2574": msg5024, - "25740": msg27845, - "25741": msg27846, - "25742": msg27847, - "25743": msg27848, - "25744": msg27849, - "25745": msg27850, - "25746": msg27851, - "25747": msg27852, - "25748": msg27853, - "25749": msg27854, - "2575": msg5025, - "25750": msg27855, - "25751": msg27856, - "25752": msg27857, - "25753": msg27858, - "25754": msg27859, - "25755": msg27860, - "25756": msg27861, - "25757": msg27862, - "25758": msg27863, - "25759": msg27864, - "2576": msg5026, - "25760": msg27865, - "25761": msg27866, - "25762": msg27867, - "25763": msg27868, - "25764": msg27869, - "25765": msg27870, - "25766": msg27871, - "25767": msg27872, - "25768": msg27873, - "25769": msg27874, - "2577": msg5027, - "25770": msg27875, - "25771": msg27876, - "25772": msg27877, - "25773": msg27878, - "25774": msg27879, - "25775": msg27880, - "25776": msg27881, - "25777": msg27882, - "25778": msg27883, - "25779": msg27884, - "2578": msg5028, - "25780": msg27885, - "25781": msg27886, - "25782": msg27887, - "25783": msg27888, - "25784": msg27889, - "25785": msg27890, - "25786": msg27891, - "25787": msg27892, - "25788": msg27893, - "25789": msg27894, - "2579": msg5029, - "25790": msg27895, - "25791": msg27896, - "25792": msg27897, - "25793": msg27898, - "25794": msg27899, - "25795": msg27900, - "25796": msg27901, - "25797": msg27902, - "25798": msg27903, - "25799": msg27904, - "258": select182, - "2580": msg5030, - "25800": msg27905, - "25801": msg27906, - "25802": msg27907, - "25803": msg27908, - "25804": msg27909, - "25805": msg27910, - "25806": msg27911, - "25807": msg27912, - "25808": msg27913, - "25809": msg27914, - "2581": msg5031, - "25810": msg27915, - "25811": msg27916, - "25812": msg27917, - "25813": msg27918, - "25814": msg27919, - "25815": msg27920, - "25816": msg27921, - "25817": msg27922, - "25818": msg27923, - "25819": msg27924, - "2582": msg5032, - "25820": msg27925, - "25821": msg27926, - "25822": msg27927, - "25823": msg27928, - "25824": msg27929, - "25825": msg27930, - "25826": msg27931, - "25827": msg27932, - "25828": msg27933, - "25829": msg27934, - "2583": msg5033, - "25830": msg27935, - "25831": msg27936, - "25832": msg27937, - "25833": msg27938, - "25834": msg27939, - "25835": msg27940, - "25836": msg27941, - "25837": msg27942, - "25838": msg27943, - "25839": msg27944, - "2584": msg5034, - "25840": msg27945, - "25841": msg27946, - "25842": msg27947, - "25843": msg27948, - "25844": msg27949, - "25845": msg27950, - "25846": msg27951, - "25847": msg27952, - "25848": msg27953, - "25849": msg27954, - "2585": msg5035, - "25850": msg27955, - "25851": msg27956, - "25852": msg27957, - "25853": msg27958, - "25854": msg27959, - "25855": msg27960, - "25856": msg27961, - "25857": msg27962, - "25858": msg27963, - "25859": msg27964, - "2586": msg5036, - "25860": msg27965, - "25861": msg27966, - "25862": msg27967, - "25863": msg27968, - "25864": msg27969, - "25865": msg27970, - "25866": msg27971, - "25867": msg27972, - "25868": msg27973, - "25869": msg27974, - "2587": msg5037, - "25870": msg27975, - "25871": msg27976, - "25872": msg27977, - "25873": msg27978, - "25874": msg27979, - "25875": msg27980, - "25876": msg27981, - "25877": msg27982, - "25878": msg27983, - "25879": msg27984, - "2588": msg5038, - "25880": msg27985, - "25881": msg27986, - "25882": msg27987, - "25883": msg27988, - "25884": msg27989, - "25885": msg27990, - "25886": msg27991, - "25887": msg27992, - "25888": msg27993, - "25889": msg27994, - "2589": msg5039, - "25890": msg27995, - "25891": msg27996, - "25892": msg27997, - "25893": msg27998, - "25894": msg27999, - "25895": msg28000, - "25896": msg28001, - "25897": msg28002, - "25898": msg28003, - "25899": msg28004, - "259": select183, - "2590": select2439, - "25900": msg28005, - "25901": msg28006, - "25902": msg28007, - "25903": msg28008, - "25904": msg28009, - "25905": msg28010, - "25906": msg28011, - "25907": msg28012, - "25908": msg28013, - "25909": msg28014, - "2591": msg5042, - "25910": msg28015, - "25911": msg28016, - "25912": msg28017, - "25913": msg28018, - "25914": msg28019, - "25915": msg28020, - "25916": msg28021, - "25917": msg28022, - "25918": msg28023, - "25919": msg28024, - "2592": msg5043, - "25920": msg28025, - "25921": msg28026, - "25922": msg28027, - "25923": msg28028, - "25924": msg28029, - "25925": msg28030, - "25926": msg28031, - "25927": msg28032, - "25928": msg28033, - "25929": msg28034, - "2593": msg5044, - "25930": msg28035, - "25931": msg28036, - "25932": msg28037, - "25933": msg28038, - "25934": msg28039, - "25935": msg28040, - "25936": msg28041, - "25937": msg28042, - "25938": msg28043, - "25939": msg28044, - "2594": msg5045, - "25940": msg28045, - "25941": msg28046, - "25942": msg28047, - "25943": msg28048, - "25944": msg28049, - "25945": msg28050, - "25946": msg28051, - "25947": msg28052, - "25948": msg28053, - "25949": msg28054, - "2595": msg5046, - "25950": msg28055, - "25951": msg28056, - "25952": msg28057, - "25953": msg28058, - "25954": msg28059, - "25955": msg28060, - "25956": msg28061, - "25957": msg28062, - "25958": msg28063, - "25959": msg28064, - "2596": msg5047, - "25960": msg28065, - "25961": msg28066, - "25962": msg28067, - "25963": msg28068, - "25964": msg28069, - "25965": msg28070, - "25966": msg28071, - "25967": msg28072, - "25968": msg28073, - "25969": msg28074, - "2597": msg5048, - "25970": msg28075, - "25971": msg28076, - "25972": msg28077, - "25973": msg28078, - "25974": msg28079, - "25975": msg28080, - "25976": msg28081, - "25977": msg28082, - "25978": msg28083, - "25979": msg28084, - "2598": msg5049, - "25980": msg28085, - "25981": msg28086, - "25982": msg28087, - "25983": msg28088, - "25984": msg28089, - "25985": msg28090, - "25986": msg28091, - "25987": msg28092, - "25988": msg28093, - "25989": msg28094, - "2599": msg5050, - "25990": msg28095, - "25991": msg28096, - "25992": msg28097, - "25993": msg28098, - "25994": msg28099, - "25995": msg28100, - "25996": msg28101, - "25997": msg28102, - "25998": msg28103, - "25999": msg28104, - "26": msg60, - "260": select184, - "2600": msg5051, - "26000": msg28105, - "26001": msg28106, - "26002": msg28107, - "26003": msg28108, - "26004": msg28109, - "26005": msg28110, - "26006": msg28111, - "26007": msg28112, - "26008": msg28113, - "26009": msg28114, - "2601": msg5052, - "26010": msg28115, - "26011": msg28116, - "26012": msg28117, - "26013": msg28118, - "26014": msg28119, - "26015": msg28120, - "26016": msg28121, - "26017": msg28122, - "26018": msg28123, - "26019": msg28124, - "2602": msg5053, - "26020": msg28125, - "26021": msg28126, - "26022": msg28127, - "26023": msg28128, - "26024": msg28129, - "26025": msg28130, - "26026": msg28131, - "26027": msg28132, - "26028": msg28133, - "26029": msg28134, - "2603": msg5054, - "26030": msg28135, - "26031": msg28136, - "26032": msg28137, - "26033": msg28138, - "26034": msg28139, - "26035": msg28140, - "26036": msg28141, - "26037": msg28142, - "26038": msg28143, - "26039": msg28144, - "2604": msg5055, - "26040": msg28145, - "26041": msg28146, - "26042": msg28147, - "26043": msg28148, - "26044": msg28149, - "26045": msg28150, - "26046": msg28151, - "26047": msg28152, - "26048": msg28153, - "26049": msg28154, - "2605": msg5056, - "26050": msg28155, - "26051": msg28156, - "26052": msg28157, - "26053": msg28158, - "26054": msg28159, - "26055": msg28160, - "26056": msg28161, - "26057": msg28162, - "26058": msg28163, - "26059": msg28164, - "2606": msg5057, - "26060": msg28165, - "26061": msg28166, - "26062": msg28167, - "26063": msg28168, - "26064": msg28169, - "26065": msg28170, - "26066": msg28171, - "26067": msg28172, - "26068": msg28173, - "26069": msg28174, - "2607": msg5058, - "26070": msg28175, - "26071": msg28176, - "26072": msg28177, - "26073": msg28178, - "26074": msg28179, - "26075": msg28180, - "26076": msg28181, - "26077": msg28182, - "26078": msg28183, - "26079": msg28184, - "2608": msg5059, - "26080": msg28185, - "26081": msg28186, - "26082": msg28187, - "26083": msg28188, - "26084": msg28189, - "26085": msg28190, - "26086": msg28191, - "26087": msg28192, - "26088": msg28193, - "26089": msg28194, - "2609": msg5060, - "26090": msg28195, - "26091": msg28196, - "26092": msg28197, - "26093": msg28198, - "26094": msg28199, - "26095": msg28200, - "26096": msg28201, - "26097": msg28202, - "26098": msg28203, - "26099": msg28204, - "261": select185, - "2610": msg5061, - "26100": msg28205, - "26101": msg28206, - "26102": msg28207, - "26103": msg28208, - "26104": msg28209, - "26105": msg28210, - "26106": msg28211, - "26107": msg28212, - "26108": msg28213, - "26109": msg28214, - "2611": msg5062, - "26110": msg28215, - "26111": msg28216, - "26112": msg28217, - "26113": msg28218, - "26114": msg28219, - "26115": msg28220, - "26116": msg28221, - "26117": msg28222, - "26118": msg28223, - "26119": msg28224, - "2612": msg5063, - "26120": msg28225, - "26121": msg28226, - "26122": msg28227, - "26123": msg28228, - "26124": msg28229, - "26125": msg28230, - "26126": msg28231, - "26127": msg28232, - "26128": msg28233, - "26129": msg28234, - "2613": msg5064, - "26130": msg28235, - "26131": msg28236, - "26132": msg28237, - "26133": msg28238, - "26134": msg28239, - "26135": msg28240, - "26136": msg28241, - "26137": msg28242, - "26138": msg28243, - "26139": msg28244, - "2614": msg5065, - "26140": msg28245, - "26141": msg28246, - "26142": msg28247, - "26143": msg28248, - "26144": msg28249, - "26145": msg28250, - "26146": msg28251, - "26147": msg28252, - "26148": msg28253, - "26149": msg28254, - "2615": msg5066, - "26150": msg28255, - "26151": msg28256, - "26152": msg28257, - "26153": msg28258, - "26154": msg28259, - "26155": msg28260, - "26156": msg28261, - "26157": msg28262, - "26158": msg28263, - "26159": msg28264, - "2616": msg5067, - "26160": msg28265, - "26161": msg28266, - "26162": msg28267, - "26163": msg28268, - "26164": msg28269, - "26165": msg28270, - "26166": msg28271, - "26167": msg28272, - "26168": msg28273, - "26169": msg28274, - "2617": msg5068, - "26170": msg28275, - "26171": msg28276, - "26172": msg28277, - "26173": msg28278, - "26174": msg28279, - "26175": msg28280, - "26176": msg28281, - "26177": msg28282, - "26178": msg28283, - "26179": msg28284, - "2618": msg5069, - "26180": msg28285, - "26181": msg28286, - "26182": msg28287, - "26183": msg28288, - "26184": msg28289, - "26185": msg28290, - "26186": msg28291, - "26187": msg28292, - "26188": msg28293, - "26189": msg28294, - "2619": msg5070, - "26190": msg28295, - "26191": msg28296, - "26192": msg28297, - "26193": msg28298, - "26194": msg28299, - "26195": msg28300, - "26196": msg28301, - "26197": msg28302, - "26198": msg28303, - "26199": msg28304, - "262": select186, - "2620": msg5071, - "26200": msg28305, - "26201": msg28306, - "26202": msg28307, - "26203": msg28308, - "26204": msg28309, - "26205": msg28310, - "26206": msg28311, - "26207": msg28312, - "26208": msg28313, - "26209": msg28314, - "2621": msg5072, - "26210": msg28315, - "26211": msg28316, - "26212": msg28317, - "26213": msg28318, - "26214": msg28319, - "26215": msg28320, - "26216": msg28321, - "26217": msg28322, - "26218": msg28323, - "26219": msg28324, - "2622": msg5073, - "26220": msg28325, - "26221": msg28326, - "26222": msg28327, - "26223": msg28328, - "26224": msg28329, - "26225": msg28330, - "26226": msg28331, - "26227": msg28332, - "26228": msg28333, - "26229": msg28334, - "2623": msg5074, - "26230": msg28335, - "26231": msg28336, - "26232": msg28337, - "26233": msg28338, - "26234": msg28339, - "26235": msg28340, - "26236": msg28341, - "26237": msg28342, - "26238": msg28343, - "26239": msg28344, - "2624": msg5075, - "26240": msg28345, - "26241": msg28346, - "26242": msg28347, - "26243": msg28348, - "26244": msg28349, - "26245": msg28350, - "26246": msg28351, - "26247": msg28352, - "26248": msg28353, - "26249": msg28354, - "2625": msg5076, - "26250": msg28355, - "26251": msg28356, - "26252": msg28357, - "26253": msg28358, - "26254": msg28359, - "26255": msg28360, - "26256": msg28361, - "26257": msg28362, - "26258": msg28363, - "26259": msg28364, - "2626": msg5077, - "26260": msg28365, - "26261": msg28366, - "26262": msg28367, - "26263": msg28368, - "26264": msg28369, - "26265": msg28370, - "26266": msg28371, - "26267": msg28372, - "26268": msg28373, - "26269": msg28374, - "2627": msg5078, - "26270": msg28375, - "26271": msg28376, - "26272": msg28377, - "26273": msg28378, - "26274": msg28379, - "26275": msg28380, - "26276": msg28381, - "26277": msg28382, - "26278": msg28383, - "26279": msg28384, - "2628": msg5079, - "26280": msg28385, - "26281": msg28386, - "26282": msg28387, - "26283": msg28388, - "26284": msg28389, - "26285": msg28390, - "26286": msg28391, - "26287": msg28392, - "26288": msg28393, - "26289": msg28394, - "2629": msg5080, - "26290": msg28395, - "26291": msg28396, - "26292": msg28397, - "26293": msg28398, - "26294": msg28399, - "26295": msg28400, - "26296": msg28401, - "26297": msg28402, - "26298": msg28403, - "26299": msg28404, - "2630": msg5081, - "26300": msg28405, - "26301": msg28406, - "26302": msg28407, - "26303": msg28408, - "26304": msg28409, - "26305": msg28410, - "26306": msg28411, - "26307": msg28412, - "26308": msg28413, - "26309": msg28414, - "2631": msg5082, - "26310": msg28415, - "26311": msg28416, - "26312": msg28417, - "26313": msg28418, - "26314": msg28419, - "26315": msg28420, - "26316": msg28421, - "26317": msg28422, - "26318": msg28423, - "26319": msg28424, - "2632": msg5083, - "26320": msg28425, - "26321": msg28426, - "26322": msg28427, - "26323": msg28428, - "26324": msg28429, - "26325": msg28430, - "26326": msg28431, - "26327": msg28432, - "26328": msg28433, - "26329": msg28434, - "2633": msg5084, - "26330": msg28435, - "26331": msg28436, - "26332": msg28437, - "26333": msg28438, - "26334": msg28439, - "26335": msg28440, - "26336": msg28441, - "26337": msg28442, - "26338": msg28443, - "26339": msg28444, - "2634": msg5085, - "26340": msg28445, - "26341": msg28446, - "26342": msg28447, - "26343": msg28448, - "26344": msg28449, - "26345": msg28450, - "26346": msg28451, - "26347": msg28452, - "26348": msg28453, - "26349": msg28454, - "2635": msg5086, - "26350": msg28455, - "26351": msg28456, - "26352": msg28457, - "26353": msg28458, - "26354": msg28459, - "26355": msg28460, - "26356": msg28461, - "26357": msg28462, - "26358": msg28463, - "26359": msg28464, - "2636": msg5087, - "26360": msg28465, - "26361": msg28466, - "26362": msg28467, - "26363": msg28468, - "26364": msg28469, - "26365": msg28470, - "26366": msg28471, - "26367": msg28472, - "26368": msg28473, - "26369": msg28474, - "2637": msg5088, - "26370": msg28475, - "26371": msg28476, - "26372": msg28477, - "26373": msg28478, - "26374": msg28479, - "26375": msg28480, - "26376": msg28481, - "26377": msg28482, - "26378": msg28483, - "26379": msg28484, - "2638": msg5089, - "26380": msg28485, - "26381": msg28486, - "26382": msg28487, - "26383": msg28488, - "26384": msg28489, - "26385": msg28490, - "26386": msg28491, - "26387": msg28492, - "26388": msg28493, - "26389": msg28494, - "2639": msg5090, - "26390": msg28495, - "26391": msg28496, - "26392": msg28497, - "26393": msg28498, - "26394": msg28499, - "26395": msg28500, - "26396": msg28501, - "26397": msg28502, - "26398": msg28503, - "26399": msg28504, - "264": select187, - "2640": msg5091, - "26400": msg28505, - "26401": msg28506, - "26402": msg28507, - "26403": msg28508, - "26404": msg28509, - "26405": msg28510, - "26406": msg28511, - "26407": msg28512, - "26408": msg28513, - "26409": msg28514, - "2641": msg5092, - "26410": msg28515, - "26411": msg28516, - "26412": msg28517, - "26413": msg28518, - "26414": msg28519, - "26415": msg28520, - "26416": msg28521, - "26417": msg28522, - "26418": msg28523, - "26419": msg28524, - "2642": msg5093, - "26420": msg28525, - "26421": msg28526, - "26422": msg28527, - "26423": msg28528, - "26424": msg28529, - "26425": msg28530, - "26426": msg28531, - "26427": msg28532, - "26428": msg28533, - "26429": msg28534, - "2643": msg5094, - "26430": msg28535, - "26431": msg28536, - "26432": msg28537, - "26433": msg28538, - "26434": msg28539, - "26435": msg28540, - "26436": msg28541, - "26437": msg28542, - "26438": msg28543, - "26439": msg28544, - "2644": msg5095, - "26440": msg28545, - "26441": msg28546, - "26442": msg28547, - "26443": msg28548, - "26444": msg28549, - "26445": msg28550, - "26446": msg28551, - "26447": msg28552, - "26448": msg28553, - "26449": msg28554, - "2645": msg5096, - "26450": msg28555, - "26451": msg28556, - "26452": msg28557, - "26453": msg28558, - "26454": msg28559, - "26455": msg28560, - "26456": msg28561, - "26457": msg28562, - "26458": msg28563, - "26459": msg28564, - "2646": msg5097, - "26460": msg28565, - "26461": msg28566, - "26462": msg28567, - "26463": msg28568, - "26464": msg28569, - "26465": msg28570, - "26466": msg28571, - "26467": msg28572, - "26468": msg28573, - "26469": msg28574, - "2647": msg5098, - "26470": msg28575, - "26471": msg28576, - "26472": msg28577, - "26473": msg28578, - "26474": msg28579, - "26475": msg28580, - "26476": msg28581, - "26477": msg28582, - "26478": msg28583, - "26479": msg28584, - "2648": msg5099, - "26480": msg28585, - "26481": msg28586, - "26482": msg28587, - "26483": msg28588, - "26484": msg28589, - "26485": msg28590, - "26486": msg28591, - "26487": msg28592, - "26488": msg28593, - "26489": msg28594, - "2649": msg5100, - "26490": msg28595, - "26491": msg28596, - "26492": msg28597, - "26493": msg28598, - "26494": msg28599, - "26495": msg28600, - "26496": msg28601, - "26497": msg28602, - "26498": msg28603, - "26499": msg28604, - "265": select188, - "2650": msg5101, - "26500": msg28605, - "26501": msg28606, - "26502": msg28607, - "26503": msg28608, - "26504": msg28609, - "26505": msg28610, - "26506": msg28611, - "26507": msg28612, - "26508": msg28613, - "26509": msg28614, - "2651": msg5102, - "26510": msg28615, - "26511": msg28616, - "26512": msg28617, - "26513": msg28618, - "26514": msg28619, - "26515": msg28620, - "26516": msg28621, - "26517": msg28622, - "26518": msg28623, - "26519": msg28624, - "2652": msg5103, - "26520": msg28625, - "26521": msg28626, - "26522": msg28627, - "26523": msg28628, - "26524": msg28629, - "26525": msg28630, - "26526": msg28631, - "26527": msg28632, - "26528": msg28633, - "26529": msg28634, - "2653": msg5104, - "26530": msg28635, - "26531": msg28636, - "26532": msg28637, - "26533": msg28638, - "26534": msg28639, - "26535": msg28640, - "26536": msg28641, - "26537": msg28642, - "26538": msg28643, - "26539": msg28644, - "2654": msg5105, - "26540": msg28645, - "26541": msg28646, - "26542": msg28647, - "26543": msg28648, - "26544": msg28649, - "26545": msg28650, - "26546": msg28651, - "26547": msg28652, - "26548": msg28653, - "26549": msg28654, - "2655": msg5106, - "26550": msg28655, - "26551": msg28656, - "26552": msg28657, - "26553": msg28658, - "26554": msg28659, - "26555": msg28660, - "26556": msg28661, - "26557": msg28662, - "26558": msg28663, - "26559": msg28664, - "2656": msg5107, - "26560": msg28665, - "26561": msg28666, - "26562": msg28667, - "26563": msg28668, - "26564": msg28669, - "26565": msg28670, - "26566": msg28671, - "26567": msg28672, - "26568": msg28673, - "26569": msg28674, - "2657": msg5108, - "26570": msg28675, - "26571": msg28676, - "26572": msg28677, - "26573": msg28678, - "26574": msg28679, - "26575": msg28680, - "26576": msg28681, - "26577": msg28682, - "26578": msg28683, - "26579": msg28684, - "2658": msg5109, - "26580": msg28685, - "26581": msg28686, - "26582": msg28687, - "26583": msg28688, - "26584": msg28689, - "26585": msg28690, - "26586": msg28691, - "26587": msg28692, - "26588": msg28693, - "26589": msg28694, - "2659": msg5110, - "26590": msg28695, - "26591": msg28696, - "26592": msg28697, - "26593": msg28698, - "26594": msg28699, - "26595": msg28700, - "26596": msg28701, - "26597": msg28702, - "26598": msg28703, - "26599": msg28704, - "266": select189, - "2660": msg5111, - "26600": msg28705, - "26601": msg28706, - "26602": msg28707, - "26603": msg28708, - "26604": msg28709, - "26605": msg28710, - "26606": msg28711, - "26607": msg28712, - "26608": msg28713, - "26609": msg28714, - "2661": msg5112, - "26610": msg28715, - "26611": msg28716, - "26612": msg28717, - "26613": msg28718, - "26614": msg28719, - "26615": msg28720, - "26616": msg28721, - "26617": msg28722, - "26618": msg28723, - "26619": msg28724, - "2662": msg5113, - "26620": msg28725, - "26621": msg28726, - "26622": msg28727, - "26623": msg28728, - "26624": msg28729, - "26625": msg28730, - "26626": msg28731, - "26627": msg28732, - "26628": msg28733, - "26629": msg28734, - "2663": msg5114, - "26630": msg28735, - "26631": msg28736, - "26632": msg28737, - "26633": msg28738, - "26634": msg28739, - "26635": msg28740, - "26636": msg28741, - "26637": msg28742, - "26638": msg28743, - "26639": msg28744, - "2664": msg5115, - "26640": msg28745, - "26641": msg28746, - "26642": msg28747, - "26643": msg28748, - "26644": msg28749, - "26645": msg28750, - "26646": msg28751, - "26647": msg28752, - "26648": msg28753, - "26649": msg28754, - "2665": msg5116, - "26650": msg28755, - "26651": msg28756, - "26652": msg28757, - "26653": msg28758, - "26654": msg28759, - "26655": msg28760, - "26656": msg28761, - "26657": msg28762, - "26658": msg28763, - "26659": msg28764, - "2666": msg5117, - "26660": msg28765, - "26661": msg28766, - "26662": msg28767, - "26663": msg28768, - "26664": msg28769, - "26665": msg28770, - "26666": msg28771, - "26667": msg28772, - "26668": msg28773, - "26669": msg28774, - "2667": msg5118, - "26670": msg28775, - "26671": msg28776, - "26672": msg28777, - "26673": msg28778, - "26674": msg28779, - "26675": msg28780, - "26676": msg28781, - "26677": msg28782, - "26678": msg28783, - "26679": msg28784, - "2668": msg5119, - "26680": msg28785, - "26681": msg28786, - "26682": msg28787, - "26683": msg28788, - "26684": msg28789, - "26685": msg28790, - "26686": msg28791, - "26687": msg28792, - "26688": msg28793, - "26689": msg28794, - "2669": msg5120, - "26690": msg28795, - "26691": msg28796, - "26692": msg28797, - "26693": msg28798, - "26694": msg28799, - "26695": msg28800, - "26696": msg28801, - "26697": msg28802, - "26698": msg28803, - "26699": msg28804, - "267": select190, - "2670": msg5121, - "26700": msg28805, - "26701": msg28806, - "26702": msg28807, - "26703": msg28808, - "26704": msg28809, - "26705": msg28810, - "26706": msg28811, - "26707": msg28812, - "26708": msg28813, - "26709": msg28814, - "2671": msg5122, - "26710": msg28815, - "26711": msg28816, - "26712": msg28817, - "26713": msg28818, - "26714": msg28819, - "26715": msg28820, - "26716": msg28821, - "26717": msg28822, - "26718": msg28823, - "26719": msg28824, - "2672": msg5123, - "26720": msg28825, - "26721": msg28826, - "26722": msg28827, - "26723": msg28828, - "26724": msg28829, - "26725": msg28830, - "26726": msg28831, - "26727": msg28832, - "26728": msg28833, - "26729": msg28834, - "2673": msg5124, - "26730": msg28835, - "26731": msg28836, - "26732": msg28837, - "26733": msg28838, - "26734": msg28839, - "26735": msg28840, - "26736": msg28841, - "26737": msg28842, - "26738": msg28843, - "26739": msg28844, - "2674": msg5125, - "26740": msg28845, - "26741": msg28846, - "26742": msg28847, - "26743": msg28848, - "26744": msg28849, - "26745": msg28850, - "26746": msg28851, - "26747": msg28852, - "26748": msg28853, - "26749": msg28854, - "2675": msg5126, - "26750": msg28855, - "26751": msg28856, - "26752": msg28857, - "26753": msg28858, - "26754": msg28859, - "26755": msg28860, - "26756": msg28861, - "26757": msg28862, - "26758": msg28863, - "26759": msg28864, - "2676": msg5127, - "26760": msg28865, - "26761": msg28866, - "26762": msg28867, - "26763": msg28868, - "26764": msg28869, - "26765": msg28870, - "26766": msg28871, - "26767": msg28872, - "26768": msg28873, - "26769": msg28874, - "2677": msg5128, - "26770": msg28875, - "26771": msg28876, - "26772": msg28877, - "26773": msg28878, - "26774": msg28879, - "26775": msg28880, - "26776": msg28881, - "26777": msg28882, - "26778": msg28883, - "26779": msg28884, - "2678": msg5129, - "26780": msg28885, - "26781": msg28886, - "26782": msg28887, - "26783": msg28888, - "26784": msg28889, - "26785": msg28890, - "26786": msg28891, - "26787": msg28892, - "26788": msg28893, - "26789": msg28894, - "2679": msg5130, - "26790": msg28895, - "26791": msg28896, - "26792": msg28897, - "26793": msg28898, - "26794": msg28899, - "26795": msg28900, - "26796": msg28901, - "26797": msg28902, - "26798": msg28903, - "26799": msg28904, - "268": select191, - "2680": msg5131, - "26800": msg28905, - "26801": msg28906, - "26802": msg28907, - "26803": msg28908, - "26804": msg28909, - "26805": msg28910, - "26806": msg28911, - "26807": msg28912, - "26808": msg28913, - "26809": msg28914, - "2681": msg5132, - "26810": msg28915, - "26811": msg28916, - "26812": msg28917, - "26813": msg28918, - "26814": msg28919, - "26815": msg28920, - "26816": msg28921, - "26817": msg28922, - "26818": msg28923, - "26819": msg28924, - "2682": msg5133, - "26820": msg28925, - "26821": msg28926, - "26822": msg28927, - "26823": msg28928, - "26824": msg28929, - "26825": msg28930, - "26826": msg28931, - "26827": msg28932, - "26828": msg28933, - "26829": msg28934, - "2683": msg5134, - "26830": msg28935, - "26831": msg28936, - "26832": msg28937, - "26833": msg28938, - "26834": msg28939, - "26835": msg28940, - "26836": msg28941, - "26837": msg28942, - "26838": msg28943, - "26839": msg28944, - "2684": msg5135, - "26840": msg28945, - "26841": msg28946, - "26842": msg28947, - "26843": msg28948, - "26844": msg28949, - "26845": msg28950, - "26846": msg28951, - "26847": msg28952, - "26848": msg28953, - "26849": msg28954, - "2685": msg5136, - "26850": msg28955, - "26851": msg28956, - "26852": msg28957, - "26853": msg28958, - "26854": msg28959, - "26855": msg28960, - "26856": msg28961, - "26857": msg28962, - "26858": msg28963, - "26859": msg28964, - "2686": msg5137, - "26860": msg28965, - "26861": msg28966, - "26862": msg28967, - "26863": msg28968, - "26864": msg28969, - "26865": msg28970, - "26866": msg28971, - "26867": msg28972, - "26868": msg28973, - "26869": msg28974, - "2687": msg5138, - "26870": msg28975, - "26871": msg28976, - "26872": msg28977, - "26873": msg28978, - "26874": msg28979, - "26875": msg28980, - "26876": msg28981, - "26877": msg28982, - "26878": msg28983, - "26879": msg28984, - "2688": msg5139, - "26880": msg28985, - "26881": msg28986, - "26882": msg28987, - "26883": msg28988, - "26884": msg28989, - "26885": msg28990, - "26886": msg28991, - "26887": msg28992, - "26888": msg28993, - "26889": msg28994, - "2689": msg5140, - "26890": msg28995, - "26891": msg28996, - "26892": msg28997, - "26893": msg28998, - "26894": msg28999, - "26895": msg29000, - "26896": msg29001, - "26897": msg29002, - "26898": msg29003, - "26899": msg29004, - "269": select192, - "2690": msg5141, - "26900": msg29005, - "26901": msg29006, - "26902": msg29007, - "26903": msg29008, - "26904": msg29009, - "26905": msg29010, - "26906": msg29011, - "26907": msg29012, - "26908": msg29013, - "26909": msg29014, - "2691": msg5142, - "26910": msg29015, - "26911": msg29016, - "26912": msg29017, - "26913": msg29018, - "26914": msg29019, - "26915": msg29020, - "26916": msg29021, - "26917": msg29022, - "26918": msg29023, - "26919": msg29024, - "2692": msg5143, - "26920": msg29025, - "26921": msg29026, - "26922": msg29027, - "26923": msg29028, - "26924": msg29029, - "26925": msg29030, - "26926": msg29031, - "26927": msg29032, - "26928": msg29033, - "26929": msg29034, - "2693": msg5144, - "26930": msg29035, - "26931": msg29036, - "26932": msg29037, - "26933": msg29038, - "26934": msg29039, - "26935": msg29040, - "26936": msg29041, - "26937": msg29042, - "26938": msg29043, - "26939": msg29044, - "2694": msg5145, - "26940": msg29045, - "26941": msg29046, - "26942": msg29047, - "26943": msg29048, - "26944": msg29049, - "26945": msg29050, - "26946": msg29051, - "26947": msg29052, - "26948": msg29053, - "26949": msg29054, - "2695": msg5146, - "26950": msg29055, - "26951": msg29056, - "26952": msg29057, - "26953": msg29058, - "26954": msg29059, - "26955": msg29060, - "26956": msg29061, - "26957": msg29062, - "26958": msg29063, - "26959": msg29064, - "2696": msg5147, - "26960": msg29065, - "26961": msg29066, - "26962": msg29067, - "26963": msg29068, - "26964": msg29069, - "26965": msg29070, - "26966": msg29071, - "26967": msg29072, - "26968": msg29073, - "26969": msg29074, - "2697": msg5148, - "26970": msg29075, - "26971": msg29076, - "26972": msg29077, - "26973": msg29078, - "26974": msg29079, - "26975": msg29080, - "26976": msg29081, - "26977": msg29082, - "26978": msg29083, - "26979": msg29084, - "2698": msg5149, - "26980": msg29085, - "26981": msg29086, - "26982": msg29087, - "26983": msg29088, - "26984": msg29089, - "26985": msg29090, - "26986": msg29091, - "26987": msg29092, - "26988": msg29093, - "26989": msg29094, - "2699": msg5150, - "26990": msg29095, - "26991": msg29096, - "26992": msg29097, - "26993": msg29098, - "26994": msg29099, - "26995": msg29100, - "26996": msg29101, - "26997": msg29102, - "26998": msg29103, - "26999": msg29104, - "27": msg61, - "270": select193, - "2700": msg5151, - "27000": msg29105, - "27001": msg29106, - "27002": msg29107, - "27003": msg29108, - "27004": msg29109, - "27005": msg29110, - "27006": msg29111, - "27007": msg29112, - "27008": msg29113, - "27009": msg29114, - "2701": msg5152, - "27010": msg29115, - "27011": msg29116, - "27012": msg29117, - "27013": msg29118, - "27014": msg29119, - "27015": msg29120, - "27016": msg29121, - "27017": msg29122, - "27018": msg29123, - "27019": msg29124, - "2702": msg5153, - "27020": msg29125, - "27021": msg29126, - "27022": msg29127, - "27023": msg29128, - "27024": msg29129, - "27025": msg29130, - "27026": msg29131, - "27027": msg29132, - "27028": msg29133, - "27029": msg29134, - "2703": msg5154, - "27030": msg29135, - "27031": msg29136, - "27032": msg29137, - "27033": msg29138, - "27034": msg29139, - "27035": msg29140, - "27036": msg29141, - "27037": msg29142, - "27038": msg29143, - "27039": msg29144, - "2704": msg5155, - "27040": msg29145, - "27041": msg29146, - "27042": msg29147, - "27043": msg29148, - "27044": msg29149, - "27045": msg29150, - "27046": msg29151, - "27047": msg29152, - "27048": msg29153, - "27049": msg29154, - "2705": msg5156, - "27050": msg29155, - "27051": msg29156, - "27052": msg29157, - "27053": msg29158, - "27054": msg29159, - "27055": msg29160, - "27056": msg29161, - "27057": msg29162, - "27058": msg29163, - "27059": msg29164, - "2706": msg5157, - "27060": msg29165, - "27061": msg29166, - "27062": msg29167, - "27063": msg29168, - "27064": msg29169, - "27065": msg29170, - "27066": msg29171, - "27067": msg29172, - "27068": msg29173, - "27069": msg29174, - "2707": msg5158, - "27070": msg29175, - "27071": msg29176, - "27072": msg29177, - "27073": msg29178, - "27074": msg29179, - "27075": msg29180, - "27076": msg29181, - "27077": msg29182, - "27078": msg29183, - "27079": msg29184, - "2708": msg5159, - "27080": msg29185, - "27081": msg29186, - "27082": msg29187, - "27083": msg29188, - "27084": msg29189, - "27085": msg29190, - "27086": msg29191, - "27087": msg29192, - "27088": msg29193, - "27089": msg29194, - "2709": msg5160, - "27090": msg29195, - "27091": msg29196, - "27092": msg29197, - "27093": msg29198, - "27094": msg29199, - "27095": msg29200, - "27096": msg29201, - "27097": msg29202, - "27098": msg29203, - "27099": msg29204, - "271": select194, - "2710": msg5161, - "27100": msg29205, - "27101": msg29206, - "27102": msg29207, - "27103": msg29208, - "27104": msg29209, - "27105": msg29210, - "27106": msg29211, - "27107": msg29212, - "27108": msg29213, - "27109": msg29214, - "2711": msg5162, - "27110": msg29215, - "27111": msg29216, - "27112": msg29217, - "27113": msg29218, - "27114": msg29219, - "27115": msg29220, - "27116": msg29221, - "27117": msg29222, - "27118": msg29223, - "27119": msg29224, - "2712": msg5163, - "27120": msg29225, - "27121": msg29226, - "27122": msg29227, - "27123": msg29228, - "27124": msg29229, - "27125": msg29230, - "27126": msg29231, - "27127": msg29232, - "27128": msg29233, - "27129": msg29234, - "2713": msg5164, - "27130": msg29235, - "27131": msg29236, - "27132": msg29237, - "27133": msg29238, - "27134": msg29239, - "27135": msg29240, - "27136": msg29241, - "27137": msg29242, - "27138": msg29243, - "27139": msg29244, - "2714": msg5165, - "27140": msg29245, - "27141": msg29246, - "27142": msg29247, - "27143": msg29248, - "27144": msg29249, - "27145": msg29250, - "27146": msg29251, - "27147": msg29252, - "27148": msg29253, - "27149": msg29254, - "2715": msg5166, - "27150": msg29255, - "27151": msg29256, - "27152": msg29257, - "27153": msg29258, - "27154": msg29259, - "27155": msg29260, - "27156": msg29261, - "27157": msg29262, - "27158": msg29263, - "27159": msg29264, - "2716": msg5167, - "27160": msg29265, - "27161": msg29266, - "27162": msg29267, - "27163": msg29268, - "27164": msg29269, - "27165": msg29270, - "27166": msg29271, - "27167": msg29272, - "27168": msg29273, - "27169": msg29274, - "2717": msg5168, - "27170": msg29275, - "27171": msg29276, - "27172": msg29277, - "27173": msg29278, - "27174": msg29279, - "27175": msg29280, - "27176": msg29281, - "27177": msg29282, - "27178": msg29283, - "27179": msg29284, - "2718": msg5169, - "27180": msg29285, - "27181": msg29286, - "27182": msg29287, - "27183": msg29288, - "27184": msg29289, - "27185": msg29290, - "27186": msg29291, - "27187": msg29292, - "27188": msg29293, - "27189": msg29294, - "2719": msg5170, - "27190": msg29295, - "27191": msg29296, - "27192": msg29297, - "27193": msg29298, - "27194": msg29299, - "27195": msg29300, - "27196": msg29301, - "27197": msg29302, - "27198": msg29303, - "27199": msg29304, - "272": select195, - "2720": msg5171, - "27200": msg29305, - "27201": msg29306, - "27202": msg29307, - "27203": msg29308, - "27204": msg29309, - "27205": msg29310, - "27206": msg29311, - "27207": msg29312, - "27208": msg29313, - "27209": msg29314, - "2721": msg5172, - "27210": msg29315, - "27211": msg29316, - "27212": msg29317, - "27213": msg29318, - "27214": msg29319, - "27215": msg29320, - "27216": msg29321, - "27217": msg29322, - "27218": msg29323, - "27219": msg29324, - "2722": msg5173, - "27220": msg29325, - "27221": msg29326, - "27222": msg29327, - "27223": msg29328, - "27224": msg29329, - "27225": msg29330, - "27226": msg29331, - "27227": msg29332, - "27228": msg29333, - "27229": msg29334, - "2723": msg5174, - "27230": msg29335, - "27231": msg29336, - "27232": msg29337, - "27233": msg29338, - "27234": msg29339, - "27235": msg29340, - "27236": msg29341, - "27237": msg29342, - "27238": msg29343, - "27239": msg29344, - "2724": msg5175, - "27240": msg29345, - "27241": msg29346, - "27242": msg29347, - "27243": msg29348, - "27244": msg29349, - "27245": msg29350, - "27246": msg29351, - "27247": msg29352, - "27248": msg29353, - "27249": msg29354, - "2725": msg5176, - "27250": msg29355, - "27251": msg29356, - "27252": msg29357, - "27253": msg29358, - "27254": msg29359, - "27255": msg29360, - "27256": msg29361, - "27257": msg29362, - "27258": msg29363, - "27259": msg29364, - "2726": msg5177, - "27260": msg29365, - "27261": msg29366, - "27262": msg29367, - "27263": msg29368, - "27264": msg29369, - "27265": msg29370, - "27266": msg29371, - "27267": msg29372, - "27268": msg29373, - "27269": msg29374, - "2727": msg5178, - "27270": msg29375, - "27271": msg29376, - "27272": msg29377, - "27273": msg29378, - "27274": msg29379, - "27275": msg29380, - "27276": msg29381, - "27277": msg29382, - "27278": msg29383, - "27279": msg29384, - "2728": msg5179, - "27280": msg29385, - "27281": msg29386, - "27282": msg29387, - "27283": msg29388, - "27284": msg29389, - "27285": msg29390, - "27286": msg29391, - "27287": msg29392, - "27288": msg29393, - "27289": msg29394, - "2729": msg5180, - "27290": msg29395, - "27291": msg29396, - "27292": msg29397, - "27293": msg29398, - "27294": msg29399, - "27295": msg29400, - "27296": msg29401, - "27297": msg29402, - "27298": msg29403, - "27299": msg29404, - "273": select196, - "2730": msg5181, - "27300": msg29405, - "27301": msg29406, - "27302": msg29407, - "27303": msg29408, - "27304": msg29409, - "27305": msg29410, - "27306": msg29411, - "27307": msg29412, - "27308": msg29413, - "27309": msg29414, - "2731": msg5182, - "27310": msg29415, - "27311": msg29416, - "27312": msg29417, - "27313": msg29418, - "27314": msg29419, - "27315": msg29420, - "27316": msg29421, - "27317": msg29422, - "27318": msg29423, - "27319": msg29424, - "2732": msg5183, - "27320": msg29425, - "27321": msg29426, - "27322": msg29427, - "27323": msg29428, - "27324": msg29429, - "27325": msg29430, - "27326": msg29431, - "27327": msg29432, - "27328": msg29433, - "27329": msg29434, - "2733": msg5184, - "27330": msg29435, - "27331": msg29436, - "27332": msg29437, - "27333": msg29438, - "27334": msg29439, - "27335": msg29440, - "27336": msg29441, - "27337": msg29442, - "27338": msg29443, - "27339": msg29444, - "2734": msg5185, - "27340": msg29445, - "27341": msg29446, - "27342": msg29447, - "27343": msg29448, - "27344": msg29449, - "27345": msg29450, - "27346": msg29451, - "27347": msg29452, - "27348": msg29453, - "27349": msg29454, - "2735": msg5186, - "27350": msg29455, - "27351": msg29456, - "27352": msg29457, - "27353": msg29458, - "27354": msg29459, - "27355": msg29460, - "27356": msg29461, - "27357": msg29462, - "27358": msg29463, - "27359": msg29464, - "2736": msg5187, - "27360": msg29465, - "27361": msg29466, - "27362": msg29467, - "27363": msg29468, - "27364": msg29469, - "27365": msg29470, - "27366": msg29471, - "27367": msg29472, - "27368": msg29473, - "27369": msg29474, - "2737": msg5188, - "27370": msg29475, - "27371": msg29476, - "27372": msg29477, - "27373": msg29478, - "27374": msg29479, - "27375": msg29480, - "27376": msg29481, - "27377": msg29482, - "27378": msg29483, - "27379": msg29484, - "2738": msg5189, - "27380": msg29485, - "27381": msg29486, - "27382": msg29487, - "27383": msg29488, - "27384": msg29489, - "27385": msg29490, - "27386": msg29491, - "27387": msg29492, - "27388": msg29493, - "27389": msg29494, - "2739": msg5190, - "27390": msg29495, - "27391": msg29496, - "27392": msg29497, - "27393": msg29498, - "27394": msg29499, - "27395": msg29500, - "27396": msg29501, - "27397": msg29502, - "27398": msg29503, - "27399": msg29504, - "274": select197, - "2740": msg5191, - "27400": msg29505, - "27401": msg29506, - "27402": msg29507, - "27403": msg29508, - "27404": msg29509, - "27405": msg29510, - "27406": msg29511, - "27407": msg29512, - "27408": msg29513, - "27409": msg29514, - "2741": msg5192, - "27410": msg29515, - "27411": msg29516, - "27412": msg29517, - "27413": msg29518, - "27414": msg29519, - "27415": msg29520, - "27416": msg29521, - "27417": msg29522, - "27418": msg29523, - "27419": msg29524, - "2742": msg5193, - "27420": msg29525, - "27421": msg29526, - "27422": msg29527, - "27423": msg29528, - "27424": msg29529, - "27425": msg29530, - "27426": msg29531, - "27427": msg29532, - "27428": msg29533, - "27429": msg29534, - "2743": msg5194, - "27430": msg29535, - "27431": msg29536, - "27432": msg29537, - "27433": msg29538, - "27434": msg29539, - "27435": msg29540, - "27436": msg29541, - "27437": msg29542, - "27438": msg29543, - "27439": msg29544, - "2744": msg5195, - "27440": msg29545, - "27441": msg29546, - "27442": msg29547, - "27443": msg29548, - "27444": msg29549, - "27445": msg29550, - "27446": msg29551, - "27447": msg29552, - "27448": msg29553, - "27449": msg29554, - "2745": msg5196, - "27450": msg29555, - "27451": msg29556, - "27452": msg29557, - "27453": msg29558, - "27454": msg29559, - "27455": msg29560, - "27456": msg29561, - "27457": msg29562, - "27458": msg29563, - "27459": msg29564, - "2746": msg5197, - "27460": msg29565, - "27461": msg29566, - "27462": msg29567, - "27463": msg29568, - "27464": msg29569, - "27465": msg29570, - "27466": msg29571, - "27467": msg29572, - "27468": msg29573, - "27469": msg29574, - "2747": msg5198, - "27470": msg29575, - "27471": msg29576, - "27472": msg29577, - "27473": msg29578, - "27474": msg29579, - "27475": msg29580, - "27476": msg29581, - "27477": msg29582, - "27478": msg29583, - "27479": msg29584, - "2748": msg5199, - "27480": msg29585, - "27481": msg29586, - "27482": msg29587, - "27483": msg29588, - "27484": msg29589, - "27485": msg29590, - "27486": msg29591, - "27487": msg29592, - "27488": msg29593, - "27489": msg29594, - "2749": msg5200, - "27490": msg29595, - "27491": msg29596, - "27492": msg29597, - "27493": msg29598, - "27494": msg29599, - "27495": msg29600, - "27496": msg29601, - "27497": msg29602, - "27498": msg29603, - "27499": msg29604, - "275": select198, - "2750": msg5201, - "27500": msg29605, - "27501": msg29606, - "27502": msg29607, - "27503": msg29608, - "27504": msg29609, - "27505": msg29610, - "27506": msg29611, - "27507": msg29612, - "27508": msg29613, - "27509": msg29614, - "2751": msg5202, - "27510": msg29615, - "27511": msg29616, - "27512": msg29617, - "27513": msg29618, - "27514": msg29619, - "27515": msg29620, - "27516": msg29621, - "27517": msg29622, - "27518": msg29623, - "27519": msg29624, - "2752": msg5203, - "27520": msg29625, - "27521": msg29626, - "27522": msg29627, - "27523": msg29628, - "27524": msg29629, - "27525": msg29630, - "27526": msg29631, - "27527": msg29632, - "27528": msg29633, - "27529": msg29634, - "2753": msg5204, - "27530": msg29635, - "27531": msg29636, - "27532": msg29637, - "27533": msg29638, - "27534": msg29639, - "27535": msg29640, - "27536": msg29641, - "27537": msg29642, - "27538": msg29643, - "27539": msg29644, - "2754": msg5205, - "27540": msg29645, - "27541": msg29646, - "27542": msg29647, - "27543": msg29648, - "27544": msg29649, - "27545": msg29650, - "27546": msg29651, - "27547": msg29652, - "27548": msg29653, - "27549": msg29654, - "2755": msg5206, - "27550": msg29655, - "27551": msg29656, - "27552": msg29657, - "27553": msg29658, - "27554": msg29659, - "27555": msg29660, - "27556": msg29661, - "27557": msg29662, - "27558": msg29663, - "27559": msg29664, - "2756": msg5207, - "27560": msg29665, - "27561": msg29666, - "27562": msg29667, - "27563": msg29668, - "27564": msg29669, - "27565": msg29670, - "27566": msg29671, - "27567": msg29672, - "27568": msg29673, - "27569": msg29674, - "2757": msg5208, - "27570": msg29675, - "27571": msg29676, - "27572": msg29677, - "27573": msg29678, - "27574": msg29679, - "27575": msg29680, - "27576": msg29681, - "27577": msg29682, - "27578": msg29683, - "27579": msg29684, - "2758": msg5209, - "27580": msg29685, - "27581": msg29686, - "27582": msg29687, - "27583": msg29688, - "27584": msg29689, - "27585": msg29690, - "27586": msg29691, - "27587": msg29692, - "27588": msg29693, - "27589": msg29694, - "2759": msg5210, - "27590": msg29695, - "27591": msg29696, - "27592": msg29697, - "27593": msg29698, - "27594": msg29699, - "27595": msg29700, - "27596": msg29701, - "27597": msg29702, - "27598": msg29703, - "27599": msg29704, - "276": select199, - "2760": msg5211, - "27600": msg29705, - "27601": msg29706, - "27602": msg29707, - "27603": msg29708, - "27604": msg29709, - "27605": msg29710, - "27606": msg29711, - "27607": msg29712, - "27608": msg29713, - "27609": msg29714, - "2761": msg5212, - "27610": msg29715, - "27611": msg29716, - "27612": msg29717, - "27613": msg29718, - "27614": msg29719, - "27615": msg29720, - "27616": msg29721, - "27617": msg29722, - "27618": msg29723, - "27619": msg29724, - "2762": msg5213, - "27620": msg29725, - "27621": msg29726, - "27622": msg29727, - "27623": msg29728, - "27624": msg29729, - "27625": msg29730, - "27626": msg29731, - "27627": msg29732, - "27628": msg29733, - "27629": msg29734, - "2763": msg5214, - "27630": msg29735, - "27631": msg29736, - "27632": msg29737, - "27633": msg29738, - "27634": msg29739, - "27635": msg29740, - "27636": msg29741, - "27637": msg29742, - "27638": msg29743, - "27639": msg29744, - "2764": msg5215, - "27640": msg29745, - "27641": msg29746, - "27642": msg29747, - "27643": msg29748, - "27644": msg29749, - "27645": msg29750, - "27646": msg29751, - "27647": msg29752, - "27648": msg29753, - "27649": msg29754, - "2765": msg5216, - "27650": msg29755, - "27651": msg29756, - "27652": msg29757, - "27653": msg29758, - "27654": msg29759, - "27655": msg29760, - "27656": msg29761, - "27657": msg29762, - "27658": msg29763, - "27659": msg29764, - "2766": msg5217, - "27660": msg29765, - "27661": msg29766, - "27662": msg29767, - "27663": msg29768, - "27664": msg29769, - "27665": msg29770, - "27666": msg29771, - "27667": msg29772, - "27668": msg29773, - "27669": msg29774, - "2767": msg5218, - "27670": msg29775, - "27671": msg29776, - "27672": msg29777, - "27673": msg29778, - "27674": msg29779, - "27675": msg29780, - "27676": msg29781, - "27677": msg29782, - "27678": msg29783, - "27679": msg29784, - "2768": msg5219, - "27680": msg29785, - "27681": msg29786, - "27682": msg29787, - "27683": msg29788, - "27684": msg29789, - "27685": msg29790, - "27686": msg29791, - "27687": msg29792, - "27688": msg29793, - "27689": msg29794, - "2769": msg5220, - "27690": msg29795, - "27691": msg29796, - "27692": msg29797, - "27693": msg29798, - "27694": msg29799, - "27695": msg29800, - "27696": msg29801, - "27697": msg29802, - "27698": msg29803, - "27699": msg29804, - "277": select200, - "2770": msg5221, - "27700": msg29805, - "27701": msg29806, - "27702": msg29807, - "27703": msg29808, - "27704": msg29809, - "27705": msg29810, - "27706": msg29811, - "27707": msg29812, - "27708": msg29813, - "27709": msg29814, - "2771": msg5222, - "27710": msg29815, - "27711": msg29816, - "27712": msg29817, - "27713": msg29818, - "27714": msg29819, - "27715": msg29820, - "27716": msg29821, - "27717": msg29822, - "27718": msg29823, - "27719": msg29824, - "2772": msg5223, - "27720": msg29825, - "27721": msg29826, - "27722": msg29827, - "27723": msg29828, - "27724": msg29829, - "27725": msg29830, - "27726": msg29831, - "27727": msg29832, - "27728": msg29833, - "27729": msg29834, - "2773": msg5224, - "27730": msg29835, - "27731": msg29836, - "27732": msg29837, - "27733": msg29838, - "27734": msg29839, - "27735": msg29840, - "27736": msg29841, - "27737": msg29842, - "27738": msg29843, - "27739": msg29844, - "2774": msg5225, - "27740": msg29845, - "27741": msg29846, - "27742": msg29847, - "27743": msg29848, - "27744": msg29849, - "27745": msg29850, - "27746": msg29851, - "27747": msg29852, - "27748": msg29853, - "27749": msg29854, - "2775": msg5226, - "27750": msg29855, - "27751": msg29856, - "27752": msg29857, - "27753": msg29858, - "27754": msg29859, - "27755": msg29860, - "27756": msg29861, - "27757": msg29862, - "27758": msg29863, - "27759": msg29864, - "2776": msg5227, - "27760": msg29865, - "27761": msg29866, - "27762": msg29867, - "27763": msg29868, - "27764": msg29869, - "27765": msg29870, - "27766": msg29871, - "27767": msg29872, - "27768": msg29873, - "27769": msg29874, - "2777": msg5228, - "27770": msg29875, - "27771": msg29876, - "27772": msg29877, - "27773": msg29878, - "27774": msg29879, - "27775": msg29880, - "27776": msg29881, - "27777": msg29882, - "27778": msg29883, - "27779": msg29884, - "2778": msg5229, - "27780": msg29885, - "27781": msg29886, - "27782": msg29887, - "27783": msg29888, - "27784": msg29889, - "27785": msg29890, - "27786": msg29891, - "27787": msg29892, - "27788": msg29893, - "27789": msg29894, - "2779": msg5230, - "27790": msg29895, - "27791": msg29896, - "27792": msg29897, - "27793": msg29898, - "27794": msg29899, - "27795": msg29900, - "27796": msg29901, - "27797": msg29902, - "27798": msg29903, - "27799": msg29904, - "278": select201, - "2780": msg5231, - "27800": msg29905, - "27801": msg29906, - "27802": msg29907, - "27803": msg29908, - "27804": msg29909, - "27805": msg29910, - "27806": msg29911, - "27807": msg29912, - "27808": msg29913, - "27809": msg29914, - "2781": msg5232, - "27810": msg29915, - "27811": msg29916, - "27812": msg29917, - "27813": msg29918, - "27814": msg29919, - "27815": msg29920, - "27816": msg29921, - "27817": msg29922, - "27818": msg29923, - "27819": msg29924, - "2782": msg5233, - "27820": msg29925, - "27821": msg29926, - "27822": msg29927, - "27823": msg29928, - "27824": msg29929, - "27825": msg29930, - "27826": msg29931, - "27827": msg29932, - "27828": msg29933, - "27829": msg29934, - "2783": msg5234, - "27830": msg29935, - "27831": msg29936, - "27832": msg29937, - "27833": msg29938, - "27834": msg29939, - "27835": msg29940, - "27836": msg29941, - "27837": msg29942, - "27838": msg29943, - "27839": msg29944, - "2784": msg5235, - "27840": msg29945, - "27841": msg29946, - "27842": msg29947, - "27843": msg29948, - "27844": msg29949, - "27845": msg29950, - "27846": msg29951, - "27847": msg29952, - "27848": msg29953, - "27849": msg29954, - "2785": msg5236, - "27850": msg29955, - "27851": msg29956, - "27852": msg29957, - "27853": msg29958, - "27854": msg29959, - "27855": msg29960, - "27856": msg29961, - "27857": msg29962, - "27858": msg29963, - "27859": msg29964, - "2786": msg5237, - "27860": msg29965, - "27861": msg29966, - "27862": msg29967, - "27863": msg29968, - "27864": msg29969, - "27865": msg29970, - "27866": msg29971, - "27867": msg29972, - "27868": msg29973, - "27869": msg29974, - "2787": msg5238, - "27870": msg29975, - "27871": msg29976, - "27872": msg29977, - "27873": msg29978, - "27874": msg29979, - "27875": msg29980, - "27876": msg29981, - "27877": msg29982, - "27878": msg29983, - "27879": msg29984, - "2788": msg5239, - "27880": msg29985, - "27881": msg29986, - "27882": msg29987, - "27883": msg29988, - "27884": msg29989, - "27885": msg29990, - "27886": msg29991, - "27887": msg29992, - "27888": msg29993, - "27889": msg29994, - "2789": msg5240, - "27890": msg29995, - "27891": msg29996, - "27892": msg29997, - "27893": msg29998, - "27894": msg29999, - "27895": msg30000, - "27896": msg30001, - "27897": msg30002, - "27898": msg30003, - "27899": msg30004, - "279": select202, - "2790": msg5241, - "27900": msg30005, - "27901": msg30006, - "27902": msg30007, - "27903": msg30008, - "27904": msg30009, - "27905": msg30010, - "27906": msg30011, - "27907": msg30012, - "27908": msg30013, - "27909": msg30014, - "2791": msg5242, - "27910": msg30015, - "27911": msg30016, - "27912": msg30017, - "27913": msg30018, - "27914": msg30019, - "27915": msg30020, - "27916": msg30021, - "27917": msg30022, - "27918": msg30023, - "27919": msg30024, - "2792": msg5243, - "27920": msg30025, - "27921": msg30026, - "27922": msg30027, - "27923": msg30028, - "27924": msg30029, - "27925": msg30030, - "27926": msg30031, - "27927": msg30032, - "27928": msg30033, - "27929": msg30034, - "2793": msg5244, - "27930": msg30035, - "27931": msg30036, - "27932": msg30037, - "27933": msg30038, - "27934": msg30039, - "27935": msg30040, - "27936": msg30041, - "27937": msg30042, - "27938": msg30043, - "27939": msg30044, - "2794": msg5245, - "27940": msg30045, - "27941": msg30046, - "27942": msg30047, - "27943": msg30048, - "27944": msg30049, - "27945": msg30050, - "27946": msg30051, - "27947": msg30052, - "27948": msg30053, - "27949": msg30054, - "2795": msg5246, - "27950": msg30055, - "27951": msg30056, - "27952": msg30057, - "27953": msg30058, - "27954": msg30059, - "27955": msg30060, - "27956": msg30061, - "27957": msg30062, - "27958": msg30063, - "27959": msg30064, - "2796": msg5247, - "27960": msg30065, - "27961": msg30066, - "27962": msg30067, - "27963": msg30068, - "27964": msg30069, - "27965": msg30070, - "27966": msg30071, - "27967": msg30072, - "27968": msg30073, - "27969": msg30074, - "2797": msg5248, - "27970": msg30075, - "27971": msg30076, - "27972": msg30077, - "27973": msg30078, - "27974": msg30079, - "27975": msg30080, - "27976": msg30081, - "27977": msg30082, - "27978": msg30083, - "27979": msg30084, - "2798": msg5249, - "27980": msg30085, - "27981": msg30086, - "27982": msg30087, - "27983": msg30088, - "27984": msg30089, - "27985": msg30090, - "27986": msg30091, - "27987": msg30092, - "27988": msg30093, - "27989": msg30094, - "2799": msg5250, - "27990": msg30095, - "27991": msg30096, - "27992": msg30097, - "27993": msg30098, - "27994": msg30099, - "27995": msg30100, - "27996": msg30101, - "27997": msg30102, - "27998": msg30103, - "27999": msg30104, - "28": msg62, - "280": select203, - "2800": msg5251, - "28000": msg30105, - "28001": msg30106, - "28002": msg30107, - "28003": msg30108, - "28004": msg30109, - "28005": msg30110, - "28006": msg30111, - "28007": msg30112, - "28008": msg30113, - "28009": msg30114, - "2801": msg5252, - "28010": msg30115, - "28011": msg30116, - "28012": msg30117, - "28013": msg30118, - "28014": msg30119, - "28015": msg30120, - "28016": msg30121, - "28017": msg30122, - "28018": msg30123, - "28019": msg30124, - "2802": msg5253, - "28020": msg30125, - "28021": msg30126, - "28022": msg30127, - "28023": msg30128, - "28024": msg30129, - "28025": msg30130, - "28026": msg30131, - "28027": msg30132, - "28028": msg30133, - "28029": msg30134, - "2803": msg5254, - "28030": msg30135, - "28031": msg30136, - "28032": msg30137, - "28033": msg30138, - "28034": msg30139, - "28035": msg30140, - "28036": msg30141, - "28037": msg30142, - "28038": msg30143, - "28039": msg30144, - "2804": msg5255, - "28040": msg30145, - "28041": msg30146, - "28042": msg30147, - "28043": msg30148, - "28044": msg30149, - "28045": msg30150, - "28046": msg30151, - "28047": msg30152, - "28048": msg30153, - "28049": msg30154, - "2805": msg5256, - "28050": msg30155, - "28051": msg30156, - "28052": msg30157, - "28053": msg30158, - "28054": msg30159, - "28055": msg30160, - "28056": msg30161, - "28057": msg30162, - "28058": msg30163, - "28059": msg30164, - "2806": msg5257, - "28060": msg30165, - "28061": msg30166, - "28062": msg30167, - "28063": msg30168, - "28064": msg30169, - "28065": msg30170, - "28066": msg30171, - "28067": msg30172, - "28068": msg30173, - "28069": msg30174, - "2807": msg5258, - "28070": msg30175, - "28071": msg30176, - "28072": msg30177, - "28073": msg30178, - "28074": msg30179, - "28075": msg30180, - "28076": msg30181, - "28077": msg30182, - "28078": msg30183, - "28079": msg30184, - "2808": msg5259, - "28080": msg30185, - "28081": msg30186, - "28082": msg30187, - "28083": msg30188, - "28084": msg30189, - "28085": msg30190, - "28086": msg30191, - "28087": msg30192, - "28088": msg30193, - "28089": msg30194, - "2809": msg5260, - "28090": msg30195, - "28093": msg30196, - "28094": msg30197, - "28095": msg30198, - "28096": msg30199, - "28097": msg30200, - "28098": msg30201, - "28099": msg30202, - "281": select204, - "2810": msg5261, - "28100": msg30203, - "28101": msg30204, - "28102": msg30205, - "28103": msg30206, - "28104": msg30207, - "28105": msg30208, - "28106": msg30209, - "28107": msg30210, - "28108": msg30211, - "28109": msg30212, - "2811": msg5262, - "28110": msg30213, - "28111": msg30214, - "28112": msg30215, - "28113": msg30216, - "28114": msg30217, - "28115": msg30218, - "28116": msg30219, - "28117": msg30220, - "28118": msg30221, - "28119": msg30222, - "2812": msg5263, - "28120": msg30223, - "28121": msg30224, - "28122": msg30225, - "28123": msg30226, - "28124": msg30227, - "28125": msg30228, - "28126": msg30229, - "28127": msg30230, - "28128": msg30231, - "28129": msg30232, - "2813": msg5264, - "28130": msg30233, - "28131": msg30234, - "28132": msg30235, - "28133": msg30236, - "28134": msg30237, - "28135": msg30238, - "28136": msg30239, - "28137": msg30240, - "28138": msg30241, - "28139": msg30242, - "2814": msg5265, - "28140": msg30243, - "28141": msg30244, - "28142": msg30245, - "28143": msg30246, - "28144": msg30247, - "28145": msg30248, - "28146": msg30249, - "28147": msg30250, - "28148": msg30251, - "28149": msg30252, - "2815": msg5266, - "28150": msg30253, - "28151": msg30254, - "28152": msg30255, - "28153": msg30256, - "28154": msg30257, - "28155": msg30258, - "28156": msg30259, - "28157": msg30260, - "28158": msg30261, - "28159": msg30262, - "2816": msg5267, - "28160": msg30263, - "28161": msg30264, - "28162": msg30265, - "28163": msg30266, - "28164": msg30267, - "28165": msg30268, - "28166": msg30269, - "28167": msg30270, - "28168": msg30271, - "28169": msg30272, - "2817": msg5268, - "28170": msg30273, - "28171": msg30274, - "28172": msg30275, - "28173": msg30276, - "28174": msg30277, - "28175": msg30278, - "28176": msg30279, - "28177": msg30280, - "28178": msg30281, - "28179": msg30282, - "2818": msg5269, - "28180": msg30283, - "28181": msg30284, - "28182": msg30285, - "28183": msg30286, - "28184": msg30287, - "28185": msg30288, - "28186": msg30289, - "28187": msg30290, - "28188": msg30291, - "28189": msg30292, - "2819": msg5270, - "28190": msg30293, - "28191": msg30294, - "28192": msg30295, - "28193": msg30296, - "28194": msg30297, - "28195": msg30298, - "28196": msg30299, - "28197": msg30300, - "28198": msg30301, - "28199": msg30302, - "282": select205, - "2820": msg5271, - "28200": msg30303, - "28201": msg30304, - "28202": msg30305, - "28203": msg30306, - "28204": msg30307, - "28205": msg30308, - "28206": msg30309, - "28207": msg30310, - "28208": msg30311, - "28209": msg30312, - "2821": msg5272, - "28210": msg30313, - "28211": msg30314, - "28212": msg30315, - "28213": msg30316, - "28214": msg30317, - "28215": msg30318, - "28216": msg30319, - "28217": msg30320, - "28218": msg30321, - "28219": msg30322, - "2822": msg5273, - "28220": msg30323, - "28221": msg30324, - "28222": msg30325, - "28223": msg30326, - "28224": msg30327, - "28225": msg30328, - "28226": msg30329, - "28227": msg30330, - "28228": msg30331, - "28229": msg30332, - "2823": msg5274, - "28230": msg30333, - "28231": msg30334, - "28232": msg30335, - "28233": msg30336, - "28234": msg30337, - "28235": msg30338, - "28236": msg30339, - "28237": msg30340, - "28238": msg30341, - "28239": msg30342, - "2824": msg5275, - "28240": msg30343, - "28241": msg30344, - "28242": msg30345, - "28243": msg30346, - "28244": msg30347, - "28245": msg30348, - "28246": msg30349, - "28247": msg30350, - "28248": msg30351, - "28249": msg30352, - "2825": msg5276, - "28250": msg30353, - "28251": msg30354, - "28252": msg30355, - "28253": msg30356, - "28254": msg30357, - "28255": msg30358, - "28256": msg30359, - "28257": msg30360, - "28258": msg30361, - "28259": msg30362, - "2826": msg5277, - "28260": msg30363, - "28261": msg30364, - "28262": msg30365, - "28263": msg30366, - "28264": msg30367, - "28265": msg30368, - "28266": msg30369, - "28267": msg30370, - "28268": msg30371, - "28269": msg30372, - "2827": msg5278, - "28270": msg30373, - "28271": msg30374, - "28272": msg30375, - "28273": msg30376, - "28274": msg30377, - "28275": msg30378, - "28276": msg30379, - "28277": msg30380, - "28278": msg30381, - "28279": msg30382, - "2828": msg5279, - "28280": msg30383, - "28281": msg30384, - "28282": msg30385, - "28283": msg30386, - "28284": msg30387, - "28285": msg30388, - "28286": msg30389, - "28287": msg30390, - "28288": msg30391, - "28289": msg30392, - "2829": msg5280, - "28290": msg30393, - "28291": msg30394, - "28292": msg30395, - "28293": msg30396, - "28294": msg30397, - "28295": msg30398, - "28296": msg30399, - "28297": msg30400, - "28298": msg30401, - "28299": msg30402, - "283": select206, - "2830": msg5281, - "28300": msg30403, - "28303": msg30404, - "28304": msg30405, - "28305": msg30406, - "28306": msg30407, - "28309": msg30408, - "2831": msg5282, - "28315": msg30409, - "2832": msg5283, - "28323": msg30410, - "28325": msg30411, - "28326": msg30412, - "28327": msg30413, - "28328": msg30414, - "28329": msg30415, - "2833": msg5284, - "28330": msg30416, - "28331": msg30417, - "28332": msg30418, - "28333": msg30419, - "28334": msg30420, - "28335": msg30421, - "28336": msg30422, - "28337": msg30423, - "28338": msg30424, - "28339": msg30425, - "2834": msg5285, - "28340": msg30426, - "28341": msg30427, - "28342": msg30428, - "28343": msg30429, - "28344": msg30430, - "28345": msg30431, - "28346": msg30432, - "28347": msg30433, - "28348": msg30434, - "28349": msg30435, - "2835": msg5286, - "28350": msg30436, - "28351": msg30437, - "28352": msg30438, - "28353": msg30439, - "28354": msg30440, - "28355": msg30441, - "28356": msg30442, - "28357": msg30443, - "28358": msg30444, - "28359": msg30445, - "2836": msg5287, - "28360": msg30446, - "28361": msg30447, - "28362": msg30448, - "28363": msg30449, - "28364": msg30450, - "28365": msg30451, - "28366": msg30452, - "28367": msg30453, - "28368": msg30454, - "28369": msg30455, - "2837": msg5288, - "28370": msg30456, - "28371": msg30457, - "28372": msg30458, - "28373": msg30459, - "28374": msg30460, - "28375": msg30461, - "28376": msg30462, - "28377": msg30463, - "28378": msg30464, - "28379": msg30465, - "2838": msg5289, - "28380": msg30466, - "28381": msg30467, - "28382": msg30468, - "28383": msg30469, - "28384": msg30470, - "28385": msg30471, - "28386": msg30472, - "28387": msg30473, - "28388": msg30474, - "28389": msg30475, - "2839": msg5290, - "28390": msg30476, - "28391": msg30477, - "28392": msg30478, - "28393": msg30479, - "28394": msg30480, - "28395": msg30481, - "28396": msg30482, - "28397": msg30483, - "28398": msg30484, - "28399": msg30485, - "284": select207, - "2840": msg5291, - "28400": msg30486, - "28401": msg30487, - "28402": msg30488, - "28403": msg30489, - "28404": msg30490, - "28405": msg30491, - "28406": msg30492, - "28407": msg30493, - "28408": msg30494, - "28409": msg30495, - "2841": msg5292, - "28410": msg30496, - "28411": msg30497, - "28412": msg30498, - "28413": msg30499, - "28414": msg30500, - "28415": msg30501, - "28416": msg30502, - "28417": msg30503, - "28418": msg30504, - "28419": msg30505, - "2842": msg5293, - "28420": msg30506, - "28421": msg30507, - "28422": msg30508, - "28423": msg30509, - "28424": msg30510, - "28425": msg30511, - "28426": msg30512, - "28427": msg30513, - "28428": msg30514, - "28429": msg30515, - "2843": msg5294, - "28430": msg30516, - "28431": msg30517, - "28432": msg30518, - "28433": msg30519, - "28434": msg30520, - "28435": msg30521, - "28436": msg30522, - "28437": msg30523, - "28438": msg30524, - "28439": msg30525, - "2844": msg5295, - "28440": msg30526, - "28441": msg30527, - "28442": msg30528, - "28443": msg30529, - "28444": msg30530, - "28445": msg30531, - "28446": msg30532, - "28447": msg30533, - "28448": msg30534, - "28449": msg30535, - "2845": msg5296, - "28450": msg30536, - "28451": msg30537, - "28452": msg30538, - "28453": msg30539, - "28454": msg30540, - "28455": msg30541, - "28456": msg30542, - "28457": msg30543, - "28458": msg30544, - "28459": msg30545, - "2846": msg5297, - "28460": msg30546, - "28461": msg30547, - "28462": msg30548, - "28463": msg30549, - "28464": msg30550, - "28465": msg30551, - "28466": msg30552, - "28467": msg30553, - "28468": msg30554, - "28469": msg30555, - "2847": msg5298, - "28470": msg30556, - "28471": msg30557, - "28472": msg30558, - "28473": msg30559, - "28474": msg30560, - "28475": msg30561, - "28476": msg30562, - "28477": msg30563, - "28478": msg30564, - "28479": msg30565, - "2848": msg5299, - "28480": msg30566, - "28481": msg30567, - "28482": msg30568, - "28483": msg30569, - "28484": msg30570, - "28485": msg30571, - "28486": msg30572, - "28487": msg30573, - "28488": msg30574, - "28489": msg30575, - "2849": msg5300, - "28490": msg30576, - "28491": msg30577, - "28492": msg30578, - "28493": msg30579, - "28494": msg30580, - "28495": msg30581, - "28496": msg30582, - "28497": msg30583, - "28498": msg30584, - "28499": msg30585, - "285": select208, - "2850": msg5301, - "28500": msg30586, - "28501": msg30587, - "28502": msg30588, - "28503": msg30589, - "28504": msg30590, - "28505": msg30591, - "28506": msg30592, - "28507": msg30593, - "28508": msg30594, - "28509": msg30595, - "2851": msg5302, - "28510": msg30596, - "28511": msg30597, - "28512": msg30598, - "28513": msg30599, - "28514": msg30600, - "28515": msg30601, - "28516": msg30602, - "28517": msg30603, - "28518": msg30604, - "28519": msg30605, - "2852": msg5303, - "28520": msg30606, - "28521": msg30607, - "28522": msg30608, - "28523": msg30609, - "28524": msg30610, - "28525": msg30611, - "28526": msg30612, - "28527": msg30613, - "28528": msg30614, - "28529": msg30615, - "2853": msg5304, - "28530": msg30616, - "28531": msg30617, - "28532": msg30618, - "28533": msg30619, - "28534": msg30620, - "28535": msg30621, - "28536": msg30622, - "28537": msg30623, - "28538": msg30624, - "28539": msg30625, - "2854": msg5305, - "28540": msg30626, - "28541": msg30627, - "28542": msg30628, - "28543": msg30629, - "28544": msg30630, - "28545": msg30631, - "28546": msg30632, - "28547": msg30633, - "28548": msg30634, - "28549": msg30635, - "2855": msg5306, - "28550": msg30636, - "28551": msg30637, - "28552": msg30638, - "28553": msg30639, - "28554": msg30640, - "28555": msg30641, - "28556": msg30642, - "28557": msg30643, - "28558": msg30644, - "28559": msg30645, - "2856": msg5307, - "28560": msg30646, - "28561": msg30647, - "28562": msg30648, - "28563": msg30649, - "28564": msg30650, - "28565": msg30651, - "28566": msg30652, - "28567": msg30653, - "28568": msg30654, - "28569": msg30655, - "2857": msg5308, - "28570": msg30656, - "28571": msg30657, - "28572": msg30658, - "28573": msg30659, - "28574": msg30660, - "28575": msg30661, - "28576": msg30662, - "28577": msg30663, - "28578": msg30664, - "28579": msg30665, - "2858": msg5309, - "28580": msg30666, - "28581": msg30667, - "28582": msg30668, - "28583": msg30669, - "28584": msg30670, - "28585": msg30671, - "28586": msg30672, - "28587": msg30673, - "28588": msg30674, - "28589": msg30675, - "2859": msg5310, - "28590": msg30676, - "28591": msg30677, - "28592": msg30678, - "28593": msg30679, - "28594": msg30680, - "28595": msg30681, - "28596": msg30682, - "28597": msg30683, - "28598": msg30684, - "28599": msg30685, - "286": select209, - "2860": msg5311, - "28600": msg30686, - "28601": msg30687, - "28602": msg30688, - "28603": msg30689, - "28604": msg30690, - "28605": msg30691, - "28606": msg30692, - "28607": msg30693, - "28608": msg30694, - "28609": msg30695, - "2861": msg5312, - "28610": msg30696, - "28611": msg30697, - "28612": msg30698, - "28613": msg30699, - "28614": msg30700, - "28615": msg30701, - "28616": msg30702, - "28617": msg30703, - "28618": msg30704, - "28619": msg30705, - "2862": msg5313, - "28620": msg30706, - "28621": msg30707, - "28622": msg30708, - "28623": msg30709, - "28624": msg30710, - "28625": msg30711, - "28626": msg30712, - "28627": msg30713, - "28628": msg30714, - "28629": msg30715, - "2863": msg5314, - "28630": msg30716, - "28631": msg30717, - "28632": msg30718, - "28633": msg30719, - "28634": msg30720, - "28635": msg30721, - "28636": msg30722, - "28637": msg30723, - "28638": msg30724, - "28639": msg30725, - "2864": msg5315, - "28640": msg30726, - "28641": msg30727, - "28642": msg30728, - "28643": msg30729, - "28644": msg30730, - "28645": msg30731, - "28646": msg30732, - "28647": msg30733, - "28648": msg30734, - "28649": msg30735, - "2865": msg5316, - "28650": msg30736, - "28651": msg30737, - "28652": msg30738, - "28653": msg30739, - "28654": msg30740, - "28655": msg30741, - "28656": msg30742, - "28657": msg30743, - "28658": msg30744, - "28659": msg30745, - "2866": msg5317, - "28660": msg30746, - "28661": msg30747, - "28662": msg30748, - "28663": msg30749, - "28664": msg30750, - "28665": msg30751, - "28666": msg30752, - "28667": msg30753, - "28668": msg30754, - "28669": msg30755, - "2867": msg5318, - "28670": msg30756, - "28671": msg30757, - "28672": msg30758, - "28673": msg30759, - "28674": msg30760, - "28675": msg30761, - "28676": msg30762, - "28677": msg30763, - "28678": msg30764, - "28679": msg30765, - "2868": msg5319, - "28680": msg30766, - "28681": msg30767, - "28682": msg30768, - "28683": msg30769, - "28684": msg30770, - "28685": msg30771, - "28686": msg30772, - "28687": msg30773, - "28688": msg30774, - "28689": msg30775, - "2869": msg5320, - "28690": msg30776, - "28691": msg30777, - "28692": msg30778, - "28693": msg30779, - "28694": msg30780, - "28695": msg30781, - "28696": msg30782, - "28697": msg30783, - "28698": msg30784, - "28699": msg30785, - "287": select210, - "2870": msg5321, - "28700": msg30786, - "28701": msg30787, - "28702": msg30788, - "28703": msg30789, - "28704": msg30790, - "28705": msg30791, - "28706": msg30792, - "28707": msg30793, - "28708": msg30794, - "28709": msg30795, - "2871": msg5322, - "28710": msg30796, - "28711": msg30797, - "28712": msg30798, - "28713": msg30799, - "28714": msg30800, - "28715": msg30801, - "28716": msg30802, - "28717": msg30803, - "28718": msg30804, - "28719": msg30805, - "2872": msg5323, - "28720": msg30806, - "28721": msg30807, - "28722": msg30808, - "28723": msg30809, - "28724": msg30810, - "28725": msg30811, - "28726": msg30812, - "28727": msg30813, - "28728": msg30814, - "28729": msg30815, - "2873": msg5324, - "28730": msg30816, - "28731": msg30817, - "28732": msg30818, - "28733": msg30819, - "28734": msg30820, - "28735": msg30821, - "28736": msg30822, - "28737": msg30823, - "28738": msg30824, - "28739": msg30825, - "2874": msg5325, - "28740": msg30826, - "28741": msg30827, - "28742": msg30828, - "28743": msg30829, - "28744": msg30830, - "28745": msg30831, - "28746": msg30832, - "28747": msg30833, - "28748": msg30834, - "28749": msg30835, - "2875": msg5326, - "28750": msg30836, - "28751": msg30837, - "28752": msg30838, - "28753": msg30839, - "28754": msg30840, - "28755": msg30841, - "28756": msg30842, - "28757": msg30843, - "28758": msg30844, - "28759": msg30845, - "2876": msg5327, - "28760": msg30846, - "28761": msg30847, - "28762": msg30848, - "28763": msg30849, - "28764": msg30850, - "28765": msg30851, - "28766": msg30852, - "28767": msg30853, - "28768": msg30854, - "28769": msg30855, - "2877": msg5328, - "28770": msg30856, - "28771": msg30857, - "28772": msg30858, - "28773": msg30859, - "28774": msg30860, - "28775": msg30861, - "28776": msg30862, - "28777": msg30863, - "28778": msg30864, - "28779": msg30865, - "2878": msg5329, - "28780": msg30866, - "28781": msg30867, - "28782": msg30868, - "28783": msg30869, - "28784": msg30870, - "28785": msg30871, - "28786": msg30872, - "28787": msg30873, - "28788": msg30874, - "28789": msg30875, - "2879": msg5330, - "28790": msg30876, - "28791": msg30877, - "28792": msg30878, - "28793": msg30879, - "28794": msg30880, - "28795": msg30881, - "28796": msg30882, - "28797": msg30883, - "28798": msg30884, - "28799": msg30885, - "288": select211, - "2880": msg5331, - "28800": msg30886, - "28801": msg30887, - "28802": msg30888, - "28803": msg30889, - "28804": msg30890, - "28805": msg30891, - "28806": msg30892, - "28807": msg30893, - "28808": msg30894, - "28809": msg30895, - "2881": msg5332, - "28810": msg30896, - "28811": msg30897, - "28812": msg30898, - "28813": msg30899, - "28814": msg30900, - "28815": msg30901, - "28816": msg30902, - "28817": msg30903, - "28818": msg30904, - "28819": msg30905, - "2882": msg5333, - "28820": msg30906, - "28821": msg30907, - "28822": msg30908, - "28823": msg30909, - "28824": msg30910, - "28825": msg30911, - "28826": msg30912, - "28827": msg30913, - "28828": msg30914, - "28829": msg30915, - "2883": msg5334, - "28830": msg30916, - "28831": msg30917, - "28832": msg30918, - "28833": msg30919, - "28834": msg30920, - "28835": msg30921, - "28836": msg30922, - "28837": msg30923, - "28838": msg30924, - "28839": msg30925, - "2884": msg5335, - "28840": msg30926, - "28841": msg30927, - "28842": msg30928, - "28843": msg30929, - "28844": msg30930, - "28845": msg30931, - "28846": msg30932, - "28847": msg30933, - "28848": msg30934, - "28849": msg30935, - "2885": msg5336, - "28850": msg30936, - "28851": msg30937, - "28852": msg30938, - "28853": msg30939, - "28854": msg30940, - "28855": msg30941, - "28856": msg30942, - "28857": msg30943, - "28858": msg30944, - "28859": msg30945, - "2886": msg5337, - "28860": msg30946, - "28861": msg30947, - "28862": msg30948, - "28863": msg30949, - "28864": msg30950, - "28865": msg30951, - "28866": msg30952, - "28867": msg30953, - "28868": msg30954, - "28869": msg30955, - "2887": msg5338, - "28870": msg30956, - "28871": msg30957, - "28872": msg30958, - "28873": msg30959, - "28874": msg30960, - "28875": msg30961, - "28876": msg30962, - "28877": msg30963, - "28878": msg30964, - "28879": msg30965, - "2888": msg5339, - "28880": msg30966, - "28881": msg30967, - "28882": msg30968, - "28883": msg30969, - "28884": msg30970, - "28885": msg30971, - "28886": msg30972, - "28887": msg30973, - "28888": msg30974, - "28889": msg30975, - "2889": msg5340, - "28890": msg30976, - "28891": msg30977, - "28892": msg30978, - "28893": msg30979, - "28894": msg30980, - "28895": msg30981, - "28896": msg30982, - "28897": msg30983, - "28898": msg30984, - "28899": msg30985, - "289": select212, - "2890": msg5341, - "28900": msg30986, - "28901": msg30987, - "28902": msg30988, - "28903": msg30989, - "28904": msg30990, - "28905": msg30991, - "28906": msg30992, - "28907": msg30993, - "28908": msg30994, - "28909": msg30995, - "2891": msg5342, - "28910": msg30996, - "28911": msg30997, - "28912": msg30998, - "28913": msg30999, - "28914": msg31000, - "28915": msg31001, - "28916": msg31002, - "28917": msg31003, - "28918": msg31004, - "28919": msg31005, - "2892": msg5343, - "28920": msg31006, - "28921": msg31007, - "28922": msg31008, - "28923": msg31009, - "28924": msg31010, - "28925": msg31011, - "28926": msg31012, - "28927": msg31013, - "28928": msg31014, - "28929": msg31015, - "2893": msg5344, - "28930": msg31016, - "28931": msg31017, - "28932": msg31018, - "28933": msg31019, - "28934": msg31020, - "28935": msg31021, - "28936": msg31022, - "28937": msg31023, - "28938": msg31024, - "28939": msg31025, - "2894": msg5345, - "28940": msg31026, - "28941": msg31027, - "28942": msg31028, - "28943": msg31029, - "28944": msg31030, - "28945": msg31031, - "28946": msg31032, - "28947": msg31033, - "28948": msg31034, - "28949": msg31035, - "2895": msg5346, - "28950": msg31036, - "28951": msg31037, - "28952": msg31038, - "28953": msg31039, - "28954": msg31040, - "28955": msg31041, - "28956": msg31042, - "28957": msg31043, - "28958": msg31044, - "28959": msg31045, - "2896": msg5347, - "28960": msg31046, - "28961": msg31047, - "28962": msg31048, - "28963": msg31049, - "28964": msg31050, - "28965": msg31051, - "28966": msg31052, - "28967": msg31053, - "28968": msg31054, - "28969": msg31055, - "2897": msg5348, - "28970": msg31056, - "28971": msg31057, - "28972": msg31058, - "28973": msg31059, - "28974": msg31060, - "28975": msg31061, - "28976": msg31062, - "28977": msg31063, - "28978": msg31064, - "28979": msg31065, - "2898": msg5349, - "28980": msg31066, - "28981": msg31067, - "28982": msg31068, - "28983": msg31069, - "28984": msg31070, - "28985": msg31071, - "28986": msg31072, - "28987": msg31073, - "28988": msg31074, - "28989": msg31075, - "2899": msg5350, - "28990": msg31076, - "28991": msg31077, - "28992": msg31078, - "28993": msg31079, - "28994": msg31080, - "28995": msg31081, - "28996": msg31082, - "28997": msg31083, - "28998": msg31084, - "28999": msg31085, - "29": msg63, - "290": select213, - "2900": msg5351, - "29000": msg31086, - "29001": msg31087, - "29002": msg31088, - "29003": msg31089, - "29004": msg31090, - "29005": msg31091, - "29006": msg31092, - "29007": msg31093, - "29008": msg31094, - "29009": msg31095, - "2901": msg5352, - "29010": msg31096, - "29011": msg31097, - "29012": msg31098, - "29013": msg31099, - "29014": msg31100, - "29015": msg31101, - "29016": msg31102, - "29017": msg31103, - "29018": msg31104, - "29019": msg31105, - "2902": msg5353, - "29020": msg31106, - "29021": msg31107, - "29022": msg31108, - "29023": msg31109, - "29024": msg31110, - "29025": msg31111, - "29026": msg31112, - "29027": msg31113, - "29028": msg31114, - "29029": msg31115, - "2903": msg5354, - "29030": msg31116, - "29031": msg31117, - "29032": msg31118, - "29033": msg31119, - "29034": msg31120, - "29035": msg31121, - "29036": msg31122, - "29037": msg31123, - "29038": msg31124, - "29039": msg31125, - "2904": msg5355, - "29040": msg31126, - "29041": msg31127, - "29042": msg31128, - "29043": msg31129, - "29044": msg31130, - "29045": msg31131, - "29046": msg31132, - "29047": msg31133, - "29048": msg31134, - "29049": msg31135, - "2905": msg5356, - "29050": msg31136, - "29051": msg31137, - "29052": msg31138, - "29053": msg31139, - "29054": msg31140, - "29055": msg31141, - "29056": msg31142, - "29057": msg31143, - "29058": msg31144, - "29059": msg31145, - "2906": msg5357, - "29060": msg31146, - "29061": msg31147, - "29062": msg31148, - "29063": msg31149, - "29064": msg31150, - "29065": msg31151, - "29066": msg31152, - "29067": msg31153, - "29068": msg31154, - "29069": msg31155, - "2907": msg5358, - "29070": msg31156, - "29071": msg31157, - "29072": msg31158, - "29073": msg31159, - "29074": msg31160, - "29075": msg31161, - "29076": msg31162, - "29077": msg31163, - "29078": msg31164, - "29079": msg31165, - "2908": msg5359, - "29080": msg31166, - "29081": msg31167, - "29082": msg31168, - "29083": msg31169, - "29084": msg31170, - "29085": msg31171, - "29086": msg31172, - "29087": msg31173, - "29088": msg31174, - "29089": msg31175, - "2909": msg5360, - "29090": msg31176, - "29091": msg31177, - "29092": msg31178, - "29093": msg31179, - "29094": msg31180, - "29095": msg31181, - "29096": msg31182, - "29097": msg31183, - "29098": msg31184, - "29099": msg31185, - "291": select214, - "2910": msg5361, - "29100": msg31186, - "29101": msg31187, - "29102": msg31188, - "29103": msg31189, - "29104": msg31190, - "29105": msg31191, - "29106": msg31192, - "29107": msg31193, - "29108": msg31194, - "29109": msg31195, - "2911": msg5362, - "29110": msg31196, - "29111": msg31197, - "29112": msg31198, - "29113": msg31199, - "29114": msg31200, - "29115": msg31201, - "29116": msg31202, - "29117": msg31203, - "29118": msg31204, - "29119": msg31205, - "2912": msg5363, - "29120": msg31206, - "29121": msg31207, - "29122": msg31208, - "29123": msg31209, - "29124": msg31210, - "29125": msg31211, - "29126": msg31212, - "29127": msg31213, - "29128": msg31214, - "29129": msg31215, - "2913": msg5364, - "29130": msg31216, - "29131": msg31217, - "29132": msg31218, - "29133": msg31219, - "29134": msg31220, - "29135": msg31221, - "29136": msg31222, - "29137": msg31223, - "29138": msg31224, - "29139": msg31225, - "2914": msg5365, - "29140": msg31226, - "29141": msg31227, - "29142": msg31228, - "29143": msg31229, - "29144": msg31230, - "29145": msg31231, - "29146": msg31232, - "29147": msg31233, - "29148": msg31234, - "29149": msg31235, - "2915": msg5366, - "29150": msg31236, - "29151": msg31237, - "29152": msg31238, - "29153": msg31239, - "29154": msg31240, - "29155": msg31241, - "29156": msg31242, - "29157": msg31243, - "29158": msg31244, - "29159": msg31245, - "2916": msg5367, - "29160": msg31246, - "29161": msg31247, - "29162": msg31248, - "29163": msg31249, - "29164": msg31250, - "29165": msg31251, - "29166": msg31252, - "29167": msg31253, - "29168": msg31254, - "29169": msg31255, - "2917": msg5368, - "29170": msg31256, - "29171": msg31257, - "29172": msg31258, - "29173": msg31259, - "29174": msg31260, - "29175": msg31261, - "29176": msg31262, - "29177": msg31263, - "29178": msg31264, - "29179": msg31265, - "2918": msg5369, - "29180": msg31266, - "29181": msg31267, - "29182": msg31268, - "29183": msg31269, - "29184": msg31270, - "29185": msg31271, - "29186": msg31272, - "29187": msg31273, - "29188": msg31274, - "29189": msg31275, - "2919": msg5370, - "29190": msg31276, - "29191": msg31277, - "29192": msg31278, - "29193": msg31279, - "29194": msg31280, - "29195": msg31281, - "29196": msg31282, - "29197": msg31283, - "29198": msg31284, - "29199": msg31285, - "292": select215, - "29200": msg31286, - "29201": msg31287, - "29202": msg31288, - "29203": msg31289, - "29204": msg31290, - "29205": msg31291, - "29206": msg31292, - "29207": msg31293, - "29208": msg31294, - "29209": msg31295, - "2921": msg5371, - "29210": msg31296, - "29211": msg31297, - "29212": msg31298, - "29213": msg31299, - "29214": msg31300, - "29215": msg31301, - "29216": msg31302, - "29217": msg31303, - "29218": msg31304, - "29219": msg31305, - "2922": msg5372, - "29220": msg31306, - "29221": msg31307, - "29222": msg31308, - "29223": msg31309, - "29224": msg31310, - "29225": msg31311, - "29226": msg31312, - "29227": msg31313, - "29228": msg31314, - "29229": msg31315, - "2923": msg5373, - "29230": msg31316, - "29231": msg31317, - "29232": msg31318, - "29233": msg31319, - "29234": msg31320, - "29235": msg31321, - "29236": msg31322, - "29237": msg31323, - "29238": msg31324, - "29239": msg31325, - "2924": msg5374, - "29240": msg31326, - "29241": msg31327, - "29242": msg31328, - "29243": msg31329, - "29244": msg31330, - "29245": msg31331, - "29246": msg31332, - "29247": msg31333, - "29248": msg31334, - "29249": msg31335, - "2925": msg5375, - "29250": msg31336, - "29251": msg31337, - "29252": msg31338, - "29253": msg31339, - "29254": msg31340, - "29255": msg31341, - "29256": msg31342, - "29257": msg31343, - "29258": msg31344, - "29259": msg31345, - "2926": msg5376, - "29260": msg31346, - "29261": msg31347, - "29262": msg31348, - "29263": msg31349, - "29264": msg31350, - "29265": msg31351, - "29266": msg31352, - "29267": msg31353, - "29268": msg31354, - "29269": msg31355, - "2927": msg5377, - "29270": msg31356, - "29271": msg31357, - "29272": msg31358, - "29273": msg31359, - "29274": msg31360, - "29275": msg31361, - "29276": msg31362, - "29277": msg31363, - "29278": msg31364, - "29279": msg31365, - "2928": msg5378, - "29280": msg31366, - "29281": msg31367, - "29282": msg31368, - "29283": msg31369, - "29284": msg31370, - "29285": msg31371, - "29286": msg31372, - "29287": msg31373, - "29288": msg31374, - "29289": msg31375, - "2929": msg5379, - "29290": msg31376, - "29291": msg31377, - "29292": msg31378, - "29293": msg31379, - "29294": msg31380, - "29295": msg31381, - "29296": msg31382, - "29297": msg31383, - "29298": msg31384, - "29299": msg31385, - "293": select216, - "2930": msg5380, - "29300": msg31386, - "29301": msg31387, - "29302": msg31388, - "29303": msg31389, - "29304": msg31390, - "29305": msg31391, - "29306": msg31392, - "29307": msg31393, - "2931": msg5381, - "29313": msg31394, - "29314": msg31395, - "29315": msg31396, - "29316": msg31397, - "29317": msg31398, - "29318": msg31399, - "29319": msg31400, - "2932": msg5382, - "29320": msg31401, - "29321": msg31402, - "29322": msg31403, - "29323": msg31404, - "29324": msg31405, - "29325": msg31406, - "29326": msg31407, - "29327": msg31408, - "29328": msg31409, - "29329": msg31410, - "2933": msg5383, - "29330": msg31411, - "29331": msg31412, - "29332": msg31413, - "29333": msg31414, - "29334": msg31415, - "29335": msg31416, - "29336": msg31417, - "29337": msg31418, - "29338": msg31419, - "29339": msg31420, - "2934": msg5384, - "29340": msg31421, - "29341": msg31422, - "29342": msg31423, - "29343": msg31424, - "29344": msg31425, - "29345": msg31426, - "29346": msg31427, - "29347": msg31428, - "29348": msg31429, - "29349": msg31430, - "2935": msg5385, - "29350": msg31431, - "29351": msg31432, - "29352": msg31433, - "29353": msg31434, - "29354": msg31435, - "29355": msg31436, - "29356": msg31437, - "29357": msg31438, - "29358": msg31439, - "29359": msg31440, - "2936": msg5386, - "29360": msg31441, - "29361": msg31442, - "29362": msg31443, - "29363": msg31444, - "29364": msg31445, - "29365": msg31446, - "29366": msg31447, - "29367": msg31448, - "29368": msg31449, - "29369": msg31450, - "2937": msg5387, - "29370": msg31451, - "29371": msg31452, - "29372": msg31453, - "29373": msg31454, - "29374": msg31455, - "29375": msg31456, - "29376": msg31457, - "29377": msg31458, - "29378": msg31459, - "29379": msg31460, - "2938": msg5388, - "29380": msg31461, - "29381": msg31462, - "29382": msg31463, - "29383": msg31464, - "29384": msg31465, - "29385": msg31466, - "29386": msg31467, - "29387": msg31468, - "29388": msg31469, - "29389": msg31470, - "2939": msg5389, - "29390": msg31471, - "29391": msg31472, - "29392": msg31473, - "29393": msg31474, - "29394": msg31475, - "29395": msg31476, - "29396": msg31477, - "29397": msg31478, - "29398": msg31479, - "29399": msg31480, - "2940": msg5390, - "29400": msg31481, - "29401": msg31482, - "29402": msg31483, - "29403": msg31484, - "29404": msg31485, - "29405": msg31486, - "29406": msg31487, - "29407": msg31488, - "29408": msg31489, - "29409": msg31490, - "2941": msg5391, - "29410": msg31491, - "29411": msg31492, - "29412": msg31493, - "29413": msg31494, - "29414": msg31495, - "29415": msg31496, - "29416": msg31497, - "29417": msg31498, - "29418": msg31499, - "29419": msg31500, - "2942": msg5392, - "29420": msg31501, - "29421": msg31502, - "29422": msg31503, - "29423": msg31504, - "29424": msg31505, - "29425": msg31506, - "29426": msg31507, - "29427": msg31508, - "29428": msg31509, - "29429": msg31510, - "2943": msg5393, - "29430": msg31511, - "29431": msg31512, - "29432": msg31513, - "29433": msg31514, - "29434": msg31515, - "29435": msg31516, - "29436": msg31517, - "29437": msg31518, - "29438": msg31519, - "29439": msg31520, - "2944": msg5394, - "29440": msg31521, - "29442": msg31522, - "29443": msg31523, - "29444": msg31524, - "29445": msg31525, - "29446": msg31526, - "29447": msg31527, - "29448": msg31528, - "29449": msg31529, - "2945": msg5395, - "29450": msg31530, - "29451": msg31531, - "29452": msg31532, - "29453": msg31533, - "29454": msg31534, - "29455": msg31535, - "29456": msg31536, - "29457": msg31537, - "29458": msg31538, - "29459": msg31539, - "2946": msg5396, - "29460": msg31540, - "29461": msg31541, - "29462": msg31542, - "29463": msg31543, - "29464": msg31544, - "29465": msg31545, - "29466": msg31546, - "29467": msg31547, - "29468": msg31548, - "29469": msg31549, - "2947": msg5397, - "29470": msg31550, - "29471": msg31551, - "29472": msg31552, - "29473": msg31553, - "29474": msg31554, - "29475": msg31555, - "29476": msg31556, - "29477": msg31557, - "29478": msg31558, - "29479": msg31559, - "2948": msg5398, - "29480": msg31560, - "29481": msg31561, - "29482": msg31562, - "29483": msg31563, - "29484": msg31564, - "29485": msg31565, - "29486": msg31566, - "29487": msg31567, - "29488": msg31568, - "29489": msg31569, - "2949": msg5399, - "29490": msg31570, - "29491": msg31571, - "29492": msg31572, - "29493": msg31573, - "29494": msg31574, - "29495": msg31575, - "29496": msg31576, - "29497": msg31577, - "29498": msg31578, - "29499": msg31579, - "295": select217, - "2950": msg5400, - "29500": msg31580, - "29501": msg31581, - "29502": msg31582, - "29503": msg31583, - "29504": msg31584, - "29505": msg31585, - "29506": msg31586, - "29507": msg31587, - "29508": msg31588, - "29509": msg31589, - "2951": msg5401, - "29510": msg31590, - "29511": msg31591, - "29512": msg31592, - "29513": msg31593, - "29514": msg31594, - "29515": msg31595, - "29516": msg31596, - "29517": msg31597, - "29518": msg31598, - "29519": msg31599, - "2952": msg5402, - "29520": msg31600, - "29521": msg31601, - "29522": msg31602, - "29523": msg31603, - "29524": msg31604, - "29525": msg31605, - "29526": msg31606, - "29527": msg31607, - "29528": msg31608, - "29529": msg31609, - "2953": msg5403, - "29530": msg31610, - "29531": msg31611, - "29532": msg31612, - "29533": msg31613, - "29534": msg31614, - "29535": msg31615, - "29536": msg31616, - "29537": msg31617, - "29538": msg31618, - "29539": msg31619, - "2954": msg5404, - "29540": msg31620, - "29541": msg31621, - "29542": msg31622, - "29543": msg31623, - "29544": msg31624, - "29545": msg31625, - "29546": msg31626, - "29547": msg31627, - "29548": msg31628, - "29549": msg31629, - "2955": msg5405, - "29550": msg31630, - "29551": msg31631, - "29552": msg31632, - "29553": msg31633, - "29554": msg31634, - "29555": msg31635, - "29556": msg31636, - "29557": msg31637, - "29558": msg31638, - "29559": msg31639, - "2956": msg5406, - "29560": msg31640, - "29561": msg31641, - "29562": msg31642, - "29563": msg31643, - "29564": msg31644, - "29565": msg31645, - "29566": msg31646, - "29567": msg31647, - "29568": msg31648, - "29569": msg31649, - "2957": msg5407, - "29570": msg31650, - "29571": msg31651, - "29572": msg31652, - "29573": msg31653, - "29574": msg31654, - "29575": msg31655, - "29576": msg31656, - "29577": msg31657, - "29578": msg31658, - "29579": msg31659, - "2958": msg5408, - "29580": msg31660, - "29581": msg31661, - "29582": msg31662, - "29583": msg31663, - "29584": msg31664, - "29585": msg31665, - "29586": msg31666, - "29587": msg31667, - "29588": msg31668, - "29589": msg31669, - "2959": msg5409, - "29590": msg31670, - "29591": msg31671, - "29592": msg31672, - "29593": msg31673, - "29594": msg31674, - "29595": msg31675, - "29596": msg31676, - "29597": msg31677, - "29598": msg31678, - "29599": msg31679, - "296": select218, - "2960": msg5410, - "29600": msg31680, - "29601": msg31681, - "29602": msg31682, - "29603": msg31683, - "29604": msg31684, - "29605": msg31685, - "29606": msg31686, - "29607": msg31687, - "29608": msg31688, - "29609": msg31689, - "2961": msg5411, - "29610": msg31690, - "29611": msg31691, - "29612": msg31692, - "29613": msg31693, - "29614": msg31694, - "29615": msg31695, - "29616": msg31696, - "29617": msg31697, - "29618": msg31698, - "29619": msg31699, - "2962": msg5412, - "29620": msg31700, - "29621": msg31701, - "29622": msg31702, - "29623": msg31703, - "29624": msg31704, - "29625": msg31705, - "29626": msg31706, - "29627": msg31707, - "29628": msg31708, - "29629": msg31709, - "2963": msg5413, - "29630": msg31710, - "29631": msg31711, - "29632": msg31712, - "29633": msg31713, - "29634": msg31714, - "29635": msg31715, - "29636": msg31716, - "29637": msg31717, - "29638": msg31718, - "29639": msg31719, - "2964": msg5414, - "29640": msg31720, - "29641": msg31721, - "29642": msg31722, - "29643": msg31723, - "29644": msg31724, - "29645": msg31725, - "29646": msg31726, - "29647": msg31727, - "29648": msg31728, - "29649": msg31729, - "2965": msg5415, - "29650": msg31730, - "29651": msg31731, - "29652": msg31732, - "29653": msg31733, - "29654": msg31734, - "29655": msg31735, - "29656": msg31736, - "29657": msg31737, - "29658": msg31738, - "29659": msg31739, - "2966": msg5416, - "29660": msg31740, - "29661": msg31741, - "29662": msg31742, - "29663": msg31743, - "29664": msg31744, - "29665": msg31745, - "29666": msg31746, - "29667": msg31747, - "29668": msg31748, - "29669": msg31749, - "2967": msg5417, - "29670": msg31750, - "29671": msg31751, - "29672": msg31752, - "29673": msg31753, - "29674": msg31754, - "29675": msg31755, - "29676": msg31756, - "29677": msg31757, - "29678": msg31758, - "29679": msg31759, - "2968": msg5418, - "29680": msg31760, - "29681": msg31761, - "29682": msg31762, - "29683": msg31763, - "29684": msg31764, - "29685": msg31765, - "29686": msg31766, - "29687": msg31767, - "29688": msg31768, - "29689": msg31769, - "2969": msg5419, - "29690": msg31770, - "29691": msg31771, - "29692": msg31772, - "29693": msg31773, - "29694": msg31774, - "29695": msg31775, - "29696": msg31776, - "29697": msg31777, - "29698": msg31778, - "29699": msg31779, - "297": select219, - "2970": msg5420, - "29700": msg31780, - "29701": msg31781, - "29702": msg31782, - "29703": msg31783, - "29704": msg31784, - "29705": msg31785, - "29706": msg31786, - "29707": msg31787, - "29708": msg31788, - "29709": msg31789, - "2971": msg5421, - "29710": msg31790, - "29711": msg31791, - "29712": msg31792, - "29713": msg31793, - "29714": msg31794, - "29715": msg31795, - "29716": msg31796, - "29717": msg31797, - "29718": msg31798, - "29719": msg31799, - "2972": msg5422, - "29720": msg31800, - "29721": msg31801, - "29722": msg31802, - "29723": msg31803, - "29724": msg31804, - "29725": msg31805, - "29726": msg31806, - "29727": msg31807, - "29728": msg31808, - "29729": msg31809, - "2973": msg5423, - "29730": msg31810, - "29731": msg31811, - "29732": msg31812, - "29733": msg31813, - "29734": msg31814, - "29735": msg31815, - "29736": msg31816, - "29737": msg31817, - "29738": msg31818, - "29739": msg31819, - "2974": msg5424, - "29740": msg31820, - "29741": msg31821, - "29742": msg31822, - "29743": msg31823, - "29744": msg31824, - "29745": msg31825, - "29746": msg31826, - "29747": msg31827, - "29748": msg31828, - "29749": msg31829, - "2975": msg5425, - "29750": msg31830, - "29751": msg31831, - "29752": msg31832, - "29753": msg31833, - "29754": msg31834, - "29755": msg31835, - "29756": msg31836, - "29757": msg31837, - "29758": msg31838, - "29759": msg31839, - "2976": msg5426, - "29760": msg31840, - "29761": msg31841, - "29762": msg31842, - "29763": msg31843, - "29764": msg31844, - "29765": msg31845, - "29766": msg31846, - "29767": msg31847, - "29768": msg31848, - "29769": msg31849, - "2977": msg5427, - "29770": msg31850, - "29771": msg31851, - "29772": msg31852, - "29773": msg31853, - "29774": msg31854, - "29775": msg31855, - "29776": msg31856, - "29777": msg31857, - "29778": msg31858, - "29779": msg31859, - "2978": msg5428, - "29780": msg31860, - "29781": msg31861, - "29782": msg31862, - "29783": msg31863, - "29784": msg31864, - "29785": msg31865, - "29786": msg31866, - "29787": msg31867, - "29788": msg31868, - "29789": msg31869, - "2979": msg5429, - "29790": msg31870, - "29791": msg31871, - "29792": msg31872, - "29793": msg31873, - "29794": msg31874, - "29795": msg31875, - "29796": msg31876, - "29797": msg31877, - "29798": msg31878, - "29799": msg31879, - "298": select220, - "2980": msg5430, - "29800": msg31880, - "29801": msg31881, - "29802": msg31882, - "29803": msg31883, - "29804": msg31884, - "29805": msg31885, - "29806": msg31886, - "29807": msg31887, - "29808": msg31888, - "29809": msg31889, - "2981": msg5431, - "29810": msg31890, - "29811": msg31891, - "29812": msg31892, - "29813": msg31893, - "29814": msg31894, - "29815": msg31895, - "29816": msg31896, - "29817": msg31897, - "29818": msg31898, - "29819": msg31899, - "2982": msg5432, - "29820": msg31900, - "29821": msg31901, - "29822": msg31902, - "29823": msg31903, - "29824": msg31904, - "29825": msg31905, - "29826": msg31906, - "29827": msg31907, - "29828": msg31908, - "29829": msg31909, - "2983": msg5433, - "29830": msg31910, - "29831": msg31911, - "29832": msg31912, - "29833": msg31913, - "29834": msg31914, - "29835": msg31915, - "29836": msg31916, - "29837": msg31917, - "29838": msg31918, - "29839": msg31919, - "2984": msg5434, - "29840": msg31920, - "29841": msg31921, - "29842": msg31922, - "29843": msg31923, - "29844": msg31924, - "29845": msg31925, - "29846": msg31926, - "29847": msg31927, - "29848": msg31928, - "29849": msg31929, - "2985": msg5435, - "29850": msg31930, - "29851": msg31931, - "29852": msg31932, - "29853": msg31933, - "29854": msg31934, - "29855": msg31935, - "29856": msg31936, - "29857": msg31937, - "29858": msg31938, - "29859": msg31939, - "2986": msg5436, - "29860": msg31940, - "29861": msg31941, - "29862": msg31942, - "29863": msg31943, - "29864": msg31944, - "29865": msg31945, - "29866": msg31946, - "29867": msg31947, - "29868": msg31948, - "29869": msg31949, - "2987": msg5437, - "29870": msg31950, - "29871": msg31951, - "29872": msg31952, - "29873": msg31953, - "29874": msg31954, - "29875": msg31955, - "29876": msg31956, - "29877": msg31957, - "29878": msg31958, - "29879": msg31959, - "2988": msg5438, - "29880": msg31960, - "29881": msg31961, - "29882": msg31962, - "29883": msg31963, - "29884": msg31964, - "29885": msg31965, - "29886": msg31966, - "29887": msg31967, - "29888": msg31968, - "29889": msg31969, - "2989": msg5439, - "29890": msg31970, - "29891": msg31971, - "29892": msg31972, - "29893": msg31973, - "29894": msg31974, - "29895": msg31975, - "29896": msg31976, - "29897": msg31977, - "29898": msg31978, - "29899": msg31979, - "299": select221, - "2990": msg5440, - "29900": msg31980, - "29901": msg31981, - "29902": msg31982, - "29903": msg31983, - "29904": msg31984, - "29905": msg31985, - "29906": msg31986, - "29907": msg31987, - "29909": msg31988, - "2991": msg5441, - "29910": msg31989, - "29911": msg31990, - "29912": msg31991, - "29913": msg31992, - "29914": msg31993, - "29915": msg31994, - "29916": msg31995, - "29917": msg31996, - "29918": msg31997, - "29919": msg31998, - "2992": msg5442, - "29920": msg31999, - "29921": msg32000, - "29922": msg32001, - "29923": msg32002, - "29924": msg32003, - "29925": msg32004, - "29926": msg32005, - "29927": msg32006, - "29928": msg32007, - "29929": msg32008, - "2993": msg5443, - "29930": msg32009, - "29931": msg32010, - "29932": msg32011, - "29933": msg32012, - "29934": msg32013, - "29935": msg32014, - "29936": msg32015, - "29937": msg32016, - "29938": msg32017, - "29939": msg32018, - "2994": msg5444, - "29940": msg32019, - "29941": msg32020, - "29942": msg32021, - "29943": msg32022, - "29944": msg32023, - "29945": msg32024, - "29946": msg32025, - "29947": msg32026, - "29948": msg32027, - "29949": msg32028, - "2995": msg5445, - "29950": msg32029, - "29951": msg32030, - "29952": msg32031, - "29953": msg32032, - "29954": msg32033, - "29955": msg32034, - "29956": msg32035, - "29957": msg32036, - "29958": msg32037, - "29959": msg32038, - "2996": msg5446, - "29960": msg32039, - "29961": msg32040, - "29962": msg32041, - "29963": msg32042, - "29964": msg32043, - "29965": msg32044, - "29966": msg32045, - "29967": msg32046, - "29968": msg32047, - "29969": msg32048, - "2997": msg5447, - "29970": msg32049, - "29971": msg32050, - "29972": msg32051, - "29973": msg32052, - "29974": msg32053, - "29975": msg32054, - "29976": msg32055, - "29977": msg32056, - "29978": msg32057, - "29979": msg32058, - "2998": msg5448, - "29980": msg32059, - "29981": msg32060, - "29982": msg32061, - "29983": msg32062, - "29984": msg32063, - "29985": msg32064, - "29986": msg32065, - "29987": msg32066, - "29988": msg32067, - "29989": msg32068, - "2999": msg5449, - "29990": msg32069, - "29991": msg32070, - "29992": msg32071, - "29993": msg32072, - "29994": msg32073, - "29995": msg32074, - "29996": msg32075, - "29997": msg32076, - "29998": msg32077, - "29999": msg32078, - "3": select9, - "3-10126": msg23, - "3-10127": msg10, - "3-10161": msg11, - "3-10480": msg12, - "3-10481": msg13, - "3-11619": msg14, - "3-11672": msg15, - "3-12028": msg16, - "3-12636": msg17, - "3-12692": msg18, - "3-7019": msg19, - "3-7196": msg20, - "3-8092": msg21, - "3-8351": msg22, - "30": msg64, - "300": select222, - "3000": msg5450, - "30000": msg32079, - "3000005": msg38425, - "30001": msg32080, - "30002": msg32081, - "30003": msg32082, - "30004": msg32083, - "30005": msg32084, - "30006": msg32085, - "30007": msg32086, - "30008": msg32087, - "30009": msg32088, - "3001": msg5451, - "30010": msg32089, - "30011": msg32090, - "30012": msg32091, - "30013": msg32092, - "30014": msg32093, - "30015": msg32094, - "30016": msg32095, - "30017": msg32096, - "30018": msg32097, - "30019": msg32098, - "3002": msg5452, - "30020": msg32099, - "30021": msg32100, - "30022": msg32101, - "30023": msg32102, - "30024": msg32103, - "30025": msg32104, - "30026": msg32105, - "30027": msg32106, - "30028": msg32107, - "30029": msg32108, - "3003": msg5453, - "30030": msg32109, - "30031": msg32110, - "30032": msg32111, - "30033": msg32112, - "30034": msg32113, - "30035": msg32114, - "30036": msg32115, - "30037": msg32116, - "30038": msg32117, - "30039": msg32118, - "3004": msg5454, - "30040": msg32119, - "30041": msg32120, - "30042": msg32121, - "30043": msg32122, - "30044": msg32123, - "30045": msg32124, - "30046": msg32125, - "30047": msg32126, - "30048": msg32127, - "30049": msg32128, - "3005": msg5455, - "30050": msg32129, - "30051": msg32130, - "30052": msg32131, - "30053": msg32132, - "30054": msg32133, - "30055": msg32134, - "30056": msg32135, - "30057": msg32136, - "30058": msg32137, - "30059": msg32138, - "3006": msg5456, - "30060": msg32139, - "30061": msg32140, - "30062": msg32141, - "30063": msg32142, - "30064": msg32143, - "30065": msg32144, - "30066": msg32145, - "30067": msg32146, - "30068": msg32147, - "30069": msg32148, - "3007": msg5457, - "30070": msg32149, - "30071": msg32150, - "30072": msg32151, - "30073": msg32152, - "30074": msg32153, - "30075": msg32154, - "30076": msg32155, - "30077": msg32156, - "30078": msg32157, - "30079": msg32158, - "3008": msg5458, - "30080": msg32159, - "30081": msg32160, - "30082": msg32161, - "30083": msg32162, - "30084": msg32163, - "30085": msg32164, - "30086": msg32165, - "30087": msg32166, - "30088": msg32167, - "30089": msg32168, - "3009": msg5459, - "30090": msg32169, - "30091": msg32170, - "30092": msg32171, - "30093": msg32172, - "30094": msg32173, - "30095": msg32174, - "30096": msg32175, - "30097": msg32176, - "30098": msg32177, - "30099": msg32178, - "301": select223, - "3010": msg5460, - "30100": msg32179, - "30101": msg32180, - "30102": msg32181, - "30103": msg32182, - "30104": msg32183, - "30105": msg32184, - "30106": msg32185, - "30107": msg32186, - "30108": msg32187, - "30109": msg32188, - "3011": msg5461, - "30110": msg32189, - "30111": msg32190, - "30112": msg32191, - "30113": msg32192, - "30114": msg32193, - "30115": msg32194, - "30116": msg32195, - "30117": msg32196, - "30118": msg32197, - "30119": msg32198, - "3012": msg5462, - "30120": msg32199, - "30121": msg32200, - "30122": msg32201, - "30123": msg32202, - "30124": msg32203, - "30125": msg32204, - "30126": msg32205, - "30127": msg32206, - "30128": msg32207, - "30129": msg32208, - "3013": msg5463, - "30130": msg32209, - "30131": msg32210, - "30132": msg32211, - "30133": msg32212, - "30134": msg32213, - "30135": msg32214, - "30136": msg32215, - "30137": msg32216, - "30138": msg32217, - "30139": msg32218, - "3014": msg5464, - "30140": msg32219, - "30141": msg32220, - "30142": msg32221, - "30143": msg32222, - "30144": msg32223, - "30145": msg32224, - "30146": msg32225, - "30147": msg32226, - "30148": msg32227, - "30149": msg32228, - "3015": msg5465, - "30150": msg32229, - "30151": msg32230, - "30152": msg32231, - "30153": msg32232, - "30154": msg32233, - "30155": msg32234, - "30156": msg32235, - "30157": msg32236, - "30158": msg32237, - "30159": msg32238, - "3016": msg5466, - "30160": msg32239, - "30161": msg32240, - "30162": msg32241, - "30163": msg32242, - "30164": msg32243, - "30165": msg32244, - "30166": msg32245, - "30167": msg32246, - "30168": msg32247, - "30169": msg32248, - "3017": msg5467, - "30170": msg32249, - "30171": msg32250, - "30172": msg32251, - "30173": msg32252, - "30174": msg32253, - "30175": msg32254, - "30176": msg32255, - "30177": msg32256, - "30178": msg32257, - "30179": msg32258, - "3018": msg5468, - "30180": msg32259, - "30181": msg32260, - "30182": msg32261, - "30183": msg32262, - "30184": msg32263, - "30185": msg32264, - "30186": msg32265, - "30187": msg32266, - "30188": msg32267, - "30189": msg32268, - "3019": msg5469, - "30190": msg32269, - "30191": msg32270, - "30192": msg32271, - "30193": msg32272, - "30194": msg32273, - "30195": msg32274, - "30196": msg32275, - "30197": msg32276, - "30198": msg32277, - "30199": msg32278, - "302": select224, - "3020": msg5470, - "30200": msg32279, - "30201": msg32280, - "30202": msg32281, - "30203": msg32282, - "30204": msg32283, - "30205": msg32284, - "30206": msg32285, - "30207": msg32286, - "30208": msg32287, - "30209": msg32288, - "3021": msg5471, - "30210": msg32289, - "30211": msg32290, - "30212": msg32291, - "30213": msg32292, - "30214": msg32293, - "30215": msg32294, - "30216": msg32295, - "30217": msg32296, - "30218": msg32297, - "30219": msg32298, - "3022": msg5472, - "30220": msg32299, - "30221": msg32300, - "30222": msg32301, - "30223": msg32302, - "30224": msg32303, - "30225": msg32304, - "30226": msg32305, - "30227": msg32306, - "30228": msg32307, - "30229": msg32308, - "3023": msg5473, - "30230": msg32309, - "30231": msg32310, - "30232": msg32311, - "30233": msg32312, - "30234": msg32313, - "30235": msg32314, - "30236": msg32315, - "30237": msg32316, - "30238": msg32317, - "30239": msg32318, - "3024": msg5474, - "30240": msg32319, - "30241": msg32320, - "30242": msg32321, - "30243": msg32322, - "30244": msg32323, - "30245": msg32324, - "30246": msg32325, - "30247": msg32326, - "30248": msg32327, - "30249": msg32328, - "3025": msg5475, - "30250": msg32329, - "30251": msg32330, - "30252": msg32331, - "30253": msg32332, - "30254": msg32333, - "30255": msg32334, - "30256": msg32335, - "30257": msg32336, - "30258": msg32337, - "30259": msg32338, - "3026": msg5476, - "30260": msg32339, - "30261": msg32340, - "30262": msg32341, - "30263": msg32342, - "30264": msg32343, - "30265": msg32344, - "30266": msg32345, - "30267": msg32346, - "30268": msg32347, - "30269": msg32348, - "3027": msg5477, - "30270": msg32349, - "30271": msg32350, - "30272": msg32351, - "30273": msg32352, - "30274": msg32353, - "30275": msg32354, - "30276": msg32355, - "30277": msg32356, - "30278": msg32357, - "30279": msg32358, - "3028": msg5478, - "30280": msg32359, - "30281": msg32360, - "30282": msg32361, - "30283": msg32362, - "30284": msg32363, - "30285": msg32364, - "30286": msg32365, - "30287": msg32366, - "30288": msg32367, - "30289": msg32368, - "3029": msg5479, - "30290": msg32369, - "30291": msg32370, - "30292": msg32371, - "30293": msg32372, - "30294": msg32373, - "30295": msg32374, - "30296": msg32375, - "30297": msg32376, - "30298": msg32377, - "30299": msg32378, - "303": select225, - "3030": msg5480, - "30300": msg32379, - "30301": msg32380, - "30302": msg32381, - "30303": msg32382, - "30304": msg32383, - "30305": msg32384, - "30306": msg32385, - "30307": msg32386, - "30308": msg32387, - "30309": msg32388, - "3031": msg5481, - "30310": msg32389, - "30311": msg32390, - "30312": msg32391, - "30313": msg32392, - "30314": msg32393, - "30315": msg32394, - "30316": msg32395, - "30317": msg32396, - "30318": msg32397, - "30319": msg32398, - "3032": msg5482, - "30320": msg32399, - "30321": msg32400, - "30322": msg32401, - "30323": msg32402, - "30324": msg32403, - "30325": msg32404, - "30326": msg32405, - "30327": msg32406, - "30328": msg32407, - "30329": msg32408, - "3033": msg5483, - "30330": msg32409, - "30331": msg32410, - "30332": msg32411, - "30333": msg32412, - "30334": msg32413, - "30335": msg32414, - "30336": msg32415, - "30337": msg32416, - "30338": msg32417, - "30339": msg32418, - "3034": msg5484, - "30340": msg32419, - "30341": msg32420, - "30342": msg32421, - "30343": msg32422, - "30344": msg32423, - "30345": msg32424, - "30347": msg32425, - "30348": msg32426, - "30349": msg32427, - "3035": msg5485, - "30350": msg32428, - "30351": msg32429, - "30352": msg32430, - "30353": msg32431, - "30354": msg32432, - "30355": msg32433, - "30356": msg32434, - "30357": msg32435, - "30358": msg32436, - "30359": msg32437, - "3036": msg5486, - "30360": msg32438, - "30361": msg32439, - "30362": msg32440, - "30363": msg32441, - "30364": msg32442, - "30365": msg32443, - "30366": msg32444, - "30367": msg32445, - "30368": msg32446, - "30369": msg32447, - "3037": msg5487, - "30370": msg32448, - "30371": msg32449, - "30372": msg32450, - "30373": msg32451, - "30374": msg32452, - "30375": msg32453, - "30376": msg32454, - "30377": msg32455, - "30378": msg32456, - "30379": msg32457, - "3038": msg5488, - "30380": msg32458, - "30381": msg32459, - "30382": msg32460, - "30383": msg32461, - "30384": msg32462, - "30385": msg32463, - "30386": msg32464, - "30387": msg32465, - "30388": msg32466, - "30389": msg32467, - "3039": msg5489, - "30390": msg32468, - "30391": msg32469, - "30392": msg32470, - "30393": msg32471, - "30394": msg32472, - "30395": msg32473, - "30396": msg32474, - "30397": msg32475, - "30398": msg32476, - "30399": msg32477, - "304": select226, - "3040": msg5490, - "30400": msg32478, - "30401": msg32479, - "30402": msg32480, - "30403": msg32481, - "30404": msg32482, - "30405": msg32483, - "30406": msg32484, - "30407": msg32485, - "30408": msg32486, - "30409": msg32487, - "3041": msg5491, - "30410": msg32488, - "30411": msg32489, - "30412": msg32490, - "30413": msg32491, - "30414": msg32492, - "30415": msg32493, - "30416": msg32494, - "30417": msg32495, - "30418": msg32496, - "30419": msg32497, - "3042": msg5492, - "30420": msg32498, - "30421": msg32499, - "30422": msg32500, - "30423": msg32501, - "30424": msg32502, - "30425": msg32503, - "30426": msg32504, - "30427": msg32505, - "30428": msg32506, - "30429": msg32507, - "3043": msg5493, - "30430": msg32508, - "30431": msg32509, - "30432": msg32510, - "30433": msg32511, - "30434": msg32512, - "30435": msg32513, - "30436": msg32514, - "30437": msg32515, - "30438": msg32516, - "30439": msg32517, - "3044": msg5494, - "30440": msg32518, - "30441": msg32519, - "30442": msg32520, - "30443": msg32521, - "30444": msg32522, - "30445": msg32523, - "30446": msg32524, - "30447": msg32525, - "30448": msg32526, - "30449": msg32527, - "3045": msg5495, - "30450": msg32528, - "30451": msg32529, - "30452": msg32530, - "30453": msg32531, - "30454": msg32532, - "30455": msg32533, - "30456": msg32534, - "30457": msg32535, - "30458": msg32536, - "30459": msg32537, - "3046": msg5496, - "30460": msg32538, - "30461": msg32539, - "30462": msg32540, - "30463": msg32541, - "30464": msg32542, - "30465": msg32543, - "30466": msg32544, - "30467": msg32545, - "30468": msg32546, - "30469": msg32547, - "3047": msg5497, - "30470": msg32548, - "30471": msg32549, - "30472": msg32550, - "30473": msg32551, - "30474": msg32552, - "30475": msg32553, - "30476": msg32554, - "30477": msg32555, - "30478": msg32556, - "30479": msg32557, - "3048": msg5498, - "30480": msg32558, - "30481": msg32559, - "30482": msg32560, - "30483": msg32561, - "30484": msg32562, - "30485": msg32563, - "30486": msg32564, - "30487": msg32565, - "30488": msg32566, - "30489": msg32567, - "3049": msg5499, - "30490": msg32568, - "30491": msg32569, - "30492": msg32570, - "30493": msg32571, - "30494": msg32572, - "30495": msg32573, - "30496": msg32574, - "30497": msg32575, - "30498": msg32576, - "30499": msg32577, - "305": select227, - "3050": msg5500, - "30500": msg32578, - "30501": msg32579, - "30502": msg32580, - "30503": msg32581, - "30504": msg32582, - "30505": msg32583, - "30506": msg32584, - "30507": msg32585, - "30508": msg32586, - "30509": msg32587, - "3051": msg5501, - "30510": msg32588, - "30511": msg32589, - "30512": msg32590, - "30513": msg32591, - "30514": msg32592, - "30515": msg32593, - "30516": msg32594, - "30517": msg32595, - "30518": msg32596, - "30519": msg32597, - "3052": msg5502, - "30520": msg32598, - "30521": msg32599, - "30522": msg32600, - "30523": msg32601, - "30524": msg32602, - "30525": msg32603, - "30526": msg32604, - "30527": msg32605, - "30528": msg32606, - "30529": msg32607, - "3053": msg5503, - "30530": msg32608, - "30531": msg32609, - "30532": msg32610, - "30533": msg32611, - "30534": msg32612, - "30535": msg32613, - "30536": msg32614, - "30537": msg32615, - "30538": msg32616, - "30539": msg32617, - "3054": msg5504, - "30540": msg32618, - "30541": msg32619, - "30542": msg32620, - "30543": msg32621, - "30544": msg32622, - "30545": msg32623, - "30546": msg32624, - "30547": msg32625, - "30548": msg32626, - "30549": msg32627, - "3055": msg5505, - "30550": msg32628, - "30551": msg32629, - "30552": msg32630, - "30553": msg32631, - "30554": msg32632, - "30555": msg32633, - "30556": msg32634, - "3056": msg5506, - "30562": msg32635, - "30566": msg32636, - "3057": msg5507, - "30570": msg32637, - "3058": msg5508, - "3059": msg5509, - "306": select228, - "3060": msg5510, - "3061": msg5511, - "3062": msg5512, - "3063": msg5513, - "3064": msg5514, - "3065": msg5515, - "3066": msg5516, - "3067": msg5517, - "3068": msg5518, - "3069": msg5519, - "307": select229, - "3070": msg5520, - "3071": msg5521, - "30711": msg32638, - "30712": msg32639, - "30713": msg32640, - "30714": msg32641, - "30715": msg32642, - "30716": msg32643, - "30717": msg32644, - "30718": msg32645, - "30719": msg32646, - "3072": msg5522, - "30720": msg32647, - "30721": msg32648, - "30722": msg32649, - "30723": msg32650, - "30724": msg32651, - "30725": msg32652, - "30726": msg32653, - "30727": msg32654, - "30728": msg32655, - "30729": msg32656, - "3073": msg5523, - "30730": msg32657, - "30731": msg32658, - "30732": msg32659, - "30733": msg32660, - "30734": msg32661, - "30735": msg32662, - "30736": msg32663, - "30737": msg32664, - "30738": msg32665, - "30739": msg32666, - "3074": msg5524, - "30740": msg32667, - "30741": msg32668, - "30742": msg32669, - "30743": msg32670, - "30744": msg32671, - "30745": msg32672, - "30746": msg32673, - "30747": msg32674, - "30748": msg32675, - "30749": msg32676, - "3075": msg5525, - "30750": msg32677, - "30751": msg32678, - "30752": msg32679, - "30753": msg32680, - "30754": msg32681, - "30755": msg32682, - "30756": msg32683, - "30757": msg32684, - "30758": msg32685, - "30759": msg32686, - "3076": msg5526, - "30760": msg32687, - "30761": msg32688, - "30762": msg32689, - "30763": msg32690, - "30764": msg32691, - "30765": msg32692, - "30766": msg32693, - "30767": msg32694, - "30768": msg32695, - "3077": msg5527, - "30777": msg32696, - "30778": msg32697, - "30779": msg32698, - "3078": msg5528, - "30780": msg32699, - "30781": msg32700, - "30782": msg32701, - "30783": msg32702, - "30784": msg32703, - "30785": msg32704, - "30786": msg32705, - "30787": msg32706, - "30788": msg32707, - "30789": msg32708, - "3079": msg5529, - "30790": msg32709, - "30791": msg32710, - "30792": msg32711, - "30793": msg32712, - "30794": msg32713, - "30795": msg32714, - "30796": msg32715, - "30797": msg32716, - "30798": msg32717, - "30799": msg32718, - "308": select230, - "3080": msg5530, - "30800": msg32719, - "30801": msg32720, - "30802": msg32721, - "30803": msg32722, - "30804": msg32723, - "30805": msg32724, - "30806": msg32725, - "30807": msg32726, - "30808": msg32727, - "30809": msg32728, - "3081": msg5531, - "30810": msg32729, - "30811": msg32730, - "30812": msg32731, - "30813": msg32732, - "30814": msg32733, - "30815": msg32734, - "30816": msg32735, - "30817": msg32736, - "30818": msg32737, - "30819": msg32738, - "3082": msg5532, - "30820": msg32739, - "30821": msg32740, - "30822": msg32741, - "30823": msg32742, - "30824": msg32743, - "30825": msg32744, - "30826": msg32745, - "30827": msg32746, - "30828": msg32747, - "30829": msg32748, - "3083": msg5533, - "30830": msg32749, - "30831": msg32750, - "30832": msg32751, - "30833": msg32752, - "30834": msg32753, - "30835": msg32754, - "30836": msg32755, - "30837": msg32756, - "30838": msg32757, - "30839": msg32758, - "3084": msg5534, - "30840": msg32759, - "30841": msg32760, - "30842": msg32761, - "30843": msg32762, - "30844": msg32763, - "30845": msg32764, - "30846": msg32765, - "30847": msg32766, - "30848": msg32767, - "30849": msg32768, - "3085": msg5535, - "30850": msg32769, - "30851": msg32770, - "30852": msg32771, - "30853": msg32772, - "30854": msg32773, - "30855": msg32774, - "30856": msg32775, - "30857": msg32776, - "30858": msg32777, - "30859": msg32778, - "3086": msg5536, - "30860": msg32779, - "30861": msg32780, - "30862": msg32781, - "30863": msg32782, - "30864": msg32783, - "30865": msg32784, - "30866": msg32785, - "30867": msg32786, - "30868": msg32787, - "30869": msg32788, - "3087": msg5537, - "30870": msg32789, - "30871": msg32790, - "30872": msg32791, - "30873": msg32792, - "30874": msg32793, - "30875": msg32794, - "30876": msg32795, - "30877": msg32796, - "30878": msg32797, - "30879": msg32798, - "3088": msg5538, - "30880": msg32799, - "30881": msg32800, - "30882": msg32801, - "30883": msg32802, - "30884": msg32803, - "30885": msg32804, - "30886": msg32805, - "30887": msg32806, - "30888": msg32807, - "30889": msg32808, - "3089": msg5539, - "30890": msg32809, - "30891": msg32810, - "30892": msg32811, - "30893": msg32812, - "30894": msg32813, - "30895": msg32814, - "30896": msg32815, - "30897": msg32816, - "30898": msg32817, - "30899": msg32818, - "309": select231, - "3090": msg5540, - "30900": msg32819, - "30901": msg32820, - "30902": msg32821, - "30903": msg32822, - "30904": msg32823, - "30905": msg32824, - "30906": msg32825, - "30907": msg32826, - "30908": msg32827, - "30909": msg32828, - "3091": msg5541, - "30910": msg32829, - "30911": msg32830, - "30912": msg32831, - "30913": msg32832, - "30914": msg32833, - "30915": msg32834, - "30916": msg32835, - "30917": msg32836, - "30918": msg32837, - "30919": msg32838, - "3092": msg5542, - "30920": msg32839, - "30921": msg32840, - "30922": msg32841, - "30923": msg32842, - "30924": msg32843, - "30925": msg32844, - "30926": msg32845, - "30927": msg32846, - "30928": msg32847, - "30929": msg32848, - "3093": msg5543, - "30930": msg32849, - "30931": msg32850, - "30932": msg32851, - "30933": msg32852, - "30934": msg32853, - "30935": msg32854, - "30936": msg32855, - "30937": msg32856, - "30938": msg32857, - "30939": msg32858, - "3094": msg5544, - "30940": msg32859, - "30941": msg32860, - "30942": msg32861, - "30943": msg32862, - "30944": msg32863, - "30945": msg32864, - "30946": msg32865, - "30947": msg32866, - "30948": msg32867, - "30949": msg32868, - "3095": msg5545, - "30950": msg32869, - "30951": msg32870, - "30952": msg32871, - "30953": msg32872, - "30954": msg32873, - "30955": msg32874, - "30956": msg32875, - "30957": msg32876, - "30958": msg32877, - "30959": msg32878, - "3096": msg5546, - "30960": msg32879, - "30961": msg32880, - "30962": msg32881, - "30963": msg32882, - "30964": msg32883, - "30965": msg32884, - "30966": msg32885, - "30967": msg32886, - "30968": msg32887, - "30969": msg32888, - "3097": msg5547, - "30970": msg32889, - "30971": msg32890, - "30972": msg32891, - "30973": msg32892, - "30974": msg32893, - "30975": msg32894, - "30976": msg32895, - "30977": msg32896, - "30978": msg32897, - "30979": msg32898, - "3098": msg5548, - "30980": msg32899, - "30981": msg32900, - "30982": msg32901, - "30983": msg32902, - "30984": msg32903, - "30985": msg32904, - "30986": msg32905, - "30987": msg32906, - "30988": msg32907, - "30989": msg32908, - "3099": msg5549, - "30990": msg32909, - "30991": msg32910, - "30992": msg32911, - "30993": msg32912, - "30994": msg32913, - "30995": msg32914, - "30996": msg32915, - "30997": msg32916, - "30998": msg32917, - "30999": msg32918, - "310": select232, - "3100": msg5550, - "31000": msg32919, - "31001": msg32920, - "31002": msg32921, - "31003": msg32922, - "31004": msg32923, - "31005": msg32924, - "31006": msg32925, - "31007": msg32926, - "31008": msg32927, - "31009": msg32928, - "3101": msg5551, - "31010": msg32929, - "31011": msg32930, - "31012": msg32931, - "31013": msg32932, - "31014": msg32933, - "31015": msg32934, - "31016": msg32935, - "31017": msg32936, - "31018": msg32937, - "31019": msg32938, - "3102": msg5552, - "31020": msg32939, - "31021": msg32940, - "31022": msg32941, - "31023": msg32942, - "31024": msg32943, - "31025": msg32944, - "31026": msg32945, - "31027": msg32946, - "31028": msg32947, - "31029": msg32948, - "3103": msg5553, - "31030": msg32949, - "31031": msg32950, - "31032": msg32951, - "31033": msg32952, - "31034": msg32953, - "31035": msg32954, - "31036": msg32955, - "31037": msg32956, - "31038": msg32957, - "31039": msg32958, - "3104": msg5554, - "31040": msg32959, - "31041": msg32960, - "31042": msg32961, - "31043": msg32962, - "31044": msg32963, - "31045": msg32964, - "31046": msg32965, - "31048": msg32966, - "31049": msg32967, - "3105": msg5555, - "31050": msg32968, - "31051": msg32969, - "31052": msg32970, - "31053": msg32971, - "31054": msg32972, - "31055": msg32973, - "31056": msg32974, - "31057": msg32975, - "31058": msg32976, - "31059": msg32977, - "3106": msg5556, - "31060": msg32978, - "31061": msg32979, - "31062": msg32980, - "31063": msg32981, - "31064": msg32982, - "31065": msg32983, - "31066": msg32984, - "31067": msg32985, - "31068": msg32986, - "31069": msg32987, - "3107": msg5557, - "31070": msg32988, - "31071": msg32989, - "31072": msg32990, - "31073": msg32991, - "31074": msg32992, - "31075": msg32993, - "31076": msg32994, - "31077": msg32995, - "31078": msg32996, - "31079": msg32997, - "3108": msg5558, - "31080": msg32998, - "31081": msg32999, - "31082": msg33000, - "31083": msg33001, - "31084": msg33002, - "31085": msg33003, - "31086": msg33004, - "31087": msg33005, - "31088": msg33006, - "31089": msg33007, - "3109": msg5559, - "31090": msg33008, - "31091": msg33009, - "31092": msg33010, - "31093": msg33011, - "31094": msg33012, - "31095": msg33013, - "31096": msg33014, - "31097": msg33015, - "31098": msg33016, - "31099": msg33017, - "311": select233, - "3110": msg5560, - "31100": msg33018, - "31101": msg33019, - "31102": msg33020, - "31103": msg33021, - "31104": msg33022, - "31105": msg33023, - "31106": msg33024, - "31107": msg33025, - "31108": msg33026, - "31109": msg33027, - "3111": msg5561, - "31110": msg33028, - "31111": msg33029, - "31112": msg33030, - "31113": msg33031, - "31114": msg33032, - "31115": msg33033, - "31116": msg33034, - "31117": msg33035, - "31118": msg33036, - "31119": msg33037, - "3112": msg5562, - "31120": msg33038, - "31121": msg33039, - "31122": msg33040, - "31123": msg33041, - "31124": msg33042, - "31125": msg33043, - "31126": msg33044, - "31127": msg33045, - "31128": msg33046, - "31129": msg33047, - "3113": msg5563, - "31130": msg33048, - "31131": msg33049, - "31132": msg33050, - "31133": msg33051, - "31134": msg33052, - "31135": msg33053, - "31136": msg33054, - "31137": msg33055, - "31138": msg33056, - "31139": msg33057, - "3114": msg5564, - "31140": msg33058, - "31141": msg33059, - "31142": msg33060, - "31143": msg33061, - "31144": msg33062, - "31145": msg33063, - "31146": msg33064, - "3115": msg5565, - "3116": msg5566, - "31167": msg33065, - "3117": msg5567, - "31176": msg33066, - "31177": msg33067, - "31178": msg33068, - "31179": msg33069, - "3118": msg5568, - "31180": msg33070, - "31181": msg33071, - "31182": msg33072, - "31183": msg33073, - "31184": msg33074, - "31185": msg33075, - "31186": msg33076, - "31187": msg33077, - "31188": msg33078, - "31189": msg33079, - "3119": msg5569, - "31190": msg33080, - "31191": msg33081, - "31192": msg33082, - "31193": msg33083, - "31194": msg33084, - "31195": msg33085, - "31196": msg33086, - "31197": msg33087, - "31198": msg33088, - "31199": msg33089, - "312": select234, - "3120": msg5570, - "31200": msg33090, - "31201": msg33091, - "31202": msg33092, - "31203": msg33093, - "31204": msg33094, - "31205": msg33095, - "31206": msg33096, - "31207": msg33097, - "31208": msg33098, - "31209": msg33099, - "3121": msg5571, - "31210": msg33100, - "31211": msg33101, - "31212": msg33102, - "31213": msg33103, - "31214": msg33104, - "31215": msg33105, - "31216": msg33106, - "31217": msg33107, - "31218": msg33108, - "31219": msg33109, - "3122": msg5572, - "31220": msg33110, - "31221": msg33111, - "31222": msg33112, - "31223": msg33113, - "31224": msg33114, - "31225": msg33115, - "31226": msg33116, - "31227": msg33117, - "31228": msg33118, - "31229": msg33119, - "3123": msg5573, - "31230": msg33120, - "31231": msg33121, - "31232": msg33122, - "31233": msg33123, - "31234": msg33124, - "31235": msg33125, - "31236": msg33126, - "31237": msg33127, - "31238": msg33128, - "31239": msg33129, - "3124": msg5574, - "31240": msg33130, - "31241": msg33131, - "31242": msg33132, - "31243": msg33133, - "31244": msg33134, - "31245": msg33135, - "31246": msg33136, - "31247": msg33137, - "31248": msg33138, - "31249": msg33139, - "3125": msg5575, - "31250": msg33140, - "31251": msg33141, - "31252": msg33142, - "31253": msg33143, - "31254": msg33144, - "31255": msg33145, - "31256": msg33146, - "31257": msg33147, - "31258": msg33148, - "31259": msg33149, - "3126": msg5576, - "31260": msg33150, - "31261": msg33151, - "31262": msg33152, - "31263": msg33153, - "31264": msg33154, - "31265": msg33155, - "31266": msg33156, - "31267": msg33157, - "31268": msg33158, - "31269": msg33159, - "3127": msg5577, - "31270": msg33160, - "31271": msg33161, - "31272": msg33162, - "31273": msg33163, - "31274": msg33164, - "31275": msg33165, - "31276": msg33166, - "31277": msg33167, - "31278": msg33168, - "31279": msg33169, - "3128": msg5578, - "31280": msg33170, - "31281": msg33171, - "31282": msg33172, - "31283": msg33173, - "31284": msg33174, - "31285": msg33175, - "31286": msg33176, - "31287": msg33177, - "31288": msg33178, - "31289": msg33179, - "3129": msg5579, - "31290": msg33180, - "31291": msg33181, - "31292": msg33182, - "31293": msg33183, - "31294": msg33184, - "31295": msg33185, - "31296": msg33186, - "31297": msg33187, - "31298": msg33188, - "31299": msg33189, - "313": select235, - "3130": msg5580, - "31300": msg33190, - "31301": msg33191, - "31302": msg33192, - "31303": msg33193, - "31304": msg33194, - "31305": msg33195, - "31306": msg33196, - "31307": msg33197, - "31308": msg33198, - "31309": msg33199, - "3131": msg5581, - "31310": msg33200, - "31311": msg33201, - "31312": msg33202, - "31313": msg33203, - "31314": msg33204, - "31315": msg33205, - "31316": msg33206, - "31317": msg33207, - "31318": msg33208, - "31319": msg33209, - "3132": msg5582, - "31320": msg33210, - "31321": msg33211, - "31322": msg33212, - "31323": msg33213, - "31324": msg33214, - "31325": msg33215, - "31326": msg33216, - "31327": msg33217, - "31328": msg33218, - "31329": msg33219, - "3133": msg5583, - "31330": msg33220, - "31331": msg33221, - "31332": msg33222, - "31333": msg33223, - "31334": msg33224, - "31335": msg33225, - "31336": msg33226, - "31337": msg33227, - "31338": msg33228, - "31339": msg33229, - "3134": msg5584, - "31340": msg33230, - "31341": msg33231, - "31342": msg33232, - "31343": msg33233, - "31344": msg33234, - "31345": msg33235, - "31346": msg33236, - "31347": msg33237, - "31348": msg33238, - "31349": msg33239, - "3135": msg5585, - "31350": msg33240, - "31351": msg33241, - "31352": msg33242, - "31353": msg33243, - "31354": msg33244, - "31355": msg33245, - "31356": msg33246, - "31357": msg33247, - "31358": msg33248, - "31359": msg33249, - "3136": msg5586, - "31360": msg33250, - "31361": msg33251, - "31362": msg33252, - "31363": msg33253, - "31364": msg33254, - "31365": msg33255, - "31366": msg33256, - "31367": msg33257, - "31368": msg33258, - "31369": msg33259, - "3137": msg5587, - "31370": msg33260, - "31371": msg33261, - "31372": msg33262, - "31373": msg33263, - "31374": msg33264, - "31375": msg33265, - "31376": msg33266, - "31377": msg33267, - "31378": msg33268, - "31379": msg33269, - "3138": msg5588, - "31380": msg33270, - "31381": msg33271, - "31382": msg33272, - "31383": msg33273, - "31384": msg33274, - "31385": msg33275, - "31386": msg33276, - "31387": msg33277, - "31388": msg33278, - "31389": msg33279, - "3139": msg5589, - "31390": msg33280, - "31391": msg33281, - "31392": msg33282, - "31393": msg33283, - "31394": msg33284, - "31395": msg33285, - "31396": msg33286, - "31397": msg33287, - "31398": msg33288, - "31399": msg33289, - "314": select236, - "3140": msg5590, - "31400": msg33290, - "31401": msg33291, - "31402": msg33292, - "31403": msg33293, - "31404": msg33294, - "31405": msg33295, - "31406": msg33296, - "31407": msg33297, - "31408": msg33298, - "31409": msg33299, - "3141": msg5591, - "31410": msg33300, - "31411": msg33301, - "31412": msg33302, - "31413": msg33303, - "31414": msg33304, - "31415": msg33305, - "31416": msg33306, - "31417": msg33307, - "31418": msg33308, - "31419": msg33309, - "3142": msg5592, - "31420": msg33310, - "31421": msg33311, - "31422": msg33312, - "31423": msg33313, - "31424": msg33314, - "31425": msg33315, - "31426": msg33316, - "31427": msg33317, - "31428": msg33318, - "31429": msg33319, - "3143": msg5593, - "31433": msg33320, - "31434": msg33321, - "31435": msg33322, - "31436": msg33323, - "31437": msg33324, - "31438": msg33325, - "31439": msg33326, - "3144": msg5594, - "31440": msg33327, - "31441": msg33328, - "31442": msg33329, - "31443": msg33330, - "31444": msg33331, - "31445": msg33332, - "31446": msg33333, - "31447": msg33334, - "31448": msg33335, - "31449": msg33336, - "3145": msg5595, - "31450": msg33337, - "31451": msg33338, - "31452": msg33339, - "31453": msg33340, - "31454": msg33341, - "31455": msg33342, - "31456": msg33343, - "31457": msg33344, - "31458": msg33345, - "31459": msg33346, - "3146": msg5596, - "31460": msg33347, - "31461": msg33348, - "31462": msg33349, - "31463": msg33350, - "31464": msg33351, - "31465": msg33352, - "31466": msg33353, - "31467": msg33354, - "31468": msg33355, - "31469": msg33356, - "3147": msg5597, - "31470": msg33357, - "31471": msg33358, - "31472": msg33359, - "31473": msg33360, - "31474": msg33361, - "31475": msg33362, - "31476": msg33363, - "31477": msg33364, - "31478": msg33365, - "31479": msg33366, - "3148": msg5598, - "31480": msg33367, - "31481": msg33368, - "31482": msg33369, - "31483": msg33370, - "31484": msg33371, - "31485": msg33372, - "31486": msg33373, - "31487": msg33374, - "31488": msg33375, - "31489": msg33376, - "3149": msg5599, - "31490": msg33377, - "31491": msg33378, - "31492": msg33379, - "31493": msg33380, - "31494": msg33381, - "31495": msg33382, - "31496": msg33383, - "31497": msg33384, - "31498": msg33385, - "31499": msg33386, - "315": select237, - "3150": msg5600, - "31500": msg33387, - "31501": msg33388, - "31502": msg33389, - "31503": msg33390, - "31504": msg33391, - "31505": msg33392, - "31506": msg33393, - "31507": msg33394, - "31508": msg33395, - "31509": msg33396, - "3151": msg5601, - "31510": msg33397, - "31511": msg33398, - "31512": msg33399, - "31513": msg33400, - "31514": msg33401, - "31515": msg33402, - "31516": msg33403, - "31517": msg33404, - "31518": msg33405, - "31519": msg33406, - "3152": msg5602, - "31520": msg33407, - "31521": msg33408, - "31522": msg33409, - "31523": msg33410, - "31524": msg33411, - "31525": msg33412, - "31526": msg33413, - "31527": msg33414, - "31528": msg33415, - "31529": msg33416, - "3153": msg5603, - "31530": msg33417, - "31531": msg33418, - "31532": msg33419, - "31533": msg33420, - "31534": msg33421, - "31535": msg33422, - "31536": msg33423, - "31537": msg33424, - "31538": msg33425, - "31539": msg33426, - "3154": msg5604, - "31540": msg33427, - "31541": msg33428, - "31542": msg33429, - "31543": msg33430, - "31544": msg33431, - "31545": msg33432, - "31546": msg33433, - "31547": msg33434, - "31548": msg33435, - "31549": msg33436, - "3155": msg5605, - "31550": msg33437, - "31551": msg33438, - "31552": msg33439, - "31553": msg33440, - "31554": msg33441, - "31555": msg33442, - "31556": msg33443, - "31557": msg33444, - "31558": msg33445, - "31559": msg33446, - "3156": msg5606, - "31560": msg33447, - "31561": msg33448, - "31562": msg33449, - "31563": msg33450, - "31564": msg33451, - "31565": msg33452, - "31566": msg33453, - "31567": msg33454, - "31568": msg33455, - "31569": msg33456, - "3157": msg5607, - "31570": msg33457, - "31571": msg33458, - "31572": msg33459, - "31573": msg33460, - "31574": msg33461, - "31575": msg33462, - "31576": msg33463, - "31577": msg33464, - "31578": msg33465, - "31579": msg33466, - "3158": msg5608, - "31580": msg33467, - "31581": msg33468, - "31582": msg33469, - "31583": msg33470, - "31584": msg33471, - "31585": msg33472, - "31586": msg33473, - "31587": msg33474, - "31588": msg33475, - "31589": msg33476, - "3159": msg5609, - "31590": msg33477, - "31591": msg33478, - "31592": msg33479, - "31593": msg33480, - "31594": msg33481, - "31595": msg33482, - "31596": msg33483, - "31597": msg33484, - "31598": msg33485, - "31599": msg33486, - "316": select238, - "3160": msg5610, - "31600": msg33487, - "31601": msg33488, - "31602": msg33489, - "31603": msg33490, - "31604": msg33491, - "31605": msg33492, - "31606": msg33493, - "31607": msg33494, - "31608": msg33495, - "31609": msg33496, - "3161": msg5611, - "31610": msg33497, - "31611": msg33498, - "31612": msg33499, - "31613": msg33500, - "31614": msg33501, - "31615": msg33502, - "31616": msg33503, - "31617": msg33504, - "31618": msg33505, - "31619": msg33506, - "3162": msg5612, - "31620": msg33507, - "31621": msg33508, - "31622": msg33509, - "31623": msg33510, - "31624": msg33511, - "31625": msg33512, - "31626": msg33513, - "31627": msg33514, - "31628": msg33515, - "31629": msg33516, - "3163": msg5613, - "31630": msg33517, - "31631": msg33518, - "31632": msg33519, - "31633": msg33520, - "31634": msg33521, - "31635": msg33522, - "31636": msg33523, - "31637": msg33524, - "31638": msg33525, - "31639": msg33526, - "3164": msg5614, - "31640": msg33527, - "31641": msg33528, - "31642": msg33529, - "31643": msg33530, - "31644": msg33531, - "31645": msg33532, - "31646": msg33533, - "31647": msg33534, - "31648": msg33535, - "31649": msg33536, - "3165": msg5615, - "31650": msg33537, - "31651": msg33538, - "31652": msg33539, - "31653": msg33540, - "31654": msg33541, - "31655": msg33542, - "31656": msg33543, - "31657": msg33544, - "31658": msg33545, - "31659": msg33546, - "3166": msg5616, - "31660": msg33547, - "31661": msg33548, - "31662": msg33549, - "31663": msg33550, - "31664": msg33551, - "31665": msg33552, - "31666": msg33553, - "31667": msg33554, - "31668": msg33555, - "31669": msg33556, - "3167": msg5617, - "31670": msg33557, - "31671": msg33558, - "31672": msg33559, - "31673": msg33560, - "31674": msg33561, - "31675": msg33562, - "31676": msg33563, - "31677": msg33564, - "31678": msg33565, - "31679": msg33566, - "3168": msg5618, - "31680": msg33567, - "31681": msg33568, - "31682": msg33569, - "31683": msg33570, - "31684": msg33571, - "31685": msg33572, - "31686": msg33573, - "31687": msg33574, - "31688": msg33575, - "31689": msg33576, - "3169": msg5619, - "31690": msg33577, - "31691": msg33578, - "31692": msg33579, - "31693": msg33580, - "31694": msg33581, - "31695": msg33582, - "31696": msg33583, - "31697": msg33584, - "31698": msg33585, - "31699": msg33586, - "317": select239, - "3170": msg5620, - "31700": msg33587, - "31701": msg33588, - "31702": msg33589, - "31703": msg33590, - "31704": msg33591, - "31705": msg33592, - "31706": msg33593, - "31707": msg33594, - "31708": msg33595, - "31709": msg33596, - "3171": msg5621, - "31710": msg33597, - "31711": msg33598, - "31712": msg33599, - "31713": msg33600, - "31714": msg33601, - "31715": msg33602, - "31716": msg33603, - "31717": msg33604, - "31718": msg33605, - "31719": msg33606, - "3172": msg5622, - "31720": msg33607, - "31721": msg33608, - "31722": msg33609, - "31723": msg33610, - "31724": msg33611, - "31725": msg33612, - "31726": msg33613, - "31727": msg33614, - "31728": msg33615, - "31729": msg33616, - "3173": msg5623, - "31730": msg33617, - "31731": msg33618, - "31732": msg33619, - "31733": msg33620, - "31734": msg33621, - "31735": msg33622, - "31736": msg33623, - "31737": msg33624, - "31738": msg33625, - "31739": msg33626, - "3174": msg5624, - "31740": msg33627, - "31741": msg33628, - "31742": msg33629, - "31743": msg33630, - "31744": msg33631, - "31745": msg33632, - "31746": msg33633, - "31747": msg33634, - "31748": msg33635, - "31749": msg33636, - "3175": msg5625, - "31750": msg33637, - "31751": msg33638, - "31752": msg33639, - "31753": msg33640, - "31754": msg33641, - "31755": msg33642, - "31756": msg33643, - "31757": msg33644, - "31758": msg33645, - "31759": msg33646, - "3176": msg5626, - "31760": msg33647, - "31761": msg33648, - "31762": msg33649, - "31763": msg33650, - "31764": msg33651, - "31765": msg33652, - "31766": msg33653, - "31767": msg33654, - "31768": msg33655, - "31769": msg33656, - "3177": msg5627, - "31770": msg33657, - "31771": msg33658, - "31772": msg33659, - "31773": msg33660, - "31774": msg33661, - "31775": msg33662, - "31776": msg33663, - "31777": msg33664, - "31778": msg33665, - "31779": msg33666, - "3178": msg5628, - "31780": msg33667, - "31781": msg33668, - "31782": msg33669, - "31783": msg33670, - "31784": msg33671, - "31785": msg33672, - "31786": msg33673, - "31787": msg33674, - "31788": msg33675, - "31789": msg33676, - "3179": msg5629, - "31790": msg33677, - "31791": msg33678, - "31792": msg33679, - "31793": msg33680, - "31794": msg33681, - "31795": msg33682, - "31796": msg33683, - "31797": msg33684, - "31798": msg33685, - "31799": msg33686, - "318": select240, - "3180": msg5630, - "31800": msg33687, - "31801": msg33688, - "31802": msg33689, - "31803": msg33690, - "31804": msg33691, - "31805": msg33692, - "31806": msg33693, - "31807": msg33694, - "31808": msg33695, - "31809": msg33696, - "3181": msg5631, - "31810": msg33697, - "31811": msg33698, - "31812": msg33699, - "31813": msg33700, - "31814": msg33701, - "31815": msg33702, - "31816": msg33703, - "31817": msg33704, - "31818": msg33705, - "31819": msg33706, - "3182": msg5632, - "31820": msg33707, - "31821": msg33708, - "31822": msg33709, - "31823": msg33710, - "31824": msg33711, - "31825": msg33712, - "31826": msg33713, - "31827": msg33714, - "31828": msg33715, - "31829": msg33716, - "3183": msg5633, - "31830": msg33717, - "31831": msg33718, - "31832": msg33719, - "31833": msg33720, - "31834": msg33721, - "31835": msg33722, - "31836": msg33723, - "31837": msg33724, - "31838": msg33725, - "31839": msg33726, - "3184": msg5634, - "31840": msg33727, - "31841": msg33728, - "31842": msg33729, - "31843": msg33730, - "31844": msg33731, - "31845": msg33732, - "31846": msg33733, - "31847": msg33734, - "31848": msg33735, - "31849": msg33736, - "3185": msg5635, - "31850": msg33737, - "31851": msg33738, - "31852": msg33739, - "31853": msg33740, - "31854": msg33741, - "31855": msg33742, - "31856": msg33743, - "31857": msg33744, - "31858": msg33745, - "31859": msg33746, - "3186": msg5636, - "31860": msg33747, - "31861": msg33748, - "31862": msg33749, - "31863": msg33750, - "31864": msg33751, - "31865": msg33752, - "31866": msg33753, - "31867": msg33754, - "31868": msg33755, - "31869": msg33756, - "3187": msg5637, - "31870": msg33757, - "31871": msg33758, - "31872": msg33759, - "31873": msg33760, - "31874": msg33761, - "31875": msg33762, - "31876": msg33763, - "31877": msg33764, - "31878": msg33765, - "31879": msg33766, - "3188": msg5638, - "31880": msg33767, - "31881": msg33768, - "31882": msg33769, - "31883": msg33770, - "31884": msg33771, - "31885": msg33772, - "31886": msg33773, - "31887": msg33774, - "31888": msg33775, - "31889": msg33776, - "3189": msg5639, - "31890": msg33777, - "31891": msg33778, - "31892": msg33779, - "31893": msg33780, - "31894": msg33781, - "31895": msg33782, - "31896": msg33783, - "31897": msg33784, - "31898": msg33785, - "31899": msg33786, - "319": select241, - "3190": msg5640, - "31900": msg33787, - "31901": msg33788, - "31902": msg33789, - "31903": msg33790, - "31904": msg33791, - "31905": msg33792, - "31906": msg33793, - "31907": msg33794, - "31908": msg33795, - "31909": msg33796, - "3191": msg5641, - "31910": msg33797, - "31911": msg33798, - "31912": msg33799, - "31913": msg33800, - "31914": msg33801, - "31915": msg33802, - "31916": msg33803, - "31917": msg33804, - "31918": msg33805, - "31919": msg33806, - "3192": msg5642, - "31920": msg33807, - "31921": msg33808, - "31922": msg33809, - "31923": msg33810, - "31924": msg33811, - "31925": msg33812, - "31926": msg33813, - "31927": msg33814, - "31928": msg33815, - "31929": msg33816, - "3193": msg5643, - "31930": msg33817, - "31931": msg33818, - "31932": msg33819, - "31933": msg33820, - "31934": msg33821, - "31935": msg33822, - "31936": msg33823, - "31937": msg33824, - "31938": msg33825, - "31939": msg33826, - "3194": msg5644, - "31940": msg33827, - "31941": msg33828, - "31942": msg33829, - "31943": msg33830, - "31944": msg33831, - "31945": msg33832, - "31946": msg33833, - "31947": msg33834, - "31948": msg33835, - "31949": msg33836, - "3195": msg5645, - "31950": msg33837, - "31951": msg33838, - "31952": msg33839, - "31953": msg33840, - "31954": msg33841, - "31955": msg33842, - "31956": msg33843, - "31957": msg33844, - "31958": msg33845, - "31959": msg33846, - "3196": msg5646, - "31960": msg33847, - "31961": msg33848, - "31962": msg33849, - "31963": msg33850, - "31964": msg33851, - "31965": msg33852, - "31966": msg33853, - "31967": msg33854, - "31968": msg33855, - "31969": msg33856, - "3197": msg5647, - "31970": msg33857, - "31971": msg33858, - "31972": msg33859, - "31973": msg33860, - "31974": msg33861, - "31975": msg33862, - "31976": msg33863, - "31977": msg33864, - "31978": msg33865, - "31979": msg33866, - "3198": msg5648, - "31980": msg33867, - "31981": msg33868, - "31982": msg33869, - "31983": msg33870, - "31984": msg33871, - "31985": msg33872, - "31986": msg33873, - "31987": msg33874, - "31988": msg33875, - "31989": msg33876, - "3199": msg5649, - "31990": msg33877, - "31991": msg33878, - "31992": msg33879, - "31993": msg33880, - "31994": msg33881, - "31995": msg33882, - "31996": msg33883, - "31997": msg33884, - "31998": msg33885, - "31999": msg33886, - "320": select242, - "3200": msg5650, - "32000": msg33887, - "32001": msg33888, - "32002": msg33889, - "32003": msg33890, - "32004": msg33891, - "32005": msg33892, - "32006": msg33893, - "32007": msg33894, - "32008": msg33895, - "32009": msg33896, - "3201": msg5651, - "32010": msg33897, - "32011": msg33898, - "32012": msg33899, - "32013": msg33900, - "32014": msg33901, - "32015": msg33902, - "32016": msg33903, - "32017": msg33904, - "32018": msg33905, - "32019": msg33906, - "3202": msg5652, - "32020": msg33907, - "32021": msg33908, - "32022": msg33909, - "32023": msg33910, - "32024": msg33911, - "32025": msg33912, - "32026": msg33913, - "32027": msg33914, - "32028": msg33915, - "32029": msg33916, - "3203": msg5653, - "32030": msg33917, - "32031": msg33918, - "32032": msg33919, - "32033": msg33920, - "32034": msg33921, - "32035": msg33922, - "32036": msg33923, - "32037": msg33924, - "32038": msg33925, - "32039": msg33926, - "3204": msg5654, - "32040": msg33927, - "32041": msg33928, - "32042": msg33929, - "32043": msg33930, - "32044": msg33931, - "32045": msg33932, - "32046": msg33933, - "32047": msg33934, - "32048": msg33935, - "32049": msg33936, - "3205": msg5655, - "32050": msg33937, - "32051": msg33938, - "32052": msg33939, - "32053": msg33940, - "32054": msg33941, - "32055": msg33942, - "32056": msg33943, - "32057": msg33944, - "32058": msg33945, - "32059": msg33946, - "3206": msg5656, - "32060": msg33947, - "32061": msg33948, - "32062": msg33949, - "32063": msg33950, - "32064": msg33951, - "32065": msg33952, - "32066": msg33953, - "32067": msg33954, - "32068": msg33955, - "32069": msg33956, - "3207": msg5657, - "32070": msg33957, - "32071": msg33958, - "32072": msg33959, - "32073": msg33960, - "32074": msg33961, - "32075": msg33962, - "32076": msg33963, - "32077": msg33964, - "32078": msg33965, - "32079": msg33966, - "3208": msg5658, - "32080": msg33967, - "32081": msg33968, - "32082": msg33969, - "32083": msg33970, - "32084": msg33971, - "32085": msg33972, - "32086": msg33973, - "32087": msg33974, - "32088": msg33975, - "32089": msg33976, - "3209": msg5659, - "32090": msg33977, - "32091": msg33978, - "32092": msg33979, - "32093": msg33980, - "32094": msg33981, - "32095": msg33982, - "32096": msg33983, - "32097": msg33984, - "32098": msg33985, - "32099": msg33986, - "321": select243, - "3210": msg5660, - "32100": msg33987, - "32101": msg33988, - "32102": msg33989, - "32103": msg33990, - "32104": msg33991, - "32105": msg33992, - "32106": msg33993, - "32107": msg33994, - "32108": msg33995, - "32109": msg33996, - "3211": msg5661, - "32110": msg33997, - "32111": msg33998, - "32112": msg33999, - "32113": msg34000, - "32114": msg34001, - "32115": msg34002, - "32116": msg34003, - "32117": msg34004, - "32118": msg34005, - "32119": msg34006, - "3212": msg5662, - "32120": msg34007, - "32121": msg34008, - "32122": msg34009, - "32123": msg34010, - "32124": msg34011, - "32125": msg34012, - "32126": msg34013, - "32127": msg34014, - "32128": msg34015, - "32129": msg34016, - "3213": msg5663, - "32130": msg34017, - "32131": msg34018, - "32132": msg34019, - "32133": msg34020, - "32134": msg34021, - "32135": msg34022, - "32136": msg34023, - "32137": msg34024, - "32138": msg34025, - "32139": msg34026, - "3214": msg5664, - "32140": msg34027, - "32141": msg34028, - "32142": msg34029, - "32143": msg34030, - "32144": msg34031, - "32145": msg34032, - "32146": msg34033, - "32147": msg34034, - "32148": msg34035, - "32149": msg34036, - "3215": msg5665, - "32150": msg34037, - "32151": msg34038, - "32152": msg34039, - "32153": msg34040, - "32154": msg34041, - "32155": msg34042, - "32156": msg34043, - "32157": msg34044, - "32158": msg34045, - "32159": msg34046, - "3216": msg5666, - "32160": msg34047, - "32161": msg34048, - "32162": msg34049, - "32163": msg34050, - "32164": msg34051, - "32165": msg34052, - "32166": msg34053, - "32167": msg34054, - "32168": msg34055, - "32169": msg34056, - "3217": msg5667, - "32170": msg34057, - "32171": msg34058, - "32172": msg34059, - "32173": msg34060, - "32174": msg34061, - "32175": msg34062, - "32176": msg34063, - "32177": msg34064, - "32178": msg34065, - "32179": msg34066, - "3218": msg5668, - "32180": msg34067, - "32181": msg34068, - "32182": msg34069, - "32183": msg34070, - "32184": msg34071, - "32185": msg34072, - "32186": msg34073, - "32187": msg34074, - "32188": msg34075, - "32189": msg34076, - "3219": msg5669, - "32190": msg34077, - "32191": msg34078, - "32192": msg34079, - "32193": msg34080, - "32194": msg34081, - "32195": msg34082, - "32196": msg34083, - "32197": msg34084, - "32198": msg34085, - "32199": msg34086, - "322": select244, - "3220": msg5670, - "32200": msg34087, - "32201": msg34088, - "32202": msg34089, - "32203": msg34090, - "32204": msg34091, - "32205": msg34092, - "32206": msg34093, - "32207": msg34094, - "32208": msg34095, - "32209": msg34096, - "3221": msg5671, - "32210": msg34097, - "32211": msg34098, - "32212": msg34099, - "32213": msg34100, - "32214": msg34101, - "32215": msg34102, - "32216": msg34103, - "32217": msg34104, - "32218": msg34105, - "32219": msg34106, - "3222": msg5672, - "32220": msg34107, - "32221": msg34108, - "32222": msg34109, - "32223": msg34110, - "32224": msg34111, - "32225": msg34112, - "32226": msg34113, - "32227": msg34114, - "32228": msg34115, - "32229": msg34116, - "3223": msg5673, - "32230": msg34117, - "32231": msg34118, - "32232": msg34119, - "32233": msg34120, - "32234": msg34121, - "32235": msg34122, - "32236": msg34123, - "32237": msg34124, - "32238": msg34125, - "32239": msg34126, - "3224": msg5674, - "32240": msg34127, - "32241": msg34128, - "32242": msg34129, - "32243": msg34130, - "32244": msg34131, - "32245": msg34132, - "32246": msg34133, - "32247": msg34134, - "32248": msg34135, - "32249": msg34136, - "3225": msg5675, - "32250": msg34137, - "32251": msg34138, - "32252": msg34139, - "32253": msg34140, - "32254": msg34141, - "32255": msg34142, - "32256": msg34143, - "32257": msg34144, - "32258": msg34145, - "32259": msg34146, - "3226": msg5676, - "32260": msg34147, - "32261": msg34148, - "32262": msg34149, - "32263": msg34150, - "32264": msg34151, - "32265": msg34152, - "32266": msg34153, - "32267": msg34154, - "32268": msg34155, - "32269": msg34156, - "3227": msg5677, - "32270": msg34157, - "32271": msg34158, - "32272": msg34159, - "32273": msg34160, - "32274": msg34161, - "32275": msg34162, - "32276": msg34163, - "32277": msg34164, - "32278": msg34165, - "32279": msg34166, - "3228": msg5678, - "32280": msg34167, - "32281": msg34168, - "32282": msg34169, - "32283": msg34170, - "32284": msg34171, - "32285": msg34172, - "32286": msg34173, - "32287": msg34174, - "32288": msg34175, - "32289": msg34176, - "3229": msg5679, - "32290": msg34177, - "32291": msg34178, - "32292": msg34179, - "32293": msg34180, - "32294": msg34181, - "32295": msg34182, - "32296": msg34183, - "32297": msg34184, - "32298": msg34185, - "32299": msg34186, - "323": select245, - "3230": msg5680, - "32300": msg34187, - "32301": msg34188, - "32302": msg34189, - "32303": msg34190, - "32304": msg34191, - "32305": msg34192, - "32306": msg34193, - "32307": msg34194, - "32308": msg34195, - "32309": msg34196, - "3231": msg5681, - "32310": msg34197, - "32311": msg34198, - "32312": msg34199, - "32313": msg34200, - "32314": msg34201, - "32315": msg34202, - "32316": msg34203, - "32319": msg34204, - "3232": msg5682, - "32320": msg34205, - "3233": msg5683, - "32334": msg34206, - "32335": msg34207, - "32336": msg34208, - "32337": msg34209, - "32338": msg34210, - "3234": msg5684, - "32342": msg34211, - "32343": msg34212, - "32344": msg34213, - "32345": msg34214, - "32346": msg34215, - "32347": msg34216, - "32348": msg34217, - "32349": msg34218, - "3235": msg5685, - "32350": msg34219, - "32351": msg34220, - "32352": msg34221, - "32353": msg34222, - "32354": msg34223, - "32355": msg34224, - "32356": msg34225, - "32357": msg34226, - "32358": msg34227, - "32359": msg34228, - "3236": msg5686, - "32360": msg34229, - "32361": msg34230, - "32362": msg34231, - "32363": msg34232, - "32364": msg34233, - "32365": msg34234, - "32366": msg34235, - "32367": msg34236, - "32368": msg34237, - "32369": msg34238, - "3237": msg5687, - "32370": msg34239, - "32371": msg34240, - "32372": msg34241, - "32373": msg34242, - "32374": msg34243, - "32375": msg34244, - "32376": msg34245, - "32377": msg34246, - "32378": msg34247, - "32379": msg34248, - "3238": msg5688, - "32380": msg34249, - "32381": msg34250, - "32382": msg34251, - "32383": msg34252, - "32384": msg34253, - "32385": msg34254, - "32386": msg34255, - "32387": msg34256, - "32388": msg34257, - "32389": msg34258, - "3239": msg5689, - "32390": msg34259, - "32391": msg34260, - "32392": msg34261, - "32393": msg34262, - "32394": msg34263, - "32395": msg34264, - "32396": msg34265, - "32397": msg34266, - "32398": msg34267, - "32399": msg34268, - "324": select246, - "3240": msg5690, - "32400": msg34269, - "32401": msg34270, - "32402": msg34271, - "32403": msg34272, - "32404": msg34273, - "32405": msg34274, - "32406": msg34275, - "32407": msg34276, - "32408": msg34277, - "32409": msg34278, - "3241": msg5691, - "32410": msg34279, - "32411": msg34280, - "32412": msg34281, - "32413": msg34282, - "32414": msg34283, - "32415": msg34284, - "32416": msg34285, - "32417": msg34286, - "32418": msg34287, - "32419": msg34288, - "3242": msg5692, - "32420": msg34289, - "32421": msg34290, - "32422": msg34291, - "32423": msg34292, - "32424": msg34293, - "32425": msg34294, - "32426": msg34295, - "32427": msg34296, - "32428": msg34297, - "32429": msg34298, - "3243": msg5693, - "32430": msg34299, - "32431": msg34300, - "32432": msg34301, - "32433": msg34302, - "32434": msg34303, - "32435": msg34304, - "32436": msg34305, - "32437": msg34306, - "32438": msg34307, - "32439": msg34308, - "3244": msg5694, - "32440": msg34309, - "32441": msg34310, - "32442": msg34311, - "32443": msg34312, - "32444": msg34313, - "32445": msg34314, - "32446": msg34315, - "32447": msg34316, - "32448": msg34317, - "32449": msg34318, - "3245": msg5695, - "32450": msg34319, - "32451": msg34320, - "32452": msg34321, - "32453": msg34322, - "32454": msg34323, - "32455": msg34324, - "32456": msg34325, - "32457": msg34326, - "32458": msg34327, - "32459": msg34328, - "3246": msg5696, - "32460": msg34329, - "32461": msg34330, - "32462": msg34331, - "32463": msg34332, - "32464": msg34333, - "32465": msg34334, - "32466": msg34335, - "32467": msg34336, - "32468": msg34337, - "32469": msg34338, - "3247": msg5697, - "32470": msg34339, - "32471": msg34340, - "32472": msg34341, - "32473": msg34342, - "32474": msg34343, - "32475": msg34344, - "32476": msg34345, - "32477": msg34346, - "32478": msg34347, - "32479": msg34348, - "3248": msg5698, - "32480": msg34349, - "32481": msg34350, - "32482": msg34351, - "32483": msg34352, - "32484": msg34353, - "32485": msg34354, - "32486": msg34355, - "32487": msg34356, - "32488": msg34357, - "32489": msg34358, - "3249": msg5699, - "32490": msg34359, - "32491": msg34360, - "32492": msg34361, - "32493": msg34362, - "32494": msg34363, - "32495": msg34364, - "32496": msg34365, - "32497": msg34366, - "32498": msg34367, - "32499": msg34368, - "325": select247, - "3250": msg5700, - "32500": msg34369, - "32501": msg34370, - "32502": msg34371, - "32503": msg34372, - "32504": msg34373, - "32505": msg34374, - "32506": msg34375, - "32507": msg34376, - "32508": msg34377, - "32509": msg34378, - "3251": msg5701, - "32510": msg34379, - "32511": msg34380, - "32512": msg34381, - "32513": msg34382, - "32514": msg34383, - "32515": msg34384, - "32516": msg34385, - "32517": msg34386, - "32518": msg34387, - "32519": msg34388, - "3252": msg5702, - "32520": msg34389, - "32521": msg34390, - "32522": msg34391, - "32523": msg34392, - "32524": msg34393, - "32525": msg34394, - "32526": msg34395, - "32527": msg34396, - "32528": msg34397, - "32529": msg34398, - "3253": msg5703, - "32530": msg34399, - "32531": msg34400, - "32532": msg34401, - "32533": msg34402, - "32534": msg34403, - "32535": msg34404, - "32536": msg34405, - "32537": msg34406, - "32538": msg34407, - "32539": msg34408, - "3254": msg5704, - "32540": msg34409, - "32541": msg34410, - "32542": msg34411, - "32543": msg34412, - "32544": msg34413, - "32545": msg34414, - "32546": msg34415, - "32547": msg34416, - "32548": msg34417, - "32549": msg34418, - "3255": msg5705, - "32550": msg34419, - "32551": msg34420, - "32552": msg34421, - "32553": msg34422, - "32554": msg34423, - "32555": msg34424, - "32556": msg34425, - "32557": msg34426, - "32558": msg34427, - "32559": msg34428, - "3256": msg5706, - "32560": msg34429, - "32561": msg34430, - "32562": msg34431, - "32563": msg34432, - "32564": msg34433, - "32565": msg34434, - "32566": msg34435, - "32567": msg34436, - "32568": msg34437, - "32569": msg34438, - "3257": msg5707, - "32570": msg34439, - "32571": msg34440, - "32572": msg34441, - "32573": msg34442, - "32574": msg34443, - "32575": msg34444, - "32576": msg34445, - "32577": msg34446, - "32578": msg34447, - "32579": msg34448, - "3258": msg5708, - "32580": msg34449, - "32581": msg34450, - "32582": msg34451, - "32583": msg34452, - "32584": msg34453, - "32585": msg34454, - "32586": msg34455, - "32587": msg34456, - "32588": msg34457, - "32589": msg34458, - "3259": msg5709, - "32590": msg34459, - "32591": msg34460, - "32592": msg34461, - "32593": msg34462, - "32594": msg34463, - "32595": msg34464, - "32596": msg34465, - "32597": msg34466, - "32598": msg34467, - "32599": msg34468, - "326": select248, - "3260": msg5710, - "32600": msg34469, - "32601": msg34470, - "32602": msg34471, - "32603": msg34472, - "32604": msg34473, - "32605": msg34474, - "32606": msg34475, - "32607": msg34476, - "32608": msg34477, - "32609": msg34478, - "3261": msg5711, - "32610": msg34479, - "32611": msg34480, - "32612": msg34481, - "32613": msg34482, - "32614": msg34483, - "32615": msg34484, - "32616": msg34485, - "32617": msg34486, - "32618": msg34487, - "32619": msg34488, - "3262": msg5712, - "32620": msg34489, - "32621": msg34490, - "32622": msg34491, - "32623": msg34492, - "32624": msg34493, - "32625": msg34494, - "32626": msg34495, - "32627": msg34496, - "32628": msg34497, - "32629": msg34498, - "3263": msg5713, - "32630": msg34499, - "32631": msg34500, - "32632": msg34501, - "32633": msg34502, - "32634": msg34503, - "32635": msg34504, - "32636": msg34505, - "32637": msg34506, - "32638": msg34507, - "32639": msg34508, - "3264": msg5714, - "32640": msg34509, - "32641": msg34510, - "32642": msg34511, - "32643": msg34512, - "32644": msg34513, - "32645": msg34514, - "32646": msg34515, - "32647": msg34516, - "32648": msg34517, - "32649": msg34518, - "3265": msg5715, - "32650": msg34519, - "32651": msg34520, - "32652": msg34521, - "32653": msg34522, - "32654": msg34523, - "32655": msg34524, - "32656": msg34525, - "32657": msg34526, - "32658": msg34527, - "32659": msg34528, - "3266": msg5716, - "32660": msg34529, - "32661": msg34530, - "32662": msg34531, - "32663": msg34532, - "32664": msg34533, - "32665": msg34534, - "32666": msg34535, - "32667": msg34536, - "32668": msg34537, - "32669": msg34538, - "3267": msg5717, - "32670": msg34539, - "32671": msg34540, - "32672": msg34541, - "32673": msg34542, - "32674": msg34543, - "32675": msg34544, - "32676": msg34545, - "32677": msg34546, - "32678": msg34547, - "32679": msg34548, - "3268": msg5718, - "32680": msg34549, - "32681": msg34550, - "32682": msg34551, - "32683": msg34552, - "32684": msg34553, - "32685": msg34554, - "32686": msg34555, - "32687": msg34556, - "32688": msg34557, - "32689": msg34558, - "3269": msg5719, - "32690": msg34559, - "32691": msg34560, - "32692": msg34561, - "32693": msg34562, - "32694": msg34563, - "32695": msg34564, - "32696": msg34565, - "32697": msg34566, - "32698": msg34567, - "32699": msg34568, - "327": select249, - "3270": msg5720, - "32700": msg34569, - "32701": msg34570, - "32702": msg34571, - "32703": msg34572, - "32704": msg34573, - "32705": msg34574, - "32706": msg34575, - "32707": msg34576, - "32708": msg34577, - "32709": msg34578, - "3271": msg5721, - "32710": msg34579, - "32711": msg34580, - "32712": msg34581, - "32713": msg34582, - "32714": msg34583, - "32715": msg34584, - "32716": msg34585, - "32717": msg34586, - "32718": msg34587, - "32719": msg34588, - "3272": msg5722, - "32720": msg34589, - "32721": msg34590, - "32722": msg34591, - "32723": msg34592, - "32724": msg34593, - "32725": msg34594, - "32726": msg34595, - "32727": msg34596, - "32728": msg34597, - "32729": msg34598, - "3273": msg5723, - "32730": msg34599, - "32731": msg34600, - "32732": msg34601, - "32733": msg34602, - "32734": msg34603, - "32735": msg34604, - "32736": msg34605, - "32737": msg34606, - "32738": msg34607, - "32739": msg34608, - "3274": msg5724, - "32740": msg34609, - "32741": msg34610, - "32742": msg34611, - "32743": msg34612, - "32744": msg34613, - "32745": msg34614, - "32746": msg34615, - "32747": msg34616, - "32748": msg34617, - "32749": msg34618, - "3275": msg5725, - "32750": msg34619, - "32751": msg34620, - "32752": msg34621, - "32753": msg34622, - "32754": msg34623, - "32755": msg34624, - "32756": msg34625, - "32757": msg34626, - "32758": msg34627, - "32759": msg34628, - "3276": msg5726, - "32760": msg34629, - "32761": msg34630, - "32762": msg34631, - "32763": msg34632, - "32764": msg34633, - "32765": msg34634, - "32766": msg34635, - "32767": msg34636, - "32768": msg34637, - "32769": msg34638, - "3277": msg5727, - "32770": msg34639, - "32771": msg34640, - "32772": msg34641, - "32773": msg34642, - "32774": msg34643, - "32775": msg34644, - "32776": msg34645, - "32777": msg34646, - "32778": msg34647, - "32779": msg34648, - "3278": msg5728, - "32780": msg34649, - "32781": msg34650, - "32782": msg34651, - "32783": msg34652, - "32784": msg34653, - "32785": msg34654, - "32786": msg34655, - "32787": msg34656, - "32788": msg34657, - "32789": msg34658, - "3279": msg5729, - "32790": msg34659, - "32791": msg34660, - "32792": msg34661, - "32793": msg34662, - "32794": msg34663, - "32795": msg34664, - "32796": msg34665, - "32797": msg34666, - "32798": msg34667, - "32799": msg34668, - "328": select250, - "3280": msg5730, - "32800": msg34669, - "32801": msg34670, - "32802": msg34671, - "32803": msg34672, - "32804": msg34673, - "32805": msg34674, - "32806": msg34675, - "32807": msg34676, - "32808": msg34677, - "32809": msg34678, - "3281": msg5731, - "32810": msg34679, - "32811": msg34680, - "32812": msg34681, - "32813": msg34682, - "32814": msg34683, - "32815": msg34684, - "32816": msg34685, - "32817": msg34686, - "32818": msg34687, - "32819": msg34688, - "3282": msg5732, - "32820": msg34689, - "32821": msg34690, - "32822": msg34691, - "32823": msg34692, - "32824": msg34693, - "32825": msg34694, - "32826": msg34695, - "32827": msg34696, - "32828": msg34697, - "32829": msg34698, - "3283": msg5733, - "32830": msg34699, - "32831": msg34700, - "32832": msg34701, - "32833": msg34702, - "32834": msg34703, - "32835": msg34704, - "32836": msg34705, - "32837": msg34706, - "32838": msg34707, - "32839": msg34708, - "3284": msg5734, - "32840": msg34709, - "32841": msg34710, - "32842": msg34711, - "32843": msg34712, - "32844": msg34713, - "32845": msg34714, - "32846": msg34715, - "32847": msg34716, - "32848": msg34717, - "32849": msg34718, - "3285": msg5735, - "32850": msg34719, - "32851": msg34720, - "32852": msg34721, - "32853": msg34722, - "32854": msg34723, - "32855": msg34724, - "32856": msg34725, - "32857": msg34726, - "32858": msg34727, - "32859": msg34728, - "3286": msg5736, - "32860": msg34729, - "32861": msg34730, - "32862": msg34731, - "32863": msg34732, - "32864": msg34733, - "32865": msg34734, - "32866": msg34735, - "32867": msg34736, - "32868": msg34737, - "32869": msg34738, - "3287": msg5737, - "32870": msg34739, - "32871": msg34740, - "32872": msg34741, - "32873": msg34742, - "32874": msg34743, - "32875": msg34744, - "32876": msg34745, - "32877": msg34746, - "32878": msg34747, - "32879": msg34748, - "3288": msg5738, - "32880": msg34749, - "32881": msg34750, - "32882": msg34751, - "32883": msg34752, - "32884": msg34753, - "32885": msg34754, - "32886": msg34755, - "32887": msg34756, - "32888": msg34757, - "32889": msg34758, - "3289": msg5739, - "32890": msg34759, - "32891": msg34760, - "32892": msg34761, - "32893": msg34762, - "32894": msg34763, - "32895": msg34764, - "32896": msg34765, - "32897": msg34766, - "32898": msg34767, - "32899": msg34768, - "329": select251, - "3290": msg5740, - "32900": msg34769, - "32901": msg34770, - "32902": msg34771, - "32903": msg34772, - "32904": msg34773, - "32905": msg34774, - "32906": msg34775, - "32907": msg34776, - "32908": msg34777, - "32909": msg34778, - "3291": msg5741, - "32910": msg34779, - "32911": msg34780, - "32912": msg34781, - "32913": msg34782, - "32914": msg34783, - "32915": msg34784, - "32916": msg34785, - "32917": msg34786, - "32918": msg34787, - "32919": msg34788, - "3292": msg5742, - "32920": msg34789, - "32921": msg34790, - "32922": msg34791, - "32923": msg34792, - "32924": msg34793, - "32925": msg34794, - "32926": msg34795, - "32927": msg34796, - "32928": msg34797, - "32929": msg34798, - "3293": msg5743, - "32930": msg34799, - "32931": msg34800, - "32932": msg34801, - "32933": msg34802, - "32934": msg34803, - "32935": msg34804, - "32936": msg34805, - "32937": msg34806, - "32938": msg34807, - "32939": msg34808, - "3294": msg5744, - "32940": msg34809, - "32941": msg34810, - "32942": msg34811, - "32943": msg34812, - "32944": msg34813, - "32945": msg34814, - "32946": msg34815, - "32947": msg34816, - "32948": msg34817, - "32949": msg34818, - "3295": msg5745, - "32950": msg34819, - "32951": msg34820, - "32952": msg34821, - "32953": msg34822, - "32954": msg34823, - "32955": msg34824, - "32956": msg34825, - "32957": msg34826, - "32958": msg34827, - "32959": msg34828, - "3296": msg5746, - "32960": msg34829, - "32961": msg34830, - "32962": msg34831, - "32963": msg34832, - "32964": msg34833, - "32965": msg34834, - "32966": msg34835, - "32967": msg34836, - "32968": msg34837, - "32969": msg34838, - "3297": msg5747, - "32970": msg34839, - "32971": msg34840, - "32972": msg34841, - "32973": msg34842, - "32974": msg34843, - "32975": msg34844, - "32976": msg34845, - "32977": msg34846, - "32978": msg34847, - "32979": msg34848, - "3298": msg5748, - "32980": msg34849, - "32981": msg34850, - "32982": msg34851, - "32983": msg34852, - "32984": msg34853, - "32985": msg34854, - "32986": msg34855, - "32987": msg34856, - "32988": msg34857, - "32989": msg34858, - "3299": msg5749, - "32990": msg34859, - "32991": msg34860, - "32992": msg34861, - "32993": msg34862, - "32994": msg34863, - "32995": msg34864, - "32996": msg34865, - "32997": msg34866, - "32998": msg34867, - "32999": msg34868, - "330": select252, - "3300": msg5750, - "33000": msg34869, - "33001": msg34870, - "33002": msg34871, - "33003": msg34872, - "33004": msg34873, - "33005": msg34874, - "33006": msg34875, - "33007": msg34876, - "33008": msg34877, - "33009": msg34878, - "3301": msg5751, - "33010": msg34879, - "33011": msg34880, - "33012": msg34881, - "33013": msg34882, - "33014": msg34883, - "33015": msg34884, - "33016": msg34885, - "33017": msg34886, - "33018": msg34887, - "33019": msg34888, - "3302": msg5752, - "33020": msg34889, - "33021": msg34890, - "33022": msg34891, - "33023": msg34892, - "33024": msg34893, - "33025": msg34894, - "33026": msg34895, - "33027": msg34896, - "33028": msg34897, - "33029": msg34898, - "3303": msg5753, - "33030": msg34899, - "33031": msg34900, - "33032": msg34901, - "33033": msg34902, - "33034": msg34903, - "33035": msg34904, - "33036": msg34905, - "33037": msg34906, - "33038": msg34907, - "33039": msg34908, - "3304": msg5754, - "33040": msg34909, - "33041": msg34910, - "33042": msg34911, - "33043": msg34912, - "33044": msg34913, - "33045": msg34914, - "33046": msg34915, - "33047": msg34916, - "33048": msg34917, - "33049": msg34918, - "3305": msg5755, - "33050": msg34919, - "33051": msg34920, - "33052": msg34921, - "33053": msg34922, - "33054": msg34923, - "33055": msg34924, - "33056": msg34925, - "33057": msg34926, - "33058": msg34927, - "33059": msg34928, - "3306": msg5756, - "33060": msg34929, - "33061": msg34930, - "33062": msg34931, - "33063": msg34932, - "33064": msg34933, - "33065": msg34934, - "33066": msg34935, - "33067": msg34936, - "33068": msg34937, - "33069": msg34938, - "3307": msg5757, - "33070": msg34939, - "33071": msg34940, - "33072": msg34941, - "33073": msg34942, - "33074": msg34943, - "33075": msg34944, - "33076": msg34945, - "33077": msg34946, - "33078": msg34947, - "33079": msg34948, - "3308": msg5758, - "33080": msg34949, - "33081": msg34950, - "33082": msg34951, - "33083": msg34952, - "33084": msg34953, - "33085": msg34954, - "33086": msg34955, - "33087": msg34956, - "33088": msg34957, - "33089": msg34958, - "3309": msg5759, - "33090": msg34959, - "33091": msg34960, - "33092": msg34961, - "33093": msg34962, - "33094": msg34963, - "33095": msg34964, - "33096": msg34965, - "33097": msg34966, - "33098": msg34967, - "33099": msg34968, - "331": select253, - "3310": msg5760, - "33100": msg34969, - "33101": msg34970, - "33102": msg34971, - "33103": msg34972, - "33104": msg34973, - "33105": msg34974, - "33106": msg34975, - "33107": msg34976, - "33108": msg34977, - "33109": msg34978, - "3311": msg5761, - "33110": msg34979, - "33111": msg34980, - "33112": msg34981, - "33113": msg34982, - "33114": msg34983, - "33115": msg34984, - "33116": msg34985, - "33117": msg34986, - "33118": msg34987, - "33119": msg34988, - "3312": msg5762, - "33120": msg34989, - "33121": msg34990, - "33122": msg34991, - "33123": msg34992, - "33124": msg34993, - "33125": msg34994, - "33126": msg34995, - "33127": msg34996, - "33128": msg34997, - "33129": msg34998, - "3313": msg5763, - "33130": msg34999, - "33131": msg35000, - "33132": msg35001, - "33133": msg35002, - "33134": msg35003, - "33135": msg35004, - "33136": msg35005, - "33137": msg35006, - "33138": msg35007, - "33139": msg35008, - "3314": msg5764, - "33140": msg35009, - "33141": msg35010, - "33142": msg35011, - "33143": msg35012, - "33144": msg35013, - "33145": msg35014, - "33146": msg35015, - "33147": msg35016, - "33148": msg35017, - "33149": msg35018, - "3315": msg5765, - "33150": msg35019, - "33151": msg35020, - "33152": msg35021, - "33153": msg35022, - "33154": msg35023, - "33155": msg35024, - "33156": msg35025, - "33157": msg35026, - "33158": msg35027, - "33159": msg35028, - "3316": msg5766, - "33160": msg35029, - "33161": msg35030, - "33162": msg35031, - "33163": msg35032, - "33164": msg35033, - "33165": msg35034, - "33166": msg35035, - "33167": msg35036, - "33168": msg35037, - "33169": msg35038, - "3317": msg5767, - "33170": msg35039, - "33171": msg35040, - "33172": msg35041, - "33173": msg35042, - "33174": msg35043, - "33175": msg35044, - "33176": msg35045, - "33177": msg35046, - "33178": msg35047, - "33179": msg35048, - "3318": msg5768, - "33180": msg35049, - "33181": msg35050, - "33182": msg35051, - "33183": msg35052, - "33184": msg35053, - "33185": msg35054, - "33186": msg35055, - "33187": msg35056, - "33188": msg35057, - "33189": msg35058, - "3319": msg5769, - "33190": msg35059, - "33191": msg35060, - "33192": msg35061, - "33193": msg35062, - "33194": msg35063, - "33195": msg35064, - "33196": msg35065, - "33197": msg35066, - "33198": msg35067, - "33199": msg35068, - "332": select254, - "3320": msg5770, - "33200": msg35069, - "33201": msg35070, - "33202": msg35071, - "33203": msg35072, - "33204": msg35073, - "33205": msg35074, - "33206": msg35075, - "33207": msg35076, - "33208": msg35077, - "33209": msg35078, - "3321": msg5771, - "33210": msg35079, - "33211": msg35080, - "33212": msg35081, - "33213": msg35082, - "33214": msg35083, - "33215": msg35084, - "33216": msg35085, - "33217": msg35086, - "33218": msg35087, - "33219": msg35088, - "3322": msg5772, - "33220": msg35089, - "33221": msg35090, - "33222": msg35091, - "33223": msg35092, - "33224": msg35093, - "33225": msg35094, - "33226": msg35095, - "33227": msg35096, - "33228": msg35097, - "33229": msg35098, - "3323": msg5773, - "33230": msg35099, - "33231": msg35100, - "33232": msg35101, - "33233": msg35102, - "33234": msg35103, - "33235": msg35104, - "33236": msg35105, - "33237": msg35106, - "33238": msg35107, - "33239": msg35108, - "3324": msg5774, - "33240": msg35109, - "33241": msg35110, - "33242": msg35111, - "33243": msg35112, - "33244": msg35113, - "33245": msg35114, - "33246": msg35115, - "33247": msg35116, - "33248": msg35117, - "33249": msg35118, - "3325": msg5775, - "33250": msg35119, - "33251": msg35120, - "33252": msg35121, - "33253": msg35122, - "33254": msg35123, - "33255": msg35124, - "33256": msg35125, - "33257": msg35126, - "33258": msg35127, - "33259": msg35128, - "3326": msg5776, - "33260": msg35129, - "33261": msg35130, - "33262": msg35131, - "33263": msg35132, - "33264": msg35133, - "33265": msg35134, - "33266": msg35135, - "33267": msg35136, - "33268": msg35137, - "33269": msg35138, - "3327": msg5777, - "33270": msg35139, - "33271": msg35140, - "33272": msg35141, - "33273": msg35142, - "33274": msg35143, - "33275": msg35144, - "33276": msg35145, - "33277": msg35146, - "33278": msg35147, - "33279": msg35148, - "3328": msg5778, - "33280": msg35149, - "33281": msg35150, - "33282": msg35151, - "33283": msg35152, - "33284": msg35153, - "33285": msg35154, - "33286": msg35155, - "33287": msg35156, - "33288": msg35157, - "33289": msg35158, - "3329": msg5779, - "33290": msg35159, - "33291": msg35160, - "33292": msg35161, - "33293": msg35162, - "33294": msg35163, - "33295": msg35164, - "33296": msg35165, - "33297": msg35166, - "33298": msg35167, - "33299": msg35168, - "333": select255, - "3330": msg5780, - "33300": msg35169, - "33301": msg35170, - "33302": msg35171, - "33303": msg35172, - "33304": msg35173, - "33305": msg35174, - "33306": msg35175, - "33307": msg35176, - "33308": msg35177, - "33309": msg35178, - "3331": msg5781, - "33310": msg35179, - "33311": msg35180, - "33312": msg35181, - "33313": msg35182, - "33314": msg35183, - "33315": msg35184, - "33316": msg35185, - "33317": msg35186, - "33318": msg35187, - "33319": msg35188, - "3332": msg5782, - "33320": msg35189, - "33321": msg35190, - "33322": msg35191, - "33323": msg35192, - "33324": msg35193, - "33325": msg35194, - "33326": msg35195, - "33327": msg35196, - "33328": msg35197, - "33329": msg35198, - "3333": msg5783, - "33330": msg35199, - "33331": msg35200, - "33332": msg35201, - "33333": msg35202, - "33334": msg35203, - "33335": msg35204, - "33336": msg35205, - "33337": msg35206, - "33338": msg35207, - "33339": msg35208, - "3334": msg5784, - "33340": msg35209, - "33341": msg35210, - "33342": msg35211, - "33343": msg35212, - "33344": msg35213, - "33345": msg35214, - "33346": msg35215, - "33347": msg35216, - "33348": msg35217, - "33349": msg35218, - "3335": msg5785, - "33350": msg35219, - "33351": msg35220, - "33352": msg35221, - "33353": msg35222, - "33354": msg35223, - "33355": msg35224, - "33356": msg35225, - "33357": msg35226, - "33358": msg35227, - "33359": msg35228, - "3336": msg5786, - "33360": msg35229, - "33361": msg35230, - "33362": msg35231, - "33363": msg35232, - "33364": msg35233, - "33365": msg35234, - "33366": msg35235, - "33367": msg35236, - "33368": msg35237, - "33369": msg35238, - "3337": msg5787, - "33370": msg35239, - "33371": msg35240, - "33372": msg35241, - "33373": msg35242, - "33374": msg35243, - "33375": msg35244, - "33376": msg35245, - "33377": msg35246, - "33378": msg35247, - "33379": msg35248, - "3338": msg5788, - "33380": msg35249, - "33381": msg35250, - "33382": msg35251, - "33383": msg35252, - "33384": msg35253, - "33385": msg35254, - "33386": msg35255, - "33387": msg35256, - "33388": msg35257, - "33389": msg35258, - "3339": msg5789, - "33390": msg35259, - "33391": msg35260, - "33392": msg35261, - "33393": msg35262, - "33394": msg35263, - "33395": msg35264, - "33396": msg35265, - "33397": msg35266, - "33398": msg35267, - "33399": msg35268, - "334": select256, - "3340": msg5790, - "33400": msg35269, - "33401": msg35270, - "33402": msg35271, - "33403": msg35272, - "33404": msg35273, - "33405": msg35274, - "33406": msg35275, - "33407": msg35276, - "33408": msg35277, - "33409": msg35278, - "3341": msg5791, - "33410": msg35279, - "33411": msg35280, - "33412": msg35281, - "33413": msg35282, - "33414": msg35283, - "33415": msg35284, - "33416": msg35285, - "33417": msg35286, - "33418": msg35287, - "33419": msg35288, - "3342": msg5792, - "33420": msg35289, - "33421": msg35290, - "33422": msg35291, - "33423": msg35292, - "33424": msg35293, - "33425": msg35294, - "33426": msg35295, - "33427": msg35296, - "33428": msg35297, - "33429": msg35298, - "3343": msg5793, - "33430": msg35299, - "33431": msg35300, - "33432": msg35301, - "33433": msg35302, - "33434": msg35303, - "33435": msg35304, - "33436": msg35305, - "33437": msg35306, - "33438": msg35307, - "33439": msg35308, - "3344": msg5794, - "33440": msg35309, - "33441": msg35310, - "33442": msg35311, - "33443": msg35312, - "33444": msg35313, - "33445": msg35314, - "33446": msg35315, - "33447": msg35316, - "33448": msg35317, - "33449": msg35318, - "3345": msg5795, - "33450": msg35319, - "33451": msg35320, - "33452": msg35321, - "33453": msg35322, - "33454": msg35323, - "33455": msg35324, - "33456": msg35325, - "33457": msg35326, - "33458": msg35327, - "33459": msg35328, - "3346": msg5796, - "33460": msg35329, - "33461": msg35330, - "33462": msg35331, - "33463": msg35332, - "33464": msg35333, - "33465": msg35334, - "33466": msg35335, - "33467": msg35336, - "33468": msg35337, - "33469": msg35338, - "3347": msg5797, - "33470": msg35339, - "33471": msg35340, - "33472": msg35341, - "33473": msg35342, - "33474": msg35343, - "33475": msg35344, - "33476": msg35345, - "33477": msg35346, - "33478": msg35347, - "3348": msg5798, - "3349": msg5799, - "335": select257, - "3350": msg5800, - "3351": msg5801, - "3352": msg5802, - "3353": msg5803, - "3354": msg5804, - "3355": msg5805, - "3356": msg5806, - "33564": msg35348, - "33565": msg35349, - "33566": msg35350, - "33567": msg35351, - "33568": msg35352, - "33569": msg35353, - "3357": msg5807, - "33570": msg35354, - "33571": msg35355, - "33572": msg35356, - "33573": msg35357, - "33574": msg35358, - "33575": msg35359, - "33576": msg35360, - "33577": msg35361, - "33578": msg35362, - "33579": msg35363, - "3358": msg5808, - "33580": msg35364, - "33581": msg35365, - "33582": msg35366, - "33583": msg35367, - "33584": msg35368, - "33585": msg35369, - "33586": msg35370, - "33587": msg35371, - "33588": msg35372, - "33589": msg35373, - "3359": msg5809, - "33590": msg35374, - "33591": msg35375, - "33592": msg35376, - "33593": msg35377, - "33594": msg35378, - "33595": msg35379, - "33596": msg35380, - "33597": msg35381, - "33598": msg35382, - "33599": msg35383, - "336": select258, - "3360": msg5810, - "33600": msg35384, - "33601": msg35385, - "33602": msg35386, - "33603": msg35387, - "33604": msg35388, - "33605": msg35389, - "33606": msg35390, - "33607": msg35391, - "33608": msg35392, - "33609": msg35393, - "3361": msg5811, - "33610": msg35394, - "33611": msg35395, - "33612": msg35396, - "33613": msg35397, - "33614": msg35398, - "33615": msg35399, - "33618": msg35400, - "33619": msg35401, - "3362": msg5812, - "33620": msg35402, - "33621": msg35403, - "33622": msg35404, - "33623": msg35405, - "33624": msg35406, - "33625": msg35407, - "33626": msg35408, - "33627": msg35409, - "33628": msg35410, - "33629": msg35411, - "3363": msg5813, - "33630": msg35412, - "33631": msg35413, - "33632": msg35414, - "33633": msg35415, - "33634": msg35416, - "33635": msg35417, - "33636": msg35418, - "33637": msg35419, - "33638": msg35420, - "33639": msg35421, - "3364": msg5814, - "33640": msg35422, - "33641": msg35423, - "33642": msg35424, - "33643": msg35425, - "33644": msg35426, - "33645": msg35427, - "33646": msg35428, - "33647": msg35429, - "33648": msg35430, - "33649": msg35431, - "3365": msg5815, - "33650": msg35432, - "33651": msg35433, - "33652": msg35434, - "33653": msg35435, - "33654": msg35436, - "33655": msg35437, - "33656": msg35438, - "33657": msg35439, - "33658": msg35440, - "33659": msg35441, - "3366": msg5816, - "33660": msg35442, - "33661": msg35443, - "33662": msg35444, - "33663": msg35445, - "33664": msg35446, - "33665": msg35447, - "33666": msg35448, - "33667": msg35449, - "33668": msg35450, - "33669": msg35451, - "3367": msg5817, - "33670": msg35452, - "33671": msg35453, - "33672": msg35454, - "33673": msg35455, - "33674": msg35456, - "33675": msg35457, - "33676": msg35458, - "33677": msg35459, - "33678": msg35460, - "33679": msg35461, - "3368": msg5818, - "33680": msg35462, - "33681": msg35463, - "33682": msg35464, - "33683": msg35465, - "33684": msg35466, - "33685": msg35467, - "33686": msg35468, - "33687": msg35469, - "33688": msg35470, - "33689": msg35471, - "3369": msg5819, - "33690": msg35472, - "33691": msg35473, - "33692": msg35474, - "33693": msg35475, - "33694": msg35476, - "33695": msg35477, - "33696": msg35478, - "33697": msg35479, - "33698": msg35480, - "33699": msg35481, - "337": select259, - "3370": msg5820, - "33700": msg35482, - "33701": msg35483, - "33702": msg35484, - "33703": msg35485, - "33704": msg35486, - "33705": msg35487, - "33706": msg35488, - "33707": msg35489, - "33708": msg35490, - "33709": msg35491, - "3371": msg5821, - "33710": msg35492, - "33711": msg35493, - "33712": msg35494, - "33713": msg35495, - "33714": msg35496, - "33715": msg35497, - "33716": msg35498, - "33717": msg35499, - "33718": msg35500, - "33719": msg35501, - "3372": msg5822, - "33720": msg35502, - "33721": msg35503, - "33722": msg35504, - "33723": msg35505, - "33724": msg35506, - "33725": msg35507, - "33726": msg35508, - "33727": msg35509, - "33728": msg35510, - "33729": msg35511, - "3373": msg5823, - "33730": msg35512, - "33731": msg35513, - "33732": msg35514, - "33733": msg35515, - "33734": msg35516, - "33735": msg35517, - "33736": msg35518, - "33737": msg35519, - "33738": msg35520, - "33739": msg35521, - "3374": msg5824, - "33740": msg35522, - "33741": msg35523, - "33742": msg35524, - "33743": msg35525, - "33744": msg35526, - "33745": msg35527, - "33746": msg35528, - "33747": msg35529, - "33748": msg35530, - "33749": msg35531, - "3375": msg5825, - "33750": msg35532, - "33751": msg35533, - "33752": msg35534, - "33753": msg35535, - "33754": msg35536, - "33755": msg35537, - "33756": msg35538, - "33757": msg35539, - "33758": msg35540, - "33759": msg35541, - "3376": msg5826, - "33760": msg35542, - "33761": msg35543, - "33762": msg35544, - "33763": msg35545, - "33764": msg35546, - "33765": msg35547, - "33766": msg35548, - "33767": msg35549, - "33768": msg35550, - "33769": msg35551, - "3377": msg5827, - "33770": msg35552, - "33771": msg35553, - "33772": msg35554, - "33773": msg35555, - "33774": msg35556, - "33775": msg35557, - "33776": msg35558, - "33777": msg35559, - "33778": msg35560, - "33779": msg35561, - "3378": msg5828, - "33780": msg35562, - "33781": msg35563, - "33782": msg35564, - "33783": msg35565, - "33784": msg35566, - "33785": msg35567, - "33786": msg35568, - "33787": msg35569, - "33788": msg35570, - "33789": msg35571, - "3379": msg5829, - "33790": msg35572, - "33791": msg35573, - "33792": msg35574, - "33793": msg35575, - "33794": msg35576, - "33795": msg35577, - "33796": msg35578, - "33797": msg35579, - "33798": msg35580, - "33799": msg35581, - "338": select260, - "3380": msg5830, - "33800": msg35582, - "33801": msg35583, - "33802": msg35584, - "33803": msg35585, - "33804": msg35586, - "33805": msg35587, - "33806": msg35588, - "33807": msg35589, - "33808": msg35590, - "33809": msg35591, - "3381": msg5831, - "33810": msg35592, - "33811": msg35593, - "33812": msg35594, - "33813": msg35595, - "33814": msg35596, - "33815": msg35597, - "33816": msg35598, - "33817": msg35599, - "33818": msg35600, - "33819": msg35601, - "3382": msg5832, - "33820": msg35602, - "33821": msg35603, - "33822": msg35604, - "33823": msg35605, - "33824": msg35606, - "33825": msg35607, - "33826": msg35608, - "33827": msg35609, - "33828": msg35610, - "33829": msg35611, - "3383": msg5833, - "33830": msg35612, - "33831": msg35613, - "33832": msg35614, - "33833": msg35615, - "33834": msg35616, - "33835": msg35617, - "33836": msg35618, - "33837": msg35619, - "33838": msg35620, - "33839": msg35621, - "3384": msg5834, - "33840": msg35622, - "33841": msg35623, - "33842": msg35624, - "33843": msg35625, - "33844": msg35626, - "33845": msg35627, - "33846": msg35628, - "33847": msg35629, - "33848": msg35630, - "33849": msg35631, - "3385": msg5835, - "33850": msg35632, - "33851": msg35633, - "33852": msg35634, - "33853": msg35635, - "33854": msg35636, - "33855": msg35637, - "33856": msg35638, - "33857": msg35639, - "33858": msg35640, - "33859": msg35641, - "3386": msg5836, - "33860": msg35642, - "33861": msg35643, - "33862": msg35644, - "33863": msg35645, - "33864": msg35646, - "33865": msg35647, - "33866": msg35648, - "33867": msg35649, - "33868": msg35650, - "33869": msg35651, - "3387": msg5837, - "33870": msg35652, - "33871": msg35653, - "33872": msg35654, - "33873": msg35655, - "33874": msg35656, - "33875": msg35657, - "33876": msg35658, - "33877": msg35659, - "33878": msg35660, - "33879": msg35661, - "3388": msg5838, - "33880": msg35662, - "33881": msg35663, - "33882": msg35664, - "33883": msg35665, - "33884": msg35666, - "33885": msg35667, - "33886": msg35668, - "33887": msg35669, - "33888": msg35670, - "33889": msg35671, - "3389": msg5839, - "33890": msg35672, - "33891": msg35673, - "33892": msg35674, - "33893": msg35675, - "33894": msg35676, - "33895": msg35677, - "33896": msg35678, - "33897": msg35679, - "33898": msg35680, - "33899": msg35681, - "339": select261, - "3390": msg5840, - "33900": msg35682, - "33901": msg35683, - "33902": msg35684, - "33903": msg35685, - "33904": msg35686, - "33905": msg35687, - "33906": msg35688, - "33907": msg35689, - "33908": msg35690, - "33909": msg35691, - "3391": msg5841, - "33910": msg35692, - "33911": msg35693, - "33912": msg35694, - "33913": msg35695, - "33914": msg35696, - "33915": msg35697, - "33916": msg35698, - "33917": msg35699, - "33918": msg35700, - "33919": msg35701, - "3392": msg5842, - "33920": msg35702, - "33921": msg35703, - "33922": msg35704, - "33923": msg35705, - "33924": msg35706, - "33925": msg35707, - "33926": msg35708, - "33927": msg35709, - "33928": msg35710, - "33929": msg35711, - "3393": msg5843, - "33930": msg35712, - "33931": msg35713, - "33932": msg35714, - "33933": msg35715, - "33934": msg35716, - "33935": msg35717, - "33936": msg35718, - "33937": msg35719, - "33938": msg35720, - "33939": msg35721, - "3394": msg5844, - "33940": msg35722, - "33941": msg35723, - "33942": msg35724, - "33943": msg35725, - "33944": msg35726, - "33945": msg35727, - "33946": msg35728, - "33947": msg35729, - "33948": msg35730, - "33949": msg35731, - "3395": msg5845, - "33950": msg35732, - "33951": msg35733, - "33952": msg35734, - "33953": msg35735, - "33954": msg35736, - "33955": msg35737, - "33956": msg35738, - "33957": msg35739, - "33958": msg35740, - "33959": msg35741, - "3396": msg5846, - "33960": msg35742, - "33961": msg35743, - "33962": msg35744, - "33963": msg35745, - "33964": msg35746, - "33965": msg35747, - "33966": msg35748, - "33967": msg35749, - "33968": msg35750, - "33969": msg35751, - "3397": msg5847, - "33970": msg35752, - "33971": msg35753, - "33972": msg35754, - "33973": msg35755, - "33974": msg35756, - "33975": msg35757, - "33976": msg35758, - "33977": msg35759, - "33978": msg35760, - "33979": msg35761, - "3398": msg5848, - "33980": msg35762, - "33981": msg35763, - "33982": msg35764, - "33983": msg35765, - "33984": msg35766, - "33985": msg35767, - "33986": msg35768, - "33987": msg35769, - "33988": msg35770, - "33989": msg35771, - "3399": msg5849, - "33990": msg35772, - "33991": msg35773, - "33992": msg35774, - "33993": msg35775, - "33994": msg35776, - "33995": msg35777, - "33996": msg35778, - "33997": msg35779, - "33998": msg35780, - "33999": msg35781, - "34": msg65, - "340": select262, - "3400": msg5850, - "34000": msg35782, - "34001": msg35783, - "34002": msg35784, - "34003": msg35785, - "34004": msg35786, - "34005": msg35787, - "34006": msg35788, - "34007": msg35789, - "34008": msg35790, - "34009": msg35791, - "3401": msg5851, - "34010": msg35792, - "34011": msg35793, - "34012": msg35794, - "34013": msg35795, - "34014": msg35796, - "34015": msg35797, - "34016": msg35798, - "34017": msg35799, - "34018": msg35800, - "34019": msg35801, - "3402": msg5852, - "34020": msg35802, - "34021": msg35803, - "34022": msg35804, - "34023": msg35805, - "34024": msg35806, - "34025": msg35807, - "34026": msg35808, - "34027": msg35809, - "34028": msg35810, - "34029": msg35811, - "3403": msg5853, - "34030": msg35812, - "34031": msg35813, - "34032": msg35814, - "34033": msg35815, - "34034": msg35816, - "34035": msg35817, - "34036": msg35818, - "34037": msg35819, - "34038": msg35820, - "34039": msg35821, - "3404": msg5854, - "34040": msg35822, - "34041": msg35823, - "34042": msg35824, - "3404269": msg38426, - "3404272": msg38427, - "34043": msg35825, - "34044": msg35826, - "34045": msg35827, - "34046": msg35828, - "34047": msg35829, - "34048": msg35830, - "34049": msg35831, - "3405": msg5855, - "34050": msg35832, - "34051": msg35833, - "34052": msg35834, - "34053": msg35835, - "34054": msg35836, - "34055": msg35837, - "34056": msg35838, - "34057": msg35839, - "34058": msg35840, - "34059": msg35841, - "3406": msg5856, - "34060": msg35842, - "34061": msg35843, - "34062": msg35844, - "34063": msg35845, - "34064": msg35846, - "34065": msg35847, - "34066": msg35848, - "34067": msg35849, - "34068": msg35850, - "34069": msg35851, - "3407": msg5857, - "34070": msg35852, - "34071": msg35853, - "34072": msg35854, - "34073": msg35855, - "34074": msg35856, - "34075": msg35857, - "34076": msg35858, - "34077": msg35859, - "34078": msg35860, - "34079": msg35861, - "3408": msg5858, - "34080": msg35862, - "34081": msg35863, - "34082": msg35864, - "34083": msg35865, - "34084": msg35866, - "34085": msg35867, - "34086": msg35868, - "34087": msg35869, - "34088": msg35870, - "34089": msg35871, - "3409": msg5859, - "34090": msg35872, - "34091": msg35873, - "34092": msg35874, - "34093": msg35875, - "34094": msg35876, - "34095": msg35877, - "34096": msg35878, - "34097": msg35879, - "34098": msg35880, - "34099": msg35881, - "341": select263, - "3410": msg5860, - "34100": msg35882, - "34101": msg35883, - "34102": msg35884, - "34103": msg35885, - "34104": msg35886, - "34105": msg35887, - "34106": msg35888, - "34107": msg35889, - "34108": msg35890, - "34109": msg35891, - "3411": msg5861, - "34110": msg35892, - "34111": msg35893, - "34112": msg35894, - "34113": msg35895, - "34114": msg35896, - "34115": msg35897, - "34116": msg35898, - "34117": msg35899, - "34118": msg35900, - "34119": msg35901, - "3412": msg5862, - "34120": msg35902, - "34121": msg35903, - "34122": msg35904, - "34123": msg35905, - "34124": msg35906, - "34125": msg35907, - "34126": msg35908, - "34127": msg35909, - "34128": msg35910, - "34129": msg35911, - "3413": msg5863, - "34130": msg35912, - "34131": msg35913, - "34132": msg35914, - "34133": msg35915, - "34134": msg35916, - "34135": msg35917, - "34136": msg35918, - "34137": msg35919, - "34138": msg35920, - "34139": msg35921, - "3414": msg5864, - "34140": msg35922, - "34141": msg35923, - "34142": msg35924, - "34143": msg35925, - "34144": msg35926, - "34145": msg35927, - "34146": msg35928, - "34147": msg35929, - "34148": msg35930, - "34149": msg35931, - "3415": msg5865, - "34150": msg35932, - "34151": msg35933, - "34152": msg35934, - "34153": msg35935, - "34154": msg35936, - "34155": msg35937, - "34156": msg35938, - "34157": msg35939, - "34158": msg35940, - "34159": msg35941, - "3416": msg5866, - "34160": msg35942, - "34161": msg35943, - "34162": msg35944, - "34163": msg35945, - "34164": msg35946, - "34165": msg35947, - "34166": msg35948, - "34167": msg35949, - "34168": msg35950, - "34169": msg35951, - "3417": msg5867, - "34170": msg35952, - "34171": msg35953, - "34172": msg35954, - "34173": msg35955, - "34174": msg35956, - "34175": msg35957, - "34176": msg35958, - "34177": msg35959, - "34178": msg35960, - "34179": msg35961, - "3418": msg5868, - "34180": msg35962, - "34181": msg35963, - "34182": msg35964, - "34183": msg35965, - "34184": msg35966, - "34185": msg35967, - "34186": msg35968, - "34187": msg35969, - "34188": msg35970, - "34189": msg35971, - "3419": msg5869, - "34190": msg35972, - "34191": msg35973, - "34192": msg35974, - "34193": msg35975, - "34194": msg35976, - "34195": msg35977, - "34196": msg35978, - "34197": msg35979, - "34198": msg35980, - "34199": msg35981, - "342": select264, - "3420": msg5870, - "34200": msg35982, - "34201": msg35983, - "34202": msg35984, - "34203": msg35985, - "34204": msg35986, - "34205": msg35987, - "34206": msg35988, - "34207": msg35989, - "34208": msg35990, - "34209": msg35991, - "3421": msg5871, - "34210": msg35992, - "34211": msg35993, - "34212": msg35994, - "34213": msg35995, - "34214": msg35996, - "34215": msg35997, - "34216": msg35998, - "34217": msg35999, - "34218": msg36000, - "34219": msg36001, - "3422": msg5872, - "34220": msg36002, - "34221": msg36003, - "34222": msg36004, - "34223": msg36005, - "34224": msg36006, - "34225": msg36007, - "34226": msg36008, - "34227": msg36009, - "34228": msg36010, - "34229": msg36011, - "3423": msg5873, - "34230": msg36012, - "34231": msg36013, - "34232": msg36014, - "34233": msg36015, - "34234": msg36016, - "34235": msg36017, - "34236": msg36018, - "34237": msg36019, - "34238": msg36020, - "34239": msg36021, - "3424": msg5874, - "34240": msg36022, - "34241": msg36023, - "34242": msg36024, - "34243": msg36025, - "34244": msg36026, - "34245": msg36027, - "34246": msg36028, - "34247": msg36029, - "34248": msg36030, - "34249": msg36031, - "3425": msg5875, - "34250": msg36032, - "34251": msg36033, - "34252": msg36034, - "34253": msg36035, - "34254": msg36036, - "34255": msg36037, - "34256": msg36038, - "34257": msg36039, - "34258": msg36040, - "34259": msg36041, - "3426": msg5876, - "34260": msg36042, - "34261": msg36043, - "34262": msg36044, - "34263": msg36045, - "34264": msg36046, - "34265": msg36047, - "34266": msg36048, - "34267": msg36049, - "34268": msg36050, - "34269": msg36051, - "3427": msg5877, - "34270": msg36052, - "34271": msg36053, - "34272": msg36054, - "34273": msg36055, - "34274": msg36056, - "34275": msg36057, - "34276": msg36058, - "34277": msg36059, - "34278": msg36060, - "34279": msg36061, - "3428": msg5878, - "34280": msg36062, - "34281": msg36063, - "34282": msg36064, - "34283": msg36065, - "34284": msg36066, - "34285": msg36067, - "34286": msg36068, - "34287": msg36069, - "34288": msg36070, - "34289": msg36071, - "3429": msg5879, - "34290": msg36072, - "34291": msg36073, - "34292": msg36074, - "34293": msg36075, - "34294": msg36076, - "34295": msg36077, - "34296": msg36078, - "34297": msg36079, - "34298": msg36080, - "34299": msg36081, - "343": select265, - "3430": msg5880, - "34300": msg36082, - "34301": msg36083, - "34302": msg36084, - "34303": msg36085, - "34304": msg36086, - "34305": msg36087, - "34306": msg36088, - "34307": msg36089, - "34308": msg36090, - "34309": msg36091, - "3431": msg5881, - "34310": msg36092, - "34311": msg36093, - "34312": msg36094, - "34313": msg36095, - "34314": msg36096, - "34315": msg36097, - "34316": msg36098, - "34317": msg36099, - "34318": msg36100, - "34319": msg36101, - "3432": msg5882, - "34320": msg36102, - "34321": msg36103, - "34322": msg36104, - "34323": msg36105, - "34324": msg36106, - "34325": msg36107, - "34326": msg36108, - "34327": msg36109, - "34328": msg36110, - "34329": msg36111, - "3433": msg5883, - "34330": msg36112, - "34331": msg36113, - "34332": msg36114, - "34333": msg36115, - "34334": msg36116, - "34335": msg36117, - "34336": msg36118, - "34337": msg36119, - "34338": msg36120, - "34339": msg36121, - "3434": msg5884, - "34340": msg36122, - "34341": msg36123, - "34342": msg36124, - "34343": msg36125, - "34344": msg36126, - "34345": msg36127, - "34346": msg36128, - "34347": msg36129, - "34348": msg36130, - "34349": msg36131, - "3435": msg5885, - "34350": msg36132, - "34351": msg36133, - "34352": msg36134, - "34353": msg36135, - "34354": msg36136, - "34355": msg36137, - "34356": msg36138, - "34357": msg36139, - "34358": msg36140, - "34359": msg36141, - "3436": msg5886, - "34360": msg36142, - "34361": msg36143, - "34362": msg36144, - "34363": msg36145, - "34364": msg36146, - "34365": msg36147, - "34366": msg36148, - "34367": msg36149, - "34368": msg36150, - "34369": msg36151, - "3437": msg5887, - "34370": msg36152, - "34371": msg36153, - "34372": msg36154, - "34373": msg36155, - "34374": msg36156, - "34375": msg36157, - "34376": msg36158, - "34377": msg36159, - "34378": msg36160, - "34379": msg36161, - "3438": msg5888, - "34380": msg36162, - "34381": msg36163, - "34382": msg36164, - "34383": msg36165, - "34384": msg36166, - "34385": msg36167, - "34386": msg36168, - "34387": msg36169, - "34388": msg36170, - "34389": msg36171, - "3439": msg5889, - "34390": msg36172, - "34391": msg36173, - "34392": msg36174, - "34393": msg36175, - "34394": msg36176, - "34395": msg36177, - "34396": msg36178, - "34397": msg36179, - "34398": msg36180, - "34399": msg36181, - "344": select266, - "3440": msg5890, - "34400": msg36182, - "34401": msg36183, - "34402": msg36184, - "34403": msg36185, - "34404": msg36186, - "34405": msg36187, - "34406": msg36188, - "34407": msg36189, - "34408": msg36190, - "34409": msg36191, - "3441": msg5891, - "34410": msg36192, - "34411": msg36193, - "34412": msg36194, - "34413": msg36195, - "34414": msg36196, - "34415": msg36197, - "34416": msg36198, - "34417": msg36199, - "34418": msg36200, - "34419": msg36201, - "3442": msg5892, - "34420": msg36202, - "34421": msg36203, - "34422": msg36204, - "34423": msg36205, - "34424": msg36206, - "34425": msg36207, - "34426": msg36208, - "34427": msg36209, - "34428": msg36210, - "34429": msg36211, - "3443": msg5893, - "34430": msg36212, - "34431": msg36213, - "34432": msg36214, - "34433": msg36215, - "34434": msg36216, - "34435": msg36217, - "34436": msg36218, - "34437": msg36219, - "34438": msg36220, - "34439": msg36221, - "3444": msg5894, - "34440": msg36222, - "34441": msg36223, - "34442": msg36224, - "34443": msg36225, - "34444": msg36226, - "34445": msg36227, - "34446": msg36228, - "34447": msg36229, - "34448": msg36230, - "34449": msg36231, - "3445": msg5895, - "34450": msg36232, - "34451": msg36233, - "34452": msg36234, - "34453": msg36235, - "34454": msg36236, - "34455": msg36237, - "34456": msg36238, - "34457": msg36239, - "34458": msg36240, - "34459": msg36241, - "3446": msg5896, - "34460": msg36242, - "34461": msg36243, - "34462": msg36244, - "34463": msg36245, - "34464": msg36246, - "34465": msg36247, - "34466": msg36248, - "34467": msg36249, - "34468": msg36250, - "34469": msg36251, - "3447": msg5897, - "34470": msg36252, - "34471": msg36253, - "34472": msg36254, - "34473": msg36255, - "34474": msg36256, - "34475": msg36257, - "34476": msg36258, - "34477": msg36259, - "34478": msg36260, - "34479": msg36261, - "3448": msg5898, - "34480": msg36262, - "34481": msg36263, - "34482": msg36264, - "34483": msg36265, - "34484": msg36266, - "34485": msg36267, - "34486": msg36268, - "34487": msg36269, - "34488": msg36270, - "34489": msg36271, - "3449": msg5899, - "34490": msg36272, - "34491": msg36273, - "34492": msg36274, - "34493": msg36275, - "34494": msg36276, - "34495": msg36277, - "34496": msg36278, - "34497": msg36279, - "34498": msg36280, - "34499": msg36281, - "345": select267, - "3450": msg5900, - "34500": msg36282, - "34501": msg36283, - "34502": msg36284, - "34503": msg36285, - "34504": msg36286, - "34505": msg36287, - "34506": msg36288, - "34507": msg36289, - "34508": msg36290, - "34509": msg36291, - "3451": msg5901, - "34510": msg36292, - "34511": msg36293, - "34512": msg36294, - "34513": msg36295, - "34514": msg36296, - "34515": msg36297, - "34516": msg36298, - "34517": msg36299, - "34518": msg36300, - "34519": msg36301, - "3452": msg5902, - "34520": msg36302, - "34521": msg36303, - "34522": msg36304, - "34523": msg36305, - "34524": msg36306, - "34525": msg36307, - "34526": msg36308, - "34527": msg36309, - "34528": msg36310, - "34529": msg36311, - "3453": msg5903, - "34530": msg36312, - "34531": msg36313, - "34532": msg36314, - "34533": msg36315, - "34534": msg36316, - "34535": msg36317, - "34536": msg36318, - "34537": msg36319, - "34538": msg36320, - "34539": msg36321, - "3454": msg5904, - "34540": msg36322, - "34541": msg36323, - "34542": msg36324, - "34543": msg36325, - "34544": msg36326, - "34545": msg36327, - "34546": msg36328, - "34547": msg36329, - "34548": msg36330, - "34549": msg36331, - "3455": msg5905, - "34550": msg36332, - "34551": msg36333, - "34552": msg36334, - "34553": msg36335, - "34554": msg36336, - "34555": msg36337, - "34556": msg36338, - "34557": msg36339, - "34558": msg36340, - "34559": msg36341, - "3456": msg5906, - "34560": msg36342, - "34561": msg36343, - "34562": msg36344, - "34563": msg36345, - "34564": msg36346, - "34565": msg36347, - "34566": msg36348, - "34567": msg36349, - "34568": msg36350, - "34569": msg36351, - "3457": msg5907, - "34570": msg36352, - "34571": msg36353, - "34572": msg36354, - "34573": msg36355, - "34574": msg36356, - "34575": msg36357, - "34576": msg36358, - "34577": msg36359, - "34578": msg36360, - "34579": msg36361, - "3458": msg5908, - "34580": msg36362, - "34581": msg36363, - "34582": msg36364, - "34583": msg36365, - "34584": msg36366, - "34585": msg36367, - "34586": msg36368, - "34587": msg36369, - "34588": msg36370, - "34589": msg36371, - "3459": msg5909, - "34590": msg36372, - "34591": msg36373, - "34592": msg36374, - "34593": msg36375, - "34594": msg36376, - "34595": msg36377, - "34596": msg36378, - "34597": msg36379, - "34598": msg36380, - "34599": msg36381, - "346": select268, - "3460": msg5910, - "34600": msg36382, - "34601": msg36383, - "34602": msg36384, - "34603": msg36385, - "34604": msg36386, - "34605": msg36387, - "34606": msg36388, - "34607": msg36389, - "34608": msg36390, - "34609": msg36391, - "3461": msg5911, - "34610": msg36392, - "34611": msg36393, - "34612": msg36394, - "34613": msg36395, - "34614": msg36396, - "34615": msg36397, - "34616": msg36398, - "34617": msg36399, - "34618": msg36400, - "34619": msg36401, - "3462": msg5912, - "34620": msg36402, - "34621": msg36403, - "34622": msg36404, - "34623": msg36405, - "34624": msg36406, - "34625": msg36407, - "34626": msg36408, - "34627": msg36409, - "34628": msg36410, - "34629": msg36411, - "3463": msg5913, - "34630": msg36412, - "34631": msg36413, - "34632": msg36414, - "34633": msg36415, - "34634": msg36416, - "34635": msg36417, - "34636": msg36418, - "34637": msg36419, - "34638": msg36420, - "34639": msg36421, - "3464": msg5914, - "34640": msg36422, - "34641": msg36423, - "34642": msg36424, - "34643": msg36425, - "34644": msg36426, - "34645": msg36427, - "34646": msg36428, - "34647": msg36429, - "34648": msg36430, - "34649": msg36431, - "3465": msg5915, - "34650": msg36432, - "34651": msg36433, - "34652": msg36434, - "34653": msg36435, - "34654": msg36436, - "34655": msg36437, - "34656": msg36438, - "34657": msg36439, - "34658": msg36440, - "34659": msg36441, - "3466": msg5916, - "34660": msg36442, - "34661": msg36443, - "34662": msg36444, - "34663": msg36445, - "34664": msg36446, - "34665": msg36447, - "34666": msg36448, - "34667": msg36449, - "34668": msg36450, - "34669": msg36451, - "3467": msg5917, - "34670": msg36452, - "34671": msg36453, - "34672": msg36454, - "34673": msg36455, - "34674": msg36456, - "34675": msg36457, - "34676": msg36458, - "34677": msg36459, - "34678": msg36460, - "34679": msg36461, - "3468": msg5918, - "34680": msg36462, - "34681": msg36463, - "34682": msg36464, - "34683": msg36465, - "34684": msg36466, - "34685": msg36467, - "34686": msg36468, - "34687": msg36469, - "34688": msg36470, - "34689": msg36471, - "3469": msg5919, - "34690": msg36472, - "34691": msg36473, - "34692": msg36474, - "34693": msg36475, - "34694": msg36476, - "34695": msg36477, - "34696": msg36478, - "34697": msg36479, - "34698": msg36480, - "34699": msg36481, - "347": select269, - "3470": msg5920, - "34700": msg36482, - "34701": msg36483, - "34702": msg36484, - "34703": msg36485, - "34704": msg36486, - "34705": msg36487, - "34706": msg36488, - "34707": msg36489, - "34708": msg36490, - "34709": msg36491, - "3471": msg5921, - "34710": msg36492, - "34711": msg36493, - "34712": msg36494, - "34713": msg36495, - "34714": msg36496, - "34715": msg36497, - "34716": msg36498, - "34717": msg36499, - "34718": msg36500, - "34719": msg36501, - "3472": msg5922, - "34720": msg36502, - "34721": msg36503, - "34722": msg36504, - "34723": msg36505, - "34724": msg36506, - "34725": msg36507, - "34726": msg36508, - "34727": msg36509, - "34728": msg36510, - "34729": msg36511, - "3473": msg5923, - "34730": msg36512, - "34731": msg36513, - "34732": msg36514, - "34733": msg36515, - "34734": msg36516, - "34735": msg36517, - "34736": msg36518, - "34737": msg36519, - "34738": msg36520, - "34739": msg36521, - "3474": msg5924, - "34740": msg36522, - "34741": msg36523, - "34742": msg36524, - "34743": msg36525, - "34744": msg36526, - "34745": msg36527, - "34746": msg36528, - "34747": msg36529, - "34748": msg36530, - "34749": msg36531, - "3475": msg5925, - "34750": msg36532, - "34751": msg36533, - "34752": msg36534, - "34753": msg36535, - "34754": msg36536, - "34755": msg36537, - "34756": msg36538, - "34757": msg36539, - "34758": msg36540, - "34759": msg36541, - "3476": msg5926, - "34760": msg36542, - "34761": msg36543, - "34762": msg36544, - "34763": msg36545, - "34764": msg36546, - "34765": msg36547, - "34766": msg36548, - "34767": msg36549, - "34768": msg36550, - "34769": msg36551, - "3477": msg5927, - "34770": msg36552, - "34771": msg36553, - "34772": msg36554, - "34773": msg36555, - "34774": msg36556, - "34775": msg36557, - "34776": msg36558, - "34777": msg36559, - "34778": msg36560, - "34779": msg36561, - "3478": msg5928, - "34780": msg36562, - "34781": msg36563, - "34782": msg36564, - "34783": msg36565, - "34784": msg36566, - "34785": msg36567, - "34786": msg36568, - "34787": msg36569, - "34788": msg36570, - "34789": msg36571, - "3479": msg5929, - "34790": msg36572, - "34791": msg36573, - "34792": msg36574, - "34793": msg36575, - "34794": msg36576, - "34795": msg36577, - "34796": msg36578, - "34797": msg36579, - "34798": msg36580, - "34799": msg36581, - "348": select270, - "3480": msg5930, - "34800": msg36582, - "34801": msg36583, - "34802": msg36584, - "34803": msg36585, - "34804": msg36586, - "34805": msg36587, - "34806": msg36588, - "34807": msg36589, - "34808": msg36590, - "34809": msg36591, - "3481": msg5931, - "34810": msg36592, - "34811": msg36593, - "34812": msg36594, - "34813": msg36595, - "34814": msg36596, - "34815": msg36597, - "34816": msg36598, - "34817": msg36599, - "34818": msg36600, - "34819": msg36601, - "3482": msg5932, - "34820": msg36602, - "34821": msg36603, - "34822": msg36604, - "34823": msg36605, - "34824": msg36606, - "34825": msg36607, - "34826": msg36608, - "34827": msg36609, - "34828": msg36610, - "34829": msg36611, - "3483": msg5933, - "34830": msg36612, - "34831": msg36613, - "34832": msg36614, - "34833": msg36615, - "34834": msg36616, - "34835": msg36617, - "34836": msg36618, - "34837": msg36619, - "34838": msg36620, - "34839": msg36621, - "3484": msg5934, - "34840": msg36622, - "34841": msg36623, - "34842": msg36624, - "34843": msg36625, - "34844": msg36626, - "34845": msg36627, - "34846": msg36628, - "34847": msg36629, - "34848": msg36630, - "34849": msg36631, - "3485": msg5935, - "34850": msg36632, - "34851": msg36633, - "34852": msg36634, - "34853": msg36635, - "34854": msg36636, - "34855": msg36637, - "34856": msg36638, - "34857": msg36639, - "34858": msg36640, - "34859": msg36641, - "3486": msg5936, - "34860": msg36642, - "34861": msg36643, - "34862": msg36644, - "34863": msg36645, - "34864": msg36646, - "34865": msg36647, - "34866": msg36648, - "34867": msg36649, - "34868": msg36650, - "34869": msg36651, - "3487": msg5937, - "34870": msg36652, - "34871": msg36653, - "34872": msg36654, - "34873": msg36655, - "34874": msg36656, - "34875": msg36657, - "34876": msg36658, - "34877": msg36659, - "34878": msg36660, - "34879": msg36661, - "3488": msg5938, - "34880": msg36662, - "34881": msg36663, - "34882": msg36664, - "34883": msg36665, - "34884": msg36666, - "34885": msg36667, - "34886": msg36668, - "34887": msg36669, - "34888": msg36670, - "34889": msg36671, - "3489": msg5939, - "34890": msg36672, - "34891": msg36673, - "34892": msg36674, - "34893": msg36675, - "34894": msg36676, - "34895": msg36677, - "34896": msg36678, - "34897": msg36679, - "34898": msg36680, - "34899": msg36681, - "349": select271, - "3490": msg5940, - "34900": msg36682, - "34901": msg36683, - "34902": msg36684, - "34903": msg36685, - "34904": msg36686, - "34905": msg36687, - "34906": msg36688, - "34907": msg36689, - "34908": msg36690, - "34909": msg36691, - "3491": msg5941, - "34910": msg36692, - "34911": msg36693, - "34912": msg36694, - "34913": msg36695, - "34914": msg36696, - "34915": msg36697, - "34916": msg36698, - "34917": msg36699, - "34918": msg36700, - "34919": msg36701, - "3492": msg5942, - "34920": msg36702, - "34921": msg36703, - "34922": msg36704, - "34923": msg36705, - "34924": msg36706, - "34925": msg36707, - "34926": msg36708, - "34927": msg36709, - "34928": msg36710, - "34929": msg36711, - "3493": msg5943, - "34930": msg36712, - "34931": msg36713, - "34932": msg36714, - "34933": msg36715, - "34934": msg36716, - "34935": msg36717, - "34936": msg36718, - "34937": msg36719, - "34938": msg36720, - "34939": msg36721, - "3494": msg5944, - "34940": msg36722, - "34941": msg36723, - "34942": msg36724, - "34943": msg36725, - "34944": msg36726, - "34945": msg36727, - "34946": msg36728, - "34947": msg36729, - "34948": msg36730, - "34949": msg36731, - "3495": msg5945, - "34950": msg36732, - "34951": msg36733, - "34952": msg36734, - "34953": msg36735, - "34954": msg36736, - "34955": msg36737, - "34956": msg36738, - "34957": msg36739, - "34958": msg36740, - "34959": msg36741, - "3496": msg5946, - "34960": msg36742, - "34961": msg36743, - "34962": msg36744, - "34963": msg36745, - "34964": msg36746, - "34965": msg36747, - "34966": msg36748, - "34967": msg36749, - "34968": msg36750, - "34969": msg36751, - "3497": msg5947, - "34970": msg36752, - "34971": msg36753, - "34972": msg36754, - "34973": msg36755, - "34974": msg36756, - "34975": msg36757, - "34976": msg36758, - "34977": msg36759, - "34978": msg36760, - "34979": msg36761, - "3498": msg5948, - "34980": msg36762, - "34981": msg36763, - "34982": msg36764, - "34983": msg36765, - "34984": msg36766, - "34985": msg36767, - "34986": msg36768, - "34987": msg36769, - "34988": msg36770, - "34989": msg36771, - "3499": msg5949, - "34990": msg36772, - "34991": msg36773, - "34992": msg36774, - "34993": msg36775, - "34994": msg36776, - "34995": msg36777, - "34996": msg36778, - "34997": msg36779, - "34998": msg36780, - "34999": msg36781, - "350": select272, - "3500": msg5950, - "35000": msg36782, - "35001": msg36783, - "35002": msg36784, - "35003": msg36785, - "35004": msg36786, - "35005": msg36787, - "35006": msg36788, - "35007": msg36789, - "35008": msg36790, - "35009": msg36791, - "3501": msg5951, - "35010": msg36792, - "35011": msg36793, - "35012": msg36794, - "35013": msg36795, - "35014": msg36796, - "35015": msg36797, - "35016": msg36798, - "35017": msg36799, - "35018": msg36800, - "35019": msg36801, - "3502": msg5952, - "35020": msg36802, - "35021": msg36803, - "35022": msg36804, - "35023": msg36805, - "35024": msg36806, - "35025": msg36807, - "35026": msg36808, - "35027": msg36809, - "35028": msg36810, - "35029": msg36811, - "3503": msg5953, - "35030": msg36812, - "35031": msg36813, - "35032": msg36814, - "35033": msg36815, - "35034": msg36816, - "35035": msg36817, - "35036": msg36818, - "35037": msg36819, - "35038": msg36820, - "35039": msg36821, - "3504": msg5954, - "35040": msg36822, - "35041": msg36823, - "35042": msg36824, - "35043": msg36825, - "35044": msg36826, - "35045": msg36827, - "35046": msg36828, - "35047": msg36829, - "35048": msg36830, - "35049": msg36831, - "3505": msg5955, - "35050": msg36832, - "35051": msg36833, - "35052": msg36834, - "35053": msg36835, - "3506": msg5956, - "35062": msg36836, - "35063": msg36837, - "35064": msg36838, - "35065": msg36839, - "35066": msg36840, - "35067": msg36841, - "35068": msg36842, - "35069": msg36843, - "3507": msg5957, - "35070": msg36844, - "35071": msg36845, - "35072": msg36846, - "35073": msg36847, - "35074": msg36848, - "35075": msg36849, - "35076": msg36850, - "35077": msg36851, - "35078": msg36852, - "35079": msg36853, - "3508": msg5958, - "35080": msg36854, - "35081": msg36855, - "35082": msg36856, - "35083": msg36857, - "35084": msg36858, - "35085": msg36859, - "35086": msg36860, - "35087": msg36861, - "35088": msg36862, - "35089": msg36863, - "3509": msg5959, - "35090": msg36864, - "35091": msg36865, - "35092": msg36866, - "35093": msg36867, - "35094": msg36868, - "35095": msg36869, - "35096": msg36870, - "35097": msg36871, - "35098": msg36872, - "35099": msg36873, - "351": select273, - "3510": msg5960, - "35100": msg36874, - "35101": msg36875, - "35102": msg36876, - "35103": msg36877, - "35104": msg36878, - "35105": msg36879, - "35106": msg36880, - "35107": msg36881, - "35108": msg36882, - "35109": msg36883, - "3511": msg5961, - "35110": msg36884, - "35111": msg36885, - "35112": msg36886, - "35113": msg36887, - "35114": msg36888, - "35115": msg36889, - "35116": msg36890, - "35117": msg36891, - "35118": msg36892, - "35119": msg36893, - "3512": msg5962, - "35120": msg36894, - "35121": msg36895, - "35122": msg36896, - "35123": msg36897, - "35124": msg36898, - "35125": msg36899, - "35126": msg36900, - "35127": msg36901, - "35128": msg36902, - "35129": msg36903, - "3513": msg5963, - "35130": msg36904, - "35131": msg36905, - "35132": msg36906, - "35133": msg36907, - "35134": msg36908, - "35135": msg36909, - "35136": msg36910, - "35137": msg36911, - "35138": msg36912, - "35139": msg36913, - "3514": msg5964, - "35140": msg36914, - "35141": msg36915, - "35142": msg36916, - "35143": msg36917, - "35144": msg36918, - "35145": msg36919, - "35146": msg36920, - "35147": msg36921, - "35148": msg36922, - "35149": msg36923, - "3515": msg5965, - "35150": msg36924, - "35151": msg36925, - "35152": msg36926, - "35153": msg36927, - "35154": msg36928, - "35155": msg36929, - "35156": msg36930, - "35157": msg36931, - "35158": msg36932, - "35159": msg36933, - "3516": msg5966, - "35160": msg36934, - "35161": msg36935, - "35162": msg36936, - "35163": msg36937, - "35164": msg36938, - "35165": msg36939, - "35166": msg36940, - "35167": msg36941, - "35168": msg36942, - "35169": msg36943, - "3517": msg5967, - "35170": msg36944, - "35171": msg36945, - "35172": msg36946, - "35173": msg36947, - "35174": msg36948, - "35175": msg36949, - "35176": msg36950, - "35177": msg36951, - "35178": msg36952, - "35179": msg36953, - "3518": msg5968, - "35180": msg36954, - "35181": msg36955, - "35182": msg36956, - "35183": msg36957, - "35184": msg36958, - "35185": msg36959, - "35186": msg36960, - "35187": msg36961, - "35188": msg36962, - "35189": msg36963, - "3519": msg5969, - "35190": msg36964, - "35191": msg36965, - "35192": msg36966, - "35193": msg36967, - "35194": msg36968, - "35195": msg36969, - "35196": msg36970, - "35197": msg36971, - "35198": msg36972, - "35199": msg36973, - "352": select274, - "3520": msg5970, - "35200": msg36974, - "35201": msg36975, - "35202": msg36976, - "35203": msg36977, - "35204": msg36978, - "35205": msg36979, - "35206": msg36980, - "35207": msg36981, - "35208": msg36982, - "35209": msg36983, - "3521": msg5971, - "35210": msg36984, - "35211": msg36985, - "35212": msg36986, - "35213": msg36987, - "35214": msg36988, - "35215": msg36989, - "35216": msg36990, - "35217": msg36991, - "35218": msg36992, - "35219": msg36993, - "3522": msg5972, - "35220": msg36994, - "35221": msg36995, - "35222": msg36996, - "35223": msg36997, - "35224": msg36998, - "35225": msg36999, - "35226": msg37000, - "35227": msg37001, - "35228": msg37002, - "35229": msg37003, - "3523": msg5973, - "35230": msg37004, - "35231": msg37005, - "35232": msg37006, - "35233": msg37007, - "35234": msg37008, - "35235": msg37009, - "35236": msg37010, - "35237": msg37011, - "35238": msg37012, - "35239": msg37013, - "3524": msg5974, - "35240": msg37014, - "35241": msg37015, - "35242": msg37016, - "35243": msg37017, - "35244": msg37018, - "35245": msg37019, - "35246": msg37020, - "35247": msg37021, - "35248": msg37022, - "35249": msg37023, - "3525": msg5975, - "35250": msg37024, - "35251": msg37025, - "35252": msg37026, - "35253": msg37027, - "35254": msg37028, - "35255": msg37029, - "35256": msg37030, - "35257": msg37031, - "35258": msg37032, - "35259": msg37033, - "3526": msg5976, - "35260": msg37034, - "35261": msg37035, - "35262": msg37036, - "35263": msg37037, - "35264": msg37038, - "35265": msg37039, - "35266": msg37040, - "35267": msg37041, - "35268": msg37042, - "35269": msg37043, - "3527": msg5977, - "35270": msg37044, - "35271": msg37045, - "35272": msg37046, - "35273": msg37047, - "35274": msg37048, - "35275": msg37049, - "35276": msg37050, - "35277": msg37051, - "35278": msg37052, - "35279": msg37053, - "3528": msg5978, - "35280": msg37054, - "35281": msg37055, - "35282": msg37056, - "35283": msg37057, - "35284": msg37058, - "35285": msg37059, - "35286": msg37060, - "35287": msg37061, - "35288": msg37062, - "35289": msg37063, - "3529": msg5979, - "35290": msg37064, - "35291": msg37065, - "35292": msg37066, - "35293": msg37067, - "35294": msg37068, - "35295": msg37069, - "35296": msg37070, - "35297": msg37071, - "35298": msg37072, - "35299": msg37073, - "353": select275, - "3530": msg5980, - "35300": msg37074, - "35301": msg37075, - "35302": msg37076, - "35303": msg37077, - "35304": msg37078, - "35305": msg37079, - "35306": msg37080, - "35307": msg37081, - "35308": msg37082, - "35309": msg37083, - "3531": msg5981, - "35310": msg37084, - "35311": msg37085, - "35312": msg37086, - "35313": msg37087, - "35314": msg37088, - "35315": msg37089, - "35316": msg37090, - "35317": msg37091, - "35318": msg37092, - "35319": msg37093, - "3532": msg5982, - "35320": msg37094, - "35321": msg37095, - "35322": msg37096, - "35323": msg37097, - "35324": msg37098, - "35325": msg37099, - "35326": msg37100, - "35327": msg37101, - "35328": msg37102, - "35329": msg37103, - "3533": msg5983, - "35330": msg37104, - "35331": msg37105, - "35332": msg37106, - "35333": msg37107, - "35334": msg37108, - "35335": msg37109, - "35336": msg37110, - "35337": msg37111, - "35338": msg37112, - "35339": msg37113, - "3534": msg5984, - "35340": msg37114, - "35341": msg37115, - "35342": msg37116, - "35343": msg37117, - "35344": msg37118, - "35345": msg37119, - "35346": msg37120, - "35347": msg37121, - "35348": msg37122, - "35349": msg37123, - "3535": msg5985, - "35350": msg37124, - "35351": msg37125, - "35352": msg37126, - "35353": msg37127, - "35354": msg37128, - "35355": msg37129, - "35356": msg37130, - "35357": msg37131, - "35358": msg37132, - "35359": msg37133, - "3536": msg5986, - "35360": msg37134, - "35361": msg37135, - "35362": msg37136, - "35363": msg37137, - "35364": msg37138, - "35365": msg37139, - "35366": msg37140, - "35367": msg37141, - "35368": msg37142, - "35369": msg37143, - "3537": msg5987, - "35370": msg37144, - "35371": msg37145, - "35372": msg37146, - "35373": msg37147, - "35374": msg37148, - "35375": msg37149, - "35376": msg37150, - "35377": msg37151, - "35378": msg37152, - "35379": msg37153, - "3538": msg5988, - "35380": msg37154, - "35381": msg37155, - "35382": msg37156, - "35383": msg37157, - "35384": msg37158, - "35385": msg37159, - "35386": msg37160, - "35387": msg37161, - "35388": msg37162, - "35389": msg37163, - "3539": msg5989, - "35390": msg37164, - "35391": msg37165, - "35392": msg37166, - "35393": msg37167, - "35394": msg37168, - "35395": msg37169, - "35396": msg37170, - "35397": msg37171, - "35398": msg37172, - "35399": msg37173, - "354": select276, - "3540": msg5990, - "35400": msg37174, - "35401": msg37175, - "35402": msg37176, - "35403": msg37177, - "35404": msg37178, - "35405": msg37179, - "35406": msg37180, - "35407": msg37181, - "35408": msg37182, - "35409": msg37183, - "3541": msg5991, - "35410": msg37184, - "35411": msg37185, - "35412": msg37186, - "35413": msg37187, - "35414": msg37188, - "35415": msg37189, - "35416": msg37190, - "35417": msg37191, - "35418": msg37192, - "35419": msg37193, - "3542": msg5992, - "35420": msg37194, - "35421": msg37195, - "35422": msg37196, - "35423": msg37197, - "35424": msg37198, - "35425": msg37199, - "35426": msg37200, - "35427": msg37201, - "35428": msg37202, - "35429": msg37203, - "3543": msg5993, - "35430": msg37204, - "35431": msg37205, - "35432": msg37206, - "35433": msg37207, - "35434": msg37208, - "35435": msg37209, - "35436": msg37210, - "35437": msg37211, - "35438": msg37212, - "35439": msg37213, - "3544": msg5994, - "35440": msg37214, - "35441": msg37215, - "35442": msg37216, - "35443": msg37217, - "35444": msg37218, - "35445": msg37219, - "35446": msg37220, - "35447": msg37221, - "35448": msg37222, - "35449": msg37223, - "3545": msg5995, - "35450": msg37224, - "35451": msg37225, - "35452": msg37226, - "35453": msg37227, - "35454": msg37228, - "35455": msg37229, - "35456": msg37230, - "35457": msg37231, - "35458": msg37232, - "35459": msg37233, - "3546": msg5996, - "35460": msg37234, - "35461": msg37235, - "35462": msg37236, - "35463": msg37237, - "35464": msg37238, - "35465": msg37239, - "35466": msg37240, - "35467": msg37241, - "35468": msg37242, - "35469": msg37243, - "3547": msg5997, - "35470": msg37244, - "35471": msg37245, - "35472": msg37246, - "35473": msg37247, - "35474": msg37248, - "35475": msg37249, - "35476": msg37250, - "35477": msg37251, - "35478": msg37252, - "35479": msg37253, - "3548": msg5998, - "35480": msg37254, - "35481": msg37255, - "35482": msg37256, - "35483": msg37257, - "35484": msg37258, - "35485": msg37259, - "35486": msg37260, - "35487": msg37261, - "35488": msg37262, - "35489": msg37263, - "3549": msg5999, - "35490": msg37264, - "35491": msg37265, - "35492": msg37266, - "35493": msg37267, - "35494": msg37268, - "35495": msg37269, - "35496": msg37270, - "35497": msg37271, - "35498": msg37272, - "35499": msg37273, - "355": select277, - "3550": msg6000, - "35500": msg37274, - "35501": msg37275, - "35502": msg37276, - "35503": msg37277, - "35504": msg37278, - "35505": msg37279, - "35506": msg37280, - "35507": msg37281, - "35508": msg37282, - "35509": msg37283, - "3551": msg6001, - "35510": msg37284, - "35511": msg37285, - "35512": msg37286, - "35513": msg37287, - "35514": msg37288, - "35515": msg37289, - "35516": msg37290, - "35517": msg37291, - "35518": msg37292, - "35519": msg37293, - "3552": msg6002, - "35520": msg37294, - "35521": msg37295, - "35522": msg37296, - "35523": msg37297, - "35524": msg37298, - "35525": msg37299, - "35526": msg37300, - "35527": msg37301, - "35528": msg37302, - "35529": msg37303, - "3553": msg6003, - "35530": msg37304, - "35531": msg37305, - "35532": msg37306, - "35533": msg37307, - "35534": msg37308, - "35535": msg37309, - "35536": msg37310, - "35537": msg37311, - "35538": msg37312, - "35539": msg37313, - "3554": msg6004, - "35540": msg37314, - "35541": msg37315, - "35542": msg37316, - "35543": msg37317, - "35544": msg37318, - "35545": msg37319, - "35546": msg37320, - "35547": msg37321, - "35548": msg37322, - "35549": msg37323, - "3555": msg6005, - "35550": msg37324, - "35551": msg37325, - "35552": msg37326, - "35553": msg37327, - "35554": msg37328, - "35555": msg37329, - "35556": msg37330, - "35557": msg37331, - "35558": msg37332, - "35559": msg37333, - "3556": msg6006, - "35560": msg37334, - "35561": msg37335, - "35562": msg37336, - "35563": msg37337, - "35564": msg37338, - "35565": msg37339, - "35566": msg37340, - "35567": msg37341, - "35568": msg37342, - "35569": msg37343, - "3557": msg6007, - "35570": msg37344, - "35571": msg37345, - "35572": msg37346, - "35573": msg37347, - "35574": msg37348, - "35575": msg37349, - "35576": msg37350, - "35577": msg37351, - "35578": msg37352, - "35579": msg37353, - "3558": msg6008, - "35580": msg37354, - "35581": msg37355, - "35582": msg37356, - "35583": msg37357, - "35584": msg37358, - "35585": msg37359, - "35586": msg37360, - "35587": msg37361, - "35588": msg37362, - "35589": msg37363, - "3559": msg6009, - "35590": msg37364, - "35591": msg37365, - "35592": msg37366, - "35593": msg37367, - "35594": msg37368, - "35595": msg37369, - "35596": msg37370, - "35597": msg37371, - "35598": msg37372, - "35599": msg37373, - "356": select278, - "3560": msg6010, - "35600": msg37374, - "35601": msg37375, - "35602": msg37376, - "35603": msg37377, - "35604": msg37378, - "35605": msg37379, - "35606": msg37380, - "35607": msg37381, - "35608": msg37382, - "35609": msg37383, - "3561": msg6011, - "35610": msg37384, - "35611": msg37385, - "35612": msg37386, - "35613": msg37387, - "35614": msg37388, - "35615": msg37389, - "35616": msg37390, - "35617": msg37391, - "35618": msg37392, - "35619": msg37393, - "3562": msg6012, - "35620": msg37394, - "35621": msg37395, - "35622": msg37396, - "35623": msg37397, - "35628": msg37398, - "35629": msg37399, - "3563": msg6013, - "35630": msg37400, - "35631": msg37401, - "35632": msg37402, - "35633": msg37403, - "35634": msg37404, - "35635": msg37405, - "35636": msg37406, - "35637": msg37407, - "35638": msg37408, - "35639": msg37409, - "3564": msg6014, - "35640": msg37410, - "35641": msg37411, - "35642": msg37412, - "35643": msg37413, - "35644": msg37414, - "35645": msg37415, - "35646": msg37416, - "35647": msg37417, - "35648": msg37418, - "35649": msg37419, - "3565": msg6015, - "35650": msg37420, - "35651": msg37421, - "35652": msg37422, - "35653": msg37423, - "35654": msg37424, - "35655": msg37425, - "35656": msg37426, - "35657": msg37427, - "35658": msg37428, - "35659": msg37429, - "3566": msg6016, - "35660": msg37430, - "35661": msg37431, - "35662": msg37432, - "35663": msg37433, - "35664": msg37434, - "35665": msg37435, - "35666": msg37436, - "35667": msg37437, - "35668": msg37438, - "35669": msg37439, - "3567": msg6017, - "35670": msg37440, - "35671": msg37441, - "35672": msg37442, - "35673": msg37443, - "35674": msg37444, - "35675": msg37445, - "35676": msg37446, - "35677": msg37447, - "35678": msg37448, - "35679": msg37449, - "3568": msg6018, - "35680": msg37450, - "35681": msg37451, - "35682": msg37452, - "35683": msg37453, - "35684": msg37454, - "35685": msg37455, - "35686": msg37456, - "35687": msg37457, - "3569": msg6019, - "35691": msg37458, - "35692": msg37459, - "35693": msg37460, - "35694": msg37461, - "35695": msg37462, - "35696": msg37463, - "35697": msg37464, - "35698": msg37465, - "35699": msg37466, - "357": select279, - "3570": msg6020, - "35700": msg37467, - "35701": msg37468, - "35702": msg37469, - "35703": msg37470, - "35704": msg37471, - "35705": msg37472, - "35706": msg37473, - "35707": msg37474, - "35708": msg37475, - "35709": msg37476, - "3571": msg6021, - "35710": msg37477, - "35719": msg37478, - "3572": msg6022, - "35720": msg37479, - "35723": msg37480, - "35724": msg37481, - "3573": msg6023, - "35731": msg37482, - "35732": msg37483, - "35733": msg37484, - "35734": msg37485, - "35735": msg37486, - "35736": msg37487, - "35737": msg37488, - "35738": msg37489, - "35739": msg37490, - "3574": msg6024, - "35740": msg37491, - "35741": msg37492, - "35742": msg37493, - "35743": msg37494, - "35744": msg37495, - "35745": msg37496, - "35746": msg37497, - "35747": msg37498, - "35748": msg37499, - "35749": msg37500, - "3575": msg6025, - "35750": msg37501, - "35751": msg37502, - "35752": msg37503, - "35753": msg37504, - "35754": msg37505, - "35755": msg37506, - "35756": msg37507, - "35757": msg37508, - "35758": msg37509, - "35759": msg37510, - "3576": msg6026, - "35760": msg37511, - "35761": msg37512, - "35762": msg37513, - "35763": msg37514, - "35764": msg37515, - "35765": msg37516, - "35766": msg37517, - "35767": msg37518, - "35768": msg37519, - "35769": msg37520, - "3577": msg6027, - "35770": msg37521, - "35771": msg37522, - "35772": msg37523, - "35779": msg37524, - "3578": msg6028, - "35780": msg37525, - "35781": msg37526, - "35782": msg37527, - "35783": msg37528, - "35784": msg37529, - "35785": msg37530, - "35786": msg37531, - "35787": msg37532, - "35788": msg37533, - "35789": msg37534, - "3579": msg6029, - "35790": msg37535, - "35791": msg37536, - "35792": msg37537, - "35793": msg37538, - "35794": msg37539, - "35795": msg37540, - "35796": msg37541, - "35797": msg37542, - "35798": msg37543, - "35799": msg37544, - "358": select280, - "3580": msg6030, - "35800": msg37545, - "35801": msg37546, - "35802": msg37547, - "35803": msg37548, - "35804": msg37549, - "35805": msg37550, - "35806": msg37551, - "35807": msg37552, - "35808": msg37553, - "35809": msg37554, - "3581": msg6031, - "35810": msg37555, - "35811": msg37556, - "35812": msg37557, - "35813": msg37558, - "35814": msg37559, - "35815": msg37560, - "35816": msg37561, - "35817": msg37562, - "35818": msg37563, - "35819": msg37564, - "3582": msg6032, - "35820": msg37565, - "35821": msg37566, - "35822": msg37567, - "35823": msg37568, - "35824": msg37569, - "35825": msg37570, - "35826": msg37571, - "35827": msg37572, - "3583": msg6033, - "35831": msg37573, - "35836": msg37574, - "35837": msg37575, - "35838": msg37576, - "35839": msg37577, - "3584": msg6034, - "35840": msg37578, - "35841": msg37579, - "35842": msg37580, - "35843": msg37581, - "35844": msg37582, - "35845": msg37583, - "35846": msg37584, - "35847": msg37585, - "35848": msg37586, - "35849": msg37587, - "3585": msg6035, - "35850": msg37588, - "35851": msg37589, - "35852": msg37590, - "35853": msg37591, - "35854": msg37592, - "35855": msg37593, - "35856": msg37594, - "35857": msg37595, - "35858": msg37596, - "35859": msg37597, - "3586": msg6036, - "35860": msg37598, - "35861": msg37599, - "35862": msg37600, - "35863": msg37601, - "35864": msg37602, - "35865": msg37603, - "35866": msg37604, - "35867": msg37605, - "35868": msg37606, - "35869": msg37607, - "3587": msg6037, - "35870": msg37608, - "35871": msg37609, - "35872": msg37610, - "35873": msg37611, - "35874": msg37612, - "35875": msg37613, - "35876": msg37614, - "35877": msg37615, - "35878": msg37616, - "35879": msg37617, - "3588": msg6038, - "35880": msg37618, - "35881": msg37619, - "35882": msg37620, - "35883": msg37621, - "35884": msg37622, - "35885": msg37623, - "35886": msg37624, - "35887": msg37625, - "35888": msg37626, - "35889": msg37627, - "3589": msg6039, - "35890": msg37628, - "35891": msg37629, - "35892": msg37630, - "35893": msg37631, - "35894": msg37632, - "35895": msg37633, - "35896": msg37634, - "35897": msg37635, - "35898": msg37636, - "35899": msg37637, - "359": select281, - "3590": msg6040, - "35900": msg37638, - "35901": msg37639, - "35902": msg37640, - "35903": msg37641, - "35904": msg37642, - "35905": msg37643, - "35906": msg37644, - "35907": msg37645, - "35908": msg37646, - "35909": msg37647, - "3591": msg6041, - "35910": msg37648, - "35911": msg37649, - "35912": msg37650, - "35913": msg37651, - "35914": msg37652, - "35915": msg37653, - "35916": msg37654, - "35917": msg37655, - "35918": msg37656, - "35919": msg37657, - "3592": msg6042, - "35920": msg37658, - "35921": msg37659, - "35922": msg37660, - "35923": msg37661, - "35924": msg37662, - "35925": msg37663, - "35926": msg37664, - "35927": msg37665, - "35928": msg37666, - "35929": msg37667, - "3593": msg6043, - "35930": msg37668, - "35931": msg37669, - "35932": msg37670, - "35933": msg37671, - "35934": msg37672, - "35935": msg37673, - "35936": msg37674, - "35937": msg37675, - "35938": msg37676, - "35939": msg37677, - "3594": msg6044, - "35940": msg37678, - "35941": msg37679, - "35942": msg37680, - "35943": msg37681, - "35944": msg37682, - "35945": msg37683, - "35946": msg37684, - "35947": msg37685, - "35948": msg37686, - "35949": msg37687, - "3595": msg6045, - "35950": msg37688, - "35951": msg37689, - "35952": msg37690, - "35953": msg37691, - "35954": msg37692, - "35955": msg37693, - "35956": msg37694, - "35957": msg37695, - "35958": msg37696, - "35959": msg37697, - "3596": msg6046, - "35960": msg37698, - "35961": msg37699, - "35962": msg37700, - "35963": msg37701, - "35964": msg37702, - "35965": msg37703, - "35966": msg37704, - "35967": msg37705, - "35968": msg37706, - "35969": msg37707, - "3597": msg6047, - "35970": msg37708, - "35971": msg37709, - "35972": msg37710, - "35973": msg37711, - "35974": msg37712, - "35975": msg37713, - "35976": msg37714, - "35977": msg37715, - "35978": msg37716, - "35979": msg37717, - "3598": msg6048, - "35980": msg37718, - "35981": msg37719, - "35982": msg37720, - "35983": msg37721, - "35984": msg37722, - "35985": msg37723, - "35986": msg37724, - "35987": msg37725, - "35988": msg37726, - "35989": msg37727, - "3599": msg6049, - "35990": msg37728, - "35991": msg37729, - "35992": msg37730, - "35993": msg37731, - "35994": msg37732, - "35995": msg37733, - "35996": msg37734, - "35997": msg37735, - "35998": msg37736, - "35999": msg37737, - "360": select282, - "3600": msg6050, - "36000": msg37738, - "36001": msg37739, - "36002": msg37740, - "36003": msg37741, - "36004": msg37742, - "36005": msg37743, - "36006": msg37744, - "36007": msg37745, - "36008": msg37746, - "36009": msg37747, - "3601": msg6051, - "36010": msg37748, - "36011": msg37749, - "36012": msg37750, - "36013": msg37751, - "36014": msg37752, - "36015": msg37753, - "36016": msg37754, - "36017": msg37755, - "36018": msg37756, - "36019": msg37757, - "3602": msg6052, - "36020": msg37758, - "36021": msg37759, - "36022": msg37760, - "36023": msg37761, - "36024": msg37762, - "36025": msg37763, - "36026": msg37764, - "36027": msg37765, - "36028": msg37766, - "36029": msg37767, - "3603": msg6053, - "36030": msg37768, - "36031": msg37769, - "36032": msg37770, - "36033": msg37771, - "36034": msg37772, - "36035": msg37773, - "36036": msg37774, - "36037": msg37775, - "36038": msg37776, - "36039": msg37777, - "3604": msg6054, - "36040": msg37778, - "36041": msg37779, - "36042": msg37780, - "36043": msg37781, - "36044": msg37782, - "36045": msg37783, - "36046": msg37784, - "36047": msg37785, - "36048": msg37786, - "36049": msg37787, - "3605": msg6055, - "36050": msg37788, - "36051": msg37789, - "36052": msg37790, - "36053": msg37791, - "36054": msg37792, - "36055": msg37793, - "36056": msg37794, - "36057": msg37795, - "36058": msg37796, - "36059": msg37797, - "3606": msg6056, - "36060": msg37798, - "36061": msg37799, - "36062": msg37800, - "36063": msg37801, - "36064": msg37802, - "36065": msg37803, - "36066": msg37804, - "36067": msg37805, - "36068": msg37806, - "36069": msg37807, - "3607": msg6057, - "36070": msg37808, - "36071": msg37809, - "36072": msg37810, - "36073": msg37811, - "36074": msg37812, - "36075": msg37813, - "36076": msg37814, - "36077": msg37815, - "36078": msg37816, - "36079": msg37817, - "3608": msg6058, - "36080": msg37818, - "36081": msg37819, - "36082": msg37820, - "36083": msg37821, - "36084": msg37822, - "36085": msg37823, - "36086": msg37824, - "36087": msg37825, - "36088": msg37826, - "36089": msg37827, - "3609": msg6059, - "36090": msg37828, - "36091": msg37829, - "36092": msg37830, - "36093": msg37831, - "36094": msg37832, - "36095": msg37833, - "36096": msg37834, - "36097": msg37835, - "36098": msg37836, - "36099": msg37837, - "361": select283, - "3610": msg6060, - "36100": msg37838, - "36101": msg37839, - "36102": msg37840, - "36103": msg37841, - "36104": msg37842, - "36105": msg37843, - "36106": msg37844, - "36107": msg37845, - "36108": msg37846, - "36109": msg37847, - "3611": msg6061, - "36110": msg37848, - "36111": msg37849, - "36112": msg37850, - "36113": msg37851, - "36114": msg37852, - "36115": msg37853, - "36116": msg37854, - "36117": msg37855, - "36118": msg37856, - "36119": msg37857, - "3612": msg6062, - "36120": msg37858, - "36121": msg37859, - "36122": msg37860, - "36123": msg37861, - "36124": msg37862, - "36125": msg37863, - "36126": msg37864, - "36127": msg37865, - "36128": msg37866, - "36129": msg37867, - "3613": msg6063, - "36130": msg37868, - "36131": msg37869, - "36132": msg37870, - "36133": msg37871, - "36134": msg37872, - "36135": msg37873, - "36136": msg37874, - "36137": msg37875, - "36138": msg37876, - "36139": msg37877, - "3614": msg6064, - "36140": msg37878, - "36141": msg37879, - "36142": msg37880, - "36143": msg37881, - "36144": msg37882, - "36145": msg37883, - "36146": msg37884, - "36147": msg37885, - "36148": msg37886, - "36149": msg37887, - "3615": msg6065, - "36150": msg37888, - "36151": msg37889, - "36152": msg37890, - "36153": msg37891, - "36154": msg37892, - "36155": msg37893, - "36156": msg37894, - "36157": msg37895, - "36158": msg37896, - "36159": msg37897, - "3616": msg6066, - "36160": msg37898, - "36161": msg37899, - "36162": msg37900, - "36163": msg37901, - "36164": msg37902, - "36165": msg37903, - "36166": msg37904, - "36167": msg37905, - "36168": msg37906, - "36169": msg37907, - "3617": msg6067, - "36170": msg37908, - "36171": msg37909, - "36172": msg37910, - "36173": msg37911, - "36174": msg37912, - "36175": msg37913, - "36176": msg37914, - "36177": msg37915, - "36178": msg37916, - "36179": msg37917, - "3618": msg6068, - "36180": msg37918, - "36181": msg37919, - "36182": msg37920, - "36183": msg37921, - "36184": msg37922, - "36185": msg37923, - "36186": msg37924, - "36187": msg37925, - "36188": msg37926, - "36189": msg37927, - "3619": msg6069, - "36190": msg37928, - "36191": msg37929, - "36192": msg37930, - "36193": msg37931, - "36194": msg37932, - "36195": msg37933, - "36196": msg37934, - "36197": msg37935, - "36198": msg37936, - "36199": msg37937, - "362": select284, - "3620": msg6070, - "36200": msg37938, - "36201": msg37939, - "36202": msg37940, - "36203": msg37941, - "36204": msg37942, - "36205": msg37943, - "36206": msg37944, - "36207": msg37945, - "36208": msg37946, - "36209": msg37947, - "3621": msg6071, - "3622": msg6072, - "36224": msg37948, - "3623": msg6073, - "36231": msg37949, - "36232": msg37950, - "36233": msg37951, - "36234": msg37952, - "36235": msg37953, - "36236": msg37954, - "36237": msg37955, - "36238": msg37956, - "36239": msg37957, - "3624": msg6074, - "36240": msg37958, - "36241": msg37959, - "36242": msg37960, - "36243": msg37961, - "36244": msg37962, - "36245": msg37963, - "36246": msg37964, - "36247": msg37965, - "36248": msg37966, - "36249": msg37967, - "3625": msg6075, - "36250": msg37968, - "36251": msg37969, - "36252": msg37970, - "36253": msg37971, - "36254": msg37972, - "36255": msg37973, - "36256": msg37974, - "36257": msg37975, - "36258": msg37976, - "36259": msg37977, - "3626": msg6076, - "36260": msg37978, - "36261": msg37979, - "36262": msg37980, - "36263": msg37981, - "36264": msg37982, - "36265": msg37983, - "36266": msg37984, - "36267": msg37985, - "36268": msg37986, - "36269": msg37987, - "3627": msg6077, - "36270": msg37988, - "36271": msg37989, - "36272": msg37990, - "36273": msg37991, - "36274": msg37992, - "36275": msg37993, - "36276": msg37994, - "36277": msg37995, - "36278": msg37996, - "36279": msg37997, - "3628": msg6078, - "36280": msg37998, - "36281": msg37999, - "36282": msg38000, - "36283": msg38001, - "36284": msg38002, - "36285": msg38003, - "36286": msg38004, - "36287": msg38005, - "36288": msg38006, - "36289": msg38007, - "3629": msg6079, - "36290": msg38008, - "36291": msg38009, - "36292": msg38010, - "36293": msg38011, - "36294": msg38012, - "36295": msg38013, - "36296": msg38014, - "36297": msg38015, - "36298": msg38016, - "36299": msg38017, - "363": select285, - "3630": msg6080, - "36300": msg38018, - "36301": msg38019, - "36302": msg38020, - "36303": msg38021, - "36304": msg38022, - "36305": msg38023, - "36306": msg38024, - "36307": msg38025, - "36308": msg38026, - "36309": msg38027, - "3631": msg6081, - "36310": msg38028, - "36311": msg38029, - "36312": msg38030, - "36313": msg38031, - "36314": msg38032, - "36315": msg38033, - "36316": msg38034, - "36317": msg38035, - "36318": msg38036, - "36319": msg38037, - "3632": msg6082, - "36320": msg38038, - "36321": msg38039, - "36322": msg38040, - "36323": msg38041, - "36324": msg38042, - "36325": msg38043, - "36326": msg38044, - "36327": msg38045, - "36328": msg38046, - "36329": msg38047, - "3633": msg6083, - "36330": msg38048, - "36331": msg38049, - "36332": msg38050, - "36333": msg38051, - "36334": msg38052, - "36335": msg38053, - "36336": msg38054, - "36337": msg38055, - "36338": msg38056, - "36339": msg38057, - "3634": msg6084, - "36340": msg38058, - "36341": msg38059, - "36342": msg38060, - "36343": msg38061, - "36344": msg38062, - "36345": msg38063, - "36346": msg38064, - "36347": msg38065, - "36348": msg38066, - "36349": msg38067, - "3635": msg6085, - "36350": msg38068, - "36351": msg38069, - "36352": msg38070, - "36353": msg38071, - "36354": msg38072, - "36355": msg38073, - "36356": msg38074, - "36357": msg38075, - "36358": msg38076, - "36359": msg38077, - "3636": msg6086, - "36360": msg38078, - "36361": msg38079, - "36362": msg38080, - "36363": msg38081, - "36364": msg38082, - "36365": msg38083, - "36366": msg38084, - "36367": msg38085, - "36368": msg38086, - "36369": msg38087, - "3637": msg6087, - "36370": msg38088, - "36371": msg38089, - "36372": msg38090, - "36373": msg38091, - "36374": msg38092, - "36375": msg38093, - "36376": msg38094, - "36377": msg38095, - "36378": msg38096, - "36379": msg38097, - "3638": msg6088, - "36380": msg38098, - "36381": msg38099, - "36382": msg38100, - "36383": msg38101, - "36384": msg38102, - "36389": msg38103, - "3639": msg6089, - "36390": msg38104, - "36391": msg38105, - "36392": msg38106, - "36393": msg38107, - "36394": msg38108, - "36395": msg38109, - "36396": msg38110, - "36397": msg38111, - "36398": msg38112, - "36399": msg38113, - "364": select286, - "3640": msg6090, - "36400": msg38114, - "36401": msg38115, - "36402": msg38116, - "36403": msg38117, - "36404": msg38118, - "36405": msg38119, - "36406": msg38120, - "36407": msg38121, - "36408": msg38122, - "36409": msg38123, - "3641": msg6091, - "36410": msg38124, - "36411": msg38125, - "36412": msg38126, - "36413": msg38127, - "36414": msg38128, - "36415": msg38129, - "36416": msg38130, - "36417": msg38131, - "36418": msg38132, - "36419": msg38133, - "3642": msg6092, - "36420": msg38134, - "36421": msg38135, - "36422": msg38136, - "36423": msg38137, - "36424": msg38138, - "36425": msg38139, - "36426": msg38140, - "36427": msg38141, - "36428": msg38142, - "36429": msg38143, - "3643": msg6093, - "36430": msg38144, - "36431": msg38145, - "36432": msg38146, - "36433": msg38147, - "36434": msg38148, - "36435": msg38149, - "36436": msg38150, - "36437": msg38151, - "36438": msg38152, - "36439": msg38153, - "3644": msg6094, - "36440": msg38154, - "36441": msg38155, - "36442": msg38156, - "36443": msg38157, - "36444": msg38158, - "36445": msg38159, - "36446": msg38160, - "36447": msg38161, - "36448": msg38162, - "36449": msg38163, - "3645": msg6095, - "36450": msg38164, - "36451": msg38165, - "36452": msg38166, - "36453": msg38167, - "36454": msg38168, - "36455": msg38169, - "36456": msg38170, - "36457": msg38171, - "36458": msg38172, - "36459": msg38173, - "3646": msg6096, - "36460": msg38174, - "36461": msg38175, - "36462": msg38176, - "36463": msg38177, - "36464": msg38178, - "36465": msg38179, - "36466": msg38180, - "36467": msg38181, - "36468": msg38182, - "36469": msg38183, - "3647": msg6097, - "36470": msg38184, - "36471": msg38185, - "36472": msg38186, - "36473": msg38187, - "36474": msg38188, - "36475": msg38189, - "36476": msg38190, - "36477": msg38191, - "36478": msg38192, - "36479": msg38193, - "3648": msg6098, - "36480": msg38194, - "36481": msg38195, - "36482": msg38196, - "36483": msg38197, - "36484": msg38198, - "36485": msg38199, - "36486": msg38200, - "36487": msg38201, - "36488": msg38202, - "36489": msg38203, - "3649": msg6099, - "36490": msg38204, - "36491": msg38205, - "36492": msg38206, - "36493": msg38207, - "36494": msg38208, - "36495": msg38209, - "36496": msg38210, - "36497": msg38211, - "36498": msg38212, - "36499": msg38213, - "365": select287, - "3650": msg6100, - "36500": msg38214, - "36501": msg38215, - "36502": msg38216, - "36503": msg38217, - "36504": msg38218, - "36505": msg38219, - "36506": msg38220, - "36507": msg38221, - "36508": msg38222, - "36509": msg38223, - "3651": msg6101, - "36510": msg38224, - "36511": msg38225, - "36512": msg38226, - "36513": msg38227, - "36514": msg38228, - "36515": msg38229, - "36516": msg38230, - "36517": msg38231, - "36518": msg38232, - "36519": msg38233, - "3652": msg6102, - "36520": msg38234, - "36521": msg38235, - "36522": msg38236, - "36523": msg38237, - "36524": msg38238, - "36525": msg38239, - "36526": msg38240, - "36527": msg38241, - "36528": msg38242, - "36529": msg38243, - "3653": msg6103, - "36530": msg38244, - "36531": msg38245, - "36532": msg38246, - "36533": msg38247, - "36534": msg38248, - "36535": msg38249, - "36536": msg38250, - "36537": msg38251, - "36538": msg38252, - "36539": msg38253, - "3654": msg6104, - "36540": msg38254, - "36541": msg38255, - "36542": msg38256, - "36543": msg38257, - "36544": msg38258, - "36545": msg38259, - "36546": msg38260, - "36547": msg38261, - "36548": msg38262, - "36549": msg38263, - "3655": msg6105, - "36550": msg38264, - "36551": msg38265, - "36552": msg38266, - "36553": msg38267, - "36554": msg38268, - "36555": msg38269, - "36556": msg38270, - "36557": msg38271, - "36558": msg38272, - "36559": msg38273, - "3656": msg6106, - "36560": msg38274, - "36561": msg38275, - "3657": msg6107, - "3658": msg6108, - "3659": msg6109, - "366": select288, - "3660": msg6110, - "3661": msg6111, - "3662": msg6112, - "3663": msg6113, - "3664": msg6114, - "3665": msg6115, - "3666": msg6116, - "3667": msg6117, - "3668": msg6118, - "3669": msg6119, - "3670": msg6120, - "3671": msg6121, - "3672": msg6122, - "3673": msg6123, - "3674": msg6124, - "3675": msg6125, - "3676": msg6126, - "3677": msg6127, - "3678": msg6128, - "3679": msg6129, - "368": select289, - "3680": msg6130, - "3681": msg6131, - "3682": msg6132, - "3683": msg6133, - "3684": msg6134, - "3685": msg6135, - "3686": msg6136, - "3687": msg6137, - "3688": msg6138, - "3689": msg6139, - "369": select290, - "3690": msg6140, - "3691": msg6141, - "3692": msg6142, - "3693": msg6143, - "3694": msg6144, - "3695": msg6145, - "3696": msg6146, - "3697": msg6147, - "3698": msg6148, - "3699": msg6149, - "370": select291, - "3700": msg6150, - "3701": msg6151, - "3702": msg6152, - "3703": msg6153, - "3704": msg6154, - "3705": msg6155, - "3706": msg6156, - "3707": msg6157, - "3708": msg6158, - "3709": msg6159, - "371": select292, - "3710": msg6160, - "3711": msg6161, - "3712": msg6162, - "3713": msg6163, - "3714": msg6164, - "3715": msg6165, - "3716": msg6166, - "3717": msg6167, - "3718": msg6168, - "3719": msg6169, - "372": select293, - "3720": msg6170, - "3721": msg6171, - "3722": msg6172, - "3723": msg6173, - "3724": msg6174, - "3725": msg6175, - "3726": msg6176, - "3727": msg6177, - "3728": msg6178, - "3729": msg6179, - "373": select294, - "3730": msg6180, - "3731": msg6181, - "3732": msg6182, - "3733": msg6183, - "3734": msg6184, - "3735": msg6185, - "3736": msg6186, - "3737": msg6187, - "3738": msg6188, - "3739": msg6189, - "374": select295, - "3740": msg6190, - "3741": msg6191, - "3742": msg6192, - "3743": msg6193, - "3744": msg6194, - "3745": msg6195, - "3746": msg6196, - "3747": msg6197, - "3748": msg6198, - "3749": msg6199, - "375": select296, - "3750": msg6200, - "3751": msg6201, - "3752": msg6202, - "3753": msg6203, - "3754": msg6204, - "3755": msg6205, - "3756": msg6206, - "3757": msg6207, - "3758": msg6208, - "3759": msg6209, - "376": select297, - "3760": msg6210, - "3761": msg6211, - "3762": msg6212, - "3763": msg6213, - "3764": msg6214, - "3765": msg6215, - "3766": msg6216, - "3767": msg6217, - "3768": msg6218, - "3769": msg6219, - "377": select298, - "3770": msg6220, - "3771": msg6221, - "3772": msg6222, - "3773": msg6223, - "3774": msg6224, - "3775": msg6225, - "3776": msg6226, - "3777": msg6227, - "3778": msg6228, - "3779": msg6229, - "378": select299, - "3780": msg6230, - "3781": msg6231, - "3782": msg6232, - "3783": msg6233, - "3784": msg6234, - "3785": msg6235, - "3786": msg6236, - "3787": msg6237, - "3788": msg6238, - "3789": msg6239, - "379": select300, - "3790": msg6240, - "3791": msg6241, - "3792": msg6242, - "3793": msg6243, - "3794": msg6244, - "3795": msg6245, - "3796": msg6246, - "3797": msg6247, - "3798": msg6248, - "3799": msg6249, - "380": select301, - "3800": msg6250, - "3801": msg6251, - "3802": msg6252, - "3803": msg6253, - "3804": msg6254, - "3805": msg6255, - "3806": msg6256, - "3807": msg6257, - "3808": msg6258, - "3809": msg6259, - "381": select302, - "3810": msg6260, - "3811": msg6261, - "3812": msg6262, - "3813": msg6263, - "3814": msg6264, - "3815": msg6265, - "3816": msg6266, - "3817": msg6267, - "3818": msg6268, - "3819": msg6269, - "382": select303, - "3820": msg6270, - "3821": msg6271, - "3822": msg6272, - "3823": msg6273, - "3824": msg6274, - "3825": msg6275, - "3826": msg6276, - "3827": msg6277, - "3828": msg6278, - "3829": msg6279, - "3830": msg6280, - "3831": msg6281, - "3832": msg6282, - "3833": msg6283, - "3834": msg6284, - "3835": msg6285, - "3836": msg6286, - "3837": msg6287, - "3838": msg6288, - "3839": msg6289, - "384": select304, - "3840": msg6290, - "3841": msg6291, - "3842": msg6292, - "3843": msg6293, - "3844": msg6294, - "3845": msg6295, - "3846": msg6296, - "3847": msg6297, - "3848": msg6298, - "3849": msg6299, - "385": select305, - "3850": msg6300, - "3851": msg6301, - "3852": msg6302, - "3853": msg6303, - "3854": msg6304, - "3855": msg6305, - "3856": msg6306, - "3857": msg6307, - "3858": msg6308, - "3859": msg6309, - "386": select306, - "3860": msg6310, - "3861": msg6311, - "3862": msg6312, - "3863": msg6313, - "3864": msg6314, - "3865": msg6315, - "3866": msg6316, - "3867": msg6317, - "3868": msg6318, - "3869": msg6319, - "387": select307, - "3870": msg6320, - "3871": msg6321, - "3872": msg6322, - "3873": msg6323, - "3874": msg6324, - "3875": msg6325, - "3876": msg6326, - "3877": msg6327, - "3878": msg6328, - "3879": msg6329, - "388": select308, - "3880": msg6330, - "3881": msg6331, - "3882": msg6332, - "3883": msg6333, - "3884": msg6334, - "3885": msg6335, - "3886": msg6336, - "3887": msg6337, - "3888": msg6338, - "3889": msg6339, - "389": select309, - "3890": msg6340, - "3891": msg6341, - "3892": msg6342, - "3893": msg6343, - "3894": msg6344, - "3895": msg6345, - "3896": msg6346, - "3897": msg6347, - "3898": msg6348, - "3899": msg6349, - "390": select310, - "3900": msg6350, - "3901": msg6351, - "3902": msg6352, - "3903": msg6353, - "3904": msg6354, - "3905": msg6355, - "3906": msg6356, - "3907": msg6357, - "3908": msg6358, - "3909": msg6359, - "391": select311, - "3910": msg6360, - "3911": msg6361, - "3912": msg6362, - "3913": msg6363, - "3914": msg6364, - "3915": msg6365, - "3916": msg6366, - "3917": msg6367, - "3918": msg6368, - "3919": msg6369, - "392": select312, - "3920": msg6370, - "3921": msg6371, - "3922": msg6372, - "3923": msg6373, - "3924": msg6374, - "3925": msg6375, - "3926": msg6376, - "3927": msg6377, - "3928": msg6378, - "3929": msg6379, - "393": select313, - "3930": msg6380, - "3931": msg6381, - "3932": msg6382, - "3933": msg6383, - "3934": msg6384, - "3935": msg6385, - "3936": msg6386, - "3937": msg6387, - "3938": msg6388, - "3939": msg6389, - "394": select314, - "3940": msg6390, - "3941": msg6391, - "3942": msg6392, - "3943": msg6393, - "3944": msg6394, - "3945": msg6395, - "3946": msg6396, - "3947": msg6397, - "3948": msg6398, - "3949": msg6399, - "395": select315, - "3950": msg6400, - "3951": msg6401, - "3952": msg6402, - "3953": msg6403, - "3954": msg6404, - "3955": msg6405, - "3956": msg6406, - "3957": msg6407, - "3958": msg6408, - "3959": msg6409, - "396": select316, - "3960": msg6410, - "3961": msg6411, - "3962": msg6412, - "3963": msg6413, - "3964": msg6414, - "3965": msg6415, - "3966": msg6416, - "3967": msg6417, - "3968": msg6418, - "3969": msg6419, - "397": select317, - "3970": msg6420, - "3971": msg6421, - "3972": msg6422, - "3973": msg6423, - "3974": msg6424, - "3975": msg6425, - "3976": msg6426, - "3977": msg6427, - "3978": msg6428, - "3979": msg6429, - "398": select318, - "3980": msg6430, - "3981": msg6431, - "3982": msg6432, - "3983": msg6433, - "3984": msg6434, - "3985": msg6435, - "3986": msg6436, - "3987": msg6437, - "3988": msg6438, - "3989": msg6439, - "399": select319, - "3990": msg6440, - "3991": msg6441, - "3992": msg6442, - "3993": msg6443, - "3994": msg6444, - "3995": msg6445, - "3996": msg6446, - "3997": msg6447, - "3998": msg6448, - "3999": msg6449, - "4": select10, - "400": select320, - "4000": msg6450, - "4001": msg6451, - "4002": msg6452, - "4003": msg6453, - "4004": msg6454, - "4005": msg6455, - "4006": msg6456, - "4007": msg6457, - "4008": msg6458, - "4009": msg6459, - "401": select321, - "4010": msg6460, - "4011": msg6461, - "4012": msg6462, - "4013": msg6463, - "4014": msg6464, - "4015": msg6465, - "4016": msg6466, - "4017": msg6467, - "4018": msg6468, - "4019": msg6469, - "402": select322, - "4020": msg6470, - "4021": msg6471, - "4022": msg6472, - "4023": msg6473, - "4024": msg6474, - "4025": msg6475, - "4026": msg6476, - "4027": msg6477, - "4028": msg6478, - "4029": msg6479, - "403": select323, - "4030": msg6480, - "4031": msg6481, - "4032": msg6482, - "4033": msg6483, - "4034": msg6484, - "4035": msg6485, - "4036": msg6486, - "4037": msg6487, - "4038": msg6488, - "4039": msg6489, - "404": select324, - "4040": msg6490, - "4041": msg6491, - "4042": msg6492, - "4043": msg6493, - "4044": msg6494, - "4045": msg6495, - "4046": msg6496, - "4047": msg6497, - "4048": msg6498, - "4049": msg6499, - "405": select325, - "4050": msg6500, - "4051": msg6501, - "4052": msg6502, - "4053": msg6503, - "4054": msg6504, - "4055": msg6505, - "4056": msg6506, - "4057": msg6507, - "4058": msg6508, - "4059": msg6509, - "406": select326, - "4060": msg6510, - "4061": msg6511, - "4062": msg6512, - "4063": msg6513, - "4064": msg6514, - "4065": msg6515, - "4066": msg6516, - "4067": msg6517, - "4068": msg6518, - "4069": msg6519, - "407": select327, - "4070": msg6520, - "4071": msg6521, - "4072": msg6522, - "4073": msg6523, - "4074": msg6524, - "4075": msg6525, - "4076": msg6526, - "4077": msg6527, - "4078": msg6528, - "4079": msg6529, - "408": select328, - "4080": msg6530, - "4081": msg6531, - "4082": msg6532, - "4083": msg6533, - "4084": msg6534, - "4085": msg6535, - "4086": msg6536, - "4087": msg6537, - "4088": msg6538, - "4089": msg6539, - "409": select329, - "4090": msg6540, - "4091": msg6541, - "4092": msg6542, - "4093": msg6543, - "4094": msg6544, - "4095": msg6545, - "4096": msg6546, - "4097": msg6547, - "4098": msg6548, - "4099": msg6549, - "410": select330, - "4100": msg6550, - "4101": msg6551, - "4102": msg6552, - "4103": msg6553, - "4104": msg6554, - "4105": msg6555, - "4106": msg6556, - "4107": msg6557, - "4108": msg6558, - "4109": msg6559, - "411": select331, - "4110": msg6560, - "4111": msg6561, - "4112": msg6562, - "4113": msg6563, - "4114": msg6564, - "4115": msg6565, - "4116": msg6566, - "4117": msg6567, - "4118": msg6568, - "4119": msg6569, - "412": select332, - "4120": msg6570, - "4121": msg6571, - "4122": msg6572, - "4123": msg6573, - "4124": msg6574, - "4125": msg6575, - "4126": msg6576, - "4127": msg6577, - "4128": msg6578, - "4129": msg6579, - "413": select333, - "4130": msg6580, - "4131": msg6581, - "4132": msg6582, - "4133": msg6583, - "4134": msg6584, - "4135": msg6585, - "4136": msg6586, - "414": select334, - "4140": msg6587, - "4141": msg6588, - "4142": msg6589, - "4143": msg6590, - "4144": msg6591, - "4145": msg6592, - "4146": msg6593, - "4147": msg6594, - "4148": msg6595, - "4149": msg6596, - "415": select335, - "4150": msg6597, - "4151": msg6598, - "4152": msg6599, - "4153": msg6600, - "4154": msg6601, - "4155": msg6602, - "4156": msg6603, - "4157": msg6604, - "4158": msg6605, - "4159": msg6606, - "416": select336, - "4160": msg6607, - "4161": msg6608, - "4162": msg6609, - "4163": msg6610, - "4164": msg6611, - "4165": msg6612, - "4166": msg6613, - "4167": msg6614, - "4168": msg6615, - "4169": msg6616, - "417": select337, - "4170": msg6617, - "4171": msg6618, - "4172": msg6619, - "4173": msg6620, - "4174": msg6621, - "4175": msg6622, - "4176": msg6623, - "4177": msg6624, - "4178": msg6625, - "4179": msg6626, - "418": select338, - "4180": msg6627, - "4181": msg6628, - "4182": msg6629, - "4183": msg6630, - "4184": msg6631, - "4185": msg6632, - "4186": msg6633, - "4187": msg6634, - "4188": msg6635, - "4189": msg6636, - "419": select339, - "4190": msg6637, - "4191": msg6638, - "4192": msg6639, - "4193": msg6640, - "4194": msg6641, - "4195": msg6642, - "4196": msg6643, - "4197": msg6644, - "4198": msg6645, - "4199": msg6646, - "420": select340, - "4200": msg6647, - "4201": msg6648, - "4202": msg6649, - "4203": msg6650, - "4204": msg6651, - "4205": msg6652, - "4206": msg6653, - "4207": msg6654, - "4208": msg6655, - "4209": msg6656, - "421": select341, - "4210": msg6657, - "4211": msg6658, - "4212": msg6659, - "4213": msg6660, - "4214": msg6661, - "4215": msg6662, - "4216": msg6663, - "4217": msg6664, - "4218": msg6665, - "4219": msg6666, - "422": select342, - "4220": msg6667, - "4221": msg6668, - "4222": msg6669, - "4223": msg6670, - "4224": msg6671, - "4225": msg6672, - "4226": msg6673, - "4227": msg6674, - "4228": msg6675, - "4229": msg6676, - "423": select343, - "4230": msg6677, - "4231": msg6678, - "4232": msg6679, - "4233": msg6680, - "4234": msg6681, - "4235": msg6682, - "4236": msg6683, - "4237": msg6684, - "4238": msg6685, - "4239": msg6686, - "424": select344, - "4240": msg6687, - "4241": msg6688, - "4242": msg6689, - "4243": msg6690, - "4244": msg6691, - "4245": msg6692, - "4246": msg6693, - "4247": msg6694, - "4248": msg6695, - "4249": msg6696, - "425": select345, - "4250": msg6697, - "4251": msg6698, - "4252": msg6699, - "4253": msg6700, - "4254": msg6701, - "4255": msg6702, - "4256": msg6703, - "4257": msg6704, - "4258": msg6705, - "4259": msg6706, - "426": select346, - "4260": msg6707, - "4261": msg6708, - "4262": msg6709, - "4263": msg6710, - "4264": msg6711, - "4265": msg6712, - "4266": msg6713, - "4267": msg6714, - "4268": msg6715, - "4269": msg6716, - "427": select347, - "4270": msg6717, - "4271": msg6718, - "4272": msg6719, - "4273": msg6720, - "4274": msg6721, - "4275": msg6722, - "4276": msg6723, - "4277": msg6724, - "4278": msg6725, - "4279": msg6726, - "428": select348, - "4280": msg6727, - "4281": msg6728, - "4282": msg6729, - "4283": msg6730, - "4284": msg6731, - "4285": msg6732, - "4286": msg6733, - "4287": msg6734, - "4288": msg6735, - "4289": msg6736, - "429": select349, - "4290": msg6737, - "4291": msg6738, - "4292": msg6739, - "4293": msg6740, - "4294": msg6741, - "4295": msg6742, - "4296": msg6743, - "4297": msg6744, - "4298": msg6745, - "4299": msg6746, - "430": select350, - "4300": msg6747, - "4301": msg6748, - "4302": msg6749, - "4303": msg6750, - "4304": msg6751, - "4305": msg6752, - "4306": msg6753, - "4307": msg6754, - "4308": msg6755, - "4309": msg6756, - "431": select351, - "4310": msg6757, - "4311": msg6758, - "4312": msg6759, - "4313": msg6760, - "4314": msg6761, - "4315": msg6762, - "4316": msg6763, - "4317": msg6764, - "4318": msg6765, - "4319": msg6766, - "432": select352, - "4320": msg6767, - "4321": msg6768, - "4322": msg6769, - "4323": msg6770, - "4324": msg6771, - "4325": msg6772, - "4326": msg6773, - "4327": msg6774, - "4328": msg6775, - "4329": msg6776, - "433": select353, - "4330": msg6777, - "4331": msg6778, - "4332": msg6779, - "4333": msg6780, - "4334": msg6781, - "4335": msg6782, - "4336": msg6783, - "4337": msg6784, - "4338": msg6785, - "4339": msg6786, - "4340": msg6787, - "4341": msg6788, - "4342": msg6789, - "4343": msg6790, - "4344": msg6791, - "4345": msg6792, - "4346": msg6793, - "4347": msg6794, - "4348": msg6795, - "4349": msg6796, - "4350": msg6797, - "4351": msg6798, - "4352": msg6799, - "4353": msg6800, - "4354": msg6801, - "4355": msg6802, - "4356": msg6803, - "4357": msg6804, - "4358": msg6805, - "4359": msg6806, - "436": select354, - "4360": msg6807, - "4361": msg6808, - "4362": msg6809, - "4363": msg6810, - "4364": msg6811, - "4365": msg6812, - "4366": msg6813, - "4367": msg6814, - "4368": msg6815, - "4369": msg6816, - "437": select355, - "4370": msg6817, - "4371": msg6818, - "4372": msg6819, - "4373": msg6820, - "4374": msg6821, - "4375": msg6822, - "4376": msg6823, - "4377": msg6824, - "4378": msg6825, - "4379": msg6826, - "438": select356, - "4380": msg6827, - "4381": msg6828, - "4382": msg6829, - "4383": msg6830, - "4384": msg6831, - "4385": msg6832, - "4386": msg6833, - "4387": msg6834, - "4388": msg6835, - "4389": msg6836, - "439": select357, - "4390": msg6837, - "4391": msg6838, - "4392": msg6839, - "4393": msg6840, - "4394": msg6841, - "4395": msg6842, - "4396": msg6843, - "4397": msg6844, - "4398": msg6845, - "4399": msg6846, - "440": select358, - "4400": msg6847, - "4401": msg6848, - "4402": msg6849, - "4403": msg6850, - "4404": msg6851, - "4405": msg6852, - "4406": msg6853, - "4407": msg6854, - "4408": msg6855, - "4409": msg6856, - "441": select359, - "4410": msg6857, - "4411": msg6858, - "4412": msg6859, - "4413": msg6860, - "4414": msg6861, - "4415": msg6862, - "4416": msg6863, - "4417": msg6864, - "4418": msg6865, - "4419": msg6866, - "4420": msg6867, - "4421": msg6868, - "4422": msg6869, - "4423": msg6870, - "4424": msg6871, - "4425": msg6872, - "4426": msg6873, - "4427": msg6874, - "4428": msg6875, - "4429": msg6876, - "443": select360, - "4430": msg6877, - "4431": msg6878, - "4432": msg6879, - "4433": msg6880, - "4434": msg6881, - "4435": msg6882, - "4436": msg6883, - "4437": msg6884, - "4438": msg6885, - "4439": msg6886, - "4440": msg6887, - "4441": msg6888, - "4442": msg6889, - "4443": msg6890, - "4444": msg6891, - "4445": msg6892, - "4446": msg6893, - "4447": msg6894, - "4448": msg6895, - "4449": msg6896, - "445": select361, - "4450": msg6897, - "4451": msg6898, - "4452": msg6899, - "4453": msg6900, - "4454": msg6901, - "4455": msg6902, - "4456": msg6903, - "4457": msg6904, - "4458": msg6905, - "4459": msg6906, - "446": select362, - "4460": msg6907, - "4461": msg6908, - "4462": msg6909, - "4463": msg6910, - "4464": msg6911, - "4465": msg6912, - "4466": msg6913, - "4467": msg6914, - "4468": msg6915, - "4469": msg6916, - "4470": msg6917, - "4471": msg6918, - "4472": msg6919, - "4473": msg6920, - "4474": msg6921, - "4475": msg6922, - "4476": msg6923, - "4477": msg6924, - "4478": msg6925, - "4479": msg6926, - "448": select363, - "4480": msg6927, - "4481": msg6928, - "4482": msg6929, - "4483": msg6930, - "4484": msg6931, - "4485": msg6932, - "4486": msg6933, - "4487": msg6934, - "4488": msg6935, - "4489": msg6936, - "449": select364, - "4490": msg6937, - "4491": msg6938, - "4492": msg6939, - "4493": msg6940, - "4494": msg6941, - "4495": msg6942, - "4496": msg6943, - "4497": msg6944, - "4498": msg6945, - "4499": msg6946, - "45": msg66, - "450": select365, - "4500": msg6947, - "4501": msg6948, - "4502": msg6949, - "4503": msg6950, - "4504": msg6951, - "4505": msg6952, - "4506": msg6953, - "4507": msg6954, - "4508": msg6955, - "4509": msg6956, - "451": select366, - "4510": msg6957, - "4511": msg6958, - "4512": msg6959, - "4513": msg6960, - "4514": msg6961, - "4515": msg6962, - "4516": msg6963, - "4517": msg6964, - "4518": msg6965, - "4519": msg6966, - "452": select367, - "4520": msg6967, - "4521": msg6968, - "4522": msg6969, - "4523": msg6970, - "4524": msg6971, - "4525": msg6972, - "4526": msg6973, - "4527": msg6974, - "4528": msg6975, - "4529": msg6976, - "453": select368, - "4530": msg6977, - "4531": msg6978, - "4532": msg6979, - "4533": msg6980, - "4534": msg6981, - "4535": msg6982, - "4536": msg6983, - "4537": msg6984, - "4538": msg6985, - "4539": msg6986, - "454": select369, - "4540": msg6987, - "4541": msg6988, - "4542": msg6989, - "4543": msg6990, - "4544": msg6991, - "4545": msg6992, - "4546": msg6993, - "4547": msg6994, - "4548": msg6995, - "4549": msg6996, - "455": select370, - "4550": msg6997, - "4551": msg6998, - "4552": msg6999, - "4553": msg7000, - "4554": msg7001, - "4555": msg7002, - "4556": msg7003, - "4557": msg7004, - "4558": msg7005, - "4559": msg7006, - "456": select371, - "4560": msg7007, - "4561": msg7008, - "4562": msg7009, - "4563": msg7010, - "4564": msg7011, - "4565": msg7012, - "4566": msg7013, - "4567": msg7014, - "4568": msg7015, - "4569": msg7016, - "457": select372, - "4570": msg7017, - "4571": msg7018, - "4572": msg7019, - "4573": msg7020, - "4574": msg7021, - "4575": msg7022, - "4576": msg7023, - "4577": msg7024, - "4578": msg7025, - "4579": msg7026, - "458": select373, - "4580": msg7027, - "4581": msg7028, - "4582": msg7029, - "4583": msg7030, - "4584": msg7031, - "4585": msg7032, - "4586": msg7033, - "4587": msg7034, - "4588": msg7035, - "4589": msg7036, - "459": select374, - "4590": msg7037, - "4591": msg7038, - "4592": msg7039, - "4593": msg7040, - "4594": msg7041, - "4595": msg7042, - "4596": msg7043, - "4597": msg7044, - "4598": msg7045, - "4599": msg7046, - "46": select25, - "460": select375, - "4600": msg7047, - "4601": msg7048, - "4602": msg7049, - "4603": msg7050, - "4604": msg7051, - "4605": msg7052, - "4606": msg7053, - "4607": msg7054, - "4608": msg7055, - "4609": msg7056, - "461": select376, - "4610": msg7057, - "4611": msg7058, - "4612": msg7059, - "4613": msg7060, - "4614": msg7061, - "4615": msg7062, - "4616": msg7063, - "4617": msg7064, - "4618": msg7065, - "4619": msg7066, - "462": select377, - "4620": msg7067, - "4621": msg7068, - "4622": msg7069, - "4623": msg7070, - "4624": msg7071, - "4625": msg7072, - "4626": msg7073, - "4627": msg7074, - "4628": msg7075, - "4629": msg7076, - "463": select378, - "4630": msg7077, - "4631": msg7078, - "4632": msg7079, - "4633": msg7080, - "4634": msg7081, - "4635": msg7082, - "4636": msg7083, - "4637": msg7084, - "4638": msg7085, - "4639": msg7086, - "4640": msg7087, - "4641": msg7088, - "4642": msg7089, - "4643": msg7090, - "4644": msg7091, - "4645": msg7092, - "4646": msg7093, - "4647": msg7094, - "4648": msg7095, - "4649": msg7096, - "465": select379, - "4650": msg7097, - "4651": msg7098, - "4652": msg7099, - "4653": msg7100, - "4654": msg7101, - "4655": msg7102, - "4656": msg7103, - "4657": msg7104, - "4658": msg7105, - "4659": msg7106, - "466": select380, - "4660": msg7107, - "4661": msg7108, - "4662": msg7109, - "4663": msg7110, - "4664": msg7111, - "4665": msg7112, - "4666": msg7113, - "4667": msg7114, - "4668": msg7115, - "4669": msg7116, - "467": select381, - "4670": msg7117, - "4671": msg7118, - "4672": msg7119, - "4673": msg7120, - "4674": msg7121, - "4675": msg7122, - "4676": msg7123, - "4677": msg7124, - "4678": msg7125, - "4679": msg7126, - "4680": msg7127, - "4681": msg7128, - "4682": msg7129, - "4683": msg7130, - "4684": msg7131, - "4685": msg7132, - "4686": msg7133, - "4687": msg7134, - "4688": msg7135, - "4689": msg7136, - "469": select382, - "4690": msg7137, - "4691": msg7138, - "4692": msg7139, - "4693": msg7140, - "4694": msg7141, - "4695": msg7142, - "4696": msg7143, - "4697": msg7144, - "4698": msg7145, - "4699": msg7146, - "47": select26, - "4700": msg7147, - "4701": msg7148, - "4702": msg7149, - "4703": msg7150, - "4704": msg7151, - "4705": msg7152, - "4706": msg7153, - "4707": msg7154, - "4708": msg7155, - "4709": msg7156, - "471": select383, - "4710": msg7157, - "4711": msg7158, - "4712": msg7159, - "4713": msg7160, - "4714": msg7161, - "4715": msg7162, - "4716": msg7163, - "4717": msg7164, - "4718": msg7165, - "4719": msg7166, - "472": select384, - "4720": msg7167, - "4721": msg7168, - "4722": msg7169, - "4723": msg7170, - "4724": msg7171, - "4725": msg7172, - "4726": msg7173, - "4727": msg7174, - "4728": msg7175, - "4729": msg7176, - "473": select385, - "4730": msg7177, - "4731": msg7178, - "4732": msg7179, - "4733": msg7180, - "4734": msg7181, - "4735": msg7182, - "4736": msg7183, - "4737": msg7184, - "4738": msg7185, - "4739": msg7186, - "474": select386, - "4740": msg7187, - "4741": msg7188, - "4742": msg7189, - "4743": msg7190, - "4744": msg7191, - "4745": msg7192, - "4746": msg7193, - "4747": msg7194, - "4748": msg7195, - "4749": msg7196, - "475": select387, - "4750": msg7197, - "4751": msg7198, - "4752": msg7199, - "4753": msg7200, - "4754": msg7201, - "4755": msg7202, - "4756": msg7203, - "4757": msg7204, - "4758": msg7205, - "4759": msg7206, - "476": select388, - "4760": msg7207, - "4761": msg7208, - "4762": msg7209, - "4763": msg7210, - "4764": msg7211, - "4765": msg7212, - "4766": msg7213, - "4767": msg7214, - "4768": msg7215, - "4769": msg7216, - "477": select389, - "4770": msg7217, - "4771": msg7218, - "4772": msg7219, - "4773": msg7220, - "4774": msg7221, - "4775": msg7222, - "4776": msg7223, - "4777": msg7224, - "4778": msg7225, - "4779": msg7226, - "478": select390, - "4780": msg7227, - "4781": msg7228, - "4782": msg7229, - "4783": msg7230, - "4784": msg7231, - "4785": msg7232, - "4786": msg7233, - "4787": msg7234, - "4788": msg7235, - "4789": msg7236, - "4790": msg7237, - "4791": msg7238, - "4792": msg7239, - "4793": msg7240, - "4794": msg7241, - "4795": msg7242, - "4796": msg7243, - "4797": msg7244, - "4798": msg7245, - "4799": msg7246, - "480": select391, - "4800": msg7247, - "4801": msg7248, - "4802": msg7249, - "4803": msg7250, - "4804": msg7251, - "4805": msg7252, - "4806": msg7253, - "4807": msg7254, - "4808": msg7255, - "4809": msg7256, - "481": select392, - "4810": msg7257, - "4811": msg7258, - "4812": msg7259, - "4813": msg7260, - "4814": msg7261, - "4815": msg7262, - "4816": msg7263, - "4817": msg7264, - "4818": msg7265, - "4819": msg7266, - "482": select393, - "4820": msg7267, - "4821": msg7268, - "4822": msg7269, - "4823": msg7270, - "4824": msg7271, - "4825": msg7272, - "4826": msg7273, - "4827": msg7274, - "4828": msg7275, - "4829": msg7276, - "483": select394, - "4830": msg7277, - "4831": msg7278, - "4832": msg7279, - "4833": msg7280, - "4834": msg7281, - "4835": msg7282, - "4836": msg7283, - "4837": msg7284, - "4838": msg7285, - "4839": msg7286, - "484": select395, - "4840": msg7287, - "4841": msg7288, - "4842": msg7289, - "4843": msg7290, - "4844": msg7291, - "4845": msg7292, - "4846": msg7293, - "4847": msg7294, - "4848": msg7295, - "4849": msg7296, - "485": select396, - "4850": msg7297, - "4851": msg7298, - "4852": msg7299, - "4853": msg7300, - "4854": msg7301, - "4855": msg7302, - "4856": msg7303, - "4857": msg7304, - "4858": msg7305, - "4859": msg7306, - "486": select397, - "4860": msg7307, - "4861": msg7308, - "4862": msg7309, - "4863": msg7310, - "4864": msg7311, - "4865": msg7312, - "4866": msg7313, - "4867": msg7314, - "4868": msg7315, - "4869": msg7316, - "487": select398, - "4870": msg7317, - "4871": msg7318, - "4872": msg7319, - "4873": msg7320, - "4874": msg7321, - "4875": msg7322, - "4876": msg7323, - "4877": msg7324, - "4878": msg7325, - "4879": msg7326, - "488": select399, - "4880": msg7327, - "4881": msg7328, - "4882": msg7329, - "4883": msg7330, - "4884": msg7331, - "4885": msg7332, - "4886": msg7333, - "4887": msg7334, - "4888": msg7335, - "4889": msg7336, - "489": select400, - "4890": msg7337, - "4891": msg7338, - "4892": msg7339, - "4893": msg7340, - "4894": msg7341, - "4895": msg7342, - "4896": msg7343, - "4897": msg7344, - "4898": msg7345, - "4899": msg7346, - "490": select401, - "4900": msg7347, - "4901": msg7348, - "4902": msg7349, - "4903": msg7350, - "4904": msg7351, - "4905": msg7352, - "4906": msg7353, - "4907": msg7354, - "4908": msg7355, - "4909": msg7356, - "491": msg923, - "4910": msg7357, - "4911": msg7358, - "4912": msg7359, - "4913": msg7360, - "4914": msg7361, - "4915": msg7362, - "4916": msg7363, - "4917": msg7364, - "4918": msg7365, - "4919": msg7366, - "492": select402, - "4920": msg7367, - "4921": msg7368, - "4922": msg7369, - "4923": msg7370, - "4924": msg7371, - "4925": msg7372, - "4926": msg7373, - "4927": msg7374, - "4928": msg7375, - "4929": msg7376, - "493": select403, - "4930": msg7377, - "4931": msg7378, - "4932": msg7379, - "4933": msg7380, - "4934": msg7381, - "4935": msg7382, - "4936": msg7383, - "4937": msg7384, - "4938": msg7385, - "4939": msg7386, - "494": select404, - "4940": msg7387, - "4941": msg7388, - "4942": msg7389, - "4943": msg7390, - "4944": msg7391, - "4945": msg7392, - "4946": msg7393, - "4947": msg7394, - "4948": msg7395, - "4949": msg7396, - "495": select405, - "4950": msg7397, - "4951": msg7398, - "4952": msg7399, - "4953": msg7400, - "4954": msg7401, - "4955": msg7402, - "4956": msg7403, - "4957": msg7404, - "4958": msg7405, - "4959": msg7406, - "496": select406, - "4960": msg7407, - "4961": msg7408, - "4962": msg7409, - "4963": msg7410, - "4964": msg7411, - "4965": msg7412, - "4966": msg7413, - "4967": msg7414, - "4968": msg7415, - "4969": msg7416, - "497": select407, - "4970": msg7417, - "4971": msg7418, - "4972": msg7419, - "4973": msg7420, - "4974": msg7421, - "4975": msg7422, - "4976": msg7423, - "4977": msg7424, - "4978": msg7425, - "4979": msg7426, - "498": select408, - "4980": msg7427, - "4981": msg7428, - "4982": msg7429, - "4983": msg7430, - "4984": msg7431, - "4985": msg7432, - "4986": msg7433, - "4987": msg7434, - "4988": msg7435, - "4989": msg7436, - "499": select409, - "4990": msg7437, - "4991": msg7438, - "4992": msg7439, - "4993": msg7440, - "4994": msg7441, - "4995": msg7442, - "4996": msg7443, - "4997": msg7444, - "4998": msg7445, - "4999": msg7446, - "5": msg26, - "500": select410, - "5000": msg7447, - "5001": msg7448, - "5002": msg7449, - "5003": msg7450, - "5004": msg7451, - "5005": msg7452, - "5006": msg7453, - "5007": msg7454, - "5008": msg7455, - "5009": msg7456, - "501": select411, - "5010": msg7457, - "5011": msg7458, - "5012": msg7459, - "5013": msg7460, - "5014": msg7461, - "5015": msg7462, - "5016": msg7463, - "5017": msg7464, - "5018": msg7465, - "5019": msg7466, - "502": select412, - "5020": msg7467, - "5021": msg7468, - "5022": msg7469, - "5023": msg7470, - "5024": msg7471, - "5025": msg7472, - "5026": msg7473, - "5027": msg7474, - "5028": msg7475, - "5029": msg7476, - "503": select413, - "5030": msg7477, - "5031": msg7478, - "5032": msg7479, - "5033": msg7480, - "5034": msg7481, - "5035": msg7482, - "5036": msg7483, - "5037": msg7484, - "5038": msg7485, - "5039": msg7486, - "504": select414, - "5040": msg7487, - "5041": msg7488, - "5042": msg7489, - "5043": msg7490, - "5044": msg7491, - "5045": msg7492, - "5046": msg7493, - "5047": msg7494, - "5048": msg7495, - "5049": msg7496, - "505": select415, - "5050": msg7497, - "5051": msg7498, - "5052": msg7499, - "5053": msg7500, - "5054": msg7501, - "5055": msg7502, - "5056": msg7503, - "5057": msg7504, - "5058": msg7505, - "5059": msg7506, - "506": select416, - "5060": msg7507, - "5061": msg7508, - "5062": msg7509, - "5063": msg7510, - "5064": msg7511, - "5065": msg7512, - "5066": msg7513, - "5067": msg7514, - "5068": msg7515, - "5069": msg7516, - "507": select417, - "5070": msg7517, - "5071": msg7518, - "5072": msg7519, - "5073": msg7520, - "5074": msg7521, - "5075": msg7522, - "5076": msg7523, - "5077": msg7524, - "5078": msg7525, - "5079": msg7526, - "508": select418, - "5080": msg7527, - "5081": msg7528, - "5082": msg7529, - "5083": msg7530, - "5084": msg7531, - "5085": msg7532, - "5086": msg7533, - "5087": msg7534, - "5088": msg7535, - "5089": msg7536, - "509": select419, - "5090": msg7537, - "5091": msg7538, - "5092": msg7539, - "5093": msg7540, - "5094": msg7541, - "5095": msg7542, - "5096": msg7543, - "5097": msg7544, - "5098": msg7545, - "5099": msg7546, - "510": select420, - "5100": msg7547, - "5101": msg7548, - "5102": msg7549, - "5103": msg7550, - "5104": msg7551, - "5105": msg7552, - "5106": msg7553, - "5107": msg7554, - "5108": msg7555, - "5109": msg7556, - "511": select421, - "5110": msg7557, - "5111": msg7558, - "5112": msg7559, - "5113": msg7560, - "5114": msg7561, - "5115": msg7562, - "5116": msg7563, - "5117": msg7564, - "5118": msg7565, - "5119": msg7566, - "512": select422, - "5120": msg7567, - "5121": msg7568, - "5122": msg7569, - "5123": msg7570, - "5124": msg7571, - "5125": msg7572, - "5126": msg7573, - "5127": msg7574, - "5128": msg7575, - "5129": msg7576, - "513": select423, - "5130": msg7577, - "5131": msg7578, - "5132": msg7579, - "5133": msg7580, - "5134": msg7581, - "5135": msg7582, - "5136": msg7583, - "5137": msg7584, - "5138": msg7585, - "5139": msg7586, - "514": select424, - "5140": msg7587, - "5141": msg7588, - "5142": msg7589, - "5143": msg7590, - "5144": msg7591, - "5145": msg7592, - "5146": msg7593, - "5147": msg7594, - "5148": msg7595, - "5149": msg7596, - "5150": msg7597, - "5151": msg7598, - "5152": msg7599, - "5153": msg7600, - "5154": msg7601, - "5155": msg7602, - "5156": msg7603, - "5157": msg7604, - "5158": msg7605, - "5159": msg7606, - "516": select425, - "5160": msg7607, - "5161": msg7608, - "5162": msg7609, - "5163": msg7610, - "5164": msg7611, - "5165": msg7612, - "5166": msg7613, - "5167": msg7614, - "5168": msg7615, - "5169": msg7616, - "517": select426, - "5170": msg7617, - "5171": msg7618, - "5172": msg7619, - "5173": msg7620, - "5174": msg7621, - "5175": msg7622, - "5176": msg7623, - "5177": msg7624, - "5178": msg7625, - "5179": msg7626, - "518": select427, - "5180": msg7627, - "5181": msg7628, - "5182": msg7629, - "5183": msg7630, - "5184": msg7631, - "5185": msg7632, - "5186": msg7633, - "5187": msg7634, - "5188": msg7635, - "5189": msg7636, - "519": select428, - "5190": msg7637, - "5191": msg7638, - "5192": msg7639, - "5193": msg7640, - "5194": msg7641, - "5195": msg7642, - "5196": msg7643, - "5197": msg7644, - "5198": msg7645, - "5199": msg7646, - "520": select429, - "5200": msg7647, - "5201": msg7648, - "5202": msg7649, - "5203": msg7650, - "5204": msg7651, - "5205": msg7652, - "5206": msg7653, - "5207": msg7654, - "5208": msg7655, - "5209": msg7656, - "521": select430, - "5210": msg7657, - "5211": msg7658, - "5212": msg7659, - "5213": msg7660, - "5214": msg7661, - "5215": msg7662, - "5216": msg7663, - "5217": msg7664, - "5218": msg7665, - "5219": msg7666, - "522": select431, - "5220": msg7667, - "5221": msg7668, - "5222": msg7669, - "5223": msg7670, - "5224": msg7671, - "5225": msg7672, - "5226": msg7673, - "5227": msg7674, - "5228": msg7675, - "5229": msg7676, - "523": select432, - "5230": msg7677, - "5231": msg7678, - "5232": msg7679, - "5233": msg7680, - "5234": msg7681, - "5235": msg7682, - "5236": msg7683, - "5237": msg7684, - "5238": msg7685, - "5239": msg7686, - "524": select433, - "5240": msg7687, - "5241": msg7688, - "5242": msg7689, - "5243": msg7690, - "5244": msg7691, - "5245": msg7692, - "5246": msg7693, - "5247": msg7694, - "5248": msg7695, - "5249": msg7696, - "525": select434, - "5250": msg7697, - "5251": msg7698, - "5252": msg7699, - "5253": msg7700, - "5254": msg7701, - "5255": msg7702, - "5256": msg7703, - "5257": msg7704, - "5258": msg7705, - "5259": msg7706, - "526": select435, - "5260": msg7707, - "5261": msg7708, - "5262": msg7709, - "5263": msg7710, - "5264": msg7711, - "5265": msg7712, - "5266": msg7713, - "5267": msg7714, - "5268": msg7715, - "5269": msg7716, - "527": select436, - "5270": msg7717, - "5271": msg7718, - "5272": msg7719, - "5273": msg7720, - "5274": msg7721, - "5275": msg7722, - "5276": msg7723, - "5277": msg7724, - "5278": msg7725, - "5279": msg7726, - "528": select437, - "5280": msg7727, - "5281": msg7728, - "5282": msg7729, - "5283": msg7730, - "5284": msg7731, - "5285": msg7732, - "5286": msg7733, - "5287": msg7734, - "5288": msg7735, - "5289": msg7736, - "529": select438, - "5290": msg7737, - "5291": msg7738, - "5292": msg7739, - "5293": msg7740, - "5294": msg7741, - "5295": msg7742, - "5296": msg7743, - "5297": msg7744, - "5298": msg7745, - "5299": msg7746, - "530": select439, - "5300": msg7747, - "5301": msg7748, - "5302": msg7749, - "5303": msg7750, - "5304": msg7751, - "5305": msg7752, - "5306": msg7753, - "5307": msg7754, - "5308": msg7755, - "5309": msg7756, - "5310": msg7757, - "5311": msg7758, - "5312": msg7759, - "5313": msg7760, - "5314": msg7761, - "5315": msg7762, - "5316": msg7763, - "5317": msg7764, - "5318": msg7765, - "5319": msg7766, - "532": select440, - "5320": msg7767, - "5321": msg7768, - "5322": msg7769, - "5323": msg7770, - "5324": msg7771, - "5325": msg7772, - "5326": msg7773, - "5327": msg7774, - "5328": msg7775, - "5329": msg7776, - "533": select441, - "5330": msg7777, - "5331": msg7778, - "5332": msg7779, - "5333": msg7780, - "5334": msg7781, - "5335": msg7782, - "5336": msg7783, - "5337": msg7784, - "5338": msg7785, - "5339": msg7786, - "534": select442, - "5340": msg7787, - "5341": msg7788, - "5342": msg7789, - "5343": msg7790, - "5344": msg7791, - "5345": msg7792, - "5346": msg7793, - "5347": msg7794, - "5348": msg7795, - "5349": msg7796, - "535": select443, - "5350": msg7797, - "5351": msg7798, - "5352": msg7799, - "5353": msg7800, - "5354": msg7801, - "5355": msg7802, - "5356": msg7803, - "5357": msg7804, - "5358": msg7805, - "5359": msg7806, - "536": select444, - "5360": msg7807, - "5361": msg7808, - "5362": msg7809, - "5363": msg7810, - "5364": msg7811, - "5365": msg7812, - "5366": msg7813, - "5367": msg7814, - "5368": msg7815, - "5369": msg7816, - "537": select445, - "5370": msg7817, - "5371": msg7818, - "5372": msg7819, - "5373": msg7820, - "5374": msg7821, - "5375": msg7822, - "5376": msg7823, - "5377": msg7824, - "5378": msg7825, - "5379": msg7826, - "538": select446, - "5380": msg7827, - "5381": msg7828, - "5382": msg7829, - "5383": msg7830, - "5384": msg7831, - "5385": msg7832, - "5386": msg7833, - "5387": msg7834, - "5388": msg7835, - "5389": msg7836, - "539": select447, - "5390": msg7837, - "5391": msg7838, - "5392": msg7839, - "5393": msg7840, - "5394": msg7841, - "5395": msg7842, - "5396": msg7843, - "5397": msg7844, - "5398": msg7845, - "5399": msg7846, - "54": select27, - "540": select448, - "5400": msg7847, - "5401": msg7848, - "5402": msg7849, - "5403": msg7850, - "5404": msg7851, - "5405": msg7852, - "5406": msg7853, - "5407": msg7854, - "5408": msg7855, - "5409": msg7856, - "541": select449, - "5410": msg7857, - "5411": msg7858, - "5412": msg7859, - "5413": msg7860, - "5414": msg7861, - "5415": msg7862, - "5416": msg7863, - "5417": msg7864, - "5418": msg7865, - "5419": msg7866, - "542": select450, - "5420": msg7867, - "5421": msg7868, - "5422": msg7869, - "5423": msg7870, - "5424": msg7871, - "5425": msg7872, - "5426": msg7873, - "5427": msg7874, - "5428": msg7875, - "5429": msg7876, - "543": select451, - "5430": msg7877, - "5431": msg7878, - "5432": msg7879, - "5433": msg7880, - "5434": msg7881, - "5435": msg7882, - "5436": msg7883, - "5437": msg7884, - "5438": msg7885, - "5439": msg7886, - "544": select452, - "5440": msg7887, - "5441": msg7888, - "5442": msg7889, - "5443": msg7890, - "5444": msg7891, - "5445": msg7892, - "5446": msg7893, - "5447": msg7894, - "5448": msg7895, - "5449": msg7896, - "545": select453, - "5450": msg7897, - "5451": msg7898, - "5452": msg7899, - "5453": msg7900, - "5454": msg7901, - "5455": msg7902, - "5456": msg7903, - "5457": msg7904, - "5458": msg7905, - "5459": msg7906, - "546": select454, - "5460": msg7907, - "5461": msg7908, - "5462": msg7909, - "5463": msg7910, - "5464": msg7911, - "5465": msg7912, - "5466": msg7913, - "5467": msg7914, - "5468": msg7915, - "5469": msg7916, - "547": select455, - "5470": msg7917, - "5471": msg7918, - "5472": msg7919, - "5473": msg7920, - "5474": msg7921, - "5475": msg7922, - "5476": msg7923, - "5477": msg7924, - "5478": msg7925, - "5479": msg7926, - "548": select456, - "5480": msg7927, - "5481": msg7928, - "5482": msg7929, - "5483": msg7930, - "5484": msg7931, - "5485": msg7932, - "5486": msg7933, - "5487": msg7934, - "5488": msg7935, - "5489": msg7936, - "549": select457, - "5490": msg7937, - "5491": msg7938, - "5492": msg7939, - "5493": msg7940, - "5494": msg7941, - "5495": msg7942, - "5496": msg7943, - "5497": msg7944, - "5498": msg7945, - "5499": msg7946, - "55": select28, - "550": select458, - "5500": msg7947, - "5501": msg7948, - "5502": msg7949, - "5503": msg7950, - "5504": msg7951, - "5505": msg7952, - "5506": msg7953, - "5507": msg7954, - "5508": msg7955, - "5509": msg7956, - "551": select459, - "5510": msg7957, - "5511": msg7958, - "5512": msg7959, - "5513": msg7960, - "5514": msg7961, - "5515": msg7962, - "5516": msg7963, - "5517": msg7964, - "5518": msg7965, - "5519": msg7966, - "552": select460, - "5520": msg7967, - "5521": msg7968, - "5522": msg7969, - "5523": msg7970, - "5524": msg7971, - "5525": msg7972, - "5526": msg7973, - "5527": msg7974, - "5528": msg7975, - "5529": msg7976, - "553": select461, - "5530": msg7977, - "5531": msg7978, - "5532": msg7979, - "5533": msg7980, - "5534": msg7981, - "5535": msg7982, - "5536": msg7983, - "5537": msg7984, - "5538": msg7985, - "5539": msg7986, - "554": select462, - "5540": msg7987, - "5541": msg7988, - "5542": msg7989, - "5543": msg7990, - "5544": msg7991, - "5545": msg7992, - "5546": msg7993, - "5547": msg7994, - "5548": msg7995, - "5549": msg7996, - "555": select463, - "5550": msg7997, - "5551": msg7998, - "5552": msg7999, - "5553": msg8000, - "5554": msg8001, - "5555": msg8002, - "5556": msg8003, - "5557": msg8004, - "5558": msg8005, - "5559": msg8006, - "556": select464, - "5560": msg8007, - "5561": msg8008, - "5562": msg8009, - "5563": msg8010, - "5564": msg8011, - "5565": msg8012, - "5566": msg8013, - "5567": msg8014, - "5568": msg8015, - "5569": msg8016, - "557": select465, - "5570": msg8017, - "5571": msg8018, - "5572": msg8019, - "5573": msg8020, - "5574": msg8021, - "5575": msg8022, - "5576": msg8023, - "5577": msg8024, - "5578": msg8025, - "5579": msg8026, - "558": select466, - "5580": msg8027, - "5581": msg8028, - "5582": msg8029, - "5583": msg8030, - "5584": msg8031, - "5585": msg8032, - "5586": msg8033, - "5587": msg8034, - "5588": msg8035, - "5589": msg8036, - "559": select467, - "5590": msg8037, - "5591": msg8038, - "5592": msg8039, - "5593": msg8040, - "5594": msg8041, - "5595": msg8042, - "5596": msg8043, - "5597": msg8044, - "5598": msg8045, - "5599": msg8046, - "560": select468, - "5600": msg8047, - "5601": msg8048, - "5602": msg8049, - "5603": msg8050, - "5604": msg8051, - "5605": msg8052, - "5606": msg8053, - "5607": msg8054, - "5608": msg8055, - "5609": msg8056, - "561": select469, - "5610": msg8057, - "5611": msg8058, - "5612": msg8059, - "5613": msg8060, - "5614": msg8061, - "5615": msg8062, - "5616": msg8063, - "5617": msg8064, - "5618": msg8065, - "5619": msg8066, - "562": select470, - "5620": msg8067, - "5621": msg8068, - "5622": msg8069, - "5623": msg8070, - "5624": msg8071, - "5625": msg8072, - "5626": msg8073, - "5627": msg8074, - "5628": msg8075, - "5629": msg8076, - "563": select471, - "5630": msg8077, - "5631": msg8078, - "5632": msg8079, - "5633": msg8080, - "5634": msg8081, - "5635": msg8082, - "5636": msg8083, - "5637": msg8084, - "5638": msg8085, - "5639": msg8086, - "564": select472, - "5640": msg8087, - "5641": msg8088, - "5642": msg8089, - "5643": msg8090, - "5644": msg8091, - "5645": msg8092, - "5646": msg8093, - "5647": msg8094, - "5648": msg8095, - "5649": msg8096, - "565": select473, - "5650": msg8097, - "5651": msg8098, - "5652": msg8099, - "5653": msg8100, - "5654": msg8101, - "5655": msg8102, - "5656": msg8103, - "5657": msg8104, - "5658": msg8105, - "5659": msg8106, - "566": select474, - "5660": msg8107, - "5661": msg8108, - "5662": msg8109, - "5663": msg8110, - "5664": msg8111, - "5665": msg8112, - "5666": msg8113, - "5667": msg8114, - "5668": msg8115, - "5669": msg8116, - "567": select475, - "5670": msg8117, - "5671": msg8118, - "5672": msg8119, - "5673": msg8120, - "5674": msg8121, - "5675": msg8122, - "5676": msg8123, - "5677": msg8124, - "5678": msg8125, - "5679": msg8126, - "568": select476, - "5680": msg8127, - "5681": msg8128, - "5682": msg8129, - "5683": msg8130, - "5684": msg8131, - "5685": msg8132, - "5686": msg8133, - "5687": msg8134, - "5688": msg8135, - "5689": msg8136, - "569": select477, - "5690": msg8137, - "5691": msg8138, - "5692": msg8139, - "5693": msg8140, - "5694": msg8141, - "5695": msg8142, - "5696": msg8143, - "5697": msg8144, - "5698": msg8145, - "5699": msg8146, - "570": select478, - "5700": msg8147, - "5701": msg8148, - "5702": msg8149, - "5703": msg8150, - "5704": msg8151, - "5705": msg8152, - "5706": msg8153, - "5707": msg8154, - "5708": msg8155, - "5709": msg8156, - "571": select479, - "5710": msg8157, - "5711": msg8158, - "5712": msg8159, - "5713": msg8160, - "5714": msg8161, - "5715": msg8162, - "5716": msg8163, - "5717": msg8164, - "5718": msg8165, - "5719": msg8166, - "572": select480, - "5720": msg8167, - "5721": msg8168, - "5722": msg8169, - "5723": msg8170, - "5724": msg8171, - "5725": msg8172, - "5726": msg8173, - "5727": msg8174, - "5728": msg8175, - "5729": msg8176, - "573": select481, - "5730": msg8177, - "5731": msg8178, - "5732": msg8179, - "5733": msg8180, - "5734": msg8181, - "5735": msg8182, - "5736": msg8183, - "5737": msg8184, - "5738": msg8185, - "5739": msg8186, - "574": select482, - "5740": msg8187, - "5741": msg8188, - "5742": msg8189, - "5743": msg8190, - "5744": msg8191, - "5745": msg8192, - "5746": msg8193, - "5747": msg8194, - "5748": msg8195, - "5749": msg8196, - "575": select483, - "5750": msg8197, - "5751": msg8198, - "5752": msg8199, - "5753": msg8200, - "5754": msg8201, - "5755": msg8202, - "5756": msg8203, - "5757": msg8204, - "5758": msg8205, - "5759": msg8206, - "576": select484, - "5760": msg8207, - "5761": msg8208, - "5762": msg8209, - "5763": msg8210, - "5764": msg8211, - "5765": msg8212, - "5766": msg8213, - "5767": msg8214, - "5768": msg8215, - "5769": msg8216, - "577": select485, - "5770": msg8217, - "5771": msg8218, - "5772": msg8219, - "5773": msg8220, - "5774": msg8221, - "5775": msg8222, - "5776": msg8223, - "5777": msg8224, - "5778": msg8225, - "5779": msg8226, - "578": select486, - "5780": msg8227, - "5781": msg8228, - "5782": msg8229, - "5783": msg8230, - "5784": msg8231, - "5785": msg8232, - "5786": msg8233, - "5787": msg8234, - "5788": msg8235, - "5789": msg8236, - "579": select487, - "5790": msg8237, - "5791": msg8238, - "5792": msg8239, - "5793": msg8240, - "5794": msg8241, - "5795": msg8242, - "5796": msg8243, - "5797": msg8244, - "5798": msg8245, - "5799": msg8246, - "58": select29, - "580": select488, - "5800": msg8247, - "5801": msg8248, - "5802": msg8249, - "5803": msg8250, - "5804": msg8251, - "5805": msg8252, - "5806": msg8253, - "5807": msg8254, - "5808": msg8255, - "5809": msg8256, - "581": select489, - "5810": msg8257, - "5811": msg8258, - "5812": msg8259, - "5813": msg8260, - "5814": msg8261, - "5815": msg8262, - "5816": msg8263, - "5817": msg8264, - "5818": msg8265, - "5819": msg8266, - "582": select490, - "5820": msg8267, - "5821": msg8268, - "5822": msg8269, - "5823": msg8270, - "5824": msg8271, - "5825": msg8272, - "5826": msg8273, - "5827": msg8274, - "5828": msg8275, - "5829": msg8276, - "583": select491, - "5830": msg8277, - "5831": msg8278, - "5832": msg8279, - "5833": msg8280, - "5834": msg8281, - "5835": msg8282, - "5836": msg8283, - "5837": msg8284, - "5838": msg8285, - "5839": msg8286, - "584": select492, - "5840": msg8287, - "5841": msg8288, - "5842": msg8289, - "5843": msg8290, - "5844": msg8291, - "5845": msg8292, - "5846": msg8293, - "5847": msg8294, - "5848": msg8295, - "5849": msg8296, - "585": select493, - "5850": msg8297, - "5851": msg8298, - "5852": msg8299, - "5853": msg8300, - "5854": msg8301, - "5855": msg8302, - "5856": msg8303, - "5857": msg8304, - "5858": msg8305, - "5859": msg8306, - "586": select494, - "5860": msg8307, - "5861": msg8308, - "5862": msg8309, - "5863": msg8310, - "5864": msg8311, - "5865": msg8312, - "5866": msg8313, - "5867": msg8314, - "5868": msg8315, - "5869": msg8316, - "587": select495, - "5870": msg8317, - "5871": msg8318, - "5872": msg8319, - "5873": msg8320, - "5874": msg8321, - "5875": msg8322, - "5876": msg8323, - "5877": msg8324, - "5878": msg8325, - "5879": msg8326, - "588": select496, - "5880": msg8327, - "5881": msg8328, - "5882": msg8329, - "5883": msg8330, - "5884": msg8331, - "5885": msg8332, - "5886": msg8333, - "5887": msg8334, - "5888": msg8335, - "5889": msg8336, - "589": select497, - "5890": msg8337, - "5891": msg8338, - "5892": msg8339, - "5893": msg8340, - "5894": msg8341, - "5895": msg8342, - "5896": msg8343, - "5897": msg8344, - "5898": msg8345, - "5899": msg8346, - "590": select498, - "5900": msg8347, - "5901": msg8348, - "5902": msg8349, - "5903": msg8350, - "5904": msg8351, - "5905": msg8352, - "5906": msg8353, - "5907": msg8354, - "5908": msg8355, - "5909": msg8356, - "591": select499, - "5910": msg8357, - "5911": msg8358, - "5912": msg8359, - "5913": msg8360, - "5914": msg8361, - "5915": msg8362, - "5916": msg8363, - "5917": msg8364, - "5918": msg8365, - "5919": msg8366, - "592": select500, - "5920": msg8367, - "5921": msg8368, - "5922": msg8369, - "5923": msg8370, - "5924": msg8371, - "5925": msg8372, - "5926": msg8373, - "5927": msg8374, - "5928": msg8375, - "5929": msg8376, - "593": select501, - "5930": msg8377, - "5931": msg8378, - "5932": msg8379, - "5933": msg8380, - "5934": msg8381, - "5935": msg8382, - "5936": msg8383, - "5937": msg8384, - "5938": msg8385, - "5939": msg8386, - "594": select502, - "5940": msg8387, - "5941": msg8388, - "5942": msg8389, - "5943": msg8390, - "5944": msg8391, - "5945": msg8392, - "5946": msg8393, - "5947": msg8394, - "5948": msg8395, - "5949": msg8396, - "595": select503, - "5950": msg8397, - "5951": msg8398, - "5952": msg8399, - "5953": msg8400, - "5954": msg8401, - "5955": msg8402, - "5956": msg8403, - "5957": msg8404, - "5958": msg8405, - "5959": msg8406, - "596": select504, - "5960": msg8407, - "5961": msg8408, - "5962": msg8409, - "5963": msg8410, - "5964": msg8411, - "5965": msg8412, - "5966": msg8413, - "5967": msg8414, - "5968": msg8415, - "5969": msg8416, - "597": select505, - "5970": msg8417, - "5971": msg8418, - "5972": msg8419, - "5973": msg8420, - "5974": msg8421, - "5975": msg8422, - "5976": msg8423, - "5977": msg8424, - "5978": msg8425, - "5979": msg8426, - "598": select506, - "5980": msg8427, - "5981": msg8428, - "5982": msg8429, - "5983": msg8430, - "5984": msg8431, - "5985": msg8432, - "5986": msg8433, - "5987": msg8434, - "5988": msg8435, - "5989": msg8436, - "599": select507, - "5990": msg8437, - "5991": msg8438, - "5992": msg8439, - "5993": msg8440, - "5994": msg8441, - "5995": msg8442, - "5996": msg8443, - "5997": msg8444, - "5998": msg8445, - "5999": msg8446, - "6": select11, - "600": select508, - "6000": msg8447, - "6000022": msg38279, - "6000025": msg38281, - "600009": msg38276, - "600010": msg38277, - "600015": msg38278, - "600023": msg38280, - "6001": msg8448, - "6002": msg8449, - "6003": msg8450, - "6004": msg8451, - "6005": msg8452, - "6006": msg8453, - "6007": msg8454, - "6008": msg8455, - "6009": msg8456, - "601": select509, - "6010": msg8457, - "6011": msg8458, - "6012": msg8459, - "6013": msg8460, - "6014": msg8461, - "6015": msg8462, - "6016": msg8463, - "6017": msg8464, - "6018": msg8465, - "6019": msg8466, - "602": select510, - "6020": msg8467, - "6021": msg8468, - "6022": msg8469, - "6023": msg8470, - "6024": msg8471, - "6025": msg8472, - "6026": msg8473, - "6027": msg8474, - "6028": msg8475, - "6029": msg8476, - "603": select511, - "6030": msg8477, - "6031": msg8478, - "6032": msg8479, - "6033": msg8480, - "6034": msg8481, - "6035": msg8482, - "6036": msg8483, - "6037": msg8484, - "6038": msg8485, - "6039": msg8486, - "604": select512, - "6040": msg8487, - "6041": msg8488, - "6042": msg8489, - "6043": msg8490, - "6044": msg8491, - "6045": msg8492, - "6046": msg8493, - "6047": msg8494, - "6048": msg8495, - "6049": msg8496, - "605": select513, - "6050": msg8497, - "6051": msg8498, - "6052": msg8499, - "6053": msg8500, - "6054": msg8501, - "6055": msg8502, - "6056": msg8503, - "6057": msg8504, - "6058": msg8505, - "6059": msg8506, - "606": select514, - "6060": msg8507, - "6061": msg8508, - "6062": msg8509, - "6063": msg8510, - "6064": msg8511, - "6065": msg8512, - "6066": msg8513, - "6067": msg8514, - "6068": msg8515, - "6069": msg8516, - "607": select515, - "6070": msg8517, - "6071": msg8518, - "6072": msg8519, - "6073": msg8520, - "6074": msg8521, - "6075": msg8522, - "6076": msg8523, - "6077": msg8524, - "6078": msg8525, - "6079": msg8526, - "608": select516, - "6080": msg8527, - "6081": msg8528, - "6082": msg8529, - "6083": msg8530, - "6084": msg8531, - "6085": msg8532, - "6086": msg8533, - "6087": msg8534, - "6088": msg8535, - "6089": msg8536, - "609": select517, - "6090": msg8537, - "6091": msg8538, - "6092": msg8539, - "6093": msg8540, - "6094": msg8541, - "6095": msg8542, - "6096": msg8543, - "6097": msg8544, - "6098": msg8545, - "6099": msg8546, - "610": select518, - "6100": msg8547, - "6101": msg8548, - "6102": msg8549, - "6103": msg8550, - "6104": msg8551, - "6105": msg8552, - "6106": msg8553, - "6107": msg8554, - "6108": msg8555, - "6109": msg8556, - "611": select519, - "6110": msg8557, - "6111": msg8558, - "6112": msg8559, - "6113": msg8560, - "6114": msg8561, - "6115": msg8562, - "6116": msg8563, - "6117": msg8564, - "6118": msg8565, - "6119": msg8566, - "612": select520, - "6120": msg8567, - "6121": msg8568, - "6122": msg8569, - "6123": msg8570, - "6124": msg8571, - "6125": msg8572, - "6126": msg8573, - "6127": msg8574, - "6128": msg8575, - "6129": msg8576, - "613": select521, - "6130": msg8577, - "6131": msg8578, - "6132": msg8579, - "6133": msg8580, - "6134": msg8581, - "6135": msg8582, - "6136": msg8583, - "6137": msg8584, - "6138": msg8585, - "6139": msg8586, - "614": select522, - "6140": msg8587, - "6141": msg8588, - "6142": msg8589, - "6143": msg8590, - "6144": msg8591, - "6145": msg8592, - "6146": msg8593, - "6147": msg8594, - "6148": msg8595, - "6149": msg8596, - "615": select523, - "6150": msg8597, - "6151": msg8598, - "6152": msg8599, - "6153": msg8600, - "6154": msg8601, - "6155": msg8602, - "6156": msg8603, - "6157": msg8604, - "6158": msg8605, - "6159": msg8606, - "616": select524, - "6160": msg8607, - "6161": msg8608, - "6162": msg8609, - "6163": msg8610, - "6164": msg8611, - "6165": msg8612, - "6166": msg8613, - "6167": msg8614, - "6168": msg8615, - "6169": msg8616, - "617": select525, - "6170": msg8617, - "6171": msg8618, - "6172": msg8619, - "6173": msg8620, - "6174": msg8621, - "6175": msg8622, - "6176": msg8623, - "6177": msg8624, - "6178": msg8625, - "6179": msg8626, - "618": select526, - "6180": msg8627, - "6181": msg8628, - "6182": msg8629, - "6183": msg8630, - "6184": msg8631, - "6185": msg8632, - "6186": msg8633, - "6187": msg8634, - "6188": msg8635, - "6189": msg8636, - "619": select527, - "6190": msg8637, - "6191": msg8638, - "6192": msg8639, - "6193": msg8640, - "6194": msg8641, - "6195": msg8642, - "6196": msg8643, - "6197": msg8644, - "6198": msg8645, - "6199": msg8646, - "620": select528, - "6200": msg8647, - "6201": msg8648, - "6202": msg8649, - "6203": msg8650, - "6204": msg8651, - "6205": msg8652, - "6206": msg8653, - "6207": msg8654, - "6208": msg8655, - "6209": msg8656, - "621": select529, - "6210": msg8657, - "6211": msg8658, - "6212": msg8659, - "6213": msg8660, - "6214": msg8661, - "6215": msg8662, - "6216": msg8663, - "6217": msg8664, - "6218": msg8665, - "6219": msg8666, - "622": select530, - "6220": msg8667, - "6221": msg8668, - "6222": msg8669, - "6223": msg8670, - "6224": msg8671, - "6225": msg8672, - "6226": msg8673, - "6227": msg8674, - "6228": msg8675, - "6229": msg8676, - "623": select531, - "6230": msg8677, - "6231": msg8678, - "6232": msg8679, - "6233": msg8680, - "6234": msg8681, - "6235": msg8682, - "6236": msg8683, - "6237": msg8684, - "6238": msg8685, - "6239": msg8686, - "624": select532, - "6240": msg8687, - "6241": msg8688, - "6242": msg8689, - "6243": msg8690, - "6244": msg8691, - "6245": msg8692, - "6246": msg8693, - "6247": msg8694, - "6248": msg8695, - "6249": msg8696, - "625": select533, - "6250": msg8697, - "6251": msg8698, - "6252": msg8699, - "6253": msg8700, - "6254": msg8701, - "6255": msg8702, - "6256": msg8703, - "6257": msg8704, - "6258": msg8705, - "6259": msg8706, - "626": select534, - "6260": msg8707, - "6261": msg8708, - "6262": msg8709, - "6263": msg8710, - "6264": msg8711, - "6265": msg8712, - "6266": msg8713, - "6267": msg8714, - "6268": msg8715, - "6269": msg8716, - "627": select535, - "6270": msg8717, - "6271": msg8718, - "6272": msg8719, - "6273": msg8720, - "6274": msg8721, - "6275": msg8722, - "6276": msg8723, - "6277": msg8724, - "6278": msg8725, - "6279": msg8726, - "628": select536, - "6280": msg8727, - "6281": msg8728, - "6282": msg8729, - "6283": msg8730, - "6284": msg8731, - "6285": msg8732, - "6286": msg8733, - "6287": msg8734, - "6288": msg8735, - "6289": msg8736, - "629": select537, - "6290": msg8737, - "6291": msg8738, - "6292": msg8739, - "6293": msg8740, - "6294": msg8741, - "6295": msg8742, - "6296": msg8743, - "6297": msg8744, - "6298": msg8745, - "6299": msg8746, - "630": select538, - "6300": msg8747, - "6301": msg8748, - "6302": msg8749, - "6303": msg8750, - "6304": msg8751, - "6305": msg8752, - "6306": msg8753, - "6307": msg8754, - "6308": msg8755, - "6309": msg8756, - "631": select539, - "6310": msg8757, - "6311": msg8758, - "6312": msg8759, - "6313": msg8760, - "6314": msg8761, - "6315": msg8762, - "6316": msg8763, - "6317": msg8764, - "6318": msg8765, - "6319": msg8766, - "632": select540, - "6320": msg8767, - "6321": msg8768, - "6322": msg8769, - "6323": msg8770, - "6324": msg8771, - "6325": msg8772, - "6326": msg8773, - "6327": msg8774, - "6328": msg8775, - "6329": msg8776, - "6330": msg8777, - "6331": msg8778, - "6332": msg8779, - "6333": msg8780, - "6334": msg8781, - "6335": msg8782, - "6336": msg8783, - "6337": msg8784, - "6338": msg8785, - "6339": msg8786, - "634": select541, - "6340": msg8787, - "6341": msg8788, - "6342": msg8789, - "6343": msg8790, - "6344": msg8791, - "6345": msg8792, - "6346": msg8793, - "6347": msg8794, - "6348": msg8795, - "6349": msg8796, - "635": select542, - "6350": msg8797, - "6351": msg8798, - "6352": msg8799, - "6353": msg8800, - "6354": msg8801, - "6355": msg8802, - "6356": msg8803, - "6357": msg8804, - "6358": msg8805, - "6359": msg8806, - "636": select543, - "6360": msg8807, - "6361": msg8808, - "6362": msg8809, - "6363": msg8810, - "6364": msg8811, - "6365": msg8812, - "6366": msg8813, - "6367": msg8814, - "6368": msg8815, - "6369": msg8816, - "637": select544, - "6370": msg8817, - "6371": msg8818, - "6372": msg8819, - "6373": msg8820, - "6374": msg8821, - "6375": msg8822, - "6376": msg8823, - "6377": msg8824, - "6378": msg8825, - "6379": msg8826, - "638": select545, - "6380": msg8827, - "6381": msg8828, - "6382": msg8829, - "6383": msg8830, - "6384": msg8831, - "6385": msg8832, - "6386": msg8833, - "6387": msg8834, - "6388": msg8835, - "6389": msg8836, - "639": select546, - "6390": msg8837, - "6391": msg8838, - "6392": msg8839, - "6393": msg8840, - "6394": msg8841, - "6395": msg8842, - "6396": msg8843, - "6397": msg8844, - "6398": msg8845, - "6399": msg8846, - "640": select547, - "6400": msg8847, - "6401": msg8848, - "6402": msg8849, - "6403": msg8850, - "6404": msg8851, - "6405": msg8852, - "6406": msg8853, - "6407": msg8854, - "6408": msg8855, - "6409": msg8856, - "641": select548, - "6410": msg8857, - "6411": msg8858, - "6412": msg8859, - "6413": msg8860, - "6414": msg8861, - "6415": msg8862, - "6416": msg8863, - "6417": msg8864, - "6418": msg8865, - "6419": msg8866, - "642": select549, - "6420": msg8867, - "6421": msg8868, - "6422": msg8869, - "6423": msg8870, - "6424": msg8871, - "6425": msg8872, - "6426": msg8873, - "6427": msg8874, - "6428": msg8875, - "6429": msg8876, - "643": select550, - "6430": msg8877, - "6431": msg8878, - "6432": msg8879, - "6433": msg8880, - "6434": msg8881, - "6435": msg8882, - "6436": msg8883, - "6437": msg8884, - "6438": msg8885, - "6439": msg8886, - "644": select551, - "6440": msg8887, - "6441": msg8888, - "6442": msg8889, - "6443": msg8890, - "6444": msg8891, - "6445": msg8892, - "6446": msg8893, - "6447": msg8894, - "6448": msg8895, - "6449": msg8896, - "645": select552, - "6450": msg8897, - "6451": msg8898, - "6452": msg8899, - "6453": msg8900, - "6454": msg8901, - "6455": msg8902, - "6456": msg8903, - "6457": msg8904, - "6458": msg8905, - "6459": msg8906, - "646": select553, - "6460": msg8907, - "6461": msg8908, - "6462": msg8909, - "6463": msg8910, - "6464": msg8911, - "6465": msg8912, - "6466": msg8913, - "6467": msg8914, - "6468": msg8915, - "6469": msg8916, - "647": select554, - "6470": msg8917, - "6471": msg8918, - "6472": msg8919, - "6473": msg8920, - "6474": msg8921, - "6475": msg8922, - "6476": msg8923, - "6477": msg8924, - "6478": msg8925, - "6479": msg8926, - "648": select555, - "6480": msg8927, - "6481": msg8928, - "6482": msg8929, - "6483": msg8930, - "6484": msg8931, - "6485": msg8932, - "6486": msg8933, - "6487": msg8934, - "6488": msg8935, - "6489": msg8936, - "649": select556, - "6490": msg8937, - "6491": msg8938, - "6492": msg8939, - "6493": msg8940, - "6494": msg8941, - "6495": msg8942, - "6496": msg8943, - "6497": msg8944, - "6498": msg8945, - "6499": msg8946, - "650": select557, - "6500": msg8947, - "6501": msg8948, - "6502": msg8949, - "6503": msg8950, - "6504": msg8951, - "6505": msg8952, - "6506": msg8953, - "6507": msg8954, - "6508": msg8955, - "6509": msg8956, - "651": select558, - "6510": msg8957, - "6511": msg8958, - "6512": msg8959, - "6513": msg8960, - "6514": msg8961, - "6515": msg8962, - "6516": msg8963, - "6517": msg8964, - "6518": msg8965, - "6519": msg8966, - "652": select559, - "6520": msg8967, - "6521": msg8968, - "6522": msg8969, - "6523": msg8970, - "6524": msg8971, - "6525": msg8972, - "6526": msg8973, - "6527": msg8974, - "6528": msg8975, - "6529": msg8976, - "653": select560, - "6530": msg8977, - "6531": msg8978, - "6532": msg8979, - "6533": msg8980, - "6534": msg8981, - "6535": msg8982, - "6536": msg8983, - "6537": msg8984, - "6538": msg8985, - "6539": msg8986, - "654": select561, - "6540": msg8987, - "6541": msg8988, - "6542": msg8989, - "6543": msg8990, - "6544": msg8991, - "6545": msg8992, - "6546": msg8993, - "6547": msg8994, - "6548": msg8995, - "6549": msg8996, - "655": select562, - "6550": msg8997, - "6551": msg8998, - "6552": msg8999, - "6553": msg9000, - "6554": msg9001, - "6555": msg9002, - "6556": msg9003, - "6557": msg9004, - "6558": msg9005, - "6559": msg9006, - "656": select563, - "6560": msg9007, - "6561": msg9008, - "6562": msg9009, - "6563": msg9010, - "6564": msg9011, - "6565": msg9012, - "6566": msg9013, - "6567": msg9014, - "6568": msg9015, - "6569": msg9016, - "657": select564, - "6570": msg9017, - "6571": msg9018, - "6572": msg9019, - "6573": msg9020, - "6574": msg9021, - "6575": msg9022, - "6576": msg9023, - "6577": msg9024, - "6578": msg9025, - "6579": msg9026, - "658": select565, - "6580": msg9027, - "6581": msg9028, - "6582": msg9029, - "6583": msg9030, - "6584": msg9031, - "6585": msg9032, - "6586": msg9033, - "6587": msg9034, - "6588": msg9035, - "6589": msg9036, - "659": select566, - "6590": msg9037, - "6591": msg9038, - "6592": msg9039, - "6593": msg9040, - "6594": msg9041, - "6595": msg9042, - "6596": msg9043, - "6597": msg9044, - "6598": msg9045, - "6599": msg9046, - "660": select567, - "6600": msg9047, - "6601": msg9048, - "6602": msg9049, - "6603": msg9050, - "6604": msg9051, - "6605": msg9052, - "6606": msg9053, - "6607": msg9054, - "6608": msg9055, - "6609": msg9056, - "661": select568, - "6610": msg9057, - "6611": msg9058, - "6612": msg9059, - "6613": msg9060, - "6614": msg9061, - "6615": msg9062, - "6616": msg9063, - "6617": msg9064, - "6618": msg9065, - "6619": msg9066, - "662": select569, - "6620": msg9067, - "6621": msg9068, - "6622": msg9069, - "6623": msg9070, - "6624": msg9071, - "6625": msg9072, - "6626": msg9073, - "6627": msg9074, - "6628": msg9075, - "6629": msg9076, - "663": select570, - "6630": msg9077, - "6631": msg9078, - "6632": msg9079, - "6633": msg9080, - "6634": msg9081, - "6635": msg9082, - "6636": msg9083, - "6637": msg9084, - "6638": msg9085, - "6639": msg9086, - "664": select571, - "6640": msg9087, - "6641": msg9088, - "6642": msg9089, - "6643": msg9090, - "6644": msg9091, - "6645": msg9092, - "6646": msg9093, - "6647": msg9094, - "6648": msg9095, - "6649": msg9096, - "665": select572, - "6650": msg9097, - "6651": msg9098, - "6652": msg9099, - "6653": msg9100, - "6654": msg9101, - "6655": msg9102, - "6656": msg9103, - "6657": msg9104, - "6658": msg9105, - "6659": msg9106, - "666": select573, - "6660": msg9107, - "6661": msg9108, - "6662": msg9109, - "6663": msg9110, - "6664": msg9111, - "6665": msg9112, - "6666": msg9113, - "6667": msg9114, - "6668": msg9115, - "6669": msg9116, - "667": select574, - "6670": msg9117, - "6671": msg9118, - "6672": msg9119, - "6673": msg9120, - "6674": msg9121, - "6675": msg9122, - "6676": msg9123, - "6677": msg9124, - "6678": msg9125, - "6679": msg9126, - "668": select575, - "6680": msg9127, - "6681": msg9128, - "6682": msg9129, - "6683": msg9130, - "6684": msg9131, - "6685": msg9132, - "6686": msg9133, - "6687": msg9134, - "6688": msg9135, - "6689": msg9136, - "669": select576, - "6690": msg9137, - "6691": msg9138, - "6692": msg9139, - "6693": msg9140, - "6694": msg9141, - "6695": msg9142, - "6696": msg9143, - "6697": msg9144, - "6698": msg9145, - "6699": msg9146, - "670": select577, - "6700": msg9147, - "6701": msg9148, - "6702": msg9149, - "6703": msg9150, - "6704": msg9151, - "6705": msg9152, - "6706": msg9153, - "6707": msg9154, - "6708": msg9155, - "6709": msg9156, - "671": select578, - "6710": msg9157, - "6711": msg9158, - "6712": msg9159, - "6713": msg9160, - "6714": msg9161, - "6715": msg9162, - "6716": msg9163, - "6717": msg9164, - "6718": msg9165, - "6719": msg9166, - "672": select579, - "6720": msg9167, - "6721": msg9168, - "6722": msg9169, - "6723": msg9170, - "6724": msg9171, - "6725": msg9172, - "6726": msg9173, - "6727": msg9174, - "6728": msg9175, - "6729": msg9176, - "673": select580, - "6730": msg9177, - "6731": msg9178, - "6732": msg9179, - "6733": msg9180, - "6734": msg9181, - "6735": msg9182, - "6736": msg9183, - "6737": msg9184, - "6738": msg9185, - "6739": msg9186, - "674": select581, - "6740": msg9187, - "6741": msg9188, - "6742": msg9189, - "6743": msg9190, - "6744": msg9191, - "6745": msg9192, - "6746": msg9193, - "6747": msg9194, - "6748": msg9195, - "6749": msg9196, - "675": select582, - "6750": msg9197, - "6751": msg9198, - "6752": msg9199, - "6753": msg9200, - "6754": msg9201, - "6755": msg9202, - "6756": msg9203, - "6757": msg9204, - "6758": msg9205, - "6759": msg9206, - "676": select583, - "6760": msg9207, - "6761": msg9208, - "6762": msg9209, - "6763": msg9210, - "6764": msg9211, - "6765": msg9212, - "6766": msg9213, - "6767": msg9214, - "6768": msg9215, - "6769": msg9216, - "677": select584, - "6770": msg9217, - "6771": msg9218, - "6772": msg9219, - "6773": msg9220, - "6774": msg9221, - "6775": msg9222, - "6776": msg9223, - "6777": msg9224, - "6778": msg9225, - "6779": msg9226, - "678": select585, - "6780": msg9227, - "6781": msg9228, - "6782": msg9229, - "6783": msg9230, - "6784": msg9231, - "6785": msg9232, - "6786": msg9233, - "6787": msg9234, - "6788": msg9235, - "6789": msg9236, - "679": select586, - "6790": msg9237, - "6791": msg9238, - "6792": msg9239, - "6793": msg9240, - "6794": msg9241, - "6795": msg9242, - "6796": msg9243, - "6797": msg9244, - "6798": msg9245, - "6799": msg9246, - "680": select587, - "6800": msg9247, - "6801": msg9248, - "6802": msg9249, - "6803": msg9250, - "6804": msg9251, - "6805": msg9252, - "6806": msg9253, - "6807": msg9254, - "6808": msg9255, - "6809": msg9256, - "681": select588, - "6810": msg9257, - "6811": msg9258, - "6812": msg9259, - "6813": msg9260, - "6814": msg9261, - "6815": msg9262, - "6816": msg9263, - "6817": msg9264, - "6818": msg9265, - "6819": msg9266, - "682": select589, - "6820": msg9267, - "6821": msg9268, - "6822": msg9269, - "6823": msg9270, - "6824": msg9271, - "6825": msg9272, - "6826": msg9273, - "6827": msg9274, - "6828": msg9275, - "6829": msg9276, - "683": select590, - "6830": msg9277, - "6831": msg9278, - "6832": msg9279, - "6833": msg9280, - "6834": msg9281, - "6835": msg9282, - "6836": msg9283, - "6837": msg9284, - "6838": msg9285, - "6839": msg9286, - "684": select591, - "6840": msg9287, - "6841": msg9288, - "6842": msg9289, - "6843": msg9290, - "6844": msg9291, - "6845": msg9292, - "6846": msg9293, - "6847": msg9294, - "6848": msg9295, - "6849": msg9296, - "685": select592, - "6850": msg9297, - "6851": msg9298, - "6852": msg9299, - "6853": msg9300, - "6854": msg9301, - "6855": msg9302, - "6856": msg9303, - "6857": msg9304, - "6858": msg9305, - "6859": msg9306, - "686": select593, - "6860": msg9307, - "6861": msg9308, - "6862": msg9309, - "6863": msg9310, - "6864": msg9311, - "6865": msg9312, - "6866": msg9313, - "6867": msg9314, - "6868": msg9315, - "6869": msg9316, - "687": select594, - "6870": msg9317, - "6871": msg9318, - "6872": msg9319, - "6873": msg9320, - "6874": msg9321, - "6875": msg9322, - "6876": msg9323, - "6877": msg9324, - "6878": msg9325, - "6879": msg9326, - "688": select595, - "6880": msg9327, - "6881": msg9328, - "6882": msg9329, - "6883": msg9330, - "6884": msg9331, - "6885": msg9332, - "6886": msg9333, - "6887": msg9334, - "6888": msg9335, - "6889": msg9336, - "689": select596, - "6890": msg9337, - "6891": msg9338, - "6892": msg9339, - "6893": msg9340, - "6894": msg9341, - "6895": msg9342, - "6896": msg9343, - "6897": msg9344, - "6898": msg9345, - "6899": msg9346, - "690": select597, - "6900": msg9347, - "6901": msg9348, - "6902": msg9349, - "6903": msg9350, - "6904": msg9351, - "6905": msg9352, - "6906": msg9353, - "6907": msg9354, - "6908": msg9355, - "6909": msg9356, - "691": select598, - "6910": msg9357, - "6911": msg9358, - "6912": msg9359, - "6913": msg9360, - "6914": msg9361, - "6915": msg9362, - "6916": msg9363, - "6917": msg9364, - "6918": msg9365, - "6919": msg9366, - "692": select599, - "6920": msg9367, - "6921": msg9368, - "6922": msg9369, - "6923": msg9370, - "6924": msg9371, - "6925": msg9372, - "6926": msg9373, - "6927": msg9374, - "6928": msg9375, - "6929": msg9376, - "693": select600, - "6930": msg9377, - "6931": msg9378, - "6932": msg9379, - "6933": msg9380, - "6934": msg9381, - "6935": msg9382, - "6936": msg9383, - "6937": msg9384, - "6938": msg9385, - "6939": msg9386, - "694": select601, - "6940": msg9387, - "6941": msg9388, - "6942": msg9389, - "6943": msg9390, - "6944": msg9391, - "6945": msg9392, - "6946": msg9393, - "6947": msg9394, - "6948": msg9395, - "6949": msg9396, - "695": select602, - "6950": msg9397, - "6951": msg9398, - "6952": msg9399, - "6953": msg9400, - "6954": msg9401, - "6955": msg9402, - "6956": msg9403, - "6957": msg9404, - "6958": msg9405, - "6959": msg9406, - "696": select603, - "6960": msg9407, - "6961": msg9408, - "6962": msg9409, - "6963": msg9410, - "6964": msg9411, - "6965": msg9412, - "6966": msg9413, - "6967": msg9414, - "6968": msg9415, - "6969": msg9416, - "697": select604, - "6970": msg9417, - "6971": msg9418, - "6972": msg9419, - "6973": msg9420, - "6974": msg9421, - "6975": msg9422, - "6976": msg9423, - "6977": msg9424, - "6978": msg9425, - "6979": msg9426, - "698": select605, - "6980": msg9427, - "6981": msg9428, - "6982": msg9429, - "6983": msg9430, - "6984": msg9431, - "6985": msg9432, - "6986": msg9433, - "6987": msg9434, - "6988": msg9435, - "6989": msg9436, - "699": select606, - "6990": msg9437, - "6991": msg9438, - "6992": msg9439, - "6993": msg9440, - "6994": msg9441, - "6995": msg9442, - "6996": msg9443, - "6997": msg9444, - "6998": msg9445, - "6999": msg9446, - "7": select12, - "700": select607, - "7000": msg9447, - "7001": msg9448, - "7002": msg9449, - "7003": msg9450, - "7004": msg9451, - "7005": msg9452, - "7006": msg9453, - "7007": msg9454, - "7008": msg9455, - "7009": msg9456, - "701": select608, - "7010": msg9457, - "7011": msg9458, - "7012": msg9459, - "7013": msg9460, - "7014": msg9461, - "7015": msg9462, - "7016": msg9463, - "7017": msg9464, - "7018": msg9465, - "7019": msg9466, - "702": select609, - "7020": msg9467, - "7021": msg9468, - "7022": msg9469, - "7023": msg9470, - "7024": msg9471, - "7025": msg9472, - "7026": msg9473, - "7027": msg9474, - "7028": msg9475, - "7029": msg9476, - "703": select610, - "7030": msg9477, - "7031": msg9478, - "7032": msg9479, - "7033": msg9480, - "7034": msg9481, - "7035": msg9482, - "7036": msg9483, - "7037": msg9484, - "7038": msg9485, - "7039": msg9486, - "704": select611, - "7040": msg9487, - "7041": msg9488, - "7042": msg9489, - "7043": msg9490, - "7044": msg9491, - "7045": msg9492, - "7046": msg9493, - "7047": msg9494, - "7048": msg9495, - "7049": msg9496, - "705": select612, - "7050": msg9497, - "7051": msg9498, - "7052": msg9499, - "7053": msg9500, - "7054": msg9501, - "7055": msg9502, - "7056": msg9503, - "7057": msg9504, - "7058": msg9505, - "7059": msg9506, - "706": select613, - "7060": msg9507, - "7061": msg9508, - "7062": msg9509, - "7063": msg9510, - "7064": msg9511, - "7065": msg9512, - "7066": msg9513, - "7067": msg9514, - "7068": msg9515, - "7069": msg9516, - "707": select614, - "7070": msg9517, - "7071": msg9518, - "7072": msg9519, - "7073": msg9520, - "7074": msg9521, - "7075": msg9522, - "7076": msg9523, - "7077": msg9524, - "7078": msg9525, - "7079": msg9526, - "708": select615, - "7080": msg9527, - "7081": msg9528, - "7082": msg9529, - "7083": msg9530, - "7084": msg9531, - "7085": msg9532, - "7086": msg9533, - "7087": msg9534, - "7088": msg9535, - "7089": msg9536, - "709": select616, - "7090": msg9537, - "7091": msg9538, - "7092": msg9539, - "7093": msg9540, - "7094": msg9541, - "7095": msg9542, - "7096": msg9543, - "7097": msg9544, - "7098": msg9545, - "7099": msg9546, - "710": select617, - "7100": msg9547, - "7101": msg9548, - "7102": msg9549, - "7103": msg9550, - "7104": msg9551, - "7105": msg9552, - "7106": msg9553, - "7107": msg9554, - "7108": msg9555, - "7109": msg9556, - "711": select618, - "7110": msg9557, - "7111": msg9558, - "7112": msg9559, - "7113": msg9560, - "7114": msg9561, - "7115": msg9562, - "7116": msg9563, - "7117": msg9564, - "7118": msg9565, - "7119": msg9566, - "712": select619, - "7120": msg9567, - "7121": msg9568, - "7122": msg9569, - "7123": msg9570, - "7124": msg9571, - "7125": msg9572, - "7126": msg9573, - "7127": msg9574, - "7128": msg9575, - "7129": msg9576, - "713": select620, - "7130": msg9577, - "7131": msg9578, - "7132": msg9579, - "7133": msg9580, - "7134": msg9581, - "7135": msg9582, - "7136": msg9583, - "7137": msg9584, - "7138": msg9585, - "7139": msg9586, - "714": select621, - "7140": msg9587, - "7141": msg9588, - "7142": msg9589, - "7143": msg9590, - "7144": msg9591, - "7145": msg9592, - "7146": msg9593, - "7147": msg9594, - "7148": msg9595, - "7149": msg9596, - "715": select622, - "7150": msg9597, - "7151": msg9598, - "7152": msg9599, - "7153": msg9600, - "7154": msg9601, - "7155": msg9602, - "7156": msg9603, - "7157": msg9604, - "7158": msg9605, - "7159": msg9606, - "716": select623, - "7160": msg9607, - "7161": msg9608, - "7162": msg9609, - "7163": msg9610, - "7164": msg9611, - "7165": msg9612, - "7166": msg9613, - "7167": msg9614, - "7168": msg9615, - "7169": msg9616, - "717": select624, - "7170": msg9617, - "7171": msg9618, - "7172": msg9619, - "7173": msg9620, - "7174": msg9621, - "7175": msg9622, - "7176": msg9623, - "7177": msg9624, - "7178": msg9625, - "7179": msg9626, - "718": select625, - "7180": msg9627, - "7181": msg9628, - "7182": msg9629, - "7183": msg9630, - "7184": msg9631, - "7185": msg9632, - "7186": msg9633, - "7187": msg9634, - "7188": msg9635, - "7189": msg9636, - "719": select626, - "7190": msg9637, - "7191": msg9638, - "7192": msg9639, - "7193": msg9640, - "7194": msg9641, - "7195": msg9642, - "7196": msg9643, - "7197": msg9644, - "7198": msg9645, - "7199": msg9646, - "720": select627, - "7200": msg9647, - "7201": msg9648, - "7202": msg9649, - "7203": msg9650, - "7204": msg9651, - "7205": msg9652, - "7206": msg9653, - "7207": msg9654, - "7208": msg9655, - "7209": msg9656, - "721": select628, - "7210": msg9657, - "7211": msg9658, - "7212": msg9659, - "7213": msg9660, - "7214": msg9661, - "7215": msg9662, - "7216": msg9663, - "7217": msg9664, - "7218": msg9665, - "7219": msg9666, - "722": select629, - "7220": msg9667, - "7221": msg9668, - "7222": msg9669, - "7223": msg9670, - "7224": msg9671, - "7225": msg9672, - "7226": msg9673, - "7227": msg9674, - "7228": msg9675, - "7229": msg9676, - "723": select630, - "7230": msg9677, - "7231": msg9678, - "7232": msg9679, - "7233": msg9680, - "7234": msg9681, - "7235": msg9682, - "7236": msg9683, - "7237": msg9684, - "7238": msg9685, - "7239": msg9686, - "724": select631, - "7240": msg9687, - "7241": msg9688, - "7242": msg9689, - "7243": msg9690, - "7244": msg9691, - "7245": msg9692, - "7246": msg9693, - "7247": msg9694, - "7248": msg9695, - "7249": msg9696, - "725": select632, - "7250": msg9697, - "7251": msg9698, - "7252": msg9699, - "7253": msg9700, - "7254": msg9701, - "7255": msg9702, - "7256": msg9703, - "7257": msg9704, - "7258": msg9705, - "7259": msg9706, - "726": select633, - "7260": msg9707, - "7261": msg9708, - "7262": msg9709, - "7263": msg9710, - "7264": msg9711, - "7265": msg9712, - "7266": msg9713, - "7267": msg9714, - "7268": msg9715, - "7269": msg9716, - "727": select634, - "7270": msg9717, - "7271": msg9718, - "7272": msg9719, - "7273": msg9720, - "7274": msg9721, - "7275": msg9722, - "7276": msg9723, - "7277": msg9724, - "7278": msg9725, - "7279": msg9726, - "728": select635, - "7280": msg9727, - "7281": msg9728, - "7282": msg9729, - "7283": msg9730, - "7284": msg9731, - "7285": msg9732, - "7286": msg9733, - "7287": msg9734, - "7288": msg9735, - "7289": msg9736, - "729": select636, - "7290": msg9737, - "7291": msg9738, - "7292": msg9739, - "7293": msg9740, - "7294": msg9741, - "7295": msg9742, - "7296": msg9743, - "7297": msg9744, - "7298": msg9745, - "7299": msg9746, - "730": select637, - "7300": msg9747, - "7301": msg9748, - "7302": msg9749, - "7303": msg9750, - "7304": msg9751, - "7305": msg9752, - "7306": msg9753, - "7307": msg9754, - "7308": msg9755, - "7309": msg9756, - "731": select638, - "7310": msg9757, - "7311": msg9758, - "7312": msg9759, - "7313": msg9760, - "7314": msg9761, - "7315": msg9762, - "7316": msg9763, - "7317": msg9764, - "7318": msg9765, - "7319": msg9766, - "732": select639, - "7320": msg9767, - "7321": msg9768, - "7322": msg9769, - "7323": msg9770, - "7324": msg9771, - "7325": msg9772, - "7326": msg9773, - "7327": msg9774, - "7328": msg9775, - "7329": msg9776, - "733": select640, - "7330": msg9777, - "7331": msg9778, - "7332": msg9779, - "7333": msg9780, - "7334": msg9781, - "7335": msg9782, - "7336": msg9783, - "7337": msg9784, - "7338": msg9785, - "7339": msg9786, - "734": select641, - "7340": msg9787, - "7341": msg9788, - "7342": msg9789, - "7343": msg9790, - "7344": msg9791, - "7345": msg9792, - "7346": msg9793, - "7347": msg9794, - "7348": msg9795, - "7349": msg9796, - "735": select642, - "7350": msg9797, - "7351": msg9798, - "7352": msg9799, - "7353": msg9800, - "7354": msg9801, - "7355": msg9802, - "7356": msg9803, - "7357": msg9804, - "7358": msg9805, - "7359": msg9806, - "736": select643, - "7360": msg9807, - "7361": msg9808, - "7362": msg9809, - "7363": msg9810, - "7364": msg9811, - "7365": msg9812, - "7366": msg9813, - "7367": msg9814, - "7368": msg9815, - "7369": msg9816, - "737": select644, - "7370": msg9817, - "7371": msg9818, - "7372": msg9819, - "7373": msg9820, - "7374": msg9821, - "7375": msg9822, - "7376": msg9823, - "7377": msg9824, - "7378": msg9825, - "7379": msg9826, - "738": select645, - "7380": msg9827, - "7381": msg9828, - "7382": msg9829, - "7383": msg9830, - "7384": msg9831, - "7385": msg9832, - "7386": msg9833, - "7387": msg9834, - "7388": msg9835, - "7389": msg9836, - "739": select646, - "7390": msg9837, - "7391": msg9838, - "7392": msg9839, - "7393": msg9840, - "7394": msg9841, - "7395": msg9842, - "7396": msg9843, - "7397": msg9844, - "7398": msg9845, - "7399": msg9846, - "740": select647, - "7400": msg9847, - "7401": msg9848, - "7402": msg9849, - "7403": msg9850, - "7404": msg9851, - "7405": msg9852, - "7406": msg9853, - "7407": msg9854, - "7408": msg9855, - "7409": msg9856, - "741": select648, - "7410": msg9857, - "7411": msg9858, - "7412": msg9859, - "7413": msg9860, - "7414": msg9861, - "7415": msg9862, - "7416": msg9863, - "7417": msg9864, - "7418": msg9865, - "7419": msg9866, - "742": select649, - "7420": msg9867, - "7421": msg9868, - "7422": msg9869, - "7423": msg9870, - "7424": msg9871, - "7425": msg9872, - "7426": msg9873, - "7427": msg9874, - "7428": msg9875, - "7429": msg9876, - "743": select650, - "7430": msg9877, - "7431": msg9878, - "7432": msg9879, - "7433": msg9880, - "7434": msg9881, - "7435": msg9882, - "7436": msg9883, - "7437": msg9884, - "7438": msg9885, - "7439": msg9886, - "744": select651, - "7440": msg9887, - "7441": msg9888, - "7442": msg9889, - "7443": msg9890, - "7444": msg9891, - "7445": msg9892, - "7446": msg9893, - "7447": msg9894, - "7448": msg9895, - "7449": msg9896, - "745": select652, - "7450": msg9897, - "7451": msg9898, - "7452": msg9899, - "7453": msg9900, - "7454": msg9901, - "7455": msg9902, - "7456": msg9903, - "7457": msg9904, - "7458": msg9905, - "7459": msg9906, - "746": select653, - "7460": msg9907, - "7461": msg9908, - "7462": msg9909, - "7463": msg9910, - "7464": msg9911, - "7465": msg9912, - "7466": msg9913, - "7467": msg9914, - "7468": msg9915, - "7469": msg9916, - "747": select654, - "7470": msg9917, - "7471": msg9918, - "7472": msg9919, - "7473": msg9920, - "7474": msg9921, - "7475": msg9922, - "7476": msg9923, - "7477": msg9924, - "7478": msg9925, - "7479": msg9926, - "748": select655, - "7480": msg9927, - "7481": msg9928, - "7482": msg9929, - "7483": msg9930, - "7484": msg9931, - "7485": msg9932, - "7486": msg9933, - "7487": msg9934, - "7488": msg9935, - "7489": msg9936, - "749": select656, - "7490": msg9937, - "7491": msg9938, - "7492": msg9939, - "7493": msg9940, - "7494": msg9941, - "7495": msg9942, - "7496": msg9943, - "7497": msg9944, - "7498": msg9945, - "7499": msg9946, - "7500": msg9947, - "7501": msg9948, - "7502": msg9949, - "7503": msg9950, - "7504": msg9951, - "7505": msg9952, - "7506": msg9953, - "7507": msg9954, - "7508": msg9955, - "7509": msg9956, - "751": select657, - "7510": msg9957, - "7511": msg9958, - "7512": msg9959, - "7513": msg9960, - "7514": msg9961, - "7515": msg9962, - "7516": msg9963, - "7517": msg9964, - "7518": msg9965, - "7519": msg9966, - "752": select658, - "7520": msg9967, - "7521": msg9968, - "7522": msg9969, - "7523": msg9970, - "7524": msg9971, - "7525": msg9972, - "7526": msg9973, - "7527": msg9974, - "7528": msg9975, - "7529": msg9976, - "753": select659, - "7530": msg9977, - "7531": msg9978, - "7532": msg9979, - "7533": msg9980, - "7534": msg9981, - "7535": msg9982, - "7536": msg9983, - "7537": msg9984, - "7538": msg9985, - "7539": msg9986, - "754": select660, - "7540": msg9987, - "7541": msg9988, - "7542": msg9989, - "7543": msg9990, - "7544": msg9991, - "7545": msg9992, - "7546": msg9993, - "7547": msg9994, - "7548": msg9995, - "7549": msg9996, - "755": select661, - "7550": msg9997, - "7551": msg9998, - "7552": msg9999, - "7553": msg10000, - "7554": msg10001, - "7555": msg10002, - "7556": msg10003, - "7557": msg10004, - "7558": msg10005, - "7559": msg10006, - "756": select662, - "7560": msg10007, - "7561": msg10008, - "7562": msg10009, - "7563": msg10010, - "7564": msg10011, - "7565": msg10012, - "7566": msg10013, - "7567": msg10014, - "7568": msg10015, - "7569": msg10016, - "757": select663, - "7570": msg10017, - "7571": msg10018, - "7572": msg10019, - "7573": msg10020, - "7574": msg10021, - "7575": msg10022, - "7576": msg10023, - "7577": msg10024, - "7578": msg10025, - "7579": msg10026, - "758": select664, - "7580": msg10027, - "7581": msg10028, - "7582": msg10029, - "7583": msg10030, - "7584": msg10031, - "7585": msg10032, - "7586": msg10033, - "7587": msg10034, - "7588": msg10035, - "7589": msg10036, - "759": select665, - "7590": msg10037, - "7591": msg10038, - "7592": msg10039, - "7593": msg10040, - "7594": msg10041, - "7595": msg10042, - "7596": msg10043, - "7597": msg10044, - "7598": msg10045, - "7599": msg10046, - "760": select666, - "7600": msg10047, - "7601": msg10048, - "7602": msg10049, - "7603": msg10050, - "7604": msg10051, - "7605": msg10052, - "7606": msg10053, - "7607": msg10054, - "7608": msg10055, - "7609": msg10056, - "761": select667, - "7610": msg10057, - "7611": msg10058, - "7612": msg10059, - "7613": msg10060, - "7614": msg10061, - "7615": msg10062, - "7616": msg10063, - "7617": msg10064, - "7618": msg10065, - "7619": msg10066, - "762": select668, - "7620": msg10067, - "7621": msg10068, - "7622": msg10069, - "7623": msg10070, - "7624": msg10071, - "7625": msg10072, - "7626": msg10073, - "7627": msg10074, - "7628": msg10075, - "7629": msg10076, - "763": select669, - "7630": msg10077, - "7631": msg10078, - "7632": msg10079, - "7633": msg10080, - "7634": msg10081, - "7635": msg10082, - "7636": msg10083, - "7637": msg10084, - "7638": msg10085, - "7639": msg10086, - "764": select670, - "7640": msg10087, - "7641": msg10088, - "7642": msg10089, - "7643": msg10090, - "7644": msg10091, - "7645": msg10092, - "7646": msg10093, - "7647": msg10094, - "7648": msg10095, - "7649": msg10096, - "765": select671, - "7650": msg10097, - "7651": msg10098, - "7652": msg10099, - "7653": msg10100, - "7654": msg10101, - "7655": msg10102, - "7656": msg10103, - "7657": msg10104, - "7658": msg10105, - "7659": msg10106, - "766": select672, - "7660": msg10107, - "7661": msg10108, - "7662": msg10109, - "7663": msg10110, - "7664": msg10111, - "7665": msg10112, - "7666": msg10113, - "7667": msg10114, - "7668": msg10115, - "7669": msg10116, - "767": select673, - "7670": msg10117, - "7671": msg10118, - "7672": msg10119, - "7673": msg10120, - "7674": msg10121, - "7675": msg10122, - "7676": msg10123, - "7677": msg10124, - "7678": msg10125, - "7679": msg10126, - "768": select674, - "7680": msg10127, - "7681": msg10128, - "7682": msg10129, - "7683": msg10130, - "7684": msg10131, - "7685": msg10132, - "7686": msg10133, - "7687": msg10134, - "7688": msg10135, - "7689": msg10136, - "769": select675, - "7690": msg10137, - "7691": msg10138, - "7692": msg10139, - "7693": msg10140, - "7694": msg10141, - "7695": msg10142, - "7696": msg10143, - "7697": msg10144, - "7698": msg10145, - "7699": msg10146, - "770": select676, - "7700": msg10147, - "7701": msg10148, - "7702": msg10149, - "7703": msg10150, - "7704": msg10151, - "7705": msg10152, - "7706": msg10153, - "7707": msg10154, - "7708": msg10155, - "7709": msg10156, - "771": select677, - "7710": msg10157, - "7711": msg10158, - "7712": msg10159, - "7713": msg10160, - "7714": msg10161, - "7715": msg10162, - "7716": msg10163, - "7717": msg10164, - "7718": msg10165, - "7719": msg10166, - "772": select678, - "7720": msg10167, - "7721": msg10168, - "7722": msg10169, - "7723": msg10170, - "7724": msg10171, - "7725": msg10172, - "7726": msg10173, - "7727": msg10174, - "7728": msg10175, - "7729": msg10176, - "773": select679, - "7730": msg10177, - "7731": msg10178, - "7732": msg10179, - "7733": msg10180, - "7734": msg10181, - "7735": msg10182, - "7736": msg10183, - "7737": msg10184, - "7738": msg10185, - "7739": msg10186, - "774": select680, - "7740": msg10187, - "7741": msg10188, - "7742": msg10189, - "7743": msg10190, - "7744": msg10191, - "7745": msg10192, - "7746": msg10193, - "7747": msg10194, - "7748": msg10195, - "7749": msg10196, - "775": select681, - "7750": msg10197, - "7751": msg10198, - "7752": msg10199, - "7753": msg10200, - "7754": msg10201, - "7755": msg10202, - "7756": msg10203, - "7757": msg10204, - "7758": msg10205, - "7759": msg10206, - "776": select682, - "7760": msg10207, - "7761": msg10208, - "7762": msg10209, - "7763": msg10210, - "7764": msg10211, - "7765": msg10212, - "7766": msg10213, - "7767": msg10214, - "7768": msg10215, - "7769": msg10216, - "777": select683, - "7770": msg10217, - "7771": msg10218, - "7772": msg10219, - "7773": msg10220, - "7774": msg10221, - "7775": msg10222, - "7776": msg10223, - "7777": msg10224, - "7778": msg10225, - "7779": msg10226, - "778": select684, - "7780": msg10227, - "7781": msg10228, - "7782": msg10229, - "7783": msg10230, - "7784": msg10231, - "7785": msg10232, - "7786": msg10233, - "7787": msg10234, - "7788": msg10235, - "7789": msg10236, - "779": select685, - "7790": msg10237, - "7791": msg10238, - "7792": msg10239, - "7793": msg10240, - "7794": msg10241, - "7795": msg10242, - "7796": msg10243, - "7797": msg10244, - "7798": msg10245, - "7799": msg10246, - "780": select686, - "7800": msg10247, - "7801": msg10248, - "7802": msg10249, - "7803": msg10250, - "7804": msg10251, - "7805": msg10252, - "7806": msg10253, - "7807": msg10254, - "7808": msg10255, - "7809": msg10256, - "781": select687, - "7810": msg10257, - "7811": msg10258, - "7812": msg10259, - "7813": msg10260, - "7814": msg10261, - "7815": msg10262, - "7816": msg10263, - "7817": msg10264, - "7818": msg10265, - "7819": msg10266, - "782": select688, - "7820": msg10267, - "7821": msg10268, - "7822": msg10269, - "7823": msg10270, - "7824": msg10271, - "7825": msg10272, - "7826": msg10273, - "7827": msg10274, - "7828": msg10275, - "7829": msg10276, - "783": select689, - "7830": msg10277, - "7831": msg10278, - "7832": msg10279, - "7833": msg10280, - "7834": msg10281, - "7835": msg10282, - "7836": msg10283, - "7837": msg10284, - "7838": msg10285, - "7839": msg10286, - "784": select690, - "7840": msg10287, - "7841": msg10288, - "7842": msg10289, - "7843": msg10290, - "7844": msg10291, - "7845": msg10292, - "7846": msg10293, - "7847": msg10294, - "7848": msg10295, - "7849": msg10296, - "785": select691, - "7850": msg10297, - "7851": msg10298, - "7852": msg10299, - "7853": msg10300, - "7854": msg10301, - "7855": msg10302, - "7856": msg10303, - "7857": msg10304, - "7858": msg10305, - "7859": msg10306, - "786": select692, - "7860": msg10307, - "7861": msg10308, - "7862": msg10309, - "7863": msg10310, - "7864": msg10311, - "7865": msg10312, - "7866": msg10313, - "7867": msg10314, - "7868": msg10315, - "7869": msg10316, - "787": select693, - "7870": msg10317, - "7871": msg10318, - "7872": msg10319, - "7873": msg10320, - "7874": msg10321, - "7875": msg10322, - "7876": msg10323, - "7877": msg10324, - "7878": msg10325, - "7879": msg10326, - "788": select694, - "7880": msg10327, - "7881": msg10328, - "7882": msg10329, - "7883": msg10330, - "7884": msg10331, - "7885": msg10332, - "7886": msg10333, - "7887": msg10334, - "7888": msg10335, - "7889": msg10336, - "789": select695, - "7890": msg10337, - "7891": msg10338, - "7892": msg10339, - "7893": msg10340, - "7894": msg10341, - "7895": msg10342, - "7896": msg10343, - "7897": msg10344, - "7898": msg10345, - "7899": msg10346, - "790": select696, - "7900": msg10347, - "7901": msg10348, - "7902": msg10349, - "7903": msg10350, - "7904": msg10351, - "7905": msg10352, - "7906": msg10353, - "7907": msg10354, - "7908": msg10355, - "7909": msg10356, - "791": select697, - "7910": msg10357, - "7911": msg10358, - "7912": msg10359, - "7913": msg10360, - "7914": msg10361, - "7915": msg10362, - "7916": msg10363, - "7917": msg10364, - "7918": msg10365, - "7919": msg10366, - "792": select698, - "7920": msg10367, - "7921": msg10368, - "7922": msg10369, - "7923": msg10370, - "7924": msg10371, - "7925": msg10372, - "7926": msg10373, - "7927": msg10374, - "7928": msg10375, - "7929": msg10376, - "793": select699, - "7930": msg10377, - "7931": msg10378, - "7932": msg10379, - "7933": msg10380, - "7934": msg10381, - "7935": msg10382, - "7936": msg10383, - "7937": msg10384, - "7938": msg10385, - "7939": msg10386, - "794": select700, - "7940": msg10387, - "7941": msg10388, - "7942": msg10389, - "7943": msg10390, - "7944": msg10391, - "7945": msg10392, - "7946": msg10393, - "7947": msg10394, - "7948": msg10395, - "7949": msg10396, - "795": select701, - "7950": msg10397, - "7951": msg10398, - "7952": msg10399, - "7953": msg10400, - "7954": msg10401, - "7955": msg10402, - "7956": msg10403, - "7957": msg10404, - "7958": msg10405, - "7959": msg10406, - "796": select702, - "7960": msg10407, - "7961": msg10408, - "7962": msg10409, - "7963": msg10410, - "7964": msg10411, - "7965": msg10412, - "7966": msg10413, - "7967": msg10414, - "7968": msg10415, - "7969": msg10416, - "797": select703, - "7970": msg10417, - "7971": msg10418, - "7972": msg10419, - "7973": msg10420, - "7974": msg10421, - "7975": msg10422, - "7976": msg10423, - "7977": msg10424, - "7978": msg10425, - "7979": msg10426, - "798": select704, - "7980": msg10427, - "7981": msg10428, - "7982": msg10429, - "7983": msg10430, - "7984": msg10431, - "7985": msg10432, - "7986": msg10433, - "7987": msg10434, - "7988": msg10435, - "7989": msg10436, - "799": select705, - "7990": msg10437, - "7991": msg10438, - "7992": msg10439, - "7993": msg10440, - "7994": msg10441, - "7995": msg10442, - "7996": msg10443, - "7997": msg10444, - "7998": msg10445, - "7999": msg10446, - "8": select13, - "800": select706, - "8000": msg10447, - "8001": msg10448, - "8002": msg10449, - "8003": msg10450, - "8004": msg10451, - "8005": msg10452, - "8006": msg10453, - "8007": msg10454, - "8008": msg10455, - "8009": msg10456, - "801": select707, - "8010": msg10457, - "8011": msg10458, - "8012": msg10459, - "8013": msg10460, - "8014": msg10461, - "8015": msg10462, - "8016": msg10463, - "8017": msg10464, - "8018": msg10465, - "8019": msg10466, - "802": select708, - "8020": msg10467, - "8021": msg10468, - "8022": msg10469, - "8023": msg10470, - "8024": msg10471, - "8025": msg10472, - "8026": msg10473, - "8027": msg10474, - "8028": msg10475, - "8029": msg10476, - "803": select709, - "8030": msg10477, - "8031": msg10478, - "8032": msg10479, - "8033": msg10480, - "8034": msg10481, - "8035": msg10482, - "8036": msg10483, - "8037": msg10484, - "8038": msg10485, - "8039": msg10486, - "804": select710, - "8040": msg10487, - "8041": msg10488, - "8042": msg10489, - "8043": msg10490, - "8044": msg10491, - "8045": msg10492, - "8046": msg10493, - "8047": msg10494, - "8048": msg10495, - "8049": msg10496, - "805": select711, - "8050": msg10497, - "8051": msg10498, - "8052": msg10499, - "8053": msg10500, - "8054": msg10501, - "8055": msg10502, - "8056": msg10503, - "8057": msg10504, - "8058": msg10505, - "8059": msg10506, - "806": select712, - "8060": msg10507, - "8061": msg10508, - "8062": msg10509, - "8063": msg10510, - "8064": msg10511, - "8065": msg10512, - "8066": msg10513, - "8067": msg10514, - "8068": msg10515, - "8069": msg10516, - "807": select713, - "8070": msg10517, - "8071": msg10518, - "8072": msg10519, - "8073": msg10520, - "8074": msg10521, - "8075": msg10522, - "8076": msg10523, - "8077": msg10524, - "8078": msg10525, - "8079": msg10526, - "808": select714, - "8080": msg10527, - "8081": msg10528, - "8082": msg10529, - "8083": msg10530, - "8084": msg10531, - "8085": msg10532, - "8086": msg10533, - "8087": msg10534, - "8088": msg10535, - "8089": msg10536, - "809": select715, - "8090": msg10537, - "8091": msg10538, - "8092": msg10539, - "8093": msg10540, - "8094": msg10541, - "8095": msg10542, - "8096": msg10543, - "8097": msg10544, - "8098": msg10545, - "8099": msg10546, - "810": select716, - "8100": msg10547, - "8101": msg10548, - "8102": msg10549, - "8103": msg10550, - "8104": msg10551, - "8105": msg10552, - "8106": msg10553, - "8107": msg10554, - "8108": msg10555, - "8109": msg10556, - "811": select717, - "8110": msg10557, - "8111": msg10558, - "8112": msg10559, - "8113": msg10560, - "8114": msg10561, - "8115": msg10562, - "8116": msg10563, - "8117": msg10564, - "8118": msg10565, - "8119": msg10566, - "812": select718, - "8120": msg10567, - "8121": msg10568, - "8122": msg10569, - "8123": msg10570, - "8124": msg10571, - "8125": msg10572, - "8126": msg10573, - "8127": msg10574, - "8128": msg10575, - "8129": msg10576, - "813": select719, - "8130": msg10577, - "8131": msg10578, - "8132": msg10579, - "8133": msg10580, - "8134": msg10581, - "8135": msg10582, - "8136": msg10583, - "8137": msg10584, - "8138": msg10585, - "8139": msg10586, - "8140": msg10587, - "8141": msg10588, - "8142": msg10589, - "8143": msg10590, - "8144": msg10591, - "8145": msg10592, - "8146": msg10593, - "8147": msg10594, - "8148": msg10595, - "8149": msg10596, - "815": select720, - "8150": msg10597, - "8151": msg10598, - "8152": msg10599, - "8153": msg10600, - "8154": msg10601, - "8155": msg10602, - "8156": msg10603, - "8157": msg10604, - "8158": msg10605, - "8159": msg10606, - "8160": msg10607, - "8161": msg10608, - "8162": msg10609, - "8163": msg10610, - "8164": msg10611, - "8165": msg10612, - "8166": msg10613, - "8167": msg10614, - "8168": msg10615, - "8169": msg10616, - "817": select721, - "8170": msg10617, - "8171": msg10618, - "8172": msg10619, - "8173": msg10620, - "8174": msg10621, - "8175": msg10622, - "8176": msg10623, - "8177": msg10624, - "8178": msg10625, - "8179": msg10626, - "818": select722, - "8180": msg10627, - "8181": msg10628, - "8182": msg10629, - "8183": msg10630, - "8184": msg10631, - "8185": msg10632, - "8186": msg10633, - "8187": msg10634, - "8188": msg10635, - "8189": msg10636, - "819": select723, - "8190": msg10637, - "8191": msg10638, - "8192": msg10639, - "8193": msg10640, - "8194": msg10641, - "8195": msg10642, - "8196": msg10643, - "8197": msg10644, - "8198": msg10645, - "8199": msg10646, - "820": select724, - "8200": msg10647, - "8201": msg10648, - "8202": msg10649, - "8203": msg10650, - "8204": msg10651, - "8205": msg10652, - "8206": msg10653, - "8207": msg10654, - "8208": msg10655, - "8209": msg10656, - "821": select725, - "8210": msg10657, - "8211": msg10658, - "8212": msg10659, - "8213": msg10660, - "8214": msg10661, - "8215": msg10662, - "8216": msg10663, - "8217": msg10664, - "8218": msg10665, - "8219": msg10666, - "8220": msg10667, - "8221": msg10668, - "8222": msg10669, - "8223": msg10670, - "8224": msg10671, - "8225": msg10672, - "8226": msg10673, - "8227": msg10674, - "8228": msg10675, - "8229": msg10676, - "823": select726, - "8230": msg10677, - "8231": msg10678, - "8232": msg10679, - "8233": msg10680, - "8234": msg10681, - "8235": msg10682, - "8236": msg10683, - "8237": msg10684, - "8238": msg10685, - "8239": msg10686, - "824": select727, - "8240": msg10687, - "8241": msg10688, - "8242": msg10689, - "8243": msg10690, - "8244": msg10691, - "8245": msg10692, - "8246": msg10693, - "8247": msg10694, - "8248": msg10695, - "8249": msg10696, - "825": select728, - "8250": msg10697, - "8251": msg10698, - "8252": msg10699, - "8253": msg10700, - "8254": msg10701, - "8255": msg10702, - "8256": msg10703, - "8257": msg10704, - "8258": msg10705, - "8259": msg10706, - "826": select729, - "8260": msg10707, - "8261": msg10708, - "8262": msg10709, - "8263": msg10710, - "8264": msg10711, - "8265": msg10712, - "8266": msg10713, - "8267": msg10714, - "8268": msg10715, - "8269": msg10716, - "827": select730, - "8270": msg10717, - "8271": msg10718, - "8272": msg10719, - "8273": msg10720, - "8274": msg10721, - "8275": msg10722, - "8276": msg10723, - "8277": msg10724, - "8278": msg10725, - "8279": msg10726, - "828": select731, - "8280": msg10727, - "8281": msg10728, - "8282": msg10729, - "8283": msg10730, - "8284": msg10731, - "8285": msg10732, - "8286": msg10733, - "8287": msg10734, - "8288": msg10735, - "8289": msg10736, - "829": select732, - "8290": msg10737, - "8291": msg10738, - "8292": msg10739, - "8293": msg10740, - "8294": msg10741, - "8295": msg10742, - "8296": msg10743, - "8297": msg10744, - "8298": msg10745, - "8299": msg10746, - "830": select733, - "8300": msg10747, - "8301": msg10748, - "8302": msg10749, - "8303": msg10750, - "8304": msg10751, - "8305": msg10752, - "8306": msg10753, - "8307": msg10754, - "8308": msg10755, - "8309": msg10756, - "8310": msg10757, - "8311": msg10758, - "8312": msg10759, - "8313": msg10760, - "8314": msg10761, - "8315": msg10762, - "8316": msg10763, - "8317": msg10764, - "8318": msg10765, - "8319": msg10766, - "832": select734, - "8320": msg10767, - "8321": msg10768, - "8322": msg10769, - "8323": msg10770, - "8324": msg10771, - "8325": msg10772, - "8326": msg10773, - "8327": msg10774, - "8328": msg10775, - "8329": msg10776, - "833": select735, - "8330": msg10777, - "8331": msg10778, - "8332": msg10779, - "8333": msg10780, - "8334": msg10781, - "8335": msg10782, - "8336": msg10783, - "8337": msg10784, - "8338": msg10785, - "8339": msg10786, - "834": select736, - "8340": msg10787, - "8341": msg10788, - "8342": msg10789, - "8343": msg10790, - "8344": msg10791, - "8345": msg10792, - "8346": msg10793, - "8347": msg10794, - "8348": msg10795, - "8349": msg10796, - "835": select737, - "8350": msg10797, - "8351": msg10798, - "8352": msg10799, - "8353": msg10800, - "8354": msg10801, - "8355": msg10802, - "8356": msg10803, - "8357": msg10804, - "8358": msg10805, - "8359": msg10806, - "836": select738, - "8360": msg10807, - "8361": msg10808, - "8362": msg10809, - "8363": msg10810, - "8364": msg10811, - "8365": msg10812, - "8366": msg10813, - "8367": msg10814, - "8368": msg10815, - "8369": msg10816, - "837": select739, - "8370": msg10817, - "8371": msg10818, - "8372": msg10819, - "8373": msg10820, - "8374": msg10821, - "8375": msg10822, - "8376": msg10823, - "8377": msg10824, - "8378": msg10825, - "8379": msg10826, - "838": select740, - "8380": msg10827, - "8381": msg10828, - "8382": msg10829, - "8383": msg10830, - "8384": msg10831, - "8385": msg10832, - "8386": msg10833, - "8387": msg10834, - "8388": msg10835, - "8389": msg10836, - "839": select741, - "8390": msg10837, - "8391": msg10838, - "8392": msg10839, - "8393": msg10840, - "8394": msg10841, - "8395": msg10842, - "8396": msg10843, - "8397": msg10844, - "8398": msg10845, - "8399": msg10846, - "840": select742, - "8400": msg10847, - "8401": msg10848, - "8402": msg10849, - "8403": msg10850, - "8404": msg10851, - "8405": msg10852, - "8406": msg10853, - "8407": msg10854, - "8408": msg10855, - "8409": msg10856, - "841": select743, - "8410": msg10857, - "8411": msg10858, - "8412": msg10859, - "8413": msg10860, - "8414": msg10861, - "8415": msg10862, - "8416": msg10863, - "8417": msg10864, - "8418": msg10865, - "8419": msg10866, - "842": select744, - "8420": msg10867, - "8421": msg10868, - "8422": msg10869, - "8423": msg10870, - "8424": msg10871, - "8425": msg10872, - "8426": msg10873, - "8427": msg10874, - "8428": msg10875, - "8429": msg10876, - "843": select745, - "8430": msg10877, - "8431": msg10878, - "8432": msg10879, - "8433": msg10880, - "8434": msg10881, - "8435": msg10882, - "8436": msg10883, - "8437": msg10884, - "8438": msg10885, - "8439": msg10886, - "844": select746, - "8440": msg10887, - "8441": msg10888, - "8442": msg10889, - "8443": msg10890, - "8444": msg10891, - "8445": msg10892, - "8446": msg10893, - "8447": msg10894, - "8448": msg10895, - "8449": msg10896, - "845": select747, - "8450": msg10897, - "8451": msg10898, - "8452": msg10899, - "8453": msg10900, - "8454": msg10901, - "8455": msg10902, - "8456": msg10903, - "8457": msg10904, - "8458": msg10905, - "8459": msg10906, - "846": select748, - "8460": msg10907, - "8461": msg10908, - "8462": msg10909, - "8463": msg10910, - "8464": msg10911, - "8465": msg10912, - "8466": msg10913, - "8467": msg10914, - "8468": msg10915, - "8469": msg10916, - "847": select749, - "8470": msg10917, - "8471": msg10918, - "8472": msg10919, - "8473": msg10920, - "8474": msg10921, - "8475": msg10922, - "8476": msg10923, - "8477": msg10924, - "8478": msg10925, - "8479": msg10926, - "848": select750, - "8480": msg10927, - "8481": msg10928, - "8482": msg10929, - "8483": msg10930, - "8484": msg10931, - "8485": msg10932, - "8486": msg10933, - "8487": msg10934, - "8488": msg10935, - "8489": msg10936, - "849": select751, - "8490": msg10937, - "8491": msg10938, - "8492": msg10939, - "8493": msg10940, - "8494": msg10941, - "8495": msg10942, - "8496": msg10943, - "8497": msg10944, - "8498": msg10945, - "8499": msg10946, - "850": select752, - "8500": msg10947, - "8501": msg10948, - "8502": msg10949, - "8503": msg10950, - "8504": msg10951, - "8505": msg10952, - "8506": msg10953, - "8507": msg10954, - "8508": msg10955, - "8509": msg10956, - "851": select753, - "8510": msg10957, - "8511": msg10958, - "8512": msg10959, - "8513": msg10960, - "8514": msg10961, - "8515": msg10962, - "8516": msg10963, - "8517": msg10964, - "8518": msg10965, - "8519": msg10966, - "852": select754, - "8520": msg10967, - "8521": msg10968, - "8522": msg10969, - "8523": msg10970, - "8524": msg10971, - "8525": msg10972, - "8526": msg10973, - "8527": msg10974, - "8528": msg10975, - "8529": msg10976, - "853": select755, - "8530": msg10977, - "8531": msg10978, - "8532": msg10979, - "8533": msg10980, - "8534": msg10981, - "8535": msg10982, - "8536": msg10983, - "8537": msg10984, - "8538": msg10985, - "8539": msg10986, - "854": select756, - "8540": msg10987, - "8541": msg10988, - "8542": msg10989, - "8543": msg10990, - "8544": msg10991, - "8545": msg10992, - "8546": msg10993, - "8547": msg10994, - "8548": msg10995, - "8549": msg10996, - "855": select757, - "8550": msg10997, - "8551": msg10998, - "8552": msg10999, - "8553": msg11000, - "8554": msg11001, - "8555": msg11002, - "8556": msg11003, - "8557": msg11004, - "8558": msg11005, - "8559": msg11006, - "856": select758, - "8560": msg11007, - "8561": msg11008, - "8562": msg11009, - "8563": msg11010, - "8564": msg11011, - "8565": msg11012, - "8566": msg11013, - "8567": msg11014, - "8568": msg11015, - "8569": msg11016, - "857": select759, - "8570": msg11017, - "8571": msg11018, - "8572": msg11019, - "8573": msg11020, - "8574": msg11021, - "8575": msg11022, - "8576": msg11023, - "8577": msg11024, - "8578": msg11025, - "8579": msg11026, - "858": select760, - "8580": msg11027, - "8581": msg11028, - "8582": msg11029, - "8583": msg11030, - "8584": msg11031, - "8585": msg11032, - "8586": msg11033, - "8587": msg11034, - "8588": msg11035, - "8589": msg11036, - "859": select761, - "8590": msg11037, - "8591": msg11038, - "8592": msg11039, - "8593": msg11040, - "8594": msg11041, - "8595": msg11042, - "8596": msg11043, - "8597": msg11044, - "8598": msg11045, - "8599": msg11046, - "860": select762, - "8600": msg11047, - "8601": msg11048, - "8602": msg11049, - "8603": msg11050, - "8604": msg11051, - "8605": msg11052, - "8606": msg11053, - "8607": msg11054, - "8608": msg11055, - "8609": msg11056, - "861": select763, - "8610": msg11057, - "8611": msg11058, - "8612": msg11059, - "8613": msg11060, - "8614": msg11061, - "8615": msg11062, - "8616": msg11063, - "8617": msg11064, - "8618": msg11065, - "8619": msg11066, - "862": select764, - "8620": msg11067, - "8621": msg11068, - "8622": msg11069, - "8623": msg11070, - "8624": msg11071, - "8625": msg11072, - "8626": msg11073, - "8627": msg11074, - "8628": msg11075, - "8629": msg11076, - "863": select765, - "8630": msg11077, - "8631": msg11078, - "8632": msg11079, - "8633": msg11080, - "8634": msg11081, - "8635": msg11082, - "8636": msg11083, - "8637": msg11084, - "8638": msg11085, - "8639": msg11086, - "864": select766, - "8640": msg11087, - "8641": msg11088, - "8642": msg11089, - "8643": msg11090, - "8644": msg11091, - "8645": msg11092, - "8646": msg11093, - "8647": msg11094, - "8648": msg11095, - "8649": msg11096, - "865": select767, - "8650": msg11097, - "8651": msg11098, - "8652": msg11099, - "8653": msg11100, - "8654": msg11101, - "8655": msg11102, - "8656": msg11103, - "8657": msg11104, - "8658": msg11105, - "8659": msg11106, - "866": select768, - "8660": msg11107, - "8661": msg11108, - "8662": msg11109, - "8663": msg11110, - "8664": msg11111, - "8665": msg11112, - "8666": msg11113, - "8667": msg11114, - "8668": msg11115, - "8669": msg11116, - "867": select769, - "8670": msg11117, - "8671": msg11118, - "8672": msg11119, - "8673": msg11120, - "8674": msg11121, - "8675": msg11122, - "8676": msg11123, - "8677": msg11124, - "8678": msg11125, - "8679": msg11126, - "868": select770, - "8680": msg11127, - "8681": msg11128, - "8682": msg11129, - "8683": msg11130, - "8684": msg11131, - "8685": msg11132, - "8686": msg11133, - "8687": msg11134, - "8688": msg11135, - "8689": msg11136, - "869": select771, - "8690": msg11137, - "8691": msg11138, - "8692": msg11139, - "8693": msg11140, - "8694": msg11141, - "8695": msg11142, - "8696": msg11143, - "8697": msg11144, - "8698": msg11145, - "8699": msg11146, - "870": select772, - "8700": msg11147, - "8701": msg11148, - "8702": msg11149, - "8703": msg11150, - "8704": msg11151, - "8705": msg11152, - "8706": msg11153, - "8707": msg11154, - "8708": msg11155, - "8709": msg11156, - "871": select773, - "8710": msg11157, - "8711": msg11158, - "8712": msg11159, - "8713": msg11160, - "8714": msg11161, - "8715": msg11162, - "8716": msg11163, - "8717": msg11164, - "8718": msg11165, - "8719": msg11166, - "872": select774, - "8720": msg11167, - "8721": msg11168, - "8722": msg11169, - "8723": msg11170, - "8724": msg11171, - "8725": msg11172, - "8726": msg11173, - "8727": msg11174, - "8728": msg11175, - "8729": msg11176, - "873": select775, - "8730": msg11177, - "8731": msg11178, - "8732": msg11179, - "8733": msg11180, - "8734": msg11181, - "8735": msg11182, - "8736": msg11183, - "8737": msg11184, - "8738": msg11185, - "8739": msg11186, - "874": select776, - "8740": msg11187, - "8741": msg11188, - "8742": msg11189, - "8743": msg11190, - "8744": msg11191, - "8745": msg11192, - "8746": msg11193, - "8747": msg11194, - "8748": msg11195, - "8749": msg11196, - "875": select777, - "8750": msg11197, - "8751": msg11198, - "8752": msg11199, - "8753": msg11200, - "8754": msg11201, - "8755": msg11202, - "8756": msg11203, - "8757": msg11204, - "8758": msg11205, - "8759": msg11206, - "876": select778, - "8760": msg11207, - "8761": msg11208, - "8762": msg11209, - "8763": msg11210, - "8764": msg11211, - "8765": msg11212, - "8766": msg11213, - "8767": msg11214, - "8768": msg11215, - "8769": msg11216, - "877": select779, - "8770": msg11217, - "8771": msg11218, - "8772": msg11219, - "8773": msg11220, - "8774": msg11221, - "8775": msg11222, - "8776": msg11223, - "8777": msg11224, - "8778": msg11225, - "8779": msg11226, - "878": select780, - "8780": msg11227, - "8781": msg11228, - "8782": msg11229, - "8783": msg11230, - "8784": msg11231, - "8785": msg11232, - "8786": msg11233, - "8787": msg11234, - "8788": msg11235, - "8789": msg11236, - "879": select781, - "8790": msg11237, - "8791": msg11238, - "8792": msg11239, - "8793": msg11240, - "8794": msg11241, - "8795": msg11242, - "8796": msg11243, - "8797": msg11244, - "8798": msg11245, - "8799": msg11246, - "880": select782, - "8800": msg11247, - "8801": msg11248, - "8802": msg11249, - "8803": msg11250, - "8804": msg11251, - "8805": msg11252, - "8806": msg11253, - "8807": msg11254, - "8808": msg11255, - "8809": msg11256, - "881": select783, - "8810": msg11257, - "8811": msg11258, - "8812": msg11259, - "8813": msg11260, - "8814": msg11261, - "8815": msg11262, - "8816": msg11263, - "8817": msg11264, - "8818": msg11265, - "8819": msg11266, - "882": select784, - "8820": msg11267, - "8821": msg11268, - "8822": msg11269, - "8823": msg11270, - "8824": msg11271, - "8825": msg11272, - "8826": msg11273, - "8827": msg11274, - "8828": msg11275, - "8829": msg11276, - "883": select785, - "8830": msg11277, - "8831": msg11278, - "8832": msg11279, - "8833": msg11280, - "8834": msg11281, - "8835": msg11282, - "8836": msg11283, - "8837": msg11284, - "8838": msg11285, - "8839": msg11286, - "884": select786, - "8840": msg11287, - "8841": msg11288, - "8842": msg11289, - "8843": msg11290, - "8844": msg11291, - "8845": msg11292, - "8846": msg11293, - "8847": msg11294, - "8848": msg11295, - "8849": msg11296, - "885": select787, - "8850": msg11297, - "8851": msg11298, - "8852": msg11299, - "8853": msg11300, - "8854": msg11301, - "8855": msg11302, - "8856": msg11303, - "8857": msg11304, - "8858": msg11305, - "8859": msg11306, - "886": select788, - "8860": msg11307, - "8861": msg11308, - "8862": msg11309, - "8863": msg11310, - "8864": msg11311, - "8865": msg11312, - "8866": msg11313, - "8867": msg11314, - "8868": msg11315, - "8869": msg11316, - "887": select789, - "8870": msg11317, - "8871": msg11318, - "8872": msg11319, - "8873": msg11320, - "8874": msg11321, - "8875": msg11322, - "8876": msg11323, - "8877": msg11324, - "8878": msg11325, - "8879": msg11326, - "888": select790, - "8880": msg11327, - "8881": msg11328, - "8882": msg11329, - "8883": msg11330, - "8884": msg11331, - "8885": msg11332, - "8886": msg11333, - "8887": msg11334, - "8888": msg11335, - "8888888": msg38428, - "8888889": msg38429, - "8889": msg11336, - "889": select791, - "8890": msg11337, - "8891": msg11338, - "8892": msg11339, - "8893": msg11340, - "8894": msg11341, - "8895": msg11342, - "8896": msg11343, - "8897": msg11344, - "8898": msg11345, - "8899": msg11346, - "890": select792, - "8900": msg11347, - "8901": msg11348, - "8902": msg11349, - "8903": msg11350, - "8904": msg11351, - "8905": msg11352, - "8906": msg11353, - "8907": msg11354, - "8908": msg11355, - "8909": msg11356, - "891": select793, - "8910": msg11357, - "8911": msg11358, - "8912": msg11359, - "8913": msg11360, - "8914": msg11361, - "8915": msg11362, - "8916": msg11363, - "8917": msg11364, - "8918": msg11365, - "8919": msg11366, - "892": select794, - "8920": msg11367, - "8921": msg11368, - "8922": msg11369, - "8923": msg11370, - "8924": msg11371, - "8925": msg11372, - "8926": msg11373, - "8927": msg11374, - "8928": msg11375, - "8929": msg11376, - "893": select795, - "8930": msg11377, - "8931": msg11378, - "8932": msg11379, - "8933": msg11380, - "8934": msg11381, - "8935": msg11382, - "8936": msg11383, - "8937": msg11384, - "8938": msg11385, - "8939": msg11386, - "894": select796, - "8940": msg11387, - "8941": msg11388, - "8942": msg11389, - "8943": msg11390, - "8944": msg11391, - "8945": msg11392, - "8946": msg11393, - "8947": msg11394, - "8948": msg11395, - "8949": msg11396, - "895": select797, - "8950": msg11397, - "8951": msg11398, - "8952": msg11399, - "8953": msg11400, - "8954": msg11401, - "8955": msg11402, - "8956": msg11403, - "8957": msg11404, - "8958": msg11405, - "8959": msg11406, - "896": select798, - "8960": msg11407, - "8961": msg11408, - "8962": msg11409, - "8963": msg11410, - "8964": msg11411, - "8965": msg11412, - "8966": msg11413, - "8967": msg11414, - "8968": msg11415, - "8969": msg11416, - "897": select799, - "8970": msg11417, - "8971": msg11418, - "8972": msg11419, - "8973": msg11420, - "8974": msg11421, - "8975": msg11422, - "8976": msg11423, - "8977": msg11424, - "8978": msg11425, - "8979": msg11426, - "898": select800, - "8980": msg11427, - "8981": msg11428, - "8982": msg11429, - "8983": msg11430, - "8984": msg11431, - "8985": msg11432, - "8986": msg11433, - "8987": msg11434, - "8988": msg11435, - "8989": msg11436, - "899": select801, - "8990": msg11437, - "8991": msg11438, - "8992": msg11439, - "8993": msg11440, - "8994": msg11441, - "8995": msg11442, - "8996": msg11443, - "8997": msg11444, - "8998": msg11445, - "8999": msg11446, - "9": msg33, - "900": select802, - "9000": msg11447, - "9001": msg11448, - "9002": msg11449, - "9003": msg11450, - "9004": msg11451, - "9005": msg11452, - "9006": msg11453, - "9007": msg11454, - "9008": msg11455, - "9009": msg11456, - "901": select803, - "9010": msg11457, - "9011": msg11458, - "9012": msg11459, - "9013": msg11460, - "9014": msg11461, - "9015": msg11462, - "9016": msg11463, - "9017": msg11464, - "9018": msg11465, - "9019": msg11466, - "902": select804, - "9020": msg11467, - "9021": msg11468, - "9022": msg11469, - "9023": msg11470, - "9024": msg11471, - "9025": msg11472, - "9026": msg11473, - "9027": msg11474, - "9028": msg11475, - "9029": msg11476, - "903": select805, - "9030": msg11477, - "9031": msg11478, - "9032": msg11479, - "9033": msg11480, - "9034": msg11481, - "9035": msg11482, - "9036": msg11483, - "9037": msg11484, - "9038": msg11485, - "9039": msg11486, - "904": select806, - "9040": msg11487, - "9041": msg11488, - "9042": msg11489, - "9043": msg11490, - "9044": msg11491, - "9045": msg11492, - "9046": msg11493, - "9047": msg11494, - "9048": msg11495, - "9049": msg11496, - "905": select807, - "9050": msg11497, - "9051": msg11498, - "9052": msg11499, - "9053": msg11500, - "9054": msg11501, - "9055": msg11502, - "9056": msg11503, - "9057": msg11504, - "9058": msg11505, - "9059": msg11506, - "906": select808, - "9060": msg11507, - "9061": msg11508, - "9062": msg11509, - "9063": msg11510, - "9064": msg11511, - "9065": msg11512, - "9066": msg11513, - "9067": msg11514, - "9068": msg11515, - "9069": msg11516, - "907": select809, - "9070": msg11517, - "9071": msg11518, - "9072": msg11519, - "9073": msg11520, - "9074": msg11521, - "9075": msg11522, - "9076": msg11523, - "9077": msg11524, - "9078": msg11525, - "9079": msg11526, - "908": select810, - "9080": msg11527, - "9081": msg11528, - "9082": msg11529, - "9083": msg11530, - "9084": msg11531, - "9085": msg11532, - "9086": msg11533, - "9087": msg11534, - "9088": msg11535, - "9089": msg11536, - "909": select811, - "9090": msg11537, - "9091": msg11538, - "9092": msg11539, - "9093": msg11540, - "9094": msg11541, - "9095": msg11542, - "9096": msg11543, - "9097": msg11544, - "9098": msg11545, - "9099": msg11546, - "910": select812, - "9100": msg11547, - "9101": msg11548, - "9102": msg11549, - "9103": msg11550, - "9104": msg11551, - "9105": msg11552, - "9106": msg11553, - "9107": msg11554, - "9108": msg11555, - "9109": msg11556, - "911": select813, - "9110": msg11557, - "9111": msg11558, - "9112": msg11559, - "9113": msg11560, - "9114": msg11561, - "9115": msg11562, - "9116": msg11563, - "9117": msg11564, - "9118": msg11565, - "9119": msg11566, - "912": select814, - "9120": msg11567, - "9121": msg11568, - "9122": msg11569, - "9123": msg11570, - "9124": msg11571, - "9125": msg11572, - "9126": msg11573, - "9127": msg11574, - "9128": msg11575, - "9129": msg11576, - "913": select815, - "9130": msg11577, - "9131": msg11578, - "9132": msg11579, - "9133": msg11580, - "9134": msg11581, - "9135": msg11582, - "9136": msg11583, - "9137": msg11584, - "9138": msg11585, - "9139": msg11586, - "914": select816, - "9140": msg11587, - "9141": msg11588, - "9142": msg11589, - "9143": msg11590, - "9144": msg11591, - "9145": msg11592, - "9146": msg11593, - "9147": msg11594, - "9148": msg11595, - "9149": msg11596, - "915": select817, - "9150": msg11597, - "9151": msg11598, - "9152": msg11599, - "9153": msg11600, - "9154": msg11601, - "9155": msg11602, - "9156": msg11603, - "9157": msg11604, - "9158": msg11605, - "9159": msg11606, - "916": select818, - "9160": msg11607, - "9161": msg11608, - "9162": msg11609, - "9163": msg11610, - "9164": msg11611, - "9165": msg11612, - "9166": msg11613, - "9167": msg11614, - "9168": msg11615, - "9169": msg11616, - "917": select819, - "9170": msg11617, - "9171": msg11618, - "9172": msg11619, - "9173": msg11620, - "9174": msg11621, - "9175": msg11622, - "9176": msg11623, - "9177": msg11624, - "9178": msg11625, - "9179": msg11626, - "918": select820, - "9180": msg11627, - "9181": msg11628, - "9182": msg11629, - "9183": msg11630, - "9184": msg11631, - "9185": msg11632, - "9186": msg11633, - "9187": msg11634, - "9188": msg11635, - "9189": msg11636, - "919": select821, - "9190": msg11637, - "9191": msg11638, - "9192": msg11639, - "9193": msg11640, - "9194": msg11641, - "9195": msg11642, - "9196": msg11643, - "9197": msg11644, - "9198": msg11645, - "9199": msg11646, - "920": select822, - "9200": msg11647, - "9201": msg11648, - "9202": msg11649, - "9203": msg11650, - "9204": msg11651, - "9205": msg11652, - "9206": msg11653, - "9207": msg11654, - "9208": msg11655, - "9209": msg11656, - "921": select823, - "9210": msg11657, - "9211": msg11658, - "9212": msg11659, - "9213": msg11660, - "9214": msg11661, - "9215": msg11662, - "9216": msg11663, - "9217": msg11664, - "9218": msg11665, - "9219": msg11666, - "922": select824, - "9220": msg11667, - "9221": msg11668, - "9222": msg11669, - "9223": msg11670, - "9224": msg11671, - "9225": msg11672, - "9226": msg11673, - "9227": msg11674, - "9228": msg11675, - "9229": msg11676, - "923": select825, - "9230": msg11677, - "9231": msg11678, - "9232": msg11679, - "9233": msg11680, - "9234": msg11681, - "9235": msg11682, - "9236": msg11683, - "9237": msg11684, - "9238": msg11685, - "9239": msg11686, - "924": select826, - "9240": msg11687, - "9241": msg11688, - "9242": msg11689, - "9243": msg11690, - "9244": msg11691, - "9245": msg11692, - "9246": msg11693, - "9247": msg11694, - "9248": msg11695, - "9249": msg11696, - "925": select827, - "9250": msg11697, - "9251": msg11698, - "9252": msg11699, - "9253": msg11700, - "9254": msg11701, - "9255": msg11702, - "9256": msg11703, - "9257": msg11704, - "9258": msg11705, - "9259": msg11706, - "926": select828, - "9260": msg11707, - "9261": msg11708, - "9262": msg11709, - "9263": msg11710, - "9264": msg11711, - "9265": msg11712, - "9266": msg11713, - "9267": msg11714, - "9268": msg11715, - "9269": msg11716, - "927": select829, - "9270": msg11717, - "9271": msg11718, - "9272": msg11719, - "9273": msg11720, - "9274": msg11721, - "9275": msg11722, - "9276": msg11723, - "9277": msg11724, - "9278": msg11725, - "9279": msg11726, - "928": select830, - "9280": msg11727, - "9281": msg11728, - "9282": msg11729, - "9283": msg11730, - "9284": msg11731, - "9285": msg11732, - "9286": msg11733, - "9287": msg11734, - "9288": msg11735, - "9289": msg11736, - "929": select831, - "9290": msg11737, - "9291": msg11738, - "9292": msg11739, - "9293": msg11740, - "9294": msg11741, - "9295": msg11742, - "9296": msg11743, - "9297": msg11744, - "9298": msg11745, - "9299": msg11746, - "930": select832, - "9300": msg11747, - "9301": msg11748, - "9302": msg11749, - "9303": msg11750, - "9304": msg11751, - "9305": msg11752, - "9306": msg11753, - "9307": msg11754, - "9308": msg11755, - "9309": msg11756, - "931": select833, - "9310": msg11757, - "9311": msg11758, - "9312": msg11759, - "9313": msg11760, - "9314": msg11761, - "9315": msg11762, - "9316": msg11763, - "9317": msg11764, - "9318": msg11765, - "9319": msg11766, - "932": select834, - "9320": msg11767, - "9321": msg11768, - "9322": msg11769, - "9323": msg11770, - "9324": msg11771, - "9325": msg11772, - "9326": msg11773, - "9327": msg11774, - "9328": msg11775, - "9329": msg11776, - "933": select835, - "9330": msg11777, - "9331": msg11778, - "9332": msg11779, - "9333": msg11780, - "9334": msg11781, - "9335": msg11782, - "9336": msg11783, - "9337": msg11784, - "9338": msg11785, - "9339": msg11786, - "9340": msg11787, - "9341": msg11788, - "9342": msg11789, - "9343": msg11790, - "9344": msg11791, - "9345": msg11792, - "9346": msg11793, - "9347": msg11794, - "9348": msg11795, - "9349": msg11796, - "935": select836, - "9350": msg11797, - "9351": msg11798, - "9352": msg11799, - "9353": msg11800, - "9354": msg11801, - "9355": msg11802, - "9356": msg11803, - "9357": msg11804, - "9358": msg11805, - "9359": msg11806, - "936": select837, - "9360": msg11807, - "9361": msg11808, - "9362": msg11809, - "9363": msg11810, - "9364": msg11811, - "9365": msg11812, - "9366": msg11813, - "9367": msg11814, - "9368": msg11815, - "9369": msg11816, - "937": select838, - "9370": msg11817, - "9371": msg11818, - "9372": msg11819, - "9373": msg11820, - "9374": msg11821, - "9375": msg11822, - "9376": msg11823, - "9377": msg11824, - "9378": msg11825, - "9379": msg11826, - "9380": msg11827, - "9381": msg11828, - "9382": msg11829, - "9383": msg11830, - "9384": msg11831, - "9385": msg11832, - "9386": msg11833, - "9387": msg11834, - "9388": msg11835, - "9389": msg11836, - "939": select839, - "9390": msg11837, - "9391": msg11838, - "9392": msg11839, - "9393": msg11840, - "9394": msg11841, - "9395": msg11842, - "9396": msg11843, - "9397": msg11844, - "9398": msg11845, - "9399": msg11846, - "940": select840, - "9400": msg11847, - "9401": msg11848, - "9402": msg11849, - "9403": msg11850, - "9404": msg11851, - "9405": msg11852, - "9406": msg11853, - "9407": msg11854, - "9408": msg11855, - "9409": msg11856, - "941": select841, - "9410": msg11857, - "9411": msg11858, - "9412": msg11859, - "9413": msg11860, - "9414": msg11861, - "9415": msg11862, - "9416": msg11863, - "9417": msg11864, - "9418": msg11865, - "9419": msg11866, - "942": select842, - "9420": msg11867, - "9421": msg11868, - "9422": msg11869, - "9423": msg11870, - "9424": msg11871, - "9425": msg11872, - "9426": msg11873, - "9427": msg11874, - "9428": msg11875, - "9429": msg11876, - "943": select843, - "9430": msg11877, - "9431": msg11878, - "9432": msg11879, - "9433": msg11880, - "9434": msg11881, - "9435": msg11882, - "9436": msg11883, - "9437": msg11884, - "9438": msg11885, - "9439": msg11886, - "944": select844, - "9440": msg11887, - "9441": msg11888, - "9442": msg11889, - "9443": msg11890, - "9444": msg11891, - "9445": msg11892, - "9446": msg11893, - "9447": msg11894, - "9448": msg11895, - "9449": msg11896, - "945": select845, - "9450": msg11897, - "9451": msg11898, - "9452": msg11899, - "9453": msg11900, - "9454": msg11901, - "9455": msg11902, - "9456": msg11903, - "9457": msg11904, - "9458": msg11905, - "9459": msg11906, - "946": select846, - "9460": msg11907, - "9461": msg11908, - "9462": msg11909, - "9463": msg11910, - "9464": msg11911, - "9465": msg11912, - "9466": msg11913, - "9467": msg11914, - "9468": msg11915, - "9469": msg11916, - "947": select847, - "9470": msg11917, - "9471": msg11918, - "9472": msg11919, - "9473": msg11920, - "9474": msg11921, - "9475": msg11922, - "9476": msg11923, - "9477": msg11924, - "9478": msg11925, - "9479": msg11926, - "948": select848, - "9480": msg11927, - "9481": msg11928, - "9482": msg11929, - "9483": msg11930, - "9484": msg11931, - "9485": msg11932, - "9486": msg11933, - "9487": msg11934, - "9488": msg11935, - "9489": msg11936, - "949": select849, - "9490": msg11937, - "9491": msg11938, - "9492": msg11939, - "9493": msg11940, - "9494": msg11941, - "9495": msg11942, - "9496": msg11943, - "9497": msg11944, - "9498": msg11945, - "9499": msg11946, - "950": select850, - "9500": msg11947, - "9501": msg11948, - "9502": msg11949, - "9503": msg11950, - "9504": msg11951, - "9505": msg11952, - "9506": msg11953, - "9507": msg11954, - "9508": msg11955, - "9509": msg11956, - "951": select851, - "9510": msg11957, - "9511": msg11958, - "9512": msg11959, - "9513": msg11960, - "9514": msg11961, - "9515": msg11962, - "9516": msg11963, - "9517": msg11964, - "9518": msg11965, - "9519": msg11966, - "952": select852, - "9520": msg11967, - "9521": msg11968, - "9522": msg11969, - "9523": msg11970, - "9524": msg11971, - "9525": msg11972, - "9526": msg11973, - "9527": msg11974, - "9528": msg11975, - "9529": msg11976, - "953": select853, - "9530": msg11977, - "9531": msg11978, - "9532": msg11979, - "9533": msg11980, - "9534": msg11981, - "9535": msg11982, - "9536": msg11983, - "9537": msg11984, - "9538": msg11985, - "9539": msg11986, - "954": select854, - "9540": msg11987, - "9541": msg11988, - "9542": msg11989, - "9543": msg11990, - "9544": msg11991, - "9545": msg11992, - "9546": msg11993, - "9547": msg11994, - "9548": msg11995, - "9549": msg11996, - "955": select855, - "9550": msg11997, - "9551": msg11998, - "9552": msg11999, - "9553": msg12000, - "9554": msg12001, - "9555": msg12002, - "9556": msg12003, - "9557": msg12004, - "9558": msg12005, - "9559": msg12006, - "956": select856, - "9560": msg12007, - "9561": msg12008, - "9562": msg12009, - "9563": msg12010, - "9564": msg12011, - "9565": msg12012, - "9566": msg12013, - "9567": msg12014, - "9568": msg12015, - "9569": msg12016, - "957": select857, - "9570": msg12017, - "9571": msg12018, - "9572": msg12019, - "9573": msg12020, - "9574": msg12021, - "9575": msg12022, - "9576": msg12023, - "9577": msg12024, - "9578": msg12025, - "9579": msg12026, - "958": select858, - "9580": msg12027, - "9581": msg12028, - "9582": msg12029, - "9583": msg12030, - "9584": msg12031, - "9585": msg12032, - "9586": msg12033, - "9587": msg12034, - "9588": msg12035, - "9589": msg12036, - "959": select859, - "9590": msg12037, - "9591": msg12038, - "9592": msg12039, - "9593": msg12040, - "9594": msg12041, - "9595": msg12042, - "9596": msg12043, - "9597": msg12044, - "9598": msg12045, - "9599": msg12046, - "96": msg77, - "960": select860, - "9600": msg12047, - "9601": msg12048, - "9602": msg12049, - "9603": msg12050, - "9604": msg12051, - "9605": msg12052, - "9606": msg12053, - "9607": msg12054, - "9608": msg12055, - "9609": msg12056, - "961": select861, - "9610": msg12057, - "9611": msg12058, - "9612": msg12059, - "9613": msg12060, - "9614": msg12061, - "9615": msg12062, - "9616": msg12063, - "9617": msg12064, - "9618": msg12065, - "9619": msg12066, - "962": select862, - "9620": msg12067, - "9621": msg12068, - "9622": msg12069, - "9623": msg12070, - "9624": msg12071, - "9625": msg12072, - "9626": msg12073, - "9627": msg12074, - "9628": msg12075, - "9629": msg12076, - "963": select863, - "9630": msg12077, - "9631": msg12078, - "9632": msg12079, - "9633": msg12080, - "9634": msg12081, - "9635": msg12082, - "9636": msg12083, - "9637": msg12084, - "9638": msg12085, - "9639": msg12086, - "964": select864, - "9640": msg12087, - "9641": msg12088, - "9642": msg12089, - "9643": msg12090, - "9644": msg12091, - "9645": msg12092, - "9646": msg12093, - "9647": msg12094, - "9648": msg12095, - "9649": msg12096, - "965": select865, - "9650": msg12097, - "9651": msg12098, - "9652": msg12099, - "9653": msg12100, - "9654": msg12101, - "9655": msg12102, - "9656": msg12103, - "9657": msg12104, - "9658": msg12105, - "9659": msg12106, - "966": select866, - "9660": msg12107, - "9661": msg12108, - "9662": msg12109, - "9663": msg12110, - "9664": msg12111, - "9665": msg12112, - "9666": msg12113, - "9667": msg12114, - "9668": msg12115, - "9669": msg12116, - "967": select867, - "9670": msg12117, - "9671": msg12118, - "9672": msg12119, - "9673": msg12120, - "9674": msg12121, - "9675": msg12122, - "9676": msg12123, - "9677": msg12124, - "9678": msg12125, - "9679": msg12126, - "968": select868, - "9680": msg12127, - "9681": msg12128, - "9682": msg12129, - "9683": msg12130, - "9684": msg12131, - "9685": msg12132, - "9686": msg12133, - "9687": msg12134, - "9688": msg12135, - "9689": msg12136, - "969": select869, - "9690": msg12137, - "9691": msg12138, - "9692": msg12139, - "9693": msg12140, - "9694": msg12141, - "9695": msg12142, - "9696": msg12143, - "9697": msg12144, - "9698": msg12145, - "9699": msg12146, - "97": select30, - "970": select870, - "9700": msg12147, - "9701": msg12148, - "9702": msg12149, - "9703": msg12150, - "9704": msg12151, - "9705": msg12152, - "9706": msg12153, - "9707": msg12154, - "9708": msg12155, - "9709": msg12156, - "971": select871, - "9710": msg12157, - "9711": msg12158, - "9712": msg12159, - "9713": msg12160, - "9714": msg12161, - "9715": msg12162, - "9716": msg12163, - "9717": msg12164, - "9718": msg12165, - "9719": msg12166, - "972": select872, - "9720": msg12167, - "9721": msg12168, - "9722": msg12169, - "9723": msg12170, - "9724": msg12171, - "9725": msg12172, - "9726": msg12173, - "9727": msg12174, - "9728": msg12175, - "9729": msg12176, - "973": select873, - "9730": msg12177, - "9731": msg12178, - "9732": msg12179, - "9733": msg12180, - "9734": msg12181, - "9735": msg12182, - "9736": msg12183, - "9737": msg12184, - "9738": msg12185, - "9739": msg12186, - "974": select874, - "9740": msg12187, - "9741": msg12188, - "9742": msg12189, - "9743": msg12190, - "9744": msg12191, - "9745": msg12192, - "9746": msg12193, - "9747": msg12194, - "9748": msg12195, - "9749": msg12196, - "975": select875, - "9750": msg12197, - "9751": msg12198, - "9752": msg12199, - "9753": msg12200, - "9754": msg12201, - "9755": msg12202, - "9756": msg12203, - "9757": msg12204, - "9758": msg12205, - "9759": msg12206, - "976": select876, - "9760": msg12207, - "9761": msg12208, - "9762": msg12209, - "9763": msg12210, - "9764": msg12211, - "9765": msg12212, - "9766": msg12213, - "9767": msg12214, - "9768": msg12215, - "9769": msg12216, - "977": select877, - "9770": msg12217, - "9771": msg12218, - "9772": msg12219, - "9773": msg12220, - "9774": msg12221, - "9775": msg12222, - "9776": msg12223, - "9777": msg12224, - "9778": msg12225, - "9779": msg12226, - "978": select878, - "9780": msg12227, - "9781": msg12228, - "9782": msg12229, - "9783": msg12230, - "9784": msg12231, - "9785": msg12232, - "9786": msg12233, - "9787": msg12234, - "9788": msg12235, - "9789": msg12236, - "979": select879, - "9790": msg12237, - "9791": msg12238, - "9792": msg12239, - "9793": msg12240, - "9794": msg12241, - "9795": msg12242, - "9796": msg12243, - "9797": msg12244, - "9798": msg12245, - "9799": msg12246, - "980": select880, - "9800": msg12247, - "9801": msg12248, - "9802": msg12249, - "9803": msg12250, - "9804": msg12251, - "9805": msg12252, - "9806": msg12253, - "9807": msg12254, - "9808": msg12255, - "9809": msg12256, - "981": select881, - "9810": msg12257, - "9811": msg12258, - "9812": msg12259, - "9813": msg12260, - "9814": msg12261, - "9815": msg12262, - "9816": msg12263, - "9817": msg12264, - "9818": msg12265, - "9819": msg12266, - "982": select882, - "9820": msg12267, - "9821": msg12268, - "9822": msg12269, - "9823": msg12270, - "9824": msg12271, - "9825": msg12272, - "9826": msg12273, - "9827": msg12274, - "9828": msg12275, - "9829": msg12276, - "983": select883, - "9830": msg12277, - "9831": msg12278, - "9832": msg12279, - "9833": msg12280, - "9834": msg12281, - "9835": msg12282, - "9836": msg12283, - "9837": msg12284, - "9838": msg12285, - "9839": msg12286, - "984": select884, - "9840": msg12287, - "9841": msg12288, - "9842": msg12289, - "9843": msg12290, - "9844": msg12291, - "9845": msg12292, - "9846": msg12293, - "9847": msg12294, - "9848": msg12295, - "9849": msg12296, - "985": select885, - "9850": msg12297, - "9851": msg12298, - "9852": msg12299, - "9853": msg12300, - "9854": msg12301, - "9855": msg12302, - "9856": msg12303, - "9857": msg12304, - "9858": msg12305, - "9859": msg12306, - "986": select886, - "9860": msg12307, - "9861": msg12308, - "9862": msg12309, - "9863": msg12310, - "9864": msg12311, - "9865": msg12312, - "9866": msg12313, - "9867": msg12314, - "9868": msg12315, - "9869": msg12316, - "987": select887, - "9870": msg12317, - "9871": msg12318, - "9872": msg12319, - "9873": msg12320, - "9874": msg12321, - "9875": msg12322, - "9876": msg12323, - "9877": msg12324, - "9878": msg12325, - "9879": msg12326, - "988": select888, - "9880": msg12327, - "9881": msg12328, - "9882": msg12329, - "9883": msg12330, - "9884": msg12331, - "9885": msg12332, - "9886": msg12333, - "9887": msg12334, - "9888": msg12335, - "9889": msg12336, - "989": select889, - "9890": msg12337, - "9891": msg12338, - "9892": msg12339, - "9893": msg12340, - "9894": msg12341, - "9895": msg12342, - "9896": msg12343, - "9897": msg12344, - "9898": msg12345, - "9899": msg12346, - "990": select890, - "9900": msg12347, - "9901": msg12348, - "9902": msg12349, - "9903": msg12350, - "9904": msg12351, - "9905": msg12352, - "9906": msg12353, - "9907": msg12354, - "9908": msg12355, - "9909": msg12356, - "991": select891, - "9910": msg12357, - "9911": msg12358, - "9912": msg12359, - "9913": msg12360, - "9914": msg12361, - "9915": msg12362, - "9916": msg12363, - "9917": msg12364, - "9918": msg12365, - "9919": msg12366, - "992": select892, - "9920": msg12367, - "9921": msg12368, - "9922": msg12369, - "9923": msg12370, - "9924": msg12371, - "9925": msg12372, - "9926": msg12373, - "9927": msg12374, - "9928": msg12375, - "9929": msg12376, - "993": select893, - "9930": msg12377, - "9931": msg12378, - "9932": msg12379, - "9933": msg12380, - "9934": msg12381, - "9935": msg12382, - "9936": msg12383, - "9937": msg12384, - "9938": msg12385, - "9939": msg12386, - "994": select894, - "9940": msg12387, - "9941": msg12388, - "9942": msg12389, - "9943": msg12390, - "9944": msg12391, - "9945": msg12392, - "9946": msg12393, - "9947": msg12394, - "9948": msg12395, - "9949": msg12396, - "995": select895, - "9950": msg12397, - "9951": msg12398, - "9952": msg12399, - "9953": msg12400, - "9954": msg12401, - "9955": msg12402, - "9956": msg12403, - "9957": msg12404, - "9958": msg12405, - "9959": msg12406, - "996": select896, - "9960": msg12407, - "9961": msg12408, - "9962": msg12409, - "9963": msg12410, - "9964": msg12411, - "9965": msg12412, - "9966": msg12413, - "9967": msg12414, - "9968": msg12415, - "9969": msg12416, - "997": select897, - "9970": msg12417, - "9971": msg12418, - "9972": msg12419, - "9973": msg12420, - "9974": msg12421, - "9975": msg12422, - "9976": msg12423, - "9977": msg12424, - "9978": msg12425, - "9979": msg12426, - "998": select898, - "9980": msg12427, - "9981": msg12428, - "9982": msg12429, - "9983": msg12430, - "9984": msg12431, - "9985": msg12432, - "9986": msg12433, - "9987": msg12434, - "9988": msg12435, - "9989": msg12436, - "999": select899, - "9990": msg12437, - "9991": msg12438, - "9992": msg12439, - "9993": msg12440, - "9994": msg12441, - "9995": msg12442, - "9996": msg12443, - "9997": msg12444, - "9998": msg12445, - "9999": msg12446, - "Additional_MAC_Detected_for": msg38460, - "Client_Application_Timeout": msg38477, - "Client_Application_Update": msg38473, - "Client_Timeout": msg38534, - "Client_Update": msg38530, - "ET": msg38485, - "FTD_events": select2466, - "HMNOTIFY": msg1, - "Hops_Change": msg38458, - "Host_IOC_Set": msg38535, - "Host_Timeout": msg38478, - "Host_Type_Changed": msg38536, - "Identity_Timeout": select2450, - "Login": msg38537, - "Logout": msg38538, - "MAC_Information_Change": msg38459, - "MALWARE": select2463, - "NETBIOS_Name_Change": msg38461, - "NGIPS_events": select2468, - "Network_Based_Malware": select2459, - "Network_Based_Retrospective": select2462, - "New_Client": msg38531, - "New_Client_Application": msg38472, - "New_Host": msg38462, - "New_Network_Protocol": msg38463, - "New_OS": msg38471, - "New_TCP_Port": msg38528, - "New_TCP_Service": msg38474, - "New_Transport_Protocol": msg38465, - "New_UDP_Port": msg38529, - "New_UDP_Service": msg38464, - "OS_Confidence_Update": msg38466, - "OS_Information_Update": msg38467, - "Portscan": msg38457, - "Primary_Detection_Engine": select2457, - "S5": select2453, - "Snort_AlertLog": msg38527, - "SystemSettings": select2455, - "TCP_Port_Closed": msg38475, - "TCP_Port_Timeout": msg38476, - "TCP_Server_Information_Update": msg38533, - "TCP_Service_Confidence_Update": msg38468, - "TCP_Service_Information_Update": msg38469, - "UDP_Port_Timeout": msg38481, - "UDP_Server_Information_Update": msg38532, - "UDP_Service_Confidence_Update": msg38482, - "UDP_Service_Information_Update": select2451, - "VLAN_Tag_Information_Update": msg38470, - "connection_events": msg38539, - "snort-sid-template": msg38452, - "spp_portscan": select2445, - }), -]); - -var hdr35 = match("HEADER#2:00010/0", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: [%{hevent_source}:%{messageid}:%{hversion}] %{p0}"); - -var part116 = match("HEADER#2:00010/1_0", "nwparser.p0", "\"%{hfld10}\" [Impact: %{p0}"); - -var part117 = match("HEADER#2:00010/1_1", "nwparser.p0", "%{hfld10->} [Impact: %{p0}"); - -var part118 = match("HEADER#3:00011/2", "nwparser.p0", "%{result}] From %{hfld11->} at %{fld9->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{payload}"); - -var part119 = match("HEADER#4:00012/1_0", "nwparser.p0", "\"%{hfld10}\" [Classification: %{p0}"); - -var part120 = match("HEADER#4:00012/1_1", "nwparser.p0", "%{hfld10->} [Classification: %{p0}"); - -var part121 = match("HEADER#4:00012/2", "nwparser.p0", "%{sigtype}] [Priority: %{payload}"); - -var part122 = match("HEADER#5:00013/1_0", "nwparser.p0", "\"%{hfld10}\" [%{p0}"); - -var part123 = match("HEADER#5:00013/1_1", "nwparser.p0", "%{hfld10->} [%{p0}"); - -var part124 = match("HEADER#5:00013/2", "nwparser.p0", "%{info}] [Priority: %{payload}"); - -var hdr36 = match("HEADER#7:00020/0", "message", "%{month->} %{day->} %{time->} snort[%{hpid}]: [%{hevent_source}:%{messageid}:%{hversion}] %{p0}"); - -var part125 = match("HEADER#7:00020/2", "nwparser.p0", "%{result}] From %{group_object}/%{hfld11->} at %{fld9->} %{event_time_string->} [Classification: %{sigtype}] [Priority: %{payload}"); - -var hdr37 = match("HEADER#11:00030/0", "message", "%{month->} %{day->} %{time->} snort: [%{hevent_source}:%{messageid}:%{hversion}] %{p0}"); - -var part126 = match("HEADER#26:0011/1_1", "nwparser.p0", "at%{p0}"); - -var part127 = match("HEADER#26:0011/2", "nwparser.p0", "%{} %{p0}"); - -var part128 = match("HEADER#41:0024/1_0", "nwparser.p0", "[%{hpid}]: [%{p0}"); - -var part129 = match("HEADER#41:0024/1_1", "nwparser.p0", ": [%{p0}"); - -var part130 = match("HEADER#41:0024/2", "nwparser.p0", "]%{hversion}:%{hfld2}:%{hevent_source->} %{payload}"); - -var hdr38 = match("HEADER#43:0023/0", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: [%{hevent_source}:%{hfld2}:%{hversion}] %{p0}"); - -var part131 = match("MESSAGE#1:0/0_0", "nwparser.payload", "%{threat_val->} ]:alert {%{p0}"); - -var part132 = match("MESSAGE#1:0/0_1", "nwparser.payload", "%{threat_val->} ]: %{fld1->} {%{p0}"); - -var part133 = match("MESSAGE#1:0/0_2", "nwparser.payload", "%{threat_val}]: {%{p0}"); - -var part134 = match("MESSAGE#1:0/0_3", "nwparser.payload", "%{threat_val->} ] {%{p0}"); - -var part135 = match("MESSAGE#1:0/1", "nwparser.p0", "%{protocol}} %{p0}"); - -var part136 = match("MESSAGE#1:0/2_0", "nwparser.p0", "%{saddr}:%{sport->} (%{location_src}) -> %{p0}"); - -var part137 = match("MESSAGE#1:0/2_1", "nwparser.p0", "%{saddr}:%{sport->} -> %{p0}"); - -var part138 = match("MESSAGE#1:0/2_2", "nwparser.p0", "%{saddr->} -> %{p0}"); - -var part139 = match("MESSAGE#1:0/3_0", "nwparser.p0", "%{daddr}:%{dport->} (%{location_dst})"); - -var part140 = match("MESSAGE#1:0/3_1", "nwparser.p0", "%{daddr}:%{dport}"); - -var part141 = match_copy("MESSAGE#1:0/3_2", "nwparser.p0", "daddr"); - -var part142 = match("MESSAGE#2:0:01/0", "nwparser.payload", "%{context->} %{p0}"); - -var part143 = match("MESSAGE#2:0:01/1_0", "nwparser.p0", "\u003c\u003c%{interface}> %{p0}"); - -var part144 = match_copy("MESSAGE#2:0:01/1_1", "nwparser.p0", "p0"); - -var part145 = match("MESSAGE#2:0:01/2", "nwparser.p0", "{%{protocol}} %{p0}"); - -var part146 = match("MESSAGE#33:10/0", "nwparser.payload", "%{threat_val->} ]%{p0}"); - -var part147 = match("MESSAGE#33:10/1_0", "nwparser.p0", " \u003c\u003c%{interface}> %{p0}"); - -var part148 = match("MESSAGE#33:10/1_1", "nwparser.p0", ": %{p0}"); - -var part149 = match("MESSAGE#33:10/1_2", "nwparser.p0", " %{p0}"); - -var part150 = match("MESSAGE#80:103:01/0", "nwparser.payload", "%{context->} \u003c\u003c%{interface}> %{protocol->} %{p0}"); - -var part151 = match("MESSAGE#5535:3086/0_0", "nwparser.payload", "%{threat_val->} ]:alert %{p0}"); - -var part152 = match("MESSAGE#5535:3086/0_1", "nwparser.payload", "%{threat_val}]: %{p0}"); - -var part153 = match("MESSAGE#5535:3086/0_2", "nwparser.payload", "%{threat_val->} ] %{p0}"); - -var part154 = match("MESSAGE#5535:3086/1", "nwparser.p0", "%{p0}"); - -var part155 = match("MESSAGE#30119:28015/1_1", "nwparser.p0", ":alert %{p0}"); - -var part156 = match("MESSAGE#36377:34596/3_1", "nwparser.p0", "%{saddr->} -> %{p0}"); - -var part157 = match("MESSAGE#36377:34596/4_1", "nwparser.p0", "%{daddr}"); - -var part158 = match("MESSAGE#38458:MAC_Information_Change/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} MAC: %{smacaddr->} TTL %{p0}"); - -var part159 = match("MESSAGE#38458:MAC_Information_Change/1_0", "nwparser.p0", "%{sinterface->} (%{protocol->} detected)"); - -var part160 = match_copy("MESSAGE#38458:MAC_Information_Change/1_1", "nwparser.p0", "sinterface"); - -var part161 = match("MESSAGE#38461:New_Host/0", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> %{p0}"); - -var part162 = match_copy("MESSAGE#38462:New_Network_Protocol/2", "nwparser.p0", "protocol"); - -var part163 = match("MESSAGE#38468:TCP_Service_Information_Update/1_0", "nwparser.p0", "%{protocol->} Confidence: %{result}"); - -var part164 = match("MESSAGE#38495:SystemSettings:09/1_0", "nwparser.p0", ">%{p0}"); - -var part165 = match("MESSAGE#38514:Primary_Detection_Engine/0", "nwparser.payload", "%{fld1}][%{policyname}] Connection Type: %{event_state}, User: %{username}, Client: %{application}, Application Protocol: %{protocol}, Web App: %{application}, Access Control Rule Name: %{rulename}, Access Control Rule Action: %{action}, Access Control Rule Reasons: %{result}, URL Category: %{category}, URL Reputation: %{p0}"); - -var part166 = match("MESSAGE#38514:Primary_Detection_Engine/1_0", "nwparser.p0", "Risk unknown, URL: %{p0}"); - -var part167 = match("MESSAGE#38514:Primary_Detection_Engine/1_1", "nwparser.p0", "%{reputation_num}, URL: %{p0}"); - -var part168 = match("MESSAGE#38521:Network_Based_Retrospective/1_0", "nwparser.p0", "-*> %{p0}"); - -var part169 = match("MESSAGE#38521:Network_Based_Retrospective/1_1", "nwparser.p0", "> %{p0}"); - -var part170 = match("MESSAGE#38522:Network_Based_Retrospective:01/1_0", "nwparser.p0", "From \"%{sensor}\" at %{p0}"); - -var part171 = match("MESSAGE#38522:Network_Based_Retrospective:01/1_1", "nwparser.p0", "at %{p0}"); - -var part172 = match("MESSAGE#38522:Network_Based_Retrospective:01/2", "nwparser.p0", "%{fld6->} %{event_time_string->} UTC %{p0}"); - -var part173 = match("MESSAGE#38528:Client_Update/4", "nwparser.p0", "IP Address: %{saddr->} %{network_service}"); - -var part174 = match("MESSAGE#38530:UDP_Server_Information_Update/4", "nwparser.p0", "IP Address: %{saddr->} Port: %{sport->} Service: %{p0}"); - -var select2469 = linear_select([ - dup3, - dup4, -]); - -var select2470 = linear_select([ - dup6, - dup7, -]); - -var select2471 = linear_select([ - dup9, - dup10, -]); - -var hdr39 = match("HEADER#26:0011/0", "message", "%{month->} %{day->} %{time->} %{host->} %{hfld1}: \u003c\u003c*- %{msgIdPart1->} %{msgIdPart2->} %{msgIdPart3->} %{p0}", processor_chain([ - dup19, -])); - -var select2472 = linear_select([ - dup26, - dup27, -]); - -var select2473 = linear_select([ - dup33, - dup34, - dup35, - dup36, -]); - -var select2474 = linear_select([ - dup38, - dup39, - dup40, -]); - -var select2475 = linear_select([ - dup41, - dup42, - dup43, -]); - -var select2476 = linear_select([ - dup58, - dup59, -]); - -var select2477 = linear_select([ - dup67, - dup68, - dup69, -]); - -var select2478 = linear_select([ - dup113, - dup114, - dup115, -]); - -var select2479 = linear_select([ - dup68, - dup69, -]); - -var select2480 = linear_select([ - dup67, - dup124, - dup68, - dup69, -]); - -var select2481 = linear_select([ - dup39, - dup125, -]); - -var select2482 = linear_select([ - dup42, - dup126, -]); - -var select2483 = linear_select([ - dup131, - dup132, -]); - -var part175 = match("MESSAGE#38465:OS_Confidence_Update", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} OS: %{version->} Confidence: %{result}", processor_chain([ - dup127, - dup31, - dup32, - dup47, - dup129, -])); - -var part176 = match("MESSAGE#38467:TCP_Service_Confidence_Update", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Port: %{sport->} Service: %{protocol->} Confidence: %{result}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var select2484 = linear_select([ - dup136, - dup134, -]); - -var part177 = match("MESSAGE#38471:New_Client_Application", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} %{product}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var part178 = match("MESSAGE#38473:New_TCP_Service", "nwparser.payload", "%{context->} From \"%{sensor}\" at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr->} Port: %{sport}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var part179 = match("MESSAGE#38475:TCP_Port_Timeout", "nwparser.payload", "%{context->} From %{sensor->} at %{fld6->} %{event_time_string->} UTC -*> IP Address: %{saddr}", processor_chain([ - dup135, - dup31, - dup32, - dup47, - dup129, -])); - -var select2485 = linear_select([ - dup148, - dup149, -]); - -var select2486 = linear_select([ - dup153, - dup154, -]); - -var select2487 = linear_select([ - dup155, - dup156, -]); - -var all88 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all89 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var all90 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all91 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var all92 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all93 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup63, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all94 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all95 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup65, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all96 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all97 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup70, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all98 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all99 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all100 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all101 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all102 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all103 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all104 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all105 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all106 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all107 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all108 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all109 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup82, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all110 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all111 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup85, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all112 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup85, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all113 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all114 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup86, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all115 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup86, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all116 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all117 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup63, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all118 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all119 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all120 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup87, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all121 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup88, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all122 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup88, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all123 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all124 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all125 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all126 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all127 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all128 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all129 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all130 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all131 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all132 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup91, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all133 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup91, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all134 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all135 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all136 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup93, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all137 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup93, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all138 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all139 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all140 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all141 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup62, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all142 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup95, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all143 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup95, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all144 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup96, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all145 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup96, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all146 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup97, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all147 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup97, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all148 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all149 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all150 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all151 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all152 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all153 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup98, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all154 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all155 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all156 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup99, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all157 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup99, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all158 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup44, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all159 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all160 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all161 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all162 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all163 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all164 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all165 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup102, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all166 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup102, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all167 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup103, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all168 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup103, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all169 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup90, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all170 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup104, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all171 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup104, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all172 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup105, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all173 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup105, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all174 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup106, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all175 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup106, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all176 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup98, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all177 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup107, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all178 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup107, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all179 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all180 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup72, - dup84, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all181 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup108, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all182 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup108, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all183 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all184 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all185 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup70, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all186 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup92, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all187 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all188 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup72, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all189 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all190 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup80, - dup31, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all191 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup109, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all192 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup109, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all193 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup110, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all194 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup111, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all195 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup111, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all196 = all_match({ - processors: [ - dup75, - dup173, - dup174, - ], - on_success: processor_chain([ - dup110, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup76, - dup50, - dup51, - ]), -}); - -var all197 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup112, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all198 = all_match({ - processors: [ - dup177, - dup116, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all199 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup117, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all200 = all_match({ - processors: [ - dup177, - dup116, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all201 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup118, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all202 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup105, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all203 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup70, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all204 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all205 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup63, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all206 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all207 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all208 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup119, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all209 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup120, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all210 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all211 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup94, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all212 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup65, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all213 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup121, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all214 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup77, - dup73, - dup74, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all215 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup122, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all216 = all_match({ - processors: [ - dup172, - dup37, - dup173, - dup174, - ], - on_success: processor_chain([ - dup123, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all217 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all218 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup99, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all219 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all220 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup64, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all221 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup102, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all222 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup119, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all223 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup121, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all224 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup93, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all225 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup120, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all226 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup108, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all227 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup104, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all228 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup90, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all229 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all230 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup89, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all231 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup97, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all232 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup61, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all233 = all_match({ - processors: [ - dup66, - dup179, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all234 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup118, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all235 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup100, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all236 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup71, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all237 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup63, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all238 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup102, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all239 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup79, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all240 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup70, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all241 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup64, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all242 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup99, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all243 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup101, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all244 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup65, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all245 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup105, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all246 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup81, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all247 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup78, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all248 = all_match({ - processors: [ - dup66, - dup176, - dup60, - dup180, - dup181, - ], - on_success: processor_chain([ - dup104, - dup31, - dup45, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - dup52, - dup53, - dup54, - dup55, - dup56, - ]), -}); - -var all249 = all_match({ - processors: [ - dup57, - dup175, - dup60, - dup173, - dup174, - ], - on_success: processor_chain([ - dup83, - dup31, - dup32, - dup46, - dup47, - dup48, - dup49, - dup50, - dup51, - ]), -}); - -var all250 = all_match({ - processors: [ - dup130, - dup182, - ], - on_success: processor_chain([ - dup127, - dup31, - dup32, - dup47, - dup129, - ]), -}); - -var all251 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - dup159, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); - -var all252 = all_match({ - processors: [ - dup57, - dup191, - dup157, - dup190, - dup160, - dup185, - ], - on_success: processor_chain([ - dup135, - dup31, - dup32, - dup47, - ]), -}); diff --git a/x-pack/filebeat/module/snort/log/ingest/pipeline.yml b/x-pack/filebeat/module/snort/log/ingest/pipeline.yml deleted file mode 100644 index 262bbcff330..00000000000 --- a/x-pack/filebeat/module/snort/log/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Snort/Sourcefire - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/snort/log/manifest.yml b/x-pack/filebeat/module/snort/log/manifest.yml deleted file mode 100644 index ae467072b22..00000000000 --- a/x-pack/filebeat/module/snort/log/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["snort.log", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9548 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/snort/log/test/generated.log b/x-pack/filebeat/module/snort/log/test/generated.log deleted file mode 100644 index 8ecab402325..00000000000 --- a/x-pack/filebeat/module/snort/log/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -Jan 29 2016 06:09:59 quid2184.invalid: %FTD-enim-dqu:CLOCK: System clock set, source: veri, IP: 10.202.72.124, before: inv, after: emo -2016-2-12T13:12:33Z inBCSedu5722.internal.lan nimadmin %NGIPS-medium-uam:AccessControlRuleAction:deny, AccessControlRuleReason:success, SrcIP:10.38.77.13, DstIP:10.212.11.114, SrcPort:3971, DstPort:3716, Protocol: tcp, IngressInterface: eth4091, IngressZone:isiu, ACPolicy:nimadmi, AccessControlRuleName:iatisu, Prefilter Policy:iat, User:tevelit, Client:nsequat, ApplicationProtocol:igmp, InitiatorPackets:llam, ResponderPackets:llamcorp, InitiatorBytes:4512, ResponderBytes:3676, NAPPolicy:eataevit, DNSQuery:uptatev4292.www.invalid, DNSRecordType: a host address, DNSSICategory:atat -Feb 26 20:15:08 tlabo6088.www.localdomain Lor: HMNOTIFY: itecto (Sensor erc): Severity:medium: failure -Mar 12 03:17:42 eporroqu4200.domain atquovo: HMNOTIFY: suntinc (Sensor xeac): Severity:medium: success -Mar 26 10:20:16 eirure: conseq557.mail.lan: aaliquaU@ntor, Analysis & Reporting > lpaqui -2016-4-9T17:22:51Z ationemu5040.www.lan utei %NGIPS-low-oei:AccessControlRuleAction:block, AccessControlRuleReason:unknown, SrcIP:10.182.199.231, DstIP:10.24.67.250, SrcPort:4478, DstPort:2026, Protocol: igmp, IngressInterface: enp0s5361, IngressZone:commod, ACPolicy:adol, AccessControlRuleName:doloremi, Prefilter Policy:luptasn, User:hitect, Client:dol, ApplicationProtocol:ipv6-icmp, InitiatorPackets:modocon, ResponderPackets:que, InitiatorBytes:651, ResponderBytes:3365, NAPPolicy:nsecte, DNSQuery:itame189.domain, DNSRecordType: a host address, DNSSICategory:exercit -Apr 24 00:25:25 uscipit: vitaedi1318.corp: temqu@edol, FailD, colab -May 8 07:27:59 nimid: itatione1916.www.host: oluptate@issus, Analysis & Reporting > osamn -May 22 14:30:33 its7829.localhost datatno: [siutali:5979:1.4418] usmodte [Impact: failure] From esciuntN/idunt at ptasnu May 22 14:30:33 2016 UTC [Classification: rQu] [Priority: oremeu ]:alert {ipv6} 10.110.31.190 -> 10.157.18.252:5300 (eeufugia) -Jun 5 21:33:08 aec3673.internal.host ccaeca: HMNOTIFY: niamq (Sensor lapariat): Severity:medium: failure -Jun 20 04:35:42 admin: stenatu inibu2292.www.invalid: isetquas@ute, Login, Login Success -Jul 4 11:38:16 ori1241.www.corp : HMNOTIFY: ercit (Sensor eporroq): Severity:very-high: failure -Jul 18 18:40:50 atuse: ueipsa748.localdomain: aparia@tatnon, Heartbeat, leumiur -Aug 2 01:43:25 oluptat548.www5.invalid edolorin: HMNOTIFY: dolorem (Sensor tem): Severity:very-high: failure -Aug 16 08:45:59 imadmi: isnis loremag6816.www5.lan: inrepreh@quovo, System > urExcep -Aug 30 15:48:33 tionemu5269.internal.localhost : HMNOTIFY: occaec (Sensor acommodi): Severity:medium: failure -Sep 13 22:51:07 isiutali: lumqu onulamco7734.www.local: uptat@unt, Analysis & Reporting , tass -2016-9-28T05:53:42Z luptatem3834.lan edq %NGIPS-medium-tise:AccessControlRuleAction:block,AccessControlRuleName:tnul,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:ess,ConnectType:quiad,DE:ihilmole,DNSResponseType:saquaea,DstIP:10.80.151.37,DstPort:535,ICMPCode:modico,ICMPType:metco,InitiatorBytes:410,InitiatorPackets:porinc,NAPPolicy:riame,Policy:riat,ResponderBytes:181,ResponderPackets:rumSec,Sinkhole:orp,SrcIP:10.213.109.180,SrcPort:6536,TCPFlags:essequam,URLCategory:ueporro,URLReputation:84.488000,UserName:etcon,ClientVersion:1.4438,WebApplication:orum,OriginalClientIP: Bonoru,IngressInterface: lo5284,EgressInterface: enp0s73,IngressZone: emacc,EgressZone: emp,Prefilter Policy: lamcola,UserAgent: Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36,ReferencedHost: ipiscive,URL: https://www.example.org/etdolor/uat.gif?mmod=iti#nimadm,HTTPResponse: nculp,HTTPReferer: asp,IPReputationSICategory: eacom,DNS_TTL: mag,DNSRecordType: gelitse,DNSQuery: oremqu,GID: idex,SID: radip,Revision: upta,Message: tetura,Classification: rumet,User: uptasnul,Priority: antiumdo, ACPolicy: ecill, ConnectionDuration: 56.481000,Protocol: ipv6,VLAN_ID: 3302,IPSCount: 6436,InlineResult: allow, DNSSICategory: nostrud, URLSICategory: cteturad -Oct 12 2016 12:56:16 exercita2068.api.invalid %FTD-veleumi-nsequatu:CLOCK: System clock set, source: nula, IP: 10.169.84.140, before: santi, after: ritati -Oct 26 2016 19:58:50 orumS757.www5.corp: %FTD-eursint-orio:CLOCK: System clock set, source: gna, IP: 10.130.231.129, before: olu, after: iameaque -2016-11-10T03:01:24Z sedquian4212.www5.domain magnaa %NGIPS-medium-eca:AccessControlRuleAction:allow,AccessControlRuleName:tes,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:isi,ConnectType:iaecon,DE:aevitaed,DNSResponseType:byCic,DstIP:10.62.8.123,DstPort:5725,ICMPCode:siarc,ICMPType:fdeFin,InitiatorBytes:4053,InitiatorPackets:tobeata,NAPPolicy:nesciun,Policy:amcolab,ResponderBytes:4306,ResponderPackets:isnisiut,Sinkhole:atatnon,SrcIP:10.143.37.32,SrcPort:209,TCPFlags:uisnos,URLCategory:olores,URLReputation:174.651000,UserName:epo,ClientVersion:1.745,WebApplication:borisnis,OriginalClientIP: onorumet,IngressInterface: enp0s6017,EgressInterface: enp0s2440,IngressZone: ipsumq,EgressZone: evit,Prefilter Policy: tno,UserAgent: Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10,ReferencedHost: psumq,URL: https://internal.example.com/atu/teturad.htm?msequ=nvol#enimadmi,HTTPResponse: tateveli,HTTPReferer: osa,IPReputationSICategory: mini,DNS_TTL: rors,DNSRecordType: ssusci,DNSQuery: ames,GID: inimve,SID: uio,Revision: mexercit,Message: byC,Classification: uae,User: oremip,Priority: its, ACPolicy: uptasnul, ConnectionDuration: 115.011000,Protocol: rdp,VLAN_ID: 7541,IPSCount: 239,InlineResult: deny, DNSSICategory: nse, URLSICategory: miurere -Nov 24 10:03:59 ntor: oinBCSed3444.api.local: smodtem@roquisqu, Logout, Logout Success -Dec 8 17:06:33 apari5002.api.test orum: [nsequat:27813:1.6724] auto [Impact: failure] From sci at periam Dec 8 17:06:33 2016 UTC [Classification: fugiatnu] [Priority: dolor ]: {icmp} 10.182.213.195:7119 (tur) -> 10.9.200.197 -2016-12-23T00:09:07Z audant3412.www.local remeum %NGIPS-medium-animi:AccessControlRuleAction:allow, AccessControlRuleReason:failure, SrcIP:10.210.180.142, DstIP:10.111.33.70, SrcPort:3015, DstPort:3758, Protocol: ggp, IngressInterface: enp0s6049, IngressZone:amcolabo, ACPolicy:orsitvol, AccessControlRuleName:eriam, Prefilter Policy:anonn, User:utpers, Client:num, ApplicationProtocol:tcp, InitiatorPackets:iaturE, ResponderPackets:epor, InitiatorBytes:3465, ResponderBytes:3813, NAPPolicy:amnih, DNSQuery:tper4341.lan, DNSRecordType: a host address, DNSSICategory:nulamc -Jan 6 07:11:41 antiu3533.internal.domain iatquovo: HMNOTIFY: lapari (Sensor Mal): Severity:medium: success -Jan 20 14:14:16 cidu921.internal.lan quamq: Sha256:usan Disposition: Malware Threat name: tdolo IP Addresses: 10.222.183.123<<-10.165.33.19 -Feb 3 21:16:50 unturmag6190.api.lan remeum: [etur:16539:1.890] "Quisa" [Impact: unknown] From dolo at modoco Feb 3 21:16:50 2017 UTC [Classification: Finibus] [Priority: uisautei]: {rdp} 10.52.190.18:4411 -> 10.238.223.171 -Feb 18 04:19:24 conseq6079.www.corp tiu: [wri:26992:1.3902] asper [Impact: unknown] From orem/inibus at secte Feb 18 04:19:24 2017 UTC [Classification: ctobeat] [Priority: onsec ]: {udp} 10.68.233.163 -> 10.160.178.109:1934 -Mar 4 2017 11:21:59 tvol3402.www.local %FTD-ollita-qua:CLOCK: System clock set, source: ionula, IP: 10.162.109.83, before: nderi, after: tem -Mar 18 2017 18:24:33 xcep3783.internal.localhost %FTD-ercitati-atem:User 'serro' executed the 'lumquid' command. -Apr 2 01:27:07 ciatisun7378.www5.invalid didun: HMNOTIFY: riaturEx (Sensor nde): Severity:low: unknown -Apr 16 08:29:41 iqu4858.mail.invalid audant: [obeata:11634:1.6627] "minimve" [Impact: unknown] From "toditau/uiad" at nvolupta Apr 16 08:29:41 2017 UTC [Classification: exercit] [Priority: dexer ]:alert {igmp} 10.116.175.84 -> 10.213.100.153 -Apr 30 15:32:16 lumqui: ectet ionu3320.api.localhost: estq@quasiarc, Command Line,aliquaU -May 14 22:34:50 tvolu: imve ollitan5079.www.lan: deriti@edictasu, Health > eturadi -May 29 05:37:24 nihilmol1849.api.local eporroq: Protocol: tcp, AccessControlRuleAction:block,AccessControlRuleName:iatn,AccessControlRuleReason:unknown,ApplicationProtocol:igmp,Client:eli,ConnectType:rissusci,DE:ectetur,DNSResponseType:dictasun,DstIP:10.26.95.225,DstPort:4196,FileCount:3674,ICMPCode:oluptate,ICMPType:ntut,InitiatorBytes:5153,InitiatorPackets:scipit,NAPPolicy:litess,Policy:tore,ResponderBytes:5269,ResponderPackets:quunturm,Sinkhole:quovo,SrcIP:10.143.219.250,SrcPort:1444,TCPFlags:conse,URLCategory:aturve,URLReputation:8.942000,UserName:fdeFin,ClientVersion:1.2871,WebApplication:psu,OriginalClientIP: strud,IngressInterface: eth6386,EgressInterface: lo7421,IngressZone: ratv,EgressZone: veni,Prefilter Policy: metM,UserAgent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0],ReferencedHost: tate,URL: https://internal.example.com/uun/amrem.gif?umq=ita#ipsaquae,HTTPResponse: olu,HTTPReferer: exerci,IPReputationSICategory: isnostru,DNS_TTL: iad,DNSRecordType: ngelits,DNSQuery: volupt,GID: billoi,SID: 38352,Revision: utaliqui,Message: uov,Classification: pariat,User: icaboNe,Priority: boreetd, ACPolicy: uir -Jun 12 12:39:58 ipsu: [oremip] ota4562.local: epteurs@itse, Task Queue, rever -Jun 26 19:42:33 eiu: [maliquam] gnama5033.www5.home: ction@emveleum, Object > siuta -Jul 11 02:45:07 sum6106.www.home ulamc: HMNOTIFY: doe (Sensor eiusm): Severity:very-high: failure -Jul 25 09:47:41 ugiatn: squa2763.www.lan: trude@snulap, Task Queue, onsequat -2017-8-8T16:50:15Z aturvel1847.mail.localdomain sedquia %NGIPS-high-ostrudex:AccessControlRuleAction:cancel, AccessControlRuleReason:unknown, SrcIP:10.240.144.78, DstIP:10.251.159.118, SrcPort:2998, DstPort:2795, Protocol: ipv6, IngressInterface: lo6367, IngressZone:ptatems, ACPolicy:tenima, AccessControlRuleName:emagnam, Prefilter Policy:iaco, User:urQuisa, Client:ipi, ApplicationProtocol:ipv6-icmp, InitiatorPackets:amali, ResponderPackets:onula, InitiatorBytes:1580, ResponderBytes:4902, NAPPolicy:por, DNSQuery:stiae3403.internal.localhost, DNSRecordType: a host address, DNSSICategory:Ute -Aug 22 23:52:50 setq5996.corp : HMNOTIFY: odi (Sensor tper): Severity:medium: success -Sep 6 06:55:24 quiano3025.api.localhost oluptat: HMNOTIFY: sequatD (Sensor emap): Severity:very-high: unknown -Sep 20 13:57:58 qui7797.www.host : HMNOTIFY: umet (Sensor psaquaea): Severity:low: failure -2017-10-4T21:00:32Z Utenim3707.www5.host iamquisn %NGIPS-low-lor:AccessControlRuleAction:cancel, AccessControlRuleReason:success, SrcIP:10.140.209.249, DstIP:10.201.132.114, SrcPort:1801, DstPort:639, Protocol: ggp, IngressInterface: lo3580, IngressZone:eacommo, ACPolicy:litani, AccessControlRuleName:temse, Prefilter Policy:samvo, User:itsedd, Client:icta, ApplicationProtocol:igmp, InitiatorPackets:labori, ResponderPackets:ditau, InitiatorBytes:470, ResponderBytes:5413, NAPPolicy:olest, DNSQuery:urau1660.www.lan, DNSRecordType: a host address, DNSSICategory:Neq -Oct 19 04:03:07 Nequepor: [aUten] edutpers3482.www5.corp: mnisis@onsequa, Access Control Policy > sunt -Nov 2 11:05:41 nofde7732.internal.test emp: [emoeni:13228:1.2633] taliqui [Impact: failure] From labo at ssecill Nov 2 11:05:41 2017 UTC [Classification: umquam] [Priority: onev ]: atu {ipv6} 10.198.44.231 -> 10.36.122.169:6751 (ariatu) -2017-11-16T18:08:15Z byCicero7475.www.localhost abillo %NGIPS-medium-eav:AccessControlRuleAction:block, AccessControlRuleReason:failure, SrcIP:10.77.86.215, DstIP:10.144.162.122, SrcPort:5913, DstPort:2080, Protocol: udp, IngressInterface: lo5079, IngressZone:sequine, ACPolicy:minimv, AccessControlRuleName:ffici, Prefilter Policy:rsintoc, User:boreetd, Client:rehende, ApplicationProtocol:icmp, InitiatorPackets:erspic, ResponderPackets:orincidi, InitiatorBytes:3273, ResponderBytes:6430, NAPPolicy:quipe, DNSQuery:evita850.localdomain, DNSRecordType: a host address, DNSSICategory:tiu -Dec 1 01:10:49 acons: [enbyCic] aturau3002.api.corp: sci@psamvolu, itsedqui -2017-12-15T08:13:24Z ntiumt238.internal.corp isc %NGIPS-high-odite:AccessControlRuleAction:cancel,AccessControlRuleName:ostr,AccessControlRuleReason:unknown,ApplicationProtocol:tcp,Client:itan,ConnectType:olorin,DE:oluptat,DNSResponseType:olors,DstIP:10.85.61.13,DstPort:6593,ICMPCode:quian,ICMPType:xerci,InitiatorBytes:5178,InitiatorPackets:upt,NAPPolicy:uovolu,Policy:itten,ResponderBytes:4805,ResponderPackets:abo,Sinkhole:orisnis,SrcIP:10.212.37.178,SrcPort:76,TCPFlags:aconseq,URLCategory:isnos,URLReputation:132.397000,UserName:lit,ClientVersion:1.4,WebApplication:odic,OriginalClientIP: ono,IngressInterface: eth1462,EgressInterface: enp0s3976,IngressZone: ine,EgressZone: hend,Prefilter Policy: rcit,UserAgent: Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30,ReferencedHost: nsecte,URL: https://api.example.org/tat/pitlabor.gif?rrorsi=loremqu#busBono,HTTPResponse: mnisiut,HTTPReferer: eabil,IPReputationSICategory: olu,DNS_TTL: uaUte,DNSRecordType: empor,DNSQuery: ate,GID: eca,SID: inre,Revision: aliqu,Message: orem,Classification: dquian,User: isaute,Priority: rumetMa, ACPolicy: utfugit, ConnectionDuration: 95.196000,Protocol: ggp,VLAN_ID: 5189,IPSCount: 1350,InlineResult: allow, DNSSICategory: ntocca, URLSICategory: emquelau -Dec 29 15:15:58 atu2951.test : HMNOTIFY: pitlab (Sensor riosamn): Severity:medium: success -Jan 12 22:18:32 mini: tutl uipe5295.api.localhost: mwrit@dminimve, Access Control Policy > madminim -2018-1-27T05:21:06Z tatiset5041.www5.local tevelit %NGIPS-low-Utenim:AccessControlRuleAction:deny,AccessControlRuleName:uisa,AccessControlRuleReason:unknown,ApplicationProtocol:ggp,Client:siutal,ConnectType:umetMalo,DE:onevolu,DNSResponseType:itautfug,DstIP:10.236.221.212,DstPort:5294,ICMPCode:nsequatD,ICMPType:amcorp,InitiatorBytes:1539,InitiatorPackets:idolor,NAPPolicy:umdo,Policy:sequatu,ResponderBytes:7142,ResponderPackets:ecillu,Sinkhole:ipsaqu,SrcIP:10.31.46.127,SrcPort:7526,TCPFlags:magn,URLCategory:amcola,URLReputation:173.477000,UserName:sno,ClientVersion:1.6406,WebApplication:ntiu,OriginalClientIP: tametco,IngressInterface: lo6910,EgressInterface: eth6946,IngressZone: non,EgressZone: pta,Prefilter Policy: asnul,UserAgent: Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91,ReferencedHost: todit,URL: https://www.example.com/fug/ulpaq.gif?piscivel=ueporr#udex,HTTPResponse: ipexeac,HTTPReferer: uin,IPReputationSICategory: isci,DNS_TTL: archi,DNSRecordType: rsitame,DNSQuery: qui,GID: umdolo,SID: tate,Revision: sintocca,Message: ugiat,Classification: asuntex,User: uovolup,Priority: expl, ACPolicy: animi, ConnectionDuration: 63.677000,Protocol: ipv6,VLAN_ID: 3389,IPSCount: 1457,InlineResult: cancel, DNSSICategory: taliqui, URLSICategory: doloremi -Feb 10 12:23:41 atevel: [oloremeu] esse2198.mail.example: uaturvel@quisqua, System > sedquian -Feb 24 2018 19:26:15 pitlab5165.localdomain %FTD-uptate-tevelite:CLOCK: System clock set, source: cto, IP: 10.17.172.91, before: agn, after: dip -Mar 11 02:28:49 acomm: [edquia] uinesci6041.api.local: pers@lpaquiof, Analysis isisten -Mar 25 09:31:24 uovol2459.www5.invalid volup: [nimi:5155:1.2115] lillum [Impact: success] From suntin at consequa Mar 25 09:31:24 2018 UTC [Classification: tionu] [Priority: umqua ]:alert {tcp} 10.28.105.106 -> 10.60.137.215:3266 (icons) -Apr 8 16:33:58 ptate7215.www5.home mquiado: HMNOTIFY: ssequa (Sensor nisist): Severity:low: failure -Apr 22 23:36:32 metc7395.lan ataevit: Protocol: rdp, AccessControlRuleAction:deny,AccessControlRuleName:toditaut,AccessControlRuleReason:success,ApplicationProtocol:ipv6-icmp,Client:didu,ConnectType:emporain,DE:ovo,DNSResponseType:aeabillo,DstIP:10.53.0.68,DstPort:7066,FileCount:4405,ICMPCode:rehen,ICMPType:sitasp,InitiatorBytes:933,InitiatorPackets:exeacom,NAPPolicy:teir,Policy:suntin,ResponderBytes:4053,ResponderPackets:upta,Sinkhole:iaeconse,SrcIP:10.235.102.51,SrcPort:1905,TCPFlags:uscip,URLCategory:ptasn,URLReputation:163.091000,UserName:san,ClientVersion:1.1124,WebApplication:amqui,OriginalClientIP: itatise,IngressInterface: lo6252,EgressInterface: enp0s6516,IngressZone: liqu,EgressZone: cons,Prefilter Policy: apar,UserAgent: Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36,ReferencedHost: umtota,URL: https://internal.example.com/xplic/isn.html?ame=tenat#etur,HTTPResponse: uisnost,HTTPReferer: snul,IPReputationSICategory: quasia,DNS_TTL: ihilmol,DNSRecordType: seosqui,DNSQuery: tiset,GID: ciade,SID: 31978,Revision: equ,Message: rror,Classification: Exce,User: uae,Priority: tut, ACPolicy: umdol -May 7 2018 06:39:06 Loremips5368.www5.corp: %FTD-ficiade-nemull:Offloaded TCP Flow for connectiontrumexfromenp0s484:10.49.190.163/4220(10.20.167.114/6975) tolo7626:10.166.40.137/5279(10.65.144.119/6233) -May 21 13:41:41 mexer1548.www5.example uidexea: Sha256:emu Disposition: Malware Threat name: asia IP Addresses: 10.162.128.87<<-10.104.78.147 -Jun 4 20:44:15 emulla6625.www5.corp oditaut: Sha256:oloremqu Disposition: Malware Threat name: untNeque IP Addresses: 10.82.180.46<<-10.237.43.87 -Jun 19 03:46:49 magn3657.api.invalid tquiine: [ill:5315:1.4189] "mquisn" [Impact: success] From nby/uames at dolo Jun 19 03:46:49 2018 UTC [Classification: mnihil] [Priority: aturQui ]: umqua {icmp} 10.234.234.205:5714 (eos) -> 10.180.28.156:4665 (quovol) -Jul 3 10:49:23 nis3942.mail.example edutpe: HMNOTIFY: architec (Sensor incul): Severity:high: success -2018-7-17T17:51:58Z iscing6960.api.invalid emipsu %NGIPS-very-high-temUte:AccessControlRuleAction:block, AccessControlRuleReason:success, SrcIP:10.40.250.209, DstIP:10.166.10.187, SrcPort:3941, DstPort:793, Protocol: udp, IngressInterface: lo2032, IngressZone:nculpaq, ACPolicy:mides, AccessControlRuleName:iconseq, Prefilter Policy:nidolo, User:runtmoll, Client:tuserror, ApplicationProtocol:igmp, InitiatorPackets:adipis, ResponderPackets:tet, InitiatorBytes:1259, ResponderBytes:4280, NAPPolicy:inv, DNSQuery:upta788.invalid, DNSRecordType: a host address, DNS_TTL: olupta, DNSSICategory:raincidu -Aug 1 00:54:32 consequu3962.api.localdomain Maloru: Protocol: ggp, AccessControlRuleAction:cancel,AccessControlRuleName:equat,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:estlab,ConnectType:vol,DE:paqui,DNSResponseType:eiusmo,DstIP:10.33.37.252,DstPort:3192,FileCount:2960,ICMPCode:itseddoe,ICMPType:tnulapa,InitiatorBytes:6405,InitiatorPackets:ngelitse,NAPPolicy:Utenim,Policy:llitan,ResponderBytes:2517,ResponderPackets:urs,Sinkhole:uepor,SrcIP:10.52.109.149,SrcPort:1416,TCPFlags:piciati,URLCategory:mipsum,URLReputation:7.706000,UserName:ditaut,ClientVersion:1.91,WebApplication:niamquis,OriginalClientIP: lapariat,IngressInterface: lo5184,EgressInterface: lo62,IngressZone: mpo,EgressZone: deritinv,Prefilter Policy: ten,UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36,ReferencedHost: temporai,URL: https://example.com/emeumf/res.txt?ptasn=ima#emUte,HTTPResponse: atnonp,HTTPReferer: imaven,IPReputationSICategory: cia,DNS_TTL: doconseq,DNSRecordType: quia,DNSQuery: veleum,GID: emUten,SID: 31978,Revision: proiden,Message: cita,Classification: iac,User: ntincul,Priority: mnisiste, ACPolicy: uptas -Aug 15 07:57:06 ita7851.localhost dictas: Sha256:equaturv Disposition: Malware Threat name: rsi IP Addresses: 10.78.180.219<<-10.198.202.72 -Aug 29 14:59:40 laparia5374.api.domain norumet: [tconse:26152:1.2390] "tam" [Impact: success] From "inc/riaturEx" at eleumiur Aug 29 14:59:40 2018 UTC [Classification: eufugi] [Priority: ionu ] < {ggp} 10.147.155.100 -> 10.232.67.182:2086 (maccusan) -Sep 12 22:02:15 onse3711.api.domain aliquaUt: [boreet:9193:1.1034] vol [Impact: unknown] From "nof/boNe" at ovolu Sep 12 22:02:15 2018 UTC [Classification: cid] [Priority: periam ] {ggp} 10.4.147.70:3210 -> 10.95.152.78:1267 -Sep 27 05:04:49 elite: nde iac7016.api.lan: antiu@llumquid, FailD, paq -Oct 11 12:07:23 sit: tte4006.www5.test: lors@isautem, Intrusion Events,metco -2018-10-25T19:09:57Z equatD1241.www5.host rpo %NGIPS-low-econs:AccessControlRuleAction:cancel,AccessControlRuleName:bor,AccessControlRuleReason:success,ApplicationProtocol:udp,Client:ten,ConnectType:ssec,DE:snulapar,DNSResponseType:maccusan,DstIP:10.54.49.229,DstPort:1089,ICMPCode:iset,ICMPType:piciatis,InitiatorBytes:3781,InitiatorPackets:dolor,NAPPolicy:tur,Policy:sBo,ResponderBytes:1426,ResponderPackets:rehende,Sinkhole:iaeco,SrcIP:10.204.18.92,SrcPort:4216,TCPFlags:psamvolu,URLCategory:odte,URLReputation:12.264000,UserName:aparia,ClientVersion:1.2692,WebApplication:reetd,OriginalClientIP: nos,IngressInterface: enp0s6783,EgressInterface: enp0s2434,IngressZone: urveli,EgressZone: agnaa,Prefilter Policy: olu,UserAgent: Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36,ReferencedHost: atae,URL: https://www5.example.net/boNemo/duntutla.html?tmollit=ptat#nnumqu,HTTPResponse: billoi,HTTPReferer: ciatisu,IPReputationSICategory: evelites,DNS_TTL: vol,DNSRecordType: ommodi,DNSQuery: ritat,GID: dipi,SID: asnulapa,Revision: atev,Message: onsequa,Classification: seddoe,User: quisnost,Priority: tionu, ACPolicy: ciades, ConnectionDuration: 116.537000,Protocol: icmp,VLAN_ID: 764,IPSCount: 5618,InlineResult: accept, DNSSICategory: nvolupt, URLSICategory: stia -Nov 9 02:12:32 essequ121.localdomain uaturQui: Sha256:emi Disposition: Malware Threat name: mipsumq IP Addresses: 10.216.14.36<<-10.224.250.83 -Nov 23 09:15:06 borios1685.www.localhost umfu: [inesc:10329:1.6298] "olupt" [Impact: failure] From otamr/nonnu at riamea Nov 23 09:15:06 2018 UTC [Classification: taliquip] [Priority: upt ]:alert {ggp} 10.38.22.60:653 (ipi) -> 10.231.10.63 -2018-12-7T16:17:40Z odt2318.localdomain dut %NGIPS-high-remape:AccessControlRuleAction:cancel, AccessControlRuleReason:failure, SrcIP:10.46.57.181, DstIP:10.29.231.11, SrcPort:3760, DstPort:2231, Protocol: ggp, IngressInterface: eth1891, IngressZone:orsitam, ACPolicy:olupt, AccessControlRuleName:tlab, Prefilter Policy:str, User:sit, Client:atat, ApplicationProtocol:tcp, InitiatorPackets:isnos, ResponderPackets:emp, InitiatorBytes:42, ResponderBytes:560, NAPPolicy:sciveli, DNSQuery:Bonoru5658.mail.invalid, DNSRecordType: a host address, DNSSICategory:omm -Dec 21 23:20:14 dolores: oin ueipsa6797.mail.home: agnaal@itaut, Access Control Policy > Bonoru -Jan 5 06:22:49 ntinculp: uptatemU iono5161.www5.localhost: ita@olupt, System > orisnisi -Jan 19 13:25:23 untut3537.domain sit: Protocol: ggp, AccessControlRuleAction:cancel,AccessControlRuleName:uia,AccessControlRuleReason:unknown,ApplicationProtocol:ipv6-icmp,Client:nostrume,ConnectType:corpori,DE:unti,DNSResponseType:tena,DstIP:10.199.173.109,DstPort:1531,FileCount:4238,ICMPCode:rmagni,ICMPType:tiono,InitiatorBytes:7625,InitiatorPackets:imipsamv,NAPPolicy:eroin,Policy:xplicabo,ResponderBytes:4308,ResponderPackets:cidu,Sinkhole:tquo,SrcIP:10.20.64.209,SrcPort:5294,TCPFlags:mrem,URLCategory:maliquam,URLReputation:112.060000,UserName:eiusmo,ClientVersion:1.3720,WebApplication:its,OriginalClientIP: prehende,IngressInterface: eth685,EgressInterface: lo919,IngressZone: uiration,EgressZone: secte,Prefilter Policy: ulapari,UserAgent: Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36,ReferencedHost: vol,URL: https://api.example.com/non/quaturQu.gif?etura=taedi#edi,HTTPResponse: quiacon,HTTPReferer: udexerc,IPReputationSICategory: volu,DNS_TTL: tassit,DNSRecordType: metconse,DNSQuery: remeum,GID: equaturQ,SID: 38469,Revision: mollita,Message: eserun,Classification: sBono,User: icab,Priority: iquaUten, ACPolicy: oluptasn -2019-2-2T20:27:57Z atio5250.api.localhost idolo %NGIPS-low-ritat:AccessControlRuleAction:block, AccessControlRuleReason:success, SrcIP:10.107.144.80, DstIP:10.135.250.25, SrcPort:703, DstPort:1306, Protocol: icmp, IngressInterface: lo3342, IngressZone:emquiavo, ACPolicy:nsequ, AccessControlRuleName:Secti, Prefilter Policy:utlabore, User:suscipi, Client:tlabor, ApplicationProtocol:ggp, InitiatorPackets:dolore, ResponderPackets:xer, InitiatorBytes:4673, ResponderBytes:1881, NAPPolicy:msequine, DNSQuery:reetd7201.invalid, DNSRecordType: a host address, DNS_TTL: ugiatquo, DNSSICategory:ende -Feb 17 03:30:32 tnula4380.mail.test edolo: HMNOTIFY: olupta (Sensor volu): Severity:low: failure -Mar 3 10:33:06 ugiat: [quiin] apar2567.www.localhost: iscing@ser, Policies > nama -Mar 17 2019 17:35:40 onsecte5119.www.invalid %FTD-dolore-iineavol:Failed to locate egress interface for icmp from enp0s3923:10.198.207.31/579 to 10.5.88.183/7518 -Apr 1 00:38:14 uis: [oluptat] iutali3143.host: ect@fdeFi, Analysis & Reporting , eritat -Apr 15 07:40:49 prehende: [spern] orro7466.www5.lan: issu@accusant, rrorsitv -Apr 29 14:43:23 quii: [dantiu] epre7710.www.domain: aria@ugi, Heartbeat, econ -May 13 21:45:57 tio: [tlabori] nsequatu2799.www5.invalid: mape@aboree, Task Queue, eumiurer -2019-5-28T04:48:31Z scingel1634.api.home orsit %NGIPS-high-meaq:AccessControlRuleAction:block,AccessControlRuleName:uaUten,AccessControlRuleReason:failure,ApplicationProtocol:icmp,Client:aec,ConnectType:issus,DE:ica,DNSResponseType:scingeli,DstIP:10.10.40.136,DstPort:6091,ICMPCode:idu,ICMPType:neavolup,InitiatorBytes:694,InitiatorPackets:giatquov,NAPPolicy:ovolupta,Policy:oen,ResponderBytes:7141,ResponderPackets:mtot,Sinkhole:entorev,SrcIP:10.34.89.14,SrcPort:4988,TCPFlags:quisnost,URLCategory:chitecto,URLReputation:124.035000,UserName:quelauda,ClientVersion:1.992,WebApplication:mquia,OriginalClientIP: saquaeab,IngressInterface: lo2474,EgressInterface: eth6425,IngressZone: deFini,EgressZone: radip,Prefilter Policy: odiconse,UserAgent: Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36,ReferencedHost: untu,URL: https://mail.example.net/quunturm/upta.gif?exer=mvolup#litseddo,HTTPResponse: ccaeca,HTTPReferer: snostr,IPReputationSICategory: ratvol,DNS_TTL: olaboris,DNSRecordType: smodite,DNSQuery: eataevi,GID: conseq,SID: quo,Revision: texplica,Message: urQuis,Classification: umetMa,User: tisetqua,Priority: lore, ACPolicy: taedicta, ConnectionDuration: 141.678000,Protocol: udp,VLAN_ID: 2110,IPSCount: 7554,InlineResult: cancel, DNSSICategory: tmollita, URLSICategory: turQuis -2019-6-11T11:51:06Z inBCSe364.www.corp ntore %NGIPS-very-high-tsedquia:AccessControlRuleAction:deny,AccessControlRuleName:mea,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:illoinv,ConnectType:euf,DE:turveli,DNSResponseType:onofdeFi,DstIP:10.197.182.37,DstPort:4472,ICMPCode:quaUte,ICMPType:ercitati,InitiatorBytes:6085,InitiatorPackets:rehe,NAPPolicy:hilmole,Policy:etura,ResponderBytes:540,ResponderPackets:eumiure,Sinkhole:exe,SrcIP:10.182.121.165,SrcPort:4822,TCPFlags:tate,URLCategory:tev,URLReputation:46.627000,UserName:uira,ClientVersion:1.2734,WebApplication:ncididu,OriginalClientIP: numqu,IngressInterface: enp0s1059,EgressInterface: enp0s3789,IngressZone: uscipitl,EgressZone: utfugit,Prefilter Policy: utali,UserAgent: Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;],ReferencedHost: peria,URL: https://api.example.com/uscip/uptatem.txt?eetd=orin#remag,HTTPResponse: conse,HTTPReferer: ate,IPReputationSICategory: iamq,DNS_TTL: tationul,DNSRecordType: qui,DNSQuery: porissu,GID: one,SID: mqu,Revision: iofficia,Message: uisnostr,Classification: lit,User: stlabo,Priority: uaer, ACPolicy: ectob, ConnectionDuration: 159.885000,Protocol: rdp,VLAN_ID: 350,IPSCount: 7423,InlineResult: allow, DNSSICategory: orema, URLSICategory: enderit -2019-6-25T18:53:40Z uaeratv2083.internal.localhost essecil %NGIPS-medium-uptate:AccessControlRuleAction:allow, AccessControlRuleReason:unknown, SrcIP:10.154.87.98, DstIP:10.186.68.87, SrcPort:2632, DstPort:2129, Protocol: igmp, IngressInterface: eth2658, IngressZone:suscipi, ACPolicy:eirure, AccessControlRuleName:itsed, Prefilter Policy:fugiat, User:ore, Client:labo, ApplicationProtocol:ipv6-icmp, InitiatorPackets:nisi, ResponderPackets:pidatatn, InitiatorBytes:2005, ResponderBytes:4560, NAPPolicy:odico, DNSQuery:onofdeFi1149.www5.domain, DNSRecordType: a host address, DNSSICategory:ioffici -2019-7-10T01:56:14Z nvo2629.example onsequ %NGIPS-medium-itess:AccessControlRuleAction:allow, AccessControlRuleReason:unknown, SrcIP:10.35.59.140, DstIP:10.67.211.63, SrcPort:1832, DstPort:7478, Protocol: udp, IngressInterface: eth3613, IngressZone:temqu, ACPolicy:emse, AccessControlRuleName:dantiu, Prefilter Policy:oluptate, User:onnu, Client:Ciceroin, ApplicationProtocol:udp, InitiatorPackets:itempora, ResponderPackets:uovol, InitiatorBytes:4338, ResponderBytes:584, NAPPolicy:bore, DNSQuery:lumdol5252.internal.test, DNSRecordType: a host address, DNS_TTL: seosq, DNSSICategory:orain -Jul 24 08:58:48 quianonn2762.api.localhost : HMNOTIFY: eeufugia (Sensor mquis): Severity:very-high: unknown -Aug 7 16:01:23 ver: [quaturv] atn2219.api.invalid: radip@ipsum, Heartbeat, itesse -Aug 21 23:03:57 equu1159.internal.localhost psumdol: HMNOTIFY: atcup (Sensor urautodi): Severity:medium: failure -Sep 5 06:06:31 dexer: [tionofde] urQuisau2442.mail.invalid: uptate@itesse, Login, Login Success -Sep 19 13:09:05 cididu3187.home asperna: Sha256:llumdolo Disposition: Malware Threat name: sequines IP Addresses: 10.14.46.141->10.179.27.185 -Oct 3 20:11:40 lorem: aliqua4025.www.localdomain: deFinibu@pitlab, Logout, Logout Success -Oct 18 03:14:14 ntutlab: aecatcup citati1297.api.domain: emp@uptate, Policies > olupta -Nov 1 10:16:48 nreprehe2138.www5.domain : HMNOTIFY: eursi (Sensor aute): Severity:medium: success -Nov 15 17:19:22 pari: [ent] idolore6589.api.localdomain: ctobea@audanti, Logout, Logout Success -Nov 30 2019 00:21:57 erunt3957.internal.lan %FTD-aut-iono:TCP Flow is no longer offloaded for connection runtmo from lo2571:10.118.103.185/1333 (10.240.77.10/2226) to lo5895:10.125.130.61/6154 (10.32.195.34/135) -Dec 14 07:24:31 ntNe7144.api.lan oremips: Sha256:numqu Disposition: Malware Threat name: sed IP Addresses: 10.111.130.177<<-10.188.88.133 diff --git a/x-pack/filebeat/module/snort/log/test/generated.log-expected.json b/x-pack/filebeat/module/snort/log/test/generated.log-expected.json deleted file mode 100644 index a30c9af806f..00000000000 --- a/x-pack/filebeat/module/snort/log/test/generated.log-expected.json +++ /dev/null @@ -1,3784 +0,0 @@ -[ - { - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jan 29 2016 06:09:59 quid2184.invalid: %FTD-enim-dqu:CLOCK: System clock set, source: veri, IP: 10.202.72.124, before: inv, after: emo", - "fileset.name": "log", - "host.ip": "10.202.72.124", - "host.name": "quid2184.invalid", - "input.type": "log", - "log.offset": 0, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "quid2184.invalid", - "veri" - ], - "related.ip": [ - "10.202.72.124" - ], - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "dqu", - "rsa.misc.change_attrib": "Time", - "rsa.misc.change_new": "emo", - "rsa.misc.change_old": "inv", - "rsa.misc.event_source": "veri", - "rsa.network.alias_host": [ - "quid2184.invalid" - ], - "rsa.time.day": "29", - "rsa.time.month": "Jan", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 3676, - "destination.ip": "10.212.11.114", - "destination.port": 3716, - "event.action": "deny", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2016-2-12T13:12:33Z inBCSedu5722.internal.lan nimadmin %NGIPS-medium-uam:AccessControlRuleAction:deny, AccessControlRuleReason:success, SrcIP:10.38.77.13, DstIP:10.212.11.114, SrcPort:3971, DstPort:3716, Protocol: tcp, IngressInterface: eth4091, IngressZone:isiu, ACPolicy:nimadmi, AccessControlRuleName:iatisu, Prefilter Policy:iat, User:tevelit, Client:nsequat, ApplicationProtocol:igmp, InitiatorPackets:llam, ResponderPackets:llamcorp, InitiatorBytes:4512, ResponderBytes:3676, NAPPolicy:eataevit, DNSQuery:uptatev4292.www.invalid, DNSRecordType: a host address, DNSSICategory:atat", - "fileset.name": "log", - "host.name": "uptatev4292.www.invalid", - "input.type": "log", - "log.level": "medium", - "log.offset": 135, - "network.application": "nsequat", - "network.protocol": "igmp", - "observer.egress.interface.name": "eth4091", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "uptatev4292.www.invalid" - ], - "related.ip": [ - "10.212.11.114", - "10.38.77.13" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "uam", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "atat", - "rsa.misc.policy_name": "eataevit", - "rsa.misc.result": "success", - "rsa.misc.rule_name": "iatisu", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "uptatev4292.www.invalid" - ], - "rsa.network.dinterface": "eth4091", - "rsa.network.zone_dst": "isiu", - "rsa.time.day": "12", - "rule.name": "iatisu", - "service.type": "snort", - "source.bytes": 4512, - "source.ip": "10.38.77.13", - "source.port": 3971, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "itecto", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Feb 26 20:15:08 tlabo6088.www.localdomain Lor: HMNOTIFY: itecto (Sensor erc): Severity:medium: failure", - "fileset.name": "log", - "host.name": "tlabo6088.www.localdomain", - "input.type": "log", - "log.level": "medium", - "log.offset": 721, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "tlabo6088.www.localdomain" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "itecto", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "erc", - "rsa.misc.severity": "medium", - "rsa.time.day": "26", - "rsa.time.month": "Feb", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "suntinc", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 12 03:17:42 eporroqu4200.domain atquovo: HMNOTIFY: suntinc (Sensor xeac): Severity:medium: success", - "fileset.name": "log", - "host.name": "eporroqu4200.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 824, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "eporroqu4200.domain" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "suntinc", - "rsa.misc.result": "success", - "rsa.misc.sensor": "xeac", - "rsa.misc.severity": "medium", - "rsa.time.day": "12", - "rsa.time.month": "Mar", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 26 10:20:16 eirure: conseq557.mail.lan: aaliquaU@ntor, Analysis & Reporting > lpaqui", - "file.name": "eirure", - "fileset.name": "log", - "host.name": "conseq557.mail.lan", - "input.type": "log", - "log.offset": 927, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "conseq557.mail.lan" - ], - "related.user": [ - "aaliquaU" - ], - "rsa.db.index": "lpaqui", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Analysis & Reporting", - "rsa.network.alias_host": [ - "conseq557.mail.lan" - ], - "rsa.time.day": "26", - "rsa.time.month": "Mar", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "aaliquaU" - }, - { - "destination.bytes": 3365, - "destination.ip": "10.24.67.250", - "destination.port": 2026, - "event.action": "block", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2016-4-9T17:22:51Z ationemu5040.www.lan utei %NGIPS-low-oei:AccessControlRuleAction:block, AccessControlRuleReason:unknown, SrcIP:10.182.199.231, DstIP:10.24.67.250, SrcPort:4478, DstPort:2026, Protocol: igmp, IngressInterface: enp0s5361, IngressZone:commod, ACPolicy:adol, AccessControlRuleName:doloremi, Prefilter Policy:luptasn, User:hitect, Client:dol, ApplicationProtocol:ipv6-icmp, InitiatorPackets:modocon, ResponderPackets:que, InitiatorBytes:651, ResponderBytes:3365, NAPPolicy:nsecte, DNSQuery:itame189.domain, DNSRecordType: a host address, DNSSICategory:exercit", - "fileset.name": "log", - "host.name": "itame189.domain", - "input.type": "log", - "log.level": "low", - "log.offset": 1016, - "network.application": "dol", - "network.protocol": "ipv6-icmp", - "observer.egress.interface.name": "enp0s5361", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "itame189.domain" - ], - "related.ip": [ - "10.182.199.231", - "10.24.67.250" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "oei", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "exercit", - "rsa.misc.policy_name": "nsecte", - "rsa.misc.result": "unknown", - "rsa.misc.rule_name": "doloremi", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "itame189.domain" - ], - "rsa.network.dinterface": "enp0s5361", - "rsa.network.zone_dst": "commod", - "rsa.time.day": "9", - "rule.name": "doloremi", - "service.type": "snort", - "source.bytes": 651, - "source.ip": "10.182.199.231", - "source.port": 4478, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 24 00:25:25 uscipit: vitaedi1318.corp: temqu@edol, FailD, colab", - "file.name": "uscipit", - "fileset.name": "log", - "host.name": "vitaedi1318.corp", - "input.type": "log", - "log.offset": 1590, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "vitaedi1318.corp" - ], - "related.user": [ - "temqu" - ], - "rsa.db.index": "colab", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "vitaedi1318.corp" - ], - "rsa.time.day": "24", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "temqu" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "May 8 07:27:59 nimid: itatione1916.www.host: oluptate@issus, Analysis & Reporting > osamn", - "file.name": "nimid", - "fileset.name": "log", - "host.name": "itatione1916.www.host", - "input.type": "log", - "log.offset": 1658, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "itatione1916.www.host" - ], - "related.user": [ - "oluptate" - ], - "rsa.db.index": "osamn", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Analysis & Reporting", - "rsa.network.alias_host": [ - "itatione1916.www.host" - ], - "rsa.time.day": "8", - "rsa.time.month": "May", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "oluptate" - }, - { - "destination.geo.country_name": "eeufugia", - "destination.ip": "10.157.18.252", - "destination.port": 5300, - "event.code": "5979", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "May 22 14:30:33 its7829.localhost datatno: [siutali:5979:1.4418] usmodte [Impact: failure] From esciuntN/idunt at ptasnu May 22 14:30:33 2016 UTC [Classification: rQu] [Priority: oremeu ]:alert {ipv6} 10.110.31.190 -> 10.157.18.252:5300 (eeufugia)", - "fileset.name": "log", - "host.name": "its7829.localhost", - "input.type": "log", - "log.level": "oremeu", - "log.offset": 1748, - "network.protocol": "ipv6", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.4418", - "related.hosts": [ - "its7829.localhost" - ], - "related.ip": [ - "10.110.31.190", - "10.157.18.252" - ], - "rsa.crypto.sig_type": "rQu", - "rsa.internal.messageid": "5979", - "rsa.misc.context": "usmodte", - "rsa.misc.event_log": "datatno", - "rsa.misc.group_object": "esciuntN", - "rsa.misc.policy_name": "usmodte", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "idunt", - "rsa.misc.severity": "oremeu", - "rsa.misc.sig_id": 5979, - "rsa.misc.version": "1.4418", - "rsa.network.alias_host": [ - "its7829.localhost" - ], - "rsa.threat.threat_desc": "oremeu", - "rsa.time.day": "22", - "rsa.time.event_time_str": "May 22 14:30:33 2016 UTC", - "rsa.time.month": "May", - "service.type": "snort", - "source.ip": "10.110.31.190", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "niamq", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jun 5 21:33:08 aec3673.internal.host ccaeca: HMNOTIFY: niamq (Sensor lapariat): Severity:medium: failure", - "fileset.name": "log", - "host.name": "aec3673.internal.host", - "input.type": "log", - "log.level": "medium", - "log.offset": 1996, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "aec3673.internal.host" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "niamq", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "lapariat", - "rsa.misc.severity": "medium", - "rsa.time.day": "5", - "rsa.time.month": "Jun", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jun 20 04:35:42 admin: stenatu inibu2292.www.invalid: isetquas@ute, Login, Login Success", - "event.outcome": "success", - "file.name": "admin", - "fileset.name": "log", - "host.name": "inibu2292.www.invalid", - "input.type": "log", - "log.offset": 2101, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "inibu2292.www.invalid" - ], - "related.user": [ - "isetquas" - ], - "rsa.internal.messageid": "SystemSettings", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.network.alias_host": [ - "inibu2292.www.invalid" - ], - "rsa.time.day": "20", - "rsa.time.month": "Jun", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "isetquas" - }, - { - "event.action": "ercit", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jul 4 11:38:16 ori1241.www.corp : HMNOTIFY: ercit (Sensor eporroq): Severity:very-high: failure", - "fileset.name": "log", - "host.name": "ori1241.www.corp", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2190, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ori1241.www.corp" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "ercit", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "eporroq", - "rsa.misc.severity": "very-high", - "rsa.time.day": "4", - "rsa.time.month": "Jul", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jul 18 18:40:50 atuse: ueipsa748.localdomain: aparia@tatnon, Heartbeat, leumiur", - "file.name": "atuse", - "fileset.name": "log", - "host.name": "ueipsa748.localdomain", - "input.type": "log", - "log.offset": 2286, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ueipsa748.localdomain" - ], - "related.user": [ - "aparia" - ], - "rsa.db.index": "leumiur", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Heartbeat", - "rsa.network.alias_host": [ - "ueipsa748.localdomain" - ], - "rsa.time.day": "18", - "rsa.time.month": "Jul", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "aparia" - }, - { - "event.action": "dolorem", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 2 01:43:25 oluptat548.www5.invalid edolorin: HMNOTIFY: dolorem (Sensor tem): Severity:very-high: failure", - "fileset.name": "log", - "host.name": "oluptat548.www5.invalid", - "input.type": "log", - "log.level": "very-high", - "log.offset": 2366, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "oluptat548.www5.invalid" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "dolorem", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "tem", - "rsa.misc.severity": "very-high", - "rsa.time.day": "2", - "rsa.time.month": "Aug", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 16 08:45:59 imadmi: isnis loremag6816.www5.lan: inrepreh@quovo, System > urExcep", - "file.name": "imadmi", - "fileset.name": "log", - "host.name": "loremag6816.www5.lan", - "input.type": "log", - "log.offset": 2475, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "loremag6816.www5.lan" - ], - "related.user": [ - "inrepreh" - ], - "rsa.db.index": "urExcep", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "System", - "rsa.network.alias_host": [ - "loremag6816.www5.lan" - ], - "rsa.time.day": "16", - "rsa.time.month": "Aug", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "inrepreh" - }, - { - "event.action": "occaec", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 30 15:48:33 tionemu5269.internal.localhost : HMNOTIFY: occaec (Sensor acommodi): Severity:medium: failure", - "fileset.name": "log", - "host.name": "tionemu5269.internal.localhost", - "input.type": "log", - "log.level": "medium", - "log.offset": 2560, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "tionemu5269.internal.localhost" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "occaec", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "acommodi", - "rsa.misc.severity": "medium", - "rsa.time.day": "30", - "rsa.time.month": "Aug", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Sep 13 22:51:07 isiutali: lumqu onulamco7734.www.local: uptat@unt, Analysis & Reporting , tass", - "file.name": "isiutali", - "fileset.name": "log", - "host.name": "onulamco7734.www.local", - "input.type": "log", - "log.offset": 2670, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "onulamco7734.www.local" - ], - "related.user": [ - "uptat" - ], - "rsa.db.index": "tass", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Analysis & Reporting", - "rsa.network.alias_host": [ - "onulamco7734.www.local" - ], - "rsa.time.day": "13", - "rsa.time.month": "Sep", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "uptat" - }, - { - "event.action": "block,AccessControlRuleName:tnul,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:ess,ConnectType:quiad,DE:ihilmole,DNSResponseType:saquaea,DstIP:10.80.151.37,DstPort:535,ICMPCode:modico,ICMPType:metco,InitiatorBytes:410,InitiatorPackets:porinc,NAPPolicy:riame,Policy:riat,ResponderBytes:181,ResponderPackets:rumSec,Sinkhole:orp,SrcIP:10.213.109.180,SrcPort:6536,TCPFlags:essequam,URLCategory:ueporro,URLReputation:84.488000,UserName:etcon,ClientVersion:1.4438,WebApplication:orum,OriginalClientIP: Bonoru,IngressInterface: lo5284,EgressInterface: enp0s73,IngressZone: emacc,EgressZone: emp,Prefilter Policy: lamcola,UserAgent: Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2016-9-28T05:53:42Z luptatem3834.lan edq %NGIPS-medium-tise:AccessControlRuleAction:block,AccessControlRuleName:tnul,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:ess,ConnectType:quiad,DE:ihilmole,DNSResponseType:saquaea,DstIP:10.80.151.37,DstPort:535,ICMPCode:modico,ICMPType:metco,InitiatorBytes:410,InitiatorPackets:porinc,NAPPolicy:riame,Policy:riat,ResponderBytes:181,ResponderPackets:rumSec,Sinkhole:orp,SrcIP:10.213.109.180,SrcPort:6536,TCPFlags:essequam,URLCategory:ueporro,URLReputation:84.488000,UserName:etcon,ClientVersion:1.4438,WebApplication:orum,OriginalClientIP: Bonoru,IngressInterface: lo5284,EgressInterface: enp0s73,IngressZone: emacc,EgressZone: emp,Prefilter Policy: lamcola,UserAgent: Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36,ReferencedHost: ipiscive,URL: https://www.example.org/etdolor/uat.gif?mmod=iti#nimadm,HTTPResponse: nculp,HTTPReferer: asp,IPReputationSICategory: eacom,DNS_TTL: mag,DNSRecordType: gelitse,DNSQuery: oremqu,GID: idex,SID: radip,Revision: upta,Message: tetura,Classification: rumet,User: uptasnul,Priority: antiumdo, ACPolicy: ecill, ConnectionDuration: 56.481000,Protocol: ipv6,VLAN_ID: 3302,IPSCount: 6436,InlineResult: allow, DNSSICategory: nostrud, URLSICategory: cteturad", - "fileset.name": "log", - "host.name": "luptatem3834.lan", - "input.type": "log", - "log.level": "medium", - "log.offset": 2765, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "luptatem3834.lan" - ], - "rsa.counters.dclass_c1_str": " The number of intrusion events", - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "tise", - "rsa.misc.action": [ - "block,AccessControlRuleName:tnul,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:ess,ConnectType:quiad,DE:ihilmole,DNSResponseType:saquaea,DstIP:10.80.151.37,DstPort:535,ICMPCode:modico,ICMPType:metco,InitiatorBytes:410,InitiatorPackets:porinc,NAPPolicy:riame,Policy:riat,ResponderBytes:181,ResponderPackets:rumSec,Sinkhole:orp,SrcIP:10.213.109.180,SrcPort:6536,TCPFlags:essequam,URLCategory:ueporro,URLReputation:84.488000,UserName:etcon,ClientVersion:1.4438,WebApplication:orum,OriginalClientIP: Bonoru,IngressInterface: lo5284,EgressInterface: enp0s73,IngressZone: emacc,EgressZone: emp,Prefilter Policy: lamcola,UserAgent: Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML" - ], - "rsa.misc.category": "cteturad", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "luptatem3834.lan" - ], - "rsa.time.day": "28", - "rsa.time.duration_time": 56.481, - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Oct 12 2016 12:56:16 exercita2068.api.invalid %FTD-veleumi-nsequatu:CLOCK: System clock set, source: nula, IP: 10.169.84.140, before: santi, after: ritati", - "fileset.name": "log", - "host.ip": "10.169.84.140", - "host.name": "exercita2068.api.invalid", - "input.type": "log", - "log.offset": 4085, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "exercita2068.api.invalid", - "nula" - ], - "related.ip": [ - "10.169.84.140" - ], - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "nsequatu", - "rsa.misc.change_attrib": "Time", - "rsa.misc.change_new": "ritati", - "rsa.misc.change_old": "santi", - "rsa.misc.event_source": "nula", - "rsa.network.alias_host": [ - "exercita2068.api.invalid" - ], - "rsa.time.day": "12", - "rsa.time.month": "Oct", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Oct 26 2016 19:58:50 orumS757.www5.corp: %FTD-eursint-orio:CLOCK: System clock set, source: gna, IP: 10.130.231.129, before: olu, after: iameaque", - "fileset.name": "log", - "host.ip": "10.130.231.129", - "host.name": "orumS757.www5.corp", - "input.type": "log", - "log.offset": 4240, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "gna", - "orumS757.www5.corp" - ], - "related.ip": [ - "10.130.231.129" - ], - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "orio", - "rsa.misc.change_attrib": "Time", - "rsa.misc.change_new": "iameaque", - "rsa.misc.change_old": "olu", - "rsa.misc.event_source": "gna", - "rsa.network.alias_host": [ - "orumS757.www5.corp" - ], - "rsa.time.day": "26", - "rsa.time.month": "Oct", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "allow,AccessControlRuleName:tes,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:isi,ConnectType:iaecon,DE:aevitaed,DNSResponseType:byCic,DstIP:10.62.8.123,DstPort:5725,ICMPCode:siarc,ICMPType:fdeFin,InitiatorBytes:4053,InitiatorPackets:tobeata,NAPPolicy:nesciun,Policy:amcolab,ResponderBytes:4306,ResponderPackets:isnisiut,Sinkhole:atatnon,SrcIP:10.143.37.32,SrcPort:209,TCPFlags:uisnos,URLCategory:olores,URLReputation:174.651000,UserName:epo,ClientVersion:1.745,WebApplication:borisnis,OriginalClientIP: onorumet,IngressInterface: enp0s6017,EgressInterface: enp0s2440,IngressZone: ipsumq,EgressZone: evit,Prefilter Policy: tno,UserAgent: Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10,ReferencedHost: psumq,URL: https://internal.example.com/atu/teturad.htm?msequ=nvol#enimadmi,HTTPResponse: tateveli,HTTPReferer: osa,IPReputationSICategory: mini,DNS_TTL: rors,DNSRecordType: ssusci,DNSQuery: ames,GID: inimve,SID: uio,Revision: mexercit,Message: byC,Classification: uae,User: oremip,Priority: its", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2016-11-10T03:01:24Z sedquian4212.www5.domain magnaa %NGIPS-medium-eca:AccessControlRuleAction:allow,AccessControlRuleName:tes,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:isi,ConnectType:iaecon,DE:aevitaed,DNSResponseType:byCic,DstIP:10.62.8.123,DstPort:5725,ICMPCode:siarc,ICMPType:fdeFin,InitiatorBytes:4053,InitiatorPackets:tobeata,NAPPolicy:nesciun,Policy:amcolab,ResponderBytes:4306,ResponderPackets:isnisiut,Sinkhole:atatnon,SrcIP:10.143.37.32,SrcPort:209,TCPFlags:uisnos,URLCategory:olores,URLReputation:174.651000,UserName:epo,ClientVersion:1.745,WebApplication:borisnis,OriginalClientIP: onorumet,IngressInterface: enp0s6017,EgressInterface: enp0s2440,IngressZone: ipsumq,EgressZone: evit,Prefilter Policy: tno,UserAgent: Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10,ReferencedHost: psumq,URL: https://internal.example.com/atu/teturad.htm?msequ=nvol#enimadmi,HTTPResponse: tateveli,HTTPReferer: osa,IPReputationSICategory: mini,DNS_TTL: rors,DNSRecordType: ssusci,DNSQuery: ames,GID: inimve,SID: uio,Revision: mexercit,Message: byC,Classification: uae,User: oremip,Priority: its, ACPolicy: uptasnul, ConnectionDuration: 115.011000,Protocol: rdp,VLAN_ID: 7541,IPSCount: 239,InlineResult: deny, DNSSICategory: nse, URLSICategory: miurere", - "fileset.name": "log", - "host.name": "sedquian4212.www5.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 4386, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "sedquian4212.www5.domain" - ], - "rsa.counters.dclass_c1_str": " The number of intrusion events", - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "eca", - "rsa.misc.action": [ - "allow,AccessControlRuleName:tes,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:isi,ConnectType:iaecon,DE:aevitaed,DNSResponseType:byCic,DstIP:10.62.8.123,DstPort:5725,ICMPCode:siarc,ICMPType:fdeFin,InitiatorBytes:4053,InitiatorPackets:tobeata,NAPPolicy:nesciun,Policy:amcolab,ResponderBytes:4306,ResponderPackets:isnisiut,Sinkhole:atatnon,SrcIP:10.143.37.32,SrcPort:209,TCPFlags:uisnos,URLCategory:olores,URLReputation:174.651000,UserName:epo,ClientVersion:1.745,WebApplication:borisnis,OriginalClientIP: onorumet,IngressInterface: enp0s6017,EgressInterface: enp0s2440,IngressZone: ipsumq,EgressZone: evit,Prefilter Policy: tno,UserAgent: Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10,ReferencedHost: psumq,URL: https://internal.example.com/atu/teturad.htm?msequ=nvol#enimadmi,HTTPResponse: tateveli,HTTPReferer: osa,IPReputationSICategory: mini,DNS_TTL: rors,DNSRecordType: ssusci,DNSQuery: ames,GID: inimve,SID: uio,Revision: mexercit,Message: byC,Classification: uae,User: oremip,Priority: its" - ], - "rsa.misc.category": "miurere", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "sedquian4212.www5.domain" - ], - "rsa.time.day": "10", - "rsa.time.duration_time": 115.011, - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Nov 24 10:03:59 ntor: oinBCSed3444.api.local: smodtem@roquisqu, Logout, Logout Success", - "event.outcome": "success", - "file.name": "ntor", - "fileset.name": "log", - "host.name": "oinBCSed3444.api.local", - "input.type": "log", - "log.offset": 5754, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "oinBCSed3444.api.local" - ], - "related.user": [ - "smodtem" - ], - "rsa.internal.messageid": "SystemSettings", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.network.alias_host": [ - "oinBCSed3444.api.local" - ], - "rsa.time.day": "24", - "rsa.time.month": "Nov", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "smodtem" - }, - { - "destination.ip": "10.9.200.197", - "event.code": "27813", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Dec 8 17:06:33 apari5002.api.test orum: [nsequat:27813:1.6724] auto [Impact: failure] From sci at periam Dec 8 17:06:33 2016 UTC [Classification: fugiatnu] [Priority: dolor ]: {icmp} 10.182.213.195:7119 (tur) -> 10.9.200.197", - "fileset.name": "log", - "host.name": "apari5002.api.test", - "input.type": "log", - "log.level": "dolor", - "log.offset": 5841, - "network.protocol": "icmp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.6724", - "related.hosts": [ - "apari5002.api.test" - ], - "related.ip": [ - "10.182.213.195", - "10.9.200.197" - ], - "rsa.crypto.sig_type": "fugiatnu", - "rsa.internal.messageid": "27813", - "rsa.misc.context": "auto", - "rsa.misc.event_log": "orum", - "rsa.misc.policy_name": "auto", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "sci", - "rsa.misc.severity": "dolor", - "rsa.misc.sig_id": 27813, - "rsa.misc.version": "1.6724", - "rsa.network.alias_host": [ - "apari5002.api.test" - ], - "rsa.threat.threat_desc": "dolor", - "rsa.time.day": "8", - "rsa.time.event_time_str": "Dec 8 17:06:33 2016 UTC", - "rsa.time.month": "Dec", - "service.type": "snort", - "source.geo.country_name": "tur", - "source.ip": "10.182.213.195", - "source.port": 7119, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 3813, - "destination.ip": "10.111.33.70", - "destination.port": 3758, - "event.action": "allow", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2016-12-23T00:09:07Z audant3412.www.local remeum %NGIPS-medium-animi:AccessControlRuleAction:allow, AccessControlRuleReason:failure, SrcIP:10.210.180.142, DstIP:10.111.33.70, SrcPort:3015, DstPort:3758, Protocol: ggp, IngressInterface: enp0s6049, IngressZone:amcolabo, ACPolicy:orsitvol, AccessControlRuleName:eriam, Prefilter Policy:anonn, User:utpers, Client:num, ApplicationProtocol:tcp, InitiatorPackets:iaturE, ResponderPackets:epor, InitiatorBytes:3465, ResponderBytes:3813, NAPPolicy:amnih, DNSQuery:tper4341.lan, DNSRecordType: a host address, DNSSICategory:nulamc", - "fileset.name": "log", - "host.name": "tper4341.lan", - "input.type": "log", - "log.level": "medium", - "log.offset": 6066, - "network.application": "num", - "network.protocol": "tcp", - "observer.egress.interface.name": "enp0s6049", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "tper4341.lan" - ], - "related.ip": [ - "10.111.33.70", - "10.210.180.142" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "animi", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "nulamc", - "rsa.misc.policy_name": "amnih", - "rsa.misc.result": "failure", - "rsa.misc.rule_name": "eriam", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "tper4341.lan" - ], - "rsa.network.dinterface": "enp0s6049", - "rsa.network.zone_dst": "amcolabo", - "rsa.time.day": "23", - "rule.name": "eriam", - "service.type": "snort", - "source.bytes": 3465, - "source.ip": "10.210.180.142", - "source.port": 3015, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "lapari", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jan 6 07:11:41 antiu3533.internal.domain iatquovo: HMNOTIFY: lapari (Sensor Mal): Severity:medium: success", - "fileset.name": "log", - "host.name": "antiu3533.internal.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 6639, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "antiu3533.internal.domain" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "lapari", - "rsa.misc.result": "success", - "rsa.misc.sensor": "Mal", - "rsa.misc.severity": "medium", - "rsa.time.day": "6", - "rsa.time.month": "Jan", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.222.183.123", - "event.code": "MALWARE", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jan 20 14:14:16 cidu921.internal.lan quamq: Sha256:usan Disposition: Malware Threat name: tdolo IP Addresses: 10.222.183.123<<-10.165.33.19", - "fileset.name": "log", - "host.name": "cidu921.internal.lan", - "input.type": "log", - "log.offset": 6746, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "cidu921.internal.lan" - ], - "related.ip": [ - "10.165.33.19", - "10.222.183.123" - ], - "rsa.internal.messageid": "MALWARE", - "rsa.misc.checksum": "usan", - "rsa.misc.disposition": "Malware", - "rsa.network.alias_host": [ - "cidu921.internal.lan" - ], - "rsa.threat.threat_category": "tdolo", - "rsa.time.day": "20", - "rsa.time.month": "Jan", - "service.type": "snort", - "source.ip": "10.165.33.19", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.238.223.171", - "event.code": "16539", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Feb 3 21:16:50 unturmag6190.api.lan remeum: [etur:16539:1.890] \"Quisa\" [Impact: unknown] From dolo at modoco Feb 3 21:16:50 2017 UTC [Classification: Finibus] [Priority: uisautei]: {rdp} 10.52.190.18:4411 -> 10.238.223.171", - "fileset.name": "log", - "host.name": "unturmag6190.api.lan", - "input.type": "log", - "log.level": "uisautei", - "log.offset": 6886, - "network.protocol": "rdp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.890", - "related.hosts": [ - "unturmag6190.api.lan" - ], - "related.ip": [ - "10.238.223.171", - "10.52.190.18" - ], - "rsa.crypto.sig_type": "Finibus", - "rsa.internal.messageid": "16539", - "rsa.misc.context": "Quisa", - "rsa.misc.event_log": "remeum", - "rsa.misc.policy_name": "Quisa", - "rsa.misc.result": "unknown", - "rsa.misc.sensor": "dolo", - "rsa.misc.severity": "uisautei", - "rsa.misc.sig_id": 16539, - "rsa.misc.version": "1.890", - "rsa.network.alias_host": [ - "unturmag6190.api.lan" - ], - "rsa.threat.threat_desc": "uisautei", - "rsa.time.day": "3", - "rsa.time.event_time_str": "Feb 3 21:16:50 2017 UTC", - "rsa.time.month": "Feb", - "service.type": "snort", - "source.ip": "10.52.190.18", - "source.port": 4411, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.160.178.109", - "destination.port": 1934, - "event.code": "26992", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Feb 18 04:19:24 conseq6079.www.corp tiu: [wri:26992:1.3902] asper [Impact: unknown] From orem/inibus at secte Feb 18 04:19:24 2017 UTC [Classification: ctobeat] [Priority: onsec ]: {udp} 10.68.233.163 -> 10.160.178.109:1934", - "fileset.name": "log", - "host.name": "conseq6079.www.corp", - "input.type": "log", - "log.level": "onsec", - "log.offset": 7109, - "network.protocol": "udp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.3902", - "related.hosts": [ - "conseq6079.www.corp" - ], - "related.ip": [ - "10.160.178.109", - "10.68.233.163" - ], - "rsa.crypto.sig_type": "ctobeat", - "rsa.internal.messageid": "26992", - "rsa.misc.context": "asper", - "rsa.misc.event_log": "tiu", - "rsa.misc.group_object": "orem", - "rsa.misc.policy_name": "asper", - "rsa.misc.result": "unknown", - "rsa.misc.sensor": "inibus", - "rsa.misc.severity": "onsec", - "rsa.misc.sig_id": 26992, - "rsa.misc.version": "1.3902", - "rsa.network.alias_host": [ - "conseq6079.www.corp" - ], - "rsa.threat.threat_desc": "onsec", - "rsa.time.day": "18", - "rsa.time.event_time_str": "Feb 18 04:19:24 2017 UTC", - "rsa.time.month": "Feb", - "service.type": "snort", - "source.ip": "10.68.233.163", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 4 2017 11:21:59 tvol3402.www.local %FTD-ollita-qua:CLOCK: System clock set, source: ionula, IP: 10.162.109.83, before: nderi, after: tem", - "fileset.name": "log", - "host.ip": "10.162.109.83", - "host.name": "tvol3402.www.local", - "input.type": "log", - "log.offset": 7333, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ionula", - "tvol3402.www.local" - ], - "related.ip": [ - "10.162.109.83" - ], - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "qua", - "rsa.misc.change_attrib": "Time", - "rsa.misc.change_new": "tem", - "rsa.misc.change_old": "nderi", - "rsa.misc.event_source": "ionula", - "rsa.network.alias_host": [ - "tvol3402.www.local" - ], - "rsa.time.day": "4", - "rsa.time.month": "Mar", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 18 2017 18:24:33 xcep3783.internal.localhost %FTD-ercitati-atem:User 'serro' executed the 'lumquid' command.", - "fileset.name": "log", - "host.name": "xcep3783.internal.localhost", - "input.type": "log", - "log.offset": 7474, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "xcep3783.internal.localhost" - ], - "related.user": [ - "serro" - ], - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "atem", - "rsa.network.alias_host": [ - "xcep3783.internal.localhost" - ], - "rsa.time.day": "18", - "rsa.time.month": "Mar", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "serro" - }, - { - "event.action": "riaturEx", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 2 01:27:07 ciatisun7378.www5.invalid didun: HMNOTIFY: riaturEx (Sensor nde): Severity:low: unknown", - "fileset.name": "log", - "host.name": "ciatisun7378.www5.invalid", - "input.type": "log", - "log.level": "low", - "log.offset": 7587, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ciatisun7378.www5.invalid" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "riaturEx", - "rsa.misc.result": "unknown", - "rsa.misc.sensor": "nde", - "rsa.misc.severity": "low", - "rsa.time.day": "2", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.213.100.153", - "event.code": "11634", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 16 08:29:41 iqu4858.mail.invalid audant: [obeata:11634:1.6627] \"minimve\" [Impact: unknown] From \"toditau/uiad\" at nvolupta Apr 16 08:29:41 2017 UTC [Classification: exercit] [Priority: dexer ]:alert {igmp} 10.116.175.84 -> 10.213.100.153", - "fileset.name": "log", - "host.name": "iqu4858.mail.invalid", - "input.type": "log", - "log.level": "dexer", - "log.offset": 7690, - "network.protocol": "igmp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.6627", - "related.hosts": [ - "iqu4858.mail.invalid" - ], - "related.ip": [ - "10.116.175.84", - "10.213.100.153" - ], - "rsa.crypto.sig_type": "exercit", - "rsa.internal.messageid": "11634", - "rsa.misc.context": "minimve", - "rsa.misc.event_log": "audant", - "rsa.misc.group_object": "toditau", - "rsa.misc.policy_name": "minimve", - "rsa.misc.result": "unknown", - "rsa.misc.sensor": "uiad", - "rsa.misc.severity": "dexer", - "rsa.misc.sig_id": 11634, - "rsa.misc.version": "1.6627", - "rsa.network.alias_host": [ - "iqu4858.mail.invalid" - ], - "rsa.threat.threat_desc": "dexer", - "rsa.time.day": "16", - "rsa.time.event_time_str": "Apr 16 08:29:41 2017 UTC", - "rsa.time.month": "Apr", - "service.type": "snort", - "source.ip": "10.116.175.84", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 30 15:32:16 lumqui: ectet ionu3320.api.localhost: estq@quasiarc, Command Line,aliquaU", - "file.name": "lumqui", - "fileset.name": "log", - "host.name": "ionu3320.api.localhost", - "input.type": "log", - "log.offset": 7932, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ionu3320.api.localhost" - ], - "related.user": [ - "estq" - ], - "rsa.db.index": "aliquaU", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "ionu3320.api.localhost" - ], - "rsa.time.day": "30", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "estq" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "May 14 22:34:50 tvolu: imve ollitan5079.www.lan: deriti@edictasu, Health > eturadi", - "file.name": "tvolu", - "fileset.name": "log", - "host.name": "ollitan5079.www.lan", - "input.type": "log", - "log.offset": 8022, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ollitan5079.www.lan" - ], - "related.user": [ - "deriti" - ], - "rsa.db.index": "eturadi", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Health", - "rsa.network.alias_host": [ - "ollitan5079.www.lan" - ], - "rsa.time.day": "14", - "rsa.time.month": "May", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "deriti" - }, - { - "event.action": "block,AccessControlRuleName:iatn,AccessControlRuleReason:unknown,ApplicationProtocol:igmp,Client:eli,ConnectType:rissusci,DE:ectetur,DNSResponseType:dictasun,DstIP:10.26.95.225,DstPort:4196,FileCount:3674,ICMPCode:oluptate,ICMPType:ntut,InitiatorBytes:5153,InitiatorPackets:scipit,NAPPolicy:litess,Policy:tore,ResponderBytes:5269,ResponderPackets:quunturm,Sinkhole:quovo,SrcIP:10.143.219.250,SrcPort:1444,TCPFlags:conse,URLCategory:aturve,URLReputation:8.942000,UserName:fdeFin,ClientVersion:1.2871,WebApplication:psu,OriginalClientIP: strud,IngressInterface: eth6386,EgressInterface: lo7421,IngressZone: ratv,EgressZone: veni,Prefilter Policy: metM,UserAgent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML", - "event.code": "connection_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "May 29 05:37:24 nihilmol1849.api.local eporroq: Protocol: tcp, AccessControlRuleAction:block,AccessControlRuleName:iatn,AccessControlRuleReason:unknown,ApplicationProtocol:igmp,Client:eli,ConnectType:rissusci,DE:ectetur,DNSResponseType:dictasun,DstIP:10.26.95.225,DstPort:4196,FileCount:3674,ICMPCode:oluptate,ICMPType:ntut,InitiatorBytes:5153,InitiatorPackets:scipit,NAPPolicy:litess,Policy:tore,ResponderBytes:5269,ResponderPackets:quunturm,Sinkhole:quovo,SrcIP:10.143.219.250,SrcPort:1444,TCPFlags:conse,URLCategory:aturve,URLReputation:8.942000,UserName:fdeFin,ClientVersion:1.2871,WebApplication:psu,OriginalClientIP: strud,IngressInterface: eth6386,EgressInterface: lo7421,IngressZone: ratv,EgressZone: veni,Prefilter Policy: metM,UserAgent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0],ReferencedHost: tate,URL: https://internal.example.com/uun/amrem.gif?umq=ita#ipsaquae,HTTPResponse: olu,HTTPReferer: exerci,IPReputationSICategory: isnostru,DNS_TTL: iad,DNSRecordType: ngelits,DNSQuery: volupt,GID: billoi,SID: 38352,Revision: utaliqui,Message: uov,Classification: pariat,User: icaboNe,Priority: boreetd, ACPolicy: uir", - "fileset.name": "log", - "host.name": "nihilmol1849.api.local", - "input.type": "log", - "log.offset": 8105, - "network.protocol": "tcp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "nihilmol1849.api.local" - ], - "rsa.counters.dclass_c1_str": "Number of Files", - "rsa.internal.messageid": "connection_events", - "rsa.misc.action": [ - "block,AccessControlRuleName:iatn,AccessControlRuleReason:unknown,ApplicationProtocol:igmp,Client:eli,ConnectType:rissusci,DE:ectetur,DNSResponseType:dictasun,DstIP:10.26.95.225,DstPort:4196,FileCount:3674,ICMPCode:oluptate,ICMPType:ntut,InitiatorBytes:5153,InitiatorPackets:scipit,NAPPolicy:litess,Policy:tore,ResponderBytes:5269,ResponderPackets:quunturm,Sinkhole:quovo,SrcIP:10.143.219.250,SrcPort:1444,TCPFlags:conse,URLCategory:aturve,URLReputation:8.942000,UserName:fdeFin,ClientVersion:1.2871,WebApplication:psu,OriginalClientIP: strud,IngressInterface: eth6386,EgressInterface: lo7421,IngressZone: ratv,EgressZone: veni,Prefilter Policy: metM,UserAgent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML" - ], - "rsa.network.alias_host": [ - "nihilmol1849.api.local" - ], - "rsa.time.day": "29", - "rsa.time.month": "May", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jun 12 12:39:58 ipsu: [oremip] ota4562.local: epteurs@itse, Task Queue, rever", - "file.name": "ipsu", - "fileset.name": "log", - "host.name": "ota4562.local", - "input.type": "log", - "log.offset": 9464, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ota4562.local" - ], - "related.user": [ - "epteurs" - ], - "rsa.db.index": "rever", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Task Queue", - "rsa.network.alias_host": [ - "ota4562.local" - ], - "rsa.time.day": "12", - "rsa.time.month": "Jun", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "epteurs" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jun 26 19:42:33 eiu: [maliquam] gnama5033.www5.home: ction@emveleum, Object > siuta", - "file.name": "eiu", - "fileset.name": "log", - "host.name": "gnama5033.www5.home", - "input.type": "log", - "log.offset": 9542, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "gnama5033.www5.home" - ], - "related.user": [ - "ction" - ], - "rsa.db.index": "siuta", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "gnama5033.www5.home" - ], - "rsa.time.day": "26", - "rsa.time.month": "Jun", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "ction" - }, - { - "event.action": "doe", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jul 11 02:45:07 sum6106.www.home ulamc: HMNOTIFY: doe (Sensor eiusm): Severity:very-high: failure", - "fileset.name": "log", - "host.name": "sum6106.www.home", - "input.type": "log", - "log.level": "very-high", - "log.offset": 9626, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "sum6106.www.home" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "doe", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "eiusm", - "rsa.misc.severity": "very-high", - "rsa.time.day": "11", - "rsa.time.month": "Jul", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jul 25 09:47:41 ugiatn: squa2763.www.lan: trude@snulap, Task Queue, onsequat", - "file.name": "ugiatn", - "fileset.name": "log", - "host.name": "squa2763.www.lan", - "input.type": "log", - "log.offset": 9724, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "squa2763.www.lan" - ], - "related.user": [ - "trude" - ], - "rsa.db.index": "onsequat", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Task Queue", - "rsa.network.alias_host": [ - "squa2763.www.lan" - ], - "rsa.time.day": "25", - "rsa.time.month": "Jul", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "trude" - }, - { - "destination.bytes": 4902, - "destination.ip": "10.251.159.118", - "destination.port": 2795, - "event.action": "cancel", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2017-8-8T16:50:15Z aturvel1847.mail.localdomain sedquia %NGIPS-high-ostrudex:AccessControlRuleAction:cancel, AccessControlRuleReason:unknown, SrcIP:10.240.144.78, DstIP:10.251.159.118, SrcPort:2998, DstPort:2795, Protocol: ipv6, IngressInterface: lo6367, IngressZone:ptatems, ACPolicy:tenima, AccessControlRuleName:emagnam, Prefilter Policy:iaco, User:urQuisa, Client:ipi, ApplicationProtocol:ipv6-icmp, InitiatorPackets:amali, ResponderPackets:onula, InitiatorBytes:1580, ResponderBytes:4902, NAPPolicy:por, DNSQuery:stiae3403.internal.localhost, DNSRecordType: a host address, DNSSICategory:Ute", - "fileset.name": "log", - "host.name": "stiae3403.internal.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 9801, - "network.application": "ipi", - "network.protocol": "ipv6-icmp", - "observer.egress.interface.name": "lo6367", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "stiae3403.internal.localhost" - ], - "related.ip": [ - "10.240.144.78", - "10.251.159.118" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "ostrudex", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "Ute", - "rsa.misc.policy_name": "por", - "rsa.misc.result": "unknown", - "rsa.misc.rule_name": "emagnam", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "stiae3403.internal.localhost" - ], - "rsa.network.dinterface": "lo6367", - "rsa.network.zone_dst": "ptatems", - "rsa.time.day": "8", - "rule.name": "emagnam", - "service.type": "snort", - "source.bytes": 1580, - "source.ip": "10.240.144.78", - "source.port": 2998, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "odi", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 22 23:52:50 setq5996.corp : HMNOTIFY: odi (Sensor tper): Severity:medium: success", - "fileset.name": "log", - "host.name": "setq5996.corp", - "input.type": "log", - "log.level": "medium", - "log.offset": 10398, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "setq5996.corp" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "odi", - "rsa.misc.result": "success", - "rsa.misc.sensor": "tper", - "rsa.misc.severity": "medium", - "rsa.time.day": "22", - "rsa.time.month": "Aug", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "sequatD", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Sep 6 06:55:24 quiano3025.api.localhost oluptat: HMNOTIFY: sequatD (Sensor emap): Severity:very-high: unknown", - "fileset.name": "log", - "host.name": "quiano3025.api.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 10484, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "quiano3025.api.localhost" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "sequatD", - "rsa.misc.result": "unknown", - "rsa.misc.sensor": "emap", - "rsa.misc.severity": "very-high", - "rsa.time.day": "6", - "rsa.time.month": "Sep", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "umet", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Sep 20 13:57:58 qui7797.www.host : HMNOTIFY: umet (Sensor psaquaea): Severity:low: failure", - "fileset.name": "log", - "host.name": "qui7797.www.host", - "input.type": "log", - "log.level": "low", - "log.offset": 10594, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "qui7797.www.host" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "umet", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "psaquaea", - "rsa.misc.severity": "low", - "rsa.time.day": "20", - "rsa.time.month": "Sep", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 5413, - "destination.ip": "10.201.132.114", - "destination.port": 639, - "event.action": "cancel", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2017-10-4T21:00:32Z Utenim3707.www5.host iamquisn %NGIPS-low-lor:AccessControlRuleAction:cancel, AccessControlRuleReason:success, SrcIP:10.140.209.249, DstIP:10.201.132.114, SrcPort:1801, DstPort:639, Protocol: ggp, IngressInterface: lo3580, IngressZone:eacommo, ACPolicy:litani, AccessControlRuleName:temse, Prefilter Policy:samvo, User:itsedd, Client:icta, ApplicationProtocol:igmp, InitiatorPackets:labori, ResponderPackets:ditau, InitiatorBytes:470, ResponderBytes:5413, NAPPolicy:olest, DNSQuery:urau1660.www.lan, DNSRecordType: a host address, DNSSICategory:Neq", - "fileset.name": "log", - "host.name": "urau1660.www.lan", - "input.type": "log", - "log.level": "low", - "log.offset": 10685, - "network.application": "icta", - "network.protocol": "igmp", - "observer.egress.interface.name": "lo3580", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "urau1660.www.lan" - ], - "related.ip": [ - "10.140.209.249", - "10.201.132.114" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "lor", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "Neq", - "rsa.misc.policy_name": "olest", - "rsa.misc.result": "success", - "rsa.misc.rule_name": "temse", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "urau1660.www.lan" - ], - "rsa.network.dinterface": "lo3580", - "rsa.network.zone_dst": "eacommo", - "rsa.time.day": "4", - "rule.name": "temse", - "service.type": "snort", - "source.bytes": 470, - "source.ip": "10.140.209.249", - "source.port": 1801, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Oct 19 04:03:07 Nequepor: [aUten] edutpers3482.www5.corp: mnisis@onsequa, Access Control Policy > sunt", - "file.name": "Nequepor", - "fileset.name": "log", - "host.name": "edutpers3482.www5.corp", - "input.type": "log", - "log.offset": 11253, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "edutpers3482.www5.corp" - ], - "related.user": [ - "mnisis" - ], - "rsa.db.index": "sunt", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "edutpers3482.www5.corp" - ], - "rsa.time.day": "19", - "rsa.time.month": "Oct", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "mnisis" - }, - { - "destination.geo.country_name": "ariatu", - "destination.ip": "10.36.122.169", - "destination.port": 6751, - "event.code": "13228", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Nov 2 11:05:41 nofde7732.internal.test emp: [emoeni:13228:1.2633] taliqui [Impact: failure] From labo at ssecill Nov 2 11:05:41 2017 UTC [Classification: umquam] [Priority: onev ]: atu {ipv6} 10.198.44.231 -> 10.36.122.169:6751 (ariatu)", - "fileset.name": "log", - "host.name": "nofde7732.internal.test", - "input.type": "log", - "log.level": "onev", - "log.offset": 11356, - "network.protocol": "ipv6", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.2633", - "related.hosts": [ - "nofde7732.internal.test" - ], - "related.ip": [ - "10.198.44.231", - "10.36.122.169" - ], - "rsa.crypto.sig_type": "umquam", - "rsa.internal.messageid": "13228", - "rsa.misc.context": "taliqui", - "rsa.misc.event_log": "emp", - "rsa.misc.policy_name": "taliqui", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "labo", - "rsa.misc.severity": "onev", - "rsa.misc.sig_id": 13228, - "rsa.misc.version": "1.2633", - "rsa.network.alias_host": [ - "nofde7732.internal.test" - ], - "rsa.threat.threat_desc": "onev", - "rsa.time.day": "2", - "rsa.time.event_time_str": "Nov 2 11:05:41 2017 UTC", - "rsa.time.month": "Nov", - "service.type": "snort", - "source.ip": "10.198.44.231", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 6430, - "destination.ip": "10.144.162.122", - "destination.port": 2080, - "event.action": "block", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2017-11-16T18:08:15Z byCicero7475.www.localhost abillo %NGIPS-medium-eav:AccessControlRuleAction:block, AccessControlRuleReason:failure, SrcIP:10.77.86.215, DstIP:10.144.162.122, SrcPort:5913, DstPort:2080, Protocol: udp, IngressInterface: lo5079, IngressZone:sequine, ACPolicy:minimv, AccessControlRuleName:ffici, Prefilter Policy:rsintoc, User:boreetd, Client:rehende, ApplicationProtocol:icmp, InitiatorPackets:erspic, ResponderPackets:orincidi, InitiatorBytes:3273, ResponderBytes:6430, NAPPolicy:quipe, DNSQuery:evita850.localdomain, DNSRecordType: a host address, DNSSICategory:tiu", - "fileset.name": "log", - "host.name": "evita850.localdomain", - "input.type": "log", - "log.level": "medium", - "log.offset": 11593, - "network.application": "rehende", - "network.protocol": "icmp", - "observer.egress.interface.name": "lo5079", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "evita850.localdomain" - ], - "related.ip": [ - "10.144.162.122", - "10.77.86.215" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "eav", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "tiu", - "rsa.misc.policy_name": "quipe", - "rsa.misc.result": "failure", - "rsa.misc.rule_name": "ffici", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "evita850.localdomain" - ], - "rsa.network.dinterface": "lo5079", - "rsa.network.zone_dst": "sequine", - "rsa.time.day": "16", - "rule.name": "ffici", - "service.type": "snort", - "source.bytes": 3273, - "source.ip": "10.77.86.215", - "source.port": 5913, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Dec 1 01:10:49 acons: [enbyCic] aturau3002.api.corp: sci@psamvolu, itsedqui", - "file.name": "acons", - "fileset.name": "log", - "host.name": "aturau3002.api.corp", - "input.type": "log", - "log.offset": 12181, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "aturau3002.api.corp" - ], - "related.user": [ - "sci" - ], - "rsa.db.index": "itsedqui", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "aturau3002.api.corp" - ], - "rsa.time.day": "1", - "rsa.time.month": "Dec", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "sci" - }, - { - "event.action": "cancel,AccessControlRuleName:ostr,AccessControlRuleReason:unknown,ApplicationProtocol:tcp,Client:itan,ConnectType:olorin,DE:oluptat,DNSResponseType:olors,DstIP:10.85.61.13,DstPort:6593,ICMPCode:quian,ICMPType:xerci,InitiatorBytes:5178,InitiatorPackets:upt,NAPPolicy:uovolu,Policy:itten,ResponderBytes:4805,ResponderPackets:abo,Sinkhole:orisnis,SrcIP:10.212.37.178,SrcPort:76,TCPFlags:aconseq,URLCategory:isnos,URLReputation:132.397000,UserName:lit,ClientVersion:1.4,WebApplication:odic,OriginalClientIP: ono,IngressInterface: eth1462,EgressInterface: enp0s3976,IngressZone: ine,EgressZone: hend,Prefilter Policy: rcit,UserAgent: Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2017-12-15T08:13:24Z ntiumt238.internal.corp isc %NGIPS-high-odite:AccessControlRuleAction:cancel,AccessControlRuleName:ostr,AccessControlRuleReason:unknown,ApplicationProtocol:tcp,Client:itan,ConnectType:olorin,DE:oluptat,DNSResponseType:olors,DstIP:10.85.61.13,DstPort:6593,ICMPCode:quian,ICMPType:xerci,InitiatorBytes:5178,InitiatorPackets:upt,NAPPolicy:uovolu,Policy:itten,ResponderBytes:4805,ResponderPackets:abo,Sinkhole:orisnis,SrcIP:10.212.37.178,SrcPort:76,TCPFlags:aconseq,URLCategory:isnos,URLReputation:132.397000,UserName:lit,ClientVersion:1.4,WebApplication:odic,OriginalClientIP: ono,IngressInterface: eth1462,EgressInterface: enp0s3976,IngressZone: ine,EgressZone: hend,Prefilter Policy: rcit,UserAgent: Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30,ReferencedHost: nsecte,URL: https://api.example.org/tat/pitlabor.gif?rrorsi=loremqu#busBono,HTTPResponse: mnisiut,HTTPReferer: eabil,IPReputationSICategory: olu,DNS_TTL: uaUte,DNSRecordType: empor,DNSQuery: ate,GID: eca,SID: inre,Revision: aliqu,Message: orem,Classification: dquian,User: isaute,Priority: rumetMa, ACPolicy: utfugit, ConnectionDuration: 95.196000,Protocol: ggp,VLAN_ID: 5189,IPSCount: 1350,InlineResult: allow, DNSSICategory: ntocca, URLSICategory: emquelau", - "fileset.name": "log", - "host.name": "ntiumt238.internal.corp", - "input.type": "log", - "log.level": "high", - "log.offset": 12257, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ntiumt238.internal.corp" - ], - "rsa.counters.dclass_c1_str": " The number of intrusion events", - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "odite", - "rsa.misc.action": [ - "cancel,AccessControlRuleName:ostr,AccessControlRuleReason:unknown,ApplicationProtocol:tcp,Client:itan,ConnectType:olorin,DE:oluptat,DNSResponseType:olors,DstIP:10.85.61.13,DstPort:6593,ICMPCode:quian,ICMPType:xerci,InitiatorBytes:5178,InitiatorPackets:upt,NAPPolicy:uovolu,Policy:itten,ResponderBytes:4805,ResponderPackets:abo,Sinkhole:orisnis,SrcIP:10.212.37.178,SrcPort:76,TCPFlags:aconseq,URLCategory:isnos,URLReputation:132.397000,UserName:lit,ClientVersion:1.4,WebApplication:odic,OriginalClientIP: ono,IngressInterface: eth1462,EgressInterface: enp0s3976,IngressZone: ine,EgressZone: hend,Prefilter Policy: rcit,UserAgent: Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML" - ], - "rsa.misc.category": "emquelau", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ntiumt238.internal.corp" - ], - "rsa.time.day": "15", - "rsa.time.duration_time": 95.196, - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "pitlab", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Dec 29 15:15:58 atu2951.test : HMNOTIFY: pitlab (Sensor riosamn): Severity:medium: success", - "fileset.name": "log", - "host.name": "atu2951.test", - "input.type": "log", - "log.level": "medium", - "log.offset": 13585, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "atu2951.test" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "pitlab", - "rsa.misc.result": "success", - "rsa.misc.sensor": "riosamn", - "rsa.misc.severity": "medium", - "rsa.time.day": "29", - "rsa.time.month": "Dec", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jan 12 22:18:32 mini: tutl uipe5295.api.localhost: mwrit@dminimve, Access Control Policy > madminim", - "file.name": "mini", - "fileset.name": "log", - "host.name": "uipe5295.api.localhost", - "input.type": "log", - "log.offset": 13676, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "uipe5295.api.localhost" - ], - "related.user": [ - "mwrit" - ], - "rsa.db.index": "madminim", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "uipe5295.api.localhost" - ], - "rsa.time.day": "12", - "rsa.time.month": "Jan", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "mwrit" - }, - { - "event.action": "deny,AccessControlRuleName:uisa,AccessControlRuleReason:unknown,ApplicationProtocol:ggp,Client:siutal,ConnectType:umetMalo,DE:onevolu,DNSResponseType:itautfug,DstIP:10.236.221.212,DstPort:5294,ICMPCode:nsequatD,ICMPType:amcorp,InitiatorBytes:1539,InitiatorPackets:idolor,NAPPolicy:umdo,Policy:sequatu,ResponderBytes:7142,ResponderPackets:ecillu,Sinkhole:ipsaqu,SrcIP:10.31.46.127,SrcPort:7526,TCPFlags:magn,URLCategory:amcola,URLReputation:173.477000,UserName:sno,ClientVersion:1.6406,WebApplication:ntiu,OriginalClientIP: tametco,IngressInterface: lo6910,EgressInterface: eth6946,IngressZone: non,EgressZone: pta,Prefilter Policy: asnul,UserAgent: Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2018-1-27T05:21:06Z tatiset5041.www5.local tevelit %NGIPS-low-Utenim:AccessControlRuleAction:deny,AccessControlRuleName:uisa,AccessControlRuleReason:unknown,ApplicationProtocol:ggp,Client:siutal,ConnectType:umetMalo,DE:onevolu,DNSResponseType:itautfug,DstIP:10.236.221.212,DstPort:5294,ICMPCode:nsequatD,ICMPType:amcorp,InitiatorBytes:1539,InitiatorPackets:idolor,NAPPolicy:umdo,Policy:sequatu,ResponderBytes:7142,ResponderPackets:ecillu,Sinkhole:ipsaqu,SrcIP:10.31.46.127,SrcPort:7526,TCPFlags:magn,URLCategory:amcola,URLReputation:173.477000,UserName:sno,ClientVersion:1.6406,WebApplication:ntiu,OriginalClientIP: tametco,IngressInterface: lo6910,EgressInterface: eth6946,IngressZone: non,EgressZone: pta,Prefilter Policy: asnul,UserAgent: Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91,ReferencedHost: todit,URL: https://www.example.com/fug/ulpaq.gif?piscivel=ueporr#udex,HTTPResponse: ipexeac,HTTPReferer: uin,IPReputationSICategory: isci,DNS_TTL: archi,DNSRecordType: rsitame,DNSQuery: qui,GID: umdolo,SID: tate,Revision: sintocca,Message: ugiat,Classification: asuntex,User: uovolup,Priority: expl, ACPolicy: animi, ConnectionDuration: 63.677000,Protocol: ipv6,VLAN_ID: 3389,IPSCount: 1457,InlineResult: cancel, DNSSICategory: taliqui, URLSICategory: doloremi", - "fileset.name": "log", - "host.name": "tatiset5041.www5.local", - "input.type": "log", - "log.level": "low", - "log.offset": 13776, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "tatiset5041.www5.local" - ], - "rsa.counters.dclass_c1_str": " The number of intrusion events", - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "Utenim", - "rsa.misc.action": [ - "deny,AccessControlRuleName:uisa,AccessControlRuleReason:unknown,ApplicationProtocol:ggp,Client:siutal,ConnectType:umetMalo,DE:onevolu,DNSResponseType:itautfug,DstIP:10.236.221.212,DstPort:5294,ICMPCode:nsequatD,ICMPType:amcorp,InitiatorBytes:1539,InitiatorPackets:idolor,NAPPolicy:umdo,Policy:sequatu,ResponderBytes:7142,ResponderPackets:ecillu,Sinkhole:ipsaqu,SrcIP:10.31.46.127,SrcPort:7526,TCPFlags:magn,URLCategory:amcola,URLReputation:173.477000,UserName:sno,ClientVersion:1.6406,WebApplication:ntiu,OriginalClientIP: tametco,IngressInterface: lo6910,EgressInterface: eth6946,IngressZone: non,EgressZone: pta,Prefilter Policy: asnul,UserAgent: Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML" - ], - "rsa.misc.category": "doloremi", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "tatiset5041.www5.local" - ], - "rsa.time.day": "27", - "rsa.time.duration_time": 63.677, - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Feb 10 12:23:41 atevel: [oloremeu] esse2198.mail.example: uaturvel@quisqua, System > sedquian", - "file.name": "atevel", - "fileset.name": "log", - "host.name": "esse2198.mail.example", - "input.type": "log", - "log.offset": 15178, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "esse2198.mail.example" - ], - "related.user": [ - "uaturvel" - ], - "rsa.db.index": "sedquian", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "System", - "rsa.network.alias_host": [ - "esse2198.mail.example" - ], - "rsa.time.day": "10", - "rsa.time.month": "Feb", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "uaturvel" - }, - { - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Feb 24 2018 19:26:15 pitlab5165.localdomain %FTD-uptate-tevelite:CLOCK: System clock set, source: cto, IP: 10.17.172.91, before: agn, after: dip", - "fileset.name": "log", - "host.ip": "10.17.172.91", - "host.name": "pitlab5165.localdomain", - "input.type": "log", - "log.offset": 15272, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "cto", - "pitlab5165.localdomain" - ], - "related.ip": [ - "10.17.172.91" - ], - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "tevelite", - "rsa.misc.change_attrib": "Time", - "rsa.misc.change_new": "dip", - "rsa.misc.change_old": "agn", - "rsa.misc.event_source": "cto", - "rsa.network.alias_host": [ - "pitlab5165.localdomain" - ], - "rsa.time.day": "24", - "rsa.time.month": "Feb", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 11 02:28:49 acomm: [edquia] uinesci6041.api.local: pers@lpaquiof, Analysis isisten", - "file.name": "acomm", - "fileset.name": "log", - "host.name": "uinesci6041.api.local", - "input.type": "log", - "log.offset": 15417, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "uinesci6041.api.local" - ], - "related.user": [ - "pers" - ], - "rsa.db.index": "isisten", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Session Expiration", - "rsa.network.alias_host": [ - "uinesci6041.api.local" - ], - "rsa.time.day": "11", - "rsa.time.month": "Mar", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "pers" - }, - { - "destination.geo.country_name": "icons", - "destination.ip": "10.60.137.215", - "destination.port": 3266, - "event.code": "5155", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 25 09:31:24 uovol2459.www5.invalid volup: [nimi:5155:1.2115] lillum [Impact: success] From suntin at consequa Mar 25 09:31:24 2018 UTC [Classification: tionu] [Priority: umqua ]:alert {tcp} 10.28.105.106 -> 10.60.137.215:3266 (icons)", - "fileset.name": "log", - "host.name": "uovol2459.www5.invalid", - "input.type": "log", - "log.level": "umqua", - "log.offset": 15504, - "network.protocol": "tcp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.2115", - "related.hosts": [ - "uovol2459.www5.invalid" - ], - "related.ip": [ - "10.28.105.106", - "10.60.137.215" - ], - "rsa.crypto.sig_type": "tionu", - "rsa.internal.messageid": "5155", - "rsa.misc.context": "lillum", - "rsa.misc.event_log": "volup", - "rsa.misc.policy_name": "lillum", - "rsa.misc.result": "success", - "rsa.misc.sensor": "suntin", - "rsa.misc.severity": "umqua", - "rsa.misc.sig_id": 5155, - "rsa.misc.version": "1.2115", - "rsa.network.alias_host": [ - "uovol2459.www5.invalid" - ], - "rsa.threat.threat_desc": "umqua", - "rsa.time.day": "25", - "rsa.time.event_time_str": "Mar 25 09:31:24 2018 UTC", - "rsa.time.month": "Mar", - "service.type": "snort", - "source.ip": "10.28.105.106", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "ssequa", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 8 16:33:58 ptate7215.www5.home mquiado: HMNOTIFY: ssequa (Sensor nisist): Severity:low: failure", - "fileset.name": "log", - "host.name": "ptate7215.www5.home", - "input.type": "log", - "log.level": "low", - "log.offset": 15742, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ptate7215.www5.home" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "ssequa", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "nisist", - "rsa.misc.severity": "low", - "rsa.time.day": "8", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "deny,AccessControlRuleName:toditaut,AccessControlRuleReason:success,ApplicationProtocol:ipv6-icmp,Client:didu,ConnectType:emporain,DE:ovo,DNSResponseType:aeabillo,DstIP:10.53.0.68,DstPort:7066,FileCount:4405,ICMPCode:rehen,ICMPType:sitasp,InitiatorBytes:933,InitiatorPackets:exeacom,NAPPolicy:teir,Policy:suntin,ResponderBytes:4053,ResponderPackets:upta,Sinkhole:iaeconse,SrcIP:10.235.102.51,SrcPort:1905,TCPFlags:uscip,URLCategory:ptasn,URLReputation:163.091000,UserName:san,ClientVersion:1.1124,WebApplication:amqui,OriginalClientIP: itatise,IngressInterface: lo6252,EgressInterface: enp0s6516,IngressZone: liqu,EgressZone: cons,Prefilter Policy: apar,UserAgent: Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML", - "event.code": "connection_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 22 23:36:32 metc7395.lan ataevit: Protocol: rdp, AccessControlRuleAction:deny,AccessControlRuleName:toditaut,AccessControlRuleReason:success,ApplicationProtocol:ipv6-icmp,Client:didu,ConnectType:emporain,DE:ovo,DNSResponseType:aeabillo,DstIP:10.53.0.68,DstPort:7066,FileCount:4405,ICMPCode:rehen,ICMPType:sitasp,InitiatorBytes:933,InitiatorPackets:exeacom,NAPPolicy:teir,Policy:suntin,ResponderBytes:4053,ResponderPackets:upta,Sinkhole:iaeconse,SrcIP:10.235.102.51,SrcPort:1905,TCPFlags:uscip,URLCategory:ptasn,URLReputation:163.091000,UserName:san,ClientVersion:1.1124,WebApplication:amqui,OriginalClientIP: itatise,IngressInterface: lo6252,EgressInterface: enp0s6516,IngressZone: liqu,EgressZone: cons,Prefilter Policy: apar,UserAgent: Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36,ReferencedHost: umtota,URL: https://internal.example.com/xplic/isn.html?ame=tenat#etur,HTTPResponse: uisnost,HTTPReferer: snul,IPReputationSICategory: quasia,DNS_TTL: ihilmol,DNSRecordType: seosqui,DNSQuery: tiset,GID: ciade,SID: 31978,Revision: equ,Message: rror,Classification: Exce,User: uae,Priority: tut, ACPolicy: umdol", - "fileset.name": "log", - "host.name": "metc7395.lan", - "input.type": "log", - "log.offset": 15842, - "network.protocol": "rdp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "metc7395.lan" - ], - "rsa.counters.dclass_c1_str": "Number of Files", - "rsa.internal.messageid": "connection_events", - "rsa.misc.action": [ - "deny,AccessControlRuleName:toditaut,AccessControlRuleReason:success,ApplicationProtocol:ipv6-icmp,Client:didu,ConnectType:emporain,DE:ovo,DNSResponseType:aeabillo,DstIP:10.53.0.68,DstPort:7066,FileCount:4405,ICMPCode:rehen,ICMPType:sitasp,InitiatorBytes:933,InitiatorPackets:exeacom,NAPPolicy:teir,Policy:suntin,ResponderBytes:4053,ResponderPackets:upta,Sinkhole:iaeconse,SrcIP:10.235.102.51,SrcPort:1905,TCPFlags:uscip,URLCategory:ptasn,URLReputation:163.091000,UserName:san,ClientVersion:1.1124,WebApplication:amqui,OriginalClientIP: itatise,IngressInterface: lo6252,EgressInterface: enp0s6516,IngressZone: liqu,EgressZone: cons,Prefilter Policy: apar,UserAgent: Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML" - ], - "rsa.network.alias_host": [ - "metc7395.lan" - ], - "rsa.time.day": "22", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.49.190.163", - "destination.nat.ip": "10.20.167.114", - "destination.nat.port": 6975, - "destination.port": 4220, - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "May 7 2018 06:39:06 Loremips5368.www5.corp: %FTD-ficiade-nemull:Offloaded TCP Flow for connectiontrumexfromenp0s484:10.49.190.163/4220(10.20.167.114/6975) tolo7626:10.166.40.137/5279(10.65.144.119/6233)", - "fileset.name": "log", - "host.name": "Loremips5368.www5.corp", - "input.type": "log", - "log.offset": 17035, - "observer.egress.interface.name": "enp0s484", - "observer.ingress.interface.name": "lo7626", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "Loremips5368.www5.corp" - ], - "related.ip": [ - "10.166.40.137", - "10.20.167.114", - "10.49.190.163", - "10.65.144.119" - ], - "rsa.internal.event_desc": "Offloaded TCP Flow for connection", - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "nemull", - "rsa.misc.connection_id": "trumex", - "rsa.network.alias_host": [ - "Loremips5368.www5.corp" - ], - "rsa.network.dinterface": "enp0s484", - "rsa.network.sinterface": "lo7626", - "rsa.time.day": "7", - "rsa.time.month": "May", - "service.type": "snort", - "source.ip": "10.166.40.137", - "source.nat.ip": "10.65.144.119", - "source.nat.port": 6233, - "source.port": 5279, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.162.128.87", - "event.code": "MALWARE", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "May 21 13:41:41 mexer1548.www5.example uidexea: Sha256:emu Disposition: Malware Threat name: asia IP Addresses: 10.162.128.87<<-10.104.78.147", - "fileset.name": "log", - "host.name": "mexer1548.www5.example", - "input.type": "log", - "log.offset": 17238, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "mexer1548.www5.example" - ], - "related.ip": [ - "10.104.78.147", - "10.162.128.87" - ], - "rsa.internal.messageid": "MALWARE", - "rsa.misc.checksum": "emu", - "rsa.misc.disposition": "Malware", - "rsa.network.alias_host": [ - "mexer1548.www5.example" - ], - "rsa.threat.threat_category": "asia", - "rsa.time.day": "21", - "rsa.time.month": "May", - "service.type": "snort", - "source.ip": "10.104.78.147", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.82.180.46", - "event.code": "MALWARE", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jun 4 20:44:15 emulla6625.www5.corp oditaut: Sha256:oloremqu Disposition: Malware Threat name: untNeque IP Addresses: 10.82.180.46<<-10.237.43.87", - "fileset.name": "log", - "host.name": "emulla6625.www5.corp", - "input.type": "log", - "log.offset": 17380, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "emulla6625.www5.corp" - ], - "related.ip": [ - "10.237.43.87", - "10.82.180.46" - ], - "rsa.internal.messageid": "MALWARE", - "rsa.misc.checksum": "oloremqu", - "rsa.misc.disposition": "Malware", - "rsa.network.alias_host": [ - "emulla6625.www5.corp" - ], - "rsa.threat.threat_category": "untNeque", - "rsa.time.day": "4", - "rsa.time.month": "Jun", - "service.type": "snort", - "source.ip": "10.237.43.87", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.geo.country_name": "quovol", - "destination.ip": "10.180.28.156", - "destination.port": 4665, - "event.code": "5315", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jun 19 03:46:49 magn3657.api.invalid tquiine: [ill:5315:1.4189] \"mquisn\" [Impact: success] From nby/uames at dolo Jun 19 03:46:49 2018 UTC [Classification: mnihil] [Priority: aturQui ]: umqua {icmp} 10.234.234.205:5714 (eos) -> 10.180.28.156:4665 (quovol)", - "fileset.name": "log", - "host.name": "magn3657.api.invalid", - "input.type": "log", - "log.level": "aturQui", - "log.offset": 17526, - "network.protocol": "icmp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.4189", - "related.hosts": [ - "magn3657.api.invalid" - ], - "related.ip": [ - "10.180.28.156", - "10.234.234.205" - ], - "rsa.crypto.sig_type": "mnihil", - "rsa.internal.messageid": "5315", - "rsa.misc.context": "mquisn", - "rsa.misc.event_log": "tquiine", - "rsa.misc.group_object": "nby", - "rsa.misc.policy_name": "mquisn", - "rsa.misc.result": "success", - "rsa.misc.sensor": "uames", - "rsa.misc.severity": "aturQui", - "rsa.misc.sig_id": 5315, - "rsa.misc.version": "1.4189", - "rsa.network.alias_host": [ - "magn3657.api.invalid" - ], - "rsa.threat.threat_desc": "aturQui", - "rsa.time.day": "19", - "rsa.time.event_time_str": "Jun 19 03:46:49 2018 UTC", - "rsa.time.month": "Jun", - "service.type": "snort", - "source.geo.country_name": "eos", - "source.ip": "10.234.234.205", - "source.port": 5714, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "architec", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jul 3 10:49:23 nis3942.mail.example edutpe: HMNOTIFY: architec (Sensor incul): Severity:high: success", - "fileset.name": "log", - "host.name": "nis3942.mail.example", - "input.type": "log", - "log.level": "high", - "log.offset": 17782, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "nis3942.mail.example" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "architec", - "rsa.misc.result": "success", - "rsa.misc.sensor": "incul", - "rsa.misc.severity": "high", - "rsa.time.day": "3", - "rsa.time.month": "Jul", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 4280, - "destination.ip": "10.166.10.187", - "destination.port": 793, - "event.action": "block", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2018-7-17T17:51:58Z iscing6960.api.invalid emipsu %NGIPS-very-high-temUte:AccessControlRuleAction:block, AccessControlRuleReason:success, SrcIP:10.40.250.209, DstIP:10.166.10.187, SrcPort:3941, DstPort:793, Protocol: udp, IngressInterface: lo2032, IngressZone:nculpaq, ACPolicy:mides, AccessControlRuleName:iconseq, Prefilter Policy:nidolo, User:runtmoll, Client:tuserror, ApplicationProtocol:igmp, InitiatorPackets:adipis, ResponderPackets:tet, InitiatorBytes:1259, ResponderBytes:4280, NAPPolicy:inv, DNSQuery:upta788.invalid, DNSRecordType: a host address, DNS_TTL: olupta, DNSSICategory:raincidu", - "fileset.name": "log", - "host.name": "upta788.invalid", - "input.type": "log", - "log.level": "very", - "log.offset": 17884, - "network.application": "tuserror", - "network.protocol": "igmp", - "observer.egress.interface.name": "lo2032", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "upta788.invalid" - ], - "related.ip": [ - "10.166.10.187", - "10.40.250.209" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "high-temUte", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "raincidu", - "rsa.misc.policy_name": "inv", - "rsa.misc.result": "success", - "rsa.misc.rule_name": "iconseq", - "rsa.misc.severity": "very", - "rsa.network.alias_host": [ - "upta788.invalid" - ], - "rsa.network.dinterface": "lo2032", - "rsa.network.zone_dst": "nculpaq", - "rsa.time.day": "17", - "rule.name": "iconseq", - "service.type": "snort", - "source.bytes": 1259, - "source.ip": "10.40.250.209", - "source.port": 3941, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "cancel,AccessControlRuleName:equat,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:estlab,ConnectType:vol,DE:paqui,DNSResponseType:eiusmo,DstIP:10.33.37.252,DstPort:3192,FileCount:2960,ICMPCode:itseddoe,ICMPType:tnulapa,InitiatorBytes:6405,InitiatorPackets:ngelitse,NAPPolicy:Utenim,Policy:llitan,ResponderBytes:2517,ResponderPackets:urs,Sinkhole:uepor,SrcIP:10.52.109.149,SrcPort:1416,TCPFlags:piciati,URLCategory:mipsum,URLReputation:7.706000,UserName:ditaut,ClientVersion:1.91,WebApplication:niamquis,OriginalClientIP: lapariat,IngressInterface: lo5184,EgressInterface: lo62,IngressZone: mpo,EgressZone: deritinv,Prefilter Policy: ten,UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML", - "event.code": "connection_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 1 00:54:32 consequu3962.api.localdomain Maloru: Protocol: ggp, AccessControlRuleAction:cancel,AccessControlRuleName:equat,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:estlab,ConnectType:vol,DE:paqui,DNSResponseType:eiusmo,DstIP:10.33.37.252,DstPort:3192,FileCount:2960,ICMPCode:itseddoe,ICMPType:tnulapa,InitiatorBytes:6405,InitiatorPackets:ngelitse,NAPPolicy:Utenim,Policy:llitan,ResponderBytes:2517,ResponderPackets:urs,Sinkhole:uepor,SrcIP:10.52.109.149,SrcPort:1416,TCPFlags:piciati,URLCategory:mipsum,URLReputation:7.706000,UserName:ditaut,ClientVersion:1.91,WebApplication:niamquis,OriginalClientIP: lapariat,IngressInterface: lo5184,EgressInterface: lo62,IngressZone: mpo,EgressZone: deritinv,Prefilter Policy: ten,UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36,ReferencedHost: temporai,URL: https://example.com/emeumf/res.txt?ptasn=ima#emUte,HTTPResponse: atnonp,HTTPReferer: imaven,IPReputationSICategory: cia,DNS_TTL: doconseq,DNSRecordType: quia,DNSQuery: veleum,GID: emUten,SID: 31978,Revision: proiden,Message: cita,Classification: iac,User: ntincul,Priority: mnisiste, ACPolicy: uptas", - "fileset.name": "log", - "host.name": "consequu3962.api.localdomain", - "input.type": "log", - "log.offset": 18484, - "network.protocol": "ggp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "consequu3962.api.localdomain" - ], - "rsa.counters.dclass_c1_str": "Number of Files", - "rsa.internal.messageid": "connection_events", - "rsa.misc.action": [ - "cancel,AccessControlRuleName:equat,AccessControlRuleReason:unknown,ApplicationProtocol:rdp,Client:estlab,ConnectType:vol,DE:paqui,DNSResponseType:eiusmo,DstIP:10.33.37.252,DstPort:3192,FileCount:2960,ICMPCode:itseddoe,ICMPType:tnulapa,InitiatorBytes:6405,InitiatorPackets:ngelitse,NAPPolicy:Utenim,Policy:llitan,ResponderBytes:2517,ResponderPackets:urs,Sinkhole:uepor,SrcIP:10.52.109.149,SrcPort:1416,TCPFlags:piciati,URLCategory:mipsum,URLReputation:7.706000,UserName:ditaut,ClientVersion:1.91,WebApplication:niamquis,OriginalClientIP: lapariat,IngressInterface: lo5184,EgressInterface: lo62,IngressZone: mpo,EgressZone: deritinv,Prefilter Policy: ten,UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML" - ], - "rsa.network.alias_host": [ - "consequu3962.api.localdomain" - ], - "rsa.time.day": "1", - "rsa.time.month": "Aug", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.78.180.219", - "event.code": "MALWARE", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 15 07:57:06 ita7851.localhost dictas: Sha256:equaturv Disposition: Malware Threat name: rsi IP Addresses: 10.78.180.219<<-10.198.202.72", - "fileset.name": "log", - "host.name": "ita7851.localhost", - "input.type": "log", - "log.offset": 19724, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ita7851.localhost" - ], - "related.ip": [ - "10.198.202.72", - "10.78.180.219" - ], - "rsa.internal.messageid": "MALWARE", - "rsa.misc.checksum": "equaturv", - "rsa.misc.disposition": "Malware", - "rsa.network.alias_host": [ - "ita7851.localhost" - ], - "rsa.threat.threat_category": "rsi", - "rsa.time.day": "15", - "rsa.time.month": "Aug", - "service.type": "snort", - "source.ip": "10.198.202.72", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.geo.country_name": "maccusan", - "destination.ip": "10.232.67.182", - "destination.port": 2086, - "event.code": "26152", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 29 14:59:40 laparia5374.api.domain norumet: [tconse:26152:1.2390] \"tam\" [Impact: success] From \"inc/riaturEx\" at eleumiur Aug 29 14:59:40 2018 UTC [Classification: eufugi] [Priority: ionu ] < {ggp} 10.147.155.100 -> 10.232.67.182:2086 (maccusan)", - "fileset.name": "log", - "host.name": "laparia5374.api.domain", - "input.type": "log", - "log.level": "ionu", - "log.offset": 19864, - "network.interface.name": "enp0s2413", - "network.protocol": "ggp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.2390", - "related.hosts": [ - "laparia5374.api.domain" - ], - "related.ip": [ - "10.147.155.100", - "10.232.67.182" - ], - "rsa.crypto.sig_type": "eufugi", - "rsa.internal.messageid": "26152", - "rsa.misc.context": "tam", - "rsa.misc.event_log": "norumet", - "rsa.misc.group_object": "inc", - "rsa.misc.policy_name": "tam", - "rsa.misc.result": "success", - "rsa.misc.sensor": "riaturEx", - "rsa.misc.severity": "ionu", - "rsa.misc.sig_id": 26152, - "rsa.misc.version": "1.2390", - "rsa.network.alias_host": [ - "laparia5374.api.domain" - ], - "rsa.network.interface": "enp0s2413", - "rsa.threat.threat_desc": "ionu", - "rsa.time.day": "29", - "rsa.time.event_time_str": "Aug 29 14:59:40 2018 UTC", - "rsa.time.month": "Aug", - "service.type": "snort", - "source.ip": "10.147.155.100", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.95.152.78", - "destination.port": 1267, - "event.code": "9193", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Sep 12 22:02:15 onse3711.api.domain aliquaUt: [boreet:9193:1.1034] vol [Impact: unknown] From \"nof/boNe\" at ovolu Sep 12 22:02:15 2018 UTC [Classification: cid] [Priority: periam ] {ggp} 10.4.147.70:3210 -> 10.95.152.78:1267", - "fileset.name": "log", - "host.name": "onse3711.api.domain", - "input.type": "log", - "log.level": "periam", - "log.offset": 20125, - "network.protocol": "ggp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.1034", - "related.hosts": [ - "onse3711.api.domain" - ], - "related.ip": [ - "10.4.147.70", - "10.95.152.78" - ], - "rsa.crypto.sig_type": "cid", - "rsa.internal.messageid": "9193", - "rsa.misc.context": "vol", - "rsa.misc.event_log": "aliquaUt", - "rsa.misc.group_object": "nof", - "rsa.misc.policy_name": "vol", - "rsa.misc.result": "unknown", - "rsa.misc.sensor": "boNe", - "rsa.misc.severity": "periam", - "rsa.misc.sig_id": 9193, - "rsa.misc.version": "1.1034", - "rsa.network.alias_host": [ - "onse3711.api.domain" - ], - "rsa.threat.threat_desc": "periam", - "rsa.time.day": "12", - "rsa.time.event_time_str": "Sep 12 22:02:15 2018 UTC", - "rsa.time.month": "Sep", - "service.type": "snort", - "source.ip": "10.4.147.70", - "source.port": 3210, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Sep 27 05:04:49 elite: nde iac7016.api.lan: antiu@llumquid, FailD, paq", - "file.name": "elite", - "fileset.name": "log", - "host.name": "iac7016.api.lan", - "input.type": "log", - "log.offset": 20350, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "iac7016.api.lan" - ], - "related.user": [ - "antiu" - ], - "rsa.db.index": "paq", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "iac7016.api.lan" - ], - "rsa.time.day": "27", - "rsa.time.month": "Sep", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "antiu" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Oct 11 12:07:23 sit: tte4006.www5.test: lors@isautem, Intrusion Events,metco", - "file.name": "sit", - "fileset.name": "log", - "host.name": "tte4006.www5.test", - "input.type": "log", - "log.offset": 20421, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "tte4006.www5.test" - ], - "related.user": [ - "lors" - ], - "rsa.db.index": "metco", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Intrusion Events", - "rsa.network.alias_host": [ - "tte4006.www5.test" - ], - "rsa.time.day": "11", - "rsa.time.month": "Oct", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "lors" - }, - { - "event.action": "cancel,AccessControlRuleName:bor,AccessControlRuleReason:success,ApplicationProtocol:udp,Client:ten,ConnectType:ssec,DE:snulapar,DNSResponseType:maccusan,DstIP:10.54.49.229,DstPort:1089,ICMPCode:iset,ICMPType:piciatis,InitiatorBytes:3781,InitiatorPackets:dolor,NAPPolicy:tur,Policy:sBo,ResponderBytes:1426,ResponderPackets:rehende,Sinkhole:iaeco,SrcIP:10.204.18.92,SrcPort:4216,TCPFlags:psamvolu,URLCategory:odte,URLReputation:12.264000,UserName:aparia,ClientVersion:1.2692,WebApplication:reetd,OriginalClientIP: nos,IngressInterface: enp0s6783,EgressInterface: enp0s2434,IngressZone: urveli,EgressZone: agnaa,Prefilter Policy: olu,UserAgent: Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2018-10-25T19:09:57Z equatD1241.www5.host rpo %NGIPS-low-econs:AccessControlRuleAction:cancel,AccessControlRuleName:bor,AccessControlRuleReason:success,ApplicationProtocol:udp,Client:ten,ConnectType:ssec,DE:snulapar,DNSResponseType:maccusan,DstIP:10.54.49.229,DstPort:1089,ICMPCode:iset,ICMPType:piciatis,InitiatorBytes:3781,InitiatorPackets:dolor,NAPPolicy:tur,Policy:sBo,ResponderBytes:1426,ResponderPackets:rehende,Sinkhole:iaeco,SrcIP:10.204.18.92,SrcPort:4216,TCPFlags:psamvolu,URLCategory:odte,URLReputation:12.264000,UserName:aparia,ClientVersion:1.2692,WebApplication:reetd,OriginalClientIP: nos,IngressInterface: enp0s6783,EgressInterface: enp0s2434,IngressZone: urveli,EgressZone: agnaa,Prefilter Policy: olu,UserAgent: Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36,ReferencedHost: atae,URL: https://www5.example.net/boNemo/duntutla.html?tmollit=ptat#nnumqu,HTTPResponse: billoi,HTTPReferer: ciatisu,IPReputationSICategory: evelites,DNS_TTL: vol,DNSRecordType: ommodi,DNSQuery: ritat,GID: dipi,SID: asnulapa,Revision: atev,Message: onsequa,Classification: seddoe,User: quisnost,Priority: tionu, ACPolicy: ciades, ConnectionDuration: 116.537000,Protocol: icmp,VLAN_ID: 764,IPSCount: 5618,InlineResult: accept, DNSSICategory: nvolupt, URLSICategory: stia", - "fileset.name": "log", - "host.name": "equatD1241.www5.host", - "input.type": "log", - "log.level": "low", - "log.offset": 20498, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "equatD1241.www5.host" - ], - "rsa.counters.dclass_c1_str": " The number of intrusion events", - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "econs", - "rsa.misc.action": [ - "cancel,AccessControlRuleName:bor,AccessControlRuleReason:success,ApplicationProtocol:udp,Client:ten,ConnectType:ssec,DE:snulapar,DNSResponseType:maccusan,DstIP:10.54.49.229,DstPort:1089,ICMPCode:iset,ICMPType:piciatis,InitiatorBytes:3781,InitiatorPackets:dolor,NAPPolicy:tur,Policy:sBo,ResponderBytes:1426,ResponderPackets:rehende,Sinkhole:iaeco,SrcIP:10.204.18.92,SrcPort:4216,TCPFlags:psamvolu,URLCategory:odte,URLReputation:12.264000,UserName:aparia,ClientVersion:1.2692,WebApplication:reetd,OriginalClientIP: nos,IngressInterface: enp0s6783,EgressInterface: enp0s2434,IngressZone: urveli,EgressZone: agnaa,Prefilter Policy: olu,UserAgent: Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML" - ], - "rsa.misc.category": "stia", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "equatD1241.www5.host" - ], - "rsa.time.day": "25", - "rsa.time.duration_time": 116.537, - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.216.14.36", - "event.code": "MALWARE", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Nov 9 02:12:32 essequ121.localdomain uaturQui: Sha256:emi Disposition: Malware Threat name: mipsumq IP Addresses: 10.216.14.36<<-10.224.250.83", - "fileset.name": "log", - "host.name": "essequ121.localdomain", - "input.type": "log", - "log.offset": 21841, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "essequ121.localdomain" - ], - "related.ip": [ - "10.216.14.36", - "10.224.250.83" - ], - "rsa.internal.messageid": "MALWARE", - "rsa.misc.checksum": "emi", - "rsa.misc.disposition": "Malware", - "rsa.network.alias_host": [ - "essequ121.localdomain" - ], - "rsa.threat.threat_category": "mipsumq", - "rsa.time.day": "9", - "rsa.time.month": "Nov", - "service.type": "snort", - "source.ip": "10.224.250.83", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.231.10.63", - "event.code": "10329", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Nov 23 09:15:06 borios1685.www.localhost umfu: [inesc:10329:1.6298] \"olupt\" [Impact: failure] From otamr/nonnu at riamea Nov 23 09:15:06 2018 UTC [Classification: taliquip] [Priority: upt ]:alert {ggp} 10.38.22.60:653 (ipi) -> 10.231.10.63", - "fileset.name": "log", - "host.name": "borios1685.www.localhost", - "input.type": "log", - "log.level": "upt", - "log.offset": 21984, - "network.protocol": "ggp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "observer.version": "1.6298", - "related.hosts": [ - "borios1685.www.localhost" - ], - "related.ip": [ - "10.231.10.63", - "10.38.22.60" - ], - "rsa.crypto.sig_type": "taliquip", - "rsa.internal.messageid": "10329", - "rsa.misc.context": "olupt", - "rsa.misc.event_log": "umfu", - "rsa.misc.group_object": "otamr", - "rsa.misc.policy_name": "olupt", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "nonnu", - "rsa.misc.severity": "upt", - "rsa.misc.sig_id": 10329, - "rsa.misc.version": "1.6298", - "rsa.network.alias_host": [ - "borios1685.www.localhost" - ], - "rsa.threat.threat_desc": "upt", - "rsa.time.day": "23", - "rsa.time.event_time_str": "Nov 23 09:15:06 2018 UTC", - "rsa.time.month": "Nov", - "service.type": "snort", - "source.geo.country_name": "ipi", - "source.ip": "10.38.22.60", - "source.port": 653, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 560, - "destination.ip": "10.29.231.11", - "destination.port": 2231, - "event.action": "cancel", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2018-12-7T16:17:40Z odt2318.localdomain dut %NGIPS-high-remape:AccessControlRuleAction:cancel, AccessControlRuleReason:failure, SrcIP:10.46.57.181, DstIP:10.29.231.11, SrcPort:3760, DstPort:2231, Protocol: ggp, IngressInterface: eth1891, IngressZone:orsitam, ACPolicy:olupt, AccessControlRuleName:tlab, Prefilter Policy:str, User:sit, Client:atat, ApplicationProtocol:tcp, InitiatorPackets:isnos, ResponderPackets:emp, InitiatorBytes:42, ResponderBytes:560, NAPPolicy:sciveli, DNSQuery:Bonoru5658.mail.invalid, DNSRecordType: a host address, DNSSICategory:omm", - "fileset.name": "log", - "host.name": "Bonoru5658.mail.invalid", - "input.type": "log", - "log.level": "high", - "log.offset": 22224, - "network.application": "atat", - "network.protocol": "tcp", - "observer.egress.interface.name": "eth1891", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "Bonoru5658.mail.invalid" - ], - "related.ip": [ - "10.29.231.11", - "10.46.57.181" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "remape", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.category": "omm", - "rsa.misc.policy_name": "sciveli", - "rsa.misc.result": "failure", - "rsa.misc.rule_name": "tlab", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "Bonoru5658.mail.invalid" - ], - "rsa.network.dinterface": "eth1891", - "rsa.network.zone_dst": "orsitam", - "rsa.time.day": "7", - "rule.name": "tlab", - "service.type": "snort", - "source.bytes": 42, - "source.ip": "10.46.57.181", - "source.port": 3760, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Dec 21 23:20:14 dolores: oin ueipsa6797.mail.home: agnaal@itaut, Access Control Policy > Bonoru", - "file.name": "dolores", - "fileset.name": "log", - "host.name": "ueipsa6797.mail.home", - "input.type": "log", - "log.offset": 22784, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ueipsa6797.mail.home" - ], - "related.user": [ - "agnaal" - ], - "rsa.db.index": "Bonoru", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "ueipsa6797.mail.home" - ], - "rsa.time.day": "21", - "rsa.time.month": "Dec", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "agnaal" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jan 5 06:22:49 ntinculp: uptatemU iono5161.www5.localhost: ita@olupt, System > orisnisi", - "file.name": "ntinculp", - "fileset.name": "log", - "host.name": "iono5161.www5.localhost", - "input.type": "log", - "log.offset": 22880, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "iono5161.www5.localhost" - ], - "related.user": [ - "ita" - ], - "rsa.db.index": "orisnisi", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "System", - "rsa.network.alias_host": [ - "iono5161.www5.localhost" - ], - "rsa.time.day": "5", - "rsa.time.month": "Jan", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "ita" - }, - { - "event.action": "cancel,AccessControlRuleName:uia,AccessControlRuleReason:unknown,ApplicationProtocol:ipv6-icmp,Client:nostrume,ConnectType:corpori,DE:unti,DNSResponseType:tena,DstIP:10.199.173.109,DstPort:1531,FileCount:4238,ICMPCode:rmagni,ICMPType:tiono,InitiatorBytes:7625,InitiatorPackets:imipsamv,NAPPolicy:eroin,Policy:xplicabo,ResponderBytes:4308,ResponderPackets:cidu,Sinkhole:tquo,SrcIP:10.20.64.209,SrcPort:5294,TCPFlags:mrem,URLCategory:maliquam,URLReputation:112.060000,UserName:eiusmo,ClientVersion:1.3720,WebApplication:its,OriginalClientIP: prehende,IngressInterface: eth685,EgressInterface: lo919,IngressZone: uiration,EgressZone: secte,Prefilter Policy: ulapari,UserAgent: Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML", - "event.code": "connection_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jan 19 13:25:23 untut3537.domain sit: Protocol: ggp, AccessControlRuleAction:cancel,AccessControlRuleName:uia,AccessControlRuleReason:unknown,ApplicationProtocol:ipv6-icmp,Client:nostrume,ConnectType:corpori,DE:unti,DNSResponseType:tena,DstIP:10.199.173.109,DstPort:1531,FileCount:4238,ICMPCode:rmagni,ICMPType:tiono,InitiatorBytes:7625,InitiatorPackets:imipsamv,NAPPolicy:eroin,Policy:xplicabo,ResponderBytes:4308,ResponderPackets:cidu,Sinkhole:tquo,SrcIP:10.20.64.209,SrcPort:5294,TCPFlags:mrem,URLCategory:maliquam,URLReputation:112.060000,UserName:eiusmo,ClientVersion:1.3720,WebApplication:its,OriginalClientIP: prehende,IngressInterface: eth685,EgressInterface: lo919,IngressZone: uiration,EgressZone: secte,Prefilter Policy: ulapari,UserAgent: Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36,ReferencedHost: vol,URL: https://api.example.com/non/quaturQu.gif?etura=taedi#edi,HTTPResponse: quiacon,HTTPReferer: udexerc,IPReputationSICategory: volu,DNS_TTL: tassit,DNSRecordType: metconse,DNSQuery: remeum,GID: equaturQ,SID: 38469,Revision: mollita,Message: eserun,Classification: sBono,User: icab,Priority: iquaUten, ACPolicy: oluptasn", - "fileset.name": "log", - "host.name": "untut3537.domain", - "input.type": "log", - "log.offset": 22968, - "network.protocol": "ggp", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "untut3537.domain" - ], - "rsa.counters.dclass_c1_str": "Number of Files", - "rsa.internal.messageid": "connection_events", - "rsa.misc.action": [ - "cancel,AccessControlRuleName:uia,AccessControlRuleReason:unknown,ApplicationProtocol:ipv6-icmp,Client:nostrume,ConnectType:corpori,DE:unti,DNSResponseType:tena,DstIP:10.199.173.109,DstPort:1531,FileCount:4238,ICMPCode:rmagni,ICMPType:tiono,InitiatorBytes:7625,InitiatorPackets:imipsamv,NAPPolicy:eroin,Policy:xplicabo,ResponderBytes:4308,ResponderPackets:cidu,Sinkhole:tquo,SrcIP:10.20.64.209,SrcPort:5294,TCPFlags:mrem,URLCategory:maliquam,URLReputation:112.060000,UserName:eiusmo,ClientVersion:1.3720,WebApplication:its,OriginalClientIP: prehende,IngressInterface: eth685,EgressInterface: lo919,IngressZone: uiration,EgressZone: secte,Prefilter Policy: ulapari,UserAgent: Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML" - ], - "rsa.network.alias_host": [ - "untut3537.domain" - ], - "rsa.time.day": "19", - "rsa.time.month": "Jan", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 1881, - "destination.ip": "10.135.250.25", - "destination.port": 1306, - "event.action": "block", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2019-2-2T20:27:57Z atio5250.api.localhost idolo %NGIPS-low-ritat:AccessControlRuleAction:block, AccessControlRuleReason:success, SrcIP:10.107.144.80, DstIP:10.135.250.25, SrcPort:703, DstPort:1306, Protocol: icmp, IngressInterface: lo3342, IngressZone:emquiavo, ACPolicy:nsequ, AccessControlRuleName:Secti, Prefilter Policy:utlabore, User:suscipi, Client:tlabor, ApplicationProtocol:ggp, InitiatorPackets:dolore, ResponderPackets:xer, InitiatorBytes:4673, ResponderBytes:1881, NAPPolicy:msequine, DNSQuery:reetd7201.invalid, DNSRecordType: a host address, DNS_TTL: ugiatquo, DNSSICategory:ende", - "fileset.name": "log", - "host.name": "reetd7201.invalid", - "input.type": "log", - "log.level": "low", - "log.offset": 24183, - "network.application": "tlabor", - "network.protocol": "ggp", - "observer.egress.interface.name": "lo3342", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "reetd7201.invalid" - ], - "related.ip": [ - "10.107.144.80", - "10.135.250.25" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "ritat", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "ende", - "rsa.misc.policy_name": "msequine", - "rsa.misc.result": "success", - "rsa.misc.rule_name": "Secti", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "reetd7201.invalid" - ], - "rsa.network.dinterface": "lo3342", - "rsa.network.zone_dst": "emquiavo", - "rsa.time.day": "2", - "rule.name": "Secti", - "service.type": "snort", - "source.bytes": 4673, - "source.ip": "10.107.144.80", - "source.port": 703, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "olupta", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Feb 17 03:30:32 tnula4380.mail.test edolo: HMNOTIFY: olupta (Sensor volu): Severity:low: failure", - "fileset.name": "log", - "host.name": "tnula4380.mail.test", - "input.type": "log", - "log.level": "low", - "log.offset": 24777, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "tnula4380.mail.test" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "olupta", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "volu", - "rsa.misc.severity": "low", - "rsa.time.day": "17", - "rsa.time.month": "Feb", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 3 10:33:06 ugiat: [quiin] apar2567.www.localhost: iscing@ser, Policies > nama", - "file.name": "ugiat", - "fileset.name": "log", - "host.name": "apar2567.www.localhost", - "input.type": "log", - "log.offset": 24874, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "apar2567.www.localhost" - ], - "related.user": [ - "iscing" - ], - "rsa.db.index": "nama", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Policies", - "rsa.network.alias_host": [ - "apar2567.www.localhost" - ], - "rsa.time.day": "3", - "rsa.time.month": "Mar", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "iscing" - }, - { - "destination.ip": "10.5.88.183", - "destination.port": 7518, - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Mar 17 2019 17:35:40 onsecte5119.www.invalid %FTD-dolore-iineavol:Failed to locate egress interface for icmp from enp0s3923:10.198.207.31/579 to 10.5.88.183/7518", - "fileset.name": "log", - "host.name": "onsecte5119.www.invalid", - "input.type": "log", - "log.offset": 24956, - "network.protocol": "icmp", - "observer.ingress.interface.name": "enp0s3923", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "onsecte5119.www.invalid" - ], - "related.ip": [ - "10.198.207.31", - "10.5.88.183" - ], - "rsa.internal.event_desc": "Failed to locate egress interface", - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "iineavol", - "rsa.network.alias_host": [ - "onsecte5119.www.invalid" - ], - "rsa.network.sinterface": "enp0s3923", - "rsa.time.day": "17", - "rsa.time.month": "Mar", - "service.type": "snort", - "source.ip": "10.198.207.31", - "source.port": 579, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 1 00:38:14 uis: [oluptat] iutali3143.host: ect@fdeFi, Analysis & Reporting , eritat", - "file.name": "uis", - "fileset.name": "log", - "host.name": "iutali3143.host", - "input.type": "log", - "log.offset": 25118, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "iutali3143.host" - ], - "related.user": [ - "ect" - ], - "rsa.db.index": "eritat", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Analysis & Reporting", - "rsa.network.alias_host": [ - "iutali3143.host" - ], - "rsa.time.day": "1", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "ect" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 15 07:40:49 prehende: [spern] orro7466.www5.lan: issu@accusant, rrorsitv", - "file.name": "prehende", - "fileset.name": "log", - "host.name": "orro7466.www5.lan", - "input.type": "log", - "log.offset": 25206, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "orro7466.www5.lan" - ], - "related.user": [ - "issu" - ], - "rsa.db.index": "rrorsitv", - "rsa.internal.messageid": "SystemSettings", - "rsa.network.alias_host": [ - "orro7466.www5.lan" - ], - "rsa.time.day": "15", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "issu" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Apr 29 14:43:23 quii: [dantiu] epre7710.www.domain: aria@ugi, Heartbeat, econ", - "file.name": "quii", - "fileset.name": "log", - "host.name": "epre7710.www.domain", - "input.type": "log", - "log.offset": 25283, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "epre7710.www.domain" - ], - "related.user": [ - "aria" - ], - "rsa.db.index": "econ", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Heartbeat", - "rsa.network.alias_host": [ - "epre7710.www.domain" - ], - "rsa.time.day": "29", - "rsa.time.month": "Apr", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "aria" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "May 13 21:45:57 tio: [tlabori] nsequatu2799.www5.invalid: mape@aboree, Task Queue, eumiurer", - "file.name": "tio", - "fileset.name": "log", - "host.name": "nsequatu2799.www5.invalid", - "input.type": "log", - "log.offset": 25361, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "nsequatu2799.www5.invalid" - ], - "related.user": [ - "mape" - ], - "rsa.db.index": "eumiurer", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Task Queue", - "rsa.network.alias_host": [ - "nsequatu2799.www5.invalid" - ], - "rsa.time.day": "13", - "rsa.time.month": "May", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "mape" - }, - { - "event.action": "block,AccessControlRuleName:uaUten,AccessControlRuleReason:failure,ApplicationProtocol:icmp,Client:aec,ConnectType:issus,DE:ica,DNSResponseType:scingeli,DstIP:10.10.40.136,DstPort:6091,ICMPCode:idu,ICMPType:neavolup,InitiatorBytes:694,InitiatorPackets:giatquov,NAPPolicy:ovolupta,Policy:oen,ResponderBytes:7141,ResponderPackets:mtot,Sinkhole:entorev,SrcIP:10.34.89.14,SrcPort:4988,TCPFlags:quisnost,URLCategory:chitecto,URLReputation:124.035000,UserName:quelauda,ClientVersion:1.992,WebApplication:mquia,OriginalClientIP: saquaeab,IngressInterface: lo2474,EgressInterface: eth6425,IngressZone: deFini,EgressZone: radip,Prefilter Policy: odiconse,UserAgent: Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2019-5-28T04:48:31Z scingel1634.api.home orsit %NGIPS-high-meaq:AccessControlRuleAction:block,AccessControlRuleName:uaUten,AccessControlRuleReason:failure,ApplicationProtocol:icmp,Client:aec,ConnectType:issus,DE:ica,DNSResponseType:scingeli,DstIP:10.10.40.136,DstPort:6091,ICMPCode:idu,ICMPType:neavolup,InitiatorBytes:694,InitiatorPackets:giatquov,NAPPolicy:ovolupta,Policy:oen,ResponderBytes:7141,ResponderPackets:mtot,Sinkhole:entorev,SrcIP:10.34.89.14,SrcPort:4988,TCPFlags:quisnost,URLCategory:chitecto,URLReputation:124.035000,UserName:quelauda,ClientVersion:1.992,WebApplication:mquia,OriginalClientIP: saquaeab,IngressInterface: lo2474,EgressInterface: eth6425,IngressZone: deFini,EgressZone: radip,Prefilter Policy: odiconse,UserAgent: Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36,ReferencedHost: untu,URL: https://mail.example.net/quunturm/upta.gif?exer=mvolup#litseddo,HTTPResponse: ccaeca,HTTPReferer: snostr,IPReputationSICategory: ratvol,DNS_TTL: olaboris,DNSRecordType: smodite,DNSQuery: eataevi,GID: conseq,SID: quo,Revision: texplica,Message: urQuis,Classification: umetMa,User: tisetqua,Priority: lore, ACPolicy: taedicta, ConnectionDuration: 141.678000,Protocol: udp,VLAN_ID: 2110,IPSCount: 7554,InlineResult: cancel, DNSSICategory: tmollita, URLSICategory: turQuis", - "fileset.name": "log", - "host.name": "scingel1634.api.home", - "input.type": "log", - "log.level": "high", - "log.offset": 25453, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "scingel1634.api.home" - ], - "rsa.counters.dclass_c1_str": " The number of intrusion events", - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "meaq", - "rsa.misc.action": [ - "block,AccessControlRuleName:uaUten,AccessControlRuleReason:failure,ApplicationProtocol:icmp,Client:aec,ConnectType:issus,DE:ica,DNSResponseType:scingeli,DstIP:10.10.40.136,DstPort:6091,ICMPCode:idu,ICMPType:neavolup,InitiatorBytes:694,InitiatorPackets:giatquov,NAPPolicy:ovolupta,Policy:oen,ResponderBytes:7141,ResponderPackets:mtot,Sinkhole:entorev,SrcIP:10.34.89.14,SrcPort:4988,TCPFlags:quisnost,URLCategory:chitecto,URLReputation:124.035000,UserName:quelauda,ClientVersion:1.992,WebApplication:mquia,OriginalClientIP: saquaeab,IngressInterface: lo2474,EgressInterface: eth6425,IngressZone: deFini,EgressZone: radip,Prefilter Policy: odiconse,UserAgent: Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML" - ], - "rsa.misc.category": "turQuis", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "scingel1634.api.home" - ], - "rsa.time.day": "28", - "rsa.time.duration_time": 141.678, - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "deny,AccessControlRuleName:mea,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:illoinv,ConnectType:euf,DE:turveli,DNSResponseType:onofdeFi,DstIP:10.197.182.37,DstPort:4472,ICMPCode:quaUte,ICMPType:ercitati,InitiatorBytes:6085,InitiatorPackets:rehe,NAPPolicy:hilmole,Policy:etura,ResponderBytes:540,ResponderPackets:eumiure,Sinkhole:exe,SrcIP:10.182.121.165,SrcPort:4822,TCPFlags:tate,URLCategory:tev,URLReputation:46.627000,UserName:uira,ClientVersion:1.2734,WebApplication:ncididu,OriginalClientIP: numqu,IngressInterface: enp0s1059,EgressInterface: enp0s3789,IngressZone: uscipitl,EgressZone: utfugit,Prefilter Policy: utali,UserAgent: Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2019-6-11T11:51:06Z inBCSe364.www.corp ntore %NGIPS-very-high-tsedquia:AccessControlRuleAction:deny,AccessControlRuleName:mea,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:illoinv,ConnectType:euf,DE:turveli,DNSResponseType:onofdeFi,DstIP:10.197.182.37,DstPort:4472,ICMPCode:quaUte,ICMPType:ercitati,InitiatorBytes:6085,InitiatorPackets:rehe,NAPPolicy:hilmole,Policy:etura,ResponderBytes:540,ResponderPackets:eumiure,Sinkhole:exe,SrcIP:10.182.121.165,SrcPort:4822,TCPFlags:tate,URLCategory:tev,URLReputation:46.627000,UserName:uira,ClientVersion:1.2734,WebApplication:ncididu,OriginalClientIP: numqu,IngressInterface: enp0s1059,EgressInterface: enp0s3789,IngressZone: uscipitl,EgressZone: utfugit,Prefilter Policy: utali,UserAgent: Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;],ReferencedHost: peria,URL: https://api.example.com/uscip/uptatem.txt?eetd=orin#remag,HTTPResponse: conse,HTTPReferer: ate,IPReputationSICategory: iamq,DNS_TTL: tationul,DNSRecordType: qui,DNSQuery: porissu,GID: one,SID: mqu,Revision: iofficia,Message: uisnostr,Classification: lit,User: stlabo,Priority: uaer, ACPolicy: ectob, ConnectionDuration: 159.885000,Protocol: rdp,VLAN_ID: 350,IPSCount: 7423,InlineResult: allow, DNSSICategory: orema, URLSICategory: enderit", - "fileset.name": "log", - "host.name": "inBCSe364.www.corp", - "input.type": "log", - "log.level": "very", - "log.offset": 26810, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "inBCSe364.www.corp" - ], - "rsa.counters.dclass_c1_str": " The number of intrusion events", - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "high-tsedquia", - "rsa.misc.action": [ - "deny,AccessControlRuleName:mea,AccessControlRuleReason:success,ApplicationProtocol:rdp,Client:illoinv,ConnectType:euf,DE:turveli,DNSResponseType:onofdeFi,DstIP:10.197.182.37,DstPort:4472,ICMPCode:quaUte,ICMPType:ercitati,InitiatorBytes:6085,InitiatorPackets:rehe,NAPPolicy:hilmole,Policy:etura,ResponderBytes:540,ResponderPackets:eumiure,Sinkhole:exe,SrcIP:10.182.121.165,SrcPort:4822,TCPFlags:tate,URLCategory:tev,URLReputation:46.627000,UserName:uira,ClientVersion:1.2734,WebApplication:ncididu,OriginalClientIP: numqu,IngressInterface: enp0s1059,EgressInterface: enp0s3789,IngressZone: uscipitl,EgressZone: utfugit,Prefilter Policy: utali,UserAgent: Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML" - ], - "rsa.misc.category": "enderit", - "rsa.misc.severity": "very", - "rsa.network.alias_host": [ - "inBCSe364.www.corp" - ], - "rsa.time.day": "11", - "rsa.time.duration_time": 159.885, - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 4560, - "destination.ip": "10.186.68.87", - "destination.port": 2129, - "event.action": "allow", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2019-6-25T18:53:40Z uaeratv2083.internal.localhost essecil %NGIPS-medium-uptate:AccessControlRuleAction:allow, AccessControlRuleReason:unknown, SrcIP:10.154.87.98, DstIP:10.186.68.87, SrcPort:2632, DstPort:2129, Protocol: igmp, IngressInterface: eth2658, IngressZone:suscipi, ACPolicy:eirure, AccessControlRuleName:itsed, Prefilter Policy:fugiat, User:ore, Client:labo, ApplicationProtocol:ipv6-icmp, InitiatorPackets:nisi, ResponderPackets:pidatatn, InitiatorBytes:2005, ResponderBytes:4560, NAPPolicy:odico, DNSQuery:onofdeFi1149.www5.domain, DNSRecordType: a host address, DNSSICategory:ioffici", - "fileset.name": "log", - "host.name": "onofdeFi1149.www5.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 28227, - "network.application": "labo", - "network.protocol": "ipv6-icmp", - "observer.egress.interface.name": "eth2658", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "onofdeFi1149.www5.domain" - ], - "related.ip": [ - "10.154.87.98", - "10.186.68.87" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "uptate", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "ioffici", - "rsa.misc.policy_name": "odico", - "rsa.misc.result": "unknown", - "rsa.misc.rule_name": "itsed", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "onofdeFi1149.www5.domain" - ], - "rsa.network.dinterface": "eth2658", - "rsa.network.zone_dst": "suscipi", - "rsa.time.day": "25", - "rule.name": "itsed", - "service.type": "snort", - "source.bytes": 2005, - "source.ip": "10.154.87.98", - "source.port": 2632, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.bytes": 584, - "destination.ip": "10.67.211.63", - "destination.port": 7478, - "event.action": "allow", - "event.code": "NGIPS_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "2019-7-10T01:56:14Z nvo2629.example onsequ %NGIPS-medium-itess:AccessControlRuleAction:allow, AccessControlRuleReason:unknown, SrcIP:10.35.59.140, DstIP:10.67.211.63, SrcPort:1832, DstPort:7478, Protocol: udp, IngressInterface: eth3613, IngressZone:temqu, ACPolicy:emse, AccessControlRuleName:dantiu, Prefilter Policy:oluptate, User:onnu, Client:Ciceroin, ApplicationProtocol:udp, InitiatorPackets:itempora, ResponderPackets:uovol, InitiatorBytes:4338, ResponderBytes:584, NAPPolicy:bore, DNSQuery:lumdol5252.internal.test, DNSRecordType: a host address, DNS_TTL: seosq, DNSSICategory:orain", - "fileset.name": "log", - "host.name": "lumdol5252.internal.test", - "input.type": "log", - "log.level": "medium", - "log.offset": 28825, - "network.application": "Ciceroin", - "network.protocol": "udp", - "observer.egress.interface.name": "eth3613", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "lumdol5252.internal.test" - ], - "related.ip": [ - "10.35.59.140", - "10.67.211.63" - ], - "rsa.internal.messageid": "NGIPS_events", - "rsa.internal.msg_id": "itess", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "orain", - "rsa.misc.policy_name": "bore", - "rsa.misc.result": "unknown", - "rsa.misc.rule_name": "dantiu", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "lumdol5252.internal.test" - ], - "rsa.network.dinterface": "eth3613", - "rsa.network.zone_dst": "temqu", - "rsa.time.day": "10", - "rule.name": "dantiu", - "service.type": "snort", - "source.bytes": 4338, - "source.ip": "10.35.59.140", - "source.port": 1832, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.action": "eeufugia", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Jul 24 08:58:48 quianonn2762.api.localhost : HMNOTIFY: eeufugia (Sensor mquis): Severity:very-high: unknown", - "fileset.name": "log", - "host.name": "quianonn2762.api.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 29416, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "quianonn2762.api.localhost" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "eeufugia", - "rsa.misc.result": "unknown", - "rsa.misc.sensor": "mquis", - "rsa.misc.severity": "very-high", - "rsa.time.day": "24", - "rsa.time.month": "Jul", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 7 16:01:23 ver: [quaturv] atn2219.api.invalid: radip@ipsum, Heartbeat, itesse", - "file.name": "ver", - "fileset.name": "log", - "host.name": "atn2219.api.invalid", - "input.type": "log", - "log.offset": 29524, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "atn2219.api.invalid" - ], - "related.user": [ - "radip" - ], - "rsa.db.index": "itesse", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Heartbeat", - "rsa.network.alias_host": [ - "atn2219.api.invalid" - ], - "rsa.time.day": "7", - "rsa.time.month": "Aug", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "radip" - }, - { - "event.action": "atcup", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Aug 21 23:03:57 equu1159.internal.localhost psumdol: HMNOTIFY: atcup (Sensor urautodi): Severity:medium: failure", - "fileset.name": "log", - "host.name": "equu1159.internal.localhost", - "input.type": "log", - "log.level": "medium", - "log.offset": 29606, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "equu1159.internal.localhost" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "atcup", - "rsa.misc.result": "failure", - "rsa.misc.sensor": "urautodi", - "rsa.misc.severity": "medium", - "rsa.time.day": "21", - "rsa.time.month": "Aug", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Sep 5 06:06:31 dexer: [tionofde] urQuisau2442.mail.invalid: uptate@itesse, Login, Login Success", - "event.outcome": "success", - "file.name": "dexer", - "fileset.name": "log", - "host.name": "urQuisau2442.mail.invalid", - "input.type": "log", - "log.offset": 29719, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "urQuisau2442.mail.invalid" - ], - "related.user": [ - "uptate" - ], - "rsa.internal.messageid": "SystemSettings", - "rsa.investigations.ec_activity": "Logon", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.network.alias_host": [ - "urQuisau2442.mail.invalid" - ], - "rsa.time.day": "5", - "rsa.time.month": "Sep", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "uptate" - }, - { - "destination.ip": "10.179.27.185", - "event.code": "MALWARE", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Sep 19 13:09:05 cididu3187.home asperna: Sha256:llumdolo Disposition: Malware Threat name: sequines IP Addresses: 10.14.46.141->10.179.27.185", - "fileset.name": "log", - "host.name": "cididu3187.home", - "input.type": "log", - "log.offset": 29815, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "cididu3187.home" - ], - "related.ip": [ - "10.14.46.141", - "10.179.27.185" - ], - "rsa.internal.messageid": "MALWARE", - "rsa.misc.checksum": "llumdolo", - "rsa.misc.disposition": "Malware", - "rsa.network.alias_host": [ - "cididu3187.home" - ], - "rsa.threat.threat_category": "sequines", - "rsa.time.day": "19", - "rsa.time.month": "Sep", - "service.type": "snort", - "source.ip": "10.14.46.141", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Oct 3 20:11:40 lorem: aliqua4025.www.localdomain: deFinibu@pitlab, Logout, Logout Success", - "event.outcome": "success", - "file.name": "lorem", - "fileset.name": "log", - "host.name": "aliqua4025.www.localdomain", - "input.type": "log", - "log.offset": 29957, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "aliqua4025.www.localdomain" - ], - "related.user": [ - "deFinibu" - ], - "rsa.internal.messageid": "SystemSettings", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.network.alias_host": [ - "aliqua4025.www.localdomain" - ], - "rsa.time.day": "3", - "rsa.time.month": "Oct", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "deFinibu" - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Oct 18 03:14:14 ntutlab: aecatcup citati1297.api.domain: emp@uptate, Policies > olupta", - "file.name": "ntutlab", - "fileset.name": "log", - "host.name": "citati1297.api.domain", - "input.type": "log", - "log.offset": 30047, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "citati1297.api.domain" - ], - "related.user": [ - "emp" - ], - "rsa.db.index": "olupta", - "rsa.internal.messageid": "SystemSettings", - "rsa.misc.category": "Policies", - "rsa.network.alias_host": [ - "citati1297.api.domain" - ], - "rsa.time.day": "18", - "rsa.time.month": "Oct", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "emp" - }, - { - "event.action": "eursi", - "event.code": "HMNOTIFY", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Nov 1 10:16:48 nreprehe2138.www5.domain : HMNOTIFY: eursi (Sensor aute): Severity:medium: success", - "fileset.name": "log", - "host.name": "nreprehe2138.www5.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 30134, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "nreprehe2138.www5.domain" - ], - "rsa.internal.messageid": "HMNOTIFY", - "rsa.misc.event_type": "eursi", - "rsa.misc.result": "success", - "rsa.misc.sensor": "aute", - "rsa.misc.severity": "medium", - "rsa.time.day": "1", - "rsa.time.month": "Nov", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "event.code": "SystemSettings", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Nov 15 17:19:22 pari: [ent] idolore6589.api.localdomain: ctobea@audanti, Logout, Logout Success", - "event.outcome": "success", - "file.name": "pari", - "fileset.name": "log", - "host.name": "idolore6589.api.localdomain", - "input.type": "log", - "log.offset": 30232, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "idolore6589.api.localdomain" - ], - "related.user": [ - "ctobea" - ], - "rsa.internal.messageid": "SystemSettings", - "rsa.investigations.ec_activity": "Logoff", - "rsa.investigations.ec_outcome": "Success", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Authentication", - "rsa.network.alias_host": [ - "idolore6589.api.localdomain" - ], - "rsa.time.day": "15", - "rsa.time.month": "Nov", - "service.type": "snort", - "tags": [ - "forwarded", - "snort.log" - ], - "user.name": "ctobea" - }, - { - "destination.ip": "10.118.103.185", - "destination.nat.ip": "10.240.77.10", - "destination.nat.port": 2226, - "destination.port": 1333, - "event.code": "FTD_events", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Nov 30 2019 00:21:57 erunt3957.internal.lan %FTD-aut-iono:TCP Flow is no longer offloaded for connection runtmo from lo2571:10.118.103.185/1333 (10.240.77.10/2226) to lo5895:10.125.130.61/6154 (10.32.195.34/135)", - "fileset.name": "log", - "host.name": "erunt3957.internal.lan", - "input.type": "log", - "log.offset": 30328, - "observer.egress.interface.name": "lo2571", - "observer.ingress.interface.name": "lo5895", - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "erunt3957.internal.lan" - ], - "related.ip": [ - "10.118.103.185", - "10.125.130.61", - "10.240.77.10", - "10.32.195.34" - ], - "rsa.internal.event_desc": "TCP Flow is no longer offloaded for connection", - "rsa.internal.messageid": "FTD_events", - "rsa.internal.msg_id": "iono", - "rsa.misc.connection_id": "runtmo", - "rsa.network.alias_host": [ - "erunt3957.internal.lan" - ], - "rsa.network.dinterface": "lo2571", - "rsa.network.sinterface": "lo5895", - "rsa.time.day": "30", - "rsa.time.month": "Nov", - "service.type": "snort", - "source.ip": "10.125.130.61", - "source.nat.ip": "10.32.195.34", - "source.nat.port": 135, - "source.port": 6154, - "tags": [ - "forwarded", - "snort.log" - ] - }, - { - "destination.ip": "10.111.130.177", - "event.code": "MALWARE", - "event.dataset": "snort.log", - "event.module": "snort", - "event.original": "Dec 14 07:24:31 ntNe7144.api.lan oremips: Sha256:numqu Disposition: Malware Threat name: sed IP Addresses: 10.111.130.177<<-10.188.88.133", - "fileset.name": "log", - "host.name": "ntNe7144.api.lan", - "input.type": "log", - "log.offset": 30540, - "observer.product": "IDS", - "observer.type": "IDS", - "observer.vendor": "Snort", - "related.hosts": [ - "ntNe7144.api.lan" - ], - "related.ip": [ - "10.111.130.177", - "10.188.88.133" - ], - "rsa.internal.messageid": "MALWARE", - "rsa.misc.checksum": "numqu", - "rsa.misc.disposition": "Malware", - "rsa.network.alias_host": [ - "ntNe7144.api.lan" - ], - "rsa.threat.threat_category": "sed", - "rsa.time.day": "14", - "rsa.time.month": "Dec", - "service.type": "snort", - "source.ip": "10.188.88.133", - "tags": [ - "forwarded", - "snort.log" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/sonicwall/README.md b/x-pack/filebeat/module/sonicwall/README.md deleted file mode 100644 index 65bd2526ff1..00000000000 --- a/x-pack/filebeat/module/sonicwall/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# sonicwall module - -This is a module for Sonicwall-FW logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML sonicwall version 124 -at 2020-07-13 17:55:41.955704 +0000 UTC. - diff --git a/x-pack/filebeat/module/sonicwall/_meta/config.yml b/x-pack/filebeat/module/sonicwall/_meta/config.yml deleted file mode 100644 index 92a71910286..00000000000 --- a/x-pack/filebeat/module/sonicwall/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: sonicwall - firewall: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9519 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/sonicwall/_meta/docs.asciidoc b/x-pack/filebeat/module/sonicwall/_meta/docs.asciidoc deleted file mode 100644 index adccfd17799..00000000000 --- a/x-pack/filebeat/module/sonicwall/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: sonicwall_firewall -:has-dashboards: false - -== Sonicwall module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/sonicwall[SonicWall Firewall] Elastic integration instead."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Sonicwall-FW logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: firewall - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `firewall` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "sonicwall" device revision 124. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9519` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/sonicwall/_meta/fields.yml b/x-pack/filebeat/module/sonicwall/_meta/fields.yml deleted file mode 100644 index 13a72000b12..00000000000 --- a/x-pack/filebeat/module/sonicwall/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: sonicwall - title: Sonicwall-FW - description: > - sonicwall fields. - fields: diff --git a/x-pack/filebeat/module/sonicwall/fields.go b/x-pack/filebeat/module/sonicwall/fields.go deleted file mode 100644 index 8280b796d00..00000000000 --- a/x-pack/filebeat/module/sonicwall/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package sonicwall - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "sonicwall", asset.ModuleFieldsPri, AssetSonicwall); err != nil { - panic(err) - } -} - -// AssetSonicwall returns asset data. -// This is the base64 encoded zlib format compressed contents of module/sonicwall. -func AssetSonicwall() string { - return "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" -} diff --git a/x-pack/filebeat/module/sonicwall/firewall/_meta/fields.yml b/x-pack/filebeat/module/sonicwall/firewall/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/sonicwall/firewall/config/input.yml b/x-pack/filebeat/module/sonicwall/firewall/config/input.yml deleted file mode 100644 index a90a84dc451..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Sonicwall" - product: "Firewalls" - type: "Firewall" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/sonicwall/firewall/config/liblogparser.js - - ${path.home}/module/sonicwall/firewall/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/sonicwall/firewall/config/liblogparser.js b/x-pack/filebeat/module/sonicwall/firewall/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} n=%{fld2->} src=%{p0}"); - -var dup8 = match("MESSAGE#14:14:01/1_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface}:%{shost->} dst= %{p0}"); - -var dup9 = match("MESSAGE#14:14:01/1_1", "nwparser.p0", " %{saddr}:%{sport}:%{sinterface->} dst= %{p0}"); - -var dup10 = match("MESSAGE#14:14:01/2", "nwparser.p0", "%{daddr}:%{dport}:%{p0}"); - -var dup11 = date_time({ - dest: "event_time", - args: ["hdate","htime"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup12 = setc("eventcategory","1502010000"); - -var dup13 = setc("eventcategory","1502020000"); - -var dup14 = setc("eventcategory","1002010000"); - -var dup15 = match("MESSAGE#28:23:01/1_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} %{p0}"); - -var dup16 = match("MESSAGE#28:23:01/1_1", "nwparser.p0", "%{daddr->} %{p0}"); - -var dup17 = match("MESSAGE#28:23:01/2", "nwparser.p0", "%{p0}"); - -var dup18 = setf("hostip","hhostip"); - -var dup19 = setf("id","hid"); - -var dup20 = setf("serial_number","hserial_number"); - -var dup21 = setf("category","hcategory"); - -var dup22 = setf("severity","hseverity"); - -var dup23 = setc("eventcategory","1805010000"); - -var dup24 = call({ - dest: "nwparser.msg", - fn: RMQ, - args: [ - field("msg"), - ], -}); - -var dup25 = setc("eventcategory","1302000000"); - -var dup26 = match("MESSAGE#38:29:01/1_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} dst= %{p0}"); - -var dup27 = match("MESSAGE#38:29:01/1_1", "nwparser.p0", " %{saddr->} dst= %{p0}"); - -var dup28 = match("MESSAGE#38:29:01/2_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} "); - -var dup29 = match("MESSAGE#38:29:01/2_1", "nwparser.p0", "%{daddr->} "); - -var dup30 = setc("eventcategory","1401050100"); - -var dup31 = setc("eventcategory","1401030000"); - -var dup32 = match("MESSAGE#40:30:01/0", "nwparser.payload", "msg=\"%{action}\" n=%{fld->} src=%{p0}"); - -var dup33 = setc("eventcategory","1301020000"); - -var dup34 = match("MESSAGE#49:33:01/0", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{p0}"); - -var dup35 = match("MESSAGE#52:35:01/2_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}"); - -var dup36 = match_copy("MESSAGE#52:35:01/2_1", "nwparser.p0", "daddr"); - -var dup37 = match("MESSAGE#54:36:01/1_0", "nwparser.p0", "app=%{fld51->} appName=\"%{application}\" n=%{p0}"); - -var dup38 = match("MESSAGE#54:36:01/1_1", "nwparser.p0", "n=%{p0}"); - -var dup39 = match("MESSAGE#54:36:01/3_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} %{p0}"); - -var dup40 = match("MESSAGE#54:36:01/3_1", "nwparser.p0", "%{saddr->} %{p0}"); - -var dup41 = match("MESSAGE#54:36:01/4", "nwparser.p0", "dst= %{p0}"); - -var dup42 = match("MESSAGE#54:36:01/7_1", "nwparser.p0", "rule=%{rule}"); - -var dup43 = match("MESSAGE#54:36:01/7_2", "nwparser.p0", "proto=%{protocol}"); - -var dup44 = date_time({ - dest: "event_time", - args: ["date","time"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dN,dc(":"),dU,dc(":"),dO], - ], -}); - -var dup45 = match("MESSAGE#55:36:02/0", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src= %{p0}"); - -var dup46 = match("MESSAGE#55:36:02/1_1", "nwparser.p0", "%{saddr->} dst= %{p0}"); - -var dup47 = match_copy("MESSAGE#55:36:02/6", "nwparser.p0", "info"); - -var dup48 = match("MESSAGE#59:37:03/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} proto= %{p0}"); - -var dup49 = match("MESSAGE#59:37:03/3_1", "nwparser.p0", "%{dinterface->} proto= %{p0}"); - -var dup50 = match("MESSAGE#59:37:03/4", "nwparser.p0", "%{protocol->} npcs=%{info}"); - -var dup51 = match("MESSAGE#62:38:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src= %{p0}"); - -var dup52 = match("MESSAGE#63:38:02/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} type= %{p0}"); - -var dup53 = match("MESSAGE#63:38:02/3_1", "nwparser.p0", "%{dinterface->} type= %{p0}"); - -var dup54 = match("MESSAGE#64:38:03/0", "nwparser.payload", "msg=\"%{event_description}\"%{p0}"); - -var dup55 = match("MESSAGE#64:38:03/1_0", "nwparser.p0", " app=%{fld2->} appName=\"%{application}\"%{p0}"); - -var dup56 = match_copy("MESSAGE#64:38:03/1_1", "nwparser.p0", "p0"); - -var dup57 = match("MESSAGE#64:38:03/3_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} srcMac=%{p0}"); - -var dup58 = match("MESSAGE#64:38:03/3_1", "nwparser.p0", "%{daddr->} srcMac=%{p0}"); - -var dup59 = setc("ec_subject","NetworkComm"); - -var dup60 = setc("ec_activity","Deny"); - -var dup61 = setc("ec_theme","Communication"); - -var dup62 = setf("msg","$MSG"); - -var dup63 = setc("action","dropped"); - -var dup64 = setc("eventcategory","1608010000"); - -var dup65 = setc("eventcategory","1302010000"); - -var dup66 = setc("eventcategory","1301000000"); - -var dup67 = setc("eventcategory","1001000000"); - -var dup68 = setc("eventcategory","1003030000"); - -var dup69 = setc("eventcategory","1003050000"); - -var dup70 = setc("eventcategory","1103000000"); - -var dup71 = setc("eventcategory","1603110000"); - -var dup72 = setc("eventcategory","1605020000"); - -var dup73 = match("MESSAGE#126:89:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{p0}"); - -var dup74 = match("MESSAGE#135:97:01/0", "nwparser.payload", "n=%{fld1->} src= %{p0}"); - -var dup75 = match("MESSAGE#135:97:01/6_0", "nwparser.p0", "result=%{result->} dstname=%{p0}"); - -var dup76 = match("MESSAGE#135:97:01/6_1", "nwparser.p0", "dstname=%{p0}"); - -var dup77 = match("MESSAGE#137:97:03/0", "nwparser.payload", "sess=%{fld1->} n=%{fld2->} src= %{p0}"); - -var dup78 = setc("eventcategory","1801000000"); - -var dup79 = match("MESSAGE#141:97:07/1_1", "nwparser.p0", "%{dinterface->} srcMac=%{p0}"); - -var dup80 = match("MESSAGE#147:98:01/6_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} %{p0}"); - -var dup81 = match("MESSAGE#147:98:01/7_4", "nwparser.p0", "proto=%{protocol->} sent=%{sbytes}"); - -var dup82 = match("MESSAGE#148:98:06/0", "nwparser.payload", "msg=\"%{event_description}\" %{p0}"); - -var dup83 = match("MESSAGE#148:98:06/5_0", "nwparser.p0", "%{sinterface}:%{shost->} dst= %{p0}"); - -var dup84 = match("MESSAGE#148:98:06/5_1", "nwparser.p0", "%{sinterface->} dst= %{p0}"); - -var dup85 = match("MESSAGE#148:98:06/7_2", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} proto=%{p0}"); - -var dup86 = match("MESSAGE#148:98:06/9_3", "nwparser.p0", "sent=%{sbytes}"); - -var dup87 = match("MESSAGE#155:428/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{p0}"); - -var dup88 = setf("id","hfld1"); - -var dup89 = setc("eventcategory","1001020309"); - -var dup90 = setc("eventcategory","1303000000"); - -var dup91 = setc("eventcategory","1801010100"); - -var dup92 = setc("eventcategory","1604010000"); - -var dup93 = setc("eventcategory","1002020000"); - -var dup94 = match("MESSAGE#240:171:03/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} npcs= %{p0}"); - -var dup95 = match("MESSAGE#240:171:03/3_1", "nwparser.p0", "%{dinterface->} npcs= %{p0}"); - -var dup96 = match("MESSAGE#240:171:03/4", "nwparser.p0", "%{info}"); - -var dup97 = setc("eventcategory","1001010000"); - -var dup98 = match("MESSAGE#256:180:01/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} note= %{p0}"); - -var dup99 = match("MESSAGE#256:180:01/3_1", "nwparser.p0", "%{dinterface->} note= %{p0}"); - -var dup100 = match("MESSAGE#256:180:01/4", "nwparser.p0", "\"%{fld3}\" npcs=%{info}"); - -var dup101 = match("MESSAGE#260:194/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} sport=%{sport->} dport=%{dport->} %{p0}"); - -var dup102 = match("MESSAGE#260:194/1_1", "nwparser.p0", "rcvd=%{rbytes}"); - -var dup103 = match("MESSAGE#262:196/1_0", "nwparser.p0", "sent=%{sbytes->} cmd=%{p0}"); - -var dup104 = match("MESSAGE#262:196/1_1", "nwparser.p0", "rcvd=%{rbytes->} cmd=%{p0}"); - -var dup105 = match_copy("MESSAGE#262:196/2", "nwparser.p0", "method"); - -var dup106 = setc("eventcategory","1401060000"); - -var dup107 = setc("eventcategory","1804000000"); - -var dup108 = match("MESSAGE#280:261:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} usr=%{username->} src=%{p0}"); - -var dup109 = setc("eventcategory","1401070000"); - -var dup110 = match("MESSAGE#283:273/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld->} src=%{p0}"); - -var dup111 = setc("eventcategory","1801030000"); - -var dup112 = setc("eventcategory","1402020300"); - -var dup113 = match("MESSAGE#302:401/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} %{p0}"); - -var dup114 = match("MESSAGE#302:401/1_0", "nwparser.p0", "dstname=%{name}"); - -var dup115 = match_copy("MESSAGE#302:401/1_1", "nwparser.p0", "space"); - -var dup116 = setc("eventcategory","1402000000"); - -var dup117 = match("MESSAGE#313:446/3_0", "nwparser.p0", "%{protocol}/%{fld3->} fw_action=\"%{p0}"); - -var dup118 = match("MESSAGE#313:446/3_1", "nwparser.p0", "%{protocol->} fw_action=\"%{p0}"); - -var dup119 = match("MESSAGE#313:446/4", "nwparser.p0", "%{action}\""); - -var dup120 = setc("eventcategory","1803020000"); - -var dup121 = match("MESSAGE#318:522:01/4", "nwparser.p0", "proto=%{protocol->} npcs=%{info}"); - -var dup122 = match("MESSAGE#330:537:01/0", "nwparser.payload", "msg=\"%{action}\" f=%{fld1->} n=%{fld2->} src= %{p0}"); - -var dup123 = match_copy("MESSAGE#330:537:01/5_1", "nwparser.p0", "rbytes"); - -var dup124 = match("MESSAGE#332:537:08/1_0", "nwparser.p0", " app=%{fld51->} appName=\"%{application}\"n=%{p0}"); - -var dup125 = match("MESSAGE#332:537:08/1_1", "nwparser.p0", " app=%{fld51->} sess=\"%{fld4}\" n=%{p0}"); - -var dup126 = match("MESSAGE#332:537:08/1_2", "nwparser.p0", " app=%{fld51}n=%{p0}"); - -var dup127 = match("MESSAGE#332:537:08/2_0", "nwparser.p0", "%{fld1->} usr=\"%{username}\"src=%{p0}"); - -var dup128 = match("MESSAGE#332:537:08/2_1", "nwparser.p0", "%{fld1}src=%{p0}"); - -var dup129 = match("MESSAGE#332:537:08/6_0", "nwparser.p0", "%{sbytes->} rcvd=%{rbytes->} spkt=%{p0}"); - -var dup130 = match("MESSAGE#332:537:08/6_1", "nwparser.p0", "%{sbytes->} spkt=%{p0}"); - -var dup131 = match("MESSAGE#332:537:08/7_1", "nwparser.p0", "%{fld3->} rpkt=%{fld6->} cdur=%{fld7}"); - -var dup132 = match("MESSAGE#332:537:08/7_3", "nwparser.p0", "%{fld3->} cdur=%{fld7}"); - -var dup133 = match_copy("MESSAGE#332:537:08/7_4", "nwparser.p0", "fld3"); - -var dup134 = match("MESSAGE#336:537:04/0", "nwparser.payload", "msg=\"%{action}\" sess=%{fld1->} n=%{fld2->} src= %{p0}"); - -var dup135 = match("MESSAGE#336:537:04/3_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} proto= %{p0}"); - -var dup136 = match("MESSAGE#336:537:04/3_1", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} proto= %{p0}"); - -var dup137 = match("MESSAGE#336:537:04/3_2", "nwparser.p0", "%{daddr->} proto= %{p0}"); - -var dup138 = match("MESSAGE#338:537:10/1_0", "nwparser.p0", "usr=\"%{username}\" %{p0}"); - -var dup139 = match("MESSAGE#338:537:10/2", "nwparser.p0", "src=%{p0}"); - -var dup140 = match("MESSAGE#338:537:10/3_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} dst=%{p0}"); - -var dup141 = match("MESSAGE#338:537:10/3_1", "nwparser.p0", "%{saddr->} dst=%{p0}"); - -var dup142 = match("MESSAGE#338:537:10/6_0", "nwparser.p0", "npcs=%{info}"); - -var dup143 = match("MESSAGE#338:537:10/6_1", "nwparser.p0", "cdur=%{fld12}"); - -var dup144 = setc("event_description","Connection Closed"); - -var dup145 = setc("eventcategory","1801020000"); - -var dup146 = setc("ec_activity","Permit"); - -var dup147 = setc("action","allowed"); - -var dup148 = match("MESSAGE#355:598:01/0", "nwparser.payload", "msg=%{msg->} sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst= %{daddr}:%{dport}:%{p0}"); - -var dup149 = match("MESSAGE#361:606/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{p0}"); - -var dup150 = match("MESSAGE#361:606/1_0", "nwparser.p0", "%{dport}:%{dinterface->} srcMac=%{p0}"); - -var dup151 = match("MESSAGE#361:606/1_1", "nwparser.p0", "%{dport->} srcMac=%{p0}"); - -var dup152 = match("MESSAGE#361:606/2", "nwparser.p0", "%{} %{smacaddr->} dstMac=%{dmacaddr}proto=%{p0}"); - -var dup153 = match("MESSAGE#362:608/4", "nwparser.p0", "%{daddr}:%{p0}"); - -var dup154 = match("MESSAGE#362:608/5_1", "nwparser.p0", "%{dport}:%{dinterface}"); - -var dup155 = match_copy("MESSAGE#362:608/5_2", "nwparser.p0", "dport"); - -var dup156 = setc("eventcategory","1001030500"); - -var dup157 = match("MESSAGE#366:712:02/0", "nwparser.payload", "msg=\"%{action}\" %{p0}"); - -var dup158 = match("MESSAGE#366:712:02/1_0", "nwparser.p0", "app=%{fld21->} appName=\"%{application}\" n=%{p0}"); - -var dup159 = match("MESSAGE#366:712:02/2", "nwparser.p0", "%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{p0}"); - -var dup160 = match("MESSAGE#366:712:02/3_0", "nwparser.p0", "%{smacaddr->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var dup161 = match("MESSAGE#366:712:02/3_1", "nwparser.p0", "%{smacaddr->} proto=%{p0}"); - -var dup162 = match("MESSAGE#366:712:02/4_0", "nwparser.p0", "%{protocol}/%{fld3->} fw_action=%{p0}"); - -var dup163 = match("MESSAGE#366:712:02/4_1", "nwparser.p0", "%{protocol->} fw_action=%{p0}"); - -var dup164 = match_copy("MESSAGE#366:712:02/5", "nwparser.p0", "fld51"); - -var dup165 = setc("eventcategory","1801010000"); - -var dup166 = match("MESSAGE#391:908/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld2->} src=%{saddr}:%{sport}:%{p0}"); - -var dup167 = match("MESSAGE#391:908/1_1", "nwparser.p0", "%{sinterface->} dst=%{p0}"); - -var dup168 = match("MESSAGE#391:908/2", "nwparser.p0", "%{} %{daddr}:%{p0}"); - -var dup169 = match("MESSAGE#391:908/4", "nwparser.p0", "%{} %{smacaddr->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var dup170 = setc("eventcategory","1003010000"); - -var dup171 = setc("eventcategory","1609000000"); - -var dup172 = setc("eventcategory","1204000000"); - -var dup173 = setc("eventcategory","1602000000"); - -var dup174 = match("MESSAGE#439:1199/2", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} npcs=%{info}"); - -var dup175 = setc("eventcategory","1803000000"); - -var dup176 = match("MESSAGE#444:1198/0", "nwparser.payload", "msg=\"%{msg}\" note=\"%{fld3}\" sess=%{fld1->} n=%{fld2->} src=%{p0}"); - -var dup177 = match("MESSAGE#461:1220/3_0", "nwparser.p0", "%{dport}:%{dinterface->} note=%{p0}"); - -var dup178 = match("MESSAGE#461:1220/3_1", "nwparser.p0", "%{dport->} note=%{p0}"); - -var dup179 = match("MESSAGE#461:1220/4", "nwparser.p0", "%{}\"%{info}\" fw_action=\"%{action}\""); - -var dup180 = match("MESSAGE#471:1369/1_0", "nwparser.p0", "%{protocol}/%{fld3}fw_action=\"%{p0}"); - -var dup181 = match("MESSAGE#471:1369/1_1", "nwparser.p0", "%{protocol}fw_action=\"%{p0}"); - -var dup182 = linear_select([ - dup8, - dup9, -]); - -var dup183 = linear_select([ - dup15, - dup16, -]); - -var dup184 = match("MESSAGE#403:24:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} note=\"%{event_description}\"", processor_chain([ - dup1, - dup24, -])); - -var dup185 = linear_select([ - dup26, - dup27, -]); - -var dup186 = linear_select([ - dup28, - dup29, -]); - -var dup187 = linear_select([ - dup35, - dup36, -]); - -var dup188 = linear_select([ - dup37, - dup38, -]); - -var dup189 = linear_select([ - dup39, - dup40, -]); - -var dup190 = linear_select([ - dup26, - dup46, -]); - -var dup191 = linear_select([ - dup48, - dup49, -]); - -var dup192 = linear_select([ - dup52, - dup53, -]); - -var dup193 = linear_select([ - dup55, - dup56, -]); - -var dup194 = linear_select([ - dup57, - dup58, -]); - -var dup195 = match("MESSAGE#116:82:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}", processor_chain([ - dup70, -])); - -var dup196 = match("MESSAGE#118:83:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}", processor_chain([ - dup5, -])); - -var dup197 = linear_select([ - dup75, - dup76, -]); - -var dup198 = linear_select([ - dup83, - dup84, -]); - -var dup199 = match("MESSAGE#168:111:01", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} dstname=%{shost}", processor_chain([ - dup1, -])); - -var dup200 = linear_select([ - dup94, - dup95, -]); - -var dup201 = match("MESSAGE#253:178", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport}", processor_chain([ - dup5, -])); - -var dup202 = linear_select([ - dup98, - dup99, -]); - -var dup203 = linear_select([ - dup86, - dup102, -]); - -var dup204 = linear_select([ - dup103, - dup104, -]); - -var dup205 = match("MESSAGE#277:252", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup93, -])); - -var dup206 = match("MESSAGE#293:355", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport}", processor_chain([ - dup93, -])); - -var dup207 = match("MESSAGE#295:356", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport}", processor_chain([ - dup1, -])); - -var dup208 = match("MESSAGE#298:358", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport}", processor_chain([ - dup1, -])); - -var dup209 = match("MESSAGE#414:371:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr->} note=\"%{event_description}\"", processor_chain([ - dup1, - dup24, -])); - -var dup210 = linear_select([ - dup114, - dup115, -]); - -var dup211 = linear_select([ - dup117, - dup118, -]); - -var dup212 = linear_select([ - dup43, - dup42, -]); - -var dup213 = linear_select([ - dup8, - dup27, -]); - -var dup214 = linear_select([ - dup8, - dup26, - dup46, -]); - -var dup215 = linear_select([ - dup80, - dup15, - dup16, -]); - -var dup216 = linear_select([ - dup124, - dup125, - dup126, - dup38, -]); - -var dup217 = linear_select([ - dup127, - dup128, -]); - -var dup218 = linear_select([ - dup129, - dup130, -]); - -var dup219 = linear_select([ - dup135, - dup136, - dup137, -]); - -var dup220 = linear_select([ - dup138, - dup56, -]); - -var dup221 = linear_select([ - dup140, - dup141, -]); - -var dup222 = linear_select([ - dup142, - dup143, -]); - -var dup223 = linear_select([ - dup150, - dup151, -]); - -var dup224 = match("MESSAGE#365:710", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport}", processor_chain([ - dup156, -])); - -var dup225 = linear_select([ - dup158, - dup38, -]); - -var dup226 = linear_select([ - dup160, - dup161, -]); - -var dup227 = linear_select([ - dup162, - dup163, -]); - -var dup228 = match("MESSAGE#375:766", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype}", processor_chain([ - dup5, -])); - -var dup229 = match("MESSAGE#377:860:01", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{ntype}", processor_chain([ - dup5, -])); - -var dup230 = match("MESSAGE#393:914", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport}:%{sinterface}:%{host->} dst=%{dtransaddr}:%{dtransport}:%{dinterface}:%{shost}", processor_chain([ - dup5, - dup24, -])); - -var dup231 = match("MESSAGE#399:994", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} usr=%{username->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} note=\"%{event_description}\"", processor_chain([ - dup1, - dup24, -])); - -var dup232 = match("MESSAGE#406:1110", "nwparser.payload", "msg=\"%{msg}\" %{space->} n=%{fld1}", processor_chain([ - dup1, - dup24, -])); - -var dup233 = match("MESSAGE#420:614", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} fw_action=\"%{action}\"", processor_chain([ - dup171, - dup44, -])); - -var dup234 = match("MESSAGE#454:654", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2}", processor_chain([ - dup1, -])); - -var dup235 = linear_select([ - dup177, - dup178, -]); - -var dup236 = linear_select([ - dup180, - dup181, -]); - -var dup237 = match("MESSAGE#482:796", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} fw_action=\"%{action}\"", processor_chain([ - dup1, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var dup238 = all_match({ - processors: [ - dup32, - dup185, - dup186, - ], - on_success: processor_chain([ - dup31, - ]), -}); - -var dup239 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup91, - ]), -}); - -var dup240 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup67, - ]), -}); - -var dup241 = all_match({ - processors: [ - dup101, - dup203, - ], - on_success: processor_chain([ - dup67, - ]), -}); - -var dup242 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup106, - ]), -}); - -var dup243 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup31, - ]), -}); - -var dup244 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup30, - ]), -}); - -var dup245 = all_match({ - processors: [ - dup108, - dup185, - dup187, - ], - on_success: processor_chain([ - dup109, - ]), -}); - -var dup246 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - dup112, - ]), -}); - -var dup247 = all_match({ - processors: [ - dup113, - dup210, - ], - on_success: processor_chain([ - dup93, - ]), -}); - -var dup248 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - dup116, - ]), -}); - -var dup249 = all_match({ - processors: [ - dup51, - dup189, - dup41, - dup187, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var dup250 = all_match({ - processors: [ - dup73, - dup185, - dup183, - dup43, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var dup251 = all_match({ - processors: [ - dup157, - dup225, - dup159, - dup226, - dup227, - dup164, - ], - on_success: processor_chain([ - dup156, - dup59, - dup60, - dup61, - dup62, - dup44, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var dup252 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup202, - dup100, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var dup253 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var hdr1 = match("HEADER#0:0001", "message", "id=%{hfld1->} sn=%{hserial_number->} time=\"%{date->} %{time}\" fw=%{hhostip->} pri=%{hseverity->} c=%{hcategory->} m=%{messageid->} %{payload}", processor_chain([ - setc("header_id","0001"), -])); - -var hdr2 = match("HEADER#1:0002", "message", "id=%{hfld1->} sn=%{hserial_number->} time=\"%{date->} %{time}\" fw=%{hhostip->} pri=%{hseverity->} %{messageid}= %{p0}", processor_chain([ - setc("header_id","0002"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("messageid"), - constant("= "), - field("p0"), - ], - }), -])); - -var hdr3 = match("HEADER#2:0003", "message", "id=%{hfld1->} sn=%{hserial_number->} time=\"%{hdate->} %{htime}\" fw=%{hhostip->} pri=%{hseverity->} c=%{hcategory->} m=%{messageid->} %{payload}", processor_chain([ - setc("header_id","0003"), -])); - -var hdr4 = match("HEADER#3:0004", "message", "%{hfld20->} id=%{hfld1->} sn=%{hserial_number->} time=\"%{hdate->} %{htime}\" fw=%{hhostip->} pri=%{hseverity->} c=%{hcategory->} m=%{messageid->} %{payload}", processor_chain([ - setc("header_id","0004"), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, -]); - -var part1 = match("MESSAGE#0:4", "nwparser.payload", "SonicWALL activated%{}", processor_chain([ - dup1, -])); - -var msg1 = msg("4", part1); - -var part2 = match("MESSAGE#1:5", "nwparser.payload", "Log Cleared%{}", processor_chain([ - dup1, -])); - -var msg2 = msg("5", part2); - -var part3 = match("MESSAGE#2:5:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1}", processor_chain([ - dup1, -])); - -var msg3 = msg("5:01", part3); - -var select2 = linear_select([ - msg2, - msg3, -]); - -var part4 = match("MESSAGE#3:6", "nwparser.payload", "Log successfully sent via email%{}", processor_chain([ - dup1, -])); - -var msg4 = msg("6", part4); - -var part5 = match("MESSAGE#4:6:01", "nwparser.payload", "msg=\"Log successfully sent via email\" n=%{fld1}", processor_chain([ - dup1, -])); - -var msg5 = msg("6:01", part5); - -var select3 = linear_select([ - msg4, - msg5, -]); - -var part6 = match("MESSAGE#5:7", "nwparser.payload", "Log full; deactivating SonicWALL%{}", processor_chain([ - dup2, -])); - -var msg6 = msg("7", part6); - -var part7 = match("MESSAGE#6:8", "nwparser.payload", "New Filter list loaded%{}", processor_chain([ - dup3, -])); - -var msg7 = msg("8", part7); - -var part8 = match("MESSAGE#7:9", "nwparser.payload", "No new Filter list available%{}", processor_chain([ - dup4, -])); - -var msg8 = msg("9", part8); - -var part9 = match("MESSAGE#8:10", "nwparser.payload", "Problem loading the Filter list; check Filter settings%{}", processor_chain([ - dup4, -])); - -var msg9 = msg("10", part9); - -var part10 = match("MESSAGE#9:11", "nwparser.payload", "Problem loading the Filter list; check your DNS server%{}", processor_chain([ - dup4, -])); - -var msg10 = msg("11", part10); - -var part11 = match("MESSAGE#10:12", "nwparser.payload", "Problem sending log email; check log settings%{}", processor_chain([ - dup5, -])); - -var msg11 = msg("12", part11); - -var part12 = match("MESSAGE#11:12:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1}", processor_chain([ - dup5, -])); - -var msg12 = msg("12:01", part12); - -var select4 = linear_select([ - msg11, - msg12, -]); - -var part13 = match("MESSAGE#12:13", "nwparser.payload", "Restarting SonicWALL; dumping log to email%{}", processor_chain([ - dup1, -])); - -var msg13 = msg("13", part13); - -var part14 = match("MESSAGE#13:14/0_0", "nwparser.payload", "msg=\"Web site access denied\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} dstname=%{dhost->} arg=%{fld2->} code=%{icmpcode}"); - -var part15 = match("MESSAGE#13:14/0_1", "nwparser.payload", "Web site blocked%{}"); - -var select5 = linear_select([ - part14, - part15, -]); - -var all1 = all_match({ - processors: [ - select5, - ], - on_success: processor_chain([ - dup6, - setc("action","Web site access denied"), - ]), -}); - -var msg14 = msg("14", all1); - -var part16 = match("MESSAGE#14:14:01/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} code= %{p0}"); - -var part17 = match("MESSAGE#14:14:01/3_1", "nwparser.p0", "%{dinterface->} code= %{p0}"); - -var select6 = linear_select([ - part16, - part17, -]); - -var part18 = match("MESSAGE#14:14:01/4", "nwparser.p0", "%{fld3->} Category=%{fld4->} npcs=%{info}"); - -var all2 = all_match({ - processors: [ - dup7, - dup182, - dup10, - select6, - part18, - ], - on_success: processor_chain([ - dup6, - ]), -}); - -var msg15 = msg("14:01", all2); - -var part19 = match("MESSAGE#15:14:02", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1->} sess=\"%{fld2}\" n=%{fld3->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} dstname=%{name->} arg=%{param->} code=%{resultcode->} Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup6, - dup11, -])); - -var msg16 = msg("14:02", part19); - -var part20 = match("MESSAGE#16:14:03", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1}sess=\"%{fld2}\" n=%{fld3}usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}dstname=%{dhost}arg=%{param}code=%{resultcode}Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup6, - dup11, -])); - -var msg17 = msg("14:03", part20); - -var part21 = match("MESSAGE#17:14:04", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1->} sess=\"%{fld2}\" n=%{fld3->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} dstname=%{name->} arg=%{param->} code=%{resultcode->} Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup6, - dup11, -])); - -var msg18 = msg("14:04", part21); - -var part22 = match("MESSAGE#18:14:05", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1->} sess=\"%{fld2}\" n=%{fld3->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr}dstMac=%{dmacaddr->} proto=%{protocol->} dstname=%{dhost->} arg=%{param->} code=%{resultcode->} Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup6, - dup11, -])); - -var msg19 = msg("14:05", part22); - -var select7 = linear_select([ - msg14, - msg15, - msg16, - msg17, - msg18, - msg19, -]); - -var part23 = match("MESSAGE#19:15", "nwparser.payload", "Newsgroup blocked%{}", processor_chain([ - dup12, -])); - -var msg20 = msg("15", part23); - -var part24 = match("MESSAGE#20:16", "nwparser.payload", "Web site accessed%{}", processor_chain([ - dup13, -])); - -var msg21 = msg("16", part24); - -var part25 = match("MESSAGE#21:17", "nwparser.payload", "Newsgroup accessed%{}", processor_chain([ - dup13, -])); - -var msg22 = msg("17", part25); - -var part26 = match("MESSAGE#22:18", "nwparser.payload", "ActiveX blocked%{}", processor_chain([ - dup12, -])); - -var msg23 = msg("18", part26); - -var part27 = match("MESSAGE#23:19", "nwparser.payload", "Java blocked%{}", processor_chain([ - dup12, -])); - -var msg24 = msg("19", part27); - -var part28 = match("MESSAGE#24:20", "nwparser.payload", "ActiveX or Java archive blocked%{}", processor_chain([ - dup12, -])); - -var msg25 = msg("20", part28); - -var part29 = match("MESSAGE#25:21", "nwparser.payload", "Cookie removed%{}", processor_chain([ - dup1, -])); - -var msg26 = msg("21", part29); - -var part30 = match("MESSAGE#26:22", "nwparser.payload", "Ping of death blocked%{}", processor_chain([ - dup14, -])); - -var msg27 = msg("22", part30); - -var part31 = match("MESSAGE#27:23", "nwparser.payload", "IP spoof detected%{}", processor_chain([ - dup14, -])); - -var msg28 = msg("23", part31); - -var part32 = match("MESSAGE#28:23:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst= %{p0}"); - -var part33 = match("MESSAGE#28:23:01/3_0", "nwparser.p0", "- MAC address: %{p0}"); - -var part34 = match("MESSAGE#28:23:01/3_1", "nwparser.p0", "mac= %{p0}"); - -var select8 = linear_select([ - part33, - part34, -]); - -var part35 = match("MESSAGE#28:23:01/4", "nwparser.p0", "%{smacaddr}"); - -var all3 = all_match({ - processors: [ - part32, - dup183, - dup17, - select8, - part35, - ], - on_success: processor_chain([ - dup14, - ]), -}); - -var msg29 = msg("23:01", all3); - -var part36 = match("MESSAGE#29:23:02", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} - MAC address: %{smacaddr}", processor_chain([ - dup14, -])); - -var msg30 = msg("23:02", part36); - -var part37 = match("MESSAGE#30:23:03/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst= %{daddr}:%{dport}:%{p0}"); - -var part38 = match("MESSAGE#30:23:03/1_0", "nwparser.p0", "%{dinterface}:%{dhost->} srcMac= %{p0}"); - -var part39 = match("MESSAGE#30:23:03/1_1", "nwparser.p0", "%{dinterface->} srcMac= %{p0}"); - -var select9 = linear_select([ - part38, - part39, -]); - -var part40 = match("MESSAGE#30:23:03/2", "nwparser.p0", "%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol}"); - -var all4 = all_match({ - processors: [ - part37, - select9, - part40, - ], - on_success: processor_chain([ - dup14, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg31 = msg("23:03", all4); - -var select10 = linear_select([ - msg28, - msg29, - msg30, - msg31, -]); - -var part41 = match("MESSAGE#31:24", "nwparser.payload", "Illegal LAN address in use%{}", processor_chain([ - dup23, -])); - -var msg32 = msg("24", part41); - -var msg33 = msg("24:01", dup184); - -var select11 = linear_select([ - msg32, - msg33, -]); - -var part42 = match("MESSAGE#32:25", "nwparser.payload", "Possible SYN flood attack%{}", processor_chain([ - dup14, -])); - -var msg34 = msg("25", part42); - -var part43 = match("MESSAGE#33:26", "nwparser.payload", "Probable SYN flood attack%{}", processor_chain([ - dup14, -])); - -var msg35 = msg("26", part43); - -var part44 = match("MESSAGE#34:27", "nwparser.payload", "Land Attack Dropped%{}", processor_chain([ - dup14, -])); - -var msg36 = msg("27", part44); - -var part45 = match("MESSAGE#35:28", "nwparser.payload", "Fragmented Packet Dropped%{}", processor_chain([ - dup14, -])); - -var msg37 = msg("28", part45); - -var part46 = match("MESSAGE#36:28:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol}", processor_chain([ - dup14, -])); - -var msg38 = msg("28:01", part46); - -var select12 = linear_select([ - msg37, - msg38, -]); - -var part47 = match("MESSAGE#37:29", "nwparser.payload", "Successful administrator login%{}", processor_chain([ - dup25, -])); - -var msg39 = msg("29", part47); - -var part48 = match("MESSAGE#38:29:01/0", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} usr=%{username->} src=%{p0}"); - -var all5 = all_match({ - processors: [ - part48, - dup185, - dup186, - ], - on_success: processor_chain([ - dup30, - ]), -}); - -var msg40 = msg("29:01", all5); - -var select13 = linear_select([ - msg39, - msg40, -]); - -var part49 = match("MESSAGE#39:30", "nwparser.payload", "Administrator login failed - incorrect password%{}", processor_chain([ - dup31, -])); - -var msg41 = msg("30", part49); - -var msg42 = msg("30:01", dup238); - -var select14 = linear_select([ - msg41, - msg42, -]); - -var part50 = match("MESSAGE#41:31", "nwparser.payload", "Successful user login%{}", processor_chain([ - dup25, -])); - -var msg43 = msg("31", part50); - -var all6 = all_match({ - processors: [ - dup32, - dup185, - dup186, - ], - on_success: processor_chain([ - dup25, - ]), -}); - -var msg44 = msg("31:01", all6); - -var part51 = match("MESSAGE#43:31:02", "nwparser.payload", "msg=\"%{msg}\" dur=%{duration->} n=%{fld1->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} proto=%{protocol->} note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - dup25, - dup11, -])); - -var msg45 = msg("31:02", part51); - -var part52 = match("MESSAGE#44:31:03", "nwparser.payload", "msg=\"%{msg}\" dur=%{duration}n=%{fld1}usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost}dst=%{daddr}:%{dport}:%{dinterface}proto=%{protocol}note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - dup25, - dup11, -])); - -var msg46 = msg("31:03", part52); - -var part53 = match("MESSAGE#45:31:04", "nwparser.payload", "msg=\"%{msg}\" dur=%{duration->} n=%{fld1->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol->} note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - dup25, - dup11, -])); - -var msg47 = msg("31:04", part53); - -var select15 = linear_select([ - msg43, - msg44, - msg45, - msg46, - msg47, -]); - -var part54 = match("MESSAGE#46:32", "nwparser.payload", "User login failed - incorrect password%{}", processor_chain([ - dup31, -])); - -var msg48 = msg("32", part54); - -var msg49 = msg("32:01", dup238); - -var select16 = linear_select([ - msg48, - msg49, -]); - -var part55 = match("MESSAGE#48:33", "nwparser.payload", "Unknown user attempted to log in%{}", processor_chain([ - dup33, -])); - -var msg50 = msg("33", part55); - -var all7 = all_match({ - processors: [ - dup34, - dup185, - dup186, - ], - on_success: processor_chain([ - dup31, - ]), -}); - -var msg51 = msg("33:01", all7); - -var select17 = linear_select([ - msg50, - msg51, -]); - -var part56 = match("MESSAGE#50:34", "nwparser.payload", "Login screen timed out%{}", processor_chain([ - dup5, -])); - -var msg52 = msg("34", part56); - -var part57 = match("MESSAGE#51:35", "nwparser.payload", "Attempted administrator login from WAN%{}", processor_chain([ - setc("eventcategory","1401040000"), -])); - -var msg53 = msg("35", part57); - -var all8 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - setc("eventcategory","1401050200"), - ]), -}); - -var msg54 = msg("35:01", all8); - -var select18 = linear_select([ - msg53, - msg54, -]); - -var part58 = match("MESSAGE#53:36", "nwparser.payload", "TCP connection dropped%{}", processor_chain([ - dup5, -])); - -var msg55 = msg("36", part58); - -var part59 = match("MESSAGE#54:36:01/0", "nwparser.payload", "msg=\"%{msg}\" %{p0}"); - -var part60 = match("MESSAGE#54:36:01/2", "nwparser.p0", "%{fld1->} src= %{p0}"); - -var part61 = match("MESSAGE#54:36:01/7_0", "nwparser.p0", "srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} fw_action=\"%{action}\""); - -var select19 = linear_select([ - part61, - dup42, - dup43, -]); - -var all9 = all_match({ - processors: [ - part59, - dup188, - part60, - dup189, - dup41, - dup183, - dup17, - select19, - ], - on_success: processor_chain([ - dup5, - dup44, - ]), -}); - -var msg56 = msg("36:01", all9); - -var part62 = match("MESSAGE#55:36:02/5_0", "nwparser.p0", "rule=%{rule->} npcs=%{p0}"); - -var part63 = match("MESSAGE#55:36:02/5_1", "nwparser.p0", "proto=%{protocol->} npcs=%{p0}"); - -var select20 = linear_select([ - part62, - part63, -]); - -var all10 = all_match({ - processors: [ - dup45, - dup190, - dup17, - dup183, - dup17, - select20, - dup47, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg57 = msg("36:02", all10); - -var select21 = linear_select([ - msg55, - msg56, - msg57, -]); - -var part64 = match("MESSAGE#56:37", "nwparser.payload", "UDP packet dropped%{}", processor_chain([ - dup5, -])); - -var msg58 = msg("37", part64); - -var part65 = match("MESSAGE#57:37:01/0", "nwparser.payload", "msg=\"UDP packet dropped\" %{p0}"); - -var part66 = match("MESSAGE#57:37:01/2", "nwparser.p0", "%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{p0}"); - -var part67 = match("MESSAGE#57:37:01/3_0", "nwparser.p0", "%{dport}proto=%{protocol->} fw_action=\"%{fld3}\""); - -var part68 = match("MESSAGE#57:37:01/3_1", "nwparser.p0", "%{dport}rule=%{rule}"); - -var select22 = linear_select([ - part67, - part68, -]); - -var all11 = all_match({ - processors: [ - part65, - dup188, - part66, - select22, - ], - on_success: processor_chain([ - dup5, - dup44, - ]), -}); - -var msg59 = msg("37:01", all11); - -var part69 = match("MESSAGE#58:37:02", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} rule=%{rule}", processor_chain([ - dup5, -])); - -var msg60 = msg("37:02", part69); - -var all12 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup191, - dup50, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg61 = msg("37:03", all12); - -var part70 = match("MESSAGE#60:37:04", "nwparser.payload", "msg=\"%{msg}\" sess=\"%{fld1}\" n=%{fld2->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} fw_action=\"%{action}\"", processor_chain([ - dup5, - dup11, -])); - -var msg62 = msg("37:04", part70); - -var select23 = linear_select([ - msg58, - msg59, - msg60, - msg61, - msg62, -]); - -var part71 = match("MESSAGE#61:38", "nwparser.payload", "ICMP packet dropped%{}", processor_chain([ - dup5, -])); - -var msg63 = msg("38", part71); - -var part72 = match("MESSAGE#62:38:01/5_0", "nwparser.p0", "type=%{type->} code=%{code}"); - -var select24 = linear_select([ - part72, - dup42, -]); - -var all13 = all_match({ - processors: [ - dup51, - dup189, - dup41, - dup183, - dup17, - select24, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg64 = msg("38:01", all13); - -var part73 = match("MESSAGE#63:38:02/4", "nwparser.p0", "%{fld3->} icmpCode=%{fld4->} npcs=%{info}"); - -var all14 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup192, - part73, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg65 = msg("38:02", all14); - -var part74 = match("MESSAGE#64:38:03/2", "nwparser.p0", "%{}n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{p0}"); - -var part75 = match("MESSAGE#64:38:03/4", "nwparser.p0", "%{} %{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} type=%{icmptype->} icmpCode=%{icmpcode->} fw_action=\"%{action}\""); - -var all15 = all_match({ - processors: [ - dup54, - dup193, - part74, - dup194, - part75, - ], - on_success: processor_chain([ - dup5, - dup11, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg66 = msg("38:03", all15); - -var select25 = linear_select([ - msg63, - msg64, - msg65, - msg66, -]); - -var part76 = match("MESSAGE#65:39", "nwparser.payload", "PPTP packet dropped%{}", processor_chain([ - dup5, -])); - -var msg67 = msg("39", part76); - -var part77 = match("MESSAGE#66:40", "nwparser.payload", "IPSec packet dropped%{}", processor_chain([ - dup5, -])); - -var msg68 = msg("40", part77); - -var part78 = match("MESSAGE#67:41:01", "nwparser.payload", "msg=\"%{event_description}dropped\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{fld2->} dst=%{daddr}:%{dport}:%{dinterface}:%{fld3->} note=\"IP Protocol: %{dclass_counter1}\"", processor_chain([ - dup5, - dup59, - dup60, - dup61, - dup62, - dup11, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg69 = msg("41:01", part78); - -var part79 = match("MESSAGE#68:41:02", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport}:%{sinterface->} dst=%{dtransaddr}:%{dtransport}::%{dinterface}", processor_chain([ - dup5, -])); - -var msg70 = msg("41:02", part79); - -var part80 = match("MESSAGE#69:41:03", "nwparser.payload", "Unknown protocol dropped%{}", processor_chain([ - dup5, -])); - -var msg71 = msg("41:03", part80); - -var select26 = linear_select([ - msg69, - msg70, - msg71, -]); - -var part81 = match("MESSAGE#70:42", "nwparser.payload", "IPSec packet dropped; waiting for pending IPSec connection%{}", processor_chain([ - dup5, -])); - -var msg72 = msg("42", part81); - -var part82 = match("MESSAGE#71:43", "nwparser.payload", "IPSec connection interrupt%{}", processor_chain([ - dup5, -])); - -var msg73 = msg("43", part82); - -var part83 = match("MESSAGE#72:44", "nwparser.payload", "NAT could not remap incoming packet%{}", processor_chain([ - dup5, -])); - -var msg74 = msg("44", part83); - -var part84 = match("MESSAGE#73:45", "nwparser.payload", "ARP timeout%{}", processor_chain([ - dup5, -])); - -var msg75 = msg("45", part84); - -var part85 = match("MESSAGE#74:45:01", "nwparser.payload", "msg=\"ARP timeout\" n=%{fld1->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup5, -])); - -var msg76 = msg("45:01", part85); - -var part86 = match("MESSAGE#75:45:02", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src=%{saddr->} dst=%{daddr->} npcs=%{info}", processor_chain([ - dup5, -])); - -var msg77 = msg("45:02", part86); - -var select27 = linear_select([ - msg75, - msg76, - msg77, -]); - -var part87 = match("MESSAGE#76:46:01", "nwparser.payload", "msg=\"%{event_description}dropped\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{fld2->} dst=%{daddr}:%{dport}:%{dinterface}:%{fld3->} proto=%{protocol}/%{fld4}", processor_chain([ - dup5, - dup59, - dup60, - dup61, - dup62, - dup11, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg78 = msg("46:01", part87); - -var part88 = match("MESSAGE#77:46:02", "nwparser.payload", "msg=\"Broadcast packet dropped\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol}", processor_chain([ - dup5, -])); - -var msg79 = msg("46:02", part88); - -var part89 = match("MESSAGE#78:46", "nwparser.payload", "Broadcast packet dropped%{}", processor_chain([ - dup5, -])); - -var msg80 = msg("46", part89); - -var part90 = match("MESSAGE#79:46:03/0", "nwparser.payload", "msg=\"Broadcast packet dropped\" sess=%{fld1->} n=%{fld2->} src=%{p0}"); - -var all16 = all_match({ - processors: [ - part90, - dup182, - dup10, - dup191, - dup50, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg81 = msg("46:03", all16); - -var select28 = linear_select([ - msg78, - msg79, - msg80, - msg81, -]); - -var part91 = match("MESSAGE#80:47", "nwparser.payload", "No ICMP redirect sent%{}", processor_chain([ - dup5, -])); - -var msg82 = msg("47", part91); - -var part92 = match("MESSAGE#81:48", "nwparser.payload", "Out-of-order command packet dropped%{}", processor_chain([ - dup5, -])); - -var msg83 = msg("48", part92); - -var part93 = match("MESSAGE#82:49", "nwparser.payload", "Failure to add data channel%{}", processor_chain([ - dup5, -])); - -var msg84 = msg("49", part93); - -var part94 = match("MESSAGE#83:50", "nwparser.payload", "RealAudio decode failure%{}", processor_chain([ - dup5, -])); - -var msg85 = msg("50", part94); - -var part95 = match("MESSAGE#84:51", "nwparser.payload", "Duplicate packet dropped%{}", processor_chain([ - dup5, -])); - -var msg86 = msg("51", part95); - -var part96 = match("MESSAGE#85:52", "nwparser.payload", "No HOST tag found in HTTP request%{}", processor_chain([ - dup5, -])); - -var msg87 = msg("52", part96); - -var part97 = match("MESSAGE#86:53", "nwparser.payload", "The cache is full; too many open connections; some will be dropped%{}", processor_chain([ - dup2, -])); - -var msg88 = msg("53", part97); - -var part98 = match("MESSAGE#87:58", "nwparser.payload", "License exceeded: Connection dropped because too many IP addresses are in use on your LAN%{}", processor_chain([ - dup64, -])); - -var msg89 = msg("58", part98); - -var part99 = match("MESSAGE#88:60", "nwparser.payload", "Access to Proxy Server Blocked%{}", processor_chain([ - dup12, -])); - -var msg90 = msg("60", part99); - -var part100 = match("MESSAGE#89:61", "nwparser.payload", "Diagnostic Code E%{}", processor_chain([ - dup1, -])); - -var msg91 = msg("61", part100); - -var part101 = match("MESSAGE#90:62", "nwparser.payload", "Dynamic IPSec client connected%{}", processor_chain([ - dup65, -])); - -var msg92 = msg("62", part101); - -var part102 = match("MESSAGE#91:63", "nwparser.payload", "IPSec packet too big%{}", processor_chain([ - dup66, -])); - -var msg93 = msg("63", part102); - -var part103 = match("MESSAGE#92:63:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup66, -])); - -var msg94 = msg("63:01", part103); - -var select29 = linear_select([ - msg93, - msg94, -]); - -var part104 = match("MESSAGE#93:64", "nwparser.payload", "Diagnostic Code D%{}", processor_chain([ - dup1, -])); - -var msg95 = msg("64", part104); - -var part105 = match("MESSAGE#94:65", "nwparser.payload", "Illegal IPSec SPI%{}", processor_chain([ - dup66, -])); - -var msg96 = msg("65", part105); - -var part106 = match("MESSAGE#95:66", "nwparser.payload", "Unknown IPSec SPI%{}", processor_chain([ - dup66, -])); - -var msg97 = msg("66", part106); - -var part107 = match("MESSAGE#96:67", "nwparser.payload", "IPSec Authentication Failed%{}", processor_chain([ - dup66, -])); - -var msg98 = msg("67", part107); - -var all17 = all_match({ - processors: [ - dup32, - dup185, - dup186, - ], - on_success: processor_chain([ - dup66, - ]), -}); - -var msg99 = msg("67:01", all17); - -var select30 = linear_select([ - msg98, - msg99, -]); - -var part108 = match("MESSAGE#98:68", "nwparser.payload", "IPSec Decryption Failed%{}", processor_chain([ - dup66, -])); - -var msg100 = msg("68", part108); - -var part109 = match("MESSAGE#99:69", "nwparser.payload", "Incompatible IPSec Security Association%{}", processor_chain([ - dup66, -])); - -var msg101 = msg("69", part109); - -var part110 = match("MESSAGE#100:70", "nwparser.payload", "IPSec packet from illegal host%{}", processor_chain([ - dup66, -])); - -var msg102 = msg("70", part110); - -var part111 = match("MESSAGE#101:70:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst%{p0}"); - -var part112 = match("MESSAGE#101:70:01/1_0", "nwparser.p0", "=%{daddr}"); - -var part113 = match("MESSAGE#101:70:01/1_1", "nwparser.p0", "name=%{name}"); - -var select31 = linear_select([ - part112, - part113, -]); - -var all18 = all_match({ - processors: [ - part111, - select31, - ], - on_success: processor_chain([ - dup66, - ]), -}); - -var msg103 = msg("70:01", all18); - -var select32 = linear_select([ - msg102, - msg103, -]); - -var part114 = match("MESSAGE#102:72", "nwparser.payload", "NetBus Attack Dropped%{}", processor_chain([ - dup67, -])); - -var msg104 = msg("72", part114); - -var part115 = match("MESSAGE#103:72:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}", processor_chain([ - dup67, -])); - -var msg105 = msg("72:01", part115); - -var select33 = linear_select([ - msg104, - msg105, -]); - -var part116 = match("MESSAGE#104:73", "nwparser.payload", "Back Orifice Attack Dropped%{}", processor_chain([ - dup68, -])); - -var msg106 = msg("73", part116); - -var part117 = match("MESSAGE#105:74", "nwparser.payload", "Net Spy Attack Dropped%{}", processor_chain([ - dup69, -])); - -var msg107 = msg("74", part117); - -var part118 = match("MESSAGE#106:75", "nwparser.payload", "Sub Seven Attack Dropped%{}", processor_chain([ - dup68, -])); - -var msg108 = msg("75", part118); - -var part119 = match("MESSAGE#107:76", "nwparser.payload", "Ripper Attack Dropped%{}", processor_chain([ - dup67, -])); - -var msg109 = msg("76", part119); - -var part120 = match("MESSAGE#108:77", "nwparser.payload", "Striker Attack Dropped%{}", processor_chain([ - dup67, -])); - -var msg110 = msg("77", part120); - -var part121 = match("MESSAGE#109:78", "nwparser.payload", "Senna Spy Attack Dropped%{}", processor_chain([ - dup69, -])); - -var msg111 = msg("78", part121); - -var part122 = match("MESSAGE#110:79", "nwparser.payload", "Priority Attack Dropped%{}", processor_chain([ - dup67, -])); - -var msg112 = msg("79", part122); - -var part123 = match("MESSAGE#111:80", "nwparser.payload", "Ini Killer Attack Dropped%{}", processor_chain([ - dup67, -])); - -var msg113 = msg("80", part123); - -var part124 = match("MESSAGE#112:81", "nwparser.payload", "Smurf Amplification Attack Dropped%{}", processor_chain([ - dup14, -])); - -var msg114 = msg("81", part124); - -var part125 = match("MESSAGE#113:82", "nwparser.payload", "Possible Port Scan%{}", processor_chain([ - dup70, -])); - -var msg115 = msg("82", part125); - -var part126 = match("MESSAGE#114:82:02", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} note=\"%{info}\"", processor_chain([ - dup70, -])); - -var msg116 = msg("82:02", part126); - -var part127 = match("MESSAGE#115:82:03", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} note=\"%{fld3}\" npcs=%{info}", processor_chain([ - dup70, -])); - -var msg117 = msg("82:03", part127); - -var msg118 = msg("82:01", dup195); - -var select34 = linear_select([ - msg115, - msg116, - msg117, - msg118, -]); - -var part128 = match("MESSAGE#117:83", "nwparser.payload", "Probable Port Scan%{}", processor_chain([ - dup70, -])); - -var msg119 = msg("83", part128); - -var msg120 = msg("83:01", dup196); - -var part129 = match("MESSAGE#119:83:02", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} note=\"%{fld3}\" npcs=%{info}", processor_chain([ - dup5, -])); - -var msg121 = msg("83:02", part129); - -var select35 = linear_select([ - msg119, - msg120, - msg121, -]); - -var part130 = match("MESSAGE#120:84/0_0", "nwparser.payload", "msg=\"Failed to resolve name\" n=%{fld1->} dstname=%{dhost}"); - -var part131 = match("MESSAGE#120:84/0_1", "nwparser.payload", "Failed to resolve name%{}"); - -var select36 = linear_select([ - part130, - part131, -]); - -var all19 = all_match({ - processors: [ - select36, - ], - on_success: processor_chain([ - dup71, - setc("action","Failed to resolve name"), - ]), -}); - -var msg122 = msg("84", all19); - -var part132 = match("MESSAGE#121:87", "nwparser.payload", "IKE Responder: Accepting IPSec proposal%{}", processor_chain([ - dup72, -])); - -var msg123 = msg("87", part132); - -var part133 = match("MESSAGE#122:87:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup72, -])); - -var msg124 = msg("87:01", part133); - -var select37 = linear_select([ - msg123, - msg124, -]); - -var part134 = match("MESSAGE#123:88", "nwparser.payload", "IKE Responder: IPSec proposal not acceptable%{}", processor_chain([ - dup66, -])); - -var msg125 = msg("88", part134); - -var part135 = match("MESSAGE#124:88:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup66, -])); - -var msg126 = msg("88:01", part135); - -var select38 = linear_select([ - msg125, - msg126, -]); - -var part136 = match("MESSAGE#125:89", "nwparser.payload", "IKE negotiation complete. Adding IPSec SA%{}", processor_chain([ - dup72, -])); - -var msg127 = msg("89", part136); - -var part137 = match("MESSAGE#126:89:01/1_0", "nwparser.p0", "%{saddr}:::%{sinterface->} dst=%{daddr}:::%{dinterface}"); - -var part138 = match("MESSAGE#126:89:01/1_1", "nwparser.p0", "%{saddr->} dst=%{daddr->} dstname=%{name}"); - -var select39 = linear_select([ - part137, - part138, -]); - -var all20 = all_match({ - processors: [ - dup73, - select39, - ], - on_success: processor_chain([ - dup72, - ]), -}); - -var msg128 = msg("89:01", all20); - -var select40 = linear_select([ - msg127, - msg128, -]); - -var part139 = match("MESSAGE#127:90", "nwparser.payload", "Starting IKE negotiation%{}", processor_chain([ - dup72, -])); - -var msg129 = msg("90", part139); - -var part140 = match("MESSAGE#128:91", "nwparser.payload", "Deleting IPSec SA for destination%{}", processor_chain([ - dup72, -])); - -var msg130 = msg("91", part140); - -var part141 = match("MESSAGE#129:92", "nwparser.payload", "Deleting IPSec SA%{}", processor_chain([ - dup72, -])); - -var msg131 = msg("92", part141); - -var part142 = match("MESSAGE#130:93", "nwparser.payload", "Diagnostic Code A%{}", processor_chain([ - dup1, -])); - -var msg132 = msg("93", part142); - -var part143 = match("MESSAGE#131:94", "nwparser.payload", "Diagnostic Code B%{}", processor_chain([ - dup1, -])); - -var msg133 = msg("94", part143); - -var part144 = match("MESSAGE#132:95", "nwparser.payload", "Diagnostic Code C%{}", processor_chain([ - dup1, -])); - -var msg134 = msg("95", part144); - -var part145 = match("MESSAGE#133:96", "nwparser.payload", "Status%{}", processor_chain([ - dup1, -])); - -var msg135 = msg("96", part145); - -var part146 = match("MESSAGE#134:97", "nwparser.payload", "Web site hit%{}", processor_chain([ - dup1, -])); - -var msg136 = msg("97", part146); - -var part147 = match("MESSAGE#135:97:01/4", "nwparser.p0", "proto=%{protocol->} op=%{fld->} %{p0}"); - -var part148 = match("MESSAGE#135:97:01/5_0", "nwparser.p0", "rcvd=%{rbytes->} %{p0}"); - -var part149 = match("MESSAGE#135:97:01/5_1", "nwparser.p0", "sent=%{sbytes->} %{p0}"); - -var select41 = linear_select([ - part148, - part149, -]); - -var part150 = match_copy("MESSAGE#135:97:01/7", "nwparser.p0", "name"); - -var all21 = all_match({ - processors: [ - dup74, - dup189, - dup41, - dup183, - part147, - select41, - dup197, - part150, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg137 = msg("97:01", all21); - -var part151 = match("MESSAGE#136:97:02/4", "nwparser.p0", "proto=%{protocol->} op=%{fld->} result=%{result}"); - -var all22 = all_match({ - processors: [ - dup74, - dup189, - dup41, - dup183, - part151, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg138 = msg("97:02", all22); - -var part152 = match("MESSAGE#137:97:03/4", "nwparser.p0", "proto=%{protocol->} op=%{fld3->} sent=%{sbytes->} rcvd=%{rbytes->} %{p0}"); - -var part153 = match("MESSAGE#137:97:03/6", "nwparser.p0", "%{} %{name}arg=%{fld4->} code=%{fld5->} Category=\"%{category}\" npcs=%{info}"); - -var all23 = all_match({ - processors: [ - dup77, - dup189, - dup41, - dup183, - part152, - dup197, - part153, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg139 = msg("97:03", all23); - -var part154 = match("MESSAGE#138:97:04/4", "nwparser.p0", "proto=%{protocol->} op=%{fld3->} %{p0}"); - -var part155 = match("MESSAGE#138:97:04/6", "nwparser.p0", "%{}arg= %{name}%{fld4->} code=%{fld5->} Category=\"%{category}\" npcs=%{info}"); - -var all24 = all_match({ - processors: [ - dup77, - dup189, - dup41, - dup183, - part154, - dup197, - part155, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg140 = msg("97:04", all24); - -var part156 = match("MESSAGE#139:97:05/4", "nwparser.p0", "proto=%{protocol->} op=%{fld2->} dstname=%{name->} arg=%{fld3->} code=%{fld4->} Category=%{category}"); - -var all25 = all_match({ - processors: [ - dup74, - dup189, - dup41, - dup183, - part156, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg141 = msg("97:05", all25); - -var part157 = match("MESSAGE#140:97:06/0", "nwparser.payload", "app=%{fld1}sess=\"%{fld2}\" n=%{fld3}usr=\"%{username}\" src=%{saddr}:%{sport}:%{p0}"); - -var part158 = match("MESSAGE#140:97:06/1_0", "nwparser.p0", "%{sinterface}:%{shost}dst=%{p0}"); - -var part159 = match("MESSAGE#140:97:06/1_1", "nwparser.p0", "%{sinterface}dst=%{p0}"); - -var select42 = linear_select([ - part158, - part159, -]); - -var part160 = match("MESSAGE#140:97:06/2", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}sent=%{sbytes}rcvd=%{rbytes}dstname=%{dhost}arg=%{param}code=%{resultcode}Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\""); - -var all26 = all_match({ - processors: [ - part157, - select42, - part160, - ], - on_success: processor_chain([ - dup78, - dup11, - ]), -}); - -var msg142 = msg("97:06", all26); - -var part161 = match("MESSAGE#141:97:07/0", "nwparser.payload", "app=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{p0}"); - -var part162 = match("MESSAGE#141:97:07/1_0", "nwparser.p0", "%{dinterface}:%{fld3->} srcMac=%{p0}"); - -var select43 = linear_select([ - part162, - dup79, -]); - -var part163 = match("MESSAGE#141:97:07/2", "nwparser.p0", "%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} sent=%{sbytes->} rcvd=%{rbytes->} dstname=%{dhost->} arg=%{param->} code=%{resultcode->} Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\""); - -var all27 = all_match({ - processors: [ - part161, - select43, - part163, - ], - on_success: processor_chain([ - dup78, - dup11, - ]), -}); - -var msg143 = msg("97:07", all27); - -var part164 = match("MESSAGE#142:97:08", "nwparser.payload", "app=%{fld1}sess=\"%{fld2}\" n=%{fld3}usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}sent=%{sbytes}dstname=%{dhost}arg=%{param}code=%{resultcode}Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup78, - dup11, -])); - -var msg144 = msg("97:08", part164); - -var part165 = match("MESSAGE#143:97:09", "nwparser.payload", "app=%{fld1}sess=\"%{fld2}\" n=%{fld3}usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}sent=%{sbytes}dstname=%{dhost}arg=%{param}code=%{resultcode}Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup78, - dup11, -])); - -var msg145 = msg("97:09", part165); - -var part166 = match("MESSAGE#144:97:10", "nwparser.payload", "app=%{fld1}n=%{fld2}src=%{saddr}:%{sport}:%{sinterface}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}sent=%{sbytes}rcvd=%{rbytes}dstname=%{dhost}arg=%{param}code=%{resultcode}Category=\"%{category}\" rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup78, - dup11, -])); - -var msg146 = msg("97:10", part166); - -var select44 = linear_select([ - msg136, - msg137, - msg138, - msg139, - msg140, - msg141, - msg142, - msg143, - msg144, - msg145, - msg146, -]); - -var part167 = match("MESSAGE#145:98/2", "nwparser.p0", "%{}n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{p0}"); - -var part168 = match("MESSAGE#145:98/3_0", "nwparser.p0", "%{dinterface} %{protocol->} sent=%{sbytes->} fw_action=\"%{action}\""); - -var part169 = match("MESSAGE#145:98/3_1", "nwparser.p0", "%{dinterface} %{protocol->} sent=%{sbytes}"); - -var part170 = match("MESSAGE#145:98/3_2", "nwparser.p0", "%{dinterface} %{protocol}"); - -var select45 = linear_select([ - part168, - part169, - part170, -]); - -var all28 = all_match({ - processors: [ - dup54, - dup193, - part167, - select45, - ], - on_success: processor_chain([ - dup78, - dup59, - setc("ec_activity","Stop"), - dup61, - dup62, - dup11, - setc("action","Opened"), - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg147 = msg("98", all28); - -var part171 = match("MESSAGE#146:98:07", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} dstMac=%{dmacaddr->} proto=%{protocol}/%{fld4->} sent=%{sbytes->} rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup1, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg148 = msg("98:07", part171); - -var part172 = match("MESSAGE#147:98:01/0", "nwparser.payload", "msg=\"%{msg}\"%{p0}"); - -var part173 = match("MESSAGE#147:98:01/1_0", "nwparser.p0", " app=%{fld2->} sess=\"%{fld3}\"%{p0}"); - -var select46 = linear_select([ - part173, - dup56, -]); - -var part174 = match("MESSAGE#147:98:01/2", "nwparser.p0", "%{}n=%{p0}"); - -var part175 = match("MESSAGE#147:98:01/3_0", "nwparser.p0", "%{fld1->} usr=%{username->} src=%{p0}"); - -var part176 = match("MESSAGE#147:98:01/3_1", "nwparser.p0", "%{fld1->} src=%{p0}"); - -var select47 = linear_select([ - part175, - part176, -]); - -var part177 = match("MESSAGE#147:98:01/4_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{p0}"); - -var part178 = match("MESSAGE#147:98:01/4_1", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface}dst=%{p0}"); - -var part179 = match("MESSAGE#147:98:01/4_2", "nwparser.p0", "%{saddr}dst=%{p0}"); - -var select48 = linear_select([ - part177, - part178, - part179, -]); - -var part180 = match("MESSAGE#147:98:01/5", "nwparser.p0", "%{} %{p0}"); - -var part181 = match("MESSAGE#147:98:01/6_1", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} %{p0}"); - -var part182 = match("MESSAGE#147:98:01/6_2", "nwparser.p0", "%{daddr->} %{p0}"); - -var select49 = linear_select([ - dup80, - part181, - part182, -]); - -var part183 = match("MESSAGE#147:98:01/7_0", "nwparser.p0", "dstMac=%{dmacaddr->} proto=%{protocol->} sent=%{sbytes->} fw_action=\"%{action}\""); - -var part184 = match("MESSAGE#147:98:01/7_1", "nwparser.p0", "dstMac=%{dmacaddr->} proto=%{protocol->} sent=%{sbytes}"); - -var part185 = match("MESSAGE#147:98:01/7_2", "nwparser.p0", "proto=%{protocol->} sent=%{sbytes->} rule=\"%{rulename}\" fw_action=\"%{action}\""); - -var part186 = match("MESSAGE#147:98:01/7_3", "nwparser.p0", "proto=%{protocol->} sent=%{sbytes->} fw_action=\"%{action}\""); - -var select50 = linear_select([ - part183, - part184, - part185, - part186, - dup81, - dup43, -]); - -var all29 = all_match({ - processors: [ - part172, - select46, - part174, - select47, - select48, - part180, - select49, - select50, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg149 = msg("98:01", all29); - -var part187 = match("MESSAGE#148:98:06/1_0", "nwparser.p0", "app=%{fld2->} appName=\"%{application}\" n=%{p0}"); - -var part188 = match("MESSAGE#148:98:06/1_1", "nwparser.p0", "app=%{fld2->} n=%{p0}"); - -var part189 = match("MESSAGE#148:98:06/1_2", "nwparser.p0", "sess=%{fld2->} n=%{p0}"); - -var select51 = linear_select([ - part187, - part188, - part189, -]); - -var part190 = match("MESSAGE#148:98:06/2", "nwparser.p0", "%{fld1->} %{p0}"); - -var part191 = match("MESSAGE#148:98:06/3_0", "nwparser.p0", "usr=%{username->} %{p0}"); - -var select52 = linear_select([ - part191, - dup56, -]); - -var part192 = match("MESSAGE#148:98:06/4", "nwparser.p0", "src= %{saddr}:%{sport}:%{p0}"); - -var part193 = match("MESSAGE#148:98:06/7_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var part194 = match("MESSAGE#148:98:06/7_1", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var part195 = match("MESSAGE#148:98:06/7_3", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} proto=%{p0}"); - -var select53 = linear_select([ - part193, - part194, - dup85, - part195, -]); - -var part196 = match("MESSAGE#148:98:06/8", "nwparser.p0", "%{protocol->} %{p0}"); - -var part197 = match("MESSAGE#148:98:06/9_0", "nwparser.p0", "sent=%{sbytes->} rule=\"%{rulename}\" fw_action=\"%{action}\""); - -var part198 = match("MESSAGE#148:98:06/9_1", "nwparser.p0", "sent=%{sbytes->} rule=\"%{rulename}\" fw_action=%{action}"); - -var part199 = match("MESSAGE#148:98:06/9_2", "nwparser.p0", "sent=%{sbytes->} fw_action=\"%{action}\""); - -var part200 = match("MESSAGE#148:98:06/9_4", "nwparser.p0", "fw_action=\"%{action}\""); - -var select54 = linear_select([ - part197, - part198, - part199, - dup86, - part200, -]); - -var all30 = all_match({ - processors: [ - dup82, - select51, - part190, - select52, - part192, - dup198, - dup17, - select53, - part196, - select54, - ], - on_success: processor_chain([ - dup78, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg150 = msg("98:06", all30); - -var part201 = match("MESSAGE#149:98:02/0", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} usr=%{username->} src=%{p0}"); - -var all31 = all_match({ - processors: [ - part201, - dup185, - dup183, - dup43, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg151 = msg("98:02", all31); - -var part202 = match("MESSAGE#150:98:03/0_0", "nwparser.payload", "Connection%{}"); - -var part203 = match("MESSAGE#150:98:03/0_1", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}"); - -var select55 = linear_select([ - part202, - part203, -]); - -var all32 = all_match({ - processors: [ - select55, - ], - on_success: processor_chain([ - dup1, - dup44, - ]), -}); - -var msg152 = msg("98:03", all32); - -var part204 = match("MESSAGE#151:98:04/3", "nwparser.p0", "proto=%{protocol->} sent=%{sbytes->} vpnpolicy=\"%{policyname}\" npcs=%{info}"); - -var all33 = all_match({ - processors: [ - dup7, - dup185, - dup183, - part204, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg153 = msg("98:04", all33); - -var part205 = match("MESSAGE#152:98:05/3", "nwparser.p0", "proto=%{protocol->} sent=%{sbytes->} npcs=%{info}"); - -var all34 = all_match({ - processors: [ - dup7, - dup185, - dup183, - part205, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg154 = msg("98:05", all34); - -var select56 = linear_select([ - msg147, - msg148, - msg149, - msg150, - msg151, - msg152, - msg153, - msg154, -]); - -var part206 = match("MESSAGE#153:986", "nwparser.payload", "msg=\"%{msg}\" dur=%{duration->} n=%{fld1->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol->} note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - dup31, - dup11, -])); - -var msg155 = msg("986", part206); - -var part207 = match("MESSAGE#154:427/3", "nwparser.p0", "note=\"%{event_description}\""); - -var all35 = all_match({ - processors: [ - dup73, - dup185, - dup183, - part207, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg156 = msg("427", all35); - -var part208 = match("MESSAGE#155:428/2", "nwparser.p0", "%{} %{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} fw_action=\"%{action}\""); - -var all36 = all_match({ - processors: [ - dup87, - dup194, - part208, - ], - on_success: processor_chain([ - dup23, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg157 = msg("428", all36); - -var part209 = match("MESSAGE#156:99", "nwparser.payload", "Retransmitting DHCP DISCOVER.%{}", processor_chain([ - dup72, -])); - -var msg158 = msg("99", part209); - -var part210 = match("MESSAGE#157:100", "nwparser.payload", "Retransmitting DHCP REQUEST (Requesting).%{}", processor_chain([ - dup72, -])); - -var msg159 = msg("100", part210); - -var part211 = match("MESSAGE#158:101", "nwparser.payload", "Retransmitting DHCP REQUEST (Renewing).%{}", processor_chain([ - dup72, -])); - -var msg160 = msg("101", part211); - -var part212 = match("MESSAGE#159:102", "nwparser.payload", "Retransmitting DHCP REQUEST (Rebinding).%{}", processor_chain([ - dup72, -])); - -var msg161 = msg("102", part212); - -var part213 = match("MESSAGE#160:103", "nwparser.payload", "Retransmitting DHCP REQUEST (Rebooting).%{}", processor_chain([ - dup72, -])); - -var msg162 = msg("103", part213); - -var part214 = match("MESSAGE#161:104", "nwparser.payload", "Retransmitting DHCP REQUEST (Verifying).%{}", processor_chain([ - dup72, -])); - -var msg163 = msg("104", part214); - -var part215 = match("MESSAGE#162:105", "nwparser.payload", "Sending DHCP DISCOVER.%{}", processor_chain([ - dup72, -])); - -var msg164 = msg("105", part215); - -var part216 = match("MESSAGE#163:106", "nwparser.payload", "DHCP Server not available. Did not get any DHCP OFFER.%{}", processor_chain([ - dup71, -])); - -var msg165 = msg("106", part216); - -var part217 = match("MESSAGE#164:107", "nwparser.payload", "Got DHCP OFFER. Selecting.%{}", processor_chain([ - dup72, -])); - -var msg166 = msg("107", part217); - -var part218 = match("MESSAGE#165:108", "nwparser.payload", "Sending DHCP REQUEST.%{}", processor_chain([ - dup72, -])); - -var msg167 = msg("108", part218); - -var part219 = match("MESSAGE#166:109", "nwparser.payload", "DHCP Client did not get DHCP ACK.%{}", processor_chain([ - dup71, -])); - -var msg168 = msg("109", part219); - -var part220 = match("MESSAGE#167:110", "nwparser.payload", "DHCP Client got NACK.%{}", processor_chain([ - dup72, -])); - -var msg169 = msg("110", part220); - -var msg170 = msg("111:01", dup199); - -var part221 = match("MESSAGE#169:111", "nwparser.payload", "DHCP Client got ACK from server.%{}", processor_chain([ - dup72, -])); - -var msg171 = msg("111", part221); - -var select57 = linear_select([ - msg170, - msg171, -]); - -var part222 = match("MESSAGE#170:112", "nwparser.payload", "DHCP Client is declining address offered by the server.%{}", processor_chain([ - dup72, -])); - -var msg172 = msg("112", part222); - -var part223 = match("MESSAGE#171:113", "nwparser.payload", "DHCP Client sending REQUEST and going to REBIND state.%{}", processor_chain([ - dup72, -])); - -var msg173 = msg("113", part223); - -var part224 = match("MESSAGE#172:114", "nwparser.payload", "DHCP Client sending REQUEST and going to RENEW state.%{}", processor_chain([ - dup72, -])); - -var msg174 = msg("114", part224); - -var msg175 = msg("115:01", dup199); - -var part225 = match("MESSAGE#174:115", "nwparser.payload", "Sending DHCP REQUEST (Renewing).%{}", processor_chain([ - dup72, -])); - -var msg176 = msg("115", part225); - -var select58 = linear_select([ - msg175, - msg176, -]); - -var part226 = match("MESSAGE#175:116", "nwparser.payload", "Sending DHCP REQUEST (Rebinding).%{}", processor_chain([ - dup72, -])); - -var msg177 = msg("116", part226); - -var part227 = match("MESSAGE#176:117", "nwparser.payload", "Sending DHCP REQUEST (Rebooting).%{}", processor_chain([ - dup72, -])); - -var msg178 = msg("117", part227); - -var part228 = match("MESSAGE#177:118", "nwparser.payload", "Sending DHCP REQUEST (Verifying).%{}", processor_chain([ - dup72, -])); - -var msg179 = msg("118", part228); - -var part229 = match("MESSAGE#178:119", "nwparser.payload", "DHCP Client failed to verify and lease has expired. Go to INIT state.%{}", processor_chain([ - dup71, -])); - -var msg180 = msg("119", part229); - -var part230 = match("MESSAGE#179:120", "nwparser.payload", "DHCP Client failed to verify and lease is still valid. Go to BOUND state.%{}", processor_chain([ - dup71, -])); - -var msg181 = msg("120", part230); - -var part231 = match("MESSAGE#180:121", "nwparser.payload", "DHCP Client got a new IP address lease.%{}", processor_chain([ - dup72, -])); - -var msg182 = msg("121", part231); - -var part232 = match("MESSAGE#181:122", "nwparser.payload", "Access attempt from host without Anti-Virus agent installed%{}", processor_chain([ - dup71, -])); - -var msg183 = msg("122", part232); - -var part233 = match("MESSAGE#182:123", "nwparser.payload", "Anti-Virus agent out-of-date on host%{}", processor_chain([ - dup71, -])); - -var msg184 = msg("123", part233); - -var part234 = match("MESSAGE#183:124", "nwparser.payload", "Received AV Alert: %s%{}", processor_chain([ - dup72, -])); - -var msg185 = msg("124", part234); - -var part235 = match("MESSAGE#184:125", "nwparser.payload", "Unused AV log entry.%{}", processor_chain([ - dup72, -])); - -var msg186 = msg("125", part235); - -var part236 = match("MESSAGE#185:1254", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} srcV6=%{saddr_v6->} src=%{saddr}:%{sport}:%{sinterface->} dstV6=%{daddr_v6->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} type=%{icmptype->} icmpCode=%{icmpcode->} fw_action=\"%{action}\"", processor_chain([ - dup89, - dup11, -])); - -var msg187 = msg("1254", part236); - -var part237 = match("MESSAGE#186:1256", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} srcV6=%{saddr_v6->} src=%{saddr}:%{sport}:%{sinterface->} dstV6=%{daddr_v6->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} type=%{icmptype->} icmpCode=%{icmpcode->} fw_action=\"%{action}\"", processor_chain([ - dup78, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg188 = msg("1256", part237); - -var part238 = match("MESSAGE#187:1257", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} srcV6=%{saddr_v6->} src=%{saddr}:%{sport}:%{sinterface->} dstV6=%{daddr_v6->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} type=%{icmptype->} icmpCode=%{icmpcode->} note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - dup89, - dup11, -])); - -var msg189 = msg("1257", part238); - -var part239 = match("MESSAGE#188:126", "nwparser.payload", "Starting PPPoE discovery%{}", processor_chain([ - dup72, -])); - -var msg190 = msg("126", part239); - -var part240 = match("MESSAGE#189:127", "nwparser.payload", "PPPoE LCP Link Up%{}", processor_chain([ - dup72, -])); - -var msg191 = msg("127", part240); - -var part241 = match("MESSAGE#190:128", "nwparser.payload", "PPPoE LCP Link Down%{}", processor_chain([ - dup5, -])); - -var msg192 = msg("128", part241); - -var part242 = match("MESSAGE#191:129", "nwparser.payload", "PPPoE terminated%{}", processor_chain([ - dup5, -])); - -var msg193 = msg("129", part242); - -var part243 = match("MESSAGE#192:130", "nwparser.payload", "PPPoE Network Connected%{}", processor_chain([ - dup1, -])); - -var msg194 = msg("130", part243); - -var part244 = match("MESSAGE#193:131", "nwparser.payload", "PPPoE Network Disconnected%{}", processor_chain([ - dup1, -])); - -var msg195 = msg("131", part244); - -var part245 = match("MESSAGE#194:132", "nwparser.payload", "PPPoE discovery process complete%{}", processor_chain([ - dup1, -])); - -var msg196 = msg("132", part245); - -var part246 = match("MESSAGE#195:133", "nwparser.payload", "PPPoE starting CHAP Authentication%{}", processor_chain([ - dup1, -])); - -var msg197 = msg("133", part246); - -var part247 = match("MESSAGE#196:134", "nwparser.payload", "PPPoE starting PAP Authentication%{}", processor_chain([ - dup1, -])); - -var msg198 = msg("134", part247); - -var part248 = match("MESSAGE#197:135", "nwparser.payload", "PPPoE CHAP Authentication Failed%{}", processor_chain([ - dup90, -])); - -var msg199 = msg("135", part248); - -var part249 = match("MESSAGE#198:136", "nwparser.payload", "PPPoE PAP Authentication Failed%{}", processor_chain([ - dup90, -])); - -var msg200 = msg("136", part249); - -var part250 = match("MESSAGE#199:137", "nwparser.payload", "Wan IP Changed%{}", processor_chain([ - dup3, -])); - -var msg201 = msg("137", part250); - -var part251 = match("MESSAGE#200:138", "nwparser.payload", "XAUTH Succeeded%{}", processor_chain([ - dup3, -])); - -var msg202 = msg("138", part251); - -var part252 = match("MESSAGE#201:139", "nwparser.payload", "XAUTH Failed%{}", processor_chain([ - dup5, -])); - -var msg203 = msg("139", part252); - -var all37 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - setc("eventcategory","1801020100"), - ]), -}); - -var msg204 = msg("139:01", all37); - -var select59 = linear_select([ - msg203, - msg204, -]); - -var msg205 = msg("140", dup239); - -var msg206 = msg("141", dup239); - -var part253 = match("MESSAGE#205:142", "nwparser.payload", "Primary firewall has transitioned to Active%{}", processor_chain([ - dup1, -])); - -var msg207 = msg("142", part253); - -var part254 = match("MESSAGE#206:143", "nwparser.payload", "Backup firewall has transitioned to Active%{}", processor_chain([ - dup1, -])); - -var msg208 = msg("143", part254); - -var part255 = match("MESSAGE#207:1431", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} srcV6=%{saddr_v6->} src=::%{sinterface->} dstV6=%{daddr_v6->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} type=%{icmptype->} icmpCode=%{icmpcode->} fw_action=\"%{action}\"", processor_chain([ - dup78, - dup11, -])); - -var msg209 = msg("1431", part255); - -var part256 = match("MESSAGE#208:144", "nwparser.payload", "Primary firewall has transitioned to Idle%{}", processor_chain([ - dup1, -])); - -var msg210 = msg("144", part256); - -var part257 = match("MESSAGE#209:145", "nwparser.payload", "Backup firewall has transitioned to Idle%{}", processor_chain([ - dup1, -])); - -var msg211 = msg("145", part257); - -var part258 = match("MESSAGE#210:146", "nwparser.payload", "Primary missed heartbeats from Active Backup: Primary going Active%{}", processor_chain([ - dup92, -])); - -var msg212 = msg("146", part258); - -var part259 = match("MESSAGE#211:147", "nwparser.payload", "Backup missed heartbeats from Active Primary: Backup going Active%{}", processor_chain([ - dup92, -])); - -var msg213 = msg("147", part259); - -var part260 = match("MESSAGE#212:148", "nwparser.payload", "Primary received error signal from Active Backup: Primary going Active%{}", processor_chain([ - dup1, -])); - -var msg214 = msg("148", part260); - -var part261 = match("MESSAGE#213:1480", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - setc("eventcategory","1204010000"), - dup11, -])); - -var msg215 = msg("1480", part261); - -var part262 = match("MESSAGE#214:149", "nwparser.payload", "Backup received error signal from Active Primary: Backup going Active%{}", processor_chain([ - dup1, -])); - -var msg216 = msg("149", part262); - -var part263 = match("MESSAGE#215:150", "nwparser.payload", "Backup firewall being preempted by Primary%{}", processor_chain([ - dup1, -])); - -var msg217 = msg("150", part263); - -var part264 = match("MESSAGE#216:151", "nwparser.payload", "Primary firewall preempting Backup%{}", processor_chain([ - dup1, -])); - -var msg218 = msg("151", part264); - -var part265 = match("MESSAGE#217:152", "nwparser.payload", "Active Backup detects Active Primary: Backup rebooting%{}", processor_chain([ - dup1, -])); - -var msg219 = msg("152", part265); - -var part266 = match("MESSAGE#218:153", "nwparser.payload", "Imported HA hardware ID did not match this firewall%{}", processor_chain([ - setc("eventcategory","1603010000"), -])); - -var msg220 = msg("153", part266); - -var part267 = match("MESSAGE#219:154", "nwparser.payload", "Received AV Alert: Your SonicWALL Network Anti-Virus subscription has expired. %s%{}", processor_chain([ - dup64, -])); - -var msg221 = msg("154", part267); - -var part268 = match("MESSAGE#220:155", "nwparser.payload", "Primary received heartbeat from wrong source%{}", processor_chain([ - dup92, -])); - -var msg222 = msg("155", part268); - -var part269 = match("MESSAGE#221:156", "nwparser.payload", "Backup received heartbeat from wrong source%{}", processor_chain([ - dup92, -])); - -var msg223 = msg("156", part269); - -var part270 = match("MESSAGE#222:157:01", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype}", processor_chain([ - dup1, -])); - -var msg224 = msg("157:01", part270); - -var part271 = match("MESSAGE#223:157", "nwparser.payload", "HA packet processing error%{}", processor_chain([ - dup5, -])); - -var msg225 = msg("157", part271); - -var select60 = linear_select([ - msg224, - msg225, -]); - -var part272 = match("MESSAGE#224:158", "nwparser.payload", "Heartbeat received from incompatible source%{}", processor_chain([ - dup92, -])); - -var msg226 = msg("158", part272); - -var part273 = match("MESSAGE#225:159", "nwparser.payload", "Diagnostic Code F%{}", processor_chain([ - dup5, -])); - -var msg227 = msg("159", part273); - -var part274 = match("MESSAGE#226:160", "nwparser.payload", "Forbidden E-mail attachment altered%{}", processor_chain([ - setc("eventcategory","1203000000"), -])); - -var msg228 = msg("160", part274); - -var part275 = match("MESSAGE#227:161", "nwparser.payload", "PPPoE PAP Authentication success.%{}", processor_chain([ - dup65, -])); - -var msg229 = msg("161", part275); - -var part276 = match("MESSAGE#228:162", "nwparser.payload", "PPPoE PAP Authentication Failed. Please verify PPPoE username and password%{}", processor_chain([ - dup33, -])); - -var msg230 = msg("162", part276); - -var part277 = match("MESSAGE#229:163", "nwparser.payload", "Disconnecting PPPoE due to traffic timeout%{}", processor_chain([ - dup5, -])); - -var msg231 = msg("163", part277); - -var part278 = match("MESSAGE#230:164", "nwparser.payload", "No response from ISP Disconnecting PPPoE.%{}", processor_chain([ - dup5, -])); - -var msg232 = msg("164", part278); - -var part279 = match("MESSAGE#231:165", "nwparser.payload", "Backup going Active in preempt mode after reboot%{}", processor_chain([ - dup1, -])); - -var msg233 = msg("165", part279); - -var part280 = match("MESSAGE#232:166", "nwparser.payload", "Denied TCP connection from LAN%{}", processor_chain([ - dup12, -])); - -var msg234 = msg("166", part280); - -var part281 = match("MESSAGE#233:167", "nwparser.payload", "Denied UDP packet from LAN%{}", processor_chain([ - dup12, -])); - -var msg235 = msg("167", part281); - -var part282 = match("MESSAGE#234:168", "nwparser.payload", "Denied ICMP packet from LAN%{}", processor_chain([ - dup12, -])); - -var msg236 = msg("168", part282); - -var part283 = match("MESSAGE#235:169", "nwparser.payload", "Firewall access from LAN%{}", processor_chain([ - dup1, -])); - -var msg237 = msg("169", part283); - -var part284 = match("MESSAGE#236:170", "nwparser.payload", "Received a path MTU icmp message from router/gateway%{}", processor_chain([ - dup1, -])); - -var msg238 = msg("170", part284); - -var part285 = match("MESSAGE#237:171", "nwparser.payload", "Probable TCP FIN scan%{}", processor_chain([ - dup70, -])); - -var msg239 = msg("171", part285); - -var part286 = match("MESSAGE#238:171:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport}", processor_chain([ - dup93, -])); - -var msg240 = msg("171:01", part286); - -var part287 = match("MESSAGE#239:171:02", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr}:%{dport}", processor_chain([ - dup93, -])); - -var msg241 = msg("171:02", part287); - -var part288 = match("MESSAGE#240:171:03/0", "nwparser.payload", "msg=\"%{msg}\" note=\"%{fld1}\" sess=%{fld2->} n=%{fld3->} src=%{p0}"); - -var all38 = all_match({ - processors: [ - part288, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup93, - ]), -}); - -var msg242 = msg("171:03", all38); - -var select61 = linear_select([ - msg239, - msg240, - msg241, - msg242, -]); - -var part289 = match("MESSAGE#241:172", "nwparser.payload", "Probable TCP XMAS scan%{}", processor_chain([ - dup70, -])); - -var msg243 = msg("172", part289); - -var part290 = match("MESSAGE#242:172:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1}", processor_chain([ - dup70, -])); - -var msg244 = msg("172:01", part290); - -var select62 = linear_select([ - msg243, - msg244, -]); - -var part291 = match("MESSAGE#243:173", "nwparser.payload", "Probable TCP NULL scan%{}", processor_chain([ - dup70, -])); - -var msg245 = msg("173", part291); - -var part292 = match("MESSAGE#244:174", "nwparser.payload", "IPSEC Replay Detected%{}", processor_chain([ - dup67, -])); - -var msg246 = msg("174", part292); - -var all39 = all_match({ - processors: [ - dup73, - dup185, - dup183, - dup43, - ], - on_success: processor_chain([ - dup67, - ]), -}); - -var msg247 = msg("174:01", all39); - -var all40 = all_match({ - processors: [ - dup51, - dup189, - dup41, - dup187, - ], - on_success: processor_chain([ - dup12, - ]), -}); - -var msg248 = msg("174:02", all40); - -var all41 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup191, - dup50, - ], - on_success: processor_chain([ - dup12, - ]), -}); - -var msg249 = msg("174:03", all41); - -var select63 = linear_select([ - msg246, - msg247, - msg248, - msg249, -]); - -var part293 = match("MESSAGE#248:175", "nwparser.payload", "TCP FIN packet dropped%{}", processor_chain([ - dup67, -])); - -var msg250 = msg("175", part293); - -var part294 = match("MESSAGE#249:175:01", "nwparser.payload", "msg=\"ICMP packet from LAN dropped\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} type=%{type}", processor_chain([ - dup67, -])); - -var msg251 = msg("175:01", part294); - -var part295 = match("MESSAGE#250:175:02", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src=%{saddr->} dst=%{daddr->} type=%{type->} icmpCode=%{fld3->} npcs=%{info}", processor_chain([ - dup67, -])); - -var msg252 = msg("175:02", part295); - -var select64 = linear_select([ - msg250, - msg251, - msg252, -]); - -var part296 = match("MESSAGE#251:176", "nwparser.payload", "Fraudulent Microsoft Certificate Blocked%{}", processor_chain([ - dup93, -])); - -var msg253 = msg("176", part296); - -var msg254 = msg("177", dup196); - -var msg255 = msg("178", dup201); - -var msg256 = msg("179", dup196); - -var all42 = all_match({ - processors: [ - dup34, - dup185, - dup187, - ], - on_success: processor_chain([ - dup97, - ]), -}); - -var msg257 = msg("180", all42); - -var all43 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup202, - dup100, - ], - on_success: processor_chain([ - dup97, - ]), -}); - -var msg258 = msg("180:01", all43); - -var select65 = linear_select([ - msg257, - msg258, -]); - -var msg259 = msg("181", dup195); - -var all44 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup70, - ]), -}); - -var msg260 = msg("181:01", all44); - -var select66 = linear_select([ - msg259, - msg260, -]); - -var msg261 = msg("193", dup240); - -var msg262 = msg("194", dup241); - -var msg263 = msg("195", dup241); - -var part297 = match("MESSAGE#262:196/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{fld2->} dst=%{daddr}:%{fld3->} sport=%{sport->} dport=%{dport->} %{p0}"); - -var all45 = all_match({ - processors: [ - part297, - dup204, - dup105, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg264 = msg("196", all45); - -var all46 = all_match({ - processors: [ - dup101, - dup204, - dup105, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg265 = msg("196:01", all46); - -var select67 = linear_select([ - msg264, - msg265, -]); - -var msg266 = msg("199", dup242); - -var msg267 = msg("200", dup243); - -var part298 = match("MESSAGE#266:235:02", "nwparser.payload", "msg=\"%{action}\" n=%{fld->} usr=%{username->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol}", processor_chain([ - dup30, -])); - -var msg268 = msg("235:02", part298); - -var part299 = match("MESSAGE#267:235/0", "nwparser.payload", "msg=\"%{action}\" n=%{fld->} usr=%{username->} src=%{p0}"); - -var all47 = all_match({ - processors: [ - part299, - dup185, - dup187, - ], - on_success: processor_chain([ - dup30, - ]), -}); - -var msg269 = msg("235", all47); - -var msg270 = msg("235:01", dup244); - -var select68 = linear_select([ - msg268, - msg269, - msg270, -]); - -var msg271 = msg("236", dup244); - -var msg272 = msg("237", dup242); - -var msg273 = msg("238", dup242); - -var part300 = match("MESSAGE#272:239", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr->} dst=%{dtransaddr}", processor_chain([ - dup107, -])); - -var msg274 = msg("239", part300); - -var part301 = match("MESSAGE#273:240", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr->} dst=%{dtransaddr}", processor_chain([ - dup107, -])); - -var msg275 = msg("240", part301); - -var part302 = match("MESSAGE#274:241", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport}", processor_chain([ - dup78, -])); - -var msg276 = msg("241", part302); - -var part303 = match("MESSAGE#275:241:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup78, -])); - -var msg277 = msg("241:01", part303); - -var select69 = linear_select([ - msg276, - msg277, -]); - -var part304 = match("MESSAGE#276:242/1_0", "nwparser.p0", "%{saddr}:%{sport}:: %{p0}"); - -var part305 = match("MESSAGE#276:242/1_1", "nwparser.p0", "%{saddr}:%{sport->} %{p0}"); - -var select70 = linear_select([ - part304, - part305, - dup40, -]); - -var part306 = match("MESSAGE#276:242/3_0", "nwparser.p0", "%{daddr}:%{dport}::"); - -var part307 = match("MESSAGE#276:242/3_1", "nwparser.p0", "%{daddr}:%{dport}"); - -var select71 = linear_select([ - part306, - part307, - dup36, -]); - -var all48 = all_match({ - processors: [ - dup51, - select70, - dup41, - select71, - ], - on_success: processor_chain([ - dup78, - ]), -}); - -var msg278 = msg("242", all48); - -var msg279 = msg("252", dup205); - -var msg280 = msg("255", dup205); - -var msg281 = msg("257", dup205); - -var msg282 = msg("261:01", dup245); - -var msg283 = msg("261", dup205); - -var select72 = linear_select([ - msg282, - msg283, -]); - -var msg284 = msg("262", dup245); - -var all49 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg285 = msg("273", all49); - -var msg286 = msg("328", dup246); - -var msg287 = msg("329", dup243); - -var msg288 = msg("346", dup205); - -var msg289 = msg("350", dup205); - -var msg290 = msg("351", dup205); - -var msg291 = msg("352", dup205); - -var msg292 = msg("353:01", dup201); - -var part308 = match("MESSAGE#291:353", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr->} dst=%{dtransaddr->} dstname=%{shost->} lifeSeconds=%{misc}\"", processor_chain([ - dup5, -])); - -var msg293 = msg("353", part308); - -var select73 = linear_select([ - msg292, - msg293, -]); - -var part309 = match("MESSAGE#292:354", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} dstname=\"%{shost->} lifeSeconds=%{misc}\"", processor_chain([ - dup1, -])); - -var msg294 = msg("354", part309); - -var msg295 = msg("355", dup206); - -var msg296 = msg("355:01", dup205); - -var select74 = linear_select([ - msg295, - msg296, -]); - -var msg297 = msg("356", dup207); - -var part310 = match("MESSAGE#296:357", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport->} dstname=%{name}", processor_chain([ - dup93, -])); - -var msg298 = msg("357", part310); - -var part311 = match("MESSAGE#297:357:01", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup93, -])); - -var msg299 = msg("357:01", part311); - -var select75 = linear_select([ - msg298, - msg299, -]); - -var msg300 = msg("358", dup208); - -var part312 = match("MESSAGE#299:371", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr->} dst=%{dtransaddr->} dstname=%{shost}", processor_chain([ - setc("eventcategory","1503000000"), -])); - -var msg301 = msg("371", part312); - -var msg302 = msg("371:01", dup209); - -var select76 = linear_select([ - msg301, - msg302, -]); - -var msg303 = msg("372", dup205); - -var msg304 = msg("373", dup207); - -var msg305 = msg("401", dup247); - -var msg306 = msg("402", dup247); - -var msg307 = msg("406", dup208); - -var part313 = match("MESSAGE#305:413", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport}", processor_chain([ - dup1, -])); - -var msg308 = msg("413", part313); - -var msg309 = msg("414", dup205); - -var msg310 = msg("438", dup248); - -var msg311 = msg("439", dup248); - -var all50 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - setc("eventcategory","1501020000"), - ]), -}); - -var msg312 = msg("440", all50); - -var all51 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - setc("eventcategory","1502050000"), - ]), -}); - -var msg313 = msg("441", all51); - -var part314 = match("MESSAGE#311:441:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1}", processor_chain([ - setc("eventcategory","1001020000"), -])); - -var msg314 = msg("441:01", part314); - -var select77 = linear_select([ - msg313, - msg314, -]); - -var all52 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - setc("eventcategory","1501030000"), - ]), -}); - -var msg315 = msg("442", all52); - -var part315 = match("MESSAGE#313:446/0", "nwparser.payload", "msg=\"%{event_description}\" app=%{p0}"); - -var part316 = match("MESSAGE#313:446/1_0", "nwparser.p0", "%{fld1->} appName=\"%{application}\" n=%{p0}"); - -var part317 = match("MESSAGE#313:446/1_1", "nwparser.p0", "%{fld1->} n=%{p0}"); - -var select78 = linear_select([ - part316, - part317, -]); - -var part318 = match("MESSAGE#313:446/2", "nwparser.p0", "%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var all53 = all_match({ - processors: [ - part315, - select78, - part318, - dup211, - dup119, - ], - on_success: processor_chain([ - dup67, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg316 = msg("446", all53); - -var part319 = match("MESSAGE#314:477", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} note=\"MAC=%{smacaddr->} HostName:%{hostname}\"", processor_chain([ - dup120, - dup59, - dup60, - dup61, - dup62, - dup11, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg317 = msg("477", part319); - -var all54 = all_match({ - processors: [ - dup73, - dup185, - dup187, - ], - on_success: processor_chain([ - dup30, - ]), -}); - -var msg318 = msg("509", all54); - -var all55 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - dup109, - ]), -}); - -var msg319 = msg("520", all55); - -var msg320 = msg("522", dup249); - -var part320 = match("MESSAGE#318:522:01/0", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} srcV6=%{saddr_v6->} src= %{p0}"); - -var part321 = match("MESSAGE#318:522:01/2", "nwparser.p0", "dstV6=%{daddr_v6->} dst= %{p0}"); - -var all56 = all_match({ - processors: [ - part320, - dup189, - part321, - dup183, - dup121, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg321 = msg("522:01", all56); - -var part322 = match("MESSAGE#319:522:02/1_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} %{shost->} dst= %{p0}"); - -var select79 = linear_select([ - part322, - dup46, -]); - -var all57 = all_match({ - processors: [ - dup45, - select79, - dup17, - dup183, - dup121, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg322 = msg("522:02", all57); - -var select80 = linear_select([ - msg320, - msg321, - msg322, -]); - -var msg323 = msg("523", dup249); - -var all58 = all_match({ - processors: [ - dup73, - dup185, - dup183, - dup17, - dup212, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg324 = msg("524", all58); - -var part323 = match("MESSAGE#322:524:01/4_0", "nwparser.p0", "proto=%{protocol->} npcs= %{p0}"); - -var part324 = match("MESSAGE#322:524:01/4_1", "nwparser.p0", "rule=%{rule->} npcs= %{p0}"); - -var select81 = linear_select([ - part323, - part324, -]); - -var all59 = all_match({ - processors: [ - dup7, - dup185, - dup183, - dup17, - select81, - dup47, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg325 = msg("524:01", all59); - -var part325 = match("MESSAGE#323:524:02/0", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol}rule=\"%{rule}\"%{p0}"); - -var part326 = match("MESSAGE#323:524:02/1_0", "nwparser.p0", " note=\"%{rulename}\"%{p0}"); - -var select82 = linear_select([ - part326, - dup56, -]); - -var part327 = match("MESSAGE#323:524:02/2", "nwparser.p0", "%{}fw_action=\"%{action}\""); - -var all60 = all_match({ - processors: [ - part325, - select82, - part327, - ], - on_success: processor_chain([ - dup6, - dup11, - ]), -}); - -var msg326 = msg("524:02", all60); - -var select83 = linear_select([ - msg324, - msg325, - msg326, -]); - -var msg327 = msg("526", dup250); - -var part328 = match("MESSAGE#325:526:01/1_1", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface}:%{fld20->} dst= %{p0}"); - -var select84 = linear_select([ - dup26, - part328, - dup46, -]); - -var part329 = match("MESSAGE#325:526:01/3_1", "nwparser.p0", "%{daddr}"); - -var select85 = linear_select([ - dup35, - part329, -]); - -var all61 = all_match({ - processors: [ - dup73, - select84, - dup17, - select85, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg328 = msg("526:01", all61); - -var all62 = all_match({ - processors: [ - dup7, - dup213, - dup183, - dup121, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg329 = msg("526:02", all62); - -var part330 = match("MESSAGE#327:526:03", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1->} n=%{fld2->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup1, - dup11, -])); - -var msg330 = msg("526:03", part330); - -var part331 = match("MESSAGE#328:526:04", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1}n=%{fld2}src=%{saddr}:%{sport}:%{sinterface}:%{shost}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup1, - dup11, -])); - -var msg331 = msg("526:04", part331); - -var part332 = match("MESSAGE#329:526:05", "nwparser.payload", "msg=\"%{msg}\" app=%{fld1}n=%{fld2}src=%{saddr}:%{sport}:%{sinterface}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup1, - dup11, -])); - -var msg332 = msg("526:05", part332); - -var select86 = linear_select([ - msg327, - msg328, - msg329, - msg330, - msg331, - msg332, -]); - -var part333 = match("MESSAGE#330:537:01/4", "nwparser.p0", "proto=%{protocol->} sent=%{sbytes->} rcvd=%{p0}"); - -var part334 = match("MESSAGE#330:537:01/5_0", "nwparser.p0", "%{rbytes->} vpnpolicy=%{fld3}"); - -var select87 = linear_select([ - part334, - dup123, -]); - -var all63 = all_match({ - processors: [ - dup122, - dup214, - dup17, - dup215, - part333, - select87, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg333 = msg("537:01", all63); - -var all64 = all_match({ - processors: [ - dup122, - dup214, - dup17, - dup215, - dup81, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg334 = msg("537:02", all64); - -var part335 = match("MESSAGE#332:537:08/3_0", "nwparser.p0", "%{saddr} %{daddr}:%{dport}:%{dinterface}:%{dhost->} srcMac=%{p0}"); - -var part336 = match("MESSAGE#332:537:08/3_1", "nwparser.p0", "%{saddr->} %{daddr}:%{dport}:%{dinterface->} srcMac=%{p0}"); - -var part337 = match("MESSAGE#332:537:08/3_2", "nwparser.p0", "%{saddr->} %{daddr}srcMac=%{p0}"); - -var select88 = linear_select([ - part335, - part336, - part337, -]); - -var part338 = match("MESSAGE#332:537:08/4", "nwparser.p0", "%{} %{smacaddr->} %{p0}"); - -var part339 = match("MESSAGE#332:537:08/5_0", "nwparser.p0", "dstMac=%{dmacaddr->} proto=%{protocol->} sent=%{p0}"); - -var part340 = match("MESSAGE#332:537:08/5_1", "nwparser.p0", "proto=%{protocol->} sent=%{p0}"); - -var select89 = linear_select([ - part339, - part340, -]); - -var part341 = match("MESSAGE#332:537:08/7_0", "nwparser.p0", "%{fld3->} rpkt=%{fld6->} cdur=%{fld7->} fw_action=\"%{action}\""); - -var part342 = match("MESSAGE#332:537:08/7_2", "nwparser.p0", "%{fld3->} rpkt=%{fld6->} fw_action=\"%{action}\""); - -var select90 = linear_select([ - part341, - dup131, - part342, - dup132, - dup133, -]); - -var all65 = all_match({ - processors: [ - dup54, - dup216, - dup217, - select88, - part338, - select89, - dup218, - select90, - ], - on_success: processor_chain([ - dup111, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg335 = msg("537:08", all65); - -var select91 = linear_select([ - dup125, - dup124, - dup126, - dup38, -]); - -var part343 = match("MESSAGE#333:537:09/3_0", "nwparser.p0", "%{saddr} %{daddr}:%{dport}:%{dinterface}:%{dhost->} dstMac=%{p0}"); - -var part344 = match("MESSAGE#333:537:09/3_1", "nwparser.p0", "%{saddr->} %{daddr}:%{dport}:%{dinterface->} dstMac=%{p0}"); - -var part345 = match("MESSAGE#333:537:09/3_2", "nwparser.p0", "%{saddr->} %{daddr}dstMac=%{p0}"); - -var select92 = linear_select([ - part343, - part344, - part345, -]); - -var part346 = match("MESSAGE#333:537:09/4", "nwparser.p0", "%{} %{dmacaddr->} proto=%{protocol->} sent=%{p0}"); - -var part347 = match("MESSAGE#333:537:09/6_0", "nwparser.p0", "%{fld3->} cdur=%{fld7->} fw_action=\"%{action}\""); - -var select93 = linear_select([ - part347, - dup131, - dup132, - dup133, -]); - -var all66 = all_match({ - processors: [ - dup54, - select91, - dup217, - select92, - part346, - dup218, - select93, - ], - on_success: processor_chain([ - dup111, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg336 = msg("537:09", all66); - -var part348 = match("MESSAGE#334:537:07/3_0", "nwparser.p0", "%{saddr} %{fld3->} cdur=%{fld7->} fw_action=\"%{action}\""); - -var part349 = match("MESSAGE#334:537:07/3_1", "nwparser.p0", "%{saddr} %{fld3->} rpkt=%{fld6->} cdur=%{fld7}"); - -var part350 = match("MESSAGE#334:537:07/3_2", "nwparser.p0", "%{saddr} %{fld3->} cdur=%{fld7}"); - -var part351 = match("MESSAGE#334:537:07/3_3", "nwparser.p0", "%{saddr} %{fld3->} fw_action=\"%{action}\""); - -var part352 = match("MESSAGE#334:537:07/3_4", "nwparser.p0", "%{saddr} %{fld3}"); - -var select94 = linear_select([ - part348, - part349, - part350, - part351, - part352, -]); - -var all67 = all_match({ - processors: [ - dup54, - dup216, - dup217, - select94, - ], - on_success: processor_chain([ - dup111, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg337 = msg("537:07", all67); - -var part353 = match("MESSAGE#335:537/0", "nwparser.payload", "msg=\"%{action}\"%{p0}"); - -var part354 = match("MESSAGE#335:537/1_0", "nwparser.p0", " app=%{fld51->} appName=\"%{application}\"%{p0}"); - -var select95 = linear_select([ - part354, - dup56, -]); - -var part355 = match("MESSAGE#335:537/2", "nwparser.p0", "%{}n=%{fld1->} src= %{p0}"); - -var part356 = match("MESSAGE#335:537/3_0", "nwparser.p0", "%{saddr}%{daddr}:%{dport}:%{dinterface}:%{dhost->} proto=%{p0}"); - -var part357 = match("MESSAGE#335:537/3_1", "nwparser.p0", "%{saddr} %{daddr}:%{dport}:%{dinterface}: proto=%{p0}"); - -var part358 = match("MESSAGE#335:537/3_2", "nwparser.p0", "%{saddr}%{daddr}:%{dport}:%{dinterface->} proto=%{p0}"); - -var part359 = match("MESSAGE#335:537/3_3", "nwparser.p0", "%{saddr}%{daddr->} proto=%{p0}"); - -var select96 = linear_select([ - part356, - part357, - part358, - part359, -]); - -var part360 = match("MESSAGE#335:537/4", "nwparser.p0", "%{protocol->} sent=%{p0}"); - -var part361 = match("MESSAGE#335:537/5_0", "nwparser.p0", "%{sbytes->} rcvd=%{rbytes->} spkt=%{fld3->} rpkt=%{fld4->} cdur=%{fld5->} fw_action=\"%{fld6}\""); - -var part362 = match("MESSAGE#335:537/5_1", "nwparser.p0", "%{sbytes->} rcvd=%{rbytes->} spkt=%{fld3->} rpkt=%{fld4->} fw_action=\"%{fld5}\""); - -var part363 = match("MESSAGE#335:537/5_2", "nwparser.p0", "%{sbytes->} spkt=%{fld3}fw_action=\"%{fld4}\""); - -var part364 = match("MESSAGE#335:537/5_3", "nwparser.p0", "%{sbytes}rcvd=%{rbytes}"); - -var part365 = match_copy("MESSAGE#335:537/5_4", "nwparser.p0", "sbytes"); - -var select97 = linear_select([ - part361, - part362, - part363, - part364, - part365, -]); - -var all68 = all_match({ - processors: [ - part353, - select95, - part355, - select96, - part360, - select97, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg338 = msg("537", all68); - -var part366 = match("MESSAGE#336:537:04/4", "nwparser.p0", "%{protocol->} sent=%{sbytes->} rcvd=%{rbytes->} spkt=%{fld3->} rpkt=%{fld4->} cdur=%{fld5->} npcs=%{info}"); - -var all69 = all_match({ - processors: [ - dup134, - dup190, - dup17, - dup219, - part366, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg339 = msg("537:04", all69); - -var part367 = match("MESSAGE#337:537:05/4", "nwparser.p0", "%{protocol->} sent=%{sbytes->} spkt=%{fld3->} cdur=%{fld4->} %{p0}"); - -var part368 = match("MESSAGE#337:537:05/5_0", "nwparser.p0", "appcat=%{fld5->} appid=%{fld6->} npcs= %{p0}"); - -var part369 = match("MESSAGE#337:537:05/5_1", "nwparser.p0", "npcs= %{p0}"); - -var select98 = linear_select([ - part368, - part369, -]); - -var all70 = all_match({ - processors: [ - dup134, - dup190, - dup17, - dup219, - part367, - select98, - dup96, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg340 = msg("537:05", all70); - -var part370 = match("MESSAGE#338:537:10/0", "nwparser.payload", "msg=\"%{event_description}\" sess=%{fld1->} n=%{fld2->} %{p0}"); - -var part371 = match("MESSAGE#338:537:10/4_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} dstMac=%{p0}"); - -var part372 = match("MESSAGE#338:537:10/4_1", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} dstMac=%{p0}"); - -var part373 = match("MESSAGE#338:537:10/4_2", "nwparser.p0", "%{daddr->} dstMac=%{p0}"); - -var select99 = linear_select([ - part371, - part372, - part373, -]); - -var part374 = match("MESSAGE#338:537:10/5", "nwparser.p0", "%{} %{dmacaddr->} proto=%{protocol->} sent=%{sbytes->} rcvd=%{rbytes->} spkt=%{fld10->} rpkt=%{fld11->} %{p0}"); - -var all71 = all_match({ - processors: [ - part370, - dup220, - dup139, - dup221, - select99, - part374, - dup222, - ], - on_success: processor_chain([ - dup111, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg341 = msg("537:10", all71); - -var part375 = match("MESSAGE#339:537:03/0", "nwparser.payload", "msg=\"%{action}\" sess=%{fld1->} n=%{fld2->} %{p0}"); - -var part376 = match("MESSAGE#339:537:03/4_1", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} proto=%{p0}"); - -var part377 = match("MESSAGE#339:537:03/4_2", "nwparser.p0", "%{daddr->} proto=%{p0}"); - -var select100 = linear_select([ - dup85, - part376, - part377, -]); - -var part378 = match("MESSAGE#339:537:03/5", "nwparser.p0", "%{} %{protocol->} sent=%{sbytes->} rcvd=%{rbytes->} spkt=%{fld10->} rpkt=%{fld11->} %{p0}"); - -var all72 = all_match({ - processors: [ - part375, - dup220, - dup139, - dup221, - select100, - part378, - dup222, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg342 = msg("537:03", all72); - -var part379 = match("MESSAGE#340:537:06/4", "nwparser.p0", "%{protocol->} sent=%{sbytes->} spkt=%{fld3->} npcs=%{info}"); - -var all73 = all_match({ - processors: [ - dup134, - dup190, - dup17, - dup219, - part379, - ], - on_success: processor_chain([ - dup111, - ]), -}); - -var msg343 = msg("537:06", all73); - -var part380 = match("MESSAGE#341:537:11", "nwparser.payload", "msg=\"%{event_description}\" sess=\"%{fld1}\" n=%{fld2}usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{shost}dst=%{daddr}:%{dport}:%{dinterface}:%{dhost}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}sent=%{sbytes}rcvd=%{rbytes}spkt=%{fld3}rpkt=%{fld4}rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup111, - dup62, - dup11, - dup144, -])); - -var msg344 = msg("537:11", part380); - -var part381 = match("MESSAGE#342:537:12", "nwparser.payload", "msg=\"%{event_description}\" sess=\"%{fld1}\" n=%{fld2->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} sent=%{sbytes->} rcvd=%{rbytes->} spkt=%{fld3->} rpkt=%{fld4->} rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup111, - dup62, - dup11, - dup144, -])); - -var msg345 = msg("537:12", part381); - -var select101 = linear_select([ - msg333, - msg334, - msg335, - msg336, - msg337, - msg338, - msg339, - msg340, - msg341, - msg342, - msg343, - msg344, - msg345, -]); - -var msg346 = msg("538", dup240); - -var msg347 = msg("549", dup243); - -var msg348 = msg("557", dup243); - -var all74 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - setc("eventcategory","1402020200"), - ]), -}); - -var msg349 = msg("558", all74); - -var msg350 = msg("561", dup246); - -var msg351 = msg("562", dup246); - -var msg352 = msg("563", dup246); - -var all75 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - setc("eventcategory","1402020400"), - ]), -}); - -var msg353 = msg("583", all75); - -var part382 = match("MESSAGE#351:597:01", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} type=%{icmptype->} code=%{icmpcode}", processor_chain([ - dup145, - dup59, - dup146, - dup61, - dup62, - dup11, - dup147, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg354 = msg("597:01", part382); - -var part383 = match("MESSAGE#352:597:02", "nwparser.payload", "msg=%{msg->} n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} type=%{icmptype->} code=%{icmpcode}", processor_chain([ - dup1, -])); - -var msg355 = msg("597:02", part383); - -var part384 = match("MESSAGE#353:597:03/0", "nwparser.payload", "msg=%{msg->} sess=%{fld1->} n=%{fld2->} src= %{saddr}:%{sport}:%{p0}"); - -var part385 = match("MESSAGE#353:597:03/2", "nwparser.p0", "%{daddr}:%{dport}:%{p0}"); - -var all76 = all_match({ - processors: [ - part384, - dup198, - part385, - dup200, - dup96, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg356 = msg("597:03", all76); - -var select102 = linear_select([ - msg354, - msg355, - msg356, -]); - -var part386 = match("MESSAGE#354:598", "nwparser.payload", "msg=%{msg->} n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} type=%{type->} code=%{code}", processor_chain([ - dup1, -])); - -var msg357 = msg("598", part386); - -var part387 = match("MESSAGE#355:598:01/2", "nwparser.p0", "%{type->} npcs=%{info}"); - -var all77 = all_match({ - processors: [ - dup148, - dup192, - part387, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg358 = msg("598:01", all77); - -var all78 = all_match({ - processors: [ - dup148, - dup200, - dup96, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg359 = msg("598:02", all78); - -var select103 = linear_select([ - msg357, - msg358, - msg359, -]); - -var part388 = match("MESSAGE#357:602:01", "nwparser.payload", "msg=\"%{event_description}allowed\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{fld2->} dst=%{daddr}:%{dport}:%{dinterface}:%{fld3->} proto=%{protocol}/%{fld4}", processor_chain([ - dup145, - dup59, - dup146, - dup61, - dup62, - dup11, - dup147, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg360 = msg("602:01", part388); - -var msg361 = msg("602:02", dup250); - -var all79 = all_match({ - processors: [ - dup7, - dup185, - dup183, - dup43, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg362 = msg("602:03", all79); - -var select104 = linear_select([ - msg360, - msg361, - msg362, -]); - -var msg363 = msg("605", dup208); - -var all80 = all_match({ - processors: [ - dup149, - dup223, - dup152, - dup211, - dup119, - ], - on_success: processor_chain([ - dup93, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg364 = msg("606", all80); - -var part389 = match("MESSAGE#362:608/0", "nwparser.payload", "msg=\"%{msg}\" sid=%{sid->} ipscat=%{ipscat->} ipspri=%{p0}"); - -var part390 = match("MESSAGE#362:608/1_0", "nwparser.p0", "%{fld66->} pktdatId=%{fld11->} n=%{p0}"); - -var part391 = match("MESSAGE#362:608/1_1", "nwparser.p0", "%{ipspri->} n=%{p0}"); - -var select105 = linear_select([ - part390, - part391, -]); - -var part392 = match("MESSAGE#362:608/2", "nwparser.p0", "%{fld1->} src=%{saddr}:%{p0}"); - -var part393 = match("MESSAGE#362:608/3_0", "nwparser.p0", "%{sport}:%{sinterface->} dst=%{p0}"); - -var part394 = match("MESSAGE#362:608/3_1", "nwparser.p0", "%{sport->} dst=%{p0}"); - -var select106 = linear_select([ - part393, - part394, -]); - -var part395 = match("MESSAGE#362:608/5_0", "nwparser.p0", "%{dport}:%{dinterface->} proto=%{protocol->} fw_action=\"%{fld2}\""); - -var select107 = linear_select([ - part395, - dup154, - dup155, -]); - -var all81 = all_match({ - processors: [ - part389, - select105, - part392, - select106, - dup153, - select107, - ], - on_success: processor_chain([ - dup1, - dup44, - ]), -}); - -var msg365 = msg("608", all81); - -var msg366 = msg("616", dup206); - -var msg367 = msg("658", dup201); - -var msg368 = msg("710", dup224); - -var msg369 = msg("712:02", dup251); - -var msg370 = msg("712", dup224); - -var all82 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup202, - dup100, - ], - on_success: processor_chain([ - dup156, - ]), -}); - -var msg371 = msg("712:01", all82); - -var select108 = linear_select([ - msg369, - msg370, - msg371, -]); - -var part396 = match("MESSAGE#369:713:01", "nwparser.payload", "msg=\"%{event_description}dropped\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{fld2->} dst=%{daddr}:%{dport}:%{dinterface}:%{fld3->} note=%{info}", processor_chain([ - dup5, - dup59, - dup60, - dup61, - dup62, - dup11, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg372 = msg("713:01", part396); - -var msg373 = msg("713:04", dup251); - -var msg374 = msg("713:02", dup224); - -var part397 = match("MESSAGE#372:713:03", "nwparser.payload", "msg=\"%{event_description}dropped\" sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} note=\"%{action}\" npcs=%{info}", processor_chain([ - dup5, - dup59, - dup60, - dup61, - dup62, - dup11, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg375 = msg("713:03", part397); - -var select109 = linear_select([ - msg372, - msg373, - msg374, - msg375, -]); - -var part398 = match("MESSAGE#373:760", "nwparser.payload", "msg=\"%{event_description}dropped\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} note=%{info}", processor_chain([ - dup120, - dup59, - dup60, - dup61, - dup62, - dup11, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg376 = msg("760", part398); - -var part399 = match("MESSAGE#374:760:01/0", "nwparser.payload", "msg=\"%{event_description}dropped\" sess=%{fld1->} n=%{fld2->} src=%{p0}"); - -var part400 = match("MESSAGE#374:760:01/4", "nwparser.p0", "%{action->} npcs=%{info}"); - -var all83 = all_match({ - processors: [ - part399, - dup182, - dup10, - dup202, - part400, - ], - on_success: processor_chain([ - dup120, - dup59, - dup60, - dup61, - dup62, - dup11, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg377 = msg("760:01", all83); - -var select110 = linear_select([ - msg376, - msg377, -]); - -var msg378 = msg("766", dup228); - -var msg379 = msg("860", dup228); - -var msg380 = msg("860:01", dup229); - -var select111 = linear_select([ - msg379, - msg380, -]); - -var part401 = match("MESSAGE#378:866/0", "nwparser.payload", "msg=\"%{msg}\" n=%{p0}"); - -var part402 = match("MESSAGE#378:866/1_0", "nwparser.p0", "%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} fw_action=\"%{action}\""); - -var part403 = match_copy("MESSAGE#378:866/1_1", "nwparser.p0", "ntype"); - -var select112 = linear_select([ - part402, - part403, -]); - -var all84 = all_match({ - processors: [ - part401, - select112, - ], - on_success: processor_chain([ - dup5, - dup44, - ]), -}); - -var msg381 = msg("866", all84); - -var msg382 = msg("866:01", dup229); - -var select113 = linear_select([ - msg381, - msg382, -]); - -var msg383 = msg("867", dup228); - -var msg384 = msg("867:01", dup229); - -var select114 = linear_select([ - msg383, - msg384, -]); - -var part404 = match("MESSAGE#382:882", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol}", processor_chain([ - dup1, -])); - -var msg385 = msg("882", part404); - -var part405 = match("MESSAGE#383:882:01", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol->} npcs=%{info}", processor_chain([ - dup1, -])); - -var msg386 = msg("882:01", part405); - -var select115 = linear_select([ - msg385, - msg386, -]); - -var part406 = match("MESSAGE#384:888", "nwparser.payload", "msg=\"%{reason};%{action}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost}", processor_chain([ - dup165, -])); - -var msg387 = msg("888", part406); - -var part407 = match("MESSAGE#385:888:01", "nwparser.payload", "msg=\"%{reason};%{action}\" sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} note=%{fld3->} npcs=%{info}", processor_chain([ - dup165, -])); - -var msg388 = msg("888:01", part407); - -var select116 = linear_select([ - msg387, - msg388, -]); - -var all85 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup165, - ]), -}); - -var msg389 = msg("892", all85); - -var msg390 = msg("904", dup228); - -var msg391 = msg("905", dup228); - -var msg392 = msg("906", dup228); - -var msg393 = msg("907", dup228); - -var part408 = match("MESSAGE#391:908/1_0", "nwparser.p0", "%{sinterface}:%{shost->} dst=%{p0}"); - -var select117 = linear_select([ - part408, - dup167, -]); - -var all86 = all_match({ - processors: [ - dup166, - select117, - dup168, - dup223, - dup169, - dup211, - dup119, - ], - on_success: processor_chain([ - dup78, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg394 = msg("908", all86); - -var msg395 = msg("909", dup228); - -var msg396 = msg("914", dup230); - -var part409 = match("MESSAGE#394:931", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport}", processor_chain([ - dup72, -])); - -var msg397 = msg("931", part409); - -var msg398 = msg("657", dup230); - -var all87 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var msg399 = msg("657:01", all87); - -var select118 = linear_select([ - msg398, - msg399, -]); - -var msg400 = msg("403", dup209); - -var msg401 = msg("534", dup184); - -var msg402 = msg("994", dup231); - -var part410 = match("MESSAGE#400:243", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} usr=%{username->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} proto=%{protocol}", processor_chain([ - dup1, - dup24, -])); - -var msg403 = msg("243", part410); - -var msg404 = msg("995", dup184); - -var part411 = match("MESSAGE#402:997", "nwparser.payload", "msg=\"%{event_description}\" sess=\"%{fld1}\" n=%{fld2->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface}:%{fld3->} dst=%{daddr}:%{dport}:%{dinterface}:%{fld4->} note=\"%{info}\"", processor_chain([ - dup1, - dup59, - dup61, - dup62, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg405 = msg("997", part411); - -var msg406 = msg("998", dup231); - -var part412 = match("MESSAGE#405:998:01", "nwparser.payload", "msg=\"%{msg}\" sess=\"%{fld1}\" dur=%{duration->} n=%{fld3->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol->} note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - dup111, - dup11, -])); - -var msg407 = msg("998:01", part412); - -var select119 = linear_select([ - msg406, - msg407, -]); - -var msg408 = msg("1110", dup232); - -var msg409 = msg("565", dup232); - -var part413 = match("MESSAGE#408:404", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} note=\"%{event_description}\"", processor_chain([ - dup1, - dup62, -])); - -var msg410 = msg("404", part413); - -var part414 = match("MESSAGE#409:267:01/1_0", "nwparser.p0", "%{daddr}:%{dport->} srcMac=%{p0}"); - -var select120 = linear_select([ - part414, - dup58, -]); - -var part415 = match("MESSAGE#409:267:01/2", "nwparser.p0", "%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} note=\"%{fld3}\" fw_action=\"%{action}\""); - -var all88 = all_match({ - processors: [ - dup87, - select120, - part415, - ], - on_success: processor_chain([ - dup111, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg411 = msg("267:01", all88); - -var part416 = match("MESSAGE#410:267", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}", processor_chain([ - dup1, - dup62, -])); - -var msg412 = msg("267", part416); - -var select121 = linear_select([ - msg411, - msg412, -]); - -var part417 = match("MESSAGE#411:263", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr->} proto=%{protocol}", processor_chain([ - dup1, - dup24, -])); - -var msg413 = msg("263", part417); - -var part418 = match("MESSAGE#412:264", "nwparser.payload", "msg=\"%{msg}\" sess=\"%{fld1}\" dur=%{duration->} n=%{fld2->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} fw_action=\"%{action}\"", processor_chain([ - dup109, - dup11, -])); - -var msg414 = msg("264", part418); - -var msg415 = msg("412", dup209); - -var part419 = match("MESSAGE#415:793", "nwparser.payload", "msg=\"%{msg}\" af_polid=%{fld1->} af_policy=\"%{fld2}\" af_type=\"%{fld3}\" af_service=\"%{fld4}\" af_action=\"%{fld5}\" n=%{fld6->} src=%{stransaddr}:%{stransport}:%{sinterface}:%{shost->} dst=%{dtransaddr}:%{dtransport}:%{dinterface}:%{dhost}", processor_chain([ - dup1, - dup24, -])); - -var msg416 = msg("793", part419); - -var part420 = match("MESSAGE#416:805", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} if=%{fld2->} ucastRx=%{fld3->} bcastRx=%{fld4->} bytesRx=%{rbytes->} ucastTx=%{fld5->} bcastTx=%{fld6->} bytesTx=%{sbytes}", processor_chain([ - dup1, - dup24, -])); - -var msg417 = msg("805", part420); - -var part421 = match("MESSAGE#417:809", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface->} fw_action=\"%{action}\"", processor_chain([ - dup170, - dup11, -])); - -var msg418 = msg("809", part421); - -var part422 = match("MESSAGE#418:809:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} fw_action=\"%{action}\"", processor_chain([ - dup170, - dup11, -])); - -var msg419 = msg("809:01", part422); - -var select122 = linear_select([ - msg418, - msg419, -]); - -var msg420 = msg("935", dup230); - -var msg421 = msg("614", dup233); - -var part423 = match("MESSAGE#421:748/0", "nwparser.payload", "msg=\"%{event_description}\" sess=\"%{fld1}\" dur=%{duration->} n=%{fld2->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{p0}"); - -var all89 = all_match({ - processors: [ - part423, - dup211, - dup119, - ], - on_success: processor_chain([ - dup66, - dup44, - ]), -}); - -var msg422 = msg("748", all89); - -var part424 = match("MESSAGE#422:794/0", "nwparser.payload", "msg=\"%{event_description}\" sid=%{sid->} spycat=%{fld1->} spypri=%{fld2->} pktdatId=%{fld3->} n=%{fld4->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{p0}"); - -var part425 = match("MESSAGE#422:794/1_0", "nwparser.p0", "%{protocol}/%{fld5->} fw_action=\"%{p0}"); - -var select123 = linear_select([ - part425, - dup118, -]); - -var all90 = all_match({ - processors: [ - part424, - select123, - dup119, - ], - on_success: processor_chain([ - dup171, - dup44, - ]), -}); - -var msg423 = msg("794", all90); - -var msg424 = msg("1086", dup233); - -var part426 = match("MESSAGE#424:1430", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} srcV6=%{saddr_v6->} src=%{saddr}:%{sport}:%{sinterface->} dstV6=%{daddr_v6->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} fw_action=\"%{action}\"", processor_chain([ - dup171, - dup44, -])); - -var msg425 = msg("1430", part426); - -var msg426 = msg("1149", dup233); - -var msg427 = msg("1159", dup233); - -var part427 = match("MESSAGE#427:1195", "nwparser.payload", "n=%{fld1->} fw_action=\"%{action}\"", processor_chain([ - dup171, - dup44, -])); - -var msg428 = msg("1195", part427); - -var part428 = match("MESSAGE#428:1195:01", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1}", processor_chain([ - dup171, - dup44, -])); - -var msg429 = msg("1195:01", part428); - -var select124 = linear_select([ - msg428, - msg429, -]); - -var part429 = match("MESSAGE#429:1226", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} fw_action=\"%{action}\"", processor_chain([ - dup5, - dup44, -])); - -var msg430 = msg("1226", part429); - -var part430 = match("MESSAGE#430:1222", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport->} note=\"%{fld3}\" fw_action=\"%{action}\"", processor_chain([ - dup5, - dup44, -])); - -var msg431 = msg("1222", part430); - -var part431 = match("MESSAGE#431:1154", "nwparser.payload", "msg=\"%{msg}\" sid=%{sid->} appcat=%{fld1->} appid=%{fld2->} n=%{fld3->} src=%{stransaddr}:%{stransport}:%{sinterface}:%{shost->} dst=%{dtransaddr}:%{dtransport}:%{dinterface}:%{dhost}", processor_chain([ - dup1, - dup24, -])); - -var msg432 = msg("1154", part431); - -var part432 = match("MESSAGE#432:1154:01/0", "nwparser.payload", "msg=\"%{msg}\" sid=%{sid->} appcat=%{fld1->} appid=%{fld2->} n=%{fld3->} src=%{p0}"); - -var all91 = all_match({ - processors: [ - part432, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup1, - dup24, - ]), -}); - -var msg433 = msg("1154:01", all91); - -var part433 = match("MESSAGE#433:1154:02", "nwparser.payload", "msg=\"%{msg}\" sid=%{sid->} appcat=\"%{fld1}\" appid%{fld2->} catid=%{fld3->} sess=\"%{fld4}\" n=%{fld5->} usr=\"%{username}\" src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup172, - dup11, -])); - -var msg434 = msg("1154:02", part433); - -var part434 = match("MESSAGE#434:1154:03/0", "nwparser.payload", "msg=\"%{msg}\" sid=%{sid->} appcat=\"%{fld1}\" appid=%{fld2->} catid=%{fld3->} n=%{fld4->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{p0}"); - -var part435 = match("MESSAGE#434:1154:03/1_0", "nwparser.p0", "%{dinterface}:%{dhost->} srcMac=%{p0}"); - -var select125 = linear_select([ - part435, - dup79, -]); - -var part436 = match("MESSAGE#434:1154:03/2", "nwparser.p0", "%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} rule=\"%{rule}\" fw_action=\"%{action}\""); - -var all92 = all_match({ - processors: [ - part434, - select125, - part436, - ], - on_success: processor_chain([ - dup172, - dup11, - ]), -}); - -var msg435 = msg("1154:03", all92); - -var select126 = linear_select([ - msg432, - msg433, - msg434, - msg435, -]); - -var part437 = match("MESSAGE#435:msg", "nwparser.payload", "msg=\"%{msg}\" src=%{stransaddr->} dst=%{dtransaddr->} %{result}", processor_chain([ - dup173, -])); - -var msg436 = msg("msg", part437); - -var part438 = match("MESSAGE#436:src", "nwparser.payload", "src=%{stransaddr->} dst=%{dtransaddr->} %{msg}", processor_chain([ - dup173, -])); - -var msg437 = msg("src", part438); - -var all93 = all_match({ - processors: [ - dup7, - dup185, - dup183, - dup17, - dup212, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg438 = msg("1235", all93); - -var part439 = match("MESSAGE#438:1197/4", "nwparser.p0", "\"%{fld3->} Protocol:%{protocol}\" npcs=%{info}"); - -var all94 = all_match({ - processors: [ - dup7, - dup185, - dup10, - dup202, - part439, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg439 = msg("1197", all94); - -var part440 = match("MESSAGE#439:1199/0", "nwparser.payload", "msg=\"%{msg}\" note=\"%{fld3->} sess=%{fld1->} n=%{fld2->} src=%{p0}"); - -var all95 = all_match({ - processors: [ - part440, - dup185, - dup174, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg440 = msg("1199", all95); - -var part441 = match("MESSAGE#440:1199:01", "nwparser.payload", "msg=\"Responder from country blocked: Responder IP:%{fld1}Country Name:%{location_country}\" n=%{fld2}src=%{saddr}:%{sport}:%{sinterface}dst=%{daddr}:%{dport}:%{dinterface}:%{dhost}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup175, - dup11, -])); - -var msg441 = msg("1199:01", part441); - -var part442 = match("MESSAGE#441:1199:02", "nwparser.payload", "msg=\"Responder from country blocked: Responder IP:%{fld1}Country Name:%{location_country}\" n=%{fld2}src=%{saddr}:%{sport}:%{sinterface}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}rule=\"%{rule}\" fw_action=\"%{action}\"", processor_chain([ - dup175, - dup11, -])); - -var msg442 = msg("1199:02", part442); - -var select127 = linear_select([ - msg440, - msg441, - msg442, -]); - -var part443 = match("MESSAGE#442:1155/0", "nwparser.payload", "msg=\"%{msg}\" sid=%{sid->} appcat=%{fld1->} appid=%{fld2->} catid=%{fld3->} sess=%{fld4->} n=%{fld5->} src=%{p0}"); - -var all96 = all_match({ - processors: [ - part443, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg443 = msg("1155", all96); - -var part444 = match("MESSAGE#443:1155:01", "nwparser.payload", "msg=\"%{action}\" sid=%{sid->} appcat=%{fld1->} appid=%{fld2->} n=%{fld3->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost}", processor_chain([ - dup111, -])); - -var msg444 = msg("1155:01", part444); - -var select128 = linear_select([ - msg443, - msg444, -]); - -var all97 = all_match({ - processors: [ - dup176, - dup213, - dup174, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg445 = msg("1198", all97); - -var all98 = all_match({ - processors: [ - dup7, - dup185, - dup174, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg446 = msg("714", all98); - -var msg447 = msg("709", dup252); - -var msg448 = msg("1005", dup252); - -var msg449 = msg("1003", dup252); - -var msg450 = msg("1007", dup253); - -var part445 = match("MESSAGE#450:1008", "nwparser.payload", "msg=\"%{msg}\" sess=\"%{fld1}\" dur=%{duration->} n=%{fld2->} usr=\"%{username}\" src=%{saddr}::%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol->} note=\"%{rulename}\" fw_action=\"%{action}\"", processor_chain([ - dup109, - dup11, -])); - -var msg451 = msg("1008", part445); - -var msg452 = msg("708", dup253); - -var all99 = all_match({ - processors: [ - dup176, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg453 = msg("1201", all99); - -var msg454 = msg("1201:01", dup253); - -var select129 = linear_select([ - msg453, - msg454, -]); - -var msg455 = msg("654", dup234); - -var msg456 = msg("670", dup234); - -var msg457 = msg("884", dup253); - -var part446 = match("MESSAGE#457:1153", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface}:%{dhost->} proto=%{protocol->} rcvd=%{rbytes->} note=\"%{info}\"", processor_chain([ - dup1, -])); - -var msg458 = msg("1153", part446); - -var part447 = match("MESSAGE#458:1153:01/1_0", "nwparser.p0", " app=%{fld1->} sess=%{fld2->} n=%{p0}"); - -var part448 = match("MESSAGE#458:1153:01/1_1", "nwparser.p0", " sess=%{fld2->} n=%{p0}"); - -var part449 = match("MESSAGE#458:1153:01/1_2", "nwparser.p0", " n=%{p0}"); - -var select130 = linear_select([ - part447, - part448, - part449, -]); - -var part450 = match("MESSAGE#458:1153:01/2", "nwparser.p0", "%{fld3->} usr=\"%{username}\" src=%{p0}"); - -var part451 = match("MESSAGE#458:1153:01/3_0", "nwparser.p0", " %{saddr}:%{sport}:%{sinterface}:%{shost->} dst= %{p0}"); - -var select131 = linear_select([ - part451, - dup26, -]); - -var part452 = match("MESSAGE#458:1153:01/4_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}srcMac= %{p0}"); - -var part453 = match("MESSAGE#458:1153:01/4_1", "nwparser.p0", "%{daddr}:%{dport}srcMac= %{p0}"); - -var part454 = match("MESSAGE#458:1153:01/4_2", "nwparser.p0", "%{daddr}srcMac= %{p0}"); - -var select132 = linear_select([ - part452, - part453, - part454, -]); - -var part455 = match("MESSAGE#458:1153:01/5", "nwparser.p0", "%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} %{p0}"); - -var part456 = match("MESSAGE#458:1153:01/6_0", "nwparser.p0", "sent=%{sbytes}rcvd=%{p0}"); - -var part457 = match("MESSAGE#458:1153:01/6_1", "nwparser.p0", "type=%{fld4->} icmpCode=%{fld5->} rcvd=%{p0}"); - -var part458 = match("MESSAGE#458:1153:01/6_2", "nwparser.p0", "rcvd=%{p0}"); - -var select133 = linear_select([ - part456, - part457, - part458, -]); - -var all100 = all_match({ - processors: [ - dup54, - select130, - part450, - select131, - select132, - part455, - select133, - dup123, - ], - on_success: processor_chain([ - dup1, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg459 = msg("1153:01", all100); - -var part459 = match("MESSAGE#459:1153:02/1_0", "nwparser.p0", "app=%{fld1->} n=%{fld2->} src=%{p0}"); - -var part460 = match("MESSAGE#459:1153:02/1_1", "nwparser.p0", "n=%{fld2->} src=%{p0}"); - -var select134 = linear_select([ - part459, - part460, -]); - -var part461 = match("MESSAGE#459:1153:02/2", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface}:%{shost->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} sent=%{sbytes->} rcvd=%{rbytes}"); - -var all101 = all_match({ - processors: [ - dup82, - select134, - part461, - ], - on_success: processor_chain([ - dup1, - dup11, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var msg460 = msg("1153:02", all101); - -var select135 = linear_select([ - msg458, - msg459, - msg460, -]); - -var part462 = match("MESSAGE#460:1107", "nwparser.payload", "msg=\"%{msg}\"%{space}n=%{fld1}", processor_chain([ - dup1, -])); - -var msg461 = msg("1107", part462); - -var part463 = match("MESSAGE#461:1220/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{p0}"); - -var part464 = match("MESSAGE#461:1220/1_0", "nwparser.p0", "%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst= %{p0}"); - -var part465 = match("MESSAGE#461:1220/1_1", "nwparser.p0", "%{fld2}src=%{saddr}:%{sport->} dst= %{p0}"); - -var select136 = linear_select([ - part464, - part465, -]); - -var all102 = all_match({ - processors: [ - part463, - select136, - dup153, - dup235, - dup179, - ], - on_success: processor_chain([ - dup165, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg462 = msg("1220", all102); - -var all103 = all_match({ - processors: [ - dup149, - dup235, - dup179, - ], - on_success: processor_chain([ - dup165, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg463 = msg("1230", all103); - -var part466 = match("MESSAGE#463:1231", "nwparser.payload", "msg=\"%{msg}\"%{space}n=%{fld1->} note=\"%{info}\"", processor_chain([ - dup1, -])); - -var msg464 = msg("1231", part466); - -var part467 = match("MESSAGE#464:1233", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} srcV6=%{saddr_v6->} src=%{saddr}:%{sport}:%{sinterface->} dstV6=%{daddr_v6->} dst=%{daddr}:%{dport->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} fw_action=\"%{action}\"", processor_chain([ - dup175, - dup11, -])); - -var msg465 = msg("1233", part467); - -var part468 = match("MESSAGE#465:1079/0", "nwparser.payload", "msg=\"User%{username}log%{p0}"); - -var part469 = match("MESSAGE#465:1079/1_0", "nwparser.p0", "in%{p0}"); - -var part470 = match("MESSAGE#465:1079/1_1", "nwparser.p0", "out%{p0}"); - -var select137 = linear_select([ - part469, - part470, -]); - -var part471 = match("MESSAGE#465:1079/2", "nwparser.p0", "\"%{p0}"); - -var part472 = match("MESSAGE#465:1079/3_0", "nwparser.p0", "dur=%{duration->} %{space}n=%{p0}"); - -var part473 = match("MESSAGE#465:1079/3_1", "nwparser.p0", "sess=\"%{fld2}\" n=%{p0}"); - -var select138 = linear_select([ - part472, - part473, - dup38, -]); - -var part474 = match_copy("MESSAGE#465:1079/4", "nwparser.p0", "fld1"); - -var all104 = all_match({ - processors: [ - part468, - select137, - part471, - select138, - part474, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg466 = msg("1079", all104); - -var part475 = match("MESSAGE#466:1079:01", "nwparser.payload", "msg=\"Client%{username}is assigned IP:%{hostip}\" %{space->} n=%{fld1}", processor_chain([ - dup1, -])); - -var msg467 = msg("1079:01", part475); - -var part476 = match("MESSAGE#467:1079:02", "nwparser.payload", "msg=\"destination for %{daddr->} is not allowed by access control\" n=%{fld2}", processor_chain([ - dup1, - dup11, - setc("event_description","destination is not allowed by access control"), - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg468 = msg("1079:02", part476); - -var part477 = match("MESSAGE#468:1079:03", "nwparser.payload", "msg=\"SSLVPN Client %{username->} matched device profile Default Device Profile for Windows\" n=%{fld2}", processor_chain([ - dup1, - dup11, - setc("event_description","SSLVPN Client matched device profile Default Device Profile for Windows"), - dup18, - dup19, - dup20, - dup21, - dup22, -])); - -var msg469 = msg("1079:03", part477); - -var select139 = linear_select([ - msg466, - msg467, - msg468, - msg469, -]); - -var part478 = match("MESSAGE#469:1080/0", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} usr=\"%{username}\" src= %{p0}"); - -var part479 = match("MESSAGE#469:1080/1_1", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} dst= %{p0}"); - -var select140 = linear_select([ - dup8, - part479, -]); - -var part480 = match("MESSAGE#469:1080/2_1", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} proto= %{p0}"); - -var select141 = linear_select([ - dup135, - part480, -]); - -var part481 = match_copy("MESSAGE#469:1080/3", "nwparser.p0", "protocol"); - -var all105 = all_match({ - processors: [ - part478, - select140, - select141, - part481, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var msg470 = msg("1080", all105); - -var part482 = match("MESSAGE#470:580", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{protocol->} note=\"%{info}\" fw_action=\"%{action}\"", processor_chain([ - dup5, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg471 = msg("580", part482); - -var part483 = match("MESSAGE#471:1369/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld2}src=%{saddr}:%{sport}:%{sinterface}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{p0}"); - -var all106 = all_match({ - processors: [ - part483, - dup236, - dup119, - ], - on_success: processor_chain([ - dup78, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg472 = msg("1369", all106); - -var all107 = all_match({ - processors: [ - dup149, - dup223, - dup152, - dup236, - dup119, - ], - on_success: processor_chain([ - dup78, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg473 = msg("1370", all107); - -var all108 = all_match({ - processors: [ - dup149, - dup223, - dup169, - dup211, - dup119, - ], - on_success: processor_chain([ - dup78, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg474 = msg("1371", all108); - -var part484 = match("MESSAGE#474:1387/1_1", "nwparser.p0", " dst=%{p0}"); - -var select142 = linear_select([ - dup167, - part484, -]); - -var all109 = all_match({ - processors: [ - dup166, - select142, - dup168, - dup223, - dup169, - dup211, - dup119, - ], - on_success: processor_chain([ - dup165, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg475 = msg("1387", all109); - -var part485 = match("MESSAGE#475:1391/0", "nwparser.payload", "pktdatId=%{fld1}pktdatNum=\"%{fld2}\" pktdatEnc=\"%{fld3}\" n=%{fld4}src=%{saddr}:%{p0}"); - -var part486 = match("MESSAGE#475:1391/1_0", "nwparser.p0", "%{sport}:%{sinterface}dst=%{p0}"); - -var part487 = match("MESSAGE#475:1391/1_1", "nwparser.p0", "%{sport}dst=%{p0}"); - -var select143 = linear_select([ - part486, - part487, -]); - -var part488 = match("MESSAGE#475:1391/3_0", "nwparser.p0", "%{dport}:%{dinterface}:%{dhost}"); - -var select144 = linear_select([ - part488, - dup154, - dup155, -]); - -var all110 = all_match({ - processors: [ - part485, - select143, - dup153, - select144, - ], - on_success: processor_chain([ - dup1, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg476 = msg("1391", all110); - -var part489 = match("MESSAGE#476:1253", "nwparser.payload", "msg=\"%{event_description}\" app=%{fld1}appName=\"%{application}\" n=%{fld2}src=%{saddr}:%{sport}:%{sinterface}dst=%{daddr}:%{dport}:%{dinterface}srcMac=%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}fw_action=\"%{action}\"", processor_chain([ - dup5, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg477 = msg("1253", part489); - -var part490 = match("MESSAGE#477:1009", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld2}note=\"%{info}\" fw_action=\"%{action}\"", processor_chain([ - dup5, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg478 = msg("1009", part490); - -var part491 = match("MESSAGE#478:910/0", "nwparser.payload", "msg=\"%{event_description}\" app=%{fld2}appName=\"%{application}\" n=%{fld3}src=%{saddr}:%{sport}:%{sinterface}dst=%{daddr}:%{dport}:%{p0}"); - -var part492 = match("MESSAGE#478:910/1_0", "nwparser.p0", "%{dinterface}:%{dhost}srcMac=%{p0}"); - -var part493 = match("MESSAGE#478:910/1_1", "nwparser.p0", "%{dinterface}srcMac=%{p0}"); - -var select145 = linear_select([ - part492, - part493, -]); - -var part494 = match("MESSAGE#478:910/2", "nwparser.p0", "%{smacaddr}dstMac=%{dmacaddr}proto=%{protocol}fw_action=\"%{action}\""); - -var all111 = all_match({ - processors: [ - part491, - select145, - part494, - ], - on_success: processor_chain([ - dup5, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg479 = msg("910", all111); - -var part495 = match("MESSAGE#479:m:01", "nwparser.payload", "m=%{id1}msg=\"%{event_description}\" n=%{fld2}if=%{interface}ucastRx=%{fld3}bcastRx=%{fld4}bytesRx=%{rbytes}ucastTx=%{fld5}bcastTx=%{fld6}bytesTx=%{sbytes}", processor_chain([ - dup1, - dup62, - dup18, - dup88, - dup20, - dup22, - dup44, -])); - -var msg480 = msg("m:01", part495); - -var part496 = match("MESSAGE#480:1011", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1}note=\"%{info}\" fw_action=\"%{action}\"", processor_chain([ - dup1, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg481 = msg("1011", part496); - -var part497 = match("MESSAGE#481:609", "nwparser.payload", "msg=\"%{event_description}\" sid=%{sid->} ipscat=\"%{fld3}\" ipspri=%{fld4->} pktdatId=%{fld5->} n=%{fld6->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} proto=%{protocol->} fw_action=\"%{action}\"", processor_chain([ - dup172, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg482 = msg("609", part497); - -var msg483 = msg("796", dup237); - -var part498 = match("MESSAGE#483:880", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} note=\"%{info}\" fw_action=\"%{action}\"", processor_chain([ - dup78, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg484 = msg("880", part498); - -var part499 = match("MESSAGE#484:1309", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} fw_action=\"%{action}\"", processor_chain([ - dup165, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var msg485 = msg("1309", part499); - -var msg486 = msg("1310", dup237); - -var part500 = match("MESSAGE#486:1232/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{p0}"); - -var part501 = match("MESSAGE#486:1232/1_0", "nwparser.p0", "%{dinterface}:%{dhost->} note=\"%{p0}"); - -var part502 = match("MESSAGE#486:1232/1_1", "nwparser.p0", "%{dinterface->} note=\"%{p0}"); - -var select146 = linear_select([ - part501, - part502, -]); - -var part503 = match("MESSAGE#486:1232/2", "nwparser.p0", "%{info}\" fw_action=\"%{action}\""); - -var all112 = all_match({ - processors: [ - part500, - select146, - part503, - ], - on_success: processor_chain([ - dup1, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg487 = msg("1232", all112); - -var part504 = match("MESSAGE#487:1447/0", "nwparser.payload", "msg=\"%{event_description}\" app=%{fld1->} appName=\"%{application}\" n=%{fld2->} srcV6=%{saddr_v6->} src=%{saddr}:%{sport}:%{sinterface->} dstV6=%{daddr_v6->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{smacaddr->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var all113 = all_match({ - processors: [ - part504, - dup211, - dup119, - ], - on_success: processor_chain([ - dup165, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, - ]), -}); - -var msg488 = msg("1447", all113); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "10": msg9, - "100": msg159, - "1003": msg449, - "1005": msg448, - "1007": msg450, - "1008": msg451, - "1009": msg478, - "101": msg160, - "1011": msg481, - "102": msg161, - "103": msg162, - "104": msg163, - "105": msg164, - "106": msg165, - "107": msg166, - "1079": select139, - "108": msg167, - "1080": msg470, - "1086": msg424, - "109": msg168, - "11": msg10, - "110": msg169, - "1107": msg461, - "111": select57, - "1110": msg408, - "112": msg172, - "113": msg173, - "114": msg174, - "1149": msg426, - "115": select58, - "1153": select135, - "1154": select126, - "1155": select128, - "1159": msg427, - "116": msg177, - "117": msg178, - "118": msg179, - "119": msg180, - "1195": select124, - "1197": msg439, - "1198": msg445, - "1199": select127, - "12": select4, - "120": msg181, - "1201": select129, - "121": msg182, - "122": msg183, - "1220": msg462, - "1222": msg431, - "1226": msg430, - "123": msg184, - "1230": msg463, - "1231": msg464, - "1232": msg487, - "1233": msg465, - "1235": msg438, - "124": msg185, - "125": msg186, - "1253": msg477, - "1254": msg187, - "1256": msg188, - "1257": msg189, - "126": msg190, - "127": msg191, - "128": msg192, - "129": msg193, - "13": msg13, - "130": msg194, - "1309": msg485, - "131": msg195, - "1310": msg486, - "132": msg196, - "133": msg197, - "134": msg198, - "135": msg199, - "136": msg200, - "1369": msg472, - "137": msg201, - "1370": msg473, - "1371": msg474, - "138": msg202, - "1387": msg475, - "139": select59, - "1391": msg476, - "14": select7, - "140": msg205, - "141": msg206, - "142": msg207, - "143": msg208, - "1430": msg425, - "1431": msg209, - "144": msg210, - "1447": msg488, - "145": msg211, - "146": msg212, - "147": msg213, - "148": msg214, - "1480": msg215, - "149": msg216, - "15": msg20, - "150": msg217, - "151": msg218, - "152": msg219, - "153": msg220, - "154": msg221, - "155": msg222, - "156": msg223, - "157": select60, - "158": msg226, - "159": msg227, - "16": msg21, - "160": msg228, - "161": msg229, - "162": msg230, - "163": msg231, - "164": msg232, - "165": msg233, - "166": msg234, - "167": msg235, - "168": msg236, - "169": msg237, - "17": msg22, - "170": msg238, - "171": select61, - "172": select62, - "173": msg245, - "174": select63, - "175": select64, - "176": msg253, - "177": msg254, - "178": msg255, - "179": msg256, - "18": msg23, - "180": select65, - "181": select66, - "19": msg24, - "193": msg261, - "194": msg262, - "195": msg263, - "196": select67, - "199": msg266, - "20": msg25, - "200": msg267, - "21": msg26, - "22": msg27, - "23": select10, - "235": select68, - "236": msg271, - "237": msg272, - "238": msg273, - "239": msg274, - "24": select11, - "240": msg275, - "241": select69, - "242": msg278, - "243": msg403, - "25": msg34, - "252": msg279, - "255": msg280, - "257": msg281, - "26": msg35, - "261": select72, - "262": msg284, - "263": msg413, - "264": msg414, - "267": select121, - "27": msg36, - "273": msg285, - "28": select12, - "29": select13, - "30": select14, - "31": select15, - "32": select16, - "328": msg286, - "329": msg287, - "33": select17, - "34": msg52, - "346": msg288, - "35": select18, - "350": msg289, - "351": msg290, - "352": msg291, - "353": select73, - "354": msg294, - "355": select74, - "356": msg297, - "357": select75, - "358": msg300, - "36": select21, - "37": select23, - "371": select76, - "372": msg303, - "373": msg304, - "38": select25, - "39": msg67, - "4": msg1, - "40": msg68, - "401": msg305, - "402": msg306, - "403": msg400, - "404": msg410, - "406": msg307, - "41": select26, - "412": msg415, - "413": msg308, - "414": msg309, - "42": msg72, - "427": msg156, - "428": msg157, - "43": msg73, - "438": msg310, - "439": msg311, - "44": msg74, - "440": msg312, - "441": select77, - "442": msg315, - "446": msg316, - "45": select27, - "46": select28, - "47": msg82, - "477": msg317, - "48": msg83, - "49": msg84, - "5": select2, - "50": msg85, - "509": msg318, - "51": msg86, - "52": msg87, - "520": msg319, - "522": select80, - "523": msg323, - "524": select83, - "526": select86, - "53": msg88, - "534": msg401, - "537": select101, - "538": msg346, - "549": msg347, - "557": msg348, - "558": msg349, - "561": msg350, - "562": msg351, - "563": msg352, - "565": msg409, - "58": msg89, - "580": msg471, - "583": msg353, - "597": select102, - "598": select103, - "6": select3, - "60": msg90, - "602": select104, - "605": msg363, - "606": msg364, - "608": msg365, - "609": msg482, - "61": msg91, - "614": msg421, - "616": msg366, - "62": msg92, - "63": select29, - "64": msg95, - "65": msg96, - "654": msg455, - "657": select118, - "658": msg367, - "66": msg97, - "67": select30, - "670": msg456, - "68": msg100, - "69": msg101, - "7": msg6, - "70": select32, - "708": msg452, - "709": msg447, - "710": msg368, - "712": select108, - "713": select109, - "714": msg446, - "72": select33, - "73": msg106, - "74": msg107, - "748": msg422, - "75": msg108, - "76": msg109, - "760": select110, - "766": msg378, - "77": msg110, - "78": msg111, - "79": msg112, - "793": msg416, - "794": msg423, - "796": msg483, - "8": msg7, - "80": msg113, - "805": msg417, - "809": select122, - "81": msg114, - "82": select34, - "83": select35, - "84": msg122, - "860": select111, - "866": select113, - "867": select114, - "87": select37, - "88": select38, - "880": msg484, - "882": select115, - "884": msg457, - "888": select116, - "89": select40, - "892": msg389, - "9": msg8, - "90": msg129, - "904": msg390, - "905": msg391, - "906": msg392, - "907": msg393, - "908": msg394, - "909": msg395, - "91": msg130, - "910": msg479, - "914": msg396, - "92": msg131, - "93": msg132, - "931": msg397, - "935": msg420, - "94": msg133, - "95": msg134, - "96": msg135, - "97": select44, - "98": select56, - "986": msg155, - "99": msg158, - "994": msg402, - "995": msg404, - "997": msg405, - "998": select119, - "m": msg480, - "msg": msg436, - "src": msg437, - }), -]); - -var part505 = match("MESSAGE#14:14:01/0", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src=%{p0}"); - -var part506 = match("MESSAGE#14:14:01/1_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface}:%{shost->} dst= %{p0}"); - -var part507 = match("MESSAGE#14:14:01/1_1", "nwparser.p0", " %{saddr}:%{sport}:%{sinterface->} dst= %{p0}"); - -var part508 = match("MESSAGE#14:14:01/2", "nwparser.p0", "%{daddr}:%{dport}:%{p0}"); - -var part509 = match("MESSAGE#28:23:01/1_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} %{p0}"); - -var part510 = match("MESSAGE#28:23:01/1_1", "nwparser.p0", "%{daddr->} %{p0}"); - -var part511 = match("MESSAGE#28:23:01/2", "nwparser.p0", "%{p0}"); - -var part512 = match("MESSAGE#38:29:01/1_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} dst= %{p0}"); - -var part513 = match("MESSAGE#38:29:01/1_1", "nwparser.p0", " %{saddr->} dst= %{p0}"); - -var part514 = match("MESSAGE#38:29:01/2_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} "); - -var part515 = match("MESSAGE#38:29:01/2_1", "nwparser.p0", "%{daddr->} "); - -var part516 = match("MESSAGE#40:30:01/0", "nwparser.payload", "msg=\"%{action}\" n=%{fld->} src=%{p0}"); - -var part517 = match("MESSAGE#49:33:01/0", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{p0}"); - -var part518 = match("MESSAGE#52:35:01/2_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}"); - -var part519 = match_copy("MESSAGE#52:35:01/2_1", "nwparser.p0", "daddr"); - -var part520 = match("MESSAGE#54:36:01/1_0", "nwparser.p0", "app=%{fld51->} appName=\"%{application}\" n=%{p0}"); - -var part521 = match("MESSAGE#54:36:01/1_1", "nwparser.p0", "n=%{p0}"); - -var part522 = match("MESSAGE#54:36:01/3_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} %{p0}"); - -var part523 = match("MESSAGE#54:36:01/3_1", "nwparser.p0", "%{saddr->} %{p0}"); - -var part524 = match("MESSAGE#54:36:01/4", "nwparser.p0", "dst= %{p0}"); - -var part525 = match("MESSAGE#54:36:01/7_1", "nwparser.p0", "rule=%{rule}"); - -var part526 = match("MESSAGE#54:36:01/7_2", "nwparser.p0", "proto=%{protocol}"); - -var part527 = match("MESSAGE#55:36:02/0", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2->} src= %{p0}"); - -var part528 = match("MESSAGE#55:36:02/1_1", "nwparser.p0", "%{saddr->} dst= %{p0}"); - -var part529 = match_copy("MESSAGE#55:36:02/6", "nwparser.p0", "info"); - -var part530 = match("MESSAGE#59:37:03/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} proto= %{p0}"); - -var part531 = match("MESSAGE#59:37:03/3_1", "nwparser.p0", "%{dinterface->} proto= %{p0}"); - -var part532 = match("MESSAGE#59:37:03/4", "nwparser.p0", "%{protocol->} npcs=%{info}"); - -var part533 = match("MESSAGE#62:38:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src= %{p0}"); - -var part534 = match("MESSAGE#63:38:02/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} type= %{p0}"); - -var part535 = match("MESSAGE#63:38:02/3_1", "nwparser.p0", "%{dinterface->} type= %{p0}"); - -var part536 = match("MESSAGE#64:38:03/0", "nwparser.payload", "msg=\"%{event_description}\"%{p0}"); - -var part537 = match("MESSAGE#64:38:03/1_0", "nwparser.p0", " app=%{fld2->} appName=\"%{application}\"%{p0}"); - -var part538 = match_copy("MESSAGE#64:38:03/1_1", "nwparser.p0", "p0"); - -var part539 = match("MESSAGE#64:38:03/3_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} srcMac=%{p0}"); - -var part540 = match("MESSAGE#64:38:03/3_1", "nwparser.p0", "%{daddr->} srcMac=%{p0}"); - -var part541 = match("MESSAGE#126:89:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{p0}"); - -var part542 = match("MESSAGE#135:97:01/0", "nwparser.payload", "n=%{fld1->} src= %{p0}"); - -var part543 = match("MESSAGE#135:97:01/6_0", "nwparser.p0", "result=%{result->} dstname=%{p0}"); - -var part544 = match("MESSAGE#135:97:01/6_1", "nwparser.p0", "dstname=%{p0}"); - -var part545 = match("MESSAGE#137:97:03/0", "nwparser.payload", "sess=%{fld1->} n=%{fld2->} src= %{p0}"); - -var part546 = match("MESSAGE#141:97:07/1_1", "nwparser.p0", "%{dinterface->} srcMac=%{p0}"); - -var part547 = match("MESSAGE#147:98:01/6_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} %{p0}"); - -var part548 = match("MESSAGE#147:98:01/7_4", "nwparser.p0", "proto=%{protocol->} sent=%{sbytes}"); - -var part549 = match("MESSAGE#148:98:06/0", "nwparser.payload", "msg=\"%{event_description}\" %{p0}"); - -var part550 = match("MESSAGE#148:98:06/5_0", "nwparser.p0", "%{sinterface}:%{shost->} dst= %{p0}"); - -var part551 = match("MESSAGE#148:98:06/5_1", "nwparser.p0", "%{sinterface->} dst= %{p0}"); - -var part552 = match("MESSAGE#148:98:06/7_2", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} proto=%{p0}"); - -var part553 = match("MESSAGE#148:98:06/9_3", "nwparser.p0", "sent=%{sbytes}"); - -var part554 = match("MESSAGE#155:428/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{p0}"); - -var part555 = match("MESSAGE#240:171:03/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} npcs= %{p0}"); - -var part556 = match("MESSAGE#240:171:03/3_1", "nwparser.p0", "%{dinterface->} npcs= %{p0}"); - -var part557 = match("MESSAGE#240:171:03/4", "nwparser.p0", "%{info}"); - -var part558 = match("MESSAGE#256:180:01/3_0", "nwparser.p0", "%{dinterface}:%{dhost->} note= %{p0}"); - -var part559 = match("MESSAGE#256:180:01/3_1", "nwparser.p0", "%{dinterface->} note= %{p0}"); - -var part560 = match("MESSAGE#256:180:01/4", "nwparser.p0", "\"%{fld3}\" npcs=%{info}"); - -var part561 = match("MESSAGE#260:194/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} sport=%{sport->} dport=%{dport->} %{p0}"); - -var part562 = match("MESSAGE#260:194/1_1", "nwparser.p0", "rcvd=%{rbytes}"); - -var part563 = match("MESSAGE#262:196/1_0", "nwparser.p0", "sent=%{sbytes->} cmd=%{p0}"); - -var part564 = match("MESSAGE#262:196/1_1", "nwparser.p0", "rcvd=%{rbytes->} cmd=%{p0}"); - -var part565 = match_copy("MESSAGE#262:196/2", "nwparser.p0", "method"); - -var part566 = match("MESSAGE#280:261:01/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} usr=%{username->} src=%{p0}"); - -var part567 = match("MESSAGE#283:273/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld->} src=%{p0}"); - -var part568 = match("MESSAGE#302:401/0", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr->} %{p0}"); - -var part569 = match("MESSAGE#302:401/1_0", "nwparser.p0", "dstname=%{name}"); - -var part570 = match_copy("MESSAGE#302:401/1_1", "nwparser.p0", "space"); - -var part571 = match("MESSAGE#313:446/3_0", "nwparser.p0", "%{protocol}/%{fld3->} fw_action=\"%{p0}"); - -var part572 = match("MESSAGE#313:446/3_1", "nwparser.p0", "%{protocol->} fw_action=\"%{p0}"); - -var part573 = match("MESSAGE#313:446/4", "nwparser.p0", "%{action}\""); - -var part574 = match("MESSAGE#318:522:01/4", "nwparser.p0", "proto=%{protocol->} npcs=%{info}"); - -var part575 = match("MESSAGE#330:537:01/0", "nwparser.payload", "msg=\"%{action}\" f=%{fld1->} n=%{fld2->} src= %{p0}"); - -var part576 = match_copy("MESSAGE#330:537:01/5_1", "nwparser.p0", "rbytes"); - -var part577 = match("MESSAGE#332:537:08/1_0", "nwparser.p0", " app=%{fld51->} appName=\"%{application}\"n=%{p0}"); - -var part578 = match("MESSAGE#332:537:08/1_1", "nwparser.p0", " app=%{fld51->} sess=\"%{fld4}\" n=%{p0}"); - -var part579 = match("MESSAGE#332:537:08/1_2", "nwparser.p0", " app=%{fld51}n=%{p0}"); - -var part580 = match("MESSAGE#332:537:08/2_0", "nwparser.p0", "%{fld1->} usr=\"%{username}\"src=%{p0}"); - -var part581 = match("MESSAGE#332:537:08/2_1", "nwparser.p0", "%{fld1}src=%{p0}"); - -var part582 = match("MESSAGE#332:537:08/6_0", "nwparser.p0", "%{sbytes->} rcvd=%{rbytes->} spkt=%{p0}"); - -var part583 = match("MESSAGE#332:537:08/6_1", "nwparser.p0", "%{sbytes->} spkt=%{p0}"); - -var part584 = match("MESSAGE#332:537:08/7_1", "nwparser.p0", "%{fld3->} rpkt=%{fld6->} cdur=%{fld7}"); - -var part585 = match("MESSAGE#332:537:08/7_3", "nwparser.p0", "%{fld3->} cdur=%{fld7}"); - -var part586 = match_copy("MESSAGE#332:537:08/7_4", "nwparser.p0", "fld3"); - -var part587 = match("MESSAGE#336:537:04/0", "nwparser.payload", "msg=\"%{action}\" sess=%{fld1->} n=%{fld2->} src= %{p0}"); - -var part588 = match("MESSAGE#336:537:04/3_0", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface}:%{dhost->} proto= %{p0}"); - -var part589 = match("MESSAGE#336:537:04/3_1", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} proto= %{p0}"); - -var part590 = match("MESSAGE#336:537:04/3_2", "nwparser.p0", "%{daddr->} proto= %{p0}"); - -var part591 = match("MESSAGE#338:537:10/1_0", "nwparser.p0", "usr=\"%{username}\" %{p0}"); - -var part592 = match("MESSAGE#338:537:10/2", "nwparser.p0", "src=%{p0}"); - -var part593 = match("MESSAGE#338:537:10/3_0", "nwparser.p0", "%{saddr}:%{sport}:%{sinterface->} dst=%{p0}"); - -var part594 = match("MESSAGE#338:537:10/3_1", "nwparser.p0", "%{saddr->} dst=%{p0}"); - -var part595 = match("MESSAGE#338:537:10/6_0", "nwparser.p0", "npcs=%{info}"); - -var part596 = match("MESSAGE#338:537:10/6_1", "nwparser.p0", "cdur=%{fld12}"); - -var part597 = match("MESSAGE#355:598:01/0", "nwparser.payload", "msg=%{msg->} sess=%{fld1->} n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst= %{daddr}:%{dport}:%{p0}"); - -var part598 = match("MESSAGE#361:606/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld2->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{p0}"); - -var part599 = match("MESSAGE#361:606/1_0", "nwparser.p0", "%{dport}:%{dinterface->} srcMac=%{p0}"); - -var part600 = match("MESSAGE#361:606/1_1", "nwparser.p0", "%{dport->} srcMac=%{p0}"); - -var part601 = match("MESSAGE#361:606/2", "nwparser.p0", "%{} %{smacaddr->} dstMac=%{dmacaddr}proto=%{p0}"); - -var part602 = match("MESSAGE#362:608/4", "nwparser.p0", "%{daddr}:%{p0}"); - -var part603 = match("MESSAGE#362:608/5_1", "nwparser.p0", "%{dport}:%{dinterface}"); - -var part604 = match_copy("MESSAGE#362:608/5_2", "nwparser.p0", "dport"); - -var part605 = match("MESSAGE#366:712:02/0", "nwparser.payload", "msg=\"%{action}\" %{p0}"); - -var part606 = match("MESSAGE#366:712:02/1_0", "nwparser.p0", "app=%{fld21->} appName=\"%{application}\" n=%{p0}"); - -var part607 = match("MESSAGE#366:712:02/2", "nwparser.p0", "%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface->} srcMac=%{p0}"); - -var part608 = match("MESSAGE#366:712:02/3_0", "nwparser.p0", "%{smacaddr->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var part609 = match("MESSAGE#366:712:02/3_1", "nwparser.p0", "%{smacaddr->} proto=%{p0}"); - -var part610 = match("MESSAGE#366:712:02/4_0", "nwparser.p0", "%{protocol}/%{fld3->} fw_action=%{p0}"); - -var part611 = match("MESSAGE#366:712:02/4_1", "nwparser.p0", "%{protocol->} fw_action=%{p0}"); - -var part612 = match_copy("MESSAGE#366:712:02/5", "nwparser.p0", "fld51"); - -var part613 = match("MESSAGE#391:908/0", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld2->} src=%{saddr}:%{sport}:%{p0}"); - -var part614 = match("MESSAGE#391:908/1_1", "nwparser.p0", "%{sinterface->} dst=%{p0}"); - -var part615 = match("MESSAGE#391:908/2", "nwparser.p0", "%{} %{daddr}:%{p0}"); - -var part616 = match("MESSAGE#391:908/4", "nwparser.p0", "%{} %{smacaddr->} dstMac=%{dmacaddr->} proto=%{p0}"); - -var part617 = match("MESSAGE#439:1199/2", "nwparser.p0", "%{daddr}:%{dport}:%{dinterface->} npcs=%{info}"); - -var part618 = match("MESSAGE#444:1198/0", "nwparser.payload", "msg=\"%{msg}\" note=\"%{fld3}\" sess=%{fld1->} n=%{fld2->} src=%{p0}"); - -var part619 = match("MESSAGE#461:1220/3_0", "nwparser.p0", "%{dport}:%{dinterface->} note=%{p0}"); - -var part620 = match("MESSAGE#461:1220/3_1", "nwparser.p0", "%{dport->} note=%{p0}"); - -var part621 = match("MESSAGE#461:1220/4", "nwparser.p0", "%{}\"%{info}\" fw_action=\"%{action}\""); - -var part622 = match("MESSAGE#471:1369/1_0", "nwparser.p0", "%{protocol}/%{fld3}fw_action=\"%{p0}"); - -var part623 = match("MESSAGE#471:1369/1_1", "nwparser.p0", "%{protocol}fw_action=\"%{p0}"); - -var select147 = linear_select([ - dup8, - dup9, -]); - -var select148 = linear_select([ - dup15, - dup16, -]); - -var part624 = match("MESSAGE#403:24:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} note=\"%{event_description}\"", processor_chain([ - dup1, - dup24, -])); - -var select149 = linear_select([ - dup26, - dup27, -]); - -var select150 = linear_select([ - dup28, - dup29, -]); - -var select151 = linear_select([ - dup35, - dup36, -]); - -var select152 = linear_select([ - dup37, - dup38, -]); - -var select153 = linear_select([ - dup39, - dup40, -]); - -var select154 = linear_select([ - dup26, - dup46, -]); - -var select155 = linear_select([ - dup48, - dup49, -]); - -var select156 = linear_select([ - dup52, - dup53, -]); - -var select157 = linear_select([ - dup55, - dup56, -]); - -var select158 = linear_select([ - dup57, - dup58, -]); - -var part625 = match("MESSAGE#116:82:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}", processor_chain([ - dup70, -])); - -var part626 = match("MESSAGE#118:83:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr}:%{sport}:%{sinterface->} dst=%{daddr}:%{dport}:%{dinterface}", processor_chain([ - dup5, -])); - -var select159 = linear_select([ - dup75, - dup76, -]); - -var select160 = linear_select([ - dup83, - dup84, -]); - -var part627 = match("MESSAGE#168:111:01", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} dstname=%{shost}", processor_chain([ - dup1, -])); - -var select161 = linear_select([ - dup94, - dup95, -]); - -var part628 = match("MESSAGE#253:178", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport}", processor_chain([ - dup5, -])); - -var select162 = linear_select([ - dup98, - dup99, -]); - -var select163 = linear_select([ - dup86, - dup102, -]); - -var select164 = linear_select([ - dup103, - dup104, -]); - -var part629 = match("MESSAGE#277:252", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{saddr->} dst=%{daddr}", processor_chain([ - dup93, -])); - -var part630 = match("MESSAGE#293:355", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport}", processor_chain([ - dup93, -])); - -var part631 = match("MESSAGE#295:356", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport}", processor_chain([ - dup1, -])); - -var part632 = match("MESSAGE#298:358", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport}", processor_chain([ - dup1, -])); - -var part633 = match("MESSAGE#414:371:01", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr->} note=\"%{event_description}\"", processor_chain([ - dup1, - dup24, -])); - -var select165 = linear_select([ - dup114, - dup115, -]); - -var select166 = linear_select([ - dup117, - dup118, -]); - -var select167 = linear_select([ - dup43, - dup42, -]); - -var select168 = linear_select([ - dup8, - dup27, -]); - -var select169 = linear_select([ - dup8, - dup26, - dup46, -]); - -var select170 = linear_select([ - dup80, - dup15, - dup16, -]); - -var select171 = linear_select([ - dup124, - dup125, - dup126, - dup38, -]); - -var select172 = linear_select([ - dup127, - dup128, -]); - -var select173 = linear_select([ - dup129, - dup130, -]); - -var select174 = linear_select([ - dup135, - dup136, - dup137, -]); - -var select175 = linear_select([ - dup138, - dup56, -]); - -var select176 = linear_select([ - dup140, - dup141, -]); - -var select177 = linear_select([ - dup142, - dup143, -]); - -var select178 = linear_select([ - dup150, - dup151, -]); - -var part634 = match("MESSAGE#365:710", "nwparser.payload", "msg=\"%{action}\" n=%{fld1->} src=%{saddr}:%{sport->} dst=%{daddr}:%{dport}", processor_chain([ - dup156, -])); - -var select179 = linear_select([ - dup158, - dup38, -]); - -var select180 = linear_select([ - dup160, - dup161, -]); - -var select181 = linear_select([ - dup162, - dup163, -]); - -var part635 = match("MESSAGE#375:766", "nwparser.payload", "msg=\"%{msg}\" n=%{ntype}", processor_chain([ - dup5, -])); - -var part636 = match("MESSAGE#377:860:01", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{ntype}", processor_chain([ - dup5, -])); - -var part637 = match("MESSAGE#393:914", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} src=%{stransaddr}:%{stransport}:%{sinterface}:%{host->} dst=%{dtransaddr}:%{dtransport}:%{dinterface}:%{shost}", processor_chain([ - dup5, - dup24, -])); - -var part638 = match("MESSAGE#399:994", "nwparser.payload", "msg=\"%{msg}\" n=%{fld1->} usr=%{username->} src=%{stransaddr}:%{stransport->} dst=%{dtransaddr}:%{dtransport->} note=\"%{event_description}\"", processor_chain([ - dup1, - dup24, -])); - -var part639 = match("MESSAGE#406:1110", "nwparser.payload", "msg=\"%{msg}\" %{space->} n=%{fld1}", processor_chain([ - dup1, - dup24, -])); - -var part640 = match("MESSAGE#420:614", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} fw_action=\"%{action}\"", processor_chain([ - dup171, - dup44, -])); - -var part641 = match("MESSAGE#454:654", "nwparser.payload", "msg=\"%{msg}\" sess=%{fld1->} n=%{fld2}", processor_chain([ - dup1, -])); - -var select182 = linear_select([ - dup177, - dup178, -]); - -var select183 = linear_select([ - dup180, - dup181, -]); - -var part642 = match("MESSAGE#482:796", "nwparser.payload", "msg=\"%{event_description}\" n=%{fld1->} fw_action=\"%{action}\"", processor_chain([ - dup1, - dup62, - dup18, - dup88, - dup20, - dup21, - dup22, - dup44, -])); - -var all114 = all_match({ - processors: [ - dup32, - dup185, - dup186, - ], - on_success: processor_chain([ - dup31, - ]), -}); - -var all115 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup91, - ]), -}); - -var all116 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup67, - ]), -}); - -var all117 = all_match({ - processors: [ - dup101, - dup203, - ], - on_success: processor_chain([ - dup67, - ]), -}); - -var all118 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup106, - ]), -}); - -var all119 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup31, - ]), -}); - -var all120 = all_match({ - processors: [ - dup32, - dup185, - dup187, - ], - on_success: processor_chain([ - dup30, - ]), -}); - -var all121 = all_match({ - processors: [ - dup108, - dup185, - dup187, - ], - on_success: processor_chain([ - dup109, - ]), -}); - -var all122 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - dup112, - ]), -}); - -var all123 = all_match({ - processors: [ - dup113, - dup210, - ], - on_success: processor_chain([ - dup93, - ]), -}); - -var all124 = all_match({ - processors: [ - dup110, - dup185, - dup187, - ], - on_success: processor_chain([ - dup116, - ]), -}); - -var all125 = all_match({ - processors: [ - dup51, - dup189, - dup41, - dup187, - ], - on_success: processor_chain([ - dup5, - ]), -}); - -var all126 = all_match({ - processors: [ - dup73, - dup185, - dup183, - dup43, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var all127 = all_match({ - processors: [ - dup157, - dup225, - dup159, - dup226, - dup227, - dup164, - ], - on_success: processor_chain([ - dup156, - dup59, - dup60, - dup61, - dup62, - dup44, - dup63, - dup18, - dup19, - dup20, - dup21, - dup22, - ]), -}); - -var all128 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup202, - dup100, - ], - on_success: processor_chain([ - dup1, - ]), -}); - -var all129 = all_match({ - processors: [ - dup7, - dup182, - dup10, - dup200, - dup96, - ], - on_success: processor_chain([ - dup1, - ]), -}); diff --git a/x-pack/filebeat/module/sonicwall/firewall/ingest/pipeline.yml b/x-pack/filebeat/module/sonicwall/firewall/ingest/pipeline.yml deleted file mode 100644 index 0d5140dee4c..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Sonicwall-FW - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/sonicwall/firewall/manifest.yml b/x-pack/filebeat/module/sonicwall/firewall/manifest.yml deleted file mode 100644 index f9949f03fd5..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["sonicwall.firewall", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9536 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/sonicwall/firewall/test/general.log b/x-pack/filebeat/module/sonicwall/firewall/test/general.log deleted file mode 100644 index bebffc65961..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/test/general.log +++ /dev/null @@ -1,21 +0,0 @@ -Jan 3 13:45:36 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:06" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23419 src=2.2.2.2:36701:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000 -Jan 3 13:45:36 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:07" fw=89.160.20.156 pri=1 c=32 m=30 msg="Administrator login denied due to bad credentials" n=7 src=2.2.2.2:36701:WAN dst=89.160.20.156:50000:WAN -Jan 3 13:45:36 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:07" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23420 src=2.2.2.2:36702:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000 -Jan 3 13:45:37 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:07" fw=89.160.20.156 pri=6 c=1024 m=537 msg="Connection Closed" n=567996 src=192.168.4.10:27577:WAN dst=192.168.5.10:53:LAN proto=tcp/dns sent=257 rcvd=242 -Jan 3 13:45:37 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:08" fw=89.160.20.156 pri=6 c=1024 m=537 msg="Connection Closed" n=567997 src=192.168.5.56:4277:LAN dst=192.168.1.100:1026:WAN proto=tcp/1026 sent=3590 rcvd=13042 vpnpolicy="name" -Jan 3 13:45:39 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:10" fw=89.160.20.156 pri=6 c=1024 m=537 msg="Connection Closed" n=567999 src=192.168.5.56:4280:LAN dst=192.168.2.81:41850:WAN proto=tcp/41850 sent=386026 rcvd=454118 vpnpolicy="name" -Jan 3 13:45:39 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:10" fw=89.160.20.156 pri=6 c=1024 m=537 msg="Connection Closed" n=567999 src=89.160.20.156:500:WAN dst=2.2.2.2:500:WAN proto=udp/500 sent=344 rcvd=152 -Jan 3 13:45:40 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:10" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23421 src=2.2.2.2:36703:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000 -Jan 3 13:45:40 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:10" fw=89.160.20.156 pri=1 c=32 m=30 msg="Administrator login denied due to bad credentials" n=8 src=2.2.2.2:36703:WAN dst=89.160.20.156:50000:WAN -Jan 3 13:45:40 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:11" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23422 src=2.2.2.2:36704:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000 -Jan 3 13:45:43 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:14" fw=89.160.20.156 pri=5 c=256 m=38 msg="ICMP packet dropped" n=22070 src=219.89.19.223:1026:WAN dst=89.160.20.156:6822:WAN type=3 code=3 -Jan 3 13:45:43 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:14" fw=89.160.20.156 pri=6 c=1024 m=537 msg="Connection Closed" n=568000 src=219.89.19.223:1026:WAN dst=89.160.20.156:0:WAN proto=udp/0 -Jan 3 13:45:44 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:15" fw=89.160.20.156 pri=6 c=16 m=346 msg="IKE Initiator: Start Quick Mode (Phase 2)." n=171872 src=2.2.2.2:500 dst=89.160.20.156:500 -Jan 3 13:45:44 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:15" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23423 src=89.160.20.156:500:WAN dst=2.2.2.2:500:WAN proto=udp/500 -Jan 3 13:45:44 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:15" fw=89.160.20.156 pri=4 c=16 m=483 msg="Received notify: INVALID_ID_INFO" n=171625 src=2.2.2.2:500 dst=89.160.20.156:500 -Jan 3 13:45:45 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:15" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23424 src=192.168.115.10:11549:WAN dst=192.168.5.10:53:LAN proto=tcp/dns -Jan 3 13:45:46 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:17" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23425 src=192.168.5.64:3182:LAN dst=192.168.1.100:445:WAN proto=tcp/445 -Jan 3 13:45:47 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:18" fw=89.160.20.156 pri=6 c=1024 m=537 msg="Connection Closed" n=568001 src=2.2.2.2:36699:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000 sent=1557 rcvd=957 -Jan 3 13:45:49 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:20" fw=89.160.20.156 pri=6 c=1024 m=537 msg="Connection Closed" n=568002 src=192.168.5.10:3417:LAN dst=192.168.1.100:53:WAN proto=udp/dns sent=401 rcvd=254 vpnpolicy="name" -Jan 3 13:45:50 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:20" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23426 src=192.168.125.75:524:WAN dst=192.168.5.10:3582:LAN proto=udp/3582 -Jan 3 13:45:50 192.168.5.1 id=firewall sn=000SERIAL time="2007-01-03 14:48:21" fw=89.160.20.156 pri=6 c=262144 m=98 msg="Connection Opened" n=23427 src=192.168.6.10:28503:WAN dst=192.168.5.10:53:LAN proto=tcp/dns diff --git a/x-pack/filebeat/module/sonicwall/firewall/test/general.log-expected.json b/x-pack/filebeat/module/sonicwall/firewall/test/general.log-expected.json deleted file mode 100644 index 7ea2067409d..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/test/general.log-expected.json +++ /dev/null @@ -1,595 +0,0 @@ -[ - { - "@timestamp": "2007-01-03T16:48:06.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:36 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:06\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23419 src=2.2.2.2:36701:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 0, - "observer.ingress.interface.name": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "2.2.2.2" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "rsa.time.event_time": "2007-01-03T16:48:06.000Z", - "service.type": "sonicwall", - "source.ip": "2.2.2.2", - "source.port": 36701, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:07.000Z", - "event.action": "Administrator login denied due to bad credentials", - "event.code": "30", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:36 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:07\" fw=89.160.20.156 pri=1 c=32 m=30 msg=\"Administrator login denied due to bad credentials\" n=7 src=2.2.2.2:36701:WAN dst=89.160.20.156:50000:WAN", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 215, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "30", - "rsa.misc.action": [ - "Administrator login denied due to bad credentials" - ], - "rsa.time.event_time": "2007-01-03T16:48:07.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:07.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:36 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:07\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23420 src=2.2.2.2:36702:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 438, - "observer.ingress.interface.name": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "2.2.2.2" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "rsa.time.event_time": "2007-01-03T16:48:07.000Z", - "service.type": "sonicwall", - "source.ip": "2.2.2.2", - "source.port": 36702, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:07.000Z", - "event.action": "Connection Closed", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:37 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:07\" fw=89.160.20.156 pri=6 c=1024 m=537 msg=\"Connection Closed\" n=567996 src=192.168.4.10:27577:WAN dst=192.168.5.10:53:LAN proto=tcp/dns sent=257 rcvd=242", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 653, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "Connection Closed", - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "Connection Closed" - ], - "rsa.time.event_time": "2007-01-03T16:48:07.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:08.000Z", - "event.action": "Connection Closed", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:37 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:08\" fw=89.160.20.156 pri=6 c=1024 m=537 msg=\"Connection Closed\" n=567997 src=192.168.5.56:4277:LAN dst=192.168.1.100:1026:WAN proto=tcp/1026 sent=3590 rcvd=13042 vpnpolicy=\"name\"", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 885, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "Connection Closed", - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "Connection Closed" - ], - "rsa.time.event_time": "2007-01-03T16:48:08.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:10.000Z", - "event.action": "Connection Closed", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:39 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:10\" fw=89.160.20.156 pri=6 c=1024 m=537 msg=\"Connection Closed\" n=567999 src=192.168.5.56:4280:LAN dst=192.168.2.81:41850:WAN proto=tcp/41850 sent=386026 rcvd=454118 vpnpolicy=\"name\"", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 1140, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "Connection Closed", - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "Connection Closed" - ], - "rsa.time.event_time": "2007-01-03T16:48:10.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:10.000Z", - "event.action": "Connection Closed", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:39 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:10\" fw=89.160.20.156 pri=6 c=1024 m=537 msg=\"Connection Closed\" n=567999 src=89.160.20.156:500:WAN dst=2.2.2.2:500:WAN proto=udp/500 sent=344 rcvd=152", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 1399, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "Connection Closed", - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "Connection Closed" - ], - "rsa.time.event_time": "2007-01-03T16:48:10.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:10.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:40 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:10\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23421 src=2.2.2.2:36703:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1626, - "observer.ingress.interface.name": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "2.2.2.2" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "rsa.time.event_time": "2007-01-03T16:48:10.000Z", - "service.type": "sonicwall", - "source.ip": "2.2.2.2", - "source.port": 36703, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:10.000Z", - "event.action": "Administrator login denied due to bad credentials", - "event.code": "30", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:40 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:10\" fw=89.160.20.156 pri=1 c=32 m=30 msg=\"Administrator login denied due to bad credentials\" n=8 src=2.2.2.2:36703:WAN dst=89.160.20.156:50000:WAN", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 1841, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "30", - "rsa.misc.action": [ - "Administrator login denied due to bad credentials" - ], - "rsa.time.event_time": "2007-01-03T16:48:10.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:11.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:40 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:11\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23422 src=2.2.2.2:36704:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2064, - "observer.ingress.interface.name": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "2.2.2.2" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=89.160.20.156:50000:WAN proto=tcp/50000", - "rsa.time.event_time": "2007-01-03T16:48:11.000Z", - "service.type": "sonicwall", - "source.ip": "2.2.2.2", - "source.port": 36704, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:14.000Z", - "event.code": "38", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:43 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:14\" fw=89.160.20.156 pri=5 c=256 m=38 msg=\"ICMP packet dropped\" n=22070 src=219.89.19.223:1026:WAN dst=89.160.20.156:6822:WAN type=3 code=3", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 2279, - "observer.ingress.interface.name": "WAN", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "219.89.19.223" - ], - "rsa.internal.event_desc": "ICMP packet dropped", - "rsa.internal.messageid": "38", - "rsa.network.sinterface": "WAN", - "rsa.time.event_time": "2007-01-03T16:48:14.000Z", - "service.type": "sonicwall", - "source.ip": "219.89.19.223", - "source.port": 1026, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:14.000Z", - "event.action": "Connection Closed", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:43 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:14\" fw=89.160.20.156 pri=6 c=1024 m=537 msg=\"Connection Closed\" n=568000 src=219.89.19.223:1026:WAN dst=89.160.20.156:0:WAN proto=udp/0", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 2496, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "Connection Closed", - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "Connection Closed" - ], - "rsa.time.event_time": "2007-01-03T16:48:14.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:15.000Z", - "event.code": "346", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:44 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:15\" fw=89.160.20.156 pri=6 c=16 m=346 msg=\"IKE Initiator: Start Quick Mode (Phase 2).\" n=171872 src=2.2.2.2:500 dst=89.160.20.156:500", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2708, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "346", - "rsa.internal.msg": "IKE Initiator: Start Quick Mode (Phase 2).", - "rsa.time.event_time": "2007-01-03T16:48:15.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:15.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:44 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:15\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23423 src=89.160.20.156:500:WAN dst=2.2.2.2:500:WAN proto=udp/500", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2918, - "observer.ingress.interface.name": "WAN dst=2.2.2.2:500:WAN proto=udp/500", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "89.160.20.156" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=2.2.2.2:500:WAN proto=udp/500", - "rsa.time.event_time": "2007-01-03T16:48:15.000Z", - "service.type": "sonicwall", - "source.as.number": 29518, - "source.as.organization.name": "Bredband2 AB", - "source.geo.city_name": "Link\u00f6ping", - "source.geo.continent_name": "Europe", - "source.geo.country_iso_code": "SE", - "source.geo.country_name": "Sweden", - "source.geo.location.lat": 58.4167, - "source.geo.location.lon": 15.6167, - "source.geo.region_iso_code": "SE-E", - "source.geo.region_name": "\u00d6sterg\u00f6tland County", - "source.ip": "89.160.20.156", - "source.port": 500, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:15.000Z", - "event.code": "483", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:44 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:15\" fw=89.160.20.156 pri=4 c=16 m=483 msg=\"Received notify: INVALID_ID_INFO\" n=171625 src=2.2.2.2:500 dst=89.160.20.156:500", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3127, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "483", - "rsa.time.event_time": "2007-01-03T16:48:15.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:15.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:45 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:15\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23424 src=192.168.115.10:11549:WAN dst=192.168.5.10:53:LAN proto=tcp/dns", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3327, - "observer.ingress.interface.name": "WAN dst=192.168.5.10:53:LAN proto=tcp/dns", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "192.168.115.10" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=192.168.5.10:53:LAN proto=tcp/dns", - "rsa.time.event_time": "2007-01-03T16:48:15.000Z", - "service.type": "sonicwall", - "source.ip": "192.168.115.10", - "source.port": 11549, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:17.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:46 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:17\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23425 src=192.168.5.64:3182:LAN dst=192.168.1.100:445:WAN proto=tcp/445", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3543, - "observer.ingress.interface.name": "LAN dst=192.168.1.100:445:WAN proto=tcp/445", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "192.168.5.64" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "LAN dst=192.168.1.100:445:WAN proto=tcp/445", - "rsa.time.event_time": "2007-01-03T16:48:17.000Z", - "service.type": "sonicwall", - "source.ip": "192.168.5.64", - "source.port": 3182, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:18.000Z", - "event.action": "Connection Closed", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:47 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:18\" fw=89.160.20.156 pri=6 c=1024 m=537 msg=\"Connection Closed\" n=568001 src=2.2.2.2:36699:WAN dst=89.160.20.156:50000:WAN proto=tcp/50000 sent=1557 rcvd=957", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 3758, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "Connection Closed", - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "Connection Closed" - ], - "rsa.time.event_time": "2007-01-03T16:48:18.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:20.000Z", - "event.action": "Connection Closed", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:49 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:20\" fw=89.160.20.156 pri=6 c=1024 m=537 msg=\"Connection Closed\" n=568002 src=192.168.5.10:3417:LAN dst=192.168.1.100:53:WAN proto=udp/dns sent=401 rcvd=254 vpnpolicy=\"name\"", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 3992, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "Connection Closed", - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "Connection Closed" - ], - "rsa.time.event_time": "2007-01-03T16:48:20.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:20.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:50 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:20\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23426 src=192.168.125.75:524:WAN dst=192.168.5.10:3582:LAN proto=udp/3582", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4241, - "observer.ingress.interface.name": "WAN dst=192.168.5.10:3582:LAN proto=udp/3582", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "192.168.125.75" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=192.168.5.10:3582:LAN proto=udp/3582", - "rsa.time.event_time": "2007-01-03T16:48:20.000Z", - "service.type": "sonicwall", - "source.ip": "192.168.125.75", - "source.port": 524, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2007-01-03T16:48:21.000Z", - "event.code": "98", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "Jan 3 13:45:50 192.168.5.1 id=firewall sn=000SERIAL time=\"2007-01-03 14:48:21\" fw=89.160.20.156 pri=6 c=262144 m=98 msg=\"Connection Opened\" n=23427 src=192.168.6.10:28503:WAN dst=192.168.5.10:53:LAN proto=tcp/dns", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4458, - "observer.ingress.interface.name": "WAN dst=192.168.5.10:53:LAN proto=tcp/dns", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "192.168.6.10" - ], - "rsa.internal.event_desc": "Connection Opened", - "rsa.internal.messageid": "98", - "rsa.internal.msg": "Connection Opened", - "rsa.network.sinterface": "WAN dst=192.168.5.10:53:LAN proto=tcp/dns", - "rsa.time.event_time": "2007-01-03T16:48:21.000Z", - "service.type": "sonicwall", - "source.ip": "192.168.6.10", - "source.port": 28503, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/sonicwall/firewall/test/generated.log b/x-pack/filebeat/module/sonicwall/firewall/test/generated.log deleted file mode 100644 index 303aa073e77..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -id=nnumqua sn=eacommod time="2016/01/29 06:09:59" fw=10.208.232.8 pri=very-high c=tur m=1197 msg="itv" sess=odoco n=ria src=10.20.234.169:1001:eth5722 dst= 10.208.15.216:4257:lo6125 note= "ntsunti Protocol:udp" npcs=ciade -idi id=pexe sn=nes time="2016/02/12 13:12:33" fw=10.254.41.82 pri=low c=Ute m=914 msg="lupt" n=dolore src=10.92.136.230:6437:eth7178:nostrud4819.mail.test dst=10.49.111.67:884:eth3598:oreetdol1714.internal.corp -id=umexe sn=estlabo time="2016/02/26 20:15:08" fw=10.186.114.123 pri=high c=olupt m=16 Web site accessed -id=alo sn=eosquir time="2016-3-12 3:17:42" fw=10.149.203.46 pri=medium c=mwritten m=1369 msg="ctetur" n=uidolorsrc=10.150.156.22:6378:eth6183dst=10.227.15.1:410:eth1977srcMac=01:00:5e:84:66:6cdstMac=01:00:5e:f7:a9:ffproto=rdp/ommfw_action="allow" -emape id=aer sn=lupt time="2016/03/26 10:20:16" fw=10.26.46.95 pri=medium c=temvel m=127 PPPoE LCP Link Up -id=consec sn=taliquip time="2016/04/09 17:22:51" fw=10.134.172.34 pri=high c=snos m=170 Received a path MTU icmp message from router/gateway -id=tconsec sn=nsequat time="2016/04/24 00:25:25" fw=10.137.246.137 pri=medium c=oluptas m=372 msg="llu" n=uptassi src=10.95.245.65 dst=10.13.70.213 -llamcorp id=ari sn=eataevit time="2016/05/08 07:27:59" fw=10.50.112.141 pri=very-high c=dmi m=176 Fraudulent Microsoft Certificate Blocked -mquisnos id=loremagn sn=iciade time="2016/05/22 14:30:33" fw=10.137.104.79 pri=medium c=mUt m=50 RealAudio decode failure -id=aali sn=ametcons time="2016/06/05 21:33:08" fw=10.244.98.230 pri=low c=iinea m=87 IKE Responder: Accepting IPSec proposal -emip id=tvol sn=moll time="2016/06/20 04:35:42" fw=10.228.149.225 pri=high c=deomni m=139 msg="accept" n=onse src=10.136.153.149:3788:enp0s2489 dst= 10.16.52.205 -orsitame id=quiratio sn=ite time="2016/07/04 11:38:16" fw=10.72.98.186 pri=very-high c=ercit m=15 Newsgroup blocked -id=usan sn=aper time="2016/07/18 18:40:50" fw=10.183.16.166 pri=low c=ender m=70 IPSec packet from illegal host -id=atquovo sn=iumto time="2016/08/02 01:43:25" fw=10.117.18.47 pri=low c=essecill m=129 PPPoE terminated -id=undeo sn=loremip time="2016-8-16 8:45:59" fw=10.134.0.141 pri=very-high c=uis m=1149 msg="idolore" n=onse fw_action="cancel" -id=rveli sn=rsint time="2016/08/30 15:48:33" fw=10.172.146.234 pri=very-high c=Nemoeni m=81 Smurf Amplification Attack Dropped -id=qua sn=luptatev time="2016/09/13 22:51:07" fw=10.123.104.59 pri=low c=elaudant m=1110 msg="tinvol" n=lores -id=tatiset sn=eprehen time="2016/09/28 05:53:42" fw=10.117.146.33 pri=high c=entsu m=10 Problem loading the Filter list; check Filter settings -id=aliq sn=rsitam time="2016/10/12 12:56:16" fw=10.79.33.129 pri=high c=umdolo m=353 msg="onproide" n=Nemoen src=10.241.178.107 dst=10.30.196.102 dstname=fugi4637.www.lan lifeSeconds=imadmini" -id=itecto sn=erc time="2016/10/26 19:58:50" fw=10.69.57.206 pri=high c=nsec m=68 IPSec Decryption Failed -id=tat sn=tion time="2016/11/10 03:01:24" fw=10.53.150.119 pri=medium c=uasia m=24 msg="emp" n=aperia src=10.157.161.103:383 dst=10.78.151.178:3088 note="taut" -id=tati sn=utaliqu time="2016/11/24 10:03:59" fw=10.53.187.44 pri=high c=iadese m=242 msg="imidest" n=emagnama src= 10.153.136.222 dst= 10.206.136.206:4108 -id=nidolo sn=tatn time="2016/12/08 17:06:33" fw=10.18.109.121 pri=very-high c=dolo m=87 msg="Loremip" n=idolor src=10.204.11.20 dst=10.239.201.234 -id=quip sn=mporain time="2016-12-23 12:09:07" fw=10.34.161.166 pri=very-high c=sequi m=428 msg="rehend" n=tio src=10.245.200.97:3768:eth4059 dst=10.219.116.137:3452:enp0s3611 srcMac= 01:00:5e:1a:ec:91 dstMac=01:00:5e:e1:73:47 proto=icmp fw_action="accept" -id=idex sn=xerci time="2017/01/06 07:11:41" fw=10.84.206.79 pri=high c=uipe m=401 msg="inesci" n=serror src=10.118.80.140 dst=10.252.122.195 dstname=eFinib -id=ari sn=exercit time="2017/01/20 14:14:16" fw=10.220.244.59 pri=high c=oluptate m=143 Backup firewall has transitioned to Active -id=serunt sn=aquaeabi time="2017/02/03 21:16:50" fw=10.171.157.74 pri=high c=emoe m=104 Retransmitting DHCP REQUEST (Verifying). -id=veniamq sn=one time="2017/02/18 04:19:24" fw=10.4.26.208 pri=very-high c=reseos m=156 Backup received heartbeat from wrong source -id=tin sn=tenima time="2017/03/04 11:21:59" fw=10.241.177.156 pri=medium c=proide m=132 PPPoE discovery process complete -id=tmollita sn=fde time="2017-3-18 6:24:33" fw=10.149.89.126 pri=high c=abo m=794 msg="veniamqu" sid=nse spycat=non spypri=paquioff pktdatId=mquisnos n=maven src=10.86.101.235:3266:lo6501 dst=10.30.153.159:6843:enp0s6487 proto=icmp/eporr fw_action="cancel" -id=aturQui sn=utlabor time="2017/04/02 01:27:07" fw=10.38.249.71 pri=low c=mfugiat m=133 PPPoE starting CHAP Authentication -id=tvolu sn=ecte time="2017/04/16 08:29:41" fw=10.130.14.60 pri=low c=iciadese m=9 No new Filter list available -olupta id=litse sn=icabo time="2017/04/30 15:32:16" fw=10.89.208.95 pri=low c=llumdolo m=255 msg="nre" n=ercitat src=10.237.163.139 dst=10.162.172.28 -ionevo id=ugiatnu sn=ciati time="2017/05/14 22:34:50" fw=10.184.122.157 pri=medium c=scivelit m=31 msg="allow" n=ehen src=10.191.23.41:1493:eth4488 dst= 10.250.47.252 -id=pta sn=tetu time="2017/05/29 05:37:24" fw=10.101.57.134 pri=low c=Nequepo m=12 Problem sending log email; check log settings -ntocc id=uteirure sn=nevo time="2017/06/12 12:39:58" fw=10.226.23.214 pri=very-high c=adip m=994 msg="tium" n=nnum usr=tenbyCi src=10.16.72.220:1842 dst=10.111.187.12:3577 note="quinesc" -id=tur sn=roi time="2017/06/26 19:42:33" fw=10.106.31.86 pri=low c=sno m=7 Log full; deactivating SonicWALL -ntocca id=ostru sn=ntoccae time="2017/07/11 02:45:07" fw=10.35.99.92 pri=medium c=iatisu m=866 msg="sec" sess=cons n=sBon -id=ten sn=vita time="2017/07/25 09:47:41" fw=10.35.5.16 pri=high c=emaccusa m=538 msg="accept" n=qui src=10.143.76.137:1414:lo3470 dst= 10.131.61.13 -id=evolu sn=ersp time="2017/08/08 16:50:15" fw=10.64.221.30 pri=medium c=inven m=793 msg="osquira" af_polid=tes af_policy="mquame" af_type="nihilmol" af_service="xercita" af_action="trud" n=eriti src=10.99.0.226:2984:eth1766:sequatu341.mail.invalid dst=10.77.129.130:6604:enp0s4138:Nemoenim2039.api.localhost -id=nbyCic sn=utlabor time="2017/08/22 23:52:50" fw=10.27.251.77 pri=medium c=ine m=905 msg="lup" n=tatemUt -id=quovol sn=nve time="2017/09/06 06:55:24" fw=10.104.201.10 pri=very-high c=ccaecat m=94 Diagnostic Code B -tau id=exercita sn=ris time="2017/09/20 13:57:58" fw=10.84.25.23 pri=high c=boree m=565 msg="intoc" n=ncidi -irat id=onev sn=aturauto time="2017/10/04 21:00:32" fw=10.218.243.47 pri=very-high c=oremi m=37 UDP packet dropped -id=temUt sn=olor time="2017/10/19 04:03:07" fw=10.19.10.148 pri=low c=niamqui m=4 SonicWALL activated -id=ess sn=ipisci time="2017/11/02 11:05:41" fw=10.113.95.59 pri=very-high c=reprehen m=156 Backup received heartbeat from wrong source -luptate id=persp sn=entsunt time="2017/11/16 18:08:15" fw=10.206.107.211 pri=low c=fugi m=140 msg="accept" n=inci src=10.230.173.4:2631:enp0s5632 dst= 10.192.27.157 -id=cusant sn=atemq time="2017/12/01 01:10:49" fw=10.136.31.188 pri=high c=borios m=118 Sending DHCP REQUEST (Verifying). -id=ercita sn=ciadeser time="2017/12/15 08:13:24" fw=10.175.236.135 pri=medium c=isnisi m=18 ActiveX blocked -id=isiuta sn=orsitam time="2017/12/29 15:15:58" fw=10.159.119.34 pri=high c=psaquaea m=195 msg="taevita" n=ameiusm src=10.227.15.253 dst=10.190.175.158 sport=271 dport=7005 rcvd=6587 -id=nre sn=veli time="2018/01/12 22:18:32" fw=10.62.147.186 pri=low c=elitse m=22 Ping of death blocked -id=quasia sn=adi time="2018/01/27 05:21:06" fw=10.9.12.248 pri=medium c=mac m=616 msg="block" n=aveni src=10.29.155.171:1871 dst=10.15.97.155:5935 -id=llamco sn=nea time="2018/02/10 12:23:41" fw=10.123.143.188 pri=medium c=orsit m=9 No new Filter list available -id=ise sn=itau time="2018/02/24 19:26:15" fw=10.44.22.97 pri=very-high c=lorsita m=907 msg="dolore" n=uptate -id=odi sn=ptass time="2018/03/11 02:28:49" fw=10.39.10.155 pri=low c=tametcon m=157 HA packet processing error -id=aco sn=tio time="2018/03/25 09:31:24" fw=10.112.38.219 pri=high c=dantium m=261 msg="lor" n=velillu usr=cteturad src= 10.18.204.87 dst= 10.25.32.107 -id=utodita sn=aec time="2018-4-8 4:33:58" fw=10.21.89.175 pri=medium c=diconse m=428 msg="elitse" n=reseo src=10.71.238.250:41:lo3856 dst=10.246.0.167:2189:eth2632 srcMac= 01:00:5e:7c:42:0b dstMac=01:00:5e:2c:22:06 proto=icmp fw_action="block" -id=ritin sn=temporin time="2018-4-22 11:36:32" fw=10.122.76.148 pri=high c=tdol m=794 msg="upt" sid=mex spycat=tatem spypri=untutlab pktdatId=amcor n=ica src=10.13.66.97:2000:enp0s5411 dst=10.176.209.227:6362:eth7037 proto=ipv6/siu fw_action="allow" -id=quaea sn=ametcons time="2018/05/07 06:39:06" fw=10.74.46.22 pri=very-high c=tetur m=7 Log full; deactivating SonicWALL -id=ariatur sn=rer time="2018/05/21 13:41:41" fw=10.210.243.175 pri=low c=atisetqu m=240 msg="issuscip" n=uisa src=10.240.49.224 dst=10.77.174.205 -id=luptatem sn=uaeratv time="2018/06/04 20:44:15" fw=10.240.190.136 pri=medium c=atcupid m=255 msg="quamnih" n=dminima src=10.44.150.31 dst=10.187.210.173 -id=ntutlabo sn=iusmodte time="2018-6-19 3:46:49" fw=10.108.84.24 pri=low c=iosamnis m=606 msg="volupt" n=rem src=10.113.100.237:3887:eth163 dst=10.251.248.228:6909 srcMac= 01:00:5e:8b:c1:b4 dstMac=01:00:5e:c3:ed:55proto=udp fw_action="deny" -id=emvele sn=isnost time="2018/07/03 10:49:23" fw=10.71.112.159 pri=medium c=emqu m=28 Fragmented Packet Dropped -sit id=rumSect sn=ita time="2018/07/17 17:51:58" fw=10.139.65.241 pri=low c=teni m=61 Diagnostic Code E -oremag id=illu sn=ruredo time="2018/08/01 00:54:32" fw=10.72.196.74 pri=very-high c=ptassita m=906 msg="its" n=lore -sBono id=loremqu sn=tetur time="2018/08/15 07:57:06" fw=10.213.94.135 pri=very-high c=urmagn m=237 msg="block" n=uptat src=10.105.46.101:3346:enp0s382 dst= 10.50.44.5:7668:lo1441 -id=ddoeius sn=ugiatn time="2018/08/29 14:59:40" fw=10.50.102.128 pri=high c=abore m=328 msg="squ" n=uiadol src=10.60.142.127:1081:eth6291 dst= 10.52.248.251:5776:lo2241 -id=onu sn=liquaUte time="2018/09/12 22:02:15" fw=10.137.202.243 pri=high c=tempor m=134 PPPoE starting PAP Authentication -id=mveniamq sn=taedict time="2018-9-27 5:04:49" fw=10.206.69.135 pri=high c=aturve m=880 msg="utfug" n=aturQu note="aaliq" fw_action="allow" -id=uiinea sn=mnisiut time="2018/10/11 12:07:23" fw=10.208.228.129 pri=low c=olup m=441 msg="labor" n=dol src= 10.240.54.28 dst= 10.115.38.80 -id=mve sn=uia time="2018/10/25 19:09:57" fw=10.92.237.93 pri=high c=nsequunt m=163 Disconnecting PPPoE due to traffic timeout -id=doei sn=cipitl time="2018/11/09 02:12:32" fw=10.53.127.17 pri=very-high c=strumex m=252 msg="eprehend" n=asnu src=10.102.166.19 dst=10.104.49.142 -id=repreh sn=plic time="2018/11/23 09:15:06" fw=10.17.87.79 pri=high c=saq m=199 msg="block" n=ritqu src=10.203.77.154:3916:lo4991 dst= 10.120.25.169:1965:lo4527 -ipsa id=asuntexp sn=adminim time="2018/12/07 16:17:40" fw=10.115.115.26 pri=high c=modoc m=88 IKE Responder: IPSec proposal not acceptable -id=iumt sn=tsed time="2018/12/21 23:20:14" fw=10.249.120.78 pri=medium c=atuse m=34 Login screen timed out -id=loremag sn=tcu time="2019/01/05 06:22:49" fw=10.84.251.253 pri=high c=erspi m=195 msg="rorsit" n=tionemu src=10.77.95.12 dst=10.137.217.159 sport=2310 dport=563 rcvd=1629 -elillum id=upt sn=rnat time="2019/01/19 13:25:23" fw=10.1.96.93 pri=high c=edolo m=48 Out-of-order command packet dropped -doeiu id=deF sn=itempo time="2019/02/02 20:27:57" fw=10.200.237.196 pri=medium c=ecillum m=995 msg="isci" n=dolor src=10.165.48.224:5386 dst=10.191.242.168:5251 note="equep" -BCS id=qui sn=ugiatquo time="2019/02/17 03:30:32" fw=10.204.133.116 pri=medium c=autemv m=909 msg="emq" n=plicaboN -id=vol sn=admi time="2019/03/03 10:33:06" fw=10.77.229.168 pri=high c=aquiof m=178 msg="ende" n=abor src=10.185.37.32:708 dst=10.116.173.79:7693 -id=olorem sn=gitse time="2019/03/17 17:35:40" fw=10.245.127.213 pri=very-high c=billoinv m=995 msg="sci" n=col src=10.219.42.212:5708 dst=10.57.85.98:3286 note="mquisno" -id=nisiu sn=imad time="2019/04/01 00:38:14" fw=10.30.101.79 pri=high c=tenimad m=97 n=sitametc src= 10.152.35.175:2737:enp0s3423 dst= 10.88.244.209:6953:enp0s2460 proto=ipv6-icmp op=caecat sent=5835 dstname=tquidol -undeom id=emullamc sn=tec time="2019/04/15 07:40:49" fw=10.29.118.7 pri=medium c=mveleum m=537 msg="accept" f=exercita n=sBonorum src= 10.132.171.15 dst= 10.107.216.138:3147:lo5057:ugitsedq5067.internal.test proto=rdp sent=5943 rcvd=1635 -id=gna sn=isiutali time="2019/04/29 14:43:23" fw=10.156.152.182 pri=very-high c=ons m=137 Wan IP Changed -id=uaturve sn=amquisno time="2019/05/13 21:45:57" fw=10.123.74.66 pri=very-high c=mquiad m=351 msg="CSe" n=lors src=10.135.70.159 dst=10.195.223.82 -id=atu sn=iusm time="2019/05/28 04:48:31" fw=10.20.81.176 pri=low c=stquido m=261 msg="rsitvolu" n=mnisi usr=usmo src=10.22.244.71:1865:eth3249 dst= 10.142.120.198 -id=oin sn=itseddoe time="2019/06/11 11:51:06" fw=10.141.143.56 pri=low c=erc m=125 Unused AV log entry. -id=giatquov sn=olu time="2019/06/25 18:53:40" fw=10.137.103.62 pri=medium c=serror m=105 Sending DHCP DISCOVER. -emagn id=emulla sn=mips time="2019/07/10 01:56:14" fw=10.201.146.83 pri=very-high c=atnula m=34 Login screen timed out -id=itametc sn=ori time="2019/07/24 08:58:48" fw=10.202.74.93 pri=low c=ido m=144 Primary firewall has transitioned to Idle -id=doconse sn=etdol time="2019/08/07 16:01:23" fw=10.156.88.51 pri=high c=tura m=658 msg="osquirat" n=equat src=10.56.10.84:5366 dst=10.12.54.142:6543 -id=min sn=oluptat time="2019/08/21 23:03:57" fw=10.162.129.196 pri=medium c=snisi m=195 msg="magnaal" n=uscip src=10.222.169.140 dst=10.117.63.181 sport=5299 dport=6863 rcvd=7416 -id=eacommo sn=ueip time="2019/09/05 06:06:31" fw=10.243.252.157 pri=low c=minim m=867 msg="scipi" sess=tur n=acon -usm id=labori sn=porai time="2019/09/19 13:09:05" fw=10.73.176.98 pri=high c=ostr m=60 Access to Proxy Server Blocked -id=lup sn=upta time="2019-10-3 8:11:40" fw=10.247.88.138 pri=very-high c=orissu m=794 msg="fic" sid=sBon spycat=usmod spypri=umdol pktdatId=rumexerc n=isiutali src=10.57.255.4:239:lo1325 dst=10.200.122.184:1176:eth5397 proto=rdp/amvo fw_action="allow" -id=mmod sn=iti time="2019/10/18 03:14:14" fw=10.55.81.14 pri=medium c=asp m=19 Java blocked -id=mag sn=gelitse time="2019/11/01 10:16:48" fw=10.195.58.44 pri=high c=radip m=413 msg="upta" n=tetura src=10.206.229.61:3467 dst=10.129.101.147:3606 -id=nostrud sn=cteturad time="2019/11/15 17:19:22" fw=10.150.163.151 pri=high c=veniam m=159 Diagnostic Code F -id=imavenia sn=expli time="2019/11/30 00:21:57" fw=10.144.57.239 pri=medium c=rur m=520 msg="itse" n=ilm src=10.167.9.200:4003:lo5561 dst= 10.119.4.120:3822:enp0s234 -oluptate id=lit sn=santi time="2019/12/14 07:24:31" fw=10.211.112.194 pri=low c=uis m=1079 msg="Clientamcis assigned IP:10.221.220.148" n=apar diff --git a/x-pack/filebeat/module/sonicwall/firewall/test/generated.log-expected.json b/x-pack/filebeat/module/sonicwall/firewall/test/generated.log-expected.json deleted file mode 100644 index ae681e881ef..00000000000 --- a/x-pack/filebeat/module/sonicwall/firewall/test/generated.log-expected.json +++ /dev/null @@ -1,2712 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T08:09:59.000Z", - "destination.ip": "10.208.15.216", - "destination.port": 4257, - "event.code": "1197", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=nnumqua sn=eacommod time=\"2016/01/29 06:09:59\" fw=10.208.232.8 pri=very-high c=tur m=1197 msg=\"itv\" sess=odoco n=ria src=10.20.234.169:1001:eth5722 dst= 10.208.15.216:4257:lo6125 note= \"ntsunti Protocol:udp\" npcs=ciade", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 0, - "network.protocol": "udp", - "observer.egress.interface.name": "lo6125", - "observer.ingress.interface.name": "eth5722", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.20.234.169", - "10.208.15.216" - ], - "rsa.db.index": "ciade", - "rsa.internal.messageid": "1197", - "rsa.internal.msg": "itv", - "rsa.network.dinterface": "lo6125", - "rsa.network.sinterface": "eth5722", - "rsa.time.date": "2016/01/29", - "rsa.time.event_time": "2016-01-29T08:09:59.000Z", - "service.type": "sonicwall", - "source.ip": "10.20.234.169", - "source.port": 1001, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-02-12T15:12:33.000Z", - "destination.nat.ip": "10.49.111.67", - "destination.nat.port": 884, - "event.code": "914", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "idi id=pexe sn=nes time=\"2016/02/12 13:12:33\" fw=10.254.41.82 pri=low c=Ute m=914 msg=\"lupt\" n=dolore src=10.92.136.230:6437:eth7178:nostrud4819.mail.test dst=10.49.111.67:884:eth3598:oreetdol1714.internal.corp", - "fileset.name": "firewall", - "host.hostname": "oreetdol1714.internal.corp", - "host.name": "nostrud4819.mail.test", - "input.type": "log", - "log.offset": 222, - "observer.egress.interface.name": "eth3598", - "observer.ingress.interface.name": "eth7178", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.hosts": [ - "nostrud4819.mail.test", - "oreetdol1714.internal.corp" - ], - "related.ip": [ - "10.49.111.67", - "10.92.136.230" - ], - "rsa.internal.messageid": "914", - "rsa.internal.msg": "lupt", - "rsa.network.dinterface": "eth3598", - "rsa.network.sinterface": "eth7178", - "rsa.time.event_time": "2016-02-12T15:12:33.000Z", - "service.type": "sonicwall", - "source.address": "oreetdol1714.internal.corp", - "source.nat.ip": "10.92.136.230", - "source.nat.port": 6437, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-02-26T22:15:08.000Z", - "event.code": "16", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=umexe sn=estlabo time=\"2016/02/26 20:15:08\" fw=10.186.114.123 pri=high c=olupt m=16 Web site accessed", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 433, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "16", - "rsa.time.date": "2016/02/26", - "rsa.time.event_time": "2016-02-26T22:15:08.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-03-12T05:17:42.000Z", - "destination.ip": "10.227.15.1", - "destination.mac": "01:00:5e:f7:a9:ff", - "destination.port": 410, - "event.action": "allow", - "event.code": "alo", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=alo sn=eosquir time=\"2016-3-12 3:17:42\" fw=10.149.203.46 pri=medium c=mwritten m=1369 msg=\"ctetur\" n=uidolorsrc=10.150.156.22:6378:eth6183dst=10.227.15.1:410:eth1977srcMac=01:00:5e:84:66:6cdstMac=01:00:5e:f7:a9:ffproto=rdp/ommfw_action=\"allow\"", - "fileset.name": "firewall", - "host.ip": "10.149.203.46", - "input.type": "log", - "log.level": "medium", - "log.offset": 538, - "network.protocol": "rdp", - "observer.egress.interface.name": "eth1977", - "observer.ingress.interface.name": "eth6183", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.149.203.46", - "10.150.156.22", - "10.227.15.1" - ], - "rsa.internal.event_desc": "ctetur", - "rsa.internal.messageid": "1369", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "mwritten", - "rsa.misc.reference_id": "alo", - "rsa.misc.serial_number": "eosquir", - "rsa.misc.severity": "medium", - "rsa.network.dinterface": "eth1977", - "rsa.network.sinterface": "eth6183", - "rsa.time.date": "2016-3-12", - "rsa.time.event_time": "2016-03-12T05:17:42.000Z", - "service.type": "sonicwall", - "source.ip": "10.150.156.22", - "source.mac": "01:00:5e:84:66:6c", - "source.port": 6378, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-03-26T12:20:16.000Z", - "event.code": "127", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "emape id=aer sn=lupt time=\"2016/03/26 10:20:16\" fw=10.26.46.95 pri=medium c=temvel m=127 PPPoE LCP Link Up", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 785, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "127", - "rsa.time.event_time": "2016-03-26T12:20:16.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-04-09T19:22:51.000Z", - "event.code": "170", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=consec sn=taliquip time=\"2016/04/09 17:22:51\" fw=10.134.172.34 pri=high c=snos m=170 Received a path MTU icmp message from router/gateway", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 892, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "170", - "rsa.time.date": "2016/04/09", - "rsa.time.event_time": "2016-04-09T19:22:51.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-04-24T02:25:25.000Z", - "destination.ip": "10.13.70.213", - "event.code": "372", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tconsec sn=nsequat time=\"2016/04/24 00:25:25\" fw=10.137.246.137 pri=medium c=oluptas m=372 msg=\"llu\" n=uptassi src=10.95.245.65 dst=10.13.70.213", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1033, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.13.70.213", - "10.95.245.65" - ], - "rsa.internal.messageid": "372", - "rsa.internal.msg": "llu", - "rsa.time.date": "2016/04/24", - "rsa.time.event_time": "2016-04-24T02:25:25.000Z", - "service.type": "sonicwall", - "source.ip": "10.95.245.65", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-05-08T09:27:59.000Z", - "event.code": "176", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "llamcorp id=ari sn=eataevit time=\"2016/05/08 07:27:59\" fw=10.50.112.141 pri=very-high c=dmi m=176 Fraudulent Microsoft Certificate Blocked", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1181, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "176", - "rsa.time.event_time": "2016-05-08T09:27:59.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-05-22T16:30:33.000Z", - "event.code": "50", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "mquisnos id=loremagn sn=iciade time=\"2016/05/22 14:30:33\" fw=10.137.104.79 pri=medium c=mUt m=50 RealAudio decode failure", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1320, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "50", - "rsa.time.event_time": "2016-05-22T16:30:33.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-06-05T23:33:08.000Z", - "event.code": "87", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=aali sn=ametcons time=\"2016/06/05 21:33:08\" fw=10.244.98.230 pri=low c=iinea m=87 IKE Responder: Accepting IPSec proposal", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1442, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "87", - "rsa.time.date": "2016/06/05", - "rsa.time.event_time": "2016-06-05T23:33:08.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-06-20T06:35:42.000Z", - "destination.ip": "10.16.52.205", - "event.action": "accept", - "event.code": "139", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "emip id=tvol sn=moll time=\"2016/06/20 04:35:42\" fw=10.228.149.225 pri=high c=deomni m=139 msg=\"accept\" n=onse src=10.136.153.149:3788:enp0s2489 dst= 10.16.52.205", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1567, - "observer.ingress.interface.name": "enp0s2489", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.136.153.149", - "10.16.52.205" - ], - "rsa.internal.messageid": "139", - "rsa.misc.action": [ - "accept" - ], - "rsa.network.sinterface": "enp0s2489", - "rsa.time.event_time": "2016-06-20T06:35:42.000Z", - "service.type": "sonicwall", - "source.ip": "10.136.153.149", - "source.port": 3788, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-07-04T13:38:16.000Z", - "event.code": "15", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "orsitame id=quiratio sn=ite time=\"2016/07/04 11:38:16\" fw=10.72.98.186 pri=very-high c=ercit m=15 Newsgroup blocked", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1729, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "15", - "rsa.time.event_time": "2016-07-04T13:38:16.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-07-18T20:40:50.000Z", - "event.code": "70", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=usan sn=aper time=\"2016/07/18 18:40:50\" fw=10.183.16.166 pri=low c=ender m=70 IPSec packet from illegal host", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1845, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "70", - "rsa.time.date": "2016/07/18", - "rsa.time.event_time": "2016-07-18T20:40:50.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-08-02T03:43:25.000Z", - "event.code": "129", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=atquovo sn=iumto time=\"2016/08/02 01:43:25\" fw=10.117.18.47 pri=low c=essecill m=129 PPPoE terminated", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 1957, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "129", - "rsa.time.date": "2016/08/02", - "rsa.time.event_time": "2016-08-02T03:43:25.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-08-16T10:45:59.000Z", - "event.action": "cancel", - "event.code": "1149", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=undeo sn=loremip time=\"2016-8-16 8:45:59\" fw=10.134.0.141 pri=very-high c=uis m=1149 msg=\"idolore\" n=onse fw_action=\"cancel\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2062, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.event_desc": "idolore", - "rsa.internal.messageid": "1149", - "rsa.misc.action": [ - "cancel" - ], - "rsa.time.date": "2016-8-16", - "rsa.time.event_time": "2016-08-16T10:45:59.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-08-30T17:48:33.000Z", - "event.code": "81", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=rveli sn=rsint time=\"2016/08/30 15:48:33\" fw=10.172.146.234 pri=very-high c=Nemoeni m=81 Smurf Amplification Attack Dropped", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2190, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "81", - "rsa.time.date": "2016/08/30", - "rsa.time.event_time": "2016-08-30T17:48:33.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-09-14T00:51:07.000Z", - "event.code": "1110", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=qua sn=luptatev time=\"2016/09/13 22:51:07\" fw=10.123.104.59 pri=low c=elaudant m=1110 msg=\"tinvol\" n=lores", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 2317, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "1110", - "rsa.time.date": "2016/09/13", - "rsa.time.event_time": "2016-09-14T00:51:07.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-09-28T07:53:42.000Z", - "event.code": "10", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tatiset sn=eprehen time=\"2016/09/28 05:53:42\" fw=10.117.146.33 pri=high c=entsu m=10 Problem loading the Filter list; check Filter settings", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2427, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "10", - "rsa.time.date": "2016/09/28", - "rsa.time.event_time": "2016-09-28T07:53:42.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-10-12T14:56:16.000Z", - "destination.nat.ip": "10.30.196.102", - "event.code": "353", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=aliq sn=rsitam time=\"2016/10/12 12:56:16\" fw=10.79.33.129 pri=high c=umdolo m=353 msg=\"onproide\" n=Nemoen src=10.241.178.107 dst=10.30.196.102 dstname=fugi4637.www.lan lifeSeconds=imadmini\"", - "fileset.name": "firewall", - "host.hostname": "fugi4637.www.lan", - "input.type": "log", - "log.offset": 2570, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.hosts": [ - "fugi4637.www.lan" - ], - "related.ip": [ - "10.241.178.107", - "10.30.196.102" - ], - "rsa.internal.messageid": "353", - "rsa.internal.msg": "onproide", - "rsa.misc.misc": "imadmini", - "rsa.misc.ntype": "Nemoen", - "rsa.time.date": "2016/10/12", - "rsa.time.event_time": "2016-10-12T14:56:16.000Z", - "service.type": "sonicwall", - "source.address": "fugi4637.www.lan", - "source.nat.ip": "10.241.178.107", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-10-26T21:58:50.000Z", - "event.code": "68", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=itecto sn=erc time=\"2016/10/26 19:58:50\" fw=10.69.57.206 pri=high c=nsec m=68 IPSec Decryption Failed", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2763, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "68", - "rsa.time.date": "2016/10/26", - "rsa.time.event_time": "2016-10-26T21:58:50.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-11-10T05:01:24.000Z", - "destination.nat.ip": "10.78.151.178", - "destination.nat.port": 3088, - "event.code": "24", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tat sn=tion time=\"2016/11/10 03:01:24\" fw=10.53.150.119 pri=medium c=uasia m=24 msg=\"emp\" n=aperia src=10.157.161.103:383 dst=10.78.151.178:3088 note=\"taut\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 2868, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.157.161.103", - "10.78.151.178" - ], - "rsa.internal.event_desc": "taut", - "rsa.internal.messageid": "24", - "rsa.internal.msg": "emp", - "rsa.time.date": "2016/11/10", - "rsa.time.event_time": "2016-11-10T05:01:24.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.157.161.103", - "source.nat.port": 383, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-11-24T12:03:59.000Z", - "destination.ip": "10.206.136.206", - "destination.port": 4108, - "event.code": "242", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tati sn=utaliqu time=\"2016/11/24 10:03:59\" fw=10.53.187.44 pri=high c=iadese m=242 msg=\"imidest\" n=emagnama src= 10.153.136.222 dst= 10.206.136.206:4108", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3028, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.153.136.222", - "10.206.136.206" - ], - "rsa.internal.messageid": "242", - "rsa.internal.msg": "imidest", - "rsa.time.date": "2016/11/24", - "rsa.time.event_time": "2016-11-24T12:03:59.000Z", - "service.type": "sonicwall", - "source.ip": "10.153.136.222", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-12-08T19:06:33.000Z", - "destination.ip": "10.239.201.234", - "event.code": "87", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=nidolo sn=tatn time=\"2016/12/08 17:06:33\" fw=10.18.109.121 pri=very-high c=dolo m=87 msg=\"Loremip\" n=idolor src=10.204.11.20 dst=10.239.201.234", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3184, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.204.11.20", - "10.239.201.234" - ], - "rsa.internal.messageid": "87", - "rsa.internal.msg": "Loremip", - "rsa.time.date": "2016/12/08", - "rsa.time.event_time": "2016-12-08T19:06:33.000Z", - "service.type": "sonicwall", - "source.ip": "10.204.11.20", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2016-12-23T14:09:07.000Z", - "destination.ip": "10.219.116.137", - "destination.mac": "01:00:5e:e1:73:47", - "destination.port": 3452, - "event.action": "accept", - "event.code": "quip", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=quip sn=mporain time=\"2016-12-23 12:09:07\" fw=10.34.161.166 pri=very-high c=sequi m=428 msg=\"rehend\" n=tio src=10.245.200.97:3768:eth4059 dst=10.219.116.137:3452:enp0s3611 srcMac= 01:00:5e:1a:ec:91 dstMac=01:00:5e:e1:73:47 proto=icmp fw_action=\"accept\"", - "fileset.name": "firewall", - "host.ip": "10.34.161.166", - "input.type": "log", - "log.level": "very-high", - "log.offset": 3331, - "network.protocol": "icmp", - "observer.egress.interface.name": "enp0s3611", - "observer.ingress.interface.name": "eth4059", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.219.116.137", - "10.245.200.97", - "10.34.161.166" - ], - "rsa.internal.event_desc": "rehend", - "rsa.internal.messageid": "428", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.category": "sequi", - "rsa.misc.reference_id": "quip", - "rsa.misc.serial_number": "mporain", - "rsa.misc.severity": "very-high", - "rsa.network.dinterface": "enp0s3611", - "rsa.network.sinterface": "eth4059", - "rsa.time.date": "2016-12-23", - "rsa.time.event_time": "2016-12-23T14:09:07.000Z", - "service.type": "sonicwall", - "source.ip": "10.245.200.97", - "source.mac": "01:00:5e:1a:ec:91", - "source.port": 3768, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-01-06T09:11:41.000Z", - "destination.ip": "10.252.122.195", - "event.code": "401", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=idex sn=xerci time=\"2017/01/06 07:11:41\" fw=10.84.206.79 pri=high c=uipe m=401 msg=\"inesci\" n=serror src=10.118.80.140 dst=10.252.122.195 dstname=eFinib", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3587, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.118.80.140", - "10.252.122.195" - ], - "rsa.internal.messageid": "401", - "rsa.internal.msg": "inesci", - "rsa.misc.name": "eFinib", - "rsa.time.date": "2017/01/06", - "rsa.time.event_time": "2017-01-06T09:11:41.000Z", - "service.type": "sonicwall", - "source.ip": "10.118.80.140", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-01-20T16:14:16.000Z", - "event.code": "143", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ari sn=exercit time=\"2017/01/20 14:14:16\" fw=10.220.244.59 pri=high c=oluptate m=143 Backup firewall has transitioned to Active", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3743, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "143", - "rsa.time.date": "2017/01/20", - "rsa.time.event_time": "2017-01-20T16:14:16.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-02-03T23:16:50.000Z", - "event.code": "104", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=serunt sn=aquaeabi time=\"2017/02/03 21:16:50\" fw=10.171.157.74 pri=high c=emoe m=104 Retransmitting DHCP REQUEST (Verifying).", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 3874, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "104", - "rsa.time.date": "2017/02/03", - "rsa.time.event_time": "2017-02-03T23:16:50.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-02-18T06:19:24.000Z", - "event.code": "156", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=veniamq sn=one time=\"2017/02/18 04:19:24\" fw=10.4.26.208 pri=very-high c=reseos m=156 Backup received heartbeat from wrong source", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4003, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "156", - "rsa.time.date": "2017/02/18", - "rsa.time.event_time": "2017-02-18T06:19:24.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-03-04T13:21:59.000Z", - "event.code": "132", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tin sn=tenima time=\"2017/03/04 11:21:59\" fw=10.241.177.156 pri=medium c=proide m=132 PPPoE discovery process complete", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4136, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "132", - "rsa.time.date": "2017/03/04", - "rsa.time.event_time": "2017-03-04T13:21:59.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-03-18T08:24:33.000Z", - "destination.ip": "10.30.153.159", - "destination.port": 6843, - "event.action": "cancel", - "event.code": "794", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tmollita sn=fde time=\"2017-3-18 6:24:33\" fw=10.149.89.126 pri=high c=abo m=794 msg=\"veniamqu\" sid=nse spycat=non spypri=paquioff pktdatId=mquisnos n=maven src=10.86.101.235:3266:lo6501 dst=10.30.153.159:6843:enp0s6487 proto=icmp/eporr fw_action=\"cancel\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4257, - "network.protocol": "icmp", - "observer.egress.interface.name": "enp0s6487", - "observer.ingress.interface.name": "lo6501", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.30.153.159", - "10.86.101.235" - ], - "rsa.identity.user_sid_dst": "nse", - "rsa.internal.event_desc": "veniamqu", - "rsa.internal.messageid": "794", - "rsa.misc.action": [ - "cancel" - ], - "rsa.network.dinterface": "enp0s6487", - "rsa.network.sinterface": "lo6501", - "rsa.time.date": "2017-3-18", - "rsa.time.event_time": "2017-03-18T08:24:33.000Z", - "service.type": "sonicwall", - "source.ip": "10.86.101.235", - "source.port": 3266, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-04-02T03:27:07.000Z", - "event.code": "133", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=aturQui sn=utlabor time=\"2017/04/02 01:27:07\" fw=10.38.249.71 pri=low c=mfugiat m=133 PPPoE starting CHAP Authentication", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4514, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "133", - "rsa.time.date": "2017/04/02", - "rsa.time.event_time": "2017-04-02T03:27:07.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-04-16T10:29:41.000Z", - "event.code": "9", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tvolu sn=ecte time=\"2017/04/16 08:29:41\" fw=10.130.14.60 pri=low c=iciadese m=9 No new Filter list available", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4638, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "9", - "rsa.time.date": "2017/04/16", - "rsa.time.event_time": "2017-04-16T10:29:41.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-04-30T17:32:16.000Z", - "destination.ip": "10.162.172.28", - "event.code": "255", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "olupta id=litse sn=icabo time=\"2017/04/30 15:32:16\" fw=10.89.208.95 pri=low c=llumdolo m=255 msg=\"nre\" n=ercitat src=10.237.163.139 dst=10.162.172.28", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 4750, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.162.172.28", - "10.237.163.139" - ], - "rsa.internal.messageid": "255", - "rsa.internal.msg": "nre", - "rsa.time.event_time": "2017-04-30T17:32:16.000Z", - "service.type": "sonicwall", - "source.ip": "10.237.163.139", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-05-15T00:34:50.000Z", - "event.action": "allow", - "event.code": "31", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "ionevo id=ugiatnu sn=ciati time=\"2017/05/14 22:34:50\" fw=10.184.122.157 pri=medium c=scivelit m=31 msg=\"allow\" n=ehen src=10.191.23.41:1493:eth4488 dst= 10.250.47.252 ", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 4900, - "observer.ingress.interface.name": "eth4488", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.191.23.41" - ], - "rsa.internal.messageid": "31", - "rsa.misc.action": [ - "allow" - ], - "rsa.network.sinterface": "eth4488", - "rsa.time.event_time": "2017-05-15T00:34:50.000Z", - "service.type": "sonicwall", - "source.ip": "10.191.23.41", - "source.port": 1493, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-05-29T07:37:24.000Z", - "event.code": "12", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=pta sn=tetu time=\"2017/05/29 05:37:24\" fw=10.101.57.134 pri=low c=Nequepo m=12 Problem sending log email; check log settings", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 5068, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "12", - "rsa.time.date": "2017/05/29", - "rsa.time.event_time": "2017-05-29T07:37:24.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-06-12T14:39:58.000Z", - "destination.nat.ip": "10.111.187.12", - "destination.nat.port": 3577, - "event.code": "994", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "ntocc id=uteirure sn=nevo time=\"2017/06/12 12:39:58\" fw=10.226.23.214 pri=very-high c=adip m=994 msg=\"tium\" n=nnum usr=tenbyCi src=10.16.72.220:1842 dst=10.111.187.12:3577 note=\"quinesc\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 5196, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.111.187.12", - "10.16.72.220" - ], - "related.user": [ - "tenbyCi" - ], - "rsa.internal.event_desc": "quinesc", - "rsa.internal.messageid": "994", - "rsa.internal.msg": "tium", - "rsa.time.event_time": "2017-06-12T14:39:58.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.16.72.220", - "source.nat.port": 1842, - "tags": [ - "forwarded", - "sonicwall.firewall" - ], - "user.name": "tenbyCi" - }, - { - "@timestamp": "2017-06-26T21:42:33.000Z", - "event.code": "7", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=tur sn=roi time=\"2017/06/26 19:42:33\" fw=10.106.31.86 pri=low c=sno m=7 Log full; deactivating SonicWALL", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 5383, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "7", - "rsa.time.date": "2017/06/26", - "rsa.time.event_time": "2017-06-26T21:42:33.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-07-11T04:45:07.000Z", - "event.code": "866", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "ntocca id=ostru sn=ntoccae time=\"2017/07/11 02:45:07\" fw=10.35.99.92 pri=medium c=iatisu m=866 msg=\"sec\" sess=cons n=sBon", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 5491, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "866", - "rsa.internal.msg": "sec", - "rsa.misc.ntype": "sBon", - "rsa.time.event_time": "2017-07-11T04:45:07.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-07-25T11:47:41.000Z", - "destination.ip": "10.131.61.13", - "event.action": "accept", - "event.code": "538", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ten sn=vita time=\"2017/07/25 09:47:41\" fw=10.35.5.16 pri=high c=emaccusa m=538 msg=\"accept\" n=qui src=10.143.76.137:1414:lo3470 dst= 10.131.61.13", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 5613, - "observer.ingress.interface.name": "lo3470", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.131.61.13", - "10.143.76.137" - ], - "rsa.internal.messageid": "538", - "rsa.misc.action": [ - "accept" - ], - "rsa.network.sinterface": "lo3470", - "rsa.time.date": "2017/07/25", - "rsa.time.event_time": "2017-07-25T11:47:41.000Z", - "service.type": "sonicwall", - "source.ip": "10.143.76.137", - "source.port": 1414, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-08-08T18:50:15.000Z", - "destination.address": "Nemoenim2039.api.localhost", - "destination.nat.ip": "10.77.129.130", - "destination.nat.port": 6604, - "event.code": "793", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=evolu sn=ersp time=\"2017/08/08 16:50:15\" fw=10.64.221.30 pri=medium c=inven m=793 msg=\"osquira\" af_polid=tes af_policy=\"mquame\" af_type=\"nihilmol\" af_service=\"xercita\" af_action=\"trud\" n=eriti src=10.99.0.226:2984:eth1766:sequatu341.mail.invalid dst=10.77.129.130:6604:enp0s4138:Nemoenim2039.api.localhost", - "fileset.name": "firewall", - "host.hostname": "sequatu341.mail.invalid", - "input.type": "log", - "log.offset": 5762, - "observer.egress.interface.name": "enp0s4138", - "observer.ingress.interface.name": "eth1766", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.hosts": [ - "Nemoenim2039.api.localhost", - "sequatu341.mail.invalid" - ], - "related.ip": [ - "10.77.129.130", - "10.99.0.226" - ], - "rsa.internal.messageid": "793", - "rsa.internal.msg": "osquira", - "rsa.network.dinterface": "enp0s4138", - "rsa.network.host_dst": "Nemoenim2039.api.localhost", - "rsa.network.sinterface": "eth1766", - "rsa.time.date": "2017/08/08", - "rsa.time.event_time": "2017-08-08T18:50:15.000Z", - "service.type": "sonicwall", - "source.address": "sequatu341.mail.invalid", - "source.nat.ip": "10.99.0.226", - "source.nat.port": 2984, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-08-23T01:52:50.000Z", - "event.code": "905", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=nbyCic sn=utlabor time=\"2017/08/22 23:52:50\" fw=10.27.251.77 pri=medium c=ine m=905 msg=\"lup\" n=tatemUt", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 6071, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "905", - "rsa.internal.msg": "lup", - "rsa.misc.ntype": "tatemUt", - "rsa.time.date": "2017/08/22", - "rsa.time.event_time": "2017-08-23T01:52:50.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-09-06T08:55:24.000Z", - "event.code": "94", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=quovol sn=nve time=\"2017/09/06 06:55:24\" fw=10.104.201.10 pri=very-high c=ccaecat m=94 Diagnostic Code B", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 6178, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "94", - "rsa.time.date": "2017/09/06", - "rsa.time.event_time": "2017-09-06T08:55:24.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-09-20T15:57:58.000Z", - "event.code": "565", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "tau id=exercita sn=ris time=\"2017/09/20 13:57:58\" fw=10.84.25.23 pri=high c=boree m=565 msg=\"intoc\" n=ncidi", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 6286, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "565", - "rsa.time.event_time": "2017-09-20T15:57:58.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-10-04T23:00:32.000Z", - "event.code": "37", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "irat id=onev sn=aturauto time=\"2017/10/04 21:00:32\" fw=10.218.243.47 pri=very-high c=oremi m=37 UDP packet dropped", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 6394, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "37", - "rsa.time.event_time": "2017-10-04T23:00:32.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-10-19T06:03:07.000Z", - "event.code": "4", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=temUt sn=olor time=\"2017/10/19 04:03:07\" fw=10.19.10.148 pri=low c=niamqui m=4 SonicWALL activated", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 6509, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "4", - "rsa.time.date": "2017/10/19", - "rsa.time.event_time": "2017-10-19T06:03:07.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-11-02T13:05:41.000Z", - "event.code": "156", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ess sn=ipisci time=\"2017/11/02 11:05:41\" fw=10.113.95.59 pri=very-high c=reprehen m=156 Backup received heartbeat from wrong source", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 6611, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "156", - "rsa.time.date": "2017/11/02", - "rsa.time.event_time": "2017-11-02T13:05:41.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-11-16T20:08:15.000Z", - "destination.ip": "10.192.27.157", - "event.action": "accept", - "event.code": "140", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "luptate id=persp sn=entsunt time=\"2017/11/16 18:08:15\" fw=10.206.107.211 pri=low c=fugi m=140 msg=\"accept\" n=inci src=10.230.173.4:2631:enp0s5632 dst= 10.192.27.157", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 6746, - "observer.ingress.interface.name": "enp0s5632", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.192.27.157", - "10.230.173.4" - ], - "rsa.internal.messageid": "140", - "rsa.misc.action": [ - "accept" - ], - "rsa.network.sinterface": "enp0s5632", - "rsa.time.event_time": "2017-11-16T20:08:15.000Z", - "service.type": "sonicwall", - "source.ip": "10.230.173.4", - "source.port": 2631, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-12-01T03:10:49.000Z", - "event.code": "118", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=cusant sn=atemq time=\"2017/12/01 01:10:49\" fw=10.136.31.188 pri=high c=borios m=118 Sending DHCP REQUEST (Verifying).", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 6911, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "118", - "rsa.time.date": "2017/12/01", - "rsa.time.event_time": "2017-12-01T03:10:49.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-12-15T10:13:24.000Z", - "event.code": "18", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ercita sn=ciadeser time=\"2017/12/15 08:13:24\" fw=10.175.236.135 pri=medium c=isnisi m=18 ActiveX blocked", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7032, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "18", - "rsa.time.date": "2017/12/15", - "rsa.time.event_time": "2017-12-15T10:13:24.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2017-12-29T17:15:58.000Z", - "destination.bytes": 6587, - "destination.ip": "10.190.175.158", - "destination.port": 7005, - "event.code": "195", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=isiuta sn=orsitam time=\"2017/12/29 15:15:58\" fw=10.159.119.34 pri=high c=psaquaea m=195 msg=\"taevita\" n=ameiusm src=10.227.15.253 dst=10.190.175.158 sport=271 dport=7005 rcvd=6587", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7140, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.190.175.158", - "10.227.15.253" - ], - "rsa.internal.messageid": "195", - "rsa.internal.msg": "taevita", - "rsa.time.date": "2017/12/29", - "rsa.time.event_time": "2017-12-29T17:15:58.000Z", - "service.type": "sonicwall", - "source.ip": "10.227.15.253", - "source.port": 271, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-01-13T00:18:32.000Z", - "event.code": "22", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=nre sn=veli time=\"2018/01/12 22:18:32\" fw=10.62.147.186 pri=low c=elitse m=22 Ping of death blocked", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7323, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "22", - "rsa.time.date": "2018/01/12", - "rsa.time.event_time": "2018-01-13T00:18:32.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-01-27T07:21:06.000Z", - "destination.ip": "10.15.97.155", - "destination.port": 5935, - "event.action": "block", - "event.code": "616", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=quasia sn=adi time=\"2018/01/27 05:21:06\" fw=10.9.12.248 pri=medium c=mac m=616 msg=\"block\" n=aveni src=10.29.155.171:1871 dst=10.15.97.155:5935", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7426, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.15.97.155", - "10.29.155.171" - ], - "rsa.internal.messageid": "616", - "rsa.misc.action": [ - "block" - ], - "rsa.time.date": "2018/01/27", - "rsa.time.event_time": "2018-01-27T07:21:06.000Z", - "service.type": "sonicwall", - "source.ip": "10.29.155.171", - "source.port": 1871, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-02-10T14:23:41.000Z", - "event.code": "9", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=llamco sn=nea time=\"2018/02/10 12:23:41\" fw=10.123.143.188 pri=medium c=orsit m=9 No new Filter list available", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7573, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "9", - "rsa.time.date": "2018/02/10", - "rsa.time.event_time": "2018-02-10T14:23:41.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-02-24T21:26:15.000Z", - "event.code": "907", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ise sn=itau time=\"2018/02/24 19:26:15\" fw=10.44.22.97 pri=very-high c=lorsita m=907 msg=\"dolore\" n=uptate", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7687, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "907", - "rsa.internal.msg": "dolore", - "rsa.misc.ntype": "uptate", - "rsa.time.date": "2018/02/24", - "rsa.time.event_time": "2018-02-24T21:26:15.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-03-11T04:28:49.000Z", - "event.code": "157", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=odi sn=ptass time=\"2018/03/11 02:28:49\" fw=10.39.10.155 pri=low c=tametcon m=157 HA packet processing error", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7796, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "157", - "rsa.time.date": "2018/03/11", - "rsa.time.event_time": "2018-03-11T04:28:49.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-03-25T11:31:24.000Z", - "destination.ip": "10.25.32.107", - "event.code": "261", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=aco sn=tio time=\"2018/03/25 09:31:24\" fw=10.112.38.219 pri=high c=dantium m=261 msg=\"lor\" n=velillu usr=cteturad src= 10.18.204.87 dst= 10.25.32.107", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 7907, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.18.204.87", - "10.25.32.107" - ], - "related.user": [ - "cteturad" - ], - "rsa.internal.messageid": "261", - "rsa.internal.msg": "lor", - "rsa.time.date": "2018/03/25", - "rsa.time.event_time": "2018-03-25T11:31:24.000Z", - "service.type": "sonicwall", - "source.ip": "10.18.204.87", - "tags": [ - "forwarded", - "sonicwall.firewall" - ], - "user.name": "cteturad" - }, - { - "@timestamp": "2018-04-08T06:33:58.000Z", - "destination.ip": "10.246.0.167", - "destination.mac": "01:00:5e:2c:22:06", - "destination.port": 2189, - "event.action": "block", - "event.code": "utodita", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=utodita sn=aec time=\"2018-4-8 4:33:58\" fw=10.21.89.175 pri=medium c=diconse m=428 msg=\"elitse\" n=reseo src=10.71.238.250:41:lo3856 dst=10.246.0.167:2189:eth2632 srcMac= 01:00:5e:7c:42:0b dstMac=01:00:5e:2c:22:06 proto=icmp fw_action=\"block\"", - "fileset.name": "firewall", - "host.ip": "10.21.89.175", - "input.type": "log", - "log.level": "medium", - "log.offset": 8059, - "network.protocol": "icmp", - "observer.egress.interface.name": "eth2632", - "observer.ingress.interface.name": "lo3856", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.21.89.175", - "10.246.0.167", - "10.71.238.250" - ], - "rsa.internal.event_desc": "elitse", - "rsa.internal.messageid": "428", - "rsa.misc.action": [ - "block" - ], - "rsa.misc.category": "diconse", - "rsa.misc.reference_id": "utodita", - "rsa.misc.serial_number": "aec", - "rsa.misc.severity": "medium", - "rsa.network.dinterface": "eth2632", - "rsa.network.sinterface": "lo3856", - "rsa.time.date": "2018-4-8", - "rsa.time.event_time": "2018-04-08T06:33:58.000Z", - "service.type": "sonicwall", - "source.ip": "10.71.238.250", - "source.mac": "01:00:5e:7c:42:0b", - "source.port": 41, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-04-22T13:36:32.000Z", - "destination.ip": "10.176.209.227", - "destination.port": 6362, - "event.action": "allow", - "event.code": "794", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ritin sn=temporin time=\"2018-4-22 11:36:32\" fw=10.122.76.148 pri=high c=tdol m=794 msg=\"upt\" sid=mex spycat=tatem spypri=untutlab pktdatId=amcor n=ica src=10.13.66.97:2000:enp0s5411 dst=10.176.209.227:6362:eth7037 proto=ipv6/siu fw_action=\"allow\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 8303, - "network.protocol": "ipv6", - "observer.egress.interface.name": "eth7037", - "observer.ingress.interface.name": "enp0s5411", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.13.66.97", - "10.176.209.227" - ], - "rsa.identity.user_sid_dst": "mex", - "rsa.internal.event_desc": "upt", - "rsa.internal.messageid": "794", - "rsa.misc.action": [ - "allow" - ], - "rsa.network.dinterface": "eth7037", - "rsa.network.sinterface": "enp0s5411", - "rsa.time.date": "2018-4-22", - "rsa.time.event_time": "2018-04-22T13:36:32.000Z", - "service.type": "sonicwall", - "source.ip": "10.13.66.97", - "source.port": 2000, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-05-07T08:39:06.000Z", - "event.code": "7", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=quaea sn=ametcons time=\"2018/05/07 06:39:06\" fw=10.74.46.22 pri=very-high c=tetur m=7 Log full; deactivating SonicWALL", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 8553, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "7", - "rsa.time.date": "2018/05/07", - "rsa.time.event_time": "2018-05-07T08:39:06.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-05-21T15:41:41.000Z", - "destination.nat.ip": "10.77.174.205", - "event.code": "240", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ariatur sn=rer time=\"2018/05/21 13:41:41\" fw=10.210.243.175 pri=low c=atisetqu m=240 msg=\"issuscip\" n=uisa src=10.240.49.224 dst=10.77.174.205", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 8675, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.240.49.224", - "10.77.174.205" - ], - "rsa.internal.messageid": "240", - "rsa.internal.msg": "issuscip", - "rsa.misc.ntype": "uisa", - "rsa.time.date": "2018/05/21", - "rsa.time.event_time": "2018-05-21T15:41:41.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.240.49.224", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-06-04T22:44:15.000Z", - "destination.ip": "10.187.210.173", - "event.code": "255", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=luptatem sn=uaeratv time=\"2018/06/04 20:44:15\" fw=10.240.190.136 pri=medium c=atcupid m=255 msg=\"quamnih\" n=dminima src=10.44.150.31 dst=10.187.210.173", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 8821, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.187.210.173", - "10.44.150.31" - ], - "rsa.internal.messageid": "255", - "rsa.internal.msg": "quamnih", - "rsa.time.date": "2018/06/04", - "rsa.time.event_time": "2018-06-04T22:44:15.000Z", - "service.type": "sonicwall", - "source.ip": "10.44.150.31", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-06-19T05:46:49.000Z", - "destination.ip": "10.251.248.228", - "destination.mac": "01:00:5e:c3:ed:55", - "destination.port": 6909, - "event.action": "deny", - "event.code": "ntutlabo", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ntutlabo sn=iusmodte time=\"2018-6-19 3:46:49\" fw=10.108.84.24 pri=low c=iosamnis m=606 msg=\"volupt\" n=rem src=10.113.100.237:3887:eth163 dst=10.251.248.228:6909 srcMac= 01:00:5e:8b:c1:b4 dstMac=01:00:5e:c3:ed:55proto=udp fw_action=\"deny\"", - "fileset.name": "firewall", - "host.ip": "10.108.84.24", - "input.type": "log", - "log.level": "low", - "log.offset": 8976, - "network.protocol": "udp", - "observer.ingress.interface.name": "eth163", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.108.84.24", - "10.113.100.237", - "10.251.248.228" - ], - "rsa.internal.event_desc": "volupt", - "rsa.internal.messageid": "606", - "rsa.misc.action": [ - "deny" - ], - "rsa.misc.category": "iosamnis", - "rsa.misc.reference_id": "ntutlabo", - "rsa.misc.serial_number": "iusmodte", - "rsa.misc.severity": "low", - "rsa.network.sinterface": "eth163", - "rsa.time.date": "2018-6-19", - "rsa.time.event_time": "2018-06-19T05:46:49.000Z", - "service.type": "sonicwall", - "source.ip": "10.113.100.237", - "source.mac": "01:00:5e:8b:c1:b4", - "source.port": 3887, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-07-03T12:49:23.000Z", - "event.code": "28", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=emvele sn=isnost time=\"2018/07/03 10:49:23\" fw=10.71.112.159 pri=medium c=emqu m=28 Fragmented Packet Dropped", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 9217, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "28", - "rsa.time.date": "2018/07/03", - "rsa.time.event_time": "2018-07-03T12:49:23.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-07-17T19:51:58.000Z", - "event.code": "61", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "sit id=rumSect sn=ita time=\"2018/07/17 17:51:58\" fw=10.139.65.241 pri=low c=teni m=61 Diagnostic Code E", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 9330, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "61", - "rsa.time.event_time": "2018-07-17T19:51:58.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-08-01T02:54:32.000Z", - "event.code": "906", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "oremag id=illu sn=ruredo time=\"2018/08/01 00:54:32\" fw=10.72.196.74 pri=very-high c=ptassita m=906 msg=\"its\" n=lore", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 9434, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "906", - "rsa.internal.msg": "its", - "rsa.misc.ntype": "lore", - "rsa.time.event_time": "2018-08-01T02:54:32.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-08-15T09:57:06.000Z", - "destination.ip": "10.50.44.5", - "destination.port": 7668, - "event.action": "block", - "event.code": "237", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "sBono id=loremqu sn=tetur time=\"2018/08/15 07:57:06\" fw=10.213.94.135 pri=very-high c=urmagn m=237 msg=\"block\" n=uptat src=10.105.46.101:3346:enp0s382 dst= 10.50.44.5:7668:lo1441", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 9550, - "observer.egress.interface.name": "lo1441", - "observer.ingress.interface.name": "enp0s382", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.105.46.101", - "10.50.44.5" - ], - "rsa.internal.messageid": "237", - "rsa.misc.action": [ - "block" - ], - "rsa.network.dinterface": "lo1441", - "rsa.network.sinterface": "enp0s382", - "rsa.time.event_time": "2018-08-15T09:57:06.000Z", - "service.type": "sonicwall", - "source.ip": "10.105.46.101", - "source.port": 3346, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-08-29T16:59:40.000Z", - "destination.ip": "10.52.248.251", - "destination.port": 5776, - "event.code": "328", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=ddoeius sn=ugiatn time=\"2018/08/29 14:59:40\" fw=10.50.102.128 pri=high c=abore m=328 msg=\"squ\" n=uiadol src=10.60.142.127:1081:eth6291 dst= 10.52.248.251:5776:lo2241", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 9729, - "observer.egress.interface.name": "lo2241", - "observer.ingress.interface.name": "eth6291", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.52.248.251", - "10.60.142.127" - ], - "rsa.internal.messageid": "328", - "rsa.internal.msg": "squ", - "rsa.network.dinterface": "lo2241", - "rsa.network.sinterface": "eth6291", - "rsa.time.date": "2018/08/29", - "rsa.time.event_time": "2018-08-29T16:59:40.000Z", - "service.type": "sonicwall", - "source.ip": "10.60.142.127", - "source.port": 1081, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-09-13T00:02:15.000Z", - "event.code": "134", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=onu sn=liquaUte time=\"2018/09/12 22:02:15\" fw=10.137.202.243 pri=high c=tempor m=134 PPPoE starting PAP Authentication", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 9898, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "134", - "rsa.time.date": "2018/09/12", - "rsa.time.event_time": "2018-09-13T00:02:15.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-09-27T07:04:49.000Z", - "event.action": "allow", - "event.code": "mveniamq", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=mveniamq sn=taedict time=\"2018-9-27 5:04:49\" fw=10.206.69.135 pri=high c=aturve m=880 msg=\"utfug\" n=aturQu note=\"aaliq\" fw_action=\"allow\"", - "fileset.name": "firewall", - "host.ip": "10.206.69.135", - "input.type": "log", - "log.level": "high", - "log.offset": 10020, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.206.69.135" - ], - "rsa.db.index": "aaliq", - "rsa.internal.event_desc": "utfug", - "rsa.internal.messageid": "880", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.category": "aturve", - "rsa.misc.reference_id": "mveniamq", - "rsa.misc.serial_number": "taedict", - "rsa.misc.severity": "high", - "rsa.time.date": "2018-9-27", - "rsa.time.event_time": "2018-09-27T07:04:49.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-10-11T14:07:23.000Z", - "destination.ip": "10.115.38.80", - "event.code": "441", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=uiinea sn=mnisiut time=\"2018/10/11 12:07:23\" fw=10.208.228.129 pri=low c=olup m=441 msg=\"labor\" n=dol src= 10.240.54.28 dst= 10.115.38.80", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 10161, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.115.38.80", - "10.240.54.28" - ], - "rsa.internal.messageid": "441", - "rsa.internal.msg": "labor", - "rsa.time.date": "2018/10/11", - "rsa.time.event_time": "2018-10-11T14:07:23.000Z", - "service.type": "sonicwall", - "source.ip": "10.240.54.28", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-10-25T21:09:57.000Z", - "event.code": "163", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=mve sn=uia time=\"2018/10/25 19:09:57\" fw=10.92.237.93 pri=high c=nsequunt m=163 Disconnecting PPPoE due to traffic timeout", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 10302, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "163", - "rsa.time.date": "2018/10/25", - "rsa.time.event_time": "2018-10-25T21:09:57.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-11-09T04:12:32.000Z", - "destination.ip": "10.104.49.142", - "event.code": "252", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=doei sn=cipitl time=\"2018/11/09 02:12:32\" fw=10.53.127.17 pri=very-high c=strumex m=252 msg=\"eprehend\" n=asnu src=10.102.166.19 dst=10.104.49.142", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 10428, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.102.166.19", - "10.104.49.142" - ], - "rsa.internal.messageid": "252", - "rsa.internal.msg": "eprehend", - "rsa.time.date": "2018/11/09", - "rsa.time.event_time": "2018-11-09T04:12:32.000Z", - "service.type": "sonicwall", - "source.ip": "10.102.166.19", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-11-23T11:15:06.000Z", - "destination.ip": "10.120.25.169", - "destination.port": 1965, - "event.action": "block", - "event.code": "199", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=repreh sn=plic time=\"2018/11/23 09:15:06\" fw=10.17.87.79 pri=high c=saq m=199 msg=\"block\" n=ritqu src=10.203.77.154:3916:lo4991 dst= 10.120.25.169:1965:lo4527", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 10577, - "observer.egress.interface.name": "lo4527", - "observer.ingress.interface.name": "lo4991", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.120.25.169", - "10.203.77.154" - ], - "rsa.internal.messageid": "199", - "rsa.misc.action": [ - "block" - ], - "rsa.network.dinterface": "lo4527", - "rsa.network.sinterface": "lo4991", - "rsa.time.date": "2018/11/23", - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "service.type": "sonicwall", - "source.ip": "10.203.77.154", - "source.port": 3916, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-12-07T18:17:40.000Z", - "event.code": "88", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "ipsa id=asuntexp sn=adminim time=\"2018/12/07 16:17:40\" fw=10.115.115.26 pri=high c=modoc m=88 IKE Responder: IPSec proposal not acceptable", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 10739, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "88", - "rsa.time.event_time": "2018-12-07T18:17:40.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2018-12-22T01:20:14.000Z", - "event.code": "34", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=iumt sn=tsed time=\"2018/12/21 23:20:14\" fw=10.249.120.78 pri=medium c=atuse m=34 Login screen timed out", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 10878, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "34", - "rsa.time.date": "2018/12/21", - "rsa.time.event_time": "2018-12-22T01:20:14.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "destination.bytes": 1629, - "destination.ip": "10.137.217.159", - "destination.port": 563, - "event.code": "195", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=loremag sn=tcu time=\"2019/01/05 06:22:49\" fw=10.84.251.253 pri=high c=erspi m=195 msg=\"rorsit\" n=tionemu src=10.77.95.12 dst=10.137.217.159 sport=2310 dport=563 rcvd=1629", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 10985, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.137.217.159", - "10.77.95.12" - ], - "rsa.internal.messageid": "195", - "rsa.internal.msg": "rorsit", - "rsa.time.date": "2019/01/05", - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "service.type": "sonicwall", - "source.ip": "10.77.95.12", - "source.port": 2310, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-01-19T15:25:23.000Z", - "event.code": "48", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "elillum id=upt sn=rnat time=\"2019/01/19 13:25:23\" fw=10.1.96.93 pri=high c=edolo m=48 Out-of-order command packet dropped", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 11159, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "48", - "rsa.time.event_time": "2019-01-19T15:25:23.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-02-02T22:27:57.000Z", - "destination.nat.ip": "10.191.242.168", - "destination.nat.port": 5251, - "event.code": "995", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "doeiu id=deF sn=itempo time=\"2019/02/02 20:27:57\" fw=10.200.237.196 pri=medium c=ecillum m=995 msg=\"isci\" n=dolor src=10.165.48.224:5386 dst=10.191.242.168:5251 note=\"equep\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 11281, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.165.48.224", - "10.191.242.168" - ], - "rsa.internal.event_desc": "equep", - "rsa.internal.messageid": "995", - "rsa.internal.msg": "isci", - "rsa.time.event_time": "2019-02-02T22:27:57.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.165.48.224", - "source.nat.port": 5386, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "event.code": "909", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "BCS id=qui sn=ugiatquo time=\"2019/02/17 03:30:32\" fw=10.204.133.116 pri=medium c=autemv m=909 msg=\"emq\" n=plicaboN", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 11455, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "909", - "rsa.internal.msg": "emq", - "rsa.misc.ntype": "plicaboN", - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "destination.nat.ip": "10.116.173.79", - "destination.nat.port": 7693, - "event.code": "178", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=vol sn=admi time=\"2019/03/03 10:33:06\" fw=10.77.229.168 pri=high c=aquiof m=178 msg=\"ende\" n=abor src=10.185.37.32:708 dst=10.116.173.79:7693", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 11570, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.116.173.79", - "10.185.37.32" - ], - "rsa.internal.messageid": "178", - "rsa.internal.msg": "ende", - "rsa.misc.ntype": "abor", - "rsa.time.date": "2019/03/03", - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.185.37.32", - "source.nat.port": 708, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-03-17T19:35:40.000Z", - "destination.nat.ip": "10.57.85.98", - "destination.nat.port": 3286, - "event.code": "995", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=olorem sn=gitse time=\"2019/03/17 17:35:40\" fw=10.245.127.213 pri=very-high c=billoinv m=995 msg=\"sci\" n=col src=10.219.42.212:5708 dst=10.57.85.98:3286 note=\"mquisno\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 11715, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.219.42.212", - "10.57.85.98" - ], - "rsa.internal.event_desc": "mquisno", - "rsa.internal.messageid": "995", - "rsa.internal.msg": "sci", - "rsa.time.date": "2019/03/17", - "rsa.time.event_time": "2019-03-17T19:35:40.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.219.42.212", - "source.nat.port": 5708, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-04-01T02:38:14.000Z", - "destination.ip": "10.88.244.209", - "destination.port": 6953, - "event.code": "97", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=nisiu sn=imad time=\"2019/04/01 00:38:14\" fw=10.30.101.79 pri=high c=tenimad m=97 n=sitametc src= 10.152.35.175:2737:enp0s3423 dst= 10.88.244.209:6953:enp0s2460 proto=ipv6-icmp op=caecat sent=5835 dstname=tquidol", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 11885, - "network.protocol": "ipv6-icmp", - "observer.egress.interface.name": "enp0s2460", - "observer.ingress.interface.name": "enp0s3423", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.152.35.175", - "10.88.244.209" - ], - "rsa.internal.messageid": "97", - "rsa.misc.name": "tquidol", - "rsa.network.dinterface": "enp0s2460", - "rsa.network.sinterface": "enp0s3423", - "rsa.time.date": "2019/04/01", - "rsa.time.event_time": "2019-04-01T02:38:14.000Z", - "service.type": "sonicwall", - "source.bytes": 5835, - "source.ip": "10.152.35.175", - "source.port": 2737, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "destination.address": "ugitsedq5067.internal.test", - "destination.bytes": 1635, - "destination.ip": "10.107.216.138", - "destination.port": 3147, - "event.action": "accept", - "event.code": "537", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "undeom id=emullamc sn=tec time=\"2019/04/15 07:40:49\" fw=10.29.118.7 pri=medium c=mveleum m=537 msg=\"accept\" f=exercita n=sBonorum src= 10.132.171.15 dst= 10.107.216.138:3147:lo5057:ugitsedq5067.internal.test proto=rdp sent=5943 rcvd=1635", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 12100, - "network.protocol": "rdp", - "observer.egress.interface.name": "lo5057", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.hosts": [ - "ugitsedq5067.internal.test" - ], - "related.ip": [ - "10.107.216.138", - "10.132.171.15" - ], - "rsa.internal.messageid": "537", - "rsa.misc.action": [ - "accept" - ], - "rsa.network.dinterface": "lo5057", - "rsa.network.host_dst": "ugitsedq5067.internal.test", - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "service.type": "sonicwall", - "source.bytes": 5943, - "source.ip": "10.132.171.15", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-04-29T16:43:23.000Z", - "event.code": "137", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=gna sn=isiutali time=\"2019/04/29 14:43:23\" fw=10.156.152.182 pri=very-high c=ons m=137 Wan IP Changed", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 12338, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "137", - "rsa.time.date": "2019/04/29", - "rsa.time.event_time": "2019-04-29T16:43:23.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-05-13T23:45:57.000Z", - "destination.ip": "10.195.223.82", - "event.code": "351", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=uaturve sn=amquisno time=\"2019/05/13 21:45:57\" fw=10.123.74.66 pri=very-high c=mquiad m=351 msg=\"CSe\" n=lors src=10.135.70.159 dst=10.195.223.82", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 12443, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.135.70.159", - "10.195.223.82" - ], - "rsa.internal.messageid": "351", - "rsa.internal.msg": "CSe", - "rsa.time.date": "2019/05/13", - "rsa.time.event_time": "2019-05-13T23:45:57.000Z", - "service.type": "sonicwall", - "source.ip": "10.135.70.159", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "destination.ip": "10.142.120.198", - "event.code": "261", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=atu sn=iusm time=\"2019/05/28 04:48:31\" fw=10.20.81.176 pri=low c=stquido m=261 msg=\"rsitvolu\" n=mnisi usr=usmo src=10.22.244.71:1865:eth3249 dst= 10.142.120.198", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 12591, - "observer.ingress.interface.name": "eth3249", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.142.120.198", - "10.22.244.71" - ], - "related.user": [ - "usmo" - ], - "rsa.internal.messageid": "261", - "rsa.internal.msg": "rsitvolu", - "rsa.network.sinterface": "eth3249", - "rsa.time.date": "2019/05/28", - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "service.type": "sonicwall", - "source.ip": "10.22.244.71", - "source.port": 1865, - "tags": [ - "forwarded", - "sonicwall.firewall" - ], - "user.name": "usmo" - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "event.code": "125", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=oin sn=itseddoe time=\"2019/06/11 11:51:06\" fw=10.141.143.56 pri=low c=erc m=125 Unused AV log entry.", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 12755, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "125", - "rsa.time.date": "2019/06/11", - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-06-25T20:53:40.000Z", - "event.code": "105", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=giatquov sn=olu time=\"2019/06/25 18:53:40\" fw=10.137.103.62 pri=medium c=serror m=105 Sending DHCP DISCOVER.", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 12859, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "105", - "rsa.time.date": "2019/06/25", - "rsa.time.event_time": "2019-06-25T20:53:40.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "event.code": "34", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "emagn id=emulla sn=mips time=\"2019/07/10 01:56:14\" fw=10.201.146.83 pri=very-high c=atnula m=34 Login screen timed out", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 12971, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "34", - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "event.code": "144", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=itametc sn=ori time=\"2019/07/24 08:58:48\" fw=10.202.74.93 pri=low c=ido m=144 Primary firewall has transitioned to Idle", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 13090, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "144", - "rsa.time.date": "2019/07/24", - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-08-07T18:01:23.000Z", - "destination.nat.ip": "10.12.54.142", - "destination.nat.port": 6543, - "event.code": "658", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=doconse sn=etdol time=\"2019/08/07 16:01:23\" fw=10.156.88.51 pri=high c=tura m=658 msg=\"osquirat\" n=equat src=10.56.10.84:5366 dst=10.12.54.142:6543", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 13213, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.12.54.142", - "10.56.10.84" - ], - "rsa.internal.messageid": "658", - "rsa.internal.msg": "osquirat", - "rsa.misc.ntype": "equat", - "rsa.time.date": "2019/08/07", - "rsa.time.event_time": "2019-08-07T18:01:23.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.56.10.84", - "source.nat.port": 5366, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-08-22T01:03:57.000Z", - "destination.bytes": 7416, - "destination.ip": "10.117.63.181", - "destination.port": 6863, - "event.code": "195", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=min sn=oluptat time=\"2019/08/21 23:03:57\" fw=10.162.129.196 pri=medium c=snisi m=195 msg=\"magnaal\" n=uscip src=10.222.169.140 dst=10.117.63.181 sport=5299 dport=6863 rcvd=7416", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 13364, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.117.63.181", - "10.222.169.140" - ], - "rsa.internal.messageid": "195", - "rsa.internal.msg": "magnaal", - "rsa.time.date": "2019/08/21", - "rsa.time.event_time": "2019-08-22T01:03:57.000Z", - "service.type": "sonicwall", - "source.ip": "10.222.169.140", - "source.port": 5299, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "event.code": "867", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=eacommo sn=ueip time=\"2019/09/05 06:06:31\" fw=10.243.252.157 pri=low c=minim m=867 msg=\"scipi\" sess=tur n=acon", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 13543, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "867", - "rsa.internal.msg": "scipi", - "rsa.misc.ntype": "acon", - "rsa.time.date": "2019/09/05", - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-09-19T15:09:05.000Z", - "event.code": "60", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "usm id=labori sn=porai time=\"2019/09/19 13:09:05\" fw=10.73.176.98 pri=high c=ostr m=60 Access to Proxy Server Blocked", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 13657, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "60", - "rsa.time.event_time": "2019-09-19T15:09:05.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-10-03T10:11:40.000Z", - "destination.ip": "10.200.122.184", - "destination.port": 1176, - "event.action": "allow", - "event.code": "794", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=lup sn=upta time=\"2019-10-3 8:11:40\" fw=10.247.88.138 pri=very-high c=orissu m=794 msg=\"fic\" sid=sBon spycat=usmod spypri=umdol pktdatId=rumexerc n=isiutali src=10.57.255.4:239:lo1325 dst=10.200.122.184:1176:eth5397 proto=rdp/amvo fw_action=\"allow\"", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 13775, - "network.protocol": "rdp", - "observer.egress.interface.name": "eth5397", - "observer.ingress.interface.name": "lo1325", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.200.122.184", - "10.57.255.4" - ], - "rsa.identity.user_sid_dst": "sBon", - "rsa.internal.event_desc": "fic", - "rsa.internal.messageid": "794", - "rsa.misc.action": [ - "allow" - ], - "rsa.network.dinterface": "eth5397", - "rsa.network.sinterface": "lo1325", - "rsa.time.date": "2019-10-3", - "rsa.time.event_time": "2019-10-03T10:11:40.000Z", - "service.type": "sonicwall", - "source.ip": "10.57.255.4", - "source.port": 239, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "event.code": "19", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=mmod sn=iti time=\"2019/10/18 03:14:14\" fw=10.55.81.14 pri=medium c=asp m=19 Java blocked", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 14027, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "19", - "rsa.time.date": "2019/10/18", - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "destination.nat.ip": "10.129.101.147", - "destination.nat.port": 3606, - "event.code": "413", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=mag sn=gelitse time=\"2019/11/01 10:16:48\" fw=10.195.58.44 pri=high c=radip m=413 msg=\"upta\" n=tetura src=10.206.229.61:3467 dst=10.129.101.147:3606", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 14119, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.129.101.147", - "10.206.229.61" - ], - "rsa.internal.messageid": "413", - "rsa.internal.msg": "upta", - "rsa.time.date": "2019/11/01", - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "service.type": "sonicwall", - "source.nat.ip": "10.206.229.61", - "source.nat.port": 3467, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-11-15T19:19:22.000Z", - "event.code": "159", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=nostrud sn=cteturad time=\"2019/11/15 17:19:22\" fw=10.150.163.151 pri=high c=veniam m=159 Diagnostic Code F", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 14270, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "159", - "rsa.time.date": "2019/11/15", - "rsa.time.event_time": "2019-11-15T19:19:22.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-11-30T02:21:57.000Z", - "destination.ip": "10.119.4.120", - "destination.port": 3822, - "event.code": "520", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "id=imavenia sn=expli time=\"2019/11/30 00:21:57\" fw=10.144.57.239 pri=medium c=rur m=520 msg=\"itse\" n=ilm src=10.167.9.200:4003:lo5561 dst= 10.119.4.120:3822:enp0s234", - "fileset.name": "firewall", - "input.type": "log", - "log.offset": 14380, - "observer.egress.interface.name": "enp0s234", - "observer.ingress.interface.name": "lo5561", - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "related.ip": [ - "10.119.4.120", - "10.167.9.200" - ], - "rsa.internal.messageid": "520", - "rsa.internal.msg": "itse", - "rsa.network.dinterface": "enp0s234", - "rsa.network.sinterface": "lo5561", - "rsa.time.date": "2019/11/30", - "rsa.time.event_time": "2019-11-30T02:21:57.000Z", - "service.type": "sonicwall", - "source.ip": "10.167.9.200", - "source.port": 4003, - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - }, - { - "@timestamp": "2019-12-14T09:24:31.000Z", - "event.code": "1079", - "event.dataset": "sonicwall.firewall", - "event.module": "sonicwall", - "event.original": "oluptate id=lit sn=santi time=\"2019/12/14 07:24:31\" fw=10.211.112.194 pri=low c=uis m=1079 msg=\"Clientamcis assigned IP:10.221.220.148\" n=apar", - "fileset.name": "firewall", - "input.type": "log", - "log.flags": [ - "dissect_parsing_error" - ], - "log.offset": 14546, - "observer.product": "Firewalls", - "observer.type": "Firewall", - "observer.vendor": "Sonicwall", - "rsa.internal.messageid": "1079", - "rsa.time.event_time": "2019-12-14T09:24:31.000Z", - "service.type": "sonicwall", - "tags": [ - "forwarded", - "sonicwall.firewall" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/sophos/_meta/config.yml b/x-pack/filebeat/module/sophos/_meta/config.yml index 4b07d941401..424c36d95a7 100644 --- a/x-pack/filebeat/module/sophos/_meta/config.yml +++ b/x-pack/filebeat/module/sophos/_meta/config.yml @@ -22,22 +22,3 @@ #- serial_number: "1234234590678557" # hostname: "b.host.local" - - utm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9533 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/sophos/_meta/docs.asciidoc b/x-pack/filebeat/module/sophos/_meta/docs.asciidoc index f998d7ce62c..9f57ecd00cf 100644 --- a/x-pack/filebeat/module/sophos/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/sophos/_meta/docs.asciidoc @@ -11,7 +11,6 @@ This is a module for Sophos Products, currently it accepts logs in syslog format or from a file for the following devices: - `xg` fileset: supports Sophos XG SFOS logs. -- `utm` fileset: supports Sophos UTM logs. To configure a remote syslog destination, please reference the https://docs.sophos.com/nsg/sophos-firewall/18.5/Help/en-us/webhelp/onlinehelp/nsg/tasks/SyslogServerAdd.html[SophosXG/SFOS Documentation]. @@ -142,51 +141,4 @@ This is a list of SophosXG fields that are mapped to ECS. :fileset_ex!: -[float] -==== `utm` fileset settings - -deprecated::[8.12.0,"This fileset is deprecated. Use the https://docs.elastic.co/integrations/sophos[Sophos] Elastic integration instead."] - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "astarosg" device revision 123. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9533` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - :modulename!: diff --git a/x-pack/filebeat/module/sophos/fields.go b/x-pack/filebeat/module/sophos/fields.go index 8737fd17ab6..90780f56ff6 100644 --- a/x-pack/filebeat/module/sophos/fields.go +++ b/x-pack/filebeat/module/sophos/fields.go @@ -19,5 +19,5 @@ func init() { // AssetSophos returns asset data. // This is the base64 encoded zlib format compressed contents of module/sophos. func AssetSophos() string { - return "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" + return "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" } diff --git a/x-pack/filebeat/module/sophos/utm/_meta/fields.yml b/x-pack/filebeat/module/sophos/utm/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/sophos/utm/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/sophos/utm/config/input.yml b/x-pack/filebeat/module/sophos/utm/config/input.yml deleted file mode 100644 index 75119fa4920..00000000000 --- a/x-pack/filebeat/module/sophos/utm/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Sophos" - product: "UTM" - type: "Firewall" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/sophos/utm/config/liblogparser.js - - ${path.home}/module/sophos/utm/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/sophos/utm/config/liblogparser.js b/x-pack/filebeat/module/sophos/utm/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/sophos/utm/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{hostname->} %{messageid}[%{process_id}]: %{payload}", processor_chain([ - setc("header_id","0001"), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{hfld1->} %{messageid}[%{process_id}]: %{payload}", processor_chain([ - setc("header_id","0002"), -])); - -var hdr3 = match("HEADER#2:0003", "message", "%{hfld1->} %{hostname->} reverseproxy: %{payload}", processor_chain([ - setc("header_id","0003"), - setc("messageid","reverseproxy"), -])); - -var hdr4 = match("HEADER#3:0005", "message", "%{hfld1->} %{hostname->} %{messageid}: %{payload}", processor_chain([ - setc("header_id","0005"), -])); - -var hdr5 = match("HEADER#4:0004", "message", "%{hfld1->} %{id}[%{process_id}]: %{payload}", processor_chain([ - setc("header_id","0004"), - setc("messageid","astarosg_TVM"), -])); - -var hdr6 = match("HEADER#5:0006", "message", "device=\"%{product}\" date=%{hdate->} time=%{htime->} timezone=\"%{timezone}\" device_name=\"%{device}\" device_id=%{hardware_id->} log_id=%{id->} %{payload}", processor_chain([ - setc("header_id","0006"), - setc("messageid","Sophos_Firewall"), -])); - -var select1 = linear_select([ - hdr1, - hdr2, - hdr3, - hdr4, - hdr5, - hdr6, -]); - -var part1 = match("MESSAGE#0:named:01", "nwparser.payload", "received control channel command '%{action}'", processor_chain([ - dup1, - dup2, - dup3, -])); - -var msg1 = msg("named:01", part1); - -var part2 = match("MESSAGE#1:named:02", "nwparser.payload", "flushing caches in all views %{disposition}", processor_chain([ - dup1, - dup2, - dup3, -])); - -var msg2 = msg("named:02", part2); - -var part3 = match("MESSAGE#2:named:03", "nwparser.payload", "error (%{result}) resolving '%{dhost}': %{daddr}#%{dport}", processor_chain([ - dup4, - dup2, - dup3, -])); - -var msg3 = msg("named:03", part3); - -var part4 = match("MESSAGE#3:named:04", "nwparser.payload", "received %{action->} signal to %{fld3}", processor_chain([ - dup5, - dup2, - dup3, -])); - -var msg4 = msg("named:04", part4); - -var part5 = match("MESSAGE#4:named:05", "nwparser.payload", "loading configuration from '%{filename}'", processor_chain([ - dup6, - dup2, - dup3, -])); - -var msg5 = msg("named:05", part5); - -var part6 = match("MESSAGE#5:named:06", "nwparser.payload", "no %{protocol->} interfaces found", processor_chain([ - setc("eventcategory","1804000000"), - dup2, - dup3, -])); - -var msg6 = msg("named:06", part6); - -var part7 = match("MESSAGE#6:named:07", "nwparser.payload", "sizing zone task pool based on %{fld3->} zones", processor_chain([ - dup7, - dup2, - dup3, -])); - -var msg7 = msg("named:07", part7); - -var part8 = match("MESSAGE#7:named:08", "nwparser.payload", "automatic empty zone: view %{fld3}: %{dns_ptr_record}", processor_chain([ - dup8, - dup2, - dup3, -])); - -var msg8 = msg("named:08", part8); - -var part9 = match("MESSAGE#8:named:09", "nwparser.payload", "reloading %{obj_type->} %{disposition}", processor_chain([ - dup7, - dup2, - dup3, - setc("action","reloading"), -])); - -var msg9 = msg("named:09", part9); - -var part10 = match("MESSAGE#9:named:10", "nwparser.payload", "zone %{dhost}/%{fld3}: loaded serial %{operation_id}", processor_chain([ - dup7, - dup9, - dup2, - dup3, -])); - -var msg10 = msg("named:10", part10); - -var part11 = match("MESSAGE#10:named:11", "nwparser.payload", "all zones loaded%{}", processor_chain([ - dup7, - dup9, - dup2, - dup3, - setc("action","all zones loaded"), -])); - -var msg11 = msg("named:11", part11); - -var part12 = match("MESSAGE#11:named:12", "nwparser.payload", "running%{}", processor_chain([ - dup7, - setc("disposition","running"), - dup2, - dup3, - setc("action","running"), -])); - -var msg12 = msg("named:12", part12); - -var part13 = match("MESSAGE#12:named:13", "nwparser.payload", "using built-in root key for view %{fld3}", processor_chain([ - dup7, - setc("context","built-in root key"), - dup2, - dup3, -])); - -var msg13 = msg("named:13", part13); - -var part14 = match("MESSAGE#13:named:14", "nwparser.payload", "zone %{dns_ptr_record}/%{fld3}: (%{username}) %{action}", processor_chain([ - dup8, - dup2, - dup3, -])); - -var msg14 = msg("named:14", part14); - -var part15 = match("MESSAGE#14:named:15", "nwparser.payload", "too many timeouts resolving '%{fld3}' (%{fld4}): disabling EDNS", processor_chain([ - dup10, - setc("event_description","named:too many timeouts resolving DNS."), - dup11, - dup2, -])); - -var msg15 = msg("named:15", part15); - -var part16 = match("MESSAGE#15:named:16", "nwparser.payload", "FORMERR resolving '%{hostname}': %{saddr}#%{fld3}", processor_chain([ - dup10, - setc("event_description","named:FORMERR resolving DNS."), - dup11, - dup2, -])); - -var msg16 = msg("named:16", part16); - -var part17 = match("MESSAGE#16:named:17", "nwparser.payload", "unexpected RCODE (SERVFAIL) resolving '%{hostname}': %{saddr}#%{fld3}", processor_chain([ - dup10, - setc("event_description","named:unexpected RCODE (SERVFAIL) resolving DNS."), - dup11, - dup2, -])); - -var msg17 = msg("named:17", part17); - -var select2 = linear_select([ - msg1, - msg2, - msg3, - msg4, - msg5, - msg6, - msg7, - msg8, - msg9, - msg10, - msg11, - msg12, - msg13, - msg14, - msg15, - msg16, - msg17, -]); - -var part18 = match("MESSAGE#17:httpproxy:09", "nwparser.payload", "Integrated HTTP-Proxy %{version}", processor_chain([ - dup12, - setc("event_description","httpproxy:Integrated HTTP-Proxy."), - dup11, - dup2, -])); - -var msg18 = msg("httpproxy:09", part18); - -var part19 = match("MESSAGE#18:httpproxy:10", "nwparser.payload", "[%{fld2}] parse_address (%{fld3}) getaddrinfo: passthrough.fw-notify.net: Name or service not known", processor_chain([ - dup10, - setc("event_description","httpproxy:Name or service not known."), - dup11, - dup2, -])); - -var msg19 = msg("httpproxy:10", part19); - -var part20 = match("MESSAGE#19:httpproxy:11", "nwparser.payload", "[%{fld2}] confd_config_filter (%{fld3}) failed to resolve passthrough.fw-notify.net, using %{saddr}", processor_chain([ - dup10, - setc("event_description","httpproxy:failed to resolve passthrough."), - dup11, - dup2, -])); - -var msg20 = msg("httpproxy:11", part20); - -var part21 = match("MESSAGE#20:httpproxy:12", "nwparser.payload", "[%{fld2}] ssl_log_errors (%{fld3}) %{fld4}ssl handshake failure%{fld5}", processor_chain([ - dup10, - setc("event_description","httpproxy:ssl handshake failure."), - dup11, - dup2, -])); - -var msg21 = msg("httpproxy:12", part21); - -var part22 = match("MESSAGE#21:httpproxy:13", "nwparser.payload", "[%{fld2}] sc_decrypt (%{fld3}) EVP_DecryptFinal failed", processor_chain([ - dup10, - setc("event_description","httpproxy:EVP_DecryptFinal failed."), - dup11, - dup2, -])); - -var msg22 = msg("httpproxy:13", part22); - -var part23 = match("MESSAGE#22:httpproxy:14", "nwparser.payload", "[%{fld2}] sc_server_cmd (%{fld3}) decrypt failed", processor_chain([ - dup10, - setc("event_description","httpproxy:decrypt failed."), - dup11, - dup2, -])); - -var msg23 = msg("httpproxy:14", part23); - -var part24 = match("MESSAGE#23:httpproxy:15", "nwparser.payload", "[%{fld2}] clamav_reload (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:reloading av pattern"), - dup11, - dup2, -])); - -var msg24 = msg("httpproxy:15", part24); - -var part25 = match("MESSAGE#24:httpproxy:16", "nwparser.payload", "[%{fld2}] sc_check_servers (%{fld3}) server '%{hostname}' access time: %{fld4}", processor_chain([ - dup12, - setc("event_description","httpproxy:sc_check_servers.Server checked."), - dup11, - dup2, -])); - -var msg25 = msg("httpproxy:16", part25); - -var part26 = match("MESSAGE#25:httpproxy:17", "nwparser.payload", "[%{fld2}] main (%{fld3}) shutdown finished, exiting", processor_chain([ - dup12, - setc("event_description","httpproxy:shutdown finished, exiting."), - dup11, - dup2, -])); - -var msg26 = msg("httpproxy:17", part26); - -var part27 = match("MESSAGE#26:httpproxy:18", "nwparser.payload", "[%{fld2}] main (%{fld3}) reading configuration", processor_chain([ - dup12, - setc("event_description","httpproxy:"), - dup11, - dup2, -])); - -var msg27 = msg("httpproxy:18", part27); - -var part28 = match("MESSAGE#27:httpproxy:19", "nwparser.payload", "[%{fld2}] main (%{fld3}) reading profiles", processor_chain([ - dup12, - setc("event_description","httpproxy:reading profiles"), - dup11, - dup2, -])); - -var msg28 = msg("httpproxy:19", part28); - -var part29 = match("MESSAGE#28:httpproxy:20", "nwparser.payload", "[%{fld2}] main (%{fld3}) finished startup", processor_chain([ - dup12, - setc("event_description","httpproxy:finished startup"), - dup11, - dup2, -])); - -var msg29 = msg("httpproxy:20", part29); - -var part30 = match("MESSAGE#29:httpproxy:21", "nwparser.payload", "[%{fld2}] read_request_headers (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:read_request_headers related message."), - dup11, - dup2, -])); - -var msg30 = msg("httpproxy:21", part30); - -var part31 = match("MESSAGE#30:httpproxy:22", "nwparser.payload", "[%{fld2}] epoll_loop (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:epoll_loop related message."), - dup11, - dup2, -])); - -var msg31 = msg("httpproxy:22", part31); - -var part32 = match("MESSAGE#31:httpproxy:23", "nwparser.payload", "[%{fld2}] scan_exit (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:scan_exit related message."), - dup11, - dup2, -])); - -var msg32 = msg("httpproxy:23", part32); - -var part33 = match("MESSAGE#32:httpproxy:24", "nwparser.payload", "[%{fld2}] epoll_exit (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:epoll_exit related message."), - dup11, - dup2, -])); - -var msg33 = msg("httpproxy:24", part33); - -var part34 = match("MESSAGE#33:httpproxy:25", "nwparser.payload", "[%{fld2}] disk_cache_exit (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:disk_cache_exit related message."), - dup11, - dup2, -])); - -var msg34 = msg("httpproxy:25", part34); - -var part35 = match("MESSAGE#34:httpproxy:26", "nwparser.payload", "[%{fld2}] disk_cache_zap (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:disk_cache_zap related message."), - dup11, - dup2, -])); - -var msg35 = msg("httpproxy:26", part35); - -var part36 = match("MESSAGE#35:httpproxy:27", "nwparser.payload", "[%{fld2}] scanner_init (%{fld3}) %{info}", processor_chain([ - dup12, - setc("event_description","httpproxy:scanner_init related message."), - dup11, - dup2, -])); - -var msg36 = msg("httpproxy:27", part36); - -var part37 = tagval("MESSAGE#36:httpproxy:01", "nwparser.payload", tvm, { - "action": "action", - "ad_domain": "fld1", - "app-id": "fld18", - "application": "fld17", - "auth": "fld10", - "authtime": "fld4", - "avscantime": "fld7", - "cached": "fld2", - "category": "policy_id", - "categoryname": "info", - "cattime": "fld6", - "content-type": "content_type", - "device": "fld9", - "dnstime": "fld5", - "dstip": "daddr", - "error": "result", - "exceptions": "fld12", - "extension": "fld13", - "file": "filename", - "filename": "filename", - "filteraction": "fld3", - "fullreqtime": "fld8", - "function": "action", - "group": "group", - "id": "rule", - "line": "fld14", - "message": "context", - "method": "web_method", - "name": "event_description", - "profile": "policyname", - "reason": "rule_group", - "referer": "web_referer", - "reputation": "fld16", - "request": "connectionid", - "severity": "severity", - "size": "rbytes", - "srcip": "saddr", - "statuscode": "resultcode", - "sub": "network_service", - "sys": "vsys", - "time": "fld15", - "ua": "fld11", - "url": "url", - "user": "username", -}, processor_chain([ - dup13, - dup11, - dup2, - dup45, - dup46, -])); - -var msg37 = msg("httpproxy:01", part37); - -var select3 = linear_select([ - msg18, - msg19, - msg20, - msg21, - msg22, - msg23, - msg24, - msg25, - msg26, - msg27, - msg28, - msg29, - msg30, - msg31, - msg32, - msg33, - msg34, - msg35, - msg36, - msg37, -]); - -var part38 = match("MESSAGE#37:URID:01", "nwparser.payload", "T=%{fld3->} ------ 1 - [exit] %{action}: %{disposition}", processor_chain([ - dup16, - dup2, - dup3, -])); - -var msg38 = msg("URID:01", part38); - -var part39 = tagval("MESSAGE#38:ulogd:01", "nwparser.payload", tvm, { - "action": "action", - "code": "fld30", - "dstip": "daddr", - "dstmac": "dmacaddr", - "dstport": "dport", - "fwrule": "policy_id", - "id": "rule", - "info": "context", - "initf": "sinterface", - "length": "fld25", - "name": "event_description", - "outitf": "dinterface", - "prec": "fld27", - "proto": "fld24", - "seq": "fld23", - "severity": "severity", - "srcip": "saddr", - "srcmac": "smacaddr", - "srcport": "sport", - "sub": "network_service", - "sys": "vsys", - "tcpflags": "fld29", - "tos": "fld26", - "ttl": "fld28", - "type": "fld31", -}, processor_chain([ - dup13, - setc("ec_subject","NetworkComm"), - setc("ec_activity","Scan"), - setc("ec_theme","TEV"), - dup11, - dup2, - dup45, - dup46, -])); - -var msg39 = msg("ulogd:01", part39); - -var part40 = match("MESSAGE#39:reverseproxy:01", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] ModSecurity for Apache/%{fld5->} (%{fld6}) configured.", processor_chain([ - dup6, - setc("disposition","configured"), - dup2, - dup3, -])); - -var msg40 = msg("reverseproxy:01", part40); - -var part41 = match("MESSAGE#40:reverseproxy:02", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] ModSecurity: %{fld5->} compiled version=\"%{fld6}\"; loaded version=\"%{fld7}\"", processor_chain([ - dup17, - dup2, - dup3, -])); - -var msg41 = msg("reverseproxy:02", part41); - -var part42 = match("MESSAGE#41:reverseproxy:03", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] ModSecurity: %{fld5->} compiled version=\"%{fld6}\"", processor_chain([ - dup17, - dup2, - dup3, -])); - -var msg42 = msg("reverseproxy:03", part42); - -var part43 = match("MESSAGE#42:reverseproxy:04", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] %{fld5->} configured -- %{disposition->} normal operations", processor_chain([ - dup17, - setc("event_id","AH00292"), - dup2, - dup3, -])); - -var msg43 = msg("reverseproxy:04", part43); - -var part44 = match("MESSAGE#43:reverseproxy:06", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [%{fld5}] Hostname in %{network_service->} request (%{fld6}) does not match the server name (%{ddomain})", processor_chain([ - setc("eventcategory","1805010000"), - dup18, - dup2, - dup3, -])); - -var msg44 = msg("reverseproxy:06", part44); - -var part45 = match("MESSAGE#44:reverseproxy:07/0", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH00297: %{action->} received. Doing%{p0}"); - -var select4 = linear_select([ - dup19, -]); - -var part46 = match("MESSAGE#44:reverseproxy:07/2", "nwparser.p0", "%{}graceful %{disposition}"); - -var all1 = all_match({ - processors: [ - part45, - select4, - part46, - ], - on_success: processor_chain([ - dup5, - setc("event_id","AH00297"), - dup2, - dup3, - ]), -}); - -var msg45 = msg("reverseproxy:07", all1); - -var part47 = match("MESSAGE#45:reverseproxy:08", "nwparser.payload", "AH00112: Warning: DocumentRoot [%{web_root}] does not exist", processor_chain([ - dup4, - setc("event_id","AH00112"), - dup2, - dup3, -])); - -var msg46 = msg("reverseproxy:08", part47); - -var part48 = match("MESSAGE#46:reverseproxy:09", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH00094: Command line: '%{web_root}'", processor_chain([ - setc("eventcategory","1605010000"), - setc("event_id","AH00094"), - dup2, - dup3, -])); - -var msg47 = msg("reverseproxy:09", part48); - -var part49 = match("MESSAGE#47:reverseproxy:10", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH00291: long lost child came home! (pid %{fld5})", processor_chain([ - dup12, - setc("event_id","AH00291"), - dup2, - dup3, -])); - -var msg48 = msg("reverseproxy:10", part49); - -var part50 = match("MESSAGE#48:reverseproxy:11", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH02572: Failed to configure at least one certificate and key for %{fld5}:%{fld6}", processor_chain([ - dup20, - setc("event_id","AH02572"), - dup2, - dup3, -])); - -var msg49 = msg("reverseproxy:11", part50); - -var part51 = match("MESSAGE#49:reverseproxy:12", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] SSL Library Error: error:%{resultcode}:%{result}", processor_chain([ - dup20, - setc("context","SSL Library Error"), - dup2, - dup3, -])); - -var msg50 = msg("reverseproxy:12", part51); - -var part52 = match("MESSAGE#50:reverseproxy:13", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH02312: Fatal error initialising mod_ssl, %{disposition}.", processor_chain([ - dup20, - setc("result","Fatal error"), - setc("event_id","AH02312"), - dup2, - dup3, -])); - -var msg51 = msg("reverseproxy:13", part52); - -var part53 = match("MESSAGE#51:reverseproxy:14", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH00020: Configuration Failed, %{disposition}", processor_chain([ - dup20, - setc("result","Configuration Failed"), - setc("event_id","AH00020"), - dup2, - dup3, -])); - -var msg52 = msg("reverseproxy:14", part53); - -var part54 = match("MESSAGE#52:reverseproxy:15", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH00098: pid file %{filename->} overwritten -- Unclean shutdown of previous Apache run?", processor_chain([ - setc("eventcategory","1609000000"), - setc("context","Unclean shutdown"), - setc("event_id","AH00098"), - dup2, - dup3, -])); - -var msg53 = msg("reverseproxy:15", part54); - -var part55 = match("MESSAGE#53:reverseproxy:16", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH00295: caught %{action}, %{disposition}", processor_chain([ - dup16, - setc("event_id","AH00295"), - dup2, - dup3, -])); - -var msg54 = msg("reverseproxy:16", part55); - -var part56 = match("MESSAGE#54:reverseproxy:17/0", "nwparser.payload", "[%{fld3}] [%{event_log}:%{result}] [pid %{process_id}:%{fld4}] [client %{gateway}] ModSecurity: Warning. %{rulename->} [file \"%{filename}\"] [line \"%{fld5}\"] [id \"%{rule}\"]%{p0}"); - -var part57 = match("MESSAGE#54:reverseproxy:17/1_0", "nwparser.p0", " [rev \"%{fld6}\"]%{p0}"); - -var select5 = linear_select([ - part57, - dup19, -]); - -var part58 = match("MESSAGE#54:reverseproxy:17/2", "nwparser.p0", "%{}[msg \"%{comments}\"] [data \"%{daddr}\"] [severity \"%{severity}\"] [ver \"%{policyname}\"] [maturity \"%{fld7}\"] [accuracy \"%{fld8}\"] %{context->} [hostname \"%{dhost}\"] [uri \"%{web_root}\"] [unique_id \"%{operation_id}\"]"); - -var all2 = all_match({ - processors: [ - part56, - select5, - part58, - ], - on_success: processor_chain([ - dup21, - dup2, - dup3, - ]), -}); - -var msg55 = msg("reverseproxy:17", all2); - -var part59 = match("MESSAGE#55:reverseproxy:18", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] No signature found, cookie: %{fld5}", processor_chain([ - dup4, - dup22, - dup2, - dup3, -])); - -var msg56 = msg("reverseproxy:18", part59); - -var part60 = match("MESSAGE#56:reverseproxy:19", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] %{disposition->} '%{fld5}' from request due to missing/invalid signature", processor_chain([ - dup23, - dup22, - dup2, - dup3, -])); - -var msg57 = msg("reverseproxy:19", part60); - -var part61 = match("MESSAGE#57:reverseproxy:20", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] ModSecurity: Warning. %{rulename->} [file \"%{filename}\"] [line \"%{fld5}\"] [id \"%{rule}\"] [msg \"%{comments}\"] [hostname \"%{dhost}\"] [uri \"%{web_root}\"] [unique_id \"%{operation_id}\"]", processor_chain([ - dup21, - dup2, - dup3, -])); - -var msg58 = msg("reverseproxy:20", part61); - -var part62 = match("MESSAGE#58:reverseproxy:21", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH01909: %{daddr}:%{dport}:%{fld5->} server certificate does NOT include an ID which matches the server name", processor_chain([ - dup20, - dup18, - setc("event_id","AH01909"), - dup2, - dup3, -])); - -var msg59 = msg("reverseproxy:21", part62); - -var part63 = match("MESSAGE#59:reverseproxy:22", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH01915: Init: (%{daddr}:%{dport}) You configured %{network_service}(%{fld5}) on the %{fld6}(%{fld7}) port!", processor_chain([ - dup20, - setc("comments","Invalid port configuration"), - dup2, - dup3, -])); - -var msg60 = msg("reverseproxy:22", part63); - -var part64 = match("MESSAGE#60:reverseproxy:23", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] ModSecurity: Rule %{rulename->} [id \"%{rule}\"][file \"%{filename}\"][line \"%{fld5}\"] - Execution error - PCRE limits exceeded (%{fld6}): (%{fld7}). [hostname \"%{dhost}\"] [uri \"%{web_root}\"] [unique_id \"%{operation_id}\"]", processor_chain([ - dup21, - dup2, - dup3, -])); - -var msg61 = msg("reverseproxy:23", part64); - -var part65 = match("MESSAGE#61:reverseproxy:24", "nwparser.payload", "rManage\\\\x22,\\\\x22manageLiveSystemSettings\\\\x22,\\\\x22accessViewJobs\\\\x22,\\\\x22exportList\\\\...\"] [ver \"%{policyname}\"] [maturity \"%{fld3}\"] [accuracy \"%{fld4}\"] %{context->} [hostname \"%{dhost}\"] [uri \"%{web_root}\"] [unique_id \"%{operation_id}\"]", processor_chain([ - dup21, - dup2, - dup3, -])); - -var msg62 = msg("reverseproxy:24", part65); - -var part66 = match("MESSAGE#62:reverseproxy:25", "nwparser.payload", "ARGS:userPermissions: [\\\\x22dashletAccessAlertingRecentAlertsPanel\\\\x22,\\\\x22dashletAccessAlerterTopAlertsDashlet\\\\x22,\\\\x22accessViewRules\\\\x22,\\\\x22deployLiveResources\\\\x22,\\\\x22vi...\"] [severity [hostname \"%{dhost}\"] [uri \"%{web_root}\"] [unique_id \"%{operation_id}\"]", processor_chain([ - dup21, - dup2, - dup3, -])); - -var msg63 = msg("reverseproxy:25", part66); - -var part67 = match("MESSAGE#63:reverseproxy:26/0", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] ModSecurity: %{disposition->} with code %{resultcode->} (%{fld5}). %{rulename->} [file \"%{filename}\"] [line \"%{fld6}\"] [id \"%{rule}\"]%{p0}"); - -var part68 = match("MESSAGE#63:reverseproxy:26/1_0", "nwparser.p0", " [rev \"%{fld7}\"]%{p0}"); - -var select6 = linear_select([ - part68, - dup19, -]); - -var part69 = match("MESSAGE#63:reverseproxy:26/2", "nwparser.p0", "%{}[msg \"%{comments}\"] [data \"Last Matched Data: %{p0}"); - -var part70 = match("MESSAGE#63:reverseproxy:26/3_0", "nwparser.p0", "%{daddr}:%{dport}\"] [hostname \"%{p0}"); - -var part71 = match("MESSAGE#63:reverseproxy:26/3_1", "nwparser.p0", "%{daddr}\"] [hostname \"%{p0}"); - -var select7 = linear_select([ - part70, - part71, -]); - -var part72 = match("MESSAGE#63:reverseproxy:26/4", "nwparser.p0", "%{dhost}\"] [uri \"%{web_root}\"] [unique_id \"%{operation_id}\"]"); - -var all3 = all_match({ - processors: [ - part67, - select6, - part69, - select7, - part72, - ], - on_success: processor_chain([ - dup24, - dup2, - dup3, - ]), -}); - -var msg64 = msg("reverseproxy:26", all3); - -var part73 = match("MESSAGE#64:reverseproxy:27", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] %{disposition->} while reading reply from cssd, referer: %{web_referer}", processor_chain([ - dup25, - dup2, - dup3, -])); - -var msg65 = msg("reverseproxy:27", part73); - -var part74 = match("MESSAGE#65:reverseproxy:28", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] virus daemon error found in request %{web_root}, referer: %{web_referer}", processor_chain([ - dup26, - setc("result","virus daemon error"), - dup2, - dup3, -])); - -var msg66 = msg("reverseproxy:28", part74); - -var part75 = match("MESSAGE#66:reverseproxy:29", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] mod_avscan_input_filter: virus found, referer: %{web_referer}", processor_chain([ - dup27, - setc("result","virus found"), - dup2, - dup3, -])); - -var msg67 = msg("reverseproxy:29", part75); - -var part76 = match("MESSAGE#67:reverseproxy:30", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] (13)%{result}: [client %{gateway}] AH01095: prefetch request body failed to %{saddr}:%{sport->} (%{fld5}) from %{fld6->} (), referer: %{web_referer}", processor_chain([ - dup24, - dup28, - dup2, - dup3, -])); - -var msg68 = msg("reverseproxy:30", part76); - -var part77 = match("MESSAGE#68:reverseproxy:31", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] cannot read reply: Operation now in progress (115), referer: %{web_referer}", processor_chain([ - dup25, - setc("result","Cannot read reply"), - dup2, - dup3, -])); - -var msg69 = msg("reverseproxy:31", part77); - -var part78 = match("MESSAGE#69:reverseproxy:32", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] cannot connect: %{result->} (111), referer: %{web_referer}", processor_chain([ - dup25, - dup2, - dup3, -])); - -var msg70 = msg("reverseproxy:32", part78); - -var part79 = match("MESSAGE#70:reverseproxy:33", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] cannot connect: %{result->} (111)", processor_chain([ - dup25, - dup2, - dup3, -])); - -var msg71 = msg("reverseproxy:33", part79); - -var part80 = match("MESSAGE#71:reverseproxy:34", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] virus daemon connection problem found in request %{url}, referer: %{web_referer}", processor_chain([ - dup26, - dup29, - dup2, - dup3, -])); - -var msg72 = msg("reverseproxy:34", part80); - -var part81 = match("MESSAGE#72:reverseproxy:35", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] virus daemon connection problem found in request %{url}", processor_chain([ - dup26, - dup29, - dup2, - dup3, -])); - -var msg73 = msg("reverseproxy:35", part81); - -var part82 = match("MESSAGE#73:reverseproxy:36", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] mod_avscan_input_filter: virus found", processor_chain([ - dup27, - setc("result","Virus found"), - dup2, - dup3, -])); - -var msg74 = msg("reverseproxy:36", part82); - -var part83 = match("MESSAGE#74:reverseproxy:37", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] (13)%{result}: [client %{gateway}] AH01095: prefetch request body failed to %{saddr}:%{sport->} (%{fld5}) from %{fld6->} ()", processor_chain([ - dup24, - dup28, - dup2, - dup3, -])); - -var msg75 = msg("reverseproxy:37", part83); - -var part84 = match("MESSAGE#75:reverseproxy:38", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] Invalid signature, cookie: JSESSIONID", processor_chain([ - dup25, - dup2, - dup3, -])); - -var msg76 = msg("reverseproxy:38", part84); - -var part85 = match("MESSAGE#76:reverseproxy:39", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] Form validation failed: Received unhardened form data, referer: %{web_referer}", processor_chain([ - dup23, - setc("result","Form validation failed"), - dup2, - dup3, -])); - -var msg77 = msg("reverseproxy:39", part85); - -var part86 = match("MESSAGE#77:reverseproxy:40", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] sending trickle failed: 103", processor_chain([ - dup25, - setc("result","Sending trickle failed"), - dup2, - dup3, -])); - -var msg78 = msg("reverseproxy:40", part86); - -var part87 = match("MESSAGE#78:reverseproxy:41", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] client requesting %{web_root->} has %{disposition}", processor_chain([ - dup30, - dup2, - dup3, -])); - -var msg79 = msg("reverseproxy:41", part87); - -var part88 = match("MESSAGE#79:reverseproxy:42", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] mod_avscan_check_file_single_part() called with parameter filename=%{filename}", processor_chain([ - setc("eventcategory","1603050000"), - dup2, - dup3, -])); - -var msg80 = msg("reverseproxy:42", part88); - -var part89 = match("MESSAGE#80:reverseproxy:43", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] (70007)The %{disposition->} specified has expired: [client %{gateway}] AH01110: error reading response", processor_chain([ - dup30, - setc("event_id","AH01110"), - setc("result","Error reading response"), - dup2, - dup3, -])); - -var msg81 = msg("reverseproxy:43", part89); - -var part90 = match("MESSAGE#81:reverseproxy:44", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] (22)%{result}: [client %{gateway}] No form context found when parsing %{fld5->} tag, referer: %{web_referer}", processor_chain([ - setc("eventcategory","1601020000"), - setc("result","No form context found"), - dup2, - dup3, -])); - -var msg82 = msg("reverseproxy:44", part90); - -var part91 = match("MESSAGE#82:reverseproxy:45", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] (111)%{result}: AH00957: %{network_service}: attempt to connect to %{daddr}:%{dport->} (%{fld5}) failed", processor_chain([ - dup25, - setc("event_id","AH00957"), - dup2, - dup3, -])); - -var msg83 = msg("reverseproxy:45", part91); - -var part92 = match("MESSAGE#83:reverseproxy:46", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] AH00959: ap_proxy_connect_backend disabling worker for (%{daddr}) for %{processing_time}s", processor_chain([ - dup16, - setc("event_id","AH00959"), - setc("result","disabling worker"), - dup2, - dup3, -])); - -var msg84 = msg("reverseproxy:46", part92); - -var part93 = match("MESSAGE#84:reverseproxy:47", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] [%{fld5}] not all the file sent to the client: %{fld6}, referer: %{web_referer}", processor_chain([ - setc("eventcategory","1801000000"), - setc("context","Not all file sent to client"), - dup2, - dup3, -])); - -var msg85 = msg("reverseproxy:47", part93); - -var part94 = match("MESSAGE#85:reverseproxy:48", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] AH01114: %{network_service}: failed to make connection to backend: %{daddr}, referer: %{web_referer}", processor_chain([ - dup25, - dup31, - dup32, - dup2, - dup3, -])); - -var msg86 = msg("reverseproxy:48", part94); - -var part95 = match("MESSAGE#86:reverseproxy:49", "nwparser.payload", "[%{fld3}] [%{event_log}:%{severity}] [pid %{process_id}:%{fld4}] [client %{gateway}] AH01114: %{network_service}: failed to make connection to backend: %{daddr}", processor_chain([ - dup25, - dup31, - dup32, - dup2, - dup3, -])); - -var msg87 = msg("reverseproxy:49", part95); - -var part96 = tagval("MESSAGE#87:reverseproxy:05", "nwparser.payload", tvm, { - "cookie": "web_cookie", - "exceptions": "policy_waiver", - "extra": "info", - "host": "dhost", - "id": "policy_id", - "localip": "fld3", - "method": "web_method", - "reason": "comments", - "referer": "web_referer", - "server": "daddr", - "set-cookie": "fld5", - "size": "fld4", - "srcip": "saddr", - "statuscode": "resultcode", - "time": "processing_time", - "url": "web_root", - "user": "username", -}, processor_chain([ - setc("eventcategory","1802000000"), - dup2, - dup3, -])); - -var msg88 = msg("reverseproxy:05", part96); - -var select8 = linear_select([ - msg40, - msg41, - msg42, - msg43, - msg44, - msg45, - msg46, - msg47, - msg48, - msg49, - msg50, - msg51, - msg52, - msg53, - msg54, - msg55, - msg56, - msg57, - msg58, - msg59, - msg60, - msg61, - msg62, - msg63, - msg64, - msg65, - msg66, - msg67, - msg68, - msg69, - msg70, - msg71, - msg72, - msg73, - msg74, - msg75, - msg76, - msg77, - msg78, - msg79, - msg80, - msg81, - msg82, - msg83, - msg84, - msg85, - msg86, - msg87, - msg88, -]); - -var part97 = tagval("MESSAGE#88:confd-sync", "nwparser.payload", tvm, { - "id": "fld5", - "name": "event_description", - "severity": "severity", - "sub": "service", - "sys": "fld2", -}, processor_chain([ - dup1, - dup11, - dup2, -])); - -var msg89 = msg("confd-sync", part97); - -var part98 = tagval("MESSAGE#89:confd:01", "nwparser.payload", tvm, { - "account": "logon_id", - "attributes": "obj_name", - "class": "group_object", - "client": "fld3", - "count": "fld4", - "facility": "logon_type", - "id": "fld1", - "name": "event_description", - "node": "node", - "object": "fld6", - "severity": "severity", - "srcip": "saddr", - "storage": "directory", - "sub": "service", - "sys": "fld2", - "type": "obj_type", - "user": "username", - "version": "version", -}, processor_chain([ - dup1, - dup11, - dup2, -])); - -var msg90 = msg("confd:01", part98); - -var part99 = match("MESSAGE#90:frox", "nwparser.payload", "Frox started%{}", processor_chain([ - dup12, - setc("event_description","frox:FTP Proxy Frox started."), - dup11, - dup2, -])); - -var msg91 = msg("frox", part99); - -var part100 = match("MESSAGE#91:frox:01", "nwparser.payload", "Listening on %{saddr}:%{sport}", processor_chain([ - dup12, - setc("event_description","frox:FTP Proxy listening on port."), - dup11, - dup2, -])); - -var msg92 = msg("frox:01", part100); - -var part101 = match("MESSAGE#92:frox:02", "nwparser.payload", "Dropped privileges%{}", processor_chain([ - dup12, - setc("event_description","frox:FTP Proxy dropped priveleges."), - dup11, - dup2, -])); - -var msg93 = msg("frox:02", part101); - -var select9 = linear_select([ - msg91, - msg92, - msg93, -]); - -var part102 = match("MESSAGE#93:afcd", "nwparser.payload", "Classifier configuration reloaded successfully%{}", processor_chain([ - dup12, - setc("event_description","afcd: IM/P2P Classifier configuration reloaded successfully."), - dup11, - dup2, -])); - -var msg94 = msg("afcd", part102); - -var part103 = match("MESSAGE#94:ipsec_starter", "nwparser.payload", "Starting strongSwan %{fld2->} IPsec [starter]...", processor_chain([ - dup12, - setc("event_description","ipsec_starter: Starting strongSwan 4.2.3 IPsec [starter]..."), - dup11, - dup2, -])); - -var msg95 = msg("ipsec_starter", part103); - -var part104 = match("MESSAGE#95:ipsec_starter:01", "nwparser.payload", "IP address or index of physical interface changed -> reinit of ipsec interface%{}", processor_chain([ - dup12, - setc("event_description","ipsec_starter: IP address or index of physical interface changed."), - dup11, - dup2, -])); - -var msg96 = msg("ipsec_starter:01", part104); - -var select10 = linear_select([ - msg95, - msg96, -]); - -var part105 = match("MESSAGE#96:pluto", "nwparser.payload", "Starting Pluto (%{info})", processor_chain([ - dup12, - setc("event_description","pluto: Starting Pluto."), - dup11, - dup2, -])); - -var msg97 = msg("pluto", part105); - -var part106 = match("MESSAGE#97:pluto:01", "nwparser.payload", "including NAT-Traversal patch (%{info})", processor_chain([ - dup12, - setc("event_description","pluto: including NAT-Traversal patch."), - dup11, - dup2, -])); - -var msg98 = msg("pluto:01", part106); - -var part107 = match("MESSAGE#98:pluto:02", "nwparser.payload", "ike_alg: Activating %{info->} encryption: Ok", processor_chain([ - dup33, - setc("event_description","pluto: Activating encryption algorithm."), - dup11, - dup2, -])); - -var msg99 = msg("pluto:02", part107); - -var part108 = match("MESSAGE#99:pluto:03", "nwparser.payload", "ike_alg: Activating %{info->} hash: Ok", processor_chain([ - dup33, - setc("event_description","pluto: Activating hash algorithm."), - dup11, - dup2, -])); - -var msg100 = msg("pluto:03", part108); - -var part109 = match("MESSAGE#100:pluto:04", "nwparser.payload", "Testing registered IKE encryption algorithms:%{}", processor_chain([ - dup12, - setc("event_description","pluto: Testing registered IKE encryption algorithms"), - dup11, - dup2, -])); - -var msg101 = msg("pluto:04", part109); - -var part110 = match("MESSAGE#101:pluto:05", "nwparser.payload", "%{info->} self-test not available", processor_chain([ - dup12, - setc("event_description","pluto: Algorithm self-test not available."), - dup11, - dup2, -])); - -var msg102 = msg("pluto:05", part110); - -var part111 = match("MESSAGE#102:pluto:06", "nwparser.payload", "%{info->} self-test passed", processor_chain([ - dup12, - setc("event_description","pluto: Algorithm self-test passed."), - dup11, - dup2, -])); - -var msg103 = msg("pluto:06", part111); - -var part112 = match("MESSAGE#103:pluto:07", "nwparser.payload", "Using KLIPS IPsec interface code%{}", processor_chain([ - dup12, - setc("event_description","pluto: Using KLIPS IPsec interface code"), - dup11, - dup2, -])); - -var msg104 = msg("pluto:07", part112); - -var part113 = match("MESSAGE#104:pluto:08", "nwparser.payload", "adding interface %{interface->} %{saddr}:%{sport}", processor_chain([ - dup12, - setc("event_description","pluto: adding interface"), - dup11, - dup2, -])); - -var msg105 = msg("pluto:08", part113); - -var part114 = match("MESSAGE#105:pluto:09", "nwparser.payload", "loading secrets from \"%{filename}\"", processor_chain([ - dup34, - setc("event_description","pluto: loading secrets"), - dup11, - dup2, -])); - -var msg106 = msg("pluto:09", part114); - -var part115 = match("MESSAGE#106:pluto:10", "nwparser.payload", "loaded private key file '%{filename}' (%{filename_size->} bytes)", processor_chain([ - dup34, - setc("event_description","pluto: loaded private key file"), - dup11, - dup2, -])); - -var msg107 = msg("pluto:10", part115); - -var part116 = match("MESSAGE#107:pluto:11", "nwparser.payload", "added connection description \"%{fld2}\"", processor_chain([ - dup12, - setc("event_description","pluto: added connection description"), - dup11, - dup2, -])); - -var msg108 = msg("pluto:11", part116); - -var part117 = match("MESSAGE#108:pluto:12", "nwparser.payload", "\"%{fld2}\" #%{fld3}: initiating Main Mode", processor_chain([ - dup12, - dup35, - dup11, - dup2, -])); - -var msg109 = msg("pluto:12", part117); - -var part118 = match("MESSAGE#109:pluto:13", "nwparser.payload", "\"%{fld2}\" #%{fld3}: max number of retransmissions (%{fld4}) reached STATE_MAIN_I1. No response (or no acceptable response) to our first IKE message", processor_chain([ - dup10, - dup36, - dup11, - dup2, -])); - -var msg110 = msg("pluto:13", part118); - -var part119 = match("MESSAGE#110:pluto:14", "nwparser.payload", "\"%{fld2}\" #%{fld3}: starting keying attempt %{fld4->} of an unlimited number", processor_chain([ - dup12, - dup37, - dup11, - dup2, -])); - -var msg111 = msg("pluto:14", part119); - -var part120 = match("MESSAGE#111:pluto:15", "nwparser.payload", "forgetting secrets%{}", processor_chain([ - dup12, - setc("event_description","pluto:forgetting secrets"), - dup11, - dup2, -])); - -var msg112 = msg("pluto:15", part120); - -var part121 = match("MESSAGE#112:pluto:17", "nwparser.payload", "Changing to directory '%{directory}'", processor_chain([ - dup12, - setc("event_description","pluto:Changing to directory"), - dup11, - dup2, -])); - -var msg113 = msg("pluto:17", part121); - -var part122 = match("MESSAGE#113:pluto:18", "nwparser.payload", "| *time to handle event%{}", processor_chain([ - dup12, - setc("event_description","pluto:*time to handle event"), - dup11, - dup2, -])); - -var msg114 = msg("pluto:18", part122); - -var part123 = match("MESSAGE#114:pluto:19", "nwparser.payload", "| *received kernel message%{}", processor_chain([ - dup12, - setc("event_description","pluto:*received kernel message"), - dup11, - dup2, -])); - -var msg115 = msg("pluto:19", part123); - -var part124 = match("MESSAGE#115:pluto:20", "nwparser.payload", "| rejected packet:%{}", processor_chain([ - dup25, - setc("event_description","pluto:rejected packet"), - dup11, - dup2, -])); - -var msg116 = msg("pluto:20", part124); - -var part125 = match("MESSAGE#116:pluto:21", "nwparser.payload", "| next event %{event_type->} in %{fld2->} seconds for #%{fld3}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg117 = msg("pluto:21", part125); - -var part126 = match("MESSAGE#117:pluto:22", "nwparser.payload", "| next event %{event_type->} in %{fld2->} seconds", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg118 = msg("pluto:22", part126); - -var part127 = match("MESSAGE#118:pluto:23", "nwparser.payload", "| inserting event %{event_type->} in %{fld2->} seconds for #%{fld3}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg119 = msg("pluto:23", part127); - -var part128 = match("MESSAGE#119:pluto:24", "nwparser.payload", "| event after this is %{event_type->} in %{fld2->} seconds", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg120 = msg("pluto:24", part128); - -var part129 = match("MESSAGE#120:pluto:25", "nwparser.payload", "| recent %{action->} activity %{fld2->} seconds ago, %{info}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg121 = msg("pluto:25", part129); - -var part130 = match("MESSAGE#121:pluto:26", "nwparser.payload", "| *received %{rbytes->} bytes from %{saddr}:%{sport->} on %{dinterface}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg122 = msg("pluto:26", part130); - -var part131 = match("MESSAGE#122:pluto:27", "nwparser.payload", "| received %{action->} notification %{msg->} with seqno = %{fld2}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg123 = msg("pluto:27", part131); - -var part132 = match("MESSAGE#123:pluto:28", "nwparser.payload", "| sent %{action->} notification %{msg->} with seqno = %{fld2}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg124 = msg("pluto:28", part132); - -var part133 = match("MESSAGE#124:pluto:29", "nwparser.payload", "| inserting event %{event_type}, timeout in %{fld2->} seconds", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg125 = msg("pluto:29", part133); - -var part134 = match("MESSAGE#125:pluto:30", "nwparser.payload", "| handling event %{event_type->} for %{saddr->} \"%{fld2}\" #%{fld3}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg126 = msg("pluto:30", part134); - -var part135 = match("MESSAGE#126:pluto:31", "nwparser.payload", "| %{event_description}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg127 = msg("pluto:31", part135); - -var part136 = match("MESSAGE#127:pluto:32", "nwparser.payload", "%{fld2}: asynchronous network error report on %{interface->} for message to %{daddr->} port %{dport}, complainant %{saddr}: Connection refused [errno %{fld4}, origin ICMP type %{icmptype->} code %{icmpcode->} (not authenticated)]", processor_chain([ - dup12, - setc("event_description","not authenticated"), - dup11, - dup2, -])); - -var msg128 = msg("pluto:32", part136); - -var part137 = match("MESSAGE#128:pluto:33", "nwparser.payload", "\"%{fld2}\"[%{fld4}] %{saddr->} #%{fld3}: initiating Main Mode", processor_chain([ - dup12, - dup35, - dup11, - dup2, -])); - -var msg129 = msg("pluto:33", part137); - -var part138 = match("MESSAGE#129:pluto:34", "nwparser.payload", "\"%{fld2}\"[%{fld4}] %{saddr->} #%{fld3}: max number of retransmissions (%{fld5}) reached STATE_MAIN_I1. No response (or no acceptable response) to our first IKE message", processor_chain([ - dup12, - dup36, - dup11, - dup2, -])); - -var msg130 = msg("pluto:34", part138); - -var part139 = match("MESSAGE#130:pluto:35", "nwparser.payload", "\"%{fld2}\"[%{fld4}] %{saddr->} #%{fld3}: starting keying attempt %{fld5->} of an unlimited number", processor_chain([ - dup12, - dup37, - dup11, - dup2, -])); - -var msg131 = msg("pluto:35", part139); - -var select11 = linear_select([ - msg97, - msg98, - msg99, - msg100, - msg101, - msg102, - msg103, - msg104, - msg105, - msg106, - msg107, - msg108, - msg109, - msg110, - msg111, - msg112, - msg113, - msg114, - msg115, - msg116, - msg117, - msg118, - msg119, - msg120, - msg121, - msg122, - msg123, - msg124, - msg125, - msg126, - msg127, - msg128, - msg129, - msg130, - msg131, -]); - -var part140 = match("MESSAGE#131:xl2tpd", "nwparser.payload", "This binary does not support kernel L2TP.%{}", processor_chain([ - setc("eventcategory","1607000000"), - setc("event_description","xl2tpd:This binary does not support kernel L2TP."), - dup11, - dup2, -])); - -var msg132 = msg("xl2tpd", part140); - -var part141 = match("MESSAGE#132:xl2tpd:01", "nwparser.payload", "xl2tpd version %{version->} started on PID:%{fld2}", processor_chain([ - dup12, - setc("event_description","xl2tpd:xl2tpd started."), - dup11, - dup2, -])); - -var msg133 = msg("xl2tpd:01", part141); - -var part142 = match("MESSAGE#133:xl2tpd:02", "nwparser.payload", "Written by %{info}", processor_chain([ - dup12, - dup38, - dup11, - dup2, -])); - -var msg134 = msg("xl2tpd:02", part142); - -var part143 = match("MESSAGE#134:xl2tpd:03", "nwparser.payload", "Forked by %{info}", processor_chain([ - dup12, - dup38, - dup11, - dup2, -])); - -var msg135 = msg("xl2tpd:03", part143); - -var part144 = match("MESSAGE#135:xl2tpd:04", "nwparser.payload", "Inherited by %{info}", processor_chain([ - dup12, - dup38, - dup11, - dup2, -])); - -var msg136 = msg("xl2tpd:04", part144); - -var part145 = match("MESSAGE#136:xl2tpd:05", "nwparser.payload", "Listening on IP address %{saddr}, port %{sport}", processor_chain([ - dup12, - dup38, - dup11, - dup2, -])); - -var msg137 = msg("xl2tpd:05", part145); - -var select12 = linear_select([ - msg132, - msg133, - msg134, - msg135, - msg136, - msg137, -]); - -var part146 = match("MESSAGE#137:barnyard:01", "nwparser.payload", "Exiting%{}", processor_chain([ - dup12, - setc("event_description","barnyard: Exiting"), - dup11, - dup2, -])); - -var msg138 = msg("barnyard:01", part146); - -var part147 = match("MESSAGE#138:barnyard:02", "nwparser.payload", "Initializing daemon mode%{}", processor_chain([ - dup12, - setc("event_description","barnyard:Initializing daemon mode"), - dup11, - dup2, -])); - -var msg139 = msg("barnyard:02", part147); - -var part148 = match("MESSAGE#139:barnyard:03", "nwparser.payload", "Opened spool file '%{filename}'", processor_chain([ - dup12, - setc("event_description","barnyard:Opened spool file."), - dup11, - dup2, -])); - -var msg140 = msg("barnyard:03", part148); - -var part149 = match("MESSAGE#140:barnyard:04", "nwparser.payload", "Waiting for new data%{}", processor_chain([ - dup12, - setc("event_description","barnyard:Waiting for new data"), - dup11, - dup2, -])); - -var msg141 = msg("barnyard:04", part149); - -var select13 = linear_select([ - msg138, - msg139, - msg140, - msg141, -]); - -var part150 = match("MESSAGE#141:exim:01", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} SMTP connection from localhost (%{hostname}) [%{saddr}]:%{sport->} closed by QUIT", processor_chain([ - dup12, - setc("event_description","exim:SMTP connection from localhost closed by QUIT"), - dup11, - dup2, -])); - -var msg142 = msg("exim:01", part150); - -var part151 = match("MESSAGE#142:exim:02", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} [%{saddr}] F=\u003c\u003c%{from}> R=\u003c\u003c%{to}> Accepted: %{info}", processor_chain([ - setc("eventcategory","1207010000"), - setc("event_description","exim:e-mail accepted from relay."), - dup11, - dup2, -])); - -var msg143 = msg("exim:02", part151); - -var part152 = match("MESSAGE#143:exim:03", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} %{fld8->} \u003c\u003c= %{from->} H=localhost (%{hostname}) [%{saddr}]:%{sport->} P=%{protocol->} S=%{fld9->} id=%{info}", processor_chain([ - setc("eventcategory","1207000000"), - setc("event_description","exim: e-mail sent."), - dup11, - dup2, -])); - -var msg144 = msg("exim:03", part152); - -var part153 = match("MESSAGE#144:exim:04", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} %{fld8->} == %{from->} R=dnslookup defer (%{fld9}): host lookup did not complete", processor_chain([ - dup39, - setc("event_description","exim: e-mail host lookup did not complete in DNS."), - dup11, - dup2, -])); - -var msg145 = msg("exim:04", part153); - -var part154 = match("MESSAGE#145:exim:05", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} %{fld8->} == %{from->} routing defer (%{fld9}): retry time not reached", processor_chain([ - dup39, - setc("event_description","exim: e-mail routing defer:retry time not reached."), - dup11, - dup2, -])); - -var msg146 = msg("exim:05", part154); - -var part155 = match("MESSAGE#146:exim:06", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} exim %{version->} daemon started: pid=%{fld8}, no queue runs, listening for SMTP on port %{sport->} (%{info}) port %{fld9->} (%{fld10}) and for SMTPS on port %{fld11->} (%{fld12})", processor_chain([ - dup12, - setc("event_description","exim: exim daemon started."), - dup11, - dup2, -])); - -var msg147 = msg("exim:06", part155); - -var part156 = match("MESSAGE#147:exim:07", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} Start queue run: pid=%{fld8}", processor_chain([ - dup12, - setc("event_description","exim: Start queue run."), - dup11, - dup2, -])); - -var msg148 = msg("exim:07", part156); - -var part157 = match("MESSAGE#148:exim:08", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} pid %{fld8}: SIGHUP received: re-exec daemon", processor_chain([ - dup12, - setc("event_description","exim: SIGHUP received: re-exec daemon."), - dup11, - dup2, -])); - -var msg149 = msg("exim:08", part157); - -var part158 = match("MESSAGE#149:exim:09", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} SMTP connection from [%{saddr}]:%{sport->} %{info}", processor_chain([ - dup12, - setc("event_description","exim: SMTP connection from host."), - dup11, - dup2, -])); - -var msg150 = msg("exim:09", part158); - -var part159 = match("MESSAGE#150:exim:10", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} rejected EHLO from [%{saddr}]:%{sport->} %{info}", processor_chain([ - dup12, - setc("event_description","exim:rejected EHLO from host."), - dup11, - dup2, -])); - -var msg151 = msg("exim:10", part159); - -var part160 = match("MESSAGE#151:exim:11", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} SMTP protocol synchronization error (%{result}): %{fld8->} H=[%{saddr}]:%{sport->} %{info}", processor_chain([ - dup12, - setc("event_description","exim:SMTP protocol synchronization error rejected connection from host."), - dup11, - dup2, -])); - -var msg152 = msg("exim:11", part160); - -var part161 = match("MESSAGE#152:exim:12", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} TLS error on connection from [%{saddr}]:%{sport->} %{info}", processor_chain([ - dup12, - setc("event_description","exim:TLS error on connection from host."), - dup11, - dup2, -])); - -var msg153 = msg("exim:12", part161); - -var part162 = match("MESSAGE#153:exim:13", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} %{fld10->} == %{hostname->} R=%{fld8->} T=%{fld9}: %{info}", processor_chain([ - dup12, - dup40, - dup11, - dup2, -])); - -var msg154 = msg("exim:13", part162); - -var part163 = match("MESSAGE#154:exim:14", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} %{fld10->} %{hostname->} [%{saddr}]:%{sport->} %{info}", processor_chain([ - dup12, - dup40, - dup11, - dup2, -])); - -var msg155 = msg("exim:14", part163); - -var part164 = match("MESSAGE#155:exim:15", "nwparser.payload", "%{fld2}-%{fld3}-%{fld4->} %{fld5}:%{fld6}:%{fld7->} End queue run: %{info}", processor_chain([ - dup12, - dup40, - dup11, - dup2, -])); - -var msg156 = msg("exim:15", part164); - -var part165 = match("MESSAGE#156:exim:16", "nwparser.payload", "%{fld2->} %{fld3}", processor_chain([ - dup12, - dup11, - dup2, -])); - -var msg157 = msg("exim:16", part165); - -var select14 = linear_select([ - msg142, - msg143, - msg144, - msg145, - msg146, - msg147, - msg148, - msg149, - msg150, - msg151, - msg152, - msg153, - msg154, - msg155, - msg156, - msg157, -]); - -var part166 = match("MESSAGE#157:smtpd:01", "nwparser.payload", "QMGR[%{fld2}]: %{fld3->} moved to work queue", processor_chain([ - dup12, - setc("event_description","smtpd: Process moved to work queue."), - dup11, - dup2, -])); - -var msg158 = msg("smtpd:01", part166); - -var part167 = match("MESSAGE#158:smtpd:02", "nwparser.payload", "SCANNER[%{fld3}]: id=\"1000\" severity=\"%{severity}\" sys=\"%{fld4}\" sub=\"%{service}\" name=\"%{event_description}\" srcip=\"%{saddr}\" from=\"%{from}\" to=\"%{to}\" subject=\"%{subject}\" queueid=\"%{fld5}\" size=\"%{rbytes}\"", processor_chain([ - setc("eventcategory","1207010100"), - dup11, - dup2, -])); - -var msg159 = msg("smtpd:02", part167); - -var part168 = match("MESSAGE#159:smtpd:03", "nwparser.payload", "SCANNER[%{fld3}]: Nothing to do, exiting.", processor_chain([ - dup12, - setc("event_description","smtpd: SCANNER: Nothing to do,exiting."), - dup11, - dup2, -])); - -var msg160 = msg("smtpd:03", part168); - -var part169 = match("MESSAGE#160:smtpd:04", "nwparser.payload", "MASTER[%{fld3}]: QR globally disabled, status two set to 'disabled'", processor_chain([ - dup12, - setc("event_description","smtpd: MASTER:QR globally disabled, status two set to disabled."), - dup11, - dup2, -])); - -var msg161 = msg("smtpd:04", part169); - -var part170 = match("MESSAGE#161:smtpd:07", "nwparser.payload", "MASTER[%{fld3}]: QR globally disabled, status one set to 'disabled'", processor_chain([ - dup12, - setc("event_description","smtpd: MASTER:QR globally disabled, status one set to disabled."), - dup11, - dup2, -])); - -var msg162 = msg("smtpd:07", part170); - -var part171 = match("MESSAGE#162:smtpd:05", "nwparser.payload", "MASTER[%{fld3}]: (Re-)loading configuration from Confd", processor_chain([ - dup12, - setc("event_description","smtpd: MASTER:(Re-)loading configuration from Confd."), - dup11, - dup2, -])); - -var msg163 = msg("smtpd:05", part171); - -var part172 = match("MESSAGE#163:smtpd:06", "nwparser.payload", "MASTER[%{fld3}]: Sending QR one", processor_chain([ - dup12, - setc("event_description","smtpd: MASTER:Sending QR one."), - dup11, - dup2, -])); - -var msg164 = msg("smtpd:06", part172); - -var select15 = linear_select([ - msg158, - msg159, - msg160, - msg161, - msg162, - msg163, - msg164, -]); - -var part173 = match("MESSAGE#164:sshd:01", "nwparser.payload", "Did not receive identification string from %{fld18}", processor_chain([ - dup10, - setc("event_description","sshd: Did not receive identification string."), - dup11, - dup2, -])); - -var msg165 = msg("sshd:01", part173); - -var part174 = match("MESSAGE#165:sshd:02", "nwparser.payload", "Received SIGHUP; restarting.%{}", processor_chain([ - dup12, - setc("event_description","sshd:Received SIGHUP restarting."), - dup11, - dup2, -])); - -var msg166 = msg("sshd:02", part174); - -var part175 = match("MESSAGE#166:sshd:03", "nwparser.payload", "Server listening on %{saddr->} port %{sport}.", processor_chain([ - dup12, - setc("event_description","sshd:Server listening; restarting."), - dup11, - dup2, -])); - -var msg167 = msg("sshd:03", part175); - -var part176 = match("MESSAGE#167:sshd:04", "nwparser.payload", "Invalid user admin from %{fld18}", processor_chain([ - dup41, - setc("event_description","sshd:Invalid user admin."), - dup11, - dup2, -])); - -var msg168 = msg("sshd:04", part176); - -var part177 = match("MESSAGE#168:sshd:05", "nwparser.payload", "Failed none for invalid user admin from %{saddr->} port %{sport->} %{fld3}", processor_chain([ - dup41, - setc("event_description","sshd:Failed none for invalid user admin."), - dup11, - dup2, -])); - -var msg169 = msg("sshd:05", part177); - -var part178 = match("MESSAGE#169:sshd:06", "nwparser.payload", "error: Could not get shadow information for NOUSER%{}", processor_chain([ - dup10, - setc("event_description","sshd:error:Could not get shadow information for NOUSER"), - dup11, - dup2, -])); - -var msg170 = msg("sshd:06", part178); - -var part179 = match("MESSAGE#170:sshd:07", "nwparser.payload", "Failed password for root from %{saddr->} port %{sport->} %{fld3}", processor_chain([ - dup41, - setc("event_description","sshd:Failed password for root."), - dup11, - dup2, -])); - -var msg171 = msg("sshd:07", part179); - -var part180 = match("MESSAGE#171:sshd:08", "nwparser.payload", "Accepted password for loginuser from %{saddr->} port %{sport->} %{fld3}", processor_chain([ - setc("eventcategory","1302000000"), - setc("event_description","sshd:Accepted password for loginuser."), - dup11, - dup2, -])); - -var msg172 = msg("sshd:08", part180); - -var part181 = match("MESSAGE#172:sshd:09", "nwparser.payload", "subsystem request for sftp failed, subsystem not found%{}", processor_chain([ - dup10, - setc("event_description","sshd:subsystem request for sftp failed,subsystem not found."), - dup11, - dup2, -])); - -var msg173 = msg("sshd:09", part181); - -var select16 = linear_select([ - msg165, - msg166, - msg167, - msg168, - msg169, - msg170, - msg171, - msg172, - msg173, -]); - -var part182 = tagval("MESSAGE#173:aua:01", "nwparser.payload", tvm, { - "caller": "fld4", - "engine": "fld5", - "id": "fld1", - "name": "event_description", - "severity": "severity", - "srcip": "saddr", - "sub": "service", - "sys": "fld2", - "user": "username", -}, processor_chain([ - dup13, - dup11, - dup2, - dup45, - dup46, -])); - -var msg174 = msg("aua:01", part182); - -var part183 = match("MESSAGE#174:sockd:01", "nwparser.payload", "created new negotiatorchild%{}", processor_chain([ - dup12, - setc("event_description","sockd: created new negotiatorchild."), - dup11, - dup2, -])); - -var msg175 = msg("sockd:01", part183); - -var part184 = match("MESSAGE#175:sockd:02", "nwparser.payload", "dante/server %{version->} running", processor_chain([ - dup12, - setc("event_description","sockd:dante/server running."), - dup11, - dup2, -])); - -var msg176 = msg("sockd:02", part184); - -var part185 = match("MESSAGE#176:sockd:03", "nwparser.payload", "sockdexit(): terminating on signal %{fld2}", processor_chain([ - dup12, - setc("event_description","sockd:sockdexit():terminating on signal."), - dup11, - dup2, -])); - -var msg177 = msg("sockd:03", part185); - -var select17 = linear_select([ - msg175, - msg176, - msg177, -]); - -var part186 = match("MESSAGE#177:pop3proxy", "nwparser.payload", "Master started%{}", processor_chain([ - dup12, - setc("event_description","pop3proxy:Master started."), - dup11, - dup2, -])); - -var msg178 = msg("pop3proxy", part186); - -var part187 = tagval("MESSAGE#178:astarosg_TVM", "nwparser.payload", tvm, { - "account": "logon_id", - "action": "action", - "ad_domain": "fld5", - "app-id": "fld20", - "application": "fld19", - "attributes": "obj_name", - "auth": "fld15", - "authtime": "fld9", - "avscantime": "fld12", - "cached": "fld7", - "caller": "fld30", - "category": "policy_id", - "categoryname": "info", - "cattime": "fld11", - "class": "group_object", - "client": "fld3", - "content-type": "content_type", - "cookie": "web_cookie", - "count": "fld4", - "device": "fld14", - "dnstime": "fld10", - "dstip": "daddr", - "dstmac": "dmacaddr", - "dstport": "dport", - "engine": "fld31", - "error": "comments", - "exceptions": "fld17", - "extension": "web_extension", - "extra": "info", - "facility": "logon_type", - "file": "filename", - "filename": "filename", - "filteraction": "policyname", - "fullreqtime": "fld13", - "function": "action", - "fwrule": "policy_id", - "group": "group", - "host": "dhost", - "id": "rule", - "info": "context", - "initf": "sinterface", - "length": "fld25", - "line": "fld22", - "localip": "fld31", - "message": "context", - "method": "web_method", - "name": "event_description", - "node": "node", - "object": "fld6", - "outitf": "dinterface", - "prec": "fld30", - "profile": "owner", - "proto": "fld24", - "reason": "comments", - "referer": "web_referer", - "reputation": "fld18", - "request": "fld8", - "seq": "fld23", - "server": "daddr", - "set-cookie": "fld32", - "severity": "severity", - "size": "filename_size", - "srcip": "saddr", - "srcmac": "smacaddr", - "srcport": "sport", - "statuscode": "resultcode", - "storage": "directory", - "sub": "service", - "sys": "vsys", - "tcpflags": "fld29", - "time": "fld21", - "tos": "fld26", - "ttl": "fld28", - "type": "obj_type", - "ua": "fld16", - "url": "url", - "user": "username", - "version": "version", -}, processor_chain([ - dup12, - dup11, - dup2, - dup45, - dup46, -])); - -var msg179 = msg("astarosg_TVM", part187); - -var part188 = tagval("MESSAGE#179:httpd", "nwparser.payload", tvm, { - "account": "logon_id", - "action": "action", - "ad_domain": "fld5", - "app-id": "fld20", - "application": "fld19", - "attributes": "obj_name", - "auth": "fld15", - "authtime": "fld9", - "avscantime": "fld12", - "cached": "fld7", - "caller": "fld30", - "category": "policy_id", - "categoryname": "info", - "cattime": "fld11", - "class": "group_object", - "client": "fld3", - "content-type": "content_type", - "cookie": "web_cookie", - "count": "fld4", - "device": "fld14", - "dnstime": "fld10", - "dstip": "daddr", - "dstmac": "dmacaddr", - "dstport": "dport", - "engine": "fld31", - "error": "comments", - "exceptions": "fld17", - "extension": "web_extension", - "extra": "info", - "facility": "logon_type", - "file": "filename", - "filename": "filename", - "filteraction": "policyname", - "fullreqtime": "fld13", - "function": "action", - "fwrule": "policy_id", - "group": "group", - "host": "dhost", - "id": "rule", - "info": "context", - "initf": "sinterface", - "length": "fld25", - "line": "fld22", - "localip": "fld31", - "message": "context", - "method": "web_method", - "name": "event_description", - "node": "node", - "object": "fld6", - "outitf": "dinterface", - "port": "network_port", - "prec": "fld30", - "profile": "owner", - "proto": "fld24", - "query": "web_query", - "reason": "comments", - "referer": "web_referer", - "reputation": "fld18", - "request": "fld8", - "seq": "fld23", - "server": "daddr", - "set-cookie": "fld32", - "severity": "severity", - "size": "filename_size", - "srcip": "saddr", - "srcmac": "smacaddr", - "srcport": "sport", - "statuscode": "resultcode", - "storage": "directory", - "sub": "service", - "sys": "vsys", - "tcpflags": "fld29", - "time": "fld21", - "tos": "fld26", - "ttl": "fld28", - "type": "obj_type", - "ua": "fld16", - "uid": "uid", - "url": "url", - "user": "username", - "version": "version", -}, processor_chain([ - dup12, - dup11, - dup2, - dup45, - dup46, -])); - -var msg180 = msg("httpd", part188); - -var part189 = match("MESSAGE#180:httpd:01", "nwparser.payload", "[%{event_log}:%{result}] [pid %{fld3}:%{fld4}] [client %{gateway}] ModSecurity: Warning. %{rulename->} [file \"%{filename}\"] [line \"%{fld5}\"] [id \"%{rule}\"] [rev \"%{fld2}\"] [msg \"%{event_description}\"] [severity \"%{severity}\"] [ver \"%{version}\"] [maturity \"%{fld22}\"] [accuracy \"%{fld23}\"] [tag \"%{fld24}\"] [hostname \"%{dhost}\"] [uri \"%{web_root}\"] [unique_id \"%{operation_id}\"]%{fld25}", processor_chain([ - setc("eventcategory","1502000000"), - dup2, - dup3, -])); - -var msg181 = msg("httpd:01", part189); - -var select18 = linear_select([ - msg180, - msg181, -]); - -var part190 = tagval("MESSAGE#181:Sophos_Firewall", "nwparser.payload", tvm, { - "activityname": "fld9", - "appfilter_policy_id": "fld10", - "application": "application", - "application_category": "fld23", - "application_risk": "risk_num", - "application_technology": "fld11", - "appresolvedby": "fld22", - "category": "fld4", - "category_type": "fld5", - "connevent": "fld19", - "connid": "connectionid", - "contenttype": "content_type", - "dir_disp": "fld18", - "domain": "fqdn", - "dst_country_code": "location_dst", - "dst_ip": "daddr", - "dst_port": "dport", - "dstzone": "dst_zone", - "dstzonetype": "fld17", - "duration": "duration", - "exceptions": "fld8", - "fw_rule_id": "rule_uid", - "hb_health": "fld21", - "httpresponsecode": "fld7", - "iap": "id1", - "in_interface": "sinterface", - "ips_policy_id": "policy_id", - "log_component": "event_source", - "log_subtype": "category", - "log_type": "event_type", - "message": "info", - "out_interface": "dinterface", - "override_token": "fld6", - "policy_type": "fld23", - "priority": "severity", - "protocol": "protocol", - "reason": "result", - "recv_bytes": "rbytes", - "recv_pkts": "fld15", - "referer": "web_referer", - "sent_bytes": "sbytes", - "sent_pkts": "fld14", - "src_country_code": "location_src", - "src_ip": "saddr", - "src_mac": "smacaddr", - "src_port": "sport", - "srczone": "src_zone", - "srczonetype": "fld16", - "status": "event_state", - "status_code": "resultcode", - "tran_dst_ip": "dtransaddr", - "tran_dst_port": "dtransport", - "tran_src_ip": "stransaddr", - "tran_src_port": "stransport", - "transactionid": "id2", - "url": "url", - "user_agent": "user_agent", - "user_gp": "group", - "user_name": "username", - "vconnid": "fld20", -}, processor_chain([ - setc("eventcategory","1204000000"), - dup2, - date_time({ - dest: "event_time", - args: ["hdate","htime"], - fmts: [ - [dW,dc("-"),dG,dc("-"),dF,dH,dc(":"),dU,dc(":"),dS], - ], - }), -])); - -var msg182 = msg("Sophos_Firewall", part190); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "Sophos_Firewall": msg182, - "URID": msg38, - "afcd": msg94, - "astarosg_TVM": msg179, - "aua": msg174, - "barnyard": select13, - "confd": msg90, - "confd-sync": msg89, - "exim": select14, - "frox": select9, - "httpd": select18, - "httpproxy": select3, - "ipsec_starter": select10, - "named": select2, - "pluto": select11, - "pop3proxy": msg178, - "reverseproxy": select8, - "smtpd": select15, - "sockd": select17, - "sshd": select16, - "ulogd": msg39, - "xl2tpd": select12, - }), -]); - -var part191 = match_copy("MESSAGE#44:reverseproxy:07/1_0", "nwparser.p0", "p0"); diff --git a/x-pack/filebeat/module/sophos/utm/ingest/pipeline.yml b/x-pack/filebeat/module/sophos/utm/ingest/pipeline.yml deleted file mode 100644 index 66d787b27ce..00000000000 --- a/x-pack/filebeat/module/sophos/utm/ingest/pipeline.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -description: Pipeline for Astaro Security Gateway - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/sophos/utm/manifest.yml b/x-pack/filebeat/module/sophos/utm/manifest.yml deleted file mode 100644 index 46bc83cd2dd..00000000000 --- a/x-pack/filebeat/module/sophos/utm/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["sophos.utm", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9549 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/sophos/utm/test/generated.log b/x-pack/filebeat/module/sophos/utm/test/generated.log deleted file mode 100644 index cb9fa97790b..00000000000 --- a/x-pack/filebeat/module/sophos/utm/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -2016:1:29-06:09:59 localhost.localdomain smtpd[905]: MASTER[nnumqua]: QR globally disabled, status one set to 'disabled' -2016:2:12-13:12:33 astarosg_TVM[5716]: id=ommod severity=medium sys=inima sub=tlabo name=web request blocked, forbidden application detectedaction=accept method=ugiatnu client=stiae facility=nofdeF user=sunt srcip=10.57.170.140 dstip=10.213.231.72 version=1.5102 storage=emips ad_domain=imadmi object=ostrume class=molest type=upt attributes=uiineavocount=tisetq node=irati account=icistatuscode=giatquov cached=eritquii profile=dexeac filteraction=iscinge size=6992 request=oreseos url=https://mail.example.net/tati/utaliqu.html?iquaUten=santium#iciatisu referer=https://www5.example.org/eporroqu/uat.txt?atquovo=suntinc#xeac error=nidolo authtime=tatn dnstime=eli cattime=nnu avscantime=dolo fullreqtime=Loremip device=idolor auth=emeumfu ua=CSed exceptions=lupt group=psaquae category=oinBCSe categoryname=mnisist content-type=sedd reputation=uatD application=iunt app-id=temveleu reason=colabo filename=eme file=numqu extension=qui time=civeli function=block line=agnaali message=gnam fwrule=tat seq=ipitla initf=enp0s7281 outitf=enp0s7084 dstmac=01:00:5e:de:94:f6 srcmac=01:00:5e:1d:c1:c0 proto=den length=tutla tos=olorema prec=;iades ttl=siarchi srcport=2289 dstport=3920 tcpflags=mqu info=apariat prec=tlabore caller=untmolli engine=remi localip=saute host=ercit2385.internal.home extra=run server=10.47.202.102 cookie=quirat set-cookie=llu -2016:2:26-20:15:08 eirure7587.internal.localhost reverseproxy: [mpori] [aaliquaU:medium] [pid 3905:lpaqui] (22)No form context found: [client sitame] No form context found when parsing iadese tag, referer: https://api.example.com/utla/utei.htm?oei=tlabori#oin -2016:3:12-03:17:42 data4478.api.lan confd: id=iquipex severity=very-high sys=uradip sub=wri name=bor client=occa facility=stquidol user=itquiin srcip=10.106.239.55 version=1.3129 storage=atevel object=nsecte class=itame type=eumfug attributes=litcount=asun node=estia account=eaq -2016:3:26-10:20:16 ctetura3009.www5.corp reverseproxy: [lita] [adeseru:medium] [pid 7692:eaq] amest configured -- corp normal operations -2016:4:9-17:22:51 localhost smtpd[1411]: MASTER[inculpa]: QR globally disabled, status one set to 'disabled' -2016:4:24-00:25:25 httpproxy[176]: [nse] disk_cache_zap (non) paquioff -2016:5:8-07:27:59 ptasnu6684.mail.lan reverseproxy: [orumSe] [boree:low] [pid 945:rQuisau] AH01915: Init: (10.18.13.211:205) You configured ofdeFini(irat) on the onev(aturauto) port! -2016:5:22-14:30:33 ssecillu7166.internal.lan barnyard: Initializing daemon mode -2016:6:5-21:33:08 ore5643.api.lan reverseproxy: [metco] [acom:high] [pid 2164:nim] ModSecurity: utaliqu compiled version="rsi"; loaded version="taliqui" -2016:6:20-04:35:42 ciun39.localdomain reverseproxy: [iatqu] [inBCSedu:high] [pid 4006:rorsit] AH00098: pid file tionemu overwritten -- Unclean shutdown of previous Apache run? -2016:7:4-11:38:16 atatnon6064.www.invalid reverseproxy: [magnid] [adol:low] [pid 1263:roide] AH00291: long lost child came home! (pid tem) -2016:7:18-18:40:50 gitse2463.www5.invalid aua: id=tvolup severity=low sys=sci sub=col name=web request blocked srcip=10.42.252.243 user=agnaaliq caller=est engine=mquisno -2016:8:2-01:43:25 httpproxy[2078]: [mol] sc_server_cmd (umdolors) decrypt failed -2016:8:16-08:45:59 oriosam6277.mail.localdomain frox: Listening on 10.169.5.162:6676 -2016:8:30-15:48:33 ptate3830.internal.localhost reverseproxy: [quamqua] [ntut:high] [pid 5996:meum] AH02572: Failed to configure at least one certificate and key for mini:Loremip -2016:9:13-22:51:07 nvo6105.invalid reverseproxy: [amquaer] [aqui:medium] [pid 3340:lpa] AH00020: Configuration Failed, isn -2016:9:28-05:53:42 afcd[2492]: Classifier configuration reloaded successfully -2016:10:12-12:56:16 edic2758.api.domain confd: id=olabori severity=medium sys=atatnon sub=lica name=secil client=uisnos facility=olores user=scipit srcip=10.54.169.175 version=1.5889 storage=onorumet object=ptatema class=eavolup type=ipsumq attributes=evitcount=tno node=iss account=taspe -2016:10:26-19:58:50 aua[32]: id=mmo severity=high sys=tlaboru sub=aeabillo name=checking if admin is enabled srcip=10.26.228.145 user=eruntmo caller=nimve engine=usanti -2016:11:10-03:01:24 sshd[2051]: Server listening on 10.59.215.207 port 6195. -2016:11:24-10:03:59 ectobeat3157.mail.local reverseproxy: [uasiarch] [Malor:low] [pid 170:cillumdo] AH02312: Fatal error initialising mod_ssl, ditau. -2016:12:8-17:06:33 ident2323.internal.corp reverseproxy: [hend] [remagna:high] [pid 873:aparia] AH01909: 10.144.21.112:90:epteurs server certificate does NOT include an ID which matches the server name -2016:12:23-00:09:07 ttenb4581.www.host httpproxy: [rem] main (exer) shutdown finished, exiting -2017:1:6-07:11:41 lapari5763.api.invalid frox: Listening on 10.103.2.48:4713 -2017:1:20-14:14:16 elites4713.www.localhost ulogd: id=serr severity=very-high sys=olore sub=onemul name=portscan detected action=deny fwrule=remeum seq=etur initf=lo6086 outitf=lo272 dstmac=01:00:5e:51:b9:4d srcmac=01:00:5e:15:3a:74 srcip=10.161.51.135 dstip=10.52.190.18 proto=isni length=quid tos=aUten prec=Duis ttl=uisq srcport=7807 dstport=165 tcpflags=accus info=CSed code=tiu type=wri -2017:2:3-21:16:50 sam1795.invalid reverseproxy: [lorese] [olupta:low] [pid 3338:iqui] AH02312: Fatal error initialising mod_ssl, animide. -2017:2:18-04:19:24 confd[10]: id=arch severity=high sys=data sub=ugits name=ittenb client=tobeatae facility=ntut user=llum srcip=10.232.108.32 version=1.5240 storage=idolo object=mqu class=mquido type=ende attributes=ntmollitcount=tisu node=ionofdeF account=rsp -2017:3:4-11:21:59 nostrum6305.internal.localhost astarosg_TVM: id=llitani severity=high sys=itametco sub=etcons name=web request blocked, forbidden url detectedaction=allow method=iuntN client=utfugi facility=ursintoc user=tio srcip=10.89.41.97 dstip=10.231.116.175 version=1.5146 storage=lup ad_domain=mipsamv object=exeacomm class=sequines type=cto attributes=cusacount=nderi node=tem account=tcustatuscode=eumiu cached=nim profile=pteurs filteraction=ercitati size=835 request=ptat url=https://mail.example.net/velillu/ecatcupi.txt?rsitamet=leumiur#ssequamn referer=https://example.com/taliqui/idi.txt?undeomn=ape#itaspe error=ari authtime=umtot dnstime=onemulla cattime=atquo avscantime=borio fullreqtime=equatD device=uidol auth=inculpa ua=ruredol exceptions=iadeseru group=loremagn category=acons categoryname=nimadmi content-type=lapa reputation=emoenimi application=iquipex app-id=mqu reason=onorume filename=abill file=ametcon extension=ofdeFini time=tasnu function=deny line=tionev message=uasiarch fwrule=velites seq=uredolor initf=lo1543 outitf=lo6683 dstmac=01:00:5e:8c:f2:06 srcmac=01:00:5e:6f:71:02 proto=plica length=asiarc tos=lor prec=;nvolupt ttl=dquia srcport=5334 dstport=1525 tcpflags=umfugiat info=quisnos prec=utf caller=dolor engine=dexe localip=nemul host=Duis583.api.local extra=eavolupt server=10.17.51.153 cookie=aperiame set-cookie=stenat -2017:3:18-18:24:33 xeaco7887.www.localdomain aua: id=hite severity=very-high sys=ugitsed sub=dminimve name=Packet accepted srcip=10.137.165.144 user=uptate caller=tot engine=reme -2017:4:2-01:27:07 reverseproxy[5430]: ARGS:userPermissions: [\\x22dashletAccessAlertingRecentAlertsPanel\\x22,\\x22dashletAccessAlerterTopAlertsDashlet\\x22,\\x22accessViewRules\\x22,\\x22deployLiveResources\\x22,\\x22vi..."] [severity [hostname "iscivel3512.invalid"] [uri "atcupi"] [unique_id "eriti"] -2017:4:16-08:29:41 sockd[6181]: dante/server 1.202 running -2017:4:30-15:32:16 dolor5799.home afcd: Classifier configuration reloaded successfully -2017:5:14-22:34:50 oreseosq1859.api.lan reverseproxy: [mmodic] [essequam:low] [pid 6691:ficiade] [client uiinea] [uianonn] virus daemon connection problem found in request https://www5.example.com/dantium/ors.htm?sinto=edi#eumiure, referer: https://example.com/adeser/mSe.gif?aute=rchite#rcit -2017:5:29-05:37:24 confd-sync[6908]: id=smoditem severity=very-high sys=tev sub=oNemoeni name=luptatem -2017:6:12-12:39:58 autodit272.www.localhost reverseproxy: [oriss] [imadmin:very-high] [pid 1121:urve] ModSecurity: sBonoru compiled version="everi"; loaded version="squ" -2017:6:26-19:42:33 rporis6787.www5.localdomain reverseproxy: [quasiarc] [pta:low] [pid 3705:liqu] [client ipsu] AH01114: siarch: failed to make connection to backend: 10.148.21.7 -2017:7:11-02:45:07 reprehe5661.www.lan reverseproxy: rManage\\x22,\\x22manageLiveSystemSettings\\x22,\\x22accessViewJobs\\x22,\\x22exportList\\..."] [ver "olor"] [maturity "corpo"] [accuracy "commod"] iumd [hostname "ntore4333.api.invalid"] [uri "sitv"] [unique_id "equam"] -2017:7:25-09:47:41 exim[2384]: aeca-ugitse-ameiu utei:caecat:lumquid oluptat sequatD163.internal.example [10.151.206.38]:5794 lits -2017:8:8-16:50:15 elillu5777.www5.lan pluto: "elaudant"[olup] 10.230.4.70 #ncu: starting keying attempt quaturve of an unlimited number -2017:8:22-23:52:50 ecatcup3022.mail.invalid xl2tpd: Inherited by nproide -2017:9:6-06:55:24 qui7797.www.host ipsec_starter: Starting strongSwan umet IPsec [starter]... -2017:9:20-13:57:58 nofdeFin2037.mail.example reverseproxy: [quatD] [nevol:high] [pid 3994:Sectio] [client tiumdol] [laud] cannot read reply: Operation now in progress (115), referer: https://example.org/tquov/natu.jpg?uianonnu=por#nve -2017:10:4-21:00:32 sockd[7264]: dante/server 1.3714 running -2017:10:19-04:03:07 eFinib2403.api.example reverseproxy: [utaliq] [sun:high] [pid 4074:uredol] [client quatD] [enimad] ecatcu while reading reply from cssd, referer: https://mail.example.org/urautod/eveli.html?rese=nonproi#doconse -2017:11:2-11:05:41 confd[4939]: id=acons severity=high sys=adipisc sub=omnisist name=orroqui client=sci facility=psamvolu user=itsedqui srcip=10.244.96.61 version=1.2707 storage=onevol object=ese class=reprehen type=Exce attributes=toccacount=tinvolu node=ecatc account=iumt -2017:11:16-18:08:15 named[1900]: reloading eddoei iono -2017:12:1-01:10:49 obeatae2042.www.domain reverseproxy: [dquian] [isaute:low] [pid 1853:utfugit] (70007)The ula specified has expired: [client quaUteni] AH01110: error reading response -2017:12:15-08:13:24 aerat1267.www5.example pop3proxy: Master started -2017:12:29-15:15:58 writt2238.internal.localdomain reverseproxy: [uaer] [aed:low] [pid 478:ain] [client scingeli] [uatDuis] mod_avscan_check_file_single_part() called with parameter filename=imip -2018:1:12-22:18:32 siutaliq4937.api.lan reverseproxy: [siutaliq] [urvel:very-high] [pid 7721:ntium] [imadmi] Hostname in dquiac request (liquide) does not match the server name (uatD) -2018:1:27-05:21:06 URID[7596]: T=BCSedut ------ 1 - [exit] accept: ametco -2018:2:10-12:23:41 astarosg_TVM[1090]: id=udex severity=low sys=iam sub=animi name=UDP flood detectedaction=allow method=nsectetu client=spici facility=untutl user=hen srcip=10.214.167.164 dstip=10.76.98.53 version=1.3726 storage=uovolup ad_domain=expl object=animi class=mdoloree type=mullamco attributes=tnulcount=ons node=radip account=amremapstatuscode=dolorsit cached=atisund profile=isnostru filteraction=quepo size=5693 request=nisi url=https://api.example.org/iono/secillum.txt?apariat=tse#enbyCi referer=https://example.com/eetdol/aut.jpg?pitlab=tutlabor#imadmi error=nculp authtime=quamnihi dnstime=nimadmi cattime=mquiado avscantime=agn fullreqtime=dip device=urmag auth=nim ua=laboreet exceptions=tutlabo group=incid category=der categoryname=totamrem content-type=eaqu reputation=itani application=mni app-id=runtmol reason=uaer filename=nor file=saut extension=olest time=volu function=block line=osam message=ncid fwrule=loremagn seq=uisau initf=lo1255 outitf=eth965 dstmac=01:00:5e:2f:c3:3e srcmac=01:00:5e:65:2d:fe proto=ictasun length=iumto tos=ciun prec=;prehe ttl=essec srcport=4562 dstport=2390 tcpflags=uaera info=nsequa prec=yCicero caller=orporis engine=oluptate localip=tesseq host=tenbyCi4371.www5.localdomain extra=spernatu server=10.98.126.206 cookie=tion set-cookie=tNeque -2018:2:24-19:26:15 ulogd[6722]: id=persp severity=medium sys=orev sub=lapa name=Packet logged action=allow fwrule=adminim seq=isiutali initf=lo7088 outitf=eth6357 dstmac=01:00:5e:9a:fe:91 srcmac=01:00:5e:78:1a:5a srcip=10.203.157.250 dstip=10.32.236.117 proto=turm length=quamei tos=nvento prec=nama ttl=ema srcport=6585 dstport=5550 tcpflags=xeacomm info=oriosa code=erspici type=oreeu -2018:3:11-02:28:49 ectob5542.www5.corp reverseproxy: [agni] [ivelit:high] [pid 7755:uovol] AH00959: ap_proxy_connect_backend disabling worker for (10.231.77.26) for volups -2018:3:25-09:31:24 iusmo901.www.home httpd: id=scivelit severity=high sys=untut sub=siu name=Authentication successfulaction=allow method=icons client=hende facility=umdol user=Sedutper srcip=10.2.24.156 dstip=10.113.78.101 version=1.2707 storage=amqua ad_domain=nsequatu object=aboNemoe class=mqu type=tse attributes=ntiumdcount=ueip node=amvo account=dolorsistatuscode=acc cached=quinesc profile=ulpaq filteraction=usa size=5474 request=tob url=https://www.example.org/imipsamv/doeiu.jpg?nderit=ficia#tru referer=https://mail.example.org/natuser/olupt.txt?ipsumqu=nsec#smo error=avolup authtime=litse dnstime=archit cattime=nde avscantime=tNequepo fullreqtime=byCicer device=imvenia auth=ipit ua=tdolorem exceptions=nderitin group=mquiado category=ssequa categoryname=nisist content-type=temvele reputation=ofd application=quam app-id=umdol reason=porincid filename=tisetqu file=pici extension=erit time=ehenderi function=block line=fugiatqu message=Duisaute fwrule=uptat seq=hende initf=lo3680 outitf=lo4358 dstmac=01:00:5e:0a:8f:6c srcmac=01:00:5e:34:8c:d2 proto=mnis length=ainci tos=aturve prec=;tiumdol ttl=mporain srcport=6938 dstport=6939 tcpflags=dut info=aecons prec=tionemu caller=edictasu engine=quipexea localip=orsit host=tenima5715.api.example extra=snisiut server=10.92.93.236 cookie=amr set-cookie=mfug port=7174 query=exerc uid=ntoccae -2018:4:8-16:33:58 astarosg_TVM[6463]: id=user severity=low sys=sequamn sub=adeseru name=File extension warned and proceededaction=accept method=mquisn client=ulamcol facility=nulamcol user=atatno srcip=10.180.169.49 dstip=10.206.69.71 version=1.3155 storage=risni ad_domain=ccaecat object=dtemp class=onproid type=ica attributes=mnisiscount=edolor node=nonnumqu account=iscivelistatuscode=urve cached=sundeomn profile=tasu filteraction=equunt size=3144 request=ilmo url=https://mail.example.net/isqua/deF.html?iameaq=orainci#adm referer=https://api.example.org/mremap/ate.htm?tlabor=cidunt#ria error=tessec authtime=cupida dnstime=ciade cattime=busBonor avscantime=enima fullreqtime=emseq device=osamni auth=umetMa ua=equatDui exceptions=its group=setquas category=nti categoryname=osamnis content-type=atisetqu reputation=ciduntut application=atisu app-id=edutpe reason=architec filename=incul file=tevelit extension=emse time=eipsaqua function=cancel line=suntincu message=lore fwrule=equatu seq=enbyCi initf=enp0s566 outitf=lo2179 dstmac=01:00:5e:2c:9d:65 srcmac=01:00:5e:1a:03:f5 proto=orema length=iusmo tos=uunturm prec=;mSect ttl=avolupta srcport=3308 dstport=1402 tcpflags=dolo info=tsed prec=corpori caller=cillumd engine=umdol localip=turmagn host=mni4032.lan extra=amrem server=10.202.65.2 cookie=queporr set-cookie=oide -2018:4:22-23:36:32 iscing6960.api.invalid reverseproxy: [emipsu] [incidu:very-high] [pid 5350:itation] SSL Library Error: error:itasper:failure -2018:5:7-06:39:06 httpd[793]: [ruredo:success] [pid nculpaq:mides] [client iconseq] ModSecurity: Warning. nidolo [file "runtmoll"] [line "tuserror"] [id "utlabo"] [rev "scip"] [msg "imvenia"] [severity "low"] [ver "1.6420"] [maturity "nisi"] [accuracy "seq"] [tag "ors"] [hostname "olupta3647.host"] [uri "uaUteni"] [unique_id "gitsedqu"]amqu -2018:5:21-13:41:41 named[6633]: FORMERR resolving 'iavolu7814.www5.localhost': 10.194.12.83#elit -2018:6:4-20:44:15 astarosg_TVM[5792]: id=elitess severity=low sys=amqua sub=mavenia name=checking if admin is enabledaction=cancel method=doc client=teurs facility=eturadi user=eturadip srcip=10.33.138.154 dstip=10.254.28.41 version=1.4256 storage=volupta ad_domain=dolor object=dolorsit class=tfugits type=lor attributes=oremcount=utper node=ueips account=umqustatuscode=ntexpli cached=siuta profile=porincid filteraction=itame size=1026 request=fugiat url=https://www5.example.org/etcons/aecatc.jpg?ditem=tut#oditautf referer=https://internal.example.org/eddoei/iatqu.htm?itessec=dat#tdol error=emul authtime=ariatu dnstime=luptate cattime=umdolore avscantime=iutaliq fullreqtime=oriosamn device=oluptate auth=tcu ua=mmodo exceptions=rauto group=lup category=orem categoryname=tutl content-type=iusmo reputation=uiavolu application=eri app-id=pis reason=riosam filename=isa file=nonnum extension=Nemoenim time=itati function=cancel line=nes message=atvolupt fwrule=umwritt seq=uae initf=enp0s3792 outitf=lo2114 dstmac=01:00:5e:24:b8:9f srcmac=01:00:5e:a1:a3:9f proto=bil length=itten tos=icer prec=;dolo ttl=siutaliq srcport=1455 dstport=6937 tcpflags=pexeaco info=ercitati prec=dexea caller=tasnul engine=onu localip=orisnisi host=obea2960.mail.corp extra=dolor server=10.45.12.53 cookie=etdo set-cookie=edictas -2018:6:19-03:46:49 frox[7744]: Listening on 10.99.134.49:2274 -2018:7:3-10:49:23 olli5982.www.test reverseproxy: [asp] [uatDui:medium] [pid 212:unde] [client raut] [suscip] virus daemon error found in request ectetu, referer: https://example.com/ariat/ptatemU.txt?cusan=ueipsaq#upid -2018:7:17-17:51:58 nsecte3644.internal.test reverseproxy: [tutla] [isund:high] [pid 3136:uidex] [client uptate] Invalid signature, cookie: JSESSIONID -2018:8:1-00:54:32 confd[4157]: id=onseq severity=very-high sys=siutaliq sub=aliqu name=serro client=ctet facility=umiurere user=antium srcip=10.32.85.21 version=1.7852 storage=eaco object=onp class=ectetur type=ione attributes=utlaborecount=nci node=acommodi account=etconsec -2018:8:15-07:57:06 econseq7119.www.home sshd: error: Could not get shadow information for NOUSER -2018:8:29-14:59:40 ant2543.www5.lan reverseproxy: [uaturve] [lapa:high] [pid 3669:idu] [client sed] [utem] cannot read reply: Operation now in progress (115), referer: https://example.com/oremagn/ehenderi.htm?mdolo=ionul#oeiusmo -2018:9:12-22:02:15 pluto[7138]: | sent accept notification olore with seqno = urEx -2018:9:27-05:04:49 httpd[6562]: id=iurere severity=medium sys=erc sub=atu name=http accessaction=accept method=odte client=uis facility=sedquia user=reetd srcip=10.210.175.52 dstip=10.87.14.186 version=1.7641 storage=tasu ad_domain=mquae object=CSedu class=atae type=aeconseq attributes=boNemocount=duntutla node=mqu account=inimastatuscode=emipsum cached=venia profile=Loremi filteraction=uisnostr size=849 request=vol url=https://internal.example.com/ritat/dipi.jpg?aliquide=aliqui#agnaaliq referer=https://api.example.org/Bonorume/emeumfu.txt?iuntNequ=ender#quid error=mipsa authtime=teturad dnstime=nimide cattime=spernat avscantime=nevolu fullreqtime=itectobe device=rroq auth=itessequ ua=uunt exceptions=pic group=unt category=emUt categoryname=eiru content-type=sauteir reputation=pic application=caecatc app-id=iarc reason=emquia filename=duntutl file=idi extension=reetdo time=pidatatn function=cancel line=ncul message=mcorpor fwrule=ofd seq=lapariat initf=eth65 outitf=lo3615 dstmac=01:00:5e:b3:e3:90 srcmac=01:00:5e:0e:b3:8e proto=consequ length=min tos=riame prec=;gnaal ttl=nti srcport=1125 dstport=605 tcpflags=utlab info=colabo prec=ditem caller=did engine=BCS localip=idex host=nisiuta4810.api.test extra=apa server=10.85.200.58 cookie=esse set-cookie=idexeac port=2294 query=iatquovo uid=rExce -2018:10:11-12:07:23 itametc1599.api.test ulogd: id=itaedi severity=low sys=ore sub=ips name=Authentication successful action=block fwrule=iamqu seq=aboN initf=eth2679 outitf=enp0s1164 dstmac=01:00:5e:c3:8a:24 srcmac=01:00:5e:5a:9d:a9 srcip=10.133.45.45 dstip=10.115.166.48 proto=utaliq length=icer tos=essequ prec=oeiu ttl=nsequa srcport=4180 dstport=4884 tcpflags=squa info=etM code=eve type=iru -2018:10:25-19:09:57 tiumt5462.mail.localhost sshd: Invalid user admin from runt -2018:11:9-02:12:32 vol1450.internal.host sshd: Server listening on 10.71.184.162 port 3506. -2018:11:23-09:15:06 ipsec_starter[178]: IP address or index of physical interface changed -> reinit of ipsec interface -2018:12:7-16:17:40 rporissu573.api.test reverseproxy: [exercita] [emaperi:very-high] [pid 5943:ddoei] AH02312: Fatal error initialising mod_ssl, nihi. -2018:12:21-23:20:14 nostru774.corp URID: T=tatnonp ------ 1 - [exit] allow: natuserr -2019:1:5-06:22:49 ipsec_starter[6226]: IP address or index of physical interface changed -> reinit of ipsec interface -2019:1:19-13:25:23 httpd[5037]: [iadese:unknown] [pid isundeo:emq] [client rehender] ModSecurity: Warning. uat [file "apa"] [line "tani"] [id "per"] [rev "ngelitse"] [msg "olorsita"] [severity "medium"] [ver "1.7102"] [maturity "apariat"] [accuracy "iuntNequ"] [tag "rExc"] [hostname "lorsita2216.www5.example"] [uri "turvelil"] [unique_id "velitsed"]rau -2019:2:2-20:27:57 sum2208.host reverseproxy: [eir] [nia:medium] [pid 4346:mco] [client ritinvol] [quioffi] mod_avscan_check_file_single_part() called with parameter filename=quamquae -2019:2:17-03:30:32 ore6843.local reverseproxy: [usmodite] [aveniam:medium] [pid 5126:xplicab] [client taev] No signature found, cookie: dictasu -2019:3:3-10:33:06 Sedu1610.mail.corp reverseproxy: [audant] [porr:medium] [pid 7442:tation] [client uunturma] AH01114: cons: failed to make connection to backend: 10.177.35.133 -2019:3:17-17:35:40 corpo6737.example reverseproxy: [officiad] [aliquide:very-high] [pid 6600:errorsi] [client raincidu] [orincidi] cannot connect: failure (111) -2019:4:1-00:38:14 pop3proxy[6854]: Master started -2019:4:15-07:40:49 eratvol314.www.home pop3proxy: Master started -2019:4:29-14:43:23 utemvele1838.mail.test reverseproxy: [xplicabo] [aco:high] [pid 2389:ratione] [client nrepr] ModSecurity: Warning. uipex [file "alorumw"] [line "nibus"] [id "eiusmo"] [msg "rci"] [hostname "seosquir715.local"] [uri "ercitati"] [unique_id "uiration"] -2019:5:13-21:45:57 ulapari2656.local reverseproxy: [itessec] [non:very-high] [pid 2237:licaboN] [client nvol] [moenimip] cannot connect: failure (111) -2019:5:28-04:48:31 reverseproxy[4278]: [ritat] [iscinge:very-high] [pid 4264:rroquisq] [client tnonpro] [nimv] erunt while reading reply from cssd, referer: https://example.org/etcon/ipitlab.gif?utlabore=suscipi#tlabor -2019:6:11-11:51:06 URID[7418]: T=xer ------ 1 - [exit] cancel: onemul -2019:6:25-18:53:40 pluto[7201]: | handling event ips for 10.165.217.56 "econse" #otamr -2019:7:10-01:56:14 stla2856.host reverseproxy: [onpro] [adolo:very-high] [pid 7766:siste] ModSecurity for Apache/nisiut (ostr) configured. -2019:7:24-08:58:48 peri6748.www5.domain reverseproxy: [cingeli] [esseq:high] [pid 2404:aquae] AH00098: pid file otamrema overwritten -- Unclean shutdown of previous Apache run? -2019:8:7-16:01:23 tnon5442.internal.test reverseproxy: [ive] [tquido:very-high] [pid 6108:taliquip] AH00295: caught accept, ectetu -2019:8:21-23:03:57 ariatu2606.www.host reverseproxy: [quamestq] [umquid:very-high] [pid 7690:rem] [client its] [inv] not all the file sent to the client: rin, referer: https://example.org/tation/tutlabo.jpg?amvo=ullamco#tati -2019:9:5-06:06:31 imv1805.api.host ulogd: id=oenim severity=very-high sys=iaturExc sub=orsit name=ICMP flood detected action=cancel fwrule=eos seq=quameius initf=lo4665 outitf=lo3422 dstmac=01:00:5e:d6:f3:bc srcmac=01:00:5e:87:02:08 srcip=10.96.243.231 dstip=10.248.62.55 proto=ugiat length=quiin tos=apar prec=eleumiur ttl=chite srcport=5632 dstport=4206 tcpflags=tevelit info=etc code=lorem type=temvele -2019:9:19-13:09:05 rita600.www5.localdomain reverseproxy: [ini] [elite:high] [pid 7650:mnisiut] AH00959: ap_proxy_connect_backend disabling worker for (10.132.101.158) for cipitlabs -2019:10:3-20:11:40 sshd[2014]: Did not receive identification string from rroq -2019:10:18-03:14:14 admini1122.www.local reverseproxy: [ritte] [umwritte:very-high] [pid 1817:atu] (13)failure: [client vol] AH01095: prefetch request body failed to 10.96.193.132:5342 (orumwr) from bori () -2019:11:1-10:16:48 confd[2475]: id=utaliqu severity=low sys=xplicabo sub=quamni name=dol client=sisten facility=remeumf user=acommod srcip=10.96.200.83 version=1.7416 storage=sper object=asia class=roident type=olorem attributes=teursintcount=evelites node=nostr account=lapariat -2019:11:15-17:19:22 emvel4391.localhost sshd: Did not receive identification string from quelaud -2019:11:30-00:21:57 confd-sync[5454]: id=smodite severity=high sys=utpersp sub=rnatu name=ico -2019:12:14-07:24:31 untinc5531.www5.test sshd: error: Could not get shadow information for NOUSER diff --git a/x-pack/filebeat/module/sophos/utm/test/generated.log-expected.json b/x-pack/filebeat/module/sophos/utm/test/generated.log-expected.json deleted file mode 100644 index efb44a7b666..00000000000 --- a/x-pack/filebeat/module/sophos/utm/test/generated.log-expected.json +++ /dev/null @@ -1,3704 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T08:09:59.000Z", - "event.code": "smtpd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:1:29-06:09:59 localhost.localdomain smtpd[905]: MASTER[nnumqua]: QR globally disabled, status one set to 'disabled'", - "fileset.name": "utm", - "host.name": "localhost.localdomain", - "input.type": "log", - "log.offset": 0, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 905, - "related.hosts": [ - "localhost.localdomain" - ], - "rsa.internal.event_desc": "smtpd: MASTER:QR globally disabled, status one set to disabled.", - "rsa.internal.messageid": "smtpd", - "rsa.network.alias_host": [ - "localhost.localdomain" - ], - "rsa.time.event_time": "2016-01-29T08:09:59.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-02-12T15:12:33.000Z", - "destination.address": "ercit2385.internal.home", - "destination.ip": "10.47.202.102", - "destination.mac": "01:00:5e:de:94:f6", - "destination.port": 3920, - "event.action": "block", - "event.code": "astarosg_TVM", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:2:12-13:12:33 astarosg_TVM[5716]: id=ommod severity=medium sys=inima sub=tlabo name=web request blocked, forbidden application detectedaction=accept method=ugiatnu client=stiae facility=nofdeF user=sunt srcip=10.57.170.140 dstip=10.213.231.72 version=1.5102 storage=emips ad_domain=imadmi object=ostrume class=molest type=upt attributes=uiineavocount=tisetq node=irati account=icistatuscode=giatquov cached=eritquii profile=dexeac filteraction=iscinge size=6992 request=oreseos url=https://mail.example.net/tati/utaliqu.html?iquaUten=santium#iciatisu referer=https://www5.example.org/eporroqu/uat.txt?atquovo=suntinc#xeac error=nidolo authtime=tatn dnstime=eli cattime=nnu avscantime=dolo fullreqtime=Loremip device=idolor auth=emeumfu ua=CSed exceptions=lupt group=psaquae category=oinBCSe categoryname=mnisist content-type=sedd reputation=uatD application=iunt app-id=temveleu reason=colabo filename=eme file=numqu extension=qui time=civeli function=block line=agnaali message=gnam fwrule=tat seq=ipitla initf=enp0s7281 outitf=enp0s7084 dstmac=01:00:5e:de:94:f6 srcmac=01:00:5e:1d:c1:c0 proto=den length=tutla tos=olorema prec=;iades ttl=siarchi srcport=2289 dstport=3920 tcpflags=mqu info=apariat prec=tlabore caller=untmolli engine=remi localip=saute host=ercit2385.internal.home extra=run server=10.47.202.102 cookie=quirat set-cookie=llu", - "file.directory": "emips", - "file.extension": "qui", - "file.name": "numqu", - "file.size": 6992, - "fileset.name": "utm", - "group.name": "psaquae", - "http.request.referrer": "https://www5.example.org/eporroqu/uat.txt?atquovo=suntinc#xeac", - "input.type": "log", - "log.level": "medium", - "log.offset": 121, - "observer.egress.interface.name": "enp0s7084", - "observer.ingress.interface.name": "enp0s7281", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.5102", - "process.pid": 5716, - "related.hosts": [ - "ercit2385.internal.home" - ], - "related.ip": [ - "10.47.202.102", - "10.57.170.140" - ], - "related.user": [ - "dexeac", - "icistatuscode=giatquov", - "sunt" - ], - "rsa.db.index": "run", - "rsa.identity.logon_type": "nofdeF", - "rsa.internal.event_desc": "web", - "rsa.internal.messageid": "astarosg_TVM", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "block", - "ugiatnu" - ], - "rsa.misc.comments": "colabo", - "rsa.misc.content_type": "sedd", - "rsa.misc.context": "apariat", - "rsa.misc.group": "psaquae", - "rsa.misc.group_object": "molest", - "rsa.misc.node": "irati", - "rsa.misc.obj_name": "uiineavocount=tisetq", - "rsa.misc.obj_type": "upt", - "rsa.misc.policy_id": "tat", - "rsa.misc.policy_name": "iscinge", - "rsa.misc.rule": "ommod", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.5102", - "rsa.misc.vsys": "inima", - "rsa.network.dinterface": "enp0s7084", - "rsa.network.host_dst": "ercit2385.internal.home", - "rsa.network.sinterface": "enp0s7281", - "rsa.time.event_time": "2016-02-12T15:12:33.000Z", - "rsa.web.web_cookie": "quirat", - "service.name": "tlabo", - "service.type": "sophos", - "source.ip": "10.57.170.140", - "source.mac": "01:00:5e:1d:c1:c0", - "source.port": 2289, - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "mail.example.net", - "url.extension": "html", - "url.fragment": "iciatisu", - "url.original": "https://mail.example.net/tati/utaliqu.html?iquaUten=santium#iciatisu", - "url.path": "/tati/utaliqu.html", - "url.query": "iquaUten=santium", - "url.scheme": "https", - "user.name": "sunt" - }, - { - "@timestamp": "2016-02-26T22:15:08.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:2:26-20:15:08 eirure7587.internal.localhost reverseproxy: [mpori] [aaliquaU:medium] [pid 3905:lpaqui] (22)No form context found: [client sitame] No form context found when parsing iadese tag, referer: https://api.example.com/utla/utei.htm?oei=tlabori#oin", - "fileset.name": "utm", - "host.name": "eirure7587.internal.localhost", - "http.request.referrer": "https://api.example.com/utla/utei.htm?oei=tlabori#oin", - "input.type": "log", - "log.level": "medium", - "log.offset": 1470, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 3905, - "related.hosts": [ - "eirure7587.internal.localhost" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "aaliquaU", - "rsa.misc.result": "No form context found", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "eirure7587.internal.localhost" - ], - "rsa.network.gateway": "sitame", - "rsa.time.event_time": "2016-02-26T22:15:08.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-03-12T05:17:42.000Z", - "event.code": "confd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:3:12-03:17:42 data4478.api.lan confd: id=iquipex severity=very-high sys=uradip sub=wri name=bor client=occa facility=stquidol user=itquiin srcip=10.106.239.55 version=1.3129 storage=atevel object=nsecte class=itame type=eumfug attributes=litcount=asun node=estia account=eaq", - "file.directory": "atevel", - "fileset.name": "utm", - "host.name": "data4478.api.lan", - "input.type": "log", - "log.level": "very-high", - "log.offset": 1730, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.3129", - "related.hosts": [ - "data4478.api.lan" - ], - "related.ip": [ - "10.106.239.55" - ], - "related.user": [ - "eaq", - "itquiin" - ], - "rsa.identity.logon_type": "stquidol", - "rsa.internal.event_desc": "bor", - "rsa.internal.messageid": "confd", - "rsa.misc.group_object": "itame", - "rsa.misc.node": "estia", - "rsa.misc.obj_name": "litcount=asun", - "rsa.misc.obj_type": "eumfug", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.3129", - "rsa.network.alias_host": [ - "data4478.api.lan" - ], - "rsa.time.event_time": "2016-03-12T05:17:42.000Z", - "service.name": "wri", - "service.type": "sophos", - "source.ip": "10.106.239.55", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "itquiin" - }, - { - "@timestamp": "2016-03-26T12:20:16.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:3:26-10:20:16 ctetura3009.www5.corp reverseproxy: [lita] [adeseru:medium] [pid 7692:eaq] amest configured -- corp normal operations", - "fileset.name": "utm", - "host.name": "ctetura3009.www5.corp", - "input.type": "log", - "log.level": "medium", - "log.offset": 2010, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7692, - "related.hosts": [ - "ctetura3009.www5.corp" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "corp", - "rsa.misc.event_id": "AH00292", - "rsa.misc.event_log": "adeseru", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "ctetura3009.www5.corp" - ], - "rsa.time.event_time": "2016-03-26T12:20:16.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-04-09T19:22:51.000Z", - "event.code": "smtpd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:4:9-17:22:51 localhost smtpd[1411]: MASTER[inculpa]: QR globally disabled, status one set to 'disabled'", - "fileset.name": "utm", - "host.name": "localhost", - "input.type": "log", - "log.offset": 2147, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 1411, - "related.hosts": [ - "localhost" - ], - "rsa.internal.event_desc": "smtpd: MASTER:QR globally disabled, status one set to disabled.", - "rsa.internal.messageid": "smtpd", - "rsa.network.alias_host": [ - "localhost" - ], - "rsa.time.event_time": "2016-04-09T19:22:51.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-04-24T02:25:25.000Z", - "event.code": "httpproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:4:24-00:25:25 httpproxy[176]: [nse] disk_cache_zap (non) paquioff", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 2256, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 176, - "rsa.db.index": "paquioff", - "rsa.internal.event_desc": "httpproxy:disk_cache_zap related message.", - "rsa.internal.messageid": "httpproxy", - "rsa.time.event_time": "2016-04-24T02:25:25.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-05-08T09:27:59.000Z", - "destination.ip": "10.18.13.211", - "destination.port": 205, - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:5:8-07:27:59 ptasnu6684.mail.lan reverseproxy: [orumSe] [boree:low] [pid 945:rQuisau] AH01915: Init: (10.18.13.211:205) You configured ofdeFini(irat) on the onev(aturauto) port!", - "fileset.name": "utm", - "host.name": "ptasnu6684.mail.lan", - "input.type": "log", - "log.level": "low", - "log.offset": 2327, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 945, - "related.hosts": [ - "ptasnu6684.mail.lan" - ], - "related.ip": [ - "10.18.13.211" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.comments": "Invalid port configuration", - "rsa.misc.event_log": "boree", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "ptasnu6684.mail.lan" - ], - "rsa.network.network_service": "ofdeFini", - "rsa.time.event_time": "2016-05-08T09:27:59.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-05-22T16:30:33.000Z", - "event.code": "barnyard", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:5:22-14:30:33 ssecillu7166.internal.lan barnyard: Initializing daemon mode", - "fileset.name": "utm", - "host.name": "ssecillu7166.internal.lan", - "input.type": "log", - "log.offset": 2510, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "ssecillu7166.internal.lan" - ], - "rsa.internal.event_desc": "barnyard:Initializing daemon mode", - "rsa.internal.messageid": "barnyard", - "rsa.network.alias_host": [ - "ssecillu7166.internal.lan" - ], - "rsa.time.event_time": "2016-05-22T16:30:33.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-06-05T23:33:08.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:6:5-21:33:08 ore5643.api.lan reverseproxy: [metco] [acom:high] [pid 2164:nim] ModSecurity: utaliqu compiled version=\"rsi\"; loaded version=\"taliqui\"", - "fileset.name": "utm", - "host.name": "ore5643.api.lan", - "input.type": "log", - "log.level": "high", - "log.offset": 2590, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2164, - "related.hosts": [ - "ore5643.api.lan" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "acom", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ore5643.api.lan" - ], - "rsa.time.event_time": "2016-06-05T23:33:08.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-06-20T06:35:42.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:6:20-04:35:42 ciun39.localdomain reverseproxy: [iatqu] [inBCSedu:high] [pid 4006:rorsit] AH00098: pid file tionemu overwritten -- Unclean shutdown of previous Apache run?", - "file.name": "tionemu", - "fileset.name": "utm", - "host.name": "ciun39.localdomain", - "input.type": "log", - "log.level": "high", - "log.offset": 2743, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 4006, - "related.hosts": [ - "ciun39.localdomain" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.context": "Unclean shutdown", - "rsa.misc.event_id": "AH00098", - "rsa.misc.event_log": "inBCSedu", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ciun39.localdomain" - ], - "rsa.time.event_time": "2016-06-20T06:35:42.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-07-04T13:38:16.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:7:4-11:38:16 atatnon6064.www.invalid reverseproxy: [magnid] [adol:low] [pid 1263:roide] AH00291: long lost child came home! (pid tem)", - "fileset.name": "utm", - "host.name": "atatnon6064.www.invalid", - "input.type": "log", - "log.level": "low", - "log.offset": 2919, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 1263, - "related.hosts": [ - "atatnon6064.www.invalid" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_id": "AH00291", - "rsa.misc.event_log": "adol", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "atatnon6064.www.invalid" - ], - "rsa.time.event_time": "2016-07-04T13:38:16.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-07-18T20:40:50.000Z", - "event.code": "aua", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:7:18-18:40:50 gitse2463.www5.invalid aua: id=tvolup severity=low sys=sci sub=col name=web request blocked srcip=10.42.252.243 user=agnaaliq caller=est engine=mquisno", - "fileset.name": "utm", - "host.name": "gitse2463.www5.invalid", - "input.type": "log", - "log.level": "low", - "log.offset": 3058, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "gitse2463.www5.invalid" - ], - "related.user": [ - "agnaaliq" - ], - "rsa.internal.event_desc": "web", - "rsa.internal.messageid": "aua", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "gitse2463.www5.invalid" - ], - "rsa.time.event_time": "2016-07-18T20:40:50.000Z", - "service.name": "col", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "agnaaliq" - }, - { - "@timestamp": "2016-08-02T03:43:25.000Z", - "event.code": "httpproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:8:2-01:43:25 httpproxy[2078]: [mol] sc_server_cmd (umdolors) decrypt failed", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 3229, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2078, - "rsa.internal.event_desc": "httpproxy:decrypt failed.", - "rsa.internal.messageid": "httpproxy", - "rsa.time.event_time": "2016-08-02T03:43:25.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-08-16T10:45:59.000Z", - "event.code": "frox", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:8:16-08:45:59 oriosam6277.mail.localdomain frox: Listening on 10.169.5.162:6676", - "fileset.name": "utm", - "host.name": "oriosam6277.mail.localdomain", - "input.type": "log", - "log.offset": 3310, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "oriosam6277.mail.localdomain" - ], - "related.ip": [ - "10.169.5.162" - ], - "rsa.internal.event_desc": "frox:FTP Proxy listening on port.", - "rsa.internal.messageid": "frox", - "rsa.network.alias_host": [ - "oriosam6277.mail.localdomain" - ], - "rsa.time.event_time": "2016-08-16T10:45:59.000Z", - "service.type": "sophos", - "source.ip": "10.169.5.162", - "source.port": 6676, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-08-30T17:48:33.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:8:30-15:48:33 ptate3830.internal.localhost reverseproxy: [quamqua] [ntut:high] [pid 5996:meum] AH02572: Failed to configure at least one certificate and key for mini:Loremip", - "fileset.name": "utm", - "host.name": "ptate3830.internal.localhost", - "input.type": "log", - "log.level": "high", - "log.offset": 3395, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 5996, - "related.hosts": [ - "ptate3830.internal.localhost" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_id": "AH02572", - "rsa.misc.event_log": "ntut", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ptate3830.internal.localhost" - ], - "rsa.time.event_time": "2016-08-30T17:48:33.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-09-14T00:51:07.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:9:13-22:51:07 nvo6105.invalid reverseproxy: [amquaer] [aqui:medium] [pid 3340:lpa] AH00020: Configuration Failed, isn", - "fileset.name": "utm", - "host.name": "nvo6105.invalid", - "input.type": "log", - "log.level": "medium", - "log.offset": 3574, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 3340, - "related.hosts": [ - "nvo6105.invalid" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "isn", - "rsa.misc.event_id": "AH00020", - "rsa.misc.event_log": "aqui", - "rsa.misc.result": "Configuration Failed", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "nvo6105.invalid" - ], - "rsa.time.event_time": "2016-09-14T00:51:07.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-09-28T07:53:42.000Z", - "event.code": "afcd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:9:28-05:53:42 afcd[2492]: Classifier configuration reloaded successfully", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 3697, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2492, - "rsa.internal.event_desc": "afcd: IM/P2P Classifier configuration reloaded successfully.", - "rsa.internal.messageid": "afcd", - "rsa.time.event_time": "2016-09-28T07:53:42.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-10-12T14:56:16.000Z", - "event.code": "confd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:10:12-12:56:16 edic2758.api.domain confd: id=olabori severity=medium sys=atatnon sub=lica name=secil client=uisnos facility=olores user=scipit srcip=10.54.169.175 version=1.5889 storage=onorumet object=ptatema class=eavolup type=ipsumq attributes=evitcount=tno node=iss account=taspe", - "file.directory": "onorumet", - "fileset.name": "utm", - "host.name": "edic2758.api.domain", - "input.type": "log", - "log.level": "medium", - "log.offset": 3775, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.5889", - "related.hosts": [ - "edic2758.api.domain" - ], - "related.ip": [ - "10.54.169.175" - ], - "related.user": [ - "scipit", - "taspe" - ], - "rsa.identity.logon_type": "olores", - "rsa.internal.event_desc": "secil", - "rsa.internal.messageid": "confd", - "rsa.misc.group_object": "eavolup", - "rsa.misc.node": "iss", - "rsa.misc.obj_name": "evitcount=tno", - "rsa.misc.obj_type": "ipsumq", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.5889", - "rsa.network.alias_host": [ - "edic2758.api.domain" - ], - "rsa.time.event_time": "2016-10-12T14:56:16.000Z", - "service.name": "lica", - "service.type": "sophos", - "source.ip": "10.54.169.175", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "scipit" - }, - { - "@timestamp": "2016-10-26T21:58:50.000Z", - "event.code": "aua", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:10:26-19:58:50 aua[32]: id=mmo severity=high sys=tlaboru sub=aeabillo name=checking if admin is enabled srcip=10.26.228.145 user=eruntmo caller=nimve engine=usanti", - "fileset.name": "utm", - "input.type": "log", - "log.level": "high", - "log.offset": 4064, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 32, - "related.user": [ - "eruntmo" - ], - "rsa.internal.event_desc": "checking", - "rsa.internal.messageid": "aua", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2016-10-26T21:58:50.000Z", - "service.name": "aeabillo", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "eruntmo" - }, - { - "@timestamp": "2016-11-10T05:01:24.000Z", - "event.code": "sshd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:11:10-03:01:24 sshd[2051]: Server listening on 10.59.215.207 port 6195.", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 4233, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2051, - "related.ip": [ - "10.59.215.207" - ], - "rsa.internal.event_desc": "sshd:Server listening; restarting.", - "rsa.internal.messageid": "sshd", - "rsa.time.event_time": "2016-11-10T05:01:24.000Z", - "service.type": "sophos", - "source.ip": "10.59.215.207", - "source.port": 6195, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-11-24T12:03:59.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:11:24-10:03:59 ectobeat3157.mail.local reverseproxy: [uasiarch] [Malor:low] [pid 170:cillumdo] AH02312: Fatal error initialising mod_ssl, ditau.", - "fileset.name": "utm", - "host.name": "ectobeat3157.mail.local", - "input.type": "log", - "log.level": "low", - "log.offset": 4310, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 170, - "related.hosts": [ - "ectobeat3157.mail.local" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "ditau", - "rsa.misc.event_id": "AH02312", - "rsa.misc.event_log": "Malor", - "rsa.misc.result": "Fatal error", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "ectobeat3157.mail.local" - ], - "rsa.time.event_time": "2016-11-24T12:03:59.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-12-08T19:06:33.000Z", - "destination.ip": "10.144.21.112", - "destination.port": 90, - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:12:8-17:06:33 ident2323.internal.corp reverseproxy: [hend] [remagna:high] [pid 873:aparia] AH01909: 10.144.21.112:90:epteurs server certificate does NOT include an ID which matches the server name", - "fileset.name": "utm", - "host.name": "ident2323.internal.corp", - "input.type": "log", - "log.level": "high", - "log.offset": 4460, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 873, - "related.hosts": [ - "ident2323.internal.corp" - ], - "related.ip": [ - "10.144.21.112" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.comments": "server certificate has a different hostname from actual hostname", - "rsa.misc.event_id": "AH01909", - "rsa.misc.event_log": "remagna", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ident2323.internal.corp" - ], - "rsa.time.event_time": "2016-12-08T19:06:33.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2016-12-23T02:09:07.000Z", - "event.code": "httpproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2016:12:23-00:09:07 ttenb4581.www.host httpproxy: [rem] main (exer) shutdown finished, exiting", - "fileset.name": "utm", - "host.name": "ttenb4581.www.host", - "input.type": "log", - "log.offset": 4662, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "ttenb4581.www.host" - ], - "rsa.internal.event_desc": "httpproxy:shutdown finished, exiting.", - "rsa.internal.messageid": "httpproxy", - "rsa.network.alias_host": [ - "ttenb4581.www.host" - ], - "rsa.time.event_time": "2016-12-23T02:09:07.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-01-06T09:11:41.000Z", - "event.code": "frox", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:1:6-07:11:41 lapari5763.api.invalid frox: Listening on 10.103.2.48:4713", - "fileset.name": "utm", - "host.name": "lapari5763.api.invalid", - "input.type": "log", - "log.offset": 4757, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "lapari5763.api.invalid" - ], - "related.ip": [ - "10.103.2.48" - ], - "rsa.internal.event_desc": "frox:FTP Proxy listening on port.", - "rsa.internal.messageid": "frox", - "rsa.network.alias_host": [ - "lapari5763.api.invalid" - ], - "rsa.time.event_time": "2017-01-06T09:11:41.000Z", - "service.type": "sophos", - "source.ip": "10.103.2.48", - "source.port": 4713, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-01-20T16:14:16.000Z", - "destination.ip": "10.52.190.18", - "destination.mac": "01:00:5e:51:b9:4d", - "destination.port": 165, - "event.code": "ulogd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:1:20-14:14:16 elites4713.www.localhost ulogd: id=serr severity=very-high sys=olore sub=onemul name=portscan detected action=deny fwrule=remeum seq=etur initf=lo6086 outitf=lo272 dstmac=01:00:5e:51:b9:4d srcmac=01:00:5e:15:3a:74 srcip=10.161.51.135 dstip=10.52.190.18 proto=isni length=quid tos=aUten prec=Duis ttl=uisq srcport=7807 dstport=165 tcpflags=accus info=CSed code=tiu type=wri", - "fileset.name": "utm", - "host.name": "elites4713.www.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 4834, - "observer.egress.interface.name": "lo272", - "observer.ingress.interface.name": "lo6086", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "elites4713.www.localhost" - ], - "related.ip": [ - "10.161.51.135", - "10.52.190.18" - ], - "rsa.internal.event_desc": "portscan", - "rsa.internal.messageid": "ulogd", - "rsa.investigations.ec_activity": "Scan", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "TEV", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.context": "CSed", - "rsa.misc.policy_id": "remeum", - "rsa.misc.rule": "serr", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "olore", - "rsa.network.alias_host": [ - "elites4713.www.localhost" - ], - "rsa.network.dinterface": "lo272", - "rsa.network.network_service": "onemul", - "rsa.network.sinterface": "lo6086", - "rsa.time.event_time": "2017-01-20T16:14:16.000Z", - "service.type": "sophos", - "source.ip": "10.161.51.135", - "source.mac": "01:00:5e:15:3a:74", - "source.port": 7807, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-02-03T23:16:50.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:2:3-21:16:50 sam1795.invalid reverseproxy: [lorese] [olupta:low] [pid 3338:iqui] AH02312: Fatal error initialising mod_ssl, animide.", - "fileset.name": "utm", - "host.name": "sam1795.invalid", - "input.type": "log", - "log.level": "low", - "log.offset": 5226, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 3338, - "related.hosts": [ - "sam1795.invalid" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "animide", - "rsa.misc.event_id": "AH02312", - "rsa.misc.event_log": "olupta", - "rsa.misc.result": "Fatal error", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "sam1795.invalid" - ], - "rsa.time.event_time": "2017-02-03T23:16:50.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-02-18T06:19:24.000Z", - "event.code": "confd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:2:18-04:19:24 confd[10]: id=arch severity=high sys=data sub=ugits name=ittenb client=tobeatae facility=ntut user=llum srcip=10.232.108.32 version=1.5240 storage=idolo object=mqu class=mquido type=ende attributes=ntmollitcount=tisu node=ionofdeF account=rsp", - "file.directory": "idolo", - "fileset.name": "utm", - "input.type": "log", - "log.level": "high", - "log.offset": 5364, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.5240", - "process.pid": 10, - "related.ip": [ - "10.232.108.32" - ], - "related.user": [ - "llum", - "rsp" - ], - "rsa.identity.logon_type": "ntut", - "rsa.internal.event_desc": "ittenb", - "rsa.internal.messageid": "confd", - "rsa.misc.group_object": "mquido", - "rsa.misc.node": "ionofdeF", - "rsa.misc.obj_name": "ntmollitcount=tisu", - "rsa.misc.obj_type": "ende", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.5240", - "rsa.time.event_time": "2017-02-18T06:19:24.000Z", - "service.name": "ugits", - "service.type": "sophos", - "source.ip": "10.232.108.32", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "llum" - }, - { - "@timestamp": "2017-03-04T13:21:59.000Z", - "destination.address": "Duis583.api.local", - "destination.ip": "10.17.51.153", - "destination.mac": "01:00:5e:8c:f2:06", - "destination.port": 1525, - "event.action": "deny", - "event.code": "astarosg_TVM", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:3:4-11:21:59 nostrum6305.internal.localhost astarosg_TVM: id=llitani severity=high sys=itametco sub=etcons name=web request blocked, forbidden url detectedaction=allow method=iuntN client=utfugi facility=ursintoc user=tio srcip=10.89.41.97 dstip=10.231.116.175 version=1.5146 storage=lup ad_domain=mipsamv object=exeacomm class=sequines type=cto attributes=cusacount=nderi node=tem account=tcustatuscode=eumiu cached=nim profile=pteurs filteraction=ercitati size=835 request=ptat url=https://mail.example.net/velillu/ecatcupi.txt?rsitamet=leumiur#ssequamn referer=https://example.com/taliqui/idi.txt?undeomn=ape#itaspe error=ari authtime=umtot dnstime=onemulla cattime=atquo avscantime=borio fullreqtime=equatD device=uidol auth=inculpa ua=ruredol exceptions=iadeseru group=loremagn category=acons categoryname=nimadmi content-type=lapa reputation=emoenimi application=iquipex app-id=mqu reason=onorume filename=abill file=ametcon extension=ofdeFini time=tasnu function=deny line=tionev message=uasiarch fwrule=velites seq=uredolor initf=lo1543 outitf=lo6683 dstmac=01:00:5e:8c:f2:06 srcmac=01:00:5e:6f:71:02 proto=plica length=asiarc tos=lor prec=;nvolupt ttl=dquia srcport=5334 dstport=1525 tcpflags=umfugiat info=quisnos prec=utf caller=dolor engine=dexe localip=nemul host=Duis583.api.local extra=eavolupt server=10.17.51.153 cookie=aperiame set-cookie=stenat", - "file.directory": "lup", - "file.extension": "ofdeFini", - "file.name": "ametcon", - "file.size": 835, - "fileset.name": "utm", - "group.name": "loremagn", - "host.name": "nostrum6305.internal.localhost", - "http.request.referrer": "https://example.com/taliqui/idi.txt?undeomn=ape#itaspe", - "input.type": "log", - "log.level": "high", - "log.offset": 5626, - "observer.egress.interface.name": "lo6683", - "observer.ingress.interface.name": "lo1543", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.5146", - "related.hosts": [ - "Duis583.api.local", - "nostrum6305.internal.localhost" - ], - "related.ip": [ - "10.17.51.153", - "10.89.41.97" - ], - "related.user": [ - "pteurs", - "tcustatuscode=eumiu", - "tio" - ], - "rsa.db.index": "eavolupt", - "rsa.identity.logon_type": "ursintoc", - "rsa.internal.event_desc": "web", - "rsa.internal.messageid": "astarosg_TVM", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "deny", - "iuntN" - ], - "rsa.misc.comments": "onorume", - "rsa.misc.content_type": "lapa", - "rsa.misc.context": "quisnos", - "rsa.misc.group": "loremagn", - "rsa.misc.group_object": "sequines", - "rsa.misc.node": "tem", - "rsa.misc.obj_name": "cusacount=nderi", - "rsa.misc.obj_type": "cto", - "rsa.misc.policy_id": "velites", - "rsa.misc.policy_name": "ercitati", - "rsa.misc.rule": "llitani", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.5146", - "rsa.misc.vsys": "itametco", - "rsa.network.alias_host": [ - "nostrum6305.internal.localhost" - ], - "rsa.network.dinterface": "lo6683", - "rsa.network.host_dst": "Duis583.api.local", - "rsa.network.sinterface": "lo1543", - "rsa.time.event_time": "2017-03-04T13:21:59.000Z", - "rsa.web.web_cookie": "aperiame", - "service.name": "etcons", - "service.type": "sophos", - "source.ip": "10.89.41.97", - "source.mac": "01:00:5e:6f:71:02", - "source.port": 5334, - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "mail.example.net", - "url.extension": "txt", - "url.fragment": "ssequamn", - "url.original": "https://mail.example.net/velillu/ecatcupi.txt?rsitamet=leumiur#ssequamn", - "url.path": "/velillu/ecatcupi.txt", - "url.query": "rsitamet=leumiur", - "url.scheme": "https", - "user.name": "tio" - }, - { - "@timestamp": "2017-03-18T20:24:33.000Z", - "event.code": "aua", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:3:18-18:24:33 xeaco7887.www.localdomain aua: id=hite severity=very-high sys=ugitsed sub=dminimve name=Packet accepted srcip=10.137.165.144 user=uptate caller=tot engine=reme", - "fileset.name": "utm", - "host.name": "xeaco7887.www.localdomain", - "input.type": "log", - "log.level": "very-high", - "log.offset": 6995, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "xeaco7887.www.localdomain" - ], - "related.user": [ - "uptate" - ], - "rsa.internal.event_desc": "Packet", - "rsa.internal.messageid": "aua", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "xeaco7887.www.localdomain" - ], - "rsa.time.event_time": "2017-03-18T20:24:33.000Z", - "service.name": "dminimve", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "uptate" - }, - { - "@timestamp": "2017-04-02T03:27:07.000Z", - "destination.address": "iscivel3512.invalid", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:4:2-01:27:07 reverseproxy[5430]: ARGS:userPermissions: [\\\\x22dashletAccessAlertingRecentAlertsPanel\\\\x22,\\\\x22dashletAccessAlerterTopAlertsDashlet\\\\x22,\\\\x22accessViewRules\\\\x22,\\\\x22deployLiveResources\\\\x22,\\\\x22vi...\"] [severity [hostname \"iscivel3512.invalid\"] [uri \"atcupi\"] [unique_id \"eriti\"]", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 7174, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 5430, - "related.hosts": [ - "iscivel3512.invalid" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.operation_id": "eriti", - "rsa.network.host_dst": "iscivel3512.invalid", - "rsa.time.event_time": "2017-04-02T03:27:07.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.path": "atcupi" - }, - { - "@timestamp": "2017-04-16T10:29:41.000Z", - "event.code": "sockd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:4:16-08:29:41 sockd[6181]: dante/server 1.202 running", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 7478, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.202", - "process.pid": 6181, - "rsa.internal.event_desc": "sockd:dante/server running.", - "rsa.internal.messageid": "sockd", - "rsa.misc.version": "1.202", - "rsa.time.event_time": "2017-04-16T10:29:41.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-04-30T17:32:16.000Z", - "event.code": "afcd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:4:30-15:32:16 dolor5799.home afcd: Classifier configuration reloaded successfully", - "fileset.name": "utm", - "host.name": "dolor5799.home", - "input.type": "log", - "log.offset": 7537, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "dolor5799.home" - ], - "rsa.internal.event_desc": "afcd: IM/P2P Classifier configuration reloaded successfully.", - "rsa.internal.messageid": "afcd", - "rsa.network.alias_host": [ - "dolor5799.home" - ], - "rsa.time.event_time": "2017-04-30T17:32:16.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-05-15T00:34:50.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:5:14-22:34:50 oreseosq1859.api.lan reverseproxy: [mmodic] [essequam:low] [pid 6691:ficiade] [client uiinea] [uianonn] virus daemon connection problem found in request https://www5.example.com/dantium/ors.htm?sinto=edi#eumiure, referer: https://example.com/adeser/mSe.gif?aute=rchite#rcit", - "fileset.name": "utm", - "host.name": "oreseosq1859.api.lan", - "http.request.referrer": "https://example.com/adeser/mSe.gif?aute=rchite#rcit", - "input.type": "log", - "log.level": "low", - "log.offset": 7624, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6691, - "related.hosts": [ - "oreseosq1859.api.lan" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "essequam", - "rsa.misc.result": "Virus daemon connection problem", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "oreseosq1859.api.lan" - ], - "rsa.network.gateway": "uiinea", - "rsa.time.event_time": "2017-05-15T00:34:50.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "www5.example.com", - "url.extension": "htm", - "url.fragment": "eumiure", - "url.original": "https://www5.example.com/dantium/ors.htm?sinto=edi#eumiure", - "url.path": "/dantium/ors.htm", - "url.query": "sinto=edi", - "url.scheme": "https" - }, - { - "@timestamp": "2017-05-29T07:37:24.000Z", - "event.code": "confd-sync", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:5:29-05:37:24 confd-sync[6908]: id=smoditem severity=very-high sys=tev sub=oNemoeni name=luptatem", - "fileset.name": "utm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 7917, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6908, - "rsa.internal.event_desc": "luptatem", - "rsa.internal.messageid": "confd-sync", - "rsa.misc.severity": "very-high", - "rsa.time.event_time": "2017-05-29T07:37:24.000Z", - "service.name": "oNemoeni", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-06-12T14:39:58.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:6:12-12:39:58 autodit272.www.localhost reverseproxy: [oriss] [imadmin:very-high] [pid 1121:urve] ModSecurity: sBonoru compiled version=\"everi\"; loaded version=\"squ\"", - "fileset.name": "utm", - "host.name": "autodit272.www.localhost", - "input.type": "log", - "log.level": "very-high", - "log.offset": 8020, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 1121, - "related.hosts": [ - "autodit272.www.localhost" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "imadmin", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "autodit272.www.localhost" - ], - "rsa.time.event_time": "2017-06-12T14:39:58.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-06-26T21:42:33.000Z", - "destination.ip": "10.148.21.7", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:6:26-19:42:33 rporis6787.www5.localdomain reverseproxy: [quasiarc] [pta:low] [pid 3705:liqu] [client ipsu] AH01114: siarch: failed to make connection to backend: 10.148.21.7", - "fileset.name": "utm", - "host.name": "rporis6787.www5.localdomain", - "input.type": "log", - "log.level": "low", - "log.offset": 8190, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 3705, - "related.hosts": [ - "rporis6787.www5.localdomain" - ], - "related.ip": [ - "10.148.21.7" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_id": "AH01114", - "rsa.misc.event_log": "pta", - "rsa.misc.result": "Backend connection failed", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "rporis6787.www5.localdomain" - ], - "rsa.network.gateway": "ipsu", - "rsa.network.network_service": "siarch", - "rsa.time.event_time": "2017-06-26T21:42:33.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-07-11T04:45:07.000Z", - "destination.address": "ntore4333.api.invalid", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:7:11-02:45:07 reprehe5661.www.lan reverseproxy: rManage\\\\x22,\\\\x22manageLiveSystemSettings\\\\x22,\\\\x22accessViewJobs\\\\x22,\\\\x22exportList\\\\...\"] [ver \"olor\"] [maturity \"corpo\"] [accuracy \"commod\"] iumd [hostname \"ntore4333.api.invalid\"] [uri \"sitv\"] [unique_id \"equam\"]", - "fileset.name": "utm", - "host.name": "reprehe5661.www.lan", - "input.type": "log", - "log.offset": 8369, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "ntore4333.api.invalid", - "reprehe5661.www.lan" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.context": "iumd", - "rsa.misc.operation_id": "equam", - "rsa.misc.policy_name": "olor", - "rsa.network.alias_host": [ - "reprehe5661.www.lan" - ], - "rsa.network.host_dst": "ntore4333.api.invalid", - "rsa.time.event_time": "2017-07-11T04:45:07.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.path": "sitv" - }, - { - "@timestamp": "2017-07-25T11:47:41.000Z", - "event.code": "exim", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:7:25-09:47:41 exim[2384]: aeca-ugitse-ameiu utei:caecat:lumquid oluptat sequatD163.internal.example [10.151.206.38]:5794 lits", - "fileset.name": "utm", - "host.name": "sequatD163.internal.example", - "input.type": "log", - "log.offset": 8643, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2384, - "related.hosts": [ - "sequatD163.internal.example" - ], - "related.ip": [ - "10.151.206.38" - ], - "rsa.db.index": "lits", - "rsa.internal.event_desc": "exim:connection service message.", - "rsa.internal.messageid": "exim", - "rsa.network.alias_host": [ - "sequatD163.internal.example" - ], - "rsa.time.event_time": "2017-07-25T11:47:41.000Z", - "service.type": "sophos", - "source.ip": "10.151.206.38", - "source.port": 5794, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-08-08T18:50:15.000Z", - "event.code": "pluto", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:8:8-16:50:15 elillu5777.www5.lan pluto: \"elaudant\"[olup] 10.230.4.70 #ncu: starting keying attempt quaturve of an unlimited number", - "fileset.name": "utm", - "host.name": "elillu5777.www5.lan", - "input.type": "log", - "log.offset": 8774, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "elillu5777.www5.lan" - ], - "related.ip": [ - "10.230.4.70" - ], - "rsa.internal.event_desc": "pluto: starting keying attempt of an unlimited number", - "rsa.internal.messageid": "pluto", - "rsa.network.alias_host": [ - "elillu5777.www5.lan" - ], - "rsa.time.event_time": "2017-08-08T18:50:15.000Z", - "service.type": "sophos", - "source.ip": "10.230.4.70", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-08-23T01:52:50.000Z", - "event.code": "xl2tpd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:8:22-23:52:50 ecatcup3022.mail.invalid xl2tpd: Inherited by nproide", - "fileset.name": "utm", - "host.name": "ecatcup3022.mail.invalid", - "input.type": "log", - "log.offset": 8910, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "ecatcup3022.mail.invalid" - ], - "rsa.db.index": "nproide", - "rsa.internal.event_desc": "xl2tpd:xl2tpd Software copyright.", - "rsa.internal.messageid": "xl2tpd", - "rsa.network.alias_host": [ - "ecatcup3022.mail.invalid" - ], - "rsa.time.event_time": "2017-08-23T01:52:50.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-09-06T08:55:24.000Z", - "event.code": "ipsec_starter", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:9:6-06:55:24 qui7797.www.host ipsec_starter: Starting strongSwan umet IPsec [starter]...", - "fileset.name": "utm", - "host.name": "qui7797.www.host", - "input.type": "log", - "log.offset": 8983, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "qui7797.www.host" - ], - "rsa.internal.event_desc": "ipsec_starter: Starting strongSwan 4.2.3 IPsec [starter]...", - "rsa.internal.messageid": "ipsec_starter", - "rsa.network.alias_host": [ - "qui7797.www.host" - ], - "rsa.time.event_time": "2017-09-06T08:55:24.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-09-20T15:57:58.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:9:20-13:57:58 nofdeFin2037.mail.example reverseproxy: [quatD] [nevol:high] [pid 3994:Sectio] [client tiumdol] [laud] cannot read reply: Operation now in progress (115), referer: https://example.org/tquov/natu.jpg?uianonnu=por#nve", - "fileset.name": "utm", - "host.name": "nofdeFin2037.mail.example", - "http.request.referrer": "https://example.org/tquov/natu.jpg?uianonnu=por#nve", - "input.type": "log", - "log.level": "high", - "log.offset": 9077, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 3994, - "related.hosts": [ - "nofdeFin2037.mail.example" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "nevol", - "rsa.misc.result": "Cannot read reply", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "nofdeFin2037.mail.example" - ], - "rsa.network.gateway": "tiumdol", - "rsa.time.event_time": "2017-09-20T15:57:58.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-10-04T23:00:32.000Z", - "event.code": "sockd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:10:4-21:00:32 sockd[7264]: dante/server 1.3714 running", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 9312, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.3714", - "process.pid": 7264, - "rsa.internal.event_desc": "sockd:dante/server running.", - "rsa.internal.messageid": "sockd", - "rsa.misc.version": "1.3714", - "rsa.time.event_time": "2017-10-04T23:00:32.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-10-19T06:03:07.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:10:19-04:03:07 eFinib2403.api.example reverseproxy: [utaliq] [sun:high] [pid 4074:uredol] [client quatD] [enimad] ecatcu while reading reply from cssd, referer: https://mail.example.org/urautod/eveli.html?rese=nonproi#doconse", - "fileset.name": "utm", - "host.name": "eFinib2403.api.example", - "http.request.referrer": "https://mail.example.org/urautod/eveli.html?rese=nonproi#doconse", - "input.type": "log", - "log.level": "high", - "log.offset": 9372, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 4074, - "related.hosts": [ - "eFinib2403.api.example" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "ecatcu", - "rsa.misc.event_log": "sun", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "eFinib2403.api.example" - ], - "rsa.network.gateway": "quatD", - "rsa.time.event_time": "2017-10-19T06:03:07.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-11-02T13:05:41.000Z", - "event.code": "confd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:11:2-11:05:41 confd[4939]: id=acons severity=high sys=adipisc sub=omnisist name=orroqui client=sci facility=psamvolu user=itsedqui srcip=10.244.96.61 version=1.2707 storage=onevol object=ese class=reprehen type=Exce attributes=toccacount=tinvolu node=ecatc account=iumt", - "file.directory": "onevol", - "fileset.name": "utm", - "input.type": "log", - "log.level": "high", - "log.offset": 9603, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.2707", - "process.pid": 4939, - "related.ip": [ - "10.244.96.61" - ], - "related.user": [ - "itsedqui", - "iumt" - ], - "rsa.identity.logon_type": "psamvolu", - "rsa.internal.event_desc": "orroqui", - "rsa.internal.messageid": "confd", - "rsa.misc.group_object": "reprehen", - "rsa.misc.node": "ecatc", - "rsa.misc.obj_name": "toccacount=tinvolu", - "rsa.misc.obj_type": "Exce", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.2707", - "rsa.time.event_time": "2017-11-02T13:05:41.000Z", - "service.name": "omnisist", - "service.type": "sophos", - "source.ip": "10.244.96.61", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "itsedqui" - }, - { - "@timestamp": "2017-11-16T20:08:15.000Z", - "event.action": "reloading", - "event.code": "named", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:11:16-18:08:15 named[1900]: reloading eddoei iono", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 9878, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 1900, - "rsa.internal.messageid": "named", - "rsa.misc.action": [ - "reloading" - ], - "rsa.misc.disposition": "iono", - "rsa.misc.obj_type": "eddoei", - "rsa.time.event_time": "2017-11-16T20:08:15.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-12-01T03:10:49.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:12:1-01:10:49 obeatae2042.www.domain reverseproxy: [dquian] [isaute:low] [pid 1853:utfugit] (70007)The ula specified has expired: [client quaUteni] AH01110: error reading response", - "fileset.name": "utm", - "host.name": "obeatae2042.www.domain", - "input.type": "log", - "log.level": "low", - "log.offset": 9933, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 1853, - "related.hosts": [ - "obeatae2042.www.domain" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "ula", - "rsa.misc.event_id": "AH01110", - "rsa.misc.event_log": "isaute", - "rsa.misc.result": "Error reading response", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "obeatae2042.www.domain" - ], - "rsa.network.gateway": "quaUteni", - "rsa.time.event_time": "2017-12-01T03:10:49.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-12-15T10:13:24.000Z", - "event.code": "pop3proxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:12:15-08:13:24 aerat1267.www5.example pop3proxy: Master started", - "fileset.name": "utm", - "host.name": "aerat1267.www5.example", - "input.type": "log", - "log.offset": 10118, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "aerat1267.www5.example" - ], - "rsa.internal.event_desc": "pop3proxy:Master started.", - "rsa.internal.messageid": "pop3proxy", - "rsa.network.alias_host": [ - "aerat1267.www5.example" - ], - "rsa.time.event_time": "2017-12-15T10:13:24.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2017-12-29T17:15:58.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2017:12:29-15:15:58 writt2238.internal.localdomain reverseproxy: [uaer] [aed:low] [pid 478:ain] [client scingeli] [uatDuis] mod_avscan_check_file_single_part() called with parameter filename=imip", - "file.name": "imip", - "fileset.name": "utm", - "host.name": "writt2238.internal.localdomain", - "input.type": "log", - "log.level": "low", - "log.offset": 10187, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 478, - "related.hosts": [ - "writt2238.internal.localdomain" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "aed", - "rsa.misc.severity": "low", - "rsa.network.alias_host": [ - "writt2238.internal.localdomain" - ], - "rsa.network.gateway": "scingeli", - "rsa.time.event_time": "2017-12-29T17:15:58.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-01-13T00:18:32.000Z", - "destination.domain": "uatD", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:1:12-22:18:32 siutaliq4937.api.lan reverseproxy: [siutaliq] [urvel:very-high] [pid 7721:ntium] [imadmi] Hostname in dquiac request (liquide) does not match the server name (uatD)", - "fileset.name": "utm", - "host.name": "siutaliq4937.api.lan", - "input.type": "log", - "log.level": "very-high", - "log.offset": 10383, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7721, - "related.hosts": [ - "siutaliq4937.api.lan" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.comments": "server certificate has a different hostname from actual hostname", - "rsa.misc.event_log": "urvel", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "siutaliq4937.api.lan" - ], - "rsa.network.network_service": "dquiac", - "rsa.time.event_time": "2018-01-13T00:18:32.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-01-27T07:21:06.000Z", - "event.action": "accept", - "event.code": "URID", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:1:27-05:21:06 URID[7596]: T=BCSedut ------ 1 - [exit] accept: ametco", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 10567, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7596, - "rsa.internal.messageid": "URID", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "ametco", - "rsa.time.event_time": "2018-01-27T07:21:06.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-02-10T14:23:41.000Z", - "destination.address": "tenbyCi4371.www5.localdomain", - "destination.ip": "10.98.126.206", - "destination.mac": "01:00:5e:2f:c3:3e", - "destination.port": 2390, - "event.action": "block", - "event.code": "astarosg_TVM", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:2:10-12:23:41 astarosg_TVM[1090]: id=udex severity=low sys=iam sub=animi name=UDP flood detectedaction=allow method=nsectetu client=spici facility=untutl user=hen srcip=10.214.167.164 dstip=10.76.98.53 version=1.3726 storage=uovolup ad_domain=expl object=animi class=mdoloree type=mullamco attributes=tnulcount=ons node=radip account=amremapstatuscode=dolorsit cached=atisund profile=isnostru filteraction=quepo size=5693 request=nisi url=https://api.example.org/iono/secillum.txt?apariat=tse#enbyCi referer=https://example.com/eetdol/aut.jpg?pitlab=tutlabor#imadmi error=nculp authtime=quamnihi dnstime=nimadmi cattime=mquiado avscantime=agn fullreqtime=dip device=urmag auth=nim ua=laboreet exceptions=tutlabo group=incid category=der categoryname=totamrem content-type=eaqu reputation=itani application=mni app-id=runtmol reason=uaer filename=nor file=saut extension=olest time=volu function=block line=osam message=ncid fwrule=loremagn seq=uisau initf=lo1255 outitf=eth965 dstmac=01:00:5e:2f:c3:3e srcmac=01:00:5e:65:2d:fe proto=ictasun length=iumto tos=ciun prec=;prehe ttl=essec srcport=4562 dstport=2390 tcpflags=uaera info=nsequa prec=yCicero caller=orporis engine=oluptate localip=tesseq host=tenbyCi4371.www5.localdomain extra=spernatu server=10.98.126.206 cookie=tion set-cookie=tNeque", - "file.directory": "uovolup", - "file.extension": "olest", - "file.name": "saut", - "file.size": 5693, - "fileset.name": "utm", - "group.name": "incid", - "http.request.referrer": "https://example.com/eetdol/aut.jpg?pitlab=tutlabor#imadmi", - "input.type": "log", - "log.level": "low", - "log.offset": 10641, - "observer.egress.interface.name": "eth965", - "observer.ingress.interface.name": "lo1255", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.3726", - "process.pid": 1090, - "related.hosts": [ - "tenbyCi4371.www5.localdomain" - ], - "related.ip": [ - "10.214.167.164", - "10.98.126.206" - ], - "related.user": [ - "amremapstatuscode=dolorsit", - "hen", - "isnostru" - ], - "rsa.db.index": "spernatu", - "rsa.identity.logon_type": "untutl", - "rsa.internal.event_desc": "UDP", - "rsa.internal.messageid": "astarosg_TVM", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "block", - "nsectetu" - ], - "rsa.misc.comments": "uaer", - "rsa.misc.content_type": "eaqu", - "rsa.misc.context": "nsequa", - "rsa.misc.group": "incid", - "rsa.misc.group_object": "mdoloree", - "rsa.misc.node": "radip", - "rsa.misc.obj_name": "tnulcount=ons", - "rsa.misc.obj_type": "mullamco", - "rsa.misc.policy_id": "loremagn", - "rsa.misc.policy_name": "quepo", - "rsa.misc.rule": "udex", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.3726", - "rsa.misc.vsys": "iam", - "rsa.network.dinterface": "eth965", - "rsa.network.host_dst": "tenbyCi4371.www5.localdomain", - "rsa.network.sinterface": "lo1255", - "rsa.time.event_time": "2018-02-10T14:23:41.000Z", - "rsa.web.web_cookie": "tion", - "service.name": "animi", - "service.type": "sophos", - "source.ip": "10.214.167.164", - "source.mac": "01:00:5e:65:2d:fe", - "source.port": 4562, - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "api.example.org", - "url.extension": "txt", - "url.fragment": "enbyCi", - "url.original": "https://api.example.org/iono/secillum.txt?apariat=tse#enbyCi", - "url.path": "/iono/secillum.txt", - "url.query": "apariat=tse", - "url.scheme": "https", - "user.name": "hen" - }, - { - "@timestamp": "2018-02-24T21:26:15.000Z", - "destination.ip": "10.32.236.117", - "destination.mac": "01:00:5e:9a:fe:91", - "destination.port": 5550, - "event.code": "ulogd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:2:24-19:26:15 ulogd[6722]: id=persp severity=medium sys=orev sub=lapa name=Packet logged action=allow fwrule=adminim seq=isiutali initf=lo7088 outitf=eth6357 dstmac=01:00:5e:9a:fe:91 srcmac=01:00:5e:78:1a:5a srcip=10.203.157.250 dstip=10.32.236.117 proto=turm length=quamei tos=nvento prec=nama ttl=ema srcport=6585 dstport=5550 tcpflags=xeacomm info=oriosa code=erspici type=oreeu", - "fileset.name": "utm", - "input.type": "log", - "log.level": "medium", - "log.offset": 11943, - "observer.egress.interface.name": "eth6357", - "observer.ingress.interface.name": "lo7088", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6722, - "related.ip": [ - "10.203.157.250", - "10.32.236.117" - ], - "rsa.internal.event_desc": "Packet", - "rsa.internal.messageid": "ulogd", - "rsa.investigations.ec_activity": "Scan", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "TEV", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.context": "oriosa", - "rsa.misc.policy_id": "adminim", - "rsa.misc.rule": "persp", - "rsa.misc.severity": "medium", - "rsa.misc.vsys": "orev", - "rsa.network.dinterface": "eth6357", - "rsa.network.network_service": "lapa", - "rsa.network.sinterface": "lo7088", - "rsa.time.event_time": "2018-02-24T21:26:15.000Z", - "service.type": "sophos", - "source.ip": "10.203.157.250", - "source.mac": "01:00:5e:78:1a:5a", - "source.port": 6585, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-03-11T04:28:49.000Z", - "destination.ip": "10.231.77.26", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:3:11-02:28:49 ectob5542.www5.corp reverseproxy: [agni] [ivelit:high] [pid 7755:uovol] AH00959: ap_proxy_connect_backend disabling worker for (10.231.77.26) for volups", - "fileset.name": "utm", - "host.name": "ectob5542.www5.corp", - "input.type": "log", - "log.level": "high", - "log.offset": 12330, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7755, - "related.hosts": [ - "ectob5542.www5.corp" - ], - "related.ip": [ - "10.231.77.26" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_id": "AH00959", - "rsa.misc.event_log": "ivelit", - "rsa.misc.result": "disabling worker", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ectob5542.www5.corp" - ], - "rsa.time.event_time": "2018-03-11T04:28:49.000Z", - "rsa.time.process_time": "volup", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-03-25T11:31:24.000Z", - "destination.address": "tenima5715.api.example", - "destination.ip": "10.92.93.236", - "destination.mac": "01:00:5e:0a:8f:6c", - "destination.port": 6939, - "event.action": "block", - "event.code": "httpd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:3:25-09:31:24 iusmo901.www.home httpd: id=scivelit severity=high sys=untut sub=siu name=Authentication successfulaction=allow method=icons client=hende facility=umdol user=Sedutper srcip=10.2.24.156 dstip=10.113.78.101 version=1.2707 storage=amqua ad_domain=nsequatu object=aboNemoe class=mqu type=tse attributes=ntiumdcount=ueip node=amvo account=dolorsistatuscode=acc cached=quinesc profile=ulpaq filteraction=usa size=5474 request=tob url=https://www.example.org/imipsamv/doeiu.jpg?nderit=ficia#tru referer=https://mail.example.org/natuser/olupt.txt?ipsumqu=nsec#smo error=avolup authtime=litse dnstime=archit cattime=nde avscantime=tNequepo fullreqtime=byCicer device=imvenia auth=ipit ua=tdolorem exceptions=nderitin group=mquiado category=ssequa categoryname=nisist content-type=temvele reputation=ofd application=quam app-id=umdol reason=porincid filename=tisetqu file=pici extension=erit time=ehenderi function=block line=fugiatqu message=Duisaute fwrule=uptat seq=hende initf=lo3680 outitf=lo4358 dstmac=01:00:5e:0a:8f:6c srcmac=01:00:5e:34:8c:d2 proto=mnis length=ainci tos=aturve prec=;tiumdol ttl=mporain srcport=6938 dstport=6939 tcpflags=dut info=aecons prec=tionemu caller=edictasu engine=quipexea localip=orsit host=tenima5715.api.example extra=snisiut server=10.92.93.236 cookie=amr set-cookie=mfug port=7174 query=exerc uid=ntoccae", - "file.directory": "amqua", - "file.extension": "erit", - "file.name": "pici", - "file.size": 5474, - "fileset.name": "utm", - "group.name": "mquiado", - "host.name": "iusmo901.www.home", - "http.request.referrer": "https://mail.example.org/natuser/olupt.txt?ipsumqu=nsec#smo", - "input.type": "log", - "log.level": "high", - "log.offset": 12502, - "observer.egress.interface.name": "lo4358", - "observer.ingress.interface.name": "lo3680", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.2707", - "related.hosts": [ - "iusmo901.www.home", - "tenima5715.api.example" - ], - "related.ip": [ - "10.2.24.156", - "10.92.93.236" - ], - "related.user": [ - "Sedutper", - "dolorsistatuscode=acc", - "ntoccae", - "ulpaq" - ], - "rsa.db.index": "snisiut", - "rsa.identity.logon_type": "umdol", - "rsa.internal.event_desc": "Authentication", - "rsa.internal.messageid": "httpd", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "block", - "icons" - ], - "rsa.misc.comments": "porincid", - "rsa.misc.content_type": "temvele", - "rsa.misc.context": "aecons", - "rsa.misc.group": "mquiado", - "rsa.misc.group_object": "mqu", - "rsa.misc.node": "amvo", - "rsa.misc.obj_name": "ntiumdcount=ueip", - "rsa.misc.obj_type": "tse", - "rsa.misc.policy_id": "uptat", - "rsa.misc.policy_name": "usa", - "rsa.misc.rule": "scivelit", - "rsa.misc.severity": "high", - "rsa.misc.version": "1.2707", - "rsa.misc.vsys": "untut", - "rsa.network.alias_host": [ - "iusmo901.www.home" - ], - "rsa.network.dinterface": "lo4358", - "rsa.network.host_dst": "tenima5715.api.example", - "rsa.network.network_port": 7174, - "rsa.network.sinterface": "lo3680", - "rsa.time.event_time": "2018-03-25T11:31:24.000Z", - "rsa.web.web_cookie": "amr", - "service.name": "siu", - "service.type": "sophos", - "source.ip": "10.2.24.156", - "source.mac": "01:00:5e:34:8c:d2", - "source.port": 6938, - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "www.example.org", - "url.extension": "jpg", - "url.fragment": "tru", - "url.original": "https://www.example.org/imipsamv/doeiu.jpg?nderit=ficia#tru", - "url.path": "/imipsamv/doeiu.jpg", - "url.query": [ - "exerc", - "nderit=ficia" - ], - "url.scheme": "https", - "user.name": "Sedutper" - }, - { - "@timestamp": "2018-04-08T18:33:58.000Z", - "destination.address": "mni4032.lan", - "destination.ip": "10.202.65.2", - "destination.mac": "01:00:5e:2c:9d:65", - "destination.port": 1402, - "event.action": "cancel", - "event.code": "astarosg_TVM", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:4:8-16:33:58 astarosg_TVM[6463]: id=user severity=low sys=sequamn sub=adeseru name=File extension warned and proceededaction=accept method=mquisn client=ulamcol facility=nulamcol user=atatno srcip=10.180.169.49 dstip=10.206.69.71 version=1.3155 storage=risni ad_domain=ccaecat object=dtemp class=onproid type=ica attributes=mnisiscount=edolor node=nonnumqu account=iscivelistatuscode=urve cached=sundeomn profile=tasu filteraction=equunt size=3144 request=ilmo url=https://mail.example.net/isqua/deF.html?iameaq=orainci#adm referer=https://api.example.org/mremap/ate.htm?tlabor=cidunt#ria error=tessec authtime=cupida dnstime=ciade cattime=busBonor avscantime=enima fullreqtime=emseq device=osamni auth=umetMa ua=equatDui exceptions=its group=setquas category=nti categoryname=osamnis content-type=atisetqu reputation=ciduntut application=atisu app-id=edutpe reason=architec filename=incul file=tevelit extension=emse time=eipsaqua function=cancel line=suntincu message=lore fwrule=equatu seq=enbyCi initf=enp0s566 outitf=lo2179 dstmac=01:00:5e:2c:9d:65 srcmac=01:00:5e:1a:03:f5 proto=orema length=iusmo tos=uunturm prec=;mSect ttl=avolupta srcport=3308 dstport=1402 tcpflags=dolo info=tsed prec=corpori caller=cillumd engine=umdol localip=turmagn host=mni4032.lan extra=amrem server=10.202.65.2 cookie=queporr set-cookie=oide", - "file.directory": "risni", - "file.extension": "emse", - "file.name": "tevelit", - "file.size": 3144, - "fileset.name": "utm", - "group.name": "setquas", - "http.request.referrer": "https://api.example.org/mremap/ate.htm?tlabor=cidunt#ria", - "input.type": "log", - "log.level": "low", - "log.offset": 13857, - "observer.egress.interface.name": "lo2179", - "observer.ingress.interface.name": "enp0s566", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.3155", - "process.pid": 6463, - "related.hosts": [ - "mni4032.lan" - ], - "related.ip": [ - "10.180.169.49", - "10.202.65.2" - ], - "related.user": [ - "atatno", - "iscivelistatuscode=urve", - "tasu" - ], - "rsa.db.index": "amrem", - "rsa.identity.logon_type": "nulamcol", - "rsa.internal.event_desc": "File", - "rsa.internal.messageid": "astarosg_TVM", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "cancel", - "mquisn" - ], - "rsa.misc.comments": "architec", - "rsa.misc.content_type": "atisetqu", - "rsa.misc.context": "tsed", - "rsa.misc.group": "setquas", - "rsa.misc.group_object": "onproid", - "rsa.misc.node": "nonnumqu", - "rsa.misc.obj_name": "mnisiscount=edolor", - "rsa.misc.obj_type": "ica", - "rsa.misc.policy_id": "equatu", - "rsa.misc.policy_name": "equunt", - "rsa.misc.rule": "user", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.3155", - "rsa.misc.vsys": "sequamn", - "rsa.network.dinterface": "lo2179", - "rsa.network.host_dst": "mni4032.lan", - "rsa.network.sinterface": "enp0s566", - "rsa.time.event_time": "2018-04-08T18:33:58.000Z", - "rsa.web.web_cookie": "queporr", - "service.name": "adeseru", - "service.type": "sophos", - "source.ip": "10.180.169.49", - "source.mac": "01:00:5e:1a:03:f5", - "source.port": 3308, - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "mail.example.net", - "url.extension": "html", - "url.fragment": "adm", - "url.original": "https://mail.example.net/isqua/deF.html?iameaq=orainci#adm", - "url.path": "/isqua/deF.html", - "url.query": "iameaq=orainci", - "url.scheme": "https", - "user.name": "atatno" - }, - { - "@timestamp": "2018-04-23T01:36:32.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:4:22-23:36:32 iscing6960.api.invalid reverseproxy: [emipsu] [incidu:very-high] [pid 5350:itation] SSL Library Error: error:itasper:failure", - "fileset.name": "utm", - "host.name": "iscing6960.api.invalid", - "input.type": "log", - "log.level": "very-high", - "log.offset": 15189, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 5350, - "related.hosts": [ - "iscing6960.api.invalid" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.context": "SSL Library Error", - "rsa.misc.event_log": "incidu", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "itasper", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "iscing6960.api.invalid" - ], - "rsa.time.event_time": "2018-04-23T01:36:32.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-05-07T08:39:06.000Z", - "destination.address": "olupta3647.host", - "event.code": "httpd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:5:7-06:39:06 httpd[793]: [ruredo:success] [pid nculpaq:mides] [client iconseq] ModSecurity: Warning. nidolo [file \"runtmoll\"] [line \"tuserror\"] [id \"utlabo\"] [rev \"scip\"] [msg \"imvenia\"] [severity \"low\"] [ver \"1.6420\"] [maturity \"nisi\"] [accuracy \"seq\"] [tag \"ors\"] [hostname \"olupta3647.host\"] [uri \"uaUteni\"] [unique_id \"gitsedqu\"]amqu", - "file.name": "runtmoll", - "fileset.name": "utm", - "input.type": "log", - "log.level": "low", - "log.offset": 15333, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.6420", - "process.pid": 793, - "related.hosts": [ - "olupta3647.host" - ], - "rsa.internal.event_desc": "imvenia", - "rsa.internal.messageid": "httpd", - "rsa.misc.event_log": "ruredo", - "rsa.misc.operation_id": "gitsedqu", - "rsa.misc.result": "success", - "rsa.misc.rule": "utlabo", - "rsa.misc.rule_name": "nidolo", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.6420", - "rsa.network.gateway": "iconseq", - "rsa.network.host_dst": "olupta3647.host", - "rsa.time.event_time": "2018-05-07T08:39:06.000Z", - "rule.name": "nidolo", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.path": "uaUteni" - }, - { - "@timestamp": "2018-05-21T15:41:41.000Z", - "event.code": "named", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:5:21-13:41:41 named[6633]: FORMERR resolving 'iavolu7814.www5.localhost': 10.194.12.83#elit", - "fileset.name": "utm", - "host.name": "iavolu7814.www5.localhost", - "input.type": "log", - "log.offset": 15676, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6633, - "related.hosts": [ - "iavolu7814.www5.localhost" - ], - "related.ip": [ - "10.194.12.83" - ], - "rsa.internal.event_desc": "named:FORMERR resolving DNS.", - "rsa.internal.messageid": "named", - "rsa.network.alias_host": [ - "iavolu7814.www5.localhost" - ], - "rsa.time.event_time": "2018-05-21T15:41:41.000Z", - "service.type": "sophos", - "source.ip": "10.194.12.83", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-06-04T22:44:15.000Z", - "destination.address": "obea2960.mail.corp", - "destination.ip": "10.45.12.53", - "destination.mac": "01:00:5e:24:b8:9f", - "destination.port": 6937, - "event.action": "cancel", - "event.code": "astarosg_TVM", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:6:4-20:44:15 astarosg_TVM[5792]: id=elitess severity=low sys=amqua sub=mavenia name=checking if admin is enabledaction=cancel method=doc client=teurs facility=eturadi user=eturadip srcip=10.33.138.154 dstip=10.254.28.41 version=1.4256 storage=volupta ad_domain=dolor object=dolorsit class=tfugits type=lor attributes=oremcount=utper node=ueips account=umqustatuscode=ntexpli cached=siuta profile=porincid filteraction=itame size=1026 request=fugiat url=https://www5.example.org/etcons/aecatc.jpg?ditem=tut#oditautf referer=https://internal.example.org/eddoei/iatqu.htm?itessec=dat#tdol error=emul authtime=ariatu dnstime=luptate cattime=umdolore avscantime=iutaliq fullreqtime=oriosamn device=oluptate auth=tcu ua=mmodo exceptions=rauto group=lup category=orem categoryname=tutl content-type=iusmo reputation=uiavolu application=eri app-id=pis reason=riosam filename=isa file=nonnum extension=Nemoenim time=itati function=cancel line=nes message=atvolupt fwrule=umwritt seq=uae initf=enp0s3792 outitf=lo2114 dstmac=01:00:5e:24:b8:9f srcmac=01:00:5e:a1:a3:9f proto=bil length=itten tos=icer prec=;dolo ttl=siutaliq srcport=1455 dstport=6937 tcpflags=pexeaco info=ercitati prec=dexea caller=tasnul engine=onu localip=orisnisi host=obea2960.mail.corp extra=dolor server=10.45.12.53 cookie=etdo set-cookie=edictas", - "file.directory": "volupta", - "file.extension": "Nemoenim", - "file.name": "nonnum", - "file.size": 1026, - "fileset.name": "utm", - "group.name": "lup", - "http.request.referrer": "https://internal.example.org/eddoei/iatqu.htm?itessec=dat#tdol", - "input.type": "log", - "log.level": "low", - "log.offset": 15773, - "observer.egress.interface.name": "lo2114", - "observer.ingress.interface.name": "enp0s3792", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.4256", - "process.pid": 5792, - "related.hosts": [ - "obea2960.mail.corp" - ], - "related.ip": [ - "10.33.138.154", - "10.45.12.53" - ], - "related.user": [ - "eturadip", - "porincid", - "umqustatuscode=ntexpli" - ], - "rsa.db.index": "dolor", - "rsa.identity.logon_type": "eturadi", - "rsa.internal.event_desc": "checking", - "rsa.internal.messageid": "astarosg_TVM", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "cancel", - "doc" - ], - "rsa.misc.comments": "riosam", - "rsa.misc.content_type": "iusmo", - "rsa.misc.context": "ercitati", - "rsa.misc.group": "lup", - "rsa.misc.group_object": "tfugits", - "rsa.misc.node": "ueips", - "rsa.misc.obj_name": "oremcount=utper", - "rsa.misc.obj_type": "lor", - "rsa.misc.policy_id": "umwritt", - "rsa.misc.policy_name": "itame", - "rsa.misc.rule": "elitess", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.4256", - "rsa.misc.vsys": "amqua", - "rsa.network.dinterface": "lo2114", - "rsa.network.host_dst": "obea2960.mail.corp", - "rsa.network.sinterface": "enp0s3792", - "rsa.time.event_time": "2018-06-04T22:44:15.000Z", - "rsa.web.web_cookie": "etdo", - "service.name": "mavenia", - "service.type": "sophos", - "source.ip": "10.33.138.154", - "source.mac": "01:00:5e:a1:a3:9f", - "source.port": 1455, - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "www5.example.org", - "url.extension": "jpg", - "url.fragment": "oditautf", - "url.original": "https://www5.example.org/etcons/aecatc.jpg?ditem=tut#oditautf", - "url.path": "/etcons/aecatc.jpg", - "url.query": "ditem=tut", - "url.scheme": "https", - "user.name": "eturadip" - }, - { - "@timestamp": "2018-06-19T05:46:49.000Z", - "event.code": "frox", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:6:19-03:46:49 frox[7744]: Listening on 10.99.134.49:2274", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 17088, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7744, - "related.ip": [ - "10.99.134.49" - ], - "rsa.internal.event_desc": "frox:FTP Proxy listening on port.", - "rsa.internal.messageid": "frox", - "rsa.time.event_time": "2018-06-19T05:46:49.000Z", - "service.type": "sophos", - "source.ip": "10.99.134.49", - "source.port": 2274, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-07-03T12:49:23.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:7:3-10:49:23 olli5982.www.test reverseproxy: [asp] [uatDui:medium] [pid 212:unde] [client raut] [suscip] virus daemon error found in request ectetu, referer: https://example.com/ariat/ptatemU.txt?cusan=ueipsaq#upid", - "fileset.name": "utm", - "host.name": "olli5982.www.test", - "http.request.referrer": "https://example.com/ariat/ptatemU.txt?cusan=ueipsaq#upid", - "input.type": "log", - "log.level": "medium", - "log.offset": 17150, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 212, - "related.hosts": [ - "olli5982.www.test" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "uatDui", - "rsa.misc.result": "virus daemon error", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "olli5982.www.test" - ], - "rsa.network.gateway": "raut", - "rsa.time.event_time": "2018-07-03T12:49:23.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.path": "ectetu" - }, - { - "@timestamp": "2018-07-17T19:51:58.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:7:17-17:51:58 nsecte3644.internal.test reverseproxy: [tutla] [isund:high] [pid 3136:uidex] [client uptate] Invalid signature, cookie: JSESSIONID", - "fileset.name": "utm", - "host.name": "nsecte3644.internal.test", - "input.type": "log", - "log.level": "high", - "log.offset": 17370, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 3136, - "related.hosts": [ - "nsecte3644.internal.test" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "isund", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "nsecte3644.internal.test" - ], - "rsa.network.gateway": "uptate", - "rsa.time.event_time": "2018-07-17T19:51:58.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-08-01T02:54:32.000Z", - "event.code": "confd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:8:1-00:54:32 confd[4157]: id=onseq severity=very-high sys=siutaliq sub=aliqu name=serro client=ctet facility=umiurere user=antium srcip=10.32.85.21 version=1.7852 storage=eaco object=onp class=ectetur type=ione attributes=utlaborecount=nci node=acommodi account=etconsec", - "file.directory": "eaco", - "fileset.name": "utm", - "input.type": "log", - "log.level": "very-high", - "log.offset": 17520, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.7852", - "process.pid": 4157, - "related.ip": [ - "10.32.85.21" - ], - "related.user": [ - "antium", - "etconsec" - ], - "rsa.identity.logon_type": "umiurere", - "rsa.internal.event_desc": "serro", - "rsa.internal.messageid": "confd", - "rsa.misc.group_object": "ectetur", - "rsa.misc.node": "acommodi", - "rsa.misc.obj_name": "utlaborecount=nci", - "rsa.misc.obj_type": "ione", - "rsa.misc.severity": "very-high", - "rsa.misc.version": "1.7852", - "rsa.time.event_time": "2018-08-01T02:54:32.000Z", - "service.name": "aliqu", - "service.type": "sophos", - "source.ip": "10.32.85.21", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "antium" - }, - { - "@timestamp": "2018-08-15T09:57:06.000Z", - "event.code": "sshd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:8:15-07:57:06 econseq7119.www.home sshd: error: Could not get shadow information for NOUSER", - "fileset.name": "utm", - "host.name": "econseq7119.www.home", - "input.type": "log", - "log.offset": 17796, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "econseq7119.www.home" - ], - "rsa.internal.event_desc": "sshd:error:Could not get shadow information for NOUSER", - "rsa.internal.messageid": "sshd", - "rsa.network.alias_host": [ - "econseq7119.www.home" - ], - "rsa.time.event_time": "2018-08-15T09:57:06.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-08-29T16:59:40.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:8:29-14:59:40 ant2543.www5.lan reverseproxy: [uaturve] [lapa:high] [pid 3669:idu] [client sed] [utem] cannot read reply: Operation now in progress (115), referer: https://example.com/oremagn/ehenderi.htm?mdolo=ionul#oeiusmo", - "fileset.name": "utm", - "host.name": "ant2543.www5.lan", - "http.request.referrer": "https://example.com/oremagn/ehenderi.htm?mdolo=ionul#oeiusmo", - "input.type": "log", - "log.level": "high", - "log.offset": 17893, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 3669, - "related.hosts": [ - "ant2543.www5.lan" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "lapa", - "rsa.misc.result": "Cannot read reply", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "ant2543.www5.lan" - ], - "rsa.network.gateway": "sed", - "rsa.time.event_time": "2018-08-29T16:59:40.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-09-13T00:02:15.000Z", - "event.action": "accept", - "event.code": "pluto", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:9:12-22:02:15 pluto[7138]: | sent accept notification olore with seqno = urEx", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 18122, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7138, - "rsa.internal.messageid": "pluto", - "rsa.internal.msg": "olore", - "rsa.misc.action": [ - "accept" - ], - "rsa.time.event_time": "2018-09-13T00:02:15.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-09-27T07:04:49.000Z", - "destination.address": "nisiuta4810.api.test", - "destination.ip": "10.85.200.58", - "destination.mac": "01:00:5e:b3:e3:90", - "destination.port": 605, - "event.action": "cancel", - "event.code": "httpd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:9:27-05:04:49 httpd[6562]: id=iurere severity=medium sys=erc sub=atu name=http accessaction=accept method=odte client=uis facility=sedquia user=reetd srcip=10.210.175.52 dstip=10.87.14.186 version=1.7641 storage=tasu ad_domain=mquae object=CSedu class=atae type=aeconseq attributes=boNemocount=duntutla node=mqu account=inimastatuscode=emipsum cached=venia profile=Loremi filteraction=uisnostr size=849 request=vol url=https://internal.example.com/ritat/dipi.jpg?aliquide=aliqui#agnaaliq referer=https://api.example.org/Bonorume/emeumfu.txt?iuntNequ=ender#quid error=mipsa authtime=teturad dnstime=nimide cattime=spernat avscantime=nevolu fullreqtime=itectobe device=rroq auth=itessequ ua=uunt exceptions=pic group=unt category=emUt categoryname=eiru content-type=sauteir reputation=pic application=caecatc app-id=iarc reason=emquia filename=duntutl file=idi extension=reetdo time=pidatatn function=cancel line=ncul message=mcorpor fwrule=ofd seq=lapariat initf=eth65 outitf=lo3615 dstmac=01:00:5e:b3:e3:90 srcmac=01:00:5e:0e:b3:8e proto=consequ length=min tos=riame prec=;gnaal ttl=nti srcport=1125 dstport=605 tcpflags=utlab info=colabo prec=ditem caller=did engine=BCS localip=idex host=nisiuta4810.api.test extra=apa server=10.85.200.58 cookie=esse set-cookie=idexeac port=2294 query=iatquovo uid=rExce", - "file.directory": "tasu", - "file.extension": "reetdo", - "file.name": "idi", - "file.size": 849, - "fileset.name": "utm", - "group.name": "unt", - "http.request.referrer": "https://api.example.org/Bonorume/emeumfu.txt?iuntNequ=ender#quid", - "input.type": "log", - "log.level": "medium", - "log.offset": 18205, - "observer.egress.interface.name": "lo3615", - "observer.ingress.interface.name": "eth65", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.7641", - "process.pid": 6562, - "related.hosts": [ - "nisiuta4810.api.test" - ], - "related.ip": [ - "10.210.175.52", - "10.85.200.58" - ], - "related.user": [ - "Loremi", - "inimastatuscode=emipsum", - "rExce", - "reetd" - ], - "rsa.db.index": "apa", - "rsa.identity.logon_type": "sedquia", - "rsa.internal.event_desc": "http", - "rsa.internal.messageid": "httpd", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.action": [ - "cancel", - "odte" - ], - "rsa.misc.comments": "emquia", - "rsa.misc.content_type": "sauteir", - "rsa.misc.context": "colabo", - "rsa.misc.group": "unt", - "rsa.misc.group_object": "atae", - "rsa.misc.node": "mqu", - "rsa.misc.obj_name": "boNemocount=duntutla", - "rsa.misc.obj_type": "aeconseq", - "rsa.misc.policy_id": "ofd", - "rsa.misc.policy_name": "uisnostr", - "rsa.misc.rule": "iurere", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.7641", - "rsa.misc.vsys": "erc", - "rsa.network.dinterface": "lo3615", - "rsa.network.host_dst": "nisiuta4810.api.test", - "rsa.network.network_port": 2294, - "rsa.network.sinterface": "eth65", - "rsa.time.event_time": "2018-09-27T07:04:49.000Z", - "rsa.web.web_cookie": "esse", - "service.name": "atu", - "service.type": "sophos", - "source.ip": "10.210.175.52", - "source.mac": "01:00:5e:0e:b3:8e", - "source.port": 1125, - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.domain": "internal.example.com", - "url.extension": "jpg", - "url.fragment": "agnaaliq", - "url.original": "https://internal.example.com/ritat/dipi.jpg?aliquide=aliqui#agnaaliq", - "url.path": "/ritat/dipi.jpg", - "url.query": [ - "aliquide=aliqui", - "iatquovo" - ], - "url.scheme": "https", - "user.name": "reetd" - }, - { - "@timestamp": "2018-10-11T14:07:23.000Z", - "destination.ip": "10.115.166.48", - "destination.mac": "01:00:5e:c3:8a:24", - "destination.port": 4884, - "event.code": "ulogd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:10:11-12:07:23 itametc1599.api.test ulogd: id=itaedi severity=low sys=ore sub=ips name=Authentication successful action=block fwrule=iamqu seq=aboN initf=eth2679 outitf=enp0s1164 dstmac=01:00:5e:c3:8a:24 srcmac=01:00:5e:5a:9d:a9 srcip=10.133.45.45 dstip=10.115.166.48 proto=utaliq length=icer tos=essequ prec=oeiu ttl=nsequa srcport=4180 dstport=4884 tcpflags=squa info=etM code=eve type=iru", - "fileset.name": "utm", - "host.name": "itametc1599.api.test", - "input.type": "log", - "log.level": "low", - "log.offset": 19517, - "observer.egress.interface.name": "enp0s1164", - "observer.ingress.interface.name": "eth2679", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "itametc1599.api.test" - ], - "related.ip": [ - "10.115.166.48", - "10.133.45.45" - ], - "rsa.internal.event_desc": "Authentication", - "rsa.internal.messageid": "ulogd", - "rsa.investigations.ec_activity": "Scan", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "TEV", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.context": "etM", - "rsa.misc.policy_id": "iamqu", - "rsa.misc.rule": "itaedi", - "rsa.misc.severity": "low", - "rsa.misc.vsys": "ore", - "rsa.network.alias_host": [ - "itametc1599.api.test" - ], - "rsa.network.dinterface": "enp0s1164", - "rsa.network.network_service": "ips", - "rsa.network.sinterface": "eth2679", - "rsa.time.event_time": "2018-10-11T14:07:23.000Z", - "service.type": "sophos", - "source.ip": "10.133.45.45", - "source.mac": "01:00:5e:5a:9d:a9", - "source.port": 4180, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-10-25T21:09:57.000Z", - "event.code": "sshd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:10:25-19:09:57 tiumt5462.mail.localhost sshd: Invalid user admin from runt", - "fileset.name": "utm", - "host.name": "tiumt5462.mail.localhost", - "input.type": "log", - "log.offset": 19914, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "tiumt5462.mail.localhost" - ], - "rsa.internal.event_desc": "sshd:Invalid user admin.", - "rsa.internal.messageid": "sshd", - "rsa.network.alias_host": [ - "tiumt5462.mail.localhost" - ], - "rsa.time.event_time": "2018-10-25T21:09:57.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-11-09T04:12:32.000Z", - "event.code": "sshd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:11:9-02:12:32 vol1450.internal.host sshd: Server listening on 10.71.184.162 port 3506.", - "fileset.name": "utm", - "host.name": "vol1450.internal.host", - "input.type": "log", - "log.offset": 19994, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "vol1450.internal.host" - ], - "related.ip": [ - "10.71.184.162" - ], - "rsa.internal.event_desc": "sshd:Server listening; restarting.", - "rsa.internal.messageid": "sshd", - "rsa.network.alias_host": [ - "vol1450.internal.host" - ], - "rsa.time.event_time": "2018-11-09T04:12:32.000Z", - "service.type": "sophos", - "source.ip": "10.71.184.162", - "source.port": 3506, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-11-23T11:15:06.000Z", - "event.code": "ipsec_starter", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:11:23-09:15:06 ipsec_starter[178]: IP address or index of physical interface changed -> reinit of ipsec interface", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 20086, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 178, - "rsa.internal.event_desc": "ipsec_starter: IP address or index of physical interface changed.", - "rsa.internal.messageid": "ipsec_starter", - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-12-07T18:17:40.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:12:7-16:17:40 rporissu573.api.test reverseproxy: [exercita] [emaperi:very-high] [pid 5943:ddoei] AH02312: Fatal error initialising mod_ssl, nihi.", - "fileset.name": "utm", - "host.name": "rporissu573.api.test", - "input.type": "log", - "log.level": "very-high", - "log.offset": 20205, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 5943, - "related.hosts": [ - "rporissu573.api.test" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "nihi", - "rsa.misc.event_id": "AH02312", - "rsa.misc.event_log": "emaperi", - "rsa.misc.result": "Fatal error", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "rporissu573.api.test" - ], - "rsa.time.event_time": "2018-12-07T18:17:40.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2018-12-22T01:20:14.000Z", - "event.action": "allow", - "event.code": "URID", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2018:12:21-23:20:14 nostru774.corp URID: T=tatnonp ------ 1 - [exit] allow: natuserr", - "fileset.name": "utm", - "host.name": "nostru774.corp", - "input.type": "log", - "log.offset": 20356, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "nostru774.corp" - ], - "rsa.internal.messageid": "URID", - "rsa.misc.action": [ - "allow" - ], - "rsa.misc.disposition": "natuserr", - "rsa.network.alias_host": [ - "nostru774.corp" - ], - "rsa.time.event_time": "2018-12-22T01:20:14.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "event.code": "ipsec_starter", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:1:5-06:22:49 ipsec_starter[6226]: IP address or index of physical interface changed -> reinit of ipsec interface", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 20441, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6226, - "rsa.internal.event_desc": "ipsec_starter: IP address or index of physical interface changed.", - "rsa.internal.messageid": "ipsec_starter", - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-01-19T15:25:23.000Z", - "destination.address": "lorsita2216.www5.example", - "event.code": "httpd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:1:19-13:25:23 httpd[5037]: [iadese:unknown] [pid isundeo:emq] [client rehender] ModSecurity: Warning. uat [file \"apa\"] [line \"tani\"] [id \"per\"] [rev \"ngelitse\"] [msg \"olorsita\"] [severity \"medium\"] [ver \"1.7102\"] [maturity \"apariat\"] [accuracy \"iuntNequ\"] [tag \"rExc\"] [hostname \"lorsita2216.www5.example\"] [uri \"turvelil\"] [unique_id \"velitsed\"]rau", - "file.name": "apa", - "fileset.name": "utm", - "input.type": "log", - "log.level": "medium", - "log.offset": 20559, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.7102", - "process.pid": 5037, - "related.hosts": [ - "lorsita2216.www5.example" - ], - "rsa.internal.event_desc": "olorsita", - "rsa.internal.messageid": "httpd", - "rsa.misc.event_log": "iadese", - "rsa.misc.operation_id": "velitsed", - "rsa.misc.result": "unknown", - "rsa.misc.rule": "per", - "rsa.misc.rule_name": "uat", - "rsa.misc.severity": "medium", - "rsa.misc.version": "1.7102", - "rsa.network.gateway": "rehender", - "rsa.network.host_dst": "lorsita2216.www5.example", - "rsa.time.event_time": "2019-01-19T15:25:23.000Z", - "rule.name": "uat", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.path": "turvelil" - }, - { - "@timestamp": "2019-02-02T22:27:57.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:2:2-20:27:57 sum2208.host reverseproxy: [eir] [nia:medium] [pid 4346:mco] [client ritinvol] [quioffi] mod_avscan_check_file_single_part() called with parameter filename=quamquae", - "file.name": "quamquae", - "fileset.name": "utm", - "host.name": "sum2208.host", - "input.type": "log", - "log.level": "medium", - "log.offset": 20914, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 4346, - "related.hosts": [ - "sum2208.host" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "nia", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "sum2208.host" - ], - "rsa.network.gateway": "ritinvol", - "rsa.time.event_time": "2019-02-02T22:27:57.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:2:17-03:30:32 ore6843.local reverseproxy: [usmodite] [aveniam:medium] [pid 5126:xplicab] [client taev] No signature found, cookie: dictasu", - "fileset.name": "utm", - "host.name": "ore6843.local", - "input.type": "log", - "log.level": "medium", - "log.offset": 21097, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 5126, - "related.hosts": [ - "ore6843.local" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.comments": "No signature on cookie", - "rsa.misc.event_log": "aveniam", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "ore6843.local" - ], - "rsa.network.gateway": "taev", - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "destination.ip": "10.177.35.133", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:3:3-10:33:06 Sedu1610.mail.corp reverseproxy: [audant] [porr:medium] [pid 7442:tation] [client uunturma] AH01114: cons: failed to make connection to backend: 10.177.35.133", - "fileset.name": "utm", - "host.name": "Sedu1610.mail.corp", - "input.type": "log", - "log.level": "medium", - "log.offset": 21241, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7442, - "related.hosts": [ - "Sedu1610.mail.corp" - ], - "related.ip": [ - "10.177.35.133" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_id": "AH01114", - "rsa.misc.event_log": "porr", - "rsa.misc.result": "Backend connection failed", - "rsa.misc.severity": "medium", - "rsa.network.alias_host": [ - "Sedu1610.mail.corp" - ], - "rsa.network.gateway": "uunturma", - "rsa.network.network_service": "cons", - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-03-17T19:35:40.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:3:17-17:35:40 corpo6737.example reverseproxy: [officiad] [aliquide:very-high] [pid 6600:errorsi] [client raincidu] [orincidi] cannot connect: failure (111)", - "fileset.name": "utm", - "host.name": "corpo6737.example", - "input.type": "log", - "log.level": "very-high", - "log.offset": 21418, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6600, - "related.hosts": [ - "corpo6737.example" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "aliquide", - "rsa.misc.result": "failure", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "corpo6737.example" - ], - "rsa.network.gateway": "raincidu", - "rsa.time.event_time": "2019-03-17T19:35:40.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-04-01T02:38:14.000Z", - "event.code": "pop3proxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:4:1-00:38:14 pop3proxy[6854]: Master started", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 21579, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6854, - "rsa.internal.event_desc": "pop3proxy:Master started.", - "rsa.internal.messageid": "pop3proxy", - "rsa.time.event_time": "2019-04-01T02:38:14.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "event.code": "pop3proxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:4:15-07:40:49 eratvol314.www.home pop3proxy: Master started", - "fileset.name": "utm", - "host.name": "eratvol314.www.home", - "input.type": "log", - "log.offset": 21629, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "eratvol314.www.home" - ], - "rsa.internal.event_desc": "pop3proxy:Master started.", - "rsa.internal.messageid": "pop3proxy", - "rsa.network.alias_host": [ - "eratvol314.www.home" - ], - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-04-29T16:43:23.000Z", - "destination.address": "seosquir715.local", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:4:29-14:43:23 utemvele1838.mail.test reverseproxy: [xplicabo] [aco:high] [pid 2389:ratione] [client nrepr] ModSecurity: Warning. uipex [file \"alorumw\"] [line \"nibus\"] [id \"eiusmo\"] [msg \"rci\"] [hostname \"seosquir715.local\"] [uri \"ercitati\"] [unique_id \"uiration\"]", - "file.name": "alorumw", - "fileset.name": "utm", - "host.name": "utemvele1838.mail.test", - "input.type": "log", - "log.level": "high", - "log.offset": 21694, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2389, - "related.hosts": [ - "seosquir715.local", - "utemvele1838.mail.test" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.comments": "rci", - "rsa.misc.event_log": "aco", - "rsa.misc.operation_id": "uiration", - "rsa.misc.result": "high", - "rsa.misc.rule": "eiusmo", - "rsa.misc.rule_name": "uipex", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "utemvele1838.mail.test" - ], - "rsa.network.gateway": "nrepr", - "rsa.network.host_dst": "seosquir715.local", - "rsa.time.event_time": "2019-04-29T16:43:23.000Z", - "rule.name": "uipex", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ], - "url.path": "ercitati" - }, - { - "@timestamp": "2019-05-13T23:45:57.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:5:13-21:45:57 ulapari2656.local reverseproxy: [itessec] [non:very-high] [pid 2237:licaboN] [client nvol] [moenimip] cannot connect: failure (111)", - "fileset.name": "utm", - "host.name": "ulapari2656.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 21963, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2237, - "related.hosts": [ - "ulapari2656.local" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_log": "non", - "rsa.misc.result": "failure", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "ulapari2656.local" - ], - "rsa.network.gateway": "nvol", - "rsa.time.event_time": "2019-05-13T23:45:57.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:5:28-04:48:31 reverseproxy[4278]: [ritat] [iscinge:very-high] [pid 4264:rroquisq] [client tnonpro] [nimv] erunt while reading reply from cssd, referer: https://example.org/etcon/ipitlab.gif?utlabore=suscipi#tlabor", - "fileset.name": "utm", - "http.request.referrer": "https://example.org/etcon/ipitlab.gif?utlabore=suscipi#tlabor", - "input.type": "log", - "log.level": "very-high", - "log.offset": 22114, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 4264, - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "erunt", - "rsa.misc.event_log": "iscinge", - "rsa.misc.severity": "very-high", - "rsa.network.gateway": "tnonpro", - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "event.action": "cancel", - "event.code": "URID", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:6:11-11:51:06 URID[7418]: T=xer ------ 1 - [exit] cancel: onemul", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 22333, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7418, - "rsa.internal.messageid": "URID", - "rsa.misc.action": [ - "cancel" - ], - "rsa.misc.disposition": "onemul", - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-06-25T20:53:40.000Z", - "event.action": "ips", - "event.code": "pluto", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:6:25-18:53:40 pluto[7201]: | handling event ips for 10.165.217.56 \"econse\" #otamr", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 22403, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7201, - "related.ip": [ - "10.165.217.56" - ], - "rsa.internal.messageid": "pluto", - "rsa.misc.event_type": "ips", - "rsa.time.event_time": "2019-06-25T20:53:40.000Z", - "service.type": "sophos", - "source.ip": "10.165.217.56", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:7:10-01:56:14 stla2856.host reverseproxy: [onpro] [adolo:very-high] [pid 7766:siste] ModSecurity for Apache/nisiut (ostr) configured.", - "fileset.name": "utm", - "host.name": "stla2856.host", - "input.type": "log", - "log.level": "very-high", - "log.offset": 22490, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7766, - "related.hosts": [ - "stla2856.host" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.disposition": "configured", - "rsa.misc.event_log": "adolo", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "stla2856.host" - ], - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:7:24-08:58:48 peri6748.www5.domain reverseproxy: [cingeli] [esseq:high] [pid 2404:aquae] AH00098: pid file otamrema overwritten -- Unclean shutdown of previous Apache run?", - "file.name": "otamrema", - "fileset.name": "utm", - "host.name": "peri6748.www5.domain", - "input.type": "log", - "log.level": "high", - "log.offset": 22629, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2404, - "related.hosts": [ - "peri6748.www5.domain" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.context": "Unclean shutdown", - "rsa.misc.event_id": "AH00098", - "rsa.misc.event_log": "esseq", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "peri6748.www5.domain" - ], - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-08-07T18:01:23.000Z", - "event.action": "accept", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:8:7-16:01:23 tnon5442.internal.test reverseproxy: [ive] [tquido:very-high] [pid 6108:taliquip] AH00295: caught accept, ectetu", - "fileset.name": "utm", - "host.name": "tnon5442.internal.test", - "input.type": "log", - "log.level": "very-high", - "log.offset": 22806, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 6108, - "related.hosts": [ - "tnon5442.internal.test" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.action": [ - "accept" - ], - "rsa.misc.disposition": "ectetu", - "rsa.misc.event_id": "AH00295", - "rsa.misc.event_log": "tquido", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "tnon5442.internal.test" - ], - "rsa.time.event_time": "2019-08-07T18:01:23.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-08-22T01:03:57.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:8:21-23:03:57 ariatu2606.www.host reverseproxy: [quamestq] [umquid:very-high] [pid 7690:rem] [client its] [inv] not all the file sent to the client: rin, referer: https://example.org/tation/tutlabo.jpg?amvo=ullamco#tati", - "fileset.name": "utm", - "host.name": "ariatu2606.www.host", - "http.request.referrer": "https://example.org/tation/tutlabo.jpg?amvo=ullamco#tati", - "input.type": "log", - "log.level": "very-high", - "log.offset": 22937, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7690, - "related.hosts": [ - "ariatu2606.www.host" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.context": "Not all file sent to client", - "rsa.misc.event_log": "umquid", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "ariatu2606.www.host" - ], - "rsa.network.gateway": "its", - "rsa.time.event_time": "2019-08-22T01:03:57.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "destination.ip": "10.248.62.55", - "destination.mac": "01:00:5e:d6:f3:bc", - "destination.port": 4206, - "event.code": "ulogd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:9:5-06:06:31 imv1805.api.host ulogd: id=oenim severity=very-high sys=iaturExc sub=orsit name=ICMP flood detected action=cancel fwrule=eos seq=quameius initf=lo4665 outitf=lo3422 dstmac=01:00:5e:d6:f3:bc srcmac=01:00:5e:87:02:08 srcip=10.96.243.231 dstip=10.248.62.55 proto=ugiat length=quiin tos=apar prec=eleumiur ttl=chite srcport=5632 dstport=4206 tcpflags=tevelit info=etc code=lorem type=temvele", - "fileset.name": "utm", - "host.name": "imv1805.api.host", - "input.type": "log", - "log.level": "very-high", - "log.offset": 23162, - "observer.egress.interface.name": "lo3422", - "observer.ingress.interface.name": "lo4665", - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "imv1805.api.host" - ], - "related.ip": [ - "10.248.62.55", - "10.96.243.231" - ], - "rsa.internal.event_desc": "ICMP", - "rsa.internal.messageid": "ulogd", - "rsa.investigations.ec_activity": "Scan", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "TEV", - "rsa.investigations.event_cat": 1901000000, - "rsa.investigations.event_cat_name": "Other.Default", - "rsa.misc.context": "etc", - "rsa.misc.policy_id": "eos", - "rsa.misc.rule": "oenim", - "rsa.misc.severity": "very-high", - "rsa.misc.vsys": "iaturExc", - "rsa.network.alias_host": [ - "imv1805.api.host" - ], - "rsa.network.dinterface": "lo3422", - "rsa.network.network_service": "orsit", - "rsa.network.sinterface": "lo4665", - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "service.type": "sophos", - "source.ip": "10.96.243.231", - "source.mac": "01:00:5e:87:02:08", - "source.port": 5632, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-09-19T15:09:05.000Z", - "destination.ip": "10.132.101.158", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:9:19-13:09:05 rita600.www5.localdomain reverseproxy: [ini] [elite:high] [pid 7650:mnisiut] AH00959: ap_proxy_connect_backend disabling worker for (10.132.101.158) for cipitlabs", - "fileset.name": "utm", - "host.name": "rita600.www5.localdomain", - "input.type": "log", - "log.level": "high", - "log.offset": 23568, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 7650, - "related.hosts": [ - "rita600.www5.localdomain" - ], - "related.ip": [ - "10.132.101.158" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_id": "AH00959", - "rsa.misc.event_log": "elite", - "rsa.misc.result": "disabling worker", - "rsa.misc.severity": "high", - "rsa.network.alias_host": [ - "rita600.www5.localdomain" - ], - "rsa.time.event_time": "2019-09-19T15:09:05.000Z", - "rsa.time.process_time": "cipitlab", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-10-03T22:11:40.000Z", - "event.code": "sshd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:10:3-20:11:40 sshd[2014]: Did not receive identification string from rroq", - "fileset.name": "utm", - "input.type": "log", - "log.offset": 23750, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 2014, - "rsa.internal.event_desc": "sshd: Did not receive identification string.", - "rsa.internal.messageid": "sshd", - "rsa.time.event_time": "2019-10-03T22:11:40.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "event.code": "reverseproxy", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:10:18-03:14:14 admini1122.www.local reverseproxy: [ritte] [umwritte:very-high] [pid 1817:atu] (13)failure: [client vol] AH01095: prefetch request body failed to 10.96.193.132:5342 (orumwr) from bori ()", - "fileset.name": "utm", - "host.name": "admini1122.www.local", - "input.type": "log", - "log.level": "very-high", - "log.offset": 23829, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 1817, - "related.hosts": [ - "admini1122.www.local" - ], - "related.ip": [ - "10.96.193.132" - ], - "rsa.internal.messageid": "reverseproxy", - "rsa.misc.event_id": "AH01095", - "rsa.misc.event_log": "umwritte", - "rsa.misc.result": "failure", - "rsa.misc.severity": "very-high", - "rsa.network.alias_host": [ - "admini1122.www.local" - ], - "rsa.network.gateway": "vol", - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "service.type": "sophos", - "source.ip": "10.96.193.132", - "source.port": 5342, - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "event.code": "confd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:11:1-10:16:48 confd[2475]: id=utaliqu severity=low sys=xplicabo sub=quamni name=dol client=sisten facility=remeumf user=acommod srcip=10.96.200.83 version=1.7416 storage=sper object=asia class=roident type=olorem attributes=teursintcount=evelites node=nostr account=lapariat", - "file.directory": "sper", - "fileset.name": "utm", - "input.type": "log", - "log.level": "low", - "log.offset": 24036, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "observer.version": "1.7416", - "process.pid": 2475, - "related.ip": [ - "10.96.200.83" - ], - "related.user": [ - "acommod", - "lapariat" - ], - "rsa.identity.logon_type": "remeumf", - "rsa.internal.event_desc": "dol", - "rsa.internal.messageid": "confd", - "rsa.misc.group_object": "roident", - "rsa.misc.node": "nostr", - "rsa.misc.obj_name": "teursintcount=evelites", - "rsa.misc.obj_type": "olorem", - "rsa.misc.severity": "low", - "rsa.misc.version": "1.7416", - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "service.name": "quamni", - "service.type": "sophos", - "source.ip": "10.96.200.83", - "tags": [ - "forwarded", - "sophos.utm" - ], - "user.name": "acommod" - }, - { - "@timestamp": "2019-11-15T19:19:22.000Z", - "event.code": "sshd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:11:15-17:19:22 emvel4391.localhost sshd: Did not receive identification string from quelaud", - "fileset.name": "utm", - "host.name": "emvel4391.localhost", - "input.type": "log", - "log.offset": 24316, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "emvel4391.localhost" - ], - "rsa.internal.event_desc": "sshd: Did not receive identification string.", - "rsa.internal.messageid": "sshd", - "rsa.network.alias_host": [ - "emvel4391.localhost" - ], - "rsa.time.event_time": "2019-11-15T19:19:22.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-11-30T02:21:57.000Z", - "event.code": "confd-sync", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:11:30-00:21:57 confd-sync[5454]: id=smodite severity=high sys=utpersp sub=rnatu name=ico", - "fileset.name": "utm", - "input.type": "log", - "log.level": "high", - "log.offset": 24413, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "process.pid": 5454, - "rsa.internal.event_desc": "ico", - "rsa.internal.messageid": "confd-sync", - "rsa.misc.severity": "high", - "rsa.time.event_time": "2019-11-30T02:21:57.000Z", - "service.name": "rnatu", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - }, - { - "@timestamp": "2019-12-14T09:24:31.000Z", - "event.code": "sshd", - "event.dataset": "sophos.utm", - "event.module": "sophos", - "event.original": "2019:12:14-07:24:31 untinc5531.www5.test sshd: error: Could not get shadow information for NOUSER", - "fileset.name": "utm", - "host.name": "untinc5531.www5.test", - "input.type": "log", - "log.offset": 24507, - "observer.product": "UTM", - "observer.type": "Firewall", - "observer.vendor": "Sophos", - "related.hosts": [ - "untinc5531.www5.test" - ], - "rsa.internal.event_desc": "sshd:error:Could not get shadow information for NOUSER", - "rsa.internal.messageid": "sshd", - "rsa.network.alias_host": [ - "untinc5531.www5.test" - ], - "rsa.time.event_time": "2019-12-14T09:24:31.000Z", - "service.type": "sophos", - "tags": [ - "forwarded", - "sophos.utm" - ] - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/squid/README.md b/x-pack/filebeat/module/squid/README.md deleted file mode 100644 index 6956555b2dd..00000000000 --- a/x-pack/filebeat/module/squid/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# squid module - -This is a module for Squid logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML squid version 112 -at 2020-07-13 17:55:42.446629 +0000 UTC. - diff --git a/x-pack/filebeat/module/squid/_meta/config.yml b/x-pack/filebeat/module/squid/_meta/config.yml deleted file mode 100644 index ad0f3f2053c..00000000000 --- a/x-pack/filebeat/module/squid/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: squid - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9520 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/squid/_meta/docs.asciidoc b/x-pack/filebeat/module/squid/_meta/docs.asciidoc deleted file mode 100644 index 25a8e1edc1e..00000000000 --- a/x-pack/filebeat/module/squid/_meta/docs.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[role="xpack"] - -:modulename: squid -:has-dashboards: false - -== Squid module - -deprecated::[8.12.0,"This module is deprecated. See <> for migration options."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Squid logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: log - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `log` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "squid" device revision 112. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9520` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/squid/_meta/fields.yml b/x-pack/filebeat/module/squid/_meta/fields.yml deleted file mode 100644 index 6268a29d8d9..00000000000 --- a/x-pack/filebeat/module/squid/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: squid - title: Squid - description: > - squid fields. - fields: diff --git a/x-pack/filebeat/module/squid/fields.go b/x-pack/filebeat/module/squid/fields.go deleted file mode 100644 index 35197a8d3e4..00000000000 --- a/x-pack/filebeat/module/squid/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package squid - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "squid", asset.ModuleFieldsPri, AssetSquid); err != nil { - panic(err) - } -} - -// AssetSquid returns asset data. -// This is the base64 encoded zlib format compressed contents of module/squid. -func AssetSquid() string { - return "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" -} diff --git a/x-pack/filebeat/module/squid/log/_meta/fields.yml b/x-pack/filebeat/module/squid/log/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/squid/log/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/squid/log/config/input.yml b/x-pack/filebeat/module/squid/log/config/input.yml deleted file mode 100644 index fadcc7a49b8..00000000000 --- a/x-pack/filebeat/module/squid/log/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Squid" - product: "Proxy" - type: "Proxies" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/squid/log/config/liblogparser.js - - ${path.home}/module/squid/log/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/squid/log/config/liblogparser.js b/x-pack/filebeat/module/squid/log/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/squid/log/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{sport->} [%{fld20->} %{fld21}] \"%{web_method->} %{url->} %{network_service}\" %{daddr->} %{fld1->} %{username->} \"%{webpage}\" %{resultcode->} %{content_type->} %{sbytes->} \"%{web_referer}\" \"%{user_agent}\" %{action}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, -])); - -var dup16 = match("MESSAGE#19:GET:01", "nwparser.payload", "%{event_time_string}.%{fld20->} %{duration->} %{saddr->} %{action}/%{resultcode->} %{sbytes->} %{web_method->} %{url->} %{username->} %{h_code}/%{daddr->} %{content_type}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup13, - dup8, - dup9, - dup10, - dup14, - dup12, -])); - -var dup17 = match("MESSAGE#2:POST", "nwparser.payload", "%{saddr->} %{sport->} [%{fld20->} %{fld21}] \"%{web_method->} %{url->} %{network_service}\" %{daddr->} %{fld1->} %{username->} \"%{webpage}\" %{resultcode->} %{content_type->} %{sbytes->} \"%{web_referer}\" \"%{user_agent}\" %{action}", processor_chain([ - dup1, - dup2, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, -])); - -var dup18 = match("MESSAGE#21:POST:01", "nwparser.payload", "%{event_time_string}.%{fld20->} %{duration->} %{saddr->} %{action}/%{resultcode->} %{sbytes->} %{web_method->} %{url->} %{username->} %{h_code}/%{daddr->} %{content_type}", processor_chain([ - dup1, - dup2, - dup4, - dup13, - dup8, - dup9, - dup10, - dup14, - dup12, -])); - -var dup19 = match("MESSAGE#3:PUT", "nwparser.payload", "%{saddr->} %{sport->} [%{fld20->} %{fld21}] \"%{web_method->} %{url->} %{network_service}\" %{daddr->} %{fld1->} %{username->} \"%{webpage}\" %{resultcode->} %{content_type->} %{sbytes->} \"%{web_referer}\" \"%{user_agent}\" %{action}", processor_chain([ - dup1, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, -])); - -var dup20 = match("MESSAGE#22:PUT:01", "nwparser.payload", "%{event_time_string}.%{fld20->} %{duration->} %{saddr->} %{action}/%{resultcode->} %{sbytes->} %{web_method->} %{url->} %{username->} %{h_code}/%{daddr->} %{content_type}", processor_chain([ - dup1, - dup13, - dup8, - dup9, - dup10, - dup14, - dup12, -])); - -var hdr1 = match("HEADER#0:0001", "message", "%{hsaddr->} %{hsport->} [%{fld20->} %{fld21}] \"%{messageid->} %{p0}", processor_chain([ - setc("header_id","0001"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hsaddr"), - constant(" "), - field("hsport"), - constant(" ["), - field("fld20"), - constant(" "), - field("fld21"), - constant("] \""), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{hevent_time_string->} %{hduration->} %{hsaddr->} %{haction}/%{hresultcode->} %{hsbytes->} %{messageid->} %{p0}", processor_chain([ - setc("header_id","0002"), - call({ - dest: "nwparser.payload", - fn: STRCAT, - args: [ - field("hevent_time_string"), - constant(" "), - field("hduration"), - constant(" "), - field("hsaddr"), - constant(" "), - field("haction"), - constant("/"), - field("hresultcode"), - constant(" "), - field("hsbytes"), - constant(" "), - field("messageid"), - constant(" "), - field("p0"), - ], - }), -])); - -var select1 = linear_select([ - hdr1, - hdr2, -]); - -var msg1 = msg("GET", dup15); - -var part1 = match("MESSAGE#18:GET:02", "nwparser.payload", "%{saddr->} %{sport->} [%{fld20->} %{fld21}] \"%{web_method->} %{url->} %{network_service}\" %{resultcode->} %{sbytes->} \"%{web_referer}\" \"%{user_agent}\" %{action->} %{daddr->} %{content_type->} %{duration}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, -])); - -var msg2 = msg("GET:02", part1); - -var msg3 = msg("GET:01", dup16); - -var select2 = linear_select([ - msg1, - msg2, - msg3, -]); - -var msg4 = msg("HEAD", dup15); - -var msg5 = msg("HEAD:01", dup16); - -var select3 = linear_select([ - msg4, - msg5, -]); - -var msg6 = msg("POST", dup17); - -var msg7 = msg("POST:01", dup18); - -var select4 = linear_select([ - msg6, - msg7, -]); - -var msg8 = msg("PUT", dup19); - -var msg9 = msg("PUT:01", dup20); - -var select5 = linear_select([ - msg8, - msg9, -]); - -var msg10 = msg("DELETE", dup19); - -var msg11 = msg("DELETE:01", dup20); - -var select6 = linear_select([ - msg10, - msg11, -]); - -var msg12 = msg("TRACE", dup19); - -var msg13 = msg("TRACE:01", dup20); - -var select7 = linear_select([ - msg12, - msg13, -]); - -var msg14 = msg("OPTIONS", dup19); - -var msg15 = msg("OPTIONS:01", dup20); - -var select8 = linear_select([ - msg14, - msg15, -]); - -var msg16 = msg("CONNECT", dup17); - -var msg17 = msg("CONNECT:01", dup18); - -var select9 = linear_select([ - msg16, - msg17, -]); - -var msg18 = msg("ICP_QUERY", dup19); - -var msg19 = msg("ICP_QUERY:01", dup20); - -var select10 = linear_select([ - msg18, - msg19, -]); - -var msg20 = msg("PURGE", dup19); - -var msg21 = msg("PURGE:01", dup20); - -var select11 = linear_select([ - msg20, - msg21, -]); - -var msg22 = msg("PROPFIND", dup19); - -var msg23 = msg("PROPFIND:01", dup20); - -var select12 = linear_select([ - msg22, - msg23, -]); - -var msg24 = msg("PROPATCH", dup19); - -var msg25 = msg("PROPATCH:01", dup20); - -var select13 = linear_select([ - msg24, - msg25, -]); - -var msg26 = msg("MKOL", dup19); - -var msg27 = msg("MKOL:01", dup20); - -var select14 = linear_select([ - msg26, - msg27, -]); - -var msg28 = msg("COPY", dup19); - -var msg29 = msg("COPY:01", dup20); - -var select15 = linear_select([ - msg28, - msg29, -]); - -var msg30 = msg("MOVE", dup19); - -var msg31 = msg("MOVE:01", dup20); - -var select16 = linear_select([ - msg30, - msg31, -]); - -var msg32 = msg("LOCK", dup19); - -var msg33 = msg("LOCK:01", dup20); - -var select17 = linear_select([ - msg32, - msg33, -]); - -var msg34 = msg("UNLOCK", dup19); - -var msg35 = msg("UNLOCK:01", dup20); - -var select18 = linear_select([ - msg34, - msg35, -]); - -var msg36 = msg("NONE", dup19); - -var msg37 = msg("NONE:01", dup20); - -var select19 = linear_select([ - msg36, - msg37, -]); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "CONNECT": select9, - "COPY": select15, - "DELETE": select6, - "GET": select2, - "HEAD": select3, - "ICP_QUERY": select10, - "LOCK": select17, - "MKOL": select14, - "MOVE": select16, - "NONE": select19, - "OPTIONS": select8, - "POST": select4, - "PROPATCH": select13, - "PROPFIND": select12, - "PURGE": select11, - "PUT": select5, - "TRACE": select7, - "UNLOCK": select18, - }), -]); - -var part2 = match("MESSAGE#0:GET", "nwparser.payload", "%{saddr->} %{sport->} [%{fld20->} %{fld21}] \"%{web_method->} %{url->} %{network_service}\" %{daddr->} %{fld1->} %{username->} \"%{webpage}\" %{resultcode->} %{content_type->} %{sbytes->} \"%{web_referer}\" \"%{user_agent}\" %{action}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, -])); - -var part3 = match("MESSAGE#19:GET:01", "nwparser.payload", "%{event_time_string}.%{fld20->} %{duration->} %{saddr->} %{action}/%{resultcode->} %{sbytes->} %{web_method->} %{url->} %{username->} %{h_code}/%{daddr->} %{content_type}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup13, - dup8, - dup9, - dup10, - dup14, - dup12, -])); - -var part4 = match("MESSAGE#2:POST", "nwparser.payload", "%{saddr->} %{sport->} [%{fld20->} %{fld21}] \"%{web_method->} %{url->} %{network_service}\" %{daddr->} %{fld1->} %{username->} \"%{webpage}\" %{resultcode->} %{content_type->} %{sbytes->} \"%{web_referer}\" \"%{user_agent}\" %{action}", processor_chain([ - dup1, - dup2, - dup4, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, -])); - -var part5 = match("MESSAGE#21:POST:01", "nwparser.payload", "%{event_time_string}.%{fld20->} %{duration->} %{saddr->} %{action}/%{resultcode->} %{sbytes->} %{web_method->} %{url->} %{username->} %{h_code}/%{daddr->} %{content_type}", processor_chain([ - dup1, - dup2, - dup4, - dup13, - dup8, - dup9, - dup10, - dup14, - dup12, -])); - -var part6 = match("MESSAGE#3:PUT", "nwparser.payload", "%{saddr->} %{sport->} [%{fld20->} %{fld21}] \"%{web_method->} %{url->} %{network_service}\" %{daddr->} %{fld1->} %{username->} \"%{webpage}\" %{resultcode->} %{content_type->} %{sbytes->} \"%{web_referer}\" \"%{user_agent}\" %{action}", processor_chain([ - dup1, - dup5, - dup6, - dup7, - dup8, - dup9, - dup10, - dup11, - dup12, -])); - -var part7 = match("MESSAGE#22:PUT:01", "nwparser.payload", "%{event_time_string}.%{fld20->} %{duration->} %{saddr->} %{action}/%{resultcode->} %{sbytes->} %{web_method->} %{url->} %{username->} %{h_code}/%{daddr->} %{content_type}", processor_chain([ - dup1, - dup13, - dup8, - dup9, - dup10, - dup14, - dup12, -])); diff --git a/x-pack/filebeat/module/squid/log/ingest/pipeline.yml b/x-pack/filebeat/module/squid/log/ingest/pipeline.yml deleted file mode 100644 index f9f6ddaa027..00000000000 --- a/x-pack/filebeat/module/squid/log/ingest/pipeline.yml +++ /dev/null @@ -1,92 +0,0 @@ ---- -description: Pipeline for Squid - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - - remove: - field: url.scheme - ignore_missing: true - if: ctx?.url?.scheme == ctx?.url?.domain - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/squid/log/manifest.yml b/x-pack/filebeat/module/squid/log/manifest.yml deleted file mode 100644 index 6e909b014f5..00000000000 --- a/x-pack/filebeat/module/squid/log/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["squid.log", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9537 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/squid/log/test/access1.log b/x-pack/filebeat/module/squid/log/test/access1.log deleted file mode 100644 index cb21bd0fc0b..00000000000 --- a/x-pack/filebeat/module/squid/log/test/access1.log +++ /dev/null @@ -1,100 +0,0 @@ -1157689312.049 5006 10.105.21.199 TCP_MISS/200 19763 CONNECT login.yahoo.com:443 badeyek DIRECT/209.73.177.115 - -1157689320.327 2864 10.105.21.199 TCP_MISS/200 10182 GET http://www.goonernews.com/ badeyek DIRECT/207.58.145.61 text/html -1157689320.343 1357 10.105.21.199 TCP_REFRESH_HIT/304 214 GET http://www.goonernews.com/styles.css badeyek DIRECT/207.58.145.61 - -1157689321.315 1 10.105.21.199 TCP_HIT/200 1464 GET http://www.goonernews.com/styles.css badeyek NONE/- text/css -1157689322.780 1464 10.105.21.199 TCP_HIT/200 5626 GET http://www.google-analytics.com/urchin.js badeyek NONE/- text/javascript -1157689323.718 3856 10.105.21.199 TCP_MISS/200 30169 GET http://www.goonernews.com/ badeyek DIRECT/207.58.145.61 text/html -1157689324.156 1372 10.105.21.199 TCP_MISS/200 399 GET http://www.google-analytics.com/__utm.gif? badeyek DIRECT/66.102.9.147 image/gif -1157689324.266 1457 10.105.21.199 TCP_REFRESH_HIT/304 215 GET http://www.goonernews.com/graphics/newslogo.gif badeyek DIRECT/207.58.145.61 - -1157689324.281 1465 10.105.21.199 TCP_REFRESH_HIT/304 215 GET http://www.goonernews.com/shop/arsenal_shop_ad.jpg badeyek DIRECT/207.58.145.61 - -1157689325.734 1452 10.105.21.199 TCP_REFRESH_HIT/304 214 GET http://www.goonernews.com/flags/FUS.gif badeyek DIRECT/207.58.145.61 - -1157689325.736 2 10.105.21.199 TCP_HIT/200 1353 GET http://www.goonernews.com/flags/FGB.gif badeyek NONE/- image/gif -1157689325.953 2603 10.105.21.199 TCP_MISS/200 1013 GET http://as.casalemedia.com/s? badeyek DIRECT/209.85.16.38 text/html -1157689326.703 4459 10.105.21.199 TCP_MISS/200 1845 CONNECT us.bc.yahoo.com:443 badeyek DIRECT/68.142.213.132 - -1157689327.312 1356 10.105.21.199 TCP_MISS/302 729 GET http://impgb.tradedoubler.com/imp/img/16349696/992098 badeyek DIRECT/217.212.240.172 text/html -1157689327.751 3484 10.105.21.199 TCP_MISS/200 1577 GET http://4.adbrite.com/mb/text_group.php? badeyek DIRECT/206.169.136.22 text/html -1157689327.803 9 10.105.21.199 TCP_HIT/200 1353 GET http://www.goonernews.com/flags/FFR.gif badeyek NONE/- image/gif -1157689329.234 1431 10.105.21.199 TCP_REFRESH_HIT/304 214 GET http://www.goonernews.com/flags/FAU.gif badeyek DIRECT/207.58.145.61 - -1157689329.280 1414 10.105.21.199 TCP_REFRESH_HIT/304 213 GET http://www.goonernews.com/graphics/spacer.gif badeyek DIRECT/207.58.145.61 - -1157689330.920 1686 10.105.21.199 TCP_MISS/200 1784 GET http://4.adbrite.com/mb/text_group.php? badeyek DIRECT/64.127.126.178 text/html -1157689331.313 3997 10.105.21.199 TCP_MISS/302 851 GET http://ff.connextra.com/Ladbrokes/selector/image? badeyek DIRECT/213.160.98.161 - -1157689335.275 3962 10.105.21.199 TCP_MISS/200 30904 GET http://dd.connextra.com/servlet/controller? badeyek DIRECT/213.160.98.160 image/gif -1157689337.481 4 10.105.47.218 TCP_DENIED/407 1661 GET http://hi5.com/ - NONE/- text/html -1157689342.757 3657 10.105.21.199 TCP_MISS/200 12569 CONNECT login.yahoo.com:443 badeyek DIRECT/209.73.177.115 - -1157689343.106 1 10.105.33.214 TCP_DENIED/407 1752 GET http://update.messenger.yahoo.com/msgrcli7.html - NONE/- text/html -1157689343.782 1371 10.105.33.214 TCP_MISS/200 484 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain -1157689344.736 4969 10.105.47.218 TCP_MISS/200 29359 GET http://hi5.com/ nazsoau DIRECT/204.13.51.238 text/html -1157689344.798 1631 10.105.47.218 TCP_MISS/200 5930 GET http://hi5.com/friend/styles/homepage.css nazsoau DIRECT/204.13.51.238 text/css -1157689345.641 1810 10.105.33.214 TCP_MISS/200 1645 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain -1157689346.267 880 10.105.37.58 TCP_DENIED/407 1812 GET http://rms.adobe.com/read/0600/win_/ENU/read0600win_ENUadbe0000.xml - NONE/- text/html -1157689347.190 10 10.105.47.218 TCP_IMS_HIT/304 217 GET http://images.hi5.com/styles/style.css nazsoau NONE/- text/css -1157689347.307 116 10.105.47.218 TCP_IMS_HIT/304 217 GET http://images.hi5.com/friend/styles/buttons_en_us.css nazsoau NONE/- text/css -1157689347.751 6160 10.105.47.218 TCP_MISS/200 27799 GET http://hi5.com/ nazsoau DIRECT/204.13.51.238 text/html -1157689349.064 1758 10.105.47.218 TCP_MISS/200 4470 GET http://hi5.com/friend/styles/headernav.css nazsoau DIRECT/204.13.51.238 text/css -1157689350.829 1393 10.105.33.214 TCP_MISS/200 382 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain -1157689353.439 3667 10.105.33.214 TCP_MISS/200 24095 GET http://insider.msg.yahoo.com/? adeolaegbedokun DIRECT/68.142.194.14 text/html -1157689353.939 4899 10.105.33.214 TCP_MISS/200 22964 GET http://radio.launch.yahoo.com/radio/play/playmessenger.asp adeolaegbedokun DIRECT/68.142.219.132 text/html -1157689354.877 1349 10.105.33.214 TCP_MISS/200 646 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain -1157689355.517 1578 10.105.33.214 TCP_MISS/200 699 GET http://address.yahoo.com/yab/us? adeolaegbedokun DIRECT/209.191.93.51 text/xml -1157689356.907 6741 10.105.21.199 TCP_MISS/302 734 GET http://fxfeeds.mozilla.org/rss20.xml badeyek DIRECT/63.245.209.21 text/html -1157689357.267 6424 10.105.33.214 TCP_MISS/200 31400 GET http://insider.msg.yahoo.com/ycontent/? adeolaegbedokun DIRECT/68.142.231.252 text/xml -1157689357.720 2831 10.105.33.214 TCP_MISS/200 21152 GET http://insider.msg.yahoo.com/ycontent/? adeolaegbedokun DIRECT/68.142.194.14 text/xml -1157689358.173 1 10.105.37.17 TCP_DENIED/407 1667 CONNECT us.mcafee.com:443 - NONE/- text/html -1157689358.174 0 10.105.37.17 TCP_DENIED/407 1767 POST http://us.mcafee.com/apps/agent/submgr/appinstru.asp - NONE/- text/html -1157689358.174 0 10.105.37.17 TCP_DENIED/407 1761 POST http://us.mcafee.com/apps/agent/submgr/appsync.asp - NONE/- text/html -1157689358.226 0 10.105.37.17 TCP_DENIED/407 1667 CONNECT us.mcafee.com:443 - NONE/- text/html -1157689358.486 711 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_stations.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689358.683 0 10.105.37.17 TCP_DENIED/407 1667 CONNECT us.mcafee.com:443 - NONE/- text/html -1157689359.199 713 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_stations_over.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689359.269 1982 10.105.33.214 TCP_MISS/200 362 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain -1157689359.924 725 10.105.33.214 TCP_REFRESH_HIT/304 511 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_left.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689360.611 687 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/launchcast_radio.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689360.980 1 10.105.47.191 TCP_DENIED/407 1767 POST http://us.mcafee.com/apps/agent/submgr/appinstru.asp - NONE/- text/html -1157689361.188 1 10.105.47.191 TCP_DENIED/407 1761 POST http://us.mcafee.com/apps/agent/submgr/appsync.asp - NONE/- text/html -1157689361.393 783 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_right.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689361.564 2242 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_center.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689362.220 827 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_controls_off.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689362.315 751 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/common_radio/resources/images/t.gif adeolaegbedokun DIRECT/68.142.219.132 - -1157689362.318 3 10.105.33.214 TCP_IMS_HIT/304 218 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_off_state_station.gif adeolaegbedokun NONE/- image/gif -1157689362.332 13 10.105.33.214 TCP_IMS_HIT/304 218 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_controls_fill.gif adeolaegbedokun NONE/- image/gif -1157689362.341 8 10.105.33.214 TCP_HIT/200 2263 GET http://us.i1.yimg.com/us.yimg.com/i/us/toolbar50x50.gif adeolaegbedokun NONE/- image/gif -1157689363.423 6517 10.105.21.199 TCP_REFRESH_MISS/200 17396 GET http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml badeyek DIRECT/212.58.226.33 application/xml -1157689364.361 2140 10.105.33.214 TCP_MISS/200 407 GET http://insider.msg.yahoo.com/ycontent/beacon.php adeolaegbedokun DIRECT/68.142.231.252 image/gif -1157689364.402 7 10.105.33.214 TCP_IMS_HIT/304 219 GET http://us.ent1.yimg.com/images.launch.yahoo.com/000/032/457/32457654.jpg adeolaegbedokun NONE/- image/jpeg -1157689364.411 8 10.105.33.214 TCP_HIT/200 10593 GET http://us.news1.yimg.com/us.yimg.com/p/ap/20060906/thumb.71d29ded334347c48ac88433d033c9a9.pakistan_bin_laden_nyol440.jpg adeolaegbedokun NONE/- image/jpeg -1157689365.312 2420 10.105.33.214 TCP_MISS/302 1270 POST http://radio.launch.yahoo.com/radio/play/authplay.asp adeolaegbedokun DIRECT/68.142.219.132 text/html -1157689366.377 1966 10.105.33.214 TCP_MISS/200 10519 GET http://us.news1.yimg.com/us.yimg.com/p/ap/20060908/thumb.443f57762d7349669f609fbf0c97a5f1.academy_awards_host_cacp101.jpg adeolaegbedokun DIRECT/213.160.98.159 image/jpeg -1157689368.080 1703 10.105.33.214 TCP_MISS/200 515 GET http://radio.music.yahoo.com/radio/player/ymsgr/initstationfeed.asp? adeolaegbedokun DIRECT/68.142.219.132 text/xml -1157689368.370 3057 10.105.33.214 TCP_MISS/200 14411 GET http://radio.music.yahoo.com/radio/player/ymsgr/initstationfeed.asp? adeolaegbedokun DIRECT/68.142.219.132 text/xml -1157689368.889 808 10.105.33.214 TCP_MISS/200 1627 GET http://radio.launch.yahoo.com/radio/play/authplay.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html -1157689369.097 1226 10.105.37.65 TCP_DENIED/407 1728 GET http://natrocket.kmip.net:5288/iesocks? - NONE/- text/html -1157689369.702 0 10.105.37.65 TCP_DENIED/407 1725 GET http://natrocket.kmip.net:5288/return? - NONE/- text/html -1157689370.125 1202 10.105.33.214 TCP_MISS/200 13124 GET http://us.news1.yimg.com/us.yimg.com/p/ap/20060907/thumb.1caf18e56db54eafb16da58356eb3382.amazon_com_online_video_watw101.jpg adeolaegbedokun DIRECT/213.160.98.159 image/jpeg -1157689370.862 736 10.105.33.214 TCP_MISS/302 912 GET http://radio.launch.yahoo.com/radio/clientdata/515/starter.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html -1157689371.690 828 10.105.33.214 TCP_MISS/200 1450 GET http://radio.launch.yahoo.com/radio/player/default.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html -1157689371.987 3617 10.105.33.214 TCP_MISS/200 30432 GET http://us.a2.yimg.com/us.yimg.com/a/ya/yahoo_messenger/081106_lrec_msgr_interophitchhiker.swf? adeolaegbedokun DIRECT/213.160.98.152 application/x-shockwave-flash -1157689373.315 1626 10.105.33.214 TCP_MISS/200 14643 GET http://radio.launch.yahoo.com/radio/player/stickwall.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html -1157689374.065 2078 10.105.33.214 TCP_MISS/200 425 GET http://us.bc.yahoo.com/b? adeolaegbedokun DIRECT/68.142.213.132 image/gif -1157689376.221 2130 10.105.33.214 TCP_MISS/200 407 GET http://insider.msg.yahoo.com/ycontent/beacon.php;_ylc=X1MDNTcwMzAyODMEX3IDMgRldnQDdDAEaW50bAN1cwR2ZXIDNywwLDIsMTIw? adeolaegbedokun DIRECT/68.142.194.14 image/gif -1157689377.171 3412 10.105.33.214 TCP_MISS/200 1476 CONNECT pclick.internal.yahoo.com:443 adeolaegbedokun DIRECT/216.109.124.55 - -1157689377.191 11 10.105.33.214 TCP_IMS_HIT/304 233 GET http://a1568.g.akamai.net/7/1568/1600/20051025184124/radio.launch.yahoo.com/radioapi/includes/js/compVersionedJS/rapiBridge_1_4.js adeolaegbedokun NONE/- application/x-javascript -1157689377.424 1159 10.105.33.214 TCP_MISS/304 236 GET http://a1568.g.akamai.net/7/1568/1600/20040405222754/radio.launch.yahoo.com/radio/clientdata/515/other.css adeolaegbedokun DIRECT/213.160.98.159 text/css -1157689378.221 797 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_left.gif adeolaegbedokun DIRECT/213.160.98.159 image/gif -1157689378.473 3288 10.105.21.199 TCP_MISS/200 2681 CONNECT login.yahoo.com:443 badeyek DIRECT/209.73.177.115 - -1157689378.909 1405 10.105.33.214 TCP_MISS/304 136 GET http://a1568.g.akamai.net/7/1568/1600/20050829181418/radio.launch.yahoo.com/radio/common_radio/resources/images/noaccess_msgr_uk.gif adeolaegbedokun DIRECT/213.160.98.167 - -1157689378.924 702 10.105.33.214 TCP_MISS/304 237 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_right.gif adeolaegbedokun DIRECT/213.160.98.159 image/gif -1157689378.929 4 10.105.33.214 TCP_IMS_HIT/304 218 GET http://a1568.g.akamai.net/7/1568/1600/20040405222807/radio.launch.yahoo.com/radio/common_radio/resources/images/t.gif adeolaegbedokun NONE/- image/gif -1157689379.472 563 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_off.gif adeolaegbedokun DIRECT/213.160.98.167 image/gif -1157689379.488 560 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222756/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_center.gif adeolaegbedokun DIRECT/213.160.98.159 image/gif -1157689380.159 685 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_fill.gif adeolaegbedokun DIRECT/213.160.98.167 image/gif -1157689381.267 1 10.105.37.180 TCP_DENIED/407 1728 GET http://www.google.com/supported_domains - NONE/- text/html -1157689381.659 0 10.105.47.191 TCP_DENIED/407 1782 GET http://us.mcafee.com/apps/agent/en-us/agent5/chknews.asp? - NONE/- text/html -1157689381.660 2171 10.105.33.214 TCP_MISS/200 449 GET http://launch.adserver.yahoo.com/l? adeolaegbedokun DIRECT/216.109.125.112 image/gif -1157689382.173 3700 10.105.21.199 TCP_MISS/200 11746 GET http://uk.f250.mail.yahoo.com/dc/launch? badeyek DIRECT/217.12.10.96 text/html -1157689382.622 1 10.105.37.180 TCP_DENIED/407 1670 CONNECT login.live.com:443 - NONE/- text/html -1157689384.316 2828 10.105.21.199 TCP_SWAPFAIL_MISS/200 633 GET http://us.js2.yimg.com/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/77cf3e56414f974dfd8616f56f0f632c_1.js badeyek DIRECT/213.160.98.169 application/x-javascript -1157689385.714 1397 10.105.21.199 TCP_HIT/200 1742 GET http://us.js1.yimg.com/us.yimg.com/lib/hdr/ygma5.css badeyek NONE/- text/css -1157689387.690 1977 10.105.21.199 TCP_MISS/200 14561 GET http://us.js2.yimg.com/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/f7fc76100697c9c2d25dd0ec35e563b0_1.js badeyek DIRECT/213.160.98.169 application/x-javascript -1157689387.771 80 10.105.21.199 TCP_HIT/200 68733 GET http://us.js1.yimg.com/us.yimg.com/lib/pim/r/medici/13_15/mail/ac.js badeyek NONE/- application/x-javascript -1157689387.830 1 10.105.21.199 TCP_HIT/200 898 GET http://us.js2.yimg.com/us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b4.js badeyek NONE/- application/x-javascript -1157689387.832 60 10.105.21.199 TCP_HIT/200 26803 GET http://us.i1.yimg.com/us.yimg.com/i/us/pim/dclient/d/img/liam_ball_1.gif badeyek NONE/- image/gif diff --git a/x-pack/filebeat/module/squid/log/test/access1.log-expected.json b/x-pack/filebeat/module/squid/log/test/access1.log-expected.json deleted file mode 100644 index f993048245a..00000000000 --- a/x-pack/filebeat/module/squid/log/test/access1.log-expected.json +++ /dev/null @@ -1,6062 +0,0 @@ -[ - { - "@timestamp": "2006-09-08T04:21:52.000Z", - "destination.ip": "209.73.177.115", - "event.action": "TCP_MISS", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689312.049 5006 10.105.21.199 TCP_MISS/200 19763 CONNECT login.yahoo.com:443 badeyek DIRECT/209.73.177.115 -", - "fileset.name": "log", - "input.type": "log", - "log.offset": 0, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "login.yahoo.com" - ], - "related.ip": [ - "10.105.21.199", - "209.73.177.115" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_MISS" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "200", - "rsa.network.domain": "login.yahoo.com", - "rsa.time.duration_time": 5006, - "rsa.time.event_time": "2006-09-08T04:21:52.000Z", - "rsa.time.event_time_str": "1157689312", - "rsa.web.alias_host": "login.yahoo.com", - "server.domain": "login.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "login", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 19763, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "login.yahoo.com", - "url.original": "login.yahoo.com:443", - "url.registered_domain": "yahoo.com", - "url.subdomain": "login", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:00.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689320.327 2864 10.105.21.199 TCP_MISS/200 10182 GET http://www.goonernews.com/ badeyek DIRECT/207.58.145.61 text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 115, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 2864, - "rsa.time.event_time": "2006-09-08T04:22:00.000Z", - "rsa.time.event_time_str": "1157689320", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 10182, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.original": "http://www.goonernews.com/", - "url.path": "/", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:00.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689320.343 1357 10.105.21.199 TCP_REFRESH_HIT/304 214 GET http://www.goonernews.com/styles.css badeyek DIRECT/207.58.145.61 -", - "file.name": "styles.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 240, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 1357, - "rsa.time.event_time": "2006-09-08T04:22:00.000Z", - "rsa.time.event_time_str": "1157689320", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 214, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "css", - "url.original": "http://www.goonernews.com/styles.css", - "url.path": "/styles.css", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:01.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689321.315 1 10.105.21.199 TCP_HIT/200 1464 GET http://www.goonernews.com/styles.css badeyek NONE/- text/css", - "file.name": "styles.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 372, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "text/css", - "rsa.misc.result_code": "200", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:22:01.000Z", - "rsa.time.event_time_str": "1157689321", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1464, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "css", - "url.original": "http://www.goonernews.com/styles.css", - "url.path": "/styles.css", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:02.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689322.780 1464 10.105.21.199 TCP_HIT/200 5626 GET http://www.google-analytics.com/urchin.js badeyek NONE/- text/javascript", - "file.name": "urchin.js", - "fileset.name": "log", - "input.type": "log", - "log.offset": 490, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.google-analytics.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "text/javascript", - "rsa.misc.result_code": "200", - "rsa.network.domain": "www.google-analytics.com", - "rsa.time.duration_time": 1464, - "rsa.time.event_time": "2006-09-08T04:22:02.000Z", - "rsa.time.event_time_str": "1157689322", - "rsa.web.alias_host": "www.google-analytics.com", - "server.domain": "www.google-analytics.com", - "server.registered_domain": "google-analytics.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 5626, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.google-analytics.com", - "url.extension": "js", - "url.original": "http://www.google-analytics.com/urchin.js", - "url.path": "/urchin.js", - "url.registered_domain": "google-analytics.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:03.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689323.718 3856 10.105.21.199 TCP_MISS/200 30169 GET http://www.goonernews.com/ badeyek DIRECT/207.58.145.61 text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 620, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 3856, - "rsa.time.event_time": "2006-09-08T04:22:03.000Z", - "rsa.time.event_time_str": "1157689323", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 30169, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.original": "http://www.goonernews.com/", - "url.path": "/", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:04.000Z", - "destination.ip": "66.102.9.147", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689324.156 1372 10.105.21.199 TCP_MISS/200 399 GET http://www.google-analytics.com/__utm.gif? badeyek DIRECT/66.102.9.147 image/gif", - "file.name": "__utm.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 745, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.google-analytics.com" - ], - "related.ip": [ - "10.105.21.199", - "66.102.9.147" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "www.google-analytics.com", - "rsa.time.duration_time": 1372, - "rsa.time.event_time": "2006-09-08T04:22:04.000Z", - "rsa.time.event_time_str": "1157689324", - "rsa.web.alias_host": "www.google-analytics.com", - "server.domain": "www.google-analytics.com", - "server.registered_domain": "google-analytics.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 399, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.google-analytics.com", - "url.extension": "gif", - "url.original": "http://www.google-analytics.com/__utm.gif?", - "url.path": "/__utm.gif", - "url.query": "", - "url.registered_domain": "google-analytics.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:04.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689324.266 1457 10.105.21.199 TCP_REFRESH_HIT/304 215 GET http://www.goonernews.com/graphics/newslogo.gif badeyek DIRECT/207.58.145.61 -", - "file.name": "newslogo.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 883, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 1457, - "rsa.time.event_time": "2006-09-08T04:22:04.000Z", - "rsa.time.event_time_str": "1157689324", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 215, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "gif", - "url.original": "http://www.goonernews.com/graphics/newslogo.gif", - "url.path": "/graphics/newslogo.gif", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:04.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689324.281 1465 10.105.21.199 TCP_REFRESH_HIT/304 215 GET http://www.goonernews.com/shop/arsenal_shop_ad.jpg badeyek DIRECT/207.58.145.61 -", - "file.name": "arsenal_shop_ad.jpg", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1026, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 1465, - "rsa.time.event_time": "2006-09-08T04:22:04.000Z", - "rsa.time.event_time_str": "1157689324", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 215, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "jpg", - "url.original": "http://www.goonernews.com/shop/arsenal_shop_ad.jpg", - "url.path": "/shop/arsenal_shop_ad.jpg", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:05.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689325.734 1452 10.105.21.199 TCP_REFRESH_HIT/304 214 GET http://www.goonernews.com/flags/FUS.gif badeyek DIRECT/207.58.145.61 -", - "file.name": "FUS.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1172, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 1452, - "rsa.time.event_time": "2006-09-08T04:22:05.000Z", - "rsa.time.event_time_str": "1157689325", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 214, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "gif", - "url.original": "http://www.goonernews.com/flags/FUS.gif", - "url.path": "/flags/FUS.gif", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:05.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689325.736 2 10.105.21.199 TCP_HIT/200 1353 GET http://www.goonernews.com/flags/FGB.gif badeyek NONE/- image/gif", - "file.name": "FGB.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1307, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 2, - "rsa.time.event_time": "2006-09-08T04:22:05.000Z", - "rsa.time.event_time_str": "1157689325", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1353, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "gif", - "url.original": "http://www.goonernews.com/flags/FGB.gif", - "url.path": "/flags/FGB.gif", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:05.000Z", - "destination.ip": "209.85.16.38", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689325.953 2603 10.105.21.199 TCP_MISS/200 1013 GET http://as.casalemedia.com/s? badeyek DIRECT/209.85.16.38 text/html", - "file.name": "s", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1429, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "as.casalemedia.com" - ], - "related.ip": [ - "10.105.21.199", - "209.85.16.38" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "as.casalemedia.com", - "rsa.time.duration_time": 2603, - "rsa.time.event_time": "2006-09-08T04:22:05.000Z", - "rsa.time.event_time_str": "1157689325", - "rsa.web.alias_host": "as.casalemedia.com", - "server.domain": "as.casalemedia.com", - "server.registered_domain": "casalemedia.com", - "server.subdomain": "as", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1013, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "as.casalemedia.com", - "url.original": "http://as.casalemedia.com/s?", - "url.path": "/s", - "url.query": "", - "url.registered_domain": "casalemedia.com", - "url.scheme": "http", - "url.subdomain": "as", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:06.000Z", - "destination.ip": "68.142.213.132", - "event.action": "TCP_MISS", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689326.703 4459 10.105.21.199 TCP_MISS/200 1845 CONNECT us.bc.yahoo.com:443 badeyek DIRECT/68.142.213.132 -", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1554, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.bc.yahoo.com" - ], - "related.ip": [ - "10.105.21.199", - "68.142.213.132" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_MISS" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.bc.yahoo.com", - "rsa.time.duration_time": 4459, - "rsa.time.event_time": "2006-09-08T04:22:06.000Z", - "rsa.time.event_time_str": "1157689326", - "rsa.web.alias_host": "us.bc.yahoo.com", - "server.domain": "us.bc.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "us.bc", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1845, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.bc.yahoo.com", - "url.original": "us.bc.yahoo.com:443", - "url.registered_domain": "yahoo.com", - "url.subdomain": "us.bc", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:07.000Z", - "destination.ip": "217.212.240.172", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689327.312 1356 10.105.21.199 TCP_MISS/302 729 GET http://impgb.tradedoubler.com/imp/img/16349696/992098 badeyek DIRECT/217.212.240.172 text/html", - "file.name": "992098", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1668, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "impgb.tradedoubler.com" - ], - "related.ip": [ - "10.105.21.199", - "217.212.240.172" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "302", - "rsa.network.domain": "impgb.tradedoubler.com", - "rsa.time.duration_time": 1356, - "rsa.time.event_time": "2006-09-08T04:22:07.000Z", - "rsa.time.event_time_str": "1157689327", - "rsa.web.alias_host": "impgb.tradedoubler.com", - "server.domain": "impgb.tradedoubler.com", - "server.registered_domain": "tradedoubler.com", - "server.subdomain": "impgb", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 729, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "impgb.tradedoubler.com", - "url.original": "http://impgb.tradedoubler.com/imp/img/16349696/992098", - "url.path": "/imp/img/16349696/992098", - "url.registered_domain": "tradedoubler.com", - "url.scheme": "http", - "url.subdomain": "impgb", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:07.000Z", - "destination.ip": "206.169.136.22", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689327.751 3484 10.105.21.199 TCP_MISS/200 1577 GET http://4.adbrite.com/mb/text_group.php? badeyek DIRECT/206.169.136.22 text/html", - "file.name": "text_group.php", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1820, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "4.adbrite.com" - ], - "related.ip": [ - "10.105.21.199", - "206.169.136.22" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "4.adbrite.com", - "rsa.time.duration_time": 3484, - "rsa.time.event_time": "2006-09-08T04:22:07.000Z", - "rsa.time.event_time_str": "1157689327", - "rsa.web.alias_host": "4.adbrite.com", - "server.domain": "4.adbrite.com", - "server.registered_domain": "adbrite.com", - "server.subdomain": "4", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1577, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "4.adbrite.com", - "url.extension": "php", - "url.original": "http://4.adbrite.com/mb/text_group.php?", - "url.path": "/mb/text_group.php", - "url.query": "", - "url.registered_domain": "adbrite.com", - "url.scheme": "http", - "url.subdomain": "4", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:07.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689327.803 9 10.105.21.199 TCP_HIT/200 1353 GET http://www.goonernews.com/flags/FFR.gif badeyek NONE/- image/gif", - "file.name": "FFR.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 1958, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 9, - "rsa.time.event_time": "2006-09-08T04:22:07.000Z", - "rsa.time.event_time_str": "1157689327", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1353, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "gif", - "url.original": "http://www.goonernews.com/flags/FFR.gif", - "url.path": "/flags/FFR.gif", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:09.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689329.234 1431 10.105.21.199 TCP_REFRESH_HIT/304 214 GET http://www.goonernews.com/flags/FAU.gif badeyek DIRECT/207.58.145.61 -", - "file.name": "FAU.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2080, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 1431, - "rsa.time.event_time": "2006-09-08T04:22:09.000Z", - "rsa.time.event_time_str": "1157689329", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 214, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "gif", - "url.original": "http://www.goonernews.com/flags/FAU.gif", - "url.path": "/flags/FAU.gif", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:09.000Z", - "destination.ip": "207.58.145.61", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689329.280 1414 10.105.21.199 TCP_REFRESH_HIT/304 213 GET http://www.goonernews.com/graphics/spacer.gif badeyek DIRECT/207.58.145.61 -", - "file.name": "spacer.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2215, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.goonernews.com" - ], - "related.ip": [ - "10.105.21.199", - "207.58.145.61" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "www.goonernews.com", - "rsa.time.duration_time": 1414, - "rsa.time.event_time": "2006-09-08T04:22:09.000Z", - "rsa.time.event_time_str": "1157689329", - "rsa.web.alias_host": "www.goonernews.com", - "server.domain": "www.goonernews.com", - "server.registered_domain": "goonernews.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 213, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.goonernews.com", - "url.extension": "gif", - "url.original": "http://www.goonernews.com/graphics/spacer.gif", - "url.path": "/graphics/spacer.gif", - "url.registered_domain": "goonernews.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:10.000Z", - "destination.ip": "64.127.126.178", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689330.920 1686 10.105.21.199 TCP_MISS/200 1784 GET http://4.adbrite.com/mb/text_group.php? badeyek DIRECT/64.127.126.178 text/html", - "file.name": "text_group.php", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2356, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "4.adbrite.com" - ], - "related.ip": [ - "10.105.21.199", - "64.127.126.178" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "4.adbrite.com", - "rsa.time.duration_time": 1686, - "rsa.time.event_time": "2006-09-08T04:22:10.000Z", - "rsa.time.event_time_str": "1157689330", - "rsa.web.alias_host": "4.adbrite.com", - "server.domain": "4.adbrite.com", - "server.registered_domain": "adbrite.com", - "server.subdomain": "4", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1784, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "4.adbrite.com", - "url.extension": "php", - "url.original": "http://4.adbrite.com/mb/text_group.php?", - "url.path": "/mb/text_group.php", - "url.query": "", - "url.registered_domain": "adbrite.com", - "url.scheme": "http", - "url.subdomain": "4", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:11.000Z", - "destination.ip": "213.160.98.161", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689331.313 3997 10.105.21.199 TCP_MISS/302 851 GET http://ff.connextra.com/Ladbrokes/selector/image? badeyek DIRECT/213.160.98.161 -", - "file.name": "image", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2494, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "ff.connextra.com" - ], - "related.ip": [ - "10.105.21.199", - "213.160.98.161" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "302", - "rsa.network.domain": "ff.connextra.com", - "rsa.time.duration_time": 3997, - "rsa.time.event_time": "2006-09-08T04:22:11.000Z", - "rsa.time.event_time_str": "1157689331", - "rsa.web.alias_host": "ff.connextra.com", - "server.domain": "ff.connextra.com", - "server.registered_domain": "connextra.com", - "server.subdomain": "ff", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 851, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "ff.connextra.com", - "url.original": "http://ff.connextra.com/Ladbrokes/selector/image?", - "url.path": "/Ladbrokes/selector/image", - "url.query": "", - "url.registered_domain": "connextra.com", - "url.scheme": "http", - "url.subdomain": "ff", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:15.000Z", - "destination.ip": "213.160.98.160", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689335.275 3962 10.105.21.199 TCP_MISS/200 30904 GET http://dd.connextra.com/servlet/controller? badeyek DIRECT/213.160.98.160 image/gif", - "file.name": "controller", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2633, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "dd.connextra.com" - ], - "related.ip": [ - "10.105.21.199", - "213.160.98.160" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "dd.connextra.com", - "rsa.time.duration_time": 3962, - "rsa.time.event_time": "2006-09-08T04:22:15.000Z", - "rsa.time.event_time_str": "1157689335", - "rsa.web.alias_host": "dd.connextra.com", - "server.domain": "dd.connextra.com", - "server.registered_domain": "connextra.com", - "server.subdomain": "dd", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 30904, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "dd.connextra.com", - "url.original": "http://dd.connextra.com/servlet/controller?", - "url.path": "/servlet/controller", - "url.query": "", - "url.registered_domain": "connextra.com", - "url.scheme": "http", - "url.subdomain": "dd", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:17.000Z", - "event.action": "TCP_DENIED", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689337.481 4 10.105.47.218 TCP_DENIED/407 1661 GET http://hi5.com/ - NONE/- text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2776, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "hi5.com" - ], - "related.ip": [ - "10.105.47.218" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "hi5.com", - "rsa.time.duration_time": 4, - "rsa.time.event_time": "2006-09-08T04:22:17.000Z", - "rsa.time.event_time_str": "1157689337", - "rsa.web.alias_host": "hi5.com", - "server.domain": "hi5.com", - "server.registered_domain": "hi5.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1661, - "source.ip": "10.105.47.218", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "hi5.com", - "url.original": "http://hi5.com/", - "url.path": "/", - "url.registered_domain": "hi5.com", - "url.scheme": "http", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:22.000Z", - "destination.ip": "209.73.177.115", - "event.action": "TCP_MISS", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689342.757 3657 10.105.21.199 TCP_MISS/200 12569 CONNECT login.yahoo.com:443 badeyek DIRECT/209.73.177.115 -", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2871, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "login.yahoo.com" - ], - "related.ip": [ - "10.105.21.199", - "209.73.177.115" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_MISS" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "200", - "rsa.network.domain": "login.yahoo.com", - "rsa.time.duration_time": 3657, - "rsa.time.event_time": "2006-09-08T04:22:22.000Z", - "rsa.time.event_time_str": "1157689342", - "rsa.web.alias_host": "login.yahoo.com", - "server.domain": "login.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "login", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 12569, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "login.yahoo.com", - "url.original": "login.yahoo.com:443", - "url.registered_domain": "yahoo.com", - "url.subdomain": "login", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:23.000Z", - "event.action": "TCP_DENIED", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689343.106 1 10.105.33.214 TCP_DENIED/407 1752 GET http://update.messenger.yahoo.com/msgrcli7.html - NONE/- text/html", - "file.name": "msgrcli7.html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 2986, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "update.messenger.yahoo.com" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "update.messenger.yahoo.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:22:23.000Z", - "rsa.time.event_time_str": "1157689343", - "rsa.web.alias_host": "update.messenger.yahoo.com", - "server.domain": "update.messenger.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "update.messenger", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1752, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "update.messenger.yahoo.com", - "url.extension": "html", - "url.original": "http://update.messenger.yahoo.com/msgrcli7.html", - "url.path": "/msgrcli7.html", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "update.messenger", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:23.000Z", - "destination.ip": "216.155.194.239", - "event.action": "TCP_MISS", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689343.782 1371 10.105.33.214 TCP_MISS/200 484 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain", - "fileset.name": "log", - "input.type": "log", - "log.offset": 3113, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "shttp.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "216.155.194.239" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/plain", - "rsa.misc.result_code": "200", - "rsa.network.domain": "shttp.msg.yahoo.com", - "rsa.time.duration_time": 1371, - "rsa.time.event_time": "2006-09-08T04:22:23.000Z", - "rsa.time.event_time_str": "1157689343", - "rsa.web.alias_host": "shttp.msg.yahoo.com", - "server.domain": "shttp.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "shttp.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 484, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "shttp.msg.yahoo.com", - "url.original": "http://shttp.msg.yahoo.com/notify/", - "url.path": "/notify/", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "shttp.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:24.000Z", - "destination.ip": "204.13.51.238", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689344.736 4969 10.105.47.218 TCP_MISS/200 29359 GET http://hi5.com/ nazsoau DIRECT/204.13.51.238 text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 3256, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "hi5.com" - ], - "related.ip": [ - "10.105.47.218", - "204.13.51.238" - ], - "related.user": [ - "nazsoau" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "hi5.com", - "rsa.time.duration_time": 4969, - "rsa.time.event_time": "2006-09-08T04:22:24.000Z", - "rsa.time.event_time_str": "1157689344", - "rsa.web.alias_host": "hi5.com", - "server.domain": "hi5.com", - "server.registered_domain": "hi5.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 29359, - "source.ip": "10.105.47.218", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "hi5.com", - "url.original": "http://hi5.com/", - "url.path": "/", - "url.registered_domain": "hi5.com", - "url.scheme": "http", - "url.top_level_domain": "com", - "user.name": "nazsoau" - }, - { - "@timestamp": "2006-09-08T04:22:24.000Z", - "destination.ip": "204.13.51.238", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689344.798 1631 10.105.47.218 TCP_MISS/200 5930 GET http://hi5.com/friend/styles/homepage.css nazsoau DIRECT/204.13.51.238 text/css", - "file.name": "homepage.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 3370, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "hi5.com" - ], - "related.ip": [ - "10.105.47.218", - "204.13.51.238" - ], - "related.user": [ - "nazsoau" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/css", - "rsa.misc.result_code": "200", - "rsa.network.domain": "hi5.com", - "rsa.time.duration_time": 1631, - "rsa.time.event_time": "2006-09-08T04:22:24.000Z", - "rsa.time.event_time_str": "1157689344", - "rsa.web.alias_host": "hi5.com", - "server.domain": "hi5.com", - "server.registered_domain": "hi5.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 5930, - "source.ip": "10.105.47.218", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "hi5.com", - "url.extension": "css", - "url.original": "http://hi5.com/friend/styles/homepage.css", - "url.path": "/friend/styles/homepage.css", - "url.registered_domain": "hi5.com", - "url.scheme": "http", - "url.top_level_domain": "com", - "user.name": "nazsoau" - }, - { - "@timestamp": "2006-09-08T04:22:25.000Z", - "destination.ip": "216.155.194.239", - "event.action": "TCP_MISS", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689345.641 1810 10.105.33.214 TCP_MISS/200 1645 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain", - "fileset.name": "log", - "input.type": "log", - "log.offset": 3508, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "shttp.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "216.155.194.239" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/plain", - "rsa.misc.result_code": "200", - "rsa.network.domain": "shttp.msg.yahoo.com", - "rsa.time.duration_time": 1810, - "rsa.time.event_time": "2006-09-08T04:22:25.000Z", - "rsa.time.event_time_str": "1157689345", - "rsa.web.alias_host": "shttp.msg.yahoo.com", - "server.domain": "shttp.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "shttp.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1645, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "shttp.msg.yahoo.com", - "url.original": "http://shttp.msg.yahoo.com/notify/", - "url.path": "/notify/", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "shttp.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:26.000Z", - "event.action": "TCP_DENIED", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689346.267 880 10.105.37.58 TCP_DENIED/407 1812 GET http://rms.adobe.com/read/0600/win_/ENU/read0600win_ENUadbe0000.xml - NONE/- text/html", - "file.name": "read0600win_ENUadbe0000.xml", - "fileset.name": "log", - "input.type": "log", - "log.offset": 3652, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "rms.adobe.com" - ], - "related.ip": [ - "10.105.37.58" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "rms.adobe.com", - "rsa.time.duration_time": 880, - "rsa.time.event_time": "2006-09-08T04:22:26.000Z", - "rsa.time.event_time_str": "1157689346", - "rsa.web.alias_host": "rms.adobe.com", - "server.domain": "rms.adobe.com", - "server.registered_domain": "adobe.com", - "server.subdomain": "rms", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1812, - "source.ip": "10.105.37.58", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "rms.adobe.com", - "url.extension": "xml", - "url.original": "http://rms.adobe.com/read/0600/win_/ENU/read0600win_ENUadbe0000.xml", - "url.path": "/read/0600/win_/ENU/read0600win_ENUadbe0000.xml", - "url.registered_domain": "adobe.com", - "url.scheme": "http", - "url.subdomain": "rms", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:27.000Z", - "event.action": "TCP_IMS_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689347.190 10 10.105.47.218 TCP_IMS_HIT/304 217 GET http://images.hi5.com/styles/style.css nazsoau NONE/- text/css", - "file.name": "style.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 3798, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "images.hi5.com" - ], - "related.ip": [ - "10.105.47.218" - ], - "related.user": [ - "nazsoau" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_IMS_HIT" - ], - "rsa.misc.content_type": "text/css", - "rsa.misc.result_code": "304", - "rsa.network.domain": "images.hi5.com", - "rsa.time.duration_time": 10, - "rsa.time.event_time": "2006-09-08T04:22:27.000Z", - "rsa.time.event_time_str": "1157689347", - "rsa.web.alias_host": "images.hi5.com", - "server.domain": "images.hi5.com", - "server.registered_domain": "hi5.com", - "server.subdomain": "images", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 217, - "source.ip": "10.105.47.218", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "images.hi5.com", - "url.extension": "css", - "url.original": "http://images.hi5.com/styles/style.css", - "url.path": "/styles/style.css", - "url.registered_domain": "hi5.com", - "url.scheme": "http", - "url.subdomain": "images", - "url.top_level_domain": "com", - "user.name": "nazsoau" - }, - { - "@timestamp": "2006-09-08T04:22:27.000Z", - "event.action": "TCP_IMS_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689347.307 116 10.105.47.218 TCP_IMS_HIT/304 217 GET http://images.hi5.com/friend/styles/buttons_en_us.css nazsoau NONE/- text/css", - "file.name": "buttons_en_us.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 3921, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "images.hi5.com" - ], - "related.ip": [ - "10.105.47.218" - ], - "related.user": [ - "nazsoau" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_IMS_HIT" - ], - "rsa.misc.content_type": "text/css", - "rsa.misc.result_code": "304", - "rsa.network.domain": "images.hi5.com", - "rsa.time.duration_time": 116, - "rsa.time.event_time": "2006-09-08T04:22:27.000Z", - "rsa.time.event_time_str": "1157689347", - "rsa.web.alias_host": "images.hi5.com", - "server.domain": "images.hi5.com", - "server.registered_domain": "hi5.com", - "server.subdomain": "images", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 217, - "source.ip": "10.105.47.218", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "images.hi5.com", - "url.extension": "css", - "url.original": "http://images.hi5.com/friend/styles/buttons_en_us.css", - "url.path": "/friend/styles/buttons_en_us.css", - "url.registered_domain": "hi5.com", - "url.scheme": "http", - "url.subdomain": "images", - "url.top_level_domain": "com", - "user.name": "nazsoau" - }, - { - "@timestamp": "2006-09-08T04:22:27.000Z", - "destination.ip": "204.13.51.238", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689347.751 6160 10.105.47.218 TCP_MISS/200 27799 GET http://hi5.com/ nazsoau DIRECT/204.13.51.238 text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 4059, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "hi5.com" - ], - "related.ip": [ - "10.105.47.218", - "204.13.51.238" - ], - "related.user": [ - "nazsoau" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "hi5.com", - "rsa.time.duration_time": 6160, - "rsa.time.event_time": "2006-09-08T04:22:27.000Z", - "rsa.time.event_time_str": "1157689347", - "rsa.web.alias_host": "hi5.com", - "server.domain": "hi5.com", - "server.registered_domain": "hi5.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 27799, - "source.ip": "10.105.47.218", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "hi5.com", - "url.original": "http://hi5.com/", - "url.path": "/", - "url.registered_domain": "hi5.com", - "url.scheme": "http", - "url.top_level_domain": "com", - "user.name": "nazsoau" - }, - { - "@timestamp": "2006-09-08T04:22:29.000Z", - "destination.ip": "204.13.51.238", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689349.064 1758 10.105.47.218 TCP_MISS/200 4470 GET http://hi5.com/friend/styles/headernav.css nazsoau DIRECT/204.13.51.238 text/css", - "file.name": "headernav.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 4173, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "hi5.com" - ], - "related.ip": [ - "10.105.47.218", - "204.13.51.238" - ], - "related.user": [ - "nazsoau" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/css", - "rsa.misc.result_code": "200", - "rsa.network.domain": "hi5.com", - "rsa.time.duration_time": 1758, - "rsa.time.event_time": "2006-09-08T04:22:29.000Z", - "rsa.time.event_time_str": "1157689349", - "rsa.web.alias_host": "hi5.com", - "server.domain": "hi5.com", - "server.registered_domain": "hi5.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 4470, - "source.ip": "10.105.47.218", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "hi5.com", - "url.extension": "css", - "url.original": "http://hi5.com/friend/styles/headernav.css", - "url.path": "/friend/styles/headernav.css", - "url.registered_domain": "hi5.com", - "url.scheme": "http", - "url.top_level_domain": "com", - "user.name": "nazsoau" - }, - { - "@timestamp": "2006-09-08T04:22:30.000Z", - "destination.ip": "216.155.194.239", - "event.action": "TCP_MISS", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689350.829 1393 10.105.33.214 TCP_MISS/200 382 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain", - "fileset.name": "log", - "input.type": "log", - "log.offset": 4312, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "shttp.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "216.155.194.239" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/plain", - "rsa.misc.result_code": "200", - "rsa.network.domain": "shttp.msg.yahoo.com", - "rsa.time.duration_time": 1393, - "rsa.time.event_time": "2006-09-08T04:22:30.000Z", - "rsa.time.event_time_str": "1157689350", - "rsa.web.alias_host": "shttp.msg.yahoo.com", - "server.domain": "shttp.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "shttp.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 382, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "shttp.msg.yahoo.com", - "url.original": "http://shttp.msg.yahoo.com/notify/", - "url.path": "/notify/", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "shttp.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:33.000Z", - "destination.ip": "68.142.194.14", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689353.439 3667 10.105.33.214 TCP_MISS/200 24095 GET http://insider.msg.yahoo.com/? adeolaegbedokun DIRECT/68.142.194.14 text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 4455, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "insider.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.194.14" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "insider.msg.yahoo.com", - "rsa.time.duration_time": 3667, - "rsa.time.event_time": "2006-09-08T04:22:33.000Z", - "rsa.time.event_time_str": "1157689353", - "rsa.web.alias_host": "insider.msg.yahoo.com", - "server.domain": "insider.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "insider.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 24095, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "insider.msg.yahoo.com", - "url.original": "http://insider.msg.yahoo.com/?", - "url.path": "/", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "insider.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:33.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689353.939 4899 10.105.33.214 TCP_MISS/200 22964 GET http://radio.launch.yahoo.com/radio/play/playmessenger.asp adeolaegbedokun DIRECT/68.142.219.132 text/html", - "file.name": "playmessenger.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 4592, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 4899, - "rsa.time.event_time": "2006-09-08T04:22:33.000Z", - "rsa.time.event_time_str": "1157689353", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 22964, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.launch.yahoo.com/radio/play/playmessenger.asp", - "url.path": "/radio/play/playmessenger.asp", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:34.000Z", - "destination.ip": "216.155.194.239", - "event.action": "TCP_MISS", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689354.877 1349 10.105.33.214 TCP_MISS/200 646 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain", - "fileset.name": "log", - "input.type": "log", - "log.offset": 4758, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "shttp.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "216.155.194.239" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/plain", - "rsa.misc.result_code": "200", - "rsa.network.domain": "shttp.msg.yahoo.com", - "rsa.time.duration_time": 1349, - "rsa.time.event_time": "2006-09-08T04:22:34.000Z", - "rsa.time.event_time_str": "1157689354", - "rsa.web.alias_host": "shttp.msg.yahoo.com", - "server.domain": "shttp.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "shttp.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 646, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "shttp.msg.yahoo.com", - "url.original": "http://shttp.msg.yahoo.com/notify/", - "url.path": "/notify/", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "shttp.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:35.000Z", - "destination.ip": "209.191.93.51", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689355.517 1578 10.105.33.214 TCP_MISS/200 699 GET http://address.yahoo.com/yab/us? adeolaegbedokun DIRECT/209.191.93.51 text/xml", - "file.name": "us", - "fileset.name": "log", - "input.type": "log", - "log.offset": 4901, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "address.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "209.191.93.51" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/xml", - "rsa.misc.result_code": "200", - "rsa.network.domain": "address.yahoo.com", - "rsa.time.duration_time": 1578, - "rsa.time.event_time": "2006-09-08T04:22:35.000Z", - "rsa.time.event_time_str": "1157689355", - "rsa.web.alias_host": "address.yahoo.com", - "server.domain": "address.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "address", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 699, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "address.yahoo.com", - "url.original": "http://address.yahoo.com/yab/us?", - "url.path": "/yab/us", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "address", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:36.000Z", - "destination.ip": "63.245.209.21", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689356.907 6741 10.105.21.199 TCP_MISS/302 734 GET http://fxfeeds.mozilla.org/rss20.xml badeyek DIRECT/63.245.209.21 text/html", - "file.name": "rss20.xml", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5037, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "fxfeeds.mozilla.org" - ], - "related.ip": [ - "10.105.21.199", - "63.245.209.21" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "302", - "rsa.network.domain": "fxfeeds.mozilla.org", - "rsa.time.duration_time": 6741, - "rsa.time.event_time": "2006-09-08T04:22:36.000Z", - "rsa.time.event_time_str": "1157689356", - "rsa.web.alias_host": "fxfeeds.mozilla.org", - "server.domain": "fxfeeds.mozilla.org", - "server.registered_domain": "mozilla.org", - "server.subdomain": "fxfeeds", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 734, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "fxfeeds.mozilla.org", - "url.extension": "xml", - "url.original": "http://fxfeeds.mozilla.org/rss20.xml", - "url.path": "/rss20.xml", - "url.registered_domain": "mozilla.org", - "url.scheme": "http", - "url.subdomain": "fxfeeds", - "url.top_level_domain": "org", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:37.000Z", - "destination.ip": "68.142.231.252", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689357.267 6424 10.105.33.214 TCP_MISS/200 31400 GET http://insider.msg.yahoo.com/ycontent/? adeolaegbedokun DIRECT/68.142.231.252 text/xml", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5170, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "insider.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.231.252" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/xml", - "rsa.misc.result_code": "200", - "rsa.network.domain": "insider.msg.yahoo.com", - "rsa.time.duration_time": 6424, - "rsa.time.event_time": "2006-09-08T04:22:37.000Z", - "rsa.time.event_time_str": "1157689357", - "rsa.web.alias_host": "insider.msg.yahoo.com", - "server.domain": "insider.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "insider.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 31400, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "insider.msg.yahoo.com", - "url.original": "http://insider.msg.yahoo.com/ycontent/?", - "url.path": "/ycontent/", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "insider.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:37.000Z", - "destination.ip": "68.142.194.14", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689357.720 2831 10.105.33.214 TCP_MISS/200 21152 GET http://insider.msg.yahoo.com/ycontent/? adeolaegbedokun DIRECT/68.142.194.14 text/xml", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5316, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "insider.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.194.14" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/xml", - "rsa.misc.result_code": "200", - "rsa.network.domain": "insider.msg.yahoo.com", - "rsa.time.duration_time": 2831, - "rsa.time.event_time": "2006-09-08T04:22:37.000Z", - "rsa.time.event_time_str": "1157689357", - "rsa.web.alias_host": "insider.msg.yahoo.com", - "server.domain": "insider.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "insider.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 21152, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "insider.msg.yahoo.com", - "url.original": "http://insider.msg.yahoo.com/ycontent/?", - "url.path": "/ycontent/", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "insider.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:38.000Z", - "event.action": "TCP_DENIED", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689358.173 1 10.105.37.17 TCP_DENIED/407 1667 CONNECT us.mcafee.com:443 - NONE/- text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5461, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.37.17" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:22:38.000Z", - "rsa.time.event_time_str": "1157689358", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1667, - "source.ip": "10.105.37.17", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.original": "us.mcafee.com:443", - "url.registered_domain": "mcafee.com", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:38.000Z", - "event.action": "TCP_DENIED", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689358.174 0 10.105.37.17 TCP_DENIED/407 1767 POST http://us.mcafee.com/apps/agent/submgr/appinstru.asp - NONE/- text/html", - "file.name": "appinstru.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5561, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.37.17" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 0, - "rsa.time.event_time": "2006-09-08T04:22:38.000Z", - "rsa.time.event_time_str": "1157689358", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1767, - "source.ip": "10.105.37.17", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.extension": "asp", - "url.original": "http://us.mcafee.com/apps/agent/submgr/appinstru.asp", - "url.path": "/apps/agent/submgr/appinstru.asp", - "url.registered_domain": "mcafee.com", - "url.scheme": "http", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:38.000Z", - "event.action": "TCP_DENIED", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689358.174 0 10.105.37.17 TCP_DENIED/407 1761 POST http://us.mcafee.com/apps/agent/submgr/appsync.asp - NONE/- text/html", - "file.name": "appsync.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5693, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.37.17" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 0, - "rsa.time.event_time": "2006-09-08T04:22:38.000Z", - "rsa.time.event_time_str": "1157689358", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1761, - "source.ip": "10.105.37.17", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.extension": "asp", - "url.original": "http://us.mcafee.com/apps/agent/submgr/appsync.asp", - "url.path": "/apps/agent/submgr/appsync.asp", - "url.registered_domain": "mcafee.com", - "url.scheme": "http", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:38.000Z", - "event.action": "TCP_DENIED", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689358.226 0 10.105.37.17 TCP_DENIED/407 1667 CONNECT us.mcafee.com:443 - NONE/- text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5823, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.37.17" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 0, - "rsa.time.event_time": "2006-09-08T04:22:38.000Z", - "rsa.time.event_time_str": "1157689358", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1667, - "source.ip": "10.105.37.17", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.original": "us.mcafee.com:443", - "url.registered_domain": "mcafee.com", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:38.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689358.486 711 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_stations.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "btn_stations.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 5923, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 711, - "rsa.time.event_time": "2006-09-08T04:22:38.000Z", - "rsa.time.event_time_str": "1157689358", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 512, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_stations.gif", - "url.path": "/radio/clientdata/538/images/btn_stations.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:38.000Z", - "event.action": "TCP_DENIED", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689358.683 0 10.105.37.17 TCP_DENIED/407 1667 CONNECT us.mcafee.com:443 - NONE/- text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 6102, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.37.17" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 0, - "rsa.time.event_time": "2006-09-08T04:22:38.000Z", - "rsa.time.event_time_str": "1157689358", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1667, - "source.ip": "10.105.37.17", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.original": "us.mcafee.com:443", - "url.registered_domain": "mcafee.com", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:39.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689359.199 713 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_stations_over.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "btn_stations_over.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 6202, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 713, - "rsa.time.event_time": "2006-09-08T04:22:39.000Z", - "rsa.time.event_time_str": "1157689359", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 512, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_stations_over.gif", - "url.path": "/radio/clientdata/538/images/btn_stations_over.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:39.000Z", - "destination.ip": "216.155.194.239", - "event.action": "TCP_MISS", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689359.269 1982 10.105.33.214 TCP_MISS/200 362 POST http://shttp.msg.yahoo.com/notify/ adeolaegbedokun DIRECT/216.155.194.239 text/plain", - "fileset.name": "log", - "input.type": "log", - "log.offset": 6386, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "shttp.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "216.155.194.239" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/plain", - "rsa.misc.result_code": "200", - "rsa.network.domain": "shttp.msg.yahoo.com", - "rsa.time.duration_time": 1982, - "rsa.time.event_time": "2006-09-08T04:22:39.000Z", - "rsa.time.event_time_str": "1157689359", - "rsa.web.alias_host": "shttp.msg.yahoo.com", - "server.domain": "shttp.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "shttp.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 362, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "shttp.msg.yahoo.com", - "url.original": "http://shttp.msg.yahoo.com/notify/", - "url.path": "/notify/", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "shttp.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:39.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689359.924 725 10.105.33.214 TCP_REFRESH_HIT/304 511 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_left.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "bg_left.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 6529, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 725, - "rsa.time.event_time": "2006-09-08T04:22:39.000Z", - "rsa.time.event_time_str": "1157689359", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 511, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_left.gif", - "url.path": "/radio/clientdata/538/skins/1/images/bg_left.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:40.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689360.611 687 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/launchcast_radio.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "launchcast_radio.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 6711, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 687, - "rsa.time.event_time": "2006-09-08T04:22:40.000Z", - "rsa.time.event_time_str": "1157689360", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 512, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/images/launchcast_radio.gif", - "url.path": "/radio/clientdata/538/images/launchcast_radio.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:40.000Z", - "event.action": "TCP_DENIED", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689360.980 1 10.105.47.191 TCP_DENIED/407 1767 POST http://us.mcafee.com/apps/agent/submgr/appinstru.asp - NONE/- text/html", - "file.name": "appinstru.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 6894, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.47.191" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:22:40.000Z", - "rsa.time.event_time_str": "1157689360", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1767, - "source.ip": "10.105.47.191", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.extension": "asp", - "url.original": "http://us.mcafee.com/apps/agent/submgr/appinstru.asp", - "url.path": "/apps/agent/submgr/appinstru.asp", - "url.registered_domain": "mcafee.com", - "url.scheme": "http", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:41.000Z", - "event.action": "TCP_DENIED", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689361.188 1 10.105.47.191 TCP_DENIED/407 1761 POST http://us.mcafee.com/apps/agent/submgr/appsync.asp - NONE/- text/html", - "file.name": "appsync.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 7027, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.47.191" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:22:41.000Z", - "rsa.time.event_time_str": "1157689361", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1761, - "source.ip": "10.105.47.191", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.extension": "asp", - "url.original": "http://us.mcafee.com/apps/agent/submgr/appsync.asp", - "url.path": "/apps/agent/submgr/appsync.asp", - "url.registered_domain": "mcafee.com", - "url.scheme": "http", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:41.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689361.393 783 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_right.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "bg_right.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 7158, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 783, - "rsa.time.event_time": "2006-09-08T04:22:41.000Z", - "rsa.time.event_time_str": "1157689361", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 512, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_right.gif", - "url.path": "/radio/clientdata/538/skins/1/images/bg_right.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:41.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689361.564 2242 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_center.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "bg_center.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 7341, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 2242, - "rsa.time.event_time": "2006-09-08T04:22:41.000Z", - "rsa.time.event_time_str": "1157689361", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 512, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_center.gif", - "url.path": "/radio/clientdata/538/skins/1/images/bg_center.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:42.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689362.220 827 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_controls_off.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "bg_controls_off.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 7525, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 827, - "rsa.time.event_time": "2006-09-08T04:22:42.000Z", - "rsa.time.event_time_str": "1157689362", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 512, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_controls_off.gif", - "url.path": "/radio/clientdata/538/skins/1/images/bg_controls_off.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:42.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_REFRESH_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689362.315 751 10.105.33.214 TCP_REFRESH_HIT/304 512 GET http://radio.launch.yahoo.com/radio/common_radio/resources/images/t.gif adeolaegbedokun DIRECT/68.142.219.132 -", - "file.name": "t.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 7715, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_HIT" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 751, - "rsa.time.event_time": "2006-09-08T04:22:42.000Z", - "rsa.time.event_time_str": "1157689362", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 512, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/common_radio/resources/images/t.gif", - "url.path": "/radio/common_radio/resources/images/t.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:42.000Z", - "event.action": "TCP_IMS_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689362.318 3 10.105.33.214 TCP_IMS_HIT/304 218 GET http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_off_state_station.gif adeolaegbedokun NONE/- image/gif", - "file.name": "btn_off_state_station.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 7891, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_IMS_HIT" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 3, - "rsa.time.event_time": "2006-09-08T04:22:42.000Z", - "rsa.time.event_time_str": "1157689362", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 218, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/images/btn_off_state_station.gif", - "url.path": "/radio/clientdata/538/images/btn_off_state_station.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:42.000Z", - "event.action": "TCP_IMS_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689362.332 13 10.105.33.214 TCP_IMS_HIT/304 218 GET http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_controls_fill.gif adeolaegbedokun NONE/- image/gif", - "file.name": "bg_controls_fill.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 8068, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_IMS_HIT" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 13, - "rsa.time.event_time": "2006-09-08T04:22:42.000Z", - "rsa.time.event_time_str": "1157689362", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 218, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "gif", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/538/skins/1/images/bg_controls_fill.gif", - "url.path": "/radio/clientdata/538/skins/1/images/bg_controls_fill.gif", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:42.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689362.341 8 10.105.33.214 TCP_HIT/200 2263 GET http://us.i1.yimg.com/us.yimg.com/i/us/toolbar50x50.gif adeolaegbedokun NONE/- image/gif", - "file.name": "toolbar50x50.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 8248, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.i1.yimg.com" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.i1.yimg.com", - "rsa.time.duration_time": 8, - "rsa.time.event_time": "2006-09-08T04:22:42.000Z", - "rsa.time.event_time_str": "1157689362", - "rsa.web.alias_host": "us.i1.yimg.com", - "server.domain": "us.i1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.i1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 2263, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.i1.yimg.com", - "url.extension": "gif", - "url.original": "http://us.i1.yimg.com/us.yimg.com/i/us/toolbar50x50.gif", - "url.path": "/us.yimg.com/i/us/toolbar50x50.gif", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.i1", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:43.000Z", - "destination.ip": "212.58.226.33", - "event.action": "TCP_REFRESH_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689363.423 6517 10.105.21.199 TCP_REFRESH_MISS/200 17396 GET http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml badeyek DIRECT/212.58.226.33 application/xml", - "file.name": "rss.xml", - "fileset.name": "log", - "input.type": "log", - "log.offset": 8394, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "newsrss.bbc.co.uk" - ], - "related.ip": [ - "10.105.21.199", - "212.58.226.33" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_REFRESH_MISS" - ], - "rsa.misc.content_type": "application/xml", - "rsa.misc.result_code": "200", - "rsa.network.domain": "newsrss.bbc.co.uk", - "rsa.time.duration_time": 6517, - "rsa.time.event_time": "2006-09-08T04:22:43.000Z", - "rsa.time.event_time_str": "1157689363", - "rsa.web.alias_host": "newsrss.bbc.co.uk", - "server.domain": "newsrss.bbc.co.uk", - "server.registered_domain": "bbc.co.uk", - "server.subdomain": "newsrss", - "server.top_level_domain": "co.uk", - "service.type": "squid", - "source.bytes": 17396, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "newsrss.bbc.co.uk", - "url.extension": "xml", - "url.original": "http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml", - "url.path": "/rss/newsonline_world_edition/front_page/rss.xml", - "url.registered_domain": "bbc.co.uk", - "url.scheme": "http", - "url.subdomain": "newsrss", - "url.top_level_domain": "co.uk", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:44.000Z", - "destination.ip": "68.142.231.252", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689364.361 2140 10.105.33.214 TCP_MISS/200 407 GET http://insider.msg.yahoo.com/ycontent/beacon.php adeolaegbedokun DIRECT/68.142.231.252 image/gif", - "file.name": "beacon.php", - "fileset.name": "log", - "input.type": "log", - "log.offset": 8579, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "insider.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.231.252" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "insider.msg.yahoo.com", - "rsa.time.duration_time": 2140, - "rsa.time.event_time": "2006-09-08T04:22:44.000Z", - "rsa.time.event_time_str": "1157689364", - "rsa.web.alias_host": "insider.msg.yahoo.com", - "server.domain": "insider.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "insider.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 407, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "insider.msg.yahoo.com", - "url.extension": "php", - "url.original": "http://insider.msg.yahoo.com/ycontent/beacon.php", - "url.path": "/ycontent/beacon.php", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "insider.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:44.000Z", - "event.action": "TCP_IMS_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689364.402 7 10.105.33.214 TCP_IMS_HIT/304 219 GET http://us.ent1.yimg.com/images.launch.yahoo.com/000/032/457/32457654.jpg adeolaegbedokun NONE/- image/jpeg", - "file.name": "32457654.jpg", - "fileset.name": "log", - "input.type": "log", - "log.offset": 8733, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.ent1.yimg.com" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_IMS_HIT" - ], - "rsa.misc.content_type": "image/jpeg", - "rsa.misc.result_code": "304", - "rsa.network.domain": "us.ent1.yimg.com", - "rsa.time.duration_time": 7, - "rsa.time.event_time": "2006-09-08T04:22:44.000Z", - "rsa.time.event_time_str": "1157689364", - "rsa.web.alias_host": "us.ent1.yimg.com", - "server.domain": "us.ent1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.ent1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 219, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.ent1.yimg.com", - "url.extension": "jpg", - "url.original": "http://us.ent1.yimg.com/images.launch.yahoo.com/000/032/457/32457654.jpg", - "url.path": "/images.launch.yahoo.com/000/032/457/32457654.jpg", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.ent1", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:44.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689364.411 8 10.105.33.214 TCP_HIT/200 10593 GET http://us.news1.yimg.com/us.yimg.com/p/ap/20060906/thumb.71d29ded334347c48ac88433d033c9a9.pakistan_bin_laden_nyol440.jpg adeolaegbedokun NONE/- image/jpeg", - "file.name": "thumb.71d29ded334347c48ac88433d033c9a9.pakistan_bin_laden_nyol440.jpg", - "fileset.name": "log", - "input.type": "log", - "log.offset": 8900, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.news1.yimg.com" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "image/jpeg", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.news1.yimg.com", - "rsa.time.duration_time": 8, - "rsa.time.event_time": "2006-09-08T04:22:44.000Z", - "rsa.time.event_time_str": "1157689364", - "rsa.web.alias_host": "us.news1.yimg.com", - "server.domain": "us.news1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.news1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 10593, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.news1.yimg.com", - "url.extension": "jpg", - "url.original": "http://us.news1.yimg.com/us.yimg.com/p/ap/20060906/thumb.71d29ded334347c48ac88433d033c9a9.pakistan_bin_laden_nyol440.jpg", - "url.path": "/us.yimg.com/p/ap/20060906/thumb.71d29ded334347c48ac88433d033c9a9.pakistan_bin_laden_nyol440.jpg", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.news1", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:45.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689365.312 2420 10.105.33.214 TCP_MISS/302 1270 POST http://radio.launch.yahoo.com/radio/play/authplay.asp adeolaegbedokun DIRECT/68.142.219.132 text/html", - "file.name": "authplay.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 9113, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "302", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 2420, - "rsa.time.event_time": "2006-09-08T04:22:45.000Z", - "rsa.time.event_time_str": "1157689365", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1270, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.launch.yahoo.com/radio/play/authplay.asp", - "url.path": "/radio/play/authplay.asp", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:46.000Z", - "destination.ip": "213.160.98.159", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689366.377 1966 10.105.33.214 TCP_MISS/200 10519 GET http://us.news1.yimg.com/us.yimg.com/p/ap/20060908/thumb.443f57762d7349669f609fbf0c97a5f1.academy_awards_host_cacp101.jpg adeolaegbedokun DIRECT/213.160.98.159 image/jpeg", - "file.name": "thumb.443f57762d7349669f609fbf0c97a5f1.academy_awards_host_cacp101.jpg", - "fileset.name": "log", - "input.type": "log", - "log.offset": 9274, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.news1.yimg.com" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.159" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/jpeg", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.news1.yimg.com", - "rsa.time.duration_time": 1966, - "rsa.time.event_time": "2006-09-08T04:22:46.000Z", - "rsa.time.event_time_str": "1157689366", - "rsa.web.alias_host": "us.news1.yimg.com", - "server.domain": "us.news1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.news1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 10519, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.news1.yimg.com", - "url.extension": "jpg", - "url.original": "http://us.news1.yimg.com/us.yimg.com/p/ap/20060908/thumb.443f57762d7349669f609fbf0c97a5f1.academy_awards_host_cacp101.jpg", - "url.path": "/us.yimg.com/p/ap/20060908/thumb.443f57762d7349669f609fbf0c97a5f1.academy_awards_host_cacp101.jpg", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.news1", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:48.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689368.080 1703 10.105.33.214 TCP_MISS/200 515 GET http://radio.music.yahoo.com/radio/player/ymsgr/initstationfeed.asp? adeolaegbedokun DIRECT/68.142.219.132 text/xml", - "file.name": "initstationfeed.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 9504, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.music.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/xml", - "rsa.misc.result_code": "200", - "rsa.network.domain": "radio.music.yahoo.com", - "rsa.time.duration_time": 1703, - "rsa.time.event_time": "2006-09-08T04:22:48.000Z", - "rsa.time.event_time_str": "1157689368", - "rsa.web.alias_host": "radio.music.yahoo.com", - "server.domain": "radio.music.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.music", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 515, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.music.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.music.yahoo.com/radio/player/ymsgr/initstationfeed.asp?", - "url.path": "/radio/player/ymsgr/initstationfeed.asp", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.music", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:48.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689368.370 3057 10.105.33.214 TCP_MISS/200 14411 GET http://radio.music.yahoo.com/radio/player/ymsgr/initstationfeed.asp? adeolaegbedokun DIRECT/68.142.219.132 text/xml", - "file.name": "initstationfeed.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 9677, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.music.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/xml", - "rsa.misc.result_code": "200", - "rsa.network.domain": "radio.music.yahoo.com", - "rsa.time.duration_time": 3057, - "rsa.time.event_time": "2006-09-08T04:22:48.000Z", - "rsa.time.event_time_str": "1157689368", - "rsa.web.alias_host": "radio.music.yahoo.com", - "server.domain": "radio.music.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.music", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 14411, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.music.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.music.yahoo.com/radio/player/ymsgr/initstationfeed.asp?", - "url.path": "/radio/player/ymsgr/initstationfeed.asp", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.music", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:48.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689368.889 808 10.105.33.214 TCP_MISS/200 1627 GET http://radio.launch.yahoo.com/radio/play/authplay.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html", - "file.name": "authplay.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 9852, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 808, - "rsa.time.event_time": "2006-09-08T04:22:48.000Z", - "rsa.time.event_time_str": "1157689368", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1627, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.launch.yahoo.com/radio/play/authplay.asp?", - "url.path": "/radio/play/authplay.asp", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:49.000Z", - "event.action": "TCP_DENIED", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689369.097 1226 10.105.37.65 TCP_DENIED/407 1728 GET http://natrocket.kmip.net:5288/iesocks? - NONE/- text/html", - "file.name": "iesocks", - "fileset.name": "log", - "input.type": "log", - "log.offset": 10013, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "natrocket.kmip.net" - ], - "related.ip": [ - "10.105.37.65" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "natrocket.kmip.net", - "rsa.time.duration_time": 1226, - "rsa.time.event_time": "2006-09-08T04:22:49.000Z", - "rsa.time.event_time_str": "1157689369", - "rsa.web.alias_host": "natrocket.kmip.net", - "server.domain": "natrocket.kmip.net", - "server.registered_domain": "kmip.net", - "server.subdomain": "natrocket", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1728, - "source.ip": "10.105.37.65", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "natrocket.kmip.net", - "url.original": "http://natrocket.kmip.net:5288/iesocks?", - "url.path": "/iesocks", - "url.port": 5288, - "url.query": "", - "url.registered_domain": "kmip.net", - "url.scheme": "http", - "url.subdomain": "natrocket", - "url.top_level_domain": "net", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:49.000Z", - "event.action": "TCP_DENIED", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689369.702 0 10.105.37.65 TCP_DENIED/407 1725 GET http://natrocket.kmip.net:5288/return? - NONE/- text/html", - "file.name": "return", - "fileset.name": "log", - "input.type": "log", - "log.offset": 10131, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "natrocket.kmip.net" - ], - "related.ip": [ - "10.105.37.65" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "natrocket.kmip.net", - "rsa.time.duration_time": 0, - "rsa.time.event_time": "2006-09-08T04:22:49.000Z", - "rsa.time.event_time_str": "1157689369", - "rsa.web.alias_host": "natrocket.kmip.net", - "server.domain": "natrocket.kmip.net", - "server.registered_domain": "kmip.net", - "server.subdomain": "natrocket", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1725, - "source.ip": "10.105.37.65", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "natrocket.kmip.net", - "url.original": "http://natrocket.kmip.net:5288/return?", - "url.path": "/return", - "url.port": 5288, - "url.query": "", - "url.registered_domain": "kmip.net", - "url.scheme": "http", - "url.subdomain": "natrocket", - "url.top_level_domain": "net", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:22:50.000Z", - "destination.ip": "213.160.98.159", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689370.125 1202 10.105.33.214 TCP_MISS/200 13124 GET http://us.news1.yimg.com/us.yimg.com/p/ap/20060907/thumb.1caf18e56db54eafb16da58356eb3382.amazon_com_online_video_watw101.jpg adeolaegbedokun DIRECT/213.160.98.159 image/jpeg", - "file.name": "thumb.1caf18e56db54eafb16da58356eb3382.amazon_com_online_video_watw101.jpg", - "fileset.name": "log", - "input.type": "log", - "log.offset": 10248, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.news1.yimg.com" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.159" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/jpeg", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.news1.yimg.com", - "rsa.time.duration_time": 1202, - "rsa.time.event_time": "2006-09-08T04:22:50.000Z", - "rsa.time.event_time_str": "1157689370", - "rsa.web.alias_host": "us.news1.yimg.com", - "server.domain": "us.news1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.news1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 13124, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.news1.yimg.com", - "url.extension": "jpg", - "url.original": "http://us.news1.yimg.com/us.yimg.com/p/ap/20060907/thumb.1caf18e56db54eafb16da58356eb3382.amazon_com_online_video_watw101.jpg", - "url.path": "/us.yimg.com/p/ap/20060907/thumb.1caf18e56db54eafb16da58356eb3382.amazon_com_online_video_watw101.jpg", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.news1", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:50.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689370.862 736 10.105.33.214 TCP_MISS/302 912 GET http://radio.launch.yahoo.com/radio/clientdata/515/starter.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html", - "file.name": "starter.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 10482, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "302", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 736, - "rsa.time.event_time": "2006-09-08T04:22:50.000Z", - "rsa.time.event_time_str": "1157689370", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 912, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.launch.yahoo.com/radio/clientdata/515/starter.asp?", - "url.path": "/radio/clientdata/515/starter.asp", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:51.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689371.690 828 10.105.33.214 TCP_MISS/200 1450 GET http://radio.launch.yahoo.com/radio/player/default.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html", - "file.name": "default.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 10651, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 828, - "rsa.time.event_time": "2006-09-08T04:22:51.000Z", - "rsa.time.event_time_str": "1157689371", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1450, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.launch.yahoo.com/radio/player/default.asp?", - "url.path": "/radio/player/default.asp", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:51.000Z", - "destination.ip": "213.160.98.152", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689371.987 3617 10.105.33.214 TCP_MISS/200 30432 GET http://us.a2.yimg.com/us.yimg.com/a/ya/yahoo_messenger/081106_lrec_msgr_interophitchhiker.swf? adeolaegbedokun DIRECT/213.160.98.152 application/x-shockwave-flash", - "file.name": "081106_lrec_msgr_interophitchhiker.swf", - "fileset.name": "log", - "input.type": "log", - "log.offset": 10813, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.a2.yimg.com" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.152" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "application/x-shockwave-flash", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.a2.yimg.com", - "rsa.time.duration_time": 3617, - "rsa.time.event_time": "2006-09-08T04:22:51.000Z", - "rsa.time.event_time_str": "1157689371", - "rsa.web.alias_host": "us.a2.yimg.com", - "server.domain": "us.a2.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.a2", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 30432, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.a2.yimg.com", - "url.extension": "swf", - "url.original": "http://us.a2.yimg.com/us.yimg.com/a/ya/yahoo_messenger/081106_lrec_msgr_interophitchhiker.swf?", - "url.path": "/us.yimg.com/a/ya/yahoo_messenger/081106_lrec_msgr_interophitchhiker.swf", - "url.query": "", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.a2", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:53.000Z", - "destination.ip": "68.142.219.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689373.315 1626 10.105.33.214 TCP_MISS/200 14643 GET http://radio.launch.yahoo.com/radio/player/stickwall.asp? adeolaegbedokun DIRECT/68.142.219.132 text/html", - "file.name": "stickwall.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 11035, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "radio.launch.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.219.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "radio.launch.yahoo.com", - "rsa.time.duration_time": 1626, - "rsa.time.event_time": "2006-09-08T04:22:53.000Z", - "rsa.time.event_time_str": "1157689373", - "rsa.web.alias_host": "radio.launch.yahoo.com", - "server.domain": "radio.launch.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "radio.launch", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 14643, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "radio.launch.yahoo.com", - "url.extension": "asp", - "url.original": "http://radio.launch.yahoo.com/radio/player/stickwall.asp?", - "url.path": "/radio/player/stickwall.asp", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "radio.launch", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:54.000Z", - "destination.ip": "68.142.213.132", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689374.065 2078 10.105.33.214 TCP_MISS/200 425 GET http://us.bc.yahoo.com/b? adeolaegbedokun DIRECT/68.142.213.132 image/gif", - "file.name": "b", - "fileset.name": "log", - "input.type": "log", - "log.offset": 11200, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.bc.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.213.132" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.bc.yahoo.com", - "rsa.time.duration_time": 2078, - "rsa.time.event_time": "2006-09-08T04:22:54.000Z", - "rsa.time.event_time_str": "1157689374", - "rsa.web.alias_host": "us.bc.yahoo.com", - "server.domain": "us.bc.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "us.bc", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 425, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.bc.yahoo.com", - "url.original": "http://us.bc.yahoo.com/b?", - "url.path": "/b", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "us.bc", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:56.000Z", - "destination.ip": "68.142.194.14", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689376.221 2130 10.105.33.214 TCP_MISS/200 407 GET http://insider.msg.yahoo.com/ycontent/beacon.php;_ylc=X1MDNTcwMzAyODMEX3IDMgRldnQDdDAEaW50bAN1cwR2ZXIDNywwLDIsMTIw? adeolaegbedokun DIRECT/68.142.194.14 image/gif", - "file.name": "beacon.php;_ylc=X1MDNTcwMzAyODMEX3IDMgRldnQDdDAEaW50bAN1cwR2ZXIDNywwLDIsMTIw", - "fileset.name": "log", - "input.type": "log", - "log.offset": 11331, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "insider.msg.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "68.142.194.14" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "insider.msg.yahoo.com", - "rsa.time.duration_time": 2130, - "rsa.time.event_time": "2006-09-08T04:22:56.000Z", - "rsa.time.event_time_str": "1157689376", - "rsa.web.alias_host": "insider.msg.yahoo.com", - "server.domain": "insider.msg.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "insider.msg", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 407, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "insider.msg.yahoo.com", - "url.extension": "php;_ylc=X1MDNTcwMzAyODMEX3IDMgRldnQDdDAEaW50bAN1cwR2ZXIDNywwLDIsMTIw", - "url.original": "http://insider.msg.yahoo.com/ycontent/beacon.php;_ylc=X1MDNTcwMzAyODMEX3IDMgRldnQDdDAEaW50bAN1cwR2ZXIDNywwLDIsMTIw?", - "url.path": "/ycontent/beacon.php;_ylc=X1MDNTcwMzAyODMEX3IDMgRldnQDdDAEaW50bAN1cwR2ZXIDNywwLDIsMTIw", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "insider.msg", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:57.000Z", - "destination.ip": "216.109.124.55", - "event.action": "TCP_MISS", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689377.171 3412 10.105.33.214 TCP_MISS/200 1476 CONNECT pclick.internal.yahoo.com:443 adeolaegbedokun DIRECT/216.109.124.55 -", - "fileset.name": "log", - "input.type": "log", - "log.offset": 11551, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "pclick.internal.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "216.109.124.55" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_MISS" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "200", - "rsa.network.domain": "pclick.internal.yahoo.com", - "rsa.time.duration_time": 3412, - "rsa.time.event_time": "2006-09-08T04:22:57.000Z", - "rsa.time.event_time_str": "1157689377", - "rsa.web.alias_host": "pclick.internal.yahoo.com", - "server.domain": "pclick.internal.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "pclick.internal", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1476, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "pclick.internal.yahoo.com", - "url.original": "pclick.internal.yahoo.com:443", - "url.registered_domain": "yahoo.com", - "url.subdomain": "pclick.internal", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:57.000Z", - "event.action": "TCP_IMS_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689377.191 11 10.105.33.214 TCP_IMS_HIT/304 233 GET http://a1568.g.akamai.net/7/1568/1600/20051025184124/radio.launch.yahoo.com/radioapi/includes/js/compVersionedJS/rapiBridge_1_4.js adeolaegbedokun NONE/- application/x-javascript", - "file.name": "rapiBridge_1_4.js", - "fileset.name": "log", - "input.type": "log", - "log.offset": 11683, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_IMS_HIT" - ], - "rsa.misc.content_type": "application/x-javascript", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 11, - "rsa.time.event_time": "2006-09-08T04:22:57.000Z", - "rsa.time.event_time_str": "1157689377", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 233, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "js", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20051025184124/radio.launch.yahoo.com/radioapi/includes/js/compVersionedJS/rapiBridge_1_4.js", - "url.path": "/7/1568/1600/20051025184124/radio.launch.yahoo.com/radioapi/includes/js/compVersionedJS/rapiBridge_1_4.js", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:57.000Z", - "destination.ip": "213.160.98.159", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689377.424 1159 10.105.33.214 TCP_MISS/304 236 GET http://a1568.g.akamai.net/7/1568/1600/20040405222754/radio.launch.yahoo.com/radio/clientdata/515/other.css adeolaegbedokun DIRECT/213.160.98.159 text/css", - "file.name": "other.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 11922, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.159" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/css", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 1159, - "rsa.time.event_time": "2006-09-08T04:22:57.000Z", - "rsa.time.event_time_str": "1157689377", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 236, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "css", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20040405222754/radio.launch.yahoo.com/radio/clientdata/515/other.css", - "url.path": "/7/1568/1600/20040405222754/radio.launch.yahoo.com/radio/clientdata/515/other.css", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:58.000Z", - "destination.ip": "213.160.98.159", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689378.221 797 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_left.gif adeolaegbedokun DIRECT/213.160.98.159 image/gif", - "file.name": "bg_left.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 12133, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.159" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 797, - "rsa.time.event_time": "2006-09-08T04:22:58.000Z", - "rsa.time.event_time_str": "1157689378", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 238, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "gif", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_left.gif", - "url.path": "/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_left.gif", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:58.000Z", - "destination.ip": "209.73.177.115", - "event.action": "TCP_MISS", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689378.473 3288 10.105.21.199 TCP_MISS/200 2681 CONNECT login.yahoo.com:443 badeyek DIRECT/209.73.177.115 -", - "fileset.name": "log", - "input.type": "log", - "log.offset": 12362, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "login.yahoo.com" - ], - "related.ip": [ - "10.105.21.199", - "209.73.177.115" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_MISS" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "200", - "rsa.network.domain": "login.yahoo.com", - "rsa.time.duration_time": 3288, - "rsa.time.event_time": "2006-09-08T04:22:58.000Z", - "rsa.time.event_time_str": "1157689378", - "rsa.web.alias_host": "login.yahoo.com", - "server.domain": "login.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "login", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 2681, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "login.yahoo.com", - "url.original": "login.yahoo.com:443", - "url.registered_domain": "yahoo.com", - "url.subdomain": "login", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:22:58.000Z", - "destination.ip": "213.160.98.167", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689378.909 1405 10.105.33.214 TCP_MISS/304 136 GET http://a1568.g.akamai.net/7/1568/1600/20050829181418/radio.launch.yahoo.com/radio/common_radio/resources/images/noaccess_msgr_uk.gif adeolaegbedokun DIRECT/213.160.98.167 -", - "file.name": "noaccess_msgr_uk.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 12476, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.167" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "-", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 1405, - "rsa.time.event_time": "2006-09-08T04:22:58.000Z", - "rsa.time.event_time_str": "1157689378", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 136, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "gif", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20050829181418/radio.launch.yahoo.com/radio/common_radio/resources/images/noaccess_msgr_uk.gif", - "url.path": "/7/1568/1600/20050829181418/radio.launch.yahoo.com/radio/common_radio/resources/images/noaccess_msgr_uk.gif", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:58.000Z", - "destination.ip": "213.160.98.159", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689378.924 702 10.105.33.214 TCP_MISS/304 237 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_right.gif adeolaegbedokun DIRECT/213.160.98.159 image/gif", - "file.name": "bg_right.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 12706, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.159" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 702, - "rsa.time.event_time": "2006-09-08T04:22:58.000Z", - "rsa.time.event_time_str": "1157689378", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 237, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "gif", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_right.gif", - "url.path": "/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_right.gif", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:58.000Z", - "event.action": "TCP_IMS_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689378.929 4 10.105.33.214 TCP_IMS_HIT/304 218 GET http://a1568.g.akamai.net/7/1568/1600/20040405222807/radio.launch.yahoo.com/radio/common_radio/resources/images/t.gif adeolaegbedokun NONE/- image/gif", - "file.name": "t.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 12936, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_IMS_HIT" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 4, - "rsa.time.event_time": "2006-09-08T04:22:58.000Z", - "rsa.time.event_time_str": "1157689378", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 218, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "gif", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20040405222807/radio.launch.yahoo.com/radio/common_radio/resources/images/t.gif", - "url.path": "/7/1568/1600/20040405222807/radio.launch.yahoo.com/radio/common_radio/resources/images/t.gif", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:59.000Z", - "destination.ip": "213.160.98.167", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689379.472 563 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_off.gif adeolaegbedokun DIRECT/213.160.98.167 image/gif", - "file.name": "bg_controls_off.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 13147, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.167" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 563, - "rsa.time.event_time": "2006-09-08T04:22:59.000Z", - "rsa.time.event_time_str": "1157689379", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 238, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "gif", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_off.gif", - "url.path": "/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_off.gif", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:22:59.000Z", - "destination.ip": "213.160.98.159", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689379.488 560 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222756/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_center.gif adeolaegbedokun DIRECT/213.160.98.159 image/gif", - "file.name": "bg_center.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 13384, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.159" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 560, - "rsa.time.event_time": "2006-09-08T04:22:59.000Z", - "rsa.time.event_time_str": "1157689379", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 238, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "gif", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20040405222756/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_center.gif", - "url.path": "/7/1568/1600/20040405222756/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_center.gif", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:23:00.000Z", - "destination.ip": "213.160.98.167", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689380.159 685 10.105.33.214 TCP_MISS/304 238 GET http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_fill.gif adeolaegbedokun DIRECT/213.160.98.167 image/gif", - "file.name": "bg_controls_fill.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 13615, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "a1568.g.akamai.net" - ], - "related.ip": [ - "10.105.33.214", - "213.160.98.167" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "304", - "rsa.network.domain": "a1568.g.akamai.net", - "rsa.time.duration_time": 685, - "rsa.time.event_time": "2006-09-08T04:23:00.000Z", - "rsa.time.event_time_str": "1157689380", - "rsa.web.alias_host": "a1568.g.akamai.net", - "server.domain": "a1568.g.akamai.net", - "server.registered_domain": "g.akamai.net", - "server.subdomain": "a1568", - "server.top_level_domain": "akamai.net", - "service.type": "squid", - "source.bytes": 238, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "a1568.g.akamai.net", - "url.extension": "gif", - "url.original": "http://a1568.g.akamai.net/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_fill.gif", - "url.path": "/7/1568/1600/20040405222757/radio.launch.yahoo.com/radio/clientdata/515/skins/1/images/bg_controls_fill.gif", - "url.registered_domain": "g.akamai.net", - "url.scheme": "http", - "url.subdomain": "a1568", - "url.top_level_domain": "akamai.net", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:23:01.000Z", - "event.action": "TCP_DENIED", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689381.267 1 10.105.37.180 TCP_DENIED/407 1728 GET http://www.google.com/supported_domains - NONE/- text/html", - "file.name": "supported_domains", - "fileset.name": "log", - "input.type": "log", - "log.offset": 13853, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.google.com" - ], - "related.ip": [ - "10.105.37.180" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "www.google.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:23:01.000Z", - "rsa.time.event_time_str": "1157689381", - "rsa.web.alias_host": "www.google.com", - "server.domain": "www.google.com", - "server.registered_domain": "google.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1728, - "source.ip": "10.105.37.180", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.google.com", - "url.original": "http://www.google.com/supported_domains", - "url.path": "/supported_domains", - "url.registered_domain": "google.com", - "url.scheme": "http", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:23:01.000Z", - "event.action": "TCP_DENIED", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689381.659 0 10.105.47.191 TCP_DENIED/407 1782 GET http://us.mcafee.com/apps/agent/en-us/agent5/chknews.asp? - NONE/- text/html", - "file.name": "chknews.asp", - "fileset.name": "log", - "input.type": "log", - "log.offset": 13972, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.mcafee.com" - ], - "related.ip": [ - "10.105.47.191" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "us.mcafee.com", - "rsa.time.duration_time": 0, - "rsa.time.event_time": "2006-09-08T04:23:01.000Z", - "rsa.time.event_time_str": "1157689381", - "rsa.web.alias_host": "us.mcafee.com", - "server.domain": "us.mcafee.com", - "server.registered_domain": "mcafee.com", - "server.subdomain": "us", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1782, - "source.ip": "10.105.47.191", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.mcafee.com", - "url.extension": "asp", - "url.original": "http://us.mcafee.com/apps/agent/en-us/agent5/chknews.asp?", - "url.path": "/apps/agent/en-us/agent5/chknews.asp", - "url.query": "", - "url.registered_domain": "mcafee.com", - "url.scheme": "http", - "url.subdomain": "us", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:23:01.000Z", - "destination.ip": "216.109.125.112", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689381.660 2171 10.105.33.214 TCP_MISS/200 449 GET http://launch.adserver.yahoo.com/l? adeolaegbedokun DIRECT/216.109.125.112 image/gif", - "file.name": "l", - "fileset.name": "log", - "input.type": "log", - "log.offset": 14109, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "launch.adserver.yahoo.com" - ], - "related.ip": [ - "10.105.33.214", - "216.109.125.112" - ], - "related.user": [ - "adeolaegbedokun" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "launch.adserver.yahoo.com", - "rsa.time.duration_time": 2171, - "rsa.time.event_time": "2006-09-08T04:23:01.000Z", - "rsa.time.event_time_str": "1157689381", - "rsa.web.alias_host": "launch.adserver.yahoo.com", - "server.domain": "launch.adserver.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "launch.adserver", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 449, - "source.ip": "10.105.33.214", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "launch.adserver.yahoo.com", - "url.original": "http://launch.adserver.yahoo.com/l?", - "url.path": "/l", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "launch.adserver", - "url.top_level_domain": "com", - "user.name": "adeolaegbedokun" - }, - { - "@timestamp": "2006-09-08T04:23:02.000Z", - "destination.ip": "217.12.10.96", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689382.173 3700 10.105.21.199 TCP_MISS/200 11746 GET http://uk.f250.mail.yahoo.com/dc/launch? badeyek DIRECT/217.12.10.96 text/html", - "file.name": "launch", - "fileset.name": "log", - "input.type": "log", - "log.offset": 14251, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "uk.f250.mail.yahoo.com" - ], - "related.ip": [ - "10.105.21.199", - "217.12.10.96" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "200", - "rsa.network.domain": "uk.f250.mail.yahoo.com", - "rsa.time.duration_time": 3700, - "rsa.time.event_time": "2006-09-08T04:23:02.000Z", - "rsa.time.event_time_str": "1157689382", - "rsa.web.alias_host": "uk.f250.mail.yahoo.com", - "server.domain": "uk.f250.mail.yahoo.com", - "server.registered_domain": "yahoo.com", - "server.subdomain": "uk.f250.mail", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 11746, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "uk.f250.mail.yahoo.com", - "url.original": "http://uk.f250.mail.yahoo.com/dc/launch?", - "url.path": "/dc/launch", - "url.query": "", - "url.registered_domain": "yahoo.com", - "url.scheme": "http", - "url.subdomain": "uk.f250.mail", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:23:02.000Z", - "event.action": "TCP_DENIED", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689382.622 1 10.105.37.180 TCP_DENIED/407 1670 CONNECT login.live.com:443 - NONE/- text/html", - "fileset.name": "log", - "input.type": "log", - "log.offset": 14389, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "login.live.com" - ], - "related.ip": [ - "10.105.37.180" - ], - "related.user": [ - "-" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "TCP_DENIED" - ], - "rsa.misc.content_type": "text/html", - "rsa.misc.result_code": "407", - "rsa.network.domain": "login.live.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:23:02.000Z", - "rsa.time.event_time_str": "1157689382", - "rsa.web.alias_host": "login.live.com", - "server.domain": "login.live.com", - "server.registered_domain": "live.com", - "server.subdomain": "login", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1670, - "source.ip": "10.105.37.180", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "login.live.com", - "url.original": "login.live.com:443", - "url.registered_domain": "live.com", - "url.subdomain": "login", - "url.top_level_domain": "com", - "user.name": "-" - }, - { - "@timestamp": "2006-09-08T04:23:04.000Z", - "destination.ip": "213.160.98.169", - "event.action": "TCP_SWAPFAIL_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689384.316 2828 10.105.21.199 TCP_SWAPFAIL_MISS/200 633 GET http://us.js2.yimg.com/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/77cf3e56414f974dfd8616f56f0f632c_1.js badeyek DIRECT/213.160.98.169 application/x-javascript", - "file.name": "77cf3e56414f974dfd8616f56f0f632c_1.js", - "fileset.name": "log", - "input.type": "log", - "log.offset": 14491, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.js2.yimg.com" - ], - "related.ip": [ - "10.105.21.199", - "213.160.98.169" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_SWAPFAIL_MISS" - ], - "rsa.misc.content_type": "application/x-javascript", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.js2.yimg.com", - "rsa.time.duration_time": 2828, - "rsa.time.event_time": "2006-09-08T04:23:04.000Z", - "rsa.time.event_time_str": "1157689384", - "rsa.web.alias_host": "us.js2.yimg.com", - "server.domain": "us.js2.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.js2", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 633, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.js2.yimg.com", - "url.extension": "js", - "url.original": "http://us.js2.yimg.com/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/77cf3e56414f974dfd8616f56f0f632c_1.js", - "url.path": "/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/77cf3e56414f974dfd8616f56f0f632c_1.js", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.js2", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:23:05.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689385.714 1397 10.105.21.199 TCP_HIT/200 1742 GET http://us.js1.yimg.com/us.yimg.com/lib/hdr/ygma5.css badeyek NONE/- text/css", - "file.name": "ygma5.css", - "fileset.name": "log", - "input.type": "log", - "log.offset": 14714, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.js1.yimg.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "text/css", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.js1.yimg.com", - "rsa.time.duration_time": 1397, - "rsa.time.event_time": "2006-09-08T04:23:05.000Z", - "rsa.time.event_time_str": "1157689385", - "rsa.web.alias_host": "us.js1.yimg.com", - "server.domain": "us.js1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.js1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1742, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.js1.yimg.com", - "url.extension": "css", - "url.original": "http://us.js1.yimg.com/us.yimg.com/lib/hdr/ygma5.css", - "url.path": "/us.yimg.com/lib/hdr/ygma5.css", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.js1", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:23:07.000Z", - "destination.ip": "213.160.98.169", - "event.action": "TCP_MISS", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689387.690 1977 10.105.21.199 TCP_MISS/200 14561 GET http://us.js2.yimg.com/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/f7fc76100697c9c2d25dd0ec35e563b0_1.js badeyek DIRECT/213.160.98.169 application/x-javascript", - "file.name": "f7fc76100697c9c2d25dd0ec35e563b0_1.js", - "fileset.name": "log", - "input.type": "log", - "log.offset": 14848, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.js2.yimg.com" - ], - "related.ip": [ - "10.105.21.199", - "213.160.98.169" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "DIRECT", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_MISS" - ], - "rsa.misc.content_type": "application/x-javascript", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.js2.yimg.com", - "rsa.time.duration_time": 1977, - "rsa.time.event_time": "2006-09-08T04:23:07.000Z", - "rsa.time.event_time_str": "1157689387", - "rsa.web.alias_host": "us.js2.yimg.com", - "server.domain": "us.js2.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.js2", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 14561, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.js2.yimg.com", - "url.extension": "js", - "url.original": "http://us.js2.yimg.com/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/f7fc76100697c9c2d25dd0ec35e563b0_1.js", - "url.path": "/us.js.yimg.com/lib/pim/r/dclient/d/js/uk/f7fc76100697c9c2d25dd0ec35e563b0_1.js", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.js2", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:23:07.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689387.771 80 10.105.21.199 TCP_HIT/200 68733 GET http://us.js1.yimg.com/us.yimg.com/lib/pim/r/medici/13_15/mail/ac.js badeyek NONE/- application/x-javascript", - "file.name": "ac.js", - "fileset.name": "log", - "input.type": "log", - "log.offset": 15064, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.js1.yimg.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "application/x-javascript", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.js1.yimg.com", - "rsa.time.duration_time": 80, - "rsa.time.event_time": "2006-09-08T04:23:07.000Z", - "rsa.time.event_time_str": "1157689387", - "rsa.web.alias_host": "us.js1.yimg.com", - "server.domain": "us.js1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.js1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 68733, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.js1.yimg.com", - "url.extension": "js", - "url.original": "http://us.js1.yimg.com/us.yimg.com/lib/pim/r/medici/13_15/mail/ac.js", - "url.path": "/us.yimg.com/lib/pim/r/medici/13_15/mail/ac.js", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.js1", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:23:07.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689387.830 1 10.105.21.199 TCP_HIT/200 898 GET http://us.js2.yimg.com/us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b4.js badeyek NONE/- application/x-javascript", - "file.name": "yahoo_2.0.0-b4.js", - "fileset.name": "log", - "input.type": "log", - "log.offset": 15231, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.js2.yimg.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "application/x-javascript", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.js2.yimg.com", - "rsa.time.duration_time": 1, - "rsa.time.event_time": "2006-09-08T04:23:07.000Z", - "rsa.time.event_time_str": "1157689387", - "rsa.web.alias_host": "us.js2.yimg.com", - "server.domain": "us.js2.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.js2", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 898, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.js2.yimg.com", - "url.extension": "js", - "url.original": "http://us.js2.yimg.com/us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b4.js", - "url.path": "/us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b4.js", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.js2", - "url.top_level_domain": "com", - "user.name": "badeyek" - }, - { - "@timestamp": "2006-09-08T04:23:07.000Z", - "event.action": "TCP_HIT", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "1157689387.832 60 10.105.21.199 TCP_HIT/200 26803 GET http://us.i1.yimg.com/us.yimg.com/i/us/pim/dclient/d/img/liam_ball_1.gif badeyek NONE/- image/gif", - "file.name": "liam_ball_1.gif", - "fileset.name": "log", - "input.type": "log", - "log.offset": 15402, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "us.i1.yimg.com" - ], - "related.ip": [ - "10.105.21.199" - ], - "related.user": [ - "badeyek" - ], - "rsa.internal.hcode": "NONE", - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "TCP_HIT" - ], - "rsa.misc.content_type": "image/gif", - "rsa.misc.result_code": "200", - "rsa.network.domain": "us.i1.yimg.com", - "rsa.time.duration_time": 60, - "rsa.time.event_time": "2006-09-08T04:23:07.000Z", - "rsa.time.event_time_str": "1157689387", - "rsa.web.alias_host": "us.i1.yimg.com", - "server.domain": "us.i1.yimg.com", - "server.registered_domain": "yimg.com", - "server.subdomain": "us.i1", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 26803, - "source.ip": "10.105.21.199", - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "us.i1.yimg.com", - "url.extension": "gif", - "url.original": "http://us.i1.yimg.com/us.yimg.com/i/us/pim/dclient/d/img/liam_ball_1.gif", - "url.path": "/us.yimg.com/i/us/pim/dclient/d/img/liam_ball_1.gif", - "url.registered_domain": "yimg.com", - "url.scheme": "http", - "url.subdomain": "us.i1", - "url.top_level_domain": "com", - "user.name": "badeyek" - } -] diff --git a/x-pack/filebeat/module/squid/log/test/generated.log b/x-pack/filebeat/module/squid/log/test/generated.log deleted file mode 100644 index 14078eea632..00000000000 --- a/x-pack/filebeat/module/squid/log/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -10.251.224.219 7337 [29/Jan/2016:6:09:59 nto] "PROPFIND https://example.org/exercita/der.htm?odoco=ria#min ite" 10.234.224.44 etdo tation "quasiarc" liqua ciade 5699 "https://example.net/umq/ntium.gif?nes=eab#aliqu" "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]" deny -10.102.123.34 7178 [12/Feb/2016:1:12:33 nostrud] "PURGE https://www.example.org/enderitq/sperna.txt?billoi=oreetdol#nidolor tatemU" 10.70.36.222 estlabo doeiu "nia" olupt volup 208 "https://example.com/eosquir/orsi.txt?itessequ=vol#luptat" "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10" deny -10.15.135.248 7269 [26/Feb/2016:8:15:08 mquia] "OPTIONS https://internal.example.com/aqu/utper.jpg?eFinib=omm#iin proident" 10.142.172.64 lupt tia "oloremqu" temvel iatu 5493 "https://example.net/dolo/meumfug.gif?roinBCS=ufugiatn#tionulam" "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36" accept -10.44.134.153 5162 [12/Mar/2016:3:17:42 nci] "GET https://api.example.org/ceroinBC/ratvolup.gif?iatu=ionofde#con uia" quiavo 1156 "https://mail.example.com/consec/taliquip.html?radip=tNequ#gelit" "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61" allow 10.81.122.126 taev 160.145000 -10.160.95.56 1980 [26/Mar/2016:10:20:16 aqui] "PUT https://api.example.org/isetq/estqui.gif?magn=equuntu#eos enimad" 10.171.175.51 boreet onev "tenima" laboreet aquaeabi 5738 "https://api.example.net/veleumi/tia.gif?ude=maveniam#uian" "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" cancel -10.175.107.139 4243 [09/Apr/2016:5:22:51 antium] "HEAD https://www.example.org/inesci/rsitvolu.txt?pori=occ#ect reetdolo" 10.12.195.60 uiano mrema "autfu" natura aboris 2946 "https://api.example.com/ssitaspe/gitsedqu.jpg?iutal=dexe#urerep" "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" accept -10.198.136.50 6875 [24/Apr/2016:12:25:25 llam] "DELETE https://www5.example.com/ari/eataevit.txt?iam=mqua#atat quunt" 10.207.249.121 iciade tsed "orai" mUt usmodte 1296 "https://www.example.org/ametcons/porainc.jpg?temsequ=emquiavo#nonnu" "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30" allow -10.34.9.93 124 [08/May/2016:7:27:59 onse] "PROPFIND https://example.org/tatno/imav.htm?ofdeF=tion#orsitame quiratio" 10.116.120.216 qua umdo "sed" apariat mol 1510 "https://internal.example.net/turveli/toccae.htm?erc=taliqu#temUten" "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36" accept -10.90.131.186 6343 [22/May/2016:2:30:33 nimadmin] "HEAD https://example.org/uaera/sitas.txt?aedic=atquovo#iumto aboreetd" 10.30.216.41 enim saute "vel" quu undeo 5794 "https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq" "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" accept -10.8.88.110 7618 [05/Jun/2016:9:33:08 ionul] "CONNECT https://mail.example.org/edquiano/loru.htm?end=enia#nsequu cup" 10.203.172.203 idestla Nemoeni "uradi" aborumSe luptat 6884 "https://www5.example.org/strude/ctetura.htm?ittenbyC=aperi#lor" "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" accept -10.71.34.9 267 [20/Jun/2016:4:35:42 dolore] "UNLOCK https://www.example.org/iqui/etc.txt?tatiset=eprehen#xercitat lpa" 10.158.185.163 rudexerc aliq "rsitam" quam adm 987 "https://www.example.org/ritatis/oloremi.txt?icab=mwr#fugi" "Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g" allow -10.210.74.24 6423 [04/Jul/2016:11:38:16 untut] "OPTIONS https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu stiae" 10.201.76.240 amqu uines "nsec" onse emips 2655 "https://example.net/tion/eataev.htm?uiineavo=tisetq#irati" "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" accept -10.114.138.121 1939 [18/Jul/2016:6:40:50 tati] "COPY https://api.example.org/oriosamn/deFinibu.gif?iciatisu=rehender#eporroqu uat" 10.206.136.206 suntinc xeac "nidolo" tatn eli 6462 "https://www.example.net/pida/nse.html?emeumfu=CSed#lupt" "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" deny -10.200.199.166 3727 [02/Aug/2016:1:43:25 amvolup] "COPY https://mail.example.org/rehend/tio.html?numqu=qui#civeli lum" 10.134.161.118 tat ipitla "quae" maccusa uptat 3458 "https://www.example.com/xerci/aqu.htm?olorema=iades#siarchi" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36" block -10.122.46.71 2807 [16/Aug/2016:8:45:59 ihilm] "NONE https://www.example.org/eav/ionevo.txt?siar=orev#iamquis quirat" 10.76.3.41 isc aturve "emulla" mpori aaliquaU 2989 "https://www5.example.com/ern/psaquae.html?nsectet=utla#utei" "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" allow -10.164.250.63 2530 [30/Aug/2016:3:48:33 eritqu] "PROPFIND https://internal.example.net/wri/bor.jpg?hitect=dol#leumiu namali" 10.249.213.83 nsecte itame "eumfug" lit asun 1250 "https://api.example.com/oluptate/onseq.html?labore=texp#tMalor" "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30" accept -10.61.242.75 2591 [13/Sep/2016:10:51:07 dantiumt] "HEAD https://api.example.net/equat/doloreme.htm?ione=ihilmole#eriamea amre" 10.236.248.65 pisciv iquidex "radipisc" tmo fficiade 3280 "https://www5.example.net/uioffi/oru.jpg?one=etMalor#ipi" "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" cancel -10.13.59.31 5685 [28/Sep/2016:5:53:42 sperna] "PUT https://www5.example.com/estia/tper.gif?volupt=osqui#xerc iutali" 10.214.7.83 liquide etdol "uela" boN eprehend 2462 "https://internal.example.net/lamcolab/ati.jpg?gel=lorsitam#mpo" "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" block -10.89.201.140 2447 [12/Oct/2016:12:56:16 uamei] "GET https://internal.example.net/sin/rvel.htm?nimid=itatione#isnis uptasn" 10.49.92.179 osamn isnisiu "bore" tsu tcons 3128 "https://api.example.org/lorinre/olorsita.gif?idata=rumwritt#magnid" "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36" accept -10.235.7.92 5787 [26/Oct/2016:7:58:50 nsecte] "PURGE https://api.example.org/abo/veniamqu.gif?aliquide=ofde#equat derit" 10.90.86.89 piscin lapar "laboree" tfu udan 5516 "https://mail.example.net/xeacomm/mveleu.htm?utlabor=rau#idex" "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36" deny -10.14.211.43 4762 [10/Nov/2016:3:01:24 eiu] "PROPFIND https://api.example.org/autfu/gnaaliq.jpg?olupta=litse#icabo itatio" 10.14.48.16 sintoc volupt "siste" uiinea Utenima 1612 "https://www5.example.net/ptatem/Nequepor.html?ugiatnu=ciati#nto" "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30" cancel -10.47.25.230 5491 [24/Nov/2016:10:03:59 ese] "CONNECT https://internal.example.net/ptatemq/luptatev.html?Nequepo=ipsumd#ntocc uteirure" 10.93.123.174 evelit reetdolo "smo" etcons iusmodi 1563 "https://example.com/uiac/epte.gif?itam=aper#santiumd" "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10" block -10.7.46.36 837 [08/Dec/2016:5:06:33 nonn] "MKOL https://www5.example.net/quiavol/rrorsi.gif?iatisu=sec#cons sBon" 10.233.48.103 leumiur tlab "aperiame" isc ullamcor 584 "https://www5.example.com/tateve/itinvol.txt?tenatus=cipitlab#ipsumd" "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30" cancel -10.93.220.10 2805 [23/Dec/2016:12:09:07 com] "PROPATCH https://api.example.net/orain/tiumt.jpg?litessec=itas#edquia sequatu" 10.27.58.92 amvo qui "tasn" Nemoenim squirati 63 "https://mail.example.com/nbyCic/utlabor.html?iciade=ntiumt#iquipe" "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36" accept -10.213.144.249 4427 [06/Jan/2017:7:11:41 taedicta] "PURGE https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut uamni" 10.135.217.12 metMalo ntexplic "archite" loreme untu 5676 "https://example.net/con/nisist.gif?ium=esciuntN#idunt" "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" block -10.13.226.57 3275 [20/Jan/2017:2:14:16 runtm] "PURGE https://mail.example.net/velitse/oditem.html?torever=oremi#mestq temUt" 10.233.239.112 npr mquelau "iadolor" amcol adeser 3780 "https://internal.example.com/tqu/reprehen.gif?quam=quid#fugiat" "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36" cancel -10.161.203.252 301 [03/Feb/2017:9:16:50 emquia] "CONNECT https://internal.example.org/isnisi/ritatise.gif?tamet=quatur#uisa eFi" 10.21.169.127 rpori ice "oles" edic seq 2835 "https://example.com/tatn/dolorsit.jpg?billo=labo#oNemoeni" "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" accept -10.17.215.111 148 [18/Feb/2017:4:19:24 ratv] "LOCK https://www.example.net/ianon/tsed.htm?ameiusm=proide#ano piscinge" 10.69.139.26 ditemp edqui "nre" veli volupta 7124 "https://api.example.com/ersp/enderi.jpg?adi=umwrit#uptate" "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30" block -10.10.213.83 7206 [04/Mar/2017:11:21:59 nisi] "COPY https://www5.example.org/ncididun/umSe.jpg?ise=itau#apariat vitaedi" 10.104.80.189 dolore onsecte "nBCSedut" ugiat onulam 1542 "https://mail.example.org/oditautf/quatu.jpg?lumdolor=nonp#labo" "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" accept -10.125.131.91 3480 [18/Mar/2017:6:24:33 urv] "UNLOCK https://example.org/uatur/adminimv.gif?exeacom=roidents#tem dol" 10.116.230.217 mvele isis "uasiar" utlab emUteni 7122 "https://api.example.org/lor/velillu.html?dolorem=tvolu#nreprehe" "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16" block -10.26.96.202 2751 [02/Apr/2017:1:27:07 rautodi] "ICP_QUERY https://api.example.com/ven/rQu.html?doloreme=dun#reprehe tincu" 10.119.90.128 lor oraincid "intocc" amcorp ntsunt 4826 "https://mail.example.com/olo/psumqu.txt?fdeF=iquidexe#diconse" "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" cancel -10.0.98.205 126 [16/Apr/2017:8:29:41 edquiac] "HEAD https://api.example.net/eseru/quamest.html?qua=rsita#ate ipsamvo" 10.76.110.144 tdol upt "mex" tatem untutlab 3386 "https://mail.example.com/plicab/oremq.html?uisaute=imide#poriss" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36" deny -10.224.11.165 1646 [30/Apr/2017:3:32:16 nof] "MOVE https://internal.example.org/mvolu/conse.txt?aincidu=nimadmin#isiu licabo" 10.135.46.242 lupta xeaco "nvolupt" oremi elites 1940 "https://www.example.org/boNemoe/onsequ.html?amvolupt=onevolu#mnis" "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36" deny -10.27.44.4 4686 [14/May/2017:10:34:50 sequatD] "TRACE https://internal.example.org/isciv/rroqu.html?uisa=tametco#ilmol eri" 10.154.53.249 tae autodit "elit" cidunt plica 7398 "https://internal.example.org/emqu/nderi.html?accusant=onse#admin" "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10" accept -10.93.39.140 4275 [29/May/2017:5:37:24 ute] "COPY https://www5.example.net/uaeratv/isa.txt?periam=dqu#pid rExc" 10.150.245.88 orisn reetd "prehen" ntutlabo iusmodte 1738 "https://example.org/isc/Nequepor.txt?rem=idid#tesse" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36" cancel -10.61.92.2 6595 [12/Jun/2017:12:39:58 maliquam] "UNLOCK https://www5.example.com/orroq/vitaedic.txt?orisni=ons#remagn ecillu" 10.73.207.70 llamco atu "untincul" ssecil commodi 3023 "https://mail.example.net/tate/onevo.htm?emvele=isnost#olorem" "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30" block -10.84.32.178 5271 [26/Jun/2017:7:42:33 aliq] "GET https://example.net/mven/olorsit.gif?oremag=illu#ruredo mac" temUt 2741 "https://internal.example.com/uamnihi/risnis.html?scingeli=isn#sBono" "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36" allow 10.50.124.116 numquam 104.719000 -10.173.222.131 918 [11/Jul/2017:2:45:07 ori] "TRACE https://www5.example.net/rum/eataevi.html?ulla=iqu#oin hil" 10.211.234.224 uiadol Duisa "lupta" aUt boNem 5564 "https://api.example.org/maveni/onevo.htm?liquaUte=alorum#obeataev" "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" accept -10.11.83.126 6581 [25/Jul/2017:9:47:41 naaliq] "PROPFIND https://mail.example.net/osquir/mod.txt?fugitse=imad#tinvolup tsed" 10.0.157.225 itam atu "lloin" remipsum tempor 1282 "https://www5.example.net/incidid/rure.htm?edquian=loremeu#aturve" "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" deny -10.228.77.21 6889 [08/Aug/2017:4:50:15 lamc] "PUT https://api.example.com/asper/umq.txt?itasper=uae#mve uia" 10.92.237.93 mad onse "redol" gnaa mod 5107 "https://www5.example.com/toditaut/voluptat.htm?strumex=eprehend#asnu" "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30" cancel -10.102.215.23 3665 [22/Aug/2017:11:52:50 esseq] "POST https://www5.example.net/quatD/isqua.jpg?oloreseo=iruredol#veniamqu licaboN" 10.20.28.92 econs ntexpl "dunt" litsedq nderiti 409 "https://api.example.com/Cic/olorema.txt?iscive=quasiar#aeab" "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16" allow -10.45.28.159 5627 [06/Sep/2017:6:55:24 ree] "NONE https://api.example.net/ation/luptas.html?iatqu=lorsi#repreh plic" 10.17.87.79 tetur tionula "ritqu" ecatcupi uamei 4595 "https://www5.example.com/onse/olorem.gif?duntutla=ntium#iration" "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" block -10.177.238.45 5137 [20/Sep/2017:1:57:58 ssusci] "DELETE https://internal.example.com/mpo/unte.jpg?ueipsa=scipitl#eumi quasiarc" 10.189.94.51 tetura rsp "oluptat" metco acom 5704 "https://api.example.com/tem/exeacomm.txt?taliqui=mides#ciun" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36" allow -10.46.77.76 5169 [04/Oct/2017:9:00:32 anim] "GET https://www.example.org/uov/quaeab.jpg?moles=dipiscin#olup aco" 10.101.85.169 natu liquid "enim" Finibus radi 5697 "https://example.com/taed/umdolo.html?rroqu=dquiaco#nibus" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36" accept -10.24.54.129 77 [19/Oct/2017:4:03:07 eprehend] "HEAD https://example.net/edolo/ugiatquo.jpg?eosquira=pta#snos orsi" 10.231.7.209 lorsita eavol "osamnis" temaccu scipitl 1247 "https://www5.example.org/caboNem/urExcept.txt?litesseq=atcupida#tessequa" "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36" block -10.121.163.5 7803 [02/Nov/2017:11:05:41 redol] "CONNECT https://api.example.org/isci/dolor.htm?orinrep=quiavol#nrepreh ratv" 10.77.129.175 tali BCS "qui" ugiatquo incidid 2617 "https://www.example.com/sBonor/fugits.jpg?amc=vol#admi" "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" allow -10.51.236.148 329 [16/Nov/2017:6:08:15 adol] "PROPFIND https://mail.example.com/roide/tem.gif?rerepre=nculpaq#culpaqui tvolup" 10.116.146.114 col obea "emp" agnaaliq est 1444 "https://www.example.com/inculp/onofd.gif?umdolors=dolori#asperna" "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" deny -10.244.108.135 6997 [01/Dec/2017:1:10:49 ume] "NONE https://internal.example.net/rautod/olest.jpg?lapar=ritati#edquia itesse" 10.217.222.99 ame amvolu "mip" tion tobeatae 2512 "https://api.example.com/iqua/luptat.txt?oremqu=uradi#velitsed" "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90" block -10.4.69.152 3833 [15/Dec/2017:8:13:24 scivel] "PUT https://api.example.org/iusmodt/enim.txt?aquio=ersp#iame orroquis" 10.150.198.112 ntmoll mexer "estla" uipexe abor 1370 "https://www.example.net/remips/illoi.jpg?abori=uisnostr#reetdol" "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10" block -10.45.114.111 357 [29/Dec/2017:3:15:58 olup] "POST https://example.org/abillo/undeom.html?oraincid=quaer#eetdo tlab" 10.45.54.107 seddoeiu nse "aali" edictasu mdolors 7490 "https://www5.example.org/atis/atDuis.txt?nisiut=rumwri#velill" "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]" accept -10.49.242.174 4078 [12/Jan/2018:10:18:32 tat] "TRACE https://mail.example.net/uam/orumSec.jpg?isnisiu=suntincu#sse venia" 10.205.28.24 oeni untutlab "tvolup" consecte pteurs 742 "https://www5.example.net/ons/tiaecon.html?unt=tass#tiumdol" "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90" allow -10.17.202.219 487 [27/Jan/2018:5:21:06 iame] "HEAD https://www5.example.org/umiurer/rere.txt?mnisi=usmo#iamea imaveni" 10.183.223.149 cor odoco "oin" itseddoe elites 6366 "https://mail.example.com/eursinto/litesse.html?licaboNe=tautfug#giatquov" "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" deny -10.81.140.173 7623 [10/Feb/2018:12:23:41 itae] "MOVE https://internal.example.net/atnula/ditautf.jpg?iquidex=olup#remipsu tan" 10.88.172.222 doconse etdol "dolorsi" nturmag tura 6695 "https://internal.example.org/totam/ntoccae.htm?idunt=atqu#naturau" "mobmail android 2.1.3.3150" cancel -10.162.129.196 4247 [24/Feb/2018:7:26:15 snisi] "OPTIONS https://api.example.net/uscip/umS.txt?quiacons=uisa#xeacommo Cicero" 10.247.53.179 issu identsu "piscivel" hend eacommo 6835 "https://example.com/osquira/umd.gif?scipi=tur#acon" "mobmail android 2.1.3.3150" accept -10.110.86.230 536 [11/Mar/2018:2:28:49 eFini] "UNLOCK https://mail.example.com/mrema/ullamc.txt?eufug=roquisq#temporai uido" 10.172.148.223 snulap enimadm "stenatu" upta atc 3066 "https://www5.example.net/asnulap/ipi.htm?orissu=fic#sBon" "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80" accept -10.93.159.170 3481 [25/Mar/2018:9:31:24 emullam] "GET https://www5.example.com/isau/itinvol.txt?saquaea=ons#orsitam modico" 10.232.19.43 porinc riame "riat" sseq eriam 729 "https://internal.example.net/imve/essequam.gif?urQuis=etcon#onsequu" "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36" deny -10.207.97.192 973 [08/Apr/2018:4:33:58 emp] "ICP_QUERY https://api.example.net/veli/venia.htm?etdolor=uat#onemulla riaturEx" 10.55.55.72 nculp asp "eacom" mag gelitse 2007 "https://example.net/lab/llumq.htm?tetura=rumet#uptasnul" "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" cancel -10.41.156.88 203 [22/Apr/2018:11:36:32 oco] "MOVE https://internal.example.net/ainci/osqu.jpg?sus=imavenia#expli ugiat" 10.89.73.240 orem ntorever "pisciv" fugiatqu seos 5561 "https://www5.example.net/elillum/veleumi.gif?tvol=oluptate#lit" "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61" deny -10.54.44.231 5292 [07/May/2018:6:39:06 aco] "CONNECT https://www.example.org/runtm/eturadip.htm?psumd=oloree#seos rios" 10.101.183.86 mvenia mcorpo "ntexpl" abor oreverit 6451 "https://internal.example.net/tat/eufugia.htm?tau=fficia#est" "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" allow -10.181.177.74 3378 [21/May/2018:1:41:41 itsedd] "LOCK https://internal.example.org/liquipex/uisnos.html?ventor=lupt#umwri odoc" 10.130.150.189 oreeu nvo "iamqui" tassita colabori 1223 "https://www.example.net/lpa/isn.htm?iat=ffic#siuta" "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" accept -10.76.220.3 2492 [04/Jun/2018:8:44:15 serrorsi] "GET https://api.example.org/mquisnos/lore.txt?siar=isn#veniamq lup" 10.83.130.95 ipitlabo userror "eacommo" nderi liqua 7030 "https://api.example.net/henderit/remq.jpg?voluptas=velill#rspic" "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36" deny -10.219.245.58 7073 [19/Jun/2018:3:46:49 snisiut] "COPY https://www.example.com/quas/occaeca.htm?ender=dico#uptatem upt" 10.166.160.217 olor radip "rchitect" Dui iameaqu 2429 "https://api.example.com/asnulap/yCiceroi.jpg?ender=inc#tect" "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16" deny -10.121.121.153 723 [03/Jul/2018:10:49:23 smoditem] "UNLOCK https://www5.example.org/uidolo/umdolore.jpg?oquisq=abori#sit catcu" 10.183.243.246 amni tatio "amquisno" modoc magnam 3267 "https://example.com/idatat/onev.html?lesti=oreseo#reprehen" "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" cancel -10.54.5.47 1585 [17/Jul/2018:5:51:58 mmodi] "OPTIONS https://internal.example.net/eniamqu/inimav.htm?imadm=uta#tisu remagnam" 10.202.224.209 iusmodit aturv "ectetura" obeataev umf 3141 "https://www.example.com/quaeabil/emip.htm?urExc=tDuis#iqu" "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36" cancel -10.72.99.69 3172 [01/Aug/2018:12:54:32 oremeumf] "PROPFIND https://mail.example.net/sintocca/mipsumqu.htm?tnulapar=ico#giatquo lors" 10.170.234.233 accus uatu "mquis" lab uido 2046 "https://mail.example.com/tena/aal.jpg?CSedu=mcol#lup" "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" allow -10.245.240.47 4017 [15/Aug/2018:7:57:06 itaedict] "DELETE https://api.example.org/rep/remap.html?siarc=fdeFin#eleumi edic" 10.142.130.227 olabori odic "iuta" liquaUte scivelit 7795 "https://internal.example.net/scipit/lloinve.htm?evolup=rvelil#isiutali" "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" allow -10.62.188.193 4104 [29/Aug/2018:2:59:40 atu] "DELETE https://api.example.net/eturad/tDuis.htm?enimadmi=tateveli#osa mini" 10.61.110.7 oremque quaU "ufugi" cin tmo 508 "https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex" "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" deny -10.172.139.78 6533 [12/Sep/2018:10:02:15 lamco] "COPY https://www.example.net/hender/ptatemU.htm?mquisnos=tnulapa#madmi tlabore" 10.68.198.188 doeiu onsectet "dentsunt" inea animid 2119 "https://mail.example.net/onnumqua/quioff.html?upt=atatnonp#nvol" "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61" block -10.172.47.7 2805 [27/Sep/2018:5:04:49 midest] "CONNECT https://www.example.org/iduntutl/rsitam.htm?ntor=oinBCSed#oid rchit" 10.169.63.169 ariat midestl "quatu" avolu teturad 3465 "https://api.example.net/iquaUten/prehende.gif?rpo=velites#nonpro" "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16" block -10.32.98.109 5012 [11/Oct/2018:12:07:23 dexercit] "PURGE https://example.org/itessequ/porissu.html?uip=ectobea#dat aUtenima" 10.62.10.137 eeufugi deomnisi "olupta" oll laboree 3880 "https://api.example.org/cupidata/stiaecon.htm?rsint=itl#ttenb" "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" cancel -10.176.62.146 5945 [25/Oct/2018:7:09:57 lors] "COPY https://api.example.net/enimad/tis.txt?mipsumq=ident#nimide quelaud" 10.255.40.12 rro oeiusmo "nimv" emeu tatemac 5192 "https://www5.example.com/teursint/etMa.gif?lamcolab=ceroinB#umqui" "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90" deny -10.194.198.46 3387 [09/Nov/2018:2:12:32 cta] "GET https://api.example.org/taspe/yCiceroi.htm?cti=ommodoc#nse mveniam" tuser 2694 "https://internal.example.com/tlaboru/aeabillo.txt?equuntu=quamni#turveli" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]" deny 10.88.98.31 rured 105.243000 -10.5.49.20 7503 [23/Nov/2018:9:15:06 macc] "OPTIONS https://example.com/beat/rro.jpg?uisau=qua#iarchite emsequi" 10.1.27.133 edqu tationu "gnaaliq" olore ntutlab 6881 "https://www5.example.com/gnama/esciun.html?ratvo=ntutl#volupt" "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30" block -10.11.73.145 6972 [07/Dec/2018:4:17:40 uisautem] "POST https://www5.example.org/loremq/turmagni.txt?emUtenim=ende#dexea aco" 10.70.244.155 olorsi caboNemo "uptas" temaccus ons 2160 "https://internal.example.com/ctetur/mvolupta.html?oreeu=mea#ssec" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]" accept -10.204.214.98 985 [21/Dec/2018:11:20:14 equ] "PURGE https://www5.example.net/deomnisi/ddoe.txt?oremi=ectobeat#ecte abo" 10.121.80.158 boriosa cillumdo "ditau" moenimip uames 7663 "https://internal.example.com/lor/oreeu.html?eturadip=nost#atus" "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" accept -10.74.115.33 4006 [05/Jan/2019:6:22:49 nsequat] "PURGE https://api.example.net/tiset/sci.jpg?rauto=doloreeu#lors eumfu" 10.139.151.19 eumf roquisq "uasi" maveniam uis 5533 "https://www.example.com/imi/animi.htm?ama=tatnonp#ntiumt" "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10" block -10.191.220.1 6454 [19/Jan/2019:1:25:23 ctetura] "DELETE https://api.example.net/tDuisau/aturve.htm?tper=pisciv#tconsect pariat" 10.242.48.203 ctobeat isi "idexeac" ntu tdolo 3872 "https://mail.example.com/olupt/ola.jpg?etquasia=qua#adm" "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36" deny -10.109.88.27 5568 [02/Feb/2019:8:27:57 cidu] "PROPATCH https://internal.example.com/oluptate/todi.jpg?tdolo=ident#scip eacommod" 10.254.10.98 adipisc aparia "maliq" ccusant epteurs 6661 "https://www5.example.org/oditau/onsec.gif?temqui=lup#aeca" "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36" accept -10.5.148.114 4749 [17/Feb/2019:3:30:32 ntin] "LOCK https://mail.example.com/radipis/lore.html?civeli=eufugia#utlabore tamr" 10.175.138.42 olore onemul "trudexe" remeum etur 890 "https://mail.example.org/quiav/ctionofd.gif?Finibus=uisautei#nevolu" "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" deny -10.0.0.240 1795 [03/Mar/2019:10:33:06 psa] "PROPFIND https://internal.example.org/olupta/tio.jpg?idestl=litani#emp arch" 10.18.199.203 ugits ittenb "tobeatae" ntut llum 366 "https://example.com/equat/estiaec.htm?mquido=ende#ntmollit" "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" allow -10.1.220.47 6685 [17/Mar/2019:5:35:40 mipsamv] "NONE https://www5.example.com/sequines/cto.gif?temaccu=uamqua#Neq runt" 10.73.80.251 pteurs ercitati "atem" serro lumquid 5939 "https://www5.example.org/imaveni/equ.htm?ssequamn=ave#taliqui" "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]" allow -10.153.109.61 7499 [01/Apr/2019:12:38:14 numq] "PURGE https://www.example.net/periam/ain.gif?iquipex=mqu#onorume abill" 10.22.34.206 mini mve "tionev" uasiarch velites 1745 "https://api.example.org/equa/edquiaco.gif?olorsit=naaliq#plica" "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" block -10.62.168.226 5334 [15/Apr/2019:7:40:49 bori] "CONNECT https://www.example.net/ecatc/quovolu.jpg?dexe=nemul#Duis lupt" 10.199.103.185 uipe ipsa "con" eirured sequamn 5243 "https://mail.example.com/ciatisun/duntutl.htm?didun=riaturEx#nde" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]" allow -10.97.33.56 3541 [29/Apr/2019:2:43:23 rad] "COPY https://example.com/tqui/ssequ.gif?emse=emqui#cipitla tlab" 10.128.84.27 nula ptate "volupta" umfu utla 2478 "https://www5.example.com/dolo/velites.gif?equa=apari#tsunt" "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36" block -10.49.169.175 2103 [13/May/2019:9:45:57 sistena] "HEAD https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost sequines" 10.115.154.104 illum ore "spici" Sedut tatis 7767 "https://www5.example.com/sequines/minimve.gif?toditau=uiad#nvolupta" "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36" allow -10.213.100.153 2571 [28/May/2019:4:48:31 iatquo] "PROPFIND https://www.example.org/oinvento/ali.htm?utaliqui=isciv#osqu ptatemse" 10.33.112.100 catcup enimad "magnaali" velillum ionev 1594 "https://internal.example.com/ameaq/Quis.html?lestiae=iav#umiure" "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30" block -10.216.143.226 2632 [11/Jun/2019:11:51:06 deomn] "CONNECT https://api.example.net/quido/llo.htm?tpersp=assi#rch psa" 10.25.53.93 tvolup oremeu "lab" lla urau 6127 "https://example.net/equamni/atcupi.htm?onemull=mdo#labore" "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30" cancel -10.139.195.188 893 [25/Jun/2019:6:53:40 aliquaU] "HEAD https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti edictasu" 10.246.115.57 edquiano mSecti "henderi" taevitae tevel 5926 "https://example.com/ita/iquipexe.jpg?quamqua=quuntur#nihi" "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" allow -10.60.56.205 4345 [10/Jul/2019:1:56:14 writtenb] "NONE https://www5.example.com/ugitsed/dminimve.htm?onse=uiac#tquii tesse" 10.82.148.126 inBCSedu ita "ade" nihilmol nder 2214 "https://api.example.net/uunturm/iatn.gif?tseddo=diduntut#rroq" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]" block -10.245.251.98 261 [24/Jul/2019:8:58:48 mremaper] "DELETE https://api.example.com/ntium/ide.htm?tamrema=isautem#usan gnamali" 10.6.11.124 edqui tvolu "psu" strud onsequ 5930 "https://www5.example.net/iumto/sequatu.jpg?runtm=mdoloree#que" "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36" accept -10.99.55.115 1537 [07/Aug/2019:4:01:23 exerci] "CONNECT https://www5.example.org/iad/ngelits.jpg?mporin=orissusc#utaliqui uov" 10.145.25.55 litsed lumd "tiaec" lorem iamquisn 2079 "https://mail.example.org/aper/entor.txt?lumdol=edutper#utemve" "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" block -10.187.86.64 3325 [21/Aug/2019:11:03:57 atatn] "TRACE https://mail.example.com/iatnulap/roi.htm?uine=loreeu#eprehe ddoeiusm" 10.6.88.105 uptatemU rem "onorumet" iscivel rinci 249 "https://internal.example.com/eriti/uptateve.htm?rema=mcol#tion" "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36" allow -10.252.146.132 503 [05/Sep/2019:6:06:31 tat] "CONNECT https://mail.example.org/turv/use.jpg?mtot=macc#illoin eursi" 10.163.9.35 uatDu umq "ipsu" oremip ota 4562 "https://example.com/epteurs/itse.jpg?modi=cip#tla" "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36" accept -10.249.101.177 4465 [19/Sep/2019:1:09:05 quam] "DELETE https://mail.example.com/umdol/rerepr.txt?emipsumq=orinr#ineavol umdo" 10.235.160.245 squamest upta "umquiad" porinc uameiu 4857 "https://api.example.org/mipsa/uas.gif?reeufu=umexe#xce" "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36" deny -10.140.170.171 773 [03/Oct/2019:8:11:40 deom] "TRACE https://internal.example.com/rautod/onorumet.htm?mvo=agnidol#nevolup erspici" 10.73.218.58 quidol tinv "Utenima" nse umq 1831 "https://mail.example.org/meaquei/snisiu.htm?atev=vento#litsed" "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36" block -10.248.156.138 2125 [18/Oct/2019:3:14:14 smodit] "OPTIONS https://example.net/dun/xce.jpg?nsequat=mvol#asiar eiu" 10.67.148.40 tcons squamest "ction" emveleum siuta 2155 "https://example.com/epteur/onproi.txt?imveniam=sunte#exerc" "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16" deny -10.83.154.75 4260 [01/Nov/2019:10:16:48 explicab] "UNLOCK https://api.example.com/teiru/mquamei.jpg?pta=uradi#sequu orumetMa" 10.37.33.179 taed eatae "siutali" oloremq sum 6106 "https://www.example.org/ulamc/doe.txt?remquela=toreve#squirat" "Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30" accept -10.14.29.202 7842 [15/Nov/2019:5:19:22 modoco] "MKOL https://www5.example.net/dtempor/rroquisq.gif?liquid=uidex#umdolo nimv" 10.84.107.38 tutla usmod "ine" qui itse 2097 "https://www5.example.org/tasn/exeaco.html?metc=aincidu#reprehe" "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10" deny -10.221.86.133 6682 [30/Nov/2019:12:21:57 edi] "POST https://api.example.com/ore/adeser.htm?pre=aute#rchite rcit" 10.204.223.184 oinve ptasnul "utaliqui" mcorpor rerepr 6861 "https://example.com/tuserror/agnama.jpg?deritq=boreetdo#teni" "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]" deny -10.195.4.70 3844 [14/Dec/2019:7:24:31 mfugiat] "PUT https://api.example.com/liqu/dolor.htm?ess=umdo#aer quela" 10.229.39.190 Nequepo edictas "emac" rmagnido exeaco 2574 "https://api.example.org/loremi/nven.htm?usan=ugiatn#squa" "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91" deny diff --git a/x-pack/filebeat/module/squid/log/test/generated.log-expected.json b/x-pack/filebeat/module/squid/log/test/generated.log-expected.json deleted file mode 100644 index df54bd891fd..00000000000 --- a/x-pack/filebeat/module/squid/log/test/generated.log-expected.json +++ /dev/null @@ -1,7403 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T08:09:59.000Z", - "destination.ip": "10.234.224.44", - "event.action": "deny", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.251.224.219 7337 [29/Jan/2016:6:09:59 nto] \"PROPFIND https://example.org/exercita/der.htm?odoco=ria#min ite\" 10.234.224.44 etdo tation \"quasiarc\" liqua ciade 5699 \"https://example.net/umq/ntium.gif?nes=eab#aliqu\" \"Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]\" deny", - "file.name": "quasiarc", - "fileset.name": "log", - "http.request.referrer": "https://example.net/umq/ntium.gif?nes=eab#aliqu", - "input.type": "log", - "log.offset": 0, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.net", - "example.org" - ], - "related.ip": [ - "10.234.224.44", - "10.251.224.219" - ], - "related.user": [ - "tation" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "deny" - ], - "rsa.misc.content_type": "ciade", - "rsa.misc.result_code": "liqua", - "rsa.network.domain": "example.org", - "rsa.network.network_service": "ite", - "rsa.time.event_time": "2016-01-29T08:09:59.000Z", - "rsa.web.alias_host": "example.org", - "rsa.web.web_ref_domain": "example.net", - "rsa.web.web_ref_query": "nes=eab", - "server.domain": "example.org", - "server.registered_domain": "example.org", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 5699, - "source.ip": "10.251.224.219", - "source.port": 7337, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "min", - "url.original": "https://example.org/exercita/der.htm?odoco=ria#min", - "url.path": [ - "/exercita/der.htm", - "https://example.net" - ], - "url.query": "odoco=ria", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.top_level_domain": "org", - "user.name": "tation", - "user_agent.device.name": "Samsung SM-A715F", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2016-02-12T03:12:33.000Z", - "destination.ip": "10.70.36.222", - "event.action": "deny", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.102.123.34 7178 [12/Feb/2016:1:12:33 nostrud] \"PURGE https://www.example.org/enderitq/sperna.txt?billoi=oreetdol#nidolor tatemU\" 10.70.36.222 estlabo doeiu \"nia\" olupt volup 208 \"https://example.com/eosquir/orsi.txt?itessequ=vol#luptat\" \"Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10\" deny", - "file.name": "nia", - "fileset.name": "log", - "http.request.referrer": "https://example.com/eosquir/orsi.txt?itessequ=vol#luptat", - "input.type": "log", - "log.offset": 426, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "www.example.org" - ], - "related.ip": [ - "10.102.123.34", - "10.70.36.222" - ], - "related.user": [ - "doeiu" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "deny" - ], - "rsa.misc.content_type": "volup", - "rsa.misc.result_code": "olupt", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "tatemU", - "rsa.time.event_time": "2016-02-12T03:12:33.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "itessequ=vol", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 208, - "source.ip": "10.102.123.34", - "source.port": 7178, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "txt", - "url.fragment": "nidolor", - "url.original": "https://www.example.org/enderitq/sperna.txt?billoi=oreetdol#nidolor", - "url.path": [ - "/enderitq/sperna.txt", - "https://example.com" - ], - "url.query": "billoi=oreetdol", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "doeiu", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2016-02-26T10:15:08.000Z", - "destination.ip": "10.142.172.64", - "event.action": "accept", - "event.code": "OPTIONS", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.15.135.248 7269 [26/Feb/2016:8:15:08 mquia] \"OPTIONS https://internal.example.com/aqu/utper.jpg?eFinib=omm#iin proident\" 10.142.172.64 lupt tia \"oloremqu\" temvel iatu 5493 \"https://example.net/dolo/meumfug.gif?roinBCS=ufugiatn#tionulam\" \"Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36\" accept", - "file.name": "oloremqu", - "fileset.name": "log", - "http.request.referrer": "https://example.net/dolo/meumfug.gif?roinBCS=ufugiatn#tionulam", - "input.type": "log", - "log.offset": 877, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.net", - "internal.example.com" - ], - "related.ip": [ - "10.142.172.64", - "10.15.135.248" - ], - "related.user": [ - "tia" - ], - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "OPTIONS", - "accept" - ], - "rsa.misc.content_type": "iatu", - "rsa.misc.result_code": "temvel", - "rsa.network.domain": "internal.example.com", - "rsa.network.network_service": "proident", - "rsa.time.event_time": "2016-02-26T10:15:08.000Z", - "rsa.web.alias_host": "internal.example.com", - "rsa.web.web_ref_domain": "example.net", - "rsa.web.web_ref_query": "roinBCS=ufugiatn", - "server.domain": "internal.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "internal", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 5493, - "source.ip": "10.15.135.248", - "source.port": 7269, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.com", - "url.extension": "jpg", - "url.fragment": "iin", - "url.original": "https://internal.example.com/aqu/utper.jpg?eFinib=omm#iin", - "url.path": [ - "/aqu/utper.jpg", - "https://example.net" - ], - "url.query": "eFinib=omm", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "tia", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-03-12T05:17:42.000Z", - "destination.ip": "10.81.122.126", - "event.action": "allow", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.44.134.153 5162 [12/Mar/2016:3:17:42 nci] \"GET https://api.example.org/ceroinBC/ratvolup.gif?iatu=ionofde#con uia\" quiavo 1156 \"https://mail.example.com/consec/taliquip.html?radip=tNequ#gelit\" \"Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61\" allow 10.81.122.126 taev 160.145000", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/consec/taliquip.html?radip=tNequ#gelit", - "input.type": "log", - "log.offset": 1300, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "mail.example.com" - ], - "related.ip": [ - "10.44.134.153", - "10.81.122.126" - ], - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "allow" - ], - "rsa.misc.content_type": "taev", - "rsa.misc.result_code": "quiavo", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "uia", - "rsa.time.duration_time": 160.145, - "rsa.time.event_time": "2016-03-12T05:17:42.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "radip=tNequ", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1156, - "source.ip": "10.44.134.153", - "source.port": 5162, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "gif", - "url.fragment": "con", - "url.original": "https://api.example.org/ceroinBC/ratvolup.gif?iatu=ionofde#con", - "url.path": [ - "/ceroinBC/ratvolup.gif", - "https://mail.example.com" - ], - "url.query": "iatu=ionofde", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2016-03-26T12:20:16.000Z", - "destination.ip": "10.171.175.51", - "event.action": "cancel", - "event.code": "PUT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.160.95.56 1980 [26/Mar/2016:10:20:16 aqui] \"PUT https://api.example.org/isetq/estqui.gif?magn=equuntu#eos enimad\" 10.171.175.51 boreet onev \"tenima\" laboreet aquaeabi 5738 \"https://api.example.net/veleumi/tia.gif?ude=maveniam#uian\" \"Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" cancel", - "file.name": "tenima", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/veleumi/tia.gif?ude=maveniam#uian", - "input.type": "log", - "log.offset": 1719, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "api.example.org" - ], - "related.ip": [ - "10.160.95.56", - "10.171.175.51" - ], - "related.user": [ - "onev" - ], - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "PUT", - "cancel" - ], - "rsa.misc.content_type": "aquaeabi", - "rsa.misc.result_code": "laboreet", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "enimad", - "rsa.time.event_time": "2016-03-26T12:20:16.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "api.example.net", - "rsa.web.web_ref_query": "ude=maveniam", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 5738, - "source.ip": "10.160.95.56", - "source.port": 1980, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "gif", - "url.fragment": "eos", - "url.original": "https://api.example.org/isetq/estqui.gif?magn=equuntu#eos", - "url.path": [ - "/isetq/estqui.gif", - "https://api.example.net" - ], - "url.query": "magn=equuntu", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "onev", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-04-09T07:22:51.000Z", - "destination.ip": "10.12.195.60", - "event.action": "accept", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.175.107.139 4243 [09/Apr/2016:5:22:51 antium] \"HEAD https://www.example.org/inesci/rsitvolu.txt?pori=occ#ect reetdolo\" 10.12.195.60 uiano mrema \"autfu\" natura aboris 2946 \"https://api.example.com/ssitaspe/gitsedqu.jpg?iutal=dexe#urerep\" \"Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" accept", - "file.name": "autfu", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/ssitaspe/gitsedqu.jpg?iutal=dexe#urerep", - "input.type": "log", - "log.offset": 2088, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "www.example.org" - ], - "related.ip": [ - "10.12.195.60", - "10.175.107.139" - ], - "related.user": [ - "mrema" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "accept" - ], - "rsa.misc.content_type": "aboris", - "rsa.misc.result_code": "natura", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "reetdolo", - "rsa.time.event_time": "2016-04-09T07:22:51.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "api.example.com", - "rsa.web.web_ref_query": "iutal=dexe", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 2946, - "source.ip": "10.175.107.139", - "source.port": 4243, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "txt", - "url.fragment": "ect", - "url.original": "https://www.example.org/inesci/rsitvolu.txt?pori=occ#ect", - "url.path": [ - "/inesci/rsitvolu.txt", - "https://api.example.com" - ], - "url.query": "pori=occ", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "mrema", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-04-24T14:25:25.000Z", - "destination.ip": "10.207.249.121", - "event.action": "allow", - "event.code": "DELETE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.198.136.50 6875 [24/Apr/2016:12:25:25 llam] \"DELETE https://www5.example.com/ari/eataevit.txt?iam=mqua#atat quunt\" 10.207.249.121 iciade tsed \"orai\" mUt usmodte 1296 \"https://www.example.org/ametcons/porainc.jpg?temsequ=emquiavo#nonnu\" \"Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30\" allow", - "file.name": "orai", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/ametcons/porainc.jpg?temsequ=emquiavo#nonnu", - "input.type": "log", - "log.offset": 2532, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.example.org", - "www5.example.com" - ], - "related.ip": [ - "10.198.136.50", - "10.207.249.121" - ], - "related.user": [ - "tsed" - ], - "rsa.internal.messageid": "DELETE", - "rsa.misc.action": [ - "DELETE", - "allow" - ], - "rsa.misc.content_type": "usmodte", - "rsa.misc.result_code": "mUt", - "rsa.network.domain": "www5.example.com", - "rsa.network.network_service": "quunt", - "rsa.time.event_time": "2016-04-24T14:25:25.000Z", - "rsa.web.alias_host": "www5.example.com", - "rsa.web.web_ref_domain": "www.example.org", - "rsa.web.web_ref_query": "temsequ=emquiavo", - "server.domain": "www5.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "www5", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1296, - "source.ip": "10.198.136.50", - "source.port": 6875, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.com", - "url.extension": "txt", - "url.fragment": "atat", - "url.original": "https://www5.example.com/ari/eataevit.txt?iam=mqua#atat", - "url.path": [ - "/ari/eataevit.txt", - "https://www.example.org" - ], - "url.query": "iam=mqua", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "tsed", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2016-05-08T09:27:59.000Z", - "destination.ip": "10.116.120.216", - "event.action": "accept", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.34.9.93 124 [08/May/2016:7:27:59 onse] \"PROPFIND https://example.org/tatno/imav.htm?ofdeF=tion#orsitame quiratio\" 10.116.120.216 qua umdo \"sed\" apariat mol 1510 \"https://internal.example.net/turveli/toccae.htm?erc=taliqu#temUten\" \"Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36\" accept", - "file.name": "sed", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/turveli/toccae.htm?erc=taliqu#temUten", - "input.type": "log", - "log.offset": 2912, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.org", - "internal.example.net" - ], - "related.ip": [ - "10.116.120.216", - "10.34.9.93" - ], - "related.user": [ - "umdo" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "accept" - ], - "rsa.misc.content_type": "mol", - "rsa.misc.result_code": "apariat", - "rsa.network.domain": "example.org", - "rsa.network.network_service": "quiratio", - "rsa.time.event_time": "2016-05-08T09:27:59.000Z", - "rsa.web.alias_host": "example.org", - "rsa.web.web_ref_domain": "internal.example.net", - "rsa.web.web_ref_query": "erc=taliqu", - "server.domain": "example.org", - "server.registered_domain": "example.org", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1510, - "source.ip": "10.34.9.93", - "source.port": 124, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "orsitame", - "url.original": "https://example.org/tatno/imav.htm?ofdeF=tion#orsitame", - "url.path": [ - "/tatno/imav.htm", - "https://internal.example.net" - ], - "url.query": "ofdeF=tion", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.top_level_domain": "org", - "user.name": "umdo", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-05-22T04:30:33.000Z", - "destination.ip": "10.30.216.41", - "event.action": "accept", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.90.131.186 6343 [22/May/2016:2:30:33 nimadmin] \"HEAD https://example.org/uaera/sitas.txt?aedic=atquovo#iumto aboreetd\" 10.30.216.41 enim saute \"vel\" quu undeo 5794 \"https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq\" \"Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" accept", - "file.name": "vel", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq", - "input.type": "log", - "log.offset": 3271, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.org", - "mail.example.net" - ], - "related.ip": [ - "10.30.216.41", - "10.90.131.186" - ], - "related.user": [ - "saute" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "accept" - ], - "rsa.misc.content_type": "undeo", - "rsa.misc.result_code": "quu", - "rsa.network.domain": "example.org", - "rsa.network.network_service": "aboreetd", - "rsa.time.event_time": "2016-05-22T04:30:33.000Z", - "rsa.web.alias_host": "example.org", - "rsa.web.web_ref_domain": "mail.example.net", - "rsa.web.web_ref_query": "idolore=onse", - "server.domain": "example.org", - "server.registered_domain": "example.org", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 5794, - "source.ip": "10.90.131.186", - "source.port": 6343, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.org", - "url.extension": "txt", - "url.fragment": "iumto", - "url.original": "https://example.org/uaera/sitas.txt?aedic=atquovo#iumto", - "url.path": [ - "/uaera/sitas.txt", - "https://mail.example.net" - ], - "url.query": "aedic=atquovo", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.top_level_domain": "org", - "user.name": "saute", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-06-05T11:33:08.000Z", - "destination.ip": "10.203.172.203", - "event.action": "accept", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.8.88.110 7618 [05/Jun/2016:9:33:08 ionul] \"CONNECT https://mail.example.org/edquiano/loru.htm?end=enia#nsequu cup\" 10.203.172.203 idestla Nemoeni \"uradi\" aborumSe luptat 6884 \"https://www5.example.org/strude/ctetura.htm?ittenbyC=aperi#lor\" \"Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" accept", - "file.name": "uradi", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/strude/ctetura.htm?ittenbyC=aperi#lor", - "input.type": "log", - "log.offset": 3691, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.org", - "www5.example.org" - ], - "related.ip": [ - "10.203.172.203", - "10.8.88.110" - ], - "related.user": [ - "Nemoeni" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "accept" - ], - "rsa.misc.content_type": "luptat", - "rsa.misc.result_code": "aborumSe", - "rsa.network.domain": "mail.example.org", - "rsa.network.network_service": "cup", - "rsa.time.event_time": "2016-06-05T11:33:08.000Z", - "rsa.web.alias_host": "mail.example.org", - "rsa.web.web_ref_domain": "www5.example.org", - "rsa.web.web_ref_query": "ittenbyC=aperi", - "server.domain": "mail.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "mail", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 6884, - "source.ip": "10.8.88.110", - "source.port": 7618, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.org", - "url.extension": "htm", - "url.fragment": "nsequu", - "url.original": "https://mail.example.org/edquiano/loru.htm?end=enia#nsequu", - "url.path": [ - "/edquiano/loru.htm", - "https://www5.example.org" - ], - "url.query": "end=enia", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "Nemoeni", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-06-20T06:35:42.000Z", - "destination.ip": "10.158.185.163", - "event.action": "allow", - "event.code": "UNLOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.71.34.9 267 [20/Jun/2016:4:35:42 dolore] \"UNLOCK https://www.example.org/iqui/etc.txt?tatiset=eprehen#xercitat lpa\" 10.158.185.163 rudexerc aliq \"rsitam\" quam adm 987 \"https://www.example.org/ritatis/oloremi.txt?icab=mwr#fugi\" \"Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g\" allow", - "file.name": "rsitam", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/ritatis/oloremi.txt?icab=mwr#fugi", - "input.type": "log", - "log.offset": 4068, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.example.org" - ], - "related.ip": [ - "10.158.185.163", - "10.71.34.9" - ], - "related.user": [ - "aliq" - ], - "rsa.internal.messageid": "UNLOCK", - "rsa.misc.action": [ - "UNLOCK", - "allow" - ], - "rsa.misc.content_type": "adm", - "rsa.misc.result_code": "quam", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "lpa", - "rsa.time.event_time": "2016-06-20T06:35:42.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "www.example.org", - "rsa.web.web_ref_query": "icab=mwr", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 987, - "source.ip": "10.71.34.9", - "source.port": 267, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "txt", - "url.fragment": "xercitat", - "url.original": "https://www.example.org/iqui/etc.txt?tatiset=eprehen#xercitat", - "url.path": [ - "/iqui/etc.txt", - "https://www.example.org" - ], - "url.query": "tatiset=eprehen", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "aliq", - "user_agent.device.name": "XiaoMi Redmi 4X", - "user_agent.name": "MiuiBrowser", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g", - "user_agent.os.full": "Android 7.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.1.2", - "user_agent.version": "12.2.3" - }, - { - "@timestamp": "2016-07-04T13:38:16.000Z", - "destination.ip": "10.201.76.240", - "event.action": "accept", - "event.code": "OPTIONS", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.210.74.24 6423 [04/Jul/2016:11:38:16 untut] \"OPTIONS https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu stiae\" 10.201.76.240 amqu uines \"nsec\" onse emips 2655 \"https://example.net/tion/eataev.htm?uiineavo=tisetq#irati\" \"Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10\" accept", - "file.name": "nsec", - "fileset.name": "log", - "http.request.referrer": "https://example.net/tion/eataev.htm?uiineavo=tisetq#irati", - "input.type": "log", - "log.offset": 4495, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.net", - "internal.example.net" - ], - "related.ip": [ - "10.201.76.240", - "10.210.74.24" - ], - "related.user": [ - "uines" - ], - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "OPTIONS", - "accept" - ], - "rsa.misc.content_type": "emips", - "rsa.misc.result_code": "onse", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "stiae", - "rsa.time.event_time": "2016-07-04T13:38:16.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "example.net", - "rsa.web.web_ref_query": "uiineavo=tisetq", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2655, - "source.ip": "10.210.74.24", - "source.port": 6423, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "txt", - "url.fragment": "ugiatnu", - "url.original": "https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu", - "url.path": [ - "/ommod/sequatur.txt", - "https://example.net" - ], - "url.query": "tlabo=suntexp", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "uines", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2016-07-18T08:40:50.000Z", - "destination.ip": "10.206.136.206", - "event.action": "deny", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.114.138.121 1939 [18/Jul/2016:6:40:50 tati] \"COPY https://api.example.org/oriosamn/deFinibu.gif?iciatisu=rehender#eporroqu uat\" 10.206.136.206 suntinc xeac \"nidolo\" tatn eli 6462 \"https://www.example.net/pida/nse.html?emeumfu=CSed#lupt\" \"Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" deny", - "file.name": "nidolo", - "fileset.name": "log", - "http.request.referrer": "https://www.example.net/pida/nse.html?emeumfu=CSed#lupt", - "input.type": "log", - "log.offset": 4894, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "www.example.net" - ], - "related.ip": [ - "10.114.138.121", - "10.206.136.206" - ], - "related.user": [ - "xeac" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "deny" - ], - "rsa.misc.content_type": "eli", - "rsa.misc.result_code": "tatn", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "uat", - "rsa.time.event_time": "2016-07-18T08:40:50.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "www.example.net", - "rsa.web.web_ref_query": "emeumfu=CSed", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 6462, - "source.ip": "10.114.138.121", - "source.port": 1939, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "gif", - "url.fragment": "eporroqu", - "url.original": "https://api.example.org/oriosamn/deFinibu.gif?iciatisu=rehender#eporroqu", - "url.path": [ - "/oriosamn/deFinibu.gif", - "https://www.example.net" - ], - "url.query": "iciatisu=rehender", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "xeac", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-08-02T03:43:25.000Z", - "destination.ip": "10.134.161.118", - "event.action": "block", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.200.199.166 3727 [02/Aug/2016:1:43:25 amvolup] \"COPY https://mail.example.org/rehend/tio.html?numqu=qui#civeli lum\" 10.134.161.118 tat ipitla \"quae\" maccusa uptat 3458 \"https://www.example.com/xerci/aqu.htm?olorema=iades#siarchi\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36\" block", - "file.name": "quae", - "fileset.name": "log", - "http.request.referrer": "https://www.example.com/xerci/aqu.htm?olorema=iades#siarchi", - "input.type": "log", - "log.offset": 5263, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.org", - "www.example.com" - ], - "related.ip": [ - "10.134.161.118", - "10.200.199.166" - ], - "related.user": [ - "ipitla" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "block" - ], - "rsa.misc.content_type": "uptat", - "rsa.misc.result_code": "maccusa", - "rsa.network.domain": "mail.example.org", - "rsa.network.network_service": "lum", - "rsa.time.event_time": "2016-08-02T03:43:25.000Z", - "rsa.web.alias_host": "mail.example.org", - "rsa.web.web_ref_domain": "www.example.com", - "rsa.web.web_ref_query": "olorema=iades", - "server.domain": "mail.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "mail", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 3458, - "source.ip": "10.200.199.166", - "source.port": 3727, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.org", - "url.extension": "html", - "url.fragment": "civeli", - "url.original": "https://mail.example.org/rehend/tio.html?numqu=qui#civeli", - "url.path": [ - "/rehend/tio.html", - "https://www.example.com" - ], - "url.query": "numqu=qui", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "ipitla", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2016-08-16T10:45:59.000Z", - "destination.ip": "10.76.3.41", - "event.action": "allow", - "event.code": "NONE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.122.46.71 2807 [16/Aug/2016:8:45:59 ihilm] \"NONE https://www.example.org/eav/ionevo.txt?siar=orev#iamquis quirat\" 10.76.3.41 isc aturve \"emulla\" mpori aaliquaU 2989 \"https://www5.example.com/ern/psaquae.html?nsectet=utla#utei\" \"Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" allow", - "file.name": "emulla", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/ern/psaquae.html?nsectet=utla#utei", - "input.type": "log", - "log.offset": 5659, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www.example.org", - "www5.example.com" - ], - "related.ip": [ - "10.122.46.71", - "10.76.3.41" - ], - "related.user": [ - "aturve" - ], - "rsa.internal.messageid": "NONE", - "rsa.misc.action": [ - "NONE", - "allow" - ], - "rsa.misc.content_type": "aaliquaU", - "rsa.misc.result_code": "mpori", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "quirat", - "rsa.time.event_time": "2016-08-16T10:45:59.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "nsectet=utla", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 2989, - "source.ip": "10.122.46.71", - "source.port": 2807, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "txt", - "url.fragment": "iamquis", - "url.original": "https://www.example.org/eav/ionevo.txt?siar=orev#iamquis", - "url.path": [ - "/eav/ionevo.txt", - "https://www5.example.com" - ], - "url.query": "siar=orev", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "aturve", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-08-30T05:48:33.000Z", - "destination.ip": "10.249.213.83", - "event.action": "accept", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.164.250.63 2530 [30/Aug/2016:3:48:33 eritqu] \"PROPFIND https://internal.example.net/wri/bor.jpg?hitect=dol#leumiu namali\" 10.249.213.83 nsecte itame \"eumfug\" lit asun 1250 \"https://api.example.com/oluptate/onseq.html?labore=texp#tMalor\" \"Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30\" accept", - "file.name": "eumfug", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/oluptate/onseq.html?labore=texp#tMalor", - "input.type": "log", - "log.offset": 6019, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "internal.example.net" - ], - "related.ip": [ - "10.164.250.63", - "10.249.213.83" - ], - "related.user": [ - "itame" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "accept" - ], - "rsa.misc.content_type": "asun", - "rsa.misc.result_code": "lit", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "namali", - "rsa.time.event_time": "2016-08-30T05:48:33.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "api.example.com", - "rsa.web.web_ref_query": "labore=texp", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1250, - "source.ip": "10.164.250.63", - "source.port": 2530, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "leumiu", - "url.original": "https://internal.example.net/wri/bor.jpg?hitect=dol#leumiu", - "url.path": [ - "/wri/bor.jpg", - "https://api.example.com" - ], - "url.query": "hitect=dol", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "itame", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2016-09-13T12:51:07.000Z", - "destination.ip": "10.236.248.65", - "event.action": "cancel", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.61.242.75 2591 [13/Sep/2016:10:51:07 dantiumt] \"HEAD https://api.example.net/equat/doloreme.htm?ione=ihilmole#eriamea amre\" 10.236.248.65 pisciv iquidex \"radipisc\" tmo fficiade 3280 \"https://www5.example.net/uioffi/oru.jpg?one=etMalor#ipi\" \"Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" cancel", - "file.name": "radipisc", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/uioffi/oru.jpg?one=etMalor#ipi", - "input.type": "log", - "log.offset": 6454, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "www5.example.net" - ], - "related.ip": [ - "10.236.248.65", - "10.61.242.75" - ], - "related.user": [ - "iquidex" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "cancel" - ], - "rsa.misc.content_type": "fficiade", - "rsa.misc.result_code": "tmo", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "amre", - "rsa.time.event_time": "2016-09-13T12:51:07.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "www5.example.net", - "rsa.web.web_ref_query": "one=etMalor", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 3280, - "source.ip": "10.61.242.75", - "source.port": 2591, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "htm", - "url.fragment": "eriamea", - "url.original": "https://api.example.net/equat/doloreme.htm?ione=ihilmole#eriamea", - "url.path": [ - "/equat/doloreme.htm", - "https://www5.example.net" - ], - "url.query": "ione=ihilmole", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "iquidex", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-09-28T07:53:42.000Z", - "destination.ip": "10.214.7.83", - "event.action": "block", - "event.code": "PUT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.13.59.31 5685 [28/Sep/2016:5:53:42 sperna] \"PUT https://www5.example.com/estia/tper.gif?volupt=osqui#xerc iutali\" 10.214.7.83 liquide etdol \"uela\" boN eprehend 2462 \"https://internal.example.net/lamcolab/ati.jpg?gel=lorsitam#mpo\" \"Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" block", - "file.name": "uela", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/lamcolab/ati.jpg?gel=lorsitam#mpo", - "input.type": "log", - "log.offset": 6824, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.net", - "www5.example.com" - ], - "related.ip": [ - "10.13.59.31", - "10.214.7.83" - ], - "related.user": [ - "etdol" - ], - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "PUT", - "block" - ], - "rsa.misc.content_type": "eprehend", - "rsa.misc.result_code": "boN", - "rsa.network.domain": "www5.example.com", - "rsa.network.network_service": "iutali", - "rsa.time.event_time": "2016-09-28T07:53:42.000Z", - "rsa.web.alias_host": "www5.example.com", - "rsa.web.web_ref_domain": "internal.example.net", - "rsa.web.web_ref_query": "gel=lorsitam", - "server.domain": "www5.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "www5", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 2462, - "source.ip": "10.13.59.31", - "source.port": 5685, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.com", - "url.extension": "gif", - "url.fragment": "xerc", - "url.original": "https://www5.example.com/estia/tper.gif?volupt=osqui#xerc", - "url.path": [ - "/estia/tper.gif", - "https://internal.example.net" - ], - "url.query": "volupt=osqui", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "etdol", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-10-12T14:56:16.000Z", - "destination.ip": "10.49.92.179", - "event.action": "accept", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.89.201.140 2447 [12/Oct/2016:12:56:16 uamei] \"GET https://internal.example.net/sin/rvel.htm?nimid=itatione#isnis uptasn\" 10.49.92.179 osamn isnisiu \"bore\" tsu tcons 3128 \"https://api.example.org/lorinre/olorsita.gif?idata=rumwritt#magnid\" \"Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36\" accept", - "file.name": "bore", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/lorinre/olorsita.gif?idata=rumwritt#magnid", - "input.type": "log", - "log.offset": 7186, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "internal.example.net" - ], - "related.ip": [ - "10.49.92.179", - "10.89.201.140" - ], - "related.user": [ - "isnisiu" - ], - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "accept" - ], - "rsa.misc.content_type": "tcons", - "rsa.misc.result_code": "tsu", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "uptasn", - "rsa.time.event_time": "2016-10-12T14:56:16.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "api.example.org", - "rsa.web.web_ref_query": "idata=rumwritt", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 3128, - "source.ip": "10.89.201.140", - "source.port": 2447, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "htm", - "url.fragment": "isnis", - "url.original": "https://internal.example.net/sin/rvel.htm?nimid=itatione#isnis", - "url.path": [ - "/sin/rvel.htm", - "https://api.example.org" - ], - "url.query": "nimid=itatione", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "isnisiu", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-10-26T09:58:50.000Z", - "destination.ip": "10.90.86.89", - "event.action": "deny", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.235.7.92 5787 [26/Oct/2016:7:58:50 nsecte] \"PURGE https://api.example.org/abo/veniamqu.gif?aliquide=ofde#equat derit\" 10.90.86.89 piscin lapar \"laboree\" tfu udan 5516 \"https://mail.example.net/xeacomm/mveleu.htm?utlabor=rau#idex\" \"Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36\" deny", - "file.name": "laboree", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.net/xeacomm/mveleu.htm?utlabor=rau#idex", - "input.type": "log", - "log.offset": 7611, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "mail.example.net" - ], - "related.ip": [ - "10.235.7.92", - "10.90.86.89" - ], - "related.user": [ - "lapar" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "deny" - ], - "rsa.misc.content_type": "udan", - "rsa.misc.result_code": "tfu", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "derit", - "rsa.time.event_time": "2016-10-26T09:58:50.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "mail.example.net", - "rsa.web.web_ref_query": "utlabor=rau", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 5516, - "source.ip": "10.235.7.92", - "source.port": 5787, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "gif", - "url.fragment": "equat", - "url.original": "https://api.example.org/abo/veniamqu.gif?aliquide=ofde#equat", - "url.path": [ - "/abo/veniamqu.gif", - "https://mail.example.net" - ], - "url.query": "aliquide=ofde", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "lapar", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2016-11-10T05:01:24.000Z", - "destination.ip": "10.14.48.16", - "event.action": "cancel", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.14.211.43 4762 [10/Nov/2016:3:01:24 eiu] \"PROPFIND https://api.example.org/autfu/gnaaliq.jpg?olupta=litse#icabo itatio\" 10.14.48.16 sintoc volupt \"siste\" uiinea Utenima 1612 \"https://www5.example.net/ptatem/Nequepor.html?ugiatnu=ciati#nto\" \"Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30\" cancel", - "file.name": "siste", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/ptatem/Nequepor.html?ugiatnu=ciati#nto", - "input.type": "log", - "log.offset": 7985, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "www5.example.net" - ], - "related.ip": [ - "10.14.211.43", - "10.14.48.16" - ], - "related.user": [ - "volupt" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "cancel" - ], - "rsa.misc.content_type": "Utenima", - "rsa.misc.result_code": "uiinea", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "itatio", - "rsa.time.event_time": "2016-11-10T05:01:24.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "www5.example.net", - "rsa.web.web_ref_query": "ugiatnu=ciati", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1612, - "source.ip": "10.14.211.43", - "source.port": 4762, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "jpg", - "url.fragment": "icabo", - "url.original": "https://api.example.org/autfu/gnaaliq.jpg?olupta=litse#icabo", - "url.path": [ - "/autfu/gnaaliq.jpg", - "https://www5.example.net" - ], - "url.query": "olupta=litse", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "volupt", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2016-11-24T12:03:59.000Z", - "destination.ip": "10.93.123.174", - "event.action": "block", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.47.25.230 5491 [24/Nov/2016:10:03:59 ese] \"CONNECT https://internal.example.net/ptatemq/luptatev.html?Nequepo=ipsumd#ntocc uteirure\" 10.93.123.174 evelit reetdolo \"smo\" etcons iusmodi 1563 \"https://example.com/uiac/epte.gif?itam=aper#santiumd\" \"Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10\" block", - "file.name": "smo", - "fileset.name": "log", - "http.request.referrer": "https://example.com/uiac/epte.gif?itam=aper#santiumd", - "input.type": "log", - "log.offset": 8370, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "internal.example.net" - ], - "related.ip": [ - "10.47.25.230", - "10.93.123.174" - ], - "related.user": [ - "reetdolo" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "block" - ], - "rsa.misc.content_type": "iusmodi", - "rsa.misc.result_code": "etcons", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "uteirure", - "rsa.time.event_time": "2016-11-24T12:03:59.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "itam=aper", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1563, - "source.ip": "10.47.25.230", - "source.port": 5491, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "html", - "url.fragment": "ntocc", - "url.original": "https://internal.example.net/ptatemq/luptatev.html?Nequepo=ipsumd#ntocc", - "url.path": [ - "/ptatemq/luptatev.html", - "https://example.com" - ], - "url.query": "Nequepo=ipsumd", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "reetdolo", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2016-12-08T07:06:33.000Z", - "destination.ip": "10.233.48.103", - "event.action": "cancel", - "event.code": "MKOL", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.7.46.36 837 [08/Dec/2016:5:06:33 nonn] \"MKOL https://www5.example.net/quiavol/rrorsi.gif?iatisu=sec#cons sBon\" 10.233.48.103 leumiur tlab \"aperiame\" isc ullamcor 584 \"https://www5.example.com/tateve/itinvol.txt?tenatus=cipitlab#ipsumd\" \"Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30\" cancel", - "file.name": "aperiame", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/tateve/itinvol.txt?tenatus=cipitlab#ipsumd", - "input.type": "log", - "log.offset": 8829, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www5.example.com", - "www5.example.net" - ], - "related.ip": [ - "10.233.48.103", - "10.7.46.36" - ], - "related.user": [ - "tlab" - ], - "rsa.internal.messageid": "MKOL", - "rsa.misc.action": [ - "MKOL", - "cancel" - ], - "rsa.misc.content_type": "ullamcor", - "rsa.misc.result_code": "isc", - "rsa.network.domain": "www5.example.net", - "rsa.network.network_service": "sBon", - "rsa.time.event_time": "2016-12-08T07:06:33.000Z", - "rsa.web.alias_host": "www5.example.net", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "tenatus=cipitlab", - "server.domain": "www5.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www5", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 584, - "source.ip": "10.7.46.36", - "source.port": 837, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.net", - "url.extension": "gif", - "url.fragment": "cons", - "url.original": "https://www5.example.net/quiavol/rrorsi.gif?iatisu=sec#cons", - "url.path": [ - "/quiavol/rrorsi.gif", - "https://www5.example.com" - ], - "url.query": "iatisu=sec", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "tlab", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2016-12-23T14:09:07.000Z", - "destination.ip": "10.27.58.92", - "event.action": "accept", - "event.code": "PROPATCH", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.93.220.10 2805 [23/Dec/2016:12:09:07 com] \"PROPATCH https://api.example.net/orain/tiumt.jpg?litessec=itas#edquia sequatu\" 10.27.58.92 amvo qui \"tasn\" Nemoenim squirati 63 \"https://mail.example.com/nbyCic/utlabor.html?iciade=ntiumt#iquipe\" \"Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36\" accept", - "file.name": "tasn", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/nbyCic/utlabor.html?iciade=ntiumt#iquipe", - "input.type": "log", - "log.offset": 9210, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "mail.example.com" - ], - "related.ip": [ - "10.27.58.92", - "10.93.220.10" - ], - "related.user": [ - "qui" - ], - "rsa.internal.messageid": "PROPATCH", - "rsa.misc.action": [ - "PROPATCH", - "accept" - ], - "rsa.misc.content_type": "squirati", - "rsa.misc.result_code": "Nemoenim", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "sequatu", - "rsa.time.event_time": "2016-12-23T14:09:07.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "iciade=ntiumt", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 63, - "source.ip": "10.93.220.10", - "source.port": 2805, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "jpg", - "url.fragment": "edquia", - "url.original": "https://api.example.net/orain/tiumt.jpg?litessec=itas#edquia", - "url.path": [ - "/orain/tiumt.jpg", - "https://mail.example.com" - ], - "url.query": "litessec=itas", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "qui", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2017-01-06T09:11:41.000Z", - "destination.ip": "10.135.217.12", - "event.action": "block", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.213.144.249 4427 [06/Jan/2017:7:11:41 taedicta] \"PURGE https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut uamni\" 10.135.217.12 metMalo ntexplic \"archite\" loreme untu 5676 \"https://example.net/con/nisist.gif?ium=esciuntN#idunt\" \"Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" block", - "file.name": "archite", - "fileset.name": "log", - "http.request.referrer": "https://example.net/con/nisist.gif?ium=esciuntN#idunt", - "input.type": "log", - "log.offset": 9635, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.net", - "www.example.net" - ], - "related.ip": [ - "10.135.217.12", - "10.213.144.249" - ], - "related.user": [ - "ntexplic" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "block" - ], - "rsa.misc.content_type": "untu", - "rsa.misc.result_code": "loreme", - "rsa.network.domain": "www.example.net", - "rsa.network.network_service": "uamni", - "rsa.time.event_time": "2017-01-06T09:11:41.000Z", - "rsa.web.alias_host": "www.example.net", - "rsa.web.web_ref_domain": "example.net", - "rsa.web.web_ref_query": "ium=esciuntN", - "server.domain": "www.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 5676, - "source.ip": "10.213.144.249", - "source.port": 4427, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.net", - "url.extension": "txt", - "url.fragment": "untut", - "url.original": "https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut", - "url.path": [ - "/str/idolore.txt", - "https://example.net" - ], - "url.query": "eetdolo=cteturad", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "ntexplic", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-01-20T04:14:16.000Z", - "destination.ip": "10.233.239.112", - "event.action": "cancel", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.13.226.57 3275 [20/Jan/2017:2:14:16 runtm] \"PURGE https://mail.example.net/velitse/oditem.html?torever=oremi#mestq temUt\" 10.233.239.112 npr mquelau \"iadolor\" amcol adeser 3780 \"https://internal.example.com/tqu/reprehen.gif?quam=quid#fugiat\" \"Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36\" cancel", - "file.name": "iadolor", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/tqu/reprehen.gif?quam=quid#fugiat", - "input.type": "log", - "log.offset": 10003, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.com", - "mail.example.net" - ], - "related.ip": [ - "10.13.226.57", - "10.233.239.112" - ], - "related.user": [ - "mquelau" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "cancel" - ], - "rsa.misc.content_type": "adeser", - "rsa.misc.result_code": "amcol", - "rsa.network.domain": "mail.example.net", - "rsa.network.network_service": "temUt", - "rsa.time.event_time": "2017-01-20T04:14:16.000Z", - "rsa.web.alias_host": "mail.example.net", - "rsa.web.web_ref_domain": "internal.example.com", - "rsa.web.web_ref_query": "quam=quid", - "server.domain": "mail.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "mail", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 3780, - "source.ip": "10.13.226.57", - "source.port": 3275, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.net", - "url.extension": "html", - "url.fragment": "mestq", - "url.original": "https://mail.example.net/velitse/oditem.html?torever=oremi#mestq", - "url.path": [ - "/velitse/oditem.html", - "https://internal.example.com" - ], - "url.query": "torever=oremi", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "mquelau", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-02-03T11:16:50.000Z", - "destination.ip": "10.21.169.127", - "event.action": "accept", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.161.203.252 301 [03/Feb/2017:9:16:50 emquia] \"CONNECT https://internal.example.org/isnisi/ritatise.gif?tamet=quatur#uisa eFi\" 10.21.169.127 rpori ice \"oles\" edic seq 2835 \"https://example.com/tatn/dolorsit.jpg?billo=labo#oNemoeni\" \"Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" accept", - "file.name": "oles", - "fileset.name": "log", - "http.request.referrer": "https://example.com/tatn/dolorsit.jpg?billo=labo#oNemoeni", - "input.type": "log", - "log.offset": 10374, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "internal.example.org" - ], - "related.ip": [ - "10.161.203.252", - "10.21.169.127" - ], - "related.user": [ - "ice" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "accept" - ], - "rsa.misc.content_type": "seq", - "rsa.misc.result_code": "edic", - "rsa.network.domain": "internal.example.org", - "rsa.network.network_service": "eFi", - "rsa.time.event_time": "2017-02-03T11:16:50.000Z", - "rsa.web.alias_host": "internal.example.org", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "billo=labo", - "server.domain": "internal.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "internal", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 2835, - "source.ip": "10.161.203.252", - "source.port": 301, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.org", - "url.extension": "gif", - "url.fragment": "uisa", - "url.original": "https://internal.example.org/isnisi/ritatise.gif?tamet=quatur#uisa", - "url.path": [ - "/isnisi/ritatise.gif", - "https://example.com" - ], - "url.query": "tamet=quatur", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "org", - "user.name": "ice", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-02-18T06:19:24.000Z", - "destination.ip": "10.69.139.26", - "event.action": "block", - "event.code": "LOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.17.215.111 148 [18/Feb/2017:4:19:24 ratv] \"LOCK https://www.example.net/ianon/tsed.htm?ameiusm=proide#ano piscinge\" 10.69.139.26 ditemp edqui \"nre\" veli volupta 7124 \"https://api.example.com/ersp/enderi.jpg?adi=umwrit#uptate\" \"Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30\" block", - "file.name": "nre", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/ersp/enderi.jpg?adi=umwrit#uptate", - "input.type": "log", - "log.offset": 10735, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "www.example.net" - ], - "related.ip": [ - "10.17.215.111", - "10.69.139.26" - ], - "related.user": [ - "edqui" - ], - "rsa.internal.messageid": "LOCK", - "rsa.misc.action": [ - "LOCK", - "block" - ], - "rsa.misc.content_type": "volupta", - "rsa.misc.result_code": "veli", - "rsa.network.domain": "www.example.net", - "rsa.network.network_service": "piscinge", - "rsa.time.event_time": "2017-02-18T06:19:24.000Z", - "rsa.web.alias_host": "www.example.net", - "rsa.web.web_ref_domain": "api.example.com", - "rsa.web.web_ref_query": "adi=umwrit", - "server.domain": "www.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 7124, - "source.ip": "10.17.215.111", - "source.port": 148, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.net", - "url.extension": "htm", - "url.fragment": "ano", - "url.original": "https://www.example.net/ianon/tsed.htm?ameiusm=proide#ano", - "url.path": [ - "/ianon/tsed.htm", - "https://api.example.com" - ], - "url.query": "ameiusm=proide", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "edqui", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2017-03-04T13:21:59.000Z", - "destination.ip": "10.104.80.189", - "event.action": "accept", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.10.213.83 7206 [04/Mar/2017:11:21:59 nisi] \"COPY https://www5.example.org/ncididun/umSe.jpg?ise=itau#apariat vitaedi\" 10.104.80.189 dolore onsecte \"nBCSedut\" ugiat onulam 1542 \"https://mail.example.org/oditautf/quatu.jpg?lumdolor=nonp#labo\" \"Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" accept", - "file.name": "nBCSedut", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.org/oditautf/quatu.jpg?lumdolor=nonp#labo", - "input.type": "log", - "log.offset": 11158, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.org", - "www5.example.org" - ], - "related.ip": [ - "10.10.213.83", - "10.104.80.189" - ], - "related.user": [ - "onsecte" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "accept" - ], - "rsa.misc.content_type": "onulam", - "rsa.misc.result_code": "ugiat", - "rsa.network.domain": "www5.example.org", - "rsa.network.network_service": "vitaedi", - "rsa.time.event_time": "2017-03-04T13:21:59.000Z", - "rsa.web.alias_host": "www5.example.org", - "rsa.web.web_ref_domain": "mail.example.org", - "rsa.web.web_ref_query": "lumdolor=nonp", - "server.domain": "www5.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www5", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1542, - "source.ip": "10.10.213.83", - "source.port": 7206, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.org", - "url.extension": "jpg", - "url.fragment": "apariat", - "url.original": "https://www5.example.org/ncididun/umSe.jpg?ise=itau#apariat", - "url.path": [ - "/ncididun/umSe.jpg", - "https://mail.example.org" - ], - "url.query": "ise=itau", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "onsecte", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-03-18T08:24:33.000Z", - "destination.ip": "10.116.230.217", - "event.action": "block", - "event.code": "UNLOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.125.131.91 3480 [18/Mar/2017:6:24:33 urv] \"UNLOCK https://example.org/uatur/adminimv.gif?exeacom=roidents#tem dol\" 10.116.230.217 mvele isis \"uasiar\" utlab emUteni 7122 \"https://api.example.org/lor/velillu.html?dolorem=tvolu#nreprehe\" \"Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16\" block", - "file.name": "uasiar", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/lor/velillu.html?dolorem=tvolu#nreprehe", - "input.type": "log", - "log.offset": 11529, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "example.org" - ], - "related.ip": [ - "10.116.230.217", - "10.125.131.91" - ], - "related.user": [ - "isis" - ], - "rsa.internal.messageid": "UNLOCK", - "rsa.misc.action": [ - "UNLOCK", - "block" - ], - "rsa.misc.content_type": "emUteni", - "rsa.misc.result_code": "utlab", - "rsa.network.domain": "example.org", - "rsa.network.network_service": "dol", - "rsa.time.event_time": "2017-03-18T08:24:33.000Z", - "rsa.web.alias_host": "example.org", - "rsa.web.web_ref_domain": "api.example.org", - "rsa.web.web_ref_query": "dolorem=tvolu", - "server.domain": "example.org", - "server.registered_domain": "example.org", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 7122, - "source.ip": "10.125.131.91", - "source.port": 3480, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.org", - "url.extension": "gif", - "url.fragment": "tem", - "url.original": "https://example.org/uatur/adminimv.gif?exeacom=roidents#tem", - "url.path": [ - "/uatur/adminimv.gif", - "https://api.example.org" - ], - "url.query": "exeacom=roidents", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.top_level_domain": "org", - "user.name": "isis", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2017-04-02T03:27:07.000Z", - "destination.ip": "10.119.90.128", - "event.action": "cancel", - "event.code": "ICP_QUERY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.26.96.202 2751 [02/Apr/2017:1:27:07 rautodi] \"ICP_QUERY https://api.example.com/ven/rQu.html?doloreme=dun#reprehe tincu\" 10.119.90.128 lor oraincid \"intocc\" amcorp ntsunt 4826 \"https://mail.example.com/olo/psumqu.txt?fdeF=iquidexe#diconse\" \"Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" cancel", - "file.name": "intocc", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/olo/psumqu.txt?fdeF=iquidexe#diconse", - "input.type": "log", - "log.offset": 11865, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "mail.example.com" - ], - "related.ip": [ - "10.119.90.128", - "10.26.96.202" - ], - "related.user": [ - "oraincid" - ], - "rsa.internal.messageid": "ICP_QUERY", - "rsa.misc.action": [ - "ICP_QUERY", - "cancel" - ], - "rsa.misc.content_type": "ntsunt", - "rsa.misc.result_code": "amcorp", - "rsa.network.domain": "api.example.com", - "rsa.network.network_service": "tincu", - "rsa.time.event_time": "2017-04-02T03:27:07.000Z", - "rsa.web.alias_host": "api.example.com", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "fdeF=iquidexe", - "server.domain": "api.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "api", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 4826, - "source.ip": "10.26.96.202", - "source.port": 2751, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.com", - "url.extension": "html", - "url.fragment": "reprehe", - "url.original": "https://api.example.com/ven/rQu.html?doloreme=dun#reprehe", - "url.path": [ - "/ven/rQu.html", - "https://mail.example.com" - ], - "url.query": "doloreme=dun", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "oraincid", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-04-16T10:29:41.000Z", - "destination.ip": "10.76.110.144", - "event.action": "deny", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.0.98.205 126 [16/Apr/2017:8:29:41 edquiac] \"HEAD https://api.example.net/eseru/quamest.html?qua=rsita#ate ipsamvo\" 10.76.110.144 tdol upt \"mex\" tatem untutlab 3386 \"https://mail.example.com/plicab/oremq.html?uisaute=imide#poriss\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36\" deny", - "file.name": "mex", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/plicab/oremq.html?uisaute=imide#poriss", - "input.type": "log", - "log.offset": 12300, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "mail.example.com" - ], - "related.ip": [ - "10.0.98.205", - "10.76.110.144" - ], - "related.user": [ - "upt" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "deny" - ], - "rsa.misc.content_type": "untutlab", - "rsa.misc.result_code": "tatem", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "ipsamvo", - "rsa.time.event_time": "2017-04-16T10:29:41.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "uisaute=imide", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 3386, - "source.ip": "10.0.98.205", - "source.port": 126, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "html", - "url.fragment": "ate", - "url.original": "https://api.example.net/eseru/quamest.html?qua=rsita#ate", - "url.path": [ - "/eseru/quamest.html", - "https://mail.example.com" - ], - "url.query": "qua=rsita", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "upt", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2017-04-30T05:32:16.000Z", - "destination.ip": "10.135.46.242", - "event.action": "deny", - "event.code": "MOVE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.224.11.165 1646 [30/Apr/2017:3:32:16 nof] \"MOVE https://internal.example.org/mvolu/conse.txt?aincidu=nimadmin#isiu licabo\" 10.135.46.242 lupta xeaco \"nvolupt\" oremi elites 1940 \"https://www.example.org/boNemoe/onsequ.html?amvolupt=onevolu#mnis\" \"Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36\" deny", - "file.name": "nvolupt", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/boNemoe/onsequ.html?amvolupt=onevolu#mnis", - "input.type": "log", - "log.offset": 12695, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.org", - "www.example.org" - ], - "related.ip": [ - "10.135.46.242", - "10.224.11.165" - ], - "related.user": [ - "xeaco" - ], - "rsa.internal.messageid": "MOVE", - "rsa.misc.action": [ - "MOVE", - "deny" - ], - "rsa.misc.content_type": "elites", - "rsa.misc.result_code": "oremi", - "rsa.network.domain": "internal.example.org", - "rsa.network.network_service": "licabo", - "rsa.time.event_time": "2017-04-30T05:32:16.000Z", - "rsa.web.alias_host": "internal.example.org", - "rsa.web.web_ref_domain": "www.example.org", - "rsa.web.web_ref_query": "amvolupt=onevolu", - "server.domain": "internal.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "internal", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1940, - "source.ip": "10.224.11.165", - "source.port": 1646, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.org", - "url.extension": "txt", - "url.fragment": "isiu", - "url.original": "https://internal.example.org/mvolu/conse.txt?aincidu=nimadmin#isiu", - "url.path": [ - "/mvolu/conse.txt", - "https://www.example.org" - ], - "url.query": "aincidu=nimadmin", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "org", - "user.name": "xeaco", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2017-05-14T12:34:50.000Z", - "destination.ip": "10.154.53.249", - "event.action": "accept", - "event.code": "TRACE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.27.44.4 4686 [14/May/2017:10:34:50 sequatD] \"TRACE https://internal.example.org/isciv/rroqu.html?uisa=tametco#ilmol eri\" 10.154.53.249 tae autodit \"elit\" cidunt plica 7398 \"https://internal.example.org/emqu/nderi.html?accusant=onse#admin\" \"Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10\" accept", - "file.name": "elit", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.org/emqu/nderi.html?accusant=onse#admin", - "input.type": "log", - "log.offset": 13084, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.org" - ], - "related.ip": [ - "10.154.53.249", - "10.27.44.4" - ], - "related.user": [ - "autodit" - ], - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "TRACE", - "accept" - ], - "rsa.misc.content_type": "plica", - "rsa.misc.result_code": "cidunt", - "rsa.network.domain": "internal.example.org", - "rsa.network.network_service": "eri", - "rsa.time.event_time": "2017-05-14T12:34:50.000Z", - "rsa.web.alias_host": "internal.example.org", - "rsa.web.web_ref_domain": "internal.example.org", - "rsa.web.web_ref_query": "accusant=onse", - "server.domain": "internal.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "internal", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 7398, - "source.ip": "10.27.44.4", - "source.port": 4686, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.org", - "url.extension": "html", - "url.fragment": "ilmol", - "url.original": "https://internal.example.org/isciv/rroqu.html?uisa=tametco#ilmol", - "url.path": [ - "/isciv/rroqu.html", - "https://internal.example.org" - ], - "url.query": "uisa=tametco", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "org", - "user.name": "autodit", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2017-05-29T07:37:24.000Z", - "destination.ip": "10.150.245.88", - "event.action": "cancel", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.93.39.140 4275 [29/May/2017:5:37:24 ute] \"COPY https://www5.example.net/uaeratv/isa.txt?periam=dqu#pid rExc\" 10.150.245.88 orisn reetd \"prehen\" ntutlabo iusmodte 1738 \"https://example.org/isc/Nequepor.txt?rem=idid#tesse\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36\" cancel", - "file.name": "prehen", - "fileset.name": "log", - "http.request.referrer": "https://example.org/isc/Nequepor.txt?rem=idid#tesse", - "input.type": "log", - "log.offset": 13539, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.org", - "www5.example.net" - ], - "related.ip": [ - "10.150.245.88", - "10.93.39.140" - ], - "related.user": [ - "reetd" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "cancel" - ], - "rsa.misc.content_type": "iusmodte", - "rsa.misc.result_code": "ntutlabo", - "rsa.network.domain": "www5.example.net", - "rsa.network.network_service": "rExc", - "rsa.time.event_time": "2017-05-29T07:37:24.000Z", - "rsa.web.alias_host": "www5.example.net", - "rsa.web.web_ref_domain": "example.org", - "rsa.web.web_ref_query": "rem=idid", - "server.domain": "www5.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www5", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1738, - "source.ip": "10.93.39.140", - "source.port": 4275, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.net", - "url.extension": "txt", - "url.fragment": "pid", - "url.original": "https://www5.example.net/uaeratv/isa.txt?periam=dqu#pid", - "url.path": [ - "/uaeratv/isa.txt", - "https://example.org" - ], - "url.query": "periam=dqu", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "reetd", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2017-06-12T14:39:58.000Z", - "destination.ip": "10.73.207.70", - "event.action": "block", - "event.code": "UNLOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.61.92.2 6595 [12/Jun/2017:12:39:58 maliquam] \"UNLOCK https://www5.example.com/orroq/vitaedic.txt?orisni=ons#remagn ecillu\" 10.73.207.70 llamco atu \"untincul\" ssecil commodi 3023 \"https://mail.example.net/tate/onevo.htm?emvele=isnost#olorem\" \"Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30\" block", - "file.name": "untincul", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.net/tate/onevo.htm?emvele=isnost#olorem", - "input.type": "log", - "log.offset": 13927, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.net", - "www5.example.com" - ], - "related.ip": [ - "10.61.92.2", - "10.73.207.70" - ], - "related.user": [ - "atu" - ], - "rsa.internal.messageid": "UNLOCK", - "rsa.misc.action": [ - "UNLOCK", - "block" - ], - "rsa.misc.content_type": "commodi", - "rsa.misc.result_code": "ssecil", - "rsa.network.domain": "www5.example.com", - "rsa.network.network_service": "ecillu", - "rsa.time.event_time": "2017-06-12T14:39:58.000Z", - "rsa.web.alias_host": "www5.example.com", - "rsa.web.web_ref_domain": "mail.example.net", - "rsa.web.web_ref_query": "emvele=isnost", - "server.domain": "www5.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "www5", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 3023, - "source.ip": "10.61.92.2", - "source.port": 6595, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.com", - "url.extension": "txt", - "url.fragment": "remagn", - "url.original": "https://www5.example.com/orroq/vitaedic.txt?orisni=ons#remagn", - "url.path": [ - "/orroq/vitaedic.txt", - "https://mail.example.net" - ], - "url.query": "orisni=ons", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "atu", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2017-06-26T09:42:33.000Z", - "destination.ip": "10.50.124.116", - "event.action": "allow", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.84.32.178 5271 [26/Jun/2017:7:42:33 aliq] \"GET https://example.net/mven/olorsit.gif?oremag=illu#ruredo mac\" temUt 2741 \"https://internal.example.com/uamnihi/risnis.html?scingeli=isn#sBono\" \"Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36\" allow 10.50.124.116 numquam 104.719000", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/uamnihi/risnis.html?scingeli=isn#sBono", - "input.type": "log", - "log.offset": 14365, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.net", - "internal.example.com" - ], - "related.ip": [ - "10.50.124.116", - "10.84.32.178" - ], - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "allow" - ], - "rsa.misc.content_type": "numquam", - "rsa.misc.result_code": "temUt", - "rsa.network.domain": "example.net", - "rsa.network.network_service": "mac", - "rsa.time.duration_time": 104.719, - "rsa.time.event_time": "2017-06-26T09:42:33.000Z", - "rsa.web.alias_host": "example.net", - "rsa.web.web_ref_domain": "internal.example.com", - "rsa.web.web_ref_query": "scingeli=isn", - "server.domain": "example.net", - "server.registered_domain": "example.net", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2741, - "source.ip": "10.84.32.178", - "source.port": 5271, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.net", - "url.extension": "gif", - "url.fragment": "ruredo", - "url.original": "https://example.net/mven/olorsit.gif?oremag=illu#ruredo", - "url.path": [ - "/mven/olorsit.gif", - "https://internal.example.com" - ], - "url.query": "oremag=illu", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.top_level_domain": "net", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2017-07-11T04:45:07.000Z", - "destination.ip": "10.211.234.224", - "event.action": "accept", - "event.code": "TRACE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.173.222.131 918 [11/Jul/2017:2:45:07 ori] \"TRACE https://www5.example.net/rum/eataevi.html?ulla=iqu#oin hil\" 10.211.234.224 uiadol Duisa \"lupta\" aUt boNem 5564 \"https://api.example.org/maveni/onevo.htm?liquaUte=alorum#obeataev\" \"Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" accept", - "file.name": "lupta", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/maveni/onevo.htm?liquaUte=alorum#obeataev", - "input.type": "log", - "log.offset": 14772, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "www5.example.net" - ], - "related.ip": [ - "10.173.222.131", - "10.211.234.224" - ], - "related.user": [ - "Duisa" - ], - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "TRACE", - "accept" - ], - "rsa.misc.content_type": "boNem", - "rsa.misc.result_code": "aUt", - "rsa.network.domain": "www5.example.net", - "rsa.network.network_service": "hil", - "rsa.time.event_time": "2017-07-11T04:45:07.000Z", - "rsa.web.alias_host": "www5.example.net", - "rsa.web.web_ref_domain": "api.example.org", - "rsa.web.web_ref_query": "liquaUte=alorum", - "server.domain": "www5.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www5", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 5564, - "source.ip": "10.173.222.131", - "source.port": 918, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.net", - "url.extension": "html", - "url.fragment": "oin", - "url.original": "https://www5.example.net/rum/eataevi.html?ulla=iqu#oin", - "url.path": [ - "/rum/eataevi.html", - "https://api.example.org" - ], - "url.query": "ulla=iqu", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "Duisa", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-07-25T11:47:41.000Z", - "destination.ip": "10.0.157.225", - "event.action": "deny", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.11.83.126 6581 [25/Jul/2017:9:47:41 naaliq] \"PROPFIND https://mail.example.net/osquir/mod.txt?fugitse=imad#tinvolup tsed\" 10.0.157.225 itam atu \"lloin\" remipsum tempor 1282 \"https://www5.example.net/incidid/rure.htm?edquian=loremeu#aturve\" \"Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" deny", - "file.name": "lloin", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/incidid/rure.htm?edquian=loremeu#aturve", - "input.type": "log", - "log.offset": 15130, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.net", - "www5.example.net" - ], - "related.ip": [ - "10.0.157.225", - "10.11.83.126" - ], - "related.user": [ - "atu" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "deny" - ], - "rsa.misc.content_type": "tempor", - "rsa.misc.result_code": "remipsum", - "rsa.network.domain": "mail.example.net", - "rsa.network.network_service": "tsed", - "rsa.time.event_time": "2017-07-25T11:47:41.000Z", - "rsa.web.alias_host": "mail.example.net", - "rsa.web.web_ref_domain": "www5.example.net", - "rsa.web.web_ref_query": "edquian=loremeu", - "server.domain": "mail.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "mail", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1282, - "source.ip": "10.11.83.126", - "source.port": 6581, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.net", - "url.extension": "txt", - "url.fragment": "tinvolup", - "url.original": "https://mail.example.net/osquir/mod.txt?fugitse=imad#tinvolup", - "url.path": [ - "/osquir/mod.txt", - "https://www5.example.net" - ], - "url.query": "fugitse=imad", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "atu", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-08-08T06:50:15.000Z", - "destination.ip": "10.92.237.93", - "event.action": "cancel", - "event.code": "PUT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.228.77.21 6889 [08/Aug/2017:4:50:15 lamc] \"PUT https://api.example.com/asper/umq.txt?itasper=uae#mve uia\" 10.92.237.93 mad onse \"redol\" gnaa mod 5107 \"https://www5.example.com/toditaut/voluptat.htm?strumex=eprehend#asnu\" \"Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30\" cancel", - "file.name": "redol", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/toditaut/voluptat.htm?strumex=eprehend#asnu", - "input.type": "log", - "log.offset": 15505, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "www5.example.com" - ], - "related.ip": [ - "10.228.77.21", - "10.92.237.93" - ], - "related.user": [ - "onse" - ], - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "PUT", - "cancel" - ], - "rsa.misc.content_type": "mod", - "rsa.misc.result_code": "gnaa", - "rsa.network.domain": "api.example.com", - "rsa.network.network_service": "uia", - "rsa.time.event_time": "2017-08-08T06:50:15.000Z", - "rsa.web.alias_host": "api.example.com", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "strumex=eprehend", - "server.domain": "api.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "api", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 5107, - "source.ip": "10.228.77.21", - "source.port": 6889, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.com", - "url.extension": "txt", - "url.fragment": "mve", - "url.original": "https://api.example.com/asper/umq.txt?itasper=uae#mve", - "url.path": [ - "/asper/umq.txt", - "https://www5.example.com" - ], - "url.query": "itasper=uae", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "onse", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2017-08-22T13:52:50.000Z", - "destination.ip": "10.20.28.92", - "event.action": "allow", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.102.215.23 3665 [22/Aug/2017:11:52:50 esseq] \"POST https://www5.example.net/quatD/isqua.jpg?oloreseo=iruredol#veniamqu licaboN\" 10.20.28.92 econs ntexpl \"dunt\" litsedq nderiti 409 \"https://api.example.com/Cic/olorema.txt?iscive=quasiar#aeab\" \"Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16\" allow", - "file.name": "dunt", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/Cic/olorema.txt?iscive=quasiar#aeab", - "input.type": "log", - "log.offset": 15871, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "www5.example.net" - ], - "related.ip": [ - "10.102.215.23", - "10.20.28.92" - ], - "related.user": [ - "ntexpl" - ], - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "allow" - ], - "rsa.misc.content_type": "nderiti", - "rsa.misc.result_code": "litsedq", - "rsa.network.domain": "www5.example.net", - "rsa.network.network_service": "licaboN", - "rsa.time.event_time": "2017-08-22T13:52:50.000Z", - "rsa.web.alias_host": "www5.example.net", - "rsa.web.web_ref_domain": "api.example.com", - "rsa.web.web_ref_query": "iscive=quasiar", - "server.domain": "www5.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www5", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 409, - "source.ip": "10.102.215.23", - "source.port": 3665, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.net", - "url.extension": "jpg", - "url.fragment": "veniamqu", - "url.original": "https://www5.example.net/quatD/isqua.jpg?oloreseo=iruredol#veniamqu", - "url.path": [ - "/quatD/isqua.jpg", - "https://api.example.com" - ], - "url.query": "oloreseo=iruredol", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "ntexpl", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2017-09-06T08:55:24.000Z", - "destination.ip": "10.17.87.79", - "event.action": "block", - "event.code": "NONE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.45.28.159 5627 [06/Sep/2017:6:55:24 ree] \"NONE https://api.example.net/ation/luptas.html?iatqu=lorsi#repreh plic\" 10.17.87.79 tetur tionula \"ritqu\" ecatcupi uamei 4595 \"https://www5.example.com/onse/olorem.gif?duntutla=ntium#iration\" \"Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" block", - "file.name": "ritqu", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/onse/olorem.gif?duntutla=ntium#iration", - "input.type": "log", - "log.offset": 16214, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "www5.example.com" - ], - "related.ip": [ - "10.17.87.79", - "10.45.28.159" - ], - "related.user": [ - "tionula" - ], - "rsa.internal.messageid": "NONE", - "rsa.misc.action": [ - "NONE", - "block" - ], - "rsa.misc.content_type": "uamei", - "rsa.misc.result_code": "ecatcupi", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "plic", - "rsa.time.event_time": "2017-09-06T08:55:24.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "duntutla=ntium", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 4595, - "source.ip": "10.45.28.159", - "source.port": 5627, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "html", - "url.fragment": "repreh", - "url.original": "https://api.example.net/ation/luptas.html?iatqu=lorsi#repreh", - "url.path": [ - "/ation/luptas.html", - "https://www5.example.com" - ], - "url.query": "iatqu=lorsi", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "tionula", - "user_agent.device.name": "Samsung SM-S337TL", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-09-20T03:57:58.000Z", - "destination.ip": "10.189.94.51", - "event.action": "allow", - "event.code": "DELETE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.177.238.45 5137 [20/Sep/2017:1:57:58 ssusci] \"DELETE https://internal.example.com/mpo/unte.jpg?ueipsa=scipitl#eumi quasiarc\" 10.189.94.51 tetura rsp \"oluptat\" metco acom 5704 \"https://api.example.com/tem/exeacomm.txt?taliqui=mides#ciun\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36\" allow", - "file.name": "oluptat", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/tem/exeacomm.txt?taliqui=mides#ciun", - "input.type": "log", - "log.offset": 16583, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "internal.example.com" - ], - "related.ip": [ - "10.177.238.45", - "10.189.94.51" - ], - "related.user": [ - "rsp" - ], - "rsa.internal.messageid": "DELETE", - "rsa.misc.action": [ - "DELETE", - "allow" - ], - "rsa.misc.content_type": "acom", - "rsa.misc.result_code": "metco", - "rsa.network.domain": "internal.example.com", - "rsa.network.network_service": "quasiarc", - "rsa.time.event_time": "2017-09-20T03:57:58.000Z", - "rsa.web.alias_host": "internal.example.com", - "rsa.web.web_ref_domain": "api.example.com", - "rsa.web.web_ref_query": "taliqui=mides", - "server.domain": "internal.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "internal", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 5704, - "source.ip": "10.177.238.45", - "source.port": 5137, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.com", - "url.extension": "jpg", - "url.fragment": "eumi", - "url.original": "https://internal.example.com/mpo/unte.jpg?ueipsa=scipitl#eumi", - "url.path": [ - "/mpo/unte.jpg", - "https://api.example.com" - ], - "url.query": "ueipsa=scipitl", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "rsp", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2017-10-04T11:00:32.000Z", - "destination.ip": "10.101.85.169", - "event.action": "accept", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.46.77.76 5169 [04/Oct/2017:9:00:32 anim] \"GET https://www.example.org/uov/quaeab.jpg?moles=dipiscin#olup aco\" 10.101.85.169 natu liquid \"enim\" Finibus radi 5697 \"https://example.com/taed/umdolo.html?rroqu=dquiaco#nibus\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36\" accept", - "file.name": "enim", - "fileset.name": "log", - "http.request.referrer": "https://example.com/taed/umdolo.html?rroqu=dquiaco#nibus", - "input.type": "log", - "log.offset": 16986, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "www.example.org" - ], - "related.ip": [ - "10.101.85.169", - "10.46.77.76" - ], - "related.user": [ - "liquid" - ], - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "accept" - ], - "rsa.misc.content_type": "radi", - "rsa.misc.result_code": "Finibus", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "aco", - "rsa.time.event_time": "2017-10-04T11:00:32.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "rroqu=dquiaco", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 5697, - "source.ip": "10.46.77.76", - "source.port": 5169, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "jpg", - "url.fragment": "olup", - "url.original": "https://www.example.org/uov/quaeab.jpg?moles=dipiscin#olup", - "url.path": [ - "/uov/quaeab.jpg", - "https://example.com" - ], - "url.query": "moles=dipiscin", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "liquid", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2017-10-19T06:03:07.000Z", - "destination.ip": "10.231.7.209", - "event.action": "block", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.24.54.129 77 [19/Oct/2017:4:03:07 eprehend] \"HEAD https://example.net/edolo/ugiatquo.jpg?eosquira=pta#snos orsi\" 10.231.7.209 lorsita eavol \"osamnis\" temaccu scipitl 1247 \"https://www5.example.org/caboNem/urExcept.txt?litesseq=atcupida#tessequa\" \"Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36\" block", - "file.name": "osamnis", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/caboNem/urExcept.txt?litesseq=atcupida#tessequa", - "input.type": "log", - "log.offset": 17373, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.net", - "www5.example.org" - ], - "related.ip": [ - "10.231.7.209", - "10.24.54.129" - ], - "related.user": [ - "eavol" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "block" - ], - "rsa.misc.content_type": "scipitl", - "rsa.misc.result_code": "temaccu", - "rsa.network.domain": "example.net", - "rsa.network.network_service": "orsi", - "rsa.time.event_time": "2017-10-19T06:03:07.000Z", - "rsa.web.alias_host": "example.net", - "rsa.web.web_ref_domain": "www5.example.org", - "rsa.web.web_ref_query": "litesseq=atcupida", - "server.domain": "example.net", - "server.registered_domain": "example.net", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1247, - "source.ip": "10.24.54.129", - "source.port": 77, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.net", - "url.extension": "jpg", - "url.fragment": "snos", - "url.original": "https://example.net/edolo/ugiatquo.jpg?eosquira=pta#snos", - "url.path": [ - "/edolo/ugiatquo.jpg", - "https://www5.example.org" - ], - "url.query": "eosquira=pta", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.top_level_domain": "net", - "user.name": "eavol", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2017-11-02T13:05:41.000Z", - "destination.ip": "10.77.129.175", - "event.action": "allow", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.121.163.5 7803 [02/Nov/2017:11:05:41 redol] \"CONNECT https://api.example.org/isci/dolor.htm?orinrep=quiavol#nrepreh ratv\" 10.77.129.175 tali BCS \"qui\" ugiatquo incidid 2617 \"https://www.example.com/sBonor/fugits.jpg?amc=vol#admi\" \"Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" allow", - "file.name": "qui", - "fileset.name": "log", - "http.request.referrer": "https://www.example.com/sBonor/fugits.jpg?amc=vol#admi", - "input.type": "log", - "log.offset": 17756, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "www.example.com" - ], - "related.ip": [ - "10.121.163.5", - "10.77.129.175" - ], - "related.user": [ - "BCS" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "allow" - ], - "rsa.misc.content_type": "incidid", - "rsa.misc.result_code": "ugiatquo", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "ratv", - "rsa.time.event_time": "2017-11-02T13:05:41.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "www.example.com", - "rsa.web.web_ref_query": "amc=vol", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 2617, - "source.ip": "10.121.163.5", - "source.port": 7803, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "htm", - "url.fragment": "nrepreh", - "url.original": "https://api.example.org/isci/dolor.htm?orinrep=quiavol#nrepreh", - "url.path": [ - "/isci/dolor.htm", - "https://www.example.com" - ], - "url.query": "orinrep=quiavol", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "BCS", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-11-16T08:08:15.000Z", - "destination.ip": "10.116.146.114", - "event.action": "deny", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.51.236.148 329 [16/Nov/2017:6:08:15 adol] \"PROPFIND https://mail.example.com/roide/tem.gif?rerepre=nculpaq#culpaqui tvolup\" 10.116.146.114 col obea \"emp\" agnaaliq est 1444 \"https://www.example.com/inculp/onofd.gif?umdolors=dolori#asperna\" \"Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" deny", - "file.name": "emp", - "fileset.name": "log", - "http.request.referrer": "https://www.example.com/inculp/onofd.gif?umdolors=dolori#asperna", - "input.type": "log", - "log.offset": 18118, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.com", - "www.example.com" - ], - "related.ip": [ - "10.116.146.114", - "10.51.236.148" - ], - "related.user": [ - "obea" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "deny" - ], - "rsa.misc.content_type": "est", - "rsa.misc.result_code": "agnaaliq", - "rsa.network.domain": "mail.example.com", - "rsa.network.network_service": "tvolup", - "rsa.time.event_time": "2017-11-16T08:08:15.000Z", - "rsa.web.alias_host": "mail.example.com", - "rsa.web.web_ref_domain": "www.example.com", - "rsa.web.web_ref_query": "umdolors=dolori", - "server.domain": "mail.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "mail", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1444, - "source.ip": "10.51.236.148", - "source.port": 329, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.com", - "url.extension": "gif", - "url.fragment": "culpaqui", - "url.original": "https://mail.example.com/roide/tem.gif?rerepre=nculpaq#culpaqui", - "url.path": [ - "/roide/tem.gif", - "https://www.example.com" - ], - "url.query": "rerepre=nculpaq", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "obea", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-12-01T03:10:49.000Z", - "destination.ip": "10.217.222.99", - "event.action": "block", - "event.code": "NONE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.244.108.135 6997 [01/Dec/2017:1:10:49 ume] \"NONE https://internal.example.net/rautod/olest.jpg?lapar=ritati#edquia itesse\" 10.217.222.99 ame amvolu \"mip\" tion tobeatae 2512 \"https://api.example.com/iqua/luptat.txt?oremqu=uradi#velitsed\" \"Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90\" block", - "file.name": "mip", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/iqua/luptat.txt?oremqu=uradi#velitsed", - "input.type": "log", - "log.offset": 18550, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "internal.example.net" - ], - "related.ip": [ - "10.217.222.99", - "10.244.108.135" - ], - "related.user": [ - "amvolu" - ], - "rsa.internal.messageid": "NONE", - "rsa.misc.action": [ - "NONE", - "block" - ], - "rsa.misc.content_type": "tobeatae", - "rsa.misc.result_code": "tion", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "itesse", - "rsa.time.event_time": "2017-12-01T03:10:49.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "api.example.com", - "rsa.web.web_ref_query": "oremqu=uradi", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2512, - "source.ip": "10.244.108.135", - "source.port": 6997, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "edquia", - "url.original": "https://internal.example.net/rautod/olest.jpg?lapar=ritati#edquia", - "url.path": [ - "/rautod/olest.jpg", - "https://api.example.com" - ], - "url.query": "lapar=ritati", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "amvolu", - "user_agent.device.name": "U20", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "44.0.2403.147" - }, - { - "@timestamp": "2017-12-15T10:13:24.000Z", - "destination.ip": "10.150.198.112", - "event.action": "block", - "event.code": "PUT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.4.69.152 3833 [15/Dec/2017:8:13:24 scivel] \"PUT https://api.example.org/iusmodt/enim.txt?aquio=ersp#iame orroquis\" 10.150.198.112 ntmoll mexer \"estla\" uipexe abor 1370 \"https://www.example.net/remips/illoi.jpg?abori=uisnostr#reetdol\" \"Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10\" block", - "file.name": "estla", - "fileset.name": "log", - "http.request.referrer": "https://www.example.net/remips/illoi.jpg?abori=uisnostr#reetdol", - "input.type": "log", - "log.offset": 18972, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "www.example.net" - ], - "related.ip": [ - "10.150.198.112", - "10.4.69.152" - ], - "related.user": [ - "mexer" - ], - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "PUT", - "block" - ], - "rsa.misc.content_type": "abor", - "rsa.misc.result_code": "uipexe", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "orroquis", - "rsa.time.event_time": "2017-12-15T10:13:24.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "www.example.net", - "rsa.web.web_ref_query": "abori=uisnostr", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1370, - "source.ip": "10.4.69.152", - "source.port": 3833, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "txt", - "url.fragment": "iame", - "url.original": "https://api.example.org/iusmodt/enim.txt?aquio=ersp#iame", - "url.path": [ - "/iusmodt/enim.txt", - "https://www.example.net" - ], - "url.query": "aquio=ersp", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "mexer", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2017-12-29T05:15:58.000Z", - "destination.ip": "10.45.54.107", - "event.action": "accept", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.45.114.111 357 [29/Dec/2017:3:15:58 olup] \"POST https://example.org/abillo/undeom.html?oraincid=quaer#eetdo tlab\" 10.45.54.107 seddoeiu nse \"aali\" edictasu mdolors 7490 \"https://www5.example.org/atis/atDuis.txt?nisiut=rumwri#velill\" \"Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]\" accept", - "file.name": "aali", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/atis/atDuis.txt?nisiut=rumwri#velill", - "input.type": "log", - "log.offset": 19421, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.org", - "www5.example.org" - ], - "related.ip": [ - "10.45.114.111", - "10.45.54.107" - ], - "related.user": [ - "nse" - ], - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "accept" - ], - "rsa.misc.content_type": "mdolors", - "rsa.misc.result_code": "edictasu", - "rsa.network.domain": "example.org", - "rsa.network.network_service": "tlab", - "rsa.time.event_time": "2017-12-29T05:15:58.000Z", - "rsa.web.alias_host": "example.org", - "rsa.web.web_ref_domain": "www5.example.org", - "rsa.web.web_ref_query": "nisiut=rumwri", - "server.domain": "example.org", - "server.registered_domain": "example.org", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 7490, - "source.ip": "10.45.114.111", - "source.port": 357, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.org", - "url.extension": "html", - "url.fragment": "eetdo", - "url.original": "https://example.org/abillo/undeom.html?oraincid=quaer#eetdo", - "url.path": [ - "/abillo/undeom.html", - "https://www5.example.org" - ], - "url.query": "oraincid=quaer", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.top_level_domain": "org", - "user.name": "nse", - "user_agent.device.name": "Samsung SM-A715F", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2018-01-12T12:18:32.000Z", - "destination.ip": "10.205.28.24", - "event.action": "allow", - "event.code": "TRACE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.49.242.174 4078 [12/Jan/2018:10:18:32 tat] \"TRACE https://mail.example.net/uam/orumSec.jpg?isnisiu=suntincu#sse venia\" 10.205.28.24 oeni untutlab \"tvolup\" consecte pteurs 742 \"https://www5.example.net/ons/tiaecon.html?unt=tass#tiumdol\" \"Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90\" allow", - "file.name": "tvolup", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/ons/tiaecon.html?unt=tass#tiumdol", - "input.type": "log", - "log.offset": 19869, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.net", - "www5.example.net" - ], - "related.ip": [ - "10.205.28.24", - "10.49.242.174" - ], - "related.user": [ - "untutlab" - ], - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "TRACE", - "allow" - ], - "rsa.misc.content_type": "pteurs", - "rsa.misc.result_code": "consecte", - "rsa.network.domain": "mail.example.net", - "rsa.network.network_service": "venia", - "rsa.time.event_time": "2018-01-12T12:18:32.000Z", - "rsa.web.alias_host": "mail.example.net", - "rsa.web.web_ref_domain": "www5.example.net", - "rsa.web.web_ref_query": "unt=tass", - "server.domain": "mail.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "mail", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 742, - "source.ip": "10.49.242.174", - "source.port": 4078, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.net", - "url.extension": "jpg", - "url.fragment": "sse", - "url.original": "https://mail.example.net/uam/orumSec.jpg?isnisiu=suntincu#sse", - "url.path": [ - "/uam/orumSec.jpg", - "https://www5.example.net" - ], - "url.query": "isnisiu=suntincu", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "untutlab", - "user_agent.device.name": "U20", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "44.0.2403.147" - }, - { - "@timestamp": "2018-01-27T07:21:06.000Z", - "destination.ip": "10.183.223.149", - "event.action": "deny", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.17.202.219 487 [27/Jan/2018:5:21:06 iame] \"HEAD https://www5.example.org/umiurer/rere.txt?mnisi=usmo#iamea imaveni\" 10.183.223.149 cor odoco \"oin\" itseddoe elites 6366 \"https://mail.example.com/eursinto/litesse.html?licaboNe=tautfug#giatquov\" \"Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10\" deny", - "file.name": "oin", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/eursinto/litesse.html?licaboNe=tautfug#giatquov", - "input.type": "log", - "log.offset": 20290, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.com", - "www5.example.org" - ], - "related.ip": [ - "10.17.202.219", - "10.183.223.149" - ], - "related.user": [ - "odoco" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "deny" - ], - "rsa.misc.content_type": "elites", - "rsa.misc.result_code": "itseddoe", - "rsa.network.domain": "www5.example.org", - "rsa.network.network_service": "imaveni", - "rsa.time.event_time": "2018-01-27T07:21:06.000Z", - "rsa.web.alias_host": "www5.example.org", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "licaboNe=tautfug", - "server.domain": "www5.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www5", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 6366, - "source.ip": "10.17.202.219", - "source.port": 487, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.org", - "url.extension": "txt", - "url.fragment": "iamea", - "url.original": "https://www5.example.org/umiurer/rere.txt?mnisi=usmo#iamea", - "url.path": [ - "/umiurer/rere.txt", - "https://mail.example.com" - ], - "url.query": "mnisi=usmo", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "odoco", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2018-02-10T14:23:41.000Z", - "destination.ip": "10.88.172.222", - "event.action": "cancel", - "event.code": "MOVE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.81.140.173 7623 [10/Feb/2018:12:23:41 itae] \"MOVE https://internal.example.net/atnula/ditautf.jpg?iquidex=olup#remipsu tan\" 10.88.172.222 doconse etdol \"dolorsi\" nturmag tura 6695 \"https://internal.example.org/totam/ntoccae.htm?idunt=atqu#naturau\" \"mobmail android 2.1.3.3150\" cancel", - "file.name": "dolorsi", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.org/totam/ntoccae.htm?idunt=atqu#naturau", - "input.type": "log", - "log.offset": 20692, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.net", - "internal.example.org" - ], - "related.ip": [ - "10.81.140.173", - "10.88.172.222" - ], - "related.user": [ - "etdol" - ], - "rsa.internal.messageid": "MOVE", - "rsa.misc.action": [ - "MOVE", - "cancel" - ], - "rsa.misc.content_type": "tura", - "rsa.misc.result_code": "nturmag", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "tan", - "rsa.time.event_time": "2018-02-10T14:23:41.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "internal.example.org", - "rsa.web.web_ref_query": "idunt=atqu", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 6695, - "source.ip": "10.81.140.173", - "source.port": 7623, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "remipsu", - "url.original": "https://internal.example.net/atnula/ditautf.jpg?iquidex=olup#remipsu", - "url.path": [ - "/atnula/ditautf.jpg", - "https://internal.example.org" - ], - "url.query": "iquidex=olup", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "etdol", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2018-02-24T09:26:15.000Z", - "destination.ip": "10.247.53.179", - "event.action": "accept", - "event.code": "OPTIONS", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.162.129.196 4247 [24/Feb/2018:7:26:15 snisi] \"OPTIONS https://api.example.net/uscip/umS.txt?quiacons=uisa#xeacommo Cicero\" 10.247.53.179 issu identsu \"piscivel\" hend eacommo 6835 \"https://example.com/osquira/umd.gif?scipi=tur#acon\" \"mobmail android 2.1.3.3150\" accept", - "file.name": "piscivel", - "fileset.name": "log", - "http.request.referrer": "https://example.com/osquira/umd.gif?scipi=tur#acon", - "input.type": "log", - "log.offset": 20979, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "example.com" - ], - "related.ip": [ - "10.162.129.196", - "10.247.53.179" - ], - "related.user": [ - "identsu" - ], - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "OPTIONS", - "accept" - ], - "rsa.misc.content_type": "eacommo", - "rsa.misc.result_code": "hend", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "Cicero", - "rsa.time.event_time": "2018-02-24T09:26:15.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "scipi=tur", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 6835, - "source.ip": "10.162.129.196", - "source.port": 4247, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "txt", - "url.fragment": "xeacommo", - "url.original": "https://api.example.net/uscip/umS.txt?quiacons=uisa#xeacommo", - "url.path": [ - "/uscip/umS.txt", - "https://example.com" - ], - "url.query": "quiacons=uisa", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "identsu", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2018-03-11T04:28:49.000Z", - "destination.ip": "10.172.148.223", - "event.action": "accept", - "event.code": "UNLOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.110.86.230 536 [11/Mar/2018:2:28:49 eFini] \"UNLOCK https://mail.example.com/mrema/ullamc.txt?eufug=roquisq#temporai uido\" 10.172.148.223 snulap enimadm \"stenatu\" upta atc 3066 \"https://www5.example.net/asnulap/ipi.htm?orissu=fic#sBon\" \"Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80\" accept", - "file.name": "stenatu", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/asnulap/ipi.htm?orissu=fic#sBon", - "input.type": "log", - "log.offset": 21250, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.com", - "www5.example.net" - ], - "related.ip": [ - "10.110.86.230", - "10.172.148.223" - ], - "related.user": [ - "enimadm" - ], - "rsa.internal.messageid": "UNLOCK", - "rsa.misc.action": [ - "UNLOCK", - "accept" - ], - "rsa.misc.content_type": "atc", - "rsa.misc.result_code": "upta", - "rsa.network.domain": "mail.example.com", - "rsa.network.network_service": "uido", - "rsa.time.event_time": "2018-03-11T04:28:49.000Z", - "rsa.web.alias_host": "mail.example.com", - "rsa.web.web_ref_domain": "www5.example.net", - "rsa.web.web_ref_query": "orissu=fic", - "server.domain": "mail.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "mail", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 3066, - "source.ip": "10.110.86.230", - "source.port": 536, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.com", - "url.extension": "txt", - "url.fragment": "temporai", - "url.original": "https://mail.example.com/mrema/ullamc.txt?eufug=roquisq#temporai", - "url.path": [ - "/mrema/ullamc.txt", - "https://www5.example.net" - ], - "url.query": "eufug=roquisq", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "enimadm", - "user_agent.device.name": "Android", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80", - "user_agent.os.full": "Android 5.1.1", - "user_agent.os.name": "Android", - "user_agent.os.version": "5.1.1", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-03-25T11:31:24.000Z", - "destination.ip": "10.232.19.43", - "event.action": "deny", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.93.159.170 3481 [25/Mar/2018:9:31:24 emullam] \"GET https://www5.example.com/isau/itinvol.txt?saquaea=ons#orsitam modico\" 10.232.19.43 porinc riame \"riat\" sseq eriam 729 \"https://internal.example.net/imve/essequam.gif?urQuis=etcon#onsequu\" \"Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36\" deny", - "file.name": "riat", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/imve/essequam.gif?urQuis=etcon#onsequu", - "input.type": "log", - "log.offset": 21675, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.net", - "www5.example.com" - ], - "related.ip": [ - "10.232.19.43", - "10.93.159.170" - ], - "related.user": [ - "riame" - ], - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "deny" - ], - "rsa.misc.content_type": "eriam", - "rsa.misc.result_code": "sseq", - "rsa.network.domain": "www5.example.com", - "rsa.network.network_service": "modico", - "rsa.time.event_time": "2018-03-25T11:31:24.000Z", - "rsa.web.alias_host": "www5.example.com", - "rsa.web.web_ref_domain": "internal.example.net", - "rsa.web.web_ref_query": "urQuis=etcon", - "server.domain": "www5.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "www5", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 729, - "source.ip": "10.93.159.170", - "source.port": 3481, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.com", - "url.extension": "txt", - "url.fragment": "orsitam", - "url.original": "https://www5.example.com/isau/itinvol.txt?saquaea=ons#orsitam", - "url.path": [ - "/isau/itinvol.txt", - "https://internal.example.net" - ], - "url.query": "saquaea=ons", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "riame", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2018-04-08T06:33:58.000Z", - "destination.ip": "10.55.55.72", - "event.action": "cancel", - "event.code": "ICP_QUERY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.207.97.192 973 [08/Apr/2018:4:33:58 emp] \"ICP_QUERY https://api.example.net/veli/venia.htm?etdolor=uat#onemulla riaturEx\" 10.55.55.72 nculp asp \"eacom\" mag gelitse 2007 \"https://example.net/lab/llumq.htm?tetura=rumet#uptasnul\" \"Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" cancel", - "file.name": "eacom", - "fileset.name": "log", - "http.request.referrer": "https://example.net/lab/llumq.htm?tetura=rumet#uptasnul", - "input.type": "log", - "log.offset": 22058, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "example.net" - ], - "related.ip": [ - "10.207.97.192", - "10.55.55.72" - ], - "related.user": [ - "asp" - ], - "rsa.internal.messageid": "ICP_QUERY", - "rsa.misc.action": [ - "ICP_QUERY", - "cancel" - ], - "rsa.misc.content_type": "gelitse", - "rsa.misc.result_code": "mag", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "riaturEx", - "rsa.time.event_time": "2018-04-08T06:33:58.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "example.net", - "rsa.web.web_ref_query": "tetura=rumet", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2007, - "source.ip": "10.207.97.192", - "source.port": 973, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "htm", - "url.fragment": "onemulla", - "url.original": "https://api.example.net/veli/venia.htm?etdolor=uat#onemulla", - "url.path": [ - "/veli/venia.htm", - "https://example.net" - ], - "url.query": "etdolor=uat", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "asp", - "user_agent.device.name": "Samsung SM-S337TL", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-04-22T13:36:32.000Z", - "destination.ip": "10.89.73.240", - "event.action": "deny", - "event.code": "MOVE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.41.156.88 203 [22/Apr/2018:11:36:32 oco] \"MOVE https://internal.example.net/ainci/osqu.jpg?sus=imavenia#expli ugiat\" 10.89.73.240 orem ntorever \"pisciv\" fugiatqu seos 5561 \"https://www5.example.net/elillum/veleumi.gif?tvol=oluptate#lit\" \"Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61\" deny", - "file.name": "pisciv", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/elillum/veleumi.gif?tvol=oluptate#lit", - "input.type": "log", - "log.offset": 22421, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.net", - "www5.example.net" - ], - "related.ip": [ - "10.41.156.88", - "10.89.73.240" - ], - "related.user": [ - "ntorever" - ], - "rsa.internal.messageid": "MOVE", - "rsa.misc.action": [ - "MOVE", - "deny" - ], - "rsa.misc.content_type": "seos", - "rsa.misc.result_code": "fugiatqu", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "ugiat", - "rsa.time.event_time": "2018-04-22T13:36:32.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "www5.example.net", - "rsa.web.web_ref_query": "tvol=oluptate", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 5561, - "source.ip": "10.41.156.88", - "source.port": 203, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "expli", - "url.original": "https://internal.example.net/ainci/osqu.jpg?sus=imavenia#expli", - "url.path": [ - "/ainci/osqu.jpg", - "https://www5.example.net" - ], - "url.query": "sus=imavenia", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "ntorever", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2018-05-07T08:39:06.000Z", - "destination.ip": "10.101.183.86", - "event.action": "allow", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.54.44.231 5292 [07/May/2018:6:39:06 aco] \"CONNECT https://www.example.org/runtm/eturadip.htm?psumd=oloree#seos rios\" 10.101.183.86 mvenia mcorpo \"ntexpl\" abor oreverit 6451 \"https://internal.example.net/tat/eufugia.htm?tau=fficia#est\" \"Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10\" allow", - "file.name": "ntexpl", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/tat/eufugia.htm?tau=fficia#est", - "input.type": "log", - "log.offset": 22853, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.net", - "www.example.org" - ], - "related.ip": [ - "10.101.183.86", - "10.54.44.231" - ], - "related.user": [ - "mcorpo" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "allow" - ], - "rsa.misc.content_type": "oreverit", - "rsa.misc.result_code": "abor", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "rios", - "rsa.time.event_time": "2018-05-07T08:39:06.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "internal.example.net", - "rsa.web.web_ref_query": "tau=fficia", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 6451, - "source.ip": "10.54.44.231", - "source.port": 5292, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "htm", - "url.fragment": "seos", - "url.original": "https://www.example.org/runtm/eturadip.htm?psumd=oloree#seos", - "url.path": [ - "/runtm/eturadip.htm", - "https://internal.example.net" - ], - "url.query": "psumd=oloree", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "mcorpo", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2018-05-21T03:41:41.000Z", - "destination.ip": "10.130.150.189", - "event.action": "accept", - "event.code": "LOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.181.177.74 3378 [21/May/2018:1:41:41 itsedd] \"LOCK https://internal.example.org/liquipex/uisnos.html?ventor=lupt#umwri odoc\" 10.130.150.189 oreeu nvo \"iamqui\" tassita colabori 1223 \"https://www.example.net/lpa/isn.htm?iat=ffic#siuta\" \"Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" accept", - "file.name": "iamqui", - "fileset.name": "log", - "http.request.referrer": "https://www.example.net/lpa/isn.htm?iat=ffic#siuta", - "input.type": "log", - "log.offset": 23248, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.org", - "www.example.net" - ], - "related.ip": [ - "10.130.150.189", - "10.181.177.74" - ], - "related.user": [ - "nvo" - ], - "rsa.internal.messageid": "LOCK", - "rsa.misc.action": [ - "LOCK", - "accept" - ], - "rsa.misc.content_type": "colabori", - "rsa.misc.result_code": "tassita", - "rsa.network.domain": "internal.example.org", - "rsa.network.network_service": "odoc", - "rsa.time.event_time": "2018-05-21T03:41:41.000Z", - "rsa.web.alias_host": "internal.example.org", - "rsa.web.web_ref_domain": "www.example.net", - "rsa.web.web_ref_query": "iat=ffic", - "server.domain": "internal.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "internal", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1223, - "source.ip": "10.181.177.74", - "source.port": 3378, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.org", - "url.extension": "html", - "url.fragment": "umwri", - "url.original": "https://internal.example.org/liquipex/uisnos.html?ventor=lupt#umwri", - "url.path": [ - "/liquipex/uisnos.html", - "https://www.example.net" - ], - "url.query": "ventor=lupt", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "org", - "user.name": "nvo", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-06-04T10:44:15.000Z", - "destination.ip": "10.83.130.95", - "event.action": "deny", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.76.220.3 2492 [04/Jun/2018:8:44:15 serrorsi] \"GET https://api.example.org/mquisnos/lore.txt?siar=isn#veniamq lup\" 10.83.130.95 ipitlabo userror \"eacommo\" nderi liqua 7030 \"https://api.example.net/henderit/remq.jpg?voluptas=velill#rspic\" \"Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36\" deny", - "file.name": "eacommo", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/henderit/remq.jpg?voluptas=velill#rspic", - "input.type": "log", - "log.offset": 23613, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "api.example.org" - ], - "related.ip": [ - "10.76.220.3", - "10.83.130.95" - ], - "related.user": [ - "userror" - ], - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "deny" - ], - "rsa.misc.content_type": "liqua", - "rsa.misc.result_code": "nderi", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "lup", - "rsa.time.event_time": "2018-06-04T10:44:15.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "api.example.net", - "rsa.web.web_ref_query": "voluptas=velill", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 7030, - "source.ip": "10.76.220.3", - "source.port": 2492, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "txt", - "url.fragment": "veniamq", - "url.original": "https://api.example.org/mquisnos/lore.txt?siar=isn#veniamq", - "url.path": [ - "/mquisnos/lore.txt", - "https://api.example.net" - ], - "url.query": "siar=isn", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "userror", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2018-06-19T05:46:49.000Z", - "destination.ip": "10.166.160.217", - "event.action": "deny", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.219.245.58 7073 [19/Jun/2018:3:46:49 snisiut] \"COPY https://www.example.com/quas/occaeca.htm?ender=dico#uptatem upt\" 10.166.160.217 olor radip \"rchitect\" Dui iameaqu 2429 \"https://api.example.com/asnulap/yCiceroi.jpg?ender=inc#tect\" \"Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16\" deny", - "file.name": "rchitect", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/asnulap/yCiceroi.jpg?ender=inc#tect", - "input.type": "log", - "log.offset": 24005, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "www.example.com" - ], - "related.ip": [ - "10.166.160.217", - "10.219.245.58" - ], - "related.user": [ - "radip" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "deny" - ], - "rsa.misc.content_type": "iameaqu", - "rsa.misc.result_code": "Dui", - "rsa.network.domain": "www.example.com", - "rsa.network.network_service": "upt", - "rsa.time.event_time": "2018-06-19T05:46:49.000Z", - "rsa.web.alias_host": "www.example.com", - "rsa.web.web_ref_domain": "api.example.com", - "rsa.web.web_ref_query": "ender=inc", - "server.domain": "www.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "www", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 2429, - "source.ip": "10.219.245.58", - "source.port": 7073, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "uptatem", - "url.original": "https://www.example.com/quas/occaeca.htm?ender=dico#uptatem", - "url.path": [ - "/quas/occaeca.htm", - "https://api.example.com" - ], - "url.query": "ender=dico", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "radip", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2018-07-03T12:49:23.000Z", - "destination.ip": "10.183.243.246", - "event.action": "cancel", - "event.code": "UNLOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.121.121.153 723 [03/Jul/2018:10:49:23 smoditem] \"UNLOCK https://www5.example.org/uidolo/umdolore.jpg?oquisq=abori#sit catcu\" 10.183.243.246 amni tatio \"amquisno\" modoc magnam 3267 \"https://example.com/idatat/onev.html?lesti=oreseo#reprehen\" \"Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" cancel", - "file.name": "amquisno", - "fileset.name": "log", - "http.request.referrer": "https://example.com/idatat/onev.html?lesti=oreseo#reprehen", - "input.type": "log", - "log.offset": 24338, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "www5.example.org" - ], - "related.ip": [ - "10.121.121.153", - "10.183.243.246" - ], - "related.user": [ - "tatio" - ], - "rsa.internal.messageid": "UNLOCK", - "rsa.misc.action": [ - "UNLOCK", - "cancel" - ], - "rsa.misc.content_type": "magnam", - "rsa.misc.result_code": "modoc", - "rsa.network.domain": "www5.example.org", - "rsa.network.network_service": "catcu", - "rsa.time.event_time": "2018-07-03T12:49:23.000Z", - "rsa.web.alias_host": "www5.example.org", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "lesti=oreseo", - "server.domain": "www5.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www5", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 3267, - "source.ip": "10.121.121.153", - "source.port": 723, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.org", - "url.extension": "jpg", - "url.fragment": "sit", - "url.original": "https://www5.example.org/uidolo/umdolore.jpg?oquisq=abori#sit", - "url.path": [ - "/uidolo/umdolore.jpg", - "https://example.com" - ], - "url.query": "oquisq=abori", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "tatio", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-07-17T07:51:58.000Z", - "destination.ip": "10.202.224.209", - "event.action": "cancel", - "event.code": "OPTIONS", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.54.5.47 1585 [17/Jul/2018:5:51:58 mmodi] \"OPTIONS https://internal.example.net/eniamqu/inimav.htm?imadm=uta#tisu remagnam\" 10.202.224.209 iusmodit aturv \"ectetura\" obeataev umf 3141 \"https://www.example.com/quaeabil/emip.htm?urExc=tDuis#iqu\" \"Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36\" cancel", - "file.name": "ectetura", - "fileset.name": "log", - "http.request.referrer": "https://www.example.com/quaeabil/emip.htm?urExc=tDuis#iqu", - "input.type": "log", - "log.offset": 24774, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.net", - "www.example.com" - ], - "related.ip": [ - "10.202.224.209", - "10.54.5.47" - ], - "related.user": [ - "aturv" - ], - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "OPTIONS", - "cancel" - ], - "rsa.misc.content_type": "umf", - "rsa.misc.result_code": "obeataev", - "rsa.network.domain": "internal.example.net", - "rsa.network.network_service": "remagnam", - "rsa.time.event_time": "2018-07-17T07:51:58.000Z", - "rsa.web.alias_host": "internal.example.net", - "rsa.web.web_ref_domain": "www.example.com", - "rsa.web.web_ref_query": "urExc=tDuis", - "server.domain": "internal.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "internal", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 3141, - "source.ip": "10.54.5.47", - "source.port": 1585, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.net", - "url.extension": "htm", - "url.fragment": "tisu", - "url.original": "https://internal.example.net/eniamqu/inimav.htm?imadm=uta#tisu", - "url.path": [ - "/eniamqu/inimav.htm", - "https://www.example.com" - ], - "url.query": "imadm=uta", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "aturv", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2018-08-01T14:54:32.000Z", - "destination.ip": "10.170.234.233", - "event.action": "allow", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.72.99.69 3172 [01/Aug/2018:12:54:32 oremeumf] \"PROPFIND https://mail.example.net/sintocca/mipsumqu.htm?tnulapar=ico#giatquo lors\" 10.170.234.233 accus uatu \"mquis\" lab uido 2046 \"https://mail.example.com/tena/aal.jpg?CSedu=mcol#lup\" \"Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" allow", - "file.name": "mquis", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/tena/aal.jpg?CSedu=mcol#lup", - "input.type": "log", - "log.offset": 25173, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.com", - "mail.example.net" - ], - "related.ip": [ - "10.170.234.233", - "10.72.99.69" - ], - "related.user": [ - "uatu" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "allow" - ], - "rsa.misc.content_type": "uido", - "rsa.misc.result_code": "lab", - "rsa.network.domain": "mail.example.net", - "rsa.network.network_service": "lors", - "rsa.time.event_time": "2018-08-01T14:54:32.000Z", - "rsa.web.alias_host": "mail.example.net", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "CSedu=mcol", - "server.domain": "mail.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "mail", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2046, - "source.ip": "10.72.99.69", - "source.port": 3172, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.net", - "url.extension": "htm", - "url.fragment": "giatquo", - "url.original": "https://mail.example.net/sintocca/mipsumqu.htm?tnulapar=ico#giatquo", - "url.path": [ - "/sintocca/mipsumqu.htm", - "https://mail.example.com" - ], - "url.query": "tnulapar=ico", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "uatu", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-08-15T09:57:06.000Z", - "destination.ip": "10.142.130.227", - "event.action": "allow", - "event.code": "DELETE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.245.240.47 4017 [15/Aug/2018:7:57:06 itaedict] \"DELETE https://api.example.org/rep/remap.html?siarc=fdeFin#eleumi edic\" 10.142.130.227 olabori odic \"iuta\" liquaUte scivelit 7795 \"https://internal.example.net/scipit/lloinve.htm?evolup=rvelil#isiutali\" \"Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" allow", - "file.name": "iuta", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/scipit/lloinve.htm?evolup=rvelil#isiutali", - "input.type": "log", - "log.offset": 25542, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "internal.example.net" - ], - "related.ip": [ - "10.142.130.227", - "10.245.240.47" - ], - "related.user": [ - "odic" - ], - "rsa.internal.messageid": "DELETE", - "rsa.misc.action": [ - "DELETE", - "allow" - ], - "rsa.misc.content_type": "scivelit", - "rsa.misc.result_code": "liquaUte", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "edic", - "rsa.time.event_time": "2018-08-15T09:57:06.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "internal.example.net", - "rsa.web.web_ref_query": "evolup=rvelil", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 7795, - "source.ip": "10.245.240.47", - "source.port": 4017, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "html", - "url.fragment": "eleumi", - "url.original": "https://api.example.org/rep/remap.html?siarc=fdeFin#eleumi", - "url.path": [ - "/rep/remap.html", - "https://internal.example.net" - ], - "url.query": "siarc=fdeFin", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "odic", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-08-29T04:59:40.000Z", - "destination.ip": "10.61.110.7", - "event.action": "deny", - "event.code": "DELETE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.62.188.193 4104 [29/Aug/2018:2:59:40 atu] \"DELETE https://api.example.net/eturad/tDuis.htm?enimadmi=tateveli#osa mini\" 10.61.110.7 oremque quaU \"ufugi\" cin tmo 508 \"https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex\" \"Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10\" deny", - "file.name": "ufugi", - "fileset.name": "log", - "http.request.referrer": "https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex", - "input.type": "log", - "log.offset": 25999, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "example.com" - ], - "related.ip": [ - "10.61.110.7", - "10.62.188.193" - ], - "related.user": [ - "quaU" - ], - "rsa.internal.messageid": "DELETE", - "rsa.misc.action": [ - "DELETE", - "deny" - ], - "rsa.misc.content_type": "tmo", - "rsa.misc.result_code": "cin", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "mini", - "rsa.time.event_time": "2018-08-29T04:59:40.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "iavol=natuserr", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 508, - "source.ip": "10.62.188.193", - "source.port": 4104, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "htm", - "url.fragment": "osa", - "url.original": "https://api.example.net/eturad/tDuis.htm?enimadmi=tateveli#osa", - "url.path": [ - "/eturad/tDuis.htm", - "https://example.com" - ], - "url.query": "enimadmi=tateveli", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "quaU", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2018-09-12T12:02:15.000Z", - "destination.ip": "10.68.198.188", - "event.action": "block", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.172.139.78 6533 [12/Sep/2018:10:02:15 lamco] \"COPY https://www.example.net/hender/ptatemU.htm?mquisnos=tnulapa#madmi tlabore\" 10.68.198.188 doeiu onsectet \"dentsunt\" inea animid 2119 \"https://mail.example.net/onnumqua/quioff.html?upt=atatnonp#nvol\" \"Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61\" block", - "file.name": "dentsunt", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.net/onnumqua/quioff.html?upt=atatnonp#nvol", - "input.type": "log", - "log.offset": 26383, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.net", - "www.example.net" - ], - "related.ip": [ - "10.172.139.78", - "10.68.198.188" - ], - "related.user": [ - "onsectet" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "block" - ], - "rsa.misc.content_type": "animid", - "rsa.misc.result_code": "inea", - "rsa.network.domain": "www.example.net", - "rsa.network.network_service": "tlabore", - "rsa.time.event_time": "2018-09-12T12:02:15.000Z", - "rsa.web.alias_host": "www.example.net", - "rsa.web.web_ref_domain": "mail.example.net", - "rsa.web.web_ref_query": "upt=atatnonp", - "server.domain": "www.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2119, - "source.ip": "10.172.139.78", - "source.port": 6533, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.net", - "url.extension": "htm", - "url.fragment": "madmi", - "url.original": "https://www.example.net/hender/ptatemU.htm?mquisnos=tnulapa#madmi", - "url.path": [ - "/hender/ptatemU.htm", - "https://mail.example.net" - ], - "url.query": "mquisnos=tnulapa", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "onsectet", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2018-09-27T07:04:49.000Z", - "destination.ip": "10.169.63.169", - "event.action": "block", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.172.47.7 2805 [27/Sep/2018:5:04:49 midest] \"CONNECT https://www.example.org/iduntutl/rsitam.htm?ntor=oinBCSed#oid rchit\" 10.169.63.169 ariat midestl \"quatu\" avolu teturad 3465 \"https://api.example.net/iquaUten/prehende.gif?rpo=velites#nonpro\" \"Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16\" block", - "file.name": "quatu", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/iquaUten/prehende.gif?rpo=velites#nonpro", - "input.type": "log", - "log.offset": 26828, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "www.example.org" - ], - "related.ip": [ - "10.169.63.169", - "10.172.47.7" - ], - "related.user": [ - "midestl" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "block" - ], - "rsa.misc.content_type": "teturad", - "rsa.misc.result_code": "avolu", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "rchit", - "rsa.time.event_time": "2018-09-27T07:04:49.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "api.example.net", - "rsa.web.web_ref_query": "rpo=velites", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 3465, - "source.ip": "10.172.47.7", - "source.port": 2805, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "htm", - "url.fragment": "oid", - "url.original": "https://www.example.org/iduntutl/rsitam.htm?ntor=oinBCSed#oid", - "url.path": [ - "/iduntutl/rsitam.htm", - "https://api.example.net" - ], - "url.query": "ntor=oinBCSed", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "midestl", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2018-10-11T14:07:23.000Z", - "destination.ip": "10.62.10.137", - "event.action": "cancel", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.32.98.109 5012 [11/Oct/2018:12:07:23 dexercit] \"PURGE https://example.org/itessequ/porissu.html?uip=ectobea#dat aUtenima\" 10.62.10.137 eeufugi deomnisi \"olupta\" oll laboree 3880 \"https://api.example.org/cupidata/stiaecon.htm?rsint=itl#ttenb\" \"Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" cancel", - "file.name": "olupta", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/cupidata/stiaecon.htm?rsint=itl#ttenb", - "input.type": "log", - "log.offset": 27172, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "example.org" - ], - "related.ip": [ - "10.32.98.109", - "10.62.10.137" - ], - "related.user": [ - "deomnisi" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "cancel" - ], - "rsa.misc.content_type": "laboree", - "rsa.misc.result_code": "oll", - "rsa.network.domain": "example.org", - "rsa.network.network_service": "aUtenima", - "rsa.time.event_time": "2018-10-11T14:07:23.000Z", - "rsa.web.alias_host": "example.org", - "rsa.web.web_ref_domain": "api.example.org", - "rsa.web.web_ref_query": "rsint=itl", - "server.domain": "example.org", - "server.registered_domain": "example.org", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 3880, - "source.ip": "10.32.98.109", - "source.port": 5012, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.org", - "url.extension": "html", - "url.fragment": "dat", - "url.original": "https://example.org/itessequ/porissu.html?uip=ectobea#dat", - "url.path": [ - "/itessequ/porissu.html", - "https://api.example.org" - ], - "url.query": "uip=ectobea", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.top_level_domain": "org", - "user.name": "deomnisi", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-10-25T09:09:57.000Z", - "destination.ip": "10.255.40.12", - "event.action": "deny", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.176.62.146 5945 [25/Oct/2018:7:09:57 lors] \"COPY https://api.example.net/enimad/tis.txt?mipsumq=ident#nimide quelaud\" 10.255.40.12 rro oeiusmo \"nimv\" emeu tatemac 5192 \"https://www5.example.com/teursint/etMa.gif?lamcolab=ceroinB#umqui\" \"Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90\" deny", - "file.name": "nimv", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/teursint/etMa.gif?lamcolab=ceroinB#umqui", - "input.type": "log", - "log.offset": 27547, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "www5.example.com" - ], - "related.ip": [ - "10.176.62.146", - "10.255.40.12" - ], - "related.user": [ - "oeiusmo" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "deny" - ], - "rsa.misc.content_type": "tatemac", - "rsa.misc.result_code": "emeu", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "quelaud", - "rsa.time.event_time": "2018-10-25T09:09:57.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "lamcolab=ceroinB", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 5192, - "source.ip": "10.176.62.146", - "source.port": 5945, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "txt", - "url.fragment": "nimide", - "url.original": "https://api.example.net/enimad/tis.txt?mipsumq=ident#nimide", - "url.path": [ - "/enimad/tis.txt", - "https://www5.example.com" - ], - "url.query": "mipsumq=ident", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "oeiusmo", - "user_agent.device.name": "U20", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "44.0.2403.147" - }, - { - "@timestamp": "2018-11-09T04:12:32.000Z", - "destination.ip": "10.88.98.31", - "event.action": "deny", - "event.code": "GET", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.194.198.46 3387 [09/Nov/2018:2:12:32 cta] \"GET https://api.example.org/taspe/yCiceroi.htm?cti=ommodoc#nse mveniam\" tuser 2694 \"https://internal.example.com/tlaboru/aeabillo.txt?equuntu=quamni#turveli\" \"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]\" deny 10.88.98.31 rured 105.243000", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/tlaboru/aeabillo.txt?equuntu=quamni#turveli", - "input.type": "log", - "log.offset": 27967, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "internal.example.com" - ], - "related.ip": [ - "10.194.198.46", - "10.88.98.31" - ], - "rsa.internal.messageid": "GET", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "GET", - "deny" - ], - "rsa.misc.content_type": "rured", - "rsa.misc.result_code": "tuser", - "rsa.network.domain": "api.example.org", - "rsa.network.network_service": "mveniam", - "rsa.time.duration_time": 105.243, - "rsa.time.event_time": "2018-11-09T04:12:32.000Z", - "rsa.web.alias_host": "api.example.org", - "rsa.web.web_ref_domain": "internal.example.com", - "rsa.web.web_ref_query": "equuntu=quamni", - "server.domain": "api.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "api", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 2694, - "source.ip": "10.194.198.46", - "source.port": 3387, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.org", - "url.extension": "htm", - "url.fragment": "nse", - "url.original": "https://api.example.org/taspe/yCiceroi.htm?cti=ommodoc#nse", - "url.path": [ - "/taspe/yCiceroi.htm", - "https://internal.example.com" - ], - "url.query": "cti=ommodoc", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2018-11-23T11:15:06.000Z", - "destination.ip": "10.1.27.133", - "event.action": "block", - "event.code": "OPTIONS", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.5.49.20 7503 [23/Nov/2018:9:15:06 macc] \"OPTIONS https://example.com/beat/rro.jpg?uisau=qua#iarchite emsequi\" 10.1.27.133 edqu tationu \"gnaaliq\" olore ntutlab 6881 \"https://www5.example.com/gnama/esciun.html?ratvo=ntutl#volupt\" \"Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30\" block", - "file.name": "gnaaliq", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/gnama/esciun.html?ratvo=ntutl#volupt", - "input.type": "log", - "log.offset": 28483, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "www5.example.com" - ], - "related.ip": [ - "10.1.27.133", - "10.5.49.20" - ], - "related.user": [ - "tationu" - ], - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "OPTIONS", - "block" - ], - "rsa.misc.content_type": "ntutlab", - "rsa.misc.result_code": "olore", - "rsa.network.domain": "example.com", - "rsa.network.network_service": "emsequi", - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "rsa.web.alias_host": "example.com", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "ratvo=ntutl", - "server.domain": "example.com", - "server.registered_domain": "example.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 6881, - "source.ip": "10.5.49.20", - "source.port": 7503, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.com", - "url.extension": "jpg", - "url.fragment": "iarchite", - "url.original": "https://example.com/beat/rro.jpg?uisau=qua#iarchite", - "url.path": [ - "/beat/rro.jpg", - "https://www5.example.com" - ], - "url.query": "uisau=qua", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.top_level_domain": "com", - "user.name": "tationu", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2018-12-07T06:17:40.000Z", - "destination.ip": "10.70.244.155", - "event.action": "accept", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.11.73.145 6972 [07/Dec/2018:4:17:40 uisautem] \"POST https://www5.example.org/loremq/turmagni.txt?emUtenim=ende#dexea aco\" 10.70.244.155 olorsi caboNemo \"uptas\" temaccus ons 2160 \"https://internal.example.com/ctetur/mvolupta.html?oreeu=mea#ssec\" \"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]\" accept", - "file.name": "uptas", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/ctetur/mvolupta.html?oreeu=mea#ssec", - "input.type": "log", - "log.offset": 28908, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.com", - "www5.example.org" - ], - "related.ip": [ - "10.11.73.145", - "10.70.244.155" - ], - "related.user": [ - "caboNemo" - ], - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "accept" - ], - "rsa.misc.content_type": "ons", - "rsa.misc.result_code": "temaccus", - "rsa.network.domain": "www5.example.org", - "rsa.network.network_service": "aco", - "rsa.time.event_time": "2018-12-07T06:17:40.000Z", - "rsa.web.alias_host": "www5.example.org", - "rsa.web.web_ref_domain": "internal.example.com", - "rsa.web.web_ref_query": "oreeu=mea", - "server.domain": "www5.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www5", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 2160, - "source.ip": "10.11.73.145", - "source.port": 6972, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.org", - "url.extension": "txt", - "url.fragment": "dexea", - "url.original": "https://www5.example.org/loremq/turmagni.txt?emUtenim=ende#dexea", - "url.path": [ - "/loremq/turmagni.txt", - "https://internal.example.com" - ], - "url.query": "emUtenim=ende", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "caboNemo", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2018-12-21T13:20:14.000Z", - "destination.ip": "10.121.80.158", - "event.action": "accept", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.204.214.98 985 [21/Dec/2018:11:20:14 equ] \"PURGE https://www5.example.net/deomnisi/ddoe.txt?oremi=ectobeat#ecte abo\" 10.121.80.158 boriosa cillumdo \"ditau\" moenimip uames 7663 \"https://internal.example.com/lor/oreeu.html?eturadip=nost#atus\" \"Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" accept", - "file.name": "ditau", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/lor/oreeu.html?eturadip=nost#atus", - "input.type": "log", - "log.offset": 29441, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.com", - "www5.example.net" - ], - "related.ip": [ - "10.121.80.158", - "10.204.214.98" - ], - "related.user": [ - "cillumdo" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "accept" - ], - "rsa.misc.content_type": "uames", - "rsa.misc.result_code": "moenimip", - "rsa.network.domain": "www5.example.net", - "rsa.network.network_service": "abo", - "rsa.time.event_time": "2018-12-21T13:20:14.000Z", - "rsa.web.alias_host": "www5.example.net", - "rsa.web.web_ref_domain": "internal.example.com", - "rsa.web.web_ref_query": "eturadip=nost", - "server.domain": "www5.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www5", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 7663, - "source.ip": "10.204.214.98", - "source.port": 985, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.net", - "url.extension": "txt", - "url.fragment": "ecte", - "url.original": "https://www5.example.net/deomnisi/ddoe.txt?oremi=ectobeat#ecte", - "url.path": [ - "/deomnisi/ddoe.txt", - "https://internal.example.com" - ], - "url.query": "oremi=ectobeat", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "cillumdo", - "user_agent.device.name": "Samsung SM-S337TL", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "destination.ip": "10.139.151.19", - "event.action": "block", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.74.115.33 4006 [05/Jan/2019:6:22:49 nsequat] \"PURGE https://api.example.net/tiset/sci.jpg?rauto=doloreeu#lors eumfu\" 10.139.151.19 eumf roquisq \"uasi\" maveniam uis 5533 \"https://www.example.com/imi/animi.htm?ama=tatnonp#ntiumt\" \"Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10\" block", - "file.name": "uasi", - "fileset.name": "log", - "http.request.referrer": "https://www.example.com/imi/animi.htm?ama=tatnonp#ntiumt", - "input.type": "log", - "log.offset": 29818, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "www.example.com" - ], - "related.ip": [ - "10.139.151.19", - "10.74.115.33" - ], - "related.user": [ - "roquisq" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "block" - ], - "rsa.misc.content_type": "uis", - "rsa.misc.result_code": "maveniam", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "eumfu", - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "www.example.com", - "rsa.web.web_ref_query": "ama=tatnonp", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 5533, - "source.ip": "10.74.115.33", - "source.port": 4006, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "jpg", - "url.fragment": "lors", - "url.original": "https://api.example.net/tiset/sci.jpg?rauto=doloreeu#lors", - "url.path": [ - "/tiset/sci.jpg", - "https://www.example.com" - ], - "url.query": "rauto=doloreeu", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "roquisq", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2019-01-19T03:25:23.000Z", - "destination.ip": "10.242.48.203", - "event.action": "deny", - "event.code": "DELETE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.191.220.1 6454 [19/Jan/2019:1:25:23 ctetura] \"DELETE https://api.example.net/tDuisau/aturve.htm?tper=pisciv#tconsect pariat\" 10.242.48.203 ctobeat isi \"idexeac\" ntu tdolo 3872 \"https://mail.example.com/olupt/ola.jpg?etquasia=qua#adm\" \"Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36\" deny", - "file.name": "idexeac", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/olupt/ola.jpg?etquasia=qua#adm", - "input.type": "log", - "log.offset": 30261, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "mail.example.com" - ], - "related.ip": [ - "10.191.220.1", - "10.242.48.203" - ], - "related.user": [ - "isi" - ], - "rsa.internal.messageid": "DELETE", - "rsa.misc.action": [ - "DELETE", - "deny" - ], - "rsa.misc.content_type": "tdolo", - "rsa.misc.result_code": "ntu", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "pariat", - "rsa.time.event_time": "2019-01-19T03:25:23.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "etquasia=qua", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 3872, - "source.ip": "10.191.220.1", - "source.port": 6454, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "htm", - "url.fragment": "tconsect", - "url.original": "https://api.example.net/tDuisau/aturve.htm?tper=pisciv#tconsect", - "url.path": [ - "/tDuisau/aturve.htm", - "https://mail.example.com" - ], - "url.query": "tper=pisciv", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "isi", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-02-02T10:27:57.000Z", - "destination.ip": "10.254.10.98", - "event.action": "accept", - "event.code": "PROPATCH", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.109.88.27 5568 [02/Feb/2019:8:27:57 cidu] \"PROPATCH https://internal.example.com/oluptate/todi.jpg?tdolo=ident#scip eacommod\" 10.254.10.98 adipisc aparia \"maliq\" ccusant epteurs 6661 \"https://www5.example.org/oditau/onsec.gif?temqui=lup#aeca\" \"Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36\" accept", - "file.name": "maliq", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/oditau/onsec.gif?temqui=lup#aeca", - "input.type": "log", - "log.offset": 30622, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.com", - "www5.example.org" - ], - "related.ip": [ - "10.109.88.27", - "10.254.10.98" - ], - "related.user": [ - "aparia" - ], - "rsa.internal.messageid": "PROPATCH", - "rsa.misc.action": [ - "PROPATCH", - "accept" - ], - "rsa.misc.content_type": "epteurs", - "rsa.misc.result_code": "ccusant", - "rsa.network.domain": "internal.example.com", - "rsa.network.network_service": "eacommod", - "rsa.time.event_time": "2019-02-02T10:27:57.000Z", - "rsa.web.alias_host": "internal.example.com", - "rsa.web.web_ref_domain": "www5.example.org", - "rsa.web.web_ref_query": "temqui=lup", - "server.domain": "internal.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "internal", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 6661, - "source.ip": "10.109.88.27", - "source.port": 5568, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.com", - "url.extension": "jpg", - "url.fragment": "scip", - "url.original": "https://internal.example.com/oluptate/todi.jpg?tdolo=ident#scip", - "url.path": [ - "/oluptate/todi.jpg", - "https://www5.example.org" - ], - "url.query": "tdolo=ident", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "aparia", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "destination.ip": "10.175.138.42", - "event.action": "deny", - "event.code": "LOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.5.148.114 4749 [17/Feb/2019:3:30:32 ntin] \"LOCK https://mail.example.com/radipis/lore.html?civeli=eufugia#utlabore tamr\" 10.175.138.42 olore onemul \"trudexe\" remeum etur 890 \"https://mail.example.org/quiav/ctionofd.gif?Finibus=uisautei#nevolu\" \"Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" deny", - "file.name": "trudexe", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.org/quiav/ctionofd.gif?Finibus=uisautei#nevolu", - "input.type": "log", - "log.offset": 31020, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.com", - "mail.example.org" - ], - "related.ip": [ - "10.175.138.42", - "10.5.148.114" - ], - "related.user": [ - "onemul" - ], - "rsa.internal.messageid": "LOCK", - "rsa.misc.action": [ - "LOCK", - "deny" - ], - "rsa.misc.content_type": "etur", - "rsa.misc.result_code": "remeum", - "rsa.network.domain": "mail.example.com", - "rsa.network.network_service": "tamr", - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "rsa.web.alias_host": "mail.example.com", - "rsa.web.web_ref_domain": "mail.example.org", - "rsa.web.web_ref_query": "Finibus=uisautei", - "server.domain": "mail.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "mail", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 890, - "source.ip": "10.5.148.114", - "source.port": 4749, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.com", - "url.extension": "html", - "url.fragment": "utlabore", - "url.original": "https://mail.example.com/radipis/lore.html?civeli=eufugia#utlabore", - "url.path": [ - "/radipis/lore.html", - "https://mail.example.org" - ], - "url.query": "civeli=eufugia", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "onemul", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "destination.ip": "10.18.199.203", - "event.action": "allow", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.0.0.240 1795 [03/Mar/2019:10:33:06 psa] \"PROPFIND https://internal.example.org/olupta/tio.jpg?idestl=litani#emp arch\" 10.18.199.203 ugits ittenb \"tobeatae\" ntut llum 366 \"https://example.com/equat/estiaec.htm?mquido=ende#ntmollit\" \"Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" allow", - "file.name": "tobeatae", - "fileset.name": "log", - "http.request.referrer": "https://example.com/equat/estiaec.htm?mquido=ende#ntmollit", - "input.type": "log", - "log.offset": 31401, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "internal.example.org" - ], - "related.ip": [ - "10.0.0.240", - "10.18.199.203" - ], - "related.user": [ - "ittenb" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "allow" - ], - "rsa.misc.content_type": "llum", - "rsa.misc.result_code": "ntut", - "rsa.network.domain": "internal.example.org", - "rsa.network.network_service": "arch", - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "rsa.web.alias_host": "internal.example.org", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "mquido=ende", - "server.domain": "internal.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "internal", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 366, - "source.ip": "10.0.0.240", - "source.port": 1795, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.org", - "url.extension": "jpg", - "url.fragment": "emp", - "url.original": "https://internal.example.org/olupta/tio.jpg?idestl=litani#emp", - "url.path": [ - "/olupta/tio.jpg", - "https://example.com" - ], - "url.query": "idestl=litani", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "org", - "user.name": "ittenb", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-03-17T07:35:40.000Z", - "destination.ip": "10.73.80.251", - "event.action": "allow", - "event.code": "NONE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.1.220.47 6685 [17/Mar/2019:5:35:40 mipsamv] \"NONE https://www5.example.com/sequines/cto.gif?temaccu=uamqua#Neq runt\" 10.73.80.251 pteurs ercitati \"atem\" serro lumquid 5939 \"https://www5.example.org/imaveni/equ.htm?ssequamn=ave#taliqui\" \"Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]\" allow", - "file.name": "atem", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/imaveni/equ.htm?ssequamn=ave#taliqui", - "input.type": "log", - "log.offset": 31762, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www5.example.com", - "www5.example.org" - ], - "related.ip": [ - "10.1.220.47", - "10.73.80.251" - ], - "related.user": [ - "ercitati" - ], - "rsa.internal.messageid": "NONE", - "rsa.misc.action": [ - "NONE", - "allow" - ], - "rsa.misc.content_type": "lumquid", - "rsa.misc.result_code": "serro", - "rsa.network.domain": "www5.example.com", - "rsa.network.network_service": "runt", - "rsa.time.event_time": "2019-03-17T07:35:40.000Z", - "rsa.web.alias_host": "www5.example.com", - "rsa.web.web_ref_domain": "www5.example.org", - "rsa.web.web_ref_query": "ssequamn=ave", - "server.domain": "www5.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "www5", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 5939, - "source.ip": "10.1.220.47", - "source.port": 6685, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.com", - "url.extension": "gif", - "url.fragment": "Neq", - "url.original": "https://www5.example.com/sequines/cto.gif?temaccu=uamqua#Neq", - "url.path": [ - "/sequines/cto.gif", - "https://www5.example.org" - ], - "url.query": "temaccu=uamqua", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "ercitati", - "user_agent.device.name": "Samsung SM-A715F", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2019-04-01T14:38:14.000Z", - "destination.ip": "10.22.34.206", - "event.action": "block", - "event.code": "PURGE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.153.109.61 7499 [01/Apr/2019:12:38:14 numq] \"PURGE https://www.example.net/periam/ain.gif?iquipex=mqu#onorume abill\" 10.22.34.206 mini mve \"tionev\" uasiarch velites 1745 \"https://api.example.org/equa/edquiaco.gif?olorsit=naaliq#plica\" \"Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" block", - "file.name": "tionev", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/equa/edquiaco.gif?olorsit=naaliq#plica", - "input.type": "log", - "log.offset": 32212, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "www.example.net" - ], - "related.ip": [ - "10.153.109.61", - "10.22.34.206" - ], - "related.user": [ - "mve" - ], - "rsa.internal.messageid": "PURGE", - "rsa.misc.action": [ - "PURGE", - "block" - ], - "rsa.misc.content_type": "velites", - "rsa.misc.result_code": "uasiarch", - "rsa.network.domain": "www.example.net", - "rsa.network.network_service": "abill", - "rsa.time.event_time": "2019-04-01T14:38:14.000Z", - "rsa.web.alias_host": "www.example.net", - "rsa.web.web_ref_domain": "api.example.org", - "rsa.web.web_ref_query": "olorsit=naaliq", - "server.domain": "www.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 1745, - "source.ip": "10.153.109.61", - "source.port": 7499, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.net", - "url.extension": "gif", - "url.fragment": "onorume", - "url.original": "https://www.example.net/periam/ain.gif?iquipex=mqu#onorume", - "url.path": [ - "/periam/ain.gif", - "https://api.example.org" - ], - "url.query": "iquipex=mqu", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "mve", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "destination.ip": "10.199.103.185", - "event.action": "allow", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.62.168.226 5334 [15/Apr/2019:7:40:49 bori] \"CONNECT https://www.example.net/ecatc/quovolu.jpg?dexe=nemul#Duis lupt\" 10.199.103.185 uipe ipsa \"con\" eirured sequamn 5243 \"https://mail.example.com/ciatisun/duntutl.htm?didun=riaturEx#nde\" \"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]\" allow", - "file.name": "con", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/ciatisun/duntutl.htm?didun=riaturEx#nde", - "input.type": "log", - "log.offset": 32641, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.com", - "www.example.net" - ], - "related.ip": [ - "10.199.103.185", - "10.62.168.226" - ], - "related.user": [ - "ipsa" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "allow" - ], - "rsa.misc.content_type": "sequamn", - "rsa.misc.result_code": "eirured", - "rsa.network.domain": "www.example.net", - "rsa.network.network_service": "lupt", - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "rsa.web.alias_host": "www.example.net", - "rsa.web.web_ref_domain": "mail.example.com", - "rsa.web.web_ref_query": "didun=riaturEx", - "server.domain": "www.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 5243, - "source.ip": "10.62.168.226", - "source.port": 5334, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.net", - "url.extension": "jpg", - "url.fragment": "Duis", - "url.original": "https://www.example.net/ecatc/quovolu.jpg?dexe=nemul#Duis", - "url.path": [ - "/ecatc/quovolu.jpg", - "https://mail.example.com" - ], - "url.query": "dexe=nemul", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "ipsa", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2019-04-29T04:43:23.000Z", - "destination.ip": "10.128.84.27", - "event.action": "block", - "event.code": "COPY", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.97.33.56 3541 [29/Apr/2019:2:43:23 rad] \"COPY https://example.com/tqui/ssequ.gif?emse=emqui#cipitla tlab\" 10.128.84.27 nula ptate \"volupta\" umfu utla 2478 \"https://www5.example.com/dolo/velites.gif?equa=apari#tsunt\" \"Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36\" block", - "file.name": "volupta", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/dolo/velites.gif?equa=apari#tsunt", - "input.type": "log", - "log.offset": 33163, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "www5.example.com" - ], - "related.ip": [ - "10.128.84.27", - "10.97.33.56" - ], - "related.user": [ - "ptate" - ], - "rsa.internal.messageid": "COPY", - "rsa.misc.action": [ - "COPY", - "block" - ], - "rsa.misc.content_type": "utla", - "rsa.misc.result_code": "umfu", - "rsa.network.domain": "example.com", - "rsa.network.network_service": "tlab", - "rsa.time.event_time": "2019-04-29T04:43:23.000Z", - "rsa.web.alias_host": "example.com", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "equa=apari", - "server.domain": "example.com", - "server.registered_domain": "example.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 2478, - "source.ip": "10.97.33.56", - "source.port": 3541, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.com", - "url.extension": "gif", - "url.fragment": "cipitla", - "url.original": "https://example.com/tqui/ssequ.gif?emse=emqui#cipitla", - "url.path": [ - "/tqui/ssequ.gif", - "https://www5.example.com" - ], - "url.query": "emse=emqui", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.top_level_domain": "com", - "user.name": "ptate", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2019-05-13T11:45:57.000Z", - "destination.ip": "10.115.154.104", - "event.action": "allow", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.49.169.175 2103 [13/May/2019:9:45:57 sistena] \"HEAD https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost sequines\" 10.115.154.104 illum ore \"spici\" Sedut tatis 7767 \"https://www5.example.com/sequines/minimve.gif?toditau=uiad#nvolupta\" \"Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36\" allow", - "file.name": "spici", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.com/sequines/minimve.gif?toditau=uiad#nvolupta", - "input.type": "log", - "log.offset": 33516, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "www5.example.com" - ], - "related.ip": [ - "10.115.154.104", - "10.49.169.175" - ], - "related.user": [ - "ore" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "allow" - ], - "rsa.misc.content_type": "tatis", - "rsa.misc.result_code": "Sedut", - "rsa.network.domain": "example.com", - "rsa.network.network_service": "sequines", - "rsa.time.event_time": "2019-05-13T11:45:57.000Z", - "rsa.web.alias_host": "example.com", - "rsa.web.web_ref_domain": "www5.example.com", - "rsa.web.web_ref_query": "toditau=uiad", - "server.domain": "example.com", - "server.registered_domain": "example.com", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 7767, - "source.ip": "10.49.169.175", - "source.port": 2103, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.com", - "url.extension": "jpg", - "url.fragment": "quisnost", - "url.original": "https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost", - "url.path": [ - "/caboN/imipsam.jpg", - "https://www5.example.com" - ], - "url.query": "catcupid=ritquiin", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.top_level_domain": "com", - "user.name": "ore", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "destination.ip": "10.33.112.100", - "event.action": "block", - "event.code": "PROPFIND", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.213.100.153 2571 [28/May/2019:4:48:31 iatquo] \"PROPFIND https://www.example.org/oinvento/ali.htm?utaliqui=isciv#osqu ptatemse\" 10.33.112.100 catcup enimad \"magnaali\" velillum ionev 1594 \"https://internal.example.com/ameaq/Quis.html?lestiae=iav#umiure\" \"Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30\" block", - "file.name": "magnaali", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/ameaq/Quis.html?lestiae=iav#umiure", - "input.type": "log", - "log.offset": 33948, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.com", - "www.example.org" - ], - "related.ip": [ - "10.213.100.153", - "10.33.112.100" - ], - "related.user": [ - "enimad" - ], - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "PROPFIND", - "block" - ], - "rsa.misc.content_type": "ionev", - "rsa.misc.result_code": "velillum", - "rsa.network.domain": "www.example.org", - "rsa.network.network_service": "ptatemse", - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "rsa.web.alias_host": "www.example.org", - "rsa.web.web_ref_domain": "internal.example.com", - "rsa.web.web_ref_query": "lestiae=iav", - "server.domain": "www.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 1594, - "source.ip": "10.213.100.153", - "source.port": 2571, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.org", - "url.extension": "htm", - "url.fragment": "osqu", - "url.original": "https://www.example.org/oinvento/ali.htm?utaliqui=isciv#osqu", - "url.path": [ - "/oinvento/ali.htm", - "https://internal.example.com" - ], - "url.query": "utaliqui=isciv", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "enimad", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "destination.ip": "10.25.53.93", - "event.action": "cancel", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.216.143.226 2632 [11/Jun/2019:11:51:06 deomn] \"CONNECT https://api.example.net/quido/llo.htm?tpersp=assi#rch psa\" 10.25.53.93 tvolup oremeu \"lab\" lla urau 6127 \"https://example.net/equamni/atcupi.htm?onemull=mdo#labore\" \"Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30\" cancel", - "file.name": "lab", - "fileset.name": "log", - "http.request.referrer": "https://example.net/equamni/atcupi.htm?onemull=mdo#labore", - "input.type": "log", - "log.offset": 34344, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "example.net" - ], - "related.ip": [ - "10.216.143.226", - "10.25.53.93" - ], - "related.user": [ - "oremeu" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "cancel" - ], - "rsa.misc.content_type": "urau", - "rsa.misc.result_code": "lla", - "rsa.network.domain": "api.example.net", - "rsa.network.network_service": "psa", - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "rsa.web.alias_host": "api.example.net", - "rsa.web.web_ref_domain": "example.net", - "rsa.web.web_ref_query": "onemull=mdo", - "server.domain": "api.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "api", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 6127, - "source.ip": "10.216.143.226", - "source.port": 2632, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.net", - "url.extension": "htm", - "url.fragment": "rch", - "url.original": "https://api.example.net/quido/llo.htm?tpersp=assi#rch", - "url.path": [ - "/quido/llo.htm", - "https://example.net" - ], - "url.query": "tpersp=assi", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "oremeu", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2019-06-25T08:53:40.000Z", - "destination.ip": "10.246.115.57", - "event.action": "allow", - "event.code": "HEAD", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.139.195.188 893 [25/Jun/2019:6:53:40 aliquaU] \"HEAD https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti edictasu\" 10.246.115.57 edquiano mSecti \"henderi\" taevitae tevel 5926 \"https://example.com/ita/iquipexe.jpg?quamqua=quuntur#nihi\" \"Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" allow", - "file.name": "henderi", - "fileset.name": "log", - "http.request.referrer": "https://example.com/ita/iquipexe.jpg?quamqua=quuntur#nihi", - "input.type": "log", - "log.offset": 34709, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "www.example.net" - ], - "related.ip": [ - "10.139.195.188", - "10.246.115.57" - ], - "related.user": [ - "mSecti" - ], - "rsa.internal.messageid": "HEAD", - "rsa.investigations.ec_activity": "Request", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "HEAD", - "allow" - ], - "rsa.misc.content_type": "tevel", - "rsa.misc.result_code": "taevitae", - "rsa.network.domain": "www.example.net", - "rsa.network.network_service": "edictasu", - "rsa.time.event_time": "2019-06-25T08:53:40.000Z", - "rsa.web.alias_host": "www.example.net", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "quamqua=quuntur", - "server.domain": "www.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 5926, - "source.ip": "10.139.195.188", - "source.port": 893, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www.example.net", - "url.extension": "txt", - "url.fragment": "deriti", - "url.original": "https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti", - "url.path": [ - "/tvolu/imve.txt", - "https://example.com" - ], - "url.query": "gnaaliq=quam", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "mSecti", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "destination.ip": "10.82.148.126", - "event.action": "block", - "event.code": "NONE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.60.56.205 4345 [10/Jul/2019:1:56:14 writtenb] \"NONE https://www5.example.com/ugitsed/dminimve.htm?onse=uiac#tquii tesse\" 10.82.148.126 inBCSedu ita \"ade\" nihilmol nder 2214 \"https://api.example.net/uunturm/iatn.gif?tseddo=diduntut#rroq\" \"Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]\" block", - "file.name": "ade", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/uunturm/iatn.gif?tseddo=diduntut#rroq", - "input.type": "log", - "log.offset": 35079, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.net", - "www5.example.com" - ], - "related.ip": [ - "10.60.56.205", - "10.82.148.126" - ], - "related.user": [ - "ita" - ], - "rsa.internal.messageid": "NONE", - "rsa.misc.action": [ - "NONE", - "block" - ], - "rsa.misc.content_type": "nder", - "rsa.misc.result_code": "nihilmol", - "rsa.network.domain": "www5.example.com", - "rsa.network.network_service": "tesse", - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "rsa.web.alias_host": "www5.example.com", - "rsa.web.web_ref_domain": "api.example.net", - "rsa.web.web_ref_query": "tseddo=diduntut", - "server.domain": "www5.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "www5", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 2214, - "source.ip": "10.60.56.205", - "source.port": 4345, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.com", - "url.extension": "htm", - "url.fragment": "tquii", - "url.original": "https://www5.example.com/ugitsed/dminimve.htm?onse=uiac#tquii", - "url.path": [ - "/ugitsed/dminimve.htm", - "https://api.example.net" - ], - "url.query": "onse=uiac", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "ita", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "destination.ip": "10.6.11.124", - "event.action": "accept", - "event.code": "DELETE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.245.251.98 261 [24/Jul/2019:8:58:48 mremaper] \"DELETE https://api.example.com/ntium/ide.htm?tamrema=isautem#usan gnamali\" 10.6.11.124 edqui tvolu \"psu\" strud onsequ 5930 \"https://www5.example.net/iumto/sequatu.jpg?runtm=mdoloree#que\" \"Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36\" accept", - "file.name": "psu", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/iumto/sequatu.jpg?runtm=mdoloree#que", - "input.type": "log", - "log.offset": 35603, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "www5.example.net" - ], - "related.ip": [ - "10.245.251.98", - "10.6.11.124" - ], - "related.user": [ - "tvolu" - ], - "rsa.internal.messageid": "DELETE", - "rsa.misc.action": [ - "DELETE", - "accept" - ], - "rsa.misc.content_type": "onsequ", - "rsa.misc.result_code": "strud", - "rsa.network.domain": "api.example.com", - "rsa.network.network_service": "gnamali", - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "rsa.web.alias_host": "api.example.com", - "rsa.web.web_ref_domain": "www5.example.net", - "rsa.web.web_ref_query": "runtm=mdoloree", - "server.domain": "api.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "api", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 5930, - "source.ip": "10.245.251.98", - "source.port": 261, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.com", - "url.extension": "htm", - "url.fragment": "usan", - "url.original": "https://api.example.com/ntium/ide.htm?tamrema=isautem#usan", - "url.path": [ - "/ntium/ide.htm", - "https://www5.example.net" - ], - "url.query": "tamrema=isautem", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "tvolu", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2019-08-07T06:01:23.000Z", - "destination.ip": "10.145.25.55", - "event.action": "block", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.99.55.115 1537 [07/Aug/2019:4:01:23 exerci] \"CONNECT https://www5.example.org/iad/ngelits.jpg?mporin=orissusc#utaliqui uov\" 10.145.25.55 litsed lumd \"tiaec\" lorem iamquisn 2079 \"https://mail.example.org/aper/entor.txt?lumdol=edutper#utemve\" \"Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" block", - "file.name": "tiaec", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.org/aper/entor.txt?lumdol=edutper#utemve", - "input.type": "log", - "log.offset": 35983, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "mail.example.org", - "www5.example.org" - ], - "related.ip": [ - "10.145.25.55", - "10.99.55.115" - ], - "related.user": [ - "lumd" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "block" - ], - "rsa.misc.content_type": "iamquisn", - "rsa.misc.result_code": "lorem", - "rsa.network.domain": "www5.example.org", - "rsa.network.network_service": "uov", - "rsa.time.event_time": "2019-08-07T06:01:23.000Z", - "rsa.web.alias_host": "www5.example.org", - "rsa.web.web_ref_domain": "mail.example.org", - "rsa.web.web_ref_query": "lumdol=edutper", - "server.domain": "www5.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "www5", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 2079, - "source.ip": "10.99.55.115", - "source.port": 1537, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.org", - "url.extension": "jpg", - "url.fragment": "utaliqui", - "url.original": "https://www5.example.org/iad/ngelits.jpg?mporin=orissusc#utaliqui", - "url.path": [ - "/iad/ngelits.jpg", - "https://mail.example.org" - ], - "url.query": "mporin=orissusc", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "lumd", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-08-21T13:03:57.000Z", - "destination.ip": "10.6.88.105", - "event.action": "allow", - "event.code": "TRACE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.187.86.64 3325 [21/Aug/2019:11:03:57 atatn] \"TRACE https://mail.example.com/iatnulap/roi.htm?uine=loreeu#eprehe ddoeiusm\" 10.6.88.105 uptatemU rem \"onorumet\" iscivel rinci 249 \"https://internal.example.com/eriti/uptateve.htm?rema=mcol#tion\" \"Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36\" allow", - "file.name": "onorumet", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/eriti/uptateve.htm?rema=mcol#tion", - "input.type": "log", - "log.offset": 36362, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.com", - "mail.example.com" - ], - "related.ip": [ - "10.187.86.64", - "10.6.88.105" - ], - "related.user": [ - "rem" - ], - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "TRACE", - "allow" - ], - "rsa.misc.content_type": "rinci", - "rsa.misc.result_code": "iscivel", - "rsa.network.domain": "mail.example.com", - "rsa.network.network_service": "ddoeiusm", - "rsa.time.event_time": "2019-08-21T13:03:57.000Z", - "rsa.web.alias_host": "mail.example.com", - "rsa.web.web_ref_domain": "internal.example.com", - "rsa.web.web_ref_query": "rema=mcol", - "server.domain": "mail.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "mail", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 249, - "source.ip": "10.187.86.64", - "source.port": 3325, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.com", - "url.extension": "htm", - "url.fragment": "eprehe", - "url.original": "https://mail.example.com/iatnulap/roi.htm?uine=loreeu#eprehe", - "url.path": [ - "/iatnulap/roi.htm", - "https://internal.example.com" - ], - "url.query": "uine=loreeu", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "rem", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "destination.ip": "10.163.9.35", - "event.action": "accept", - "event.code": "CONNECT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.252.146.132 503 [05/Sep/2019:6:06:31 tat] \"CONNECT https://mail.example.org/turv/use.jpg?mtot=macc#illoin eursi\" 10.163.9.35 uatDu umq \"ipsu\" oremip ota 4562 \"https://example.com/epteurs/itse.jpg?modi=cip#tla\" \"Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36\" accept", - "file.name": "ipsu", - "fileset.name": "log", - "http.request.referrer": "https://example.com/epteurs/itse.jpg?modi=cip#tla", - "input.type": "log", - "log.offset": 36731, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "mail.example.org" - ], - "related.ip": [ - "10.163.9.35", - "10.252.146.132" - ], - "related.user": [ - "umq" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "CONNECT", - "accept" - ], - "rsa.misc.content_type": "ota", - "rsa.misc.result_code": "oremip", - "rsa.network.domain": "mail.example.org", - "rsa.network.network_service": "eursi", - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "rsa.web.alias_host": "mail.example.org", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "modi=cip", - "server.domain": "mail.example.org", - "server.registered_domain": "example.org", - "server.subdomain": "mail", - "server.top_level_domain": "org", - "service.type": "squid", - "source.bytes": 4562, - "source.ip": "10.252.146.132", - "source.port": 503, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.org", - "url.extension": "jpg", - "url.fragment": "illoin", - "url.original": "https://mail.example.org/turv/use.jpg?mtot=macc#illoin", - "url.path": [ - "/turv/use.jpg", - "https://example.com" - ], - "url.query": "mtot=macc", - "url.registered_domain": "example.org", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "umq", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-09-19T03:09:05.000Z", - "destination.ip": "10.235.160.245", - "event.action": "deny", - "event.code": "DELETE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.249.101.177 4465 [19/Sep/2019:1:09:05 quam] \"DELETE https://mail.example.com/umdol/rerepr.txt?emipsumq=orinr#ineavol umdo\" 10.235.160.245 squamest upta \"umquiad\" porinc uameiu 4857 \"https://api.example.org/mipsa/uas.gif?reeufu=umexe#xce\" \"Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36\" deny", - "file.name": "umquiad", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/mipsa/uas.gif?reeufu=umexe#xce", - "input.type": "log", - "log.offset": 37127, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.org", - "mail.example.com" - ], - "related.ip": [ - "10.235.160.245", - "10.249.101.177" - ], - "related.user": [ - "upta" - ], - "rsa.internal.messageid": "DELETE", - "rsa.misc.action": [ - "DELETE", - "deny" - ], - "rsa.misc.content_type": "uameiu", - "rsa.misc.result_code": "porinc", - "rsa.network.domain": "mail.example.com", - "rsa.network.network_service": "umdo", - "rsa.time.event_time": "2019-09-19T03:09:05.000Z", - "rsa.web.alias_host": "mail.example.com", - "rsa.web.web_ref_domain": "api.example.org", - "rsa.web.web_ref_query": "reeufu=umexe", - "server.domain": "mail.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "mail", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 4857, - "source.ip": "10.249.101.177", - "source.port": 4465, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "mail.example.com", - "url.extension": "txt", - "url.fragment": "ineavol", - "url.original": "https://mail.example.com/umdol/rerepr.txt?emipsumq=orinr#ineavol", - "url.path": [ - "/umdol/rerepr.txt", - "https://api.example.org" - ], - "url.query": "emipsumq=orinr", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "upta", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-10-03T10:11:40.000Z", - "destination.ip": "10.73.218.58", - "event.action": "block", - "event.code": "TRACE", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.140.170.171 773 [03/Oct/2019:8:11:40 deom] \"TRACE https://internal.example.com/rautod/onorumet.htm?mvo=agnidol#nevolup erspici\" 10.73.218.58 quidol tinv \"Utenima\" nse umq 1831 \"https://mail.example.org/meaquei/snisiu.htm?atev=vento#litsed\" \"Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36\" block", - "file.name": "Utenima", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.org/meaquei/snisiu.htm?atev=vento#litsed", - "input.type": "log", - "log.offset": 37549, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "internal.example.com", - "mail.example.org" - ], - "related.ip": [ - "10.140.170.171", - "10.73.218.58" - ], - "related.user": [ - "tinv" - ], - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "TRACE", - "block" - ], - "rsa.misc.content_type": "umq", - "rsa.misc.result_code": "nse", - "rsa.network.domain": "internal.example.com", - "rsa.network.network_service": "erspici", - "rsa.time.event_time": "2019-10-03T10:11:40.000Z", - "rsa.web.alias_host": "internal.example.com", - "rsa.web.web_ref_domain": "mail.example.org", - "rsa.web.web_ref_query": "atev=vento", - "server.domain": "internal.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "internal", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 1831, - "source.ip": "10.140.170.171", - "source.port": 773, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "internal.example.com", - "url.extension": "htm", - "url.fragment": "nevolup", - "url.original": "https://internal.example.com/rautod/onorumet.htm?mvo=agnidol#nevolup", - "url.path": [ - "/rautod/onorumet.htm", - "https://mail.example.org" - ], - "url.query": "mvo=agnidol", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "tinv", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "destination.ip": "10.67.148.40", - "event.action": "deny", - "event.code": "OPTIONS", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.248.156.138 2125 [18/Oct/2019:3:14:14 smodit] \"OPTIONS https://example.net/dun/xce.jpg?nsequat=mvol#asiar eiu\" 10.67.148.40 tcons squamest \"ction\" emveleum siuta 2155 \"https://example.com/epteur/onproi.txt?imveniam=sunte#exerc\" \"Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16\" deny", - "file.name": "ction", - "fileset.name": "log", - "http.request.referrer": "https://example.com/epteur/onproi.txt?imveniam=sunte#exerc", - "input.type": "log", - "log.offset": 37919, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "example.com", - "example.net" - ], - "related.ip": [ - "10.248.156.138", - "10.67.148.40" - ], - "related.user": [ - "squamest" - ], - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "OPTIONS", - "deny" - ], - "rsa.misc.content_type": "siuta", - "rsa.misc.result_code": "emveleum", - "rsa.network.domain": "example.net", - "rsa.network.network_service": "eiu", - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "rsa.web.alias_host": "example.net", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "imveniam=sunte", - "server.domain": "example.net", - "server.registered_domain": "example.net", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2155, - "source.ip": "10.248.156.138", - "source.port": 2125, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "example.net", - "url.extension": "jpg", - "url.fragment": "asiar", - "url.original": "https://example.net/dun/xce.jpg?nsequat=mvol#asiar", - "url.path": [ - "/dun/xce.jpg", - "https://example.com" - ], - "url.query": "nsequat=mvol", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.top_level_domain": "net", - "user.name": "squamest", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "destination.ip": "10.37.33.179", - "event.action": "accept", - "event.code": "UNLOCK", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.83.154.75 4260 [01/Nov/2019:10:16:48 explicab] \"UNLOCK https://api.example.com/teiru/mquamei.jpg?pta=uradi#sequu orumetMa\" 10.37.33.179 taed eatae \"siutali\" oloremq sum 6106 \"https://www.example.org/ulamc/doe.txt?remquela=toreve#squirat\" \"Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30\" accept", - "file.name": "siutali", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/ulamc/doe.txt?remquela=toreve#squirat", - "input.type": "log", - "log.offset": 38247, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "www.example.org" - ], - "related.ip": [ - "10.37.33.179", - "10.83.154.75" - ], - "related.user": [ - "eatae" - ], - "rsa.internal.messageid": "UNLOCK", - "rsa.misc.action": [ - "UNLOCK", - "accept" - ], - "rsa.misc.content_type": "sum", - "rsa.misc.result_code": "oloremq", - "rsa.network.domain": "api.example.com", - "rsa.network.network_service": "orumetMa", - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "rsa.web.alias_host": "api.example.com", - "rsa.web.web_ref_domain": "www.example.org", - "rsa.web.web_ref_query": "remquela=toreve", - "server.domain": "api.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "api", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 6106, - "source.ip": "10.83.154.75", - "source.port": 4260, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.com", - "url.extension": "jpg", - "url.fragment": "sequu", - "url.original": "https://api.example.com/teiru/mquamei.jpg?pta=uradi#sequu", - "url.path": [ - "/teiru/mquamei.jpg", - "https://www.example.org" - ], - "url.query": "pta=uradi", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "eatae", - "user_agent.device.name": "Meizu M6", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "77.0.3865.120" - }, - { - "@timestamp": "2019-11-15T07:19:22.000Z", - "destination.ip": "10.84.107.38", - "event.action": "deny", - "event.code": "MKOL", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.14.29.202 7842 [15/Nov/2019:5:19:22 modoco] \"MKOL https://www5.example.net/dtempor/rroquisq.gif?liquid=uidex#umdolo nimv\" 10.84.107.38 tutla usmod \"ine\" qui itse 2097 \"https://www5.example.org/tasn/exeaco.html?metc=aincidu#reprehe\" \"Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10\" deny", - "file.name": "ine", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/tasn/exeaco.html?metc=aincidu#reprehe", - "input.type": "log", - "log.offset": 38676, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "www5.example.net", - "www5.example.org" - ], - "related.ip": [ - "10.14.29.202", - "10.84.107.38" - ], - "related.user": [ - "usmod" - ], - "rsa.internal.messageid": "MKOL", - "rsa.misc.action": [ - "MKOL", - "deny" - ], - "rsa.misc.content_type": "itse", - "rsa.misc.result_code": "qui", - "rsa.network.domain": "www5.example.net", - "rsa.network.network_service": "nimv", - "rsa.time.event_time": "2019-11-15T07:19:22.000Z", - "rsa.web.alias_host": "www5.example.net", - "rsa.web.web_ref_domain": "www5.example.org", - "rsa.web.web_ref_query": "metc=aincidu", - "server.domain": "www5.example.net", - "server.registered_domain": "example.net", - "server.subdomain": "www5", - "server.top_level_domain": "net", - "service.type": "squid", - "source.bytes": 2097, - "source.ip": "10.14.29.202", - "source.port": 7842, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "www5.example.net", - "url.extension": "gif", - "url.fragment": "umdolo", - "url.original": "https://www5.example.net/dtempor/rroquisq.gif?liquid=uidex#umdolo", - "url.path": [ - "/dtempor/rroquisq.gif", - "https://www5.example.org" - ], - "url.query": "liquid=uidex", - "url.registered_domain": "example.net", - "url.scheme": "https", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "usmod", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2019-11-30T14:21:57.000Z", - "destination.ip": "10.204.223.184", - "event.action": "deny", - "event.code": "POST", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.221.86.133 6682 [30/Nov/2019:12:21:57 edi] \"POST https://api.example.com/ore/adeser.htm?pre=aute#rchite rcit\" 10.204.223.184 oinve ptasnul \"utaliqui\" mcorpor rerepr 6861 \"https://example.com/tuserror/agnama.jpg?deritq=boreetdo#teni\" \"Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]\" deny", - "file.name": "utaliqui", - "fileset.name": "log", - "http.request.referrer": "https://example.com/tuserror/agnama.jpg?deritq=boreetdo#teni", - "input.type": "log", - "log.offset": 39122, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "example.com" - ], - "related.ip": [ - "10.204.223.184", - "10.221.86.133" - ], - "related.user": [ - "ptasnul" - ], - "rsa.internal.messageid": "POST", - "rsa.investigations.ec_subject": "NetworkComm", - "rsa.investigations.ec_theme": "ALM", - "rsa.misc.action": [ - "POST", - "deny" - ], - "rsa.misc.content_type": "rerepr", - "rsa.misc.result_code": "mcorpor", - "rsa.network.domain": "api.example.com", - "rsa.network.network_service": "rcit", - "rsa.time.event_time": "2019-11-30T14:21:57.000Z", - "rsa.web.alias_host": "api.example.com", - "rsa.web.web_ref_domain": "example.com", - "rsa.web.web_ref_query": "deritq=boreetdo", - "server.domain": "api.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "api", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 6861, - "source.ip": "10.221.86.133", - "source.port": 6682, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.com", - "url.extension": "htm", - "url.fragment": "rchite", - "url.original": "https://api.example.com/ore/adeser.htm?pre=aute#rchite", - "url.path": [ - "/ore/adeser.htm", - "https://example.com" - ], - "url.query": "pre=aute", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "ptasnul", - "user_agent.device.name": "Samsung SM-A715F", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2019-12-14T09:24:31.000Z", - "destination.ip": "10.229.39.190", - "event.action": "deny", - "event.code": "PUT", - "event.dataset": "squid.log", - "event.module": "squid", - "event.original": "10.195.4.70 3844 [14/Dec/2019:7:24:31 mfugiat] \"PUT https://api.example.com/liqu/dolor.htm?ess=umdo#aer quela\" 10.229.39.190 Nequepo edictas \"emac\" rmagnido exeaco 2574 \"https://api.example.org/loremi/nven.htm?usan=ugiatn#squa\" \"Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91\" deny", - "file.name": "emac", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/loremi/nven.htm?usan=ugiatn#squa", - "input.type": "log", - "log.offset": 39568, - "observer.product": "Proxy", - "observer.type": "Proxies", - "observer.vendor": "Squid", - "related.hosts": [ - "api.example.com", - "api.example.org" - ], - "related.ip": [ - "10.195.4.70", - "10.229.39.190" - ], - "related.user": [ - "edictas" - ], - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "PUT", - "deny" - ], - "rsa.misc.content_type": "exeaco", - "rsa.misc.result_code": "rmagnido", - "rsa.network.domain": "api.example.com", - "rsa.network.network_service": "quela", - "rsa.time.event_time": "2019-12-14T09:24:31.000Z", - "rsa.web.alias_host": "api.example.com", - "rsa.web.web_ref_domain": "api.example.org", - "rsa.web.web_ref_query": "usan=ugiatn", - "server.domain": "api.example.com", - "server.registered_domain": "example.com", - "server.subdomain": "api", - "server.top_level_domain": "com", - "service.type": "squid", - "source.bytes": 2574, - "source.ip": "10.195.4.70", - "source.port": 3844, - "tags": [ - "forwarded", - "squid.log" - ], - "url.domain": "api.example.com", - "url.extension": "htm", - "url.fragment": "aer", - "url.original": "https://api.example.com/liqu/dolor.htm?ess=umdo#aer", - "url.path": [ - "/liqu/dolor.htm", - "https://api.example.org" - ], - "url.query": "ess=umdo", - "url.registered_domain": "example.com", - "url.scheme": "https", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "edictas", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/tomcat/README.md b/x-pack/filebeat/module/tomcat/README.md deleted file mode 100644 index 3a24ecf13e5..00000000000 --- a/x-pack/filebeat/module/tomcat/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# tomcat module - -This is a module for Apache Tomcat logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML apachetomcat version 105 -at 2020-07-13 17:55:32.188756 +0000 UTC. - diff --git a/x-pack/filebeat/module/tomcat/_meta/config.yml b/x-pack/filebeat/module/tomcat/_meta/config.yml deleted file mode 100644 index e04b9201704..00000000000 --- a/x-pack/filebeat/module/tomcat/_meta/config.yml +++ /dev/null @@ -1,20 +0,0 @@ -- module: tomcat - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9501 - - # Set paths for the log files when file input is used. - # var.paths: - # - /var/log/tomcat/*.log - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/tomcat/_meta/docs.asciidoc b/x-pack/filebeat/module/tomcat/_meta/docs.asciidoc deleted file mode 100644 index cb7339f3388..00000000000 --- a/x-pack/filebeat/module/tomcat/_meta/docs.asciidoc +++ /dev/null @@ -1,74 +0,0 @@ -[role="xpack"] - -:modulename: tomcat -:has-dashboards: false - -== Tomcat module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/apache_tomcat[Apache Tomcat] Elastic integration instead."] - -experimental[] - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -This is a module for receiving Apache Tomcat access logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: log - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `log` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "apachetomcat" device revision 105. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.paths`*:: - -The paths from which files are read. Needs to be a list. Only works when `var.input` is set to `file`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9501` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/tomcat/_meta/fields.yml b/x-pack/filebeat/module/tomcat/_meta/fields.yml deleted file mode 100644 index 4c67d0156af..00000000000 --- a/x-pack/filebeat/module/tomcat/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: tomcat - title: Apache Tomcat - description: > - tomcat fields. - fields: diff --git a/x-pack/filebeat/module/tomcat/fields.go b/x-pack/filebeat/module/tomcat/fields.go deleted file mode 100644 index 5015b32c217..00000000000 --- a/x-pack/filebeat/module/tomcat/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package tomcat - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "tomcat", asset.ModuleFieldsPri, AssetTomcat); err != nil { - panic(err) - } -} - -// AssetTomcat returns asset data. -// This is the base64 encoded zlib format compressed contents of module/tomcat. -func AssetTomcat() string { - return "eJzsfe9zGzey4Pf9K3D5cLZTDp04id+tb9+78pOUjW5tR8+ynVdXWzUFYpokIgwwBjCkmL/+Cg3McMjBUBIFUPK72w9bsUg2Go1Go3/3d+QK1q+JVRWj9i+EWG4FvCZvasoWQD62fy7BMM1ry5V8Tf7tL4SQ8BMy4yBKM/kLCf/1Gj90//uOSFrBayLBrpS+mnBpQc8og4n7e/c1QtQS9EpzC6+J1U3/E7uu4bXDcKV02ft7BJ32f+9pBUTNiF1AuzLpViarBWjAz6ymsxlnZEENmQJIoqYG9BLKyWAD2tA7YDvXqql7f90lywYuoiWp2MJ/HPzYArElNotUZr719/0rjJN8QPaPC27c9wg3pDFQEqsIo7VtAoE1XZEKjKFz929qCVMVGLdp5T7fAU3IWzUnp8BUCTq+EQ+L7yJ16HZauLAEaQu3tcSAA8KZqR9IbpDmTEkL0hp3Abg0lkrbomGiOFpeHYJgSe3uB0PsuMfJLUGoJasFZwtCiQFjuJJkwa0hlLwH+zu3EoxpT38yYI1us2ahGlESCUvQZAod39VUGyDvwFKHGiUzrareUk/fqrl5cUHZFVjzbAD+lGtgVqyfExvwpuQDeGngOVz20JxECSlgCeIASgold+/nFiVPodbAqA2YlDDjEkqipEC0LJ0KIBWt41hVZl4kuzB7zvhduOfnpz+QJRVNuPG8BGn5jAfuhGvKLBFq7s9LDw4Cd8cd+MAt+D13HDXVlrNGUI2/Dwc7GeWMAeiDOCXGGQPI45wyeiTL457Jy/9/JvvPxK2a50Dud33V9I8CN7J7LI8GuyU9ROhlR02DUY1mmd7e+5Mt1/2/H2bGUgsVSPsYkaNNyW3BBN25w48EPZBWrx8jYgunUz1GxLg8DLG8GlMrOR4vp5VAD5Eeeck2AyhT2lAjek3Mzux9sbX7HTYDPWSgJNzPitjRQwbQb7Aixqm44xw5EhVlz20SJZ8n12CbichHIhS8M/nYMdTqRvIvDWzUaN3tP/xpvW3UnijJ3ONArXrslu2IuFnyvOKwT90TtwyfcUb79/mtmpOzJUhLLlE4k0aWoJ0JoiEIqsHWZ/waSmLAOiBbP95ew4wbLO0hDGDf22DpDmEA+k6HMvQEpvcvHcaYg33dgSZ3o8FCmUz6ap8vf1XG9kWk2OVIA7Lkct5+aGJs0/MhfT305Ycw2OBHo4Q9v1j+RGhZaicrx677LnEHu7fqayXu8lVu8r76f5e8jlr5ZcOuXPCOtL63rCSUzPkSZOck+3oVAUeiw/wXeS2Q8jEqf19HRGPUoaHqdaHhS4az7gcP8YBx39M1UvnML00u8CI9D95sS8nHdQ2E0aEEmQIBbhegyadzaX94RZQmvwhF7Y8vyZQa5KI2QDbj80aj6nfDvg9Rd7/ifWMYNJ/xmcC/4H49V7ncbPus43blr97BoPSK6jKbUteTaL1t9yl5fvF5S9+jRIOgu0dKiFkbC1V4RAPaDtoCPKcaTzz3b6X5nEsq2t9says30CGX/rUnMeL84vOrCAkC+gNK3J8EHUZDKqd4fTaMOlQcD319FkBL0EeJXf+KS5Hz0/tEST2+/WApgjksVvqonWyCFdn9bLRVtM43ihZeFGe6nCghgFmlv0YB7Kj3ADk3jue4IcyTDkqH6Zai+lbtqi1kD6EfocVXseljUVUrZTDZrVKSTNeDQyNEw5cGjHUADa9qsQ7n5L7sBD0ByhbE8BLI0++JXeiGvPz552dkRQ0xALJbZQ8lHoXyegtKmFpJA/lIwb4armCqkbbzKTTV1As9d5VNFAJ5SqdqCT1icBnNrGzFm7EaaDV6f9hXwzYPTCooebOrp6Ug1DcxzbFzLPAZ4fafzcvvf/ir8SL9RY0CtEX6n4Pd/NPZg2/pGjR5Sc4ko7VphI+sOJPyTnI9Bv2ewY9IbmVslR9fkn91231OfvyR/CthSjt9GXcRFn1O/ruw/9N9kRuyTZRvokcoVQmP1taVKygYFWJK2VVeDdgjJ5XFa0OttyscEUGWteLSomliIZ7gjMxRgNYqU37aRh80NTBOBWKMmBqrtNOs5dprHe6DJRW89IwRQ4qQmWpk6V4YAYg8l/OgHN2YvLh9IwaQU8QCw3XYEzYaOYW1ULR8LO9cQIcY/ieQCqzmLGJ1BFO4/2W0hf1z3wph9+xTu9Fo1aw9tgn5Va3c0QxtTi6J0s4Ys4pcAdQ3EO1RvHhfCdG0YmBMseRlUeaKup61kmcOEjS1eMlLR8GeXbjk2jZUOKN9y/cuIy4OXnFndmOsHInhdxGu+vkp0U5aG3SoINGonoPtvnYjJYzOlPT04JTwmXD7KaGzhIKGgv/8tPW9foBKWSCXgd+ZBnxop+sxQen+1wZivoLAS1ipMLXgOTMbHrU5b/hA7X8UupmTuRn5HW+dewMCr7dc11ot4Qn5rxFh9OJlxsUDxOjdqs44ujh5cxF0X0alIw+vaqV3NV6CT+RXlwbRPA73xyf/VKEhjqZ7zJW6bco3m59sDHav56BlPiEvf35FVkj3CqgkVIi4rwCd+qgmbfxHZAUaPFhqiQBqLFFyp1xkm4gPriZ+3USM3NUcYdtAu9+VLpFwmNUEbCGVUPP1biBuxvVAiyXkZ8IWVFNmPRHdpV4j/ug0l6SRIadHbPnMRytqUxd0+0B9ziDCntglWhSVUzKVbMMImq5GZRpK1h21kjLUWH2MQgafg2Ks0S1EY6ksqS6JVLqigv8Zy+9VuorSpwxZDgeTSDXTwZN0JyJtsO6QeSH4DHDHEQPfAFOyHFGwN8ddGJvTz7JnQ1wyVdUCbJQBRp2oFBV4q/mOGOzVm2n7QIx86daOsvMYK29z5ij7VUraRaJj2tSnpsp52WQ5lQ9E+DNZ5iC7A/mnkrm7LewRi271VsX06bUfdyk8EFHZbvQbYuHahstHlqBNr5yi3JcHFjnf+zLbGmiqbW7K9JjSJZT53sGQZBOeKdOt2OoYbaZN98V+fH34WmlVTRBqg0X5hoGkmiuv1leNsPw7y0ETWteirX7ZNKupqKTzWGkuIQLDO6296JHyuBrC7RND1Er6yJilVb3rGQwYu9UcisPbZw1hC+6sG1WCmZB3jbFoJvWBultJ7UheLrVw4CHtFWCzmcN7CcfQhPCQ2wU97TTMQINkniGoU61LvuSl02yQH+KC7LIVZB93iBff5HXN9dF2uDlPHwu6dpzIrVj7zRon9Jy+5pBCBt3vG0146KMunOdOGnfybDJYsksnU01qCVQNFLn7Quzon/qqoAb5pYHmaKzkuNtz0UY+rqghiEQ5wjeI3A+piZpQKdgiaAaZNq9shtd3XuXAtS4yoFoXObTnOqUo2gb6MjnUDLpS7xV5GBNyx3yMvjGD5/JOb86hYvMmuXZIsGDzQOx0Q0jtCKJsoMSnUKxNI3KHnUasKNVYpip44XHojBfMylazAYdQGUiwZUCOMAgsQXObs3Rkz8ba1UMRYC+ys8/lk7d4cdA70L/SXaWLg4ZxpxoYn/GN4RPXbn0wZ6ynStCV82czRQ6gczHyclMw0bqoyhBkieIdzOZjHcLnbSu9bwkqTX67DKmx3LQJAbt+NVy/PaGxKklTK8MTCo5b8Raa07L0HaYwlb+9u6NdeBphi3yti+4oimRTgebsrrIourcjVLHt2Vi/kq27GV4s+fs92NoSZKl0SJjduzM1/eMBute0oV01/QNY3I52iOWvBR+Q20nQ/Yh5SZ+zV903wwsZqv6DmAlergXtcoulsoSSReh4EU+gFWpetIkqDyLUW0a8s1A/Rs+ULdn3d0y3wrbUKD7iir8SnK1z3549cuECEQjds6VYj8jlRuTMm44T8EMjABGLi1MlLVzn1lg7hM6l99dt+qHSsjTu//BRpaJFKNYA5obHmS2onEMhYZVbFowFLmHVC/WjEmKt5tPGQk9CDHP0jUfdaev95y8uOkxNkwm7jnKCZ2tbuY9oaAju5hd5ZPr6W8S4xQowR7C24aDZ5HzpJegJuQR/KI0BPaFzwFbeIdN9pnSLwwB2C8br7Qx/T/zve30rlCZTrVbus/avQdf0ZtdoP+nz8oJqm9pN1wFO7VEJd0oNqkOPdaeUKDu1MdeVUjWEgGKut/iNJFSAtl12kd4sGv7mw1tBfPSaAGASUkRhLolU8jsNNaAlsy/7Ac2GYz45rNHaXZjOXsGTRD3uBfcRtjb8M9jZittFUJa9rCenuOAUq00kUfK7uXL/veclQCWliCiOGfdNe8HAF4iAQ1LNiJMOloOZkMuNTNkdbNCvrMqD8Ykv52uMM2J8yahPtimD+A2Ep4SJxtiWIcM/BseEP+HGnWSoiQ7+Daf44qfjKtDRtR9/w+IWvW/LlE8pe3KT4eWwPEUsCDVGMY7+UncaUXsSD+wtv4LXhJJ6sTacUUFKbq6ek1rjTJTnBCx7EleUqaaH1F7e8aH3dTaaVmBBG1JTg128DDZy8L0ImKoqJ8XUVtB+WFoDlu1V9/x78FAaX+8MMzxMXnwzVdXN8A5mODZKVlyWahXyaZmSDGr7vMukGCXGYJuzRog1+dJQ4Z2fpaool0FqyN5CQo08XX2vZyp1ac/WnUr4lssrKEMtUJuITg16p4KB4j75pkNtwst9BycGXSGyirr+6CbvlthFoEXvt8uHwuu3OnheyeWwXU8XdAZd8d3BTrldrGFNxNbz/35N+8fEmvaMi/x3vNvyL7had401lA0D0kaOIO5uM6A5FUXkNc32iFzikq3avPs+9h5A98KM+gWAXZmDWg6k8BiH1d1Dt6Bm0d1QpxZGqgwbtvCZv22NTVdmeNJC2mkR5jbSLTMxmrlfdf8eVpoSJ88l4Zhz10gmgGr3J2yEt0EtFBAGb6duCztvjj544dcM+zw96heLqWrKZdc3u/9ghbJRfYfXa8l1Y47t6etrI4jAuMfvOAHSyJU48av7nozjnlJvwWV3jXfk817m81Py3kuap6FxA/HT9kLRr8PtWVyv9g7oh/Dl99zP56dI0lDy1omJofdgOyLn0wD9FiaeiZwsWHETN1KXZp2zl/12VDcUaHt1Ya8fW3rj+4hc40h/0i1Mzk9v1GRT+edu0GQdYi9ludFoJ+TE12eGfqfCf7Bfm0UE9fY3fvgmuOOmje0qN5XtHqNGCjCeMso/KCtFllRzOhWDKkDflIFLUgs6IggMSJO1P8rWgfZVVb/yxEkqp2G09YXcnfPli/OLXR2ahJax3qMwVpd94EDBW9dCbiItHklyLi255HNJUViMsGitdM7mtU8G8ssx6UWruyns6oj/6RDp3WXkslJFGOf9bx8Jl0w0JThxFibVup9PyNOza1rVAl6TC+8Q8WBRek/ifhGMzB09tonOqc3TEseMmyunch+A1x1K8XpuzPfhafjAzdWekKvVfD4HnW+EXZxkn/uxgIADaqcLDWahROm4x9vqI5NGt0LvR/AsDGPvQSo//eB1jGddM47z03gZya2j80xVdXHkvCs8lZB7hWNcvX/PNNPvHDpKYn3qDMfNqLJhY1ZaUEsfKGusj3knLZXGzgNOrrf4jUyJo7pcUf0wGXrDrvpOutLwELlNjLRGfuqEKCXvKGv7KceVWyeCjmrHKPldq6Dq/VLI25rJh1proCZ5brCx1DapFOfOH0W5eDCzwy0+VdeEly/G3y/3sjbHwNBh9GnQ+NjfBYdF/Oq271jm6XsDJj8dzt075DnjUjWpYpy9OhIzT36nnCRN6XQYeGR/Sgw4d2fGLZZ4I4STe8Q0jIExs0aQM7c+YaoE41iibfYbtyy4LOE6MQEEN/YwzfOesgUXRlNMt0hMQWN8s6KaC8zgiXjwfPxdzglFIn7nfhvdmczAh2rqmws9kEYcVidPu3zOGrSpQ9GtlzADkgUVYZMQ33Z4ejZSZOjdXMP3OHdCiVe+uiSv4Kvy33YfUi4NKcFSLiJOhqlqbO93I1tT4ui5ma3HlnZ5bIjH+ENqoapFtmyeN6SEGQ0hoND5so3hh2xNpxUvQQu6xkIuq8LjSp5GbqT7AK3u8GuYtVXg3ldvLLcNNmYk0Y1tbINhw6b7XtekUayef4fR1JhmkFVMVZW7T3nY6MRDJ7yX7FtrteSl95+1XeQqMKOJUKVihwca7+4t+4WLjdbI+nl5cdXgusakp4eR9e3qeWX9H2p6oN/p4O39bzUNAZj47ap5vsa5p5hQ7E/+8uKcnA8Uqj4a2brWhuqS/RgkLOzqqmHnSQ3pu/jDQm51XLn3IqKYqjJ3xdeg4m5X6Qi4EIfLiHq0SN8twYcMjlB53nMBh9Jhn0DbxUP4nJddKGfEiVelthoHZeAJXv50Sl6377rJ+Uy1070vPvnuOW0gCpM1roE1fS+CT/2aQqy8te3CtC9x4wiOkKhXvNx2iHTVlXRJuaDDQAbpXOEE6ytnoPXIpAV/hw7x9aeLuwVjpQoNoHwAdrClkG5g+HwyIhF5VUybslwn98/wqkhaB9SD2xg4rNH5Xi9Veoiaq4RdDnZK7ArTHKMggZt+9qrvuUqbktuusm7TFy1gFBtst6nY8KJkE17Yv0mfJZaagsujWeUnn8/I01Ar8bkRTleecoEFHJgHdnZdK+O++Yx8N3Q0yN0ozJVUK7llCBlgDTazWG5DH5m0yegRXHC7aaEnbZX7+1Ca9BbmlK3Jp1FzTfCppg9RlB8W3iIxl6SiXM40rWBvOkZNNU7tzd8nYUu5vMBlyXtV+uToTVvAXtZZBClyg/aFqQKOELkspO2+ce9hRX5tJJqS71QJgjzlcjn59jnhij0nU/d/4P6PSirWhpvJt/H4omV1MRN0MDk/tQ61reGfXBBcFH1dKCfX7fArNdvbqMGqrJj6v04Dnm0bBAPaMXIUoWWVVu7uYPb53e9UA/noE4C//fbzu9/ffDj79lufc7ukmvJRnlwpfZWyZPnGC/Z7u2A/wjbqBKMytRIRanbSdinpngPK3HOxzmDCzJQGaThLKUB6rqQMGFfpvSCR+EAqoMWK8uFw4nt7B7D3eWqg7vqkLlE3zTTTpbDT0liduvId67WzOcT6b2myd7St+cjnJD202GUzGGyg0oRik03dS6h3cSBmfNTR1G41myP20K1GuxFFtrlb3hMXygf3E7y748IhH/T/D8NVNyqzn/z3ICxW9nz0AZG9SD4Ic7Rx3H34KXWEpK2tk+3ZpU9tl9HeZtlhn8xn6HYbcO7Nkem2ZTU/RjwMi75mlAtH67aZy0WQGeen/do27MTlzEEL80gLg/GswjbnunAq4gH7OSTxGtOtQ/XRiaqqRu56ogbYycMaN90Xu/dwbf8OcZ26w80cplnfF7dLKst/V/Go2QY3Sy0/RDLcG7vhwlvImcbUnHGVLEv0WBY8Yr+iWg6DDo8ddSOrulC5hPHl+3cX5DfvR90kpcYR+XLUVILL/3hLvjSgR3q3NkIWGnY7deZNbug5RNfkQ1t0Fk3r6rR0lvAh7QNVqccIOKD1QY6jm6DaSHDs3nDL9AMaqKC6ynBaDmwG9wKtExYgd0CbMtlU2i2YabtdbYEuqd3VCu8LdwqSLSqqU5WVdHDXNR2ML7539ImyQTpVEpjFIjkvMJilLaDqAM/m2GopA1g1/SMD1Jomn4ThO04lZy8Muhc89YMTOrdV4FTP5EjLgjIcjJK+/MTBNjKh8d4DPJ3Xy5/ktV0kf9+ZLJjVRWmS9l3vQXeQD4s83QLwUtDkEkMWIOdcJiyKHILOkRsti1lhVtyy5PJDFjOhVoZW6XNX+rClXeaDniHqwmTBZU5xwmUNupqukyW8D2DX7CoP8CUVOXiF10WtlVVF+pAUQl/+VKDHMT1ske1uCjUvyhzEdoDT578xWVT0urA2ldtgG7DjaAEZHoWKy0xIc5kP6VqYQkxFkTosugX7+4zAk3cG78FO3QuxDzt1VW8f9s8ZYb/KCPtfMsL+Hxlh/zUPbKtqQaeQQ6R00NObZ7KoGoHK93Sd4Z1sgddXGfSSqhF8XtV5tG+nZVIxT52EFCDzHEqJgS8svW9EFsYnJGY4QaNZHmvSAc5jTZq1aeoMs0iZ7Mqqs5iqVllnesB1BhFilXWGWS7YaNZkAd5Ifi2pVAZYBiZcvnJUyfQoLF+p2i6AlhncaqqqCyYy+LAd4AxBEoSrp2ub3i3qIJsskOumyBDTYJpbzqjIUEBkCjoHydYJs676sCUV6z+hnObAe1lgG9AskH07mDxY+8TaLNCn83r5Ko8P2hRTbv+apdEYM0XaWXE7gLVKLqpNlmuOUIHp9FVuxvv4k83a6gEGu/B+/vTOEQ8c1b4swH03+XQd5HqwZ1xADhvGFLMch8hnKYuztwHn0A1MwWtMUiyyiDpeL38qja0HzfwTwTaaZYEt+AxymDEGHc0VlDxZweg2bC7zcEmlykaAYSoHtQNwPs8gm1RtVtQmnfnfgx7LIE8CWMOcG6tpek/IBnYGjU9DnYvUOhutDXYi15nkq8/M9yyeAbrVQKsMiqQvBcqFdj7lerVQ3BR+wmx66GuqaRYGL0cKYVNAXvr59qnhcmOpTD7nuDR22uhUwwJbqOBnBeWA2iTHNb0e3dYkpwaLkxtm6YddH9ppYB/MOS3L1HeAl6nDqm3roAxvEa8KppWqsnQlcoAzmGm8KvIkR4aORznIXF8lb89Um/QtS3ltas0TAxXUctskzz4TXEK6FjsbqCbpRJ0OLhbfpndrCeW7nhYzoZI/5x3wDCn/zuZNLnUc0AwSx9nQGVBNnpsg1DwL68p5lgtcK51agFXTZp7jmlXcsBxioTJZGDbHHAgJFpsrJYebXIb7BtCpM/481NTpeHK1Sm2BZKkoU34AdHJLVKXXjJTm8yIyj+vecFcSdPo3qy78UN7kYJNOpt6A9SNeszBZhsLNMBMntTAIYFNLg7rwjqTk6FJj3IcFW6Sq8x+AhuuaJw8E1KCruabSDnrupoC8ygI4/dPrO5F9+rQzBTQBYK3mBTV1woEBfdCapoaqgYoc+p0GhnTwXUczAU9PZAc5bQvXHmSlywwYp3dkmgy+YeN9wxnyAQykTgTwA48zGCcGvqRngFiD1mRQM5hShs8zCF5Tp/ayGc1y3APNyuSKtNEs1hU3AWCbbsRWH2ZjknfVXDKZulAiOi32vkB9k87U27dzm56tPND0Eb1upmdquOs6ebfWppxmyUNvtMjwFjYGdFHy1FXvWcZWtJGhHGSwzFhapfYGLwsujaWzDJrBkmubQw1f1jJD6yardCNTulljbdEiHUXfNFaRD40kg6W77JGMw/I+U8FLcqKh5JacUF2GboYG27/H0fGTszJSaWxCKILBIfoE+xswJUisVKfLh+AyH+XOqlqoNQwGC95Iv5lqkjX1viWPORp6nxHOO9Mwh2tS0d1GC5tYrJw3u8NAsiMpuMHhDO3q4eixgRIxTV0rbcmw8SghqwW1hFtSa5iNscI90nLvMoQiRvhgdXQoEC5DZ/eRvtCCy9wT+XuoutX6eBpi1RzsAvRk832zUM3gRSNEwhJ0N47IKlJTbYC8A0txIri/q7QjwdO3am5eXPiy12fkNIz4ek7sIjKlCJsBf4Aw+hjRluQ92N+5lWDi5zxk6izEm+HI7u4W4eJ+swaoZosJlzyKH87cPUJ/7R3xibMwMBnihaCNxFm/8wbnuLZN3OMN3Hf6te/ZU/523N2euibcYX7xiLHvDqJIWNN0u86ruCz5CNcWb8WYu+AY06hHBNJmcN17nFAtxcjES+yem3EcOPbPNWCJhi8NGLunaffh2cp375XvVQYcy+NX9RJ71yPV5Z1uu1P24eQxwtjY1t+xQ7t5Hd15ytn/N883dIudn7ZCAdeO8wZaDemSeO/Iwu5xmVIDxKdrd9iQwa3qTin84mHwld0o+A5zpX37+igZCaGGGAAcd0b3z6vSVBrKjjDed9Bh2i8tUe3dMA1rNE5A24d0DbriXt04FtKbJf1gDr7kAuZABCxBEGoMn0t/cJt5/XHWx5bMDyi/cf09nD59kEnPDrNG8i8N7I5JpPHL18P3sI6Jh01BaTUaXvoLyZSUgLkVZMXtYkxQEBKpDOk0dg0HlRfd2bRw5ER50j1RQs05o4I4DEZMH8TiYbHDpUbGND4c7erF2sTR66WzrdROVmvqB54KTk2xUNltAm/EdeYazlLZDDVyUrE/gifeD4D4S+OwxTctDGJhAqievBFGOUN8676dYrCc/Bp+MSFv5Lr71wC6RVveSEtoOWGqqhsLOi6Gs7jx3cbymWff7J4FzljcOhBu/9m8/P6Hvzrb97R3HC3FvomiHfi0SBsxu63jhq5Bk3/pfHLmRUADkYvf+tT1P/l5Xm5w3uL6vedxYPLyTbLtye7AFLfOhLz/7eOZ2zto8M4T9JeW3DANNZVs7bTKoJ6J3VwQghR6Tj6+e03Opf3x5XNy/v707D9fk0/n0r76iTxdLdZEArcL0IQtlAmj0pTWwCx+64dX/+u/PXsSpQjYRUYZt0sPlKmTisbH8ZjM3HfHa37pefG8RSp+xcvHhXRfNt2A+YEN4279wMfw3VFMN9bJZ65tQwV5++Z9FNk/lYR8vqzDOOP/KAmTOG0dul+NCMWN3Cw88Qge4xu85xzm1MKKPsCIdOTuC/KmLDX6aT2Xx9Dpnl5W1YfGOe8bCzk/eXfhX6XR8FhFzRGjH1tOJa+phrebnF84VEa8X46GB06CSEJDt/Y4DVtNrPDTtY4rIHro0rLk7stUbAK2vVn+8XfuiAzgTEK84Crc8NNtFhigssm1zqLX3fZJo+R9wPBCaduJ5IHQLTHAhgfA7fpmyWuOTHu/Hy7n7WPSbuvdGOElxOzGY3lxA3Zo+VJjFONO5fR+o4GOQ5xc1lTOYdKZTkzJGZ83GkoyXSNMkCVmDcXlTH1g64FB0eiIthxddJah34FIqPv3S7iSOwA0VMpCETK70+cZpSdtKU1BC5+KnwF0bXUe4LMMLDHLUC0sclyHXP1P6gxEpWXReuLyqeW7Frzbx2R3tb4z4QE02DO7AC3Bko/rGp6TT+0z9hYdYD+Si9YBNngJfhvT1NpRPUdQJkZM4xbp4Bd/TqgQUWWi3nwRE9yoxsS8JWj3BnJpFTEWH3MuyafzUYHCMEE2m7xKLrIdUFVnGPvmAGswqTN6HdgMJS7+RUydio7+9gzY+tEKhQA5Tz4pEnF2ykdGLXREA/UqDxW9AIwkDNMJZoSSX5ReUV0O53QT8maOyV6aUHfjrzGXbgp2BSDjqmfirol3jXErS0U/VOeRIdgyHjMjBjvkMuS5YlpCxa0TS2HERnyLS0HlMeL4t3BQtgkiPRflYIPbLstNJGXpLNg5GrDbL0/qSCUw7EKwTNcP7nYRe6otZ42gmmC/aNIi8fTs+vVbNVezWXz6O7DCLiD78W4h+9Et6G9jD+8zh7dD901jFyBtSBYfRds0KTsn3C6hxy85jvonA3oUYdVYpo5L6bDkOMKXDWNgzAjO2Hn8sOZohyWeIF7EqbhzpdckUpgwwO0YwmkLR9jB0UklDPCZWkn3rji5FVMOux+SgaK0vatlun50I+8mJb5rKdYMCA5lt5/gh9nRh7kkhtsmIj8JFhdAENEB6oIaQktVu9fFLoBrolZyc2SecJZeK6mqkbxanMlhuG9Rf1wlwin3XJZO/ihtOgJQ8gsXQN4ExCYDMtzG2Su7jfk7OZow3u3/QdIVRklwGbIW0lIhtscIIVLWu9+DED5f7zLUa6SmxHhC6FTlrB6IbH4KC7rkqkHtkqmq1qriIxmKcGzkziSdCiwim5GT/bhxuezETkYkdzHc0jpJFIEtDJMOlzkAwcj6HX65T7f3ym7u2yjbbcosG2l3y9lSa/QlloEX7BCz/lZaEL7Hc5CgOWu3hATBRL/d1AJuF/jUxma7kYDshP0wMVaPBz/bPR3SduvB9vRy/56CeuHXyrivqGnaGeGWV2CcXPfanoYaRoNI4RSSNYW48SCw8eA9j0HfkrUO6d39YKz14+329ENhkg05vfXWgsP4ph0O9oY73giEWwiDr3d3L2/cnT7q2fmLlmRv+uaTS9ZL9TgC5AY53gmQr5cdf7z5yFKNNjjOkd1OPuqjSpCUd+wW8uOo7JhybwNm7JR6LEHb8VMnr9xp7KKowC7UA0RJ6JYnmXg0wtdGDxx7KWmV1eu0J6rzQYngr3WI7OHLTJ6Q/5z8/P335Onb0zcXz8gpN5bLecPNAkoshY/iItRcZe8LtC8ShtmyM49HOGb84kjGmFaZvYr76j/dqcYw6G4MeuSTDX2+y3VhmPbf1f32HH+IUyxmSmWsTfomU4yKVN3pdjbygZa8MX4FojQxvOKCai+enNh0d4jhux4vr8J7bnh5zE4j/Uz5T44RWi/iTl/MzSXPV2fxRu676xjWCJWGPf9vcBLhJwNeCI4b6JVllHFXptI5EwMGIRsktdJzKvmfe7KqZT5WuC2xD6B0n6dGyD3jOlpLmqnrzy9uOXwtfIsv37toK6v5V6DCLhjVQGoNpaq4pNGCu554uqCWg7TmxvR4QY+527f0QTfrWz9CnYlx3dV54gRXTbXFZkibre4Xq0dsdhSEzW0k6gxK0NRCWSRLKtvDH074/NKu2AXPLrRa8rJrHha+R+taBE11wBih+Y971rZ12riCs9kkL4+0y27J0OvPrke2GR0eipmTS+6j54tdxX2kBVyndKYcCn5XzROuUWfq/ahXCT2PbNTrqKixUkOMVdpLfAetAktxtSf4rYn71pP47itelgKOJ+Xe4Xq3lXOR4+3JvYPkXDse4zjbvQir9ToMyXUbnX1OakHdkbn3WWkCkul1Peblx1TII9iTt8ig051t+asylryjbMHliElX0kyS45tdWn+SmOlfa3Diw+lHvsmZmZC3Ja3JZ/yH149KJX3d6T+HjydZ0CU4zUkA1eRLA3pNsAehqZU00GpU8eJUt98Cf3MceRl64DEHWfO2C6T02/d9+cbxbLd0BFQ3DPQhNEe9LaY45Smvw2yXx9vW0ltNjJxtGB5ebohupIzaseZ59/L4yLNvIzVSYxcgFsHCzH8QlKy4LNXKEFMD4zPO3CfPY3WCIU92eEHc9jy+m5wb8hQ7woJkm2cIQ5fPetQijcR3/C3MKVuTT2a78W0Xga12C2mTZ9e6FY5gsI+89n1TC1HBWjVkMvciDije9QGIVP9vVZpiOc+QfNvbzq9Qj3Xn9ep1ZMe4wyijhd8csNnj5PWObTVk+AbXeyvrznDr411Ah7s5jsOuCxhsn80mIdMfw+CE4g0pbi5+xrKBlCMBRyvccMslzLgMvnoUTtjVr6L1SNNBxO6gQrFMuG0cMDvqX2rB2Plsc+899FIa6U3Z+bCtpWxRHbkF/mZVJDgZWEf948gy5GXKZboJYknvhtsyFhXmfTwjQqpftoPH4ttob8r7I1M7B1jnfftuwLqmuuUp9+fnm62sFnzQSp242+FsWZ/8fqvt2eQzS3xbC6XX+Q78b6am8t9u7BjTIrLdRb1Vz2NPkyPL314g9Bv29mAq0WBXbb/1/bsa5YICpNWqPkR0lKqZDpwLt+LxsKaztuGGcgTE0Vd3HPcenqiqpnLd3Ue8djhO39srS9DuGSq4nKm4UkDNVe4aoRvkx44V2WK2grxd0WdfcuUI/NIIsSb/0VDBZxxKcop1z945GEVlBdOCKXXFHyjo/jtMiV9/Yz9TMabNJ+82uwmH141FlfvAEaY33/UP3RJhyk5wR3uf/IR8XNd+6xvPgSOOP8Hxw9MwK5I2k91B2+HgHRH6iYm1rd1F5hiuuk653MbOexZrpVtvP4aYP7wdOfJer5zE7NTSos47h2gPKdzKN3ruWzS1Upk0kW2k3DruPEhNbdw1yWRBTcpofw+wDuX0iSE3WiQ85h7UhKfSGaNFo1N5Q3owDeiCztPZlBvQyZ+nbdBJ0x+3QQeuzyBY4NqCRNUqvXHi4Cfj5k7RW2jYSZVJrVH5JY5RS7glcz/isqhevQj/fRJQeBH+I+Q1xdz+VICOZ+eF7Txg9Nxvph88R49rb9TaYDtlGIjmTCouZ6D1SNx1uO+j7Kuv+N9I+qh79ghItn2JZ71jiFwpDGurrFcqssTR2O/Mx+0d233EDGLd/9M/YJigNT7wk9cL0MfxRzidPWQ8PT3B0Y/PyAmuH0cNtD1Ss5QROp+ADsM/YSsLc09zXsgaOu4RsnfgbtEnptcpeu9J8z8P9UrevTVK/LTJJf8z7q3hV5lkyvk/zoiEubLcH2C9oGZkApRhx24r1DtKv/j4cEF31NkmQA0SXHZ4rG2c3tbfxBNSDJ8fo6Jiu79RN/Xw4+igZSdNuDFNcqUTIWOyVD5v3f1iKIghaJ3VBzo4lL70PHOLk0sMTu+TTkfJkOg6g4co8tNLTO3c/xj1pOdhSN5deu7BcVyEGiOKZc4XfTekGhzZUWTKwrEebZK3aTS5APMrCBZ1puYG32zGlfQfJJStPxGD8Tqlyfnlm3+8uyAX7p0iv8mR6SsbbDNVUh+C7ceVimOLYogtgF2Zg5zItxPCeXuQxYbOdf06uxZhmAYaRhBupOAeLRc0HzSFfAAl1+PRdQUZNRoQZ0ttc7QJn30sl1Tw0jNiBIldQXi0rtb7BCFS7ArWZldsJ+L8NoE0MeyFtbUpOM6gzQIajzIHQRh9BLeJz2Vb+aI0t+sbbhRTVZW1T9wt8fZ4BIdQvAR/xTWIXUsztYtlJagsjHmogbduZS/Dfw+7bWu0otj6UuOiVvwYadUxhD0GBDFApOLWAJKVLaiUg8YZudtNhVURkZGY7ZHaNncPS5h5+PvbN+/Du/diZ/nuQbFK7/r+k/ds4+aqWCrR5CLAm3aOswxzbrrJ2O0430Zya8hTj4R5ht06sLC3nai7A54g0tHdiCaTNHsbcP0kuQ3pApPtooMlaMwUmDWCMCUZ1NYZypf+DEfaK6xWOaWvJ7wz2NsR2g7RWmlLlKPvr//+JpaCGyV7ar5Ten78BMvdAoMtF+uU+mYn0UYxfz/77eL8gryj1xWXZTfWO36sbm9HT8PcGqI4sq2wjcHu9m2rU5/iJYvJ07N9lWMxO17B5kMX4bdbzq52bDnLglQ+Pw1degMWezEUxzuUB+4V0O64+i9fN9wV5shyqEmmvt3oL3Em9ANlN4Zx1WjFd0Hdyhf3PiemiaSoU0P+ZqxWcv5vU0HZleDGQvm3F+Fvz7tPuZwBi3804xpWVEQVGToVvd8QKktiFBlhSw1zbqxeO8v+mMKipnYRmvV3OJBdHAZIolPqWGj6Qmhfr8WU7nUh7/TJDnOQVq//8n8DAAD//1ixpy4=" -} diff --git a/x-pack/filebeat/module/tomcat/log/_meta/fields.yml b/x-pack/filebeat/module/tomcat/log/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/tomcat/log/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/tomcat/log/config/input.yml b/x-pack/filebeat/module/tomcat/log/config/input.yml deleted file mode 100644 index 10a6921f961..00000000000 --- a/x-pack/filebeat/module/tomcat/log/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Apache" - product: "TomCat" - type: "Web" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/tomcat/log/config/liblogparser.js - - ${path.home}/module/tomcat/log/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/tomcat/log/config/liblogparser.js b/x-pack/filebeat/module/tomcat/log/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/tomcat/log/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} %{timezone}]||%{web_method}||%{web_host}||%{webpage}||%{web_query}||%{network_service}||%{resultcode}||%{sbytes}||%{web_referer}||%{user_agent}||%{web_cookie}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup6, -])); - -var hdr1 = match("HEADER#0:0001", "message", "%APACHETOMCAT-%{level}-%{messageid}: %{payload}", processor_chain([ - setc("header_id","0001"), -])); - -var hdr2 = match("HEADER#1:0002", "message", "%{hmonth->} %{hday->} %{htime->} %{hostname->} %APACHETOMCAT- %{messageid}: %{payload}", processor_chain([ - setc("header_id","0002"), -])); - -var select1 = linear_select([ - hdr1, - hdr2, -]); - -var msg1 = msg("ABCD", dup7); - -var msg2 = msg("BADMETHOD", dup7); - -var msg3 = msg("BADMTHD", dup7); - -var msg4 = msg("BDMTHD", dup7); - -var msg5 = msg("INDEX", dup7); - -var msg6 = msg("CFYZ", dup7); - -var msg7 = msg("CONNECT", dup7); - -var msg8 = msg("DELETE", dup7); - -var msg9 = msg("DETECT_METHOD_TYPE", dup7); - -var msg10 = msg("FGET", dup7); - -var msg11 = msg("GET", dup7); - -var msg12 = msg("get", dup7); - -var msg13 = msg("HEAD", dup7); - -var msg14 = msg("id", dup7); - -var msg15 = msg("LOCK", dup7); - -var msg16 = msg("MKCOL", dup7); - -var msg17 = msg("NCIRCLE", dup7); - -var msg18 = msg("OPTIONS", dup7); - -var msg19 = msg("POST", dup7); - -var msg20 = msg("PRONECT", dup7); - -var msg21 = msg("PROPFIND", dup7); - -var msg22 = msg("PUT", dup7); - -var msg23 = msg("QUALYS", dup7); - -var msg24 = msg("SEARCH", dup7); - -var msg25 = msg("TRACK", dup7); - -var msg26 = msg("TRACE", dup7); - -var msg27 = msg("uGET", dup7); - -var msg28 = msg("null", dup7); - -var msg29 = msg("rndmmtd", dup7); - -var msg30 = msg("RNDMMTD", dup7); - -var msg31 = msg("asdf", dup7); - -var msg32 = msg("DEBUG", dup7); - -var msg33 = msg("COOK", dup7); - -var msg34 = msg("nGET", dup7); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "ABCD": msg1, - "BADMETHOD": msg2, - "BADMTHD": msg3, - "BDMTHD": msg4, - "CFYZ": msg6, - "CONNECT": msg7, - "COOK": msg33, - "DEBUG": msg32, - "DELETE": msg8, - "DETECT_METHOD_TYPE": msg9, - "FGET": msg10, - "GET": msg11, - "HEAD": msg13, - "INDEX": msg5, - "LOCK": msg15, - "MKCOL": msg16, - "NCIRCLE": msg17, - "OPTIONS": msg18, - "POST": msg19, - "PRONECT": msg20, - "PROPFIND": msg21, - "PUT": msg22, - "QUALYS": msg23, - "RNDMMTD": msg30, - "SEARCH": msg24, - "TRACE": msg26, - "TRACK": msg25, - "asdf": msg31, - "get": msg12, - "id": msg14, - "nGET": msg34, - "null": msg28, - "rndmmtd": msg29, - "uGET": msg27, - }), -]); - -var part1 = match("MESSAGE#0:ABCD", "nwparser.payload", "%{saddr}||%{fld5}||%{username}||[%{fld7->} %{timezone}]||%{web_method}||%{web_host}||%{webpage}||%{web_query}||%{network_service}||%{resultcode}||%{sbytes}||%{web_referer}||%{user_agent}||%{web_cookie}", processor_chain([ - dup1, - dup2, - dup3, - dup4, - dup5, - dup6, -])); diff --git a/x-pack/filebeat/module/tomcat/log/ingest/pipeline.yml b/x-pack/filebeat/module/tomcat/log/ingest/pipeline.yml deleted file mode 100644 index ca97aa661d1..00000000000 --- a/x-pack/filebeat/module/tomcat/log/ingest/pipeline.yml +++ /dev/null @@ -1,64 +0,0 @@ ---- -description: Pipeline for Apache Tomcat - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/tomcat/log/manifest.yml b/x-pack/filebeat/module/tomcat/log/manifest.yml deleted file mode 100644 index 5df417cde24..00000000000 --- a/x-pack/filebeat/module/tomcat/log/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["tomcat.log", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9523 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/tomcat/log/test/generated.log b/x-pack/filebeat/module/tomcat/log/test/generated.log deleted file mode 100644 index 6d52ed9cd2e..00000000000 --- a/x-pack/filebeat/module/tomcat/log/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -%APACHETOMCAT-1516-asdf: 10.251.224.219||eacommod||rci||[29/Jan/2016:6:09:59 OMST]||exercita||https://example.com/illumqui/ventore.html?min=ite#utl||vol||amremap||oremi||ntsunti||5293||https://mail.example.net/turadipi/aeca.htm?ntium=psaq#cer||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||aliqu -%APACHETOMCAT-259-CFYZ: 10.196.153.12||sequa||abo||[12/Feb/2016:1:12:33 PST]||umqui||https://www5.example.net/mdolo/mqui.htm?sumdo=litesse#orev||pisciv||uii||umexe||estlabo||5222||https://mail.example.com/uat/eporr.jpg?byCicer=luptat#agn||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||nulapari -February 26 20:15:08 ctetur5806.api.home %APACHETOMCAT- COOK: 10.156.194.38||gnaali||enatus||[26/Feb/2016:8:15:08 PT]||incid||https://internal.example.com/tetur/idolor.html?ntex=eius#luptat||emape||aer||lupt||tia||7019||https://www.example.com/quis/orisn.txt?anti=ofdeF#metcons||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||nul -%APACHETOMCAT-1060-INDEX: 10.196.118.192||tinculp||tur||[12/Mar/2016:3:17:42 CT]||equat||https://www5.example.org/nci/ofdeFin.gif?amco=exe#iatu||ionofde||con||uia||quiavo||1156||https://mail.example.com/consec/taliquip.html?radip=tNequ#gelit||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||tconsec -%APACHETOMCAT-4141-BADMTHD: 10.246.209.145||oluptas||llu||[26/Mar/2016:10:20:16 GMT+02:00]||ommod||https://internal.example.com/aqui/radipis.jpg?llumd=enatuse#magn||equuntu||eos||enimad||rmagni||1998||https://internal.example.net/onev/tenima.jpg?seq=olorema#ccaecat||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||fug -%APACHETOMCAT-2964-BADMETHOD: 10.114.191.225||uian||tempo||[09/Apr/2016:5:22:51 PST]||exercit||https://internal.example.com/omnis/antium.txt?lupta=iusmodt#doloreeu||pori||occ||ect||reetdolo||2770||https://www5.example.org/uiano/mrema.htm?anim=autfugi#inBCSedu||Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36||tanimi -April 24 00:25:25 erep2696.www.home %APACHETOMCAT- INDEX: 10.38.77.13||aquaeab||liqu||[24/Apr/2016:12:25:25 PT]||ehend||https://www5.example.net/uidolore/niamqu.gif?iat=tevelit#nsequat||loremagn||ipis||gelits||tatevel||3856||https://api.example.com/uovol/dmi.txt?quunt=ptat#ore||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||tsed -May 8 07:27:59 mUt2398.invalid %APACHETOMCAT- DEBUG: 10.11.201.109||boree||ugits||[08/May/2016:7:27:59 CEST]||iinea||https://www.example.org/idexea/riat.txt?tvol=moll#tatione||inB||deomni||tquovol||ntsuntin||3341||https://mail.example.org/imav/ididu.htm?tion=orsitame#quiratio||Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||iam -%APACHETOMCAT-3097-BADMTHD: 10.182.166.181||apariat||mol||[22/May/2016:2:30:33 CT]||olupta||https://api.example.org/toccae/tatno.gif?taliqu=temUten#ccusan||iqu||ollit||usan||aper||5529||https://example.org/uaera/sitas.txt?aedic=atquovo#iumto||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||mquaera -%APACHETOMCAT-6283-null: 10.185.126.247||vel||quu||[05/Jun/2016:9:33:08 OMST]||avol||https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq||metcon||smo||litessec||emporinc||5075||https://internal.example.com/atcu/oremagna.jpg?remipsum=liq#ist||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||caecatc -June 20 04:35:42 siuta2896.www.localhost %APACHETOMCAT- SEARCH: 10.72.114.23||enia||nsequu||[20/Jun/2016:4:35:42 PST]||rsint||https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf||antiumto||strude||ctetura||usmod||1640||https://mail.example.net/lor/fugit.jpg?rsitamet=lupt#xea||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||orain -July 4 11:38:16 oin6316.www5.host %APACHETOMCAT- TRACE: 10.129.241.147||lores||lapariat||[04/Jul/2016:11:38:16 PST]||etc||https://example.net/nimadmin/ditautfu.html?lpa=entsu#dun||onproide||luptat||itaut||imaven||152||https://internal.example.net/onproide/Nemoen.gif?pitla=ccu#urE||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||inculpaq -July 18 18:40:50 tionemu7691.www.local %APACHETOMCAT- BDMTHD: 10.185.101.76||errorsi||des||[18/Jul/2016:6:40:50 GMT+02:00]||stl||https://www5.example.com/ono/stru.jpg?emaperi=tame#tinvol||tectobe||colabor||iusmodt||etdolo||3768||https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu||Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80||itecto -%APACHETOMCAT-3217-GET: 10.57.170.140||nsec||onse||[02/Aug/2016:1:43:25 OMST]||inibusBo||https://example.net/tion/eataev.htm?uiineavo=tisetq#irati||ici||giatquov||eritquii||dexeac||3088||https://www.example.org/oreseos/uames.txt?msequi=isnostru#iquaUten||Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36||iadese -%APACHETOMCAT-1109-PUT: 10.33.153.47||hil||atquovo||[16/Aug/2016:8:45:59 GMT+02:00]||iineavo||https://internal.example.com/isno/taliq.htm?nnu=dolo#Loremip||idolor||emeumfu||CSed||lupt||6136||https://internal.example.net/quip/mporain.txt?uatD=iunt#temveleu||Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||tio -August 30 15:48:33 conse2991.internal.lan %APACHETOMCAT- FGET: 10.116.104.101||gnam||tat||[30/Aug/2016:3:48:33 CET]||lumqui||https://internal.example.net/mdolore/rQuisau.gif?iavolu=den#tutla||olorema||iades||siarchi||datatn||5076||https://internal.example.net/mipsumd/eFinib.jpg?remi=saute#ercit||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||remagn -%APACHETOMCAT-3361-null: 10.202.194.67||samvolu||ittenbyC||[13/Sep/2016:10:51:07 ET]||eirure||https://internal.example.com/oidentsu/atiset.jpg?ntor=lpaqui#sitame||iadese||nsectet||utla||utei||2716||https://example.com/tlabori/oin.jpg?quisnos=ite#ationul||Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||eritqu -September 28 05:53:42 wri2784.api.domain %APACHETOMCAT- PUT: 10.153.111.103||itquiin||modocon||[28/Sep/2016:5:53:42 PST]||taevit||https://www5.example.com/etconse/tincu.txt?lit=asun#estia||eaq||occae||ctetura||labore||4621||https://www.example.com/adeseru/emoe.html?atur=itanimi#itame||Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30||rehender -%APACHETOMCAT-1637-DETECT_METHOD_TYPE: 10.52.186.29||equat||doloreme||[12/Oct/2016:12:56:16 GMT+02:00]||ione||https://www5.example.org/eriamea/amre.htm?magni=pisciv#iquidex||radipisc||tmo||fficiade||uscipit||4168||https://internal.example.net/oru/temqu.htm?etMalor=ipi#reseos||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mcolab -October 26 19:58:50 oquisqu2937.mail.domain %APACHETOMCAT- BDMTHD: 10.209.182.237||tper||olor||[26/Oct/2016:7:58:50 GMT-07:00]||osqui||https://www.example.org/iutali/fdeFi.jpg?liquide=etdol#uela||boN||eprehend||aevit||aboN||3423||https://example.net/tlabo/uames.gif?mpo=offi#giatnu||Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]||lor -November 10 03:01:24 dolore1287.internal.lan %APACHETOMCAT- CFYZ: 10.63.194.87||quisno||sin||[10/Nov/2016:3:01:24 CT]||aliquam||https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn||isnisiu||bore||tsu||tcons||3128||https://api.example.org/lorinre/olorsita.gif?idata=rumwritt#magnid||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||dol -%APACHETOMCAT-4307-TRACE: 10.62.191.18||tevelite||orporiss||[24/Nov/2016:10:03:59 OMST]||tlabo||https://www.example.org/emvel/tmollita.htm?numqua=veni#eveli||eroi||dtemp||aliquide||ofde||4940||https://www5.example.org/maven/hende.jpg?labor=didunt#uptatema||Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||udan -%APACHETOMCAT-6040-CFYZ: 10.238.164.29||aturQui||utlabor||[08/Dec/2016:5:06:33 ET]||temvel||https://example.net/nisi/dant.txt?ecte=tinvolu#iurer||iciadese||quidolor||tessec||olupta||2660||https://example.org/idolor/uisau.jpg?llumdolo=nre#ercitat||Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||uiinea -%APACHETOMCAT-1612-SEARCH: 10.155.230.17||eni||ionevo||[23/Dec/2016:12:09:07 CT]||Ute||https://internal.example.com/sintocc/tlabor.txt?tDuisaut=oinBC#quameius||ipsumdol||tet||etdo||urerepr||4674||https://example.com/tetu/stru.htm?tlabore=Exc#pora||Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||uteirure -January 6 07:11:41 ide2767.www5.local %APACHETOMCAT- RNDMMTD: 10.102.229.102||nnum||tenbyCi||[06/Jan/2017:7:11:41 PST]||tco||https://example.net/officiad/itam.html?madmi=tur#roi||niamqui||orem||sno||atno||5263||https://mail.example.net/ntocca/ostru.txt?quiavol=rrorsi#temquiav||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||sec -January 20 14:14:16 sBon1759.invalid %APACHETOMCAT- HEAD: 10.194.14.7||ten||vita||[20/Jan/2017:2:14:16 OMST]||ullamcor||https://mail.example.org/tor/qui.txt?eavolup=fugiatn#docon||etconsec||ios||evolu||ersp||3536||https://www5.example.org/sauteiru/mod.gif?tes=mquame#nihilmol||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||orain -%APACHETOMCAT-6113-get: 10.99.0.226||madmi||uidol||[03/Feb/2017:9:16:50 ET]||quameius||https://api.example.net/roid/inibusB.jpg?Nemoenim=squirati#Sedutp||utp||ema||rsitv||iciade||5649||https://example.com/lup/tatemUt.html?upida=tvolupt#eufugi||Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36||uredol -%APACHETOMCAT-6945-DETECT_METHOD_TYPE: 10.107.174.213||tenimad||minimav||[18/Feb/2017:4:19:24 OMST]||taedicta||https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut||uamni||ctet||ati||uine||2438||https://api.example.org/loreme/untu.htm?ven=con#nisist||Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36||ium -March 4 11:21:59 idunt4707.host %APACHETOMCAT- ABCD: 10.84.25.23||laudant||isnost||[04/Mar/2017:11:21:59 CET]||rQuisau||https://mail.example.org/iscinge/ofdeFini.jpg?molli=velitse#oditem||gitsedqu||borios||rsitvolu||quam||5315||https://www.example.org/ineavo/pexe.htm?iadolor=amcol#adeser||Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||gitsed -%APACHETOMCAT-4367-uGET: 10.193.143.108||idolo||luptate||[18/Mar/2017:6:24:33 PT]||atisun||https://www.example.org/epre/tobeata.html?quia=iduntu#idestlab||rnatur||ofdeFin||essequam||acommo||3105||https://api.example.com/cusant/atemq.gif?itecto=reetdol#totamre||Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||ercita -April 2 01:27:07 emquia1497.www5.lan %APACHETOMCAT- INDEX: 10.190.51.22||uamei||siut||[02/Apr/2017:1:27:07 CT]||uisa||https://example.com/mexe/its.htm?ice=oles#edic||seq||tutlab||sau||atevelit||2450||https://example.org/aperia/ccaeca.gif?ttenby=boris#stenatu||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||orumSe -April 16 08:29:41 riat3854.www5.home %APACHETOMCAT- BADMETHOD: 10.194.90.130||siut||tconsect||[16/Apr/2017:8:29:41 PT]||piscinge||https://www.example.com/velitess/naali.htm?nre=veli#volupta||rnatu||elitse||ima||quasia||2382||https://www5.example.com/quamqua/eacommod.html?iumdol=tpersp#stla||mobmail android 2.1.3.3150||sequamni -%APACHETOMCAT-6198-BDMTHD: 10.10.213.83||nea||psum||[30/Apr/2017:3:32:16 OMST]||ncididun||https://www.example.org/xeacomm/cinge.txt?apariat=vitaedi#lorsita||dolore||uptate||quidexea||ect||23||https://internal.example.com/ate/odoconse.jpg?quatu=veli#tenim||Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]||labo -May 14 22:34:50 aboreetd5461.host %APACHETOMCAT- uGET: 10.52.125.9||hit||urv||[14/May/2017:10:34:50 ET]||nimid||https://api.example.org/texpli/exeacom.jpg?rita=esseci#tametcon||liqua||mvele||isis||uasiar||2552||https://mail.example.net/loremqu/dantium.htm?teirured=onemulla#dolorem||Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]||rauto -%APACHETOMCAT-5770-RNDMMTD: 10.19.17.202||nby||mve||[29/May/2017:5:37:24 PT]||isau||https://api.example.net/ibusBon/ven.gif?nsequat=doloreme#dun||reprehe||tincu||suntin||itse||814||https://www5.example.org/intocc/amcorp.html?ssecillu=liqua#olo||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||aec -June 12 12:39:58 iquidexe304.mail.test %APACHETOMCAT- RNDMMTD: 10.195.64.5||oreetd||uat||[12/Jun/2017:12:39:58 PT]||moenimi||https://mail.example.org/oconsequ/edquiac.gif?preh=ercit#etMal||qua||rsita||ate||ipsamvo||344||https://api.example.com/tdol/upt.htm?asper=idunt#luptat||Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||ica -June 26 19:42:33 remips4828.www5.host %APACHETOMCAT- POST: 10.209.77.194||tvolup||itesseq||[26/Jun/2017:7:42:33 OMST]||snost||https://internal.example.com/llamc/nte.htm?utali=porinc#tetur||xce||dat||aincidu||nimadmin||4843||https://mail.example.com/eumfugi/etdolor.htm?dic=cola#amcor||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||elites -%APACHETOMCAT-1952-MKCOL: 10.168.6.90||rem||amvolupt||[11/Jul/2017:2:45:07 GMT+02:00]||atisund||https://example.net/ites/isetq.gif?nisiut=tur#avolupt||ariatur||rer||iconseq||porincid||6941||https://mail.example.org/nofd/dipisci.txt?ilmol=eri#quunt||Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80||tae -%APACHETOMCAT-7717-rndmmtd: 10.89.137.238||plica||ore||[25/Jul/2017:9:47:41 OMST]||emqu||https://mail.example.com/acommod/itsedd.html?admin=stenatu#inibu||est||uptatemU||leumiu||tla||4765||https://api.example.org/isa/niamqui.jpg?dqu=pid#rExc||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||erun -%APACHETOMCAT-4574-OPTIONS: 10.246.61.213||ntutlabo||iusmodte||[08/Aug/2017:4:50:15 CT]||loi||https://example.org/Nequepor/eirure.htm?idid=tesse#sequat||giatquov||tconsec||miurerep||toccaec||7645||https://www5.example.net/psaqua/ullamcor.txt?qui=cupi#tame||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||orroq -August 22 23:52:50 orin5238.host %APACHETOMCAT- MKCOL: 10.117.44.138||orem||rcit||[22/Aug/2017:11:52:50 PST]||enderit||https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo||oluptas||emvele||isnost||olorem||2760||https://www5.example.net/quunt/acommod.jpg?sit=rumSect#ita||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||aliq -%APACHETOMCAT-4801-PRONECT: 10.69.30.196||tore||elits||[06/Sep/2017:6:55:24 OMST]||ruredo||https://example.net/temUt/ptassita.gif?uamnihi=risnis#uov||itlab||urmag||omm||equ||4808||https://www.example.net/siuta/urmagn.html?uptat=idex#ptateve||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||nimveni -%APACHETOMCAT-7668-BADMTHD: 10.135.91.88||ercit||eporroq||[20/Sep/2017:1:57:58 CT]||ugiatn||https://api.example.com/dictasun/abore.txt?modocon=ipsu#ntNeq||tate||urExce||asi||ectiono||2241||https://example.org/onu/liquaUte.txt?velillu=ria#atDu||Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||emq -October 4 21:00:32 agnaaliq1829.mail.test %APACHETOMCAT- ABCD: 10.81.45.174||tin||fugitse||[04/Oct/2017:9:00:32 CEST]||liquide||https://example.net/Sedutpe/prehen.html?rcit=aecatcup#olabor||estl||erun||iruredol||incidid||7699||https://api.example.org/edquian/loremeu.gif?volupta=dmi#untexpl||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mipsamvo -%APACHETOMCAT-3517-rndmmtd: 10.87.179.233||mnisiut||avolu||[19/Oct/2017:4:03:07 PST]||eum||https://www.example.org/umetMal/asper.htm?metcons=itasper#uae||mve||uia||iciad||lorem||6137||https://www.example.org/redol/gnaa.htm?aliquamq=dtempori#toditaut||Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||dexerc -%APACHETOMCAT-2669-COOK: 10.198.57.130||hitec||henderit||[02/Nov/2017:11:05:41 OMST]||perspici||https://api.example.net/mquisn/queips.gif?emUte=molestia#quir||eavolup||emip||ver||erc||294||https://example.com/iuntNequ/esseq.txt?remq=veniamq#occ||Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90||emo -%APACHETOMCAT-494-GET: 10.218.0.197||dolor||econs||[16/Nov/2017:6:08:15 ET]||eritin||https://www.example.net/yCic/nder.jpg?itanim=nesciun#saqu||iscive||quasiar||aeab||teur||609||https://www.example.org/mol/tur.jpg?usmodi=ree#saquaea||Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||eetd -December 1 01:10:49 iatqu7310.api.home %APACHETOMCAT- get: 10.123.199.198||irured||illumqui||[01/Dec/2017:1:10:49 PST]||tionula||https://mail.example.com/ecatcupi/uamei.html?nreprehe=onse#olorem||turvel||eratv||ipsa||asuntexp||1390||https://example.com/oremquel/lmole.jpg?boNem=iumt#tsed||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||mpo -December 15 08:13:24 uamnihil6127.api.domain %APACHETOMCAT- POST: 10.29.119.245||tatnon||leumiur||[15/Dec/2017:8:13:24 ET]||ore||https://internal.example.net/ection/roquisqu.html?ceroinB=nim#utaliqu||rsi||taliqui||mides||ciun||39||https://example.org/iatqu/inBCSedu.gif?urExcep=ema#suntex||Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36||anim -December 29 15:15:58 uov1629.internal.invalid %APACHETOMCAT- DETECT_METHOD_TYPE: 10.130.175.17||quide||quaU||[29/Dec/2017:3:15:58 PT]||inimav||https://mail.example.net/iutali/itat.txt?Finibus=radi#xeacom||des||atnulapa||billo||rroqu||2170||https://www.example.org/taedi/tquido.html?etconsec=elillum#upt||Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||onsectet -%APACHETOMCAT-5752-PROPFIND: 10.166.90.130||mdolore||eosquira||[12/Jan/2018:10:18:32 CET]||lloinven||https://mail.example.net/lmolesti/apariatu.htm?moe=msequ#uat||lupta||npr||etconsec||caboNem||1043||https://internal.example.org/litesseq/atcupida.html?tob=dolores#equamnih||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||deF -January 27 05:21:06 orumw5960.www5.home %APACHETOMCAT- GET: 10.248.111.207||dolor||tiumto||[27/Jan/2018:5:21:06 GMT-07:00]||quiavol||https://api.example.org/ratv/alorum.jpg?tali=BCS#qui||ugiatquo||incidid||quin||autemv||6174||https://internal.example.org/mipsumqu/tatio.jpg?admi=onnu#olorema||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||atatnon -%APACHETOMCAT-2940-asdf: 10.185.37.32||ame||tesseq||[10/Feb/2018:12:23:41 GMT+02:00]||tem||https://internal.example.net/gitse/ugitse.jpg?tvolup=tdolore#ventore||red||sinto||tatev||luptas||3286||https://api.example.net/aev/inrepr.gif?iadese=nisiu#imad||Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||ptatem -%APACHETOMCAT-4927-SEARCH: 10.5.194.202||onproide||ntmo||[24/Feb/2018:7:26:15 CET]||riosa||https://example.org/pisc/urEx.html?rautod=olest#eataev||atcupi||atem||qui||otamr||7278||https://internal.example.com/meaque/uid.htm?tion=tobeatae#maccusa||Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||iqua -March 11 02:28:49 deriti6952.mail.domain %APACHETOMCAT- PRONECT: 10.183.34.1||boree||isn||[11/Mar/2018:2:28:49 CEST]||der||https://www5.example.com/aconse/prehe.gif?diduntu=eiusmod#itation||veleum||piciatis||nes||lmolesti||1559||https://www.example.org/emaperia/Section.txt?iame=orroquis#aquio||Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30||ntmoll -%APACHETOMCAT-4472-CFYZ: 10.101.163.40||abor||nBCSe||[25/Mar/2018:9:31:24 CEST]||remips||https://mail.example.net/reetdolo/rationev.html?reetdol=uelauda#ema||odi||ptatems||runtmo||ore||3512||https://internal.example.com/undeom/emullamc.jpg?quaer=eetdo#tlab||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||liq -April 8 16:33:58 nse3421.mail.localhost %APACHETOMCAT- uGET: 10.216.188.152||oremi||ugitsedq||[08/Apr/2018:4:33:58 ET]||atDuis||https://www5.example.com/mUteni/quira.htm?ore=tation#loinve||tatevel||iumdolo||untu||ict||2699||https://internal.example.com/riosamni/icta.gif?umetMa=imadmin#iqui||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||Nequepo -%APACHETOMCAT-1033-nGET: 10.94.140.77||veniam||isnisiu||[22/Apr/2018:11:36:32 OMST]||dol||https://www5.example.org/setquas/minim.gif?tutlabor=reseosq#gna||isiutali||lumqu||onulamco||ons||5050||https://mail.example.net/unt/tass.html?tla=mquiad#CSe||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||psa -%APACHETOMCAT-4133-PUT: 10.223.205.204||lor||ccaec||[07/May/2018:6:39:06 PST]||ommo||https://www.example.com/laudanti/umiurer.txt?rsitvolu=mnisi#usmo||iamea||imaveni||uiacon||iam||7526||https://mail.example.org/oin/itseddoe.html?citati=uamei#eursinto||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||tutla -May 21 13:41:41 tautfug689.localdomain %APACHETOMCAT- PUT: 10.85.137.156||atiset||serror||[21/May/2018:1:41:41 CEST]||isiut||https://mail.example.org/ici/nisiuta.jpg?itae=dtempo#atnula||ditautf||itametc||ori||uamqu||2804||https://example.com/quiac/sunt.gif?etdol=dolorsi#nturmag||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||Except -June 4 20:44:15 totam6886.api.localhost %APACHETOMCAT- QUALYS: 10.12.54.142||trudex||liquam||[04/Jun/2018:8:44:15 PST]||lor||https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS||iciadese||riatur||oeni||dol||3000||https://www5.example.net/teturadi/ditau.gif?piscivel=hend#eacommo||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||aer -%APACHETOMCAT-3864-RNDMMTD: 10.158.6.52||dolorem||sed||[19/Jun/2018:3:46:49 OMST]||Nemoenim||https://example.net/labori/porai.gif?utali=sed#xeac||umdolors||lumdo||acom||eFini||4262||https://internal.example.org/uovol/prehend.html?eque=eufug#est||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||ntincul -July 3 10:49:23 tquo854.api.domain %APACHETOMCAT- MKCOL: 10.195.160.182||ine||urerepre||[03/Jul/2018:10:49:23 CT]||itessequ||https://www5.example.org/orissu/fic.gif?ese=mmodoco#amni||atnul||umfugi||stquidol||Nemoenim||1325||https://example.com/tasnul/tuserr.jpg?amvo=tnul#expl||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||isau -%APACHETOMCAT-6084-CONNECT: 10.20.68.117||rQuisaut||quas||[17/Jul/2018:5:51:58 ET]||metco||https://mail.example.com/iuntNeq/eddoei.jpg?sseq=eriam#pernat||udan||archi||iutaliq||urQuis||1742||https://example.net/orum/Bonoru.txt?agnamal=quei#quio||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||lamcola -August 1 00:54:32 venia6656.api.domain %APACHETOMCAT- CONNECT: 10.94.136.235||mmod||iti||[01/Aug/2018:12:54:32 PST]||amqu||https://www5.example.com/tanimid/onpr.gif?gelitse=oremqu#idex||radip||upta||tetura||rumet||6923||https://www5.example.org/lestia/nde.jpg?pisci=sunt#texplica||Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||ore -August 15 07:57:06 veniam1216.www5.invalid %APACHETOMCAT- NCIRCLE: 10.152.11.26||expli||ugiat||[15/Aug/2018:7:57:06 GMT+02:00]||oinBCSed||https://www.example.net/ntorever/pisciv.gif?eritq=rehen#ipsamvol||elillum||veleumi||nsequatu||nula||2783||https://example.com/santi/ritati.gif?turadip=dip#idolo||Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10||aco -August 29 14:59:40 runtm5729.invalid %APACHETOMCAT- PRONECT: 10.82.118.95||bore||ptate||[29/Aug/2018:2:59:40 GMT+02:00]||labo||https://www5.example.com/quu/xeac.htm?abor=oreverit#scip||Finibus||Utenimad||olupta||tau||5211||https://www5.example.com/itametco/vel.htm?rere=pta#nonn||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||met -%APACHETOMCAT-4322-id: 10.187.152.213||conse||ventor||[12/Sep/2018:10:02:15 CEST]||mag||https://www.example.net/mini/Loremip.html?tur=atnonpr#ita||amquaer||aqui||enby||lpa||3948||https://www5.example.net/iat/ffic.htm?cte=aparia#CSe||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||ugitsedq -September 27 05:04:49 pta6012.www.local %APACHETOMCAT- uGET: 10.98.71.45||destla||fugitse||[27/Sep/2018:5:04:49 GMT+02:00]||eirur||https://www.example.net/duntutla/lamco.txt?isci=Dui#reetdo||ever||civelits||eos||ipitlabo||5440||https://internal.example.net/nonn/hite.htm?ariatur=labo#sautei||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||unt -%APACHETOMCAT-5971-uGET: 10.86.123.33||ugia||meum||[11/Oct/2018:12:07:23 OMST]||doei||https://www5.example.net/tev/nre.html?occaeca=eturadip#ent||rumSecti||Utenima||olore||orumS||757||https://www5.example.org/eursint/orio.txt?iameaqu=aaliquaU#olu||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||yCiceroi -%APACHETOMCAT-2852-FGET: 10.6.112.183||deom||oluptat||[25/Oct/2018:7:09:57 GMT-07:00]||eni||https://www5.example.net/uamnih/nseq.txt?uidolo=umdolore#dmi||tam||oremip||eufugi||dunt||6169||https://api.example.net/uidexeac/sequa.html?modoc=magnam#uinesc||Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||idatat -November 9 02:12:32 orsi2109.internal.home %APACHETOMCAT- LOCK: 10.227.156.143||sis||idolo||[09/Nov/2018:2:12:32 CEST]||tsedquia||https://example.net/umdolor/isiu.html?mmodi=snostr#eniamqu||inimav||tatevel||midestl||nci||6587||https://www5.example.org/nvolupt/meiusm.htm?aturv=ectetura#obeataev||Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10||seq -November 23 09:15:06 quaeabil2539.www5.lan %APACHETOMCAT- get: 10.124.129.248||iamqui||quide||[23/Nov/2018:9:15:06 CT]||cididun||https://example.org/ibusBo/untincu.jpg?lesti=sintocca#mipsumqu||eprehen||hilmole||sequ||sectetu||7182||https://example.net/dolor/lorumwri.htm?mquis=lab#uido||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mwrit -December 7 16:17:40 aal1598.mail.host %APACHETOMCAT- CONNECT: 10.173.125.112||quiavolu||upta||[07/Dec/2018:4:17:40 OMST]||umtota||https://www5.example.org/magnaa/sumquiad.gif?oluptate=Duisa#consequa||eaqueip||itaedict||olorema||rep||3380||https://www5.example.net/siarc/fdeFin.jpg?tobeata=nesciun#amcolab||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||isnisiut -%APACHETOMCAT-5227-GET: 10.37.156.140||uisnos||olores||[21/Dec/2018:11:20:14 PST]||epo||https://www.example.org/evolup/rvelil.gif?eavolup=ipsumq#evit||tno||iss||taspe||lum||5911||https://api.example.net/eturad/tDuis.htm?enimadmi=tateveli#osa||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||idolorem -%APACHETOMCAT-5776-PRONECT: 10.121.225.135||ufugi||cin||[05/Jan/2019:6:22:49 ET]||byC||https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex||nse||miurere||evit||uatu||2448||https://www5.example.org/uamestqu/mpor.jpg?hender=ptatemU#seq||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||tnulapa -%APACHETOMCAT-7708-DEBUG: 10.123.68.56||expl||olore||[19/Jan/2019:1:25:23 CEST]||dentsunt||https://www.example.org/animid/upta.jpg?onnumqua=quioff#iuntN||ipis||itautfu||nesci||tam||1206||https://mail.example.net/tetura/eeufug.txt?modt=iduntutl#rsitam||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||ntor -February 2 20:27:57 oid218.api.invalid %APACHETOMCAT- RNDMMTD: 10.63.56.164||iquid||evo||[02/Feb/2019:8:27:57 GMT-07:00]||avolu||https://api.example.net/itesse/expl.html?prehende=lup#tpers||orsitv||temseq||uisaute||uun||4638||https://mail.example.net/nemulla/asp.html?ncul=taliq#tautfugi||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||umd -February 17 03:30:32 sectetur2674.www5.test %APACHETOMCAT- HEAD: 10.62.10.137||eeufugi||deomnisi||[17/Feb/2019:3:30:32 ET]||issus||https://example.net/deritinv/evelite.html?iav=odico#rsint||itl||ttenb||olor||quiav||6648||https://example.com/eumfu/lors.gif?upidata=ici#usant||Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10||con -March 3 10:33:06 sequatD4487.internal.localhost %APACHETOMCAT- INDEX: 10.89.154.115||oeiusmo||nimv||[03/Mar/2019:10:33:06 GMT+02:00]||tconse||https://example.org/tseddoei/teursint.htm?remagnaa=lamcolab#ceroinB||umqui||citation||temsequi||mquia||1119||https://api.example.net/iveli/conseq.htm?ercitat=taspe#yCiceroi||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||cti -%APACHETOMCAT-4758-TRACE: 10.122.252.130||tuser||mmo||[17/Mar/2019:5:35:40 PST]||tlaboru||https://www5.example.com/ciad/ugiatqu.gif?turveli=isciv#natus||boreet||luptasnu||ento||snostr||3904||https://api.example.org/xerc/Nequep.htm?ria=beat#rro||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||uisau -%APACHETOMCAT-2573-id: 10.195.152.53||ueporroq||ute||[01/Apr/2019:12:38:14 GMT-07:00]||tationu||https://api.example.com/olore/ntutlab.htm?ameaquei=gnama#esciun||tesse||olupta||isno||oluptas||5560||https://www.example.net/rinrepr/dutp.jpg?modo=uiavo#uisaut||mobmail android 2.1.3.3150||paq -April 15 07:40:49 nul5107.www5.domain %APACHETOMCAT- ABCD: 10.9.255.204||illoin||emUtenim||[15/Apr/2019:7:40:49 CT]||uid||https://mail.example.com/rvelil/adese.htm?incidi=aedictas#rumetMa||mexerci||urEx||ditaut||ctetur||3089||https://mail.example.com/oreeu/mea.jpg?tis=oluptat#emi||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||iaeconse -April 29 14:43:23 nimadmin5630.localdomain %APACHETOMCAT- RNDMMTD: 10.214.235.133||equ||nulapari||[29/Apr/2019:2:43:23 GMT-07:00]||tsunt||https://www.example.org/oremi/ectobeat.gif?oreeu=uasiarch#Malor||boriosa||cillumdo||ditau||moenimip||5930||https://internal.example.net/oreetd/lor.txt?etc=eturadip#nost||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||evel -May 13 21:45:57 sequuntu3563.internal.test %APACHETOMCAT- TRACE: 10.5.134.204||apari||iarchit||[13/May/2019:9:45:57 PT]||orum||https://api.example.com/orsitam/tiset.jpg?ati=rauto#doloreeu||lors||eumfu||docons||tur||3197||https://api.example.org/uasi/maveniam.html?rspicia=pitl#imi||Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80||taevit -%APACHETOMCAT-6820-SEARCH: 10.144.111.42||sumquia||vento||[28/May/2019:4:48:31 CEST]||asnu||https://example.org/rep/mveni.txt?utpers=num#ctetura||quaerat||tDuisau||aturve||ptateve||7615||https://internal.example.com/tconsect/pariat.gif?etcon=ctobeat#isi||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||lorumw -%APACHETOMCAT-3071-FGET: 10.122.0.80||olupt||ola||[11/Jun/2019:11:51:06 CT]||etquasia||https://example.net/adm/snostr.jpg?tec=itaspe#con||illumdo||antium||remaper||eseosq||2945||https://www.example.com/uae/ata.htm?snulap=cidu#hilmol||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||quamq -June 25 18:53:40 tdolo2150.www.example %APACHETOMCAT- ABCD: 10.165.33.19||uamqu||iusmodi||[25/Jun/2019:6:53:40 ET]||aparia||https://mail.example.com/ccusant/epteurs.htm?oidentsu=oditau#onsec||dit||namaliqu||yCic||tetura||1569||https://www.example.net/ttenb/eirure.txt?rem=exer#eeufug||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||lapari -July 10 01:56:14 cinge6032.api.local %APACHETOMCAT- BADMTHD: 10.87.92.17||utlabore||tamr||[10/Jul/2019:1:56:14 CT]||iutaliq||https://mail.example.org/onemul/trudexe.txt?ura=oreeufug#Quisa||quiav||ctionofd||elit||sam||6211||https://internal.example.org/unt/isni.htm?ecillum=olor#amei||Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||quid -%APACHETOMCAT-7615-BADMETHOD: 10.51.52.203||wri||itame||[24/Jul/2019:8:58:48 ET]||dictasun||https://example.com/lorese/olupta.jpg?onsec=idestl#litani||emp||arch||non||mollit||5823||https://internal.example.org/tobeatae/ntut.gif?exe=naa#equat||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mqu -August 7 16:01:23 ende6053.local %APACHETOMCAT- rndmmtd: 10.0.211.86||rsp||imipsa||[07/Aug/2019:4:01:23 CEST]||int||https://internal.example.net/llitani/uscipit.html?etcons=etco#iuntN||utfugi||ursintoc||tio||mmodicon||6776||https://internal.example.net/tvol/lup.gif?ollita=qua#ionula||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||cusa -%APACHETOMCAT-264-OPTIONS: 10.106.34.244||eumiu||nim||[21/Aug/2019:11:03:57 PST]||rehen||https://mail.example.net/ptat/mipsu.htm?eturadip=amquaera#rsitamet||leumiur||ssequamn||ave||taliqui||3714||https://example.net/undeomn/ape.jpg?amco=ons#onsecte||Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||atquo -%APACHETOMCAT-2943-nGET: 10.191.210.188||inculpa||ruredol||[05/Sep/2019:6:06:31 OMST]||ipit||https://www.example.org/quae/periam.html?emoenimi=iquipex#mqu||onorume||abill||ametcon||ofdeFini||7052||https://example.net/tionev/uasiarch.html?qui=ehender#equa||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||nimides -%APACHETOMCAT-6165-BDMTHD: 10.2.38.49||asiarc||lor||[19/Sep/2019:1:09:05 GMT+02:00]||snula||https://www.example.com/bori/dipi.gif?utf=dolor#dexe||nemul||Duis||lupt||quatur||5775||https://www.example.org/ipsa/con.gif?uianonnu=tatiset#quira||mobmail android 2.1.3.3150||aea -October 3 20:11:40 didun1193.example %APACHETOMCAT- id: 10.66.92.90||orumwri||atisu||[03/Oct/2019:8:11:40 PST]||tse||https://example.com/iat/tqui.gif?utaliqui=emse#emqui||cipitla||tlab||vel||ionevo||4580||https://mail.example.com/volupta/umfu.gif?tisetq=tDuisaut#dolo||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||samvol -October 18 03:14:14 apari2660.www5.lan %APACHETOMCAT- BADMTHD: 10.97.108.108||fficiad||teirured||[18/Oct/2019:3:14:14 PST]||sistena||https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost||sequines||olor||sequa||lorum||7649||https://mail.example.com/Sedut/tatis.gif?reeufugi=sequines#minimve||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||toditau -November 1 10:16:48 nvolupta238.www.host %APACHETOMCAT- COOK: 10.147.147.248||onpr||uira||[01/Nov/2019:10:16:48 CET]||ptatev||https://api.example.net/uiaco/aliqu.txt?udexerci=uae#imveni||econ||aborio||rve||catcup||177||https://www5.example.org/busBon/norumetM.jpg?vitaedi=rna#cons||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||lupta -November 15 17:19:22 icer123.mail.example %APACHETOMCAT- NCIRCLE: 10.152.190.61||imvenia||culp||[15/Nov/2019:5:19:22 GMT-07:00]||nesciu||https://www.example.org/roinBCSe/eetdolor.html?tla=iaconseq#sed||sedd||atione||tvolup||oremeu||6708||https://api.example.com/dan/pta.html?oNem=itaedict#eroi||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||uptateve -November 30 00:21:57 lumqui6488.api.example %APACHETOMCAT- DETECT_METHOD_TYPE: 10.129.232.105||des||deFini||[30/Nov/2019:12:21:57 GMT-07:00]||aliquaU||https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti||edictasu||eturadi||umS||noru||5321||https://api.example.org/taevitae/tevel.htm?vol=ita#iquipexe||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||quamqua -%APACHETOMCAT-5473-TRACE: 10.12.173.112||Excepteu||mco||[14/Dec/2019:7:24:31 PT]||undeom||https://internal.example.org/teturadi/radipi.gif?upidatat=mod#niamqui||litsedd||nidol||inBC||hite||423||https://api.example.net/dminimve/remips.txt?uiac=tquii#tesse||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||emeumfu diff --git a/x-pack/filebeat/module/tomcat/log/test/generated.log-expected.json b/x-pack/filebeat/module/tomcat/log/test/generated.log-expected.json deleted file mode 100644 index 4e5d8079691..00000000000 --- a/x-pack/filebeat/module/tomcat/log/test/generated.log-expected.json +++ /dev/null @@ -1,6144 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T08:09:59.000Z", - "event.code": "asdf", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-1516-asdf: 10.251.224.219||eacommod||rci||[29/Jan/2016:6:09:59 OMST]||exercita||https://example.com/illumqui/ventore.html?min=ite#utl||vol||amremap||oremi||ntsunti||5293||https://mail.example.net/turadipi/aeca.htm?ntium=psaq#cer||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||aliqu", - "event.timezone": "OMST", - "file.name": "vol", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.net/turadipi/aeca.htm?ntium=psaq#cer", - "input.type": "log", - "log.offset": 0, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://example.com/illumqui/ventore.html?min=ite#utl", - "mail.example.net" - ], - "related.ip": [ - "10.251.224.219" - ], - "related.user": [ - "rci" - ], - "rsa.internal.level": 1516, - "rsa.internal.messageid": "asdf", - "rsa.misc.action": [ - "exercita" - ], - "rsa.misc.result_code": "ntsunti", - "rsa.network.network_service": "oremi", - "rsa.time.event_time": "2016-01-29T08:09:59.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://example.com/illumqui/ventore.html?min=ite#utl", - "rsa.web.fqdn": "https://example.com/illumqui/ventore.html?min=ite#utl", - "rsa.web.web_cookie": "aliqu", - "rsa.web.web_ref_domain": "mail.example.net", - "service.type": "tomcat", - "source.bytes": 5293, - "source.ip": "10.251.224.219", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.com", - "url.query": "amremap", - "url.registered_domain": "example.com", - "url.top_level_domain": "com", - "user.name": "rci", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-02-12T03:12:33.000Z", - "event.code": "CFYZ", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-259-CFYZ: 10.196.153.12||sequa||abo||[12/Feb/2016:1:12:33 PST]||umqui||https://www5.example.net/mdolo/mqui.htm?sumdo=litesse#orev||pisciv||uii||umexe||estlabo||5222||https://mail.example.com/uat/eporr.jpg?byCicer=luptat#agn||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||nulapari", - "event.timezone": "PST", - "file.name": "pisciv", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/uat/eporr.jpg?byCicer=luptat#agn", - "input.type": "log", - "log.offset": 369, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.net/mdolo/mqui.htm?sumdo=litesse#orev", - "mail.example.com", - "www5.example.net" - ], - "related.ip": [ - "10.196.153.12" - ], - "related.user": [ - "abo" - ], - "rsa.internal.level": 259, - "rsa.internal.messageid": "CFYZ", - "rsa.misc.action": [ - "umqui" - ], - "rsa.misc.result_code": "estlabo", - "rsa.network.network_service": "umexe", - "rsa.time.event_time": "2016-02-12T03:12:33.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www5.example.net/mdolo/mqui.htm?sumdo=litesse#orev", - "rsa.web.fqdn": "https://www5.example.net/mdolo/mqui.htm?sumdo=litesse#orev", - "rsa.web.web_cookie": "nulapari", - "rsa.web.web_ref_domain": "mail.example.com", - "service.type": "tomcat", - "source.bytes": 5222, - "source.ip": "10.196.153.12", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.net", - "url.query": "uii", - "url.registered_domain": "example.net", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "abo", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2016-02-26T10:15:08.000Z", - "event.code": "COOK", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "February 26 20:15:08 ctetur5806.api.home %APACHETOMCAT- COOK: 10.156.194.38||gnaali||enatus||[26/Feb/2016:8:15:08 PT]||incid||https://internal.example.com/tetur/idolor.html?ntex=eius#luptat||emape||aer||lupt||tia||7019||https://www.example.com/quis/orisn.txt?anti=ofdeF#metcons||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||nul", - "event.timezone": "PT", - "file.name": "emape", - "fileset.name": "log", - "host.name": "ctetur5806.api.home", - "http.request.referrer": "https://www.example.com/quis/orisn.txt?anti=ofdeF#metcons", - "input.type": "log", - "log.offset": 708, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "ctetur5806.api.home", - "https://internal.example.com/tetur/idolor.html?ntex=eius#luptat", - "internal.example.com", - "www.example.com" - ], - "related.ip": [ - "10.156.194.38" - ], - "related.user": [ - "enatus" - ], - "rsa.internal.messageid": "COOK", - "rsa.misc.action": [ - "incid" - ], - "rsa.misc.result_code": "tia", - "rsa.network.alias_host": [ - "ctetur5806.api.home" - ], - "rsa.network.network_service": "lupt", - "rsa.time.event_time": "2016-02-26T10:15:08.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://internal.example.com/tetur/idolor.html?ntex=eius#luptat", - "rsa.web.fqdn": "https://internal.example.com/tetur/idolor.html?ntex=eius#luptat", - "rsa.web.web_cookie": "nul", - "rsa.web.web_ref_domain": "www.example.com", - "service.type": "tomcat", - "source.bytes": 7019, - "source.ip": "10.156.194.38", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.com", - "url.query": "aer", - "url.registered_domain": "example.com", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "enatus", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-03-12T05:17:42.000Z", - "event.code": "INDEX", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-1060-INDEX: 10.196.118.192||tinculp||tur||[12/Mar/2016:3:17:42 CT]||equat||https://www5.example.org/nci/ofdeFin.gif?amco=exe#iatu||ionofde||con||uia||quiavo||1156||https://mail.example.com/consec/taliquip.html?radip=tNequ#gelit||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||tconsec", - "event.timezone": "CT", - "file.name": "ionofde", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.com/consec/taliquip.html?radip=tNequ#gelit", - "input.type": "log", - "log.offset": 1166, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.org/nci/ofdeFin.gif?amco=exe#iatu", - "mail.example.com", - "www5.example.org" - ], - "related.ip": [ - "10.196.118.192" - ], - "related.user": [ - "tur" - ], - "rsa.internal.level": 1060, - "rsa.internal.messageid": "INDEX", - "rsa.misc.action": [ - "equat" - ], - "rsa.misc.result_code": "quiavo", - "rsa.network.network_service": "uia", - "rsa.time.event_time": "2016-03-12T05:17:42.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://www5.example.org/nci/ofdeFin.gif?amco=exe#iatu", - "rsa.web.fqdn": "https://www5.example.org/nci/ofdeFin.gif?amco=exe#iatu", - "rsa.web.web_cookie": "tconsec", - "rsa.web.web_ref_domain": "mail.example.com", - "service.type": "tomcat", - "source.bytes": 1156, - "source.ip": "10.196.118.192", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.org", - "url.query": "con", - "url.registered_domain": "example.org", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "tur", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2016-03-26T12:20:16.000Z", - "event.code": "BADMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4141-BADMTHD: 10.246.209.145||oluptas||llu||[26/Mar/2016:10:20:16 GMT+02:00]||ommod||https://internal.example.com/aqui/radipis.jpg?llumd=enatuse#magn||equuntu||eos||enimad||rmagni||1998||https://internal.example.net/onev/tenima.jpg?seq=olorema#ccaecat||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||fug", - "event.timezone": "GMT+02:00", - "file.name": "equuntu", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/onev/tenima.jpg?seq=olorema#ccaecat", - "input.type": "log", - "log.offset": 1603, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://internal.example.com/aqui/radipis.jpg?llumd=enatuse#magn", - "internal.example.com", - "internal.example.net" - ], - "related.ip": [ - "10.246.209.145" - ], - "related.user": [ - "llu" - ], - "rsa.internal.level": 4141, - "rsa.internal.messageid": "BADMTHD", - "rsa.misc.action": [ - "ommod" - ], - "rsa.misc.result_code": "rmagni", - "rsa.network.network_service": "enimad", - "rsa.time.event_time": "2016-03-26T12:20:16.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://internal.example.com/aqui/radipis.jpg?llumd=enatuse#magn", - "rsa.web.fqdn": "https://internal.example.com/aqui/radipis.jpg?llumd=enatuse#magn", - "rsa.web.web_cookie": "fug", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 1998, - "source.ip": "10.246.209.145", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.com", - "url.query": "eos", - "url.registered_domain": "example.com", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "llu", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-04-09T07:22:51.000Z", - "event.code": "BADMETHOD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-2964-BADMETHOD: 10.114.191.225||uian||tempo||[09/Apr/2016:5:22:51 PST]||exercit||https://internal.example.com/omnis/antium.txt?lupta=iusmodt#doloreeu||pori||occ||ect||reetdolo||2770||https://www5.example.org/uiano/mrema.htm?anim=autfugi#inBCSedu||Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36||tanimi", - "event.timezone": "PST", - "file.name": "pori", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/uiano/mrema.htm?anim=autfugi#inBCSedu", - "input.type": "log", - "log.offset": 1997, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://internal.example.com/omnis/antium.txt?lupta=iusmodt#doloreeu", - "internal.example.com", - "www5.example.org" - ], - "related.ip": [ - "10.114.191.225" - ], - "related.user": [ - "tempo" - ], - "rsa.internal.level": 2964, - "rsa.internal.messageid": "BADMETHOD", - "rsa.misc.action": [ - "exercit" - ], - "rsa.misc.result_code": "reetdolo", - "rsa.network.network_service": "ect", - "rsa.time.event_time": "2016-04-09T07:22:51.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://internal.example.com/omnis/antium.txt?lupta=iusmodt#doloreeu", - "rsa.web.fqdn": "https://internal.example.com/omnis/antium.txt?lupta=iusmodt#doloreeu", - "rsa.web.web_cookie": "tanimi", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 2770, - "source.ip": "10.114.191.225", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.com", - "url.query": "occ", - "url.registered_domain": "example.com", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "tempo", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2016-04-24T14:25:25.000Z", - "event.code": "INDEX", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "April 24 00:25:25 erep2696.www.home %APACHETOMCAT- INDEX: 10.38.77.13||aquaeab||liqu||[24/Apr/2016:12:25:25 PT]||ehend||https://www5.example.net/uidolore/niamqu.gif?iat=tevelit#nsequat||loremagn||ipis||gelits||tatevel||3856||https://api.example.com/uovol/dmi.txt?quunt=ptat#ore||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||tsed", - "event.timezone": "PT", - "file.name": "loremagn", - "fileset.name": "log", - "host.name": "erep2696.www.home", - "http.request.referrer": "https://api.example.com/uovol/dmi.txt?quunt=ptat#ore", - "input.type": "log", - "log.offset": 2400, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.com", - "erep2696.www.home", - "https://www5.example.net/uidolore/niamqu.gif?iat=tevelit#nsequat", - "www5.example.net" - ], - "related.ip": [ - "10.38.77.13" - ], - "related.user": [ - "liqu" - ], - "rsa.internal.messageid": "INDEX", - "rsa.misc.action": [ - "ehend" - ], - "rsa.misc.result_code": "tatevel", - "rsa.network.alias_host": [ - "erep2696.www.home" - ], - "rsa.network.network_service": "gelits", - "rsa.time.event_time": "2016-04-24T14:25:25.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://www5.example.net/uidolore/niamqu.gif?iat=tevelit#nsequat", - "rsa.web.fqdn": "https://www5.example.net/uidolore/niamqu.gif?iat=tevelit#nsequat", - "rsa.web.web_cookie": "tsed", - "rsa.web.web_ref_domain": "api.example.com", - "service.type": "tomcat", - "source.bytes": 3856, - "source.ip": "10.38.77.13", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.net", - "url.query": "ipis", - "url.registered_domain": "example.net", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "liqu", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2016-05-08T09:27:59.000Z", - "event.code": "DEBUG", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "May 8 07:27:59 mUt2398.invalid %APACHETOMCAT- DEBUG: 10.11.201.109||boree||ugits||[08/May/2016:7:27:59 CEST]||iinea||https://www.example.org/idexea/riat.txt?tvol=moll#tatione||inB||deomni||tquovol||ntsuntin||3341||https://mail.example.org/imav/ididu.htm?tion=orsitame#quiratio||Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||iam", - "event.timezone": "CEST", - "file.name": "inB", - "fileset.name": "log", - "host.name": "mUt2398.invalid", - "http.request.referrer": "https://mail.example.org/imav/ididu.htm?tion=orsitame#quiratio", - "input.type": "log", - "log.offset": 2830, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.org/idexea/riat.txt?tvol=moll#tatione", - "mUt2398.invalid", - "mail.example.org", - "www.example.org" - ], - "related.ip": [ - "10.11.201.109" - ], - "related.user": [ - "ugits" - ], - "rsa.internal.messageid": "DEBUG", - "rsa.misc.action": [ - "iinea" - ], - "rsa.misc.result_code": "ntsuntin", - "rsa.network.alias_host": [ - "mUt2398.invalid" - ], - "rsa.network.network_service": "tquovol", - "rsa.time.event_time": "2016-05-08T09:27:59.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://www.example.org/idexea/riat.txt?tvol=moll#tatione", - "rsa.web.fqdn": "https://www.example.org/idexea/riat.txt?tvol=moll#tatione", - "rsa.web.web_cookie": "iam", - "rsa.web.web_ref_domain": "mail.example.org", - "service.type": "tomcat", - "source.bytes": 3341, - "source.ip": "10.11.201.109", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "deomni", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "ugits", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2016-05-22T04:30:33.000Z", - "event.code": "BADMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-3097-BADMTHD: 10.182.166.181||apariat||mol||[22/May/2016:2:30:33 CT]||olupta||https://api.example.org/toccae/tatno.gif?taliqu=temUten#ccusan||iqu||ollit||usan||aper||5529||https://example.org/uaera/sitas.txt?aedic=atquovo#iumto||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||mquaera", - "event.timezone": "CT", - "file.name": "iqu", - "fileset.name": "log", - "http.request.referrer": "https://example.org/uaera/sitas.txt?aedic=atquovo#iumto", - "input.type": "log", - "log.offset": 3299, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.org", - "example.org", - "https://api.example.org/toccae/tatno.gif?taliqu=temUten#ccusan" - ], - "related.ip": [ - "10.182.166.181" - ], - "related.user": [ - "mol" - ], - "rsa.internal.level": 3097, - "rsa.internal.messageid": "BADMTHD", - "rsa.misc.action": [ - "olupta" - ], - "rsa.misc.result_code": "aper", - "rsa.network.network_service": "usan", - "rsa.time.event_time": "2016-05-22T04:30:33.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://api.example.org/toccae/tatno.gif?taliqu=temUten#ccusan", - "rsa.web.fqdn": "https://api.example.org/toccae/tatno.gif?taliqu=temUten#ccusan", - "rsa.web.web_cookie": "mquaera", - "rsa.web.web_ref_domain": "example.org", - "service.type": "tomcat", - "source.bytes": 5529, - "source.ip": "10.182.166.181", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.org", - "url.query": "ollit", - "url.registered_domain": "example.org", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "mol", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2016-06-05T11:33:08.000Z", - "event.code": "null", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6283-null: 10.185.126.247||vel||quu||[05/Jun/2016:9:33:08 OMST]||avol||https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq||metcon||smo||litessec||emporinc||5075||https://internal.example.com/atcu/oremagna.jpg?remipsum=liq#ist||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||caecatc", - "event.timezone": "OMST", - "file.name": "metcon", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/atcu/oremagna.jpg?remipsum=liq#ist", - "input.type": "log", - "log.offset": 3696, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq", - "internal.example.com", - "mail.example.net" - ], - "related.ip": [ - "10.185.126.247" - ], - "related.user": [ - "quu" - ], - "rsa.internal.level": 6283, - "rsa.internal.messageid": "null", - "rsa.misc.action": [ - "avol" - ], - "rsa.misc.result_code": "emporinc", - "rsa.network.network_service": "litessec", - "rsa.time.event_time": "2016-06-05T11:33:08.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq", - "rsa.web.fqdn": "https://mail.example.net/atuse/ddoeiu.gif?idolore=onse#liq", - "rsa.web.web_cookie": "caecatc", - "rsa.web.web_ref_domain": "internal.example.com", - "service.type": "tomcat", - "source.bytes": 5075, - "source.ip": "10.185.126.247", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.net", - "url.query": "smo", - "url.registered_domain": "example.net", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "quu", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2016-06-20T06:35:42.000Z", - "event.code": "SEARCH", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "June 20 04:35:42 siuta2896.www.localhost %APACHETOMCAT- SEARCH: 10.72.114.23||enia||nsequu||[20/Jun/2016:4:35:42 PST]||rsint||https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf||antiumto||strude||ctetura||usmod||1640||https://mail.example.net/lor/fugit.jpg?rsitamet=lupt#xea||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||orain", - "event.timezone": "PST", - "file.name": "antiumto", - "fileset.name": "log", - "host.name": "siuta2896.www.localhost", - "http.request.referrer": "https://mail.example.net/lor/fugit.jpg?rsitamet=lupt#xea", - "input.type": "log", - "log.offset": 4044, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf", - "mail.example.net", - "siuta2896.www.localhost" - ], - "related.ip": [ - "10.72.114.23" - ], - "related.user": [ - "nsequu" - ], - "rsa.internal.messageid": "SEARCH", - "rsa.misc.action": [ - "rsint" - ], - "rsa.misc.result_code": "usmod", - "rsa.network.alias_host": [ - "siuta2896.www.localhost" - ], - "rsa.network.network_service": "ctetura", - "rsa.time.event_time": "2016-06-20T06:35:42.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf", - "rsa.web.fqdn": "https://example.com/idestla/Nemoeni.htm?taed=lup#remeumf", - "rsa.web.web_cookie": "orain", - "rsa.web.web_ref_domain": "mail.example.net", - "service.type": "tomcat", - "source.bytes": 1640, - "source.ip": "10.72.114.23", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.com", - "url.query": "strude", - "url.registered_domain": "example.com", - "url.top_level_domain": "com", - "user.name": "nsequu", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-07-04T13:38:16.000Z", - "event.code": "TRACE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "July 4 11:38:16 oin6316.www5.host %APACHETOMCAT- TRACE: 10.129.241.147||lores||lapariat||[04/Jul/2016:11:38:16 PST]||etc||https://example.net/nimadmin/ditautfu.html?lpa=entsu#dun||onproide||luptat||itaut||imaven||152||https://internal.example.net/onproide/Nemoen.gif?pitla=ccu#urE||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||inculpaq", - "event.timezone": "PST", - "file.name": "onproide", - "fileset.name": "log", - "host.name": "oin6316.www5.host", - "http.request.referrer": "https://internal.example.net/onproide/Nemoen.gif?pitla=ccu#urE", - "input.type": "log", - "log.offset": 4460, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/nimadmin/ditautfu.html?lpa=entsu#dun", - "internal.example.net", - "oin6316.www5.host" - ], - "related.ip": [ - "10.129.241.147" - ], - "related.user": [ - "lapariat" - ], - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "etc" - ], - "rsa.misc.result_code": "imaven", - "rsa.network.alias_host": [ - "oin6316.www5.host" - ], - "rsa.network.network_service": "itaut", - "rsa.time.event_time": "2016-07-04T13:38:16.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://example.net/nimadmin/ditautfu.html?lpa=entsu#dun", - "rsa.web.fqdn": "https://example.net/nimadmin/ditautfu.html?lpa=entsu#dun", - "rsa.web.web_cookie": "inculpaq", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 152, - "source.ip": "10.129.241.147", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "luptat", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "lapariat", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2016-07-18T08:40:50.000Z", - "event.code": "BDMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "July 18 18:40:50 tionemu7691.www.local %APACHETOMCAT- BDMTHD: 10.185.101.76||errorsi||des||[18/Jul/2016:6:40:50 GMT+02:00]||stl||https://www5.example.com/ono/stru.jpg?emaperi=tame#tinvol||tectobe||colabor||iusmodt||etdolo||3768||https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu||Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80||itecto", - "event.timezone": "GMT+02:00", - "file.name": "tectobe", - "fileset.name": "log", - "host.name": "tionemu7691.www.local", - "http.request.referrer": "https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu", - "input.type": "log", - "log.offset": 4878, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.com/ono/stru.jpg?emaperi=tame#tinvol", - "internal.example.net", - "tionemu7691.www.local", - "www5.example.com" - ], - "related.ip": [ - "10.185.101.76" - ], - "related.user": [ - "des" - ], - "rsa.internal.messageid": "BDMTHD", - "rsa.misc.action": [ - "stl" - ], - "rsa.misc.result_code": "etdolo", - "rsa.network.alias_host": [ - "tionemu7691.www.local" - ], - "rsa.network.network_service": "iusmodt", - "rsa.time.event_time": "2016-07-18T08:40:50.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://www5.example.com/ono/stru.jpg?emaperi=tame#tinvol", - "rsa.web.fqdn": "https://www5.example.com/ono/stru.jpg?emaperi=tame#tinvol", - "rsa.web.web_cookie": "itecto", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 3768, - "source.ip": "10.185.101.76", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.com", - "url.query": "colabor", - "url.registered_domain": "example.com", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "des", - "user_agent.device.name": "Android", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80", - "user_agent.os.full": "Android 5.1.1", - "user_agent.os.name": "Android", - "user_agent.os.version": "5.1.1", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-08-02T03:43:25.000Z", - "event.code": "GET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-3217-GET: 10.57.170.140||nsec||onse||[02/Aug/2016:1:43:25 OMST]||inibusBo||https://example.net/tion/eataev.htm?uiineavo=tisetq#irati||ici||giatquov||eritquii||dexeac||3088||https://www.example.org/oreseos/uames.txt?msequi=isnostru#iquaUten||Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36||iadese", - "event.timezone": "OMST", - "file.name": "ici", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/oreseos/uames.txt?msequi=isnostru#iquaUten", - "input.type": "log", - "log.offset": 5364, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/tion/eataev.htm?uiineavo=tisetq#irati", - "www.example.org" - ], - "related.ip": [ - "10.57.170.140" - ], - "related.user": [ - "onse" - ], - "rsa.internal.level": 3217, - "rsa.internal.messageid": "GET", - "rsa.misc.action": [ - "inibusBo" - ], - "rsa.misc.result_code": "dexeac", - "rsa.network.network_service": "eritquii", - "rsa.time.event_time": "2016-08-02T03:43:25.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://example.net/tion/eataev.htm?uiineavo=tisetq#irati", - "rsa.web.fqdn": "https://example.net/tion/eataev.htm?uiineavo=tisetq#irati", - "rsa.web.web_cookie": "iadese", - "rsa.web.web_ref_domain": "www.example.org", - "service.type": "tomcat", - "source.bytes": 3088, - "source.ip": "10.57.170.140", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "giatquov", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "onse", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2016-08-16T10:45:59.000Z", - "event.code": "PUT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-1109-PUT: 10.33.153.47||hil||atquovo||[16/Aug/2016:8:45:59 GMT+02:00]||iineavo||https://internal.example.com/isno/taliq.htm?nnu=dolo#Loremip||idolor||emeumfu||CSed||lupt||6136||https://internal.example.net/quip/mporain.txt?uatD=iunt#temveleu||Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||tio", - "event.timezone": "GMT+02:00", - "file.name": "idolor", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/quip/mporain.txt?uatD=iunt#temveleu", - "input.type": "log", - "log.offset": 5761, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://internal.example.com/isno/taliq.htm?nnu=dolo#Loremip", - "internal.example.com", - "internal.example.net" - ], - "related.ip": [ - "10.33.153.47" - ], - "related.user": [ - "atquovo" - ], - "rsa.internal.level": 1109, - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "iineavo" - ], - "rsa.misc.result_code": "lupt", - "rsa.network.network_service": "CSed", - "rsa.time.event_time": "2016-08-16T10:45:59.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://internal.example.com/isno/taliq.htm?nnu=dolo#Loremip", - "rsa.web.fqdn": "https://internal.example.com/isno/taliq.htm?nnu=dolo#Loremip", - "rsa.web.web_cookie": "tio", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 6136, - "source.ip": "10.33.153.47", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.com", - "url.query": "emeumfu", - "url.registered_domain": "example.com", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "atquovo", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-08-30T05:48:33.000Z", - "event.code": "FGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "August 30 15:48:33 conse2991.internal.lan %APACHETOMCAT- FGET: 10.116.104.101||gnam||tat||[30/Aug/2016:3:48:33 CET]||lumqui||https://internal.example.net/mdolore/rQuisau.gif?iavolu=den#tutla||olorema||iades||siarchi||datatn||5076||https://internal.example.net/mipsumd/eFinib.jpg?remi=saute#ercit||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||remagn", - "event.timezone": "CET", - "file.name": "olorema", - "fileset.name": "log", - "host.name": "conse2991.internal.lan", - "http.request.referrer": "https://internal.example.net/mipsumd/eFinib.jpg?remi=saute#ercit", - "input.type": "log", - "log.offset": 6206, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "conse2991.internal.lan", - "https://internal.example.net/mdolore/rQuisau.gif?iavolu=den#tutla", - "internal.example.net" - ], - "related.ip": [ - "10.116.104.101" - ], - "related.user": [ - "tat" - ], - "rsa.internal.messageid": "FGET", - "rsa.misc.action": [ - "lumqui" - ], - "rsa.misc.result_code": "datatn", - "rsa.network.alias_host": [ - "conse2991.internal.lan" - ], - "rsa.network.network_service": "siarchi", - "rsa.time.event_time": "2016-08-30T05:48:33.000Z", - "rsa.time.timezone": "CET", - "rsa.web.alias_host": "https://internal.example.net/mdolore/rQuisau.gif?iavolu=den#tutla", - "rsa.web.fqdn": "https://internal.example.net/mdolore/rQuisau.gif?iavolu=den#tutla", - "rsa.web.web_cookie": "remagn", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 5076, - "source.ip": "10.116.104.101", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.net", - "url.query": "iades", - "url.registered_domain": "example.net", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "tat", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-09-13T12:51:07.000Z", - "event.code": "null", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-3361-null: 10.202.194.67||samvolu||ittenbyC||[13/Sep/2016:10:51:07 ET]||eirure||https://internal.example.com/oidentsu/atiset.jpg?ntor=lpaqui#sitame||iadese||nsectet||utla||utei||2716||https://example.com/tlabori/oin.jpg?quisnos=ite#ationul||Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||eritqu", - "event.timezone": "ET", - "file.name": "iadese", - "fileset.name": "log", - "http.request.referrer": "https://example.com/tlabori/oin.jpg?quisnos=ite#ationul", - "input.type": "log", - "log.offset": 6628, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://internal.example.com/oidentsu/atiset.jpg?ntor=lpaqui#sitame", - "internal.example.com" - ], - "related.ip": [ - "10.202.194.67" - ], - "related.user": [ - "ittenbyC" - ], - "rsa.internal.level": 3361, - "rsa.internal.messageid": "null", - "rsa.misc.action": [ - "eirure" - ], - "rsa.misc.result_code": "utei", - "rsa.network.network_service": "utla", - "rsa.time.event_time": "2016-09-13T12:51:07.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://internal.example.com/oidentsu/atiset.jpg?ntor=lpaqui#sitame", - "rsa.web.fqdn": "https://internal.example.com/oidentsu/atiset.jpg?ntor=lpaqui#sitame", - "rsa.web.web_cookie": "eritqu", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 2716, - "source.ip": "10.202.194.67", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.com", - "url.query": "nsectet", - "url.registered_domain": "example.com", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "ittenbyC", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-09-28T07:53:42.000Z", - "event.code": "PUT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "September 28 05:53:42 wri2784.api.domain %APACHETOMCAT- PUT: 10.153.111.103||itquiin||modocon||[28/Sep/2016:5:53:42 PST]||taevit||https://www5.example.com/etconse/tincu.txt?lit=asun#estia||eaq||occae||ctetura||labore||4621||https://www.example.com/adeseru/emoe.html?atur=itanimi#itame||Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30||rehender", - "event.timezone": "PST", - "file.name": "eaq", - "fileset.name": "log", - "host.name": "wri2784.api.domain", - "http.request.referrer": "https://www.example.com/adeseru/emoe.html?atur=itanimi#itame", - "input.type": "log", - "log.offset": 7086, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.com/etconse/tincu.txt?lit=asun#estia", - "wri2784.api.domain", - "www.example.com", - "www5.example.com" - ], - "related.ip": [ - "10.153.111.103" - ], - "related.user": [ - "modocon" - ], - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "taevit" - ], - "rsa.misc.result_code": "labore", - "rsa.network.alias_host": [ - "wri2784.api.domain" - ], - "rsa.network.network_service": "ctetura", - "rsa.time.event_time": "2016-09-28T07:53:42.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www5.example.com/etconse/tincu.txt?lit=asun#estia", - "rsa.web.fqdn": "https://www5.example.com/etconse/tincu.txt?lit=asun#estia", - "rsa.web.web_cookie": "rehender", - "rsa.web.web_ref_domain": "www.example.com", - "service.type": "tomcat", - "source.bytes": 4621, - "source.ip": "10.153.111.103", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.com", - "url.query": "occae", - "url.registered_domain": "example.com", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "modocon", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2016-10-12T14:56:16.000Z", - "event.code": "DETECT_METHOD_TYPE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-1637-DETECT_METHOD_TYPE: 10.52.186.29||equat||doloreme||[12/Oct/2016:12:56:16 GMT+02:00]||ione||https://www5.example.org/eriamea/amre.htm?magni=pisciv#iquidex||radipisc||tmo||fficiade||uscipit||4168||https://internal.example.net/oru/temqu.htm?etMalor=ipi#reseos||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mcolab", - "event.timezone": "GMT+02:00", - "file.name": "radipisc", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.net/oru/temqu.htm?etMalor=ipi#reseos", - "input.type": "log", - "log.offset": 7515, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.org/eriamea/amre.htm?magni=pisciv#iquidex", - "internal.example.net", - "www5.example.org" - ], - "related.ip": [ - "10.52.186.29" - ], - "related.user": [ - "doloreme" - ], - "rsa.internal.level": 1637, - "rsa.internal.messageid": "DETECT_METHOD_TYPE", - "rsa.misc.action": [ - "ione" - ], - "rsa.misc.result_code": "uscipit", - "rsa.network.network_service": "fficiade", - "rsa.time.event_time": "2016-10-12T14:56:16.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://www5.example.org/eriamea/amre.htm?magni=pisciv#iquidex", - "rsa.web.fqdn": "https://www5.example.org/eriamea/amre.htm?magni=pisciv#iquidex", - "rsa.web.web_cookie": "mcolab", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 4168, - "source.ip": "10.52.186.29", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.org", - "url.query": "tmo", - "url.registered_domain": "example.org", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "doloreme", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-10-26T09:58:50.000Z", - "event.code": "BDMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "October 26 19:58:50 oquisqu2937.mail.domain %APACHETOMCAT- BDMTHD: 10.209.182.237||tper||olor||[26/Oct/2016:7:58:50 GMT-07:00]||osqui||https://www.example.org/iutali/fdeFi.jpg?liquide=etdol#uela||boN||eprehend||aevit||aboN||3423||https://example.net/tlabo/uames.gif?mpo=offi#giatnu||Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]||lor", - "event.timezone": "GMT-07:00", - "file.name": "boN", - "fileset.name": "log", - "host.name": "oquisqu2937.mail.domain", - "http.request.referrer": "https://example.net/tlabo/uames.gif?mpo=offi#giatnu", - "input.type": "log", - "log.offset": 7922, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://www.example.org/iutali/fdeFi.jpg?liquide=etdol#uela", - "oquisqu2937.mail.domain", - "www.example.org" - ], - "related.ip": [ - "10.209.182.237" - ], - "related.user": [ - "olor" - ], - "rsa.internal.messageid": "BDMTHD", - "rsa.misc.action": [ - "osqui" - ], - "rsa.misc.result_code": "aboN", - "rsa.network.alias_host": [ - "oquisqu2937.mail.domain" - ], - "rsa.network.network_service": "aevit", - "rsa.time.event_time": "2016-10-26T09:58:50.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://www.example.org/iutali/fdeFi.jpg?liquide=etdol#uela", - "rsa.web.fqdn": "https://www.example.org/iutali/fdeFi.jpg?liquide=etdol#uela", - "rsa.web.web_cookie": "lor", - "rsa.web.web_ref_domain": "example.net", - "service.type": "tomcat", - "source.bytes": 3423, - "source.ip": "10.209.182.237", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "eprehend", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "olor", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2016-11-10T05:01:24.000Z", - "event.code": "CFYZ", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "November 10 03:01:24 dolore1287.internal.lan %APACHETOMCAT- CFYZ: 10.63.194.87||quisno||sin||[10/Nov/2016:3:01:24 CT]||aliquam||https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn||isnisiu||bore||tsu||tcons||3128||https://api.example.org/lorinre/olorsita.gif?idata=rumwritt#magnid||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||dol", - "event.timezone": "CT", - "file.name": "isnisiu", - "fileset.name": "log", - "host.name": "dolore1287.internal.lan", - "http.request.referrer": "https://api.example.org/lorinre/olorsita.gif?idata=rumwritt#magnid", - "input.type": "log", - "log.offset": 8486, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.org", - "dolore1287.internal.lan", - "https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn", - "mail.example.net" - ], - "related.ip": [ - "10.63.194.87" - ], - "related.user": [ - "sin" - ], - "rsa.internal.messageid": "CFYZ", - "rsa.misc.action": [ - "aliquam" - ], - "rsa.misc.result_code": "tcons", - "rsa.network.alias_host": [ - "dolore1287.internal.lan" - ], - "rsa.network.network_service": "tsu", - "rsa.time.event_time": "2016-11-10T05:01:24.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn", - "rsa.web.fqdn": "https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn", - "rsa.web.web_cookie": "dol", - "rsa.web.web_ref_domain": "api.example.org", - "service.type": "tomcat", - "source.bytes": 3128, - "source.ip": "10.63.194.87", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.net", - "url.query": "bore", - "url.registered_domain": "example.net", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "sin", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-11-24T12:03:59.000Z", - "event.code": "TRACE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4307-TRACE: 10.62.191.18||tevelite||orporiss||[24/Nov/2016:10:03:59 OMST]||tlabo||https://www.example.org/emvel/tmollita.htm?numqua=veni#eveli||eroi||dtemp||aliquide||ofde||4940||https://www5.example.org/maven/hende.jpg?labor=didunt#uptatema||Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||udan", - "event.timezone": "OMST", - "file.name": "eroi", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/maven/hende.jpg?labor=didunt#uptatema", - "input.type": "log", - "log.offset": 8961, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.org/emvel/tmollita.htm?numqua=veni#eveli", - "www.example.org", - "www5.example.org" - ], - "related.ip": [ - "10.62.191.18" - ], - "related.user": [ - "orporiss" - ], - "rsa.internal.level": 4307, - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "tlabo" - ], - "rsa.misc.result_code": "ofde", - "rsa.network.network_service": "aliquide", - "rsa.time.event_time": "2016-11-24T12:03:59.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://www.example.org/emvel/tmollita.htm?numqua=veni#eveli", - "rsa.web.fqdn": "https://www.example.org/emvel/tmollita.htm?numqua=veni#eveli", - "rsa.web.web_cookie": "udan", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 4940, - "source.ip": "10.62.191.18", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "dtemp", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "orporiss", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-12-08T07:06:33.000Z", - "event.code": "CFYZ", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6040-CFYZ: 10.238.164.29||aturQui||utlabor||[08/Dec/2016:5:06:33 ET]||temvel||https://example.net/nisi/dant.txt?ecte=tinvolu#iurer||iciadese||quidolor||tessec||olupta||2660||https://example.org/idolor/uisau.jpg?llumdolo=nre#ercitat||Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||uiinea", - "event.timezone": "ET", - "file.name": "iciadese", - "fileset.name": "log", - "http.request.referrer": "https://example.org/idolor/uisau.jpg?llumdolo=nre#ercitat", - "input.type": "log", - "log.offset": 9407, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "example.org", - "https://example.net/nisi/dant.txt?ecte=tinvolu#iurer" - ], - "related.ip": [ - "10.238.164.29" - ], - "related.user": [ - "utlabor" - ], - "rsa.internal.level": 6040, - "rsa.internal.messageid": "CFYZ", - "rsa.misc.action": [ - "temvel" - ], - "rsa.misc.result_code": "olupta", - "rsa.network.network_service": "tessec", - "rsa.time.event_time": "2016-12-08T07:06:33.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://example.net/nisi/dant.txt?ecte=tinvolu#iurer", - "rsa.web.fqdn": "https://example.net/nisi/dant.txt?ecte=tinvolu#iurer", - "rsa.web.web_cookie": "uiinea", - "rsa.web.web_ref_domain": "example.org", - "service.type": "tomcat", - "source.bytes": 2660, - "source.ip": "10.238.164.29", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "quidolor", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "utlabor", - "user_agent.device.name": "Meizu M6", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "77.0.3865.120" - }, - { - "@timestamp": "2016-12-23T14:09:07.000Z", - "event.code": "SEARCH", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-1612-SEARCH: 10.155.230.17||eni||ionevo||[23/Dec/2016:12:09:07 CT]||Ute||https://internal.example.com/sintocc/tlabor.txt?tDuisaut=oinBC#quameius||ipsumdol||tet||etdo||urerepr||4674||https://example.com/tetu/stru.htm?tlabore=Exc#pora||Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||uteirure", - "event.timezone": "CT", - "file.name": "ipsumdol", - "fileset.name": "log", - "http.request.referrer": "https://example.com/tetu/stru.htm?tlabore=Exc#pora", - "input.type": "log", - "log.offset": 9841, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://internal.example.com/sintocc/tlabor.txt?tDuisaut=oinBC#quameius", - "internal.example.com" - ], - "related.ip": [ - "10.155.230.17" - ], - "related.user": [ - "ionevo" - ], - "rsa.internal.level": 1612, - "rsa.internal.messageid": "SEARCH", - "rsa.misc.action": [ - "Ute" - ], - "rsa.misc.result_code": "urerepr", - "rsa.network.network_service": "etdo", - "rsa.time.event_time": "2016-12-23T14:09:07.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://internal.example.com/sintocc/tlabor.txt?tDuisaut=oinBC#quameius", - "rsa.web.fqdn": "https://internal.example.com/sintocc/tlabor.txt?tDuisaut=oinBC#quameius", - "rsa.web.web_cookie": "uteirure", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 4674, - "source.ip": "10.155.230.17", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.com", - "url.query": "tet", - "url.registered_domain": "example.com", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "ionevo", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-01-06T09:11:41.000Z", - "event.code": "RNDMMTD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "January 6 07:11:41 ide2767.www5.local %APACHETOMCAT- RNDMMTD: 10.102.229.102||nnum||tenbyCi||[06/Jan/2017:7:11:41 PST]||tco||https://example.net/officiad/itam.html?madmi=tur#roi||niamqui||orem||sno||atno||5263||https://mail.example.net/ntocca/ostru.txt?quiavol=rrorsi#temquiav||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||sec", - "event.timezone": "PST", - "file.name": "niamqui", - "fileset.name": "log", - "host.name": "ide2767.www5.local", - "http.request.referrer": "https://mail.example.net/ntocca/ostru.txt?quiavol=rrorsi#temquiav", - "input.type": "log", - "log.offset": 10224, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/officiad/itam.html?madmi=tur#roi", - "ide2767.www5.local", - "mail.example.net" - ], - "related.ip": [ - "10.102.229.102" - ], - "related.user": [ - "tenbyCi" - ], - "rsa.internal.messageid": "RNDMMTD", - "rsa.misc.action": [ - "tco" - ], - "rsa.misc.result_code": "atno", - "rsa.network.alias_host": [ - "ide2767.www5.local" - ], - "rsa.network.network_service": "sno", - "rsa.time.event_time": "2017-01-06T09:11:41.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://example.net/officiad/itam.html?madmi=tur#roi", - "rsa.web.fqdn": "https://example.net/officiad/itam.html?madmi=tur#roi", - "rsa.web.web_cookie": "sec", - "rsa.web.web_ref_domain": "mail.example.net", - "service.type": "tomcat", - "source.bytes": 5263, - "source.ip": "10.102.229.102", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "orem", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "tenbyCi", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-01-20T04:14:16.000Z", - "event.code": "HEAD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "January 20 14:14:16 sBon1759.invalid %APACHETOMCAT- HEAD: 10.194.14.7||ten||vita||[20/Jan/2017:2:14:16 OMST]||ullamcor||https://mail.example.org/tor/qui.txt?eavolup=fugiatn#docon||etconsec||ios||evolu||ersp||3536||https://www5.example.org/sauteiru/mod.gif?tes=mquame#nihilmol||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||orain", - "event.timezone": "OMST", - "file.name": "etconsec", - "fileset.name": "log", - "host.name": "sBon1759.invalid", - "http.request.referrer": "https://www5.example.org/sauteiru/mod.gif?tes=mquame#nihilmol", - "input.type": "log", - "log.offset": 10625, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.org/tor/qui.txt?eavolup=fugiatn#docon", - "mail.example.org", - "sBon1759.invalid", - "www5.example.org" - ], - "related.ip": [ - "10.194.14.7" - ], - "related.user": [ - "vita" - ], - "rsa.internal.messageid": "HEAD", - "rsa.misc.action": [ - "ullamcor" - ], - "rsa.misc.result_code": "ersp", - "rsa.network.alias_host": [ - "sBon1759.invalid" - ], - "rsa.network.network_service": "evolu", - "rsa.time.event_time": "2017-01-20T04:14:16.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://mail.example.org/tor/qui.txt?eavolup=fugiatn#docon", - "rsa.web.fqdn": "https://mail.example.org/tor/qui.txt?eavolup=fugiatn#docon", - "rsa.web.web_cookie": "orain", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 3536, - "source.ip": "10.194.14.7", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.org", - "url.query": "ios", - "url.registered_domain": "example.org", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "vita", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2017-02-03T11:16:50.000Z", - "event.code": "get", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6113-get: 10.99.0.226||madmi||uidol||[03/Feb/2017:9:16:50 ET]||quameius||https://api.example.net/roid/inibusB.jpg?Nemoenim=squirati#Sedutp||utp||ema||rsitv||iciade||5649||https://example.com/lup/tatemUt.html?upida=tvolupt#eufugi||Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36||uredol", - "event.timezone": "ET", - "file.name": "utp", - "fileset.name": "log", - "http.request.referrer": "https://example.com/lup/tatemUt.html?upida=tvolupt#eufugi", - "input.type": "log", - "log.offset": 11083, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "example.com", - "https://api.example.net/roid/inibusB.jpg?Nemoenim=squirati#Sedutp" - ], - "related.ip": [ - "10.99.0.226" - ], - "related.user": [ - "uidol" - ], - "rsa.internal.level": 6113, - "rsa.internal.messageid": "get", - "rsa.misc.action": [ - "quameius" - ], - "rsa.misc.result_code": "iciade", - "rsa.network.network_service": "rsitv", - "rsa.time.event_time": "2017-02-03T11:16:50.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://api.example.net/roid/inibusB.jpg?Nemoenim=squirati#Sedutp", - "rsa.web.fqdn": "https://api.example.net/roid/inibusB.jpg?Nemoenim=squirati#Sedutp", - "rsa.web.web_cookie": "uredol", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 5649, - "source.ip": "10.99.0.226", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.net", - "url.query": "ema", - "url.registered_domain": "example.net", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "uidol", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2017-02-18T06:19:24.000Z", - "event.code": "DETECT_METHOD_TYPE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6945-DETECT_METHOD_TYPE: 10.107.174.213||tenimad||minimav||[18/Feb/2017:4:19:24 OMST]||taedicta||https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut||uamni||ctet||ati||uine||2438||https://api.example.org/loreme/untu.htm?ven=con#nisist||Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36||ium", - "event.timezone": "OMST", - "file.name": "uamni", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/loreme/untu.htm?ven=con#nisist", - "input.type": "log", - "log.offset": 11478, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.org", - "https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut", - "www.example.net" - ], - "related.ip": [ - "10.107.174.213" - ], - "related.user": [ - "minimav" - ], - "rsa.internal.level": 6945, - "rsa.internal.messageid": "DETECT_METHOD_TYPE", - "rsa.misc.action": [ - "taedicta" - ], - "rsa.misc.result_code": "uine", - "rsa.network.network_service": "ati", - "rsa.time.event_time": "2017-02-18T06:19:24.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut", - "rsa.web.fqdn": "https://www.example.net/str/idolore.txt?eetdolo=cteturad#untut", - "rsa.web.web_cookie": "ium", - "rsa.web.web_ref_domain": "api.example.org", - "service.type": "tomcat", - "source.bytes": 2438, - "source.ip": "10.107.174.213", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.net", - "url.query": "ctet", - "url.registered_domain": "example.net", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "minimav", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2017-03-04T13:21:59.000Z", - "event.code": "ABCD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "March 4 11:21:59 idunt4707.host %APACHETOMCAT- ABCD: 10.84.25.23||laudant||isnost||[04/Mar/2017:11:21:59 CET]||rQuisau||https://mail.example.org/iscinge/ofdeFini.jpg?molli=velitse#oditem||gitsedqu||borios||rsitvolu||quam||5315||https://www.example.org/ineavo/pexe.htm?iadolor=amcol#adeser||Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||gitsed", - "event.timezone": "CET", - "file.name": "gitsedqu", - "fileset.name": "log", - "host.name": "idunt4707.host", - "http.request.referrer": "https://www.example.org/ineavo/pexe.htm?iadolor=amcol#adeser", - "input.type": "log", - "log.offset": 11878, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.org/iscinge/ofdeFini.jpg?molli=velitse#oditem", - "idunt4707.host", - "mail.example.org", - "www.example.org" - ], - "related.ip": [ - "10.84.25.23" - ], - "related.user": [ - "isnost" - ], - "rsa.internal.messageid": "ABCD", - "rsa.misc.action": [ - "rQuisau" - ], - "rsa.misc.result_code": "quam", - "rsa.network.alias_host": [ - "idunt4707.host" - ], - "rsa.network.network_service": "rsitvolu", - "rsa.time.event_time": "2017-03-04T13:21:59.000Z", - "rsa.time.timezone": "CET", - "rsa.web.alias_host": "https://mail.example.org/iscinge/ofdeFini.jpg?molli=velitse#oditem", - "rsa.web.fqdn": "https://mail.example.org/iscinge/ofdeFini.jpg?molli=velitse#oditem", - "rsa.web.web_cookie": "gitsed", - "rsa.web.web_ref_domain": "www.example.org", - "service.type": "tomcat", - "source.bytes": 5315, - "source.ip": "10.84.25.23", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.org", - "url.query": "borios", - "url.registered_domain": "example.org", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "isnost", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2017-03-18T08:24:33.000Z", - "event.code": "uGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4367-uGET: 10.193.143.108||idolo||luptate||[18/Mar/2017:6:24:33 PT]||atisun||https://www.example.org/epre/tobeata.html?quia=iduntu#idestlab||rnatur||ofdeFin||essequam||acommo||3105||https://api.example.com/cusant/atemq.gif?itecto=reetdol#totamre||Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||ercita", - "event.timezone": "PT", - "file.name": "rnatur", - "fileset.name": "log", - "http.request.referrer": "https://api.example.com/cusant/atemq.gif?itecto=reetdol#totamre", - "input.type": "log", - "log.offset": 12362, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.com", - "https://www.example.org/epre/tobeata.html?quia=iduntu#idestlab", - "www.example.org" - ], - "related.ip": [ - "10.193.143.108" - ], - "related.user": [ - "luptate" - ], - "rsa.internal.level": 4367, - "rsa.internal.messageid": "uGET", - "rsa.misc.action": [ - "atisun" - ], - "rsa.misc.result_code": "acommo", - "rsa.network.network_service": "essequam", - "rsa.time.event_time": "2017-03-18T08:24:33.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://www.example.org/epre/tobeata.html?quia=iduntu#idestlab", - "rsa.web.fqdn": "https://www.example.org/epre/tobeata.html?quia=iduntu#idestlab", - "rsa.web.web_cookie": "ercita", - "rsa.web.web_ref_domain": "api.example.com", - "service.type": "tomcat", - "source.bytes": 3105, - "source.ip": "10.193.143.108", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "ofdeFin", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "luptate", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2017-04-02T03:27:07.000Z", - "event.code": "INDEX", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "April 2 01:27:07 emquia1497.www5.lan %APACHETOMCAT- INDEX: 10.190.51.22||uamei||siut||[02/Apr/2017:1:27:07 CT]||uisa||https://example.com/mexe/its.htm?ice=oles#edic||seq||tutlab||sau||atevelit||2450||https://example.org/aperia/ccaeca.gif?ttenby=boris#stenatu||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||orumSe", - "event.timezone": "CT", - "file.name": "seq", - "fileset.name": "log", - "host.name": "emquia1497.www5.lan", - "http.request.referrer": "https://example.org/aperia/ccaeca.gif?ttenby=boris#stenatu", - "input.type": "log", - "log.offset": 12826, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "emquia1497.www5.lan", - "example.com", - "example.org", - "https://example.com/mexe/its.htm?ice=oles#edic" - ], - "related.ip": [ - "10.190.51.22" - ], - "related.user": [ - "siut" - ], - "rsa.internal.messageid": "INDEX", - "rsa.misc.action": [ - "uisa" - ], - "rsa.misc.result_code": "atevelit", - "rsa.network.alias_host": [ - "emquia1497.www5.lan" - ], - "rsa.network.network_service": "sau", - "rsa.time.event_time": "2017-04-02T03:27:07.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://example.com/mexe/its.htm?ice=oles#edic", - "rsa.web.fqdn": "https://example.com/mexe/its.htm?ice=oles#edic", - "rsa.web.web_cookie": "orumSe", - "rsa.web.web_ref_domain": "example.org", - "service.type": "tomcat", - "source.bytes": 2450, - "source.ip": "10.190.51.22", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.com", - "url.query": "tutlab", - "url.registered_domain": "example.com", - "url.top_level_domain": "com", - "user.name": "siut", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-04-16T10:29:41.000Z", - "event.code": "BADMETHOD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "April 16 08:29:41 riat3854.www5.home %APACHETOMCAT- BADMETHOD: 10.194.90.130||siut||tconsect||[16/Apr/2017:8:29:41 PT]||piscinge||https://www.example.com/velitess/naali.htm?nre=veli#volupta||rnatu||elitse||ima||quasia||2382||https://www5.example.com/quamqua/eacommod.html?iumdol=tpersp#stla||mobmail android 2.1.3.3150||sequamni", - "event.timezone": "PT", - "file.name": "rnatu", - "fileset.name": "log", - "host.name": "riat3854.www5.home", - "http.request.referrer": "https://www5.example.com/quamqua/eacommod.html?iumdol=tpersp#stla", - "input.type": "log", - "log.offset": 13211, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.com/velitess/naali.htm?nre=veli#volupta", - "riat3854.www5.home", - "www.example.com", - "www5.example.com" - ], - "related.ip": [ - "10.194.90.130" - ], - "related.user": [ - "tconsect" - ], - "rsa.internal.messageid": "BADMETHOD", - "rsa.misc.action": [ - "piscinge" - ], - "rsa.misc.result_code": "quasia", - "rsa.network.alias_host": [ - "riat3854.www5.home" - ], - "rsa.network.network_service": "ima", - "rsa.time.event_time": "2017-04-16T10:29:41.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://www.example.com/velitess/naali.htm?nre=veli#volupta", - "rsa.web.fqdn": "https://www.example.com/velitess/naali.htm?nre=veli#volupta", - "rsa.web.web_cookie": "sequamni", - "rsa.web.web_ref_domain": "www5.example.com", - "service.type": "tomcat", - "source.bytes": 2382, - "source.ip": "10.194.90.130", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.com", - "url.query": "elitse", - "url.registered_domain": "example.com", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "tconsect", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2017-04-30T05:32:16.000Z", - "event.code": "BDMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6198-BDMTHD: 10.10.213.83||nea||psum||[30/Apr/2017:3:32:16 OMST]||ncididun||https://www.example.org/xeacomm/cinge.txt?apariat=vitaedi#lorsita||dolore||uptate||quidexea||ect||23||https://internal.example.com/ate/odoconse.jpg?quatu=veli#tenim||Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]||labo", - "event.timezone": "OMST", - "file.name": "dolore", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/ate/odoconse.jpg?quatu=veli#tenim", - "input.type": "log", - "log.offset": 13540, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.org/xeacomm/cinge.txt?apariat=vitaedi#lorsita", - "internal.example.com", - "www.example.org" - ], - "related.ip": [ - "10.10.213.83" - ], - "related.user": [ - "psum" - ], - "rsa.internal.level": 6198, - "rsa.internal.messageid": "BDMTHD", - "rsa.misc.action": [ - "ncididun" - ], - "rsa.misc.result_code": "ect", - "rsa.network.network_service": "quidexea", - "rsa.time.event_time": "2017-04-30T05:32:16.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://www.example.org/xeacomm/cinge.txt?apariat=vitaedi#lorsita", - "rsa.web.fqdn": "https://www.example.org/xeacomm/cinge.txt?apariat=vitaedi#lorsita", - "rsa.web.web_cookie": "labo", - "rsa.web.web_ref_domain": "internal.example.com", - "service.type": "tomcat", - "source.bytes": 23, - "source.ip": "10.10.213.83", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "uptate", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "psum", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2017-05-14T12:34:50.000Z", - "event.code": "uGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "May 14 22:34:50 aboreetd5461.host %APACHETOMCAT- uGET: 10.52.125.9||hit||urv||[14/May/2017:10:34:50 ET]||nimid||https://api.example.org/texpli/exeacom.jpg?rita=esseci#tametcon||liqua||mvele||isis||uasiar||2552||https://mail.example.net/loremqu/dantium.htm?teirured=onemulla#dolorem||Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]||rauto", - "event.timezone": "ET", - "file.name": "liqua", - "fileset.name": "log", - "host.name": "aboreetd5461.host", - "http.request.referrer": "https://mail.example.net/loremqu/dantium.htm?teirured=onemulla#dolorem", - "input.type": "log", - "log.offset": 14078, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "aboreetd5461.host", - "api.example.org", - "https://api.example.org/texpli/exeacom.jpg?rita=esseci#tametcon", - "mail.example.net" - ], - "related.ip": [ - "10.52.125.9" - ], - "related.user": [ - "urv" - ], - "rsa.internal.messageid": "uGET", - "rsa.misc.action": [ - "nimid" - ], - "rsa.misc.result_code": "uasiar", - "rsa.network.alias_host": [ - "aboreetd5461.host" - ], - "rsa.network.network_service": "isis", - "rsa.time.event_time": "2017-05-14T12:34:50.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://api.example.org/texpli/exeacom.jpg?rita=esseci#tametcon", - "rsa.web.fqdn": "https://api.example.org/texpli/exeacom.jpg?rita=esseci#tametcon", - "rsa.web.web_cookie": "rauto", - "rsa.web.web_ref_domain": "mail.example.net", - "service.type": "tomcat", - "source.bytes": 2552, - "source.ip": "10.52.125.9", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.org", - "url.query": "mvele", - "url.registered_domain": "example.org", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "urv", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2017-05-29T07:37:24.000Z", - "event.code": "RNDMMTD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-5770-RNDMMTD: 10.19.17.202||nby||mve||[29/May/2017:5:37:24 PT]||isau||https://api.example.net/ibusBon/ven.gif?nsequat=doloreme#dun||reprehe||tincu||suntin||itse||814||https://www5.example.org/intocc/amcorp.html?ssecillu=liqua#olo||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||aec", - "event.timezone": "PT", - "file.name": "reprehe", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/intocc/amcorp.html?ssecillu=liqua#olo", - "input.type": "log", - "log.offset": 14644, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "https://api.example.net/ibusBon/ven.gif?nsequat=doloreme#dun", - "www5.example.org" - ], - "related.ip": [ - "10.19.17.202" - ], - "related.user": [ - "mve" - ], - "rsa.internal.level": 5770, - "rsa.internal.messageid": "RNDMMTD", - "rsa.misc.action": [ - "isau" - ], - "rsa.misc.result_code": "itse", - "rsa.network.network_service": "suntin", - "rsa.time.event_time": "2017-05-29T07:37:24.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://api.example.net/ibusBon/ven.gif?nsequat=doloreme#dun", - "rsa.web.fqdn": "https://api.example.net/ibusBon/ven.gif?nsequat=doloreme#dun", - "rsa.web.web_cookie": "aec", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 814, - "source.ip": "10.19.17.202", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.net", - "url.query": "tincu", - "url.registered_domain": "example.net", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "mve", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-06-12T14:39:58.000Z", - "event.code": "RNDMMTD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "June 12 12:39:58 iquidexe304.mail.test %APACHETOMCAT- RNDMMTD: 10.195.64.5||oreetd||uat||[12/Jun/2017:12:39:58 PT]||moenimi||https://mail.example.org/oconsequ/edquiac.gif?preh=ercit#etMal||qua||rsita||ate||ipsamvo||344||https://api.example.com/tdol/upt.htm?asper=idunt#luptat||Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||ica", - "event.timezone": "PT", - "file.name": "qua", - "fileset.name": "log", - "host.name": "iquidexe304.mail.test", - "http.request.referrer": "https://api.example.com/tdol/upt.htm?asper=idunt#luptat", - "input.type": "log", - "log.offset": 15012, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.com", - "https://mail.example.org/oconsequ/edquiac.gif?preh=ercit#etMal", - "iquidexe304.mail.test", - "mail.example.org" - ], - "related.ip": [ - "10.195.64.5" - ], - "related.user": [ - "uat" - ], - "rsa.internal.messageid": "RNDMMTD", - "rsa.misc.action": [ - "moenimi" - ], - "rsa.misc.result_code": "ipsamvo", - "rsa.network.alias_host": [ - "iquidexe304.mail.test" - ], - "rsa.network.network_service": "ate", - "rsa.time.event_time": "2017-06-12T14:39:58.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://mail.example.org/oconsequ/edquiac.gif?preh=ercit#etMal", - "rsa.web.fqdn": "https://mail.example.org/oconsequ/edquiac.gif?preh=ercit#etMal", - "rsa.web.web_cookie": "ica", - "rsa.web.web_ref_domain": "api.example.com", - "service.type": "tomcat", - "source.bytes": 344, - "source.ip": "10.195.64.5", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.org", - "url.query": "rsita", - "url.registered_domain": "example.org", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "uat", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-06-26T09:42:33.000Z", - "event.code": "POST", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "June 26 19:42:33 remips4828.www5.host %APACHETOMCAT- POST: 10.209.77.194||tvolup||itesseq||[26/Jun/2017:7:42:33 OMST]||snost||https://internal.example.com/llamc/nte.htm?utali=porinc#tetur||xce||dat||aincidu||nimadmin||4843||https://mail.example.com/eumfugi/etdolor.htm?dic=cola#amcor||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||elites", - "event.timezone": "OMST", - "file.name": "xce", - "fileset.name": "log", - "host.name": "remips4828.www5.host", - "http.request.referrer": "https://mail.example.com/eumfugi/etdolor.htm?dic=cola#amcor", - "input.type": "log", - "log.offset": 15419, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://internal.example.com/llamc/nte.htm?utali=porinc#tetur", - "internal.example.com", - "mail.example.com", - "remips4828.www5.host" - ], - "related.ip": [ - "10.209.77.194" - ], - "related.user": [ - "itesseq" - ], - "rsa.internal.messageid": "POST", - "rsa.misc.action": [ - "snost" - ], - "rsa.misc.result_code": "nimadmin", - "rsa.network.alias_host": [ - "remips4828.www5.host" - ], - "rsa.network.network_service": "aincidu", - "rsa.time.event_time": "2017-06-26T09:42:33.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://internal.example.com/llamc/nte.htm?utali=porinc#tetur", - "rsa.web.fqdn": "https://internal.example.com/llamc/nte.htm?utali=porinc#tetur", - "rsa.web.web_cookie": "elites", - "rsa.web.web_ref_domain": "mail.example.com", - "service.type": "tomcat", - "source.bytes": 4843, - "source.ip": "10.209.77.194", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.com", - "url.query": "dat", - "url.registered_domain": "example.com", - "url.subdomain": "internal", - "url.top_level_domain": "com", - "user.name": "itesseq", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2017-07-11T04:45:07.000Z", - "event.code": "MKCOL", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-1952-MKCOL: 10.168.6.90||rem||amvolupt||[11/Jul/2017:2:45:07 GMT+02:00]||atisund||https://example.net/ites/isetq.gif?nisiut=tur#avolupt||ariatur||rer||iconseq||porincid||6941||https://mail.example.org/nofd/dipisci.txt?ilmol=eri#quunt||Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80||tae", - "event.timezone": "GMT+02:00", - "file.name": "ariatur", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.org/nofd/dipisci.txt?ilmol=eri#quunt", - "input.type": "log", - "log.offset": 15838, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/ites/isetq.gif?nisiut=tur#avolupt", - "mail.example.org" - ], - "related.ip": [ - "10.168.6.90" - ], - "related.user": [ - "amvolupt" - ], - "rsa.internal.level": 1952, - "rsa.internal.messageid": "MKCOL", - "rsa.misc.action": [ - "atisund" - ], - "rsa.misc.result_code": "porincid", - "rsa.network.network_service": "iconseq", - "rsa.time.event_time": "2017-07-11T04:45:07.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://example.net/ites/isetq.gif?nisiut=tur#avolupt", - "rsa.web.fqdn": "https://example.net/ites/isetq.gif?nisiut=tur#avolupt", - "rsa.web.web_cookie": "tae", - "rsa.web.web_ref_domain": "mail.example.org", - "service.type": "tomcat", - "source.bytes": 6941, - "source.ip": "10.168.6.90", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "rer", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "amvolupt", - "user_agent.device.name": "Android", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80", - "user_agent.os.full": "Android 5.1.1", - "user_agent.os.name": "Android", - "user_agent.os.version": "5.1.1", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2017-07-25T11:47:41.000Z", - "event.code": "rndmmtd", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-7717-rndmmtd: 10.89.137.238||plica||ore||[25/Jul/2017:9:47:41 OMST]||emqu||https://mail.example.com/acommod/itsedd.html?admin=stenatu#inibu||est||uptatemU||leumiu||tla||4765||https://api.example.org/isa/niamqui.jpg?dqu=pid#rExc||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||erun", - "event.timezone": "OMST", - "file.name": "est", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/isa/niamqui.jpg?dqu=pid#rExc", - "input.type": "log", - "log.offset": 16270, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.org", - "https://mail.example.com/acommod/itsedd.html?admin=stenatu#inibu", - "mail.example.com" - ], - "related.ip": [ - "10.89.137.238" - ], - "related.user": [ - "ore" - ], - "rsa.internal.level": 7717, - "rsa.internal.messageid": "rndmmtd", - "rsa.misc.action": [ - "emqu" - ], - "rsa.misc.result_code": "tla", - "rsa.network.network_service": "leumiu", - "rsa.time.event_time": "2017-07-25T11:47:41.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://mail.example.com/acommod/itsedd.html?admin=stenatu#inibu", - "rsa.web.fqdn": "https://mail.example.com/acommod/itsedd.html?admin=stenatu#inibu", - "rsa.web.web_cookie": "erun", - "rsa.web.web_ref_domain": "api.example.org", - "service.type": "tomcat", - "source.bytes": 4765, - "source.ip": "10.89.137.238", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.com", - "url.query": "uptatemU", - "url.registered_domain": "example.com", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "ore", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2017-08-08T06:50:15.000Z", - "event.code": "OPTIONS", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4574-OPTIONS: 10.246.61.213||ntutlabo||iusmodte||[08/Aug/2017:4:50:15 CT]||loi||https://example.org/Nequepor/eirure.htm?idid=tesse#sequat||giatquov||tconsec||miurerep||toccaec||7645||https://www5.example.net/psaqua/ullamcor.txt?qui=cupi#tame||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||orroq", - "event.timezone": "CT", - "file.name": "giatquov", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/psaqua/ullamcor.txt?qui=cupi#tame", - "input.type": "log", - "log.offset": 16704, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.org", - "https://example.org/Nequepor/eirure.htm?idid=tesse#sequat", - "www5.example.net" - ], - "related.ip": [ - "10.246.61.213" - ], - "related.user": [ - "iusmodte" - ], - "rsa.internal.level": 4574, - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "loi" - ], - "rsa.misc.result_code": "toccaec", - "rsa.network.network_service": "miurerep", - "rsa.time.event_time": "2017-08-08T06:50:15.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://example.org/Nequepor/eirure.htm?idid=tesse#sequat", - "rsa.web.fqdn": "https://example.org/Nequepor/eirure.htm?idid=tesse#sequat", - "rsa.web.web_cookie": "orroq", - "rsa.web.web_ref_domain": "www5.example.net", - "service.type": "tomcat", - "source.bytes": 7645, - "source.ip": "10.246.61.213", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.org", - "url.query": "tconsec", - "url.registered_domain": "example.org", - "url.top_level_domain": "org", - "user.name": "iusmodte", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2017-08-22T13:52:50.000Z", - "event.code": "MKCOL", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "August 22 23:52:50 orin5238.host %APACHETOMCAT- MKCOL: 10.117.44.138||orem||rcit||[22/Aug/2017:11:52:50 PST]||enderit||https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo||oluptas||emvele||isnost||olorem||2760||https://www5.example.net/quunt/acommod.jpg?sit=rumSect#ita||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||aliq", - "event.timezone": "PST", - "file.name": "oluptas", - "fileset.name": "log", - "host.name": "orin5238.host", - "http.request.referrer": "https://www5.example.net/quunt/acommod.jpg?sit=rumSect#ita", - "input.type": "log", - "log.offset": 17094, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo", - "orin5238.host", - "www.example.org", - "www5.example.net" - ], - "related.ip": [ - "10.117.44.138" - ], - "related.user": [ - "rcit" - ], - "rsa.internal.messageid": "MKCOL", - "rsa.misc.action": [ - "enderit" - ], - "rsa.misc.result_code": "olorem", - "rsa.network.alias_host": [ - "orin5238.host" - ], - "rsa.network.network_service": "isnost", - "rsa.time.event_time": "2017-08-22T13:52:50.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo", - "rsa.web.fqdn": "https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo", - "rsa.web.web_cookie": "aliq", - "rsa.web.web_ref_domain": "www5.example.net", - "service.type": "tomcat", - "source.bytes": 2760, - "source.ip": "10.117.44.138", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "emvele", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "rcit", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2017-09-06T08:55:24.000Z", - "event.code": "PRONECT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4801-PRONECT: 10.69.30.196||tore||elits||[06/Sep/2017:6:55:24 OMST]||ruredo||https://example.net/temUt/ptassita.gif?uamnihi=risnis#uov||itlab||urmag||omm||equ||4808||https://www.example.net/siuta/urmagn.html?uptat=idex#ptateve||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||nimveni", - "event.timezone": "OMST", - "file.name": "itlab", - "fileset.name": "log", - "http.request.referrer": "https://www.example.net/siuta/urmagn.html?uptat=idex#ptateve", - "input.type": "log", - "log.offset": 17515, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/temUt/ptassita.gif?uamnihi=risnis#uov", - "www.example.net" - ], - "related.ip": [ - "10.69.30.196" - ], - "related.user": [ - "elits" - ], - "rsa.internal.level": 4801, - "rsa.internal.messageid": "PRONECT", - "rsa.misc.action": [ - "ruredo" - ], - "rsa.misc.result_code": "equ", - "rsa.network.network_service": "omm", - "rsa.time.event_time": "2017-09-06T08:55:24.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://example.net/temUt/ptassita.gif?uamnihi=risnis#uov", - "rsa.web.fqdn": "https://example.net/temUt/ptassita.gif?uamnihi=risnis#uov", - "rsa.web.web_cookie": "nimveni", - "rsa.web.web_ref_domain": "www.example.net", - "service.type": "tomcat", - "source.bytes": 4808, - "source.ip": "10.69.30.196", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "urmag", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "elits", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2017-09-20T03:57:58.000Z", - "event.code": "BADMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-7668-BADMTHD: 10.135.91.88||ercit||eporroq||[20/Sep/2017:1:57:58 CT]||ugiatn||https://api.example.com/dictasun/abore.txt?modocon=ipsu#ntNeq||tate||urExce||asi||ectiono||2241||https://example.org/onu/liquaUte.txt?velillu=ria#atDu||Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||emq", - "event.timezone": "CT", - "file.name": "tate", - "fileset.name": "log", - "http.request.referrer": "https://example.org/onu/liquaUte.txt?velillu=ria#atDu", - "input.type": "log", - "log.offset": 17856, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.com", - "example.org", - "https://api.example.com/dictasun/abore.txt?modocon=ipsu#ntNeq" - ], - "related.ip": [ - "10.135.91.88" - ], - "related.user": [ - "eporroq" - ], - "rsa.internal.level": 7668, - "rsa.internal.messageid": "BADMTHD", - "rsa.misc.action": [ - "ugiatn" - ], - "rsa.misc.result_code": "ectiono", - "rsa.network.network_service": "asi", - "rsa.time.event_time": "2017-09-20T03:57:58.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://api.example.com/dictasun/abore.txt?modocon=ipsu#ntNeq", - "rsa.web.fqdn": "https://api.example.com/dictasun/abore.txt?modocon=ipsu#ntNeq", - "rsa.web.web_cookie": "emq", - "rsa.web.web_ref_domain": "example.org", - "service.type": "tomcat", - "source.bytes": 2241, - "source.ip": "10.135.91.88", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.com", - "url.query": "urExce", - "url.registered_domain": "example.com", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "eporroq", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-10-04T11:00:32.000Z", - "event.code": "ABCD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "October 4 21:00:32 agnaaliq1829.mail.test %APACHETOMCAT- ABCD: 10.81.45.174||tin||fugitse||[04/Oct/2017:9:00:32 CEST]||liquide||https://example.net/Sedutpe/prehen.html?rcit=aecatcup#olabor||estl||erun||iruredol||incidid||7699||https://api.example.org/edquian/loremeu.gif?volupta=dmi#untexpl||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mipsamvo", - "event.timezone": "CEST", - "file.name": "estl", - "fileset.name": "log", - "host.name": "agnaaliq1829.mail.test", - "http.request.referrer": "https://api.example.org/edquian/loremeu.gif?volupta=dmi#untexpl", - "input.type": "log", - "log.offset": 18224, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "agnaaliq1829.mail.test", - "api.example.org", - "example.net", - "https://example.net/Sedutpe/prehen.html?rcit=aecatcup#olabor" - ], - "related.ip": [ - "10.81.45.174" - ], - "related.user": [ - "fugitse" - ], - "rsa.internal.messageid": "ABCD", - "rsa.misc.action": [ - "liquide" - ], - "rsa.misc.result_code": "incidid", - "rsa.network.alias_host": [ - "agnaaliq1829.mail.test" - ], - "rsa.network.network_service": "iruredol", - "rsa.time.event_time": "2017-10-04T11:00:32.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://example.net/Sedutpe/prehen.html?rcit=aecatcup#olabor", - "rsa.web.fqdn": "https://example.net/Sedutpe/prehen.html?rcit=aecatcup#olabor", - "rsa.web.web_cookie": "mipsamvo", - "rsa.web.web_ref_domain": "api.example.org", - "service.type": "tomcat", - "source.bytes": 7699, - "source.ip": "10.81.45.174", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "erun", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "fugitse", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-10-19T06:03:07.000Z", - "event.code": "rndmmtd", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-3517-rndmmtd: 10.87.179.233||mnisiut||avolu||[19/Oct/2017:4:03:07 PST]||eum||https://www.example.org/umetMal/asper.htm?metcons=itasper#uae||mve||uia||iciad||lorem||6137||https://www.example.org/redol/gnaa.htm?aliquamq=dtempori#toditaut||Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||dexerc", - "event.timezone": "PST", - "file.name": "mve", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/redol/gnaa.htm?aliquamq=dtempori#toditaut", - "input.type": "log", - "log.offset": 18644, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.org/umetMal/asper.htm?metcons=itasper#uae", - "www.example.org" - ], - "related.ip": [ - "10.87.179.233" - ], - "related.user": [ - "avolu" - ], - "rsa.internal.level": 3517, - "rsa.internal.messageid": "rndmmtd", - "rsa.misc.action": [ - "eum" - ], - "rsa.misc.result_code": "lorem", - "rsa.network.network_service": "iciad", - "rsa.time.event_time": "2017-10-19T06:03:07.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www.example.org/umetMal/asper.htm?metcons=itasper#uae", - "rsa.web.fqdn": "https://www.example.org/umetMal/asper.htm?metcons=itasper#uae", - "rsa.web.web_cookie": "dexerc", - "rsa.web.web_ref_domain": "www.example.org", - "service.type": "tomcat", - "source.bytes": 6137, - "source.ip": "10.87.179.233", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "uia", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "avolu", - "user_agent.device.name": "Samsung SM-S337TL", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-11-02T13:05:41.000Z", - "event.code": "COOK", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-2669-COOK: 10.198.57.130||hitec||henderit||[02/Nov/2017:11:05:41 OMST]||perspici||https://api.example.net/mquisn/queips.gif?emUte=molestia#quir||eavolup||emip||ver||erc||294||https://example.com/iuntNequ/esseq.txt?remq=veniamq#occ||Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90||emo", - "event.timezone": "OMST", - "file.name": "eavolup", - "fileset.name": "log", - "http.request.referrer": "https://example.com/iuntNequ/esseq.txt?remq=veniamq#occ", - "input.type": "log", - "log.offset": 19027, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "example.com", - "https://api.example.net/mquisn/queips.gif?emUte=molestia#quir" - ], - "related.ip": [ - "10.198.57.130" - ], - "related.user": [ - "henderit" - ], - "rsa.internal.level": 2669, - "rsa.internal.messageid": "COOK", - "rsa.misc.action": [ - "perspici" - ], - "rsa.misc.result_code": "erc", - "rsa.network.network_service": "ver", - "rsa.time.event_time": "2017-11-02T13:05:41.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://api.example.net/mquisn/queips.gif?emUte=molestia#quir", - "rsa.web.fqdn": "https://api.example.net/mquisn/queips.gif?emUte=molestia#quir", - "rsa.web.web_cookie": "emo", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 294, - "source.ip": "10.198.57.130", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.net", - "url.query": "emip", - "url.registered_domain": "example.net", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "henderit", - "user_agent.device.name": "U20", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "44.0.2403.147" - }, - { - "@timestamp": "2017-11-16T08:08:15.000Z", - "event.code": "GET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-494-GET: 10.218.0.197||dolor||econs||[16/Nov/2017:6:08:15 ET]||eritin||https://www.example.net/yCic/nder.jpg?itanim=nesciun#saqu||iscive||quasiar||aeab||teur||609||https://www.example.org/mol/tur.jpg?usmodi=ree#saquaea||Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||eetd", - "event.timezone": "ET", - "file.name": "iscive", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/mol/tur.jpg?usmodi=ree#saquaea", - "input.type": "log", - "log.offset": 19452, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.net/yCic/nder.jpg?itanim=nesciun#saqu", - "www.example.net", - "www.example.org" - ], - "related.ip": [ - "10.218.0.197" - ], - "related.user": [ - "econs" - ], - "rsa.internal.level": 494, - "rsa.internal.messageid": "GET", - "rsa.misc.action": [ - "eritin" - ], - "rsa.misc.result_code": "teur", - "rsa.network.network_service": "aeab", - "rsa.time.event_time": "2017-11-16T08:08:15.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://www.example.net/yCic/nder.jpg?itanim=nesciun#saqu", - "rsa.web.fqdn": "https://www.example.net/yCic/nder.jpg?itanim=nesciun#saqu", - "rsa.web.web_cookie": "eetd", - "rsa.web.web_ref_domain": "www.example.org", - "service.type": "tomcat", - "source.bytes": 609, - "source.ip": "10.218.0.197", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.net", - "url.query": "quasiar", - "url.registered_domain": "example.net", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "econs", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-12-01T03:10:49.000Z", - "event.code": "get", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "December 1 01:10:49 iatqu7310.api.home %APACHETOMCAT- get: 10.123.199.198||irured||illumqui||[01/Dec/2017:1:10:49 PST]||tionula||https://mail.example.com/ecatcupi/uamei.html?nreprehe=onse#olorem||turvel||eratv||ipsa||asuntexp||1390||https://example.com/oremquel/lmole.jpg?boNem=iumt#tsed||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||mpo", - "event.timezone": "PST", - "file.name": "turvel", - "fileset.name": "log", - "host.name": "iatqu7310.api.home", - "http.request.referrer": "https://example.com/oremquel/lmole.jpg?boNem=iumt#tsed", - "input.type": "log", - "log.offset": 19817, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://mail.example.com/ecatcupi/uamei.html?nreprehe=onse#olorem", - "iatqu7310.api.home", - "mail.example.com" - ], - "related.ip": [ - "10.123.199.198" - ], - "related.user": [ - "illumqui" - ], - "rsa.internal.messageid": "get", - "rsa.misc.action": [ - "tionula" - ], - "rsa.misc.result_code": "asuntexp", - "rsa.network.alias_host": [ - "iatqu7310.api.home" - ], - "rsa.network.network_service": "ipsa", - "rsa.time.event_time": "2017-12-01T03:10:49.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://mail.example.com/ecatcupi/uamei.html?nreprehe=onse#olorem", - "rsa.web.fqdn": "https://mail.example.com/ecatcupi/uamei.html?nreprehe=onse#olorem", - "rsa.web.web_cookie": "mpo", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 1390, - "source.ip": "10.123.199.198", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.com", - "url.query": "eratv", - "url.registered_domain": "example.com", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "illumqui", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2017-12-15T10:13:24.000Z", - "event.code": "POST", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "December 15 08:13:24 uamnihil6127.api.domain %APACHETOMCAT- POST: 10.29.119.245||tatnon||leumiur||[15/Dec/2017:8:13:24 ET]||ore||https://internal.example.net/ection/roquisqu.html?ceroinB=nim#utaliqu||rsi||taliqui||mides||ciun||39||https://example.org/iatqu/inBCSedu.gif?urExcep=ema#suntex||Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36||anim", - "event.timezone": "ET", - "file.name": "rsi", - "fileset.name": "log", - "host.name": "uamnihil6127.api.domain", - "http.request.referrer": "https://example.org/iatqu/inBCSedu.gif?urExcep=ema#suntex", - "input.type": "log", - "log.offset": 20237, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.org", - "https://internal.example.net/ection/roquisqu.html?ceroinB=nim#utaliqu", - "internal.example.net", - "uamnihil6127.api.domain" - ], - "related.ip": [ - "10.29.119.245" - ], - "related.user": [ - "leumiur" - ], - "rsa.internal.messageid": "POST", - "rsa.misc.action": [ - "ore" - ], - "rsa.misc.result_code": "ciun", - "rsa.network.alias_host": [ - "uamnihil6127.api.domain" - ], - "rsa.network.network_service": "mides", - "rsa.time.event_time": "2017-12-15T10:13:24.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://internal.example.net/ection/roquisqu.html?ceroinB=nim#utaliqu", - "rsa.web.fqdn": "https://internal.example.net/ection/roquisqu.html?ceroinB=nim#utaliqu", - "rsa.web.web_cookie": "anim", - "rsa.web.web_ref_domain": "example.org", - "service.type": "tomcat", - "source.bytes": 39, - "source.ip": "10.29.119.245", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.net", - "url.query": "taliqui", - "url.registered_domain": "example.net", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "leumiur", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2017-12-29T05:15:58.000Z", - "event.code": "DETECT_METHOD_TYPE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "December 29 15:15:58 uov1629.internal.invalid %APACHETOMCAT- DETECT_METHOD_TYPE: 10.130.175.17||quide||quaU||[29/Dec/2017:3:15:58 PT]||inimav||https://mail.example.net/iutali/itat.txt?Finibus=radi#xeacom||des||atnulapa||billo||rroqu||2170||https://www.example.org/taedi/tquido.html?etconsec=elillum#upt||Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||onsectet", - "event.timezone": "PT", - "file.name": "des", - "fileset.name": "log", - "host.name": "uov1629.internal.invalid", - "http.request.referrer": "https://www.example.org/taedi/tquido.html?etconsec=elillum#upt", - "input.type": "log", - "log.offset": 20688, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.net/iutali/itat.txt?Finibus=radi#xeacom", - "mail.example.net", - "uov1629.internal.invalid", - "www.example.org" - ], - "related.ip": [ - "10.130.175.17" - ], - "related.user": [ - "quaU" - ], - "rsa.internal.messageid": "DETECT_METHOD_TYPE", - "rsa.misc.action": [ - "inimav" - ], - "rsa.misc.result_code": "rroqu", - "rsa.network.alias_host": [ - "uov1629.internal.invalid" - ], - "rsa.network.network_service": "billo", - "rsa.time.event_time": "2017-12-29T05:15:58.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://mail.example.net/iutali/itat.txt?Finibus=radi#xeacom", - "rsa.web.fqdn": "https://mail.example.net/iutali/itat.txt?Finibus=radi#xeacom", - "rsa.web.web_cookie": "onsectet", - "rsa.web.web_ref_domain": "www.example.org", - "service.type": "tomcat", - "source.bytes": 2170, - "source.ip": "10.130.175.17", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.net", - "url.query": "atnulapa", - "url.registered_domain": "example.net", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "quaU", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-01-12T12:18:32.000Z", - "event.code": "PROPFIND", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-5752-PROPFIND: 10.166.90.130||mdolore||eosquira||[12/Jan/2018:10:18:32 CET]||lloinven||https://mail.example.net/lmolesti/apariatu.htm?moe=msequ#uat||lupta||npr||etconsec||caboNem||1043||https://internal.example.org/litesseq/atcupida.html?tob=dolores#equamnih||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||deF", - "event.timezone": "CET", - "file.name": "lupta", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.org/litesseq/atcupida.html?tob=dolores#equamnih", - "input.type": "log", - "log.offset": 21121, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.net/lmolesti/apariatu.htm?moe=msequ#uat", - "internal.example.org", - "mail.example.net" - ], - "related.ip": [ - "10.166.90.130" - ], - "related.user": [ - "eosquira" - ], - "rsa.internal.level": 5752, - "rsa.internal.messageid": "PROPFIND", - "rsa.misc.action": [ - "lloinven" - ], - "rsa.misc.result_code": "caboNem", - "rsa.network.network_service": "etconsec", - "rsa.time.event_time": "2018-01-12T12:18:32.000Z", - "rsa.time.timezone": "CET", - "rsa.web.alias_host": "https://mail.example.net/lmolesti/apariatu.htm?moe=msequ#uat", - "rsa.web.fqdn": "https://mail.example.net/lmolesti/apariatu.htm?moe=msequ#uat", - "rsa.web.web_cookie": "deF", - "rsa.web.web_ref_domain": "internal.example.org", - "service.type": "tomcat", - "source.bytes": 1043, - "source.ip": "10.166.90.130", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.net", - "url.query": "npr", - "url.registered_domain": "example.net", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "eosquira", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-01-27T07:21:06.000Z", - "event.code": "GET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "January 27 05:21:06 orumw5960.www5.home %APACHETOMCAT- GET: 10.248.111.207||dolor||tiumto||[27/Jan/2018:5:21:06 GMT-07:00]||quiavol||https://api.example.org/ratv/alorum.jpg?tali=BCS#qui||ugiatquo||incidid||quin||autemv||6174||https://internal.example.org/mipsumqu/tatio.jpg?admi=onnu#olorema||Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||atatnon", - "event.timezone": "GMT-07:00", - "file.name": "ugiatquo", - "fileset.name": "log", - "host.name": "orumw5960.www5.home", - "http.request.referrer": "https://internal.example.org/mipsumqu/tatio.jpg?admi=onnu#olorema", - "input.type": "log", - "log.offset": 21574, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.org", - "https://api.example.org/ratv/alorum.jpg?tali=BCS#qui", - "internal.example.org", - "orumw5960.www5.home" - ], - "related.ip": [ - "10.248.111.207" - ], - "related.user": [ - "tiumto" - ], - "rsa.internal.messageid": "GET", - "rsa.misc.action": [ - "quiavol" - ], - "rsa.misc.result_code": "autemv", - "rsa.network.alias_host": [ - "orumw5960.www5.home" - ], - "rsa.network.network_service": "quin", - "rsa.time.event_time": "2018-01-27T07:21:06.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://api.example.org/ratv/alorum.jpg?tali=BCS#qui", - "rsa.web.fqdn": "https://api.example.org/ratv/alorum.jpg?tali=BCS#qui", - "rsa.web.web_cookie": "atatnon", - "rsa.web.web_ref_domain": "internal.example.org", - "service.type": "tomcat", - "source.bytes": 6174, - "source.ip": "10.248.111.207", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.org", - "url.query": "incidid", - "url.registered_domain": "example.org", - "url.subdomain": "api", - "url.top_level_domain": "org", - "user.name": "tiumto", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-02-10T14:23:41.000Z", - "event.code": "asdf", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-2940-asdf: 10.185.37.32||ame||tesseq||[10/Feb/2018:12:23:41 GMT+02:00]||tem||https://internal.example.net/gitse/ugitse.jpg?tvolup=tdolore#ventore||red||sinto||tatev||luptas||3286||https://api.example.net/aev/inrepr.gif?iadese=nisiu#imad||Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91||ptatem", - "event.timezone": "GMT+02:00", - "file.name": "red", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/aev/inrepr.gif?iadese=nisiu#imad", - "input.type": "log", - "log.offset": 21994, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "https://internal.example.net/gitse/ugitse.jpg?tvolup=tdolore#ventore", - "internal.example.net" - ], - "related.ip": [ - "10.185.37.32" - ], - "related.user": [ - "tesseq" - ], - "rsa.internal.level": 2940, - "rsa.internal.messageid": "asdf", - "rsa.misc.action": [ - "tem" - ], - "rsa.misc.result_code": "luptas", - "rsa.network.network_service": "tatev", - "rsa.time.event_time": "2018-02-10T14:23:41.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://internal.example.net/gitse/ugitse.jpg?tvolup=tdolore#ventore", - "rsa.web.fqdn": "https://internal.example.net/gitse/ugitse.jpg?tvolup=tdolore#ventore", - "rsa.web.web_cookie": "ptatem", - "rsa.web.web_ref_domain": "api.example.net", - "service.type": "tomcat", - "source.bytes": 3286, - "source.ip": "10.185.37.32", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.net", - "url.query": "sinto", - "url.registered_domain": "example.net", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "tesseq", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-02-24T09:26:15.000Z", - "event.code": "SEARCH", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4927-SEARCH: 10.5.194.202||onproide||ntmo||[24/Feb/2018:7:26:15 CET]||riosa||https://example.org/pisc/urEx.html?rautod=olest#eataev||atcupi||atem||qui||otamr||7278||https://internal.example.com/meaque/uid.htm?tion=tobeatae#maccusa||Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||iqua", - "event.timezone": "CET", - "file.name": "atcupi", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/meaque/uid.htm?tion=tobeatae#maccusa", - "input.type": "log", - "log.offset": 22449, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.org", - "https://example.org/pisc/urEx.html?rautod=olest#eataev", - "internal.example.com" - ], - "related.ip": [ - "10.5.194.202" - ], - "related.user": [ - "ntmo" - ], - "rsa.internal.level": 4927, - "rsa.internal.messageid": "SEARCH", - "rsa.misc.action": [ - "riosa" - ], - "rsa.misc.result_code": "otamr", - "rsa.network.network_service": "qui", - "rsa.time.event_time": "2018-02-24T09:26:15.000Z", - "rsa.time.timezone": "CET", - "rsa.web.alias_host": "https://example.org/pisc/urEx.html?rautod=olest#eataev", - "rsa.web.fqdn": "https://example.org/pisc/urEx.html?rautod=olest#eataev", - "rsa.web.web_cookie": "iqua", - "rsa.web.web_ref_domain": "internal.example.com", - "service.type": "tomcat", - "source.bytes": 7278, - "source.ip": "10.5.194.202", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.org", - "url.query": "atem", - "url.registered_domain": "example.org", - "url.top_level_domain": "org", - "user.name": "ntmo", - "user_agent.device.name": "LM-V350", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-03-11T04:28:49.000Z", - "event.code": "PRONECT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "March 11 02:28:49 deriti6952.mail.domain %APACHETOMCAT- PRONECT: 10.183.34.1||boree||isn||[11/Mar/2018:2:28:49 CEST]||der||https://www5.example.com/aconse/prehe.gif?diduntu=eiusmod#itation||veleum||piciatis||nes||lmolesti||1559||https://www.example.org/emaperia/Section.txt?iame=orroquis#aquio||Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30||ntmoll", - "event.timezone": "CEST", - "file.name": "veleum", - "fileset.name": "log", - "host.name": "deriti6952.mail.domain", - "http.request.referrer": "https://www.example.org/emaperia/Section.txt?iame=orroquis#aquio", - "input.type": "log", - "log.offset": 22822, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "deriti6952.mail.domain", - "https://www5.example.com/aconse/prehe.gif?diduntu=eiusmod#itation", - "www.example.org", - "www5.example.com" - ], - "related.ip": [ - "10.183.34.1" - ], - "related.user": [ - "isn" - ], - "rsa.internal.messageid": "PRONECT", - "rsa.misc.action": [ - "der" - ], - "rsa.misc.result_code": "lmolesti", - "rsa.network.alias_host": [ - "deriti6952.mail.domain" - ], - "rsa.network.network_service": "nes", - "rsa.time.event_time": "2018-03-11T04:28:49.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://www5.example.com/aconse/prehe.gif?diduntu=eiusmod#itation", - "rsa.web.fqdn": "https://www5.example.com/aconse/prehe.gif?diduntu=eiusmod#itation", - "rsa.web.web_cookie": "ntmoll", - "rsa.web.web_ref_domain": "www.example.org", - "service.type": "tomcat", - "source.bytes": 1559, - "source.ip": "10.183.34.1", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.com", - "url.query": "piciatis", - "url.registered_domain": "example.com", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "isn", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2018-03-25T11:31:24.000Z", - "event.code": "CFYZ", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4472-CFYZ: 10.101.163.40||abor||nBCSe||[25/Mar/2018:9:31:24 CEST]||remips||https://mail.example.net/reetdolo/rationev.html?reetdol=uelauda#ema||odi||ptatems||runtmo||ore||3512||https://internal.example.com/undeom/emullamc.jpg?quaer=eetdo#tlab||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||liq", - "event.timezone": "CEST", - "file.name": "odi", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/undeom/emullamc.jpg?quaer=eetdo#tlab", - "input.type": "log", - "log.offset": 23258, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.net/reetdolo/rationev.html?reetdol=uelauda#ema", - "internal.example.com", - "mail.example.net" - ], - "related.ip": [ - "10.101.163.40" - ], - "related.user": [ - "nBCSe" - ], - "rsa.internal.level": 4472, - "rsa.internal.messageid": "CFYZ", - "rsa.misc.action": [ - "remips" - ], - "rsa.misc.result_code": "ore", - "rsa.network.network_service": "runtmo", - "rsa.time.event_time": "2018-03-25T11:31:24.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://mail.example.net/reetdolo/rationev.html?reetdol=uelauda#ema", - "rsa.web.fqdn": "https://mail.example.net/reetdolo/rationev.html?reetdol=uelauda#ema", - "rsa.web.web_cookie": "liq", - "rsa.web.web_ref_domain": "internal.example.com", - "service.type": "tomcat", - "source.bytes": 3512, - "source.ip": "10.101.163.40", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.net", - "url.query": "ptatems", - "url.registered_domain": "example.net", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "nBCSe", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2018-04-08T06:33:58.000Z", - "event.code": "uGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "April 8 16:33:58 nse3421.mail.localhost %APACHETOMCAT- uGET: 10.216.188.152||oremi||ugitsedq||[08/Apr/2018:4:33:58 ET]||atDuis||https://www5.example.com/mUteni/quira.htm?ore=tation#loinve||tatevel||iumdolo||untu||ict||2699||https://internal.example.com/riosamni/icta.gif?umetMa=imadmin#iqui||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||Nequepo", - "event.timezone": "ET", - "file.name": "tatevel", - "fileset.name": "log", - "host.name": "nse3421.mail.localhost", - "http.request.referrer": "https://internal.example.com/riosamni/icta.gif?umetMa=imadmin#iqui", - "input.type": "log", - "log.offset": 23666, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.com/mUteni/quira.htm?ore=tation#loinve", - "internal.example.com", - "nse3421.mail.localhost", - "www5.example.com" - ], - "related.ip": [ - "10.216.188.152" - ], - "related.user": [ - "ugitsedq" - ], - "rsa.internal.messageid": "uGET", - "rsa.misc.action": [ - "atDuis" - ], - "rsa.misc.result_code": "ict", - "rsa.network.alias_host": [ - "nse3421.mail.localhost" - ], - "rsa.network.network_service": "untu", - "rsa.time.event_time": "2018-04-08T06:33:58.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://www5.example.com/mUteni/quira.htm?ore=tation#loinve", - "rsa.web.fqdn": "https://www5.example.com/mUteni/quira.htm?ore=tation#loinve", - "rsa.web.web_cookie": "Nequepo", - "rsa.web.web_ref_domain": "internal.example.com", - "service.type": "tomcat", - "source.bytes": 2699, - "source.ip": "10.216.188.152", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.com", - "url.query": "iumdolo", - "url.registered_domain": "example.com", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "ugitsedq", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-04-22T13:36:32.000Z", - "event.code": "nGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-1033-nGET: 10.94.140.77||veniam||isnisiu||[22/Apr/2018:11:36:32 OMST]||dol||https://www5.example.org/setquas/minim.gif?tutlabor=reseosq#gna||isiutali||lumqu||onulamco||ons||5050||https://mail.example.net/unt/tass.html?tla=mquiad#CSe||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||psa", - "event.timezone": "OMST", - "file.name": "isiutali", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.net/unt/tass.html?tla=mquiad#CSe", - "input.type": "log", - "log.offset": 24141, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.org/setquas/minim.gif?tutlabor=reseosq#gna", - "mail.example.net", - "www5.example.org" - ], - "related.ip": [ - "10.94.140.77" - ], - "related.user": [ - "isnisiu" - ], - "rsa.internal.level": 1033, - "rsa.internal.messageid": "nGET", - "rsa.misc.action": [ - "dol" - ], - "rsa.misc.result_code": "ons", - "rsa.network.network_service": "onulamco", - "rsa.time.event_time": "2018-04-22T13:36:32.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://www5.example.org/setquas/minim.gif?tutlabor=reseosq#gna", - "rsa.web.fqdn": "https://www5.example.org/setquas/minim.gif?tutlabor=reseosq#gna", - "rsa.web.web_cookie": "psa", - "rsa.web.web_ref_domain": "mail.example.net", - "service.type": "tomcat", - "source.bytes": 5050, - "source.ip": "10.94.140.77", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.org", - "url.query": "lumqu", - "url.registered_domain": "example.org", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "isnisiu", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2018-05-07T08:39:06.000Z", - "event.code": "PUT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4133-PUT: 10.223.205.204||lor||ccaec||[07/May/2018:6:39:06 PST]||ommo||https://www.example.com/laudanti/umiurer.txt?rsitvolu=mnisi#usmo||iamea||imaveni||uiacon||iam||7526||https://mail.example.org/oin/itseddoe.html?citati=uamei#eursinto||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||tutla", - "event.timezone": "PST", - "file.name": "iamea", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.org/oin/itseddoe.html?citati=uamei#eursinto", - "input.type": "log", - "log.offset": 24484, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.com/laudanti/umiurer.txt?rsitvolu=mnisi#usmo", - "mail.example.org", - "www.example.com" - ], - "related.ip": [ - "10.223.205.204" - ], - "related.user": [ - "ccaec" - ], - "rsa.internal.level": 4133, - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "ommo" - ], - "rsa.misc.result_code": "iam", - "rsa.network.network_service": "uiacon", - "rsa.time.event_time": "2018-05-07T08:39:06.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www.example.com/laudanti/umiurer.txt?rsitvolu=mnisi#usmo", - "rsa.web.fqdn": "https://www.example.com/laudanti/umiurer.txt?rsitvolu=mnisi#usmo", - "rsa.web.web_cookie": "tutla", - "rsa.web.web_ref_domain": "mail.example.org", - "service.type": "tomcat", - "source.bytes": 7526, - "source.ip": "10.223.205.204", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.com", - "url.query": "imaveni", - "url.registered_domain": "example.com", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "ccaec", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-05-21T03:41:41.000Z", - "event.code": "PUT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "May 21 13:41:41 tautfug689.localdomain %APACHETOMCAT- PUT: 10.85.137.156||atiset||serror||[21/May/2018:1:41:41 CEST]||isiut||https://mail.example.org/ici/nisiuta.jpg?itae=dtempo#atnula||ditautf||itametc||ori||uamqu||2804||https://example.com/quiac/sunt.gif?etdol=dolorsi#nturmag||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||Except", - "event.timezone": "CEST", - "file.name": "ditautf", - "fileset.name": "log", - "host.name": "tautfug689.localdomain", - "http.request.referrer": "https://example.com/quiac/sunt.gif?etdol=dolorsi#nturmag", - "input.type": "log", - "log.offset": 24917, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://mail.example.org/ici/nisiuta.jpg?itae=dtempo#atnula", - "mail.example.org", - "tautfug689.localdomain" - ], - "related.ip": [ - "10.85.137.156" - ], - "related.user": [ - "serror" - ], - "rsa.internal.messageid": "PUT", - "rsa.misc.action": [ - "isiut" - ], - "rsa.misc.result_code": "uamqu", - "rsa.network.alias_host": [ - "tautfug689.localdomain" - ], - "rsa.network.network_service": "ori", - "rsa.time.event_time": "2018-05-21T03:41:41.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://mail.example.org/ici/nisiuta.jpg?itae=dtempo#atnula", - "rsa.web.fqdn": "https://mail.example.org/ici/nisiuta.jpg?itae=dtempo#atnula", - "rsa.web.web_cookie": "Except", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 2804, - "source.ip": "10.85.137.156", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.org", - "url.query": "itametc", - "url.registered_domain": "example.org", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "serror", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-06-04T10:44:15.000Z", - "event.code": "QUALYS", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "June 4 20:44:15 totam6886.api.localhost %APACHETOMCAT- QUALYS: 10.12.54.142||trudex||liquam||[04/Jun/2018:8:44:15 PST]||lor||https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS||iciadese||riatur||oeni||dol||3000||https://www5.example.net/teturadi/ditau.gif?piscivel=hend#eacommo||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||aer", - "event.timezone": "PST", - "file.name": "iciadese", - "fileset.name": "log", - "host.name": "totam6886.api.localhost", - "http.request.referrer": "https://www5.example.net/teturadi/ditau.gif?piscivel=hend#eacommo", - "input.type": "log", - "log.offset": 25326, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS", - "mail.example.com", - "totam6886.api.localhost", - "www5.example.net" - ], - "related.ip": [ - "10.12.54.142" - ], - "related.user": [ - "liquam" - ], - "rsa.internal.messageid": "QUALYS", - "rsa.misc.action": [ - "lor" - ], - "rsa.misc.result_code": "dol", - "rsa.network.alias_host": [ - "totam6886.api.localhost" - ], - "rsa.network.network_service": "oeni", - "rsa.time.event_time": "2018-06-04T10:44:15.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS", - "rsa.web.fqdn": "https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS", - "rsa.web.web_cookie": "aer", - "rsa.web.web_ref_domain": "www5.example.net", - "service.type": "tomcat", - "source.bytes": 3000, - "source.ip": "10.12.54.142", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.com", - "url.query": "riatur", - "url.registered_domain": "example.com", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "liquam", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-06-19T05:46:49.000Z", - "event.code": "RNDMMTD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-3864-RNDMMTD: 10.158.6.52||dolorem||sed||[19/Jun/2018:3:46:49 OMST]||Nemoenim||https://example.net/labori/porai.gif?utali=sed#xeac||umdolors||lumdo||acom||eFini||4262||https://internal.example.org/uovol/prehend.html?eque=eufug#est||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||ntincul", - "event.timezone": "OMST", - "file.name": "umdolors", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.org/uovol/prehend.html?eque=eufug#est", - "input.type": "log", - "log.offset": 25746, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/labori/porai.gif?utali=sed#xeac", - "internal.example.org" - ], - "related.ip": [ - "10.158.6.52" - ], - "related.user": [ - "sed" - ], - "rsa.internal.level": 3864, - "rsa.internal.messageid": "RNDMMTD", - "rsa.misc.action": [ - "Nemoenim" - ], - "rsa.misc.result_code": "eFini", - "rsa.network.network_service": "acom", - "rsa.time.event_time": "2018-06-19T05:46:49.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://example.net/labori/porai.gif?utali=sed#xeac", - "rsa.web.fqdn": "https://example.net/labori/porai.gif?utali=sed#xeac", - "rsa.web.web_cookie": "ntincul", - "rsa.web.web_ref_domain": "internal.example.org", - "service.type": "tomcat", - "source.bytes": 4262, - "source.ip": "10.158.6.52", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "lumdo", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "sed", - "user_agent.device.name": "XiaoMi Redmi 4X", - "user_agent.name": "MiuiBrowser", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g", - "user_agent.os.full": "Android 7.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.1.2", - "user_agent.version": "12.2.3" - }, - { - "@timestamp": "2018-07-03T12:49:23.000Z", - "event.code": "MKCOL", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "July 3 10:49:23 tquo854.api.domain %APACHETOMCAT- MKCOL: 10.195.160.182||ine||urerepre||[03/Jul/2018:10:49:23 CT]||itessequ||https://www5.example.org/orissu/fic.gif?ese=mmodoco#amni||atnul||umfugi||stquidol||Nemoenim||1325||https://example.com/tasnul/tuserr.jpg?amvo=tnul#expl||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||isau", - "event.timezone": "CT", - "file.name": "atnul", - "fileset.name": "log", - "host.name": "tquo854.api.domain", - "http.request.referrer": "https://example.com/tasnul/tuserr.jpg?amvo=tnul#expl", - "input.type": "log", - "log.offset": 26190, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://www5.example.org/orissu/fic.gif?ese=mmodoco#amni", - "tquo854.api.domain", - "www5.example.org" - ], - "related.ip": [ - "10.195.160.182" - ], - "related.user": [ - "urerepre" - ], - "rsa.internal.messageid": "MKCOL", - "rsa.misc.action": [ - "itessequ" - ], - "rsa.misc.result_code": "Nemoenim", - "rsa.network.alias_host": [ - "tquo854.api.domain" - ], - "rsa.network.network_service": "stquidol", - "rsa.time.event_time": "2018-07-03T12:49:23.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://www5.example.org/orissu/fic.gif?ese=mmodoco#amni", - "rsa.web.fqdn": "https://www5.example.org/orissu/fic.gif?ese=mmodoco#amni", - "rsa.web.web_cookie": "isau", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 1325, - "source.ip": "10.195.160.182", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.org", - "url.query": "umfugi", - "url.registered_domain": "example.org", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "urerepre", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-07-17T07:51:58.000Z", - "event.code": "CONNECT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6084-CONNECT: 10.20.68.117||rQuisaut||quas||[17/Jul/2018:5:51:58 ET]||metco||https://mail.example.com/iuntNeq/eddoei.jpg?sseq=eriam#pernat||udan||archi||iutaliq||urQuis||1742||https://example.net/orum/Bonoru.txt?agnamal=quei#quio||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||lamcola", - "event.timezone": "ET", - "file.name": "udan", - "fileset.name": "log", - "http.request.referrer": "https://example.net/orum/Bonoru.txt?agnamal=quei#quio", - "input.type": "log", - "log.offset": 26601, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://mail.example.com/iuntNeq/eddoei.jpg?sseq=eriam#pernat", - "mail.example.com" - ], - "related.ip": [ - "10.20.68.117" - ], - "related.user": [ - "quas" - ], - "rsa.internal.level": 6084, - "rsa.internal.messageid": "CONNECT", - "rsa.misc.action": [ - "metco" - ], - "rsa.misc.result_code": "urQuis", - "rsa.network.network_service": "iutaliq", - "rsa.time.event_time": "2018-07-17T07:51:58.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://mail.example.com/iuntNeq/eddoei.jpg?sseq=eriam#pernat", - "rsa.web.fqdn": "https://mail.example.com/iuntNeq/eddoei.jpg?sseq=eriam#pernat", - "rsa.web.web_cookie": "lamcola", - "rsa.web.web_ref_domain": "example.net", - "service.type": "tomcat", - "source.bytes": 1742, - "source.ip": "10.20.68.117", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.com", - "url.query": "archi", - "url.registered_domain": "example.com", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "quas", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-08-01T14:54:32.000Z", - "event.code": "CONNECT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "August 1 00:54:32 venia6656.api.domain %APACHETOMCAT- CONNECT: 10.94.136.235||mmod||iti||[01/Aug/2018:12:54:32 PST]||amqu||https://www5.example.com/tanimid/onpr.gif?gelitse=oremqu#idex||radip||upta||tetura||rumet||6923||https://www5.example.org/lestia/nde.jpg?pisci=sunt#texplica||Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30||ore", - "event.timezone": "PST", - "file.name": "radip", - "fileset.name": "log", - "host.name": "venia6656.api.domain", - "http.request.referrer": "https://www5.example.org/lestia/nde.jpg?pisci=sunt#texplica", - "input.type": "log", - "log.offset": 26982, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.com/tanimid/onpr.gif?gelitse=oremqu#idex", - "venia6656.api.domain", - "www5.example.com", - "www5.example.org" - ], - "related.ip": [ - "10.94.136.235" - ], - "related.user": [ - "iti" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.misc.action": [ - "amqu" - ], - "rsa.misc.result_code": "rumet", - "rsa.network.alias_host": [ - "venia6656.api.domain" - ], - "rsa.network.network_service": "tetura", - "rsa.time.event_time": "2018-08-01T14:54:32.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www5.example.com/tanimid/onpr.gif?gelitse=oremqu#idex", - "rsa.web.fqdn": "https://www5.example.com/tanimid/onpr.gif?gelitse=oremqu#idex", - "rsa.web.web_cookie": "ore", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 6923, - "source.ip": "10.94.136.235", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.com", - "url.query": "upta", - "url.registered_domain": "example.com", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "iti", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2018-08-15T09:57:06.000Z", - "event.code": "NCIRCLE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "August 15 07:57:06 veniam1216.www5.invalid %APACHETOMCAT- NCIRCLE: 10.152.11.26||expli||ugiat||[15/Aug/2018:7:57:06 GMT+02:00]||oinBCSed||https://www.example.net/ntorever/pisciv.gif?eritq=rehen#ipsamvol||elillum||veleumi||nsequatu||nula||2783||https://example.com/santi/ritati.gif?turadip=dip#idolo||Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10||aco", - "event.timezone": "GMT+02:00", - "file.name": "elillum", - "fileset.name": "log", - "host.name": "veniam1216.www5.invalid", - "http.request.referrer": "https://example.com/santi/ritati.gif?turadip=dip#idolo", - "input.type": "log", - "log.offset": 27454, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://www.example.net/ntorever/pisciv.gif?eritq=rehen#ipsamvol", - "veniam1216.www5.invalid", - "www.example.net" - ], - "related.ip": [ - "10.152.11.26" - ], - "related.user": [ - "ugiat" - ], - "rsa.internal.messageid": "NCIRCLE", - "rsa.misc.action": [ - "oinBCSed" - ], - "rsa.misc.result_code": "nula", - "rsa.network.alias_host": [ - "veniam1216.www5.invalid" - ], - "rsa.network.network_service": "nsequatu", - "rsa.time.event_time": "2018-08-15T09:57:06.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://www.example.net/ntorever/pisciv.gif?eritq=rehen#ipsamvol", - "rsa.web.fqdn": "https://www.example.net/ntorever/pisciv.gif?eritq=rehen#ipsamvol", - "rsa.web.web_cookie": "aco", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 2783, - "source.ip": "10.152.11.26", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.net", - "url.query": "veleumi", - "url.registered_domain": "example.net", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "ugiat", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2018-08-29T04:59:40.000Z", - "event.code": "PRONECT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "August 29 14:59:40 runtm5729.invalid %APACHETOMCAT- PRONECT: 10.82.118.95||bore||ptate||[29/Aug/2018:2:59:40 GMT+02:00]||labo||https://www5.example.com/quu/xeac.htm?abor=oreverit#scip||Finibus||Utenimad||olupta||tau||5211||https://www5.example.com/itametco/vel.htm?rere=pta#nonn||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||met", - "event.timezone": "GMT+02:00", - "file.name": "Finibus", - "fileset.name": "log", - "host.name": "runtm5729.invalid", - "http.request.referrer": "https://www5.example.com/itametco/vel.htm?rere=pta#nonn", - "input.type": "log", - "log.offset": 27908, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.com/quu/xeac.htm?abor=oreverit#scip", - "runtm5729.invalid", - "www5.example.com" - ], - "related.ip": [ - "10.82.118.95" - ], - "related.user": [ - "ptate" - ], - "rsa.internal.messageid": "PRONECT", - "rsa.misc.action": [ - "labo" - ], - "rsa.misc.result_code": "tau", - "rsa.network.alias_host": [ - "runtm5729.invalid" - ], - "rsa.network.network_service": "olupta", - "rsa.time.event_time": "2018-08-29T04:59:40.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://www5.example.com/quu/xeac.htm?abor=oreverit#scip", - "rsa.web.fqdn": "https://www5.example.com/quu/xeac.htm?abor=oreverit#scip", - "rsa.web.web_cookie": "met", - "rsa.web.web_ref_domain": "www5.example.com", - "service.type": "tomcat", - "source.bytes": 5211, - "source.ip": "10.82.118.95", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.com", - "url.query": "Utenimad", - "url.registered_domain": "example.com", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "ptate", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2018-09-12T12:02:15.000Z", - "event.code": "id", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4322-id: 10.187.152.213||conse||ventor||[12/Sep/2018:10:02:15 CEST]||mag||https://www.example.net/mini/Loremip.html?tur=atnonpr#ita||amquaer||aqui||enby||lpa||3948||https://www5.example.net/iat/ffic.htm?cte=aparia#CSe||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||ugitsedq", - "event.timezone": "CEST", - "file.name": "amquaer", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.net/iat/ffic.htm?cte=aparia#CSe", - "input.type": "log", - "log.offset": 28378, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.net/mini/Loremip.html?tur=atnonpr#ita", - "www.example.net", - "www5.example.net" - ], - "related.ip": [ - "10.187.152.213" - ], - "related.user": [ - "ventor" - ], - "rsa.internal.level": 4322, - "rsa.internal.messageid": "id", - "rsa.misc.action": [ - "mag" - ], - "rsa.misc.result_code": "lpa", - "rsa.network.network_service": "enby", - "rsa.time.event_time": "2018-09-12T12:02:15.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://www.example.net/mini/Loremip.html?tur=atnonpr#ita", - "rsa.web.fqdn": "https://www.example.net/mini/Loremip.html?tur=atnonpr#ita", - "rsa.web.web_cookie": "ugitsedq", - "rsa.web.web_ref_domain": "www5.example.net", - "service.type": "tomcat", - "source.bytes": 3948, - "source.ip": "10.187.152.213", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.net", - "url.query": "aqui", - "url.registered_domain": "example.net", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "ventor", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-09-27T07:04:49.000Z", - "event.code": "uGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "September 27 05:04:49 pta6012.www.local %APACHETOMCAT- uGET: 10.98.71.45||destla||fugitse||[27/Sep/2018:5:04:49 GMT+02:00]||eirur||https://www.example.net/duntutla/lamco.txt?isci=Dui#reetdo||ever||civelits||eos||ipitlabo||5440||https://internal.example.net/nonn/hite.htm?ariatur=labo#sautei||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||unt", - "event.timezone": "GMT+02:00", - "file.name": "ever", - "fileset.name": "log", - "host.name": "pta6012.www.local", - "http.request.referrer": "https://internal.example.net/nonn/hite.htm?ariatur=labo#sautei", - "input.type": "log", - "log.offset": 28738, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.net/duntutla/lamco.txt?isci=Dui#reetdo", - "internal.example.net", - "pta6012.www.local", - "www.example.net" - ], - "related.ip": [ - "10.98.71.45" - ], - "related.user": [ - "fugitse" - ], - "rsa.internal.messageid": "uGET", - "rsa.misc.action": [ - "eirur" - ], - "rsa.misc.result_code": "ipitlabo", - "rsa.network.alias_host": [ - "pta6012.www.local" - ], - "rsa.network.network_service": "eos", - "rsa.time.event_time": "2018-09-27T07:04:49.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://www.example.net/duntutla/lamco.txt?isci=Dui#reetdo", - "rsa.web.fqdn": "https://www.example.net/duntutla/lamco.txt?isci=Dui#reetdo", - "rsa.web.web_cookie": "unt", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 5440, - "source.ip": "10.98.71.45", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.net", - "url.query": "civelits", - "url.registered_domain": "example.net", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "fugitse", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2018-10-11T14:07:23.000Z", - "event.code": "uGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-5971-uGET: 10.86.123.33||ugia||meum||[11/Oct/2018:12:07:23 OMST]||doei||https://www5.example.net/tev/nre.html?occaeca=eturadip#ent||rumSecti||Utenima||olore||orumS||757||https://www5.example.org/eursint/orio.txt?iameaqu=aaliquaU#olu||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||yCiceroi", - "event.timezone": "OMST", - "file.name": "rumSecti", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/eursint/orio.txt?iameaqu=aaliquaU#olu", - "input.type": "log", - "log.offset": 29180, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www5.example.net/tev/nre.html?occaeca=eturadip#ent", - "www5.example.net", - "www5.example.org" - ], - "related.ip": [ - "10.86.123.33" - ], - "related.user": [ - "meum" - ], - "rsa.internal.level": 5971, - "rsa.internal.messageid": "uGET", - "rsa.misc.action": [ - "doei" - ], - "rsa.misc.result_code": "orumS", - "rsa.network.network_service": "olore", - "rsa.time.event_time": "2018-10-11T14:07:23.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://www5.example.net/tev/nre.html?occaeca=eturadip#ent", - "rsa.web.fqdn": "https://www5.example.net/tev/nre.html?occaeca=eturadip#ent", - "rsa.web.web_cookie": "yCiceroi", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 757, - "source.ip": "10.86.123.33", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.net", - "url.query": "Utenima", - "url.registered_domain": "example.net", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "meum", - "user_agent.device.name": "XiaoMi Redmi 4X", - "user_agent.name": "MiuiBrowser", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g", - "user_agent.os.full": "Android 7.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.1.2", - "user_agent.version": "12.2.3" - }, - { - "@timestamp": "2018-10-25T09:09:57.000Z", - "event.code": "FGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-2852-FGET: 10.6.112.183||deom||oluptat||[25/Oct/2018:7:09:57 GMT-07:00]||eni||https://www5.example.net/uamnih/nseq.txt?uidolo=umdolore#dmi||tam||oremip||eufugi||dunt||6169||https://api.example.net/uidexeac/sequa.html?modoc=magnam#uinesc||Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||idatat", - "event.timezone": "GMT-07:00", - "file.name": "tam", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/uidexeac/sequa.html?modoc=magnam#uinesc", - "input.type": "log", - "log.offset": 29627, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "https://www5.example.net/uamnih/nseq.txt?uidolo=umdolore#dmi", - "www5.example.net" - ], - "related.ip": [ - "10.6.112.183" - ], - "related.user": [ - "oluptat" - ], - "rsa.internal.level": 2852, - "rsa.internal.messageid": "FGET", - "rsa.misc.action": [ - "eni" - ], - "rsa.misc.result_code": "dunt", - "rsa.network.network_service": "eufugi", - "rsa.time.event_time": "2018-10-25T09:09:57.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://www5.example.net/uamnih/nseq.txt?uidolo=umdolore#dmi", - "rsa.web.fqdn": "https://www5.example.net/uamnih/nseq.txt?uidolo=umdolore#dmi", - "rsa.web.web_cookie": "idatat", - "rsa.web.web_ref_domain": "api.example.net", - "service.type": "tomcat", - "source.bytes": 6169, - "source.ip": "10.6.112.183", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.net", - "url.query": "oremip", - "url.registered_domain": "example.net", - "url.subdomain": "www5", - "url.top_level_domain": "net", - "user.name": "oluptat", - "user_agent.device.name": "LM-V350", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-11-09T04:12:32.000Z", - "event.code": "LOCK", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "November 9 02:12:32 orsi2109.internal.home %APACHETOMCAT- LOCK: 10.227.156.143||sis||idolo||[09/Nov/2018:2:12:32 CEST]||tsedquia||https://example.net/umdolor/isiu.html?mmodi=snostr#eniamqu||inimav||tatevel||midestl||nci||6587||https://www5.example.org/nvolupt/meiusm.htm?aturv=ectetura#obeataev||Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10||seq", - "event.timezone": "CEST", - "file.name": "inimav", - "fileset.name": "log", - "host.name": "orsi2109.internal.home", - "http.request.referrer": "https://www5.example.org/nvolupt/meiusm.htm?aturv=ectetura#obeataev", - "input.type": "log", - "log.offset": 30008, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/umdolor/isiu.html?mmodi=snostr#eniamqu", - "orsi2109.internal.home", - "www5.example.org" - ], - "related.ip": [ - "10.227.156.143" - ], - "related.user": [ - "idolo" - ], - "rsa.internal.messageid": "LOCK", - "rsa.misc.action": [ - "tsedquia" - ], - "rsa.misc.result_code": "nci", - "rsa.network.alias_host": [ - "orsi2109.internal.home" - ], - "rsa.network.network_service": "midestl", - "rsa.time.event_time": "2018-11-09T04:12:32.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://example.net/umdolor/isiu.html?mmodi=snostr#eniamqu", - "rsa.web.fqdn": "https://example.net/umdolor/isiu.html?mmodi=snostr#eniamqu", - "rsa.web.web_cookie": "seq", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 6587, - "source.ip": "10.227.156.143", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "tatevel", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "idolo", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2018-11-23T11:15:06.000Z", - "event.code": "get", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "November 23 09:15:06 quaeabil2539.www5.lan %APACHETOMCAT- get: 10.124.129.248||iamqui||quide||[23/Nov/2018:9:15:06 CT]||cididun||https://example.org/ibusBo/untincu.jpg?lesti=sintocca#mipsumqu||eprehen||hilmole||sequ||sectetu||7182||https://example.net/dolor/lorumwri.htm?mquis=lab#uido||Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mwrit", - "event.timezone": "CT", - "file.name": "eprehen", - "fileset.name": "log", - "host.name": "quaeabil2539.www5.lan", - "http.request.referrer": "https://example.net/dolor/lorumwri.htm?mquis=lab#uido", - "input.type": "log", - "log.offset": 30458, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "example.org", - "https://example.org/ibusBo/untincu.jpg?lesti=sintocca#mipsumqu", - "quaeabil2539.www5.lan" - ], - "related.ip": [ - "10.124.129.248" - ], - "related.user": [ - "quide" - ], - "rsa.internal.messageid": "get", - "rsa.misc.action": [ - "cididun" - ], - "rsa.misc.result_code": "sectetu", - "rsa.network.alias_host": [ - "quaeabil2539.www5.lan" - ], - "rsa.network.network_service": "sequ", - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://example.org/ibusBo/untincu.jpg?lesti=sintocca#mipsumqu", - "rsa.web.fqdn": "https://example.org/ibusBo/untincu.jpg?lesti=sintocca#mipsumqu", - "rsa.web.web_cookie": "mwrit", - "rsa.web.web_ref_domain": "example.net", - "service.type": "tomcat", - "source.bytes": 7182, - "source.ip": "10.124.129.248", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.org", - "url.query": "hilmole", - "url.registered_domain": "example.org", - "url.top_level_domain": "org", - "user.name": "quide", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-12-07T06:17:40.000Z", - "event.code": "CONNECT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "December 7 16:17:40 aal1598.mail.host %APACHETOMCAT- CONNECT: 10.173.125.112||quiavolu||upta||[07/Dec/2018:4:17:40 OMST]||umtota||https://www5.example.org/magnaa/sumquiad.gif?oluptate=Duisa#consequa||eaqueip||itaedict||olorema||rep||3380||https://www5.example.net/siarc/fdeFin.jpg?tobeata=nesciun#amcolab||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||isnisiut", - "event.timezone": "OMST", - "file.name": "eaqueip", - "fileset.name": "log", - "host.name": "aal1598.mail.host", - "http.request.referrer": "https://www5.example.net/siarc/fdeFin.jpg?tobeata=nesciun#amcolab", - "input.type": "log", - "log.offset": 30879, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "aal1598.mail.host", - "https://www5.example.org/magnaa/sumquiad.gif?oluptate=Duisa#consequa", - "www5.example.net", - "www5.example.org" - ], - "related.ip": [ - "10.173.125.112" - ], - "related.user": [ - "upta" - ], - "rsa.internal.messageid": "CONNECT", - "rsa.misc.action": [ - "umtota" - ], - "rsa.misc.result_code": "rep", - "rsa.network.alias_host": [ - "aal1598.mail.host" - ], - "rsa.network.network_service": "olorema", - "rsa.time.event_time": "2018-12-07T06:17:40.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://www5.example.org/magnaa/sumquiad.gif?oluptate=Duisa#consequa", - "rsa.web.fqdn": "https://www5.example.org/magnaa/sumquiad.gif?oluptate=Duisa#consequa", - "rsa.web.web_cookie": "isnisiut", - "rsa.web.web_ref_domain": "www5.example.net", - "service.type": "tomcat", - "source.bytes": 3380, - "source.ip": "10.173.125.112", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.org", - "url.query": "itaedict", - "url.registered_domain": "example.org", - "url.subdomain": "www5", - "url.top_level_domain": "org", - "user.name": "upta", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-12-21T13:20:14.000Z", - "event.code": "GET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-5227-GET: 10.37.156.140||uisnos||olores||[21/Dec/2018:11:20:14 PST]||epo||https://www.example.org/evolup/rvelil.gif?eavolup=ipsumq#evit||tno||iss||taspe||lum||5911||https://api.example.net/eturad/tDuis.htm?enimadmi=tateveli#osa||Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16||idolorem", - "event.timezone": "PST", - "file.name": "tno", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/eturad/tDuis.htm?enimadmi=tateveli#osa", - "input.type": "log", - "log.offset": 31317, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "https://www.example.org/evolup/rvelil.gif?eavolup=ipsumq#evit", - "www.example.org" - ], - "related.ip": [ - "10.37.156.140" - ], - "related.user": [ - "olores" - ], - "rsa.internal.level": 5227, - "rsa.internal.messageid": "GET", - "rsa.misc.action": [ - "epo" - ], - "rsa.misc.result_code": "lum", - "rsa.network.network_service": "taspe", - "rsa.time.event_time": "2018-12-21T13:20:14.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www.example.org/evolup/rvelil.gif?eavolup=ipsumq#evit", - "rsa.web.fqdn": "https://www.example.org/evolup/rvelil.gif?eavolup=ipsumq#evit", - "rsa.web.web_cookie": "idolorem", - "rsa.web.web_ref_domain": "api.example.net", - "service.type": "tomcat", - "source.bytes": 5911, - "source.ip": "10.37.156.140", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "iss", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "olores", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "event.code": "PRONECT", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-5776-PRONECT: 10.121.225.135||ufugi||cin||[05/Jan/2019:6:22:49 ET]||byC||https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex||nse||miurere||evit||uatu||2448||https://www5.example.org/uamestqu/mpor.jpg?hender=ptatemU#seq||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||tnulapa", - "event.timezone": "ET", - "file.name": "nse", - "fileset.name": "log", - "http.request.referrer": "https://www5.example.org/uamestqu/mpor.jpg?hender=ptatemU#seq", - "input.type": "log", - "log.offset": 31660, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex", - "www5.example.org" - ], - "related.ip": [ - "10.121.225.135" - ], - "related.user": [ - "cin" - ], - "rsa.internal.level": 5776, - "rsa.internal.messageid": "PRONECT", - "rsa.misc.action": [ - "byC" - ], - "rsa.misc.result_code": "uatu", - "rsa.network.network_service": "evit", - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex", - "rsa.web.fqdn": "https://example.com/oremip/its.jpg?iavol=natuserr#ostrudex", - "rsa.web.web_cookie": "tnulapa", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 2448, - "source.ip": "10.121.225.135", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.com", - "url.query": "miurere", - "url.registered_domain": "example.com", - "url.top_level_domain": "com", - "user.name": "cin", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2019-01-19T03:25:23.000Z", - "event.code": "DEBUG", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-7708-DEBUG: 10.123.68.56||expl||olore||[19/Jan/2019:1:25:23 CEST]||dentsunt||https://www.example.org/animid/upta.jpg?onnumqua=quioff#iuntN||ipis||itautfu||nesci||tam||1206||https://mail.example.net/tetura/eeufug.txt?modt=iduntutl#rsitam||Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36||ntor", - "event.timezone": "CEST", - "file.name": "ipis", - "fileset.name": "log", - "http.request.referrer": "https://mail.example.net/tetura/eeufug.txt?modt=iduntutl#rsitam", - "input.type": "log", - "log.offset": 32096, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.org/animid/upta.jpg?onnumqua=quioff#iuntN", - "mail.example.net", - "www.example.org" - ], - "related.ip": [ - "10.123.68.56" - ], - "related.user": [ - "olore" - ], - "rsa.internal.level": 7708, - "rsa.internal.messageid": "DEBUG", - "rsa.misc.action": [ - "dentsunt" - ], - "rsa.misc.result_code": "tam", - "rsa.network.network_service": "nesci", - "rsa.time.event_time": "2019-01-19T03:25:23.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://www.example.org/animid/upta.jpg?onnumqua=quioff#iuntN", - "rsa.web.fqdn": "https://www.example.org/animid/upta.jpg?onnumqua=quioff#iuntN", - "rsa.web.web_cookie": "ntor", - "rsa.web.web_ref_domain": "mail.example.net", - "service.type": "tomcat", - "source.bytes": 1206, - "source.ip": "10.123.68.56", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "itautfu", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "olore", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2019-02-02T10:27:57.000Z", - "event.code": "RNDMMTD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "February 2 20:27:57 oid218.api.invalid %APACHETOMCAT- RNDMMTD: 10.63.56.164||iquid||evo||[02/Feb/2019:8:27:57 GMT-07:00]||avolu||https://api.example.net/itesse/expl.html?prehende=lup#tpers||orsitv||temseq||uisaute||uun||4638||https://mail.example.net/nemulla/asp.html?ncul=taliq#tautfugi||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||umd", - "event.timezone": "GMT-07:00", - "file.name": "orsitv", - "fileset.name": "log", - "host.name": "oid218.api.invalid", - "http.request.referrer": "https://mail.example.net/nemulla/asp.html?ncul=taliq#tautfugi", - "input.type": "log", - "log.offset": 32480, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "https://api.example.net/itesse/expl.html?prehende=lup#tpers", - "mail.example.net", - "oid218.api.invalid" - ], - "related.ip": [ - "10.63.56.164" - ], - "related.user": [ - "evo" - ], - "rsa.internal.messageid": "RNDMMTD", - "rsa.misc.action": [ - "avolu" - ], - "rsa.misc.result_code": "uun", - "rsa.network.alias_host": [ - "oid218.api.invalid" - ], - "rsa.network.network_service": "uisaute", - "rsa.time.event_time": "2019-02-02T10:27:57.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://api.example.net/itesse/expl.html?prehende=lup#tpers", - "rsa.web.fqdn": "https://api.example.net/itesse/expl.html?prehende=lup#tpers", - "rsa.web.web_cookie": "umd", - "rsa.web.web_ref_domain": "mail.example.net", - "service.type": "tomcat", - "source.bytes": 4638, - "source.ip": "10.63.56.164", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.net", - "url.query": "temseq", - "url.registered_domain": "example.net", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "evo", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "event.code": "HEAD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "February 17 03:30:32 sectetur2674.www5.test %APACHETOMCAT- HEAD: 10.62.10.137||eeufugi||deomnisi||[17/Feb/2019:3:30:32 ET]||issus||https://example.net/deritinv/evelite.html?iav=odico#rsint||itl||ttenb||olor||quiav||6648||https://example.com/eumfu/lors.gif?upidata=ici#usant||Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10||con", - "event.timezone": "ET", - "file.name": "itl", - "fileset.name": "log", - "host.name": "sectetur2674.www5.test", - "http.request.referrer": "https://example.com/eumfu/lors.gif?upidata=ici#usant", - "input.type": "log", - "log.offset": 32919, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "example.net", - "https://example.net/deritinv/evelite.html?iav=odico#rsint", - "sectetur2674.www5.test" - ], - "related.ip": [ - "10.62.10.137" - ], - "related.user": [ - "deomnisi" - ], - "rsa.internal.messageid": "HEAD", - "rsa.misc.action": [ - "issus" - ], - "rsa.misc.result_code": "quiav", - "rsa.network.alias_host": [ - "sectetur2674.www5.test" - ], - "rsa.network.network_service": "olor", - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://example.net/deritinv/evelite.html?iav=odico#rsint", - "rsa.web.fqdn": "https://example.net/deritinv/evelite.html?iav=odico#rsint", - "rsa.web.web_cookie": "con", - "rsa.web.web_ref_domain": "example.com", - "service.type": "tomcat", - "source.bytes": 6648, - "source.ip": "10.62.10.137", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "ttenb", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "deomnisi", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "event.code": "INDEX", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "March 3 10:33:06 sequatD4487.internal.localhost %APACHETOMCAT- INDEX: 10.89.154.115||oeiusmo||nimv||[03/Mar/2019:10:33:06 GMT+02:00]||tconse||https://example.org/tseddoei/teursint.htm?remagnaa=lamcolab#ceroinB||umqui||citation||temsequi||mquia||1119||https://api.example.net/iveli/conseq.htm?ercitat=taspe#yCiceroi||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||cti", - "event.timezone": "GMT+02:00", - "file.name": "umqui", - "fileset.name": "log", - "host.name": "sequatD4487.internal.localhost", - "http.request.referrer": "https://api.example.net/iveli/conseq.htm?ercitat=taspe#yCiceroi", - "input.type": "log", - "log.offset": 33403, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "example.org", - "https://example.org/tseddoei/teursint.htm?remagnaa=lamcolab#ceroinB", - "sequatD4487.internal.localhost" - ], - "related.ip": [ - "10.89.154.115" - ], - "related.user": [ - "nimv" - ], - "rsa.internal.messageid": "INDEX", - "rsa.misc.action": [ - "tconse" - ], - "rsa.misc.result_code": "mquia", - "rsa.network.alias_host": [ - "sequatD4487.internal.localhost" - ], - "rsa.network.network_service": "temsequi", - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://example.org/tseddoei/teursint.htm?remagnaa=lamcolab#ceroinB", - "rsa.web.fqdn": "https://example.org/tseddoei/teursint.htm?remagnaa=lamcolab#ceroinB", - "rsa.web.web_cookie": "cti", - "rsa.web.web_ref_domain": "api.example.net", - "service.type": "tomcat", - "source.bytes": 1119, - "source.ip": "10.89.154.115", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.org", - "url.query": "citation", - "url.registered_domain": "example.org", - "url.top_level_domain": "org", - "user.name": "nimv", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-03-17T07:35:40.000Z", - "event.code": "TRACE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-4758-TRACE: 10.122.252.130||tuser||mmo||[17/Mar/2019:5:35:40 PST]||tlaboru||https://www5.example.com/ciad/ugiatqu.gif?turveli=isciv#natus||boreet||luptasnu||ento||snostr||3904||https://api.example.org/xerc/Nequep.htm?ria=beat#rro||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||uisau", - "event.timezone": "PST", - "file.name": "boreet", - "fileset.name": "log", - "http.request.referrer": "https://api.example.org/xerc/Nequep.htm?ria=beat#rro", - "input.type": "log", - "log.offset": 33846, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.org", - "https://www5.example.com/ciad/ugiatqu.gif?turveli=isciv#natus", - "www5.example.com" - ], - "related.ip": [ - "10.122.252.130" - ], - "related.user": [ - "mmo" - ], - "rsa.internal.level": 4758, - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "tlaboru" - ], - "rsa.misc.result_code": "snostr", - "rsa.network.network_service": "ento", - "rsa.time.event_time": "2019-03-17T07:35:40.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://www5.example.com/ciad/ugiatqu.gif?turveli=isciv#natus", - "rsa.web.fqdn": "https://www5.example.com/ciad/ugiatqu.gif?turveli=isciv#natus", - "rsa.web.web_cookie": "uisau", - "rsa.web.web_ref_domain": "api.example.org", - "service.type": "tomcat", - "source.bytes": 3904, - "source.ip": "10.122.252.130", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www5.example.com", - "url.query": "luptasnu", - "url.registered_domain": "example.com", - "url.subdomain": "www5", - "url.top_level_domain": "com", - "user.name": "mmo", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2019-04-01T14:38:14.000Z", - "event.code": "id", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-2573-id: 10.195.152.53||ueporroq||ute||[01/Apr/2019:12:38:14 GMT-07:00]||tationu||https://api.example.com/olore/ntutlab.htm?ameaquei=gnama#esciun||tesse||olupta||isno||oluptas||5560||https://www.example.net/rinrepr/dutp.jpg?modo=uiavo#uisaut||mobmail android 2.1.3.3150||paq", - "event.timezone": "GMT-07:00", - "file.name": "tesse", - "fileset.name": "log", - "http.request.referrer": "https://www.example.net/rinrepr/dutp.jpg?modo=uiavo#uisaut", - "input.type": "log", - "log.offset": 34283, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.com", - "https://api.example.com/olore/ntutlab.htm?ameaquei=gnama#esciun", - "www.example.net" - ], - "related.ip": [ - "10.195.152.53" - ], - "related.user": [ - "ute" - ], - "rsa.internal.level": 2573, - "rsa.internal.messageid": "id", - "rsa.misc.action": [ - "tationu" - ], - "rsa.misc.result_code": "oluptas", - "rsa.network.network_service": "isno", - "rsa.time.event_time": "2019-04-01T14:38:14.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://api.example.com/olore/ntutlab.htm?ameaquei=gnama#esciun", - "rsa.web.fqdn": "https://api.example.com/olore/ntutlab.htm?ameaquei=gnama#esciun", - "rsa.web.web_cookie": "paq", - "rsa.web.web_ref_domain": "www.example.net", - "service.type": "tomcat", - "source.bytes": 5560, - "source.ip": "10.195.152.53", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.com", - "url.query": "olupta", - "url.registered_domain": "example.com", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "ute", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "event.code": "ABCD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "April 15 07:40:49 nul5107.www5.domain %APACHETOMCAT- ABCD: 10.9.255.204||illoin||emUtenim||[15/Apr/2019:7:40:49 CT]||uid||https://mail.example.com/rvelil/adese.htm?incidi=aedictas#rumetMa||mexerci||urEx||ditaut||ctetur||3089||https://mail.example.com/oreeu/mea.jpg?tis=oluptat#emi||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||iaeconse", - "event.timezone": "CT", - "file.name": "mexerci", - "fileset.name": "log", - "host.name": "nul5107.www5.domain", - "http.request.referrer": "https://mail.example.com/oreeu/mea.jpg?tis=oluptat#emi", - "input.type": "log", - "log.offset": 34572, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.com/rvelil/adese.htm?incidi=aedictas#rumetMa", - "mail.example.com", - "nul5107.www5.domain" - ], - "related.ip": [ - "10.9.255.204" - ], - "related.user": [ - "emUtenim" - ], - "rsa.internal.messageid": "ABCD", - "rsa.misc.action": [ - "uid" - ], - "rsa.misc.result_code": "ctetur", - "rsa.network.alias_host": [ - "nul5107.www5.domain" - ], - "rsa.network.network_service": "ditaut", - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://mail.example.com/rvelil/adese.htm?incidi=aedictas#rumetMa", - "rsa.web.fqdn": "https://mail.example.com/rvelil/adese.htm?incidi=aedictas#rumetMa", - "rsa.web.web_cookie": "iaeconse", - "rsa.web.web_ref_domain": "mail.example.com", - "service.type": "tomcat", - "source.bytes": 3089, - "source.ip": "10.9.255.204", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.com", - "url.query": "urEx", - "url.registered_domain": "example.com", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "emUtenim", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2019-04-29T04:43:23.000Z", - "event.code": "RNDMMTD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "April 29 14:43:23 nimadmin5630.localdomain %APACHETOMCAT- RNDMMTD: 10.214.235.133||equ||nulapari||[29/Apr/2019:2:43:23 GMT-07:00]||tsunt||https://www.example.org/oremi/ectobeat.gif?oreeu=uasiarch#Malor||boriosa||cillumdo||ditau||moenimip||5930||https://internal.example.net/oreetd/lor.txt?etc=eturadip#nost||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||evel", - "event.timezone": "GMT-07:00", - "file.name": "boriosa", - "fileset.name": "log", - "host.name": "nimadmin5630.localdomain", - "http.request.referrer": "https://internal.example.net/oreetd/lor.txt?etc=eturadip#nost", - "input.type": "log", - "log.offset": 35009, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.org/oremi/ectobeat.gif?oreeu=uasiarch#Malor", - "internal.example.net", - "nimadmin5630.localdomain", - "www.example.org" - ], - "related.ip": [ - "10.214.235.133" - ], - "related.user": [ - "nulapari" - ], - "rsa.internal.messageid": "RNDMMTD", - "rsa.misc.action": [ - "tsunt" - ], - "rsa.misc.result_code": "moenimip", - "rsa.network.alias_host": [ - "nimadmin5630.localdomain" - ], - "rsa.network.network_service": "ditau", - "rsa.time.event_time": "2019-04-29T04:43:23.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://www.example.org/oremi/ectobeat.gif?oreeu=uasiarch#Malor", - "rsa.web.fqdn": "https://www.example.org/oremi/ectobeat.gif?oreeu=uasiarch#Malor", - "rsa.web.web_cookie": "evel", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 5930, - "source.ip": "10.214.235.133", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "cillumdo", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "nulapari", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-05-13T11:45:57.000Z", - "event.code": "TRACE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "May 13 21:45:57 sequuntu3563.internal.test %APACHETOMCAT- TRACE: 10.5.134.204||apari||iarchit||[13/May/2019:9:45:57 PT]||orum||https://api.example.com/orsitam/tiset.jpg?ati=rauto#doloreeu||lors||eumfu||docons||tur||3197||https://api.example.org/uasi/maveniam.html?rspicia=pitl#imi||Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80||taevit", - "event.timezone": "PT", - "file.name": "lors", - "fileset.name": "log", - "host.name": "sequuntu3563.internal.test", - "http.request.referrer": "https://api.example.org/uasi/maveniam.html?rspicia=pitl#imi", - "input.type": "log", - "log.offset": 35444, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.com", - "api.example.org", - "https://api.example.com/orsitam/tiset.jpg?ati=rauto#doloreeu", - "sequuntu3563.internal.test" - ], - "related.ip": [ - "10.5.134.204" - ], - "related.user": [ - "iarchit" - ], - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "orum" - ], - "rsa.misc.result_code": "tur", - "rsa.network.alias_host": [ - "sequuntu3563.internal.test" - ], - "rsa.network.network_service": "docons", - "rsa.time.event_time": "2019-05-13T11:45:57.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://api.example.com/orsitam/tiset.jpg?ati=rauto#doloreeu", - "rsa.web.fqdn": "https://api.example.com/orsitam/tiset.jpg?ati=rauto#doloreeu", - "rsa.web.web_cookie": "taevit", - "rsa.web.web_ref_domain": "api.example.org", - "service.type": "tomcat", - "source.bytes": 3197, - "source.ip": "10.5.134.204", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.com", - "url.query": "eumfu", - "url.registered_domain": "example.com", - "url.subdomain": "api", - "url.top_level_domain": "com", - "user.name": "iarchit", - "user_agent.device.name": "Android", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80", - "user_agent.os.full": "Android 5.1.1", - "user_agent.os.name": "Android", - "user_agent.os.version": "5.1.1", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "event.code": "SEARCH", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6820-SEARCH: 10.144.111.42||sumquia||vento||[28/May/2019:4:48:31 CEST]||asnu||https://example.org/rep/mveni.txt?utpers=num#ctetura||quaerat||tDuisau||aturve||ptateve||7615||https://internal.example.com/tconsect/pariat.gif?etcon=ctobeat#isi||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||lorumw", - "event.timezone": "CEST", - "file.name": "quaerat", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.com/tconsect/pariat.gif?etcon=ctobeat#isi", - "input.type": "log", - "log.offset": 35912, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.org", - "https://example.org/rep/mveni.txt?utpers=num#ctetura", - "internal.example.com" - ], - "related.ip": [ - "10.144.111.42" - ], - "related.user": [ - "vento" - ], - "rsa.internal.level": 6820, - "rsa.internal.messageid": "SEARCH", - "rsa.misc.action": [ - "asnu" - ], - "rsa.misc.result_code": "ptateve", - "rsa.network.network_service": "aturve", - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://example.org/rep/mveni.txt?utpers=num#ctetura", - "rsa.web.fqdn": "https://example.org/rep/mveni.txt?utpers=num#ctetura", - "rsa.web.web_cookie": "lorumw", - "rsa.web.web_ref_domain": "internal.example.com", - "service.type": "tomcat", - "source.bytes": 7615, - "source.ip": "10.144.111.42", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.org", - "url.query": "tDuisau", - "url.registered_domain": "example.org", - "url.top_level_domain": "org", - "user.name": "vento", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "event.code": "FGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-3071-FGET: 10.122.0.80||olupt||ola||[11/Jun/2019:11:51:06 CT]||etquasia||https://example.net/adm/snostr.jpg?tec=itaspe#con||illumdo||antium||remaper||eseosq||2945||https://www.example.com/uae/ata.htm?snulap=cidu#hilmol||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||quamq", - "event.timezone": "CT", - "file.name": "illumdo", - "fileset.name": "log", - "http.request.referrer": "https://www.example.com/uae/ata.htm?snulap=cidu#hilmol", - "input.type": "log", - "log.offset": 36349, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://example.net/adm/snostr.jpg?tec=itaspe#con", - "www.example.com" - ], - "related.ip": [ - "10.122.0.80" - ], - "related.user": [ - "ola" - ], - "rsa.internal.level": 3071, - "rsa.internal.messageid": "FGET", - "rsa.misc.action": [ - "etquasia" - ], - "rsa.misc.result_code": "eseosq", - "rsa.network.network_service": "remaper", - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://example.net/adm/snostr.jpg?tec=itaspe#con", - "rsa.web.fqdn": "https://example.net/adm/snostr.jpg?tec=itaspe#con", - "rsa.web.web_cookie": "quamq", - "rsa.web.web_ref_domain": "www.example.com", - "service.type": "tomcat", - "source.bytes": 2945, - "source.ip": "10.122.0.80", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.net", - "url.query": "antium", - "url.registered_domain": "example.net", - "url.top_level_domain": "net", - "user.name": "ola", - "user_agent.device.name": "XiaoMi Redmi 4X", - "user_agent.name": "MiuiBrowser", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g", - "user_agent.os.full": "Android 7.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.1.2", - "user_agent.version": "12.2.3" - }, - { - "@timestamp": "2019-06-25T08:53:40.000Z", - "event.code": "ABCD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "June 25 18:53:40 tdolo2150.www.example %APACHETOMCAT- ABCD: 10.165.33.19||uamqu||iusmodi||[25/Jun/2019:6:53:40 ET]||aparia||https://mail.example.com/ccusant/epteurs.htm?oidentsu=oditau#onsec||dit||namaliqu||yCic||tetura||1569||https://www.example.net/ttenb/eirure.txt?rem=exer#eeufug||Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||lapari", - "event.timezone": "ET", - "file.name": "dit", - "fileset.name": "log", - "host.name": "tdolo2150.www.example", - "http.request.referrer": "https://www.example.net/ttenb/eirure.txt?rem=exer#eeufug", - "input.type": "log", - "log.offset": 36779, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://mail.example.com/ccusant/epteurs.htm?oidentsu=oditau#onsec", - "mail.example.com", - "tdolo2150.www.example", - "www.example.net" - ], - "related.ip": [ - "10.165.33.19" - ], - "related.user": [ - "iusmodi" - ], - "rsa.internal.messageid": "ABCD", - "rsa.misc.action": [ - "aparia" - ], - "rsa.misc.result_code": "tetura", - "rsa.network.alias_host": [ - "tdolo2150.www.example" - ], - "rsa.network.network_service": "yCic", - "rsa.time.event_time": "2019-06-25T08:53:40.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://mail.example.com/ccusant/epteurs.htm?oidentsu=oditau#onsec", - "rsa.web.fqdn": "https://mail.example.com/ccusant/epteurs.htm?oidentsu=oditau#onsec", - "rsa.web.web_cookie": "lapari", - "rsa.web.web_ref_domain": "www.example.net", - "service.type": "tomcat", - "source.bytes": 1569, - "source.ip": "10.165.33.19", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.com", - "url.query": "namaliqu", - "url.registered_domain": "example.com", - "url.subdomain": "mail", - "url.top_level_domain": "com", - "user.name": "iusmodi", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "event.code": "BADMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "July 10 01:56:14 cinge6032.api.local %APACHETOMCAT- BADMTHD: 10.87.92.17||utlabore||tamr||[10/Jul/2019:1:56:14 CT]||iutaliq||https://mail.example.org/onemul/trudexe.txt?ura=oreeufug#Quisa||quiav||ctionofd||elit||sam||6211||https://internal.example.org/unt/isni.htm?ecillum=olor#amei||Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||quid", - "event.timezone": "CT", - "file.name": "quiav", - "fileset.name": "log", - "host.name": "cinge6032.api.local", - "http.request.referrer": "https://internal.example.org/unt/isni.htm?ecillum=olor#amei", - "input.type": "log", - "log.offset": 37193, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "cinge6032.api.local", - "https://mail.example.org/onemul/trudexe.txt?ura=oreeufug#Quisa", - "internal.example.org", - "mail.example.org" - ], - "related.ip": [ - "10.87.92.17" - ], - "related.user": [ - "tamr" - ], - "rsa.internal.messageid": "BADMTHD", - "rsa.misc.action": [ - "iutaliq" - ], - "rsa.misc.result_code": "sam", - "rsa.network.alias_host": [ - "cinge6032.api.local" - ], - "rsa.network.network_service": "elit", - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "rsa.time.timezone": "CT", - "rsa.web.alias_host": "https://mail.example.org/onemul/trudexe.txt?ura=oreeufug#Quisa", - "rsa.web.fqdn": "https://mail.example.org/onemul/trudexe.txt?ura=oreeufug#Quisa", - "rsa.web.web_cookie": "quid", - "rsa.web.web_ref_domain": "internal.example.org", - "service.type": "tomcat", - "source.bytes": 6211, - "source.ip": "10.87.92.17", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.org", - "url.query": "ctionofd", - "url.registered_domain": "example.org", - "url.subdomain": "mail", - "url.top_level_domain": "org", - "user.name": "tamr", - "user_agent.device.name": "Samsung SM-S337TL", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "event.code": "BADMETHOD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-7615-BADMETHOD: 10.51.52.203||wri||itame||[24/Jul/2019:8:58:48 ET]||dictasun||https://example.com/lorese/olupta.jpg?onsec=idestl#litani||emp||arch||non||mollit||5823||https://internal.example.org/tobeatae/ntut.gif?exe=naa#equat||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||mqu", - "event.timezone": "ET", - "file.name": "emp", - "fileset.name": "log", - "http.request.referrer": "https://internal.example.org/tobeatae/ntut.gif?exe=naa#equat", - "input.type": "log", - "log.offset": 37607, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.com", - "https://example.com/lorese/olupta.jpg?onsec=idestl#litani", - "internal.example.org" - ], - "related.ip": [ - "10.51.52.203" - ], - "related.user": [ - "itame" - ], - "rsa.internal.level": 7615, - "rsa.internal.messageid": "BADMETHOD", - "rsa.misc.action": [ - "dictasun" - ], - "rsa.misc.result_code": "mollit", - "rsa.network.network_service": "non", - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "rsa.time.timezone": "ET", - "rsa.web.alias_host": "https://example.com/lorese/olupta.jpg?onsec=idestl#litani", - "rsa.web.fqdn": "https://example.com/lorese/olupta.jpg?onsec=idestl#litani", - "rsa.web.web_cookie": "mqu", - "rsa.web.web_ref_domain": "internal.example.org", - "service.type": "tomcat", - "source.bytes": 5823, - "source.ip": "10.51.52.203", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.com", - "url.query": "arch", - "url.registered_domain": "example.com", - "url.top_level_domain": "com", - "user.name": "itame", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-08-07T06:01:23.000Z", - "event.code": "rndmmtd", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "August 7 16:01:23 ende6053.local %APACHETOMCAT- rndmmtd: 10.0.211.86||rsp||imipsa||[07/Aug/2019:4:01:23 CEST]||int||https://internal.example.net/llitani/uscipit.html?etcons=etco#iuntN||utfugi||ursintoc||tio||mmodicon||6776||https://internal.example.net/tvol/lup.gif?ollita=qua#ionula||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||cusa", - "event.timezone": "CEST", - "file.name": "utfugi", - "fileset.name": "log", - "host.name": "ende6053.local", - "http.request.referrer": "https://internal.example.net/tvol/lup.gif?ollita=qua#ionula", - "input.type": "log", - "log.offset": 37977, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "ende6053.local", - "https://internal.example.net/llitani/uscipit.html?etcons=etco#iuntN", - "internal.example.net" - ], - "related.ip": [ - "10.0.211.86" - ], - "related.user": [ - "imipsa" - ], - "rsa.internal.messageid": "rndmmtd", - "rsa.misc.action": [ - "int" - ], - "rsa.misc.result_code": "mmodicon", - "rsa.network.alias_host": [ - "ende6053.local" - ], - "rsa.network.network_service": "tio", - "rsa.time.event_time": "2019-08-07T06:01:23.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.alias_host": "https://internal.example.net/llitani/uscipit.html?etcons=etco#iuntN", - "rsa.web.fqdn": "https://internal.example.net/llitani/uscipit.html?etcons=etco#iuntN", - "rsa.web.web_cookie": "cusa", - "rsa.web.web_ref_domain": "internal.example.net", - "service.type": "tomcat", - "source.bytes": 6776, - "source.ip": "10.0.211.86", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.net", - "url.query": "ursintoc", - "url.registered_domain": "example.net", - "url.subdomain": "internal", - "url.top_level_domain": "net", - "user.name": "imipsa", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-08-21T13:03:57.000Z", - "event.code": "OPTIONS", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-264-OPTIONS: 10.106.34.244||eumiu||nim||[21/Aug/2019:11:03:57 PST]||rehen||https://mail.example.net/ptat/mipsu.htm?eturadip=amquaera#rsitamet||leumiur||ssequamn||ave||taliqui||3714||https://example.net/undeomn/ape.jpg?amco=ons#onsecte||Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||atquo", - "event.timezone": "PST", - "file.name": "leumiur", - "fileset.name": "log", - "http.request.referrer": "https://example.net/undeomn/ape.jpg?amco=ons#onsecte", - "input.type": "log", - "log.offset": 38442, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://mail.example.net/ptat/mipsu.htm?eturadip=amquaera#rsitamet", - "mail.example.net" - ], - "related.ip": [ - "10.106.34.244" - ], - "related.user": [ - "nim" - ], - "rsa.internal.level": 264, - "rsa.internal.messageid": "OPTIONS", - "rsa.misc.action": [ - "rehen" - ], - "rsa.misc.result_code": "taliqui", - "rsa.network.network_service": "ave", - "rsa.time.event_time": "2019-08-21T13:03:57.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://mail.example.net/ptat/mipsu.htm?eturadip=amquaera#rsitamet", - "rsa.web.fqdn": "https://mail.example.net/ptat/mipsu.htm?eturadip=amquaera#rsitamet", - "rsa.web.web_cookie": "atquo", - "rsa.web.web_ref_domain": "example.net", - "service.type": "tomcat", - "source.bytes": 3714, - "source.ip": "10.106.34.244", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "mail.example.net", - "url.query": "ssequamn", - "url.registered_domain": "example.net", - "url.subdomain": "mail", - "url.top_level_domain": "net", - "user.name": "nim", - "user_agent.device.name": "Samsung SM-S337TL", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "event.code": "nGET", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-2943-nGET: 10.191.210.188||inculpa||ruredol||[05/Sep/2019:6:06:31 OMST]||ipit||https://www.example.org/quae/periam.html?emoenimi=iquipex#mqu||onorume||abill||ametcon||ofdeFini||7052||https://example.net/tionev/uasiarch.html?qui=ehender#equa||Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36||nimides", - "event.timezone": "OMST", - "file.name": "onorume", - "fileset.name": "log", - "http.request.referrer": "https://example.net/tionev/uasiarch.html?qui=ehender#equa", - "input.type": "log", - "log.offset": 38823, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "example.net", - "https://www.example.org/quae/periam.html?emoenimi=iquipex#mqu", - "www.example.org" - ], - "related.ip": [ - "10.191.210.188" - ], - "related.user": [ - "ruredol" - ], - "rsa.internal.level": 2943, - "rsa.internal.messageid": "nGET", - "rsa.misc.action": [ - "ipit" - ], - "rsa.misc.result_code": "ofdeFini", - "rsa.network.network_service": "ametcon", - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.alias_host": "https://www.example.org/quae/periam.html?emoenimi=iquipex#mqu", - "rsa.web.fqdn": "https://www.example.org/quae/periam.html?emoenimi=iquipex#mqu", - "rsa.web.web_cookie": "nimides", - "rsa.web.web_ref_domain": "example.net", - "service.type": "tomcat", - "source.bytes": 7052, - "source.ip": "10.191.210.188", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "abill", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "ruredol", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2019-09-19T03:09:05.000Z", - "event.code": "BDMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-6165-BDMTHD: 10.2.38.49||asiarc||lor||[19/Sep/2019:1:09:05 GMT+02:00]||snula||https://www.example.com/bori/dipi.gif?utf=dolor#dexe||nemul||Duis||lupt||quatur||5775||https://www.example.org/ipsa/con.gif?uianonnu=tatiset#quira||mobmail android 2.1.3.3150||aea", - "event.timezone": "GMT+02:00", - "file.name": "nemul", - "fileset.name": "log", - "http.request.referrer": "https://www.example.org/ipsa/con.gif?uianonnu=tatiset#quira", - "input.type": "log", - "log.offset": 39233, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "https://www.example.com/bori/dipi.gif?utf=dolor#dexe", - "www.example.com", - "www.example.org" - ], - "related.ip": [ - "10.2.38.49" - ], - "related.user": [ - "lor" - ], - "rsa.internal.level": 6165, - "rsa.internal.messageid": "BDMTHD", - "rsa.misc.action": [ - "snula" - ], - "rsa.misc.result_code": "quatur", - "rsa.network.network_service": "lupt", - "rsa.time.event_time": "2019-09-19T03:09:05.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.alias_host": "https://www.example.com/bori/dipi.gif?utf=dolor#dexe", - "rsa.web.fqdn": "https://www.example.com/bori/dipi.gif?utf=dolor#dexe", - "rsa.web.web_cookie": "aea", - "rsa.web.web_ref_domain": "www.example.org", - "service.type": "tomcat", - "source.bytes": 5775, - "source.ip": "10.2.38.49", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.com", - "url.query": "Duis", - "url.registered_domain": "example.com", - "url.subdomain": "www", - "url.top_level_domain": "com", - "user.name": "lor", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2019-10-03T10:11:40.000Z", - "event.code": "id", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "October 3 20:11:40 didun1193.example %APACHETOMCAT- id: 10.66.92.90||orumwri||atisu||[03/Oct/2019:8:11:40 PST]||tse||https://example.com/iat/tqui.gif?utaliqui=emse#emqui||cipitla||tlab||vel||ionevo||4580||https://mail.example.com/volupta/umfu.gif?tisetq=tDuisaut#dolo||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||samvol", - "event.timezone": "PST", - "file.name": "cipitla", - "fileset.name": "log", - "host.name": "didun1193.example", - "http.request.referrer": "https://mail.example.com/volupta/umfu.gif?tisetq=tDuisaut#dolo", - "input.type": "log", - "log.offset": 39505, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "didun1193.example", - "example.com", - "https://example.com/iat/tqui.gif?utaliqui=emse#emqui", - "mail.example.com" - ], - "related.ip": [ - "10.66.92.90" - ], - "related.user": [ - "atisu" - ], - "rsa.internal.messageid": "id", - "rsa.misc.action": [ - "tse" - ], - "rsa.misc.result_code": "ionevo", - "rsa.network.alias_host": [ - "didun1193.example" - ], - "rsa.network.network_service": "vel", - "rsa.time.event_time": "2019-10-03T10:11:40.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://example.com/iat/tqui.gif?utaliqui=emse#emqui", - "rsa.web.fqdn": "https://example.com/iat/tqui.gif?utaliqui=emse#emqui", - "rsa.web.web_cookie": "samvol", - "rsa.web.web_ref_domain": "mail.example.com", - "service.type": "tomcat", - "source.bytes": 4580, - "source.ip": "10.66.92.90", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.com", - "url.query": "tlab", - "url.registered_domain": "example.com", - "url.top_level_domain": "com", - "user.name": "atisu", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "event.code": "BADMTHD", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "October 18 03:14:14 apari2660.www5.lan %APACHETOMCAT- BADMTHD: 10.97.108.108||fficiad||teirured||[18/Oct/2019:3:14:14 PST]||sistena||https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost||sequines||olor||sequa||lorum||7649||https://mail.example.com/Sedut/tatis.gif?reeufugi=sequines#minimve||Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g||toditau", - "event.timezone": "PST", - "file.name": "sequines", - "fileset.name": "log", - "host.name": "apari2660.www5.lan", - "http.request.referrer": "https://mail.example.com/Sedut/tatis.gif?reeufugi=sequines#minimve", - "input.type": "log", - "log.offset": 39956, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "apari2660.www5.lan", - "example.com", - "https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost", - "mail.example.com" - ], - "related.ip": [ - "10.97.108.108" - ], - "related.user": [ - "teirured" - ], - "rsa.internal.messageid": "BADMTHD", - "rsa.misc.action": [ - "sistena" - ], - "rsa.misc.result_code": "lorum", - "rsa.network.alias_host": [ - "apari2660.www5.lan" - ], - "rsa.network.network_service": "sequa", - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "rsa.time.timezone": "PST", - "rsa.web.alias_host": "https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost", - "rsa.web.fqdn": "https://example.com/caboN/imipsam.jpg?catcupid=ritquiin#quisnost", - "rsa.web.web_cookie": "toditau", - "rsa.web.web_ref_domain": "mail.example.com", - "service.type": "tomcat", - "source.bytes": 7649, - "source.ip": "10.97.108.108", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "example.com", - "url.query": "olor", - "url.registered_domain": "example.com", - "url.top_level_domain": "com", - "user.name": "teirured", - "user_agent.device.name": "XiaoMi Redmi 4X", - "user_agent.name": "MiuiBrowser", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g", - "user_agent.os.full": "Android 7.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.1.2", - "user_agent.version": "12.2.3" - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "event.code": "COOK", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "November 1 10:16:48 nvolupta238.www.host %APACHETOMCAT- COOK: 10.147.147.248||onpr||uira||[01/Nov/2019:10:16:48 CET]||ptatev||https://api.example.net/uiaco/aliqu.txt?udexerci=uae#imveni||econ||aborio||rve||catcup||177||https://www5.example.org/busBon/norumetM.jpg?vitaedi=rna#cons||Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36||lupta", - "event.timezone": "CET", - "file.name": "econ", - "fileset.name": "log", - "host.name": "nvolupta238.www.host", - "http.request.referrer": "https://www5.example.org/busBon/norumetM.jpg?vitaedi=rna#cons", - "input.type": "log", - "log.offset": 40457, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "https://api.example.net/uiaco/aliqu.txt?udexerci=uae#imveni", - "nvolupta238.www.host", - "www5.example.org" - ], - "related.ip": [ - "10.147.147.248" - ], - "related.user": [ - "uira" - ], - "rsa.internal.messageid": "COOK", - "rsa.misc.action": [ - "ptatev" - ], - "rsa.misc.result_code": "catcup", - "rsa.network.alias_host": [ - "nvolupta238.www.host" - ], - "rsa.network.network_service": "rve", - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "rsa.time.timezone": "CET", - "rsa.web.alias_host": "https://api.example.net/uiaco/aliqu.txt?udexerci=uae#imveni", - "rsa.web.fqdn": "https://api.example.net/uiaco/aliqu.txt?udexerci=uae#imveni", - "rsa.web.web_cookie": "lupta", - "rsa.web.web_ref_domain": "www5.example.org", - "service.type": "tomcat", - "source.bytes": 177, - "source.ip": "10.147.147.248", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "api.example.net", - "url.query": "aborio", - "url.registered_domain": "example.net", - "url.subdomain": "api", - "url.top_level_domain": "net", - "user.name": "uira", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-11-15T07:19:22.000Z", - "event.code": "NCIRCLE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "November 15 17:19:22 icer123.mail.example %APACHETOMCAT- NCIRCLE: 10.152.190.61||imvenia||culp||[15/Nov/2019:5:19:22 GMT-07:00]||nesciu||https://www.example.org/roinBCSe/eetdolor.html?tla=iaconseq#sed||sedd||atione||tvolup||oremeu||6708||https://api.example.com/dan/pta.html?oNem=itaedict#eroi||Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36||uptateve", - "event.timezone": "GMT-07:00", - "file.name": "sedd", - "fileset.name": "log", - "host.name": "icer123.mail.example", - "http.request.referrer": "https://api.example.com/dan/pta.html?oNem=itaedict#eroi", - "input.type": "log", - "log.offset": 40863, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.com", - "https://www.example.org/roinBCSe/eetdolor.html?tla=iaconseq#sed", - "icer123.mail.example", - "www.example.org" - ], - "related.ip": [ - "10.152.190.61" - ], - "related.user": [ - "culp" - ], - "rsa.internal.messageid": "NCIRCLE", - "rsa.misc.action": [ - "nesciu" - ], - "rsa.misc.result_code": "oremeu", - "rsa.network.alias_host": [ - "icer123.mail.example" - ], - "rsa.network.network_service": "tvolup", - "rsa.time.event_time": "2019-11-15T07:19:22.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://www.example.org/roinBCSe/eetdolor.html?tla=iaconseq#sed", - "rsa.web.fqdn": "https://www.example.org/roinBCSe/eetdolor.html?tla=iaconseq#sed", - "rsa.web.web_cookie": "uptateve", - "rsa.web.web_ref_domain": "api.example.com", - "service.type": "tomcat", - "source.bytes": 6708, - "source.ip": "10.152.190.61", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.org", - "url.query": "atione", - "url.registered_domain": "example.org", - "url.subdomain": "www", - "url.top_level_domain": "org", - "user.name": "culp", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-11-30T14:21:57.000Z", - "event.code": "DETECT_METHOD_TYPE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "November 30 00:21:57 lumqui6488.api.example %APACHETOMCAT- DETECT_METHOD_TYPE: 10.129.232.105||des||deFini||[30/Nov/2019:12:21:57 GMT-07:00]||aliquaU||https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti||edictasu||eturadi||umS||noru||5321||https://api.example.org/taevitae/tevel.htm?vol=ita#iquipexe||Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36||quamqua", - "event.timezone": "GMT-07:00", - "file.name": "edictasu", - "fileset.name": "log", - "host.name": "lumqui6488.api.example", - "http.request.referrer": "https://api.example.org/taevitae/tevel.htm?vol=ita#iquipexe", - "input.type": "log", - "log.offset": 41290, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.org", - "https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti", - "lumqui6488.api.example", - "www.example.net" - ], - "related.ip": [ - "10.129.232.105" - ], - "related.user": [ - "deFini" - ], - "rsa.internal.messageid": "DETECT_METHOD_TYPE", - "rsa.misc.action": [ - "aliquaU" - ], - "rsa.misc.result_code": "noru", - "rsa.network.alias_host": [ - "lumqui6488.api.example" - ], - "rsa.network.network_service": "umS", - "rsa.time.event_time": "2019-11-30T14:21:57.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.alias_host": "https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti", - "rsa.web.fqdn": "https://www.example.net/tvolu/imve.txt?gnaaliq=quam#deriti", - "rsa.web.web_cookie": "quamqua", - "rsa.web.web_ref_domain": "api.example.org", - "service.type": "tomcat", - "source.bytes": 5321, - "source.ip": "10.129.232.105", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "www.example.net", - "url.query": "eturadi", - "url.registered_domain": "example.net", - "url.subdomain": "www", - "url.top_level_domain": "net", - "user.name": "deFini", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-12-14T09:24:31.000Z", - "event.code": "TRACE", - "event.dataset": "tomcat.log", - "event.module": "tomcat", - "event.original": "%APACHETOMCAT-5473-TRACE: 10.12.173.112||Excepteu||mco||[14/Dec/2019:7:24:31 PT]||undeom||https://internal.example.org/teturadi/radipi.gif?upidatat=mod#niamqui||litsedd||nidol||inBC||hite||423||https://api.example.net/dminimve/remips.txt?uiac=tquii#tesse||Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61||emeumfu", - "event.timezone": "PT", - "file.name": "litsedd", - "fileset.name": "log", - "http.request.referrer": "https://api.example.net/dminimve/remips.txt?uiac=tquii#tesse", - "input.type": "log", - "log.offset": 41781, - "observer.product": "TomCat", - "observer.type": "Web", - "observer.vendor": "Apache", - "related.hosts": [ - "api.example.net", - "https://internal.example.org/teturadi/radipi.gif?upidatat=mod#niamqui", - "internal.example.org" - ], - "related.ip": [ - "10.12.173.112" - ], - "related.user": [ - "mco" - ], - "rsa.internal.level": 5473, - "rsa.internal.messageid": "TRACE", - "rsa.misc.action": [ - "undeom" - ], - "rsa.misc.result_code": "hite", - "rsa.network.network_service": "inBC", - "rsa.time.event_time": "2019-12-14T09:24:31.000Z", - "rsa.time.timezone": "PT", - "rsa.web.alias_host": "https://internal.example.org/teturadi/radipi.gif?upidatat=mod#niamqui", - "rsa.web.fqdn": "https://internal.example.org/teturadi/radipi.gif?upidatat=mod#niamqui", - "rsa.web.web_cookie": "emeumfu", - "rsa.web.web_ref_domain": "api.example.net", - "service.type": "tomcat", - "source.bytes": 423, - "source.ip": "10.12.173.112", - "tags": [ - "forwarded", - "tomcat.log" - ], - "url.domain": "internal.example.org", - "url.query": "nidol", - "url.registered_domain": "example.org", - "url.subdomain": "internal", - "url.top_level_domain": "org", - "user.name": "mco", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/zscaler/README.md b/x-pack/filebeat/module/zscaler/README.md deleted file mode 100644 index 0cd50920c35..00000000000 --- a/x-pack/filebeat/module/zscaler/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# zscaler module - -This is a module for Zscaler NSS logs. - -Autogenerated from RSA NetWitness log parser 2.0 XML zscalernss version 108 -at 2020-07-13 17:55:42.808847 +0000 UTC. - diff --git a/x-pack/filebeat/module/zscaler/_meta/config.yml b/x-pack/filebeat/module/zscaler/_meta/config.yml deleted file mode 100644 index d7c47dc6e70..00000000000 --- a/x-pack/filebeat/module/zscaler/_meta/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -- module: zscaler - zia: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9521 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/module/zscaler/_meta/docs.asciidoc b/x-pack/filebeat/module/zscaler/_meta/docs.asciidoc deleted file mode 100644 index 8a1b07a1372..00000000000 --- a/x-pack/filebeat/module/zscaler/_meta/docs.asciidoc +++ /dev/null @@ -1,76 +0,0 @@ -[role="xpack"] - -:modulename: zscaler -:has-dashboards: false - -== Zscaler module - -deprecated::[8.12.0,"This module is deprecated. Use the https://docs.elastic.co/integrations/zscaler_zia[Zscaler Internet Access] Elastic integration instead."] - -experimental[] - -//temporarily override modulename to create working link -:modulename: zscaler_zia - -include::{libbeat-dir}/shared/integration-link.asciidoc[] - -//reset modulename -:modulename: zscaler - -This is a module for receiving Zscaler NSS logs over Syslog or a file. - -include::../include/gs-link.asciidoc[] - -include::../include/configuring-intro.asciidoc[] - -:fileset_ex: zia - -include::../include/config-option-intro.asciidoc[] - -[float] -==== `zia` fileset settings - -experimental[] - -NOTE: This was converted from RSA NetWitness log parser XML "zscalernss" device revision 108. - -*`var.input`*:: - -The input from which messages are read. One of `file`, `tcp` or `udp`. Defaults to `udp`. - -*`var.syslog_host`*:: - -The address to listen to UDP or TCP based syslog traffic. -Defaults to `localhost`. -Set to `0.0.0.0` to bind to all available interfaces. - -*`var.syslog_port`*:: - -The port to listen for syslog traffic. Defaults to `9521` - -NOTE: Ports below 1024 require Filebeat to run as root. - -*`var.tz_offset`*:: - -By default, datetimes in the logs will be interpreted as relative to -the timezone configured in the host where {beatname_uc} is running. If ingesting -logs from a host on a different timezone, use this field to set the timezone -offset so that datetimes are correctly parsed. Valid values are in the form -±HH:mm, for example, `-07:00` for `UTC-7`. - -*`var.rsa_fields`*:: - -Flag to control the addition of non-ECS fields to the event. Defaults to true, -which causes both ECS and custom fields under `rsa` to be added. - -*`var.keep_raw_fields`*:: - -Flag to control the addition of the raw parser fields to the event. This fields -will be found under `rsa.raw`. The default is false. - -:has-dashboards!: - -:fileset_ex!: - -:modulename!: - diff --git a/x-pack/filebeat/module/zscaler/_meta/fields.yml b/x-pack/filebeat/module/zscaler/_meta/fields.yml deleted file mode 100644 index d8e04d3db90..00000000000 --- a/x-pack/filebeat/module/zscaler/_meta/fields.yml +++ /dev/null @@ -1,5 +0,0 @@ -- key: zscaler - title: Zscaler NSS - description: > - zscaler fields. - fields: diff --git a/x-pack/filebeat/module/zscaler/fields.go b/x-pack/filebeat/module/zscaler/fields.go deleted file mode 100644 index e5a42369cc3..00000000000 --- a/x-pack/filebeat/module/zscaler/fields.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. - -package zscaler - -import ( - "github.com/elastic/beats/v7/libbeat/asset" -) - -func init() { - if err := asset.SetFields("filebeat", "zscaler", asset.ModuleFieldsPri, AssetZscaler); err != nil { - panic(err) - } -} - -// AssetZscaler returns asset data. -// This is the base64 encoded zlib format compressed contents of module/zscaler. -func AssetZscaler() string { - return "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" -} diff --git a/x-pack/filebeat/module/zscaler/zia/_meta/fields.yml b/x-pack/filebeat/module/zscaler/zia/_meta/fields.yml deleted file mode 100644 index 08a34153c4f..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/_meta/fields.yml +++ /dev/null @@ -1,2635 +0,0 @@ -- name: network.interface.name - overwrite: true - type: keyword - description: > - Name of the network interface where the traffic has been observed. -- name: rsa - overwrite: true - type: group - fields: - - name: internal - overwrite: true - type: group - fields: - - name: msg - overwrite: true - type: keyword - description: This key is used to capture the raw message that comes into the - Log Decoder - - name: messageid - overwrite: true - type: keyword - - name: event_desc - overwrite: true - type: keyword - - name: message - overwrite: true - type: keyword - description: This key captures the contents of instant messages - - name: time - overwrite: true - type: date - description: This is the time at which a session hits a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness. - - name: level - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: msg_id - overwrite: true - type: keyword - description: This is the Message ID1 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: msg_vid - overwrite: true - type: keyword - description: This is the Message ID2 value that identifies the exact log parser - definition which parses a particular log session. This key should never be - used to parse Meta data from a session (Logs/Packets) Directly, this is a - Reserved key in NetWitness - - name: data - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_server - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_val - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: resource - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: obj_id - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: statement - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: audit_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: entry - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: hcode - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: inode - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: resource_class - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: dead - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: feed_desc - overwrite: true - type: keyword - description: This is used to capture the description of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: feed_name - overwrite: true - type: keyword - description: This is used to capture the name of the feed. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: cid - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Concentrator. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_class - overwrite: true - type: keyword - description: This is the Classification of the Log Event Source under a predefined - fixed set of Event Source Classifications. This key should never be used to - parse Meta data from a session (Logs/Packets) Directly, this is a Reserved - key in NetWitness - - name: device_group - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_host - overwrite: true - type: keyword - description: This is the Hostname of the log Event Source sending the logs to - NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ip - overwrite: true - type: ip - description: This is the IPv4 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_ipv6 - overwrite: true - type: ip - description: This is the IPv6 address of the Log Event Source sending the logs - to NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: device_type - overwrite: true - type: keyword - description: This is the name of the log parser which parsed a given session. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: device_type_id - overwrite: true - type: long - description: Deprecated key defined only in table map. - - name: did - overwrite: true - type: keyword - description: This is the unique identifier used to identify a NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: entropy_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: entropy_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the Meta Type can - be either UInt16 or Float32 based on the configuration - - name: event_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: feed_category - overwrite: true - type: keyword - description: This is used to capture the category of the feed. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: forward_ip - overwrite: true - type: ip - description: This key should be used to capture the IPV4 address of a relay - system which forwarded the events from the original system to NetWitness. - - name: forward_ipv6 - overwrite: true - type: ip - description: This key is used to capture the IPV6 address of a relay system - which forwarded the events from the original system to NetWitness. This key - should never be used to parse Meta data from a session (Logs/Packets) Directly, - this is a Reserved key in NetWitness - - name: header_id - overwrite: true - type: keyword - description: This is the Header ID value that identifies the exact log parser - header definition that parses a particular log session. This key should never - be used to parse Meta data from a session (Logs/Packets) Directly, this is - a Reserved key in NetWitness - - name: lc_cid - overwrite: true - type: keyword - description: This is a unique Identifier of a Log Collector. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: lc_ctime - overwrite: true - type: date - description: This is the time at which a log is collected in a NetWitness Log - Collector. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: mcb_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - request is simply which byte for each side (0 thru 255) was seen the most - - name: mcb_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - response is simply which byte for each side (0 thru 255) was seen the most - - name: mcbc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: mcbc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the most common byte - count is the number of times the most common byte (above) was seen in the - session streams - - name: medium - overwrite: true - type: long - description: "This key is used to identify if it\u2019s a log/packet session\ - \ or Layer 2 Encapsulation Type. This key should never be used to parse Meta\ - \ data from a session (Logs/Packets) Directly, this is a Reserved key in NetWitness.\ - \ 32 = log, 33 = correlation session, < 32 is packet session" - - name: node_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: nwe_callback_id - overwrite: true - type: keyword - description: This key denotes that event is endpoint related - - name: parse_error - overwrite: true - type: keyword - description: This is a special key that stores any Meta key validation error - found while parsing a log session. This key should never be used to parse - Meta data from a session (Logs/Packets) Directly, this is a Reserved key in - NetWitness - - name: payload_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: payload_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, the payload size metrics - are the payload sizes of each session side at the time of parsing. However, - in order to keep - - name: process_vid_dst - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the target process. - - name: process_vid_src - overwrite: true - type: keyword - description: Endpoint generates and uses a unique virtual ID to identify any - similar group of process. This ID represents the source process. - - name: rid - overwrite: true - type: long - description: This is a special ID of the Remote Session created by NetWitness - Decoder. This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: session_split - overwrite: true - type: keyword - description: This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: site - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: size - overwrite: true - type: long - description: This is the size of the session as seen by the NetWitness Decoder. - This key should never be used to parse Meta data from a session (Logs/Packets) - Directly, this is a Reserved key in NetWitness - - name: sourcefile - overwrite: true - type: keyword - description: This is the name of the log file or PCAPs that can be imported - into NetWitness. This key should never be used to parse Meta data from a session - (Logs/Packets) Directly, this is a Reserved key in NetWitness - - name: ubc_req - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: ubc_res - overwrite: true - type: long - description: This key is only used by the Entropy Parser, Unique byte count - is the number of unique bytes seen in each stream. 256 would mean all byte - values of 0 thru 255 were seen at least once - - name: word - overwrite: true - type: keyword - description: This is used by the Word Parsing technology to capture the first - 5 character of every word in an unparsed log - - name: time - overwrite: true - type: group - fields: - - name: event_time - overwrite: true - type: date - description: This key is used to capture the time mentioned in a raw session - that represents the actual time an event occured in a standard normalized - form - - name: duration_time - overwrite: true - type: double - description: This key is used to capture the normalized duration/lifetime in - seconds. - - name: event_time_str - overwrite: true - type: keyword - description: This key is used to capture the incomplete time mentioned in a - session as a string - - name: starttime - overwrite: true - type: date - description: This key is used to capture the Start time mentioned in a session - in a standard form - - name: month - overwrite: true - type: keyword - - name: day - overwrite: true - type: keyword - - name: endtime - overwrite: true - type: date - description: This key is used to capture the End time mentioned in a session - in a standard form - - name: timezone - overwrite: true - type: keyword - description: This key is used to capture the timezone of the Event Time - - name: duration_str - overwrite: true - type: keyword - description: A text string version of the duration - - name: date - overwrite: true - type: keyword - - name: year - overwrite: true - type: keyword - - name: recorded_time - overwrite: true - type: date - description: The event time as recorded by the system the event is collected - from. The usage scenario is a multi-tier application where the management - layer of the system records it's own timestamp at the time of collection from - its child nodes. Must be in timestamp format. - - name: datetime - overwrite: true - type: keyword - - name: effective_time - overwrite: true - type: date - description: This key is the effective time referenced by an individual event - in a Standard Timestamp format - - name: expire_time - overwrite: true - type: date - description: This key is the timestamp that explicitly refers to an expiration. - - name: process_time - overwrite: true - type: keyword - description: Deprecated, use duration.time - - name: hour - overwrite: true - type: keyword - - name: min - overwrite: true - type: keyword - - name: timestamp - overwrite: true - type: keyword - - name: event_queue_time - overwrite: true - type: date - description: This key is the Time that the event was queued. - - name: p_time1 - overwrite: true - type: keyword - - name: tzone - overwrite: true - type: keyword - - name: eventtime - overwrite: true - type: keyword - - name: gmtdate - overwrite: true - type: keyword - - name: gmttime - overwrite: true - type: keyword - - name: p_date - overwrite: true - type: keyword - - name: p_month - overwrite: true - type: keyword - - name: p_time - overwrite: true - type: keyword - - name: p_time2 - overwrite: true - type: keyword - - name: p_year - overwrite: true - type: keyword - - name: expire_time_str - overwrite: true - type: keyword - description: This key is used to capture incomplete timestamp that explicitly - refers to an expiration. - - name: stamp - overwrite: true - type: date - description: Deprecated key defined only in table map. - - name: misc - overwrite: true - type: group - fields: - - name: action - overwrite: true - type: keyword - - name: result - overwrite: true - type: keyword - description: This key is used to capture the outcome/result string value of - an action in a session. - - name: severity - overwrite: true - type: keyword - description: This key is used to capture the severity given the session - - name: event_type - overwrite: true - type: keyword - description: This key captures the event category type as specified by the event - source. - - name: reference_id - overwrite: true - type: keyword - description: This key is used to capture an event id from the session directly - - name: version - overwrite: true - type: keyword - description: This key captures Version of the application or OS which is generating - the event. - - name: disposition - overwrite: true - type: keyword - description: This key captures the The end state of an action. - - name: result_code - overwrite: true - type: keyword - description: This key is used to capture the outcome/result numeric value of - an action in a session - - name: category - overwrite: true - type: keyword - description: This key is used to capture the category of an event given by the - vendor in the session - - name: obj_name - overwrite: true - type: keyword - description: This is used to capture name of object - - name: obj_type - overwrite: true - type: keyword - description: This is used to capture type of object - - name: event_source - overwrite: true - type: keyword - description: "This key captures Source of the event that\u2019s not a hostname" - - name: log_session_id - overwrite: true - type: keyword - description: This key is used to capture a sessionid from the session directly - - name: group - overwrite: true - type: keyword - description: This key captures the Group Name value - - name: policy_name - overwrite: true - type: keyword - description: This key is used to capture the Policy Name only. - - name: rule_name - overwrite: true - type: keyword - description: This key captures the Rule Name - - name: context - overwrite: true - type: keyword - description: This key captures Information which adds additional context to - the event. - - name: change_new - overwrite: true - type: keyword - description: "This key is used to capture the new values of the attribute that\u2019\ - s changing in a session" - - name: space - overwrite: true - type: keyword - - name: client - overwrite: true - type: keyword - description: This key is used to capture only the name of the client application - requesting resources of the server. See the user.agent meta key for capture - of the specific user agent identifier or browser identification string. - - name: msgIdPart1 - overwrite: true - type: keyword - - name: msgIdPart2 - overwrite: true - type: keyword - - name: change_old - overwrite: true - type: keyword - description: "This key is used to capture the old value of the attribute that\u2019\ - s changing in a session" - - name: operation_id - overwrite: true - type: keyword - description: An alert number or operation number. The values should be unique - and non-repeating. - - name: event_state - overwrite: true - type: keyword - description: This key captures the current state of the object/item referenced - within the event. Describing an on-going event. - - name: group_object - overwrite: true - type: keyword - description: This key captures a collection/grouping of entities. Specific usage - - name: node - overwrite: true - type: keyword - description: Common use case is the node name within a cluster. The cluster - name is reflected by the host name. - - name: rule - overwrite: true - type: keyword - description: This key captures the Rule number - - name: device_name - overwrite: true - type: keyword - description: 'This is used to capture name of the Device associated with the - node Like: a physical disk, printer, etc' - - name: param - overwrite: true - type: keyword - description: This key is the parameters passed as part of a command or application, - etc. - - name: change_attrib - overwrite: true - type: keyword - description: "This key is used to capture the name of the attribute that\u2019\ - s changing in a session" - - name: event_computer - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - fully qualified domain name in a windows log. - - name: reference_id1 - overwrite: true - type: keyword - description: This key is for Linked ID to be used as an addition to "reference.id" - - name: event_log - overwrite: true - type: keyword - description: This key captures the Name of the event log - - name: OS - overwrite: true - type: keyword - description: This key captures the Name of the Operating System - - name: terminal - overwrite: true - type: keyword - description: This key captures the Terminal Names only - - name: msgIdPart3 - overwrite: true - type: keyword - - name: filter - overwrite: true - type: keyword - description: This key captures Filter used to reduce result set - - name: serial_number - overwrite: true - type: keyword - description: This key is the Serial number associated with a physical asset. - - name: checksum - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the entity - such as a file or process. Checksum should be used over checksum.src or checksum.dst - when it is unclear whether the entity is a source or target of an action. - - name: event_user - overwrite: true - type: keyword - description: This key is a windows only concept, where this key is used to capture - combination of domain name and username in a windows log. - - name: virusname - overwrite: true - type: keyword - description: This key captures the name of the virus - - name: content_type - overwrite: true - type: keyword - description: This key is used to capture Content Type only. - - name: group_id - overwrite: true - type: keyword - description: This key captures Group ID Number (related to the group name) - - name: policy_id - overwrite: true - type: keyword - description: This key is used to capture the Policy ID only, this should be - a numeric value, use policy.name otherwise - - name: vsys - overwrite: true - type: keyword - description: This key captures Virtual System Name - - name: connection_id - overwrite: true - type: keyword - description: This key captures the Connection ID - - name: reference_id2 - overwrite: true - type: keyword - description: This key is for the 2nd Linked ID. Can be either linked to "reference.id" - or "reference.id1" value but should not be used unless the other two variables - are in play. - - name: sensor - overwrite: true - type: keyword - description: This key captures Name of the sensor. Typically used in IDS/IPS - based devices - - name: sig_id - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID - - name: port_name - overwrite: true - type: keyword - description: 'This key is used for Physical or logical port connection but does - NOT include a network port. (Example: Printer port name).' - - name: rule_group - overwrite: true - type: keyword - description: This key captures the Rule group name - - name: risk_num - overwrite: true - type: double - description: This key captures a Numeric Risk value - - name: trigger_val - overwrite: true - type: keyword - description: This key captures the Value of the trigger or threshold condition. - - name: log_session_id1 - overwrite: true - type: keyword - description: This key is used to capture a Linked (Related) Session ID from - the session directly - - name: comp_version - overwrite: true - type: keyword - description: This key captures the Version level of a sub-component of a product. - - name: content_version - overwrite: true - type: keyword - description: This key captures Version level of a signature or database content. - - name: hardware_id - overwrite: true - type: keyword - description: This key is used to capture unique identifier for a device or system - (NOT a Mac address) - - name: risk - overwrite: true - type: keyword - description: This key captures the non-numeric risk value - - name: event_id - overwrite: true - type: keyword - - name: reason - overwrite: true - type: keyword - - name: status - overwrite: true - type: keyword - - name: mail_id - overwrite: true - type: keyword - description: This key is used to capture the mailbox id/name - - name: rule_uid - overwrite: true - type: keyword - description: This key is the Unique Identifier for a rule. - - name: trigger_desc - overwrite: true - type: keyword - description: This key captures the Description of the trigger or threshold condition. - - name: inout - overwrite: true - type: keyword - - name: p_msgid - overwrite: true - type: keyword - - name: data_type - overwrite: true - type: keyword - - name: msgIdPart4 - overwrite: true - type: keyword - - name: error - overwrite: true - type: keyword - description: This key captures All non successful Error codes or responses - - name: index - overwrite: true - type: keyword - - name: listnum - overwrite: true - type: keyword - description: This key is used to capture listname or listnumber, primarily for - collecting access-list - - name: ntype - overwrite: true - type: keyword - - name: observed_val - overwrite: true - type: keyword - description: This key captures the Value observed (from the perspective of the - device generating the log). - - name: policy_value - overwrite: true - type: keyword - description: This key captures the contents of the policy. This contains details - about the policy - - name: pool_name - overwrite: true - type: keyword - description: This key captures the name of a resource pool - - name: rule_template - overwrite: true - type: keyword - description: A default set of parameters which are overlayed onto a rule (or - rulename) which efffectively constitutes a template - - name: count - overwrite: true - type: keyword - - name: number - overwrite: true - type: keyword - - name: sigcat - overwrite: true - type: keyword - - name: type - overwrite: true - type: keyword - - name: comments - overwrite: true - type: keyword - description: Comment information provided in the log message - - name: doc_number - overwrite: true - type: long - description: This key captures File Identification number - - name: expected_val - overwrite: true - type: keyword - description: This key captures the Value expected (from the perspective of the - device generating the log). - - name: job_num - overwrite: true - type: keyword - description: This key captures the Job Number - - name: spi_dst - overwrite: true - type: keyword - description: Destination SPI Index - - name: spi_src - overwrite: true - type: keyword - description: Source SPI Index - - name: code - overwrite: true - type: keyword - - name: agent_id - overwrite: true - type: keyword - description: This key is used to capture agent id - - name: message_body - overwrite: true - type: keyword - description: This key captures the The contents of the message body. - - name: phone - overwrite: true - type: keyword - - name: sig_id_str - overwrite: true - type: keyword - description: This key captures a string object of the sigid variable. - - name: cmd - overwrite: true - type: keyword - - name: misc - overwrite: true - type: keyword - - name: name - overwrite: true - type: keyword - - name: cpu - overwrite: true - type: long - description: This key is the CPU time used in the execution of the event being - recorded. - - name: event_desc - overwrite: true - type: keyword - description: This key is used to capture a description of an event available - directly or inferred - - name: sig_id1 - overwrite: true - type: long - description: This key captures IDS/IPS Int Signature ID. This must be linked - to the sig.id - - name: im_buddyid - overwrite: true - type: keyword - - name: im_client - overwrite: true - type: keyword - - name: im_userid - overwrite: true - type: keyword - - name: pid - overwrite: true - type: keyword - - name: priority - overwrite: true - type: keyword - - name: context_subject - overwrite: true - type: keyword - description: This key is to be used in an audit context where the subject is - the object being identified - - name: context_target - overwrite: true - type: keyword - - name: cve - overwrite: true - type: keyword - description: This key captures CVE (Common Vulnerabilities and Exposures) - - an identifier for known information security vulnerabilities. - - name: fcatnum - overwrite: true - type: keyword - description: This key captures Filter Category Number. Legacy Usage - - name: library - overwrite: true - type: keyword - description: This key is used to capture library information in mainframe devices - - name: parent_node - overwrite: true - type: keyword - description: This key captures the Parent Node Name. Must be related to node - variable. - - name: risk_info - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: tcp_flags - overwrite: true - type: long - description: This key is captures the TCP flags set in any packet of session - - name: tos - overwrite: true - type: long - description: This key describes the type of service - - name: vm_target - overwrite: true - type: keyword - description: VMWare Target **VMWARE** only varaible. - - name: workspace - overwrite: true - type: keyword - description: This key captures Workspace Description - - name: command - overwrite: true - type: keyword - - name: event_category - overwrite: true - type: keyword - - name: facilityname - overwrite: true - type: keyword - - name: forensic_info - overwrite: true - type: keyword - - name: jobname - overwrite: true - type: keyword - - name: mode - overwrite: true - type: keyword - - name: policy - overwrite: true - type: keyword - - name: policy_waiver - overwrite: true - type: keyword - - name: second - overwrite: true - type: keyword - - name: space1 - overwrite: true - type: keyword - - name: subcategory - overwrite: true - type: keyword - - name: tbdstr2 - overwrite: true - type: keyword - - name: alert_id - overwrite: true - type: keyword - description: Deprecated, New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: checksum_dst - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the the target - entity such as a process or file. - - name: checksum_src - overwrite: true - type: keyword - description: This key is used to capture the checksum or hash of the source - entity such as a file or process. - - name: fresult - overwrite: true - type: long - description: This key captures the Filter Result - - name: payload_dst - overwrite: true - type: keyword - description: This key is used to capture destination payload - - name: payload_src - overwrite: true - type: keyword - description: This key is used to capture source payload - - name: pool_id - overwrite: true - type: keyword - description: This key captures the identifier (typically numeric field) of a - resource pool - - name: process_id_val - overwrite: true - type: keyword - description: This key is a failure key for Process ID when it is not an integer - value - - name: risk_num_comm - overwrite: true - type: double - description: This key captures Risk Number Community - - name: risk_num_next - overwrite: true - type: double - description: This key captures Risk Number NextGen - - name: risk_num_sand - overwrite: true - type: double - description: This key captures Risk Number SandBox - - name: risk_num_static - overwrite: true - type: double - description: This key captures Risk Number Static - - name: risk_suspicious - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: risk_warning - overwrite: true - type: keyword - description: Deprecated, use New Hunting Model (inv.*, ioc, boc, eoc, analysis.*) - - name: snmp_oid - overwrite: true - type: keyword - description: SNMP Object Identifier - - name: sql - overwrite: true - type: keyword - description: This key captures the SQL query - - name: vuln_ref - overwrite: true - type: keyword - description: This key captures the Vulnerability Reference details - - name: acl_id - overwrite: true - type: keyword - - name: acl_op - overwrite: true - type: keyword - - name: acl_pos - overwrite: true - type: keyword - - name: acl_table - overwrite: true - type: keyword - - name: admin - overwrite: true - type: keyword - - name: alarm_id - overwrite: true - type: keyword - - name: alarmname - overwrite: true - type: keyword - - name: app_id - overwrite: true - type: keyword - - name: audit - overwrite: true - type: keyword - - name: audit_object - overwrite: true - type: keyword - - name: auditdata - overwrite: true - type: keyword - - name: benchmark - overwrite: true - type: keyword - - name: bypass - overwrite: true - type: keyword - - name: cache - overwrite: true - type: keyword - - name: cache_hit - overwrite: true - type: keyword - - name: cefversion - overwrite: true - type: keyword - - name: cfg_attr - overwrite: true - type: keyword - - name: cfg_obj - overwrite: true - type: keyword - - name: cfg_path - overwrite: true - type: keyword - - name: changes - overwrite: true - type: keyword - - name: client_ip - overwrite: true - type: keyword - - name: clustermembers - overwrite: true - type: keyword - - name: cn_acttimeout - overwrite: true - type: keyword - - name: cn_asn_src - overwrite: true - type: keyword - - name: cn_bgpv4nxthop - overwrite: true - type: keyword - - name: cn_ctr_dst_code - overwrite: true - type: keyword - - name: cn_dst_tos - overwrite: true - type: keyword - - name: cn_dst_vlan - overwrite: true - type: keyword - - name: cn_engine_id - overwrite: true - type: keyword - - name: cn_engine_type - overwrite: true - type: keyword - - name: cn_f_switch - overwrite: true - type: keyword - - name: cn_flowsampid - overwrite: true - type: keyword - - name: cn_flowsampintv - overwrite: true - type: keyword - - name: cn_flowsampmode - overwrite: true - type: keyword - - name: cn_inacttimeout - overwrite: true - type: keyword - - name: cn_inpermbyts - overwrite: true - type: keyword - - name: cn_inpermpckts - overwrite: true - type: keyword - - name: cn_invalid - overwrite: true - type: keyword - - name: cn_ip_proto_ver - overwrite: true - type: keyword - - name: cn_ipv4_ident - overwrite: true - type: keyword - - name: cn_l_switch - overwrite: true - type: keyword - - name: cn_log_did - overwrite: true - type: keyword - - name: cn_log_rid - overwrite: true - type: keyword - - name: cn_max_ttl - overwrite: true - type: keyword - - name: cn_maxpcktlen - overwrite: true - type: keyword - - name: cn_min_ttl - overwrite: true - type: keyword - - name: cn_minpcktlen - overwrite: true - type: keyword - - name: cn_mpls_lbl_1 - overwrite: true - type: keyword - - name: cn_mpls_lbl_10 - overwrite: true - type: keyword - - name: cn_mpls_lbl_2 - overwrite: true - type: keyword - - name: cn_mpls_lbl_3 - overwrite: true - type: keyword - - name: cn_mpls_lbl_4 - overwrite: true - type: keyword - - name: cn_mpls_lbl_5 - overwrite: true - type: keyword - - name: cn_mpls_lbl_6 - overwrite: true - type: keyword - - name: cn_mpls_lbl_7 - overwrite: true - type: keyword - - name: cn_mpls_lbl_8 - overwrite: true - type: keyword - - name: cn_mpls_lbl_9 - overwrite: true - type: keyword - - name: cn_mplstoplabel - overwrite: true - type: keyword - - name: cn_mplstoplabip - overwrite: true - type: keyword - - name: cn_mul_dst_byt - overwrite: true - type: keyword - - name: cn_mul_dst_pks - overwrite: true - type: keyword - - name: cn_muligmptype - overwrite: true - type: keyword - - name: cn_sampalgo - overwrite: true - type: keyword - - name: cn_sampint - overwrite: true - type: keyword - - name: cn_seqctr - overwrite: true - type: keyword - - name: cn_spackets - overwrite: true - type: keyword - - name: cn_src_tos - overwrite: true - type: keyword - - name: cn_src_vlan - overwrite: true - type: keyword - - name: cn_sysuptime - overwrite: true - type: keyword - - name: cn_template_id - overwrite: true - type: keyword - - name: cn_totbytsexp - overwrite: true - type: keyword - - name: cn_totflowexp - overwrite: true - type: keyword - - name: cn_totpcktsexp - overwrite: true - type: keyword - - name: cn_unixnanosecs - overwrite: true - type: keyword - - name: cn_v6flowlabel - overwrite: true - type: keyword - - name: cn_v6optheaders - overwrite: true - type: keyword - - name: comp_class - overwrite: true - type: keyword - - name: comp_name - overwrite: true - type: keyword - - name: comp_rbytes - overwrite: true - type: keyword - - name: comp_sbytes - overwrite: true - type: keyword - - name: cpu_data - overwrite: true - type: keyword - - name: criticality - overwrite: true - type: keyword - - name: cs_agency_dst - overwrite: true - type: keyword - - name: cs_analyzedby - overwrite: true - type: keyword - - name: cs_av_other - overwrite: true - type: keyword - - name: cs_av_primary - overwrite: true - type: keyword - - name: cs_av_secondary - overwrite: true - type: keyword - - name: cs_bgpv6nxthop - overwrite: true - type: keyword - - name: cs_bit9status - overwrite: true - type: keyword - - name: cs_context - overwrite: true - type: keyword - - name: cs_control - overwrite: true - type: keyword - - name: cs_data - overwrite: true - type: keyword - - name: cs_datecret - overwrite: true - type: keyword - - name: cs_dst_tld - overwrite: true - type: keyword - - name: cs_eth_dst_ven - overwrite: true - type: keyword - - name: cs_eth_src_ven - overwrite: true - type: keyword - - name: cs_event_uuid - overwrite: true - type: keyword - - name: cs_filetype - overwrite: true - type: keyword - - name: cs_fld - overwrite: true - type: keyword - - name: cs_if_desc - overwrite: true - type: keyword - - name: cs_if_name - overwrite: true - type: keyword - - name: cs_ip_next_hop - overwrite: true - type: keyword - - name: cs_ipv4dstpre - overwrite: true - type: keyword - - name: cs_ipv4srcpre - overwrite: true - type: keyword - - name: cs_lifetime - overwrite: true - type: keyword - - name: cs_log_medium - overwrite: true - type: keyword - - name: cs_loginname - overwrite: true - type: keyword - - name: cs_modulescore - overwrite: true - type: keyword - - name: cs_modulesign - overwrite: true - type: keyword - - name: cs_opswatresult - overwrite: true - type: keyword - - name: cs_payload - overwrite: true - type: keyword - - name: cs_registrant - overwrite: true - type: keyword - - name: cs_registrar - overwrite: true - type: keyword - - name: cs_represult - overwrite: true - type: keyword - - name: cs_rpayload - overwrite: true - type: keyword - - name: cs_sampler_name - overwrite: true - type: keyword - - name: cs_sourcemodule - overwrite: true - type: keyword - - name: cs_streams - overwrite: true - type: keyword - - name: cs_targetmodule - overwrite: true - type: keyword - - name: cs_v6nxthop - overwrite: true - type: keyword - - name: cs_whois_server - overwrite: true - type: keyword - - name: cs_yararesult - overwrite: true - type: keyword - - name: description - overwrite: true - type: keyword - - name: devvendor - overwrite: true - type: keyword - - name: distance - overwrite: true - type: keyword - - name: dstburb - overwrite: true - type: keyword - - name: edomain - overwrite: true - type: keyword - - name: edomaub - overwrite: true - type: keyword - - name: euid - overwrite: true - type: keyword - - name: facility - overwrite: true - type: keyword - - name: finterface - overwrite: true - type: keyword - - name: flags - overwrite: true - type: keyword - - name: gaddr - overwrite: true - type: keyword - - name: id3 - overwrite: true - type: keyword - - name: im_buddyname - overwrite: true - type: keyword - - name: im_croomid - overwrite: true - type: keyword - - name: im_croomtype - overwrite: true - type: keyword - - name: im_members - overwrite: true - type: keyword - - name: im_username - overwrite: true - type: keyword - - name: ipkt - overwrite: true - type: keyword - - name: ipscat - overwrite: true - type: keyword - - name: ipspri - overwrite: true - type: keyword - - name: latitude - overwrite: true - type: keyword - - name: linenum - overwrite: true - type: keyword - - name: list_name - overwrite: true - type: keyword - - name: load_data - overwrite: true - type: keyword - - name: location_floor - overwrite: true - type: keyword - - name: location_mark - overwrite: true - type: keyword - - name: log_id - overwrite: true - type: keyword - - name: log_type - overwrite: true - type: keyword - - name: logid - overwrite: true - type: keyword - - name: logip - overwrite: true - type: keyword - - name: logname - overwrite: true - type: keyword - - name: longitude - overwrite: true - type: keyword - - name: lport - overwrite: true - type: keyword - - name: mbug_data - overwrite: true - type: keyword - - name: misc_name - overwrite: true - type: keyword - - name: msg_type - overwrite: true - type: keyword - - name: msgid - overwrite: true - type: keyword - - name: netsessid - overwrite: true - type: keyword - - name: num - overwrite: true - type: keyword - - name: number1 - overwrite: true - type: keyword - - name: number2 - overwrite: true - type: keyword - - name: nwwn - overwrite: true - type: keyword - - name: object - overwrite: true - type: keyword - - name: operation - overwrite: true - type: keyword - - name: opkt - overwrite: true - type: keyword - - name: orig_from - overwrite: true - type: keyword - - name: owner_id - overwrite: true - type: keyword - - name: p_action - overwrite: true - type: keyword - - name: p_filter - overwrite: true - type: keyword - - name: p_group_object - overwrite: true - type: keyword - - name: p_id - overwrite: true - type: keyword - - name: p_msgid1 - overwrite: true - type: keyword - - name: p_msgid2 - overwrite: true - type: keyword - - name: p_result1 - overwrite: true - type: keyword - - name: password_chg - overwrite: true - type: keyword - - name: password_expire - overwrite: true - type: keyword - - name: permgranted - overwrite: true - type: keyword - - name: permwanted - overwrite: true - type: keyword - - name: pgid - overwrite: true - type: keyword - - name: policyUUID - overwrite: true - type: keyword - - name: prog_asp_num - overwrite: true - type: keyword - - name: program - overwrite: true - type: keyword - - name: real_data - overwrite: true - type: keyword - - name: rec_asp_device - overwrite: true - type: keyword - - name: rec_asp_num - overwrite: true - type: keyword - - name: rec_library - overwrite: true - type: keyword - - name: recordnum - overwrite: true - type: keyword - - name: ruid - overwrite: true - type: keyword - - name: sburb - overwrite: true - type: keyword - - name: sdomain_fld - overwrite: true - type: keyword - - name: sec - overwrite: true - type: keyword - - name: sensorname - overwrite: true - type: keyword - - name: seqnum - overwrite: true - type: keyword - - name: session - overwrite: true - type: keyword - - name: sessiontype - overwrite: true - type: keyword - - name: sigUUID - overwrite: true - type: keyword - - name: spi - overwrite: true - type: keyword - - name: srcburb - overwrite: true - type: keyword - - name: srcdom - overwrite: true - type: keyword - - name: srcservice - overwrite: true - type: keyword - - name: state - overwrite: true - type: keyword - - name: status1 - overwrite: true - type: keyword - - name: svcno - overwrite: true - type: keyword - - name: system - overwrite: true - type: keyword - - name: tbdstr1 - overwrite: true - type: keyword - - name: tgtdom - overwrite: true - type: keyword - - name: tgtdomain - overwrite: true - type: keyword - - name: threshold - overwrite: true - type: keyword - - name: type1 - overwrite: true - type: keyword - - name: udb_class - overwrite: true - type: keyword - - name: url_fld - overwrite: true - type: keyword - - name: user_div - overwrite: true - type: keyword - - name: userid - overwrite: true - type: keyword - - name: username_fld - overwrite: true - type: keyword - - name: utcstamp - overwrite: true - type: keyword - - name: v_instafname - overwrite: true - type: keyword - - name: virt_data - overwrite: true - type: keyword - - name: vpnid - overwrite: true - type: keyword - - name: autorun_type - overwrite: true - type: keyword - description: This is used to capture Auto Run type - - name: cc_number - overwrite: true - type: long - description: Valid Credit Card Numbers only - - name: content - overwrite: true - type: keyword - description: This key captures the content type from protocol headers - - name: ein_number - overwrite: true - type: long - description: Employee Identification Numbers only - - name: found - overwrite: true - type: keyword - description: This is used to capture the results of regex match - - name: language - overwrite: true - type: keyword - description: This is used to capture list of languages the client support and - what it prefers - - name: lifetime - overwrite: true - type: long - description: This key is used to capture the session lifetime in seconds. - - name: link - overwrite: true - type: keyword - description: This key is used to link the sessions together. This key should - never be used to parse Meta data from a session (Logs/Packets) Directly, this - is a Reserved key in NetWitness - - name: match - overwrite: true - type: keyword - description: This key is for regex match name from search.ini - - name: param_dst - overwrite: true - type: keyword - description: This key captures the command line/launch argument of the target - process or file - - name: param_src - overwrite: true - type: keyword - description: This key captures source parameter - - name: search_text - overwrite: true - type: keyword - description: This key captures the Search Text used - - name: sig_name - overwrite: true - type: keyword - description: This key is used to capture the Signature Name only. - - name: snmp_value - overwrite: true - type: keyword - description: SNMP set request value - - name: streams - overwrite: true - type: long - description: This key captures number of streams in session - - name: db - overwrite: true - type: group - fields: - - name: index - overwrite: true - type: keyword - description: This key captures IndexID of the index. - - name: instance - overwrite: true - type: keyword - description: This key is used to capture the database server instance name - - name: database - overwrite: true - type: keyword - description: This key is used to capture the name of a database or an instance - as seen in a session - - name: transact_id - overwrite: true - type: keyword - description: This key captures the SQL transantion ID of the current session - - name: permissions - overwrite: true - type: keyword - description: This key captures permission or privilege level assigned to a resource. - - name: table_name - overwrite: true - type: keyword - description: This key is used to capture the table name - - name: db_id - overwrite: true - type: keyword - description: This key is used to capture the unique identifier for a database - - name: db_pid - overwrite: true - type: long - description: This key captures the process id of a connection with database - server - - name: lread - overwrite: true - type: long - description: This key is used for the number of logical reads - - name: lwrite - overwrite: true - type: long - description: This key is used for the number of logical writes - - name: pread - overwrite: true - type: long - description: This key is used for the number of physical writes - - name: network - overwrite: true - type: group - fields: - - name: alias_host - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a hostname is not clear.Also it captures the Device Hostname. Any Hostname - that isnt ad.computer. - - name: domain - overwrite: true - type: keyword - - name: host_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Hostname" - - name: network_service - overwrite: true - type: keyword - description: This is used to capture layer 7 protocols/service names - - name: interface - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of an interface is not clear - - name: network_port - overwrite: true - type: long - description: 'Deprecated, use port. NOTE: There is a type discrepancy as currently - used, TM: Int32, INDEX: UInt64 (why neither chose the correct UInt16?!)' - - name: eth_host - overwrite: true - type: keyword - description: Deprecated, use alias.mac - - name: sinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Interface" - - name: dinterface - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Interface" - - name: vlan - overwrite: true - type: long - description: This key should only be used to capture the ID of the Virtual LAN - - name: zone_src - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Source Zone." - - name: zone - overwrite: true - type: keyword - description: This key should be used when the source or destination context - of a Zone is not clear - - name: zone_dst - overwrite: true - type: keyword - description: "This key should only be used when it\u2019s a Destination Zone." - - name: gateway - overwrite: true - type: keyword - description: This key is used to capture the IP Address of the gateway - - name: icmp_type - overwrite: true - type: long - description: This key is used to capture the ICMP type only - - name: mask - overwrite: true - type: keyword - description: This key is used to capture the device network IPmask. - - name: icmp_code - overwrite: true - type: long - description: This key is used to capture the ICMP code only - - name: protocol_detail - overwrite: true - type: keyword - description: This key should be used to capture additional protocol information - - name: dmask - overwrite: true - type: keyword - description: This key is used for Destionation Device network mask - - name: port - overwrite: true - type: long - description: This key should only be used to capture a Network Port when the - directionality is not clear - - name: smask - overwrite: true - type: keyword - description: This key is used for capturing source Network Mask - - name: netname - overwrite: true - type: keyword - description: This key is used to capture the network name associated with an - IP range. This is configured by the end user. - - name: paddr - overwrite: true - type: ip - description: Deprecated - - name: faddr - overwrite: true - type: keyword - - name: lhost - overwrite: true - type: keyword - - name: origin - overwrite: true - type: keyword - - name: remote_domain_id - overwrite: true - type: keyword - - name: addr - overwrite: true - type: keyword - - name: dns_a_record - overwrite: true - type: keyword - - name: dns_ptr_record - overwrite: true - type: keyword - - name: fhost - overwrite: true - type: keyword - - name: fport - overwrite: true - type: keyword - - name: laddr - overwrite: true - type: keyword - - name: linterface - overwrite: true - type: keyword - - name: phost - overwrite: true - type: keyword - - name: ad_computer_dst - overwrite: true - type: keyword - description: Deprecated, use host.dst - - name: eth_type - overwrite: true - type: long - description: This key is used to capture Ethernet Type, Used for Layer 3 Protocols - Only - - name: ip_proto - overwrite: true - type: long - description: This key should be used to capture the Protocol number, all the - protocol nubers are converted into string in UI - - name: dns_cname_record - overwrite: true - type: keyword - - name: dns_id - overwrite: true - type: keyword - - name: dns_opcode - overwrite: true - type: keyword - - name: dns_resp - overwrite: true - type: keyword - - name: dns_type - overwrite: true - type: keyword - - name: domain1 - overwrite: true - type: keyword - - name: host_type - overwrite: true - type: keyword - - name: packet_length - overwrite: true - type: keyword - - name: host_orig - overwrite: true - type: keyword - description: This is used to capture the original hostname in case of a Forwarding - Agent or a Proxy in between. - - name: rpayload - overwrite: true - type: keyword - description: This key is used to capture the total number of payload bytes seen - in the retransmitted packets. - - name: vlan_name - overwrite: true - type: keyword - description: This key should only be used to capture the name of the Virtual - LAN - - name: investigations - overwrite: true - type: group - fields: - - name: ec_activity - overwrite: true - type: keyword - description: This key captures the particular event activity(Ex:Logoff) - - name: ec_theme - overwrite: true - type: keyword - description: This key captures the Theme of a particular Event(Ex:Authentication) - - name: ec_subject - overwrite: true - type: keyword - description: This key captures the Subject of a particular Event(Ex:User) - - name: ec_outcome - overwrite: true - type: keyword - description: This key captures the outcome of a particular Event(Ex:Success) - - name: event_cat - overwrite: true - type: long - description: This key captures the Event category number - - name: event_cat_name - overwrite: true - type: keyword - description: This key captures the event category name corresponding to the - event cat code - - name: event_vcat - overwrite: true - type: keyword - description: This is a vendor supplied category. This should be used in situations - where the vendor has adopted their own event_category taxonomy. - - name: analysis_file - overwrite: true - type: keyword - description: This is used to capture all indicators used in a File Analysis. - This key should be used to capture an analysis of a file - - name: analysis_service - overwrite: true - type: keyword - description: This is used to capture all indicators used in a Service Analysis. - This key should be used to capture an analysis of a service - - name: analysis_session - overwrite: true - type: keyword - description: This is used to capture all indicators used for a Session Analysis. - This key should be used to capture an analysis of a session - - name: boc - overwrite: true - type: keyword - description: This is used to capture behaviour of compromise - - name: eoc - overwrite: true - type: keyword - description: This is used to capture Enablers of Compromise - - name: inv_category - overwrite: true - type: keyword - description: This used to capture investigation category - - name: inv_context - overwrite: true - type: keyword - description: This used to capture investigation context - - name: ioc - overwrite: true - type: keyword - description: This is key capture indicator of compromise - - name: counters - overwrite: true - type: group - fields: - - name: dclass_c1 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c1.str only - - name: dclass_c2 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c2.str only - - name: event_counter - overwrite: true - type: long - description: This is used to capture the number of times an event repeated - - name: dclass_r1 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r1.str only - - name: dclass_c3 - overwrite: true - type: long - description: This is a generic counter key that should be used with the label - dclass.c3.str only - - name: dclass_c1_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c1 only - - name: dclass_c2_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c2 only - - name: dclass_r1_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r1 only - - name: dclass_r2 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r2.str only - - name: dclass_c3_str - overwrite: true - type: keyword - description: This is a generic counter string key that should be used with the - label dclass.c3 only - - name: dclass_r3 - overwrite: true - type: keyword - description: This is a generic ratio key that should be used with the label - dclass.r3.str only - - name: dclass_r2_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r2 only - - name: dclass_r3_str - overwrite: true - type: keyword - description: This is a generic ratio string key that should be used with the - label dclass.r3 only - - name: identity - overwrite: true - type: group - fields: - - name: auth_method - overwrite: true - type: keyword - description: This key is used to capture authentication methods used only - - name: user_role - overwrite: true - type: keyword - description: This key is used to capture the Role of a user only - - name: dn - overwrite: true - type: keyword - description: X.500 (LDAP) Distinguished Name - - name: logon_type - overwrite: true - type: keyword - description: This key is used to capture the type of logon method used. - - name: profile - overwrite: true - type: keyword - description: This key is used to capture the user profile - - name: accesses - overwrite: true - type: keyword - description: This key is used to capture actual privileges used in accessing - an object - - name: realm - overwrite: true - type: keyword - description: Radius realm or similar grouping of accounts - - name: user_sid_dst - overwrite: true - type: keyword - description: This key captures Destination User Session ID - - name: dn_src - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that is used in a context that - indicates a Source dn - - name: org - overwrite: true - type: keyword - description: This key captures the User organization - - name: dn_dst - overwrite: true - type: keyword - description: An X.500 (LDAP) Distinguished name that used in a context that - indicates a Destination dn - - name: firstname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: lastname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: user_dept - overwrite: true - type: keyword - description: User's Department Names only - - name: user_sid_src - overwrite: true - type: keyword - description: This key captures Source User Session ID - - name: federated_sp - overwrite: true - type: keyword - description: This key is the Federated Service Provider. This is the application - requesting authentication. - - name: federated_idp - overwrite: true - type: keyword - description: This key is the federated Identity Provider. This is the server - providing the authentication. - - name: logon_type_desc - overwrite: true - type: keyword - description: This key is used to capture the textual description of an integer - logon type as stored in the meta key 'logon.type'. - - name: middlename - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: password - overwrite: true - type: keyword - description: This key is for Passwords seen in any session, plain text or encrypted - - name: host_role - overwrite: true - type: keyword - description: This key should only be used to capture the role of a Host Machine - - name: ldap - overwrite: true - type: keyword - description: "This key is for Uninterpreted LDAP values. Ldap Values that don\u2019\ - t have a clear query or response context" - - name: ldap_query - overwrite: true - type: keyword - description: This key is the Search criteria from an LDAP search - - name: ldap_response - overwrite: true - type: keyword - description: This key is to capture Results from an LDAP search - - name: owner - overwrite: true - type: keyword - description: This is used to capture username the process or service is running - as, the author of the task - - name: service_account - overwrite: true - type: keyword - description: This key is a windows specific key, used for capturing name of - the account a service (referenced in the event) is running under. Legacy Usage - - name: email - overwrite: true - type: group - fields: - - name: email_dst - overwrite: true - type: keyword - description: This key is used to capture the Destination email address only, - when the destination context is not clear use email - - name: email_src - overwrite: true - type: keyword - description: This key is used to capture the source email address only, when - the source context is not clear use email - - name: subject - overwrite: true - type: keyword - description: This key is used to capture the subject string from an Email only. - - name: email - overwrite: true - type: keyword - description: This key is used to capture a generic email address where the source - or destination context is not clear - - name: trans_from - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: trans_to - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: file - overwrite: true - type: group - fields: - - name: privilege - overwrite: true - type: keyword - description: Deprecated, use permissions - - name: attachment - overwrite: true - type: keyword - description: This key captures the attachment file name - - name: filesystem - overwrite: true - type: keyword - - name: binary - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: filename_dst - overwrite: true - type: keyword - description: This is used to capture name of the file targeted by the action - - name: filename_src - overwrite: true - type: keyword - description: This is used to capture name of the parent filename, the file which - performed the action - - name: filename_tmp - overwrite: true - type: keyword - - name: directory_dst - overwrite: true - type: keyword - description: This key is used to capture the directory of the target process - or file - - name: directory_src - overwrite: true - type: keyword - description: This key is used to capture the directory of the source process - or file - - name: file_entropy - overwrite: true - type: double - description: This is used to capture entropy vale of a file - - name: file_vendor - overwrite: true - type: keyword - description: This is used to capture Company name of file located in version_info - - name: task_name - overwrite: true - type: keyword - description: This is used to capture name of the task - - name: web - overwrite: true - type: group - fields: - - name: fqdn - overwrite: true - type: keyword - description: Fully Qualified Domain Names - - name: web_cookie - overwrite: true - type: keyword - description: This key is used to capture the Web cookies specifically. - - name: alias_host - overwrite: true - type: keyword - - name: reputation_num - overwrite: true - type: double - description: Reputation Number of an entity. Typically used for Web Domains - - name: web_ref_domain - overwrite: true - type: keyword - description: Web referer's domain - - name: web_ref_query - overwrite: true - type: keyword - description: This key captures Web referer's query portion of the URL - - name: remote_domain - overwrite: true - type: keyword - - name: web_ref_page - overwrite: true - type: keyword - description: This key captures Web referer's page information - - name: web_ref_root - overwrite: true - type: keyword - description: Web referer's root URL path - - name: cn_asn_dst - overwrite: true - type: keyword - - name: cn_rpackets - overwrite: true - type: keyword - - name: urlpage - overwrite: true - type: keyword - - name: urlroot - overwrite: true - type: keyword - - name: p_url - overwrite: true - type: keyword - - name: p_user_agent - overwrite: true - type: keyword - - name: p_web_cookie - overwrite: true - type: keyword - - name: p_web_method - overwrite: true - type: keyword - - name: p_web_referer - overwrite: true - type: keyword - - name: web_extension_tmp - overwrite: true - type: keyword - - name: web_page - overwrite: true - type: keyword - - name: threat - overwrite: true - type: group - fields: - - name: threat_category - overwrite: true - type: keyword - description: This key captures Threat Name/Threat Category/Categorization of - alert - - name: threat_desc - overwrite: true - type: keyword - description: This key is used to capture the threat description from the session - directly or inferred - - name: alert - overwrite: true - type: keyword - description: This key is used to capture name of the alert - - name: threat_source - overwrite: true - type: keyword - description: This key is used to capture source of the threat - - name: crypto - overwrite: true - type: group - fields: - - name: crypto - overwrite: true - type: keyword - description: This key is used to capture the Encryption Type or Encryption Key - only - - name: cipher_src - overwrite: true - type: keyword - description: This key is for Source (Client) Cipher - - name: cert_subject - overwrite: true - type: keyword - description: This key is used to capture the Certificate organization only - - name: peer - overwrite: true - type: keyword - description: This key is for Encryption peer's IP Address - - name: cipher_size_src - overwrite: true - type: long - description: This key captures Source (Client) Cipher Size - - name: ike - overwrite: true - type: keyword - description: IKE negotiation phase. - - name: scheme - overwrite: true - type: keyword - description: This key captures the Encryption scheme used - - name: peer_id - overwrite: true - type: keyword - description: "This key is for Encryption peer\u2019s identity" - - name: sig_type - overwrite: true - type: keyword - description: This key captures the Signature Type - - name: cert_issuer - overwrite: true - type: keyword - - name: cert_host_name - overwrite: true - type: keyword - description: Deprecated key defined only in table map. - - name: cert_error - overwrite: true - type: keyword - description: This key captures the Certificate Error String - - name: cipher_dst - overwrite: true - type: keyword - description: This key is for Destination (Server) Cipher - - name: cipher_size_dst - overwrite: true - type: long - description: This key captures Destination (Server) Cipher Size - - name: ssl_ver_src - overwrite: true - type: keyword - description: Deprecated, use version - - name: d_certauth - overwrite: true - type: keyword - - name: s_certauth - overwrite: true - type: keyword - - name: ike_cookie1 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase One" - - name: ike_cookie2 - overwrite: true - type: keyword - description: "ID of the negotiation \u2014 sent for ISAKMP Phase Two" - - name: cert_checksum - overwrite: true - type: keyword - - name: cert_host_cat - overwrite: true - type: keyword - description: This key is used for the hostname category value of a certificate - - name: cert_serial - overwrite: true - type: keyword - description: This key is used to capture the Certificate serial number only - - name: cert_status - overwrite: true - type: keyword - description: This key captures Certificate validation status - - name: ssl_ver_dst - overwrite: true - type: keyword - description: Deprecated, use version - - name: cert_keysize - overwrite: true - type: keyword - - name: cert_username - overwrite: true - type: keyword - - name: https_insact - overwrite: true - type: keyword - - name: https_valid - overwrite: true - type: keyword - - name: cert_ca - overwrite: true - type: keyword - description: This key is used to capture the Certificate signing authority only - - name: cert_common - overwrite: true - type: keyword - description: This key is used to capture the Certificate common name only - - name: wireless - overwrite: true - type: group - fields: - - name: wlan_ssid - overwrite: true - type: keyword - description: This key is used to capture the ssid of a Wireless Session - - name: access_point - overwrite: true - type: keyword - description: This key is used to capture the access point name. - - name: wlan_channel - overwrite: true - type: long - description: This is used to capture the channel names - - name: wlan_name - overwrite: true - type: keyword - description: This key captures either WLAN number/name - - name: storage - overwrite: true - type: group - fields: - - name: disk_volume - overwrite: true - type: keyword - description: A unique name assigned to logical units (volumes) within a physical - disk - - name: lun - overwrite: true - type: keyword - description: Logical Unit Number.This key is a very useful concept in Storage. - - name: pwwn - overwrite: true - type: keyword - description: This uniquely identifies a port on a HBA. - - name: physical - overwrite: true - type: group - fields: - - name: org_dst - overwrite: true - type: keyword - description: This is used to capture the destination organization based on the - GEOPIP Maxmind database. - - name: org_src - overwrite: true - type: keyword - description: This is used to capture the source organization based on the GEOPIP - Maxmind database. - - name: healthcare - overwrite: true - type: group - fields: - - name: patient_fname - overwrite: true - type: keyword - description: This key is for First Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_id - overwrite: true - type: keyword - description: This key captures the unique ID for a patient - - name: patient_lname - overwrite: true - type: keyword - description: This key is for Last Names only, this is used for Healthcare predominantly - to capture Patients information - - name: patient_mname - overwrite: true - type: keyword - description: This key is for Middle Names only, this is used for Healthcare - predominantly to capture Patients information - - name: endpoint - overwrite: true - type: group - fields: - - name: host_state - overwrite: true - type: keyword - description: This key is used to capture the current state of the machine, such - as blacklisted, infected, firewall - disabled and so on - - name: registry_key - overwrite: true - type: keyword - description: This key captures the path to the registry key - - name: registry_value - overwrite: true - type: keyword - description: This key captures values or decorators used within a registry entry diff --git a/x-pack/filebeat/module/zscaler/zia/config/input.yml b/x-pack/filebeat/module/zscaler/zia/config/input.yml deleted file mode 100644 index 36e7fd2e2f9..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/config/input.yml +++ /dev/null @@ -1,87 +0,0 @@ -{{ if eq .input "file" }} - -type: log -paths: - {{ range $i, $path := .paths }} -- {{$path}} - {{ end }} -exclude_files: [".gz$"] - -{{ else }} - -type: {{.input}} -host: "{{.syslog_host}}:{{.syslog_port}}" - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -fields_under_root: true -fields: - observer: - vendor: "Zscaler" - product: "Internet" - type: "Configuration" - -processors: -- script: - lang: javascript - params: - ecs: true - rsa: {{.rsa_fields}} - tz_offset: {{.tz_offset}} - keep_raw: {{.keep_raw_fields}} - debug: {{.debug}} - files: - - ${path.home}/module/zscaler/zia/config/liblogparser.js - - ${path.home}/module/zscaler/zia/config/pipeline.js -{{ if .community_id }} -- community_id: ~ -{{ end }} -- registered_domain: - ignore_missing: true - ignore_failure: true - field: dns.question.name - target_field: dns.question.registered_domain - target_subdomain_field: dns.question.subdomain - target_etld_field: dns.question.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: client.domain - target_field: client.registered_domain - target_subdomain_field: client.subdomain - target_etld_field: client.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: server.domain - target_field: server.registered_domain - target_subdomain_field: server.subdomain - target_etld_field: server.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: destination.domain - target_field: destination.registered_domain - target_subdomain_field: destination.subdomain - target_etld_field: destination.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: source.domain - target_field: source.registered_domain - target_subdomain_field: source.subdomain - target_etld_field: source.top_level_domain -- registered_domain: - ignore_missing: true - ignore_failure: true - field: url.domain - target_field: url.registered_domain - target_subdomain_field: url.subdomain - target_etld_field: url.top_level_domain -- add_fields: - target: '' - fields: - ecs.version: 1.12.0 diff --git a/x-pack/filebeat/module/zscaler/zia/config/liblogparser.js b/x-pack/filebeat/module/zscaler/zia/config/liblogparser.js deleted file mode 100644 index b35eaa3ddce..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/config/liblogparser.js +++ /dev/null @@ -1,2514 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -/* jshint -W014,-W016,-W097,-W116 */ - -var processor = require("processor"); -var console = require("console"); - -var FLAG_FIELD = "log.flags"; -var FIELDS_OBJECT = "nwparser"; -var FIELDS_PREFIX = FIELDS_OBJECT + "."; - -var defaults = { - debug: false, - ecs: true, - rsa: false, - keep_raw: false, - tz_offset: "local", - strip_priority: true -}; - -var saved_flags = null; -var debug; -var map_ecs; -var map_rsa; -var keep_raw; -var device; -var tz_offset; -var strip_priority; - -// Register params from configuration. -function register(params) { - debug = params.debug !== undefined ? params.debug : defaults.debug; - map_ecs = params.ecs !== undefined ? params.ecs : defaults.ecs; - map_rsa = params.rsa !== undefined ? params.rsa : defaults.rsa; - keep_raw = params.keep_raw !== undefined ? params.keep_raw : defaults.keep_raw; - tz_offset = parse_tz_offset(params.tz_offset !== undefined? params.tz_offset : defaults.tz_offset); - strip_priority = params.strip_priority !== undefined? params.strip_priority : defaults.strip_priority; - device = new DeviceProcessor(); -} - -function parse_tz_offset(offset) { - var date; - var m; - switch(offset) { - // local uses the tz offset from the JS VM. - case "local": - date = new Date(); - // Reversing the sign as we the offset from UTC, not to UTC. - return parse_local_tz_offset(-date.getTimezoneOffset()); - // event uses the tz offset from event.timezone (add_locale processor). - case "event": - return offset; - // Otherwise a tz offset in the form "[+-][0-9]{4}" is required. - default: - m = offset.match(/^([+\-])([0-9]{2}):?([0-9]{2})?$/); - if (m === null || m.length !== 4) { - throw("bad timezone offset: '" + offset + "'. Must have the form +HH:MM"); - } - return m[1] + m[2] + ":" + (m[3]!==undefined? m[3] : "00"); - } -} - -function parse_local_tz_offset(minutes) { - var neg = minutes < 0; - minutes = Math.abs(minutes); - var min = minutes % 60; - var hours = Math.floor(minutes / 60); - var pad2digit = function(n) { - if (n < 10) { return "0" + n;} - return "" + n; - }; - return (neg? "-" : "+") + pad2digit(hours) + ":" + pad2digit(min); -} - -function process(evt) { - // Function register is only called by the processor when `params` are set - // in the processor config. - if (device === undefined) { - register(defaults); - } - return device.process(evt); -} - -function processor_chain(subprocessors) { - var builder = new processor.Chain(); - subprocessors.forEach(builder.Add); - return builder.Build().Run; -} - -function linear_select(subprocessors) { - return function (evt) { - var flags = evt.Get(FLAG_FIELD); - var i; - for (i = 0; i < subprocessors.length; i++) { - evt.Delete(FLAG_FIELD); - if (debug) console.warn("linear_select trying entry " + i); - subprocessors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) == null) break; - if (debug) console.warn("linear_select failed entry " + i); - } - if (flags !== null) { - evt.Put(FLAG_FIELD, flags); - } - if (debug) { - if (i < subprocessors.length) { - console.warn("linear_select matched entry " + i); - } else { - console.warn("linear_select didn't match"); - } - } - }; -} - -function conditional(opt) { - return function(evt) { - if (opt.if(evt)) { - opt.then(evt); - } else if (opt.else) { - opt.else(evt); - } - }; -} - -var strip_syslog_priority = (function() { - var isEnabled = function() { return strip_priority === true; }; - var fetchPRI = field("_pri"); - var fetchPayload = field("payload"); - var removePayload = remove(["payload"]); - var cleanup = remove(["_pri", "payload"]); - var onMatch = function(evt) { - var pri, priStr = fetchPRI(evt); - if (priStr != null - && 0 < priStr.length && priStr.length < 4 - && !isNaN((pri = Number(priStr))) - && 0 <= pri && pri < 192) { - var severity = pri & 7, - facility = pri >> 3; - setc("_severity", "" + severity)(evt); - setc("_facility", "" + facility)(evt); - // Replace message with priority stripped. - evt.Put("message", fetchPayload(evt)); - removePayload(evt); - } else { - // not a valid syslog PRI, cleanup. - cleanup(evt); - } - }; - return conditional({ - if: isEnabled, - then: cleanup_flags(match( - "STRIP_PRI", - "message", - "<%{_pri}>%{payload}", - onMatch - )) - }); -})(); - -function match(id, src, pattern, on_success) { - var dissect = new processor.Dissect({ - field: src, - tokenizer: pattern, - target_prefix: FIELDS_OBJECT, - ignore_failure: true, - overwrite_keys: true, - trim_values: "right" - }); - return function (evt) { - var msg = evt.Get(src); - dissect.Run(evt); - var failed = evt.Get(FLAG_FIELD) != null; - if (debug) { - if (failed) { - console.debug("dissect fail: " + id + " field:" + src); - } else { - console.debug("dissect OK: " + id + " field:" + src); - } - console.debug(" expr: <<" + pattern + ">>"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null && !failed) { - on_success(evt); - } - }; -} - -function match_copy(id, src, dst, on_success) { - dst = FIELDS_PREFIX + dst; - if (dst === FIELDS_PREFIX || dst === src) { - return function (evt) { - if (debug) { - console.debug("noop OK: " + id + " field:" + src); - console.debug(" input: <<" + evt.Get(src) + ">>"); - } - if (on_success != null) on_success(evt); - } - } - return function (evt) { - var msg = evt.Get(src); - evt.Put(dst, msg); - if (debug) { - console.debug("copy OK: " + id + " field:" + src); - console.debug(" target: '" + dst + "'"); - console.debug(" input: <<" + msg + ">>"); - } - if (on_success != null) on_success(evt); - } -} - -function cleanup_flags(processor) { - return function(evt) { - processor(evt); - evt.Delete(FLAG_FIELD); - }; -} - -function all_match(opts) { - return function (evt) { - var i; - for (i = 0; i < opts.processors.length; i++) { - evt.Delete(FLAG_FIELD); - opts.processors[i](evt); - // Dissect processor succeeded? - if (evt.Get(FLAG_FIELD) != null) { - if (debug) console.warn("all_match failure at " + i); - if (opts.on_failure != null) opts.on_failure(evt); - return; - } - if (debug) console.warn("all_match success at " + i); - } - if (opts.on_success != null) opts.on_success(evt); - }; -} - -function msgid_select(mapping) { - return function (evt) { - var msgid = evt.Get(FIELDS_PREFIX + "messageid"); - if (msgid == null) { - if (debug) console.warn("msgid_select: no messageid captured!"); - return; - } - var next = mapping[msgid]; - if (next === undefined) { - if (debug) console.warn("msgid_select: no mapping for messageid:" + msgid); - return; - } - if (debug) console.info("msgid_select: matched key=" + msgid); - return next(evt); - }; -} - -function msg(msg_id, match) { - return function (evt) { - match(evt); - if (evt.Get(FLAG_FIELD) == null) { - evt.Put(FIELDS_PREFIX + "msg_id1", msg_id); - } - }; -} - -var start; - -function save_flags(evt) { - saved_flags = evt.Get(FLAG_FIELD); - evt.Put("event.original", evt.Get("message")); -} - -function restore_flags(evt) { - if (saved_flags !== null) { - evt.Put(FLAG_FIELD, saved_flags); - } - evt.Delete("message"); -} - -function constant(value) { - return function (evt) { - return value; - }; -} - -function field(name) { - var fullname = FIELDS_PREFIX + name; - return function (evt) { - return evt.Get(fullname); - }; -} - -function STRCAT(args) { - var s = ""; - var i; - for (i = 0; i < args.length; i++) { - s += args[i]; - } - return s; -} - -// TODO: Implement -function DIRCHK(args) { - unimplemented("DIRCHK"); -} - -function strictToInt(str) { - return str * 1; -} - -function CALC(args) { - if (args.length !== 3) { - console.warn("skipped call to CALC with " + args.length + " arguments."); - return; - } - var a = strictToInt(args[0]); - var b = strictToInt(args[2]); - if (isNaN(a) || isNaN(b)) { - console.warn("failed evaluating CALC arguments a='" + args[0] + "' b='" + args[2] + "'."); - return; - } - var result; - switch (args[1]) { - case "+": - result = a + b; - break; - case "-": - result = a - b; - break; - case "*": - result = a * b; - break; - default: - // Only * and + seen in the parsers. - console.warn("unknown CALC operation '" + args[1] + "'."); - return; - } - // Always return a string - return result !== undefined ? "" + result : result; -} - -var quoteChars = "\"'`"; -function RMQ(args) { - if(args.length !== 1) { - console.warn("RMQ: only one argument expected"); - return; - } - var value = args[0].trim(); - var n = value.length; - var char; - return n > 1 - && (char=value.charAt(0)) === value.charAt(n-1) - && quoteChars.indexOf(char) !== -1? - value.substr(1, n-2) - : value; -} - -function call(opts) { - var args = new Array(opts.args.length); - return function (evt) { - for (var i = 0; i < opts.args.length; i++) - if ((args[i] = opts.args[i](evt)) == null) return; - var result = opts.fn(args); - if (result != null) { - evt.Put(opts.dest, result); - } - }; -} - -function nop(evt) { -} - -function appendErrorMsg(evt, msg) { - var value = evt.Get("error.message"); - if (value == null) { - value = [msg]; - } else if (msg instanceof Array) { - value.push(msg); - } else { - value = [value, msg]; - } - evt.Put("error.message", value); -} - -function unimplemented(name) { - appendErrorMsg("unimplemented feature: " + name); -} - -function lookup(opts) { - return function (evt) { - var key = opts.key(evt); - if (key == null) return; - var value = opts.map.keyvaluepairs[key]; - if (value === undefined) { - value = opts.map.default; - } - if (value !== undefined) { - evt.Put(opts.dest, value(evt)); - } - }; -} - -function set(fields) { - return new processor.AddFields({ - target: FIELDS_OBJECT, - fields: fields, - }); -} - -function setf(dst, src) { - return function (evt) { - var val = evt.Get(FIELDS_PREFIX + src); - if (val != null) evt.Put(FIELDS_PREFIX + dst, val); - }; -} - -function setc(dst, value) { - return function (evt) { - evt.Put(FIELDS_PREFIX + dst, value); - }; -} - -function set_field(opts) { - return function (evt) { - var val = opts.value(evt); - if (val != null) evt.Put(opts.dest, val); - }; -} - -function dump(label) { - return function (evt) { - console.log("Dump of event at " + label + ": " + JSON.stringify(evt, null, "\t")); - }; -} - -function date_time_join_args(evt, arglist) { - var str = ""; - for (var i = 0; i < arglist.length; i++) { - var fname = FIELDS_PREFIX + arglist[i]; - var val = evt.Get(fname); - if (val != null) { - if (str !== "") str += " "; - str += val; - } else { - if (debug) console.warn("in date_time: input arg " + fname + " is not set"); - } - } - return str; -} - -function to2Digit(num) { - return num? (num < 10? "0" + num : num) : "00"; -} - -// Make two-digit dates 00-69 interpreted as 2000-2069 -// and dates 70-99 translated to 1970-1999. -var twoDigitYearEpoch = 70; -var twoDigitYearCentury = 2000; - -// This is to accept dates up to 2 days in the future, only used when -// no year is specified in a date. 2 days should be enough to account for -// time differences between systems and different tz offsets. -var maxFutureDelta = 2*24*60*60*1000; - -// DateContainer stores date fields and then converts those fields into -// a Date. Necessary because building a Date using its set() methods gives -// different results depending on the order of components. -function DateContainer(tzOffset) { - this.offset = tzOffset === undefined? "Z" : tzOffset; -} - -DateContainer.prototype = { - setYear: function(v) {this.year = v;}, - setMonth: function(v) {this.month = v;}, - setDay: function(v) {this.day = v;}, - setHours: function(v) {this.hours = v;}, - setMinutes: function(v) {this.minutes = v;}, - setSeconds: function(v) {this.seconds = v;}, - - setUNIX: function(v) {this.unix = v;}, - - set2DigitYear: function(v) { - this.year = v < twoDigitYearEpoch? twoDigitYearCentury + v : twoDigitYearCentury + v - 100; - }, - - toDate: function() { - if (this.unix !== undefined) { - return new Date(this.unix * 1000); - } - if (this.day === undefined || this.month === undefined) { - // Can't make a date from this. - return undefined; - } - if (this.year === undefined) { - // A date without a year. Set current year, or previous year - // if date would be in the future. - var now = new Date(); - this.year = now.getFullYear(); - var date = this.toDate(); - if (date.getTime() - now.getTime() > maxFutureDelta) { - date.setFullYear(now.getFullYear() - 1); - } - return date; - } - var MM = to2Digit(this.month); - var DD = to2Digit(this.day); - var hh = to2Digit(this.hours); - var mm = to2Digit(this.minutes); - var ss = to2Digit(this.seconds); - return new Date(this.year + "-" + MM + "-" + DD + "T" + hh + ":" + mm + ":" + ss + this.offset); - } -} - -function date_time_try_pattern(fmt, str, tzOffset) { - var date = new DateContainer(tzOffset); - var pos = date_time_try_pattern_at_pos(fmt, str, 0, date); - return pos !== undefined? date.toDate() : undefined; -} - -function date_time_try_pattern_at_pos(fmt, str, pos, date) { - var len = str.length; - for (var proc = 0; pos !== undefined && pos < len && proc < fmt.length; proc++) { - pos = fmt[proc](str, pos, date); - } - return pos; -} - -function date_time(opts) { - return function (evt) { - var tzOffset = opts.tz || tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var date = date_time_try_pattern(opts.fmts[i], str, tzOffset); - if (date !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, date); - return; - } - } - if (debug) console.warn("in date_time: id=" + opts.id + " FAILED: " + str); - }; -} - -var uA = 60 * 60 * 24; -var uD = 60 * 60 * 24; -var uF = 60 * 60; -var uG = 60 * 60 * 24 * 30; -var uH = 60 * 60; -var uI = 60 * 60; -var uJ = 60 * 60 * 24; -var uM = 60 * 60 * 24 * 30; -var uN = 60 * 60; -var uO = 1; -var uS = 1; -var uT = 60; -var uU = 60; -var uc = dc; - -function duration(opts) { - return function(evt) { - var str = date_time_join_args(evt, opts.args); - for (var i = 0; i < opts.fmts.length; i++) { - var seconds = duration_try_pattern(opts.fmts[i], str); - if (seconds !== undefined) { - evt.Put(FIELDS_PREFIX + opts.dest, seconds); - return; - } - } - if (debug) console.warn("in duration: id=" + opts.id + " (s) FAILED: " + str); - }; -} - -function duration_try_pattern(fmt, str) { - var secs = 0; - var pos = 0; - for (var i=0; i [ month_id , how many chars to skip if month in long form ] - "Jan": [0, 4], - "Feb": [1, 5], - "Mar": [2, 2], - "Apr": [3, 2], - "May": [4, 0], - "Jun": [5, 1], - "Jul": [6, 1], - "Aug": [7, 3], - "Sep": [8, 6], - "Oct": [9, 4], - "Nov": [10, 5], - "Dec": [11, 4], - "jan": [0, 4], - "feb": [1, 5], - "mar": [2, 2], - "apr": [3, 2], - "may": [4, 0], - "jun": [5, 1], - "jul": [6, 1], - "aug": [7, 3], - "sep": [8, 6], - "oct": [9, 4], - "nov": [10, 5], - "dec": [11, 4], -}; - -// var dC = undefined; -var dR = dateMonthName(true); -var dB = dateMonthName(false); -var dM = dateFixedWidthNumber("M", 2, 1, 12, DateContainer.prototype.setMonth); -var dG = dateVariableWidthNumber("G", 1, 12, DateContainer.prototype.setMonth); -var dD = dateFixedWidthNumber("D", 2, 1, 31, DateContainer.prototype.setDay); -var dF = dateVariableWidthNumber("F", 1, 31, DateContainer.prototype.setDay); -var dH = dateFixedWidthNumber("H", 2, 0, 24, DateContainer.prototype.setHours); -var dI = dateVariableWidthNumber("I", 0, 24, DateContainer.prototype.setHours); // Accept hours >12 -var dN = dateVariableWidthNumber("N", 0, 24, DateContainer.prototype.setHours); -var dT = dateFixedWidthNumber("T", 2, 0, 59, DateContainer.prototype.setMinutes); -var dU = dateVariableWidthNumber("U", 0, 59, DateContainer.prototype.setMinutes); -var dP = parseAMPM; // AM|PM -var dQ = parseAMPM; // A.M.|P.M -var dS = dateFixedWidthNumber("S", 2, 0, 60, DateContainer.prototype.setSeconds); -var dO = dateVariableWidthNumber("O", 0, 60, DateContainer.prototype.setSeconds); -var dY = dateFixedWidthNumber("Y", 2, 0, 99, DateContainer.prototype.set2DigitYear); -var dW = dateFixedWidthNumber("W", 4, 1000, 9999, DateContainer.prototype.setYear); -var dZ = parseHMS; -var dX = dateVariableWidthNumber("X", 0, 0x10000000000, DateContainer.prototype.setUNIX); - -// parseAMPM parses "A.M", "AM", "P.M", "PM" from logs. -// Only works if this modifier appears after the hour has been read from logs -// which is always the case in the 300 devices. -function parseAMPM(str, pos, date) { - var n = str.length; - var start = skipws(str, pos); - if (start + 2 > n) return; - var head = str.substr(start, 2).toUpperCase(); - var isPM = false; - var skip = false; - switch (head) { - case "A.": - skip = true; - /* falls through */ - case "AM": - break; - case "P.": - skip = true; - /* falls through */ - case "PM": - isPM = true; - break; - default: - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(head:" + head + ")"); - return; - } - pos = start + 2; - if (skip) { - if (pos+2 > n || str.substr(pos, 2).toUpperCase() !== "M.") { - if (debug) console.warn("can't parse pos " + start + " as AM/PM: " + str + "(tail)"); - return; - } - pos += 2; - } - var hh = date.hours; - if (isPM) { - // Accept existing hour in 24h format. - if (hh < 12) hh += 12; - } else { - if (hh === 12) hh = 0; - } - date.setHours(hh); - return pos; -} - -function parseHMS(str, pos, date) { - return date_time_try_pattern_at_pos([dN, dc(":"), dU, dc(":"), dO], str, pos, date); -} - -function skipws(str, pos) { - for ( var n = str.length; - pos < n && str.charAt(pos) === " "; - pos++) - ; - return pos; -} - -function skipdigits(str, pos) { - var c; - for (var n = str.length; - pos < n && (c = str.charAt(pos)) >= "0" && c <= "9"; - pos++) - ; - return pos; -} - -function dSkip(str, pos, date) { - var chr; - for (;pos < str.length && (chr=str[pos])<'0' || chr>'9'; pos++) {} - return pos < str.length? pos : undefined; -} - -function dateVariableWidthNumber(fmtChar, min, max, setter) { - return function (str, pos, date) { - var start = skipws(str, pos); - pos = skipdigits(str, start); - var s = str.substr(start, pos - start); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos; - } - return; - }; -} - -function dateFixedWidthNumber(fmtChar, width, min, max, setter) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + width > n) return; - var s = str.substr(pos, width); - var value = parseInt(s, 10); - if (value >= min && value <= max) { - setter.call(date, value); - return pos + width; - } - return; - }; -} - -// Short month name (Jan..Dec). -function dateMonthName(long) { - return function (str, pos, date) { - pos = skipws(str, pos); - var n = str.length; - if (pos + 3 > n) return; - var mon = str.substr(pos, 3); - var idx = shortMonths[mon]; - if (idx === undefined) { - idx = shortMonths[mon.toLowerCase()]; - } - if (idx === undefined) { - //console.warn("parsing date_time: '" + mon + "' is not a valid short month (%B)"); - return; - } - date.setMonth(idx[0]+1); - return pos + 3 + (long ? idx[1] : 0); - }; -} - -function url_wrapper(dst, src, fn) { - return function(evt) { - var value = evt.Get(FIELDS_PREFIX + src), result; - if (value != null && (result = fn(value))!== undefined) { - evt.Put(FIELDS_PREFIX + dst, result); - } else { - console.debug(fn.name + " failed for '" + value + "'"); - } - }; -} - -// The following regular expression for parsing URLs from: -// https://github.com/wizard04wsu/URI_Parsing -// -// The MIT License (MIT) -// -// Copyright (c) 2014 Andrew Harrison -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of -// this software and associated documentation files (the "Software"), to deal in -// the Software without restriction, including without limitation the rights to -// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -// the Software, and to permit persons to whom the Software is furnished to do so, -// subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var uriRegExp = /^([a-z][a-z0-9+.\-]*):(?:\/\/((?:(?=((?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9A-F]{2})*))(\3)@)?(?=(\[[0-9A-F:.]{2,}\]|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9A-F]{2})*))\5(?::(?=(\d*))\6)?)(\/(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\8)?|(\/?(?!\/)(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/]|%[0-9A-F]{2})*))\10)?)(?:\?(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\11)?(?:#(?=((?:[a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9A-F]{2})*))\12)?$/i; - -var uriScheme = 1; -var uriDomain = 5; -var uriPort = 6; -var uriPath = 7; -var uriPathAlt = 9; -var uriQuery = 11; - -function domain(dst, src) { - return url_wrapper(dst, src, extract_domain); -} - -function split_url(value) { - var m = value.match(uriRegExp); - if (m && m[uriDomain]) return m; - // Support input in the form "www.example.net/path", but not "/path". - m = ("null://" + value).match(uriRegExp); - if (m) return m; -} - -function extract_domain(value) { - var m = split_url(value); - if (m && m[uriDomain]) return m[uriDomain]; -} - -var extFromPage = /\.[^.]+$/; -function extract_ext(value) { - var page = extract_page(value); - if (page) { - var m = page.match(extFromPage); - if (m) return m[0]; - } -} - -function ext(dst, src) { - return url_wrapper(dst, src, extract_ext); -} - -function fqdn(dst, src) { - // TODO: fqdn and domain(eTLD+1) are currently the same. - return domain(dst, src); -} - -var pageFromPathRegExp = /\/([^\/]+)$/; -var pageName = 1; - -function extract_page(value) { - value = extract_path(value); - if (!value) return undefined; - var m = value.match(pageFromPathRegExp); - if (m) return m[pageName]; -} - -function page(dst, src) { - return url_wrapper(dst, src, extract_page); -} - -function extract_path(value) { - var m = split_url(value); - return m? m[uriPath] || m[uriPathAlt] : undefined; -} - -function path(dst, src) { - return url_wrapper(dst, src, extract_path); -} - -// Map common schemes to their default port. -// port has to be a string (will be converted at a later stage). -var schemePort = { - "ftp": "21", - "ssh": "22", - "http": "80", - "https": "443", -}; - -function extract_port(value) { - var m = split_url(value); - if (!m) return undefined; - if (m[uriPort]) return m[uriPort]; - if (m[uriScheme]) { - return schemePort[m[uriScheme]]; - } -} - -function port(dst, src) { - return url_wrapper(dst, src, extract_port); -} - -function extract_query(value) { - var m = split_url(value); - if (m && m[uriQuery]) return m[uriQuery]; -} - -function query(dst, src) { - return url_wrapper(dst, src, extract_query); -} - -function extract_root(value) { - var m = split_url(value); - if (m && m[uriDomain] && m[uriDomain]) { - var scheme = m[uriScheme] && m[uriScheme] !== "null"? - m[uriScheme] + "://" : ""; - var port = m[uriPort]? ":" + m[uriPort] : ""; - return scheme + m[uriDomain] + port; - } -} - -function root(dst, src) { - return url_wrapper(dst, src, extract_root); -} - -function tagval(id, src, cfg, keys, on_success) { - var fail = function(evt) { - evt.Put(FLAG_FIELD, "tagval_parsing_error"); - } - if (cfg.kv_separator.length !== 1) { - throw("Invalid TAGVALMAP ValueDelimiter (must have 1 character)"); - } - var quotes_len = cfg.open_quote.length > 0 && cfg.close_quote.length > 0? - cfg.open_quote.length + cfg.close_quote.length : 0; - var kv_regex = new RegExp('^([^' + cfg.kv_separator + ']*)*' + cfg.kv_separator + ' *(.*)*$'); - return function(evt) { - var msg = evt.Get(src); - if (msg === undefined) { - console.warn("tagval: input field is missing"); - return fail(evt); - } - var pairs = msg.split(cfg.pair_separator); - var i; - var success = false; - var prev = ""; - for (i=0; i 0 && - value.length >= cfg.open_quote.length + cfg.close_quote.length && - value.substr(0, cfg.open_quote.length) === cfg.open_quote && - value.substr(value.length - cfg.close_quote.length) === cfg.close_quote) { - value = value.substr(cfg.open_quote.length, value.length - quotes_len); - } - evt.Put(FIELDS_PREFIX + field, value); - success = true; - } - if (!success) { - return fail(evt); - } - if (on_success != null) { - on_success(evt); - } - } -} - -var ecs_mappings = { - "_facility": {convert: to_long, to:[{field: "log.syslog.facility.code", setter: fld_set}]}, - "_pri": {convert: to_long, to:[{field: "log.syslog.priority", setter: fld_set}]}, - "_severity": {convert: to_long, to:[{field: "log.syslog.severity.code", setter: fld_set}]}, - "action": {to:[{field: "event.action", setter: fld_prio, prio: 0}]}, - "administrator": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 4}]}, - "alias.ip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 3},{field: "related.ip", setter: fld_append}]}, - "alias.ipv6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 4},{field: "related.ip", setter: fld_append}]}, - "alias.mac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 1}]}, - "application": {to:[{field: "network.application", setter: fld_set}]}, - "bytes": {convert: to_long, to:[{field: "network.bytes", setter: fld_set}]}, - "c_domain": {to:[{field: "source.domain", setter: fld_prio, prio: 1}]}, - "c_logon_id": {to:[{field: "user.id", setter: fld_prio, prio: 2}]}, - "c_user_name": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 8}]}, - "c_username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 2}]}, - "cctld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 1}]}, - "child_pid": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 1}]}, - "child_pid_val": {to:[{field: "process.title", setter: fld_set}]}, - "child_process": {to:[{field: "process.name", setter: fld_prio, prio: 1}]}, - "city.dst": {to:[{field: "destination.geo.city_name", setter: fld_set}]}, - "city.src": {to:[{field: "source.geo.city_name", setter: fld_set}]}, - "daddr": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "daddr_v6": {convert: to_ip, to:[{field: "destination.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "ddomain": {to:[{field: "destination.domain", setter: fld_prio, prio: 0}]}, - "devicehostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "devicehostmac": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 0}]}, - "dhost": {to:[{field: "destination.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "dinterface": {to:[{field: "observer.egress.interface.name", setter: fld_set}]}, - "direction": {to:[{field: "network.direction", setter: fld_set}]}, - "directory": {to:[{field: "file.directory", setter: fld_set}]}, - "dmacaddr": {convert: to_mac, to:[{field: "destination.mac", setter: fld_set}]}, - "dns.responsetype": {to:[{field: "dns.answers.type", setter: fld_set}]}, - "dns.resptext": {to:[{field: "dns.answers.name", setter: fld_set}]}, - "dns_querytype": {to:[{field: "dns.question.type", setter: fld_set}]}, - "domain": {to:[{field: "server.domain", setter: fld_prio, prio: 0},{field: "related.hosts", setter: fld_append}]}, - "domain.dst": {to:[{field: "destination.domain", setter: fld_prio, prio: 1}]}, - "domain.src": {to:[{field: "source.domain", setter: fld_prio, prio: 2}]}, - "domain_id": {to:[{field: "user.domain", setter: fld_set}]}, - "domainname": {to:[{field: "server.domain", setter: fld_prio, prio: 1}]}, - "dport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 0}]}, - "dtransaddr": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "dtransport": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 0}]}, - "ec_outcome": {to:[{field: "event.outcome", setter: fld_ecs_outcome}]}, - "event_description": {to:[{field: "message", setter: fld_prio, prio: 0}]}, - "event_source": {to:[{field: "related.hosts", setter: fld_append}]}, - "event_time": {convert: to_date, to:[{field: "@timestamp", setter: fld_set}]}, - "event_type": {to:[{field: "event.action", setter: fld_prio, prio: 1}]}, - "extension": {to:[{field: "file.extension", setter: fld_prio, prio: 1}]}, - "file.attributes": {to:[{field: "file.attributes", setter: fld_set}]}, - "filename": {to:[{field: "file.name", setter: fld_prio, prio: 0}]}, - "filename_size": {convert: to_long, to:[{field: "file.size", setter: fld_set}]}, - "filepath": {to:[{field: "file.path", setter: fld_set}]}, - "filetype": {to:[{field: "file.type", setter: fld_set}]}, - "fqdn": {to:[{field: "related.hosts", setter: fld_append}]}, - "group": {to:[{field: "group.name", setter: fld_set}]}, - "groupid": {to:[{field: "group.id", setter: fld_set}]}, - "host": {to:[{field: "host.name", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "hostip": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "hostip_v6": {convert: to_ip, to:[{field: "host.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "hostname": {to:[{field: "host.name", setter: fld_prio, prio: 0}]}, - "id": {to:[{field: "event.code", setter: fld_prio, prio: 0}]}, - "interface": {to:[{field: "network.interface.name", setter: fld_set}]}, - "ip.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "ip.trans.dst": {convert: to_ip, to:[{field: "destination.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ip.trans.src": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "ipv6.orig": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 2},{field: "related.ip", setter: fld_append}]}, - "latdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lat", setter: fld_set}]}, - "latdec_src": {convert: to_double, to:[{field: "source.geo.location.lat", setter: fld_set}]}, - "location_city": {to:[{field: "geo.city_name", setter: fld_set}]}, - "location_country": {to:[{field: "geo.country_name", setter: fld_set}]}, - "location_desc": {to:[{field: "geo.name", setter: fld_set}]}, - "location_dst": {to:[{field: "destination.geo.country_name", setter: fld_set}]}, - "location_src": {to:[{field: "source.geo.country_name", setter: fld_set}]}, - "location_state": {to:[{field: "geo.region_name", setter: fld_set}]}, - "logon_id": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 5}]}, - "longdec_dst": {convert: to_double, to:[{field: "destination.geo.location.lon", setter: fld_set}]}, - "longdec_src": {convert: to_double, to:[{field: "source.geo.location.lon", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "host.mac", setter: fld_prio, prio: 2}]}, - "messageid": {to:[{field: "event.code", setter: fld_prio, prio: 1}]}, - "method": {to:[{field: "http.request.method", setter: fld_set}]}, - "msg": {to:[{field: "message", setter: fld_set}]}, - "orig_ip": {convert: to_ip, to:[{field: "network.forwarded_ip", setter: fld_prio, prio: 1},{field: "related.ip", setter: fld_append}]}, - "owner": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 6}]}, - "packets": {convert: to_long, to:[{field: "network.packets", setter: fld_set}]}, - "parent_pid": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 0}]}, - "parent_pid_val": {to:[{field: "process.parent.title", setter: fld_set}]}, - "parent_process": {to:[{field: "process.parent.name", setter: fld_prio, prio: 0}]}, - "patient_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 1}]}, - "port.dst": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 1}]}, - "port.src": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 1}]}, - "port.trans.dst": {convert: to_long, to:[{field: "destination.nat.port", setter: fld_prio, prio: 1}]}, - "port.trans.src": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 1}]}, - "process": {to:[{field: "process.name", setter: fld_prio, prio: 0}]}, - "process_id": {convert: to_long, to:[{field: "process.pid", setter: fld_prio, prio: 0}]}, - "process_id_src": {convert: to_long, to:[{field: "process.parent.pid", setter: fld_prio, prio: 1}]}, - "process_src": {to:[{field: "process.parent.name", setter: fld_prio, prio: 1}]}, - "product": {to:[{field: "observer.product", setter: fld_set}]}, - "protocol": {to:[{field: "network.protocol", setter: fld_set}]}, - "query": {to:[{field: "url.query", setter: fld_prio, prio: 2}]}, - "rbytes": {convert: to_long, to:[{field: "destination.bytes", setter: fld_set}]}, - "referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 1}]}, - "rulename": {to:[{field: "rule.name", setter: fld_set}]}, - "saddr": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "saddr_v6": {convert: to_ip, to:[{field: "source.ip", setter: fld_set},{field: "related.ip", setter: fld_append}]}, - "sbytes": {convert: to_long, to:[{field: "source.bytes", setter: fld_set}]}, - "sdomain": {to:[{field: "source.domain", setter: fld_prio, prio: 0}]}, - "service": {to:[{field: "service.name", setter: fld_prio, prio: 1}]}, - "service.name": {to:[{field: "service.name", setter: fld_prio, prio: 0}]}, - "service_account": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 7}]}, - "severity": {to:[{field: "log.level", setter: fld_set}]}, - "shost": {to:[{field: "host.hostname", setter: fld_set},{field: "source.address", setter: fld_set},{field: "related.hosts", setter: fld_append}]}, - "sinterface": {to:[{field: "observer.ingress.interface.name", setter: fld_set}]}, - "sld": {to:[{field: "url.registered_domain", setter: fld_set}]}, - "smacaddr": {convert: to_mac, to:[{field: "source.mac", setter: fld_set}]}, - "sport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 0}]}, - "stransaddr": {convert: to_ip, to:[{field: "source.nat.ip", setter: fld_prio, prio: 0},{field: "related.ip", setter: fld_append}]}, - "stransport": {convert: to_long, to:[{field: "source.nat.port", setter: fld_prio, prio: 0}]}, - "tcp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 2}]}, - "tcp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 2}]}, - "timezone": {to:[{field: "event.timezone", setter: fld_set}]}, - "tld": {to:[{field: "url.top_level_domain", setter: fld_prio, prio: 0}]}, - "udp.dstport": {convert: to_long, to:[{field: "destination.port", setter: fld_prio, prio: 3}]}, - "udp.srcport": {convert: to_long, to:[{field: "source.port", setter: fld_prio, prio: 3}]}, - "uid": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 3}]}, - "url": {to:[{field: "url.original", setter: fld_prio, prio: 1}]}, - "url_raw": {to:[{field: "url.original", setter: fld_prio, prio: 0}]}, - "urldomain": {to:[{field: "url.domain", setter: fld_prio, prio: 0}]}, - "urlquery": {to:[{field: "url.query", setter: fld_prio, prio: 0}]}, - "user": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 0}]}, - "user.id": {to:[{field: "user.id", setter: fld_prio, prio: 1}]}, - "user_agent": {to:[{field: "user_agent.original", setter: fld_set}]}, - "user_fullname": {to:[{field: "user.full_name", setter: fld_prio, prio: 0}]}, - "user_id": {to:[{field: "user.id", setter: fld_prio, prio: 0}]}, - "username": {to:[{field: "related.user", setter: fld_append},{field: "user.name", setter: fld_prio, prio: 1}]}, - "version": {to:[{field: "observer.version", setter: fld_set}]}, - "web_domain": {to:[{field: "url.domain", setter: fld_prio, prio: 1},{field: "related.hosts", setter: fld_append}]}, - "web_extension": {to:[{field: "file.extension", setter: fld_prio, prio: 0}]}, - "web_query": {to:[{field: "url.query", setter: fld_prio, prio: 1}]}, - "web_ref_domain": {to:[{field: "related.hosts", setter: fld_append}]}, - "web_referer": {to:[{field: "http.request.referrer", setter: fld_prio, prio: 0}]}, - "web_root": {to:[{field: "url.path", setter: fld_set}]}, - "webpage": {to:[{field: "file.name", setter: fld_prio, prio: 1}]}, -}; - -var rsa_mappings = { - "access_point": {to:[{field: "rsa.wireless.access_point", setter: fld_set}]}, - "accesses": {to:[{field: "rsa.identity.accesses", setter: fld_set}]}, - "acl_id": {to:[{field: "rsa.misc.acl_id", setter: fld_set}]}, - "acl_op": {to:[{field: "rsa.misc.acl_op", setter: fld_set}]}, - "acl_pos": {to:[{field: "rsa.misc.acl_pos", setter: fld_set}]}, - "acl_table": {to:[{field: "rsa.misc.acl_table", setter: fld_set}]}, - "action": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "ad_computer_dst": {to:[{field: "rsa.network.ad_computer_dst", setter: fld_set}]}, - "addr": {to:[{field: "rsa.network.addr", setter: fld_set}]}, - "admin": {to:[{field: "rsa.misc.admin", setter: fld_set}]}, - "agent": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 0}]}, - "agent.id": {to:[{field: "rsa.misc.agent_id", setter: fld_set}]}, - "alarm_id": {to:[{field: "rsa.misc.alarm_id", setter: fld_set}]}, - "alarmname": {to:[{field: "rsa.misc.alarmname", setter: fld_set}]}, - "alert": {to:[{field: "rsa.threat.alert", setter: fld_set}]}, - "alert_id": {to:[{field: "rsa.misc.alert_id", setter: fld_set}]}, - "alias.host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "analysis.file": {to:[{field: "rsa.investigations.analysis_file", setter: fld_set}]}, - "analysis.service": {to:[{field: "rsa.investigations.analysis_service", setter: fld_set}]}, - "analysis.session": {to:[{field: "rsa.investigations.analysis_session", setter: fld_set}]}, - "app_id": {to:[{field: "rsa.misc.app_id", setter: fld_set}]}, - "attachment": {to:[{field: "rsa.file.attachment", setter: fld_set}]}, - "audit": {to:[{field: "rsa.misc.audit", setter: fld_set}]}, - "audit_class": {to:[{field: "rsa.internal.audit_class", setter: fld_set}]}, - "audit_object": {to:[{field: "rsa.misc.audit_object", setter: fld_set}]}, - "auditdata": {to:[{field: "rsa.misc.auditdata", setter: fld_set}]}, - "authmethod": {to:[{field: "rsa.identity.auth_method", setter: fld_set}]}, - "autorun_type": {to:[{field: "rsa.misc.autorun_type", setter: fld_set}]}, - "bcc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "benchmark": {to:[{field: "rsa.misc.benchmark", setter: fld_set}]}, - "binary": {to:[{field: "rsa.file.binary", setter: fld_set}]}, - "boc": {to:[{field: "rsa.investigations.boc", setter: fld_set}]}, - "bssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 1}]}, - "bypass": {to:[{field: "rsa.misc.bypass", setter: fld_set}]}, - "c_sid": {to:[{field: "rsa.identity.user_sid_src", setter: fld_set}]}, - "cache": {to:[{field: "rsa.misc.cache", setter: fld_set}]}, - "cache_hit": {to:[{field: "rsa.misc.cache_hit", setter: fld_set}]}, - "calling_from": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 1}]}, - "calling_to": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 0}]}, - "category": {to:[{field: "rsa.misc.category", setter: fld_set}]}, - "cc": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "cc.number": {convert: to_long, to:[{field: "rsa.misc.cc_number", setter: fld_set}]}, - "cefversion": {to:[{field: "rsa.misc.cefversion", setter: fld_set}]}, - "cert.serial": {to:[{field: "rsa.crypto.cert_serial", setter: fld_set}]}, - "cert_ca": {to:[{field: "rsa.crypto.cert_ca", setter: fld_set}]}, - "cert_checksum": {to:[{field: "rsa.crypto.cert_checksum", setter: fld_set}]}, - "cert_common": {to:[{field: "rsa.crypto.cert_common", setter: fld_set}]}, - "cert_error": {to:[{field: "rsa.crypto.cert_error", setter: fld_set}]}, - "cert_hostname": {to:[{field: "rsa.crypto.cert_host_name", setter: fld_set}]}, - "cert_hostname_cat": {to:[{field: "rsa.crypto.cert_host_cat", setter: fld_set}]}, - "cert_issuer": {to:[{field: "rsa.crypto.cert_issuer", setter: fld_set}]}, - "cert_keysize": {to:[{field: "rsa.crypto.cert_keysize", setter: fld_set}]}, - "cert_status": {to:[{field: "rsa.crypto.cert_status", setter: fld_set}]}, - "cert_subject": {to:[{field: "rsa.crypto.cert_subject", setter: fld_set}]}, - "cert_username": {to:[{field: "rsa.crypto.cert_username", setter: fld_set}]}, - "cfg.attr": {to:[{field: "rsa.misc.cfg_attr", setter: fld_set}]}, - "cfg.obj": {to:[{field: "rsa.misc.cfg_obj", setter: fld_set}]}, - "cfg.path": {to:[{field: "rsa.misc.cfg_path", setter: fld_set}]}, - "change_attribute": {to:[{field: "rsa.misc.change_attrib", setter: fld_set}]}, - "change_new": {to:[{field: "rsa.misc.change_new", setter: fld_set}]}, - "change_old": {to:[{field: "rsa.misc.change_old", setter: fld_set}]}, - "changes": {to:[{field: "rsa.misc.changes", setter: fld_set}]}, - "checksum": {to:[{field: "rsa.misc.checksum", setter: fld_set}]}, - "checksum.dst": {to:[{field: "rsa.misc.checksum_dst", setter: fld_set}]}, - "checksum.src": {to:[{field: "rsa.misc.checksum_src", setter: fld_set}]}, - "cid": {to:[{field: "rsa.internal.cid", setter: fld_set}]}, - "client": {to:[{field: "rsa.misc.client", setter: fld_prio, prio: 1}]}, - "client_ip": {to:[{field: "rsa.misc.client_ip", setter: fld_set}]}, - "clustermembers": {to:[{field: "rsa.misc.clustermembers", setter: fld_set}]}, - "cmd": {to:[{field: "rsa.misc.cmd", setter: fld_set}]}, - "cn_acttimeout": {to:[{field: "rsa.misc.cn_acttimeout", setter: fld_set}]}, - "cn_asn_dst": {to:[{field: "rsa.web.cn_asn_dst", setter: fld_set}]}, - "cn_asn_src": {to:[{field: "rsa.misc.cn_asn_src", setter: fld_set}]}, - "cn_bgpv4nxthop": {to:[{field: "rsa.misc.cn_bgpv4nxthop", setter: fld_set}]}, - "cn_ctr_dst_code": {to:[{field: "rsa.misc.cn_ctr_dst_code", setter: fld_set}]}, - "cn_dst_tos": {to:[{field: "rsa.misc.cn_dst_tos", setter: fld_set}]}, - "cn_dst_vlan": {to:[{field: "rsa.misc.cn_dst_vlan", setter: fld_set}]}, - "cn_engine_id": {to:[{field: "rsa.misc.cn_engine_id", setter: fld_set}]}, - "cn_engine_type": {to:[{field: "rsa.misc.cn_engine_type", setter: fld_set}]}, - "cn_f_switch": {to:[{field: "rsa.misc.cn_f_switch", setter: fld_set}]}, - "cn_flowsampid": {to:[{field: "rsa.misc.cn_flowsampid", setter: fld_set}]}, - "cn_flowsampintv": {to:[{field: "rsa.misc.cn_flowsampintv", setter: fld_set}]}, - "cn_flowsampmode": {to:[{field: "rsa.misc.cn_flowsampmode", setter: fld_set}]}, - "cn_inacttimeout": {to:[{field: "rsa.misc.cn_inacttimeout", setter: fld_set}]}, - "cn_inpermbyts": {to:[{field: "rsa.misc.cn_inpermbyts", setter: fld_set}]}, - "cn_inpermpckts": {to:[{field: "rsa.misc.cn_inpermpckts", setter: fld_set}]}, - "cn_invalid": {to:[{field: "rsa.misc.cn_invalid", setter: fld_set}]}, - "cn_ip_proto_ver": {to:[{field: "rsa.misc.cn_ip_proto_ver", setter: fld_set}]}, - "cn_ipv4_ident": {to:[{field: "rsa.misc.cn_ipv4_ident", setter: fld_set}]}, - "cn_l_switch": {to:[{field: "rsa.misc.cn_l_switch", setter: fld_set}]}, - "cn_log_did": {to:[{field: "rsa.misc.cn_log_did", setter: fld_set}]}, - "cn_log_rid": {to:[{field: "rsa.misc.cn_log_rid", setter: fld_set}]}, - "cn_max_ttl": {to:[{field: "rsa.misc.cn_max_ttl", setter: fld_set}]}, - "cn_maxpcktlen": {to:[{field: "rsa.misc.cn_maxpcktlen", setter: fld_set}]}, - "cn_min_ttl": {to:[{field: "rsa.misc.cn_min_ttl", setter: fld_set}]}, - "cn_minpcktlen": {to:[{field: "rsa.misc.cn_minpcktlen", setter: fld_set}]}, - "cn_mpls_lbl_1": {to:[{field: "rsa.misc.cn_mpls_lbl_1", setter: fld_set}]}, - "cn_mpls_lbl_10": {to:[{field: "rsa.misc.cn_mpls_lbl_10", setter: fld_set}]}, - "cn_mpls_lbl_2": {to:[{field: "rsa.misc.cn_mpls_lbl_2", setter: fld_set}]}, - "cn_mpls_lbl_3": {to:[{field: "rsa.misc.cn_mpls_lbl_3", setter: fld_set}]}, - "cn_mpls_lbl_4": {to:[{field: "rsa.misc.cn_mpls_lbl_4", setter: fld_set}]}, - "cn_mpls_lbl_5": {to:[{field: "rsa.misc.cn_mpls_lbl_5", setter: fld_set}]}, - "cn_mpls_lbl_6": {to:[{field: "rsa.misc.cn_mpls_lbl_6", setter: fld_set}]}, - "cn_mpls_lbl_7": {to:[{field: "rsa.misc.cn_mpls_lbl_7", setter: fld_set}]}, - "cn_mpls_lbl_8": {to:[{field: "rsa.misc.cn_mpls_lbl_8", setter: fld_set}]}, - "cn_mpls_lbl_9": {to:[{field: "rsa.misc.cn_mpls_lbl_9", setter: fld_set}]}, - "cn_mplstoplabel": {to:[{field: "rsa.misc.cn_mplstoplabel", setter: fld_set}]}, - "cn_mplstoplabip": {to:[{field: "rsa.misc.cn_mplstoplabip", setter: fld_set}]}, - "cn_mul_dst_byt": {to:[{field: "rsa.misc.cn_mul_dst_byt", setter: fld_set}]}, - "cn_mul_dst_pks": {to:[{field: "rsa.misc.cn_mul_dst_pks", setter: fld_set}]}, - "cn_muligmptype": {to:[{field: "rsa.misc.cn_muligmptype", setter: fld_set}]}, - "cn_rpackets": {to:[{field: "rsa.web.cn_rpackets", setter: fld_set}]}, - "cn_sampalgo": {to:[{field: "rsa.misc.cn_sampalgo", setter: fld_set}]}, - "cn_sampint": {to:[{field: "rsa.misc.cn_sampint", setter: fld_set}]}, - "cn_seqctr": {to:[{field: "rsa.misc.cn_seqctr", setter: fld_set}]}, - "cn_spackets": {to:[{field: "rsa.misc.cn_spackets", setter: fld_set}]}, - "cn_src_tos": {to:[{field: "rsa.misc.cn_src_tos", setter: fld_set}]}, - "cn_src_vlan": {to:[{field: "rsa.misc.cn_src_vlan", setter: fld_set}]}, - "cn_sysuptime": {to:[{field: "rsa.misc.cn_sysuptime", setter: fld_set}]}, - "cn_template_id": {to:[{field: "rsa.misc.cn_template_id", setter: fld_set}]}, - "cn_totbytsexp": {to:[{field: "rsa.misc.cn_totbytsexp", setter: fld_set}]}, - "cn_totflowexp": {to:[{field: "rsa.misc.cn_totflowexp", setter: fld_set}]}, - "cn_totpcktsexp": {to:[{field: "rsa.misc.cn_totpcktsexp", setter: fld_set}]}, - "cn_unixnanosecs": {to:[{field: "rsa.misc.cn_unixnanosecs", setter: fld_set}]}, - "cn_v6flowlabel": {to:[{field: "rsa.misc.cn_v6flowlabel", setter: fld_set}]}, - "cn_v6optheaders": {to:[{field: "rsa.misc.cn_v6optheaders", setter: fld_set}]}, - "code": {to:[{field: "rsa.misc.code", setter: fld_set}]}, - "command": {to:[{field: "rsa.misc.command", setter: fld_set}]}, - "comments": {to:[{field: "rsa.misc.comments", setter: fld_set}]}, - "comp_class": {to:[{field: "rsa.misc.comp_class", setter: fld_set}]}, - "comp_name": {to:[{field: "rsa.misc.comp_name", setter: fld_set}]}, - "comp_rbytes": {to:[{field: "rsa.misc.comp_rbytes", setter: fld_set}]}, - "comp_sbytes": {to:[{field: "rsa.misc.comp_sbytes", setter: fld_set}]}, - "component_version": {to:[{field: "rsa.misc.comp_version", setter: fld_set}]}, - "connection_id": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 1}]}, - "connectionid": {to:[{field: "rsa.misc.connection_id", setter: fld_prio, prio: 0}]}, - "content": {to:[{field: "rsa.misc.content", setter: fld_set}]}, - "content_type": {to:[{field: "rsa.misc.content_type", setter: fld_set}]}, - "content_version": {to:[{field: "rsa.misc.content_version", setter: fld_set}]}, - "context": {to:[{field: "rsa.misc.context", setter: fld_set}]}, - "count": {to:[{field: "rsa.misc.count", setter: fld_set}]}, - "cpu": {convert: to_long, to:[{field: "rsa.misc.cpu", setter: fld_set}]}, - "cpu_data": {to:[{field: "rsa.misc.cpu_data", setter: fld_set}]}, - "criticality": {to:[{field: "rsa.misc.criticality", setter: fld_set}]}, - "cs_agency_dst": {to:[{field: "rsa.misc.cs_agency_dst", setter: fld_set}]}, - "cs_analyzedby": {to:[{field: "rsa.misc.cs_analyzedby", setter: fld_set}]}, - "cs_av_other": {to:[{field: "rsa.misc.cs_av_other", setter: fld_set}]}, - "cs_av_primary": {to:[{field: "rsa.misc.cs_av_primary", setter: fld_set}]}, - "cs_av_secondary": {to:[{field: "rsa.misc.cs_av_secondary", setter: fld_set}]}, - "cs_bgpv6nxthop": {to:[{field: "rsa.misc.cs_bgpv6nxthop", setter: fld_set}]}, - "cs_bit9status": {to:[{field: "rsa.misc.cs_bit9status", setter: fld_set}]}, - "cs_context": {to:[{field: "rsa.misc.cs_context", setter: fld_set}]}, - "cs_control": {to:[{field: "rsa.misc.cs_control", setter: fld_set}]}, - "cs_data": {to:[{field: "rsa.misc.cs_data", setter: fld_set}]}, - "cs_datecret": {to:[{field: "rsa.misc.cs_datecret", setter: fld_set}]}, - "cs_dst_tld": {to:[{field: "rsa.misc.cs_dst_tld", setter: fld_set}]}, - "cs_eth_dst_ven": {to:[{field: "rsa.misc.cs_eth_dst_ven", setter: fld_set}]}, - "cs_eth_src_ven": {to:[{field: "rsa.misc.cs_eth_src_ven", setter: fld_set}]}, - "cs_event_uuid": {to:[{field: "rsa.misc.cs_event_uuid", setter: fld_set}]}, - "cs_filetype": {to:[{field: "rsa.misc.cs_filetype", setter: fld_set}]}, - "cs_fld": {to:[{field: "rsa.misc.cs_fld", setter: fld_set}]}, - "cs_if_desc": {to:[{field: "rsa.misc.cs_if_desc", setter: fld_set}]}, - "cs_if_name": {to:[{field: "rsa.misc.cs_if_name", setter: fld_set}]}, - "cs_ip_next_hop": {to:[{field: "rsa.misc.cs_ip_next_hop", setter: fld_set}]}, - "cs_ipv4dstpre": {to:[{field: "rsa.misc.cs_ipv4dstpre", setter: fld_set}]}, - "cs_ipv4srcpre": {to:[{field: "rsa.misc.cs_ipv4srcpre", setter: fld_set}]}, - "cs_lifetime": {to:[{field: "rsa.misc.cs_lifetime", setter: fld_set}]}, - "cs_log_medium": {to:[{field: "rsa.misc.cs_log_medium", setter: fld_set}]}, - "cs_loginname": {to:[{field: "rsa.misc.cs_loginname", setter: fld_set}]}, - "cs_modulescore": {to:[{field: "rsa.misc.cs_modulescore", setter: fld_set}]}, - "cs_modulesign": {to:[{field: "rsa.misc.cs_modulesign", setter: fld_set}]}, - "cs_opswatresult": {to:[{field: "rsa.misc.cs_opswatresult", setter: fld_set}]}, - "cs_payload": {to:[{field: "rsa.misc.cs_payload", setter: fld_set}]}, - "cs_registrant": {to:[{field: "rsa.misc.cs_registrant", setter: fld_set}]}, - "cs_registrar": {to:[{field: "rsa.misc.cs_registrar", setter: fld_set}]}, - "cs_represult": {to:[{field: "rsa.misc.cs_represult", setter: fld_set}]}, - "cs_rpayload": {to:[{field: "rsa.misc.cs_rpayload", setter: fld_set}]}, - "cs_sampler_name": {to:[{field: "rsa.misc.cs_sampler_name", setter: fld_set}]}, - "cs_sourcemodule": {to:[{field: "rsa.misc.cs_sourcemodule", setter: fld_set}]}, - "cs_streams": {to:[{field: "rsa.misc.cs_streams", setter: fld_set}]}, - "cs_targetmodule": {to:[{field: "rsa.misc.cs_targetmodule", setter: fld_set}]}, - "cs_v6nxthop": {to:[{field: "rsa.misc.cs_v6nxthop", setter: fld_set}]}, - "cs_whois_server": {to:[{field: "rsa.misc.cs_whois_server", setter: fld_set}]}, - "cs_yararesult": {to:[{field: "rsa.misc.cs_yararesult", setter: fld_set}]}, - "cve": {to:[{field: "rsa.misc.cve", setter: fld_set}]}, - "d_certauth": {to:[{field: "rsa.crypto.d_certauth", setter: fld_set}]}, - "d_cipher": {to:[{field: "rsa.crypto.cipher_dst", setter: fld_set}]}, - "d_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_dst", setter: fld_set}]}, - "d_sslver": {to:[{field: "rsa.crypto.ssl_ver_dst", setter: fld_set}]}, - "data": {to:[{field: "rsa.internal.data", setter: fld_set}]}, - "data_type": {to:[{field: "rsa.misc.data_type", setter: fld_set}]}, - "date": {to:[{field: "rsa.time.date", setter: fld_set}]}, - "datetime": {to:[{field: "rsa.time.datetime", setter: fld_set}]}, - "day": {to:[{field: "rsa.time.day", setter: fld_set}]}, - "db_id": {to:[{field: "rsa.db.db_id", setter: fld_set}]}, - "db_name": {to:[{field: "rsa.db.database", setter: fld_set}]}, - "db_pid": {convert: to_long, to:[{field: "rsa.db.db_pid", setter: fld_set}]}, - "dclass_counter1": {convert: to_long, to:[{field: "rsa.counters.dclass_c1", setter: fld_set}]}, - "dclass_counter1_string": {to:[{field: "rsa.counters.dclass_c1_str", setter: fld_set}]}, - "dclass_counter2": {convert: to_long, to:[{field: "rsa.counters.dclass_c2", setter: fld_set}]}, - "dclass_counter2_string": {to:[{field: "rsa.counters.dclass_c2_str", setter: fld_set}]}, - "dclass_counter3": {convert: to_long, to:[{field: "rsa.counters.dclass_c3", setter: fld_set}]}, - "dclass_counter3_string": {to:[{field: "rsa.counters.dclass_c3_str", setter: fld_set}]}, - "dclass_ratio1": {to:[{field: "rsa.counters.dclass_r1", setter: fld_set}]}, - "dclass_ratio1_string": {to:[{field: "rsa.counters.dclass_r1_str", setter: fld_set}]}, - "dclass_ratio2": {to:[{field: "rsa.counters.dclass_r2", setter: fld_set}]}, - "dclass_ratio2_string": {to:[{field: "rsa.counters.dclass_r2_str", setter: fld_set}]}, - "dclass_ratio3": {to:[{field: "rsa.counters.dclass_r3", setter: fld_set}]}, - "dclass_ratio3_string": {to:[{field: "rsa.counters.dclass_r3_str", setter: fld_set}]}, - "dead": {convert: to_long, to:[{field: "rsa.internal.dead", setter: fld_set}]}, - "description": {to:[{field: "rsa.misc.description", setter: fld_set}]}, - "detail": {to:[{field: "rsa.misc.event_desc", setter: fld_set}]}, - "device": {to:[{field: "rsa.misc.device_name", setter: fld_set}]}, - "device.class": {to:[{field: "rsa.internal.device_class", setter: fld_set}]}, - "device.group": {to:[{field: "rsa.internal.device_group", setter: fld_set}]}, - "device.host": {to:[{field: "rsa.internal.device_host", setter: fld_set}]}, - "device.ip": {convert: to_ip, to:[{field: "rsa.internal.device_ip", setter: fld_set}]}, - "device.ipv6": {convert: to_ip, to:[{field: "rsa.internal.device_ipv6", setter: fld_set}]}, - "device.type": {to:[{field: "rsa.internal.device_type", setter: fld_set}]}, - "device.type.id": {convert: to_long, to:[{field: "rsa.internal.device_type_id", setter: fld_set}]}, - "devicehostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "devvendor": {to:[{field: "rsa.misc.devvendor", setter: fld_set}]}, - "dhost": {to:[{field: "rsa.network.host_dst", setter: fld_set}]}, - "did": {to:[{field: "rsa.internal.did", setter: fld_set}]}, - "dinterface": {to:[{field: "rsa.network.dinterface", setter: fld_set}]}, - "directory.dst": {to:[{field: "rsa.file.directory_dst", setter: fld_set}]}, - "directory.src": {to:[{field: "rsa.file.directory_src", setter: fld_set}]}, - "disk_volume": {to:[{field: "rsa.storage.disk_volume", setter: fld_set}]}, - "disposition": {to:[{field: "rsa.misc.disposition", setter: fld_set}]}, - "distance": {to:[{field: "rsa.misc.distance", setter: fld_set}]}, - "dmask": {to:[{field: "rsa.network.dmask", setter: fld_set}]}, - "dn": {to:[{field: "rsa.identity.dn", setter: fld_set}]}, - "dns_a_record": {to:[{field: "rsa.network.dns_a_record", setter: fld_set}]}, - "dns_cname_record": {to:[{field: "rsa.network.dns_cname_record", setter: fld_set}]}, - "dns_id": {to:[{field: "rsa.network.dns_id", setter: fld_set}]}, - "dns_opcode": {to:[{field: "rsa.network.dns_opcode", setter: fld_set}]}, - "dns_ptr_record": {to:[{field: "rsa.network.dns_ptr_record", setter: fld_set}]}, - "dns_resp": {to:[{field: "rsa.network.dns_resp", setter: fld_set}]}, - "dns_type": {to:[{field: "rsa.network.dns_type", setter: fld_set}]}, - "doc_number": {convert: to_long, to:[{field: "rsa.misc.doc_number", setter: fld_set}]}, - "domain": {to:[{field: "rsa.network.domain", setter: fld_set}]}, - "domain1": {to:[{field: "rsa.network.domain1", setter: fld_set}]}, - "dst_dn": {to:[{field: "rsa.identity.dn_dst", setter: fld_set}]}, - "dst_payload": {to:[{field: "rsa.misc.payload_dst", setter: fld_set}]}, - "dst_spi": {to:[{field: "rsa.misc.spi_dst", setter: fld_set}]}, - "dst_zone": {to:[{field: "rsa.network.zone_dst", setter: fld_set}]}, - "dstburb": {to:[{field: "rsa.misc.dstburb", setter: fld_set}]}, - "duration": {convert: to_double, to:[{field: "rsa.time.duration_time", setter: fld_set}]}, - "duration_string": {to:[{field: "rsa.time.duration_str", setter: fld_set}]}, - "ec_activity": {to:[{field: "rsa.investigations.ec_activity", setter: fld_set}]}, - "ec_outcome": {to:[{field: "rsa.investigations.ec_outcome", setter: fld_set}]}, - "ec_subject": {to:[{field: "rsa.investigations.ec_subject", setter: fld_set}]}, - "ec_theme": {to:[{field: "rsa.investigations.ec_theme", setter: fld_set}]}, - "edomain": {to:[{field: "rsa.misc.edomain", setter: fld_set}]}, - "edomaub": {to:[{field: "rsa.misc.edomaub", setter: fld_set}]}, - "effective_time": {convert: to_date, to:[{field: "rsa.time.effective_time", setter: fld_set}]}, - "ein.number": {convert: to_long, to:[{field: "rsa.misc.ein_number", setter: fld_set}]}, - "email": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "encryption_type": {to:[{field: "rsa.crypto.crypto", setter: fld_set}]}, - "endtime": {convert: to_date, to:[{field: "rsa.time.endtime", setter: fld_set}]}, - "entropy.req": {convert: to_long, to:[{field: "rsa.internal.entropy_req", setter: fld_set}]}, - "entropy.res": {convert: to_long, to:[{field: "rsa.internal.entropy_res", setter: fld_set}]}, - "entry": {to:[{field: "rsa.internal.entry", setter: fld_set}]}, - "eoc": {to:[{field: "rsa.investigations.eoc", setter: fld_set}]}, - "error": {to:[{field: "rsa.misc.error", setter: fld_set}]}, - "eth_type": {convert: to_long, to:[{field: "rsa.network.eth_type", setter: fld_set}]}, - "euid": {to:[{field: "rsa.misc.euid", setter: fld_set}]}, - "event.cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 1}]}, - "event.cat.name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 1}]}, - "event_cat": {convert: to_long, to:[{field: "rsa.investigations.event_cat", setter: fld_prio, prio: 0}]}, - "event_cat_name": {to:[{field: "rsa.investigations.event_cat_name", setter: fld_prio, prio: 0}]}, - "event_category": {to:[{field: "rsa.misc.event_category", setter: fld_set}]}, - "event_computer": {to:[{field: "rsa.misc.event_computer", setter: fld_set}]}, - "event_counter": {convert: to_long, to:[{field: "rsa.counters.event_counter", setter: fld_set}]}, - "event_description": {to:[{field: "rsa.internal.event_desc", setter: fld_set}]}, - "event_id": {to:[{field: "rsa.misc.event_id", setter: fld_set}]}, - "event_log": {to:[{field: "rsa.misc.event_log", setter: fld_set}]}, - "event_name": {to:[{field: "rsa.internal.event_name", setter: fld_set}]}, - "event_queue_time": {convert: to_date, to:[{field: "rsa.time.event_queue_time", setter: fld_set}]}, - "event_source": {to:[{field: "rsa.misc.event_source", setter: fld_set}]}, - "event_state": {to:[{field: "rsa.misc.event_state", setter: fld_set}]}, - "event_time": {convert: to_date, to:[{field: "rsa.time.event_time", setter: fld_set}]}, - "event_time_str": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 1}]}, - "event_time_string": {to:[{field: "rsa.time.event_time_str", setter: fld_prio, prio: 0}]}, - "event_type": {to:[{field: "rsa.misc.event_type", setter: fld_set}]}, - "event_user": {to:[{field: "rsa.misc.event_user", setter: fld_set}]}, - "eventtime": {to:[{field: "rsa.time.eventtime", setter: fld_set}]}, - "expected_val": {to:[{field: "rsa.misc.expected_val", setter: fld_set}]}, - "expiration_time": {convert: to_date, to:[{field: "rsa.time.expire_time", setter: fld_set}]}, - "expiration_time_string": {to:[{field: "rsa.time.expire_time_str", setter: fld_set}]}, - "facility": {to:[{field: "rsa.misc.facility", setter: fld_set}]}, - "facilityname": {to:[{field: "rsa.misc.facilityname", setter: fld_set}]}, - "faddr": {to:[{field: "rsa.network.faddr", setter: fld_set}]}, - "fcatnum": {to:[{field: "rsa.misc.fcatnum", setter: fld_set}]}, - "federated_idp": {to:[{field: "rsa.identity.federated_idp", setter: fld_set}]}, - "federated_sp": {to:[{field: "rsa.identity.federated_sp", setter: fld_set}]}, - "feed.category": {to:[{field: "rsa.internal.feed_category", setter: fld_set}]}, - "feed_desc": {to:[{field: "rsa.internal.feed_desc", setter: fld_set}]}, - "feed_name": {to:[{field: "rsa.internal.feed_name", setter: fld_set}]}, - "fhost": {to:[{field: "rsa.network.fhost", setter: fld_set}]}, - "file_entropy": {convert: to_double, to:[{field: "rsa.file.file_entropy", setter: fld_set}]}, - "file_vendor": {to:[{field: "rsa.file.file_vendor", setter: fld_set}]}, - "filename_dst": {to:[{field: "rsa.file.filename_dst", setter: fld_set}]}, - "filename_src": {to:[{field: "rsa.file.filename_src", setter: fld_set}]}, - "filename_tmp": {to:[{field: "rsa.file.filename_tmp", setter: fld_set}]}, - "filesystem": {to:[{field: "rsa.file.filesystem", setter: fld_set}]}, - "filter": {to:[{field: "rsa.misc.filter", setter: fld_set}]}, - "finterface": {to:[{field: "rsa.misc.finterface", setter: fld_set}]}, - "flags": {to:[{field: "rsa.misc.flags", setter: fld_set}]}, - "forensic_info": {to:[{field: "rsa.misc.forensic_info", setter: fld_set}]}, - "forward.ip": {convert: to_ip, to:[{field: "rsa.internal.forward_ip", setter: fld_set}]}, - "forward.ipv6": {convert: to_ip, to:[{field: "rsa.internal.forward_ipv6", setter: fld_set}]}, - "found": {to:[{field: "rsa.misc.found", setter: fld_set}]}, - "fport": {to:[{field: "rsa.network.fport", setter: fld_set}]}, - "fqdn": {to:[{field: "rsa.web.fqdn", setter: fld_set}]}, - "fresult": {convert: to_long, to:[{field: "rsa.misc.fresult", setter: fld_set}]}, - "from": {to:[{field: "rsa.email.email_src", setter: fld_set}]}, - "gaddr": {to:[{field: "rsa.misc.gaddr", setter: fld_set}]}, - "gateway": {to:[{field: "rsa.network.gateway", setter: fld_set}]}, - "gmtdate": {to:[{field: "rsa.time.gmtdate", setter: fld_set}]}, - "gmttime": {to:[{field: "rsa.time.gmttime", setter: fld_set}]}, - "group": {to:[{field: "rsa.misc.group", setter: fld_set}]}, - "group_object": {to:[{field: "rsa.misc.group_object", setter: fld_set}]}, - "groupid": {to:[{field: "rsa.misc.group_id", setter: fld_set}]}, - "h_code": {to:[{field: "rsa.internal.hcode", setter: fld_set}]}, - "hardware_id": {to:[{field: "rsa.misc.hardware_id", setter: fld_set}]}, - "header.id": {to:[{field: "rsa.internal.header_id", setter: fld_set}]}, - "host.orig": {to:[{field: "rsa.network.host_orig", setter: fld_set}]}, - "host.state": {to:[{field: "rsa.endpoint.host_state", setter: fld_set}]}, - "host.type": {to:[{field: "rsa.network.host_type", setter: fld_set}]}, - "host_role": {to:[{field: "rsa.identity.host_role", setter: fld_set}]}, - "hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hostname": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "hour": {to:[{field: "rsa.time.hour", setter: fld_set}]}, - "https.insact": {to:[{field: "rsa.crypto.https_insact", setter: fld_set}]}, - "https.valid": {to:[{field: "rsa.crypto.https_valid", setter: fld_set}]}, - "icmpcode": {convert: to_long, to:[{field: "rsa.network.icmp_code", setter: fld_set}]}, - "icmptype": {convert: to_long, to:[{field: "rsa.network.icmp_type", setter: fld_set}]}, - "id": {to:[{field: "rsa.misc.reference_id", setter: fld_set}]}, - "id1": {to:[{field: "rsa.misc.reference_id1", setter: fld_set}]}, - "id2": {to:[{field: "rsa.misc.reference_id2", setter: fld_set}]}, - "id3": {to:[{field: "rsa.misc.id3", setter: fld_set}]}, - "ike": {to:[{field: "rsa.crypto.ike", setter: fld_set}]}, - "ike_cookie1": {to:[{field: "rsa.crypto.ike_cookie1", setter: fld_set}]}, - "ike_cookie2": {to:[{field: "rsa.crypto.ike_cookie2", setter: fld_set}]}, - "im_buddyid": {to:[{field: "rsa.misc.im_buddyid", setter: fld_set}]}, - "im_buddyname": {to:[{field: "rsa.misc.im_buddyname", setter: fld_set}]}, - "im_client": {to:[{field: "rsa.misc.im_client", setter: fld_set}]}, - "im_croomid": {to:[{field: "rsa.misc.im_croomid", setter: fld_set}]}, - "im_croomtype": {to:[{field: "rsa.misc.im_croomtype", setter: fld_set}]}, - "im_members": {to:[{field: "rsa.misc.im_members", setter: fld_set}]}, - "im_userid": {to:[{field: "rsa.misc.im_userid", setter: fld_set}]}, - "im_username": {to:[{field: "rsa.misc.im_username", setter: fld_set}]}, - "index": {to:[{field: "rsa.misc.index", setter: fld_set}]}, - "info": {to:[{field: "rsa.db.index", setter: fld_set}]}, - "inode": {convert: to_long, to:[{field: "rsa.internal.inode", setter: fld_set}]}, - "inout": {to:[{field: "rsa.misc.inout", setter: fld_set}]}, - "instance": {to:[{field: "rsa.db.instance", setter: fld_set}]}, - "interface": {to:[{field: "rsa.network.interface", setter: fld_set}]}, - "inv.category": {to:[{field: "rsa.investigations.inv_category", setter: fld_set}]}, - "inv.context": {to:[{field: "rsa.investigations.inv_context", setter: fld_set}]}, - "ioc": {to:[{field: "rsa.investigations.ioc", setter: fld_set}]}, - "ip_proto": {convert: to_long, to:[{field: "rsa.network.ip_proto", setter: fld_set}]}, - "ipkt": {to:[{field: "rsa.misc.ipkt", setter: fld_set}]}, - "ipscat": {to:[{field: "rsa.misc.ipscat", setter: fld_set}]}, - "ipspri": {to:[{field: "rsa.misc.ipspri", setter: fld_set}]}, - "jobname": {to:[{field: "rsa.misc.jobname", setter: fld_set}]}, - "jobnum": {to:[{field: "rsa.misc.job_num", setter: fld_set}]}, - "laddr": {to:[{field: "rsa.network.laddr", setter: fld_set}]}, - "language": {to:[{field: "rsa.misc.language", setter: fld_set}]}, - "latitude": {to:[{field: "rsa.misc.latitude", setter: fld_set}]}, - "lc.cid": {to:[{field: "rsa.internal.lc_cid", setter: fld_set}]}, - "lc.ctime": {convert: to_date, to:[{field: "rsa.internal.lc_ctime", setter: fld_set}]}, - "ldap": {to:[{field: "rsa.identity.ldap", setter: fld_set}]}, - "ldap.query": {to:[{field: "rsa.identity.ldap_query", setter: fld_set}]}, - "ldap.response": {to:[{field: "rsa.identity.ldap_response", setter: fld_set}]}, - "level": {convert: to_long, to:[{field: "rsa.internal.level", setter: fld_set}]}, - "lhost": {to:[{field: "rsa.network.lhost", setter: fld_set}]}, - "library": {to:[{field: "rsa.misc.library", setter: fld_set}]}, - "lifetime": {convert: to_long, to:[{field: "rsa.misc.lifetime", setter: fld_set}]}, - "linenum": {to:[{field: "rsa.misc.linenum", setter: fld_set}]}, - "link": {to:[{field: "rsa.misc.link", setter: fld_set}]}, - "linterface": {to:[{field: "rsa.network.linterface", setter: fld_set}]}, - "list_name": {to:[{field: "rsa.misc.list_name", setter: fld_set}]}, - "listnum": {to:[{field: "rsa.misc.listnum", setter: fld_set}]}, - "load_data": {to:[{field: "rsa.misc.load_data", setter: fld_set}]}, - "location_floor": {to:[{field: "rsa.misc.location_floor", setter: fld_set}]}, - "location_mark": {to:[{field: "rsa.misc.location_mark", setter: fld_set}]}, - "log_id": {to:[{field: "rsa.misc.log_id", setter: fld_set}]}, - "log_type": {to:[{field: "rsa.misc.log_type", setter: fld_set}]}, - "logid": {to:[{field: "rsa.misc.logid", setter: fld_set}]}, - "logip": {to:[{field: "rsa.misc.logip", setter: fld_set}]}, - "logname": {to:[{field: "rsa.misc.logname", setter: fld_set}]}, - "logon_type": {to:[{field: "rsa.identity.logon_type", setter: fld_set}]}, - "logon_type_desc": {to:[{field: "rsa.identity.logon_type_desc", setter: fld_set}]}, - "longitude": {to:[{field: "rsa.misc.longitude", setter: fld_set}]}, - "lport": {to:[{field: "rsa.misc.lport", setter: fld_set}]}, - "lread": {convert: to_long, to:[{field: "rsa.db.lread", setter: fld_set}]}, - "lun": {to:[{field: "rsa.storage.lun", setter: fld_set}]}, - "lwrite": {convert: to_long, to:[{field: "rsa.db.lwrite", setter: fld_set}]}, - "macaddr": {convert: to_mac, to:[{field: "rsa.network.eth_host", setter: fld_set}]}, - "mail_id": {to:[{field: "rsa.misc.mail_id", setter: fld_set}]}, - "mask": {to:[{field: "rsa.network.mask", setter: fld_set}]}, - "match": {to:[{field: "rsa.misc.match", setter: fld_set}]}, - "mbug_data": {to:[{field: "rsa.misc.mbug_data", setter: fld_set}]}, - "mcb.req": {convert: to_long, to:[{field: "rsa.internal.mcb_req", setter: fld_set}]}, - "mcb.res": {convert: to_long, to:[{field: "rsa.internal.mcb_res", setter: fld_set}]}, - "mcbc.req": {convert: to_long, to:[{field: "rsa.internal.mcbc_req", setter: fld_set}]}, - "mcbc.res": {convert: to_long, to:[{field: "rsa.internal.mcbc_res", setter: fld_set}]}, - "medium": {convert: to_long, to:[{field: "rsa.internal.medium", setter: fld_set}]}, - "message": {to:[{field: "rsa.internal.message", setter: fld_set}]}, - "message_body": {to:[{field: "rsa.misc.message_body", setter: fld_set}]}, - "messageid": {to:[{field: "rsa.internal.messageid", setter: fld_set}]}, - "min": {to:[{field: "rsa.time.min", setter: fld_set}]}, - "misc": {to:[{field: "rsa.misc.misc", setter: fld_set}]}, - "misc_name": {to:[{field: "rsa.misc.misc_name", setter: fld_set}]}, - "mode": {to:[{field: "rsa.misc.mode", setter: fld_set}]}, - "month": {to:[{field: "rsa.time.month", setter: fld_set}]}, - "msg": {to:[{field: "rsa.internal.msg", setter: fld_set}]}, - "msgIdPart1": {to:[{field: "rsa.misc.msgIdPart1", setter: fld_set}]}, - "msgIdPart2": {to:[{field: "rsa.misc.msgIdPart2", setter: fld_set}]}, - "msgIdPart3": {to:[{field: "rsa.misc.msgIdPart3", setter: fld_set}]}, - "msgIdPart4": {to:[{field: "rsa.misc.msgIdPart4", setter: fld_set}]}, - "msg_id": {to:[{field: "rsa.internal.msg_id", setter: fld_set}]}, - "msg_type": {to:[{field: "rsa.misc.msg_type", setter: fld_set}]}, - "msgid": {to:[{field: "rsa.misc.msgid", setter: fld_set}]}, - "name": {to:[{field: "rsa.misc.name", setter: fld_set}]}, - "netname": {to:[{field: "rsa.network.netname", setter: fld_set}]}, - "netsessid": {to:[{field: "rsa.misc.netsessid", setter: fld_set}]}, - "network_port": {convert: to_long, to:[{field: "rsa.network.network_port", setter: fld_set}]}, - "network_service": {to:[{field: "rsa.network.network_service", setter: fld_set}]}, - "node": {to:[{field: "rsa.misc.node", setter: fld_set}]}, - "nodename": {to:[{field: "rsa.internal.node_name", setter: fld_set}]}, - "ntype": {to:[{field: "rsa.misc.ntype", setter: fld_set}]}, - "num": {to:[{field: "rsa.misc.num", setter: fld_set}]}, - "number": {to:[{field: "rsa.misc.number", setter: fld_set}]}, - "number1": {to:[{field: "rsa.misc.number1", setter: fld_set}]}, - "number2": {to:[{field: "rsa.misc.number2", setter: fld_set}]}, - "nwe.callback_id": {to:[{field: "rsa.internal.nwe_callback_id", setter: fld_set}]}, - "nwwn": {to:[{field: "rsa.misc.nwwn", setter: fld_set}]}, - "obj_id": {to:[{field: "rsa.internal.obj_id", setter: fld_set}]}, - "obj_name": {to:[{field: "rsa.misc.obj_name", setter: fld_set}]}, - "obj_server": {to:[{field: "rsa.internal.obj_server", setter: fld_set}]}, - "obj_type": {to:[{field: "rsa.misc.obj_type", setter: fld_set}]}, - "obj_value": {to:[{field: "rsa.internal.obj_val", setter: fld_set}]}, - "object": {to:[{field: "rsa.misc.object", setter: fld_set}]}, - "observed_val": {to:[{field: "rsa.misc.observed_val", setter: fld_set}]}, - "operation": {to:[{field: "rsa.misc.operation", setter: fld_set}]}, - "operation_id": {to:[{field: "rsa.misc.operation_id", setter: fld_set}]}, - "opkt": {to:[{field: "rsa.misc.opkt", setter: fld_set}]}, - "org.dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 1}]}, - "org.src": {to:[{field: "rsa.physical.org_src", setter: fld_set}]}, - "org_dst": {to:[{field: "rsa.physical.org_dst", setter: fld_prio, prio: 0}]}, - "orig_from": {to:[{field: "rsa.misc.orig_from", setter: fld_set}]}, - "origin": {to:[{field: "rsa.network.origin", setter: fld_set}]}, - "original_owner": {to:[{field: "rsa.identity.owner", setter: fld_set}]}, - "os": {to:[{field: "rsa.misc.OS", setter: fld_set}]}, - "owner_id": {to:[{field: "rsa.misc.owner_id", setter: fld_set}]}, - "p_action": {to:[{field: "rsa.misc.p_action", setter: fld_set}]}, - "p_date": {to:[{field: "rsa.time.p_date", setter: fld_set}]}, - "p_filter": {to:[{field: "rsa.misc.p_filter", setter: fld_set}]}, - "p_group_object": {to:[{field: "rsa.misc.p_group_object", setter: fld_set}]}, - "p_id": {to:[{field: "rsa.misc.p_id", setter: fld_set}]}, - "p_month": {to:[{field: "rsa.time.p_month", setter: fld_set}]}, - "p_msgid": {to:[{field: "rsa.misc.p_msgid", setter: fld_set}]}, - "p_msgid1": {to:[{field: "rsa.misc.p_msgid1", setter: fld_set}]}, - "p_msgid2": {to:[{field: "rsa.misc.p_msgid2", setter: fld_set}]}, - "p_result1": {to:[{field: "rsa.misc.p_result1", setter: fld_set}]}, - "p_time": {to:[{field: "rsa.time.p_time", setter: fld_set}]}, - "p_time1": {to:[{field: "rsa.time.p_time1", setter: fld_set}]}, - "p_time2": {to:[{field: "rsa.time.p_time2", setter: fld_set}]}, - "p_url": {to:[{field: "rsa.web.p_url", setter: fld_set}]}, - "p_user_agent": {to:[{field: "rsa.web.p_user_agent", setter: fld_set}]}, - "p_web_cookie": {to:[{field: "rsa.web.p_web_cookie", setter: fld_set}]}, - "p_web_method": {to:[{field: "rsa.web.p_web_method", setter: fld_set}]}, - "p_web_referer": {to:[{field: "rsa.web.p_web_referer", setter: fld_set}]}, - "p_year": {to:[{field: "rsa.time.p_year", setter: fld_set}]}, - "packet_length": {to:[{field: "rsa.network.packet_length", setter: fld_set}]}, - "paddr": {convert: to_ip, to:[{field: "rsa.network.paddr", setter: fld_set}]}, - "param": {to:[{field: "rsa.misc.param", setter: fld_set}]}, - "param.dst": {to:[{field: "rsa.misc.param_dst", setter: fld_set}]}, - "param.src": {to:[{field: "rsa.misc.param_src", setter: fld_set}]}, - "parent_node": {to:[{field: "rsa.misc.parent_node", setter: fld_set}]}, - "parse.error": {to:[{field: "rsa.internal.parse_error", setter: fld_set}]}, - "password": {to:[{field: "rsa.identity.password", setter: fld_set}]}, - "password_chg": {to:[{field: "rsa.misc.password_chg", setter: fld_set}]}, - "password_expire": {to:[{field: "rsa.misc.password_expire", setter: fld_set}]}, - "patient_fname": {to:[{field: "rsa.healthcare.patient_fname", setter: fld_set}]}, - "patient_id": {to:[{field: "rsa.healthcare.patient_id", setter: fld_set}]}, - "patient_lname": {to:[{field: "rsa.healthcare.patient_lname", setter: fld_set}]}, - "patient_mname": {to:[{field: "rsa.healthcare.patient_mname", setter: fld_set}]}, - "payload.req": {convert: to_long, to:[{field: "rsa.internal.payload_req", setter: fld_set}]}, - "payload.res": {convert: to_long, to:[{field: "rsa.internal.payload_res", setter: fld_set}]}, - "peer": {to:[{field: "rsa.crypto.peer", setter: fld_set}]}, - "peer_id": {to:[{field: "rsa.crypto.peer_id", setter: fld_set}]}, - "permgranted": {to:[{field: "rsa.misc.permgranted", setter: fld_set}]}, - "permissions": {to:[{field: "rsa.db.permissions", setter: fld_set}]}, - "permwanted": {to:[{field: "rsa.misc.permwanted", setter: fld_set}]}, - "pgid": {to:[{field: "rsa.misc.pgid", setter: fld_set}]}, - "phone_number": {to:[{field: "rsa.misc.phone", setter: fld_prio, prio: 2}]}, - "phost": {to:[{field: "rsa.network.phost", setter: fld_set}]}, - "pid": {to:[{field: "rsa.misc.pid", setter: fld_set}]}, - "policy": {to:[{field: "rsa.misc.policy", setter: fld_set}]}, - "policyUUID": {to:[{field: "rsa.misc.policyUUID", setter: fld_set}]}, - "policy_id": {to:[{field: "rsa.misc.policy_id", setter: fld_set}]}, - "policy_value": {to:[{field: "rsa.misc.policy_value", setter: fld_set}]}, - "policy_waiver": {to:[{field: "rsa.misc.policy_waiver", setter: fld_set}]}, - "policyname": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 0}]}, - "pool_id": {to:[{field: "rsa.misc.pool_id", setter: fld_set}]}, - "pool_name": {to:[{field: "rsa.misc.pool_name", setter: fld_set}]}, - "port": {convert: to_long, to:[{field: "rsa.network.port", setter: fld_set}]}, - "portname": {to:[{field: "rsa.misc.port_name", setter: fld_set}]}, - "pread": {convert: to_long, to:[{field: "rsa.db.pread", setter: fld_set}]}, - "priority": {to:[{field: "rsa.misc.priority", setter: fld_set}]}, - "privilege": {to:[{field: "rsa.file.privilege", setter: fld_set}]}, - "process.vid.dst": {to:[{field: "rsa.internal.process_vid_dst", setter: fld_set}]}, - "process.vid.src": {to:[{field: "rsa.internal.process_vid_src", setter: fld_set}]}, - "process_id_val": {to:[{field: "rsa.misc.process_id_val", setter: fld_set}]}, - "processing_time": {to:[{field: "rsa.time.process_time", setter: fld_set}]}, - "profile": {to:[{field: "rsa.identity.profile", setter: fld_set}]}, - "prog_asp_num": {to:[{field: "rsa.misc.prog_asp_num", setter: fld_set}]}, - "program": {to:[{field: "rsa.misc.program", setter: fld_set}]}, - "protocol_detail": {to:[{field: "rsa.network.protocol_detail", setter: fld_set}]}, - "pwwn": {to:[{field: "rsa.storage.pwwn", setter: fld_set}]}, - "r_hostid": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "real_data": {to:[{field: "rsa.misc.real_data", setter: fld_set}]}, - "realm": {to:[{field: "rsa.identity.realm", setter: fld_set}]}, - "reason": {to:[{field: "rsa.misc.reason", setter: fld_set}]}, - "rec_asp_device": {to:[{field: "rsa.misc.rec_asp_device", setter: fld_set}]}, - "rec_asp_num": {to:[{field: "rsa.misc.rec_asp_num", setter: fld_set}]}, - "rec_library": {to:[{field: "rsa.misc.rec_library", setter: fld_set}]}, - "recorded_time": {convert: to_date, to:[{field: "rsa.time.recorded_time", setter: fld_set}]}, - "recordnum": {to:[{field: "rsa.misc.recordnum", setter: fld_set}]}, - "registry.key": {to:[{field: "rsa.endpoint.registry_key", setter: fld_set}]}, - "registry.value": {to:[{field: "rsa.endpoint.registry_value", setter: fld_set}]}, - "remote_domain": {to:[{field: "rsa.web.remote_domain", setter: fld_set}]}, - "remote_domain_id": {to:[{field: "rsa.network.remote_domain_id", setter: fld_set}]}, - "reputation_num": {convert: to_double, to:[{field: "rsa.web.reputation_num", setter: fld_set}]}, - "resource": {to:[{field: "rsa.internal.resource", setter: fld_set}]}, - "resource_class": {to:[{field: "rsa.internal.resource_class", setter: fld_set}]}, - "result": {to:[{field: "rsa.misc.result", setter: fld_set}]}, - "result_code": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 1}]}, - "resultcode": {to:[{field: "rsa.misc.result_code", setter: fld_prio, prio: 0}]}, - "rid": {convert: to_long, to:[{field: "rsa.internal.rid", setter: fld_set}]}, - "risk": {to:[{field: "rsa.misc.risk", setter: fld_set}]}, - "risk_info": {to:[{field: "rsa.misc.risk_info", setter: fld_set}]}, - "risk_num": {convert: to_double, to:[{field: "rsa.misc.risk_num", setter: fld_set}]}, - "risk_num_comm": {convert: to_double, to:[{field: "rsa.misc.risk_num_comm", setter: fld_set}]}, - "risk_num_next": {convert: to_double, to:[{field: "rsa.misc.risk_num_next", setter: fld_set}]}, - "risk_num_sand": {convert: to_double, to:[{field: "rsa.misc.risk_num_sand", setter: fld_set}]}, - "risk_num_static": {convert: to_double, to:[{field: "rsa.misc.risk_num_static", setter: fld_set}]}, - "risk_suspicious": {to:[{field: "rsa.misc.risk_suspicious", setter: fld_set}]}, - "risk_warning": {to:[{field: "rsa.misc.risk_warning", setter: fld_set}]}, - "rpayload": {to:[{field: "rsa.network.rpayload", setter: fld_set}]}, - "ruid": {to:[{field: "rsa.misc.ruid", setter: fld_set}]}, - "rule": {to:[{field: "rsa.misc.rule", setter: fld_set}]}, - "rule_group": {to:[{field: "rsa.misc.rule_group", setter: fld_set}]}, - "rule_template": {to:[{field: "rsa.misc.rule_template", setter: fld_set}]}, - "rule_uid": {to:[{field: "rsa.misc.rule_uid", setter: fld_set}]}, - "rulename": {to:[{field: "rsa.misc.rule_name", setter: fld_set}]}, - "s_certauth": {to:[{field: "rsa.crypto.s_certauth", setter: fld_set}]}, - "s_cipher": {to:[{field: "rsa.crypto.cipher_src", setter: fld_set}]}, - "s_ciphersize": {convert: to_long, to:[{field: "rsa.crypto.cipher_size_src", setter: fld_set}]}, - "s_context": {to:[{field: "rsa.misc.context_subject", setter: fld_set}]}, - "s_sslver": {to:[{field: "rsa.crypto.ssl_ver_src", setter: fld_set}]}, - "sburb": {to:[{field: "rsa.misc.sburb", setter: fld_set}]}, - "scheme": {to:[{field: "rsa.crypto.scheme", setter: fld_set}]}, - "sdomain_fld": {to:[{field: "rsa.misc.sdomain_fld", setter: fld_set}]}, - "search.text": {to:[{field: "rsa.misc.search_text", setter: fld_set}]}, - "sec": {to:[{field: "rsa.misc.sec", setter: fld_set}]}, - "second": {to:[{field: "rsa.misc.second", setter: fld_set}]}, - "sensor": {to:[{field: "rsa.misc.sensor", setter: fld_set}]}, - "sensorname": {to:[{field: "rsa.misc.sensorname", setter: fld_set}]}, - "seqnum": {to:[{field: "rsa.misc.seqnum", setter: fld_set}]}, - "serial_number": {to:[{field: "rsa.misc.serial_number", setter: fld_set}]}, - "service.account": {to:[{field: "rsa.identity.service_account", setter: fld_set}]}, - "session": {to:[{field: "rsa.misc.session", setter: fld_set}]}, - "session.split": {to:[{field: "rsa.internal.session_split", setter: fld_set}]}, - "sessionid": {to:[{field: "rsa.misc.log_session_id", setter: fld_set}]}, - "sessionid1": {to:[{field: "rsa.misc.log_session_id1", setter: fld_set}]}, - "sessiontype": {to:[{field: "rsa.misc.sessiontype", setter: fld_set}]}, - "severity": {to:[{field: "rsa.misc.severity", setter: fld_set}]}, - "sid": {to:[{field: "rsa.identity.user_sid_dst", setter: fld_set}]}, - "sig.name": {to:[{field: "rsa.misc.sig_name", setter: fld_set}]}, - "sigUUID": {to:[{field: "rsa.misc.sigUUID", setter: fld_set}]}, - "sigcat": {to:[{field: "rsa.misc.sigcat", setter: fld_set}]}, - "sigid": {convert: to_long, to:[{field: "rsa.misc.sig_id", setter: fld_set}]}, - "sigid1": {convert: to_long, to:[{field: "rsa.misc.sig_id1", setter: fld_set}]}, - "sigid_string": {to:[{field: "rsa.misc.sig_id_str", setter: fld_set}]}, - "signame": {to:[{field: "rsa.misc.policy_name", setter: fld_prio, prio: 1}]}, - "sigtype": {to:[{field: "rsa.crypto.sig_type", setter: fld_set}]}, - "sinterface": {to:[{field: "rsa.network.sinterface", setter: fld_set}]}, - "site": {to:[{field: "rsa.internal.site", setter: fld_set}]}, - "size": {convert: to_long, to:[{field: "rsa.internal.size", setter: fld_set}]}, - "smask": {to:[{field: "rsa.network.smask", setter: fld_set}]}, - "snmp.oid": {to:[{field: "rsa.misc.snmp_oid", setter: fld_set}]}, - "snmp.value": {to:[{field: "rsa.misc.snmp_value", setter: fld_set}]}, - "sourcefile": {to:[{field: "rsa.internal.sourcefile", setter: fld_set}]}, - "space": {to:[{field: "rsa.misc.space", setter: fld_set}]}, - "space1": {to:[{field: "rsa.misc.space1", setter: fld_set}]}, - "spi": {to:[{field: "rsa.misc.spi", setter: fld_set}]}, - "sql": {to:[{field: "rsa.misc.sql", setter: fld_set}]}, - "src_dn": {to:[{field: "rsa.identity.dn_src", setter: fld_set}]}, - "src_payload": {to:[{field: "rsa.misc.payload_src", setter: fld_set}]}, - "src_spi": {to:[{field: "rsa.misc.spi_src", setter: fld_set}]}, - "src_zone": {to:[{field: "rsa.network.zone_src", setter: fld_set}]}, - "srcburb": {to:[{field: "rsa.misc.srcburb", setter: fld_set}]}, - "srcdom": {to:[{field: "rsa.misc.srcdom", setter: fld_set}]}, - "srcservice": {to:[{field: "rsa.misc.srcservice", setter: fld_set}]}, - "ssid": {to:[{field: "rsa.wireless.wlan_ssid", setter: fld_prio, prio: 0}]}, - "stamp": {convert: to_date, to:[{field: "rsa.time.stamp", setter: fld_set}]}, - "starttime": {convert: to_date, to:[{field: "rsa.time.starttime", setter: fld_set}]}, - "state": {to:[{field: "rsa.misc.state", setter: fld_set}]}, - "statement": {to:[{field: "rsa.internal.statement", setter: fld_set}]}, - "status": {to:[{field: "rsa.misc.status", setter: fld_set}]}, - "status1": {to:[{field: "rsa.misc.status1", setter: fld_set}]}, - "streams": {convert: to_long, to:[{field: "rsa.misc.streams", setter: fld_set}]}, - "subcategory": {to:[{field: "rsa.misc.subcategory", setter: fld_set}]}, - "subject": {to:[{field: "rsa.email.subject", setter: fld_set}]}, - "svcno": {to:[{field: "rsa.misc.svcno", setter: fld_set}]}, - "system": {to:[{field: "rsa.misc.system", setter: fld_set}]}, - "t_context": {to:[{field: "rsa.misc.context_target", setter: fld_set}]}, - "task_name": {to:[{field: "rsa.file.task_name", setter: fld_set}]}, - "tbdstr1": {to:[{field: "rsa.misc.tbdstr1", setter: fld_set}]}, - "tbdstr2": {to:[{field: "rsa.misc.tbdstr2", setter: fld_set}]}, - "tbl_name": {to:[{field: "rsa.db.table_name", setter: fld_set}]}, - "tcp_flags": {convert: to_long, to:[{field: "rsa.misc.tcp_flags", setter: fld_set}]}, - "terminal": {to:[{field: "rsa.misc.terminal", setter: fld_set}]}, - "tgtdom": {to:[{field: "rsa.misc.tgtdom", setter: fld_set}]}, - "tgtdomain": {to:[{field: "rsa.misc.tgtdomain", setter: fld_set}]}, - "threat_name": {to:[{field: "rsa.threat.threat_category", setter: fld_set}]}, - "threat_source": {to:[{field: "rsa.threat.threat_source", setter: fld_set}]}, - "threat_val": {to:[{field: "rsa.threat.threat_desc", setter: fld_set}]}, - "threshold": {to:[{field: "rsa.misc.threshold", setter: fld_set}]}, - "time": {convert: to_date, to:[{field: "rsa.internal.time", setter: fld_set}]}, - "timestamp": {to:[{field: "rsa.time.timestamp", setter: fld_set}]}, - "timezone": {to:[{field: "rsa.time.timezone", setter: fld_set}]}, - "to": {to:[{field: "rsa.email.email_dst", setter: fld_set}]}, - "tos": {convert: to_long, to:[{field: "rsa.misc.tos", setter: fld_set}]}, - "trans_from": {to:[{field: "rsa.email.trans_from", setter: fld_set}]}, - "trans_id": {to:[{field: "rsa.db.transact_id", setter: fld_set}]}, - "trans_to": {to:[{field: "rsa.email.trans_to", setter: fld_set}]}, - "trigger_desc": {to:[{field: "rsa.misc.trigger_desc", setter: fld_set}]}, - "trigger_val": {to:[{field: "rsa.misc.trigger_val", setter: fld_set}]}, - "type": {to:[{field: "rsa.misc.type", setter: fld_set}]}, - "type1": {to:[{field: "rsa.misc.type1", setter: fld_set}]}, - "tzone": {to:[{field: "rsa.time.tzone", setter: fld_set}]}, - "ubc.req": {convert: to_long, to:[{field: "rsa.internal.ubc_req", setter: fld_set}]}, - "ubc.res": {convert: to_long, to:[{field: "rsa.internal.ubc_res", setter: fld_set}]}, - "udb_class": {to:[{field: "rsa.misc.udb_class", setter: fld_set}]}, - "url_fld": {to:[{field: "rsa.misc.url_fld", setter: fld_set}]}, - "urlpage": {to:[{field: "rsa.web.urlpage", setter: fld_set}]}, - "urlroot": {to:[{field: "rsa.web.urlroot", setter: fld_set}]}, - "user_address": {to:[{field: "rsa.email.email", setter: fld_append}]}, - "user_dept": {to:[{field: "rsa.identity.user_dept", setter: fld_set}]}, - "user_div": {to:[{field: "rsa.misc.user_div", setter: fld_set}]}, - "user_fname": {to:[{field: "rsa.identity.firstname", setter: fld_set}]}, - "user_lname": {to:[{field: "rsa.identity.lastname", setter: fld_set}]}, - "user_mname": {to:[{field: "rsa.identity.middlename", setter: fld_set}]}, - "user_org": {to:[{field: "rsa.identity.org", setter: fld_set}]}, - "user_role": {to:[{field: "rsa.identity.user_role", setter: fld_set}]}, - "userid": {to:[{field: "rsa.misc.userid", setter: fld_set}]}, - "username_fld": {to:[{field: "rsa.misc.username_fld", setter: fld_set}]}, - "utcstamp": {to:[{field: "rsa.misc.utcstamp", setter: fld_set}]}, - "v_instafname": {to:[{field: "rsa.misc.v_instafname", setter: fld_set}]}, - "vendor_event_cat": {to:[{field: "rsa.investigations.event_vcat", setter: fld_set}]}, - "version": {to:[{field: "rsa.misc.version", setter: fld_set}]}, - "vid": {to:[{field: "rsa.internal.msg_vid", setter: fld_set}]}, - "virt_data": {to:[{field: "rsa.misc.virt_data", setter: fld_set}]}, - "virusname": {to:[{field: "rsa.misc.virusname", setter: fld_set}]}, - "vlan": {convert: to_long, to:[{field: "rsa.network.vlan", setter: fld_set}]}, - "vlan.name": {to:[{field: "rsa.network.vlan_name", setter: fld_set}]}, - "vm_target": {to:[{field: "rsa.misc.vm_target", setter: fld_set}]}, - "vpnid": {to:[{field: "rsa.misc.vpnid", setter: fld_set}]}, - "vsys": {to:[{field: "rsa.misc.vsys", setter: fld_set}]}, - "vuln_ref": {to:[{field: "rsa.misc.vuln_ref", setter: fld_set}]}, - "web_cookie": {to:[{field: "rsa.web.web_cookie", setter: fld_set}]}, - "web_extension_tmp": {to:[{field: "rsa.web.web_extension_tmp", setter: fld_set}]}, - "web_host": {to:[{field: "rsa.web.alias_host", setter: fld_set}]}, - "web_method": {to:[{field: "rsa.misc.action", setter: fld_append}]}, - "web_page": {to:[{field: "rsa.web.web_page", setter: fld_set}]}, - "web_ref_domain": {to:[{field: "rsa.web.web_ref_domain", setter: fld_set}]}, - "web_ref_host": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "web_ref_page": {to:[{field: "rsa.web.web_ref_page", setter: fld_set}]}, - "web_ref_query": {to:[{field: "rsa.web.web_ref_query", setter: fld_set}]}, - "web_ref_root": {to:[{field: "rsa.web.web_ref_root", setter: fld_set}]}, - "wifi_channel": {convert: to_long, to:[{field: "rsa.wireless.wlan_channel", setter: fld_set}]}, - "wlan": {to:[{field: "rsa.wireless.wlan_name", setter: fld_set}]}, - "word": {to:[{field: "rsa.internal.word", setter: fld_set}]}, - "workspace_desc": {to:[{field: "rsa.misc.workspace", setter: fld_set}]}, - "workstation": {to:[{field: "rsa.network.alias_host", setter: fld_append}]}, - "year": {to:[{field: "rsa.time.year", setter: fld_set}]}, - "zone": {to:[{field: "rsa.network.zone", setter: fld_set}]}, -}; - -function to_date(value) { - switch (typeof (value)) { - case "object": - // This is a Date. But as it was obtained from evt.Get(), the VM - // doesn't see it as a JS Date anymore, thus value instanceof Date === false. - // Have to trust that any object here is a valid Date for Go. - return value; - case "string": - var asDate = new Date(value); - if (!isNaN(asDate)) return asDate; - } -} - -// ECMAScript 5.1 doesn't have Object.MAX_SAFE_INTEGER / Object.MIN_SAFE_INTEGER. -var maxSafeInt = Math.pow(2, 53) - 1; -var minSafeInt = -maxSafeInt; - -function to_long(value) { - var num = parseInt(value); - // Better not to index a number if it's not safe (above 53 bits). - return !isNaN(num) && minSafeInt <= num && num <= maxSafeInt ? num : undefined; -} - -function to_ip(value) { - if (value.indexOf(":") === -1) - return to_ipv4(value); - return to_ipv6(value); -} - -var ipv4_regex = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; -var ipv6_hex_regex = /^[0-9A-Fa-f]{1,4}$/; - -function to_ipv4(value) { - var result = ipv4_regex.exec(value); - if (result == null || result.length !== 5) return; - for (var i = 1; i < 5; i++) { - var num = strictToInt(result[i]); - if (isNaN(num) || num < 0 || num > 255) return; - } - return value; -} - -function to_ipv6(value) { - var sqEnd = value.indexOf("]"); - if (sqEnd > -1) { - if (value.charAt(0) !== "[") return; - value = value.substr(1, sqEnd - 1); - } - var zoneOffset = value.indexOf("%"); - if (zoneOffset > -1) { - value = value.substr(0, zoneOffset); - } - var parts = value.split(":"); - if (parts == null || parts.length < 3 || parts.length > 8) return; - var numEmpty = 0; - var innerEmpty = 0; - for (var i = 0; i < parts.length; i++) { - if (parts[i].length === 0) { - numEmpty++; - if (i > 0 && i + 1 < parts.length) innerEmpty++; - } else if (!parts[i].match(ipv6_hex_regex) && - // Accept an IPv6 with a valid IPv4 at the end. - ((i + 1 < parts.length) || !to_ipv4(parts[i]))) { - return; - } - } - return innerEmpty === 0 && parts.length === 8 || innerEmpty === 1 ? value : undefined; -} - -function to_double(value) { - return parseFloat(value); -} - -function to_mac(value) { - // ES doesn't have a mac datatype so it's safe to ingest whatever was captured. - return value; -} - -function to_lowercase(value) { - // to_lowercase is used against keyword fields, which can accept - // any other type (numbers, dates). - return typeof(value) === "string"? value.toLowerCase() : value; -} - -function fld_set(dst, value) { - dst[this.field] = { v: value }; -} - -function fld_append(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: [value] }; - } else { - var base = dst[this.field]; - if (base.v.indexOf(value)===-1) base.v.push(value); - } -} - -function fld_prio(dst, value) { - if (dst[this.field] === undefined) { - dst[this.field] = { v: value, prio: this.prio}; - } else if(this.prio < dst[this.field].prio) { - dst[this.field].v = value; - dst[this.field].prio = this.prio; - } -} - -var valid_ecs_outcome = { - 'failure': true, - 'success': true, - 'unknown': true -}; - -function fld_ecs_outcome(dst, value) { - value = value.toLowerCase(); - if (valid_ecs_outcome[value] === undefined) { - value = 'unknown'; - } - if (dst[this.field] === undefined) { - dst[this.field] = { v: value }; - } else if (dst[this.field].v === 'unknown') { - dst[this.field] = { v: value }; - } -} - -function map_all(evt, targets, value) { - for (var i = 0; i < targets.length; i++) { - evt.Put(targets[i], value); - } -} - -function populate_fields(evt) { - var base = evt.Get(FIELDS_OBJECT); - if (base === null) return; - alternate_datetime(evt); - if (map_ecs) { - do_populate(evt, base, ecs_mappings); - } - if (map_rsa) { - do_populate(evt, base, rsa_mappings); - } - if (keep_raw) { - evt.Put("rsa.raw", base); - } - evt.Delete(FIELDS_OBJECT); -} - -var datetime_alt_components = [ - {field: "day", fmts: [[dF]]}, - {field: "year", fmts: [[dW]]}, - {field: "month", fmts: [[dB],[dG]]}, - {field: "date", fmts: [[dW,dSkip,dG,dSkip,dF],[dW,dSkip,dB,dSkip,dF],[dW,dSkip,dR,dSkip,dF]]}, - {field: "hour", fmts: [[dN]]}, - {field: "min", fmts: [[dU]]}, - {field: "secs", fmts: [[dO]]}, - {field: "time", fmts: [[dN, dSkip, dU, dSkip, dO]]}, -]; - -function alternate_datetime(evt) { - if (evt.Get(FIELDS_PREFIX + "event_time") != null) { - return; - } - var tzOffset = tz_offset; - if (tzOffset === "event") { - tzOffset = evt.Get("event.timezone"); - } - var container = new DateContainer(tzOffset); - for (var i=0; i} ZSCALERNSS: time=%{hfld2->} %{hmonth->} %{hday->} %{hhour}:%{hmin}:%{hsec->} %{hyear}^^timezone=%{timezone}^^%{payload}", processor_chain([ - setc("header_id","0001"), - setc("messageid","ZSCALERNSS_1"), -])); - -var select1 = linear_select([ - hdr1, -]); - -var part1 = match("MESSAGE#0:ZSCALERNSS_1", "nwparser.payload", "action=%{action}^^reason=%{result}^^hostname=%{hostname}^^protocol=%{protocol}^^serverip=%{daddr}^^url=%{url}^^urlcategory=%{filter}^^urlclass=%{info}^^dlpdictionaries=%{fld3}^^dlpengine=%{fld4}^^filetype=%{filetype}^^threatcategory=%{category}^^threatclass=%{vendor_event_cat}^^pagerisk=%{fld8}^^threatname=%{threat_name}^^clientpublicIP=%{fld9}^^ClientIP=%{saddr}^^location=%{fld11}^^refererURL=%{web_referer}^^useragent=%{user_agent}^^department=%{user_dept}^^user=%{username}^^event_id=%{id}^^clienttranstime=%{fld17}^^requestmethod=%{web_method}^^requestsize=%{sbytes}^^requestversion=%{fld20}^^status=%{resultcode}^^responsesize=%{rbytes}^^responseversion=%{fld23}^^transactionsize=%{bytes}", processor_chain([ - setc("eventcategory","1605000000"), - setf("fqdn","hostname"), - setf("msg","$MSG"), - date_time({ - dest: "event_time", - args: ["hmonth","hday","hyear","hhour","hmin","hsec"], - fmts: [ - [dB,dF,dW,dN,dU,dO], - ], - }), - lookup({ - dest: "nwparser.ec_activity", - map: map_getEventCategoryActivity, - key: field("action"), - }), - setc("ec_theme","Communication"), - setc("ec_subject","User"), -])); - -var msg1 = msg("ZSCALERNSS_1", part1); - -var chain1 = processor_chain([ - select1, - msgid_select({ - "ZSCALERNSS_1": msg1, - }), -]); diff --git a/x-pack/filebeat/module/zscaler/zia/ingest/pipeline.yml b/x-pack/filebeat/module/zscaler/zia/ingest/pipeline.yml deleted file mode 100644 index abf179e94b3..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/ingest/pipeline.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -description: Pipeline for Zscaler NSS - -processors: - # ECS event.ingested - - set: - field: event.ingested - value: '{{_ingest.timestamp}}' - # User agent - - user_agent: - field: user_agent.original - ignore_missing: - # URL - - uri_parts: - field: url.original - target_field: _temp_.url - ignore_failure: true - if: ctx?.url?.original != null - - script: - lang: painless - description: Updates the URL ECS fields from the results of the URI parts processor to not overwrite the RSA mappings - if: ctx?._temp_?.url != null - source: | - for (entry in ctx._temp_.url.entrySet()) { - if (entry != null && entry.getValue() != null) { - if(ctx.url[entry.getKey()] == null) { - ctx.url[entry.getKey()] = entry.getValue(); - } else if (!ctx.url[entry.getKey()].contains(entry.getValue())) { - ctx.url[entry.getKey()] = [ctx.url[entry.getKey()]]; - ctx.url[entry.getKey()].add(entry.getValue()); - } - } - } - - remove: - field: _temp_ - ignore_missing: true - # IP Geolocation Lookup - - geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - - geoip: - field: destination.ip - target_field: destination.geo - ignore_missing: true - - # IP Autonomous System (AS) Lookup - - geoip: - database_file: GeoLite2-ASN.mmdb - field: source.ip - target_field: source.as - properties: - - asn - - organization_name - ignore_missing: true - - geoip: - database_file: GeoLite2-ASN.mmdb - field: destination.ip - target_field: destination.as - properties: - - asn - - organization_name - ignore_missing: true - - rename: - field: source.as.asn - target_field: source.as.number - ignore_missing: true - - rename: - field: source.as.organization_name - target_field: source.as.organization.name - ignore_missing: true - - rename: - field: destination.as.asn - target_field: destination.as.number - ignore_missing: true - - rename: - field: destination.as.organization_name - target_field: destination.as.organization.name - ignore_missing: true - - append: - field: related.hosts - value: '{{host.name}}' - allow_duplicates: false - if: ctx.host?.name != null && ctx.host?.name != '' -on_failure: - - append: - field: error.message - value: "{{ _ingest.on_failure_message }}" diff --git a/x-pack/filebeat/module/zscaler/zia/manifest.yml b/x-pack/filebeat/module/zscaler/zia/manifest.yml deleted file mode 100644 index b7d00ea2957..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/manifest.yml +++ /dev/null @@ -1,31 +0,0 @@ -module_version: "1.0" - -var: - - name: paths - - name: tags - default: ["zscaler.zia", "forwarded"] - - name: syslog_host - default: localhost - - name: syslog_port - default: 9538 - - name: input - default: udp - - name: community_id - default: true - - name: tz_offset - default: local - - name: rsa_fields - default: true - - name: keep_raw_fields - default: false - - name: debug - default: false - -ingest_pipeline: ingest/pipeline.yml -input: config/input.yml - -requires.processors: -- name: geoip - plugin: ingest-geoip -- name: user_agent - plugin: ingest-user_agent diff --git a/x-pack/filebeat/module/zscaler/zia/test/generated.log b/x-pack/filebeat/module/zscaler/zia/test/generated.log deleted file mode 100644 index 328281d72ba..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/test/generated.log +++ /dev/null @@ -1,100 +0,0 @@ -iusm ZSCALERNSS: time=modtempo Jan 29 6:09:59 2016^^timezone=GMT+02:00^^action=Blocked^^reason=failure^^hostname=rci737.www5.example^^protocol=tcp^^serverip=10.206.191.17^^url=https://api.example.com/ivelitse/ritin.htm?utl=vol#amremap^^urlcategory=oremi^^urlclass=ntsunti^^dlpdictionaries=nseq^^dlpengine=itinvol^^filetype=psa^^threatcategory=umq^^threatclass=ntium^^pagerisk=psaq^^threatname=cer^^clientpublicIP=reveri^^ClientIP=10.176.10.114^^location=lupt^^refererURL=https://internal.example.org/sequa/abo.gif?umqui=reeufugi#mdolo^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=sperna^^user=sumdo^^event_id=litesse^^clienttranstime=orev^^requestmethod=pisciv^^requestsize=1884^^requestversion=deF^^status=sist^^responsesize=1803^^responseversion=doeiu^^transactionsize=3942 -olupt ZSCALERNSS: time=volup Feb 12 1:12:33 2016^^timezone=CT^^action=Allowed^^reason=failure^^hostname=eosquir5191.www.example^^protocol=rdp^^serverip=10.173.22.152^^url=https://internal.example.net/isiutal/moenimi.jpg?gnaali=enatus#mquia^^urlcategory=ameaqu^^urlclass=aqu^^dlpdictionaries=utper^^dlpengine=squame^^filetype=ntex^^threatcategory=eius^^threatclass=luptat^^pagerisk=emape^^threatname=aer^^clientpublicIP=lupt^^ClientIP=10.26.46.95^^location=uame^^refererURL=https://www.example.net/orisn/cca.htm?ofdeF=metcons#roinBCS^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=com^^user=eataevi^^event_id=byC^^clienttranstime=tinculp^^requestmethod=tur^^requestsize=2977^^requestversion=equat^^status=atemsequ^^responsesize=2004^^responseversion=minim^^transactionsize=7868 -amco ZSCALERNSS: time=exe Feb 26 8:15:08 2016^^timezone=CT^^action=Blocked^^reason=success^^hostname=orsitame3262.domain^^protocol=igmp^^serverip=10.204.86.149^^url=https://example.com/taspe/mvolu.gif?atcup=snos#iquaUte^^urlcategory=tconsec^^urlclass=nsequat^^dlpdictionaries=taev^^dlpengine=roidents^^filetype=oluptas^^threatcategory=llu^^threatclass=uptassi^^pagerisk=tamremap^^threatname=tur^^clientpublicIP=aperi^^ClientIP=10.254.146.57^^location=estqui^^refererURL=https://www5.example.net/emaper/ssitasp.html?enimad=rmagni#sit^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=onev^^user=tenima^^event_id=laboreet^^clienttranstime=aquaeabi^^requestmethod=giatq^^requestsize=2935^^requestversion=veleumi^^status=tia^^responsesize=1837^^responseversion=ude^^transactionsize=6905 -uian ZSCALERNSS: time=tempo Mar 12 3:17:42 2016^^timezone=PST^^action=Allowed^^reason=failure^^hostname=tempor4496.www.localdomain^^protocol=ipv6^^serverip=10.103.246.190^^url=https://api.example.org/doloreeu/pori.jpg?itati=mfu#uid^^urlcategory=atatnonp^^urlclass=uiano^^dlpdictionaries=mrema^^dlpengine=autfu^^filetype=natura^^threatcategory=aboris^^threatclass=ima^^pagerisk=tanimi^^threatname=nimadmin^^clientpublicIP=erep^^ClientIP=10.252.125.53^^location=ugiatqu^^refererURL=https://internal.example.net/Utenimad/nibusBon.html?emq=isiu#nimadmi^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ari^^user=equun^^event_id=suntinc^^clienttranstime=elits^^requestmethod=llam^^requestsize=3077^^requestversion=gelits^^status=tatevel^^responsesize=3856^^responseversion=uptatev^^transactionsize=4292 -dmi ZSCALERNSS: time=olab Mar 26 10:20:16 2016^^timezone=GMT-07:00^^action=Blocked^^reason=unknown^^hostname=ore2933.www.test^^protocol=ipv6-icmp^^serverip=10.61.78.108^^url=https://api.example.com/ele/tenbyCic.gif?porainc=amquisno#iinea^^urlcategory=ipit^^urlclass=idexea^^dlpdictionaries=riat^^dlpengine=luptatem^^filetype=umdolor^^threatcategory=osquir^^threatclass=inim^^pagerisk=ema^^threatname=roinBCSe^^clientpublicIP=onse^^ClientIP=10.136.153.149^^location=animi^^refererURL=https://www5.example.org/ofdeF/tion.htm?emqu=lit#iam^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ciati^^user=ercit^^event_id=umdolore^^clienttranstime=eniam^^requestmethod=reetdolo^^requestsize=2451^^requestversion=onse^^status=rumet^^responsesize=5772^^responseversion=tatno^^transactionsize=6787 -llam ZSCALERNSS: time=aspern Apr 9 5:22:51 2016^^timezone=GMT-07:00^^action=Allowed^^reason=success^^hostname=ollit4105.mail.localdomain^^protocol=ipv6-icmp^^serverip=10.183.16.166^^url=https://mail.example.org/sitas/ehenderi.jpg?atquovo=iumto#aboreetd^^urlcategory=sun^^urlclass=essecill^^dlpdictionaries=Duisau^^dlpengine=psum^^filetype=eriame^^threatcategory=lorema^^threatclass=avol^^pagerisk=labor^^threatname=atuse^^clientpublicIP=ddoeiu^^ClientIP=10.66.250.92^^location=onse^^refererURL=https://example.com/metcon/smo.jpg?upta=omn#ipsumq^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=ons^^user=tessec^^event_id=remipsum^^clienttranstime=liq^^requestmethod=ist^^requestsize=571^^requestversion=caecatc^^status=onsequat^^responsesize=2984^^responseversion=edquiano^^transactionsize=6061 -ema ZSCALERNSS: time=par Apr 24 12:25:25 2016^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=cup1793.local^^protocol=ipv6^^serverip=10.243.224.205^^url=https://mail.example.net/aborumSe/luptat.txt?antiumto=strude#ctetura^^urlcategory=usmod^^urlclass=edqui^^dlpdictionaries=mquidol^^dlpengine=ita^^filetype=ipi^^threatcategory=rsitamet^^threatclass=lupt^^pagerisk=xea^^threatname=qua^^clientpublicIP=luptatev^^ClientIP=10.123.104.59^^location=uisquam^^refererURL=https://api.example.com/loremq/lores.txt?iqui=etc#etM^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=eprehen^^user=xercitat^^event_id=lpa^^clienttranstime=entsu^^requestmethod=dun^^requestsize=941^^requestversion=aliq^^status=rsitam^^responsesize=2053^^responseversion=imaven^^transactionsize=152 -tema ZSCALERNSS: time=ritatis May 8 7:27:59 2016^^timezone=GMT+02:00^^action=Blocked^^reason=unknown^^hostname=icab4668.local^^protocol=udp^^serverip=10.119.185.63^^url=https://www5.example.net/ntutla/equa.jpg?civeli=errorsi#des^^urlcategory=rehe^^urlclass=ume^^dlpdictionaries=incidi^^dlpengine=picia^^filetype=mUtenima^^threatcategory=emaperi^^threatclass=tame^^pagerisk=tinvol^^threatname=tectobe^^clientpublicIP=colabor^^ClientIP=10.74.17.5^^location=untut^^refererURL=https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu^^useragent=Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80^^department=itecto^^user=erc^^event_id=amqu^^clienttranstime=uines^^requestmethod=nsec^^requestsize=6907^^requestversion=estqu^^status=inibusBo^^responsesize=6888^^responseversion=ostrume^^transactionsize=6051 -upt ZSCALERNSS: time=uiineavo May 22 2:30:33 2016^^timezone=CET^^action=Allowed^^reason=unknown^^hostname=aperia4409.www5.invalid^^protocol=rdp^^serverip=10.78.151.178^^url=https://api.example.net/atvol/umiur.txt?tati=utaliqu#oriosamn^^urlcategory=deFinibu^^urlclass=iadese^^dlpdictionaries=imidest^^dlpengine=emagnama^^filetype=eprehend^^threatcategory=hil^^threatclass=atquovo^^pagerisk=suntinc^^threatname=xeac^^clientpublicIP=nidolo^^ClientIP=10.25.192.202^^location=intoccae^^refererURL=https://www.example.net/pida/nse.html?emeumfu=CSed#lupt^^useragent=Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ecillu^^user=quip^^event_id=mporain^^clienttranstime=icons^^requestmethod=amvolup^^requestsize=7700^^requestversion=temveleu^^status=colabo^^responsesize=6354^^responseversion=orinrepr^^transactionsize=6578 -rumetM ZSCALERNSS: time=equi Jun 5 9:33:08 2016^^timezone=GMT+02:00^^action=Allowed^^reason=success^^hostname=sitvolup368.internal.host^^protocol=igmp^^serverip=10.71.170.37^^url=https://mail.example.net/equep/iavolu.gif?aqu=rpo#uipe^^urlcategory=inesci^^urlclass=serror^^dlpdictionaries=aliqu^^dlpengine=olupta^^filetype=mipsumd^^threatcategory=eFinib^^threatclass=ihilm^^pagerisk=atDu^^threatname=eav^^clientpublicIP=ionevo^^ClientIP=10.135.225.244^^location=orev^^refererURL=https://api.example.net/quirat/llu.jpg?isc=aturve#emulla^^useragent=Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=atiset^^user=atu^^event_id=umexerci^^clienttranstime=ern^^requestmethod=psaquae^^requestsize=7355^^requestversion=nsectet^^status=utla^^responsesize=5269^^responseversion=sci^^transactionsize=2526 -tlabori ZSCALERNSS: time=oin Jun 20 4:35:42 2016^^timezone=ET^^action=Allowed^^reason=success^^hostname=ite2026.www.invalid^^protocol=udp^^serverip=10.223.247.86^^url=https://example.org/bor/occa.htm?dol=leumiu#namali^^urlcategory=taevit^^urlclass=rinrepre^^dlpdictionaries=etconse^^dlpengine=tincu^^filetype=ari^^threatcategory=exercit^^threatclass=sci^^pagerisk=quamnih^^threatname=oluptate^^clientpublicIP=onseq^^ClientIP=10.19.145.131^^location=texp^^refererURL=https://internal.example.net/acc/amc.txt?amest=corp#modtemp^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=oluptas^^user=tNequepo^^event_id=lup^^clienttranstime=nula^^requestmethod=emseq^^requestsize=821^^requestversion=ento^^status=pic^^responsesize=752^^responseversion=eriamea^^transactionsize=7741 -rsita ZSCALERNSS: time=niamqui Jul 4 11:38:16 2016^^timezone=GMT-07:00^^action=Allowed^^reason=failure^^hostname=radipisc7020.home^^protocol=ipv6^^serverip=10.2.53.125^^url=https://internal.example.net/oru/temqu.htm?etMalor=ipi#reseos^^urlcategory=pariatu^^urlclass=tin^^dlpdictionaries=tenima^^dlpengine=tsedqu^^filetype=agnid^^threatcategory=proide^^threatclass=dolorem^^pagerisk=tlab^^threatname=volupt^^clientpublicIP=osqui^^ClientIP=10.181.80.139^^location=hitecto^^refererURL=https://www.example.net/liquide/etdol.jpg?uun=sequine#ectio^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=aboN^^user=ihilmo^^event_id=radi^^clienttranstime=gel^^requestmethod=lorsitam^^requestsize=6408^^requestversion=veniam^^status=ris^^responsesize=3314^^responseversion=ulapa^^transactionsize=7298 -quioffi ZSCALERNSS: time=uptate Jul 18 6:40:50 2016^^timezone=ET^^action=Allowed^^reason=unknown^^hostname=uamei2493.www.test^^protocol=tcp^^serverip=10.31.240.6^^url=https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn^^urlcategory=isnisiu^^urlclass=bore^^dlpdictionaries=tsu^^dlpengine=tcons^^filetype=sciun^^threatcategory=sBono^^threatclass=catc^^pagerisk=nsect^^threatname=idata^^clientpublicIP=rumwritt^^ClientIP=10.167.98.76^^location=dol^^refererURL=https://api.example.org/citation/tisetq.html?Utenimad=orpor#tlabo^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=gnido^^user=ratvolu^^event_id=olup^^clienttranstime=numqua^^requestmethod=veni^^requestsize=3140^^requestversion=abo^^status=veniamqu^^responsesize=2742^^responseversion=aliquide^^transactionsize=3073 -equat ZSCALERNSS: time=derit Aug 2 1:43:25 2016^^timezone=PT^^action=Allowed^^reason=success^^hostname=piscin6866.internal.host^^protocol=udp^^serverip=10.0.55.9^^url=https://www.example.org/eporr/xeacomm.html?aturQui=utlabor#rau^^urlcategory=idex^^urlclass=mfugiat^^dlpdictionaries=nisiuta^^dlpengine=tvolu^^filetype=ecte^^threatcategory=tinvolu^^threatclass=iurer^^pagerisk=iciadese^^threatname=quidolor^^clientpublicIP=tessec^^ClientIP=10.135.160.125^^location=mve^^refererURL=https://internal.example.com/uisau/eleum.htm?nre=ercitat#inim^^useragent=Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36^^department=Utenima^^user=volupta^^event_id=rcitati^^clienttranstime=eni^^requestmethod=ionevo^^requestsize=3616^^requestversion=Ute^^status=sperna^^responsesize=5368^^responseversion=mnisi^^transactionsize=509 -tDuisaut ZSCALERNSS: time=oinBC Aug 16 8:45:59 2016^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=spi3544.www.host^^protocol=ggp^^serverip=10.63.250.128^^url=https://internal.example.net/ptatemq/luptatev.html?Nequepo=ipsumd#ntocc^^urlcategory=uteirure^^urlclass=nevo^^dlpdictionaries=ide^^dlpengine=aali^^filetype=adip^^threatcategory=tium^^threatclass=nnum^^pagerisk=tenbyCi^^threatname=ate^^clientpublicIP=uiac^^ClientIP=10.111.187.12^^location=itam^^refererURL=https://www.example.org/santiumd/turadip.gif?niamqui=orem#sno^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=tev^^user=saute^^event_id=ntocca^^clienttranstime=ostru^^requestmethod=ntoccae^^requestsize=1705^^requestversion=rrorsi^^status=temquiav^^responsesize=6027^^responseversion=sec^^transactionsize=1927 -sBon ZSCALERNSS: time=orro Aug 30 3:48:33 2016^^timezone=PST^^action=Allowed^^reason=unknown^^hostname=tlab5981.www.host^^protocol=igmp^^serverip=10.5.126.127^^url=https://www5.example.com/tateve/itinvol.txt?tenatus=cipitlab#ipsumd^^urlcategory=antiu^^urlclass=uirati^^dlpdictionaries=oin^^dlpengine=exe^^filetype=imadmini^^threatcategory=sauteiru^^threatclass=mod^^pagerisk=hilm^^threatname=ataevi^^clientpublicIP=com^^ClientIP=10.252.124.150^^location=trud^^refererURL=https://mail.example.org/litessec/itas.htm?uidol=mporin#mwrit^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=roid^^user=inibusB^^event_id=eprehen^^clienttranstime=entor^^requestmethod=xeacomm^^requestsize=1940^^requestversion=utp^^status=ema^^responsesize=1394^^responseversion=itessequ^^transactionsize=7688 -ine ZSCALERNSS: time=lup Sep 13 10:51:07 2016^^timezone=CT^^action=Blocked^^reason=success^^hostname=upida508.example^^protocol=tcp^^serverip=10.201.171.120^^url=https://api.example.net/tquiin/tse.jpg?ovol=ptasn#taedicta^^urlcategory=itam^^urlclass=str^^dlpdictionaries=idolore^^dlpengine=pid^^filetype=illoin^^threatcategory=tanimid^^threatclass=umdo^^pagerisk=natuse^^threatname=gnamal^^clientpublicIP=metMalo^^ClientIP=10.91.126.231^^location=reprehen^^refererURL=https://example.net/psumquia/ven.html?siutali=amnih#ium^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=tau^^user=exercita^^event_id=ris^^clienttranstime=eumiu^^requestmethod=orumSe^^requestsize=728^^requestversion=isnost^^status=queips^^responsesize=248^^responseversion=itess^^transactionsize=52 -ofdeFini ZSCALERNSS: time=irat Sep 28 5:53:42 2016^^timezone=GMT+02:00^^action=Allowed^^reason=unknown^^hostname=oditem5255.api.localdomain^^protocol=tcp^^serverip=10.135.82.97^^url=https://mail.example.org/olor/ineavo.gif?mquelau=iadolor#amcol^^urlcategory=adeser^^urlclass=oin^^dlpdictionaries=mvenia^^dlpengine=madminim^^filetype=fugitsed^^threatcategory=quam^^threatclass=quid^^pagerisk=fugiat^^threatname=atisun^^clientpublicIP=esci^^ClientIP=10.107.251.87^^location=fugi^^refererURL=https://www.example.net/iduntu/idestlab.htm?avol=icero#xer^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=nturma^^user=str^^event_id=iat^^clienttranstime=etur^^requestmethod=itecto^^requestsize=1300^^requestversion=borios^^status=tut^^responsesize=2703^^responseversion=umqu^^transactionsize=301 -adipisc ZSCALERNSS: time=uscipitl Oct 12 12:56:16 2016^^timezone=PST^^action=Blocked^^reason=unknown^^hostname=uamei2389.internal.example^^protocol=ipv6-icmp^^serverip=10.31.198.58^^url=https://www.example.com/its/ender.gif?oles=edic#seq^^urlcategory=tutlab^^urlclass=sau^^dlpdictionaries=atevelit^^dlpengine=meius^^filetype=billo^^threatcategory=labo^^threatclass=oNemoeni^^pagerisk=ttenby^^threatname=boris^^clientpublicIP=stenatu^^ClientIP=10.215.205.216^^location=ratv^^refererURL=https://www.example.net/ianon/tsed.htm?ameiusm=proide#ano^^useragent=Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=boreetdo^^user=aturve^^event_id=ditemp^^clienttranstime=edqui^^requestmethod=nre^^requestsize=7231^^requestversion=sit^^status=olab^^responsesize=100^^responseversion=elitse^^transactionsize=6672 -quasia ZSCALERNSS: time=adi Oct 26 7:58:50 2016^^timezone=PST^^action=Allowed^^reason=failure^^hostname=eacommod1930.internal.lan^^protocol=igmp^^serverip=10.29.155.171^^url=https://www5.example.org/oeni/tdol.gif?llamco=nea#psum^^urlcategory=tasnulap^^urlclass=orsit^^dlpdictionaries=asiar^^dlpengine=ise^^filetype=itau^^threatcategory=apariat^^threatclass=vitaedi^^pagerisk=lorsita^^threatname=dolore^^clientpublicIP=uptate^^ClientIP=10.229.83.165^^location=ugiat^^refererURL=https://internal.example.com/ate/odoconse.jpg?quatu=veli#tenim^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=labo^^user=ulapar^^event_id=aboreetd^^clienttranstime=hilm^^requestmethod=llitanim^^requestsize=5047^^requestversion=pitl^^status=por^^responsesize=7205^^responseversion=ama^^transactionsize=332 -adminimv ZSCALERNSS: time=odi Nov 10 3:01:24 2016^^timezone=GMT-07:00^^action=Blocked^^reason=success^^hostname=tem6984.www5.domain^^protocol=ipv6^^serverip=10.129.192.145^^url=https://www.example.com/uasiar/utlab.htm?loremqu=dantium#lor^^urlcategory=velillu^^urlclass=cteturad^^dlpdictionaries=bor^^dlpengine=rauto^^filetype=ationev^^threatcategory=umdolor^^threatclass=uaUten^^pagerisk=nby^^threatname=mve^^clientpublicIP=osqui^^ClientIP=10.161.148.64^^location=ibusBon^^refererURL=https://example.com/rQu/mco.jpg?dun=reprehe#tincu^^useragent=Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36^^department=dex^^user=lor^^event_id=oraincid^^clienttranstime=intocc^^requestmethod=amcorp^^requestsize=1275^^requestversion=ssecillu^^status=liqua^^responsesize=6498^^responseversion=utodita^^transactionsize=4014 -fdeF ZSCALERNSS: time=iquidexe Nov 24 10:03:59 2016^^timezone=CEST^^action=Allowed^^reason=failure^^hostname=lapariat7287.internal.host^^protocol=ggp^^serverip=10.7.200.140^^url=https://api.example.org/icabo/gna.html?urerepr=eseru#quamest^^urlcategory=mac^^urlclass=qui^^dlpdictionaries=ritin^^dlpengine=temporin^^filetype=equatur^^threatcategory=adeseru^^threatclass=tdol^^pagerisk=upt^^threatname=mex^^clientpublicIP=tatem^^ClientIP=10.203.65.161^^location=eveli^^refererURL=https://internal.example.com/oremq/dicta.htm?imide=poriss#tvolup^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=siu^^user=snost^^event_id=tpersp^^clienttranstime=llamc^^requestmethod=nte^^requestsize=3571^^requestversion=utali^^status=porinc^^responsesize=6392^^responseversion=mvolu^^transactionsize=1664 -ipi ZSCALERNSS: time=imveniam Dec 8 5:06:33 2016^^timezone=GMT-07:00^^action=Blocked^^reason=unknown^^hostname=licabo1493.api.corp^^protocol=icmp^^serverip=10.86.22.67^^url=https://api.example.org/oremi/elites.html?iosa=boNemoe#onsequ^^urlcategory=equinesc^^urlclass=cab^^dlpdictionaries=atisund^^dlpengine=xea^^filetype=ites^^threatcategory=isetq^^threatclass=iutali^^pagerisk=velite^^threatname=teturad^^clientpublicIP=perspici^^ClientIP=10.218.98.29^^location=iconseq^^refererURL=https://www5.example.org/atisetqu/issuscip.jpg?dipisci=spernatu#admi^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=quunt^^user=olori^^event_id=mquae^^clienttranstime=eriti^^requestmethod=atcupi^^requestsize=2332^^requestversion=plica^^status=ore^^responsesize=7595^^responseversion=emqu^^transactionsize=2846 -acommod ZSCALERNSS: time=itsedd Dec 23 12:09:07 2016^^timezone=CT^^action=Allowed^^reason=success^^hostname=stenatu4844.www.invalid^^protocol=rdp^^serverip=10.39.31.115^^url=https://example.com/luptatem/uaeratv.gif?dat=periam#dqu^^urlcategory=pid^^urlclass=rExc^^dlpdictionaries=iusmo^^dlpengine=tame^^filetype=naaliq^^threatcategory=nte^^threatclass=ulpa^^pagerisk=sitam^^threatname=rad^^clientpublicIP=loi^^ClientIP=10.24.111.229^^location=volupt^^refererURL=https://example.net/idid/tesse.txt?boru=ptateve#enderi^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=toccaec^^user=fugi^^event_id=labo^^clienttranstime=nostrud^^requestmethod=gnaal^^requestsize=7224^^requestversion=proident^^status=maliquam^^responsesize=2147^^responseversion=atione^^transactionsize=5702 -ritati ZSCALERNSS: time=orisni Jan 6 7:11:41 2017^^timezone=PST^^action=Blocked^^reason=failure^^hostname=sitam5077.internal.host^^protocol=igmp^^serverip=10.179.210.218^^url=https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo^^urlcategory=oluptas^^urlclass=emvele^^dlpdictionaries=isnost^^dlpengine=olorem^^filetype=ido^^threatcategory=emqu^^threatclass=riss^^pagerisk=iquamqua^^threatname=sit^^clientpublicIP=rumSect^^ClientIP=10.32.39.220^^location=aliq^^refererURL=https://example.net/mven/olorsit.gif?oremag=illu#ruredo^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]^^department=tatevel^^user=boreetdo^^event_id=undeom^^clienttranstime=uamnihi^^requestmethod=risnis^^requestsize=1140^^requestversion=scingeli^^status=isn^^responsesize=4814^^responseversion=omm^^transactionsize=696 -quunt ZSCALERNSS: time=numquam Jan 20 2:14:16 2017^^timezone=CT^^action=Blocked^^reason=failure^^hostname=dquia107.www.test^^protocol=ipv6^^serverip=10.128.173.19^^url=https://api.example.com/ori/tconsect.html?ercit=eporroq#ulla^^urlcategory=iqu^^urlclass=oin^^dlpdictionaries=hil^^dlpengine=cingel^^filetype=modocon^^threatcategory=ipsu^^threatclass=ntNeq^^pagerisk=tate^^threatname=urExce^^clientpublicIP=asi^^ClientIP=10.88.172.34^^location=atv^^refererURL=https://example.org/liquaUte/alorum.txt?ria=atDu#nsec^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=maperi^^user=agnaaliq^^event_id=tlaboree^^clienttranstime=norumet^^requestmethod=dtempo^^requestsize=7680^^requestversion=col^^status=mve^^responsesize=3916^^responseversion=tinvolup^^transactionsize=2365 -inv ZSCALERNSS: time=rroq Feb 3 9:16:50 2017^^timezone=CT^^action=Allowed^^reason=unknown^^hostname=lloin4019.www.localhost^^protocol=igmp^^serverip=10.130.241.232^^url=https://api.example.org/rure/asiarchi.txt?loremeu=aturve#utfug^^urlcategory=aturQu^^urlclass=aaliq^^dlpdictionaries=mipsamvo^^dlpengine=eiusmod^^filetype=emoe^^threatcategory=uiinea^^threatclass=mnisiut^^pagerisk=avolu^^threatname=Except^^clientpublicIP=olup^^ClientIP=10.238.224.49^^location=asper^^refererURL=https://example.net/naal/equun.gif?mve=uia#iciad^^useragent=Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=mad^^user=onse^^event_id=redol^^clienttranstime=gnaa^^requestmethod=mod^^requestsize=5107^^requestversion=dtempori^^status=toditaut^^responsesize=7889^^responseversion=dexerc^^transactionsize=2302 -eprehend ZSCALERNSS: time=asnu Feb 18 4:19:24 2017^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=tamet6317.www.host^^protocol=igmp^^serverip=10.115.53.31^^url=https://example.com/emUte/molestia.htm?orroqu=elitsed#labore^^urlcategory=uela^^urlclass=ntexplic^^dlpdictionaries=uto^^dlpengine=iuntNequ^^filetype=esseq^^threatcategory=aincidun^^threatclass=quatD^^pagerisk=isqua^^threatname=uta^^clientpublicIP=emo^^ClientIP=10.2.67.127^^location=licaboN^^refererURL=https://mail.example.org/cupi/strude.htm?dunt=litsedq#nderiti^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=mdolore^^user=Cic^^event_id=olorema^^clienttranstime=mollita^^requestmethod=tatem^^requestsize=6156^^requestversion=aeab^^status=teur^^responsesize=609^^responseversion=inBC^^transactionsize=2622 -tur ZSCALERNSS: time=ictas Mar 4 11:21:59 2017^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=saquaea6344.www.invalid^^protocol=igmp^^serverip=10.204.214.251^^url=https://mail.example.net/repreh/plic.jpg?utlabo=tetur#tionula^^urlcategory=ritqu^^urlclass=ecatcupi^^dlpdictionaries=uamei^^dlpengine=undeomni^^filetype=tas^^threatcategory=autfugi^^threatclass=tasun^^pagerisk=duntutla^^threatname=ntium^^clientpublicIP=iration^^ClientIP=10.101.38.213^^location=orisni^^refererURL=https://example.org/modoc/boNem.gif?ssusci=animid#mpo^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=atuse^^user=ueipsa^^event_id=scipitl^^clienttranstime=eumi^^requestmethod=quasiarc^^requestsize=3487^^requestversion=leumiur^^status=tetura^^responsesize=5328^^responseversion=offici^^transactionsize=501 -roquisqu ZSCALERNSS: time=edolorin Mar 18 6:24:33 2017^^timezone=GMT+02:00^^action=Allowed^^reason=failure^^hostname=utaliqu4248.www.localhost^^protocol=igmp^^serverip=10.18.226.72^^url=https://api.example.com/tcu/iatqu.jpg?quovo=urExcep#ema^^urlcategory=suntex^^urlclass=iacons^^dlpdictionaries=occaec^^dlpengine=acommodi^^filetype=essecill^^threatcategory=billoi^^threatclass=moles^^pagerisk=dipiscin^^threatname=olup^^clientpublicIP=aco^^ClientIP=10.101.85.169^^location=natu^^refererURL=https://internal.example.net/enim/Finibus.htm?mporainc=xea#taed^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=billo^^user=rroqu^^event_id=dquiaco^^clienttranstime=nibus^^requestmethod=vitaed^^requestsize=2352^^requestversion=ptasnula^^status=oru^^responsesize=2118^^responseversion=upt^^transactionsize=7879 -eprehend ZSCALERNSS: time=rem Apr 2 1:27:07 2017^^timezone=GMT-07:00^^action=Allowed^^reason=unknown^^hostname=mdolore473.internal.test^^protocol=igmp^^serverip=10.87.100.240^^url=https://www5.example.com/apariatu/lorsita.gif?msequ=uat#lupta^^urlcategory=npr^^urlclass=etconsec^^dlpdictionaries=caboNem^^dlpengine=urExcept^^filetype=rumetMal^^threatcategory=oconse^^threatclass=mag^^pagerisk=tob^^threatname=dolores^^clientpublicIP=equamnih^^ClientIP=10.242.182.193^^location=itempo^^refererURL=https://mail.example.com/redol/ecillum.html?radipis=ctetu#orinrep^^useragent=Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=nder^^user=stenatus^^event_id=equep^^clienttranstime=ever^^requestmethod=tali^^requestsize=2124^^requestversion=erspi^^status=iqu^^responsesize=7509^^responseversion=incidid^^transactionsize=2617 -autemv ZSCALERNSS: time=emq Apr 16 8:29:41 2017^^timezone=GMT-07:00^^action=Blocked^^reason=failure^^hostname=tatio6513.www.invalid^^protocol=rdp^^serverip=10.229.242.223^^url=https://internal.example.net/ende/abor.jpg?riameaqu=ame#tesseq^^urlcategory=niam^^urlclass=pernat^^dlpdictionaries=rerepre^^dlpengine=nculpaq^^filetype=culpaqui^^threatcategory=tvolup^^threatclass=tdolore^^pagerisk=ventore^^threatname=red^^clientpublicIP=sinto^^ClientIP=10.80.57.247^^location=est^^refererURL=https://api.example.net/aev/inrepr.gif?iadese=nisiu#imad^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=ptatem^^user=itasp^^event_id=dexe^^clienttranstime=tat^^requestmethod=onproide^^requestsize=2737^^requestversion=cillumd^^status=riosa^^responsesize=204^^responseversion=aspernat^^transactionsize=2460 -caecat ZSCALERNSS: time=rautod Apr 30 3:32:16 2017^^timezone=PT^^action=Allowed^^reason=failure^^hostname=lapar1599.www.lan^^protocol=ipv6^^serverip=10.193.66.155^^url=https://example.com/ame/amvolu.txt?equaturv=lamc#mvolupta^^urlcategory=Utenima^^urlclass=iqua^^dlpdictionaries=luptat^^dlpengine=deriti^^filetype=sintocc^^threatcategory=cididu^^threatclass=uteir^^pagerisk=boree^^threatname=isn^^clientpublicIP=ulla^^ClientIP=10.106.77.138^^location=aconse^^refererURL=https://mail.example.net/tnonproi/squira.html?itation=veleum#piciatis^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=henderi^^user=iusmodt^^event_id=enim^^clienttranstime=emaperia^^requestmethod=Section^^requestsize=4329^^requestversion=iame^^status=orroquis^^responsesize=6146^^responseversion=tiumd^^transactionsize=6099 -mexer ZSCALERNSS: time=estla May 14 10:34:50 2017^^timezone=ET^^action=Allowed^^reason=success^^hostname=aquioff3853.www.localdomain^^protocol=udp^^serverip=10.236.230.136^^url=https://mail.example.org/uisnostr/reetdol.txt?ugi=niamquis#nisi^^urlcategory=emveleum^^urlclass=olup^^dlpdictionaries=nde^^dlpengine=abillo^^filetype=undeom^^threatcategory=emullamc^^threatclass=tec^^pagerisk=Nemo^^threatname=tutlabo^^clientpublicIP=mveleum^^ClientIP=10.54.159.1^^location=sBonorum^^refererURL=https://mail.example.net/quira/tassita.gif?oremi=ugitsedq#turmag^^useragent=Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=asnulapa^^user=mUteni^^event_id=quira^^clienttranstime=rror^^requestmethod=tatema^^requestsize=2446^^requestversion=loinve^^status=tatevel^^responsesize=3862^^responseversion=equu^^transactionsize=5373 -atae ZSCALERNSS: time=tetura May 29 5:37:24 2017^^timezone=OMST^^action=Allowed^^reason=success^^hostname=ura675.mail.localdomain^^protocol=ggp^^serverip=10.49.242.174^^url=https://api.example.com/radipis/cive.gif?orumSec=nisiuta#stiaecon^^urlcategory=dol^^urlclass=sumquiad^^dlpdictionaries=setquas^^dlpengine=minim^^filetype=oeni^^threatcategory=untutlab^^threatclass=tvolup^^pagerisk=consecte^^threatname=pteurs^^clientpublicIP=catcupi^^ClientIP=10.131.246.134^^location=tiaecon^^refererURL=https://api.example.com/amquisno/uido.gif?queporro=uid#snostrum^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=aconsequ^^user=umdolo^^event_id=rroqui^^clienttranstime=ursin^^requestmethod=utemvel^^requestsize=5325^^requestversion=atu^^status=iusm^^responsesize=4968^^responseversion=laudanti^^transactionsize=16 -rere ZSCALERNSS: time=cta Jun 12 12:39:58 2017^^timezone=CT^^action=Blocked^^reason=unknown^^hostname=iamea478.www5.host^^protocol=ipv6-icmp^^serverip=10.142.120.198^^url=https://mail.example.org/oin/itseddoe.html?citati=uamei#eursinto^^urlcategory=litesse^^urlclass=fugiatn^^dlpdictionaries=uaeabi^^dlpengine=aaliq^^filetype=nat^^threatcategory=uovolupt^^threatclass=ende^^pagerisk=orumSe^^threatname=dolor^^clientpublicIP=isiut^^ClientIP=10.166.10.42^^location=emulla^^refererURL=https://www.example.com/itae/dtempo.html?etMaloru=lmo#iquidex^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=uamqu^^user=olori^^event_id=ido^^clienttranstime=mcorpor^^requestmethod=doconse^^requestsize=2522^^requestversion=emUte^^status=iusmodi^^responsesize=1046^^responseversion=tura^^transactionsize=6695 -equat ZSCALERNSS: time=aliquid Jun 26 7:42:33 2017^^timezone=GMT+02:00^^action=Allowed^^reason=unknown^^hostname=eaque6543.api.domain^^protocol=udp^^serverip=10.138.188.201^^url=https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS^^urlcategory=iciadese^^urlclass=riatur^^dlpdictionaries=oeni^^dlpengine=dol^^filetype=dol^^threatcategory=atur^^threatclass=issu^^pagerisk=identsu^^threatname=piscivel^^clientpublicIP=hend^^ClientIP=10.128.184.241^^location=aer^^refererURL=https://api.example.net/umd/sciveli.htm?tur=acon#Nemoenim^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=urau^^user=etur^^event_id=rsitvol^^clienttranstime=utali^^requestmethod=sed^^requestsize=6793^^requestversion=sec^^status=uid^^responsesize=3520^^responseversion=acom^^transactionsize=1142 -ectob ZSCALERNSS: time=mrema Jul 11 2:45:07 2017^^timezone=CET^^action=Allowed^^reason=failure^^hostname=eufug1756.mail.corp^^protocol=ggp^^serverip=10.53.101.131^^url=https://example.net/snulap/enimadm.html?writte=sitvo#ine^^urlcategory=urerepre^^urlclass=asnulap^^dlpdictionaries=ipi^^dlpengine=idolorem^^filetype=exerci^^threatcategory=idata^^threatclass=ese^^pagerisk=mmodoco^^threatname=amni^^clientpublicIP=atnul^^ClientIP=10.213.57.165^^location=illumq^^refererURL=https://www5.example.org/ite/tasnul.txt?evitae=amvo#tnul^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ectetura^^user=isau^^event_id=itinvol^^clienttranstime=ten^^requestmethod=litanim^^requestsize=2135^^requestversion=orsitam^^status=modico^^responsesize=2990^^responseversion=itatio^^transactionsize=6735 -riame ZSCALERNSS: time=riat Jul 25 9:47:41 2017^^timezone=GMT+02:00^^action=Blocked^^reason=unknown^^hostname=orp5697.www.invalid^^protocol=ggp^^serverip=10.243.6.41^^url=https://internal.example.org/etcon/onsequu.gif?Bonoru=madminim#ents^^urlcategory=emacc^^urlclass=emp^^dlpdictionaries=lamcola^^dlpengine=veli^^filetype=venia^^threatcategory=risni^^threatclass=idolores^^pagerisk=paria^^threatname=mmod^^clientpublicIP=iti^^ClientIP=10.55.81.14^^location=lorsitam^^refererURL=https://api.example.org/onpr/litseddo.gif?oremqu=idex#radip^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=tenim^^user=eiusmo^^event_id=ainc^^clienttranstime=miurerep^^requestmethod=lestia^^requestsize=3606^^requestversion=iduntu^^status=pisci^^responsesize=3601^^responseversion=nostrud^^transactionsize=203 -ore ZSCALERNSS: time=esse Aug 8 4:50:15 2017^^timezone=PST^^action=Blocked^^reason=success^^hostname=pariatur7238.www5.invalid^^protocol=tcp^^serverip=10.33.144.10^^url=https://www.example.org/rur/itse.gif?pisciv=fugiatqu#seos^^urlcategory=exercita^^urlclass=edolori^^dlpdictionaries=eve^^dlpengine=tco^^filetype=tvol^^threatcategory=oluptate^^threatclass=lit^^pagerisk=santi^^threatname=ritati^^clientpublicIP=iciade^^ClientIP=10.202.224.79^^location=idolo^^refererURL=https://example.com/ptassita/caecatcu.txt?eturadip=olorsi#itseddo^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=seos^^user=rios^^event_id=labo^^clienttranstime=lpaquiof^^requestmethod=quu^^requestsize=2203^^requestversion=ntexpl^^status=abor^^responsesize=4241^^responseversion=enbyCi^^transactionsize=3813 -tat ZSCALERNSS: time=eufugia Aug 22 11:52:50 2017^^timezone=GMT-07:00^^action=Allowed^^reason=failure^^hostname=fficia2304.www5.home^^protocol=icmp^^serverip=10.158.18.51^^url=https://mail.example.com/qui/equeporr.jpg?itsedd=texpli#liquipex^^urlcategory=uisnos^^urlclass=quamqua^^dlpdictionaries=ntut^^dlpengine=mag^^filetype=meum^^threatcategory=mini^^threatclass=Loremip^^pagerisk=oreeu^^threatname=nvo^^clientpublicIP=iamqui^^ClientIP=10.20.124.138^^location=aqui^^refererURL=https://www.example.net/lpa/isn.htm?iat=ffic#siuta^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=aparia^^user=CSe^^event_id=exerci^^clienttranstime=inesciu^^requestmethod=quid^^requestsize=5452^^requestversion=emu^^status=orem^^responsesize=6317^^responseversion=ate^^transactionsize=4386 -tqu ZSCALERNSS: time=eirur Sep 6 6:55:24 2017^^timezone=CT^^action=Allowed^^reason=unknown^^hostname=mquisnos7453.home^^protocol=igmp^^serverip=10.134.128.27^^url=https://api.example.net/lup/iumtotam.html?ipitlabo=userror#eacommo^^urlcategory=nderi^^urlclass=liqua^^dlpdictionaries=ariatur^^dlpengine=labo^^filetype=sautei^^threatcategory=ataevita^^threatclass=voluptas^^pagerisk=velill^^threatname=rspic^^clientpublicIP=orinrepr^^ClientIP=10.118.177.136^^location=borumSec^^refererURL=https://www5.example.org/snisiut/siar.txt?inB=orp#ender^^useragent=Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=rumSecti^^user=Utenima^^event_id=olore^^clienttranstime=orumS^^requestmethod=olor^^requestsize=6908^^requestversion=eursint^^status=orio^^responsesize=1044^^responseversion=iameaqu^^transactionsize=2429 -olu ZSCALERNSS: time=iameaque Sep 20 1:57:58 2017^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=aquio748.www.localhost^^protocol=igmp^^serverip=10.68.8.143^^url=https://example.org/onproide/uamnih.htm?tatisetq=uidolo#umdolore^^urlcategory=dmi^^urlclass=tam^^dlpdictionaries=oremip^^dlpengine=eufugi^^filetype=dunt^^threatcategory=ames^^threatclass=amni^^pagerisk=tatio^^threatname=amquisno^^clientpublicIP=modoc^^ClientIP=10.125.120.97^^location=uid^^refererURL=https://internal.example.com/onev/orsi.txt?oreseo=reprehen#itamet^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=idolo^^user=reet^^event_id=lorem^^clienttranstime=texplic^^requestmethod=edutp^^requestsize=911^^requestversion=assi^^status=eserun^^responsesize=3034^^responseversion=eniamqu^^transactionsize=1185 -tatevel ZSCALERNSS: time=midestl Oct 4 9:00:32 2017^^timezone=PST^^action=Blocked^^reason=unknown^^hostname=remagnam796.mail.corp^^protocol=rdp^^serverip=10.143.0.78^^url=https://www5.example.org/obeataev/umf.htm?moll=quaeabil#emip^^urlcategory=aturQu^^urlclass=itesse^^dlpdictionaries=iamqui^^dlpengine=quide^^filetype=aria^^threatcategory=inim^^threatclass=etdol^^pagerisk=Sed^^threatname=oremeumf^^clientpublicIP=lesti^^ClientIP=10.137.164.122^^location=enima^^refererURL=https://www5.example.net/ico/giatquo.htm?evi=tionula#accus^^useragent=Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=amnihil^^user=orissus^^event_id=atems^^clienttranstime=nimaveni^^requestmethod=mwrit^^requestsize=2923^^requestversion=itse^^status=officiad^^responsesize=4982^^responseversion=nimadmin^^transactionsize=5577 -quiavolu ZSCALERNSS: time=upta Oct 19 4:03:07 2017^^timezone=OMST^^action=Blocked^^reason=failure^^hostname=etdolore4227.internal.corp^^protocol=icmp^^serverip=10.30.87.51^^url=https://mail.example.org/consequa/eaqueip.gif?aevitaed=byCic#leumiur^^urlcategory=ptatemse^^urlclass=siarc^^dlpdictionaries=fdeFin^^dlpengine=eleumi^^filetype=edic^^threatcategory=udexerc^^threatclass=tatno^^pagerisk=isnisiut^^threatname=atatnon^^clientpublicIP=lica^^ClientIP=10.156.177.53^^location=Nequ^^refererURL=https://www.example.com/epo/rsit.txt?onorumet=ptatema#eavolup^^useragent=Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36^^department=rmagnido^^user=psaquaea^^event_id=rchit^^clienttranstime=psumq^^requestmethod=ptatev^^requestsize=6552^^requestversion=xerc^^status=ctetura^^responsesize=7556^^responseversion=tDuis^^transactionsize=3281 -tat ZSCALERNSS: time=equ Nov 2 11:05:41 2017^^timezone=GMT+02:00^^action=Blocked^^reason=unknown^^hostname=rors1935.api.domain^^protocol=udp^^serverip=10.83.138.34^^url=https://example.org/tmo/onofdeF.txt?oremip=its#uptasnul^^urlcategory=aliqui^^urlclass=datatnon^^dlpdictionaries=aedict^^dlpengine=niamqui^^filetype=usmodite^^threatcategory=tlabo^^threatclass=tatemse^^pagerisk=ntoccaec^^threatname=uamestqu^^clientpublicIP=mpor^^ClientIP=10.111.249.184^^location=ptatemU^^refererURL=https://example.org/rumSe/tatnonp.jpg?tlabore=idunt#expl^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=onsectet^^user=dentsunt^^event_id=inea^^clienttranstime=animid^^requestmethod=upta^^requestsize=313^^requestversion=onnumqua^^status=quioff^^responsesize=470^^responseversion=upt^^transactionsize=6017 -nvol ZSCALERNSS: time=dtemp Nov 16 6:08:15 2017^^timezone=PT^^action=Allowed^^reason=unknown^^hostname=idexeac1655.internal.test^^protocol=ipv6^^serverip=10.141.195.13^^url=https://mail.example.com/orsitvol/ntor.htm?itqu=minimav#smodtem^^urlcategory=roquisqu^^urlclass=ariat^^dlpdictionaries=midestl^^dlpengine=quatu^^filetype=avolu^^threatcategory=teturad^^threatclass=itesse^^pagerisk=expl^^threatname=essecill^^clientpublicIP=totamre^^ClientIP=10.180.150.47^^location=orsitv^^refererURL=https://internal.example.net/uisaute/uun.jpg?olupt=nemulla#asp^^useragent=Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90^^department=ncul^^user=taliq^^event_id=tautfugi^^clienttranstime=fdeFinib^^requestmethod=uip^^requestsize=3940^^requestversion=sectetur^^status=edquian^^responsesize=7810^^responseversion=turQuis^^transactionsize=4046 -uames ZSCALERNSS: time=tconsec Dec 1 1:10:49 2017^^timezone=GMT-07:00^^action=Allowed^^reason=failure^^hostname=laboree3880.api.invalid^^protocol=rdp^^serverip=10.166.195.20^^url=https://internal.example.org/rumexe/xerci.gif?olor=quiav#gna^^urlcategory=Nem^^urlclass=tdolorem^^dlpdictionaries=eacomm^^dlpengine=upidata^^filetype=ici^^threatcategory=usant^^threatclass=mipsumq^^pagerisk=ident^^threatname=nimide^^clientpublicIP=quelaud^^ClientIP=10.255.40.12^^location=rro^^refererURL=https://api.example.com/nimv/emeu.htm?rem=tseddoei#teursint^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=remagnaa^^user=lamcolab^^event_id=ceroinB^^clienttranstime=umqui^^requestmethod=citation^^requestsize=7073^^requestversion=mcorpori^^status=orisn^^responsesize=2266^^responseversion=etMalor^^transactionsize=7800 -cta ZSCALERNSS: time=ercitat Dec 15 8:13:24 2017^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=tecto708.www5.example^^protocol=rdp^^serverip=10.22.122.43^^url=https://example.org/tvolu/dutper.html?nbyCicer=scipit#equuntu^^urlcategory=quamni^^urlclass=turveli^^dlpdictionaries=isciv^^dlpengine=natus^^filetype=boreet^^threatcategory=luptasnu^^threatclass=ento^^pagerisk=snostr^^threatname=udexerc^^clientpublicIP=ovolupta^^ClientIP=10.100.143.226^^location=ametcon^^refererURL=https://internal.example.net/ecillu/quovol.html?ctasu=irat#sitame^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=ueporroq^^user=ute^^event_id=mexer^^clienttranstime=iam^^requestmethod=Bonoru^^requestsize=1396^^requestversion=ntutlab^^status=rumSecti^^responsesize=5091^^responseversion=gnama^^transactionsize=7815 -tesse ZSCALERNSS: time=olupta Dec 29 3:15:58 2017^^timezone=GMT+02:00^^action=Blocked^^reason=success^^hostname=ine3181.www.invalid^^protocol=ipv6-icmp^^serverip=10.119.53.68^^url=https://www.example.com/uiavo/uisaut.htm?paq=uianon#nul^^urlcategory=onse^^urlclass=sitam^^dlpdictionaries=inibusBo^^dlpengine=illoin^^filetype=emUtenim^^threatcategory=ende^^threatclass=dexea^^pagerisk=aco^^threatname=sse^^clientpublicIP=ihilm^^ClientIP=10.121.9.5^^location=uptas^^refererURL=https://www5.example.net/ons/unt.txt?ctetur=mvolupta#squame^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=mea^^user=ssec^^event_id=illum^^clienttranstime=eprehe^^requestmethod=tinvolup^^requestsize=497^^requestversion=tvol^^status=ptat^^responsesize=7456^^responseversion=tdolo^^transactionsize=1882 -eleumi ZSCALERNSS: time=equ Jan 12 10:18:32 2018^^timezone=GMT-07:00^^action=Blocked^^reason=unknown^^hostname=tsunt3403.www5.test^^protocol=udp^^serverip=10.237.0.173^^url=https://mail.example.com/uasiarch/Malor.jpg?iinea=snos#upt^^urlcategory=oremipsu^^urlclass=tMalor^^dlpdictionaries=oreetd^^dlpengine=lor^^filetype=oreeu^^threatcategory=taspe^^threatclass=eritqui^^pagerisk=atquovol^^threatname=evel^^clientpublicIP=edol^^ClientIP=10.31.153.177^^location=maccus^^refererURL=https://www.example.com/totamrem/aliqu.htm?sBonorum=moenimi#lor^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=tiset^^user=sci^^event_id=periam^^clienttranstime=fugiatnu^^requestmethod=dolor^^requestsize=4350^^requestversion=eumfu^^status=docons^^responsesize=1428^^responseversion=eumf^^transactionsize=6826 -uasi ZSCALERNSS: time=maveniam Jan 27 5:21:06 2018^^timezone=PST^^action=Allowed^^reason=success^^hostname=pitl6126.www.localdomain^^protocol=ipv6-icmp^^serverip=10.243.182.229^^url=https://api.example.org/ntiumt/sumquia.jpg?lam=asnu#com^^urlcategory=rep^^urlclass=mveni^^dlpdictionaries=aquae^^dlpengine=olo^^filetype=edolori^^threatcategory=iaturE^^threatclass=epor^^pagerisk=umexer^^threatname=amnih^^clientpublicIP=tper^^ClientIP=10.229.102.140^^location=nulamc^^refererURL=https://www.example.org/etcon/ctobeat.txt?eddoei=lorumw#eca^^useragent=mobmail android 2.1.3.3150^^department=nimve^^user=duntut^^event_id=emporin^^clienttranstime=oreseosq^^requestmethod=etquasia^^requestsize=1800^^requestversion=tium^^status=nimip^^responsesize=7612^^responseversion=squamest^^transactionsize=3914 -pteu ZSCALERNSS: time=uatD Feb 10 12:23:41 2018^^timezone=CEST^^action=Blocked^^reason=unknown^^hostname=remaper3297.internal.test^^protocol=ipv6-icmp^^serverip=10.39.46.155^^url=https://example.com/itsedqu/paq.jpg?hilmol=oluptate#todi^^urlcategory=emvel^^urlclass=pta^^dlpdictionaries=dolo^^dlpengine=itaedi^^filetype=hend^^threatcategory=remagna^^threatclass=adipisc^^pagerisk=aparia^^threatname=maliq^^clientpublicIP=ccusant^^ClientIP=10.120.138.109^^location=oidentsu^^refererURL=https://internal.example.org/onsec/dit.gif?lup=aeca#isau^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=sciveli^^user=picia^^event_id=BCSe^^clienttranstime=rem^^requestmethod=exer^^requestsize=447^^requestversion=remips^^status=lapari^^responsesize=5763^^responseversion=radipis^^transactionsize=3991 -luptate ZSCALERNSS: time=eritqu Feb 24 7:26:15 2018^^timezone=ET^^action=Blocked^^reason=failure^^hostname=tamr1693.api.home^^protocol=ipv6^^serverip=10.53.191.49^^url=https://api.example.org/remeum/etur.html?Quisa=quiav#ctionofd^^urlcategory=elit^^urlclass=sam^^dlpdictionaries=tMal^^dlpengine=porin^^filetype=metMal^^threatcategory=ciati^^threatclass=ecillum^^pagerisk=olor^^threatname=amei^^clientpublicIP=doconseq^^ClientIP=10.133.102.57^^location=CSed^^refererURL=https://example.net/wri/itame.html?dictasun=psa#lorese^^useragent=Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36^^department=ctobeat^^user=onsec^^event_id=idestl^^clienttranstime=litani^^requestmethod=emp^^requestsize=6397^^requestversion=onoru^^status=data^^responsesize=6740^^responseversion=eosqui^^transactionsize=5993 -uam ZSCALERNSS: time=quis Mar 11 2:28:49 2018^^timezone=PST^^action=Allowed^^reason=failure^^hostname=cia5990.api.localdomain^^protocol=icmp^^serverip=10.91.2.225^^url=https://internal.example.org/ree/itten.gif?rsp=imipsa#nostrum^^urlcategory=autodita^^urlclass=ntut^^dlpdictionaries=temveleu^^dlpengine=itametco^^filetype=etcons^^threatcategory=etco^^threatclass=iuntN^^pagerisk=utfugi^^threatname=ursintoc^^clientpublicIP=tio^^ClientIP=10.89.41.97^^location=trudex^^refererURL=https://www.example.net/lup/mipsamv.htm?qua=ionula#pexeaco^^useragent=Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36^^department=nderi^^user=tem^^event_id=tcu^^clienttranstime=eumiu^^requestmethod=nim^^requestsize=141^^requestversion=rehen^^status=uaeab^^responsesize=5521^^responseversion=serro^^transactionsize=1078 -eturadip ZSCALERNSS: time=amquaera Mar 25 9:31:24 2018^^timezone=PT^^action=Allowed^^reason=success^^hostname=riatu2467.lan^^protocol=tcp^^serverip=10.221.20.165^^url=https://www.example.net/ritquiin/reseo.jpg?ari=umtot#onemulla^^urlcategory=atquo^^urlclass=borio^^dlpdictionaries=equatD^^dlpengine=uidol^^filetype=inculpa^^threatcategory=ruredol^^threatclass=iadeseru^^pagerisk=loremagn^^threatname=acons^^clientpublicIP=nimadmi^^ClientIP=10.7.18.226^^location=umiurer^^refererURL=https://internal.example.com/oluptass/uidol.txt?ametcon=ofdeFini#tasnu^^useragent=Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=tionev^^user=uasiarch^^event_id=velites^^clienttranstime=uredolor^^requestmethod=epreh^^requestsize=5810^^requestversion=edquiaco^^status=sequatD^^responsesize=4211^^responseversion=naaliq^^transactionsize=4508 -asiarc ZSCALERNSS: time=lor Apr 8 4:33:58 2018^^timezone=GMT+02:00^^action=Allowed^^reason=unknown^^hostname=pici1525.www5.corp^^protocol=ipv6^^serverip=10.178.148.188^^url=https://mail.example.com/dexe/nemul.jpg?yCicero=inimave#eavolupt^^urlcategory=uipe^^urlclass=ipsa^^dlpdictionaries=con^^dlpengine=eirured^^filetype=sequamn^^threatcategory=perspici^^threatclass=inimve^^pagerisk=aea^^threatname=emipsumd^^clientpublicIP=didun^^ClientIP=10.155.252.123^^location=asiarch^^refererURL=https://www5.example.net/utla/deomni.gif?fugi=nse#nesciu^^useragent=Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80^^department=ssequ^^user=inrepreh^^event_id=rit^^clienttranstime=velitess^^requestmethod=niam^^requestsize=6665^^requestversion=vel^^status=ionevo^^responsesize=4580^^responseversion=ptate^^transactionsize=52 -umfu ZSCALERNSS: time=utla Apr 22 11:36:32 2018^^timezone=CET^^action=Blocked^^reason=failure^^hostname=dolo6418.internal.host^^protocol=ipv6-icmp^^serverip=10.190.42.245^^url=https://mail.example.org/caecat/uel.html?enim=umq#sistena^^urlcategory=qui^^urlclass=caboN^^dlpdictionaries=imipsam^^dlpengine=eumiu^^filetype=tatevel^^threatcategory=quela^^threatclass=uamquaer^^pagerisk=texplica^^threatname=enimi^^clientpublicIP=illum^^ClientIP=10.220.1.249^^location=iqu^^refererURL=https://api.example.org/eumfugia/reeufugi.gif?uredol=uptat#toditau^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=quuntur^^user=olup^^event_id=aeab^^clienttranstime=uradipis^^requestmethod=aerat^^requestsize=2910^^requestversion=uira^^status=eosqui^^responsesize=3723^^responseversion=quinesc^^transactionsize=4724 -aliqu ZSCALERNSS: time=sequine May 7 6:39:06 2018^^timezone=GMT-07:00^^action=Allowed^^reason=unknown^^hostname=imveni193.www5.host^^protocol=udp^^serverip=10.112.190.154^^url=https://mail.example.com/runtmoll/busBon.txt?ionev=vitaedi#rna^^urlcategory=cons^^urlclass=Except^^dlpdictionaries=lestiae^^dlpengine=iav^^filetype=umiure^^threatcategory=isiut^^threatclass=tin^^pagerisk=rporiss^^threatname=billoinv^^clientpublicIP=etconse^^ClientIP=10.55.38.153^^location=quido^^refererURL=https://example.org/uames/tla.gif?rch=psa#nreprehe^^useragent=Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g^^department=tvolup^^user=oremeu^^event_id=lab^^clienttranstime=lla^^requestmethod=urau^^requestsize=6127^^requestversion=upt^^status=equamni^^responsesize=363^^responseversion=eroi^^transactionsize=916 -mdo ZSCALERNSS: time=labore May 21 1:41:41 2018^^timezone=OMST^^action=Allowed^^reason=success^^hostname=ionu3320.api.localhost^^protocol=igmp^^serverip=10.195.153.42^^url=https://api.example.com/lits/tvolu.jpg?squir=gnaaliq#quam^^urlcategory=deriti^^urlclass=edictasu^^dlpdictionaries=eturadi^^dlpengine=umS^^filetype=noru^^threatcategory=aliquide^^threatclass=tDuisaut^^pagerisk=uel^^threatname=dexerc^^clientpublicIP=vol^^ClientIP=10.250.48.82^^location=iqu^^refererURL=https://api.example.com/quuntur/nihi.gif?oremagna=aqu#utemvele^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=serrorsi^^user=tsedquia^^event_id=rsit^^clienttranstime=quis^^requestmethod=upidatat^^requestsize=2982^^requestversion=nihilmo^^status=reetdo^^responsesize=6578^^responseversion=nidol^^transactionsize=4345 -hite ZSCALERNSS: time=umfugi Jun 4 8:44:15 2018^^timezone=CT^^action=Blocked^^reason=unknown^^hostname=remips1499.www.local^^protocol=ipv6^^serverip=10.252.164.230^^url=https://mail.example.net/loremi/queporro.jpg?ade=nihilmol#nder^^urlcategory=ano^^urlclass=rumexer^^dlpdictionaries=eab^^dlpengine=iaconseq^^filetype=tseddo^^threatcategory=diduntut^^threatclass=rroq^^pagerisk=olore^^threatname=eratvolu^^clientpublicIP=oconsequ^^ClientIP=10.60.52.219^^location=untNeq^^refererURL=https://internal.example.org/scipit/litess.jpg?ide=quunturm#quovo^^useragent=mobmail android 2.1.3.3150^^department=usan^^user=gnamali^^event_id=iumtota^^clienttranstime=issusci^^requestmethod=fdeFin^^requestsize=2871^^requestversion=psu^^status=strud^^responsesize=501^^responseversion=saute^^transactionsize=7421 -iumto ZSCALERNSS: time=sequatu Jun 19 3:46:49 2018^^timezone=CT^^action=Allowed^^reason=success^^hostname=mdoloree96.domain^^protocol=ggp^^serverip=10.187.16.73^^url=https://api.example.com/nge/psum.gif?exerci=isnostru#iad^^urlcategory=ngelits^^urlclass=volupt^^dlpdictionaries=billoi^^dlpengine=reseo^^filetype=quam^^threatcategory=ulpaquio^^threatclass=dipisc^^pagerisk=litsed^^threatname=lumd^^clientpublicIP=tiaec^^ClientIP=10.122.102.156^^location=totamr^^refererURL=https://mail.example.org/aper/entor.txt?lumdol=edutper#utemve^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=metMa^^user=emoen^^event_id=ptate^^clienttranstime=mipsumqu^^requestmethod=turad^^requestsize=1704^^requestversion=billo^^status=doloremi^^responsesize=3365^^responseversion=iciatis^^transactionsize=2052 -cul ZSCALERNSS: time=tate Jul 3 10:49:23 2018^^timezone=CEST^^action=Allowed^^reason=failure^^hostname=iatnulap7662.internal.local^^protocol=igmp^^serverip=10.120.215.174^^url=https://internal.example.org/ddoeiusm/apa.txt?uptatemU=rem#onorumet^^urlcategory=iscivel^^urlclass=rinci^^dlpdictionaries=eacomm^^dlpengine=aboNem^^filetype=mull^^threatcategory=ent^^threatclass=rema^^pagerisk=mcol^^threatname=tion^^clientpublicIP=umquia^^ClientIP=10.248.108.55^^location=itation^^refererURL=https://internal.example.org/tat/uredo.html?essequam=imav#mtot^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=tionemu^^user=prehend^^event_id=ntexplic^^clienttranstime=rvelillu^^requestmethod=uatDu^^requestsize=4620^^requestversion=isu^^status=moll^^responsesize=2104^^responseversion=ota^^transactionsize=4562 -eniamq ZSCALERNSS: time=aloru Jul 17 5:51:58 2018^^timezone=PT^^action=Allowed^^reason=success^^hostname=sBonoru1929.example^^protocol=ggp^^serverip=10.51.161.245^^url=https://www5.example.net/yCice/uinesci.htm?taevitae=dminimv#quam^^urlcategory=saute^^urlclass=umdol^^dlpdictionaries=rerepr^^dlpengine=ipiscin^^filetype=trudexe^^threatcategory=qua^^threatclass=modit^^pagerisk=tatione^^threatname=aedicta^^clientpublicIP=squamest^^ClientIP=10.15.254.181^^location=emipsum^^refererURL=https://example.com/eFini/atDuisa.jpg?mips=dolo#reeufu^^useragent=Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61^^department=adipis^^user=abo^^event_id=suntex^^clienttranstime=uptatema^^requestmethod=uteiru^^requestsize=4600^^requestversion=Cicero^^status=ven^^responsesize=5410^^responseversion=ficia^^transactionsize=7526 -deFinibu ZSCALERNSS: time=iaecons Aug 1 12:54:32 2018^^timezone=ET^^action=Blocked^^reason=success^^hostname=onorumet4871.lan^^protocol=ipv6^^serverip=10.7.152.238^^url=https://api.example.com/itinvolu/adeserun.txt?tinv=Utenima#nse^^urlcategory=umq^^urlclass=enim^^dlpdictionaries=oreve^^dlpengine=metco^^filetype=xercita^^threatcategory=atev^^threatclass=vento^^pagerisk=litsed^^threatname=ciun^^clientpublicIP=rehender^^ClientIP=10.129.66.196^^location=mmodicon^^refererURL=https://api.example.com/tqu/emips.gif?tinvolu=ptat#amquisn^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=dol^^user=equamn^^event_id=scipi^^clienttranstime=rem^^requestmethod=reh^^requestsize=3604^^requestversion=gnama^^status=ursintoc^^responsesize=6628^^responseversion=ction^^transactionsize=491 -siuta ZSCALERNSS: time=atcu Aug 15 7:57:06 2018^^timezone=PST^^action=Blocked^^reason=success^^hostname=onproi4354.www5.invalid^^protocol=ggp^^serverip=10.29.162.157^^url=https://www.example.org/sci/isquames.gif?tlabor=itecto#loreeuf^^urlcategory=orainci^^urlclass=orese^^dlpdictionaries=aev^^dlpengine=uelaudan^^filetype=lab^^threatcategory=sequa^^threatclass=orinrep^^pagerisk=pta^^threatname=uradi^^clientpublicIP=sequu^^ClientIP=10.185.107.27^^location=susc^^refererURL=https://www.example.org/eatae/siutali.html?quelauda=rcit#dolo^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=orese^^user=evelite^^event_id=remquela^^clienttranstime=toreve^^requestmethod=squirat^^requestsize=2977^^requestversion=equunt^^status=mto^^responsesize=4116^^responseversion=atio^^transactionsize=6258 -rem ZSCALERNSS: time=consecte Aug 29 2:59:40 2018^^timezone=ET^^action=Blocked^^reason=success^^hostname=beataevi7552.api.test^^protocol=ipv6^^serverip=10.215.63.248^^url=https://mail.example.org/umdolo/nimv.htm?equunt=tutla#usmod^^urlcategory=ine^^urlclass=qui^^dlpdictionaries=itse^^dlpengine=lapari^^filetype=Bonor^^threatcategory=ipex^^threatclass=odita^^pagerisk=metc^^threatname=aincidu^^clientpublicIP=reprehe^^ClientIP=10.138.0.214^^location=uisaut^^refererURL=https://internal.example.org/ommodic/mmodic.txt?esse=nihi#xeaco^^useragent=Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61^^department=uianonn^^user=eavolupt^^event_id=dantium^^clienttranstime=ors^^requestmethod=dqu^^requestsize=6682^^requestversion=edi^^status=eumiure^^responsesize=1926^^responseversion=eacomm^^transactionsize=2676 -pre ZSCALERNSS: time=aute Sep 12 10:02:15 2018^^timezone=PST^^action=Allowed^^reason=success^^hostname=rvelill1981.www.invalid^^protocol=udp^^serverip=10.26.115.88^^url=https://mail.example.net/tvol/ostru.htm?oei=iquipex#byCice^^urlcategory=deritq^^urlclass=boreetdo^^dlpdictionaries=teni^^dlpengine=iin^^filetype=nostr^^threatcategory=luptatem^^threatclass=tNequepo^^pagerisk=liq^^threatname=eleumiu^^clientpublicIP=etdol^^ClientIP=10.12.130.224^^location=magnido^^refererURL=https://www.example.org/dolor/ing.jpg?umdo=aer#quela^^useragent=Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=itatis^^user=Nequepo^^event_id=edictas^^clienttranstime=emac^^requestmethod=rmagnido^^requestsize=6135^^requestversion=elitsedd^^status=hitecto^^responsesize=6315^^responseversion=repreh^^transactionsize=1238 -usan ZSCALERNSS: time=ugiatn Sep 27 5:04:49 2018^^timezone=GMT+02:00^^action=Blocked^^reason=failure^^hostname=quia7214.example^^protocol=igmp^^serverip=10.193.152.42^^url=https://mail.example.org/pariatur/cita.html?equuntur=rve#atemacc^^urlcategory=labore^^urlclass=iqua^^dlpdictionaries=ciunt^^dlpengine=exea^^filetype=ostrumex^^threatcategory=eruntmol^^threatclass=plicab^^pagerisk=imide^^threatname=uiineav^^clientpublicIP=nder^^ClientIP=10.91.20.27^^location=asia^^refererURL=https://api.example.com/psamvolu/teturad.jpg?iavol=psumdol#urautodi^^useragent=Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36^^department=modtempo^^user=edict^^event_id=nost^^clienttranstime=orisnis^^requestmethod=umq^^requestsize=2801^^requestversion=quatur^^status=isiutali^^responsesize=1508^^responseversion=emquel^^transactionsize=365 -iavol ZSCALERNSS: time=utemvel Oct 11 12:07:23 2018^^timezone=PST^^action=Allowed^^reason=failure^^hostname=aturExc7343.invalid^^protocol=ipv6^^serverip=10.146.69.38^^url=https://example.org/aturE/aaliqu.gif?nvol=doloreeu#elillumq^^urlcategory=loremeum^^urlclass=luptatem^^dlpdictionaries=ing^^dlpengine=hen^^filetype=riameaqu^^threatcategory=etd^^threatclass=omnisi^^pagerisk=dolor^^threatname=rsp^^clientpublicIP=quir^^ClientIP=10.55.192.102^^location=tsuntinc^^refererURL=https://example.org/onproid/ciduntut.html?xer=iat#orain^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=uame^^user=quia^^event_id=Exce^^clienttranstime=nim^^requestmethod=userro^^requestsize=1008^^requestversion=uta^^status=tsun^^responsesize=7120^^responseversion=gni^^transactionsize=5280 -tione ZSCALERNSS: time=nibus Oct 25 7:09:57 2018^^timezone=GMT-07:00^^action=Allowed^^reason=success^^hostname=olo7317.www5.localhost^^protocol=udp^^serverip=10.249.1.143^^url=https://internal.example.org/olorin/orisnisi.gif?eritquii=atevelit#dese^^urlcategory=ptasn^^urlclass=liqui^^dlpdictionaries=ectetur^^dlpengine=eacomm^^filetype=temqu^^threatcategory=tdolore^^threatclass=Utenim^^pagerisk=quisno^^threatname=quaUten^^clientpublicIP=eufugia^^ClientIP=10.124.177.226^^location=iarc^^refererURL=https://www5.example.org/ncidunt/uiac.jpg?luptat=ehend#involupt^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=tincul^^user=isciveli^^event_id=ntutlab^^clienttranstime=sitamet^^requestmethod=onevo^^requestsize=3736^^requestversion=nsequ^^status=ing^^responsesize=3291^^responseversion=vitaed^^transactionsize=7672 -modit ZSCALERNSS: time=quamnih Nov 9 2:12:32 2018^^timezone=OMST^^action=Blocked^^reason=failure^^hostname=uiin1342.mail.invalid^^protocol=rdp^^serverip=10.167.176.220^^url=https://example.org/vel/preh.html?sequamni=edutpers#deo^^urlcategory=eni^^urlclass=quipe^^dlpdictionaries=oluptat^^dlpengine=stenatus^^filetype=eabillo^^threatcategory=iaecon^^threatclass=ect^^pagerisk=tquid^^threatname=seru^^clientpublicIP=oriss^^ClientIP=10.146.228.249^^location=psumdolo^^refererURL=https://example.net/bor/magnido.html?emagnaal=nih#ncididu^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=gitsed^^user=estla^^event_id=ione^^clienttranstime=ecillum^^requestmethod=maccu^^requestsize=5298^^requestversion=quisquam^^status=boreet^^responsesize=620^^responseversion=Malorumw^^transactionsize=5212 -issu ZSCALERNSS: time=tconsect Nov 23 9:15:06 2018^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=agna5654.www.corp^^protocol=tcp^^serverip=10.200.74.101^^url=https://example.com/nonproi/dolor.jpg?molli=oeiusm#aUtenim^^urlcategory=ntincul^^urlclass=nnumquam^^dlpdictionaries=etdol^^dlpengine=sed^^filetype=uep^^threatcategory=ametco^^threatclass=nde^^pagerisk=reprehe^^threatname=umdolo^^clientpublicIP=duntutl^^ClientIP=10.203.47.23^^location=empor^^refererURL=https://mail.example.net/teveli/utperspi.html?luptate=aturvel#ostrumex^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10^^department=sedquia^^user=litesse^^event_id=ntmo^^clienttranstime=aliqu^^requestmethod=iqu^^requestsize=4429^^requestversion=ationula^^status=doconse^^responsesize=4822^^responseversion=oreeufug^^transactionsize=5020 -tenima ZSCALERNSS: time=emagnam Dec 7 4:17:40 2018^^timezone=CT^^action=Blocked^^reason=success^^hostname=ites5711.internal.host^^protocol=ggp^^serverip=10.162.78.48^^url=https://example.com/sedqui/iuntNe.gif?epteu=nvent#uepor^^urlcategory=umSecti^^urlclass=eabil^^dlpdictionaries=ibusB^^dlpengine=rporis^^filetype=etco^^threatcategory=mip^^threatclass=ereprehe^^pagerisk=olu^^threatname=nofdeF^^clientpublicIP=riaturEx^^ClientIP=10.24.23.209^^location=itautfu^^refererURL=https://internal.example.org/ole/odi.txt?mporain=ectetur#adipisc^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=iumd^^user=ntore^^event_id=tect^^clienttranstime=ion^^requestmethod=tutl^^requestsize=3811^^requestversion=bor^^status=ameaquei^^responsesize=4147^^responseversion=uelaud^^transactionsize=1306 -ngelit ZSCALERNSS: time=quiano Dec 21 11:20:14 2018^^timezone=GMT+02:00^^action=Allowed^^reason=success^^hostname=oluptat2848.api.home^^protocol=igmp^^serverip=10.55.151.53^^url=https://www5.example.net/lits/Nemoen.txt?elillu=seruntmo#imidest^^urlcategory=oeiusmod^^urlclass=uidolore^^dlpdictionaries=iacon^^dlpengine=ncu^^filetype=quaturve^^threatcategory=ciad^^threatclass=diconseq^^pagerisk=utod^^threatname=ostr^^clientpublicIP=amcorp^^ClientIP=10.211.66.68^^location=uptatem^^refererURL=https://mail.example.org/nproide/mali.htm?siutali=mfugi#ceroinBC^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=maveni^^user=squir^^event_id=commod^^clienttranstime=umqu^^requestmethod=umet^^requestsize=5891^^requestversion=amestqu^^status=aliqua^^responsesize=1782^^responseversion=teirure^^transactionsize=1210 -dipisciv ZSCALERNSS: time=nsequun Jan 5 6:22:49 2019^^timezone=ET^^action=Blocked^^reason=unknown^^hostname=ngelitse7535.internal.lan^^protocol=rdp^^serverip=10.110.16.169^^url=https://example.org/eius/evo.jpg?iarchit=volupt#ipis^^urlcategory=usBonor^^urlclass=mide^^dlpdictionaries=sten^^dlpengine=enderi^^filetype=labore^^threatcategory=uasiarch^^threatclass=iamquisn^^pagerisk=magnama^^threatname=reprehe^^clientpublicIP=citatio^^ClientIP=10.209.203.156^^location=esciunt^^refererURL=https://www.example.com/liquide/BCSedut.htm?litani=temse#samvo^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=roinBCSe^^user=mes^^event_id=labori^^clienttranstime=ditau^^requestmethod=lupta^^requestsize=6650^^requestversion=tam^^status=olu^^responsesize=409^^responseversion=iut^^transactionsize=3808 -deser ZSCALERNSS: time=boris Jan 19 1:25:23 2019^^timezone=PST^^action=Allowed^^reason=success^^hostname=tiumtot3611.internal.localdomain^^protocol=udp^^serverip=10.84.9.150^^url=https://www5.example.net/equun/veli.gif?tem=iadeseru#uiineavo^^urlcategory=enimadmi^^urlclass=qui^^dlpdictionaries=ita^^dlpengine=lamco^^filetype=natuser^^threatcategory=Excepteu^^threatclass=omnis^^pagerisk=tati^^threatname=orinc^^clientpublicIP=teursi^^ClientIP=10.107.68.114^^location=nofdeFin^^refererURL=https://internal.example.org/ollit/umfug.htm?lumquid=Sectio#tiumdol^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ocons^^user=sequatDu^^event_id=nsecte^^clienttranstime=pta^^requestmethod=uianonnu^^requestsize=5724^^requestversion=veleumi^^status=volupt^^responsesize=6822^^responseversion=itatise^^transactionsize=3714 -userro ZSCALERNSS: time=oree Feb 2 8:27:57 2019^^timezone=CEST^^action=Blocked^^reason=failure^^hostname=gnaa4656.api.example^^protocol=igmp^^serverip=10.26.222.144^^url=https://internal.example.com/ecatcu/tMalo.txt?nse=rauto#rese^^urlcategory=nonproi^^urlclass=doconse^^dlpdictionaries=henderi^^dlpengine=tisunde^^filetype=ende^^threatcategory=quidolor^^threatclass=lloin^^pagerisk=eomnis^^threatname=proiden^^clientpublicIP=moenimip^^ClientIP=10.124.119.48^^location=atquo^^refererURL=https://www.example.com/ern/ationula.jpg?nsequun=ateveli#aqua^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10^^department=amn^^user=nre^^event_id=sintoc^^clienttranstime=rinci^^requestmethod=ici^^requestsize=7328^^requestversion=Nequepor^^status=aUten^^responsesize=4127^^responseversion=tatnon^^transactionsize=977 -mnisis ZSCALERNSS: time=onsequa Feb 17 3:30:32 2019^^timezone=GMT+02:00^^action=Allowed^^reason=failure^^hostname=psaqu6066.www5.localhost^^protocol=ipv6-icmp^^serverip=10.164.190.2^^url=https://mail.example.org/ntutlabo/leumiure.htm?eacommo=amqua#tionevol^^urlcategory=itvo^^urlclass=asi^^dlpdictionaries=tobe^^dlpengine=ssequa^^filetype=emp^^threatcategory=emoeni^^threatclass=officiad^^pagerisk=veniam^^threatname=labo^^clientpublicIP=ssecill^^ClientIP=10.223.11.164^^location=tate^^refererURL=https://internal.example.net/ali/ionu.txt?cte=ariatu#ess^^useragent=Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=risnisiu^^user=ten^^event_id=datatno^^clienttranstime=equepor^^requestmethod=antium^^requestsize=5241^^requestversion=texp^^status=mvolup^^responsesize=4382^^responseversion=ema^^transactionsize=6673 -nsec ZSCALERNSS: time=iaeco Mar 3 10:33:06 2019^^timezone=OMST^^action=Blocked^^reason=failure^^hostname=iavol5202.api.example^^protocol=udp^^serverip=10.14.37.8^^url=https://www.example.org/ugitsed/ritatis.jpg?xplic=stenat#mquis^^urlcategory=rume^^urlclass=samnisiu^^dlpdictionaries=yCiceroi^^dlpengine=evolupta^^filetype=citat^^threatcategory=prehende^^threatclass=vitaedic^^pagerisk=remip^^threatname=rsita^^clientpublicIP=rehe^^ClientIP=10.121.181.243^^location=midest^^refererURL=https://example.org/olupta/modi.txt?rnatur=tseddo#utaliq^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=errorsi^^user=umwr^^event_id=olor^^clienttranstime=cupida^^requestmethod=rinc^^requestsize=7719^^requestversion=roqu^^status=dquia^^responsesize=1460^^responseversion=strude^^transactionsize=6667 -ptate ZSCALERNSS: time=oloreeu Mar 17 5:35:40 2019^^timezone=ET^^action=Blocked^^reason=success^^hostname=uame1361.api.local^^protocol=udp^^serverip=10.90.20.202^^url=https://mail.example.com/aute/dictasu.gif?ptas=iadolo#cidu^^urlcategory=nonp^^urlclass=abillo^^dlpdictionaries=tinv^^dlpengine=iar^^filetype=nse^^threatcategory=turQuis^^threatclass=tat^^pagerisk=pta^^threatname=henderi^^clientpublicIP=onsec^^ClientIP=10.10.93.133^^location=tau^^refererURL=https://www.example.net/urad/upt.gif?sitamet=xerc#mcolabor^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=quipe^^user=evita^^event_id=ostrude^^clienttranstime=itsed^^requestmethod=nia^^requestsize=7548^^requestversion=rehe^^status=eseosqu^^responsesize=3488^^responseversion=sundeo^^transactionsize=3076 -laud ZSCALERNSS: time=uido Apr 1 12:38:14 2019^^timezone=ET^^action=Allowed^^reason=success^^hostname=rsitame4049.internal.corp^^protocol=tcp^^serverip=10.34.98.144^^url=https://mail.example.net/enbyCic/aturau.gif?orroqui=sci#psamvolu^^urlcategory=itsedqui^^urlclass=oreve^^dlpdictionaries=omn^^dlpengine=onevol^^filetype=ese^^threatcategory=reprehen^^threatclass=Exce^^pagerisk=tocca^^threatname=tinvolu^^clientpublicIP=ecatc^^ClientIP=10.77.102.206^^location=quin^^refererURL=https://api.example.com/sedqui/ueporroq.htm?eetdol=tia#lup^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=inBCSed^^user=tectobe^^event_id=pariatu^^clienttranstime=uiacons^^requestmethod=ulapa^^requestsize=4143^^requestversion=henderit^^status=ident^^responsesize=4610^^responseversion=mquae^^transactionsize=1789 -lit ZSCALERNSS: time=uiine Apr 15 7:40:49 2019^^timezone=ET^^action=Blocked^^reason=unknown^^hostname=elit912.www5.test^^protocol=udp^^serverip=10.176.233.249^^url=https://example.org/olu/mqua.txt?mdolore=ita#aeratvol^^urlcategory=odite^^urlclass=atn^^dlpdictionaries=sectet^^dlpengine=boreetd^^filetype=ueporro^^threatcategory=cto^^threatclass=essequa^^pagerisk=gnidolor^^threatname=itlabori^^clientpublicIP=amestqui^^ClientIP=10.75.144.118^^location=qua^^refererURL=https://api.example.com/pteurs/intocc.gif?veni=turmag#dutper^^useragent=Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=aconseq^^user=isnos^^event_id=ntin^^clienttranstime=tenatus^^requestmethod=odic^^requestsize=3588^^requestversion=intocca^^status=equuntu^^responsesize=3976^^responseversion=ine^^transactionsize=3409 -rcit ZSCALERNSS: time=secte Apr 29 2:43:23 2019^^timezone=GMT-07:00^^action=Allowed^^reason=unknown^^hostname=tat6671.www.local^^protocol=udp^^serverip=10.149.6.107^^url=https://api.example.net/mnisiut/eabil.jpg?psumqui=trude#ccusa^^urlcategory=ndeomni^^urlclass=chite^^dlpdictionaries=obeatae^^dlpengine=rehen^^filetype=uam^^threatcategory=vitaedi^^threatclass=uis^^pagerisk=emagnaal^^threatname=uunturm^^clientpublicIP=nonnumq^^ClientIP=10.236.55.236^^location=aerat^^refererURL=https://www.example.org/eata/maliquam.jpg?gnamali=olabor#ionem^^useragent=Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=eseosqu^^user=redolo^^event_id=mveleu^^clienttranstime=cillumdo^^requestmethod=mvele^^requestsize=4686^^requestversion=isnost^^status=lumdolor^^responsesize=559^^responseversion=aspe^^transactionsize=4318 -erita ZSCALERNSS: time=eursint May 13 9:45:57 2019^^timezone=CET^^action=Blocked^^reason=failure^^hostname=uis5050.www.local^^protocol=igmp^^serverip=10.97.202.149^^url=https://api.example.net/uamestq/eetdol.html?ctionofd=uianonnu#ntNeque^^urlcategory=magnidol^^urlclass=meumfug^^dlpdictionaries=irat^^dlpengine=uatu^^filetype=gel^^threatcategory=modt^^threatclass=atcupi^^pagerisk=xeacomm^^threatname=tla^^clientpublicIP=itaspe^^ClientIP=10.13.125.101^^location=uisautei^^refererURL=https://mail.example.net/ihilmol/scinge.jpg?str=yCiceroi#loremeu^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=velitess^^user=colab^^event_id=itte^^clienttranstime=niamquis^^requestmethod=uaUten^^requestsize=7772^^requestversion=exeacomm^^status=uptat^^responsesize=982^^responseversion=ore^^transactionsize=7330 -poriss ZSCALERNSS: time=enatus May 28 4:48:31 2019^^timezone=GMT+02:00^^action=Blocked^^reason=failure^^hostname=ficiad1312.api.host^^protocol=igmp^^serverip=10.141.66.163^^url=https://mail.example.net/ius/msequ.jpg?ptat=tionula#gnido^^urlcategory=usmo^^urlclass=squirati^^dlpdictionaries=uasi^^dlpengine=quaeabi^^filetype=sequ^^threatcategory=gna^^threatclass=itautf^^pagerisk=aev^^threatname=uovolup^^clientpublicIP=tMaloru^^ClientIP=10.230.61.102^^location=rautod^^refererURL=https://example.net/minimav/uovo.html?orinrep=tNequ#eca^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=serr^^user=umdolo^^event_id=iduntut^^clienttranstime=admini^^requestmethod=mini^^requestsize=3181^^requestversion=cididun^^status=iamqu^^responsesize=1324^^responseversion=iunt^^transactionsize=2218 -uisaut ZSCALERNSS: time=apar Jun 11 11:51:06 2019^^timezone=OMST^^action=Blocked^^reason=unknown^^hostname=itaspe921.mail.invalid^^protocol=tcp^^serverip=10.10.25.145^^url=https://www.example.org/iat/acom.html?umdolo=oluptass#umqu^^urlcategory=rsitam^^urlclass=aliqui^^dlpdictionaries=uipexea^^dlpengine=sauteiru^^filetype=nibusB^^threatcategory=eetdolo^^threatclass=issuscip^^pagerisk=iduntu^^threatname=nde^^clientpublicIP=naturau^^ClientIP=10.224.249.228^^location=odit^^refererURL=https://www5.example.net/lapa/enia.jpg?deserun=ugia#isiuta^^useragent=Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ugiatq^^user=mnisiuta^^event_id=nrepre^^clienttranstime=eumfu^^requestmethod=remap^^requestsize=1954^^requestversion=yCicero^^status=dqui^^responsesize=6666^^responseversion=oin^^transactionsize=3838 -eiusm ZSCALERNSS: time=assit Jun 25 6:53:40 2019^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=archite4407.mail.invalid^^protocol=ipv6-icmp^^serverip=10.234.34.40^^url=https://www.example.com/onorum/umiure.gif?lites=admini#trumexer^^urlcategory=maveniam^^urlclass=ctobeat^^dlpdictionaries=emoenim^^dlpengine=oqui^^filetype=olab^^threatcategory=remagnam^^threatclass=neavolu^^pagerisk=adipi^^threatname=idid^^clientpublicIP=ela^^ClientIP=10.247.255.107^^location=lore^^refererURL=https://www5.example.org/olorsi/everitat.htm?iamq=ercitat#velillu^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=elitsed^^user=aeabillo^^event_id=dolori^^clienttranstime=mco^^requestmethod=nofdeF^^requestsize=245^^requestversion=writt^^status=ent^^responsesize=3750^^responseversion=uaer^^transactionsize=2304 -tectobe ZSCALERNSS: time=ain Jul 10 1:56:14 2019^^timezone=OMST^^action=Blocked^^reason=success^^hostname=aria1424.mail.home^^protocol=igmp^^serverip=10.124.81.20^^url=https://mail.example.org/veni/rspi.htm?ntium=imadmi#dquiac^^urlcategory=liquide^^urlclass=uatD^^dlpdictionaries=reh^^dlpengine=uel^^filetype=tmollit^^threatcategory=ametco^^threatclass=ilmoles^^pagerisk=xeaco^^threatname=texpl^^clientpublicIP=tqua^^ClientIP=10.250.102.42^^location=totamr^^refererURL=https://internal.example.com/iciat/uira.htm?cti=orsitvo#elit^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=tenby^^user=tNequ^^event_id=piciatis^^clienttranstime=ritten^^requestmethod=tatisetq^^requestsize=2753^^requestversion=madmi^^status=icia^^responsesize=412^^responseversion=eroi^^transactionsize=2077 -riatur ZSCALERNSS: time=amrema Jul 24 8:58:48 2019^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=Bonoru7444.www5.example^^protocol=rdp^^serverip=10.166.205.159^^url=https://www.example.com/tem/litsedq.htm?ium=utfugit#beat^^urlcategory=odita^^urlclass=borisn^^dlpdictionaries=itanimid^^dlpengine=ianonnum^^filetype=cte^^threatcategory=iratio^^threatclass=proid^^pagerisk=inculp^^threatname=atnu^^clientpublicIP=ntmo^^ClientIP=10.154.188.132^^location=atevelit^^refererURL=https://internal.example.com/iconsequ/adipisci.txt?gnido=iamq#Utenim^^useragent=Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10^^department=uisa^^user=uptat^^event_id=siutal^^clienttranstime=umetMalo^^requestmethod=onevolu^^requestsize=4181^^requestversion=sedquian^^status=involu^^responsesize=5294^^responseversion=nsequatD^^transactionsize=7089 -liquid ZSCALERNSS: time=uamq Aug 7 4:01:23 2019^^timezone=CEST^^action=Allowed^^reason=success^^hostname=icero1297.internal.domain^^protocol=ipv6-icmp^^serverip=10.46.71.46^^url=https://www.example.com/amcola/eumiurer.gif?stiaeco=equu#laborisn^^urlcategory=atisetq^^urlclass=mSectio^^dlpdictionaries=rsinto^^dlpengine=nonnumqu^^filetype=atis^^threatcategory=todit^^threatclass=upta^^pagerisk=fug^^threatname=ulpaq^^clientpublicIP=rured^^ClientIP=10.138.193.38^^location=udex^^refererURL=https://api.example.com/uin/isci.htm?nsectetu=spici#untutl^^useragent=Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10^^department=tate^^user=sintocca^^event_id=ugiat^^clienttranstime=asuntex^^requestmethod=uovolup^^requestsize=745^^requestversion=amali^^status=uiav^^responsesize=274^^responseversion=mullamco^^transactionsize=7843 -ons ZSCALERNSS: time=radip Aug 21 11:03:57 2019^^timezone=CT^^action=Blocked^^reason=unknown^^hostname=oloremeu5047.www5.invalid^^protocol=tcp^^serverip=10.254.119.31^^url=https://api.example.net/sedquian/lamcorpo.html?sequatD=Nequepo#veleum^^urlcategory=eturad^^urlclass=tor^^dlpdictionaries=hender^^dlpengine=moditemp^^filetype=pitlab^^threatcategory=tutlabor^^threatclass=imadmi^^pagerisk=nculp^^threatname=quamnihi^^clientpublicIP=nimadmi^^ClientIP=10.172.159.251^^location=nima^^refererURL=https://mail.example.org/tur/tlaboru.htm?tutlabo=incid#der^^useragent=Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90^^department=tconsect^^user=usm^^event_id=uunturma^^clienttranstime=namaliqu^^requestmethod=tatemacc^^requestsize=2324^^requestversion=nor^^status=saut^^responsesize=2804^^responseversion=stiaeco^^transactionsize=1508 -osam ZSCALERNSS: time=ncid Sep 5 6:06:31 2019^^timezone=PT^^action=Allowed^^reason=unknown^^hostname=edutpe1255.internal.lan^^protocol=ipv6-icmp^^serverip=10.195.62.230^^url=https://www5.example.com/ictasun/iumto.txt?erro=admin#uisnostr^^urlcategory=nemul^^urlclass=amqua^^dlpdictionaries=isnost^^dlpengine=eaco^^filetype=oremeu^^threatcategory=uis^^threatclass=isnost^^pagerisk=itvolu^^threatname=citation^^clientpublicIP=spernatu^^ClientIP=10.98.126.206^^location=tion^^refererURL=https://internal.example.org/uidolore/uatDuisa.htm?uipe=alo#ufugia^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]^^department=atatnonp^^user=ptassit^^event_id=sequat^^clienttranstime=Uteni^^requestmethod=oriosa^^requestsize=7244^^requestversion=temporai^^status=totamrem^^responsesize=4957^^responseversion=dminimve^^transactionsize=1182 -idolo ZSCALERNSS: time=citat Sep 19 1:09:05 2019^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=nderit1171.www5.domain^^protocol=rdp^^serverip=10.144.93.186^^url=https://www5.example.org/oriosa/ssusc.htm?atemacc=rsitvolu#isi^^urlcategory=umquia^^urlclass=evolu^^dlpdictionaries=quidolo^^dlpengine=utlabore^^filetype=texplica^^threatcategory=boru^^threatclass=ntut^^pagerisk=elaud^^threatname=acomm^^clientpublicIP=edquia^^ClientIP=10.84.140.5^^location=laboris^^refererURL=https://www.example.org/lpaquiof/isisten.txt?culp=Ciceroin#aeco^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=mull^^user=eroi^^event_id=adminim^^clienttranstime=naturau^^requestmethod=nima^^requestsize=4943^^requestversion=sed^^status=mUten^^responsesize=6658^^responseversion=tfugitse^^transactionsize=6480 -uianon ZSCALERNSS: time=iutal Oct 3 8:11:40 2019^^timezone=ET^^action=Allowed^^reason=success^^hostname=nos4114.api.lan^^protocol=rdp^^serverip=10.31.58.6^^url=https://mail.example.net/tseddoei/byCi.gif?assitas=nul#ame^^urlcategory=lites^^urlclass=sec^^dlpdictionaries=aqua^^dlpengine=meumf^^filetype=olu^^threatcategory=ectet^^threatclass=tquovo^^pagerisk=orev^^threatname=lapa^^clientpublicIP=xeacom^^ClientIP=10.198.84.190^^location=henderi^^refererURL=https://mail.example.com/dminim/sse.gif?equ=turvelil#lor^^useragent=Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80^^department=ern^^user=unt^^event_id=volu^^clienttranstime=iineavo^^requestmethod=qua^^requestsize=6831^^requestversion=tenbyC^^status=xeacomm^^responsesize=6855^^responseversion=psu^^transactionsize=5856 -ept ZSCALERNSS: time=nem Oct 18 3:14:14 2019^^timezone=ET^^action=Allowed^^reason=unknown^^hostname=oremeum4231.internal.host^^protocol=ipv6^^serverip=10.139.90.218^^url=https://www5.example.org/liquipe/rehe.gif?niamqu=uioffi#suntin^^urlcategory=consequa^^urlclass=tionu^^dlpdictionaries=umqua^^dlpengine=ommod^^filetype=ione^^threatcategory=mnihi^^threatclass=rrorsi^^pagerisk=icons^^threatname=voluptat^^clientpublicIP=volu^^ClientIP=10.131.81.172^^location=llamcor^^refererURL=https://mail.example.com/veri/run.txt?enimadm=empo#apa^^useragent=Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30^^department=icons^^user=hende^^event_id=umdol^^clienttranstime=Sedutper^^requestmethod=exe^^requestsize=6188^^requestversion=preh^^status=dol^^responsesize=3128^^responseversion=gnamal^^transactionsize=6119 -utodit ZSCALERNSS: time=cer Nov 1 10:16:48 2019^^timezone=PST^^action=Blocked^^reason=unknown^^hostname=ueip6097.api.host^^protocol=tcp^^serverip=10.128.43.71^^url=https://www.example.org/erit/asiarch.gif?tdolor=oremagna#siuta^^urlcategory=amnihil^^urlclass=nderit^^dlpdictionaries=ficia^^dlpengine=tru^^filetype=tionu^^threatcategory=natuser^^threatclass=olupt^^pagerisk=eprehe^^threatname=eetd^^clientpublicIP=tiumdo^^ClientIP=10.152.217.174^^location=litse^^refererURL=https://internal.example.com/nde/tNequepo.txt?end=ineavolu#ptate^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=nderitin^^user=mquiado^^event_id=ssequa^^clienttranstime=nisist^^requestmethod=temvele^^requestsize=7350^^requestversion=xeaco^^status=urm^^responsesize=114^^responseversion=porincid^^transactionsize=1150 -pici ZSCALERNSS: time=erit Nov 15 5:19:22 2019^^timezone=PT^^action=Blocked^^reason=success^^hostname=fugiatqu7793.www.localdomain^^protocol=ipv6-icmp^^serverip=10.26.149.221^^url=https://mail.example.org/maven/tectob.jpg?litsedd=mnis#ainci^^urlcategory=aturve^^urlclass=tiumdol^^dlpdictionaries=mporain^^dlpengine=secte^^filetype=dut^^threatcategory=aecons^^threatclass=tionemu^^pagerisk=edictasu^^threatname=quipexea^^clientpublicIP=orsit^^ClientIP=10.217.193.148^^location=tametco^^refererURL=https://api.example.com/lit/laborio.gif?mfug=acommod#mid^^useragent=Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36^^department=oloremag^^user=uisa^^event_id=umquidol^^clienttranstime=isiutali^^requestmethod=rehe^^requestsize=3382^^requestversion=adminima^^status=ipex^^responsesize=1046^^responseversion=sitvolup^^transactionsize=387 -agnamali ZSCALERNSS: time=ali Nov 30 12:21:57 2019^^timezone=CET^^action=Blocked^^reason=unknown^^hostname=onsequ3168.www.corp^^protocol=icmp^^serverip=10.109.192.53^^url=https://www.example.com/siarch/oloremi.htm?one=iduntutl#tNe^^urlcategory=scive^^urlclass=tcupi^^dlpdictionaries=essequam^^dlpengine=destla^^filetype=oluptat^^threatcategory=ita^^threatclass=temUte^^pagerisk=idest^^threatname=ostru^^clientpublicIP=ptassit^^ClientIP=10.172.17.6^^location=samvolup^^refererURL=https://www5.example.org/taspe/empori.txt?emporain=ovo#aeabillo^^useragent=Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90^^department=boriosa^^user=eprehen^^event_id=rehen^^clienttranstime=sitasp^^requestmethod=tassit^^requestsize=212^^requestversion=teir^^status=suntin^^responsesize=4053^^responseversion=upta^^transactionsize=1487 -onevol ZSCALERNSS: time=llamco Dec 14 7:24:31 2019^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=oremquel3120.internal.localhost^^protocol=ggp^^serverip=10.119.106.108^^url=https://mail.example.com/ostr/liqu.txt?niam=mullamc#umtota^^urlcategory=ssecil^^urlclass=xplic^^dlpdictionaries=isn^^dlpengine=quepor^^filetype=Lor^^threatcategory=ten^^threatclass=exeacomm^^pagerisk=cusan^^threatname=oquisq^^clientpublicIP=olli^^ClientIP=10.135.38.213^^location=tiset^^refererURL=https://mail.example.net/erspici/xercitat.jpg?Exce=uae#tut^^useragent=Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61^^department=ser^^user=ore^^event_id=iatisund^^clienttranstime=ritquii^^requestmethod=volup^^requestsize=1902^^requestversion=orsi^^status=ull^^responsesize=391^^responseversion=dolorsi^^transactionsize=7745 diff --git a/x-pack/filebeat/module/zscaler/zia/test/generated.log-expected.json b/x-pack/filebeat/module/zscaler/zia/test/generated.log-expected.json deleted file mode 100644 index 687938ddcea..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/test/generated.log-expected.json +++ /dev/null @@ -1,7776 +0,0 @@ -[ - { - "@timestamp": "2016-01-29T08:09:59.000Z", - "destination.bytes": 1803, - "destination.ip": "10.206.191.17", - "event.action": "Blocked", - "event.code": "litesse", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "iusm ZSCALERNSS: time=modtempo Jan 29 6:09:59 2016^^timezone=GMT+02:00^^action=Blocked^^reason=failure^^hostname=rci737.www5.example^^protocol=tcp^^serverip=10.206.191.17^^url=https://api.example.com/ivelitse/ritin.htm?utl=vol#amremap^^urlcategory=oremi^^urlclass=ntsunti^^dlpdictionaries=nseq^^dlpengine=itinvol^^filetype=psa^^threatcategory=umq^^threatclass=ntium^^pagerisk=psaq^^threatname=cer^^clientpublicIP=reveri^^ClientIP=10.176.10.114^^location=lupt^^refererURL=https://internal.example.org/sequa/abo.gif?umqui=reeufugi#mdolo^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=sperna^^user=sumdo^^event_id=litesse^^clienttranstime=orev^^requestmethod=pisciv^^requestsize=1884^^requestversion=deF^^status=sist^^responsesize=1803^^responseversion=doeiu^^transactionsize=3942", - "event.timezone": "GMT+02:00", - "file.type": "psa", - "fileset.name": "zia", - "host.name": "rci737.www5.example", - "http.request.referrer": "https://internal.example.org/sequa/abo.gif?umqui=reeufugi#mdolo", - "input.type": "log", - "log.offset": 0, - "network.bytes": 3942, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "rci737.www5.example" - ], - "related.ip": [ - "10.176.10.114", - "10.206.191.17" - ], - "related.user": [ - "sumdo" - ], - "rsa.db.index": "ntsunti", - "rsa.identity.user_dept": "sperna", - "rsa.internal.data": "iusm", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ntium", - "rsa.misc.action": [ - "Blocked", - "pisciv" - ], - "rsa.misc.category": "umq", - "rsa.misc.filter": "oremi", - "rsa.misc.reference_id": "litesse", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "sist", - "rsa.network.alias_host": [ - "rci737.www5.example" - ], - "rsa.threat.threat_category": "cer", - "rsa.time.event_time": "2016-01-29T08:09:59.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "rci737.www5.example", - "service.type": "zscaler", - "source.bytes": 1884, - "source.ip": "10.176.10.114", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "htm", - "url.fragment": "amremap", - "url.original": "https://api.example.com/ivelitse/ritin.htm?utl=vol#amremap", - "url.path": "/ivelitse/ritin.htm", - "url.query": "utl=vol", - "url.scheme": "https", - "user.name": "sumdo", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2016-02-12T03:12:33.000Z", - "destination.bytes": 2004, - "destination.ip": "10.173.22.152", - "event.action": "Allowed", - "event.code": "byC", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "olupt ZSCALERNSS: time=volup Feb 12 1:12:33 2016^^timezone=CT^^action=Allowed^^reason=failure^^hostname=eosquir5191.www.example^^protocol=rdp^^serverip=10.173.22.152^^url=https://internal.example.net/isiutal/moenimi.jpg?gnaali=enatus#mquia^^urlcategory=ameaqu^^urlclass=aqu^^dlpdictionaries=utper^^dlpengine=squame^^filetype=ntex^^threatcategory=eius^^threatclass=luptat^^pagerisk=emape^^threatname=aer^^clientpublicIP=lupt^^ClientIP=10.26.46.95^^location=uame^^refererURL=https://www.example.net/orisn/cca.htm?ofdeF=metcons#roinBCS^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=com^^user=eataevi^^event_id=byC^^clienttranstime=tinculp^^requestmethod=tur^^requestsize=2977^^requestversion=equat^^status=atemsequ^^responsesize=2004^^responseversion=minim^^transactionsize=7868", - "event.timezone": "CT", - "file.type": "ntex", - "fileset.name": "zia", - "host.name": "eosquir5191.www.example", - "http.request.referrer": "https://www.example.net/orisn/cca.htm?ofdeF=metcons#roinBCS", - "input.type": "log", - "log.offset": 844, - "network.bytes": 7868, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "eosquir5191.www.example" - ], - "related.ip": [ - "10.173.22.152", - "10.26.46.95" - ], - "related.user": [ - "eataevi" - ], - "rsa.db.index": "aqu", - "rsa.identity.user_dept": "com", - "rsa.internal.data": "olupt", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "luptat", - "rsa.misc.action": [ - "Allowed", - "tur" - ], - "rsa.misc.category": "eius", - "rsa.misc.filter": "ameaqu", - "rsa.misc.reference_id": "byC", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "atemsequ", - "rsa.network.alias_host": [ - "eosquir5191.www.example" - ], - "rsa.threat.threat_category": "aer", - "rsa.time.event_time": "2016-02-12T03:12:33.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "eosquir5191.www.example", - "service.type": "zscaler", - "source.bytes": 2977, - "source.ip": "10.26.46.95", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "mquia", - "url.original": "https://internal.example.net/isiutal/moenimi.jpg?gnaali=enatus#mquia", - "url.path": "/isiutal/moenimi.jpg", - "url.query": "gnaali=enatus", - "url.scheme": "https", - "user.name": "eataevi", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2016-02-26T10:15:08.000Z", - "destination.bytes": 1837, - "destination.ip": "10.204.86.149", - "event.action": "Blocked", - "event.code": "laboreet", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "amco ZSCALERNSS: time=exe Feb 26 8:15:08 2016^^timezone=CT^^action=Blocked^^reason=success^^hostname=orsitame3262.domain^^protocol=igmp^^serverip=10.204.86.149^^url=https://example.com/taspe/mvolu.gif?atcup=snos#iquaUte^^urlcategory=tconsec^^urlclass=nsequat^^dlpdictionaries=taev^^dlpengine=roidents^^filetype=oluptas^^threatcategory=llu^^threatclass=uptassi^^pagerisk=tamremap^^threatname=tur^^clientpublicIP=aperi^^ClientIP=10.254.146.57^^location=estqui^^refererURL=https://www5.example.net/emaper/ssitasp.html?enimad=rmagni#sit^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=onev^^user=tenima^^event_id=laboreet^^clienttranstime=aquaeabi^^requestmethod=giatq^^requestsize=2935^^requestversion=veleumi^^status=tia^^responsesize=1837^^responseversion=ude^^transactionsize=6905", - "event.timezone": "CT", - "file.type": "oluptas", - "fileset.name": "zia", - "host.name": "orsitame3262.domain", - "http.request.referrer": "https://www5.example.net/emaper/ssitasp.html?enimad=rmagni#sit", - "input.type": "log", - "log.offset": 1742, - "network.bytes": 6905, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "orsitame3262.domain" - ], - "related.ip": [ - "10.204.86.149", - "10.254.146.57" - ], - "related.user": [ - "tenima" - ], - "rsa.db.index": "nsequat", - "rsa.identity.user_dept": "onev", - "rsa.internal.data": "amco", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "uptassi", - "rsa.misc.action": [ - "Blocked", - "giatq" - ], - "rsa.misc.category": "llu", - "rsa.misc.filter": "tconsec", - "rsa.misc.reference_id": "laboreet", - "rsa.misc.result": "success", - "rsa.misc.result_code": "tia", - "rsa.network.alias_host": [ - "orsitame3262.domain" - ], - "rsa.threat.threat_category": "tur", - "rsa.time.event_time": "2016-02-26T10:15:08.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "orsitame3262.domain", - "service.type": "zscaler", - "source.bytes": 2935, - "source.ip": "10.254.146.57", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.com", - "url.extension": "gif", - "url.fragment": "iquaUte", - "url.original": "https://example.com/taspe/mvolu.gif?atcup=snos#iquaUte", - "url.path": "/taspe/mvolu.gif", - "url.query": "atcup=snos", - "url.scheme": "https", - "user.name": "tenima", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-03-12T05:17:42.000Z", - "destination.bytes": 3856, - "destination.ip": "10.103.246.190", - "event.action": "Allowed", - "event.code": "suntinc", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "uian ZSCALERNSS: time=tempo Mar 12 3:17:42 2016^^timezone=PST^^action=Allowed^^reason=failure^^hostname=tempor4496.www.localdomain^^protocol=ipv6^^serverip=10.103.246.190^^url=https://api.example.org/doloreeu/pori.jpg?itati=mfu#uid^^urlcategory=atatnonp^^urlclass=uiano^^dlpdictionaries=mrema^^dlpengine=autfu^^filetype=natura^^threatcategory=aboris^^threatclass=ima^^pagerisk=tanimi^^threatname=nimadmin^^clientpublicIP=erep^^ClientIP=10.252.125.53^^location=ugiatqu^^refererURL=https://internal.example.net/Utenimad/nibusBon.html?emq=isiu#nimadmi^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ari^^user=equun^^event_id=suntinc^^clienttranstime=elits^^requestmethod=llam^^requestsize=3077^^requestversion=gelits^^status=tatevel^^responsesize=3856^^responseversion=uptatev^^transactionsize=4292", - "event.timezone": "PST", - "file.type": "natura", - "fileset.name": "zia", - "host.name": "tempor4496.www.localdomain", - "http.request.referrer": "https://internal.example.net/Utenimad/nibusBon.html?emq=isiu#nimadmi", - "input.type": "log", - "log.offset": 2617, - "network.bytes": 4292, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tempor4496.www.localdomain" - ], - "related.ip": [ - "10.103.246.190", - "10.252.125.53" - ], - "related.user": [ - "equun" - ], - "rsa.db.index": "uiano", - "rsa.identity.user_dept": "ari", - "rsa.internal.data": "uian", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ima", - "rsa.misc.action": [ - "Allowed", - "llam" - ], - "rsa.misc.category": "aboris", - "rsa.misc.filter": "atatnonp", - "rsa.misc.reference_id": "suntinc", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "tatevel", - "rsa.network.alias_host": [ - "tempor4496.www.localdomain" - ], - "rsa.threat.threat_category": "nimadmin", - "rsa.time.event_time": "2016-03-12T05:17:42.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "tempor4496.www.localdomain", - "service.type": "zscaler", - "source.bytes": 3077, - "source.ip": "10.252.125.53", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.org", - "url.extension": "jpg", - "url.fragment": "uid", - "url.original": "https://api.example.org/doloreeu/pori.jpg?itati=mfu#uid", - "url.path": "/doloreeu/pori.jpg", - "url.query": "itati=mfu", - "url.scheme": "https", - "user.name": "equun", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-03-26T12:20:16.000Z", - "destination.bytes": 5772, - "destination.ip": "10.61.78.108", - "event.action": "Blocked", - "event.code": "umdolore", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "dmi ZSCALERNSS: time=olab Mar 26 10:20:16 2016^^timezone=GMT-07:00^^action=Blocked^^reason=unknown^^hostname=ore2933.www.test^^protocol=ipv6-icmp^^serverip=10.61.78.108^^url=https://api.example.com/ele/tenbyCic.gif?porainc=amquisno#iinea^^urlcategory=ipit^^urlclass=idexea^^dlpdictionaries=riat^^dlpengine=luptatem^^filetype=umdolor^^threatcategory=osquir^^threatclass=inim^^pagerisk=ema^^threatname=roinBCSe^^clientpublicIP=onse^^ClientIP=10.136.153.149^^location=animi^^refererURL=https://www5.example.org/ofdeF/tion.htm?emqu=lit#iam^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ciati^^user=ercit^^event_id=umdolore^^clienttranstime=eniam^^requestmethod=reetdolo^^requestsize=2451^^requestversion=onse^^status=rumet^^responsesize=5772^^responseversion=tatno^^transactionsize=6787", - "event.timezone": "GMT-07:00", - "file.type": "umdolor", - "fileset.name": "zia", - "host.name": "ore2933.www.test", - "http.request.referrer": "https://www5.example.org/ofdeF/tion.htm?emqu=lit#iam", - "input.type": "log", - "log.offset": 3507, - "network.bytes": 6787, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ore2933.www.test" - ], - "related.ip": [ - "10.136.153.149", - "10.61.78.108" - ], - "related.user": [ - "ercit" - ], - "rsa.db.index": "idexea", - "rsa.identity.user_dept": "ciati", - "rsa.internal.data": "dmi", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "inim", - "rsa.misc.action": [ - "Blocked", - "reetdolo" - ], - "rsa.misc.category": "osquir", - "rsa.misc.filter": "ipit", - "rsa.misc.reference_id": "umdolore", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "rumet", - "rsa.network.alias_host": [ - "ore2933.www.test" - ], - "rsa.threat.threat_category": "roinBCSe", - "rsa.time.event_time": "2016-03-26T12:20:16.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "ore2933.www.test", - "service.type": "zscaler", - "source.bytes": 2451, - "source.ip": "10.136.153.149", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "gif", - "url.fragment": "iinea", - "url.original": "https://api.example.com/ele/tenbyCic.gif?porainc=amquisno#iinea", - "url.path": "/ele/tenbyCic.gif", - "url.query": "porainc=amquisno", - "url.scheme": "https", - "user.name": "ercit", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-04-09T07:22:51.000Z", - "destination.bytes": 2984, - "destination.ip": "10.183.16.166", - "event.action": "Allowed", - "event.code": "remipsum", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "llam ZSCALERNSS: time=aspern Apr 9 5:22:51 2016^^timezone=GMT-07:00^^action=Allowed^^reason=success^^hostname=ollit4105.mail.localdomain^^protocol=ipv6-icmp^^serverip=10.183.16.166^^url=https://mail.example.org/sitas/ehenderi.jpg?atquovo=iumto#aboreetd^^urlcategory=sun^^urlclass=essecill^^dlpdictionaries=Duisau^^dlpengine=psum^^filetype=eriame^^threatcategory=lorema^^threatclass=avol^^pagerisk=labor^^threatname=atuse^^clientpublicIP=ddoeiu^^ClientIP=10.66.250.92^^location=onse^^refererURL=https://example.com/metcon/smo.jpg?upta=omn#ipsumq^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=ons^^user=tessec^^event_id=remipsum^^clienttranstime=liq^^requestmethod=ist^^requestsize=571^^requestversion=caecatc^^status=onsequat^^responsesize=2984^^responseversion=edquiano^^transactionsize=6061", - "event.timezone": "GMT-07:00", - "file.type": "eriame", - "fileset.name": "zia", - "host.name": "ollit4105.mail.localdomain", - "http.request.referrer": "https://example.com/metcon/smo.jpg?upta=omn#ipsumq", - "input.type": "log", - "log.offset": 4394, - "network.bytes": 6061, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ollit4105.mail.localdomain" - ], - "related.ip": [ - "10.183.16.166", - "10.66.250.92" - ], - "related.user": [ - "tessec" - ], - "rsa.db.index": "essecill", - "rsa.identity.user_dept": "ons", - "rsa.internal.data": "llam", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "avol", - "rsa.misc.action": [ - "Allowed", - "ist" - ], - "rsa.misc.category": "lorema", - "rsa.misc.filter": "sun", - "rsa.misc.reference_id": "remipsum", - "rsa.misc.result": "success", - "rsa.misc.result_code": "onsequat", - "rsa.network.alias_host": [ - "ollit4105.mail.localdomain" - ], - "rsa.threat.threat_category": "atuse", - "rsa.time.event_time": "2016-04-09T07:22:51.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "ollit4105.mail.localdomain", - "service.type": "zscaler", - "source.bytes": 571, - "source.ip": "10.66.250.92", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "jpg", - "url.fragment": "aboreetd", - "url.original": "https://mail.example.org/sitas/ehenderi.jpg?atquovo=iumto#aboreetd", - "url.path": "/sitas/ehenderi.jpg", - "url.query": "atquovo=iumto", - "url.scheme": "https", - "user.name": "tessec", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2016-04-24T14:25:25.000Z", - "destination.bytes": 2053, - "destination.ip": "10.243.224.205", - "event.action": "Blocked", - "event.code": "lpa", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ema ZSCALERNSS: time=par Apr 24 12:25:25 2016^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=cup1793.local^^protocol=ipv6^^serverip=10.243.224.205^^url=https://mail.example.net/aborumSe/luptat.txt?antiumto=strude#ctetura^^urlcategory=usmod^^urlclass=edqui^^dlpdictionaries=mquidol^^dlpengine=ita^^filetype=ipi^^threatcategory=rsitamet^^threatclass=lupt^^pagerisk=xea^^threatname=qua^^clientpublicIP=luptatev^^ClientIP=10.123.104.59^^location=uisquam^^refererURL=https://api.example.com/loremq/lores.txt?iqui=etc#etM^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=eprehen^^user=xercitat^^event_id=lpa^^clienttranstime=entsu^^requestmethod=dun^^requestsize=941^^requestversion=aliq^^status=rsitam^^responsesize=2053^^responseversion=imaven^^transactionsize=152", - "event.timezone": "PT", - "file.type": "ipi", - "fileset.name": "zia", - "host.name": "cup1793.local", - "http.request.referrer": "https://api.example.com/loremq/lores.txt?iqui=etc#etM", - "input.type": "log", - "log.offset": 5306, - "network.bytes": 152, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "cup1793.local" - ], - "related.ip": [ - "10.123.104.59", - "10.243.224.205" - ], - "related.user": [ - "xercitat" - ], - "rsa.db.index": "edqui", - "rsa.identity.user_dept": "eprehen", - "rsa.internal.data": "ema", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "lupt", - "rsa.misc.action": [ - "Blocked", - "dun" - ], - "rsa.misc.category": "rsitamet", - "rsa.misc.filter": "usmod", - "rsa.misc.reference_id": "lpa", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "rsitam", - "rsa.network.alias_host": [ - "cup1793.local" - ], - "rsa.threat.threat_category": "qua", - "rsa.time.event_time": "2016-04-24T14:25:25.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "cup1793.local", - "service.type": "zscaler", - "source.bytes": 941, - "source.ip": "10.123.104.59", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "txt", - "url.fragment": "ctetura", - "url.original": "https://mail.example.net/aborumSe/luptat.txt?antiumto=strude#ctetura", - "url.path": "/aborumSe/luptat.txt", - "url.query": "antiumto=strude", - "url.scheme": "https", - "user.name": "xercitat", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2016-05-08T09:27:59.000Z", - "destination.bytes": 6888, - "destination.ip": "10.119.185.63", - "event.action": "Blocked", - "event.code": "amqu", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tema ZSCALERNSS: time=ritatis May 8 7:27:59 2016^^timezone=GMT+02:00^^action=Blocked^^reason=unknown^^hostname=icab4668.local^^protocol=udp^^serverip=10.119.185.63^^url=https://www5.example.net/ntutla/equa.jpg?civeli=errorsi#des^^urlcategory=rehe^^urlclass=ume^^dlpdictionaries=incidi^^dlpengine=picia^^filetype=mUtenima^^threatcategory=emaperi^^threatclass=tame^^pagerisk=tinvol^^threatname=tectobe^^clientpublicIP=colabor^^ClientIP=10.74.17.5^^location=untut^^refererURL=https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu^^useragent=Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80^^department=itecto^^user=erc^^event_id=amqu^^clienttranstime=uines^^requestmethod=nsec^^requestsize=6907^^requestversion=estqu^^status=inibusBo^^responsesize=6888^^responseversion=ostrume^^transactionsize=6051", - "event.timezone": "GMT+02:00", - "file.type": "mUtenima", - "fileset.name": "zia", - "host.name": "icab4668.local", - "http.request.referrer": "https://internal.example.net/ommod/sequatur.txt?tlabo=suntexp#ugiatnu", - "input.type": "log", - "log.offset": 6194, - "network.bytes": 6051, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "icab4668.local" - ], - "related.ip": [ - "10.119.185.63", - "10.74.17.5" - ], - "related.user": [ - "erc" - ], - "rsa.db.index": "ume", - "rsa.identity.user_dept": "itecto", - "rsa.internal.data": "tema", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tame", - "rsa.misc.action": [ - "Blocked", - "nsec" - ], - "rsa.misc.category": "emaperi", - "rsa.misc.filter": "rehe", - "rsa.misc.reference_id": "amqu", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "inibusBo", - "rsa.network.alias_host": [ - "icab4668.local" - ], - "rsa.threat.threat_category": "tectobe", - "rsa.time.event_time": "2016-05-08T09:27:59.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "icab4668.local", - "service.type": "zscaler", - "source.bytes": 6907, - "source.ip": "10.74.17.5", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.net", - "url.extension": "jpg", - "url.fragment": "des", - "url.original": "https://www5.example.net/ntutla/equa.jpg?civeli=errorsi#des", - "url.path": "/ntutla/equa.jpg", - "url.query": "civeli=errorsi", - "url.scheme": "https", - "user.name": "erc", - "user_agent.device.name": "Android", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80", - "user_agent.os.full": "Android 5.1.1", - "user_agent.os.name": "Android", - "user_agent.os.version": "5.1.1", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-05-22T04:30:33.000Z", - "destination.bytes": 6354, - "destination.ip": "10.78.151.178", - "event.action": "Allowed", - "event.code": "mporain", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "upt ZSCALERNSS: time=uiineavo May 22 2:30:33 2016^^timezone=CET^^action=Allowed^^reason=unknown^^hostname=aperia4409.www5.invalid^^protocol=rdp^^serverip=10.78.151.178^^url=https://api.example.net/atvol/umiur.txt?tati=utaliqu#oriosamn^^urlcategory=deFinibu^^urlclass=iadese^^dlpdictionaries=imidest^^dlpengine=emagnama^^filetype=eprehend^^threatcategory=hil^^threatclass=atquovo^^pagerisk=suntinc^^threatname=xeac^^clientpublicIP=nidolo^^ClientIP=10.25.192.202^^location=intoccae^^refererURL=https://www.example.net/pida/nse.html?emeumfu=CSed#lupt^^useragent=Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ecillu^^user=quip^^event_id=mporain^^clienttranstime=icons^^requestmethod=amvolup^^requestsize=7700^^requestversion=temveleu^^status=colabo^^responsesize=6354^^responseversion=orinrepr^^transactionsize=6578", - "event.timezone": "CET", - "file.type": "eprehend", - "fileset.name": "zia", - "host.name": "aperia4409.www5.invalid", - "http.request.referrer": "https://www.example.net/pida/nse.html?emeumfu=CSed#lupt", - "input.type": "log", - "log.offset": 7136, - "network.bytes": 6578, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "aperia4409.www5.invalid" - ], - "related.ip": [ - "10.25.192.202", - "10.78.151.178" - ], - "related.user": [ - "quip" - ], - "rsa.db.index": "iadese", - "rsa.identity.user_dept": "ecillu", - "rsa.internal.data": "upt", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "atquovo", - "rsa.misc.action": [ - "Allowed", - "amvolup" - ], - "rsa.misc.category": "hil", - "rsa.misc.filter": "deFinibu", - "rsa.misc.reference_id": "mporain", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "colabo", - "rsa.network.alias_host": [ - "aperia4409.www5.invalid" - ], - "rsa.threat.threat_category": "xeac", - "rsa.time.event_time": "2016-05-22T04:30:33.000Z", - "rsa.time.timezone": "CET", - "rsa.web.fqdn": "aperia4409.www5.invalid", - "service.type": "zscaler", - "source.bytes": 7700, - "source.ip": "10.25.192.202", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.net", - "url.extension": "txt", - "url.fragment": "oriosamn", - "url.original": "https://api.example.net/atvol/umiur.txt?tati=utaliqu#oriosamn", - "url.path": "/atvol/umiur.txt", - "url.query": "tati=utaliqu", - "url.scheme": "https", - "user.name": "quip", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-06-05T11:33:08.000Z", - "destination.bytes": 5269, - "destination.ip": "10.71.170.37", - "event.action": "Allowed", - "event.code": "umexerci", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "rumetM ZSCALERNSS: time=equi Jun 5 9:33:08 2016^^timezone=GMT+02:00^^action=Allowed^^reason=success^^hostname=sitvolup368.internal.host^^protocol=igmp^^serverip=10.71.170.37^^url=https://mail.example.net/equep/iavolu.gif?aqu=rpo#uipe^^urlcategory=inesci^^urlclass=serror^^dlpdictionaries=aliqu^^dlpengine=olupta^^filetype=mipsumd^^threatcategory=eFinib^^threatclass=ihilm^^pagerisk=atDu^^threatname=eav^^clientpublicIP=ionevo^^ClientIP=10.135.225.244^^location=orev^^refererURL=https://api.example.net/quirat/llu.jpg?isc=aturve#emulla^^useragent=Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=atiset^^user=atu^^event_id=umexerci^^clienttranstime=ern^^requestmethod=psaquae^^requestsize=7355^^requestversion=nsectet^^status=utla^^responsesize=5269^^responseversion=sci^^transactionsize=2526", - "event.timezone": "GMT+02:00", - "file.type": "mipsumd", - "fileset.name": "zia", - "host.name": "sitvolup368.internal.host", - "http.request.referrer": "https://api.example.net/quirat/llu.jpg?isc=aturve#emulla", - "input.type": "log", - "log.offset": 8036, - "network.bytes": 2526, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "sitvolup368.internal.host" - ], - "related.ip": [ - "10.135.225.244", - "10.71.170.37" - ], - "related.user": [ - "atu" - ], - "rsa.db.index": "serror", - "rsa.identity.user_dept": "atiset", - "rsa.internal.data": "rumetM", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ihilm", - "rsa.misc.action": [ - "Allowed", - "psaquae" - ], - "rsa.misc.category": "eFinib", - "rsa.misc.filter": "inesci", - "rsa.misc.reference_id": "umexerci", - "rsa.misc.result": "success", - "rsa.misc.result_code": "utla", - "rsa.network.alias_host": [ - "sitvolup368.internal.host" - ], - "rsa.threat.threat_category": "eav", - "rsa.time.event_time": "2016-06-05T11:33:08.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "sitvolup368.internal.host", - "service.type": "zscaler", - "source.bytes": 7355, - "source.ip": "10.135.225.244", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "gif", - "url.fragment": "uipe", - "url.original": "https://mail.example.net/equep/iavolu.gif?aqu=rpo#uipe", - "url.path": "/equep/iavolu.gif", - "url.query": "aqu=rpo", - "url.scheme": "https", - "user.name": "atu", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-06-20T06:35:42.000Z", - "destination.bytes": 752, - "destination.ip": "10.223.247.86", - "event.action": "Allowed", - "event.code": "lup", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tlabori ZSCALERNSS: time=oin Jun 20 4:35:42 2016^^timezone=ET^^action=Allowed^^reason=success^^hostname=ite2026.www.invalid^^protocol=udp^^serverip=10.223.247.86^^url=https://example.org/bor/occa.htm?dol=leumiu#namali^^urlcategory=taevit^^urlclass=rinrepre^^dlpdictionaries=etconse^^dlpengine=tincu^^filetype=ari^^threatcategory=exercit^^threatclass=sci^^pagerisk=quamnih^^threatname=oluptate^^clientpublicIP=onseq^^ClientIP=10.19.145.131^^location=texp^^refererURL=https://internal.example.net/acc/amc.txt?amest=corp#modtemp^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=oluptas^^user=tNequepo^^event_id=lup^^clienttranstime=nula^^requestmethod=emseq^^requestsize=821^^requestversion=ento^^status=pic^^responsesize=752^^responseversion=eriamea^^transactionsize=7741", - "event.timezone": "ET", - "file.type": "ari", - "fileset.name": "zia", - "host.name": "ite2026.www.invalid", - "http.request.referrer": "https://internal.example.net/acc/amc.txt?amest=corp#modtemp", - "input.type": "log", - "log.offset": 8916, - "network.bytes": 7741, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ite2026.www.invalid" - ], - "related.ip": [ - "10.19.145.131", - "10.223.247.86" - ], - "related.user": [ - "tNequepo" - ], - "rsa.db.index": "rinrepre", - "rsa.identity.user_dept": "oluptas", - "rsa.internal.data": "tlabori", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "sci", - "rsa.misc.action": [ - "Allowed", - "emseq" - ], - "rsa.misc.category": "exercit", - "rsa.misc.filter": "taevit", - "rsa.misc.reference_id": "lup", - "rsa.misc.result": "success", - "rsa.misc.result_code": "pic", - "rsa.network.alias_host": [ - "ite2026.www.invalid" - ], - "rsa.threat.threat_category": "oluptate", - "rsa.time.event_time": "2016-06-20T06:35:42.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "ite2026.www.invalid", - "service.type": "zscaler", - "source.bytes": 821, - "source.ip": "10.19.145.131", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "namali", - "url.original": "https://example.org/bor/occa.htm?dol=leumiu#namali", - "url.path": "/bor/occa.htm", - "url.query": "dol=leumiu", - "url.scheme": "https", - "user.name": "tNequepo", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2016-07-04T13:38:16.000Z", - "destination.bytes": 3314, - "destination.ip": "10.2.53.125", - "event.action": "Allowed", - "event.code": "radi", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "rsita ZSCALERNSS: time=niamqui Jul 4 11:38:16 2016^^timezone=GMT-07:00^^action=Allowed^^reason=failure^^hostname=radipisc7020.home^^protocol=ipv6^^serverip=10.2.53.125^^url=https://internal.example.net/oru/temqu.htm?etMalor=ipi#reseos^^urlcategory=pariatu^^urlclass=tin^^dlpdictionaries=tenima^^dlpengine=tsedqu^^filetype=agnid^^threatcategory=proide^^threatclass=dolorem^^pagerisk=tlab^^threatname=volupt^^clientpublicIP=osqui^^ClientIP=10.181.80.139^^location=hitecto^^refererURL=https://www.example.net/liquide/etdol.jpg?uun=sequine#ectio^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=aboN^^user=ihilmo^^event_id=radi^^clienttranstime=gel^^requestmethod=lorsitam^^requestsize=6408^^requestversion=veniam^^status=ris^^responsesize=3314^^responseversion=ulapa^^transactionsize=7298", - "event.timezone": "GMT-07:00", - "file.type": "agnid", - "fileset.name": "zia", - "host.name": "radipisc7020.home", - "http.request.referrer": "https://www.example.net/liquide/etdol.jpg?uun=sequine#ectio", - "input.type": "log", - "log.offset": 9805, - "network.bytes": 7298, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "radipisc7020.home" - ], - "related.ip": [ - "10.181.80.139", - "10.2.53.125" - ], - "related.user": [ - "ihilmo" - ], - "rsa.db.index": "tin", - "rsa.identity.user_dept": "aboN", - "rsa.internal.data": "rsita", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "dolorem", - "rsa.misc.action": [ - "Allowed", - "lorsitam" - ], - "rsa.misc.category": "proide", - "rsa.misc.filter": "pariatu", - "rsa.misc.reference_id": "radi", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "ris", - "rsa.network.alias_host": [ - "radipisc7020.home" - ], - "rsa.threat.threat_category": "volupt", - "rsa.time.event_time": "2016-07-04T13:38:16.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "radipisc7020.home", - "service.type": "zscaler", - "source.bytes": 6408, - "source.ip": "10.181.80.139", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.net", - "url.extension": "htm", - "url.fragment": "reseos", - "url.original": "https://internal.example.net/oru/temqu.htm?etMalor=ipi#reseos", - "url.path": "/oru/temqu.htm", - "url.query": "etMalor=ipi", - "url.scheme": "https", - "user.name": "ihilmo", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-07-18T08:40:50.000Z", - "destination.bytes": 2742, - "destination.ip": "10.31.240.6", - "event.action": "Allowed", - "event.code": "olup", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "quioffi ZSCALERNSS: time=uptate Jul 18 6:40:50 2016^^timezone=ET^^action=Allowed^^reason=unknown^^hostname=uamei2493.www.test^^protocol=tcp^^serverip=10.31.240.6^^url=https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn^^urlcategory=isnisiu^^urlclass=bore^^dlpdictionaries=tsu^^dlpengine=tcons^^filetype=sciun^^threatcategory=sBono^^threatclass=catc^^pagerisk=nsect^^threatname=idata^^clientpublicIP=rumwritt^^ClientIP=10.167.98.76^^location=dol^^refererURL=https://api.example.org/citation/tisetq.html?Utenimad=orpor#tlabo^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=gnido^^user=ratvolu^^event_id=olup^^clienttranstime=numqua^^requestmethod=veni^^requestsize=3140^^requestversion=abo^^status=veniamqu^^responsesize=2742^^responseversion=aliquide^^transactionsize=3073", - "event.timezone": "ET", - "file.type": "sciun", - "fileset.name": "zia", - "host.name": "uamei2493.www.test", - "http.request.referrer": "https://api.example.org/citation/tisetq.html?Utenimad=orpor#tlabo", - "input.type": "log", - "log.offset": 10682, - "network.bytes": 3073, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "uamei2493.www.test" - ], - "related.ip": [ - "10.167.98.76", - "10.31.240.6" - ], - "related.user": [ - "ratvolu" - ], - "rsa.db.index": "bore", - "rsa.identity.user_dept": "gnido", - "rsa.internal.data": "quioffi", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "catc", - "rsa.misc.action": [ - "Allowed", - "veni" - ], - "rsa.misc.category": "sBono", - "rsa.misc.filter": "isnisiu", - "rsa.misc.reference_id": "olup", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "veniamqu", - "rsa.network.alias_host": [ - "uamei2493.www.test" - ], - "rsa.threat.threat_category": "idata", - "rsa.time.event_time": "2016-07-18T08:40:50.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "uamei2493.www.test", - "service.type": "zscaler", - "source.bytes": 3140, - "source.ip": "10.167.98.76", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "html", - "url.fragment": "osamn", - "url.original": "https://mail.example.net/itatione/isnis.html?oluptate=issus#osamn", - "url.path": "/itatione/isnis.html", - "url.query": "oluptate=issus", - "url.scheme": "https", - "user.name": "ratvolu", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2016-08-02T03:43:25.000Z", - "destination.bytes": 5368, - "destination.ip": "10.0.55.9", - "event.action": "Allowed", - "event.code": "rcitati", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "equat ZSCALERNSS: time=derit Aug 2 1:43:25 2016^^timezone=PT^^action=Allowed^^reason=success^^hostname=piscin6866.internal.host^^protocol=udp^^serverip=10.0.55.9^^url=https://www.example.org/eporr/xeacomm.html?aturQui=utlabor#rau^^urlcategory=idex^^urlclass=mfugiat^^dlpdictionaries=nisiuta^^dlpengine=tvolu^^filetype=ecte^^threatcategory=tinvolu^^threatclass=iurer^^pagerisk=iciadese^^threatname=quidolor^^clientpublicIP=tessec^^ClientIP=10.135.160.125^^location=mve^^refererURL=https://internal.example.com/uisau/eleum.htm?nre=ercitat#inim^^useragent=Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36^^department=Utenima^^user=volupta^^event_id=rcitati^^clienttranstime=eni^^requestmethod=ionevo^^requestsize=3616^^requestversion=Ute^^status=sperna^^responsesize=5368^^responseversion=mnisi^^transactionsize=509", - "event.timezone": "PT", - "file.type": "ecte", - "fileset.name": "zia", - "host.name": "piscin6866.internal.host", - "http.request.referrer": "https://internal.example.com/uisau/eleum.htm?nre=ercitat#inim", - "input.type": "log", - "log.offset": 11586, - "network.bytes": 509, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "piscin6866.internal.host" - ], - "related.ip": [ - "10.0.55.9", - "10.135.160.125" - ], - "related.user": [ - "volupta" - ], - "rsa.db.index": "mfugiat", - "rsa.identity.user_dept": "Utenima", - "rsa.internal.data": "equat", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "iurer", - "rsa.misc.action": [ - "Allowed", - "ionevo" - ], - "rsa.misc.category": "tinvolu", - "rsa.misc.filter": "idex", - "rsa.misc.reference_id": "rcitati", - "rsa.misc.result": "success", - "rsa.misc.result_code": "sperna", - "rsa.network.alias_host": [ - "piscin6866.internal.host" - ], - "rsa.threat.threat_category": "quidolor", - "rsa.time.event_time": "2016-08-02T03:43:25.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "piscin6866.internal.host", - "service.type": "zscaler", - "source.bytes": 3616, - "source.ip": "10.135.160.125", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.org", - "url.extension": "html", - "url.fragment": "rau", - "url.original": "https://www.example.org/eporr/xeacomm.html?aturQui=utlabor#rau", - "url.path": "/eporr/xeacomm.html", - "url.query": "aturQui=utlabor", - "url.scheme": "https", - "user.name": "volupta", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-08-16T10:45:59.000Z", - "destination.bytes": 6027, - "destination.ip": "10.63.250.128", - "event.action": "Allowed", - "event.code": "ntocca", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tDuisaut ZSCALERNSS: time=oinBC Aug 16 8:45:59 2016^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=spi3544.www.host^^protocol=ggp^^serverip=10.63.250.128^^url=https://internal.example.net/ptatemq/luptatev.html?Nequepo=ipsumd#ntocc^^urlcategory=uteirure^^urlclass=nevo^^dlpdictionaries=ide^^dlpengine=aali^^filetype=adip^^threatcategory=tium^^threatclass=nnum^^pagerisk=tenbyCi^^threatname=ate^^clientpublicIP=uiac^^ClientIP=10.111.187.12^^location=itam^^refererURL=https://www.example.org/santiumd/turadip.gif?niamqui=orem#sno^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=tev^^user=saute^^event_id=ntocca^^clienttranstime=ostru^^requestmethod=ntoccae^^requestsize=1705^^requestversion=rrorsi^^status=temquiav^^responsesize=6027^^responseversion=sec^^transactionsize=1927", - "event.timezone": "OMST", - "file.type": "adip", - "fileset.name": "zia", - "host.name": "spi3544.www.host", - "http.request.referrer": "https://www.example.org/santiumd/turadip.gif?niamqui=orem#sno", - "input.type": "log", - "log.offset": 12524, - "network.bytes": 1927, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "spi3544.www.host" - ], - "related.ip": [ - "10.111.187.12", - "10.63.250.128" - ], - "related.user": [ - "saute" - ], - "rsa.db.index": "nevo", - "rsa.identity.user_dept": "tev", - "rsa.internal.data": "tDuisaut", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "nnum", - "rsa.misc.action": [ - "Allowed", - "ntoccae" - ], - "rsa.misc.category": "tium", - "rsa.misc.filter": "uteirure", - "rsa.misc.reference_id": "ntocca", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "temquiav", - "rsa.network.alias_host": [ - "spi3544.www.host" - ], - "rsa.threat.threat_category": "ate", - "rsa.time.event_time": "2016-08-16T10:45:59.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "spi3544.www.host", - "service.type": "zscaler", - "source.bytes": 1705, - "source.ip": "10.111.187.12", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.net", - "url.extension": "html", - "url.fragment": "ntocc", - "url.original": "https://internal.example.net/ptatemq/luptatev.html?Nequepo=ipsumd#ntocc", - "url.path": "/ptatemq/luptatev.html", - "url.query": "Nequepo=ipsumd", - "url.scheme": "https", - "user.name": "saute", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2016-08-30T05:48:33.000Z", - "destination.bytes": 1394, - "destination.ip": "10.5.126.127", - "event.action": "Allowed", - "event.code": "eprehen", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "sBon ZSCALERNSS: time=orro Aug 30 3:48:33 2016^^timezone=PST^^action=Allowed^^reason=unknown^^hostname=tlab5981.www.host^^protocol=igmp^^serverip=10.5.126.127^^url=https://www5.example.com/tateve/itinvol.txt?tenatus=cipitlab#ipsumd^^urlcategory=antiu^^urlclass=uirati^^dlpdictionaries=oin^^dlpengine=exe^^filetype=imadmini^^threatcategory=sauteiru^^threatclass=mod^^pagerisk=hilm^^threatname=ataevi^^clientpublicIP=com^^ClientIP=10.252.124.150^^location=trud^^refererURL=https://mail.example.org/litessec/itas.htm?uidol=mporin#mwrit^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=roid^^user=inibusB^^event_id=eprehen^^clienttranstime=entor^^requestmethod=xeacomm^^requestsize=1940^^requestversion=utp^^status=ema^^responsesize=1394^^responseversion=itessequ^^transactionsize=7688", - "event.timezone": "PST", - "file.type": "imadmini", - "fileset.name": "zia", - "host.name": "tlab5981.www.host", - "http.request.referrer": "https://mail.example.org/litessec/itas.htm?uidol=mporin#mwrit", - "input.type": "log", - "log.offset": 13426, - "network.bytes": 7688, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tlab5981.www.host" - ], - "related.ip": [ - "10.252.124.150", - "10.5.126.127" - ], - "related.user": [ - "inibusB" - ], - "rsa.db.index": "uirati", - "rsa.identity.user_dept": "roid", - "rsa.internal.data": "sBon", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "mod", - "rsa.misc.action": [ - "Allowed", - "xeacomm" - ], - "rsa.misc.category": "sauteiru", - "rsa.misc.filter": "antiu", - "rsa.misc.reference_id": "eprehen", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "ema", - "rsa.network.alias_host": [ - "tlab5981.www.host" - ], - "rsa.threat.threat_category": "ataevi", - "rsa.time.event_time": "2016-08-30T05:48:33.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "tlab5981.www.host", - "service.type": "zscaler", - "source.bytes": 1940, - "source.ip": "10.252.124.150", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.com", - "url.extension": "txt", - "url.fragment": "ipsumd", - "url.original": "https://www5.example.com/tateve/itinvol.txt?tenatus=cipitlab#ipsumd", - "url.path": "/tateve/itinvol.txt", - "url.query": "tenatus=cipitlab", - "url.scheme": "https", - "user.name": "inibusB", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2016-09-13T12:51:07.000Z", - "destination.bytes": 248, - "destination.ip": "10.201.171.120", - "event.action": "Blocked", - "event.code": "ris", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ine ZSCALERNSS: time=lup Sep 13 10:51:07 2016^^timezone=CT^^action=Blocked^^reason=success^^hostname=upida508.example^^protocol=tcp^^serverip=10.201.171.120^^url=https://api.example.net/tquiin/tse.jpg?ovol=ptasn#taedicta^^urlcategory=itam^^urlclass=str^^dlpdictionaries=idolore^^dlpengine=pid^^filetype=illoin^^threatcategory=tanimid^^threatclass=umdo^^pagerisk=natuse^^threatname=gnamal^^clientpublicIP=metMalo^^ClientIP=10.91.126.231^^location=reprehen^^refererURL=https://example.net/psumquia/ven.html?siutali=amnih#ium^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=tau^^user=exercita^^event_id=ris^^clienttranstime=eumiu^^requestmethod=orumSe^^requestsize=728^^requestversion=isnost^^status=queips^^responsesize=248^^responseversion=itess^^transactionsize=52", - "event.timezone": "CT", - "file.type": "illoin", - "fileset.name": "zia", - "host.name": "upida508.example", - "http.request.referrer": "https://example.net/psumquia/ven.html?siutali=amnih#ium", - "input.type": "log", - "log.offset": 14325, - "network.bytes": 52, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "upida508.example" - ], - "related.ip": [ - "10.201.171.120", - "10.91.126.231" - ], - "related.user": [ - "exercita" - ], - "rsa.db.index": "str", - "rsa.identity.user_dept": "tau", - "rsa.internal.data": "ine", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "umdo", - "rsa.misc.action": [ - "Blocked", - "orumSe" - ], - "rsa.misc.category": "tanimid", - "rsa.misc.filter": "itam", - "rsa.misc.reference_id": "ris", - "rsa.misc.result": "success", - "rsa.misc.result_code": "queips", - "rsa.network.alias_host": [ - "upida508.example" - ], - "rsa.threat.threat_category": "gnamal", - "rsa.time.event_time": "2016-09-13T12:51:07.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "upida508.example", - "service.type": "zscaler", - "source.bytes": 728, - "source.ip": "10.91.126.231", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.net", - "url.extension": "jpg", - "url.fragment": "taedicta", - "url.original": "https://api.example.net/tquiin/tse.jpg?ovol=ptasn#taedicta", - "url.path": "/tquiin/tse.jpg", - "url.query": "ovol=ptasn", - "url.scheme": "https", - "user.name": "exercita", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2016-09-28T07:53:42.000Z", - "destination.bytes": 2703, - "destination.ip": "10.135.82.97", - "event.action": "Allowed", - "event.code": "iat", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ofdeFini ZSCALERNSS: time=irat Sep 28 5:53:42 2016^^timezone=GMT+02:00^^action=Allowed^^reason=unknown^^hostname=oditem5255.api.localdomain^^protocol=tcp^^serverip=10.135.82.97^^url=https://mail.example.org/olor/ineavo.gif?mquelau=iadolor#amcol^^urlcategory=adeser^^urlclass=oin^^dlpdictionaries=mvenia^^dlpengine=madminim^^filetype=fugitsed^^threatcategory=quam^^threatclass=quid^^pagerisk=fugiat^^threatname=atisun^^clientpublicIP=esci^^ClientIP=10.107.251.87^^location=fugi^^refererURL=https://www.example.net/iduntu/idestlab.htm?avol=icero#xer^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=nturma^^user=str^^event_id=iat^^clienttranstime=etur^^requestmethod=itecto^^requestsize=1300^^requestversion=borios^^status=tut^^responsesize=2703^^responseversion=umqu^^transactionsize=301", - "event.timezone": "GMT+02:00", - "file.type": "fugitsed", - "fileset.name": "zia", - "host.name": "oditem5255.api.localdomain", - "http.request.referrer": "https://www.example.net/iduntu/idestlab.htm?avol=icero#xer", - "input.type": "log", - "log.offset": 15210, - "network.bytes": 301, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "oditem5255.api.localdomain" - ], - "related.ip": [ - "10.107.251.87", - "10.135.82.97" - ], - "related.user": [ - "str" - ], - "rsa.db.index": "oin", - "rsa.identity.user_dept": "nturma", - "rsa.internal.data": "ofdeFini", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "quid", - "rsa.misc.action": [ - "Allowed", - "itecto" - ], - "rsa.misc.category": "quam", - "rsa.misc.filter": "adeser", - "rsa.misc.reference_id": "iat", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "tut", - "rsa.network.alias_host": [ - "oditem5255.api.localdomain" - ], - "rsa.threat.threat_category": "atisun", - "rsa.time.event_time": "2016-09-28T07:53:42.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "oditem5255.api.localdomain", - "service.type": "zscaler", - "source.bytes": 1300, - "source.ip": "10.107.251.87", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "gif", - "url.fragment": "amcol", - "url.original": "https://mail.example.org/olor/ineavo.gif?mquelau=iadolor#amcol", - "url.path": "/olor/ineavo.gif", - "url.query": "mquelau=iadolor", - "url.scheme": "https", - "user.name": "str", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2016-10-12T14:56:16.000Z", - "destination.bytes": 100, - "destination.ip": "10.31.198.58", - "event.action": "Blocked", - "event.code": "ditemp", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "adipisc ZSCALERNSS: time=uscipitl Oct 12 12:56:16 2016^^timezone=PST^^action=Blocked^^reason=unknown^^hostname=uamei2389.internal.example^^protocol=ipv6-icmp^^serverip=10.31.198.58^^url=https://www.example.com/its/ender.gif?oles=edic#seq^^urlcategory=tutlab^^urlclass=sau^^dlpdictionaries=atevelit^^dlpengine=meius^^filetype=billo^^threatcategory=labo^^threatclass=oNemoeni^^pagerisk=ttenby^^threatname=boris^^clientpublicIP=stenatu^^ClientIP=10.215.205.216^^location=ratv^^refererURL=https://www.example.net/ianon/tsed.htm?ameiusm=proide#ano^^useragent=Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=boreetdo^^user=aturve^^event_id=ditemp^^clienttranstime=edqui^^requestmethod=nre^^requestsize=7231^^requestversion=sit^^status=olab^^responsesize=100^^responseversion=elitse^^transactionsize=6672", - "event.timezone": "PST", - "file.type": "billo", - "fileset.name": "zia", - "host.name": "uamei2389.internal.example", - "http.request.referrer": "https://www.example.net/ianon/tsed.htm?ameiusm=proide#ano", - "input.type": "log", - "log.offset": 16116, - "network.bytes": 6672, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "uamei2389.internal.example" - ], - "related.ip": [ - "10.215.205.216", - "10.31.198.58" - ], - "related.user": [ - "aturve" - ], - "rsa.db.index": "sau", - "rsa.identity.user_dept": "boreetdo", - "rsa.internal.data": "adipisc", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "oNemoeni", - "rsa.misc.action": [ - "Blocked", - "nre" - ], - "rsa.misc.category": "labo", - "rsa.misc.filter": "tutlab", - "rsa.misc.reference_id": "ditemp", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "olab", - "rsa.network.alias_host": [ - "uamei2389.internal.example" - ], - "rsa.threat.threat_category": "boris", - "rsa.time.event_time": "2016-10-12T14:56:16.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "uamei2389.internal.example", - "service.type": "zscaler", - "source.bytes": 7231, - "source.ip": "10.215.205.216", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.com", - "url.extension": "gif", - "url.fragment": "seq", - "url.original": "https://www.example.com/its/ender.gif?oles=edic#seq", - "url.path": "/its/ender.gif", - "url.query": "oles=edic", - "url.scheme": "https", - "user.name": "aturve", - "user_agent.device.name": "Samsung SM-S337TL", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; SM-S337TL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2016-10-26T09:58:50.000Z", - "destination.bytes": 7205, - "destination.ip": "10.29.155.171", - "event.action": "Allowed", - "event.code": "aboreetd", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "quasia ZSCALERNSS: time=adi Oct 26 7:58:50 2016^^timezone=PST^^action=Allowed^^reason=failure^^hostname=eacommod1930.internal.lan^^protocol=igmp^^serverip=10.29.155.171^^url=https://www5.example.org/oeni/tdol.gif?llamco=nea#psum^^urlcategory=tasnulap^^urlclass=orsit^^dlpdictionaries=asiar^^dlpengine=ise^^filetype=itau^^threatcategory=apariat^^threatclass=vitaedi^^pagerisk=lorsita^^threatname=dolore^^clientpublicIP=uptate^^ClientIP=10.229.83.165^^location=ugiat^^refererURL=https://internal.example.com/ate/odoconse.jpg?quatu=veli#tenim^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=labo^^user=ulapar^^event_id=aboreetd^^clienttranstime=hilm^^requestmethod=llitanim^^requestsize=5047^^requestversion=pitl^^status=por^^responsesize=7205^^responseversion=ama^^transactionsize=332", - "event.timezone": "PST", - "file.type": "itau", - "fileset.name": "zia", - "host.name": "eacommod1930.internal.lan", - "http.request.referrer": "https://internal.example.com/ate/odoconse.jpg?quatu=veli#tenim", - "input.type": "log", - "log.offset": 17002, - "network.bytes": 332, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "eacommod1930.internal.lan" - ], - "related.ip": [ - "10.229.83.165", - "10.29.155.171" - ], - "related.user": [ - "ulapar" - ], - "rsa.db.index": "orsit", - "rsa.identity.user_dept": "labo", - "rsa.internal.data": "quasia", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "vitaedi", - "rsa.misc.action": [ - "Allowed", - "llitanim" - ], - "rsa.misc.category": "apariat", - "rsa.misc.filter": "tasnulap", - "rsa.misc.reference_id": "aboreetd", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "por", - "rsa.network.alias_host": [ - "eacommod1930.internal.lan" - ], - "rsa.threat.threat_category": "dolore", - "rsa.time.event_time": "2016-10-26T09:58:50.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "eacommod1930.internal.lan", - "service.type": "zscaler", - "source.bytes": 5047, - "source.ip": "10.229.83.165", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.org", - "url.extension": "gif", - "url.fragment": "psum", - "url.original": "https://www5.example.org/oeni/tdol.gif?llamco=nea#psum", - "url.path": "/oeni/tdol.gif", - "url.query": "llamco=nea", - "url.scheme": "https", - "user.name": "ulapar", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2016-11-10T05:01:24.000Z", - "destination.bytes": 6498, - "destination.ip": "10.129.192.145", - "event.action": "Blocked", - "event.code": "oraincid", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "adminimv ZSCALERNSS: time=odi Nov 10 3:01:24 2016^^timezone=GMT-07:00^^action=Blocked^^reason=success^^hostname=tem6984.www5.domain^^protocol=ipv6^^serverip=10.129.192.145^^url=https://www.example.com/uasiar/utlab.htm?loremqu=dantium#lor^^urlcategory=velillu^^urlclass=cteturad^^dlpdictionaries=bor^^dlpengine=rauto^^filetype=ationev^^threatcategory=umdolor^^threatclass=uaUten^^pagerisk=nby^^threatname=mve^^clientpublicIP=osqui^^ClientIP=10.161.148.64^^location=ibusBon^^refererURL=https://example.com/rQu/mco.jpg?dun=reprehe#tincu^^useragent=Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36^^department=dex^^user=lor^^event_id=oraincid^^clienttranstime=intocc^^requestmethod=amcorp^^requestsize=1275^^requestversion=ssecillu^^status=liqua^^responsesize=6498^^responseversion=utodita^^transactionsize=4014", - "event.timezone": "GMT-07:00", - "file.type": "ationev", - "fileset.name": "zia", - "host.name": "tem6984.www5.domain", - "http.request.referrer": "https://example.com/rQu/mco.jpg?dun=reprehe#tincu", - "input.type": "log", - "log.offset": 18036, - "network.bytes": 4014, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tem6984.www5.domain" - ], - "related.ip": [ - "10.129.192.145", - "10.161.148.64" - ], - "related.user": [ - "lor" - ], - "rsa.db.index": "cteturad", - "rsa.identity.user_dept": "dex", - "rsa.internal.data": "adminimv", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "uaUten", - "rsa.misc.action": [ - "Blocked", - "amcorp" - ], - "rsa.misc.category": "umdolor", - "rsa.misc.filter": "velillu", - "rsa.misc.reference_id": "oraincid", - "rsa.misc.result": "success", - "rsa.misc.result_code": "liqua", - "rsa.network.alias_host": [ - "tem6984.www5.domain" - ], - "rsa.threat.threat_category": "mve", - "rsa.time.event_time": "2016-11-10T05:01:24.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "tem6984.www5.domain", - "service.type": "zscaler", - "source.bytes": 1275, - "source.ip": "10.161.148.64", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "lor", - "url.original": "https://www.example.com/uasiar/utlab.htm?loremqu=dantium#lor", - "url.path": "/uasiar/utlab.htm", - "url.query": "loremqu=dantium", - "url.scheme": "https", - "user.name": "lor", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2016-11-24T12:03:59.000Z", - "destination.bytes": 6392, - "destination.ip": "10.7.200.140", - "event.action": "Allowed", - "event.code": "tpersp", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "fdeF ZSCALERNSS: time=iquidexe Nov 24 10:03:59 2016^^timezone=CEST^^action=Allowed^^reason=failure^^hostname=lapariat7287.internal.host^^protocol=ggp^^serverip=10.7.200.140^^url=https://api.example.org/icabo/gna.html?urerepr=eseru#quamest^^urlcategory=mac^^urlclass=qui^^dlpdictionaries=ritin^^dlpengine=temporin^^filetype=equatur^^threatcategory=adeseru^^threatclass=tdol^^pagerisk=upt^^threatname=mex^^clientpublicIP=tatem^^ClientIP=10.203.65.161^^location=eveli^^refererURL=https://internal.example.com/oremq/dicta.htm?imide=poriss#tvolup^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=siu^^user=snost^^event_id=tpersp^^clienttranstime=llamc^^requestmethod=nte^^requestsize=3571^^requestversion=utali^^status=porinc^^responsesize=6392^^responseversion=mvolu^^transactionsize=1664", - "event.timezone": "CEST", - "file.type": "equatur", - "fileset.name": "zia", - "host.name": "lapariat7287.internal.host", - "http.request.referrer": "https://internal.example.com/oremq/dicta.htm?imide=poriss#tvolup", - "input.type": "log", - "log.offset": 18921, - "network.bytes": 1664, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "lapariat7287.internal.host" - ], - "related.ip": [ - "10.203.65.161", - "10.7.200.140" - ], - "related.user": [ - "snost" - ], - "rsa.db.index": "qui", - "rsa.identity.user_dept": "siu", - "rsa.internal.data": "fdeF", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tdol", - "rsa.misc.action": [ - "Allowed", - "nte" - ], - "rsa.misc.category": "adeseru", - "rsa.misc.filter": "mac", - "rsa.misc.reference_id": "tpersp", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "porinc", - "rsa.network.alias_host": [ - "lapariat7287.internal.host" - ], - "rsa.threat.threat_category": "mex", - "rsa.time.event_time": "2016-11-24T12:03:59.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.fqdn": "lapariat7287.internal.host", - "service.type": "zscaler", - "source.bytes": 3571, - "source.ip": "10.203.65.161", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.org", - "url.extension": "html", - "url.fragment": "quamest", - "url.original": "https://api.example.org/icabo/gna.html?urerepr=eseru#quamest", - "url.path": "/icabo/gna.html", - "url.query": "urerepr=eseru", - "url.scheme": "https", - "user.name": "snost", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2016-12-08T07:06:33.000Z", - "destination.bytes": 7595, - "destination.ip": "10.86.22.67", - "event.action": "Blocked", - "event.code": "mquae", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ipi ZSCALERNSS: time=imveniam Dec 8 5:06:33 2016^^timezone=GMT-07:00^^action=Blocked^^reason=unknown^^hostname=licabo1493.api.corp^^protocol=icmp^^serverip=10.86.22.67^^url=https://api.example.org/oremi/elites.html?iosa=boNemoe#onsequ^^urlcategory=equinesc^^urlclass=cab^^dlpdictionaries=atisund^^dlpengine=xea^^filetype=ites^^threatcategory=isetq^^threatclass=iutali^^pagerisk=velite^^threatname=teturad^^clientpublicIP=perspici^^ClientIP=10.218.98.29^^location=iconseq^^refererURL=https://www5.example.org/atisetqu/issuscip.jpg?dipisci=spernatu#admi^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=quunt^^user=olori^^event_id=mquae^^clienttranstime=eriti^^requestmethod=atcupi^^requestsize=2332^^requestversion=plica^^status=ore^^responsesize=7595^^responseversion=emqu^^transactionsize=2846", - "event.timezone": "GMT-07:00", - "file.type": "ites", - "fileset.name": "zia", - "host.name": "licabo1493.api.corp", - "http.request.referrer": "https://www5.example.org/atisetqu/issuscip.jpg?dipisci=spernatu#admi", - "input.type": "log", - "log.offset": 19875, - "network.bytes": 2846, - "network.protocol": "icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "licabo1493.api.corp" - ], - "related.ip": [ - "10.218.98.29", - "10.86.22.67" - ], - "related.user": [ - "olori" - ], - "rsa.db.index": "cab", - "rsa.identity.user_dept": "quunt", - "rsa.internal.data": "ipi", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "iutali", - "rsa.misc.action": [ - "Blocked", - "atcupi" - ], - "rsa.misc.category": "isetq", - "rsa.misc.filter": "equinesc", - "rsa.misc.reference_id": "mquae", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "ore", - "rsa.network.alias_host": [ - "licabo1493.api.corp" - ], - "rsa.threat.threat_category": "teturad", - "rsa.time.event_time": "2016-12-08T07:06:33.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "licabo1493.api.corp", - "service.type": "zscaler", - "source.bytes": 2332, - "source.ip": "10.218.98.29", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.org", - "url.extension": "html", - "url.fragment": "onsequ", - "url.original": "https://api.example.org/oremi/elites.html?iosa=boNemoe#onsequ", - "url.path": "/oremi/elites.html", - "url.query": "iosa=boNemoe", - "url.scheme": "https", - "user.name": "olori", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2016-12-23T14:09:07.000Z", - "destination.bytes": 2147, - "destination.ip": "10.39.31.115", - "event.action": "Allowed", - "event.code": "labo", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "acommod ZSCALERNSS: time=itsedd Dec 23 12:09:07 2016^^timezone=CT^^action=Allowed^^reason=success^^hostname=stenatu4844.www.invalid^^protocol=rdp^^serverip=10.39.31.115^^url=https://example.com/luptatem/uaeratv.gif?dat=periam#dqu^^urlcategory=pid^^urlclass=rExc^^dlpdictionaries=iusmo^^dlpengine=tame^^filetype=naaliq^^threatcategory=nte^^threatclass=ulpa^^pagerisk=sitam^^threatname=rad^^clientpublicIP=loi^^ClientIP=10.24.111.229^^location=volupt^^refererURL=https://example.net/idid/tesse.txt?boru=ptateve#enderi^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=toccaec^^user=fugi^^event_id=labo^^clienttranstime=nostrud^^requestmethod=gnaal^^requestsize=7224^^requestversion=proident^^status=maliquam^^responsesize=2147^^responseversion=atione^^transactionsize=5702", - "event.timezone": "CT", - "file.type": "naaliq", - "fileset.name": "zia", - "host.name": "stenatu4844.www.invalid", - "http.request.referrer": "https://example.net/idid/tesse.txt?boru=ptateve#enderi", - "input.type": "log", - "log.offset": 20787, - "network.bytes": 5702, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "stenatu4844.www.invalid" - ], - "related.ip": [ - "10.24.111.229", - "10.39.31.115" - ], - "related.user": [ - "fugi" - ], - "rsa.db.index": "rExc", - "rsa.identity.user_dept": "toccaec", - "rsa.internal.data": "acommod", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ulpa", - "rsa.misc.action": [ - "Allowed", - "gnaal" - ], - "rsa.misc.category": "nte", - "rsa.misc.filter": "pid", - "rsa.misc.reference_id": "labo", - "rsa.misc.result": "success", - "rsa.misc.result_code": "maliquam", - "rsa.network.alias_host": [ - "stenatu4844.www.invalid" - ], - "rsa.threat.threat_category": "rad", - "rsa.time.event_time": "2016-12-23T14:09:07.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "stenatu4844.www.invalid", - "service.type": "zscaler", - "source.bytes": 7224, - "source.ip": "10.24.111.229", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.com", - "url.extension": "gif", - "url.fragment": "dqu", - "url.original": "https://example.com/luptatem/uaeratv.gif?dat=periam#dqu", - "url.path": "/luptatem/uaeratv.gif", - "url.query": "dat=periam", - "url.scheme": "https", - "user.name": "fugi", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-01-06T09:11:41.000Z", - "destination.bytes": 4814, - "destination.ip": "10.179.210.218", - "event.action": "Blocked", - "event.code": "undeom", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ritati ZSCALERNSS: time=orisni Jan 6 7:11:41 2017^^timezone=PST^^action=Blocked^^reason=failure^^hostname=sitam5077.internal.host^^protocol=igmp^^serverip=10.179.210.218^^url=https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo^^urlcategory=oluptas^^urlclass=emvele^^dlpdictionaries=isnost^^dlpengine=olorem^^filetype=ido^^threatcategory=emqu^^threatclass=riss^^pagerisk=iquamqua^^threatname=sit^^clientpublicIP=rumSect^^ClientIP=10.32.39.220^^location=aliq^^refererURL=https://example.net/mven/olorsit.gif?oremag=illu#ruredo^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]^^department=tatevel^^user=boreetdo^^event_id=undeom^^clienttranstime=uamnihi^^requestmethod=risnis^^requestsize=1140^^requestversion=scingeli^^status=isn^^responsesize=4814^^responseversion=omm^^transactionsize=696", - "event.timezone": "PST", - "file.type": "ido", - "fileset.name": "zia", - "host.name": "sitam5077.internal.host", - "http.request.referrer": "https://example.net/mven/olorsit.gif?oremag=illu#ruredo", - "input.type": "log", - "log.offset": 21648, - "network.bytes": 696, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "sitam5077.internal.host" - ], - "related.ip": [ - "10.179.210.218", - "10.32.39.220" - ], - "related.user": [ - "boreetdo" - ], - "rsa.db.index": "emvele", - "rsa.identity.user_dept": "tatevel", - "rsa.internal.data": "ritati", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "riss", - "rsa.misc.action": [ - "Blocked", - "risnis" - ], - "rsa.misc.category": "emqu", - "rsa.misc.filter": "oluptas", - "rsa.misc.reference_id": "undeom", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "isn", - "rsa.network.alias_host": [ - "sitam5077.internal.host" - ], - "rsa.threat.threat_category": "sit", - "rsa.time.event_time": "2017-01-06T09:11:41.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "sitam5077.internal.host", - "service.type": "zscaler", - "source.bytes": 1140, - "source.ip": "10.32.39.220", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.org", - "url.extension": "jpg", - "url.fragment": "umetMalo", - "url.original": "https://www.example.org/tanimi/rumSecti.jpg?emporain=ntiumto#umetMalo", - "url.path": "/tanimi/rumSecti.jpg", - "url.query": "emporain=ntiumto", - "url.scheme": "https", - "user.name": "boreetdo", - "user_agent.device.name": "Samsung SM-A715F", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2017-01-20T04:14:16.000Z", - "destination.bytes": 3916, - "destination.ip": "10.128.173.19", - "event.action": "Blocked", - "event.code": "tlaboree", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "quunt ZSCALERNSS: time=numquam Jan 20 2:14:16 2017^^timezone=CT^^action=Blocked^^reason=failure^^hostname=dquia107.www.test^^protocol=ipv6^^serverip=10.128.173.19^^url=https://api.example.com/ori/tconsect.html?ercit=eporroq#ulla^^urlcategory=iqu^^urlclass=oin^^dlpdictionaries=hil^^dlpengine=cingel^^filetype=modocon^^threatcategory=ipsu^^threatclass=ntNeq^^pagerisk=tate^^threatname=urExce^^clientpublicIP=asi^^ClientIP=10.88.172.34^^location=atv^^refererURL=https://example.org/liquaUte/alorum.txt?ria=atDu#nsec^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=maperi^^user=agnaaliq^^event_id=tlaboree^^clienttranstime=norumet^^requestmethod=dtempo^^requestsize=7680^^requestversion=col^^status=mve^^responsesize=3916^^responseversion=tinvolup^^transactionsize=2365", - "event.timezone": "CT", - "file.type": "modocon", - "fileset.name": "zia", - "host.name": "dquia107.www.test", - "http.request.referrer": "https://example.org/liquaUte/alorum.txt?ria=atDu#nsec", - "input.type": "log", - "log.offset": 22620, - "network.bytes": 2365, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "dquia107.www.test" - ], - "related.ip": [ - "10.128.173.19", - "10.88.172.34" - ], - "related.user": [ - "agnaaliq" - ], - "rsa.db.index": "oin", - "rsa.identity.user_dept": "maperi", - "rsa.internal.data": "quunt", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ntNeq", - "rsa.misc.action": [ - "Blocked", - "dtempo" - ], - "rsa.misc.category": "ipsu", - "rsa.misc.filter": "iqu", - "rsa.misc.reference_id": "tlaboree", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "mve", - "rsa.network.alias_host": [ - "dquia107.www.test" - ], - "rsa.threat.threat_category": "urExce", - "rsa.time.event_time": "2017-01-20T04:14:16.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "dquia107.www.test", - "service.type": "zscaler", - "source.bytes": 7680, - "source.ip": "10.88.172.34", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "html", - "url.fragment": "ulla", - "url.original": "https://api.example.com/ori/tconsect.html?ercit=eporroq#ulla", - "url.path": "/ori/tconsect.html", - "url.query": "ercit=eporroq", - "url.scheme": "https", - "user.name": "agnaaliq", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2017-02-03T11:16:50.000Z", - "destination.bytes": 7889, - "destination.ip": "10.130.241.232", - "event.action": "Allowed", - "event.code": "redol", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "inv ZSCALERNSS: time=rroq Feb 3 9:16:50 2017^^timezone=CT^^action=Allowed^^reason=unknown^^hostname=lloin4019.www.localhost^^protocol=igmp^^serverip=10.130.241.232^^url=https://api.example.org/rure/asiarchi.txt?loremeu=aturve#utfug^^urlcategory=aturQu^^urlclass=aaliq^^dlpdictionaries=mipsamvo^^dlpengine=eiusmod^^filetype=emoe^^threatcategory=uiinea^^threatclass=mnisiut^^pagerisk=avolu^^threatname=Except^^clientpublicIP=olup^^ClientIP=10.238.224.49^^location=asper^^refererURL=https://example.net/naal/equun.gif?mve=uia#iciad^^useragent=Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=mad^^user=onse^^event_id=redol^^clienttranstime=gnaa^^requestmethod=mod^^requestsize=5107^^requestversion=dtempori^^status=toditaut^^responsesize=7889^^responseversion=dexerc^^transactionsize=2302", - "event.timezone": "CT", - "file.type": "emoe", - "fileset.name": "zia", - "host.name": "lloin4019.www.localhost", - "http.request.referrer": "https://example.net/naal/equun.gif?mve=uia#iciad", - "input.type": "log", - "log.offset": 23507, - "network.bytes": 2302, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "lloin4019.www.localhost" - ], - "related.ip": [ - "10.130.241.232", - "10.238.224.49" - ], - "related.user": [ - "onse" - ], - "rsa.db.index": "aaliq", - "rsa.identity.user_dept": "mad", - "rsa.internal.data": "inv", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "mnisiut", - "rsa.misc.action": [ - "Allowed", - "mod" - ], - "rsa.misc.category": "uiinea", - "rsa.misc.filter": "aturQu", - "rsa.misc.reference_id": "redol", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "toditaut", - "rsa.network.alias_host": [ - "lloin4019.www.localhost" - ], - "rsa.threat.threat_category": "Except", - "rsa.time.event_time": "2017-02-03T11:16:50.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "lloin4019.www.localhost", - "service.type": "zscaler", - "source.bytes": 5107, - "source.ip": "10.238.224.49", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.org", - "url.extension": "txt", - "url.fragment": "utfug", - "url.original": "https://api.example.org/rure/asiarchi.txt?loremeu=aturve#utfug", - "url.path": "/rure/asiarchi.txt", - "url.query": "loremeu=aturve", - "url.scheme": "https", - "user.name": "onse", - "user_agent.device.name": "POCOPHONE F1", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-02-18T06:19:24.000Z", - "destination.bytes": 609, - "destination.ip": "10.115.53.31", - "event.action": "Allowed", - "event.code": "olorema", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "eprehend ZSCALERNSS: time=asnu Feb 18 4:19:24 2017^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=tamet6317.www.host^^protocol=igmp^^serverip=10.115.53.31^^url=https://example.com/emUte/molestia.htm?orroqu=elitsed#labore^^urlcategory=uela^^urlclass=ntexplic^^dlpdictionaries=uto^^dlpengine=iuntNequ^^filetype=esseq^^threatcategory=aincidun^^threatclass=quatD^^pagerisk=isqua^^threatname=uta^^clientpublicIP=emo^^ClientIP=10.2.67.127^^location=licaboN^^refererURL=https://mail.example.org/cupi/strude.htm?dunt=litsedq#nderiti^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=mdolore^^user=Cic^^event_id=olorema^^clienttranstime=mollita^^requestmethod=tatem^^requestsize=6156^^requestversion=aeab^^status=teur^^responsesize=609^^responseversion=inBC^^transactionsize=2622", - "event.timezone": "OMST", - "file.type": "esseq", - "fileset.name": "zia", - "host.name": "tamet6317.www.host", - "http.request.referrer": "https://mail.example.org/cupi/strude.htm?dunt=litsedq#nderiti", - "input.type": "log", - "log.offset": 24381, - "network.bytes": 2622, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tamet6317.www.host" - ], - "related.ip": [ - "10.115.53.31", - "10.2.67.127" - ], - "related.user": [ - "Cic" - ], - "rsa.db.index": "ntexplic", - "rsa.identity.user_dept": "mdolore", - "rsa.internal.data": "eprehend", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "quatD", - "rsa.misc.action": [ - "Allowed", - "tatem" - ], - "rsa.misc.category": "aincidun", - "rsa.misc.filter": "uela", - "rsa.misc.reference_id": "olorema", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "teur", - "rsa.network.alias_host": [ - "tamet6317.www.host" - ], - "rsa.threat.threat_category": "uta", - "rsa.time.event_time": "2017-02-18T06:19:24.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "tamet6317.www.host", - "service.type": "zscaler", - "source.bytes": 6156, - "source.ip": "10.2.67.127", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.com", - "url.extension": "htm", - "url.fragment": "labore", - "url.original": "https://example.com/emUte/molestia.htm?orroqu=elitsed#labore", - "url.path": "/emUte/molestia.htm", - "url.query": "orroqu=elitsed", - "url.scheme": "https", - "user.name": "Cic", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-03-04T13:21:59.000Z", - "destination.bytes": 5328, - "destination.ip": "10.204.214.251", - "event.action": "Allowed", - "event.code": "scipitl", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tur ZSCALERNSS: time=ictas Mar 4 11:21:59 2017^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=saquaea6344.www.invalid^^protocol=igmp^^serverip=10.204.214.251^^url=https://mail.example.net/repreh/plic.jpg?utlabo=tetur#tionula^^urlcategory=ritqu^^urlclass=ecatcupi^^dlpdictionaries=uamei^^dlpengine=undeomni^^filetype=tas^^threatcategory=autfugi^^threatclass=tasun^^pagerisk=duntutla^^threatname=ntium^^clientpublicIP=iration^^ClientIP=10.101.38.213^^location=orisni^^refererURL=https://example.org/modoc/boNem.gif?ssusci=animid#mpo^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=atuse^^user=ueipsa^^event_id=scipitl^^clienttranstime=eumi^^requestmethod=quasiarc^^requestsize=3487^^requestversion=leumiur^^status=tetura^^responsesize=5328^^responseversion=offici^^transactionsize=501", - "event.timezone": "OMST", - "file.type": "tas", - "fileset.name": "zia", - "host.name": "saquaea6344.www.invalid", - "http.request.referrer": "https://example.org/modoc/boNem.gif?ssusci=animid#mpo", - "input.type": "log", - "log.offset": 25254, - "network.bytes": 501, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "saquaea6344.www.invalid" - ], - "related.ip": [ - "10.101.38.213", - "10.204.214.251" - ], - "related.user": [ - "ueipsa" - ], - "rsa.db.index": "ecatcupi", - "rsa.identity.user_dept": "atuse", - "rsa.internal.data": "tur", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tasun", - "rsa.misc.action": [ - "Allowed", - "quasiarc" - ], - "rsa.misc.category": "autfugi", - "rsa.misc.filter": "ritqu", - "rsa.misc.reference_id": "scipitl", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "tetura", - "rsa.network.alias_host": [ - "saquaea6344.www.invalid" - ], - "rsa.threat.threat_category": "ntium", - "rsa.time.event_time": "2017-03-04T13:21:59.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "saquaea6344.www.invalid", - "service.type": "zscaler", - "source.bytes": 3487, - "source.ip": "10.101.38.213", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "jpg", - "url.fragment": "tionula", - "url.original": "https://mail.example.net/repreh/plic.jpg?utlabo=tetur#tionula", - "url.path": "/repreh/plic.jpg", - "url.query": "utlabo=tetur", - "url.scheme": "https", - "user.name": "ueipsa", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-03-18T08:24:33.000Z", - "destination.bytes": 2118, - "destination.ip": "10.18.226.72", - "event.action": "Allowed", - "event.code": "dquiaco", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "roquisqu ZSCALERNSS: time=edolorin Mar 18 6:24:33 2017^^timezone=GMT+02:00^^action=Allowed^^reason=failure^^hostname=utaliqu4248.www.localhost^^protocol=igmp^^serverip=10.18.226.72^^url=https://api.example.com/tcu/iatqu.jpg?quovo=urExcep#ema^^urlcategory=suntex^^urlclass=iacons^^dlpdictionaries=occaec^^dlpengine=acommodi^^filetype=essecill^^threatcategory=billoi^^threatclass=moles^^pagerisk=dipiscin^^threatname=olup^^clientpublicIP=aco^^ClientIP=10.101.85.169^^location=natu^^refererURL=https://internal.example.net/enim/Finibus.htm?mporainc=xea#taed^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=billo^^user=rroqu^^event_id=dquiaco^^clienttranstime=nibus^^requestmethod=vitaed^^requestsize=2352^^requestversion=ptasnula^^status=oru^^responsesize=2118^^responseversion=upt^^transactionsize=7879", - "event.timezone": "GMT+02:00", - "file.type": "essecill", - "fileset.name": "zia", - "host.name": "utaliqu4248.www.localhost", - "http.request.referrer": "https://internal.example.net/enim/Finibus.htm?mporainc=xea#taed", - "input.type": "log", - "log.offset": 26141, - "network.bytes": 7879, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "utaliqu4248.www.localhost" - ], - "related.ip": [ - "10.101.85.169", - "10.18.226.72" - ], - "related.user": [ - "rroqu" - ], - "rsa.db.index": "iacons", - "rsa.identity.user_dept": "billo", - "rsa.internal.data": "roquisqu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "moles", - "rsa.misc.action": [ - "Allowed", - "vitaed" - ], - "rsa.misc.category": "billoi", - "rsa.misc.filter": "suntex", - "rsa.misc.reference_id": "dquiaco", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "oru", - "rsa.network.alias_host": [ - "utaliqu4248.www.localhost" - ], - "rsa.threat.threat_category": "olup", - "rsa.time.event_time": "2017-03-18T08:24:33.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "utaliqu4248.www.localhost", - "service.type": "zscaler", - "source.bytes": 2352, - "source.ip": "10.101.85.169", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "jpg", - "url.fragment": "ema", - "url.original": "https://api.example.com/tcu/iatqu.jpg?quovo=urExcep#ema", - "url.path": "/tcu/iatqu.jpg", - "url.query": "quovo=urExcep", - "url.scheme": "https", - "user.name": "rroqu", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-04-02T03:27:07.000Z", - "destination.bytes": 7509, - "destination.ip": "10.87.100.240", - "event.action": "Allowed", - "event.code": "equep", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "eprehend ZSCALERNSS: time=rem Apr 2 1:27:07 2017^^timezone=GMT-07:00^^action=Allowed^^reason=unknown^^hostname=mdolore473.internal.test^^protocol=igmp^^serverip=10.87.100.240^^url=https://www5.example.com/apariatu/lorsita.gif?msequ=uat#lupta^^urlcategory=npr^^urlclass=etconsec^^dlpdictionaries=caboNem^^dlpengine=urExcept^^filetype=rumetMal^^threatcategory=oconse^^threatclass=mag^^pagerisk=tob^^threatname=dolores^^clientpublicIP=equamnih^^ClientIP=10.242.182.193^^location=itempo^^refererURL=https://mail.example.com/redol/ecillum.html?radipis=ctetu#orinrep^^useragent=Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=nder^^user=stenatus^^event_id=equep^^clienttranstime=ever^^requestmethod=tali^^requestsize=2124^^requestversion=erspi^^status=iqu^^responsesize=7509^^responseversion=incidid^^transactionsize=2617", - "event.timezone": "GMT-07:00", - "file.type": "rumetMal", - "fileset.name": "zia", - "host.name": "mdolore473.internal.test", - "http.request.referrer": "https://mail.example.com/redol/ecillum.html?radipis=ctetu#orinrep", - "input.type": "log", - "log.offset": 27035, - "network.bytes": 2617, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "mdolore473.internal.test" - ], - "related.ip": [ - "10.242.182.193", - "10.87.100.240" - ], - "related.user": [ - "stenatus" - ], - "rsa.db.index": "etconsec", - "rsa.identity.user_dept": "nder", - "rsa.internal.data": "eprehend", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "mag", - "rsa.misc.action": [ - "Allowed", - "tali" - ], - "rsa.misc.category": "oconse", - "rsa.misc.filter": "npr", - "rsa.misc.reference_id": "equep", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "iqu", - "rsa.network.alias_host": [ - "mdolore473.internal.test" - ], - "rsa.threat.threat_category": "dolores", - "rsa.time.event_time": "2017-04-02T03:27:07.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "mdolore473.internal.test", - "service.type": "zscaler", - "source.bytes": 2124, - "source.ip": "10.242.182.193", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.com", - "url.extension": "gif", - "url.fragment": "lupta", - "url.original": "https://www5.example.com/apariatu/lorsita.gif?msequ=uat#lupta", - "url.path": "/apariatu/lorsita.gif", - "url.query": "msequ=uat", - "url.scheme": "https", - "user.name": "stenatus", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-04-16T10:29:41.000Z", - "destination.bytes": 204, - "destination.ip": "10.229.242.223", - "event.action": "Blocked", - "event.code": "dexe", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "autemv ZSCALERNSS: time=emq Apr 16 8:29:41 2017^^timezone=GMT-07:00^^action=Blocked^^reason=failure^^hostname=tatio6513.www.invalid^^protocol=rdp^^serverip=10.229.242.223^^url=https://internal.example.net/ende/abor.jpg?riameaqu=ame#tesseq^^urlcategory=niam^^urlclass=pernat^^dlpdictionaries=rerepre^^dlpengine=nculpaq^^filetype=culpaqui^^threatcategory=tvolup^^threatclass=tdolore^^pagerisk=ventore^^threatname=red^^clientpublicIP=sinto^^ClientIP=10.80.57.247^^location=est^^refererURL=https://api.example.net/aev/inrepr.gif?iadese=nisiu#imad^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=ptatem^^user=itasp^^event_id=dexe^^clienttranstime=tat^^requestmethod=onproide^^requestsize=2737^^requestversion=cillumd^^status=riosa^^responsesize=204^^responseversion=aspernat^^transactionsize=2460", - "event.timezone": "GMT-07:00", - "file.type": "culpaqui", - "fileset.name": "zia", - "host.name": "tatio6513.www.invalid", - "http.request.referrer": "https://api.example.net/aev/inrepr.gif?iadese=nisiu#imad", - "input.type": "log", - "log.offset": 27937, - "network.bytes": 2460, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tatio6513.www.invalid" - ], - "related.ip": [ - "10.229.242.223", - "10.80.57.247" - ], - "related.user": [ - "itasp" - ], - "rsa.db.index": "pernat", - "rsa.identity.user_dept": "ptatem", - "rsa.internal.data": "autemv", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tdolore", - "rsa.misc.action": [ - "Blocked", - "onproide" - ], - "rsa.misc.category": "tvolup", - "rsa.misc.filter": "niam", - "rsa.misc.reference_id": "dexe", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "riosa", - "rsa.network.alias_host": [ - "tatio6513.www.invalid" - ], - "rsa.threat.threat_category": "red", - "rsa.time.event_time": "2017-04-16T10:29:41.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "tatio6513.www.invalid", - "service.type": "zscaler", - "source.bytes": 2737, - "source.ip": "10.80.57.247", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.net", - "url.extension": "jpg", - "url.fragment": "tesseq", - "url.original": "https://internal.example.net/ende/abor.jpg?riameaqu=ame#tesseq", - "url.path": "/ende/abor.jpg", - "url.query": "riameaqu=ame", - "url.scheme": "https", - "user.name": "itasp", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2017-04-30T05:32:16.000Z", - "destination.bytes": 6146, - "destination.ip": "10.193.66.155", - "event.action": "Allowed", - "event.code": "enim", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "caecat ZSCALERNSS: time=rautod Apr 30 3:32:16 2017^^timezone=PT^^action=Allowed^^reason=failure^^hostname=lapar1599.www.lan^^protocol=ipv6^^serverip=10.193.66.155^^url=https://example.com/ame/amvolu.txt?equaturv=lamc#mvolupta^^urlcategory=Utenima^^urlclass=iqua^^dlpdictionaries=luptat^^dlpengine=deriti^^filetype=sintocc^^threatcategory=cididu^^threatclass=uteir^^pagerisk=boree^^threatname=isn^^clientpublicIP=ulla^^ClientIP=10.106.77.138^^location=aconse^^refererURL=https://mail.example.net/tnonproi/squira.html?itation=veleum#piciatis^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=henderi^^user=iusmodt^^event_id=enim^^clienttranstime=emaperia^^requestmethod=Section^^requestsize=4329^^requestversion=iame^^status=orroquis^^responsesize=6146^^responseversion=tiumd^^transactionsize=6099", - "event.timezone": "PT", - "file.type": "sintocc", - "fileset.name": "zia", - "host.name": "lapar1599.www.lan", - "http.request.referrer": "https://mail.example.net/tnonproi/squira.html?itation=veleum#piciatis", - "input.type": "log", - "log.offset": 28899, - "network.bytes": 6099, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "lapar1599.www.lan" - ], - "related.ip": [ - "10.106.77.138", - "10.193.66.155" - ], - "related.user": [ - "iusmodt" - ], - "rsa.db.index": "iqua", - "rsa.identity.user_dept": "henderi", - "rsa.internal.data": "caecat", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "uteir", - "rsa.misc.action": [ - "Allowed", - "Section" - ], - "rsa.misc.category": "cididu", - "rsa.misc.filter": "Utenima", - "rsa.misc.reference_id": "enim", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "orroquis", - "rsa.network.alias_host": [ - "lapar1599.www.lan" - ], - "rsa.threat.threat_category": "isn", - "rsa.time.event_time": "2017-04-30T05:32:16.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "lapar1599.www.lan", - "service.type": "zscaler", - "source.bytes": 4329, - "source.ip": "10.106.77.138", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.com", - "url.extension": "txt", - "url.fragment": "mvolupta", - "url.original": "https://example.com/ame/amvolu.txt?equaturv=lamc#mvolupta", - "url.path": "/ame/amvolu.txt", - "url.query": "equaturv=lamc", - "url.scheme": "https", - "user.name": "iusmodt", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2017-05-14T12:34:50.000Z", - "destination.bytes": 3862, - "destination.ip": "10.236.230.136", - "event.action": "Allowed", - "event.code": "quira", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "mexer ZSCALERNSS: time=estla May 14 10:34:50 2017^^timezone=ET^^action=Allowed^^reason=success^^hostname=aquioff3853.www.localdomain^^protocol=udp^^serverip=10.236.230.136^^url=https://mail.example.org/uisnostr/reetdol.txt?ugi=niamquis#nisi^^urlcategory=emveleum^^urlclass=olup^^dlpdictionaries=nde^^dlpengine=abillo^^filetype=undeom^^threatcategory=emullamc^^threatclass=tec^^pagerisk=Nemo^^threatname=tutlabo^^clientpublicIP=mveleum^^ClientIP=10.54.159.1^^location=sBonorum^^refererURL=https://mail.example.net/quira/tassita.gif?oremi=ugitsedq#turmag^^useragent=Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=asnulapa^^user=mUteni^^event_id=quira^^clienttranstime=rror^^requestmethod=tatema^^requestsize=2446^^requestversion=loinve^^status=tatevel^^responsesize=3862^^responseversion=equu^^transactionsize=5373", - "event.timezone": "ET", - "file.type": "undeom", - "fileset.name": "zia", - "host.name": "aquioff3853.www.localdomain", - "http.request.referrer": "https://mail.example.net/quira/tassita.gif?oremi=ugitsedq#turmag", - "input.type": "log", - "log.offset": 29854, - "network.bytes": 5373, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "aquioff3853.www.localdomain" - ], - "related.ip": [ - "10.236.230.136", - "10.54.159.1" - ], - "related.user": [ - "mUteni" - ], - "rsa.db.index": "olup", - "rsa.identity.user_dept": "asnulapa", - "rsa.internal.data": "mexer", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tec", - "rsa.misc.action": [ - "Allowed", - "tatema" - ], - "rsa.misc.category": "emullamc", - "rsa.misc.filter": "emveleum", - "rsa.misc.reference_id": "quira", - "rsa.misc.result": "success", - "rsa.misc.result_code": "tatevel", - "rsa.network.alias_host": [ - "aquioff3853.www.localdomain" - ], - "rsa.threat.threat_category": "tutlabo", - "rsa.time.event_time": "2017-05-14T12:34:50.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "aquioff3853.www.localdomain", - "service.type": "zscaler", - "source.bytes": 2446, - "source.ip": "10.54.159.1", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "txt", - "url.fragment": "nisi", - "url.original": "https://mail.example.org/uisnostr/reetdol.txt?ugi=niamquis#nisi", - "url.path": "/uisnostr/reetdol.txt", - "url.query": "ugi=niamquis", - "url.scheme": "https", - "user.name": "mUteni", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-05-29T07:37:24.000Z", - "destination.bytes": 4968, - "destination.ip": "10.49.242.174", - "event.action": "Allowed", - "event.code": "rroqui", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "atae ZSCALERNSS: time=tetura May 29 5:37:24 2017^^timezone=OMST^^action=Allowed^^reason=success^^hostname=ura675.mail.localdomain^^protocol=ggp^^serverip=10.49.242.174^^url=https://api.example.com/radipis/cive.gif?orumSec=nisiuta#stiaecon^^urlcategory=dol^^urlclass=sumquiad^^dlpdictionaries=setquas^^dlpengine=minim^^filetype=oeni^^threatcategory=untutlab^^threatclass=tvolup^^pagerisk=consecte^^threatname=pteurs^^clientpublicIP=catcupi^^ClientIP=10.131.246.134^^location=tiaecon^^refererURL=https://api.example.com/amquisno/uido.gif?queporro=uid#snostrum^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=aconsequ^^user=umdolo^^event_id=rroqui^^clienttranstime=ursin^^requestmethod=utemvel^^requestsize=5325^^requestversion=atu^^status=iusm^^responsesize=4968^^responseversion=laudanti^^transactionsize=16", - "event.timezone": "OMST", - "file.type": "oeni", - "fileset.name": "zia", - "host.name": "ura675.mail.localdomain", - "http.request.referrer": "https://api.example.com/amquisno/uido.gif?queporro=uid#snostrum", - "input.type": "log", - "log.offset": 30815, - "network.bytes": 16, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ura675.mail.localdomain" - ], - "related.ip": [ - "10.131.246.134", - "10.49.242.174" - ], - "related.user": [ - "umdolo" - ], - "rsa.db.index": "sumquiad", - "rsa.identity.user_dept": "aconsequ", - "rsa.internal.data": "atae", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tvolup", - "rsa.misc.action": [ - "Allowed", - "utemvel" - ], - "rsa.misc.category": "untutlab", - "rsa.misc.filter": "dol", - "rsa.misc.reference_id": "rroqui", - "rsa.misc.result": "success", - "rsa.misc.result_code": "iusm", - "rsa.network.alias_host": [ - "ura675.mail.localdomain" - ], - "rsa.threat.threat_category": "pteurs", - "rsa.time.event_time": "2017-05-29T07:37:24.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "ura675.mail.localdomain", - "service.type": "zscaler", - "source.bytes": 5325, - "source.ip": "10.131.246.134", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "gif", - "url.fragment": "stiaecon", - "url.original": "https://api.example.com/radipis/cive.gif?orumSec=nisiuta#stiaecon", - "url.path": "/radipis/cive.gif", - "url.query": "orumSec=nisiuta", - "url.scheme": "https", - "user.name": "umdolo", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2017-06-12T14:39:58.000Z", - "destination.bytes": 1046, - "destination.ip": "10.142.120.198", - "event.action": "Blocked", - "event.code": "ido", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "rere ZSCALERNSS: time=cta Jun 12 12:39:58 2017^^timezone=CT^^action=Blocked^^reason=unknown^^hostname=iamea478.www5.host^^protocol=ipv6-icmp^^serverip=10.142.120.198^^url=https://mail.example.org/oin/itseddoe.html?citati=uamei#eursinto^^urlcategory=litesse^^urlclass=fugiatn^^dlpdictionaries=uaeabi^^dlpengine=aaliq^^filetype=nat^^threatcategory=uovolupt^^threatclass=ende^^pagerisk=orumSe^^threatname=dolor^^clientpublicIP=isiut^^ClientIP=10.166.10.42^^location=emulla^^refererURL=https://www.example.com/itae/dtempo.html?etMaloru=lmo#iquidex^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=uamqu^^user=olori^^event_id=ido^^clienttranstime=mcorpor^^requestmethod=doconse^^requestsize=2522^^requestversion=emUte^^status=iusmodi^^responsesize=1046^^responseversion=tura^^transactionsize=6695", - "event.timezone": "CT", - "file.type": "nat", - "fileset.name": "zia", - "host.name": "iamea478.www5.host", - "http.request.referrer": "https://www.example.com/itae/dtempo.html?etMaloru=lmo#iquidex", - "input.type": "log", - "log.offset": 31783, - "network.bytes": 6695, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "iamea478.www5.host" - ], - "related.ip": [ - "10.142.120.198", - "10.166.10.42" - ], - "related.user": [ - "olori" - ], - "rsa.db.index": "fugiatn", - "rsa.identity.user_dept": "uamqu", - "rsa.internal.data": "rere", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ende", - "rsa.misc.action": [ - "Blocked", - "doconse" - ], - "rsa.misc.category": "uovolupt", - "rsa.misc.filter": "litesse", - "rsa.misc.reference_id": "ido", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "iusmodi", - "rsa.network.alias_host": [ - "iamea478.www5.host" - ], - "rsa.threat.threat_category": "dolor", - "rsa.time.event_time": "2017-06-12T14:39:58.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "iamea478.www5.host", - "service.type": "zscaler", - "source.bytes": 2522, - "source.ip": "10.166.10.42", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "html", - "url.fragment": "eursinto", - "url.original": "https://mail.example.org/oin/itseddoe.html?citati=uamei#eursinto", - "url.path": "/oin/itseddoe.html", - "url.query": "citati=uamei", - "url.scheme": "https", - "user.name": "olori", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-06-26T09:42:33.000Z", - "destination.bytes": 3520, - "destination.ip": "10.138.188.201", - "event.action": "Allowed", - "event.code": "rsitvol", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "equat ZSCALERNSS: time=aliquid Jun 26 7:42:33 2017^^timezone=GMT+02:00^^action=Allowed^^reason=unknown^^hostname=eaque6543.api.domain^^protocol=udp^^serverip=10.138.188.201^^url=https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS^^urlcategory=iciadese^^urlclass=riatur^^dlpdictionaries=oeni^^dlpengine=dol^^filetype=dol^^threatcategory=atur^^threatclass=issu^^pagerisk=identsu^^threatname=piscivel^^clientpublicIP=hend^^ClientIP=10.128.184.241^^location=aer^^refererURL=https://api.example.net/umd/sciveli.htm?tur=acon#Nemoenim^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=urau^^user=etur^^event_id=rsitvol^^clienttranstime=utali^^requestmethod=sed^^requestsize=6793^^requestversion=sec^^status=uid^^responsesize=3520^^responseversion=acom^^transactionsize=1142", - "event.timezone": "GMT+02:00", - "file.type": "dol", - "fileset.name": "zia", - "host.name": "eaque6543.api.domain", - "http.request.referrer": "https://api.example.net/umd/sciveli.htm?tur=acon#Nemoenim", - "input.type": "log", - "log.offset": 32670, - "network.bytes": 1142, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "eaque6543.api.domain" - ], - "related.ip": [ - "10.128.184.241", - "10.138.188.201" - ], - "related.user": [ - "etur" - ], - "rsa.db.index": "riatur", - "rsa.identity.user_dept": "urau", - "rsa.internal.data": "equat", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "issu", - "rsa.misc.action": [ - "Allowed", - "sed" - ], - "rsa.misc.category": "atur", - "rsa.misc.filter": "iciadese", - "rsa.misc.reference_id": "rsitvol", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "uid", - "rsa.network.alias_host": [ - "eaque6543.api.domain" - ], - "rsa.threat.threat_category": "piscivel", - "rsa.time.event_time": "2017-06-26T09:42:33.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "eaque6543.api.domain", - "service.type": "zscaler", - "source.bytes": 6793, - "source.ip": "10.128.184.241", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "html", - "url.fragment": "umS", - "url.original": "https://mail.example.com/eseruntm/lpaquiof.html?magnaal=uscip#umS", - "url.path": "/eseruntm/lpaquiof.html", - "url.query": "magnaal=uscip", - "url.scheme": "https", - "user.name": "etur", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-07-11T04:45:07.000Z", - "destination.bytes": 2990, - "destination.ip": "10.53.101.131", - "event.action": "Allowed", - "event.code": "itinvol", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ectob ZSCALERNSS: time=mrema Jul 11 2:45:07 2017^^timezone=CET^^action=Allowed^^reason=failure^^hostname=eufug1756.mail.corp^^protocol=ggp^^serverip=10.53.101.131^^url=https://example.net/snulap/enimadm.html?writte=sitvo#ine^^urlcategory=urerepre^^urlclass=asnulap^^dlpdictionaries=ipi^^dlpengine=idolorem^^filetype=exerci^^threatcategory=idata^^threatclass=ese^^pagerisk=mmodoco^^threatname=amni^^clientpublicIP=atnul^^ClientIP=10.213.57.165^^location=illumq^^refererURL=https://www5.example.org/ite/tasnul.txt?evitae=amvo#tnul^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ectetura^^user=isau^^event_id=itinvol^^clienttranstime=ten^^requestmethod=litanim^^requestsize=2135^^requestversion=orsitam^^status=modico^^responsesize=2990^^responseversion=itatio^^transactionsize=6735", - "event.timezone": "CET", - "file.type": "exerci", - "fileset.name": "zia", - "host.name": "eufug1756.mail.corp", - "http.request.referrer": "https://www5.example.org/ite/tasnul.txt?evitae=amvo#tnul", - "input.type": "log", - "log.offset": 33551, - "network.bytes": 6735, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "eufug1756.mail.corp" - ], - "related.ip": [ - "10.213.57.165", - "10.53.101.131" - ], - "related.user": [ - "isau" - ], - "rsa.db.index": "asnulap", - "rsa.identity.user_dept": "ectetura", - "rsa.internal.data": "ectob", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ese", - "rsa.misc.action": [ - "Allowed", - "litanim" - ], - "rsa.misc.category": "idata", - "rsa.misc.filter": "urerepre", - "rsa.misc.reference_id": "itinvol", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "modico", - "rsa.network.alias_host": [ - "eufug1756.mail.corp" - ], - "rsa.threat.threat_category": "amni", - "rsa.time.event_time": "2017-07-11T04:45:07.000Z", - "rsa.time.timezone": "CET", - "rsa.web.fqdn": "eufug1756.mail.corp", - "service.type": "zscaler", - "source.bytes": 2135, - "source.ip": "10.213.57.165", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.net", - "url.extension": "html", - "url.fragment": "ine", - "url.original": "https://example.net/snulap/enimadm.html?writte=sitvo#ine", - "url.path": "/snulap/enimadm.html", - "url.query": "writte=sitvo", - "url.scheme": "https", - "user.name": "isau", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-07-25T11:47:41.000Z", - "destination.bytes": 3601, - "destination.ip": "10.243.6.41", - "event.action": "Blocked", - "event.code": "ainc", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "riame ZSCALERNSS: time=riat Jul 25 9:47:41 2017^^timezone=GMT+02:00^^action=Blocked^^reason=unknown^^hostname=orp5697.www.invalid^^protocol=ggp^^serverip=10.243.6.41^^url=https://internal.example.org/etcon/onsequu.gif?Bonoru=madminim#ents^^urlcategory=emacc^^urlclass=emp^^dlpdictionaries=lamcola^^dlpengine=veli^^filetype=venia^^threatcategory=risni^^threatclass=idolores^^pagerisk=paria^^threatname=mmod^^clientpublicIP=iti^^ClientIP=10.55.81.14^^location=lorsitam^^refererURL=https://api.example.org/onpr/litseddo.gif?oremqu=idex#radip^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=tenim^^user=eiusmo^^event_id=ainc^^clienttranstime=miurerep^^requestmethod=lestia^^requestsize=3606^^requestversion=iduntu^^status=pisci^^responsesize=3601^^responseversion=nostrud^^transactionsize=203", - "event.timezone": "GMT+02:00", - "file.type": "venia", - "fileset.name": "zia", - "host.name": "orp5697.www.invalid", - "http.request.referrer": "https://api.example.org/onpr/litseddo.gif?oremqu=idex#radip", - "input.type": "log", - "log.offset": 34428, - "network.bytes": 203, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "orp5697.www.invalid" - ], - "related.ip": [ - "10.243.6.41", - "10.55.81.14" - ], - "related.user": [ - "eiusmo" - ], - "rsa.db.index": "emp", - "rsa.identity.user_dept": "tenim", - "rsa.internal.data": "riame", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "idolores", - "rsa.misc.action": [ - "Blocked", - "lestia" - ], - "rsa.misc.category": "risni", - "rsa.misc.filter": "emacc", - "rsa.misc.reference_id": "ainc", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "pisci", - "rsa.network.alias_host": [ - "orp5697.www.invalid" - ], - "rsa.threat.threat_category": "mmod", - "rsa.time.event_time": "2017-07-25T11:47:41.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "orp5697.www.invalid", - "service.type": "zscaler", - "source.bytes": 3606, - "source.ip": "10.55.81.14", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.org", - "url.extension": "gif", - "url.fragment": "ents", - "url.original": "https://internal.example.org/etcon/onsequu.gif?Bonoru=madminim#ents", - "url.path": "/etcon/onsequu.gif", - "url.query": "Bonoru=madminim", - "url.scheme": "https", - "user.name": "eiusmo", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2017-08-08T06:50:15.000Z", - "destination.bytes": 4241, - "destination.ip": "10.33.144.10", - "event.action": "Blocked", - "event.code": "labo", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ore ZSCALERNSS: time=esse Aug 8 4:50:15 2017^^timezone=PST^^action=Blocked^^reason=success^^hostname=pariatur7238.www5.invalid^^protocol=tcp^^serverip=10.33.144.10^^url=https://www.example.org/rur/itse.gif?pisciv=fugiatqu#seos^^urlcategory=exercita^^urlclass=edolori^^dlpdictionaries=eve^^dlpengine=tco^^filetype=tvol^^threatcategory=oluptate^^threatclass=lit^^pagerisk=santi^^threatname=ritati^^clientpublicIP=iciade^^ClientIP=10.202.224.79^^location=idolo^^refererURL=https://example.com/ptassita/caecatcu.txt?eturadip=olorsi#itseddo^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=seos^^user=rios^^event_id=labo^^clienttranstime=lpaquiof^^requestmethod=quu^^requestsize=2203^^requestversion=ntexpl^^status=abor^^responsesize=4241^^responseversion=enbyCi^^transactionsize=3813", - "event.timezone": "PST", - "file.type": "tvol", - "fileset.name": "zia", - "host.name": "pariatur7238.www5.invalid", - "http.request.referrer": "https://example.com/ptassita/caecatcu.txt?eturadip=olorsi#itseddo", - "input.type": "log", - "log.offset": 35335, - "network.bytes": 3813, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "pariatur7238.www5.invalid" - ], - "related.ip": [ - "10.202.224.79", - "10.33.144.10" - ], - "related.user": [ - "rios" - ], - "rsa.db.index": "edolori", - "rsa.identity.user_dept": "seos", - "rsa.internal.data": "ore", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "lit", - "rsa.misc.action": [ - "Blocked", - "quu" - ], - "rsa.misc.category": "oluptate", - "rsa.misc.filter": "exercita", - "rsa.misc.reference_id": "labo", - "rsa.misc.result": "success", - "rsa.misc.result_code": "abor", - "rsa.network.alias_host": [ - "pariatur7238.www5.invalid" - ], - "rsa.threat.threat_category": "ritati", - "rsa.time.event_time": "2017-08-08T06:50:15.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "pariatur7238.www5.invalid", - "service.type": "zscaler", - "source.bytes": 2203, - "source.ip": "10.202.224.79", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.org", - "url.extension": "gif", - "url.fragment": "seos", - "url.original": "https://www.example.org/rur/itse.gif?pisciv=fugiatqu#seos", - "url.path": "/rur/itse.gif", - "url.query": "pisciv=fugiatqu", - "url.scheme": "https", - "user.name": "rios", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-08-22T13:52:50.000Z", - "destination.bytes": 6317, - "destination.ip": "10.158.18.51", - "event.action": "Allowed", - "event.code": "exerci", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tat ZSCALERNSS: time=eufugia Aug 22 11:52:50 2017^^timezone=GMT-07:00^^action=Allowed^^reason=failure^^hostname=fficia2304.www5.home^^protocol=icmp^^serverip=10.158.18.51^^url=https://mail.example.com/qui/equeporr.jpg?itsedd=texpli#liquipex^^urlcategory=uisnos^^urlclass=quamqua^^dlpdictionaries=ntut^^dlpengine=mag^^filetype=meum^^threatcategory=mini^^threatclass=Loremip^^pagerisk=oreeu^^threatname=nvo^^clientpublicIP=iamqui^^ClientIP=10.20.124.138^^location=aqui^^refererURL=https://www.example.net/lpa/isn.htm?iat=ffic#siuta^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=aparia^^user=CSe^^event_id=exerci^^clienttranstime=inesciu^^requestmethod=quid^^requestsize=5452^^requestversion=emu^^status=orem^^responsesize=6317^^responseversion=ate^^transactionsize=4386", - "event.timezone": "GMT-07:00", - "file.type": "meum", - "fileset.name": "zia", - "host.name": "fficia2304.www5.home", - "http.request.referrer": "https://www.example.net/lpa/isn.htm?iat=ffic#siuta", - "input.type": "log", - "log.offset": 36210, - "network.bytes": 4386, - "network.protocol": "icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "fficia2304.www5.home" - ], - "related.ip": [ - "10.158.18.51", - "10.20.124.138" - ], - "related.user": [ - "CSe" - ], - "rsa.db.index": "quamqua", - "rsa.identity.user_dept": "aparia", - "rsa.internal.data": "tat", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "Loremip", - "rsa.misc.action": [ - "Allowed", - "quid" - ], - "rsa.misc.category": "mini", - "rsa.misc.filter": "uisnos", - "rsa.misc.reference_id": "exerci", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "orem", - "rsa.network.alias_host": [ - "fficia2304.www5.home" - ], - "rsa.threat.threat_category": "nvo", - "rsa.time.event_time": "2017-08-22T13:52:50.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "fficia2304.www5.home", - "service.type": "zscaler", - "source.bytes": 5452, - "source.ip": "10.20.124.138", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "jpg", - "url.fragment": "liquipex", - "url.original": "https://mail.example.com/qui/equeporr.jpg?itsedd=texpli#liquipex", - "url.path": "/qui/equeporr.jpg", - "url.query": "itsedd=texpli", - "url.scheme": "https", - "user.name": "CSe", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2017-09-06T08:55:24.000Z", - "destination.bytes": 1044, - "destination.ip": "10.134.128.27", - "event.action": "Allowed", - "event.code": "olore", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tqu ZSCALERNSS: time=eirur Sep 6 6:55:24 2017^^timezone=CT^^action=Allowed^^reason=unknown^^hostname=mquisnos7453.home^^protocol=igmp^^serverip=10.134.128.27^^url=https://api.example.net/lup/iumtotam.html?ipitlabo=userror#eacommo^^urlcategory=nderi^^urlclass=liqua^^dlpdictionaries=ariatur^^dlpengine=labo^^filetype=sautei^^threatcategory=ataevita^^threatclass=voluptas^^pagerisk=velill^^threatname=rspic^^clientpublicIP=orinrepr^^ClientIP=10.118.177.136^^location=borumSec^^refererURL=https://www5.example.org/snisiut/siar.txt?inB=orp#ender^^useragent=Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=rumSecti^^user=Utenima^^event_id=olore^^clienttranstime=orumS^^requestmethod=olor^^requestsize=6908^^requestversion=eursint^^status=orio^^responsesize=1044^^responseversion=iameaqu^^transactionsize=2429", - "event.timezone": "CT", - "file.type": "sautei", - "fileset.name": "zia", - "host.name": "mquisnos7453.home", - "http.request.referrer": "https://www5.example.org/snisiut/siar.txt?inB=orp#ender", - "input.type": "log", - "log.offset": 37074, - "network.bytes": 2429, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "mquisnos7453.home" - ], - "related.ip": [ - "10.118.177.136", - "10.134.128.27" - ], - "related.user": [ - "Utenima" - ], - "rsa.db.index": "liqua", - "rsa.identity.user_dept": "rumSecti", - "rsa.internal.data": "tqu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "voluptas", - "rsa.misc.action": [ - "Allowed", - "olor" - ], - "rsa.misc.category": "ataevita", - "rsa.misc.filter": "nderi", - "rsa.misc.reference_id": "olore", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "orio", - "rsa.network.alias_host": [ - "mquisnos7453.home" - ], - "rsa.threat.threat_category": "rspic", - "rsa.time.event_time": "2017-09-06T08:55:24.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "mquisnos7453.home", - "service.type": "zscaler", - "source.bytes": 6908, - "source.ip": "10.118.177.136", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.net", - "url.extension": "html", - "url.fragment": "eacommo", - "url.original": "https://api.example.net/lup/iumtotam.html?ipitlabo=userror#eacommo", - "url.path": "/lup/iumtotam.html", - "url.query": "ipitlabo=userror", - "url.scheme": "https", - "user.name": "Utenima", - "user_agent.device.name": "Meizu M6", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "77.0.3865.120" - }, - { - "@timestamp": "2017-09-20T03:57:58.000Z", - "destination.bytes": 3034, - "destination.ip": "10.68.8.143", - "event.action": "Allowed", - "event.code": "lorem", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "olu ZSCALERNSS: time=iameaque Sep 20 1:57:58 2017^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=aquio748.www.localhost^^protocol=igmp^^serverip=10.68.8.143^^url=https://example.org/onproide/uamnih.htm?tatisetq=uidolo#umdolore^^urlcategory=dmi^^urlclass=tam^^dlpdictionaries=oremip^^dlpengine=eufugi^^filetype=dunt^^threatcategory=ames^^threatclass=amni^^pagerisk=tatio^^threatname=amquisno^^clientpublicIP=modoc^^ClientIP=10.125.120.97^^location=uid^^refererURL=https://internal.example.com/onev/orsi.txt?oreseo=reprehen#itamet^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=idolo^^user=reet^^event_id=lorem^^clienttranstime=texplic^^requestmethod=edutp^^requestsize=911^^requestversion=assi^^status=eserun^^responsesize=3034^^responseversion=eniamqu^^transactionsize=1185", - "event.timezone": "OMST", - "file.type": "dunt", - "fileset.name": "zia", - "host.name": "aquio748.www.localhost", - "http.request.referrer": "https://internal.example.com/onev/orsi.txt?oreseo=reprehen#itamet", - "input.type": "log", - "log.offset": 38021, - "network.bytes": 1185, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "aquio748.www.localhost" - ], - "related.ip": [ - "10.125.120.97", - "10.68.8.143" - ], - "related.user": [ - "reet" - ], - "rsa.db.index": "tam", - "rsa.identity.user_dept": "idolo", - "rsa.internal.data": "olu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "amni", - "rsa.misc.action": [ - "Allowed", - "edutp" - ], - "rsa.misc.category": "ames", - "rsa.misc.filter": "dmi", - "rsa.misc.reference_id": "lorem", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "eserun", - "rsa.network.alias_host": [ - "aquio748.www.localhost" - ], - "rsa.threat.threat_category": "amquisno", - "rsa.time.event_time": "2017-09-20T03:57:58.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "aquio748.www.localhost", - "service.type": "zscaler", - "source.bytes": 911, - "source.ip": "10.125.120.97", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "htm", - "url.fragment": "umdolore", - "url.original": "https://example.org/onproide/uamnih.htm?tatisetq=uidolo#umdolore", - "url.path": "/onproide/uamnih.htm", - "url.query": "tatisetq=uidolo", - "url.scheme": "https", - "user.name": "reet", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2017-10-04T11:00:32.000Z", - "destination.bytes": 4982, - "destination.ip": "10.143.0.78", - "event.action": "Blocked", - "event.code": "atems", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tatevel ZSCALERNSS: time=midestl Oct 4 9:00:32 2017^^timezone=PST^^action=Blocked^^reason=unknown^^hostname=remagnam796.mail.corp^^protocol=rdp^^serverip=10.143.0.78^^url=https://www5.example.org/obeataev/umf.htm?moll=quaeabil#emip^^urlcategory=aturQu^^urlclass=itesse^^dlpdictionaries=iamqui^^dlpengine=quide^^filetype=aria^^threatcategory=inim^^threatclass=etdol^^pagerisk=Sed^^threatname=oremeumf^^clientpublicIP=lesti^^ClientIP=10.137.164.122^^location=enima^^refererURL=https://www5.example.net/ico/giatquo.htm?evi=tionula#accus^^useragent=Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=amnihil^^user=orissus^^event_id=atems^^clienttranstime=nimaveni^^requestmethod=mwrit^^requestsize=2923^^requestversion=itse^^status=officiad^^responsesize=4982^^responseversion=nimadmin^^transactionsize=5577", - "event.timezone": "PST", - "file.type": "aria", - "fileset.name": "zia", - "host.name": "remagnam796.mail.corp", - "http.request.referrer": "https://www5.example.net/ico/giatquo.htm?evi=tionula#accus", - "input.type": "log", - "log.offset": 38924, - "network.bytes": 5577, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "remagnam796.mail.corp" - ], - "related.ip": [ - "10.137.164.122", - "10.143.0.78" - ], - "related.user": [ - "orissus" - ], - "rsa.db.index": "itesse", - "rsa.identity.user_dept": "amnihil", - "rsa.internal.data": "tatevel", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "etdol", - "rsa.misc.action": [ - "Blocked", - "mwrit" - ], - "rsa.misc.category": "inim", - "rsa.misc.filter": "aturQu", - "rsa.misc.reference_id": "atems", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "officiad", - "rsa.network.alias_host": [ - "remagnam796.mail.corp" - ], - "rsa.threat.threat_category": "oremeumf", - "rsa.time.event_time": "2017-10-04T11:00:32.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "remagnam796.mail.corp", - "service.type": "zscaler", - "source.bytes": 2923, - "source.ip": "10.137.164.122", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.org", - "url.extension": "htm", - "url.fragment": "emip", - "url.original": "https://www5.example.org/obeataev/umf.htm?moll=quaeabil#emip", - "url.path": "/obeataev/umf.htm", - "url.query": "moll=quaeabil", - "url.scheme": "https", - "user.name": "orissus", - "user_agent.device.name": "Meizu M6", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "77.0.3865.120" - }, - { - "@timestamp": "2017-10-19T06:03:07.000Z", - "destination.bytes": 7556, - "destination.ip": "10.30.87.51", - "event.action": "Blocked", - "event.code": "rchit", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "quiavolu ZSCALERNSS: time=upta Oct 19 4:03:07 2017^^timezone=OMST^^action=Blocked^^reason=failure^^hostname=etdolore4227.internal.corp^^protocol=icmp^^serverip=10.30.87.51^^url=https://mail.example.org/consequa/eaqueip.gif?aevitaed=byCic#leumiur^^urlcategory=ptatemse^^urlclass=siarc^^dlpdictionaries=fdeFin^^dlpengine=eleumi^^filetype=edic^^threatcategory=udexerc^^threatclass=tatno^^pagerisk=isnisiut^^threatname=atatnon^^clientpublicIP=lica^^ClientIP=10.156.177.53^^location=Nequ^^refererURL=https://www.example.com/epo/rsit.txt?onorumet=ptatema#eavolup^^useragent=Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36^^department=rmagnido^^user=psaquaea^^event_id=rchit^^clienttranstime=psumq^^requestmethod=ptatev^^requestsize=6552^^requestversion=xerc^^status=ctetura^^responsesize=7556^^responseversion=tDuis^^transactionsize=3281", - "event.timezone": "OMST", - "file.type": "edic", - "fileset.name": "zia", - "host.name": "etdolore4227.internal.corp", - "http.request.referrer": "https://www.example.com/epo/rsit.txt?onorumet=ptatema#eavolup", - "input.type": "log", - "log.offset": 39868, - "network.bytes": 3281, - "network.protocol": "icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "etdolore4227.internal.corp" - ], - "related.ip": [ - "10.156.177.53", - "10.30.87.51" - ], - "related.user": [ - "psaquaea" - ], - "rsa.db.index": "siarc", - "rsa.identity.user_dept": "rmagnido", - "rsa.internal.data": "quiavolu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tatno", - "rsa.misc.action": [ - "Blocked", - "ptatev" - ], - "rsa.misc.category": "udexerc", - "rsa.misc.filter": "ptatemse", - "rsa.misc.reference_id": "rchit", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "ctetura", - "rsa.network.alias_host": [ - "etdolore4227.internal.corp" - ], - "rsa.threat.threat_category": "atatnon", - "rsa.time.event_time": "2017-10-19T06:03:07.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "etdolore4227.internal.corp", - "service.type": "zscaler", - "source.bytes": 6552, - "source.ip": "10.156.177.53", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "gif", - "url.fragment": "leumiur", - "url.original": "https://mail.example.org/consequa/eaqueip.gif?aevitaed=byCic#leumiur", - "url.path": "/consequa/eaqueip.gif", - "url.query": "aevitaed=byCic", - "url.scheme": "https", - "user.name": "psaquaea", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2017-11-02T13:05:41.000Z", - "destination.bytes": 470, - "destination.ip": "10.83.138.34", - "event.action": "Blocked", - "event.code": "inea", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tat ZSCALERNSS: time=equ Nov 2 11:05:41 2017^^timezone=GMT+02:00^^action=Blocked^^reason=unknown^^hostname=rors1935.api.domain^^protocol=udp^^serverip=10.83.138.34^^url=https://example.org/tmo/onofdeF.txt?oremip=its#uptasnul^^urlcategory=aliqui^^urlclass=datatnon^^dlpdictionaries=aedict^^dlpengine=niamqui^^filetype=usmodite^^threatcategory=tlabo^^threatclass=tatemse^^pagerisk=ntoccaec^^threatname=uamestqu^^clientpublicIP=mpor^^ClientIP=10.111.249.184^^location=ptatemU^^refererURL=https://example.org/rumSe/tatnonp.jpg?tlabore=idunt#expl^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=onsectet^^user=dentsunt^^event_id=inea^^clienttranstime=animid^^requestmethod=upta^^requestsize=313^^requestversion=onnumqua^^status=quioff^^responsesize=470^^responseversion=upt^^transactionsize=6017", - "event.timezone": "GMT+02:00", - "file.type": "usmodite", - "fileset.name": "zia", - "host.name": "rors1935.api.domain", - "http.request.referrer": "https://example.org/rumSe/tatnonp.jpg?tlabore=idunt#expl", - "input.type": "log", - "log.offset": 40778, - "network.bytes": 6017, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "rors1935.api.domain" - ], - "related.ip": [ - "10.111.249.184", - "10.83.138.34" - ], - "related.user": [ - "dentsunt" - ], - "rsa.db.index": "datatnon", - "rsa.identity.user_dept": "onsectet", - "rsa.internal.data": "tat", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tatemse", - "rsa.misc.action": [ - "Blocked", - "upta" - ], - "rsa.misc.category": "tlabo", - "rsa.misc.filter": "aliqui", - "rsa.misc.reference_id": "inea", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "quioff", - "rsa.network.alias_host": [ - "rors1935.api.domain" - ], - "rsa.threat.threat_category": "uamestqu", - "rsa.time.event_time": "2017-11-02T13:05:41.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "rors1935.api.domain", - "service.type": "zscaler", - "source.bytes": 313, - "source.ip": "10.111.249.184", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "txt", - "url.fragment": "uptasnul", - "url.original": "https://example.org/tmo/onofdeF.txt?oremip=its#uptasnul", - "url.path": "/tmo/onofdeF.txt", - "url.query": "oremip=its", - "url.scheme": "https", - "user.name": "dentsunt", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2017-11-16T08:08:15.000Z", - "destination.bytes": 7810, - "destination.ip": "10.141.195.13", - "event.action": "Allowed", - "event.code": "tautfugi", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "nvol ZSCALERNSS: time=dtemp Nov 16 6:08:15 2017^^timezone=PT^^action=Allowed^^reason=unknown^^hostname=idexeac1655.internal.test^^protocol=ipv6^^serverip=10.141.195.13^^url=https://mail.example.com/orsitvol/ntor.htm?itqu=minimav#smodtem^^urlcategory=roquisqu^^urlclass=ariat^^dlpdictionaries=midestl^^dlpengine=quatu^^filetype=avolu^^threatcategory=teturad^^threatclass=itesse^^pagerisk=expl^^threatname=essecill^^clientpublicIP=totamre^^ClientIP=10.180.150.47^^location=orsitv^^refererURL=https://internal.example.net/uisaute/uun.jpg?olupt=nemulla#asp^^useragent=Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90^^department=ncul^^user=taliq^^event_id=tautfugi^^clienttranstime=fdeFinib^^requestmethod=uip^^requestsize=3940^^requestversion=sectetur^^status=edquian^^responsesize=7810^^responseversion=turQuis^^transactionsize=4046", - "event.timezone": "PT", - "file.type": "avolu", - "fileset.name": "zia", - "host.name": "idexeac1655.internal.test", - "http.request.referrer": "https://internal.example.net/uisaute/uun.jpg?olupt=nemulla#asp", - "input.type": "log", - "log.offset": 41820, - "network.bytes": 4046, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "idexeac1655.internal.test" - ], - "related.ip": [ - "10.141.195.13", - "10.180.150.47" - ], - "related.user": [ - "taliq" - ], - "rsa.db.index": "ariat", - "rsa.identity.user_dept": "ncul", - "rsa.internal.data": "nvol", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "itesse", - "rsa.misc.action": [ - "Allowed", - "uip" - ], - "rsa.misc.category": "teturad", - "rsa.misc.filter": "roquisqu", - "rsa.misc.reference_id": "tautfugi", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "edquian", - "rsa.network.alias_host": [ - "idexeac1655.internal.test" - ], - "rsa.threat.threat_category": "essecill", - "rsa.time.event_time": "2017-11-16T08:08:15.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "idexeac1655.internal.test", - "service.type": "zscaler", - "source.bytes": 3940, - "source.ip": "10.180.150.47", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "htm", - "url.fragment": "smodtem", - "url.original": "https://mail.example.com/orsitvol/ntor.htm?itqu=minimav#smodtem", - "url.path": "/orsitvol/ntor.htm", - "url.query": "itqu=minimav", - "url.scheme": "https", - "user.name": "taliq", - "user_agent.device.name": "U20", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "44.0.2403.147" - }, - { - "@timestamp": "2017-12-01T03:10:49.000Z", - "destination.bytes": 2266, - "destination.ip": "10.166.195.20", - "event.action": "Allowed", - "event.code": "ceroinB", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "uames ZSCALERNSS: time=tconsec Dec 1 1:10:49 2017^^timezone=GMT-07:00^^action=Allowed^^reason=failure^^hostname=laboree3880.api.invalid^^protocol=rdp^^serverip=10.166.195.20^^url=https://internal.example.org/rumexe/xerci.gif?olor=quiav#gna^^urlcategory=Nem^^urlclass=tdolorem^^dlpdictionaries=eacomm^^dlpengine=upidata^^filetype=ici^^threatcategory=usant^^threatclass=mipsumq^^pagerisk=ident^^threatname=nimide^^clientpublicIP=quelaud^^ClientIP=10.255.40.12^^location=rro^^refererURL=https://api.example.com/nimv/emeu.htm?rem=tseddoei#teursint^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=remagnaa^^user=lamcolab^^event_id=ceroinB^^clienttranstime=umqui^^requestmethod=citation^^requestsize=7073^^requestversion=mcorpori^^status=orisn^^responsesize=2266^^responseversion=etMalor^^transactionsize=7800", - "event.timezone": "GMT-07:00", - "file.type": "ici", - "fileset.name": "zia", - "host.name": "laboree3880.api.invalid", - "http.request.referrer": "https://api.example.com/nimv/emeu.htm?rem=tseddoei#teursint", - "input.type": "log", - "log.offset": 42776, - "network.bytes": 7800, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "laboree3880.api.invalid" - ], - "related.ip": [ - "10.166.195.20", - "10.255.40.12" - ], - "related.user": [ - "lamcolab" - ], - "rsa.db.index": "tdolorem", - "rsa.identity.user_dept": "remagnaa", - "rsa.internal.data": "uames", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "mipsumq", - "rsa.misc.action": [ - "Allowed", - "citation" - ], - "rsa.misc.category": "usant", - "rsa.misc.filter": "Nem", - "rsa.misc.reference_id": "ceroinB", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "orisn", - "rsa.network.alias_host": [ - "laboree3880.api.invalid" - ], - "rsa.threat.threat_category": "nimide", - "rsa.time.event_time": "2017-12-01T03:10:49.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "laboree3880.api.invalid", - "service.type": "zscaler", - "source.bytes": 7073, - "source.ip": "10.255.40.12", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.org", - "url.extension": "gif", - "url.fragment": "gna", - "url.original": "https://internal.example.org/rumexe/xerci.gif?olor=quiav#gna", - "url.path": "/rumexe/xerci.gif", - "url.query": "olor=quiav", - "url.scheme": "https", - "user.name": "lamcolab", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2017-12-15T10:13:24.000Z", - "destination.bytes": 5091, - "destination.ip": "10.22.122.43", - "event.action": "Blocked", - "event.code": "mexer", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "cta ZSCALERNSS: time=ercitat Dec 15 8:13:24 2017^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=tecto708.www5.example^^protocol=rdp^^serverip=10.22.122.43^^url=https://example.org/tvolu/dutper.html?nbyCicer=scipit#equuntu^^urlcategory=quamni^^urlclass=turveli^^dlpdictionaries=isciv^^dlpengine=natus^^filetype=boreet^^threatcategory=luptasnu^^threatclass=ento^^pagerisk=snostr^^threatname=udexerc^^clientpublicIP=ovolupta^^ClientIP=10.100.143.226^^location=ametcon^^refererURL=https://internal.example.net/ecillu/quovol.html?ctasu=irat#sitame^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=ueporroq^^user=ute^^event_id=mexer^^clienttranstime=iam^^requestmethod=Bonoru^^requestsize=1396^^requestversion=ntutlab^^status=rumSecti^^responsesize=5091^^responseversion=gnama^^transactionsize=7815", - "event.timezone": "PT", - "file.type": "boreet", - "fileset.name": "zia", - "host.name": "tecto708.www5.example", - "http.request.referrer": "https://internal.example.net/ecillu/quovol.html?ctasu=irat#sitame", - "input.type": "log", - "log.offset": 43645, - "network.bytes": 7815, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tecto708.www5.example" - ], - "related.ip": [ - "10.100.143.226", - "10.22.122.43" - ], - "related.user": [ - "ute" - ], - "rsa.db.index": "turveli", - "rsa.identity.user_dept": "ueporroq", - "rsa.internal.data": "cta", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ento", - "rsa.misc.action": [ - "Blocked", - "Bonoru" - ], - "rsa.misc.category": "luptasnu", - "rsa.misc.filter": "quamni", - "rsa.misc.reference_id": "mexer", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "rumSecti", - "rsa.network.alias_host": [ - "tecto708.www5.example" - ], - "rsa.threat.threat_category": "udexerc", - "rsa.time.event_time": "2017-12-15T10:13:24.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "tecto708.www5.example", - "service.type": "zscaler", - "source.bytes": 1396, - "source.ip": "10.100.143.226", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "html", - "url.fragment": "equuntu", - "url.original": "https://example.org/tvolu/dutper.html?nbyCicer=scipit#equuntu", - "url.path": "/tvolu/dutper.html", - "url.query": "nbyCicer=scipit", - "url.scheme": "https", - "user.name": "ute", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2017-12-29T05:15:58.000Z", - "destination.bytes": 7456, - "destination.ip": "10.119.53.68", - "event.action": "Blocked", - "event.code": "illum", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tesse ZSCALERNSS: time=olupta Dec 29 3:15:58 2017^^timezone=GMT+02:00^^action=Blocked^^reason=success^^hostname=ine3181.www.invalid^^protocol=ipv6-icmp^^serverip=10.119.53.68^^url=https://www.example.com/uiavo/uisaut.htm?paq=uianon#nul^^urlcategory=onse^^urlclass=sitam^^dlpdictionaries=inibusBo^^dlpengine=illoin^^filetype=emUtenim^^threatcategory=ende^^threatclass=dexea^^pagerisk=aco^^threatname=sse^^clientpublicIP=ihilm^^ClientIP=10.121.9.5^^location=uptas^^refererURL=https://www5.example.net/ons/unt.txt?ctetur=mvolupta#squame^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=mea^^user=ssec^^event_id=illum^^clienttranstime=eprehe^^requestmethod=tinvolup^^requestsize=497^^requestversion=tvol^^status=ptat^^responsesize=7456^^responseversion=tdolo^^transactionsize=1882", - "event.timezone": "GMT+02:00", - "file.type": "emUtenim", - "fileset.name": "zia", - "host.name": "ine3181.www.invalid", - "http.request.referrer": "https://www5.example.net/ons/unt.txt?ctetur=mvolupta#squame", - "input.type": "log", - "log.offset": 44575, - "network.bytes": 1882, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ine3181.www.invalid" - ], - "related.ip": [ - "10.119.53.68", - "10.121.9.5" - ], - "related.user": [ - "ssec" - ], - "rsa.db.index": "sitam", - "rsa.identity.user_dept": "mea", - "rsa.internal.data": "tesse", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "dexea", - "rsa.misc.action": [ - "Blocked", - "tinvolup" - ], - "rsa.misc.category": "ende", - "rsa.misc.filter": "onse", - "rsa.misc.reference_id": "illum", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ptat", - "rsa.network.alias_host": [ - "ine3181.www.invalid" - ], - "rsa.threat.threat_category": "sse", - "rsa.time.event_time": "2017-12-29T05:15:58.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "ine3181.www.invalid", - "service.type": "zscaler", - "source.bytes": 497, - "source.ip": "10.121.9.5", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "nul", - "url.original": "https://www.example.com/uiavo/uisaut.htm?paq=uianon#nul", - "url.path": "/uiavo/uisaut.htm", - "url.query": "paq=uianon", - "url.scheme": "https", - "user.name": "ssec", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2018-01-12T12:18:32.000Z", - "destination.bytes": 1428, - "destination.ip": "10.237.0.173", - "event.action": "Blocked", - "event.code": "periam", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "eleumi ZSCALERNSS: time=equ Jan 12 10:18:32 2018^^timezone=GMT-07:00^^action=Blocked^^reason=unknown^^hostname=tsunt3403.www5.test^^protocol=udp^^serverip=10.237.0.173^^url=https://mail.example.com/uasiarch/Malor.jpg?iinea=snos#upt^^urlcategory=oremipsu^^urlclass=tMalor^^dlpdictionaries=oreetd^^dlpengine=lor^^filetype=oreeu^^threatcategory=taspe^^threatclass=eritqui^^pagerisk=atquovol^^threatname=evel^^clientpublicIP=edol^^ClientIP=10.31.153.177^^location=maccus^^refererURL=https://www.example.com/totamrem/aliqu.htm?sBonorum=moenimi#lor^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=tiset^^user=sci^^event_id=periam^^clienttranstime=fugiatnu^^requestmethod=dolor^^requestsize=4350^^requestversion=eumfu^^status=docons^^responsesize=1428^^responseversion=eumf^^transactionsize=6826", - "event.timezone": "GMT-07:00", - "file.type": "oreeu", - "fileset.name": "zia", - "host.name": "tsunt3403.www5.test", - "http.request.referrer": "https://www.example.com/totamrem/aliqu.htm?sBonorum=moenimi#lor", - "input.type": "log", - "log.offset": 45512, - "network.bytes": 6826, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tsunt3403.www5.test" - ], - "related.ip": [ - "10.237.0.173", - "10.31.153.177" - ], - "related.user": [ - "sci" - ], - "rsa.db.index": "tMalor", - "rsa.identity.user_dept": "tiset", - "rsa.internal.data": "eleumi", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "eritqui", - "rsa.misc.action": [ - "Blocked", - "dolor" - ], - "rsa.misc.category": "taspe", - "rsa.misc.filter": "oremipsu", - "rsa.misc.reference_id": "periam", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "docons", - "rsa.network.alias_host": [ - "tsunt3403.www5.test" - ], - "rsa.threat.threat_category": "evel", - "rsa.time.event_time": "2018-01-12T12:18:32.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "tsunt3403.www5.test", - "service.type": "zscaler", - "source.bytes": 4350, - "source.ip": "10.31.153.177", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "jpg", - "url.fragment": "upt", - "url.original": "https://mail.example.com/uasiarch/Malor.jpg?iinea=snos#upt", - "url.path": "/uasiarch/Malor.jpg", - "url.query": "iinea=snos", - "url.scheme": "https", - "user.name": "sci", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2018-01-27T07:21:06.000Z", - "destination.bytes": 7612, - "destination.ip": "10.243.182.229", - "event.action": "Allowed", - "event.code": "emporin", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "uasi ZSCALERNSS: time=maveniam Jan 27 5:21:06 2018^^timezone=PST^^action=Allowed^^reason=success^^hostname=pitl6126.www.localdomain^^protocol=ipv6-icmp^^serverip=10.243.182.229^^url=https://api.example.org/ntiumt/sumquia.jpg?lam=asnu#com^^urlcategory=rep^^urlclass=mveni^^dlpdictionaries=aquae^^dlpengine=olo^^filetype=edolori^^threatcategory=iaturE^^threatclass=epor^^pagerisk=umexer^^threatname=amnih^^clientpublicIP=tper^^ClientIP=10.229.102.140^^location=nulamc^^refererURL=https://www.example.org/etcon/ctobeat.txt?eddoei=lorumw#eca^^useragent=mobmail android 2.1.3.3150^^department=nimve^^user=duntut^^event_id=emporin^^clienttranstime=oreseosq^^requestmethod=etquasia^^requestsize=1800^^requestversion=tium^^status=nimip^^responsesize=7612^^responseversion=squamest^^transactionsize=3914", - "event.timezone": "PST", - "file.type": "edolori", - "fileset.name": "zia", - "host.name": "pitl6126.www.localdomain", - "http.request.referrer": "https://www.example.org/etcon/ctobeat.txt?eddoei=lorumw#eca", - "input.type": "log", - "log.offset": 46366, - "network.bytes": 3914, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "pitl6126.www.localdomain" - ], - "related.ip": [ - "10.229.102.140", - "10.243.182.229" - ], - "related.user": [ - "duntut" - ], - "rsa.db.index": "mveni", - "rsa.identity.user_dept": "nimve", - "rsa.internal.data": "uasi", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "epor", - "rsa.misc.action": [ - "Allowed", - "etquasia" - ], - "rsa.misc.category": "iaturE", - "rsa.misc.filter": "rep", - "rsa.misc.reference_id": "emporin", - "rsa.misc.result": "success", - "rsa.misc.result_code": "nimip", - "rsa.network.alias_host": [ - "pitl6126.www.localdomain" - ], - "rsa.threat.threat_category": "amnih", - "rsa.time.event_time": "2018-01-27T07:21:06.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "pitl6126.www.localdomain", - "service.type": "zscaler", - "source.bytes": 1800, - "source.ip": "10.229.102.140", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.org", - "url.extension": "jpg", - "url.fragment": "com", - "url.original": "https://api.example.org/ntiumt/sumquia.jpg?lam=asnu#com", - "url.path": "/ntiumt/sumquia.jpg", - "url.query": "lam=asnu", - "url.scheme": "https", - "user.name": "duntut", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2018-02-10T14:23:41.000Z", - "destination.bytes": 5763, - "destination.ip": "10.39.46.155", - "event.action": "Blocked", - "event.code": "BCSe", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "pteu ZSCALERNSS: time=uatD Feb 10 12:23:41 2018^^timezone=CEST^^action=Blocked^^reason=unknown^^hostname=remaper3297.internal.test^^protocol=ipv6-icmp^^serverip=10.39.46.155^^url=https://example.com/itsedqu/paq.jpg?hilmol=oluptate#todi^^urlcategory=emvel^^urlclass=pta^^dlpdictionaries=dolo^^dlpengine=itaedi^^filetype=hend^^threatcategory=remagna^^threatclass=adipisc^^pagerisk=aparia^^threatname=maliq^^clientpublicIP=ccusant^^ClientIP=10.120.138.109^^location=oidentsu^^refererURL=https://internal.example.org/onsec/dit.gif?lup=aeca#isau^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=sciveli^^user=picia^^event_id=BCSe^^clienttranstime=rem^^requestmethod=exer^^requestsize=447^^requestversion=remips^^status=lapari^^responsesize=5763^^responseversion=radipis^^transactionsize=3991", - "event.timezone": "CEST", - "file.type": "hend", - "fileset.name": "zia", - "host.name": "remaper3297.internal.test", - "http.request.referrer": "https://internal.example.org/onsec/dit.gif?lup=aeca#isau", - "input.type": "log", - "log.offset": 47161, - "network.bytes": 3991, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "remaper3297.internal.test" - ], - "related.ip": [ - "10.120.138.109", - "10.39.46.155" - ], - "related.user": [ - "picia" - ], - "rsa.db.index": "pta", - "rsa.identity.user_dept": "sciveli", - "rsa.internal.data": "pteu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "adipisc", - "rsa.misc.action": [ - "Blocked", - "exer" - ], - "rsa.misc.category": "remagna", - "rsa.misc.filter": "emvel", - "rsa.misc.reference_id": "BCSe", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "lapari", - "rsa.network.alias_host": [ - "remaper3297.internal.test" - ], - "rsa.threat.threat_category": "maliq", - "rsa.time.event_time": "2018-02-10T14:23:41.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.fqdn": "remaper3297.internal.test", - "service.type": "zscaler", - "source.bytes": 447, - "source.ip": "10.120.138.109", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.com", - "url.extension": "jpg", - "url.fragment": "todi", - "url.original": "https://example.com/itsedqu/paq.jpg?hilmol=oluptate#todi", - "url.path": "/itsedqu/paq.jpg", - "url.query": "hilmol=oluptate", - "url.scheme": "https", - "user.name": "picia", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-02-24T09:26:15.000Z", - "destination.bytes": 6740, - "destination.ip": "10.53.191.49", - "event.action": "Blocked", - "event.code": "idestl", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "luptate ZSCALERNSS: time=eritqu Feb 24 7:26:15 2018^^timezone=ET^^action=Blocked^^reason=failure^^hostname=tamr1693.api.home^^protocol=ipv6^^serverip=10.53.191.49^^url=https://api.example.org/remeum/etur.html?Quisa=quiav#ctionofd^^urlcategory=elit^^urlclass=sam^^dlpdictionaries=tMal^^dlpengine=porin^^filetype=metMal^^threatcategory=ciati^^threatclass=ecillum^^pagerisk=olor^^threatname=amei^^clientpublicIP=doconseq^^ClientIP=10.133.102.57^^location=CSed^^refererURL=https://example.net/wri/itame.html?dictasun=psa#lorese^^useragent=Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36^^department=ctobeat^^user=onsec^^event_id=idestl^^clienttranstime=litani^^requestmethod=emp^^requestsize=6397^^requestversion=onoru^^status=data^^responsesize=6740^^responseversion=eosqui^^transactionsize=5993", - "event.timezone": "ET", - "file.type": "metMal", - "fileset.name": "zia", - "host.name": "tamr1693.api.home", - "http.request.referrer": "https://example.net/wri/itame.html?dictasun=psa#lorese", - "input.type": "log", - "log.offset": 48041, - "network.bytes": 5993, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tamr1693.api.home" - ], - "related.ip": [ - "10.133.102.57", - "10.53.191.49" - ], - "related.user": [ - "onsec" - ], - "rsa.db.index": "sam", - "rsa.identity.user_dept": "ctobeat", - "rsa.internal.data": "luptate", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ecillum", - "rsa.misc.action": [ - "Blocked", - "emp" - ], - "rsa.misc.category": "ciati", - "rsa.misc.filter": "elit", - "rsa.misc.reference_id": "idestl", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "data", - "rsa.network.alias_host": [ - "tamr1693.api.home" - ], - "rsa.threat.threat_category": "amei", - "rsa.time.event_time": "2018-02-24T09:26:15.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "tamr1693.api.home", - "service.type": "zscaler", - "source.bytes": 6397, - "source.ip": "10.133.102.57", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.org", - "url.extension": "html", - "url.fragment": "ctionofd", - "url.original": "https://api.example.org/remeum/etur.html?Quisa=quiav#ctionofd", - "url.path": "/remeum/etur.html", - "url.query": "Quisa=quiav", - "url.scheme": "https", - "user.name": "onsec", - "user_agent.device.name": "Asus X01BDA", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "80.0.3987.162" - }, - { - "@timestamp": "2018-03-11T04:28:49.000Z", - "destination.bytes": 5521, - "destination.ip": "10.91.2.225", - "event.action": "Allowed", - "event.code": "tcu", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "uam ZSCALERNSS: time=quis Mar 11 2:28:49 2018^^timezone=PST^^action=Allowed^^reason=failure^^hostname=cia5990.api.localdomain^^protocol=icmp^^serverip=10.91.2.225^^url=https://internal.example.org/ree/itten.gif?rsp=imipsa#nostrum^^urlcategory=autodita^^urlclass=ntut^^dlpdictionaries=temveleu^^dlpengine=itametco^^filetype=etcons^^threatcategory=etco^^threatclass=iuntN^^pagerisk=utfugi^^threatname=ursintoc^^clientpublicIP=tio^^ClientIP=10.89.41.97^^location=trudex^^refererURL=https://www.example.net/lup/mipsamv.htm?qua=ionula#pexeaco^^useragent=Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36^^department=nderi^^user=tem^^event_id=tcu^^clienttranstime=eumiu^^requestmethod=nim^^requestsize=141^^requestversion=rehen^^status=uaeab^^responsesize=5521^^responseversion=serro^^transactionsize=1078", - "event.timezone": "PST", - "file.type": "etcons", - "fileset.name": "zia", - "host.name": "cia5990.api.localdomain", - "http.request.referrer": "https://www.example.net/lup/mipsamv.htm?qua=ionula#pexeaco", - "input.type": "log", - "log.offset": 48912, - "network.bytes": 1078, - "network.protocol": "icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "cia5990.api.localdomain" - ], - "related.ip": [ - "10.89.41.97", - "10.91.2.225" - ], - "related.user": [ - "tem" - ], - "rsa.db.index": "ntut", - "rsa.identity.user_dept": "nderi", - "rsa.internal.data": "uam", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "iuntN", - "rsa.misc.action": [ - "Allowed", - "nim" - ], - "rsa.misc.category": "etco", - "rsa.misc.filter": "autodita", - "rsa.misc.reference_id": "tcu", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "uaeab", - "rsa.network.alias_host": [ - "cia5990.api.localdomain" - ], - "rsa.threat.threat_category": "ursintoc", - "rsa.time.event_time": "2018-03-11T04:28:49.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "cia5990.api.localdomain", - "service.type": "zscaler", - "source.bytes": 141, - "source.ip": "10.89.41.97", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.org", - "url.extension": "gif", - "url.fragment": "nostrum", - "url.original": "https://internal.example.org/ree/itten.gif?rsp=imipsa#nostrum", - "url.path": "/ree/itten.gif", - "url.query": "rsp=imipsa", - "url.scheme": "https", - "user.name": "tem", - "user_agent.device.name": "Samsung SM-A260G", - "user_agent.name": "Chrome Mobile WebView", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.1.0; SM-A260G Build/OPR6; rv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Rocket/2.1.17(19420) Chrome/81.0.4044.138 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.1.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.1.0", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-03-25T11:31:24.000Z", - "destination.bytes": 4211, - "destination.ip": "10.221.20.165", - "event.action": "Allowed", - "event.code": "velites", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "eturadip ZSCALERNSS: time=amquaera Mar 25 9:31:24 2018^^timezone=PT^^action=Allowed^^reason=success^^hostname=riatu2467.lan^^protocol=tcp^^serverip=10.221.20.165^^url=https://www.example.net/ritquiin/reseo.jpg?ari=umtot#onemulla^^urlcategory=atquo^^urlclass=borio^^dlpdictionaries=equatD^^dlpengine=uidol^^filetype=inculpa^^threatcategory=ruredol^^threatclass=iadeseru^^pagerisk=loremagn^^threatname=acons^^clientpublicIP=nimadmi^^ClientIP=10.7.18.226^^location=umiurer^^refererURL=https://internal.example.com/oluptass/uidol.txt?ametcon=ofdeFini#tasnu^^useragent=Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=tionev^^user=uasiarch^^event_id=velites^^clienttranstime=uredolor^^requestmethod=epreh^^requestsize=5810^^requestversion=edquiaco^^status=sequatD^^responsesize=4211^^responseversion=naaliq^^transactionsize=4508", - "event.timezone": "PT", - "file.type": "inculpa", - "fileset.name": "zia", - "host.name": "riatu2467.lan", - "http.request.referrer": "https://internal.example.com/oluptass/uidol.txt?ametcon=ofdeFini#tasnu", - "input.type": "log", - "log.offset": 49836, - "network.bytes": 4508, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "riatu2467.lan" - ], - "related.ip": [ - "10.221.20.165", - "10.7.18.226" - ], - "related.user": [ - "uasiarch" - ], - "rsa.db.index": "borio", - "rsa.identity.user_dept": "tionev", - "rsa.internal.data": "eturadip", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "iadeseru", - "rsa.misc.action": [ - "Allowed", - "epreh" - ], - "rsa.misc.category": "ruredol", - "rsa.misc.filter": "atquo", - "rsa.misc.reference_id": "velites", - "rsa.misc.result": "success", - "rsa.misc.result_code": "sequatD", - "rsa.network.alias_host": [ - "riatu2467.lan" - ], - "rsa.threat.threat_category": "acons", - "rsa.time.event_time": "2018-03-25T11:31:24.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "riatu2467.lan", - "service.type": "zscaler", - "source.bytes": 5810, - "source.ip": "10.7.18.226", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.net", - "url.extension": "jpg", - "url.fragment": "onemulla", - "url.original": "https://www.example.net/ritquiin/reseo.jpg?ari=umtot#onemulla", - "url.path": "/ritquiin/reseo.jpg", - "url.query": "ari=umtot", - "url.scheme": "https", - "user.name": "uasiarch", - "user_agent.device.name": "Meizu M6", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 7.0; MEIZU M6 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 7.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.0", - "user_agent.version": "77.0.3865.120" - }, - { - "@timestamp": "2018-04-08T06:33:58.000Z", - "destination.bytes": 4580, - "destination.ip": "10.178.148.188", - "event.action": "Allowed", - "event.code": "rit", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "asiarc ZSCALERNSS: time=lor Apr 8 4:33:58 2018^^timezone=GMT+02:00^^action=Allowed^^reason=unknown^^hostname=pici1525.www5.corp^^protocol=ipv6^^serverip=10.178.148.188^^url=https://mail.example.com/dexe/nemul.jpg?yCicero=inimave#eavolupt^^urlcategory=uipe^^urlclass=ipsa^^dlpdictionaries=con^^dlpengine=eirured^^filetype=sequamn^^threatcategory=perspici^^threatclass=inimve^^pagerisk=aea^^threatname=emipsumd^^clientpublicIP=didun^^ClientIP=10.155.252.123^^location=asiarch^^refererURL=https://www5.example.net/utla/deomni.gif?fugi=nse#nesciu^^useragent=Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80^^department=ssequ^^user=inrepreh^^event_id=rit^^clienttranstime=velitess^^requestmethod=niam^^requestsize=6665^^requestversion=vel^^status=ionevo^^responsesize=4580^^responseversion=ptate^^transactionsize=52", - "event.timezone": "GMT+02:00", - "file.type": "sequamn", - "fileset.name": "zia", - "host.name": "pici1525.www5.corp", - "http.request.referrer": "https://www5.example.net/utla/deomni.gif?fugi=nse#nesciu", - "input.type": "log", - "log.offset": 50802, - "network.bytes": 52, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "pici1525.www5.corp" - ], - "related.ip": [ - "10.155.252.123", - "10.178.148.188" - ], - "related.user": [ - "inrepreh" - ], - "rsa.db.index": "ipsa", - "rsa.identity.user_dept": "ssequ", - "rsa.internal.data": "asiarc", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "inimve", - "rsa.misc.action": [ - "Allowed", - "niam" - ], - "rsa.misc.category": "perspici", - "rsa.misc.filter": "uipe", - "rsa.misc.reference_id": "rit", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "ionevo", - "rsa.network.alias_host": [ - "pici1525.www5.corp" - ], - "rsa.threat.threat_category": "emipsumd", - "rsa.time.event_time": "2018-04-08T06:33:58.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "pici1525.www5.corp", - "service.type": "zscaler", - "source.bytes": 6665, - "source.ip": "10.155.252.123", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "jpg", - "url.fragment": "eavolupt", - "url.original": "https://mail.example.com/dexe/nemul.jpg?yCicero=inimave#eavolupt", - "url.path": "/dexe/nemul.jpg", - "url.query": "yCicero=inimave", - "url.scheme": "https", - "user.name": "inrepreh", - "user_agent.device.name": "Android", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80", - "user_agent.os.full": "Android 5.1.1", - "user_agent.os.name": "Android", - "user_agent.os.version": "5.1.1", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-04-22T13:36:32.000Z", - "destination.bytes": 3723, - "destination.ip": "10.190.42.245", - "event.action": "Blocked", - "event.code": "aeab", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "umfu ZSCALERNSS: time=utla Apr 22 11:36:32 2018^^timezone=CET^^action=Blocked^^reason=failure^^hostname=dolo6418.internal.host^^protocol=ipv6-icmp^^serverip=10.190.42.245^^url=https://mail.example.org/caecat/uel.html?enim=umq#sistena^^urlcategory=qui^^urlclass=caboN^^dlpdictionaries=imipsam^^dlpengine=eumiu^^filetype=tatevel^^threatcategory=quela^^threatclass=uamquaer^^pagerisk=texplica^^threatname=enimi^^clientpublicIP=illum^^ClientIP=10.220.1.249^^location=iqu^^refererURL=https://api.example.org/eumfugia/reeufugi.gif?uredol=uptat#toditau^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=quuntur^^user=olup^^event_id=aeab^^clienttranstime=uradipis^^requestmethod=aerat^^requestsize=2910^^requestversion=uira^^status=eosqui^^responsesize=3723^^responseversion=quinesc^^transactionsize=4724", - "event.timezone": "CET", - "file.type": "tatevel", - "fileset.name": "zia", - "host.name": "dolo6418.internal.host", - "http.request.referrer": "https://api.example.org/eumfugia/reeufugi.gif?uredol=uptat#toditau", - "input.type": "log", - "log.offset": 51742, - "network.bytes": 4724, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "dolo6418.internal.host" - ], - "related.ip": [ - "10.190.42.245", - "10.220.1.249" - ], - "related.user": [ - "olup" - ], - "rsa.db.index": "caboN", - "rsa.identity.user_dept": "quuntur", - "rsa.internal.data": "umfu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "uamquaer", - "rsa.misc.action": [ - "Blocked", - "aerat" - ], - "rsa.misc.category": "quela", - "rsa.misc.filter": "qui", - "rsa.misc.reference_id": "aeab", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "eosqui", - "rsa.network.alias_host": [ - "dolo6418.internal.host" - ], - "rsa.threat.threat_category": "enimi", - "rsa.time.event_time": "2018-04-22T13:36:32.000Z", - "rsa.time.timezone": "CET", - "rsa.web.fqdn": "dolo6418.internal.host", - "service.type": "zscaler", - "source.bytes": 2910, - "source.ip": "10.220.1.249", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "html", - "url.fragment": "sistena", - "url.original": "https://mail.example.org/caecat/uel.html?enim=umq#sistena", - "url.path": "/caecat/uel.html", - "url.query": "enim=umq", - "url.scheme": "https", - "user.name": "olup", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2018-05-07T08:39:06.000Z", - "destination.bytes": 363, - "destination.ip": "10.112.190.154", - "event.action": "Allowed", - "event.code": "lab", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "aliqu ZSCALERNSS: time=sequine May 7 6:39:06 2018^^timezone=GMT-07:00^^action=Allowed^^reason=unknown^^hostname=imveni193.www5.host^^protocol=udp^^serverip=10.112.190.154^^url=https://mail.example.com/runtmoll/busBon.txt?ionev=vitaedi#rna^^urlcategory=cons^^urlclass=Except^^dlpdictionaries=lestiae^^dlpengine=iav^^filetype=umiure^^threatcategory=isiut^^threatclass=tin^^pagerisk=rporiss^^threatname=billoinv^^clientpublicIP=etconse^^ClientIP=10.55.38.153^^location=quido^^refererURL=https://example.org/uames/tla.gif?rch=psa#nreprehe^^useragent=Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g^^department=tvolup^^user=oremeu^^event_id=lab^^clienttranstime=lla^^requestmethod=urau^^requestsize=6127^^requestversion=upt^^status=equamni^^responsesize=363^^responseversion=eroi^^transactionsize=916", - "event.timezone": "GMT-07:00", - "file.type": "umiure", - "fileset.name": "zia", - "host.name": "imveni193.www5.host", - "http.request.referrer": "https://example.org/uames/tla.gif?rch=psa#nreprehe", - "input.type": "log", - "log.offset": 52602, - "network.bytes": 916, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "imveni193.www5.host" - ], - "related.ip": [ - "10.112.190.154", - "10.55.38.153" - ], - "related.user": [ - "oremeu" - ], - "rsa.db.index": "Except", - "rsa.identity.user_dept": "tvolup", - "rsa.internal.data": "aliqu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tin", - "rsa.misc.action": [ - "Allowed", - "urau" - ], - "rsa.misc.category": "isiut", - "rsa.misc.filter": "cons", - "rsa.misc.reference_id": "lab", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "equamni", - "rsa.network.alias_host": [ - "imveni193.www5.host" - ], - "rsa.threat.threat_category": "billoinv", - "rsa.time.event_time": "2018-05-07T08:39:06.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "imveni193.www5.host", - "service.type": "zscaler", - "source.bytes": 6127, - "source.ip": "10.55.38.153", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "txt", - "url.fragment": "rna", - "url.original": "https://mail.example.com/runtmoll/busBon.txt?ionev=vitaedi#rna", - "url.path": "/runtmoll/busBon.txt", - "url.query": "ionev=vitaedi", - "url.scheme": "https", - "user.name": "oremeu", - "user_agent.device.name": "XiaoMi Redmi 4X", - "user_agent.name": "MiuiBrowser", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 7.1.2; uz-uz; Redmi 4X Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.141 Mobile Safari/537.36 XiaoMi/MiuiBrowser/12.2.3-g", - "user_agent.os.full": "Android 7.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "7.1.2", - "user_agent.version": "12.2.3" - }, - { - "@timestamp": "2018-05-21T03:41:41.000Z", - "destination.bytes": 6578, - "destination.ip": "10.195.153.42", - "event.action": "Allowed", - "event.code": "rsit", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "mdo ZSCALERNSS: time=labore May 21 1:41:41 2018^^timezone=OMST^^action=Allowed^^reason=success^^hostname=ionu3320.api.localhost^^protocol=igmp^^serverip=10.195.153.42^^url=https://api.example.com/lits/tvolu.jpg?squir=gnaaliq#quam^^urlcategory=deriti^^urlclass=edictasu^^dlpdictionaries=eturadi^^dlpengine=umS^^filetype=noru^^threatcategory=aliquide^^threatclass=tDuisaut^^pagerisk=uel^^threatname=dexerc^^clientpublicIP=vol^^ClientIP=10.250.48.82^^location=iqu^^refererURL=https://api.example.com/quuntur/nihi.gif?oremagna=aqu#utemvele^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=serrorsi^^user=tsedquia^^event_id=rsit^^clienttranstime=quis^^requestmethod=upidatat^^requestsize=2982^^requestversion=nihilmo^^status=reetdo^^responsesize=6578^^responseversion=nidol^^transactionsize=4345", - "event.timezone": "OMST", - "file.type": "noru", - "fileset.name": "zia", - "host.name": "ionu3320.api.localhost", - "http.request.referrer": "https://api.example.com/quuntur/nihi.gif?oremagna=aqu#utemvele", - "input.type": "log", - "log.offset": 53539, - "network.bytes": 4345, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ionu3320.api.localhost" - ], - "related.ip": [ - "10.195.153.42", - "10.250.48.82" - ], - "related.user": [ - "tsedquia" - ], - "rsa.db.index": "edictasu", - "rsa.identity.user_dept": "serrorsi", - "rsa.internal.data": "mdo", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tDuisaut", - "rsa.misc.action": [ - "Allowed", - "upidatat" - ], - "rsa.misc.category": "aliquide", - "rsa.misc.filter": "deriti", - "rsa.misc.reference_id": "rsit", - "rsa.misc.result": "success", - "rsa.misc.result_code": "reetdo", - "rsa.network.alias_host": [ - "ionu3320.api.localhost" - ], - "rsa.threat.threat_category": "dexerc", - "rsa.time.event_time": "2018-05-21T03:41:41.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "ionu3320.api.localhost", - "service.type": "zscaler", - "source.bytes": 2982, - "source.ip": "10.250.48.82", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "jpg", - "url.fragment": "quam", - "url.original": "https://api.example.com/lits/tvolu.jpg?squir=gnaaliq#quam", - "url.path": "/lits/tvolu.jpg", - "url.query": "squir=gnaaliq", - "url.scheme": "https", - "user.name": "tsedquia", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-06-04T10:44:15.000Z", - "destination.bytes": 501, - "destination.ip": "10.252.164.230", - "event.action": "Blocked", - "event.code": "iumtota", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "hite ZSCALERNSS: time=umfugi Jun 4 8:44:15 2018^^timezone=CT^^action=Blocked^^reason=unknown^^hostname=remips1499.www.local^^protocol=ipv6^^serverip=10.252.164.230^^url=https://mail.example.net/loremi/queporro.jpg?ade=nihilmol#nder^^urlcategory=ano^^urlclass=rumexer^^dlpdictionaries=eab^^dlpengine=iaconseq^^filetype=tseddo^^threatcategory=diduntut^^threatclass=rroq^^pagerisk=olore^^threatname=eratvolu^^clientpublicIP=oconsequ^^ClientIP=10.60.52.219^^location=untNeq^^refererURL=https://internal.example.org/scipit/litess.jpg?ide=quunturm#quovo^^useragent=mobmail android 2.1.3.3150^^department=usan^^user=gnamali^^event_id=iumtota^^clienttranstime=issusci^^requestmethod=fdeFin^^requestsize=2871^^requestversion=psu^^status=strud^^responsesize=501^^responseversion=saute^^transactionsize=7421", - "event.timezone": "CT", - "file.type": "tseddo", - "fileset.name": "zia", - "host.name": "remips1499.www.local", - "http.request.referrer": "https://internal.example.org/scipit/litess.jpg?ide=quunturm#quovo", - "input.type": "log", - "log.offset": 54422, - "network.bytes": 7421, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "remips1499.www.local" - ], - "related.ip": [ - "10.252.164.230", - "10.60.52.219" - ], - "related.user": [ - "gnamali" - ], - "rsa.db.index": "rumexer", - "rsa.identity.user_dept": "usan", - "rsa.internal.data": "hite", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "rroq", - "rsa.misc.action": [ - "Blocked", - "fdeFin" - ], - "rsa.misc.category": "diduntut", - "rsa.misc.filter": "ano", - "rsa.misc.reference_id": "iumtota", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "strud", - "rsa.network.alias_host": [ - "remips1499.www.local" - ], - "rsa.threat.threat_category": "eratvolu", - "rsa.time.event_time": "2018-06-04T10:44:15.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "remips1499.www.local", - "service.type": "zscaler", - "source.bytes": 2871, - "source.ip": "10.60.52.219", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "jpg", - "url.fragment": "nder", - "url.original": "https://mail.example.net/loremi/queporro.jpg?ade=nihilmol#nder", - "url.path": "/loremi/queporro.jpg", - "url.query": "ade=nihilmol", - "url.scheme": "https", - "user.name": "gnamali", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "mobmail android 2.1.3.3150" - }, - { - "@timestamp": "2018-06-19T05:46:49.000Z", - "destination.bytes": 3365, - "destination.ip": "10.187.16.73", - "event.action": "Allowed", - "event.code": "ptate", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "iumto ZSCALERNSS: time=sequatu Jun 19 3:46:49 2018^^timezone=CT^^action=Allowed^^reason=success^^hostname=mdoloree96.domain^^protocol=ggp^^serverip=10.187.16.73^^url=https://api.example.com/nge/psum.gif?exerci=isnostru#iad^^urlcategory=ngelits^^urlclass=volupt^^dlpdictionaries=billoi^^dlpengine=reseo^^filetype=quam^^threatcategory=ulpaquio^^threatclass=dipisc^^pagerisk=litsed^^threatname=lumd^^clientpublicIP=tiaec^^ClientIP=10.122.102.156^^location=totamr^^refererURL=https://mail.example.org/aper/entor.txt?lumdol=edutper#utemve^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=metMa^^user=emoen^^event_id=ptate^^clienttranstime=mipsumqu^^requestmethod=turad^^requestsize=1704^^requestversion=billo^^status=doloremi^^responsesize=3365^^responseversion=iciatis^^transactionsize=2052", - "event.timezone": "CT", - "file.type": "quam", - "fileset.name": "zia", - "host.name": "mdoloree96.domain", - "http.request.referrer": "https://mail.example.org/aper/entor.txt?lumdol=edutper#utemve", - "input.type": "log", - "log.offset": 55219, - "network.bytes": 2052, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "mdoloree96.domain" - ], - "related.ip": [ - "10.122.102.156", - "10.187.16.73" - ], - "related.user": [ - "emoen" - ], - "rsa.db.index": "volupt", - "rsa.identity.user_dept": "metMa", - "rsa.internal.data": "iumto", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "dipisc", - "rsa.misc.action": [ - "Allowed", - "turad" - ], - "rsa.misc.category": "ulpaquio", - "rsa.misc.filter": "ngelits", - "rsa.misc.reference_id": "ptate", - "rsa.misc.result": "success", - "rsa.misc.result_code": "doloremi", - "rsa.network.alias_host": [ - "mdoloree96.domain" - ], - "rsa.threat.threat_category": "lumd", - "rsa.time.event_time": "2018-06-19T05:46:49.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "mdoloree96.domain", - "service.type": "zscaler", - "source.bytes": 1704, - "source.ip": "10.122.102.156", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "gif", - "url.fragment": "iad", - "url.original": "https://api.example.com/nge/psum.gif?exerci=isnostru#iad", - "url.path": "/nge/psum.gif", - "url.query": "exerci=isnostru", - "url.scheme": "https", - "user.name": "emoen", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-07-03T12:49:23.000Z", - "destination.bytes": 2104, - "destination.ip": "10.120.215.174", - "event.action": "Allowed", - "event.code": "ntexplic", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "cul ZSCALERNSS: time=tate Jul 3 10:49:23 2018^^timezone=CEST^^action=Allowed^^reason=failure^^hostname=iatnulap7662.internal.local^^protocol=igmp^^serverip=10.120.215.174^^url=https://internal.example.org/ddoeiusm/apa.txt?uptatemU=rem#onorumet^^urlcategory=iscivel^^urlclass=rinci^^dlpdictionaries=eacomm^^dlpengine=aboNem^^filetype=mull^^threatcategory=ent^^threatclass=rema^^pagerisk=mcol^^threatname=tion^^clientpublicIP=umquia^^ClientIP=10.248.108.55^^location=itation^^refererURL=https://internal.example.org/tat/uredo.html?essequam=imav#mtot^^useragent=Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16^^department=tionemu^^user=prehend^^event_id=ntexplic^^clienttranstime=rvelillu^^requestmethod=uatDu^^requestsize=4620^^requestversion=isu^^status=moll^^responsesize=2104^^responseversion=ota^^transactionsize=4562", - "event.timezone": "CEST", - "file.type": "mull", - "fileset.name": "zia", - "host.name": "iatnulap7662.internal.local", - "http.request.referrer": "https://internal.example.org/tat/uredo.html?essequam=imav#mtot", - "input.type": "log", - "log.offset": 56107, - "network.bytes": 4562, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "iatnulap7662.internal.local" - ], - "related.ip": [ - "10.120.215.174", - "10.248.108.55" - ], - "related.user": [ - "prehend" - ], - "rsa.db.index": "rinci", - "rsa.identity.user_dept": "tionemu", - "rsa.internal.data": "cul", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "rema", - "rsa.misc.action": [ - "Allowed", - "uatDu" - ], - "rsa.misc.category": "ent", - "rsa.misc.filter": "iscivel", - "rsa.misc.reference_id": "ntexplic", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "moll", - "rsa.network.alias_host": [ - "iatnulap7662.internal.local" - ], - "rsa.threat.threat_category": "tion", - "rsa.time.event_time": "2018-07-03T12:49:23.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.fqdn": "iatnulap7662.internal.local", - "service.type": "zscaler", - "source.bytes": 4620, - "source.ip": "10.248.108.55", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.org", - "url.extension": "txt", - "url.fragment": "onorumet", - "url.original": "https://internal.example.org/ddoeiusm/apa.txt?uptatemU=rem#onorumet", - "url.path": "/ddoeiusm/apa.txt", - "url.query": "uptatemU=rem", - "url.scheme": "https", - "user.name": "prehend", - "user_agent.device.name": "Generic Smartphone", - "user_agent.name": "Opera Mini", - "user_agent.original": "Opera/9.80 (Series 60; Opera Mini/7.1.32444/174.101; U; ru) Presto/2.12.423 Version/12.16", - "user_agent.os.name": "Symbian OS", - "user_agent.version": "7.1.32444" - }, - { - "@timestamp": "2018-07-17T07:51:58.000Z", - "destination.bytes": 5410, - "destination.ip": "10.51.161.245", - "event.action": "Allowed", - "event.code": "suntex", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "eniamq ZSCALERNSS: time=aloru Jul 17 5:51:58 2018^^timezone=PT^^action=Allowed^^reason=success^^hostname=sBonoru1929.example^^protocol=ggp^^serverip=10.51.161.245^^url=https://www5.example.net/yCice/uinesci.htm?taevitae=dminimv#quam^^urlcategory=saute^^urlclass=umdol^^dlpdictionaries=rerepr^^dlpengine=ipiscin^^filetype=trudexe^^threatcategory=qua^^threatclass=modit^^pagerisk=tatione^^threatname=aedicta^^clientpublicIP=squamest^^ClientIP=10.15.254.181^^location=emipsum^^refererURL=https://example.com/eFini/atDuisa.jpg?mips=dolo#reeufu^^useragent=Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61^^department=adipis^^user=abo^^event_id=suntex^^clienttranstime=uptatema^^requestmethod=uteiru^^requestsize=4600^^requestversion=Cicero^^status=ven^^responsesize=5410^^responseversion=ficia^^transactionsize=7526", - "event.timezone": "PT", - "file.type": "trudexe", - "fileset.name": "zia", - "host.name": "sBonoru1929.example", - "http.request.referrer": "https://example.com/eFini/atDuisa.jpg?mips=dolo#reeufu", - "input.type": "log", - "log.offset": 56969, - "network.bytes": 7526, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "sBonoru1929.example" - ], - "related.ip": [ - "10.15.254.181", - "10.51.161.245" - ], - "related.user": [ - "abo" - ], - "rsa.db.index": "umdol", - "rsa.identity.user_dept": "adipis", - "rsa.internal.data": "eniamq", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "modit", - "rsa.misc.action": [ - "Allowed", - "uteiru" - ], - "rsa.misc.category": "qua", - "rsa.misc.filter": "saute", - "rsa.misc.reference_id": "suntex", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ven", - "rsa.network.alias_host": [ - "sBonoru1929.example" - ], - "rsa.threat.threat_category": "aedicta", - "rsa.time.event_time": "2018-07-17T07:51:58.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "sBonoru1929.example", - "service.type": "zscaler", - "source.bytes": 4600, - "source.ip": "10.15.254.181", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.net", - "url.extension": "htm", - "url.fragment": "quam", - "url.original": "https://www5.example.net/yCice/uinesci.htm?taevitae=dminimv#quam", - "url.path": "/yCice/uinesci.htm", - "url.query": "taevitae=dminimv", - "url.scheme": "https", - "user.name": "abo", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2018-08-01T14:54:32.000Z", - "destination.bytes": 6628, - "destination.ip": "10.7.152.238", - "event.action": "Blocked", - "event.code": "scipi", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "deFinibu ZSCALERNSS: time=iaecons Aug 1 12:54:32 2018^^timezone=ET^^action=Blocked^^reason=success^^hostname=onorumet4871.lan^^protocol=ipv6^^serverip=10.7.152.238^^url=https://api.example.com/itinvolu/adeserun.txt?tinv=Utenima#nse^^urlcategory=umq^^urlclass=enim^^dlpdictionaries=oreve^^dlpengine=metco^^filetype=xercita^^threatcategory=atev^^threatclass=vento^^pagerisk=litsed^^threatname=ciun^^clientpublicIP=rehender^^ClientIP=10.129.66.196^^location=mmodicon^^refererURL=https://api.example.com/tqu/emips.gif?tinvolu=ptat#amquisn^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=dol^^user=equamn^^event_id=scipi^^clienttranstime=rem^^requestmethod=reh^^requestsize=3604^^requestversion=gnama^^status=ursintoc^^responsesize=6628^^responseversion=ction^^transactionsize=491", - "event.timezone": "ET", - "file.type": "xercita", - "fileset.name": "zia", - "host.name": "onorumet4871.lan", - "http.request.referrer": "https://api.example.com/tqu/emips.gif?tinvolu=ptat#amquisn", - "input.type": "log", - "log.offset": 57916, - "network.bytes": 491, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "onorumet4871.lan" - ], - "related.ip": [ - "10.129.66.196", - "10.7.152.238" - ], - "related.user": [ - "equamn" - ], - "rsa.db.index": "enim", - "rsa.identity.user_dept": "dol", - "rsa.internal.data": "deFinibu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "vento", - "rsa.misc.action": [ - "Blocked", - "reh" - ], - "rsa.misc.category": "atev", - "rsa.misc.filter": "umq", - "rsa.misc.reference_id": "scipi", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ursintoc", - "rsa.network.alias_host": [ - "onorumet4871.lan" - ], - "rsa.threat.threat_category": "ciun", - "rsa.time.event_time": "2018-08-01T14:54:32.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "onorumet4871.lan", - "service.type": "zscaler", - "source.bytes": 3604, - "source.ip": "10.129.66.196", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.com", - "url.extension": "txt", - "url.fragment": "nse", - "url.original": "https://api.example.com/itinvolu/adeserun.txt?tinv=Utenima#nse", - "url.path": "/itinvolu/adeserun.txt", - "url.query": "tinv=Utenima", - "url.scheme": "https", - "user.name": "equamn", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2018-08-15T09:57:06.000Z", - "destination.bytes": 4116, - "destination.ip": "10.29.162.157", - "event.action": "Blocked", - "event.code": "remquela", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "siuta ZSCALERNSS: time=atcu Aug 15 7:57:06 2018^^timezone=PST^^action=Blocked^^reason=success^^hostname=onproi4354.www5.invalid^^protocol=ggp^^serverip=10.29.162.157^^url=https://www.example.org/sci/isquames.gif?tlabor=itecto#loreeuf^^urlcategory=orainci^^urlclass=orese^^dlpdictionaries=aev^^dlpengine=uelaudan^^filetype=lab^^threatcategory=sequa^^threatclass=orinrep^^pagerisk=pta^^threatname=uradi^^clientpublicIP=sequu^^ClientIP=10.185.107.27^^location=susc^^refererURL=https://www.example.org/eatae/siutali.html?quelauda=rcit#dolo^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=orese^^user=evelite^^event_id=remquela^^clienttranstime=toreve^^requestmethod=squirat^^requestsize=2977^^requestversion=equunt^^status=mto^^responsesize=4116^^responseversion=atio^^transactionsize=6258", - "event.timezone": "PST", - "file.type": "lab", - "fileset.name": "zia", - "host.name": "onproi4354.www5.invalid", - "http.request.referrer": "https://www.example.org/eatae/siutali.html?quelauda=rcit#dolo", - "input.type": "log", - "log.offset": 58862, - "network.bytes": 6258, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "onproi4354.www5.invalid" - ], - "related.ip": [ - "10.185.107.27", - "10.29.162.157" - ], - "related.user": [ - "evelite" - ], - "rsa.db.index": "orese", - "rsa.identity.user_dept": "orese", - "rsa.internal.data": "siuta", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "orinrep", - "rsa.misc.action": [ - "Blocked", - "squirat" - ], - "rsa.misc.category": "sequa", - "rsa.misc.filter": "orainci", - "rsa.misc.reference_id": "remquela", - "rsa.misc.result": "success", - "rsa.misc.result_code": "mto", - "rsa.network.alias_host": [ - "onproi4354.www5.invalid" - ], - "rsa.threat.threat_category": "uradi", - "rsa.time.event_time": "2018-08-15T09:57:06.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "onproi4354.www5.invalid", - "service.type": "zscaler", - "source.bytes": 2977, - "source.ip": "10.185.107.27", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.org", - "url.extension": "gif", - "url.fragment": "loreeuf", - "url.original": "https://www.example.org/sci/isquames.gif?tlabor=itecto#loreeuf", - "url.path": "/sci/isquames.gif", - "url.query": "tlabor=itecto", - "url.scheme": "https", - "user.name": "evelite", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2018-08-29T04:59:40.000Z", - "destination.bytes": 1926, - "destination.ip": "10.215.63.248", - "event.action": "Blocked", - "event.code": "dantium", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "rem ZSCALERNSS: time=consecte Aug 29 2:59:40 2018^^timezone=ET^^action=Blocked^^reason=success^^hostname=beataevi7552.api.test^^protocol=ipv6^^serverip=10.215.63.248^^url=https://mail.example.org/umdolo/nimv.htm?equunt=tutla#usmod^^urlcategory=ine^^urlclass=qui^^dlpdictionaries=itse^^dlpengine=lapari^^filetype=Bonor^^threatcategory=ipex^^threatclass=odita^^pagerisk=metc^^threatname=aincidu^^clientpublicIP=reprehe^^ClientIP=10.138.0.214^^location=uisaut^^refererURL=https://internal.example.org/ommodic/mmodic.txt?esse=nihi#xeaco^^useragent=Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61^^department=uianonn^^user=eavolupt^^event_id=dantium^^clienttranstime=ors^^requestmethod=dqu^^requestsize=6682^^requestversion=edi^^status=eumiure^^responsesize=1926^^responseversion=eacomm^^transactionsize=2676", - "event.timezone": "ET", - "file.type": "Bonor", - "fileset.name": "zia", - "host.name": "beataevi7552.api.test", - "http.request.referrer": "https://internal.example.org/ommodic/mmodic.txt?esse=nihi#xeaco", - "input.type": "log", - "log.offset": 59899, - "network.bytes": 2676, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "beataevi7552.api.test" - ], - "related.ip": [ - "10.138.0.214", - "10.215.63.248" - ], - "related.user": [ - "eavolupt" - ], - "rsa.db.index": "qui", - "rsa.identity.user_dept": "uianonn", - "rsa.internal.data": "rem", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "odita", - "rsa.misc.action": [ - "Blocked", - "dqu" - ], - "rsa.misc.category": "ipex", - "rsa.misc.filter": "ine", - "rsa.misc.reference_id": "dantium", - "rsa.misc.result": "success", - "rsa.misc.result_code": "eumiure", - "rsa.network.alias_host": [ - "beataevi7552.api.test" - ], - "rsa.threat.threat_category": "aincidu", - "rsa.time.event_time": "2018-08-29T04:59:40.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "beataevi7552.api.test", - "service.type": "zscaler", - "source.bytes": 6682, - "source.ip": "10.138.0.214", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "htm", - "url.fragment": "usmod", - "url.original": "https://mail.example.org/umdolo/nimv.htm?equunt=tutla#usmod", - "url.path": "/umdolo/nimv.htm", - "url.query": "equunt=tutla", - "url.scheme": "https", - "user.name": "eavolupt", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2018-09-12T12:02:15.000Z", - "destination.bytes": 6315, - "destination.ip": "10.26.115.88", - "event.action": "Allowed", - "event.code": "edictas", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "pre ZSCALERNSS: time=aute Sep 12 10:02:15 2018^^timezone=PST^^action=Allowed^^reason=success^^hostname=rvelill1981.www.invalid^^protocol=udp^^serverip=10.26.115.88^^url=https://mail.example.net/tvol/ostru.htm?oei=iquipex#byCice^^urlcategory=deritq^^urlclass=boreetdo^^dlpdictionaries=teni^^dlpengine=iin^^filetype=nostr^^threatcategory=luptatem^^threatclass=tNequepo^^pagerisk=liq^^threatname=eleumiu^^clientpublicIP=etdol^^ClientIP=10.12.130.224^^location=magnido^^refererURL=https://www.example.org/dolor/ing.jpg?umdo=aer#quela^^useragent=Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=itatis^^user=Nequepo^^event_id=edictas^^clienttranstime=emac^^requestmethod=rmagnido^^requestsize=6135^^requestversion=elitsedd^^status=hitecto^^responsesize=6315^^responseversion=repreh^^transactionsize=1238", - "event.timezone": "PST", - "file.type": "nostr", - "fileset.name": "zia", - "host.name": "rvelill1981.www.invalid", - "http.request.referrer": "https://www.example.org/dolor/ing.jpg?umdo=aer#quela", - "input.type": "log", - "log.offset": 60840, - "network.bytes": 1238, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "rvelill1981.www.invalid" - ], - "related.ip": [ - "10.12.130.224", - "10.26.115.88" - ], - "related.user": [ - "Nequepo" - ], - "rsa.db.index": "boreetdo", - "rsa.identity.user_dept": "itatis", - "rsa.internal.data": "pre", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tNequepo", - "rsa.misc.action": [ - "Allowed", - "rmagnido" - ], - "rsa.misc.category": "luptatem", - "rsa.misc.filter": "deritq", - "rsa.misc.reference_id": "edictas", - "rsa.misc.result": "success", - "rsa.misc.result_code": "hitecto", - "rsa.network.alias_host": [ - "rvelill1981.www.invalid" - ], - "rsa.threat.threat_category": "eleumiu", - "rsa.time.event_time": "2018-09-12T12:02:15.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "rvelill1981.www.invalid", - "service.type": "zscaler", - "source.bytes": 6135, - "source.ip": "10.12.130.224", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "htm", - "url.fragment": "byCice", - "url.original": "https://mail.example.net/tvol/ostru.htm?oei=iquipex#byCice", - "url.path": "/tvol/ostru.htm", - "url.query": "oei=iquipex", - "url.scheme": "https", - "user.name": "Nequepo", - "user_agent.device.name": "STK-L21", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-09-27T07:04:49.000Z", - "destination.bytes": 1508, - "destination.ip": "10.193.152.42", - "event.action": "Blocked", - "event.code": "nost", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "usan ZSCALERNSS: time=ugiatn Sep 27 5:04:49 2018^^timezone=GMT+02:00^^action=Blocked^^reason=failure^^hostname=quia7214.example^^protocol=igmp^^serverip=10.193.152.42^^url=https://mail.example.org/pariatur/cita.html?equuntur=rve#atemacc^^urlcategory=labore^^urlclass=iqua^^dlpdictionaries=ciunt^^dlpengine=exea^^filetype=ostrumex^^threatcategory=eruntmol^^threatclass=plicab^^pagerisk=imide^^threatname=uiineav^^clientpublicIP=nder^^ClientIP=10.91.20.27^^location=asia^^refererURL=https://api.example.com/psamvolu/teturad.jpg?iavol=psumdol#urautodi^^useragent=Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36^^department=modtempo^^user=edict^^event_id=nost^^clienttranstime=orisnis^^requestmethod=umq^^requestsize=2801^^requestversion=quatur^^status=isiutali^^responsesize=1508^^responseversion=emquel^^transactionsize=365", - "event.timezone": "GMT+02:00", - "file.type": "ostrumex", - "fileset.name": "zia", - "host.name": "quia7214.example", - "http.request.referrer": "https://api.example.com/psamvolu/teturad.jpg?iavol=psumdol#urautodi", - "input.type": "log", - "log.offset": 61785, - "network.bytes": 365, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "quia7214.example" - ], - "related.ip": [ - "10.193.152.42", - "10.91.20.27" - ], - "related.user": [ - "edict" - ], - "rsa.db.index": "iqua", - "rsa.identity.user_dept": "modtempo", - "rsa.internal.data": "usan", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "plicab", - "rsa.misc.action": [ - "Blocked", - "umq" - ], - "rsa.misc.category": "eruntmol", - "rsa.misc.filter": "labore", - "rsa.misc.reference_id": "nost", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "isiutali", - "rsa.network.alias_host": [ - "quia7214.example" - ], - "rsa.threat.threat_category": "uiineav", - "rsa.time.event_time": "2018-09-27T07:04:49.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "quia7214.example", - "service.type": "zscaler", - "source.bytes": 2801, - "source.ip": "10.91.20.27", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "html", - "url.fragment": "atemacc", - "url.original": "https://mail.example.org/pariatur/cita.html?equuntur=rve#atemacc", - "url.path": "/pariatur/cita.html", - "url.query": "equuntur=rve", - "url.scheme": "https", - "user.name": "edict", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2018-10-11T14:07:23.000Z", - "destination.bytes": 7120, - "destination.ip": "10.146.69.38", - "event.action": "Allowed", - "event.code": "Exce", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "iavol ZSCALERNSS: time=utemvel Oct 11 12:07:23 2018^^timezone=PST^^action=Allowed^^reason=failure^^hostname=aturExc7343.invalid^^protocol=ipv6^^serverip=10.146.69.38^^url=https://example.org/aturE/aaliqu.gif?nvol=doloreeu#elillumq^^urlcategory=loremeum^^urlclass=luptatem^^dlpdictionaries=ing^^dlpengine=hen^^filetype=riameaqu^^threatcategory=etd^^threatclass=omnisi^^pagerisk=dolor^^threatname=rsp^^clientpublicIP=quir^^ClientIP=10.55.192.102^^location=tsuntinc^^refererURL=https://example.org/onproid/ciduntut.html?xer=iat#orain^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=uame^^user=quia^^event_id=Exce^^clienttranstime=nim^^requestmethod=userro^^requestsize=1008^^requestversion=uta^^status=tsun^^responsesize=7120^^responseversion=gni^^transactionsize=5280", - "event.timezone": "PST", - "file.type": "riameaqu", - "fileset.name": "zia", - "host.name": "aturExc7343.invalid", - "http.request.referrer": "https://example.org/onproid/ciduntut.html?xer=iat#orain", - "input.type": "log", - "log.offset": 62693, - "network.bytes": 5280, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "aturExc7343.invalid" - ], - "related.ip": [ - "10.146.69.38", - "10.55.192.102" - ], - "related.user": [ - "quia" - ], - "rsa.db.index": "luptatem", - "rsa.identity.user_dept": "uame", - "rsa.internal.data": "iavol", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "omnisi", - "rsa.misc.action": [ - "Allowed", - "userro" - ], - "rsa.misc.category": "etd", - "rsa.misc.filter": "loremeum", - "rsa.misc.reference_id": "Exce", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "tsun", - "rsa.network.alias_host": [ - "aturExc7343.invalid" - ], - "rsa.threat.threat_category": "rsp", - "rsa.time.event_time": "2018-10-11T14:07:23.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "aturExc7343.invalid", - "service.type": "zscaler", - "source.bytes": 1008, - "source.ip": "10.55.192.102", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "gif", - "url.fragment": "elillumq", - "url.original": "https://example.org/aturE/aaliqu.gif?nvol=doloreeu#elillumq", - "url.path": "/aturE/aaliqu.gif", - "url.query": "nvol=doloreeu", - "url.scheme": "https", - "user.name": "quia", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2018-10-25T09:09:57.000Z", - "destination.bytes": 3291, - "destination.ip": "10.249.1.143", - "event.action": "Allowed", - "event.code": "ntutlab", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tione ZSCALERNSS: time=nibus Oct 25 7:09:57 2018^^timezone=GMT-07:00^^action=Allowed^^reason=success^^hostname=olo7317.www5.localhost^^protocol=udp^^serverip=10.249.1.143^^url=https://internal.example.org/olorin/orisnisi.gif?eritquii=atevelit#dese^^urlcategory=ptasn^^urlclass=liqui^^dlpdictionaries=ectetur^^dlpengine=eacomm^^filetype=temqu^^threatcategory=tdolore^^threatclass=Utenim^^pagerisk=quisno^^threatname=quaUten^^clientpublicIP=eufugia^^ClientIP=10.124.177.226^^location=iarc^^refererURL=https://www5.example.org/ncidunt/uiac.jpg?luptat=ehend#involupt^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=tincul^^user=isciveli^^event_id=ntutlab^^clienttranstime=sitamet^^requestmethod=onevo^^requestsize=3736^^requestversion=nsequ^^status=ing^^responsesize=3291^^responseversion=vitaed^^transactionsize=7672", - "event.timezone": "GMT-07:00", - "file.type": "temqu", - "fileset.name": "zia", - "host.name": "olo7317.www5.localhost", - "http.request.referrer": "https://www5.example.org/ncidunt/uiac.jpg?luptat=ehend#involupt", - "input.type": "log", - "log.offset": 63579, - "network.bytes": 7672, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "olo7317.www5.localhost" - ], - "related.ip": [ - "10.124.177.226", - "10.249.1.143" - ], - "related.user": [ - "isciveli" - ], - "rsa.db.index": "liqui", - "rsa.identity.user_dept": "tincul", - "rsa.internal.data": "tione", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "Utenim", - "rsa.misc.action": [ - "Allowed", - "onevo" - ], - "rsa.misc.category": "tdolore", - "rsa.misc.filter": "ptasn", - "rsa.misc.reference_id": "ntutlab", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ing", - "rsa.network.alias_host": [ - "olo7317.www5.localhost" - ], - "rsa.threat.threat_category": "quaUten", - "rsa.time.event_time": "2018-10-25T09:09:57.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "olo7317.www5.localhost", - "service.type": "zscaler", - "source.bytes": 3736, - "source.ip": "10.124.177.226", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.org", - "url.extension": "gif", - "url.fragment": "dese", - "url.original": "https://internal.example.org/olorin/orisnisi.gif?eritquii=atevelit#dese", - "url.path": "/olorin/orisnisi.gif", - "url.query": "eritquii=atevelit", - "url.scheme": "https", - "user.name": "isciveli", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2018-11-09T04:12:32.000Z", - "destination.bytes": 620, - "destination.ip": "10.167.176.220", - "event.action": "Blocked", - "event.code": "ione", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "modit ZSCALERNSS: time=quamnih Nov 9 2:12:32 2018^^timezone=OMST^^action=Blocked^^reason=failure^^hostname=uiin1342.mail.invalid^^protocol=rdp^^serverip=10.167.176.220^^url=https://example.org/vel/preh.html?sequamni=edutpers#deo^^urlcategory=eni^^urlclass=quipe^^dlpdictionaries=oluptat^^dlpengine=stenatus^^filetype=eabillo^^threatcategory=iaecon^^threatclass=ect^^pagerisk=tquid^^threatname=seru^^clientpublicIP=oriss^^ClientIP=10.146.228.249^^location=psumdolo^^refererURL=https://example.net/bor/magnido.html?emagnaal=nih#ncididu^^useragent=Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]^^department=gitsed^^user=estla^^event_id=ione^^clienttranstime=ecillum^^requestmethod=maccu^^requestsize=5298^^requestversion=quisquam^^status=boreet^^responsesize=620^^responseversion=Malorumw^^transactionsize=5212", - "event.timezone": "OMST", - "file.type": "eabillo", - "fileset.name": "zia", - "host.name": "uiin1342.mail.invalid", - "http.request.referrer": "https://example.net/bor/magnido.html?emagnaal=nih#ncididu", - "input.type": "log", - "log.offset": 64523, - "network.bytes": 5212, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "uiin1342.mail.invalid" - ], - "related.ip": [ - "10.146.228.249", - "10.167.176.220" - ], - "related.user": [ - "estla" - ], - "rsa.db.index": "quipe", - "rsa.identity.user_dept": "gitsed", - "rsa.internal.data": "modit", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ect", - "rsa.misc.action": [ - "Blocked", - "maccu" - ], - "rsa.misc.category": "iaecon", - "rsa.misc.filter": "eni", - "rsa.misc.reference_id": "ione", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "boreet", - "rsa.network.alias_host": [ - "uiin1342.mail.invalid" - ], - "rsa.threat.threat_category": "seru", - "rsa.time.event_time": "2018-11-09T04:12:32.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "uiin1342.mail.invalid", - "service.type": "zscaler", - "source.bytes": 5298, - "source.ip": "10.146.228.249", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "html", - "url.fragment": "deo", - "url.original": "https://example.org/vel/preh.html?sequamni=edutpers#deo", - "url.path": "/vel/preh.html", - "url.query": "sequamni=edutpers", - "url.scheme": "https", - "user.name": "estla", - "user_agent.device.name": "iPhone", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 LightSpeed [FBAN/MessengerLiteForiOS;FBAV/266.0.0.32.114;FBBV/216059178;FBDV/iPhone10,6;FBMD/iPhone;FBSN/iOS;FBSV/13.4.1;FBSS/3;FBCR/;FBID/phone;FBLC/en_US;FBOP/0]", - "user_agent.os.full": "iOS 13.4.1", - "user_agent.os.name": "iOS", - "user_agent.os.version": "13.4.1", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2018-11-23T11:15:06.000Z", - "destination.bytes": 4822, - "destination.ip": "10.200.74.101", - "event.action": "Allowed", - "event.code": "ntmo", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "issu ZSCALERNSS: time=tconsect Nov 23 9:15:06 2018^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=agna5654.www.corp^^protocol=tcp^^serverip=10.200.74.101^^url=https://example.com/nonproi/dolor.jpg?molli=oeiusm#aUtenim^^urlcategory=ntincul^^urlclass=nnumquam^^dlpdictionaries=etdol^^dlpengine=sed^^filetype=uep^^threatcategory=ametco^^threatclass=nde^^pagerisk=reprehe^^threatname=umdolo^^clientpublicIP=duntutl^^ClientIP=10.203.47.23^^location=empor^^refererURL=https://mail.example.net/teveli/utperspi.html?luptate=aturvel#ostrumex^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10^^department=sedquia^^user=litesse^^event_id=ntmo^^clienttranstime=aliqu^^requestmethod=iqu^^requestsize=4429^^requestversion=ationula^^status=doconse^^responsesize=4822^^responseversion=oreeufug^^transactionsize=5020", - "event.timezone": "OMST", - "file.type": "uep", - "fileset.name": "zia", - "host.name": "agna5654.www.corp", - "http.request.referrer": "https://mail.example.net/teveli/utperspi.html?luptate=aturvel#ostrumex", - "input.type": "log", - "log.offset": 65560, - "network.bytes": 5020, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "agna5654.www.corp" - ], - "related.ip": [ - "10.200.74.101", - "10.203.47.23" - ], - "related.user": [ - "litesse" - ], - "rsa.db.index": "nnumquam", - "rsa.identity.user_dept": "sedquia", - "rsa.internal.data": "issu", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "nde", - "rsa.misc.action": [ - "Allowed", - "iqu" - ], - "rsa.misc.category": "ametco", - "rsa.misc.filter": "ntincul", - "rsa.misc.reference_id": "ntmo", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "doconse", - "rsa.network.alias_host": [ - "agna5654.www.corp" - ], - "rsa.threat.threat_category": "umdolo", - "rsa.time.event_time": "2018-11-23T11:15:06.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "agna5654.www.corp", - "service.type": "zscaler", - "source.bytes": 4429, - "source.ip": "10.203.47.23", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.com", - "url.extension": "jpg", - "url.fragment": "aUtenim", - "url.original": "https://example.com/nonproi/dolor.jpg?molli=oeiusm#aUtenim", - "url.path": "/nonproi/dolor.jpg", - "url.query": "molli=oeiusm", - "url.scheme": "https", - "user.name": "litesse", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2018-12-07T06:17:40.000Z", - "destination.bytes": 4147, - "destination.ip": "10.162.78.48", - "event.action": "Blocked", - "event.code": "tect", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tenima ZSCALERNSS: time=emagnam Dec 7 4:17:40 2018^^timezone=CT^^action=Blocked^^reason=success^^hostname=ites5711.internal.host^^protocol=ggp^^serverip=10.162.78.48^^url=https://example.com/sedqui/iuntNe.gif?epteu=nvent#uepor^^urlcategory=umSecti^^urlclass=eabil^^dlpdictionaries=ibusB^^dlpengine=rporis^^filetype=etco^^threatcategory=mip^^threatclass=ereprehe^^pagerisk=olu^^threatname=nofdeF^^clientpublicIP=riaturEx^^ClientIP=10.24.23.209^^location=itautfu^^refererURL=https://internal.example.org/ole/odi.txt?mporain=ectetur#adipisc^^useragent=Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=iumd^^user=ntore^^event_id=tect^^clienttranstime=ion^^requestmethod=tutl^^requestsize=3811^^requestversion=bor^^status=ameaquei^^responsesize=4147^^responseversion=uelaud^^transactionsize=1306", - "event.timezone": "CT", - "file.type": "etco", - "fileset.name": "zia", - "host.name": "ites5711.internal.host", - "http.request.referrer": "https://internal.example.org/ole/odi.txt?mporain=ectetur#adipisc", - "input.type": "log", - "log.offset": 66535, - "network.bytes": 1306, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ites5711.internal.host" - ], - "related.ip": [ - "10.162.78.48", - "10.24.23.209" - ], - "related.user": [ - "ntore" - ], - "rsa.db.index": "eabil", - "rsa.identity.user_dept": "iumd", - "rsa.internal.data": "tenima", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ereprehe", - "rsa.misc.action": [ - "Blocked", - "tutl" - ], - "rsa.misc.category": "mip", - "rsa.misc.filter": "umSecti", - "rsa.misc.reference_id": "tect", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ameaquei", - "rsa.network.alias_host": [ - "ites5711.internal.host" - ], - "rsa.threat.threat_category": "nofdeF", - "rsa.time.event_time": "2018-12-07T06:17:40.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "ites5711.internal.host", - "service.type": "zscaler", - "source.bytes": 3811, - "source.ip": "10.24.23.209", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.com", - "url.extension": "gif", - "url.fragment": "uepor", - "url.original": "https://example.com/sedqui/iuntNe.gif?epteu=nvent#uepor", - "url.path": "/sedqui/iuntNe.gif", - "url.query": "epteu=nvent", - "url.scheme": "https", - "user.name": "ntore", - "user_agent.device.name": "U307AS", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; U307AS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2018-12-21T13:20:14.000Z", - "destination.bytes": 1782, - "destination.ip": "10.55.151.53", - "event.action": "Allowed", - "event.code": "commod", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ngelit ZSCALERNSS: time=quiano Dec 21 11:20:14 2018^^timezone=GMT+02:00^^action=Allowed^^reason=success^^hostname=oluptat2848.api.home^^protocol=igmp^^serverip=10.55.151.53^^url=https://www5.example.net/lits/Nemoen.txt?elillu=seruntmo#imidest^^urlcategory=oeiusmod^^urlclass=uidolore^^dlpdictionaries=iacon^^dlpengine=ncu^^filetype=quaturve^^threatcategory=ciad^^threatclass=diconseq^^pagerisk=utod^^threatname=ostr^^clientpublicIP=amcorp^^ClientIP=10.211.66.68^^location=uptatem^^refererURL=https://mail.example.org/nproide/mali.htm?siutali=mfugi#ceroinBC^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=maveni^^user=squir^^event_id=commod^^clienttranstime=umqu^^requestmethod=umet^^requestsize=5891^^requestversion=amestqu^^status=aliqua^^responsesize=1782^^responseversion=teirure^^transactionsize=1210", - "event.timezone": "GMT+02:00", - "file.type": "quaturve", - "fileset.name": "zia", - "host.name": "oluptat2848.api.home", - "http.request.referrer": "https://mail.example.org/nproide/mali.htm?siutali=mfugi#ceroinBC", - "input.type": "log", - "log.offset": 67408, - "network.bytes": 1210, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "oluptat2848.api.home" - ], - "related.ip": [ - "10.211.66.68", - "10.55.151.53" - ], - "related.user": [ - "squir" - ], - "rsa.db.index": "uidolore", - "rsa.identity.user_dept": "maveni", - "rsa.internal.data": "ngelit", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "diconseq", - "rsa.misc.action": [ - "Allowed", - "umet" - ], - "rsa.misc.category": "ciad", - "rsa.misc.filter": "oeiusmod", - "rsa.misc.reference_id": "commod", - "rsa.misc.result": "success", - "rsa.misc.result_code": "aliqua", - "rsa.network.alias_host": [ - "oluptat2848.api.home" - ], - "rsa.threat.threat_category": "ostr", - "rsa.time.event_time": "2018-12-21T13:20:14.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "oluptat2848.api.home", - "service.type": "zscaler", - "source.bytes": 5891, - "source.ip": "10.211.66.68", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.net", - "url.extension": "txt", - "url.fragment": "imidest", - "url.original": "https://www5.example.net/lits/Nemoen.txt?elillu=seruntmo#imidest", - "url.path": "/lits/Nemoen.txt", - "url.query": "elillu=seruntmo", - "url.scheme": "https", - "user.name": "squir", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-01-05T08:22:49.000Z", - "destination.bytes": 409, - "destination.ip": "10.110.16.169", - "event.action": "Blocked", - "event.code": "labori", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "dipisciv ZSCALERNSS: time=nsequun Jan 5 6:22:49 2019^^timezone=ET^^action=Blocked^^reason=unknown^^hostname=ngelitse7535.internal.lan^^protocol=rdp^^serverip=10.110.16.169^^url=https://example.org/eius/evo.jpg?iarchit=volupt#ipis^^urlcategory=usBonor^^urlclass=mide^^dlpdictionaries=sten^^dlpengine=enderi^^filetype=labore^^threatcategory=uasiarch^^threatclass=iamquisn^^pagerisk=magnama^^threatname=reprehe^^clientpublicIP=citatio^^ClientIP=10.209.203.156^^location=esciunt^^refererURL=https://www.example.com/liquide/BCSedut.htm?litani=temse#samvo^^useragent=Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=roinBCSe^^user=mes^^event_id=labori^^clienttranstime=ditau^^requestmethod=lupta^^requestsize=6650^^requestversion=tam^^status=olu^^responsesize=409^^responseversion=iut^^transactionsize=3808", - "event.timezone": "ET", - "file.type": "labore", - "fileset.name": "zia", - "host.name": "ngelitse7535.internal.lan", - "http.request.referrer": "https://www.example.com/liquide/BCSedut.htm?litani=temse#samvo", - "input.type": "log", - "log.offset": 68307, - "network.bytes": 3808, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ngelitse7535.internal.lan" - ], - "related.ip": [ - "10.110.16.169", - "10.209.203.156" - ], - "related.user": [ - "mes" - ], - "rsa.db.index": "mide", - "rsa.identity.user_dept": "roinBCSe", - "rsa.internal.data": "dipisciv", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "iamquisn", - "rsa.misc.action": [ - "Blocked", - "lupta" - ], - "rsa.misc.category": "uasiarch", - "rsa.misc.filter": "usBonor", - "rsa.misc.reference_id": "labori", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "olu", - "rsa.network.alias_host": [ - "ngelitse7535.internal.lan" - ], - "rsa.threat.threat_category": "reprehe", - "rsa.time.event_time": "2019-01-05T08:22:49.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "ngelitse7535.internal.lan", - "service.type": "zscaler", - "source.bytes": 6650, - "source.ip": "10.209.203.156", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "jpg", - "url.fragment": "ipis", - "url.original": "https://example.org/eius/evo.jpg?iarchit=volupt#ipis", - "url.path": "/eius/evo.jpg", - "url.query": "iarchit=volupt", - "url.scheme": "https", - "user.name": "mes", - "user_agent.device.name": "G8142", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; G8142) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-01-19T03:25:23.000Z", - "destination.bytes": 6822, - "destination.ip": "10.84.9.150", - "event.action": "Allowed", - "event.code": "nsecte", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "deser ZSCALERNSS: time=boris Jan 19 1:25:23 2019^^timezone=PST^^action=Allowed^^reason=success^^hostname=tiumtot3611.internal.localdomain^^protocol=udp^^serverip=10.84.9.150^^url=https://www5.example.net/equun/veli.gif?tem=iadeseru#uiineavo^^urlcategory=enimadmi^^urlclass=qui^^dlpdictionaries=ita^^dlpengine=lamco^^filetype=natuser^^threatcategory=Excepteu^^threatclass=omnis^^pagerisk=tati^^threatname=orinc^^clientpublicIP=teursi^^ClientIP=10.107.68.114^^location=nofdeFin^^refererURL=https://internal.example.org/ollit/umfug.htm?lumquid=Sectio#tiumdol^^useragent=Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ocons^^user=sequatDu^^event_id=nsecte^^clienttranstime=pta^^requestmethod=uianonnu^^requestsize=5724^^requestversion=veleumi^^status=volupt^^responsesize=6822^^responseversion=itatise^^transactionsize=3714", - "event.timezone": "PST", - "file.type": "natuser", - "fileset.name": "zia", - "host.name": "tiumtot3611.internal.localdomain", - "http.request.referrer": "https://internal.example.org/ollit/umfug.htm?lumquid=Sectio#tiumdol", - "input.type": "log", - "log.offset": 69189, - "network.bytes": 3714, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tiumtot3611.internal.localdomain" - ], - "related.ip": [ - "10.107.68.114", - "10.84.9.150" - ], - "related.user": [ - "sequatDu" - ], - "rsa.db.index": "qui", - "rsa.identity.user_dept": "ocons", - "rsa.internal.data": "deser", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "omnis", - "rsa.misc.action": [ - "Allowed", - "uianonnu" - ], - "rsa.misc.category": "Excepteu", - "rsa.misc.filter": "enimadmi", - "rsa.misc.reference_id": "nsecte", - "rsa.misc.result": "success", - "rsa.misc.result_code": "volupt", - "rsa.network.alias_host": [ - "tiumtot3611.internal.localdomain" - ], - "rsa.threat.threat_category": "orinc", - "rsa.time.event_time": "2019-01-19T03:25:23.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "tiumtot3611.internal.localdomain", - "service.type": "zscaler", - "source.bytes": 5724, - "source.ip": "10.107.68.114", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.net", - "url.extension": "gif", - "url.fragment": "uiineavo", - "url.original": "https://www5.example.net/equun/veli.gif?tem=iadeseru#uiineavo", - "url.path": "/equun/veli.gif", - "url.query": "tem=iadeseru", - "url.scheme": "https", - "user.name": "sequatDu", - "user_agent.device.name": "LG-$2", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; LG-US998) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-02-02T10:27:57.000Z", - "destination.bytes": 4127, - "destination.ip": "10.26.222.144", - "event.action": "Blocked", - "event.code": "sintoc", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "userro ZSCALERNSS: time=oree Feb 2 8:27:57 2019^^timezone=CEST^^action=Blocked^^reason=failure^^hostname=gnaa4656.api.example^^protocol=igmp^^serverip=10.26.222.144^^url=https://internal.example.com/ecatcu/tMalo.txt?nse=rauto#rese^^urlcategory=nonproi^^urlclass=doconse^^dlpdictionaries=henderi^^dlpengine=tisunde^^filetype=ende^^threatcategory=quidolor^^threatclass=lloin^^pagerisk=eomnis^^threatname=proiden^^clientpublicIP=moenimip^^ClientIP=10.124.119.48^^location=atquo^^refererURL=https://www.example.com/ern/ationula.jpg?nsequun=ateveli#aqua^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10^^department=amn^^user=nre^^event_id=sintoc^^clienttranstime=rinci^^requestmethod=ici^^requestsize=7328^^requestversion=Nequepor^^status=aUten^^responsesize=4127^^responseversion=tatnon^^transactionsize=977", - "event.timezone": "CEST", - "file.type": "ende", - "fileset.name": "zia", - "host.name": "gnaa4656.api.example", - "http.request.referrer": "https://www.example.com/ern/ationula.jpg?nsequun=ateveli#aqua", - "input.type": "log", - "log.offset": 70095, - "network.bytes": 977, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "gnaa4656.api.example" - ], - "related.ip": [ - "10.124.119.48", - "10.26.222.144" - ], - "related.user": [ - "nre" - ], - "rsa.db.index": "doconse", - "rsa.identity.user_dept": "amn", - "rsa.internal.data": "userro", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "lloin", - "rsa.misc.action": [ - "Blocked", - "ici" - ], - "rsa.misc.category": "quidolor", - "rsa.misc.filter": "nonproi", - "rsa.misc.reference_id": "sintoc", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "aUten", - "rsa.network.alias_host": [ - "gnaa4656.api.example" - ], - "rsa.threat.threat_category": "proiden", - "rsa.time.event_time": "2019-02-02T10:27:57.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.fqdn": "gnaa4656.api.example", - "service.type": "zscaler", - "source.bytes": 7328, - "source.ip": "10.124.119.48", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "internal.example.com", - "url.extension": "txt", - "url.fragment": "rese", - "url.original": "https://internal.example.com/ecatcu/tMalo.txt?nse=rauto#rese", - "url.path": "/ecatcu/tMalo.txt", - "url.query": "nse=rauto", - "url.scheme": "https", - "user.name": "nre", - "user_agent.device.name": "Samsung SM-A305FN", - "user_agent.name": "YandexSearch", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A305FN Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 YandexSearch/8.10 YandexSearchBrowser/8.10", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "8.10" - }, - { - "@timestamp": "2019-02-17T05:30:32.000Z", - "destination.bytes": 4382, - "destination.ip": "10.164.190.2", - "event.action": "Allowed", - "event.code": "datatno", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "mnisis ZSCALERNSS: time=onsequa Feb 17 3:30:32 2019^^timezone=GMT+02:00^^action=Allowed^^reason=failure^^hostname=psaqu6066.www5.localhost^^protocol=ipv6-icmp^^serverip=10.164.190.2^^url=https://mail.example.org/ntutlabo/leumiure.htm?eacommo=amqua#tionevol^^urlcategory=itvo^^urlclass=asi^^dlpdictionaries=tobe^^dlpengine=ssequa^^filetype=emp^^threatcategory=emoeni^^threatclass=officiad^^pagerisk=veniam^^threatname=labo^^clientpublicIP=ssecill^^ClientIP=10.223.11.164^^location=tate^^refererURL=https://internal.example.net/ali/ionu.txt?cte=ariatu#ess^^useragent=Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=risnisiu^^user=ten^^event_id=datatno^^clienttranstime=equepor^^requestmethod=antium^^requestsize=5241^^requestversion=texp^^status=mvolup^^responsesize=4382^^responseversion=ema^^transactionsize=6673", - "event.timezone": "GMT+02:00", - "file.type": "emp", - "fileset.name": "zia", - "host.name": "psaqu6066.www5.localhost", - "http.request.referrer": "https://internal.example.net/ali/ionu.txt?cte=ariatu#ess", - "input.type": "log", - "log.offset": 71065, - "network.bytes": 6673, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "psaqu6066.www5.localhost" - ], - "related.ip": [ - "10.164.190.2", - "10.223.11.164" - ], - "related.user": [ - "ten" - ], - "rsa.db.index": "asi", - "rsa.identity.user_dept": "risnisiu", - "rsa.internal.data": "mnisis", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "officiad", - "rsa.misc.action": [ - "Allowed", - "antium" - ], - "rsa.misc.category": "emoeni", - "rsa.misc.filter": "itvo", - "rsa.misc.reference_id": "datatno", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "mvolup", - "rsa.network.alias_host": [ - "psaqu6066.www5.localhost" - ], - "rsa.threat.threat_category": "labo", - "rsa.time.event_time": "2019-02-17T05:30:32.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "psaqu6066.www5.localhost", - "service.type": "zscaler", - "source.bytes": 5241, - "source.ip": "10.223.11.164", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "htm", - "url.fragment": "tionevol", - "url.original": "https://mail.example.org/ntutlabo/leumiure.htm?eacommo=amqua#tionevol", - "url.path": "/ntutlabo/leumiure.htm", - "url.query": "eacommo=amqua", - "url.scheme": "https", - "user.name": "ten", - "user_agent.device.name": "LM-V350", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-03-03T12:33:06.000Z", - "destination.bytes": 1460, - "destination.ip": "10.14.37.8", - "event.action": "Blocked", - "event.code": "olor", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "nsec ZSCALERNSS: time=iaeco Mar 3 10:33:06 2019^^timezone=OMST^^action=Blocked^^reason=failure^^hostname=iavol5202.api.example^^protocol=udp^^serverip=10.14.37.8^^url=https://www.example.org/ugitsed/ritatis.jpg?xplic=stenat#mquis^^urlcategory=rume^^urlclass=samnisiu^^dlpdictionaries=yCiceroi^^dlpengine=evolupta^^filetype=citat^^threatcategory=prehende^^threatclass=vitaedic^^pagerisk=remip^^threatname=rsita^^clientpublicIP=rehe^^ClientIP=10.121.181.243^^location=midest^^refererURL=https://example.org/olupta/modi.txt?rnatur=tseddo#utaliq^^useragent=Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30^^department=errorsi^^user=umwr^^event_id=olor^^clienttranstime=cupida^^requestmethod=rinc^^requestsize=7719^^requestversion=roqu^^status=dquia^^responsesize=1460^^responseversion=strude^^transactionsize=6667", - "event.timezone": "OMST", - "file.type": "citat", - "fileset.name": "zia", - "host.name": "iavol5202.api.example", - "http.request.referrer": "https://example.org/olupta/modi.txt?rnatur=tseddo#utaliq", - "input.type": "log", - "log.offset": 71963, - "network.bytes": 6667, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "iavol5202.api.example" - ], - "related.ip": [ - "10.121.181.243", - "10.14.37.8" - ], - "related.user": [ - "umwr" - ], - "rsa.db.index": "samnisiu", - "rsa.identity.user_dept": "errorsi", - "rsa.internal.data": "nsec", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "vitaedic", - "rsa.misc.action": [ - "Blocked", - "rinc" - ], - "rsa.misc.category": "prehende", - "rsa.misc.filter": "rume", - "rsa.misc.reference_id": "olor", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "dquia", - "rsa.network.alias_host": [ - "iavol5202.api.example" - ], - "rsa.threat.threat_category": "rsita", - "rsa.time.event_time": "2019-03-03T12:33:06.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "iavol5202.api.example", - "service.type": "zscaler", - "source.bytes": 7719, - "source.ip": "10.121.181.243", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.org", - "url.extension": "jpg", - "url.fragment": "mquis", - "url.original": "https://www.example.org/ugitsed/ritatis.jpg?xplic=stenat#mquis", - "url.path": "/ugitsed/ritatis.jpg", - "url.query": "xplic=stenat", - "url.scheme": "https", - "user.name": "umwr", - "user_agent.device.name": "Lenovo A2016a40 ", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; Lenovo A2016a40 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.106 Mobile Safari/537.36 YaApp_Android/10.30 YaSearchBrowser/10.30", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "48.0.2564.106" - }, - { - "@timestamp": "2019-03-17T07:35:40.000Z", - "destination.bytes": 3488, - "destination.ip": "10.90.20.202", - "event.action": "Blocked", - "event.code": "ostrude", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ptate ZSCALERNSS: time=oloreeu Mar 17 5:35:40 2019^^timezone=ET^^action=Blocked^^reason=success^^hostname=uame1361.api.local^^protocol=udp^^serverip=10.90.20.202^^url=https://mail.example.com/aute/dictasu.gif?ptas=iadolo#cidu^^urlcategory=nonp^^urlclass=abillo^^dlpdictionaries=tinv^^dlpengine=iar^^filetype=nse^^threatcategory=turQuis^^threatclass=tat^^pagerisk=pta^^threatname=henderi^^clientpublicIP=onsec^^ClientIP=10.10.93.133^^location=tau^^refererURL=https://www.example.net/urad/upt.gif?sitamet=xerc#mcolabor^^useragent=Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91^^department=quipe^^user=evita^^event_id=ostrude^^clienttranstime=itsed^^requestmethod=nia^^requestsize=7548^^requestversion=rehe^^status=eseosqu^^responsesize=3488^^responseversion=sundeo^^transactionsize=3076", - "event.timezone": "ET", - "file.type": "nse", - "fileset.name": "zia", - "host.name": "uame1361.api.local", - "http.request.referrer": "https://www.example.net/urad/upt.gif?sitamet=xerc#mcolabor", - "input.type": "log", - "log.offset": 72910, - "network.bytes": 3076, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "uame1361.api.local" - ], - "related.ip": [ - "10.10.93.133", - "10.90.20.202" - ], - "related.user": [ - "evita" - ], - "rsa.db.index": "abillo", - "rsa.identity.user_dept": "quipe", - "rsa.internal.data": "ptate", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tat", - "rsa.misc.action": [ - "Blocked", - "nia" - ], - "rsa.misc.category": "turQuis", - "rsa.misc.filter": "nonp", - "rsa.misc.reference_id": "ostrude", - "rsa.misc.result": "success", - "rsa.misc.result_code": "eseosqu", - "rsa.network.alias_host": [ - "uame1361.api.local" - ], - "rsa.threat.threat_category": "henderi", - "rsa.time.event_time": "2019-03-17T07:35:40.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "uame1361.api.local", - "service.type": "zscaler", - "source.bytes": 7548, - "source.ip": "10.10.93.133", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "gif", - "url.fragment": "cidu", - "url.original": "https://mail.example.com/aute/dictasu.gif?ptas=iadolo#cidu", - "url.path": "/aute/dictasu.gif", - "url.query": "ptas=iadolo", - "url.scheme": "https", - "user.name": "evita", - "user_agent.device.name": "ZTE Blade V1000RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; ZTE Blade V1000RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/10.91 YaSearchBrowser/10.91", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-04-01T14:38:14.000Z", - "destination.bytes": 4610, - "destination.ip": "10.34.98.144", - "event.action": "Allowed", - "event.code": "pariatu", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "laud ZSCALERNSS: time=uido Apr 1 12:38:14 2019^^timezone=ET^^action=Allowed^^reason=success^^hostname=rsitame4049.internal.corp^^protocol=tcp^^serverip=10.34.98.144^^url=https://mail.example.net/enbyCic/aturau.gif?orroqui=sci#psamvolu^^urlcategory=itsedqui^^urlclass=oreve^^dlpdictionaries=omn^^dlpengine=onevol^^filetype=ese^^threatcategory=reprehen^^threatclass=Exce^^pagerisk=tocca^^threatname=tinvolu^^clientpublicIP=ecatc^^ClientIP=10.77.102.206^^location=quin^^refererURL=https://api.example.com/sedqui/ueporroq.htm?eetdol=tia#lup^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=inBCSed^^user=tectobe^^event_id=pariatu^^clienttranstime=uiacons^^requestmethod=ulapa^^requestsize=4143^^requestversion=henderit^^status=ident^^responsesize=4610^^responseversion=mquae^^transactionsize=1789", - "event.timezone": "ET", - "file.type": "ese", - "fileset.name": "zia", - "host.name": "rsitame4049.internal.corp", - "http.request.referrer": "https://api.example.com/sedqui/ueporroq.htm?eetdol=tia#lup", - "input.type": "log", - "log.offset": 73843, - "network.bytes": 1789, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "rsitame4049.internal.corp" - ], - "related.ip": [ - "10.34.98.144", - "10.77.102.206" - ], - "related.user": [ - "tectobe" - ], - "rsa.db.index": "oreve", - "rsa.identity.user_dept": "inBCSed", - "rsa.internal.data": "laud", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "Exce", - "rsa.misc.action": [ - "Allowed", - "ulapa" - ], - "rsa.misc.category": "reprehen", - "rsa.misc.filter": "itsedqui", - "rsa.misc.reference_id": "pariatu", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ident", - "rsa.network.alias_host": [ - "rsitame4049.internal.corp" - ], - "rsa.threat.threat_category": "tinvolu", - "rsa.time.event_time": "2019-04-01T14:38:14.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "rsitame4049.internal.corp", - "service.type": "zscaler", - "source.bytes": 4143, - "source.ip": "10.77.102.206", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "gif", - "url.fragment": "psamvolu", - "url.original": "https://mail.example.net/enbyCic/aturau.gif?orroqui=sci#psamvolu", - "url.path": "/enbyCic/aturau.gif", - "url.query": "orroqui=sci", - "url.scheme": "https", - "user.name": "tectobe", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2019-04-15T09:40:49.000Z", - "destination.bytes": 3976, - "destination.ip": "10.176.233.249", - "event.action": "Blocked", - "event.code": "ntin", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "lit ZSCALERNSS: time=uiine Apr 15 7:40:49 2019^^timezone=ET^^action=Blocked^^reason=unknown^^hostname=elit912.www5.test^^protocol=udp^^serverip=10.176.233.249^^url=https://example.org/olu/mqua.txt?mdolore=ita#aeratvol^^urlcategory=odite^^urlclass=atn^^dlpdictionaries=sectet^^dlpengine=boreetd^^filetype=ueporro^^threatcategory=cto^^threatclass=essequa^^pagerisk=gnidolor^^threatname=itlabori^^clientpublicIP=amestqui^^ClientIP=10.75.144.118^^location=qua^^refererURL=https://api.example.com/pteurs/intocc.gif?veni=turmag#dutper^^useragent=Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=aconseq^^user=isnos^^event_id=ntin^^clienttranstime=tenatus^^requestmethod=odic^^requestsize=3588^^requestversion=intocca^^status=equuntu^^responsesize=3976^^responseversion=ine^^transactionsize=3409", - "event.timezone": "ET", - "file.type": "ueporro", - "fileset.name": "zia", - "host.name": "elit912.www5.test", - "http.request.referrer": "https://api.example.com/pteurs/intocc.gif?veni=turmag#dutper", - "input.type": "log", - "log.offset": 74765, - "network.bytes": 3409, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "elit912.www5.test" - ], - "related.ip": [ - "10.176.233.249", - "10.75.144.118" - ], - "related.user": [ - "isnos" - ], - "rsa.db.index": "atn", - "rsa.identity.user_dept": "aconseq", - "rsa.internal.data": "lit", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "essequa", - "rsa.misc.action": [ - "Blocked", - "odic" - ], - "rsa.misc.category": "cto", - "rsa.misc.filter": "odite", - "rsa.misc.reference_id": "ntin", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "equuntu", - "rsa.network.alias_host": [ - "elit912.www5.test" - ], - "rsa.threat.threat_category": "itlabori", - "rsa.time.event_time": "2019-04-15T09:40:49.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "elit912.www5.test", - "service.type": "zscaler", - "source.bytes": 3588, - "source.ip": "10.75.144.118", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "example.org", - "url.extension": "txt", - "url.fragment": "aeratvol", - "url.original": "https://example.org/olu/mqua.txt?mdolore=ita#aeratvol", - "url.path": "/olu/mqua.txt", - "url.query": "mdolore=ita", - "url.scheme": "https", - "user.name": "isnos", - "user_agent.device.name": "VS996", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 8.0.0; VS996) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 8.0.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "8.0.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-04-29T04:43:23.000Z", - "destination.bytes": 559, - "destination.ip": "10.149.6.107", - "event.action": "Allowed", - "event.code": "mveleu", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "rcit ZSCALERNSS: time=secte Apr 29 2:43:23 2019^^timezone=GMT-07:00^^action=Allowed^^reason=unknown^^hostname=tat6671.www.local^^protocol=udp^^serverip=10.149.6.107^^url=https://api.example.net/mnisiut/eabil.jpg?psumqui=trude#ccusa^^urlcategory=ndeomni^^urlclass=chite^^dlpdictionaries=obeatae^^dlpengine=rehen^^filetype=uam^^threatcategory=vitaedi^^threatclass=uis^^pagerisk=emagnaal^^threatname=uunturm^^clientpublicIP=nonnumq^^ClientIP=10.236.55.236^^location=aerat^^refererURL=https://www.example.org/eata/maliquam.jpg?gnamali=olabor#ionem^^useragent=Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=eseosqu^^user=redolo^^event_id=mveleu^^clienttranstime=cillumdo^^requestmethod=mvele^^requestsize=4686^^requestversion=isnost^^status=lumdolor^^responsesize=559^^responseversion=aspe^^transactionsize=4318", - "event.timezone": "GMT-07:00", - "file.type": "uam", - "fileset.name": "zia", - "host.name": "tat6671.www.local", - "http.request.referrer": "https://www.example.org/eata/maliquam.jpg?gnamali=olabor#ionem", - "input.type": "log", - "log.offset": 75639, - "network.bytes": 4318, - "network.protocol": "udp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "tat6671.www.local" - ], - "related.ip": [ - "10.149.6.107", - "10.236.55.236" - ], - "related.user": [ - "redolo" - ], - "rsa.db.index": "chite", - "rsa.identity.user_dept": "eseosqu", - "rsa.internal.data": "rcit", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "uis", - "rsa.misc.action": [ - "Allowed", - "mvele" - ], - "rsa.misc.category": "vitaedi", - "rsa.misc.filter": "ndeomni", - "rsa.misc.reference_id": "mveleu", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "lumdolor", - "rsa.network.alias_host": [ - "tat6671.www.local" - ], - "rsa.threat.threat_category": "uunturm", - "rsa.time.event_time": "2019-04-29T04:43:23.000Z", - "rsa.time.timezone": "GMT-07:00", - "rsa.web.fqdn": "tat6671.www.local", - "service.type": "zscaler", - "source.bytes": 4686, - "source.ip": "10.236.55.236", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.net", - "url.extension": "jpg", - "url.fragment": "ccusa", - "url.original": "https://api.example.net/mnisiut/eabil.jpg?psumqui=trude#ccusa", - "url.path": "/mnisiut/eabil.jpg", - "url.query": "psumqui=trude", - "url.scheme": "https", - "user.name": "redolo", - "user_agent.device.name": "LM-V350", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-05-13T11:45:57.000Z", - "destination.bytes": 982, - "destination.ip": "10.97.202.149", - "event.action": "Blocked", - "event.code": "itte", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "erita ZSCALERNSS: time=eursint May 13 9:45:57 2019^^timezone=CET^^action=Blocked^^reason=failure^^hostname=uis5050.www.local^^protocol=igmp^^serverip=10.97.202.149^^url=https://api.example.net/uamestq/eetdol.html?ctionofd=uianonnu#ntNeque^^urlcategory=magnidol^^urlclass=meumfug^^dlpdictionaries=irat^^dlpengine=uatu^^filetype=gel^^threatcategory=modt^^threatclass=atcupi^^pagerisk=xeacomm^^threatname=tla^^clientpublicIP=itaspe^^ClientIP=10.13.125.101^^location=uisautei^^refererURL=https://mail.example.net/ihilmol/scinge.jpg?str=yCiceroi#loremeu^^useragent=Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36^^department=velitess^^user=colab^^event_id=itte^^clienttranstime=niamquis^^requestmethod=uaUten^^requestsize=7772^^requestversion=exeacomm^^status=uptat^^responsesize=982^^responseversion=ore^^transactionsize=7330", - "event.timezone": "CET", - "file.type": "gel", - "fileset.name": "zia", - "host.name": "uis5050.www.local", - "http.request.referrer": "https://mail.example.net/ihilmol/scinge.jpg?str=yCiceroi#loremeu", - "input.type": "log", - "log.offset": 76532, - "network.bytes": 7330, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "uis5050.www.local" - ], - "related.ip": [ - "10.13.125.101", - "10.97.202.149" - ], - "related.user": [ - "colab" - ], - "rsa.db.index": "meumfug", - "rsa.identity.user_dept": "velitess", - "rsa.internal.data": "erita", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "atcupi", - "rsa.misc.action": [ - "Blocked", - "uaUten" - ], - "rsa.misc.category": "modt", - "rsa.misc.filter": "magnidol", - "rsa.misc.reference_id": "itte", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "uptat", - "rsa.network.alias_host": [ - "uis5050.www.local" - ], - "rsa.threat.threat_category": "tla", - "rsa.time.event_time": "2019-05-13T11:45:57.000Z", - "rsa.time.timezone": "CET", - "rsa.web.fqdn": "uis5050.www.local", - "service.type": "zscaler", - "source.bytes": 7772, - "source.ip": "10.13.125.101", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.net", - "url.extension": "html", - "url.fragment": "ntNeque", - "url.original": "https://api.example.net/uamestq/eetdol.html?ctionofd=uianonnu#ntNeque", - "url.path": "/uamestq/eetdol.html", - "url.query": "ctionofd=uianonnu", - "url.scheme": "https", - "user.name": "colab", - "user_agent.device.name": "Micromax P410i", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 4.1.2; Micromax P410i Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36", - "user_agent.os.full": "Android 4.1.2", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.1.2", - "user_agent.version": "63.0.3239.111" - }, - { - "@timestamp": "2019-05-28T06:48:31.000Z", - "destination.bytes": 1324, - "destination.ip": "10.141.66.163", - "event.action": "Blocked", - "event.code": "iduntut", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "poriss ZSCALERNSS: time=enatus May 28 4:48:31 2019^^timezone=GMT+02:00^^action=Blocked^^reason=failure^^hostname=ficiad1312.api.host^^protocol=igmp^^serverip=10.141.66.163^^url=https://mail.example.net/ius/msequ.jpg?ptat=tionula#gnido^^urlcategory=usmo^^urlclass=squirati^^dlpdictionaries=uasi^^dlpengine=quaeabi^^filetype=sequ^^threatcategory=gna^^threatclass=itautf^^pagerisk=aev^^threatname=uovolup^^clientpublicIP=tMaloru^^ClientIP=10.230.61.102^^location=rautod^^refererURL=https://example.net/minimav/uovo.html?orinrep=tNequ#eca^^useragent=Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=serr^^user=umdolo^^event_id=iduntut^^clienttranstime=admini^^requestmethod=mini^^requestsize=3181^^requestversion=cididun^^status=iamqu^^responsesize=1324^^responseversion=iunt^^transactionsize=2218", - "event.timezone": "GMT+02:00", - "file.type": "sequ", - "fileset.name": "zia", - "host.name": "ficiad1312.api.host", - "http.request.referrer": "https://example.net/minimav/uovo.html?orinrep=tNequ#eca", - "input.type": "log", - "log.offset": 77451, - "network.bytes": 2218, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ficiad1312.api.host" - ], - "related.ip": [ - "10.141.66.163", - "10.230.61.102" - ], - "related.user": [ - "umdolo" - ], - "rsa.db.index": "squirati", - "rsa.identity.user_dept": "serr", - "rsa.internal.data": "poriss", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "itautf", - "rsa.misc.action": [ - "Blocked", - "mini" - ], - "rsa.misc.category": "gna", - "rsa.misc.filter": "usmo", - "rsa.misc.reference_id": "iduntut", - "rsa.misc.result": "failure", - "rsa.misc.result_code": "iamqu", - "rsa.network.alias_host": [ - "ficiad1312.api.host" - ], - "rsa.threat.threat_category": "uovolup", - "rsa.time.event_time": "2019-05-28T06:48:31.000Z", - "rsa.time.timezone": "GMT+02:00", - "rsa.web.fqdn": "ficiad1312.api.host", - "service.type": "zscaler", - "source.bytes": 3181, - "source.ip": "10.230.61.102", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "jpg", - "url.fragment": "gnido", - "url.original": "https://mail.example.net/ius/msequ.jpg?ptat=tionula#gnido", - "url.path": "/ius/msequ.jpg", - "url.query": "ptat=tionula", - "url.scheme": "https", - "user.name": "umdolo", - "user_agent.device.name": "ZTE BLADE V7", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-06-11T13:51:06.000Z", - "destination.bytes": 6666, - "destination.ip": "10.10.25.145", - "event.action": "Blocked", - "event.code": "nrepre", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "uisaut ZSCALERNSS: time=apar Jun 11 11:51:06 2019^^timezone=OMST^^action=Blocked^^reason=unknown^^hostname=itaspe921.mail.invalid^^protocol=tcp^^serverip=10.10.25.145^^url=https://www.example.org/iat/acom.html?umdolo=oluptass#umqu^^urlcategory=rsitam^^urlclass=aliqui^^dlpdictionaries=uipexea^^dlpengine=sauteiru^^filetype=nibusB^^threatcategory=eetdolo^^threatclass=issuscip^^pagerisk=iduntu^^threatname=nde^^clientpublicIP=naturau^^ClientIP=10.224.249.228^^location=odit^^refererURL=https://www5.example.net/lapa/enia.jpg?deserun=ugia#isiuta^^useragent=Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36^^department=ugiatq^^user=mnisiuta^^event_id=nrepre^^clienttranstime=eumfu^^requestmethod=remap^^requestsize=1954^^requestversion=yCicero^^status=dqui^^responsesize=6666^^responseversion=oin^^transactionsize=3838", - "event.timezone": "OMST", - "file.type": "nibusB", - "fileset.name": "zia", - "host.name": "itaspe921.mail.invalid", - "http.request.referrer": "https://www5.example.net/lapa/enia.jpg?deserun=ugia#isiuta", - "input.type": "log", - "log.offset": 78335, - "network.bytes": 3838, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "itaspe921.mail.invalid" - ], - "related.ip": [ - "10.10.25.145", - "10.224.249.228" - ], - "related.user": [ - "mnisiuta" - ], - "rsa.db.index": "aliqui", - "rsa.identity.user_dept": "ugiatq", - "rsa.internal.data": "uisaut", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "issuscip", - "rsa.misc.action": [ - "Blocked", - "remap" - ], - "rsa.misc.category": "eetdolo", - "rsa.misc.filter": "rsitam", - "rsa.misc.reference_id": "nrepre", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "dqui", - "rsa.network.alias_host": [ - "itaspe921.mail.invalid" - ], - "rsa.threat.threat_category": "nde", - "rsa.time.event_time": "2019-06-11T13:51:06.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "itaspe921.mail.invalid", - "service.type": "zscaler", - "source.bytes": 1954, - "source.ip": "10.224.249.228", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.org", - "url.extension": "html", - "url.fragment": "umqu", - "url.original": "https://www.example.org/iat/acom.html?umdolo=oluptass#umqu", - "url.path": "/iat/acom.html", - "url.query": "umdolo=oluptass", - "url.scheme": "https", - "user.name": "mnisiuta", - "user_agent.device.name": "LM-V350", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; LM-V350) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-06-25T08:53:40.000Z", - "destination.bytes": 3750, - "destination.ip": "10.234.34.40", - "event.action": "Blocked", - "event.code": "dolori", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "eiusm ZSCALERNSS: time=assit Jun 25 6:53:40 2019^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=archite4407.mail.invalid^^protocol=ipv6-icmp^^serverip=10.234.34.40^^url=https://www.example.com/onorum/umiure.gif?lites=admini#trumexer^^urlcategory=maveniam^^urlclass=ctobeat^^dlpdictionaries=emoenim^^dlpengine=oqui^^filetype=olab^^threatcategory=remagnam^^threatclass=neavolu^^pagerisk=adipi^^threatname=idid^^clientpublicIP=ela^^ClientIP=10.247.255.107^^location=lore^^refererURL=https://www5.example.org/olorsi/everitat.htm?iamq=ercitat#velillu^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=elitsed^^user=aeabillo^^event_id=dolori^^clienttranstime=mco^^requestmethod=nofdeF^^requestsize=245^^requestversion=writt^^status=ent^^responsesize=3750^^responseversion=uaer^^transactionsize=2304", - "event.timezone": "PT", - "file.type": "olab", - "fileset.name": "zia", - "host.name": "archite4407.mail.invalid", - "http.request.referrer": "https://www5.example.org/olorsi/everitat.htm?iamq=ercitat#velillu", - "input.type": "log", - "log.offset": 79223, - "network.bytes": 2304, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "archite4407.mail.invalid" - ], - "related.ip": [ - "10.234.34.40", - "10.247.255.107" - ], - "related.user": [ - "aeabillo" - ], - "rsa.db.index": "ctobeat", - "rsa.identity.user_dept": "elitsed", - "rsa.internal.data": "eiusm", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "neavolu", - "rsa.misc.action": [ - "Blocked", - "nofdeF" - ], - "rsa.misc.category": "remagnam", - "rsa.misc.filter": "maveniam", - "rsa.misc.reference_id": "dolori", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "ent", - "rsa.network.alias_host": [ - "archite4407.mail.invalid" - ], - "rsa.threat.threat_category": "idid", - "rsa.time.event_time": "2019-06-25T08:53:40.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "archite4407.mail.invalid", - "service.type": "zscaler", - "source.bytes": 245, - "source.ip": "10.247.255.107", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.com", - "url.extension": "gif", - "url.fragment": "trumexer", - "url.original": "https://www.example.com/onorum/umiure.gif?lites=admini#trumexer", - "url.path": "/onorum/umiure.gif", - "url.query": "lites=admini", - "url.scheme": "https", - "user.name": "aeabillo", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-07-10T03:56:14.000Z", - "destination.bytes": 412, - "destination.ip": "10.124.81.20", - "event.action": "Blocked", - "event.code": "piciatis", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "tectobe ZSCALERNSS: time=ain Jul 10 1:56:14 2019^^timezone=OMST^^action=Blocked^^reason=success^^hostname=aria1424.mail.home^^protocol=igmp^^serverip=10.124.81.20^^url=https://mail.example.org/veni/rspi.htm?ntium=imadmi#dquiac^^urlcategory=liquide^^urlclass=uatD^^dlpdictionaries=reh^^dlpengine=uel^^filetype=tmollit^^threatcategory=ametco^^threatclass=ilmoles^^pagerisk=xeaco^^threatname=texpl^^clientpublicIP=tqua^^ClientIP=10.250.102.42^^location=totamr^^refererURL=https://internal.example.com/iciat/uira.htm?cti=orsitvo#elit^^useragent=Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36^^department=tenby^^user=tNequ^^event_id=piciatis^^clienttranstime=ritten^^requestmethod=tatisetq^^requestsize=2753^^requestversion=madmi^^status=icia^^responsesize=412^^responseversion=eroi^^transactionsize=2077", - "event.timezone": "OMST", - "file.type": "tmollit", - "fileset.name": "zia", - "host.name": "aria1424.mail.home", - "http.request.referrer": "https://internal.example.com/iciat/uira.htm?cti=orsitvo#elit", - "input.type": "log", - "log.offset": 80114, - "network.bytes": 2077, - "network.protocol": "igmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "aria1424.mail.home" - ], - "related.ip": [ - "10.124.81.20", - "10.250.102.42" - ], - "related.user": [ - "tNequ" - ], - "rsa.db.index": "uatD", - "rsa.identity.user_dept": "tenby", - "rsa.internal.data": "tectobe", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ilmoles", - "rsa.misc.action": [ - "Blocked", - "tatisetq" - ], - "rsa.misc.category": "ametco", - "rsa.misc.filter": "liquide", - "rsa.misc.reference_id": "piciatis", - "rsa.misc.result": "success", - "rsa.misc.result_code": "icia", - "rsa.network.alias_host": [ - "aria1424.mail.home" - ], - "rsa.threat.threat_category": "texpl", - "rsa.time.event_time": "2019-07-10T03:56:14.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "aria1424.mail.home", - "service.type": "zscaler", - "source.bytes": 2753, - "source.ip": "10.250.102.42", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "htm", - "url.fragment": "dquiac", - "url.original": "https://mail.example.org/veni/rspi.htm?ntium=imadmi#dquiac", - "url.path": "/veni/rspi.htm", - "url.query": "ntium=imadmi", - "url.scheme": "https", - "user.name": "tNequ", - "user_agent.device.name": "Pixel 3", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "66.0.3359.158" - }, - { - "@timestamp": "2019-07-24T10:58:48.000Z", - "destination.bytes": 5294, - "destination.ip": "10.166.205.159", - "event.action": "Allowed", - "event.code": "siutal", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "riatur ZSCALERNSS: time=amrema Jul 24 8:58:48 2019^^timezone=OMST^^action=Allowed^^reason=unknown^^hostname=Bonoru7444.www5.example^^protocol=rdp^^serverip=10.166.205.159^^url=https://www.example.com/tem/litsedq.htm?ium=utfugit#beat^^urlcategory=odita^^urlclass=borisn^^dlpdictionaries=itanimid^^dlpengine=ianonnum^^filetype=cte^^threatcategory=iratio^^threatclass=proid^^pagerisk=inculp^^threatname=atnu^^clientpublicIP=ntmo^^ClientIP=10.154.188.132^^location=atevelit^^refererURL=https://internal.example.com/iconsequ/adipisci.txt?gnido=iamq#Utenim^^useragent=Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10^^department=uisa^^user=uptat^^event_id=siutal^^clienttranstime=umetMalo^^requestmethod=onevolu^^requestsize=4181^^requestversion=sedquian^^status=involu^^responsesize=5294^^responseversion=nsequatD^^transactionsize=7089", - "event.timezone": "OMST", - "file.type": "cte", - "fileset.name": "zia", - "host.name": "Bonoru7444.www5.example", - "http.request.referrer": "https://internal.example.com/iconsequ/adipisci.txt?gnido=iamq#Utenim", - "input.type": "log", - "log.offset": 81010, - "network.bytes": 7089, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "Bonoru7444.www5.example" - ], - "related.ip": [ - "10.154.188.132", - "10.166.205.159" - ], - "related.user": [ - "uptat" - ], - "rsa.db.index": "borisn", - "rsa.identity.user_dept": "uisa", - "rsa.internal.data": "riatur", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "proid", - "rsa.misc.action": [ - "Allowed", - "onevolu" - ], - "rsa.misc.category": "iratio", - "rsa.misc.filter": "odita", - "rsa.misc.reference_id": "siutal", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "involu", - "rsa.network.alias_host": [ - "Bonoru7444.www5.example" - ], - "rsa.threat.threat_category": "atnu", - "rsa.time.event_time": "2019-07-24T10:58:48.000Z", - "rsa.time.timezone": "OMST", - "rsa.web.fqdn": "Bonoru7444.www5.example", - "service.type": "zscaler", - "source.bytes": 4181, - "source.ip": "10.154.188.132", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "beat", - "url.original": "https://www.example.com/tem/litsedq.htm?ium=utfugit#beat", - "url.path": "/tem/litsedq.htm", - "url.query": "ium=utfugit", - "url.scheme": "https", - "user.name": "uptat", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2019-08-07T06:01:23.000Z", - "destination.bytes": 274, - "destination.ip": "10.46.71.46", - "event.action": "Allowed", - "event.code": "ugiat", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "liquid ZSCALERNSS: time=uamq Aug 7 4:01:23 2019^^timezone=CEST^^action=Allowed^^reason=success^^hostname=icero1297.internal.domain^^protocol=ipv6-icmp^^serverip=10.46.71.46^^url=https://www.example.com/amcola/eumiurer.gif?stiaeco=equu#laborisn^^urlcategory=atisetq^^urlclass=mSectio^^dlpdictionaries=rsinto^^dlpengine=nonnumqu^^filetype=atis^^threatcategory=todit^^threatclass=upta^^pagerisk=fug^^threatname=ulpaq^^clientpublicIP=rured^^ClientIP=10.138.193.38^^location=udex^^refererURL=https://api.example.com/uin/isci.htm?nsectetu=spici#untutl^^useragent=Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10^^department=tate^^user=sintocca^^event_id=ugiat^^clienttranstime=asuntex^^requestmethod=uovolup^^requestsize=745^^requestversion=amali^^status=uiav^^responsesize=274^^responseversion=mullamco^^transactionsize=7843", - "event.timezone": "CEST", - "file.type": "atis", - "fileset.name": "zia", - "host.name": "icero1297.internal.domain", - "http.request.referrer": "https://api.example.com/uin/isci.htm?nsectetu=spici#untutl", - "input.type": "log", - "log.offset": 81941, - "network.bytes": 7843, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "icero1297.internal.domain" - ], - "related.ip": [ - "10.138.193.38", - "10.46.71.46" - ], - "related.user": [ - "sintocca" - ], - "rsa.db.index": "mSectio", - "rsa.identity.user_dept": "tate", - "rsa.internal.data": "liquid", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "upta", - "rsa.misc.action": [ - "Allowed", - "uovolup" - ], - "rsa.misc.category": "todit", - "rsa.misc.filter": "atisetq", - "rsa.misc.reference_id": "ugiat", - "rsa.misc.result": "success", - "rsa.misc.result_code": "uiav", - "rsa.network.alias_host": [ - "icero1297.internal.domain" - ], - "rsa.threat.threat_category": "ulpaq", - "rsa.time.event_time": "2019-08-07T06:01:23.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.fqdn": "icero1297.internal.domain", - "service.type": "zscaler", - "source.bytes": 745, - "source.ip": "10.138.193.38", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.com", - "url.extension": "gif", - "url.fragment": "laborisn", - "url.original": "https://www.example.com/amcola/eumiurer.gif?stiaeco=equu#laborisn", - "url.path": "/amcola/eumiurer.gif", - "url.query": "stiaeco=equu", - "url.scheme": "https", - "user.name": "sintocca", - "user_agent.device.name": "Spider", - "user_agent.name": "Other", - "user_agent.original": "Mozilla/5.0 (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html) yahoo.adquality.lwd.desktop/1591143192-10" - }, - { - "@timestamp": "2019-08-21T13:03:57.000Z", - "destination.bytes": 2804, - "destination.ip": "10.254.119.31", - "event.action": "Blocked", - "event.code": "uunturma", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ons ZSCALERNSS: time=radip Aug 21 11:03:57 2019^^timezone=CT^^action=Blocked^^reason=unknown^^hostname=oloremeu5047.www5.invalid^^protocol=tcp^^serverip=10.254.119.31^^url=https://api.example.net/sedquian/lamcorpo.html?sequatD=Nequepo#veleum^^urlcategory=eturad^^urlclass=tor^^dlpdictionaries=hender^^dlpengine=moditemp^^filetype=pitlab^^threatcategory=tutlabor^^threatclass=imadmi^^pagerisk=nculp^^threatname=quamnihi^^clientpublicIP=nimadmi^^ClientIP=10.172.159.251^^location=nima^^refererURL=https://mail.example.org/tur/tlaboru.htm?tutlabo=incid#der^^useragent=Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90^^department=tconsect^^user=usm^^event_id=uunturma^^clienttranstime=namaliqu^^requestmethod=tatemacc^^requestsize=2324^^requestversion=nor^^status=saut^^responsesize=2804^^responseversion=stiaeco^^transactionsize=1508", - "event.timezone": "CT", - "file.type": "pitlab", - "fileset.name": "zia", - "host.name": "oloremeu5047.www5.invalid", - "http.request.referrer": "https://mail.example.org/tur/tlaboru.htm?tutlabo=incid#der", - "input.type": "log", - "log.offset": 82861, - "network.bytes": 1508, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "oloremeu5047.www5.invalid" - ], - "related.ip": [ - "10.172.159.251", - "10.254.119.31" - ], - "related.user": [ - "usm" - ], - "rsa.db.index": "tor", - "rsa.identity.user_dept": "tconsect", - "rsa.internal.data": "ons", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "imadmi", - "rsa.misc.action": [ - "Blocked", - "tatemacc" - ], - "rsa.misc.category": "tutlabor", - "rsa.misc.filter": "eturad", - "rsa.misc.reference_id": "uunturma", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "saut", - "rsa.network.alias_host": [ - "oloremeu5047.www5.invalid" - ], - "rsa.threat.threat_category": "quamnihi", - "rsa.time.event_time": "2019-08-21T13:03:57.000Z", - "rsa.time.timezone": "CT", - "rsa.web.fqdn": "oloremeu5047.www5.invalid", - "service.type": "zscaler", - "source.bytes": 2324, - "source.ip": "10.172.159.251", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "api.example.net", - "url.extension": "html", - "url.fragment": "veleum", - "url.original": "https://api.example.net/sedquian/lamcorpo.html?sequatD=Nequepo#veleum", - "url.path": "/sedquian/lamcorpo.html", - "url.query": "sequatD=Nequepo", - "url.scheme": "https", - "user.name": "usm", - "user_agent.device.name": "U20", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "44.0.2403.147" - }, - { - "@timestamp": "2019-09-05T08:06:31.000Z", - "destination.bytes": 4957, - "destination.ip": "10.195.62.230", - "event.action": "Allowed", - "event.code": "sequat", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "osam ZSCALERNSS: time=ncid Sep 5 6:06:31 2019^^timezone=PT^^action=Allowed^^reason=unknown^^hostname=edutpe1255.internal.lan^^protocol=ipv6-icmp^^serverip=10.195.62.230^^url=https://www5.example.com/ictasun/iumto.txt?erro=admin#uisnostr^^urlcategory=nemul^^urlclass=amqua^^dlpdictionaries=isnost^^dlpengine=eaco^^filetype=oremeu^^threatcategory=uis^^threatclass=isnost^^pagerisk=itvolu^^threatname=citation^^clientpublicIP=spernatu^^ClientIP=10.98.126.206^^location=tion^^refererURL=https://internal.example.org/uidolore/uatDuisa.htm?uipe=alo#ufugia^^useragent=Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]^^department=atatnonp^^user=ptassit^^event_id=sequat^^clienttranstime=Uteni^^requestmethod=oriosa^^requestsize=7244^^requestversion=temporai^^status=totamrem^^responsesize=4957^^responseversion=dminimve^^transactionsize=1182", - "event.timezone": "PT", - "file.type": "oremeu", - "fileset.name": "zia", - "host.name": "edutpe1255.internal.lan", - "http.request.referrer": "https://internal.example.org/uidolore/uatDuisa.htm?uipe=alo#ufugia", - "input.type": "log", - "log.offset": 83817, - "network.bytes": 1182, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "edutpe1255.internal.lan" - ], - "related.ip": [ - "10.195.62.230", - "10.98.126.206" - ], - "related.user": [ - "ptassit" - ], - "rsa.db.index": "amqua", - "rsa.identity.user_dept": "atatnonp", - "rsa.internal.data": "osam", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "isnost", - "rsa.misc.action": [ - "Allowed", - "oriosa" - ], - "rsa.misc.category": "uis", - "rsa.misc.filter": "nemul", - "rsa.misc.reference_id": "sequat", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "totamrem", - "rsa.network.alias_host": [ - "edutpe1255.internal.lan" - ], - "rsa.threat.threat_category": "citation", - "rsa.time.event_time": "2019-09-05T08:06:31.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "edutpe1255.internal.lan", - "service.type": "zscaler", - "source.bytes": 7244, - "source.ip": "10.98.126.206", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.com", - "url.extension": "txt", - "url.fragment": "uisnostr", - "url.original": "https://www5.example.com/ictasun/iumto.txt?erro=admin#uisnostr", - "url.path": "/ictasun/iumto.txt", - "url.query": "erro=admin", - "url.scheme": "https", - "user.name": "ptassit", - "user_agent.device.name": "Samsung SM-A715F", - "user_agent.name": "Facebook", - "user_agent.original": "Mozilla/5.0 (Linux; Android 10; SM-A715F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.83 Mobile Safari/537.36 [FB_IAB/Orca-Android;FBAV/266.0.0.16.117;]", - "user_agent.os.full": "Android 10", - "user_agent.os.name": "Android", - "user_agent.os.version": "10", - "user_agent.version": "266.0.0" - }, - { - "@timestamp": "2019-09-19T03:09:05.000Z", - "destination.bytes": 6658, - "destination.ip": "10.144.93.186", - "event.action": "Blocked", - "event.code": "adminim", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "idolo ZSCALERNSS: time=citat Sep 19 1:09:05 2019^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=nderit1171.www5.domain^^protocol=rdp^^serverip=10.144.93.186^^url=https://www5.example.org/oriosa/ssusc.htm?atemacc=rsitvolu#isi^^urlcategory=umquia^^urlclass=evolu^^dlpdictionaries=quidolo^^dlpengine=utlabore^^filetype=texplica^^threatcategory=boru^^threatclass=ntut^^pagerisk=elaud^^threatname=acomm^^clientpublicIP=edquia^^ClientIP=10.84.140.5^^location=laboris^^refererURL=https://www.example.org/lpaquiof/isisten.txt?culp=Ciceroin#aeco^^useragent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36^^department=mull^^user=eroi^^event_id=adminim^^clienttranstime=naturau^^requestmethod=nima^^requestsize=4943^^requestversion=sed^^status=mUten^^responsesize=6658^^responseversion=tfugitse^^transactionsize=6480", - "event.timezone": "PT", - "file.type": "texplica", - "fileset.name": "zia", - "host.name": "nderit1171.www5.domain", - "http.request.referrer": "https://www.example.org/lpaquiof/isisten.txt?culp=Ciceroin#aeco", - "input.type": "log", - "log.offset": 84805, - "network.bytes": 6480, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "nderit1171.www5.domain" - ], - "related.ip": [ - "10.144.93.186", - "10.84.140.5" - ], - "related.user": [ - "eroi" - ], - "rsa.db.index": "evolu", - "rsa.identity.user_dept": "mull", - "rsa.internal.data": "idolo", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "ntut", - "rsa.misc.action": [ - "Blocked", - "nima" - ], - "rsa.misc.category": "boru", - "rsa.misc.filter": "umquia", - "rsa.misc.reference_id": "adminim", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "mUten", - "rsa.network.alias_host": [ - "nderit1171.www5.domain" - ], - "rsa.threat.threat_category": "acomm", - "rsa.time.event_time": "2019-09-19T03:09:05.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "nderit1171.www5.domain", - "service.type": "zscaler", - "source.bytes": 4943, - "source.ip": "10.84.140.5", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.org", - "url.extension": "htm", - "url.fragment": "isi", - "url.original": "https://www5.example.org/oriosa/ssusc.htm?atemacc=rsitvolu#isi", - "url.path": "/oriosa/ssusc.htm", - "url.query": "atemacc=rsitvolu", - "url.scheme": "https", - "user.name": "eroi", - "user_agent.device.name": "Mac", - "user_agent.name": "Yandex Browser", - "user_agent.original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2221 Yowser/2.5 Safari/537.36", - "user_agent.os.full": "Mac OS X 10.15.6", - "user_agent.os.name": "Mac OS X", - "user_agent.os.version": "10.15.6", - "user_agent.version": "20.3.0" - }, - { - "@timestamp": "2019-10-03T10:11:40.000Z", - "destination.bytes": 6855, - "destination.ip": "10.31.58.6", - "event.action": "Allowed", - "event.code": "volu", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "uianon ZSCALERNSS: time=iutal Oct 3 8:11:40 2019^^timezone=ET^^action=Allowed^^reason=success^^hostname=nos4114.api.lan^^protocol=rdp^^serverip=10.31.58.6^^url=https://mail.example.net/tseddoei/byCi.gif?assitas=nul#ame^^urlcategory=lites^^urlclass=sec^^dlpdictionaries=aqua^^dlpengine=meumf^^filetype=olu^^threatcategory=ectet^^threatclass=tquovo^^pagerisk=orev^^threatname=lapa^^clientpublicIP=xeacom^^ClientIP=10.198.84.190^^location=henderi^^refererURL=https://mail.example.com/dminim/sse.gif?equ=turvelil#lor^^useragent=Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80^^department=ern^^user=unt^^event_id=volu^^clienttranstime=iineavo^^requestmethod=qua^^requestsize=6831^^requestversion=tenbyC^^status=xeacomm^^responsesize=6855^^responseversion=psu^^transactionsize=5856", - "event.timezone": "ET", - "file.type": "olu", - "fileset.name": "zia", - "host.name": "nos4114.api.lan", - "http.request.referrer": "https://mail.example.com/dminim/sse.gif?equ=turvelil#lor", - "input.type": "log", - "log.offset": 85726, - "network.bytes": 5856, - "network.protocol": "rdp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "nos4114.api.lan" - ], - "related.ip": [ - "10.198.84.190", - "10.31.58.6" - ], - "related.user": [ - "unt" - ], - "rsa.db.index": "sec", - "rsa.identity.user_dept": "ern", - "rsa.internal.data": "uianon", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tquovo", - "rsa.misc.action": [ - "Allowed", - "qua" - ], - "rsa.misc.category": "ectet", - "rsa.misc.filter": "lites", - "rsa.misc.reference_id": "volu", - "rsa.misc.result": "success", - "rsa.misc.result_code": "xeacomm", - "rsa.network.alias_host": [ - "nos4114.api.lan" - ], - "rsa.threat.threat_category": "lapa", - "rsa.time.event_time": "2019-10-03T10:11:40.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "nos4114.api.lan", - "service.type": "zscaler", - "source.bytes": 6831, - "source.ip": "10.198.84.190", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.net", - "url.extension": "gif", - "url.fragment": "ame", - "url.original": "https://mail.example.net/tseddoei/byCi.gif?assitas=nul#ame", - "url.path": "/tseddoei/byCi.gif", - "url.query": "assitas=nul", - "url.scheme": "https", - "user.name": "unt", - "user_agent.device.name": "Android", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 5.1.1; Android Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36 YaApp_Android/9.80 YaSearchBrowser/9.80", - "user_agent.os.full": "Android 5.1.1", - "user_agent.os.name": "Android", - "user_agent.os.version": "5.1.1", - "user_agent.version": "81.0.4044.138" - }, - { - "@timestamp": "2019-10-18T05:14:14.000Z", - "destination.bytes": 3128, - "destination.ip": "10.139.90.218", - "event.action": "Allowed", - "event.code": "umdol", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "ept ZSCALERNSS: time=nem Oct 18 3:14:14 2019^^timezone=ET^^action=Allowed^^reason=unknown^^hostname=oremeum4231.internal.host^^protocol=ipv6^^serverip=10.139.90.218^^url=https://www5.example.org/liquipe/rehe.gif?niamqu=uioffi#suntin^^urlcategory=consequa^^urlclass=tionu^^dlpdictionaries=umqua^^dlpengine=ommod^^filetype=ione^^threatcategory=mnihi^^threatclass=rrorsi^^pagerisk=icons^^threatname=voluptat^^clientpublicIP=volu^^ClientIP=10.131.81.172^^location=llamcor^^refererURL=https://mail.example.com/veri/run.txt?enimadm=empo#apa^^useragent=Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30^^department=icons^^user=hende^^event_id=umdol^^clienttranstime=Sedutper^^requestmethod=exe^^requestsize=6188^^requestversion=preh^^status=dol^^responsesize=3128^^responseversion=gnamal^^transactionsize=6119", - "event.timezone": "ET", - "file.type": "ione", - "fileset.name": "zia", - "host.name": "oremeum4231.internal.host", - "http.request.referrer": "https://mail.example.com/veri/run.txt?enimadm=empo#apa", - "input.type": "log", - "log.offset": 86632, - "network.bytes": 6119, - "network.protocol": "ipv6", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "oremeum4231.internal.host" - ], - "related.ip": [ - "10.131.81.172", - "10.139.90.218" - ], - "related.user": [ - "hende" - ], - "rsa.db.index": "tionu", - "rsa.identity.user_dept": "icons", - "rsa.internal.data": "ept", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Permit", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "rrorsi", - "rsa.misc.action": [ - "Allowed", - "exe" - ], - "rsa.misc.category": "mnihi", - "rsa.misc.filter": "consequa", - "rsa.misc.reference_id": "umdol", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "dol", - "rsa.network.alias_host": [ - "oremeum4231.internal.host" - ], - "rsa.threat.threat_category": "voluptat", - "rsa.time.event_time": "2019-10-18T05:14:14.000Z", - "rsa.time.timezone": "ET", - "rsa.web.fqdn": "oremeum4231.internal.host", - "service.type": "zscaler", - "source.bytes": 6188, - "source.ip": "10.131.81.172", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www5.example.org", - "url.extension": "gif", - "url.fragment": "suntin", - "url.original": "https://www5.example.org/liquipe/rehe.gif?niamqu=uioffi#suntin", - "url.path": "/liquipe/rehe.gif", - "url.query": "niamqu=uioffi", - "url.scheme": "https", - "user.name": "hende", - "user_agent.device.name": "Samsung GT-P3100 ", - "user_agent.name": "Android", - "user_agent.original": "Mozilla/5.0 (Linux; U; Android 4.0.3; es-us; GT-P3100 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30", - "user_agent.os.full": "Android 4.0.3", - "user_agent.os.name": "Android", - "user_agent.os.version": "4.0.3", - "user_agent.version": "4.0.3" - }, - { - "@timestamp": "2019-11-01T12:16:48.000Z", - "destination.bytes": 114, - "destination.ip": "10.128.43.71", - "event.action": "Blocked", - "event.code": "ssequa", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "utodit ZSCALERNSS: time=cer Nov 1 10:16:48 2019^^timezone=PST^^action=Blocked^^reason=unknown^^hostname=ueip6097.api.host^^protocol=tcp^^serverip=10.128.43.71^^url=https://www.example.org/erit/asiarch.gif?tdolor=oremagna#siuta^^urlcategory=amnihil^^urlclass=nderit^^dlpdictionaries=ficia^^dlpengine=tru^^filetype=tionu^^threatcategory=natuser^^threatclass=olupt^^pagerisk=eprehe^^threatname=eetd^^clientpublicIP=tiumdo^^ClientIP=10.152.217.174^^location=litse^^refererURL=https://internal.example.com/nde/tNequepo.txt?end=ineavolu#ptate^^useragent=Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36^^department=nderitin^^user=mquiado^^event_id=ssequa^^clienttranstime=nisist^^requestmethod=temvele^^requestsize=7350^^requestversion=xeaco^^status=urm^^responsesize=114^^responseversion=porincid^^transactionsize=1150", - "event.timezone": "PST", - "file.type": "tionu", - "fileset.name": "zia", - "host.name": "ueip6097.api.host", - "http.request.referrer": "https://internal.example.com/nde/tNequepo.txt?end=ineavolu#ptate", - "input.type": "log", - "log.offset": 87518, - "network.bytes": 1150, - "network.protocol": "tcp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "ueip6097.api.host" - ], - "related.ip": [ - "10.128.43.71", - "10.152.217.174" - ], - "related.user": [ - "mquiado" - ], - "rsa.db.index": "nderit", - "rsa.identity.user_dept": "nderitin", - "rsa.internal.data": "utodit", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "olupt", - "rsa.misc.action": [ - "Blocked", - "temvele" - ], - "rsa.misc.category": "natuser", - "rsa.misc.filter": "amnihil", - "rsa.misc.reference_id": "ssequa", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "urm", - "rsa.network.alias_host": [ - "ueip6097.api.host" - ], - "rsa.threat.threat_category": "eetd", - "rsa.time.event_time": "2019-11-01T12:16:48.000Z", - "rsa.time.timezone": "PST", - "rsa.web.fqdn": "ueip6097.api.host", - "service.type": "zscaler", - "source.bytes": 7350, - "source.ip": "10.152.217.174", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.org", - "url.extension": "gif", - "url.fragment": "siuta", - "url.original": "https://www.example.org/erit/asiarch.gif?tdolor=oremagna#siuta", - "url.path": "/erit/asiarch.gif", - "url.query": "tdolor=oremagna", - "url.scheme": "https", - "user.name": "mquiado", - "user_agent.device.name": "Notepad_K10", - "user_agent.name": "Chrome", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; Notepad_K10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Safari/537.36", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "83.0.4103.83" - }, - { - "@timestamp": "2019-11-15T07:19:22.000Z", - "destination.bytes": 1046, - "destination.ip": "10.26.149.221", - "event.action": "Blocked", - "event.code": "umquidol", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "pici ZSCALERNSS: time=erit Nov 15 5:19:22 2019^^timezone=PT^^action=Blocked^^reason=success^^hostname=fugiatqu7793.www.localdomain^^protocol=ipv6-icmp^^serverip=10.26.149.221^^url=https://mail.example.org/maven/tectob.jpg?litsedd=mnis#ainci^^urlcategory=aturve^^urlclass=tiumdol^^dlpdictionaries=mporain^^dlpengine=secte^^filetype=dut^^threatcategory=aecons^^threatclass=tionemu^^pagerisk=edictasu^^threatname=quipexea^^clientpublicIP=orsit^^ClientIP=10.217.193.148^^location=tametco^^refererURL=https://api.example.com/lit/laborio.gif?mfug=acommod#mid^^useragent=Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36^^department=oloremag^^user=uisa^^event_id=umquidol^^clienttranstime=isiutali^^requestmethod=rehe^^requestsize=3382^^requestversion=adminima^^status=ipex^^responsesize=1046^^responseversion=sitvolup^^transactionsize=387", - "event.timezone": "PT", - "file.type": "dut", - "fileset.name": "zia", - "host.name": "fugiatqu7793.www.localdomain", - "http.request.referrer": "https://api.example.com/lit/laborio.gif?mfug=acommod#mid", - "input.type": "log", - "log.offset": 88400, - "network.bytes": 387, - "network.protocol": "ipv6-icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "fugiatqu7793.www.localdomain" - ], - "related.ip": [ - "10.217.193.148", - "10.26.149.221" - ], - "related.user": [ - "uisa" - ], - "rsa.db.index": "tiumdol", - "rsa.identity.user_dept": "oloremag", - "rsa.internal.data": "pici", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "tionemu", - "rsa.misc.action": [ - "Blocked", - "rehe" - ], - "rsa.misc.category": "aecons", - "rsa.misc.filter": "aturve", - "rsa.misc.reference_id": "umquidol", - "rsa.misc.result": "success", - "rsa.misc.result_code": "ipex", - "rsa.network.alias_host": [ - "fugiatqu7793.www.localdomain" - ], - "rsa.threat.threat_category": "quipexea", - "rsa.time.event_time": "2019-11-15T07:19:22.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "fugiatqu7793.www.localdomain", - "service.type": "zscaler", - "source.bytes": 3382, - "source.ip": "10.217.193.148", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.org", - "url.extension": "jpg", - "url.fragment": "ainci", - "url.original": "https://mail.example.org/maven/tectob.jpg?litsedd=mnis#ainci", - "url.path": "/maven/tectob.jpg", - "url.query": "litsedd=mnis", - "url.scheme": "https", - "user.name": "uisa", - "user_agent.device.name": "QMobile X700 PRO II", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; QMobile X700 PRO II) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "77.0.3865.92" - }, - { - "@timestamp": "2019-11-30T14:21:57.000Z", - "destination.bytes": 4053, - "destination.ip": "10.109.192.53", - "event.action": "Blocked", - "event.code": "rehen", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "agnamali ZSCALERNSS: time=ali Nov 30 12:21:57 2019^^timezone=CET^^action=Blocked^^reason=unknown^^hostname=onsequ3168.www.corp^^protocol=icmp^^serverip=10.109.192.53^^url=https://www.example.com/siarch/oloremi.htm?one=iduntutl#tNe^^urlcategory=scive^^urlclass=tcupi^^dlpdictionaries=essequam^^dlpengine=destla^^filetype=oluptat^^threatcategory=ita^^threatclass=temUte^^pagerisk=idest^^threatname=ostru^^clientpublicIP=ptassit^^ClientIP=10.172.17.6^^location=samvolup^^refererURL=https://www5.example.org/taspe/empori.txt?emporain=ovo#aeabillo^^useragent=Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90^^department=boriosa^^user=eprehen^^event_id=rehen^^clienttranstime=sitasp^^requestmethod=tassit^^requestsize=212^^requestversion=teir^^status=suntin^^responsesize=4053^^responseversion=upta^^transactionsize=1487", - "event.timezone": "CET", - "file.type": "oluptat", - "fileset.name": "zia", - "host.name": "onsequ3168.www.corp", - "http.request.referrer": "https://www5.example.org/taspe/empori.txt?emporain=ovo#aeabillo", - "input.type": "log", - "log.offset": 89317, - "network.bytes": 1487, - "network.protocol": "icmp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "onsequ3168.www.corp" - ], - "related.ip": [ - "10.109.192.53", - "10.172.17.6" - ], - "related.user": [ - "eprehen" - ], - "rsa.db.index": "tcupi", - "rsa.identity.user_dept": "boriosa", - "rsa.internal.data": "agnamali", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "temUte", - "rsa.misc.action": [ - "Blocked", - "tassit" - ], - "rsa.misc.category": "ita", - "rsa.misc.filter": "scive", - "rsa.misc.reference_id": "rehen", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "suntin", - "rsa.network.alias_host": [ - "onsequ3168.www.corp" - ], - "rsa.threat.threat_category": "ostru", - "rsa.time.event_time": "2019-11-30T14:21:57.000Z", - "rsa.time.timezone": "CET", - "rsa.web.fqdn": "onsequ3168.www.corp", - "service.type": "zscaler", - "source.bytes": 212, - "source.ip": "10.172.17.6", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "www.example.com", - "url.extension": "htm", - "url.fragment": "tNe", - "url.original": "https://www.example.com/siarch/oloremi.htm?one=iduntutl#tNe", - "url.path": "/siarch/oloremi.htm", - "url.query": "one=iduntutl", - "url.scheme": "https", - "user.name": "eprehen", - "user_agent.device.name": "U20", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 6.0; U20 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.147 Mobile Safari/537.36 YaApp_Android/10.90 YaSearchBrowser/10.90", - "user_agent.os.full": "Android 6.0", - "user_agent.os.name": "Android", - "user_agent.os.version": "6.0", - "user_agent.version": "44.0.2403.147" - }, - { - "@timestamp": "2019-12-14T09:24:31.000Z", - "destination.bytes": 391, - "destination.ip": "10.119.106.108", - "event.action": "Blocked", - "event.code": "iatisund", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "onevol ZSCALERNSS: time=llamco Dec 14 7:24:31 2019^^timezone=PT^^action=Blocked^^reason=unknown^^hostname=oremquel3120.internal.localhost^^protocol=ggp^^serverip=10.119.106.108^^url=https://mail.example.com/ostr/liqu.txt?niam=mullamc#umtota^^urlcategory=ssecil^^urlclass=xplic^^dlpdictionaries=isn^^dlpengine=quepor^^filetype=Lor^^threatcategory=ten^^threatclass=exeacomm^^pagerisk=cusan^^threatname=oquisq^^clientpublicIP=olli^^ClientIP=10.135.38.213^^location=tiset^^refererURL=https://mail.example.net/erspici/xercitat.jpg?Exce=uae#tut^^useragent=Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61^^department=ser^^user=ore^^event_id=iatisund^^clienttranstime=ritquii^^requestmethod=volup^^requestsize=1902^^requestversion=orsi^^status=ull^^responsesize=391^^responseversion=dolorsi^^transactionsize=7745", - "event.timezone": "PT", - "file.type": "Lor", - "fileset.name": "zia", - "host.name": "oremquel3120.internal.localhost", - "http.request.referrer": "https://mail.example.net/erspici/xercitat.jpg?Exce=uae#tut", - "input.type": "log", - "log.offset": 90257, - "network.bytes": 7745, - "network.protocol": "ggp", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "oremquel3120.internal.localhost" - ], - "related.ip": [ - "10.119.106.108", - "10.135.38.213" - ], - "related.user": [ - "ore" - ], - "rsa.db.index": "xplic", - "rsa.identity.user_dept": "ser", - "rsa.internal.data": "onevol", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_activity": "Deny", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "exeacomm", - "rsa.misc.action": [ - "Blocked", - "volup" - ], - "rsa.misc.category": "ten", - "rsa.misc.filter": "ssecil", - "rsa.misc.reference_id": "iatisund", - "rsa.misc.result": "unknown", - "rsa.misc.result_code": "ull", - "rsa.network.alias_host": [ - "oremquel3120.internal.localhost" - ], - "rsa.threat.threat_category": "oquisq", - "rsa.time.event_time": "2019-12-14T09:24:31.000Z", - "rsa.time.timezone": "PT", - "rsa.web.fqdn": "oremquel3120.internal.localhost", - "service.type": "zscaler", - "source.bytes": 1902, - "source.ip": "10.135.38.213", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.domain": "mail.example.com", - "url.extension": "txt", - "url.fragment": "umtota", - "url.original": "https://mail.example.com/ostr/liqu.txt?niam=mullamc#umtota", - "url.path": "/ostr/liqu.txt", - "url.query": "niam=mullamc", - "url.scheme": "https", - "user.name": "ore", - "user_agent.device.name": "5024D_RU", - "user_agent.name": "Chrome Mobile", - "user_agent.original": "Mozilla/5.0 (Linux; Android 9; 5024D_RU Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36 YaApp_Android/10.61 YaSearchBrowser/10.61", - "user_agent.os.full": "Android 9", - "user_agent.os.name": "Android", - "user_agent.os.version": "9", - "user_agent.version": "77.0.3865.92" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/zscaler/zia/test/test.log b/x-pack/filebeat/module/zscaler/zia/test/test.log deleted file mode 100644 index f1502e48309..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/test/test.log +++ /dev/null @@ -1 +0,0 @@ -hello ZSCALERNSS: time=WOOT Jun 23 15:16:42 2017^^timezone=CEST^^action=^^reason=^^hostname=^^protocol=^^serverip=^^url=^^urlcategory=^^urlclass=^^dlpdictionaries=^^dlpengine=^^filetype=^^threatcategory=^^threatclass=^^pagerisk=^^threatname=^^clientpublicIP=^^ClientIP=^^location=^^refererURL=^^useragent=^^department=^^user=^^event_id=^^clienttranstime=^^requestmethod=^^requestsize=^^requestversion=^^status=^^responsesize=^^responseversion=^^transactionsize= diff --git a/x-pack/filebeat/module/zscaler/zia/test/test.log-expected.json b/x-pack/filebeat/module/zscaler/zia/test/test.log-expected.json deleted file mode 100644 index f8ce01de30d..00000000000 --- a/x-pack/filebeat/module/zscaler/zia/test/test.log-expected.json +++ /dev/null @@ -1,60 +0,0 @@ -[ - { - "@timestamp": "2017-06-23T17:16:42.000Z", - "event.action": "", - "event.code": "", - "event.dataset": "zscaler.zia", - "event.module": "zscaler", - "event.original": "hello ZSCALERNSS: time=WOOT Jun 23 15:16:42 2017^^timezone=CEST^^action=^^reason=^^hostname=^^protocol=^^serverip=^^url=^^urlcategory=^^urlclass=^^dlpdictionaries=^^dlpengine=^^filetype=^^threatcategory=^^threatclass=^^pagerisk=^^threatname=^^clientpublicIP=^^ClientIP=^^location=^^refererURL=^^useragent=^^department=^^user=^^event_id=^^clienttranstime=^^requestmethod=^^requestsize=^^requestversion=^^status=^^responsesize=^^responseversion=^^transactionsize=", - "event.timezone": "CEST", - "file.type": "", - "fileset.name": "zia", - "host.name": "", - "http.request.referrer": "", - "input.type": "log", - "log.offset": 0, - "network.protocol": "", - "observer.product": "Internet", - "observer.type": "Configuration", - "observer.vendor": "Zscaler", - "related.hosts": [ - "" - ], - "related.user": [ - "" - ], - "rsa.db.index": "", - "rsa.identity.user_dept": "", - "rsa.internal.data": "hello", - "rsa.internal.messageid": "ZSCALERNSS_1", - "rsa.investigations.ec_subject": "User", - "rsa.investigations.ec_theme": "Communication", - "rsa.investigations.event_vcat": "", - "rsa.misc.action": [ - "", - "" - ], - "rsa.misc.category": "", - "rsa.misc.filter": "", - "rsa.misc.reference_id": "", - "rsa.misc.result": "", - "rsa.misc.result_code": "", - "rsa.network.alias_host": [ - "" - ], - "rsa.threat.threat_category": "", - "rsa.time.event_time": "2017-06-23T17:16:42.000Z", - "rsa.time.timezone": "CEST", - "rsa.web.fqdn": "", - "service.type": "zscaler", - "tags": [ - "forwarded", - "zscaler.zia" - ], - "url.original": "", - "user.name": "", - "user_agent.device.name": "Other", - "user_agent.name": "Other", - "user_agent.original": "" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/modules.d/barracuda.yml.disabled b/x-pack/filebeat/modules.d/barracuda.yml.disabled deleted file mode 100644 index 3926a2fec96..00000000000 --- a/x-pack/filebeat/modules.d/barracuda.yml.disabled +++ /dev/null @@ -1,41 +0,0 @@ -# Module: barracuda -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-barracuda.html - -- module: barracuda - waf: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9503 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - spamfirewall: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9524 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/bluecoat.yml.disabled b/x-pack/filebeat/modules.d/bluecoat.yml.disabled deleted file mode 100644 index 28badfd0def..00000000000 --- a/x-pack/filebeat/modules.d/bluecoat.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: bluecoat -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-bluecoat.html - -- module: bluecoat - director: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9505 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/cisco.yml.disabled b/x-pack/filebeat/modules.d/cisco.yml.disabled index b2aca39798e..636ed03fcfd 100644 --- a/x-pack/filebeat/modules.d/cisco.yml.disabled +++ b/x-pack/filebeat/modules.d/cisco.yml.disabled @@ -96,44 +96,6 @@ # Filebeat will choose the paths depending on your OS. #var.paths: - nexus: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9506 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - meraki: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9525 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - umbrella: enabled: false diff --git a/x-pack/filebeat/modules.d/cylance.yml.disabled b/x-pack/filebeat/modules.d/cylance.yml.disabled deleted file mode 100644 index 48cbb166e82..00000000000 --- a/x-pack/filebeat/modules.d/cylance.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: cylance -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-cylance.html - -- module: cylance - protect: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9508 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/f5.yml.disabled b/x-pack/filebeat/modules.d/f5.yml.disabled deleted file mode 100644 index cb9399134fe..00000000000 --- a/x-pack/filebeat/modules.d/f5.yml.disabled +++ /dev/null @@ -1,41 +0,0 @@ -# Module: f5 -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-f5.html - -- module: f5 - bigipapm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9504 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - bigipafm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9528 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/fortinet.yml.disabled b/x-pack/filebeat/modules.d/fortinet.yml.disabled index 2c7092892ae..86ba39d3218 100644 --- a/x-pack/filebeat/modules.d/fortinet.yml.disabled +++ b/x-pack/filebeat/modules.d/fortinet.yml.disabled @@ -30,60 +30,3 @@ # [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/network-direction-processor.html#supported-named-network-ranges). # This can't be used in combination with internal_interfaces and external_interfaces. #var.internal_networks: [ "private" ] - - clientendpoint: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9510 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - fortimail: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9529 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - fortimanager: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9530 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/imperva.yml.disabled b/x-pack/filebeat/modules.d/imperva.yml.disabled deleted file mode 100644 index e6616398303..00000000000 --- a/x-pack/filebeat/modules.d/imperva.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: imperva -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-imperva.html - -- module: imperva - securesphere: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9511 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/infoblox.yml.disabled b/x-pack/filebeat/modules.d/infoblox.yml.disabled deleted file mode 100644 index 910a896d12a..00000000000 --- a/x-pack/filebeat/modules.d/infoblox.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: infoblox -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-infoblox.html - -- module: infoblox - nios: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9512 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/juniper.yml.disabled b/x-pack/filebeat/modules.d/juniper.yml.disabled index 5fb85afc302..92f66eec68e 100644 --- a/x-pack/filebeat/modules.d/juniper.yml.disabled +++ b/x-pack/filebeat/modules.d/juniper.yml.disabled @@ -2,44 +2,6 @@ # Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-juniper.html - module: juniper - junos: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9513 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - - netscreen: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9523 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local - srx: enabled: false diff --git a/x-pack/filebeat/modules.d/microsoft.yml.disabled b/x-pack/filebeat/modules.d/microsoft.yml.disabled index 4c5528f5b76..efa8e98fdbd 100644 --- a/x-pack/filebeat/modules.d/microsoft.yml.disabled +++ b/x-pack/filebeat/modules.d/microsoft.yml.disabled @@ -29,25 +29,7 @@ # Oauth Token URL, should include the tenant ID #var.oauth2.token_url: "https://login.microsoftonline.com/TENANT-ID/oauth2/v2.0/token" - + # Related scopes, default should be included #var.oauth2.scopes: # - "https://api.security.microsoft.com/.default" - dhcp: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9515 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/netscout.yml.disabled b/x-pack/filebeat/modules.d/netscout.yml.disabled deleted file mode 100644 index 6a0e4c0dce6..00000000000 --- a/x-pack/filebeat/modules.d/netscout.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: netscout -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-netscout.html - -- module: netscout - sightline: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9502 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/proofpoint.yml.disabled b/x-pack/filebeat/modules.d/proofpoint.yml.disabled deleted file mode 100644 index 2c5dfec92e5..00000000000 --- a/x-pack/filebeat/modules.d/proofpoint.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: proofpoint -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-proofpoint.html - -- module: proofpoint - emailsecurity: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9531 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/radware.yml.disabled b/x-pack/filebeat/modules.d/radware.yml.disabled deleted file mode 100644 index fe39a7b805e..00000000000 --- a/x-pack/filebeat/modules.d/radware.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: radware -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-radware.html - -- module: radware - defensepro: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9518 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/snort.yml.disabled b/x-pack/filebeat/modules.d/snort.yml.disabled deleted file mode 100644 index d8befbb7d7c..00000000000 --- a/x-pack/filebeat/modules.d/snort.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: snort -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-snort.html - -- module: snort - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9532 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/sonicwall.yml.disabled b/x-pack/filebeat/modules.d/sonicwall.yml.disabled deleted file mode 100644 index cf0706bdd81..00000000000 --- a/x-pack/filebeat/modules.d/sonicwall.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: sonicwall -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-sonicwall.html - -- module: sonicwall - firewall: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9519 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/sophos.yml.disabled b/x-pack/filebeat/modules.d/sophos.yml.disabled index 42aa513de7e..cc7049f5dcc 100644 --- a/x-pack/filebeat/modules.d/sophos.yml.disabled +++ b/x-pack/filebeat/modules.d/sophos.yml.disabled @@ -25,22 +25,3 @@ #- serial_number: "1234234590678557" # hostname: "b.host.local" - - utm: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9533 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/squid.yml.disabled b/x-pack/filebeat/modules.d/squid.yml.disabled deleted file mode 100644 index bc34fdcb5a6..00000000000 --- a/x-pack/filebeat/modules.d/squid.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: squid -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-squid.html - -- module: squid - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9520 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/tomcat.yml.disabled b/x-pack/filebeat/modules.d/tomcat.yml.disabled deleted file mode 100644 index 1fda24706e3..00000000000 --- a/x-pack/filebeat/modules.d/tomcat.yml.disabled +++ /dev/null @@ -1,23 +0,0 @@ -# Module: tomcat -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-tomcat.html - -- module: tomcat - log: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9501 - - # Set paths for the log files when file input is used. - # var.paths: - # - /var/log/tomcat/*.log - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local diff --git a/x-pack/filebeat/modules.d/zscaler.yml.disabled b/x-pack/filebeat/modules.d/zscaler.yml.disabled deleted file mode 100644 index 8ca0cea079c..00000000000 --- a/x-pack/filebeat/modules.d/zscaler.yml.disabled +++ /dev/null @@ -1,22 +0,0 @@ -# Module: zscaler -# Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-zscaler.html - -- module: zscaler - zia: - enabled: false - - # Set which input to use between udp (default), tcp or file. - # var.input: udp - # var.syslog_host: localhost - # var.syslog_port: 9521 - - # Set paths for the log files when file input is used. - # var.paths: - - # Toggle output of non-ECS fields (default true). - # var.rsa_fields: true - - # Set custom timezone offset. - # "local" (default) for system timezone. - # "+02:00" for GMT+02:00 - # var.tz_offset: local From b6f47aa8969fcf748e7b4df97c8e967c5ed58fd6 Mon Sep 17 00:00:00 2001 From: Kush Rana <89848966+kush-elastic@users.noreply.github.com> Date: Mon, 15 Apr 2024 22:15:24 +0530 Subject: [PATCH 155/313] x-pack/filebeat/module/salesforce: Refactor a Salesforce module (#37509) Co-authored-by: subham sarkar Co-authored-by: Aman <38116245+devamanv@users.noreply.github.com> Co-authored-by: Aliabbas Attarwala <124054599+aliabbas-elastic@users.noreply.github.com> --- CHANGELOG.next.asciidoc | 1 + filebeat/docs/fields.asciidoc | 472 +++-- filebeat/docs/filebeat-options.asciidoc | 3 + .../filebeat-salesforce-login-dashboard.png | Bin 716935 -> 1740229 bytes .../filebeat-salesforce-logout-dashboard.png | Bin 272972 -> 1390003 bytes ...t-salesforce-setupaudittrail-dashboard.png | Bin 0 -> 697297 bytes filebeat/docs/modules/salesforce.asciidoc | 569 ++++-- go.sum | 2 +- libbeat/tests/system/beat/beat.py | 17 +- .../docs/inputs/input-salesforce.asciidoc | 97 +- x-pack/filebeat/filebeat.reference.yml | 216 +- x-pack/filebeat/input/salesforce/input.go | 6 +- .../module/salesforce/_meta/config.yml | 260 +-- .../module/salesforce/_meta/docs.asciidoc | 570 ++++-- .../243e40b0-f891-11ee-9088-0f36517484ce.json | 763 +++++++ .../6e6bee90-f7e6-11ee-9088-0f36517484ce.json | 1770 +++++++++++++++++ .../c66be450-f891-11ee-9088-0f36517484ce.json | 548 +++++ .../cb7b4a40-f7ff-11ee-9088-0f36517484ce.json | 1552 +++++++++++++++ ...-1659aef0-574c-11ec-8f0b-05e8b06e1b10.json | 330 --- ...-59ef0af0-5749-11ec-8f0b-05e8b06e1b10.json | 296 --- ...-6c750440-5749-11ec-8f0b-05e8b06e1b10.json | 158 -- ...-790da810-5749-11ec-8f0b-05e8b06e1b10.json | 165 -- .../15bcb8a0-f891-11ee-9088-0f36517484ce.json | 192 ++ .../5c2e6bc0-5d6c-11ec-9523-d1b667ac64c0.json | 142 -- .../c9668e10-f88e-11ee-9088-0f36517484ce.json | 192 ++ ...2752cec0-f804-11ee-9088-0f36517484ce.json} | 48 +- .../3e7187a0-f894-11ee-9088-0f36517484ce.json | 44 + .../769ba1c0-4b84-11ec-9959-a3c0f68b1e4f.json | 73 - .../b3b98110-5d92-11ec-9523-d1b667ac64c0.json | 71 - .../ef8b6070-5d6d-11ec-9523-d1b667ac64c0.json | 67 - .../50e50c20-5749-11ec-8f0b-05e8b06e1b10.json | 13 - .../17f0a5d0-5750-11ec-8f0b-05e8b06e1b10.json | 113 -- .../24c39ae0-574d-11ec-8f0b-05e8b06e1b10.json | 166 -- .../27897120-5d6d-11ec-9523-d1b667ac64c0.json | 178 -- .../2a11e7a0-cd35-11ec-83d5-7f8e1b7a2529.json | 85 - .../2b7921e0-5d6d-11ec-9523-d1b667ac64c0.json | 117 -- .../31366a60-5751-11ec-8f0b-05e8b06e1b10.json | 183 -- .../33be8340-5d90-11ec-9523-d1b667ac64c0.json | 117 -- .../416da3a0-574f-11ec-8f0b-05e8b06e1b10.json | 120 -- .../4f9923d0-574c-11ec-8f0b-05e8b06e1b10.json | 127 -- .../5b503310-4b8c-11ec-9959-a3c0f68b1e4f.json | 194 -- .../61eec180-5750-11ec-8f0b-05e8b06e1b10.json | 176 -- .../6d86efd0-5751-11ec-8f0b-05e8b06e1b10.json | 197 -- .../7a22ead0-5758-11ec-8f0b-05e8b06e1b10.json | 36 - .../80c0b730-5d90-11ec-9523-d1b667ac64c0.json | 178 -- .../86081670-5d95-11ec-9523-d1b667ac64c0.json | 212 -- .../8cec4c30-574c-11ec-8f0b-05e8b06e1b10.json | 127 -- .../93c37330-5751-11ec-8f0b-05e8b06e1b10.json | 179 -- .../ab958760-5d90-11ec-9523-d1b667ac64c0.json | 176 -- .../baeaca80-cd2b-11ec-83d5-7f8e1b7a2529.json | 177 -- .../c69e97e0-5d72-11ec-9523-d1b667ac64c0.json | 101 - .../cf5f92c0-4b8a-11ec-9959-a3c0f68b1e4f.json | 178 -- .../e6da1080-5d8f-11ec-9523-d1b667ac64c0.json | 117 -- .../e8175600-5d90-11ec-9523-d1b667ac64c0.json | 118 -- .../f4e05440-5d72-11ec-9523-d1b667ac64c0.json | 101 - .../f5942600-5d95-11ec-9523-d1b667ac64c0.json | 179 -- .../fbb560f0-5d8e-11ec-9523-d1b667ac64c0.json | 114 -- .../salesforce/apex-rest/_meta/fields.yml | 203 -- .../salesforce/apex-rest/config/apex-rest.yml | 71 - .../salesforce/apex-rest/ingest/pipeline.yml | 353 ---- .../module/salesforce/apex-rest/manifest.yml | 20 - .../module/salesforce/apex/_meta/fields.yml | 174 ++ .../module/salesforce/apex/config/apex.yml | 40 + .../salesforce/apex/ingest/pipeline.yml | 531 +++++ .../module/salesforce/apex/manifest.yml | 19 + .../test/salesforce_apex_callout.ndjson.log | 0 ...orce_apex_callout.ndjson.log-expected.json | 16 +- .../test/salesforce_apex_execution.ndjson.log | 0 ...ce_apex_execution.ndjson.log-expected.json | 20 +- ...alesforce_apex_external_callout.ndjson.log | 0 ..._external_callout.ndjson.log-expected.json | 22 +- .../test/salesforce_apex_rest.ndjson.log | 0 ...esforce_apex_rest.ndjson.log-expected.json | 28 +- .../test/salesforce_apex_soap.ndjson.log | 0 ...esforce_apex_soap.ndjson.log-expected.json | 27 +- .../test/salesforce_apex_trigger.ndjson.log | 0 ...orce_apex_trigger.ndjson.log-expected.json | 18 +- x-pack/filebeat/module/salesforce/fields.go | 2 +- .../salesforce/login-rest/_meta/fields.yml | 62 - .../login-rest/config/login-rest.yml | 71 - .../salesforce/login-rest/ingest/pipeline.yml | 224 --- .../module/salesforce/login-rest/manifest.yml | 20 - .../salesforce/login-stream/_meta/fields.yml | 58 - .../login-stream/config/login-stream.yml | 44 - .../login-stream/ingest/pipeline.yml | 278 --- .../salesforce/login-stream/manifest.yml | 16 - .../module/salesforce/login/_meta/fields.yml | 102 + .../module/salesforce/login/config/login.yml | 71 + .../salesforce/login/ingest/default.yml | 123 ++ .../salesforce/login/ingest/eventlogfile.yml | 221 ++ .../module/salesforce/login/ingest/object.yml | 235 +++ .../module/salesforce/login/manifest.yml | 25 + .../test/salesforce_login_elf.ndjson.log} | 0 ...sforce_login_elf.ndjson.log-expected.json} | 29 +- .../test/salesforce_login_object.ndjson.log} | 0 ...rce_login_object.ndjson.log-expected.json} | 35 +- .../salesforce/logout-rest/_meta/fields.yml | 62 - .../logout-rest/config/logout-rest.yml | 70 - .../logout-rest/ingest/pipeline.yml | 180 -- .../salesforce/logout-rest/manifest.yml | 19 - .../salesforce/logout-stream/_meta/fields.yml | 22 - .../logout-stream/config/logout-stream.yml | 44 - .../logout-stream/ingest/pipeline.yml | 147 -- .../salesforce/logout-stream/manifest.yml | 15 - .../module/salesforce/logout/_meta/fields.yml | 92 + .../salesforce/logout/config/logout.yml | 71 + .../salesforce/logout/ingest/default.yml | 121 ++ .../salesforce/logout/ingest/eventlogfile.yml | 255 +++ .../salesforce/logout/ingest/object.yml | 68 + .../module/salesforce/logout/manifest.yml | 25 + .../test/salesforce_logout_elf.ndjson.log} | 0 ...force_logout_elf.ndjson.log-expected.json} | 25 +- .../test/salesforce_logout_object.ndjson.log} | 0 ...ce_logout_object.ndjson.log-expected.json} | 19 +- x-pack/filebeat/module/salesforce/module.yml | 16 +- .../config/setupaudittrail-rest.yml | 68 - .../setupaudittrail-rest/ingest/pipeline.yml | 142 -- .../setupaudittrail-rest/manifest.yml | 19 - .../salesforce_setupaudittrail.ndjson.log | 1 - ...e_setupaudittrail.ndjson.log-expected.json | 29 - .../_meta/fields.yml | 6 +- .../config/setupaudittrail.yml | 40 + .../setupaudittrail/ingest/pipeline.yml | 177 ++ .../salesforce/setupaudittrail/manifest.yml | 19 + .../salesforce_setupaudittrail.ndjson.log | 1 + ...e_setupaudittrail.ndjson.log-expected.json | 28 + .../modules.d/salesforce.yml.disabled | 260 +-- 127 files changed, 9357 insertions(+), 8245 deletions(-) create mode 100644 filebeat/docs/images/filebeat-salesforce-setupaudittrail-dashboard.png create mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/243e40b0-f891-11ee-9088-0f36517484ce.json create mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/6e6bee90-f7e6-11ee-9088-0f36517484ce.json create mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/c66be450-f891-11ee-9088-0f36517484ce.json create mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/cb7b4a40-f7ff-11ee-9088-0f36517484ce.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10.json create mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/map/15bcb8a0-f891-11ee-9088-0f36517484ce.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/map/5c2e6bc0-5d6c-11ec-9523-d1b667ac64c0.json create mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/map/c9668e10-f88e-11ee-9088-0f36517484ce.json rename x-pack/filebeat/module/salesforce/_meta/kibana/7/search/{51d23250-5d8b-11ec-9523-d1b667ac64c0.json => 2752cec0-f804-11ee-9088-0f36517484ce.json} (56%) create mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/search/3e7187a0-f894-11ee-9088-0f36517484ce.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/search/769ba1c0-4b84-11ec-9959-a3c0f68b1e4f.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/search/b3b98110-5d92-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/search/ef8b6070-5d6d-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/tag/50e50c20-5749-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/17f0a5d0-5750-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/24c39ae0-574d-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/27897120-5d6d-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2a11e7a0-cd35-11ec-83d5-7f8e1b7a2529.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2b7921e0-5d6d-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/31366a60-5751-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/33be8340-5d90-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/416da3a0-574f-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/4f9923d0-574c-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/5b503310-4b8c-11ec-9959-a3c0f68b1e4f.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/61eec180-5750-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/6d86efd0-5751-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/7a22ead0-5758-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/80c0b730-5d90-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/86081670-5d95-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/8cec4c30-574c-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/93c37330-5751-11ec-8f0b-05e8b06e1b10.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/ab958760-5d90-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/baeaca80-cd2b-11ec-83d5-7f8e1b7a2529.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/c69e97e0-5d72-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/cf5f92c0-4b8a-11ec-9959-a3c0f68b1e4f.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e6da1080-5d8f-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e8175600-5d90-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f4e05440-5d72-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f5942600-5d95-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/fbb560f0-5d8e-11ec-9523-d1b667ac64c0.json delete mode 100644 x-pack/filebeat/module/salesforce/apex-rest/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/salesforce/apex-rest/config/apex-rest.yml delete mode 100644 x-pack/filebeat/module/salesforce/apex-rest/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/salesforce/apex-rest/manifest.yml create mode 100644 x-pack/filebeat/module/salesforce/apex/_meta/fields.yml create mode 100644 x-pack/filebeat/module/salesforce/apex/config/apex.yml create mode 100644 x-pack/filebeat/module/salesforce/apex/ingest/pipeline.yml create mode 100644 x-pack/filebeat/module/salesforce/apex/manifest.yml rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_callout.ndjson.log (100%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_callout.ndjson.log-expected.json (82%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_execution.ndjson.log (100%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_execution.ndjson.log-expected.json (66%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_external_callout.ndjson.log (100%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_external_callout.ndjson.log-expected.json (60%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_rest.ndjson.log (100%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_rest.ndjson.log-expected.json (63%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_soap.ndjson.log (100%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_soap.ndjson.log-expected.json (59%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_trigger.ndjson.log (100%) rename x-pack/filebeat/module/salesforce/{apex-rest => apex}/test/salesforce_apex_trigger.ndjson.log-expected.json (62%) delete mode 100644 x-pack/filebeat/module/salesforce/login-rest/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/salesforce/login-rest/config/login-rest.yml delete mode 100644 x-pack/filebeat/module/salesforce/login-rest/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/salesforce/login-rest/manifest.yml delete mode 100644 x-pack/filebeat/module/salesforce/login-stream/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/salesforce/login-stream/config/login-stream.yml delete mode 100644 x-pack/filebeat/module/salesforce/login-stream/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/salesforce/login-stream/manifest.yml create mode 100644 x-pack/filebeat/module/salesforce/login/_meta/fields.yml create mode 100644 x-pack/filebeat/module/salesforce/login/config/login.yml create mode 100644 x-pack/filebeat/module/salesforce/login/ingest/default.yml create mode 100644 x-pack/filebeat/module/salesforce/login/ingest/eventlogfile.yml create mode 100644 x-pack/filebeat/module/salesforce/login/ingest/object.yml create mode 100644 x-pack/filebeat/module/salesforce/login/manifest.yml rename x-pack/filebeat/module/salesforce/{login-rest/test/salesforce_login.ndjson.log => login/test/salesforce_login_elf.ndjson.log} (100%) rename x-pack/filebeat/module/salesforce/{login-rest/test/salesforce_login.ndjson.log-expected.json => login/test/salesforce_login_elf.ndjson.log-expected.json} (67%) rename x-pack/filebeat/module/salesforce/{login-stream/test/salesforce_login.ndjson.log => login/test/salesforce_login_object.ndjson.log} (100%) rename x-pack/filebeat/module/salesforce/{login-stream/test/salesforce_login.ndjson.log-expected.json => login/test/salesforce_login_object.ndjson.log-expected.json} (63%) delete mode 100644 x-pack/filebeat/module/salesforce/logout-rest/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/salesforce/logout-rest/config/logout-rest.yml delete mode 100644 x-pack/filebeat/module/salesforce/logout-rest/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/salesforce/logout-rest/manifest.yml delete mode 100644 x-pack/filebeat/module/salesforce/logout-stream/_meta/fields.yml delete mode 100644 x-pack/filebeat/module/salesforce/logout-stream/config/logout-stream.yml delete mode 100644 x-pack/filebeat/module/salesforce/logout-stream/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/salesforce/logout-stream/manifest.yml create mode 100644 x-pack/filebeat/module/salesforce/logout/_meta/fields.yml create mode 100644 x-pack/filebeat/module/salesforce/logout/config/logout.yml create mode 100644 x-pack/filebeat/module/salesforce/logout/ingest/default.yml create mode 100644 x-pack/filebeat/module/salesforce/logout/ingest/eventlogfile.yml create mode 100644 x-pack/filebeat/module/salesforce/logout/ingest/object.yml create mode 100644 x-pack/filebeat/module/salesforce/logout/manifest.yml rename x-pack/filebeat/module/salesforce/{logout-rest/test/salesforce_logout.ndjson.log => logout/test/salesforce_logout_elf.ndjson.log} (100%) rename x-pack/filebeat/module/salesforce/{logout-rest/test/salesforce_logout.ndjson.log-expected.json => logout/test/salesforce_logout_elf.ndjson.log-expected.json} (67%) rename x-pack/filebeat/module/salesforce/{logout-stream/test/salesforce_logout.ndjson.log => logout/test/salesforce_logout_object.ndjson.log} (100%) rename x-pack/filebeat/module/salesforce/{logout-stream/test/salesforce_logout.ndjson.log-expected.json => logout/test/salesforce_logout_object.ndjson.log-expected.json} (62%) delete mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail-rest/config/setupaudittrail-rest.yml delete mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail-rest/ingest/pipeline.yml delete mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail-rest/manifest.yml delete mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log delete mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log-expected.json rename x-pack/filebeat/module/salesforce/{setupaudittrail-rest => setupaudittrail}/_meta/fields.yml (86%) create mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail/config/setupaudittrail.yml create mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail/ingest/pipeline.yml create mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail/manifest.yml create mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log create mode 100644 x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log-expected.json diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index df8257750b6..d381e8bbb59 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -42,6 +42,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Removed deprecated Barracuda from Beats. Use the https://docs.elastic.co/integrations/barracuda[Barracuda Web Application Firewall] Elastic integration instead. {pull}38037[38037] - Removed deprecated Sophos UTM from Beats. Use the https://docs.elastic.co/integrations/sophos[Sophos] Elastic integration instead. {pull}38037[38037] - Introduce input/netmetrics and refactor netflow input metrics {pull}38055[38055] +- Update Salesforce module to use new Salesforce input. {pull}37509[37509] *Heartbeat* diff --git a/filebeat/docs/fields.asciidoc b/filebeat/docs/fields.asciidoc index d6191d62e7b..a01b5a4fcb6 100644 --- a/filebeat/docs/fields.asciidoc +++ b/filebeat/docs/fields.asciidoc @@ -54542,11 +54542,10 @@ Fileset for ingesting Salesforce Apex logs. -*`salesforce.access_mode`*:: +*`salesforce.instance_url`*:: + -- -The mode of collecting logs from Salesforce - "rest" or "stream". - +The Instance URL of the Salesforce instance. type: keyword @@ -54559,12 +54558,20 @@ Fileset for ingesting Salesforce Apex logs. +*`salesforce.apex.document_id`*:: ++ +-- +Unique ID of the Apex document. + +type: keyword + +-- + *`salesforce.apex.action`*:: + -- Action performed by the callout. - type: keyword -- @@ -54572,10 +54579,9 @@ type: keyword *`salesforce.apex.callout_time`*:: + -- -Time spent waiting on webservice callouts, in milliseconds. +Time spent waiting on web service callouts, in milliseconds. - -type: keyword +type: float -- @@ -54584,7 +54590,6 @@ type: keyword -- The Apex class name. If the class is part of a managed package, this string includes the package namespace. - type: keyword -- @@ -54592,8 +54597,7 @@ type: keyword *`salesforce.apex.client_name`*:: + -- -The name of the client that's using Salesforce services. This field is an optional parameter that can be passed in API calls. If blank, the caller didnt specify a client in the CallOptions header. - +The name of the client that's using Salesforce services. This field is an optional parameter that can be passed in API calls. If blank, the caller didn't specify a client in the CallOptions header. type: keyword @@ -54604,8 +54608,7 @@ type: keyword -- The CPU time in milliseconds used to complete the request. - -type: keyword +type: float -- @@ -54614,8 +54617,7 @@ type: keyword -- Indicates how much activity is occurring in the database. A high value for this field suggests that adding indexes or filters on your queries would benefit performance. - -type: keyword +type: long -- @@ -54624,18 +54626,16 @@ type: keyword -- The CPU time in milliseconds to complete the request. Indicates the amount of activity taking place in the database layer during the request. - -type: keyword +type: float -- *`salesforce.apex.db_total_time`*:: + -- -Time (in milliseconds) spent waiting for database processing in aggregate for all operations in the request. Compare this field to CPU_TIME to determine whether performance issues are occurring in the database layer or in your own code. - +Time (in milliseconds) spent waiting for database processing in aggregate for all operations in the request. Compare this field to cpu_time to determine whether performance issues are occurring in the database layer or in your own code. -type: keyword +type: float -- @@ -54644,7 +54644,6 @@ type: keyword -- Name of the external object being accessed. - type: keyword -- @@ -54654,7 +54653,6 @@ type: keyword -- The name of the object affected by the trigger. - type: keyword -- @@ -54664,7 +54662,6 @@ type: keyword -- The entry point for this Apex execution. - type: keyword -- @@ -54672,8 +54669,7 @@ type: keyword *`salesforce.apex.event_type`*:: + -- -The type of event. The value is always ApexCallout. - +The type of event. type: keyword @@ -54684,8 +54680,7 @@ type: keyword -- How long it took (in milliseconds) for Salesforce to prepare and execute the query. Available in API version 42.0 and later. - -type: keyword +type: float -- @@ -54694,8 +54689,7 @@ type: keyword -- How long it took (in milliseconds) to retrieve the query results from the external system. Available in API version 42.0 and later. - -type: keyword +type: float -- @@ -54704,7 +54698,6 @@ type: keyword -- Field expressions to filter which rows to return. Corresponds to WHERE in SOQL queries. - type: keyword -- @@ -54714,7 +54707,6 @@ type: keyword -- Indicates whether the request is counted against your org's concurrent long-running Apex request limit (true) or not (false). - type: keyword -- @@ -54724,18 +54716,16 @@ type: keyword -- Maximum number of rows to return for a query. Corresponds to LIMIT in SOQL queries. - -type: keyword +type: long -- -*`salesforce.apex.limit_usage_percent`*:: +*`salesforce.apex.limit_usage_pct`*:: + -- The percentage of Apex SOAP calls that were made against the organization's limit. - -type: keyword +type: float -- @@ -54744,7 +54734,6 @@ type: keyword -- The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. - type: keyword -- @@ -54754,7 +54743,6 @@ type: keyword -- The media type of the response. - type: keyword -- @@ -54764,8 +54752,7 @@ type: keyword -- Error or warning message associated with the failed call. - -type: keyword +type: text -- @@ -54774,28 +54761,25 @@ type: keyword -- The name of the calling Apex method. - type: keyword -- -*`salesforce.apex.number_fields`*:: +*`salesforce.apex.fields_count`*:: + -- The number of fields or columns, where applicable. - -type: keyword +type: long -- -*`salesforce.apex.number_soql_queries`*:: +*`salesforce.apex.soql_queries_count`*:: + -- The number of SOQL queries that were executed during the event. - -type: keyword +type: long -- @@ -54804,8 +54788,7 @@ type: keyword -- Number of rows to skip when paging through a result set. Corresponds to OFFSET in SOQL queries. - -type: keyword +type: long -- @@ -54814,7 +54797,6 @@ type: keyword -- Field or column to use for sorting query results, and whether to sort the results in ascending (default) or descending order. Corresponds to ORDER BY in SOQL queries. - type: keyword -- @@ -54824,7 +54806,6 @@ type: keyword -- The 15-character ID of the organization. - type: keyword -- @@ -54834,7 +54815,6 @@ type: keyword -- The SOQL query, if one was performed. - type: keyword -- @@ -54844,68 +54824,61 @@ type: keyword -- The type of outer execution associated with this event. - type: keyword -- -*`salesforce.apex.request.id`*:: +*`salesforce.apex.request_id`*:: + -- -The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same REQUEST_ID. - +The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same request_id. type: keyword -- -*`salesforce.apex.request.status`*:: +*`salesforce.apex.request_status`*:: + -- The status of the request for a page view or user interface action. - type: keyword -- -*`salesforce.apex.rows.total`*:: +*`salesforce.apex.rows_total`*:: + -- Total number of records in the result set. The value is always -1 if the custom adapter's DataSource.Provider class doesn't declare the QUERY_TOTAL_SIZE capability. - -type: keyword +type: long -- -*`salesforce.apex.rows.fetched`*:: +*`salesforce.apex.rows_fetched`*:: + -- Number of rows fetched by the callout. Available in API version 42.0 and later. - -type: keyword +type: long -- -*`salesforce.apex.rows.processed`*:: +*`salesforce.apex.rows_processed`*:: + -- The number of rows that were processed in the request. - -type: keyword +type: long -- *`salesforce.apex.run_time`*:: + -- -Not used for this event type. Use the TIME field instead. +The amount of time that the request took in milliseconds. - -type: keyword +type: float -- @@ -54914,7 +54887,6 @@ type: keyword -- Comma-separated list of fields being queried. Corresponds to SELECT in SOQL queries. - type: keyword -- @@ -54924,7 +54896,6 @@ type: keyword -- Reserved for future use. - type: keyword -- @@ -54934,38 +54905,33 @@ type: keyword -- Number of records retrieved in one second. - -type: keyword +type: float -- - -*`salesforce.apex.trigger.id`*:: +*`salesforce.apex.trigger_id`*:: + -- The 15-character ID of the trigger that was fired. - type: keyword -- -*`salesforce.apex.trigger.name`*:: +*`salesforce.apex.trigger_name`*:: + -- -For triggers coming from managed packages, TRIGGER_NAME includes a namespace prefix separated with a . character. If no namespace prefix is present, the trigger is from an unmanaged trigger. - +For triggers coming from managed packages, trigger_name includes a namespace prefix separated with a . character. If no namespace prefix is present, the trigger is from an unmanaged trigger. type: keyword -- -*`salesforce.apex.trigger.type`*:: +*`salesforce.apex.trigger_type`*:: + -- The type of this trigger. - type: keyword -- @@ -54975,7 +54941,6 @@ type: keyword -- The type of Apex callout. - type: keyword -- @@ -54985,17 +54950,15 @@ type: keyword -- The URI of the page that's receiving the request. - type: keyword -- -*`salesforce.apex.uri_id_derived`*:: +*`salesforce.apex.uri_derived_id`*:: + -- The 18-character case-safe ID of the URI of the page that's receiving the request. - type: keyword -- @@ -55005,7 +54968,6 @@ type: keyword -- The numeric code for the type of client used to make the request (for example, the browser, application, or API). - type: keyword -- @@ -55015,7 +54977,6 @@ type: keyword -- The 18-character case-safe ID of the user who's using Salesforce services through the UI or the API. - type: keyword -- @@ -55023,55 +54984,224 @@ type: keyword [float] === salesforce.login -Fileset for ingesting Salesforce Login (Streaming) logs. +Fileset for ingesting Salesforce Login (REST) logs. +*`salesforce.login.document_id`*:: ++ +-- +Unique Id. + +type: keyword + +-- + *`salesforce.login.application`*:: + -- -The application used to access the org. Possible values include: AppExchange, Browser, Salesforce for iOS, Salesforce Developers API Explorer, N/A +The application used to access the organization. + +type: keyword + +-- +*`salesforce.login.api.type`*:: ++ +-- +The type of Salesforce API request. + +type: keyword + +-- + +*`salesforce.login.api.version`*:: ++ +-- +The version of the Salesforce API that's being used. + type: keyword -- -*`salesforce.login.auth_method_reference`*:: + +*`salesforce.login.auth.service_id`*:: + -- The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. +type: keyword + +-- + +*`salesforce.login.auth.method_reference`*:: ++ +-- +The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. This field is available in API version 51.0 and later. + +type: keyword + +-- + + +*`salesforce.login.session.level`*:: ++ +-- +Session-level security controls user access to features that support it, such as connected apps and reporting. This field is available in API version 42.0 and later. + +type: text + +-- + +*`salesforce.login.session.key`*:: ++ +-- +The user's unique session ID. Use this value to identify all user events within a session. When a user logs out and logs in again, a new session is started. For LoginEvent, this field is often null because the event is captured before a session is created. For example, vMASKIU6AxEr+Op5. This field is available in API version 46.0 and later. type: keyword -- -*`salesforce.login.auth_service_id`*:: +*`salesforce.login.key`*:: + -- -The 18-character ID for an authentication service for a login event. +The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. + +type: keyword + +-- +*`salesforce.login.history_id`*:: ++ +-- +Tracks a user session so you can correlate user activity with a particular login instance. This field is also available on the LoginHistory, AuthSession, and other objects, making it easier to trace events back to a user's original authentication. type: keyword -- +*`salesforce.login.type`*:: ++ +-- +The type of login used to access the session. + +type: keyword + +-- + +*`salesforce.login.geo_id`*:: ++ +-- +The Salesforce ID of the LoginGeo object associated with the login user's IP address. + +type: keyword + +-- + +*`salesforce.login.additional_info`*:: ++ +-- +JSON serialization of additional information that's captured from the HTTP headers during a login request. + +type: text + +-- + *`salesforce.login.client_version`*:: + -- The version number of the login client. If no version number is available, “Unknown” is returned. +type: keyword + +-- + +*`salesforce.login.client_ip`*:: ++ +-- +The IP address of the client that's using Salesforce services. A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as “Salesforce.com IP”. type: keyword -- -*`salesforce.login.created_by_id`*:: +*`salesforce.login.cpu_time`*:: + -- -Unavailable +The CPU time in milliseconds used to complete the request. This field indicates the amount of activity taking place in the app server layer. + +type: long + +-- + +*`salesforce.login.db_time_total`*:: ++ +-- +The time in nanoseconds for a database round trip. Includes time spent in the JDBC driver, network to the database, and DB's CPU time. Compare this field to cpu_time to determine whether performance issues are occurring in the database layer or in your own code. + +type: double + +-- + +*`salesforce.login.event_type`*:: ++ +-- +The type of event. The value is always Login. + +type: keyword + +-- + +*`salesforce.login.organization_id`*:: ++ +-- +The 15-character ID of the organization. + +type: keyword + +-- + +*`salesforce.login.request_id`*:: ++ +-- +The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same REQUEST_ID. + +type: keyword + +-- +*`salesforce.login.request_status`*:: ++ +-- +The status of the request for a page view or user interface action. + +type: keyword + +-- + +*`salesforce.login.run_time`*:: ++ +-- +The amount of time that the request took in milliseconds. + +type: long + +-- + +*`salesforce.login.user_id`*:: ++ +-- +The 15-character ID of the user who's using Salesforce services through the UI or the API. + +type: keyword + +-- + +*`salesforce.login.uri_id_derived`*:: ++ +-- +The 18-character case insensitive ID of the URI of the page that's receiving the request. type: keyword @@ -55082,124 +55212,224 @@ type: keyword -- The amount of time it took to evaluate the transaction security policy, in milliseconds. +type: float + +-- + +*`salesforce.login.login_type`*:: ++ +-- +The type of login used to access the session. type: keyword -- -*`salesforce.login.login_geo_id`*:: +[float] +=== salesforce.logout + +Fileset for parsing Salesforce Logout (REST) logs. + + + +*`salesforce.logout.document_id`*:: + -- -The Salesforce ID of the LoginGeo object associated with the login user’s IP address. +Unique Id. type: keyword -- -*`salesforce.login.login_history_id`*:: + +*`salesforce.logout.session.key`*:: + -- -Tracks a user session so you can correlate user activity with a particular login instance. This field is also available on the LoginHistory, AuthSession, and LoginHistory objects, making it easier to trace events back to a user’s original authentication. +The user's unique session ID. You can use this value to identify all user events within a session. When a user logs out and logs in again, a new session is started. type: keyword -- -*`salesforce.login.login_type`*:: +*`salesforce.logout.session.level`*:: + -- -The type of login used to access the session. +The security level of the session that was used when logging out (e.g. Standard Session or High-Assurance Session). + + +type: text + +-- + +*`salesforce.logout.session.type`*:: ++ +-- +The session type that was used when logging out (e.g. API, Oauth2 or UI). type: keyword -- -*`salesforce.login.policy_id`*:: +*`salesforce.logout.login_key`*:: + -- -The ID of the transaction security policy associated with this event. +The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. type: keyword -- -*`salesforce.login.policy_outcome`*:: + +*`salesforce.logout.api.type`*:: + -- -The result of the transaction policy. +The type of Salesforce API request. type: keyword -- -*`salesforce.login.related_event_identifier`*:: +*`salesforce.logout.api.version`*:: + -- -This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. +The version of the Salesforce API that's being used. type: keyword -- -*`salesforce.login.session_level`*:: +*`salesforce.logout.app_type`*:: + -- -Session-level security controls user access to features that support it, such as connected apps and reporting. Possible values are: HIGH_ASSURANCE, LOW, STANDARD +The application type that was in use upon logging out. type: keyword -- -[float] -=== salesforce.logout +*`salesforce.logout.browser_type`*:: ++ +-- +The identifier string returned by the browser used at login. -Fileset for parsing Salesforce Logout (Streaming) logs. +type: keyword +-- -*`salesforce.logout.created_by_id`*:: +*`salesforce.logout.client_version`*:: + -- -Unavailable +The version of the client that was in use upon logging out. type: keyword -- -*`salesforce.logout.related_event_identifier`*:: +*`salesforce.logout.event_type`*:: + -- -This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. +The type of event. The value is always Logout. type: keyword -- -*`salesforce.logout.replay_id`*:: +*`salesforce.logout.organization_by_id`*:: + -- -Represents an ID value that is populated by the system and refers to the position of the event in the event stream. Replay ID values aren’t guaranteed to be contiguous for consecutive events. A subscriber can store a replay ID value and use it on resubscription to retrieve missed events that are within the retention window. +The 15-character ID of the organization. type: keyword -- -*`salesforce.logout.schema`*:: +*`salesforce.logout.platform_type`*:: ++ +-- +The code for the client platform. If a timeout caused the logout, this field is null. + + +type: keyword + +-- + +*`salesforce.logout.resolution_type`*:: ++ +-- +The screen resolution of the client. If a timeout caused the logout, this field is null. + + +type: keyword + +-- + +*`salesforce.logout.user_id`*:: ++ +-- +The 15-character ID of the user who's using Salesforce services through the UI or the API. + + +type: keyword + +-- + +*`salesforce.logout.user_id_derived`*:: ++ +-- +The 18-character case-safe ID of the user who's using Salesforce services through the UI or the API. + + +type: keyword + +-- + +*`salesforce.logout.user_initiated_logout`*:: ++ +-- +The value is 1 if the user intentionally logged out of the organization by clicking the Logout button. If the user's session timed out due to inactivity or another implicit logout action, the value is 0. + + +type: keyword + +-- + +*`salesforce.logout.created_by_id`*:: + -- Unavailable +type: keyword + +-- + +*`salesforce.logout.event_identifier`*:: ++ +-- +This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. + + +type: keyword + +-- + +*`salesforce.logout.organization_id`*:: ++ +-- +The 15-character ID of the organization. + + type: keyword -- @@ -55211,10 +55441,10 @@ Fileset for ingesting Salesforce SetupAuditTrail logs. -*`salesforce.setup_audit_trail.event_type`*:: +*`salesforce.setup_audit_trail.document_id`*:: + -- -Event type +Unique Id. type: keyword @@ -55254,7 +55484,7 @@ type: keyword *`salesforce.setup_audit_trail.delegate_user`*:: + -- -The Login-As user who executed the action in Setup. If a Login-As user didn’t perform the action, this field is blank. This field is available in API version 35.0 and later. +The Login-As user who executed the action in Setup. If a Login-As user didn't perform the action, this field is blank. This field is available in API version 35.0 and later. type: keyword diff --git a/filebeat/docs/filebeat-options.asciidoc b/filebeat/docs/filebeat-options.asciidoc index 13e4ffde499..d30d3c3b9e3 100644 --- a/filebeat/docs/filebeat-options.asciidoc +++ b/filebeat/docs/filebeat-options.asciidoc @@ -89,6 +89,7 @@ You can configure {beatname_uc} to use the following inputs: * <<{beatname_lc}-input-netflow>> * <<{beatname_lc}-input-o365audit>> * <<{beatname_lc}-input-redis>> +* <<{beatname_lc}-input-salesforce>> * <<{beatname_lc}-input-stdin>> * <<{beatname_lc}-input-syslog>> * <<{beatname_lc}-input-tcp>> @@ -143,6 +144,8 @@ include::../../x-pack/filebeat/docs/inputs/input-o365audit.asciidoc[] include::inputs/input-redis.asciidoc[] +include::../../x-pack/filebeat/docs/inputs/input-salesforce.asciidoc[] + include::inputs/input-stdin.asciidoc[] include::inputs/input-syslog.asciidoc[] diff --git a/filebeat/docs/images/filebeat-salesforce-login-dashboard.png b/filebeat/docs/images/filebeat-salesforce-login-dashboard.png index 72003b0f00fe48a5e3aa05337f1631eab3963f44..dc862bddc011b0498cfa1eee90a9280f356fef29 100644 GIT binary patch literal 1740229 zcmeFZcOaX4`#&D5R;gBTN{ucpinjKqt!mAhv9(5xSZ!=#w$*CUr8c29i4}X6qNNBC zA$DyN6tTzmc6xfA=jeIH=lT8n`-iyQ$^Cv`^L1U<>z(I!HB}hs*y%tZ5W}6@H+4WD zdPNZEBt6X$;7Y(P)C};84637Y9fa&SJqrTyfbQH>((^JW3{m^(lXmyNdmg#-`6*=s z-Q(8<>nF*y9|lS?sX(xmYz}7byK`Bk1`q^my0I<9WPm@6;->QPQ;ciFn1Z*8M}i1D z`y)`fG2V(VoE2v(#z-((ub9E@#7^i!Q}6ojAiRfbw^jKDh>Vg+@&EdRT#@G)$PHwA zq4XJuoQ5ax|M=rQh|JEJ@_%?P6U}dATTpDOy{noiHiWx3kMq zd-mqd2^+4#%nvG&m3~Q})i1DpSD*huQkpS}D^uDI1GOP4^Td((g=>@=ApALb=`;UV zT>;uvG@}d-3BjgVO|uIqfD;Gwf`=1pZ`h>UL?xXCnMLQ;8~zUqWLmn-BaTczVN$Z3 zl|RHMa_&ZjR49M=84!`>OycqXK}+>)LA`f~CpnqNvFLN&-qK$8T+**n!fVc^iTn>* zq1ib5YB2jnoET&Zi~jb_GJO$mZhw@_E}v%h<^R#zfA^1C8n@Zrq3HYgT6f*_hm>%b zr8U#9%X0ljnVOo~!=IA=ZG4=Cn=SLzt5N1MNr6ALMt140v2g|=;k1pdt-!hYSIa9a z6iX)^PyOn|c0S~k@c3b|$(z6Wr=nO;U!S4-o!PXuzP z(b0QN&COZLe$_>coV{y_Rqx{CU!3}N&4G#(^h|-yqxAL5fAb_5eN1a-wprCBAt8f# zoQvKq0|S`wmz|$?D!x5o7xfBmUgLA=;zh7YsZ-_&x3`s*r;q%(lAoc8Tssit#$ztF z_BZ19I`gXgs*zchTko9MJdJ|y*e&o+i>x=Qe+=Iy5fM%Uo_5obv!j0(tVH1;vY8{F zZ0&!(>*qt66i08;9G$^|KYmm)u6;y$ZWtlO1$V;O(Oj9fqO2nqXeA`V5n2!FsC{WOm zlakrw=*FiEU5UERh*9yn__b~nI4?jGHamHw`sC&CUv0D}vOdBNbJ7>`s(%(vFx^;tBrjpNJoQnDRuYY`uB9WYr_Beb0gi+yin18WU&O`!9MHq9M`!wu{2?vMYT!a(-Q&~$P{_|$JLg@M_9->yxbuU)yf$wy zKf9atAg{HzCAX-W9b5u^drUDNy;8UL{pt81#O1E{!b|p#!Ech^zi~NFX_jdc_VJe; zqWdUm6eUUp8vOszFwb2o8b#{4D65fQ?j02ldMNkJ9TU^53SlwNAX6`l6E?236jW+7*k+RG2w__b%alcIUitwO2NBXOhGfp2GaARiI;l zr%FuaHV*$>#w%c5)ZJLi{9l*h5~RX=99TCuV=suM*&tp30_2Fu84((Q;WydZKQiGw9r`j*f{>g4~oRo$rK8 zJzl_sH}U*@A`;|yqZiXm5Tr!HN3OOwR^@iq9Ub}=+Wzjonr^2ZRL&aQ77HrLL~H20G8 zft<+O&pl-*p^?kZ(g0N!4mlC1{}jyci{e2a7|Irl_5L3kLK_~K(tClA@`ofzu3dk! zM$D-Xedd~!5{5utqMKP`I=ikYo4k@l9Gn0&R@hMvm`&vJTV9Si`w?cF)n2UGJYpG& z6^T(r<7#W#KYXBa1mTf;3D7YCp=0dpU4lAW5Pq!y^f?-EB7q-mFSords{&&qmeKyMnELhfM5ZNMPbRs?&iwSc3^KDs$Ay zU%WH+3X1b3I1usgn~M>yWHsA4g;|2aS(Eb$(f)p;bsw#dVO`4m5aN zsc3EHTIIr>GY^PMAj}r-;umYzF@V1kjHeynkj*^UmASP1{5k)=cuEIc>0I%|!V~bc zvR@3(tLsfcC@{AW)r~`{WU^Z&cV|${Oi$+*M8sESX7CG^#EZN1J0yBz-V4S_LDy*I z0$g1SbgDeGbJKbqj@7^7yYw#*|o ze`s+@H4uaXo4Vcl=_x-}Ecu*@P@iu`?AI@`0?X>>Ui6g~V#<!ZHTNk9u0! zFAl%UKpBiN6eYHwdQwTiwwE9|544s!nEGvBu!PaD+PN+aOf2<}sJ46-XD0tifox_N z>Nc5($pV>$n#6$IIG274`$w|){Z$}0<=lzDB*}->9m!YBll|ssq+NyyGz#$^d*0&+ z#Z{GEZD zh08`coH8C;)i;gHknEy%@PY3uY(m|`HQRZh)yZhh(yjgVp;_ma%?~#+C#*}HMhv#s zh&ZH~f^ChIS%R@7~#MQFCuuNlpELnDs6PmVfKZVU(m{STFU-F~X>X2I1}h zsUT&`|N9BGkB`%cQ>J2gY@gyi5!)-aQ2A&lOK_=pos5D@hfTBC`}%dNUFOwKpF9{^ zcW1uVYF&n|cg%f4(oH=s_z;>9i#{R8`>&{I#m9sVC&nv5_nD`FW_?EE* zGk%&{1i9IJ$Cf(w8=Px;uMr;=KrjrUgtxq8&-NhVXX}F~wklPzvlA1HbFbe!JRy3f zXHtJlx9*M57F+cS3&u#>*R_q(J`{PiY% z1u|`nxtv@ybY^g}@hAP|BFXZXFUpcCGQ6UYwVs2T{b z=f98?mouG|JlAEgw}#6mu?IWjkcj4&(pWl$&N#6Fx&`SnGKwvel>Y8+otpK%qmgTa zebSpUATv|r)b$Zh3#E!P{E9f%KxaqXlieQxbo8jQocI@WhBp*kcSYfC0@+*%B40aeouNW`IDr|&@N5OSZoLwCg%nlDGrGiWC zYz>0iYAE$UJ}Xc4jgz!9=xaS-zimH`TxY~E)Z9ofk;sz8mFlqu@e`?A5GA>6VOUh-W73j+bjv`uR&O<$=PH)aOG$5qb7KbwRA-x91 z15zN)vs;-HMAcSaX1;rdD_#9ZdGSK%_#1VySChmR?JkTF*89YR#3M?=NZ^PIwdxoE)f&*OHBS z5HR;~vuV_i>cEWrkvXb3oA8`%x8WBxwkv%-(dMN|*X9QzWxy4sZ9U)`4&uW#!)+>a z42LiYTll?d7JRMhVy5dBHOu@pRUHr*O%B98Dt!|LVPUQ0&P~+|7cTTd zJwRJaV~!jsZ{EByb#@uvp~Bbg2fleLGt;ActDImJ zAIsw#FMbDK?2^oS*-)2gV{fJH{qhZy-*5Y2&1T2!qQKp+&1YT@-iSNfB9FhQzqNMhQ7pss^}BU%m{f1 z4vE2&I2=eMAbOe5>&EscU{Q#HGDzdo@ZMn!SGhtPHGzrUy_b=BAm8E#?bb-Ofwc3S zvN0)CFKSDg`}M2LsNgjvtJ@5pAOG;uo%29+Hu)tw$59dT?iqLPu_WdgD0@s#=X`_m zP{Pd;hvaj26U@H%3o${GTwZ=$Sa(*}b$~1iNC*$cq(J=_H&{F6zX;|9AT<;mcUL6X z)^Ru9Zk1Qju27*la8pyGMlfVz=y zvy>f3r#Ef1jv@6@2M2QRQ+vu)*hA=f4p4N7)-?PfmZ>mP$w{kYk!U_d1>dcZ&|1^t zKAh6X&FTk0sQjn|7~(WB+XcW$45zMrrbFY~DWi^^mb7~k1%*NdG+5Z#bJT=tKl?cD zH7Mh&JT015c&lY+8&+6YSu+F&N+JD4lXSGS+KWkYK)~gI?Y0N2j?InT2+e{{pX3yj z%!pJ-vS}Yb9XMQI|JDFutZTnpXmtxf9^(9$E)`tw?Qohwf1JZtK+~rQAh(6rvaqe$ z>8LHOB)1gzg%Ijv4hz+rC2#u4?3i1H_%FHjOUTHmWbi|=&_4Z`nv$83x?~>@EnV$9 zh4LGtA5=Sd2?^d;Zp4>47n7qi!cU3m5b-6LAPVZskm)IY5D}4{xqfo@2OM5908nz7 z<*LddlpIS*xR=klipb`F}!PWD)QRB$+c9UA(Wd|$AmBsn= zz9pvoQUg=tj0uxWfkneY^V)}xkz5!o`{L;^&49@hB`=qS3=>TZbFKy$FFq315CXx> z=b45Et73!WIeSrw5k2cm82cMFKmlC~XON?JQR9*qq3nJF1@ z*wiW3R5T19@r2Mb{;udwd~kEglMgjg#k2Fj>v>2Yx#kgYcsq*lYqZ1$eWjdys0Aj^l;uhNv@wOH(;bV9fnR))I)3#a`;gfR}!-1lPGJ5^1Q1A zwY}AwiA{OM-^Oa`=$4(E#Af^1zb{>8xNV=UtR-E0wa1xxZz-zQsLq0WDBx)`$!Q+@ zDFfMBpUKY#FT6-|5Or&i5$ty%RCdh%djoy0h_4;p@Td{}8$Mze5XMY+sU5#oNc>>K zp0}yYkQfqC4O5DHo=Ab#7Z9p4E-&31ei~-hzGx4sL<&o~tj_`c_UQT1wX>LC!U!+# zs1pDyABj6neeE~DGw8dXh)3DHz>QZMf69ic>%FT?PtUPxVRYc)x-SRaa4nTjUP&hv zo0atMm>Mt8D9e<+;%O-hl>*x_GBO&JIh!FII<>W5U(-(uao^dW6d9ZI%nY~}4rNrV zqGPo1=(mOtTDUuVx`N5eT2K^dBsm7QwQ7)TE*F)YoUio&>u<)-uNWO=6qRo#CZc6N z{Mxv4Ec{9AOz?ANYw~Un5hU-sTL0Z6lM{N#4kEB}6ScBFw?E1!6*6+Pe8bg4tF>c!Lyj~2$EhncTCiqe5rkT)m3_E6)6h+O zI0^Dzc1>(c%cW{CssAI}D-zJ5Yf4WN2{AU#;Rt<%Umk%j6gp z%NI9vFn7pR={&>f`3VVK*12=%xuvCLp0_NmV(8a_=1mU!20T?&QyYrg_*o3> zqluNs;K5` zkZnM<^?mq$Wr}B(`ACJ41aXjXHG=bTEzlu|tCj2g@Q@cIcg-VG>%!;6kb2(q#XH3m zt@&OGI$Q0B%%Lttiq;SX$v+%13R;jo$a%*nN7Oho1-uAx7hA*fuayP$^bO9`~@|RdfpO;Vr1L!LT9*3bd7#m3zy@ zo!*Fge6@?DKtK3;fz87DNlx9?76(upl$+IEJ-`E5KIPAz(ZmKC8b^vMKYn7ORi`k1 zj)jfQM8TIiaIL9ZP@MCRlmd(w zT*WAW5I88eo5oHDuZitAeh}hz4Wlb=aBqdQ2%vk8n6Itgi%v1s5_$t=>U+D_0js73 z=vt{OAR?Ngv(E1(|{(S&0sd5BxNuQfL)@eM@G40NsBWS6~2@AK-L~ zE1S&CzIt6!f`a<%!|tIfFqm8{C+~1oK;2ZQg`rd2(vqu2<&xk0cPWc@eS_XJz`V$q zB~h)dZM929M4;j8+UT0o0KcT@%>x+d?Onm*Dy}r$C?&O3t$NRAX*5Wch{xuFR)5q1 z)r?%SSrsc&U_5l7)Tt*^%Y}vIU{tiVww}w)pVlub#0~$z^44I@A0x+ky2&UZctjx2^GH0a?+TofaZ`=P<_JVv7V)g^yjcP_z{}Kgdb* zo<-l}DH~(|g0GoCl0SiKxj0iomihTDKRRP;#cUkkx{0A3Hl>~BxnSl?_{jw*@DB39 za*Fy`A4K4@bQ z8W@$Taw&=Sb(IN(RZR0GzU&hHMDL+EcLVnaRk84u*vw>J=3pT{0qp9m2!B%5#y5Hv zR=m2mw|CqM7RPdC=Dnba!(cfEac^NQQ3la^9Jak?002P5tKw_`3K=`JV=CPtiT-#y zDk>^(mcWH1yarJC6-*fxI+TbzJ<_{GLr;&PV!mjIO%V|hAx)a9fXaXOv>3@TQ=lU? zZ+Jh5MZC-e7=DRaf4(=5Gb&clH6K1cKm9R;ny&=HmV0*fWu$zeDe-quXJfV?*8HQh zeK#HmkPF8SZ`^?`%ebbm0uI4mFX#}FT8DOs;5Qrb&EgYcSGPsl37r!H8c-nvh`%RW zFf#6rds6Y44v!|ZLFGO{++0}BcaqC&Ibpoc8x@PQ)Jy}~9@JC8iSZwIFqEzqzlTaUvthjMd0i?WMZaM4jYr9169YtVAZq4! zyUOgCMzg&xQyRsuSzt`XYG}*j+M+>jSnnKzc#p|(V#N@#O=^?~`E3Z}8{+>17yZZt z2WBfuMP@;Po+4yau53<+=iloCu)~9n1heq;+8gMOl>5cyv|m|SSoqS6vf`dRHr~EE zHZ!Rf4Vl-{f7)(!^=cP;Ku13vBV%cfEVqouS30ivO?4S#SM_ASpod5w6mwhr3DycH!zn!=o$(bwp zB74mbKcmZX;)Krk7}{y)z5;E)VZY~)qvSqjXC4LX42TN|xYtN1&B1>bAsFR#t2lRhhw4Cc*mPs&0CP z@4Be+P4Tkp6B)6u)`MOiZBMQ%(226m4OkZ?&Er(gC`C9NONL!l>F<}4c3Qnu;xur} zca4AzRvs~s4$XY;d`ye_hvWL4+D+)8 zFg)r`ch?6MxuO?gVQ-!*PEStzs-MVu&&B;J;&-PA2dY@N4>h8Whk!TyIISex3$cNm zH~~~hSH|_#^%v24dLiPl+z9vR5Xa9}@s~f?KZxvTmk*(p7B(;Hv0-ss@xm5MOc>=L zVZcCL?rNb~i1Tb$tS{+%P9FO@QvsQs%=!69Iy5h6ckC%7DrtUWOJ~~SVQ0SRc(U5= zi9qp{IJa7Rcfl{iG34kD7fB$I4ja^ZumyVf*CHbrw&tuK9*)bJuj-#4Rg6E^e`Y4$ zrD}yT@s-U_od+?WQv_{&k}RhCYr9Qxl-?_z1EuA-9OS84f#pw|%l}qFN}n}F^b>HD zm7xrrI@!x5MgvIap%{uz9cfbNfP>x-&@u!duNGvLCw zmxUhU$=6|3{%ijLXnWEm08?dJ$rEaShH8ehzyMRJ&*kS@7s+_4)2W5{=$#hQ3 zBk;?T!mD}+1E)1xFic#5+6Vd2G}3F={?Vh5f{}Iq%G$vgvw1ujN1%A-wKIJjVE;^s zB8bpKqUIjH*m_qi$FO(Z)LT&RidqgBjs)h{RedXx0gvka z_!~s4{Hg^wWZ;gAm>uWE6o>tsWW6jwMKiGiQ&K|5g;6p6fJ+ zff5hX4A2dw*rh89_(Q37mw^i$ZBh5Q59O(#v!kY6{lmpjp|1GTmR7RGW-rCjIWoQu zo1Y(BYjFLxXzy9K>KmY3nzSQ2L^K7+0pe#y3s4>GsAZWlYD9Jjtzx80Z0<4f1S3S- zGsaFkyKNIw1F<#lkICepJ(R7rrXK2x9l)Sm*MeMkg2eG@MK>%6b#Yq+HmL96QFd{< zwJV7d-X6Cw<>p`P#%Sp4!}~X(_h3>VCGbV+4+Dg!9MCUTS?CK4rMugYy-4xZu&SXj*EN4Pn|!*0=&hk_4OvLekumZ8 zP5dT6JU|$>?F|hl54FfgtQcwuTpsX6vX_fPr91Bjd~1{saB^|zn06cfAiSMBPqLQ% ztJi?Y!}WncVO4XDK>vpgl4}4L;AU6XUi>wk0?5Lh#g3CXqi#=DdC2$)&OOJt#ijjH zkJEmCc8Iq!7lIj0W(U1qb)rc4jGgZ8=F@kg^sSHK>r;aIRWZO^j%XE{CEwV|Wybk; zBtw5DAhuKA%=j~^pFbWrCI07Mf4cu$ZGf+p9Q)4HB?_)FIZgc_&G)pwIF4r&Ks-#f zkKx3n;_M{H94Z;Go;cLU7`tIz{aWf*f*&P7F`cQeG$*kBv2FHz;6k&nQ{S%)ww}8B zbIfnVyzf<8u=)I9kMmOTH-YLC&!|*a3oUlWS5(}3Hb2fRdf|cw#W!Z_(BvAx=?=@9 zhKEVaiRLJV z#btg0EO%CeWf~a4TPo!Nov3a?9^Jb$-)Vb0c{d#S<#osUGq;~8{qm_yfd?yCN-ebc zxq^2GE10youlvirXb?HusuntJ@B4ufW9I;}jze>fBdmJPs~ML|>pwS`MvfK_q`e+5 z?l{B5z#;yLPBy+2pr^p%xNJWL6rr7tXf3)ah_kh*}6Gs+UHikt(0Gd@;-G#VlP z1%$G&{u|~PligWzE0xIZ1vy`o`*sBHqq7k~KlLN}@}KB*1^314bAFKoVEq4zlMH`O z{|^G7JF@~`%b#Wb9QYnO&>tAC<65zhInOf>4)v6Ox9%*!0YxQfezg_!Cn_Cj-dsp@ zhjGn=#A`)GaU1qhTtDx-t3Zx8aiS;R#l>l$_J&M=dVaEU49g$J{L@NtSh+1WXQ zr)@jL75Y7y9k8wksect){T&`A4vt(QzQlLvq9=?1Csjg13mD~G{P;!c?9Z)?Rw)8J z7)vXwp0o1iMxl(5?GCfn_I48N`mMiv)`l|BO|keb_E&l!lidz^#tFCF$M3@;Bf);A z3D>U&bL?mIpZWPDbRcrMH^53_9k^D}|%0-L4& z|2O+fwmI;he+d2mn`T{u$n9IhpxG^&U7O}wV;k8mD%0pz`+cdfKJEc zL?Z0E&EJs3e|`Ucv|}4%e>#c`-bJff9fL)^w%*%n1M5J^tp?M6-azePq)1mm=byRrjxUu>^Px zO2T;cFj)Ur_y3bM032%;9?%ec=km{Zd05K-b{oUMVUx96FMc6x{o6PF@dPydAZ5Qx zZaQ3G{`2zwYP{s=`8A+bZ1UdO!RPkN7xS!*U3$eu`>CuC50dN zKk3S-7;mpZQ)#1@HNZlnSal(l;{U2fG>Y=tvZ@U@q&ol0S}aZzLESEyxJ5Xy2cQT zwEq&3f8KED^O&-zgWP>1zF5=P(TJu60u942C8!8{gZWaRbgS1liSbs1UR#?RNN6-YhHsCCuW;<- zY`9Q7znbE}4Bpk?6%kRJI`(_;gg>Nv{P^)DQBl42c$G`nu61uQv$Jd)1yC82MymF0?e3+)3PBH%bokAcgKFq__#z#!dXqn*V!wJmHM{DHemDb(o(-*oP zl6;VHyqyAF0e=1>&6O)ZY199HedH>D%a5AoW>o6}Fnwn(E~k?jCrC0WvDJ!% zTS1>TMB~ zK<;R|SW7t4tZr>k)`*Y3+mbX-muhQmE!lQ0d=&ZGAL&WBRjR0J8IyYMdJeHwFGw5< zxBq>sL1&l%E)pdLGI8V|U#g2)x&ud?u~kmwCb zd|l(z`l%eiTK5uBt&UPEYVZ8B%FS{2mYeyQhA-dFzH=NaZrjkwOR4dDO+s@z2;k`I z1u-VHHEI4g4_~?iq(?2sqszqy0tnfHRJMrcq2E%kZ9poe+gEPu`0kcY*GspLIWHwO zDoZD5k!(FRHAtJk%O7Gu^oor&x)xyf$Ntfk?gAx_{b#R;xBZt}KhVB>;nmNbK)%~O zI+s7&vE`4f<(C9r&53r#9)BGt^6lmCkDuD5;^*h{#D!1C7yJ}|BKn`iA8x@TB&6vy z(7RZ6OVppr@D+^Gy#MFK!bCm|XVD)TMfQVYfWcWFz(;O$$ z2$+ssa5fNevR|JrGw=K|A@-*WF!CPo*hCMkEvQ+TiIWq-$cY!*3op9y-xwg%lF_I& z&+{H^?fT> z3?5(+px${J&{q8&L8eouvLiTU5_*oD=K8ltVRYhz*BZu*|B_HH3C+oTcC}602^Q=< z+vdjEA>8#0Sty;W6)YB-+u|3OpcH)hCVf605q-P-S*SlPTS38X|^2vz;9Fx9rzFU#t%IzbbeB04N@M(k6M2<)ql z!nvU{m3Ufl!WZ0XIyItYQNHX$YNM9s{#(IC+tB0|cg>#Ue2#SAVbd&OPwQ5TGc&U< zO0%=lP`zMv^_9Dc3VAP7@^cm?7IAB^im*sV%;S%Iy)k)%R+UrvD=2}wyDsJ;IyWjy z*X)qZgU>;z_*~{oWHac7>rW6vcV|Uy#>V((@kSTgbHP~BTE@{d&}syQRBMNDj@zf+ z@9kKmGAcN@TCT!nS7NcvV6V{99m0_rGj+d2v&hFbL$$3HTLYt4eoEbZQNY7yV(zYa z3IL*W-5sGLuN;1hdh=Vx%(JMB@eXKrrzcOIRE|wq7-8HNdb+lzg^}fYLsgj$ zf+y^hNTzu4}p$jeiwW_)l-4ptVyDRB2u=$Zi*S5SaoT#tJ%<2njwd8Bn){ce2P z)^?jaaI9qOUh_rZNMh#Mb7$SA6U(xk;?Hxl%(?WHI?1dq?$?6tgM1g`QUMw-J6p-( zhj;HZ!@|Py>e{haR=ye~Lsq5)x0+a@`Mw;(p$896mPQ$6&K z-L0l7lRRW-(&?0qthuHm98Dj|?=jPhKbUVQ>*cF@dhF`pHF#7~-C2#Xl$K(}j=gOz z4rH3-NYOR2dfj#QwbR{IrRR2L>^|ZK$v)<#tn`)W)zsrkL78ub64E z$c4)(D@pozpa%uVC9;A*?uwsWfSJ!jzEJ_#b|Ee1{&V^%jiEWCIc<8UzYSc}1Wu~$ zu5P!jcC@ZKuqLK9h~=rJ3Z3fLkdxWCIHQjtLNRSCtGmOFyYpMxbJ1@M=gmC!FvSQh zeLuJD*|~(1U@c+yea-EODz(+&I60rGR5JE`%*C5KCD*-*dD40HkCDY6q0C#Jn@*vTC>j?Fd? z4J5iJ`z%YSYRZ3)(mlrY6}`qOgK+g+N9mP)GBOHX{ic@hFc6U#wH3Ft#;NP9S65pz z)S+F{ShWa)YdwIayby|ke_^v2C3$HbnV9Crnyt&{1qTO*E!3I{YxU+pl7SZGY-fOX ze_ZqMqMGi0R(W3^duHk4hY?x7d=*?F($|g4MPAaiour!=>hIBiK2c&UL0W6S3_Q}^ z;1ZA}uI1?X(uZ^#BQ>3n?QAButrssG|IpuTe>dEo?%~S1?Txw!nAA9`t~O(lO&CMM znP(SfhA-QMIamSc<;m+i{{d;;u4hzik)ZF*^1$Xc#eG<{=T6TQnw`RA1MmLCdL^Wn zD4$vzV6I&_BBb3eiiA`f5WirK8MUl1xMMzWx=iH_@cjbJ@065AP{eE`Q!s)Joc@UBlr+epN1o;bk2?Ew>@p7qu(sq4? z>PyC#Cc>>q42z8 zZjdQvMR676BwvFTu6Uvf;3xqRtr3E>-hJua(n3`T$6{2WL?S>!`k-IqVyT{m|D?a~ z7MIQBxYv{JeIk%c6rQi1-k;<2=~;>@u~)y!BOS6AtjsR5rRP5P?(`Db3>AGHHaEWx z0T4uHkTTBMQDt!WUC%*MAWN&5lAaZC-~$mQfU{d4hV}N1$hzh0YY)VGoFzxMf%Cdo z087a!+Wo2<$tNw{I$uyJVY>_-;c%&FTXy~mj5>NRs71HwA-NRx@{B|9NtJzMb}K1? zJxD%-bW+XsI;8DAkwsT_bK}M}mi+k-#{<_iN>V7$A`0=jhyjmTBp+_e19a;@^h-w5 z133e0-R}u#RON(5e;D$-2qF$&dgUuCZB^x8b}!QX@sqMO%;%o*Cgw73$sFg-%f(4h z|hUA6P-i|E-tOlR(fYlNk6#a(Y*=OuO#CJOYi zi1~B@O|@J}h`&Le`{Jp{;UEt`jrzj`e{^NMgqqY9l_hY^WgsVPe5@l&=KdIrkJ9n6c$OBKl8wR=#+QMJEqAi*`0LgwN$?6_roHx z%nJv9M~pBhU@kbMj}}u>&mJr~%E-8O36%KuErjZc*^sWjKug@H&8y&^YHwn42A_a{ zuBJ26_*2!f74D7>1HgT3Is==G^;x>s4`eOEPWio^>$8J9iK@l_LoHR(Tebbxb$0Na(#r41{REM4og89wjBFF)rcetzBXInoyjsJ7L;Q;O5wA?_Ug zXe7vO>a}H!yi26PPE2NdtO{0|U%j#F)9jjvOqRPNX|Qd$@kw0q!mC=t=yV3^NQc{@ zza`=YHNi=EgEJpnpcl((YP6{zg}KcZoOgFPl~TsKfE^@C`P?%ta+XEZlY+ zpq`NCu%of%oh@~9`30{=9a!KB7M`~)5He{OW-I36n6lNLqIx@@Ueu2ls4LL3K+2>k z#}}8}Gbz0u9Nd$C1BK)m(!3!J-n%uoRar`!oFP_sejUsXoyst2T;LeK6;NI6lcE4! zOj-_2H;&VXb9LP}-v8v98{kA{C-R^x!x2{TyZe>T9|+GB@Xwpl?X|F6;9z+(S|Ow_k6SiAB2Wb*@FVcx|(P?`?|T(~tuZ?Kk>k z`eFOtyO&5>cUGSkrsf0ZQbQ_QP+k~+SlwpewG}!sI5gN_oL}DsR-xn~IK-!WbL{{T z%}=ng&UbPnP({Mg0Anzl_>J_Hy6s(3EbvUphP~;GQUfKCNle5ad6Nc&N8IYqJ&KQ4gs$H?l=y3r)^+Y0%(tQ-Hr<3y{#e%i-WmgU4>|#+Z@)+X4o8y+JS4 zA#D`f>xB&;1x-q`B!f89m?I=y*!yK zz<(8>`P~NZ?R2Yt>^`TmOiJF@JeYpkG~{NuFZ5`GcXm#YX2v#L>u(&}FHL<^Tyxtg z3a$|I{rLkwQ8k$FI(oORHn+Q$kyAPkILgg`jbBwRAa2BMV=wf=)?DtUfh68}I>Eit z-(zzkY`6Dh;NH%Q{M8{(HI!56cmOB^m}RO7RVdc@80_^B!lH6X9RVY_ygo`?%!4#!-GT!oDQBCAMk0i2R?jl98*a{DG{`s4?X24|&IRWe zH<#GIO)G8*#~O{F-ftKioC8qVtarQol)s#XMMt7bA{M26E>u9QBzJhLMMm0YgK5Yk zcl?G}X?sZBUX;)J0w1*5c7NxM{sq6!uY%(CK3=@G{>?eB6zlEaSjwL2rJ|Q4|t!nlPYq!c^Do3d8_lUbX!#)W^NvnU(o|Zs4m`uio#) zTlrkjYRKw^7h!FpW1CTNRSF}Mr6U!x2pzjhc_c!i zdPhtpxrGe^b58jdPbIK2`~DLV^^JzOQBBep;|T(GK}!VUC=#ZzZ#{ zXy|O7xk(LQ=jy;kVQNdSJ??0qpsgwk$9~nI=BI)eKZ=}PwN)sqto3VhWzf**el_Ax zSQhuTv{Wz?tyY5#U-yrVKd7E}6`t1tM;b!Mz(c9QL%t{X<}CEy%?-8p>ye|I@9$O0 zRqocQiDrXMcGspOw5BfO3$)5=S3*d|w4(8~{SdmxL;zmJ0LJECV8|ZDp)R z3du=t;2WQ>v>PsNs4c|ap%C+bHEt0@xLZgo8$Y@P?=56GW4*F-(K9JU6LC5@p@;&V z!Czuefp3CL4imy8G9nixZ}1^FVH)mJ@fLfxOddrV>E~%!=*o|vy1odKG9kBeyko4A zqHXiBZ6nSl{_>e70+XBq*&AuiY6=`VS8F(vQN`;HBTaH9w`LP+Io*c#kLeAhFSSFb zFgzKtfvBN55s*{w?cbYVb5R8%BE{Bw8{L|E0N2whaqC-~0lZf)TSJ4GDhBB_F%cib zt8mq7J%3KyyXfKCjbt6XaKUK6Gs8s56tlNfrGiZf8MheKpc-mP^1{=-iSx#zG<&wf zBknz{^RFT04!CF=8j9rREMYop?>)(GudeY)x1a7<4Fk<3CwVvI#BFy5?1DMOok|)I z9tzAyJ&@(|1jmMSjJbcK&rGX;5O&t8#c&?m12F1S*vxn0NhsRzTP?T1k_p~Z_LWmP z$tIl@bc&q`q>8=u;iL1L=5jhEzKeTdOH&lrEbMuA zk&OUi#HDN|)NVwRtn1TM)zdu_Kye7TLaV&@a1+{+t$TM;x> z+4GwZtdlmN9X%`xb*N_FOn|p{3gz|XT8$)8Op1C?3d?hs>tJZ_{| zOF{eLzVC|k+7x^BO7gns_DcTciz^>PKB&<1%QLyQyyFma%o=B|FByt=sU-;mXHc(4 zuLI{m(G=*%$q>I&-zop?_^Y0l$&NraL%&y~D&i?cH@!Pc&}8r9yEWp{-n9=SX8HT> zKP&awDst}aRCvH@S6|%r&dijT`L4gUBX!Ahdd#W~wb;Ch%2Y^8Rk#tcFBDs&AcRT4F${fV!*3**(=oNbKqI(k+4c#1=e?lkjqt`_mpi0 zg?k^&4oYzL(*c2Pt*10B(lG-(z1Wo?7jgYb$C&FhPk}cwz%RyMzC4`Oxg9B4>^+FN z_no%fEJyJBAc31SFIAP-65g`dIhS@P#3b9wvVBC-j5Jtd+31da)oUEh} z_^s_D*(x$BRAb3C)dq`utAm0R#Etju7MG zf;9E^MbC*kA@%2&mol6cSF}ttxUIcrY7jnCGAa>-mmb=ces*sdAF$1qaIcxHSJ{sY z^=dU%NnJAp4tbk<`aOEt?BSBKe^~||70UU9zg@28o3=`AyQquBxum2o(f%4@pdqF) z+xeu;A$0*^JGxTMSTv4!;fwI4-u8g)jMQiI*bo_e#p#>G4%t+N&H=rv!xiKJ(R1}P zms4JA*Sx=MTK0;BiB(dK7u@n(BeqZ?mD$m8}TM(x>klFd! zki;^1a&%W6>=y9#5&R1{Pkzq^BlE;uJ}S89>CatHgketlR(lg4zrSy^kT*)-2jLvUl!=pL-=q#E5MTcn`Y_-~6u&M|?shZ$Kla`{p3SveA4jV#Hg=0nicYkpsJW=2 z6Rmkl%(T=Pp*4%St!gRSDr$^*NRS$0h^eiuszgkQim7S{iJ&5eMEE}4=k0s;dCz(G z-sk-D`{(yZ^HH88&vW1FUiZ4Mb**cm!U}j}SLsMO56n)vgIZXjHZHu@3^~A0>7W=@ z95C4pSU=vfN>#R>XnVA?{OS~bo$*1bq!c3DX<1r6l2YW@-1?5Og@x#N-m=ua&D`yo z%-8C9U{O&4EMDs~;&KN42RpSq+$S4~xogYzQK7W6Y#Qz+THwA)>NA1VkGnh2DJ(Xf%^Sn=+FrA9aM5iP&RTGX$FTo#%;^LsoG zipiQ+(Q&x8LM4i_&D3P9X!9_c`5_)j&IRfiCEb9Gr*D1p}_3^FALiis=5 zSX;$#MyEU}d^0b!{0^$@EOTX7<1XlB0N)iEtIZ0Ba28eX>Oh8F#hnd6_l`UmD6D)h z7r-4WqW3T_$keS`=5Mpab_sDHNWj7jj}m$4AmLZ_LeKRzqLgfd;y7B$zAa>NgU}jD z>uVtoU9fhg;xyp}yRGW&zTxDqNh{}F`tt4qP1Vs7@msUsa1tRM7PwrDtlUn=`%I|t ztbMfIC9LE<@@Kxzlw9B49%{28$@R9iE?a^@UZoYCGYWce-zq5J&5ebdBrUEy#1f z^9%qbW%%lMT=R~h%9E`N(RxWv3di5RVR$;{bg)exouRKu{XTejua zG)}{IcGd+9T9s|haO7#; zB=GION$va>=ro#f`0buPiRO%Xi`ye1# z9hxfLI_h><)CksF4c+VNon(ahs7=x&y;s7}o_zjj19^#^oEg@vMw>Ze3Hg|KLaH#6 zzIIFMJmtiz3Y#)z+N~-ZEk=vd@S`)M8X9+)zmnzX=U~#n5GZ zB8ioopc{AZLn}l~%oR{JxRL$k0$6O9yjicHwf?>?F0K#mIIQnRe;`-}@xs~_sPCX} zqsn_qYte}Z^DyO(`ISfeb@m`Ex&k%pxv;&MQ0>vZ+<$z8d|%m66%II3s7 zBF5HN@vJy_BQfY+LAfT+#sZQ51n1!+ll_j@)zp2(c3SHax->M9+Sw6pzYzzLO9J|K z?dP{53o2ogBU6m$%}(MPa}AT&{p_xj8YY3J9<=ul9gJo1{nfsdM%>adcRElPzB@Z6 zIR2pS%p)h_g*L~0vFZ~s0<@h=W~Nh#i?8cZFB$$maqRO?xV17V_x9%+f~!EU3rw8x zfg2&=N~bFl=qoCajrqh~)urhlCsFY;O<@0BUl3*~y|stYQpdJdrXjM-`VaW{a%=RR zr9C8@tqyIEADK+GZ_i<9hgH@XEW53^iz3d(+ICFY`0mxQv&ubdKV6C;dqDJlhYl2% zO3aq@MKv6!u!vX)PrN?bpYlEq(HAe8lMAHS7`SaLqdkjG5N=1wp2!uY+FES8%z6Pp z=CVdhY($7oQe25c2HFM{(bi%XMdZ^qRz+ueYt|dzoLnovlD+Y;fJ|DQbSQmsa-nAu zSIsfhD^!T3#VaojR_yM)M{sCRi{)fwkz9JaTI)-DG~*DC)0@eUAG4j(KG0&hU{)CS z)a=Gp)5W+iA)rO>hYwGlzH{}ZM7~v((@n3ZCr`I*^g*KfZZ9`(^i+3ylU)a=f|fdQ zO(Pnlp7iCO$BW}`JL;ibGKO}w?XyQR!z>bh0yxP13V+CO`I&WKH|MKya*{nFmtbH*W#QkJMeKin^7 z-TJu66leZ38J|DMCLMKxeiqI0=ewCnN;<(i_#*F2g(kcwOTx!TmN#tenA8>ZaPlbl z=-|ZM_G+eUq?WGA#Qh5IrC}AU%$rM@=VWtQuuf#Yz*Q`jdh${uR%M=S|Yz<>tgN(-m zAzGaly`8wnZiY_-du7`o>l<3OdGq_1n)K;p!tEgD0%vYQ{J8%%L>6g-ra7k6xKd$; zS&H_(ou5UcTB)h6nARlfKJLLqN`(VD?qdR4L}9RJ$9t^Sdct7>ti9crXChS#;lH6S zoDdnFU+2a1fU7KH*iV5iJDW9L69m_3m7m}~Y78R*H)!7{LoJZV;OuChin zvah~Uw0U6Na3Kaw<%%aD+ZG2)YzHIGFrq%rDowZQtkTfo-pePVcIFcG{UJ>>X85K- z79y#R^H>e{M$Q4_KHYeJb-Qd{D*OD{<+>Pb81v6#U~y=(WY5YJKPtWt%e(iWPhef;84{cSd^Z(Tw73;EG}Fd6Up5I%d0)@# z4F%oam^t1>NOY;8#T<^3`Lt4#SHC}3LH(Cx?yL)q-rbVfm+=jpYnyfrz>-p){%}N{OtAf}I zb9Q*sApVgU!KjJA`C9MD$d@*I_q!9!$E6>Bd3=`DG8MHm8fcMu9p@hTnhM#w2>t#R z0xG`uASOG3kez(Q>eRi#9+4xKO67&#(g>vanNg90#Us}{#Q5e*19>G?b9O^!MH4n% z3YI*ruV44^cGmFW*TyxJJeua?r8PGe%7l-Av;CIL$IBx(7o+Fts5SJ5x9fpx2DLDw zH*Ty3*bFb&WnSQA6(gJ;Q86Y|EUnuv0#OdPvHWG|obeYKC#Fp{@=7MDGqO#`u~Mt_ zU`xgVp&K_DL%JfN#nE>R6s7s#TVYS+2o&%`%dOLg@udrl&V9#z|J&vcK6Vu z@-_7E?I}Sd@omeppRrbPsx&UL;)&}1ePg?&N*xqu-Or<)x{n-#RR`_8i48BGw64_R zJ1tCig1#RDY9REBZ7Thm)-${@6eC+sPoTPXz0u%604)`2Q++SJ?#Y)AeL)iw#>4ib zgD@||0a@#6JLE95uQhzXpr|)f?*yRlwI!V*Bl60$i z2NbtwAe>_ZJ;xc_I)?%E3!=fBTokuZHcgEefZU{SDYB ziz=5d=W9O?{K*Bd{2sWWw!XR^IQHdhuWAsZ=a{t38eG|X0s#mpsrUNT@R8nygGt4- z0FRBjqzeW>o{617EfcfV@42|wa8q^A@l5ld)1+P`ajdh|mf39I+n}WcWT*8t-3*ax z&TzOtFd-`|sh!!FUGFgoF8O*0Qx_64K3Em!xo^(6b zd(&iwJoCIVtE#Kwj2r(OwdK+GQ&bD-`7r#@{N`EC zU+g`xDiy{e8n3V~khVNskBr<31nA3&3K=!)4Xs4j0OGip&92T>#-iQ%@sKwDUwlf) zMocJ!i0hiNv>2SvB->0IR{PxjbRoRuiUE@E38X!JQxO@&XHJ@{!tNg;7MpMcaP^UCfk8|`Fg%xpK6Ksj}tSbBH% zRU$Af>n%QBx@m^$liGK*CN&y$#zw@9nRd6>=O6NEWjf#C*WM@IsEsX3kDQ9+IFYT0Wr6C0(0{E zMk8LfUVS!@bKXg=O0U%=>Q%n;%=_TkFrpg6-X zjfy<0W+9DqReESqb1ljtr>P&-3v3Wc&ff%-g7BKGmJ34+@w+}rfe4f?3Jtnn7aOP5 zvg?aR*uL*SSHrf(WT}@T@+lRDoa8l*zOrFYer^7?;&g9{-6i(m`c~z6SlBoemN9c{g~3K}8lvUsqQb zW+S?@ylNT;5)x(POV5vN+2Kcq1kz+3jq1n33hJPvl~t%V=N2!H_i4&LP9T*Dv>OUg ztIHn)v}b&FJK=NWSoj=fui0dOr5Tc(*8@M#t z93l`vc1KEj*?8~Et*L2~0$27k#lpUsxqN9YmTlbzNA}o$1+x(wAJ!d%+p^D3?r!Qk zMzC5ifeVHE#g5*Q#*Wjl*?zzYPQ&lx*{v)TjEF(~M& z`Eu8lTh_m_yI-#kbbPF{Q)}BMdSBYc^+V_6_~@;cjQy108xJKDYGbasjhR^T2VgNy zzOJW6N?f7CGw9Cpt)4)6&tiExfOo7-XG~+Zcx+owBITsu9v+}C*q)lweYx4$i7}nX z$=3-su+tx5j2WbeMWw}D%5R2kLx3P$L_`?)>4dFYx6VjrS?l=8PmWs4>JW`tZ#K22 z&N?=k?u#l5tVJgz&SjQ`UM;FSw$7h)d#Jyr?rm^F?l;LPQu0#B##-8_k_TOmVy6)Bg%k)L*hijG^#x@l;N z94nD>+#QE4o`?$k7@w#=w9y?%!L~si@4j6tn&4j9pr2=>p2$`96S;hF>cAD0k`P>6 z_atMuq^V42Yap@c;^YI1Jz9>HM)=Pjj5C>)=+C%~&+}8B-QcE*=o~df&2JCqi%r z&`T*c7OUDGHd~LyphJ`r8mQY^Yit3=NsKW zW68$IerApiWJ#oZ4z$2VBoo|*7E_$F+cCu`KP!52`e3=_*LCeRsWY*NrCmz`wlsWY zs)Vu8=HfYyiOD&!rnQxYc^1c{G6P1(sSkqa3z2kC0Mpn$W2A8}?2Rr4^&k z3P@-ME;i(7SysVjo}NND;sPzFMpo`??9BX1c>t_kEfTB3+OgNDo^c<%f70UN&NOa| zvD4WI9^NQvsdy!>FWCar`G49@_>L;oo23bj4x=VZxdckO8Xp30cW1&NL#2QR;S0Jb zCnslWTTh(GRe}<4?B^F9dTKfih)dUY`Pk%<%m1-Zi#<2v&wRA%&QyHR{5eIMVnwDs zij`X2e8$0}t$X9f{K)$=<({ATCnD=H4k0lgJ|s4Vw-zZIFK5Xe8QT>N|47cr27-jj z>GEFH(17)K?*?GbV^WeJL?Jo{4D1qE z^c!OR3y1(&0^DP$7mbAR?WkAHI~u%$+ z(R(UvtX>?2{+%4|dBQ?(^2%WQ>?Mh_;z(?%D#0%eBvX*I&)!8t^O$G>a$cQC5AyWsQ%6+nQ5i)&Ra z%%XL2r}We0PBqvLHr5@t_~N_0)G;d9lwTYEEN(D$Pl@6Vi4F$cGnd>!?}*GUQwmz{ zy5WO9UxN&%H3w&(xwt*@feM2}OMmg=*G}5>jY(ZptxRLqSq#tND~9W0atPGHBaP2D z3OQ=Iq$0OBK?KL1Dn=+4X_3ppQIx8!%AF8isjQh7Jtq+wA9+&eh2N@Dn3md~a zBn`uTiqRjR34Fv@Tr~=3TYT>+@HKpP_J{=X-^Ef--^4l-y0O%9oKB_? zrWef5m0FaUE$qw1QhZu9Mi6mO1VwXWZF=?l_c}>EVPt`B`w){TikV)|tZ0-60u)rx z=3A0~mpE_vj$g!#*3Mmm-7@)<}8oFfC{)9An zYtEHTO`QqpeXqMu0}}HbyG7Vt8U-~szz?&UelvaF4?Znx1I6S`=8o*%Sg%lj6|ccB(_g+7=mFD4(9C&6rxtFDhK#;<6KbDg#4>*7a3 z@p-m{1NZkvQd6(1gZjVN+U@xwweh%nZ%8JH$E4ea9h{3P-Jg5ixTEajo0QacfeI<| z_)c1(DpZ%%pj&Vx)&?ggI^vMhz3HOPMqR93t2#_JX?yOhK3V?DV7B8Z_dyIGjXm>a zZkRs56u2`1)6>wbwT}nIGu`QZ-4|_1bxy<90aHkh}~YzqzwOZs1C0svwlf*b~Zgbn9V0rdYaaxz{(|3DA?Xy#L(^jCLah-b^^z z65?|%<)T9mjQCjBCz!=Ab#(mnWo;-0+?V4#Wz(=+==?^5ttFUpmzVK*J+_lKL9!e5 zCTVBnm@Bk>`^wxB9{~bnFR(U-5JzM)cu{M?Y9r|p2I1ghJBu%H%crlb-6Yr;Mh*_| z&8N1NOK1&Q7sW9#7D-DE=d6?-?Wu(=b4i_rW&k(?jef*urvY3;5PAF2zto1nn10|f z?-2`e;LLrbf5d!N-edX0CxETCs2jnVJ3TE>&PF5rIy!ET%~Uq?3TqBr8gph{S&S*c z7gkY`K8rxWDXCm>w;e{Ta;_J;q6F=ck}U&Q94AaWcN)*9SUT2!fES}Z2F>#Fbjx!q zkL}KFT3Xb39b?tZYhky8Q}LaTD-5;$=|tW{0H*EhOoI2-Jc5GafjUin5+A0~(UC$L z!tTwEO*%n&)48@m|6YY)A01se0v{CT6}B2COdIo75j-D$H568{aGy7gS$v!RCe@UU z*t|{!Qor4(x~4<}m)Wnm)i(8aYv?qr3cWueoN1M0S>b@ZZSHE7WLxj$9rIMhi|AR= zzrEcv_^5n%0Lcc;Q6b?!^-os>9KSy8!_mJ^O$`1XA_bV2&M9*mF=%qP5FWYJPImhM zC^6;`^4jZE;`fLh|62N{C8AxzFxU-2Z|3S&ZY_+igHA3SSmTS>xh*9K^#N=xGkk@n zAIfUp9=HQSSjgEjDJK>KFW#ztSnoQydWH>J2U+im(D*WZ_aXlJJ}r+HSDV0Im7w1A z`8P+C0L?VJ&ZQi`UeMP}MbA6-x^qEsjT44`=h&cju07ipyDT>*0-=WX{5(2p`{O*; zaF_rjFj0O7h}#C6BU^eia(|li*S`DfCnGjSU)g2+l_SB@3)G@KdqkP-^hvCBIVr=nHC{RiVo{^TCXQaNz)arOtjEYq{s^s`vkiD%d8wiQ+ZuD-iHY}w~ zN?RSiza3Rt{4$*KsdH2xvaVCwxt5@o{K5-M@n$0?JKG+u#1BD^UUH6i%|>$A54OG8 zS6fz!%-FlIvb#Se(k{qOYf*FhX!Ytd{Q&FicfYWb&CQ0srGOHhw>qG_<<24U@}@pJ zb+`u(Ny}jK>#*VKx$kG$vd1B3WyfV-v#pW%0|`awN74w~;V1JIoTp$rWS!&pQ>2Go z`1LY7d&B)k2>`AS96QGQN5H{y0kqXsGnQnX@KL_3rzY^A-8xZ~0~hnARO-Ql8M6VK z7KJ+DH8zl>7+X}Mz(4TRNif^`OC!3!UkQx+;#A3@h`KAzcfI%K@+|asd9z`H=MQ$Q zi_KT7NF1=Q2JwU_`5=A+OA8LZ&FKuaea+D)QOn%2v2`Dw=!qFCHhP;e%x#v*5UP0b z)^9ZEqFsBN&BB2LnU37X8{SI?)YUDY?6`h6k{WyXX>TrziGM|jInt{KB+%}{(WOBvuI%si{(eh<(AYdH$m zPp)>i??+x`Jx8Vaxb5aTMr4;nsH_tVRUCXc6%23TYtt1Z)IXF+Xm8;yYknNTM z)w->>MTt>e)5ao{o)N&H;W!g7H7pDxKs@8YtN@u&1y+r4RN%;qLH@Zn8P1T5 zCMJZjG#aTbWm#!@>yuH6jKB|JbxEKhqJq}WX%^d>s<1AndkOcPt0qbE%d&CkC}w8> zvhF$Ei%O?wo_t&OV!YYfT=&xWL?;0Ftl`L6UGo@a=Mp2PcDH5a1FpJIn21|IZ-osS ztl%0kcOWVgk{h~F$pFMVWQILmNv;6Q>>B<(Ayvka`i4|z%OHQLnr4tDi(=|HYFQ1$ z>i}I!0fPzo^E%MnlbqE8QOcC&-S!HGKV>UFY#qH(X>HRc`c~+AcLku2hul!7(3w|9 zn~T#gRcowxMntrP8uGUG9{!|AMZ-5df6Kpq?3GMJVWW(XyVOjYHL!vbHF0I`UnGLTRqWhHBWfPMZ&yD4Uo8USuk zFK|s9S>{(UXZodN0zmgTnj?aX$CF>Z3b=S$C#8Z4 zXQs*F4+wnvMP0byRYZrN)c_rGe9St&C8^PmVio*c^7VQUSGKDgUl5bPw{9M_yM;2T zO6pD^<6LD(K#PE-b7Eqpb!j6U3n6%;Y_*E0D6_;%-masn;d9U9wl+)s7kb)^-ev76 zG0HYGF)?}4+40yg34Xb3_3CW(Se>e)fzS*9u~>m#*Lb=vC7(04COO7%zdx1}>zY&J z)(&*sx(9l*UU>7y4I7$pdykEUMXk_^;wWIlpS+r_3sk}H-_L3s_koXI&ghm$Iv*7i zLw)*GYG6MG^ac1v?%g?_G}K9D9TTIp6-f;tNq7via`eiGe@= zMwY^GaU;Rtk`@wjQo+j4`LSxw?B|q}BxB-aP2&R-gWMKZLt8-O@xQZ}|9A{}*Krb< zTCEW4n}*GlR~Lg+b$bc7QVjR!u71wuaPjjCXYw&P~4FxC?crV-kqczu#Z%XLL@4Gsv9+QM7ILn5(9 z`)*+&SvdKInnV%Z0;Tn|@QfNtt^Nwev8DQWke`N9>7tFI6nVFOpdezbV)A|U|e%0CPqx~k9tW@v-UKUZHz8HVr8Ac7iBoKR#l>Hb$frK5H?giJgjP+Rn$4t z`qYCIEtnUC%So+mO)tGYoq5to9aYljCwuB3@}}_Zpc_82muGxi)8qQ=DX;riggwqNvXxn8mO;I!&$xBx8GvvgsAqqvIjQ?DD}e66YW8d^ zm`5xqkc+{@z?Ir!nUPrlC^u->4Q_DQ3QQ2nP=?-##lV__;+wC;__}xlXzV3GVVB+h zBKy2uBjU|(&e6Z;BMgXNq24iY><0t)4WNwB&)RudN?l!Y8rB@V@AQj!j!YFFJjKV* zH~qoqLKO>%zV!gft^RL-4&V+psMe1ps$Ctjk!+qbGdG3RN;9=1cJ(qZ?%O@$I=c)=JI25xsm2nK8=}vdXurq&^5tf>uH=A30YIUl#hjIlCFA zfBWUSXgqk~RjbVVZ9BV4CD2ueGe>OLh{3=vu_Y4Gn?M7cRMxlTR~B-Y+&b(EoCE}g z;idBIJCcEwHeuf7vZ%R}Y}qjv+1-VI1soe@Z~Cx|$=I+yujEzXcI4s-iG%sO&?$WvoTFN=@mY`L%cAkpdYaWzrxp-K8%&`JlEnlaL@4$sdC(=Eh1SNS{;to zLwkY%u!fGGjq9GJX4BNeYT8cg2)af`MX`ZU4(Lm=FVTNd^!XoxLE3zrGDB>&*)c1A ze8w-rjsr{{cy3Kox@h;2`QWE7tzscUTgcF>6gP?*!yfiTiSqI?L3 z<9$(lnQwZnBk0;@y1)-1#`88DE}vhUrbwp55%R62|MVR6(+l3y&js)dY_Ip1plibG zIk##i_f&emmgZ4Ak_E_aJ*>g`cb}=R7)0L9i*X7#BMBOmO0b<>u(@X3N%6NZ%kh5H z#Z#jFz)@DIbOyfk?b@|K!QPuSlE2Gg_;X5v%X4#cedqt^V1It`fBW4#&Wra??ah__ z+V0oCc$|Iy8mx3z{a~?7rln9Eo;6xtp|+m{RqCwif2I~JnP;*n8~@2Mn)p5f$b#Ii zF-2&RmLJ@K0QRBnePF26)V@eBr6-~6&7MEiw)jc0;VuIn_8RPtOts6wD4E~(Z%@&? z6=^+P9QIR>T)HWbQblNCyuc|=&0p>6l$=F$uixUe+W+t%&wVn44o1k_*#E5P$0K=j zzm^fn1=9Cjo#&{A(%wc_RsIy7|9N}oIRFWi_;*(^2U2gbVSW{xp}us(M_?nljc;Fg z0on%(@wl1Ui#eNX(CVdiTKRUYai>(YOKs1apIm@n{9A*Mtm(utVP#jvcm2~29;zi>7d&~i%wJuVr9?$QSv6<}y0uKbt_OVV=*rP9*z|i#FmvU7^(;M% zC9wtGQl%d^5T7@H`7G|KVQ(7C<;<4suXdO>l4;)!YXGL)R^-JmKjbK12t*GQ?E&B! zYe_BA-j`K>;ZAK>U%F-Ftc;2{w84l`t?Qevqhh_#VY1`HesO`&gWWT)SWo~AsO>Q z>g(*RxQ~y|7UOU-3WcJ>x6=P2Lixu6I+6sKY&^;8$eadnTW^y1Apevl{V!D7p9b~^ z0gZoJ{mXZ$eMi$zmniP#HaiJq$kNg*s%m|TyUBwT&$QtdGqcOtJgeH((7$EDfB1rv zD9%8Uc#zi>uKDIb*PR~D0Um88Bltq8MU}z+Ls4@**M8o@-@R2C`RM6`&$!hy@4uuf zHQ9dI3w+}KO=jt9cu=uE@cdsA&r<#=C-!$gboFYKWZza)kA%F?Es?0e5=Kq>3pT}b zhyRv!{=t9UKgj)?c=7z#vdbMGOY9zp;$)8OV+R6jz~(QQ8fc~;iL6Tn8b@C`p+Wd_ zskr~)uYxb$eSdl*JK;94#Ny08T|3fe+HhH=$#9G|E(SY#cfI zza94vJOAnfx>nd`+fl+XXS*|ziNKn_>Z-Qlv3aiUAs@XLZu zvqOgtz0P`F2&4r&Ba73vMkdT|7!l7r_`eC2rdHaK>K>*wL&ICl{BOo~&;0PtVq#ki z#%IcJU4s{H-@dJ9WMl;3AkJCW`_`q4H?l^NdH-uo$RCyqJjP>|DLYjfANCRb^=xn z!PbZUviUVL6YK8R)?h~;LQm75p2nx0BND z{3vcEl$)K|l;;-2Y-}{c{H>$Tzqq1zoRVLUM;X~tRa?fDg>pj!mdU|g2oB(W=hAyV z^z6-+?W=h@{(msQlkmMeZ+3lBZRMkZq#D3JnQ|LE!R}5D{`udgtyhf5TeNV>lcn!9BL(+bj#jYq(z8T5^k|r8hNs zYf_69@ATK-fNXZ*v#wvN4gw2yX&eScPTZ}({{CxRp{-OC-wf6XK#=3ar+b{bctiDQ<+_(SyrFUAo%;TcRkk02$r<~Tz?BzQPH+0kePXTA` z9qu=o`zwSG2qX(0JXrG7Zkri$_mlPb4&LFWIaM{1U((jk_8m}xNBh1yfX04C7~Ll< zA8Tng^M@uO?do0v^u!v_n|C#hP3xbk?uUeilo{N4fMh6OHP|QaVMsUrdv}EY8mGzJ zi{=4p^%677IKq{$^h%b38l7@GQ*yCxgStsE-4>hQY8Dpl4~8jcYskX>DMQXF{^G@p z!Z!_jMYN8kOt-;-mKsPmuXEdWCi|1A7;ymW%6XSxn6r zEcf6$x1{aEl^WYvO4zxHd#(b{m;S;#*+p?20pRiz@&XSv10-~II#?DhzPUn9y+#UC z3)gkqg}U7aNACKq&DMA%eL4F0r&kbss_pB$+W4XNpy)2k>u|(IY||QR=PAd?e&x8R zCJsw+qNMhyZ9;VfrYxZGVl3%0n~11T$(g%u6{riV8yj7|kNocoeKnMD`}2D5AA9aE zfGo^wXXj)=V4@|3_Eg~B)C~4qreS{rhD`)b3*Yi0DyZoE(~3C7?_BG1`!Malc<-@p zq?YUfRV1bLi@8a+ThoCC=@&qsmwoFV4n_e|n=Wd)z+wu!_Nu_Ow(*fN(skmFj!x%= z%cb|g_8}S~z!dx1{O1DrpMQGS0W?$6W&Bp=&iQ)HG9|94Cg5w*iFlKH{ucpL)Tf5I zX=bkfnt1o;ENHWHpFMll!*TvXisVaH8$7m0GxxTz@!_xJ5k-zAuEHZx-gb?TVTxQm z{u}~Pfjh3JWPvIeoio{w`a}71Uf0*Bap)fj@+n&LJqV26xxXGg1NQlqrSKaRqKJ>>R_?nHm$HV1rL5gL^DfiCi2JWj zpbbD3m1#d$T%wUlJEm96)h(QF@r$3GxISZb#GhcX00bT${D0`5D)?6Wo+)Cln?enyu`6?#^sRkZXz10549CbJ zU~Hfg!K-A+^xo@iYPLO%lj$nyjXs~B|D5!ni{@WUNKlC#z_`WafEQsG!XsR<-(08r z&rt(Xch>^N&am0P*dGNY{lL1e%wn6mLXy*i>U#c)mt}eo0CeduPqSsCOAW|5~$jaf;{ED+n_4VS@9a?puSu z02s6n9{ORd??1=0t?l1^;_+LXuD^e9xBn57kRDhIu_#V-$?O7!^YAJ#jrO1Tf9?J! zW+o3(Q*9GACwW0!liJT*vm)E^#x5QVIC1?d&5TEzDL26?}JA3GAEqbu;r zZ`Op*%f`rj2~psr>5#Z(lQ3Gy>o)D@5@9S+W|{v+6N5|)n<=^wpGcvO%t3HWmLQiC+&l)Lfdy-KSVhnm)%3*!Q1cIn!@uo(vs!bEe}xOV%^ z{n5nn4CQG*d@1Pi% z5FyUG(MEj9U#pwohU$?DRpC9TjUidHlw6H1FWCEsH;IueFEEbdASF+WZo+rT`QE&| zSS6pG4;Rx+QAW^!1>cZVmOS}~fcJ95n*#3HM?+0PvPq=7C;wylEODPbSK{8Es9;ks zdkv_9F7@hi^0Y_Rs^Mh|bU=2y5(c+le%z@xc5oPoA07@261Z7BDN8YSpN_sYKGB*_ zw$u~$l$KZj_VJo*AzLlr@%c4SUqs4gL(hnC7Z22UNF0FjUnPOr)coCfKo=;PWt*M) zi3{%?`7jSGH%pD^az zJw$Qs|L`?q2QLE}sqA82{mp%}yQZWEKK`h(5*XqBW0_<#GYh9rW=Q?*%$&)U>0Tmt zJ`OslOetw`Q`(r&A&>OXobr}se*x*~#fi2eGQzS1kepTK$Gm9Q0AZ#TTKyhjo6wNa z=OPSm;~SVzFAkgtd2i|T{?UqI+G#eC!#Q`b(23o>sVm^`P7{gf9-9ceJrQbOzaLw< z*2H~$7*(tkv9)wyTmh1_9oAecJy3^z=(#u7yo)p=Gx{7jGHl3<<^$czXAI{GH#GZu z$C>^tv?bE5UPeautc;8UszvT*3GNBxojq%)E+GCP27F~ghTT1B;pm^2rJCH}^i^PE z4Pwk;GnS*V^fT&~gaUi0(9oe*g-veW!)={T`pY*WX;c4O%pL8kS8qH-fe@>b?R_- z{bcz$c$i}MmOL5gaO14D@An-u_+;NIK81KZCpTlK!(X4aN}f=>b=PfLDU#w5Ud4K? zG;ON^S?ChQS9Ahuv)9*!n|~u8Wx>t~(E=q$C=)AT3juk1bCWykUzTlNnObf?_5?n- z2TKJ`5oU4Qjy9C)vS{o>#g<4BO5>UXt~YvTlW`og;XA4_u@>sn6hVaV81jsyE2uCI zMHv-Y0i12u+sDFPOubL6HD|Rav#kl>lB!eJR^OhhK=t1qSN0jr17wNI?mklU92o;w zj!hU`f(_0=i47r5iDFu1k||OM`%!&7W59J`X^vqyTI0!ng?85~ zgl$Q2WpjSZ!_TP?dPqQ-|K#-`N}D)Ru-du)bU^_K?R%3>eo*9Tfqaz~8`JnRu=u$h z{xQA*e)q{T8mQ@%9TmyTY$ZY~STE))Z1A1ypT1SvRfjMZ=-2k8KN~i}rkPngL z!8ZK8BR(z4w0_DjQo5wMKwpTAv1X=>flw|$AnWa+&i7v$ z_pgz@p~1{F2DQMHlF|WjYJ<+-mtwRRx0kA55qP<>{sRv31Px9HXc7uxHLGuy(pv^G zT~OB3Kmz2)Tm$`Wa?FADuEI{rEVKF&%;*F>nBP9Rz~wO?G*8kcT;Z3?%g4qH(A`Js z>mK0MZEMe8BviGyMn}Nj+H=yqj+ffZvH}*p9)g$RhZ?qG(NkW{_~p-fI}CF46G_X@ zou;OY8~5@LC7Z1c6BIBTq&+YM=&i#%2v45$^L#qdSXN9V$cRU3iKUqYZXm=1BAMKn z{HwX2IXB%WzXwYbk5#(O#Ymn~6;Ej2tON~}gs6h}S5uOb(u{N^7UG4@DSGuE)SVn+ zpFcD89a974R4TQzlly*w=zm_1Kdi-)>7494lQsU{Qv6Aw`b-y60r$*dxCYsM8MXPi zuvR|3TtXJ;*2(J(g8~8A081@zal!?1ZLq8jabA7JI$Y$Hx?jku1TAK2T1Z3~so8>A z$XK#$s5yqjO%-&mF-8X~PWqAwrC04WlvhMUvZbbc^ccn&>(2tIXqJ|$S$%|xT>%o~ z?|+3gElaDt({F}HnRmMwEJG^6DA77eycmvQ1R3@*Qb=>Gayq`*H;yT6r7m#+f*F@D z-_kSce`a1X_*@PG9ebNI$~4mbi;#}HMjId!|6pIBlIo& z#|HZ0_a!O>f)e&~@zfi|-KQUA_{|HVoERhzTlOLzX}0Wsx4sb#6?sOF8ZyL}aV!8# zb6dxpgBykd=Y3F0B*UX}eQ^Z&>C-JxrQL1&ra;pqZ~NKl>15Yu5CXLCRfj%W>0T4Z zo;~=o>*{D|WI6&=6=MgK6?zQ3ULe-HwSlS{6){G(Ke+(l1Ttbcw^EP6q!gt+3BIvP zuw5oI#UlH8!(kp@-jc>M&H#<60U=X-oDdRychD8m<~{FM@uL87XOAd&`XevBKX%Y= zPAz=BJc4mIQQ3#LzskAOqSa0nP3bcVuWZtZjxMTbRS#SoD1k?oea$_oLF<|JAoy-? zasfImh7+p;PY=p|!r^da0U@CZcw`O|I$9^S_URzn18)ZW2u6a_J`WEo{YoP64gB7? zGPjS%V2ko1C%fK}Ur`#hu%V<^GXWH?C8XCFcU`yuTVN2un*%?zs)TVizBhR4;r)rz z{Rm-;Ye99Wa!u*(lBQ*e`>bJtc}D$gp+Wvz%fVH0|Jhqu&)2?djx{RRP`j;;X%;eN zmP~v=I;s6;9&lYP5zjS58_sFFfb&1D64XWzdD{0*3TXo>ukln*)S)C9maI{V1=K_` zOOcc`{EG=R{Zq*)hR3oswx#|hOxbTdDJ0XF96x)P=yzJ@0l@ONsd~LcwX+6l8~wbz zKP>OBb@FLYiuD*C=6ju#mbTQEkEmqrW^z%bC1q~&)Mxj@GmYIlq7UF@C@7?G$`9UN zGRl}3*RP(WL!r6oqG65=PKRFMYi_^5sBoE$Vxq07o=;Fm=zymA3ayEjL{8tzJGMlU z4$!BJM)M9fFWtt^uPMI*u`yyt0a;jZowHW(x~8F(-vBJk# zbKZEe`2$QDII1;r?UnzA4=dUool|G1fI{UlaiG|VAo<>d4a$!e*_WdYyBAt^0z{Tc zS?9*WFM=y3#}QBcOdTU-J+R3M_=eA0!gkqAAkccew9}uuCjcnrrPr3H2R z&)j)UIa3zHp#WL=HYOu-mm&s;oN5uKg<(PUAA^f-@f?vIZqo~A z^C+3@QKa?s6F@~Dq^*5{rRnoBBD3CPVq$_E8R`gxZQA>$6T}DM^5rt zGbvwzl9Zv6qjV3P+U7Gzv%|N6<#4Txv8ks^?Le-TLjyvaNC?Ge6fM|VM!*+~9yTBD z99wXoQ)g_jcYj**1+-vyi1tGz7PnA=q+!q&Lvli`GpP%+=_nBTtI(@94=uNh@>Vyl za;qkWrN|jOco1T9DudVhWhbZ;Biib_vI=@kp#bJS)Mfg^g1!|xQcy2#y;>((qV(m< zqm-q94?}>!%HUKa?b&2VP^xl(OED{Vs|Ee$Ew05{yzL<4SxkS|6w=$9Lva0`DeC*; z?`acF!|6qyhy1G(5{G!m!^=h_6Id|rZ0!A&BtNE5!(z77y5-qcZn(E{e=m}q?2}`5+!}W zyD;Yn{0p518ThD24S)ovb~jE`Bnhn;O@vN9haytH=r005$(@A3dO!m}sdPGhKv$udX`}swcqy?vUrwOm2I@06cmkuH z_Cnq`<$X&D9=jCV4?$fREU{z_aJOy^m5`9K;ArzOVHK9-Ae!7YQxMI`AJQ>LL?Gus zc7>J3W%s4lQYv-#!S%0|5bDSCUXJ``Ls`?eF>ClZf6VPSva{d)$FCWqLh$bFK4M=@ zNosnUAFc1ST&7FdihQBw+sjjqVrpT^9VQWK@JExjbrm)t?%ngLHBRgD-Rc6QlTQLC zs}acLRIud2QEQBC#C;?LDOoV?m4MD->GfI(fW?nSd{_{86o}`@kMPTk*Y!rL0@<67 zA9JCRJGy(j$Z@GW*5eAE{f4Dha>fH%90G~yB*Dm3S~7#-{EA0MX!~o11j2i?+IYY@ zGW%x>ePh^N((+ckkV|dnp~mT*d->=(oUNR;DKuI zb&mxS=qYxV>cEP>#Dnhv8%Xl~O*!e*g(x7J@5ZL5Rm-V1v3)NIt}D`^p$j#Z7Y)<4eWgV}iye!KMx&P3JR9G$qTB|mtG;2i9+gcBFrTo}8MjUN}e2$NyUk4H0( z2!-Aot0wgl`kG5cfzDJQUzihyVdROc92_uE%TJXnb|1(W=LgMmxTpOiZgz-?{;$5N zni|u9mI(hF3rBjXDL_k`Bv_eYWw|vWJ>;nm-odcdEy zpl`s>*4zbPokyw+7jf0z>gIK{k~;k<4^lJSY|L2{y%qe%vZ1O6hmQdSPMXAEu)ye( zspz@f#tkN~E$R!<$+={u^ix7Yrw zJ*{i$MM}k(dhxTB_OyGn^n4h3T%Ff#2NodRm{IBL7pfl^8MQqJmUyxb9MD;)GJ0k+FYSK)p&J?9e1xlf^7?;uzx?kM z=)eATmB^yRs!=exI}UiK|OK6W$A(-yKv{DhBJS+0Po8>DW( zz*T#a2?-_|Ce;@>#*($M<#SS6sx2Q0iEQWu$6r*>>g-%V2?K$i!g& zXVJv6=uf0>B_{ezT!7s4I(ctX6A&(R`Oa2c?3Y!Ge;z=^yHp-V0_)AIEc!gjbHgA^ z&Z+%jmE;Pd<<^+FK|&hJ?joOHISYDae5f~cd0;P|FazB(KaW39_KH6&fCB{a)LWFJ z31F&AbJvhVn2mF9c6}3gESGJoK1PO6?`!k8$`EMaHh(-4h(&vt2@`FPHYn@YZ7eG) zsgQny2j)g*=BR}@7mMc;IFbTVmKu^2AwkyNy?yYhBe z)avK1-is?2xJ~xJR_8ztKJG)M=HFoJR*O~O;nhK&GPFg=z5EU@(`?Ecjn|<}$|2!r z8&viR+n5Pf#H8W5fCC^Q@1QC`(-5@wo8Io?%S<}$%aCWwo`lhuGV|+r1Jkdai`FlO z#f0=^l~#)OPbg*M_}E*P9Q2Py*#e3=t+c0es>JRREZ!I zyh}Yn3Og$~p+tmXTz&m}En9Cf2h@r~x-DZN%Za3#wk)v;v%QZ7O^$?$|GM)g6;Ken z;OSk4s7it+B=@xb1{)WvW(tm!W$6_H1T&g^6$Y2Q&`Sb729pl?nd+A=X@+eI4-)0h zRy`gHEmp2TB9SjZw3njL;>_LgUa4VnWXtRJ&Nh|qlX}~umCiyC!vJ^e7a^#UpJ}Hl z99vC7o#G9&o{!7$)0JeJn1%J!Wd{W%N3!#ZSF!YG;E;V8NL%Qo1Q3%=gPUW+>e5A5 zDq1%5>9^*KvKzJ9;L_JX+JOI$s?>kG?*H_crp37eW_u3D!@vO(5-0sHu7<^_ExT=j7KABSZ+Ho^Pv=UBYkfK z#YHHDRmIJ6iAOPID=gS(g!1GPc-S9lnjFki$SXYM%5tB_q zv_JL%0W`=|^!68RQ^@(#^XFZ;&-NOIZJc^WomV0v@y8S@dStvs39po~Y~HPWPXbLp zMA8`Vi4lm44~Ua>UAWS{WwiotC?fYr@q863ohOSnC{f7ZN-~)-&))bxnYXvew2>PY z3tMT3PW0`q>iGGp?A}!-!4qdn;n3xQ^ad=;cYKVQnFP9vRX=Dc{P}Bi?ZhTomPrt$ z?7vo$;_s51bJg=EDXkm7@qPDzyg9_xU+=7SVD*ne7eOWA>=k4>wzxB1V1d&lOriUa-ZtP7~#Q&0Xq&o zSs!kgRXWf@b{vv2OYJmbFj_U#C1G>DNVPNG3rzm^z24=jrUgQ=po5;(>ath9@-*sq zP=6}ROJVXGI5c9SqZg4=!+?aDdL@2^>Ci!emt`M^ONFswk_`mhCeA&l%40_dyVx4X zUwGqLog1#QY<sN%T7q=njle z84#20lS%D0W{(27G_>z|_)oNNLbs5Y_s$e12uYOo=y?s;U3m&7Wr$b*T&q42F#Ej- z`Ld@r!ynaOKz}o5^646fg5*dKto=1zhw;ofLTGj^(SKWZv#P_Bc zQFuZx>9lBjzulozHfmHnpHQ{Lw~F08qvvLu7eyc?tJO+97NyF8fXL({hTE;I$O%8& zF@xw4(ZS{J0j3SIOrY!JBss95w!+%Ze=xnm)qBG1enhGYOTUbn5SBd_LFaUUIVzw* z2+JXnLeZA;E7TXL(F48cpi&nMz2{8WNyi5)y&O9DI~!{~cQcsnxQ|DMFwUctj9ZU| z(u&?oPo2HKYD4=* zjGMPw#an2^+fA)lY8nzh?wnj2Cu5#5(p`X{H00U(aCS$aRaddo2lVPR{% zXg|jj%r0DB#`qW|GEj6$_1n96$q(k$F0eUP-Q$gG9a1k6mY%rPvrMju`2q=sr_+tK z+lT7uZ_fzu!^rq&ABWnscgStKU-8xhbsTAw(OqwF&4Wk|!I4fcAt|T#JvK-Ce`HIF z*kzuD__c08BF4j%{g&%HlEw21EUPN*mBwNQ@IRh^1eF4M{4}qK-Gy*)Z9{#i|J`ka z6DOYN!%?xm|LVK`bM3{8H!AmF*4cRsOcUe<6gB8BFH<4qScdAao|{Cna2r%f0khB< zKjwDeH%Svr!3-B)atL86lqysT;?8FTu)DOa9jE(WQ`AZ%NDf1XJ9QJq!+eSd>e6|M!VLTm%k7WVPJB_;* zV}v97xzrh-J;ws;l9mBd+?st%v2BAg-19DnMuMQqjo9Sf&sT)piO zma?B7Vke|&Lfxkt4}`)a6lm1NXedfFM49ga!)+Z8g}92{KpiPwX(%XqaclwMF-+XyEvS{?vJpsje$Ph$6Oi+oZpSDp8CzO=$*x@iR;_2$1_XR zDaJVjfUd_30g$XV*b7qQHY11+oDc>Fzm&hR-Zv#UXvWO7-4Q5-|=J>OFe5p?=By{p6RP{fSBsAY8_pldY2PFXDEV76WJ!MKj0R!rCk8 z^ku^$mPX}>1sGf01hH@T6`(29gm_czcxzOBMG{hK_sFM`B z+rBZRE}+d0W?22P+<7b3NGf#WOLC%05d5^?hOn~!%*+X)BU#U$O1O;>f*giby>3HP zV#2J}$!r-Q$c?zO!{DNmnw~Yd=Osl}*Yz|ex%98+aT}^+ zdjMMzfwz1FFp<9kra26xg=OtqPnFuBY%82G;4Qe|VD>Fk@LoV{eEcwwf~tDd;?~XB z@H_h=awZxc3MUOHtf60C6WlKvpOc7sVw_#~SkCg&I!zSiov--LOL!-SW1G=mTb??R z*|rEU^RD8B8z)Uw8&{p074cV9w}WV?*|igtkLoeAdj-iW$^}Q9R!n1mDuD|=qP0rZ z@(*E52QSKz-COMN0aI-#4@aWkc{55&Ci%5Zlv1OZt@pT=r;_k8OkNOWSA`WE%9}XQ z8x%iPsE&zVT$8Sqg@Y{;#e+$@H+o+8WSTw+e1XJQN+1drL$>BX6{g%jCquW(oe*m9 zGh>*MIRwEshCeATrH%Y69t|9121)Hjk|=Pm@xYc_6GJyMy}US~h%vr3`AvlXNl&s; zPJDyyEww$9OK9(PFL9OSZTGWwAh2br+g#NUbR{IHz%-N1ue4i0AqRYyq;w{KB`5=n z8;Fm%%c>z9QU!ZGzh>kUoV(uG2sZl+Pt5Q#RZOGGikEO4kytDi#Pb|~3~qqojp_YL zr%s(LvPE0dq#seN)o`jcFdIzc*XxN8=PS&FkswA1zko@s8n|pCrCh7#P#2Tc zUGKy(k#il`v@1o<|JQAsdV!KF!eNGb zE3g%!ig(kaQVaa{mj%~DE(1YJ&$srS(~d+5*J41d{GJusH+H^<*2++g{KYi)<6Q<* zrP*Hnz?px8HTbXNZ`$FP~DGv znyOo?KPeP&#-W*afx8k7H_{IGWdW&gyQ z0xVBgl4Fp{ktQ3s;a-Q&%$G`1h}^ZJdaW4%E<{t)d0eeuaz~PQY50!7(B?fEaP~^r zwC~wp8EO;|xRkifJ>A3PkB=t}=II_m=@+jM03Qx7GIlNsDAuNQh&9-kQ1H-X*I$JSa6lUl zW_soA(d%@gq6(^}JNIBNePh=4pT3f_Z)y8eH_i-|T8Xue*op6It<;kniC9EV&{RmX z*hS^vVa~Y_X6Mr*CMSe8dMRi~$`^;shl@+Ec0q;JI`f^x0Dvd3c#LOnu&8{w=vU$D zl1C3)-=%UV)2{^gl=9VLBT-rZ47&TpM0$k_wna>t9txUU@4QeUiJzVdNb|mIQ*+Xh zb}-&8Ykc%4r!NYFbzc_Jn+nxx=AX!)NwDcerKqXIA1oerXye1B1CBSWFXqKC_}zH? zo79R#{%ZZU=8FjS2ef16_Na8>fpc0l;}&34Kc z>!lXlZaPtFA?p05F#(OXQ5UEy+=koT44U3&8R56Wu&<@TSq&UFu9#7rD_(2^+V~N| zYKHefsXXP$7tUS3$1~|`auV{{L|>d>)Wir^x^`bseWD=xh(wX?WJxOB+7&GN^M`k2 z?Mz9gMQ|@89Z*dhn#pcJOjK>M+k#T zv#Sixn>9H43j;OVS^qWs?qVCy$w1N=`{co_XA(BUH40P6wzMY!?eAOsiG!|Z%jHY& z=7hS@gV|{^JXzdf3cdpW*Bs2(Zqc`&m^OAfoCmk?Ic}fSi+L$Epw^-zwsoJKgcU_q z)J;VT@~iz$Wk{1gR25JdsUMX2g%)t8m#v&gTn%mq#MC!RN<1v2MS;ZC+*qg{*5+A2DuL zdH6zKa0(JE=ThYs2O-nfX>|dMZIljONgT8-J|n9|H`1v21%GFyiNN7jjcJ`?WrKoH)eMBaT7=Oza@f&Y?7BiIZc}1la%dT!b^UW8};q@JtZOla) z<<4r2JL}d}_;7Ql-nBD{4#R3G4%-4AZ+GfWHa&zwl;c-)dG3WOec714^~$|eJ3*)d zAIR8^Rs=X|U#k4X=dBAOx4quvrAS$-PfU8rBz|5gv~Fhz0C)}N120@ibsTO3^LHr= zLl@r#vBmt(h{-jJlA02%OiTotcuL|X;6UagK%6qzax`E!I5|m>YnY@IUg>$;1|=!2 zY&m*ZS^B{V?z1*QZgfDMyB%_vm=mL0?8n{4=cNS+)5w9SNRa1{>PH6e_tiHB(q6Hj zs3Vu^$!n;7x$!X0HGs6GTY)B3W>7_^pOVH3HRS2at2n-Z^clN~mC3Pk_x8^C&zY=M zEml3mR~Sb5L{dP}=gT~T4|^(-5yY}Bq#NBrJE^;YrBdcAh+HNe+GunFd+HY7(!h7h z71H7ez+r462rHZ1CyRQ)Z=8TBdgX9-C;6Etb#@h(F#phcu%b)f2XpVQb{(~yax8SmMRO(35mIseH%He&o?}{9)ta8BN`GKuJ@}8sc=dagJ`K=8#IBDhosKM$$g?q$}|~Yo1as z;2$o|q6hT7^v=z5ELBPGTKn7Vi|oAR1eIXJ>nZrR6EW{Mx^2a2&=OPjU2 z(GzGe@PbV>LQ5r(6lcUt9TQG+9YvrQqQcUM*+-V+$tP2uR4*X6R_O4o>Y{@Ydl3HO z9Z;N2+Y+l{)>c6z?0rit3^E1B#>x2)j@1RPy+2G@Ec&cjzvn}2A?ca@4Swss<~b>5 zLaxNp%{#etnf8`-r!uY|(2QEFX`Gjp6mrswbT$3sN%01tluLGWR#7U^O2_2eZ~1QS zA%Qf|VZf)cCu75B-6Xe2MNZwRE}co9#GRjF)w=CJTTF^NNXkCbSsa`yX<!-jrLg#AW`b_A#6sB>9FE~s zTIFt-9~>h7OBUCsCA|#=AK9_+@|@(_im{k zN`!J4Ow?p`IhJ)YwHFX)0X$~Pp?lGI)YN2&IKG+m%dyO?EI>8P9^oNnwY!LMX;)V&sgxmyv1#?*{v6j51_Q1}-)ktSzMS>`m73MPB&Q-2k zOdB;TTyDQ$_VB9YA0NPr3AV#C*R>xS4FI7*7-k~J)e18baalucsp)+v%=SiG$O@{k z)fhPj?G7Je!}s#3i z%$?IwS#W&cV$+Ld4thpL{vMom`IbIH-reE_Pld6Mbx)eUX?(Zv&a4>bA|z~8sxtPa z8yg_lSNK*-6=+6qMZ(&sPocV&`o`Pxw%}PF!>IIlj6qK|{m#qG9a#;Oq@Ay)AD4zg zYK<{^k9$}_P%W~iMp^#xxLw&+tt5fw+zIpD5m?6rmL7$(%Itk1JXgvZ9@AQ$YO$Dyd?W?r=A2-KZPl6En0yZKp)0ek^q^!i)3%$ ztoAwyq>5ymdlub(fqBI4n_o6uy35YRWj3ASS6AxObT(2(9_TvO2Aty3(mI;2PgM@3 zeE>Am0K(w_;9(Z8|9ZV=#dbF%X7+C|xHT3B`vG+L*yZ0Y=(P2ye3O}DS9&TT($}xc zq%4Bp^bV0H0VI$gZiMMbx6$<*V~!+T000G5G&_#48@hD+(BaJLG(L!e-Ol=4Y*5JZ(0gtx`l!UdLBdA4 z&<=gx*Yt^eM3RIJeCA@?C_@**knfoeF*mPasBEz>l7y}+xCc{)%uMo4+H=Pz1%9U+ zy^TL4anNok*N)SD7soAS>iVr(&#N;#C{qOSIJ&%c^Ae!Xz{$C@Ct7_Gt(3JAm@&Y3 zpj|ldJV>}S-7F{bD!20!tcjAuIyH1G=pUI=cfli==SAPr;@KJ@T(Hvjd(UB@Z271q zBOr@XFJ55dUIzXGEiLp`fDV^rI9KJ~x->yEm~-N$3Xn5$URQ;MHMkm)*pCfCf}kiM zRs3yEvTHO)ax)zn<6oRgZJeR%j6d7Vuzmg+N&0FyV5k^hF{~?LoS(2aknAjWbQ>uCf zCbl>J%(vT2(%Td)mabPIY1fC*mS{VAw_uR^-rky}chBxUZ3?I@D0!W3{pW<^|CtVn z+PL^u2iP%WM-kDFw>S;KI5co7AKbsj_jW`QC7FUK7X2!&V_wNo)LZDhAq}8L$b8> zM0ehfjGY6#yIzMC2*Kl1S8Z|!R9uUo2!93F(p+5O&X(r!>*Q;{Jk=$IHs`@g<%@n{ zO~JRnvrtQcudE1ExY$BZgF|LjjJRI_h#u30r=uU+8ytKtIC$kTRgyRK5}gMg#bkC@ zZ=4R-|L!<@oC~1baX;ByHO)TzfAx=n%zv%|GfOY4-8&HNKq7!H8>QECg)l-0^WN*&n<@^C&ARrtUn=uOdFiK<^%5=?`S-%WX%7e_0#cvinjrt31H^Ss_@l-;2%xj82}n#*f(49P*!w z+W!rs)5i~ZM*ZzjAniXw&;kX^XUM9@|CxpC-{E)KMGvdnByV9NT-#pPufG3)fMD5Dx2d*-lh}Mt9I$|bJTCW))q8y@$DB4pbmZSj5MJI#Xhw<&ATNRTc&>Nd*U6$^7aAk z9#Q+&W9yiOv{lgs-wY;U=~|Kh^K4@Nrw5&$I`yP6Sj75rj8UDrEka^9DhK~j>RGTn zDG^uI0~q#i0{<0M@8iQ=ula~5S{Gmrh0$q#IYEK0v$d=LF&0Q*?t9H)`~saHWi&`WwqUx9ZKN0afDrED&h{&V8T{JkG1Hx^)64TPs`< zgYW=gZ@Vy~cG7Sn9fmvagpw^dBcoZk~qu2#=te?~Ukn{04OkKL7v2YLjwQ27@ktO6OQYc@11@z}EPROK^9)XP z9+*6_?txSJ9}+OGA^=r5PX>R>f8nwD`$)*7?==&>e3FrmiN9qgr{6`NTg+Qb{`tqw z4A$w}@^q!FI=4Cid9Os9W1K+fpu2g%om1V;u{-sZ?tB!m_CXq-+5cwGM%H{S1u#DB zv4eAOeH;xB^K?O*7u6>OY5jKf0{LHMl6k~4^}@*2`?GDi@u&Vmzy3MZU09FxQPVp= z5*>EvAv<`Y@Dy&?tHV8w}U#+>7yo3g=n)< z`%^Ec|4QljstzCs6pLRo%6Y5=g6%E|s9FH&w;OtLgz0IY=xDn#VHelGvt3|+*b`y~ z6o&lf-*hAmX^&RWt`seQ z(tQ6#veAFE3f}K~!K}e+f}tXcx1BME7QVGSIAp`7A9d#RNnqXHv0w&jhKb^7h{rT% zv&Q<`k1{B`4*eg5|J_*qF_OVo0S@@Bs|F~|+tz(kM-mpgYR~a>C0j*~hJ!#KBY~S~ z)SW!a%3(G=%H9E0NbX1$6%~eFTX2iGwlC8CmkakV4oHpZDL`6AIR!y$x_HH(V4ejt zxmv`s^Y{vxa4ZIRmR$JPg$lk(zm@Ze*DMY5Ui00ZXiwqzPkw+YN^#%TW<5^;=uS#n zpja{_5DYhzKBMh)6?o2bq=SJZP;ORilba#xF;4tx%6~K&$G5eCFhY8YO$_S^E_xIV zP`G9sgi>aJ0f?$Rp&0xtms1Fom(Kw!=w|uE^B+Ao^L{Mb9o-e_!>c^Vu{IQ$c+a z^oG0`5`=G=t9;KBd^wr_W49w@d7wTx)fT{?xprWF0Rq(fGT+8biRb^Lu{C1~2cF)zskR(Y)C2VF`hwJognvLxsy+pPjk;3qcF8yVkSFZ!?pVPRvm zq(s4=e)V77^I!fq{+wk&nTd2v1}XYMH$rcF=Wr8#WD}!5@lZ^wAn+(~cfDfA=(ZVulnDY02&bF5`2LGGglk9=fWE7%jN&b z{>0vT9q4U5fc;?-$*6A=yj!Q-qtjc&^Yk)PMs8 z?ak4T6AB+Pw!?pb=hiyYm17_9{wF_r`S_h=W*6tV`Bm1q_xEZdr!?hKszDat1~ad{ zV5+>LvvGqdD(&vH(=iS25r~m)P-aCJI2PaAEVq8;^)5}^xsv|Fk>^K>rcD|T#pO+D zjO1cWsk6sa;}%cQp%icb)m?S{qPEWwY_DEdPq@u*4%M9xkR_%a;74uN@bj$?^qaYf z-a5R1m_2W~;hbeQ8&>I~{GS}A3a>Qkj%lP3G2Cg%hS2#I@f_CMSMqCx)gLT8%+um= z+0Q{00SKR~s;W1^Fw-Qv;SyG14KBn%3ETQyP#D9sdTG>Odrrqza8VBrR61O7l@_=f z-wOC`En-WijXwsY*Kp>79xXrVgHn5~AKsNbObV@CVF#2mD~@}n{`{W03k;3Anqyj$ zK&=DjH}Cm3%JTV9(oS8|a_&e2Mt=dS2UZT@^%OG2gi2 zvkcYXyBzA{yg8WZ7n-u`WzsOEc`j02aLclabV()~)%hK(t~&bMS1%RS5;)rqZ3KEi zKiXv!?$`0@{4?AX_;zE8OlYO;e>P}o8g=X%ZE(g?$#nW@bLW>hrNhjG?^kVAoM@XF z$^oK=Jfa_sU!9Ei34Mfvq^f^@`}TM@Ej&pl>DtWD@wRwD?D9mINtQ+=(0*d5*xndc zp_E+Zjuo?SeY0?6!CdhVEWib(`oIZcBG&sQ%%rF!W#CG|plfj(yX1aS4Zc}Qoo0*|{f?$`#||FVFxZ}X zYikuU2q&fCMHePJLQeV0b(qH6*5d0Y>2oiIU`YlxsmkBTYlpJX400t<=)i7{s@KE= z&?5>pTJ~XU8~=-6y2saRj;+_ewZ2F=(i+A4N`G0QJiF>fJlXb4j zrLP0-y^i8G0hE$}UK&b9Jb~N+@7sM0-4vCQYag|UlE!zEah0y6^&t&hGm`}Wz43Z* zn!KkGwkJO9dZQCH#S~C3LQw7ly-G3P^^|?2ZW?D^LnIB6LmKq)%ma}in3}rKYu|8M z$Bt}6Gs!j~1!#4V30>|3^8Ee)tVQtj#JMIpz<+-GlJkGR2l~Xa=c0h%NL1l!nr=ku zmBw#A*4QopT$Dm?deyk3vUL!U-oGgduJ`%e`ttSbe!y}P)gfK0c0ezt&z~=lKBdSw z$4dnQG46$nvy;xsnV>Lz;F|mS_fp_iAByxB)#ich`p5IPv;fo;NXu@(8vq4v3>b87 z+=ph$Gi6BGUrt~_%$xh^=ezm6ICkcvArloyTdq?mMnLJcV%*C2Z0*Z^SRapiPj z@x)F>(2rYrCOHnA-4=c~r@TSMk3zyX^wZb^?UtA-&!C&TY}gdJVcmS+JfWyqhh((3 zQ-DW!notSAqFA2g`$j=$;4A&HA&1gAjGFJ)`kU>Hht`-zI!b&0f}|=Ty`amcCLd*Y zXZmp=Kg)SNjt=$=WK-+y9Z~XsN1ytitNg7g%YpWcLCl*0K(n6>TyGT6$)>Oeiq7H{ht@BDvx zq6x|ej9GEdZ41J$cfW|EZ7yd6!0{IM07CD>I0#wLbAniCV*BL*vz+I+VTKAa;e^R# zgEPVjlUc03H~t9gWjU+Gv7xiq2w&v4`-1hb+aAJNqP(7g;0|k#+=i%Si|~gx-Oo^Q zSHd~fi&ZMdYHQFwX zY69?%;f_T2r4R^>!WRfxqNGM7s8io&LK;2aOh?>Y$=L3l^^=~BPz{TZqj6 zC^NC^o-98A%W=7tmD75!7tp-3j@XB-CW#9hen9cJwmaVZG7-9Ar16y*HFXeXka^5M zTD4o=nF)9Jxt&lU;1c2}!vIF*aAQVPFJd0z_H5+Cdsly9~Q zy?HoKnyf%%bf#CZ<{Vy{aDFy4Kdzo8Ghk}6Ik-BulI*h3KL=+jDY}<&N!KY(5M*st z?O}}Jvn#`^M=tpQoAht`V#Wcq#v?*V+P$l_kMh`XUmkv_YTRS&x%^sf3Y_Z8X&Y>` zH!!=3eeS8?G2&sDHmkN5o&@-i1U9T`(R~Y<0)y(dIz%3Tl@ClK7m>;haA*Jr!=A=JrN>}qg;HX$%sTRhv~ zf;BEnUu|~n*|f$dhTR@ zG0MX1_P1vR;&4FD_&KzDSHYMmbbRXwg-Wzf@?0sd0;?t#g7ZF; zz4{Bboc`r5?IwJLMDoHE@6%0+6%EXT`iB$(4-odp1F$%#Ol*<|sJIGZ z*Q;_?z;1enFw-ykc0fDv^>&fYeOwh_59 zt!fk+xqq;YJs|KwBRrmA&EVF3z1fJd2i2}UOdG?cW0bzi1Rh>qC#-w?tN3_RRG^K= z^^o2yvkgMC_>vSrdnzfjztYjLUNO47aQgBHl`!kMWDbxys&4oUv;xr8fdb6P>rQa7 z>DoxIfcw+-QmB`An^Yn+qub%KldFKrjpM_yFgMNoLGLW27grrc-DrU>yWqOPmcjKFK$OkO)b2BcK&kA&%c8ar5` zR}(n$mJv$GKH>q{GTboGLH#Gy=B*t$<+nl;2(bl!=E2O!zZYXClW)DIm>fh|K;Sy7WcfP{c`9k9Y{9skZEaRSsZV{9J z2Zg=Cl-@ho^7Qi#+y^Dz%T>73(h?H;_JjADU4l!|x0e)Ufj}?^o5Mf{bJdd6v&Lh+ zxpDCiR{OBTB8{GF@Urn@k%T=1--gHN9MJ|>zu|PlWN$&9RDf-=JTrad_1vIBL$S!M z!);Ress3|F1wfn*u))zHd_kD3JN`@}rSr4R#l;py0|QYFzV)rLws1P$6(lot;@i~k z(O50-{blt%Z@nEE!w?zg!MaE}ur&1I4{u8-X43^XEVGGkzO@K5lz;-O(+|YSi72p+ z1Ww|oe9!)aVC9Jh8{4=)5a3#Fb6V#B39PG)Py8RX#YLnefp#>Z9+7)F@=H6N26kg# z$}5y^eHT=&+-Cp<{QQ0wwC13KQVD!8^gII}uH3wQR&^tw)V$2n+dv@a1;^Q%R+;lN zLX!2@oE;x*vGp2Hre!Gy2t2&8^|gdGP~OE5>$L?aGnVMkiBFO@M(o9H+|4VTGN@bv zPIkafT*d)t2pqhtcQu6mLhm2o=jOmzNhZ?5>3nGlXiLol&}f~!TPg%md{OHsV8Efb zw+*O>P8wTPlMFGL@vmEFTjP3dI94jbx!i8^%7RLdyG*aiZ(*LZ<_y*JWnjTiIFF7X z@VKB4MFe_#Ns-hG(og}q^w;hr&|DN@D;QFj1l+Jk7t8|bvXh$;wo|^6C~hTh z##9$MVF|d1tnh$C2bTu?NT@NaF0bU5^FGcrfKA25$pI#%%6+`3&6zNz;%m{$sewZC zsY6wafxzvtV71#2ztt#iXHsf2NUnBjdGBY1g(#S4=`ws~N&ZHp0ZVUZa2S{enG zm`<8~_vuM_=c71*WPurH8GW5YS+U1OQwR1^zuEC^vmkz z_W?+!6J+ws-sk01;)q(FrbvLh>7d;3G=jxr$btKqnsRlNw9<#JdG^BqJiFQ`-fbR$ zvR)eNA+FUzMoCt-up%8~OTB(Tt5@%4)=`u?fX3Au38#-HdXL= zj*NqT31X#KZI3DcTbJlBz7VomqM zWJz=daj7@^z+ia`{qbRayJgzb%upihSldB8z3B}t&!N}Cz&7{rKyH3*%=PZYWf0A6 ztU3d3SUNhd$AqhWaYiPe5Z{q#t?P?0CkZ{7L@8**^6eFNTOmcxO>4Z#Lx$8PQa2V{ zkrP+<7nQJnMiEfetDV2z^nhC+a-%P)1F8-+dy!A{2Ea#`gU9m5VsQ;)Mzuq-+-&kZ z?}S5gqf4(Xc@$%J;dYTb&_EK-UhE_a$?9G2mGDY%i9Qnpm32y=WxPTJEDjq9jv=eS zFF_W%;XntR0H_@K02pQ>)#{(WUS0GRM9K*Qm*NBgmqKQGWyxdtS=sDVV07H9RRwY- zV`TPwpmO;3%S^9Ph2)`oC123K^8EA&K@*Q|3X zWG8=dvvc21uQVeFUBO101M}RaD3c&sX4t7q*{j9;9@G8aekC3^_b7bE(I-kj`ze=iI|tV$Qf&-XJa$|q@V+Vlpg9^0Mo20&c4D^5s4$ufLj z)};L!+by44-}fI(Ez3l5C6fdd-+}7w0e7Xj4=Cr{yayi{Cx@`@jRzo(z4_IbYoNNc z`_v~`Dh0V{^4+AURd;(X7$?ZWDZ)D*yNyiJyL0E2D1x?=~%U&EvxzqV=2#jZ_e=apF0 zo-nvIsC$r#f8KETG+ zf8`+%4~`(UZZD!7F9X6bcQP3hZ*nDDnZ5iuprF;k#58BBf#PJ4Ae+A{Qtfgk2IDUC zBjLtCUtU@hm&^97#I86&k?(nzP+6v)_nJwiwi5--pabtu6`XF5E2F|k6A|oob1scE z<$>P#iL^q@4RA!=Om9Gf;xGIOOK@%QFNDx9|LOg5mpYlEO$kDt+b7)dP_y9V-o;@2$<1e!u3BW9sK#23&)` zTHWbQM1!&4n-b)Tu(Y;H!QN+uLJaqu8lJEf!qBFm!ZLxKUoMLsjV!Qm)naSC^<{5> zhndcuJMX&JtA|F3KlPS@H31Cq&DMzT&Q(qFPJ3hm10u)OKM@#F+sc)x`6^H-RDkw& zKaNfo9EZ*t(`V0q`$!>PX=XNAG_LZxN>aw}tX9YlhtIX|ZcS7$D*$B@OL5ie(Wi8i zjLVHjK$Jt{h=oO#FN|rGOolBDJ@xwvo|z@oubQ>!KiyYv68zq%HxH6G^bRiZ#uIm0WJWqH|qzLuouWkza3gqixAlt?z5px+0ycV52{psD{Pfx0EVrML4ajjvn$fn#|mz z-LBYEt!P=QM4aUoQxLExr3V9U3YId47Ix^H^we7e>6C%rMY#u&*ANaA6hKSx+? zDiM4*is`F0r2l}UBgiL03C?OSt|VAYc4koRxhEY!1LfjZ(MR@OIPz?z+BR~{yXij4 z9mZ(Tirt=Dv)sSO6$HU64w>>vUIqg?AD{%JU7p0r)-*2pwAm~!eGit>E%cH^DR{rR z&UC+nTWn2V(3e;+d*34lbg&6K0R))aG;@>sMu3IyE~EFPIqGC8Xn*N#1u>d-;%h|z zo{U{D$Iu8Z;A(VXQjR&C8#rqN@%gjERK$I@SJQ-=x!qpmpeMewL*E9>7?Chq&IY^b z)>onW03?W@k|O3C1^Jf7>PYnI76{)n8is}EK6QimPH9&f!jAmP)GH-kQTl9S(r(3^ zMnNa5M#H&LxLz^dVcEu&jYn)vGcAkoQVTj8C%Vk0WYfk&@4>@jiQ;U$b1$$C4@)?d z*TN`-f&GnO63d#*dq-0(f6s@L-8t4|hrzO|D6)L+C0_=-s6lSVRVg*z)zNB+Uf4;U zwCiVja_oABnug;qQP!69!fic2zbrWm#vOwEg)(hjU1Qa};=1$EpIQ&H8FOL_kWrL@q0^m>XV%wL)%Xd_VKg+d{~3Bl(9zj`s_hA>k+BQ_I2zzV#oN<4Nc@`0+s5skDdbE_G9;XAzke1<=B@o0__2*!TaCu zNlf7R4YYENG-_q2BZp+B?QVCZg}XhV9pNiGd!$KXyj8#2ch$JrxY8qWjg5EA2j$yG z0zs(wDR(cgGBzR=M82^4HI8CIkAv-i;kLX4W?f}@%*2^8C&Q`UuP;Zq=*G!>pX4#c zXPwYEc>kvp?@=igdl2LU9I-xjwDW5D`5vvd^3IdRE#>m@;1&YVs7P$!BlNbm#!2e~ zB@JrhbJ(880VfpdG5jvcw=fawcmX4JdoX?0M4_oelAc?ONQ8+T{uZDVJlRFSB-L!Q zKi75EhRaclEpdDSINo`!w|9)ftZ@_B(&}P-GY5h{^pXQgI!s@=2iDkR4FahlBRh$ zuS<>J8A8sIiu)WH+sCT4a)718U}J+I;owG~cP(-eTGigr$)bWbf?wlN&6`ZR=B=BH zDVcM;z*-G59gN2grHlk$Td~v5%W@W2Xy6DwYdNZ2>Euqz$};FStBefJXsC>zDIM^Y zx_>#I#n$);k_z3MB~#?t_o4Vc@GqWx7S=no8XOU<*6$}JDE3y(miq=iN*G0~H}yj) zf0l;Z?nv%o-k$kIIdF!@mh%RVd@TdG*)o_abF1Wj|5c=k0n(P~?AX&YO`|b}%$mVj zl=mjL;W90=1Jr98dcxD7P(LL;g7Qnf{!5B~mc}>%^to;V!(AuQ^YL>;m^z2ucWSaO zn{vFg5NITd024L>(pqC39=&awEMVj7?CNkx>g10StuMQJ{rD*JZAA-meQv|_^t~(v zt=9|Bb4sUo>&G7^s&XiO%i?y3plL0tO&<}BrX4mjGwV@A`JgPffuWN5nJad2yEwG` z;c?Y#lXm2_KAYQ_o`fWj$_zD~#+q@7Mt8h_EePtI!#rwsJ+4-o@B_m)hN@)(FnFCGR@)zFO^_D4+-1^XG5-P~eg7--@_Hgy5bA&x zjk;~k4M^k}q8Psqm5bH4I-#}C3z1}&=+|$z_vUBoUJMg25z|cJ+ zPAjcKM741#!VKjT&h1Y@80YxA=hxyR8v=+GCZZ!(OtJ#nqi@Gwn8USzBqhuKIx7aofXQQE4uRDw(%o$ zy0Y|)r<`{rSGxIVf>cROg!Sq|)SAmjaKCUIIlXH{tP2IR;p_I0(Hc@1fAlc7k{e7~ zuooKl0>%p%)a8loQt|U~kNkeeBMD3!RHjy4hdZw57`%Nm&BJ;SYiKs3u>3>{qBM%y zm8FxeU)A%u3K@SE_MxqkIPL`8^oTOY7~TQuU{zPOrf{$Q1x$%;*Oh!Tl`?E8PZ-dXZOGLRYLJHU$61l@fp2Bc>;H#I+n#SGwZ`g=7a?monvKYzXn;KVLG z&9X2ul3wfj0Ly7%@x9`~{2Lao&w}Ir;|wR(y@%^|ahZzB5y0v^8F+L3-hCPFkKEE;Q!R{wnxBAA%Q5 z>^coJK4)A>xzH3lzeetV-wHa2SLIY`cL#>+mHVI7?COFq_cabBIaW*~hPGkEa06MX zjp9a?u5bBzLmKBxc8ti_E(SeVwQfmv9pP(Q)#@%bi?nU%-`_9rBV)yWS<6XJbBe@t zzbWklNJ^!lLu%UWhP8r=r@iv+DyT~=*_!v^N>cDVEIs;wYASa9z%xGG-ZEoj*`iE~ z)ba5Td}~W7=$SkT2cg4NPkvVIfj$NMdjn^6X1uQ{s9^?*IcT1`tTIfttrItTWOP>7 zx?mxhup&!w4p1(&kn{P?ri|1-iZs3n2D%9bc$l6ffnkq#KVjNR9nGFm+I4+pT6M!_ z2dXY+1tVGq!H_Lio1+0AT925EyoW=bQj)yhr<(c}#1~pOr}>eW?dqO5({I1(FM-{b zSf2KAO}NgOeVxF7|8Wt@#hHQ;)fRazkuADA0kiV)`*V38@e8S}YfVBg-!l5&MkYVY zt~kVnZtHL^m%uKINxtjZLp%&{fG%y~73l$mm|1Q(| zN9En!_+3iz(fxV|tn)6F#k;ECa7WB9w3$>cmvUukEG{m(QjCF{_Q}Nh|W!} z<`|u+ZY^Q8i0Ln~+6N;qLgd3GARYhGY4=yN)*srbZV#xNY?0m0fWNcD`W&c`bp>^D z_x*R>+CuvAa6mvjsGGb~%@1lxrG#sb1gON(`^Fa4KQM0L*bLhT>BXpvGxVC*^9R6X z)nAQ4{b-ySBlrKh=U=MT|2*>T1pNa}%%DJYchdtSqtP(yI!vG`>5Tqh zKlnfxQuSgT7p3}s%r!32cQ@-xMk(sLL< zY5DgRX1N5t_;T)yD!ugZzEHj$;YiT$k25_=Lhd7X-u<_R4zSC=9qF4Opy@BZqKD48 zTnLV2%DNWxLgbl*=b6YhKpg=plPn2P*m(t#z|E&`nDi>Vo_8iD^!@$)UzDKz?d$Yk zpQ!$UAMTGS7V^HtSBz-W8y|hkM`K!LU)z`iu2MPdzWu_5S`%6{u-32i6=${{Da#^v~8&af-#42-qAAdD| zcgOz%f`9us&5BT63uYs)2i8cvIBqzL-NAR7*D7v8i8#c#YvP^5mBRSyzT;89L*lRX zKjywE8{VmLq3|l6;l&MANq+ke=7TWgWDCJFSMkxE=F&UOpQEAU-o$%ug!1vEMLExg z_4&jYc9xwgo_nszGH&0w=delugkf`kRG5L=Rmr3eySMb#&OP{KfD+~uw_}@MioQZJ znQ41+C7h#W(;NJAUxEMUc)!Bu|H0lbsr~;D=dUEd|9^PzgU8+gaqdvD=93gt8)rMT z$Ad2wdw+GL|1L%H#diLXIs4SO`SoBwE~nDLl>zTw+xDq-;L}@c_FodsfBk-iTJoV6 zrhJd9zeg*`+8wn?a50Xba$yT^jZf5TyMV5@v|onAmu%JCx6-a*{BL)ub_&egRY zgclHE!$b7wHO!1=CMCnIN!xB~+uUhCz-SjLhm`u_f*N0H8|}}8U|%05ax*0lutJe+ ziaa{!?}cwxEo^9m*DC5%IUd;|pT^tIW3rV!f7^-bW58Rc?8zx=m0(5~T|o2Ytq-2* zSz3GlGCDeO`PKga3dW63{{2+F%iFuN300aW@i(K!!&}$W2B-q%##42373cBG*;kzO zAr&`-i(jj&KU*FB=6dN8RAgcGN{zyqRR<^amM2>~OkmEDXN8TetwAdt8gLV%8*gVw>s+ftP8SCc?`~i*<>j@{G`!B2-6DM?D2O*??C2@asij5=NU-_mbOO>t>e0Q0>n8P zCOYN01BNcH$VElZ8XW_7tebod+#)QlC%Z%BDcD}!Cr^k)Dc3M!NAT=S$?8!_>fJe_ z%IQ7QU4C!gy!oX6PrLfn&XZLcr*23!cGRVO_etck=hag|$>?*Vzsm%a zKW-S~eBE}NMHxxOE>!H9c)+48%fq6rW5VUPrrXc7ReZYLN=8B4nuKJfxsDJ9Sd=oB@tCYp!!lWtv-JXB<|WG zjbTm(vN0w1bV^@@;%9C4E^?jC!U^w&IsPveE!XP9h}PypdJYhsXydsprIILGyGNOi-$bp5}?kT zuB?tNGh)&c-LC61$RnCl*`H_UIki}#Pp%KjLlQ+U@N}U2Suh$J8qfW=Co7a_ZIy}h zpR)j+iT7RBVNtO;KhEhD@dS_&B~dRpH`}SD35sM_i7`#z<7RtuWpHrt6lA7-i$1M+ z(RLYAhKl3s2^TP#))wQ&A#y-mBp12H?^fYqZSORGGB&2mP+`b~Z|xV~qLqlpGV-&k z2)*TeJoFIamc^Lpe@!o0E%IP{C+jKbWZjF`kB z0iG?Q5OX^j@Q~#@6*uvoK8Rb&p4Om;kmB)(EpADS8*dD$NM&)m2-Q@Wh;`A!1C!mv z&no0Hz!Xu($3&R3unCjh@Fa%{eI{A5gu}_OdDZL3T zRwH{LK+|HJyRQ4=xC^ABKr${azET>ZWZiVEz-2UxSJCUnbP;+8W!H#&P!h@`@f2K6 zFT!UHrq@NBf3&0IKtX1v+$@SzJ>6TD*wE0XFvFP>Su(3={w<)_dOWe4&uWdxW7++_ zPg~n?ui7F1UhcNu(Je_SrK@xq^~ATjPy-?l1l#?X;_dJI0`r-p`xd$VJp z{m>?nPe;J}Y=q+Ela*G9ya8MCDp5+uYO*s^+ptfl?Hr{u#{*&D@~vjbU#)6phS21= zO2$#-*_D2LlR<*ZyDweux2u`%6@vO(_^zlDBDq8j8r~^^JD}o(5`8UwsfFnJvI46j zsM*@WsB>3W&)qzms?%a3A|j?=j#u#fSM~D?@$y0D6lRnGue&5?S8vG~B4&ZVc^uE_ z>u75`DGf?Qa;r{MyR7z{iFhrQWMl+|@%bN=KV2fmrb3#+N$l9oyXT}Z%62qsfxnR; z4|POMptW^$jzO@2ewd&wP#wmINrpc_lM5kwG)6Rfu~LjHIkNfl!m7K7N(>{g=_Er2 zv>_Flncg!GUHaa9T^~my1Z#siaQB#ot(&8*xsu3B*$#`lQ}ant1}6K>DE;6b8wo|) zb$#*5LKli{L*@k+RX^3;{PK5D&xm7f*=K2ck6nHxdta4f^>`w098dR6Yk1rs-{?whw@4wT$K4KA0OXHO^v%=JTzF)*(<@L>FWF} zEA=?5q@WxAxuj>?pp4P8EI}>5$%5%yEHY;9OVZ9$W`rlffMhJ+8QMhhSnZaBv*wS~~ALe|nmJ7hX+PB7~?*P{Tlwaj2|fE7Hj) zTcwc^Q+}!=-v8!+8xtNV@;4gbp9Augv(nO+vLY1k50igs-C3yB}$!;L610wrC-r;M zPR;qQ-A`}utZ{YcWT{`7u8*m6g2Vl$k+>f#OA`Lksdaf}3vnw=qh`&y2)U7Rmxt>? zJf>mD1X{%V1s4|i^bqvY65D)(Y$AfGNM|ScBbm^aE6P+PE1l;?Eg1)`ZR7a`qwr|0y^nRd^9S7 z=PuVfo#S`}^+)iGqq+f8^2?D|CnM{kdVCceQKO~PrZwxUS|j+kk^2JtQ*nD{!6cPU zi?ZH`?J|b~OkW4ZcW7mY8#O1B*B{ zB0M}?+tBa;h+D);d20IpI7TyMKdme~^CcrQ^CWXJfEH-DtNZ;a%tp0lc4@pGSv}vi z;9E_5M0*P6#WnuEtFnI8$y+CZ^cY!(A`S8hC3yMz68f{7DgM+@vw9ne>a*Fll+F>I z{+z0+R0cd7O4eiOetOwVH{Tm4Ts0$Rpq=?i=2rY!)BAz!%*n?D%cI}Ba{JEe0;{xK zE}JFsQ|-z1Dlz6{+GwIvB%0Q9eAI7+c!{Sm624HxE8}}haqWS+`>2x{8N0I1Q$2V$ zj~)6W*{fA9F9MlFi_Uoe{&SndDG2BhPgrRq!S|4cU~ukyQ>2o@($iDBjk6%AOm8J3 zrq+2`ZrmD}#y^>qWOywq##5k%d;(FV;8b&*^?Kew>1Ci)6RO81o$3P^wiOQeZLkf3n!Zh0=Qdv3) zzKsKx6JJy3*JP6r{OaH5r{LtN>5tbmAQfu<-M2V5%_1PtqrP1RT%7}^bsR;?#PqiV z<8`^p!xlK@wsdn&M&>S@aQd!p%qer%9diFSQM@PhT5~+h!I;^Y3#bx5@?AKTTKCd< z{&-CNHk$8gGIOPJlD!Lpl$CVnb{lBS5~Y?vlVyjle3)LcrY+U4 zw0YJbP_yImpr&KbIa?->`dvrfyS9Y_4OiB> zrZcX~UvcZyMFiAO=5vK@*JSLu%u(pe<*35)xUz{LnIK!P z0a@EGSaTY>o$Syi0cbY>22A#9^U*wcFpA|I3e zBm}sXH27UvGwtW+M<*xwiUwU-WMgh??N&+u=Eia(eff))?3*&B{Zu_4}8`w2Ri(^*gpWfcQ0Qz{Qyx)mqk2#wC zC2p4qll_2g0{pnn*@~$ouiE%F31z(zPkupK*-?))Yp7i9bP`__puBu}QSW z?sf8C95_aC%uAJ~{7_SVQp=%mRv~d#_CESc-xNIthchtt*6`=UPuKOoa5G_ zWf<_w4a(CP)nU&XiXH)mye+u}o(xcN6M-Z)U-}X9ym@rEbAMzjQRYB^I1>Vy3LzSf zC-8766CWJ%?%X>cZ)O@Jc4vVh_|B0r)}f`gvgxm(&5;c@P}o)dJ~_Qh{&UpIqLD?O zQ%?wR8hp5Pfbb+8;UljQeW3;%i*G~+uz{_uZBq}NKvoVz(AEt`0~V#Ul%nI=|b+gNv%dQF zBLm}-kH~aLv6lFj7?lfu9U{+!a5dr%aExeZNV}r<%9B?rOD!Y)u(PY{k;i#C+fgZ( zQZa5cf6ANE(o&5W@5M2?{^?ezPCcig(JBdRo9?w}i3OT&5dWa)Zfit}YVbu|wV&)% zDcuLHsHk{fQG9s|mI?@9+Obr<0bwoRWlb6~;B(658nzlo%=wVUh*|Z8F08s~KugOQ ziy_60k(;-c=9VW)QiZ!=y^{cympmvOp9?7 zfcjAS8wT7X+{8S7OjBvT*Zu%s9t6b?=Kf{aXsEh&=G_meXh^%~C?5R?I`H-KYu2Bi zOjg+bm8Vuj#6`O!{Y(~F|1vI%#f*C@BK(2YCa@Y;;mf$VEWDY~UXV|NY)Wh4xdTo40!&SCoXyca zmkMr#Q7PGPN-sZ2H%d~GJ^m-Dm+}R6xrZ0HSgZb6DCa$!f5J9f6d7M0FT4rJsi61b zqkxaO>iuP5?en;cgjx?_62vvQHeQ9s>mBc0^T8)4SXlW%UEYIqjdC34ioz|H6Z!aY1Fw9s{z@O;qn|vExf;m%(6q|ST~}}Esl}u0V=;@?g_`>& zH8&yC@|hS>;t*6t^+|3qQ~pOg^wk_R5Ms%$CpW-OVtJoy2X;MW)r;xR$jO~X?a|-N zhv!0Ai4_pyi&Xc5v}(!A>;zJXRppV5uL|vIF)I^U(i^6KAU(9v|;L-cT3jc?V=jVbYnGsLvwx=|X zY}gVjSBVwXR9KBYH}Yzv2(ma<%o#wPYZPx4M=jXJfXm|I-CIGu{zx^mAP_q{8jdi} zAPud`eippo69Je}uDG1Ie`hBQ7Cg&87#J!}_Bmx%ebm;@*0SactR4!}3gZ;;AO3QG zzOJLAQ2Qoiji?hb^X-X4rMm&dr{7hgjtfWC4iiv1BVI8_iI?`=NL-FL0;4IHp5?R(k|g9CwXg{%g!zRu(C3z`H%X8*ovoHSoi*T zIhdmdx-rR1{$PB(RZn7LeF`&yr!pLuIXKf#Fyjf077qnO9Mzx*^xC`SXxYU5#~!oI z1cZtI$q^q!kI#LpjjTJ*JdNx_s`n@pF|WMPOoZNP$!^pQNJXuGlGnos&8%*pljj~u1zW+JoYQ{Ce6=@7RV?Sq@Cy-MCsr@ariOD(O9*UfNGbf1=& zrkyZ_&E7AdRl^+4>@>+bl=!g2$ro!_FfOp)(%rRsw}KMx;c@0rLVy+oH`NoV3-=K7{CyWv@wU`P$l5ALxpg;==}c2M$ETwL7nYnybn ztnErZKjzBj-qPX{wH8}PUHG51|J2-GsoQS{$13c9I5apVUnmarl<)+oFaKBD3DZSC z4yPYAC}w!PrUE)9c1yR~GQB{d&i^GTtd_lBVh7v7-n;KO#i@89WduKYMU5uiFmo== z7aEjUv$EvW2>Pc+mh$A3BIG9XJ+@&I`Hx}0HJi~qTH>T6K>D-y++y*_K+8#{M1+^m zZSF8AnYh2uwId03BzI*w(vpaO?%WiyD~oK%`oUG!0b}nL?cfIQ@dR$*<|#la^)bVI2Gqk11VwQ=iM;oW zslmF#*T+ckr^h%HgooDGiU!zJJUzm6Q`U|N)|{&B>8V+n0H$#NkIC)HvRB`2`vaK0 zX`oWXcJ^M4m|+5h7>(bQt7q;CguASc<7$)MeD8=>J(dLJl)Bs2c3JMnhcENX$SN5a zrAL7fL6^&YQUU2hU%>1%Z{~t)7DUNyF1d^-B{+j=0)+#0 z@Ahx(N`}jEsB<;Z0}dWkp*J+DU(N+`udt_Q!m?*P8!Cv zbfe)?h1sTvuI^6zIq}NrGcrS@S!C%SJ3(KEL37vIv@D6AzdN@#D)**D?Naf4a#iRL ze#>v&Rm?6|GiBlwN-~~{u#dozKSquOE3e;QUdzg^7GUPj$LYsc0tfP~^yz=4P?dlW zmx20LnDc6hM;@k&th)S^8GTnxRo}_sW~~9HzLAe>q=^SeIvytum;Z znsMs=VFH|T-xaHvyOiAZ{^Nawwuk~-kT(2bQ?pMmDr$a70)F=;={j(-{sYPrOx0+xNF6ADgbV_u4baM~c zOu|cjx@f#khUEL8$!h*b2fDs)S7n_AGXaq(%9I?;A$Sl${t>K@obuBl%ohXTKcDW+ z|KJ1F`6H9lKvon&eTpYwC^~7o>n4moq5xeoPcIRu4|E2pB-l{|x={hQR`EW|H8b_u zf+u`#@k-!WAcb7dBfffTbublZU~X~aL*!{`$sunl=%jtibL#dX1g%L=TbPq>W9$<; z1iMoShUDL{X}Cgx!zkg-jmop()RK~Uf?&nr%i+Aytv0jkLGwY)c}=Efa}lx)RPyX= zR1(tMLMEmYN-Jlz!URx9SJPKbNK?uU!D#hm1YSUo`M@>>sOVGWO~F{`4q<~ldz=b-iz6i=8{T0(#Ujh>>zh^< z4Dy~vWgDpJSzAvRHkaM1cF}7|R8XFh@*j7eZ|A7Cd&HHjgJ=tTzLt(z;ObcyPJ&rn z_J~YuoZ-#9;0_#^XvTH~wU@bYHTrg@t($yzO{tUb$~M}*x0iQE+N3E78u*P186vGB z;yQ|Y;42+s&QtuJ)_FK`u54p9Z00$N+9aDB{<>)VF1TbiNb8cjyF0U+`%f|` zH2|odaUTaGpZ}E)^Zi&sFU|wn%_pmm<7c1Hg=f6z&3j&h5mv(vPV%xKB402BX3;Gy z!K>ubG-1$#adCx^6 zTvd@;CuO)IUvd^rAz?+^;EUykyp`_iBW7gOl;!u~<9*+eRo}au>r$8-;-uZ3zwl5M z^n1GMYf$9%Uf9>!zST^C_UsyR2Oh*h#HpQXg-h=|MshqG5KdJ}9tSH`eW!7_f%Asg zpN80so(jYVhLu~~ge7K=ql?PH8eI$T_7|xIcfJ(zp1E@)j8~?(_E?KizHk;7Mc>@B))SgXWqfd)Ub#;8VduB4#gNmMWVl$Sg3>@qVc`w;scTqg3;tMFL(AG~;e>L#F@>$9v-XH+*3ux{t-= zCH^x8^%t-I>W^M~uySjf>t9h6PrwkQSqjqU-(judxeG8)Oci+}qddpE0YVv79jfk|@b!Gk3y(gXjj&yQO>x(OW98b=L{wS4w78 zlipN1I57N==-OaV_8TqhOS=WYSiaT`pSgEmU~2Q!+k#BFhA@21@!GOYv%D+dOuYd{#f^{1YF3-3a)oBLz#A3+#%Dq3|P8QnrKVpkl)r+|Q9j1^#2V?q|L+dS1-M%fz#uhH=cF#d~ z%ynRe`?bK&kDCwdyC=eFH9y>?t=A>=m@PNLxDBr5V5D$I<|h&S!x;jT#OM*%`wCM4 z5`RT>!}qwM{Tp(AR%7BX1akVDmcADUjVZei+~Sw+qDCGx`D`b=nFFxzBsM|ZTnztb zK-w#P8#?r-pQ|FleaobWSJXh}qBtV-{5HEcr4@xdcDLmJVdEP=0d^;X)DWXqRI)*? zV}!IjoAz_`B|SZBUEOz5RM}bVl1hcdpAYBf?BaY|F83xSE!%i()6L>p#?8 z`o(t>+=051Yyetupgf`Vw>mI~mh9r*c;f36cJpP-U zNM59?XIWRK4Fqh6tG|8wS3hBY19C`X&Qbkep8Fppt1=GUIR&RNmQB#w-{pK2>&@kU>n`?8fxMCAKUoP6MtXiKNxa*2_kf|A1lRv{quhn*@<*drs}omf4=lz zAN~7|@FxJy9UpocZ4oN+5&#L_QU;q^uwgoEa#?&8K*D&d@rHWXKRwY1l7PaTAxS$Km98BIXVTL{2$Y=I%4c@I z|0AaeqPPbS#wqUF?(pfH3pC{kaJ07%85?_u6~Y{25)oNwPuH@J zG>*TtsnqOGdVHah$EwoPBYUyn-r_Fe^+03sHx(6GHsWnrndAK68` z7Z?XFC=x(@M6i29iO^ z)hs9E-z4M)R(J0Cnb*Qw&|kGz728bw>?h^j195?wz{8kYARu79k8iVYUfg0XgF7L& zolg!1%udQ@D><}z(U}|$oHyo&DjfTPu(sf{mD{8|0%%a-V_>+)u{}`W1Q5KnGMz4) zM{%GGfR6y6`|Ci620LVo{s)5pieCo+AEiCpePRKcI0kMsZ-whXUJ7=2C-F4UFao71 z(VK~E|5O0Q^n|6#p8uB+Yji0YG|6yF810RUijwqFsrfwaYBUPnu{nDsd5S(K1mo5< zDLua;C2{AN{?f#L=4q)ERyD%h_sScM`4`BZms;MWhExYfT%6}6lszV5rn zJfk2fA}U&O?@ld{9s9RoipIo44is_Mfs_HT@9O7{Yy(cic}d&4XBnTzVS}otDXHZJ z=HCl5a&to{%Lj3(Q}GLRi|rT;?=iLA5he{0lV1zix}~;HPVo)D9=ECgYAtG|;b*lQ z-y?f@Hy^LnW%h6?Wi1!^IcK%Xk*yuba!<idh)J|3nvrKKn0i3~g0U!S!wo-S%^ zb7*sF9e1~T0wwmkI#6>oN$0$3uzp9(?acXJZbpiH(5G9j7ka0hszeXQ$2A>`;FCJa zuAD(;1oiGFW#t3yH3mLcTfXe-6mi;f!ZzI<~XPz<4C05zGnNJCw{IOUQRgZ5$o~p6|NM=?d03n55N^b~DfmMIbLg?1OCLyzb9Y)2Di8BHkmjwd z`T^@q0ZLWyIHcr@s(hDEj9Yu$>)og==@`6Ma`dT<)qG)8dwSu~shTNGt2gkPYKPpZ zY3UhoF}#oc?RWVe)=)tq0Y7tnh9Y;^`ozR2OL8NBfmx@nfrD;FN{Zy&7SlaNW2c@R zZ#Do$QIovTJLc2U&g0YWnMzC3VOOluJ(j(Qf(2$Ngnu?f~vm`#=;yuK6~1L~Ez8y*I!Te+L4>gws;CFES)-*8zE(X?=5 zVoeRuh4=dZKyAVIawtwKPU4dN9KAhI`d^HvO+g1T)N_7CGF13kh<(9i%4HSe}824 zb#|m*x72|@V8|vi(Q0zBs1W`8g%sXL%*&D6miydM=%lmd_UnDDR@8^b3+(GBGv2o} z&K-GVnfG+WQiayPu-*Z~JCPK*gPxqbxA1#Lw%rpR(>Rd$&iy>tLH1ZM9T~_eRq*`y zB39D%e2Y=pZ!W9GVFJ+K*n4e|WrXiGmi1ZE1tWNi=VOBvC8ngfipRWX^5J0ua_3G= z7uNb9oF*y&VnNWI=dRtAk3-ecdXg3~l9K*|_*`E;M^7utXdbO4DZcZ?s-ptMiA73 zN*x<(G2&#?Xze@HAq@nr<A2c>C?P28T24_n@2Bvvl{_^F|a)DJz`?AUZ);nri}h)=aMC4NFP{U^?v zEL>%n<~-|&CbsP7aN7USw9xI+phr*b^W_I7H2)I6qU6B}ZayPV;LbSrI|mn+Hx4p| zj^vUB(Mgf+Mj+af;J5I-J$+$RWi}f6Lg@&ELLw)9zL1}pIG07S!Y5N_3g4-WZsX8u zZJUv_u-7k;DdBVh+RF~bRmyn}I-GpffwAnQ@M>rAfth8TD=E>E@KhlR?G7&3ybuSkB+Yv?=FS); z1}Uh2Tz6R-2&7o8Hg&ZdU(p_oFTPlI&MsT%3x&fCoc+Q;Nd4XXXHG{bTjFG3&%(Y+&y=7%a3@*cE;mG1znYJ!Dcv65QFB#D07ctzK)~zH z?RV%_B2<3%bF{=`d%U-X#R_MvCJgDQ-h=R&4s?Ku%97;x6f@wbOiBxVLy1Fngitjk zcIk=?X}P~oi2t^KOevf(H-ZHiGaYQSAe|C?u`r<<8 z$sf3i)CWuF$+O%f#TA#OnXjw5tJEKFIq>0;@1!@8e%QIE7nH;iPdt^ueoyUN92p9} zoz*ofb-$x!hdE$Eykf|>1tq$Zjev+V9+Qvr^na;w+FsDMKS!QP@>!C8vMN0 za$+H>Pdc^RhaZFj0RNDiQ>Kd_Kd%k0D;yOaSv}xdsQ$J8W`5DFYg)IU+TGT06Mv(E1Q@KXP7xPWb6Ygves$lg6;21AH9AdD+kHY0k9$qc*4Y zcmy#uCro4IYSxGPy&Io9f2Qs)g63=sNu}^9+`V<`R#jD%)5OXFp+m;G-B@|^#H2{9 z$HDy?plMLj&VQAaA=76H$i|l0=OTxd=kUeT?pZzx{^{-7CVB?|fr=Yov7TR7daaPr z)WlsXNcQj(dBsDV)xP(aA1KX`|;6Q{d9R~p>0KGs)YF=*u`cW<0;s?8!L4t zo-Mf=T=_bqcsHC*q=V5VUv*sQK=YE+U34V5$N%|Zy|y7Z!9+oNX*sEfST*R?xb3yW zgsWrclk){`eUsCyESagKHoybXevh3dT%#M*(JkK?D3-&y3dNb%OmAQJ+40rJnWaA+ zrGA@GDs7d&uyH{Q>Ns9}wqfU66=*jyUrPfh&YpqZv>olr1Bbv7D{Qa3!*gG`M zEf-Gf2bA5r1U36w6hlQ_H!HqpZ!4mZPP$ql9<(~%Vy4T!BnYqj0WzVZxQl; z6Bt8xgTCD_qvQrRr{G*Q<<8u^)HrUMu%APz`{wKA4}L-ojtY_YUDLZQu$1MvXF>DV zW~zgeLO8Fe&jk2+M1p_+l>eF|uNcc$jm6s(7Gq-wD}8lgQrLd>P~B8_RWUug z#D$CMLD;925uuc2AGy=Aqff^z=|*AsTaE!)R;g0ZcOlZ3E{NL~eSPM+5F#`ajU?h= zk@L?*3eq0j&eBJje}BO%f9J-bv)&{ZnowFbua>4mW^X*>;K|OaT&*l<;)T1J(r3>$ z2s&0Pz!E>D=Rrq5140}kuXLbo@;nE;gU>y{Efd zO9}Wbluv_vcha*UvkrMG2@MAv6jCfCu;e0*)@AdeemV|l@R@z9Nte$BNCoFt4LdnI zhy2pF(33w_=qh+(q070&0%oJvr=t#=C-V{7L>{GErSp5<@ThVJjYsotvqQm2;s(D% zfj?svQ}DLXF1KbP>HSwbmg`B*!$*VH%C>s99`MZc^9QHk#%|&c;J!Ex@<~l$y6IGv(#5CoENIN7iOy+Pt1TBg{Wd` zl|f6Q-IbZO8f$90ZpQj~$uWbvUUg7I7czz!dP}XDx{vW z@{!Uu>KAy;J<6jAraJf|m<1zj6ePwyUbL&+*5m z;-?FIP?cB@XW}9cnW$%Ur~3=?^Yf7Tk|EC>WjpxyoA1CTx%%qu@;mEPN+K?0PPkZY zFF5FEMhH)Ph1RdF!L%vdN%dM50ShG_wUex2m~Wn#r23uXVNwSYtFfJeOFL5+Onj8x zH)|>pZ)Kq0^T}84SC?40EmhuvRIRr@*{XRx_u|0{I$k_0;MgUGx_ZCPxiGRoR&v0t zruz;_*CO`n#=wZdm<&sEeKxyaY_~THvLvIZ>Z8K4WONj<`|G_8rt}W+0;Y`DIg2oV zN=B`JGMoM$$$HWE=1(I7mRxn*Pg#OU3*w^oq(60~A zWr!N1)jbpwbkBw#S@apzV{1CF<4H?S=hByl>c+jS6-u$Z9$P(y*97@JE^)<%Jwq&c zw6HvV(lYEZ-#-7G`P_W?b%HK2XT~PUjZoC>yH#-TQYVy)e{JAbTwZmIqVUpQL~Qt<>sfQ zsi1(W>F8M{gGxuOs>OuJ)fpx3IlhAqrfXnoxt_a6EWYdq79aq`^Dy&vU(MdpBCYps%Ln#O(&v8T2h1&_hmZn;I5Us;Ny0Jgj!&Pw=zcIs@N#_zJQ6` z+qjjwE+M@@|Ka#9XC3p-hzQ}20z1Z*zDSDaX=*BM-x^w;UdI-bIrI6a$#jzafao_{^rG&N-Xx$Dc`=g zE%} zq|Di$)w;Pg6!W&dyJvL$VPwhmd4qh89vgBO%daSY`H1Ij64t>*UBP43rZ1AxVuiKR{6iel3TK?_WSqP=qIAS! z(3-UqVfZc*pM#FBKWbR)Qx0E5-?DuV3zq+-7TTrjybFq~V_0pP1w1Q35^NT{DMiO^#L*%<6#x93GS#yz{cy|+Vs^C0d zV0a+Oqc9icqllge&(WU`mzFTN#-_B1^j;pk>+@iI!e!~ifrO#Y)3Xy|8lig)D812y zwBhNfE;iHRbsE_E@8oA+kfZYYxGkD>C^{@1m3^mzg;<*ZicpChN?0 zz^dj_OUdb-&BBTYNM4&8M8GZogl*xRaOFun5G49;(W-3LU#aPLFM)CfsrWs+($i|Amn9Gkk^+H>XVpky3!~4DeKFj#qOqD#Oy7+v9Ep7`>{iOmGKOrsZ)o7u z)3niiubLERtP>iZ)8pq?iyw(Gmk?{by`ww6ye6)IJLf9z(M7a|yfB!gYA76|VmFgJ zjE=&Ly$Y*@f%<5J{DrAA8lyXRGTjKSN#oqny-~v!CnHlk@d5$zupf48k~}i+a#y^` zOg0{7_E6>=O7?EM969e`E{MDU*=&?Ty;0^55Q`r-XdJ!uZvE4Z@UDB`^(nX{LVN$* zV5Ju41`bnTuXDF;JBDT7dbMKW;MDk3qWhduIv zL~tp*8~2g13J^K=^ib-jr6I5xz(h4~!sAV&OR@@0?^R=XUTpIe&V=+U#zT|rfh2?p z_p_@-)C8}NFm-xAUtySsnVWl@R4(5g{=sDnglqnlYV*Qc zeBJEWqpU2xsJ=D_v|n$7SaZ9OhV#RXCgE&ew>@Ze|dRD+uS7rLhxjn@%p8j znmS0|kFpJr_`S~NAKJY$>F%^^n%Ua@j~^-HXoZ=yQ5WD36H zv6ys)dDF;k-=;IlZz3ad_3tLm%2_g|lr#*3$S9}G=!tNbu~|OT6_nieI`aKA=S0qz zwZ%w$vEWSVhtMvlRK7u#;OC9;&6r+M59kZ1NB>Mj=VrVkq{?%P(I)xjUen@IS9OOZ zPo)vc2aZ7$i6hYePA3}woF5iRL@c{1XE4L2=86TAHP@gf{AmXRyD*CMGcExua?Qeq zA^7bG#V9TwMe%%ta*57(1;M%Lu|zY23LzFJ<8GF&qxe+a?$oEf;6gQ22qL-U%D zDzZ_{nOuq5uPK%Ie1WD!_VCeiC!0704|jp}SN!$flP{2?ubOjb3Pu*)hPK*QOFh3e z8aBvGNxXs(bY;Foj+nce1&4(84X0@nZ=ecPvtOPK9W2>Ath6-s1klJU7G=wsvf}Vq zxDLqH%0ptnwkX@1F!A~q#A2X84$d_)PF_~V{U~E``PwCqv;N`j@3m58jm|(4Q3_Lp zf{FymS@q*u>FbYe`qNuNn~+*uI;It_2yd^B^3ND!jW(Xjsxu3>7^ho8x!$OD!R`i_ z-(&i|Q87|`5?bMI={~2GN?Ddkd{z7H&A^kjw#RKeNg6!6LnGYll@>ps?K&e-HhnKA zMo*FFLIXUGEha8k^VZwwr+4TAR){ zu-o|1te;+@0hLzBIA|R%(f7bb_5{l@*xGn2a_xSE6{l&M>1wMay6NKHq+Y71rZs0l zcrh^*-j4`jhOx*Rt{}XF^E;8;gNIj?D0z`@j|^|dNM{bu`yao|IC=V+*T#mSf#X}y zbR0M>V1O43Xm-;QtQ63i{@>8qbaW=gI7j;tvE>$9Xj^c|h#=LRMPDt{*Y3XgZ z(mzWM<%&wuRKVXIoLHbN7VLN6#+vvqy)tAR%KGlxVH#n*W>dP&3O{hMG9=$5u1j_@ zODDVkt%JWeZd7hrN~HHyCSPQjM{_>g8`k*g^WP@SJPhRV?*!h?gf1d#43A{6uQgVS z!(b#Ov#hu8R$GJz*w5DDSOq~YUPq%2+vxqM{@~7J(5}vh&-W~J=~Jj7%qG!W&3n#4 z@AiCz($WQQ+fHR>Vi89U-N7Ew|+ewT0N5W=9^|3-P2m&neP3H9CJpvWIEIDWCW z(uOaYu_kSNm9+vIyX_S2j%O@H2@hk}E^mpkeQxt(?`!1`s8Xt*i11g}`&Pw0++cBH zdqt|k%H`A}uIOBSF?Eq>-WSr&LvcywYuZC)4jz_adDd*;?keZ0Rl5^2JtfbR z4~x~6xB29Q0lgEs9}|8B9A$k0Nbr;PmLrZj+O_L7n24bpdUhK=u=We(Ek~R{6tQ@x z%!n-^%rP_Rj*gy`tV<-+rUuL^jxoQ688KnYx~$+h`4%~9D5zoZ{S{W`&G16LzBgY! z@Agn1ILFLzo)hE_ET|qCD0+PTcImpGV%PmbU^>Ie$ASSz*JL(3u`MqzZK>R+|F+BSgSoZy zi&6Ne7t;Gf0=7)N*NeTa7Ho^7FE6Z*kawnt^x0P}hj>`&W+^-LP$mx~_hfk+!^rcc zme>M6jT7`=*tf!@&9dBX3s#J+7XIu-+GCnojF(`Q^N>)G$|IsLY@FmM7}uOu1^D_kPf&0`GW z4buF|){Qs1RJ*#&BB(yK3}RWkbKHdp>~k$<>}gFsGg>)I$z`Hek1>VqL(ILZ# z6_LwA0Nf+<-BphfiUElK$_59qiC(wl9sAz;ts*Dp*fPqvrL9orZe%;VkK-2)bEXI= z)*?SP5k5pD+XdetZF=7b4oTa*T?~3_K2DM}gUD}^+ZM(KvfMW^Rx~?=vo$h+Vhs@n zB2la?>sR3O?=8&~PS=?3f!EK7Vlyfc4@36UlM}h$Zh%%f%XveH(m4h9bP(oeYTZ5O ze<1aHiFttIZnQ1v(2JCx`p`Ex!K|iyd9sHd?^QO#EC*5wVuz($m`h;9FI9PmU4nZK zh{>Kx^j|)M2e#^C4vOpk%*JC)Xtfx0^L@#n)YQ#cPv^en7JLF)^J>YaH@D>_saaq* zOI_K%YZ3?q5FaR<g@90f&@$$q>&(6Xg8I=BnKlS$RBjP!|}CxJS2)t;Bf2 zA8ByvoN!$IY7r-%teo^IJfQ7_jm@`j>(z)!qK8d=sMlm6$~OgMUyR+uLQcz`0v-n) z62?EFxHhh8H<6+LR_aN;GW#A%zivea^Ye&3@V1XyuVkibbL-6#WsPdOBIL)r9k*_U zN^C>fpsyHnR=6Cv5S5Fwk-cB!nlX;&uo@K80Lnaap;^-^qov+yX`#3GGE1*qCU5+> zYjN1!`qr_2Db1Q^A_SU+Y zM!~oC!9sUyZ7@(IlFJ1FXJohJmK8~jZCPH3o+=yV|ni;`{wMvZQXxcghN&^7hV}~yWJro zqx_60D3%*yrCiS3)>3u(!~!Ezr-P0k-`oImS#6c24Og9s?}sg|wuJD?yG9UsnU7oL zb6Lg*a!~Ufr~6ON$J>U2_>i}hG%JwPx>rYd5E`d1!tc$J#MG+OhGa??8t9aU>5-Q?F(DlJFj zJL^y<5hL-S?1!)>&Ji;bKN7wf`~rmm7c#)aC+|&l!Os&PBvvkI#I?&=604^kV-NQk zN5D20k?l*(x#=3;nNeD19db|E?7jbYe6DVyp3%`5#kvVVpo!p2g>EfVJ zx^{ccS>^NvkSXZMnNSXWf?n_+-pJ-*vi*M-*FQx1_j}=@M&#_^SD9{IwrEnThx66G z)WwxAawX^oHpvNGd~SC_j~gjC1}7F)<44a)yc1kZFxO&`K*46-l-h3u>AHeBCuM6d zdooY%(@k0M|N6L@}8q#N%}|KVTF00PLpw#eFy`tZ}dLb@YEgL_P$F(dwhjNGg~zL^KQktKtW+Y*d`; z$UX*nDulC{>of9KIRLH{QTOP~OwUUNj^1Rkm;Y57fjit_kG3)lL3^oi)gneI-d|H| z>e?*89!t6J!KolwkAZt}{{desp_YP(6}#10LtZ(V$o~R34{o@$qdT2hFT+i^ zZB1L0y7NO8l_nZXCU*K1c)ngP=rMVv;T`La?j1YW8w!m4=y`>@(Kj?ea_qmqiVOx0 zoJQgyEO2A@Ul*9)i_d#af=)7|fP7xQSZ@}@RJG4uN>@1QoUCkYPM?ZVnOjRx?o|7) z99Mo)58KBLWH3)CTj%iRP#^4i=vM?es?!=A57K|5!`T~E-ttmC>3IFWFBDWHDxAiY z_B+pCn{;dE%hb`BTsO-B1-M#I&2_m8-5jiNEcGUtf&15-O1J;`e4}F$?x3|Di<~AD zlBf-i(}ub@#dVWhUG!Ir6QZVXWr?e+rMG*35yJdeVgGBx{)3`muEr#)(nh6d%tOwbpSFV?=`7ux&$iQN8O6@#LgpK=BA z9Xxn-yV}DBWY!_3!hIs=l{?P%fTqIUaQVK7LBI-CAn@u(AiU>sS>&4AORuBVhEjf6 zXa3j|Pb@t(E4qpJe5XqU7Qq?Vb*l#uUYUrkp-1|f*Vx{SgZlIb31M^oqtwK@20f?4 zHL9GL`!blUdv_Gfl*xfdn9+HEfgtnsIxe7=pu#ZhQJklVSXA%wq^gZ?@6I0`q<+yH zQJHZlaJ0_PCMVs#Jy!{Hzxzyu8`nLtDEq-n;`M}aKq&u%hICbWp$!P$<81J@iT1A+ zPs}m7aJDzVL~L$)gXlk$O%1C53-`DG5zai_y?;lyg8RH$l!_>eTuetTu>tWter6Z$ zCLOM#c5+-tcuoMq%cT54Zm0+-O7FT{;ZEK$AMbX%Z%0Gk$RVszxbLi2{t~NS`p^(` zVjrMrV`FJuoR{E^j^cnd3aQf{cU{%J z)@Khr&f5sQlpgFP>B%!>?F*!eVXM5qEknLw#Y-@Qx9ox$FQTAjy%#2Up_Ms(%ahy%_=kUeA`(w9Sd#5LQ}CgDG|mI=F9bSqArIw zy-pp3f;>QYxC-i`7cLcC*ZGCVpYJH$Ws7N@NY&#xTJe)`Vb z@n<0*&D?(f)1+H){K^qTa8d_;Gv2wQsgnpnG9;|n_xRi!&^qL;X->@P<^ZiZbUK6; zu=xgzRR@t`JCjz9AQK{)UWYIyuOXvzyyB`738p{#bN-S@gSag6w^Pbd*i;o%3y1Q< z_zCPx8a*=gEh0E|rmZhj4AYFhh{t)JBiy-1hkKc$HCTCvv!!UI?jA}=_ePnvNP@m< znf(&Bra9|iEq3Y6OP(Ls<$u=J|8bK6&cZm&89!5rh4#g-B&$rWk9415zdfJL6kk~V zt^f3Fg1%P)tP52blDZO2lmOFl5_ohISM>6x74w=9qD`NO&k)7($fcUiiPWQg_5nYz z025ELr&CvqvRr;8x&0GE7)~C&j)ER&YByxZUBGz_AkuXJ2|6*R0jes7W!QBu!or5t z_rBx_Y^^YSZGkWE@*O#qvj<8(y51@7Meuotk7089u6*?>Ob#L5Q0>ct)MkD`xT|lV zhzn=jSNZ=1sAhfjNa1U(yo@s!FKTv3G_SqNOjk{$ZG#(R>3w!9#T@R7Q=XS>Lrt=S z4AyDhdP+}cMP^WAW2#m=@o>+@n|Q^2rj)*<_U@8R>r7QKr9xLn!i^^oWUc&4l7*W; zIDmTdv77O&Ze8c^(KNL$W0bGH34=JnhLRq-AnXxOI z*BI$zXAQj{ZTu=+%R&<;=U<&Uy;5X(_~_KPw)aX1&6jRn^xZ-u2ud@4veWpXZeUl} zhn(}u+=hqb)6-SCGD|dIQY_aoA$ANYGmYPig{9bXLGLL?f8R2rkHS!yq3fJDzXvIT z9>!U$P&sjBny*grq9?LW^~k)-l%KXGp>ND}c+qys61?=0V@zGmA2)D={%%{>2X6R} zXWO7lP=%d)KZ+)G1jCQ&xhaYyWJyRZ5)!V4_ za>%x!8D*(ez~#<v8}UZd zb9mJQ2|iaqG0a&Q!;}LXtM@6=x+TXZd!R7oU5`n=&f7bPGt8!nf^1i8HgG-kePQ8g zLxdu&jA88n+KZK7rMG;LT%tZDq!Y|%xMaxeeV9w-0L|~lo(Y2Xr7G+BiJ4vCGw6!= zxE7Cb@fCuuFGhq2!?BIn^-;7ev~aiIP_|%ZR7Z?;y?D%8a30lBMw##?sX6Pob;-O5 z{f0Hlk7Inr-IvP3nYJQwu-vs4v*POZuNpLDVsU$*@?dz<)qUQ1Uspb0hZ345XGeB4wt??c?2BBA%yiY(5eV5)#pgQk1V7 zc0Emu_zwbmQLCY8VS0gxj>{yI9V*1-1xxc|qjs+ODjEG)u|Xl7ESd62=UB-%Cp-!Izc!AL9yyP>alYfEIg3Dj%eqP$e$C{qH!iopyXz#b`_{w~9 zI{lwx^qt*d^G@N(uGR`w={k-0nzGVJf3+6mq7-z9P$BLa)*ZDi`4SuK;H-Tnqy z))1{~Otc@T0MXAg^{Efu*8Lq{RJh%t~gij%Q% zj+1e5F2~elE+cBk5x1jN)0r=@xugS!llgMF2;pzLiU64fE#4|URX}&ZZXaVSXA_zm z-DkTa2>2k7acrjV_F|T&+-@94wLl0|oMjdypQeHYHhf|!RfTxpxg){4N2j;xK?taE zzEqiX6JX#KZn=)svIBri*B$b(A~O4fvb-0{NdLvg92jaV-}(~GMU*Bth!obu3HNz( z;%v1N1;%W;WHKizH z>ZXMHd}`4=^2y&k50a?={X?B{8TKasHG@w2ZUpv|Mu~NHd(Vlr3OkzNp@mwI>GrnW za5-;wW@aY)z3?#HEk@kqtX%2Ultg-vU$~D?xxcp^+)C8; zjhZ&UDM@%oE;4&0;8PvbsCpjlUl(V z{3f4A$u5tz6c?jvY`@)`HTaiM!APK6gAO+!lLYnY>Q-7w67FuMM}aAmdDBO6S0LU7 zMC?N=(LR|sGv{%@f^zY_O_A!oLi?I{@TiII5 zH+6>|;O!N4aQM-L>Hm;cf-Z=aTSiJ)9t);Qa>%nmF)$|ytIIOc;>Kr#%y=)*j$%81 zv#o$2H8owzQ9M2!P*7p?PC(VO`|^RIjsQ?tNH!UJ1l&m4<_b00U|3UR7`^!~MA&iN zVxm<&tP_{@iJejAR+{{ndH6!u5oG#{=v{FBz}(pvw9ehQ<3a8$@R$y0c7+Um_hc*C ztqzq?y|C+ijCOW?z!7n>V%{b~rA#OLvxwUztMK-(aJ^mLA8+xi4_uQes-zj(Sp>oBgsuGKi*z)^E&EX^3lqMmU`9Aerf3|k|trmw$g1nT5lxFDzOz>qTG zsuLLQ##5HMn`h&EF*{I@N7E=Ewsv>!bSrbruZgDZpsA?H=!T)Y+;1BY=H}*>9P)sK zYp*6A2L%P4hJay#%U$#m+%$j3V?jU16&P;cRa;w|U05iSOV8``X(=is^}YG>J1>UA#cN7#@ zv5Ydyep68*(NZ&RgnvQVaqOeYg^o8^xB!92oVY#pND(9(u&KCNS3NrKtd^6=(wbw+ zbwag*5NK?)sOecct`M5s2!zW}GeBa_7Zx_&G#aIKKLkB(z8spO)fWP;z*1@skxx%b z8a>TWE4WpY`5V$;Z|=@SrW8O%BR@&`93{3w2=CF~a|gb!AV`I=X9ctsTvBMCPy0;2 z%O|C{qIW{3H4nEUcTNlp*qD{MZK#>OE~Xt0SOhnK;bIG(7}Axp&3RZr{t^iaq<)F z#ht9FEAA#dHz@BLPnBw20}Vh&&i`Z?|0bbrc7p*O?uLfknMAktYlB4SV#7sz5EGw< zz>aRTs~Y=})t4X%W5|gEpqycZSh|kz+U<}9NeFLzw~%xiH+L^F44>7`J_e?AP7i~-9FSY=1-(#6#5e#d>B(QCt_dwFr-+TdwtJjjZRxe1gC%u`=Zv4 z?qZ=t7lXDnmGoXzuW(wxgC%PzM<9iHy!cv91 zi`#gP;(#QV(2SNKL0r2_jUiP=`BuQo0bh%fTTNOiv=AYJ^JdHa&67xQHi{cm{;k!T zaDAV=bOvLJv1jHX+PNC1lh2q^F!^Hx%&@kH$XThF5T$SlHn{SloOF?8vR9u99ZuR< zC5Be@2p+TRDQBS4?RM759jsevXs|Hy!>MG^{MnK23sg>~nf7~7HXOpt>nBVXxQXq8K5E60AWAJq zec=ZEAxHOnVcj(4qEseZZx%Cwq}Tqw6cUN)?Q2vqU80L#+w(zdr0-=&mG-s!z?B@l zDxy1O`)$secJ81w0$!I{<3956^m>Bs>U|gK;(Mr7t zse-y((*JAF#m~`x(5w9efO6=__NC(BbnS8>;1V#mk}LH7hX^H@{? zR{+>Hj-4yFxCfP1bar&Jdxon!(%Duh(cBR8e#R?1Q!Fjz>z3_#pp$O3^n~l{a^VqB z?D}tk?&7rL)H3=xfFY}$8c#ylvgYor%?&uRno^R2aBY^CP8aFRfgl|g#M5Z{@)S|V zCqC^C7^e@?uS1wXp(k2}zT2tNTZ~pCp&;i2vPbBbP1aRc;eyhd7z^YW5sFV#QjdObezS)@7dh23HbUz(1|Bk!hB8)=- zd@pP8arMTIE|q4J@7Tco6)*Dpc%|i zWoCJ!?EU5!BRq&~w~f1tHx%_C-WC=|h7&+0S-}NaLK7#JUIOi%42Rg1ffYL7KL zMRGBoTfV@(1TEa+@#&n*+T>x=9=gFQUkCv<3mYYSO9M#B+Z?eU1A%_l7CL&TZk|&@@n(-HxNnDtbJXrbEDyYiB1gzMkb*iP9N&6QAe$isB0X|fTurUq>YP_?=Z)$XO^vb#%n}W;*6vtk; zzHk^Yk96{NdpQH$XJ`@?q_vhW9Nt(9^aMWC@rFEocTaoqu8|uWptxw6yiwFgwctBm z(X`-BC-yxMaVM^2lF1|4+S#{TP8;#cf+Wu-TM{5k?^lbQ**l0O}BR#&dW(Bu7J^-@Pb;}FjhF4F$3J5^P{>L=gr>^{lhB! z^(Ll-hD-F_XR?{EDGz%EQ??&3C+F&nPHq}9ppA8n=o`9k>%7N4n_IVTr0LAuT@1Fi=qGo~nv*GcT6srYK4 z)UbcRGkg)@8`Y7n!x5Oog`i!+NI^4RVF3YXW!;$KBm{W^zz?nY)ja_l5}j@R|Jv$5 zJ`}M96@zH=P@>CKaPbh8uB}ZsG;-;mOa5^(vfMojW_e|}Rhl_k)&p1X%g3`n(0zfn z*B)kU-3@QECM2=qL9twgD>!_6s#&ja+WpGE;AVpEfjD)3Zccq8lXW+|`tpyr{$sgt z3nMBD`GMBIpt-K^i!}n=Q;o7O>rpQ=QZIg-7@$u#1pOBoJSx!#LC#8o%95kF5u@$e zZ#0z&L@g(I0>xr(2uEpCF)?6HYxSSQfBx_HEqH=Zki);h4kmL7mS zVmc;4IpBA0sY8Z3|3#oD001pQ@cX}9D2sj4KwwA_iPBLO%6$)_V4dhj+C3R@ib2d>ptPe~DBVp{)ACWV2%H73*=B^JZIyXX03K*{ z*qx;*H@2YbBd*+VH*N17)J5%Imq$EDJF`?83UG$idBHQZBh&v4%^SJ|_^ZycbzdotPnzykbWzdRVcQFTMVzlQeiji|fdgS5>Qpa>ux9QL}NZc#5yO|KBsMUd#LhVTXRyG=8mF)MXGo@+CY;S zIO@ELE;Do5Q#j$dKthdAxX`XwAwh=)WQceXp0;#f2CEXiCquhDBX0@_iPj(3qRrmJ zRQA5(j{2K1KarG|+6#P1)$tz99oasnvUh-0g(fk&sBO!)q@*v>;t+G`1+Xg4=~kMV zKKKEk>mH5A;*b5bmcN%^L>*T_kGx3Rxp4zRR^N>3d`@#ml3+*Bm8mPV->Xl3Z_C;E z<22uEZ2~Sew0>lzmFxa<+GO}$X;qs0{ZtBiWT=I5(;jO5#|%&wr?|g2`4hKdZvq}2 z+W9Xisw!%TVXQZ#NK;}ZN`P!g&N$JowIRa*2QjD19@8YH#TB3_HZO-QXs!xJol7-u z=pacmwrNlU)(Q2doOb4^n<}xUr2`qXMduKhk&<-Y@gi+$|Go3OU0Ek>k(Cq#3`X={ zp>0w1si5^fw|}W*TB}hRoW)Apd(Bf_asg4Ac0>J7FR2W^#!cI8nw|tAYsK;}N#59_ zR0iLZ-a}LDs?-64hxNYr(q=GqYMkVR<9?cAhfJh0ShR8%O;cz=o#bW{JV<*GD^7{Z zU}J%0&q(2> zhNrH5oqvs6`GGbJnt1$6 zj;sW%Dqb}2UqB92PZuLrLp!WZ`3P2}zOx@no4-{5Ypg$7LzBPVCSX-lo71%Y?;iu) zRb9qu?#MO=tm=l>UE2P4p6Y)`%VZEVCFdM<1naA+O`6PyAE5f*rSW*$(^ulC{`ZoJ zDNUhEiKnvHi`YqfN1asvo0OkKn;6vbn5MN`CututGJtl=gz2@>BnHlz%3ia8657!e zb=p?^iClA<#6VV3**gZwp#9#H)c5YvtDyZ}cko{4`W>HWXP^J~DUV3qZvYGAAL{c% zir_b>Yi`QT+WccV z-~)a4{7--VOb**8R8cgzOVi-f(F?!FOfU7p?0%izXqhfojDqPb_ud$dP0>Dtag2Q-! z#FDnrKtD=u6IE%+WY8Z2=7=&rziXvL8a?}z&othqS5gxepX57@Ck$9d*re8p8kdJ3 zo;I%YH8cWkRgJ2U*NloC?Tl(XwdC>dIeN1*lfK+-tQ*;}gNi&*nZdYRjhC)X@T(>C zW|aC*fa~C`VfY6J`lb5M-g_3pS9J{ZsyQucSbkj8yy~2&;ak}ih4}%?-s!$vYvc&) z6$`~60MmLSnCvMG-S{ktUlL4K(NrSe9(reYW2nZhmXHZMur?IAb14>MY%AM2WP zKlyII9exXex@MDn_lo>fY?`*FCQ7H;et5-wZd$Wq%vHZ?K1AjX|JK)5yAp+O@6ym# zE|tekkv)vO90#3RkB$0vIN>GhDIuLW?^cpY`R!|)E8^RQhxk46=#sssUm+*dE8fib zucr~d-j7i0C~Jv7DOR)i1=(e2^G34E)6b~%&bLy6!i_|o+&;o&{Z>37y?%Yhj(7R3 zs<;L}x!WcE{@ys5{B4c&k~aQ;v)eJ0&F8xk_zeE-P%}*S2B}i8Yp-2shTTS=qJhjO+l)IXk{4rl@_cPadv{-F23!!*%v_Rh?Hw7{@dG}JPl4FH-(x0bR!(>kEW9X zHlpfZJzt#vFeCTuez(>MFaz6H#BUXmpWExx=!Jd5=D&zRQw9Ec`uw^jU=iim_N2LA znZVTGG=wleQjLcB%~azH$@TS`+|rH-u4uG|!inwadQy5h>jfC4DHIQ*#IQ+0_wxk^ z)UQ9#%mf{~m!B4%-?QEpuzUdQ0lI|wj3Iw3>~)BctvP|Q|MPyN#U|i&CQ4iLul471 zJd#(00j-vCUm&3|pJx1t_lrTnQ7OnAa31swHTZ{}Bz$n&b1jGj9fY*yiXaq|`1mK)W~ zJl)u8iK&yFIEo|jd!E{Euiqx_LM>G&t$|85KYWgOBX!-5w=*| zqAw1i6l?lg8?hV&@FID#2WhRa=A_@IWPohGPZWJOM|B&|U(gE)DPVoFE9FA}`28tn z$I+S-egw;84Ve))ALGhPxRuak3R0fDZaF+%wG7&CMCIcnD6<{-Cn9xVfJ22hv7L}Q zMz)a0&Poo?4_Qy&^WT>77a8#;nMz8T+-S4Yg@CEtg{u7I1%8+5FB!cXsG0>RUWS4$ zqzZ0!f|3*VJ-0Hs*~M34#0y)C?#Et|e}Y*Xqs*CuJ}X$Y?~B_?)@@yh_#H5k2-Tdc zXBC!o$%}6H9Dv2NPxc0fd+hs@7^75T)G8JHIl~d$?H;2qE+nRl`<>Vx84K_mdIeCe z+vA}Q=uD-R4dhI|hXzRz0KpP;*VMEM~ckpJx2UoHeLA122b`OtIIXF z=9PPm#jD@si!BVz6ln63)@?G&UR;no>A7L$qQMWosivh{Jv^jYOTqS*pz6BW(Mfm+ zp}=$-UlOp`LdbXVD|FgEcAMmryk%=tWZ~aYutf2ndqNmQZ7)PWr33|R+`v;dIw=wY zmXuMOx@UF%Efpuv>22k2gcOpkj4ItWe%ddYy5IUM1%HnA1^aagGIp+o`fWufs{(a$ z+^wlVtr@6n4q@tFDXne5?Av+LZqVT}dZz!XAs$IT4w;kwA>+sQaa)>iSB*g5B|kyLuK+84&ZcYjaZ)dP zTcV${&x5Horn@J1bZaVYAUE^J$O}xDJQanH29VcaQQ?ZqkG8)h_ErKbsOC+n-%J-u zR4^6X9!&OCN_5?v$;_?RB0Z+0;bi<*Dg+f~}$?9ydnvCp~{ejNHgv9 zKdNy<`A&JD^Xlrd@7@VaEb}9U6EalC?gp9?>%=`W=(}N6OH+hoN{8}Z*$Q#r`AGad zmafE}8FD^lO#mMv^F=YuGMs1jJx7FUz;;YPZ>hsT6|s+ihOMx0kb?tdYVl2kLCt_X zJ4~A8pPo?)@H^jCM))ts_?@w!YO{*)SaZAasjr(QXiZ5C;sS`6fEe;tM}VYPicrE) z2$b<$=8v-gvzh_O2{q~L{WD?c7NqGvjllC$@Cr=FuQHIyvk~>(FYH^XLB?hoWxa7n zuc+8&uT1?Jzwrr*002Jl6d_`94`6FwR`9h8q>aaXqpNM5mmr(?%;akeq?r7C+Zq_l z5?*sF0*Oy|8A=vA={r9qYTRo)wmQ0tKbc?FWweICu~4JfGFEIE0hI^$!!rc=0?tCK zrrPk+4gt^1Ja3M?A=Qk}1Vox42Bxni%RJ{$T86=r3Tl?C9`nT2o|%jv1AU6ua{jEN zBB`;aO@8L!k4?&JS&US%;?c?5zE${)VQWY4d}jEV2jxEAlAlt0Xq%t}(o@yxdwzsq zI2B+73ryT2|40tpIIzA73lR64ok&jfW^%e?t#fF*R+FqD9Md7`F2$y_erGd1V1?ht zvBsK}&{bg`O>PUI6iV7-@+zP9E!3`!CX?q1$<`tdo!etO_rezjiUqd6h?7Z&Mr2)f ze%2?C2V_QSDit3xWt&+6Ry0b9_)1*OKEa?Fww(sMTIe(4pbQmPid&H(qg~RK`xTY4 z{VC0b+bWwa=IfY9d7EQQ=6;=Qy&+1=)f{r?6s8c#+n!apFs$af=MU%16b`a?K_z+x zFaPul-A>>nAmuml#3h{?p4j+KOM)BSAhOv+!$@wMA%%X3R;&;NI`RFl%i+iW`cKUS|X^nEs&GMId=p3HA!Ek+H!7byDmiUR!cG8{D{MK`_X z%3x~s+utHO8L&^E_5idHgOSqK^N94^!dm|;Q@x+gzuvv1PnklYLHHdfr?&aPoLoj& zY<4)QcqMNvrk>D3h{J4AW=EK=>tcqK7L{j3drp~g+&cPO_4D_?RbMLL6uI|=RjbH@ zLF@XZ)687g>CW$CVB~BWy+306^rKYkZvyP9kED98&bDt`BVdxP*ZU29_`B$mBqKLa zTYh66`NZK6M12qTw9=|?tVNEU@P9p83u7p zkDF{<+JW@@Qy`3|o>ee_ZkWcX(CT#X7o2YQ^+0;Y%U|20au*X11R}6vhrfTQ1c+Mq zSq5tqYr{5)ZI4^my~TxHJA)=)|NewOeshR^4}2x;kI(y40-rTBhuGaYh@Il(ef@t%l@GH0jb_MatCVd;C`wpJ12i)^nIo$v2& zd%X$Z^D-hGn$t%eFFzY~mZK0c@wl70!(km}Xw#mw>acF(iO(`)w?4_rqz+*&&rIl9 zd6krE+=rZ^%e)qu`EC92jSKlv!mlnE)~mhhy+Azu`p*p>S=c23NnA@h4p>0s$6&Yk zp8Y|`6f^jS)Sbu?Mc1u$%yfv=+4Ge_gtX~C3+q)nrS+7v;O@&_tIp4#tC49T&2#D2DXrHGFS+{yHi#z+Osm7cf8Sr5H#a5Ezmp7NC;zv47A75bV2t5RfB_Rg-`>Z%ky?*}>}c$O{W2)oYfGP3duz z>cBmRcXXe%pH2Ns0{8FZw161tJh}Uagay%`F0!8UW)NjTo22-xb>S>A9A)YH(-|cXCbe~80yUs}hww<*OVeRwUF7nC+;w#SW z4XnUASlhE50}r1bhW(cXTf03hAfOEY#1(1f{%TgTPTkEs6Dlyu_oJ5msB znhyb!#J(_vP^Y8OtLs96WLf&k%$Ja<9RmRH&lo0AFJX=4b;5r4&gbb*p_Nk_Nn~2b z>#@DZl|@)OErtkiorj-hl%P@YBDg(wfzho(yNHaK%`zkucGP?_&-CLHhdR$N5eXez0@(P=c+Xx)Kw^t>Ob=pHIlw#!74VT%eP*Aa>G4Ly43k~`)vvlrV z9v)j+7nu2qqvaCFZ$JW6uOkUv8`PS<9?7=lCc(vw5bL{WX3Fq86_AWUqw5+GIoh-H zn9wOY-j&ca|0C1?@jbyAE7>!62qQ}CV?x$j{tJWGLkdx+$j_Qhv_?b;S9MvZX0}Qvd~(oxV~Dx_F`|&qp_FH47Zrt zV8a|j=*7KTS%4En_W2KX>I*U`mkbd%LR`X@|bxVT92)5Wj|vy%aU_UJ{8pVG5xGDABE0juR#4Ymvlw-98s@r0 z2eTOsRsk_qvFMn<137Gdd(XjyV{r;W7kuoI8^TW8zV9dN)!`r~{3q9_MVbVDBghK_ z1A`C?A0Wqfjt^NX>`>9l+qDXhG=CFyb-&bi=z(N$t5*Hrnax*+;aS=Ir7HyumWtLR zmNMm5b_&<47`3$Ifx0qNKPzuE-kUDFzP?=>$KNEi zM&~4Qorw#YXzH% zG+Zen?fV>U9^S#~j&<64c$%oZlxN9PD@;sNEG0Xu3^)3-Q-oqbXwze7zARk8kGOFI zKoSZv0Nb8!qYp5K5^<%tv;cxMu=_l zC-gf--6c~hF>M?In@o;RyKA>D@%*0$lGg-wkC>C!OSC9$t|OWWC5od^mW#9;W?|v1 z;Z46D`$$^&K*ffpr)FoYQ~0vw^Pd#Y1TrOI;ar!^{mNbQd;R*_k__}R#%Hs%pj;#|k zQ(U^Iy(&S9%DbzBi32KIlGhaapHxIFv2N$CB`wgwi?s<55@F`Q4&T1+K2A?l%G~6)4Z~2mnrs)mQJB zR0^!Jy|kr@4N0ac%ls^ud1a2w!(I&l*d_R z`sWWjI^E!<4Eb3iO5}xfceHgg5+wav{7}Vz!VPBgYiKTKyF5Y7QZ?%1Pe9Ciu_PxK z`oKvf(W3g*l&|V*bpw_c$vfH67&QFjoQ64RxI$Yc?^juEHw(52I`lqw<$IN><;_nL zvJa(|by;i4p;O^Aqbs-1FTD-+)DTg6+ryn=|4JY`x^!zekvTPQ;b-ohP{szy-oOUr zxme3|tTgTULCzs-n4-1ebc3O>MSp@}k57+;Q^VsJm&!s?o7H-EbULZ5o18X17NFBUc{?1C)+;IBoHMAEW?mc#E67Vgx+5 zPY!nlCh9!$x%5>~c|&MbQAbr)bqDg~{ro?}%oDtqyKHMfJW}HY2MOg}N74n@jTGz0 z4afzCBNDy4x9(miJP)yymDV%bUZK4cKTfjoM>w@7JL5EeKwys@)U=OG!%S+A}o?Jn%GHgcOb#$}{Akc8rNpkzz&4^AQ1!GuCv zICEXkm(S~Q1BiTrt?4lHPL6i!)9=*Dl*GL3G&Fwy5YXYeg1(s`Vowkk$UAF0FmmNH%+wkl^ZG;~@gCy|HYn5fejSea^nG?r}108P3%4xlz*n zCpI>RB;*S@Sw_yi9BjKy^Ad~Pif^!F`B*BK5lEPJf?wGS_-~@YwPd?V9Sv4!ADxW?YCoJ z;sp<_0pA`i+nWEzON|P406sRTx;~s;i<8~j*q_e>>81%=HhgSbTe?Pa3ddr9Hl>3= zQUHu@REgX_O*UCTE3_A(XAMa>Pkhtxt|nCns0mFXA4m0*gpz-j8dX|Uhc^ZW8q80P zCu(0mo^5w8EDTD+6?Usf$EP$I=c*@EHe&xW=%x$l7(J1O=SL&{2{S|ceyg=L*w(m}$aP%NyFRXd*5t4X%uZNI>$7>A!u?pf57~AX&LL)g-17zhp7N zCS+sNzl%clI`N&jn4KMa*^Wi$0#}7;tzm)D5Jl5LnN#f>i5h|ey^;G(rBs*kgv1$S z@u=z;S~0(sHmLPhQn-ZM#O(C%}T5gkj#GNOH z>9pz^8lO~IPtE+eQTYQtnJXVUP}aXy8_02m!ag1l^v>_SECVd4_HLZ%H)miS9?W5G z<3D+o;&^@kpr$3QP`u-dNmWCrnK55sw)Zn*nrizsmY+LjU#FVgIv|6=)40RyG=mMUn7IKIwm8~Lj2tv1TckajExlNn|8%k2a zzoB`04t28uEYSR2{j;mLivUUNgWGM1JpPh4_@(BMm9huFU0CL2#wkn!)I-fT+l=j7 z!mS8$rT1SzQ``42Fto`gQE*IbDI=4KKF*?8Hue*bm~$U)g=6Q_VDLQ??vTNpXOdp+ zMJ3K>uFvMq6p9{aH6RjK(2is$)6tpX&mJMB;ku^2n_)lu&|Hiy1uf=LE4$Q7Y8sz*viGERIrTOfp_R367Cppqm?Dr| zQXw_^cTq5H0!`+7TQdv44+*adx(&m%k!n>FADq?1!(u!<`)hWCJul}65)6u**GM;) zaa^z@G*B+DEr?KY&1c?t|ZPgZC70LF{MTiqSs5 zPsH?H*UTX+4I>9wZM(Acs`2riFkiZBD0k2L=h zQ~+GH=2Yh}k}6yZ^gLZYrjAh|Nd)b7VR59B3I;V~3_xK6}fljj3@T050( zujbZ9^NAUB+GGo@RF9%V!KcUd-by-Xr2Udph@ZGcz>wcEKa$R&-=FqAoQYaZL*woA zH0A!r53!#WmWZ!kXDx9;_#H66x8ba5kmEQ*u4#r^X##s4duk6b}f5dY%i z{cxiJ9Jo$em5OIw@qa@7`=5OMur z8TIk3o$y||p2N=K-S9%gZ0%a?FOY`t9d+b-Q{;yKk!a1ef$tbDI3hN=I-^ zPkqa}mfb)^oM+n2Z>YG-E_4aXc_W9u_|@b4vZ_-JH7AebGx*jlLAaL+YZ7aBEyp!7L(;xnMJFd0Cgsq$l_Qv&}1qqMMi5iCtRS14@=_ zLl&zpv{kyA0TIQ$r&`va+yeDp7zNzG?7^vUKxm0_5m$oP&3)rR^mP5krP+%#-1R1S zIUx4YR#*JNoP5#J;THNiDHJ$@dUP3znp2=jyc@Aq^Y^K6g{1+{{S#j;w42w5fKDnS zRQj^NfnL5&klu6&Yvn}GQ6akltLp5Cr%75OOboUSy=HY#^8)EdfckA^%b{_WW>?dw zOq&e7-PGiroQGsmy#yRXtD%eB61_ew5t6U7)SGkY(u_By-p3kiUE$!Y-h^DGmXK^>`uuHCFHW01e=^QE&%v#xN z^APZj@&T+ys>)HsXGEzE8!ol3NiDfz^?dCu3*0vbLnz(Dq*?=?F32H4KLYOS^`59$ ze-z*Fg3uyqE5r8n?;=S&0EAyG`@vhh-fX!aen&2GUQqxB8;jKic$goQ}J-)j8(qqh2 zi`}3dD=G8i4?=5urkJ>-lwvd4oO|cTNsI3+%qb-CNDF^$(PDf<`$4sEuk=N>MpoW7lqQa%top6F4m#s_`z%C-Ad)3cRoVi> zfmhiX7u|9%Ub)r7ngR`YX$A`;6~a4SGxspcinJ7BLebqQq`7PJ#L~@=l*%f?Z+Sec}8Is)E-QmJCoJFb?ya^uIGU*)?#nyt&>0 zR3hb`|Bg0fB!Dd`h{P|yxPS*Lu{vv~X?&4FB#^Z%5uoMRWXT(i<>KehUDwT1$=CMH zrRr4uEZ-8)EKMheL6rHeLR$o19k4#QFpU}wAGA2O`Z76wR_gG?YfduV^rXDE+`K+R zrdZ_jSck6Y9_VT(PfrkE48LlkF{75(vJk2ivEhKfzjU~JmO zt=+cv>FOCqt4nw6K)f&8Tl5EVpMKt(=@za1#HU;$+Lc6`BhFP#4`szFtE~e&W?bO8 zbq5nAf{%EP>TPd9a7i7wS^CZ9HOGWYqCGA{1|}ys7|5dxbMJrm`@B!l!J$|tXShZ^ z`}Lp3jTeRu{MDJ^pBHE~@4*s9bAwQru^3s!-QD$Ns#>}Y-AEKvzzDaj1kBAp=n5BE zUgVqb@2@?{&gR#!(cgXjx)R>PQ3-LQY zpfB?xvxhOqoX4L`boe&t0&! zG5l~6RZ6F~cqnf{RZ_z8Z7fW>Rr*KEWn^kJX|m~Q3j#p_m6l%7X(klynTl>}JT@*> zsQgJLJMFh^^{xeI)FB#oFYy6oa3uJv z=Elnx5oX%n^+Ir4gjg;AM1?q10Fv0aW>2T1)^^`Uq+cAi8h12WgpCy?})8-)LxmU)0q9< z#iKzmZSD;dZ|Pm9yro~IemBzvJ<=U!f>!Qupkp{(A+qDUF;Z^rS!smUlcmhibP~;K zi!?=QH!ZhUR`WkOo`31Z17ZNLj%8o=mo$Uq&P(id@5Rf~tiud$2CmK|Z>P8BXhg@Z z+^C}Aqw8q|KQG#1$K4DBGIf6cg?#C;#Pnj6(=)XhT2ey9JwYILZdV4@&N-j#==nsA z8?QU+mbwPFMQCiqA3UKWPaODJFX*TF;pkTHR-j^9|9K^qrlZA7!fZttj9_5zU7pvj zq)Ka{J0?nN?_{qFS^%rHgWE@Y#5INZU)Y@5$>XdU^7l5@tc=vVlOD7L*~{w2pb;n6 zW@T&oZKDvy$X#{XSnx<>mtL=qY}-1gADR+C$Dq6Q99v|zu-F)REsO|A zbwlXe!I>OStWPyWcK3JD*Kk+o^}Aov=0orfCmV!^fn~i#XKaMSdV_+CFz6L!T~7~Y za`IjA47uD$fj5V9Dx;7b>ou6T(bq{r>aEF4xG^6cepg{I7$6uv50twoKA}WKK>x2I zMB}fg!{v6~(huqK@oA~zn>kA({CCPBbF>&BPE?4;>uc^}?#sjsdMzUm26CfVy~Bj4NTDiv?om>(NUa#5zkTo^n?XXkdu zPgIG%TF|OaXko*De;Uz8?f#G1;Q##g7+NiXjg|J*6UAezOVrJ0hflP%gD|l1VIKX=ZdjVl9GV~Pe(EiO%Mch- z>~UHJO_K{@E!fP-_HB(}3_LG7(Dk-Ac6meE37-l1RteDMFHMm-z&ZLGM~%-c7;n!_ zB3vfLCp6&g_Fb|yW%(TgU0?^HlGtqXwSv$)>6ZmNI0)0=7z9H!FG#)Enj6FWkM0&( zxiNBO-?k$7IYu;6W+`xBKI5*<<9te>>STMPE7uG}3!0vUjloMVz|;AXpF#WkQ+VN#8|_i$Icsx?Au+;`tu$bXL1yBn7o2GcqJO*p`~#+| z#@5kV^;BQx(2J9u$5v~jv;^b5)1B9_Xd~VFG8J^0+SMS;CIhavPTn5185(Yo6_=Ez$zRLZqqy<9Um_BE;U~Tv1;Lw)R)%TCD68~zEe|H zaMw2(tNMrNJ@;+1rm=dIxce5{kJ1!9D)fyGS*EM zESF>vJX{B2edgGuwo^EQUb-jydKUqI*N)bS3))AE&$z*>*uf_o%1JvI~@ zWZGCc=G3%f&~LUgXbDVF^&LDZ<8}Ta5QjBI1?CzM7j5=NtQj4hQmPKHj3p}}N~#uJ znePoYfPc$7cuo!*2lH*=20kQ%!4q~ydjU)v@Jj7Y1(r5cRpr2uX>QkT{dMd1)wteVPW`>3XSiP;W4Il1)j&A+!&DitL;P+ zL7wivcOGOpuop^lSM*q29f1VKy%NhK=H(;QkE1DtmWumrJHe~Y`E)egPkW7e!VUTA z?^){0laMtN&$I@0o9d4eCSB(g4x;+92N!v8idfh;&`>`7yX2O9?~?#N;FYD;ca<^ zE1r6*pXp~yMK`{F)Fe&RSsVO#4ZP*xV)X6*7pV9eI1Bi*^5@0nA)=E0n)cq5at5*_~%k!ERt5hN(W`=81SY5Eg5IU1dR ztFsDf5(NDxICNk>p%O7sc)@S!#EoDZ(eG|UyX1EgXULo_6^;J5eox&FzZIPJLe81w zh%{Ui7HE5PxR>vyRgXX>lM&jv3_kl)b8ppAjzh03lq;1BkGIfnpO+Gb( z#L^+7pUv&}b_vUwN}ulUJg(3wNk|tVUEs=@-k&lS=8FXcjWL0XgFp2>u{ru=SMU1vy3uQF04E?&7ja=&O@wQ`9pTly$={1 z9I#FLzcF1fNXOMR{i-pZM+Nc-HbON z+!5_ljY+G8Qx^P@6dy0;HKOp50*94Bl<%Pn-rgafm|Ll!Yx7N3 z$Sh*+kX=*ykvEx2wWG;iO(>|-hCvERM5b%F)84e>GbVxpMl)R*Kw z5HB%RXVUyBd_iKlz<>zCOu`+Ke1Q^_6pnx%kAlD47_xQGn(XRP_w@3R?aZ{i&^t~3 z?)*GQuiWfTVO(GQED*6`1cEg(Xd9Cb#T>V&8+{<37ajAz09siNqvD3;V$W-?r4<<9 zPpkPZzZDQ@A-A&(WyACWsF$jg3&=20eb#<7f4kcF z0kDnfbFmNEf>5ots$?Q{(78-(X}xyhNu#`ywAX#%1=_=pH*<9+VSfC<5sM;*4QfO` z^6=c=KGUe1{sLSh7FmQTz_c7nr+lKLpJfz^d>J>^SwJ8;@PsyM7wSy2|F7ah`Y(3| z(?*!L6ob)h%PQlBf8UW&r%+ATh|zr@i$u&o#O?W4Hy+r7o{{d$-10Oh!d$y@AizZL z+^8bXMVbyHbYrl$P4Y8|rri8(hh07X%9S9uGn!b3g;=kZYtmE(8g=67vrTE*?-*4N z7wGHi6U?T6-u!4T%_Qn~GQnwR8q8CE=?hcQEXjYM6iJwL1S#LR@Tb_w6Put}EDYZp zvMVfJLN=MrtgCsx)tRToFkrQN`Sky3G=Zkv?Z?oILjAXk^5)(;pno44k9w9^Mwo)< z6N$oe?n4(9h3iV(&|w>89tL920*TeZ=1h)>b$rigwsJX4dDSA^r}HB&q>om{NZw%( zn}D39D%P8{LR>gv$gVN#^Ce9?N1nwsy7K4&IOxVACQ@EhitiqaaDQIyFWflxAjTl9 zMDX%+NHQ=e+G)vba6{OBx;8oj$gomFgCJVH@2WY^>>Mw;`Z69Cd}8ibt@~7EKt%4$ zJC~X{h7>Zn$K08>Wj=0}R+ydWgRCbXX0>}6F8)8jGEEW?eX0uVf*7ig3G1@BRFS;a zM~M`xod^qxi};rMsKsaa8Sd>Jp%KOMlPbmye*cg$SitLYM)2hn_{pDTd zdqAa#7Yj9ujX7))3iwCF3kxR~B32LkfdVc)x*kRY_JW6i#uF@>P~RdW#g}`n%-lBX zh<*eoNKi)So8*{~uLNHQ;gB=Tqk^G%24PHE6(wC!HSrsLjV73BZ5d?6#%;l)pojQnV45cjO6_(DTfnYx$!_JA`Tm z--BUv=}2WR&lk8-&A^IGJ=aKcNgG;ViW}dnj67zbQ9Wgw(w;9U;Q1IF>!Fx@ zVf0$-#sl<#38zYv&HjK#99BPE!7da+lQbn%6ULx3L2n-4?wF0==xbIx{uGscj}oS~ z9Rz~<(QNEtbYghOmOguSc5-cfHzH8|dVOkM(Xv=94a)c4V)jO+x_PU;L{E8lW@^Qi zCW@oE$l%8w_y9|#N-M4@$h}81c&9If`3H&7KJLzAfI7B?r7n3Sbz9z=IN`w&ATeb7lxIgL*Q(!fp`vM z^SiU$7cV&%ZMB=sV0|LtspoZlH;aSo%r{J&?tGL)R|(FM(x!iT)y?Upd!k|a_K*E zORUQ&lpM>~`tNluFU$k1`Kc$@$;tbZtZmfJ`g|f%Egc)qZ3DoAm2M3o^yc0zO4Dv; zq-5Dpu%0I;2>-6{D@poEJT+jIWvgYmG(5S5pA_M8=Fm3!65bn$ z!S@v^(fu*4SNC*ADCku#;JShE5Vf)k27aigtn8IlA&!-uagOCwL-+4%q8HICq~x|l zTN^4jb>K$zT$&`FWI*r4&fMakcLD=?CxZTVCw!!UXY8@vE)hv(`Gp5o%K7}3f~+wT zm_vgEyy22e{6)6G9S+OGm8w8FHW^!e7D%fq3O(94GkoNH*WdMOG=xdDo%@b~Il{mf zGJB}Gw9EBlXg7l6PG6tQkCW1_65CeP?^}vg6+IsU8g#eAwETAPZ!ya;fSjMw5qxoD{uBWeegzPy=a{g?eudXon5Sjj0%jyu#7%J(jaVUhaOX zHW8mB7nAec%da|w1}W5yITM1KDnzUH%r{%5lCON1OKQZlN~>ETG_2C(S<2y&jPda& zB*pTlbw~K)YF_W}2p|Kuo_{T9K|S}7cgEu8$Jg;Unw3MaKh*n~#WMlkP`XpKES2S=IS_xi+*&}(Wk>CKnXevz?A z&e$|nk*!~Jbk+V!ZdhjFn+YYbze1^v`6ngW_{4%+Vq*Q<-ZQE@l_#=xFc0)OA+uCU z0-}MVA4_ee4d3|(ul8Ff+`do5rhgyw8MFm~=G`ZQp*I4_B$QICjLNgvJ(@0LE~GY@ z4|R13=($42vySJp4Ah)4zq?Kx89*%6A3`iIZ!3uPC%>4?zi>??W5|&l&KT9Fc9MsY z(&-NG1`7>@_F5TFZ5HSe*!%+YPSWR^Yn935^W1xGDf7QIp#`7nOilo}Y<(l@aI2L; z#I*sZGy&TZF;$zmr&yDg9q(e#Rd z-Qty<6x1xAGAYvq9j?hfDciV6D7}z32w$`0y^>lR_yfZ->5P4l5zx#7n118#P+tD23ewnr#QFiB!=JX?t zuVsZFQzhz^QY<0qtZWBJ1PC9hu>~%MZcN1bP4j$35Wj~{+~ZUwm*SHUiBLq|1Mvp+ z$cps;FHA1npVD(aALRTFcb3w^?+rQ}Y}Egr=RD%#UqR_?sVgrsarvV6 ze1R)fPw6&}4=6i(d}<25d{!G0R_2xIMR*v_^3YJACSL1y)R_S=d=t*@+kldY(fGxS zXEpIN^qII^!2Xtdk6R(l`Ft>usyCgH$)FFX74{_Q$kIsasNn{`Lm2~<1chKajiH6HNNR+ChDJt6EYaUs!d#$Ve9_@`S z1%V>`vpLCSss~~y2J}|#qJzBm7m<|b)aISD_41d+$V$7PYKM%n(hSccxRPxjER0KZ zZN6GUeYC>6@FOWvXWI579~MV<&Ukm0Y^0>kP0zY8jGbKz!MGzuja%@BTY>RR2|AoIV!x|7 zn{g076V@kU8F8(Alq*qNcVmm$d>{Q5e%cXrZJD85DdB+DR~t~)zYHmI?s=Ty&9}4I zE7jI1xHUlBt{K|OI?-jEHPzWv6=Hg_RQIdiYb2Pc0_u|PP;wIZJ-%$*s-NX&v8FNi zOj@x=AO1663S1T8CfEOox~|8-mQwIj@-H=!ILYj)2wM;=S-5KhovZ?E6Rwx~D{ zUTK2~KM2a%ZxtFiX6Uy&oIQH+Y8dL=uW;_r4y4@6T4XD`)w%O{AVb?^=(hhJ<(Y6u z5{gPh@Gj|K;aZkHaa%Z3V;-+FIBwxFT=t$-Cs9%(rx_Uuvuq>PXV-u`<%1zhE8a}s za$zo|dRh~{1NJ_mhUO%*^ihF+H!RHQtz3&>w2jGK*!%_72p0-`~L4GWH>~BwZ#JYw2nm<>&F?HnNl6L_Aa+!3Fs{_ zfl!qmKJvSh`ca{?77{waCALGLIAk0;%l&ePpzCsw@7@ly?t={3b!kB|B#qZAt#;T~ zN6Wp?xNV4~xf%I^I0RY#Opde6N`OuKs1?wH4Cf564AX-Y?J-*zu+zy}RBPbW77X*C z-^Iw#7g*zVGld!fae>Op2mC6(CSpak+s;kXhrD*r_Fpp|CsxfKNpgsXm=>GEogJ1) zrz(|x>d6D%>)hP;m+-Ja;TgI_3(z_Ldw9zCocKescEcl?DClu^mU@A=kbWAJBcXH# zG^m8^$#&Z7dDj??e!SR;1O}M-0ehE4wicJ>pw{)5Zg%0{TZ~@-cg^EhyEQ;Ym(K2O zOMal;9-5}#4j5F7yOjt{Vh+C3(}B+4^Ntf$1VTqgvr>}P=e1hv(enkAZ4_^YH)hL+ zVSq&f23x^|p>xG@JG%WZH9NCSOr#-LGzuSfZYoNF$*0U}U0+*>&dZTkk-d|b{jQx! zi@lN7K7B8wfXH-mn%pO5{vK!Fr60q&91J%6F^RZ-21uK&%u9nUNX!AmP{!Oo?JqSN zl26Uomqe^ilYxs{6ce35*?YnuNsL+vF48ckc52muJX;`;oF_FNh^LC*>(!A$&^2So zq8Hrw08*AecUsoBDti1+pymI*qnLUqFwvjiJG$+7xa~a7HG~EX%xxRrg;=F;D$0J@ zRQD^q53kc6>CxK!{(jOxA6cT1C*|79w%ci0oGMR$Z9+d~@z1EycW^~N$ zmYgLH958~qSm9NSkLe8pYxwYZrn}vP`w6*Vnt!J%5avQ#6wxj%wV&wxn9UfLbbXN2 zhu8yD7D8=DQ~qA-(Okq${?63BXI7F?3Rv&_kh-_E^{JU>FNSaMk{sS^KrJ0S5&9}+ zqp4iKQUJT$+#}1A&1PA_y*S;j`|R2EzdKrURp2=tW|{l&2YQE4JJ|Qo|K9WQy50_5 zU2r>j>BYp6f4dok=6V2$K-^LExoozwS8;~}NKfP`uP1myP`D_N=k4m3BO+e&MdPz% z^i4nhDe_)%VvhKs!)zoHBHA)C$mCGhqG(dsY3b&S+e~Y{*=A4i>yt1hJzE3g3+r5d zCAr(6VsS&NM0*{Ju4;wN&7q>T#>THk;j5Y#eOY&yzSqjxCP}jW0h0guii-5=+QWvmk(X#i|%dWh%f+ zr#rnv<6-0nW{LnnEe#c~je}2YE-`-uuUNd+Wp0$FnrmrBeHPGr-pUZ9)l?(~O zH%COX;`N@5LH1~5P&@`Mk)L^595T!$hnBk6w;&eKU`R*CbXs>z$ud%y( z+t0!|Vd**Ba$7a$BOk@!LWj1^F#o9XJp(p+&EO<0I0vap{YD-BAPVA1w>?T7&N2Hv zr`CO?62~KER08%7U|~pGzs%dEsYZS4rAjRPia(}+8o#**J&6 ziAwy$h#LWxBV~m-cG9T<@ZP`4yb36B;fyd0^GA`o3njtB=>MX)n!;9X!R8nZtvWzf zzZl<9>o50GY2Vua_SvUqKZ?VeDJI*!(a3%OTS_HtelTfr`>5!~5{qG^g+C zz5MTiVzzBB;a21-9d4zaRZ#f()b=9Wz=h@h#mYoma^=ydaV7{TT*6Rta-KBJiQvV_ zWcqJ_1q9ZnE}50!WGl1Hbz+Q`-nr@?j-(=>*s9-1oSkEI$75!Moss#ZU5e zIy&PZCQ;n!kpxGY+hjU%2fs(oYSzK&!9T?{Mf@W!4nn=5+J7MvVtJ7a2g=|ebKZy> zJ{Vsd4$S57%Wo&&rJQ%P-#Q5)p))HV?WgO3{V33r_aWQZ zD9Y}V{fl*(0Pi_-B$w=;`dSQ>CIX*8_+Q5lkTQ7B#rU~_t)_F^YH8jX7zWb#5xDS6 zyUGZO@Fts>YhF)EeLcg!pyhnZ27iKZ>oc%;ToMH$vyaXk;OmtdmnXhJ8)Ddo_vnA#Q#(rQ_Wj0YVkm?Xhfy=qr zG9(VQ0@ApkMG5|c06Z_$t>pFnFK(q8B(gJ`6>RiSQWIuWB}O!AMdsFCoxQmj|0g|K zucE67_e2<}>pEI0ys>H3bGpgeq6L3cWkUUb;cdX}4jUQSq|Z!Sj3_T(SohYJ`w88* zDDgG0H-Mpnh{q{%NKm>k8U)nqw2JREo_nW-Cs;x*7OoKCUoKqfFYNqgdkfgPQVsCI z2BWyAmF%g~Tbf{o?Q5?=|3xIAFcF$x_i__j7HbcCb|Du*3Iy> zsYE7tesgesb-_B3@s@!Q@}ogujQuQcf_iYc)Q!VYtGrcuNTdrE+@#AOB!F#Ohbllt z?r=DRQxbU9+{@HUC6f{i4?ep3o%NWbU>i=G{pZiwHR`eX>%$-Gz0`ho*4FLNdqmtW zuIu1=ku2RE{nZ^unx(^_3>WocQdpe#1$Z~_J^sB<1XSD8bWr+>2+XVfH(A{kmUex6 zfx!o#=aHDZ9g5l3){senPDgaDP7(1gDPep58sVci73R;;)1=em2XGC`_8LI;knWH) z=0IJK$g~sHhWqphwYFZ8Cx0h*0u0{JX|>n{Qpmq1o`OW$?yu9m3S(zzV&}&$(Ca0r zs!~CKv@9O~!Qo)^{<#ljAf8k#x=wvuJTZCn6JcCg_Ag<0L}Z5m^-=~Vu?A5uMi4D1+}SS@vd zTw-NrbzrT0EJoz@s{t<}FbInH`Wcm|Ete+cZPx>@TD@kM$d<%2rP7;ryTjK+>IQ#A zpzB8d+7~l)Q);pJ*+w{>0nzH1bL^PM!<4+(yWhyL&UhAyxsH*hq6 zc5QyP3+2#x9M~C|TbZR&j!HZR51qWtHCiD)`T}<0LA_;Qah2Ubx=b-V>Eo}lLP2Od zc}@NN#9%n6xf$nchJ1Fv*zm-{-4H=z5J{m+kgC zTf=%$dzsXhXW3C5m+ikO%cPvn)J^~&j%W%I^#|GOw0sEyG5T~L7%q#PW-V|~A-IvP ze@K(lAE4p+`(MH{*?O=`t~;S{5QPW%=cbxuVbai0O!~pOZQ$-(9xlaJ$4K|xlu>Um zTh`UtUL3d!e4kzEQ&cerKTGYaxA9gb8|y(|Y*C%%%cD}}W4i?ls`|XFOuH}E1U+aE zJkg$a#UDC~=0&gs)4q5!tii2EHR@cQw=A(em~wsj2#vtAr$>=*iP6~bJ=k1gegatq z`_yq5-&_Yt40%P;JN{y28CC-8Z}kukFpNgmENK22mn4g|hF;Wnf8nXcNswXqJqe+n z?0JcHGTGG;&MgNpTIQ-;zIz|+hZwFtt0CJp8Y|}jYe#0nHNp6R-JV$>yEE8BgpN5M zvvg1VQBBo7bp|X%Pn_j2Ca_9RNy&3OUko455G@`Ve-rt33-vm5?ypQ5xoZV4(fF5X z!}yMZ;=$Xx3;sjAvhO)`EJCkaXJXrW%z*2Vc+2yaRZZ&0dN6AnzgJlD+pKX2)z^5k zB8C3BrfPD~2R;7lgW|i+b;LYas8RpgL^^*Gtn}!HuFen&)PoIJ&8=mK1Z*KsWVs74 zLXEe=dAXao_Ab@{_dsWnB{Eo7hk2KxBBfVuf(^L+o;WrdMi~bgb*HgaR1Aw(DX~ph z7SK5CKS8nIU2QsaZ!2-)l3v;fYd0_%!Gc5Fehx}-h!z($cB$PC9<%Wvlm;mvh*+Qk z)A2cLBXBZCig9we8g{B;ZLp-G(RKUpiRvCWRDgjI2;zjDBW4w_^C5>&@dNXbqfbXD zn|&Xn#cGd=$rjt?zCYJtfD5~IWGT{Re!`69U4@Qi%(ngaRO|x#78ZCpYQUHScDW=A0C=a{r$ugvCldsl{U5ipJ( zdJRaWmQoEqx5O3f(zl z+v3Vnsq~wsBrkC|Kw2FxJu2P_8Xp3E;pyR-MjyhyhuC1X_$nw>DqJVM65ud#Rpvh1deZ^%* z8g^d4#$mNwTZR&Gwh@-qnhJ=Qnm7{^Ir%~w@tBP=oZO4aQ?L{Vq*re-U;BSb#XoY+ zumAlYD+3P{NWkJWu^8?KARDbuF97Sm`l(_P|TM8x&BF0paQ?W{Yl2Sm-=-9 zSxX3|*N-G&J-ToPMojUy#2wLGO`lW5*0;ZP`{*Q9>!f9 zOZD8t&DH#TG}s#?F4th6lJde@bQ0b~=DP-S9i8`o{xa!)?PjOhB+kI~^Kba|U4Q<9 z?g0Cc7jY~s=l;KbKRPc7&5eL-gxI1VxuE~xpWk}<S#aD}lfQKqUJ6H$1p}1OMYk)lvc= z)}v7<`Tys6`t?Kk8( z6o`?0&6)pr^_O4riX#IcdYbAduLR;Q0OF0mpU0IzP(x2d3|jh?KuAM@;9~3Zy$Xm@ zC=gD(RA^TLApr$qdt8qBDj=4jKpfr7<-Q6CMko+%5Y67pC;yMv!rKW2Vq5SlEXKbC zh+kI&69Dnh-}m{IK+r-@L<|Pyv#U;o1QZBPraqtl_{T55bccq3d!{d_Fs=gPDHMqH zPC5FkfItF3c-4{T3S0%m_H_V6C4*+eRY1IeMzY&YU+-TD#2sji@biJc3W&IS00`a4 zJLy*fAp!-0gRal}^2z@r+_=Ak0%0yrb>}J|=%7F>*T~Ua1q1~Yh?bYRqE`V?00km* zOQY~AAex~-&W+ zrNX@m2pA|3;{kH_uL9x&6o|<$x!P9&u@4QFrwke%R{`+?nm#`@HO5~BL@cz9nD_sG zbiH*zRcq5eETAX~76+w4DJ7*l6a;AjH?iq%knR#iY3Y)X6gHb~*nraA%?6~qJAd~+ z;PXE3`+ffDISTihHEZUYxvrV}%ZDONkfx;0#fAxBRg(HlDeLnrw5GWjBlt>2qt07Q0LW`eZ@YCN6 zQHC;vyC*%_-wYv-GQ_Ty@}s{QVi{$KW2^%AzZrrHWr$82ZOGpY(Tp<0wpcUf-vCt- z3P(H({`C5mg7;LW}pop!eS_fyxRq%`XdZ{&t9F)FBEmw7LIw2sKo4%lSrm^4CL1qAbC4Pw}sZ zAV3|WU9RB4|2YJ@LRG;ZEx@1uMg9YIpsX1!=D!_i9Ce`eZ&bW5{}wS&s6vYeXYj+{ ztbzg!Gu_$+cz=HD|M^MeUr>iguG4ycb%^^l*TMcVFV_OY#PRYSMAfdmiBqYqxcIlj z%)?K$7XSUxlgpsKfQ;a%j!Or>FOMEf${z}}cFk#$O0!1`VQ=ysCL;SY6@2*%~kVzDP)5i)bgi<2zY-8rR;?{$sM^Kf1qU3zsk$pXVJ6YllK z;L>Kni&NYqjh<4!H={+yr%>TMJB>p7l+%Nn;HOc0%di+qkLs$PiuSnDUvpr6v=6gn z6z!9iFdF|sr&q>#bV@nmYt9|ml8j0@;n-xog5f1Uq5oyYFLvM!>7LzEzIub-pKLB9 zdWh$T;^Fu+?At$xdEqW%WJcbsSZ+SXNWf-WWDHT~Esb!tGrcilqH_0tg}13V5EiS; zdoJs3ui=Mzei&j+(Bn^bVObkBk4c1&*nFseE9Q=L_YXk=P8KxXLki|#M59d&!)tM$ zBnkGFYb>OfdduTw8*_L_xZW!}?~)ohx@>(Q2xT?gH;ShT$1Id+9NJ@2;Zm@kZGI%7 zstx}y->uIAzdpaUYxeTLeGKx1OjR27yaIc6esqtB+=ur=JPYmNS-mMP8RXFCk}t1$ z9nxh5uPM=2D?(5Co<5xg+}rNADFo8n9I4Jr2oNdsnyYj&yZ z#j)8e)SrDb9Osd>zx;$fX@K?lv9|s+Ah=MDGI2+HsUU(yf0Vc{Nr5^r^695Lq8oYv zsH}YWtow%*T{)m;^frFo*lFv3KI2LpXz}OUAp^lSC^(}t;olehN`*X!S}2kCAcD=j z=cg^3G|^C)y}4@ixeU7Pu6hINw3W7N6k0f9CQR|z-J`|2;28=MZfms)+YQs< zxzln5sxH&=s!?v{x4C5>s+kuE{-<*Nq6iM35)tAaz* z|GHrp!+a(z{?&6is|VI$bc=incI~H*=G@{Rtn~o=8ykkJPYsHm^Dv3kKx$)16k2NZ zG)*#U(-hl-H<*xDZZLO}n7jQB6Jqdoh;CoMXg2^Nw zU_I4L7Ye=E{ffdwtRIeY1dBNOZ|PBiqX`M*b0%l783eE?t`Kx;zMCi$m^* zo8P~2SxKyqBj}8KQzKv9xYG>oX?t{r%Z$ReQz_u!WWN{xV51P!!I}Saa4Y`1uKR5} z)<@eAC&rdSd2q#{cqpas99qaV61O1+tnR_cn)BnhZ>PJgN8oloO3BFfP&&i?Md4r? z3h-BC?~b;aKkVCo7%+e3y#E_vcnM+E@6|da5y#vF9(juj?L)(NTWI!Wt>!g_O7vV^ zpCFfUa7x0HYx6=6xI%T;E#R1jEpJ4@n<{^ref^8Ejr!G@Yf!GHxzKSHQa4pRYfHOq zZBZfWm7=GXRWm8colAg3ZUp}7-PjbZCzod%en@`zRFE268KTZuLKt$*+}~GJ0FCqO1Fl6%iiD*DBDrnVQmSR#3czw16HPv*)BlGqq-a9+o_ zw3(-87kKL@QetA4;a%r7IsQ!TZ9s^4G=rP%p8Gz$LCr{{fYt34;C;&UXkRG7aT@D$ z{J=`buQY6r9L>^nFzCz(%|%2@cn%`?6Q0fMrar*GcYdlsdbSWk;e!{D-|)q5nLYi0 zS%;-_x$DL@cpU#5qD{xIo}=-6O+5Ru)3afNP*it2N5-d2Y;+GP$f|fa9NOS;9SoRG z=hmEuQi>-8Mr!Nwq{Am~VBu0?e~~Wod~xeCN?WM`N9S^{HM{J7c`ZJ?EY~};Dx7&=<^zuv7Y?r15ZrFZ1{HWTKxsSWX6-4P~ncx9mU}+jN!7P2#~8 zFymR5a%=slNQPMD68@7pCzU*{%-;xY;S({;kBsg+@a)O5*D~?PY8K>LNuQK&B1Lh1q1urzHa&M*BYg=;rv*odTyFj&kd{ShX4gi(%E{UE?$%FIV}j zL*7s(O^q6h_C-6p&2G67giG#t1s>y&rTape)psVG62mtKq5m*IMf@Ins1_KuO%ITM zBQl*{9W>{it@rJk9StN384B$TW48gfea%6f_67pv3q+X3BUf)EF7(zf7aG=t3x5u7 z`A*R^yN+}Tap`?YA<&g3`6!HKBk~`9T}_Rl9Ce3b5+2)k)#bJWFFq&8RTLRhX;u%V zK?hoU9;p>WGj`bHXr*bfRt5%o-qjd_s7M)Cviia`W69;_fw@iG+uWAU3;|w-rl5FR zH6o=PbxzlFO~)shdd**DS|gs%y>|uQ8y^d!dWF2e$*GiHB}J1A;qhYeX5&h^^i0`F zj*W%uNvHZqo^~Nn>Go`@=d5%@G8F1{oMz3qe0R)G?%7sfx9VfNLa1K&s9HD0Gl`l%i;dZh88QxyT#Z~A&1Gcde0Z_Yb+ycZW@Wpb7cR`MyZ z7`8s6l6++2l=u{yr-q$u%ImoJ1zct|cM+^fxUrHd9S1F_iWR4Q_l(Z+F~jPcL5G9m z^~y08tKQu=Gl}lUEt_XaZZ`An)J%LARoc-%wv^o{!gZ6@bvm3UwN8SN1^Q!*b?ii2 z1euEPf*FA?5U)g_p0#!LSRHYA3$EKEa6<5QK9e+XIxAL_hZ#V|z|8PaHnsQ0C_)L` z{mo$5rTzj*)ExZ;@h(eQ#_yl!dMizs%uWf%2AX}`g(WeO)8HXY9^ zVKaL>lu@sMV*$ubF@cGyxV}QP) zmd4i~8O)Ms%pqB!+EVb`ONdGf(xTP3Vs+IYid2m1|HhL1~LX&H8x~NQuuU@uDp@P`g70&BHepngEd;(YH z49mc!**DRQ-Q{r}rxbft6(4n6Y})s#HIi8|#cD_?%x{mi%I?I1SApwc3(??(P%KC0 zhD||nrSG@g5pa({+cKWNURT0dZ^q=?D0L*2&<4`sEw$7)i<8lA@zw}BDs|psn|G1+ zdnP04g)=@MOPL%d?H=eNtMC{L7Z}6idDq-D*k4R$z1Gc?L--9v~+^pj0=v;@N1VmuR@S7F4q<_l)_h8?V;YUNixGohWEBx-=vj7H_idX3!(F;8g-97K)1Lo5&zaTV9L#t;e2Wd*f zLd)!9cY|K=vLU$p-N7HI-X}rja zKU1|dJ)A)k+093dnuzqZxf zgR8ePs4mdKZqTnah6iU?DRVh^k=QAT@fEi*@JsfGb>n=fo6eNh3Z;jv8}M`LfvoC< z%ou>oU&od%&-OWprrp-poAR6peWCp-c*n7?mi8GkRgRy4O|NK7JNsc$@rU-LpA=>n zPIi07<^^CC`jcqW5Gl5e+1! zeC;2>x$FNXd(Y&>y+HUw@5fBhznNdE_?ux9ad++qFU3bO>nMBV`q3I)q%_IAS;*1W zu=F?`){Yflej^%m-20T8IpW&csA+ks?Bo*-I3%&P%;+b!6Z329++(Lc<(ZB(UVF}e zJhswns6%8DxJC;$Me}HcZcZ0k;+d|GRmK&W^)+x5HhvL=@+gJUNK#|m#3_Yn(JW7e z(FBE-`u$_gn+QR-UAvbhId&IWRedp7ZEj=STUOn6l+2qBm(3$)-4|A=v4WZR{lHms ztvOW3!D*f5CU=m2#Ew&4bYccuE8+q`ajksP)B2gvpw?EZ5nhf-86C zML!LEKXKmC8QtYBa9olI9tx?%#335Ae^+jQ(AxzqO>i@Z2)*a*{Ag8|Hq2{T9xn-l zl^RbX?f3qH{e1c%E#brb=euMP7W~I2bDYlgLeJGJKDIIMKKNosRJ413YV(?!>_+W^{2Xdm=rJBHX*ZmFQwcO@)>HWJtB{_tcK7h z!aPwksA$E08Lb2zR{QHLMGtpF^6AEYesew}(LFNK zoTnv_=(l}rrI`Z4gbHh=54l^Ni`DJ4GaFiNbH2e#4N`IEq%JfHYt4lf_yG$3yc>Xx;H+Bor;ldEkH&*=9_F_p;{VcY-Sb zE@FB6pzXrECWgC^E=4?3vYkWyh{JT`C(B_nR)RF)K!lkJt7LDg_*~^!=^QA7Lc(YS zckn#}TdptuAR6%WQ^fC#WiL#1dmebY-Ii-Tw+vCKvW?KUHuXYx(w{H7XC9B>3@kB2 zJ^|AP>~<|NtZ{5vnyS|GtxukZ(nL*O9IEdI04cwDOgq6K%pY8>(_n34Y4J`OXR58k zA9U2-1Z!Z>52bkh;w!h22wEK>9-0ACusLuSK!N+2LEC;|y6o4}qsjLzCdGp0*@kL4 zQsONUbd`E7r&%c%@XZaqo%uEE(^-2 z9=?`S6KYFFw^DQUcw-S7ewf1~17og%>udQ8nK^*>A=Fv#aD-OQ{<4W~_*eueepUkX3_rS{-Ig~T`RgmnI;OOAo+lT1Gf-`2AAe-Wr zO!%{q8EC#U5^;j4I&ddxJMeq-{8_{#9h0%93|+9`ezaP-v-GZ9DQw8y%xNdxs*b1k zyBo}i_c7*`^2Mtb#Sh~f8eH`+Dz2lG+#Jks8ZhtvWqky;4TbycnM$Th5l}g8>urPm z^DPd)OZ9h3NFpI#{*M@D57CNYQJhw` z#dD?{2uVcI&mU&<9nIoepB+nsK_Z2bD!Yui>V?i&N~fK9-<;gQW~<{}qNgtV#CgP} z_HYyVg8H#g7KnuSX}?19yr$-aLkSYsI6KUVgVdBP-Z8Qn;Ykn0=$96S~2?WEa9=PUy5b zCClw`{()YtYJA(3kKeeT8*S7HjS!bfp(1*=J*Lh|lTI$VX|8f(y}1+VqOKv_M;#mi z?lge6?JluD$fZoKd>nxjaUyn6jJ5EULfM@fM2N-GsP{|=Kho3rang;g>yCo-J zdamCz`|E5V`XU&F0B;qYQdQ>I?0-8d(CV>{8hS|%a{s7su7)}Tnd$+mIRWlBX9#mPZexvi!u{?aIS_BNJs2o4`FJn&qy3UF?` zGcRpZo^f*E5#=KdjX71LYFbIbqpMbGE6Nea6_w~o{=|T@%R25+`&QwhyX{RHkx2F)bxR)xXu+?|Y7GUL68-j}oMnGm z#1pTI_dicr>{_{k&z=(6ZuH243e>4|T`+@v}nUmv1veF+(`fEy4--L|!YHd_|_wt(MwfXboKTJa5)FO+q zfuct1ISKLL91`_Mu3Qf1A9O7{U*i`+*II)gwJON+FIi9WpI{eBB@NQ_M$kgWSroJK z5Ax21XAid&7@Go@K;bNRur#1T8_uL#?t@DsBc7Z0Gd()l=Jo92;r_|=Dz|Y@>!}`p zyyXURQ?i3wweR}jyESGzD+s1wAS?#-fKLi3*LEtp##M6yN<=HiG|( z+rdEh!gk#lDbxf}!DRFkvUZ@~xKKKHy-#Q=2yRLRx`$FT%PHuS&$Y9QvI1i{&B@K7 zoI5|to!aaPc*c32yhz7QDkj`tB?wcSxYgZYimvC~2%qgugZUtAS9)cZ2Q!zfJnV^- zxkoeE;8+jTD?hb>b+8l}z1N0&Ul-C_DmvPv{4!aan5fE&WpX<%Vp*!|38I}{*Wk4L zB*mqwe{mo$(p$ySk4U*Rya;GvOzPsWm($QRF*KUSWd^=`$k#^InTy|w*d{p=YY zeds6EVk3G6)o2(Imu!`Dhcf}EcI@vilVq&o<1+q*p>ZdFz0N8sAHl8|Zt)4nI=6_B zLd}Gzd4@o&@wHL5sC4P}f!~5>yEeu{`Jc7HbctSJIv5K$J6^Grhsodyf2f>z7R%G3 z)-t|s__I77mSh{JD4pt5C|crEeEWF$Xt{WHiN_W6y!%aufBiExQMOJY#(vL%$>T%A z=X+#fIsC^lJ`Rvf3X?jqU{di(v^uE)0kGR-m!7ljh_Q^}n&4e-cLj3Srq5FH(Ig94l%-vS^VR|d* zM;cMSWI^_Ei?A2akKf%gG$LiE3c_rcx3s@>}jF6^^aDnl}x zeH4pHn2T!KXu4lx=WHnl((njAFVH=S?ERsw-j=4?KwkWN);C4%k*+WP8{G|xCf8?i z9Ok9OyucUM{^16x?(6QVZjOk{_AqIwY{%~YH+aI`%$6<%>fpjECR{sLw_fdHLL6)b zli#1!$A&7^MPC5%-*Mpv?cn%#^*hGnKN2LF0-072w_#BkE|$mjJ@=M5*xhnuh>+Sv8eWu&#pm6X#w5SXUewvmV8S0R2dnh#rqLed7IvhB zl;*uv@veIVuj|HiMR6kKsr+Lql)?B4d3*AwLL~JgF_IsW2QRp-XFnRRM$33=6qrZeZv7@=oKl}r>uQFuqt#G#d$PdFd-(z-#>T@r*En6iLQjS$wed0S% zd#Gx&x5ioju48!F;8(>SS=(ZM7>@2BOhLH9-q_NVR7reK@=<3vF?T^sBR-#AxEZo~ zZ1X_(vqK9YOxCRg;GLwT=kXM84@Iko)TuvMj#jDr1im=G|8t!?p2rSaVm?V_Ssf!g zLI1T&{}XYrza4mj*nz2w?3ggVi6UQ~RK;w8lR55@a+_eYu`ORCs?^>zzcFa!KulL0 z>uZg!urYHF;QflhRknNlX2rMQn{t^F=6$M7!K?eN9gpq@Ue$o)ji}xXGZgbGWs9QN zT%HhWisS8GGEJs$oJjK_(;>@dn#9#8hB5o*F-yDH?$5^{xYwHXXqdj^NgbIS# z=P+0P&79Ax!zvaW|Fu)S4%?+~8fQh3sW>%;Pd}YrwYqUr!`rzy)h46F{uv3RuT3e- zIOZ)WC_W?TBEq~doX2kP=X?Co0zh>^1uP{yK3<|9*p}5^f>~^oDrmxGf0}AGmai(4 zaH^(AA7^@EY@wL=MAoWS3-Ca*hLZya(U0T^IPJ@tbXR(dgTLPowC`?RuKT=uFszh_ zT@ET%VP1zxZb0VoQ>lu@gMHh=y=~8(1PwdQ3LJk*m9Fg3q^p;_vJ*}&MVc%*cj=ve z%nYhu|MlrM*Ls*Tp8wV@X^gAdX%h-6soa*uOHGr|=|8vLq3?pe5D8X>oF-urGS4E0 zFXUN>`Ds|9JM|jxK3mZc?SmAtXgU&X5)M%gOQf+8uiG+Lu6vAmgjP02qaM0#!}dn& z*Po3|mE{<;8q55`_e=go1AcaMCS%=lgir`x2@&6pfdH!f30&#uxC6`jWuFBV11loE zZwA#W^(#dH3~8yMyQd4IZLz1t7b8)!yq~Rc<^f@T$QSu`w8+HZwqB`OpGxPqBbEZ# zgvfBUexMRsIjdo(L>otA>TxHDs-*Yv{6`3^sS&PH{#L`O;rM~Wgxb9a<_D|%ecVKA*REN=G@rs zRPa83%Xw+Cw6aPwEmUdfD+F%{kE|oCJ=cIGAmzr*R;4WMEVIf>YT0SbhEcif9YF0y zCS<@JO_dlTu?c!dpfdn7>#rU@_bHj6OdgG`?-I3{XACdj2^3$3qKzVhnZPgO=}vT` zDmf;NW7AFr49xHhmQ*6M(jx{HZ6nSk%X^uC-)X8=!~^w10=<)_M@K;}ctE7y^cS?f z3vkauYVp!@v;_Cn-=N_`&Pyzy489MY80V)Sgkb*Z98!RI+jNW0`%+GL z|KK`$#5IJ?5b2WO`;Tbd$eE>aao(G>MQh*B#-t;je#7-cyh@u2Fp}b6$X}~ zr9Ag{->@1IE$kWVlwY7H3wr)Valo(f)%W1P`a&j^?2E|dD4w|!I<0^Rl z&SGB{cRY-5E-yOXDd~XC#TbqYLOWEIVIp=85mst}7mGa<&vyqaeM&(=M;S&Pz+#u5 z^#KkUq>&|DvDqVE5NFh^rnOt<nSr3VeObF2 z{U_g_0!{X)prG?*e!6eu^;W|3e1EJ>K37{3LoQ81Uw_k6AkyqVe$?yH{T_teTewDwTSF^F32xG!vDWdsydSv~HyxUBW%+&&Ozf|Y0BD87zMD_Wp}qG`K-0bc z0`xjsD(A9d2l0W=BxF&Dski&$W~2%)X!z{mkPuVjwMK2VvQrbO@)PtcV6%gti*Yuh z`n^Unk;h%i0iDG~o#0;ozI~m&1VY|iPWubcw@;`h;b!ky6>ong8*(bFc}y3xHBTu zu1YqT$dd7}IObyVDAD60B6%a66&sRVKgMEF#QcVg#75-?t()|+{as3f_Gk^o+!yZd zb{(1?XMt>Hy^Te#2uu{40Tzo;$FLx#hxYsPq{>YqgJZMh(>}b*QI^qgVTe+Kj*2#-gvLn^1M-q0RIXox&nRbs38x})rUog{xjhkJpaRn#biiZR8DK}91MlV zF*79aTAQa{YDe1t$AzZV7Jm(WAXRKh$&a~ajz?h!dH=KT^9<-jgcRUqxm0lkk@7x? zuO!Tkdg6Wjrs1|ezqGdVWR{SG6qQh=UtI-s7vPdKgSAGV(mH2{h~q1RcZ`;Q9Nav%2nL?lo!PA@e~V}de@OqF`^dqZl4jb zI=joyj4*Xcf`wr?HjZ)E5Do{_;-RxD!7BlyQ=@xC@-TZ`;l#@#n?WsT1_Yj)YJdWl zisnMHl?ZesiKjSk+xI*z3GG0PQU+epKDA7Mw>XAP-#p(vDS;N5t5NWxI z$M&J^uL)8jj(($_*dbe^Iej~1_hB0-^4^0``>XI0DvP7}A0zJ?{t;olr`DWELCb^R}E(b178)rN|?tz5;kwGM@f+fA{sg;5wG+>7yE8CD;+MCGs z_4^@fL5ZjB-C~v{i@I2F4e!r^k#JRq@^8WzUt-A}U9~~{RN8ZY!99E@OssgS1u&-S8Up8(LKkNTlk$}s3Z+|n-?$6K zf1)4F26ApUn}X&nkbv;1w^scbiepAi17c6Juw7|D#8EDVblDB_{v74gDa5do`7UdmH=DHF`(0dvf?HFNz{Axa@w3{11R za+_W$JvE%^Am<s#qnc&!aXl0fp7#(Gjetj#k=HW{XD4}en#RCI0#kEPd?HX}R?;VK>l?=91ECh+Sb6a1~_YqqDlO|lXh zjBeOA()gU?E6ZH=0?$|tI>SEsM~xXTE5xOIwiizp30B>Q^Z`)@??VTKQv_flZC3{6 zdQ)ZQ^5dvq<|>zqQcK6o<(v0o9uGIWYxB?U@s%T%4Kwm}WNtAwqwrQuw)SFd{kkO(0Ea~fRXj&duKpq7m{Uwll4 zn=}N!P!T5b>>$6bTl_bj1Og6$0%)cK!W`RN;W|R4k54;nB7?a0#UEjsr87yrWR01uCZ=p|LTOYme z#TK3fFxz4zD@AiaecZfvOw4r@Gv&$EJFiF0^fCWxO}es5v{2G??E@mPkuIoct-Awu z7)aea*Bm0fJ>NkAs4W)ddQtFs&5&Q5pS+!LZo+5HR?6_PUDKg&*Iq!+=UEw+@+|QS zIaZ)dmK`P^DcpEV*?GCMw^{i5X(xTGnj@Lx zG|2)Nq&?Bu#M`qj>R^%SqILG-8_&U?7dwd;&08~xtvN^+6mB%jRflze_TWf{#C8eI z_dky>0y?K14S$A!N`S*3+UK-t;e{6!PhDt!Dl`AQ?lXVIg!`S2b*TQ9M;HhT$E63Z z08Ph)QhVNQ(uM`VEB+81KarCGfVne)pN2-(&El4#O1$A!8!=LBP1aNP=IQUxF7o-? zH+}Le?Jel`mIqlnGVqd$O|0ta(rLRiD(%%x28>OjYwX&ndy~tHy^vj=kV+s#Y5T$4 zIHffyfSirMUOFQf?BRUvrx(hIY%6K%p|o);O4E3JT=!Wa(c?GA6DY286hjQdl7@__ z%U$WRa@V;m*P}V5?S{vitvxe|&e>7|R~+{mHy``%LF~X5yK$9v7zblUZ_)-RAm+=C z4&-C|LwW2Zz*pIF;WmVkvB>qsroBL|T%N`COa6<`@pQ*PW+q=~uPfYl>0NghhZInJqaklPM`uf>BA!v{ z6xA}1=or1j2J))@s7h5VJvG}Q9$q`+&W(~eoJqt!sD+SnKq)bB(w+ILxxDFZ23ZZRsY9e z=H1?m=PPM?KU0VNt$sSMYTW&!_`5G?o>t(*wgF)`#n^G!*9{A4lzzHOH7D!4Z)F_2 zhUPap9%3#>5$9bN%$rTYB-9Q5czcG!MoTB4R7QzAjo9~!S2)`aCNH!IOC=(1vm{x{ z*34JBE##zF*Oi#_GGIg)_oYYL!J?eA^~@a}oL^6)n8)Wa3ox6g=ws9GScaskkInn& z8N%$4*zbYW6C5^%$;HD2ETaPL|8xt)P_00Un=Ksw8f7{V6=`mpM7U;o43Rk>tRn{o z@9ld(0kF>M{({L50@n1X0lG&{Zh`K{OAEa@y7z=@zr~!G()#G! zq4Gme%{1QS4DeVz6kqC33;u1Xji`9Dw+yM;w+*6Nxwb`x2Bn)*%v9`RNf<+zx@1BM zvznAmpHZXQ)44<8moI#Z&v z?*ijCnYLeyS7N?ZvoMaU=bQQrBB}dS&y~*nkP?6faAl0C9#8^dj$REoAm-O6QWA;z zT-&=X$0FIcb^K<1YPc_))h18%7DSzZ;MA-u6HNezZ?f!x#iB5Jk>M|!h3e4#c;^^& zksS06h4ijS@S2_Yl$2Qi#C*pwAkc|g*9KD_Si)oRV}s%adQ6TJ(T^DbpPKuRGpy+Q z=ZP}qV%P6$^%j+V@w^@{V>vhl9u}Ifr1xfL=0B`JZs}yjD_)D`()Y>MtQlcz$givX zS6}X8BHcJrrT-b5NIRQ88KWza7qVRy*|x!Ld(GoR?}Izf*|Dgr2mXIBP z46N7`9*fSthFDF3usAK7)wx2^jse^rhBE!9C%lfL=p8yk33@144nx5B23A&@L1*94TD<)`mB7aU;79m{1-)`T zK7}+GC`x(j1(0_}=0KL*Yv;XH9efFY=Kh?a_RZ2NC+n7RZUsc_cIAde+sVL6+;M%> zbt4#!xkI!oe_afI~saTe_Zg5G*zmD-Qegv(%rDT;*eiud6Az_geewTg8 zM0a5vH=Yv9=YfQScHA<6KTeU!ktG>0nF4o$a%N{qyp^u~2YLjfhzZJMw5#aw zLnsM-@-d@YxTy3PVYi#p$4QiW?;U||@hzpFy>clu&BuYNI5s5~BO*{XOTCj#hqVd1 zGfaG#n33Vbq_qd@Ks@RE8HaZ0bH3pYzk|=j9ww+dJkrvH)F3XNZd)l_H z45fzIUxSXu(j|vr_NGv~qqqg9t%iSmn4R~RnSj!O{nUKBUT#}4pLx}SSe;iC{TlWm!kw!q(*1j!hMfOuvbj` zvV7Sr4K7>;_UDcMj8?xyO`N_ZyXSwoxuO<)M_hR_<0ZnJ+;+=SvxIEg)(4$9+ak## zB{Ge)OKcoKy-0FX1!z_QgsA@cLsOYE^SF9T{PX&Kb;xR9$8{t1T!>s4JM7U&7AC1( zjm-i>DECez{w>j9{AXZn=EbS>1sn=DaKpM+qkDLgy@X2%gtlhtpGS@QhkYYI5l>5^ z?}Ct@rcb16T@H(`r0dtFXlhB99>cM`32Kcb!4tn3*=%mmO`}tyr2)&pO3uoAea>#; zM8)$S5FWS3^Q&xEpU1XYp~qi?-|5LvQOuGb%S#V`t{D!G3uthy8s+;>Pa_h-kUBSde(`}RFjU|w%3i~vhRX^R4h-hsTQB{ikmr$L6={r^qkGZ@YWl3(-V~sboDaS?6uL2^z8_f<}Set9mlb;**(dq+~#DewltyYs%-SP&_G?xE^%b2w~HZFLl3D z2lBE#(I8_4O@iaEL3Ulp*H^rNnA$~E$(}DMa9o~&jsP|pN9|yBQ4dqiDXo615^J$w zo+S*$f-h|-w)8?@=o}Z_qXPXz(gg&_#qTmr)B`!HDTP!URuR6Of?#%RS3JIxN%LV6 z!pTIV-nA2}@Fy|G9)QVXSl!DA^BoffD|{ug0-&*MyJ;6kI5Ftr;Nsvxk193Vy3%tO zGBK98{4ZJa-9PE*isLr|w+T*k011@f<6 zmatiUw|D*Z_r(6C9k;Fl89rn2GQRiIQR6+oPod1ZmIXJPc*q>& zui3+vE~$m39KugKf%t2y(%Z%$5(7;+h7UJ9G!&i{X-ZS+r6c_&M;@ND#4~}=^`?|Q zuF^gSGkcOz>uxw6eIM8DV2_EiURR#vF=!O10Ug}q5fO}FRD)`HfR?Dj9NY#f8g$;h zS^5&gxy2=-)#a4l)H@Q+6H7``>efaGTI5c8;9iZKH%QFJI02OO{wK!qaBN+{)Ar_< z@)hr_RL}U?w`rb{Fz=&AG}Bw+4%lOOO$#zINjAuMT;EmfEn1qG(x8nV9S^POH4WO8 zSe#4635Y#nQa6q+H46E_Vmxi6x-ux*8Eh*Z$59MMP&KU=I*nbh39mLb2(6-|9+l_q zm+Ol>OVPaoFb=SYC|&kRSm?Jlz1Fs8!(^S+N~kjjGADoC5AK%%kQ%-NNGhEOqoEvW z8{^T`YBAnGiV_o~9HUy5o(U1~6+%lUNV=b~I%|gXSM(cvK=|k3a+i#K;+^=g`om&K zXc}V@7;Iw6^I&RAUHWpvB)h^T_uP6$v@FfVRU8z2UCuk<9hrRwZK3+}66FaGli&|? z5pbWJn~x=!-+JhD{QP>&{9wXwqO{L%6E#BVT5>6msHiwg*xBQQXGyzMU{XBVp6U`z zb8M0Dv2!{}Ar01?_%l0$CJCIc{KX$vj6@Op4jb+pKhW1sX;HJfB>hAB5h~_nr0%M* zB}SGK=ynikE}bCn&p{Fg3G>%qN-q=ha7o>+j?n~70a|NuLf0OXLc;r2?tB{kc1;-o z4TwxO;;g*+ybmAO(1nJiIKl3wlUwDI#-}Pu+Y}q%bk`{SQd5C?ivzhp2#T}oIH*IA z>DPa;O4m{m5q1E5vrsYEyG(L~i@nv!n@*>lsOHsjf2oz8+c(5RqhbEC2`mbc44S$o zWdCYLE$*I*v7LgpJh9h43f>&gcZ5mKcgC0yf=kQDB+f(`P=g`q`^UE`Y?n0bT@0?8 zDzT$LHda=(Q<6Vg1bIy;og6RdkTpj3cyVfF(1Sjui7?D{kF^}!2_p?&%*e9!%wfyt$I+m$o$dm?8Q}xwV0Vi+OuAx9lTEj;63jOwmuc zk-K*6hV$(N`fo2Lg1EH%{R)q{xxx6+E}4=02krhFjVQb~O-hI{NOP1X5z)IAqtf6> z!Q&_)aCSw<)g2zcYf$Na}P9i(=q_4|jon zBmi^b-(TIpKC^WLeg1H#J5ezY&ursOm6-OUUvSzEMNdUJayS&R2R4sGR}R0F*)fheR5UUWQf1(2?lxSinS6AR-8RN5Ld zsjwKb@M&zfMwk|8{gxjocS$r3T&LAEitvOM$2Fr0%q8VgdmQn^^|@v;G$WRlE!@P` zZ0fN4mL2fra&#`D+!ujeBNQ|E! zZb)%bbh376L6Y)?r+8_R8S`CJGD`N6YN^C5_g+xe&8tgwT36%K3U zpYGtX@yp4;L`~cK)K@1!w*}_+n-FHvmz7x+P8~Q?IXz;SXr;PK5w4R2n(^MC4rh8O zeb)k+>^qYQm-A42Kkv_^f4s{bDcEcDHa8M%yd9kJSa#)?Rgzum&tSG+9~QMX0o}6 z?phrC3M_QDoYH!waxA^|huqD9+np#*yi85{3-$`{Fw2|e%)%VQ;jh){w7n=);t`>l z;jYj&m3wSl@P4$2sYTb9)PeF)qsp=6T|Vcpa{V2j-Yk8Es8wiYszk9fqor*bZ!Sxk zf82*GkOVi7CvqmP-NS3HgzpAYJL5Pl%dx{VfQ|%2;DuX0mCof7l)=tx3+*uwQrW|3 zwbT6qNnzwd^8@d3jS5hv*vFB>PFlc7Dc_dk({cjR^=&h|(DFiR@rf!Y`h_td2Hsub zt>5O4pD9-3rhMJ{kM+gSB<1NoNgEO8s0tFORp#H@yBqfwY2Yd{twqr|+!c@ENn7lA z0{_QjzCDW3JYAM#;m0wlIuJ7UJ}^BzTF^`dT{y-AAnYxt>Isu=X7$CDbUbumgdK{I z)XJd$;f6_{D>7)3143NKBx8VS)M3%0;^;x~cXvjOj%c}}(4z=bPI`}PNo#xKL)mJS z0A+t`+Ux$a%;W<~7Cgm$NAYrxh$o4c5Vg>XGa;k`GYC^&V#sBTlX z>UV1}__q=8xaLTakgb66eG+x7YnH6@$3;~hf zn%lJUHrN05+5cv=EHC3hS89-je55LCTV(VmO+*=>@2S$gcJ{ zw4`p;fY{lli}jF8pergz&5p=42)`aUH&8lV3hma8oc$s`%VYN^D%+R=Hs|F(uwP8h z?_;%2`*CH<&ge}qK(X1<=Zg#Q#FPWt`F)Z%hDG1DK4Z^iueErEapT6) zSsr&`hKOniUT|Fcl|yeS1N%6-9-3V(jH6C)edKE0^^EVcl~9tx+|>U*T)K^Y1)>F?O(Qm zQA=S=pK{kz6}?THIs*cBgJh&O$y!mtMstXF8Z;2o#~pZXalWG9`fzzhmrGw9yZ^jw zRFuYXO)Fi_qYXx7Gs8N<_la!U;Z3#G)G0<0fhsnSMhFJ=7>T3^*CT`5VHhlt&r?IH;WCJ#)p7dk-~F(s(@B+RY1^x{S0VETX+0K!Xs z2Q%PGdA*-ccT$8??#{1QD#Eg{3Hjvr$@rH0MvKEHC}RZlKYX_i>GJORvyl;<7W52+ z%44uEiL06$pwxC-JH{~{FN&A_bhoH?>vswb_6>9$Ry61q=oWB0uYR;$C!FsqU%5AW zvP)$4Mg%AFx)HKFe}*PaAxc1CO`6xZVIE8ObERu*(m<`?#kT+M8gKnt@KO9p1Q>q8 z++TT4Bsf8fOVh-p8#!Rq7;L{g>(S@C z_viP#`Rm2D`?~k!J?GqW&OJ(JG`0dxeq7_q^9qRH(_;1CG{80=o@xe64bt>e?I)j~ zxP`lwpU)b$Q#0;_nVAOZ`D{&10=AZ-{Gx^-WZlhN3%?(gAb-*9f~~|i3m=AGr<8O9 zzvZT?$VKvolc%jMkqlBWTBk~QZelfh zw)giJSP(tZJn|*NTZ+y7mO+|KpkAcF+~zS*E?B1f?%n>{b44K?uf2pKKBD(*x`X(W z(0RXG(_1c%-X(%!&;yIBDwGR-i%pj*-2w0#I|EmzPJVD$zMjo;iS0Qlba_d{i|{`9 zaYu!5Y%4Q5Phy6eE{k**chEiaU|+pyu(gMPU~c7c>(AHAE`Gd5k~A-9g0t13w(4Ym z+A%c(!sFomiqW=67S9ymh5ssU%kpzj69{i$V5!Z+JjdN_7xmz&If|loZ ztxQ=*$twS@ijIL>Wwpin3vb0^gpO*U(MH=J)`R_QT)2(O>dr31t& z5#&6e0+vgPr!n>Jir_BWNEP10AWrlgaXS`KX1t&fddN-guZlK>&%h`u9h(ffW zQI@x!z1ZBktF@(TTB#{Wq1f&KHIAs`Rr1KMsSJ$jJcL{3DeEWOc6|Fbs!IAegdAzb zj5e*MfO7!^u2~@9x$=#BgUTFEz)^k<>UGMdnS;L@tGyb5-LJ)mIf=!h`s(u5J=K*S2cu_8c=>*KQ}dvs->s2Z+>aKIu&TWeav5>k zZf!=kAvnP&!r~`i(elL ze`}{F?l}DfoD(U7N_uKx>D$C*yO>LrF`fOxV@vy8tv)^Hcs6@#lu$P;UP|)myn1f~ zG+%gOC92n&sckdp-sJ`^qXk8bq`K_Qvpcf3_W&E{SxU1?N!7*IbcNPexaIc3mKVHV zHO$0Alx|)Z$TTR(nH9HvJ`0Mfqd|^F#cayMxUTG)qvNgB)14_OX-ugN-X9eA1%pE1 zu2~aqgKT4DNL9kovRS{g4r|nEA8I(}k*=Moa;f<1>Q^$hSJf`D2Mo9udVllUyrU^& zKPV=UYk*xyf1-RO&t?3PR;Gnv{=_G|=uj)@#-uoRuJ)wJ3sIpGl{XR>pDRvBA~G~s zxWps(7jd4IDbjXs7>Zr@lk=NU1i`Jqfy`y80>Ao71%5Yga1%1H#($QidKvkDBiYof zX@ML~i44tv+faq-ZcyDd5i&h_Q~}yD8PX`l7_6 z_oLTNU=++A7MJsc_1o_d>Ytdp>@nYzX^&>g!` zvl)7`Z?S8!OP^~ zaky~k1vplZn>|uP2KjU+Jccdg@8BL-IY+eH}AJse_tp|6Ub(h@ri9El2 z5I^l{lJs~BIUd{SR1>9}-Q5ZtJS7ct;JYoJ4$E4ch$AYN{x&?%=7V7Er|FNNQ`7eY z^erkIUUpn+~uad-Vt&H!7j_dGAYI2}d74!5cD?d~OTo5T+ zCGS6TT-YqZgxCdCbAAvk7*1VV2G(33%f-WP;5b&uM^DYd1zxq(bbm`) zqTkB?XOu^&m!eKIJvVZz20>k1`L1Q}&lKa;X<8UIX@0NO--KA@N+j>vhD{K+d)kggaN2GpV($#^Wmv-Q{LtS zyR-Rho5|qt>f<55^_c2QT0J~_WgQ3CM^@jjsyxsO{S;^D9hRmMrDf(V9HvOwa4mS( z68{VL?O-!hJ9(`BX9ZL2P?Kk&2XZA7nwAtlnir*ONLHWR1 zONpHE8n$%m1$LC7C7`s`_+{v==S>qAY&g|kmEI98Dw z;>z<4;ulRX_9h9PCyzyJ4L=I;bsK%H=)0Cr&CqhzlT5oZ zrd`16A-aN9#E;ZUj*gb`IopTX*bN#{NH4_tSic)KhBT&zXE{=o zejYIiemQgf-TSl?t}AEikp!$pnzyk2j$hwV*|mW>U~KkNk@Ju61L&4-w!Ij*cw_<4 z_5Y~8;T-Em-`-2Or_9In@#FN&B7zsLK|6f#n+LbuA5ML+Bw?DmO-mOxDae<)t%IF$ z&*`g1g4-{se?ZMpC<%QhUpjnrd_L5M@Alj`vmrv#t99!(E7E7UFydI+|B9#4Cecq%*(r$Wd;{LGs#JegE*6%%Z5ynoioOk_|wthrV@pe4t-x9bf{xZ`zH5B_+|w$HJ3wd7^I+*B{ySbo5!u}mQgT0tn<&^nVp zVzG)K8E$U2neE;zSvFWUR+X60Jto6@At{=XG0E<>Ojz)D)aaB2Lf~%bh~ZzD69gB0 z3pAjRo5#;b_}30~$qd2o?JL2vTFmDZX_RsW_>AKh0#xLZOx;4^??ZU<*wh5PE~q@I zJNy^&5CC~y@{-=?ej-os>R!*q%#5*6lDk>6%F>rj3qrfhtFN->hTTb~&Vvhxdngs+ z!k+59Lk=3-K0g9$%56(^{tkN36xZ&+JhFU;DixE0u%rm4j-HO$w}ga+i8v>>O0D%* zl?*Eb3ekq{lkTT+OHuCmS^< zX|-#L&G+|GSGp&^X5GlXXmid~E2n&;u%K09p!uu0x!9{$uUeX)2&f!L@LH)T|5j+; z#3EVsd2;YZeMnQgtSMW2d;5d!pVPpyO*N3G*{EC;wEv(WL`k*R^u>=U-^c{X4zKCY zl((88vgGtv2(9L3f)nwssC}}ICRNMb$Vk5T;h=hnG*@I(vQsafoztm$S>p-M>gdgUm!{jz%`Kw2avVy|%t8IT z0TRQ!q?x}X@%V1Q1Y6&WO$vQyPeF_%J(aM|U*4%T;y&RuJC{p`yo-7RJ`Zbe*jC-H zd=U8u8wwtWP)FAtnmqVpG%OG{xJe>?ePgK+Z~ahPL-B~7xnI<6M>Phb})ISZEL| zcRLWoe$W!@haj3!1rfocB=kdstdr_gMm$gYlLm~(P)K~-*Pg!InyFQbV23bbODe_RZ=w%7CM!G48=*qh@m=Y&8A^Ei z=ygtE$D@M9OQKE8qP}W3*k!qbWP*eO;3gZS5vM4nXp_Y_=Q^^=H`SjL#LfXycOrD| z{U9}1ekv2HY}otgu#XeG4LU6*<-c)1)^4uCBClfN320-d=IZL2yR*;pPkuRW3J8?J zl5+m{ht^N)%AEz8jGe0aESsK$fv}pmkr8v>2y5HPRTC-u-mA&j{nC;W>c7Dh1ZYFD z{vQ9=Ly{(VJ?Xw~%5Qf3^WlvTKyhU)6XZXN>rWawQO7pvX8$?l_xEo+z*z5Eh9`+X zDg1*#303YjYu|mB`@g=Tsw+GdV3b}f%~idzp#q%XXZb@u z{_8g|0p@M6)dP9yG*@-C8LY}pkr<-!n`(bN1l6$b4xCdrb)dZ}e;`WJ9&=&wf1%+w zqD26rGpe|0uWAUas%Q2ykKBL5`hEI!J%CClzY^N3^5y`t)ALf+ktQma3IHkv82(n% zzmehwR%M#O=G6Q9lRqDDc2oj$b}Q3d)s!|^l`?kd4NX*Huv7wT%+Ora?lfXNes4`>4{2>{-FKXdR;4E{$96{rBmxiHWMm;!8@)rg{O z+5is&exG(|3X7o)Fja&#F%rM@-S0W64?$2i0C3TESrgg-$4~*jh}`ujoWEF>aSH4$ zl{FIsw`c?GL>1hsQ*nYpaOimG%SiXz{dc< z5xo+>EulYH2LMdnN>V<`=+Fi@g9@-Ml9M*TY5-vWiT(?;0sen%hCi46hKCC9OIwD2 z0GO(G^2@Sm18hbG*eX3Nk~Y9%0ATbN2{qa*y$1js`B3IEZGfrPXuxA6KW%_jsWLp# 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%0DBLFD5$MBv)1K<-^~KQd(<%ME2vmJ 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 z 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

8#r*YdzpIyyh{P_&ZS(NOqul2+@eh!Tc!9g~&v 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 z

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

^4&crwhdB#K0Ea|b^~~r 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⊀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%0A)FF)L(=hSyU=(Q@6wKn7ON;x-%E<+b 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

    Tz(AZ+ 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

    MWs9YdAv1Tp3k6*7DruLUr-d2=wj1L^ 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

    av2uU$ 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⪼@K>U|i5BwEbU0m$uS@ZJZ{cX zx7PlOfo`oMpma>9y40S9*Slik7J37H#-!9#n4&O}yF2Znu@S35D<&p|!lM1!wx6(A zI28&6WBG+W4M=wOMV$65$#%GWc4dvIheOOes=7m-)eelbJWAyf0m&5%7EV+IBPm$x zuuPehN99}lD>g+3S+E|s<pPFKpphKKcsuf zl;Xi9lal#bqv0pd7A#stEj8mt5=1XQA+SWSPt=vps`lt*KPPr8nsoQ2(T+6lUs4qr zuEI3_`W-W(;~@XQZ6*ffh$v7jup%?A**WRhze_f71IdIe2_8kB-UIf7coP2bxZ__y zu^a}Fwn!zNKsE-t*%aF*Fec>oCV0F%M=3HyM^Kud9$H+d~{$*yMFNr%WV*>Tne6JtLN z-EQGwpr3`d4jrJaAkXeZaYS=~LIvK%1!cO;N=jxg*MnTb1grvQW$N-8*Nhht-t$`f zOI!OMdV100SR3nTu7Xfo$ontja+8f_&qJH98LY_ZS^$xscVkVe>&0aqr5Y_<{bfAu1N8v}Z7GPzlHAwRKToUScV@je=cH7|PJ__rers1QbA z3Gv!pC56b;ei^pa)zdevvr?YWAy%zy>-hAl zvLO)grx zb?72*H%uz`^HraM{hrXbPniWgzsV+*p`+hLCa6gI8VYJxXS@pt_>{;o+$0bn4d@)8 zkM0XLH2l1_*5~KpcN}oBu@f$)lRcsLuihqThvkL=Hi?Me{cLEuvshMJXe>uLVE27| zgDf+v6h)gp@ifOp&nn~Zt<9bTdj0>pfCUr*Y8q@&b2G|aG%Xj~;+u|?kzcY!;`+Am zZSKn}E4_2$gz{m~;FNZ0Bmu7Bq8&1e(CFi0S3DXQ&#TMZ;4txFRy}3Rq8tR0Dhnsg zgQV>2(KK0ykWsX7 zg`xR#z+d=Ueh|e?r5q5Tf7C4F{n6^;?Ci`QG+zX6mM##}{(hK&^jcuY4T*Y1gKu+8 zdx8U(h0W|&Q&LmoGp0rrQaiCWIAg##LiC3^E`gn9s?x@97NwFfx}yB0A(n)M-1}`baTKpOmSGPHb;XR#95?F0mKQF zTWlOwROI?E$EvTiKKwvjM&!*6>doO3!QOag?EU=;h;#1r>4f9?q}Z{pttvDq^9sbt z$2HS>c!diD)kE4a2?zpHnf9qD0&|$KPS#%x(qV4y>?<(;G*h~`UbFh%n@h?JUh0Y- zH|#2?sj-oelGeKS%HPAmf=eY4JeY)lVmmSAHaIvbk7jZmkHKf7?*1!FTq7g)t+TV( zjwj{171PBq(jx#fvnA$63vyj zAUlWaQr%)TmbEVp6+GI}(*k1PpBIUX%QceN;kw8Bs8P?OVHS@Dk5hdTlB|=>-K{Z) z3AJfC)CHnj`0xm%sk24lhJlYfaVk5(q`HGB({;nB#~NU?7GoZ?3WD0?Yy%Lq(Wn5@ zr#8&VbSe^3dpkj$UF01_6700-P47-r2rW=^d=hr7O8)_@j_dmMQII|)ET%x{P06nf zGc~Z?7k9|H*`o$sRbR8cG?bVJ=(TncL(>% z>PK#kc$D%x=#tD(_$xn!^B-Ke$UkEeRK&W;owlnFNm2u9Sf;mzrcs`^Hz`E?>29vC zOY72mWj^LfwACUn;O2f5GZh|I%q((WAkRII^`hGoE*zX7x=Fi9W zXF-@gSXq2LJk!1@r}uqye-HN`%?_p()WE4p9qiAihg^yyAeSiZ$?IiI>Jq1JXW0T1 z!&VZ&{vq>s$?EBkWD;be$^HdI?sqS;xU#|)yUO|=b{UInZ(Ki8gKm^lmJ)0aj`yXG>P+8G zEC1;7#B=ojBTlHK-*xXxx4zy$8Ycl%tdfho))K4S`H)~2hll(b`$465JC#z5{8|Az zxF=qqtb>HBF-p|%>l+8Y6ohdz4v+EI>wdU;QDg4E{5O&0|2)oSjdmc&+8_+|mplWo zwCU>0CZ#3?Id;85l_+OR$;&gMdJ9$Bf8lj%wqN-Ui_)Epr#)mE2 zlzchg- zwddq|i05&YefzW$#s&a@O||Lh%nb0fAQ7P^rYPJ#$$+enZYH}(LYmT;dR@c9q?+CM z%IB4{+ysL{4%1tP#>T{a#er{{HMFA&Hidsp*rt$yfL(*52FDaFcf`4tk=iGE6Ll~n z$op@KGopiuOBfA)Ko}t8;rEuF%xEkegYsVgedtu%C~azr1&_uFH5CHi70!LSBC1vT z`=NgS@{sP+m8-)+Ef1^b1rsg_c>F8UNM63?(6nH~Iw{Dl%fAC-`?Gf4|7rm+F~eG} zzjKJb>?9|A-iy6N4L^Ie5ZRkB>Or3(=Kip?|CARp$ZEeVF8ncF9z)Wc1M z))s9bG@*NDQYb7R3r1a?9n^GDgvd*BX7F(N4RnzUCQKx7n$chH93sLyw|%wO z+xmTttQi@ju+4oad~x9tl&T)p5c|bF;OtMCUR9@hT^)mJnso(QWge*b++Q%#Tg)Go zRAb|i2td|Nw`VXm_k&JWec@Nuj7UFQShy6>%03)ijvl;P_xtNClwIRHQgwkb4iEXB z(M4HVJ484g@lf&Uo__Y4ZfiVb?bcIb%=&yho5bP8CC>eAmLC=tE5;HQmKBoiAVrsN zocOVgUqc9bs@~-)DcPX=&B*YJ{MXHs6HvNlbnF;OcnA5h@pNOG_FtWHNs8ujU9^1{ zu+IY{4u(|VLkQ!}pD%WHUu9go$oUhhvokIm_4OIczarFBlk@Sxo#0iM4)8tsKdL}J zYb%retRId_`RO@gB351MGJ-|bJD!R3oU_zo#&O0GG=6*h)H56;DnIxoUkK#A( zNCz?<+ar5=5%O#My3wcT;*JQ&Fi7vUwsL#Y9zW>RqF9rXa}?xu;i zj$)*OXpAN0b5L=imFet7l&qX`|0qn(w)ai3l+Qjqb*;^sw(sq3Q~R4T;SZH;!H^ya zO0JMrxu>M&5+v+(@*dddMv0*vI~pTr z-a->Hqcln;*xChcjyz|PPy>5J8QkLpp^Bn1v`cyy)ig#y2Vn}9*P-7mU2q!t{YDJ4 zgukMH?6?wa>abpC_w@EMdD#QNJ9nwha1t;Y{hxHh+Sf0jRn(%g2*Y$y z+}&M+2X}Xu1cC(!K|*kMw_w48yF&;b++}bX+}+)6@Y~tFr|zEJy?>|zs+g&v`|bC8 z)SQ}$DYPhFjeL!w>QqH2y^vf=qR|RsdwrWp`6eCWSMW8@v+O8FX6yDa&n1Zo?i1_d_94 zeE?b!z+iB7oN`?Jub@2Xp2gMcOMoC;n&Cv_NN8pV6cQ6Vt8S>-YrdLu7wdU@ZA_r% zXHImD$i=H|<$UoTO_e-YEhDwDDfd+C@VtJ4Yy^*w+>l>fO%sV53-DN>&-9Um)>eIK zjkv_!%WcvfyFG$~7!N!h10NMU>fFUR^4u?l!ii(mvq??HzVj{FX&^Q%h`r+(Bgf~N zcZ!>93$O;o}5)=G$rXb73aW?G9A6W|PLuklJX3a0KzzfdWSKSbLHADX?kVkhpN_>huRDw2{^A@e1V6lrO%`d^U2 z7UD%oJJ`jyz*T}VPGml>B`x`I)VtF%#|IuX{op}pJD;NrO8<}(5l|AwVl7Qi`4A%O zqgq<}*>i6Aozy zCUMojNt`_$dv_9g-uXbm-g$>ZALW}ca7W6Yk4+&)nr(RI;N;X5Pg}xqF_yw%H6yW8 zimc0L0!mkfoGs@}G%L%uJs(A;;)zA)JXz1N%7gmR1q=Vx^*? z`}An_o)pw|3j?F;@qs}cz1n(TV82e`aTSqGL@1WAf4tmKA@|XU{MEtY{JHi+NAI%! znrWkzQ{bz^0E2+@BiWL>MKDnIEKxFTJQ#Nw9uZ^e;i&>)1m}L^P@+nJaY{QpWntjQ z1R=z-052Rvtk>Y4os$vfXj)9e#z#Rbhq*ZlZEx?Ha=)chrH>F{Ff=c*n1CG0r||mR zeho=97{p4DXP<}Or55$orIleG;-=1c5#5XGH^*tQd2j)rJpKfHT z)ThUmoC*?hn%en zbBgdg@8OV%IQ%%iJ6Oc`%|1ZqcX#g{7}$Qw5_cLlV1_mHgbtQRGamTU+xsnw%nBxV z2-;9%`8OG&A)rGAG>_sdR8i{99vD*xOb0Br!1zUw6D*7hbS_I!Z~@ITaSY&CjN zLLxqlB>Z*(CnpBL8;ts*^x$Rahp@Q`qDoS9+=39RWON__kt=OADiZw7Zs`pH(EuFS zeS!TcEe*KTIBy7dCkiR>@* z$bJPDkdBdA5y+jx3|1y5F;$vsx`KbST7Wo(G0QA$7%a>}Cq; zjB}(`zZ9Ph89x?FctSm%sxA))36J6*3~e1)#J+yG?R$H@M^{p+E8?huo14>46>>#G zjDK&?6dKGk9Fw51v9%R7F(KzsH&B4|dmFJxr3dO}s}KJ;Jr)`10`wE#+2O^DN4s*R z%a`~K@MHV=%#X3O}umu~e}8dTV%^{j+$@Ze0~-h_GTs5LaEAkD-?x`^C+ zYNq#XCRu^w_C;|fPs#TVTfLTU*cdqi2)Cp>5^nJXmy25BB8=5RDy**xm#&%)^svOl z-!vz&iYiM?0gBARc-d^jxRAbm-|6b>3(TU>(nIF)LU!q6CaNR(%}OSCFgU*^QkmNI zImjzQM#EZ3qO$euOf7EsTk(519AtBPBaH|y@+qzK*0JNY8~aPkvd zf$%{*7c-Q$pAoA4(HY1mkC`btgY&xlU1dFs$W+DWlAeP?S6*b52JKqf<8%EeA%9Go zT7;;()?uNc4WEfc!*Os^g1F6TCk5VNQKPFur8i^gs!nj>KSpigP7_fuIApr~Y@@&| znhK(JL@{a7Z}wzCo=Zl7KxWV+66pE!w*W*rm^ot<%-R)^po6_}9Mc~SJ90EJUQfa* zB9eKoOak+Oo4{S>ir1MU_aP?|PB2kea4F9)m%Xjc;B(p4?o65jpeOph^nJ*<-S#+i z_BC6=!T&3+i=U9za2n@-swkFGG!b%{1orx%$G5jJ#iWBnyLDT>GqsViUM`xio4kbD zo;;FaJCZYe$QtMhWaoxbHT`1aL;!##fOG5Hj}K(g15aY1Ot{~-u8PV$d^cD!^Md>D zf?)7NF(`EQpnzf&Ejl31-R_JD2qNS}xkBae>HX%Hlg`IV_NBEB)O7K=$&;JJR1UMB z)V{6jde$ThZgEjCmCKROT(@RQm2j+wHf#B^1Cq>ozFmO%HbCjt{un57 zf4)}BLPka=AJea_gMo%+{*I#ZU?ipd*T*w3C%?eA{3dJ$~B-?E9|I zlxP%Aq!}vyZ_=4pvwv)w*UAF%LYpOg$ses_#)tAB40b$2G!kh_|G?`8C+L$C8xPf# zsTIGb?N2_}W3i0yIiNv_-yOTk*a4wb>!lQns?k8Akc9YB1ug+=+Lya{-|B7dw$>ME zI5>#u>Yi40V=XBEVPs+RN9Nz}U~bl>X*jkV05ZX(2mnX6M)b@GEWq(dWlxb#)hXy6 zMSj#s9eJ^tZsFvry_(>uqu?P)z|g{9(q%g*_|zN|{_Q2j_fy~Q|78UEPonKj5FRPu z&RMfdn`z*7P(dY202Po;v+D7I+GJ~uOs&5n3=f&fF*0)KGE1tcz{o|VhPSPVxM6*% z_TVd5KF0YfTk5bsYS2Ym%Tr?5Xo;RlZVPlW2N?$s(D3t9zC7LblrQ3X_^CzV7R4|S z#Tr#M&e?*@b53^z4_BITFAoZ`i2l;>TLt-cLaw}RRv)4L4Y&KzK`d1wAftJpreXoQ z#VnFuK|w{%&`^x8{A<+S7>LM?#>1kgw>dn#DNrqIX{#&HbQWd;D3OqerO0|9+gads zS@?!WNVpxr;AL`m5`jh$k2;qtxyh)BzZpXKXneIZ8ReDs6HeIu^@rIA|KE}MM5clo zw=r$Nnaa($dR-%LY;J8C)Oh2C8{h_r=LN}e>SWo*HCI+L1<^&5Ori-o&ji62{DOi{ zk6zWd`>Vt7PU9*gf9g#EIUdcxs57Dc#-ZPrvj=Zkrr=K~lxP-i;|zp|fP~2y1q7s<7>*7re~imGo)YB;9mhHPen#Ih8gOLRQzq@vl&P!c=1*-RFYGob)Eq(p)e zASig@*K{(AF)(CzTsEc)qhW4>7;SKb-9+GHrKSVEtD8_;`>OiyIZg#>Q~1ELo0GYt z=n2x_IrRIMkHn%lw{lG1P~bBZCn#GmNJG%lO|%v*laiH)sHNR%Fpy`VCNQ^XD~|vC z2reR%3r^0<8V;c{hY7MoW0^}IB*ewDm60?QBXtHGF9;zDW?9{XIq+s*sn)d0W@`=+ zpeIm5aG0Z^{qBl2@2p&rk7XsI4FLPYcNwc}jJWi_{6sf&ZHB5vKVo$BB-s+W7KaNR z{rs>Kl>}qg_wwgS7m-uMv&SuBo2S+Pvx}xT%2Iu^lCchi@&w7~b!DglnG2$h^n- zYwpx?lrH!4r~KXb@M-|L5tYWxl!!?|gY-C>hSVe=?C_PG>_i}|Jva+JC#zEQ%Ikd& zL%Aar=mCH}!oC~dZXO=?I1mdewYCb+3)rolx4Y6Z2a=aruIGDlf5Mu7K;@6m&V~mB zq6m$&Ree3(-2{Sy4@j1pgwdp{ZZK7cZ8uqCW9$J5!M3Ve4^KWj5ZTub_v5MjrN^Dj zth6LpadAwy-r{k|B8}SqBa>w|E@P|J`|{%Y*9oGZ!pR~hH$lC3#nX(@ZA0hiqii^kR*hs zcj(DVLh(fRiTgcq&s8pJCJ#m2)tZlGpuo#IL6g0^2QQy*&wsshjN?k0 zsK#m&JkYAMU;nv&%H`|?sP+m5Fj!k9wcqQ9QTi{89iu7hyboB*-LDTT)1l$qNZRN8 zwqxYy&#X!6ah_>(hKMd`f^|7T8~6Wv`RB?_a_^IDOB8 zhz|f=NQ@dUsrCd6q3rDI#pwqDryYTxkw1;C%_9Y!i*uDz?j|f;iA0@HDh)bNU~&oB zvp|ucx_A;XH=#;{7>SGq*2&HIyEa_{XO_@ug815@7S*!N!_#OO=Xcf-n}Hv;4)}&6 zIz#dkiHKH?q><4RWrw-(NJnMYdA3T4fw zmIf*-JsnxKCVdr_wW551(*+V<+T<49MWxerf2P;eB0$R`ObC#f+I-sKQEd^I+vd*N zC2U#CrhUWBXk_+_e_<(oZ|L;uEP6K1CkskAZ4Ru7xOVUlZiNh*9Fm|d?Cn4N;6dsC zAbws!5Rfh6`HtdrDgLR}d|c9I`IU40l0lUuq9pqWR2jrMd5I5Y5tNDio9108RI}wY z;r2%Nw#9rU-S;uHeO2>E_b?1w4s-CkCV|DIZhf1F&#+JxlNJwci9uPJBn76wHjlQ# z5zt{4Y8Jb@J78oIlaj)AW>nT@T;2Z4XJ}K;u2uh2n^%I6P%FY7B|H2f{q#o1jqBsN z_U9Pxg{f7l+a}vhe9RF-QqWyPdI;{qsD5fXT00s{?^(kwc>{~!R)N;L5I=c@QkQox zQGPld6P-5*K?$nkyw-oO*jeEOb=YPQLo&gz2+3ozW&BhOoEU1^Yt9oizBg`qF~9m^|r`AmfaIc5o6S z7mEWq+k<%p?uM-)@S$j)9OR3VE@6x8U-yl7Hbx_8M`+HZx^3J@^>0R zIYU|`3w6fA;G9mRuU{#nGPt0a4MA!kotJz2fMZI%~TmvU+~6v%|RA(7l ztO|k{>Q)=knagnCPm9jgNRy&bUV0Hfs|3o8q*U#%W0#A&jT+V2EdC(RIb5HKrBmj= zXoWU&&;^uscm!9>&=yvJ2N2rR6Mk@vRmRSc8um+FhpO6e3T_DIsbFQV-pVc7>COfU)}|) zD`jPA!A-}<{ORsW1O*mq>geDkAe4QHKQMpAz3q>4rU)){wBCqOs&*&1C-@wgmt)CBH)cczcT0mZ&spRbEI zM~Ao}hXbobB0d~?^_C$_+a)~%%dnqHqWbq(&vjsOqf`0)>D*42!de1d1yFILKbMwT zLbhtF9y)c(4S!&q>irWL1tVy=1ZXD_#g%aO$WaHjYoM@{VsL+F>+2345GYVz7Zdd$ zD}pjc;VO=jCFN(6OsK}fJBA8Y56Y*(FIG*D97(CXFub~&jl?FIYjQbn zipAy@y-7$2e}a$TO-@7ctLtiH^Fp~8Npq);-V)odqkbbL0*?H1d=z0-p_3gi42=S+ zGHq7Uc%mi};@~X}-140AG6~-*TMZ4O{|DaQS^5ue ze-eGL`mFRtuZVq4(UbG?n7y;F_*UQ8-ac&XygaP2ioexlVzk$Y$7xs;As-zfQ@{fL@v1r&*xSb zJpX?m0{biyxlUgQ>5%mNytjoRMFB`33$APt=VpG zB+BL!mf*L<0W^u}HKZ=J#nGO@DP(Mowoh>9rx3Jp@wa!ui*?Wj3|*MQYhN+Fh4r5y z(^bF(K)(mtAh4ZK1rdc4wv)obND*~0$pixY?M!V$Qd5PYEk3!_!!_FVnLxssd@2g$ z(R)bkMPjQu9_ zrv3u|*5FWdm|;G{b2t8MA<~HQa)X9UQ;zFsC&V%v<{Hn!uIWFC5m{|e}Px5*P zPSuq(jAx@9&Gq>4ddu_M4mujSP{e!>ayj#QM?wNE{RfJW$}g1N>AV>=-uHgse2I`1 z#;^V_@MsF!P*$N?dt zIlnSMXV*j33H}~@ewcXVgC0l}q~`w+(zfE0XrX!*1E+g`G)a)0Oy79b*@AVUa?UI1 z+FmAl`w+>G<;sE`>tch#9@`pQ3WxQz?O&{Y8Kzf0uGv1pMpw5pS@mp*4&uUs?wkiu zNayL`SW^WxGwlZ|Dr>}|%=y{k+J;S{SEbk0^o$JQ2CN=gLWa-VqbDN0z3*uG*x;3l zg3ikjx?e4D^kUETQD*Yp|8fILC}D=2*u1BZD8qxSsLEE?k=Ed$n@UrAYji@wFsrJh zpi#RuC8%wl5g)4ksGbEW%6{kPeSxl1%uPp|aWS_?B z7@kCiM9yhLwbObGN2Fl;RXsumZB0)}q!0-rT1 z^7|c}!rlQ>$c192YiSFY3$S{L9GD%T0WlE8?m?=g4O_?T9U(cL?0lWq1U5FO!$Dw1 zqv+!18#_tosr9>)fqqwgNVA9yB!h^@qKh2rW}yZop(u0r{Ff4Suj)6KH_~nFnk)fp zR@mI>Qocf&e4t*e!ENxm@cco*3=Hi%Vt%R-MI%ceqgh=i} zluvr;_8pHHr1R}#P&di8q#L{2@F6NamVQ-VJ458C(Sgu7RSX6pazOSHTx$+4(7y-k zHrVj77e`ZwRsgbw!>L6P!IicL(KRSHM_0M+{%Gd+aP;rqQ9o*<{Uak}NA@JG6Z1b7 z$b03T1;S1^3Km-!MD&Kw%_-)F3|*mS*DX9PcYLy#ZKFO~Gc%s`sh!Hd-bG`oi|dlI zT>6dm&&TrLaytHf`}zRj1>^@NPTK~ZUbG!=XXXfjjNa-FAfp{?v_W>hfED42_k|aA zI$cs2Ha^F;J}U52a;BIc4*Lv@a5^px) zlZOGZTrGM~dZn6NXljxZGob|qq5!E61oL;mQBvBk5kTvq?7~m270elq49+!Quc)rmY{M!OZ8GdTc4nhoq!i_d- zSc*)<0^V#m(b7R4pZMrlQ4I|%FK*q+ZqXIgA^<;HOpB`z)|^1~@OF5_^6jy@n(aDI zonggthrX;+0R2SU2(9XQY5UD6z#O>5aO?6~VL?HYt|s{8|NX~QGcW>6l$*12-^s)D z2>4x!!p7+-hP^%J$x=OKBw>X~b)D+6_QBf??#1=Jw22f=$IBj~+lRv3%*E^CJo9lj zvTrh_o7V6Wovqnl@`sEwRvP@@PN9-n4MT)nVLiy&JT|%dV@LxD4ZTQyU@-L40nSWv zrL_1gFY|FjFb7Ydl4=HD=*`=vbx+ZPpUT9R@)P%=_gdwpl7Z|6t{ph#l z0!PAM4lCTcd<=1^fYZbMwr613Whel2?JsPjH(~)s`&%wu;)!CdEOtySmT}3 z@~+VUn!*k75(zDU>LH$n@N)W)jMD-icl}^SDyO}WloW}{=E(!_nI5Ra0+0FDnr}lw zAGOzF$d@nHxXgNTrMjg{)Ust)yP#}VThenPf)Umba^*u}1Afrw;2@tne_B~i$?=b@ zw{IWY_FisaWj@i`-`UxEeqbS+sdGD}VSHafRl@-fWm_C@Fz(I;)xMkMTK%_XTZP(k z$Z~LWXuHca&7j|xWpD%psriIWiW>$*l2VusVC+UANQZ@{2uj3~@<-+Edpf5$LnSoE z5+2Q>mQUmWSy|NFw74&i_k9p1)4Vwn;sEe_uWIjouVA4_kd<+`h4$k zy8spNQ`}eo&+t&JDOCLYnB2wSefWd8I0S$|ma_5^@`K!&XBVnv@{oKGoh3!Y%jOe`kcbT=Z;-)XWj2k{Ip~lyC+lKQp;}nxu5Mlc9sjGDOfg zKzJ>DT>65_B<6K)3dGBn7?`g;A9|F#^S@&#HX1Yv%D5heI;fjbX=)a7XrM0D1dMMs zXe2z)OiY$-pW6TnzQDqA&tE*J_>WnmHo%)mQBrDr0?*A>*J%O|a6dPCT~vs z+pC<`b8vI-m^hJx5u)Yu{vffpeMFG}?fm35?lH&|a>W3I?*}ubw!~e|HwR3Bou{Vt zwkKpduaM_Nj&^E_E02{au-D>;0kyoQCJo>)APHH8%@I7qsjET!4;4b?bYfHs%&5w_f=;|^qYy@XgGnpDG`Mj6I%;|~&VCGBk1yx6T!TO22VEA=V zpos#Ax0XeULEfPk5{in7is`_Zn=NQ#-`O0C$gK7KTw)hsH(brP6lVZ31e8!wJ-k~b z*;2TmvXT-IF&lsGGx<-I#n+I9%f%e2O4& z0MZCSMbG&Y<|RHN|L-s}>lDz`6iRK$XzznFA*aK}2$A3xx=L095+Vkftb+p;Kmx&- z6Hasgp3K+EJ;CVizBRJ84?Flx z^!(SGJ$73;Wo*yybk!ScxzQIcsC)>`W+FFb^W@|QHfU&72z6Za4KFmBq$hA(b1(qd zkZ%{-t=WBEd@kntlN?-}Bs=6{XMzwL-PJ&bK9!ay35wAkdFgP-fVm!vFsH|Pb16~3 z8KKWPp&QMcH`39$B-`{3r=lypcmHrNJ0gZ%U`iRoX|0*Kc7aH zs|6&4NZ~dCYHs7Z6XeVux23ueMh*O=S-=6=HDPRT^3u}iDd}<3wCVBK zT#`GPMz4vIhL^%_*juMqtFECDgk2D}@sN@&T{9QZl=%x0L1G@kulN-(e((16EU9hv z%58VPDKl684*_Mg8%?z&o_4X@{YdP2omQ= z7BGr2QQI$FGFy{?*Q|)MBjW(x8M=0aTp%wjEp41O>f}p0P~As164K#hig?CkB_b>M zy*4v&x-RLye(^*+aBryWc@ujhSZ?qQx;xd+QwKdlHbCqXRqLj}C8pZ;*1Zq#@WD4v z!hBueH3Z?##b~pU`OC3?Xz|VIbQWwGF9~{o$aw$mNPN-lytJj|kTqO^oEj6NL~L<| znT*Uz*I@i7Vy?1Etnxa$RT{`6uNwUNUs(`I7G9a~ z2NxSIkUIHNXw9^VYKTF`sZGU1Lp`$CYXO~Dd{A{&Vi93wX*=MYl_;3Z*H6(lJ4@av z*D5bNRJip150w96|KEX7)w;{g&CN#x1;c9cJ)WoM0}2(=ArOT=J|0s72+2r*(`w5r zn$qOPAErs;w+>Khr%^qVg4HC?&C%?s8Wd0*yR)}ryqV7nFeZ42jJ9iaWCSSiZl{mv z%E@i6qycuiIRnZSYO$;t>jMlqe$my{a;ZXQ@7+!yc!(GjpzZcn)8Uy(G|S1>Zko{Q zHxa1xAh)aQNFuz3`o_@q({*lK6Tnaylif6$L)xD3@aQFBOfB!`CT3tjCg8zL&zC07 zfE=3pw{6Bce3 zz-%Jbpq}DQQv?!1sv22yIyk7UG$oj(i+58lOPB`lG_E+^cr}Km{ z;FvZ^Wjd}adYVc(Dn6l@RhGdT!8%Juy?QGIb3}c$B;|qWd=`AYZ4>ltm1BOvKd-HhAKz?=9_I`QqrWDY*+E)TFC_ zF0n&|g_~44rD9+c#6YZ}*Wtt0;&!Sa+`G``i6{oya0X(_OqYer9Jl*fqew)vB&{$p z`FjC=tNWShV5LZu&&DGK+Cp5M(&wTZp|aL`-tfI{b?A7l!=~oV*=qFLleQ)r?7XEV zF%rt3VE4wVkmzV$wl5u_7Z+(ClYpbi-tofgS&7Gf7G|@*@8eBC=3vv5M!B}>`ITKiHV{AJz>y`;B1Rec>6E+ zMqD~@7>Xw=n9OagZ(x8_f6Z`c8|d%}31Mz~Tv8?yI8o*6X4E7#vbG$Kt3Ew-zw9&r zdfjq;M^5^2V7t#wW0(IXxJs!PdIO)6??Vr=Yr;&1t0F8M|*>0K{-t9@ydVO7JJg36h#>uVwEAv*86R^^QlUN?USD{mB0IDyGS5Q!pQH;P~ zvtzTEdWQ#KS-}-aL9mJJUw$$!3#Sads|Mn5jS>NuIYsi*jW^lbz?xRTke1=8`-=AW zxz$<{{$CPEm9olA9~ljQwn|f3!cgnxHWd}I)?L8%At(Q6YAtU)2cLn#F(d2FXW;Lw z*2vfp@U_IRtnoANbMOn;eeF6s?jtUX$n=9$wO-&}F@jIy4x$=g#0QnGh?3E*KN@C; ziXt`wHP=NW{MS#m&$^beTyeHmaRt{}e7c`5n|EaR?{v4+1;OTF1KuC;a>KT}CRad?TQUKcgjf2E zY|{Vr^}E=SpqKnJ(3G^xi$pzIL8#7QVfWXo(K2>D!HG!IES}?P-oBRXY^Tc^6%;(~ z9=X$l*u|eDDiVjK8W-BC1!R1;zfRE7vYA1_4UR`+XjAJJ80Fm8r>yrPp8NNT=9}jK z%l0J#saV+A$f>I%7k|hJvaW27693u;@ol?&To<^oLg6;v8zl}8N0IlmgrBQeMJk&` zsnCuTK5IrV$@Idhvmz!rwsO3kErha_G&JP<`*$iYZp2gMs=I)O)?utZCGXE41fZ9K zkX|Oc0nFfJMzFu1wWLBSUfgvu>IrB)^fY&`a+ipg@u*Iuj7-*gOKg;)FrZhx1T_wDDf zcZJ+_2?DjQkC|lwQD~$rm%N03wq4@D%W6Dj{1(!e8=ULc>;|&K@;t0dC_(d3lo46_%bPQ= zcof~Pn)!jOoIxsz7Pw%d-~!j+ENE^Di%Q(k@v*T(+AaeM=QXx|yI(+ekHU?_4mK~}EUOfWDm zL@@t)X!S38dEH;E2PoQ#;WWLz7F=GNjhYA}ek8@8;*`!o`ZdqLo>Wdp=WSdd`)q z5P9#!!|VPnq=dI%diuE^|L}5wjqQ~RcK}45|3EnYEGo#uWAQF_kox?3%-tHBk}!nR z^GU~s0-PTz6+kbQwYbv%XA03IDG42kI_VS(_WT;*FJ+4D*8ahdZ3eW37-lsr&#c5s zZ_-mvAeuFI*1`jm1ji}>bhd@^E`i}&{@)gCp=c6CMUyv2s(Y;)e57X*Y$_O+e8sVv ztur~tEr}C>3+G2-y7-Ufx}|ZFtEHnS7m(a|&sh;FK$l7ud6Or4j}l8mceDF)0c5qmpT?>5mQQR6I2xne<GpN?Ggc$D_1AUzfg}qQ zZ5qvzgUwpF=crIO{(HL0GWDt-a@5EyJc}aLf-Mo4WQz{Z@5_X3;0_ML&k!BCW|qI5 z_`na2{KAz_t8qbkpFpOhk@X9DN8=aw@DjEk5F7Zn*2PF!%^+6>Gl>mNpk@YqdU>74 zHzxhg;;2en;oaexxhD^M^!nZnMI6kH1DQbVKv?~;dtPM+^7eok4Q<7nljCYm&=*xF z^|e#;hkC4Fl>cvjQeg>jVdaWi`TQo46Qw)3{epYyYw52HR*Q^IRKz@QNz&X~Ec_0m z*kz%5duqqi;O+IEjY~H=6-!aIydD(&hX65=i`Ya}@5fP68)X$wE7m%TuI#InWN<

    M;AIVNVNl`#_i#dkua=$JMz}VoxW@aJc1lzgfV88(8zwrKpT0)$(<$PeSO^0hYX0n#kK<6LYl`x-txmaG`xkznqC_u zL=5g=ZC-k(@?U;GSlCX&z~?=|dyhbT)>hI|i^=qCpDkH|FKn5Zk~qfl`-r>%6d6q^XBQ_DY{>_GEX2QQ1|oey_a;s1DLH6Afxha?#vZr07mqIntsg4)2&w z=4WR9Zf(^@X7{E#7CgL23-1TzYpnQfXH_qrcx(jfJ8r_8OUvz)y=D21XS|6dBr1OS zg_oOjtv$|-o^*{<7kVdislN!a!wJbG1L42Z`M9og-%ECKgC zKVV++j%L5$bv*3J@9aeNWY~+q)+_Zfr>#aSn2P0?FTh!7bQ{)qk!k?Vw&^79Mwlbi z2ey3ry7&);xD1pN!Yxl4^Y$yz$#ZU*e#4wk?Lo=OZgD6s-}^UqssoLF1I++ewT4yX zSQXLwclj+X*bF%n{`e6sp#*sNTAb7wNGF=2Qe|4_?xS?;6$6JQY9Ryrpmbhg&g+Fh zmTxFQ%hVpJeRwc|1!U0e+A$xaVO+FlMGx1G@1-Y+?TeKQompt8Kcb}@wrgVdtUjO| z=YG?zhwTT$k!ib~*^m-x{`@jBc@!7eCi_!dIO1@{k|$ef@w3(tqAr<+UKFI7aXmRR6SN&m9(!Py1a&v>Y}%e#CW4Cl zUl%GWEQlG6g!dv`!q5B1S3lEzzXb!ox+M{dddd|KumV<*z}I|r^enHhCz*F|_}>}I zvyj7i*dE?H<}v>uF4R>`=nGlmW8gs%+yd2cSm0MT`&v|c#2IN`dYX4JBG=}2*pE8A zI~LV@BIARp>p2fB%`gE?`WVrb&Ol>e3i|mG@k+R0aa2|@cKhYv3iaCX=?mm4D5=4c zBe+q1Q>|}{O<$XQ3Vu_Q#2t3+49n)pEGmul~q?49%JX>AKVBTesy#tX81fVV#oY_G<8a=Um&-o z-lR{j+^{y{>DSWkOld-{HgoPL77QWi$As}@(;mqC!gqaWPmYE)R>CGGJ)F$G7jQ?$ zm}?c%o@SzR_6s4kYB}KD{d;ry>t=A^2JPd&$5j|*;49KZRa*^Ge>I1;geDUecI;eZLT%vI_8s$O4rakxJS9NP<)9*>6uX&lePERmOI>+4~Y z-+I4(^~9*TynLomXAF@2&>221_JShQ;%9yt3EXZV@%1Mn_Vx=B*n&wbFQ^@-mZozv z|0W{;j)$d6xXkAsKctB)n~L+!w}_6s$O2zIC)@s@W{m5h_NgE2u;z zAvwu39rLx!Z%ay>qN?;8ef&lI`QEKuZ^@Upz1G~Uj?l&|pR1HN;r3v9vn~iK0=c+|JH^F_3pYBg zKOmD~5MDWHctH$;qxpMAgx{^E8l2Lp!->y0iAM=-?D)b9h1MbbNmn^oDL;rcr- z5?za$Mj;}UkFaBLDxj^<8sD?m8-MO*(fr0 z)9xsqnqgtDoRZaw`eIB{>zIJ4)H{uWn}yG|Z(7&#n557x7WSM$!RRNW@wWDfpqBFv zilcp7nQQFDMVo|{;;<)9UN;$#LkX<9FHX$Lpd+Cu{Qo)A{yXB54I!o8{Hp!5c+!RY zrW4-67x7L-h^vq)fvgBLdcu*(N&S<(pk;PUX(DW7D_Z0GQLJ$KMNf*ELhP*R=B}X1 z#@eS=_UlA0T~Ki1!spo-2C?@+Y6V@33HiC&!`Rs6{dFp|DX>MOUub+gUTxvUKI=p} zm-KEFbN^DGKKkC%$Pw7ZP7VzmGtyENCcNsS{Lh&V1C_2d1ofFejBiC}!4VM@9KDY? zzVLX6lb`+Eufsfl9A-crHqNlE;;0>P^%PGeMdzbvX_!Ch5^wtKr@Lf}#C6a_sVcWa zLc`OVX}55yma5WC7WXbFs!(R}^L@(RF-?;KoW*0~$Z4ov(TOQ5?kMlb>VcdEVLv~GOc%CnCR1r=1R49{rg}2yjhKAy} zxoI9V2|Kd8J1>TmQQb?yN&)oG9S|>kH4$SRnx1z_Q=3FdKiI2&57bOwA+V}{*luWO zC@28MKs*k!B$Iw4nQN?(3?^4C49ons{Dhdik7JGtYWB{r04^~H4(x+iDAD_f#bW!iO2Xda{AKMP#2XjEe1g(`c3%RPTy4=Pb5v+FD7j4|?K^_0@ zy61Y#x831wUVC)e*V&0xlI;j&t_IhbUAwhCJepMII`l*gY(_9pY&zO^z8KpqHNoT3 z$Mm`K8^9JhDudvCo$Z*7%fSgBvLha@DZb$kKR-(uyp{OE9n^w_(r^RLn%yz} zlpQ-v%I#AqoVt(O%px}zK7KmjEN@DUU%0JypDjPb z?~UpAdWc+f*$TY1adY0Yk8hP#b(q5+gi*A$qk137>>SR_eDe$QS_NZc=SFB6Xlh1e zf^~bkef%))bjjTqIv&07V}#wvObS3@A|lwiyUg`luJuX#*M95#Fkq-Jf&GO zLB-@a=Y3E>M z(!t%`3GVLh7F-G^xI=J)JB1d(f(Li^B1mv|cXua12;Q~N>Dy!9{s#=ksP(;T&S$O} z@chR;P~2aP{YubaO-OHK-Sk*H8vR?n4?EKZ^KnKI6Hb!i8MT$GFS_LhO(rz#aX}KX zWsxGRw2~1+WtptK+ZHTm{TAVGYFgrdzCZ|35?Or-0O9S{`HwSY{p0KT0i_s!L}eGk zUKg#0Lwj9Mjsv=uM|p)Gg+=-JNbMLkyL|$xNjLh7Fs@_JRUUS<<;fjoQ#h1$lC_e7 z6u}hdVyJwre~tdVRt8IK56e(;=|!hw;Uu4#tTS5T&!(o{RWKCYiTFq|M4SkOEq?&hWObGPf>VX zZOn{XLO$HKjfNxxP~BV8X%)N)n|pJl!zQE`OreYbTD+U9sP<16I0GY58x*+g%fV(H z)BIbX+m4c>{D$|_zLsdp9}rU|03$~a->769zY@Y)?8JiU)n_*%;G+yH{OMp~k{nj@ zDVwy*w3<|?IGe0nLQs`Tb2J)!T#B7-;+5@7(wwiXNgPI6Az`Q9zJ`%C7mH5CH!1Xf4)^dK8O16Sn5Z{kJip5piq_1|TpJ-- zd-VHArb>g;45%I@p@BgJip4K%uM|&u$Nxtaj5@28w8=v)O z`)>vgCYc?vOEjD{QReyUe70~p0o@?>fA)u0%IT~RDxdF#oai}mf_qH6r7^bRiMZ+d z?7epfjy?|%kVS$hyqFUHID5|p|0Yt_1PFl~j7MPN(vq@2@6)-(q8|fULdhV?-vb&F(&3d; z#ic|L_RZfNptFsqjR7Qo2nT+9`T_Y0JqEqqe(t#L&B|uE8>aRysLO-R4R~W6Kg9pR z$jOPG_W4cte7y}=$=Kg7vpd26L)zo6tJ7B=h!)g!6S#jwu(NDYYQEFEQpNTPLB=@) zL-wgR`xsIMPKx%fulu~OpBK-(;-VmNb`9Ck4Zl&B-5Z=pBhed|m)?}`i>70Lq_W+1 zEddhb6`W88)n?}0I!m?(0l=h63&Qvm23lI*>a99BbRd~q8}!M^2nT=bZ$I*EI%cO@ zBWDb8VT~EAmpEQtUW>iK>X(k$Kn7k`B*B$Jy;Q@B#gFo4W{k+OWxkQ95W>~w{wgw3 zj+~2`n~aF4eEr9hp)l!klaFxKq8Fs#I&M^1+SeEPYT@`HRC_FkjeXu8F8L_BPA%Zo zgk8LLLnjXg_W1CSFC2LF3DKe1qk9?c7er=iQe-RU_>Vg8GK`t0S2unZ`kAh;*y4ef z2dyQz$GnBS7IguiV!K89%y#f5Lvk5ROHrE3m1=R6LP$znHT2^}>2F;9^%=sS0eHiy z{HGVw!O4?=n+psQOmh5C#$>n103^S0t|r8Hk7aN)`u}wT{%Z_?JYb_3lo!GnyI%ez z=m>}ng@+@Ok+QLml3Xn7JBLV?_HP`OnE5Lqj+2>axBk)IN9#`s<3%ph(L7%}xam28 zYEn9p0EHtMkeV##gnV5Qvz%8VDq|lg!plj`WE8XUem3=d^u0r>@^)7w`F`m*SiVQi z!N&-z0>H3eTNh!#D#D3l0zFSWmti`ftX}t1aB;E;7CC4dP&dMRRO6qg{3_ zhrViSUWSCOoegdN3}BkL`*gFb-U#y}h~4Js03B{I&~>3fb(I z=R`z0FK6_Kp^2sedKsVhS-aakA1vHiVoqutpb>6nX2;gfL0(#mq=B0TZWz5iC#=D2 zFaUw$?soP!u{MB@l9%_pqBtZf-lP50G54oj>LJLgxjDY9%&tG2lgJ-)Zq;5^d0cFE z!Soe|#+kUYssUfv3)gHBayFCmjx}FwSuX@HY1ceJ3*~sdcYQsw=NArC`NRFoJlX_G`rmEHJ%o%Yn8Wjkz zCuaeW@O{}tY3~~;K2#YrC5-P;CjShPx5N=Fe$N7%ih7`5rHN&D{yS~^Wb%ZedjzSyr)hm87 zu}r@u4VQiP|AV(!y%Kd=VNWi`z<{W~Qs~kndt|l?HrfPs-A?{We^IzG!I~7hwWOn5 zBSmNNKc&URPo-jG%M252Zoa?vE#}4E@p}0y0*J1ubdXS0r8}H#Yvpbm8B*%`HdcT9 zxKwX{F9(U|io9Ise0_gS$l%#{-cU*hk)(O6BTk3-DaqJsN-kEU`cHv)D$5;u|BwyX zez}tH@E`>q&n6Tq+>G6erWmM-Z!%=l=YQ7xj8uA6$X*$Q_sc)6yi$I4-vL|L*xv>~_!Mh)d^zHxE zHPH_qjI?IayQU(B$k>M&^cH^#y%i@jl_PhPkk^CWKdbBO$3s+Tv&rmdQ?7{L)a~X6 z1|oOU$uG)n8_wCcSz0&8=j|DPRgq__v^UBDDh^1Pc|k@kMD#fv^(ZA2-<<|Wa^6j} zsNV-*_u>7}`;Q<4u{#kc;S+`y*bdk5?U+1f0;c*7Se%tNmd$lMkg{a>@z!Ujk;mNk zXHCK^CoLrc98q0OjZML69t=eZJOZo8yJCzDJdW-)mPtGD$Y9i)C*X5H-QHc(b8%sb4>d&SKI_S*t?#B71n(L z$l1=~$i#mJel^<*nuqF;22rqhsitbjlK5I%;6MpdDU5{5z7h=#pRtnHSSsIK?{n~a z*b6eCe`)p;SX3Ee9+*%CZv@H!%Pg5B*)Ti__B$Z-Igfa{&W=hag7Rp^3fgS3h- zoVoOZ`f$i1IzL~Ufx4cBmFJ3jC-UB$6o=49@K`yO)lm}%ngWLJ3CJ1{OLuRhna*bC zCB>RnuO&BWX z`@v3|2Ej9JcIuVD8qfj>9@RK5!BQ|6^PfxBq3A|B4o+_Yfc{4C;-Xhd>e5GMZlsKy z{)?TsnRcguP9nU8dx%yRF+&)-o{if-^hdjv;_`3N=BeVI zY77d^u`4!ILooTTVik4t3jxyQnsvKhfYo6mHASf7iYnw7%sO-4LRiJNU0x`OMbVhm z*5*vKY$taHbomWGn~f%ebcgXYBjCipZfJ8#RBGH#9bcK1s4I4+rTAI7UCNKnsipy! zq(kEF{ z&096*#hp#RBZSqhesm+{T*S~ zNx@RM7{_gh;@v%z>mQMlA_GVS#Ygu#)QZM0FEhO56b2M;9fiaNmVa2zQFYuf81@^A z-aC0vZ8%_Vt!HW%b2!agj)wow9Na#V>E4`0&5(=rE!|JHPYpEUh>E@2z#vH!vO^{o zf=^gmH45ZO!IiL%lh;fkA5sz=60IuJ;VY^~r$hgqiOj%bK-gQj-J+jAi-0E3u|zMe zla&(AhZ_e^?09fW_Kn#xor|+nEwy0BXm1f-&@rj($A6#J{~f;&4kqOD2WS}+Rg9&& z?w*aHEwswMSf4a2>W|7WRLseFOP8Zw>(2?I!yuI2Uh%_gjfEeoP#mYZw%V=(Ix*B= zSQ|~{+aeM(ghr!o81sz+GNOj*L7-qc+AAzW5GtVInlR^Np;b`u(!@xflb47}Y98|A zk7=?MJ!hkcA_uTt@#xrmo(#F&m_roPCB|Pe|Qzy{R85${9%X*6L)W!UYPDh{$-8Cy#m1R!& zvJlpk*3xYxz!AqOglWXRO!G~k4}9{^d#=lf(_1OD}KA{9`stO=l7hNA(R%3Ofrr7#$&UaWFb@=gzVDM zXR}f4#@UAx;hrydJQ~9Z132l>ggu=TDCi-*w6cXTR`GlyUaoWnp$p5KikKyB$#M3R z%Er3Ok&w5zB^B3%iYmTf#Ga;<%UA}ZF|4iIY*d}HgYWM`svl=NTOf1#Z;O_*jFO<8 z7B`f@<<0OCFM>t9CUZw6L>?tUh(icI+?OG|XG-C3$E-@GUeD`~*|6@omxfavMj2Y5 zr!D9^kX9_*@5ee3>?t}tU+7&$@3^&~RXTN2KBOxJaecOkH(2+RB)(&cpp>Av|An^; zEf>=*!KBQ*blx9cf5PEW!PDBLZ-%@#fp&nC|@}cvueO?JweKUjA9dhL! zL=_r*BgRbwSbPZ-Os=7#QdUrol94ljj$$#<&;W*qmyxHVc~fbI&_T~MmHS9vD#2b& z82-*UmrBfhRTZEB%FNJ0tInEPnB|3?%+K7*>#Sp zCY4Bovu(*YGgQXR|Bw$Ml2~~(!fb+VxiB(TrAi!$cGb@1O@*gHw6u1=6pT~ci1=!@ zqTp_SNPhanESE4c@QSe!7GCuA8%IO@^WQeI3CRVV;iyGrWESV#+=ooJN3q_fQmviu zOpWT_!Y29c;_Zt`D<C<^Rp@|o7TP&QVhr(|M<-_ zn|&uvMaa+J>dFzOFxGE-SrONr`{}fkj1M6}n#O_1(gV*$aN|W)qk4;0EV}eJ69XLmBjTq{Gi92Go-weK!+_V%(cPP?7AjGm>dG9o23hzRuuoqUI zyj6+C*r5~n`G=tL*LO5VL2);Fdj}Gixe1KCk`nYGQf@31f=O#^u?^~{^TRAfyPxn! zIo|Mq8YAH0A-)LTv-3aD#jN{&s=_o6UE*)Xa!NX;4tXiEYMYZoCEEf7dJqP3mF<7$ zpIlrp#bFY38LA{A=zGNjy3P(bzZ_2kOYTz3I*zBzhVJWU-t|iVqxDAmqGWZYhj<;DJ1{?e@c7 zdM%D*1ayakKHiUF9J9qv{_73=l8Kqe)aQY&XXUlq((3Kzxl>v*eAviW0qe-ckUsx1 z{QNll33V_zXn40%pqzRx!=ylQK+1^Mn%?BSC3~Pxp)7WHUNr%OKqYoSt$l(8e4qBI zF%K|YUkSioDySHt8J6ue+j4T~{iVBbok4~bbD|vnl$%Zf+M*y?k_`r-1E`r~AbKi( z$DI!2U}>aM#XPwod9(?^$qo*s+?G_X;fsBqCr8=t@%RW zFi~8OI?S{+D}CG)`((IuMh-~ZcCOv>M1 zvNa+Kexi#!T|v`CINa=0G_)(A?kflU%qM?0GKnBsF$3T7mn%Ec!P!#5CeO)KII#yA zgKGKsO_d_C2qvN=E$i?}Vhrj^^57nM$%bRNO*e}*B?7&x!xSkM&FsBCJOB*qk8d^g z&dIZdY2oJ@;y7$^%lL#%y?ylsg|@Xd=onL9K3W~6{bJkW#gfcyF#4349fb_wgjzkg z;moL=%r5#L7Qn!5^3-)qpHYBs3^qb)5Y~YzIE7Cbi+~ABAD_LtKdCw%{HKT}TZj#s zm5;r`fQFup!=`W`qEw90x=NLTB0706oSH>p0-dbfD3|kN(#Ui~=P2%LC^>;EBXkH9 zmaY5WnN`N%A2>ThU&~{J3|;NeG?UERlm!!W6hzbKbG0;S=yQ_1_Vx<%&PqM}oH~i} zdwiX_nM6bIigl|tLo)hkNDQmJFf~|y4t`pn)E%ivgRkMeGa)NKEDCkX8y#?%BUPm>8sw7?+5hWbSG?|h|LK4 zB84D&F30X;zo5NCQ9@xMr|B3(ZKr8VR5Q4sUqSB-|C?X>6YyW}+_sD7Jhq!!rO<^Wh7Rr)I#Zqj9e$`>?7d|ESk}4hbEthmO zke~6NLmHDr=u`-^Ur516ZjcrV(V)%S@ba^ocG94ZUGJoZhj(p0 zf;#9XnP8KbNh%t;ON(qy-OqG3QokW{7QTHWgyhWw&cx^7%k@j`?jT;;=WxR>?Vyn} z830{_y987w;&jpS%e)r*PGQ0?OT4S29|5E!{1@GjQ>J765A=uPaeE25gGxKd#iXCU zv-DXcuX^KT9GmZOs; z*R2)zLt-LzsCHG0vQ7$tzh<0g1S_eUn2j3`ssZiyE5|_)GRhxq{kGnlfTL1x9a=gp zI8C?3@&i4s=@{L#l$*BQ$Dw{xsm#PFJVtUA%%MFcK~o z*UYdS4&#L{Y;8fm!`89%bo7`?C)sqlF*h}DWw&=FxlqqXNUv1JsS*Y|FP{h zOGyK8#juS(i9rz2P%lyD&zNng%Ei}vtt%lgCM#wdJT+y`kp=cB{+xn;Ur`yC+q(eh z@z8_>2Yo|+A3Bi*3MmF`Gz}{%5|z${NL2;0*@{Z~sTn_34Bblh%miO-8bFk$bY+eq1A8b2?IK zb^J{YYLTF2yLHaob?;=vcyv@oNcDt;;%+$zxvp(K)No3<=L??FEaCCu4!VyAx%;OD7#2 zH08CEi)RcQD$OOMdS77(CBPYAZ<25eRk;w!x`vWrscm91hM*_Igp7ePa93UkCc)DfNOmrP;~a#Nm!1zyK_J=N&q8Xs+Mn351&p+7}H26z217MFICGF%0MDpLB@b`2{ZTDGexnDx)MN5&fUB{R(X4$;{)`)HwW>Ca9DYWy9& z1TF>H)2{ql>9aF4TmRAMMZfxjANyRtOFe$%BmQ$0qqEA`20f)ikNY$m`G2Tzb@pm zCgOjY@DuO!*n@KX`~yL*$;(m(V0hJ50&kX06-m$WXK6m&uWa1y>DnqbdD_OAu(OA+ zpFi%oLg)doDRIuwUHr{lhRyAi$DvPIZhfCp@Z}}L=sF(*6Q9)Kt&5_*)hyv~YK3&9 ze7F8LemrSsHfdEaCb=W@i@bDn|6gxjyux3wcH{t`^O8b5Y_rn|wk;IK*(eY{I1i-C{sE93u zl&l;VA6j6{pU>`M4E>7@eCr-^T&g4lBN-Jm#j>Dze>Z>RRhQ?LSsN&;0|-w;UrgQpm$J6zqx zbc>l7DzA~nJ1y{pnYx)K`T8{b$2`1J!kGI6T zG4`r$CbTxe@;_v{a0`Ku7gC?&o?U`M8dMx_5j0VmYe1-SUN^U_q-zzW8aB4okI+T$nHkkKpLVWT?H+7 z<7MtAx%&8@Ml3FQP1sW*mpIW4YUYOYnu&>9b;m68TN#-WcbS+Ft&Sgu z9YBylqj)3mlR{E{h80wlpz-8Ox#SFBj$-+*DuYCTnU`sKm6+MI?IZicf^` zucWN2pwwO@V+`^51$R82v52bVl%qm*swe`*DHO2`L|pax?ug-r{$8k3kp@FFIe9W9FXVqzz-P6d%PP6C zlqio9d7#0`rslb|+vK`BCiLlP`ju7K%Saaz8L)ERzNU*XBCr8TxFSf2Q{B{Qt0n2L zN_%SP1Xn?r5x;|RzFVf;3-~v;@<`eculrm~MKe1k=Pxp4gA+wa3KISW>dGTP?|=QK zB?H{v&vRsRmX0zRk%Xb58UosJ@(IG?Xi9%e#_YEr+6T`Yt|QJcesk0;%-@Ju+uDp! z@5F|H1(1BUlm!q$E+;fq`zpvA!`?9a>-nz6@Tr`(YW%m9?DzT(WQbA_PokLv^jN~8U)i$H5u`eyk` zzMjg{wJ@2i|MFs3vJh2AGb->UX`K858hK^Ro8Mv+C@bKgiF^5?!em4)u9TJYQVJnx zYssJt9Z<%L{UnI6Pr;7a;^klXd_NSjt|4QQkPQOKOnzZlH^N!SV~~G6!`QPDcQPwr zd+f1H$}Az}dTKbey13vgTVS%~c~%R4+iyHb7x;)W5-m-w~dKp znF?yh$z{wJWTr-<)4C2$z{cvDsJ>8$iWSL|pFDIidyU+%b>yL@S^kit8v7J!9Y>NA zGHzC8pJ0iVvg}mvl~*%4u9O9{k+2gNL<0{w%pN!cfXu$X_a8Yh^?ieEk5e_{Rge`> ztwUNuyapzoQ;Mf1&ohFtDIzuf_3&Ahzoyn!g($U# zF|ms%6d$BlZI*s$Zn~>eX)TuJ>-HhCG>Aj<1e7e;e@q@RZCy*u%8K?0^7(*-RR3+H z=!h-vgUbHVOktznxhLDt<7{Wx<2BRzCX37LXAY+)OGsX}9dcl0Do?Zg`mcp|AEsq@ zj`!rD5>9Q`PfVXS{p&=fM&(J^Q^PNQggQD&;4#6YY>@C3I7BDc%1zMUgre)|NuI^% zFI9>XEqUNEIwT?6d*Eg|gYw1v_K+-HEP$(0MT>$;90!S5i~=WbAaLiKScN$kWS8Bh zq@3>Tt(V&wipa^g{2icMvl5*Fk-z=EzjdLIJUBv;q1(qN)}>rXuBRmb^?Oh!WL)Ic zE6yk@&@SpsvDkqKHH69hfAyhqIMw}M=957uRH0hD1rUryotD-;7S14^*gifcVDk^U zFujw86r0X>q2-oxN%SKubwZG;ER#V|W8x+9B%6b9&JPK)rgs_MQ|TdQyqtyRR5$U! zH0F=ZjYxF@7!!@Ibyx9(YX8d%QOBg5;fOIy*8FW8>z!Y)5@MR8S&>CdbxwfcesBfS<@$H z`qYwDNPYd5R4F9>CJDusP8^msr5v&W@iykV!2Wp~5Yt2C-HK6_90!y&b-V(q;7ykL z19Y&z8EnM^KNZOs@o|GHCDQoY181bn9@`}4nM%5jdz%A}DuDbr%YRmywUUwZs z3IMPU?0IFFWSZyjc6wOdcFmx5I?iWo~GWt zKBZp@#l@A1Kn46VvM49=?t{c8%0{mHBfa}}_9cX6P9~XHt`j1|*!8!MF}Xg4GZ^_u zO?ffy*aK1mz4h__A(Gc7l?K|h3RbYHdD;ce0O=CjOED4&No`CRRBN{yCK^Nb;dYF! z(LI3K=r=csbp{vz5IRouJ~7&PK!+k&1*_E)N?_DH?SW^y02>VMJ L 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

    GA*-f$U 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⁣;X9ZZbOwNs7VzkL?hW6sK_IBzYLsWw7# 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

    yt^q(oU5nC9Z-9AW*e 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 z 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]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

    UbhuzXp3dOxpid%u=?(R^axCbi*io3gO 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%0DRb}QKgBBG4jm=UgHUhScy`%5{ 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

    FZZfVef<8pD0yB0xLPql-Bt$a(8Wf~I&X^tS zto557m`DjjxxKwMh%cdo!~hf*TS~m&cR*aG<n|CLkwDn=-67pj?>$P{}W=@ zO*MI4P+IbQqT}p_1_^A z>-^NlWb`hP2vG3=~bwQUq!h&z7EHguFKK2xzBaEr5%pp^F z08_HIg9`W4>!!lORAzl1C*3%RYcybg2c%g;Z^|=UYcDcB8W>5zxEz_>4HUZi%9vgY z^5te(Zs=8i$JR3J3fq@7{guhbNx-w&2A^io5QW!0Fi^Hk4G$sd!ZEPS8TO(y9Q)lr z2`zP8gd}^F<1MD(PVMhx65!!euv6yNhN}sP>!dxB9G@ROFi;;dN<_Jlh_%=s>2rx^ z17%h-6_Y)S@eBu2uKwR&t|x=m5#DdO_7zOVnEswpD?c2UMlOicrm(4%N zJbPr&E_M0flHAFD#~NygQLU&+1b>MPM(KA8ryH{n(y?rU?yxt?au7tLk+jUv(J@Vp z{vm=5Y`JGq8%|J2LWEi|%fX$}RQJKT2xQ?k<+L**nt*SWw4|?FrJC;u;Ty2pMHwOYeg3_{ zwS*#Q3!9gQ`g**b@JQsx?{Uh0uS8s`f3}z(*NrX)CZa7V_`bm;sL0BU8HH5y7zF~D zS1)U?Mcc+63IPjuZTe_&QCs)#C*sSlAN`ekqN8PoIQQ=dfFA?~>%r;nFBn%-wOypq zE^1hif@f+A(>*00JK5E#usOkA- zE3(j^iLgfQrcx2fUj;eJgCea9i>ni!veA##6o2t@hsNP`-v)~Y?i)uj;& zM{zd`m7Dv{Yj4Kt=blVGZ!M>Glb7&=d@3iTowN!nUx*rmR5)^BLCNs&i&pk1_w88i zXLHY7WMpUidHLx3;w{<}2HhoRu~FldzGU3Nrf^D~EFI)eMSetfItlV9fk)q8G!jFp zbcmG^bkN9Gn@RN2EQ)NVAAGqpZxkQ42v?q^-ol=1u;wDCDa7P!DT~tgG&8u}Zh-}6 z#xY}=Z^>%b$5#%ULd0Q?tz+~TWLJFO29oLcn#;TmcGh0jcYke)m+>O1awrotd@X(R z!8j8MN!&?lyE-_zdSYE4@WC+hS;rfeQ5H87$N6>nmX~i71#T-ZL_h>zA-e`f=p5KR(B*N+s;UNjCTjQ9~V(;8yNRqE?y8EJMS#* zm)eMFX)PW{l>MWZmI!^X&Xsri$N{X5ZQF91N*62cP-V(mW@D-Drr8QRe~Jk=>P)!1 z-l{w5Wp4p{*6d1=SH6FP0B!Hjj9X+xf6vzu>umn%`ab_7HyL2jkviLOg;ExIgMlC< zVzF9D?(Qb^^YnkHJzbg6@_HQ-;X?-l~lV7 z_~jLD-t@rQ4k-0=kcD>cg80~anVe5=n`ne{@m5%KCzGl?N19zgec0*ATUK959$!t( z3XA71y+vKMwYAgRq=s}vC0RN~Qkoiy-NhW6M-*Ecgp2sBCr^n$;X$V^0p%m{w?kIH(?TH$fHK+Ya^1sO!qGj=SvF39QBX zAxraw@^tD9_80a2nK60;mbmC^&EDdoi&=^%xvS>DQyX2D z8bF?5xkdkX2$S3li`t)8Ju`S2u#0b|D(50-NfY7xTbV2v%ZA!ionPg4k<)xUDU`uX z(D91bx?I{!ubOaG9+*PKvU-AGq{$wS*f3HR5fori3q7A>x)B*8ZtW&0xE}l3^C`Bm zX&zPRr$kMyO;)B(ql>nbE7n_SJ~K=Mhgt&D;O^kIb;v;fjd(@o7N-9<;#fS(S%X4p+3jPJQmUO%?K9dW^O+i8vRwkG7bx7-ba`j{HZgDtG>u@Y$#(`(nh65UHeG~TpO3z_qps>N z$4vUY&~dxmQ~NR#>bvyA}c^%*kx8lL@ff=c#GEcCp^$;m~@M+-~OG3vD1gGwdRZ2@w|os zs6XVaZp`8g2ez%$xfsij1)q z&XLD-gKc*Qs^S1Q_Xl)G^V`OxPHwRS3q=koFSL#cJ|V4^3w*aAOsq1h)<#;1gv zC~KQ*AjgYxmQ}G@o>D*R^Ht4+Sb+Xm+w({C0e6|?>MnnNavGS!3;OOqGkikzR^M~m zy`$lT!|QoMjZ?I%`_NWrf)C~xJswx8?^KyqR=sS@qK23-?uzZ3je@YaONMrMGSdF{ zi70!~T*L z+atgqoMG2Yoc+43CjlqSY`;Os&dFKp1avE3ThDQ^18*giosPHs=^du&+sp)_wT{4q zoo=8n!tvl25LzL4so!v2Qf}MDHrY0m43mumxoFU_-%m%v#n~z~cmNu!kY&kRaQNKM zOiFcE>}%@lQGgX?M~z@5<0nqFlk*IV`z`WDX9`Xkm#r=c=8PLHoQA)^~-(kvFf9>Q8=sLM2ozuI9%?CRUf&_p!bk4gh0+4`t{)ue7~~ zpssgsZB+WBl9Sub&Ed(gD!&=*>oYbTbC4DgJnKH;834Q17yZF1!W1@n3#*)&NzWj< zm-hY4M1PuJ{as_DyCGyF2oKXY;fC2W@v~VOfrasqOaec7xQ$wpqkf3EbJT^>9N^9E zNwt)EdcxSH=@}+@1%oeyz)+SLV0+8tVXJmIB=ciJKU-NFY&Jq73F>P-tUrd$j63U`& zkB)tFB6h3ko@_;__tS?eV^7l76X@RvZ$1(p?c*b;*D?M+OI8WK$l1b%Wyi_PSfQ#Vtcyo z;rfK`SSD7c#X+*1R%|mYm&s$|`9;mI04rXNrMY&a$%sYB;cG?i9Xp=vOGE4i`0ne_ zyM--QQNv#wYU$(^JJHbL%{+Z?WzGH2B4=XP7nOxM-SKcugfZ!~#sUPH{mKnw4IkP#9^7Ag8>h0FuGoHJ zn5^@U2S2;fA;SNg0JN>gDj%?)ygqeSc|mz~ z-LGz%4vyXb6j?GdO#q>VVYpY7&1bYee@$K^u&p&li75|eWI1;Lmdc5jk1sN*>*=no zkEPi}9k`&5?LD3ccBBH7oQPat7i_!N#>Sl%YbFaVMR!!4&Um{0D7jvNFIpr(77rfi z?SBQg!&p}(fIU?6nU@!Ir-clo6+ayatuYHxem5q2%cyDv@cNP0*Q%y_ zrjAll%xAe$)6#L5KVG~Zm^5GTOWOwr`!RVLXUY0@+|FYos<^@PjhwabKe9Q~z(`{cE z&By#|y+j)EezCYnAKr~4wX67)lz_U=?fjXjL-HKW(gmJ26DPV2E%}qF4H%zMvANc( z(vrG&8C8v3k>pK5Pmtu~k7-vS8xXN6zxLgNYX&ZZKH_}enp?Qj zNdNOG=`#K1ACq9|{$gHwU1m(3MtVuz%nPCj#qcet@25|z)646Tl;{bA(Pw9VQ6Pwd znmndDW8uSSYAI%)dug5GOG_L{`6(t2ezxKo=~cPCRG9&G(th}HQB>uaf!t}aL1FG# zoCjPWsIkt)DtCIHc<`|H)dA!P}+3jQ# z*=9wwJxqC&GPaGW`@vy=th!OgB%-HDEYxLLjKe%WG$80C-W7Ni>y2f3$VLfvXV@Qt zTX}6PEuG}F<6EX9`93X2IveNu_ z%j_9}^&X&P;N+v_i%Lrm+8q}w48|991cLtj{X{TWM1^HSjCyoTu*8~zGoHd=Kx_K7 zlNvSIz4Pjnny#|T;N`I@@&2G}4!OmFLNclrT>EDfwT4%UZ{JYKm6t_*F;Iwy? z3G(LDyUBP@dBb27kw!SzBzOGgce^)gPGKP`(7x64lj7`1k|&5*v6@Ig(GuGaCmk&)O^<7+RNW2tQ|uyRu)O z2el$(Pjfx9-9+Q%5e)(d&K*%{eu!3?90)ep01;1kXH7fAK6_b^oYK;aq@J)?LdoE@ z!u3#Y1u3aibdlcsCQRX{&7b|pNK75K71>bX#f2kYEn$$=fzJWzihas$rM>m>PYk{~ zh+|b8Sqj!j-kV!@1;lhNRAO4QV-tUMyL_rrAcD^1tkm9YeI*2N3yMsy`S?kl&K2`s zyWHg%j13MCUo=eGE4JUijIfilDWow#`m`oIMU9~)MeLHgl4d?;f8L;TF@y2Y)ohH4i44Rb&{OEstzj&ohxkzs%mUcleUP8e1nl9_}KZPE5F~X7R^>{tlPw zXP|treU~?TK>VgFS*Yh7t`()Q0dKT9t2tv2Wts~~dFmzckJHJu=v6^aF5>%x**2E8 ze~c!3`sXP?HTH)G)y2i7N8m)l#s-;bEH);#S72WlK#RP>2AOGR>LwYQ{XQb0O12b< z5{pXGS8!1UmHAk`f(@YisP~UtKw118g&Cw1IvB?NawL##p{1)!*a~_X@&|jW%WMjG zqiz9ZQ6bsS*Nxl`=hO{$da>m?3!}=t#!;VP;TV2T|3qVON$AIC;H}hdM?O5XYU48V z_NIa$$sx&p7fzy|vaDWh7TR|C-Ji9ViL8>tg3mG?|GQtS=65>cOIaBf;5V!?!)s1= z%cbW4cH$6N8ll529QC=GqfW#55;G|onZC5yB<`xa&#ik=5%AqlML{eJ18Bg-iM~{C$i=SqIgax-;vpN{NNga1G zMYjdLv15m_uD*W9z4I061Kco0^{6f(m#$VTAWInW9qjKnUT;a-UiQo$r*Y zFWOQ}#auGsF9=m0K=YAXh>^Q4P4uX-p!yqOXlST-Dl|4KjEs~b>8W}?>88aitlDq( zJH2+xk639})pkKg)EWMbOqkzIrOg@Dh?^sd;RRQ&PNQt__(#l`h zwngSzFyk^ZLf1}IPlP-$#u;YFmS!Y~`ev@r5we9n?RAVM>MLu2&1yZG$wQUH|iHrENP&wt-;U|6XA z1BWYkq`=Z*epg-oEFfZi5`c056=$gEe}f}G8Zq%iq`)qxqp1r_-Cs;H5s#ush5<`q z+DvSuoHBTa*092Q4-xhDJeZB!5x2F=hPx_PNTvUkq|dI2`}Tfg2VBV2{^o_`i*ZY^ zx{Qf-s?aA2W|}t}uO05&x2xcoW@ihd)ds!$+3c5q9MWD_)^;IfnW~y@6Z*VFjZ6t? zD;~O>r^m;O>sh8MI!oihiS{-RQ6#z0?Z63+&~kUR?AeetdvgoL{V4FnW&Ty%&!3;2 zKgi3U7L|SP8m^%wIrSSi{LS~>61sb^-~I%?NAI}3A=%upU!UALRnyQ5%ze1hlr~<^ zPTkLGY`ftF6r`F_JA4=SCX<&Bg!~>+qgLR}gDmefk{K&IJ8b6(8=pg2_f4HUzkuGS zjVA>+fB$C>8UvF4LpHUhr!)I4B!i}u-b%k4DpC}`&_7{6=KSg^sZ1Y^T#gChmEYZk z^8gZchAhXq^CuCH6)3VWZ> z?(y6#E(#5yrq(yQIta~?%pa5BamGsCk<<~rC#tL#&I(J_@l@QLU~GV|EH37H$}=g6 z4JC8qVH^p+=MKBnQC(U`3v?W`uo~5RWJOOaK0rYLD@dsVyBs-NGP}k5Ayqk=S|(YW z#M$_0CvwQAznAv~#nCnv2xXdyuGHm6wYtM%fh$h*BkecAa;8!Wo)mYy#%@N2PJ z8n@(uIc@cMYGAT^YHPJ@VHkgq{&Dra#}V{f`jO_-9ghV$b=qk=2yw%j{5Z9mv~i&^ zskBbb?kThVlqS_zGbkGZ+m2T~@~ImAIWc0$;Dr27UfOv;#5Bx~|67^+wbJ!`|lSbW#k@SQk>6D;~3pW1t1Kv(uSP7A5v{NFv(tYftRGO&uBJU zqsxIzB~VC6rKk9JkspD-zfu7%IL3N@MZ|~GoMw`_u#_duNZIUAKTSJ47oXM2%zYdt zS!tWHPKNTIHv3Pr<^P`8J5w_=G8UEqTzBh|@5{e5ZA{@Y{)nRE;)ANb;j&u2_C>Ml z7g1QVmWU>ss)QtVF?F89bi4|IyV^XRJp%Fy8&mFJJFa40Ig>g;&N(mz{nd@_r(SJ$ zLUz4Wf*09sn*IQ5L2xuYUxZ{TTzb?TCg~~cxmW=O3NpkjEO0xX*0VP=?l!{UUZ0ui z$YV(8#MR6=>aoU)%aQO8hp7d$LJG5%BL=hA1Z~aUG<#WFrfTb~9LN8*7GvjVG`ZWr zw8T32iukt1xIh38U=9YS|6u<;J2IhQW=M_Sb1(pZW@<>FoA@I+TJ57nYHaeJ4&Bm# zD_X*ND=s+;l%CFug`2(mO+{~XCsi^^p5%VY`=T4Qlcbr=$AE2^jWK6WvW ze!u)p=pYO02YRg*cs2{{aF!Ml?7hOiDe8fN3zobH&mex;Dhehj?vARQ9J}D%a_mJa zA?~N%v-Dxwl(iH8zoM@(vHs8RjWgAEoWjS6Tmn-uU!Y+7y%qoqk0{J~!5tY@tPOFJ zlmu#MtoVRnh@OgEE6A;;BYiAhqd=D9SY}#Sf8>5`{@?ERlFgmSj(!{*DBNz(U&6M3 zIuSn=zSGK>d0O@Vttz8WV(ItY2GRV5dB0p>JKg_pZ+3TMhp$j*==yV-tBV_m2QqlS zTi6jSN$iO@7?ZU5hXhLhaut-l-;#}S`TAJddLBgb!gO~%Gs<^vK+=K)@qR5l{{!>@ zjFIPcu?X_5NWR7>`on^u+1ckDP!e<%5>%n*V5LE9vI$RQ@Z*B-{g9+kSlH`B9zO@J zeYe9Pk-@+}0RMRt?sfD)(&Y&|5<)Edn&@n=%Cn$YOPze1Q0c0LrvjqRgudx# z(+S>$1C)rHZ~sw0h0(YMX&eQD$oYh@w*b$DWR9V^6YA zBlLq+$&O_eX^wJ;=6v|2CaW_Ilhc2DGqS&=f?<~#yWE47C2Uek+1oWuNbsplwJF2{ z&pyp2nDhlt4?n%-8^unfq;QZOMklxLz#G%8gQxl1{Z$R&<<^)7+{l<}(B=QM+at(g z3jc5zdh>cLFMq(j0>>Zz5w0SOJVaPoS$nwR{;)g6P#VPQ_uev)>b|sex-B9?)0OWm z?hKLE{{@@hfjzuGwHi=IC%`#ovY|KKu4|-w{Hi!^|@zZUzjIloeTOl z2~S{MIz2ZPp1AvkUauh-7h>S?LXk-$6wNI68gZpYm$D;D;==@|eEzd^A_A*To#I^8 z@K+JMKrZ+!OK_ue@s!vopSo3sql87-AM_F+tS*5D@j74t4#I}@2dDSz>$8#T-XAYz zuo?2u#Y145ZjWx7B!Y*A9MnJD-Jv=zs}2n-NQ#=!`QxYrRE$S5k(ipSf|ehl}lFV_E7bb7GyqHEIc2PC4SLEjI7j{A>^$wj}nV9=BQ zqi>mJedZGh28yKka?~^b^QI)Y2N=FxvBt)54>)74=f3zrt+RU+_1XJ-3;A7KL3WVb{V_;h@BO#$I$v4rT2IY8 zlwBCvyJo$cjw@of7CT=^8*H><-P@oN(`SOuTd1h10hf7(S+wix#xaM2PquF+Ld!E! zuKb$+(PEou&4XE)$;q5<>+(}smz|G$*$%sZ5yrCAe!O}>_=HiVraOkOzjl{tJ*0B* zkvQ*9z8dR2?J3KL#OojJQ5VC0tqu2-cBe`rx=&iC-F=;umToSLN5C6toz7eKj zXz#9wQw_k5m3d3EO5L9)pgy8de6A|oP){SKCWMu-C!sw&&PzMw#0E)JBt3VeK0T4W z9TeU#_kGIDV31!_XczLT+%UnbraxGki5dCjYL-S*>zgbgl*oC^GebxZM)JyG|2ItN zm?%lSQroKTrH-1~$UDp3$EVqvt#rXE8u0xz5wW5k=%wh2A+T<4M5(r#mm`N1^6Nhn z(`dHgRa|Qo5rz+pCWZ3z&=AYwj1QEFd0o@I$^C4o6<3$dNqmiuk8F%05yvC$%MSJX z-F#L;w*UgeSSj=JASv&~;>k~i3w;9MW11Y;rW@x*BOD9f^Gzc6t%D~@&3U5Ifm-kb z%-On88KR`k3;bCVS;#CXx72&u`S`3P*caXgN zEnL=fF)$!mw6e79Lxnu0(WAs%f@IcQ7Z=Z~V||H*9)|6;B)q@<$QDhBl7wFfY$zPSF@v4sjc>ck(~p)7dyak2$xpu(EM0zx~-WN2j3Ubafmnf+BL)-DmnPTKZL=}$&(aIM1W5|!vEJ@oSfb4!~Vpu zsFyaGvQ_88F1N>kxW6wH-qABIGm(14!gwOnhxk=WLZ51gynkp2URfE#)8M)dKP{J^ zpqK^$fXXp;7*E@YgYcVqa>1rwDEr8jqJH5YTIDKWu(B$nli>C)bZ&ijmD;i)Mwem9iRGhFlCt-9T9TtwHi|GU=ZBO28P1n_8C+8w6W zu(p)f6Z!j{ld^=hk09zRm+1&NeFNY5Jj{A*zIgNaJjlAIIwOw~|9wzq8kGXYPV1l^=YiOo?n$2;U30+}S{DG#}#1c(y0Z#$YU`H*$ z%OBi5;TDC0O7?{v=3?1%ND)!kD-%iHINVEK>VwAWzg_&3S2Bu)+^&vrm7JnOvoPl7g}*@l ztEebl?2hR)KQ=AzWPhu-GwDkr;GO=4!P?0X4zcz}Zp1Wl4in8}iO zwLVVi`{GRsdTCM4!+}dDbV%ODC7XrnuKN|6$@9HmW zkkj5liS9aHq4$|b7FUwz)3T?LOT`(0A~(~?9wD1ogn1FFjjK+9|ncRIQ(+& zJSOruIy`8i#{)FMM*Y;y>=gM{Mq7l>Pp6IBz7TI*35mgP%E~c7a>DMuIXNe1=z8JV zvh$CtNE~cZCjU_GLPt^jH>m36+5_s}>NXAZ-3aQ6BqBGSP!p?WTmkEjW{YWsqeHjY z)9Hu6vLBPG3s38csTGP^o*Y?T=D55=ymmXRx^Ba?Hkyqvr5ZR94aL+$lOo^0V`OI} zO`~7<$(DZ8RX+StYeW7p@ zvP?_7U6Z)XqsHr)+=kic%VbilNLEBuNW>1*quJ+;H!U0sFMl{oV-x--XL7Q!knR`1 z4ZF|0WH9kY#A3lQk(=mNpLtnf99g!wol6MLa^40TW93w^1bayE1V?&BIHF6*gG4NJ z=suqCMTNawuK7O@OG`lb ztdAcrI@a&Hy^SMSK9cnF-A3M8{?`$mbQ38fSuE^{fwg8f$6YCwET2mQdKGF|2Ol5$ zjhEX`Xaocxs_aMHe+J(_l98SY?S}=W4-R?se2%$TC@ABpLjH`&^jcj{oRDQ_v|oCF z<5ZTI#9DC6$urEYj`)py-)o_T^;9jd z#7hEA`VW(u2F&+C)-WI5Zi81DyS#Z%%}MFLl1$^HpxI=vOwJ<*IaeE3v$7F08>CBT zms>NG5(Awo-vJ37?4qepk*trBR`UZZ>UoFaz=|~HWtOOl@HT&SM8UACl!#@x7(Nmt zp=u0TrsU0xu|Z}*)pDy--h00d@o_MOe?TA}le;vu1HoB4^J`|a*|k|z$m>iu#iii& zp!zlff3IWNPt{z>l(qCXSiu+^S!zlpX^FZ5ekWN$d;tMy8<)3&LQ5jdWSi-r zcSl#w`a6AlU1O(~riyflE8bb17i!|BJ6w-4{dRH> z{Un4aROtPe_eTe{x!H8jx3lMCdQH&dfE7u@Sv{fd!d#Lr+dEL2c`wz)iSGj7N&V;f z^oaY}_=@%<)Df89A*WpVjN5c7^z!jAx@U78-2I|ho`Ce@U&1?|Z%8*Jx$$Ue6)rkDOtmB+#NQk zu5WHWMT%U8#Eh1{-KL#>VVSWmjj=AQ6_en~a{AY;D^)*T^d6#i73HXb@@^KLrBUV(TJPeX zdJ4-sCly8SBzsN!`|OKB6U84 zj@S(6w_9!7^f15>9uA)}b9i-hOa5G?s66xFTg9TO@T;Qt0<-Ww-Q4VP{ZD`Jt@p>s z@E+$$+g<^K2NEpo@h!OgiOgd2yJfBo4-PW&9*>vR`r|ie_tyf(FUaW5F&Z=%6@b?l z;y1Z^e%`BixzPbZw^H7n$$HSzI&6Y;*#E9`*m*58ba{vhDNp3EP?u1 zsb?DT6j{oodZ~fJ2hI7$2nN|#w`PV*GMEXk?!CRz{BQX@PI>P~;FH|?h||8Y#@Mhl ziyV|`NtzSgn9`57vyyjL)%J@A%U?a;d!&c+uj&~Z)EPb%(yy&52WkhJVH+2OrrpZmA>*wnO9LGJjZ?}|gN98Tc` zBftVL^u%r6x&0PoA8R*mMcc0LQ7`sT%X$f94bbrc^{OpN*Q?-V6R^5(v&B0T)xUle zq?#~O|A{3rXf*8FxbxB}5d38SD-4E4&>om%gkG0zo5s8tMoR1XWd7arOt$OiW4M2M zHkHt|pr4VGXWdE-Xyja3!)eRmAlX1~z+^14!N(mVs5HPRA|4(t{Z-kk;ACrUs}5#j zVuCfPGmr4)7)(5npJD@uaKt2nuU62S)e1r$Q;Xn(!&=Y?j5Qs;3=EP9!#H8fuxPyv z3kkgx5zCa)!A(Qa$R)0j&1q~!O;WoV%82i-NPyCKT1{u-)E10@_Cii>uOD!4x05tb zx6&-!b8@OtO4TO@ljTPzWgcY5=!drZ3mGqn-OjwmGq0@K(-#pgx4-UqJ44`g;JDmk zQ**?JK1lX0k>GE0<@JX+o@*2YmWYx{>?Y)j^62s~5t15hd>xVWLJJ$vmeC0+5gp-A zM~cDK*xs`ZbGR0x_v~qP{l{&?#}}Wn?+MI~(Zgm9h$ieL zh>06Px(#+~RUfPu=_P%A$%(!GN;^WOVNF$;u@Z?{s3bQR+}D6S2S77l?R0-R%2hiP z)aI1QqY@+<7E@jC;HFM#|61j8_)h%{-|qKeD(OH#zrV7ZW>O~%iBeWd!W-jOU2~r! z#DH4jJ$d}S{3w>$%X#|q0^nlO>^r4#nkCmU?APT?k*6&$VAR$Z%8c>~T3N@XELrEs zoH8sFm1H3vk)yMu@R*<%Fm*{$rqFHpKHH-++46eHi-XPvvS$`EnVMy82N9o943wbe5(8@=RvedJNLojdt1Q9{2x8| zA6?G{yE=l>>idX)0x3M_ZWY4WD}%qOss}pMsU-#n97b1ab$~-&17r97`#_lBy?$SR z{}z+KcWSI6qVe%YFs7pe*pE<9IUx0~RB&jB@o9R$lp3PSP z1aP0Z==Q*h%FD9>3hH>u%2CxRoGya#egqoZh@mO8+c)U=XWL;WJtD~c@WPRGdE7A{ zQTIGlD^_OMS=h<;-^a%wa+O6K=A;)f zWvB(I9b-5)JZTq)BJh;u2Zb?puJuGS2I+qgW>}Bqbxb8laI6imM{&tHgZ)OSi+2+S zSV@`9B>E5(N>hKD_t4emBUtDg@AyIdb_9hQm@af1KWx7gOi5&Ph(nw$x*Z1<@GIsMk zOil43&kln6`nZu%S_|vos&dPA>J6%ZPk;q#^K&e`E2$uDVp2B?dJf(v;=bW+48kRM zG_!oOzmQ|`M7$m4gq`Wt)gY+%?VpN*WP#6peFK-d7w2C|KAs7D-kYZ8Q3A0Q(k&y_ zRad92-xub8`IEbitdLzICMt@l^X9Am=?&ci_eM=U2jDNy3IZS z67Hgk3Q;w)UwA>*eIB0zc6Yz{8Rl2o!&kPoAOR0UEydwlb7;?xM4LQnO7~v=fzgLZ zoE59g(MdjcU}hcr((jb(GV3q++cR=aBY_K{{{qtjkiIZhSfO}3{%+qK4ic}5gSC~i z#4~72G1!Q(xzKuEgnLCnh=}kxRg9R7SYw;a((CdT6M8xs1u~6#S2x_=3!RJUvr6&E zp#~)-{pyJ!daClc@F@dyL~IuOfRzLmpwP|%>vH+&bK1JctlDMwJ7tk(%?DkL#c&R5 zb;H9Nad_-(?9r@@^HWxZqNS#Rk~Q@KRxg%` zfkwH377wXW{tOkDWH(=POPlS>u3}3RB-5?LM zv=pPLQ7P6eW%>`S znNAkdO*{Adp)oo1gM%I*7-gGF7WZ}Hx9`Z|-CKdgTFWgPw}+G9m8l>Zc5zpiTM(F5 zAJ)g0O8Y5(n8F=$NH@YKWS`#saAP=z+d$a{iVLVtXaBYWtga|b2IL*=_#f`j~X3Bj5z$73|ma| za@WDH!OmVsN@4b0;nASdcL2bSmqigbxs_ie@VwvIdv8%Z-*;qh0pNYpJ-$^P>ZCD?V$*j0_>0|jm$gWms( zyAc%1OH59t-Z+?R6XnM4va+H9uyi`DLqNS80c2j}*5?!HFfDf>>MFmPU6V!hek7y@ zWJBG#;#W$#x&!Jxd8zFuGtp%*f66~KK$aqvFPfXy?HtG19ClFjVVN&ZoS8BZH_b+I zE-XZ!-oEZP`kVJ(wu7Jf14$$sfu}_Ut?~yi_ij5j0al=7cT3KYJYd#hP{}J&ML{tNV#u zD(yQY+_w8t|J2IfV4vgLp1DAU*<3tp#VC-hQ;^hUpnWr{m4xOo>+&TA4^-yaW03WZ z?tR$P6nG<$fevZu6N=}W(o?BUY$5NaMkGH|chGGWa@0o@GIo(?1vIk;^8>WPcd5Uh z4sv_mjim_$-DOk73S4iR%Q*Gqb?R8kL2x=1Ei)CRV{n}{cqAkS?x9alzc9kt^cdBP zJ_IShn1f_}#tDD7x5GIfOmvL}+I;yk<;ESV5jkghp+h|pq=i3iSzgxl_)ttOb?rcn zF?-C<@~Z*)gMSPtm^!8S-d_N_OGU`}|GQ?Ej7}aG6ChoF4YAPnTcN4RP=GxyGpNN| z)Ng-l-~50__&NAY>rklIb<6g8wSRl=qGa9Y=Jy8-ynuh&B8t8}SSQY~e)FFMcMF{d~G)=Zt@u5-V$D zF$Zck^1)gZU-j&p+XES>*aY?9yYp&(cs_imQMCebGrWtWlu{93laCiS&pYJBUz8bc zsz9V?V=a*Tpd%o;S&5RbCdbOAK6rhWB->r-q*_VIy|MuFV(9{#w@h=4R2TLkhpU1(dnP0v}v5<9B#v>d-Oj4Ylt~cumi#lV%N+;n zpzMN2)+=(pN%D$H(NE<#&!Mr&mfiW@ITFO|eP&ap-$-zUctFO_4g>VKd2C-;Fw+jy ze6njou7Nok&EzWP*V8v8BTd8v*z+s_xFtl_odS-sdy3^Fj!`t+Pos2Cb&}7M{x6a& z>hB?bcREWVNr}M#g@@iQ0OeNEnk4>2@M$%kR^U@6uihYzRz#VYp!<}M@Pf|u@7R^f zTive^Ahno7?>P@CMFqrA^0+y%+#F=d&Nv{|AF@d|Io0M zh`D-bQ}U;{^z^ZX?oxGz-n|ri3?sHtrcN6+o#%&|M45tuN3VYW!IoX~+ zCk`WZAGU@Ky7Re+8;b1-n*3FjhrzVcQjKdnw*+FVH>H+_1}dkme&o%udTx~iC)gr5 z5^~UGN!=RHm@b4$r_LxUBGT4$CnW}%!V3+odXsgc!ZJ$a-1+aO_#$-Yv8HjEC0eAB zvdnz&L1gWXr$?e?fGrqHE=W|JQyLj^YUV0Gi!c>Pj@V?9uO8ExrESPJdw;b07pxOj zi=|^);{Q?EE&;Hg3Jn>mtUW3Xr0*rO>U`?-gm|-`ahRo@^k&a2E{8E_Zu~h)nc083 zY5tI#`67)U$zWAMZboYh|6Dlkmgt(NM)7EY1E04P{PV>$O6rC)`FN~9}E=ph=sK> zAEmAJUz<*O0$HV>RiDw@h!;A8U(?k7K??s(Sb!0Li=`YYkx6Xwd`Uv`Y3E+V)W#;! zq%a?1jdGfX#}#pz0#I9kPup2jsqMQsI-LnFW9qO>WJQIb*70+-aX&vY^2bqKKt35m z?)3O!9MJi`3qWRDU0rdw-&AUtX?q6AqTyqQR7`wC=bc`j4mdlr)BpR?+;icv3TUSr7Y7aiqwqZ^6&c zx^A*^-jf627tY;*S~l?nMEKp2Cooz+<5_Qf;t~mCO$HT**P4THUY{P}%qBk4=+pEK z4oVI8QOh!}@TCZ%+!evWI`11^nWY$xrzbgh_b}sO1cg?hm+7=(WN=pWCXXL$O?%(W zr)(aTMtxmnwOOhA_)oDX$O5~QT0;#s`lB`FI*ZO(M?gxeGcl^ThzxBuT}T@Ygl_sSp#@U%ArxLFontCErgs(|zEQgg$h83(q!t;uK`CaOL{g=iK zP5^&?y}Q$-rK8)!2{AfKBJW;zf~p$*x{-;k5_5ab1s> zuJx6T5m<;Rd;cd3K$7L(kHpkQ`{ZVH zclQ27!RzMepR>deY4-M30XT`twQWU=z<>3$(=zH;*_(ZVz)1nMr0C~2ld6ZOL|vWw zOR+mt3bl0KRvJ@viRl2e4xMNZZ0l-oFBH2RfCaC9%e@vfBN#tVWT#q(?9A;^gy*V9 zPHpeFBNd4Rm(exyDhd~Sm6c8y3OBvH5VJpEE+*OJu&+vy{waNm)U-DUsw=op+;jgI zel54d+w#o?i>c9>amx67lIwYRbKHoexIl^Gzf!Pk7uRYs%P|3)4<(|msGJ`6YYO!Q z2QmRO9NW**5dzrvGV%`1V`PII^?UUA{!WEamoKK2=K3Alh&&8egb}zZyKyS#DFuR> zUuNme|BtJ8jIKNSx4qjKjcwa#Y}-lW20LnOCyi~}Xl$dg-Nv?U-e1pipL_o2yvZIT z@AepLuk~GX&H0&W_DE(4wX12#cP#?2iL0oY?y@yB0&mn3o$l`VvUaq=>bU|`YWYxb z(Z(uD-jK&rzYh0qP?N;_{Z^pdzE3`w!wW1d;r^-Jy-V(q%eX_xqy6SkMMWANAmzAD zQ&RC&Uf8rBC8{AUMLLZt)4iAGq>49S_Z66jhi?)FAkiWtKO(~X%TyWjM;+Q}()jo}ioShGUYo>=^ z*Qx8!qI57cRcDe)SQqX;C*t)->mILjvtmfT;EmaBK_0e*O(Gsrm~4K{U#v+TIk_<_PZGm zRhVvoXDlIaV~{(L`taBkb`#@jH>Y$>c=I0QO32O*=5{pAt1m#~U%TfY9vMxkpF z=l*ceumtZs2b=2f!`)u?Twd0=<71RseapIN<>^z~vR#6h>(<(R6&Ov;i$s4M?u_%R zI7xik)iRZeYWO^GtTx^NLtj^@?o-G9z`!Q4{HRkqCYD}DYdzZOJYn$bfKyQTQXOpN zCRmPOj&ph=gfsLxfj}p@epZ8=`tc;izj<|KU2;jb_UpyLtF>Xir8sxo<_>)8_;Vq5 zF;*PgtUmVw+X=RX=q8o?F#AE40~^^Kt8HdU93__p4V7FPWQkR70i-<+x5OYRQ>=`^ zHN))#Di&bQV&>rqejd~SX7Gn%gX-0MasjrKof~0^O#7On)xFscb-lU3>+t2=`$xSd zrz*Kl7JJ1_FXlTCL9R4GKv9pr@-v=~q6qIqY^ZW^1R1WaHzbJYW~_?V z_w~pD3m5b7O&D68%zB4A!3Bn_=X7vjU|sn^y0$3n6Yw;=1=wT1d^|7E@eLB1EKD~t zCj#Z73JSk#jZ11gr|c_q^~pW&L`F60diixQ8PX@tpP`|Hwc-fr3tRLX?2^ahz-S=q zO-+r@(u2JCXXn7%Hw$l~V{*LgJIovo(1PJj?X58^9S8XSE=APTFwpBrw$_6NwrU{3{OfMaa6W=LZ)f1NKlmCV0x!?P3Qi zg@nRsoYX6<<^Ml7{yV-&j@zRk!5du@YZozl?ae$-ARDomv*5E-wSS;C*$R%@2(Iw9 z%}g&+T6Ww6h=H^St}R1D02qLIelVHV6JeOa$++c3JYT6d93k1)cd)T{@Bakp<~*dF z#>;DdrNqFYr?IJ*D9t4p>;{07;3A_vkx?VB;{JTwRiqmlrO5EFg;Wyh8xsQ5!e!<~`A;}+vex1!HK zeiNk5a*E{gnStTw5fA@8fOcu`#s;itp_WRKoi7Ro|B^OLg0#IT4Jib|DQ<*QpHy*(x#^26AqQW2H5uYT{>9g6oZCCj4#Px zg~YZtM~U3PSgrZzFHSZy`hYd#)mmcO4Mg`>!3#x0%o*_-T^O0A^pQw;2^eAGH2L!i zvw4<6FE<70*6~ye6cDJ;L?4#>I;Ckh%VKn9BPK?7&~%ek{oDKl4N@+C7V%UaGTGv; z%6_v|x?eQEa?bni`(#SMo;GCSj9^^qp~q4{&hxy7&un6BTwJm{#V-4nTn0{Bvb#M< zQlHW!oB0MYjV47YKJoJC2J>mSGW9%nfUBk%v4Xj%wWO^K1sXBC|JU5zqH8XC$>g6a zF9SZV`rjQxg;T@Qu4}D$C-rENH$-HqXYk?O%iwJt zh5zm^>z?dIP2R0Fdbf0S>YicIMO0ATG!pzApC(f`+B?i!x=`_dXbuJLeJXziYE^2B z$NI{_ni;^tRS=fADp6q$lhCWc-@IXBLWMLJpEk-}NP|P5X4aP>rXI0b>s44hT^QRJ zt*lQZBt1Dzr$!+e3gfQRa~lBby>4t)RybP{f|OijA7J7I3T;MEcVK;;1<-^s)dnb% zIy6xa%&IpXr6oLAqX`5DB5rmGUCNvgXTZAPE$fEt^C3H=j48+l13DncZd>%QyX>-w zrp?#U#R6NAaWMTak+A?>O2|@{j&@Yhc<5g5aiN}R`{_Xc_w*+6_V%{j4Z{KnpuUDl zhfy;y4#f2hUA@*bZMK@}ivi%i-My*b(1N!Dhst~2<5eQh9pxo?(W=+^#{nucBpPYb@^urg}L3#T}QJ{HiXD5$P+HV04N3MvZ8_5_yMa}s)}mxAgNwJ1v_=&vIc z!l7@YStP?A6&)DgnS4zqk(Fj-{SXfll`rWyt0LS9Dovtq_UTJ#j9Y_&P6^D#xy%%4 zfSvcR$8?O(tkMFGmdxRHiXPoAo=&+J5YJ&W6;Y%VhS5T!>}q?fEnzg{KNBu^ct95U1&Tv>E5Y!@fM7a8yKTz&KYJNCkz}1MB{dOi8(nXh0rS?Bhp&KYO9d{-{ z6PtnYh?X|X%$ypkqP2Oj zH?RbrZf-E%o&4CRoU0nMwbH+2JY|DhM3l7t{)~<$1QY?7hMIk~Pvx3h<2iKE_?1G6 z7oVDJ^eHJ+OX|wvlAu9X$T&~Ww5wB)pou(m!iMiA%#5-CooWdM563?>6uDnA*x?k% zaR+E^U2OLh^ziUN#=r;~ulNE0lj#O0lCZC^jZKa92>xX>uCG=3qT{b!-+~*5>4pym zmQtF}#H8)H7ot%6(Ehrw=-B=aLo4Faa={f3s<&S<$>`@}WgJ{W=DS~XG`C`{P~^1H z4FKL(c4j2AQCZ8?smn;>IpXI)0d%I*vwO<0W2-V=5 zQbTj2@p`82pM_?bB6D=XX^|Vu2?V%hGA`b+DY$p`yr2(F`;M|>iFN7_ zSXm5M8WGjx5kN@UO(~Kg&|Yi1__IP0tj@s!sZP zkfDU6cHKw2fBl)%P+lj0a|~i~Mfb)2ENNnwoYlYn9VABFDv})-UtUY224j=@wO=Q( zhEz@C(&A!MQx@hq;9*qI#2jg5kdP%M?3R}SiRXOnd+)>HE%V-z(0tz-zc=4^txgdL z<2%cuHWTFR9>x|_R&T;#a@UvJn*9PQzhU8K~g*9+>b{0X?9g0AN?9MVy8iu5-v|{XkZqxSpN2n z##@h6;{_`?IPkjG{HnXO=C_q1mvIoAFNuf@LR+!ByKse);MbQv1I=eiu(vun(4)G3GHg$ltLunyEmH#*TTTc+-#;pHRV3Ev2}P*Y*e z{fVxqDXoe)_;leW3^#jKs~l*6AA*?GpA3xE4quT8viM7XS(u8O2>T=_D&(A>3$O@A z?*Qt3i&Oc9K+Nul;d%$3nADgi6}zBzrx^7yp7y|31Yrv;3LVC|MMX@b!S!)6H()ij zY_-W-S;(rnv`+uA)&1^D)QXI;KtD@ea5C>x1|cm@H}l6**H-1rw3(Pb?dWKETvpOx zxPij~P}SxD=mTi>v$G4ZXSRwLGiAFPqxN(S%?EJ>dxv*oB<}YjG~U)*wiQ>6cM+AL zU459RCajo`PE-)@pyXlVpX0-x@RfV>s@sLl={;)KKBMCezdb8{(FMR(kLzz%SM^qN z39Zp=5%^d=V#wxo%I!vexV#S2ixL>`BIHpVS({BLs!4>3DVYS4+43`KyyC*5DQM%t zfQ^O{??%%?U5jO!6hhqJHWB+&;Bi`|(-k9p++|LuN_9&{J7s>4;lBM^5f}agR}`pR z*OcZbxZqYe+)Bk^V|8l>EBYj`ERx)v`31Kt*!yf)L9xHc@pXzf{2CE!8JeoAjUdTH zDs8X5`u)VO#agKHF-wLkX+`6;lj#iXKfN}#aFmXpQ8D2a{v zHXtj)6Bjxa<;)ivP<$DvsQq1yUXT96GQ&Q9_lrh#W(K%gpi5;kSfp z{$`R`Ebd+RXjJ|^J}h;zkE@BRicf&S6!3EG2K^XSCC;qvP3uM`Nl63!YIIz%?@}0D z+aHkd{mA`}<)iT61gO=k!f@Ylo7ap9zqAa^u(1bM`LQ@D9dd3@`YAghL>o#)et;M3 z=&mzdXO%_6sD*&em4PNLB6OZ-N#%8(@aJ>oFJWDC`4UvcMDq znlPN|a(9ZZXbzA15ZqX4DU8-Jk;9QE2de*-OH`_W4Q{agO8B5+63z5I^+;Fx-kzhHnXHY40R z{YL7FkCo>~TawMOqoMhD(0dc5%LhIofw9{VvR~C-rSD8_yEk2$hSQfZ2<{KD3w}LRD9&x#jj*m^oK;^y7ot+t#nb6N6%*Mlm~ z(&HCfDBJjN?Fj-KmvU@9PNL$bwKqP(gONq~oykHl^aD^T$dQqVmehxlA}1DhY2&K> z7V#q;G7w4Mjy}1wF~C!ET&tCig0i=Nvi_ZiQ5*gM@mp?k&|+)pJT(LykIfPtVOcwK zl{z{?DN`=b!k4IDlHKf^=scS-6i5{@xLYo3nNHw|u(8gvPH|nMI}%0O3j`}kgH-lm zeOY@GwRW2-L~Q~TM`NE8VU79*XI40W&J=plPkzyjF}FN1s%G6S`bo%GbX8j`80cGn z*(b8j={1>4n8a(YB5}|D_v!AHnZP`IWJ3CYTaI5!b?xkA)Q!|!(AlBr3=Tok$P?BR zIX@)fum>-l3X^*hobS&`Y46pez;B!mM(7A`{02KqACe?iXv z?>27>=U@AYl2mu6rFA$qVULEXG!&~2qIfaZ9cyo*0|sKCq15}>2_U6Vi3KtJco-JPkVo(%uN6VYL^{ z<(L7P5h4f1afeAPoAOGQiHBcG2#SOVeT0b_O9b4XLdYl zLWR!3IEOBEf`3Cx11iea7Jv(9#rkWJm(`&-O&D9Ezi|&_O`#Ky4w|iig z4@5J8FoUVD{KVN};|o_+n^ENkzel-cx}C&$ZHiu7_|5KhT|p7X4w+5A$?`*t6;}sd z?UB~uDc)yNqv8fYR$~{;Cp`FdV5^`D++_II`p0F&~Cyc7j<3l~^xn zHo0O9v;(LwClZGITdH_hm}6kaLA_*`oEl@GLhFOZtQ40m12>&XbeUNa=UgD!l!fZ= zAKyJ8g=<(z4fKL2cIH+cguO=T)rgjm7RJ>pGP|wg(4X@P>al2iRu60icO-0$8RD-G zF8jDu^Qv1v2k2Q#F=^9MbWwl%>uv;-g|j@W11ERCIU_cGL2(@|y2HR9DQ3)a1}P`E z^j6QuxuC=}UwCVDZ&g6FjFsb)FoRz}h})KW(d=1>DllMpNq}jDLnm_Tn4<^>3V5GA1>TX6ldesHx01q_Gqztxe=(-+dz% z(1at-cwGoY<($Zw%I0c^J8>Bz#U#XtWrmj!_7ADGb=sJ_Yd!^$PA{Wsft{{9;xBw} zSKjS>`9KZ!UvynMGE)6SXYMOrH|lUs=bl%0mekjBi~1ewmqr8di)iIiej!6ups+JD zV{*CRkM0q^DBb|V?VJ22uHm%;+}xiH^GIHq6|1rPED&3t%kC<~5c&m))`Bgo^?fG? z1yycmMQL|E5->NVx%s|j?#MC`p&z7MG7c+>$y>8|a^=!caB$SnsnmU;WWs1j@)NYw z-d;L*r~z}orx#6=b);>KKzobt^#Fk)83O3&@Zu8DLyqT#`-{yAN@_82Zc<3e$Is&% z8c(@Y_8G52oc&_!)XyERm)7IvB`kbS_-Hf9p*PXoMFg9Y$#|fF={0s3)iw$J+ zTxwavPKBQayVbDgVvImyG`YjjWJk@jHH?zNjDT zBwKG+J4QFI`OY(zyi0@|mgF#JTfiKcAsPo71W>oKFez%5>+g&4IAmdwaV%Q&)@yID z_s1uNzkd+#PfQroY2$uWw^)5mc?lRyICyV_w(Z_XtIcXszI?=d_`o>JyyOai^Z?Li#5@91x&Mw1< z&S7=xkv+lRkpzi8fx_olQ*lbpqZ|)n7|l#w(x_WZBKUh221PNK(389PIuuj~9y;VY ztK{g+Fb!J*t6}+hBBa)k2BY2j;POp%{a+>$#bMht4CTD~I((XXxFuDgvszKRJ;vV? zL4-{PXBR}ybX!kJq~A|wPEllu+2 z&3rr$dgc(fKlE24Ga0`72uf*rmBjb&-T!k-oDgP)GYFD=#dC@&NW((sa~lFvdB-&w zMNQod+AZeLc)h>BumAg}LTFwkzv^bOA`l@rR2@zmLkHt`Lq$u=Yq z_fT2PDV7r&>I+2|77%V1f2;%mZ@?TLM&yp>G zC3Yvy5Iq#0cT`NOzzUj?(U6=Bx{jZvrPnp!ydn)^VYsKF9IS&phg+5)rtmw64i4tH z4RsGDyls6Rb*>v&5?!Y>&val+zxc1>uaf&*gtNb07CWc_-WD*zAyn$xKkuX+xJ2-X zzD{G%@W!L=*p195z1Ga3DW3fXu2))HxP+Ld=Lm9%4XriA&iK9?Yk}_db=EtF_XLt} zw8c}I7DC}IU49jdz@^Im8iZjxRAb&l@A6qb+%w%*3MU~Gf9hO3$$xRw(!$WC=`t(q z?Y=*_a@d|obaBjt{_+x8SV%2#M_T-9vHmO=N%a6IRTCRV?>htBfT8i%P8QCQgw`OOGKK$PR~r_J@MYOkoONoc@TKi!Xy zrrShA4ARw>b8xjURQfB2OHpgTs;8P4lkQ>%dBhO61BIZvLPLv^sy*BY8@MeEGsYi$ zNkrQ4L512AF9&dbf??8><(Gi_L+itg+tIYr8<~iE;@TVX`3n8t?%SFXSI87ujwZ&O z$T%^t>u8GrGy9$$`-L(GL9a0hn}ASkd39kwPmSk$c^xMirsf4Rp}=2)=+iDTsmRaxF>d>XSL z@-t&8Oc@%QFp1WRidj=)imI<%W8%aERVw$|Cg^A+j0KtIHa0^?Y|fh9rm&N0^EZU` zyWuK-Db$D*UPl6yh~1_n25YC<`SC5B|+p1nZzjSldXFt@)9KeR{k^LoiSc0k6|e@$Z|G7?DC_bgJ8H%sOK7=P9M(y5$q%Hf zu1QM+Y1q(IW0hmI*s4W{xuGvSHyaqZPCNpvSS>CW=3%0ZN1$F~Ozxl6=*ik6{ly8T z_7gK$li1Pp)6!B{2h*_Z)>V4kkTTh~DnuphT*@4JmG?_2Aw)cCS)}pn>V>a)XExj0Mpj6dn!ipE3@OZN#Dc)zwyD;I6giW}Lpg??fxsy? zYWD$5dWvVe$CgF8goiF*f#9tzW)7NqvkH}wLmZvpp!s!VDXgFN^bGm*4#m5ILTH`V zF81p9~%;wNfiMIaT~yg-5yY{IM6&d_)mm~0kZ-`>vL zc@2aHOm``8eC-WGpRHVoqf1-YWrd$b{YT*yw<52~6TD?jL)miyX}`0JJQ9@#Tg{8bhNYgGm8j_&C3-#9 z6rx=mTwIoR!LUcN~kiv-3uCd$W1DsJogQ~{~6P8h>6WeK>`Mu@s`Nd>9a zN;x>Nk;5)2lgEZqU8C$`bO)6^aV2Rs!?>q%vjkgxaU%=0E8 zoH8-DAx-@V#(KgvLp>=xRhg(`7+pI|rE?>fcN^gwxM&^dN8w;dpQz5?OtU|$l5m>| zXN;%6kPMk%XsxOddcG@u@nw4j`ziEArpOvtcsSqU@7=1gZzsz&DCk<}C3ID)bO=(%sCpj9I6z2~txWLOxn1blnARAgMabnkT+RA5G^w-8bp-|i=54gHl3eLoO z)BPG9`DLQGRU;LCy2;mpFEnystxdS|Ph&KngPCT(0_6~Dx^V`eO_rEgbj=CvV zG}VB$e?a8GmWE>+IoGi0ecDe0aFq)>J0ncOm!CCu_ZKUJ0Wrqt4EJKA8DkkQ_3#2u zOt)e!{?01*jY3-MIIzNhB%@!AxZI>}G%K>zVPjornomljIfM>D{Hl)vpQT~Q&RCTf z=oIp3E^K z1PM$lt*S-Z*D-68NrOr}xwlU}R>o%$U?Y@p(H=6J)vFqm^`^a~1qP$k5V15|wkS%o zj63bdWET}?ve=8em{tygCXof>$`eA_sRdTQj0dwvIFVUG6c?9jJw_8GH&<;9#&EE)-8?I!+F8=VrY*hwNbKmHwKzK zS`u_c=H^-8JYp;C^aX~F2^9Ip{>Pb1*#nNnBO1Sjd)RM1d&Xv{o;&}yk(h@z-d8t) zi;fMl(mG35QtL>YggYe&LIX@^tO6!%rbJv}Bo-MfcmT=M_(RHAIRvvV0o9u!Gt*mt zeEL0xP!OIAi?-qW0T3W(b-j<>_NxG^oVU9pT*x+@7Wk zcB%ev2R6gPiHbDlS=y6t61DL(e!s_M)2?76d@*qhO#>3q&_?9ripCYyNsv+9dj(7s zO3UP+z-hj~D!Q_1^M}1Ejj5%D)9o#Um!@hq8BkQn7~t|sqwo+Ml7-4j@36Oe6QcLE z+-VOw4~%YYCV_}a3^8^!hIp0~ zooKc3F#8YlH0}f*jE8?)lQnW4g9%`=67}s~`e#pLO>t_I zHt2BuMF{CS)^ZB)#v0G$FIn-+hJPzBqJ2AyiSg8oTl%}yH($%*gWfb3G#T>zASr8k zX$&8iWli6u2-WH=;Bkr`E=xNzeQ4<|H|;ZWt}oguE4l$_5VfwpEWp?sIv$ChY-UnY zSC>+S(z-H*>FyyEZhmpt;}<|>|JsiuFsWc4MW^t$7Ap+sH8xtI3wd%R-s3s@ESHU8 z)8a!`)#VUn?wI~UJoX*nFaYOb$OB2&ZG4gy#%r(ai?Zsj0`4?@2wQSJ0tUPvp zEMqg%jy*PeUArPBTf9$%@!1sf2bt~gVi#c*-cwKq+=^m9B9*zxCf&ZXCnW?q*To{m zgc$T2XUZKeKxF=pkqJRgy}j0MTao6Qo)+{sGXheH7yCJ9Ja=1Kv(CwLfy5+rt__+a#%!c3Ut4hSUNXD_{5pxeb!)J={L zwa#JY46*MLyM~9!Ur!*1TA*(oR|@tR@K@v#!@IkuRYa1zTri;A%`V0#5l4J~URiJM z)*Q~Sb-r=Xz@5tmp7mjM&3K$1Zpmm_{V_@k#qP|slF23m?xhO(?T+#aMx+$sC;3?? z1VLFDaoOWl*CWp^URJC3KIS&OS`Kh5-1W)}96x84cQp9~ksM7u*CazieTHctf%iPS zpg>}s^9fme9<|`R6HF2|va}e{QD+aS!RFT=;~Fn0=^-e z@A(Op=b7iwkrPTTyz_*|NV7w&}_`vQi6dV$C%vV+M*IwTVx} zfqu)=hTvmSzGYBjn&$(FT7ilG)>(YhmxcO&>+Ayg>DC&dY@C#bQ@BI!E>*#=KKd(K z={T)fqTDC|p-pSde|lQlO|B4C0BRLW$3gk5kU6Ew`^~x}baI+zV28|GwXoRO&Uv>W ziha<)Q|CrOYkpfBEacM?pUYf}#0p&G&{8vQORQA5i+ya$b*9jb$W*MoYX;^CE58)= zp<5WK6QYM*KBOkS562Au)c~taa}IY{Drm>BJd}ConL8}vi|`L!>hKtho#~!F?f(gt zfR_1u3Nq*q@SAoc=D?|Hk^xHh0Q*c(k{h5`7B?zuX(3!R%fK%*{FGN*p4)x`LQ+h* zbmk;|Fb$=K5ZceR`&oYI9qS!4`ogUKi5;LcG5EP7i;>e{9)A8HtQHFrPvFJ1e^4Uh z4%Tv6hWIH6PKzxTa&_QSt3wt)9hRY?nFW*qa4Ldp0RcftVpd?GV5u5PbUeP_w=WtA z0h=6>?kR4a*`lVoemrcpA|e5!D4;XaVGIooxxWMDzYuijFE7yjt8?R+y=n?@#$~)@ zoM?2(IE;HE;YouKxI-n+uGMbtDBgaeu2ETt7j zB3YAnO8KE^$w*TMU{KVL(v0-TX@Y3EAXY=v$xU4HNE|~uggYML-|0L9x;gM))v=h+ zGa-Fe7Fi|MY3oL4sJXXd>8LArB|dx0T<65suKre;s9s%(!BS;c#@V8F1tE+l+^Oyd zmf_B5p`aX#Sb?ygdsXf0@(JH2?)JfR8ah9@tL1J`?gk0dgdBY)itmggl!AqNHg78e z;}Rb4em`{eToh*)hBL@l+zpXndbKP{>_$T&AoTAy_XsURhkmextohFwog6~t6Xz{9 zJS1DZNG&sGa8l{jRV{vc#>&i}Ka-e(FNo-XCq3(dlH8mnb@kQMwAfC26x%BGvYJ-R2}Vav65V+zVIDgvh{O6thHK$%n1G^dVvfZ)#* z+v#;WIyxE}M38kOdKt;R3X1lus|Y^m4ojSDm^yb#oW0eT5|;JsoC9YNTRMX3H{CTN zw&dok{dGtPc1<8^X+MGkJbBgLF>7fis00#*JJ9-K+zLo3%T7B}h%?f7uB>=2l7aD? zqvN4P)m$poXZs(|Ia7U`1>MQ+@M&QpwXZFtV&ISlq3XqwpT3wq_{VBx434#%**_!p%Rw z`*(9p8q7a@JC!`Fu9D$;QAu^sD$Z?)_k`aq$p;m$W@MF)(@^=-lHu<~SNOU2ejd$I za!%vJicNs2(>;Tg7AwJq&sce3;ibc@tkmo9?MTPV>{vqo9jNljjH-os`{2Dv`Td;C zb>gjnr1acAFJ(D&YGK>%C|{iBr>tUP4VarpOxS;p>5eD`i53l|Rg0NO`r}zzvDU$| zO;r%B`(7q5hJ{5GS6zV`&(F{kUDU-w5gX`g`awcmC%>9NQDQG&G}QiFw(9zxNw|Pl zWS=+ZFGGpe+%cjLuURn5gfF0}yvLj1v|=KF@Ee#vJ z2xuC*Xawi}CC9`f>5ALGYh}hW5<-giUG!^QW1CJ}N$NZA^cYg7-nX3KTXZM7FDzNso9mAAp_KMHC^SQ1KF z8nreV6b#}qG0RD8O4fo`pVy!aAhU$%79q1EdXJctM`oJi?)qBrtVD`tnO6C`)NFKu z)%k8fFk|&Mx_oV9YJ=Ps^@FM&Os7iso<^xZOu~Ey)E}xd$KQ~BW`V?1CQscFxs{nm-v#d3g z!sp^!K5n$q%w_=j(CqTXo{(2}pHO*C(L4`zaj=2C-nSYL(ago(i{6yjGE!xiIL#l&a z&O<=3X7uG^@b!s}Tk%V{BQ8EZ`o)~hgzWj-&dyFhKHPYg<*9hZGxxGlcQnYa2s@F| zTq8{+NnY&Za@Seka=g_rUbY;Xx=Laa|l^u^ctxx3}PRfQthUxHY+deL=Y8kuK#3aw#%_;KHumh3( z%zqZ zg7)nf_vtkygatbyn@)$kM1?Hi3ReHJU!T`j9EMRD_IWiJYWp#aZFcQ?_XU}D*yK7A z=SYAtNwkj?85LI|AwJO!2iMWiZMudMF(O<<@&UPBC<>mygbCZ&c!%#}U{EYv!2BH} zs0=SXM|`tYKh8~#eXn>Frw^eCi6Q=CIbrWx#HfgiQS3p` z239_pW{;V9=6>K}+32zpIr;22doIjknb@O^^OM_C#K z@(U@gf=0@iH!TjBDt>N4?≀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¨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 z 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

    `Y7~byDTsT=Qy^dNb2iQ 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⋙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�VGczTcNM= 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 J{@Gi1{}+m0B}M=M diff --git a/filebeat/docs/images/filebeat-salesforce-logout-dashboard.png b/filebeat/docs/images/filebeat-salesforce-logout-dashboard.png index f65b29be018101d281f0de97b1c2ed2c7b29a8dc..aeff9a04ee492f66e97f901edf19882f48dbbe9d 100644 GIT binary patch literal 1390003 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

    (&H9;ByCfmK>z5_H#gh1NJI|+fR+Of>A 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

    m6X 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

    Hm+Y}Vy=dR-TX-d zeKh0rPI-`W3CTUXw$_a!He?5|bTZ)o>C;4JTg@bBiU~XSA_1f$h?R#gm3SVz-DcvC zVt90(6lsdFT@T|mOh3P6?tSf|6UxJ`k?C9Q@huL3IUPyUW}=U%r0U3PzfOal3qGd6 zV(F!~OTcL;LQytoh8U!oA}gVUsp+^`9^wo~U&L_yECYTF_eq_N+;Y8_m)92Q{7+|X z85i`CjF$h_#sv9bW0G!*Q|)aBI2MM2{OrGeumSFEn51oy-u;W+fCJLc&2SzBfi{Qt z5g~1O!i7-!_xW*z@Lv`J&fJ=PCa^##Wgff_o?;c^zJpB7(0@Z9A14}FxKpn1!71RR z)(1U5$NUv&mC^taOWwWmIQOQ~9GYePHmiuJjyVR96Ut3g!A`wI@*1Lf8>X#K!{D8) z4r9a;|8q!hNmw9Rp5WS+^@LIa%ZzIWR#IL=be+SQj(d2}9K3)}(4re7ELH=>jP~vw z&O31%{B6w2beJhtSZHD^)Cgzf60V&-uZ>K574ZjB?xdW=_K-oGt*;+X^!^(f9^@DN zE>iOxI6nV|;|CNc#Q(5hI~927j!%Vp-mxTJf}uYLV>)b*~9IOLVzv?r4LitgP?D100E_s?}~b z_VY*dfhh5J8jJi!gjbq7d7+12H<0|GsFfPNIN9JIjtWLSgq zKOg$(05pY_o+CKkutu1F@y9q;&E>))5hb5q9P?w<+$6uX$-C;4W-SRXitXJS1>zu7 zo^j!McjK&tr-Y7Hj^SeO*qFe-gflP|3QgOuLXKiFz zWq?Qt)~o%)vbuuEl*3MrICl>ZUyd-rg%rDoDTJY4ggiZk1wPjv&;-{~Ee@csn001+ zUURD{nC>ldi(e_5I+ha3=f;oDe-Ycu;V_~9FMAWcXdzDR(=w4~jOLddXQV2*fFwM* zZKx0th6t`-K2Qpvg-Q$`<>7o|6cvzxh>cl?KfLEG1@s{>axom+qlx0B8(y(Pv_RhV zp(ldZ_n`u*s0G###iVq?3g^lFE=h0Q1N3V8KW4#+*juU4G;RvWK)8nsjJCzMq2rWT z?qNf?2Qk`?9zAOFh4TtyMKA=y(u`lzcz=ZD{Tm_rCA_?8e6|)IV0JMcv%^18_bZb; z0z0Mq=N34rKxfg2(H=u!RRz($C{02f1+T%<3z|8fRSm#c(_#!6+wEQU3V?j~WUbj2 zuqk#y+otl11~Q>H3d9Q834v&wf}u!4Y)COz@{Vd!+9BTeT09c!tMlVu=JyI5qks#e z$3EVD9SE!V6>Ug!kOjuHief3lJs3n>2r}A3!wAXJ?*se(>GgJYq#J6QXo?U+_VlB(%BjP!=93KgM1SHPp-95Z09CwKJ=jDFfRYJWK>!vG ze@3)mkAA9Yqsu_HfkB6xw;N3m@zPXTW%_Y6_F58}B==#MBE(8^N|3>l}COuXo z-FgsVPrTTZ2o3$ZDx~=vQ^V3A1cZC%&kzvUkAe=af#7wHEkB#vi`xedI9u>TsUiq; zu{=T~S{Ge0 zBbU(m-@F*a9M8#xupptfhD|~uA~v~T#(v_mr;I}t)}Pc&OrBXm@y-UT(~Fq6Z^?2? z;9@w=T8wX((fu`@3PIgp9RLbH6ea3ZI7jU5cGeoiUHMj8xj+&g#(7D;Sp-jC53JM0 zSkf>e4RC1m%X+Zkv_CBON^N+lYc*E{XXnO2IC*+}u3Z$G`sUs*sS*O1Hihh4yYf|z zz`q`SB+#0bv$V1q{#sNu@Nj_=erM@Ifqkp)F}y~Hq$&L?6|P>@0*f!hjl!#ZXnxQ2?d-?GSMZ)`UbyvBLv{0 z3b%ZjqDE3G10;k$U{TZYR8Cu=X^<`dvHV{n;Tn+{^2@kqFBMdaJ$jK3+Wn9 zu;CYXJkZ&94IrLKmFxX`1n9RR83!S8V^R_EdN)4KYuN{L*xz`T!-7mKc@BnBB)-rE z4uJrCb$qu!7QF-CWVHDa83E#`>og3OQ)T9TB;NI4ptS zW>5QaD<20RR}%4YAN4S4!1Gu8Y<3VJ5hUHMTAF{14eY|WkZ3_$-Z(Z|fQKIq&4M1u z6WC17e`@SsGlOF#@aAVK=hkf)kM-h%!`u0a`;cVNIk_Ax`e74QP=sP1Q|pXHBcmii zD^Y^x#!76Hu3*;fCDDW%D++7Z8s9&%6LuN#-B_PZZcD4poQkyNu#DR4DZv26ZIe&C z*UKfKidR04)8+13_SLe)+)>37cK1udIJI(2y3d%2IlC9Cq!4$N70qDWl&rwFcG^?L zj8`_)LVt48Eo=8u{jXixr_i^2n@2yT_^saP5yiCHUSLqEC3t`1>dlES*$yic z2M*LZWM_!09TnH(WG#eB*o_PprYo&8Z^QsQhKAlbb`)vP z%DATPGr1_3T`n;l>845}Gy5W7ZH|e9drUN4$F%r73Vhm<6&Xw$l}5^v-kSqJ9tL!N z?XmKltqlNQS<(A7VS*lmfF#EAn#H+fIhxE%RMgU|;oNUSo31V^z3+qjxwJoDUE$4i z;0j~A%Jg>KVP}53b)Ue8*X8b2;g7q7U03fOCY{cVm05iMT4_NgjJNojL<*_mkfs=S zzx_fl->|hS$Ff*DrX)i-)wZ-tbh%kMZ1zfx`(oqH=>_d9Y3>&xCD(;8u30%sX6`<3 z=6c(k$SJXzg+@h0e(;i-Z7V-4fGHlFY*^ibGzF4P)+O7LAIHz*t$q)qSU9|v6BsK@ zVHrK%ZrJ7a+rX{Tpu>HE=U~8GGzTZ1$3z3S1MM}L@E2G8=PjBzUHCHJS){z? zxHsGTIApEEr~@;yRO{gt*v{7JNnL}0>;%5oj+V`9f@y1gYC$c1Y5i!wMcyyp@W(jE z&qxcit$a%#5?-9GC7#TpU(f$;xQ4Fa-KUD@irI)YaeYepl`{>dY7}a_ z&DuBURvqdYif;*3m0D$rWUUb&s0*779Ff9X4O~w2h`_V|@;WDD4T-Nbp9^@qz zXBPrpHy#}HoW%k~7XgYMXM9>*h|dL-?>H79GhF$~HKWlo=R_H7&%UdOdY0~I9Nlde z?j}Dpu#A@AN+OYr7j%C!CG{hENy&DWR7WL zgpm9bUaity@_51n_T1vKc)~VUwK{(*JjF(3{`27rB|E&fmaSbq3uot9ujv&0jqwI4mdj7TYca3kPLpwQt6r_G*q1FA<+86Rb|z6!Fqd zYoZTYjLUxFnM^9;Id_fWlU4Da5f{nET^jST8=_B_RE#dhtLrRnJS}7?;GHd-9q?Ju z=u00#i!54S-rRl3C`Mkapyn+xt5i*j^$Y}2opvwNqF(e=+}ju^yL4cNE9;_Z`(#Oe z{YBr#kb@jj6M2s>|JW_*Bc_&a?lCRq*s}LT_S&s-s5>BNk-F)g98?ZP-rd9Z4o;|K zJLE|f(I3uWc~@dGoQiIAtInIu77pt4wedZwd5TRd*sz$x<-6=sj}YGa>`HF2=TLD@ zO7oW`1=rzTbt1MCb-D)HRUbL7-HH;~6XK&6kC%r&HY6Q{B&wE4B-ehWG@Pk`szJ1= z#bBNvmJU&|(Cjlk+=10~6uJQ1`6{71_EYot>L-+?)a$zfD6`&uixQrjy^e{KQBczi zzyHo-Non2j*})fapV!1O{T2K7haT6JTDF^1I=rDJgU+?ooyulqNKZ2F&VHthmT5re z8rNl!yZ+GM@K}-ejUqci{dp-`z&ZoH%+l*{E2+23ML{XlMO-)k8wJE4l`7-$=9}KR zsi)L%+{8$u1RXLu%=j|WRy@u}i<@0u>5)Bc1F5gIglw+MWnQc7de8VX@a&fza+B+y zbsCJE5WG+o5^v3Qv(NjQYlagQX7q;;#$@<|)(G0Xa6QGdU7AfQ%08-fZAU<~#3l4* z`MEx_8UAdED=(jEYq-gAX}I?m8mi%s1rF^po%Fs|_vC19`52#YU3hY>ua&Ul>RtL% z&K39bCsOWg9#LNjbZBrxTeRqAcbe@Vst+sqoaOZb?Kx3Ed7fTmlc({DxE}Q>pNJ(y zHlJA%d*&S=k}laK`napiemG|!UgQGDhVIa0{>9JxGOm76&QI^ToUW2QFJ>n;Uu;Hd zk}}yXwQzmSyEo4(ZB@~u`IEWr=u_9?hN0cxCH6pu=IsY2dc@-JKH9!*ZQFlR|A6Xk zn5bKsYwTNXnd=J`p0e*3M-OSbY}U_cm&|q5HdUwB4Y_ftL$ycaY`;u*`-a$HO8N= zkZ{$LYaEvl50<-1(6X?zusbSi(ugoh;Nq1*9gYmV`9ulLjNuPDpC=2W9n>*q+?)06 z*ZugsvP+(1RyYK2G^N)!w%9M{XNanut>0YbtLyPxUS$;1+hD_J19D%X7297%QZ-DH z_*`t?v2-x-WmBM(0{`9dpS1vP3x>@)_}}pZgfkX+xL9TJR^2}kbxw7+iHeC7H+Qd# ztMnw2ubi3{@%%8~=VGWA8YFu48@@-IWkgPD{r+?`i~8hPZi=0IGbPHgQ(})v^-)lV zbZ1V~ZI^S9g=;;r*!-yu8K6C5aBWRVnrKD_$+_)@V-K$@?r)SxJaxN*yu()r@W8k3@uR-gs*5CyTVGZ(w zr?Q)lnMbFoFPVJzmOr2n(Js7$n{^T9siO8hiRU54tCrH&-Ii`=tTy`U@W}3#>a@wb zZ=&+QcS*$it43f9*U=Ku{%AzH4ZMEJ(7m2qV6Yl7sm7%)7jI8DVlE80`O08yIykSB z#@Re0qB#6eY>K+=LpIC!x{GRqo2LJ=%01g*KMEATr+}in=W}J_;SZte6_#rX)j)Qv zN(EQ7#a7KRv(E@x)|8HDyl+~tDk}Y`5<6M&@N#=Zkt*+(Nx2bgFaI?Sp))rxJ;Iy6 zJ6q8*$R)wsP1om{5O+dLH(fQkW3^wW!{x0$ov6$C3z+>K!A}b}QX-%zHX==Evuv$v zGvIJnMp}mWRb}c^_e^TzpSzpWq@DHR`8FiGexJ{X@TuPjTLP>66V(|`p&#FardbqG zftP$Ii9dmt)fkNvq`#~2L1w_2ZWMnRF6XY#15JKf;$f_&UnbngglEagZ#-VJYBny@ zS|@(3+&ijs;%P#{ahopmE3Z4NN+uI-FRa4&Gc>b2?m9qeCf|3zrd7Mi=Eq&x>&_&6 znXSqSUTfMRdL3|1!?%1&top~wpoENixd9z!R)99I+dTj9`;Rg+ z_lFxM^XtUZ=je7udkN6AHj3u=5?gJa9@BU&GKFc(_M5MM?LE@nAHR_t>Xg#*gHNHu zb1DnZE#mC5aq6iJ?R9ZF(~Z0vReQmZx4!EcfUcn9m8)iJ-MxMkFSaEya}@ErtYSGm zwsSVmBd*jEwg?wIqTdp0RZNd4@W=eZo6MK<$a>4YJn~A6nnQJV^tvZD(0uVcmugd- zXH%CqCl}8WQfXt*@l0>eiK6lQ@Vf_1re77aG zYsI$8cls`AJ}qUo-*~IFUf_~W7W*-4P|Z|*EN-9cSouRJQ29~@#xnVys)H!2rL%e- zg^rOqpwlF(Jw{20^-4T1fkAJ%GXgW(kQ8>z_(BT_18UJ{p-gjaY`7*q;FdYaweA|y zmQp?H=%wkX;&X^9F?MNOH+m}UKL5nU`pP2_cRW|c&ABtTdp}E{Hw!*F3Fq4oY$I%1O4x?hJ& zoRJ z*|lmg$|5H5GGL`ILs^eaFVHQKRMLl>-069{cI-sn>G(DMjkLq!lLnYs%aHIBmbVUL zW{;&Qj@A&4AG4}l1h530j^3kGnye;@umr&y_aW58BjADDzpyn z+#@U z2N=Iqyh7&1MA-m~1?}ZNQv{fZ6O5@0Q(OhS=@q^lI2F`Zo!05mL$Qo|l)Cj2Gume*982 zkfFO_gkF*;+(`Z$?=bIStyL0~5$0B#O&L>hOCxJ1dQUM;{H{HsiJn=kD+?CO(QnUn zTz@k{RN?;A6ph|FKH`14F5_j87C-=I)l}qlZ#`xR!Nn&%t8uNk!5akQh|1_fosv?d~EC31N z{Q>wmr2e7yRr}T{nME+SErWzE6JaBWh6vEPw8d0a%RRaaZw*EDFH9K(xTCGfWxKsH z%5>dx0`!uu9V?Nv9a#hXUgtwT`M^Kz7b*=7D%{BglxJsM9g~KE^DcN zx?`h=MVWuK)v2A&uv%s$|JzY?)gDROw4<6+SCwiu#7t*aYF=B19W&@U(jO=&rx zcBd}CVU0={?oX^UI$*YOx5zPQH9Klk5C48+jQ;(10++5n`&t_;^DI}Td$reXDq%%O z4S(uo^t*W1^*81_=5M@DGa`Iec;utefC{5=9P#IAzi=+o1_4#0c}w>#7xwa%gnnYF zO>xJ#*-i7a%ZZLhdY_v=?RIb)v49XBgj$U^o1-VLA!k$XNu@Ajqd&iYc$+{f5@Wj+ zEkXTyK*;+F;S4WcnNhPaX;epDp+ek|dwkEP)8xa>L&O#2{#f%EzQy3C%WDWifPjs;il|1tm?#)G2Ud@jTBn z3-lx@;^1@g7B-rv zUHhXq?enDB(iBH|uRr<;>Dtu`Gi(&sD+1OECL_fg8`0u3%YkO%+V}ACayLgWEu2E= z|LxPZeSb0r@QGv|_%tp;Te0jvOV*qYqsr}95{1i`GB--TS>KJ7Kj3mvXDPcog@f9o zB26hoZq_L>yW`EcJp}Rc85Z+qwR`q;b`*W~B{nY=$uHxdT7Lhd(b@3^`hZQ;Xwy1v zhxIwt6#2*6;Foes^;C~8s-`~=^*k%1MAx#oKG`@~y&kfbrIuq@`z4P7Q3$z2iF+jV z$je^r($?(0SAW!XzC1Xp-OJto(*0OYi%)q*-}j}ED~3G7AA_Uo8C}m``QLgqR~vjP z>3-hWi(TIjD1+^9KU7UREuN!Szp4BDC{Oi@*=F9FTgK{TBJ@%fv1InZYMSohAFhPi zM0e7jo!>}&ymu*HFf+|ffDddUO0^f)US!NP#auJyitFy$A;LG9+gkoD*Ty!V(vfVf zV+wuFYjz+t(PhsBMt7FO?LKF@IZ5|=rpD~jnTlq2yG(ZR%i3;%bR9!rPFJYAJiA?; z&+shojcLPdb$(ZpYh-HmgHEr2%{QXz!tRe;RYslElNz#G9L{;E7%HT3DjoE5)EcUq ze5tft5kxP7T=Ie3!ZG6IuUZ&#e0N(w3+WI(*_3lrmc)bZ%DlAj(UvfL95hi|; z<=Oeqwj&-JgbC54CuT`5hjXeZmql-Kl~VWJls;imdG}_ojs6|&u9+mWVXN3WGk5>N z?#iI(=D0hN?j*f;^v}Tc;piQ-ywEG3@gCvR>7M*p!P&+j| zs!ecvUC zgpzi%ttQQ{q6=(dCZhZA_<0nC=?5~>Yz-R@n|d7+?f+3WGcsEuu`b6pD^K~E{@DH> zS2w#xtiepyS-RPr1z|-ty%6~k>yVPY?d>Vn>vS8KnTEN;OVh?9N_QX}lxtRKk+^nf zt#p0m3gVQuos@Pi(dfxI-17QPFmr(Wxr$aVw33W;Q66O!eMfR`&dm=;KCcQ?oKl%p zx-WBvCkActQT#1i&&E9M=o{%dJXT58yG-WJXTb!fPQ4iPhlzk~UPnYB_5VQ>Lbh#a z2lZjsYc)y?Z4cUg>=)mf8p*{=37r|%=xQiJ!l&X2)oYQBC0+vWJ`&j;P~EuoX0nf3 z6oZx!cDD_>t(vMnGes2krJzNxlw|NMm|roHYWOBKd`HKtdQ^KoZv{Cr^k-*|^Gt5I zkwkkBC(9A6HD7->0}-f&kx)vOq0|Q?VceHoD`W#+&IP_(%Uh{bqcC>^-$D(a1D*$^b{O~^c)@Oy&fbn-?;Of(01^D0B0A3m0h&94r&nIKms*uTj@D4 z?{L>>VJ|Ra^?z+c;Bc!>-=pwmy6Z*P?yL5-CGqJd1Lt<_n#hd<)->!QblCX-W z38QW}(ord15P7!uK# zLE^rFLTzA(eky`OUl9Rb4Ppk=i|?0-0<8KpBinAuM!Xk$xd*QL*&BI~3U1xCzkND~ zcpEK_k^)CU#PD(`?l2^Z7ODQS$(ToSRlg+VZ;b*PXFs)E`P>#(zq<6pt1ehPN#%G2 z$Mu5?E$nbEf!9L2>=>-jsjBAPb{Ha~f)&5?Rz8JWgB2iXI@Pp|1e$}Vpx;asYd_c& zKZqc-h<@!N1=dqn`H)ZOF$0a^#>YCQsyl1k+Igrq+MC|3*?;Y@F=~9Ibz!D9&0;*a z>UG>)!##zgbz#gU!Gz2Y76+s@kF>Y8vxf56@ekL!I+dD#eNzc4jVx23L`W0J$j(@1 zc)LZ~AP1YBc;dD)QQm~G%2>%qoLDF8(I9|;DkhYOQnKXfz@`~&h zFfb^E-4|QgC(zICfYR@uZEE(pdU>;XpnEEegh@;lqN#^F^8DI%r9HT1**W4cA>(RHw1^GSD2m-paV#7`VIR)ZGbidG3?c?^yA8QWd zcKnX{pvC@(M=7&EuEbthX~}AW3HQ^`=rUzGV|#ud3?|uqq`dUS_eiPey0Oh<_K zI^HU@UPzHjn=BV4O6s4kctlcM(WzQKSuHF<7MD10+Eyz_Q@kNEoo_lzhF(~2*EH?^ z?14>e6@FRq8!IUk=a%X+7*TBX&1Q|P_!%MEqz7&2>NMgkc5TGw(u`5S?Q0EUAa(pCNE?~CnUpxH~E49W>!7AJN?ZgoqXOGtG5R%Tcy&PV>|Cy znnzTu&ktNYP%4sbS;od`h9HUNUqTW)p2xTNB!m!V$GN9hpEns45>!_kzrW9CCR*w@ zyEb_9T4$zqzll?Hq3Z+P&6gFktH%9k)i59S<#KC@*E;HMe2X4l&*fOvxz=CTIXb`j zaq<#qnNOy^wnnv2H`=95kpwUL-J-`NhMd>*&0amm-k^e__djo3d4*I#^ab93`v*p_ z&3#~f*fS;MKxq*!rSL0V5|;v6Dx-6c0a{c6E%p{+i!q{VkkX$mv2+bmc1<)aGGWm9 zG0L8QsOOzi*`!}qN0F5RdI^l!=L3U_<+HKz)=y6@Xh*V2`rM1P*84T$NE|afoKq6dIJ%x zC6rFswf}Miacy@MAD)<36b)oGl0 zCZ#a}>X16^&kL-V&IzCwQk6P8MH)*c#>S~!U1WDbqWyGRZ-{Wk^TS5$(fNn?96Vm7 z2zOf=N$9hGSAfOpUHo(x1p$S9TLA^oaR2${3|H9Xg{NN1#{KW(Z`KC<+FwiQUU&i( zcu*_xRKRL1X*SLLW5aIBu>rF-xs&l5das4pyAe;aE$MnPBSw{6vtwjk#9;~@LP`Hz zFFjSdVA_1c5uz=ZfI+;bdXq6nsnwa#9%fgDg@)^Gg7~L;GK|;qLn+^Gczi094``xN2JGJEGa{+RcqlaPZf@Oo(b6>s<)o%UCe8*qQ$BcH>Ez z#rb>B;QgIAXibNLG>SmfrBTfZx#EemFg{r;%D zlw<-xD-xY&PvbCR2% z9ihoxEpJ{P7jcLetXf*{UaHU-m?}!_H|VNk=x}(eF9zilF5g$B_KAm{@sG_V4^O+O>k&Mo#UtX~4(Mzb(efa! zk*nP+SDTl_ChQ07l&)SaHa0$6O#(l7=xh-8hJj#z!usQ5X}?1Uhi>1Ca6h=AqA2!M zBCj+z=g(RIpnx-y@N8#74))$6)It0`E!u~A;7F}INz`|O}ywJqcE_m!^Xo>L!h zA9s^~ z=S`7-N9P+Mgs2t$6g(mm4g&)dLW&P~-aH2qLeR=WS!vU*Zf@i5<|2{2PN|}+irL@Z z>6K?k=UF)CuB|EFajUNq;&~fy_pphNLnCZ9yjjU6e7sP2F<58fzI=VU$KJT_ujXla zuDnRs(3E!c;QR5&SbU0$!HcJM-Q#H~QLcd@&ezE8XSk) z!ll27W;p=Dvi$tLw`0rwgeN39247*X&H)^CK=b*^tHTJ%GY&z+IOe1X#Eq^Iq#sBq zob6-oq%Y3c<*j?XMXZ10GooXZ$hw(QlBhIH|zCJ(pd8H2(iH+RhU z8r#n+!*7H73XFZOuAj&7%xw0fxK%bjwNb`D*yYLrzc!#_9oMJ}#ISg?=Ibx2&c_B^$!#ayc@;XgS}}(vIL+#oooRyl_z_WHBfP7?&W#z!*jk$^J*Bfw)CE| z?<-1r3N?kUce~4MH`{HS`5NC=Y%XLwe4moZu1iE~#1uI7ZT25+Mq{2CHUrTw zC(6blkonjldL#6X47oxp!M(4+B&ULJ5ba4@$%|hXyhcVR#7#m*L0aXBMMN%rFY zQLA<@t96+sj;j~z_KWC!8T!)pDSB6x2Fz@+?&9bMxaozIN{J| z?*qV}AIF3Qe>GKbA$kCnn{PyPEqPdv8z*h_c3+hIC8Y>E0&cx<1`Dk5=DaBGp!{LzUvwT& z>HP?R@q&;F#)*DJ!1Iw2rn(;*fxWN++09R^z&FWoc=cNF)X&q%;|Bo+R%Z@k!Q%{* z^&T^c1CI5lPQbHtKkt3$5rIA9jgd!(VQh0rLz3SH+Zx*(p6O5>xU&_wkpQ@E)Q3_b zxc3AMPlq2Dg4)(+fOm}phGk^%Sa^TWF=AN#okwSku}b-u6(WPm?n}UH%>POI+*Cjn zJg#xr8_O6;5ezc{pdTGX&;3Gu= z8WJpIL}9XNN?s)Z38Fdq#S%Hj)CaNEiL%Km>K2gL{TW<7X#7ALE}#RFV7jp`mC zLskG8EGh)Yzy*|QK$*|?@9F5}?nB5Cq2?WE_^{%Dwyu#T{k7xg8W+m?iPG!;i0Rk-lUxtR*elp9o82 z^f3G)aa0Vf1iLO)MX`r>*kr^ z^Uy@;0U4|@%QZn5G6P_vPNbDB1&_%tEE3*rdJ|xH}(yN49k7%9|g3l18g#GXLcV2u=_B%5rXisr%)O3$HD4%0VD_Aim>d*}IrKll&Zd?^jj_>{R%AY8G>!8?wP$$M21Lc4*7a+C07_anb=%22VfGpG6GIyP-ncDH_RO==OqWYmL5Ocl(IQW5%K! zqktQH3Ko=%#yY_&(U@;@R5Lq;a;lzNR+%Lcedrl;&LegDHpX3hn1NO6%a^?ATIrG9 zk8)ii$Kp;Lol8C<$OCiRC_OYSy{AxtUGlx=^_@#!Z|}5^QH!*Onxfn$H*oUz7=?mvH(1RZi~W#l7TD zA|5faUic(oCm#L?zA47s+N?M~mpCpinZ_KS=0=K>xB$OwfJs^06!ylJ1VoC6D>$CR z!!H3*)E67CmzsuE8#2-)f<$BQWCG;_r+SX-6mZh4+fOkZ^M?P_!p*at8`@7FvM8)vv}2 zC*Q3SD%O2fD{g%&#&+(a=oWqb^V-r(#wY!&t>2on4;^belb|W2it5@&9gSn%!T(9I z<@jn^&k#wqe^L$3E$SJI@xPI&c*$;w$=EKpRfy*OmDs3}nF~!LH3Km_~##E?PROfQf~=dC{4{l8fA5n1bJpEnYe6t zWf~Bs$6?MIzz#Toz#O}d+QPZM7AD{!l4H>)5VcNd=%Np-xa*i%_P{5S`>91~$Ny`e zcCb%jzQ%sPn8rrwZo~Zs4suat>9q^*|MD;{4uN#9czX-#%_PHqe@Z_E~ zXJqEw>>a6CEB=4e1#%wJ0C3g#P&zfj4_X(RSsl| zFi~|#W1ig@G?v_}t;-(c0hNoUFOMLXD}VC_QewFKff9HX5ql^7EfP-v#wi~SdxK3! z=l`tC)sE{>)JR+~g3sUf*@Wz~gV%}6mS2GOT8OfLCqmI*EgZ#*Q-}D%PRZpi%^@@2 z)Z29tcMaYDr1pbX{Q=-<;%p+%h#%!Xj1x0wtL_a6t4sbbw7&wh(+Q<3$~9%&cFY{* z3qu;?>P=vrgxnCrsWovh#;4o$g^+7@26uqU5GQ_o4Ak0I)Z@G|V4R7ueg~)p;X}%9 z3nRLxc^k!;5q$o(&sb!i>83NfUoEWoi&>HmJx3_|L(i1E{iPan_G`g6XNQoP8_UTe zuos>Fj~3nn4FFupL&fnji0cDlZV2nLa)im%{)u)2;C2yPmDu1Ib)xAj&F1V#qwRSN zo8)tr_qeON3EkO&kJH}Raw2+i7sB8aOfsPKPr}#y(>V_k0pk}WpX>q)!2WdN;zVPa zzDbmuJc7^P_9@H?`&4cJRQ93glZE{yX>JXKq95h&`tp=Gn+Jo*iBvBAK z`ac=-6Fja9BXO(AQwdCxz`BbF>ndrmhXntL_8Q=J$FIr4%tFui^uCJgRzn&oi2T;L z^l$-Za4f3nU-4Q_81ZDQ6Sh6iau(bi)rPf%TBiku@;2P%)chAzja;N|KzuI7|%~M ziY>_XoV|ehQ)2&y_CSQ&Kgc=A+iD!hGZ4#8pF$ehwyAhoQTr#i{E~D)W&Fy`VR4KQ*0Ut3~kn+dh9&V0@s!5Q>&+ zx;dI;F089Mj)*m6X3Ir~N_!lx%9IZ;7>Q}x1h>j@A|KI{nxwx>s|l#uK$L?|AxW; zhQYDn{@=pG|85xk_<;l-$Ua8$80TQKp^V&f$;Vk(C}%|3f5#U(rB-$=D#NmH%UH2M!*oWZZU|f0X`e zafOkFmn=K|3~|>>%Mjb9crK^=iqiPPQZ7G#5XTM4PDay(AW=q7Y6vSX-4$XWAU+S# zbYT@X`tZjPPvlVvFIzu8So*+i?3=R9Mm+ge-WQuv|L5Ze=im>4mq&VXjg|!-sG=4z z>Qz0sOy6Y)S7xDVu)l%jy%&-bu}@1apcMBY#2^Yza54nRI1BFIXZDQA(kWA1=q)csKDgw&X=J&iN8Y@wFVEC}TguCQuf^y{ww~rh{ ztyklyd^9v12jZ0XeV-NbH<&9Af}sbC=2^fzko-BH=AoIB^gstIw&g}?=>GE{&G@s0&Ys*dM(AA z1En+m&6n_nSzdih{?7t``-YlDKqP*H3|HC&M-2BTB-t5YYg#3L7W+a>e~Lm@7d22= zkV_}UlQK*A#qLRX3^Rk!P!aS#WlM$}aoYwK#D}2Xq}TV*p{;r!3;-iKd^fgyYpWLH zzoYisfdTp7Z77Wqc8;{e#{A)@PM{Wtj*^NT$sJSpLP~M$Py!|t3Nn%bvd0W|f4U3> z8Pr0%aD?^Wp!G+}A+fP~thNd!02hB$ziqcg3!7@LLJFSuwz$X>Qk;gG%Dl&~2(3;)xuIXo4qQgzH|oJcQ5q5`{7gIV z;~-Hf3LG+G^cE?E`kCQ?uYZ)N{Yf}mQ1l*zwUFtK#Nd9C)7uwe$EvD3*w=4B%3XNp zm?+d@A7Z00#dmF7?ay(3e^4vuMl|QLi=PGBMwVTZ^SC+(^<(w}d+H8^$8wAwY>s`w zv$0r1Pa|LyUiH!(M(}aO2qu}o{=wal?@Os3D#`kawXq!aG)qv%8d+hV8zUMi zH_>t8R3uN@ihVCVrN>|ArWGGL&=K3%_*UDkwUO5Jz&J5ORmJK2nxg^8JQ3 z6k`i|%kF8J-Mgt3=dn_gOZJ#UQ-fyF%%G_JY-Brq;g@i_9Me9}LX=LDS?jmaikJnT zyfMMf_4O_zx-h>gnzVUzliLzq2*$jOdgBfQ%K&q@8hhe=2VJqp$#~BVbLSw}{N`}B zch-upMpd~yxn{jeMH@%8Bnr#+pNe?r@o8fRYjVwVi8`P77kjgxUn{#?IZ1sXE!>Swzkg5;J=aWJo#z7NINW1CC6D;tMGcbTg_mnxzk;~7!e^Sx7P(# z%q48LDsKvv%i7Ldmu>%MV96mV;&k0}BqfwSgJ`VCuiyh|R(0CzC@4=xuMF;w6mpY_ z((Er5nof~@dgM#PYDGy+ZChBM%C%g5GmfH{SG~WD2GT2pDr^c|<+m1NjQ4W(>!?UH zjA~B7;D5r`PGfOf(PHH0RxYsWJN4f0fX!@Nv(GvK{H$b1gH0r}b=>^=exfxc`WPxf zz1-3LA6T_=Zw4&4lsL{lPO4Foef5@TMLX!qNk?-3#o3X5w?+A;BSKKe^C3InV{EXo zxb6J2ss0kZhX>gR?*|bjuDdRBKi~>F*w~$GXZa)7D0)AebD&{!Tx0ktPm%q4&7KOp z3z+j5*NMS5Qo+vOlfMEn9+DLoG~)e#*!%K$D7*h}lq5x|sAMTc_M*tHgzU2Kl0942 z$xfRVvJP1Wg=F8CF_?<%j3uVQn5;t>%V02O=D8-__xHYk_ucRHdY;$w&+~eI|9A~^ zxvq1a^EvO&a^B~CO7m+-Fl8z^>FFW1@7KUACA4C%0a#;l$oO>%I1_-O7N^eeQs*-* zmBA33B@HNJ=Li4;;2T5hjXtN@%rjV5spH^Z@+pZ5(vw z-O94NsFLT1w~}!YN|ZxtIr&p_a_6&XqW+tL6Iqb>HLz4n(zOLp?l*~QI^XC8g`|xz zoQ?z{hi;uA+oU}q#3_<{c@b(qV=Vn}ZJ_ntDjU05M?_mk1P8?`>uuf*V9 z6a|pNp_4LgJSOVwMI;UIL~oaL=1j&ilBgUnpI*K^*5p#4a~wf<}Vib@WhK1&g?#lG<0<^D%^^2dDz%faCO+E=K z01mP3c)YY6Cyvc@niDuJBoa}*Al3ezpy8un}#l^LO6;M*sZo9eX`F8=L_y}g( zo4U6D(Gi%}l6h^505{0syB7W2k}QiRw4S?87Yx9b8QF+K!18k2>CC|1&pqCD3ye5y zS7Nu&E2pZst-3z6`k+Plc;)h&>2@wLRE6W~xevXNf*5Yy#IvXbw7<+FaAeGd_I^9Y zc*W(E<$9@yE#3jMxyy*UG!5FFrI@5npVDq=_hkd7J{_s|O1VERNViwp@2bs&eu{Ci>94fHB?nV;n?U8=6o~x3OeH~+9R?J27!w^ zV_lOc?x&9R>AlXpeomrk$9iqHM?`EhSbWIkI4i6DG=GBq>cB}H7BbnB%~B(|Xdjhu zq0C{yKVSk}J0>;i=`vy(YE?PjgIh~Y)>vSxeSc_XEV{yiU^3?UpblH&IGG4i4U<8M zD8omV%{tQ1W^DD+CJ10)9rGAItdD2b~8v zYn-I9@FAMk zvWu)?ybU$pUvBExIx?Q_YitUZUSM(Q_bMPtV|%|WzqaI)fMbq^25$(e?vbsghlT1yhkZHnTyHKkyg@Uk&!{nE{V0jSjx>C#&nCtOuuTZk-2TjR#Jw>p@w z&6H8V><@4FK{n;=3l3c;n8rsQ=P={1)WN@VnEo@8bIUE64St6KDB0%xS9maKt_a7Ik1xs3x=`cV<;>1gczYMu=><_OQ+}NZSgUt3Fl9yff9H zvNpdZpkFwfTk)V@93bMgr2aV3A1n_CFf(30NHSoK9CTRWboNDHqHQdmz-GwIEYmo_ zk>h9h!bpwk)?v9Y;^3LB%bGl?rC0;qvbAK)bR&zZI!v-Bw>1~sBf~Rz8-U>1UK_#8 zD2Q+jsNSX%ER8YR1rc@T(VnryGli?w8?o24cmNCM4w3srY8{-$_|^muojEPOcpOUX zb<7JHjJH*DOgGq{Bx)nl{456iO2{O!$gHycCD;{U5`q7)aROlDjZ)Y>Qv7*pjGuBm z2FN!kR2vW3*3P!?*|GAN@Nd>-x#cT0>rhzRHB=kz)nBh*s3}@vdV54pa_MS|>V`(w zlXKbzfE#Chu=dV(O@$jCkbRY8^Worh@L4(En=*3p62XyE2ALmI0y@=dZ$}rX0OD{n zkf#I7#oPL@Kt@#9is=?~Kv2mO<*ye?arJzdxoUuHU-2sZ43F7l?jtB%vEtKa0)K&@ z4S+Rl&FYGKuJREGd2CtiVi>+7X)%6^$nP)lGZ6Mtu#qdM{WUr=*DZfnKR@_fM;gE8 zp=UbsP2gh`DW`=|p)La!D^W!e)P<$YL+Fi`DnC@h@!4_5HzUnV47hWbhZ9~ zxAN41JkHhteC>TOQ|{W+nHlJKseZVm9ImOfK?IBdpaH0;^XX^$AZD2x7`~zThtA8ias-jz&SXf z5nm7W^`gOeo2%{UZm8Yb`kh*ps?`ZzM*YPB&{*5JzX5#!Y`MC^Wq~#T2j+H|T|DBk zy|n}wiyX9~9&|w`l)>3ad$4t8x`R1cz5gcEVWL80puk|RZ4@k!Vv-aR;`#7dMrlui z)H7lKFv?2fP)^9Jf_Pqw2H5OdCwSarh8Soj(RJc+yrSnE^DA}wxg2fLd_%+3YobCY zMX#%+UX>x~q&dl~$To*1IoXh}?9MwM>Z`=MCps?iL4(GELjq2(?reC6bRl|8!!zXU zLJCyYrh#xEIK(B$6zEp1yZH&RpI(6`k2 z+`IQV!=3QngGQU{uRhL-j81>2%v9?=hwH zsbYd^=de4a-l1)p+bUz8pWRqkXldC!)R+Ot$Zhy~r9{3K-7zvB_w#x94VVSDW133U zU(NR9cr2Yc#(D2Yl&8Z^H)?InfHU{jDy6Ah=-n5&OUm?y6c3%-w_~UHb=sFX$o|Xs z{eha&%nP;UuD%qM9Eq;d5s~mB6A?=mQ{aVq&mQz#`Lv?z&@-ZF|6LQ2;Wc>R}<`AL6aVfCrhJg0! zH#sW&hFAv-p+5rijpZPp+atZyM z^Ni_F)^=<^0KF3CZ%BYZ5F6EgDY)yxGo`y9%h3QvHS zTO$uy{z}6OFQB)jT`H&Pow2>G35vU=7pCRjBNh}pJ`&iWER-O?4#hl;w_T?c@<*KO zh)$4E8@`Zw%eZ?rC*g~+g&w39Qf2MV)x=@Yvrt2qHM%MT8FE&bT}SFgl45~zHBHF0 z^SiH2E;(-B>JSjup(20%wXrcL5ha#0HHLwQ-y}F5u#)+j$Q6TRRK!KIB;7_t_~=@I z9E$PwpJN>>Y^SXA2kjGsq~?q&M>?gqD|5Hcp5CAVGWd&KO`%6kE8MDsuiq<555z)k z!iZMmp`a(e!DW6gWnb(}bcZTF_QC4qRfXP1tv)5c^*sNBY}i)G3RH`ThopVy%6vm` z7hSxSm7yj5Lld^gj~}1u7j4Y3CDnVoR<^ouO(s__%s>dL8pS|3oCbu$+Yhcqvf0BtO!CilV4(S@brnQMFpo>7eFD6NvB<0vWq)cgrV{<{$EYc8Ey+q0uk z@3vy8_8}8%QGQm|=>#vE_RlI^7kp;B^GLD~#f{wnL10g5H`rjWwsiL?kRA)&yLTJN zz<6Q-E8KTlHWJuRY`7mNdz6wwYQNU6+7bHEGQ;ss+|j$es_a7)J!*O5nwS6|CaQ4| z%^Od*&d!Y%G(m1Jt98mOC=k6NRSV*1wA~jZK_fptV1{%@XgZ(W5f-+In2fxri`yF1 z@l&bPwci-wjBhZ6G|-S17Ku5x%I882i|^C!RG)j5OK`=HrDO(7dk5^qb)juCmzeu> z*E2+#Tc3>k`YEK#-m@_)%qcR18?cFBQYUxw#^VA%AuJqrzgCy1b+AHb3c3&pY*Hp{ zd3j#g#|C4vK7`OUjete+5AWR;_3eAJfo9|`xVPN7JEG9Cva7I?hUxauz~Mwd7gMi4@wac{XpfM|A(Cs#9LA&-|x7A74yoYVpo7KCJE zJ*U~_^1|iFw_%lMs3ywF$PVGKJXb5(C@QxY$E%jxB_XCU$WaPzMGng@oRi!o#WYAd ze@K*}SP}wn7vFWMc|^%GAi)9_YL+TM6k4-d9Lu(?#~cUQ`Ue_ZbOh!buW?m}c0{1( zLdbQM)J!&E?dn@oV-96)Or@F`a?qK1elFi+;K{<@3|e2zE^JSCB&#O&AFxipPlgS61PiAbD}tdB5d*198w*YLZ71?|q`ej)q*H4*RceO?_2LTT$^ zxcdZ;Z`9O`A(PzM2=gCML-3cx@^jS*_uzZXs#HAOu8l+Nz7*9|xDsrku&LyV-DG!x z;Upm|rPjk9=TC~ZXU=8_vH(uuU7Il}6DPz9h23Mc0{*pUCW1SZO#9Ud>k?O_s z4{&^S-W#6cE4fYvTDURwwSxNO4oK~|?=aATl8P%H2>5x2u5>Y$DwwR?A||b-U8uB4 zh!Y1_D=;p3*sAO{(x7e4wN*moBN@b0V;4sI>io#)hF|UuT069)Um0kmtb4Y*oK4tT zlvgc`uQ4M?>kzvPf7JIxOVBb(s4+8W@#-6tqG;^uak%gDA4-wNKHq(GCh$JQ2BFw(b;*uj3*021@gQtuANTA*AOn)ar*TtjUvX_*jk=vS zdV;}ka?&%ycJ2rmUtRa>jXX_PV1pPVp`y+Xrk+nl8uaRp0tLQU;t{6~#dPrv@;(M# zBEHJ;JN~rTQNXyc97beRmC-PXoHyN*W>H{RaA_artl;+AOx$ahs?M!X0nh#rMtJ$F zz8nWEHoU&|qV1;_Zn+7R(S^ST=m3iqcX+DlswAAY>y>9PkjNbW4OVe{!YJ<;_Cw8$*-L=ETI*hvlrjON-mzv zg4|q=KiyAh^8nMWb8rjCW$eS&;|+m4$-`|61F?*Zv6>H*<<=3{9-lSJ@qYTq8}B#M z8#wHV^+>e9rJV@X!oNT1aGTNx$?si{dvj@^Y}?eV-aGAZXnx!ndhxu=ut&x2Wko*| zr{U#R%tcfM8H9vAr@P(u7}%P=?^Wah{VX4(f_~NQa{)CA&A4rd)OxxU79!iZ88$Jm zl=>}r&J#{iS4fky;tJWahL-KpotJ(L3V@!-%99hb2#VS62v3 zy(C?FECM3i+DmdNUtj81=@p0-8&Y;7f+DY9jQaePNdwutgoc4vZA+8_DIWf0od3(S zKrxc7DdB@p{gSM|dMP_5)*|&|*s+6~xrU~m_>vLDAMMj{8Z6#W2cCE+LmyyS>J0^X+)G3b!v+(7H zHvyuZ>))fE{j%Pf9#svEQ37_0EYofJ4e=LWw{}n(a*VKQZC@x$-M{*e&pj=c7XNm9H$=YtG>JinAimk zxu4Q4z%qq6_4j9G6#~>1#PI*<0|cL=3IZhrQG{B^GDHP|JHjTZ*rn|exd6NNdjv0D z1~gC4naEC9+=;AO(S=LW6?wr^mx0>&E4BBX$(Y>zp7{4}!UGQ|8 zUU+CoJL~+0`3D-#jy4gg#N>%mtFYln+&8~loz_<_?7sPxtRw0j*P=ECX3Jf?ZJ|E) zI4q(4NA+m#cyVUEYx=;JD*~Ckh?<&7Ne+wcv0$kSQ?R`);bOQ9m$g)>rzo;(rW&1c!NkVMLbULX%51O2Vv;D%GstACt%RZf%dmv3XM-Y!;74d%t#KaL z(n-G^tJ@kX3iZJzW*~gMnG7_OisR$5`Rh-cpKRxrtB9%;aGn9@f!)nC zV41{i;xU_mzFuc~SjIL3%eN;kB=q8m44bo;O)KnQBzwew9{8opvWc2k-1Mj`iJ(^V z0WYP;rX;ZRhfo0+(zx*jLrDqT5 z-)#r_4{rbkH|fybC+h(HpzbaCC(#;eff-af7<3iUHPJH?4Bc0-O5Zow#m58@N?BGyrWA1|gY?MdQc_ ztB_%*>r~ebzyIN^+(Rvm6I~)*@FtTAM@IA&QzzQ`wvPegbC2~p0)It|x@ilUJwyj& zMmCT>OG;B3GrDV)?eMz@5{;6?S!RUqLBt(-X|5E*vjBJZG^R>n7YP3z**1TXq1F{xZ8U)H0 zim5I=He-~u36$?#I93ntZ`Dp0RP41{Omdu>nnFvtAPlQ+b_GYkrQG9K)S?oWMnUz> zY(mB@BC_ma`t2mr*tX`FzVGNTsNG?xAm{o~05|b|eCcrK6s_IhXT*TptAni5m@`6xsk{ zV_by`ez+{j;H6(D!fWj0w|1dRfGv_3m^=F>?3%+Et~2mD@lI)9F$5NjOp2_9mRUGO z+|9>DtM40Lql9Z+qFSEgre%ucl&n{%_+$LUZcsq;j$cm45u|>g)OxDMGSz1v%>zoG z!P4^U7zs#>kLHPlnqrUS$uBQY1!}bZZ^7ky`P2*jg=czqhPO}2WR;Kg=iDoB^6x|x z%Y+D2&hE~HhOTHvPiI(&9#S-Rq758lcg-akNT3^S7Enq!n5=_9cgoCwYV%KjPm)h= zFGNJX9JOZ4f>Y+X=P9_)E8E=eCRQbdHs(MTvb4yITd*Fo({K0D(u{)jAjEWmMR`K% zhrz5WKAJNxpXNLO*EX|=>0izhChk~wfF-Qcd%H=xJ+X-QWH$0H%G;Z3{nOmZHG2%o z`-=m%6R1l;7v2YxBCCRZ3y2Fqx)KkvX&NT^Wg^4kBbLRy!{p1<_Cet)8m@XkY0XdkE(HJk`#N3gw=z$?0UBwD8bIJ$<>;18l zUk>4`7ZK0V2Gr~zIJ;}p3N|w~sRFIcxrkH+787+QLa;b_Z|fKLrrp$gfoivf_tjP{ zzN0-00$3mi23^7Cm95xDDh1jYK!D0mn4~B8Gtd}IsP~B1?e|g8a36>?re!wR=Lw$D z>v|mv@3>w%4d`IZO8!R&V}92mejQTW%gB11wIzUYZZ`!ljpbJDbzgu`#O^dW*R!Bp zI>JB->V$iHic5eu{g1pJkj(C*GLdKmEzXCBgXx?Em1HAR@5sc{MFTnOe3zovWqNpGn4N7 zLedp&&=`{UF!#VayAKaxer9benfy0;&FaiN+~hxzmIhMXbKLTSy?@qC1Pr@H4a7^M zxV#Z(#CX$3PYN-PKWwz*%r&_CWtwf=$0?OP7~~04qIY`$!7Y#98}bX z@&{v=3^LnRp=IRD1W|Nlt7LMQC?iSA1p68VF5SMgyRyJx$s_IaCGV0kBI7}_A?*4T zF7YOD@bA?%tI+{Q(V;Y3iORw&ZZDP~q%s56!voed1if)ir&QqPF? zp%?>v{JnTyHDj|1Z`X&tB`ibnIEZT`x1A5|4u&%_*Q2r@XH|^YyyDkV>^(Gtg{+<< zji)ZNee!H-YKVGB+Bp#uWZM^fI(D&Ss6#OTAp&+-(L6Hv(q ztmw#jsj4%}p=507NIN|i%cMxD7#f{v5|ywgWx@=)r^g(2`ib{%w@D6NKFfM=|*;4}U$ z@LjjrRt)jY0h4qwpdPr)+}E2)S|wP|OFzK5fFAiPVAEY%IHWqC&Kyc#m9BA*c)m{WP0?_^?Q4=&uUq&obuU ze*7)B;yJ1W*bMDq$WNX~5|DP)T)5PF3y`W~f1X1Fx!M9$6>^r!2*Ahf(l@b)Mlix+YVzUA7x$&*(F^Jw zq$V3=q@0k^rAydp#B9gBfKt%s?u1_pVZSoPzr1Gpd8&@oA1Yq@0PVBq=}#ivU8-c0 zL4vI)KyftZk*9Yqb(-3KL>0KWZszloc=|6B>LXRVi7)q)@ZJ+n0WxGGS(i`IQ!nMA z*5gDEQa=HI{);-3qMR$A0|H?ZS@%{~!H4;@lnzT&Bti1*BZ23RV4L-~oI8|Eq-9ze9!+ z&qLr|kCUbM1jqnz0N(o8l~o?<nBTePi~Fch`)<*Q5*YL8Tl=*ybY02%q<^iBb?ZSHv z0G~!BNJmFqe4u>l6oZ+H56_sc+qqw3g|%lr45J`05Fl48gCezHjSG|{M+ z{arEZ-+GMtxBY-M_^ya!_w=?7-U19%<~$$Q-fL3zUalx%1%MR{s=TCXD{I|bz%l`{ z?C;pi|3j8N`2Px77MN=7rgTy#=;uDF^!}@)F4dNKfr-O$Y@hPpl)DQUvNK-XmMZP{ z2eJ6isrskr;=j+&@c)4|>Qvry0sjMQ|3AUn_inmKX3qG+QmDWXgCV@?rD1(te3kp) z&9&K%;|E)hgpn_f*0_TZf$BrAE~>p=Y?2}LLSXjj9mO#TE4}xLCj|7rnP8_b|1q(Y zya6<}Wcl@LEHz#cJ^a)47y!;KE%mSuAU}@;oJk`ac3U6tTs?k!TLb{W2U02&9Ru^( z!~;l4>4n&no#41y4A&+4HLMiz@|pJwiYwZu6+JfnBIdDJO3}sxaeEhc^I-0LzdZi}su!&r#sfR3S;K>S_@+NO5pG98E)a zn#$GRr-u^%o95`=9pp{|n=|}z2ZAZ2Vl>vKDHt5QJ=47+OsI9e$jRlrFz;6W5UAyp z>tUt$DB}SBL;*Zy$d!`Cy=8##4dAK8F|qroP}Ky4b4#Pn(x(6lGr%M9mHG7W;a~Kr z_nrx8x1}kq(fJO&5{tK0#xO1e6&miD{JfxgIK1k52oH3e7{R94=ImgXRxfQxS!;Y$QDYP^!Pq#ED>APS`s)2Pu zi_ImBm{q-;5WE<}1K684QU=u23ow$_=Sk@&#H<&iW+mV|#yN_sX`z-~6D6d)2V%7JDA1Gq737Qr6zGx73dm{}Virp!CUgZ{$ zY-v?mQseqE`p*E#0Prkn@%sUdRH{|peFGSAGo9^O>d-`#Q7!ra@bUKnbGq4gH+tv1 zveB()qhnv_nWmFZ5AxT;$s5S(f%+xoe2#h2^}K&3PZRf(;O(H7)J*p!)aE$te9D|dJ$d(m@T zPTYUdX=1Gs-vJPxT!%{%jNN7Gf@Hs7@-hQ0(^G8bkct37FlCUxQ<{EFbB%Qqw%owy z(3O#uS%FauWdCHN5||&d__d-D_l{ z%xzo41@pF&h}Fr5Ss;6<`m4&%LQjaE;Xet5$!#?3t~6T`%8zgiC%>1n0`4Z7bj6OZ zF3cYX{bIl7lvxLVT|=`})JVjQ=05CyC+@%NWE)Auxr(sVz)h0K4VIzlvNo#GXBHF? z#kG=gLZu%>W;(5SfZZKOS~hym{X!oeQvhuqgQfCReqtccJ)ozL8LTS(?Djuo;sIJ$P@e5XZ2H?nYBjGL4DFzg3YCaYMBQ8|KixZNHm1i8V zys32S{C0fp3y%-L7Sy7HZ3K-kEt3N~1{~JDH|y5HLqqN=LMuGn)vXn9$S0>+aYznB1h;L%Kc_8=z_ik!kD#sL1c`nS^sOEZ1A!-$2}#P#D4Uu^RC9o663zNISC1r@!6xz1&~>uwKvM|pIcXb@ zfX_ThKu98@&jyr@Jy-(w28!tf8gT{qK7xi}(6yaqwn43&;Z2hjuVz|~zm{~LnZb6E z8MqugVoqH##5GOv`J~bKwl?^l{^KOTTjzkIYz|#8-t+5O3Wtt{m&B++u244x`6&ZO zPNA>stOJDyec)hnnT^)Pw}G^DeM21O2mVA88oFwM@61Y|xjt*r`tNRlmr585qVT@A zFh9A|SZkA%Bx3P~DAu%_D!102pp#sSX-f7XCfkG_Z^S@-oS?+l95ZV|r3t0*42KMW zg=wNPTAQ35BWsi-YUPMCW)BZtCdJIu$l@dxM!-p>r+kXL-)t8LbfX!}t~4~2nK+PL2b?igtC>-~{kLnhJw!$C_Mpy?(C;e}BTs4=tLU5v)QzPPhv;EXnFX^q$Nvj+!tPr|1&j1PC z*EF=wI?sHM0_Mi77NM}`0e`wdJ!rTr4I1vr9WXoJ*4>H3_(p1_h!2e^Y=wU1C(waU*gCxnob>W~Y=E=jeA5}BoHkws=g44i>Ql@P!J zmU@XZjRXbp7)434!f82YC!bODYtHb{A1HQ*$rfxkez|EQ-gkaLx}dpe0%sFSva$}E z;>-)gPegK`N7_iVx-By+=?2<9S|9Nk)ff%gNnyADY=B6^a&w2l51+Z(H)ahLS5wH8 zvAX#-cCl&n?)-4^t3~N`9(?+NO3E^dKV8zZX-Q#wr8%aDgtP%Tm78;-<<~E;hBw{s zz9fw^6}sH>=b4xG@2FE$t|02?fl7cV`a$4yBD(Y1KYJ;MdUmCTsS6-K{v!*xPUc~s zcv;u}EQysY@e4n(_vf^ZV*MaY(`erT_wHWJleG(>KspBU4HyJ2eY?=CdKNfK=Vk91 zLtK9d)A6XL)mhjDJ^k~3Z*e%0~o)h0IQw9_Qxuo*#j*mlwJs0hPC%^jY(r-!w1YelqnsQKa7QWG2F7q7K&FX5oRd!qqLQx_m8*kXwPP zIm{L<_w4w8*k1Gz^=}PceTr>A7kQSa(g|_Ju?A6vz#K0{3YA}PITKDMM{>_hYL&pJL#1y{RL>k{qrxNd8y71|4U+`ybUPx|2nU0{gTgk6B)`%wc7QGLj+crKxXSt;_-xnnW6FFW^0 zETmV4`YoKXs;<@Yaya`djiK8A1uUV5tNRe>dvS;=*C8b{=c zuN@Cmyr)ESNu?NCb+ofhncP7 zj%Qq&CrnL&yjA%;W|Yz4(3EFInX+nw()Y6BIol$5B6looMZz(S!dBE zDI=@_wCGvQ;oa+x3)(<84qS5CD-w192dE_+*6=yVqvu2g8I*GJ9Zr54$eqZ9Pk#;? z5d4Kdi;cwD8Tk&s{HUvab~(x$RdLe0rJrAxfC(hgqwc-(m?gJm2J?9~tm>Fv#74+& zBy@?wOn27Ddr^F1iZ)yiSFWU7u}fm4+~)~c1ZM*g>v(biQ>f$uiq^T2v>C+Rsmvlj zvHvOIn|s+|u7+1~TPstJ=pbCZ+2-k{T4*se@rACuSf)0FPcvE6XEUJv97D%N_Kb^5 zBh`MxK^xVzGaWAwPw8Wc>m#Zq^*_Ytksx9jFLB)`VLBQ)?tSyK|4HoaNE_wxDQ?K6 zL3rxKlLEgeUKV*hRja@VdnYI9G*bN>DCP2mS)NRl!du6@jKFt`(6-pJ*=#>*mMXrp zR@hTx*JjPv#&vCAY`n}id$BUpFR10YEwBwjN@huyG^rV|+mXjv$x#B+Q04O1JCK1s zyoWV_#lirK-3dK#Idl(91ds91^yL3co?}aZF&Nxv?-Sd9^n(lF_^yfclFu_94WDiJ zH4lD*ekHx6`?#S2=QX62C2oR^5kMK)T2FLS!`_A2?FrHY&J_y+Vq1?C9x{ zFj4lzG(qxtOi}OHx=e}^UvrL_pdufheK()i_?k`Xt61^F_P@ZXl0ID@>mhZXQ;B-F z#nhawQuQcvgUePjpeU64?lPvO;Rwes6H@Y~XZ|suS>rNnOg3*cYuXBM_vXmEw$~M` zN554l+np{Cu`nZfM(oPj8PSQ9QyEWswe%w(PeIv5m!3xV9YTM-{HZ`2C;DLRnz(1~ zEJan69YjXOeuxW4ah2}{xZ*{aa+9s^TD)(VA-?<24S%on9;AiK5$=l>Fm z`~_J653J1uI2`5!`&a>oQZjGXO8zqy1y0m?28_G?rGfuMGD=2t{rj`7F%*B1I;i9$ z`rBRmw?ty2XsXzz=0=_Z$3$gU{_gpDEc;mxD!HDV8({6zp`VNOak&Y{h?&35_TgU; zPye-S^q;Bx=cf%SB(A>%7q%>Hys!@JBM%%p8;H6A@nb$v+=+-#Qo40>AlD~vhrZ4E zKb`fLH>28S!HF_#N@Ybw3$}7L%`XFm-MEi(sw~dmbqk}ykMF<;S={y3K_v#dGvUk{ zd9OLI@BdrZ0m%HH_UKXD(`h7~`^hOYCAfzFeHTNP-)pncxq+0M92+a^w(bA9_-~(- za_KhZDiO)kG*woRY=gGVmEVa+9Q>*r(Ydd$P+Nr=wx$XoCfXXC%BX~FPKZ4ByZ)eORj#9|6&1l}fm0d&GEskqXnQ{*0{M;#&=lia zU596rdO0kTxqa#SW*dqSVgjVO@y~V+=5)rp)=YW`_3kWi` zvrtyFBieRPGmC#9WC&vw4n8g;IqLF*c6EO|_pd|q^KWtc$MD@afOB19{J4faM2DT9 zrr1I1X0EMMQ0{G7=Mb$z#aj2l)ZaFMM-Q?8Jbe~&b~dGu;l~AEKiaw216hx6boBO$ zn{e3wS@QcwUw)KFSX$AHWLx^v&;6k5GY2=9&=g}vt2{0q0V0KeJ6Y{#?`Lr_*6r() zS^WI@d`C|gJ0!M7NNHip|0FZuC2xp)JT`Es@BEqYO$Iv0CaC-9@W2P#=D?gbz2Dk; zC)0_OCnKqbP(jLFNGheVa;F(-I{P*h*@^H!Xzsa?;}^-ibp6n8J8}+i6wV3|r=-;O3`@=K~n(a}~G8#ya8c|N~} zID1GVTQ&NPQwcGT2{>l=&zt@2li&rcv z=|>L&4AJvZ-={3-)wiK6bME-ugs+O+(3nK3bJvz7GUz%EK zjTVWv|9Yex@G@B?OfA+~pYz|?qAx)VMH|zzo~8S}gI=9;)4sl7Uy0DVZhkE88}BfcUeT)mC}n1kkewUs()F6_^U~-GPNi$E{&UPf3GA;Lmo(~I~{+)w(9c5snMM; z*N<+*Vh4RlW5G@))6FKnFTrhB!DcK4IKsjY;Ja5dkGKJ(gMT%p7EwJ8 ze7E^3)GY&;Gk^oy#AG;0;s;AESA}4LOGRmlg;2@ot2{=BGK=-9tPA=Iw%q7*yB-Z1 z>zT8I>SV}*edXM&HNPA5qaVyaGT#_=1se^P@um0N@}A#cX@y2D;8WU`)B(w!XTu@G zFFET0h{F*#-HDx#-`A<~+^wkP?Z-d_}688iUh-CrfU0!;oTzePRYr_EV6TuiFx>p^eke#tleqbp*i>8y*_EY0Up z@`A_xMM(o~8#Ow&7sg6uk6N*X)(n^L`2Y!PjX?R z>GE1jdS|EeBZiTisqaoXir23x~`4Lzvc9YUH#@}ehC7&kta(5wlQkh zm&LKZ-+X46d=q;mB0))jHDjfXQUwLVOL9&OS=EnxzD-wLlW-SRch=Qk$UW4>SES5((3F6Vq2G6- zQacx%p?t#&VT+uMvqk=U*M=)KvX_ceUD;YdmFin~ugb9PHOeUxrL`kS_UFtq?d9zq3%eT}wt^0C<0 zt57IjB?@5C#udPS$^n(rg(9E6lMie70Bo%YMT&v8Q1W-&xj;ryHL^z~&8#K@ATxYq z%Ua!gfqTcR{lk;_sedd;o!CXB-e!g`h>lxsHkfr~d}V%W6z#7o1H*#dlh?p9p9_>C zd(@NJP?s3YL%}QYXSyYjx%il-e@8+kH2a6(3>0USsEJ{7w{noybChLBUpAJ{ow?yvq>MyjQ2!*__H+4+n<#g94fmjA(U{K(T4!wq z3luhXKb`T6lPr+7^q5?})FhmF)qUU%@9%^m|LzR`>tkCk=#{xt?%$0Nr#CkZXHA_?T#wa)o$mF?PhO5-IAodRbZo9vYKlZ-($o9>& ztiwKOiKfcIa1 zY$KeGKQTTdw0~)TR&#-(tnWF-{dBB{&2Kmt)1eC-UIj9Ah5t6~{p-~FFB6aF8r}B7 zaM};VnMa#}@<4Sly{r<~&#WwqdG(THPCyxk0S0q(wDxgC_*EW_4>xUmyz6lMQ&rJM~Ay9z8guSd)00`eCShyq%PilI9naOtOKACNI-~Q9*%<1k*L_%vcN0+9U z9KU>^Z;T7k)VKx_^Xv#mXVwkbwhEV#(zNy~w_Cs0EDY)%>ZH%&hwr{~gF5JLV>2%r z;qHyP*CxH@l-1b2GKY8th$^SJb6mTB0k$Z9`F#nQfDw1XjKq{!!CI<9+)El9d(5{t zkSZ1S9jx>H*^%qGLCuj`S9X)+Bw;H-iYN);=4#P4q<4bDeZ0X;ff!uSfbS)WhfUm^ zFaN?OZu{BJiy;5fim$2@P|tDr!9LhLGWYFmW4d>zI%9QL>t8J9znLq)3~gSZOj63G zqT(velHVapk{Hcm3EdKq?Uuh%j5G=xF6fI;>Wk7BqGi~<_@32wRI=EPD*!1{<6W~2 z>bPf+A!CrV&BT^^IY%^Tu?be?KKfoY^1bbVv=25lWb?<6W}tg*F|^TkN_8Hc2Omt% zrR*LvxHuPtYqa4yO{qhXlhQn6eR>rP7LVpC441fDph5`fcyVLGcKIR(9zWnHb2WYr z==D>;5;_9~RO;fr+_;$-qmXf4YV4sV81``M6LBVdAEERC*E~xUmxVdjY}DV~;nNuR zy&pd+5v0t@^d%$qN4-IR9ooU$_KxJHjw@)4@Sj+AdQU-^!Ke0F>Th?$bLnKD}^(l`VX@ zuhKZMy6KU={vKyMiy5#E={`C9MAGhZ zrbmy7Lk=IHe0XUhht|K@{I=wYVH1l#mwOXeO3~sxCcxSl&FrsjfAf((`QUnT=c5m6 zp$65}9HE<|O-ZN6M9F^B%`0AZgdvjsM;+`2*7T+{Z57mcHd1MIWM^#z4k2Jqgi28) zZ_c=q7G<9JM(e`2@7i~_!2?n~FG)beTKz=Nk41$sP9vyfBTK(AbE!WII>o$12W@p} zt%Cp6VfCb21QLfPCMJp5*>+_LE)yoGY2~y&n`UaFJK12-yaR)bnMNnYz13FV@Tg-mgXH?;0R5g7)Y7PJc=`A95MtP5!em6esNoksYaW}4S&_x#z75SAQc z*y6lbNyo&y!_{^@l~qo+QnGuNdX}&e;FbO)B^6FPj3cJJRCafee7Ho%<76q#%5Hzj zNc#KV(%g_ctpRRE->a$@n6*eu2XqnR4zWrG(P#8RLPF(lgt5jf=O-ofx7tvX=HZyF zw!Pvei#9wMQol6dA@>^w$0=5*ukI5V24&S$KG6W4eLw$*|dWOIaIR$ zj=lL;^={N8Y|O<=YuN}T7Eo+uNMb5lZ`hB%teiOoB{AJ{G&W#C?$%gPHVXlFWFHn; z4;a6DO{0J?YtY_Ao-3xGjnSVF5U4))2!nslY{RYh*TH@0^Bq%{#LB#;lh(krgz)-;ytwK1g9U6f{SdwJu8#X^9q<=p!HjO^(kxfc+z z5`4MF5j1(zZ=tWD4}UZbL0&Y9{v9-J6(Bo`AC&~2wgo_ST zR3eySL55U}oV-S#sswbn!21bb2n}hEjAE0z5N+<8vtD})Uj35}hK}vHW6WaO;t!4I z>1|*86sb2ve5Qk8VlL>HmO;3f#-j!Kij`cS*j2w`qL2pt^b$i6_ z;?I)o1@FmKjiue5=LW3rV);md4jN&L!y3Y$eA}M0DH$w${5{AKivGA1a(0r|a)`fW zf6i9U6}0xtYg>`}-N8ypZg47KgSnd`pr9 z_Ys+No>(4Ew3o%p2OP5d5o08m7VhUtcetb}%JkqGrg@3@199w2pumrx*~IC@>&U0y z!Ha6MFbL=R{@wBF?&6O)*g826(ESZMd{=H>H7r{J0zAJrg*&*wwXUcjF2C)3l|{gq zRrau${BTYuC&>P-pLzJSGYkaAjnA|ZHh5NYLt-~3P`M@@LA?P-YY!Z9pdY9GJ1mxs zd-2N}Yi+-7Fk^;r`wmB1fa7t>4GABKH2$qZBK@}~k@|mu$ihA`0qX|g$AKo=B$$e` zjmvV82H{YnP(ud6Q&$5V1fcT=GYnz4!PzqCt)6Rc0NAhR3>hxf{?l+OFJ=rQHM2++ zG7%tf_3+LxF?gI-vDb8{v1Cd3np8a8VQKx$X?iK_Yp19Nb6_Dd=*l4M>Gz6nBScqVY&+f zfi{VaaWDdV75Sh+HW%BC?Cr$@K3SLn^ng8^*dAxS@TS4UfTc_U;#lIlF1DN!=H{g$dPk*Z_YT!!XG{gXHWT=j%>QXU(vsA9Us8+kiEZr{KBORZlrcHh!|>vEMFscd&gy zu-t|^4^}-UF&l)1=;JUPp~7>YsqzlUucdJCxT%09^0?hCzHsDLXpl4yr%CAit1A5O zevkETe2qWc*3M39EO&-EPmUADRx8|pL`%B*O5tt(w!okvr6Y=h?0Yg*-c0@+HNAVk8L|uU%4H$ci;^GXe13UX6%#r8~>A44ZESOkj_FDD=%~%pa>hn6T^_kDJBrW zG9_ad$x)w1&FR}&dKmDRrlX5^G{d1!f*-eHNvDOG9vHH~-?a1y%V^}zwr1U~X&nGm z)h=zBt@W3PpuHf3rW2gI)0Yq zB$&Ckw%6vTMAVhNIa#l5k6=i7PZyjx(*ILl*c>Gtm99oXB}L{T&9nFF)W6SA;ULywP|>sBKAMFfSEUeP5Q5TG)S0XfZS==7*|Z)T_lZiyh?pne zN~>K#h#&?T_dr41ms`TBe_79MqK7W&{f@jNmRQ7~zMPY5o@^&g}vUU{>4n z(_(gH08NoP>eFC&{_fy=eFYgV0P$09nsuXxt1rXQ>jVCv6z04c#g2jEz7kCo9=D?kJ#1^6{4S*cFI~=j-~6&1eX>DO5E1m;1@E_2+%Jn5==8*+$LqtbGM0*{5^hw~c~mZKBT{w4>& zVrKD*(<-~h^ibx{6)>SzUndp0+45k+cdA1pH)Lhz=pRTP0;5&v2oQGuv!C{Uk5{nA z;cX?}v?|T+{LEnTK0k2udE8v7VLaI?37pZt0Js6oRq^xl8*V@yNTZd>@utkP6~Yx^ zf7C>b5p)ccT%JFxs%_WwnB>tfDupv8JyK6kApj0%+EcqiB>B}-S`UO=Va3_enpr4n2tr$4qdf54h;Etx(w?=lPPDzU)+8(PN zPJ@qVajWDSXJ<1LF1{zVBLfn|pP$>0P+kxYH+Y6Ysk!tQ`?@M-iWW%c(pH|MCmVxKLZqwH)3ScYLmi8- zHPI~R3U_KaEo{u1@riGt{`^r=+-y=X5pU?s=|Y0XB2WnnIFoRUI5+gRMdlbL{OWi5e zd$$Fzm>Q5s&w_Ub+b<{3!~wg)9jG%8!kz&Jk{0N!pTfkT3}p2-i{%^3QRY0GM?i(1 z$q&MX%8bHD3DeW&`Ul8nyZKWt;GITSuL4(1e2?tt*_Z?wew`?HYayat9{Uao8$_JI zFljj<`l!#sKo&~LGJqIUX#m1+TTE7kfc9#3n^r92eP)9Oq>QEoG2Dx)h(|{*sOn%x z)$`O_2uZG%!CcT%nl+GF0QXDjM=;)U&M6Zjk%O#@m3%=G!nvFKz783EX1ulfc&Dpl zF_iq!hinkP=QlL4mz}$?39Zd&Fmyqcfx1H-BpK z%JSRXAJGON2-373XK;fStzKn{dzmIV8#wjy(}kNGDM&NtNqFG(d#yxTWy)gByMM!E zcObDy8^FHJ&UQu?(*_;~!R4fma7~ys_H7Jhf19{38!bgvd?8RjA{9Vqt8#0(KS^q1 zZT{qO^Xrd$cakn<0mOg&<7+z@V>{)pZG zc<8ZDzd6=CfXECulq;6&4e!hbF~aaZfV0wf;McD8sV#uOQp$T6Widdm@@6ynAd8iE zn0Y{qL7jP8CCNU)qi220B@3)z(J)=@@N;i9N`)&SYYe7LzJB-xqypu9s1R(`GC`x% z!4#S!jy0P!H+IYzTkpfS8>C$ztu=>i!MWZnyUnSTfdOekU^;*bv_WFBb8s`GlHmXY zQpcm?I%%k3_y+9)hrG9kKB;9IBk0sP=kswbSi9LM__Qi=X*(g(fGrdn@(u80VJsja zKbYdW!>Bp`P~_qEre@QS+3S|rs@OOZ@1G;t|I0}SP_fzk(IW8E4F);|Y&^VdaM@6| zYOXLxeAN};`T3vb=TVR=4#|3d+hPg1{i@6px;e^iU+XBK;8GB9nS(n7xVpvZd`}0I zC?DjXIaPpYRG;-FYJmy!k(}{1vGRHmTi{TAWq?RI(}~z@P4hcT)DTH(nDZN$281lO zYqDE!qx)1vgzsr!Y4b0o>d-i>{rv*BlGe^@7^}vj>SvD*=`vwkd#WSEZftl$5 zNUbU8#IC@0F6ij052d5eXED7uW1ACN4YR^Jpo8+JsRk>n63qV5T<`-6B=k|75lbi< zR~%?7HPyqfFP~B~(DZG3OuZ6%X+NriD}$apM}sgP3vte#$f)k?aIMB60dRA?1cq|;{jVF3if7Sc>xcK*qV)6q#@ z+#E1XRR>wYGU|iB{UQ3yCJS3g_W;N5o(emp+^?mKq?S+z0&=!?h}Of0Q-Gzg>m##Z zpWnn6W$+%&4R{8sDo;W7ZvsHabpjwzKu6nGUH;7Wdu36L3*l9GD-YK7Z= zW|vFaGvwhSzylSzq*bI)S_@<5 z9bF0|Y$eRL26T}#$_rU(X4`Yt2yQqtPm+?u%i5Y9Z#IOS2k-vX5Xmg-I(!ZEE#@Fb zxs5AQYws4a9@Z1Yz|^*Nh=w_@g45GI5id;o$`c%hboFTVTtT?SF&SVQqY8wZjHP`x zc^jsoku{q}BcQYkBs4u{R5x5s1)^r0Rn8D|GIe_8xe37i)y{$+mXyfLoV*^bCuMua zg(UmU5Ny_)l8Ub>)`SDBARrP+PC2Du-Rh^f%Pm^>2w!pw0Sc9wvw`akF!!_=#kCH< zi@_;WRU85Q&1o`7KpWaYBu)hf#l390U6Z!cNOg?7IC^tv3Ay;@aJvqhe3;g zW)UB-Ra1tBl~UEuaP3zfx%rsFQe6(bENbzD1QkwUu8`9x*~hc^cvXXy>Z#6|Si>$L z$(FR#BZ5l2m`@Bx7~!jtMgY~|j-UfLlE)4I8@8&K*%*kO0ZLbPiXBjuNiYisfLRW* zm;sWo@<&#FeJ0v(P3kB^59fBY5Ic2^%#(q*a@FL>{9$ui5FL1;<&MJH>ksWuFll=V zTuZY$%0arP>1#`M$(ED;=82WPY{p)(R?8Iy$n5h*i25+k^b() zuSa5<>rKsZa3-~qbGKpIx3y;GvtUQpA`m6r@Fsq6iW4Edm=4gKN_MC;Gy z+_E1(G0PevI;m9)6)_W940a)+HqEszwadF zuWuPLhXS#EWv^r14nt?cJoQ$mw#;E#nLs!84Cb;z^qETr?(O+J$1@bGGj*55Vku5L z=VG(O|BvMT|NQCW=dYH^#0G6-yeA#TPQ$wWn4x7-Ja(G#L;LouY(5yb6g8BFZmia} zLftApA@R~D$4oFXxS>kh&Ts5uqHbExTnN#P6Yz(#@u4fXu|RB6cIC23vrKtPc5cX- zvcox>kn9Efv~OqA>kJG%9@|SBBUywv`NP6#$WiNZo1yy{ZAJ6xZVv*; zx^a2Bb{i#UKe8##dIONWG9t3)pFZ7uBIP39t-PFyjy^5Nn5=GM? z3G4xItua0l1&DH~Q&sG#)cmoH7W4LQG*yyS;0bewZtgf(hkRBBS6fii9PyZ6Cs@lq zP);AcywtO)1Wf_Xx+RpeHsEtZgq)xZ)lgQn!GRxAo+$8chld+EE(6R>eF8SZTn|JY zf_VVNIJzn1|C0$m-HFLB^HjE31q@f%;Qp*8?InALYgYb4lwOWbRygf7X+{vfu{YxY zF1o3mEz?zJ6vxakiTy%kJ6~Pc{cX1O1o7*FZI<)jkB{W!^gw%}Bw#XWGq(W>;DU1M z(I1e#b>jvaybr)I02E0pnbta5OAK`n#>pMN3p^g;Uv4|xn?-KMUvPZW4OXHlt-tr{ zLe9z0lkV%wGtyaLpVYk#1{QN@%HY3W=h$Lm%Av)Mgocq{$Uu+3+gSjl9>a@^+26Xu zf41eM`0w60!0FZ2Yz6ZyCen$-D~6W~j2Li$k&oa)ptB+VADE%>0gi@Q*I?l(joO8g z0~!UDK$G3u{}T&LY^Z&j@ju?6VHE}PW}zJ#V^YUlfcZ~c+H*cx`3VF#b_`J)0)smg zc?-8bc6O%-YJII#OX6eB7>wT?F4C|&*=4RiKO?9^q4g#!RUNs>GF#Pekv0`K9~ha- zH~*-=AVgYP0@r|aQi_G3fWTuLkLgCwmr8>Q&?G*sB9oe8gNoeTT#s&W8smW>kQEal zhK1I8j8}9+>ja>;uav(Ck}m7-XiQ{t{pikp>ZC6tzfr0cV?#_V0SG9z*WOc{&^kRj&;9sChiFk2e(xUaFj zn++d$1g{pDFo==CfFGG6cd<=?xeT0S6|8%Raf$QI{N#)*qvsLN!?LijWZGDceNmh~ zPkoSdqc2m2d5Q;)0Lfs0$}aHOsNp44*r+}`=Lm~Nqyb#wll+zL-?deFd6;oG1L8<7 z^DW66szBmIkR$r+lWAtA%a5L!W{7xhXq3aytKE+&f`#Cc{*<=OFHS~NCT*{qyf;Tn zG2_8@3uZ0HIzz9ZQF9_jmXNwhI8}4q9dWw<$+JB$2(1JM$?bjuR(Y;BljN_i#^wQh zOk5f36F3n0`ei_B+8%+AuBj&*G+^)>T@}<+cCa{PePkYc)9*8lQe4P}XUWGk!dBaT za_Y+;v}5b8T{}LDob;L_XY4*bp<_SK^k}i{mpdwdhk1bV)WVfiYoi{Yi1WucEg6~t zykM4{dKu{G2d~LK_D)T@;acnV+r32TP2XE1A6wWKeMC(AkPZW!I}%;cONHjIh6~f| zrp3o2agik6-IJ4~|NZ|^A(8Tu5I<}3@;}b+Cxv3FvWpB_7TbqdIT8+f_1iZ!r%3h_ z?`kYn^2Dar0o0dlk&gTtMH9Av>PHz9c(X+NPqCRt8nBrJJsD=G7`#{4MPrZ{Gdh)l z(XrEe|Ngz#I;%sEq^N_kxpD__^j$}h65+74z1WW8vH72HM)^c)EDMF}EOT72pX@S8#QS`@X!WP~ytCc9 z5Yj1w+`8QwBv~zBwd>E8F6=X@bf1wv!DBrZdl2@Wao`m-Knt;rly9}0sBE>%oo^p5 z&OONI0dl>mfrObOU`2!st9;;RdiIC6*XA7{<)y@zkY06l^+n`Xa6H03@S=j+7~)1s z8t89UCb5T1SKVjz33?KFljpzx{$E&N;@!z8GDdJ82DvW!aM&}7VX23$ukB(1;U`_h z!)et7HPrx_2GT_08?IH2;RD(v&4tfS!xT&@^O&SQ{9DuezZz~DDKE)_|G6Y#lt0Xy z_E{!L?Et^YgQ64#eL8 z(w=yi>kdhFn*+1lzg^$^|I%O=58*3?9*3_sgrLiinDUQTvR5hzf#D)qRRU@tFsWVhUU)-&!|Bboo zKGTQ0E$ltb_puKd{+Ydqw~X2;(f@d&0b*C{Py5E? za#?9V{c|mCSjJUVyPN*NqA9-9jf+=lV=q1I7klVs3NpUyZh#t3;*Go!b4^d+Tt(S} z$kQ(Wp-U6NPmyVVE2O4ZeWr$2<&|2_N!D8v?F}=ij1+u?maL9v8+QciDb{*lJy4nL zQbJx7Ks+Q^*>(PruftG7a~c)gH~mdA8!YQ*n$7;kjJ=`@LF{#YjLBh}wmC(Xt<5Pz zc08hi%RGW`R7|D2*S ztAo}VTjI3yVD0-o?oGVAsZ|Hpewu1tjIGB)_(urdnBeuRMke z+@kmL8lMTK>h)F_Z<9-L(*c&wwtHo+t0J7Be&o)fR~7xq6+G{Za8(TtX{UV4 zdE$``SsMF2$u0H8Xk!{|hNUDSru>8c&mof5{P^A~>#IqV3k6VO8}y#&yFP@0lb=ePdVenoCg)u z>00hYD8MiE4(zCtZZZ6HwK9RCiNR;7aAj!pJn>W^|*vx1JYzDY{_b(&GUs?qR z^;N0it5B|IKL+QYg39;R)ow43Q{H-c=T8o=+w5)LNOx*xGKkr23$j7r7RS_VyoY|n zqqSDoiAuGP(Hgy=`1S5xvkDcod#uQ3V>6rbE=l^~C9Q7baw2J*keNqo{$z`_>g5@U zR5%m)05Ra!{ z8VjL__0Q^OtD|cjbqQSe)Yqd_Y!04>9<8nSX!5~C15K9JT&;L(TaD- z=eNv&Db*+2X(8eSjT2G;d~vAG`8BGG_)DL-k&wqo9HcKKzdUdFQ>5?MqM7vdib- z+v=f`R|^6To;MjbYYHh(S{N$j>4kaIC}1h9lb$m?(Sw-h74qK30-$&b{b2p4YOpC! zb=y~W%Ln;|CphmxPGoE1W<*@%60JUSDu!YF`-*ykXHs^jBpJHeJYRM< zbi6j&(@LuvipyZ$_HEHKudL|Kb{-23FkzW@2#q-W=Q#A5<->u;PSH6$@yCzXlkS-h zen1aTYA1&)t?M`H2(eW@ca+UEvn9;D_Ru}hDQFr8p=d60>40HD86}c%SHnoXrZ}cZ z2az*eGJckz={oa#sg1xrTD@sQWPOnxO*|bw;54yV zjq<%4`w}OLX)7A>$M1Qc?1~S=&8VFQZ^NFBpPuD4>1jjjAx?j6g%3~0;eM+2!gZ#z z`AVwz@z=U|N5NXVU8&l@B~z#Ahi0bZ34S}aIZ3rCQe;@PTlscaY%ePZk6N(;#IImI zN5|gE5!h!|#?m=3cTY;HX}C3j-=rQWQIiEpG>@xq$8VCo%S!^kn?9NRkr-bt0M{C6 zO7E=9$sdM6p3kOH<<Q1WR`@`!uQa<|xicPzUL;)R7f4k|F`}QS{lfq92 zkL|nsSnZ&Ko43^q%H!E5WokNlRv+tMl#sw`SP+X8VP7OA`w`MqQ|{Mz$pf&TB55wzN}wkVAraP) z4V^Z`)RoE@{VdZO!JOUVMvuSngH6I(^fnM2-!snMl*?S15fi+3Ucof^Vk3b`UzX88 zrg;blnXDe$?Xc>x9k;-%F8pTTaj$i6=j$><3fpnT4jvJpxYq`9{zR4pn}rry1#g~; zV7N(7i?%1C46VIiXB4F4>=DB(h*n?ecXL6IZ?FQ3w0g78Bk3m|#rE9ivz`;vm82-6 zm0j~MFpAn2}o$2z{R#n{!H01!6Pj|nZMIG zQ82zMNun#|OP%+1)ijdYwx+QUw1aEDAAgSW6C+2P87PN^`^X3DPM#ZR=8ct`Cwcf2 zbFc~GnLPpxn0X^2$qVdr&b>7S3;PF0A1yyN)u%lRk-QLhob~4}ZOr~)+kVSlI_4}> zm2sZ1k}yVd8vaOk!I*%x1aW}AU4f~zcpS4_kF?baD;g>=P=#)#ez3*4^}JKYO=5Fw z4nn{7&skZs|4)O$pbB9NVp}RMmRmwX1v>H0KbTb0eq51rH&G(zuIctqRd;KBn`fwwIk zOonQ07?N6!K)|u9b=3I&zIZ#Y6b6Hr!cFt1C#!jAz!U~fq4^sv`XWqX4pG{F(&{+7M9Q-zDVT^p23lvW z1zciQ86K^N2i-3_#=Pq0R%6}mD-H%gf`vf@v@RtD>eRoDeg>>UK7T}Qx3~P%Y4of0 z^N24tesa8cj7FNM23_-YVBZF?c9{1HZCAMo-SHL8W_EV`)rN0JH6bbAk%dQd=AMkP z3=20@8_EXiSe+~Sf;xgoCMzxJ%1x6*IHu~##;NG#!4$Q|Q<&@hT%-Q+%{P7wr@YTQ zD6d+%!b6$YYKic(L``XYB3%t_Di6GUB_8^qTRteQ;`@qf2+1gv**@UBZYB)D*77%&4MtIX)aZ#%y$nj-Rw6RlT-R zG8jDGgX;0JMY`3;1IEtZb5+;fOX$+&qFSV2U1iml@kj?cQ{;nbHOlSw9Dy#= zoz|mynv^}M1QNgL7jUn!(LWRE6KR*K@|X+=%78zhQ*ekH$AaGu&;YrgH76CwZen*v^e*7 z`C_72RqUhG1Ezy}T%ofsuO*HZQ3@mLE_GS5ZU;ZVy^x%14k-|^-0jxsyG zz(z0NRw2}lio@=RzqXurG1ZiRrL15hJR}y`FYM(JV8LIM*zE5QEVdHPB}Qi#ZR`a^ z1po>rPxCfTAM70 z-jEH2W&QHfCe}W;4bnXY->KTr7>5ijG&tT&RH~1uqjVv@Jj?V3tEqaauW&a@Fm}z# z{l)T_-8FhOQvCD;7Z+mpEp{hcELWSTc*ynWUQ>425<1v;4S2Hq*@J$QAsT`i4uq#( znjGa()&4kXVCD1D%kG%7${Kr)D}x&yEtJs>-{h*u*;UZ-q5E<29$o;+mMfMhk!SG-2L7)_-0m0 zie1~(_mx7*yeSEUaSAsps+OlN;S;n#islYn|Lmvga@1dU!F1ej88l`>IEBf(?op2S z#LDl#@#POH{j2S;@$~Z_BiG&-uPQNLyyC*bhx#1+4}tqY?<2jGo9Xoh zW0tS`{^Tk@;cOC=IC2C!8Zza8J7=!1s_m-f9*;II^KHWKq_1ixB;H?eV-bE3!YCuf zs>^Nkub{KTiw0=E;!*B)xA|^LKabOJ2I?60J$rhpBXmH7TFnVeq4In$Z z5L4GOcVNqH^Rmo~$Rp#VkfV;hjE~OOgpSn{KzSL!m$$6vXT5s$25#XKf8O(i_^GG|`RUE(!R zK(yr>^qH(TD3pZ{lnQMdXEqh%gU}E0-q(+D4Mji#j%h9N`TOqSp(yz=Ez;IIBh9Ae z6dZA;)!0LF}w)-ZXZlhyowxg+CSPe=agz{<5+Wzo-ML$GSs6moJ zJ2=FFXl^t-!;_^S;B>07e{e-wuw^HicP}aKA29xU)yeZKERW*t9p$rlF^@l2;lg5- zVB3$zN(qoPAMKX3NCOr4x0YgsUan~ivk%_R%L$2js%nEgw?00r{n`*b={d`cefwAB zz{jfWE{3U6o+5ATP7aEE1eX==$WVxv@v9 z!(g+n>gDNTJZ>C7@J=Hk$#Onek!+cg0fY3iEx%*7xq&lfw8sQ5;qu&Fw3Z8mI8f3j z!R+~*eyYikpv&T8sej(4u{`&yYXkh4V89X=(tPMg#FObC_(jUg^%3g&GJbLSj=jmR zA8!kSd2_h;5tY2J$r`>pvu^R^0l==3l5%W@4+C^zrRSrES4+BI{s;teeSV~(pC&?08q9A?cG zj@O%g4sk3ZJib6^M*0Tm%aUmn;eQ!FTu*guGV;@sU<} znrVzBU$gjvxSALVyfxZqZYV~m6`fJn>mtASE%CELS%3P*@4nujR2p*EF1;_bt$}DA z8VARX@^D97+!n#BbvtKn&eYm_C-=NNfhUp=&Q&)wSiTi}En9@G{wNeP5j0IO2Ozp= zTMj>w;KtKhkK^=_Iq+=XGW6}E?$mGMCA1fI9h*5S>8g53niR|yTc}bgpM1x>lpd=8 zoC}ink+)R^Ieo@4!L5q6*7%wi;ZygtXrjaH|I-TqT-Nph#{HXM-RT?LaCbfDBkq8G z$GgYXR~w}eL%SOABr{sQP_2MUyx9tx%1Jh67h4w4R;J4Q8SN1Wa0PHTS)-imfXve0bK9n5Cf8!&aj_;@Z^ zyttlNmkB>2)H^dJ!ZVpOa(UQ-(OdW}E@E}~;Nfb}4prWiSoC?^fbrXbsMAMDf4F1U z^Y{cWXYe841U#p9NHKj}$nWq#lORbZUk=L$JRMw_>(KdTPnmMYfS#jmQ zFN&*bI6e4NamJ3@im&Col6@hy3>$yr7_AjVJR6zODG3$XOmK*5o24?Vpq8^j@G~b}`+^pV|P2Blj0Db8cDAz6C z*AlTQ=;Ssh&npAfr1gM{C1xTm(H_%6a>(&{#nF%KGFmEO07Z4;V-o9%gfw_>a0aR8 z0|ZardJdx8Whf#A=7I{`mU@3(EJh)lWt$LQZLihly*^spANQX0_7(WIA7hsH??pjz z($$vN6<5pN4o3kYYtB5e&#hKReSo$$gP_WH5ht;**lubD3E#=4+Huuy%Qhayrogem zvZ;p~ZO=yBIs908NBeyF1g~MNKMscIRC^S>#rTmE&S?QElqDFtALRQd( z{e6vETwKiPA?L#~yvtbi(b_6#e#48h(hGRDu1{imx8UT~!|Z{kjIY;jtbLj?zm~`j zBPsKC=X+f4&_|UgnexsSvUc`QIB03^9;{8J{krf_#l#r9DVhF{4!~=a;xbsPY|Na> z#?FQ;b0RGRjn_UQD3OHu3jxjj4_gb7kh=s}-VcXuqIu7MAm(iz5n)ZmPuDk<@MGIK zOmj26CUk{Axst7ck=)njp!~fR+MgHo5MsmTsH}@hI8*$i4 zMeV)$3e#){fn{+Gy={|7nDuoa-Tx~XWlIPgZuD#yGy2*VVCv=;qu{d z>kU}gh-V)XtjCRb;{51tWG<8%$=fRC3DaG_?wX29D^G5l8c*oaMB8nMtpz}&a)F2H zdUK32x4=pA%B8}nYcmRY?leNjYa(k%qM=%ov)T-sR4aUojLtB?PQUnlo(1(77IyYg z^eWx?M;G_IzhR9S<)K6DRZCLLWqCly#JQu5DObzR2ET5^eOf0QDGel5W^$}3a|X+D zJ903leWnpT6AbtH&R&O}dIYGvS7tiiv+WPVK#M zPw246XYO2R%5_q?8S0ih8LsupJLSFJLQsuxSj8w(3-Hek@Kl#}mXTPn2)d~R{P_p; z6gWY%(D1GC`TD zjHmoyRvStmNl%uJObU}xyKTEk&21=60eZ?$`a`I4b}M#kXVyn2z-r85Y|L&qq^-Am zy?p(#6Rf)W&T@JQ5_YHU_-{;SZ|4WeSr0LZ0TiB+5WvjafD?D-6 zs)OZE1>Q;b1w$W_d2@dvBg#KMa3J1%Oh-=|L87E^pUmrErA&{L5z%e#H7pZTpfX?+ z_#+ygX;d&mwH_pbf>Ib5aBg5MeK%g{%~!zSKVsdeB4%Dl`?|&tl>4Dho6Cfkc4mdf z#}c?B-BVT;Hy;LAx`%HL1Td+VPC7ou{(PtN!tjBJNPAg7x}{<05_PS436$fUhbQT4 z1^j8LjLf6&mp0NFB0^a&Y3fkFTg}Fz>(i}sCTnk!O{#WIw&{$smztODPRd6=|3&`T zo*(WeIwF!IxwV~}9xOVAR{DlL$Zu}$_K$rOcaw~Y=bI-TWvMp3%+*2GBDJ_ofs^qsM@9A)Llc+)q7RbgN_}9==!K-;RJM%+oVv^_^)W_v1 zjb3mr4O2GPeE-*mK7630Nzq?Ig-kegidB0?5zWmg61Ssp&Gh9ELoT0=2zEceQmxw& zNZ%F@`0kF=XyDX(PyzeZC8?Mn+I}(bbCXiv7LH&p$96<&eyBIs({D;Qy=Q};6`%)PwIW*%w-6j2%oleoDdC(Q4H-Y2@bgeD9OKX z+8PQ)g~*M@;Nt z#rp@+$>LAN$vPsXD8{I+zEGq!#Jz|h^VF-RDp;)k7L{^R@j*l5&G)xv z3TLSh%E#?#-xF7xBRb%hP}=U$BiuH zN(*nRL(%OT_9ym~$lX4PlRaBC<~I&gKSp8p^_+2EMqzzi=)Q_Vh2gAak4+qH zomWv^qnxJ6)BA?+Gva`U>pbuX^^b@9Od)u%qWWD24@|V-$I9NqN!sOC1Di3%%|GRJ zQ!RbhZrg_|3Ykp5tAkBZh&#ggF)Am&qNypYJm!#->zk$+lxxDr+9!xZVwWmetw^WM zw1|IeSx(2{T~pI<-HT*lX;v~H1GX^s>IM!2a|-(U4>H)CHLG$33!IM_9h77vij}u+ z7?BY$xC1>dTIF}d)5L2=70sbz?N=VMhpBDRpPrd0Rz}RUnqjUi5NtMf3Hi zpFZkBx!FI3wu@i29KTIH#DL#b8ctG%NzSeRp0&vQ^Lp01q0B1LO+cWwfSmVDyeHP(zwh6vvRn!(b}f%MTl(a6Hjx!#2t z6prbxPae*Z>Xmd+t5w@Jog%%Tt-dUDgp-R{NWl+ZT8gB0RzR<|U(+@lrKyXC-EgA< z_e5MWjv~<-NSmCLDyDL6_e_PWU7uVZO&4@@D((1E-0V6Ty&2%oiDduQ|4TP;ODs~4 zKaSt{x`lp+;-hPMG=nd}sHdOX7s35ylw3T-6pt?m_diu|Rf^?LKLcXxMpm*8$8xD(vnJ-E9=a0`LpZf96~@BduQ?R-yHSJx|5<%c4{b>k&A zC+qe({=Rz5{^MlV{_=Eq(1+s!MalT?i1}jI@9fzY_^P}Ny7&X);?$Ecxp2kC-AH5o z*Q~ycg+W1!+EU+IhzD@o)Ef;s$3UPdOF_1yqGTQ5;OVHAB<)v#Pcq4N-+~)XigAEO z!(Lv)Aw+|2FTK5Ep;1OoUk3?g3Aj%Bg^Mc;%ROz-{dEkl5CxJ|az?r}U;3)lDl!W{ zQ&GP9MKHwY4dqG!#REt64zDXJb(=AG&mxyQ8mL z8XUMxM1hFn&6VI5zDm*?3-S~iqIuAthpjo47YR+xIdf&no=GFRhbo4F@2@ZuGcox7 zLUxekxglTPa>m1-BzpXATVzxmSQoN$>Bw$%o2HU!v9s-q)-d1=s%|=4sjcpx>&6Ol z5ubi+nuu&d{W@<{0Ztdk)Vz;4KmarU9}zJzZtDsvq&KvqiRJCK2?vx@ zKav#SKS@P1iC?E;2#?n@1L(th_gk@914*=X&d_nkoJm;25nu!Nf>AZ&UyLYj8|wJ#71jS1SYb{w?> zs3X`=7}g#V(GTi31=qdLONZl$8_RUL_n2cFl({a8f)T@x^f5LznDM-8bN8!n{Nawh zi^r-oucodY*Q@8^ErYT?SIpM#rA93!cwfwtG9ytNssNDuW8{2vo2M&HB>?7>aMF(} zY$+l5cjKSuj|zGhM{{|=eVf1W&#q zulq=DLjox2kpbze!Ydm5M=g+77PiTL2y|vr79}MO14D2}BLF3wy-jN97OG(Y{54+y zIN(6tL(8MKCczPZ_k>6dH?cM!$d3Ii%uA4k+Qg2Z%7G8hg9(}O(1H@jnhTL_RZl8M zTL=#)G{K!+T3X&ff648IgNo)o#0kky7S{QFWO`L{MiyRs3ucgm`*ug7$Vz^T6*qIm zg)c|9W{aw!7j-5&U=cVY5wADU%pgW)P}Xv7tNYE^8ZR+%-coO4L>O+ZHCJoCGP2i= zDf}C8IQWSrAcmTXb$qBD>`y#&$-z4a++2C7UKrhrtX_Ea2A3v=BM_1@ZESSDJv0fjm(&YCpTe1H9~N3vQlytrCb_Np4*^y`rt)we&NS70{U zeaKVjjjVOVT^Ew2P()ZG(L`?7k`tMiIj>h1vR28+1^~Rlwn4U#s&0 z)!Lf2y~aF&TMmYAcqkc^nS7YoksBLNaYQCnKCK!*e-=_w56kEw6*p_R$o$`# zf@}NUZeR$xQdZX=k@x*dLGNM;YGIc+uc9MW;huEK8831{86%4Q-yHts(i=Fb3S9Y0 zdF|bGh9lF;9T9*tLgLT`31{bq!keu2dC=;abXbdWvPIEj(t_0@pEWjTdo{58@p{%0cX17}`Gpw1q zxH#2LCVXDMxJ`!kCd`7aLzstf9FqLA1@npk*yo;lSSqfLEFvfX#rZ7Zbhp92(QHw` zu<+-W+*klnT53}IdK7JJNJ5%QU|cP?!shQ89ES~>NWg#D;|qX3sP_QUK$_ihSCltv zsx@`=MLm$7kX)XcladfJ!@VoJ`jG}@U=g#mqv02-!YBVnt1?RpGC+JX6?}puV8;>X zrlH$;r>xXA5&4hLWeJXP{(=gmf?2XyyKpxCn-y`;TY4H48?iM(U0^WFXZ``DdFsh#fv$a$(!10^}2&RdU0Cx1ICNO}PI5}80n#wR6 ztLE;p=FQ?Ac6V_n3*QE4HXRFpYtQ)^oG6Me(k`G9NDfj8q)PQj~g!a zYzE^ozB|)xdOWd!l!^|Glnc)gm>yQo!cta=`>}b88sqt}WXHC{5m^VqOZ6XU`n+qW%o zCR=AM7#Zsm2BAP2N_IN%s8bFtPo*dMT`nns17C_Uk+JDTH+t!)K1S2k|MCe0__*_M z0~0xmMJX+%MJ0><>+HbmF|vO^5RT{SI#EHfttQ&yiU-JZu72lFm0Y+Q6~|CoSmMOa zdTIc;b7Ax?3;+ot>PEPo`UOzRDgI^;C|giiPAZpv70&88~TP zOdk=D44g>-#{c<)yB-2)H1xo(lxbvU=Hg@gz9%E|8)hBlkPG~e4EdnUZ6ol{i@32? zfAXL$BkmClK|NCb%AD^X(wbbk`RP5e*Jo8h1d9r~apS z`Q2E~4yWnvv(lQHW|%^7^w+-ke%|=D&R}WPoMXHpOA?X$zDsDk*@#e~QD1v0{)wky z^FB%6K^!gbAY4PI!gFKRoK3mxEL0e6b$s zK@qNGKI?u&kc5UtrsmX=eaHw=bJm$*?9*N~xZ0j1I&z-7gN^J!g@1}$=g`R;PD4Zr zyaCF3TPSL42RS!S8?PJXC#_Vnu=DRyCqFuD)=&VwdZuCbx}st*MBh z$+-D7t0*Vri?+0%$zx?Cgo=N&dC!-ckErw^Bhm0@bi4A*m(k(nC=ORFASdI185b3DZDzv6qygS=R2IbSZ)k{t?6z21Q2|vp|K$5EDXA5};)=oN z+YK=^)KyweKRj0?cafCb_s6||^z!m{X~1pe@m5Palk#BSk&Cu+6jp@Pv9mSouRE`h zjc1X4NuIRAvuC4)xZC{JO=7nM8$!;W;)y$Ag2O1vYf=)q9wp;Notx29%o6nH1V3fX z6lGc%i*glh*5Y~$r|&n3;zLxkTLNLXe>L)&+xr^j(=sxKdS|$ns`c%)3ES9w-DCRq zE3dj#M_Y6|gAYM)lx}EsY<$?lCMH!sPU%01kXQg`UY`ca#x=Veaepb|fJvUvSN4?C z@Bn4yhB;r5@YTy`54HGD>>~|jHg7V4j*X(yGMifBl}fSyKip`bQsI1C+1SXPjZJ80 z_RAkEPFbIHhtesFjy-?)<-|fTtQ{N-art6+Ued>cm;lSN`J@;F-XD31{n6w7 z&0Zhqh&6tq=`#u|DN$f8G_!p^XeEke`i3CBPIKg|xc=uc((m`;U<$~ z+?*=l>Pi_9qBaI*cCf0yV7#C4aOAUlZ`-a2ghX=F(BI{Or{D%-3wE7aey; z*&KBIGKkOR_Jly>JFTzkJx0ISyu8InWqb8yP{E~raDuyg?(YcxeqAFEW@vDl)ce=F}Amd|NXv?=_KK{1cmX8T89Z5lv2o!&Zp73H6oIBYob@Ij|#U+nc%_?<2G=S)v62DnfqT=$j<&goA+~Aos(a9 z@`iEu7r?~{{_m9rm#*5Qp&wt-6s4`zGZf;KS%{_HT0{eiU#=`~(D=z-^wjjiS>nCm z;!jsIE7ksAM9#zo2;dCaScqa;YBy--K{1dEsW5RtN~7Ou>po5u@_||I2U*T!BnG-29pZrQRBJeFW0{nx~UAb`t}l# ze2u!k?FRv+Pjb*z_ya{dZM9gj*ca0m=$4pynRn1fRw-hPiZFlx81^%e#!e4@HjcZY zIMPHZkJMhy9ysQDBvi!tj=fLYxI^OHlgEh5mCRvqpvKVhe9$9-v!uv8y25b6n)TRF z(#ru!hlw*%MGy3T)RDYX6@t+=N}xxr7|9+S`I2#c!-l2*fqEaXpbvXUv>+Eyfr%`s;WDZx)dzVV#3T7|j#UA30fdTdF;jOTt8* ztX&K0x>rEt7-dVX_ThdIalHtG4sFAVcfj&sad~MSuOKlX{%l`(z4i2cEBr?k-bLqC z;xLp|MqdbA@gB0_`N`wC%pv4Q;o|@$WM|NO-a9z|P~ zf{Q9j;{BK`veI28qgZ4%>Is<02`_DXyLrejCaR)|i<3tvAHT^hdLjA3i9K|>LBOcj z9Vz#hcgLMtyks(7rF=id<-0c_{4kE9-M{5^(It++A|F;TW^dFh=*XUV(m4rM(-8oYIxL{={Hh6Tz-2rWkJQcLOBL$5}osO${^{Y`>KY8@Hl%?jN zf46~|%X4Ri$#E$>E`lyU3W6zMyV@VB(0aGzNUoaaLd>WevMxIO5iBFZQHMhP-0QoVZ`({*s z?QLQX-IlJam}N1WOQAy*ZV?#`c$81&oN%kUZbb-@3o{h@g*tmz`uI zN}$1qrb!ACg*7en27^hKP`^<*d>%U&R567lO0WHLH#t6z_4~^trvbh0wfG_#JSBDY zAK?k3<)*+wiR~&6`TVA)$g-q$)9^75h*m@Kz6e!A9=d(1Rh1|1ViTcqmMw9qz@GXZsbQmDp%sIj7`IoVS13RECh z+C_`eh}A;!rPTjks=O7nnP=S;j0j$J`d`fqHg?Ds@7pw+UiTFL)>@EbZ`o6<{>E+! z5%Bn8-Jh<9tUS0h|D<>V<<2l#A=6GbJ*X=>>E>xY0J)|6WDe8c zYj|2~B*Gp4%+0U&31tXhGBews6wm=65V%1($uR#=^<)a|8 zXXoL9Zu$JCH5OblkIx4&2Ab8j(&9Z}h1TKS>0dJ@fC8UqE{_W`ojScZCE}yyhM<&* zRMk_gFJxza$Z$bLtc#OzAKaEKgq)lk4U-%njkzwv1PJ^;zuN#%khxH??kA)8>mGkP ziELlwLH~?!x0$j07lkeY~Rc`DshR$~>y3r?}G?+$|2^@6`XvKm* zSkQ@7P-4}a%J^iOAf9@;!r}d|1CfZKJJ$VH1HOETvzhiS`$5mZWn${gJa32uc=r5T zw$#;jiGV-83>K%+ddexifVaJZ0^Igxl8LJ;)Z!v$`=^T%?UvkVN1Tf&CS^A>zRiX? z=UOv2NxDatik(6v>!aaO&kvYytht-5(#*oy6dxn^v#vWstYQLrqY?`f_~83ZRn1E^ z$xy2*La=&ddg0DBi{dG+RWb;b{5ASAAtW~eh{beXOXfO3{lCX-2wcGnBqnYrb+iJb z%uA2JM{i+f_;AqxEX-Unvc`)JSs0#laO;9J!p!K&g!MwkQ_AS8U{Yv6vAtdZEn zq%RgLl&ifDAG#NJGWCCY2pKbZ;t8u?jazl94nWiHe=c(^_%h4#yZpnO%IOHxxwjws zkrLJiD-wABAz3%EC$BX1d!z5DSX6KC77=au9l3+?$PTxTzJ65TPbW5xrESZ57~_z< zx;m^14W{AVUYfO(rU2EdVd~C2DuPYzKg3c4tu=5hkYDqkHIL4H_i-zD2pP+&AufNoS@+8gj7$Y*8E&v_Fy4qPi5j z6bx45N|H#iT=mBPFD=xPLkaLWBBPYB3c+Y^kAbAp--?t1m+7ililf*mq94mZe{^+Vb{ObXJ;0jo!?b^Ga&abSDA^Jp*8`Ap+4XzWn&)2*{ z{QS_KQXG>(k9Z(}pC$z%l~!-5sgr)sJ2EexOJP|0E5e>u`9G<1CNN;rf+du}AFQTU z>NgQ&a<091rRIPA`rh~LbYm&Bnd2|R_aFJ!O!^z~DPpmfc6P#cZZOu?w1T3jsWPj5 zNgiwQqoY>z2JMPQA$Km|-bBGP{Vr!M-~BQ_b8G}5CA$t+-Kg(1JvHS=b$*dVHf^6} zOhSjC#kwmhRpm3LV?FL_C^4e8*J2?n^{ouTYBFpTiO#0MZ-k~hc&z&;kQU-6;;->; zHtUK%cLQXUAP4X=H2`F2L=7%3r8G>F6~vX!XTVZYHWdcx>k={n6|W*+3h2g&O{d=K}i_;C8Dt)i;jcV&cP zxur}_6N0svw07~b#9?&3YqxSMZ1Rq@Esa6_U_JPm!b;RQ@!9s)x|I%1jprIUC!DOG zZ6S=Tir!2eY`=^+CP;B$4*MeA%72smBPQq%Mf}=ocTQDY`?Ka5TrdlY0~qBUaXvW) zJuP;0^~y1^g`THq)aDB1U78~@oOM|6ho%pYyo+HV-A><|uVCwPKj3DsZ`pp{!1%}{HGk&K~o6j?L zU`|T2e)61vD>OYF;$M$NiTV5Sm!9DU#n8*cNu$O_He>I#__Z}@A-M%!LcvD+&qGkF zYI%u-EIx7utPoxi!awh|7v|L&%%%-af9>xhH9P1Pr0Lca5vfzLLxBxX-~t0oiq$iS zE_V?;`HlUf3w3|pFPM*WHRxT^QD-1Q+waF#rxr2%;ub7}` zmjh>ySuGSfTBydXc+r#Tn-<-egm0Wt@u~s82XxKD(Uh5h zxGp$k?*gFsz~7gC{KiSGg^9!%hgfz7^GqG>d7Ho9Zbn)2q8N4d(MdiW?BgaZRCt}m z3ByZR2WAZit|>{scAPE7hq{*o1xL>3m3Ulc|C6ECj;xBghmdrjApdZyo!4W@}I}294s=w-#*Lk zGK~Ru2KIOH#!@omS@M^UtDIk=JnnM`>{{%HcEyl0UI+*X`oU!R6y`O{fQrg|S~g-q zTb+4eFQS^W?+Rqk&@DdC=_We*g(Dc_SoN)S{)k`Y6`O>V|-@WDcmO#|c1bAD`Wh0*im?9e%+ic<0Qt-6y)r>DSNH8hmV?e(5 zInvG}{<$!Ⓢ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 MV-P1+bZh}ib`ceNk7q!sBLACOO z&%w2nFvnre`XtQ6?V~1M$cl$h%^2`bdW$eqEJpyy4p1JG?#bZQ0fW-xs*r8far^DF(EY|?3WJ^kgwEZ~71{X9GX#GnXFF)>hI9Z+-p-d%=D96V+`g*Z; z?S2GSz-e&rtPxyLz9FUz6^Y?KRS*0>%CrT%zKodt`fPV^4(mTEZG9EPlY7j!GLXVe z|B0)N42-obw5TLM9ycbEqCkHdu%1^q0R!~nF)>Sp%{|J$B^0vSvshGpSh!bXd@kO; zg*!%Me$eM6Xpjuc>w*0iUswryzk1kdARonUlC~0{fW_7P1uE+qj9-5im*Wi2bL7Ci zIHh>##S1@kF|)^7as{y-Rgi{j{c1v`#>cwf=NtHeJ>N^7=x^N$6Kx~C-O_dFc=2gUo{Xn?}D1B1ga z-ahdqU##8{u3r=ozxebCwSh~Fa;KL`{}&!2?~6bH*zb7xwpPIe9Gg#~qN2K}@_$6> zev5S&f?vO?_rGuPkG&VT*%B;gqfT4BvJNbFBnU3?<=qSR(3!I)`2<8_b5rfhu(_vCs{HPnlno=Y*v*kUVTG=)0&f z5Ic`$VSRItlPTjz1a`_f9gc(*8jK=ZT2kNer>rf2ngozd0ETGJVda0gQibDU{V1P! zP&51q)%465|6OaVm8)?M?ZU+LW}xLwo|}@7Ok-1v&drvNhKEf`6nwG%vb**}+xz$U z&#jUewv_5kun@<l9bk>Ps&deLCec$rrH1^Mg?a z;%|nhtvXJ28Vc*p9m>v5xcws15V)BGaIh8?&ZB4^@9D{WQGn+pt-Sv1)c2jI;5kNEoLk{5# z>}|KoZCOZY)bMzrAe24PB^e=iyLl6_sI@ragCCxO?2WM!4tP3Ek)vZzHVegpDns>r zTqJM3x4(tUz{x-g)FpBJ*B9GKv@#}!kJyCr^<;XEkD~3Y%+~x#_DP;7R)0#2>=}(8 zM9rtd#>(9i`K<*H@(FvoC!j>&@-t*c)EL6cnMM!&%i9$1^QC_`Wx1XGYCFvI>jNBO z*i_BeYpa*jqv>G*|9{j111SuV;T!vaG4h} z|1AZdjQvO@ zOI=N-OIV z4agyGB;L6!Pgt1{MKhY1ARxee8hl);tHT9H(HA3MPi{&LbsOlh88A#PUc3V49-$f<`p!+) z4?tV2FW&_CpDq=)e|y{^`oF&&eS_<{&Fsl(ilvACUoJ%x9WpYtLhUtOTg+FRj8Eo8 zOA1E&L8?=G>NA@@1>ZG%eu6U56Tbz(@=v4MEaF(q8 z;qGPYQv;+qTjHuIFfHyQs>=d0GZ7J)f?aXK3PsR|W>u;R9)kl))2T;kIn1$8!bu;gw| z9mJc4NL}|YkNB3h)gmT-?A7;3#-l&PlLjPVl+9{7H)DP7>?YTWKW`!F`~D$u|EC$> zY=&Ug)1bYW^Yi<^X;v3Lag*!CW;`MvWbbBc2_~1(Upr1&0$aiB4!=7Cj``SF0>$L6 zP1utum90yFZs0C}z=XQbx;^{>gzGD?3GChj{Q5J2kxdn9-2v+*kCl{I;@gtmGJ?bKfEB*!t+qRy4<-fb(MfSIRz8DWh(G` z*$(8Igz|f(ML2TN({L{* z@$Qv0W628+pd_K^9VDXAGA$N~K|WdDJNaJC_hh>zeGn+98G4L?$&9IIR1!zL_Bl;C z^y>_6`sHDiiJ1+b#VlZ`#lloM;!$`}k&0T(sgwj|@SW9$j$w4ZW}>xOvsQ$Y8e%~W ziUy>ZNJjHy)1~B9SC7$K+8J?f0ginIjwswp!os{LopfC3Z2%&Ia8MueGwhYe|3}nY zMn%~`Ys1V4G9WDt(%s!D-AZ>iC>_$>A>FBTNOyO4cSv_Pe7Daz=l%Y=SPpBLJ@>V* z+DxB=k6@J8*6##rg>cw8IZIZ>9||zBX!qv**@58vaWRXo2A z4i0=!8h!JgNj5TWx4U`?R;uh04uS_Rmlajr+faz?J)QC>oo$kX`jy7|G~0OmXVZK- z_V?paq!P%Fh_aKOW$Bp}Us8_qNQER~3h(K}ekC!9*>VhA_w_R@WP%l>XW#U(Yv-sPH!x=;PS%K zj_qiEAXGfR*)yngzt;ZZ&iAJ0y~B8sLn)SLnfRZ}4TyBxqTKgYuXk0Cd*Nw92gGSn zW1%N<)$maZ@@9YwR5#{6KTA;qbp!&0cQBhMw@@pgmQ&P_2{7_J6}Sf7-Y-2H$SZMc z5`FCt83zoGUUh%au&!swsv-ZUP1YCM!OR%Uz}W>gO;cZo;ey#zlI1ov;6OZ!QN=-I z4@8V<7IuoGB!4u$OH71E73)Xp0Ugv4T`o^2^m zI#!PHi;HQh2zZE87F05ZF$*PV57ZJR1i?vvZZ{uqgjecZjE0{4UvZORf_y@Rh_Jgh zyUo5TD*Elnq-`)beQ>{bYzQI;o;#>q4yQbGF135pFsd$S;0KC-;$5uO0c65n0L?Bs z1d1NZXap9-Gwbs>8|?`VR6V}EBYe51JinCr1JQV0CVT^BKGYU`tWr=I*O!~`yEn6G zxkXbgKaO}SON7e!ZY%TmP}XwNzIN~J@*;Xu;q7m`foWfKFyRk;EJht^_f_kK2GHBX zi?@IOw!u8+|DuY&AP@;Nt=u@@OC^j(Xk1AmZ(6Yc@IB4-r>6vnZQB_bz(DUa>oHOI z8KQxjnydv7LbZVsd{8O{?&Z&qempheU^Wn?)ORxgRlrYZE*=d6*kbUzR3b1CY!8ev zX>r~|%lXO|+$sWj?|5}I#CCzfJbXzm%z%7!EEg3VVbH1NIJQbvMcYJD834GzDdE;9ou3T*+N_y$v=j zQf41;#j|On!q?5}iacb(eQU;K^Tqih*Ns2lF=5v254OMsgS6%0*JXh}WD;j&oCQ5k z#wp?bnBzp6Se%`l+Y;ZL0*Mko9{{;kzs~}zl)y`)2rRd?$`DCUHw#eT;wG4%?c5Iz zM?jUKOf*7*eHU_aAMFW{N3LYiHK|stSNj&Evhu<~r#=$_*nqz3`bCJi$2$x4}q(Ky&b7^xB9Ew%{XW}~<6yzZ*^H3b>_?#HzL z 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%0A5hhKIafkPc5P6(rCA0%iAYpdQ(k$x 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

    $j-rOSGQ~;75juy<-9#Vh z#lusCPE)T*pO4O7o;-EZ<9Jasf|dS1s_y2uacC_K#}-DJyvP4^HYC_R&DRQ;JY0Dh zm-1PJR~R$B`TGVC0*`^({KqG0h>214J;o2mz#mF)?K^PZJ*Wx!-k0LWY}Q5r5;~YV zFnovTTPz3hCqd6*!J~w*&WaAG)&n6NjPBL`;`>LF6}zvBd#s*O0OS6MZda+A5!8e| zL!xT%PVYkEoayR&N87!v#Y32i;Ai1_KZIun`GK|>QT#Adgo1ki^Pmz z_E2YgqbYm7)BhGSNW~U_IY}f3WmG=>;a!9MH*}2!Or^vMQj11C^{-fJ>z(OdzG&%8 z#SuI`+^r-`1&B*tlab;qK0^po0w6&neo9X#x4In~$+pT0eu~ytE>QP>p`Ds_+$C{Ue!33`KxUqhyS7{SWG%K=W94IJN$@${Jr2!(_aPm_7o0-1{?D# z^PLL%%`nP<-hr}3&0NE+WfvFFOE(KUdEo$=e2$i;7`g3G4j!**PSxcxAQL{dA5*<6 z*ws6VR{M0G=W=L$%LvCciuR$k&;k6q%4g{M%!t`3sJW$F1AqpgB!JJh3wQ>tj3!k{LMILLNc zvfCLnaR;)D1;=eBDJ0=IWkQHHd0rr{Lr%Wx!(9jNHg&T#r}uyduwL?r({iCR%D5v< zu&^ptr9iV8Fl*>};{8`kPP5t&p{gP9nV*wpa3+xy0Gl)vV{q;AyC=x-M>G`^>>z_s zNY_<^oMZJHGI%1&=lgR0J`tfngG?`L1&MOSjhEcFfy@%-cA%2gG zV+~;Q!vwg(H#VN2z8(bljPr?9{>wqH0r>M(LhfSFmca%4F%*lTWO%MhVG`^bnE7Xl zS$Lg0zgv~3co}i;_fi_os6~jWdA$lBevg3%R;SV$Ka1~^JGzScUJ{!Nk8*)_IJgxV z)=gKHE{8ZHR#TJ>*cPqwP6l1kP{82(tjad5o zI;^`yeIhb=u5pDSUlTEOEpSQt;cR*rNx5Z3>2u}Q~S_A8Gxas zw|=fzW3dNYvHR88GeZPtU3)sw zHbiyN`x*JiMp_io)06dKSaNY$cv>OcUvq}URX_xws6JWqhiW(#1}=}@!ldUb!0i;z zs~XG+!Nu5OUoY-Vm!S*ep*jaJ4q#H<_%w@$C5=Xb3Eaa+11gfG3r`)qP#B&?(GyvR zya4Rh>MAvPR3*et_SB>Pp3VA2B}fCHhF zP6-4-$%*~ADQPthZ>;(>YDod2#F7;_*wN_X7@mWX_Q&+v+s4AKa2K)lyA(MYwWn~*CuFo(QJ2qv>p|L{zMWhSXIwU-2N1q z9`1Gz)`Pt98V=R4VjTGQZ@-b0#!bIBV|#vgM3f4k!}z`i)QAS0TcGzh`AGWPzHi?3 z$}s`B52}tkWo@Kqf}U4cfL-vx*3P=!FH{5MPa8mbVjgY|myD5T!1W1)YxP*stv7lS z{&=T*O(Gv z-INh`&*zwsi(B^NW-stJZR^b+><@q+T0}ElE`oYKoC*~#7``0?ebk^*m?i(o7LVOM z;=dmwM5OEJ)ccO&T6H=ARn<`(;XCOzvp6<+K)0nOJO3 z!pCGnK~Hx+mkTW1KAjeTrUCdiB9UdI+*U*=*Mb^2LZa)MkeV8%HuH*3h*ybLD(H?` zDK9@w`CBmdTf5qv{j+o$!)?9W>H`qhBkSwx z7Z2fBe#*e-a{<$JrpIxze=qIhARQl|>`~-`4`8gwYJb@RF`RkI)bnxMERHZh`l)>^ zrY(jKsM=LlcEizs=#S9fRt}JixaE`i9qWgQy9rcW+|!pK&KR99)QbCt#PmV}!pH z4@W$G&1bG!LAbC<(H&jLSR=xuKIf-nYoPGovNN$|pfeSAcla;C2AIa>G*7nB9vYmd z#+v1NOxuz8#E#3D^~4%r=k@_I35!wjo@g+RaH+{)NXjc1^|~?4T8~x6ovC`H*$OL2 z4h|T{lx)Eh(a3*FfwWmy&cv7n08E)S7S<8+ZS=xR#ee5WU>i2cY8iJtEwT-{!!FG{>LJ z0-HztDgwwjJtZLn+m*GobwtDaZ##2n2%c%zXfLjIPGK{XYR_IH{sKAA))8mzuzCTj zJ}NPv7|@%dk&7MeuAo^%lcdF2gQ=>s&Ek8m!nxbId3~UvqaPxncRs!0*RFN;1rgJ# zhM{*Y30T2DS~b>g-ihh_LB` zU9u?kFly@4ALqGp*&ty(-x_DhQkbNaC&u-UXsJ0RA~rV!x#;0sfQ)xJbFASsS7c8F z(GbtdCa`d;a~6gJAth@#?!HRF^jq?FnHLEBlF`)EN||UILpkQms|2$Z@in@z1==;F zI^noXj2k0gL!i%X-&E?=r)ENCvPVv@In(}ZDhr9*0~$3_$67=O_ET>8c8tAl-vE6u&4w zkjsLxz#}s-T76b#Z_MX7dqB;r#$yCKR!nBldoqflC~Tt<6_@yD+SgWYxJ@_4JNyi_meM~FZ46SW%2z5 zz)!EKfu$0%8J*kNfk8!St$U^ZHWs>-!F`tde3v81{JT+c&(@a9N_D08wEpgODsoQ( zuT?2AVs2k=&%S~;huz6v)Z#n!l@mmFrN!D^c{kr7lWdHEF)2x5MI{!HQ`Xw~Sr^*E zII;^8>@!7!{d_!lx<+r#=aX?dT;zk3<@JhN&xCPF>=x#BoYvY5&nhi?aRRd6`JXC(%^uYaA&E5JtQ~AO3dsbXbj;4T(6omgOCPBsnhH;h?rruKeZiD93lahXX%WC4kRH3 zj}>j-QVU{#Am9_r_y7LY#x~oTMyLi19FYDlFa_G%d)tf&284GNV&s!KN$Aq?z64xG ztzh~D)(J(8R2Dl@&juSLeR1b*>prd8p!E`*&W82?^yv)yeDw-sw-ch`b#hvc(>-FJ z1H+&U&2>HJ+Z%o!M-oCwJ?&aOB0zoi?bL^BYHq%d%c#>lgpV|s;XrP1Ln)Dr6Ngp? z%!vM$L;wds=@wd=3aHK_Ayc10cVpFhiTXEU+D`0O;wRl~$X_{S_`?7LsGjf6s;&<) zPvGs)_H5ulmm&rRnTM#O`jYc9T@r|cOJ}pi&HA^Gdk^8gD3F?;KKT7T7<6kxgnaem*nA#_-Sy+lamF-u3AAJutgIh;r#VJ5~Y4i7u+iD!cpO=I`{hOzVT- zlpTB{_rG@nj3~ex5~8-4c&CjNfP+%ONbhy;BgDfC7{v70AJuUhXmEm~kp3X?*=(}U z16Z3;0oF=%UicgYcu5iN3HqrP>3y#;=7oT;6xBr?j7XWB-pmfI)Mb!ocK}{`R8TIFf7t{24>DWJ`rO(!T8gs7folR~w zo;*{e@3#_WAtPBmK$j0*mPEU4DD+t(dG34JTXiWdntB3b;#q%oj(C2{eB&i_IXW2u zNl?1IuE9yp4bt)2+NSfoo*zvM@VrJ~6bi1F%L48akUoAJcXrHiq%sxYUWd#mJE+J z=V*VT55lFvqaAD(lNOz850|$`@kC(evB`YDHdTPYs8i$fLSZ#SYtygeqIYz}s3D~e zezvN6piWB4J%NLL#BwT3tLFOCz3uh$w47Rl)(5~|PaBO#6saW+#Y0w_JR1vrA-rLjgRIq%?D$TgT_kI5N zTM{4yzX{ksZ0%Rs)0z*t29MUcF&iN>#Cjv@2o1hq5YfLx9N1V+MvuCa|NZ(}DFD{G zf;94iUx{jd`XDNrlXkQ0ek>%WoZmKB_)WvH^3fq!4HKs{l7t;@6YqLrIC+V8myvU2RK_Ld+A^hHOe^wKH&VxPZM0 zSYRZ0W7*_KE6PGsxbKK&1Bu~Q{}?Rpc9Knq*9*?mo8(w`i@Oi zM8VNw*^H_fV5FO zMcPQ8K1FjdRq}JbS8H(Y3ZbIjcXjg4&dyHW+$);>X0oo1MWcDo<#5USHUkr2+Bn(F zu8?fK;(Du7$B~rhhOAcQHdhgUc?B)U!o0oR@TLk`fr*HuiRe(rF5mbLTd@x0DBOhH zLBCP#$#M+fO&IRt%o@H+`S{N+ID!WvCs+ZBy`(z-o(CA+Di$cKtXMA}xSX+g@L(U{ z8~wU!entm#G(t&yKL3oA(EtOY?btVlukN;jNAU5Y-j1zyMshxC9bG4kX+F~tk3IR$ zM|?!uKmCfNZ4JT4WJnwlTM5BmnjOuXMQNzJ!DGz?Oq>8xolDj^#+4o&9}q>?*#P3A zUk3FGN1%A-tCk?ZUCDM7Wr>9bEr=pz+MdgESZFu6yn9oEvv{%V)iJu*axUC8pv~Pd z{7wI6GxInv3EKYSHw|6|Z$}jIu)o4dj1@teiAmW(ugNhmtEqdf{O7u`L!t{p<_o^( zS<(p2Hr(E`!=-QC7~V8QfgmWSs%`k(3#xl#i(YZM$nvo0b0l?!usB%FevSu0-B zz5C0i(D)F#lsB0bsn2PbUnpd4Fp|qgIO(NyY7yG)&E-Rn>I#IICNE+^-|TFErO)MY z3jm}0cy8wY#}^4x>O>RTHK1ubzuwSqIQ+&~^Ve?9`%VC?ga7ufCIaT;*cU1kBJP_` zzVmI>a7YpZWM3I@rQYg$ImOQbR)f^nZU0DO5Ccz3Z#*Q4A+=7E?k_C>5dcr8r?}2&##|k#t&>6 z+sUE_Zj33};_J7Fh>NBhW=IO(!rCmh6-_dc zS=_%bxUe;D=M0vS+FDyOPXBHRu8m(xhC{ zDA|t_$3~*FvyktB3dT!#myTA#K+T=Mh(I%8JVtFkQ~lEjysS6gr0*_Cje77#Mz62K z(-lSq92Y_G8k~`ITKb!*x%(hNkLk*BH!Ab^9USWZ%CrVJPs?=;b2oH{mA?6z^UVP- zs}Dvdl_yl$qI#@{$74fvX}@bZI;Qf&z3pgkt^g3l0I3ZeWr9Gcv_HA{U#Ur~U%`RC zRQ=qj^a22O@&)bwQ#(C^WEZtrtGrfLKpM!@i^yrjjHHuEX4+Cd3hcl$GS3CqDWu4@ z_ZcXy?5O_XOYq(VS83aodp_uhYA)v<5jYPADVa*mS6FVR$>oiOp8?T3y=v`4D5%q? zPA6Cfw;Z_-ACp!tKenQDBlPG85yF~vY2h5ji|7P;yK~GY$ISDLMh69bRX74iM7A-9|v5B zsZpg5WfVsZT6hFo1?YR0b|I^$T$ZTlmTHl?ABvPW&akd;hdKTtB%ygU{Ru>1n(?kS zUw=!`8eXf$E$hvqtI2S2p!@V-xn9^6tkh$T@*a?$2?u5(2wt~YV-?0Fy*#;!h2&4n z8i+R0nY1;z+d-1oVuh&Q@B;y|ssXu?2nYP9>!S8y63Y0GtI!G?Q zQ?jwA&92i2^?0n$-kzmJH{G7EGGkCk+>`B>?YAh*r|troxIdqcl8pC9(H*IPxEk&f zx-G8u(R9deSh^U}Z1&>cZy)mB%B0=*KxYKxP%$)v*1~@_`@1cl66~a4GqjId)~ULN z*$kWhzU)oKl1cvs^RZOoSx)k8w}dFQ!8B%epY9YM34l4Fa9Z8aw9`chqSjtIiXSX> zF3oNu3|P(9iGV2jqT9LGrB;)g%B*0%NalFHEt>G-N#v7m&XKafpkC1+6`?N}qECB_ zz1{i2E0U-AZey5M>RGwM=u8HT3F!(BgBCtF{-MwMcZl}wj=MO17OK|~ zCsph;o*%|7ZDt19hZCpd50@~6iW+W7Ym_enCiB53Vc&Z3YaaGUDp|`-XQ{aS?_>K4 z%$B97M!jmf78(G5cCNPFLvFtCW+sy#5|x_ksKH2@Et|#+2bv@i3)PiDH)r<& ze=7vY6(>uRI6OE`b_A&>0}jGxxHj{`0Sm|0eaDH`^zYdit zQK0YLH{T)mJ7Vu|jf3BrJ^xug+aOtg%u`D7!$Z)eXXxn~6}zQ3mHnEt9>GlYXV4A6 z>`#&&0LJB+#a}~~O{da1SPU=JeWxZ`AR9jSD@&}WuqK?6lp=ozvRV^>L&-E{%xC1K zQFi0J1-p*NU)|FL=E}6PoZeg$<9w~AgTFKh=hOQbxRijiu8%R{y`g^I@eH=;206VhwD!P zVwUDXFzqN{L^cOvW%>ZOC8M>s)(X!E5m> zOkpJ(qtfFNg~M`&aaQB0(<3kdr@y6NS_RtxnZpJawOTDTv7kqgR?SK0VVUpYXAM~U z;Cl=g@XvTOVyz(I9SQoR%1GR`kjx4qUL5fEkY4tuvLnncpDFi|e>5s`+;=@c5G3`O zDCM$W!jnl8plT;zwaqEBEy;ogLbA840IDkqs_0XOZSZDASh1|tNZrl83U zK3(U8@$|fm;CEBTqCMkh)T$;sHLte+!aVBqwQRy^uTHbz<%{Q`k6;NnEaEo%;+gLQ zpA-G!!%8>VFe<%?+SgT~jTRG37^FA?%}%MkbS`zaq~R)z+3%_9X&P-|Zx6v>bXfq+ zxH{H!QTPJ&3Jo50-)&AjKyr>OdqE{}h=#n5IF(iWQAWXilew^M_j;4q5uGNoWp5!d_WO_+dyP5?#DdpaVWr4Y-Zz)K;&^OFD!@c1 zEZGFiYH`^4zSNhS-=1~E@6&CTWUn8*qtB-dexW%hoqC~rygB+YGrCiU%+}- zY}g&LuF&=ZK~*!>QFv~9wvg(kn#kK!a5S!nL3_?DpUnfDSB45kU$&7hY1^p5n8>w` z8=H7JJ3G(KH#f)u&hh!pTBOLUrFP+iew;5nl{t(bjcgoDMxl>4ul1H$oI48Tdx(b` zaJynIU)1m9+^ch#lsO{dA}lji6dh&UUP^3X?{*R}y6A%>-xv(9FladHHqN0_>y%?X zKv}a$ahtx7F7C1`qg@`XQBgUsHe@>87?e{+!i`It)jrzbRlON6j(c*eef_Cc(5ww+ zsVjke>bjfL0s$QVdhLwtwq^dW)-(I;zPdTDv-s%^p-fttx(CltCmk(x{DHyo%YRoP z=F+^ieePKf^CQ<(#y|$MT$NC{5$BElI++f^GiQheuGSuVr9UAE_?1;**UIyggeA%+ zopzr6Y&#zKY8Yj$R_}3%19H1t*Gq7pI_p|RGbqsZoP?D_o|x;?Bs^x*+Ps&9R~Rfd zg*z#EF;TvaRW?64_&g4PAgN*O{B zMuO;Rh1uTRKtdXnosIQ_VY@BlQ4k5zt?p0Dqxcu9^|lP<=IVhTUtnm!t`%kZXYSqJ zn3;WfyWQZG6y4hDa603m_*I?&-2Z141w>0`I8d(5AdVw}#n++0>&7MI$MRQ@E+h#F zmngIN-OWj2XSW&zmDy}d{dCgOX0v!mQ=&ssk=v@P*|OPwbq*SRd`l2E5~Qpu2kLnS z42l3NB88=I$|-GVZbs7^PYxWqwNECCX4J9OB~Du z&NB-TQ$&cfKSjpmU#2Wo6Cq!0((vYxWj)qvGH3SjRzbUN@aL8Xgf{@hM~Wq zo0!A|5^cWsjMKG)nQ9_zRwDyO{B$b$%>bLpoUVhaNUcMu`B^HqprsPwXC8JuIg4fC z%zf*#wHLXs=nZsjPKNW%+%}Ulf7tKK$K+$D`@(3ZzoIF%9LJM>G}^ufyan#dJoM^M z?-Yh6Gx~)+1Ck31OIl?2YSV>*M1BjE5W|fJP ze*w8N03B@Q^V1-2I>dp@4<%?JHTK*0Z=2f(ie1Rr%qAXVWhRuY=#6aoQeP~h;t7~P z241{Jlx+c}*zd+L(;2XHFOS##BxAb9dkiDvA;bq|hNQXuC@KIzrD8FV2!9KEFj<b1L8Uy&3tXT(|vqM!1xcT1@wb~NWS$|TBK@&O;XI8Jub6R zvmo&Lsx6x!4m`70{53^1A8Mcz>&yLB$=Vf*{rfr=v_WxDS#anzgJ^!bZ?Aj>W@#`USS)yZ4zO55WHH!4rVdlOsVl@gBE4-)#1 zh`jE_EY6w-jUIwjXhzTy{o4;=(CX=xevRd$Gn(84>R=SF?L`$LV z+fNwe3N0A|B-@S&%AN}~@`sSHKJ-Pz{)S@qr7{`BB7t8MGV8U#+i9V{F~e_3g`lL_ zhs*{r@L7!-7hvm0On+voTR;M=m&RVaOkhJiKU|I!whT=B+L0z)4i;vLm+?XkLSj%x5Me``f1o5{e78k^eJ$JC388n(IWeA z*&VJh4CPI$wlRD4u>mZ;R>5|~Y+t76rc80-Nh4I!6fpMai3-z*fJ=VM$Wp9o}?vj#2i_iPNdxEhvf7BCz!39Ym@VJB9F2~Dx>bcFpKdu*Dxl706#~hYd$t%0RP?f&2doAX{uNfU zk~W$h-QYLgQ$KiWxn*tEx>R+DqrY)9ZrdyD3>G6&<@|B#Q4Y5e3P`Jxd#3h0nAvc` zoLi=IL39r^!_CLbrP>HIg&h6vF>nQ*`+iGi)KVwpu~$^S*S{HqiAfdmVK}k1%zBXJ zWip?_P1UQ6UD6;#NY!ME6ZZ+a)LCnbpIIyrLo{NP4)?i(xg557=`^TD^D-GGkN5l< zZsj^@bOe}y@|l;zYB~@S`PMY`Mk1Ljl8~1L)WyqEak-4+p?mA$7*B#EN$V&2p9w-) zcDG?mB(fpUbC!vg&oO+G+&OLN3XIcI9uhW zSi(C<($*m~BFG9-OTP4i!t%V-@KEiR;-YK2Cv!wwT;Qm|r zh657R#LGZ+FwU*-j)a{x>Us!nESvG|yLCx$jx4C; z#{Y-1g$rUQ6Nw*NV@0?Ah*+w8u0~(wR(Jzxp@fl)TVOVQ9p2pE%t46fbwe!nN*Y#2 zr~-WX9EBRcviwgNg=lV~%gf7j%77)0|M~~KHmvjD!ZJz)vOv11x4<{2+$%r(?kBXo z!C$+Dp*{EJGThZ9z6i$92Z7#~-`D31w3z)G--afX;oFfnuHRy`29M><4%+z6jTbAy zfwlycnKDDP@EHJ8&U>xF%OsykdoFr)Vu%|0t}Eq^&I5p9M+z%kR~%jF+5RnNtFI#M z(h8(s*DrW~NnJi$#;3ln`UMo%*^>#2soLHN#!;u)Ou6Q24(uw>Pz;vSr+j^r`~}cA zg3H_%jVwS3!H^qGKXbO4)-Df&qMg94D*gPnj(z0^eY|6}hhpt@SScTqr;P^1J@Qb9Td1f&}TL_`!x5s^?zLPAoM zkVd3aln@Z4r4d9*LXht6?!I$@e%t-sbI$$rf6f{A-m}LZgRzC*TEDg4nD3m=eC9KA z?1ccU!BV_XUtT8f>8jupZ50J+l2ldXo85PWR-kVY?3c#=GgMgZ+F zxu~!82VjZ`)G1Q7+OEwUjVyd5qkLqt_YG%TYOe=c|F~rG&4v_|p&1-)1?RazLA1`y z`=0|78yDJV3n6)pg+12j1GEaS?<)w!ii?4t6j_L`H+Xsfwh%jjcNb1tVSqO6xBK+5 zv}vcNRPcAKrYyB({gI)!tLN?x87F$F?gbF2Me4tw=( z?2tE=@|5iHRV2EdSlNw72~Ad4qrpLPpWe0o7ZS`5yo~~lhZp{>O}YO-ai_eHO>YqJl#nu zY3Q}DGT)y)6%hMbKGEi*&iw0ZsiEIyPhQv~G@ie=O~shjpdYqR+2OQkB9V*L{qh&C z4J5hj_0VL7zLY0PZHm_qO|6pzA6-6>U)Jwa#;3S*r76TzxN_7vRyJSEKJBHjAV=b6 z_5kT%O~<(#=q@pKT&erVmqu4#mOlcmH$cBE5P>JL8^)b+8L3n=Q@0xa_m@ytrZO_3hut+bF*Puoy7iB()}fxr1)Ecncu0K~bKiLpo# zfjx<>s^=|52!Q^#EG#nGpIm@5kNP)(HHy1-#udbk)SONk1dh!H0IgpYb*p1B(4f1d z@N3T)PMxkU+3muaThK1@3-~=B>|1G1O!gmrLGUo;%Uj5qwuYJs`VxlP%~9p{6inD) z*iC;lv*9Ux>Mo=pE*aAIKWI(xg1m;Fu)ebK@~fxgh>72eou$m*eMij-1?s4hre@JRa$STRu|7H4%4*-`G*6B^P$m}$Y!y{8lg z;^$CnNFiY3@h-56N~^Dj{zj3@EoWj|W~JP-6oQUu{b7Uw%Y`$nAzeTZ1Z^JnCVjMr z?WxbvHuts_U&`G!`TUxiPWPyRg2HyIy)aQ^oA{uDPu;p^2z+OIJSpjpN z8jB7ejW7GwFnrjTVV}RfP!=k+!zn(eF4$pu3P@Jw`9Tgp8;mv^V?}N z23^D;TS3U&zk4riFxR zph0lj++wVnaa7-IA$_$OC_#^f);Oc#U572oi2j!Q2T5+IW25^KB2sxAQ0& z^w0|91O~adtAHa1!e@^m3&qhu=tLp%I3$1Dau;FCVbjIDKBV?^;636(4F?o1MBQh5tE zt608A^vrk0QAeDRrq^_+CVTI9)-GUXAZTeosXfV zQHd-^s)`S3#CrYMuOQd^+c+KHfiW`Ze@%KVrWlV=ShFx!`dhi{MZ*R(qmB=iTS7+- zL;#S(rbM&$0nU4&Ua;8@E&KzYB^05OaO(RR(j73E9?_z{K{ze^oDo~T@rSU|5~x!D zw$Z%i+;@m`QoQcjIAqsJCHWO{A*>b?vYVcWig2f1>aWnf9-<=59QIR1ScvEFQJm&Z zIF&5s95R!x{Q)zn1*=Ji?rLRoe9Ct~+pF&w%|dC)-|);IY|SIrEZEZfId=kn8)wUS`-3 z{iAU<=}u$vjoQG8mkTLt5_Ndbo2;JBfG{KW??89JOUYWKAYyduocqZG(%S1!oz)kR z9aEG2Nb%RV^F*j!8^`W$9R5-nP3m})o{&EA3?k4!OxLJpt5^RL>wQG4D6oxE(|dQ8 zxyRVld=N@%JIF=&(ykg(-KxE>JtrZ(<*^y^zU#TT^fj?7P0*rHGN61@@%@c65oTIN z_O4+T!9xe!)Jla1sdwT}ER8kbzf*8I*a89NCbLi^_6MuY1n3~J0i1JqLUN4QmYJFgWJpn@CpC*Wt^ z-(vi(Y?-aF|9W@tb7aI zfHRttO{0JqBF5}@xdOUlVmpq*#9w?Df;&|XlOHtu6x33do8d_%Jr#E7wIK{{=J8&x zwc*qb2)Et07sLH!C`r1CySTf8_ELu^klV^!>)J0q{vu{+(2E&Xx~Y&$9B1XSvDoxp z#{#F2HtFy@`16`I{_xmYb!BSBxaYpy)^%2ZB=i!voflPfR;KxOBJh`~FS`kcQUs%> zMyeDVFwH7_NSy|{a;6b?uVj;!`bMJcQ3VA*Oh5Yj#Q-Z&%ZJ|tWJdD&HhI%Z?EV8v)%yFcJJG;+b0 z#2jY1O04Hm$5>UoUsifjX$hrc`dDwRs2cU=65>p?i%tQh<$H)vy(m&lDE%UTigy`W zMK{@%(ciBPMV(b^3mLo`UV^edC+ytlY{EVGcvkR)DuD7ctY$E1 z{y@7lQfop!JTMrjQgBbuZDrmCdXAKt&Yw$FEybaBcrpwXe5tc~_3CbQw@vPTT@doU zhueDXz-y?lHs-tW2i$1FSbnRi7vj>s()2w1x$i~G(f4n8`CixOd5{WmoqYLijuY5T zvI$Y5f1^cTM)qYi6)RgaI<&cTHWAz!H2V;j zB6gTAF;Hy`U>9nY!t9Qhy{;gRb2ca~iN2B)=^EEw z)EGcnXhYbMBS+Yu#IfydO`qIapL2#owr0mewoXi9uDRr$e2JTHB*BWKU+(Lri7PSx zR>Vd=+}zsFZrf#_ZQP2|$)W!_Zq(3hrQ^)ivz$$O(OjgtpG+IiT_qDlfduKd?2yl@ zc^$$T_r74Z3O~HLt>fw5$-h_Rkxzna7#F1equby@HN3+bnxYu8oo;SC@ z+Sa#Ey1D7uGhVmkWL~#VQaMgPw!cdgKTw1;)$`guw{kny!yYMbtJ)kYH4V0grg_nH z&@|5yEn7&X$CMZd@F6VWB{N*RJ6?q;<)SrQcIs=1Uvh zLAB@Jdf#qGi31NLI^Bun#w86zpI|nLb%FSepktac7AT8&Hf?FVUj%b|{iA{EbS4Oe zpMK5Q)ByTsl9To7R#aMd*z9*7yI~Fz+{%ZpoSvDwvgZKxJGoAD-Y#H>=z50zgO&OA zmO)2fVC=r-n(Hg}BUf)fnBmWkp_BZSoC&^x>?2Iq$>wN8BDmQ<5wp?^K)a-&p3OSt z#g3)54~k0o8;d&h-&C(OydbWO)m{z_I4uBNlK7D3^6enVNv20=l3_4oOIVuGt3ZjO`usN29 z?KyexQ#S3ba=%5{9jjMI{^_W?j#AnuwKr|N0OE1In8_RSg@VLArUCt?$$Q(U+xpC4 z{wSd7AsMCxm4QI8rcMO-q@kf@J+@x#kGG6gW_yp` zV%)zic=_T2wOa1va}XEO{^oL~dPkl%f?l$+4-&-zLza=3wK|H{8Bo=33OTGa>d;(! zg&7^amZIp1s#WsD6?a~k%A{vMdG|%TonqVNW6;3% zc&nE8Idlnj-}rv$X}Jh%#-H!8Y=nwL1VR@AKCF9$uCz`jkH;Y)?6fQPm^;w54LXbP z!?}#{=Iq68>}}vfX*(-~_2-3$GH*U4VyC&{U*`60dwo8BCi=43c^jLZ5O;s0&zJ8B zeEV`<0+?0Q440*S&T^rrBjoMtxyOYP3~0s(y^%(o$&FqljfzD#bziaV6K<_enrIfj zu_YkbY)MoY4ZrvK!+Tbyw!XKv{0t(Xwb|?@x8QnNr}Sfa2pSYC`nxW)Uo`#3NG5Dc zEPu95B3h%<_^j7@gXTw1_KNL}qP~)8kyEU%NVrm5)0XD0#5lzWO3&|6FUt9N((i~1 zO?U9`oV*Jigio)hAic(X-_SMO{WR2ix+5DpBvl7;eXdR37GVb8ti>Ok%7ChxoaQOKY(_L zNd&`e%yHX(n`J|@SamKjGJ{eDwX0*9%sLvfRQ&opDn_SbiDWE4T!aotAr?|se*v!s zwvedM(f6jxV0`KPz15t+%gYnKCwTOSZdM0hKAP+h$a7=RZk^O+mVf)tcdZHy)&stc0Jc^H)H;F7-h`CZGxy09mb7hHB5&8!DL<-%%|sb-2t>BCWT zgO&tdguYK+^)0kq?nYu-@#qc+iHr0eV?jJgBcP(Ek(F4qQ>3b797}Ax<1bE3?@t0E z0FspR=O$WGjwdT)y`(O*nnvgccRwl!Z=9g?!oa1dCCfGKCL^j1`P4M{=Dw?`*@dg2 zDB>9Fl6&^HLA@Xg)IloJ`uePVEg#yWF#GbHrjReNw8AKU7>~Ui(fVimw8@ z=?UGr$j#ui9uE-Od}H=3ygH&=*^#){YM$S_bvifBAwsJ9MR&W$!6rc}@y^LEqt>i@V)~?ncpfpD0E=Eq;yXPQc4pmhy+dDQs#ibbsYsQ6M2XwuPe(H1H#DZ6Y8K z4TTBEgi9SV``vQn?pJEVqxruh0F>Ese`Ayez5{>Dld)T%`=7T$~at1xw z?_W8{1v7)!JuLI>HfC9|on@wMQ!tm>y`0o{j>TH{gNDA;yR@l6slr>?05WJq@Hw8T zT`_xN|Kh{XcRTB0Rd)-=y)^H{=DNQ+zBnv(w|V4@$_E2p(3f|H4xb&CP^5z1^?2r- zPKwGN9cUO)PIDW5S{`S6d!6EjGj#L&V5APjaMfMiiiFur%`e_(0JYb-$*gr2)q1{W z=Y^Hn9&u~Y?5F}}Q=HEPTPU5(OLS5m44?J_T^)uDFD5v`K-TpYv!-M&$lIN7PLzLk z1mmO(Z=rPF$)rUKB9I+Hg&NI@&kUTSUCGLuULzhs#2vcK8TyS=o`mh7a?=zRQ>;DR`nz~}j=l)4wp6j?NPWC`QC3OL)w zrgTz!Kav+(ZP%Hi(W`xQt~W0>cknV$d{Zksx$EW~=sop4nVBh@Rkeh|Z0PeB=RR_p zZl-qAd;NRV&@tlF4O+RO>y+%BgF2rBqMvQ5swA4 zNK(t*^*6j}Ya|-sDFd>arXvo;VJ&d_nXCht;SVD#FyH>VC=g8%eHsqdhTz~Y)bS8| z3`F|RFQJFqZyKgWmo=v(mivg^e744V`sOB2TnOGxj1w!LuEF9?!83E(7_>XZ97_41 z;^lp&G?S_6oDKFnHzpeGlVVdS$fIVjS}Y1vwW-JvQHJRbTKF;e84xfHqxYaHLTNB zo%YZ^ay`xle>2mcNBxKMQlISl(&r7kYe*mwQ~TZTp*5#Dl5jy|@_}ZEzpLH)gwZVH z7@Klt+^H8V%U(Q`!nQ7qty8WHB0xsRZ%w%sJiGzLOX($|OKZUV51>~R+Z>-O-qM-x zd!{_e2gg=6IZqeH{+>YjC3umH%A1n1gOIi; z2Y}nR6*S;`itQ-xc@KneuF2VKKCW7)7cp#1PAX$Y*S8C4EHk+RjX>?E8{v56bUI2Q zWKXjneO{7-f#Gv8gk9(Jqa;7w1|mc5LFaue1{Lsyh$_8^B}SLx zje=LU>PfFg>6=Gk6%zNw@VVOR9>RBC56F+9)YQQ)$46>D~RrEI}?7;CxeOK}B zJLBh8U|ec1Hs9KKydiRmZS9RFYJu!3-<2={-UNAa{Vb`{-tDH8Mk>qst~<3K_^sv; zVdHqr?lj}$DQ`(RE`p6tT4Ne%AIN+k-w)Db-?G+4yboDHZVYF=)<&6H#a`09xCp$t zhzC#*#F8T9mE0W1k%O$FS6!>&Lj_4=1$Kd{ADGjiP_u5T1!K)b@@uH5`7lzV0mT<* zxsrTxjl;W7ObXsjN;Nl5N6YT_T?I!q&4}&o-E)dw5BmdYeKUPCjJH`=NH3ls9^@~= zZgS*rlX=i=uG;3bQ*E+&;|l85-Y!Pc^-Yrd^^y2Tw$_7#N@q1=2x7&t2esK9RwgJ{ zrUXTlpZ4Y25+SvP5kL-z%F(*yG$Eu@6_|Lf+j}l`s`1`+?4}rYvvY2HScM&~*aS4vy=bV0XmrrTmPZq(5 z8Gusj%izqlrT3ozx~)I6>J8P-&hy`nq4!hu@Wrm1l3V;%-)yzUg{_&7Ui$g>ad3lFr8g=au z7d3RSX^*y5x4Z82K${X9+tF8bcrmS$N>$~m1dwml!&lk+$pxU!BE1CKQE$MdGr37` zxSdnB5#(A5!Oa&v547xz9o|AKXri1JMQ-=fnHu5%ez6zES48+>_jYw=&|zIh+$!o< z9d797rJ>3?V7RJJ8v*I7=Rl$WT72f6fF`Qy2|=QN%jY1?^#bXdKG&sZJkWctT$(B7 zg_*N|bGSxH@7`Xy?!uWNpBPypcRZ_z+zBezQKL?d;li0te{SQm0`?m`V=O9XlM6B> z)pnuC3h9^mDn>4ZQO~*y(Gb+=j2W>5esYF&Kk7_Z4#u9lU)`p};}Hfz>GO7LMwvc> zs9iTkJ2U$R2z&D_NP<#YbClh4Z;z^E=cVQteB0Ol?(s?cyr;p{wPTqJIEDm@PwjR> z2bYZHjKq(vib6rFae-0CM{P@anZ&ujt>W7rG$AuTyG2#d-hpwwQA?0$%K; zcNO@zGl-A|ylCVZztmruq)~DTgf!PSX*W+$Lm4+jcjGi5<@meg!gz!sqKc{(z})R7 zgQ`}O&1vu}Q3tU~V`E9{ zc}MXN4&%{{cTo8_&@2}^BwEMT$n9!FtmZYKD_)!dL9FC0eZ^JV`r4y6KIds1Id-xl z*tk##_``;!my5z4KfHpf222v#a#-@xr^A%^!D2C9JDEU@DrD4-&z*P!Q4G1z(h&O? zQt@ii9g(s!2Dh#kzVZoFG~dVID!&!GD?Ka_-$fSC!ftol*GrCAQGR_<5!wSle>uf(kpovLeh zYe(2UNO{tXtigf4nXHBZ0eKmag+~n6&?i7FJI*qH3U6sC{MPXR;2?Ld0kWIapA_%i zvh>6TEqmShH2`~gTomkXNwU2eO1NaaRs<=*jndFCYY=wKOY@ZptnBHIBR|T)#JE&* zo(MXUbD{PY=8D&!Z5`QxYOPms3k9uS0f72+j`usoyuKIIwX`Z!ToC&(C|0m3M_ntd z5Xzv`s~lISxEz_4PsYoh`gAb{wXGd#Ye`Xj?0JN+qNIu!O0k1GrCy^Z=Dbj^u4Cne zk$L1?mTfvbm)Y<8?%jUN`~xmlZ704H{kgB$Y2VbSw}>D^r}Cx4T)&fZcuvF>icd@; zJW!7Y;eFZbBm5Be`#aC4?h*{*_Ug}3p-&v>P?W=gdWO&4+5=&&C_7tW&eM@9I`7e( z=YFIJ=5a3W#b9QS8!U-DnF~kE6p`fJC3cPAZbVd%``vvi)~jF~StH2;*?iElYX~Qx zyFCRqKc7%{J_T6Pv=G8Hk6#W*XIK~(xThrtn)|K4?N>{=C#3KCkO0ooj#MJdcF+3( z_Ffah7|iAazIVCszQC7g2MlO^hFT3sJgvg%3n?pVjADs$A!mb_f&+sht+!??p%DK5 z{tq#ajzDF~ys~XI(JD-B zYI%+p3^%-T5@dr2Fm`ZBAy>9gz+w)bdOd{$dk2A)?g>MHK3OyR|KUE{{*%9p7aF6nd z?WhE_Q!B3z^dE&DskHHvlupdgp)j|yYc*n&f)KcfPr59%fX^#2Hx7zVZ*JAmX8M3f z{ao0R&l1nuGV0b3ISoE*BOksTLzV8m#VVGoVSL9yVfJM@)?ohi zPxc0#aW7JnjPmswRh?P7tz;)Vo6|HS^pK$3FhZwFAt^-_t2+guR$jxzzef_qK6BD!i&dd9eV`0$g?)CSr9~X&vkm5k<|y zN8d7`#RLO)nmX+TMZ4RF1-Pf7%cB=t=~cD}1<%XJp{>eHH`0AdkpN>v| zCXY5$IlbRJu@?kqm6N2^^9iB&K zh^-J1#b!3GZzWWDvihp`iUsYpqw_9Akz#{j9&4uZK~dZVFBV`ZqIT$6LbXPc5pYRn z2(!_6G6rOcRN1*xk81sLpWF09uYBlHiN zKf{S(^3g$}8>mlR#^c_*LrpHi7SxKnn-U(_O)L>yuz7$><#r?gDNs)%%)xhD8lUOH zTF@@EvYL@W^F^#6=7rpIsIy?$pj~`4%>X8tJ>Tp1NC`a1kOnutly>g&;7Oh@L<;lH z+w^dNK%hyO@-fL@aOk_{FjhdV;!!Q}k7W}oaEHjD+T;0#hM*F~efgKo^5^fL27W*T z69umvJGH}`EIiH|mR<`524Sk2CK1fr86L@az+BXP7Yc;&VRUqP8Nd{`gk zuRn9s;PC>@*NaSe?PLTzlB5+<`1k+dh5eAmb8bO+=VxU{kAVPJJq%GN-fK$NcTH9^F?^zu^)@iS`jM3i^l)+qW{e3KTG$&87cjh5e2~+>1=LS^LB5ta5?A*%yH2f2luV!zF9{wtXkPicEJwrmRNWhUKqccYCLwq!+O+zuLBF zR1FQIJc4SVxtpN2j)orF8<7>qii*}$uqB`4i2jjwc{ok`7FyHUg0G~pL6*E(SJ9dn zyRUu2q;f_GR`w&ev>?bP6Hg?aT$w*+$u3T-)}{@f z1?ZR}(^EXH1@LvVeUU_uvGAPRT1}Hzsmr*+D6Mf)2%OuRbo)@=zpV??C2&^mwDOcf zLH+S%9{DJ!6QMjFv*(Z(y-WzV@aB7b9N&4Z`v$z*u4=D_v-|9rmA3?yCw!7#mh71` zTw-9sFLfSI(iz3_)CFHrDjw9d8uMix%X%1=ph)rr9@n6Sx0x`8?~Irv5AJ+0jx-u@ zK{;vl8a@mmdMZ3;uGBk|^DTD0MW|g3@5E5Le5tcOk_>1U+F2-nzaWC5cDwXlTQPjy z`dDg`9E@3-qtbgy__CdkhAKfQ*>0@M#|$oLHZTXGWY^{@T{@g97&DQtM=?dJibRcY zkryosgInl-f2Zz&lHDIn;Jh~7I5h^N$CIZ+gQf_>C#^Vi8XdVLqMM!IDLuT!8+x-7 zX!%%= z)1z@rY4ruw^5T2veMpT1R@;SkcjRnW7WH*&Ud9imlaS;EWi?!WXWlnpCps@B#Ca{D zWYZV@+(ca5`N=+GVcx;e3Qoufj@fN)S18o%_>nyCH|@%P5oyyim}#0QXu%kbVtLJ; z7nc?#it`+y4FSwDolWp9YM5pD6o&7C@Tdw4%qdbZdg01SNzyRO0z--R573$@&K8;U z^4S`E79QEf-6QQ=nEkfvT&wwcHsJ#XMQ}Ea2uc?LP0PP_DolYQ+(hzff*3LsSF&N< z_H^^?w=|A6*ii%wI9e>U?$<8IJD7DZ?Bn(g^z3)3$JYtj$hi33ZxZ-(zdN%p6oVZ(y5a7hbrmn$4A)Ga}&D^@SM|p zf_HVWM7nu&rFfA2Jp7gM39Q5ES;3$}up_fy!fvf#!+!3zW3;A&{mgG@%!Kc3)wB4L zh^d0d+{otH7py7@R(G;&b`tWr)!+c)h{ZiJ+eaH$ zc*iCx-j1K^EoaxcbDE7%E9^W;bi2A$=Y#D9yCd#BtQRgYjkdksEvI_?;6d2Rr0`A8 z?wkNehlb;R0Ezl&a1BUxnz_%8G#_ukF6CK&qflP9_FC}dt6{rU@9ab)418zqge(q! zlx!j?+C{3e3MKBXPteA<+ZB>nDu{M2Z+f5Q}7b*Am@Me88SHjHgMbgoJW(^b-E** zY}LHQ3IXf-je&#IQo87|!l9fBb9Mt}`Lkb8ZwT&TVhwmnG4VPqhzgM!xd#Zvhg0ocB38VYoqjycq*3%B54P;NExT&04YeS}Xg znE=dha_^~W8D~Qdg$3;33n;ViYDoJc6}eEzt0KyyZB*J^U|NrRTz!g6>yI_B3zHix z8g>$ycB%{*(AgYTb(F365UmiBJCQW<5!?YL7*+wdQrfCV7+T`BD~@ptBp-kKAn;2o zH(pT`FD9Fo)nMnDQtpwl!is&0N28ld4R%?hgVHgI{DLm(xW^3 z{7P2SAKwV+s+`5`?(GlyNFD1PH^6Hbv$vd-chS2zqPYUza5#@+$O+~7!1ui-+ z?nZ$n;dIo(j@<_G$Ba*5qBR*R2kBkdWY{-4a=An-eoA~G`PxRu>bn}^ee5$0JcZ*C zQjJEa20~i)CCPg;qxRLa_8pf{G?jCMh5Z({Z;$epjWgvn-o9Ay5TzhtTG*$wR6lFL zzHZmPWouhUe*9W^y7b4G5yZxljz3Jfe_UjIJK@p7b;xdQwXWT``D$0nVu92?m(4f* z`isKG1zsiH^6~vuOSdfMe~l}Q@O{E01{Cu3X)m0dM}h`cg4Kzr$RNiSz$Dn|OXi}i z6msg<&G0Udydv}qezH2{=Ebsc?{$xP_pbSnne-LEIn5N~0XOxz0BG)U;#tG3QkT0c z!7S?4@g$KKEQGft=8DGg^9OqR>(cn=uiJKbua8$htB{tBsoP`jHs0ktvs`Wywo&`) zB8sMpii&Md;G5`>2d2g9ET=U|eW>md6@4o(>5Y3>ah5wN4x5A*N1a3j5=N>L}2GGA2E_wA4&! z#7fBMtaI8VZt_l%{C;D%QStb4Q1>{~>EZ_{1&+H@?ZNgX8}_$$cg%#o@7X7vb?#f? z3|3Y!Va`7=Hn*96~%Sn|ipjhYeC$_Hl*-wEzEJxjGZ)f$-B z7tKH&ZKHf_wNyea@1d$~54kmNh;E(SNY`G-=_BZkU+>^uc`4G0 zV!1%z-*v~7_MP&Yr!yOz@Afr`PMT;<(N7{-P@?7|%8O77;yTs(RKAeL3OamLB}Nw2 zp*Qn125$hTiRf}ypH00x+P^I}!Z*=@wv;UXqPwiYE-o&QGPn#&LWDpsP*HltpW4ac zdJay}($*#0wS1=<*YVY0)3}ijKe+&!R$W3nt2m}sd%X{;A?@Hr{>Eoe;D# zZEx`_6@(zIHF-I{%2dm*RG0^i}IqXB^Yt-j81)we+%_%XW`+ z7_0e$f*$KLnR@Ag(9Lt7w9`~BzvB4#<1E~UV% zqp`y_N*#o_b!vF0_db=5RyK~QguY<-ISj~)mj#Q+qZ+6$bK)LuNf}sQ#_3A1y0Z58 z73Oxghcnls3v2O9g|4){3a(Ak-)Hb5W(h{Utw~=wt5)Z}EF9F{Z=>{t+#&Q--h&I% zZSMn9(hD_f>*_{Vlzega%bNog{DQvtPVBM{?)~gS# z=T?nvEw)Z<4pUwWx@I@4tlA+?Emc#r$Z_FnM1c5`~!J*W(-)tg~Qj)>}qYw5H@P`HW~JB12EVs|t%F92N(;(FGG8 zSHZ;(sYl@x#CTx`OW=p2TL%}jJmVlohC}2YI8WV%z5Mg_FWo80FYKlliFA?Vy^FM2 z`o91C^*B`%nLU?5lgOUs+Jk1Zs*{6GeiZz7Xp6Ze-FiE;&O(aEaemoV%iV%SHS^NW zywz;i^G{<`RGO=X-zUsCY-_s*dn6?#n}=i5%x4tcb;*>}lxf$67M_3Iw-Mdg{o+IF zsy)$QHy^FE2rkx8o$W=`iAb!lvOpBvZoyAksb}HoAF9c}j)vph&P8993m&~SJ6uc< z`;q(@zVN6Vq4V1JfmT?)Oxw6Ygns-QPb`IF%}LA(8D?I%>#~41kn3E1>gN#$7DEL> z6XP?lCJ$B!0TUdU^3!PJ16mZRTItb7`MO@-lJf=o?5Y{};*s^7Q*WP_DuI3c_*>ho z1TGWH-L2KkN8j#sCVw;@?S7p_UZhvQek1eVt&O$^q*~~)#`NKhq9|Pu)jA%9v$;K{ zwS`Rtg>P3dL97%WeRnJC$rcQFVrkXQ2`xCB_XV#^pM=0GJL`9Xl0Een#08&rj2fAs zKDk&LrZxki49kb5NA#!@02P3G4B=ky70)VI&Od`rEz;z) zvtHe&8wYh_CyVE>j_cJO$x7JhFi&oyL5WJXN@jF(pG6iX1u}8}4gYKk7OYacx&Bc? zXDg{$>vJs;<&M_%Q~B_q4U&Ete?0`|h%~&Lqed7JvX`lB;VA;!vp&vrKm>?tz)ucV zqbfkP2f-4Gd6}jV&nKn-=JXw~8o$QGeqc2md$>|%QPjjkBtQQ?j)0OKrR0i|O)jlx z#s*~f%oebZw&O;*>4 zAbKYYt1Jdn@+){X2YcXGtY8-tOi7hyMKXFUmt`1_2-BpwUKj)uxlwTksLO$&xW@{+ zcns&B-NC|afJM#!=31{9?C9KADA`(0$~*`NlTS{K?{OYJ=}AyUbr&u{48dRUR<*pd zVP?QkIe`nt%M^qm|9u~=9(uS*<=Meky3wZSy>`d3MJ3t!Di}2i8y_K*3qE6&zwEw17`5h=f|^vrOR%L*Da154UcHy7H1w$5uZny&5J*RQ5c86b_t{ zD<1(@c+TTLOO3=EDuiH%eQxwhB&-+M9{Iz~1@kOh5UEOwY7k_cXz-Ww6AJi`ukEuA z3gktdIpK*Ll9clBPz_31AQS?tTo0pX@;9UrxrF;~@Rm6kNoF2lsdi@YJZd_%pD3wd zDKNqqM%CutIQ4S~okhywwdsnU8d1U!ij;-J+#0@`qU9)VuP2S2jb!|7gvxM&!_-;1 zdGsp>mPm>bzvRJi9n9Bf1P=U4`g!eOO-4f0XC)Pd81Zdm26(r$erplHX{6(Pd;BBwB>u2a>LK;Xb>emHV-r8R@Otb7Q1)$eT{S3c} zOX{6ssWeiX{A{CdUr)oK{zs@ilY#m5xc}T!ws@nFVIH(XZj+U5@a<{=d6Q)H{`hBa zl$9TlXf3-mC9NRtBrz-ZnCl|PVi1G*plz{kNK|fm?$aclV<+=9A<0<#UVK}oH|{)w zVgW8DYgWkJoZe_VSd^li9*}aZhn|1#LzKpoPpX6KV~#5_r#pnQtDc(Mr$>K5Ido^) zZNI>3{r&I*lHC81gJfy)U9MD}l{&^&v|-Z0vq;!3`UE9ABQ?tIR|~e9lyrrlZWA)9 z)#>)*B**(o>_?qRN0TaWgQ@K(G>nfZLN+F%;)A}_cN%7kynl?;sfh+YBar`{xS%hZJw**=t6^KJ zI?j|B$sYz}H2qAZ982Wc_2d{!NiPkUHZ4(a*xIehY;0UliX7^1=?h4d@(G$gc88Wl z{Zfcbx_r<#9j%uU>GMoJxds4zAMx{kl~3t-zQS#d^Vr1$C*7xp6G^E2c2EVW`~Qsi zFsrD4Tm-{Z?W9X}h^CFz7cp^@68@ce)Z5Wo$ZQlX_Ziu4d`lell-s8v&+SY$_uX&U zR+%eUSLEH_Z+O+qH%IR$EGX3%E~GR^#!asi^{ug#Ch$%aqf_DP*>_5bzW8Ez9~jy8 z6{p%*lDSK?pLynKnr;!HOVK*AOH0{b?){l8nRcRYlwDHV>pb?z-c|OI;}G@B`Q_KC zMsF;Z^?aCW7Sm&^^MscZ_m`ttQ0m9M8gIAu_g|(o=cnYx5ouo;S90u2*dI5RZ|C2! z<;W9m1bn~2s<`&xgN4&wliRva7OD>T z-d`+FNc;dI5kSWj9QkFby3Yqu1{NU#&1wTQ%hO}-_iBGbCnwed&%7^F_jvw_OIETm zRc&ZKrNepazGV-MM|1PK?NQcAkvd?uB{VY8PF#*Ofi(%*xE1 zDlk{0*jSgH*Y}>-JIzO`)wwlcIN9xN%AVSSzj5>J<@+O5rtNwRzV+wv&|}+E8S5V| z{~V!K_p)123mMZ&fh>DO9FeA0jXXZl@N`J#!gy<(eNW)--m+B-ie+nQM@0-}a*XQE z&fvI$vD4m77%(t*;tZXwLin$AupymRFDoMcFg3WGz!px(wTDA`10^2>MBjw9a>R9=WDOqy|S?Wvq zXKf}6v=SeZdhm@62|bH9j!;JIb5L>7*cSiW?Ch&16iXosc3Ny|%;F{mawliaV#)eb z^f!uMz6@$MZDMK8Z=o<>3!@`F0&h$U{zNo8~ zZ@$G)CA)BOy(Y0rcKC~WHJ1b1%kpxu%}0BQOIxI-vgvPd1BbZZ)6|CEZEs0v^skCJ zOWj*I%eFn2m3TF5E4PT(!EI*|H&GVEBT|@WUgN(R={=J*@~WSV#ke~+n7z?2#Pv8y z%|HrU5OICPng80G{>Lb$vENqIx?W9%pYO}P+jpn{BffcUXR|!LVxA325Zo!WGA{Qw z$Fn+FBIQTU7I-J(e1*vj8;GUhmgeQNlhRUhJ&C*;y<~Oz11lrrOA3s~K{|eX%x{vK zGdc3tpVHmmt2$mj&tuXF%A&wQT+X^tUa?3;P zRfOt7C{ULSDWCTVt*53G0TlDwV9*Ljv8*L6dM)rf^Vc&Y(a*vZP+pD(=i!4d8P>h~ zp`iJ4V{4T+y^D;?=iQS5UsVWyBk7R0QW zvUeJ`H_woV4fetZ!Dt8V+mrBwQPFp9$Or(MRF%ax!zc)wzNJNu@kKh|HH)+I&DK(o zDJ1v)=mZaqpE&;EG|*gpwUs&u{sl!jKY@(}($FXez{(ySy!`&VrhiWrlp)CZgc{ZU z=huILO=Wug7P7J^u`aanoXqaKHt?o=7RiK;g&*v=MD;)TZVrG=|KG@6`zLb$Cvr!5 z`hN!Ke4_rI)lV+K{{#Sgu~ztJYPLs8Q=g3jHE=uyJ3Gb2Jr#S1`|V z_sEZY1>zvx1Rt?p=8(4};)-|;=t`)EjM$q37G%GT-?C3HA-Q<>WuX8qt6n-CeR4h{ zCcC-ZtVI)uSV-BbMdra07w0+S9Og_8oV4q}S-nJe^w9DW!QXiauO0;qnb4V=sF6(i zcX_#%UkmKFHF4#h9a|mk5#DQ?YJen)dM|n)FA-20Uqw_N81%y*9&o1d5fEaWLmq@4 z4-U528e7J1hv`t9--hM+^fW0fE41Q=uXWcwpj*u>;Dn)9=J|C08XQFYqk8OzF4@6% zpN9$e{rp+MgFnp^JJ*{>$ma=LHda1jr2Wq$@YGsnN5a`xR`tvrU6hEbn}F&iWE)dS{? zMhmhyOLh|}XlP9(BTQ|7mXYF<(wBbJvOie0cP`4Q#ND#XFz=E6r}epyb|0BHX5==f zS&sNvlWJH7hwRfoo+iE(@kaaE6V-8?J-nz{uVJQ}Lvx(><{~&2>+-*hpE&YYrV~3AnUD{*hp1)#jB1)L^e^hohT=wg(8`q{m6a7$w2 zyM(_Or2F7(jy*q|_E<5n3;HhaoB`ECYf2aj8~&4Bfq}al!MtmdzcZITd_QHaa_Q4d zK8ICLUGwI+U3F)vaHmZkR1El#+>f<}f#_2&JNDPA!%KpcR(Rmy*geIDzei#vpaCj{ zB@*GO?@Rr=X*;kFcK}iAdEAewy3ra}8#P-zo~FH#58TWzgt(AA4X;QoT8_%ka#yEN5mc)!NFZbZM*INn52v7zu%F+=2X`PBiW zet_o*@n0D#kyt6@+sO_m>3_nvpDkcM|NAu>;NkvR`u86<_aAP>Vd>ESN4OO}#A+q> zuBX}~S1`;B}I>H6m8q zP0lWnJm@j-N-bTR9M`IS<0s4n!kIWu#Xs^mNM+CH;{WDa9R||{x24~q%y3Lgd?Jn9 z*0M{n?9^v_&>5%tg$ch;XD%^H2Gs`N1HRFxh87xfPUZURGtF2`bqp8;ksu$f^k z>?W9CnOU;!Ye*T~TT4#|T2-Jw(O9$f+0mhp&+n;pM?qT0ko4~PakwNZFpKJ6I0gz@ z1o*whs^?E0oT}FmN>!=PorOxV{L$R)(Qro+xrjD(DK(=X!0%`%U}e$nmdC4pAitg( zHg`-rbrWYR=5ff(3tzoTeWmWccKq4*_;}ss#Qp0?Q5nECYyx_%Q(We)&ZN3kcEaSUS;Gzu0>Zs3x~{T^LYAML?GV3Q}|_2nbjx(ot+kv(cL<9Rkuj0Z~wtB1L); zDFQ<19ik$=gx*33N(m4kNC*%@l7EKf+KaW%*=L;n|M!mn-Z9Q_42MWy&ToG6edk-A z=b1mT2jq5eQY(PmB@18X>r4>bP*|xNcb}rmHHDjGHvO3+op|z0TFO*r@}|tfO3+Me zDpN;|8+IC$K=WV3ryVCGtEa3Nj=Let@87-4UyAWRvoTJMH*$4woUd}Z@lw;%I z2w)!;R&6HV_Gx#I+zC^fr%&twjH-W|Aqn6^|2^;(F)MX-wsv*8AJO)+Wi3V*9WO95 zqjaYwMYi=K0Fr`6O-IdU%0^h^4fOeUSXlMxsbO)PPtanY6O&BNhS2KZFuIi>jTW^c zQ_M#(7@vo{8#o(W>w^!??SL2-{Z2HoBXc;reXdx%t!sEA_NJk|uTab18a@AS!PEy6 zPsUjPJHRh}LGSsQ;h7hlf~x)58lXCFY(AJL34qY9HX}uWhpHABY{oL3%ALL-6M|M& zEjUwCe%k$`8zhdalQ!h_U$d$H(Wj&u0;$N8Uxwoq-_MMnGIev>(GK-D7Y1^lJU={+W$jK2W?9hXHhmc5*F9;r{v3g6U6JX3 zGi2U#GmxLoc=O3sov5@`gcL|%9zMe#<$LR!#>Sl*%{bJR1ld0E^1mi@7&fN)5WSKp zX_cdt@m3mpW;j?W+Hn*ActyrGa>n%j4}23Qe*qJLf4`1V0VIa0o7~hA-(5r+D_s6g zyoliji9~WTjme|W*J#mZk<=lVPo6?%!e-lA zBhZCi_fIC>;NPzd)7MTMoXy!TWtrSO7@Nlym@oVN$#9N<;kJnR74%}NBbP!cV>;3I zCvgmj;ct6=-o`9t)6bQZly7^zLBoX+^!^jG6nw=3ce-88;ekz(j}&uvNBfN0@fJ$~oYUmvVaJ$QCab zYdSQYHE|E}Ad|b>M*oZ1E-U-2pU8^r@!GR?^X9~+w%OYlY1Y+!bLIrlJzU*t;!cmo z<0HX86-~c{d+m{+KEC;scZJx6##GwUB}yynUU6xd!TIKUJEg{8g}5<$0IS#8Fj%#O zR>5~R0Dtw(2?GN0(6Ec}UjhD0IM^ne8!vfI(^8HqTJ78vLu+N@6%F`u;|fV`2jL!o zlSm6v=7%wLEASu_6BjbieFFmlX*QzTW<88k^xY|G)Y*{rD|f?jgO|5W061k{dX8g$ z+=fkt)EON{4@y8t6TvR z&x#hE!?)``gDnB<^=yN{L1lhThNOMz+|stkbC!xZ_ufARAS}XT$2(4gytPDhUE0F? z!3ae&zL!Sp)b0E9M>@P?EXuB6XY>|a`HdcwAox+>NW~-3`qUJ`4GP(5)CXZa^U{>> zjNKhIi-A&V%nd-w3CI_V`QctL(@0Ef$2!&t)rTvpha$_O{;5Y5?C9pVI$zvZ^^?O{ z1N}O)sOZA@TG{;N>7O~xw>KO}9Sx*KAh+Bg>ZqA^3cB5x+h+qq2{Zdxe>>;p(R^NJ zM*5Z-vZBDE6F+6~{p*cOn+s}LH}IA_NQnc=+|gDv;?MtP2)|vj^}j`D>7ezm&Z@l& zrlNr0*@cmldo%O>!?+YQ1+={6l50PHyzPB*Ks#Jvq3F$%J00!Q6HKX*e_(s6oIYGQ zg!00nT!bff`Yg#KB1}jBcY+I0cbU3rjZOk~Fj}}w3D1G@D7*uGI z*1RTgz<(pt0Fi^)HwHBHe{9+Ke;-r!KZ+FpcPUc*Pgn1^Uu3HP!Q=j)fyWiw(-V}f zAWpy@8y&6c(_i4^XtN+u3~UGq7Wkr+e!9SI5DIp~#7jXMndq|X%fq08((Dx}4m=t$ zDr~e4)H0vw>_g^)_Su}lBd2q_GVgGjw|i!Jg4W0g907&haKG1&Yp;SrJ4k)Y1}x}m zaMQh);M0b3+`6)A8)-}DI9(Usmu+>Hc#U-11StE15<6x%Zj@FQklFR+en8Kdl5YhZ zxjEmqW_uIRWx6O5v@`$;=770)bEtCFX+~8+5n9iS*+eITI;DGCC5P*Ow(AkG+YO)s)3vqN{q2ez$Lf9t{~2o zSQ%4bY*;WC3v_U=UgZ%we?I2x*U32Mtn_r{gV!_t$y?4VuywYUy>MQCc-dkIUr^Ez zfCR-x$HGj-l|rARnf)O&rl|v}W(A7mtQ!zH}$? zuN4#miYaOkW4n67x=+b85|_tLen3B`Q((~Akg|TT1pujAiH|{7?$k_i*Lg6GjOah! z+TO!2(`ZpS;W^JvYjTs8iL@xN(FHWYxnH^0dOy}{t9Ndc2>wA>}QgbR%6~y3j{f@NNW%m zTAre-zn2)YRM;&$)GG}5U3QpUi0!=l15duow_w(P6oasV;mhRq#k*g##{ajd|s@KT!!uTVez4pKYD@5CU_nU)F zKKn+QpGG6bV>=cd_6qn(-4cLGqPrgN%a0)!H8?*c*SHZ=FOyjZSeio88rC zOtBppnx^4;V z58EvS@1i!!lBWPXZn?XnF=*sh^lQ-&+F<+^Eh-)sgphSS`$CI#^FDykT>odKzG?BbP<9ar&(c^tk9e(X;@uDhVoYH%Y7 ze?RjNw?770^)$C{v@cyrl&DjfEI+1glWUAgBu7Lk7?97G6YlBJbf9u7D<5*OfqDF# z+f#cR26o8Wy3PY2PPF6-b}UcJmCkE)vaH5MRZPI0a#VhP7!H0&Zl9IRE(dZNc-ZiO zZ>M(r2MvpwZ|!0d`U~bD_otPD{Cj-}z%39_3FE*n+_7D@Ti~-;tPFcC?d=aG4X%Q7 zcr09m=5d_jU(mUpta;?b2F@W-hrryEz_8s9bvy5JaifPJl4)yw?O2Az# zRnfQu$3s9w((;~}W8)EU|35h5+jmRJ{m~d#-V1*0NaU5h^kB2?K$qAd-D+?DIGAjh z{ydnL?u<>yg5RruDf-tq8sK2H_EX4tTnWZQd6yc{4mG3`aNjK#S;0)#$6o+^tdNkt z5CmCPQgW1r;Nh_PO&ol>zNmC}bf+W)oY2vo3DE6;1H8MRSB=vk(3oTzG+@UC{rfLE zwWeq{#mS>*H^r&!cZMFBpJ$zcw8!;|Fpa}rrRM@yO>k7x^VVrz^uey2P3eX*^{?} zXgkrE7Ww?KLIW>Iyx#W}<0W-#meH!R_O%6Xc%-lDz)XH0W~nnWsIa!I6QOYvUh&+f zlPxZIGWC~T3ek?mAG7zlc24aAu=K;BB5#>mmUaXva*q7%y@3!tqC4^Q6h~)8rPqtg z<#r=_%ktB%R4b;-oKZ9_K3rhhGLo% zcr8`*>KJeknoch4u{Qy@s`MXwTfx=rpL}R6&QCx0ts*>Z*OCKk za1BjTv)OsPa&SNzixht2IoYxk-Y4IrnJz6xD-*Ht!2*wCHUC&(n0~I`)c3akIa6Fl z*+8KaAmz0Fl*2`jZJj$`54Ko8(opzy2rwznwLs%(aLUO_!&yG;p78p3#B?f&FZy-& zk|>YIM1wQao_%c5vt5bp?3`&&{=J2FVru#MpDjGiU~1xD(Umb<)Y^fw3%)gKBxFbp zLNOfct}x7BFVW~1#hZ8$Bb3_52-wwz@Og$T3%jhcPd|KZ@4^cuKAIw2^Xekq?&%gg}u^f`tTJ)a$#sd_!;>C(Vmrbz3&Hg0K{nwskbgYj{$ zJIoCJj2Fo{P=Z@f=n+~O7lOCZy5ZFHFnY`F)V{%0x? zo`Vkb2dzk?_wZN_7A~3Gx?h=^pk0>R+i=mb*2p~(F83#*Bt>TGbW@#6bP_qMGw|>M5EI=)%g=SFR|qDjAz%pR$EJ5@=B$G5D6Eq4N>(>l1`nh zeWjc;WZ3Z{h0W;)P$6Z#Ofv%78CMn}_BTPd!CU_<=q6`a>>L&o7iZ-+XON?5HY76) zLr{{Ax9C1?LSec`VI7@Wrd%oFhyD_d0Ey`Keu-S9GG)CZI!}X_rlZC^>s{nN9P~v4 z4@&21_uh_{`}%iZv%CS8^#={3#p~BPEcU|_=F_Lk*Zu&H?$&LyovnwH=I>)#o_!*W zQA&TXJBGiTv4iVANs74U0h!PgLyM3a-9gdQe$c}iRZDHZbs}%J&K{;>UOBszH)vmL z`h~#*;iY2fOL`$}ifob+&J%UHHX?G^492divxXaTj4~i9=22Q@89HH1wqz<)AwQ3p;BvTQZwA^stlS zQ}E{@wIBg4zDdql(EmdG4F23DW6nVRClPF_TlhWnb7K?Llb(AIgBuX&WKpQ_srqHy zP+{AC#8a5_l#E`I9fELmrBL2yGh8VjODXj}tmA0nIJL*Lo2e9Uc0)gR@B1+g_=*Jn zQx`%ybp|4j?elH$GpsN$7)1CcJ#APJCBA={I0*S%+DlC_$WCkF_Z&{wM71B4FeQ%_ z(cuL#n56|byDS^>K7H{|>VUolrxtF49~mlmI=!vcP1J&S7FzXFF!ixYF{;rugv=x?}R7Tjy-q@vtOFv#&S=^JkO7oPggAU;%3`b!Hl#1i9dNf9$Ipb_5YKfqWz}Ng>>}RwW&_Y zVLm9Q#e+V({lY&+;wOVSC~SCkCE~Kon}h+rV+^mU$NP`(@0tntzam=vT4H!SC-B^M3u` z?%5uuh3-G+8Rh=fGxpIOhXyK><6mqK{+nQto(vqS*oo%3vYNTIwWvG)YLWD4uy}2`k$?4!ku(*%T${5mel3#n z$-NDRI;X*%b#X%l1~(_Vqa5MU38fSfRE_&vKq0%q+Yy_I=V@oVGa?9+Hd1IK@K9jPV5im}u2+P7CjVm~R?n<_{X6hE74Z1LF zv4~u85p@dbEP7bJ(rB%#vaiT&kIm?5uQV-PCBtV*Q}uE#6#%T9aB@4p5a>YPZr1Wv zS;zIMj#b#q)Ii=2i-?M|)hqFw%^lx#vs+P>Y=u%w--feWPw#FyBi1Y9ocsiWSmmp^_Ltbj7@T*A8F@ zkw4rad10pIw&g}{1dS6@X;7z(H&9~OCpEUH+|5@){V>hn#DP{@N#N;yDhqJmSt2uWvhXvq5)Z^rgLp;7&5|F+t+lrhF$tt^zHIh~YvswC-Rs-~2SKQoj z4>Iu+wYtb}5D&#Oe9+Z|MWmNFvGD}_XQ^sOez-s7Y{J^Yz#{#eZcZ!h%oPOyHqi=e zYcGpzwbIXmX?~{~mp%Cp(Ni-z5EgOaa?b;^sC9UMPbe0M&E8Itb^CN=@6}J5J~)AT zCt^6|P)N^-rGE>Js_S4{VjlXBIEe;nvJpg z4}%Dk3R3V;;^*tHIQIKHGW$m`H+ZKxMY+z`S=lcnT(Bv5!?WSMc`Y)?pTKN`vQ<0K zJtN+*d1oEz;YcJqYEAQc+SkOUg^fFHJSAFFa?BnT`Ba*=ZV_fy`#NADfgdkxDqUU2 zt-9DTlPEGW>uKUN@sLKeNXVhOIs@Z0e@fQ4HwoQ{Ltpp^wjc-4F0C`e1G-JjWvI{N z&DCThxGi@;MLE!o?utUd^^QAGky#zn^$9NKI0cW`p#l*~(?CJx7FbuC2&0ZCzM^{p zSn>uSlu2hzb<4GivyJHL6dJKpI$0?tUjrIAEw;}VJsNYOCZ3@tu6Q@eB%cK``9P8z z3)Cd`)VRMxr}`R|r|eB5Pl}H)LL0WQqU^&C+=|kp41-GAp9zUA`C;tgH53%8u1NhMQaxXjFPzW6ari^9@ECx5-RR1G`0Law5?=u% z>X~dq9E+nT%L4S(F*5G^-IYjcv)M*l95ehKb2qtuu?Elj{l`6qo-ZTz)V-Ksl;iSn z(3I5kL;kkBB(B|!2yhVp(N8E6Dmq2SBmc7Y#}AiF*{l=yB__wrzHfle#;y9)?wLgS zb}sHhd4)s@6AEdai&0ZMM?kLYDxo~1m1bK=~K>|W~j?~b3R?7-=R#7Yf8Va4Y=g* zH&?I`j8F)I@lT%Io09KuydHPTtg6Oo>Sk=aMFKowm<{Dif? z7Oxj3!{kjt=+X6&P-}74nJ{U#nr})uy`9sXdXi9AM@ZZF3KbLZ{Jj}5RvFtNCSSWc zi<{3mDL5tAz)Qhf7Z{Ys^lQoJ$S#k(ckZ5Kb3laih~pKv&eRo+*dfB57aYTL4;eGz z#Z5{cf>Bth0<+z6ZjpFuOgMB^dQk94)2`?`@^Rqg)#hMW9+eu*-Twu7D~QU>`xqSb zw~1TMLi;I|+qVu(6rGSaIzVyEPh-!~d)1e55J2>9hE?oG-*iQN?#P;Jax@2!^892a&mj91sWSdUhZo<2D>FcLC0DXaZ*=%GYhee*f78iR(?jm5 zsgS6#h+3Rz+-t;=u?zxe!G}=yx*k5czmQx@byk`Ow|8(I0A7%lSFd5a9e#EblM^)g zR3a>3gKRd@3B-b|Qy2tvBeS-}DtY!xzK=vpCCtP(x^mn z`dbDeZah^I@vNN*?r~dr_hquc`%8Thzx+l%=&)>(q+?E$`@i*Ho%-_9ueZwifLpFoU9b~2T<-HTxB}-GAZu>61^E!W8W%ktdBiHs@ zg#RXdU+9|oyX&nZXJQ31I)(1cp1Fj0pe1y_Ri4et6OEm~m<&yCtBx$b(*9-P10QGo3g>;dShy^{${7$0n79KRwyhx#PW9?2*{xag zRAam4I5MCo}yJ}|fOKF;S*R9{wT;>P%k*ShhOuTt6Eioxnr^&prMQQ$f%8nKdy|0O@Z1M9`Ff&sF2-$n;U#n#Db5Go zij}a@8y>&=ojYJ?W$lwAG-l9FIwAC#!J|xn6qm{1Gmk|I>Y?LsDo6RV+KI`5GBab< zgi9~<<3>!hKKUJM?MS%n_?~F;K|0==(R!oEl?W?&+J@+>$Cu9fEq_2X482S#b3}eU zp#g(^GK4p&!-5*1{*q+5(JHT6nebA}F8jjhV>Q_B<7mMR>W5)X{|m7nA7t*2y~c=F zd!0=<+X$&lBrae&i+ZPKzK;!FA6APHGDfo^mdoyu$VS+3GgoHXd}c*)Cd2Oz=dh7JHaK?|d=E8!cwZ z^O(e&&peEO+MG-*0rzv`8`3dFsT~{IbuD#FBTm`sR87{CSIpntD^gbU%F{l2*7g0rd3-_K79MVKl$&NNADn(SUG-&ucNY z{0J;2meSlemF3!&(f8?|F`oQ@i6rBtOOdxkuKD)!`lk8iz3@uwd2$zev}aR zVS*DNSyC9uS4OJ-*X*V0JEndL{AAsDWBX`PyLAnpcM*k_c7pnS6*xrhtZc-yC(dH zAK(f#lLW%nyl1?KWQ1SIVvcr+LnDXHP*v*udj1HCF@=v|Y~>+L)2+X!;?d88_#oHm zB)?9!L-j?gTRoLsFET=GA6{fRq_kbtiG4gs;?szNAU%?p%eiWXmgP}l3aVUDvAeo_ zbb(3t1L)Q?stp}SZi1T?uGS}B+8{NpJ}SS{_wg#ERLncMzK^6KWL)xcachaKTEx^u zkPfJw9mgka^=_4SR^d4*XTWv8m)Seko>di``S@iX+)I)$%pq=QBlaA5p*y=kZl>`- zvcxJuc4CE$9W zl6v1#(QepL3bJ=F&xqBpCU6Si4LG^-bqmhDU}nECc+HI>?&{fBrevgsyp|UD`=S#R*pT{EeDO&W$1hEJ5D;8e1J<6Ltlm5k=dSsd9le| zz&UT}X9tQPFeqm{?z3V_7t2K_;-TXg*MBG4;rt(T=_?^kxaDu=jhlYit4e0!icBSR z`Fhox>cWb^Ehc`zyq%339+wZ~-P13zY&$KYQy|Iy!N=WaqRh^Y2JYD5~g^y0Bd zuh*I0gQQHGM%m(q)Z}$1XOrQ|7C(pZgt@|qs!9!&0@*nh3HP2UeZS2*oN-b z?W6C{(XuKGT%=+G>Ljb;wteP`&>O1tqc>Ib3?N(YxngfL61M!b&_1Mf&))6){)K9A zZY&HH3V@q$FQu`_j(gk5dR4i*$*iHxjye?jntIucehNgRGOl(vsp;NXGGJ@nz{j<} zJXPO?dCuD5Ptnfqj<<8jOOkR)1zu`tydM!$&RyA_jN`bS6>5?B^b3Qt*8F2j<0m9u z68ifGOC;gsFk~2K?Y)e($`S2!Sy($UKk68Nz<2ngiGDb*oaM6&j~RprINI8Mvx$b3 zgi_4oWU-1VshWd5Q%VV^ksjLuPl7jG9L}6v9U?jZ>^u7)Yh+m@1@6Bgrc+jAk8J4h z)#^#NM1|xf+(4R~bcLdve8lkn8Q+JOjpbTXJf>$APTMlgORCquQb%{-;IQQJ)XP3) z><=Z+lknnp<^w$qCC&tImy;WQgd1%MQ>!c&xB`ZzmcG7Vo;B+4so`n%+s+zgY6?Ae ziG(!(wMH+;Vzfqi96#BFhzq2ew^5-~k$c+?UdstBT??ZK)%x5FOG5kVaD(4!M>`<{ z4O`3B5fv-9K#C<0yVzzGl$CrWCUY?nIxqb5+%600W?xT+Zp`C!$i{Q5OITvEsGX(Y z8wWUMq57jV<1w*#^oU6p(R*=I6-GG3%og|kLvsh5i8TSo$aQcSUFF^2;Zt2Nb88%9 z(8Yv{dvn6UrTK(RSwv<{6E%##IE7S~TF1CnbzUbkU7qCHAtH5M>B-v7v=CdJx3{o^ zzbR}q^d_}xB}>3XORW%(9V9Bz#8!nfxF@Ho3l!+*rYlA3Y_Upm`ha^B z;olpzvg7%>aBqCO>K0+IrAR8D{VLa1O^4$1F3Oscf7;>P{qY1|P2Fb|fuo96(9d?( zvNZ=8RS!nQ?k>~@CV_hv)->R+kGkz4Tyu^NcANhErBPrc|NT*x5bMv*+byPdaLYUv z<1Nw2bY;9yDza3!#Jv5H*xW+8_OfD{gt2%1>a$!=OK6VLa6{~aLA!|vHI3G-FnUy{ zE0>YH_jYD3#kSUHFwaEB*<5lkWoZ?1_Kb13PS_H8Y`;r%35zlt4v|HDQpq-(K@b=#_kwef2I&*B}f($qp{7VH_s&J_?$x z;C3@4-whh8aIVmlhW0u?=+z0bp^ULi{qR}3#prUoodFk~b`H8o>^RomgWzXDhuBsr z<~=Sftc7q^q(Qcl3#M%xOI~$Y1uRV%1(_O{kvm6AXJ_e+Q{ks7@ErOg_czGs)bs-zD?0p7Kt~UNUW+?+Jrim14%ft zQ2~~yz|4f@>w<@1{j2LDJCn){8j5z6N-W4^#0VbxD$wd#(S1U*i^A!eB{# z$l4<1+4$Rz2aFqG-*Ku>??&o=?5}5$qANfjk<9#PW`*nz4(2X3?>-YtRWi?$79Ba* z<0P}edU9K9AB$hh+WDuB)%PvmIuUv8l=d(YaJCLTyg2cb8jJ8V^X= z!g#^y>ZHg`7F81KZ*o07O%hC8;XP9BvR2u$sg={ZjDp5nt<~Od`^}>xi0$E}Vcw8|^! z3=ghP>Pi9I_)sD$cSpaG5XT zfrWgqNionSYxWilA8tz$taSBm2=gM>vkA6O_))J&%g?z?^Zp3vI(LAk_5VdR;nc5I z*50Vk>1Mb)(^QYPMTe*Ej&MrA5MS#0HA{8+Ir@6Jq*|z3&+9Y;_H1&$XqM}%)2m~V z#o2}x88;5fmQsDF^!;5i^;H>4lY|ZwH@TLvPwbK5?&cx?0UEaDtDNA8!bBEjP9dYa z6UW!X@jjlNK52;yM&3X5d>%XN1`ILRb9qzjaA@b%ffEntHA2Kv#u8Qv$tjAyPsLS} z1j@Z28#rkDh=-Ds!<`|_+UeEoE;;q%1{flV51QaGT7Ex;Wx|?pt-#ql0Gne7YH{;nkjcyB|jbCQ3IPPh8wmIcnb{HvXDZ$Xpl$6jxIc zX3EP%=U!+S>$2Rp)2=MB2u)g!hVaXu;MJtBZ8rqx+mvGRIfN3j{p9Z#S)9NPqweGL z+aPd|il1jag!N?Rpq?*36$LLhKoMWQ*m4(M27&ybLT9Y&bd(x*3ys(mk0kxBO>tewS)ChU04L1=w+-qFNG;b9>2S3WL|$W6s;^ z*!A|As+a3-Y)IE%T-yA3wAUemMHwrxg}MzUtKf*EKrKdII%N;Du>7dmLvsz=j9hL! zAX<@IU5e1idg4=>qWQ$}Qc0T9R`S041WSIF=rje7?gNcuyu2BP{`SBd9KOjJP@zzH zOx&P#ZR7`O)KMj240}74)GqhBh~(e;dD(gKo2nPc^zbPg%U@HIVqJR>s4|=Wcx4gX zkqMt$5z(SZ_m0_uR9*KDM*2xI%Me3MP&QKX9af) z%jVBcw%q8LNy2f&b3e55BTY#%rB7{5WVA$2JoJEOIh)k8&k_2iZ`Fw-%KX&Z-w9g+ zLVp~4wmc)Y3MgQt0wn}rn7Y9#;R|S5|?_f>wcwJ5($r7> ziaNcuGuyCVTrnN({vuYUKl`kcTzeamWs$DY$Bbi7K+K1jlXx;}LSG5dEiDW8P*%$5 zts#qp2d|8=yyX!yJ{SkWk2_&ZB1s1sxAvGoH*XHlU?lAYqEGMYw9+x?0*1y`-bnm8 zE_&_&|DpxI3}XwsxLGZw(awiqJ{dPus&Nw~Cg9p6Me8he7VUXQ{GxtoE1G&T(zq51 z2Y4q|e!IcBUMk#iEf&8}^!a=NS!PW9}w4rcY%?#ofbeyTUAVvBfr z;r%hgTuoC~YK4;b+Vk8?be;qFXw<+jl}o2UxEN^61&OE9=O z+2H$F+`Pvtn zNnEZ|S)FY=Ytx_kwp!`D6GM-zc#28f`#=R2sRgUtS_WTxm}!_y|2M5ieY&MH!;;+f z3{mc^HE@YTpUf=DMn5?NQZFqTg1c;k4xB<>ZTyx$Y!C8F=;f>RuJe6~h-6or{>=iq z0vrs3NP(X&`;>OdyHO{pgx!P_^!n79D`>5E0Dctu5s+ z`kg%>ykkQg8rWRr8=>9LyyZ8nePm+aaR}X*PUFy{r@ghz@kyg=%`X65S#WdSk?52l zmi^&u4PBY$Wh|0d;yHh(6kUEeQs;}`dq0uOaz2p7pDkSNWcCi(*G0GxgL%?O@l?ha zk9wIO%U_B0iXQlx`o{UQ&o=f`edb!rbg~O!cMt$G%k|-G&d}QVrbp>cVtQ=eiWi(D4j!a41X=ESb=svqdiruD501Z?IQ| z4{O0mX2rfrP@6h{lP98bG`DKYyH&KauA;bDa}u#E8a!!!eexKRf^ORD4lm9)x-wM7 zMMr{%1Ai~k4)z<@-r)@6hT->1phWVb;r@GH8~s{`(l=Z~!$#w7x&akeH9TTREtIIj53D-Fbm3bOHfXvG^f*_yiJd^cat1|D7 z`SP%8Xob%pTH`Q+e)_LtsA$&kt{4~|Wc46lw&UVL2pwPG-q z)UcH?-T6J2fkci_o2kWd$^jHixLnH3J-kh?*`wAWhVfn_3y&L6d3NViL_UZ6mR6n+ zKgG}^sF{38T6K;%hKbiWGPoX-Y8hX_-!7MUcsJjWorS>Wg0|iY67UB(AS?z_6JHv7u2y zPxirS&Y_-i>yTR2Jq9ib5^m+li7jt7nD+5YkCUsbZ#BM?wWc#@jPusC>Q3&Jw?bfU zMhv}699*WkieN?(D4%z4G~NnN+}NhCmrY2r*=AXHnGKh7PC%$^c!DBGT$?H49qUqR zWK`2ZAI9_tIW;$GHoW?CBMb3Tv92L++!%VSx>GMpvzT{9wVgKzDhon;BkDZn-CNeT z!p5uuD~w2f>W<5{1L+mRvs#g0=HSp=7hN_8$w)Z+LsG77A&Mo5v6 zdiTDqR|3u;`u9f*TKVGZ511`@W%MsRYK&MXMZ?q4AjWo++4Az%ZICYkxw^}u;`Uw1 zVzg37-4M#Rxp{^Z#}Zo(Dr64}T_Z+=fzwElbxA#MT0CZlgp#JjPvE=vVz&Dti3s?o zw{IQS-#*NBxQMSX(?uWbS)OUJsEH5XhzGE}0OY5ijh7&^@-P#j#Rg&Hy!bLlQhe#l zpK0nBrLWEX{D5OJHsLu_Zl}N>A#c=w;ua=9sDW*j_f)orLA_1c&kyA@l+e_vc2<-( z%Ud}IgpEVYfL+*D<-~<8b*yFg6;3ges8q1?lB&xLDp{97P5aPCS4Vw(Z91}J=`3_Y z?zb~^JZT#orFRxU=s~k=;{QMX)7L~DAe@9n_~!vRv@v&ePzVAm1a3OU+x=|Ui~T*dULCA1#hI-r#v8TIN{lTNLoeafFL3hZE8e|FOSmX0Uk!xhkB;6 z+=VHfaN4;tHAsUXyRj3Z$J4*6mITrR@h3-V^A*L3?EBsp<4uC{`Vt20i| zBra+PRA>t$6-PVw>T{eoa9}v@g`Ze{c(ac#bfPL*SX)>%RyfPr`ksiO4ZAV-U5eL? zEV#&(yISvtl65fcFjur4&-by=fRClc}Q+4Sf$Dq^F4XE)g1-JxVo^g%c$2%eocF1HF zhf%RcNr^3x^f`b3%4jo@*>J$5VACQ@h7YodNAIDwMOIE+hDqA5L_UA}DLM5tUV~ZJFtwYK8f>y@Hf&5*hRtmK5%zE*}>9+n$MYs-uM|^RJ z04+gH=|F8iwkx05bz1z*y+v18Dr!)WFKh*83}z??qhzKaC2lPa3Ghilm%>qmvd3|O z2hGUo8L;ak4vqx{rLsM+@)c|ePk9QAcRTyVt-NtvO;$byhrDV|;dsRJmd8G1OGT-u zzKVGdGMj+9RO}O6{zIMi7-5G7&h70EgV8FRBpCq%i2_HR(O?!4w5~~eoaia8p8l!p zXsX0O9)4jIS|!7qYKv08WYx)!=M=k)%aXDOSWsS5dXR-yjV$rnjX_|$EK zw78j}wfRCdMr%|ykr^5V0{q0K(t6HKP$O_&wz*J@&3BAP#NS#Nj>>p}iy||zHf<@m zqtR6FLhhMPF&5rJGlw@l%0G#CObXrF*Rvw#L&-#e^G2Vn%|=VyLeA^0mFin@2dr26 zvP3pZ8LPKE1_6GG=Ef+RM3rQOj-v&^Vz=bpTk;nIHAQ<=amT|q?tEH&e(SOJ<7LL6 zPuA~?8+`Jl+k-hdsme2AWs!&MpMf@9+dQXtAasY=M4urfC6P(!0a*6Re~7Avg| zD?M)AxELyk91|-A|Tl*yF_mAqqcq^*tMm2Id^P-L`Q7Z zN@UZm4W`0c!qZ|XK{pdNx}7cV#NVx*IG>L@V34T>bzJa*kruKz$J$Yh_@e=uclfeZ zt&P__!X}<(qubUj2OoQIMm-VKY!3y6xEIdkRQ(TQe%)Ni)Td=#?>&3J&Ni1<0q(`> z=(urYu)N)VeK*gkDRtk#*1U=H>R&+ot6*1JUWbGhR=;P)V;Kidbuyx*^3#Njo@$d8RqCnXkBU4Wg?d@al zmdX6`TY=PQrLJIGf~Z<@cx@NxN?9GvNtkL04lY+%!i!tAH-ltLPa|T!J+?hb_=Wr2 z7@j2;YPl-{a^D45gffXBQ;K zX10PgkQ%xRW2H%~-j{>i2}XIFs98reU72Ez*&v$|`Of+>3a2OOomufP-x*da%(X9R zn;`AHNfm)0@wfN%c}%yPQPu%QAPz6<#T)p^&7MK&yq*BM+i;q2!YZe?JzHU`&W0gp zr^-5A7oynms~(1u>YOQT91ZOly}meGcz+Kgko zAF5quB2#MpJ%p9*(shFh*12B#OG!Z1ipD)0N3GFJ7eE}0avH2lr;^hZz00>4+gX?KUl_bub(d@tBab}dx735#4-x-L7$Gd`c{Ct9n z0P{pL|7G|GWLC=q071xv}Mm+U$&b0 zpasA5MOW@)&cquFl{W@us*Q6L2m7-6vAGRONmgiE&pp1|HDxv_?ak|M8yX1)O?q(j zsL8>#y51*9^o4J3shbVFAiqn|gqqId&MOGIk=C;B74SRw3=llXuFKnJFX2MYc6&Wt z8*!T7s0n_Vq*i^YscT`=M~vp}IQO}gr@h`HIZ>6E)L}~N^2EMWaj&=PD6@s6yV|*?l{Z~;q!H+820_i#C~*Nq6berM z?#t9ab<6QizVV09;UTO{MoYpz3PC~7Ng+*qX~Gee69? zzN1yBs)dWA87P>OOvq!o&c@jhqYZh z1}DRGy4BLe3Wm?Ysnv*w&3-?LQui}^j7?xR@%Y7R{6z-@k(u+%?PnPTnsFyNJ{~E4 zlPNM;7@2eGfdb4g!f<2EbjeEDp27R~&-102GrH@ay2GT4H9nl;hG5op=^y3{;;)M6 z+m&1UT#oQbEw1N9u6ik$F;Wzswk~#@Pq=)Ol%lrBf6FVq-r%NmywlgOXN<=r{BONl z-U@Ai?_**#{;3~bWave3c}?rl8rH9WK$kBbjzc`+(N$9G&(vgJs^;YMfObT5xa$7? zIN!=H)}i3IEe-8NbyX8G&UiWJ^SmL==Hnpx5qeMA*8;c`ILbfH6U(URpeQM~h2scB z{%G8*iyB4~hOP<{7hv^1*FEZtur;QncYL?;cI z!mT$}jB8{(4$9UJneT7fGVGf8RkuD$|q)Bg~S3yO350Fr$ z6G96`O5j`B&(^KayE*T7&L8r_J7JZ%*IF}c=DKDs8$C1TOdeG}+#aXC`j91wOwdwL zruO8}&WkeDE|nIizK1YSjhf8dr0eQ~xp$8?-c91aU06R(?Tfi8MK?M4AlmJckJK%4 zbLte5K<}u?`uu1Rd1%F96IWwvZ6Ttp(H%9X6;2X)ZL>eWh$C<~&S(PoVx#*F;UCUT z0z&0inuqTdFs=*az8CG*zOl#D&vWeHLuwr+zsa>YdhohU07Db1wI#*+2ugkOq_2jR z5Fvh|@M1lEx)bU^`bnrHOwsVsT5+Vq{wFeveT9Uy`r=#=OF52cVD{K*?bpUlcZ!uO zPsuY?z1Jz%97+Igu`J!{*y)x8{^Y!&?`c;XR_f9!4IgqHKYh{~jKsJ0aM=C#5&j(T zL=~W$)Y%}~|NQyr_t~5@2Q3iQ?hOOl-LG@}`SpoiLJMAH?dN|!`mYv@K?}Y$+r#jq zS`Y`u+LO22aWo#!xXhZ2H^Z{rp^tg&G*D9K<&Q|LOJj--z#l4G39w z5;|(hDf|Jtc$LzA&wibzZ^IcNhKGA`c?72OzkTV93PB9_OIZH(Q;-@onIMM#WmBUg z#Q-Fo;ELoX`}Yn`pJW4L^hJ~pYaZ1FHK40;ToelYSE?o$H!*>d2fP9H5Y4Yof0?p^HR$3MPv`nC&wgJG1P1A! zdog*xRMh-!U7XP;h#{gx>ZmcY5XA7w#`MyWVxR+J_&&=`eZ&|+id!It!sy}KM|3f9 z0`O$(h~~Nf%1ry)=>9XUlMv7XQDMZe?B6XYpopodsf!)wY}JybBml*d%AzwUxPUx4;eA5UJhpZJ=B;Zi~)vt}aZ=$C` zv|M16QleO;2};XQ!OpH*rM|A7n;kn7bncr`_HqWlogilgI>68AU=UsaAy zbIhD$H>|5M-O`z!i4(yYW400;<{PB18q|Dna^1>$uH*E+Yp$6j&}8TJfN3RTl827N z^w+3)Oat*hujv~h(}s=en-^e^1Y#)>n;me*xqYyq5%Ji{9bQD0T76|Wwx<`-5Ozsk zj^U*9*Cf6IxZPlO+O#wZ%}piG6rcY(DpT6B;qW0=(zUS`_FA@ zW-Gq4D}ZdH5CDheW2)GY?SdO4HR&$NJ5BaRX?J46O=J6*iSjP7Z z!Zx?|ccL$deNT$<&IrV-*Eh~b%KdKN&kr2!O^+p?Uur|=pH~sMd*tn#P}Es|W~jjA}da zkDh#uK}syq;U!MZ9|<4N$V@C%I;xerizhlh$306SfV*?@_(0FEMH3taLDr0Qm|P z20$Ca0U=S62ipN)rKyd1xTKZ5SzWb@5y9wc*TQQ-b#j9nrZpPNwdFPaxds}o(R`RU zH11_yv{Kh-$w8dUi=UU>g z`<=b2DH|(b$r8Cz@b1rc?qfffB{+fp=P6&&No@;aDrYb^ zf>lNwhQTJ<@PK5__6EAePLtxZBtIrp>i)R!hEGKOcaHcSq~K| z0yiZ0LT`E`xbU_bb%oy-Tnh-LcP>(>wD48~erp>2%}E1qdp z2s91qxG~Z+%Y&W{V5Vz9m10b~5^L4UoXD;k9xz$-?b-trxw>kiDEnyDX4L2*dP+TB z(_4QTb8JtcGhU>93BEMKgPX-)sn6Zjpk$V~ygjC?x?G?x&17+Ju&AsJZ~yU$c8yb| zwO+mAa>b=`gblvJ8imjxoJenOxP6mXE1b~3F1mj4=fTksM8g8{oLbVp@%JM(X(E^O zS?OaQaVJ`U(uon&M@%qO3VOPm<&{q6dj>?uKPvHX6j0yq39yZ`8H*M0Rs+sQ@6X6B z_tHQCn|`T8i^2Oswxf>?3`;DFc7!ipyk)>3aHsCj%hxcy+`o=@AX`JI0AKSY(rE#S z7VC`W3$gffgE7MsA2Sjo9O71`8{)Ozcb99wb1?tGnGwOW6ZFg|Ql!PZb$DkES~wr{aV8Ek8ZVQmYJi!}g|MTj;U! z+26-0)lUWgDe?6z|9O!`{T<82cCIg3_fup4U>q^j#8+t=ERHnQjO8iITdX~#!MP&i zD{mNoo%zPGd|s@lIHqP~#|`(kI@V!%L}cHr`24Nd;s^nZDA)k(p7b)JOkg8_jEq&kEcegYO#OJ>jmVXg# zOX9aG&N2r$3rrx7u25wBa7o)>pXp7Cv@WqeokXi~q zT_r;ir+LYq+XKV=mpQ^}KU)5y@j%*L2ZGr*vdx0|WvafoIlgzRIsT8Z$phY{PwaO* zS^;T*HvU>(U7h2g?YeOsrKvgvVr!{K?&8IZGeN9P32@xbc-LD%`uLie7ut{&P|+~`wpkZ*7KCoHK*1zvNLDSJUQ@k{BFK8 zx8glr_U8O_kgsRE<8o_nokkR1!)JM2i8)i+9{EPm!DCs^RKoDizS5Z6iVSW@=rsUk z5-b~;6Ptns)ky^p=2*{f=-eGH-4nJLK=sY%XwVoeAQhLZxawtZ-&Xj3sFi?ZHFk8=k9jeUUtRtpL8ltrF*o`VKI?ys6D~woG?- zpVXY?RqqyqYtb`_JG@k{tAFq0wWGmt54uuq5iY1~%D?<3X1ujGT{5N_zqc*WWz`i* zHE3&^h|4QpDj-I9h@YUGXQvv>Gsze&cCHp1U6#W=49wVA?D@kuO{b7|OZ;m}pc4DM=0IWx@c1Sh`k`;V!%q27cv z5wab-9ee?5b8s1g-Cmtk{BfaUX(7Cg8`aNf|MqM6GVn|+FW+I{MT;$Dy|vEapP$;n znJQ%5IX^?V>4cP9ni<%lzEiuEHn&~R_j(G7bRx@AcQef0R8wLpz5ND_&&D+(T`k38Y z(uFBD@9F(>65Nq4VUuil2CUpsQ&YV%Po5s@Uf%p}IvX9%rKMV;y6jVUPCG_)hQ9#f zG}9Vsyz%m5=dM-tL87>a%4bu6#Jy(y{m&Q)$KXLBOWN5*!ED9as!}#1|37+c>NT4Z z52tR?$c~j7Wdb9*v90()=G=5kb6ng)!DUF^K(Vga+MQg|<-5wWEiR7Up_7-y2Fk#- zu}d%WrNv8LNS^OzN|Su^&Ahy1ac7iuX5%)dU^BeRS?n>4ahK}p1A^jry8{ZG>VG}? zLuWTo0H=kg%#QZWA4Uf|kxOL2JhDyGb_`fi2)A7~{#c5O%?KVqk*Q{o@MO>%rHyA0 z%H{KPhi{TgZM&vNfIKkWxk^rvbb#K)YxwlKoT(@O_G_i{bwSyR7KeqrKRP4mz|eid zwd)rgA%wU^Q7SO<>FQ)A!PscG9L&+uGQbS#SHUqnZCbfEx@dWHhKAD$1L;h*54YaU zSxP+YP!}nSd<{D-l7S7eg`jGgmKS?>#Vc>6)0^HeJN;VI#H$c_X;#EV;|adnInK(cPJJFR%n+9s+olV&VL==f-!ykv8Gz900C7XXj~il`Dg)6nk9 z=$=$T!3U5lIco;n(=?5C! z``*Fzt?H?c3Lyboj(!6Pv(A0wz9P6+)iM<3|1FHuF9~5V`+|}m_$0d*4LzyNXJ>6yj`>86gUvD#|I zRQbivPzWqKha%T|aW@q0Bz@L^!X$jy-8Iws=WQ>u>XKfB0|nuVB;Fqy1i% zdeJjC&++lSbo)Mzj;X($7OomT!OCDI@W=;Wh*XIyZ+%Xd6z5Y;>33o)O0?94Z_~eLE(Z0 zk~tcc=+f&UO^uDRT!L2Jd->JtEuN8L@MXwG8s8V?$y+2HIE=7$IAxd1^$^b-(LLV% z=*XOO$LPda3zsm4aRUJ|Dfw!&>rYp?!Wr=9BR<(YV*mR{nz((cJrBR>rgl=XGK^g{@@4 zLw5bDO`)#OnnXH&LsMV8t-rvKxkX|~M2f7e>^sXp>vMIC5)an`Vy?r3TvE4b+kQ#& z4)L8P+{<^CxR5{Y<);C;Y`MWQtdS&5w_Mf1Y)s5yzP@RFxq2#L3oB7urPw5oc?Erw zE6z+gk8V0kA0y-#{B)~Dwj^t`s+O(PQZxF8$3{#mvr}fh(edu9b1DnSymE_>E^uXT z$J@j{fByVy48K{rPSCEY9?!EI?$eJdah){;0BeB>3Ia6p`g9AA%-B3%mW?8N(>VR5 zoI#swxFYQCS{5Ylvx=yT+rS;e_pkDDo=TxXx95s{7M1Eg^PPz*l2Kz zXpN4z?7C^1)mO_8uOJii7KcSWJ=ifWktkz%Bf)eC&Nush3G3eJ`xZSlVI%e)HV-Pk zEHmU~V2dM(wcYT(HVqbYeu~3-WiC{o~&C z4Q`1LCp9mvN25QLTG(;0%5KXl$Qq}Sb(#B>jnQVhOfA$`I;e?<9{b^t4zKg6Zfr73 zs^RE=FS1kr7*@1VpVB8++;$@&y zYCT(n{EymJo3o{$reYi!2a(>g%?}SJna+zmDFiN_8)LM|ql4$1Oq}+p7ksob?H>yRe zcphYW*<`C@R`*ss(mvC4xd!cRPTytoK7h^y?3_v;_hIc}3IZN4Zjw{e!UffS{mWz< z?+OR+oRl)0qlp{-nNMu+%4vOw=*=q%&z|`uRFaaCDu+tA95kjY;KTESI^jT32YL9m z{O!=4@F%|@@lc3RSj-d z?zf6X%`+yOLL?$c0;6tX*LR;1uD+k=l7yr!p!3eps8h!yBDu7nlUfvK%dG}==*88# ztlaAHD^%yNKgrD4P<|)NjkjPS6@5T{gp~yPx1@kaIu8ZSGi%I2u>Zi0D@ATIN%pZI5|B zY65k^U-sOsU9K?Kz}^NkW|a|RHFlXt>$C3V@Nv9bY=^&G7JcsN*&M8Y*}Ue-jHOxZ zNTs6!a0bRLqL&{7Cx)qRneF(Dm_C4Z_f~5O7kH-gS*Bwa9+-&^suKJ!Sts+Gwk5ek z7y8TqZwwm0Lofskyed=AR#u1N;+dEUZsPGS!};UQXoQ;{+r{3jlgpHMxjc~f0@o2y;?J@3QBm?i~e-rGGuTQA@kDWzg8A}fKM)INbX zV+|1-3&%xWG*N0Bdj>!?gb^LLvp?RE`&Z+207C6I$DcxB~NPx3XOA=`FOQ zqJo0Ln?MnekwNdK_n5k3u!SD}zXv$?Me02-gVNoW}DuR*=PZZv=Y2v3&MBkqp%Lw;ibM#coCapX@G z@%z+#(>Ox`o}1@O7?h4SIbu=5wDzcPGO*fFfC5Iuj2gtKEC{1T)usM?vcK#hCtxJv zZ(Gx~9TiPHUGb5)ha~w>-0t2pKN;C-Cd8oy2_+VOPdA}7VYo~%P*y2FUc_cKs_-c2 z3B)&z?GZXgMn;C6?Ni@aF1DTZ<42vX;oR)3ed|N0_oP~ykPiB={ZB9A?#W4dpWslC zz=S;=YodR|bO5$Tk);Z<;p-Rh{#h4m#@evZoxKyur9s+rVO$(9gw9w*7ybFWtbPiZ zMf>Csd^R-nIHeSN@q$RPnaa7-xokg9v%lhCzxL|jzb#7{Sx7(FvGfC^6ragn3!xh?T02Djg6lJV7zivdkmX^09z%r=-{6< z{a?SWom~aob@&wU_1!LI@Tg*TBJR#;lE(U8YeWdj-*!hOmY8&Kqk>qE9W`zU@iKfi znI#G0^mV4an5XgafjB|TFa+|1In?|Tf)bGL5B*=fXvtgXQ;ZeJ>N#@hpS(uoO*9XP zo-Hj8GF6g?^@&g_Q)H5cycPCn*aAB&R)8p@dG>e4=P%RwPGeWjU(F?jsnDT7QSQc4 zszP+yY-Df0NWdx_5O?nahkR%J)k_|~?9-pG>aS-k4afIMl0zq;&Xh2 z$b57O_&vY&7&Xf=q`^qcJ;yXBPg0VHpX6zv&Z1406M!(DW3oZT@tbvC$+D?r_t_Zw zk+t!EZfiqd5Q20s<+s`^#@}t;1WXMp2nsI$;m~r%jNuuw8D*ZpqkC?P_^6jD1t9~b z7ZuZf*YWsLA{~abQep&+SMcKNd*~=->K5%wNvt7Ix&Py(G;-AR#Z(Gq9 zLSsjoOvNn1NyldpJ~6>UMxioECSmobsK6%#E1CrXHlwFbQs1E9HO6!2Oi^(UGVZVf z)*$6Ixg$|9Qc@&{gdGr7D1e(%+zfc`PtT(3D#L6Ab-Z^^0C;<)84{dV$)y4Upx$W9 z?p<32g+k*BtdL^lYa4QrvqudyPG1Tg)CI2I&3EHNS65Fy*wN0h1^Fea@VgJuF{7Zu z%7w@1m{fPh{%059Oy~K#JD-*?L#>&Qco&aIo}y!517-}aNVq8@SSRS&B_P0Hz&wJE zp1CckfWb^oKF+wWW7x;Zh%%Yv$+8I($a>HMR$O@Zy}N$GNA6gub-GmqNkH3+Q*$!_ zjOsACPx8R>l7K)zg2aksKJ@g8dOG9x zsp!g%+C&w%8VrFL?F#!kb4g-g&=Q`S6j=L~WJ1az#7X_L8RJJrpEB<_7AM)~3$gbO zDF&NoC1Gj70*}opZp+_xt>W7_o+-$N&0^zu?;ZEzAp;g{)O2gfe2ch(?T5PO9zXFVO` z*{n(a{hjO8O6@bGjJB;)NK_m4oiK}V5(+a9JDvAEH$){BAtXgAkH?THVH{D3*41nX zZ0nXAOdh#2yk&;ovIc8~hyoQ;aA5vO=_q}4KrH+|L7Pj$(8dgT4FNMlZkA))GdxkW z{@|5(8v&i8P{wtu%SabLO!FFP{Zv1j-KBaCe+js}3|UQ0;=t#eT4H+)0bRBB z1J$S)Ue`SlHou3`fQjy4FC&jauvWMoe^%P+sGe@Ntr=73*zdhtBY`|&0o!vXea{z= zBtA6+aaPBGdUxh`D|Q@;{^0pAssB(WGc{pnRwRGu%)g8G^xrteHEp+LE{;D?Ht&5G9^!wzL(uAHE7EzTxMoYNO z*hi#9hH8-oHmOtKhl*#pt!)_DXUN+&MnIQUA1HZFA)rReh&XGp1b=1%C z>D?eRcDaNYg`ly?o})sl)rSLYB|GT5+t0^vLG)b-F2S+9UXR`c{g(y$^S^dH#9DB9 z^BmKm6IOtvR7M`~N{*ByX6unR?fX%Tu}tqW+|(tm=m9lKy>0buM{>fB&K76iQ5yag zhg}}FT_>e!v~vkPo2&Z-oT|Dr>OOUL*SUM2C*hxmjndv68Kt>>TlOYJPsT?SzI^a0 zuZz*VK?Q}b$H6AT@&T#n8l`B|^PdC!#r}d2`(CxHoG5V_FdP3e^(cwFTU7>;MagLW z`pLU5^B?N58<#IIZpQj&I2U5uMf1s2iB zA?9UAK$p+xHh|$j4-+4y5cSKK;A zYqliTh+|_q<$0SpEBBqE;HM{QE*Zcs*xfdnV8@UH>EWCcM(WUoFLb$htEz-oGuVD z9dBf~t`P+{C;@kriKT&xC5sp#{WGZBme}l72S4Yu=K&rEa7j99rpFnt%6c7*pI4v@ zZ6^{R_Z)RXHJoyFXZ>RfV^_H+?J4qgzY9UCoR-xvnSUiupL)>|6})t{!M@U74;?5d zmRD(k?tEGa6R~_sb^|Bq7}9;1nIJMjr3yJh$l51Ar6-8oltrhAgXCnVzv1FxW?Kja zk8*xY5~|Z0o$kj=np|M*Dnv1SKT>SNUe>k3!U;~AG8#0HXb%&9?nOM%$!WNp-Hkh| zkr?rrx>f1lH&=rSi(RGtaQR}1$J7W#3%FCPSTY;Xirn!>(YzNTGEcG>Co=ECgoROG zK8ejgjy1@)?Rutlb{Xv0%QsI9AOCmBD~u7ZS(%l=dX~$KT!x0lkUowtGjAX$!Ghlf z6A>z?KGuy|yf8^F=0Tq-K52~CI&=(38l@PRb<_H6UQKKeG@w%vn5n zY!Uj}MG>gVh`zPvs(%*;u#jHXB@8pZ*}9tj7?t98=jHH*#Gh&2?o1fF9k;G=05^Tq zb(}KM1%je=f`57W=B*utuslT_t2yk0DgXkhWhk(wq_7$+EKb)44iW#mbpEIH{_FQD z&JlGm1iX0B_E|Z48knjatGPHQEk9(v3_@NS2=jP`C-Hy*ZF0ivE*eVjs7F8|LwQyWag)LM|MtKPR;#j3V4d1s&kVq;?1m(ycV;&TOw+W zP2!PBfZ=;6cqk{UpkV$oO(h~${D=efh%NJD44;%I+J_y_FrDL-{`m3oNmz~;+FRz< zGx15Y1S@OWWas#=Ur)Yz`SP{2eB`sT$Yjv5AA!ZRrlWZK$UEf!QK-2MfQ6@GIt;E1 z^x$54JTGP@nWf8dnRUML^R>IZ!-7MFC7!MOjMS{u_i2;+G8EZUQc~vsecAn(#8G0_ zVn2QE++~oXLfCii5%7jw;0FEi3v|i9ct3io0%X~uO~iV`Whtb9Q^VEud5l|?le%|Z zcI_wG|3zy5+Tp~>cnMGBSqn+kZr;u`7SFB8fo3KU>Y5KZ>7nlpMk%8+wd5?l3*zFJz^E7VK^< z{LKNPlSHS@p8LA2jn(Cz(O z-UmuTu#pQ>qNXjea?8AW3K^<#yqdQ8H$|MfYZGX)E_(_aIqn8QF&xYf`b&ko?Rk=21`qks=uZ-6u5rv0rl>tWN3 zQlyq(>P^+OJ?qX9w_>}=i!I^ofq%@Sm6xjv)GlPIj`RrGjIafso^(xDX<6Kk}7 z?*F{0i8n^68zk0xGwAQRzA)EYaM*BDrLVx2&n;hO56J)YB|JcM_14Ps?Kp4Jo52~7 zhn&O3rp^Zv&WmpWhKM%iaEiDy~c8#7hvtSAVQ(LDT?8v%WOVe~bKMW1*P@P~(TYb4JlTgvln)YM_Zau87<=|LH;vBBKU!leUj zx%u|Oz;j0$ehA(eZDzdop4}8L=wtwp!M%Byw!`KzPak=W8e3*>HHfs7`^hUWC8lo^6al)nsE|s(sp}TVNz+#d?~3uH*;Il|oje#fYl)c+rD%+#tzM=_Z4a=+pZ1#Zyk?Kko$p z`i6f0w1J11j!(bme7S(dvrXP^&ZS&0?Z)m!)?K|N(nH|-KP8z{=(t3k>Sw;_Nc$WK zm6DfRFcfh#cFal@wiyWpXmQ;Y?J9tPj2Dpe9$TLZNi!IA$t{>^k9kmR=G}de0DXLh zkp@Qb9VPK_v!htXS;|Mrjr0{cw_z=Oz=m}0xu_M{>+I9G1hh+TG%y6Ta`kwU5ZGkH z2ZNsCE@hNZZwc2A&Snp_o`q@^7({F=Fo$m}^l?~z_yS-1CU>8yj3(1Y&FE>ZHOUTU zrQVrA^3dtw4b%3ta(r+?&XC9-e;|^a+K$oim)07l&ko$O|Dvw%IMZs<5-XUKrV@ut z-%R=9zR=4quBm)uyw}Ha(BZ?{Fw?8rbJWzVH)|7BA7lAK<(Yy;HMaNrsy6$^I zJ+=(pDxJ=IX4{1|7Q+V|HtUM=%Pa7X{RPU=e9D~{M80hvE)H-3L|MLUZ9nC-udnp_ zYEvgxXz30_CvW(^;U6K}Bi6$u3)`wA*FSVcpom0^+?)`{5ZUZn`E24|1B#^{&QaXj z8}xUVx~(=BBaaWN-CBvOfH8?UsAmu68hMU~Fhi9R-DWLzW}<0&Q;g`WYKN*!{KWL< zvt0GnQg)Vx9Y0|TKwb&SrU;KVx0aWp?DWr0~Ixg{cN8LjlJY0d`$5R?p77Lg5t%pf=r6Hnf4zqSJ()o&8 zC3Ec&2DN(&efZt2@DSan<}RYi9Hv*P@v-EM8o3XpQC_`Y=s6J-G(wgm z_tvK=!>BLGV=%b6HjW^MdcHhe&-jVsS;^)divwv|U0rE9n<%7I5e!nLHW2HupE*?( zq)5}O+(AFE+3W(U%F(^9H>S9C;5tppNbcmckL%Ko5k9mUE`|j-b65=2cS&HlZ3lB7 zy9AOyR87300$)PGDEOkd_Nq28gUX4V5AUfa9B8y^eK@;veb~`B+DP6jbj{Fm758{fh=lvJU6w&@_U4Xd^8%|(KpTK+=FW|Q z`L#xKaZ!xhhMGSTTz;srXB)-G$D`}T#wTVdTOe&>O=fR{uDVYyu5nLtuAu%PO3Q#N zQ&MvqzutEr&pi-Uu}pe0+K}@qv)9m_6I4tYgHfokO0#VnwN!VF1ypTx zu3^12$S}L-Fk*gn&)xbf>V~1AO8i9zA?tq62LbL>0_LlU0+vH89|iLa>@Gv_?lFVL zAB7!htTS!!{>3g`68PQ3QS?lYJhRF*NM2)yWrq!_c%Vvk%r!NhU^Y0+b>^X8GWci; z;U$^V3?J|YjTP`QO2TXhlRz28HoDX=tz|H1?uyE$f%#y5&|CK%_G+tW9>c33?{*Zh zRZyFcyXWvut72K(Dtae3kJ0-Dd^+)IV7a9)Q>EB|0MZ|>amzWVk;ZRN4`>;=kV?9) z7IK4{L-mH-R$HIL*^Rq>ywuVZ9($@hAu=~Z=35$VFN?d+xwlo_!_+H9wyLFC(z@X~ z){AY&z1+&j_9*AJmJadxT^yTZB_r0=l(U_QtfTH5;kdcZw(s_-GYO)l-%3-LOY(pl zM;&hu7YCOA2DT&chjH`&!wB-RAmP=oyC^OF5eY$=C}%hHSXYv1 zPmvThu-2M0^Nl2VV2HV6TM|=irg~^y?&uhxs&CTrEq!-0UHROXQzqFs&eMDFJeSr%v;X*3(Sr4;xYS!3jec;G`p$mEwuZY*1SG+%Y zAZLTDW`@m@dRSLM4Jv5O?a{PnSk8&%c?HW{u4o=4beZz|)51FmLNdZV^|rPaJ?|?I zT*qn((mlE)c8zGgm?eyp0YyMnr_2Vk>J~YcedWRByWOnj=KD&5T-C37E0Ndu z72p)@ZmukPt~DL3OqY*)-QDn{DZr<wrfZPlHINSz&K-&_r6^*oVvST_}$N!;C8x2^6`2Bziq zfXG|}8j-EVi724dLV{EMcxE)+zx$_t9KyeU`rwpajguTmHkVf|iC%^#E^w;_8Q^x)C_PhPv ztjA{jzEDhw8=*F0dcCEVRLeO(pm(Q2rW>dv6`EB?H$(>JK-ru55JN8AkMx%{i3Y$~ z)e^;nHvZTsx4Y?rsk_v4!aLuk1Yan}l@mbjC$awZlIYtdb5e7yJFpe4E_I{U2#%0D zao78*a`I3bx-aYo@~g2Zmwrz!jjFeIVy|iP>Q!8!kTf@~-Rc^@tLB$XTvw6 zue3-6H6B(?MBHtCo7HE6_Yd0LuP92L9(A!qpU=WsMvpCODIlmu0p5Taz?jLc+lP3DB$DXn;<{45&5>T4_cDUkIAy^T0b`pID5VJk*C8?HXt4 zE%1zvhvIe%=SM0_-i+{!|tHr=1#2#d|tnkk+E|L0=pjUak$09z~(sH z4*xj#3GU;S`jp)&Nz`SLWoG;e2ZJyyYRyo!UnM7@Sl;vc2mqXSO5)r5dcQT97Q^u; zFk;!b=3u6`O9aE@jr+=nRQDju_4_3myCTO8laK=Qv&AHdI%T!X64}V;sU!75dhf_cgFL&rZ zl)*On|M7OvkPpy++lvoaN`4n|X+AuK?L{qsS$N!BL(+4n&PWSF5kCEuSNa6u0ercS16r>)73Mmk@Rp%L+OFfHP zP6%f@^U}SN-H`~W6#4`+%tihH-g9Q5Uqnb?WEH=Ag;#Ic_3(d8$h1y)wOOxXLZZ zxhQnGZJRGMr4o)xSBDS3*JTI{I?Vd5qHv_6H{M<+b4cUQRlm#3tsQZ~?7C&vH*9UJ zuk;Ija$Wy)z2)uoREd=<5bWzLEPfzcD>5tM@;rRbyH-j9!&DvT7zt<&y9mW%k8LK5 zY6<5Xbk3Za+Il+OChx%F*LT+=j*~X?3ZbXgXSk3>*@f$`rsOx_GmEZu4;8IkclSK2 z*=@(f*1xqC==go$@RGt*b&=B}7o={MD_rI@1z-X!?R?`EcbD@XX z*UHJW(ZTm$Bn{Z~y<#jQ(m*%3kBla2unca+TjC~sYtPWf>IOXHakN2yF%#eWy6;w$ zVx#&uhr%)}W%pvGC6h+C4kPVYHYdm3_PK}oTPUt447r+J zS{PYI8UHt-a)HtFAyoK6trgz9#okiPAp2!eoqG9$ow?jGdsp-p<8IY*l5->+W^`wDsF3*oH0O0*&{ndfTdj`9h5W`K6 zp2+R7)R5UyUD5ZP14M zB0rkZKG%dw9&Q)W*ET^AcOD%hRK! zndgbipoV;Uw&2Wn0Bvbz7%Yftd|~95AKdu0?C~x1sPDjL*+(_nD9x0GPn7aR^MH%( z_N~Qi1IFp&w)^QWTm@8ce&L*nX7!VdzRWBD(0@Rqf_wtFnE;u93n#8>K->WY6RGb% z!25~c?2aO$KL2>K{`FD{(wqcqhQsolO@LjV=_t=$l!z=?^>2?8mnnD=trY#LTsa?A zTdA5??tDcIpikDm6ggwyn1?)%E!*UAc87{K>q53_z)c6>sAsmo>b~UTF&}+*pW2GgOy`nTennY7ym<8@SC1lfi@2-XJ z@2%9UWhqg3=D{F(o;D1N8k zfR1_q7m>L#1LshUGn#U^(y?6dDa;Kvii%us#K}3q;svepb01bJ1s}L_8;tX8w%muH zB1^5RFI8b>)FHJWJ-{Zwz9LE1_gopy_v48}w(xg}j4+L*t13`@KXsZLBk{oGL>iZ2<;8U>NnQ4I_ur`Hp!ubGT z97Mr_K9S5*-FlfGa9@;HbaI0yn@%XF`cs@qum+Z#vmfly`cRKwxVVRq71UDRu(YH= zlweTPa@J6l~~WTu3GJ)XYDZ}JUs_h zXMEtF`+F#Rvo8UsbriX+CepL`c=AB=V1Z%ujv*gV-DVG6Y|5PUu(7p9m<-oyDcj-V z4pC$U(L7}mJc?a88gn`0PAtnnj#lJ@Oz+5bTFwPW&aa8AGA9@>Xf~q+xtx+Uv7hqb z)0zP~%px)lUvO=}?+I5ie?#W$!3BYl8KFC)>2>W;LyV=c5aHH3-XysBTwz=1@njz8 z84dwcGvaQL%^)(PLwEkNdUBPNZ!@EiutlS5rTbZyS-S; z)kS;N##0~Li=8(g%qXqdwX|?c`K}C?e0VR{_4=zvC68Q#vg z)uhdIk8xqZDu`bA?WD|!#X1ob5o%!DV8nU#`_zszx(v&vQJ|;abv&8IUCZI9bXfoM z%sGDgTDcFXBXp~4F&eca(hbazFU-|kh=VKpUTLc0Imsp9X0v(g&K-oTyj)8hP|w<&t8!07HAO7w*e2&8lAFk7k;zZg0V_{ zOeL+W| zrPY}vS>PRd3kylSKGo!~|Gf)bIjiQQr{t%@~rc}&5$1Ch*Y{shCW1Oqc zo6O~pBK1GyXykFH-VO={V9VBMn#(PPlb4+L$Ow%K+fy*q9QrPy@Cg!maExX(TsQdO z*a_`p-xr@IjfqbWHx_Nm;eDDGX_eXUCf?hb43JUFQPua9_|MX;9bXk|aLjQw@= zN_`u_g);J;j0(B8lDXmW2^@A{dEO$Luh`@(a-UgrzYJk?5nLDfcVySU2kn@N=Q<7h zcgi2p`cP6vL8!_8Ab;!QGt^Kbs&1-Ik}8Ki&d9`+BJ8O-X@&;Y8@1?dyc*H`hbynt zS?6D#Y{7nnY-A5ur8&oKRYh>B?+$z~0<_>O`c+$@^#=#KNzDB2&--)sY`_soo>^wq zr$o7Lch9sv9>%z|5Yap{8NkmbN)T23o=ri`U~<^z7!iJNK0#kTn4XJZsLW{?swZ7w zjJlTXj;+>5v+0)Qt`B^=3jVbq+cY3LBtEdcWOxE>q#|W$q_V9lVzYXsKg!-neqqmA zCUvw59_}#H+Ip&s&i>D3=g<9-kc}UPhh(;Gt;cpKy4?YyYt;x|_Ak~!_MROBj9 zW`wW!9H0jDS+N)X#QDP+SWuH`{SOM|ow7PZj3^I+k-#gfiWz4t+wTDsvN zbI!d@A1}`|r>tm`%~)q7i}fbRlGFN$PoGjMr#p{*A{(UzeE{s7hwHN)m@vpj@eEhG z{@xIzT&HhT)aC8|4z2|ta7{WEOLzARS&wb*Dp+@9U0Y5$=8+dYLnw@g)@9l+~JJJ>6dyz+i_e`4Fi$roIr zgR#mYRy-<;wbA!Lz9;Cb0WPgUej@V#TPxLn2S@z7>nMZnruV`7<2eu~yTZ1Q8 zqh#l1Gm_+W``zf>?*^{VTW_LCl6fAR(>~J-AeYp=)mU-voZciz3v*?Wxd8{-?}_m=~CSnGN2XWsL^<~8TMCWYnK zzM0dpEhI%+V>`Xh@uy!j=ueKYw{47hXk|n-o&B@Hx%U?1*|&qSn(M2U>!_i!=xUF# zP*_qn2(q>N3tEe{1w(NNKg~fs0&&J08o>MSclOHf7quMJJv-d~6#=PoPjlLwQHW*H z+j+~1nnj?CQMakn_wjN8r?Pb$y6vG^}ZX35`BP-dXn1#wrD`{_J zAS12KMl}QY8EjoS;~EDx-33OvWwT_<{bZGDydpT8YU1A^$La#0l_Hxkj2h;o$sAqO3 z5dBNx=&j_Ix1A*3>Qv@V=op3M>BbWMn_teKbV3}#IVt&E?!}92Ag>@Ji#EViSL7G8 zxjtSSm#-&njf)5_Uuur7wi?$#3u0P0AJZYswu)19f4lhwKsNFqN{?+$6~Wp<8lPs* zp)ZDBr`ZZ`(zyzjsw)VK1-mKuFPfISP9H9ppnfN4PGn)$C@bGNE1puz_=&Y7DF<4F z{CW+VJ)cX4P=IOXWdj*XgjW|;UOJP_4sl4VF>i(?Rul#pl|r=fdDyHK_Qz(;iuZS} z8e8tMT_hv;Ej1RYB&0g_V~UE$FTGda%O{D*1>k(14bg_(FVP+ORa`)lmvyd`D!@uO zS6n>JWbg|+fzKo0N)r|&Xx_oGr8&Y+c&p5ytTdne-ODFD8B6Pfl!(y&8e^|YqZ<~} z4KdLyTGVsaOl01>ff8qpQx+~;xlVhfS{1Jodd^MXAq1S>?UN4F*4|@1^J^B#;H0mS z^gdmAA56imKW00T&#vasvb$9u3E%TOb9ii8ZCriJxkPw%WOL?Bp>PUBE zHm~K%^<+SND1Y#L?DWiN#C)>O?z7%ajZ26aTz?kibab(t$DPObEJuqrw**|aAKpEN z>$n&yT4JtazHXnO=kAp3uvi9%sRmT-HD3p{+HW5?isX%WbO) zbbv-W6G4caY!=B>IL~5S){_heW%#f7=ayIZ;`@pKy1Y^ET+gc%nKBq5YAfk?GKCd> z)+p63aY?V;eqYj8;67fUhPidFmr{u>Ha+$Lkyr_Ds@oD1Za;ckqhD~gw2eHXZ5i$V zQ6>3bfydq3?&&_+r3fV7?oVvnref%CUmtQw>UvM0K`|vqZ&_&u$@OX+h z7uEkd^;`qVyYN^H(Vmcv?f@MuaN5547!YDjD%~@(f%2n%7f4&VdjhS(NWhrYj|7u! z)gP?U^0?$b9@$hy!(mgutasgu1X5QL6y6i3ZnB&8g|h(aZ#s{%EzdnEHE3Z25le(_ zy}iKWc0lvWUElZS25h3+Xx8jYtG%>JGdhP{`N+ps7spmJfkkc_#%fS|2B&0EAN{~A z0tXH20)7=Mj)Jz)kjInl@pbKcOBa?BW`Z}JX2W9Fh@ouF) zybdhUD|l|V6)ZUC(Kp77*nU5D0M5#dSI(g8*l}Y@&qeLSFnKqd++hn|6a9 zIH|%8L4sT)G&FQf@NZl?F)?FCy#uk|9!LPhaT>R8H6wFT79;Ck5{I7^{}N{Ymm25) zelxxYNE8~qu<+`VdADVt@@#g$+>-Gfz>I?JA|1RZZ?MIro=Jn4$Pgq6qTc>prt*LI z*#CkO9=sI8O!xPreWE}D1s^P2gjXdnA~}G9a_x2T3UmEC+5iyb#0Mkk@(&bS{%ZCA zhyUA^K>-l@)~!gMQsA^o`_FoWLo5ffv5v0K{Rj8YFM0UncP+p_UAU9R)|NH4_1#J&|IsHd?yd_; zsc=TbU>B;@3*oSd9S zrzzy=UT+8o^nM$`UuSdw^0%JPkel&Uy0jQ*VZ9v|bQf$At|rHSBsBe3(CYX9Ie=jS zyyKo+B!Bru|J+Z=vx-5cMuxi={`qBp`CAU;I9i8ZhOB=irv8_I^~YVejsQ^}1>vSU z|DkO3zh68DELvvZEJ03ha8Ml!QNEIVCJa(H)HE~*xZ6{S9=f0A|KzLx;rBcoMNh^C z`vOB&?9Z1%1xc|y`0NK$>W^>UwL&>Y2TqVy@)`VAFV28>Q|beuf5Yx52tfjq zmHM5y_?Q_(GaBfv4O7Gq`8Q5sU$J8Fw$%NmZ&1@@(Nc5C4v9vO!K{ZLqK2aH%t391 zdmD^HW|}G4d}bRKRf0TJB2=k0M8ZTQ9@`Y;Z7%VA6~`yLSYU_}x_V3D>l=6@f0hCx z_w)rpx^o_hFz%5bqxhYMqGQPf7Aooh z!j7d3Z9?xgR(~>YIY$q z6qj51;VQ1K+X0k7yVoR(*ky4@z3{d&RL$$wx^EzOObWjoEs2}TP;5?Y$KMeVK2W`f zWpyu|A(HSP+=^%Csfhpj= zW!EYfuYu2ymaPo26U9j)tTql*R8)qVyCH!}lp^`i*Pc)O+s3a>&M6bPeF}6N9G|yP zkdRRKl8(m+Wz-jsw}1cM@r};vHT+5<^Xb6XuU}PbdgN5|OiiG?@b|MZ1>8g(3G-JY zYoPC*7CutQ!hTl z#f}LN$K)5-zAM%`100huM+^5VTO`OJ#f{6xeX(i+odBxKlX-{y)&34;ChBTIkpcx}l$n7bt&!EBcIa1lTU*w<)M^Fcc z(A#FFDh6mjtCBqSWaroWMFBqGT`Q1B%z2rl=*%jg`b1my9($sndQ@`^#BoTH&4APN zo4nh4hU3s#Rsh!A`Py|#Ohi_mbW18Ztw!IrqVQ5jxxwqR;t#5o?#~NeWCS;xoo-U z`k4cauo&(4`}jQ7O9Bo)+nZ$k_VOY&mj!^w5NFaTeaIfiLd9o07Yzz#fQY#Va^?V+ z)!8$Ukcz4nJU^lgKT30s^Y&_xL0HC=tYL|H82@y|K*a*pE{7u<4uGKNJj;yC>AH<# zPN~Ov85kV(^hR1ZhLaWT6TdWXe%7eG-nhXwcew^fixiTLNJ7%r=Y37i$NA(*Py_}2 zC{qj7OXeo3h=_=xjIFi3r#%Mj+EgCLty*9F8#IH%&aVv`DV0zi?!6D zJPnNkbp$Kc&70A!t&oo(ei+xUcUPz|>t=fQ?j07+%2%gJN5L8?dHG=P+!bPE(Kw)a zCSgJ_8Ja1{);OS-c|P=pZcu|z+WTmOVFgT>-}kvrjtUPaQ$5QuQeBOS91}d=7G;_D zgg&(#FQ%P#fkmyaKVW?E#doAwU8Tar>-#T)=42s_K7+bP{^w5R9!(BmRQrw@*D{}T z;UA}lJa&W1vfZNGRWr>Ex18o-g0#2qmqfqw5(G^ZTCcZ4n=0O{U=VZG1qvloH6a=- zDv7!})mpmqGlZjrX@Ja-LVHLj-a?XFrx^DsD}YfVU+?ta1E+zSJdHoVlX&EEZN=cn z%08AQRq*fFJ1yWm|1ip%MqhBi+X(6_=I*Wo7K*|R9Br=-JFi>(imree*e? zp#}vhe%BKz=vvKr_6N^_x_6I3-nLf?OrU+P1@-=nqfwNlP_#N!B_lzeSwqI;D{OuC z1~AWIh=yEBp77OP61lTO+>P!x5~G;7lrh2{&2fNi>zaBwpKHE76YNWT;{~JvcoWse zliTjDfwPanVbaOwGHUQ4G(3wiTn#B_eDjUmNT%mZHFF!vjUFCYz$U z%$A-ax|Jgs$7Iu*FI#$(s1-A^;fT+(TCnmKyNl&<#;ldUq-TyOd=^H)?|5jIz`v%m zF|=pQ7!Ft2a$-=trYE59jZo6|df0#8U3Jw5s@p8Oo8`%0*rKP?t!^D&GJV{2!hR;B zth|5Ktsw_Fqrw!_VK|)c(7q~~tn*(z)4c0xL{3%`SU2BOspnEmd95pYOhaw5LV0Ac z+i>0=b?2)^wrca*b|T`tJCw*IE8#M7TbXT3nnm3NbMkm98hyM-UDCHKgMvRihopMC!PfEl2?Z*6d$7B&q7m&(-3gDq?B zW*>s{hUwrXg?0G2r?6>rSv&qYUsSZGu+nAT6{+Fn1O_LIPhNJja6B={+BTKdvR0a% zJJp^Enw$kLUgKu=l)?MT?rxe{mQqSlHH>VBWx+`YDCZ1nw!TdwUV*)4z}$XG!EYdX zfT(02_vt>iA9*k`K3i-yR>@wrR_AjBwGtLQOZ+Ck=6vPQMdBGMSZY?erl4}O;o3I? zR5hATRv9LMiR3@1rW+7R+4H`JTyLaB3zVCSK^v6>4w(RTcWenL42d2T?Oa&B62gkKg2V(oQO08$|n-g*q${#N9zGECVo32I}?PaQFx~kMx!}F=C z4Zn2NV_;%#&5z;=8=qL0JTuP*Lz$J;Fz2(}i?g(tkZ!w^5uy=un zfpwXMilF*+CU)uh<(Y7kh@Q1Ui5Vyd8spxYtod@b=`Ou(_3M3eYKA^>t$w}sd|hfw z%kJ^yiGlXHtZ?n2(9Za5^N`ObE}~uK68LGwN3CDa3@>-r;^0@OKhDQz;PdZM2RyyL zwWOVFwxm6|C03cL)!*EZYJF}^>g#-n&2ZJodz?1j!+y{`pLcQ|-ED|Q+3;(Pd2Kn4 z*^B^IK84+|o%JE|aiKQ6k=@Yn`1SCa3D%s?Y7cxUeNbvB+s@14ytDnR0kl_2pDRJz zr}?LNiyOUrjez<*wAs5q^%8lYsFu!HaoJC-oz1jT(U^=DB0x(Xo*QCR^(?vT*lBx6 z4Zbhrwdv~i>-3v5iuq`Nu@*UIb<~Ykg_{o-?xP^#y?jH2o(E1xt=w2gYjesWTOSsA zN&{}BSt=VCFw;x~kDNS+>rfI+i&c^Em}<&(PG&pU{H$80=v42vRdcv5_;ho;gvvyp z(W1#_cx<-9zSoqPyRjB@L#a25o@Di0x)&V65d}aSuGc-~mZbsITLRCXPr+IC<5y5&%ldTLJY+HEIRAL87NkgyX4hrGQu=J z7ftBpZMix@)U5OqIs2||F>{ysfbwKz=;_&{u1}f~=K7<+YxmA^hSigEEweoMtSxPC+Oa&eo|$F5yrRJ*J-C(@Wuew0zdN@zZY%wxt2ze= z@^hJs*?Q@LIu84?7HS%)I~6rd^dz~TDXU=F7}C+gLsx9htqP(u%QP{qUn-j==vlhBOM?h^~; zvfOB<(^uy^H$H20&s_!{;tW`}uaps$gb%k|FtW*K6~f_#?BI)z&q8UTByPEX? zxJusH1o%|YM+E~r?V)X~&r8ek{OtbOIy*V{BTB{}p9y1eMf2m{5O))Ot+__LsvupG zM32M^I`0)4BbSqeMYka1;18}(6toMp(}SeaGDvE%2kDOHW!)NSgdiw<;EMLpTWFOY=OsWWc@coQxC*in3DZ6EK zTQ}7A@9`HGils}}McwoS_zUBH+$M?EC{)2~emZ~`_z^+NJE*hSZdRuU{nt@29d)@^ zuiiMb?d&a;FYOPu!&aikC}oG~u@T)eH`1ql_RD!}bmvP8Ts9w%rLpVrDA~-^G1{sZ z=7@$tvm9Jcys$v|`tjyiBwNa~4%z_uRCTl@_L8mX<~=+jss#pAri+A<=u#-{W<6;9W8Ahi$S$YU#c*B+VRFCtxBQDH^l#1Fv5sp$%ll`zmXm~ zrzQyb9zHWeVru~Vd=rqcFIDg7PjCREpkHXb+S~AF!*1SDV{dS5YH%G{XE*tkxl-Y| z;pxU>OA&a?u3zy~(vwr4KA4n>y@l*NI2&~!^jlXAvWl)uI%d7-uu2OpWpae~<` znNcR&yS~nD>h)jK05WsmJmlwEX-OHCi)B)ROlc5(@71X_`L8tEMwOplc}o=Y zhVThHmoxlQJTUcTx)wRE@L{;;g&`W_;cJx3(~1~UldVu;E=x^zw@0A(eg|H;_Ifq> zx&6iv;icQoOuge5tsB|aVb8nAI(CFHou-kDL$j`h8&vx_)N1ELV0X5KLH8ewgQ=%x zV8-W`UENRXSYmlWVM%)T0A6PEJN>!>IN(>2#F_nIOL%$TA{L_t;fE&0-$P}vLn@I7 z`FFg6=kN6DcTD#jW{MrJ1%j8=Ns~98vmm5v^|{e_*H^#Au<{TlI?^z0uM3;5g-ajY zPwSxcxnND=V~JzAwq8vb0>v(UIxjbareJPcxr725aRYYy%N7IUx|!%f{Q=+| zQfl`TnBg;6QF0n(GIIlXGErjX!5=?HH~^~zW3B1H*f?k7Bo33*nMOA`;6n&(d%&da zf$3{AH(Ccj3c%jjA6-0m`E;a#IW{5y6{G2$rEw_O#y# zEQ47oaRD5}`(7?P>uy6}86tTXZ_VFJcRpWj9JE>k0c;T27oXNF| zvh(jLGPjda*(EG&$%6|*47zA6&3AO z6|OcurGL-)xU|Z0R9rDxfQDSKDi#AVALHu_@sa_PG#pQh!?x#rloNSM*{wxSC)~Hb z`b%XyP514~Y~kiuLj zZq1-$6$0BYw)YoB_JkDirflD&S0ZDj`$U9z)QwD3DSRBo<<6gfNse{r&b^lksMfs9 zV{53Wv>;#eEcg~o+nH6p>2v6($Oi}y$Ey7C7rVS%T&mZp3_Rbn&^R2HnlL=6atxU0 zM~hzU78v6D9u;itpZ4wd3ZWlY9M)d8zwvjvDuMkCgLDLqMAWv&M?QY01js4>?eRaGy~vw@SCg zUC-I8R>?pc%)B{mG+=L%$zM?xlxW#A#qJEJ@*nYr7DjtrK4w(kK7H2KWrsEp$7T?b z+dI9!#`|Wsbh$rGDfHU@DHzqpe!9OB<5rosel&?9pf%j3;LVc$bf6|MudRPm3q2jX zae-dpT6?ZkU1k6MD%V@~C6^FLm6AeSze}v`>gmP31}_MDI&v{?*6I09!JJh|c)|gz ziKc*|XIBKCwIrFxlmjpuuD&ZPb*=-Aa?2*U6U}^hzm=U@TK*sO*QZ`LgR!Fo#8Y zC|8ESwraWt9*Ke`C9SC$->6X=>$owak8A=a@fuKt(_eb~H#i@USPcLf8S}4iwoXN_ zFXWmNpCCJji~0-9nzb9Ut1jy5m;0~dMdCD*^y5(}-a$|m!R!@h)Q@ty1c3WZB+|%} z_qAQk>FE!4A@Jp0D(0fE1TVUmH!HYZ9m#im{SSxzuZ8Bj2Qd!&-7%FoRQ4tvv?i3S z%e>hg9n$rV8x=?>SOG@sp`hS8dpRG5$HzaYcRPs1Vat;tNZ$5-_WXG#coya`kwhs! zKflOX96ss=II89Gn!la1ug$5-HZG;>KDc`sJyGij%H_T@#+xdJx`FuF2VD^e?M0UbQ8ej#tv2Xvv_PZ9~k37xJT~J0u=w2iIr*C!YN5eN?nRg(feFXIM{rwSe6ciNv z2M->hP=id!>n6Fh+c(2~J$~HH8yGTu!r){fSPfRBKp0KvcX>r5 zKA2DxjaLR`0r@8rE*t50NU9wrRmPSMVmn3rgr}isvUgq zR{@S9aDPbpEz`LY16U)B_h6fgw|U1D`_Ebs-$9`0PU;ol`Nao4-Rtd;XI-}^cYh#5 zzl0tG1V*Kq_`Ed)JPDuCP&62uI!J6IyB?kdOvuJBn^*#v5H>%nV;45^iibn*4Z%x% z;B2|Bc?-Pl9K7&pY*z4%hld08_dsey&9}WIfC!kO_owxTf4nRMf}0Nvz-e>ApBdOm^zd1nr{E4x4e-$u2NG~qaC9jqP`Z$6fGcL| zGt3x?z$)8IXmjL(=QZxT-DDpIE)@=~G7jkr>X@=M2l-1Kd zYjc#6ig<05rjw%W(m{QqYqJKD3b3QNgrgQaRp_N{-=)R(5gVUG>z|(>$j9}y1vBK2 zdfm7k%fNTIyUUOBgWb}=sIcdIQ!Fn&90PB+4&3z8ccF)b$n~QZ2|Gd_z*&tvsa+uX z^dc2P0p|pd({64t0Rg-A4hNRwR~n>QeUr_?0K1m-HT8PHG%zO{h8%G;V3F87#E!p5 zl#_vPH#G$3-rsNm$6aLFYybb{wAbHK?7P7r$=6?Z=2Qfrp8Hvoh--7gnv;E-XgH+m zS6&bf^}`XH`|p4Q7zA4kIDiqG>r|i0u+%B*BjTg^Jr(Gs%g&|YGCJplVeF+tFz^o! zbC)I~U}+O9u1OiHr>|FM(j?_!M|qQ`#eevylU(qX^T~V?$BB@tjJ$Tol%*uM+@zs< zxIqv{aAHGH!hnMmR_sAjRq@5sV_G~g4+F+5+$FbEfP^|LSPOd;091Me#|B_O6vJzS zM2QgzQ3GdAQ_N$D2i}1=y`Rm0!VuNdVo~B6f9CpIGr+gs2QLB`bxJe_!Chd~EMfoG zsQ<4~|NqjcIm%lvgKmPUo1!b@2K~|jcZin@@=~K4-S(wlz4BEGK1-{-?yC3cXP6iV zDOu3ety~*S2Lcs(#RRGhDk|0ES#2AO;hMXTaX~$MjNgrG2CWLA#iOH;iB}-nA`?8S zeC_(gU+8#ym|`o_Bt=N$gt#+Yq{-EtO_&!CjaMEr&bTmnDc{McY_ z-5T)QESIo+DashON1B#b@Egb)5#W%K4m1WFQ3dGz#!b}VoW8}4D{})tb*A(K=`!Rw zE!pee2)6kV*ORb=LV)he><>8DK^Fgjnm25}0l3^h>O??+hWJ7J3*cDuZVBQ(Z!JR) z1qpmGGFJ+W#j)YrAu?cLlE65M0n#FM+jj{G>5!m)V1^2r8)Tb@Z(@UX(`N1;Z_}S-9Gp{l`0Vv=&3?pP@fVK{-+Ny!9iX zIgvWmQ=HJAE@jM$s$8g&wE;RIeK(Ugu_X33CdC24F_xbcsmKX2)F3Dru{R(gn zv-=-BDFbe`sjIiG@ex?>|Fpb#C@uIWOJOb9`u?Ww<7;OK%g%20xM)DGcGQqVUoZW% zR!tWZ(W-h?(@k$^XsBA_=~SRn5_t$aNa#L>y8F}pEu*);e4QHP;$d!X)p zU;)l)&QV}4_@>SA*04gMM$vWz)pu+$4|_IYE(ik&=-vcDKnH-{hob;`6QK?$w%UE% z1Nm7{=Fu}l1CH_4NrlykOzIWSq^Zuv$@*!(%C%@R2~z6fvG)IHaP#zXHn*rwQ%>AgB%GWogwRqB?`+FyMwnmtu>K1HsY#fl**(OO!E9--4 zudikpLB`x~Z`o$HflmDES0EJQ4jmt9a@m=Q-6x!nwH%#`6cL7Qj)T!O&u%DYWo6Ml ze5j0yhPJ(<27QEyj;@K;vgy$6wdq3G)3^H;Lk4t|Ha2Ub4yZAN#2EcZRdS475?KQp z50P};H27p>WM!hgI#r`6>j9jd0BOBY;u# zsk#C5fXqbyJDDj9LQf>9uAcs#wnoSMa`V}RyRJ={{=;8+p&M!&w}ja@QkhtY3;Cq) zs=`IkOqNz*6}wx+`z_amU##SAn6eu*Gf`3TBX9;|jW;S{DokhT`N5!G5rljOLyp7R z5$MVPfLI&O?H?2zn4-v$ZF*!7N>0U~lo|_MfJ~q>YmQ3WadF)Hz`$-RlOpLH*%gxk z-?=l-HMXYZgaE-m8rN84^*&ARpD*(RTJodt!VputXXQN37M{S%>wcy4bz z^LVM=IIJ1a4^>vvszW()3_$EKV$52wz4FrVn%7IQI^$`Var+%P$42;w6^qZcm%6i! zjddZ!8M!$|D+2iVkrDy8#OW@prCODr9*a@ba?8b*Mptja z)-rTzLsd`e&9>Q`jvBI8Up_AM`#I01P0wxSW9`Ize8xP~sAcT7n(%aNEmhD(Kj02I z9iXg-fMInr$1uglg^9c&VL!R*_4~nPIzvm$|Hk*tWP?OmdrWt8EV2;jXU14tDg5Z8 z2@VUpVv>kXu3{SV=av-Ku(kd?r6T19Z2~Y4ckF7@d}2XQCQYPCK8;`LK5IN37?$l~ z!M4PT;hzdZeRXRA8DywWK_POHr6ztBjk5*6&3s}1`giQ(xDBe=Vjjg1SF9|BK9p|pd9w79P40j2XJzfX=1pJ*H@!H z%V&po@x%8FajPh%Umx~b;SYILv`^LY^e8$~Fsz~!fC4B*I#-GDHqY5;y6Z$sSU6S7+41gplhOuR$C4|1;$CqAlf=HL(Ix$u#9C~RxiyotF(&Z&Ou zUIzmqb9B`CG0p42$QXQ}eSCXWDUKn{^C|NDyKp^ZAif@b;kMt2s(KEyjO0_IKqetU zsr}1^mmkW~yc*J@nO>?YCZD~mv6(G6=XV*SMNYEZDJ=q7$=pqc4}4wHp=A885mO;& z2V<;B8yxV{10s|09r)|Bo>PJK>1qcZESy`h0#25jYe3kMfE1owKi~2G)gKj zkA3y25*-)mWBoLpv^@QZa^qS@*qqW-?WHCOUm-g-iPs}Ac$ErTQ-&0MtVp^~s7}Fa zl$;vaW&1MR=jv1=Oq{&y2fn29k$~Ci%j%MEBVc6GaK`Z`+t@hJsMxh1vqfwCGjL@Z zBzWd&z0w(F>^d1(z-k;$WEJ#Gq34Bi6ZJETMA>Ap;p1Ks?Cq z3XL&?V7!duAp8Y5Rq{{;!VW=M>$KH~P)9fT#UDp9IHQ^Pa1Sz(XSC75qcRW+H7WL? z{VtW20jB3t_~k$u{SFOYjp@4?-AjecOBJZN8I0$NmY2HWsP`o%aylL2(o$ndL*GqH zHqKjy!h@$wFA2$dTDA;J>$6<>&7Eq(qKiY9+I=ESDXT}RHrd<5M%G?*RJ}RfRL#<+ z+n8SCwh}Defs~*Qlr^7K1XJ*9j`WppYF0Y?-+A!lTdB1iq(QO7a?iO!{rE-c3l%Q2 zzHGS0FB7NWQ=>19N7@#bdq7w?t?^u+fIMEW!92CPMIo^^)?tmUBNx%V%>u+6K89$( z-s@H#o$sGn<$!KO+|_)mfBSf52iqM5&3I%3av`h!ON?wbN>prZeEL-{C7w;mP}+n ztLn|H3cT*ZB9Qltr1~8^{8v_v@>hl&{n;t?Zln~5BxThI)oH4*KsSKZK=Q5zOs><4 zWk1!1Q@`N{b>G)V)0C<$zXAn3Ma@=ek$u88ivt-nLz__(dQCu{h=DiG`L?gpBJeJz zD*vCx^PUQ=34q#`pM>6t;kj{}!6S$%UdVV=m%O!_jLCJTTFnEfOTS2)s&Y#@+~fv= z(Im`2J_*|%7lXWNEVAqc^T>KMKNhOC+6AYF$&aClw{>)2GI#5u ztywpi5xx=k(p3wF-sm)Z3kwIQX3l8R?lkanx_C{M#8(|#>uH+~Z)rFD8ll<8$!Q(3qd%p))9Nky^ zl20807ktHKX<6ISQ*|8@H3jo=*ioVZ?DFs%ZguqS8>JyTbO5dJ|A>s#OSh(cyQUaV zcJeE{ShrsNXj|}Mz5Pn`jf1?c*{Jr=q(=tqnwf2F8$&;K3a$8G_-c@Ejj_Zg^H)G0 zLx2)*Z3AVE)HRBP3GA%5!mHb|Gk(v|3N)$3>Vo5bF`?j`)zFO4H$pEtbTkR=wePkvGOLceh8eG?`wIV*BZm{Spv3>dF{SRL#3 zMU$aQOt+~o!R-<;KEE7wr04WXhuqR^i_1iIi@e6VZ6G$issV_ld+r16m2CT!PoUJ% zZ)`_WQd0Iqt>s2F*V$)rAgcjHK?Of4C2=av73qM2R2$o-xk<=j{-8nEx98m^h)*9t zKQCM0*3TZGiMi_l@^;y-dqjs5xRh5aNRBxbN1VXdx$uR@Q6>miWM3(#zwV13+`!~_ zP;zvv0`=W8p#QgGI#zf`0+|aAA+4pQ)p%1by8(o1bNpuDpO7H*dADdO9Rx;s(DTSk z2OR9v2U2hXKy$X=;{1&+0oG4KrhNY>_+s%%1G!t3~IV{RCh%7e_m~2`ufE>c6T@L%&*qb$9&?`J(g^9rE&yOjq0%~6}h?wt} zCqHqb|H`;Akx|_^pI+)c%Y}QerWo;5N%-cy_NGZNoHjuNap$o{k$PFoEcCeZ3N7%^ zIL))dSN_62I@P1wZt**#R=ItM=XDzuzsFId$m~*OsA`_`cEcPL?y)gYF6C#e{%*UM zG*)J+s@(7#)M}~a_C;=RuYEL$gR@I|G0wB;vlXecgoEJR8K&cRV2UfIlp-RPD^Hfy zUOFa-vYuU-B5q(%VdVd2{`8fOw;Z2bi>@xoXqgENLFsc%!$&*yx^Wt-~nmK|#_9LM8#P zd*W3RA6q}bwfM8*YzS1%4lVm1oAgd$bG=%)xiMGb->9|*d!{m4+HBIT5l1r0Br`9P zrd1~Fu0#-8~bt*W@$rfFF5{5Cq`hC{ZZ&y7-oyO0 z+R5Dem4k=uNFaEpZ>f<9 zP~Jr|LOq|sfzue&o7Kn$*c$K(x-izN*%U8U39!wu?6+wGM7?hHGZ2A8 zg|2+}IUYLdNoM{-a;ihNCIWY?CL;0hOfmDjH=A4vz!(CxhJ|isJh4yF%1`B*=lM@f z<7JFDQ*_2IG40oqE04X8I*sC?_No~e-#3~?%M1dlEQZD6JwJ$R#v2j{pqzF0i~axt z%nL9W-S}jqiD1ATQezWp=QxxGYbe{3({^IAiCXN=$kW8FAdgRuMuo#Dlim0kYfUIyB< zCwrJvPTMxCM({d51Oli{KM-)_@rp7YpfBmITk)?@|}SjA)LkO+r3bO7&xblt0~-emHHP$h__e zM{(P4q-nW7H$=eT9cbVzx_qbOZW*u3Jl?6}%^eHE00uE=QbW>M8jn-xg+)N9_2TvW zPmIeSMf<4V?5MsdQ%8yE`f*j&nux8l*WGuyjz5D+*__6p?_ASI%w>sBAr$oe*cjts zLRp#6mGJ9@2PbCz0Vq`E^R8hOqT=)7#u3L&E(2K(%x>_DAJ;~*>q61&I=8C*nE2%b zG0X!8?K08OPdNHf%mvbb{fEGq^;};t&XW_<5Sl+`iZ26q38dit7hI{(+l`f+0 z$HXk~&%=oatG)g{*G++X9!D}+rB7m9H*uGGP1ouV?o&JdB)j)09QS3>i|9a4popfI znEykjd9+ZSx7~cMkftxS>ESr`9hNuVB_3hk6F$2^JmNkoo1!NNLk6xFCyapBOG!u3 z4rbP_!jttnqXhFqP)NP!J_QqVzxvupynE11zm#xi;2VckgPGPgCVcHVV$+~o$F8?K z*N*Bk;MMVt!QOO6$|?{vd~ev-_#;x{*V7w=8D7OL>=}>oi!_3XFcz3bH-CXa@m$Bf zq#Dw>-&l0&E%n?C9{7J4=iI3_>n~fMb-4+ur2=jAjD@)z)>xme2d7=N;1cfki`JIg zBQV?=$~(W<%s-hv6EIx7$D-GavCkJ*E4jt+m^3DFCu;6xFyS0 zu|X~UP>#p#^CR-s44QW33|$LPLH9>MS|>Ont36Atea!ss+Q?<>6O`Yz09I<3^bS`w ztVKCrPYyRK%_r%P!k?92UtCrgwwHQwg)W$JiG3btxW@bRTu%LIe0p~bGYxKg3L&q- zPCZ`=gmsl+q`PRGS{Z7iM(i^ju+owE_%_f+E17nVI6m5*c{I+4kXx=^S&P{{I;uH8 zADYDahHmXfc$;N$JJL3}pCElcsN)Kyt@#q=bgtiD65)rR(r6F6zdhvuA!x^W`srTh z$`h&{FN~1qqg@8Swqy-{Bw2Nnxm|d61i8|$KJOl1Z2h_vFJM=9!5GB7#!l_His}fP zKs^<4wXUJyF+%0aRtlV(otiQ@x$aL#nKE=tUWcHF^f*8g`|<`LB?lOlLV6(J-^vVO zp}vdCGiYbE9s^9aEX70*bi^i|i>Ul18!MoC;hoYES54qK%d;08vW z3hkacX-@L+MGsbJja5r0e=M5RadoyO?$%Js!I{KnI9IHlgDP;N_CpzbD=O^A)&UXA zSHMU1E`8{%0=3X5xprPfrU00m98&V=hE@t~93R01A8@*p;gAb3wa2k&kqJYco?c3_ zmMA*yjC!OCy>mYb?pz=CiRY>RBo`k6b+!xx;%x~?YyAkj-yM~c<5oZ7!{PSrLD8?= zs909)fyM8ecWGMMcA7AkClp9E9$Llrlw+(vv7%KkW9$Gt3tsapMr~f(;Du1@Wmpu$ zwb(SyY>td)$3in!F1sRasb)^7r}c3t_K?E^0s?=xU!Px7zE{!HMM0V5{9<4m{phZ_ ze*2hR&C$zb)Ju@=S{z3U?7hTmBA;mCL;ZZ8w|%zBgYrJBKATcMuU@qkW`@-G!UUSN z;PLmtEQWH^(QnU`Wc2IIiM`{w2++=tpMm)h%UmEt`1ZatW9WM_tByJkD8HtV6?8Zf zD%R(uL`GRl?|*rAjU-G|tq?h+QhWRQILjySPIs|bTe1Jp&sS^VkED|ei0S?o!SqsA zx5XPRB(dswD4DnB0};8zseXgHAW$aPE_kU6mz6}TA{Ahf@3|q;^Z6W?+72;=eR68@ zH81Vn52Caf4yhzAV-cGxhuc|!M>SpP8rQaahRw$VHP8KB6DGN&cpMMwEX+q6MLrQS zn(Hr(`?r62eJT)4HbjuXW!f4#i}}TU_I@zwETx5N9#>eBuq|Vs!3jHkF!2HhF-bbP zWcx=PyoEL)%=8VU*U#MNjwh8gGnxM#K=A=`z+)_A}HPv6pZO&~; zpa!Q7RIj~`r;<3M&6^PDi*3GTjHnLU+JC*8eMW_o+2nF9Vt;bpHa*=v78yy#U<77C z?1msdJ^wxdM!0mUeI=MSlezJEx_gaXzjeC1dovLA`^Hdnb7%1;frrj_f^(e>x#TNP zo<6Jr*mTuf4-y_RD2iR2e%mtV-j7fBBiYVH71P>*lav@3Us0}qYC)`$T*VUHAq=gm z>3TI%XHi~uym616TW6I_&<(@kTU>@qn6oRN%eK<}pskrSAH&VVw~m_wcW&&j{P<>K z_4cF#9?xYM|1x=WtM*lUDcZ^2dB&;%)hl-DZp=WtHB;#{-mfbx^G|ee7EUxtmI=D4 zGA>`8a)h0S%o`Zt&NMjRj#GRSP!@(D)if|jLq|w$XS^@X{@LPrbniyjSass6O_OXA zJt2PA$FuM{5oJ*WTNM|$lE*mF`Q#y*nvuchvPpKtQTN;xiI=A;`~!i9XxnA~CFOC` z&1_O-?@0ga(;~z9&j-k2t28 zhYQQ@9`J1{4V}?=dzcqSm$!&V!*Q2vsdgw~m*+9zA4A={kEh)S_~g(WpI$GhlvU+v zU?C#hpEnKp>(_4`U}m)#DC~*~3P2g<2l}ssLd=M+!eg+O9H!DGrH`(*{P~^KD`HTz zyQ{IT7r{)F!D16BH+RHg0YSAcj)Mk2ilJ{R;e8i?Qct9*3>_4B=FgJHKjMt?MQ4zDiy_!zX|E(LaY%!lGWca)bG%BtkxH|vYOD=bj^ zDK3H4q0iugJ@<#TcOe(BCIXW(vqf3Qc{_MR;?Ea$06IT`*Gt{wJ3?0M*Ud;IxY zXVjzQg!)N}$qJ7*6;%b{WfodRZaWjUiyFr96v_;yzPTc_rMM&g<2obc=fnG?t#gQ| z(=%Fg-&OBb@0uA6?OEJd40FR>BGH#SJ;$G$<_*YfdyYkAy;_7kj?S*FKPGUVz{}jP zFLRKeBhv&|-#q`EmiGPn&PVsf#?yC@zeOUNzzZV5X8aT6xqQrGyj0b=6O~MR%0^>SIo^4&2yld8~?GSnxW@=cC&gS4TWC zT9mD78>xk7nmRU#vuo41JoTz0QI*YK_9RzaSEAfDR|zQm%4$a?DRTRidaCoY_J#7j z%oi>}mO?waBlRnhTO(Jm$;VOpy*>%v4^Yp*Np(`SF2AktAL^ATj#CGd z+1rghJAn^ztCPY^l-X5?SH(#ppO?UQM(%_!Jw=NAJ(nN5Ib9sjnRH~(%3isL7Eb@| zgU5Vlm;fg)Hb2 z>~D;z78wZG&f$s;qK2V<(~6$uoWQRVHudV0T*}P5G&`Z2>?xLf z(5v{Rc4?|4BJ+nAx?gY;VM5)j7NK3r+Vq0xF1n&KB5tCuHEZqf+l5IM{9ItTGxg4T zDaMMLc07U=2lE9+3r{WfcX26s$w%M00x5`?TluU;t3R!!B)JVd_(b&R-l*%(s~6FI zgQOmJd7F%6me=gT9V5NWASmW_ev{HGWs@;STaq?^&C%J#r8uj5n$fM(@sV0#{e`BU zmlI!!ZFSEhY_1|y+%;ub!ota!Nh(BW;HsOiBeEbv1YBNzNG^a8r%OaFM(axxNmh%F zVUo0oV(&_bHiKZdmaf#wE_ijPum#|dYNlcHsYLF zcU0`l-g?gd+_jS$P1m-ojl5#BJ9cQ&{fXXo_Gd#H*WAoP%dfF$oTslf zW!gL^zi|E<@eK{XeA9>eCa2k7uu0go>f_4%ED7)?HAYgG)dc?6 zmF~*XW9Ko5*2s{Fpr%vDWnAea)w3bz7!Hm^y(s~wjQS^T1{N&U?=^%p$*cX1Kagmc zeWRXT0^+7JDSr*)eQ^7*hLPT|$PX{@iZjYVJiu>@`3O=p4eCzZDI`UE{n%LH;#Jh& z|AeqQQ7q50X!wZ)y1hu_nx&mQkllP+?Xw}hnfK&tU*btu{>((ZIKU+n zUxpQNau8n{&ud9;>Wj~E6q5CkodbG^`}5z$2GAhC5)x|NjbU9G436GNmsh5IjfXZ~Wiy{T zgmCBYH!L88$Uf-u)1y6Xt5etWs3#tGXP2T)K6tJPdleRvKnh^YW3KhtJ}RON5PL|Ekb!*ys$ zG#-;U|2hSAum+D^)mfyKOSQ)GI`}Y(t2S8J&XMp(Yw#XB7eWx&p5?V0FGs#4^HMM}hR^=KnfzFVIjN#+5|7Cid&!I0`C+r(P-F z-!A9|C?uPmnf}?4^5||vZ6fL*9cl5)AY@M^6)?#me0~|+!-fK0*ckm9 ze%CcvEc&7P50+psz7kyWGYy6lYR9Ty?FbuNgRe@N&ItLIX}Xq7pBy}<&@-DNBQPaA zJxuhADDYYIPJSN@h+>g{Vv1Z75#=ajXfdm=YNRCY|H)vjC}VIvclLsHMDHYfz=6iCcm4NeBaHor!Gg>7 zY2;kB(e*l5Um~e?ufNtv49)Q(oIJV5lqW{;d=>8rq>6%3uFMt(f7Dj?_gFt?JQQSS zE>NEKaJMUK|@znIMb`UKyt>J+%%R3m>7-IyPa#LL9%R+tappvc<)^9jx& zb^#+w_vUTbX@X_k`+xTB@mbin6|cI)uLSUDymFK?d66FL|ArO`4czAvlHato}}g7Xl>?!W05`4sPtV5exy8(owgr7QxZ(4Li5KMJ~Y~W$ZCK$snTqrK7&kh>2Ts~PUgPxI5 zA&cPy5NKK{BVbA;sKL_WH45VHBFkHoOp6+{d@DzhBM1EePpv-qr;SK1@|x5A^%pJS z2B=57KXmBh7R&f1{7pLe{HA^XgH)U()Irl1njnq$#}?g!Kk9NpM7#v*D?^C2@!m#7zXh(vX9SMLFOB)@!3}K9h7D=J`l*%%)px?tEmKzGAqf5o#@YM zKf^#4HfX{YE?@~IBZ-VRTtFMwS~@Xw?p+M*Pw}w2$HIEP!GvHVZ5(6LtYEJlcKrqf zU=3F&Mcb8cz+ZprTGJZC0P)KvZn3u@QoC#~XJ_t5_=Uc-DvDR&M-HA=2Wldp5e(OS z^~Ww%3S*dfIi6P$&$*ADpE#7`yzUm6%5U3y_5-T=HmjcZH54;GzGrdBFPvK?F9G;D z_b_L7F>U1O+Gm@kWJij^UCB=|lDM??1Cc!4&_+~F@e#mhMM29_!L*V3rQ#5#6i14* zq0Dy}-=)W^<4M+k-nw@GE!HFJP_||kPR@&S9Xho`)^jisT1_jTDS{f+9ekns*zxvV z2W~M}j1t}F8@h428u2C*a46;9cpbo+_m0sT&GW-~rZjGNzla1DPM(pmcCfr)on zaIP~7`C40Dz#8&*ykY(n26td_87I#c50=54-uzUm>A-?M&)n{)HWdf5DhVM6qSZHcU?UhYtyo@>uk(Nd1hoBm{c$`Y_?L^&KJ zsi=dI?z@kA!BR19ECyw~KpkYzGMhe4j2@zfOYrZm3~X>!>s2ZU<#+zqQ6^Y%|LCeq z*WeI&eYhaCY+d1_xhmZ_R484(E}jxrG(8PB7fiNibK?+WR24@Rd|g z7eYDzhyd3&aJ--YBpY0TKW8P?ib91@sV_MDD!qWCNYIKqi3-niUd;Gz9paQp%`hKC zBF6ofwTD-$YkPbSwtyKcI`I->D<}ofL%npdC8VUL#yr=krNdj-Ng)@Ml9a4&X`wLf zNxAn{1%!|^JBAu4$huSgA|fJse*mYm$#ryebOVL~JB3h-KixYxp#NrMZ;uOM9;@Bf z`uejyL3(=i6XC=q$lpR>R2qyI+>6qS`@}$xc{gH}brbs=WP$;jbwqr@kLedL@ziFm z&9p=yAruI3%h<|;-W9HVoXDMeT(Zd^u3lsHQxN<6xxN!_Uf*`Fc0+bH;CtEwI&%3| z0+|P?a z0%9H8UBc{RC3|jit8;eDkrrv)dg{gXRzcLnV4qfAl2wYs0#l)NeD;U^WcGf4>!ujo zPSknaG*URHdY{Pd>cT?%JmZQF^oGLKE57F!{G3KzhGP8K8{4A`vFvI{ zqSww~7)Y&AY5m-vi;r4+6=ur(mN_Wt4vzkg{HD#?sQbS9^QSyrAMIRWP<8c9PRl%Vq}>@@z%lWHdG`7p?Lo7-)e68NqFf%#J5NBsH*?HsC?eId8ap08(&68~ zqvNQ%ztM|;Z7vlCO_QIrv(91Sl4CJV3-SJWvhONU*;0X|=0-}NAA1B+ zabOA9?g`b7E(Eolxp?g=Zs%ohR~q)upWTl4*2ln7?fUZ~(Q{k5DUZ2GYmeF7a0DM- z=c<0oyL*)g=9*2@B=39g!$~mg%*T? z%qlb=a(Sg3MVALQncKCBuF2L+H3Yw*mc@Lm8|)#Zg73DYc5ivOOeM<7=a%EZWbtfR zv>*NO=gpbbOmmWOZnj!I>tOe1c*4{#a_;*rKd&sUWnzOma&(ilpI!+TV! z{zWb({6hb7v!^11+$Dg+&xY4L0!)hjQO!8Eba+jx_h{Gm%F^1bvW zX8(#D?HZ7_41t<@rY3RlqclCwmc5A@sjgy;E5(uuz5aLOMTGmZ$6i1+xP_9ELky-R zU7TU=eY z4yciU-g5uDmSlx0wCgI_flBfl(=Hl)-&P`GySKD%er8YclMBs#L0x9L>1bU$I`DA=UuXcT5 z@{>&u(eWaY-n5awu(}rIJ+|NnBv3vmJXttXs9aO0bju6VL@B?D{oYUToa&Z#iQHmC zf&S?CD)kY2Bi>PY?gG@@Q5$h5{-oM}%!oe(mdwF1s6^Kwl0ZBUWG!8ch%5S&y-UL3 z0gJzZ3#(e%<3KyNh~vL^4nvujl~tJ)S-7-qCkhhsE#ygOFYld2dgV2%%HXb{jc zXw*1$1RQ%(EJ+3RSPp#c#YY5rriH@>9J_au+Ze=8k9U>6TXt$jrK_;&Ty4nGEWjTN zI=vN#J5r*eVz(SW+u9JQw)sJz-@t41H;Vt9xQ#sV;S-I`A7^kPCL7Z7I@9#c^G!~I zGS@RUU>b)-x*~2ll=jW~tR_FB9_+mu>nhhjuWEa7w9UFA`lTCysK-wW4CItD_$mWP zZm{!NkfWjL$tw^`&M+x0HT`gPvJ929gko7^!xi27ttO-7FQnF-ANkC?#o{6_50#ia z%2rp2ODS{cVRA9s?9J$(Ug%nzZV%$kihln-kaRzmJLZNOsV~eEQ{ArJ7~LiGsQp4@ z{xQ*gKU7se>tom9c+Sv=g#5`|kK=AYgH@NKq&yJ;H^ z&bOi`hKypN);2QujPblp_8?+xMyY3|&{k<52kZ}AI?m7*58)Y;a%7+lEP@Fs zxA$TelWh+pO}tCNV;UqK!8TPWE;Li5ThlN;*EaOAX~2Fm zugIEHT7x{HAu#$yZwBAvvDLP_?>T)0;)k48Czs5&TT|6_0*Zpw9inQv?gwB$uf^`x za1yjf+Y&t;zFk0$7b2>ojeEKK%39g3)lK>oj__2?Xw3Jm_4MuZ=v(t4&lPfSFE6yF zv>14OmJEQKLK`ferc6j8A5&bNz#O&U=dhfVvl!>5NA^~v<5d7$Ve+@4Wi zms6Izp3r1r&Pf+tzx<>4>@g;8Ls4$cy3+d_(<_Jp?eRK)`2cV3wDbk=aH1nJRZ;~H zUf4(I;Go+#h1PKxZt!Qk`HM@?hB+^|9ZkcuDBz)8!J=(Ol<~bj&$y$FK`gqphm6bU zC7*JPzlEUM)BaWW`5x=*l0l>|?-RAC1&w^R;gSp_Uweb9&SJoc7ElrJFiezr9~-nu zp~PE9-mtqW`pt+C|~cy^UpBZ*c zq=JUk&d7D8o|n46lGLdAzs4zVzxso&CyzhdJA!+ zj@4RL$UULq?NKg2kw9A0SMr4To9_O^S%Q<$k%fiT7_3+4KN+i8{05Lx=9$);x~KzHOwSP=~(Ns%A&PYmBPQ5)A=jyQTKra50W*i4`sWsUt2D%(;g> z`(Z$i#E>Fvs#mLS`Y@I}u0mtu5Yzd#rIT;fuM`z0%K<~HUx8N9FzEOsJK*9qvtP3%m6h!*`(`r zn?Rg^D;2By8Cr+M??&ibFGI$3YdSP?4HQW?$|D%Ml(ox_7>fG zE~U4$qovFswoAcJ36Vury@T|`TtwT=a@U-b9~GxhZldSUczebOK4%*_Xx0!a%&FO? z;4@sdow={SJfC>as*p}vMQ?Iif!_|zetwI+6;CISpynX?{>-^qXM~{8XkFp-9@cQj zZ2zR&oC?ZW1$mg6V13YeN1oGd>c*X&$l!+a&18w&LxYL~YiM;AQ2JML9V0xBmT+`; zb=G+LPX_5( zJoe8e+2>I61{F|po6KJana!SN3;;=PJ`28&1P>H$B(UXe9&RNg7I{Z$%YQ ztgrldwU?r(Wxqyj5$t)er4~pbO6IWCcY8a5=>m_3lE~dS|5C?Z8VroRmfZ7KBxybw z(YknwRm6Q#%8M#Joyvc&`uQ=Lw@|)h3-MT^D?R$xy%O+OKouHKEyiIt5yKK;+X|uF zUF>Cc;Vj_Ceu_Az5E_Bzw*f(Az#!VNx3GB?BN<2;@M*4tpgS+1bnP7a)`zB^&&~@> zN8GOd0;zKy@yQSSFMuR?vmvI5#=ub7J%K7Vv}%+Q>Y~(M$~Y8DlH2&oIN(eq%zct`ZG^70|PH1TD&$@0Mnp zHhE7D$0}ybp-@njEcF`vNrl_~#WHbB-P0=CPYT)G_upRk%^)C9Eiik|O{o!wTV}lG z0rFg=;B&-+5}1%$K&I9y7pS+9bfB=}erFxB59h$S)Ogmj!s17+d3+4>4-A2^sd^X#q&U2U7DiMKvIt)0_vkV_Cx)wb1~@^vuKI*U&k?xK?Q0JX+`2g|G64?{WE6#M8Ri1p6Xc z<;1Khy8~pEk9&q=IPp5IFk5HtRi1&P!RFOS_XshBy4egdb;9e=?&peMFqf8o*5b@Jo@k;QIdInq-3gLdT4%Zuzq4lNa2W z0n(AKuG{l3fa=%4Cl+yVo?f0*zb<>MaspcYUIQUxkGk;m3r=<5VgJnOM9uk)q$WN* zcD*gNQ0B6g^df%UiR8;p|_1udj zv1jMAY~?c*OF}OY$M6ZiN{bbr!s&uUol(@ zw68wzRJyLLcGqnnU48uk8xnHSl{wXW*{h|*<9pq zG`O)biI+L%?;&(-8PQ+82gOc1&-wSThfi0tbIp@qwf{Kocijfa(&kJKiVLYSkM;N^!~XYKvD#gTy1A?-!K#jx{eg>zrI=2 zD_RoYvxJ?T+Z1ToEKM4l@hHoWMU7LhcjF9pitDyI#uuZei`G`dRW$ujNuzc@u)i11 zivN))RTIRLPlBAOL_NG+ch_kBDnv`m>I90gb&`S+s%#9Zz-Unl7rMj^P+JK8Zu+2w zFnYv&pm}t}h1Al09UV(*Dh6ewTo$KL9}uFImq8?u@J?+HhY^9lVpz!F;>GJk%DptG z(r`Lg|1nzf}yfr_1Zcu#{O*95p0@sS^MA@d3v@hnr3Cyf0!oWqeKv86sUWYF?g-JP5x zu-kO1_a0&F-#EwDT(ggk6d7ZZ8R3JL`N4VG7q31m!dM;i^a_r3orFF)BvgbF9|eP4 zOm!H8{2LB^%olR|R4$vd)cgQZpg=|hCFM}5SD}WcUbF3;^x%352Kcg!+WcJ9S7Ht~ z0NZu9DCWd2f}Z0crEA5(RbkL7R^@i z?d*J!T(fgZ6990>j56`o4uoML)npS#45t_{u-UtyiD-oe(*c0|&VYaA1kY2a%$IT? zZ|XT*e#M$^-56~F7X?;*bl6w-95vW$&1sFEo0D<!)lco8Z4fU&RqMI3Sa0=4f8R%+H) zuGm?)bhO}TD|Tqt!vDk~&1F@#GE`ooP7ALOW~k)++?bKxH^%oAEhJ9Zsq6nu5|e6v z%gCYIiemT8Teg3+hEV3TMDh3yuk0d*PKnzLc{NFPHS}%GES;QqnDpjT+3p#0y(SS> z{boxG^5*oeG*KD{0rCnZPYpA8u86w$tJ#H*ck7&n?e+jO+rdm(ay`i>rWydFhkN`3 za*(nbGq9uM0tA90YxF7#0*O9195pfE8z)We{EdbFJL36&&RPGg)F3#pm3sV<^35B* zL2)d!038Gn#+=1JrK0n950oM6(J)l}*sTJD35pwBx<>e9{KOscqEbMc{5d%zZ87lm zEDX=7n@=ojo7!C!^)_VYn;dbnO>B*z%Uy|Ze_7-~$Qsor{;INnc9u+(wI1X?)=is| zoOf3WbFHR$Z+aYI(E4rpM}!GSns|NnBW@6shO9J(?o-7+1j{+8nRh+mG#o53GDDj_ zz2GV)5L*ARKOF6@{DX@P`0v@j@!x+#hR2-j&j0ngDA=E30YR`@?ras1esa)y=2GLS z2;1>?VJ~*)X$kqWbwXpkc`vKRaGpF_wLc8OZ8IW;v|$q4;Dr|pY*nm3Ck|bv%czs- zkt6OVYUIWJKU1*c$w6mN)f~a< zqkik1MKfdKEp9QPz+l452>OdJ*0XOkn-ny6hf&cf|XZ9jQMmPevD z`QsKu*u}DHnVKbMV8G4iC|Ws-RW1{jbmfzCIw}X}KypK(@D0JbOlv@RPTjNT4IB=W zPk<{n(Yhai6vw6-8*=%tkL-YVVYH7#@=Ydf}R1@`jMiR_|#A=Q%X@@c=D zXiCMd{ylf2$<{-cMbT{?yu*g>m%97q(T8D&5AhCr-tV3dUn{8_l{1kS$}8{NXFuJ$ z;%aUxdd(oI=fMfKu>Iqc!9zFNL=nNmld5hMR*|*f!@%Kz?R}RhhyKQg1G}!_@$awg zjJ}9xm|xp`QKa7FxfXh|%a-V=;r#kHg9$Q4v69H`6`@nTAM;J0R8Me_2`AZcZ=g=T zX8dG!Io?Del{}O|p1$FD%?zVnKIWAmPey{pg8Y=>&dQzw%>2BYoHs)k*absRBwn{? zJ^9P%2s&8=A6+RmrgEHoore`&a*0}aXew3{RW(nS*<+wshdiOI46HZt4V~A|{a!b4 zNe(@4>fRy%t(dL#pb@>m89%CUJARRH%>7#1yC$NlBCS&%Q@asA(4AIAB^q=h25B`M zU$?!b!7D%f;M;rCX-P>B(_~S65*Zp%c4wqabVW;NdF};n=WxexM|gF5@9~@Ot`oJR z9SS+$GgNjKDH=9UZycRk92NGdciBChwHb3Vr$c5&Fi;=AGWX&=zKSC%Ix)xKcG|QX zZ{y%~I-0h5I`!&(;Ex*)I{|AAqemVr)KD4Z+RdX9IiJrh#;{fS>foo5``woma9R@1 zy0iCI9%rr{TNDm>5&kBO!C)ew@J(W*__0)prgGlC3(dDpmiWk#OVN*Z5#yC8?m~bh6Tvp37fKHE_mTZ8mdrhF1 z2+7nNm~h6<&i}j}a~F;G!g!8d0cvQKZ>fKW09ni{4&u@6 zVXeOUU0{{{P2e+Q5JS&LyBt;F%;O>IFuFKB+cS4kyQPMsSft?bC`}bpJ}K$5TW<%n zvk+r$ub=@v)MldFaCyKL>sBvQrKkpRDU?&5OUZ>AE!N|iiQTLPmvb5B)CDCTmsAf8 zX(-$MY{X{K{DS$h;`*z}x^udx&yoRV#~94Fc$svCgk9z6|C>c@@IUBBiRL@K>CB&O zytY%uG$C*tdp7oAL5(!3?j7hvfhPkzB9lXpCs9PPFX)GPPk@kAmGVD&S}#j zl%zt8<}0hO2;70){U0L=*If30^{NU~_21CA*c!CQbTLK4pu_Qrn!C7I*ufDq6}wcG zLqj;grIF6}2ERf*Imbe4%NR(&PV8bWpNz(L%{IU6=DwlP7FCx ze(wz<$>ADxN68wX z@%?jdCr9xw1KkYXsfDw=U*8!jh9-GS{rW{pVluK({T_66>@D9hWgUjat0`@cwc0HF_38g}nSfPKCTG z@=U;vRz5$?|Bws;|6myldt1E?ckFL8#uDO?Nx^FKM zIj#=koGyD@SN-hOdlXzH{A6oyZM{zh^n0F4*s1(2vL$tz6sHhq{khR z6RbRAS(hpPkC?+n`{&d9Ew0tbMsrfdzrAi`HxB|hlX*9ok{I^AVlHU(==O8typ4z2%L|34qa}W26;!pWBNa(^LvCZma#pc2Fbh4%VrPP(hv#=! zN2FGwloZpyrvfH_1}1bqE1n3L3617ukpj(`W%U!7k#}9|E4g>Na`l@k_pI3{=uy{P znOX^&k2D!BcPClmwWuD*BT*=Eyl}9)psRAT05{m&i3Rd1-BZ0AfuuZCb?7+B zQ2TA&9lO6vjG!*+&6VC~q}QkN)i~qRm6-2Om1jjz;dSO!S95ULhe{|U8K^-Q$&%GL zzY_4u)sqQak6|EqAlF1=_|@JGOs|26xCoa0v$0z&ge zx?TP-`K+M$;V7hs`SU7RgR>J{+}NaEP?{1pKQOq&dXTGBr}b^ODp6c&y=R#bJ4$P9 z^q2&y6VjcOtbxrCpKKURL%-;F{dRQYdoI5tL8w}3YmY+X`E960mpZSbS(m-*W7+|| zQh>Man_7J>l{@h`XF22~{_(ychuPlMjD91(wwlb(`&bLTXSSDm{riP=SGU)B`m~uJEk-C$M(^_-A!lGSD9*@&oSruzE-86-b5Xwm!UL3*x@UQb-C?GXNxiR zqO}NKCsKUrM*Pl+XHXjLA1=VtW`At}DuYXI{ojXJ-jzKWsXy1A`8eBd7h!}7s$6|A z!}LNXp2y~#!UN3tAW`co7^c*j=gLmblgT`Vg}xg2-tMz`hlqs4@Y~(yxBJlf?&R(1 zC~C(x`F-Hr%zawpc9hMg)}?-y`sZiQcjezXTRfZg(D<`^1C@YO47adV>l0{g#t-wr zt$W8zuu;xFy0g|#$oQa^Jh4A>JOL&l&FwZP<{gXwY`3~JpkP|E1n zol3DpELCX)@LRSPdx?BR*{;JdTVi}0z3dsKF9tR;?{CVD-fu-=)u!OGx~QBp>IIBX z#m|pXOGsZ;RUA7~!u+X9sGH6VdwDIJ^d>Q;pH<3jo@=yj`0TuXZdue>V)TY8yQp`0 zwn5$a(Y`3%kd@Zp)ckswZJWiwm&v*9mg$(4iskB!nGBnaQ+a1%9_1Y6Gw7H>wO$^= ziWx=)&aRA%Q1`qXAX3LeA?i-g&H??DfUspL2H*R_pF4y3uI$-LWsS#*fl} z5=jP8Qd$T1Sw+gMJbUJ2xY+Rew4E@apig3!LK>CfY+7G}=UZAJ0U#b_U$?zlQmmNk zrbc{_&_g5~S-OxZexzBkKUfWmk8chPAX8##h{2c3k$YiweRtHAL^hhc_J2dzlqL=)O{kf>QUAS@9W)`ah?q-P zcY`mNbXkvM*;|ZV%u?s&*_Ej!&W+-=^fC|;*)yD@GEMlpoYOcG9;deB+C6QmT5A7} zI}xYG-KV)gq12f`CSI`1Oan_BR$twZO5l53VS_Bao^b`bQ$Ut~Ei~~(Qgt2iY=F5Z7 zak5%5nvv?b^v@#$NKB`pe&1cfSdK%hx9M;y7V_5@KR8nSePr^KFTRu)i#c%H_1a#j zwUK(&lYma{Hg}=C7Tn?Tut-q}H@#m6_MK;FSM)Z+S4cT6aMiiZU&vKiwyhJhX!>7C zZNHrwoYj@I&$m(DgmPT-fn#sE=QOe*O6J?-hbfbX%j?xAe*xA{?4 z)nH(++~Bqv&QGiyA6%O-C+JtqkR!Zwo+Yp; ztUgLUM8y3d^X9q=XlBRQT^GC$o{+P|tcwfGL_4YRRVspr~>`}fR|T3z%lpm{5nDeJrK@25uoJT~FV z`-?R&`;8@NAe_Mv>fAMaZG(;F(HmbU0!l?pT4+ldp$Gf;OF^~y_p$G_zfa57tZl6wSW}l7YC+CBK4n<73}yg4vZtkuLdMZ++Q3RXps3kva-xn2aB>; z*p&_dUDi})1co-@=ei>c^4Pp8i4V<6jaF_Dc5SBM&6rkA9>BQ2A7xGz+@d&kOGRsv zl?@GN_3LG;7keo_Tkjfuka=HCxdiPCd*9TB-!g6r)W5z=y#|zPc7bS_w3I4(E{m}G z?anN7sZH{SscpCSygy<^Z_}Rh)a-QAiG1-eMJ5=eqf~q8^?dzqgfr0N=;svK&f!;j zl?y9osw(bpe_avcc=GdlYm^Atod6FDo(j3+lx}C&>2ZA1sDe6RRrFlIT$(4FFZE6{4R)F&YdZ|Z$h9XS#zFfpA2qG$-FDMx!ZsTGsKTz1*~kZ0sTr@5ZS zUjbiszX4OQxh4rZ<}1Ro!d3fu3=@tq1N>9NC3P202Lpp^&B~vi(cC$wyAycD06#p{ z@wC+Az0wuOl~F&DW8WzA&#A_GiS89tVjZK;JIgI`@=Zr%vMmLleKSvWG#SiK6o_LF zJv=<5c5AoKpzO;YdfBB|APtgQ|b%3nK$Az zg{>Y61jnISa*8$J(a4==+cad{S{xW~v$aj8&$0nY^v$N~aJyRUx@s>AP9~sY0^=rx z;f97bY;z&oO4oEW=4^yfYs~ZbS+;z^8P(G3fz6ZtP^gr3+uxv*ixp&UYX`OCh(g&^ zT=^5~O9A1T5{uu{LTK*TX55r0pB&7$IRntWMHs4j%$CKs7aVGuHh4o{IR}5sT3I-d z+uRP~4Wi)46a^*M$2`-E1z6v+hc3xR^NRJ$t+Yu_67 z8RYZ>rOdR47a=1)KkJ+DRDme6oJz3he7aH=i~jqd0iKK`&kAkj_0y9>rbS*8D_-xR z9< zVc>qWw-!ktNU+L#s|Uq0?2+9Yq|xoa6TkDa!PYz)9sGGfe{pSh^dyCPU7L?A;q2DZ zE6_G->IY@7lY!&OAfDK$VT5Bj_2FI^=HTiXudgx&;FIP@%~50+u6l}2NU><- z5`(LjoNax7v9(yKC8fL5vIV=-Z^t@wsCEGp@+ImFxjJQaJInGFkgR;YKwxM zlDh0$f=Ag47ymo5sW)H$@}O@E(kBkKDLyG4Qfw}CzIxvxYaU1`g7S{}U7@=EZ$76D z`W7&&*1_mrx}lBHlPV_>vFiS0zEg4ezz`iufwcMqdXRvy%{<|-2cI^((*81pX^$Ee4 zT2|NIVxs|b%7&JfYzRaLMJ_deE2xM#45<@K5?bzjSoz^BPthK*tAvh7s0YAca>A@hE6W|>5&};YZPBS z$p09=d)^eN0Yst5jVWh~BNrUs*OY!9?%xvSR><$on&+S%)CWa>($2`esr7W~8{Mp? zg`t69*}&TjLtCf>{{*HV>?1iaUKR4%`DO`2SsPXkw^5$%P+^1#2y&q3Gln-ASQOVM zRMF--9J2Yzdl8%CQHWrQT8{>wnc(WmcX566n@Yy#$1y`E*LmV{%$Xrl%i}!MlLsR# zCWmqfKcXJxb)4uItm=4b)z>y9nhbx&e`>#WO(#S3BkvdE7VrIuyv+KjzC_ePf#MnL zPUwML#sJBLHp|3oAQbj6^eeAk7fM!;2#2&j&@6t}0a9Ns{xe?r_YimXp8fB5ukfljsNKLWrT=5D2t&UYqY-qD3q{wf<8#KMSO%aDc0U;`)A;Q2 z9!BTsfx6NsjY48bCPH>c487ux#IF;xs=fM4)=+u7J+|;dBG+t!bm~`=zI*~UofC>} ziUNrfHx~}4cKgkRw#n)7QEK#=rb>FdW#E+mbXj1!+xTXfqv&if)#+uV&94%4Uu%zi zS~6RkzH&lxdh5L{uyq%Lmcpw$ZbWC!oE)FscrYZVq+0R~NOT{));%RdUv z>sMU%w}qA}819kWmF22KDQJreIy@XYF&~Z`S2brxLADW;XDI8W&TP;=ObN6-2}_lS z(XLmnKl&_oQ@ng+ERZeg>c;AY;T|)dIFuEdB27s(aBa*jL-SprfiN$0)#LcTwYgTz z93xI!*vGsjGbr#??;A*n8n@I4OQiD~P>vx}*up1!aeVf5!tLVj>xxOF*^&~Ed(-i{ zCCpto^Gk3$CncuqfoAGlovB&stoX7NN=nqS&695@KC6jV0|m`Mm-7zEZym+jsRsGa zE=!K4lz%xE3!}bLC8-!;SJYcd%+$cU+Al!j>$|LS&xngHR7)-me6rE3$+-a@UE8AWqt%1kqEqd$u5uI!K59kx3!Zj=VC@?#wecCSVAG4qG{gK+Gdy|_T)24$dWe>}q5>30F3NH^i zUGR(%VIWf_PmpC$Jd0t_FsKAYHAIQ;t!bX(U(IN{G8{}wOaY2DX9tdt=d!W&I#jih zq=xyeixzCWV{JVSfJN(1SDXCz**n6vddZ?OO&oT7)Iz*KA(n6V`G2I(dy??;%q0`4 zwho#oVK}DRG0s9Rw$~lkMsDEcOkR|n_QhLFc$5}8i}nHa+g~bwNo+?h1hP>DQm?Hp zcNHlLZ<_znO&ypNXbhXXym<`0CCwE%>gAPgYdIBc`uFEqU{dc7H~C0&(fw-|j&FYh zsb(2v4j&tbsg$g4c1UYz>|s92IxzB-r)s|)pT&!qsx_@oi9~kLAdK;=V_W+CSWbjy zhq9#JGSJFDo2=W$98CqrFfW?)r>K<sm`ZngQgZ1{ZRqOzwhj*P zqH~|Db8`97T=9I7B1@5|(s&h@yc35fT_vaxb#1tqxvj0*S=hqlRHEWe>Tia6*B2Lk z3?~bHo^}JT)y`}mZffg2mkc+p$d4H+8HjG-#L9}HN{0;n!i4z2#8M73ePloASa*JL zU{H+;JLPx4e3;T!-4vGEDj-8CdJag;U&);&YpmI$Lh@|r~OcPprwFz>NQXnm=s#({KtKt(wo9X#))pf|a zxVKw*dsz5F+~b2ZyE8NiRZdilD-bdQ?fDE03I2Ka=+h@-fG6pJI)D$k;LnRv*BNZE zxpE2%`8W|_zapd)i7@ct$NLNRT43El1<3C_Ey0EHc!O4$K6?}T3ZXHVvVEn#&GU_* z64M9y`1T2&NjXYB4^HJw^(!5fZ1r`*@72FQIXyw2ZY3N45;vgnvhfysM+mLWXmukS zznZpQN8QL8c2FMQ6_sF;RM9Iz&@XYw%c@C6Q&j)}rjXv$8Q_{a3-21#L5J48gT+8u z^nAg?>dd>9po|=Sc&h{9-`Y6^X;J)DMEWoET3X*5qGGKH zVb~Cbkt7;DWUs4d{v-VyK-eq_D3R9?N12IA$#G%sqr5#{l%8&W$5rJ8)c@LiGTl!Pa&H1vd|~uMks$QKJ6c9b zlS4Yujnd|xC=345JkMIaE$aMc{-D6_4D9~l4_m{FPmp0f8Fy_j^MHhrT#%NoTsFe= zJaZ>I5z!kfaP)N%06CNumRs#AT)+wYK74t078jm3Cb6Lyu=^EdSHH;kWO&}-(5aiO z2(3O*x;5l4eDeD(U<~^#3~WR}DuY;Zo+^+Rd-nSEc|huB;sG%LY`~WU<^M$!y(%a; zc%=8g;fYq(^-4hnbbDK(gA8myT*;EEC6N84q@0@S1=jIDo%8$OaM zRJr#zylG7%hQ1YzweC;?IG-gSr`!`n>qG!mKJ_7p%9-k`g=Yil!=YD>n9vU)*IoPv z9pe9G^G5#Z^%-`Zg zf5_oV#&A8-hmuRCL3PB5)#2M!@`PB)#xr*-|CSU%-U9Hkd<}Tv5kz$4Zz(VUE=%xO zNt99Hwmj;@NEs&v7DDkEW)dZAc)$DPRot40Adl?_O@%w~=1gXo52^o%2i<*xEG#J- zvg|D(wpG`Fd_z?zr3tt9zg0WtH)m^D9B$R_6P~SfZZV2)$NnV1Wbmg|aToj5r45Gy zAX&oy2qgQLrdTwTG?Z_R0h=Go`ik`jSLUp?fghX<|Khrj&&<4=AN&{DUC-|517gCTW%1;!WVFOzf!lBbN@soaDd z5WM=nDUmh?5Lx+y1o4yUSzUf)wi8!_#S#llMvjknUdO||>@ew~JVa1eqyOKitMib` ze4N0UqpE|;=*8%`%D0%Fb4Z8Hc!yIrX4(Uq?5RMB%4hVe>qKJ#<>f!0CzeFvW4=Fe z-IyBo_;xm}6)lsZ^O_S#mMmqoFdh?#}o(zFqK?%%Kotu}w9m8!N%4sc`kJJ6NOYK3;m|ohm4sszvnYOziaO)#% zM<5` zU0wWVNHj=^{c~Gaj&HV-zhh_4N_mK1+t0~d8|wb=o(CE0pXUMab^5jnbhz7iv`l=> zwSn(>?E!`V?w)H%5xq*fh@#V6+!gLqj|ssMouk!8Jgn~Y0kg*SN?#VO7jCzuuW3k9 zmEGT87QXVbnjvJv<%iU}_V>J$Le3(@lT>&BS69er{9ONa^VqxA!qT#~kzsIJScl5h zXcCpT`bf8EU07FO?D=h}E@smVS~0YO{w1ECE69?*$Ppy>8AW*(m0eKw8vJ_Rfsd)7 zlijmrXcz&vjl?0`K6jVLtIP1JUn(sC6+^t)I`Ji3V+3C|j&!gCZa-sO`BhZumNj?R zKY095cZ7;zdg*OEG%b4GmO2m5q^ayU{U#S+_C#^~@%thuVB`55?{WkrN+sa6M6h2P zDKNZ7#U`_WDe4>Y(f?J)O0q?5MH45^4I#fT3p*TzZI4 z#}*vJX-=A@dU|zMYOnAUpeSDfijo0AQ4)4@ASlY9tL?uzARbi+*x3B;BENj{=a_)WSmmNzqa7)U{BwxD|#YMiwD|K2-Xs0IO(*J%^=9V1{F{<0y%1+E`aAx&; zb&owyuT@udcDoRY_=3Zwp)Atvx!(;*^Trmxhm;8F;hcVWZ2i7RCfC)LhlMCB~UE?t90(ohhVSjHcfGq@!)7m_$rSc0ar&BM#c zJ*u0Me1sL&kP}Cx@RSZN?fZ5$`MD3gX0{up{ztHu)8z;xQ*J=8&i_daJl+B2+6i}m zLy*OZ%E4c^B}_2p_vp9XE0-@f#_^v|H3bQ8Ev%_HAL`-gc12=u&DyrH)r zY6mQi@@>|7Nkx}yveHM~4@i=zG*NrfbJ!Ix*nD_3YIClYK=(&9p2qxd@A4QGZ$X%8 z2c@*Wr(RUhpf3|9z6z2G1$A`Of9;Fcs%=dCV&jMBmcwk_Z?Xvmn|nWTJ5$kkgaR=Ry)ECZ3Pb~_++p@uCf0-Q z{+YxvTATLsB5eUKJ9rm&m9)7s(nQq)b`B=;4U71jht1Dm9o=^g-nntWa zJ?>*aYo@AHb?6tT9xb~#+a$bAJ`$+k>Dr+@tN%*^J=MT-k;<;q%fsQIYkZE9|77>< zu-4)%T*!PH{0~-In70@ACl5}C-fdugnG89p*r!~PyFNJ?yngO=8NWd)$$N_?XZCPz zk-*^e{DCelU%WxQfq`IGs$~o!o6WzySbB0sSAE{vRevIoF~3L?c4pwq%|y*&u>Rn2 z3@dkU?)(pz0B`|o{@ye2KJhJSiNb~l)SG$3n;@F6c`~F0D|!KAFoaTA8x%Y?r4w*~ zBN(=#USV^QN!j+mMEc^6TaXg_S7*Cel3RQC)PI1Ob7W)Mv};1#&ibiSV8Q`EDjK&q z3BT@B$`^;7$N9$MTvJE8!dv^9qjz6^=fS7DvU8ba=4zMdm`1J@c2jVIC!mdWe$3^* zS~CiH2!_|StEBGibi1zuma8q)*a$o9kiezzrd3oNpM^x)n*0c3+iRo21-rehv{$;ULV zCkH%^GmJ!x>OrEXWz@3E;Z2qwQac-Wi0`wOXegw&l02rIiLsu}ZmCkDYkGH1B57yo zOhUMQdG^|{1E#q)Z9%-T8@E*nG(0g4SSjYM*6E!zr>Oupkn~F%YUR+Hs>3A%2V4tRX5`W9-Nro`qikv-~&5P=_pk0py zZj;0Fxa7`|Z(6~VxPb@bjAzI573bAlr>gk<24>4E6-RtJl`pp|B=p^1S)I026?g3( zy7~oeaDRdrJFRI+Slm80?mRxFb`=htbelTf-`UWRIk|X)fEUFJrA*#;V6z=>Anagx zXL0Dw6wBT!ue;~Pom#ga_7eOIqe*WM&Xprx?{1zPUhT_LBK-0wBJ`$6&r65(lRH+w zI>=w$lKs@jIzoH*E~XyC3$fkrLL@v>3cUOM=?Xjm)3l_h)oaPgy*u;rf~>2FW<>&{ z1KV8Jexby1W8Vcq!%bSnWtA>XlVXZ z^z0|L7=C}Etp~w3v^oqaT$mI~uEVh5K~vzbJ27DRHT~?d?&JHV0c`P%P)dVCNRAhB01*1$Z&Hj7B4cQ`bJipsErw2-pS!(D0T*99UTi} z>Eln@&rd&}=sVZ~qE;$6wq{jHo|^OEO1=>YuF!BwU7d^%2nhJS?8n>$CznX-W74@n zDk`eHT%%YX=3c4&v-9#BbTay9qXQZh_I|K2e6rmntc?S)71I$rj}SRPA&yNlPAH-5 zu&`^QI6K)$f`}Kj;ccuAOEt9)zMBD}R8*hsPmhFOY@VScS#P>mRau!GNMgWVSG(W8 zlKh&`9BX@pV4n0EZzYf=%*^fuE~wN`ZDJTs(_Oy-eaU+cAJw(vdgs53*c7SfJL1hW z2N*aX9&E`kb(hk?Ff}*XNBo@xi|f%U@AEH@@A1Z{Q~MbGG|)M#(^D*Tu6h>L{ZzbF zw87|mjAGXdovmG9spxfPWo13f!^?owIk4}W{KKl5mG16P%#21F)6P9J+y zuN$aQunwCc7Oz>Y$nDB&Zs^+T}ldZjV+l#oQTZsGa^r#>PDrMOnuG z(;W5Vp5Z+Gx~@zz(hb*xO%ybrC*kJZP1vrX6hcvq8ontH3F@=E?&mG3S6UJ{?Nf;E zzMj~Wjv`d zSjrwG*Hx9HWh)sXB_Q5{;yw;$D|tfuP~s=i+T15ZwH65U^EY~o9NSxJOYFDUXrJsg zBcy5fun75ZzE098hDakQ0K8{urn@nr#B+r^s*Lk_#q$Jlm?&t$BEf|yw~ zve;_zw|L0SY5-tWY_C9^e$ndtjZYEv^)Z=_-G(*Bk~~aN!7QlB1#9bkBt6Dth@M#< ztw5pHIhxNDM|@E4%^Pm8NydreE8_fAWe%8|qafu+!8AU{681D>Www_r)n=*Xo3NS& z*C#4*wa_Ok_Y+kWRGB_;K1h$0)x+ADs1*CgrsbpgQzm*WXism80W zrrjk^Kchx-I(e-AV9Elewj}GXMfwXHUve*K{XZv>jM|o99(jQgxn%@3?nx=Xo+nm&Q%`u!t0|bW^CSU(_uCQPzw6 zBK#f}k={e*n>@N5u{{87T^O%&qO@Mfu7O$LJR8W+MbPSL*%2vBm6;BeF5YSiS@!il zH}*R#<@K?Dg>Kex=0%rMt9)W3_SWjorr1mKe2YnpOFAPNjU`))liRL9CQBh5Nq5)F z+)DlthhZr5x^nwmgz7sB79mw@c**ErE>#eZ2eK!r%dZER)nO!Ov&4{PL9#@nQ6&I^CqUaPzaLaE^COb! zD!syY_vB`|nf8x6K$3MNG+yjHBrH15mHCvxZ)+H|&{5~gUsC&yVUJv}4%cDF_4Na? zVWrDhsv%)Iw5^2@{q^Nj~}*NKaq$Pw7&V_Yp3^D1FpWK&-85i zE$+|1_{T7j#vyo#>h83M#=Pn_U(eX2>~8Q_kQj8TajcM-f>#Dw&b!Z&LG&%*wP?qn zqto=uziw5)CUJFy5o>%xsBo@?%Im1+tJN3G@mN{3>l9fkCw-!yn%`OqNClhl*sb0U zzQKQ)a$}o>%f_8U^QzbZ7=l^MG>~$bk6Z&XmQV4Ui({qM+>dacktSk0ykOKI`zHUj z$wzinw_C_Zw)a ztK!7SiT?s=_0yM+lqsQ^W&6Ez?b9IrK{45sT(!$sMwDNtYx^HaxrL3A=}C|JYyWb`{Lln3YQ^mP`NPI_kb+5Isr!v_6(MeC&w;z zU*S_e=<8YfnRV*@a1MYW8MWNHsy@cF+xmo9CZFunhV%=xvN!ZrrJbki?toeQ<+^A= zy=}$PV3xJW%%|A>=|`GV?iw_D5XQtg{uG?zXH2>ss=XQfCwMmhAX5K4y+^H|J&zk6%0B}TLF+(bJ#K%s*tu&ZqtLz&JFgiCQ!$Yb@T%EAV0eY| zbLt>WjR@os@Sww!IU`TSClz(~6=whU7cVTs@x-7*{B6$a2>ighe%*N?0G(VyP_lmr z1|%7vLOt(EPYn%D{|3#w{?HG5b)Ak_o)qFD;&PqEbs9LG$%zN&HP znb;gzoeBNpPMAk>*-a7dV@ryKrAsU%!{|{;SNM3zrF+xIY1Z=(|HW-fh<T2VpZIEDzPCh!Jp+1yVvu4ps>^kt$;I>O5XD!P3kP(-RAI|6 znka`v_{A<{!3FfeY}$q}A&gLcLdggNyGn0=WWq8dU3%;C-6!xKE&mK-U}6|Xf+g_` ziHeyyZF=P0vx$-fYr|ecDAxM+g)~^o5c=1JUjIXz0uPo)NSo^giH{yT#7hjG6$&8% z1W+yyRuKB?<04U!l`Z#isEalp z*;R;^m5I1Z%YQ#cJ;E z^jMj1vqp23ny7GK`Ni$Vs9yHylNrJ7cjjFEnztt^EbsKDJo)ktzj=c zlpwN!#@0AwT9aW~IZGP5qo#GQKk ze~rM2@WTGm7a%&|pk~jQ0yyN)3pkU4mcNu}86JIxzT%1D(yy>f0Uz~Sxq6=d+CV_>QQLj4tqm}i$kF~KkRSTs!GkT?)->$yR4;6`Vu`4=!t|&q0Mw*C&x~(xY%X_BDZS!S zo&8*?Dm5I|^9Ls=ooad94r=W3pY%Yv37A)(z-Guz-H2~^w;qQG+s#f*&ps#D(oW!W z2;?XVkcn*swzZf|Pw+CI^}>y*8BfoP+Y(N+03i9(2{;?PtXe^A6U!vsq2bi0~% z!Uf|utL%%xxl-?bA4#OV_Z7~xh8kvNv@oGA^+Y-YbpGv zS3QO}M7m z`?}@aJPo;HvVI(8PsT$uoAo{-UmVKD)(-|#YicN^R<5K}XZjs(k#X;_o3zEa=i^2P zKamE}$OwRX+uwV-x3CWJeKpa5R}?9w!+jS_$+DNCE45~cuqb&^2-~8X(!#vv+u%%X zJla)ZdF@R}|LQI|Rb%>KR`SFAB7L=_WWEoO{>X0)p(v9Et2TPWa998*_aUT0+8>In zS3#fGda2>=t}N_ee?l9w^Q;`#9i6p->^;Yp*g};*p*>*cvYZu_Vbsw5C$wq#PK~m@ z1}c^BrW93K>8%Y!O*pni7OI&0vuofVi2rNXk{^^guLbrC{67+;tlE9( zCqrq>Wp=+bRTt{s%8)?8zC4immaIR$<#>-xMDD1AG9W7J!6+9~_t95<{X+o9VxIk6 zOoSr>0mmYQ3MlTV-#n3Pk7LKSoNbDj)u=il7IZnLl8aYe8YoPzAii-U(7f%HN38$_ zX-jiR!qo9HkTLzaF%EZG$)8t0yDH#(fUd%oDLy0aH)o7XDFo)cnYx!|Hz^>iadBPq z87cfuKKN@CvYOSg0K9sPn)2rktK&`=1l=h9V2@6Qrr%NCkGEX?_S2xJ2pl^{!XN6) zot~ljXpaVulL*_9{0L_@x>0V`uRQEm<}#WPDm*#3eU{;Vcuma{P5+6c$B9FbPV$V! z{0~kJ(;gf(zG8_Fl;q;+mIpZ9AP@SW8m0c}_daeCPUma*w2$52Y)tC3gg#?amq+`( zA#X4EL<;JQ+=USkLPhve9I)r@o?v$cQ5QykixH((AYYlBRya_x4o3_n8J6WOn4b~4t%E`oY=XY-`T z^u}amAN7Udok-8c!AWI~0h_0fvAU7bpxopcxPFpUKv$wC>8<7Bx>|;Mr6}1mS$?t6 zwhK&Ux4F$mB-iQMe@OUW_k6d~;P;cqa+wi<@XJ=-{PnYy13Ps|z`-i%b;J*38mv;Z zR?`tvJk6a*{Qc!==ezpu#!|PyW%TjKPf2Keh_H z^#FAJr7(x68|t<%c>o`Iwk7vN?`;9sb{3-n*Zp;h5xXUytHjJSGLeA?SymE=<&Q#^ zT62+U`CQotx}XQ3Br-P%+H&;#^Z|lz9|{@|FqT;S%3BR*T(}?0E%qs>(f0S!Wt-(* znTh)f3o0BYip1bQ{61Tvsg?+IK7VSm5gmh82cg@kt;~7^hY|j}&T$`{?(+Rrsq6{Y zYmP6szTGA@9m%5rF0w>|x*AYsv6IyeI^(5ciqz%?VL~OEOZ|3hb4v%#U6Bdn-jbWH zzs7KwnVGkZW%xxV4;PtV51Nvtj`|Qvf1u^;jH`Z^Fk%zAFP_m`a4PIoR$fkCWTyNU zW?&5mrv}-GC%7Zw9=&09X5dO5bWrhD%+Vk;zLwIk1L#hwS7C7i7=-e~k`kz?u$?>H zEO-o%AExy5jWIY$Gph&k4b}$A>W(@>3RS8{R;aAWSbrzx30bH3JxM5Axnn$FR(UtG zS^##Puch&9aLj%fX^%js#?MK)T2Q!PkgEa#qV3!r!yV1hO6jym(Eur|ZcW|q(Hv2V zaQc^H(e4~Ekw+LGnnE~amX`}x40|(}%5057nu3-|HDZKxaP+&>yys;WNcdO%iC6k? z*^{!=bGv!=x`fTO{m&oY5U}sFmm_%|K)Cb3d@@Tqg8s{J{8b|6#-wzYnE{4HP54k#WgOES^i8*&NSlCWxb~l0hTrw+LK#%ShRekf!NTF~LoLqK$u@{FbY<)Qd z$%nv0nQV7?fTQiDGeGK%-sM{_j7iKId&+*0+zmV=QGZ82;rAg`yEU(WsEYHcoxLj% z2$%cJgYCCwwEDLXrNi%jUZo#Tdq}R^5{eVB&=roc3)HJ*qn)B2JM55aIX>o4aA{dm zM37;32UBNvxd1>dp-d`@6OO7s0I`hm<-vD&%5o4bD}MlDkTI)JN*a(u#yompS>%YM z&i^1cF0@bl>lnv3c^a)cbev(NL=mvxys$Of?CUG#sPlC)%@Yqpzvm0L z-lKiPSwafGx3w=xG;|#OqP>;4WIw%-j$|A*_)2co0&Mg#_U|$_r9^RYUS5+_)(e3a zwzffbYtT)fNpM@Il264-P*bpJB+6~_BN(_hY%yF%eJcRbLV8CLq))4@3Gy55X$=#2BmIhHRbyoc+HKCf%!` zPD^cdW^H>;55-Gxx=mGzbB@8)ZInW8d2aO|EI{rV7i3;;pZLKQz1{k@i|smsoY!c(j65 z2hesB^zb z@Zh*4neJ`W1QAIp_765z5Ry-rZ`Fq&W+MW({>#TD0@|2bMOUwMd5pdj}$0Wh(7A`hpCN>@X%n$Zl)ANrY3&dC&O6jOPUJz6Xj*vSRIaM2%gIrv64S75sxBKg|+kGWjm+h_O0 zV0A&733yESkgu0%o+D!~E5=g%f82uO{&EZc#X0VVdc}#bz<3!1NyW!tR$Db!m}#!8wh=LLz0ODeEkDapvl{6j;p%?40W3R7PX-ET04iBN+tF6A6_2YZJ( zQJAxY05t+Y4<@Mw(ByqJST+VB5=?FoCSn5pm|)qFF@_?jC5T5GN;OPi1Q*QIJJyVc z6cwUzPE8m{!I0Q4ctZlJbE&Y!sy&3;UU}KtMGAh}?zYRisT|z=UP@ab1!T&jJy$H; z{y~^}bb*%2k+t`MV<0q+D0FmVHPH}28A`n5S5TsPru8v06#MH+u0E908QVX;A5m* zgRSzdh!yEeq&xM65$h2O+|Lz}IsEU42>$CYTAF}x^y`##kIi}w|MET3w{{p-(I|#} z>~}}x8&U62z-kWx>$$HZ4YFgJM1cz+VrB4yFqsw@i~VcD#B!A63yfxK#ctbKoOV_`iNw%+W6+ zjT0eRk}xZHM-hLy6aIxTT}2S4#}@s&fG}NAK2wy7hf;>3beS7*Ys6<2!3SU$u16$- zaniHhjUzWMuG$@R+=Jv(L9zNU*KS3@Nl+IoTyMS@FbD>f3;8#dx*a2##9wx!=!}cc zI0ogLGR7UB$CUnayVeMUfY(;uwhx}V^39Hm&AtwwKJ+bkLxho15#K^7hXqo^uWdFZ z0#BRwnow~O13c|=u-V1|pyQe*N=fB7M8N335WTlh#d5Af4{+5pBH+6>Jc~!(nk4?n zG6V0+7kKc)gnqS8|GHiHlNzzX#Pyj$kgjk+pbr4Xx9q*4{lwAr#~jnR_=r>6djK)V zbo^tE31{7aZ_ltKyg)A3*i3bJsLTC6VZ%=#yhll`F4`hM{kSp~dOi5P80y2))1Xo= zKH|_4|ACCB|GgJ!&L6dz`j>;?MVe`Rs3Yhg)E;0v_k9upP|Gx2cz6NOX6VYudWr1s ze`A(0el(!5GMsN`tfqCk&^(f;g8(1?d?f2zun z=G(12G+p?|{I(NzCBwx&+5TrB_x{>}gZKvJg3*)bF$Ca6s*iY)u0pqMbp2ha2O7NN zMUjKCkt~RjH2_faBkfbKi&J}c5Iv^c1*(b{5u+0iOsraFBo?o}V*ZW~&w?J$Q|sUL z>=esi-o_C77l8U*I8r0S`+y@7ntCjV^=|Vl9%5?v-s_wmqfqvY7_T!VrMs;5^9lcf;PDsGtuT_c&cZ+BxTjf-6i2gMdR zw3kHnToyojL&$beW&q;(nX;Qhp52O^wV+=6NG4t3M~1(5WF9)$_v7TbUrHf(_4yuE z3s8jOeQ5gR9fl#&jl|F4M}nDV0RsoYtD{X@8<)c#0>>}&x+XkJ93uD8(I9y4v5m)^h~!rwQ)^!w@d0HAL|0 zA^+_tz`x=0#|S+@NYxgh2b4t$4}4gxuTYfAI>Lq)V5K-#C_2=xVgLmNT&R+o%VN_= zruk`Myr6OM0O5eSD+F-AI_}4x?>=9O*!>6+Vn=;y_mv=?C5%qzTSqd5J9fiajf>;^ z^t1kkR!+sj`?Y&A{(=Is+wYN5*0sPsS-4%uO9gE3KlFfgB$$Jv$$9?xOn7%?u0cvR zngv$7UXbSUD_$@&=Z5EQC)W1%r3lhYephpC715zC*PKtHNAg{KDiYW%px^wL)o!7R zgf`1{{BAst(9oyIIC_2EZ1Z>fdUyL|6?PM73R!NPp@C854d_Q*#tr!mNL$u`6{wF6 z_U9R{GcC{O*muS9`ZB4!NmTmT)DqoOPtpu%#vGHw*C)ICrr}I#sFlv;+NVby2P+Gc zOWjqRGtD8C>8#C76Mqnr)JN>UmwI%N5j?MzuGo+8b$`~UKM!9r-ix>o!XiH|S~YFL zGm-3%<<^I6RDErgkQWq~soQKHitxgn{>Ytsv`hoB_h)|sIPWXO&6f`13CZwH;IuL2 z2Y+RCWV(VB0f^6=34#tqQ053+bQhjQCW0UR`(UEFY#3Gp_Fqr)Z1fK7qndL*qiM&^ zfZWNolXVJc+K|qcrV`j~42Ot{Nz&ZC+hP(o#w*C``1>gWh^UxMHV|Irw;*W_Sb30b2~DD-#2qY$TBitfgnA1UzT^N6RJyg!oQ_9|Q1``&>r+ z&FV0=@O={ad=j3+pECQa-;7plm;2GL#U0RGA>Hi2tXd3Nrg*j~%&7a4)h=NLG@j25FS$94buxwvV4oFyI0 z!&-HmMeR?_;29c1nS0)iXEIWtHjzNS$)9I%{$Twx23oZ?^YzYJRU}p87Z-t!?+!6dq_`UID!n4MJ zDCyYStO)Fi>xqp54mLKDO6xxHY%KVd&kF7=8LC{wAK4AqoS4|Sd@d#kxzHX;8U&xk z;`mf5FeQXM{>Y|SQQY0s(SdC_6TL#MO~CuHiOIgS$(qwHnybM)6NT^O=vgk#{ilyR zHxSbWt^NaOTMWXi8*)T-TK9E{-)H>=jSwNYR23)|B>z z0I@iKI3=IlA@&Lably4%>a4|A*dEt7p0hq>fMZDoB}iUc#0%Y1UA1YpT7hP%@#04{ z?cxgQSZdr}-E>pyB86-MX>5P0)&ndwn5L3Hx5|jd^IJ_(E4T7TYjus zVlix=4G6iDk#utWJCEKG&^<|Z`Fayio6l7@s)7zHd1rwsQq2!LYAD;Fxbt9d6u-#{ zY;YPuj_mKgBXgZ&oyhpiR~(?m)5C<*7v!iVUb~;ER`|T#0H+c>nr5WExcw@Uk#u@i z4JFgIFlF#F9om_Nj?wKxz}_Ug32UUtM7?q~ z%|sc=IqPfH>7FznqQjZ5l7LqJ)JK|f(x1_>leR0|TKYAp0*=3VR$an*Se3cVy@@*9 z!ZqC1PyAV-S6?@y$AF*$c$>$^v8!#4NGBDx{Q6jKPG1;0{5SB^+!Fvl>0L79XD=Sz zrWA5*7<-!z+M*J(Hyy0p{J5CNs9jHT5~{A57ic)*1atWG)H~7`y>AGsvfJ4cj;=Q3 z1n(Vsjr~n&-&e9LR9;d;MKera2&lpT1U<_ zCAhUYB;6YPc1YoW{f7YoIilgx+{%hbVzHv9dQC%3BBGnR^c%L?IQ0j#*RbI*vKRQT zQ;4PpK59wMTHBL-%O5CiMP~|31QE9gA9Wc2ZS^a}^Vn}t3jU% zBB>4zUerYK=FQf4)bm)cQv-t|RD%*aS(wLrlp-~;5>~R4H{+(r1_=v|2SayGFoJ3T z{&P#Eh%xQO=Zw{&3ay`ZrGx%oti!-ynAfa(Dr~4g?^2ODc3@F`*5)EY6=NuOlesvrzK}aeM~pc)Wca(Mc4sTp}2BqNna{&S{8RZ<;C~Vp0#~!e>obMFLzJj~uLA zpfMjXv)#YKR)oO*YsZX`UhfzU?cy6qa=?Z+R#&O?IWLkj#T1!DS>i4&2EgdbdGF*3 zZHIDEl<~WLNid(uwcL4yXt}yLy^+fN)c@jHjy`%jdqDC#1<^lEtRYaAzguo}H6-Ie zzT&nM2>8sWb5V~He|(np*wW-&M|ge0$(=}c z<#XB~o%PP|VHu0FI>PX~>X-nVZ7d5K-8!f zMNxM8#746Q$^JlmYWoravJA-nf0n`fNe#Ed1U$fXrMbya8-=;&gIaXw@O7OER@kp8 z2$XNEJVw^jL#8G&dD!Gx?=)@QPGmw2F~^u`%_Quhy;CM?z%(@Zz2SI|oDsV?*#}p= z(SIILFUCXP0;uzBJ02#;ZH?rV|wuu40nY3X{xfDvOsKvi0MdFt0cobDdjX z_Tk=DhOsREI7|WmnQQ8TBOChMNiP8i(7xXvd9y?-+e1yK@^kN z!n?$SIjr(q3mxRi&ki^E->}-%VIAzQc@`K675arR$NpSorqWzz>q}d}PVoOS-_1#0 zG##RLsi#!z>f8}qM#s^=(H|AazCp#}V_qEwus$LemwNwsw`{LXVG%-+_?P{ zZ{v(j9l1YK&^`!=rtOJ|4G#~SYf{d&gfaCBN(Fy>S5t$Xmu?%h{4$J1%M)|!sFd<@%)s-@$EKF|S&}#mEw(8|LLOa`=@|5>d}E@9#$7BYt1Ce; zff1zgLo(M`;eOZ_3D14C>lfs@SQ1i7XipbH8f6r;&ThCtl7bkLhKjm8o#!`aZvw?C zmVm~{9frLVlSq+j7CC&@=Zx~wn?sOJHj~Euoi3XWLYMl zE29!4Uck1=#K`H58&M2Mb>)0Qj&u*P=CGZ%8}PoHN{;4?cDB04kN;wPob_@(PAJ4A zkldB>MBifa*X|$59ID(89lp_%TdHvWEbU0m!FfYo-ELxihX1ywpTm}aA&Tl5V zn%;4t$X~DW>F{PPu&dP92N(k2lrgIoa!Ryi0cfbEs|YS{DZ zpe1a!#A*%Wrl6yVYO;D9+0y)IKhOC_^@ip?CHXbF-~b6MYIYG7vh3P1MlJ*l{fOwk z&qmdbWL9iKd&Xe)xnFSg!4Kx<8TuX5%i+vwsFR2GTVm22`^$$J5n%i*dF}DkeQD$ghKdYzJaXhnX|^Ii91nlitKUg{ykK3 z4*T0&ro&WSZ&~!3=T3aQy*2maPeH;{7z`-=!StBS8U&{*d!{J*566qouQ?w0*eY|| zT;OKZto_8up_zsFW^?`(OxSXZ_^&#)VHgyo~JSQ}5S+jZUCi3U>DH z5<69JCz-M%R# z{hlYxax4QpSLT;BNQCpU|Fav7474#85c2px3=bey<;}|d-2kXjZHg4DT z1=3q6r}!lmU$p|?cd3~v1vUj_)xzE$pe+1CVp2%3ePN=^R?4o4bL~QNG_?an&@zGSyH?CW(YWCj=%fD!9Xf|9+$fxON_84#V$VZ8aPWK08`oFX9!EEmCT zw)RthKESUOOLG&`e!QL6 zcY$e-Xu()4%0PbVZwQm-5{~IN6lId&>U&BL?FQ6Y-1Jk(nAP)8KhVlGALQ0QO|^N* z+mv(GWZMSB8s&TkS1(D;odMw-<7P)dm9-vHa5-ZQm=5^^7bE$FUs6lFAbFmC2czt$ z9|7G-28tshwmSZX1rVQpCk{K}pF-s3{aeTzjaeP7M_3fWn-ZhF8SC87Dk7(B&`NpKJZ) zC($-IwUnD5&E^_9tn9H;ti8A{7A??uf5elBLbKkhzQt89R}Un}b1M6%+bZ5`-1HWQAj*2R1e-D`Iy~ja$67RyHP+ zmxSKz2rO*~i0__WGC0|1s6gTSety?2>ul%P_QW-ntgHGPo)^NPTwkcx=sewsn$Gt- zSo`dUFL{EU)HhhV%UPkbd$3{tH%*txS-2Z0c4taoBG24vH_j{kepkOx&R#rmy>%{} z)^v{heQn1}E$A|i>evK^VVE);reQ*+%a|DbAQ7qEkak%g!?34c$;Jgowe-SAcDL<% z(#PKt*hMIXtgxzW)`CU~(`N_c)vnP!x$$s+100{~-#mf9R4A#5M0L`h9XG z6Rf0}JC;${Q*S+d-@w+~-Tib}0s+>=xveMJji;t5<}ylR?^|o?y>m5&nE?ZET2F0P zf=zl{r)OS*ZX*6+Ri^+dPRl=70KWtk&i7a2`JC{egb?%M>%S)KT9K3FxX9e}B-#UU zFMBYIkH_^l)x3Af#PPC@&G+#2rGamRS*qt($? z@w3(RqH_zjo3`u9$7}i?jHHB@LJeB*WpZ7I11XL8wt@>+y$HG@MsQC zMe08e)H!guxIrp5e9fclYr)>>V}!Pg+qb-r7U3L!lR!9vJ*d)Fp9GpjId|t8%pAfB zHQfT5KH;#DJe3OC6l=VqH!qW9Z61|X{R5{tl_GJ4`?ZHJZh~f8YJ_y`-POv&&1srG z^S&#hqN4h=16;yynm$?+TN<9*8I2GQ#tR-#kB;KT@fApdlY5ZX$v4))p?n@;)-TN5X_X=osP zUsV|!F(Q4Hp39Es@l2SPu{{zdEgFJ|acO+9IhwRtUX#z{e1X^(5_F#P#!THP-65)V zJGz1OR~=i^TOockA9bP4tOkXhuI-GxGhLWRef}j&~P-kNRVN-akPLLCYfIYgJ)9(n1R@rh5DLdDP^=Do>U1hOq~TL<+nS;*;*$pRr=Ys>#UexWC%r1NBTE6($BjMrbsw4 z6ezyP5OD^N{u@QUEkS_yKQQETxZjr0%EkqN&xy80b=Iq7PG@$O@8=cDl`M4cMQ)=X ztf)FL))5?#;CuSSpsik^HBCy1R^IyQtL?IKS6Lhf~AEr$x;qpL$&#u(-wprgb2wJpT&T#8+9|npg*!rzz5+ z*IS~9*G7uo&oUhLiO)3neQD)ZE92mC*v5h`55wYMx;$E?v#`TF=&ShXGmWf?kx@wLQDGS^ za4lU;GBHy3Y=yZ{_cxjQm>(=l*(Q^;>dT}*@V!KTWwoJxiu5SM>7QXq1UQ1cv~aFb z8%~OB493-kC+uWSIv^Kq(ohDT(qXLOheavv^D~WYY;s%szvP=~-mJ$q&AwLDsCbq3 zR4AN&3mY^p!~Xv3W59% z+Z-ddt5mawV^3{@p9G5e2LDif4C4P4`>VW?(TTG6onjIiVeG?@v9wmc&+6LCSYXtD z&B5ADPt^r6R4uYXJ36uxZ^HVOW8bK(T7Je2ws_hnt${$B+g#(uf0_QGWbrGi@i>iqkI1|g#7=kDiJ=! zv;&eL|D(htiG?T+0g3?;W&#-^6efUA4CIxy2PGg}Qjtk?#$TwWnTNw7dq7=@X0xS5 z4p{Tc){EY`^@yM-(j(2O)r$M#<>kd{)h>?IGk5)2FzFt>Cjl1{R(6qU$K5MpKEX}# zF1~Y$UcAaA?8m>!sj=H<@G*LCj`L|RZRUcW(abI|>*{}l<&Ehm^K5*bv`S+$Ig`rC zUH%R-=E(`PT!Su@8^ZWpT(n#M>wN)H8KG+F*b2}v?OBV$k&b5ZsJK)1JcOKk*sz9Z zU!3vu=(o4RXH=_p{|I9iyOZnf39}&pR&I3yF<6P3*td$rB_yP5_Tr@3_S4np>N+#J zZblEdS?Cp6D18ogJ%C0+vUumyN@p~$)Tf?C&esPbFESKyrj=SxJUv-ldtc;Nwng0Y zdqOcvZ9LH4)5N5%`WJ}~+uA@*Vj|m`y!k4{$=8dT8)sg5$wi|3)an!4$5NN#d6~ta^SD12|E1O~_S8k1AcEoSscjI%M>G ztlqyrCX~ZS8*6{%-kS=GL$cHkRd3WotK>)XR+x^*uYw&mr|^!>M@RwDJ+&MZGgQ8T z`CVbhM{1-mFMZGbGlAaz8gTjD?ce3<9`coDX(VXqu9#U;{I7`nH+7owi8E@x{Uq*A zG~+z{z+^mN{=s~Y3azYmoayad7O}~erllK z8)PEebFwp0c??kOh}>hV7fu1W8#>TKQ3M$6ug7lT7O&b#x| zb58;5&gWw%$HA7nU}ZnE7>V66aV?1f{NS&O<(B~A;a!5;Yi~s8Xb_5St;KjR65;QZ z_-7m40XRSZp|(f={`K>bPCkotj5=~`pVtytnJOqKytu1?3bZ{g@*OUaHTWOwy>(QT zUE41Th?3GJ9ZE_`H`3CAf;57Jba$zgq^NX*ln9742&jl4jS5JYgwow`u3LTH_ubz) zW1O+i-sk*tzA>JE7Azmuy62qNyy6#@oS^7*mar!uM`meVhGsG<2Lf8D>&`B?pf_cV z`{1W3NW+Q}B(sT1z&%)y_ykK%7U>G&|I-!xpDxyk2+)JEL>K3-pf}diKfs)IP2v7U zUp`u(-f&qSO`qP>CTLJbvON6}xB}oN;d7V0F8zUuio^3y2Ez&`g0O7=ewuJSAF-3ub2x__Peq z6h+NF7uzpjoNs*J8F=>0s35);z+;Gy$8%(`s;n#pMwf%JgI(Xek-=)2N7V5aAf%4O znPQyOp*Px7M3q||1^I(TnsCPf3`@l_Eu+4>0L0=BsL!TH!eF&0k32UTIIgQn8#C4m z$Y51mpZ7}=gy9$wzMel~m`(u7kRHuXhp^ESm}6K7!+Cfe`t87Kk4hX5E)kh3cG7fq zkf=*n<|@EX08@EmnbyC+t0(9r2w+24i>r_khQ38gxS=_$utM_AF1+ywiYS>LSCJP! zY((}C8TQKnW5kxfs}upqBXzNeBZQ0@#t~aUqOH@R&tBxSf{pMFg3Cps^#U6*FfFN~}M^h=o!A6*2qbzY(+W zto|t7{ohfE{-Un_8!`Leh}r)}%>FlG_P-Ic{|maA|Gz`b(xVoz5D*bXfD%~?0FglV zhv^5CakJ9~k;7!uBVjJ*bwJ=iWyCS_DcV+W7c}^4UFLkAi$7&ndkDOK1+NnT*Mj~q zQHHqpL)A-sGsS5cPM)r=KBcNbfC8Ss1ewFdK14jE9}(xJja^56noN(ngHQpQ6{7ll z5U^Ws4Br4k&mKSI5gmm@V)RpN#efR@pmBuf+8^_AfWN9EDH3oi^KcG{e^`?wchv`8#`llbP(k9J zWnG#dDFF&3Ry}F58Dn)%K%-=QcltvNi_>3a%H!n&4e7gO4?Qk|rFg^4z`_i4ZM8iW zEkJ((2!Ip*00IPlQ4~5ZQudSmZ=s1QNfTgVW6KO<4`}{wUGCq$$qG}{OmXjs`4Z8o z{@gaCbB^d}K3`p}1!ohq`K!-)ap^|r;u|^Io2hX7Bqd2T^FWq~msuqP_h8H4{%y1A zw3ceJD9$Cm{4h{dBmn~+ct$OUJE_jVkOWRx%iG~or6=zsnHO6WW2O^J8~>vH)Nke+ zsv4mO|ADQpXR@9{L_G6>zQgqeVf9HFi+gJye{8K<3S?BLCimOPV}bVXx4gobT#z+x zn-QaTha?omE#C140-!eYx{Lyhw>Hp$``;i`QH~BO5$ga;eW9MtE<^u;iM6!Wd6to% zpJZ=UA}G}W`|^#a-|dzG0!lD6KnmdH2*FFdtM=<+FWfwz*;1AQ%KUA>2_3uF849pe zrAV+m{)x$c0r{2UD1COyl#p?Z`fXcnM z7tXmIRde>gwD@Z6I$mKV<>z~JV{7Z}@Yl;iEmwB`%KTm9V@cfiQQntWlgHwZte5e0|5>>V;=q`!*>;B|6P_j_LPG1YCiYjO^Ceh!f+7BfC4ArG)W zAFa_hhWCT2qlgvbf|!tM>Z#;jwGcw@`7ce_k-t4yc*{f4y(mtoraqG0UnL%eRg1Kr z8RHg&f8EAxze<`4``-MS;9i71WV+>QX-9EEqFBei3%sjzbq@p2ysw^9&0xFu)I$9c zZma7s^}3Yj8UwwlB*5rc8@Q1(TNSWROCwszD|ln2zk*IZO*Hbsi9fH;vZL4O@%d2P zUys-)y*p2IF-lv2yzD&v!Q#MuH7x_EgXARbnL}5b{z5c|@9Pz1)Vrbb#b4K6UR#mhZ zod}5N%5gtL6Of3m!g@mIYehrRI#9L2^8U*Eab+z1F-l5SB32?pmB^~raVmacHe=R| zoK^|zAk+I!whz!k638$$$I^cst@lkaE+ZF5-gS^DBb9L?9L=gkm1b^c{k% zaCM3DoV zvT`k=SeHq&Il%s2Z_4?jy)*U(2HhepLgI6ZpE*PJcixqS{W#m2?~b;)EvY!y>#tes zbp4eHUDO6~{^u$ZkI&d;wwRL~AJP{$W*?V~ zdMfvqEUFqd8`~cT%u@%5`Cs^I)$=G(*O=dCDh%30Ep2TErFVZB%cPCIv}a-aRyu8P z={&X$VHSTTYZ>(onr0S$ui zVNI}72BQvy%_oeT;i)x0e9XoMr*12yi^eBR#JpU$aCqWe8qaA&WTBi`S-c|TaLUq< z3&;1)DTmAO_&CiB&8$P;oKc3W>!VSa1m=89Rlc0P8t%7;cQZ(wrSx(2Y)(n-zL0PA zRUNUunn}~(5W0lcUx}?-Jook~4pz|PURBu~bbuz(ZivI<{)vfS-E~33=&V74RF_!p z{DH(3^cRsx+w#A5Q_+T)BS5MyN*s+M@1~0NyZL2v?`I;2l6H&#L8>Su1Yn_&nDO94 zBc4&T1YVYV@L~Kxs`TeMzFo7#dlFR}N zhA4i;w-apT6cnRmbNW*Wga zol+ek1w~8OT}ttLmpwvO6{o&W!><{KNGUs38!t@lZ+uliTcl%FZ5i2l|Gn1XlFN^F zOCrT|lzO}2r-hV}*7fQuDO&r!ppX2mXo&jauYnJJ4CmDJ4REjBMmgDfcqNI?k&s!9 zg7f^(83JGRbV1^sUjqu~*EToPtldT{YNXIYFFqenaR;prF+v`8f`BSpQ@MBaCkN4~ z)$Lrp(Nu?bp9D&I8?!vzqx+7dMk(}UA-HxVu-!M#uf5t`DN{22xVdy`=eSNP=iXy8 z=A-Thzpi9qqq>!hL_4p&m%VBtY7)Sg8{sIS=j5~V>mg`BWvh+GY>v|9kTzI_~~MAC0vB2{tp%aAv-ez z+1U{S$1Zc%PP#n2UGGO-855>v_%vq6Sj#1J)*ROh?yEmp;Vm(Y-Tu_S`OqKhGXGqC zf_sdp7KA+V$FC}CO}{Fycg26U!#Ms`BMst(c@w?spb2pW(qYC1ew>>X>c{M&hn79Z zcQex)c1_z~^Ck)TQiA=IL#4vA`4S7OpSfW&JL%CEF)*`t0IJ?!DQ_@r?=}7_Z_~vP z&DwRB$SASGqLZkFJN@<0>vL{vlBbwbZY0wf9-z|yf|>UlR@N-#TQfa^x10X2$RB#z zO_G7xtiXMH-u7Fll`)SO-;OmJC^n*q94a_tWwl|be*&$`a@)2GFvL@kQsbYr-xv@A zNn`=RQUk8uB^P?P1!jNU#R84YY?~b)1sTAyDz-b|;!s#!ekC*v2#L`Td!&Mzy0kcwlu+k<1b@0eAAPum#IgGx!kbKQj8eFG$S8-Y1~x;f5vXS@P%Yb z6m@%uGd0J%LV-8`UdMAR5I74}r#H+~mRH5~n`9e)-f|0d8{qnV<=Xhel{(Z{A_E`x zN^U6_HK(*cXUh#Ju0`+bHmGi?u;QiW+=0GJW(=MM0*HGlK$V9gC>y$6zIwJIR1yb>xTs5FsHuW$PkdxEvFFw|+Pop7;!;f$ zKgXuctf7fw50|I4QD+$&rNDa2)b*1nJFr!^eKT8m7sERJj^_`jz;8uc@~U{Ba zOOGGD^_F^S<^X|FrNEK?IC70Z%>qiM(Dc#Sn1!ETo6k8ouWS&!u$EFKCSDN2;kl@_Wj$C4?ztiy# zM^?i=92K%&SEbjrH;y6XS%wNfMa9>%D4plD zttpmIJAL{N18tW~Ix@YfaGWAX+jai|jZ(_CEXD%ha%Sc_6M-i}3U(l7E2kXuj>Glm zm=raF&fXbYf2qBmHvQFIW_PnAGOLac5ylh|WM^0QuoaX?mPEAqjb#soY+Ee|yG7xo znOzQQa-Lm9{}Mw6dfYMj@DK+cqb;J(@OzJ_zA~&+k6|~i zjS9gc#54~!g5J}Au8BHBD2Lpzfd7l|9)a0acH;_<2IUtu+;c`U94oU8j`B{8f?f%h}Y?dUopy)l3hSzs?yv02d zFskNZnIW~O=$~j+9z$S)W6%o{n<9KHxvI%pE+>NaVjZrbvp@r8UEzV}&F@MJ*1s{y zQfi@LVPR>$z$^UbxE&wY2&_4o#MP6&l1@+Sp

    vGqv{yyq074_-(c5&S7j1X5tTD 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 literal 0 HcmV?d00001 diff --git a/filebeat/docs/modules/salesforce.asciidoc b/filebeat/docs/modules/salesforce.asciidoc index b81def57bef..8e431e8d97e 100644 --- a/filebeat/docs/modules/salesforce.asciidoc +++ b/filebeat/docs/modules/salesforce.asciidoc @@ -12,314 +12,577 @@ This file is generated! See scripts/docs_collector.py == Salesforce module -This is a module for Salesforce logs. -It collects the logs using the following two different types of inputs: +include::{libbeat-dir}/shared/integration-link.asciidoc[] -- `httpjson` input: collects historical data from Salesforce REST API. -- `cometd` input: collects real-time data from Salesforce Streaming API. +[NOTE] -It includes the following filesets for receiving logs: +The Salesforce module has been completely revamped to use a new dedicated Salesforce input for event collection, replacing the previous HTTPJSON input method. This change brings improved performance and reliability. However, please be aware that this update introduces a breaking change. We believe this is the right time to make this necessary improvement as the previous module was in beta. -- `login-rest` fileset: supports Salesforce Login logs received from the REST API. -- `login-stream` fileset: supports Salesforce Login logs received from the Streaming API. -- `logout-rest` fileset: supports Salesforce Logout logs received from the REST API. -- `logout-stream` fileset: supports Salesforce Logout logs received from the Streaming API. -- `apex-rest` fileset: supports Salesforce Apex logs received from the REST API. -- `setupaudittrail-rest` fileset: supports logs generated when admins make in your org’s Setup area. +The Salesforce module collects logs from a Salesforce instance using the Salesforce REST API. It supports real-time and historical data collection for various log types including Login, Logout, APEX, and Setup Audit Trail. -Note: We can leverage the inputs provided above to collect the rest of the events from the Salesforce REST or Streaming API. +The Salesforce module contains the following filesets for collecting different types of logs: -include::../include/what-happens.asciidoc[] +- The `login` fileset collects Login events from the EventLogFile or Objects (real-time). +- The `logout` fileset collects Logout events from the EventLogFile or Objects (real-time). +- The `apex` fileset collects APEX execution logs from the EventLogFile. +- The `setupaudittrail` fileset collects Audit Trails events generated when admins make configuration changes in the org's Setup area from the Objects (real-time). + +[options="header"] +|=== +| Fileset | EventLogFile | Objects (real-time) + +|login +|yes +|yes + +|logout +|yes +|yes + +|apex +|yes +|no + +|setupaudittrail +|no +|yes +|=== + + +[IMPORTANT] +==== +The default interval for collecting logs (`var.real_time_interval` or `var.elf_interval`) is 5m/1h. Exercise caution when reducing this interval, as it directly impacts the Salesforce API rate limit of ~1000 calls per hour. Exceeding the limit will result in errors from the Salesforce API. Refer to the https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm[Salesforce API Rate Limit] documentation for more details. +==== + +== Set up the OAuth App in the Salesforce + +In order to use this integration, users need to create a new Salesforce Application using OAuth. Follow the steps below to create a connected application in Salesforce: + +1. Login to https://login.salesforce.com/[Salesforce] with the same user credentials that the user wants to collect data with. +2. Click on Setup on the top right menu bar. On the Setup page, search for `App Manager` in the `Search Setup` search box at the top of the page, then select `App Manager`. +3. Click _New Connected App_. +4. Provide a name for the connected application. This will be displayed in the App Manager and on its App Launcher tile. +5. Enter the API name. The default is a version of the name without spaces. Only letters, numbers, and underscores are allowed. If the original app name contains any other characters, edit the default name. +6. Enter the contact email for Salesforce. +7. Under the API (Enable OAuth Settings) section of the page, select _Enable OAuth Settings_. +8. In the Callback URL, enter the Instance URL (Please refer to `Salesforce Instance URL`). +9. Select the following OAuth scopes to apply to the connected app: +- Manage user data via APIs (api). +- Perform requests at any time (refresh_token, offline_access). +- (Optional) In case of data collection, if any permission issues arise, add the Full access (full) scope. +10. Select _Require Secret for the Web Server Flow_ to require the app's client secret in exchange for an access token. +11. Select _Require Secret for Refresh Token Flow_ to require the app's client secret in the authorization request of a refresh token and hybrid refresh token flow. +12. Click Save. It may take approximately 10 minutes for the changes to take effect. +13. Click Continue and then under API details, click Manage Consumer Details. Verify the user account using the Verification Code. +14. Copy `Consumer Key` and `Consumer Secret` from the Consumer Details section, which should be populated as values for Client ID and Client Secret respectively in the configuration. + +For more details on how to create a Connected App, refer to the Salesforce documentation https://help.salesforce.com/apex/HTViewHelpDoc?id=connected_app_create.htm[here]. + +[NOTE] + +==== + +*Enabling real-time events* + +To get started with https://developer.salesforce.com/blogs/2020/05/introduction-to-real-time-event-monitoring[real-time] events, head to setup and into the quick find search for 'Event Manager'. Enterprise and Unlimited environments have access to the Logout Event by default, but the remainder of the events need licensing to access https://help.salesforce.com/s/articleView?id=sf.salesforce_shield.htm&type=5[Shield Event Monitoring]. + +==== include::../include/gs-link.asciidoc[] +include::../include/configuring-intro.asciidoc[] + +:fileset_ex: login + +include::../include/config-option-intro.asciidoc[] + +[float] +=== Fileset settings + [float] -==== `login-rest` fileset settings +==== `login` fileset Example config: [source,yaml] ---- - module: salesforce - login-rest: + login: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: Hourly + + var.real_time: true + var.real_time_interval: 5m ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: -*`var.client_id`*:: +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). -Oauth client ID. +*`var.api_version`*:: -*`var.client_secret`*:: +The API version of the Salesforce instance. -Oauth client secret. +*`var.authentication`*:: -*`var.token_url`*:: +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. -Oauth token URL. +*`var.authentication.jwt_bearer_flow.enabled`*:: -*`var.user`*:: +Set to true to use JWT authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.id`*:: -*`var.password`*:: +The client ID for JWT authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.username`*:: -*`var.url`*:: +The username for JWT authentication. -The URL of the Saleforce instance. +*`var.authentication.jwt_bearer_flow.client.key_path`*:: -[float] -==== `login-stream` fileset settings +Path to the client key file for JWT authentication. -Example config: +*`var.authentication.jwt_bearer_flow.url`*:: -[source,yaml] ----- -- module: salesforce - login-stream: - enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" - var.url: "https://instance-url.salesforce.com" ----- +The audience URL for JWT authentication. -include::../include/var-paths.asciidoc[] +*`var.authentication.user_password_flow.enabled`*:: -*`var.client_id`*:: +Set to true to use user-password authentication. -Oauth client ID. +*`var.authentication.user_password_flow.client.id`*:: -*`var.client_secret`*:: +The client ID for user-password authentication. -Oauth client secret. +*`var.authentication.user_password_flow.client.secret`*:: -*`var.token_url`*:: +The client secret for user-password authentication. -Oauth token URL. +*`var.authentication.user_password_flow.token_url`*:: -*`var.user`*:: +The Salesforce token URL for user-password authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.username`*:: -*`var.password`*:: +The Salesforce username for authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. + +*`var.event_log_file`*:: + +Set to true to collect logs from EventLogFile (historical data). + +*`var.elf_interval`*:: + +Interval for collecting EventLogFile logs, e.g. 1h or 5m. + +*`var.log_file_interval`*:: + +Either "Hourly" or "Daily". The time interval of each log file from EventLogFile. + +*`var.real_time`*:: + +Set to true to collect real-time data collection. + +*`var.real_time_interval`*:: + +Interval for collecting real-time logs, e.g. 30s or 5m. [float] -==== `logout-rest` fileset settings +==== `logout` fileset Example config: [source,yaml] ---- - module: salesforce - logout-rest: + logout: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: Hourly + + var.real_time: true + var.real_time_interval: 5m ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: -*`var.client_id`*:: +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). -Oauth client ID. +*`var.api_version`*:: -*`var.client_secret`*:: +The API version of the Salesforce instance. -Oauth client secret. +*`var.authentication`*:: -*`var.token_url`*:: +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. -Oauth token URL. +*`var.authentication.jwt_bearer_flow.enabled`*:: -*`var.user`*:: +Set to true to use JWT authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.id`*:: -*`var.password`*:: +The client ID for JWT authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.username`*:: -*`var.url`*:: +The username for JWT authentication. -The URL of the Saleforce instance. +*`var.authentication.jwt_bearer_flow.client.key_path`*:: -[float] -==== `logout-stream` fileset settings +Path to the client key file for JWT authentication. -Example config: +*`var.authentication.jwt_bearer_flow.url`*:: -[source,yaml] ----- -- module: salesforce - logout-stream: - enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" - var.url: "https://instance-url.salesforce.com" ----- +The audience URL for JWT authentication. -include::../include/var-paths.asciidoc[] +*`var.authentication.user_password_flow.enabled`*:: -*`var.client_id`*:: +Set to true to use user-password authentication. -Oauth client ID. +*`var.authentication.user_password_flow.client.id`*:: -*`var.client_secret`*:: +The client ID for user-password authentication. -Oauth client secret. +*`var.authentication.user_password_flow.client.secret`*:: -*`var.token_url`*:: +The client secret for user-password authentication. -Oauth token URL. +*`var.authentication.user_password_flow.token_url`*:: -*`var.user`*:: +The Salesforce token URL for user-password authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.username`*:: -*`var.password`*:: +The Salesforce username for authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. + +*`var.event_log_file`*:: + +Set to true to collect logs from EventLogFile (historical data). + +*`var.elf_interval`*:: + +Interval for collecting EventLogFile logs, e.g. 1h or 5m. + +*`var.log_file_interval`*:: + +Either "Hourly" or "Daily". The time interval of each log file from EventLogFile. + +*`var.real_time`*:: + +Set to true to collect real-time data collection. + +*`var.real_time_interval`*:: + +Interval for collecting real-time logs, e.g. 30s or 5m. [float] -==== `setupaudittrail-rest` fileset settings +==== `setupaudittrail` fileset Example config: [source,yaml] ---- - module: salesforce - setupaudittrail-rest: + setupaudittrail: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" - var.interval: 1h + + var.real_time: true + var.real_time_interval: 5m ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: + +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). + +*`var.api_version`*:: + +The API version of the Salesforce instance. + +*`var.authentication`*:: + +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. + +*`var.authentication.jwt_bearer_flow.enabled`*:: + +Set to true to use JWT authentication. + +*`var.authentication.jwt_bearer_flow.client.id`*:: -*`var.client_id`*:: +The client ID for JWT authentication. -Oauth client ID. +*`var.authentication.jwt_bearer_flow.client.username`*:: -*`var.client_secret`*:: +The username for JWT authentication. -Oauth client secret. +*`var.authentication.jwt_bearer_flow.client.key_path`*:: -*`var.token_url`*:: +Path to the client key file for JWT authentication. -Oauth token URL. +*`var.authentication.jwt_bearer_flow.url`*:: -*`var.user`*:: +The audience URL for JWT authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.enabled`*:: -*`var.password`*:: +Set to true to use user-password authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.client.id`*:: + +The client ID for user-password authentication. + +*`var.authentication.user_password_flow.client.secret`*:: + +The client secret for user-password authentication. + +*`var.authentication.user_password_flow.token_url`*:: + +The Salesforce token URL for user-password authentication. + +*`var.authentication.user_password_flow.username`*:: + +The Salesforce username for authentication. + +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. + +*`var.real_time`*:: -*`var.interval`*:: +Set to true to collect real-time data collection. -Period of fetching logs, i.e. 1s/1m/1h. +*`var.real_time_interval`*:: -Note: The default value of `var.interval` is 1h. It is important to exercise caution when reducing the interval, as it directly affects the API rate limit of the Salesforce instance. Salesforce API rate limit is ~1000 API calls per hour. Hence if user goes with lower limit of var.interval, the Salesforce API rate limit will exceed and any additional API requests beyond the limit will result in an error response from the Salesforce API. The error message will typically indicate that the rate limit has been exceeded. Please refer to the following link for the https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm[Salesforce API Rate Limit]. +Interval for collecting real-time logs, e.g. 30s or 5m. [float] -==== `apex-rest` fileset settings +==== `apex` fileset Example config: [source,yaml] ---- - module: salesforce - apex-rest: + apex: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.log_file_interval: Hourly + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: Hourly ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: + +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). + +*`var.api_version`*:: + +The API version of the Salesforce instance. -*`var.client_id`*:: +*`var.authentication`*:: -Oauth client ID. +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. -*`var.client_secret`*:: +*`var.authentication.jwt_bearer_flow.enabled`*:: -Oauth client secret. +Set to true to use JWT authentication. -*`var.token_url`*:: +*`var.authentication.jwt_bearer_flow.client.id`*:: -Oauth token URL. +The client ID for JWT authentication. -*`var.user`*:: +*`var.authentication.jwt_bearer_flow.client.username`*:: -The user used as part of the authentication flow. It is required for authentication - grant type password. +The username for JWT authentication. -*`var.password`*:: +*`var.authentication.jwt_bearer_flow.client.key_path`*:: -The password used as part of the authentication flow. It is required for authentication - grant type password. +Path to the client key file for JWT authentication. + +*`var.authentication.jwt_bearer_flow.url`*:: + +The audience URL for JWT authentication. + +*`var.authentication.user_password_flow.enabled`*:: + +Set to true to use user-password authentication. + +*`var.authentication.user_password_flow.client.id`*:: + +The client ID for user-password authentication. + +*`var.authentication.user_password_flow.client.secret`*:: + +The client secret for user-password authentication. + +*`var.authentication.user_password_flow.token_url`*:: + +The Salesforce token URL for user-password authentication. + +*`var.authentication.user_password_flow.username`*:: + +The Salesforce username for authentication. + +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. + +*`var.event_log_file`*:: + +Set to true to collect logs from EventLogFile (historical data). + +*`var.elf_interval`*:: + +Interval for collecting EventLogFile logs, e.g. 1h or 5m. + +*`var.log_file_interval`*:: + +Either "Hourly" or "Daily". The time interval of each log file from EventLogFile. [float] -=== Example dashboard +=== Example dashboards + +The Salesforce module includes several predefined dashboards: -This Salesforce module comes with several predefined dashboards, including Login, Logout, Apex, and Setup Audit Trails Dashboards. For example: +- Login Dashboard: Visualizes login activity and trends. +- Logout Dashboard: Visualizes logout activity and trends. +- Apex Dashboard: Visualizes Apex executions and errors. +- Setup Audit Trail Dashboard: Shows changes made in the Setup area. image::./images/filebeat-salesforce-login-dashboard.png[] image::./images/filebeat-salesforce-logout-dashboard.png[] -:has-dashboards!: +image::./images/filebeat-salesforce-setupaudittrail-dashboard.png[] + +Access these dashboards in Kibana by going to Management -> Kibana -> Dashboards and searching for "Salesforce". + +[float] +=== Troubleshooting + +Here are some common issues and how to resolve them: + +*Hitting Salesforce API limits*:: +Reduce the values of `var.real_time_interval` and `var.elf_interval` to poll the API less frequently. Monitor the API usage in your Salesforce instance. + +*Connectivity issues*:: +Verify the `var.url` is correct. Check that the user credentials are valid and have the necessary permissions. Ensure network connectivity between the Elastic Agent and Salesforce instance. + +*Not seeing any data*:: +Check the Elastic Agent logs for errors. Verify the module configuration is correct, the filesets are enabled, and the intervals are reasonable. Confirm there is log activity in Salesforce for the log types being collected. + +:has-dashboards!: :fileset_ex!: :modulename!: - [float] === Fields diff --git a/go.sum b/go.sum index 83453f9727f..9d91060a158 100644 --- a/go.sum +++ b/go.sum @@ -2884,4 +2884,4 @@ sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZa sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= \ No newline at end of file diff --git a/libbeat/tests/system/beat/beat.py b/libbeat/tests/system/beat/beat.py index 8fe74193b91..b8c4b3c43f1 100644 --- a/libbeat/tests/system/beat/beat.py +++ b/libbeat/tests/system/beat/beat.py @@ -814,16 +814,25 @@ def is_documented(key, docs): return True return False + undocumented_keys = [] + is_documented_aliases = [] + for key in flat.keys(): meta_key = key.startswith('@metadata.') # Range keys as used in 'date_range' etc will not have docs of course is_range_key = key.split('.')[-1] in ['gte', 'gt', 'lte', 'lt'] + if not(is_documented(key, expected_fields) or meta_key or is_range_key): - raise Exception( - f"Key '{key}' found in event ({str(evt)}) is not documented!") + undocumented_keys.append(key) + if is_documented(key, aliases): - raise Exception( - "Key '{key}' found in event is documented as an alias!") + is_documented_aliases.append(key) + + if undocumented_keys: + raise Exception(f"Keys {undocumented_keys} not documented in event {str(evt)}") + + if is_documented_aliases: + raise Exception(f"Keys {is_documented_aliases} documented as aliases!") def get_beat_version(self): """ diff --git a/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc b/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc index 3b85b8511b6..02e6f4675c3 100644 --- a/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-salesforce.asciidoc @@ -11,21 +11,32 @@ Use the `salesforce` input to monitor Salesforce events either via the https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm[Salesforce EventLogFile (ELF) API] or the https://developer.salesforce.com/blogs/2020/05/introduction-to-real-time-event-monitoring[Salesforce Real-time event monitoring API]. Both use REST API (to execute SOQL queries in the Salesforce instance) under the hood to query the relevant objects to fetch the events. -Here the `input` have cursor state(s) that will be provided to the next execution of event monitoring to fetch the events from the last cursor state. The cursor states can be used to control the behaviour of the program. +The Salesforce input maintains cursor states between requests to track the last event retrieved in each execution. These cursor states are passed to the next event monitoring execution to resume fetching events from the last known position. The cursor states allow the input to pick up where it left off and provide control over the behavior of the input. -This input supports: +Here are some supported authentication methods and event monitoring methods: -* Auth +* Authentication methods ** OAuth2 *** User-Password flow *** JWT Bearer flow -* Event Monitoring + +* Event monitoring methods ** EventLogFile (ELF) using REST API -** REST API for objects (Used for Setup Audit Trail and for monitoring real-time events) +** REST API for objects (For monitoring real-time events) + +Here are some key points about how cursors are used in the Salesforce input: + +- Separate cursor states are maintained for each configured event monitoring method (`event_log_file` and `object`). +- The cursor state stores the unique identifier of the last event retrieved, based on the `cursor.field` specified in the configuration. +- On the first run, the `query.default` is used to fetch an initial set of events. +- On subsequent runs, the `query.value` template is populated with the cursor state to fetch events since the last execution. +- If the input is restarted, it will resume from the last persisted cursor state rather than starting over from scratch. + +Using cursors allows the Salesforce input to reliably keep track of its progress and avoid missing or duplicating events across executions. The cursor field should be chosen carefully to have a monotonically increasing value for each new event. Event Monitoring methods are highly configurable and can be used to monitor any supported object or event log file. The input can be configured to monitor multiple objects or event log files at the same time. -Example configurations: +Example configuration: ["source","yaml",subs="attributes"] ---- @@ -67,6 +78,39 @@ filebeat.inputs: field: "EventDate" ---- +==== Set up the OAuth App in the Salesforce + +In order to use this integration, users need to create a new Salesforce Application using OAuth. Follow the steps below to create a connected application in Salesforce: + +1. Login to https://login.salesforce.com/[Salesforce] with the same user credentials that the user wants to collect data with. +2. Click on Setup on the top right menu bar. On the Setup page, search for `App Manager` in the `Search Setup` search box at the top of the page, then select `App Manager`. +3. Click _New Connected App_. +4. Provide a name for the connected application. This will be displayed in the App Manager and on its App Launcher tile. +5. Enter the API name. The default is a version of the name without spaces. Only letters, numbers, and underscores are allowed. If the original app name contains any other characters, edit the default name. +6. Enter the contact email for Salesforce. +7. Under the API (Enable OAuth Settings) section of the page, select _Enable OAuth Settings_. +8. In the Callback URL, enter the Instance URL (Please refer to `Salesforce Instance URL`). +9. Select the following OAuth scopes to apply to the connected app: +- Manage user data via APIs (api). +- Perform requests at any time (refresh_token, offline_access). +- (Optional) In case of data collection, if any permission issues arise, add the Full access (full) scope. +10. Select _Require Secret for the Web Server Flow_ to require the app's client secret in exchange for an access token. +11. Select _Require Secret for Refresh Token Flow_ to require the app's client secret in the authorization request of a refresh token and hybrid refresh token flow. +12. Click Save. It may take approximately 10 minutes for the changes to take effect. +13. Click Continue and then under API details, click Manage Consumer Details. Verify the user account using the Verification Code. +14. Copy `Consumer Key` and `Consumer Secret` from the Consumer Details section, which should be populated as values for Client ID and Client Secret respectively in the configuration. + +For more details on how to create a Connected App, refer to the Salesforce documentation https://help.salesforce.com/apex/HTViewHelpDoc?id=connected_app_create.htm[here]. + +[NOTE] + +==== + +*Enabling real-time events* + +To get started with https://developer.salesforce.com/blogs/2020/05/introduction-to-real-time-event-monitoring[real-time] events, head to setup and into the quick find search for 'Event Manager'. Enterprise and Unlimited environments have access to the Logout Event by default, but the remainder of the events need licensing to access https://help.salesforce.com/s/articleView?id=sf.salesforce_shield.htm&type=5[Shield Event Monitoring]. + +==== ==== Execution @@ -74,9 +118,27 @@ The `salesforce` input is a long-running program that retrieves events from a Sa There are two methods to fetch the events from the Salesforce instance: -- event_log_file: https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm[EventLogFile] is a standard object in Salesforce and the event monitoring method uses the REST API under the hood to gather the Salesforce org's operational events from the object. There is a field EventType that helps distinguish between the types of operational events like — Login, Logout, etc. Uses Salesforce's query language SOQL to query the object. +- `event_log_file`: https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_eventlogfile.htm[EventLogFile] is a standard object in Salesforce and the event monitoring method uses the REST API under the hood to gather the Salesforce org's operational events from the object. There is a field EventType that helps distinguish between the types of operational events like — Login, Logout, etc. Uses Salesforce's query language SOQL to query the object. + +- `object`: This method is a general way of retrieving events from a Salesforce instance by using the REST API. It can be used for monitoring https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_list.htm[objects] in real-time. In real-time event monitoring, subscribing to the events is a common practice, but the events are also stored in Salesforce org (if configured), specifically in big object tables that are preconfigured for each event type. With this method, we query the object using Salesforce's query language (https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql.htm[SOQL]). The collection happens at the configured scrape `interval`. -- object: This method is a general way of retrieving events from a Salesforce instance by using the REST API. It can be used for the SetupAuditTrail and for monitoring objects in real-time. In real-time event monitoring, subscribing to the events is a common practice, but the events are also stored in Salesforce org (if configured), specifically in big object tables that are preconfigured for each event type. To query the object, Salesforce's query language SOQL is used. +[NOTE] +==== + +*Salesforce Objects and SOQL Query Field Ordering Limitations* + +Each Salesforce Object contains a set of fields, but SOQL queries have restrictions on the fields that can be ordered and the specific ordering method. The Object description on the Salesforce Developers page provides information about these limitations. For instance, the Login Object only allows ordering by the EventDate field in descending order. + +When collecting data over time using cursors, the following cursor inputs are available: + +- `object.first_event_time`: This cursor input stores the cursor value from the first event encountered during data collection using the object method. +- `object.last_event_time`: This cursor input stores the cursor value from the last event encountered during data collection using the object method. +- `event_log_file.first_event_time`: This cursor input stores the cursor value from the first event encountered during data collection using the event log file method. +- `event_log_file.last_event_time`: This cursor input stores the cursor value from the last event encountered during data collection using the event log file method. + +By selecting one of the above cursor inputs, users can collect data from both the object and event log file in the desired order. The cursor configuration can be customized based on the user's specific requirements. + +==== ==== Configuration options @@ -113,7 +175,9 @@ There are two OAuth2 authentication flows supported: Whether to use the user-password flow for authentication. Default: `false`. -NOTE: Only one authentication flow can be enabled at a time. +[NOTE] + +Only one authentication flow can be enabled at a time. [string] ==== `auth.oauth2.user_password_flow.client.id` @@ -145,7 +209,9 @@ The password for the user-password flow. Whether to use the JWT bearer flow for authentication. Default: `false`. -NOTE: Only one authentication flow can be enabled at a time. +[NOTE] + +Only one authentication flow can be enabled at a time. [string] ==== `auth.oauth2.jwt_bearer_flow.client.id` @@ -172,23 +238,22 @@ The URL for the JWT bearer flow. The URL of the Salesforce instance. Required. -[[resource-parameters]] -[float] +[duration] ==== `resource.timeout` Duration before declaring that the HTTP client connection has timed out. Valid time units are `ns`, `us`, `ms`, `s`, `m`, `h`. Default: `30s`. -[float] +[integer] ==== `resource.retry.max_attempts` The maximum number of retries for the HTTP client. Default: `5`. -[float] +[duration] ==== `resource.retry.wait_min` The minimum time to wait before a retry is attempted. Default: `1s`. -[float] +[duration] ==== `resource.retry.wait_max` The maximum time to wait before a retry is attempted. Default: `60s`. @@ -239,7 +304,7 @@ The field to use to fetch the cursor state from the last event fetched from the [object] ==== `event_monitoring_method.object` -The event monitoring method to use — object. Uses REST API to fetch the events directly from the objects from the Salesforce instance. This method is used for Setup Audit Trail and for monitoring real-time events. +The event monitoring method to use — object. Uses REST API to fetch the events directly from the objects from the Salesforce instance. [bool] ==== `event_monitoring_method.object.enabled` diff --git a/x-pack/filebeat/filebeat.reference.yml b/x-pack/filebeat/filebeat.reference.yml index e5f74a67e59..6aa6707fbdd 100644 --- a/x-pack/filebeat/filebeat.reference.yml +++ b/x-pack/filebeat/filebeat.reference.yml @@ -1500,136 +1500,148 @@ filebeat.modules: #var.password: #------------------------------ Salesforce Module ------------------------------ -- module: salesforce +# Configuration file for Salesforce module in Filebeat - apex-rest: - enabled: false +# Common Configurations: +# - enabled: Set to true to enable ingestion of Salesforce module fileset +# - initial_interval: Initial interval for log collection. This setting determines the time period for which the logs will be initially collected when the ingestion process starts, i.e. 1d/h/m/s +# - api_version: API version for Salesforce, version should be greater than 46.0 - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +# Authentication Configurations: +# User-Password Authentication: +# - enabled: Set to true to enable user-password authentication +# - client.id: Client ID for user-password authentication +# - client.secret: Client secret for user-password authentication +# - token_url: Token URL for user-password authentication +# - username: Username for user-password authentication +# - password: Password for user-password authentication - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +# JWT Authentication: +# - enabled: Set to true to enable JWT authentication +# - client.id: Client ID for JWT authentication +# - client.username: Username for JWT authentication +# - client.key_path: Path to client key for JWT authentication +# - url: Audience URL for JWT authentication - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" +# Event Monitoring: +# - real_time: Set to true to enable real-time logging using object type data collection +# - real_time_interval: Interval for real-time logging - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" +# Event Log File: +# - event_log_file: Set to true to enable event log file type data collection +# - elf_interval: Interval for event log file +# - log_file_interval: Interval type for log file collection, either Hourly or Daily - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" +- module: salesforce - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - login-rest: + apex: enabled: false + var.initial_interval: 1d + var.api_version: 56 - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" + var.url: "https://instance_id.my.salesforce.com" - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" - login-stream: + login: enabled: false + var.initial_interval: 1d + var.api_version: 56 - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + var.url: "https://instance_id.my.salesforce.com" - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" + var.real_time: true + var.real_time_interval: 5m - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - logout-rest: + logout: enabled: false + var.initial_interval: 1d + var.api_version: 56 - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" + var.url: "https://instance_id.my.salesforce.com" - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" + var.real_time: true + var.real_time_interval: 5m - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - logout-stream: + setupaudittrail: enabled: false + var.initial_interval: 1d + var.api_version: 56 - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" + var.url: "https://instance_id.my.salesforce.com" - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - setupaudittrail-rest: - enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - # Interval, should include the time interval - #var.interval: 1h + var.real_time: true + var.real_time_interval: 5m #----------------------------- Google Santa Module ----------------------------- - module: santa log: diff --git a/x-pack/filebeat/input/salesforce/input.go b/x-pack/filebeat/input/salesforce/input.go index 1e893625ed2..dacb15042b3 100644 --- a/x-pack/filebeat/input/salesforce/input.go +++ b/x-pack/filebeat/input/salesforce/input.go @@ -292,12 +292,12 @@ func (s *salesforceInput) RunEventLogFile() error { s.log.Debugf("scrape eventLogFile(s) every %s", s.srcConfig.EventMonitoringMethod.EventLogFile.Interval) var cursor mapstr.M - if !(isZero(s.cursor.Object.FirstEventTime) && isZero(s.cursor.Object.LastEventTime)) { + if !(isZero(s.cursor.EventLogFile.FirstEventTime) && isZero(s.cursor.EventLogFile.LastEventTime)) { eventLogFile := make(mapstr.M) - if !isZero(s.cursor.Object.FirstEventTime) { + if !isZero(s.cursor.EventLogFile.FirstEventTime) { eventLogFile.Put("first_event_time", s.cursor.EventLogFile.FirstEventTime) } - if !isZero(s.cursor.Object.LastEventTime) { + if !isZero(s.cursor.EventLogFile.LastEventTime) { eventLogFile.Put("last_event_time", s.cursor.EventLogFile.LastEventTime) } cursor = mapstr.M{"event_log_file": eventLogFile} diff --git a/x-pack/filebeat/module/salesforce/_meta/config.yml b/x-pack/filebeat/module/salesforce/_meta/config.yml index f5c6c9c7f06..b5110376324 100644 --- a/x-pack/filebeat/module/salesforce/_meta/config.yml +++ b/x-pack/filebeat/module/salesforce/_meta/config.yml @@ -1,130 +1,142 @@ -- module: salesforce - - apex-rest: - enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - login-rest: - enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +# Configuration file for Salesforce module in Filebeat + +# Common Configurations: +# - enabled: Set to true to enable ingestion of Salesforce module fileset +# - initial_interval: Initial interval for log collection. This setting determines the time period for which the logs will be initially collected when the ingestion process starts, i.e. 1d/h/m/s +# - api_version: API version for Salesforce, version should be greater than 46.0 + +# Authentication Configurations: +# User-Password Authentication: +# - enabled: Set to true to enable user-password authentication +# - client.id: Client ID for user-password authentication +# - client.secret: Client secret for user-password authentication +# - token_url: Token URL for user-password authentication +# - username: Username for user-password authentication +# - password: Password for user-password authentication + +# JWT Authentication: +# - enabled: Set to true to enable JWT authentication +# - client.id: Client ID for JWT authentication +# - client.username: Username for JWT authentication +# - client.key_path: Path to client key for JWT authentication +# - url: Audience URL for JWT authentication + +# Event Monitoring: +# - real_time: Set to true to enable real-time logging using object type data collection +# - real_time_interval: Interval for real-time logging + +# Event Log File: +# - event_log_file: Set to true to enable event log file type data collection +# - elf_interval: Interval for event log file +# - log_file_interval: Interval type for log file collection, either Hourly or Daily - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" +- module: salesforce - login-stream: + apex: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - logout-rest: + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" + + login: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - logout-stream: + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" + + var.real_time: true + var.real_time_interval: 5m + + logout: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - setupaudittrail-rest: + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" + + var.real_time: true + var.real_time_interval: 5m + + setupaudittrail: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - # Interval, should include the time interval - #var.interval: 1h \ No newline at end of file + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.real_time: true + var.real_time_interval: 5m \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/docs.asciidoc b/x-pack/filebeat/module/salesforce/_meta/docs.asciidoc index edfce0ea7ad..7d189fc6984 100644 --- a/x-pack/filebeat/module/salesforce/_meta/docs.asciidoc +++ b/x-pack/filebeat/module/salesforce/_meta/docs.asciidoc @@ -5,309 +5,573 @@ == Salesforce module -This is a module for Salesforce logs. -It collects the logs using the following two different types of inputs: +include::{libbeat-dir}/shared/integration-link.asciidoc[] -- `httpjson` input: collects historical data from Salesforce REST API. -- `cometd` input: collects real-time data from Salesforce Streaming API. +[NOTE] -It includes the following filesets for receiving logs: +The Salesforce module has been completely revamped to use a new dedicated Salesforce input for event collection, replacing the previous HTTPJSON input method. This change brings improved performance and reliability. However, please be aware that this update introduces a breaking change. We believe this is the right time to make this necessary improvement as the previous module was in beta. -- `login-rest` fileset: supports Salesforce Login logs received from the REST API. -- `login-stream` fileset: supports Salesforce Login logs received from the Streaming API. -- `logout-rest` fileset: supports Salesforce Logout logs received from the REST API. -- `logout-stream` fileset: supports Salesforce Logout logs received from the Streaming API. -- `apex-rest` fileset: supports Salesforce Apex logs received from the REST API. -- `setupaudittrail-rest` fileset: supports logs generated when admins make in your org’s Setup area. +The Salesforce module collects logs from a Salesforce instance using the Salesforce REST API. It supports real-time and historical data collection for various log types including Login, Logout, APEX, and Setup Audit Trail. -Note: We can leverage the inputs provided above to collect the rest of the events from the Salesforce REST or Streaming API. +The Salesforce module contains the following filesets for collecting different types of logs: -include::../include/what-happens.asciidoc[] +- The `login` fileset collects Login events from the EventLogFile or Objects (real-time). +- The `logout` fileset collects Logout events from the EventLogFile or Objects (real-time). +- The `apex` fileset collects APEX execution logs from the EventLogFile. +- The `setupaudittrail` fileset collects Audit Trails events generated when admins make configuration changes in the org's Setup area from the Objects (real-time). + +[options="header"] +|=== +| Fileset | EventLogFile | Objects (real-time) + +|login +|yes +|yes + +|logout +|yes +|yes + +|apex +|yes +|no + +|setupaudittrail +|no +|yes +|=== + + +[IMPORTANT] +==== +The default interval for collecting logs (`var.real_time_interval` or `var.elf_interval`) is 5m/1h. Exercise caution when reducing this interval, as it directly impacts the Salesforce API rate limit of ~1000 calls per hour. Exceeding the limit will result in errors from the Salesforce API. Refer to the https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm[Salesforce API Rate Limit] documentation for more details. +==== + +== Set up the OAuth App in the Salesforce + +In order to use this integration, users need to create a new Salesforce Application using OAuth. Follow the steps below to create a connected application in Salesforce: + +1. Login to https://login.salesforce.com/[Salesforce] with the same user credentials that the user wants to collect data with. +2. Click on Setup on the top right menu bar. On the Setup page, search for `App Manager` in the `Search Setup` search box at the top of the page, then select `App Manager`. +3. Click _New Connected App_. +4. Provide a name for the connected application. This will be displayed in the App Manager and on its App Launcher tile. +5. Enter the API name. The default is a version of the name without spaces. Only letters, numbers, and underscores are allowed. If the original app name contains any other characters, edit the default name. +6. Enter the contact email for Salesforce. +7. Under the API (Enable OAuth Settings) section of the page, select _Enable OAuth Settings_. +8. In the Callback URL, enter the Instance URL (Please refer to `Salesforce Instance URL`). +9. Select the following OAuth scopes to apply to the connected app: +- Manage user data via APIs (api). +- Perform requests at any time (refresh_token, offline_access). +- (Optional) In case of data collection, if any permission issues arise, add the Full access (full) scope. +10. Select _Require Secret for the Web Server Flow_ to require the app's client secret in exchange for an access token. +11. Select _Require Secret for Refresh Token Flow_ to require the app's client secret in the authorization request of a refresh token and hybrid refresh token flow. +12. Click Save. It may take approximately 10 minutes for the changes to take effect. +13. Click Continue and then under API details, click Manage Consumer Details. Verify the user account using the Verification Code. +14. Copy `Consumer Key` and `Consumer Secret` from the Consumer Details section, which should be populated as values for Client ID and Client Secret respectively in the configuration. + +For more details on how to create a Connected App, refer to the Salesforce documentation https://help.salesforce.com/apex/HTViewHelpDoc?id=connected_app_create.htm[here]. + +[NOTE] + +==== + +*Enabling real-time events* + +To get started with https://developer.salesforce.com/blogs/2020/05/introduction-to-real-time-event-monitoring[real-time] events, head to setup and into the quick find search for 'Event Manager'. Enterprise and Unlimited environments have access to the Logout Event by default, but the remainder of the events need licensing to access https://help.salesforce.com/s/articleView?id=sf.salesforce_shield.htm&type=5[Shield Event Monitoring]. + +==== include::../include/gs-link.asciidoc[] +include::../include/configuring-intro.asciidoc[] + +:fileset_ex: login + +include::../include/config-option-intro.asciidoc[] + +[float] +=== Fileset settings + [float] -==== `login-rest` fileset settings +==== `login` fileset Example config: [source,yaml] ---- - module: salesforce - login-rest: + login: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: Hourly + + var.real_time: true + var.real_time_interval: 5m ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: -*`var.client_id`*:: +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). -Oauth client ID. +*`var.api_version`*:: -*`var.client_secret`*:: +The API version of the Salesforce instance. -Oauth client secret. +*`var.authentication`*:: -*`var.token_url`*:: +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. -Oauth token URL. +*`var.authentication.jwt_bearer_flow.enabled`*:: -*`var.user`*:: +Set to true to use JWT authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.id`*:: -*`var.password`*:: +The client ID for JWT authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.username`*:: -*`var.url`*:: +The username for JWT authentication. -The URL of the Saleforce instance. +*`var.authentication.jwt_bearer_flow.client.key_path`*:: -[float] -==== `login-stream` fileset settings +Path to the client key file for JWT authentication. -Example config: +*`var.authentication.jwt_bearer_flow.url`*:: -[source,yaml] ----- -- module: salesforce - login-stream: - enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" - var.url: "https://instance-url.salesforce.com" ----- +The audience URL for JWT authentication. -include::../include/var-paths.asciidoc[] +*`var.authentication.user_password_flow.enabled`*:: -*`var.client_id`*:: +Set to true to use user-password authentication. -Oauth client ID. +*`var.authentication.user_password_flow.client.id`*:: -*`var.client_secret`*:: +The client ID for user-password authentication. -Oauth client secret. +*`var.authentication.user_password_flow.client.secret`*:: -*`var.token_url`*:: +The client secret for user-password authentication. -Oauth token URL. +*`var.authentication.user_password_flow.token_url`*:: -*`var.user`*:: +The Salesforce token URL for user-password authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.username`*:: -*`var.password`*:: +The Salesforce username for authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. + +*`var.event_log_file`*:: + +Set to true to collect logs from EventLogFile (historical data). + +*`var.elf_interval`*:: + +Interval for collecting EventLogFile logs, e.g. 1h or 5m. + +*`var.log_file_interval`*:: + +Either "Hourly" or "Daily". The time interval of each log file from EventLogFile. + +*`var.real_time`*:: + +Set to true to collect real-time data collection. + +*`var.real_time_interval`*:: + +Interval for collecting real-time logs, e.g. 30s or 5m. [float] -==== `logout-rest` fileset settings +==== `logout` fileset Example config: [source,yaml] ---- - module: salesforce - logout-rest: + logout: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: Hourly + + var.real_time: true + var.real_time_interval: 5m ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: -*`var.client_id`*:: +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). -Oauth client ID. +*`var.api_version`*:: -*`var.client_secret`*:: +The API version of the Salesforce instance. -Oauth client secret. +*`var.authentication`*:: -*`var.token_url`*:: +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. -Oauth token URL. +*`var.authentication.jwt_bearer_flow.enabled`*:: -*`var.user`*:: +Set to true to use JWT authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.id`*:: -*`var.password`*:: +The client ID for JWT authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.username`*:: -*`var.url`*:: +The username for JWT authentication. -The URL of the Saleforce instance. +*`var.authentication.jwt_bearer_flow.client.key_path`*:: -[float] -==== `logout-stream` fileset settings +Path to the client key file for JWT authentication. -Example config: +*`var.authentication.jwt_bearer_flow.url`*:: -[source,yaml] ----- -- module: salesforce - logout-stream: - enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" - var.url: "https://instance-url.salesforce.com" ----- +The audience URL for JWT authentication. -include::../include/var-paths.asciidoc[] +*`var.authentication.user_password_flow.enabled`*:: -*`var.client_id`*:: +Set to true to use user-password authentication. -Oauth client ID. +*`var.authentication.user_password_flow.client.id`*:: -*`var.client_secret`*:: +The client ID for user-password authentication. -Oauth client secret. +*`var.authentication.user_password_flow.client.secret`*:: -*`var.token_url`*:: +The client secret for user-password authentication. -Oauth token URL. +*`var.authentication.user_password_flow.token_url`*:: -*`var.user`*:: +The Salesforce token URL for user-password authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.username`*:: -*`var.password`*:: +The Salesforce username for authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. + +*`var.event_log_file`*:: + +Set to true to collect logs from EventLogFile (historical data). + +*`var.elf_interval`*:: + +Interval for collecting EventLogFile logs, e.g. 1h or 5m. + +*`var.log_file_interval`*:: + +Either "Hourly" or "Daily". The time interval of each log file from EventLogFile. + +*`var.real_time`*:: + +Set to true to collect real-time data collection. + +*`var.real_time_interval`*:: + +Interval for collecting real-time logs, e.g. 30s or 5m. [float] -==== `setupaudittrail-rest` fileset settings +==== `setupaudittrail` fileset Example config: [source,yaml] ---- - module: salesforce - setupaudittrail-rest: + setupaudittrail: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" - var.interval: 1h + + var.real_time: true + var.real_time_interval: 5m ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: + +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). + +*`var.api_version`*:: + +The API version of the Salesforce instance. + +*`var.authentication`*:: + +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. + +*`var.authentication.jwt_bearer_flow.enabled`*:: + +Set to true to use JWT authentication. -*`var.client_id`*:: +*`var.authentication.jwt_bearer_flow.client.id`*:: -Oauth client ID. +The client ID for JWT authentication. -*`var.client_secret`*:: +*`var.authentication.jwt_bearer_flow.client.username`*:: -Oauth client secret. +The username for JWT authentication. -*`var.token_url`*:: +*`var.authentication.jwt_bearer_flow.client.key_path`*:: -Oauth token URL. +Path to the client key file for JWT authentication. -*`var.user`*:: +*`var.authentication.jwt_bearer_flow.url`*:: -The user used as part of the authentication flow. It is required for authentication - grant type password. +The audience URL for JWT authentication. -*`var.password`*:: +*`var.authentication.user_password_flow.enabled`*:: -The password used as part of the authentication flow. It is required for authentication - grant type password. +Set to true to use user-password authentication. + +*`var.authentication.user_password_flow.client.id`*:: + +The client ID for user-password authentication. + +*`var.authentication.user_password_flow.client.secret`*:: + +The client secret for user-password authentication. + +*`var.authentication.user_password_flow.token_url`*:: + +The Salesforce token URL for user-password authentication. + +*`var.authentication.user_password_flow.username`*:: + +The Salesforce username for authentication. + +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. -*`var.interval`*:: +*`var.real_time`*:: -Period of fetching logs, i.e. 1s/1m/1h. +Set to true to collect real-time data collection. -Note: The default value of `var.interval` is 1h. It is important to exercise caution when reducing the interval, as it directly affects the API rate limit of the Salesforce instance. Salesforce API rate limit is ~1000 API calls per hour. Hence if user goes with lower limit of var.interval, the Salesforce API rate limit will exceed and any additional API requests beyond the limit will result in an error response from the Salesforce API. The error message will typically indicate that the rate limit has been exceeded. Please refer to the following link for the https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_api.htm[Salesforce API Rate Limit]. +*`var.real_time_interval`*:: + +Interval for collecting real-time logs, e.g. 30s or 5m. [float] -==== `apex-rest` fileset settings +==== `apex` fileset Example config: [source,yaml] ---- - module: salesforce - apex-rest: + apex: enabled: true - var.client_id: "my-client-id" - var.client_secret: "my-client-secret" - var.token_url: "https://login.salesforce.com/services/oauth2/token" - var.user: "my.email@here.com" - var.password: "password" + var.initial_interval: 1d + var.log_file_interval: Hourly + var.api_version: 56 + + var.authentication: + jwt_bearer_flow: + enabled: false + client.id: "my-client-id" + client.username: "my.email@here.com" + client.key_path: client_key.pem + url: https://login.salesforce.com + user_password_flow: + enabled: true + client.id: "my-client-id" + client.secret: "my-client-secret" + token_url: "https://login.salesforce.com" + username: "my.email@here.com" + password: "password" + var.url: "https://instance-url.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: Hourly ---- -include::../include/var-paths.asciidoc[] +*`var.initial_interval`*:: + +The time window for collecting historical data when the input starts. Expects a duration string (e.g. 12h or 7d). + +*`var.api_version`*:: -*`var.client_id`*:: +The API version of the Salesforce instance. -Oauth client ID. +*`var.authentication`*:: -*`var.client_secret`*:: +Authentication config for connecting to Salesforce API. Supports JWT or user-password auth flows. -Oauth client secret. +*`var.authentication.jwt_bearer_flow.enabled`*:: -*`var.token_url`*:: +Set to true to use JWT authentication. -Oauth token URL. +*`var.authentication.jwt_bearer_flow.client.id`*:: -*`var.user`*:: +The client ID for JWT authentication. -The user used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.username`*:: -*`var.password`*:: +The username for JWT authentication. -The password used as part of the authentication flow. It is required for authentication - grant type password. +*`var.authentication.jwt_bearer_flow.client.key_path`*:: + +Path to the client key file for JWT authentication. + +*`var.authentication.jwt_bearer_flow.url`*:: + +The audience URL for JWT authentication. + +*`var.authentication.user_password_flow.enabled`*:: + +Set to true to use user-password authentication. + +*`var.authentication.user_password_flow.client.id`*:: + +The client ID for user-password authentication. + +*`var.authentication.user_password_flow.client.secret`*:: + +The client secret for user-password authentication. + +*`var.authentication.user_password_flow.token_url`*:: + +The Salesforce token URL for user-password authentication. + +*`var.authentication.user_password_flow.username`*:: + +The Salesforce username for authentication. + +*`var.authentication.user_password_flow.password`*:: + +The password for the Salesforce user. *`var.url`*:: -The URL of the Saleforce instance. +The URL of the Salesforce instance. + +*`var.event_log_file`*:: + +Set to true to collect logs from EventLogFile (historical data). + +*`var.elf_interval`*:: + +Interval for collecting EventLogFile logs, e.g. 1h or 5m. + +*`var.log_file_interval`*:: + +Either "Hourly" or "Daily". The time interval of each log file from EventLogFile. [float] -=== Example dashboard +=== Example dashboards -This Salesforce module comes with several predefined dashboards, including Login, Logout, Apex, and Setup Audit Trails Dashboards. For example: +The Salesforce module includes several predefined dashboards: + +- Login Dashboard: Visualizes login activity and trends. +- Logout Dashboard: Visualizes logout activity and trends. +- Apex Dashboard: Visualizes Apex executions and errors. +- Setup Audit Trail Dashboard: Shows changes made in the Setup area. image::./images/filebeat-salesforce-login-dashboard.png[] image::./images/filebeat-salesforce-logout-dashboard.png[] -:has-dashboards!: +image::./images/filebeat-salesforce-setupaudittrail-dashboard.png[] + +Access these dashboards in Kibana by going to Management -> Kibana -> Dashboards and searching for "Salesforce". + +[float] +=== Troubleshooting + +Here are some common issues and how to resolve them: + +*Hitting Salesforce API limits*:: +Reduce the values of `var.real_time_interval` and `var.elf_interval` to poll the API less frequently. Monitor the API usage in your Salesforce instance. + +*Connectivity issues*:: +Verify the `var.url` is correct. Check that the user credentials are valid and have the necessary permissions. Ensure network connectivity between the Elastic Agent and Salesforce instance. + +*Not seeing any data*:: +Check the Elastic Agent logs for errors. Verify the module configuration is correct, the filesets are enabled, and the intervals are reasonable. Confirm there is log activity in Salesforce for the log types being collected. + +:has-dashboards!: :fileset_ex!: -:modulename!: +:modulename!: \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/243e40b0-f891-11ee-9088-0f36517484ce.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/243e40b0-f891-11ee-9088-0f36517484ce.json new file mode 100644 index 00000000000..1c0b58da7ae --- /dev/null +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/243e40b0-f891-11ee-9088-0f36517484ce.json @@ -0,0 +1,763 @@ +{ + "attributes": { + "description": "Salesforce Logout Data", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "event.dataset", + "negate": false, + "params": { + "query": "salesforce.logout" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "salesforce.logout" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "syncColors": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "enhancements": {}, + "hidePanelTitles": true, + "savedVis": { + "data": { + "aggs": [], + "searchSource": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "description": "", + "params": { + "controls": [ + { + "fieldName": "salesforce.instance_url", + "id": "1712900437314", + "indexPatternRefName": "control_e04d7dbe-82fb-438b-8097-594262a141ec_0_index_pattern", + "label": "Instance URL", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + } + ], + "pinFilters": false, + "updateFiltersOnChange": false, + "useTimeFilter": false + }, + "title": "", + "type": "input_control_vis", + "uiState": {} + } + }, + "gridData": { + "h": 5, + "i": "e04d7dbe-82fb-438b-8097-594262a141ec", + "w": 48, + "x": 0, + "y": 0 + }, + "panelIndex": "e04d7dbe-82fb-438b-8097-594262a141ec", + "type": "visualization", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-7f107c7d-34fd-481a-b6ac-6e0037488d00", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "7f107c7d-34fd-481a-b6ac-6e0037488d00": { + "columnOrder": [ + "d0a8f0be-bff5-4156-b797-4ce54c84c2ad", + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX0", + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX1", + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX2" + ], + "columns": { + "d0a8f0be-bff5-4156-b797-4ce54c84c2ad": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "User initiated logout", + "operationType": "formula", + "params": { + "format": { + "id": "percent", + "params": { + "decimals": 2 + } + }, + "formula": "count(kql='salesforce.logout.user_initiated_logout : \"1\" ')/count()", + "isFormulaBroken": false + }, + "references": [ + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX2" + ], + "scale": "ratio" + }, + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX0": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "salesforce.logout.user_initiated_logout : \"1\" " + }, + "isBucketed": false, + "label": "Part of count(kql='salesforce.logout.user_initiated_logout : \"1\" ')/count()", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX1": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Part of count(kql='salesforce.logout.user_initiated_logout : \"1\" ')/count()", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX2": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Part of count(kql='salesforce.logout.user_initiated_logout : \"1\" ')/count()", + "operationType": "math", + "params": { + "tinymathAst": { + "args": [ + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX0", + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX1" + ], + "location": { + "max": 67, + "min": 0 + }, + "name": "divide", + "text": "count(kql='salesforce.logout.user_initiated_logout : \"1\" ')/count()", + "type": "function" + } + }, + "references": [ + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX0", + "d0a8f0be-bff5-4156-b797-4ce54c84c2adX1" + ], + "scale": "ratio" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "d0a8f0be-bff5-4156-b797-4ce54c84c2ad", + "layerId": "7f107c7d-34fd-481a-b6ac-6e0037488d00", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsMetric" + }, + "enhancements": {}, + "hidePanelTitles": true + }, + "gridData": { + "h": 12, + "i": "eaf7f094-92f3-46ca-84eb-ef2126f220bd", + "w": 24, + "x": 0, + "y": 5 + }, + "panelIndex": "eaf7f094-92f3-46ca-84eb-ef2126f220bd", + "title": "Percentage of user initiated logout [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-f3cc3792-a28a-4847-bd7d-bf08156d7def", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "f3cc3792-a28a-4847-bd7d-bf08156d7def": { + "columnOrder": [ + "3134a608-006c-4bfc-b42c-0c1ad3c4315f", + "8e4f70e3-db21-4183-bd70-b1b56fe816b4" + ], + "columns": { + "3134a608-006c-4bfc-b42c-0c1ad3c4315f": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 5 values of salesforce.logout.session.level", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "8e4f70e3-db21-4183-bd70-b1b56fe816b4", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 5 + }, + "scale": "ordinal", + "sourceField": "salesforce.logout.session.level" + }, + "8e4f70e3-db21-4183-bd70-b1b56fe816b4": { + "dataType": "number", + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "groups": [ + "3134a608-006c-4bfc-b42c-0c1ad3c4315f" + ], + "layerId": "f3cc3792-a28a-4847-bd7d-bf08156d7def", + "layerType": "data", + "legendDisplay": "default", + "metric": "8e4f70e3-db21-4183-bd70-b1b56fe816b4", + "nestedLegend": false, + "numberDisplay": "percent" + } + ], + "shape": "pie" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsPie" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 12, + "i": "698cb161-2847-4fe2-b8b0-29047d20472e", + "w": 24, + "x": 24, + "y": 5 + }, + "panelIndex": "698cb161-2847-4fe2-b8b0-29047d20472e", + "title": "Session levels used while logging out [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-07bd6025-fb9b-4980-94b7-4be1f9948220", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "07bd6025-fb9b-4980-94b7-4be1f9948220": { + "columnOrder": [ + "265a7158-90ba-4ba7-acb6-e8c1f700dd2c", + "3fe1c36a-768e-43c0-93fe-77fc2465f19a" + ], + "columns": { + "265a7158-90ba-4ba7-acb6-e8c1f700dd2c": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "3fe1c36a-768e-43c0-93fe-77fc2465f19a": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "3fe1c36a-768e-43c0-93fe-77fc2465f19a" + ], + "layerId": "07bd6025-fb9b-4980-94b7-4be1f9948220", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "265a7158-90ba-4ba7-acb6-e8c1f700dd2c" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 12, + "i": "9f2a2ef4-ba17-4d76-8a0a-76517f1c0936", + "w": 48, + "x": 0, + "y": 17 + }, + "panelIndex": "9f2a2ef4-ba17-4d76-8a0a-76517f1c0936", + "title": "Logout over time [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-aed1858a-a560-41f8-a5ca-58e917d3f0f6", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "aed1858a-a560-41f8-a5ca-58e917d3f0f6": { + "columnOrder": [ + "0d1ba1cc-f436-4f99-bab4-80da94ab8377", + "e3f18ea3-e3c9-4dcb-8617-0998a34460a2" + ], + "columns": { + "0d1ba1cc-f436-4f99-bab4-80da94ab8377": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 5 values of salesforce.logout.session.type", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "e3f18ea3-e3c9-4dcb-8617-0998a34460a2", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 5 + }, + "scale": "ordinal", + "sourceField": "salesforce.logout.session.type" + }, + "e3f18ea3-e3c9-4dcb-8617-0998a34460a2": { + "dataType": "number", + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "groups": [ + "0d1ba1cc-f436-4f99-bab4-80da94ab8377" + ], + "layerId": "aed1858a-a560-41f8-a5ca-58e917d3f0f6", + "layerType": "data", + "legendDisplay": "default", + "metric": "e3f18ea3-e3c9-4dcb-8617-0998a34460a2", + "nestedLegend": false, + "numberDisplay": "percent" + } + ], + "shape": "treemap" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsPie" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "ff455525-355f-49cd-a503-159a03ada387", + "w": 24, + "x": 0, + "y": 29 + }, + "panelIndex": "ff455525-355f-49cd-a503-159a03ada387", + "title": "Distribution of session types [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-6cd4c92e-cef0-46cf-937a-5123ddc95e7b", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "6cd4c92e-cef0-46cf-937a-5123ddc95e7b": { + "columnOrder": [ + "26b08e8c-5391-4f11-9955-c414ba872de8", + "63d839ef-dad8-43bf-b6e3-4f162e8354ce" + ], + "columns": { + "26b08e8c-5391-4f11-9955-c414ba872de8": { + "customLabel": true, + "dataType": "ip", + "isBucketed": true, + "label": "IP Addresses", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "63d839ef-dad8-43bf-b6e3-4f162e8354ce", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "source.ip" + }, + "63d839ef-dad8-43bf-b6e3-4f162e8354ce": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Request count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "63d839ef-dad8-43bf-b6e3-4f162e8354ce" + ], + "layerId": "6cd4c92e-cef0-46cf-937a-5123ddc95e7b", + "layerType": "data", + "position": "top", + "seriesType": "bar_horizontal", + "showGridlines": false, + "xAccessor": "26b08e8c-5391-4f11-9955-c414ba872de8" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_horizontal", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "69095005-0182-4363-b606-263449739e20", + "w": 24, + "x": 24, + "y": 29 + }, + "panelIndex": "69095005-0182-4363-b606-263449739e20", + "title": "Top 10 IP addresses by Logout request count [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "enhancements": {}, + "hiddenLayers": [], + "hidePanelTitles": false, + "isLayerTOCOpen": true, + "mapBuffer": { + "maxLat": 85.05113, + "maxLon": 270, + "minLat": -66.51326, + "minLon": -270 + }, + "mapCenter": { + "lat": 24.87922, + "lon": -0.42602, + "zoom": 1.77 + }, + "openTOCDetails": [] + }, + "gridData": { + "h": 25, + "i": "6e4e4f8a-da6a-482e-81a6-ae3a26ad10ef", + "w": 48, + "x": 0, + "y": 44 + }, + "panelIndex": "6e4e4f8a-da6a-482e-81a6-ae3a26ad10ef", + "panelRefName": "panel_6e4e4f8a-da6a-482e-81a6-ae3a26ad10ef", + "title": "Logout activity by region [Filebeat Salesforce]", + "type": "map", + "version": "7.15.0" + } + ], + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "now-7d/d", + "timeRestore": true, + "timeTo": "now", + "title": "[Filebeat Salesforce] Logout Dashboard", + "version": 1 + }, + "coreMigrationVersion": "7.15.0", + "id": "243e40b0-f891-11ee-9088-0f36517484ce", + "migrationVersion": { + "dashboard": "7.15.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "e04d7dbe-82fb-438b-8097-594262a141ec:control_e04d7dbe-82fb-438b-8097-594262a141ec_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "eaf7f094-92f3-46ca-84eb-ef2126f220bd:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "eaf7f094-92f3-46ca-84eb-ef2126f220bd:indexpattern-datasource-layer-7f107c7d-34fd-481a-b6ac-6e0037488d00", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "698cb161-2847-4fe2-b8b0-29047d20472e:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "698cb161-2847-4fe2-b8b0-29047d20472e:indexpattern-datasource-layer-f3cc3792-a28a-4847-bd7d-bf08156d7def", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "9f2a2ef4-ba17-4d76-8a0a-76517f1c0936:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "9f2a2ef4-ba17-4d76-8a0a-76517f1c0936:indexpattern-datasource-layer-07bd6025-fb9b-4980-94b7-4be1f9948220", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "ff455525-355f-49cd-a503-159a03ada387:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "ff455525-355f-49cd-a503-159a03ada387:indexpattern-datasource-layer-aed1858a-a560-41f8-a5ca-58e917d3f0f6", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "69095005-0182-4363-b606-263449739e20:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "69095005-0182-4363-b606-263449739e20:indexpattern-datasource-layer-6cd4c92e-cef0-46cf-937a-5123ddc95e7b", + "type": "index-pattern" + }, + { + "id": "15bcb8a0-f891-11ee-9088-0f36517484ce", + "name": "6e4e4f8a-da6a-482e-81a6-ae3a26ad10ef:panel_6e4e4f8a-da6a-482e-81a6-ae3a26ad10ef", + "type": "map" + } + ], + "type": "dashboard", + "updated_at": "2024-04-12T11:40:07.036Z", + "version": "WzExMzc5LDFd" +} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/6e6bee90-f7e6-11ee-9088-0f36517484ce.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/6e6bee90-f7e6-11ee-9088-0f36517484ce.json new file mode 100644 index 00000000000..8e7ef6c831b --- /dev/null +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/6e6bee90-f7e6-11ee-9088-0f36517484ce.json @@ -0,0 +1,1770 @@ +{ + "attributes": { + "description": "Salesforce Apex Data", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "event.dataset", + "negate": false, + "params": { + "query": "salesforce.apex" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "salesforce.apex" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "syncColors": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "enhancements": {}, + "hidePanelTitles": true, + "savedVis": { + "data": { + "aggs": [], + "searchSource": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "description": "", + "params": { + "controls": [ + { + "fieldName": "salesforce.instance_url", + "id": "1712824865887", + "indexPatternRefName": "control_2e30f60b-d451-4b0d-89eb-6ba01e94c2aa_0_index_pattern", + "label": "Instance URL", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + } + ], + "pinFilters": false, + "updateFiltersOnChange": false, + "useTimeFilter": false + }, + "title": "", + "type": "input_control_vis", + "uiState": {} + } + }, + "gridData": { + "h": 5, + "i": "2e30f60b-d451-4b0d-89eb-6ba01e94c2aa", + "w": 48, + "x": 0, + "y": 0 + }, + "panelIndex": "2e30f60b-d451-4b0d-89eb-6ba01e94c2aa", + "type": "visualization", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-f7a3c405-487c-4473-aeb5-c6f5e63de3db", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-1", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "f7a3c405-487c-4473-aeb5-c6f5e63de3db": { + "columnOrder": [ + "c8b7de64-e628-4200-8520-1699a69f49af" + ], + "columns": { + "c8b7de64-e628-4200-8520-1699a69f49af": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Calls against the organization limit", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "salesforce.apex.is_long_running_request", + "negate": true, + "params": { + "query": "0" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "salesforce.apex.is_long_running_request": "0" + } + } + }, + { + "$state": { + "store": "appState" + }, + "exists": { + "field": "salesforce.apex.is_long_running_request" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-1", + "key": "salesforce.apex.is_long_running_request", + "negate": false, + "type": "exists" + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "c8b7de64-e628-4200-8520-1699a69f49af", + "layerId": "f7a3c405-487c-4473-aeb5-c6f5e63de3db", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsMetric" + }, + "enhancements": {}, + "hidePanelTitles": true + }, + "gridData": { + "h": 15, + "i": "7decef13-13b6-4eb2-bb2b-cd657951e930", + "w": 14, + "x": 0, + "y": 5 + }, + "panelIndex": "7decef13-13b6-4eb2-bb2b-cd657951e930", + "title": "Calls against the organization limit [Filebeat Salesforce]]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-83c3e25a-134f-43bf-bca7-cd3c3d33eff3", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "83c3e25a-134f-43bf-bca7-cd3c3d33eff3": { + "columnOrder": [ + "c55333c9-aa79-4829-8e41-34029ca8e56a", + "099c35b2-0b10-4026-8883-274a3bd24c10" + ], + "columns": { + "099c35b2-0b10-4026-8883-274a3bd24c10": { + "dataType": "number", + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "c55333c9-aa79-4829-8e41-34029ca8e56a": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 5 values of event.outcome", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "099c35b2-0b10-4026-8883-274a3bd24c10", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 5 + }, + "scale": "ordinal", + "sourceField": "event.outcome" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "groups": [ + "c55333c9-aa79-4829-8e41-34029ca8e56a" + ], + "layerId": "83c3e25a-134f-43bf-bca7-cd3c3d33eff3", + "layerType": "data", + "legendDisplay": "default", + "metric": "099c35b2-0b10-4026-8883-274a3bd24c10", + "nestedLegend": false, + "numberDisplay": "percent" + } + ], + "shape": "pie" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsPie" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "7154e44a-c51d-4881-8d23-6d822a0bd77d", + "w": 17, + "x": 14, + "y": 5 + }, + "panelIndex": "7154e44a-c51d-4881-8d23-6d822a0bd77d", + "title": "Distribution of request status [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-23547c7a-8041-4b0a-856d-ffc03d80fbc0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "23547c7a-8041-4b0a-856d-ffc03d80fbc0": { + "columnOrder": [ + "55861941-7ec4-480b-800a-bae54e679ceb", + "ffcee30c-ac14-49a3-a634-04205ecc7788" + ], + "columns": { + "55861941-7ec4-480b-800a-bae54e679ceb": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Apex media type", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "ffcee30c-ac14-49a3-a634-04205ecc7788", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.apex.media_type" + }, + "ffcee30c-ac14-49a3-a634-04205ecc7788": { + "dataType": "number", + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "groups": [ + "55861941-7ec4-480b-800a-bae54e679ceb" + ], + "layerId": "23547c7a-8041-4b0a-856d-ffc03d80fbc0", + "layerType": "data", + "legendDisplay": "default", + "metric": "ffcee30c-ac14-49a3-a634-04205ecc7788", + "nestedLegend": false, + "numberDisplay": "percent" + } + ], + "shape": "pie" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsPie" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "73688f67-7274-4172-bc72-81581d1b1dc2", + "w": 17, + "x": 31, + "y": 5 + }, + "panelIndex": "73688f67-7274-4172-bc72-81581d1b1dc2", + "title": "Responses by media type [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-2ea8d938-401b-4b61-92c4-c476e7d3e4bc", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "2ea8d938-401b-4b61-92c4-c476e7d3e4bc": { + "columnOrder": [ + "5ca49fa3-e0db-4c3f-9116-b0cdba13b3fb", + "d665ca71-d578-4fc0-a7eb-b6c4ea8b31d9", + "69ea92d8-1db1-4dd6-b01f-8ed3937c9ab8" + ], + "columns": { + "5ca49fa3-e0db-4c3f-9116-b0cdba13b3fb": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of salesforce.apex.trigger_name", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "69ea92d8-1db1-4dd6-b01f-8ed3937c9ab8", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.apex.trigger_name" + }, + "69ea92d8-1db1-4dd6-b01f-8ed3937c9ab8": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Apex Trigger", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "d665ca71-d578-4fc0-a7eb-b6c4ea8b31d9": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "69ea92d8-1db1-4dd6-b01f-8ed3937c9ab8" + ], + "layerId": "2ea8d938-401b-4b61-92c4-c476e7d3e4bc", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "splitAccessor": "5ca49fa3-e0db-4c3f-9116-b0cdba13b3fb", + "xAccessor": "d665ca71-d578-4fc0-a7eb-b6c4ea8b31d9" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "be541fae-8b1f-40e5-9fcc-e552b3544773", + "w": 48, + "x": 0, + "y": 20 + }, + "panelIndex": "be541fae-8b1f-40e5-9fcc-e552b3544773", + "title": "Top 10 apex triggers over time [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-395b6aa2-d6cd-406e-9559-a0ed2b833854", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-dbfc2649-500a-4d9e-8035-f2094fc75c86", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "395b6aa2-d6cd-406e-9559-a0ed2b833854": { + "columnOrder": [ + "7d694982-04a5-4e47-9aa9-eea47b40f505", + "7ac0b6dc-60e0-46b8-81f9-519459e354b3" + ], + "columns": { + "7ac0b6dc-60e0-46b8-81f9-519459e354b3": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Average run time", + "operationType": "average", + "scale": "ratio", + "sourceField": "salesforce.apex.run_time" + }, + "7d694982-04a5-4e47-9aa9-eea47b40f505": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "incompleteColumns": {} + }, + "dbfc2649-500a-4d9e-8035-f2094fc75c86": { + "columnOrder": [ + "ba09599b-cc6f-420b-bd27-e9126e585c0f", + "f6bac9bb-7015-41d6-8c02-ffede3aeba7e" + ], + "columns": { + "ba09599b-cc6f-420b-bd27-e9126e585c0f": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "f6bac9bb-7015-41d6-8c02-ffede3aeba7e": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Request count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "exists": { + "field": "salesforce.apex.run_time" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "salesforce.apex.run_time", + "negate": false, + "type": "exists" + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "fittingFunction": "None", + "gridlinesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "labelsOrientation": { + "x": 0, + "yLeft": 0, + "yRight": 0 + }, + "layers": [ + { + "accessors": [ + "f6bac9bb-7015-41d6-8c02-ffede3aeba7e" + ], + "layerId": "dbfc2649-500a-4d9e-8035-f2094fc75c86", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "xAccessor": "ba09599b-cc6f-420b-bd27-e9126e585c0f", + "yConfig": [ + { + "color": "#00e499", + "forAccessor": "f6bac9bb-7015-41d6-8c02-ffede3aeba7e" + } + ] + }, + { + "accessors": [ + "7ac0b6dc-60e0-46b8-81f9-519459e354b3" + ], + "layerId": "395b6aa2-d6cd-406e-9559-a0ed2b833854", + "layerType": "data", + "seriesType": "line", + "xAccessor": "7d694982-04a5-4e47-9aa9-eea47b40f505", + "yConfig": [ + { + "color": "#ff3a66", + "forAccessor": "7ac0b6dc-60e0-46b8-81f9-519459e354b3" + } + ] + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "tickLabelsVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 16, + "i": "fe66cbe2-e564-49ae-a724-6440517ceb3b", + "w": 48, + "x": 0, + "y": 35 + }, + "panelIndex": "fe66cbe2-e564-49ae-a724-6440517ceb3b", + "title": "Apex performance over time [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-f73f968b-392e-4f0e-8c9b-351ad7370ddd", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "f73f968b-392e-4f0e-8c9b-351ad7370ddd": { + "columnOrder": [ + "e50a7586-31dd-47bd-8b42-2a02dd27aec9", + "148d81bd-6204-41a1-99d7-26580ab2a3e7" + ], + "columns": { + "148d81bd-6204-41a1-99d7-26580ab2a3e7": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "SOQL queries", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "e50a7586-31dd-47bd-8b42-2a02dd27aec9": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Entry point", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "148d81bd-6204-41a1-99d7-26580ab2a3e7", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.apex.entry_point" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "apex-execution" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "apex-execution" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "148d81bd-6204-41a1-99d7-26580ab2a3e7" + ], + "layerId": "f73f968b-392e-4f0e-8c9b-351ad7370ddd", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "xAccessor": "e50a7586-31dd-47bd-8b42-2a02dd27aec9" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 16, + "i": "574ede56-2b30-49a5-8888-8ae368c856af", + "w": 48, + "x": 0, + "y": 51 + }, + "panelIndex": "574ede56-2b30-49a5-8888-8ae368c856af", + "title": "Top 10 SOQL queries per entry point [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-b53e356e-52be-419c-bf3d-282ec655706d", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "b53e356e-52be-419c-bf3d-282ec655706d": { + "columnOrder": [ + "86ab6d3f-99be-44a8-9050-1a79992a7948", + "f3682f79-73a9-4bd4-aff4-d1be1c81f7dd", + "c231ae4b-9cb7-4bc1-96f2-06870e504081" + ], + "columns": { + "86ab6d3f-99be-44a8-9050-1a79992a7948": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of salesforce.apex.trigger_type", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "c231ae4b-9cb7-4bc1-96f2-06870e504081", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.apex.trigger_type" + }, + "c231ae4b-9cb7-4bc1-96f2-06870e504081": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Trigger count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "f3682f79-73a9-4bd4-aff4-d1be1c81f7dd": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "c231ae4b-9cb7-4bc1-96f2-06870e504081" + ], + "layerId": "b53e356e-52be-419c-bf3d-282ec655706d", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "splitAccessor": "86ab6d3f-99be-44a8-9050-1a79992a7948", + "xAccessor": "f3682f79-73a9-4bd4-aff4-d1be1c81f7dd" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "f8ecb623-ff3c-4422-9f91-2676fe2e58e0", + "w": 24, + "x": 0, + "y": 67 + }, + "panelIndex": "f8ecb623-ff3c-4422-9f91-2676fe2e58e0", + "title": "Trigger trends over time [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-b2559ffe-87f5-4f0e-a041-671ae182cad2", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "b2559ffe-87f5-4f0e-a041-671ae182cad2": { + "columnOrder": [ + "b3a46082-815b-44d5-a8ab-77b1f4aa3e39", + "bf492b8e-efdf-423a-a3c2-33b59eee9cc2" + ], + "columns": { + "b3a46082-815b-44d5-a8ab-77b1f4aa3e39": { + "dataType": "string", + "isBucketed": true, + "label": "Filters", + "operationType": "filters", + "params": { + "filters": [ + { + "input": { + "language": "kuery", + "query": "salesforce.apex.trigger_type : *Update*" + }, + "label": "Updates" + }, + { + "input": { + "language": "kuery", + "query": "salesforce.apex.trigger_type : *Insert*" + }, + "label": "Inserts" + }, + { + "input": { + "language": "kuery", + "query": "salesforce.apex.trigger_type : *Delete*" + }, + "label": "Deletes" + } + ] + }, + "scale": "ordinal" + }, + "bf492b8e-efdf-423a-a3c2-33b59eee9cc2": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Trigger count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "fittingFunction": "None", + "gridlinesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "labelsOrientation": { + "x": 0, + "yLeft": 0, + "yRight": 0 + }, + "layers": [ + { + "accessors": [ + "bf492b8e-efdf-423a-a3c2-33b59eee9cc2" + ], + "layerId": "b2559ffe-87f5-4f0e-a041-671ae182cad2", + "layerType": "data", + "position": "top", + "seriesType": "bar_horizontal", + "showGridlines": false, + "xAccessor": "b3a46082-815b-44d5-a8ab-77b1f4aa3e39" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_horizontal", + "tickLabelsVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "valueLabels": "hide", + "xTitle": "Trigger type", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "c713f492-059e-48c9-bddb-bfa5dff4379a", + "w": 24, + "x": 24, + "y": 67 + }, + "panelIndex": "c713f492-059e-48c9-bddb-bfa5dff4379a", + "title": "Number of triggers by type [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-f2b00fda-234b-44d4-9ce5-7cd8c28efce3", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "f2b00fda-234b-44d4-9ce5-7cd8c28efce3": { + "columnOrder": [ + "844908c9-57a6-4468-b7bd-d7261afdc379", + "c20cc0fc-5742-405c-86e9-f535058df2b2" + ], + "columns": { + "844908c9-57a6-4468-b7bd-d7261afdc379": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "User type", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "c20cc0fc-5742-405c-86e9-f535058df2b2", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "user.roles" + }, + "c20cc0fc-5742-405c-86e9-f535058df2b2": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Requests count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "c20cc0fc-5742-405c-86e9-f535058df2b2" + ], + "layerId": "f2b00fda-234b-44d4-9ce5-7cd8c28efce3", + "layerType": "data", + "position": "top", + "seriesType": "bar", + "showGridlines": false, + "xAccessor": "844908c9-57a6-4468-b7bd-d7261afdc379" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "9d4bd40c-a3b5-4668-a58a-118e352c3ad2", + "w": 24, + "x": 0, + "y": 82 + }, + "panelIndex": "9d4bd40c-a3b5-4668-a58a-118e352c3ad2", + "title": "Requests per user type [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-7b43a22c-ad61-444d-a002-8cc4116b4854", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "7b43a22c-ad61-444d-a002-8cc4116b4854": { + "columnOrder": [ + "6619dbcd-313a-4a14-8991-8f4110656b5d", + "829d388d-4c2b-4e04-a26b-1a1ac2bdb434" + ], + "columns": { + "6619dbcd-313a-4a14-8991-8f4110656b5d": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "User agent", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "829d388d-4c2b-4e04-a26b-1a1ac2bdb434", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.apex.user_agent" + }, + "829d388d-4c2b-4e04-a26b-1a1ac2bdb434": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Response count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "829d388d-4c2b-4e04-a26b-1a1ac2bdb434" + ], + "layerId": "7b43a22c-ad61-444d-a002-8cc4116b4854", + "layerType": "data", + "position": "top", + "seriesType": "bar", + "showGridlines": false, + "xAccessor": "6619dbcd-313a-4a14-8991-8f4110656b5d" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "f26b8459-e1af-4cee-92ac-9e91348c2c16", + "w": 24, + "x": 24, + "y": 82 + }, + "panelIndex": "f26b8459-e1af-4cee-92ac-9e91348c2c16", + "title": "Responses per user agent [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-92994644-eb5e-41a8-871b-b0911dcbf481", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "92994644-eb5e-41a8-871b-b0911dcbf481": { + "columnOrder": [ + "04755ce2-d91a-4fe9-8384-3247ccdb2980", + "5ba3835a-9391-4298-8cc6-3c6fa0678e5b", + "452aad19-1d09-4cc3-9e86-b6a84a6d0b6c" + ], + "columns": { + "04755ce2-d91a-4fe9-8384-3247ccdb2980": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Entity name", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "452aad19-1d09-4cc3-9e86-b6a84a6d0b6c", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.apex.entity_name" + }, + "452aad19-1d09-4cc3-9e86-b6a84a6d0b6c": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Apex trigger name", + "operationType": "unique_count", + "scale": "ratio", + "sourceField": "salesforce.apex.trigger_name" + }, + "5ba3835a-9391-4298-8cc6-3c6fa0678e5b": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "452aad19-1d09-4cc3-9e86-b6a84a6d0b6c" + ], + "layerId": "92994644-eb5e-41a8-871b-b0911dcbf481", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "splitAccessor": "04755ce2-d91a-4fe9-8384-3247ccdb2980", + "xAccessor": "5ba3835a-9391-4298-8cc6-3c6fa0678e5b" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "cc5bf3a1-5a33-4204-8efc-32b2b1629e63", + "w": 24, + "x": 0, + "y": 97 + }, + "panelIndex": "cc5bf3a1-5a33-4204-8efc-32b2b1629e63", + "title": "Triggers by entity categorization [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-84a0be7e-5127-485b-9ce2-9a9ba033a74c", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "84a0be7e-5127-485b-9ce2-9a9ba033a74c": { + "columnOrder": [ + "4282f56c-5d7a-49e2-aa89-8533831afb6b", + "270e21c6-f213-4df6-bbcc-a4735f99028d" + ], + "columns": { + "270e21c6-f213-4df6-bbcc-a4735f99028d": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Request count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "4282f56c-5d7a-49e2-aa89-8533831afb6b": { + "dataType": "string", + "isBucketed": true, + "label": "Top values of salesforce.apex.entry_point", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "270e21c6-f213-4df6-bbcc-a4735f99028d", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 5 + }, + "scale": "ordinal", + "sourceField": "salesforce.apex.entry_point" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "columns": [ + { + "columnId": "4282f56c-5d7a-49e2-aa89-8533831afb6b" + }, + { + "columnId": "270e21c6-f213-4df6-bbcc-a4735f99028d", + "isTransposed": false + } + ], + "layerId": "84a0be7e-5127-485b-9ce2-9a9ba033a74c", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsDatatable" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "5904bcb3-1616-422d-855e-a86e6a69f802", + "w": 24, + "x": 24, + "y": 97 + }, + "panelIndex": "5904bcb3-1616-422d-855e-a86e6a69f802", + "title": "Top 10 entry points by request count [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + } + ], + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "now-7d/d", + "timeRestore": true, + "timeTo": "now", + "title": "[Filebeat Salesforce] Apex Dashboard", + "version": 1 + }, + "coreMigrationVersion": "7.15.0", + "id": "6e6bee90-f7e6-11ee-9088-0f36517484ce", + "migrationVersion": { + "dashboard": "7.15.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "2e30f60b-d451-4b0d-89eb-6ba01e94c2aa:control_2e30f60b-d451-4b0d-89eb-6ba01e94c2aa_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "7decef13-13b6-4eb2-bb2b-cd657951e930:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "7decef13-13b6-4eb2-bb2b-cd657951e930:indexpattern-datasource-layer-f7a3c405-487c-4473-aeb5-c6f5e63de3db", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "7decef13-13b6-4eb2-bb2b-cd657951e930:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "7decef13-13b6-4eb2-bb2b-cd657951e930:filter-index-pattern-1", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "7154e44a-c51d-4881-8d23-6d822a0bd77d:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "7154e44a-c51d-4881-8d23-6d822a0bd77d:indexpattern-datasource-layer-83c3e25a-134f-43bf-bca7-cd3c3d33eff3", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "73688f67-7274-4172-bc72-81581d1b1dc2:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "73688f67-7274-4172-bc72-81581d1b1dc2:indexpattern-datasource-layer-23547c7a-8041-4b0a-856d-ffc03d80fbc0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "be541fae-8b1f-40e5-9fcc-e552b3544773:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "be541fae-8b1f-40e5-9fcc-e552b3544773:indexpattern-datasource-layer-2ea8d938-401b-4b61-92c4-c476e7d3e4bc", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "fe66cbe2-e564-49ae-a724-6440517ceb3b:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "fe66cbe2-e564-49ae-a724-6440517ceb3b:indexpattern-datasource-layer-395b6aa2-d6cd-406e-9559-a0ed2b833854", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "fe66cbe2-e564-49ae-a724-6440517ceb3b:indexpattern-datasource-layer-dbfc2649-500a-4d9e-8035-f2094fc75c86", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "fe66cbe2-e564-49ae-a724-6440517ceb3b:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "574ede56-2b30-49a5-8888-8ae368c856af:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "574ede56-2b30-49a5-8888-8ae368c856af:indexpattern-datasource-layer-f73f968b-392e-4f0e-8c9b-351ad7370ddd", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "574ede56-2b30-49a5-8888-8ae368c856af:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "f8ecb623-ff3c-4422-9f91-2676fe2e58e0:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "f8ecb623-ff3c-4422-9f91-2676fe2e58e0:indexpattern-datasource-layer-b53e356e-52be-419c-bf3d-282ec655706d", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "c713f492-059e-48c9-bddb-bfa5dff4379a:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "c713f492-059e-48c9-bddb-bfa5dff4379a:indexpattern-datasource-layer-b2559ffe-87f5-4f0e-a041-671ae182cad2", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "9d4bd40c-a3b5-4668-a58a-118e352c3ad2:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "9d4bd40c-a3b5-4668-a58a-118e352c3ad2:indexpattern-datasource-layer-f2b00fda-234b-44d4-9ce5-7cd8c28efce3", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "f26b8459-e1af-4cee-92ac-9e91348c2c16:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "f26b8459-e1af-4cee-92ac-9e91348c2c16:indexpattern-datasource-layer-7b43a22c-ad61-444d-a002-8cc4116b4854", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "cc5bf3a1-5a33-4204-8efc-32b2b1629e63:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "cc5bf3a1-5a33-4204-8efc-32b2b1629e63:indexpattern-datasource-layer-92994644-eb5e-41a8-871b-b0911dcbf481", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "5904bcb3-1616-422d-855e-a86e6a69f802:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "5904bcb3-1616-422d-855e-a86e6a69f802:indexpattern-datasource-layer-84a0be7e-5127-485b-9ce2-9a9ba033a74c", + "type": "index-pattern" + } + ], + "type": "dashboard", + "updated_at": "2024-04-12T11:46:15.739Z", + "version": "WzExODE1LDFd" +} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/c66be450-f891-11ee-9088-0f36517484ce.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/c66be450-f891-11ee-9088-0f36517484ce.json new file mode 100644 index 00000000000..f373c866471 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/c66be450-f891-11ee-9088-0f36517484ce.json @@ -0,0 +1,548 @@ +{ + "attributes": { + "description": "Salesforce SetupAuditTrail Data", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "event.dataset", + "negate": false, + "params": { + "query": "salesforce.setupaudittrail" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "salesforce.setupaudittrail" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "syncColors": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "enhancements": {}, + "hidePanelTitles": true, + "savedVis": { + "data": { + "aggs": [], + "searchSource": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "description": "", + "params": { + "controls": [ + { + "fieldName": "salesforce.instance_url", + "id": "1712901482300", + "indexPatternRefName": "control_198189b3-48f3-4fc4-ae69-5ac5ee520d24_0_index_pattern", + "label": "Instance URL", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + } + ], + "pinFilters": false, + "updateFiltersOnChange": false, + "useTimeFilter": false + }, + "title": "", + "type": "input_control_vis", + "uiState": {} + } + }, + "gridData": { + "h": 5, + "i": "198189b3-48f3-4fc4-ae69-5ac5ee520d24", + "w": 48, + "x": 0, + "y": 0 + }, + "panelIndex": "198189b3-48f3-4fc4-ae69-5ac5ee520d24", + "type": "visualization", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-5ca48d62-7341-48b7-a2c0-5f2410c2d045", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "5ca48d62-7341-48b7-a2c0-5f2410c2d045": { + "columnOrder": [ + "81a88837-0d15-4349-8e0f-d75ba72a95bc", + "57312742-f268-4f68-bdd9-40461aeb51ec", + "06369992-979e-421a-928b-03d026695908" + ], + "columns": { + "06369992-979e-421a-928b-03d026695908": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Request count", + "operationType": "unique_count", + "scale": "ratio", + "sourceField": "@timestamp" + }, + "57312742-f268-4f68-bdd9-40461aeb51ec": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of salesforce.setup_audit_trail.delegate_user", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "06369992-979e-421a-928b-03d026695908", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.setup_audit_trail.delegate_user" + }, + "81a88837-0d15-4349-8e0f-d75ba72a95bc": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Actions", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "06369992-979e-421a-928b-03d026695908", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "event.action" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "06369992-979e-421a-928b-03d026695908" + ], + "layerId": "5ca48d62-7341-48b7-a2c0-5f2410c2d045", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "splitAccessor": "57312742-f268-4f68-bdd9-40461aeb51ec", + "xAccessor": "81a88837-0d15-4349-8e0f-d75ba72a95bc" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "fc8067aa-c39c-4547-adfb-b618b9cbe4e8", + "w": 24, + "x": 0, + "y": 5 + }, + "panelIndex": "fc8067aa-c39c-4547-adfb-b618b9cbe4e8", + "title": "Top 10 actions performed by delegated users [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-72ce303a-9d98-4bab-856e-a67eb8605bfb", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "72ce303a-9d98-4bab-856e-a67eb8605bfb": { + "columnOrder": [ + "46424fdd-77b9-4f4b-bd63-beda1a1fafe4", + "184aa36c-5bf5-4d94-8c2d-7199a208d5f9" + ], + "columns": { + "184aa36c-5bf5-4d94-8c2d-7199a208d5f9": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Request count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "46424fdd-77b9-4f4b-bd63-beda1a1fafe4": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Sections affected", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "184aa36c-5bf5-4d94-8c2d-7199a208d5f9", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.setup_audit_trail.section" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "184aa36c-5bf5-4d94-8c2d-7199a208d5f9" + ], + "layerId": "72ce303a-9d98-4bab-856e-a67eb8605bfb", + "layerType": "data", + "position": "top", + "seriesType": "bar", + "showGridlines": false, + "xAccessor": "46424fdd-77b9-4f4b-bd63-beda1a1fafe4" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "6d50ae65-0cff-4b59-b347-ee6ea82d637e", + "w": 24, + "x": 24, + "y": 5 + }, + "panelIndex": "6d50ae65-0cff-4b59-b347-ee6ea82d637e", + "title": "Top 10 sections affected [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-3ac7ca64-bfb5-471c-8a8a-2cb5837ee004", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "3ac7ca64-bfb5-471c-8a8a-2cb5837ee004": { + "columnOrder": [ + "b3792010-1e80-401f-a6fc-54cbedf9720a", + "9056c574-d371-4c77-9f6b-04326402c8d1", + "a547e7f8-6d39-4b6a-a4fe-329c901d368c" + ], + "columns": { + "9056c574-d371-4c77-9f6b-04326402c8d1": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "a547e7f8-6d39-4b6a-a4fe-329c901d368c": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Actions", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "b3792010-1e80-401f-a6fc-54cbedf9720a": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of event.action", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "a547e7f8-6d39-4b6a-a4fe-329c901d368c", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "event.action" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "a547e7f8-6d39-4b6a-a4fe-329c901d368c" + ], + "layerId": "3ac7ca64-bfb5-471c-8a8a-2cb5837ee004", + "layerType": "data", + "position": "top", + "seriesType": "bar_stacked", + "showGridlines": false, + "splitAccessor": "b3792010-1e80-401f-a6fc-54cbedf9720a", + "xAccessor": "9056c574-d371-4c77-9f6b-04326402c8d1" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_stacked", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "33acb8b4-5e5c-4ba2-8089-2554aaff7f23", + "w": 48, + "x": 0, + "y": 20 + }, + "panelIndex": "33acb8b4-5e5c-4ba2-8089-2554aaff7f23", + "title": "Top 10 actions over time [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "enhancements": {} + }, + "gridData": { + "h": 19, + "i": "7c636e26-d3f1-4aa9-b263-683d6b75f2ab", + "w": 48, + "x": 0, + "y": 35 + }, + "panelIndex": "7c636e26-d3f1-4aa9-b263-683d6b75f2ab", + "panelRefName": "panel_7c636e26-d3f1-4aa9-b263-683d6b75f2ab", + "type": "search", + "version": "7.15.0" + } + ], + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "now-7d/d", + "timeRestore": true, + "timeTo": "now", + "title": "[Filebeat Salesforce] Setup Audit Trail Dashboard", + "version": 1 + }, + "coreMigrationVersion": "7.15.0", + "id": "c66be450-f891-11ee-9088-0f36517484ce", + "migrationVersion": { + "dashboard": "7.15.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "198189b3-48f3-4fc4-ae69-5ac5ee520d24:control_198189b3-48f3-4fc4-ae69-5ac5ee520d24_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "fc8067aa-c39c-4547-adfb-b618b9cbe4e8:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "fc8067aa-c39c-4547-adfb-b618b9cbe4e8:indexpattern-datasource-layer-5ca48d62-7341-48b7-a2c0-5f2410c2d045", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "6d50ae65-0cff-4b59-b347-ee6ea82d637e:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "6d50ae65-0cff-4b59-b347-ee6ea82d637e:indexpattern-datasource-layer-72ce303a-9d98-4bab-856e-a67eb8605bfb", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "33acb8b4-5e5c-4ba2-8089-2554aaff7f23:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "33acb8b4-5e5c-4ba2-8089-2554aaff7f23:indexpattern-datasource-layer-3ac7ca64-bfb5-471c-8a8a-2cb5837ee004", + "type": "index-pattern" + }, + { + "id": "3e7187a0-f894-11ee-9088-0f36517484ce", + "name": "7c636e26-d3f1-4aa9-b263-683d6b75f2ab:panel_7c636e26-d3f1-4aa9-b263-683d6b75f2ab", + "type": "search" + } + ], + "type": "dashboard", + "updated_at": "2024-04-12T11:38:19.817Z", + "version": "WzExMjcyLDFd" +} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/cb7b4a40-f7ff-11ee-9088-0f36517484ce.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/cb7b4a40-f7ff-11ee-9088-0f36517484ce.json new file mode 100644 index 00000000000..bd95b31e3a9 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/cb7b4a40-f7ff-11ee-9088-0f36517484ce.json @@ -0,0 +1,1552 @@ +{ + "attributes": { + "description": "Salesforce Login Data", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "event.dataset", + "negate": false, + "params": { + "query": "salesforce.login" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "salesforce.login" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "syncColors": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "enhancements": {}, + "hidePanelTitles": true, + "savedVis": { + "data": { + "aggs": [], + "searchSource": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "description": "", + "params": { + "controls": [ + { + "fieldName": "salesforce.instance_url", + "id": "1712835656630", + "indexPatternRefName": "control_9788dc28-4697-4ec7-8953-e70fabbdb620_0_index_pattern", + "label": "Instance URL", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + } + ], + "pinFilters": false, + "updateFiltersOnChange": false, + "useTimeFilter": false + }, + "title": "", + "type": "input_control_vis", + "uiState": {} + } + }, + "gridData": { + "h": 5, + "i": "9788dc28-4697-4ec7-8953-e70fabbdb620", + "w": 48, + "x": 0, + "y": 0 + }, + "panelIndex": "9788dc28-4697-4ec7-8953-e70fabbdb620", + "type": "visualization", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-e601c823-8f3a-4656-ad12-402588f0f425", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "e601c823-8f3a-4656-ad12-402588f0f425": { + "columnOrder": [ + "eda440c2-47d3-4779-a238-48cedf1e1dab", + "eda440c2-47d3-4779-a238-48cedf1e1dabX0", + "eda440c2-47d3-4779-a238-48cedf1e1dabX1", + "eda440c2-47d3-4779-a238-48cedf1e1dabX2" + ], + "columns": { + "eda440c2-47d3-4779-a238-48cedf1e1dab": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Login success rate", + "operationType": "formula", + "params": { + "format": { + "id": "percent", + "params": { + "decimals": 2 + } + }, + "formula": "(count(kql='event.outcome : \"success\"')/count())", + "isFormulaBroken": false + }, + "references": [ + "eda440c2-47d3-4779-a238-48cedf1e1dabX2" + ], + "scale": "ratio" + }, + "eda440c2-47d3-4779-a238-48cedf1e1dabX0": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.outcome : \"success\"" + }, + "isBucketed": false, + "label": "Part of Login success rate", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "eda440c2-47d3-4779-a238-48cedf1e1dabX1": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Part of Login success rate", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "eda440c2-47d3-4779-a238-48cedf1e1dabX2": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Part of Login success rate", + "operationType": "math", + "params": { + "tinymathAst": { + "args": [ + "eda440c2-47d3-4779-a238-48cedf1e1dabX0", + "eda440c2-47d3-4779-a238-48cedf1e1dabX1" + ], + "location": { + "max": 48, + "min": 0 + }, + "name": "divide", + "text": "(count(kql='event.outcome : \"success\"')/count())", + "type": "function" + } + }, + "references": [ + "eda440c2-47d3-4779-a238-48cedf1e1dabX0", + "eda440c2-47d3-4779-a238-48cedf1e1dabX1" + ], + "scale": "ratio" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "eda440c2-47d3-4779-a238-48cedf1e1dab", + "layerId": "e601c823-8f3a-4656-ad12-402588f0f425", + "layerType": "data" + } + }, + "title": "Login success rate [Filebeat Salesforce]", + "type": "lens", + "visualizationType": "lnsMetric" + }, + "enhancements": {}, + "hidePanelTitles": true + }, + "gridData": { + "h": 10, + "i": "ccd0f44d-f761-4a75-8fe1-f01955f30077", + "w": 24, + "x": 0, + "y": 5 + }, + "panelIndex": "ccd0f44d-f761-4a75-8fe1-f01955f30077", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-16d40659-3f98-477a-8c51-69ff60874d70", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-1", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "16d40659-3f98-477a-8c51-69ff60874d70": { + "columnOrder": [ + "5ef8874b-edac-4144-9d56-f3cdc02988ba", + "5ef8874b-edac-4144-9d56-f3cdc02988baX0" + ], + "columns": { + "5ef8874b-edac-4144-9d56-f3cdc02988ba": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Failed login attempts", + "operationType": "formula", + "params": { + "formula": "count()", + "isFormulaBroken": false + }, + "references": [ + "5ef8874b-edac-4144-9d56-f3cdc02988baX0" + ], + "scale": "ratio" + }, + "5ef8874b-edac-4144-9d56-f3cdc02988baX0": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Part of count()", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.outcome", + "negate": false, + "params": { + "query": "failure" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.outcome": "failure" + } + } + }, + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-1", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "accessor": "5ef8874b-edac-4144-9d56-f3cdc02988ba", + "layerId": "16d40659-3f98-477a-8c51-69ff60874d70", + "layerType": "data" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsMetric" + }, + "enhancements": {}, + "hidePanelTitles": true + }, + "gridData": { + "h": 10, + "i": "da637943-7e6d-41a2-a9db-2d0fedc58956", + "w": 24, + "x": 24, + "y": 5 + }, + "panelIndex": "da637943-7e6d-41a2-a9db-2d0fedc58956", + "title": "Failed login attempts [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-eb6954c3-d7f8-4561-953b-bb7a85328904", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "eb6954c3-d7f8-4561-953b-bb7a85328904": { + "columnOrder": [ + "633c1004-485f-4933-a814-4002992a1f8c", + "cac7726d-d7fc-4ab3-af4f-2d96c1fd5b17", + "543b37da-f2c5-49e2-b125-d877d7447c10" + ], + "columns": { + "543b37da-f2c5-49e2-b125-d877d7447c10": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.outcome : \"failure\"" + }, + "isBucketed": false, + "label": "Failure", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "633c1004-485f-4933-a814-4002992a1f8c": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "cac7726d-d7fc-4ab3-af4f-2d96c1fd5b17": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "event.outcome : \"success\"" + }, + "isBucketed": false, + "label": "Success", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "cac7726d-d7fc-4ab3-af4f-2d96c1fd5b17", + "543b37da-f2c5-49e2-b125-d877d7447c10" + ], + "layerId": "eb6954c3-d7f8-4561-953b-bb7a85328904", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "633c1004-485f-4933-a814-4002992a1f8c", + "yConfig": [ + { + "color": "#68bc00", + "forAccessor": "cac7726d-d7fc-4ab3-af4f-2d96c1fd5b17" + }, + { + "color": "#e7664c", + "forAccessor": "543b37da-f2c5-49e2-b125-d877d7447c10" + } + ] + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "71807bd3-d0ed-4328-93cc-6d9f3c93ea2c", + "w": 48, + "x": 0, + "y": 15 + }, + "panelIndex": "71807bd3-d0ed-4328-93cc-6d9f3c93ea2c", + "title": "Login over time [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-94dd5ffa-7be5-4655-b1a2-2556e9ad835b", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "94dd5ffa-7be5-4655-b1a2-2556e9ad835b": { + "columnOrder": [ + "5747b6b2-a7ee-4835-bbef-ef41299cf88a", + "5cef11ff-915a-46ed-b3b3-40d2111d429f" + ], + "columns": { + "5747b6b2-a7ee-4835-bbef-ef41299cf88a": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "5cef11ff-915a-46ed-b3b3-40d2111d429f": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Login Events", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "5cef11ff-915a-46ed-b3b3-40d2111d429f" + ], + "layerId": "94dd5ffa-7be5-4655-b1a2-2556e9ad835b", + "layerType": "data", + "position": "top", + "seriesType": "bar", + "showGridlines": false, + "xAccessor": "5747b6b2-a7ee-4835-bbef-ef41299cf88a" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "e988774b-2311-49ce-90d2-89c11abcdb07", + "w": 48, + "x": 0, + "y": 30 + }, + "panelIndex": "e988774b-2311-49ce-90d2-89c11abcdb07", + "title": "Total login events over time [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-77dc6ae7-66ae-4403-861c-86e10c2920b7", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "77dc6ae7-66ae-4403-861c-86e10c2920b7": { + "columnOrder": [ + "8912e35b-2fd5-493f-94bd-f8f6b5494819", + "f8b67a30-098a-4474-9b3e-8bbdc7fb223f" + ], + "columns": { + "8912e35b-2fd5-493f-94bd-f8f6b5494819": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of user.roles", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "f8b67a30-098a-4474-9b3e-8bbdc7fb223f", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "user.roles" + }, + "f8b67a30-098a-4474-9b3e-8bbdc7fb223f": { + "dataType": "number", + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "groups": [ + "8912e35b-2fd5-493f-94bd-f8f6b5494819" + ], + "layerId": "77dc6ae7-66ae-4403-861c-86e10c2920b7", + "layerType": "data", + "legendDisplay": "default", + "metric": "f8b67a30-098a-4474-9b3e-8bbdc7fb223f", + "nestedLegend": false, + "numberDisplay": "percent" + } + ], + "shape": "pie" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsPie" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "89cc0806-06c0-44ff-a439-302308134141", + "w": 24, + "x": 0, + "y": 45 + }, + "panelIndex": "89cc0806-06c0-44ff-a439-302308134141", + "title": "Distribution of type of users [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-0c41d5d1-1ecc-4583-bf02-f403fd062f57", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "0c41d5d1-1ecc-4583-bf02-f403fd062f57": { + "columnOrder": [ + "03378057-e779-4d5b-9529-bb74a6b69613", + "b328aa99-56ed-443d-aaa0-fcab852e9d2f" + ], + "columns": { + "03378057-e779-4d5b-9529-bb74a6b69613": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "User Agent", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "b328aa99-56ed-443d-aaa0-fcab852e9d2f", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 5 + }, + "scale": "ordinal", + "sourceField": "user_agent.name" + }, + "b328aa99-56ed-443d-aaa0-fcab852e9d2f": { + "dataType": "number", + "isBucketed": false, + "label": "Count of records", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "categoryDisplay": "default", + "groups": [ + "03378057-e779-4d5b-9529-bb74a6b69613" + ], + "layerId": "0c41d5d1-1ecc-4583-bf02-f403fd062f57", + "layerType": "data", + "legendDisplay": "default", + "metric": "b328aa99-56ed-443d-aaa0-fcab852e9d2f", + "nestedLegend": false, + "numberDisplay": "percent" + } + ], + "shape": "donut" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsPie" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "47159791-40d6-4728-a005-79ddba90c433", + "w": 24, + "x": 24, + "y": 45 + }, + "panelIndex": "47159791-40d6-4728-a005-79ddba90c433", + "title": "Activity by browser/client [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-e6917172-0cfc-45d0-8761-9d151ca8c6d8", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "e6917172-0cfc-45d0-8761-9d151ca8c6d8": { + "columnOrder": [ + "12c45419-8c36-42d5-a61f-0134974a7917", + "8eb21603-1016-4a57-8f72-f2cbcd046732" + ], + "columns": { + "12c45419-8c36-42d5-a61f-0134974a7917": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Postal code", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "8eb21603-1016-4a57-8f72-f2cbcd046732", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "source.geo.postal_code" + }, + "8eb21603-1016-4a57-8f72-f2cbcd046732": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "User count", + "operationType": "unique_count", + "scale": "ratio", + "sourceField": "user.email" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "8eb21603-1016-4a57-8f72-f2cbcd046732" + ], + "layerId": "e6917172-0cfc-45d0-8761-9d151ca8c6d8", + "layerType": "data", + "position": "top", + "seriesType": "bar_horizontal", + "showGridlines": false, + "xAccessor": "12c45419-8c36-42d5-a61f-0134974a7917" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_horizontal", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "062d36b1-7b48-4942-8dc6-bc6c9da71ca4", + "w": 24, + "x": 0, + "y": 60 + }, + "panelIndex": "062d36b1-7b48-4942-8dc6-bc6c9da71ca4", + "title": "Top 10 postal code by user count [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-57bddf43-9edc-455c-a430-1905126337ab", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "57bddf43-9edc-455c-a430-1905126337ab": { + "columnOrder": [ + "898c6e89-40ea-41ed-83bb-db2b34fbe59d", + "fbdd3f62-f9f8-4830-a06d-f1b04ae314d5" + ], + "columns": { + "898c6e89-40ea-41ed-83bb-db2b34fbe59d": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Application type", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "fbdd3f62-f9f8-4830-a06d-f1b04ae314d5", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "salesforce.login.application" + }, + "fbdd3f62-f9f8-4830-a06d-f1b04ae314d5": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "User count", + "operationType": "unique_count", + "scale": "ratio", + "sourceField": "user.email" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "fbdd3f62-f9f8-4830-a06d-f1b04ae314d5" + ], + "layerId": "57bddf43-9edc-455c-a430-1905126337ab", + "layerType": "data", + "position": "top", + "seriesType": "bar_horizontal", + "showGridlines": false, + "xAccessor": "898c6e89-40ea-41ed-83bb-db2b34fbe59d" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_horizontal", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "2f13c9f8-868c-420e-9243-4edc3bf8a52f", + "w": 24, + "x": 24, + "y": 60 + }, + "panelIndex": "2f13c9f8-868c-420e-9243-4edc3bf8a52f", + "title": "Top 10 application type by user count [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "enhancements": {} + }, + "gridData": { + "h": 15, + "i": "cae6ad06-6134-468e-aeeb-7a1755e143e7", + "w": 24, + "x": 0, + "y": 75 + }, + "panelIndex": "cae6ad06-6134-468e-aeeb-7a1755e143e7", + "panelRefName": "panel_cae6ad06-6134-468e-aeeb-7a1755e143e7", + "type": "search", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "filebeat-*", + "name": "indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "indexpattern-datasource-layer-b2fe9547-0320-4300-9384-8e44fb4739cb", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "filter-index-pattern-0", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "b2fe9547-0320-4300-9384-8e44fb4739cb": { + "columnOrder": [ + "94fa32bf-c0b2-453b-abae-ba8d7552adb1", + "65726718-5a2e-4c53-9cdd-773ece695cda" + ], + "columns": { + "65726718-5a2e-4c53-9cdd-773ece695cda": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Request count", + "operationType": "count", + "scale": "ratio", + "sourceField": "Records" + }, + "94fa32bf-c0b2-453b-abae-ba8d7552adb1": { + "customLabel": true, + "dataType": "ip", + "isBucketed": true, + "label": "IP Addresses", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "65726718-5a2e-4c53-9cdd-773ece695cda", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "source.ip" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "filter-index-pattern-0", + "key": "event.action", + "negate": false, + "params": { + "query": "login-attempt" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.action": "login-attempt" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "65726718-5a2e-4c53-9cdd-773ece695cda" + ], + "layerId": "b2fe9547-0320-4300-9384-8e44fb4739cb", + "layerType": "data", + "position": "top", + "seriesType": "bar_horizontal", + "showGridlines": false, + "xAccessor": "94fa32bf-c0b2-453b-abae-ba8d7552adb1" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "bar_horizontal", + "title": "Empty XY chart", + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "02f53527-4721-4341-9d76-05d9075eef17", + "w": 24, + "x": 24, + "y": 75 + }, + "panelIndex": "02f53527-4721-4341-9d76-05d9075eef17", + "title": "Top 10 IP addresses by request count [Filebeat Salesforce]", + "type": "lens", + "version": "7.15.0" + }, + { + "embeddableConfig": { + "enhancements": {}, + "hiddenLayers": [], + "hidePanelTitles": false, + "isLayerTOCOpen": true, + "mapBuffer": { + "maxLat": 85.05113, + "maxLon": 270, + "minLat": -66.51326, + "minLon": -270 + }, + "mapCenter": { + "lat": 15.07469, + "lon": -0.10396, + "zoom": 1.38 + }, + "openTOCDetails": [] + }, + "gridData": { + "h": 25, + "i": "d860f236-a75a-4fde-81ce-f3de40ef7c19", + "w": 48, + "x": 0, + "y": 90 + }, + "panelIndex": "d860f236-a75a-4fde-81ce-f3de40ef7c19", + "panelRefName": "panel_d860f236-a75a-4fde-81ce-f3de40ef7c19", + "title": "Login activity by region [Filebeat Salesforce]", + "type": "map", + "version": "7.15.0" + } + ], + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "now-7d/d", + "timeRestore": true, + "timeTo": "now", + "title": "[Filebeat Salesforce] Login Dashboard", + "version": 1 + }, + "coreMigrationVersion": "7.15.0", + "id": "cb7b4a40-f7ff-11ee-9088-0f36517484ce", + "migrationVersion": { + "dashboard": "7.15.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "9788dc28-4697-4ec7-8953-e70fabbdb620:control_9788dc28-4697-4ec7-8953-e70fabbdb620_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "ccd0f44d-f761-4a75-8fe1-f01955f30077:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "ccd0f44d-f761-4a75-8fe1-f01955f30077:indexpattern-datasource-layer-e601c823-8f3a-4656-ad12-402588f0f425", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "ccd0f44d-f761-4a75-8fe1-f01955f30077:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "da637943-7e6d-41a2-a9db-2d0fedc58956:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "da637943-7e6d-41a2-a9db-2d0fedc58956:indexpattern-datasource-layer-16d40659-3f98-477a-8c51-69ff60874d70", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "da637943-7e6d-41a2-a9db-2d0fedc58956:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "da637943-7e6d-41a2-a9db-2d0fedc58956:filter-index-pattern-1", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "71807bd3-d0ed-4328-93cc-6d9f3c93ea2c:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "71807bd3-d0ed-4328-93cc-6d9f3c93ea2c:indexpattern-datasource-layer-eb6954c3-d7f8-4561-953b-bb7a85328904", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "71807bd3-d0ed-4328-93cc-6d9f3c93ea2c:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "e988774b-2311-49ce-90d2-89c11abcdb07:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "e988774b-2311-49ce-90d2-89c11abcdb07:indexpattern-datasource-layer-94dd5ffa-7be5-4655-b1a2-2556e9ad835b", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "e988774b-2311-49ce-90d2-89c11abcdb07:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "89cc0806-06c0-44ff-a439-302308134141:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "89cc0806-06c0-44ff-a439-302308134141:indexpattern-datasource-layer-77dc6ae7-66ae-4403-861c-86e10c2920b7", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "89cc0806-06c0-44ff-a439-302308134141:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "47159791-40d6-4728-a005-79ddba90c433:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "47159791-40d6-4728-a005-79ddba90c433:indexpattern-datasource-layer-0c41d5d1-1ecc-4583-bf02-f403fd062f57", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "47159791-40d6-4728-a005-79ddba90c433:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "062d36b1-7b48-4942-8dc6-bc6c9da71ca4:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "062d36b1-7b48-4942-8dc6-bc6c9da71ca4:indexpattern-datasource-layer-e6917172-0cfc-45d0-8761-9d151ca8c6d8", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "2f13c9f8-868c-420e-9243-4edc3bf8a52f:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "2f13c9f8-868c-420e-9243-4edc3bf8a52f:indexpattern-datasource-layer-57bddf43-9edc-455c-a430-1905126337ab", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "2f13c9f8-868c-420e-9243-4edc3bf8a52f:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "2752cec0-f804-11ee-9088-0f36517484ce", + "name": "cae6ad06-6134-468e-aeeb-7a1755e143e7:panel_cae6ad06-6134-468e-aeeb-7a1755e143e7", + "type": "search" + }, + { + "id": "filebeat-*", + "name": "02f53527-4721-4341-9d76-05d9075eef17:indexpattern-datasource-current-indexpattern", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "02f53527-4721-4341-9d76-05d9075eef17:indexpattern-datasource-layer-b2fe9547-0320-4300-9384-8e44fb4739cb", + "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "02f53527-4721-4341-9d76-05d9075eef17:filter-index-pattern-0", + "type": "index-pattern" + }, + { + "id": "c9668e10-f88e-11ee-9088-0f36517484ce", + "name": "d860f236-a75a-4fde-81ce-f3de40ef7c19:panel_d860f236-a75a-4fde-81ce-f3de40ef7c19", + "type": "map" + } + ], + "type": "dashboard", + "updated_at": "2024-04-12T11:42:57.059Z", + "version": "WzExNjA3LDFd" +} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index a054e9bbd2f..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,330 +0,0 @@ -{ - "attributes": { - "description": "Login EventLogFile Data", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "optionsJSON": { - "hidePanelTitles": false, - "syncColors": false, - "useMargins": false - }, - "panelsJSON": [ - { - "embeddableConfig": { - "enhancements": {} - }, - "gridData": { - "h": 4, - "i": "4556b8a4-b5c8-4bb2-bc03-23b4f40b3af0", - "w": 48, - "x": 0, - "y": 0 - }, - "panelIndex": "4556b8a4-b5c8-4bb2-bc03-23b4f40b3af0", - "panelRefName": "panel_4556b8a4-b5c8-4bb2-bc03-23b4f40b3af0", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {} - }, - "gridData": { - "h": 15, - "i": "df92b3a0-d885-4bac-a98b-ab94d1d65936", - "w": 12, - "x": 0, - "y": 4 - }, - "panelIndex": "df92b3a0-d885-4bac-a98b-ab94d1d65936", - "panelRefName": "panel_df92b3a0-d885-4bac-a98b-ab94d1d65936", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "ae31f75c-4943-48ee-8177-f7ad58a91553", - "w": 12, - "x": 12, - "y": 4 - }, - "panelIndex": "ae31f75c-4943-48ee-8177-f7ad58a91553", - "panelRefName": "panel_ae31f75c-4943-48ee-8177-f7ad58a91553", - "title": "Failed login attempts [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hiddenLayers": [], - "hidePanelTitles": false, - "isLayerTOCOpen": false, - "mapBuffer": { - "maxLat": 66.51326, - "maxLon": 180, - "minLat": -66.51326, - "minLon": -90 - }, - "mapCenter": { - "lat": 14.75725, - "lon": 26.27964, - "zoom": 1.31 - }, - "openTOCDetails": [] - }, - "gridData": { - "h": 15, - "i": "9caaed64-6c42-40af-a6af-ae58cce576e3", - "w": 24, - "x": 24, - "y": 4 - }, - "panelIndex": "9caaed64-6c42-40af-a6af-ae58cce576e3", - "panelRefName": "panel_9caaed64-6c42-40af-a6af-ae58cce576e3", - "title": "Salesforce activity by region [Filebeat Salesforce]", - "type": "map", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {} - }, - "gridData": { - "h": 15, - "i": "157cf178-6669-496e-9f0e-7d9ac8bab21d", - "w": 48, - "x": 0, - "y": 19 - }, - "panelIndex": "157cf178-6669-496e-9f0e-7d9ac8bab21d", - "panelRefName": "panel_157cf178-6669-496e-9f0e-7d9ac8bab21d", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "a2a1513d-f5fb-4d1d-a7ce-d7a3903d55ca", - "w": 24, - "x": 0, - "y": 34 - }, - "panelIndex": "a2a1513d-f5fb-4d1d-a7ce-d7a3903d55ca", - "panelRefName": "panel_a2a1513d-f5fb-4d1d-a7ce-d7a3903d55ca", - "title": "User ID [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "eb23e36d-9001-4fd2-ad9f-aacf62811beb", - "w": 24, - "x": 24, - "y": 34 - }, - "panelIndex": "eb23e36d-9001-4fd2-ad9f-aacf62811beb", - "panelRefName": "panel_eb23e36d-9001-4fd2-ad9f-aacf62811beb", - "title": "Success rate [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "1436e9ad-013d-4416-a616-9a3c134af834", - "w": 24, - "x": 0, - "y": 49 - }, - "panelIndex": "1436e9ad-013d-4416-a616-9a3c134af834", - "panelRefName": "panel_1436e9ad-013d-4416-a616-9a3c134af834", - "title": "Top IP addresses by request count [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "83337583-735d-44c1-8dc9-8e4f032d42fb", - "w": 24, - "x": 24, - "y": 49 - }, - "panelIndex": "83337583-735d-44c1-8dc9-8e4f032d42fb", - "panelRefName": "panel_83337583-735d-44c1-8dc9-8e4f032d42fb", - "title": "Login type [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "20a81ce2-6345-4cad-936e-4337ac6bb3b0", - "w": 24, - "x": 0, - "y": 64 - }, - "panelIndex": "20a81ce2-6345-4cad-936e-4337ac6bb3b0", - "panelRefName": "panel_20a81ce2-6345-4cad-936e-4337ac6bb3b0", - "title": "Activity segmentation by browser/client [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 28, - "i": "8b648987-21fb-4b71-8d63-0e406180f168", - "w": 48, - "x": 0, - "y": 79 - }, - "panelIndex": "8b648987-21fb-4b71-8d63-0e406180f168", - "panelRefName": "panel_8b648987-21fb-4b71-8d63-0e406180f168", - "title": "Login events table [Filebeat Salesforce]", - "type": "search", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "4d6fa731-c3b5-4ec5-b604-f30b32d9ac5d", - "w": 24, - "x": 24, - "y": 64 - }, - "panelIndex": "4d6fa731-c3b5-4ec5-b604-f30b32d9ac5d", - "panelRefName": "panel_4d6fa731-c3b5-4ec5-b604-f30b32d9ac5d", - "title": "Application type [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - } - ], - "refreshInterval": { - "pause": false, - "value": 900000 - }, - "timeFrom": "now-7d/d", - "timeRestore": true, - "timeTo": "now", - "title": "[Filebeat Salesforce] Login Dashboard", - "version": 1 - }, - "coreMigrationVersion": "7.15.0", - "id": "salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "dashboard": "7.15.0" - }, - "references": [ - { - "id": "7a22ead0-5758-11ec-8f0b-05e8b06e1b10", - "name": "4556b8a4-b5c8-4bb2-bc03-23b4f40b3af0:panel_4556b8a4-b5c8-4bb2-bc03-23b4f40b3af0", - "type": "visualization" - }, - { - "id": "c69e97e0-5d72-11ec-9523-d1b667ac64c0", - "name": "df92b3a0-d885-4bac-a98b-ab94d1d65936:panel_df92b3a0-d885-4bac-a98b-ab94d1d65936", - "type": "visualization" - }, - { - "id": "f4e05440-5d72-11ec-9523-d1b667ac64c0", - "name": "ae31f75c-4943-48ee-8177-f7ad58a91553:panel_ae31f75c-4943-48ee-8177-f7ad58a91553", - "type": "visualization" - }, - { - "id": "5c2e6bc0-5d6c-11ec-9523-d1b667ac64c0", - "name": "9caaed64-6c42-40af-a6af-ae58cce576e3:panel_9caaed64-6c42-40af-a6af-ae58cce576e3", - "type": "map" - }, - { - "id": "fbb560f0-5d8e-11ec-9523-d1b667ac64c0", - "name": "157cf178-6669-496e-9f0e-7d9ac8bab21d:panel_157cf178-6669-496e-9f0e-7d9ac8bab21d", - "type": "visualization" - }, - { - "id": "e6da1080-5d8f-11ec-9523-d1b667ac64c0", - "name": "a2a1513d-f5fb-4d1d-a7ce-d7a3903d55ca:panel_a2a1513d-f5fb-4d1d-a7ce-d7a3903d55ca", - "type": "visualization" - }, - { - "id": "33be8340-5d90-11ec-9523-d1b667ac64c0", - "name": "eb23e36d-9001-4fd2-ad9f-aacf62811beb:panel_eb23e36d-9001-4fd2-ad9f-aacf62811beb", - "type": "visualization" - }, - { - "id": "80c0b730-5d90-11ec-9523-d1b667ac64c0", - "name": "1436e9ad-013d-4416-a616-9a3c134af834:panel_1436e9ad-013d-4416-a616-9a3c134af834", - "type": "visualization" - }, - { - "id": "ab958760-5d90-11ec-9523-d1b667ac64c0", - "name": "83337583-735d-44c1-8dc9-8e4f032d42fb:panel_83337583-735d-44c1-8dc9-8e4f032d42fb", - "type": "visualization" - }, - { - "id": "e8175600-5d90-11ec-9523-d1b667ac64c0", - "name": "20a81ce2-6345-4cad-936e-4337ac6bb3b0:panel_20a81ce2-6345-4cad-936e-4337ac6bb3b0", - "type": "visualization" - }, - { - "id": "51d23250-5d8b-11ec-9523-d1b667ac64c0", - "name": "8b648987-21fb-4b71-8d63-0e406180f168:panel_8b648987-21fb-4b71-8d63-0e406180f168", - "type": "search" - }, - { - "id": "baeaca80-cd2b-11ec-83d5-7f8e1b7a2529", - "name": "4d6fa731-c3b5-4ec5-b604-f30b32d9ac5d:panel_4d6fa731-c3b5-4ec5-b604-f30b32d9ac5d", - "type": "visualization" - }, - { - "id": "50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "name": "tag-50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "type": "tag" - } - ], - "type": "dashboard", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDY2LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 16ff640b838..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,296 +0,0 @@ -{ - "attributes": { - "description": "Apex EventLogFile Data", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "optionsJSON": { - "hidePanelTitles": false, - "syncColors": false, - "useMargins": false - }, - "panelsJSON": [ - { - "embeddableConfig": { - "enhancements": {} - }, - "gridData": { - "h": 4, - "i": "92fa5f55-44db-44e6-9e32-f47c34335706", - "w": 48, - "x": 0, - "y": 0 - }, - "panelIndex": "92fa5f55-44db-44e6-9e32-f47c34335706", - "panelRefName": "panel_92fa5f55-44db-44e6-9e32-f47c34335706", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "f7680bb8-ec0c-4bd5-8ace-140d023384dc", - "w": 12, - "x": 0, - "y": 4 - }, - "panelIndex": "f7680bb8-ec0c-4bd5-8ace-140d023384dc", - "panelRefName": "panel_f7680bb8-ec0c-4bd5-8ace-140d023384dc", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "5b18dcde-0147-462b-85eb-154fcb9abffd", - "w": 12, - "x": 12, - "y": 4 - }, - "panelIndex": "5b18dcde-0147-462b-85eb-154fcb9abffd", - "panelRefName": "panel_5b18dcde-0147-462b-85eb-154fcb9abffd", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "b9d36aa1-9cb3-4a1a-a010-413d72a57dd0", - "w": 24, - "x": 24, - "y": 4 - }, - "panelIndex": "b9d36aa1-9cb3-4a1a-a010-413d72a57dd0", - "panelRefName": "panel_b9d36aa1-9cb3-4a1a-a010-413d72a57dd0", - "title": "DB_TOTAL_TIME-CPU_TIME comparision [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 16, - "i": "97595594-bd12-4341-9287-aba4ee2642c3", - "w": 24, - "x": 0, - "y": 19 - }, - "panelIndex": "97595594-bd12-4341-9287-aba4ee2642c3", - "panelRefName": "panel_97595594-bd12-4341-9287-aba4ee2642c3", - "title": "Trigger-Entity categorisation [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false, - "vis": null - }, - "gridData": { - "h": 16, - "i": "1aef58f1-8aca-4225-bc5c-c1a6ceda4a8b", - "w": 24, - "x": 24, - "y": 19 - }, - "panelIndex": "1aef58f1-8aca-4225-bc5c-c1a6ceda4a8b", - "panelRefName": "panel_1aef58f1-8aca-4225-bc5c-c1a6ceda4a8b", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "b2885132-edfc-4c17-99f9-31b56ca2f109", - "w": 48, - "x": 0, - "y": 35 - }, - "panelIndex": "b2885132-edfc-4c17-99f9-31b56ca2f109", - "panelRefName": "panel_b2885132-edfc-4c17-99f9-31b56ca2f109", - "title": "Top Entrypoints by Request Count [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "4f5803fa-0c1e-4bd6-84ca-b8710f52c0a7", - "w": 24, - "x": 0, - "y": 50 - }, - "panelIndex": "4f5803fa-0c1e-4bd6-84ca-b8710f52c0a7", - "panelRefName": "panel_4f5803fa-0c1e-4bd6-84ca-b8710f52c0a7", - "title": "Apex Performance over time [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false, - "vis": { - "legendOpen": false - } - }, - "gridData": { - "h": 13, - "i": "58a8cf54-9a2e-4b7d-a579-5b01e656030e", - "w": 21, - "x": 0, - "y": 65 - }, - "panelIndex": "58a8cf54-9a2e-4b7d-a579-5b01e656030e", - "panelRefName": "panel_58a8cf54-9a2e-4b7d-a579-5b01e656030e", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 13, - "i": "03390f0c-c585-4cf0-8a93-06479965a0e9", - "w": 27, - "x": 21, - "y": 65 - }, - "panelIndex": "03390f0c-c585-4cf0-8a93-06479965a0e9", - "panelRefName": "panel_03390f0c-c585-4cf0-8a93-06479965a0e9", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "60adaf8e-785f-4c89-9ff8-c842b2a64f73", - "w": 24, - "x": 24, - "y": 50 - }, - "panelIndex": "60adaf8e-785f-4c89-9ff8-c842b2a64f73", - "panelRefName": "panel_60adaf8e-785f-4c89-9ff8-c842b2a64f73", - "title": "Number of SOQL Queries per Entry Point [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - } - ], - "refreshInterval": { - "pause": true, - "value": 0 - }, - "timeFrom": "now-7d/d", - "timeRestore": true, - "timeTo": "now", - "title": "[Filebeat Salesforce] Apex Dashboard", - "version": 1 - }, - "coreMigrationVersion": "7.15.0", - "id": "salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "dashboard": "7.15.0" - }, - "references": [ - { - "id": "7a22ead0-5758-11ec-8f0b-05e8b06e1b10", - "name": "92fa5f55-44db-44e6-9e32-f47c34335706:panel_92fa5f55-44db-44e6-9e32-f47c34335706", - "type": "visualization" - }, - { - "id": "4f9923d0-574c-11ec-8f0b-05e8b06e1b10", - "name": "f7680bb8-ec0c-4bd5-8ace-140d023384dc:panel_f7680bb8-ec0c-4bd5-8ace-140d023384dc", - "type": "visualization" - }, - { - "id": "8cec4c30-574c-11ec-8f0b-05e8b06e1b10", - "name": "5b18dcde-0147-462b-85eb-154fcb9abffd:panel_5b18dcde-0147-462b-85eb-154fcb9abffd", - "type": "visualization" - }, - { - "id": "86081670-5d95-11ec-9523-d1b667ac64c0", - "name": "b9d36aa1-9cb3-4a1a-a010-413d72a57dd0:panel_b9d36aa1-9cb3-4a1a-a010-413d72a57dd0", - "type": "visualization" - }, - { - "id": "24c39ae0-574d-11ec-8f0b-05e8b06e1b10", - "name": "97595594-bd12-4341-9287-aba4ee2642c3:panel_97595594-bd12-4341-9287-aba4ee2642c3", - "type": "visualization" - }, - { - "id": "416da3a0-574f-11ec-8f0b-05e8b06e1b10", - "name": "1aef58f1-8aca-4225-bc5c-c1a6ceda4a8b:panel_1aef58f1-8aca-4225-bc5c-c1a6ceda4a8b", - "type": "visualization" - }, - { - "id": "93c37330-5751-11ec-8f0b-05e8b06e1b10", - "name": "b2885132-edfc-4c17-99f9-31b56ca2f109:panel_b2885132-edfc-4c17-99f9-31b56ca2f109", - "type": "visualization" - }, - { - "id": "31366a60-5751-11ec-8f0b-05e8b06e1b10", - "name": "4f5803fa-0c1e-4bd6-84ca-b8710f52c0a7:panel_4f5803fa-0c1e-4bd6-84ca-b8710f52c0a7", - "type": "visualization" - }, - { - "id": "17f0a5d0-5750-11ec-8f0b-05e8b06e1b10", - "name": "58a8cf54-9a2e-4b7d-a579-5b01e656030e:panel_58a8cf54-9a2e-4b7d-a579-5b01e656030e", - "type": "visualization" - }, - { - "id": "61eec180-5750-11ec-8f0b-05e8b06e1b10", - "name": "03390f0c-c585-4cf0-8a93-06479965a0e9:panel_03390f0c-c585-4cf0-8a93-06479965a0e9", - "type": "visualization" - }, - { - "id": "6d86efd0-5751-11ec-8f0b-05e8b06e1b10", - "name": "60adaf8e-785f-4c89-9ff8-c842b2a64f73:panel_60adaf8e-785f-4c89-9ff8-c842b2a64f73", - "type": "visualization" - }, - { - "id": "50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "name": "tag-50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "type": "tag" - } - ], - "type": "dashboard", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDc4LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 2c3e1eee6b1..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,158 +0,0 @@ -{ - "attributes": { - "description": "Logout EventLogFile Data", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "optionsJSON": { - "hidePanelTitles": false, - "syncColors": false, - "useMargins": false - }, - "panelsJSON": [ - { - "embeddableConfig": { - "enhancements": {} - }, - "gridData": { - "h": 4, - "i": "a8f9096a-18a7-4aaa-aadf-9b1264c25ff9", - "w": 48, - "x": 0, - "y": 0 - }, - "panelIndex": "a8f9096a-18a7-4aaa-aadf-9b1264c25ff9", - "panelRefName": "panel_a8f9096a-18a7-4aaa-aadf-9b1264c25ff9", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "vis": { - "legendOpen": false - } - }, - "gridData": { - "h": 15, - "i": "e94002ab-ee04-4bdf-80f6-fca80b3cf1b1", - "w": 24, - "x": 0, - "y": 21 - }, - "panelIndex": "e94002ab-ee04-4bdf-80f6-fca80b3cf1b1", - "panelRefName": "panel_e94002ab-ee04-4bdf-80f6-fca80b3cf1b1", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 15, - "i": "12145dd1-e578-4f41-a09d-7bece9d79985", - "w": 24, - "x": 24, - "y": 21 - }, - "panelIndex": "12145dd1-e578-4f41-a09d-7bece9d79985", - "panelRefName": "panel_12145dd1-e578-4f41-a09d-7bece9d79985", - "title": "Top 10 IP addresses over time [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 37, - "i": "4c956f84-ce21-4b40-9b6c-d0c079aa2630", - "w": 48, - "x": 0, - "y": 36 - }, - "panelIndex": "4c956f84-ce21-4b40-9b6c-d0c079aa2630", - "panelRefName": "panel_4c956f84-ce21-4b40-9b6c-d0c079aa2630", - "title": "Logout events table [Filebeat Salesforce]", - "type": "search", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {} - }, - "gridData": { - "h": 17, - "i": "78ec8ab8-7bee-4caa-9bf9-6a8c525d76c7", - "w": 48, - "x": 0, - "y": 4 - }, - "panelIndex": "78ec8ab8-7bee-4caa-9bf9-6a8c525d76c7", - "panelRefName": "panel_78ec8ab8-7bee-4caa-9bf9-6a8c525d76c7", - "type": "visualization", - "version": "7.15.0" - } - ], - "refreshInterval": { - "pause": true, - "value": 0 - }, - "timeFrom": "now-7d/d", - "timeRestore": true, - "timeTo": "now", - "title": "[Filebeat Salesforce] Logout Dashboard", - "version": 1 - }, - "coreMigrationVersion": "7.15.0", - "id": "salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "dashboard": "7.15.0" - }, - "references": [ - { - "id": "7a22ead0-5758-11ec-8f0b-05e8b06e1b10", - "name": "a8f9096a-18a7-4aaa-aadf-9b1264c25ff9:panel_a8f9096a-18a7-4aaa-aadf-9b1264c25ff9", - "type": "visualization" - }, - { - "id": "2b7921e0-5d6d-11ec-9523-d1b667ac64c0", - "name": "e94002ab-ee04-4bdf-80f6-fca80b3cf1b1:panel_e94002ab-ee04-4bdf-80f6-fca80b3cf1b1", - "type": "visualization" - }, - { - "id": "27897120-5d6d-11ec-9523-d1b667ac64c0", - "name": "12145dd1-e578-4f41-a09d-7bece9d79985:panel_12145dd1-e578-4f41-a09d-7bece9d79985", - "type": "visualization" - }, - { - "id": "b3b98110-5d92-11ec-9523-d1b667ac64c0", - "name": "4c956f84-ce21-4b40-9b6c-d0c079aa2630:panel_4c956f84-ce21-4b40-9b6c-d0c079aa2630", - "type": "search" - }, - { - "id": "2a11e7a0-cd35-11ec-83d5-7f8e1b7a2529", - "name": "78ec8ab8-7bee-4caa-9bf9-6a8c525d76c7:panel_78ec8ab8-7bee-4caa-9bf9-6a8c525d76c7", - "type": "visualization" - }, - { - "id": "50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "name": "tag-50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "type": "tag" - } - ], - "type": "dashboard", - "updated_at": "2022-05-06T12:21:35.309Z", - "version": "WzM0MDQxLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 2c528c48713..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/dashboard/salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "attributes": { - "description": "SetupAuditTrail EventLogFile Data", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "optionsJSON": { - "hidePanelTitles": false, - "syncColors": false, - "useMargins": false - }, - "panelsJSON": [ - { - "embeddableConfig": { - "enhancements": {} - }, - "gridData": { - "h": 4, - "i": "c7fd367e-26a0-440d-abdf-6c217aaa3d82", - "w": 48, - "x": 0, - "y": 0 - }, - "panelIndex": "c7fd367e-26a0-440d-abdf-6c217aaa3d82", - "panelRefName": "panel_c7fd367e-26a0-440d-abdf-6c217aaa3d82", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false, - "vis": { - "legendOpen": false - } - }, - "gridData": { - "h": 13, - "i": "cd348728-bab4-44b0-96cb-6f29b1095701", - "w": 16, - "x": 16, - "y": 4 - }, - "panelIndex": "cd348728-bab4-44b0-96cb-6f29b1095701", - "panelRefName": "panel_cd348728-bab4-44b0-96cb-6f29b1095701", - "title": "Top 10 Section Over Time [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false, - "vis": { - "legendOpen": false - } - }, - "gridData": { - "h": 13, - "i": "ecb2c974-d2ed-4256-a467-451be88465a7", - "w": 16, - "x": 32, - "y": 4 - }, - "panelIndex": "ecb2c974-d2ed-4256-a467-451be88465a7", - "panelRefName": "panel_ecb2c974-d2ed-4256-a467-451be88465a7", - "title": "Number of Actions performed over URLs [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 27, - "i": "fcd86baf-07ec-4c31-b1f6-054bbab0152c", - "w": 48, - "x": 0, - "y": 17 - }, - "panelIndex": "fcd86baf-07ec-4c31-b1f6-054bbab0152c", - "panelRefName": "panel_fcd86baf-07ec-4c31-b1f6-054bbab0152c", - "title": "SetupAuditTrail evnets data [Filebeat Salesforce]", - "type": "search", - "version": "7.15.0" - }, - { - "embeddableConfig": { - "enhancements": {}, - "hidePanelTitles": false - }, - "gridData": { - "h": 13, - "i": "701cda8c-8a8a-4e39-ac16-52397b712b87", - "w": 16, - "x": 0, - "y": 4 - }, - "panelIndex": "701cda8c-8a8a-4e39-ac16-52397b712b87", - "panelRefName": "panel_701cda8c-8a8a-4e39-ac16-52397b712b87", - "title": "Top 10 Actions Performed [Filebeat Salesforce]", - "type": "visualization", - "version": "7.15.0" - } - ], - "refreshInterval": { - "pause": true, - "value": 0 - }, - "timeFrom": "now-30d/d", - "timeRestore": true, - "timeTo": "now", - "title": "[Filebeat Salesforce] Setup Audit Trail Dashboard", - "version": 1 - }, - "coreMigrationVersion": "7.15.0", - "id": "salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "dashboard": "7.15.0" - }, - "references": [ - { - "id": "7a22ead0-5758-11ec-8f0b-05e8b06e1b10", - "name": "c7fd367e-26a0-440d-abdf-6c217aaa3d82:panel_c7fd367e-26a0-440d-abdf-6c217aaa3d82", - "type": "visualization" - }, - { - "id": "cf5f92c0-4b8a-11ec-9959-a3c0f68b1e4f", - "name": "cd348728-bab4-44b0-96cb-6f29b1095701:panel_cd348728-bab4-44b0-96cb-6f29b1095701", - "type": "visualization" - }, - { - "id": "5b503310-4b8c-11ec-9959-a3c0f68b1e4f", - "name": "ecb2c974-d2ed-4256-a467-451be88465a7:panel_ecb2c974-d2ed-4256-a467-451be88465a7", - "type": "visualization" - }, - { - "id": "769ba1c0-4b84-11ec-9959-a3c0f68b1e4f", - "name": "fcd86baf-07ec-4c31-b1f6-054bbab0152c:panel_fcd86baf-07ec-4c31-b1f6-054bbab0152c", - "type": "search" - }, - { - "id": "f5942600-5d95-11ec-9523-d1b667ac64c0", - "name": "701cda8c-8a8a-4e39-ac16-52397b712b87:panel_701cda8c-8a8a-4e39-ac16-52397b712b87", - "type": "visualization" - }, - { - "id": "50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "name": "tag-50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "type": "tag" - } - ], - "type": "dashboard", - "updated_at": "2022-05-06T12:16:51.077Z", - "version": "WzM0MDA4LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/15bcb8a0-f891-11ee-9088-0f36517484ce.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/15bcb8a0-f891-11ee-9088-0f36517484ce.json new file mode 100644 index 00000000000..736dd52ddaf --- /dev/null +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/15bcb8a0-f891-11ee-9088-0f36517484ce.json @@ -0,0 +1,192 @@ +{ + "attributes": { + "description": "", + "layerListJSON": [ + { + "alpha": 1, + "id": "fc011f77-7c53-4a98-afef-f7d89244f0cf", + "includeInFitToBounds": true, + "label": null, + "maxZoom": 24, + "minZoom": 0, + "sourceDescriptor": { + "isAutoSelect": true, + "type": "EMS_TMS" + }, + "style": { + "type": "TILE" + }, + "type": "VECTOR_TILE", + "visible": true + }, + { + "alpha": 0.75, + "id": "4f907c5b-67e7-45c3-8c4c-7cb80170de03", + "includeInFitToBounds": true, + "joins": [], + "label": "Logout Activity", + "maxZoom": 24, + "minZoom": 0, + "sourceDescriptor": { + "applyGlobalQuery": true, + "applyGlobalTime": true, + "filterByMapBounds": true, + "geoField": "source.geo.location", + "id": "58e3c77d-15bd-4516-a81f-56f35cbe66ed", + "indexPatternRefName": "layer_1_source_index_pattern", + "scalingType": "MVT", + "sortField": "", + "sortOrder": "desc", + "tooltipProperties": [], + "topHitsSize": 1, + "topHitsSplitField": "", + "type": "ES_SEARCH" + }, + "style": { + "isTimeAware": true, + "properties": { + "fillColor": { + "options": { + "color": "#54B399" + }, + "type": "STATIC" + }, + "icon": { + "options": { + "value": "marker" + }, + "type": "STATIC" + }, + "iconOrientation": { + "options": { + "orientation": 0 + }, + "type": "STATIC" + }, + "iconSize": { + "options": { + "size": 6 + }, + "type": "STATIC" + }, + "labelBorderColor": { + "options": { + "color": "#FFFFFF" + }, + "type": "STATIC" + }, + "labelBorderSize": { + "options": { + "size": "SMALL" + } + }, + "labelColor": { + "options": { + "color": "#000000" + }, + "type": "STATIC" + }, + "labelSize": { + "options": { + "size": 14 + }, + "type": "STATIC" + }, + "labelText": { + "options": { + "value": "" + }, + "type": "STATIC" + }, + "lineColor": { + "options": { + "color": "#41937c" + }, + "type": "STATIC" + }, + "lineWidth": { + "options": { + "size": 1 + }, + "type": "STATIC" + }, + "symbolizeAs": { + "options": { + "value": "circle" + } + } + }, + "type": "VECTOR" + }, + "type": "TILED_VECTOR", + "visible": true + } + ], + "mapStateJSON": { + "center": { + "lat": 19.94277, + "lon": 0 + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "refreshConfig": { + "interval": 0, + "isPaused": true + }, + "settings": { + "autoFitToDataBounds": false, + "backgroundColor": "#ffffff", + "browserLocation": { + "zoom": 2 + }, + "disableInteractive": false, + "disableTooltipControl": false, + "fixedLocation": { + "lat": 0, + "lon": 0, + "zoom": 2 + }, + "hideLayerControl": false, + "hideToolbarOverlay": false, + "hideViewControl": false, + "initialLocation": "LAST_SAVED_LOCATION", + "maxZoom": 24, + "minZoom": 0, + "showScaleControl": false, + "showSpatialFilters": true, + "showTimesliderToggleButton": true, + "spatialFiltersAlpa": 0.3, + "spatialFiltersFillColor": "#DA8B45", + "spatialFiltersLineColor": "#DA8B45" + }, + "timeFilters": { + "from": "now-7d/d", + "to": "now" + }, + "zoom": 1.77 + }, + "title": "Logout activity by region [Filebeat Salesforce]", + "uiStateJSON": { + "isLayerTOCOpen": true, + "openTOCDetails": [] + } + }, + "coreMigrationVersion": "7.15.0", + "id": "15bcb8a0-f891-11ee-9088-0f36517484ce", + "migrationVersion": { + "map": "7.14.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "layer_1_source_index_pattern", + "type": "index-pattern" + } + ], + "type": "map", + "updated_at": "2024-04-15T13:14:55.200Z", + "version": "WzEyNTI5LDFd" +} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/5c2e6bc0-5d6c-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/5c2e6bc0-5d6c-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 7cc00fd20f1..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/5c2e6bc0-5d6c-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "attributes": { - "description": "", - "layerListJSON": [ - { - "alpha": 1, - "id": "166258a6-0b30-4bd1-8a12-67f32cfbeb97", - "includeInFitToBounds": true, - "label": null, - "maxZoom": 24, - "minZoom": 0, - "sourceDescriptor": { - "isAutoSelect": true, - "type": "EMS_TMS" - }, - "style": { - "type": "TILE" - }, - "type": "VECTOR_TILE", - "visible": true - }, - { - "alpha": 0.75, - "id": "696a68f4-f7f0-4720-9c7a-eac4f6cba560", - "includeInFitToBounds": true, - "label": null, - "maxZoom": 24, - "minZoom": 0, - "sourceDescriptor": { - "applyForceRefresh": true, - "applyGlobalQuery": true, - "applyGlobalTime": true, - "geoField": "source.geo.location", - "id": "608c9dc4-0997-4e15-af24-9334271838bb", - "indexPatternRefName": "layer_1_source_index_pattern", - "metrics": [ - { - "type": "count" - } - ], - "requestType": "heatmap", - "resolution": "COARSE", - "type": "ES_GEO_GRID" - }, - "style": { - "colorRampName": "theclassic", - "type": "HEATMAP" - }, - "type": "HEATMAP", - "visible": true - } - ], - "mapStateJSON": { - "center": { - "lat": 23.00882, - "lon": 13.35724 - }, - "filters": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "index": "filebeat-*", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "query": { - "language": "kuery", - "query": "" - }, - "refreshConfig": { - "interval": 900000, - "isPaused": false - }, - "settings": { - "autoFitToDataBounds": false, - "backgroundColor": "#ffffff", - "browserLocation": { - "zoom": 2 - }, - "disableInteractive": false, - "disableTooltipControl": false, - "fixedLocation": { - "lat": 0, - "lon": 0, - "zoom": 2 - }, - "hideLayerControl": false, - "hideToolbarOverlay": false, - "hideViewControl": false, - "initialLocation": "LAST_SAVED_LOCATION", - "maxZoom": 24, - "minZoom": 0, - "showScaleControl": false, - "showSpatialFilters": true, - "showTimesliderToggleButton": true, - "spatialFiltersAlpa": 0.3, - "spatialFiltersFillColor": "#DA8B45", - "spatialFiltersLineColor": "#DA8B45" - }, - "timeFilters": { - "from": "2021-10-21T02:19:14.117Z", - "to": "2021-10-22T10:30:00.000Z" - }, - "zoom": 1.25 - }, - "title": "[Login] Salesforce activity by region [Filebeat Salesforce]", - "uiStateJSON": { - "isLayerTOCOpen": true, - "openTOCDetails": [] - } - }, - "coreMigrationVersion": "7.15.0", - "id": "5c2e6bc0-5d6c-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "map": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "layer_1_source_index_pattern", - "type": "index-pattern" - } - ], - "type": "map", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDU2LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/c9668e10-f88e-11ee-9088-0f36517484ce.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/c9668e10-f88e-11ee-9088-0f36517484ce.json new file mode 100644 index 00000000000..1bbb4d88397 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/map/c9668e10-f88e-11ee-9088-0f36517484ce.json @@ -0,0 +1,192 @@ +{ + "attributes": { + "description": "", + "layerListJSON": [ + { + "alpha": 1, + "id": "e14b9f6c-b5bc-44c3-a76d-cd3ce4416837", + "includeInFitToBounds": true, + "label": null, + "maxZoom": 24, + "minZoom": 0, + "sourceDescriptor": { + "isAutoSelect": true, + "type": "EMS_TMS" + }, + "style": { + "type": "TILE" + }, + "type": "VECTOR_TILE", + "visible": true + }, + { + "alpha": 0.75, + "id": "b7f862e8-d875-4a1a-a922-63f5c2f6d06a", + "includeInFitToBounds": true, + "joins": [], + "label": "Login Activity", + "maxZoom": 24, + "minZoom": 0, + "sourceDescriptor": { + "applyGlobalQuery": true, + "applyGlobalTime": true, + "filterByMapBounds": true, + "geoField": "source.geo.location", + "id": "97b373bc-81dc-42de-9d90-f7970d5c3a73", + "indexPatternRefName": "layer_1_source_index_pattern", + "scalingType": "MVT", + "sortField": "", + "sortOrder": "desc", + "tooltipProperties": [], + "topHitsSize": 1, + "topHitsSplitField": "", + "type": "ES_SEARCH" + }, + "style": { + "isTimeAware": true, + "properties": { + "fillColor": { + "options": { + "color": "#54B399" + }, + "type": "STATIC" + }, + "icon": { + "options": { + "value": "marker" + }, + "type": "STATIC" + }, + "iconOrientation": { + "options": { + "orientation": 0 + }, + "type": "STATIC" + }, + "iconSize": { + "options": { + "size": 6 + }, + "type": "STATIC" + }, + "labelBorderColor": { + "options": { + "color": "#FFFFFF" + }, + "type": "STATIC" + }, + "labelBorderSize": { + "options": { + "size": "SMALL" + } + }, + "labelColor": { + "options": { + "color": "#000000" + }, + "type": "STATIC" + }, + "labelSize": { + "options": { + "size": 14 + }, + "type": "STATIC" + }, + "labelText": { + "options": { + "value": "" + }, + "type": "STATIC" + }, + "lineColor": { + "options": { + "color": "#41937c" + }, + "type": "STATIC" + }, + "lineWidth": { + "options": { + "size": 1 + }, + "type": "STATIC" + }, + "symbolizeAs": { + "options": { + "value": "circle" + } + } + }, + "type": "VECTOR" + }, + "type": "TILED_VECTOR", + "visible": true + } + ], + "mapStateJSON": { + "center": { + "lat": 15.07469, + "lon": -0.10396 + }, + "filters": [], + "query": { + "language": "kuery", + "query": "" + }, + "refreshConfig": { + "interval": 0, + "isPaused": true + }, + "settings": { + "autoFitToDataBounds": false, + "backgroundColor": "#ffffff", + "browserLocation": { + "zoom": 2 + }, + "disableInteractive": false, + "disableTooltipControl": false, + "fixedLocation": { + "lat": 0, + "lon": 0, + "zoom": 2 + }, + "hideLayerControl": false, + "hideToolbarOverlay": false, + "hideViewControl": false, + "initialLocation": "LAST_SAVED_LOCATION", + "maxZoom": 24, + "minZoom": 0, + "showScaleControl": false, + "showSpatialFilters": true, + "showTimesliderToggleButton": true, + "spatialFiltersAlpa": 0.3, + "spatialFiltersFillColor": "#DA8B45", + "spatialFiltersLineColor": "#DA8B45" + }, + "timeFilters": { + "from": "now-7d/d", + "to": "now" + }, + "zoom": 1.38 + }, + "title": "Login activity by region [Filebeat Salesforce]", + "uiStateJSON": { + "isLayerTOCOpen": true, + "openTOCDetails": [] + } + }, + "coreMigrationVersion": "7.15.0", + "id": "c9668e10-f88e-11ee-9088-0f36517484ce", + "migrationVersion": { + "map": "7.14.0" + }, + "references": [ + { + "id": "filebeat-*", + "name": "layer_1_source_index_pattern", + "type": "index-pattern" + } + ], + "type": "map", + "updated_at": "2024-04-15T13:15:17.835Z", + "version": "WzEyNTQ4LDFd" +} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/51d23250-5d8b-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/2752cec0-f804-11ee-9088-0f36517484ce.json similarity index 56% rename from x-pack/filebeat/module/salesforce/_meta/kibana/7/search/51d23250-5d8b-11ec-9523-d1b667ac64c0.json rename to x-pack/filebeat/module/salesforce/_meta/kibana/7/search/2752cec0-f804-11ee-9088-0f36517484ce.json index 2ede6ff68b9..201b3ab6dc4 100644 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/51d23250-5d8b-11ec-9523-d1b667ac64c0.json +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/2752cec0-f804-11ee-9088-0f36517484ce.json @@ -1,17 +1,12 @@ { "attributes": { "columns": [ - "salesforce.access_mode", - "salesforce.login.db_total_time", - "salesforce.login.evaluation_time", - "salesforce.login.login_type", - "salesforce.login.request_status", + "event.outcome", "salesforce.login.run_time", - "salesforce.login.session_level" + "salesforce.login.db_time.total" ], "description": "", - "grid": {}, - "hideChart": false, + "hits": 0, "kibanaSavedObjectMeta": { "searchSourceJSON": { "filter": [ @@ -23,18 +18,35 @@ "alias": null, "disabled": false, "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", + "key": "event.action", "negate": false, "params": { - "query": "salesforce.login" + "query": "login-attempt" }, "type": "phrase" }, "query": { "match_phrase": { - "event.dataset": "salesforce.login" + "event.action": "login-attempt" } } + }, + { + "$state": { + "store": "appState" + }, + "exists": { + "field": "event.outcome" + }, + "meta": { + "alias": null, + "disabled": false, + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", + "key": "event.outcome", + "negate": false, + "type": "exists", + "value": "exists" + } } ], "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", @@ -50,10 +62,11 @@ "desc" ] ], - "title": "Login Log Table [Filebeat Salesforce]" + "title": "Login events table [Filebeat Salesforce]", + "version": 1 }, "coreMigrationVersion": "7.15.0", - "id": "51d23250-5d8b-11ec-9523-d1b667ac64c0", + "id": "2752cec0-f804-11ee-9088-0f36517484ce", "migrationVersion": { "search": "7.9.3" }, @@ -67,9 +80,14 @@ "id": "filebeat-*", "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", "type": "index-pattern" + }, + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", + "type": "index-pattern" } ], "type": "search", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDYzLDNd" + "updated_at": "2024-04-12T11:42:31.623Z", + "version": "WzExNTc0LDFd" } \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/3e7187a0-f894-11ee-9088-0f36517484ce.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/3e7187a0-f894-11ee-9088-0f36517484ce.json new file mode 100644 index 00000000000..3d952741e88 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/3e7187a0-f894-11ee-9088-0f36517484ce.json @@ -0,0 +1,44 @@ +{ + "attributes": { + "columns": [ + "salesforce.setup_audit_trail.section", + "event.action", + "salesforce.setup_audit_trail.display" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "salesforce.setup_audit_trail.section : * or event.action : * or salesforce.setup_audit_trail.display : *" + } + } + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Changes made in the setup [Filebeat Salesforce]", + "version": 1 + }, + "coreMigrationVersion": "7.15.0", + "id": "3e7187a0-f894-11ee-9088-0f36517484ce", + "migrationVersion": { + "search": "7.9.3" + }, + "references": [ + { + "id": "filebeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "search", + "updated_at": "2024-04-12T11:37:55.498Z", + "version": "WzExMjQ3LDFd" +} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/769ba1c0-4b84-11ec-9959-a3c0f68b1e4f.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/769ba1c0-4b84-11ec-9959-a3c0f68b1e4f.json deleted file mode 100644 index ff4ff6ab6be..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/769ba1c0-4b84-11ec-9959-a3c0f68b1e4f.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "attributes": { - "columns": [ - "salesforce.setup_audit_trail.section", - "event.action", - "salesforce.setup_audit_trail.display" - ], - "description": "", - "grid": {}, - "hideChart": false, - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.setupaudittrail" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.setupaudittrail" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "sort": [ - [ - "@timestamp", - "desc" - ] - ], - "title": "SetupAuditTrail Log Stream [Filebeat Salesforce]", - "version": 1 - }, - "coreMigrationVersion": "7.15.0", - "id": "769ba1c0-4b84-11ec-9959-a3c0f68b1e4f", - "migrationVersion": { - "search": "7.9.3" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "search", - "updated_at": "2022-05-06T11:14:57.093Z", - "version": "WzMzNDg4LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/b3b98110-5d92-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/b3b98110-5d92-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 30f868a2096..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/b3b98110-5d92-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "attributes": { - "columns": [ - "source.ip", - "source.geo.city_name", - "user.id" - ], - "description": "", - "grid": {}, - "hideChart": false, - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.logout" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.logout" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "sort": [ - [ - "@timestamp", - "desc" - ] - ], - "title": "Logout Logs Table [Filebeat Salesforce]" - }, - "coreMigrationVersion": "7.15.0", - "id": "b3b98110-5d92-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "search": "7.9.3" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "search", - "updated_at": "2022-05-06T11:14:56.119Z", - "version": "WzMzNDgzLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/ef8b6070-5d6d-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/ef8b6070-5d6d-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index f7783723ced..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/search/ef8b6070-5d6d-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "attributes": { - "columns": [], - "description": "", - "grid": {}, - "hideChart": false, - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "sort": [ - [ - "@timestamp", - "desc" - ] - ], - "title": "[Login] Search [Filebeat Salesforce]" - }, - "coreMigrationVersion": "7.15.0", - "id": "ef8b6070-5d6d-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "search": "7.9.3" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "search", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDUzLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/tag/50e50c20-5749-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/tag/50e50c20-5749-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 0e217cab385..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/tag/50e50c20-5749-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "attributes": { - "color": "#414273", - "description": "Salesforce", - "name": "beats" - }, - "coreMigrationVersion": "7.15.0", - "id": "50e50c20-5749-11ec-8f0b-05e8b06e1b10", - "references": [], - "type": "tag", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDY1LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/17f0a5d0-5750-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/17f0a5d0-5750-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 350c25445ff..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/17f0a5d0-5750-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Response by Media type [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "salesforce.apex.media_type", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 20 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "distinctColors": false, - "isDonut": true, - "labels": { - "last_level": false, - "percentDecimals": 2, - "position": "default", - "show": true, - "truncate": 100, - "values": true, - "valuesFormat": "percent" - }, - "legendPosition": "right", - "maxLegendLines": 1, - "nestedLegend": false, - "palette": { - "name": "default", - "type": "palette" - }, - "truncateLegend": true, - "type": "pie" - }, - "title": "Response by Media type [Filebeat Salesforce]", - "type": "pie" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "17f0a5d0-5750-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDc1LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/24c39ae0-574d-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/24c39ae0-574d-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index ae6a0d64a22..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/24c39ae0-574d-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[ApexTrigger] Trigger-Entity categorisation [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "customLabel": "Trigger Name", - "field": "salesforce.apex.trigger.name", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "group", - "type": "terms" - }, - { - "enabled": true, - "id": "3", - "params": { - "field": "salesforce.apex.entity_name", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "group", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 200 - }, - "position": "left", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": {}, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "normal", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": true, - "rotate": 75, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "bottom", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "[ApexTrigger] Trigger-Entity categorisation [Filebeat Salesforce]", - "type": "horizontal_bar" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "24c39ae0-574d-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDcxLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/27897120-5d6d-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/27897120-5d6d-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index b83d71b986b..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/27897120-5d6d-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.logout" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.logout" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "event.dataset : \"salesforce.logout\" " - } - } - }, - "title": "[Logout] Top 10 IP addresses over time [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "customLabel": "IP Address", - "field": "source.ip", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": true, - "otherBucketLabel": "Other", - "size": 9 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "fittingFunction": "linear", - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": {}, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 9, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "area", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "[Logout] Top 10 IP addresses over time [Filebeat Salesforce]", - "type": "area" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "27897120-5d6d-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:56.119Z", - "version": "WzMzNDgyLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2a11e7a0-cd35-11ec-83d5-7f8e1b7a2529.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2a11e7a0-cd35-11ec-83d5-7f8e1b7a2529.json deleted file mode 100644 index aaccb711255..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2a11e7a0-cd35-11ec-83d5-7f8e1b7a2529.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Logout] Logout Over Time [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [], - "params": { - "axis_formatter": "number", - "axis_position": "left", - "axis_scale": "normal", - "drop_last_bucket": 0, - "filter": { - "language": "kuery", - "query": "event.dataset : \"salesforce.logout\"" - }, - "id": "9b373d2d-abc7-4c3e-a45a-b3fed48fa34f", - "index_pattern_ref_name": "metrics_0_index_pattern", - "interval": "", - "isModelInvalid": false, - "max_lines_legend": 1, - "series": [ - { - "axis_position": "right", - "chart_type": "line", - "color": "#68BC00", - "fill": 0.5, - "formatter": "number", - "id": "0e7dc0ec-81a5-437b-a632-ff8b9a3f84d2", - "line_width": 1, - "metrics": [ - { - "id": "df05f5a6-0774-43b7-ae50-1f4ce8cdbbdd", - "type": "count" - } - ], - "palette": { - "name": "default", - "type": "palette" - }, - "point_size": 1, - "separate_axis": 0, - "split_mode": "everything", - "stacked": "none" - } - ], - "show_grid": 1, - "show_legend": 1, - "time_field": "@timestamp", - "time_range_mode": "entire_time_range", - "tooltip_mode": "show_all", - "truncate_legend": 1, - "type": "timeseries", - "use_kibana_indexes": true - }, - "title": "[Logout] Logout Over Time [Filebeat Salesforce]", - "type": "metrics" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "2a11e7a0-cd35-11ec-83d5-7f8e1b7a2529", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "metrics_0_index_pattern", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T12:07:56.442Z", - "version": "WzMzOTQxLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2b7921e0-5d6d-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2b7921e0-5d6d-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 8a73e4910f5..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/2b7921e0-5d6d-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.logout" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.logout" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Distribution of Session Levels used while logging out [Filebeat Salesforce]", - "uiStateJSON": { - "vis": { - "legendOpen": false - } - }, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "salesforce.logout.session_level", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": true, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "distinctColors": false, - "isDonut": false, - "labels": { - "last_level": false, - "percentDecimals": 2, - "position": "default", - "show": true, - "truncate": 100, - "values": true, - "valuesFormat": "value" - }, - "legendPosition": "right", - "maxLegendLines": 1, - "nestedLegend": false, - "palette": { - "name": "default", - "type": "palette" - }, - "truncateLegend": true, - "type": "pie" - }, - "title": "Distribution of Session Levels used while logging out [Filebeat Salesforce]", - "type": "pie" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "2b7921e0-5d6d-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:56.119Z", - "version": "WzMzNDgxLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/31366a60-5751-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/31366a60-5751-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index b051d51c422..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/31366a60-5751-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.action", - "negate": false, - "params": { - "query": "apex-execution" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.action": "apex-execution" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[ApexExecution] Apex Performance over time [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": { - "customLabel": "Average Execution Time (ms)", - "field": "event.duration" - }, - "schema": "metric", - "type": "avg" - }, - { - "enabled": true, - "id": "2", - "params": { - "drop_partials": false, - "extended_bounds": {}, - "field": "@timestamp", - "interval": "m", - "min_doc_count": 1, - "scaleMetricValues": false, - "timeRange": { - "from": "now-7d/d", - "to": "now" - }, - "useNormalizedEsInterval": true, - "used_interval": "1h" - }, - "schema": "segment", - "type": "date_histogram" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "fittingFunction": "linear", - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": {}, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 9, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Average Execution Time (ms)" - }, - "drawLinesBetweenPoints": true, - "interpolate": "cardinal", - "lineWidth": 2, - "mode": "normal", - "show": true, - "showCircles": true, - "type": "area", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "line", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Average Execution Time (ms)" - }, - "type": "value" - } - ] - }, - "title": "[ApexExecution] Apex Performance over time [Filebeat Salesforce]", - "type": "line" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "31366a60-5751-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDc0LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/33be8340-5d90-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/33be8340-5d90-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 12181d534d8..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/33be8340-5d90-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Login] Success rate [Filebeat Salesforce]", - "uiStateJSON": { - "vis": { - "legendOpen": false - } - }, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "event.outcome", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "distinctColors": false, - "isDonut": true, - "labels": { - "last_level": false, - "percentDecimals": 2, - "position": "default", - "show": true, - "truncate": 100, - "values": true, - "valuesFormat": "percent" - }, - "legendPosition": "right", - "maxLegendLines": 1, - "nestedLegend": false, - "palette": { - "name": "default", - "type": "palette" - }, - "truncateLegend": true, - "type": "pie" - }, - "title": "[Login] Success rate [Filebeat Salesforce]", - "type": "pie" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "33be8340-5d90-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDU5LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/416da3a0-574f-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/416da3a0-574f-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index e2959b00121..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/416da3a0-574f-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Categorization by User type [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "user.roles", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 20 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTooltip": true, - "colorSchema": "Greens", - "colorsNumber": 4, - "colorsRange": [], - "enableHover": false, - "invertColors": false, - "legendPosition": "right", - "percentageMode": false, - "setColorRange": false, - "times": [], - "type": "heatmap", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "color": "black", - "overwriteColor": false, - "rotate": 0, - "show": false - }, - "scale": { - "defaultYExtents": false, - "type": "linear" - }, - "show": false, - "type": "value" - } - ] - }, - "title": "Categorization by User type [Filebeat Salesforce]", - "type": "heatmap" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "416da3a0-574f-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDcyLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/4f9923d0-574c-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/4f9923d0-574c-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 6a2eea5e32f..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/4f9923d0-574c-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.outcome", - "negate": false, - "params": { - "query": "success" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.outcome": "success" - } - } - }, - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Successful requests [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "metric": { - "colorSchema": "Green to Red", - "colorsRange": [ - { - "from": 0, - "to": 10000 - } - ], - "invertColors": false, - "labels": { - "show": true - }, - "metricColorMode": "None", - "percentageMode": false, - "style": { - "bgColor": false, - "bgFill": "#000", - "fontSize": 60, - "labelColor": false, - "subText": "" - }, - "useRanges": false - }, - "type": "metric" - }, - "title": "Successful requests [Filebeat Salesforce]", - "type": "metric" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "4f9923d0-574c-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDY4LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/5b503310-4b8c-11ec-9959-a3c0f68b1e4f.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/5b503310-4b8c-11ec-9959-a3c0f68b1e4f.json deleted file mode 100644 index 94055c4d2c4..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/5b503310-4b8c-11ec-9959-a3c0f68b1e4f.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.setupaudittrail" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.setupaudittrail" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[SetupAuditTrail] Number of Actions performed by Top 10 Delegated Users [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "event.action", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": true, - "otherBucketLabel": "Other", - "size": 7 - }, - "schema": "segment", - "type": "terms" - }, - { - "enabled": true, - "id": "3", - "params": { - "field": "event.url", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "group", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": { - "show": false - }, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "[SetupAuditTrail] Number of Actions performed by Top 10 Delegated Users [Filebeat Salesforce]", - "type": "histogram" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "5b503310-4b8c-11ec-9959-a3c0f68b1e4f", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:57.093Z", - "version": "WzMzNDg3LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/61eec180-5750-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/61eec180-5750-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index b08a0cd800e..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/61eec180-5750-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Response categorization by user agent [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "salesforce.apex.user_agent", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 20 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": false - }, - "labels": { - "show": false - }, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "Response categorization by user agent [Filebeat Salesforce]", - "type": "histogram" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "61eec180-5750-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDc2LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/6d86efd0-5751-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/6d86efd0-5751-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 13607f12d34..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/6d86efd0-5751-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[ApexExecution] Number of SOQL Queries per Entry Point [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "drop_partials": false, - "extended_bounds": {}, - "field": "@timestamp", - "interval": "m", - "min_doc_count": 1, - "scaleMetricValues": false, - "timeRange": { - "from": "now-7d/d", - "to": "now" - }, - "useNormalizedEsInterval": true, - "used_interval": "1h" - }, - "schema": "segment", - "type": "date_histogram" - }, - { - "enabled": true, - "id": "3", - "params": { - "field": "salesforce.apex.entry_point", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "group", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": { - "show": false - }, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "[ApexExecution] Number of SOQL Queries per Entry Point [Filebeat Salesforce]", - "type": "histogram" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "6d86efd0-5751-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDc3LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/7a22ead0-5758-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/7a22ead0-5758-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 42ae14f972e..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/7a22ead0-5758-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Dashboards [Filebeat salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [], - "params": { - "fontSize": 12, - "markdown": "[Apex Dashboard](#/dashboard/salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10) | [Login Dashboard](#/dashboard/salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10) | [Logout Dashboard](#/dashboard/salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10) | [SetupAuditTrail Dashboard](#/dashboard/salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10)", - "openLinksInNewTab": false - }, - "title": "Dashboards [Filebeat salesforce]", - "type": "markdown" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "7a22ead0-5758-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDUyLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/80c0b730-5d90-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/80c0b730-5d90-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index a9de8fa9881..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/80c0b730-5d90-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Login] Top IP addresses by request count [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "source.ip", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": { - "show": false - }, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 1, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "" - }, - "type": "value" - } - ] - }, - "title": "[Login] Top IP addresses by request count [Filebeat Salesforce]", - "type": "histogram" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "80c0b730-5d90-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDYwLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/86081670-5d95-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/86081670-5d95-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 054be350385..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/86081670-5d95-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Apex] DB_TOTAL_TIME-CPU_TIME comparision [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "drop_partials": false, - "extended_bounds": {}, - "field": "@timestamp", - "interval": "auto", - "min_doc_count": 1, - "scaleMetricValues": false, - "timeRange": { - "from": "now-7d/d", - "to": "now" - }, - "useNormalizedEsInterval": true, - "used_interval": "3h" - }, - "schema": "segment", - "type": "date_histogram" - }, - { - "enabled": true, - "id": "3", - "params": { - "field": "salesforce.apex.cpu_time", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "group", - "type": "terms" - }, - { - "enabled": true, - "id": "4", - "params": { - "field": "salesforce.apex.db_total_time", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "group", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "fittingFunction": "linear", - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": {}, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 9, - "seriesParams": [ - { - "circlesRadius": 1, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "area", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "area", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "" - }, - "type": "value" - } - ] - }, - "title": "[Apex] DB_TOTAL_TIME-CPU_TIME comparision [Filebeat Salesforce]", - "type": "area" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "86081670-5d95-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDcwLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/8cec4c30-574c-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/8cec4c30-574c-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index c0e143f7a98..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/8cec4c30-574c-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.outcome", - "negate": false, - "params": { - "query": "failure" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.outcome": "failure" - } - } - }, - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Failed requests [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "metric": { - "colorSchema": "Green to Red", - "colorsRange": [ - { - "from": 0, - "to": 10000 - } - ], - "invertColors": false, - "labels": { - "show": true - }, - "metricColorMode": "None", - "percentageMode": false, - "style": { - "bgColor": false, - "bgFill": "#000", - "fontSize": 60, - "labelColor": false, - "subText": "" - }, - "useRanges": false - }, - "type": "metric" - }, - "title": "Failed requests [Filebeat Salesforce]", - "type": "metric" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "8cec4c30-574c-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDY5LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/93c37330-5751-11ec-8f0b-05e8b06e1b10.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/93c37330-5751-11ec-8f0b-05e8b06e1b10.json deleted file mode 100644 index 6a868544083..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/93c37330-5751-11ec-8f0b-05e8b06e1b10.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.apex" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.apex" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[ApexExecution] Top Entrypoints by Request Count [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "customLabel": "Entrypoint", - "field": "salesforce.apex.entry_point", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": true, - "otherBucketLabel": "Other", - "size": 10 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": { - "show": false - }, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "[ApexExecution] Top Entrypoints by Request Count [Filebeat Salesforce]", - "type": "histogram" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "93c37330-5751-11ec-8f0b-05e8b06e1b10", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:55.111Z", - "version": "WzMzNDczLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/ab958760-5d90-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/ab958760-5d90-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 04012fe908c..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/ab958760-5d90-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Login] Login type [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "salesforce.login.login_type", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 200 - }, - "position": "left", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": {}, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 1, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "normal", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": true, - "rotate": 75, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "bottom", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "" - }, - "type": "value" - } - ] - }, - "title": "[Login] Login type [Filebeat Salesforce]", - "type": "horizontal_bar" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "ab958760-5d90-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDYxLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/baeaca80-cd2b-11ec-83d5-7f8e1b7a2529.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/baeaca80-cd2b-11ec-83d5-7f8e1b7a2529.json deleted file mode 100644 index 57d93e6947f..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/baeaca80-cd2b-11ec-83d5-7f8e1b7a2529.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Login] Application type [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "customLabel": "Application Type", - "field": "salesforce.login.application", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 200 - }, - "position": "left", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": {}, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 1, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "normal", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": true, - "rotate": 75, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "bottom", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "" - }, - "type": "value" - } - ] - }, - "title": "[Login] Application type [Filebeat Salesforce]", - "type": "horizontal_bar" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "baeaca80-cd2b-11ec-83d5-7f8e1b7a2529", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDY0LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/c69e97e0-5d72-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/c69e97e0-5d72-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 79323ba97fc..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/c69e97e0-5d72-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.outcome", - "negate": false, - "params": { - "query": "success" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.outcome": "success" - } - } - } - ], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "savedSearchRefName": "search_0", - "title": "Successful login [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "metric": { - "colorSchema": "Green to Red", - "colorsRange": [ - { - "from": 0, - "to": 10000 - } - ], - "invertColors": false, - "labels": { - "show": true - }, - "metricColorMode": "None", - "percentageMode": false, - "style": { - "bgColor": false, - "bgFill": "#000", - "fontSize": 60, - "labelColor": false, - "subText": "" - }, - "useRanges": false - }, - "type": "metric" - }, - "title": "Successful login [Filebeat Salesforce]", - "type": "metric" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "c69e97e0-5d72-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - }, - { - "id": "ef8b6070-5d6d-11ec-9523-d1b667ac64c0", - "name": "search_0", - "type": "search" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDU0LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/cf5f92c0-4b8a-11ec-9959-a3c0f68b1e4f.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/cf5f92c0-4b8a-11ec-9959-a3c0f68b1e4f.json deleted file mode 100644 index f7ce080fb57..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/cf5f92c0-4b8a-11ec-9959-a3c0f68b1e4f.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.setupaudittrail" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.setupaudittrail" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[SetupAuditTrail] Top 10 Section Over Time [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "customLabel": "Salesforce Section", - "field": "salesforce.setup_audit_trail.section", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": true, - "otherBucketLabel": "Other", - "size": 9 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "fittingFunction": "linear", - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": {}, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 9, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "area", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "[SetupAuditTrail] Top 10 Section Over Time [Filebeat Salesforce]", - "type": "area" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "cf5f92c0-4b8a-11ec-9959-a3c0f68b1e4f", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:57.093Z", - "version": "WzMzNDg2LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e6da1080-5d8f-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e6da1080-5d8f-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index df92bb1248c..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e6da1080-5d8f-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Login] User Names [Filebeat Salesforce]", - "uiStateJSON": { - "vis": { - "legendOpen": false - } - }, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "field": "user.id", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "distinctColors": false, - "isDonut": true, - "labels": { - "last_level": false, - "percentDecimals": 2, - "position": "default", - "show": true, - "truncate": 100, - "values": true, - "valuesFormat": "percent" - }, - "legendPosition": "right", - "maxLegendLines": 1, - "nestedLegend": false, - "palette": { - "name": "default", - "type": "palette" - }, - "truncateLegend": true, - "type": "pie" - }, - "title": "[Login] User Names [Filebeat Salesforce]", - "type": "pie" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "e6da1080-5d8f-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDU4LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e8175600-5d90-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e8175600-5d90-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 4b770227c35..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/e8175600-5d90-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[Login] Activity segmentation by browser/client [Filebeat Salesforce]", - "uiStateJSON": { - "vis": { - "legendOpen": false - } - }, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "customLabel": "User Agent", - "field": "user_agent.name", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": false, - "otherBucketLabel": "Other", - "size": 5 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "distinctColors": false, - "isDonut": true, - "labels": { - "last_level": false, - "percentDecimals": 2, - "position": "default", - "show": true, - "truncate": 100, - "values": true, - "valuesFormat": "percent" - }, - "legendPosition": "right", - "maxLegendLines": 1, - "nestedLegend": false, - "palette": { - "name": "default", - "type": "palette" - }, - "truncateLegend": true, - "type": "pie" - }, - "title": "[Login] Activity segmentation by browser/client [Filebeat Salesforce]", - "type": "pie" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "e8175600-5d90-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDYyLDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f4e05440-5d72-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f4e05440-5d72-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index efa79f91094..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f4e05440-5d72-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.outcome", - "negate": false, - "params": { - "query": "failure" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.outcome": "failure" - } - } - } - ], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "savedSearchRefName": "search_0", - "title": "[Login] Failed login attempts [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - } - ], - "params": { - "addLegend": false, - "addTooltip": true, - "metric": { - "colorSchema": "Green to Red", - "colorsRange": [ - { - "from": 0, - "to": 10000 - } - ], - "invertColors": false, - "labels": { - "show": true - }, - "metricColorMode": "None", - "percentageMode": false, - "style": { - "bgColor": false, - "bgFill": "#000", - "fontSize": 60, - "labelColor": false, - "subText": "" - }, - "useRanges": false - }, - "type": "metric" - }, - "title": "[Login] Failed login attempts [Filebeat Salesforce]", - "type": "metric" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "f4e05440-5d72-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - }, - { - "id": "ef8b6070-5d6d-11ec-9523-d1b667ac64c0", - "name": "search_0", - "type": "search" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:54.091Z", - "version": "WzMzNDU1LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f5942600-5d95-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f5942600-5d95-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index f3866d2ed33..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/f5942600-5d95-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.setupaudittrail" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.setupaudittrail" - } - } - } - ], - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "[SetupAuditTrail] Top 10 Actions Performed [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [ - { - "enabled": true, - "id": "1", - "params": {}, - "schema": "metric", - "type": "count" - }, - { - "enabled": true, - "id": "2", - "params": { - "customLabel": "Action Performed", - "field": "event.action", - "missingBucket": false, - "missingBucketLabel": "Missing", - "order": "desc", - "orderBy": "1", - "otherBucket": true, - "otherBucketLabel": "Other", - "size": 9 - }, - "schema": "segment", - "type": "terms" - } - ], - "params": { - "addLegend": true, - "addTimeMarker": false, - "addTooltip": true, - "categoryAxes": [ - { - "id": "CategoryAxis-1", - "labels": { - "filter": true, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "position": "bottom", - "scale": { - "type": "linear" - }, - "show": true, - "style": {}, - "title": {}, - "type": "category" - } - ], - "detailedTooltip": true, - "grid": { - "categoryLines": true, - "valueAxis": "ValueAxis-1" - }, - "labels": { - "show": false - }, - "legendPosition": "right", - "maxLegendLines": 1, - "palette": { - "name": "default", - "type": "palette" - }, - "radiusRatio": 0, - "seriesParams": [ - { - "circlesRadius": 3, - "data": { - "id": "1", - "label": "Count" - }, - "drawLinesBetweenPoints": true, - "interpolate": "linear", - "lineWidth": 2, - "mode": "stacked", - "show": true, - "showCircles": true, - "type": "histogram", - "valueAxis": "ValueAxis-1" - } - ], - "thresholdLine": { - "color": "#E7664C", - "show": false, - "style": "full", - "value": 10, - "width": 1 - }, - "times": [], - "truncateLegend": true, - "type": "histogram", - "valueAxes": [ - { - "id": "ValueAxis-1", - "labels": { - "filter": false, - "rotate": 0, - "show": true, - "truncate": 100 - }, - "name": "LeftAxis-1", - "position": "left", - "scale": { - "mode": "normal", - "type": "linear" - }, - "show": true, - "style": {}, - "title": { - "text": "Count" - }, - "type": "value" - } - ] - }, - "title": "[SetupAuditTrail] Top 10 Actions Performed [Filebeat Salesforce]", - "type": "histogram" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "f5942600-5d95-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:14:57.093Z", - "version": "WzMzNDg5LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/fbb560f0-5d8e-11ec-9523-d1b667ac64c0.json b/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/fbb560f0-5d8e-11ec-9523-d1b667ac64c0.json deleted file mode 100644 index 6e4e809261e..00000000000 --- a/x-pack/filebeat/module/salesforce/_meta/kibana/7/visualization/fbb560f0-5d8e-11ec-9523-d1b667ac64c0.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "attributes": { - "description": "", - "kibanaSavedObjectMeta": { - "searchSourceJSON": { - "filter": [ - { - "$state": { - "store": "appState" - }, - "meta": { - "alias": null, - "disabled": false, - "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "key": "event.dataset", - "negate": false, - "params": { - "query": "salesforce.login" - }, - "type": "phrase" - }, - "query": { - "match_phrase": { - "event.dataset": "salesforce.login" - } - } - } - ], - "query": { - "language": "kuery", - "query": "" - } - } - }, - "title": "Login over time [Filebeat Salesforce]", - "uiStateJSON": {}, - "version": 1, - "visState": { - "aggs": [], - "params": { - "axis_formatter": "number", - "axis_position": "left", - "axis_scale": "normal", - "drop_last_bucket": 0, - "filter": { - "language": "kuery", - "query": "event.dataset : \"salesforce.login\" " - }, - "id": "ad12785a-5d43-469d-9114-6a83add168c3", - "index_pattern_ref_name": "metrics_0_index_pattern", - "interval": "", - "isModelInvalid": false, - "max_bars": 50, - "max_lines_legend": 1, - "series": [ - { - "axis_position": "right", - "chart_type": "line", - "color": "#68BC00", - "fill": 0.5, - "formatter": "default", - "id": "24098913-4cc2-4304-ab59-1003aa7a9655", - "line_width": 1, - "metrics": [ - { - "id": "434e8b7d-76b7-4947-95d1-aabedd41f524", - "type": "count" - } - ], - "palette": { - "name": "default", - "type": "palette" - }, - "point_size": 1, - "separate_axis": 0, - "split_mode": "everything", - "stacked": "none", - "time_range_mode": "entire_time_range" - } - ], - "show_grid": 1, - "show_legend": 1, - "time_field": "", - "time_range_mode": "entire_time_range", - "tooltip_mode": "show_all", - "truncate_legend": 1, - "type": "timeseries", - "use_kibana_indexes": true - }, - "title": "Login over time [Filebeat Salesforce]", - "type": "metrics" - } - }, - "coreMigrationVersion": "7.15.0", - "id": "fbb560f0-5d8e-11ec-9523-d1b667ac64c0", - "migrationVersion": { - "visualization": "7.14.0" - }, - "references": [ - { - "id": "filebeat-*", - "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", - "type": "index-pattern" - }, - { - "id": "filebeat-*", - "name": "metrics_0_index_pattern", - "type": "index-pattern" - } - ], - "type": "visualization", - "updated_at": "2022-05-06T11:57:27.761Z", - "version": "WzMzODI0LDNd" -} \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/apex-rest/_meta/fields.yml b/x-pack/filebeat/module/salesforce/apex-rest/_meta/fields.yml deleted file mode 100644 index ed400781b6b..00000000000 --- a/x-pack/filebeat/module/salesforce/apex-rest/_meta/fields.yml +++ /dev/null @@ -1,203 +0,0 @@ -- name: salesforce - type: group - release: beta - description: > - Fileset for ingesting Salesforce Apex logs. - fields: - - name: access_mode - type: keyword - description: > - The mode of collecting logs from Salesforce - "rest" or "stream". - - name: apex - type: group - release: beta - description: > - Fileset for ingesting Salesforce Apex logs. - fields: - - name: action - type: keyword - description: > - Action performed by the callout. - - name: callout_time - type: keyword - description: > - Time spent waiting on webservice callouts, in milliseconds. - - name: class_name - type: keyword - description: > - The Apex class name. If the class is part of a managed package, this string includes the package namespace. - - name: client_name - type: keyword - description: > - The name of the client that's using Salesforce services. This field is an optional parameter that can be passed in API calls. If blank, the caller didnt specify a client in the CallOptions header. - - name: cpu_time - type: keyword - description: > - The CPU time in milliseconds used to complete the request. - - name: db_blocks - type: keyword - description: > - Indicates how much activity is occurring in the database. A high value for this field suggests that adding indexes or filters on your queries would benefit performance. - - name: db_cpu_time - type: keyword - description: > - The CPU time in milliseconds to complete the request. Indicates the amount of activity taking place in the database layer during the request. - - name: db_total_time - type: keyword - description: > - Time (in milliseconds) spent waiting for database processing in aggregate for all operations in the request. Compare this field to CPU_TIME to determine whether performance issues are occurring in the database layer or in your own code. - - name: entity - type: keyword - description: > - Name of the external object being accessed. - - name: entity_name - type: keyword - description: > - The name of the object affected by the trigger. - - name: entry_point - type: keyword - description: > - The entry point for this Apex execution. - - name: event_type - type: keyword - description: > - The type of event. The value is always ApexCallout. - - name: execute_ms - type: keyword - description: > - How long it took (in milliseconds) for Salesforce to prepare and execute the query. Available in API version 42.0 and later. - - name: fetch_ms - type: keyword - description: > - How long it took (in milliseconds) to retrieve the query results from the external system. Available in API version 42.0 and later. - - name: filter - type: keyword - description: > - Field expressions to filter which rows to return. Corresponds to WHERE in SOQL queries. - - name: is_long_running_request - type: keyword - description: > - Indicates whether the request is counted against your org's concurrent long-running Apex request limit (true) or not (false). - - name: limit - type: keyword - description: > - Maximum number of rows to return for a query. Corresponds to LIMIT in SOQL queries. - - name: limit_usage_percent - type: keyword - description: > - The percentage of Apex SOAP calls that were made against the organization's limit. - - name: login_key - type: keyword - description: > - The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. - - name: media_type - type: keyword - description: > - The media type of the response. - - name: message - type: keyword - description: > - Error or warning message associated with the failed call. - - name: method_name - type: keyword - description: > - The name of the calling Apex method. - - name: number_fields - type: keyword - description: > - The number of fields or columns, where applicable. - - name: number_soql_queries - type: keyword - description: > - The number of SOQL queries that were executed during the event. - - name: offset - type: keyword - description: > - Number of rows to skip when paging through a result set. Corresponds to OFFSET in SOQL queries. - - name: orderby - type: keyword - description: > - Field or column to use for sorting query results, and whether to sort the results in ascending (default) or descending order. Corresponds to ORDER BY in SOQL queries. - - name: organization_id - type: keyword - description: > - The 15-character ID of the organization. - - name: query - type: keyword - description: > - The SOQL query, if one was performed. - - name: quiddity - type: keyword - description: > - The type of outer execution associated with this event. - - name: request.id - type: keyword - description: > - The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same REQUEST_ID. - - name: request.status - type: keyword - description: > - The status of the request for a page view or user interface action. - - name: rows.total - type: keyword - description: > - Total number of records in the result set. The value is always -1 if the custom adapter's DataSource.Provider class doesn't declare the QUERY_TOTAL_SIZE capability. - - name: rows.fetched - type: keyword - description: > - Number of rows fetched by the callout. Available in API version 42.0 and later. - - name: rows.processed - type: keyword - description: > - The number of rows that were processed in the request. - - name: run_time - type: keyword - description: > - Not used for this event type. Use the TIME field instead. - - name: select - type: keyword - description: > - Comma-separated list of fields being queried. Corresponds to SELECT in SOQL queries. - - name: subqueries - type: keyword - description: > - Reserved for future use. - - name: throughput - type: keyword - description: > - Number of records retrieved in one second. - - name: trigger - type: group - fields: - - name: id - type: keyword - description: > - The 15-character ID of the trigger that was fired. - - name: name - type: keyword - description: > - For triggers coming from managed packages, TRIGGER_NAME includes a namespace prefix separated with a . character. If no namespace prefix is present, the trigger is from an unmanaged trigger. - - name: type - type: keyword - description: > - The type of this trigger. - - name: type - type: keyword - description: > - The type of Apex callout. - - name: uri - type: keyword - description: > - The URI of the page that's receiving the request. - - name: uri_id_derived - type: keyword - description: > - The 18-character case-safe ID of the URI of the page that's receiving the request. - - name: user_agent - type: keyword - description: > - The numeric code for the type of client used to make the request (for example, the browser, application, or API). - - name: user_id_derived - type: keyword - description: > - The 18-character case-safe ID of the user who's using Salesforce services through the UI or the API. diff --git a/x-pack/filebeat/module/salesforce/apex-rest/config/apex-rest.yml b/x-pack/filebeat/module/salesforce/apex-rest/config/apex-rest.yml deleted file mode 100644 index 5a5af4ab5d3..00000000000 --- a/x-pack/filebeat/module/salesforce/apex-rest/config/apex-rest.yml +++ /dev/null @@ -1,71 +0,0 @@ -{{ if eq .input "httpjson" }} - -type: httpjson -interval: {{ .interval }} -request.method: GET -auth.oauth2: - enabled: true - {{ if .client_id }} - client.id: {{ .client_id }} - {{ end }} - {{ if .client_secret }} - client.secret: {{ .client_secret }} - {{ end }} - {{ if .token_url }} - token_url: {{ .token_url }} - {{ end }} - {{ if .user }} - user: {{ .user }} - {{ end }} - {{ if .password }} - password: {{ .password }} - {{ end }} -# Query params will be overwritten by request.transforms from start of the input and -# it is to indicate that this url is for Apex type of events as cursor stores the url as source. -# Each filebeat input cursor source needs to be uniquely identified with a name. -request.url: {{ .url }}/services/data/v52.0/query?q=apex+rest -{{ if .proxy_url }} -request.proxy_url: {{ .proxy_url }} -{{ end }} -request.transforms: - - set: - target: url.params.q - value: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = 'Hourly' AND LogDate > [[.cursor.last_published_apex]] AND (EventType = 'ApexCallout' OR EventType = 'ApexExecution' OR EventType = 'ApexRestApi' OR EventType = 'ApexSoap' OR EventType = 'ApexTrigger' OR EventType = 'ExternalCustomApexCallout') ORDER BY LogDate ASC NULLS FIRST" - default: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = 'Hourly' AND (EventType = 'ApexCallout' OR EventType = 'ApexExecution' OR EventType = 'ApexRestApi' OR EventType = 'ApexSoap' OR EventType = 'ApexTrigger' OR EventType = 'ExternalCustomApexCallout') ORDER BY LogDate ASC NULLS FIRST" -response.pagination: - - set: - target: url.value - value: '[[if (ne .last_response.body.done true)]]{{ .url }}[[.last_response.body.nextRecordsUrl]][[end]]' - fail_on_template_error: true -chain: - - step: - request.url: {{ .url }}/services/data/v52.0/sobjects/EventLogFile/$.records[:].Id/LogFile - request.method: GET - replace: $.records[:].Id -cursor: - last_published_apex: - value: '[[(formatDate ((parseDate .last_event.TIMESTAMP_DERIVED "RFC3339").Add (parseDuration "-1h")))]]' - -{{ else if eq .input "file" }} - -type: log -paths: -{{ range $i, $path := .paths }} - - {{$path}} -{{ end }} -exclude_files: [".gz$"] - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -processors: - - decode_json_fields: - fields: [message] - target: "json" - - add_fields: - target: '' - fields: - ecs.version: 1.12.0 - - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/apex-rest/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/apex-rest/ingest/pipeline.yml deleted file mode 100644 index 9af3151aba2..00000000000 --- a/x-pack/filebeat/module/salesforce/apex-rest/ingest/pipeline.yml +++ /dev/null @@ -1,353 +0,0 @@ ---- -description: Pipeline for parsing Salesforce apex logs -processors: -- set: - field: event.ingested - value: '{{_ingest.timestamp}}' -- remove: - field: - - message - ignore_missing: true - -- set: - field: salesforce.access_mode - value: rest - ignore_failure: true - -- date: - field: json.TIMESTAMP_DERIVED - target_field: "@timestamp" - formats: - - ISO8601 - ignore_failure: true - -- rename: - field: json.CALLOUT_TIME - target_field: salesforce.apex.callout_time - ignore_missing: true -- rename: - field: json.CPU_TIME - target_field: salesforce.apex.cpu_time - ignore_missing: true -- rename: - field: json.DB_BLOCKS - target_field: salesforce.apex.db_blocks - ignore_missing: true -- rename: - field: json.DB_CPU_TIME - target_field: salesforce.apex.db_cpu_time - ignore_missing: true -- rename: - field: json.DB_TOTAL_TIME - target_field: salesforce.apex.db_total_time - ignore_missing: true -- rename: - field: json.ENTITY_NAME - target_field: salesforce.apex.entity_name - ignore_missing: true -- rename: - field: json.ENTRY_POINT - target_field: salesforce.apex.entry_point - ignore_missing: true -- rename: - field: json.EVENT_TYPE - target_field: salesforce.apex.event_type - ignore_missing: true -- rename: - field: json.IS_LONG_RUNNING_REQUEST - target_field: salesforce.apex.is_long_running_request - ignore_missing: true -- rename: - field: json.LOGIN_KEY - target_field: salesforce.apex.login_key - ignore_missing: true -- rename: - field: json.MEDIA_TYPE - target_field: salesforce.apex.media_type - ignore_missing: true -- rename: - field: json.METHOD_NAME - target_field: salesforce.apex.method_name - ignore_missing: true -- rename: - field: json.NUMBER_FIELDS - target_field: salesforce.apex.number_fields - ignore_missing: true -- rename: - field: json.NUMBER_SOQL_QUERIES - target_field: salesforce.apex.number_soql_queries - ignore_missing: true -- rename: - field: json.OFFSET - target_field: salesforce.apex.offset - ignore_missing: true -- rename: - field: json.ORDERBY - target_field: salesforce.apex.orderby - ignore_missing: true -- rename: - field: json.ORGANIZATION_ID - target_field: salesforce.apex.organization_id - ignore_missing: true -- rename: - field: json.QUERY - target_field: salesforce.apex.query - ignore_missing: true -- rename: - field: json.QUIDDITY - target_field: salesforce.apex.quiddity - ignore_missing: true -- rename: - field: json.REQUEST_ID - target_field: salesforce.apex.request.id - ignore_missing: true -- rename: - field: json.REQUEST_STATUS - target_field: salesforce.apex.request.status - ignore_missing: true -- rename: - field: json.ROWS - target_field: salesforce.apex.rows.total - ignore_missing: true -- rename: - field: json.ROWS_FETCHED - target_field: salesforce.apex.rows.fetched - ignore_missing: true -- rename: - field: json.ROWS_PROCESSED - target_field: salesforce.apex.rows.processed - ignore_missing: true -- rename: - field: json.RUN_TIME - target_field: salesforce.apex.run_time - ignore_missing: true -- rename: - field: json.SELECT - target_field: salesforce.apex.select - ignore_missing: true -- rename: - field: json.SUBQUERIES - target_field: salesforce.apex.subqueries - ignore_missing: true -- rename: - field: json.THROUGHPUT - target_field: salesforce.apex.throughput - ignore_missing: true -- rename: - field: json.TRIGGER_ID - target_field: salesforce.apex.trigger.id - ignore_missing: true -- rename: - field: json.TRIGGER_NAME - target_field: salesforce.apex.trigger.name - ignore_missing: true -- rename: - field: json.TRIGGER_TYPE - target_field: salesforce.apex.trigger.type - ignore_missing: true -- rename: - field: json.TYPE - target_field: salesforce.apex.type - ignore_missing: true -- rename: - field: json.URI - target_field: salesforce.apex.uri - ignore_missing: true -- rename: - field: json.URI_ID_DERIVED - target_field: salesforce.apex.uri_id_derived - ignore_missing: true -- rename: - field: json.USER_AGENT - target_field: salesforce.apex.user_agent - ignore_missing: true -- rename: - field: json.USER_ID_DERIVED - target_field: salesforce.apex.user_id_derived - ignore_missing: true - -####################### -## ECS Event Mapping ## -####################### - -- set: - field: event.dataset - value: "salesforce.apex" -- set: - field: event.kind - value: "event" -- set: - field: event.module - value: "salesforce" - -- set: - field: event.type - value: "connection" - if: 'ctx?.salesforce?.apex?.event_type != "ApexExecution"' - -- set: - field: event.category - value: "network" - if: 'ctx?.salesforce?.apex?.event_type != "ApexTrigger" && ctx?.salesforce?.apex?.event_type != "ApexExecution"' - -- script: - if: ctx?.salesforce?.apex?.event_type != null && ctx?.salesforce?.apex?.event_type != "" - lang: painless - source: | - def eventType = ctx?.salesforce?.apex?.event_type?.toLowerCase(); - Map referenceTable = [ - "apexcallout": "apex-callout", - "apextrigger": "apex-trigger", - "apexexecution": "apex-execution", - "apexrestApi": "apex-rest", - "apexsoap": "apex-soap", - "externalcustomapexcallout": ["apex-external-custom-callout"] - ]; - - ctx.event.action = referenceTable[eventType]; - -- rename: - field: json.TIME - target_field: event.duration - if: 'ctx?.salesforce?.apex?.event_type == "ApexCallout" && ctx?.json?.TIME != ""' -- rename: - field: json.EXEC_TIME - target_field: event.duration - if: '(ctx?.salesforce?.apex?.event_type == "ApexTrigger" || ctx?.salesforce?.apex?.event_type == "ApexExecution") && ctx?.json?.EXEC_TIME != ""' -- rename: - field: salesforce.apex.run_time - target_field: event.duration - if: '(ctx?.salesforce?.apex?.event_type == "ApexRestApi" || ctx?.salesforce?.apex?.event_type == "ApexSoap") && ctx?.salesforce?.apex?.run_time != ""' -- rename: - field: json.TOTAL_MS - target_field: event.duration - if: 'ctx?.salesforce?.apex?.event_type == "ExternalCustomApexCallout" && ctx?.json?.TOTAL_MS != ""' - -- set: - field: event.outcome - value: success - if: 'ctx?.json?.SUCCESS == "1" && ctx?.json?.SUCCESS != null' - ignore_failure: true -- set: - field: event.outcome - value: failure - if: 'ctx?.json?.SUCCESS != "1" && ctx?.json?.SUCCESS != null' - ignore_failure: true -- set: - field: event.outcome - value: success - if: 'ctx?.json?.STATUS == "1" && ctx?.json?.STATUS != null' - ignore_failure: true -- set: - field: event.outcome - value: failure - if: 'ctx?.json?.STATUS != "1" && ctx?.json?.STATUS != null' - ignore_failure: true - -- rename: - field: json.URL - target_field: event.url - ignore_missing: true - if: 'ctx?.salesforce?.apex?.event_type == "ApexCallout"' -- rename: - field: salesforce.apex.uri - target_field: event.url - ignore_missing: true - if: 'ctx?.salesforce?.apex?.event_type != "ApexCallout" && ctx?.salesforce?.apex?.event_type != "ExternalCustomApexCallout"' - -###################### -## ECS User Mapping ## -###################### - -- rename: - field: json.USER_ID - target_field: user.id - ignore_missing: true -- rename: - field: json.USER_TYPE - target_field: user.roles - ignore_missing: true - -######################## -## ECS Source Mapping ## -######################## - -# A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as “Salesforce.com IP” -- rename: - field: json.CLIENT_IP - target_field: source.ip - ignore_missing: true - if: 'ctx?.json?.CLIENT_IP != "Salesforce.com IP" && ctx?.json?.CLIENT_IP != "" && ctx?.json?.CLIENT_IP != null' - -############################ -## ECS Source.Geo Mapping ## -############################ - -# A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as “Salesforce.com IP” -- geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - if: 'ctx?.source?.ip != "Salesforce.com IP" && ctx?.source?.ip != "" && ctx?.source?.ip != null' - -############################ -## ECS Related.ip Mapping ## -############################ - -- append: - field: related.ip - value: "{{{source.ip}}}" - if: ctx?.source?.ip != null - allow_duplicates: false - ignore_failure: true - -###################### -## ECS HTTP Mapping ## -###################### - -- rename: - field: json.METHOD - target_field: http.request.method - ignore_missing: true -- rename: - field: json.REQUEST_SIZE - target_field: http.request.bytes - ignore_missing: true -- rename: - field: json.RESPONSE_SIZE - target_field: http.response.bytes - ignore_missing: true -- rename: - field: json.STATUS_CODE - target_field: http.response.status_code - ignore_missing: true - -############# -## Cleanup ## -############# - -- script: - description: Drops null/empty values recursively - lang: painless - source: | - boolean dropEmptyFields(Object object) { - if (object == null || object == "") { - return true; - } else if (object instanceof Map) { - ((Map) object).values().removeIf(value -> dropEmptyFields(value)); - return (((Map) object).size() == 0); - } else if (object instanceof List) { - ((List) object).removeIf(value -> dropEmptyFields(value)); - return (((List) object).length == 0); - } - return false; - } - dropEmptyFields(ctx); -- remove: - field: - - json - ignore_missing: true -on_failure: -- set: - field: error.message - value: '{{_ingest.on_failure_message}}' diff --git a/x-pack/filebeat/module/salesforce/apex-rest/manifest.yml b/x-pack/filebeat/module/salesforce/apex-rest/manifest.yml deleted file mode 100644 index 54b0495bb70..00000000000 --- a/x-pack/filebeat/module/salesforce/apex-rest/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -module_version: 1.0 - -var: - - name: input - default: httpjson - - name: interval - default: 1h - - name: tags - default: [salesforce-apex-rest,forwarded] - - name: proxy_url - - name: client_id - - name: client_secret - - name: token_url - - name: user - - name: password - - name: url - -ingest_pipeline: - - ingest/pipeline.yml -input: config/apex-rest.yml diff --git a/x-pack/filebeat/module/salesforce/apex/_meta/fields.yml b/x-pack/filebeat/module/salesforce/apex/_meta/fields.yml new file mode 100644 index 00000000000..e61297a739a --- /dev/null +++ b/x-pack/filebeat/module/salesforce/apex/_meta/fields.yml @@ -0,0 +1,174 @@ +- name: salesforce + type: group + release: beta + description: > + Fileset for ingesting Salesforce Apex logs. + fields: + - name: instance_url + type: keyword + description: The Instance URL of the Salesforce instance. + - name: apex + type: group + release: beta + description: > + Fileset for ingesting Salesforce Apex logs. + fields: + - name: document_id + type: keyword + description: Unique ID of the Apex document. + - name: action + type: keyword + description: Action performed by the callout. + - name: callout_time + type: float + description: Time spent waiting on web service callouts, in milliseconds. + unit: ms + metric_type: gauge + - name: class_name + type: keyword + description: The Apex class name. If the class is part of a managed package, this string includes the package namespace. + - name: client_name + type: keyword + description: The name of the client that's using Salesforce services. This field is an optional parameter that can be passed in API calls. If blank, the caller didn't specify a client in the CallOptions header. + - name: cpu_time + type: float + description: The CPU time in milliseconds used to complete the request. + unit: ms + metric_type: gauge + - name: db_blocks + type: long + description: Indicates how much activity is occurring in the database. A high value for this field suggests that adding indexes or filters on your queries would benefit performance. + metric_type: gauge + - name: db_cpu_time + type: float + description: The CPU time in milliseconds to complete the request. Indicates the amount of activity taking place in the database layer during the request. + unit: ms + metric_type: gauge + - name: db_total_time + type: float + description: Time (in milliseconds) spent waiting for database processing in aggregate for all operations in the request. Compare this field to cpu_time to determine whether performance issues are occurring in the database layer or in your own code. + unit: ms + metric_type: gauge + - name: entity + type: keyword + description: Name of the external object being accessed. + - name: entity_name + type: keyword + description: The name of the object affected by the trigger. + - name: entry_point + type: keyword + description: The entry point for this Apex execution. + - name: event_type + type: keyword + description: The type of event. + - name: execute_ms + type: float + description: How long it took (in milliseconds) for Salesforce to prepare and execute the query. Available in API version 42.0 and later. + unit: ms + metric_type: gauge + - name: fetch_ms + type: float + description: How long it took (in milliseconds) to retrieve the query results from the external system. Available in API version 42.0 and later. + unit: ms + metric_type: gauge + - name: filter + type: keyword + description: Field expressions to filter which rows to return. Corresponds to WHERE in SOQL queries. + - name: is_long_running_request + type: keyword + description: Indicates whether the request is counted against your org's concurrent long-running Apex request limit (true) or not (false). + - name: limit + type: long + description: Maximum number of rows to return for a query. Corresponds to LIMIT in SOQL queries. + - name: limit_usage_pct + type: float + description: The percentage of Apex SOAP calls that were made against the organization's limit. + unit: percent + metric_type: gauge + - name: login_key + type: keyword + description: The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. + - name: media_type + type: keyword + description: The media type of the response. + - name: message + type: text + description: Error or warning message associated with the failed call. + - name: method_name + type: keyword + description: The name of the calling Apex method. + - name: fields_count + type: long + description: The number of fields or columns, where applicable. + - name: soql_queries_count + type: long + description: The number of SOQL queries that were executed during the event. + - name: offset + type: long + description: Number of rows to skip when paging through a result set. Corresponds to OFFSET in SOQL queries. + - name: orderby + type: keyword + description: Field or column to use for sorting query results, and whether to sort the results in ascending (default) or descending order. Corresponds to ORDER BY in SOQL queries. + - name: organization_id + type: keyword + description: The 15-character ID of the organization. + - name: query + type: keyword + description: The SOQL query, if one was performed. + - name: quiddity + type: keyword + description: The type of outer execution associated with this event. + - name: request_id + type: keyword + description: The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same request_id. + - name: request_status + type: keyword + description: The status of the request for a page view or user interface action. + - name: rows_total + type: long + description: Total number of records in the result set. The value is always -1 if the custom adapter's DataSource.Provider class doesn't declare the QUERY_TOTAL_SIZE capability. + - name: rows_fetched + type: long + description: Number of rows fetched by the callout. Available in API version 42.0 and later. + - name: rows_processed + type: long + description: The number of rows that were processed in the request. + - name: run_time + type: float + description: The amount of time that the request took in milliseconds. + unit: ms + metric_type: gauge + - name: select + type: keyword + description: Comma-separated list of fields being queried. Corresponds to SELECT in SOQL queries. + - name: subqueries + type: keyword + description: Reserved for future use. + - name: throughput + type: float + description: Number of records retrieved in one second. + metric_type: gauge + - name: trigger_id + type: keyword + description: The 15-character ID of the trigger that was fired. + - name: trigger_name + type: keyword + description: For triggers coming from managed packages, trigger_name includes a namespace prefix separated with a . character. If no namespace prefix is present, the trigger is from an unmanaged trigger. + - name: trigger_type + type: keyword + description: The type of this trigger. + - name: type + type: keyword + description: The type of Apex callout. + - name: uri + type: keyword + description: The URI of the page that's receiving the request. + - name: uri_derived_id + type: keyword + description: The 18-character case-safe ID of the URI of the page that's receiving the request. + - name: user_agent + type: keyword + description: The numeric code for the type of client used to make the request (for example, the browser, application, or API). + - name: user_id_derived + type: keyword + description: The 18-character case-safe ID of the user who's using Salesforce services through the UI or the API. \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/apex/config/apex.yml b/x-pack/filebeat/module/salesforce/apex/config/apex.yml new file mode 100644 index 00000000000..ace9bcb93fd --- /dev/null +++ b/x-pack/filebeat/module/salesforce/apex/config/apex.yml @@ -0,0 +1,40 @@ +{{ if eq .input "salesforce" }} + +id: apex +type: salesforce +enabled: true +{{ if .api_version }} +version: {{ .api_version }} +{{ end }} +auth.oauth2: {{ .authentication | tojson }} +url: {{ .url }} +event_monitoring_method: + event_log_file: + enabled: true + interval: {{ .elf_interval }} + query: + default: SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE {{ if .initial_interval }}LogDate > [[ (formatTime (now.Add (parseDuration "-{{ .initial_interval }}")) "2006-01-02T15:04:05.000Z0700") ]] AND{{ end }} Interval = '{{ .log_file_interval }}' AND (EventType = 'ApexCallout' OR EventType = 'ApexExecution' OR EventType = 'ApexRestApi' OR EventType = 'ApexSoap' OR EventType = 'ApexTrigger' OR EventType = 'ExternalCustomApexCallout') ORDER BY LogDate ASC NULLS FIRST + value: SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = '{{ .log_file_interval }}' AND CreatedDate > [[ .cursor.event_log_file.last_event_time ]] AND (EventType = 'ApexCallout' OR EventType = 'ApexExecution' OR EventType = 'ApexRestApi' OR EventType = 'ApexSoap' OR EventType = 'ApexTrigger' OR EventType = 'ExternalCustomApexCallout') ORDER BY LogDate ASC NULLS FIRST + cursor: + field: "CreatedDate" + +{{ else if eq .input "file" }} + +type: log +paths: +{{ range $i, $path := .paths }} + - {{$path}} +{{ end }} +exclude_files: [".gz$"] + +{{ end }} + +tags: {{.tags | tojson}} +publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} + +processors: + - add_fields: + target: salesforce + fields: + instance_url: {{ .url }} + - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/apex/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/apex/ingest/pipeline.yml new file mode 100644 index 00000000000..92ca1feabd8 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/apex/ingest/pipeline.yml @@ -0,0 +1,531 @@ +--- +description: Pipeline for parsing Salesforce Apex logs +processors: + - json: + field: message + target_field: json + on_failure: + - append: + field: error.message + value: "Failed to parse JSON: {{{_ingest.on_failure_message}}}" + - set: + field: event.original + copy_from: message + ignore_empty_value: true + ignore_failure: true + if: "ctx.event?.original == null" + - set: + field: ecs.version + value: "8.11.0" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.ingested + copy_from: _ingest.timestamp + - set: + field: salesforce.apex.document_id + copy_from: _id + ignore_empty_value: true + - date: + field: json.TIMESTAMP_DERIVED + target_field: "@timestamp" + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "Failed to parse TIMESTAMP_DERIVED field: {{{_ingest.on_failure_message}}}" + - rename: + field: json.ACTION + target_field: salesforce.apex.action + ignore_missing: true + ignore_failure: true + - convert: + field: json.CALLOUT_TIME + target_field: salesforce.apex.callout_time + type: float + ignore_missing: true + ignore_failure: true + - rename: + field: json.CLASS_NAME + target_field: salesforce.apex.class_name + ignore_missing: true + ignore_failure: true + - rename: + field: json.CLIENT_NAME + target_field: salesforce.apex.client_name + ignore_missing: true + ignore_failure: true + - convert: + field: json.CPU_TIME + target_field: salesforce.apex.cpu_time + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.DB_BLOCKS + target_field: salesforce.apex.db_blocks + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.DB_CPU_TIME + target_field: salesforce.apex.db_cpu_time + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.DB_TOTAL_TIME + target_field: salesforce.apex.db_total_time + type: float + ignore_missing: true + ignore_failure: true + - rename: + field: json.ENTITY + target_field: salesforce.apex.entity + ignore_missing: true + ignore_failure: true + - rename: + field: json.ENTITY_NAME + target_field: salesforce.apex.entity_name + ignore_missing: true + ignore_failure: true + - rename: + field: json.ENTRY_POINT + target_field: salesforce.apex.entry_point + ignore_missing: true + ignore_failure: true + - rename: + field: json.EVENT_TYPE + target_field: salesforce.apex.event_type + ignore_missing: true + ignore_failure: true + - convert: + field: json.EXECUTE_MS + target_field: salesforce.apex.execute_ms + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.FETCH_MS + target_field: salesforce.apex.fetch_ms + type: float + ignore_missing: true + ignore_failure: true + - rename: + field: json.FILTER + target_field: salesforce.apex.filter + ignore_missing: true + ignore_failure: true + - rename: + field: json.IS_LONG_RUNNING_REQUEST + target_field: salesforce.apex.is_long_running_request + ignore_missing: true + ignore_failure: true + - rename: + field: json.LOGIN_KEY + target_field: salesforce.apex.login_key + ignore_missing: true + ignore_failure: true + - convert: + field: json.LIMIT + target_field: salesforce.apex.limit + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.LIMIT_USAGE_PERCENT + target_field: salesforce.apex.limit_usage_pct + type: float + ignore_missing: true + ignore_failure: true + - rename: + field: json.MEDIA_TYPE + target_field: salesforce.apex.media_type + ignore_missing: true + ignore_failure: true + - rename: + field: json.MESSAGE + target_field: salesforce.apex.message + ignore_missing: true + ignore_failure: true + - rename: + field: json.METHOD_NAME + target_field: salesforce.apex.method_name + ignore_missing: true + ignore_failure: true + - convert: + field: json.NUMBER_FIELDS + target_field: salesforce.apex.fields_count + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.NUMBER_SOQL_QUERIES + target_field: salesforce.apex.soql_queries_count + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.OFFSET + target_field: salesforce.apex.offset + type: long + ignore_missing: true + ignore_failure: true + - rename: + field: json.ORDERBY + target_field: salesforce.apex.orderby + ignore_missing: true + ignore_failure: true + - rename: + field: json.ORGANIZATION_ID + target_field: salesforce.apex.organization_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.QUERY + target_field: salesforce.apex.query + ignore_missing: true + ignore_failure: true + - rename: + field: json.QUIDDITY + target_field: salesforce.apex.quiddity + ignore_missing: true + ignore_failure: true + - rename: + field: json.REQUEST_ID + target_field: salesforce.apex.request_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.REQUEST_STATUS + target_field: salesforce.apex.request_status + ignore_missing: true + ignore_failure: true + - convert: + field: json.ROWS + target_field: salesforce.apex.rows_total + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.ROWS_FETCHED + target_field: salesforce.apex.rows_fetched + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.ROWS_PROCESSED + target_field: salesforce.apex.rows_processed + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.RUN_TIME + target_field: salesforce.apex.run_time + type: float + ignore_missing: true + ignore_failure: true + - rename: + field: json.SELECT + target_field: salesforce.apex.select + ignore_missing: true + ignore_failure: true + - rename: + field: json.SUBQUERIES + target_field: salesforce.apex.subqueries + ignore_missing: true + ignore_failure: true + - convert: + field: json.THROUGHPUT + target_field: salesforce.apex.throughput + type: float + ignore_missing: true + ignore_failure: true + - rename: + field: json.TRIGGER_ID + target_field: salesforce.apex.trigger_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.TRIGGER_NAME + target_field: salesforce.apex.trigger_name + ignore_missing: true + ignore_failure: true + - rename: + field: json.TRIGGER_TYPE + target_field: salesforce.apex.trigger_type + ignore_missing: true + ignore_failure: true + - rename: + field: json.TYPE + target_field: salesforce.apex.type + ignore_missing: true + ignore_failure: true + - rename: + field: json.URI + target_field: salesforce.apex.uri + ignore_missing: true + ignore_failure: true + - rename: + field: json.URI_ID_DERIVED + target_field: salesforce.apex.uri_derived_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.USER_AGENT + target_field: salesforce.apex.user_agent + ignore_missing: true + ignore_failure: true + - script: + description: Set request user agent value from user agent numeric code. + lang: painless + params: + user_agent_map: + "100": "Internet Explorer" + "110": "Firefox" + "130": "Chrome" + "140": "Safari" + "150": "Opera" + "160": "Android" + "170": "Netscape" + "180": "Webkit" + "190": "Gecko" + "230": "Blackberry" + "240": "Good Access" + "999": "Unknown" + if: "ctx.salesforce?.apex?.user_agent != null" + source: | + if (params.user_agent_map.containsKey(ctx.salesforce.apex.user_agent.toString().substring(0,3))) { + ctx.salesforce.apex.user_agent = params.user_agent_map[ctx.salesforce.apex.user_agent.toString().substring(0,3)]; + } + on_failure: + - append: + field: error.message + value: "Failed to set salesforce.apex.user_agent: {{{_ingest.on_failure_message}}}" + - rename: + field: json.USER_ID_DERIVED + target_field: salesforce.apex.user_id_derived + ignore_missing: true + ignore_failure: true + + ####################### + ## ECS Event Mapping ## + ####################### + + - set: + field: event.kind + value: event + if: ctx.event?.kind == null + - set: + field: event.type + value: connection + if: ctx.salesforce?.apex?.event_type != "ApexExecution" + ignore_failure: true + - append: + field: event.category + value: network + if: ctx.salesforce?.apex?.event_type != "ApexTrigger" && ctx.salesforce?.apex?.event_type != "ApexExecution" + allow_duplicates: false + ignore_failure: true + - script: + description: Set event.action field based on the type of Apex event received. + if: ctx.salesforce?.apex?.event_type != null + lang: painless + params: + event_action_map: + apexcallout: apex-callout + apextrigger: apex-trigger + apexexecution: apex-execution + apexrestapi: apex-rest + apexsoap: apex-soap + externalcustomapexcallout: apex-external-custom-callout + source: | + def eventType = ctx?.salesforce?.apex?.event_type?.toLowerCase(); + if (params.event_action_map.containsKey(eventType)) { + ctx.event.action = params.event_action_map[eventType]; + } + on_failure: + - append: + field: error.message + value: "Failed to set event.action from salesforce.apex.event_type: {{{_ingest.on_failure_message}}}" + - convert: + field: json.TIME + target_field: event.duration + type: float + if: ctx.salesforce?.apex?.event_type == "ApexCallout" && ctx.json?.TIME != null + ignore_failure: true + - convert: + field: json.EXEC_TIME + target_field: event.duration + type: float + if: (ctx.salesforce?.apex?.event_type == "ApexTrigger" || ctx.salesforce?.apex?.event_type == "ApexExecution") && ctx.json?.EXEC_TIME != null + ignore_failure: true + - convert: + field: salesforce.apex.run_time + target_field: event.duration + type: float + if: (ctx.salesforce?.apex?.event_type == "ApexRestApi" || ctx.salesforce?.apex?.event_type == "ApexSoap") && ctx.salesforce?.apex?.run_time != null + ignore_failure: true + - convert: + field: json.TOTAL_MS + target_field: event.duration + type: float + if: ctx.salesforce?.apex?.event_type == "ExternalCustomApexCallout" && ctx.json?.TOTAL_MS != null + ignore_failure: true + - set: + field: event.outcome + value: success + if: (ctx.json?.SUCCESS == "1" && ctx.json?.SUCCESS != null) || (ctx.json?.STATUS == "1" && ctx.json?.STATUS != null) + ignore_failure: true + - set: + field: event.outcome + value: failure + if: (ctx.json?.SUCCESS != "1" && ctx.json?.SUCCESS != null) || (ctx.json?.STATUS != "1" && ctx.json?.STATUS != null) + ignore_failure: true + - rename: + field: json.URL + target_field: event.url + if: ctx.salesforce?.apex?.event_type == "ApexCallout" + ignore_missing: true + ignore_failure: true + - rename: + field: salesforce.apex.uri + target_field: event.url + if: ctx.salesforce?.apex?.event_type != "ApexCallout" && ctx.salesforce?.apex?.event_type != "ExternalCustomApexCallout" + ignore_missing: true + ignore_failure: true + - set: + field: event.dataset + value: salesforce.apex + if: ctx.event?.dataset == null + - set: + field: event.module + value: salesforce + if: ctx.event?.module == null + + ###################### + ## ECS User Mapping ## + ###################### + + - rename: + field: json.USER_ID + target_field: user.id + ignore_missing: true + ignore_failure: true + - append: + field: user.roles + value: "{{{json.USER_TYPE}}}" + allow_duplicates: false + ignore_failure: true + - remove: + field: json.USER_TYPE + ignore_missing: true + ignore_failure: true + + ######################## + ## ECS Source Mapping ## + ######################## + + # A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as "Salesforce.com IP" + - rename: + field: json.CLIENT_IP + target_field: source.ip + if: ctx.json?.CLIENT_IP != "Salesforce.com IP" && ctx.json?.CLIENT_IP != null + ignore_missing: true + ignore_failure: true + + ############################ + ## ECS source.geo Mapping ## + ############################ + + # A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as "Salesforce.com IP" + - geoip: + field: source.ip + target_field: source.geo + if: ctx.source?.ip != "Salesforce.com IP" && ctx.source?.ip != null + ignore_missing: true + ignore_failure: true + + ############################ + ## ECS related.ip Mapping ## + ############################ + + - append: + field: related.ip + value: "{{{source.ip}}}" + if: ctx?.source?.ip != null + allow_duplicates: false + ignore_failure: true + + ###################### + ## ECS HTTP Mapping ## + ###################### + + - rename: + field: json.METHOD + target_field: http.request.method + ignore_missing: true + ignore_failure: true + - convert: + field: json.REQUEST_SIZE + target_field: http.request.bytes + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.RESPONSE_SIZE + target_field: http.response.bytes + type: long + ignore_missing: true + ignore_failure: true + - convert: + field: json.STATUS_CODE + target_field: http.response.status_code + type: long + ignore_missing: true + ignore_failure: true + + ############# + ## Cleanup ## + ############# + + - script: + description: Drops null/empty values recursively + lang: painless + source: | + boolean dropEmptyFields(Object object) { + if (object == null || object == "") { + return true; + } else if (object instanceof Map) { + ((Map) object).values().removeIf(value -> dropEmptyFields(value)); + return ((Map) object).isEmpty(); + } else if (object instanceof List) { + ((List) object).removeIf(value -> dropEmptyFields(value)); + return ((List) object).isEmpty(); + } + return false; + } + dropEmptyFields(ctx); + - remove: + field: + - json + - message + ignore_failure: true + ignore_missing: true + - remove: + field: event.original + if: "ctx.tags == null || !(ctx.tags.contains('preserve_original_event'))" + ignore_failure: true + ignore_missing: true + +on_failure: + - set: + field: event.kind + value: pipeline_error + - set: + field: error.message + value: "{{{_ingest.on_failure_message}}}" + - set: + field: error.type + value: "{{{_ingest.on_failure_processor_type}}}" diff --git a/x-pack/filebeat/module/salesforce/apex/manifest.yml b/x-pack/filebeat/module/salesforce/apex/manifest.yml new file mode 100644 index 00000000000..d0753e7e38d --- /dev/null +++ b/x-pack/filebeat/module/salesforce/apex/manifest.yml @@ -0,0 +1,19 @@ +module_version: 1.0 + +var: + - name: input + default: salesforce + - name: tags + default: [salesforce-apex,forwarded] + - name: api_version + - name: authentication + - name: url + - name: elf_interval + default: 1h + - name: initial_interval + - name: log_file_interval + default: Hourly + +ingest_pipeline: + - ingest/pipeline.yml +input: config/apex.yml diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_callout.ndjson.log b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_callout.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_callout.ndjson.log rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_callout.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_callout.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_callout.ndjson.log-expected.json similarity index 82% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_callout.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_callout.ndjson.log-expected.json index fe5d3ed8e31..43e592a85c9 100644 --- a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_callout.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_callout.ndjson.log-expected.json @@ -2,16 +2,18 @@ { "@timestamp": "2021-11-02T09:12:50.488Z", "event.action": "apex-callout", - "event.category": "network", + "event.category": [ + "network" + ], "event.dataset": "salesforce.apex", - "event.duration": 1293, + "event.duration": 1293.0, "event.kind": "event", "event.module": "salesforce", "event.outcome": "failure", "event.timezone": "-02:00", "event.type": "connection", "event.url": "https://api-prod.guidance.sfdc.sh/odata/Accounts?%24top=1&%24filter=%28startswith%28Organization_id_dw__c%2C%2700D5j000000VI3n%27%29%29&%24select=Aov_band__c%2CCombo_sector__c%2CCsg_coverage__c%2CCsg_portfolio__c%2CId%2CIndustry%2CL1_aov_cloud1__c%2CL1_aov_cloud2__c%2CLocked_industry__c%2CLocked_sector__c%2CSfdc_sector__c%2CSfid%2CSub_sector__c%2CSupportLevel__c%2CTotal_aov__c", - "fileset.name": "apex-rest", + "fileset.name": "apex", "http.request.bytes": -1, "http.request.method": "GET", "http.response.bytes": 256, @@ -20,19 +22,19 @@ "related.ip": [ "10.0.1.123" ], - "salesforce.access_mode": "rest", - "salesforce.apex.cpu_time": -1, + "salesforce.apex.cpu_time": -1.0, "salesforce.apex.event_type": "ApexCallout", "salesforce.apex.organization_id": "00D5j000000VI3n", - "salesforce.apex.run_time": 1305, + "salesforce.apex.run_time": 1305.0, "salesforce.apex.type": "OData", "salesforce.apex.uri": "CALLOUT-LOG", "salesforce.apex.user_id_derived": "0055j000000utlPAAQ", + "salesforce.instance_url": "", "service.type": "salesforce", "source.ip": "10.0.1.123", "tags": [ "forwarded", - "salesforce-apex-rest" + "salesforce-apex" ], "user.id": "0055j000000utlP" } diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_execution.ndjson.log b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_execution.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_execution.ndjson.log rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_execution.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_execution.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_execution.ndjson.log-expected.json similarity index 66% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_execution.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_execution.ndjson.log-expected.json index e39794b7bcf..42a58a9bb25 100644 --- a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_execution.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_execution.ndjson.log-expected.json @@ -3,31 +3,31 @@ "@timestamp": "2021-11-02T09:20:46.003Z", "event.action": "apex-execution", "event.dataset": "salesforce.apex", - "event.duration": 1, + "event.duration": 1.0, "event.kind": "event", "event.module": "salesforce", "event.timezone": "-02:00", - "fileset.name": "apex-rest", + "fileset.name": "apex", "input.type": "log", "log.offset": 0, - "salesforce.access_mode": "rest", - "salesforce.apex.callout_time": 0, - "salesforce.apex.cpu_time": 79, - "salesforce.apex.db_total_time": 0, + "salesforce.apex.callout_time": 0.0, + "salesforce.apex.cpu_time": 79.0, + "salesforce.apex.db_total_time": 0.0, "salesforce.apex.entry_point": "VF- /apex/listApexClass.apexp", "salesforce.apex.event_type": "ApexExecution", "salesforce.apex.is_long_running_request": 0, "salesforce.apex.login_key": "MroEDyLplzWdOHPJ", - "salesforce.apex.number_soql_queries": 0, "salesforce.apex.organization_id": "00D5j000000VI3n", "salesforce.apex.quiddity": "V", - "salesforce.apex.request.id": "4fDkD4xoOfMXKFl1cJOo_V", - "salesforce.apex.run_time": 162, + "salesforce.apex.request_id": "4fDkD4xoOfMXKFl1cJOo_V", + "salesforce.apex.run_time": 162.0, + "salesforce.apex.soql_queries_count": 0, "salesforce.apex.user_id_derived": "0055j000000utlPAAQ", + "salesforce.instance_url": "", "service.type": "salesforce", "tags": [ "forwarded", - "salesforce-apex-rest" + "salesforce-apex" ], "user.id": "0055j000000utlP" } diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_external_callout.ndjson.log b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_external_callout.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_external_callout.ndjson.log rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_external_callout.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_external_callout.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_external_callout.ndjson.log-expected.json similarity index 60% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_external_callout.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_external_callout.ndjson.log-expected.json index 74aa47c145d..bab3aba3fdb 100644 --- a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_external_callout.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_external_callout.ndjson.log-expected.json @@ -1,31 +1,37 @@ [ { "@timestamp": "2021-11-10T10:11:09.997Z", - "event.action": [ - "apex-external-custom-callout" + "event.action": "apex-external-custom-callout", + "event.category": [ + "network" ], - "event.category": "network", "event.dataset": "salesforce.apex", - "event.duration": 13, + "event.duration": 13.0, "event.kind": "event", "event.module": "salesforce", "event.outcome": "failure", "event.timezone": "-02:00", "event.type": "connection", - "fileset.name": "apex-rest", + "fileset.name": "apex", "input.type": "log", "log.offset": 0, - "salesforce.access_mode": "rest", + "salesforce.apex.action": "query", + "salesforce.apex.entity": "HealthcareBlog", "salesforce.apex.event_type": "ExternalCustomApexCallout", + "salesforce.apex.execute_ms": 8.0, + "salesforce.apex.fetch_ms": 5.0, + "salesforce.apex.limit": 51, + "salesforce.apex.message": "Unauthorized endpoint, please check Setup->Security->Remote site settings. endpoint = https://www.healthcare.gov/api/blog.json : ()", "salesforce.apex.offset": 0, "salesforce.apex.orderby": "(Order:[columnName=ExternalId, direction=ASCENDING, tableName=HealthcareBlog], Order:[columnName=ExternalId, direction=ASCENDING, tableName=HealthcareBlog])", "salesforce.apex.organization_id": "00D5j000000VI3n", - "salesforce.apex.request.id": "TID:10799890000ce8142a", + "salesforce.apex.request_id": "TID:10799890000ce8142a", "salesforce.apex.select": "(ColumnSelection:[aggregation=NONE, columnName=DisplayUrl, tableName=HealthcareBlog], ColumnSelection:[aggregation=NONE, columnName=ExternalId, tableName=HealthcareBlog])", + "salesforce.instance_url": "", "service.type": "salesforce", "tags": [ "forwarded", - "salesforce-apex-rest" + "salesforce-apex" ], "user.id": "0055j000000utlP" } diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_rest.ndjson.log b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_rest.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_rest.ndjson.log rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_rest.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_rest.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_rest.ndjson.log-expected.json similarity index 63% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_rest.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_rest.ndjson.log-expected.json index ffed6673131..dcda8505712 100644 --- a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_rest.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_rest.ndjson.log-expected.json @@ -1,15 +1,18 @@ [ { "@timestamp": "2021-11-09T06:00:01.635Z", - "event.category": "network", + "event.action": "apex-rest", + "event.category": [ + "network" + ], "event.dataset": "salesforce.apex", - "event.duration": 478, + "event.duration": 478.0, "event.kind": "event", "event.module": "salesforce", "event.timezone": "-02:00", "event.type": "connection", "event.url": "/Account/", - "fileset.name": "apex-rest", + "fileset.name": "apex", "http.request.method": "POST", "http.response.status_code": 200, "input.type": "log", @@ -17,26 +20,29 @@ "related.ip": [ "43.224.11.237" ], - "salesforce.access_mode": "rest", - "salesforce.apex.cpu_time": 94, + "salesforce.apex.cpu_time": 94.0, "salesforce.apex.db_blocks": 4401, - "salesforce.apex.db_cpu_time": 130, - "salesforce.apex.db_total_time": 232002551, + "salesforce.apex.db_cpu_time": 130.0, + "salesforce.apex.db_total_time": 232002540.0, "salesforce.apex.event_type": "ApexRestApi", "salesforce.apex.login_key": "ieC2BVibz9GliuON", "salesforce.apex.media_type": "application/json;charset=UTF-8", "salesforce.apex.organization_id": "00D5j000000VI3n", - "salesforce.apex.request.id": "4fMAJzbahOQk2kl1cJ0uSV", - "salesforce.apex.request.status": "S", + "salesforce.apex.request_id": "4fMAJzbahOQk2kl1cJ0uSV", + "salesforce.apex.request_status": "S", + "salesforce.apex.run_time": 478.0, "salesforce.apex.user_agent": 5236, "salesforce.apex.user_id_derived": "0055j000000utlPAAQ", + "salesforce.instance_url": "", "service.type": "salesforce", "source.ip": "43.224.11.237", "tags": [ "forwarded", - "salesforce-apex-rest" + "salesforce-apex" ], "user.id": "0055j000000utlP", - "user.roles": "Standard" + "user.roles": [ + "Standard" + ] } ] \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_soap.ndjson.log b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_soap.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_soap.ndjson.log rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_soap.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_soap.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_soap.ndjson.log-expected.json similarity index 59% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_soap.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_soap.ndjson.log-expected.json index 96feff5da7d..b3da78384fa 100644 --- a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_soap.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_soap.ndjson.log-expected.json @@ -2,37 +2,44 @@ { "@timestamp": "2021-11-09T11:48:38.534Z", "event.action": "apex-soap", - "event.category": "network", + "event.category": [ + "network" + ], "event.dataset": "salesforce.apex", - "event.duration": 36, + "event.duration": 36.0, "event.kind": "event", "event.module": "salesforce", "event.timezone": "-02:00", "event.type": "connection", "event.url": "APEXSOAP", - "fileset.name": "apex-rest", + "fileset.name": "apex", "input.type": "log", "log.offset": 0, "related.ip": [ "43.224.11.237" ], - "salesforce.access_mode": "rest", - "salesforce.apex.cpu_time": 17, - "salesforce.apex.db_total_time": 14928037, + "salesforce.apex.class_name": "ContactResource", + "salesforce.apex.cpu_time": 17.0, + "salesforce.apex.db_total_time": 14928037.0, "salesforce.apex.event_type": "ApexSoap", + "salesforce.apex.limit_usage_pct": 2.67, "salesforce.apex.login_key": "1HQDaq9tglsI4Nlo", "salesforce.apex.method_name": "getContactIdAndNames", "salesforce.apex.organization_id": "00D5j000000VI3n", - "salesforce.apex.request.id": "4fMTLXm8qV3kTVl1cJNxMV", - "salesforce.apex.request.status": "S", + "salesforce.apex.request_id": "4fMTLXm8qV3kTVl1cJNxMV", + "salesforce.apex.request_status": "S", + "salesforce.apex.run_time": 36.0, "salesforce.apex.user_id_derived": "0055j000000utlPAAQ", + "salesforce.instance_url": "", "service.type": "salesforce", "source.ip": "43.224.11.237", "tags": [ "forwarded", - "salesforce-apex-rest" + "salesforce-apex" ], "user.id": "0055j000000utlP", - "user.roles": "Standard" + "user.roles": [ + "Standard" + ] } ] \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_trigger.ndjson.log b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_trigger.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_trigger.ndjson.log rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_trigger.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_trigger.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_trigger.ndjson.log-expected.json similarity index 62% rename from x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_trigger.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_trigger.ndjson.log-expected.json index 6e04d3436ce..f95936eb435 100644 --- a/x-pack/filebeat/module/salesforce/apex-rest/test/salesforce_apex_trigger.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/apex/test/salesforce_apex_trigger.ndjson.log-expected.json @@ -3,28 +3,28 @@ "@timestamp": "2021-11-02T09:25:02.894Z", "event.action": "apex-trigger", "event.dataset": "salesforce.apex", - "event.duration": 4, + "event.duration": 4.0, "event.kind": "event", "event.module": "salesforce", "event.timezone": "-02:00", "event.type": "connection", - "fileset.name": "apex-rest", + "fileset.name": "apex", "input.type": "log", "log.offset": 0, - "salesforce.access_mode": "rest", - "salesforce.apex.cpu_time": 3, + "salesforce.apex.cpu_time": 3.0, "salesforce.apex.entity_name": "Book__c", "salesforce.apex.event_type": "ApexTrigger", "salesforce.apex.organization_id": "00D5j000000VI3n", - "salesforce.apex.request.id": "4fDkS1iz2_p5i-l1cJOqAV", - "salesforce.apex.trigger.id": "01q5j000000ClvF", - "salesforce.apex.trigger.name": "HelloWorldTrigger", - "salesforce.apex.trigger.type": "BeforeInsert", + "salesforce.apex.request_id": "4fDkS1iz2_p5i-l1cJOqAV", + "salesforce.apex.trigger_id": "01q5j000000ClvF", + "salesforce.apex.trigger_name": "HelloWorldTrigger", + "salesforce.apex.trigger_type": "BeforeInsert", "salesforce.apex.user_id_derived": "0055j000000utlPAAQ", + "salesforce.instance_url": "", "service.type": "salesforce", "tags": [ "forwarded", - "salesforce-apex-rest" + "salesforce-apex" ], "user.id": "0055j000000utlP" } diff --git a/x-pack/filebeat/module/salesforce/fields.go b/x-pack/filebeat/module/salesforce/fields.go index acb402db804..78aa4fa0cc6 100644 --- a/x-pack/filebeat/module/salesforce/fields.go +++ b/x-pack/filebeat/module/salesforce/fields.go @@ -19,5 +19,5 @@ func init() { // AssetSalesforce returns asset data. // This is the base64 encoded zlib format compressed contents of module/salesforce. func AssetSalesforce() string { - return "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" + return "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" } diff --git a/x-pack/filebeat/module/salesforce/login-rest/_meta/fields.yml b/x-pack/filebeat/module/salesforce/login-rest/_meta/fields.yml deleted file mode 100644 index afbfae384e2..00000000000 --- a/x-pack/filebeat/module/salesforce/login-rest/_meta/fields.yml +++ /dev/null @@ -1,62 +0,0 @@ -- name: salesforce.login - type: group - release: beta - description: > - Fileset for ingesting Salesforce Login (REST) logs. - fields: - - name: api_type - type: keyword - description: > - The type of API request. - - name: api_version - type: keyword - description: > - The version of the API that’s being used. - - name: login_key - type: keyword - description: > - The string that ties together all events in a given user’s login session. It starts with a login event and ends with either a logout event or the user session expiring. - - name: authentication_method_reference - type: keyword - description: > - The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. This field is available in API version 51.0 and later. - - name: client_ip - type: keyword - description: > - The IP address of the client that’s using Salesforce services. A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as “Salesforce.com IP”. - - name: cpu_time - type: keyword - description: > - The CPU time in milliseconds used to complete the request. This field indicates the amount of activity taking place in the app server layer. - - name: db_total_time - type: keyword - description: > - The time in nanoseconds for a database round trip. Includes time spent in the JDBC driver, network to the database, and DB_CPU_TIME. Compare this field to CPU_TIME to determine whether performance issues are occurring in the database layer or in your own code. - - name: event_type - type: keyword - description: > - The type of event. The value is always Login. - - name: organization_id - type: keyword - description: > - The 15-character ID of the organization. - - name: request_id - type: keyword - description: > - The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same REQUEST_ID. - - name: request_status - type: keyword - description: > - The status of the request for a page view or user interface action. - - name: run_time - type: keyword - description: > - The amount of time that the request took in milliseconds. - - name: uri_id_derived - type: keyword - description: > - The 18-character case insensitive ID of the URI of the page that’s receiving the request. - - name: user_id_derived - type: keyword - description: > - The 18-character case insensitive ID of the user who’s using Salesforce services through the UI or the API. \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/login-rest/config/login-rest.yml b/x-pack/filebeat/module/salesforce/login-rest/config/login-rest.yml deleted file mode 100644 index 380c746d739..00000000000 --- a/x-pack/filebeat/module/salesforce/login-rest/config/login-rest.yml +++ /dev/null @@ -1,71 +0,0 @@ -{{ if eq .input "httpjson" }} - -type: httpjson -interval: {{ .interval }} -request.method: GET -auth.oauth2: - enabled: true - {{ if .client_id }} - client.id: {{ .client_id }} - {{ end }} - {{ if .client_secret }} - client.secret: {{ .client_secret }} - {{ end }} - {{ if .token_url }} - token_url: {{ .token_url }} - {{ end }} - {{ if .user }} - user: {{ .user }} - {{ end }} - {{ if .password }} - password: {{ .password }} - {{ end }} -# Query params will be overwritten by request.transforms from start of the input and -# it is to indicate that this url is for Login type of events as cursor stores the url as source. -# Each filebeat input cursor source needs to be uniquely identified with a name. -request.url: {{ .url }}/services/data/v52.0/query?q=login+rest -{{ if .proxy_url }} -request.proxy_url: {{ .proxy_url }} -{{ end }} -request.transforms: - - set: - target: url.params.q - value: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = 'Hourly' AND EventType = 'Login' AND LogDate > [[.cursor.last_published_login]] ORDER BY LogDate ASC NULLS FIRST" - default: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = 'Hourly' AND EventType = 'Login' ORDER BY LogDate ASC NULLS FIRST" -response.pagination: - - set: - target: url.value - value: '[[if (ne .last_response.body.done true)]]{{ .url }}[[.last_response.body.nextRecordsUrl]][[end]]' - fail_on_template_error: true -chain: - - step: - request.url: {{ .url }}/services/data/v52.0/sobjects/EventLogFile/$.records[:].Id/LogFile - request.method: GET - replace: $.records[:].Id -cursor: - last_published_login: - value: '[[(formatDate ((parseDate .last_event.TIMESTAMP_DERIVED "RFC3339").Add (parseDuration "-1h")))]]' - -{{ else if eq .input "file" }} - -type: log -paths: -{{ range $i, $path := .paths }} - - {{$path}} -{{ end }} -exclude_files: [".gz$"] - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -processors: - - decode_json_fields: - fields: [message] - target: "json" - - add_fields: - target: '' - fields: - ecs.version: 1.12.0 - - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/login-rest/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/login-rest/ingest/pipeline.yml deleted file mode 100644 index 2f2de778a0f..00000000000 --- a/x-pack/filebeat/module/salesforce/login-rest/ingest/pipeline.yml +++ /dev/null @@ -1,224 +0,0 @@ ---- -description: Pipeline for parsing Salesforce Login (REST) logs -processors: -- set: - field: event.ingested - value: '{{_ingest.timestamp}}' -- remove: - field: - - message - ignore_missing: true - -- set: - field: salesforce.access_mode - value: rest - ignore_failure: true - -- date: - field: json.TIMESTAMP_DERIVED - target_field: "@timestamp" - formats: - - ISO8601 - ignore_failure: true - -- rename: - field: json.API_TYPE - target_field: salesforce.login.api_type - ignore_missing: true -- rename: - field: json.AUTHENTICATION_METHOD_REFERENCE - target_field: salesforce.login.authentication_method_reference - ignore_missing: true -- rename: - field: json.REQUEST_STATUS - target_field: salesforce.login.request_status - ignore_missing: true -- rename: - field: json.API_VERSION - target_field: salesforce.login.api_version - ignore_missing: true -- rename: - field: json.USER_ID_DERIVED - target_field: salesforce.login.user_id_derived - ignore_missing: true -- rename: - field: json.LOGIN_KEY - target_field: salesforce.login.login_key - ignore_missing: true -- rename: - field: json.EVENT_TYPE - target_field: salesforce.login.event_type - ignore_missing: true -- rename: - field: json.REQUEST_ID - target_field: salesforce.login.request_id - ignore_missing: true -- rename: - field: json.ORGANIZATION_ID - target_field: salesforce.login.organization_id - ignore_missing: true -- rename: - field: json.RUN_TIME - target_field: salesforce.login.run_time - ignore_missing: true -- rename: - field: json.CPU_TIME - target_field: salesforce.login.cpu_time - ignore_missing: true -- rename: - field: json.DB_TOTAL_TIME - target_field: salesforce.login.db_total_time - ignore_missing: true -- rename: - field: json.CLIENT_IP - target_field: salesforce.login.client_ip - ignore_missing: true -- rename: - field: json.URI_ID_DERIVED - target_field: salesforce.login.uri_id_derived - ignore_missing: true - -####################### -## ECS Event Mapping ## -####################### - -- rename: - field: json.URI - target_field: event.url - ignore_missing: true -- set: - field: event.outcome - value: success - if: 'ctx?.json?.LOGIN_STATUS == "LOGIN_NO_ERROR" && ctx?.json?.LOGIN_STATUS != null' - ignore_failure: true -- set: - field: event.outcome - value: failure - if: 'ctx?.json?.LOGIN_STATUS != "LOGIN_NO_ERROR" && ctx?.json?.LOGIN_STATUS != null' - ignore_failure: true -- set: - field: event.type - value: "info" -- set: - field: event.kind - value: "event" -- set: - field: event.action - value: "login-attempt" -- set: - field: event.category - value: "authentication" -- set: - field: event.dataset - value: "salesforce.login" -- set: - field: event.module - value: "salesforce" - -###################### -## ECS User Mapping ## -###################### - -# As per the following article, the username must be in the format of an email address. -# Reference: https://help.salesforce.com/s/articleView?language=en_US&type=5&id=sf.basics_intro_usernames_passwords.htm -- rename: - field: json.USER_NAME - target_field: user.email - ignore_missing: true -- rename: - field: json.USER_ID - target_field: user.id - ignore_missing: true -- rename: - field: json.USER_TYPE - target_field: user.roles - ignore_missing: true - -######################## -## ECS Source Mapping ## -######################## - -- rename: - field: json.SOURCE_IP - target_field: source.ip - ignore_missing: true - if: 'ctx?.json?.SOURCE_IP != "Salesforce.com IP"' - -############################ -## ECS Source.Geo Mapping ## -############################ - -- geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - -############################ -## ECS Related.ip Mapping ## -############################ - -- append: - field: related.ip - value: "{{{source.ip}}}" - if: ctx?.source?.ip != null - allow_duplicates: false - ignore_failure: true - -- append: - field: related.ip - value: "{{{salesforce.login.client_ip}}}" - if: 'ctx?.salesforce?.login?.client_ip != "Salesforce.com IP" && ctx?.salesforce?.login?.client_ip != null' - allow_duplicates: false - ignore_failure: true - -############################ -## ECS User Agent Mapping ## -############################ - -- rename: - field: json.BROWSER_TYPE - target_field: user_agent.name - ignore_missing: true - -##################### -## ECS TLS Mapping ## -##################### - -- rename: - field: json.CIPHER_SUITE - target_field: tls.cipher - ignore_missing: true -- dissect: - pattern: "%{tls.version_protocol}v%{tls.version}" - field: "json.TLS_PROTOCOL" - ignore_failure: true - -############# -## Cleanup ## -############# - -- script: - description: Drops null/empty values recursively - lang: painless - source: | - boolean dropEmptyFields(Object object) { - if (object == null || object == "") { - return true; - } else if (object instanceof Map) { - ((Map) object).values().removeIf(value -> dropEmptyFields(value)); - return (((Map) object).size() == 0); - } else if (object instanceof List) { - ((List) object).removeIf(value -> dropEmptyFields(value)); - return (((List) object).length == 0); - } - return false; - } - dropEmptyFields(ctx); -- remove: - field: - - json - ignore_missing: true -on_failure: -- set: - field: error.message - value: '{{_ingest.on_failure_message}}' diff --git a/x-pack/filebeat/module/salesforce/login-rest/manifest.yml b/x-pack/filebeat/module/salesforce/login-rest/manifest.yml deleted file mode 100644 index 15450bab7f2..00000000000 --- a/x-pack/filebeat/module/salesforce/login-rest/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -module_version: 1.0 - -var: - - name: input - default: httpjson - - name: interval - default: 1h - - name: tags - default: [salesforce-login-rest, forwarded] - - name: proxy_url - - name: client_id - - name: client_secret - - name: token_url - - name: user - - name: password - - name: url - -ingest_pipeline: - - ingest/pipeline.yml -input: config/login-rest.yml diff --git a/x-pack/filebeat/module/salesforce/login-stream/_meta/fields.yml b/x-pack/filebeat/module/salesforce/login-stream/_meta/fields.yml deleted file mode 100644 index 9d807a7bf77..00000000000 --- a/x-pack/filebeat/module/salesforce/login-stream/_meta/fields.yml +++ /dev/null @@ -1,58 +0,0 @@ -- name: salesforce.login - type: group - release: beta - description: > - Fileset for ingesting Salesforce Login (Streaming) logs. - fields: - - name: application - type: keyword - description: > - The application used to access the org. Possible values include: AppExchange, Browser, Salesforce for iOS, Salesforce Developers API Explorer, N/A - - name: auth_method_reference - type: keyword - description: > - The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. - - name: auth_service_id - type: keyword - description: > - The 18-character ID for an authentication service for a login event. - - name: client_version - type: keyword - description: > - The version number of the login client. If no version number is available, “Unknown” is returned. - - name: created_by_id - type: keyword - description: > - Unavailable - - name: evaluation_time - type: keyword - description: > - The amount of time it took to evaluate the transaction security policy, in milliseconds. - - name: login_geo_id - type: keyword - description: > - The Salesforce ID of the LoginGeo object associated with the login user’s IP address. - - name: login_history_id - type: keyword - description: > - Tracks a user session so you can correlate user activity with a particular login instance. This field is also available on the LoginHistory, AuthSession, and LoginHistory objects, making it easier to trace events back to a user’s original authentication. - - name: login_type - type: keyword - description: > - The type of login used to access the session. - - name: policy_id - type: keyword - description: > - The ID of the transaction security policy associated with this event. - - name: policy_outcome - type: keyword - description: > - The result of the transaction policy. - - name: related_event_identifier - type: keyword - description: > - This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. - - name: session_level - type: keyword - description: > - Session-level security controls user access to features that support it, such as connected apps and reporting. Possible values are: HIGH_ASSURANCE, LOW, STANDARD \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/login-stream/config/login-stream.yml b/x-pack/filebeat/module/salesforce/login-stream/config/login-stream.yml deleted file mode 100644 index 3db5b0dd49e..00000000000 --- a/x-pack/filebeat/module/salesforce/login-stream/config/login-stream.yml +++ /dev/null @@ -1,44 +0,0 @@ -{{ if eq .input "cometd" }} - -type: cometd -channel_name: /event/LoginEventStream -auth.oauth2: - {{ if .client_id }} - client.id: {{ .client_id }} - {{ end }} - {{ if .client_secret }} - client.secret: {{ .client_secret }} - {{ end }} - {{ if .token_url }} - token_url: {{ .token_url }} - {{ end }} - {{ if .user }} - user: {{ .user }} - {{ end }} - {{ if .password }} - password: {{ .password }} - {{ end }} - -{{ else if eq .input "file" }} - -type: log -paths: -{{ range $i, $path := .paths }} - - {{$path}} -{{ end }} -exclude_files: [".gz$"] - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -processors: - - decode_json_fields: - fields: [message] - target: "json" - - add_fields: - target: '' - fields: - ecs.version: 1.12.0 - - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/login-stream/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/login-stream/ingest/pipeline.yml deleted file mode 100644 index a24e65d1a21..00000000000 --- a/x-pack/filebeat/module/salesforce/login-stream/ingest/pipeline.yml +++ /dev/null @@ -1,278 +0,0 @@ ---- -description: Pipeline for parsing Salesforce Login (Streaming) logs -processors: -- set: - field: event.ingested - value: '{{_ingest.timestamp}}' -- remove: - field: - - message - ignore_missing: true - -- set: - field: salesforce.access_mode - value: stream - ignore_failure: true - -- date: - field: json.EventDate - target_field: "@timestamp" - formats: - - ISO8601 - ignore_failure: true -- rename: - field: json.schema - target_field: salesforce.login.schema - ignore_missing: true -- rename: - field: json.ApiType - target_field: salesforce.login.api_type - ignore_missing: true -- rename: - field: json.AuthMethodReference - target_field: salesforce.login.auth_method_reference - ignore_missing: true -- rename: - field: json.LoginType - target_field: salesforce.login.login_type - ignore_missing: true -- rename: - field: json.PolicyOutcome - target_field: salesforce.login.policy_outcome - ignore_missing: true -- rename: - field: json.AuthServiceId - target_field: salesforce.login.auth_service_id - ignore_missing: true -- rename: - field: json.EvaluationTime - target_field: salesforce.login.evaluation_time - ignore_missing: true -- rename: - field: json.ClientVersion - target_field: salesforce.login.client_version - ignore_missing: true -- rename: - field: json.LoginGeoId - target_field: salesforce.login.login_geo_id - ignore_missing: true -- rename: - field: json.LoginHistoryId - target_field: salesforce.login.login_history_id - ignore_missing: true -- rename: - field: json.CreatedById - target_field: salesforce.login.created_by_id - ignore_missing: true -- rename: - field: json.ApiVersion - target_field: salesforce.login.api_version - ignore_missing: true -- rename: - field: json.RelatedEventIdentifier - target_field: salesforce.login.related_event_identifier - ignore_missing: true -- rename: - field: json.LoginKey - target_field: salesforce.login.login_key - ignore_missing: true -- rename: - field: json.Application - target_field: salesforce.login.application - ignore_missing: true -- rename: - field: json.PolicyId - target_field: salesforce.login.policy_id - ignore_missing: true -- rename: - field: json.SessionLevel - target_field: salesforce.login.session_level - ignore_missing: true -- rename: - field: json.replayId - target_field: salesforce.login.replay_id - ignore_missing: true - -####################### -## ECS Event Mapping ## -####################### - -- set: - field: event.outcome - value: success - if: 'ctx?.json?.Status == "Success" && ctx?.json?.Status != null' - ignore_failure: true -- set: - field: event.outcome - value: failure - if: 'ctx?.json?.Status != "Success" && ctx?.json?.Status != null' - ignore_failure: true -- date: - field: json.CreatedDate - target_field: event.created - formats: - - ISO8601 - ignore_failure: true -- rename: - field: json.LoginUrl - target_field: event.url - ignore_missing: true -- set: - field: event.type - value: "info" -- set: - field: event.kind - value: "event" -- set: - field: event.action - value: "login-attempt" -- set: - field: event.category - value: "authentication" -- set: - field: event.dataset - value: "salesforce.login" -- set: - field: event.module - value: "salesforce" - -###################### -## ECS User Mapping ## -###################### - -# As per the following article, the username must be in the format of an email address. -# Reference: https://help.salesforce.com/s/articleView?language=en_US&type=5&id=sf.basics_intro_usernames_passwords.htm -- rename: - field: json.Username - target_field: user.email - ignore_missing: true -- rename: - field: json.UserId - target_field: user.id - ignore_missing: true -- rename: - field: json.UserType - target_field: user.roles - ignore_missing: true - -######################## -## ECS Source Mapping ## -######################## - -- rename: - field: json.SourceIp - target_field: source.ip - ignore_missing: true - -############################ -## ECS Related.ip Mapping ## -############################ - -- append: - field: related.ip - value: "{{{source.ip}}}" - if: ctx?.source?.ip != null - allow_duplicates: false - ignore_failure: true - -############################ -## ECS Source.Geo Mapping ## -############################ - -- rename: - field: json.LoginLatitude - target_field: source.geo.location.lat - ignore_missing: true -- rename: - field: json.LoginLongitude - target_field: source.geo.location.lon - ignore_missing: true -- rename: - field: json.CountryIso - target_field: source.geo.country_iso_code - ignore_missing: true -- rename: - field: json.PostalCode - target_field: source.geo.postal_code - ignore_missing: true -- rename: - field: json.City - target_field: source.geo.city_name - ignore_missing: true -- rename: - field: json.Subdivision - target_field: source.geo.region_name - ignore_missing: true -- rename: - field: json.Country - target_field: source.geo.country_name - ignore_missing: true - -############################ -## ECS User Agent Mapping ## -############################ - -- rename: - field: json.Browser - target_field: user_agent.name - ignore_missing: true -- rename: - field: json.Platform - target_field: user_agent.os.platform - ignore_missing: true - -###################### -## ECS HTTP Mapping ## -###################### - -- rename: - field: json.HttpMethod - target_field: http.request.method - ignore_missing: true -- rename: - field: json.AdditionalInfo - target_field: http.request.body.content - ignore_missing: true - -##################### -## ECS TLS Mapping ## -##################### - -- rename: - field: json.CipherSuite - target_field: tls.cipher - ignore_missing: true -- dissect: - pattern: "%{tls.version_protocol} %{tls.version}" - field: "json.TlsProtocol" - ignore_failure: true - -############# -## Cleanup ## -############# - -- script: - description: Drops null/empty values recursively - lang: painless - source: | - boolean dropEmptyFields(Object object) { - if (object == null || object == "") { - return true; - } else if (object instanceof Map) { - ((Map) object).values().removeIf(value -> dropEmptyFields(value)); - return (((Map) object).size() == 0); - } else if (object instanceof List) { - ((List) object).removeIf(value -> dropEmptyFields(value)); - return (((List) object).length == 0); - } - return false; - } - dropEmptyFields(ctx); -- remove: - field: - - json - ignore_missing: true -on_failure: -- set: - field: error.message - value: '{{_ingest.on_failure_message}}' diff --git a/x-pack/filebeat/module/salesforce/login-stream/manifest.yml b/x-pack/filebeat/module/salesforce/login-stream/manifest.yml deleted file mode 100644 index 92411aa750e..00000000000 --- a/x-pack/filebeat/module/salesforce/login-stream/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -module_version: 1.0 - -var: - - name: input - default: cometd - - name: tags - default: [salesforce-login-stream, forwarded] - - name: client_id - - name: client_secret - - name: token_url - - name: user - - name: password - -ingest_pipeline: - - ingest/pipeline.yml -input: config/login-stream.yml diff --git a/x-pack/filebeat/module/salesforce/login/_meta/fields.yml b/x-pack/filebeat/module/salesforce/login/_meta/fields.yml new file mode 100644 index 00000000000..dda4f422037 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/login/_meta/fields.yml @@ -0,0 +1,102 @@ +- name: salesforce.login + type: group + release: beta + description: > + Fileset for ingesting Salesforce Login (REST) logs. + fields: + - name: document_id + type: keyword + description: Unique Id. + - name: application + type: keyword + description: The application used to access the organization. + - name: api + type: group + fields: + - name: type + type: keyword + description: The type of Salesforce API request. + - name: version + type: keyword + description: The version of the Salesforce API that's being used. + - name: auth + type: group + fields: + - name: service_id + type: keyword + description: The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. + - name: method_reference + type: keyword + description: The authentication method used by a third-party identification provider for an OpenID Connect single sign-on protocol. This field is available in API version 51.0 and later. + - name: session + type: group + fields: + - name: level + type: text + description: Session-level security controls user access to features that support it, such as connected apps and reporting. This field is available in API version 42.0 and later. + - name: key + type: keyword + description: The user's unique session ID. Use this value to identify all user events within a session. When a user logs out and logs in again, a new session is started. For LoginEvent, this field is often null because the event is captured before a session is created. For example, vMASKIU6AxEr+Op5. This field is available in API version 46.0 and later. + - name: key + type: keyword + overwrite: true + description: The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. + - name: history_id + type: keyword + description: Tracks a user session so you can correlate user activity with a particular login instance. This field is also available on the LoginHistory, AuthSession, and other objects, making it easier to trace events back to a user's original authentication. + - name: type + type: keyword + description: The type of login used to access the session. + - name: geo_id + type: keyword + description: The Salesforce ID of the LoginGeo object associated with the login user's IP address. + - name: additional_info + type: text + description: JSON serialization of additional information that's captured from the HTTP headers during a login request. + - name: client_version + type: keyword + description: The version number of the login client. If no version number is available, “Unknown” is returned. + - name: client_ip + type: keyword + description: The IP address of the client that's using Salesforce services. A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as “Salesforce.com IP”. + - name: cpu_time + type: long + description: The CPU time in milliseconds used to complete the request. This field indicates the amount of activity taking place in the app server layer. + metric_type: gauge + unit: ms + - name: db_time_total + type: double + description: The time in nanoseconds for a database round trip. Includes time spent in the JDBC driver, network to the database, and DB's CPU time. Compare this field to cpu_time to determine whether performance issues are occurring in the database layer or in your own code. + metric_type: gauge + unit: ms + - name: event_type + type: keyword + description: The type of event. The value is always Login. + - name: organization_id + type: keyword + description: The 15-character ID of the organization. + - name: request_id + type: keyword + description: The unique ID of a single transaction. A transaction can contain one or more events. Each event in a given transaction has the same REQUEST_ID. + - name: request_status + type: keyword + description: The status of the request for a page view or user interface action. + - name: run_time + type: long + description: The amount of time that the request took in milliseconds. + metric_type: gauge + unit: ms + - name: user_id + type: keyword + description: The 15-character ID of the user who's using Salesforce services through the UI or the API. + - name: uri_id_derived + type: keyword + description: The 18-character case insensitive ID of the URI of the page that's receiving the request. + - name: evaluation_time + type: float + description: The amount of time it took to evaluate the transaction security policy, in milliseconds. + metric_type: gauge + unit: ms + - name: login_type + type: keyword + description: The type of login used to access the session. diff --git a/x-pack/filebeat/module/salesforce/login/config/login.yml b/x-pack/filebeat/module/salesforce/login/config/login.yml new file mode 100644 index 00000000000..8bdd5df6e0f --- /dev/null +++ b/x-pack/filebeat/module/salesforce/login/config/login.yml @@ -0,0 +1,71 @@ +{{ if eq .input "salesforce" }} + +id: login +type: salesforce +enabled: true +{{ if .api_version }} +version: {{ .api_version }} +{{ end }} +auth.oauth2: {{ .authentication | tojson }} +url: {{ .url }} +event_monitoring_method: + event_log_file: + enabled: {{ if .event_log_file }}true{{ else }}false{{ end }} + interval: {{ .elf_interval }} + query: + default: SELECT CreatedDate,LogDate,LogFile FROM EventLogFile WHERE {{ if .initial_interval }}LogDate > [[ (formatTime (now.Add (parseDuration "-{{ .initial_interval }}")) "2006-01-02T15:04:05.000Z0700") ]] AND{{ end }} Interval = '{{ .log_file_interval }}' AND EventType = 'Login' ORDER BY LogDate ASC NULLS FIRST + value: SELECT CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = '{{ .log_file_interval }}' AND EventType = 'Login' AND CreatedDate > [[ .cursor.event_log_file.last_event_time ]] ORDER BY LogDate ASC NULLS FIRST + cursor: + field: "CreatedDate" + object: + enabled: {{ if .real_time }}true{{ else }}false{{ end }} + interval: {{ .real_time_interval }} + query: + default: SELECT FIELDS(STANDARD) FROM LoginEvent{{ if .initial_interval }} WHERE EventDate > [[ (formatTime (now.Add (parseDuration "-{{ .initial_interval }}")) "2006-01-02T15:04:05.000Z0700") ]]{{ end }} + value: SELECT FIELDS(STANDARD) FROM LoginEvent WHERE EventDate > [[ .cursor.object.first_event_time ]] + cursor: + field: "EventDate" + +processors: + - add_fields: + target: salesforce + fields: + instance_url: {{ .url }} + - add_locale: ~ + +{{ else if eq .input "file" }} + +type: log +paths: +{{ range $i, $path := .paths }} + - {{$path}} +{{ end }} +exclude_files: [".gz$"] + +processors: + - add_fields: + target: salesforce + fields: + instance_url: {{ .url }} + - decode_json_fields: + fields: ["message"] + target: "json" + - script: + lang: javascript + source: > + function process(event) { + if (event.Get("json.EVENT_TYPE") == "Login") { + event.Put("event.provider", "EventLogFile"); + } else { + event.Put("event.provider", "Object"); + } + } + - drop_fields: + fields: json + ignore_missing: true + - add_locale: ~ + +{{ end }} + +tags: {{.tags | tojson}} +publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} diff --git a/x-pack/filebeat/module/salesforce/login/ingest/default.yml b/x-pack/filebeat/module/salesforce/login/ingest/default.yml new file mode 100644 index 00000000000..e9bb56124fc --- /dev/null +++ b/x-pack/filebeat/module/salesforce/login/ingest/default.yml @@ -0,0 +1,123 @@ +--- +description: Pipeline for parsing Salesforce Login logs. +processors: + - json: + field: message + target_field: json + on_failure: + - append: + field: error.message + value: "Failed to parse JSON: {{{_ingest.on_failure_message}}}" + - set: + field: event.original + copy_from: message + ignore_empty_value: true + ignore_failure: true + if: "ctx.event?.original == null" + - set: + field: event.ingested + value: "{{_ingest.timestamp}}" + - set: + field: ecs.version + value: "8.11.0" + ignore_failure: true + ignore_empty_value: true + - set: + field: salesforce.login.document_id + copy_from: _id + ignore_empty_value: true + + - pipeline: + name: '{< IngestPipeline "object" >}' + if: ctx.event?.provider == "Object" + - pipeline: + name: '{< IngestPipeline "eventlogfile" >}' + if: ctx.event?.provider == "EventLogFile" + + - set: + field: event.type + value: ["info"] + ignore_failure: true + ignore_empty_value: true + - set: + field: event.kind + value: "event" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.action + value: "login-attempt" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.category + value: ["authentication"] + ignore_failure: true + ignore_empty_value: true + - set: + field: event.dataset + value: "salesforce.login" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.module + value: "salesforce" + ignore_failure: true + ignore_empty_value: true + - append: + field: related.ip + value: "{{{source.ip}}}" + allow_duplicates: false + ignore_failure: true + if: ctx.source?.ip != null + - append: + field: related.ip + value: "{{{salesforce.login.client_ip}}}" + allow_duplicates: false + ignore_failure: true + if: ctx.salesforce?.login?.client_ip != null && ctx.salesforce.login.client_ip != "Salesforce.com IP" + + ############# + ## Cleanup ## + ############# + + # Drop empty fields + - script: + description: Drops null/empty values recursively + lang: painless + source: | + boolean dropEmptyFields(Object object) { + if (object == null || object == "") { + return true; + } else if (object instanceof Map) { + ((Map) object).values().removeIf(value -> dropEmptyFields(value)); + return ((Map) object).isEmpty(); + } else if (object instanceof List) { + ((List) object).removeIf(value -> dropEmptyFields(value)); + return ((List) object).isEmpty(); + } + return false; + } + dropEmptyFields(ctx); + - remove: + field: + - json + - message + ignore_failure: true + ignore_missing: true + - remove: + field: event.original + if: "ctx.tags == null || !ctx.tags.contains('preserve_original_event')" + ignore_failure: true + ignore_missing: true + +on_failure: + - set: + field: event.kind + value: pipeline_error + - set: + field: error.message + value: "{{{_ingest.on_failure_message}}}" + - set: + field: error.type + value: "{{{_ingest.on_failure_processor_type}}}" diff --git a/x-pack/filebeat/module/salesforce/login/ingest/eventlogfile.yml b/x-pack/filebeat/module/salesforce/login/ingest/eventlogfile.yml new file mode 100644 index 00000000000..3ef578125b9 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/login/ingest/eventlogfile.yml @@ -0,0 +1,221 @@ +description: Pipeline for parsing Salesforce Login (EventLogFile) logs. +processors: + - date: + field: json.TIMESTAMP_DERIVED + target_field: "@timestamp" + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: >- + Failed to parse TIMESTAMP_DERIVED field: + {{{_ingest.on_failure_message}}} + - rename: + field: json.API_TYPE + target_field: salesforce.login.api.type + ignore_missing: true + ignore_failure: true + - script: + description: Set api type value from api type character. + lang: painless + params: + api_type_map: + D: Apex Class + E: SOAP Enterprise + I: SOAP Cross Instance + M: SOAP Metadata + O: Old SOAP + P: SOAP Partner + S: SOAP Apex + T: SOAP Tooling + X: XmlRPC + f: Feed + l: Live Agent + p: SOAP ClientSync + source: > + ctx.salesforce.login.api.type = + params.api_type_map.getOrDefault(ctx.salesforce?.login?.api?.type, + ctx.salesforce.login.api.type); + on_failure: + - append: + field: error.message + value: >- + Failed to set salesforce.login.api.type: + {{{_ingest.on_failure_message}}} + - rename: + field: json.AUTHENTICATION_METHOD_REFERENCE + target_field: salesforce.login.auth.service_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.REQUEST_STATUS + target_field: salesforce.login.request_status + ignore_missing: true + ignore_failure: true + - script: + description: Set request status value from request status character. + lang: painless + params: + request_status_map: + S: Success + F: Failure + U: Undefined + A: Authorization Error + R: Redirect + "N": Not Found + source: > + ctx.salesforce.login.request_status = + params.request_status_map.getOrDefault(ctx.salesforce?.login?.request_status, + ctx.salesforce.login.request_status); + on_failure: + - append: + field: error.message + value: >- + Failed to set salesforce.login.request_status: + {{{_ingest.on_failure_message}}} + - rename: + field: json.API_VERSION + target_field: salesforce.login.api.version + ignore_missing: true + ignore_failure: true + - rename: + field: json.USER_ID + target_field: salesforce.login.user_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.LOGIN_KEY + target_field: salesforce.login.key + ignore_missing: true + ignore_failure: true + - rename: + field: json.EVENT_TYPE + target_field: salesforce.login.event_type + ignore_missing: true + ignore_failure: true + - rename: + field: json.REQUEST_ID + target_field: salesforce.login.request_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.ORGANIZATION_ID + target_field: salesforce.login.organization_id + ignore_missing: true + ignore_failure: true + - convert: + field: json.RUN_TIME + type: long + target_field: salesforce.login.run_time + ignore_missing: true + ignore_failure: true + - convert: + field: json.CPU_TIME + type: long + target_field: salesforce.login.cpu_time + ignore_missing: true + ignore_failure: true + - convert: + field: json.DB_TOTAL_TIME + type: long + target_field: salesforce.login.db_time_total + ignore_missing: true + ignore_failure: true + - script: + description: >- + Convert db_time.total field from nanos (nanoseconds) to ms + (milliseconds). + lang: painless + source: | + if (ctx.salesforce?.login?.db_time?.total != null) { + ctx.salesforce.login.db_time_total = ctx.salesforce.login.db_time_total / 1000000; + } + on_failure: + - append: + field: error.message + value: >- + Failed to set salesforce.login.db_time_total: + {{{_ingest.on_failure_message}}} + - rename: + field: json.CLIENT_IP + target_field: salesforce.login.client_ip + ignore_missing: true + ignore_failure: true + - rename: + field: json.URI_ID_DERIVED + target_field: salesforce.login.uri_derived_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.URI + target_field: event.url + ignore_missing: true + ignore_failure: true + - set: + field: event.outcome + value: success + if: >- + ctx.json?.LOGIN_STATUS == "LOGIN_NO_ERROR" && ctx.json?.LOGIN_STATUS != + null + ignore_empty_value: true + - set: + field: event.outcome + value: failure + if: >- + ctx.json?.LOGIN_STATUS != "LOGIN_NO_ERROR" && ctx.json?.LOGIN_STATUS != + null + ignore_empty_value: true + - rename: + field: json.USER_NAME + target_field: user.email + ignore_missing: true + ignore_failure: true + - rename: + field: json.USER_ID_DERIVED + target_field: user.id + ignore_missing: true + ignore_failure: true + - set: + value: + - "{{{json.USER_TYPE}}}" + field: user.roles + ignore_empty_value: true + ignore_failure: true + - remove: + field: json.USER_TYPE + ignore_missing: true + ignore_failure: true + - rename: + field: json.SOURCE_IP + target_field: source.ip + ignore_missing: true + ignore_failure: true + if: ctx.json?.SOURCE_IP != "Salesforce.com IP" + - geoip: + field: source.ip + target_field: source.geo + ignore_missing: true + ignore_failure: true + - rename: + field: json.BROWSER_TYPE + target_field: user_agent.name + ignore_missing: true + ignore_failure: true + - rename: + field: json.CIPHER_SUITE + target_field: tls.cipher + ignore_missing: true + ignore_failure: true + - dissect: + pattern: "%{tls.version_protocol}v%{tls.version}" + field: json.TLS_PROTOCOL + ignore_failure: true + ignore_missing: true +on_failure: + - set: + field: event.kind + value: pipeline_error + - append: + field: error.message + value: "{{{ _ingest.on_failure_message }}}" diff --git a/x-pack/filebeat/module/salesforce/login/ingest/object.yml b/x-pack/filebeat/module/salesforce/login/ingest/object.yml new file mode 100644 index 00000000000..f9d1ef745df --- /dev/null +++ b/x-pack/filebeat/module/salesforce/login/ingest/object.yml @@ -0,0 +1,235 @@ +--- +description: Pipeline for parsing Salesforce Login (Object) logs. +processors: + - date: + field: json.EventDate + target_field: "@timestamp" + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "Failed to parse EventDate field: {{{_ingest.on_failure_message}}}" + - rename: + field: json.AuthServiceId + target_field: salesforce.login.auth.service_id + ignore_missing: true + ignore_failure: true + - convert: + field: json.EvaluationTime + type: double + target_field: salesforce.login.evaluation_time + ignore_missing: true + ignore_failure: true + - rename: + field: json.ClientVersion + target_field: salesforce.login.client_version + ignore_missing: true + ignore_failure: true + - rename: + field: json.LoginGeoId + target_field: salesforce.login.geo_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.LoginHistoryId + target_field: salesforce.login.history_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.ApiType + target_field: salesforce.login.api.type + ignore_missing: true + ignore_failure: true + - rename: + field: json.AuthMethodReference + target_field: salesforce.login.auth.method_reference + ignore_missing: true + ignore_failure: true + - rename: + field: json.LoginType + target_field: salesforce.login.type + ignore_missing: true + ignore_failure: true + - rename: + field: json.PolicyOutcome + target_field: salesforce.login.policy_outcome + ignore_missing: true + ignore_failure: true + - rename: + field: json.ApiVersion + target_field: salesforce.login.api.version + ignore_missing: true + ignore_failure: true + - rename: + field: json.EventIdentifier + target_field: event.id + ignore_missing: true + ignore_failure: true + - rename: + field: json.RelatedEventIdentifier + target_field: salesforce.login.related_event_identifier + ignore_missing: true + ignore_failure: true + - rename: + field: json.LoginKey + target_field: salesforce.login.key + ignore_missing: true + ignore_failure: true + - rename: + field: json.Application + target_field: salesforce.login.application + ignore_missing: true + ignore_failure: true + - rename: + field: json.PolicyId + target_field: salesforce.login.policy_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.SessionLevel + target_field: salesforce.login.session.level + ignore_missing: true + ignore_failure: true + - rename: + field: json.SessionKey + target_field: salesforce.login.session.key + ignore_missing: true + ignore_failure: true + - set: + field: event.outcome + value: success + if: 'ctx.json?.Status == "Success"' + ignore_empty_value: true + ignore_failure: true + - set: + field: event.outcome + value: failure + if: 'ctx.json?.Status != "Success" && ctx.json?.Status != null' + ignore_empty_value: true + ignore_failure: true + - date: + field: json.CreatedDate + target_field: event.created + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "Failed to parse CreatedDate field: {{{_ingest.on_failure_message}}}" + - rename: + field: json.LoginUrl + target_field: event.url + ignore_missing: true + ignore_failure: true + - rename: + field: json.Username + target_field: user.email + ignore_missing: true + ignore_failure: true + - rename: + field: json.UserId + target_field: user.id + ignore_missing: true + ignore_failure: true + - set: + field: user.roles + value: "{{{json.UserType}}}" + if: ctx.json?.UserType != null + ignore_empty_value: true + ignore_failure: true + - remove: + field: json.UserType + ignore_missing: true + ignore_failure: true + - convert: + field: json.SourceIp + target_field: source.ip + type: ip + ignore_failure: true + on_failure: + - append: + field: error.message + value: "Failed to convert SourceIp to IP: {{{_ingest.on_failure_message}}}" + - rename: + field: json.LoginLatitude + target_field: source.geo.location.lat + ignore_missing: true + ignore_failure: true + - rename: + field: json.LoginLongitude + target_field: source.geo.location.lon + ignore_missing: true + ignore_failure: true + - geoip: + field: source.ip + target_field: source.geo + ignore_missing: true + ignore_failure: true + if: '!ctx.source?.geo?.location?.containsKey("lat") && !ctx.source?.geo?.location?.containsKey("lon")' + - rename: + field: json.CountryIso + target_field: source.geo.country_iso_code + ignore_missing: true + ignore_failure: true + - rename: + field: json.PostalCode + target_field: source.geo.postal_code + ignore_missing: true + ignore_failure: true + - rename: + field: json.City + target_field: source.geo.city_name + ignore_missing: true + ignore_failure: true + - rename: + field: json.Subdivision + target_field: source.geo.region_name + ignore_missing: true + ignore_failure: true + - rename: + field: json.Country + target_field: source.geo.country_name + ignore_missing: true + ignore_failure: true + - rename: + field: json.Browser + target_field: user_agent.name + ignore_missing: true + ignore_failure: true + - rename: + field: json.Platform + target_field: user_agent.os.platform + ignore_missing: true + ignore_failure: true + - rename: + field: json.HttpMethod + target_field: http.request.method + ignore_missing: true + ignore_failure: true + - rename: + field: json.AdditionalInfo + target_field: salesforce.login.additional_info + ignore_missing: true + ignore_failure: true + - rename: + field: json.CipherSuite + target_field: tls.cipher + ignore_missing: true + ignore_failure: true + - dissect: + field: json.TlsProtocol + pattern: "%{tls.version_protocol} %{tls.version}" + ignore_missing: true + on_failure: + - append: + field: error.message + value: "Failed to dissect TlsProtocol: {{{_ingest.on_failure_message}}}" + +on_failure: + - set: + field: event.kind + value: pipeline_error + - append: + field: error.message + value: "{{{ _ingest.on_failure_message }}}" diff --git a/x-pack/filebeat/module/salesforce/login/manifest.yml b/x-pack/filebeat/module/salesforce/login/manifest.yml new file mode 100644 index 00000000000..46a625b308e --- /dev/null +++ b/x-pack/filebeat/module/salesforce/login/manifest.yml @@ -0,0 +1,25 @@ +module_version: 1.0 + +var: + - name: input + default: salesforce + - name: tags + default: [salesforce-login, forwarded] + - name: api_version + - name: authentication + - name: url + - name: event_log_file + - name: elf_interval + default: 1h + - name: real_time + - name: real_time_interval + default: 5m + - name: initial_interval + - name: log_file_interval + default: Hourly + +ingest_pipeline: + - ingest/default.yml + - ingest/eventlogfile.yml + - ingest/object.yml +input: config/login.yml diff --git a/x-pack/filebeat/module/salesforce/login-rest/test/salesforce_login.ndjson.log b/x-pack/filebeat/module/salesforce/login/test/salesforce_login_elf.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/login-rest/test/salesforce_login.ndjson.log rename to x-pack/filebeat/module/salesforce/login/test/salesforce_login_elf.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/login-rest/test/salesforce_login.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/login/test/salesforce_login_elf.ndjson.log-expected.json similarity index 67% rename from x-pack/filebeat/module/salesforce/login-rest/test/salesforce_login.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/login/test/salesforce_login_elf.ndjson.log-expected.json index e056e6693e7..3327267833a 100644 --- a/x-pack/filebeat/module/salesforce/login-rest/test/salesforce_login.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/login/test/salesforce_login_elf.ndjson.log-expected.json @@ -2,43 +2,50 @@ { "@timestamp": "2021-10-19T04:42:04.256Z", "event.action": "login-attempt", - "event.category": "authentication", + "event.category": [ + "authentication" + ], "event.dataset": "salesforce.login", "event.kind": "event", "event.module": "salesforce", "event.outcome": "success", + "event.provider": "EventLogFile", "event.timezone": "-02:00", - "event.type": "info", + "event.type": [ + "info" + ], "event.url": "/index.jsp", - "fileset.name": "login-rest", + "fileset.name": "login", "input.type": "log", "log.offset": 0, "related.ip": [ "43.224.11.237" ], - "salesforce.access_mode": "rest", - "salesforce.login.api_version": 9998, + "salesforce.instance_url": "", + "salesforce.login.api.version": 9998, "salesforce.login.client_ip": "43.224.11.237", "salesforce.login.cpu_time": 54, - "salesforce.login.db_total_time": 37142518, + "salesforce.login.db_time_total": 37142518, "salesforce.login.event_type": "Login", - "salesforce.login.login_key": "iQzw40l45YkJUNKj", + "salesforce.login.key": "iQzw40l45YkJUNKj", "salesforce.login.organization_id": "00D5j000000VI3n", "salesforce.login.request_id": "4exJslfc21z80-l1cJOnxV", "salesforce.login.run_time": 94, - "salesforce.login.user_id_derived": "0055j000000utlPAAQ", + "salesforce.login.user_id": "0055j000000utlP", "service.type": "salesforce", "source.ip": "43.224.11.237", "tags": [ "forwarded", - "salesforce-login-rest" + "salesforce-login" ], "tls.cipher": "ECDHE-RSA-AES256-GCM-SHA384", "tls.version": "1.2", "tls.version_protocol": "TLS", "user.email": "kush.rana@elastic.co", - "user.id": "0055j000000utlP", - "user.roles": "Standard", + "user.id": "0055j000000utlPAAQ", + "user.roles": [ + "Standard" + ], "user_agent.name": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36" } ] \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/login-stream/test/salesforce_login.ndjson.log b/x-pack/filebeat/module/salesforce/login/test/salesforce_login_object.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/login-stream/test/salesforce_login.ndjson.log rename to x-pack/filebeat/module/salesforce/login/test/salesforce_login_object.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/login-stream/test/salesforce_login.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/login/test/salesforce_login_object.ndjson.log-expected.json similarity index 63% rename from x-pack/filebeat/module/salesforce/login-stream/test/salesforce_login.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/login/test/salesforce_login_object.ndjson.log-expected.json index 564108c2357..ca49c41c757 100644 --- a/x-pack/filebeat/module/salesforce/login-stream/test/salesforce_login.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/login/test/salesforce_login_object.ndjson.log-expected.json @@ -2,34 +2,39 @@ { "@timestamp": "2021-10-19T11:47:22.000Z", "event.action": "login-attempt", - "event.category": "authentication", + "event.category": [ + "authentication" + ], "event.dataset": "salesforce.login", + "event.id": "06af6d92-1167-467d-a826-ee8583f7134d", "event.kind": "event", "event.module": "salesforce", "event.outcome": "success", + "event.provider": "Object", "event.timezone": "-02:00", - "event.type": "info", + "event.type": [ + "info" + ], "event.url": "login.salesforce.com", - "fileset.name": "login-stream", - "http.request.body.content": "{}", + "fileset.name": "login", "http.request.method": "POST", "input.type": "log", "log.offset": 0, "related.ip": [ "123.201.231.106" ], - "salesforce.access_mode": "stream", - "salesforce.login.api_type": "N/A", - "salesforce.login.api_version": "N/A", + "salesforce.instance_url": "", + "salesforce.login.additional_info": "{}", + "salesforce.login.api.type": "N/A", + "salesforce.login.api.version": "N/A", "salesforce.login.application": "elastic integration", "salesforce.login.client_version": "N/A", - "salesforce.login.created_by_id": "0055j000000q9s7AAA", - "salesforce.login.evaluation_time": 0, - "salesforce.login.login_geo_id": "04F5j00000FadrI", - "salesforce.login.login_history_id": "0Ya5j00000GLxCdCAL", - "salesforce.login.login_key": "o3vhFaSRBb0OzpCl", - "salesforce.login.login_type": "Remote Access 2.0", - "salesforce.login.session_level": "STANDARD", + "salesforce.login.evaluation_time": 0.0, + "salesforce.login.geo_id": "04F5j00000FadrI", + "salesforce.login.history_id": "0Ya5j00000GLxCdCAL", + "salesforce.login.key": "o3vhFaSRBb0OzpCl", + "salesforce.login.session.level": "STANDARD", + "salesforce.login.type": "Remote Access 2.0", "service.type": "salesforce", "source.geo.city_name": "Surat", "source.geo.country_iso_code": "IN", @@ -41,7 +46,7 @@ "source.ip": "123.201.231.106", "tags": [ "forwarded", - "salesforce-login-stream" + "salesforce-login" ], "tls.cipher": "ECDHE-RSA-AES256-GCM-SHA384", "tls.version": "1.2", diff --git a/x-pack/filebeat/module/salesforce/logout-rest/_meta/fields.yml b/x-pack/filebeat/module/salesforce/logout-rest/_meta/fields.yml deleted file mode 100644 index 7ec7dcfc683..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-rest/_meta/fields.yml +++ /dev/null @@ -1,62 +0,0 @@ -- name: salesforce.logout - type: group - release: beta - description: > - Fileset for parsing Salesforce Logout (REST) logs. - fields: - - name: session_level - type: keyword - description: > - Indicates the session-level security of the session that the user is logging out of for this event. Session-level security controls user access to features that support it, such as connected apps and reporting. Possible values are: HIGH_ASSURANCE, LOW, STANDARD - - name: login_key - type: keyword - description: > - The string that ties together all events in a given user’s login session. It starts with a login event and ends with either a logout event or the user session expiring. - - name: api_type - type: keyword - description: > - The type of API request. - - name: api_version - type: keyword - description: > - The version of the API that’s being used. - - name: app_type - type: keyword - description: > - The application type that was in use upon logging out. - - name: browser_type - type: keyword - description: > - The identifier string returned by the browser used at login. - - name: client_version - type: keyword - description: > - The version of the client that was in use upon logging out. - - name: event_type - type: keyword - description: > - The type of event. The value is always Logout. - - name: organization_by_id - type: keyword - description: > - The 15-character ID of the organization. - - name: platform_type - type: keyword - description: > - The code for the client platform. If a timeout caused the logout, this field is null. - - name: resolution_type - type: keyword - description: > - The screen resolution of the client. If a timeout caused the logout, this field is null. - - name: session_type - type: keyword - description: > - The session type that was used when logging out. - - name: user_id_derived - type: keyword - description: > - The 18-character case-safe ID of the user who’s using Salesforce services through the UI or the API. - - name: user_initiated_logout - type: keyword - description: > - The value is 1 if the user intentionally logged out of the organization by clicking the Logout button. If the user’s session timed out due to inactivity or another implicit logout action, the value is 0. \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/logout-rest/config/logout-rest.yml b/x-pack/filebeat/module/salesforce/logout-rest/config/logout-rest.yml deleted file mode 100644 index 29e8d8b1a79..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-rest/config/logout-rest.yml +++ /dev/null @@ -1,70 +0,0 @@ -{{ if eq .input "httpjson" }} - -type: httpjson -interval: {{ .interval }} -request.method: GET -auth.oauth2: - {{ if .client_id }} - client.id: {{ .client_id }} - {{ end }} - {{ if .client_secret }} - client.secret: {{ .client_secret }} - {{ end }} - {{ if .token_url }} - token_url: {{ .token_url }} - {{ end }} - {{ if .user }} - user: {{ .user }} - {{ end }} - {{ if .password }} - password: {{ .password }} - {{ end }} -# Query params will be overwritten by request.transforms from start of the input and -# it is to indicate that this url is for Logout type of events as cursor stores the url as source. -# Each filebeat input cursor source needs to be uniquely identified with a name. -request.url: {{ .url }}/services/data/v52.0/query?q=logout+rest -{{ if .proxy_url }} -request.proxy_url: {{ .proxy_url }} -{{ end }} -request.transforms: - - set: - target: url.params.q - value: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = 'Hourly' AND EventType = 'Logout' AND LogDate > [[.cursor.last_published_logout]] ORDER BY LogDate ASC NULLS FIRST" - default: "SELECT Id,CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = 'Hourly' AND EventType = 'Logout' ORDER BY LogDate ASC NULLS FIRST" -response.pagination: - - set: - target: url.value - value: '[[if (ne .last_response.body.done true)]]{{ .url }}[[.last_response.body.nextRecordsUrl]][[end]]' - fail_on_template_error: true -chain: - - step: - request.url: {{ .url }}/services/data/v52.0/sobjects/EventLogFile/$.records[:].Id/LogFile - request.method: GET - replace: $.records[:].Id -cursor: - last_published_logout: - value: '[[(formatDate ((parseDate .last_event.TIMESTAMP_DERIVED "RFC3339").Add (parseDuration "-1h")))]]' - -{{ else if eq .input "file" }} - -type: log -paths: -{{ range $i, $path := .paths }} - - {{$path}} -{{ end }} -exclude_files: [".gz$"] - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -processors: - - decode_json_fields: - fields: [message] - target: "json" - - add_fields: - target: '' - fields: - ecs.version: 1.12.0 - - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/logout-rest/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/logout-rest/ingest/pipeline.yml deleted file mode 100644 index 8222f65372a..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-rest/ingest/pipeline.yml +++ /dev/null @@ -1,180 +0,0 @@ ---- -description: Pipeline for parsing Salesforce Logout (REST) logs -processors: -- set: - field: event.ingested - value: '{{_ingest.timestamp}}' -- remove: - field: - - message - ignore_missing: true - -- set: - field: salesforce.access_mode - value: rest - ignore_failure: true - -- date: - field: json.TIMESTAMP_DERIVED - target_field: "@timestamp" - formats: - - ISO8601 - ignore_failure: true - -- rename: - field: json.SESSION_TYPE - target_field: salesforce.logout.session_type - ignore_missing: true -- rename: - field: json.EVENT_TYPE - target_field: salesforce.logout.event_type - ignore_missing: true -- rename: - field: json.SESSION_LEVEL - target_field: salesforce.logout.session_level - ignore_missing: true -- rename: - field: json.BROWSER_TYPE - target_field: salesforce.logout.browser_type - ignore_missing: true -- rename: - field: json.PLATFORM_TYPE - target_field: salesforce.logout.platform_type - ignore_missing: true -- rename: - field: json.RESOLUTION_TYPE - target_field: salesforce.logout.resolution_type - ignore_missing: true -- rename: - field: json.APP_TYPE - target_field: salesforce.logout.app_type - ignore_missing: true -- rename: - field: json.CLIENT_VERSION - target_field: salesforce.logout.client_version - ignore_missing: true -- rename: - field: json.API_TYPE - target_field: salesforce.logout.api_type - ignore_missing: true -- rename: - field: json.API_VERSION - target_field: salesforce.logout.api_version - ignore_missing: true -- rename: - field: json.USER_INITIATED_LOGOUT - target_field: salesforce.logout.user_initiated_logout - ignore_missing: true -- rename: - field: json.LOGIN_KEY - target_field: salesforce.logout.login_key - ignore_missing: true -- rename: - field: json.USER_ID_DERIVED - target_field: salesforce.logout.user_id_derived - ignore_missing: true -- rename: - field: json.ORGANIZATION_ID - target_field: salesforce.logout.organization_by_id - ignore_missing: true - -####################### -## ECS Event Mapping ## -####################### - -- set: - field: event.type - value: "info" -- set: - field: event.kind - value: "event" -- set: - field: event.action - value: "logout" -- set: - field: event.category - value: "authentication" -- set: - field: event.dataset - value: "salesforce.logout" -- set: - field: event.module - value: "salesforce" -- rename: - field: json.REQUEST_ID - target_field: event.code - ignore_missing: true - -###################### -## ECS User Mapping ## -###################### - -- rename: - field: json.USER_TYPE - target_field: user.roles - ignore_missing: true -- rename: - field: json.USER_ID - target_field: user.id - ignore_missing: true - -######################## -## ECS Source Mapping ## -######################## - -# A Salesforce internal IP (such as a login from Salesforce Workbench or AppExchange) is shown as “Salesforce.com IP” -- rename: - field: json.CLIENT_IP - target_field: source.ip - ignore_missing: true - if: 'ctx?.json?.CLIENT_IP != "Salesforce.com IP" && ctx?.json?.CLIENT_IP != ""' - -############################ -## ECS Source.Geo Mapping ## -############################ - -- geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - -############################ -## ECS Related.ip Mapping ## -############################ - -- append: - field: related.ip - value: "{{{source.ip}}}" - if: ctx?.source?.ip != null - allow_duplicates: false - ignore_failure: true - -############# -## Cleanup ## -############# - -- script: - description: Drops null/empty values recursively - lang: painless - source: | - boolean dropEmptyFields(Object object) { - if (object == null || object == "") { - return true; - } else if (object instanceof Map) { - ((Map) object).values().removeIf(value -> dropEmptyFields(value)); - return (((Map) object).size() == 0); - } else if (object instanceof List) { - ((List) object).removeIf(value -> dropEmptyFields(value)); - return (((List) object).length == 0); - } - return false; - } - dropEmptyFields(ctx); -- remove: - field: - - json - ignore_missing: true -on_failure: -- set: - field: error.message - value: '{{_ingest.on_failure_message}}' diff --git a/x-pack/filebeat/module/salesforce/logout-rest/manifest.yml b/x-pack/filebeat/module/salesforce/logout-rest/manifest.yml deleted file mode 100644 index 775f5094a3d..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-rest/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -module_version: 1.0 - -var: - - name: input - default: httpjson - - name: interval - default: 1h - - name: tags - default: [salesforce-logout-rest, forwarded] - - name: proxy_url - - name: client_id - - name: client_secret - - name: token_url - - name: user - - name: password - - name: url - -ingest_pipeline: ingest/pipeline.yml -input: config/logout-rest.yml diff --git a/x-pack/filebeat/module/salesforce/logout-stream/_meta/fields.yml b/x-pack/filebeat/module/salesforce/logout-stream/_meta/fields.yml deleted file mode 100644 index fe1ade9745d..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-stream/_meta/fields.yml +++ /dev/null @@ -1,22 +0,0 @@ -- name: salesforce.logout - type: group - release: beta - description: > - Fileset for parsing Salesforce Logout (Streaming) logs. - fields: - - name: created_by_id - type: keyword - description: > - Unavailable - - name: related_event_identifier - type: keyword - description: > - This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. - - name: replay_id - type: keyword - description: > - Represents an ID value that is populated by the system and refers to the position of the event in the event stream. Replay ID values aren’t guaranteed to be contiguous for consecutive events. A subscriber can store a replay ID value and use it on resubscription to retrieve missed events that are within the retention window. - - name: schema - type: keyword - description: > - Unavailable \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/logout-stream/config/logout-stream.yml b/x-pack/filebeat/module/salesforce/logout-stream/config/logout-stream.yml deleted file mode 100644 index d717f9bf4cb..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-stream/config/logout-stream.yml +++ /dev/null @@ -1,44 +0,0 @@ -{{ if eq .input "cometd" }} - -type: cometd -channel_name: /event/LogoutEventStream -auth.oauth2: - {{ if .client_id }} - client.id: {{ .client_id }} - {{ end }} - {{ if .client_secret }} - client.secret: {{ .client_secret }} - {{ end }} - {{ if .token_url }} - token_url: {{ .token_url }} - {{ end }} - {{ if .user }} - user: {{ .user }} - {{ end }} - {{ if .password }} - password: {{ .password }} - {{ end }} - -{{ else if eq .input "file" }} - -type: log -paths: -{{ range $i, $path := .paths }} - - {{$path}} -{{ end }} -exclude_files: [".gz$"] - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -processors: - - decode_json_fields: - fields: [message] - target: "json" - - add_fields: - target: '' - fields: - ecs.version: 1.12.0 - - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/logout-stream/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/logout-stream/ingest/pipeline.yml deleted file mode 100644 index 3bc74b68e21..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-stream/ingest/pipeline.yml +++ /dev/null @@ -1,147 +0,0 @@ ---- -description: Pipeline for parsing Salesforce Logout (Streaming) logs -processors: -- set: - field: event.ingested - value: '{{_ingest.timestamp}}' -- remove: - field: - - message - ignore_missing: true - -- set: - field: salesforce.access_mode - value: stream - ignore_failure: true - -- date: - field: json.EventDate - target_field: "@timestamp" - formats: - - ISO8601 - ignore_failure: true - -- rename: - field: json.schema - target_field: salesforce.logout.schema - ignore_missing: true -- rename: - field: json.CreatedById - target_field: salesforce.logout.created_by_id - ignore_missing: true -- rename: - field: json.RelatedEventIdentifier - target_field: salesforce.logout.related_event_identifier - ignore_missing: true -- rename: - field: json.LoginKey - target_field: salesforce.logout.login_key - ignore_missing: true -- rename: - field: json.SessionLevel - target_field: salesforce.logout.session_level - ignore_missing: true -- rename: - field: json.replayId - target_field: salesforce.logout.replay_id - ignore_missing: true - -####################### -## ECS Event Mapping ## -####################### - -- date: - field: json.CreatedDate - target_field: event.created - formats: ["yyyy-MM-ddTHH:mm:ssZ"] - ignore_failure: true -- set: - field: event.type - value: "info" -- set: - field: event.kind - value: "event" -- set: - field: event.action - value: "logout" -- set: - field: event.category - value: "authentication" -- set: - field: event.dataset - value: "salesforce.logout" -- set: - field: event.module - value: "salesforce" - -###################### -## ECS User Mapping ## -###################### - -- rename: - field: json.Username - target_field: user.email - ignore_missing: true -- rename: - field: json.UserId - target_field: user.id - ignore_missing: true - -######################## -## ECS Source Mapping ## -######################## - -- rename: - field: json.SourceIp - target_field: source.ip - ignore_missing: true - -############################ -## ECS Source.Geo Mapping ## -############################ - -- geoip: - field: source.ip - target_field: source.geo - ignore_missing: true - -############################ -## ECS Related.ip Mapping ## -############################ - -- append: - field: related.ip - value: "{{{source.ip}}}" - if: ctx?.source?.ip != null - allow_duplicates: false - ignore_failure: true - -############# -## Cleanup ## -############# - -- script: - description: Drops null/empty values recursively - lang: painless - source: | - boolean dropEmptyFields(Object object) { - if (object == null || object == "") { - return true; - } else if (object instanceof Map) { - ((Map) object).values().removeIf(value -> dropEmptyFields(value)); - return (((Map) object).size() == 0); - } else if (object instanceof List) { - ((List) object).removeIf(value -> dropEmptyFields(value)); - return (((List) object).length == 0); - } - return false; - } - dropEmptyFields(ctx); -- remove: - field: - - json - ignore_missing: true -on_failure: -- set: - field: error.message - value: '{{_ingest.on_failure_message}}' diff --git a/x-pack/filebeat/module/salesforce/logout-stream/manifest.yml b/x-pack/filebeat/module/salesforce/logout-stream/manifest.yml deleted file mode 100644 index b8ffb130f56..00000000000 --- a/x-pack/filebeat/module/salesforce/logout-stream/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -module_version: 1.0 - -var: - - name: input - default: cometd - - name: tags - default: [salesforce-logout-stream, forwarded] - - name: client_id - - name: client_secret - - name: token_url - - name: user - - name: password - -ingest_pipeline: ingest/pipeline.yml -input: config/logout-stream.yml diff --git a/x-pack/filebeat/module/salesforce/logout/_meta/fields.yml b/x-pack/filebeat/module/salesforce/logout/_meta/fields.yml new file mode 100644 index 00000000000..9da3677f8c3 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/logout/_meta/fields.yml @@ -0,0 +1,92 @@ +- name: salesforce.logout + type: group + release: beta + description: > + Fileset for parsing Salesforce Logout (REST) logs. + fields: + - name: document_id + type: keyword + description: > + Unique Id. + - name: session + type: group + fields: + - name: key + type: keyword + description: > + The user's unique session ID. You can use this value to identify all user events within a session. When a user logs out and logs in again, a new session is started. + - name: level + type: text + description: > + The security level of the session that was used when logging out (e.g. Standard Session or High-Assurance Session). + - name: type + type: keyword + description: > + The session type that was used when logging out (e.g. API, Oauth2 or UI). + - name: login_key + type: keyword + description: > + The string that ties together all events in a given user's login session. It starts with a login event and ends with either a logout event or the user session expiring. + - name: api + type: group + fields: + - name: type + type: keyword + description: > + The type of Salesforce API request. + - name: version + type: keyword + description: > + The version of the Salesforce API that's being used. + - name: app_type + type: keyword + description: > + The application type that was in use upon logging out. + - name: browser_type + type: keyword + description: > + The identifier string returned by the browser used at login. + - name: client_version + type: keyword + description: > + The version of the client that was in use upon logging out. + - name: event_type + type: keyword + description: > + The type of event. The value is always Logout. + - name: organization_by_id + type: keyword + description: > + The 15-character ID of the organization. + - name: platform_type + type: keyword + description: > + The code for the client platform. If a timeout caused the logout, this field is null. + - name: resolution_type + type: keyword + description: > + The screen resolution of the client. If a timeout caused the logout, this field is null. + - name: user_id + type: keyword + description: > + The 15-character ID of the user who's using Salesforce services through the UI or the API. + - name: user_id_derived + type: keyword + description: > + The 18-character case-safe ID of the user who's using Salesforce services through the UI or the API. + - name: user_initiated_logout + type: keyword + description: > + The value is 1 if the user intentionally logged out of the organization by clicking the Logout button. If the user's session timed out due to inactivity or another implicit logout action, the value is 0. + - name: created_by_id + type: keyword + description: > + Unavailable + - name: event_identifier + type: keyword + description: > + This field is populated only when the activity that this event monitors requires extra authentication, such as multi-factor authentication. In this case, Salesforce generates more events and sets the RelatedEventIdentifier field of the new events to the value of the EventIdentifier field of the original event. Use this field with the EventIdentifier field to correlate all the related events. If no extra authentication is required, this field is blank. + - name: organization_id + type: keyword + description: > + The 15-character ID of the organization. diff --git a/x-pack/filebeat/module/salesforce/logout/config/logout.yml b/x-pack/filebeat/module/salesforce/logout/config/logout.yml new file mode 100644 index 00000000000..502fa247fbb --- /dev/null +++ b/x-pack/filebeat/module/salesforce/logout/config/logout.yml @@ -0,0 +1,71 @@ +{{ if eq .input "salesforce" }} + +id: logout +type: salesforce +enabled: true +{{ if .api_version }} +version: {{ .api_version }} +{{ end }} +auth.oauth2: {{ .authentication | tojson }} +url: {{ .url }} +event_monitoring_method: + event_log_file: + enabled: {{ if .event_log_file }}true{{ else }}false{{ end }} + interval: {{ .elf_interval }} + query: + default: SELECT CreatedDate,LogDate,LogFile FROM EventLogFile WHERE {{ if .initial_interval }}LogDate > [[ (formatTime (now.Add (parseDuration "-{{ .initial_interval }}")) "2006-01-02T15:04:05.000Z0700") ]] AND{{ end }} Interval = '{{ .log_file_interval }}' AND EventType = 'Logout' ORDER BY LogDate ASC NULLS FIRST + value: SELECT CreatedDate,LogDate,LogFile FROM EventLogFile WHERE Interval = '{{ .log_file_interval }}' AND EventType = 'Logout' AND CreatedDate > [[ .cursor.event_log_file.last_event_time ]] ORDER BY LogDate ASC NULLS FIRST + cursor: + field: "CreatedDate" + object: + enabled: {{ if .real_time }}true{{ else }}false{{ end }} + interval: {{ .real_time_interval }} + query: + default: SELECT FIELDS(STANDARD) FROM LogoutEvent{{ if .initial_interval }} WHERE EventDate > [[ (formatTime (now.Add (parseDuration "-{{ .initial_interval }}")) "2006-01-02T15:04:05.000Z0700") ]]{{ end }} + value: SELECT FIELDS(STANDARD) FROM LogoutEvent WHERE EventDate > [[ .cursor.object.first_event_time ]] + cursor: + field: "EventDate" + +processors: + - add_fields: + target: salesforce + fields: + instance_url: {{ .url }} + - add_locale: ~ + +{{ else if eq .input "file" }} + +type: log +paths: +{{ range $i, $path := .paths }} + - {{$path}} +{{ end }} +exclude_files: [".gz$"] + +processors: + - add_fields: + target: salesforce + fields: + instance_url: {{ .url }} + - decode_json_fields: + fields: ["message"] + target: "json" + - script: + lang: javascript + source: > + function process(event) { + if (event.Get("json.EVENT_TYPE") == "Logout") { + event.Put("event.provider", "EventLogFile"); + } else { + event.Put("event.provider", "Object"); + } + } + - drop_fields: + fields: json + ignore_missing: true + - add_locale: ~ + +{{ end }} + +tags: {{.tags | tojson}} +publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} diff --git a/x-pack/filebeat/module/salesforce/logout/ingest/default.yml b/x-pack/filebeat/module/salesforce/logout/ingest/default.yml new file mode 100644 index 00000000000..90645868363 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/logout/ingest/default.yml @@ -0,0 +1,121 @@ +--- +description: Pipeline for parsing Salesforce Logout logs. +processors: + - json: + field: message + target_field: json + on_failure: + - append: + field: error.message + value: "Failed to parse JSON: {{{_ingest.on_failure_message}}}" + - set: + field: event.original + copy_from: message + ignore_empty_value: true + ignore_failure: true + if: "ctx.event?.original == null" + - set: + field: event.ingested + value: "{{_ingest.timestamp}}" + - set: + field: ecs.version + value: "8.11.0" + ignore_failure: true + ignore_empty_value: true + - set: + field: salesforce.login.document_id + copy_from: _id + ignore_empty_value: true + + - pipeline: + name: '{< IngestPipeline "object" >}' + if: ctx.event?.provider == "Object" + - pipeline: + name: '{< IngestPipeline "eventlogfile" >}' + if: ctx.event?.provider == "EventLogFile" + + - set: + field: event.type + value: ["info"] + ignore_failure: true + ignore_empty_value: true + - set: + field: event.kind + value: "event" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.action + value: "logout" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.category + value: ["authentication"] + ignore_failure: true + ignore_empty_value: true + - set: + field: event.dataset + value: "salesforce.logout" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.module + value: "salesforce" + ignore_failure: true + ignore_empty_value: true + - geoip: + field: source.ip + target_field: source.geo + ignore_missing: true + ignore_failure: true + - append: + field: related.ip + value: "{{{source.ip}}}" + if: ctx?.source?.ip != null + allow_duplicates: false + ignore_failure: true + + ############# + ## Cleanup ## + ############# + + # Drop empty fields + - script: + lang: painless + source: | + boolean dropEmptyFields(Object object) { + if (object == null || object == "") { + return true; + } else if (object instanceof Map) { + ((Map) object).values().removeIf(value -> dropEmptyFields(value)); + return ((Map) object).isEmpty(); + } else if (object instanceof List) { + ((List) object).removeIf(value -> dropEmptyFields(value)); + return ((List) object).isEmpty(); + } + return false; + } + dropEmptyFields(ctx); + - remove: + field: + - json + - message + ignore_failure: true + ignore_missing: true + - remove: + field: event.original + if: "ctx.tags == null || !ctx.tags.contains('preserve_original_event')" + ignore_failure: true + ignore_missing: true + +on_failure: + - set: + field: event.kind + value: pipeline_error + - set: + field: error.message + value: "{{{_ingest.on_failure_message}}}" + - set: + field: error.type + value: "{{{_ingest.on_failure_processor_type}}}" diff --git a/x-pack/filebeat/module/salesforce/logout/ingest/eventlogfile.yml b/x-pack/filebeat/module/salesforce/logout/ingest/eventlogfile.yml new file mode 100644 index 00000000000..699fa370219 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/logout/ingest/eventlogfile.yml @@ -0,0 +1,255 @@ +--- +description: Pipeline for parsing Salesforce Logout (EventLogFile) logs. +processors: + - date: + field: json.TIMESTAMP_DERIVED + target_field: "@timestamp" + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "Failed to parse TIMESTAMP_DERIVED field: {{{_ingest.on_failure_message}}}" + - rename: + field: json.SESSION_TYPE + target_field: salesforce.logout.session.type + ignore_missing: true + ignore_failure: true + - script: + description: Set session type value from session type character. + lang: painless + source: | + def sessionTypes = [ + "A": "API", + "I": "APIOnlyUser", + "N": "ChatterNetworks", + "Z": "ChatterNetworksAPIOnly", + "C": "Content", + "P": "OauthApprovalUI", + "O": "Oauth2", + "T": "SiteStudio", + "R": "SitePreview", + "S": "SubstituteUser", + "B": "TempContentExchange", + "G": "TempOauthAccessTokenFrontdoor", + "Y": "TempVisualforceExchange", + "F": "TempUIFrontdoor", + "U": "UI", + "E": "UserSite", + "V": "Visualforce", + "W": "WDC_API" + ]; + def type = ctx.salesforce?.logout?.session?.type; + if (type != null && sessionTypes.containsKey(type)) { + ctx.salesforce.logout.session.type = sessionTypes.get(type); + } + on_failure: + - append: + field: error.message + value: "Failed to set salesforce.logout.session.type: {{{_ingest.on_failure_message}}}" + - rename: + field: json.EVENT_TYPE + target_field: salesforce.logout.event_type + ignore_missing: true + ignore_failure: true + - rename: + field: json.SESSION_LEVEL + target_field: salesforce.logout.session.level + ignore_missing: true + ignore_failure: true + - script: + description: Set session level value from session level integer. + lang: painless + source: | + def levels = ["1": "Standard Session", "2": "High-Assurance Session"]; + def level = ctx.salesforce?.logout?.session?.level; + if (level != null && levels.containsKey(level)) { + ctx.salesforce.logout.session.level = levels.get(level); + } + on_failure: + - append: + field: error.message + value: "Failed to set salesforce.logout.session.level: {{{_ingest.on_failure_message}}}" + - rename: + field: json.BROWSER_TYPE + target_field: salesforce.logout.browser_type + ignore_missing: true + ignore_failure: true + - rename: + field: json.PLATFORM_TYPE + target_field: salesforce.logout.platform_type + ignore_missing: true + ignore_failure: true + - script: + description: Set platform type value from platform type integers. + lang: painless + params: + platforms: + "1000": "Windows" + "1008": "Windows 2003" + "1013": "Windows 8.1" + "1015": "Windows 10" + "2003": "Macintosh/Apple OSX" + "4000": "Linux" + "5005": "Android" + "5006": "iPhone" + "5007": "iPad" + "5200": "Android 10.0" + source: | + def platform = ctx.salesforce?.logout?.platform_type; + if (platform != null && params.platforms.containsKey(platform)) { + ctx.salesforce.logout.platform_type = params.platforms.get(platform); + } + on_failure: + - append: + field: error.message + value: "Failed to set salesforce.logout.platform_type: {{{_ingest.on_failure_message}}}" + - rename: + field: json.RESOLUTION_TYPE + target_field: salesforce.logout.resolution_type + ignore_missing: true + ignore_failure: true + - rename: + field: json.APP_TYPE + target_field: salesforce.logout.app_type + ignore_missing: true + ignore_failure: true + - script: + description: Set application type value from application type integers. + lang: painless + params: + appTypes: + "1000": "Application" + "1007": "SFDC Application" + "1014": "Chat" + "2501": "CTI" + "2514": "OAuth" + "3475": "SFDC Partner Portal" + source: | + def type = ctx.salesforce?.logout?.app_type; + if (type != null && params.appTypes.containsKey(type)) { + ctx.salesforce.logout.app_type = params.appTypes.get(type); + } + on_failure: + - append: + field: error.message + value: "Failed to set salesforce.logout.app_type: {{{_ingest.on_failure_message}}}" + - rename: + field: json.CLIENT_VERSION + target_field: salesforce.logout.client_version + ignore_missing: true + ignore_failure: true + - rename: + field: json.API_TYPE + target_field: salesforce.logout.api.type + ignore_missing: true + ignore_failure: true + - script: + description: Set api type value from api type character. + lang: painless + params: + apiTypes: + "D": "Apex Class" + "E": "SOAP Enterprise" + "I": "SOAP Cross Instance" + "M": "SOAP Metadata" + "O": "Old SOAP" + "P": "SOAP Partner" + "S": "SOAP Apex" + "T": "SOAP Tooling" + "X": "XmlRPC" + "f": "Feed" + "l": "Live Agent" + "p": "SOAP ClientSync" + source: | + def type = ctx.salesforce?.logout?.api?.type; + if (type != null && params.apiTypes.containsKey(type)) { + ctx.salesforce.logout.api.type = params.apiTypes.get(type); + } + on_failure: + - append: + field: error.message + value: "Failed to set salesforce.logout.api.type: {{{_ingest.on_failure_message}}}" + - rename: + field: json.API_VERSION + target_field: salesforce.logout.api.version + ignore_missing: true + ignore_failure: true + - rename: + field: json.USER_INITIATED_LOGOUT + target_field: salesforce.logout.user_initiated_logout + ignore_missing: true + ignore_failure: true + - rename: + field: json.LOGIN_KEY + target_field: salesforce.logout.login_key + ignore_missing: true + ignore_failure: true + - rename: + field: json.USER_ID + target_field: salesforce.logout.user_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.ORGANIZATION_ID + target_field: salesforce.logout.organization_id + ignore_missing: true + ignore_failure: true + - rename: + field: json.REQUEST_ID + target_field: event.code + ignore_missing: true + ignore_failure: true + - rename: + field: json.USER_TYPE + target_field: user.roles + ignore_missing: true + ignore_failure: true + - script: + description: Set user roles value from user roles character. + lang: painless + params: + userRoles: + "A": "Automated Process" + "b": "High Volume Portal" + "C": "Customer Portal User" + "D": "External Who" + "F": "Self-Service" + "G": "Guest" + "L": "Package License Manager" + "N": "Salesforce to Salesforce" + "n": "CSN Only" + "O": "Power Custom" + "o": "Custom" + "P": "Partner" + "p": "Customer Portal Manager" + "S": "Standard" + "X": "Salesforce Administrator" + source: | + def role = ctx.salesforce?.logout?.user?.roles; + if (role != null && params.userRoles.containsKey(role)) { + ctx.salesforce.logout.user.roles = [params.userRoles.get(role)]; + } + on_failure: + - append: + field: error.message + value: "Failed to set salesforce.logout.user.roles: {{{_ingest.on_failure_message}}}" + - rename: + field: json.USER_ID_DERIVED + target_field: user.id + ignore_missing: true + ignore_failure: true + - rename: + field: json.CLIENT_IP + target_field: source.ip + ignore_missing: true + if: ctx.json?.CLIENT_IP != 'Salesforce.com IP' && ctx.json?.CLIENT_IP != null + ignore_failure: true + +on_failure: + - set: + field: event.kind + value: pipeline_error + - append: + field: error.message + value: "{{{ _ingest.on_failure_message }}}" diff --git a/x-pack/filebeat/module/salesforce/logout/ingest/object.yml b/x-pack/filebeat/module/salesforce/logout/ingest/object.yml new file mode 100644 index 00000000000..059a8533751 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/logout/ingest/object.yml @@ -0,0 +1,68 @@ +--- +description: Pipeline for parsing Salesforce Logout (Object) logs. +processors: + - date: + field: json.EventDate + target_field: "@timestamp" + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "Failed to parse EventDate field: {{{_ingest.on_failure_message}}}" + - rename: + field: json.RelatedEventIdentifier + target_field: salesforce.logout.related_event_identifier + ignore_missing: true + ignore_failure: true + - rename: + field: json.LoginKey + target_field: salesforce.logout.login_key + ignore_missing: true + ignore_failure: true + - rename: + field: json.SessionLevel + target_field: salesforce.logout.session.level + ignore_missing: true + ignore_failure: true + - rename: + field: json.SessionKey + target_field: salesforce.logout.session.key + ignore_missing: true + ignore_failure: true + - date: + field: json.CreatedDate + target_field: event.created + formats: + - ISO8601 + on_failure: + - append: + field: error.message + value: "Failed to parse CreatedDate field: {{{_ingest.on_failure_message}}}" + - rename: + field: json.Username + target_field: user.email + ignore_missing: true + ignore_failure: true + - rename: + field: json.UserId + target_field: user.id + ignore_missing: true + ignore_failure: true + - convert: + field: json.SourceIp + type: ip + target_field: source.ip + ignore_missing: true + on_failure: + - append: + field: error.message + value: "Failed to convert SourceIp to IP: {{{_ingest.on_failure_message}}}" + +on_failure: + - set: + field: event.kind + value: pipeline_error + - append: + field: error.message + value: "{{{ _ingest.on_failure_message }}}" diff --git a/x-pack/filebeat/module/salesforce/logout/manifest.yml b/x-pack/filebeat/module/salesforce/logout/manifest.yml new file mode 100644 index 00000000000..9aa36f11d15 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/logout/manifest.yml @@ -0,0 +1,25 @@ +module_version: 1.0 + +var: + - name: input + default: salesforce + - name: tags + default: [salesforce-logout, forwarded] + - name: api_version + - name: authentication + - name: url + - name: event_log_file + - name: elf_interval + default: 1h + - name: real_time + - name: real_time_interval + default: 5m + - name: initial_interval + - name: log_file_interval + default: Hourly + +ingest_pipeline: + - ingest/default.yml + - ingest/eventlogfile.yml + - ingest/object.yml +input: config/logout.yml diff --git a/x-pack/filebeat/module/salesforce/logout-rest/test/salesforce_logout.ndjson.log b/x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_elf.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/logout-rest/test/salesforce_logout.ndjson.log rename to x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_elf.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/logout-rest/test/salesforce_logout.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_elf.ndjson.log-expected.json similarity index 67% rename from x-pack/filebeat/module/salesforce/logout-rest/test/salesforce_logout.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_elf.ndjson.log-expected.json index ea3b683e02a..fa603eb61f1 100644 --- a/x-pack/filebeat/module/salesforce/logout-rest/test/salesforce_logout.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_elf.ndjson.log-expected.json @@ -2,39 +2,44 @@ { "@timestamp": "2021-10-19T05:07:07.128Z", "event.action": "logout", - "event.category": "authentication", + "event.category": [ + "authentication" + ], "event.code": "4exLFFQZNa5xxFl1cJNwOV", "event.dataset": "salesforce.logout", "event.kind": "event", "event.module": "salesforce", + "event.provider": "EventLogFile", "event.timezone": "-02:00", - "event.type": "info", - "fileset.name": "logout-rest", + "event.type": [ + "info" + ], + "fileset.name": "logout", "input.type": "log", "log.offset": 0, "related.ip": [ "123.201.231.42" ], - "salesforce.access_mode": "rest", + "salesforce.instance_url": "", "salesforce.logout.app_type": 1000, "salesforce.logout.browser_type": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36", "salesforce.logout.client_version": 9998, "salesforce.logout.event_type": "Logout", "salesforce.logout.login_key": "OKyrFuSUIZVr9YzF", - "salesforce.logout.organization_by_id": "00D5j000000VI3n", + "salesforce.logout.organization_id": "00D5j000000VI3n", "salesforce.logout.platform_type": 1015, "salesforce.logout.resolution_type": 9999, - "salesforce.logout.session_level": "STANDARD(db=1,api=STANDARD)", - "salesforce.logout.session_type": "UI", - "salesforce.logout.user_id_derived": "0055j000000utlPAAQ", + "salesforce.logout.session.level": "STANDARD(db=1,api=STANDARD)", + "salesforce.logout.session.type": "UI", + "salesforce.logout.user_id": "0055j000000utlP", "salesforce.logout.user_initiated_logout": 1, "service.type": "salesforce", "source.ip": "123.201.231.42", "tags": [ "forwarded", - "salesforce-logout-rest" + "salesforce-logout" ], - "user.id": "0055j000000utlP", + "user.id": "0055j000000utlPAAQ", "user.roles": "Standard(db=S,api=Standard)" } ] \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/logout-stream/test/salesforce_logout.ndjson.log b/x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_object.ndjson.log similarity index 100% rename from x-pack/filebeat/module/salesforce/logout-stream/test/salesforce_logout.ndjson.log rename to x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_object.ndjson.log diff --git a/x-pack/filebeat/module/salesforce/logout-stream/test/salesforce_logout.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_object.ndjson.log-expected.json similarity index 62% rename from x-pack/filebeat/module/salesforce/logout-stream/test/salesforce_logout.ndjson.log-expected.json rename to x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_object.ndjson.log-expected.json index b4403515ffc..eed5058ac7a 100644 --- a/x-pack/filebeat/module/salesforce/logout-stream/test/salesforce_logout.ndjson.log-expected.json +++ b/x-pack/filebeat/module/salesforce/logout/test/salesforce_logout_object.ndjson.log-expected.json @@ -2,27 +2,32 @@ { "@timestamp": "2021-10-19T11:38:54.000Z", "event.action": "logout", - "event.category": "authentication", + "event.category": [ + "authentication" + ], "event.dataset": "salesforce.logout", "event.kind": "event", "event.module": "salesforce", + "event.provider": "Object", "event.timezone": "-02:00", - "event.type": "info", - "fileset.name": "logout-stream", + "event.type": [ + "info" + ], + "fileset.name": "logout", "input.type": "log", "log.offset": 0, "related.ip": [ "123.201.231.106" ], - "salesforce.access_mode": "stream", - "salesforce.logout.created_by_id": "0055j000000q9s7AAA", + "salesforce.instance_url": "", "salesforce.logout.login_key": "CuRVtbMjat6xxbTH", - "salesforce.logout.session_level": "STANDARD", + "salesforce.logout.session.key": "6/HAElgoPCwskqBU", + "salesforce.logout.session.level": "STANDARD", "service.type": "salesforce", "source.ip": "123.201.231.106", "tags": [ "forwarded", - "salesforce-logout-stream" + "salesforce-logout" ], "user.email": "kush.rana@elastic.co", "user.id": "0055j000000utlPAAQ" diff --git a/x-pack/filebeat/module/salesforce/module.yml b/x-pack/filebeat/module/salesforce/module.yml index bec0d7ed8b1..71e1ee55123 100644 --- a/x-pack/filebeat/module/salesforce/module.yml +++ b/x-pack/filebeat/module/salesforce/module.yml @@ -1,9 +1,9 @@ dashboards: -- id: salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10 - file: salesforce-6c750440-5749-11ec-8f0b-05e8b06e1b10.json -- id: salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10 - file: salesforce-59ef0af0-5749-11ec-8f0b-05e8b06e1b10.json -- id: salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10 - file: salesforce-790da810-5749-11ec-8f0b-05e8b06e1b10.json -- id: salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10 - file: salesforce-1659aef0-574c-11ec-8f0b-05e8b06e1b10.json +- id: 6e6bee90-f7e6-11ee-9088-0f36517484ce + file: 6e6bee90-f7e6-11ee-9088-0f36517484ce.json +- id: cb7b4a40-f7ff-11ee-9088-0f36517484ce + file: cb7b4a40-f7ff-11ee-9088-0f36517484ce.json +- id: 243e40b0-f891-11ee-9088-0f36517484ce + file: 243e40b0-f891-11ee-9088-0f36517484ce.json +- id: c66be450-f891-11ee-9088-0f36517484ce + file: c66be450-f891-11ee-9088-0f36517484ce.json diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/config/setupaudittrail-rest.yml b/x-pack/filebeat/module/salesforce/setupaudittrail-rest/config/setupaudittrail-rest.yml deleted file mode 100644 index 34f8f694944..00000000000 --- a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/config/setupaudittrail-rest.yml +++ /dev/null @@ -1,68 +0,0 @@ -{{ if eq .input "httpjson" }} - -type: httpjson -interval: {{ .interval }} -request.method: GET -auth.oauth2: - enabled: true - {{ if .client_id }} - client.id: {{ .client_id }} - {{ end }} - {{ if .client_secret }} - client.secret: {{ .client_secret }} - {{ end }} - {{ if .token_url }} - token_url: {{ .token_url }} - {{ end }} - {{ if .user }} - user: {{ .user }} - {{ end }} - {{ if .password }} - password: {{ .password }} - {{ end }} -# Query params will be overwritten by request.transforms from start of the input and -# it is to indicate that this url is for SetupAuditTratil type of events as cursor stores the url as source. -# Each filebeat input cursor source needs to be uniquely identified with a name. -request.url: {{ .url }}/services/data/v52.0/query?q=setupaudittrail+rest -{{ if .proxy_url }} -request.proxy_url: {{ .proxy_url }} -{{ end }} -request.transforms: - - set: - target: url.params.q - value: "SELECT Action,CreatedByContext,CreatedById,CreatedByIssuer,CreatedDate,DelegateUser,Display,Id,ResponsibleNamespacePrefix,Section FROM SetupAuditTrail WHERE CreatedDate > [[.cursor.last_published_setupaudittrail]] ORDER BY CreatedDate ASC NULLS FIRST" - default: "SELECT Action,CreatedByContext,CreatedById,CreatedByIssuer,CreatedDate,DelegateUser,Display,Id,ResponsibleNamespacePrefix,Section FROM SetupAuditTrail ORDER BY CreatedDate ASC NULLS FIRST" -response.split: - target: body.records -response.pagination: -- set: - target: url.value - value: '[[if (ne .last_response.body.done true)]]{{ .url }}[[.last_response.body.nextRecordsUrl]][[end]]' - fail_on_template_error: true -cursor: - last_published_setupaudittrail: - value: '[[.last_event.CreatedDate]]' - -{{ else if eq .input "file" }} - -type: log -paths: -{{ range $i, $path := .paths }} - - {{$path}} -{{ end }} -exclude_files: [".gz$"] - -{{ end }} - -tags: {{.tags | tojson}} -publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} - -processors: - - decode_json_fields: - fields: [message] - target: "json" - - add_fields: - target: '' - fields: - ecs.version: 1.12.0 - - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/setupaudittrail-rest/ingest/pipeline.yml deleted file mode 100644 index 2c86704d117..00000000000 --- a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/ingest/pipeline.yml +++ /dev/null @@ -1,142 +0,0 @@ ---- -description: Pipeline for parsing Salesforce SetupAuditTrail logs -processors: -- set: - field: event.ingested - value: '{{_ingest.timestamp}}' -- rename: - field: message - target_field: event.original - ignore_missing: true -- remove: - field: - - message - ignore_missing: true - -- set: - field: salesforce.access_mode - value: rest - ignore_failure: true - -- date: - field: json.CreatedDate - target_field: "@timestamp" - formats: - - ISO8601 - ignore_failure: true - -- rename: - field: json.attributes.type - target_field: salesforce.setup_audit_trail.event_type - ignore_missing: true -- rename: - field: json.CreatedByContext - target_field: salesforce.setup_audit_trail.created_by_context - ignore_missing: true -- rename: - field: json.CreatedById - target_field: salesforce.setup_audit_trail.created_by_id - ignore_missing: true -- rename: - field: json.CreatedByIssuer - target_field: salesforce.setup_audit_trail.created_by_issuer - ignore_missing: true -- rename: - field: json.DelegateUser - target_field: salesforce.setup_audit_trail.delegate_user - ignore_missing: true -- rename: - field: json.Display - target_field: salesforce.setup_audit_trail.display - ignore_missing: true -- rename: - field: json.ResponsibleNamespacePrefix - target_field: salesforce.setup_audit_trail.responsible_namespace_prefix - ignore_missing: true -- rename: - field: json.Section - target_field: salesforce.setup_audit_trail.section - ignore_missing: true - -####################### -## ECS Event Mapping ## -####################### - -- rename: - field: json.Id - target_field: event.id - ignore_missing: true -- rename: - field: json.Action - target_field: event.action - ignore_missing: true -- rename: - field: json.attributes.url - target_field: event.url - ignore_missing: true -- date: - field: json.CreatedDate - target_field: event.created - formats: - - ISO8601 - ignore_failure: true -- set: - field: event.type - value: "admin" -- set: - field: event.kind - value: "event" -- set: - field: event.dataset - value: "salesforce.setupaudittrail" -- set: - field: event.module - value: "salesforce" - -###################### -## ECS User Mapping ## -###################### - -- set: - field: user.id - copy_from: salesforce.setup_audit_trail.created_by_id - ignore_failure: true -- set: - field: temp_setup_audit_trail_display - copy_from: salesforce.setup_audit_trail.display - ignore_failure: true -- dissect: - field: temp_setup_audit_trail_display - pattern: "For user %{user.name}, %{?}" - ignore_failure: true - -############# -## Cleanup ## -############# - -- script: - description: Drops null/empty values recursively - lang: painless - source: | - boolean dropEmptyFields(Object object) { - if (object == null || object == "") { - return true; - } else if (object instanceof Map) { - ((Map) object).values().removeIf(value -> dropEmptyFields(value)); - return (((Map) object).size() == 0); - } else if (object instanceof List) { - ((List) object).removeIf(value -> dropEmptyFields(value)); - return (((List) object).length == 0); - } - return false; - } - dropEmptyFields(ctx); -- remove: - field: - - json - - temp_setup_audit_trail_display - ignore_missing: true -on_failure: -- set: - field: error.message - value: '{{_ingest.on_failure_message}}' diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/manifest.yml b/x-pack/filebeat/module/salesforce/setupaudittrail-rest/manifest.yml deleted file mode 100644 index 889bfe92569..00000000000 --- a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -module_version: 1.0 - -var: - - name: input - default: httpjson - - name: interval - default: 1h - - name: tags - default: [salesforce-setupaudittrail-rest, forwarded] - - name: proxy_url - - name: client_id - - name: client_secret - - name: token_url - - name: user - - name: password - - name: url - -ingest_pipeline: ingest/pipeline.yml -input: config/setupaudittrail-rest.yml diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log b/x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log deleted file mode 100644 index 7d725a8cfff..00000000000 --- a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log +++ /dev/null @@ -1 +0,0 @@ -{"attributes":{"type":"SetupAuditTrail","url":"/services/data/v52.0/sobjects/SetupAuditTrail/0Ym5j12345BJKvZCAX"},"Action":"changedUserEmailVerifiedStatusVerified","CreatedByContext":null,"CreatedById":"1234j000000q9s7ABC","CreatedByIssuer":null,"CreatedDate":"2021-10-06T07:13:07.000+0000","DelegateUser":null,"Display":"For user abc.def@mail.com, the User Verified Email status changed to verified","Id":"0Ym5j12345BJKvABCD","ResponsibleNamespacePrefix":null,"Section":"Manage Users"} diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log-expected.json deleted file mode 100644 index 2ff59c8b938..00000000000 --- a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/test/salesforce_setupaudittrail.ndjson.log-expected.json +++ /dev/null @@ -1,29 +0,0 @@ -[ - { - "@timestamp": "2021-10-06T07:13:07.000Z", - "event.action": "changedUserEmailVerifiedStatusVerified", - "event.dataset": "salesforce.setupaudittrail", - "event.id": "0Ym5j12345BJKvABCD", - "event.kind": "event", - "event.module": "salesforce", - "event.original": "{\"attributes\":{\"type\":\"SetupAuditTrail\",\"url\":\"/services/data/v52.0/sobjects/SetupAuditTrail/0Ym5j12345BJKvZCAX\"},\"Action\":\"changedUserEmailVerifiedStatusVerified\",\"CreatedByContext\":null,\"CreatedById\":\"1234j000000q9s7ABC\",\"CreatedByIssuer\":null,\"CreatedDate\":\"2021-10-06T07:13:07.000+0000\",\"DelegateUser\":null,\"Display\":\"For user abc.def@mail.com, the User Verified Email status changed to verified\",\"Id\":\"0Ym5j12345BJKvABCD\",\"ResponsibleNamespacePrefix\":null,\"Section\":\"Manage Users\"}", - "event.timezone": "-02:00", - "event.type": "admin", - "event.url": "/services/data/v52.0/sobjects/SetupAuditTrail/0Ym5j12345BJKvZCAX", - "fileset.name": "setupaudittrail-rest", - "input.type": "log", - "log.offset": 0, - "salesforce.access_mode": "rest", - "salesforce.setup_audit_trail.created_by_id": "1234j000000q9s7ABC", - "salesforce.setup_audit_trail.display": "For user abc.def@mail.com, the User Verified Email status changed to verified", - "salesforce.setup_audit_trail.event_type": "SetupAuditTrail", - "salesforce.setup_audit_trail.section": "Manage Users", - "service.type": "salesforce", - "tags": [ - "forwarded", - "salesforce-setupaudittrail-rest" - ], - "user.id": "1234j000000q9s7ABC", - "user.name": "abc.def@mail.com" - } -] \ No newline at end of file diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/_meta/fields.yml b/x-pack/filebeat/module/salesforce/setupaudittrail/_meta/fields.yml similarity index 86% rename from x-pack/filebeat/module/salesforce/setupaudittrail-rest/_meta/fields.yml rename to x-pack/filebeat/module/salesforce/setupaudittrail/_meta/fields.yml index edd774250d1..d19dfb637ef 100644 --- a/x-pack/filebeat/module/salesforce/setupaudittrail-rest/_meta/fields.yml +++ b/x-pack/filebeat/module/salesforce/setupaudittrail/_meta/fields.yml @@ -4,10 +4,10 @@ description: > Fileset for ingesting Salesforce SetupAuditTrail logs. fields: - - name: event_type + - name: document_id type: keyword description: > - Event type + Unique Id. - name: created_by_context type: keyword description: > @@ -23,7 +23,7 @@ - name: delegate_user type: keyword description: > - The Login-As user who executed the action in Setup. If a Login-As user didn’t perform the action, this field is blank. This field is available in API version 35.0 and later. + The Login-As user who executed the action in Setup. If a Login-As user didn't perform the action, this field is blank. This field is available in API version 35.0 and later. - name: display type: keyword description: > diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail/config/setupaudittrail.yml b/x-pack/filebeat/module/salesforce/setupaudittrail/config/setupaudittrail.yml new file mode 100644 index 00000000000..6814aa9298d --- /dev/null +++ b/x-pack/filebeat/module/salesforce/setupaudittrail/config/setupaudittrail.yml @@ -0,0 +1,40 @@ +{{ if eq .input "salesforce" }} + +id: setupaudittrail +type: salesforce +enabled: true +{{ if .api_version }} +version: {{ .api_version }} +{{ end }} +auth.oauth2: {{ .authentication | tojson }} +url: {{ .url }} +event_monitoring_method: + object: + enabled: {{ if .real_time }}true{{ else }}false{{ end }} + interval: {{ .real_time_interval }} + query: + default: SELECT FIELDS(STANDARD) FROM SetupAuditTrail{{ if .initial_interval }} WHERE CreatedDate > [[ (formatTime (now.Add (parseDuration "-{{ .initial_interval }}")) "2006-01-02T15:04:05.000Z0700") ]]{{ end }} ORDER BY CreatedDate ASC NULLS FIRST + value: SELECT FIELDS(STANDARD) FROM SetupAuditTrail WHERE CreatedDate > [[ .cursor.object.last_event_time ]] ORDER BY CreatedDate ASC NULLS FIRST + cursor: + field: "CreatedDate" + +{{ else if eq .input "file" }} + +type: log +paths: +{{ range $i, $path := .paths }} + - {{$path}} +{{ end }} +exclude_files: [".gz$"] + +{{ end }} + +tags: {{.tags | tojson}} +publisher_pipeline.disable_host: {{ inList .tags "forwarded" }} + +processors: + - add_fields: + target: salesforce + fields: + instance_url: {{ .url }} + - add_locale: ~ diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail/ingest/pipeline.yml b/x-pack/filebeat/module/salesforce/setupaudittrail/ingest/pipeline.yml new file mode 100644 index 00000000000..1d61b6c0588 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/setupaudittrail/ingest/pipeline.yml @@ -0,0 +1,177 @@ +--- +description: Pipeline for parsing Salesforce SetupAuditTrail logs +processors: + - json: + field: message + target_field: json + on_failure: + - drop: {} + + - set: + field: event.ingested + value: "{{_ingest.timestamp}}" + - set: + field: event.original + copy_from: message + ignore_empty_value: true + ignore_failure: true + if: "ctx.event?.original == null" + - set: + field: salesforce.setup_audit_trail.document_id + copy_from: _id + ignore_empty_value: true + - fingerprint: + fields: + - json.Id + - json.CreatedDate + target_field: _id + ignore_failure: true + ignore_missing: true + + - date: + field: json.CreatedDate + target_field: "@timestamp" + formats: + - ISO8601 + on_failure: + - set: + field: "@timestamp" + value: "{{_ingest.timestamp}}" + - set: + field: error.message + value: "Failed to parse CreatedDate: {{json.CreatedDate}}" + + # Normalize field names + - rename: + field: json.CreatedByContext + target_field: salesforce.setup_audit_trail.created_by_context + ignore_failure: true + ignore_missing: true + - rename: + field: json.CreatedById + target_field: salesforce.setup_audit_trail.created_by_id + ignore_failure: true + ignore_missing: true + - rename: + field: json.CreatedByIssuer + target_field: salesforce.setup_audit_trail.created_by_issuer + ignore_failure: true + ignore_missing: true + - rename: + field: json.DelegateUser + target_field: salesforce.setup_audit_trail.delegate_user + ignore_failure: true + ignore_missing: true + - rename: + field: json.Display + target_field: salesforce.setup_audit_trail.display + ignore_failure: true + ignore_missing: true + - rename: + field: json.ResponsibleNamespacePrefix + target_field: salesforce.setup_audit_trail.responsible_namespace_prefix + ignore_failure: true + ignore_missing: true + - rename: + field: json.Section + target_field: salesforce.setup_audit_trail.section + ignore_failure: true + ignore_missing: true + + ####################### + ## ECS Event Mapping ## + ####################### + + - set: + field: ecs.version + value: "8.11.0" + ignore_failure: true + ignore_empty_value: true + - rename: + field: json.Id + target_field: event.id + ignore_failure: true + ignore_missing: true + - rename: + field: json.Action + target_field: event.action + ignore_failure: true + ignore_missing: true + - date: + field: json.CreatedDate + target_field: event.created + formats: + - ISO8601 + ignore_failure: true + - set: + field: event.type + value: ["admin"] + ignore_failure: true + ignore_empty_value: true + - set: + field: event.kind + value: "event" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.dataset + value: "salesforce.setupaudittrail" + ignore_failure: true + ignore_empty_value: true + - set: + field: event.module + value: salesforce + ignore_failure: true + ignore_empty_value: true + + ###################### + ## ECS User Mapping ## + ###################### + + - set: + field: user.id + copy_from: salesforce.setup_audit_trail.created_by_id + ignore_failure: true + ignore_empty_value: true + - dissect: + field: salesforce.setup_audit_trail.display + pattern: "For user %{user.name}, %{?}" + ignore_failure: true + + ############# + ## Cleanup ## + ############# + + # Drop empty fields + - script: + lang: painless + source: | + boolean dropEmptyFields(Object object) { + if (object == null || object == "") { + return true; + } else if (object instanceof Map) { + ((Map) object).values().removeIf(value -> dropEmptyFields(value)); + return ((Map) object).isEmpty(); + } else if (object instanceof List) { + ((List) object).removeIf(value -> dropEmptyFields(value)); + return ((List) object).isEmpty(); + } + return false; + } + dropEmptyFields(ctx); + + - remove: + field: + - json + - message + ignore_missing: true + - remove: + field: event.original + if: "ctx.tags == null || !ctx.tags.contains('preserve_original_event')" + ignore_failure: true + ignore_missing: true + +on_failure: + - set: + field: error.message + value: "{{{ _ingest.on_failure_message }}}" diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail/manifest.yml b/x-pack/filebeat/module/salesforce/setupaudittrail/manifest.yml new file mode 100644 index 00000000000..eb1eb02b96b --- /dev/null +++ b/x-pack/filebeat/module/salesforce/setupaudittrail/manifest.yml @@ -0,0 +1,19 @@ +module_version: 1.0 + +var: + - name: input + default: salesforce + - name: tags + default: [salesforce-setupaudittrail, forwarded] + - name: api_version + - name: authentication + - name: url + - name: real_time + - name: real_time_interval + default: 5m + - name: initial_interval + - name: log_file_interval + default: Hourly + +ingest_pipeline: ingest/pipeline.yml +input: config/setupaudittrail.yml diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log b/x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log new file mode 100644 index 00000000000..7a289a23a9d --- /dev/null +++ b/x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log @@ -0,0 +1 @@ +{"Action":"changedUserEmailVerifiedStatusVerified","CreatedByContext":null,"CreatedById":"1234j000000q9s7ABC","CreatedByIssuer":null,"CreatedDate":"2021-10-06T07:13:07.000+0000","DelegateUser":null,"Display":"For user abc.def@mail.com, the User Verified Email status changed to verified","Id":"0Ym5j12345BJKvABCD","ResponsibleNamespacePrefix":null,"Section":"Manage Users"} diff --git a/x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log-expected.json b/x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log-expected.json new file mode 100644 index 00000000000..204f42a35d7 --- /dev/null +++ b/x-pack/filebeat/module/salesforce/setupaudittrail/test/salesforce_setupaudittrail.ndjson.log-expected.json @@ -0,0 +1,28 @@ +[ + { + "@timestamp": "2021-10-06T07:13:07.000Z", + "event.action": "changedUserEmailVerifiedStatusVerified", + "event.dataset": "salesforce.setupaudittrail", + "event.id": "0Ym5j12345BJKvABCD", + "event.kind": "event", + "event.module": "salesforce", + "event.timezone": "-02:00", + "event.type": [ + "admin" + ], + "fileset.name": "setupaudittrail", + "input.type": "log", + "log.offset": 0, + "salesforce.instance_url": "", + "salesforce.setup_audit_trail.created_by_id": "1234j000000q9s7ABC", + "salesforce.setup_audit_trail.display": "For user abc.def@mail.com, the User Verified Email status changed to verified", + "salesforce.setup_audit_trail.section": "Manage Users", + "service.type": "salesforce", + "tags": [ + "forwarded", + "salesforce-setupaudittrail" + ], + "user.id": "1234j000000q9s7ABC", + "user.name": "abc.def@mail.com" + } +] \ No newline at end of file diff --git a/x-pack/filebeat/modules.d/salesforce.yml.disabled b/x-pack/filebeat/modules.d/salesforce.yml.disabled index 4931e8e006e..bd9b7b03bbf 100644 --- a/x-pack/filebeat/modules.d/salesforce.yml.disabled +++ b/x-pack/filebeat/modules.d/salesforce.yml.disabled @@ -1,133 +1,145 @@ # Module: salesforce # Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-salesforce.html -- module: salesforce - - apex-rest: - enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - login-rest: - enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +# Configuration file for Salesforce module in Filebeat + +# Common Configurations: +# - enabled: Set to true to enable ingestion of Salesforce module fileset +# - initial_interval: Initial interval for log collection. This setting determines the time period for which the logs will be initially collected when the ingestion process starts, i.e. 1d/h/m/s +# - api_version: API version for Salesforce, version should be greater than 46.0 + +# Authentication Configurations: +# User-Password Authentication: +# - enabled: Set to true to enable user-password authentication +# - client.id: Client ID for user-password authentication +# - client.secret: Client secret for user-password authentication +# - token_url: Token URL for user-password authentication +# - username: Username for user-password authentication +# - password: Password for user-password authentication + +# JWT Authentication: +# - enabled: Set to true to enable JWT authentication +# - client.id: Client ID for JWT authentication +# - client.username: Username for JWT authentication +# - client.key_path: Path to client key for JWT authentication +# - url: Audience URL for JWT authentication + +# Event Monitoring: +# - real_time: Set to true to enable real-time logging using object type data collection +# - real_time_interval: Interval for real-time logging + +# Event Log File: +# - event_log_file: Set to true to enable event log file type data collection +# - elf_interval: Interval for event log file +# - log_file_interval: Interval type for log file collection, either Hourly or Daily - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" +- module: salesforce - login-stream: + apex: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - logout-rest: + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" + + login: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - logout-stream: + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" + + var.real_time: true + var.real_time_interval: 5m + + logout: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - setupaudittrail-rest: + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.event_log_file: true + var.elf_interval: 1h + var.log_file_interval: "Hourly" + + var.real_time: true + var.real_time_interval: 5m + + setupaudittrail: enabled: false - - # Oauth Client ID - #var.client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Client Secret - #var.client_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - - # Oauth Token URL - #var.token_url: "https://login.salesforce.com/services/oauth2/token" - - # Oauth User, should include the User mail - #var.user: "abc.xyz@mail.com" - - # Oauth password, should include the User password - #var.password: "P@$$W0₹D" - - # URL, should include the instance_url - #var.url: "https://instance_id.my.salesforce.com" - - # Interval, should include the time interval - #var.interval: 1h \ No newline at end of file + var.initial_interval: 1d + var.api_version: 56 + + var.authentication: + user_password_flow: + enabled: true + client.id: "" + client.secret: "client-secret" + token_url: "" + username: "" + password: "" + jwt_bearer_flow: + enabled: false + client.id: "" + client.username: "" + client.key_path: "" + url: "https://login.salesforce.com" + + var.url: "https://instance_id.my.salesforce.com" + + var.real_time: true + var.real_time_interval: 5m \ No newline at end of file From f1934b54d61db9be442ffc36334bd73da7b1390f Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Mon, 15 Apr 2024 13:24:16 -0400 Subject: [PATCH 156/313] [updatecli] update elastic stack version for testing 8.14.0-ab589c40 (#38866) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Update snapshot.yml Made with ❤️️ by updatecli * chore: Update snapshot.yml Made with ❤️️ by updatecli --------- Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> Co-authored-by: Craig MacKenzie --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index c0376964c40..067f88ab6a5 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-3c0002e4-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-cf1b0234-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-3c0002e4-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-cf1b0234-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-3c0002e4-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-cf1b0234-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 1898d37016dcb54abcdef2dbbc9c83b0ef2be425 Mon Sep 17 00:00:00 2001 From: Michael Wolf Date: Mon, 15 Apr 2024 11:22:21 -0700 Subject: [PATCH 157/313] Session view processor procfs (#38799) Add a procfs backend to the auditbeat add_session_metadata processor. For systems that don't support ebpf, this procfs backend can be used instead to enrich auditbeat events with the data needed for session view. However the backend is expected to be less reliable than the ebpf backend; if processes exit before their info is read from procfs, the info will not be available, and some processes will be not be enriched (particularly very short-lived processes). --- CHANGELOG.next.asciidoc | 1 + .../sessionmd/add_session_metadata.go | 32 +- .../sessionmd/add_session_metadata_test.go | 10 +- .../processors/sessionmd/processdb/db.go | 66 ++- .../processors/sessionmd/processdb/db_test.go | 10 +- .../processors/sessionmd/procfs/procfs.go | 2 +- .../procfs_provider/procfs_provider.go | 133 +++++ .../procfs_provider/procfs_provider_test.go | 482 ++++++++++++++++++ .../processors/sessionmd/types/process.go | 15 + 9 files changed, 723 insertions(+), 28 deletions(-) create mode 100644 x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go create mode 100644 x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index d381e8bbb59..060d44d907a 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -181,6 +181,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add opt-in eBPF backend for file_integrity module. {pull}37223[37223] - Add process data to file events (Linux only, eBPF backend). {pull}38199[38199] - Add container id to file events (Linux only, eBPF backend). {pull}38328[38328] +- Add procfs backend to the `add_session_metadata` processor. {pull}38799[38799] - Add process.entity_id, process.group.name and process.group.id in add_process_metadata processor. Make fim module with kprobes backend to always add an appropriately configured add_process_metadata processor to enrich file events {pull}38776[38776] *Filebeat* diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go index 4cc2d64a47b..efcfdc96778 100644 --- a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go @@ -19,6 +19,7 @@ import ( "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/procfs" "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/provider" "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider" cfg "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" @@ -59,24 +60,37 @@ func New(cfg *cfg.C) (beat.Processor, error) { backfilledPIDs := db.ScrapeProcfs() logger.Debugf("backfilled %d processes", len(backfilledPIDs)) + var p provider.Provider + switch c.Backend { case "auto": - // "auto" always uses ebpf, as it's currently the only backend - fallthrough + p, err = ebpf_provider.NewProvider(ctx, logger, db) + if err != nil { + // Most likely cause of error is not supporting ebpf on system, try procfs + p, err = procfs_provider.NewProvider(ctx, logger, db, reader, c.PIDField) + if err != nil { + return nil, fmt.Errorf("failed to create provider: %w", err) + } + } case "ebpf": - p, err := ebpf_provider.NewProvider(ctx, logger, db) + p, err = ebpf_provider.NewProvider(ctx, logger, db) + if err != nil { + return nil, fmt.Errorf("failed to create ebpf provider: %w", err) + } + case "procfs": + p, err = procfs_provider.NewProvider(ctx, logger, db, reader, c.PIDField) if err != nil { return nil, fmt.Errorf("failed to create ebpf provider: %w", err) } - return &addSessionMetadata{ - config: c, - logger: logger, - db: db, - provider: p, - }, nil default: return nil, fmt.Errorf("unknown backend configuration") } + return &addSessionMetadata{ + config: c, + logger: logger, + db: db, + provider: p, + }, nil } func (p *addSessionMetadata) Run(ev *beat.Event) (*beat.Event, error) { diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go index 4890505aac4..1ef06c92b2e 100644 --- a/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/processdb" @@ -327,7 +327,7 @@ func TestEnrich(t *testing.T) { for _, tt := range enrichTests { reader := procfs.NewMockReader() db, err := processdb.NewDB(reader, *logger) - assert.Nil(t, err) + require.Nil(t, err) for _, ev := range tt.mockProcesses { db.InsertExec(ev) @@ -342,10 +342,10 @@ func TestEnrich(t *testing.T) { i := tt.input actual, err := s.enrich(&i) if tt.expect_error { - assert.Error(t, err, "%s: error unexpectedly nil", tt.testName) + require.Error(t, err, "%s: error unexpectedly nil", tt.testName) } else { - assert.Nil(t, err, "%s: enrich error: %w", tt.testName, err) - assert.NotNil(t, actual, "%s: returned nil event", tt.testName) + require.Nil(t, err, "%s: enrich error: %w", tt.testName, err) + require.NotNil(t, actual, "%s: returned nil event", tt.testName) //Validate output if diff := cmp.Diff(tt.expected.Fields, actual.Fields, ignoreMissingFrom(tt.expected.Fields)); diff != "" { diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/db.go b/x-pack/auditbeat/processors/sessionmd/processdb/db.go index 6b2de897973..f5ec71d1d4a 100644 --- a/x-pack/auditbeat/processors/sessionmd/processdb/db.go +++ b/x-pack/auditbeat/processors/sessionmd/processdb/db.go @@ -71,6 +71,7 @@ const ( ttyMajor = 4 consoleMaxMinor = 63 ttyMaxMinor = 255 + retryCount = 2 ) type Process struct { @@ -229,6 +230,8 @@ func (db *DB) InsertFork(fork types.ProcessForkEvent) { pid := fork.ChildPIDs.Tgid ppid := fork.ParentPIDs.Tgid + db.scrapeAncestors(db.processes[pid]) + if entry, ok := db.processes[ppid]; ok { entry.PIDs = pidInfoFromProto(fork.ChildPIDs) entry.Creds = credInfoFromProto(fork.Creds) @@ -271,6 +274,7 @@ func (db *DB) InsertExec(exec types.ProcessExecEvent) { } db.processes[exec.PIDs.Tgid] = proc + db.scrapeAncestors(proc) entryLeaderPID := db.evaluateEntryLeader(proc) if entryLeaderPID != nil { db.entryLeaderRelationships[exec.PIDs.Tgid] = *entryLeaderPID @@ -431,6 +435,8 @@ func fullProcessFromDBProcess(p Process) types.Process { ret.Group.ID = strconv.FormatUint(uint64(egid), 10) ret.Thread.Capabilities.Permitted, _ = capabilities.FromUint64(p.Creds.CapPermitted) ret.Thread.Capabilities.Effective, _ = capabilities.FromUint64(p.Creds.CapEffective) + ret.TTY.CharDevice.Major = p.CTTY.Major + ret.TTY.CharDevice.Minor = p.CTTY.Minor return ret } @@ -555,16 +561,37 @@ func (db *DB) GetProcess(pid uint32) (types.Process, error) { ret := fullProcessFromDBProcess(process) - if parent, ok := db.processes[process.PIDs.Ppid]; ok { - fillParent(&ret, parent) + if process.PIDs.Ppid != 0 { + for i := 0; i < retryCount; i++ { + if parent, ok := db.processes[process.PIDs.Ppid]; ok { + fillParent(&ret, parent) + break + } + db.logger.Debugf("failed to find %d in DB (parent of %d), attempting to scrape", process.PIDs.Ppid, pid) + db.scrapeAncestors(process) + } } - if groupLeader, ok := db.processes[process.PIDs.Pgid]; ok { - fillGroupLeader(&ret, groupLeader) + if process.PIDs.Pgid != 0 { + for i := 0; i < retryCount; i++ { + if groupLeader, ok := db.processes[process.PIDs.Pgid]; ok { + fillGroupLeader(&ret, groupLeader) + break + } + db.logger.Debugf("failed to find %d in DB (group leader of %d), attempting to scrape", process.PIDs.Pgid, pid) + db.scrapeAncestors(process) + } } - if sessionLeader, ok := db.processes[process.PIDs.Sid]; ok { - fillSessionLeader(&ret, sessionLeader) + if process.PIDs.Sid != 0 { + for i := 0; i < retryCount; i++ { + if sessionLeader, ok := db.processes[process.PIDs.Sid]; ok { + fillSessionLeader(&ret, sessionLeader) + break + } + db.logger.Debugf("failed to find %d in DB (session leader of %d), attempting to scrape", process.PIDs.Sid, pid) + db.scrapeAncestors(process) + } } if entryLeaderPID, foundEntryLeaderPID := db.entryLeaderRelationships[process.PIDs.Tgid]; foundEntryLeaderPID { @@ -572,10 +599,10 @@ func (db *DB) GetProcess(pid uint32) (types.Process, error) { // if there is an entry leader then there is a matching member in the entryLeaders table fillEntryLeader(&ret, db.entryLeaders[entryLeaderPID], entryLeader) } else { - db.logger.Errorf("failed to find entry leader entry %d for %d (%s)", entryLeaderPID, pid, db.processes[pid].Filename) + db.logger.Debugf("failed to find entry leader entry %d for %d (%s)", entryLeaderPID, pid, db.processes[pid].Filename) } } else { - db.logger.Errorf("failed to find entry leader for %d (%s)", pid, db.processes[pid].Filename) + db.logger.Debugf("failed to find entry leader for %d (%s)", pid, db.processes[pid].Filename) } db.setEntityID(&ret) @@ -666,3 +693,26 @@ func getTTYType(major uint16, minor uint16) TTYType { return TTYUnknown } + +func (db *DB) scrapeAncestors(proc Process) { + for _, pid := range []uint32{proc.PIDs.Pgid, proc.PIDs.Ppid, proc.PIDs.Sid} { + if _, exists := db.processes[pid]; pid == 0 || exists { + continue + } + procInfo, err := db.procfs.GetProcess(pid) + if err != nil { + db.logger.Debugf("couldn't get %v from procfs: %w", pid, err) + continue + } + p := Process{ + PIDs: pidInfoFromProto(procInfo.PIDs), + Creds: credInfoFromProto(procInfo.Creds), + CTTY: ttyDevFromProto(procInfo.CTTY), + Argv: procInfo.Argv, + Cwd: procInfo.Cwd, + Env: procInfo.Env, + Filename: procInfo.Filename, + } + db.insertProcess(p) + } +} diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/db_test.go b/x-pack/auditbeat/processors/sessionmd/processdb/db_test.go index 5e8001a68e5..086c694f51f 100644 --- a/x-pack/auditbeat/processors/sessionmd/processdb/db_test.go +++ b/x-pack/auditbeat/processors/sessionmd/processdb/db_test.go @@ -9,7 +9,7 @@ package processdb import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/elastic/elastic-agent-libs/logp" ) @@ -17,8 +17,8 @@ import ( var logger = logp.NewLogger("processdb") func TestGetTTYType(t *testing.T) { - assert.Equal(t, TTYConsole, getTTYType(4, 0)) - assert.Equal(t, Pts, getTTYType(136, 0)) - assert.Equal(t, TTY, getTTYType(4, 64)) - assert.Equal(t, TTYUnknown, getTTYType(1000, 1000)) + require.Equal(t, TTYConsole, getTTYType(4, 0)) + require.Equal(t, Pts, getTTYType(136, 0)) + require.Equal(t, TTY, getTTYType(4, 64)) + require.Equal(t, TTYUnknown, getTTYType(1000, 1000)) } diff --git a/x-pack/auditbeat/processors/sessionmd/procfs/procfs.go b/x-pack/auditbeat/processors/sessionmd/procfs/procfs.go index f3a7d41d1d7..187f9e12d8a 100644 --- a/x-pack/auditbeat/processors/sessionmd/procfs/procfs.go +++ b/x-pack/auditbeat/processors/sessionmd/procfs/procfs.go @@ -20,7 +20,7 @@ import ( ) func MajorTTY(ttyNr uint32) uint16 { - return uint16((ttyNr >> 8) & 0xf) + return uint16((ttyNr >> 8) & 0xff) } func MinorTTY(ttyNr uint32) uint16 { diff --git a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go new file mode 100644 index 00000000000..a0d11ad18e5 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go @@ -0,0 +1,133 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package procfs_provider + +import ( + "context" + "fmt" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/processdb" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/procfs" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/provider" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/types" + "github.com/elastic/elastic-agent-libs/logp" +) + +const ( + syscallField = "auditd.data.syscall" +) + +type prvdr struct { + ctx context.Context + logger *logp.Logger + db *processdb.DB + reader procfs.Reader + pidField string +} + +func NewProvider(ctx context.Context, logger *logp.Logger, db *processdb.DB, reader procfs.Reader, pidField string) (provider.Provider, error) { + return prvdr{ + ctx: ctx, + logger: logger, + db: db, + reader: reader, + pidField: pidField, + }, nil +} + +// UpdateDB will update the process DB with process info from procfs or the event itself +func (s prvdr) UpdateDB(ev *beat.Event) error { + pi, err := ev.Fields.GetValue(s.pidField) + if err != nil { + return fmt.Errorf("event not supported, no pid") + } + pid, ok := pi.(int) + if !ok { + return fmt.Errorf("pid field not int") + } + + syscall, err := ev.GetValue(syscallField) + if err != nil { + return fmt.Errorf("event not supported, no syscall data") + } + + switch syscall { + case "execveat", "execve": + pe := types.ProcessExecEvent{} + proc_info, err := s.reader.GetProcess(uint32(pid)) + if err == nil { + pe.PIDs = proc_info.PIDs + pe.Creds = proc_info.Creds + pe.CTTY = proc_info.CTTY + pe.CWD = proc_info.Cwd + pe.Argv = proc_info.Argv + pe.Env = proc_info.Env + pe.Filename = proc_info.Filename + } else { + s.logger.Errorf("get process info from proc for pid %v: %w", pid, err) + // If process info couldn't be taken from procfs, populate with as much info as + // possible from the event + pe.PIDs.Tgid = uint32(pid) + var intr interface{} + var i int + var ok bool + var parent types.Process + intr, err := ev.Fields.GetValue("process.parent.pid") + if err != nil { + goto out + } + if i, ok = intr.(int); !ok { + goto out + } + pe.PIDs.Ppid = uint32(i) + + parent, err = s.db.GetProcess(pe.PIDs.Ppid) + if err != nil { + goto out + } + pe.PIDs.Sid = parent.SessionLeader.PID + + intr, err = ev.Fields.GetValue("process.working_directory") + if err != nil { + goto out + } + pe.CWD = intr.(string) + out: + } + s.db.InsertExec(pe) + if err != nil { + return fmt.Errorf("insert exec to db: %w", err) + } + case "exit_group": + pe := types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: uint32(pid), + }, + } + s.db.InsertExit(pe) + case "setsid": + intr, err := ev.Fields.GetValue("auditd.result") + if err != nil { + return fmt.Errorf("syscall exit value not found") + } + result, ok := intr.(string) + if !ok { + return fmt.Errorf("\"auditd.result\" not string") + } + if result == "success" { + setsid_ev := types.ProcessSetsidEvent{ + PIDs: types.PIDInfo{ + Tgid: uint32(pid), + Sid: uint32(pid), + }, + } + s.db.InsertSetsid(setsid_ev) + } + } + return nil +} diff --git a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go new file mode 100644 index 00000000000..6fd333c4711 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go @@ -0,0 +1,482 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package procfs_provider + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/processdb" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/procfs" + "github.com/elastic/beats/v7/x-pack/auditbeat/processors/sessionmd/types" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +var ( + logger = *logp.NewLogger("procfs_test") + timestamp = time.Now() +) + +func TestExecveEvent(t *testing.T) { + var pid uint32 = 100 + event := beat.Event{ + Timestamp: timestamp, + Fields: mapstr.M{ + "auditd": mapstr.M{ + "data": mapstr.M{ + "a0": "aaaad2e476e0", + "a1": "aaaad2dd07a0", + "a2": "aaaad3170490", + "a3": "ffff85911b40", + "arch": "aarch64", + "argc": "1", + "syscall": "execve", + "tty": "pts4", + }, + }, + "process": mapstr.M{ + "pid": 100, + "args": "whoami", + "executable": "/usr/bin/whoami", + "name": "whoami", + "working_directory": "/", + }, + }, + } + prereq := []procfs.ProcessInfo{ + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 60, + Tgid: 60, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 0, + }, + }, + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 80, + Tgid: 80, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 0, + }, + }, + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 90, + Tgid: 90, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 0, + }, + }, + } + procinfo := []procfs.ProcessInfo{ + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 100, + Tgid: 100, + Vpid: 0, + Ppid: 80, + Pgid: 90, + Sid: 60, + }, + }, + } + expected := procfs.ProcessInfo{ + PIDs: types.PIDInfo{ + Tgid: 100, + Ppid: 80, + Pgid: 90, + Sid: 60, + }, + } + + reader := procfs.NewMockReader() + db, err := processdb.NewDB(reader, logger) + require.Nil(t, err) + for _, entry := range prereq { + reader.AddEntry(entry.PIDs.Tgid, entry) + } + db.ScrapeProcfs() + + for _, entry := range procinfo { + reader.AddEntry(entry.PIDs.Tgid, entry) + } + + provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") + require.Nil(t, err, "error creating provider") + + err = provider.UpdateDB(&event) + require.Nil(t, err) + + actual, err := db.GetProcess(pid) + require.Nil(t, err, "pid not found in db") + + require.Equal(t, expected.PIDs.Tgid, actual.PID) + require.Equal(t, expected.PIDs.Ppid, actual.Parent.PID) + require.Equal(t, expected.PIDs.Pgid, actual.GroupLeader.PID) + require.Equal(t, expected.PIDs.Sid, actual.SessionLeader.PID) +} + +func TestExecveatEvent(t *testing.T) { + var pid uint32 = 100 + event := beat.Event{ + Timestamp: timestamp, + Fields: mapstr.M{ + "auditd": mapstr.M{ + "data": mapstr.M{ + "a0": "aaaad2e476e0", + "a1": "aaaad2dd07a0", + "a2": "aaaad3170490", + "a3": "ffff85911b40", + "arch": "aarch64", + "argc": "1", + "syscall": "execveat", + "tty": "pts4", + }, + }, + "process": mapstr.M{ + "pid": 100, + "args": "whoami", + "executable": "/usr/bin/whoami", + "name": "whoami", + "working_directory": "/", + }, + }, + } + prereq := []procfs.ProcessInfo{ + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 60, + Tgid: 60, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 0, + }, + }, + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 80, + Tgid: 80, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 0, + }, + }, + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 90, + Tgid: 90, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 0, + }, + }, + } + procinfo := []procfs.ProcessInfo{ + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 100, + Tgid: 100, + Vpid: 0, + Ppid: 80, + Pgid: 90, + Sid: 60, + }, + }, + } + expected := procfs.ProcessInfo{ + PIDs: types.PIDInfo{ + Tgid: 100, + Ppid: 80, + Pgid: 90, + Sid: 60, + }, + } + + reader := procfs.NewMockReader() + db, err := processdb.NewDB(reader, logger) + require.Nil(t, err) + for _, entry := range prereq { + reader.AddEntry(entry.PIDs.Tgid, entry) + } + db.ScrapeProcfs() + + for _, entry := range procinfo { + reader.AddEntry(entry.PIDs.Tgid, entry) + } + + provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") + require.Nil(t, err, "error creating provider") + + err = provider.UpdateDB(&event) + require.Nil(t, err) + + actual, err := db.GetProcess(pid) + require.Nil(t, err, "pid not found in db") + + require.Equal(t, expected.PIDs.Tgid, actual.PID) + require.Equal(t, expected.PIDs.Ppid, actual.Parent.PID) + require.Equal(t, expected.PIDs.Pgid, actual.GroupLeader.PID) + require.Equal(t, expected.PIDs.Sid, actual.SessionLeader.PID) +} + +func TestSetSidEvent(t *testing.T) { + var pid uint32 = 200 + event := beat.Event{ + Timestamp: timestamp, + Fields: mapstr.M{ + "auditd": mapstr.M{ + "data": mapstr.M{ + "a0": "1", + "a1": "ffffeb535e38", + "a2": "ffffeb535e48", + "a3": "410134", + "arch": "aarch64", + "exit": "200", + "syscall": "setsid", + "tty": "pts4", + }, + "result": "success", + }, + "process": mapstr.M{ + "pid": 200, + "parent": mapstr.M{ + "pid": 100, + }, + }, + }, + } + prereq := []procfs.ProcessInfo{ + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 100, + Tgid: 100, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 1, + }, + }, + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 200, + Tgid: 200, + Vpid: 0, + Ppid: 100, + Pgid: 0, + Sid: 100, + }, + }, + } + expected := procfs.ProcessInfo{ + PIDs: types.PIDInfo{ + Tid: 200, + Tgid: 200, + Ppid: 100, + Pgid: 0, + Sid: 200, + }, + } + + reader := procfs.NewMockReader() + db, err := processdb.NewDB(reader, logger) + require.Nil(t, err) + for _, entry := range prereq { + reader.AddEntry(entry.PIDs.Tgid, entry) + } + db.ScrapeProcfs() + + provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") + require.Nil(t, err, "error creating provider") + + err = provider.UpdateDB(&event) + require.Nil(t, err) + + actual, err := db.GetProcess(pid) + if err != nil { + require.Fail(t, "pid not found in db") + } + + require.Equal(t, expected.PIDs.Sid, actual.SessionLeader.PID) +} + +func TestSetSidEventFailed(t *testing.T) { + var pid uint32 = 200 + event := beat.Event{ + Timestamp: timestamp, + Fields: mapstr.M{ + "auditd": mapstr.M{ + "data": mapstr.M{ + "a0": "1", + "a1": "ffffefbfcb78", + "a2": "ffffefbfcb88", + "a3": "410134", + "arch": "aarch64", + "exit": "EPERM", + "syscall": "setsid", + "tty": "pts4", + }, + "result": "fail", + }, + "process": mapstr.M{ + "pid": 200, + "parent": mapstr.M{ + "pid": 100, + }, + }, + }, + } + prereq := []procfs.ProcessInfo{ + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 100, + Tgid: 100, + Vpid: 0, + Ppid: 0, + Pgid: 0, + Sid: 1, + }, + }, + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 200, + Tgid: 200, + Vpid: 0, + Ppid: 100, + Pgid: 0, + Sid: 100, + }, + }, + } + expected := procfs.ProcessInfo{ + PIDs: types.PIDInfo{ + Tid: 200, + Tgid: 200, + Ppid: 100, + Pgid: 0, + Sid: 100, + }, + } + + reader := procfs.NewMockReader() + db, err := processdb.NewDB(reader, logger) + require.Nil(t, err) + for _, entry := range prereq { + reader.AddEntry(entry.PIDs.Tgid, entry) + } + db.ScrapeProcfs() + + provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") + require.Nil(t, err, "error creating provider") + + err = provider.UpdateDB(&event) + require.Nil(t, err) + + actual, err := db.GetProcess(pid) + if err != nil { + require.Fail(t, "pid not found in db") + } + + require.Equal(t, expected.PIDs.Sid, actual.SessionLeader.PID) +} + +func TestSetSidSessionLeaderNotScraped(t *testing.T) { + var pid uint32 = 200 + event := beat.Event{ + Timestamp: timestamp, + Fields: mapstr.M{ + "auditd": mapstr.M{ + "data": mapstr.M{ + "a0": "1", + "a1": "ffffeb535e38", + "a2": "ffffeb535e48", + "a3": "410134", + "arch": "aarch64", + "exit": "200", + "syscall": "setsid", + "tty": "pts4", + }, + "result": "success", + }, + "process": mapstr.M{ + "pid": 200, + "parent": mapstr.M{ + "pid": 100, + }, + }, + }, + } + prereq := []procfs.ProcessInfo{ + { + PIDs: types.PIDInfo{ + StartTimeNS: 0, + Tid: 200, + Tgid: 200, + Vpid: 0, + Ppid: 100, + Pgid: 0, + Sid: 100, + }, + }, + } + expected := procfs.ProcessInfo{ + PIDs: types.PIDInfo{ + Tid: 200, + Tgid: 200, + Ppid: 100, + Pgid: 0, + Sid: 200, + }, + } + + reader := procfs.NewMockReader() + db, err := processdb.NewDB(reader, logger) + require.Nil(t, err) + for _, entry := range prereq { + reader.AddEntry(entry.PIDs.Tgid, entry) + } + db.ScrapeProcfs() + + provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") + require.Nil(t, err, "error creating provider") + + err = provider.UpdateDB(&event) + require.Nil(t, err) + + actual, err := db.GetProcess(pid) + if err != nil { + require.Fail(t, "pid not found in db") + } + + require.Equal(t, expected.PIDs.Sid, actual.SessionLeader.PID) +} diff --git a/x-pack/auditbeat/processors/sessionmd/types/process.go b/x-pack/auditbeat/processors/sessionmd/types/process.go index e5a07d09987..232dd348de8 100644 --- a/x-pack/auditbeat/processors/sessionmd/types/process.go +++ b/x-pack/auditbeat/processors/sessionmd/types/process.go @@ -88,6 +88,15 @@ type Process struct { } `json:"capabilities,omitempty"` } `json:"thread,omitempty"` + // Information about the controlling TTY device. + // If set, the process belongs to an interactive session. + TTY struct { + CharDevice struct { + Major uint16 `json:"major,omitempty"` + Minor uint16 `json:"minor,omitempty"` + } `json:"char_device,omitempty"` + } `json:"tty,omitempty"` + // Information about the parent process. Parent struct { // Unique identifier for the process. @@ -353,6 +362,12 @@ func (p *Process) ToMap() mapstr.M { "effective": p.Thread.Capabilities.Effective, }, }, + "tty": mapstr.M{ + "char_device": mapstr.M{ + "major": p.TTY.CharDevice.Major, + "minor": p.TTY.CharDevice.Minor, + }, + }, "parent": mapstr.M{ "entity_id": p.Parent.EntityID, "executable": p.Parent.Executable, From 6befb61d9bc5c3d33e5c5feb40c38b533ca728b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 20:23:33 +0000 Subject: [PATCH 158/313] build(deps): bump github.com/elastic/go-elasticsearch/v8 from 8.13.0 to 8.13.1 (#38933) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 51e374a9f86..498631ae75f 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -13493,11 +13493,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-concert@v0.2 -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-elasticsearch/v8 -Version: v8.13.0 +Version: v8.13.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-elasticsearch/v8@v8.13.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-elasticsearch/v8@v8.13.1/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index 4bdd52f1cd7..8b253b1e81b 100644 --- a/go.mod +++ b/go.mod @@ -206,7 +206,7 @@ require ( github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 - github.com/elastic/go-elasticsearch/v8 v8.13.0 + github.com/elastic/go-elasticsearch/v8 v8.13.1 github.com/elastic/mito v1.10.0 github.com/elastic/tk-btf v0.1.0 github.com/elastic/toutoumomoma v0.0.0-20221026030040-594ef30cb640 diff --git a/go.sum b/go.sum index 9d91060a158..b6600e837a2 100644 --- a/go.sum +++ b/go.sum @@ -691,8 +691,8 @@ github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270/go.mod h1:Msl1pdb github.com/elastic/glog v1.0.1-0.20210831205241-7d8b5c89dfc4/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/elastic/go-concert v0.2.0 h1:GAQrhRVXprnNjtvTP9pWJ1d4ToEA4cU5ci7TwTa20xg= github.com/elastic/go-concert v0.2.0/go.mod h1:HWjpO3IAEJUxOeaJOWXWEp7imKd27foxz9V5vegC/38= -github.com/elastic/go-elasticsearch/v8 v8.13.0 h1:YXPAWpvbYX0mWSNG9tnEpvs4h1stgMy5JUeKZECYYB8= -github.com/elastic/go-elasticsearch/v8 v8.13.0/go.mod h1:DIn7HopJs4oZC/w0WoJR13uMUxtHeq92eI5bqv5CRfI= +github.com/elastic/go-elasticsearch/v8 v8.13.1 h1:du5F8IzUUyCkzxyHdrO9AtopcG95I/qwi2WK8Kf1xlg= +github.com/elastic/go-elasticsearch/v8 v8.13.1/go.mod h1:DIn7HopJs4oZC/w0WoJR13uMUxtHeq92eI5bqv5CRfI= github.com/elastic/go-libaudit/v2 v2.5.0 h1:5OK919QRnGtcjVBz3n/cs5F42im1mPlVTA9TyIn2K54= github.com/elastic/go-libaudit/v2 v2.5.0/go.mod h1:AjlnhinP+kKQuUJoXLVrqxBM8uyhQmkzoV6jjsCFP4Q= github.com/elastic/go-licenser v0.4.1 h1:1xDURsc8pL5zYT9R29425J3vkHdt4RT5TNEMeRN48x4= From 11bc06ca1f0f82510a38e88f978b9aed577a3e5e Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Tue, 16 Apr 2024 08:22:08 +0930 Subject: [PATCH 159/313] x-pack/filebeat/input/o365audit: deprecate input (#38922) --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/docs/inputs/input-o365audit.asciidoc | 4 ++++ x-pack/filebeat/input/o365audit/input.go | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 060d44d907a..dfd2dd0537d 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -294,6 +294,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Filebeat* - Deprecate `syslog` input in favor of `syslog` processor. {issue}37555[37555] {pull}38277[38277] +- Deprecate `o365audit` input in favor of `CEL` input. {issue}37719[37719] {pull}38922[38922] *Heartbeat* diff --git a/x-pack/filebeat/docs/inputs/input-o365audit.asciidoc b/x-pack/filebeat/docs/inputs/input-o365audit.asciidoc index 62ec3880c25..287e526f705 100644 --- a/x-pack/filebeat/docs/inputs/input-o365audit.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-o365audit.asciidoc @@ -5,6 +5,10 @@ [id="{beatname_lc}-input-{type}"] === Office 365 Management Activity API input +deprecated:[8.14.0] + +The o365audit input is deprecated. For collecting Microsoft Office 365 log data, please use the https://docs.elastic.co/integrations/o365[Microsoft 365] integration package. For more complex or user-specific use cases, similar functionality can be achieved using the <> . + ++++ Office 365 Management Activity API ++++ diff --git a/x-pack/filebeat/input/o365audit/input.go b/x-pack/filebeat/input/o365audit/input.go index 3793ce43d6a..b01ba98ac90 100644 --- a/x-pack/filebeat/input/o365audit/input.go +++ b/x-pack/filebeat/input/o365audit/input.go @@ -55,7 +55,7 @@ func Plugin(log *logp.Logger, store cursor.StateStore) v2.Plugin { return v2.Plugin{ Name: pluginName, Stability: feature.Experimental, - Deprecated: false, + Deprecated: true, Info: "O365 logs", Doc: "Collect logs from O365 service", Manager: &cursor.InputManager{ From 61aeef063dbd5bdff19003000bd2a25bb32a9ff5 Mon Sep 17 00:00:00 2001 From: Mirko Bez Date: Tue, 16 Apr 2024 08:16:19 +0200 Subject: [PATCH 160/313] Add release note on PR 38125 in changelog.next.asciidoc (#38923) --- CHANGELOG.next.asciidoc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index dfd2dd0537d..96ed34ffbee 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -48,6 +48,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Heartbeat* *Metricbeat* + - Setting period for counter cache for Prometheus remote_write at least to 60sec {pull}38553[38553] *Osquerybeat* @@ -69,6 +70,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] ==== Bugfixes *Affecting all Beats* + - Support for multiline zookeeper logs {issue}2496[2496] - Add checks to ensure reloading of units if the configuration actually changed. {pull}34346[34346] - Fix namespacing on self-monitoring {pull}32336[32336] @@ -241,9 +243,12 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Libbeat* + - Add support for linux capabilities in add_process_metadata. {pull}38252[38252] + *Heartbeat* + - Added status to monitor run log report. *Metricbeat* @@ -258,6 +263,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add linux IO metrics to system/process {pull}37213[37213] - Add new memory/cgroup metrics to Kibana module {pull}37232[37232] - Add SSL support to mysql module {pull}37997[37997] +- Add SSL support for aerospike module {pull}38126[38126] *Metricbeat* @@ -269,19 +275,11 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Packetbeat* -*Packetbeat* - - *Winlogbeat* *Functionbeat* - -*Winlogbeat* - - - *Elastic Log Driver* *Elastic Logging Plugin* From 0aff66076154bac86e901464d9fe71adbbbdf7f3 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Tue, 16 Apr 2024 11:56:51 +0300 Subject: [PATCH 161/313] Remove X-PACK Filebeat bot trigger (#38943) Signed-off-by: Alexandros Sapranidis --- .buildkite/pull-requests.json | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index d787efb5a69..aeaeeeca164 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -128,22 +128,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/auditbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-filebeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/filebeat$", - "always_trigger_comment_regex": "^/test x-pack/filebeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/filebeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, { "enabled": true, "pipelineSlug": "beats-xpack-heartbeat", From d0399e077f2d7767bb44a754e3f7152aab507a12 Mon Sep 17 00:00:00 2001 From: Andrew Wilkins Date: Tue, 16 Apr 2024 17:45:35 +0800 Subject: [PATCH 162/313] add_cloud_metadata: env var override for providers (#38669) * add_cloud_metadata: env var override for providers Add support for configuring the add_cloud_metadata providers with an environment variable, $BEATS_ADD_CLOUD_METADATA_PROVIDERS. This may be useful when deploying Elastic Agent standalone in a cloud provider managed Kubernetes cluster, where the cloud provider is known at deployment time. * Fix changelog * appease golangci-lint * More appeasement --- CHANGELOG.next.asciidoc | 1 + .../docs/add_cloud_metadata.asciidoc | 3 ++ .../add_cloud_metadata/providers.go | 17 ++++++++++ .../add_cloud_metadata/providers_test.go | 33 +++++++++++++++---- 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 96ed34ffbee..97d2ae10b14 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -173,6 +173,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - elasticsearch output now supports `idle_connection_timeout`. {issue}35616[35615] {pull}36843[36843] - Update to Go 1.21.9. {pulk}38727[38727] - Enable early event encoding in the Elasticsearch output, improving cpu and memory use {pull}38572[38572] +- The environment variable `BEATS_ADD_CLOUD_METADATA_PROVIDERS` overrides configured/default `add_cloud_metadata` providers {pull}38669[38669] *Auditbeat* diff --git a/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc b/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc index f2c8db13730..a80cd7a8be4 100644 --- a/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc +++ b/libbeat/processors/add_cloud_metadata/docs/add_cloud_metadata.asciidoc @@ -50,6 +50,9 @@ cloud or on-premise). The second optional setting is `providers`. The `providers` settings accepts a list of cloud provider names to be used. If `providers` is not configured, then all providers that do not access a remote endpoint are enabled by default. +The list of providers may alternatively be configured with the environment +variable `BEATS_ADD_CLOUD_METADATA_PROVIDERS`, by setting it to a comma-separated +list of provider names. List of names the `providers` setting supports: diff --git a/libbeat/processors/add_cloud_metadata/providers.go b/libbeat/processors/add_cloud_metadata/providers.go index 77c4c7042ad..a9978251cfd 100644 --- a/libbeat/processors/add_cloud_metadata/providers.go +++ b/libbeat/processors/add_cloud_metadata/providers.go @@ -22,6 +22,8 @@ import ( "fmt" "net" "net/http" + "os" + "strings" "time" conf "github.com/elastic/elastic-agent-libs/config" @@ -73,6 +75,21 @@ func selectProviders(configList providerList, providers map[string]provider) map } func providersFilter(configList providerList, allProviders map[string]provider) func(string) bool { + if v, ok := os.LookupEnv("BEATS_ADD_CLOUD_METADATA_PROVIDERS"); ok { + // We allow users to override the config and defaults with + // this environment variable as a workaround in case the + // configured/default providers misbehave. + configList = nil + for _, name := range strings.Split(v, ",") { + configList = append(configList, strings.TrimSpace(name)) + } + if len(configList) == 0 { + // User explicitly disabled all providers. + return func(string) bool { + return false + } + } + } if len(configList) == 0 { return func(name string) bool { ff, ok := allProviders[name] diff --git a/libbeat/processors/add_cloud_metadata/providers_test.go b/libbeat/processors/add_cloud_metadata/providers_test.go index d974ef77695..85336a4c2b3 100644 --- a/libbeat/processors/add_cloud_metadata/providers_test.go +++ b/libbeat/processors/add_cloud_metadata/providers_test.go @@ -18,6 +18,7 @@ package add_cloud_metadata import ( + "os" "sort" "testing" @@ -26,11 +27,13 @@ import ( conf "github.com/elastic/elastic-agent-libs/config" ) +func init() { + os.Unsetenv("BEATS_ADD_CLOUD_METADATA_PROVIDERS") +} + func TestProvidersFilter(t *testing.T) { - var all []string var allLocal []string for name, ff := range cloudMetaProviders { - all = append(all, name) if ff.Local { allLocal = append(allLocal, name) } @@ -38,6 +41,7 @@ func TestProvidersFilter(t *testing.T) { cases := map[string]struct { config map[string]interface{} + env string fail bool expected []string }{ @@ -45,6 +49,16 @@ func TestProvidersFilter(t *testing.T) { config: map[string]interface{}{}, expected: allLocal, }, + "BEATS_ADD_CLOUD_METADATA_PROVIDERS overrides default": { + config: map[string]interface{}{}, + env: "alibaba, digitalocean", + expected: []string{"alibaba", "digitalocean"}, + }, + "none if BEATS_ADD_CLOUD_METADATA_PROVIDERS is explicitly set to an empty list": { + config: map[string]interface{}{}, + env: " ", + expected: nil, + }, "fail to load if unknown name is used": { config: map[string]interface{}{ "providers": []string{"unknown"}, @@ -56,18 +70,25 @@ func TestProvidersFilter(t *testing.T) { "providers": []string{"aws", "gcp", "digitalocean"}, }, }, + "BEATS_ADD_CLOUD_METADATA_PROVIDERS overrides selected": { + config: map[string]interface{}{ + "providers": []string{"aws", "gcp", "digitalocean"}, + }, + env: "alibaba, digitalocean", + expected: []string{"alibaba", "digitalocean"}, + }, } copyStrings := func(in []string) (out []string) { - for _, str := range in { - out = append(out, str) - } - return out + return append(out, in...) } for name, test := range cases { t.Run(name, func(t *testing.T) { rawConfig := conf.MustNewConfigFrom(test.config) + if test.env != "" { + t.Setenv("BEATS_ADD_CLOUD_METADATA_PROVIDERS", test.env) + } config := defaultConfig() err := rawConfig.Unpack(&config) From 851800b430553901763d9aa2dadd6be2b8b9f291 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 16 Apr 2024 12:56:37 +0300 Subject: [PATCH 163/313] Bring back env vars for metric beat pipelines (#38948) setenv.sh still has some useful env vars for specific projects[^1] In the future we want to remove setenv.sh, but in the mean time, we need to be able to detect the environment to present important env vars[^1] for (x-pack)metricbeat and x-pack-winlogbeat/ auditbeat [^1]: https://github.com/elastic/beats/blob/80dab50f0ce3dafe3125a0587db9465dac5d4fa2/.buildkite/scripts/setenv.sh#L46 --- .buildkite/hooks/pre-command | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index f3e74714e94..ebb661a691a 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -58,6 +58,7 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "auditbeat" "filebeat" "beats-libbeat" + "beats-metricbeat" "beats-packetbeat" "beats-winlogbeat" "beats-winlogbeat" @@ -67,6 +68,7 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-xpack-dockerlogbeat" "beats-xpack-auditbeat" "beats-xpack-filebeat" + "beats-xpack-metricbeat" "beats-xpack-heartbeat" "beats-xpack-osquerybeat" "deploy-k8s" From 74ddea27a676f2a499feafce1bcc7e637f58113e Mon Sep 17 00:00:00 2001 From: Siarhei Harbuz <87968844+sharbuz@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:22:46 +0300 Subject: [PATCH 164/313] migrate libbeat to static (#38924) * migrate libbeat to static * remove dynamic pipeline * Update pull-requests.json * add paths and change the pre-command * update pipeline.libbeat.yml * Update .buildkite/libbeat/pipeline.libbeat.yml Co-authored-by: Dimitrios Liappis * change commands and add notifications * fix the pipeline * fix the pipeline * change paths --------- Co-authored-by: Dimitrios Liappis --- .buildkite/hooks/pre-command | 1 - .buildkite/libbeat/pipeline.libbeat.yml | 143 +++++++++++++----- .buildkite/pipeline.yml | 24 +++ .buildkite/pull-requests.json | 16 -- .buildkite/scripts/common.sh | 4 +- .../scripts/generate_libbeat_pipeline.sh | 120 --------------- 6 files changed, 131 insertions(+), 177 deletions(-) delete mode 100755 .buildkite/scripts/generate_libbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index ebb661a691a..158896f8d4f 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -57,7 +57,6 @@ fi ENABLED_BEATS_PIPELINES_SLUGS=( "auditbeat" "filebeat" - "beats-libbeat" "beats-metricbeat" "beats-packetbeat" "beats-winlogbeat" diff --git a/.buildkite/libbeat/pipeline.libbeat.yml b/.buildkite/libbeat/pipeline.libbeat.yml index 46ddeca92a4..040ad9b1d66 100644 --- a/.buildkite/libbeat/pipeline.libbeat.yml +++ b/.buildkite/libbeat/pipeline.libbeat.yml @@ -4,50 +4,117 @@ name: "beats-libbeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" - BEATS_PROJECT_NAME: "libbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - #Deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "Mandatory Tests" + key: "mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: | + set -euo pipefail + cd libbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "libbeat/build/*.xml" + - "libbeat/build/*.json" + notify: + - github_commit_status: + context: "libbeat: Ununtu Unit Tests" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: | + set -euo pipefail + cd libbeat + mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "libbeat/build/*.xml" + - "libbeat/build/*.json" + notify: + - github_commit_status: + context: "libbeat: Go Integration Tests" + + - label: ":python: Python Integration Tests" + key: "mandatory-python-int-test" + command: | + set -euo pipefail + cd libbeat + mage pythonIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "libbeat/build/*.xml" + - "libbeat/build/*.json" + notify: + - github_commit_status: + context: "libbeat: Python Integration Tests" + + - label: ":negative_squared_cross_mark: Cross compile" + key: "mandatory-cross-compile" + command: | + set -euo pipefail + cd libbeat + make crosscompile + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "libbeat/build/*.xml" + - "libbeat/build/*.json" + notify: + - github_commit_status: + context: "libbeat: Cross compile" + + - label: ":testengine: Stress Tests" + key: "mandatory-stress-test" + command: | + set -euo pipefail + cd libbeat + make STRESS_TEST_OPTIONS='-timeout=20m -race -v -parallel 1' GOTEST_OUTPUT_OPTIONS=' | go-junit-report > libbeat-stress-test.xml' stress-tests + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: "libbeat/libbeat-stress-test.xml" + notify: + - github_commit_status: + context: "libbeat: Stress Tests" - - input: "Input Parameters" - key: "input-run-all-stages" - fields: - - select: "Libbeat - run_libbeat" - key: "run_libbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Libbeat - run_libbeat_arm_tests" - key: "run_libbeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" - - - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic Libbeat pipeline" - key: "libbeat-pipeline" - command: ".buildkite/scripts/generate_libbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + - group: "Extended Tests" + key: "extended-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + steps: + - label: ":linux: Ubuntu ARM64 Unit Tests" + key: "extended-arm64-unit-tests" + command: | + set -euo pipefail + cd libbeat + mage build unitTest + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "libbeat/build/*.xml" + - "libbeat/build/*.json" + notify: + - github_commit_status: + context: "libbeat: Ubuntu ARM64 Unit Tests" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 35c6e327523..45724dd0c00 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -205,3 +205,27 @@ steps: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger Libbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only ${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - libbeat/ + - .buildkite/libbeat/pipeline.libbeat.yml + - .buildkite/scripts + - .buildkite/hooks + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - testing/ + config: + trigger: "beats-libbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index aeaeeeca164..61707a9dd6d 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -16,22 +16,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": [ ] }, - { - "enabled": true, - "pipelineSlug": "beats-libbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test libbeat$|^/test filebeat", - "always_trigger_comment_regex": "^/test libbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] - }, { "enabled": true, "pipelineSlug": "beats-packetbeat", diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index d69ae12db45..7287819b8ca 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -12,7 +12,7 @@ ONLY_DOCS=${ONLY_DOCS:-"true"} OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat -[ -z "${run_libbeat+x}" ] && run_libbeat="$(buildkite-agent meta-data get run_libbeat --default "false")" +[ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" [ -z "${run_winlogbeat+x}" ] && run_winlogbeat="$(buildkite-agent meta-data get run_winlogbeat --default "false")" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" @@ -24,7 +24,7 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat -[ -z "${run_libbeat_arm_tests+x}" ] && run_libbeat_arm_tests="$(buildkite-agent meta-data get run_libbeat_arm_tests --default "false")" +[ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" [ -z "${run_xpack_auditbeat_arm_tests+x}" ] && run_xpack_auditbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_arm_tests --default "false")" [ -z "${run_xpack_filebeat_arm_tests+x}" ] && run_xpack_filebeat_arm_tests="$(buildkite-agent meta-data get run_xpack_filebeat_arm_tests --default "false")" diff --git a/.buildkite/scripts/generate_libbeat_pipeline.sh b/.buildkite/scripts/generate_libbeat_pipeline.sh deleted file mode 100755 index 37132e74abf..00000000000 --- a/.buildkite/scripts/generate_libbeat_pipeline.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.libbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ununtu Unit Tests" - - - label: ":go: Go Integration Tests" - key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - - label: ":python: Python Integration Tests" - key: "mandatory-python-int-test" - command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Python Integration Tests" - - - label: ":negative_squared_cross_mark: Cross compile" - key: "mandatory-cross-compile" - command: "make -C $BEATS_PROJECT_NAME crosscompile" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Cross compile" - - - label: ":testengine: Stress Tests" - key: "mandatory-stress-test" - command: "cd $BEATS_PROJECT_NAME && make STRESS_TEST_OPTIONS='-timeout=20m -race -v -parallel 1' GOTEST_OUTPUT_OPTIONS='| go-junit-report > libbeat-stress-test.xml' stress-tests" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: "${BEATS_PROJECT_NAME}/libbeat-stress-test.xml" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Stress Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - - label: ":linux: Ubuntu ARM64 Unit Tests" - key: "extended-arm64-unit-tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM64 Unit Tests" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName From 6e3be8b858c4f7b2f348f088c26aadbd8e8b1ea5 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 16 Apr 2024 14:25:48 +0300 Subject: [PATCH 165/313] Migrate x-pack/osquerybeat to static pipeline (#38939) * This commit refactors the x-pack/osquerybeat pipeline to the pipeline selector approach, as laid out in #38783. Relates: https://github.com/elastic/ingest-dev/issues/3072 * remove pull-requests.json entry * fix typo in pipeline name * fix copy/pasta for aws label from metricbeat --------- Co-authored-by: Alexandros Sapranidis Co-authored-by: Julien Lind --- .buildkite/hooks/pre-command | 1 - .buildkite/pipeline.yml | 29 +++ .buildkite/pull-requests.json | 16 -- .buildkite/scripts/common.sh | 11 +- .../generate_xpack_osquerybeat_pipeline.sh | 204 ---------------- .../x-pack/pipeline.xpack.osquerybeat.yml | 230 +++++++++++++++--- 6 files changed, 221 insertions(+), 270 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 158896f8d4f..d8862d9cc94 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -69,7 +69,6 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-xpack-filebeat" "beats-xpack-metricbeat" "beats-xpack-heartbeat" - "beats-xpack-osquerybeat" "deploy-k8s" ) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 45724dd0c00..eb8c5e5bd17 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -159,6 +159,35 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger x-pack/osquerybeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/osquerybeat/** + - .buildkite/x-pack/pipeline.xpack.metricbeat.yml + - .buildkite/scripts/** + - .buildkite/hooks/** + # x-pack + - libbeat/** + - x-pack/libbeat/** + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/** + - testing/** + config: + trigger: "beats-xpack-osquerybeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Xpack/Winlogbeat" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 61707a9dd6d..bb074620ff6 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -127,22 +127,6 @@ "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/heartbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-osquerybeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/osquerybeat$", - "always_trigger_comment_regex": "^/test x-pack/osquerybeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/osquerybeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] } ] } diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 7287819b8ca..ed529576f10 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -21,7 +21,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" [ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" [ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" -[ -z "${run_xpack_osquerybeat+x}" ] && run_xpack_osquerybeat="$(buildkite-agent meta-data get run_xpack_osquerybeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" @@ -38,7 +37,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_heartbeat_macos_tests+x}" ] && run_xpack_heartbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_heartbeat_macos_tests --default "false")" -[ -z "${run_xpack_osquerybeat_macos_tests+x}" ] && run_xpack_osquerybeat_macos_tests="$(buildkite-agent meta-data get run_xpack_osquerybeat_macos_tests --default "false")" # define if needed run Windows platform-specific tests for the particular beat [ -z "${run_auditbeat_win_tests+x}" ] && run_auditbeat_win_tests="$(buildkite-agent meta-data get run_auditbeat_win_tests --default "false")" @@ -80,10 +78,6 @@ xpack_libbeat_changeset=( "^x-pack/libbeat/.*" ) -xpack_osquerybeat_changeset=( - "^x-pack/osquerybeat/.*" - ) - xpack_packetbeat_changeset=( "^x-pack/packetbeat/.*" ) @@ -148,9 +142,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-metricbeat") BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} ;; - "beats-xpack-osquerybeat") - BEAT_CHANGESET_REFERENCE=${xpack_osquerybeat_changeset[@]} - ;; "beats-xpack-packetbeat") BEAT_CHANGESET_REFERENCE=${xpack_packetbeat_changeset[@]} ;; @@ -404,7 +395,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-osquerybeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat"; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi diff --git a/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh b/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh deleted file mode 100755 index 4f1afc440ef..00000000000 --- a/.buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh +++ /dev/null @@ -1,204 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-osquerybeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":go: Go Integration Tests" - key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index 7cd699b5331..874f8802263 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -3,13 +3,13 @@ name: "beats-xpack-osquerybeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/osquerybeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" @@ -18,46 +18,198 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "x-pack/osquerybeat Mandatory Tests" + key: "x-pack-osquerybeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: | + cd x-pack/osquerybeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Ubuntu Unit Tests" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: | + cd x-pack/osquerybeat + mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Go Integration Tests" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path x-pack/osquerybeat + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path x-pack/osquerybeat + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Windows 2022 Unit Tests" - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Osquerybeat - run_xpack_osquerybeat" - key: "run_xpack_osquerybeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Osquerybeat - run_xpack_osquerybeat_macos_tests" - key: "run_xpack_osquerybeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - if: "build.source == 'ui'" + - group: "x-pack/osquerybeat Extended Windows Tests" + key: "x-pack-osquerybeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path x-pack/osquerybeat + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path x-pack/osquerybeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path x-pack/osquerybeat + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Windows 2019 Unit Tests" + + - group: "x-pack/osquerybeat Extended Tests" + key: "x-pack-osquerybeat-extended-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: + - label: ":mac: MacOS x86_64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/osquerybeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: MacOS x86_64 Unit Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/osquerybeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "x-pack/osquerybeat/build/*.xml" + - "x-pack/osquerybeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: MacOS arm64 Unit Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack osquerybeat pipeline" - key: "xpack-osquerybeat-pipeline" - command: ".buildkite/scripts/generate_xpack_osquerybeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - step: "x-pack-osquerybeat-mandatory-tests" + + - group: "x-pack/osquerybeat Packaging" + key: "x-pack-querybeat-packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd x-pack/osquerybeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "x-pack/osquerybeat: Packaging Linux" + # no packaging arm step since there wasn't one on Jenkins, see https://github.com/elastic/beats/blob/0f118b18d36ce1627af73104c98b109e5d5f91f4/x-pack/osquerybeat/Jenkinsfile.yml#L93 From 63b2a84fe651cd9e01faacbe2392efedd49b62f6 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Tue, 16 Apr 2024 14:26:55 +0300 Subject: [PATCH 166/313] Remove modules from Filebeat (#38966) Signed-off-by: Alexandros Sapranidis --- .buildkite/filebeat/filebeat-pipeline.yml | 26 ----------------------- 1 file changed, 26 deletions(-) diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 1cc2f158538..7eedd9d76fb 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -43,19 +43,6 @@ steps: - label: ":ubuntu: Ubuntu Go Integration Tests" command: | - set -euo pipefail - # defines the MODULE env var based on what's changed in a PR - source .buildkite/scripts/changesets.sh - defineModuleFromTheChangeSet filebeat - echo "~~~ Will run tests with env var MODULE=$$MODULE" - # TODO move this section to base image / pre-command hook - echo "~~~ Installing kind" - asdf plugin add kind - asdf install kind $ASDF_KIND_VERSION - .buildkite/deploy/kubernetes/scripts/kind-setup.sh - - export KUBECONFIG="$$PWD/kubecfg" - echo "~~~ Running tests" cd filebeat mage goIntegTest agents: @@ -71,19 +58,6 @@ steps: - label: ":ubuntu: Ubuntu Python Integration Tests" command: | - set -euo pipefail - # defines the MODULE env var based on what's changed in a PR - source .buildkite/scripts/changesets.sh - defineModuleFromTheChangeSet filebeat - echo "~~~ Will run tests with env var MODULE=$$MODULE" - # TODO move this section to base image / pre-command hook - echo "~~~ Installing kind" - asdf plugin add kind - asdf install kind $ASDF_KIND_VERSION - .buildkite/deploy/kubernetes/scripts/kind-setup.sh - - export KUBECONFIG="$$PWD/kubecfg" - echo "~~~ Running tests" cd filebeat mage pythonIntegTest agents: From 53537672463f9adccc27d0fb8755b952976cabd5 Mon Sep 17 00:00:00 2001 From: Philipp Kahr Date: Tue, 16 Apr 2024 14:00:18 +0200 Subject: [PATCH 167/313] Added support for shards total count in Elasticsearch Module (#38891) * Added support for shards total count * Changelog entry * Update metricbeat/module/elasticsearch/node_stats/data.go Co-authored-by: Milton Hultgren --------- Co-authored-by: Milton Hultgren --- CHANGELOG.next.asciidoc | 1 + metricbeat/docs/fields.asciidoc | 8 ++++++++ metricbeat/module/elasticsearch/fields.go | 2 +- .../module/elasticsearch/node_stats/_meta/data.json | 5 ++++- .../module/elasticsearch/node_stats/_meta/fields.yml | 5 +++++ metricbeat/module/elasticsearch/node_stats/data.go | 3 +++ 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 97d2ae10b14..d4b4666480a 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -254,6 +254,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Metricbeat* +- Add support for shards_stats.total_count in Elasticsearch Monitoring data. {pull}38891[38891] - Add new fields to configure the lease duration, retry and renew when using leader elector with kubernetes autodiscover.{pull}38471[38471] - Add per-thread metrics to system_summary {pull}33614[33614] - Add GCP CloudSQL metadata {pull}33066[33066] diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index a8434858115..40c8928113e 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -32239,6 +32239,14 @@ type: long -- +*`elasticsearch.node.stats.indices.shard_stats.total_count`*:: ++ +-- +type: long + +-- + + *`elasticsearch.node.stats.indices.segments.doc_values.memory.bytes`*:: + -- diff --git a/metricbeat/module/elasticsearch/fields.go b/metricbeat/module/elasticsearch/fields.go index 357fea6c315..7fe1827b3ce 100644 --- a/metricbeat/module/elasticsearch/fields.go +++ b/metricbeat/module/elasticsearch/fields.go @@ -32,5 +32,5 @@ func init() { // AssetElasticsearch returns asset data. // This is the base64 encoded zlib format compressed contents of module/elasticsearch. func AssetElasticsearch() string { - return "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" + return "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" } diff --git a/metricbeat/module/elasticsearch/node_stats/_meta/data.json b/metricbeat/module/elasticsearch/node_stats/_meta/data.json index c6246987ce4..d57493bbc57 100644 --- a/metricbeat/module/elasticsearch/node_stats/_meta/data.json +++ b/metricbeat/module/elasticsearch/node_stats/_meta/data.json @@ -68,6 +68,9 @@ "count": 15325 } }, + "shard_stats": { + "total_count": 1753 + }, "segments": { "count": 24, "doc_values": { @@ -209,4 +212,4 @@ "name": "elasticsearch", "type": "elasticsearch" } -} \ No newline at end of file +} diff --git a/metricbeat/module/elasticsearch/node_stats/_meta/fields.yml b/metricbeat/module/elasticsearch/node_stats/_meta/fields.yml index 1c5b1a1de68..f0d3b8d4b0a 100644 --- a/metricbeat/module/elasticsearch/node_stats/_meta/fields.yml +++ b/metricbeat/module/elasticsearch/node_stats/_meta/fields.yml @@ -105,6 +105,11 @@ type: long - name: query_total.count type: long + - name: shard_stats + type: group + fields: + - name: total_count + type: long - name: segments type: group fields: diff --git a/metricbeat/module/elasticsearch/node_stats/data.go b/metricbeat/module/elasticsearch/node_stats/data.go index c6d430875d0..f1986045660 100644 --- a/metricbeat/module/elasticsearch/node_stats/data.go +++ b/metricbeat/module/elasticsearch/node_stats/data.go @@ -112,6 +112,9 @@ var ( "count": c.Int("query_total"), }, }), + "shard_stats": c.Dict("shard_stats", s.Schema{ + "total_count": c.Int("total_count"), + }, c.DictOptional), "store": c.Dict("store", s.Schema{ "size": s.Object{ "bytes": c.Int("size_in_bytes"), From 2d73978c199653df3e4f7d3529c0eb0b9d25c222 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 16 Apr 2024 16:01:49 +0300 Subject: [PATCH 168/313] [Buildkite] Remove x-pack/auditbeat bot trigger (#38980) This commit removes the x-pack/auditbeat BK PR bot trigger in preparation for the migration to the static pipeline (#38828) --- .buildkite/pull-requests.json | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index bb074620ff6..5b631c82254 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -96,22 +96,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-auditbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/auditbeat$", - "always_trigger_comment_regex": "^/test x-pack/auditbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/auditbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, { "enabled": true, "pipelineSlug": "beats-xpack-heartbeat", From 3f1d32b372a453ed5127401de418a7fc4ed67f77 Mon Sep 17 00:00:00 2001 From: Blake Rouse Date: Tue, 16 Apr 2024 09:06:20 -0400 Subject: [PATCH 169/313] Fix issue with x-pack/metricbeat not using base settings. (#38959) Co-authored-by: Pierre HILBERT --- x-pack/metricbeat/cmd/root.go | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/x-pack/metricbeat/cmd/root.go b/x-pack/metricbeat/cmd/root.go index 76ac0929440..e62ccd33c6c 100644 --- a/x-pack/metricbeat/cmd/root.go +++ b/x-pack/metricbeat/cmd/root.go @@ -5,14 +5,11 @@ package cmd import ( - "flag" "fmt" "github.com/spf13/cobra" - "github.com/spf13/pflag" "github.com/elastic/beats/v7/libbeat/cmd" - "github.com/elastic/beats/v7/libbeat/cmd/instance" "github.com/elastic/beats/v7/libbeat/ecs" "github.com/elastic/beats/v7/libbeat/processors" "github.com/elastic/beats/v7/libbeat/publisher/processing" @@ -47,19 +44,13 @@ var withECSVersion = processing.WithFields(mapstr.M{ }) func init() { - var runFlags = pflag.NewFlagSet(Name, pflag.ExitOnError) - runFlags.AddGoFlag(flag.CommandLine.Lookup("system.hostfs")) globalProcs, err := processors.NewPluginConfigFromList(defaultProcessors()) if err != nil { // these are hard-coded, shouldn't fail panic(fmt.Errorf("error creating global processors: %w", err)) } - settings := instance.Settings{ - RunFlags: runFlags, - Name: Name, - HasDashboards: true, - ElasticLicensed: true, - Processing: processing.MakeDefaultSupport(true, globalProcs, withECSVersion, processing.WithHost, processing.WithAgentMeta()), - } + settings := mbcmd.MetricbeatSettings() + settings.ElasticLicensed = true + settings.Processing = processing.MakeDefaultSupport(true, globalProcs, withECSVersion, processing.WithHost, processing.WithAgentMeta()) RootCmd = cmd.GenRootCmdWithSettings(beater.DefaultCreator(), settings) RootCmd.AddCommand(cmd.GenModulesCmd(Name, "", mbcmd.BuildModulesManager)) RootCmd.TestCmd.AddCommand(test.GenTestModulesCmd(Name, "", beater.DefaultTestModulesCreator())) From 91d6e8ececbe4c00a657cdc151d79270be3558fd Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Tue, 16 Apr 2024 13:18:17 -0400 Subject: [PATCH 170/313] chore: Update snapshot.yml (#38987) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 067f88ab6a5..b6034789e58 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-cf1b0234-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-918a815f-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-cf1b0234-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-918a815f-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-cf1b0234-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-918a815f-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From b84523dca4f317a270f5018a83c79ef2fdb54461 Mon Sep 17 00:00:00 2001 From: Krishna Chaitanya Reddy Burri Date: Wed, 17 Apr 2024 00:12:30 +0530 Subject: [PATCH 171/313] x-pack/filebeat/input/gcppubsub: Prevent input blockage by increasing default `max_outstanding_messages` (#38985) * Due to the presence of internal queue, the input gets blocked until queue.mem.flush.min_events or queue.mem.flush.timeout is reached. To prevent this blockage on GCP Pub/Sub input, default max_outstanding_messages is increased to at least queue.mem.flush.min_events --- CHANGELOG.next.asciidoc | 1 + .../_meta/config/filebeat.inputs.reference.xpack.yml.tmpl | 3 ++- x-pack/filebeat/docs/inputs/input-gcp-pubsub.asciidoc | 5 ++++- x-pack/filebeat/filebeat.reference.yml | 3 ++- x-pack/filebeat/input/gcppubsub/config.go | 4 +++- x-pack/filebeat/input/gcppubsub/pubsub_test.go | 4 ++-- 6 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index d4b4666480a..311b8dd2019 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -131,6 +131,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix panic when more than 32767 pipeline clients are active. {issue}38197[38197] {pull}38556[38556] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] - [threatintel] MISP splitting fix for empty responses {issue}38739[38739] {pull}38917[38917] +- Prevent GCP Pub/Sub input blockage by increasing default value of `max_outstanding_messages` {issue}35029[35029] {pull}38985[38985] *Heartbeat* diff --git a/x-pack/filebeat/_meta/config/filebeat.inputs.reference.xpack.yml.tmpl b/x-pack/filebeat/_meta/config/filebeat.inputs.reference.xpack.yml.tmpl index c5861174636..8215bc3c389 100644 --- a/x-pack/filebeat/_meta/config/filebeat.inputs.reference.xpack.yml.tmpl +++ b/x-pack/filebeat/_meta/config/filebeat.inputs.reference.xpack.yml.tmpl @@ -57,7 +57,8 @@ #subscription.num_goroutines: 1 # Maximum number of unprocessed messages to allow at any time. - #subscription.max_outstanding_messages: 1000 + # This must be at least queue.mem.flush.min_events to prevent input blockage. + #subscription.max_outstanding_messages: 1600 # Path to a JSON file containing the credentials and key used to subscribe. credentials_file: ${path.config}/my-pubsub-subscriber-credentials.json diff --git a/x-pack/filebeat/docs/inputs/input-gcp-pubsub.asciidoc b/x-pack/filebeat/docs/inputs/input-gcp-pubsub.asciidoc index 69e6313cad9..6287b19a5ed 100644 --- a/x-pack/filebeat/docs/inputs/input-gcp-pubsub.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-gcp-pubsub.asciidoc @@ -73,7 +73,10 @@ set `subscription.max_outstanding_messages`. Default is 1. The maximum number of unprocessed messages (unacknowledged but not yet expired). If the value is negative, then there will be no limit on the number of -unprocessed messages. Default is 1000. +unprocessed messages. Due to the presence of internal queue, the input gets +blocked until `queue.mem.flush.min_events` or `queue.mem.flush.timeout` +is reached. To prevent this blockage, this option must be at least +`queue.mem.flush.min_events`. Default is 1600. [float] ==== `credentials_file` diff --git a/x-pack/filebeat/filebeat.reference.yml b/x-pack/filebeat/filebeat.reference.yml index 6aa6707fbdd..0c7cab1acb1 100644 --- a/x-pack/filebeat/filebeat.reference.yml +++ b/x-pack/filebeat/filebeat.reference.yml @@ -2964,7 +2964,8 @@ filebeat.inputs: #subscription.num_goroutines: 1 # Maximum number of unprocessed messages to allow at any time. - #subscription.max_outstanding_messages: 1000 + # This must be at least queue.mem.flush.min_events to prevent input blockage. + #subscription.max_outstanding_messages: 1600 # Path to a JSON file containing the credentials and key used to subscribe. credentials_file: ${path.config}/my-pubsub-subscriber-credentials.json diff --git a/x-pack/filebeat/input/gcppubsub/config.go b/x-pack/filebeat/input/gcppubsub/config.go index dd4214645ea..e83d09f12f3 100644 --- a/x-pack/filebeat/input/gcppubsub/config.go +++ b/x-pack/filebeat/input/gcppubsub/config.go @@ -73,7 +73,9 @@ func defaultConfig() config { Type: "gcp-pubsub", } c.Subscription.NumGoroutines = 1 - c.Subscription.MaxOutstandingMessages = 1000 + // The input gets blocked until flush.min_events or flush.timeout is reached. + // Hence max_outstanding_message has to be at least flush.min_events to avoid this blockage. + c.Subscription.MaxOutstandingMessages = 1600 c.Subscription.Create = true return c } diff --git a/x-pack/filebeat/input/gcppubsub/pubsub_test.go b/x-pack/filebeat/input/gcppubsub/pubsub_test.go index bceff5dc3c0..7981a3ee772 100644 --- a/x-pack/filebeat/input/gcppubsub/pubsub_test.go +++ b/x-pack/filebeat/input/gcppubsub/pubsub_test.go @@ -7,7 +7,7 @@ package gcppubsub import ( "context" "errors" - "io/ioutil" + "io" "net/http" "os" "strconv" @@ -70,7 +70,7 @@ func testSetup(t *testing.T) (*pubsub.Client, context.CancelFunc) { } defer resp.Body.Close() - _, err = ioutil.ReadAll(resp.Body) + _, err = io.ReadAll(resp.Body) if err != nil { t.Fatal("failed to read response", err) } From f8e5c2a74ac81e963e366c1aa8ecc273714b4f20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:59:45 -0400 Subject: [PATCH 172/313] build(deps): bump github.com/elastic/go-sysinfo from 1.13.1 to 1.14.0 (#38970) * build(deps): bump github.com/elastic/go-sysinfo from 1.13.1 to 1.14.0 Bumps [github.com/elastic/go-sysinfo](https://github.com/elastic/go-sysinfo) from 1.13.1 to 1.14.0. - [Release notes](https://github.com/elastic/go-sysinfo/releases) - [Commits](https://github.com/elastic/go-sysinfo/compare/v1.13.1...v1.14.0) --- updated-dependencies: - dependency-name: github.com/elastic/go-sysinfo dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- NOTICE.txt | 4 ++-- go.mod | 2 +- go.sum | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 498631ae75f..8a1f36ebc51 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -15011,11 +15011,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-structform@v -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-sysinfo -Version: v1.13.1 +Version: v1.14.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-sysinfo@v1.13.1/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-sysinfo@v1.14.0/LICENSE.txt: Apache License diff --git a/go.mod b/go.mod index 8b253b1e81b..43430ffbf1f 100644 --- a/go.mod +++ b/go.mod @@ -78,7 +78,7 @@ require ( github.com/elastic/go-perf v0.0.0-20191212140718-9c656876f595 github.com/elastic/go-seccomp-bpf v1.4.0 github.com/elastic/go-structform v0.0.10 - github.com/elastic/go-sysinfo v1.13.1 + github.com/elastic/go-sysinfo v1.14.0 github.com/elastic/go-ucfg v0.8.8 github.com/elastic/gosigar v0.14.3 github.com/fatih/color v1.15.0 diff --git a/go.sum b/go.sum index b6600e837a2..22b28557aaa 100644 --- a/go.sum +++ b/go.sum @@ -711,8 +711,8 @@ github.com/elastic/go-sfdc v0.0.0-20201201191151-3190c381b3e1 h1:KS+lvT/rUS8Z4++ github.com/elastic/go-sfdc v0.0.0-20201201191151-3190c381b3e1/go.mod h1:/FB/tWFyF33vmdjwIwqAKu9QMVFVEjeoWi9V6eUcQEQ= github.com/elastic/go-structform v0.0.10 h1:oy08o/Ih2hHTkNcRY/1HhaYvIp5z6t8si8gnCJPDo1w= github.com/elastic/go-structform v0.0.10/go.mod h1:CZWf9aIRYY5SuKSmOhtXScE5uQiLZNqAFnwKR4OrIM4= -github.com/elastic/go-sysinfo v1.13.1 h1:U5Jlx6c/rLkR72O8wXXXo1abnGlWGJU/wbzNJ2AfQa4= -github.com/elastic/go-sysinfo v1.13.1/go.mod h1:GKqR8bbMK/1ITnez9NIsIfXQr25aLhRJa7AfT8HpBFQ= +github.com/elastic/go-sysinfo v1.14.0 h1:dQRtiqLycoOOla7IflZg3aN213vqJmP0lpVpKQ9lUEY= +github.com/elastic/go-sysinfo v1.14.0/go.mod h1:FKUXnZWhnYI0ueO7jhsGV3uQJ5hiz8OqM5b3oGyaRr8= github.com/elastic/go-ucfg v0.8.8 h1:54KIF/2zFKfl0MzsSOCGOsZ3O2bnjFQJ0nDJcLhviyk= github.com/elastic/go-ucfg v0.8.8/go.mod h1:4E8mPOLSUV9hQ7sgLEJ4bvt0KhMuDJa8joDT2QGAEKA= github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0= @@ -2884,4 +2884,4 @@ sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZa sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= \ No newline at end of file +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From c2a2b6b55944bdd320897ca3ae00f321be1aaeee Mon Sep 17 00:00:00 2001 From: Agi K Thomas <101976829+agithomas@users.noreply.github.com> Date: Wed, 17 Apr 2024 01:53:27 +0530 Subject: [PATCH 173/313] [AWS] AWS Health metricbeat module (#38370) * AWS Health assists in effectively managing ongoing events by offering continuous insight into the performance of your resources and the availability of your AWS services and accounts. By leveraging AWS Health events, users obtain valuable insights into how service and resource modifications may impact their applications hosted on AWS. --------- Co-authored-by: subham sarkar --- CHANGELOG.next.asciidoc | 1 + NOTICE.txt | 212 ++++++++++++ go.mod | 1 + go.sum | 2 + metricbeat/docs/fields.asciidoc | 217 ++++++++++++ metricbeat/docs/modules/aws.asciidoc | 4 + .../docs/modules/aws/awshealth.asciidoc | 30 ++ metricbeat/docs/modules_list.asciidoc | 3 +- x-pack/metricbeat/include/list.go | 1 + x-pack/metricbeat/module/aws/_meta/config.yml | 1 + .../module/aws/awshealth/_meta/data.json | 44 +++ .../module/aws/awshealth/_meta/docs.asciidoc | 21 ++ .../module/aws/awshealth/_meta/fields.yml | 91 +++++ .../module/aws/awshealth/awshealth.go | 312 ++++++++++++++++++ .../awshealth/awshealth_integration_test.go | 39 +++ .../module/aws/awshealth/awshealth_test.go | 247 ++++++++++++++ x-pack/metricbeat/module/aws/fields.go | 2 +- x-pack/metricbeat/modules.d/aws.yml.disabled | 1 + 18 files changed, 1227 insertions(+), 2 deletions(-) create mode 100644 metricbeat/docs/modules/aws/awshealth.asciidoc create mode 100644 x-pack/metricbeat/module/aws/awshealth/_meta/data.json create mode 100644 x-pack/metricbeat/module/aws/awshealth/_meta/docs.asciidoc create mode 100644 x-pack/metricbeat/module/aws/awshealth/_meta/fields.yml create mode 100644 x-pack/metricbeat/module/aws/awshealth/awshealth.go create mode 100644 x-pack/metricbeat/module/aws/awshealth/awshealth_integration_test.go create mode 100644 x-pack/metricbeat/module/aws/awshealth/awshealth_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 311b8dd2019..4eac716b12c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -237,6 +237,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Parse more fields from Elasticsearch slowlogs {pull}38295[38295] - Update CEL mito extensions to v1.10.0 to add keys/values helper. {pull}38504[38504] - Add support for Active Directory an entity analytics provider. {pull}37919[37919] +- Add AWS AWSHealth metricset. {pull}38370[38370] - Add debugging breadcrumb to logs when writing request trace log. {pull}38636[38636] - added benchmark input {pull}37437[37437] - added benchmark input and discard output {pull}37437[37437] diff --git a/NOTICE.txt b/NOTICE.txt index 8a1f36ebc51..88d816cd4a3 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -7374,6 +7374,218 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi limitations under the License. +-------------------------------------------------------------------------------- +Dependency : github.com/aws/aws-sdk-go-v2/service/health +Version: v1.17.0 +Licence type (autodetected): Apache-2.0 +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/health@v1.17.0/LICENSE.txt: + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/iam Version: v1.18.4 diff --git a/go.mod b/go.mod index 43430ffbf1f..8a848c2c409 100644 --- a/go.mod +++ b/go.mod @@ -197,6 +197,7 @@ require ( github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.4 + github.com/aws/aws-sdk-go-v2/service/health v1.17.0 github.com/aws/aws-sdk-go-v2/service/kinesis v1.15.8 github.com/aws/smithy-go v1.13.5 github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5 diff --git a/go.sum b/go.sum index 22b28557aaa..0e904f3eb5e 100644 --- a/go.sum +++ b/go.sum @@ -344,6 +344,8 @@ github.com/aws/aws-sdk-go-v2/service/ec2 v1.36.1 h1:FS8Ja6LuLDVHcX+rmoNpOXqYb52N github.com/aws/aws-sdk-go-v2/service/ec2 v1.36.1/go.mod h1:KOy1O7Fc2+GRgsbn/Kjr15vYDVXMEQALBaPRia3twSY= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4 h1:ZBYifRGfN3dOKzvk0+XJiUKOFzqoJddYqCVsN5quCh4= github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4/go.mod h1:9wKR88sRRyxrUAw5iVSDTfcCz90BLEFcAiyzP4v39uY= +github.com/aws/aws-sdk-go-v2/service/health v1.17.0 h1:DlG9888p6n8Fizx8Vuw1qalBOBtjoDk70UzqyilQ7+s= +github.com/aws/aws-sdk-go-v2/service/health v1.17.0/go.mod h1:z7JTQWRaBIdYYxK8TqDi4MKYYl04uI+jvTJuMEKIsL0= github.com/aws/aws-sdk-go-v2/service/iam v1.18.4 h1:E41guA79mjEbwJdh0zXz1d8+Zt4zxRr+b1ipiVbKXzs= github.com/aws/aws-sdk-go-v2/service/iam v1.18.4/go.mod h1:FpNvAfCZyIQ3qeNJUOw4CShKvdizHblXqAvSk0qmyL4= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 h1:Lh1AShsuIJTwMkoxVCAYPJgNG5H+eN6SmoUn8nOZ5wE= diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 40c8928113e..f5eee747484 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -1541,6 +1541,223 @@ type: keyword Name or alias used to identify linked account. +type: keyword + +-- + +[float] +=== awshealth + +AWS Health metrics + + + +*`aws.awshealth.affected_entities_others`*:: ++ +-- +The number of affected resources related to the event whose status cannot be verified. + + +type: float + +-- + +*`aws.awshealth.affected_entities_pending`*:: ++ +-- +The number of affected resources that may require action. + + +type: float + +-- + +*`aws.awshealth.affected_entities_resolved`*:: ++ +-- +The number of affected resources that do not require any action. + + +type: float + +-- + +*`aws.awshealth.end_time`*:: ++ +-- +The date and time when the event ended. Some events may not have an end date. + + +type: date + +-- + +*`aws.awshealth.event_arn`*:: ++ +-- +The unique identifier for the event. The event ARN has the format arn:aws:health:event-region::event/SERVICE/EVENT_TYPE_CODE/EVENT_TYPE_PLUS_ID. + + +type: keyword + +-- + +*`aws.awshealth.event_scope_code`*:: ++ +-- +This parameter specifies whether the Health event is a public Amazon Web Service event or an account-specific event. Allowed values are PUBLIC, ACCOUNT_SPECIFIC, or NONE. + + +type: keyword + +-- + +*`aws.awshealth.event_type_category`*:: ++ +-- +The event type category code. Possible values are issue, accountNotification, or scheduledChange. + + +type: keyword + +-- + +*`aws.awshealth.event_type_code`*:: ++ +-- +The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION. + + +type: keyword + +-- + +*`aws.awshealth.last_updated_time`*:: ++ +-- +The most recent date and time when the event was updated. + + +type: date + +-- + +*`aws.awshealth.region`*:: ++ +-- +The Amazon Web Services Region name of the event. + + +type: keyword + +-- + +*`aws.awshealth.service`*:: ++ +-- +The Amazon Web Service affected by the event. For example, EC2 or RDS. + + +type: keyword + +-- + +*`aws.awshealth.start_time`*:: ++ +-- +The date and time when the event began. + + +type: date + +-- + +*`aws.awshealth.status_code`*:: ++ +-- +The most recent status of the event. Possible values are open, closed, and upcoming. + + +type: keyword + +-- + +*`aws.awshealth.event_description`*:: ++ +-- +The detailed description of the event. + + +type: text + +-- + +*`aws.awshealth.affected_entities`*:: ++ +-- +Information about an entity affected by a AWS Health event. + + +type: array + +-- + +*`aws.awshealth.affected_entities.aws_account_id`*:: ++ +-- +The Amazon Web Services account number that contains the affected entity. + + +type: keyword + +-- + +*`aws.awshealth.affected_entities.entity_url`*:: ++ +-- +The URL of the affected entity. + + +type: keyword + +-- + +*`aws.awshealth.affected_entities.entity_value`*:: ++ +-- +The ID of the affected entity. + + +type: keyword + +-- + +*`aws.awshealth.affected_entities.last_updated_time`*:: ++ +-- +The most recent time that the entity was updated. + + +type: date + +-- + +*`aws.awshealth.affected_entities.status_code`*:: ++ +-- +The most recent status of the event. Possible values are open, closed, and upcoming. + + +type: keyword + +-- + +*`aws.awshealth.affected_entities.entity_arn`*:: ++ +-- +The unique identifier for the entity. The entity ARN has the format: arn:aws:health:entity-region:aws-account:entity/entity-id. + + type: keyword -- diff --git a/metricbeat/docs/modules/aws.asciidoc b/metricbeat/docs/modules/aws.asciidoc index ee2a73e17dc..47edfa1888f 100644 --- a/metricbeat/docs/modules/aws.asciidoc +++ b/metricbeat/docs/modules/aws.asciidoc @@ -439,6 +439,8 @@ metricbeat.modules: The following metricsets are available: +* <> + * <> * <> @@ -473,6 +475,8 @@ The following metricsets are available: * <> +include::aws/awshealth.asciidoc[] + include::aws/billing.asciidoc[] include::aws/cloudwatch.asciidoc[] diff --git a/metricbeat/docs/modules/aws/awshealth.asciidoc b/metricbeat/docs/modules/aws/awshealth.asciidoc new file mode 100644 index 00000000000..35a8cecde3c --- /dev/null +++ b/metricbeat/docs/modules/aws/awshealth.asciidoc @@ -0,0 +1,30 @@ +//// +This file is generated! See scripts/mage/docs_collector.go +//// +:edit_url: https://github.com/elastic/beats/edit/main/x-pack/metricbeat/module/aws/awshealth/_meta/docs.asciidoc + + +[[metricbeat-metricset-aws-awshealth]] +[role="xpack"] +=== AWS awshealth metricset + +beta[] + +include::../../../../x-pack/metricbeat/module/aws/awshealth/_meta/docs.asciidoc[] + +This is a default metricset. If the host module is unconfigured, this metricset is enabled by default. + +:edit_url: + +==== Fields + +For a description of each field in the metricset, see the +<> section. + +Here is an example document generated by this metricset: + +[source,json] +---- +include::../../../../x-pack/metricbeat/module/aws/awshealth/_meta/data.json[] +---- +:edit_url!: \ No newline at end of file diff --git a/metricbeat/docs/modules_list.asciidoc b/metricbeat/docs/modules_list.asciidoc index 2a77f4d38cd..da0f7525e0f 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -16,7 +16,8 @@ This file is generated! See scripts/mage/docs_collector.go |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | .1+| .1+| |<> |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | -.17+| .17+| |<> beta[] +.18+| .18+| |<> beta[] +|<> beta[] |<> |<> beta[] |<> diff --git a/x-pack/metricbeat/include/list.go b/x-pack/metricbeat/include/list.go index dc482961ebc..492e4e7d4d0 100644 --- a/x-pack/metricbeat/include/list.go +++ b/x-pack/metricbeat/include/list.go @@ -11,6 +11,7 @@ import ( _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/activemq" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/airflow" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws" + _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws/awshealth" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws/billing" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws/cloudwatch" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/awsfargate" diff --git a/x-pack/metricbeat/module/aws/_meta/config.yml b/x-pack/metricbeat/module/aws/_meta/config.yml index 6adf3af2fcd..dacfadb9f31 100644 --- a/x-pack/metricbeat/module/aws/_meta/config.yml +++ b/x-pack/metricbeat/module/aws/_meta/config.yml @@ -46,6 +46,7 @@ period: 24h metricsets: - s3_daily_storage + - awshealth - module: aws period: 1m latency: 5m diff --git a/x-pack/metricbeat/module/aws/awshealth/_meta/data.json b/x-pack/metricbeat/module/aws/awshealth/_meta/data.json new file mode 100644 index 00000000000..ec0ffd5ad67 --- /dev/null +++ b/x-pack/metricbeat/module/aws/awshealth/_meta/data.json @@ -0,0 +1,44 @@ +{ + "@timestamp": "2017-10-12T08:05:34.853Z", + "aws": { + "awshealth": { + "affected_entities": [ + { + "aws_account_id": "12301234013123", + "entity_url": "", + "entity_value": "arn:aws:eks:us-east-2:627286350134:cluster/XXXXXXXXXXXXX", + "last_updated_time": "2024-04-12T12:56:29.7Z", + "status_code": "PENDING", + "entity_arn": "arn:aws:health:us-east-2:627286350134:entity/YYYYYYYYYYYYYYYYYYYY" + } + ], + "affected_entities_others": 0, + "affected_entities_pending": 1, + "affected_entities_resolved": 0, + "end_time": "0001-01-01T00:00:00Z", + "event_arn": "arn:aws:health:us-east-2::event/EKS/AWS_EKS_PLANNED_LIFECYCLE_EVENT/AWS_EKS_PLANNED_LIFECYCLE_EVENT_a7e64e77680080d19971a80f0131ff2239909cdbe7647dd57710b764b988f476", + "event_description": "On May 1, 2024, standard support for Kubernetes version 1.25 in Amazon EKS will end. From May 2, 2024 all Amazon EKS clusters running on 1.25 will enter extended support and will remain in extended support until May 1, 2025.\n\nAfter May 1, 2025, Kubernetes 1.25 will no longer be supported on Amazon EKS, and all Amazon EKS clusters running on 1.25 will be automatically updated to Kubernetes version 1.26.\n\nYou are receiving this message because you currently have 1 or more Amazon EKS clusters running on Kubernetes version 1.25. A list of your impacted clusters can be found in the \"Affected resources\" tab.\n\nExtended support is currently in free preview and is available to all customers. Effective April 1 2024, your Amazon EKS clusters running on a Kubernetes version in extended support will be charged at $0.60 per cluster hour.\n\nIf you do not want to use extended support, we recommend that you update your 1.25 clusters to Kubernetes version 1.26 or newer before May 1, 2024. To learn more about the extended support for Kubernetes versions pricing, see our announcement [1]. For instructions on how to update your cluster(s), see the Amazon EKS service 'Updating an Amazon EKS cluster Kubernetes version' documentation [2].\n\nTo learn more on Kubernetes version support, see the 'Amazon EKS Kubernetes versions' documentation [3].\n\nFor any questions or assistance, please contact AWS Support [4].\n\n\n[1] https://aws.amazon.com/blogs/containers/amazon-eks-extended-support-for-kubernetes-versions-pricing/\n[2] https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html\n[3] https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html\n[4] https://aws.amazon.com/support", + "event_scope_code": "ACCOUNT_SPECIFIC", + "event_type_category": "scheduledChange", + "event_type_code": "AWS_EKS_PLANNED_LIFECYCLE_EVENT", + "last_updated_time": "2024-04-12T13:12:39.273Z", + "region": "us-east-2", + "service": "EKS", + "start_time": "2024-05-01T07:00:00Z", + "status_code": "upcoming" + } + }, + "cloud.provider": "aws", + "event": { + "dataset": "aws.awshealth", + "duration": 115000, + "module": "aws" + }, + "metricset": { + "name": "awshealth", + "period": 10000 + }, + "service": { + "type": "aws-health" + } +} \ No newline at end of file diff --git a/x-pack/metricbeat/module/aws/awshealth/_meta/docs.asciidoc b/x-pack/metricbeat/module/aws/awshealth/_meta/docs.asciidoc new file mode 100644 index 00000000000..a95db3fc2e7 --- /dev/null +++ b/x-pack/metricbeat/module/aws/awshealth/_meta/docs.asciidoc @@ -0,0 +1,21 @@ +AWS Health metrics provide insights into the health of your AWS environment by monitoring various aspects such as open issues, scheduled maintenance events, security advisories, compliance status, notification counts, and service disruptions. These metrics help you proactively identify and address issues impacting your AWS resources, ensuring the reliability, security, and compliance of your infrastructure. + +[float] +=== AWS Permissions +To collect AWS Health metrics using Elastic Metricbeat, you would need specific AWS permissions to access the necessary data. Here's a list of permissions required for an IAM user to collect AWS Health metrics: +---- +health:DescribeAffectedEntities +health:DescribeEventDetails +health:DescribeEvents +---- + +[float] +=== Configuration example +[source,yaml] +---- + +- module: aws + period: 24h + metricsets: + - awshealth +---- diff --git a/x-pack/metricbeat/module/aws/awshealth/_meta/fields.yml b/x-pack/metricbeat/module/aws/awshealth/_meta/fields.yml new file mode 100644 index 00000000000..358e74210e4 --- /dev/null +++ b/x-pack/metricbeat/module/aws/awshealth/_meta/fields.yml @@ -0,0 +1,91 @@ +- name: awshealth + type: group + release: beta + description: > + AWS Health metrics + fields: + - name: affected_entities_others + type: float + description: > + The number of affected resources related to the event whose status cannot be verified. + - name: affected_entities_pending + type: float + description: > + The number of affected resources that may require action. + - name: affected_entities_resolved + type: float + description: > + The number of affected resources that do not require any action. + - name: end_time + type: date + description: > + The date and time when the event ended. Some events may not have an end date. + - name: event_arn + type: keyword + description: > + The unique identifier for the event. The event ARN has the format arn:aws:health:event-region::event/SERVICE/EVENT_TYPE_CODE/EVENT_TYPE_PLUS_ID. + - name: event_scope_code + type: keyword + description: > + This parameter specifies whether the Health event is a public Amazon Web Service event or an account-specific event. Allowed values are PUBLIC, ACCOUNT_SPECIFIC, or NONE. + - name: event_type_category + type: keyword + description: > + The event type category code. Possible values are issue, accountNotification, or scheduledChange. + - name: event_type_code + type: keyword + description: > + The unique identifier for the event type. The format is AWS_SERVICE_DESCRIPTION. + - name: last_updated_time + type: date + description: > + The most recent date and time when the event was updated. + - name: region + type: keyword + description: > + The Amazon Web Services Region name of the event. + - name: service + type: keyword + description: > + The Amazon Web Service affected by the event. For example, EC2 or RDS. + - name: start_time + type: date + description: > + The date and time when the event began. + - name: status_code + type: keyword + description: > + The most recent status of the event. Possible values are open, closed, and upcoming. + - name: event_description + type: text + description: > + The detailed description of the event. + - name: affected_entities + type: array + description: > + Information about an entity affected by a AWS Health event. + + - name: affected_entities.aws_account_id + type: keyword + description: > + The Amazon Web Services account number that contains the affected entity. + - name: affected_entities.entity_url + type: keyword + description: > + The URL of the affected entity. + - name: affected_entities.entity_value + type: keyword + description: > + The ID of the affected entity. + - name: affected_entities.last_updated_time + type: date + description: > + The most recent time that the entity was updated. + - name: affected_entities.status_code + type: keyword + description: > + The most recent status of the event. Possible values are open, closed, and upcoming. + - name: affected_entities.entity_arn + type: keyword + description: > + The unique identifier for the entity. The entity ARN has the format: arn:aws:health:entity-region:aws-account:entity/entity-id. diff --git a/x-pack/metricbeat/module/aws/awshealth/awshealth.go b/x-pack/metricbeat/module/aws/awshealth/awshealth.go new file mode 100644 index 00000000000..a86ac1b5da4 --- /dev/null +++ b/x-pack/metricbeat/module/aws/awshealth/awshealth.go @@ -0,0 +1,312 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package awshealth + +import ( + "context" + "fmt" + "time" + + awssdk "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/health" + "github.com/aws/aws-sdk-go-v2/service/health/types" + + "github.com/elastic/beats/v7/libbeat/common/cfgwarn" + "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" +) + +const metricsetName = "awshealth" + +var ( + locale = "en" +) + +// init registers the MetricSet with the central registry as soon as the program +// starts. The New function will be called later to instantiate an instance of +// the MetricSet for each host is defined in the module's configuration. After the +// MetricSet has been created then Fetch will begin to be called periodically. +func init() { + mb.Registry.MustAddMetricSet(aws.ModuleName, metricsetName, New, + mb.DefaultMetricSet(), + ) +} + +type AffectedEntityDetails struct { + AwsAccountId string `json:"aws_account_id"` + EntityUrl string `json:"entity_url"` + EntityValue string `json:"entity_value"` + LastUpdatedTime time.Time `json:"last_updated_time"` + StatusCode string `json:"status_code"` + EntityArn string `json:"entity_arn"` +} + +type AWSHealthMetric struct { + EventArn string `json:"event_arn"` + EndTime time.Time `json:"end_time"` + EventScopeCode string `json:"event_scope_code"` + EventTypeCategory string `json:"event_type_category"` + EventTypeCode string `json:"event_type_code"` + LastUpdatedTime time.Time `json:"last_updated_time"` + Region string `json:"region"` + Service string `json:"service"` + StartTime time.Time `json:"start_time"` + StatusCode string `json:"status_code"` + AffectedEntitiesPending int32 `json:"affected_entities_pending"` + AffectedEntitiesResolved int32 `json:"affected_entities_resolved"` + AffectedEntitiesOthers int32 `json:"affected_entities_others"` + AffectedEntities []AffectedEntityDetails `json:"affected_entities"` + EventDescription string `json:"event_description"` +} + +// MetricSet holds any configuration or state information. It must implement +// the mb.MetricSet interface. And this is best achieved by embedding +// mb.BaseMetricSet because it implements all of the required mb.MetricSet +// interface methods except for Fetch. +type MetricSet struct { + *aws.MetricSet + logger *logp.Logger + Config Config `config:"aws_health_config"` +} + +// Config holds the configuration specific for aws-awshealth metricset +type Config struct { + EventARNPattern []string `config:"event_arns_pattern"` +} + +// New creates a new instance of the MetricSet. New is responsible for unpacking +// any MetricSet specific configuration options if there are any. +func New(base mb.BaseMetricSet) (mb.MetricSet, error) { + + logger := logp.NewLogger(metricsetName) + metricSet, err := aws.NewMetricSet(base) + if err != nil { + return nil, fmt.Errorf("error creating aws metricset: %w", err) + } + + cfgwarn.Beta("The aws:awshealth metricset is beta.") + + config := struct { + Config Config `config:"aws_health_config"` + }{} + + if err := base.Module().UnpackConfig(&config); err != nil { + return nil, err + } + + return &MetricSet{ + MetricSet: metricSet, + logger: logger, + Config: config.Config, + }, nil +} + +// Fetch method implements the data gathering and data conversion to the right +// format. It publishes the event which is then forwarded to the output. In case +// of an error set the Error field of mb.Event or simply call report.Error(). +func (m *MetricSet) Fetch(ctx context.Context, report mb.ReporterV2) error { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + + var config aws.Config + if err := m.Module().UnpackConfig(&config); err != nil { + return err + } + + awsConfig := m.MetricSet.AwsConfig.Copy() + + health_client := health.NewFromConfig(awsConfig, func(o *health.Options) { + if config.AWSConfig.FIPSEnabled { + o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled + } + }) + events := m.getEventDetails(ctx, health_client) + for _, event := range events { + report.Event(event) + } + + return nil +} + +// getEventDetails retrieves AWS health events and their details using the provided AWS Health client. +// It returns a list of Metricbeat events containing relevant AWS health information. +func (m *MetricSet) getEventDetails( + ctx context.Context, + awsHealth *health.Client, +) []mb.Event { + // Define event filter to fetch only upcoming and open events + eventFilter := types.EventFilter{ + EventStatusCodes: []types.EventStatusCode{ + types.EventStatusCodeUpcoming, + types.EventStatusCodeOpen, + }, + } + var ( + deEvents []types.Event + affPage health.DescribeAffectedEntitiesPaginator + healthDetails []AWSHealthMetric + healthDetailsTemp []AWSHealthMetric + affEntityTemp AffectedEntityDetails + affInputParams health.DescribeAffectedEntitiesInput + ) + + // Create an instance of DescribeEventsInput with desired parameters + deInputParams := health.DescribeEventsInput{ + Filter: &eventFilter, + } + + // Define options for DescribeEventsPaginator + deOptions := &health.DescribeEventAggregatesPaginatorOptions{ + Limit: 10, + StopOnDuplicateToken: true, + } + + // Function option to apply options to the paginator + deOptFn := func(options *health.DescribeEventsPaginatorOptions) { + // Apply the provided options + options.Limit = deOptions.Limit + options.StopOnDuplicateToken = deOptions.StopOnDuplicateToken + } + // Define options for DescribeAffectedEntitiesPaginator + affOptions := &health.DescribeAffectedEntitiesPaginatorOptions{ + Limit: 10, + StopOnDuplicateToken: true, + } + // Function option to apply options to the paginator + affOptFn := func(options *health.DescribeAffectedEntitiesPaginatorOptions) { + // Apply the provided options + options.Limit = affOptions.Limit + options.StopOnDuplicateToken = affOptions.StopOnDuplicateToken + } + // Create DescribeEventsPaginator with AWS Health client and options + dePage := health.NewDescribeEventsPaginator(awsHealth, &deInputParams, deOptFn) + + for dePage.HasMorePages() { + healthDetailsTemp = []AWSHealthMetric{} + + // Perform actions for the current page + currentPage, err := dePage.NextPage(ctx) + if err != nil { + m.Logger().Errorf("[AWS Health] DescribeEvents failed with : %w", err) + break + } + deEvents = currentPage.Events + eventArns := make([]string, len(deEvents)) + // Iterate through events to extract relevant information + for i, de := range deEvents { + healthDetailsTemp = append(healthDetailsTemp, AWSHealthMetric{ + EventArn: awssdk.ToString(de.Arn), + EndTime: awssdk.ToTime(de.EndTime), + EventScopeCode: string(de.EventScopeCode), + EventTypeCategory: string(de.EventTypeCategory), + EventTypeCode: awssdk.ToString(de.EventTypeCode), + LastUpdatedTime: awssdk.ToTime(de.LastUpdatedTime), + Region: awssdk.ToString(de.Region), + Service: awssdk.ToString(de.Service), + StartTime: awssdk.ToTime(de.StartTime), + StatusCode: string(de.StatusCode), + }) + eventArns[i] = awssdk.ToString(de.Arn) + } + // Fetch event details for the current page of events + eventDetails, err := awsHealth.DescribeEventDetails(ctx, &health.DescribeEventDetailsInput{ + EventArns: eventArns, + Locale: &locale, + }) + if err != nil { + m.Logger().Errorf("[AWS Health] DescribeEventDetails failed with : %w", err) + break + } + // Fetch event description for the current page of events + successSet := eventDetails.SuccessfulSet + for x := range successSet { + for y := range healthDetailsTemp { + if awssdk.ToString(successSet[x].Event.Arn) == healthDetailsTemp[y].EventArn { + healthDetailsTemp[y].EventDescription = awssdk.ToString(successSet[x].EventDescription.LatestDescription) + } + } + } + // Fetch affected entities related to event ARNs in the current page + affInputParams = health.DescribeAffectedEntitiesInput{ + Filter: &types.EntityFilter{ + EventArns: eventArns, + }, + } + affPage = *health.NewDescribeAffectedEntitiesPaginator( + awsHealth, + &affInputParams, + affOptFn, + ) + + for affPage.HasMorePages() { + // Fetch current page of affected entities + affCurrentPage, err := affPage.NextPage(ctx) + if err != nil { + m.Logger().Errorf("[AWS Health] DescribeAffectedEntitie failed with : %w", err) + break + } + // Extract relevant details of affected entities and match them with event details + for _, ace := range affCurrentPage.Entities { + affEntityTemp = AffectedEntityDetails{ + AwsAccountId: awssdk.ToString(ace.AwsAccountId), + EntityUrl: awssdk.ToString(ace.EntityUrl), + EntityValue: awssdk.ToString(ace.EntityValue), + LastUpdatedTime: awssdk.ToTime(ace.LastUpdatedTime), + StatusCode: string(ace.StatusCode), + EntityArn: awssdk.ToString(ace.EntityArn), + } + for l, hd := range healthDetailsTemp { + if awssdk.ToString(ace.EventArn) == hd.EventArn { + healthDetailsTemp[l].AffectedEntities = append(healthDetailsTemp[l].AffectedEntities, affEntityTemp) + switch string(ace.StatusCode) { + case "PENDING": + healthDetailsTemp[l].AffectedEntitiesPending++ + case "RESOLVED": + healthDetailsTemp[l].AffectedEntitiesResolved++ + case "": + // Do Nothing + default: + healthDetailsTemp[l].AffectedEntitiesOthers++ + + } + } + } + } + } + // Append current page's health details to the overall list + healthDetails = append(healthDetails, healthDetailsTemp...) + } + // Convert health details to Metricbeat events + var events = make([]mb.Event, 0, len(healthDetails)) + for _, detail := range healthDetails { + event := mb.Event{ + MetricSetFields: mapstr.M{ + "event_arn": detail.EventArn, + "end_time": detail.EndTime, + "event_scope_code": detail.EventScopeCode, + "event_type_category": detail.EventTypeCategory, + "event_type_code": detail.EventTypeCode, + "last_updated_time": detail.LastUpdatedTime, + "region": detail.Region, + "service": detail.Service, + "start_time": detail.StartTime, + "status_code": detail.StatusCode, + "affected_entities": detail.AffectedEntities, + "event_description": detail.EventDescription, + "affected_entities_pending": detail.AffectedEntitiesPending, + "affected_entities_resolved": detail.AffectedEntitiesResolved, + "affected_entities_others": detail.AffectedEntitiesOthers, + }, + RootFields: mapstr.M{ + "cloud.provider": "aws", + }, + Service: "aws-health", + } + events = append(events, event) + } + return events +} diff --git a/x-pack/metricbeat/module/aws/awshealth/awshealth_integration_test.go b/x-pack/metricbeat/module/aws/awshealth/awshealth_integration_test.go new file mode 100644 index 00000000000..3a9f99de077 --- /dev/null +++ b/x-pack/metricbeat/module/aws/awshealth/awshealth_integration_test.go @@ -0,0 +1,39 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build aws && integration && awshealth + +package awshealth + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" + "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws/mtest" +) + +// TODO +// There seems to be problem with Flatten() function of type M map[string]interface{} +// The Flatten function returns aws.awshealth.affected_entities instead of aws.awshealth.affected_entities.aws_account_id, needed for nested type. + +func TestFetch(t *testing.T) { + config := mtest.GetConfigForTest(t, "awshealth", "24h") + metricSet := mbtest.NewReportingMetricSetV2WithContext(t, config) + events, errs := mbtest.ReportingFetchV2WithContext(metricSet) + if len(errs) > 0 { + t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) + } + assert.NotEmpty(t, events) + mbtest.TestMetricsetFieldsDocumented(t, metricSet, events) +} + +func TestData(t *testing.T) { + config := mtest.GetConfigForTest(t, "awshealth", "1h") + config["dataset_id"] = "master_aws_awshealth" + + metricSet := mbtest.NewFetcher(t, config) + metricSet.WriteEvents(t, "/") +} diff --git a/x-pack/metricbeat/module/aws/awshealth/awshealth_test.go b/x-pack/metricbeat/module/aws/awshealth/awshealth_test.go new file mode 100644 index 00000000000..ee285cfccf4 --- /dev/null +++ b/x-pack/metricbeat/module/aws/awshealth/awshealth_test.go @@ -0,0 +1,247 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package awshealth + +import ( + "context" + "testing" + "time" + + "github.com/aws/aws-sdk-go-v2/service/health" + "github.com/stretchr/testify/assert" + + aws "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/health/types" +) + +// HealthClient interface defines the methods used by the MetricSet +type HealthClient interface { + DescribeEvents(ctx context.Context, input *health.DescribeEventsInput, optFns ...func(*health.Options)) (*health.DescribeEventsOutput, error) + DescribeEventDetails(ctx context.Context, input *health.DescribeEventDetailsInput, optFns ...func(*health.Options)) (*health.DescribeEventDetailsOutput, error) + DescribeAffectedEntities(ctx context.Context, input *health.DescribeAffectedEntitiesInput, optFns ...func(*health.Options)) (*health.DescribeAffectedEntitiesOutput, error) +} + +// MockAWSHealthClient implements the HealthClient interface +type MockAWSHealthClient struct{} + +func (m *MockAWSHealthClient) DescribeEvents(ctx context.Context, input *health.DescribeEventsInput, optFns ...func(*health.Options)) (*health.DescribeEventsOutput, error) { + // Mock implementation of DescribeEvents method + output := &health.DescribeEventsOutput{ + Events: []types.Event{ + { + Arn: aws.String("mock-event-arn-1"), + EndTime: aws.Time(time.Now()), + EventScopeCode: MapScopeCode("PUBLIC"), + EventTypeCategory: MapEventTypeCategory("issue"), + EventTypeCode: aws.String("mock-event-type-1"), + LastUpdatedTime: aws.Time(time.Now()), + Region: aws.String("mock-region-1"), + Service: aws.String("mock-service-1"), + StartTime: aws.Time(time.Now()), + StatusCode: MapEventStatusCode("open"), + }, + // add more mock events as needed + }, + } + return output, nil +} + +func (m *MockAWSHealthClient) DescribeEventDetails(ctx context.Context, input *health.DescribeEventDetailsInput, optFns ...func(*health.Options)) (*health.DescribeEventDetailsOutput, error) { + // Mock implementation of DescribeEventDetails method + ev_desc := "mock-event-description" + event_arn := "mock-entity-arn-1" + output := &health.DescribeEventDetailsOutput{ + SuccessfulSet: []types.EventDetails{ + { + Event: &types.Event{ + Arn: &event_arn, + }, + EventDescription: &types.EventDescription{ + LatestDescription: &ev_desc, + }, + }, + // add more successful items as needed + }, + } + return output, nil +} + +func (m *MockAWSHealthClient) DescribeAffectedEntities(ctx context.Context, input *health.DescribeAffectedEntitiesInput, optFns ...func(*health.Options)) (*health.DescribeAffectedEntitiesOutput, error) { + // Mock implementation of DescribeAffectedEntities method + output := &health.DescribeAffectedEntitiesOutput{ + Entities: []types.AffectedEntity{ + { + AwsAccountId: aws.String("mock-account-id-1"), + EntityUrl: aws.String("mock-entity-url-1"), + EntityValue: aws.String("mock-entity-value-1"), + LastUpdatedTime: aws.Time(time.Now()), + StatusCode: MapStatusCode("PENDING"), + EntityArn: aws.String("mock-entity-arn-1"), + }, + // add more affected entities as needed + }, + } + return output, nil +} + +// ConvertToHealthClient converts MockAWSHealthClient to *health.Client +func (m *MockAWSHealthClient) ConvertToHealthClient() *health.Client { + return &health.Client{ + // initialize with required options + } +} + +// MapEventStatusCode maps a string status code to its corresponding EventStatusCode enum value +func MapEventStatusCode(eventStatusCode string) types.EventStatusCode { + switch eventStatusCode { + case "open": + return types.EventStatusCodeOpen + case "closed": + return types.EventStatusCodeClosed + default: + return types.EventStatusCodeUpcoming // Or any default value you prefer + } +} + +// MapEventTypeCategory maps a string status code to its corresponding EventTypeCategory enum value +func MapEventTypeCategory(eventTypeCategory string) types.EventTypeCategory { + switch eventTypeCategory { + case "issue": + return types.EventTypeCategoryIssue + case "accountNotification": + return types.EventTypeCategoryAccountNotification + case "scheduledChange": + return types.EventTypeCategoryScheduledChange + default: + return types.EventTypeCategoryInvestigation // Or any default value you prefer + } +} + +// MapScopeCode maps a string status code to its corresponding EventScopeCode enum value +func MapScopeCode(scopeCode string) types.EventScopeCode { + switch scopeCode { + case "PUBLIC": + return types.EventScopeCodePublic + case "ACCOUNT_SPECIFIC": + return types.EventScopeCodeAccountSpecific + default: + return types.EventScopeCodeNone // Or any default value you prefer + } +} + +// MapStatusCode maps a string status code to its corresponding EntityStatusCode enum value +func MapStatusCode(statusCode string) types.EntityStatusCode { + switch statusCode { + case "PENDING": + return types.EntityStatusCodeImpaired + case "RESOLVED": + return types.EntityStatusCodeUnimpaired + default: + return types.EntityStatusCodeUnknown // Or any default value you prefer + } +} + +func TestGetEventDetails(t *testing.T) { + // Mock context + ctx := context.Background() + + // Create a mock AWSHealth client + awsHealth := &MockAWSHealthClient{} + // Call DescribeEvents + eventsOutput, err := awsHealth.DescribeEvents(ctx, &health.DescribeEventsInput{}) + assert.NoError(t, err) + // Validate eventsOutput.Events is not empty + assert.NotEmpty(t, eventsOutput.Events) + + // Create a slice to store AWSHealthMetrics + var awsHealthMetrics = make([]AWSHealthMetric, 0, len(eventsOutput.Events)) + + for _, event := range eventsOutput.Events { + // Create a new instance of AWSHealthMetric + + awsHealthMetric := AWSHealthMetric{ + EventArn: *event.Arn, + EndTime: *event.EndTime, + EventScopeCode: string(event.EventScopeCode), + EventTypeCategory: string(event.EventTypeCategory), + EventTypeCode: *event.EventTypeCode, + LastUpdatedTime: *event.LastUpdatedTime, + Region: *event.Region, + Service: *event.Service, + StartTime: *event.StartTime, + StatusCode: string(event.StatusCode), + } + // Call DescribeEventDetails for the current event + eventDetailsOutput, err := awsHealth.DescribeEventDetails(ctx, &health.DescribeEventDetailsInput{ + EventArns: []string{*event.Arn}, + }) + assert.NoError(t, err) + + // Validate eventDetailsOutput.SuccessfulSet is not empty + assert.NotEmpty(t, eventDetailsOutput.SuccessfulSet) + + // Update EventDescription in awsHealthMetric + if len(eventDetailsOutput.SuccessfulSet) > 0 { + awsHealthMetric.EventDescription = *eventDetailsOutput.SuccessfulSet[0].EventDescription.LatestDescription + } + + // Call DescribeAffectedEntities for the current event + affectedEntitiesOutput, err := awsHealth.DescribeAffectedEntities(ctx, &health.DescribeAffectedEntitiesInput{ + Filter: &types.EntityFilter{ + EventArns: []string{*event.Arn}, + }, + }) + assert.NoError(t, err) + + // Validate affectedEntitiesOutput.Entities is not empty + assert.NotEmpty(t, affectedEntitiesOutput.Entities) + + // Count affected entities by status + var pending, resolved, others int32 + for j, entity := range affectedEntitiesOutput.Entities { + switch aws.ToString((*string)(&affectedEntitiesOutput.Entities[j].StatusCode)) { + case "PENDING": + pending++ + case "RESOLVED": + resolved++ + default: + others++ + } + awsHealthMetric.AffectedEntities = append(awsHealthMetric.AffectedEntities, + AffectedEntityDetails{ + AwsAccountId: *entity.AwsAccountId, + EntityUrl: *entity.EntityUrl, + EntityValue: *entity.EntityValue, + LastUpdatedTime: *entity.LastUpdatedTime, + StatusCode: string(entity.StatusCode), + EntityArn: *entity.EntityArn, + }, + ) + } + + // Update affected entities counts in awsHealthMetric + awsHealthMetric.AffectedEntitiesPending = pending + awsHealthMetric.AffectedEntitiesResolved = resolved + awsHealthMetric.AffectedEntitiesOthers = others + + // Append awsHealthMetric to the slice + awsHealthMetrics = append(awsHealthMetrics, awsHealthMetric) + } + for _, metric := range awsHealthMetrics { + assert.NotEmpty(t, metric.EventArn) + assert.NotEmpty(t, metric.EventScopeCode) + assert.NotEmpty(t, metric.EventTypeCategory) + assert.NotEmpty(t, metric.EventTypeCode) + assert.NotEmpty(t, metric.Region) + assert.NotEmpty(t, metric.Service) + assert.NotEmpty(t, metric.StatusCode) + assert.NotEmpty(t, metric.LastUpdatedTime) + assert.NotEmpty(t, metric.StartTime) + assert.NotEmpty(t, metric.EndTime) + assert.NotEmpty(t, metric.EventDescription) + assert.NotEmpty(t, metric.AffectedEntities) + assert.GreaterOrEqual(t, (metric.AffectedEntitiesOthers + metric.AffectedEntitiesPending + metric.AffectedEntitiesResolved), int32(0)) + } +} diff --git a/x-pack/metricbeat/module/aws/fields.go b/x-pack/metricbeat/module/aws/fields.go index 0af54980375..ce27511a9e6 100644 --- a/x-pack/metricbeat/module/aws/fields.go +++ b/x-pack/metricbeat/module/aws/fields.go @@ -19,5 +19,5 @@ func init() { // AssetAws returns asset data. // This is the base64 encoded zlib format compressed contents of module/aws. func AssetAws() string { - return "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" + return "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" } diff --git a/x-pack/metricbeat/modules.d/aws.yml.disabled b/x-pack/metricbeat/modules.d/aws.yml.disabled index ddd36a4c326..28b6a2bd60a 100644 --- a/x-pack/metricbeat/modules.d/aws.yml.disabled +++ b/x-pack/metricbeat/modules.d/aws.yml.disabled @@ -49,6 +49,7 @@ period: 24h metricsets: - s3_daily_storage + - awshealth - module: aws period: 1m latency: 5m From aae918507c36e1de05fda238b2ec08579bbf2d6e Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Wed, 17 Apr 2024 09:09:51 +0930 Subject: [PATCH 174/313] x-pack/filebeat/input/{cel,httpjson}: fix oauth2 config validation (#38962) The logic for validation assumed that client.id and client.secret must be present, but this is not the case for password grant, so relax the requirement. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/cel/config_auth.go | 6 +++--- x-pack/filebeat/input/cel/config_test.go | 10 ++++++++++ x-pack/filebeat/input/httpjson/config_auth.go | 6 +++--- x-pack/filebeat/input/httpjson/config_test.go | 10 ++++++++++ 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 4eac716b12c..bd82b306d17 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -132,6 +132,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] - [threatintel] MISP splitting fix for empty responses {issue}38739[38739] {pull}38917[38917] - Prevent GCP Pub/Sub input blockage by increasing default value of `max_outstanding_messages` {issue}35029[35029] {pull}38985[38985] +- Fix config validation for CEL and HTTPJSON inputs when using password grant authentication and `client.id` or `client.secret` are not present. {pull}38962[38962] *Heartbeat* diff --git a/x-pack/filebeat/input/cel/config_auth.go b/x-pack/filebeat/input/cel/config_auth.go index ac187f4ffa1..02998fffaba 100644 --- a/x-pack/filebeat/input/cel/config_auth.go +++ b/x-pack/filebeat/input/cel/config_auth.go @@ -263,12 +263,12 @@ func (o *oAuth2Config) Validate() error { case oAuth2ProviderOkta: return o.validateOktaProvider() case oAuth2ProviderDefault: - if o.TokenURL == "" || o.ClientID == "" || o.ClientSecret == nil { - return errors.New("both token_url and client credentials must be provided") - } if (o.User != "" && o.Password == "") || (o.User == "" && o.Password != "") { return errors.New("both user and password credentials must be provided") } + if o.TokenURL == "" || ((o.ClientID == "" || o.ClientSecret == nil) && (o.User == "" || o.Password == "")) { + return errors.New("both token_url and client credentials must be provided") + } default: return fmt.Errorf("unknown provider %q", o.getProvider()) } diff --git a/x-pack/filebeat/input/cel/config_test.go b/x-pack/filebeat/input/cel/config_test.go index 0a686df099c..dfc1b82a954 100644 --- a/x-pack/filebeat/input/cel/config_test.go +++ b/x-pack/filebeat/input/cel/config_test.go @@ -291,6 +291,16 @@ var oAuth2ValidationTests = []struct { }, }, }, + { + name: "if_password_is_set_credentials_may_be_missing_for_user-password_authentication", + input: map[string]interface{}{ + "auth.oauth2": map[string]interface{}{ + "user": "a_client_user", + "password": "a_client_password", + "token_url": "localhost", + }, + }, + }, { name: "must_fail_with_an_unknown_provider", wantErr: errors.New("unknown provider \"unknown\" accessing 'auth.oauth2'"), diff --git a/x-pack/filebeat/input/httpjson/config_auth.go b/x-pack/filebeat/input/httpjson/config_auth.go index b25bab03dd3..f9d3e16300f 100644 --- a/x-pack/filebeat/input/httpjson/config_auth.go +++ b/x-pack/filebeat/input/httpjson/config_auth.go @@ -227,12 +227,12 @@ func (o *oAuth2Config) Validate() error { case oAuth2ProviderOkta: return o.validateOktaProvider() case oAuth2ProviderDefault: - if o.TokenURL == "" || o.ClientID == "" || o.ClientSecret == nil { - return errors.New("both token_url and client credentials must be provided") - } if (o.User != "" && o.Password == "") || (o.User == "" && o.Password != "") { return errors.New("both user and password credentials must be provided") } + if o.TokenURL == "" || ((o.ClientID == "" || o.ClientSecret == nil) && (o.User == "" || o.Password == "")) { + return errors.New("both token_url and client credentials must be provided") + } default: return fmt.Errorf("unknown provider %q", o.getProvider()) } diff --git a/x-pack/filebeat/input/httpjson/config_test.go b/x-pack/filebeat/input/httpjson/config_test.go index 910510b6e9c..2be99ba68b9 100644 --- a/x-pack/filebeat/input/httpjson/config_test.go +++ b/x-pack/filebeat/input/httpjson/config_test.go @@ -222,6 +222,16 @@ func TestConfigOauth2Validation(t *testing.T) { }, }, }, + { + name: "if password is set credentials may be missing for user-password authentication", + input: map[string]interface{}{ + "auth.oauth2": map[string]interface{}{ + "user": "a_client_user", + "password": "a_client_password", + "token_url": "localhost", + }, + }, + }, { name: "must fail with an unknown provider", expectedErr: "unknown provider \"unknown\" accessing 'auth.oauth2'", From 3f06575996bc91402a5c330c18b0e7451c43785b Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Wed, 17 Apr 2024 03:56:25 +0200 Subject: [PATCH 175/313] [CI] Jenkins package pipeline for agentbeat (#38951) * [CI] Jenkins package pipeline for auditbeat * Jenkins packaging: install msitools before packaging agentbeat * Install msiutils * Removed packaging-arm for agentbeat * Install msitools for agentbeat PR packaging * Install msitools for agentbeat PR packaging * Fix missing close ) * Fix osquerybeat packaging buildkite * Fix ispackaging * Improved changesets for agentbeat * made install-msitools.sh executable * Fix osquerybeat packaging for buildkite * Cleanup * Install tools without sudo * test: moved packaging before build&tests for check * test: packaging pipeline * added sudo * Cleanup * Cleanup --------- Co-authored-by: Blake Rouse Co-authored-by: Craig MacKenzie --- .buildkite/scripts/install-msitools.sh | 5 ++ .../x-pack/pipeline.xpack.osquerybeat.yml | 1 + .ci/packaging.groovy | 4 + Jenkinsfile | 3 + Jenkinsfile.yml | 1 + x-pack/agentbeat/Jenkinsfile.yml | 39 ++++++++ x-pack/osquerybeat/internal/distro/distro.go | 2 +- x-pack/osquerybeat/internal/msiutil/expand.go | 21 +++++ x-pack/osquerybeat/magefile.go | 89 +------------------ x-pack/osquerybeat/scripts/mage/distro.go | 36 +++++--- 10 files changed, 102 insertions(+), 99 deletions(-) create mode 100755 .buildkite/scripts/install-msitools.sh create mode 100644 x-pack/agentbeat/Jenkinsfile.yml create mode 100644 x-pack/osquerybeat/internal/msiutil/expand.go diff --git a/.buildkite/scripts/install-msitools.sh b/.buildkite/scripts/install-msitools.sh new file mode 100755 index 00000000000..682a7da68f9 --- /dev/null +++ b/.buildkite/scripts/install-msitools.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail + +sudo apt-get update -y +DEBIAN_FRONTEND=noninteractive sudo apt-get install --no-install-recommends --yes msitools \ No newline at end of file diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index 874f8802263..8c9137cb423 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -199,6 +199,7 @@ steps: - label: ":linux: Packaging Linux" key: "packaging-linux" command: | + .buildkite/scripts/install-msitools.sh cd x-pack/osquerybeat mage package agents: diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 3fd9b148330..7b44fa6a4ca 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -204,6 +204,7 @@ def generateSteps() { 'metricbeat', 'packetbeat', 'winlogbeat', + 'x-pack/agentbeat' 'x-pack/auditbeat', 'x-pack/dockerlogbeat', 'x-pack/filebeat', @@ -280,6 +281,9 @@ def generateLinuxStep(beat) { withEnv(["HOME=${env.WORKSPACE}", "PLATFORMS=${linuxPlatforms()}", "BEATS_FOLDER=${beat}"]) { withGithubNotify(context: "Packaging Linux ${beat}") { deleteDir() + if (beat.equals('x-pack/agentbeat') || beat.equals('x-pack/osquerybeat')) { + sh(label: 'install msitools', script: '.buildkite/scripts/install-msitools.sh') + } release('snapshot') dir("${BASE_DIR}"){ pushCIDockerImages(arch: 'amd64') diff --git a/Jenkinsfile b/Jenkinsfile index 9733b7b74c9..23a4f3798df 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -608,6 +608,9 @@ def targetWithoutNode(Map args = [:]) { } } withTools(k8s: installK8s, gcp: withGCP, nodejs: withNodejs) { + if (isPackaging && (directory.equals('x-pack/agentbeat') || directory.equals('x-pack/osquerybeat'))) { + sh(label: 'install msitools', script: '.buildkite/scripts/install-msitools.sh') + } // make commands use -C while mage commands require the dir(folder) // let's support this scenario with the location variable. dir(isMage ? directory : '') { diff --git a/Jenkinsfile.yml b/Jenkinsfile.yml index 811b4ae985b..399e0be48d1 100644 --- a/Jenkinsfile.yml +++ b/Jenkinsfile.yml @@ -7,6 +7,7 @@ projects: - "metricbeat" - "packetbeat" - "winlogbeat" + - "x-pack/agentbeat" - "x-pack/auditbeat" - "x-pack/dockerlogbeat" - "x-pack/filebeat" diff --git a/x-pack/agentbeat/Jenkinsfile.yml b/x-pack/agentbeat/Jenkinsfile.yml new file mode 100644 index 00000000000..1686cb776cb --- /dev/null +++ b/x-pack/agentbeat/Jenkinsfile.yml @@ -0,0 +1,39 @@ +when: + branches: true ## for all the branches + changeset: ## when PR contains any of those entries in the changeset + - "^x-pack/agentbeat/.*" + - "^auditbeat/.*" + - "^filebeat/.*" + - "^heartbeat/.*" + - "^metricbeat/.*" + - "^osquerybeat/.*" + - "^packetbeat/.*" + - "@oss" + - "@xpack" + comments: ## when PR comment contains any of those entries + - "/test agentbeat" + labels: ## when PR labels matches any of those entries + - "agentbeat" + parameters: ## when parameter was selected in the UI. + - "agentbeat" + tags: true ## for all the tags +platform: "immutable && ubuntu-22" ## default label for all the stages +stages: + packaging-linux: + packaging-linux: "mage package" + e2e: + enabled: false + stage: packaging + when: + branches: false ## Only on a PR basis for the time being + tags: false ## packaging on branches/tags is already in place with the downstream build. + changeset: ## when PR contains any of those entries in the changeset + - "^x-pack/agentbeat/.*" + - "^auditbeat/.*" + - "^filebeat/.*" + - "^heartbeat/.*" + - "^metricbeat/.*" + - "^osquerybeat/.*" + - "^packetbeat/.*" + - "@oss" ## special token regarding the changeset for the oss + - "@xpack" diff --git a/x-pack/osquerybeat/internal/distro/distro.go b/x-pack/osquerybeat/internal/distro/distro.go index f560cdb23be..87d04d3079a 100644 --- a/x-pack/osquerybeat/internal/distro/distro.go +++ b/x-pack/osquerybeat/internal/distro/distro.go @@ -178,7 +178,7 @@ var specs = map[OSArch]Spec{ {"linux", "arm64"}: {"_1.linux_aarch64.tar.gz", osqueryDistroLinuxARMSHA256, true}, {"darwin", "amd64"}: {osqueryPkgExt, osqueryDistroDarwinSHA256, true}, {"darwin", "arm64"}: {osqueryPkgExt, osqueryDistroDarwinSHA256, true}, - {"windows", "amd64"}: {osqueryMSIExt, osqueryDistroWindowsSHA256, false}, + {"windows", "amd64"}: {osqueryMSIExt, osqueryDistroWindowsSHA256, true}, } func GetSpec(osarch OSArch) (spec Spec, err error) { diff --git a/x-pack/osquerybeat/internal/msiutil/expand.go b/x-pack/osquerybeat/internal/msiutil/expand.go new file mode 100644 index 00000000000..3af5c24441a --- /dev/null +++ b/x-pack/osquerybeat/internal/msiutil/expand.go @@ -0,0 +1,21 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package msiutil + +import ( + "context" + "fmt" + + "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/command" +) + +// Expand runs msiextract to extract the MSI. +func Expand(msiFile, dstDir string) error { + output, err := command.Execute(context.Background(), "msiextract", "--directory", dstDir, msiFile) + if err != nil { + return fmt.Errorf("failed to run msiextract: %w (output: %s)", err, output) + } + return nil +} diff --git a/x-pack/osquerybeat/magefile.go b/x-pack/osquerybeat/magefile.go index 7a21869ffd1..ae5c4c9874b 100644 --- a/x-pack/osquerybeat/magefile.go +++ b/x-pack/osquerybeat/magefile.go @@ -7,21 +7,16 @@ package main import ( - "context" - "errors" "fmt" "os" "path/filepath" "runtime" - "strings" "time" "github.com/magefile/mage/mg" devtools "github.com/elastic/beats/v7/dev-tools/mage" "github.com/elastic/beats/v7/dev-tools/mage/target/build" - "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/command" - "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/distro" osquerybeat "github.com/elastic/beats/v7/x-pack/osquerybeat/scripts/mage" // mage:import @@ -92,92 +87,10 @@ func Clean() error { return devtools.Clean(paths) } -func extractFromMSI() error { - if os.Getenv("GOOS") != "windows" { - return nil - } - - ctx := context.Background() - - execCommand := func(name string, args ...string) error { - ps := strings.Join(append([]string{name}, args...), " ") - fmt.Println(ps) - output, err := command.Execute(ctx, name, args...) - if err != nil { - fmt.Println(ps, ", failed: ", err) - return err - } - fmt.Print(output) - return err - } - - osArchs := osquerybeat.OSArchs(devtools.Platforms) - - for _, osarch := range osArchs { - if osarch.OS != "windows" { - continue - } - spec, err := distro.GetSpec(osarch) - if err != nil { - if errors.Is(err, distro.ErrUnsupportedOS) { - continue - } else { - return err - } - } - dip := distro.GetDataInstallDir(osarch) - msiFile := spec.DistroFilepath(dip) - - // MSI extract - err = execCommand("msiextract", "--directory", dip, msiFile) - if err != nil { - return err - } - - fmt.Println("copy certs.pem from MSI") - err = devtools.Copy(filepath.Join(dip, distro.OsquerydCertsWindowsDistroPath()), distro.OsquerydCertsPath(dip)) - if err != nil { - return err - } - - fmt.Println("copy osqueryd.exe from MSI") - dp := distro.OsquerydPathForOS(osarch.OS, dip) - err = devtools.Copy(filepath.Join(dip, "osquery", "osqueryd", "osqueryd.exe"), dp) - if err != nil { - fmt.Println("copy osqueryd.exe from MSI failed: ", err) - return err - } - // Chmod set to the same as other executables in the final package - if err = os.Chmod(dp, 0755); err != nil { - return err - } - } - - return nil -} - // GolangCrossBuild build the Beat binary inside of the golang-builder. // Do not use directly, use crossBuild instead. func GolangCrossBuild() error { - // This is to fix a defect in the field where msiexec fails to extract the osqueryd.exe - // from bundled osquery.msi, with error code 1603 - // https://docs.microsoft.com/en-us/troubleshoot/windows-server/application-management/msi-installation-error-1603 - // SDH: https://github.com/elastic/sdh-beats/issues/1575 - // Currently we can't reproduce this is issue, but here we can eliminate the need for calling msiexec - // if extract the osqueryd.exe binary during the build. - // - // The cross build is currently called for two binaries osquerybeat and osqquery-extension - // Only extract osqueryd.exe during osquerybeat build on windows - args := devtools.DefaultGolangCrossBuildArgs() - - if !strings.HasPrefix(args.Name, "osquery-extension-") { - // Extract osqueryd.exe from MSI - if err := extractFromMSI(); err != nil { - return err - } - } - - return devtools.GolangCrossBuild(args) + return devtools.GolangCrossBuild(devtools.DefaultGolangCrossBuildArgs()) } // BuildGoDaemon builds the go-daemon binary (use crossBuildGoDaemon). diff --git a/x-pack/osquerybeat/scripts/mage/distro.go b/x-pack/osquerybeat/scripts/mage/distro.go index c5fca545ee6..0263eac829d 100644 --- a/x-pack/osquerybeat/scripts/mage/distro.go +++ b/x-pack/osquerybeat/scripts/mage/distro.go @@ -18,6 +18,7 @@ import ( "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/fetch" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/fileutil" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/hash" + "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/msiutil" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/pkgutil" "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/tar" ) @@ -139,6 +140,7 @@ func checkCacheAndFetch(osarch distro.OSArch, spec distro.Spec) (fetched bool, e const ( suffixTarGz = ".tar.gz" suffixPkg = ".pkg" + suffixMsi = ".msi" ) func extractOrCopy(osarch distro.OSArch, spec distro.Spec) error { @@ -157,7 +159,7 @@ func extractOrCopy(osarch distro.OSArch, spec distro.Spec) error { return devtools.Copy(src, dst) } - if !strings.HasSuffix(src, suffixTarGz) && !strings.HasSuffix(src, suffixPkg) { + if !strings.HasSuffix(src, suffixTarGz) && !strings.HasSuffix(src, suffixPkg) && !strings.HasSuffix(src, suffixMsi) { return fmt.Errorf("unsupported file: %s", src) } tmpdir, err := os.MkdirTemp(distro.DataDir, "") @@ -188,7 +190,6 @@ func extractOrCopy(osarch distro.OSArch, spec distro.Spec) error { return err } } - if strings.HasSuffix(src, suffixPkg) { log.Printf("Extract .pkg from %v", src) @@ -204,6 +205,19 @@ func extractOrCopy(osarch distro.OSArch, spec distro.Spec) error { return err } } + if strings.HasSuffix(src, suffixMsi) { + log.Printf("Extract .msi from %v", src) + + osdp = filepath.Join("osquery", "osqueryd", "osqueryd.exe") + osdcp = distro.OsquerydCertsWindowsDistroPath() + distp = distro.OsquerydPathForOS(osarch.OS, dir) + + // Msiutil expand full + err = msiutil.Expand(src, tmpdir) + if err != nil { + return err + } + } // Copy over certs directory certsDir := filepath.Dir(distro.OsquerydCertsPath(dir)) @@ -217,14 +231,16 @@ func extractOrCopy(osarch distro.OSArch, spec distro.Spec) error { } // Copy over lenses directory - lensesDir := distro.OsquerydLensesDir(dir) - err = os.MkdirAll(lensesDir, 0750) - if err != nil { - return err - } - err = devtools.Copy(filepath.Join(tmpdir, osdlp), lensesDir) - if err != nil { - return err + if osdlp != "" { + lensesDir := distro.OsquerydLensesDir(dir) + err = os.MkdirAll(lensesDir, 0750) + if err != nil { + return err + } + err = devtools.Copy(filepath.Join(tmpdir, osdlp), lensesDir) + if err != nil { + return err + } } // Copy over the osqueryd binary or osquery.app dir From d756f3566362715cbc554cf7a815713c778ef980 Mon Sep 17 00:00:00 2001 From: Craig MacKenzie Date: Tue, 16 Apr 2024 22:08:36 -0400 Subject: [PATCH 176/313] Adding missing comma in packaging.groovy, add agentbeat for arm. (#38998) --- .ci/packaging.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 7b44fa6a4ca..480fce0df70 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -204,7 +204,7 @@ def generateSteps() { 'metricbeat', 'packetbeat', 'winlogbeat', - 'x-pack/agentbeat' + 'x-pack/agentbeat', 'x-pack/auditbeat', 'x-pack/dockerlogbeat', 'x-pack/filebeat', @@ -222,6 +222,7 @@ def generateSteps() { 'heartbeat', 'metricbeat', 'packetbeat', + 'x-pack/agentbeat', 'x-pack/auditbeat', 'x-pack/dockerlogbeat', 'x-pack/filebeat', From 5b24b7d28afb35583233b3849128f8b2f1d18abc Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Wed, 17 Apr 2024 08:16:21 +0200 Subject: [PATCH 177/313] [CI] xpack/auditbeat monorepo migration (#38828) This commit switched x-pack/auditbeat to a static pipeline using the monorepo plugin. Relates: https://github.com/elastic/ingest-dev/issues/3072 --------- Co-authored-by: Dimitrios Liappis --- .buildkite/pipeline.yml | 27 ++ .buildkite/scripts/common.sh | 19 +- .../generate_xpack_auditbeat_pipeline.sh | 246 ---------------- .../x-pack/pipeline.xpack.auditbeat.yml | 278 +++++++++++++++--- 4 files changed, 262 insertions(+), 308 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_auditbeat_pipeline.sh diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index eb8c5e5bd17..7f7c1f107f4 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -258,3 +258,30 @@ steps: env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger x-pack/auditbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/auditbeat/ + - .buildkite/x-pack/pipeline.xpack.auditbeat.yml + - .buildkite/scripts/ + - .buildkite/hooks/ + # x-pack + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/ + - testing/ + - x-pack/libbeat/ + config: + trigger: "beats-xpack-auditbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index ed529576f10..ba076194bb7 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -18,29 +18,23 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" -[ -z "${run_xpack_auditbeat+x}" ] && run_xpack_auditbeat="$(buildkite-agent meta-data get run_xpack_auditbeat --default "false")" [ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" [ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" -[ -z "${run_xpack_auditbeat_arm_tests+x}" ] && run_xpack_auditbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_arm_tests --default "false")" [ -z "${run_xpack_filebeat_arm_tests+x}" ] && run_xpack_filebeat_arm_tests="$(buildkite-agent meta-data get run_xpack_filebeat_arm_tests --default "false")" [ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" # define if needed run MacOS platform-specific tests for the particular beat [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" -[ -z "${run_xpack_auditbeat_macos_tests+x}" ] && run_xpack_auditbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_auditbeat_macos_tests --default "false")" [ -z "${run_xpack_filebeat_macos_tests+x}" ] && run_xpack_filebeat_macos_tests="$(buildkite-agent meta-data get run_xpack_filebeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_heartbeat_macos_tests+x}" ] && run_xpack_heartbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_heartbeat_macos_tests --default "false")" -# define if needed run Windows platform-specific tests for the particular beat -[ -z "${run_auditbeat_win_tests+x}" ] && run_auditbeat_win_tests="$(buildkite-agent meta-data get run_auditbeat_win_tests --default "false")" - # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" [ -z "${run_xpack_filebeat_aws_tests+x}" ] && run_xpack_filebeat_aws_tests="$(buildkite-agent meta-data get run_xpack_filebeat_aws_tests --default "false")" @@ -58,10 +52,6 @@ winlogbeat_changeset=( "^winlogbeat/.*" ) -xpack_auditbeat_changeset=( - "^x-pack/auditbeat/.*" - ) - xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) @@ -127,9 +117,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-winlogbeat") BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} ;; - "beats-xpack-auditbeat") - BEAT_CHANGESET_REFERENCE=${xpack_auditbeat_changeset[@]} - ;; "beats-xpack-filebeat") BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} ;; @@ -384,7 +371,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -395,7 +382,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat"; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat"; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -571,7 +558,7 @@ if are_paths_changed "${packaging_changeset[@]}" ; then export PACKAGING_CHANGES="true" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-auditbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" fi diff --git a/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh deleted file mode 100755 index f1b40d992d7..00000000000 --- a/.buildkite/scripts/generate_xpack_auditbeat_pipeline.sh +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-auditbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - - label: ":linux: Ubuntu Unit (MODULE) Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - env: - MODULE: $MODULE - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit (MODULE) Tests" - - - label: ":rhel: RHEL9 Unit Tests" - key: "mandatory-rhel9-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_RHEL9_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests ; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: Ubuntu ARM Unit Tests" - key: "extended-arm64-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" - -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index c0c92cc3ae1..36fcb9bebd9 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -3,10 +3,11 @@ name: "beats-xpack-auditbeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/auditbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" @@ -18,54 +19,239 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "x-pack/auditbeat Mandatory Tests" + key: "x-pack-auditbeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit (MODULE) Tests" + key: "mandatory-linux-unit-test" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/auditbeat + echo "~~~ Will run tests with env var MODULE=$$MODULE" + cd x-pack/auditbeat + mage update build test + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Ubuntu Unit (MODULE) Tests" + + - label: ":rhel: RHEL9 Unit Tests" + key: "mandatory-rhel9-unit-test" + command: | + cd x-pack/auditbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_RHEL9_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: RHEL Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path x-pack/auditbeat + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Windows 2022 Unit Tests" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path x-pack/auditbeat + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Windows 2016 Unit Tests" + + - group: "x-pack/auditbeat Extended Windows Tests" + key: "x-pack-auditbeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path x-pack/auditbeat + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Windows 2019 Extended Tests" - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Auditbeat - run_xpack_auditbeat" - key: "run_xpack_auditbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Auditbeat - run_xpack_auditbeat_macos_tests" - key: "run_xpack_auditbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Auditbeat - run_xpack_auditbeat_arm_tests" - key: "run_xpack_auditbeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - if: "build.source == 'ui'" + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path x-pack/auditbeat + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Windows 10 Extended Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path x-pack/auditbeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Windows 11 Extended Tests" + + - group: "x-pack/auditbeat MacOS Extended Tests" + key: "x-pack-auditbeat-extended-tests-macos" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: + - label: ":mac: MacOS x86_64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/auditbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: macOS x86_64 Extended Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/auditbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: macOS arm64 Extended Tests" + + - group: "x-pack/auditbeat Linux arm Extended Tests" + key: "x-pack-auditbeat-extended-tests-linux-arm" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + steps: + - label: ":linux: Ubuntu ARM Unit Tests" + command: | + cd x-pack/auditbeat + mage build unitTest + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "x-pack/auditbeat/build/*.xml" + - "x-pack/auditbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Linux arm64 Extended Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack auditbeat pipeline" - key: "xpack-auditbeat-pipeline" - command: ".buildkite/scripts/generate_xpack_auditbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - step: "x-pack-auditbeat-mandatory-tests" + + - group: "x-pack/auditbeat Packaging" + key: "x-pack-auditbeat-packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd x-pack/auditbeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Packaging Linux Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: | + cd x-pack/auditbeat + mage package + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "x-pack/auditbeat: Packaging Linux ARM" From dc826eb5db404d714d1217dd6f8484a5073ff3be Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Wed, 17 Apr 2024 09:29:01 +0200 Subject: [PATCH 178/313] Added an empty ironbank target to agentbeat (#39004) --- x-pack/agentbeat/magefile.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/x-pack/agentbeat/magefile.go b/x-pack/agentbeat/magefile.go index 571f87f7445..874c79bf7a3 100644 --- a/x-pack/agentbeat/magefile.go +++ b/x-pack/agentbeat/magefile.go @@ -134,6 +134,14 @@ func TestPackages() error { return devtools.TestPackages() } +// Package packages the Beat for IronBank distribution. +// +// Use SNAPSHOT=true to build snapshots. +func Ironbank() error { + fmt.Println(">> Ironbank: this module is not subscribed to the IronBank releases.") + return nil +} + // Update is an alias for running fields, dashboards, config. func Update() { callForEachBeat("update") From 5bc43ff59e65d23fc1f712e93b8b08f2f45fbf9e Mon Sep 17 00:00:00 2001 From: ShourieG <105607378+ShourieG@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:13:02 +0530 Subject: [PATCH 179/313] [filebeat][websocket] - Updated Input title to align with existing inputs (#39006) * Updated input title to align with existing inputs --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/docs/inputs/input-websocket.asciidoc | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index bd82b306d17..16af0b1a652 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -133,6 +133,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - [threatintel] MISP splitting fix for empty responses {issue}38739[38739] {pull}38917[38917] - Prevent GCP Pub/Sub input blockage by increasing default value of `max_outstanding_messages` {issue}35029[35029] {pull}38985[38985] - Fix config validation for CEL and HTTPJSON inputs when using password grant authentication and `client.id` or `client.secret` are not present. {pull}38962[38962] +- Updated Websocket input title to align with existing inputs {pull}39006[39006] *Heartbeat* diff --git a/x-pack/filebeat/docs/inputs/input-websocket.asciidoc b/x-pack/filebeat/docs/inputs/input-websocket.asciidoc index 8ee2da2b42a..9e08060a22b 100644 --- a/x-pack/filebeat/docs/inputs/input-websocket.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-websocket.asciidoc @@ -8,6 +8,10 @@ === Websocket Input experimental[] +++++ +Websocket +++++ + The `websocket` input reads messages from a websocket server or api endpoint. This input uses the `CEL engine` and the `mito` library interally to parse and process the messages. Having support for `CEL` allows you to parse and process the messages in a more flexible way. It has many similarities with the `cel` input as to how the `CEL` programs are written but deviates in the way the messages are read and processed. The `websocket` input is a `streaming` input and can only be used to read messages from a websocket server or api endpoint. This input supports: From 1ade6d21421fb5f750bcc70f7d141ae228132eea Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Wed, 17 Apr 2024 12:51:54 +0200 Subject: [PATCH 180/313] Fix msitools installation for packaging pipeline (#39005) * Test packaging * Moved msitool to earlier install phase * Moved msitool to earlier install phase * fix: run within the withBeatsEnv context * Cleanup * Inline the msitool script * Removed arm docker build step from agentbeat --------- Co-authored-by: Victor Martinez --- .ci/packaging.groovy | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.ci/packaging.groovy b/.ci/packaging.groovy index 480fce0df70..ea8f8f7daef 100644 --- a/.ci/packaging.groovy +++ b/.ci/packaging.groovy @@ -222,7 +222,6 @@ def generateSteps() { 'heartbeat', 'metricbeat', 'packetbeat', - 'x-pack/agentbeat', 'x-pack/auditbeat', 'x-pack/dockerlogbeat', 'x-pack/filebeat', @@ -282,9 +281,6 @@ def generateLinuxStep(beat) { withEnv(["HOME=${env.WORKSPACE}", "PLATFORMS=${linuxPlatforms()}", "BEATS_FOLDER=${beat}"]) { withGithubNotify(context: "Packaging Linux ${beat}") { deleteDir() - if (beat.equals('x-pack/agentbeat') || beat.equals('x-pack/osquerybeat')) { - sh(label: 'install msitools', script: '.buildkite/scripts/install-msitools.sh') - } release('snapshot') dir("${BASE_DIR}"){ pushCIDockerImages(arch: 'amd64') @@ -382,6 +378,16 @@ def release(type){ withEnv([ "DEV=${!type.equals('staging')}" ]) { + dir("${BASE_DIR}"){ + if (env.BEATS_FOLDER.equals('x-pack/agentbeat') || env.BEATS_FOLDER.equals('x-pack/osquerybeat')) { + // sh(label: 'install msitools', script: '.buildkite/scripts/install-msitools.sh') + sh '''#!/usr/bin/env bash + set -euo pipefail + sudo apt-get update -y + DEBIAN_FRONTEND=noninteractive sudo apt-get install --no-install-recommends --yes msitools + ''' + } + } dockerLogin(secret: "${DOCKERELASTIC_SECRET}", registry: "${DOCKER_REGISTRY}") dir("${env.BEATS_FOLDER}") { sh(label: "mage package ${type} ${env.BEATS_FOLDER} ${env.PLATFORMS}", script: 'mage package') @@ -451,4 +457,4 @@ def notifyStatus(def args = [:]) { to: "${env.NOTIFY_TO}", subject: subject, body: "Build: (<${env.RUN_DISPLAY_URL}|here>).\n ${body}") -} +} \ No newline at end of file From 4a5d33364442e6d4b3e514d387db03bd8fe76984 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Wed, 17 Apr 2024 17:55:03 +0300 Subject: [PATCH 181/313] Remove BK PR Bot trigger for x-pack/heartbeat (#39014) In preparation for the migration to a static pipeline (#38845), this commit removes the Buildkite PR Bot trigger for the pipeline. --- .buildkite/pull-requests.json | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 5b631c82254..2bb553ab6cd 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -95,22 +95,6 @@ "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-heartbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/heartbeat$", - "always_trigger_comment_regex": "^/test x-pack/heartbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/heartbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] } ] } From ab27a657e4f15976c181cf44c529bba6159f2c64 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Wed, 17 Apr 2024 13:18:53 -0400 Subject: [PATCH 182/313] chore: Update snapshot.yml (#39017) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index b6034789e58..83b403ab2f4 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-918a815f-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-799c1dc0-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-918a815f-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-799c1dc0-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-918a815f-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-799c1dc0-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From eb122efff9711100584adda4fd22e5dc3ba5219d Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Wed, 17 Apr 2024 18:05:53 -0400 Subject: [PATCH 183/313] x-pack/filebeat/input/entityanalytics - Fix log format (#38990) Change logger statements to not use `%w` (which is only for wrapping in fmt.Errorf). Users reported seeing messages like: Failed to obtain some registered user data: %!w(*fmt.wrapError=&{unable to fetch users: unexpected status code: 404 body Fix links to group-get and device-get in docs. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc | 4 ++-- .../entityanalytics/provider/azuread/fetcher/graph/graph.go | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 16af0b1a652..0a6755f2fe4 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -132,6 +132,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] - [threatintel] MISP splitting fix for empty responses {issue}38739[38739] {pull}38917[38917] - Prevent GCP Pub/Sub input blockage by increasing default value of `max_outstanding_messages` {issue}35029[35029] {pull}38985[38985] +- entity-analytics input: Improve structured logging. {pull}38990[38990] - Fix config validation for CEL and HTTPJSON inputs when using password grant authentication and `client.id` or `client.secret` are not present. {pull}38962[38962] - Updated Websocket input title to align with existing inputs {pull}39006[39006] diff --git a/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc b/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc index 676925f7176..e099bf3d247 100644 --- a/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-entity-analytics.asciidoc @@ -498,13 +498,13 @@ This is a list of optional query parameters. The default is `["accountEnabled", [float] ===== `select.groups` -Override the default https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http#optional-query-parameters[group query selections]. +Override the default https://learn.microsoft.com/en-us/graph/api/group-get?view=graph-rest-1.0&tabs=http#optional-query-parameters[group query selections]. This is a list of optional query parameters. The default is `["displayName", "members"]`. [float] ===== `select.devices` -Override the default https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http#optional-query-parameters[device query selections]. +Override the default https://learn.microsoft.com/en-us/graph/api/device-get?view=graph-rest-1.0&tabs=http#optional-query-parameters[device query selections]. This is a list of optional query parameters. The default is `["accountEnabled", "deviceId", "displayName", "operatingSystem", "operatingSystemVersion", "physicalIds", "extensionAttributes", "alternativeSecurityIds"]`. diff --git a/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go b/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go index 6cabdf887e8..01d2d707025 100644 --- a/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go +++ b/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go @@ -206,7 +206,7 @@ func (f *graph) Users(ctx context.Context, deltaLink string) ([]*fetcher.User, s for _, v := range response.Users { user, err := newUserFromAPI(v) if err != nil { - f.logger.Errorf("Unable to parse user from API: %w", err) + f.logger.Errorw("Unable to parse user from API", "error", err) continue } f.logger.Debugf("Got user %q from API", user.ID) @@ -258,7 +258,7 @@ func (f *graph) Devices(ctx context.Context, deltaLink string) ([]*fetcher.Devic for _, v := range response.Devices { device, err := newDeviceFromAPI(v) if err != nil { - f.logger.Errorf("Unable to parse device from API: %w", err) + f.logger.Errorw("Unable to parse device from API", "error", err) continue } f.logger.Debugf("Got device %q from API", device.ID) @@ -290,7 +290,7 @@ func (f *graph) addRegistered(ctx context.Context, device *fetcher.Device, typ s switch { case err == nil, errors.Is(err, nextLinkLoopError{"users"}), errors.Is(err, missingLinkError{"users"}): default: - f.logger.Errorf("Failed to obtain some registered user data: %w", err) + f.logger.Errorw("Failed to obtain some registered user data", "error", err) } for _, u := range users { set.Add(u.ID) From a0dfeea1eeee93ef54217cf3dab6bedac00c7415 Mon Sep 17 00:00:00 2001 From: Michael Wolf Date: Wed, 17 Apr 2024 18:28:49 -0700 Subject: [PATCH 184/313] Update ECS in auditbeat sessionmd processor (#38994) The sessionmd processor requires some of the latest process field from ECS, that are not currently in libbeat. This adds the required ECS field assets to the processor. Without these fields, some field types would be incorrect. For example, `session_leader.start` should be date, but were sent as keyword. --- CHANGELOG.next.asciidoc | 2 +- .../processors/sessionmd/_meta/fields.yml | 1352 +++++++++++++++++ .../auditbeat/processors/sessionmd/fields.go | 23 + 3 files changed, 1376 insertions(+), 1 deletion(-) create mode 100644 x-pack/auditbeat/processors/sessionmd/_meta/fields.yml create mode 100644 x-pack/auditbeat/processors/sessionmd/fields.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 0a6755f2fe4..35804f44388 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -93,7 +93,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix cache processor expiries infinite growth when large a large TTL is used and recurring keys are cached. {pull}38561[38561] *Auditbeat* - +- Set field types to correctly match ECS in sessionmd processor {issue}38955[38955] {pull}38994[38994] *Filebeat* diff --git a/x-pack/auditbeat/processors/sessionmd/_meta/fields.yml b/x-pack/auditbeat/processors/sessionmd/_meta/fields.yml new file mode 100644 index 00000000000..d2878d450e5 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/_meta/fields.yml @@ -0,0 +1,1352 @@ +# process fields from ECS version 8.12.0-dev. + +- key: ecs + title: ECS + description: ECS Fields. + fields: + - name: process + title: Process + group: 2 + description: 'These fields contain information about a process. + + These fields can help you correlate metrics information with a process id/name + from a log message. The `process.pid` often stays in the metric itself and + is copied to the global field for correlation.' + type: group + default_field: true + fields: + - name: entry_leader.args + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + default_field: false + - name: entry_leader.args_count + level: extended + type: long + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + default_field: false + - name: entry_leader.command_line + level: extended + type: wildcard + multi_fields: + - name: text + type: match_only_text + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + default_field: false + - name: entry_leader.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: entry_leader.entry_meta.source.ip + level: core + type: ip + description: IP address of the source (IPv4 or IPv6). + default_field: false + - name: entry_leader.entry_meta.type + level: extended + type: keyword + ignore_above: 1024 + description: 'The entry type for the entry session leader. Values include: init(e.g + systemd), sshd, ssm, kubelet, teleport, terminal, console + + Note: This field is only set on process.session_leader.' + default_field: false + - name: entry_leader.executable + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Absolute path to the process executable. + example: /usr/bin/ssh + default_field: false + - name: entry_leader.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: entry_leader.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: entry_leader.interactive + level: extended + type: boolean + description: 'Whether the process is connected to an interactive shell. + + Process interactivity is inferred from the processes file descriptors. If + the character device for the controlling tty is the same as stdin and stderr + for the process, the process is considered interactive. + + Note: A non-interactive process can belong to an interactive session and is + simply one that does not have open file descriptors reading the controlling + TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A + backgrounded process is still considered interactive if stdin and stderr are + connected to the controlling TTY.' + example: true + default_field: false + - name: entry_leader.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + default_field: false + - name: entry_leader.parent.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: entry_leader.parent.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: entry_leader.parent.session_leader.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: entry_leader.parent.session_leader.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: entry_leader.parent.session_leader.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: entry_leader.parent.session_leader.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: entry_leader.parent.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: entry_leader.parent.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: entry_leader.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: previous.args + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + default_field: false + - name: previous.args_count + level: extended + type: long + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + default_field: false + - name: previous.executable + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Absolute path to the process executable. + example: /usr/bin/ssh + default_field: false + - name: entry_leader.real_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: entry_leader.real_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: entry_leader.real_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: entry_leader.real_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: entry_leader.same_as_process + level: extended + type: boolean + description: 'This boolean is used to identify if a leader process is the same + as the top level process. + + For example, if `process.group_leader.same_as_process = true`, it means the + process event in question is the leader of its process group. Details under + `process.*` like `pid` would be the same under `process.group_leader.*` The + same applies for both `process.session_leader` and `process.entry_leader`. + + This field exists to the benefit of EQL and other rule engines since it''s + not possible to compare equality between two fields in a single document. + e.g `process.entity_id` = `process.group_leader.entity_id` (top level process + is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` + (top level process is the entry session leader) + + Instead these rules could be written like: `process.group_leader.same_as_process: + true` OR `process.entry_leader.same_as_process: true` + + Note: This field is only set on `process.entry_leader`, `process.session_leader` + and `process.group_leader`.' + example: true + default_field: false + - name: entry_leader.saved_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: entry_leader.saved_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: entry_leader.saved_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: entry_leader.saved_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: entry_leader.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: entry_leader.supplemental_groups.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: entry_leader.supplemental_groups.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: entry_leader.tty + level: extended + type: object + description: Information about the controlling TTY device. If set, the process + belongs to an interactive session. + default_field: false + - name: entry_leader.tty.char_device.major + level: extended + type: long + description: The major number identifies the driver associated with the device. + The character device's major and minor numbers can be algorithmically combined + to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". + For more details, please refer to the Linux kernel documentation. + example: 4 + default_field: false + - name: entry_leader.tty.char_device.minor + level: extended + type: long + description: "The minor number is used only by the driver specified by the major\ + \ number; other parts of the kernel don\u2019t use it, and merely pass it\ + \ along to the driver. It is common for a driver to control several devices;\ + \ the minor number provides a way for the driver to differentiate among them." + example: 1 + default_field: false + - name: entry_leader.user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: entry_leader.user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: entry_leader.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: entry_leader.working_directory + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: The working directory of the process. + example: /home/alice + default_field: false + - name: env_vars + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of environment variable bindings. Captured from a snapshot + of the environment at the time of execution. + + May be filtered to protect sensitive information.' + example: '["PATH=/usr/local/bin:/usr/bin", "USER=ubuntu"]' + default_field: false + - name: group_leader.args + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + default_field: false + - name: group_leader.args_count + level: extended + type: long + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + default_field: false + - name: group_leader.command_line + level: extended + type: wildcard + multi_fields: + - name: text + type: match_only_text + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + default_field: false + - name: group_leader.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: group_leader.executable + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Absolute path to the process executable. + example: /usr/bin/ssh + default_field: false + - name: group_leader.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: group_leader.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: group_leader.interactive + level: extended + type: boolean + description: 'Whether the process is connected to an interactive shell. + + Process interactivity is inferred from the processes file descriptors. If + the character device for the controlling tty is the same as stdin and stderr + for the process, the process is considered interactive. + + Note: A non-interactive process can belong to an interactive session and is + simply one that does not have open file descriptors reading the controlling + TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A + backgrounded process is still considered interactive if stdin and stderr are + connected to the controlling TTY.' + example: true + default_field: false + - name: group_leader.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + default_field: false + - name: group_leader.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: group_leader.real_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: group_leader.real_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: group_leader.real_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: group_leader.real_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: group_leader.same_as_process + level: extended + type: boolean + description: 'This boolean is used to identify if a leader process is the same + as the top level process. + + For example, if `process.group_leader.same_as_process = true`, it means the + process event in question is the leader of its process group. Details under + `process.*` like `pid` would be the same under `process.group_leader.*` The + same applies for both `process.session_leader` and `process.entry_leader`. + + This field exists to the benefit of EQL and other rule engines since it''s + not possible to compare equality between two fields in a single document. + e.g `process.entity_id` = `process.group_leader.entity_id` (top level process + is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` + (top level process is the entry session leader) + + Instead these rules could be written like: `process.group_leader.same_as_process: + true` OR `process.entry_leader.same_as_process: true` + + Note: This field is only set on `process.entry_leader`, `process.session_leader` + and `process.group_leader`.' + example: true + default_field: false + - name: group_leader.saved_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: group_leader.saved_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: group_leader.saved_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: group_leader.saved_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: group_leader.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: group_leader.tty + level: extended + type: object + description: Information about the controlling TTY device. If set, the process + belongs to an interactive session. + default_field: false + - name: group_leader.tty.char_device.major + level: extended + type: long + description: The major number identifies the driver associated with the device. + The character device's major and minor numbers can be algorithmically combined + to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". + For more details, please refer to the Linux kernel documentation. + example: 4 + default_field: false + - name: group_leader.tty.char_device.minor + level: extended + type: long + description: "The minor number is used only by the driver specified by the major\ + \ number; other parts of the kernel don\u2019t use it, and merely pass it\ + \ along to the driver. It is common for a driver to control several devices;\ + \ the minor number provides a way for the driver to differentiate among them." + example: 1 + default_field: false + - name: group_leader.user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: group_leader.user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: group_leader.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: group_leader.working_directory + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: The working directory of the process. + example: /home/alice + default_field: false + - name: interactive + level: extended + type: boolean + description: 'Whether the process is connected to an interactive shell. + + Process interactivity is inferred from the processes file descriptors. If + the character device for the controlling tty is the same as stdin and stderr + for the process, the process is considered interactive. + + Note: A non-interactive process can belong to an interactive session and is + simply one that does not have open file descriptors reading the controlling + TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A + backgrounded process is still considered interactive if stdin and stderr are + connected to the controlling TTY.' + example: true + default_field: false + - name: parent.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: parent.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: parent.group_leader.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: parent.group_leader.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: parent.group_leader.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: parent.group_leader.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: parent.interactive + level: extended + type: boolean + description: 'Whether the process is connected to an interactive shell. + + Process interactivity is inferred from the processes file descriptors. If + the character device for the controlling tty is the same as stdin and stderr + for the process, the process is considered interactive. + + Note: A non-interactive process can belong to an interactive session and is + simply one that does not have open file descriptors reading the controlling + TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A + backgrounded process is still considered interactive if stdin and stderr are + connected to the controlling TTY.' + example: true + default_field: false + - name: parent.real_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: parent.real_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: parent.real_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: parent.real_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: parent.saved_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: parent.saved_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: parent.saved_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: parent.saved_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: parent.thread.capabilities.effective + level: extended + type: keyword + ignore_above: 1024 + description: This is the set of capabilities used by the kernel to perform permission + checks for the thread. + example: '["CAP_BPF", "CAP_SYS_ADMIN"]' + pattern: ^(CAP_[A-Z_]+|\d+)$ + default_field: false + - name: parent.thread.capabilities.permitted + level: extended + type: keyword + ignore_above: 1024 + description: This is a limiting superset for the effective capabilities that + the thread may assume. + example: '["CAP_BPF", "CAP_SYS_ADMIN"]' + pattern: ^(CAP_[A-Z_]+|\d+)$ + default_field: false + - name: parent.tty + level: extended + type: object + description: Information about the controlling TTY device. If set, the process + belongs to an interactive session. + default_field: false + - name: parent.tty.char_device.major + level: extended + type: long + description: The major number identifies the driver associated with the device. + The character device's major and minor numbers can be algorithmically combined + to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". + For more details, please refer to the Linux kernel documentation. + example: 4 + default_field: false + - name: parent.tty.char_device.minor + level: extended + type: long + description: "The minor number is used only by the driver specified by the major\ + \ number; other parts of the kernel don\u2019t use it, and merely pass it\ + \ along to the driver. It is common for a driver to control several devices;\ + \ the minor number provides a way for the driver to differentiate among them." + example: 1 + default_field: false + - name: parent.user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: parent.user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: parent.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: real_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: real_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: real_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: real_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: saved_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: saved_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: saved_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: saved_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: session_leader.args + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + default_field: false + - name: session_leader.args_count + level: extended + type: long + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + default_field: false + - name: session_leader.command_line + level: extended + type: wildcard + multi_fields: + - name: text + type: match_only_text + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + default_field: false + - name: session_leader.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: session_leader.executable + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Absolute path to the process executable. + example: /usr/bin/ssh + default_field: false + - name: session_leader.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: session_leader.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: session_leader.interactive + level: extended + type: boolean + description: 'Whether the process is connected to an interactive shell. + + Process interactivity is inferred from the processes file descriptors. If + the character device for the controlling tty is the same as stdin and stderr + for the process, the process is considered interactive. + + Note: A non-interactive process can belong to an interactive session and is + simply one that does not have open file descriptors reading the controlling + TTY on FD 0 (stdin) or writing to the controlling TTY on FD 2 (stderr). A + backgrounded process is still considered interactive if stdin and stderr are + connected to the controlling TTY.' + example: true + default_field: false + - name: session_leader.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + default_field: false + - name: session_leader.parent.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: session_leader.parent.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: session_leader.parent.session_leader.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: session_leader.parent.session_leader.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: session_leader.parent.session_leader.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: session_leader.parent.session_leader.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: session_leader.parent.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: session_leader.parent.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: session_leader.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: session_leader.real_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: session_leader.real_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: session_leader.real_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: session_leader.real_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: session_leader.same_as_process + level: extended + type: boolean + description: 'This boolean is used to identify if a leader process is the same + as the top level process. + + For example, if `process.group_leader.same_as_process = true`, it means the + process event in question is the leader of its process group. Details under + `process.*` like `pid` would be the same under `process.group_leader.*` The + same applies for both `process.session_leader` and `process.entry_leader`. + + This field exists to the benefit of EQL and other rule engines since it''s + not possible to compare equality between two fields in a single document. + e.g `process.entity_id` = `process.group_leader.entity_id` (top level process + is the process group leader) OR `process.entity_id` = `process.entry_leader.entity_id` + (top level process is the entry session leader) + + Instead these rules could be written like: `process.group_leader.same_as_process: + true` OR `process.entry_leader.same_as_process: true` + + Note: This field is only set on `process.entry_leader`, `process.session_leader` + and `process.group_leader`.' + example: true + default_field: false + - name: session_leader.saved_group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: session_leader.saved_group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: session_leader.saved_user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: session_leader.saved_user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: session_leader.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: session_leader.tty + level: extended + type: object + description: Information about the controlling TTY device. If set, the process + belongs to an interactive session. + default_field: false + - name: session_leader.tty.char_device.major + level: extended + type: long + description: The major number identifies the driver associated with the device. + The character device's major and minor numbers can be algorithmically combined + to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". + For more details, please refer to the Linux kernel documentation. + example: 4 + default_field: false + - name: session_leader.tty.char_device.minor + level: extended + type: long + description: "The minor number is used only by the driver specified by the major\ + \ number; other parts of the kernel don\u2019t use it, and merely pass it\ + \ along to the driver. It is common for a driver to control several devices;\ + \ the minor number provides a way for the driver to differentiate among them." + example: 1 + default_field: false + - name: session_leader.user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: session_leader.user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: session_leader.vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false + - name: session_leader.working_directory + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: The working directory of the process. + example: /home/alice + default_field: false + - name: supplemental_groups.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: supplemental_groups.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: tty + level: extended + type: object + description: Information about the controlling TTY device. If set, the process + belongs to an interactive session. + default_field: false + - name: tty.char_device.major + level: extended + type: long + description: The major number identifies the driver associated with the device. + The character device's major and minor numbers can be algorithmically combined + to produce the more familiar terminal identifiers such as "ttyS0" and "pts/0". + For more details, please refer to the Linux kernel documentation. + example: 4 + default_field: false + - name: tty.char_device.minor + level: extended + type: long + description: "The minor number is used only by the driver specified by the major\ + \ number; other parts of the kernel don\u2019t use it, and merely pass it\ + \ along to the driver. It is common for a driver to control several devices;\ + \ the minor number provides a way for the driver to differentiate among them." + example: 1 + default_field: false + - name: tty.columns + level: extended + type: long + description: 'The number of character columns per line. e.g terminal width + + Terminal sizes can change, so this value reflects the maximum value for a + given IO event. i.e. where event.action = ''text_output''' + example: 80 + default_field: false + - name: tty.rows + level: extended + type: long + description: 'The number of character rows in the terminal. e.g terminal height + + Terminal sizes can change, so this value reflects the maximum value for a + given IO event. i.e. where event.action = ''text_output''' + example: 24 + default_field: false + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + example: S-1-5-21-202424912787-2692429404-2351956786-1000 + default_field: false + - name: user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: match_only_text + description: Short name or login of the user. + example: a.einstein + default_field: false + - name: vpid + level: core + type: long + format: string + description: 'Virtual process id. + + The process id within a pid namespace. This is not necessarily unique across + all processes on the host but it is unique within the process namespace that + the process exists within.' + example: 4242 + default_field: false diff --git a/x-pack/auditbeat/processors/sessionmd/fields.go b/x-pack/auditbeat/processors/sessionmd/fields.go new file mode 100644 index 00000000000..b409524b811 --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/fields.go @@ -0,0 +1,23 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +// Code generated by beats/dev-tools/cmd/asset/asset.go - DO NOT EDIT. + +package sessionmd + +import ( + "github.com/elastic/beats/v7/libbeat/asset" +) + +func init() { + if err := asset.SetFields("auditbeat", "fields.yml", asset.BeatFieldsPri, AssetFieldsYml); err != nil { + panic(err) + } +} + +// AssetFieldsYml returns asset data. +// This is the base64 encoded zlib format compressed contents of fields.yml. +func AssetFieldsYml() string { + return "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" +} From 5b5328c43253adb452e4aace527af4a86e439335 Mon Sep 17 00:00:00 2001 From: Blake Rouse Date: Thu, 18 Apr 2024 02:26:46 -0400 Subject: [PATCH 185/313] Add missing command name for filebeat. (#39026) --- x-pack/agentbeat/agentbeat.spec.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/x-pack/agentbeat/agentbeat.spec.yml b/x-pack/agentbeat/agentbeat.spec.yml index 6321a478e6f..045188513b0 100644 --- a/x-pack/agentbeat/agentbeat.spec.yml +++ b/x-pack/agentbeat/agentbeat.spec.yml @@ -58,6 +58,7 @@ inputs: maximum_restarts_per_period: 1 timeouts: restart: 1s + name: "filebeat" args: - "filebeat" - "-E" From 9841e00291d3964fcdbe8d586a828b993f7c342b Mon Sep 17 00:00:00 2001 From: Tetiana Kravchenko Date: Thu, 18 Apr 2024 10:19:06 +0200 Subject: [PATCH 186/313] filebeat/azure/azureeventhub: upgrade azure-event-hubs-go and azure-storage-blob-go dependencies (#38861) * filebeat/azure/azureeventhub: upgrade azure azure-event-hubs-go and azure-storage-blob-go dependencies Signed-off-by: Tetiana Kravchenko * add the changelog record Signed-off-by: Tetiana Kravchenko --------- Signed-off-by: Tetiana Kravchenko --- CHANGELOG.next.asciidoc | 1 + NOTICE.txt | 79 +++++++++++++++++++++-------------------- go.mod | 20 +++++------ go.sum | 51 +++++++++++++------------- 4 files changed, 76 insertions(+), 75 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 35804f44388..779722931aa 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -135,6 +135,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - entity-analytics input: Improve structured logging. {pull}38990[38990] - Fix config validation for CEL and HTTPJSON inputs when using password grant authentication and `client.id` or `client.secret` are not present. {pull}38962[38962] - Updated Websocket input title to align with existing inputs {pull}39006[39006] +- Upgrade azure-event-hubs-go and azure-storage-blob-go dependencies. {pull}38861[38861] *Heartbeat* diff --git a/NOTICE.txt b/NOTICE.txt index 88d816cd4a3..9cfb93da670 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1680,11 +1680,11 @@ Contents of probable licence file $GOMODCACHE/code.cloudfoundry.org/go-loggregat -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-event-hubs-go/v3 -Version: v3.3.15 +Version: v3.6.1 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-event-hubs-go/v3@v3.3.15/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-event-hubs-go/v3@v3.6.1/LICENSE: MIT License @@ -1711,11 +1711,11 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-event-hubs -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-sdk-for-go -Version: v59.0.0+incompatible +Version: v65.0.0+incompatible Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go@v59.0.0+incompatible/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go@v65.0.0+incompatible/LICENSE.txt: The MIT License (MIT) @@ -1984,11 +1984,11 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-storage-blob-go -Version: v0.8.0 +Version: v0.15.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-storage-blob-go@v0.8.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-storage-blob-go@v0.15.0/LICENSE: MIT License @@ -2014,11 +2014,11 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-storage-bl -------------------------------------------------------------------------------- Dependency : github.com/Azure/go-autorest/autorest -Version: v0.11.19 +Version: v0.11.28 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest@v0.11.19/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest@v0.11.28/LICENSE: Apache License @@ -2215,11 +2215,11 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- Dependency : github.com/Azure/go-autorest/autorest/adal -Version: v0.9.14 +Version: v0.9.21 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/adal@v0.9.14/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/adal@v0.9.21/LICENSE: Apache License @@ -29826,12 +29826,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!ada!logics/go-fuzz-hea -------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-amqp-common-go/v3 -Version: v3.2.1 +Dependency : github.com/Azure/azure-amqp-common-go/v4 +Version: v4.2.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-amqp-common-go/v3@v3.2.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-amqp-common-go/v4@v4.2.0/LICENSE: MIT License @@ -29858,11 +29858,11 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-amqp-commo -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-pipeline-go -Version: v0.2.1 +Version: v0.2.3 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-pipeline-go@v0.2.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-pipeline-go@v0.2.3/LICENSE: MIT License @@ -30011,11 +30011,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/Azure/go-amqp -Version: v0.16.0 +Version: v1.0.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-amqp@v0.16.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-amqp@v1.0.0/LICENSE: MIT License @@ -30677,11 +30677,11 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- Dependency : github.com/Azure/go-autorest/autorest/mocks -Version: v0.4.1 +Version: v0.4.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/mocks@v0.4.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/mocks@v0.4.2/LICENSE: Apache License @@ -38996,24 +38996,6 @@ Copyright (c) 2016 Felix Geisendörfer (felix@debuggable.com) THE SOFTWARE. --------------------------------------------------------------------------------- -Dependency : github.com/form3tech-oss/jwt-go -Version: v3.2.5+incompatible -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/form3tech-oss/jwt-go@v3.2.5+incompatible/LICENSE: - -Copyright (c) 2012 Dave Grijalva - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -------------------------------------------------------------------------------- Dependency : github.com/fortytw2/leaktest Version: v1.3.0 @@ -40030,6 +40012,25 @@ Contents of probable licence file $GOMODCACHE/github.com/godror/knownpb@v0.1.0/L limitations under the License. +-------------------------------------------------------------------------------- +Dependency : github.com/golang-jwt/jwt/v4 +Version: v4.5.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/golang-jwt/jwt/v4@v4.5.0/LICENSE: + +Copyright (c) 2012 Dave Grijalva +Copyright (c) 2021 golang-jwt maintainers + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + -------------------------------------------------------------------------------- Dependency : github.com/golang-jwt/jwt/v5 Version: v5.0.0 @@ -47128,11 +47129,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/mattn/go-ieproxy -Version: v0.0.0-20191113090002-7c0f6868bffe +Version: v0.0.1 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/mattn/go-ieproxy@v0.0.0-20191113090002-7c0f6868bffe/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/mattn/go-ieproxy@v0.0.1/LICENSE: MIT License diff --git a/go.mod b/go.mod index 8a848c2c409..ec251e13402 100644 --- a/go.mod +++ b/go.mod @@ -9,11 +9,11 @@ require ( code.cloudfoundry.org/go-diodes v0.0.0-20190809170250-f77fb823c7ee // indirect code.cloudfoundry.org/go-loggregator v7.4.0+incompatible code.cloudfoundry.org/rfc5424 v0.0.0-20180905210152-236a6d29298a // indirect - github.com/Azure/azure-event-hubs-go/v3 v3.3.15 - github.com/Azure/azure-sdk-for-go v59.0.0+incompatible - github.com/Azure/azure-storage-blob-go v0.8.0 + github.com/Azure/azure-event-hubs-go/v3 v3.6.1 + github.com/Azure/azure-sdk-for-go v65.0.0+incompatible + github.com/Azure/azure-storage-blob-go v0.15.0 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/Azure/go-autorest/autorest v0.11.19 + github.com/Azure/go-autorest/autorest v0.11.28 github.com/Azure/go-autorest/autorest/date v0.3.0 github.com/Masterminds/semver v1.5.0 // indirect github.com/Microsoft/go-winio v0.6.1 @@ -118,7 +118,7 @@ require ( github.com/lib/pq v1.10.3 github.com/magefile/mage v1.15.0 github.com/mattn/go-colorable v0.1.13 - github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe // indirect + github.com/mattn/go-ieproxy v0.0.1 // indirect github.com/miekg/dns v1.1.42 github.com/mitchellh/gox v1.0.1 github.com/mitchellh/hashstructure v1.1.0 @@ -192,7 +192,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.8.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 - github.com/Azure/go-autorest/autorest/adal v0.9.14 + github.com/Azure/go-autorest/autorest/adal v0.9.21 github.com/apache/arrow/go/v14 v14.0.2 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 @@ -245,10 +245,10 @@ require ( cloud.google.com/go/longrunning v0.5.1 // indirect code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect - github.com/Azure/azure-amqp-common-go/v3 v3.2.1 // indirect - github.com/Azure/azure-pipeline-go v0.2.1 // indirect + github.com/Azure/azure-amqp-common-go/v4 v4.2.0 // indirect + github.com/Azure/azure-pipeline-go v0.2.3 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect - github.com/Azure/go-amqp v0.16.0 // indirect + github.com/Azure/go-amqp v1.0.0 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect @@ -291,7 +291,6 @@ require ( github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/fearful-symmetry/gomsr v0.0.1 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect - github.com/form3tech-oss/jwt-go v3.2.5+incompatible // indirect github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.3.0 // indirect @@ -301,6 +300,7 @@ require ( github.com/gobuffalo/here v0.6.7 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/godror/knownpb v0.1.0 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect diff --git a/go.sum b/go.sum index 0e904f3eb5e..519bc82cd0b 100644 --- a/go.sum +++ b/go.sum @@ -83,20 +83,17 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/azure-amqp-common-go/v3 v3.2.1 h1:uQyDk81yn5hTP1pW4Za+zHzy97/f4vDz9o1d/exI4j4= -github.com/Azure/azure-amqp-common-go/v3 v3.2.1/go.mod h1:O6X1iYHP7s2x7NjUKsXVhkwWrQhxrd+d8/3rRadj4CI= -github.com/Azure/azure-event-hubs-go/v3 v3.3.15 h1:2yAik9gS5Qjs4Z6EM1B6d0tfZJ506B/0oA08JlRQxb8= -github.com/Azure/azure-event-hubs-go/v3 v3.3.15/go.mod h1:xgDvUi1+8/bb11WTEaU7VwZREYufzKzjWE4YiPZixb0= -github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= -github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= -github.com/Azure/azure-pipeline-go v0.2.1 h1:OLBdZJ3yvOn2MezlWvbrBMTEUQC72zAftRZOMdj5HYo= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-amqp-common-go/v4 v4.2.0 h1:q/jLx1KJ8xeI8XGfkOWMN9XrXzAfVTkyvCxPvHCjd2I= +github.com/Azure/azure-amqp-common-go/v4 v4.2.0/go.mod h1:GD3m/WPPma+621UaU6KNjKEo5Hl09z86viKwQjTpV0Q= +github.com/Azure/azure-event-hubs-go/v3 v3.6.1 h1:vSiMmn3tOwgiLyfnmhT5K6Of/3QWRLaaNZPI0hFvZyU= +github.com/Azure/azure-event-hubs-go/v3 v3.6.1/go.mod h1:i2NByb9Pr2na7y8wi/XefEVKkuA2CDUjCNoWQJtTsGo= +github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= +github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v41.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v51.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v55.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v59.0.0+incompatible h1:I1ULJqny1qQhUBFy11yDXHhW3pLvbhwV0PTn7mjp9V0= -github.com/Azure/azure-sdk-for-go v59.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= +github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0= @@ -129,11 +126,10 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1. github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= -github.com/Azure/azure-storage-blob-go v0.6.0/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= -github.com/Azure/azure-storage-blob-go v0.8.0 h1:53qhf0Oxa0nOjgbDeeYPUeyiNmafAFEY95rZLK0Tj6o= -github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= -github.com/Azure/go-amqp v0.16.0 h1:6mhxUxaKLjMtHlGqzeih/LKqjUPLZxbM6zwfz5/C4NQ= -github.com/Azure/go-amqp v0.16.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= +github.com/Azure/azure-storage-blob-go v0.15.0 h1:rXtgp8tN1p29GvpGgfJetavIG0V7OgcSXPpwp3tx6qk= +github.com/Azure/azure-storage-blob-go v0.15.0/go.mod h1:vbjsVbX0dlxnRc4FFMPsS9BsJWPcne7GB7onqlPvz58= +github.com/Azure/go-amqp v1.0.0 h1:QfCugi1M+4F2JDTRgVnRw7PYXLXZ9hmqk3+9+oJh3OA= +github.com/Azure/go-amqp v1.0.0/go.mod h1:+bg0x3ce5+Q3ahCEXnCsGG3ETpDQe3MEVnOuT2ywPwc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= @@ -147,8 +143,9 @@ github.com/Azure/go-autorest/autorest v0.10.1/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUd github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.19 h1:7/IqD2fEYVha1EPeaiytVKhzmPV223pfkRIQUGOK2IE= github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM= +github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= @@ -157,8 +154,10 @@ github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMl github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.14 h1:G8hexQdV5D4khOXrWG2YuLCFKhWYmWD8bHYaXN5ophk= github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk= +github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 h1:iM6UAvjR97ZIeR93qTcwpKNMpV+/FTWjwEbuPD495Tk= github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U= @@ -171,8 +170,9 @@ github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxB github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= +github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= @@ -594,7 +594,6 @@ github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xb github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw= github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2 h1:6+hM8KeYKV0Z9EIINNqIEDyyIRAcNc2FW+/TUYNmWyw= github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgraph-io/badger/v3 v3.2103.1 h1:zaX53IRg7ycxVlkd5pYdCeFp1FynD6qBGQoQql3R3Hk= @@ -768,7 +767,6 @@ github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/ github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8= github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= @@ -1002,7 +1000,10 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= @@ -1312,7 +1313,6 @@ github.com/josephspurrier/goversioninfo v0.0.0-20190209210621-63e6d1acd3dd h1:Ki github.com/josephspurrier/goversioninfo v0.0.0-20190209210621-63e6d1acd3dd/go.mod h1:eJTEwMjXb7kZ633hO3Ln9mBUCOjX2+FlTljvpl9SYdE= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -1432,9 +1432,8 @@ github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe h1:YioO2TiJyAHWHyCRQCP8jk5IzTqmsbGc5qQPIhHo6xs= -github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= +github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= +github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -2074,6 +2073,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= @@ -2697,7 +2697,6 @@ gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From fcd4be0560bd041665ce446f3ca64fc6bf30f85b Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Thu, 18 Apr 2024 11:58:15 +0300 Subject: [PATCH 187/313] Migrate X-PACK Filebeat pipeline to main Beat pipeline (#38941) Migrate x-pack filebeat to single pipeline Signed-off-by: Alexandros Sapranidis --- .buildkite/hooks/pre-command | 1 - .buildkite/pipeline.yml | 27 ++ .buildkite/scripts/cloud_tests.sh | 14 +- .buildkite/scripts/common.sh | 20 +- .../generate_xpack_filebeat_pipeline.sh | 284 -------------- .buildkite/scripts/setenv.sh | 2 +- .buildkite/x-pack/pipeline.xpack.filebeat.yml | 359 +++++++++++++++--- 7 files changed, 342 insertions(+), 365 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_filebeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index d8862d9cc94..c6a37908e23 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -66,7 +66,6 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-xpack-winlogbeat" "beats-xpack-dockerlogbeat" "beats-xpack-auditbeat" - "beats-xpack-filebeat" "beats-xpack-metricbeat" "beats-xpack-heartbeat" "deploy-k8s" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 7f7c1f107f4..ddca6e022d7 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -80,6 +80,33 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger x-pack/filebeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/filebeat/ + - x-pack/libbeat/ + - .buildkite/x-pack/pipeline.xpack.filebeat.yml + - .buildkite/scripts + - .buildkite/hooks/ + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/** + - testing/** + config: + trigger: "beats-xpack-filebeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Xpack/Dockerlogbeat" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/scripts/cloud_tests.sh b/.buildkite/scripts/cloud_tests.sh index 3deeb89671f..c8f3737e13e 100755 --- a/.buildkite/scripts/cloud_tests.sh +++ b/.buildkite/scripts/cloud_tests.sh @@ -1,13 +1,12 @@ #!/usr/bin/env bash set -euo pipefail -# What Terraform Module will run -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then - export MODULE_DIR="x-pack/filebeat/input/awss3/_meta/terraform" -fi + +REPO_DIR=$(pwd) teardown() { - popd + # reset the directory to the root of the project + cd $REPO_DIR # Teardown resources after using them echo "~~~ Terraform Cleanup" tf_cleanup "${MODULE_DIR}" #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK @@ -43,15 +42,16 @@ set -o xtrace echo "~~~ Run docker-compose services for emulated cloud env" docker-compose -f .ci/jobs/docker-compose.yml up -d #TODO: move all docker-compose files from the .ci to .buildkite folder before switching to BK echo "~~~ Initialize TF cloud resources" -pushd "$MODULE_DIR" +cd "$MODULE_DIR" export TF_VAR_BRANCH=$(echo "${BUILDKITE_BRANCH}" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9-]/-/g') export TF_VAR_BUILD_ID="${BUILDKITE_BUILD_ID}" export TF_VAR_CREATED_DATE=$(date +%s) export TF_VAR_ENVIRONMENT="ci" export TF_VAR_REPO="${REPO}" terraform init && terraform apply -auto-approve +cd - # Run tests echo "~~~ Run Cloud Tests for $BEATS_PROJECT_NAME" -pushd "${BEATS_PROJECT_NAME}" +cd "${BEATS_PROJECT_NAME}" mage build test diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index ba076194bb7..c99eb6ec998 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -18,27 +18,20 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" -[ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" [ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" - # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" -[ -z "${run_xpack_filebeat_arm_tests+x}" ] && run_xpack_filebeat_arm_tests="$(buildkite-agent meta-data get run_xpack_filebeat_arm_tests --default "false")" [ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" - # define if needed run MacOS platform-specific tests for the particular beat [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" -[ -z "${run_xpack_filebeat_macos_tests+x}" ] && run_xpack_filebeat_macos_tests="$(buildkite-agent meta-data get run_xpack_filebeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_heartbeat_macos_tests+x}" ] && run_xpack_heartbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_heartbeat_macos_tests --default "false")" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" -[ -z "${run_xpack_filebeat_aws_tests+x}" ] && run_xpack_filebeat_aws_tests="$(buildkite-agent meta-data get run_xpack_filebeat_aws_tests --default "false")" - libbeat_changeset=( "^libbeat/.*" @@ -60,10 +53,6 @@ xpack_heartbeat_changeset=( "^x-pack/heartbeat/.*" ) -xpack_filebeat_changeset=( - "^x-pack/filebeat/.*" - ) - xpack_libbeat_changeset=( "^x-pack/libbeat/.*" ) @@ -117,9 +106,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-winlogbeat") BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} ;; - "beats-xpack-filebeat") - BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} - ;; "beats-xpack-heartbeat") BEAT_CHANGESET_REFERENCE=${xpack_heartbeat_changeset[@]} ;; @@ -371,7 +357,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -382,7 +368,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat"; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]] ; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi @@ -393,7 +379,7 @@ are_conditions_met_macos_tests() { are_conditions_met_aws_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-filebeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_AWS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_AWS_LABEL} || "${!TRIGGER_SPECIFIC_AWS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi diff --git a/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh b/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh deleted file mode 100755 index 7e3e4aa5f39..00000000000 --- a/.buildkite/scripts/generate_xpack_filebeat_pipeline.sh +++ /dev/null @@ -1,284 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-filebeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":go: Go Integration Tests" - key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - - label: ":python: Python Integration Tests" - key: "mandatory-python-int-test" - command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Python Integration Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests || are_conditions_met_aws_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: Ubuntu ARM Unit Tests" - key: "extended-arm64-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" - -YAML -fi - -if are_conditions_met_aws_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: Cloud Tests" - key: "extended-cloud-test" - command: ".buildkite/scripts/cloud_tests.sh" - skip: "Temporary disable, additional conditions required, we hit AWS limits" - env: - MODULE: $MODULE - ASDF_TERRAFORM_VERSION: 1.0.2 - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Cloud Tests" - -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index f6b03f53f9b..81d00eb5dea 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -49,7 +49,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_S export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-filebeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then source .buildkite/scripts/common.sh if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then export ELASTIC_SYNTHETICS_CAPABLE=true diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index 02b1cf0ddea..795302bc2d9 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -3,13 +3,13 @@ name: "beats-xpack-filebeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/filebeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" @@ -18,62 +18,311 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "x-pack/filebeat Mandatory Tests" + key: "x-pack-filebeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "x-pack-filebeat-mandatory-linux-unit-test" + command: | + cd x-pack/filebeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Ubuntu Unit Tests" + + - label: ":go: Go (MODULE) Integration Tests" + key: "x-pack-filebeat-mandatory-int-test" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/filebeat + echo "~~~ Will run tests with env var MODULE=$$MODULE" + cd x-pack/filebeat && mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Go (MODULE) Integration Tests" + + - label: ":python: Python (MODULE) Integration Tests" + key: "x-pack-filebeat-mandatory-python-int-test" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/filebeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + cd x-pack/filebeat && mage pythonIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Python (MODULE) Integration Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path x-pack/filebeat + mage build unitTest + key: "x-pack-filebeat-mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Windows 2022 Unit Tests" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path x-pack/filebeat + mage build unitTest + key: "x-pack-filebeat-mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Windows 2016 Unit Tests" + + - label: ":linux: Ubuntu ARM Unit Tests" + key: "x-pack-filebeat-mandatory-linux-arm-unit-test" + command: | + cd x-pack/filebeat + mage build unitTest + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Ubuntu ARM Unit Tests" + + - group: "x-pack/filebeat Extended Windows Tests" + key: "x-pack-filebeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path x-pack/filebeat + mage build unitTest + key: "x-pack-filebeat-extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Windows 2019 Unit Tests" - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Filebeat - run_xpack_filebeat" - key: "run_xpack_filebeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Filebeat - run_xpack_filebeat_macos_tests" - key: "run_xpack_filebeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Filebeat - run_xpack_filebeat_arm_tests" - key: "run_xpack_filebeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Filebeat - run_xpack_filebeat_aws_tests" - key: "run_xpack_filebeat_aws_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - if: "build.source == 'ui'" + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path x-pack/filebeat + mage build unitTest + key: "x-pack-filebeat-extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path x-pack/filebeat + mage build unitTest + key: "x-pack-filebeat-extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Windows 11 Unit Tests" + + - group: "x-pack/filebeat Extended Tests" + key: "x-pack-filebeat-extended-tests" + steps: + - label: ":mac: MacOS x86_64 Unit Tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS).*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/filebeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: MacOS x86_64 Unit Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + skip: "https://github.com/elastic/beats/issues/33036" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS).*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/filebeat && mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: MacOS arm64 Unit Tests" + + - label: ":linux: Cloud (MODULE) Tests" + key: "x-pack-filebeat-extended-cloud-test" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/filebeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + + .buildkite/scripts/cloud_tests.sh + env: + ASDF_TERRAFORM_VERSION: 1.0.2 + AWS_REGION: "eu-central-1" + BEATS_PROJECT_NAME: x-pack/filebeat + MODULE_DIR: "x-pack/filebeat/input/awss3/_meta/terraform" + REPO: beats + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Cloud (MODULE) Tests" + + - label: ":linux: Cloud AWS (MODULE) Tests" + key: "x-pack-filebeat-extended-cloud-test-aws" + skip: "Skip test until fixed https://github.com/elastic/beats/issues/36425" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/filebeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + .buildkite/scripts/cloud_tests.sh + env: + ASDF_TERRAFORM_VERSION: 1.0.2 + AWS_REGION: "eu-central-1" + BEATS_PROJECT_NAME: x-pack/filebeat + MODULE_DIR: "x-pack/filebeat/input/awss3/_meta/terraform" + REPO: beats + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "x-pack/filebeat/build/*.xml" + - "x-pack/filebeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/filebeat: Cloud AWS (MODULE) Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack filebeat pipeline" - key: "xpack-filebeat-pipeline" - command: ".buildkite/scripts/generate_xpack_filebeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - step: "x-pack-filebeat-mandatory-tests" + + - group: "x-pack/filebeat Packaging" + key: "x-pack-filebeat-packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd x-pack/filebeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "x-pack/filebeat: Packaging Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: | + cd x-pack/filebeat + mage package + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "x-pack/filebeat: Packaging Linux ARM" From 40b1d703c95b617f1c5cc2f2f723eb6933edd394 Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Thu, 18 Apr 2024 11:49:06 +0200 Subject: [PATCH 188/313] [Release] add-backport-next (#39030) --- .mergify.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.mergify.yml b/.mergify.yml index 9a4af750903..5ab78c46dad 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -315,3 +315,16 @@ pull_request_rules: labels: - "backport" title: "[{{ destination_branch }}](backport #{{ number }}) {{ title }}" + - name: backport patches to 8.14 branch + conditions: + - merged + - label=backport-v8.14.0 + actions: + backport: + assignees: + - "{{ author }}" + branches: + - "8.14" + labels: + - "backport" + title: "[{{ destination_branch }}](backport #{{ number }}) {{ title }}" From 0d3a8b68d95e472f4ab8e9e643a21e482c898cca Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Thu, 18 Apr 2024 11:53:10 +0200 Subject: [PATCH 189/313] [CI] x-pack/heartbeat monorepo (#38845) Use mono repo plugin for xpack/heartbeat Relates: https://github.com/elastic/ingest-dev/issues/3072 --------- Co-authored-by: Dimitrios Liappis --- .buildkite/pipeline.yml | 27 ++ .buildkite/scripts/common.sh | 18 +- .../generate_xpack_heartbeat_pipeline.sh | 213 -------------- .buildkite/scripts/install_macos_tools.sh | 5 + .buildkite/scripts/setenv.sh | 12 +- .../x-pack/pipeline.xpack.heartbeat.yml | 261 +++++++++++++++--- 6 files changed, 273 insertions(+), 263 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_heartbeat_pipeline.sh diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index ddca6e022d7..63acda710aa 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -312,3 +312,30 @@ steps: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger x-pack/heartbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/heartbeat/ + - .buildkite/x-pack/pipeline.xpack.heartbeat.yml + - .buildkite/scripts/ + - .buildkite/hooks/ + # x-pack + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/ + - testing/ + - x-pack/libbeat/ + config: + trigger: "beats-xpack-heartbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index c99eb6ec998..cf323739e7a 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -18,7 +18,12 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" +<<<<<<< HEAD +[ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" + +======= [ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" +>>>>>>> main # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" @@ -28,7 +33,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" -[ -z "${run_xpack_heartbeat_macos_tests+x}" ] && run_xpack_heartbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_heartbeat_macos_tests --default "false")" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" @@ -49,8 +53,13 @@ xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) +<<<<<<< HEAD +xpack_filebeat_changeset=( + "^x-pack/filebeat/.*" +======= xpack_heartbeat_changeset=( "^x-pack/heartbeat/.*" +>>>>>>> main ) xpack_libbeat_changeset=( @@ -106,8 +115,13 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-winlogbeat") BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} ;; +<<<<<<< HEAD + "beats-xpack-filebeat") + BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} +======= "beats-xpack-heartbeat") BEAT_CHANGESET_REFERENCE=${xpack_heartbeat_changeset[@]} +>>>>>>> main ;; "beats-xpack-libbeat") BEAT_CHANGESET_REFERENCE=${xpack_libbeat_changeset[@]} @@ -368,7 +382,7 @@ are_conditions_met_arm_tests() { are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]] ; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi diff --git a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh deleted file mode 100755 index 94eed4f7c6a..00000000000 --- a/.buildkite/scripts/generate_xpack_heartbeat_pipeline.sh +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-heartbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML -steps: - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":go: Go Integration Tests" - key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - ####### skip: "see elastic/beats#23957 and elastic/beats#23958" - # - label: ":windows: Windows 2016 Unit Tests" - # command: | - # Set-Location -Path $BEATS_PROJECT_NAME - # mage build unitTest - # key: "mandatory-win-2016-unit-tests" - # agents: - # provider: "gcp" - # image: "${IMAGE_WIN_2016}" - # machine_type: "${GCP_WIN_MACHINE_TYPE}" - # disk_size: 100 - # disk_type: "pd-ssd" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" - # notify: - # - github_commit_status: - # context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - # - label: ":windows: Windows 2022 Unit Tests" - # command: | - # Set-Location -Path $BEATS_PROJECT_NAME - # mage build unitTest - # key: "mandatory-win-2022-unit-tests" - # agents: - # provider: "gcp" - # image: "${IMAGE_WIN_2022}" - # machine_type: "${GCP_WIN_MACHINE_TYPE}" - # disk_size: 100 - # disk_type: "pd-ssd" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" - # notify: - # - github_commit_status: - # context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - - # - group: "Extended Windows Tests" ## TODO: this condition will be changed in the Phase 3 - # key: "extended-win-tests" - # steps: - # - label: ":windows: Windows 10 Unit Tests" - # command: | - # Set-Location -Path $BEATS_PROJECT_NAME - # mage build unitTest - # key: "extended-win-10-unit-tests" - # agents: - # provider: "gcp" - # image: "${IMAGE_WIN_10}" - # machineType: "${GCP_WIN_MACHINE_TYPE}" - # disk_size: 100 - # disk_type: "pd-ssd" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" - # notify: - # - github_commit_status: - # context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - # - label: ":windows: Windows 11 Unit Tests" - # command: | - # Set-Location -Path $BEATS_PROJECT_NAME - # mage build unitTest - # key: "extended-win-11-unit-tests" - # agents: - # provider: "gcp" - # image: "${IMAGE_WIN_11}" - # machineType: "${GCP_WIN_MACHINE_TYPE}" - # disk_size: 100 - # disk_type: "pd-ssd" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" - # notify: - # - github_commit_status: - # context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - # - label: ":windows: Windows 2019 Unit Tests" - # command: | - # Set-Location -Path $BEATS_PROJECT_NAME - # mage build unitTest - # key: "extended-win-2019-unit-tests" - # agents: - # provider: "gcp" - # image: "${IMAGE_WIN_2019}" - # machineType: "${GCP_WIN_MACHINE_TYPE}" - # disk_size: 100 - # disk_type: "pd-ssd" - # artifact_paths: - # - "$BEATS_PROJECT_NAME/build/*.xml" - # - "$BEATS_PROJECT_NAME/build/*.json" - # notify: - # - github_commit_status: - # context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - ####### skip: "see elastic/beats#23957 and elastic/beats#23958" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - group: "Extended Tests" - key: "extended-tests" - steps: - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -yq . -P -e $pipelineName || (echo "Yaml formatting error, below is the YAML"; cat $pipelineName; exit 1) - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/scripts/install_macos_tools.sh b/.buildkite/scripts/install_macos_tools.sh index 124025b4a5a..4572afb4cdc 100755 --- a/.buildkite/scripts/install_macos_tools.sh +++ b/.buildkite/scripts/install_macos_tools.sh @@ -133,3 +133,8 @@ with_go "${GO_VERSION}" with_mage with_python config_git + +# prevent "OSError: [Errno 24] Too many open files" on macOS +ulimit -Sn 150000 +echo "~~~ Setting ulimit: $(ulimit)" +echo "~~~ Resuming commands" diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 81d00eb5dea..f806b131a7a 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -49,18 +49,8 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_S export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then source .buildkite/scripts/common.sh - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then - export ELASTIC_SYNTHETICS_CAPABLE=true - else - # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. - defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" - fi -fi - -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. - source .buildkite/scripts/common.sh defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" fi diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 1b04fcf9922..107dfa65f1b 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -3,10 +3,11 @@ name: "beats-xpack-heartbeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/heartbeat" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" @@ -18,46 +19,232 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + # pipeline specific + ELASTIC_SYNTHETICS_CAPABLE: "true" - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 + ASDF_NODEJS_VERSION: 18.17.1 steps: + - group: "x-pack/heartbeat Mandatory Tests" + key: "x-pack-heartbeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: | + set -euo pipefail + echo "~~~ Installing @elastic/synthetics" + npm install -g @elastic/synthetics + echo "~~~ Running tests" + cd x-pack/heartbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Ubuntu Unit Tests" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: | + set -euo pipefail + echo "~~~ Installing @elastic/synthetics" + npm install -g @elastic/synthetics + echo "~~~ Running tests" + cd x-pack/heartbeat + mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Go Integration Tests" + + - label: ":windows: Windows 2016 Unit Tests" + key: "mandatory-win-2016-unit-tests" + skip: "skipping due to elastic/beats#23957 and elastic/beats#23958" + command: | + Set-Location -Path x-pack/heartbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + key: "mandatory-win-2022-unit-tests" + skip: "skipping due to elastic/beats#23957 and elastic/beats#23958" + command: | + Set-Location -Path x-pack/heartbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Windows 2022 Unit Tests" - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Heartbeat - run_xpack_heartbeat" - key: "run_xpack_heartbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Heartbeat - run_xpack_heartbeat_macos_tests" - key: "run_xpack_heartbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - if: "build.source == 'ui'" + - group: "x-pack/heartbeat Extended Windows Tests" + key: "x-pack-heartbeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + skip: "skipping due to elastic/beats#23957 and elastic/beats#23958" + steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path x-pack/heartbeat + mage build test + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path x-pack/heartbeat + mage build test + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path x-pack/heartbeat + mage build test + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Windows 2019 Unit Tests" + + - group: "x-pack/heartbeat MacOS Extended Tests" + key: "x-pack-heartbeat-extended-tests-macos" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: + - label: ":mac: MacOS x86_64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + withNodeJSEnv $ASDF_NODEJS_VERSION + installNodeJsDependencies + cd x-pack/heartbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: MacOS x86_64 Extended Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + withNodeJSEnv $ASDF_NODEJS_VERSION + installNodeJsDependencies + cd x-pack/heartbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "x-pack/heartbeat/build/*.xml" + - "x-pack/heartbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/heartbeat: MacOS arm64 Extended Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack heartbeat pipeline" - key: "xpack-heartbeat-pipeline" - command: ".buildkite/scripts/generate_xpack_heartbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - step: "x-pack-heartbeat-mandatory-tests" + + - group: "Packaging" + key: "packaging" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd x-pack/heartbeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Packaging Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: | + cd x-pack/heartbeat + mage package + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "x-pack/heartbeat: Packaging Linux ARM" From 397aba0e14c60f681e55c1bd0ee0d1c305c7f25b Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Thu, 18 Apr 2024 13:40:33 +0300 Subject: [PATCH 190/313] Fix conflict issues after merging #38845 (#39042) --- .buildkite/scripts/common.sh | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index cf323739e7a..abc30997f08 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -18,12 +18,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" -<<<<<<< HEAD -[ -z "${run_xpack_filebeat+x}" ] && run_xpack_filebeat="$(buildkite-agent meta-data get run_xpack_filebeat --default "false")" - -======= -[ -z "${run_xpack_heartbeat+x}" ] && run_xpack_heartbeat="$(buildkite-agent meta-data get run_xpack_heartbeat --default "false")" ->>>>>>> main # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" @@ -53,15 +47,6 @@ xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) -<<<<<<< HEAD -xpack_filebeat_changeset=( - "^x-pack/filebeat/.*" -======= -xpack_heartbeat_changeset=( - "^x-pack/heartbeat/.*" ->>>>>>> main - ) - xpack_libbeat_changeset=( "^x-pack/libbeat/.*" ) @@ -115,14 +100,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-winlogbeat") BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} ;; -<<<<<<< HEAD - "beats-xpack-filebeat") - BEAT_CHANGESET_REFERENCE=${xpack_filebeat_changeset[@]} -======= - "beats-xpack-heartbeat") - BEAT_CHANGESET_REFERENCE=${xpack_heartbeat_changeset[@]} ->>>>>>> main - ;; "beats-xpack-libbeat") BEAT_CHANGESET_REFERENCE=${xpack_libbeat_changeset[@]} ;; From 99b2de0e3b7380cc63c3169d38f4641425188fb7 Mon Sep 17 00:00:00 2001 From: Taylor Swanson <90622908+taylor-swanson@users.noreply.github.com> Date: Thu, 18 Apr 2024 08:01:59 -0500 Subject: [PATCH 191/313] Set owner of syslog reader and processor (#38945) - Syslog reader and processor are owned by elastic/sec-deployment-and-devices --- .github/CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2cc538d33aa..8661f59c509 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -61,9 +61,11 @@ CHANGELOG* /libbeat/processors/decode_xml_wineventlog/ @elastic/sec-windows-platform /libbeat/processors/dns/ @elastic/sec-deployment-and-devices /libbeat/processors/registered_domain/ @elastic/sec-deployment-and-devices +/libbeat/processors/syslog/ @elastic/sec-deployment-and-devices /libbeat/processors/translate_sid/ @elastic/sec-windows-platform /libbeat/processors/add_cloud_metadata @elastic/obs-cloud-monitoring /libbeat/processors/add_kubernetes_metadata @elastic/obs-cloudnative-monitoring +/libbeat/reader/syslog/ @elastic/sec-deployment-and-devices /licenses/ @elastic/elastic-agent-data-plane /metricbeat/ @elastic/elastic-agent-data-plane /metricbeat/docs/ # Listed without an owner to avoid maintaining doc ownership for each input and module. From b4ff53ce2b2d0037faa58d88afa2afbdc82d3033 Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Thu, 18 Apr 2024 16:50:20 +0300 Subject: [PATCH 192/313] Fixed issues with Heartbeat pipeline (#39045) * fixed issues in heartbeat pipeline * pr fixes --- .buildkite/heartbeat/heartbeat-pipeline.yml | 114 +++++++++++++++++--- .buildkite/hooks/pre-command | 3 +- .buildkite/hooks/scripts/util.sh | 9 +- 3 files changed, 104 insertions(+), 22 deletions(-) diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index 0ab91594c25..8091b2eead1 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -24,9 +24,12 @@ env: steps: - group: "Heartbeat Mandatory Testing" key: "heartbeat-mandatory-tests" + steps: - - label: ":ubuntu: Unit Tests" - command: "cd heartbeat && mage build unitTest" + - label: ":ubuntu: Heartbeat Unit Tests" + command: | + cd heartbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -34,9 +37,14 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Ubuntu Unit Tests" - label: ":rhel: Heartbeat Rhel9 Unit Tests" - command: "cd heartbeat && mage build unitTest" + command: | + cd heartbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -44,8 +52,11 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Rhel9 Unit Tests" - - label: ":windows: Heartbeat Win-2016 Unit Test" + - label: ":windows: Heartbeat Win-2016 Unit Tests" key: "windows-2016" command: | Set-Location -Path heartbeat @@ -58,6 +69,9 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Win-2016 Unit Tests" - label: ":windows: Heartbeat Win-2022 Unit Test" key: "windows-2022" @@ -72,9 +86,14 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Win-2022 Unit Tests" - label: ":ubuntu: Heartbeat Go Integration Tests" - command: "cd heartbeat && mage goIntegTest" + command: | + cd heartbeat + mage goIntegTest agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -82,9 +101,14 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Go Integration Tests" - label: ":ubuntu: Heartbeat Python Integration Tests" - command: "cd heartbeat && mage pythonIntegTest" + command: | + cd heartbeat + mage pythonIntegTest agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -92,33 +116,67 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Python Integration Tests" - group: "Heartbeat ARM Tests" key: "heartbeat-extended-tests-arm" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + steps: - label: ":linux: Heartbeat ARM64 Unit Tests" key: "arm-extended" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for arm" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ - command: "cd heartbeat && mage build unitTest" + command: | + cd heartbeat + mage build unitTest agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" artifact_paths: "heartbeat/build/*.xml" + notify: + - github_commit_status: + context: "Heartbeat: Ubuntu ARM64 Unit Tests" - group: "Heartbeat Extended Testing MacOS" key: "heartbeat-extended-tests-macos" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: - label: ":mac: Heartbeat MacOS Unit Tests" key: "macos-extended" - if: build.env("GITHUB_PR_TRIGGER_COMMENT") == "heartbeat for macos" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - command: "cd ${BEATS_PROJECT_NAME} && mage build unitTest" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd heartbeat + mage build unitTest agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "heartbeat/build/*.xml" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: MacOS Unit Tests" + + - label: ":mac: Heartbeat MacOS ARM Unit Tests" + key: "macos-arm-extended" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd heartbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "metricbeat/build/*.xml" + - "metricbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: MacOS ARM Unit Tests" - group: "Heartbeat Windows Extended Testing" key: "heartbeat-extended-tests-win" @@ -127,7 +185,9 @@ steps: steps: - label: ":windows: Heartbeat Win-2019 Unit Tests" key: "heartbeat-win-extended-2019" - command: "mage -d ${BEATS_PROJECT_NAME} unitTest" + command: | + Set-Location -Path heartbeat + mage build unitTest agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -136,6 +196,9 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Win-2019 Unit Tests" - label: ":windows: Heartbeat Win-11 Unit Tests" key: "heartbeat-windows-extended-11" @@ -150,6 +213,9 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Win-11 Unit Tests" - label: ":windows: Heartbeat Win-10 Unit Tests" key: "heartbeat-windows-extended-10" @@ -164,23 +230,32 @@ steps: artifact_paths: - "heartbeat/build/*.xml" - "heartbeat/build/*.json" + notify: + - github_commit_status: + context: "Heartbeat: Win-10 Unit Tests" + + - wait: ~ + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: "heartbeat-mandatory-tests" - group: "Heartbeat Packaging" key: "heartbeat-packaging" - if: build.env("BUILDKITE_PULL_REQUEST") != "false" - depends_on: - - "heartbeat-mandatory-tests" steps: - label: ":ubuntu: Heartbeat Packaging Linux X86" key: "heartbeat-package-linux-x86" env: PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" SNAPSHOT: true - command: "cd heartbeat && mage package" + command: | + cd heartbeat + mage package agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "Heartbeat: Packaging Ubuntu x86_64" - label: ":linux: Heartbeat Packaging Linux ARM" key: "heartbeat-package-linux-arm" @@ -188,8 +263,13 @@ steps: PLATFORMS: "linux/arm64" PACKAGES: "docker" SNAPSHOT: true - command: "cd heartbeat && mage package" + command: | + cd heartbeat + mage package agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" + notify: + - github_commit_status: + context: "Heartbeat: Packaging Ubuntu ARM" diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index c6a37908e23..8fc0e914278 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -11,7 +11,7 @@ PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-inges DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" || "$BUILDKITE_PIPELINE_SLUG" == "heartbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" ]]; then source .buildkite/env-scripts/env.sh if [[ -z "${GO_VERSION-""}" ]]; then export GO_VERSION=$(cat "${WORKSPACE}/.go-version") @@ -56,6 +56,7 @@ fi ENABLED_BEATS_PIPELINES_SLUGS=( "auditbeat" + "heartbeat" "filebeat" "beats-metricbeat" "beats-packetbeat" diff --git a/.buildkite/hooks/scripts/util.sh b/.buildkite/hooks/scripts/util.sh index 29ffb389914..8ef932725c6 100755 --- a/.buildkite/hooks/scripts/util.sh +++ b/.buildkite/hooks/scripts/util.sh @@ -25,10 +25,11 @@ google_cloud_logout_active_account() { } cleanup() { - # TODO: disable for upload pipeline + if [[ "$BUILDKITE_COMMAND" != *"buildkite-agent pipeline upload"* ]]; then echo "Deleting temporary files..." - if [[ -e "${BIN}/${TMP_FOLDER}" ]]; then - rm -rf "${BIN}/${TMP_FOLDER}.*" - fi + if [[ -n "${BIN:-}" ]] && [[ -e "${BIN}/${TMP_FOLDER}" ]]; then + rm -rf "${BIN}/${TMP_FOLDER}.*" + fi echo "Done." + fi } From ae36fd471e65c2e382a2570952a1c2bed62529bd Mon Sep 17 00:00:00 2001 From: Elastic Machine Date: Thu, 18 Apr 2024 18:04:02 +0200 Subject: [PATCH 193/313] [Release] update version (#39033) Co-authored-by: Pierre HILBERT --- libbeat/version/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libbeat/version/version.go b/libbeat/version/version.go index e1c849d3bda..0dab110aae9 100644 --- a/libbeat/version/version.go +++ b/libbeat/version/version.go @@ -18,4 +18,4 @@ // Code generated by dev-tools/set_version package version -const defaultBeatVersion = "8.14.0" +const defaultBeatVersion = "8.15.0" From 5e16f25d28d6e33f7016b371dd09baa4fe2a11b0 Mon Sep 17 00:00:00 2001 From: Taylor Swanson <90622908+taylor-swanson@users.noreply.github.com> Date: Thu, 18 Apr 2024 11:29:23 -0500 Subject: [PATCH 194/313] [netflow] Restore netflow input on Windows (#39024) - In 8.13, the netflow was accidentally removed from the list of inputs for Windows. This restores netflow as an input under Windows. --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/default-inputs/inputs_windows.go | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 779722931aa..c9d0f812773 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -135,6 +135,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - entity-analytics input: Improve structured logging. {pull}38990[38990] - Fix config validation for CEL and HTTPJSON inputs when using password grant authentication and `client.id` or `client.secret` are not present. {pull}38962[38962] - Updated Websocket input title to align with existing inputs {pull}39006[39006] +- Restore netflow input on Windows {pull}39024[39024] - Upgrade azure-event-hubs-go and azure-storage-blob-go dependencies. {pull}38861[38861] *Heartbeat* diff --git a/x-pack/filebeat/input/default-inputs/inputs_windows.go b/x-pack/filebeat/input/default-inputs/inputs_windows.go index 361883f39ad..821131c8bc2 100644 --- a/x-pack/filebeat/input/default-inputs/inputs_windows.go +++ b/x-pack/filebeat/input/default-inputs/inputs_windows.go @@ -21,6 +21,7 @@ import ( "github.com/elastic/beats/v7/x-pack/filebeat/input/http_endpoint" "github.com/elastic/beats/v7/x-pack/filebeat/input/httpjson" "github.com/elastic/beats/v7/x-pack/filebeat/input/lumberjack" + "github.com/elastic/beats/v7/x-pack/filebeat/input/netflow" "github.com/elastic/beats/v7/x-pack/filebeat/input/o365audit" "github.com/elastic/beats/v7/x-pack/filebeat/input/shipper" "github.com/elastic/elastic-agent-libs/logp" @@ -41,5 +42,6 @@ func xpackInputs(info beat.Info, log *logp.Logger, store beater.StateStore) []v2 lumberjack.Plugin(), shipper.Plugin(log, store), etw.Plugin(), + netflow.Plugin(log), } } From e5e625287d3a780f35f5fa0700b22995c4a7ff77 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Thu, 18 Apr 2024 15:11:19 -0400 Subject: [PATCH 195/313] chore: Update snapshot.yml (#39056) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 83b403ab2f4..bfed2c8b650 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-799c1dc0-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-318ae53b-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-799c1dc0-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.14.0-318ae53b-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-799c1dc0-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.14.0-318ae53b-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From c43ee33d0bb56e15e20ca55c5d5b4f652dd63478 Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Thu, 18 Apr 2024 13:46:28 -0600 Subject: [PATCH 196/313] Fix typo in error message in cloudwatch input (#39057) From 2250273c77116f409d3d2243dc7a441dc2fb6d4f Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Fri, 19 Apr 2024 10:04:53 +0300 Subject: [PATCH 197/313] Moved winlogbeat pipeline to central pipeline (#38926) * updated common.sh * updated cnetral pipleine with winlogbeat * fixed typo --- .buildkite/pipeline.yml | 26 +++ .buildkite/scripts/common.sh | 1 - .buildkite/winlogbeat/pipeline.winlogbeat.yml | 162 ++++++++++++++---- 3 files changed, 159 insertions(+), 30 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 63acda710aa..eea60dcca41 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -339,3 +339,29 @@ steps: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger Winlogbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - winlogbeat/ + - .buildkite/winlogbeat/pipeline.winlogbeat.yml + - .buildkite/scripts + - .buildkite/hooks + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/ + - testing/ + config: + trigger: "beats-winlogbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index abc30997f08..faee83486d3 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -14,7 +14,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat [ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" -[ -z "${run_winlogbeat+x}" ] && run_winlogbeat="$(buildkite-agent meta-data get run_winlogbeat --default "false")" [ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" diff --git a/.buildkite/winlogbeat/pipeline.winlogbeat.yml b/.buildkite/winlogbeat/pipeline.winlogbeat.yml index 254370db030..c71858b45b0 100644 --- a/.buildkite/winlogbeat/pipeline.winlogbeat.yml +++ b/.buildkite/winlogbeat/pipeline.winlogbeat.yml @@ -2,10 +2,10 @@ name: "beats-winlogbeat" env: - BEATS_PROJECT_NAME: "winlogbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" @@ -13,37 +13,141 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - - #Deps + # Other deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "Winlogbeat Mandatory Tests" + key: "winlogbeat-mandatory-tests" + + steps: + - label: ":ubuntu: Winlogbeat Crossccompile" + key: "mandatory-cross-compile" + command: "make -C winlogbeat crosscompile" + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "winlogbeat/build/*.xml" + - "winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Winlogbeat: Crosscompile" + + - label: ":windows: Winlogbeat Win-2016 Unit Tests" + command: | + Set-Location -Path winlogbeat + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "winlogbeat/build/*.xml" + - "winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Winlogbeat: Win-2016 Unit Tests" + + - label: ":windows: Winlogbeat Win-2019 Unit Tests" + command: | + Set-Location -Path winlogbeat + mage build unitTest + key: "mandatory-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "winlogbeat/build/*.xml" + - "winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Winlogbeat: Win-2019 Unit Tests" - - input: "Input Parameters" - key: "input-run-all-stages" - fields: - - select: "Winlogbeat - run_winlogbeat" - key: "run_winlogbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" + - label: ":windows: Winlogbeat Win-2022 Unit Tests" + command: | + Set-Location -Path winlogbeat + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "winlogbeat/build/*.xml" + - "winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Winlogbeat: Win-2022 Unit Tests" + + - group: "Winlogbeat Extended Windows Tests" + key: "winlogbeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + + steps: + - label: ":windows: Winlogbeat Win-10 Unit Tests" + command: | + Set-Location -Path winlogbeat + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "winlogbeat/build/*.xml" + - "winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Winlogbeat: Win-10 Unit Tests" + + - label: ":windows: Winlogbeat Win-11 Unit Tests" + command: | + Set-Location -Path winlogbeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "winlogbeat/build/*.xml" + - "winlogbeat/build/*.json" + notify: + - github_commit_status: + context: "Winlogbeat: Win-11 Unit Tests" - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic winlogbeat pipeline" - key: "winlogbeat-pipeline" - command: ".buildkite/scripts/generate_winlogbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: "winlogbeat-mandatory-tests" + + - group: "Winlogbeat Packaging" + key: "winlogbeat-packaging" + steps: + - label: ":ubuntu: Winlogbeat Packaging Ubuntu x86_64" + key: "packaging-linux" + command: | + cd winlogbeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "Winlogbeat: Packaging Ubuntu x86_64" From 8738b6cde971378e31ca910e266b40ed4c0de6cf Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 19 Apr 2024 17:15:36 +0300 Subject: [PATCH 198/313] Improve conditionals for x-pack/metricbeat BK CI (#39071) PR#38913 had a bug for the extended tests group: it wouldn't allow to run steps in the extended group when not using a PR (e.g. merge commits). This commit allows all steps in the extended group to run when the trigger is not a PR. --- .buildkite/x-pack/pipeline.xpack.metricbeat.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 3b79117e46b..317b9069c55 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -180,7 +180,7 @@ steps: if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS|aws).*/ steps: - label: ":mac: MacOS x86_64 Unit Tests" - if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.**/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -197,7 +197,7 @@ steps: - label: ":mac: MacOS arm64 Unit Tests" skip: "https://github.com/elastic/beats/issues/33036" - if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.**/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -215,6 +215,7 @@ steps: - label: ":linux: Cloud (MODULE) Tests" key: "x-pack-metricbeat-extended-cloud-test" skip: "doesn't belong in a stage in Jenkins, thus skipped" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ # see link in Jenkins: https://github.com/elastic/beats/blob/ccd7b135df70358f8a02393d9bd8b716428b8048/x-pack/metricbeat/Jenkinsfile.yml#L39 # additionally skipping due to https://github.com/elastic/ingest-dev/issues/3170 command: | @@ -244,10 +245,10 @@ steps: - label: ":linux: Cloud AWS (MODULE) Tests" key: "x-pack-metricbeat-extended-cloud-test-aws" - if: build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ skip: "https://github.com/elastic/beats/issues/36425" # see commented out section in Jenkins: https://github.com/elastic/beats/blob/main/x-pack/metricbeat/Jenkinsfile.yml#L41-L52 # additionally skipping due to https://github.com/elastic/ingest-dev/issues/3170 + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ command: | set -euo pipefail # defines the MODULE env var based on what's changed in a PR From 0d726a60be840c73725c8a3d84695b42099f5e6f Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 19 Apr 2024 17:33:07 +0300 Subject: [PATCH 199/313] Remove BK PR Bot trigger for packetbeat (#39077) In preparation for the migration to a static pipeline for packetbeat, this commit removes the Buildkite PR Bot trigger. Relates elastic/ingest-dev#3072 --- .buildkite/pull-requests.json | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 2bb553ab6cd..64713cb6e10 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -16,22 +16,6 @@ "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": [ ] }, - { - "enabled": true, - "pipelineSlug": "beats-packetbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test packetbeat$", - "always_trigger_comment_regex": "^/test packetbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^packetbeat/.*", ".buildkite/packetbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] - }, { "enabled": true, "pipelineSlug": "beats-xpack-elastic-agent", From b0690b5fb9556e670e86be63d5d40fdf44f78849 Mon Sep 17 00:00:00 2001 From: Siarhei Harbuz <87968844+sharbuz@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:01:59 +0300 Subject: [PATCH 200/313] migrate x-pack/libbeat to static (#38964) * migrate x-pack/libbeat to static * Update pull-requests.json * change paths * Update pull-requests.json * change conditions for group-steps * change the pipeline.yml * work with remarks * work with remarks * remove libbeat and x-pack/libbeat changesets from the common.sh * remove libbeat and x-pack/libbeat changesets from the common.sh * fix merge issues * Update .buildkite/x-pack/pipeline.xpack.libbeat.yml Co-authored-by: Dimitrios Liappis * apply common.sh from main and cleanup it * change paths --------- Co-authored-by: Dimitrios Liappis --- .buildkite/hooks/pre-command | 1 - .buildkite/pipeline.yml | 29 ++- .buildkite/pull-requests.json | 18 +- .buildkite/scripts/common.sh | 23 +- .../generate_xpack_libbeat_pipeline.sh | 188 ---------------- .buildkite/x-pack/pipeline.xpack.libbeat.yml | 204 ++++++++++++++---- 6 files changed, 196 insertions(+), 267 deletions(-) delete mode 100755 .buildkite/scripts/generate_xpack_libbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 8fc0e914278..cd6cc499c47 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -62,7 +62,6 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-packetbeat" "beats-winlogbeat" "beats-winlogbeat" - "beats-xpack-libbeat" "beats-xpack-packetbeat" "beats-xpack-winlogbeat" "beats-xpack-dockerlogbeat" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index eea60dcca41..69e24a41f21 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -265,7 +265,7 @@ steps: - label: "Trigger Libbeat" plugins: - monorepo-diff#v1.0.1: - diff: "git diff --name-only ${GITHUB_PR_TARGET_BRANCH}...HEAD" + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" watch: - path: - libbeat/ @@ -284,6 +284,33 @@ steps: branch: "${BUILDKITE_BRANCH}" env: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger x-pack/libbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/libbeat/ + - .buildkite/x-pack/pipeline.xpack.libbeat.yml + - .buildkite/scripts + - .buildkite/hooks + # x-pack + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/ + - testing/ + config: + trigger: "beats-xpack-libbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} - label: "Trigger x-pack/auditbeat" diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 64713cb6e10..c98c1f07578 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -63,22 +63,6 @@ "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^x-pack/packetbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] - }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-libbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/libbeat$", - "always_trigger_comment_regex": "^/test x-pack/libbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/libbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] } ] -} +} \ No newline at end of file diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index faee83486d3..db2fa2b0558 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -14,14 +14,14 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat [ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" -[ -z "${run_xpack_libbeat+x}" ] && run_xpack_libbeat="$(buildkite-agent meta-data get run_xpack_libbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" + # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" [ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" -[ -z "${run_xpack_libbeat_arm_tests+x}" ] && run_xpack_libbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_libbeat_arm_tests --default "false")" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" + # define if needed run MacOS platform-specific tests for the particular beat [ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" @@ -30,10 +30,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" -libbeat_changeset=( - "^libbeat/.*" - ) - packetbeat_changeset=( "^packetbeat/.*" ) @@ -46,10 +42,6 @@ xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) -xpack_libbeat_changeset=( - "^x-pack/libbeat/.*" - ) - xpack_packetbeat_changeset=( "^x-pack/packetbeat/.*" ) @@ -75,7 +67,6 @@ oss_changeset=( ) xpack_changeset=( - "${xpack_libbeat_changeset[@]}" "${oss_changeset[@]}" ) @@ -90,18 +81,12 @@ packaging_changeset=( ) case "${BUILDKITE_PIPELINE_SLUG}" in - "beats-libbeat") - BEAT_CHANGESET_REFERENCE=${libbeat_changeset[@]} - ;; "beats-packetbeat") BEAT_CHANGESET_REFERENCE=${packetbeat_changeset[@]} ;; "beats-winlogbeat") BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} ;; - "beats-xpack-libbeat") - BEAT_CHANGESET_REFERENCE=${xpack_libbeat_changeset[@]} - ;; "beats-xpack-metricbeat") BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} ;; @@ -347,7 +332,7 @@ are_conditions_met_mandatory_tests() { are_conditions_met_arm_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-libbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then return 0 fi @@ -539,4 +524,4 @@ if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_K defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" fi -check_and_set_beat_vars +check_and_set_beat_vars \ No newline at end of file diff --git a/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh deleted file mode 100755 index a99564e8613..00000000000 --- a/.buildkite/scripts/generate_xpack_libbeat_pipeline.sh +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.libbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":go: Go Integration Tests" - key: "mandatory-int-test" - command: "cd $BEATS_PROJECT_NAME && mage goIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Go Integration Tests" - - - label: ":python: Python Integration Tests" - key: "mandatory-python-int-test" - command: "cd $BEATS_PROJECT_NAME && mage pythonIntegTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Python Integration Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage -w reader\etw build goUnitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage -w reader\etw build goUnitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -### TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage -w reader\etw build goUnitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage -w reader\etw build goUnitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage -w reader\etw build goUnitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Extended Tests into the pipeline" -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - - label: ":linux: Ubuntu ARM64 Unit Tests" - key: "extended-arm64-unit-tests" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM64 Unit Tests" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.libbeat.yml b/.buildkite/x-pack/pipeline.xpack.libbeat.yml index c029951f010..14316a3ecd7 100644 --- a/.buildkite/x-pack/pipeline.xpack.libbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.libbeat.yml @@ -3,13 +3,9 @@ name: "beats-xpack-libbeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/libbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - IMAGE_MACOS_ARM: "generic-13-ventura-arm" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" @@ -18,45 +14,171 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - #Deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "x-pack/libbeat Mandatory Tests" + key: "x-pack-libbeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: | + cd x-pack/libbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Ubuntu Unit Tests" + + - label: ":go: Go Integration Tests" + key: "mandatory-int-test" + command: | + cd x-pack/libbeat + mage goIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Go Integration Tests" + + - label: ":python: Python Integration Tests" + key: "mandatory-python-int-test" + command: | + cd x-pack/libbeat + mage pythonIntegTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Python Integration Tests" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path x-pack/libbeat + mage -w reader\etw build goUnitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path x-pack/libbeat + mage -w reader\etw build goUnitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Windows 2022 Unit Tests" + + - group: "x-pack/libbeat Extended Windows Tests" + key: "x-pack-libbeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path x-pack/libbeat + mage -w reader\etw build goUnitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path x-pack/libbeat + mage -w reader\etw build goUnitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path x-pack/libbeat + mage -w reader\etw build goUnitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Windows 2019 Unit Tests" - - input: "Input Parameters" - key: "input-run-all-stages" - fields: - - select: "Libbeat - run_xpack_libbeat" - key: "run_xpack_libbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Libbeat - run_xpack_libbeat_arm_tests" - key: "run_xpack_libbeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" - - - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack libbeat pipeline" - key: "libbeat-pipeline" - command: ".buildkite/scripts/generate_xpack_libbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + - group: "x-pack/libbeat Linux arm Extended Tests" + key: "x-pack-libbeat-extended-tests-linux-arm" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + steps: + - label: ":linux: Ubuntu ARM64 Unit Tests" + key: "extended-arm64-unit-tests" + command: | + cd x-pack/libbeat + mage build unitTest + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "x-pack/libbeat/build/*.xml" + - "x-pack/libbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/libbeat: Ubuntu ARM64 Extended Unit Tests" From 243f9c33d8aab9e5aba7584d7b3eb64cb28bc18c Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Mon, 22 Apr 2024 11:50:23 +0300 Subject: [PATCH 201/313] Buildkite Xpack/Winlogbeat pipeline fixes (#39007) * updated common.sh * fixed typo * updated common.sh * added changeset ps1 script and updated xpack-winlogbeat pipeline * pr fixes * handle backslashes in changeset directories --- .buildkite/scripts/changesets.psm1 | 72 +++++++++++++++++++ .buildkite/scripts/common.sh | 11 +-- .../x-pack/pipeline.xpack.winlogbeat.yml | 38 +++++----- 3 files changed, 94 insertions(+), 27 deletions(-) create mode 100644 .buildkite/scripts/changesets.psm1 diff --git a/.buildkite/scripts/changesets.psm1 b/.buildkite/scripts/changesets.psm1 new file mode 100644 index 00000000000..15fabd3eba5 --- /dev/null +++ b/.buildkite/scripts/changesets.psm1 @@ -0,0 +1,72 @@ +function ArePathsChanged($patterns) { + $changedlist = @() + foreach ($pattern in $patterns) { + $changedFiles = & git diff --name-only "HEAD@{1}" HEAD | Select-String -Pattern $pattern -SimpleMatch + if ($changedFiles) { + $changedlist += $changedFiles + } + } + if ($changedlist) { + Write-Host "--- Files changed: $changedlist" + return $true + } + else { + Write-Host "--- No files changed within specified changeset: $patterns" + return $false + } +} + +function AreChangedOnlyPaths($patterns) { + $changedFiles = & git diff --name-only "HEAD@{1}" HEAD + Write-Host "--- Git Diff result:" + Write-Host "$changedFiles" + + $matchedFiles = @() + foreach ($pattern in $patterns) { + $matched = $changedFiles | Select-String -Pattern $pattern -SimpleMatch + if ($matched) { + $matchedFiles += $matched + } + } + if (($matchedFiles.Count -eq $changedFiles.Count) -or ($changedFiles.Count -eq 0)) { + return $true + } + return $false +} + +# This function sets a `MODULE` env var, required by IT tests, containing a comma separated list of modules for a given beats project (specified via the first argument). +# The list is built depending on directories that have changed under `modules/` excluding anything else such as asciidoc and png files. +# `MODULE` will empty if no changes apply. +function DefineModuleFromTheChangeSet($projectPath) { + $projectPathTransformed = $projectPath -replace '/', '\\' + $projectPathExclusion = "((?!^$projectPathTransformed\\\/).)*\$" + $exclude = @("^($projectPathExclusion|((?!\\/module\\/).)*\$|.*\\.asciidoc|.*\\.png)") + + $changedModules = '' + + $moduleDirs = Get-ChildItem -Directory "$projectPath\module" + foreach($moduleDir in $moduleDirs) { + if((ArePathsChanged($moduleDir)) -and !(AreChangedOnlyPaths($exclude))) { + if(!$changedModules) { + $changedModules = $moduleDir.Name + } + else { + $changedModules += ',' + $moduleDir.Name + } + } + } + + # TODO: remove this conditional when issue https://github.com/elastic/ingest-dev/issues/2993 gets resolved + if(!$changedModules) { + if($Env:BUILDKITE_PIPELINE_SLUG -eq 'beats-xpack-metricbeat') { + $Env:MODULE = "aws" + } + else { + $Env:MODULE = "kubernetes" + } + } + else { + # TODO: once https://github.com/elastic/ingest-dev/issues/2993 gets resolved, this should be the only thing we export + $Env:MODULE = $changedModules + } +} diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index db2fa2b0558..a925ec913cf 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -46,10 +46,6 @@ xpack_packetbeat_changeset=( "^x-pack/packetbeat/.*" ) -xpack_winlogbeat_changeset=( - "^x-pack/winlogbeat/.*" - ) - ci_changeset=( "^.buildkite/.*" ) @@ -84,9 +80,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-packetbeat") BEAT_CHANGESET_REFERENCE=${packetbeat_changeset[@]} ;; - "beats-winlogbeat") - BEAT_CHANGESET_REFERENCE=${winlogbeat_changeset[@]} - ;; "beats-xpack-metricbeat") BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} ;; @@ -519,9 +512,9 @@ if are_paths_changed "${packaging_changeset[@]}" ; then export PACKAGING_CHANGES="true" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" fi -check_and_set_beat_vars \ No newline at end of file +check_and_set_beat_vars diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index e1e2ec3e045..c07e537adf0 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -15,13 +15,16 @@ env: ASDF_MAGE_VERSION: 1.15.0 steps: - - group: "Mandatory Tests" - key: "xpack-winlogbeat-mandatory-tests" + - group: "x-pack/Winlogbeat Mandatory Tests" + key: "x-pack-winlogbeat-mandatory-tests" steps: - - label: ":windows: Xpack/Winlogbeat Win-2019 Unit (MODULE) Tests" + - label: ":windows: x-pack/Winlogbeat Win-2019 Unit (MODULE) Tests" key: "mandatory-win-2019-module-unit-tests" command: | + Import-Module ./.buildkite/scripts/changesets.psm1 + defineModuleFromTheChangeSet 'x-pack/winlogbeat' + Write-Output "~~~ Will run tests with env var MODULE=$$Env:MODULE" Set-Location -Path x-pack/winlogbeat mage build unitTest env: @@ -37,9 +40,9 @@ steps: - "x-pack/winlogbeat/build/*.json" notify: - github_commit_status: - context: "Xpack/Winlogbeat Win-2019 Unit (MODULE) Tests" + context: "x-pack/Winlogbeat Win-2019 Unit (MODULE) Tests" - - label: ":windows: Xpack/Winlogbeat Win-2016 Unit Tests" + - label: ":windows: x-pack/Winlogbeat Win-2016 Unit Tests" command: | Set-Location -Path x-pack/winlogbeat mage build unitTest @@ -55,9 +58,9 @@ steps: - "x-pack/winlogbeat/build/*.json" notify: - github_commit_status: - context: "Xpack/Winlogbeat Win-2016 Unit Tests" + context: "x-pack/Winlogbeat Win-2016 Unit Tests" - - label: ":windows: Xpack/Winlogbeat Win-2022 Unit Tests" + - label: ":windows: x-pack/Winlogbeat Win-2022 Unit Tests" command: | Set-Location -Path x-pack/winlogbeat mage build unitTest @@ -73,14 +76,14 @@ steps: - "x-pack/winlogbeat/build/*.json" notify: - github_commit_status: - context: "Xpack/Winlogbeat Win-2022 Unit Tests" + context: "x-pack/Winlogbeat Win-2022 Unit Tests" - group: "Extended Windows Tests" key: "extended-win-tests" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ steps: - - label: ":windows: Xpack/Winlogbeat Win-10 Unit Tests" + - label: ":windows: x-pack/Winlogbeat Win-10 Unit Tests" command: | Set-Location -Path x-pack/winlogbeat mage build unitTest @@ -96,9 +99,9 @@ steps: - "x-pack/winlogbeat/build/*.json" notify: - github_commit_status: - context: "Xpack/Winlogbeat Win-10 Unit Tests" + context: "x-pack/Winlogbeat Win-10 Unit Tests" - - label: ":windows: Xpack/Winlogbeat Win-11 Unit Tests" + - label: ":windows: x-pack/Winlogbeat Win-11 Unit Tests" command: | Set-Location -Path x-pack/winlogbeat mage build unitTest @@ -114,9 +117,9 @@ steps: - "x-pack/winlogbeat/build/*.json" notify: - github_commit_status: - context: "Xpack/Winlogbeat Win-11 Unit Tests" + context: "x-pack/Winlogbeat Win-11 Unit Tests" - - label: ":windows: Xpack/Winlogbeat Win-2019 Unit Tests" + - label: ":windows: x-pack/Winlogbeat Win-2019 Unit Tests" command: | Set-Location -Path x-pack/winlogbeat mage build unitTest @@ -140,10 +143,10 @@ steps: # this allows building DRA artifacts even if there is flakiness in mandatory tests if: build.env("BUILDKITE_PULL_REQUEST") != "false" depends_on: - - "xpack-winlogbeat-mandatory-tests" + - "x-pack-winlogbeat-mandatory-tests" - - group: "Xpack/Winlogbeat Packaging" - key: "xpack-winlogbeat-packaging" + - group: "x-pack/Winlogbeat Packaging" + key: "x-pack-winlogbeat-packaging" steps: - label: ":ubuntu: Packaging Linux" @@ -159,5 +162,4 @@ steps: PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" notify: - github_commit_status: - context: "Xpack/Winlogbeat Packaging" - + context: "x-pack/Winlogbeat Packaging" From 8f8f3137f2ed1a78a9db4d48831d6578831619f8 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Mon, 22 Apr 2024 12:40:42 +0300 Subject: [PATCH 202/313] Migrate packetbeat to static Buildkite pipeline (#39087) This commit refactors the packetbeat pipeline to the pipeline selector approach as laid out in #38783. Relates https://github.com/elastic/ingest-dev/issues/3072 --- .buildkite/hooks/pre-command | 1 - .buildkite/packetbeat/pipeline.packetbeat.yml | 268 +++++++++++++++--- .buildkite/pipeline.yml | 26 ++ .buildkite/scripts/common.sh | 23 +- .../scripts/generate_packetbeat_pipeline.sh | 241 ---------------- 5 files changed, 249 insertions(+), 310 deletions(-) delete mode 100755 .buildkite/scripts/generate_packetbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index cd6cc499c47..a014542c9c3 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -59,7 +59,6 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "heartbeat" "filebeat" "beats-metricbeat" - "beats-packetbeat" "beats-winlogbeat" "beats-winlogbeat" "beats-xpack-packetbeat" diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index 82630978bd3..c0f5c1e1a73 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -2,12 +2,12 @@ name: "beats-packetbeat" env: - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2004-aarch64" - BEATS_PROJECT_NAME: "packetbeat" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" + IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" @@ -17,52 +17,228 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - #Deps ASDF_MAGE_VERSION: 1.15.0 steps: - - input: "Input Parameters" - key: "input-run-all-stages" - fields: - - select: "Packetbeat - run_packetbeat" - key: "run_packetbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Packetbeat - run_packetbeat_arm_tests" - key: "run_packetbeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Packetbeat - run_packetbeat_macos_tests" - key: "run_packetbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - if: "build.source == 'ui'" + - group: "packetbeat Mandatory Tests" + key: "packetbeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + command: | + cd packetbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Ubuntu Unit Tests" + + - label: ":rhel: RHEL9 Unit Tests" + command: | + cd packetbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_RHEL9_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: RHEL9 Unit Tests" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path packetbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path packetbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Windows 2022 Unit Tests" + + - group: "Extended Windows Tests" + key: "packetbeat-extended-windows-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path packetbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Extended Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path packetbeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Extended Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path packetbeat + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Extended Windows 2019 Unit Tests" + + - group: "Extended Tests" + key: "extended-tests" + steps: + - label: ":mac: MacOS x86_64 Unit Tests" + key: "macos-x86-64-unit-tests-extended" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd packetbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Extended MacOS x86_64 Unit Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + key: "macos-arm64-unit-tests-extended" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS|arm).*/ + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd packetbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Extended MacOS arm64 Unit Tests" + + - label: ":linux: Ubuntu ARM Unit Tests" + key: "linux-arm64-unit-tests-extended" + command: "cd packetbeat && mage build unitTest" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "packetbeat/build/*.xml" + - "packetbeat/build/*.json" + notify: + - github_commit_status: + context: "packetbeat: Extended Ubuntu ARM Unit Tests" + - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic packetbeat pipeline" - key: "packetbeat-pipeline" - command: ".buildkite/scripts/generate_packetbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: "packetbeat-mandatory-tests" + + - group: "Packetbeat Packaging" + key: "packaging" + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd packetbeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "packetbeat: Packaging Linux" + + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: | + cd packetbeat + mage package + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "packetbeat: Packaging Linux ARM" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 69e24a41f21..7deb787b6af 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -392,3 +392,29 @@ steps: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Trigger Packetbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - packetbeat/ + - .buildkite/packetbeat/pipeline.packetbeat.yml + - .buildkite/scripts/ + - .buildkite/hooks/ + #OSS + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/ + - testing/ + config: + trigger: "beats-packetbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index a925ec913cf..2aebe4b5638 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -13,27 +13,20 @@ OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat [ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" -[ -z "${run_packetbeat+x}" ] && run_packetbeat="$(buildkite-agent meta-data get run_packetbeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" [ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" -[ -z "${run_packetbeat_arm_tests+x}" ] && run_packetbeat_arm_tests="$(buildkite-agent meta-data get run_packetbeat_arm_tests --default "false")" [ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" # define if needed run MacOS platform-specific tests for the particular beat -[ -z "${run_packetbeat_macos_tests+x}" ] && run_packetbeat_macos_tests="$(buildkite-agent meta-data get run_packetbeat_macos_tests --default "false")" [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" [ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" -packetbeat_changeset=( - "^packetbeat/.*" - ) - winlogbeat_changeset=( "^winlogbeat/.*" ) @@ -77,9 +70,6 @@ packaging_changeset=( ) case "${BUILDKITE_PIPELINE_SLUG}" in - "beats-packetbeat") - BEAT_CHANGESET_REFERENCE=${packetbeat_changeset[@]} - ;; "beats-xpack-metricbeat") BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} ;; @@ -323,20 +313,9 @@ are_conditions_met_mandatory_tests() { return 1 } -are_conditions_met_arm_tests() { - if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" ]]; then - if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_ARM_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_ARM_LABEL} || "${!TRIGGER_SPECIFIC_ARM_TESTS}" == "true" ]]; then - return 0 - fi - fi - fi - return 1 -} - are_conditions_met_macos_tests() { if are_conditions_met_mandatory_tests; then #from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/Jenkinsfile#L145-L171 - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-packetbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then + if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then if [[ "${GITHUB_PR_TRIGGER_COMMENT}" == "${BEATS_GH_MACOS_COMMENT}" || "${GITHUB_PR_LABELS}" =~ ${BEATS_GH_MACOS_LABEL} || "${!TRIGGER_SPECIFIC_MACOS_TESTS}" == "true" ]]; then # from https://github.com/elastic/beats/blob/c5e79a25d05d5bdfa9da4d187fe89523faa42afc/metricbeat/Jenkinsfile.yml#L3-L12 return 0 fi diff --git a/.buildkite/scripts/generate_packetbeat_pipeline.sh b/.buildkite/scripts/generate_packetbeat_pipeline.sh deleted file mode 100755 index 2a5011e46ac..00000000000 --- a/.buildkite/scripts/generate_packetbeat_pipeline.sh +++ /dev/null @@ -1,241 +0,0 @@ -#!/bin/bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.packetbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":rhel: RHEL9 Unit Tests" - key: "mandatory-rhel9-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_RHEL9_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - - - group: "Extended Windowds Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: Ubuntu ARM Unit Tests" - key: "extended-arm64-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" - -YAML -fi - - -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName From 8e9a2761d765bb3e106b897bb19bd6624974b723 Mon Sep 17 00:00:00 2001 From: Taylor Swanson <90622908+taylor-swanson@users.noreply.github.com> Date: Mon, 22 Apr 2024 08:32:47 -0500 Subject: [PATCH 203/313] [libbeat] Fix parsing of RFC 3164 process IDs in syslog processor (#38982) - The pattern for parsing process IDs was too relaxed and would match everything between the first opening and the last closing square bracket in a message. If the message included multiple closing square brackets, the process ID would be set to not only the process ID, but also whatever leads up to the last closing square bracket. - The pattern has now been locked down to only digits. - Added test case. --- CHANGELOG.next.asciidoc | 1 + libbeat/reader/syslog/parser/rfc3164.rl | 2 +- libbeat/reader/syslog/rfc3164_gen.go | 60 +++---------------------- libbeat/reader/syslog/rfc3164_test.go | 13 ++++++ 4 files changed, 20 insertions(+), 56 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index c9d0f812773..c28b56a184e 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -91,6 +91,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Change cache processor documentation from `write_period` to `write_interval`. {pull}38561[38561] - Fix cache processor expiries heap cleanup on partial file writes. {pull}38561[38561] - Fix cache processor expiries infinite growth when large a large TTL is used and recurring keys are cached. {pull}38561[38561] +- Fix parsing of RFC 3164 process IDs in syslog processor. {issue}38947[38947] {pull}38982[38982] *Auditbeat* - Set field types to correctly match ECS in sessionmd processor {issue}38955[38955] {pull}38994[38994] diff --git a/libbeat/reader/syslog/parser/rfc3164.rl b/libbeat/reader/syslog/parser/rfc3164.rl index 0dac7731404..709c049eb06 100644 --- a/libbeat/reader/syslog/parser/rfc3164.rl +++ b/libbeat/reader/syslog/parser/rfc3164.rl @@ -16,7 +16,7 @@ hostname = graph+ >tok %set_hostname; tag = (print -- [ :\[])+ >tok %set_tag; - content_value = print+ >tok %set_content; + content_value = digit+ >tok %set_content; content = '[' content_value ']'; msg = (tag content? ':' sp)? any+ >tok %set_msg; }%% diff --git a/libbeat/reader/syslog/rfc3164_gen.go b/libbeat/reader/syslog/rfc3164_gen.go index 852ec066f59..b4c4146ba82 100644 --- a/libbeat/reader/syslog/rfc3164_gen.go +++ b/libbeat/reader/syslog/rfc3164_gen.go @@ -80,10 +80,6 @@ func parseRFC3164(data string, loc *time.Location) (message, error) { goto st_case_29 case 30: goto st_case_30 - case 31: - goto st_case_31 - case 32: - goto st_case_32 case 7: goto st_case_7 case 8: @@ -317,7 +313,7 @@ func parseRFC3164(data string, loc *time.Location) (message, error) { goto _test_eof28 } st_case_28: - if 32 <= data[p] && data[p] <= 126 { + if 48 <= data[p] && data[p] <= 57 { goto tr37 } goto st24 @@ -334,7 +330,7 @@ func parseRFC3164(data string, loc *time.Location) (message, error) { if data[p] == 93 { goto tr39 } - if 32 <= data[p] && data[p] <= 126 { + if 48 <= data[p] && data[p] <= 57 { goto st29 } goto st24 @@ -342,56 +338,16 @@ func parseRFC3164(data string, loc *time.Location) (message, error) { m.setContent(data[tok:p]) - goto st30 - tr42: - - m.setContent(data[tok:p]) - - tok = p - goto st30 st30: if p++; p == pe { goto _test_eof30 } st_case_30: - switch data[p] { - case 58: - goto st31 - case 93: - goto tr39 - } - if 32 <= data[p] && data[p] <= 126 { - goto st29 - } - goto st24 - st31: - if p++; p == pe { - goto _test_eof31 - } - st_case_31: - switch data[p] { - case 32: - goto st32 - case 93: - goto tr39 - } - if 33 <= data[p] && data[p] <= 126 { - goto st29 + if data[p] == 58 { + goto st26 } goto st24 - st32: - if p++; p == pe { - goto _test_eof32 - } - st_case_32: - if data[p] == 93 { - goto tr42 - } - if 32 <= data[p] && data[p] <= 126 { - goto tr37 - } - goto tr11 st7: if p++; p == pe { goto _test_eof7 @@ -816,12 +772,6 @@ func parseRFC3164(data string, loc *time.Location) (message, error) { _test_eof30: cs = 30 goto _test_eof - _test_eof31: - cs = 31 - goto _test_eof - _test_eof32: - cs = 32 - goto _test_eof _test_eof7: cs = 7 goto _test_eof @@ -879,7 +829,7 @@ func parseRFC3164(data string, loc *time.Location) (message, error) { } if p == eof { switch cs { - case 24, 25, 26, 27, 28, 29, 30, 31, 32: + case 24, 25, 26, 27, 28, 29, 30: m.setMsg(data[tok:p]) diff --git a/libbeat/reader/syslog/rfc3164_test.go b/libbeat/reader/syslog/rfc3164_test.go index d1c75fe574e..a2c80e8c263 100644 --- a/libbeat/reader/syslog/rfc3164_test.go +++ b/libbeat/reader/syslog/rfc3164_test.go @@ -88,6 +88,19 @@ func TestParseRFC3164(t *testing.T) { msg: "message", }, }, + "ok-procid-with-square-brackets-msg": { + in: "<114>Apr 12 13:30:01 aaaaaa001.adm.domain aaaaaa001[25259]: my.some.domain 10.11.12.13 - USERNAME [12/Apr/2024:13:29:59.993 +0200] /skodas \"GET /skodas/group/pod-documentation/aaa HTTP/1.1\" 301 301 290bytes 1 10327", + want: message{ + timestamp: mustParseTime(time.Stamp, "Apr 12 13:30:01", time.Local), + priority: 114, + facility: 14, + severity: 2, + hostname: "aaaaaa001.adm.domain", + process: "aaaaaa001", + pid: "25259", + msg: "my.some.domain 10.11.12.13 - USERNAME [12/Apr/2024:13:29:59.993 +0200] /skodas \"GET /skodas/group/pod-documentation/aaa HTTP/1.1\" 301 301 290bytes 1 10327", + }, + }, "err-pri-not-a-number": { in: "Oct 11 22:14:15 test-host this is the message", want: message{ From b04f48b102f7c3253bed3050e7a469f849ceb969 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Mon, 22 Apr 2024 16:42:01 +0200 Subject: [PATCH 204/313] Packaging pipeline resource (#39081) * Packaging pipieline resource * Revetred agentbeat pipeline deletion * Cleanup --- .buildkite/packaging.pipeline.yml | 0 catalog-info.yaml | 36 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 .buildkite/packaging.pipeline.yml diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/catalog-info.yaml b/catalog-info.yaml index 92af68f805f..c9fe5b4f05c 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1016,3 +1016,39 @@ spec: access_level: BUILD_AND_READ everyone: access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: beats-packaging-pipeline + description: Buildkite pipeline for packaging and publishing to DRA + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-packaging-pipeline +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-packaging-pipeline + description: Pipeline for Beats packaging and publishing DRA artifacts + spec: + repository: elastic/beats + pipeline_file: ".buildkite/packaging.pipeline.yml" + branch_configuration: "main 8.* 7.17" + cancel_intermediate_builds: false + skip_intermediate_builds: false + provider_settings: + trigger_mode: none + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + release-eng: + access_level: BUILD_AND_READ + everyone: + access_level: READ_ONLY From b34334fd0c9f210ffa13e21361098fada26da77c Mon Sep 17 00:00:00 2001 From: Michael Wolf Date: Mon, 22 Apr 2024 10:03:08 -0700 Subject: [PATCH 205/313] Remove ReplaceFields config from add_session_metadata processor (#39134) The ReplaceFields config option was used to support compatibility with session viewer in Kibana that didn't support auditbeat fields. Kibana has now been updated, and this config option isn't needed. --- .../sessionmd/add_session_metadata.go | 45 +------------------ .../sessionmd/add_session_metadata_test.go | 21 +++------ .../auditbeat/processors/sessionmd/config.go | 10 ++--- 3 files changed, 13 insertions(+), 63 deletions(-) diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go index efcfdc96778..5b934980494 100644 --- a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go @@ -11,7 +11,6 @@ import ( "fmt" "reflect" "strconv" - "time" "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/processors" @@ -113,8 +112,8 @@ func (p *addSessionMetadata) Run(ev *beat.Event) (*beat.Event, error) { } func (p *addSessionMetadata) String() string { - return fmt.Sprintf("%v=[backend=%s, pid_field=%s, replace_fields=%t]", - processorName, p.config.Backend, p.config.PIDField, p.config.ReplaceFields) + return fmt.Sprintf("%v=[backend=%s, pid_field=%s]", + processorName, p.config.Backend, p.config.PIDField) } func (p *addSessionMetadata) enrich(ev *beat.Event) (*beat.Event, error) { @@ -148,12 +147,6 @@ func (p *addSessionMetadata) enrich(ev *beat.Event) (*beat.Event, error) { return nil, fmt.Errorf("merging enriched fields with event: %w", err) } result.Fields["process"] = m - - if p.config.ReplaceFields { - if err := p.replaceFields(result); err != nil { - return nil, fmt.Errorf("replace fields: %w", err) - } - } return result, nil } @@ -184,40 +177,6 @@ func pidToUInt32(value interface{}) (pid uint32, err error) { return pid, nil } -// replaceFields replaces event fields with values suitable user with the session viewer in Kibana -// The current version of session view in Kibana expects different values than what are used by auditbeat -// for some fields. This function converts these field to have values that will work with session view. -// -// This function is temporary, and can be removed when this Kibana issue is completed: https://github.com/elastic/kibana/issues/179396. -func (p *addSessionMetadata) replaceFields(ev *beat.Event) error { - kind, err := ev.Fields.GetValue("event.kind") - if err != nil { - return err - } - isAuditdEvent, err := ev.Fields.HasKey("auditd") - if err != nil { - return err - } - if kind == "event" && isAuditdEvent { - // process start - syscall, err := ev.Fields.GetValue("auditd.data.syscall") - if err != nil { - return nil //nolint:nilerr // processor can be called on unsupported events; not an error - } - switch syscall { - case "execveat", "execve": - ev.Fields.Put("event.action", []string{"exec", "fork"}) - ev.Fields.Put("event.type", []string{"start"}) - - case "exit_group": - ev.Fields.Put("event.action", []string{"end"}) - ev.Fields.Put("event.type", []string{"end"}) - ev.Fields.Put("process.end", time.Now()) - } - } - return nil -} - func tryToMapStr(v interface{}) (mapstr.M, bool) { switch m := v.(type) { case mapstr.M: diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go index 1ef06c92b2e..602f80f5836 100644 --- a/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata_test.go @@ -32,8 +32,7 @@ var ( { testName: "enrich process", config: config{ - ReplaceFields: false, - PIDField: "process.pid", + PIDField: "process.pid", }, mockProcesses: []types.ProcessExecEvent{ { @@ -94,8 +93,7 @@ var ( { testName: "no PID field in event", config: config{ - ReplaceFields: false, - PIDField: "process.pid", + PIDField: "process.pid", }, input: beat.Event{ Fields: mapstr.M{ @@ -113,8 +111,7 @@ var ( { testName: "PID not number", config: config{ - ReplaceFields: false, - PIDField: "process.pid", + PIDField: "process.pid", }, input: beat.Event{ Fields: mapstr.M{ @@ -133,8 +130,7 @@ var ( { testName: "PID not in DB", config: config{ - ReplaceFields: false, - PIDField: "process.pid", + PIDField: "process.pid", }, input: beat.Event{ Fields: mapstr.M{ @@ -154,8 +150,7 @@ var ( testName: "process field not in event", // This event, without a "process" field, is not supported by enrich, it should be handled gracefully config: config{ - ReplaceFields: false, - PIDField: "action.pid", + PIDField: "action.pid", }, input: beat.Event{ Fields: mapstr.M{ @@ -170,8 +165,7 @@ var ( testName: "process field not mapstr", // Unsupported process field type should be handled gracefully config: config{ - ReplaceFields: false, - PIDField: "action.pid", + PIDField: "action.pid", }, input: beat.Event{ Fields: mapstr.M{ @@ -189,8 +183,7 @@ var ( { testName: "enrich event with map[string]any process field", config: config{ - ReplaceFields: false, - PIDField: "process.pid", + PIDField: "process.pid", }, mockProcesses: []types.ProcessExecEvent{ { diff --git a/x-pack/auditbeat/processors/sessionmd/config.go b/x-pack/auditbeat/processors/sessionmd/config.go index 31c07c9065f..1aaa354c97d 100644 --- a/x-pack/auditbeat/processors/sessionmd/config.go +++ b/x-pack/auditbeat/processors/sessionmd/config.go @@ -8,15 +8,13 @@ package sessionmd // Config for add_session_metadata processor. type config struct { - Backend string `config:"backend"` - ReplaceFields bool `config:"replace_fields"` - PIDField string `config:"pid_field"` + Backend string `config:"backend"` + PIDField string `config:"pid_field"` } func defaultConfig() config { return config{ - Backend: "auto", - ReplaceFields: false, - PIDField: "process.pid", + Backend: "auto", + PIDField: "process.pid", } } From 3e373f4478678fe163f82a810f8f1c3956e545ce Mon Sep 17 00:00:00 2001 From: Craig MacKenzie Date: Mon, 22 Apr 2024 16:06:57 -0400 Subject: [PATCH 206/313] Update test versions to 8.13.2 (#39136) --- metricbeat/docker-compose.yml | 12 ++++++------ x-pack/metricbeat/docker-compose.yml | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/metricbeat/docker-compose.yml b/metricbeat/docker-compose.yml index ab1ee57979f..4eec70d9bb0 100644 --- a/metricbeat/docker-compose.yml +++ b/metricbeat/docker-compose.yml @@ -17,11 +17,11 @@ services: # Used by base tests elasticsearch: - image: docker.elastic.co/integrations-ci/beats-elasticsearch:${ELASTICSEARCH_VERSION:-8.12.1}-1 + image: docker.elastic.co/integrations-ci/beats-elasticsearch:${ELASTICSEARCH_VERSION:-8.13.2}-1 build: context: ./module/elasticsearch/_meta args: - ELASTICSEARCH_VERSION: ${ELASTICSEARCH_VERSION:-8.12.1} + ELASTICSEARCH_VERSION: ${ELASTICSEARCH_VERSION:-8.13.2} environment: - "ES_JAVA_OPTS=-Xms256m -Xmx256m" - "transport.host=127.0.0.1" @@ -38,11 +38,11 @@ services: # Used by base tests kibana: - image: docker.elastic.co/integrations-ci/beats-kibana:${KIBANA_VERSION:-8.12.1}-1 + image: docker.elastic.co/integrations-ci/beats-kibana:${KIBANA_VERSION:-8.13.2}-1 build: context: ./module/kibana/_meta args: - KIBANA_VERSION: ${KIBANA_VERSION:-8.12.1} + KIBANA_VERSION: ${KIBANA_VERSION:-8.13.2} healthcheck: test: ["CMD-SHELL", "curl -u beats:testing -s http://localhost:5601/api/status?v8format=true | grep -q '\"overall\":{\"level\":\"available\"'"] retries: 600 @@ -53,11 +53,11 @@ services: # Used by base tests metricbeat: - image: docker.elastic.co/integrations-ci/beats-metricbeat:${BEAT_VERSION:-8.12.1}-1 + image: docker.elastic.co/integrations-ci/beats-metricbeat:${BEAT_VERSION:-8.13.2}-1 build: context: ./module/beat/_meta args: - BEAT_VERSION: ${BEAT_VERSION:-8.12.1} + BEAT_VERSION: ${BEAT_VERSION:-8.13.2} command: '-e' ports: - 5066:5066 diff --git a/x-pack/metricbeat/docker-compose.yml b/x-pack/metricbeat/docker-compose.yml index 42b946e4221..0bd47337aa1 100644 --- a/x-pack/metricbeat/docker-compose.yml +++ b/x-pack/metricbeat/docker-compose.yml @@ -24,11 +24,11 @@ services: kibana: # Copied configuration from OSS metricbeat because services with depends_on # cannot be extended with extends - image: docker.elastic.co/integrations-ci/beats-kibana:${KIBANA_VERSION:-8.12.1}-1 + image: docker.elastic.co/integrations-ci/beats-kibana:${KIBANA_VERSION:-8.13.2}-1 build: context: ../../metricbeat/module/kibana/_meta args: - KIBANA_VERSION: ${KIBANA_VERSION:-8.12.1} + KIBANA_VERSION: ${KIBANA_VERSION:-8.13.2} depends_on: - elasticsearch ports: From ddddf8022c8e6ebdb72d314f0c5502baa0318077 Mon Sep 17 00:00:00 2001 From: Aleksandr Maus Date: Mon, 22 Apr 2024 17:44:52 -0400 Subject: [PATCH 207/313] Osquerybeat: Strip osqueryd binary for linux (#38952) * Osquerybeat: Strip osqueryd binary for linux * Improve code comment, fix a typo * Address code review request to make it compatible with agentbeat build * Remove unused function --- dev-tools/mage/crossbuild.go | 13 +++++ x-pack/osquerybeat/magefile.go | 93 ++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/dev-tools/mage/crossbuild.go b/dev-tools/mage/crossbuild.go index 94b972ea25e..ddeabbfdb79 100644 --- a/dev-tools/mage/crossbuild.go +++ b/dev-tools/mage/crossbuild.go @@ -333,6 +333,19 @@ func (b GolangCrossBuilder) Build() error { "--env", fmt.Sprintf("SNAPSHOT=%v", Snapshot), "-v", repoInfo.RootDir+":"+mountPoint, "-w", workDir, + ) + + // Ensure the proper platform is passed + // This fixes an issue where during arm64 linux build for the currently used docker image + // docker.elastic.co/beats-dev/golang-crossbuild:1.21.9-arm the image for amd64 arch is pulled + // and causes problems when using native arch tools on the binaries that are built for arm64 arch. + if strings.HasPrefix(b.Platform, "linux/") { + args = append(args, + "--platform", b.Platform, + ) + } + + args = append(args, image, // Arguments for docker crossbuild entrypoint. For details see diff --git a/x-pack/osquerybeat/magefile.go b/x-pack/osquerybeat/magefile.go index ae5c4c9874b..d8a9dee310b 100644 --- a/x-pack/osquerybeat/magefile.go +++ b/x-pack/osquerybeat/magefile.go @@ -7,16 +7,23 @@ package main import ( + "context" "fmt" "os" "path/filepath" "runtime" + "strings" "time" "github.com/magefile/mage/mg" devtools "github.com/elastic/beats/v7/dev-tools/mage" "github.com/elastic/beats/v7/dev-tools/mage/target/build" + + "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/command" + "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/distro" + "github.com/elastic/beats/v7/x-pack/osquerybeat/internal/fileutil" + osquerybeat "github.com/elastic/beats/v7/x-pack/osquerybeat/scripts/mage" // mage:import @@ -87,9 +94,95 @@ func Clean() error { return devtools.Clean(paths) } +func execCommand(ctx context.Context, name string, args ...string) error { + ps := strings.Join(append([]string{name}, args...), " ") + fmt.Println(ps) + output, err := command.Execute(ctx, name, args...) + if err != nil { + fmt.Println(ps, ", failed: ", err) + return err + } + fmt.Print(output) + return err +} + +// stripLinuxOsqueryd Strips osqueryd binary, that is not stripped in linux tar.gz distro +func stripLinuxOsqueryd() error { + if os.Getenv("GOOS") != "linux" { + return nil + } + + // Check that this step is called during x-pack/osquerybeat/ext/osquery-extension build + cwd, err := os.Getwd() + if err != nil { + return err + } + + // Strip osqueryd only once when osquery-extension is built + // There are two build paths at the moment both through GolangCrossBuild + // 1. Standlone osquerybeat package (this function is called twice: for osquerybeat and osquery-extension) + // 2. Agentbeat package, this function is only called once for osquery-extension + if !strings.HasSuffix(cwd, "/osquery-extension") { + return nil + } + + ctx := context.Background() + + osArchs := osquerybeat.OSArchs(devtools.Platforms) + + strip := func(oquerydPath string) error { + ok, err := fileutil.FileExists(oquerydPath) + if err != nil { + return err + } + if ok { + if err := execCommand(ctx, "strip", oquerydPath); err != nil { + return err + } + } + return nil + } + + for _, osarch := range osArchs { + // Skip everything but matching linux arch + if osarch.OS != os.Getenv("GOOS") || osarch.Arch != os.Getenv("GOARCH") { + continue + } + + // Strip osqueryd + // There are two scenarios where the build path is created depending on the type of build + // 1. Standlone osquerybeat build: the osqueryd binaries are downloaded into osquerybeat/build/data/install/[GOOS]/[GOARCH] + // 2. Agentbeat build: the osqueryd binaries are downloaded agentbeat/build/data/install/[GOOS]/[GOARCH] + + // This returns something like build/data/install/linux/amd64/osqueryd + querydRelativePath := distro.OsquerydPath(distro.GetDataInstallDir(osarch)) + + // Checking and stripping osqueryd binary and both paths osquerybeat/build and agentbeat/build + // because at the moment it's unclear if this step was initiated from osquerybeat or agentbeat build + osquerybeatPath := filepath.Clean(filepath.Join(cwd, "../..", querydRelativePath)) + err = strip(osquerybeatPath) + if err != nil { + return err + } + + agentbeatPath := filepath.Clean(filepath.Join(cwd, "../../../agentbeat", querydRelativePath)) + err = strip(agentbeatPath) + if err != nil { + return err + } + } + + return nil +} + // GolangCrossBuild build the Beat binary inside of the golang-builder. // Do not use directly, use crossBuild instead. func GolangCrossBuild() error { + // Strip linux osqueryd binary + if err := stripLinuxOsqueryd(); err != nil { + return err + } + return devtools.GolangCrossBuild(devtools.DefaultGolangCrossBuildArgs()) } From 27b4bae916d7cd9fe13b6246424c717901bd3ac1 Mon Sep 17 00:00:00 2001 From: Siarhei Harbuz <87968844+sharbuz@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:36:12 +0300 Subject: [PATCH 208/313] move x-pack/packetbeat to static pipeline (#39072) * move x-pack/packetbeat to static pipeline * Update pull-requests.json * change pipeline.yml * update pipeline.xpack.packetbeat.yml * fix typo * fix dependency * fix remarks * Update common.sh * Update common.sh * Update common.sh * Update common.sh * fix remarks * fix remarks * fix remarks --- .buildkite/hooks/pre-command | 1 - .buildkite/pipeline.yml | 27 ++ .buildkite/pull-requests.json | 16 - .buildkite/scripts/common.sh | 10 - .../generate_xpack_packetbeat_pipeline.sh | 285 --------------- .../x-pack/pipeline.xpack.packetbeat.yml | 327 +++++++++++++++--- 6 files changed, 307 insertions(+), 359 deletions(-) delete mode 100644 .buildkite/scripts/generate_xpack_packetbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index a014542c9c3..7144331fc28 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -61,7 +61,6 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "beats-metricbeat" "beats-winlogbeat" "beats-winlogbeat" - "beats-xpack-packetbeat" "beats-xpack-winlogbeat" "beats-xpack-dockerlogbeat" "beats-xpack-auditbeat" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 7deb787b6af..00ce04b71d2 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -367,6 +367,33 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger x-pack/packetbeat" + plugins: + - monorepo-diff#v1.0.1: + diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" + watch: + - path: + - x-pack/packetbeat/ + - .buildkite/x-pack/pipeline.xpack.packetbeat.yml + - .buildkite/scripts/ + - .buildkite/hooks/ + # x-pack + - go.mod + - pytest.ini + - dev-tools/ + - libbeat/ + - testing/ + - x-pack/libbeat/ + config: + trigger: "beats-xpack-packetbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + env: + - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} + - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} + - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Trigger Winlogbeat" plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index c98c1f07578..b79646acd1b 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -47,22 +47,6 @@ "skip_target_branches": [ ], "skip_ci_on_only_changed": [ ], "always_require_ci_on_changed": ["^winlogbeat/.*", ".buildkite/winlogbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] - }, - { - "enabled": true, - "pipelineSlug": "beats-xpack-packetbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test x-pack/packetbeat$", - "always_trigger_comment_regex": "^/test x-pack/packetbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^x-pack/packetbeat/.*", "^.buildkite/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*", "^x-pack/libbeat/.*"] } ] } \ No newline at end of file diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 2aebe4b5638..9bd5cf93540 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -14,15 +14,12 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run the whole pipeline for the particular beat [ -z "${run_filebeat+x}" ] && run_filebeat="$(buildkite-agent meta-data get run_filebeat --default "false")" [ -z "${run_xpack_metricbeat+x}" ] && run_xpack_metricbeat="$(buildkite-agent meta-data get run_xpack_metricbeat --default "false")" -[ -z "${run_xpack_packetbeat+x}" ] && run_xpack_packetbeat="$(buildkite-agent meta-data get run_xpack_packetbeat --default "false")" # define if needed run ARM platform-specific tests for the particular beat [ -z "${run_filebeat_arm_tests+x}" ] && run_filebeat_arm_tests="$(buildkite-agent meta-data get run_filebeat_arm_tests --default "false")" -[ -z "${run_xpack_packetbeat_arm_tests+x}" ] && run_xpack_packetbeat_arm_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_arm_tests --default "false")" # define if needed run MacOS platform-specific tests for the particular beat [ -z "${run_xpack_metricbeat_macos_tests+x}" ] && run_xpack_metricbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_macos_tests --default "false")" -[ -z "${run_xpack_packetbeat_macos_tests+x}" ] && run_xpack_packetbeat_macos_tests="$(buildkite-agent meta-data get run_xpack_packetbeat_macos_tests --default "false")" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" @@ -35,10 +32,6 @@ xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" ) -xpack_packetbeat_changeset=( - "^x-pack/packetbeat/.*" - ) - ci_changeset=( "^.buildkite/.*" ) @@ -73,9 +66,6 @@ case "${BUILDKITE_PIPELINE_SLUG}" in "beats-xpack-metricbeat") BEAT_CHANGESET_REFERENCE=${xpack_metricbeat_changeset[@]} ;; - "beats-xpack-packetbeat") - BEAT_CHANGESET_REFERENCE=${xpack_packetbeat_changeset[@]} - ;; *) echo "~~~ The changeset for the ${BUILDKITE_PIPELINE_SLUG} pipeline hasn't been defined yet." ;; diff --git a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh b/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh deleted file mode 100644 index 97f37ca734b..00000000000 --- a/.buildkite/scripts/generate_xpack_packetbeat_pipeline.sh +++ /dev/null @@ -1,285 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.xpack-packetbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - label: ":linux: Ubuntu Unit Tests" - key: "mandatory-linux-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu Unit Tests" - - - label: ":linux: Ubuntu System Tests" - key: "mandatory-linux-system-test" - command: "cd $BEATS_PROJECT_NAME && mage systemTest" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu System Tests" - - - label: ":rhel: RHEL9 Unit Tests" - key: "mandatory-rhel9-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "gcp" - image: "${IMAGE_RHEL9_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: RHEL9 Unit Tests" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - - - label: ":windows: Windows 2022 System Tests" - skip: "see https://github.com/elastic/beats/issues/38142" - key: "mandatory-win-2022-system-tests" - command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - -## TODO: this condition will be changed in the Phase 3 of the Migration Plan https://docs.google.com/document/d/1IPNprVtcnHlem-uyGZM0zGzhfUuFAh4LeSl9JFHMSZQ/edit#heading=h.sltz78yy249h - - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - - - label: ":windows: Windows 10 System Tests" - skip: "see https://github.com/elastic/beats/issues/38142" - key: "extended-win-10-system-tests" - command: ".buildkite/scripts/win_unit_tests.ps1 systemtest" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -if are_conditions_met_arm_tests || are_conditions_met_macos_tests ; then - cat >> $pipelineName <<- YAML - - - group: "Extended Tests" - key: "extended-tests" - steps: - -YAML -fi - -if are_conditions_met_macos_tests; then - cat >> $pipelineName <<- YAML - - - label: ":mac: MacOS Unit Tests" - key: "extended-macos-unit-tests" - command: ".buildkite/scripts/unit_tests.sh" - agents: - provider: "orka" - imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: MacOS Unit Tests" - -YAML -fi - -if are_conditions_met_arm_tests; then - cat >> $pipelineName <<- YAML - - label: ":linux: Ubuntu ARM Unit Tests" - key: "extended-arm64-unit-test" - command: "cd $BEATS_PROJECT_NAME && mage build unitTest" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Ubuntu ARM Unit Tests" - -YAML -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - - label: ":linux: Packaging ARM" - key: "packaging-arm" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" - instanceType: "${AWS_ARM_INSTANCE_TYPE}" - env: - PLATFORMS: "${PACKAGING_ARM_PLATFORMS}" - PACKAGES: "docker" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux ARM" - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 5e3ce87e2bf..77fdf2af848 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -3,7 +3,6 @@ name: "beats-xpack-packetbeat" env: AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" - BEATS_PROJECT_NAME: "x-pack/packetbeat" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" @@ -18,54 +17,288 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" - #Packaging - PACKAGING_ARM_PLATFORMS: "linux/arm64" - PACKAGING_PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" - #Deps ASDF_MAGE_VERSION: 1.15.0 steps: + - group: "x-pack/packetbeat Mandatory Tests" + key: "x-pack-packetbeat-mandatory-tests" + steps: + - label: ":linux: Ubuntu Unit Tests" + key: "mandatory-linux-unit-test" + command: | + cd x-pack/packetbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Ubuntu Unit Tests" + + - label: ":linux: Ubuntu System Tests" + key: "mandatory-linux-system-test" + command: | + cd x-pack/packetbeat + mage systemTest + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Ubuntu System Tests" + + - label: ":rhel: RHEL9 Unit Tests" + key: "mandatory-rhel9-unit-test" + command: | + cd x-pack/packetbeat + mage build unitTest + agents: + provider: "gcp" + image: "${IMAGE_RHEL9_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: RHEL9 Unit Tests" + + - label: ":windows: Windows 2016 Unit Tests" + command: | + Set-Location -Path x-pack/packetbeat + mage build unitTest + key: "mandatory-win-2016-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2016}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Windows 2016 Unit Tests" + + - label: ":windows: Windows 2022 Unit Tests" + command: | + Set-Location -Path x-pack/packetbeat + mage build unitTest + key: "mandatory-win-2022-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machine_type: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Windows 2022 Unit Tests" + + - label: ":windows: Windows 2022 System Tests" + key: "mandatory-win-2022-system-tests" + skip: "skipping due to elastic/beats#38142" + command: | + Set-Location -Path x-pack/packetbeat + mage systemTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_2022}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Windows 2022 System Tests" + + - group: "x-pack/packetbeat Extended Windows Tests" + key: "x-pack-packetbeat-extended-win-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: + - label: ":windows: Windows 10 Unit Tests" + command: | + Set-Location -Path x-pack/packetbeat + mage build unitTest + key: "extended-win-10-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Windows 10 Unit Tests" + + - label: ":windows: Windows 11 Unit Tests" + command: | + Set-Location -Path x-pack/packetbeat + mage build unitTest + key: "extended-win-11-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_11}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Windows 11 Unit Tests" + + - label: ":windows: Windows 2019 Unit Tests" + command: | + Set-Location -Path x-pack/packetbeat + mage build unitTest + key: "extended-win-2019-unit-tests" + agents: + provider: "gcp" + image: "${IMAGE_WIN_2019}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Windows 2019 Unit Tests" + + - label: ":windows: Windows 10 System Tests" + key: "extended-win-10-system-tests" + skip: "skipping due to elastic/beats#38142" + command: | + Set-Location -Path x-pack/packetbeat + mage systemTest + agents: + provider: "gcp" + image: "${IMAGE_WIN_10}" + machineType: "${GCP_WIN_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Windows 2022 System Tests" + + - group: "x-pack/packetbeat Linux arm Extended Tests" + key: "x-pack-packetbeat-extended-linux-arm-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + steps: + - label: ":linux: Ubuntu ARM Unit Tests" + key: "extended-arm64-unit-test" + command: | + cd x-pack/packetbeat + mage build unitTest + if: build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Ubuntu ARM Unit Tests" + + - group: "x-pack/packetbeat MacOS Extended Tests" + key: "x-pack-packetbeat-extended-macos-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: + - label: ":mac: MacOS Unit Tests" + key: "extended-macos-unit-tests" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/packetbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_X86_64}" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: MacOS Unit Tests" + + - label: ":mac: MacOS arm64 Unit Tests" + key: "macos-arm64-unit-tests-extended" + command: | + set -euo pipefail + source .buildkite/scripts/install_macos_tools.sh + cd x-pack/packetbeat + mage build unitTest + agents: + provider: "orka" + imagePrefix: "${IMAGE_MACOS_ARM}" + artifact_paths: + - "x-pack/packetbeat/build/*.xml" + - "x-pack/packetbeat/build/*.json" + notify: + - github_commit_status: + context: "x-pack/packetbeat: MacOS arm64 Unit Tests" + + - group: "x-pack/packetbeat Packaging" + key: "x-pack-packetbeat-packaging" + if: build.env("BUILDKITE_PULL_REQUEST") != "false" + depends_on: + - step: "x-pack-packetbeat-mandatory-tests" + allow_failure: false + steps: + - label: ":linux: Packaging Linux" + key: "packaging-linux" + command: | + cd x-pack/packetbeat + mage package + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + disk_size: 100 + disk_type: "pd-ssd" + env: + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Packaging Linux" - - input: "Input Parameters" - key: "force-run-stages" - fields: - - select: "Packetbeat - run_xpack_packetbeat" - key: "run_xpack_packetbeat" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Packetbeat - run_xpack_packetbeat_macos_tests" - key: "run_xpack_packetbeat_macos_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - select: "Packetbeat - run_xpack_packetbeat_arm_tests" - key: "run_xpack_packetbeat_arm_tests" - options: - - label: "True" - value: "true" - - label: "False" - value: "false" - default: "false" - - if: "build.source == 'ui'" - - - wait: ~ - if: "build.source == 'ui'" - allow_dependency_failure: false - - - label: ":linux: Load dynamic x-pack packetbeat pipeline" - key: "packetbeat-pipeline" - command: ".buildkite/scripts/generate_xpack_packetbeat_pipeline.sh" - agents: - image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci:latest" - notify: - - github_commit_status: - context: "${BEATS_PROJECT_NAME}: Load dynamic pipeline's steps" + - label: ":linux: Packaging ARM" + key: "packaging-arm" + command: | + cd x-pack/packetbeat + mage package + agents: + provider: "aws" + imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + env: + PLATFORMS: "linux/arm64" + PACKAGES: "docker" + notify: + - github_commit_status: + context: "x-pack/packetbeat: Packaging Linux ARM" From e6cae466ab81bfcd3f6df94332991ee0669a4c8e Mon Sep 17 00:00:00 2001 From: Craig MacKenzie Date: Tue, 23 Apr 2024 08:54:05 -0400 Subject: [PATCH 209/313] Agentbeat: remove unused files from package and silence new error message (#39064) * Remove Beat config files from agentbeat. Beats no longer reads config files at startup when run as part of agent. * Silence new error message with agentbeat. * Add comment to log line. --- dev-tools/packaging/package_test.go | 4 +-- filebeat/fileset/modules.go | 6 +++- .../dev-tools/packaging/packages.yml | 31 ------------------- 3 files changed, 7 insertions(+), 34 deletions(-) diff --git a/dev-tools/packaging/package_test.go b/dev-tools/packaging/package_test.go index fff920b429c..308610b4760 100644 --- a/dev-tools/packaging/package_test.go +++ b/dev-tools/packaging/package_test.go @@ -263,7 +263,7 @@ func checkConfigPermissionsWithMode(t *testing.T, p *packageFile, expectedMode o return } } - t.Errorf("no config file found matching %v", configFilePattern) + t.Logf("no config file found matching %v", configFilePattern) }) } @@ -288,7 +288,7 @@ func checkConfigOwner(t *testing.T, p *packageFile, expectRoot bool) { return } } - t.Errorf("no config file found matching %v", configFilePattern) + t.Logf("no config file found matching %v", configFilePattern) }) } diff --git a/filebeat/fileset/modules.go b/filebeat/fileset/modules.go index b1482033c91..a3d2c82f6ec 100644 --- a/filebeat/fileset/modules.go +++ b/filebeat/fileset/modules.go @@ -29,6 +29,7 @@ import ( "gopkg.in/yaml.v2" "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common/fleetmode" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/paths" @@ -149,7 +150,10 @@ func NewModuleRegistry(moduleConfigs []*conf.C, beatInfo beat.Info, init bool, f stat, err := os.Stat(modulesPath) if err != nil || !stat.IsDir() { log := logp.NewLogger(logName) - log.Errorf("Not loading modules. Module directory not found: %s", modulesPath) + if !fleetmode.Enabled() { + // When run under agent via agentbeat there is no modules directory and this is expected. + log.Errorf("Not loading modules. Module directory not found: %s", modulesPath) + } return &ModuleRegistry{log: log}, nil //nolint:nilerr // empty registry, no error } diff --git a/x-pack/agentbeat/dev-tools/packaging/packages.yml b/x-pack/agentbeat/dev-tools/packaging/packages.yml index b753d88bf2a..98c5c0f8289 100644 --- a/x-pack/agentbeat/dev-tools/packaging/packages.yml +++ b/x-pack/agentbeat/dev-tools/packaging/packages.yml @@ -24,9 +24,6 @@ shared: NOTICE.txt: source: '{{ repo.RootDir }}/NOTICE.txt' mode: 0644 - README.md: - template: '{{ elastic_beats_dir }}/dev-tools/packaging/templates/common/README.md.tmpl' - mode: 0644 .build_hash.txt: content: > {{ commit }} @@ -35,32 +32,6 @@ shared: source: '{{.BeatName}}.spec.yml' mode: 0644 - - &config_files - 'auditbeat.yml': - source: '{{ repo.RootDir }}/x-pack/auditbeat/auditbeat.yml' - mode: 0600 - config: true - 'filebeat.yml': - source: '{{ repo.RootDir }}/x-pack/filebeat/filebeat.yml' - mode: 0600 - config: true - 'heartbeat.yml': - source: '{{ repo.RootDir }}/x-pack/heartbeat/heartbeat.yml' - mode: 0600 - config: true - 'metricbeat.yml': - source: '{{ repo.RootDir }}/x-pack/metricbeat/metricbeat.yml' - mode: 0600 - config: true - 'osquerybeat.yml': - source: '{{ repo.RootDir }}/x-pack/osquerybeat/osquerybeat.yml' - mode: 0600 - config: true - 'packetbeat.yml': - source: '{{ repo.RootDir }}/x-pack/packetbeat/packetbeat.yml' - mode: 0600 - config: true - - &unix_osquery_files 'osquery-extension.ext': source: '{{ repo.RootDir }}/x-pack/osquerybeat/ext/osquery-extension/build/golang-crossbuild/osquery-extension-{{.GOOS}}-{{.Platform.Arch}}{{.BinaryExt}}' @@ -76,14 +47,12 @@ shared: <<: *common files: <<: *binary_files - <<: *config_files <<: *unix_osquery_files - &windows_binary_spec <<: *common files: <<: *binary_files - <<: *config_files <<: *windows_osquery_files # License modifiers for the Elastic License From e53eb0c4aca1a966e5b79937c7aea7085e151215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constan=C3=A7a=20Manteigas?= <113898685+constanca-m@users.noreply.github.com> Date: Tue, 23 Apr 2024 17:42:38 +0200 Subject: [PATCH 210/313] [Metricbeat][Kubernetes] Remove mandatory permissions for namespace and node (#38762) * remove mandatory permissions --------- Signed-off-by: constanca Co-authored-by: Michael Katsoulis --- CHANGELOG-developer.next.asciidoc | 1 + .../autodiscover/providers/kubernetes/pod.go | 35 +++--- .../providers/kubernetes/pod_test.go | 107 ++++++++++++++++++ .../providers/kubernetes/service.go | 20 ++-- .../providers/kubernetes/service_test.go | 98 ++++++++++++++++ .../add_kubernetes_metadata/kubernetes.go | 28 +++-- .../module/kubernetes/util/kubernetes.go | 57 ++++++++-- .../module/kubernetes/util/kubernetes_test.go | 12 ++ 8 files changed, 314 insertions(+), 44 deletions(-) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 8875b834e66..f74e4a72782 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -70,6 +70,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. ==== Bugfixes +- Handle the starting of namespace and node watchers for metadata enrichment according to `add_resource_metadata` configuration.{pull}38762[38762] - Fix multiple metricbeat instances reporting same metrics when using autodiscover with provider kubernetes, and ensure leader elector is always running in autodiscover mode.{pull}38471[38471] - Fix how Prometheus histograms are calculated when percentiles are provide.{pull}36537[36537] - Stop using `mage:import` in community beats. This was ignoring the vendorized beats directory for some mage targets, using the code available in GOPATH, this causes inconsistencies and compilation problems if the version of the code in the GOPATH is different to the vendored one. Use of `mage:import` will continue to be unsupported in custom beats till beats is migrated to go modules, or mage supports vendored dependencies. {issue}13998[13998] {pull}14162[14162] diff --git a/libbeat/autodiscover/providers/kubernetes/pod.go b/libbeat/autodiscover/providers/kubernetes/pod.go index d849039a66e..569b2d21cd4 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod.go +++ b/libbeat/autodiscover/providers/kubernetes/pod.go @@ -59,7 +59,7 @@ type pod struct { func NewPodEventer(uuid uuid.UUID, cfg *conf.C, client k8s.Interface, publish func(event []bus.Event)) (Eventer, error) { logger := logp.NewLogger("autodiscover.pod") - var replicaSetWatcher, jobWatcher kubernetes.Watcher + var replicaSetWatcher, jobWatcher, namespaceWatcher, nodeWatcher kubernetes.Watcher config := defaultConfig() err := cfg.Unpack(&config) @@ -96,22 +96,27 @@ func NewPodEventer(uuid uuid.UUID, cfg *conf.C, client k8s.Interface, publish fu return nil, fmt.Errorf("couldn't create watcher for %T due to error %w", &kubernetes.Pod{}, err) } - options := kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - Node: config.Node, - Namespace: config.Namespace, - } - metaConf := config.AddResourceMetadata - nodeWatcher, err := kubernetes.NewNamedWatcher("node", client, &kubernetes.Node{}, options, nil) - if err != nil { - logger.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Node{}, err) + + if metaConf.Node.Enabled() || config.Hints.Enabled() { + options := kubernetes.WatchOptions{ + SyncTimeout: config.SyncPeriod, + Node: config.Node, + Namespace: config.Namespace, + } + nodeWatcher, err = kubernetes.NewNamedWatcher("node", client, &kubernetes.Node{}, options, nil) + if err != nil { + logger.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Node{}, err) + } } - namespaceWatcher, err := kubernetes.NewNamedWatcher("namespace", client, &kubernetes.Namespace{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - }, nil) - if err != nil { - logger.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Namespace{}, err) + + if metaConf.Namespace.Enabled() || config.Hints.Enabled() { + namespaceWatcher, err = kubernetes.NewNamedWatcher("namespace", client, &kubernetes.Namespace{}, kubernetes.WatchOptions{ + SyncTimeout: config.SyncPeriod, + }, nil) + if err != nil { + logger.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Namespace{}, err) + } } // Resource is Pod so we need to create watchers for Replicasets and Jobs that it might belongs to diff --git a/libbeat/autodiscover/providers/kubernetes/pod_test.go b/libbeat/autodiscover/providers/kubernetes/pod_test.go index 4cc2d8bb393..3a60342444a 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod_test.go +++ b/libbeat/autodiscover/providers/kubernetes/pod_test.go @@ -2108,6 +2108,113 @@ func TestNodePodUpdater(t *testing.T) { } } +func TestPodEventer_Namespace_Node_Watcher(t *testing.T) { + client := k8sfake.NewSimpleClientset() + uuid, err := uuid.NewV4() + if err != nil { + t.Fatal(err) + } + + tests := []struct { + cfg mapstr.M + expectedNil bool + name string + msg string + }{ + { + cfg: mapstr.M{ + "resource": "pod", + "node": "node-1", + "add_resource_metadata": mapstr.M{ + "namespace.enabled": false, + "node.enabled": false, + }, + "hints.enabled": false, + "builders": []mapstr.M{ + { + "mock": mapstr.M{}, + }, + }, + }, + expectedNil: true, + name: "add_resource_metadata.namespace and add_resource_metadata.node disabled and hints disabled.", + msg: "Watcher should be nil.", + }, + { + cfg: mapstr.M{ + "resource": "pod", + "node": "node-1", + "add_resource_metadata": mapstr.M{ + "namespace.enabled": false, + "node.enabled": false, + }, + "hints.enabled": true, + }, + expectedNil: false, + name: "add_resource_metadata.namespace and add_resource_metadata.node disabled and hints enabled.", + msg: "Watcher should not be nil.", + }, + { + cfg: mapstr.M{ + "resource": "pod", + "node": "node-1", + "add_resource_metadata": mapstr.M{ + "namespace.enabled": true, + "node.enabled": true, + }, + "hints.enabled": false, + "builders": []mapstr.M{ + { + "mock": mapstr.M{}, + }, + }, + }, + expectedNil: false, + name: "add_resource_metadata.namespace and add_resource_metadata.node enabled and hints disabled.", + msg: "Watcher should not be nil.", + }, + { + cfg: mapstr.M{ + "resource": "pod", + "node": "node-1", + "builders": []mapstr.M{ + { + "mock": mapstr.M{}, + }, + }, + }, + expectedNil: false, + name: "add_resource_metadata default and hints default.", + msg: "Watcher should not be nil.", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + config := conf.MustNewConfigFrom(&test.cfg) + c := defaultConfig() + err = config.Unpack(&c) + assert.NoError(t, err) + + eventer, err := NewPodEventer(uuid, config, client, nil) + if err != nil { + t.Fatal(err) + } + + namespaceWatcher := eventer.(*pod).namespaceWatcher + nodeWatcher := eventer.(*pod).nodeWatcher + + if test.expectedNil { + assert.Equalf(t, nil, namespaceWatcher, "Namespace "+test.msg) + assert.Equalf(t, nil, nodeWatcher, "Node "+test.msg) + } else { + assert.NotEqualf(t, nil, namespaceWatcher, "Namespace "+test.msg) + assert.NotEqualf(t, nil, nodeWatcher, "Node "+test.msg) + } + }) + } +} + type mockUpdaterHandler struct { objects []interface{} } diff --git a/libbeat/autodiscover/providers/kubernetes/service.go b/libbeat/autodiscover/providers/kubernetes/service.go index 5a0c6b3cc3f..de6287f7466 100644 --- a/libbeat/autodiscover/providers/kubernetes/service.go +++ b/libbeat/autodiscover/providers/kubernetes/service.go @@ -70,17 +70,19 @@ func NewServiceEventer(uuid uuid.UUID, cfg *conf.C, client k8s.Interface, publis var namespaceMeta metadata.MetaGen var namespaceWatcher kubernetes.Watcher - metaConf := metadata.GetDefaultResourceMetadataConfig() - namespaceWatcher, err = kubernetes.NewNamedWatcher("namespace", client, &kubernetes.Namespace{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - Namespace: config.Namespace, - }, nil) - if err != nil { - return nil, fmt.Errorf("couldn't create watcher for %T due to error %w", &kubernetes.Namespace{}, err) + metaConf := config.AddResourceMetadata + + if metaConf.Namespace.Enabled() || config.Hints.Enabled() { + namespaceWatcher, err = kubernetes.NewNamedWatcher("namespace", client, &kubernetes.Namespace{}, kubernetes.WatchOptions{ + SyncTimeout: config.SyncPeriod, + Namespace: config.Namespace, + }, nil) + if err != nil { + return nil, fmt.Errorf("couldn't create watcher for %T due to error %w", &kubernetes.Namespace{}, err) + } + namespaceMeta = metadata.NewNamespaceMetadataGenerator(metaConf.Namespace, namespaceWatcher.Store(), client) } - namespaceMeta = metadata.NewNamespaceMetadataGenerator(metaConf.Namespace, namespaceWatcher.Store(), client) - p := &service{ config: config, uuid: uuid, diff --git a/libbeat/autodiscover/providers/kubernetes/service_test.go b/libbeat/autodiscover/providers/kubernetes/service_test.go index 510ac6ebd0d..90ff678e11c 100644 --- a/libbeat/autodiscover/providers/kubernetes/service_test.go +++ b/libbeat/autodiscover/providers/kubernetes/service_test.go @@ -432,6 +432,104 @@ func TestEmitEvent_Service(t *testing.T) { } } +func TestServiceEventer_NamespaceWatcher(t *testing.T) { + client := k8sfake.NewSimpleClientset() + uuid, err := uuid.NewV4() + if err != nil { + t.Fatal(err) + } + + tests := []struct { + cfg mapstr.M + expectedNil bool + name string + msg string + }{ + { + cfg: mapstr.M{ + "resource": "service", + "node": "node-1", + "add_resource_metadata": mapstr.M{ + "namespace.enabled": false, + }, + "hints.enabled": false, + "builders": []mapstr.M{ + { + "mock": mapstr.M{}, + }, + }, + }, + expectedNil: true, + name: "add_resource_metadata.namespace disabled and hints disabled.", + msg: "Namespace watcher should be nil.", + }, + { + cfg: mapstr.M{ + "resource": "service", + "node": "node-1", + "add_resource_metadata": mapstr.M{ + "namespace.enabled": false, + }, + "hints.enabled": true, + }, + expectedNil: false, + name: "add_resource_metadata.namespace disabled and hints enabled.", + msg: "Namespace watcher should not be nil.", + }, + { + cfg: mapstr.M{ + "resource": "service", + "node": "node-1", + "add_resource_metadata": mapstr.M{ + "namespace.enabled": true, + }, + "hints.enabled": false, + "builders": []mapstr.M{ + { + "mock": mapstr.M{}, + }, + }, + }, + expectedNil: false, + name: "add_resource_metadata.namespace enabled and hints disabled.", + msg: "Namespace watcher should not be nil.", + }, + { + cfg: mapstr.M{ + "resource": "pod", + "node": "node-1", + "builders": []mapstr.M{ + { + "mock": mapstr.M{}, + }, + }, + }, + expectedNil: false, + name: "add_resource_metadata default and hints default.", + msg: "Watcher should not be nil.", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + config := conf.MustNewConfigFrom(&test.cfg) + + eventer, err := NewServiceEventer(uuid, config, client, nil) + if err != nil { + t.Fatal(err) + } + + namespaceWatcher := eventer.(*service).namespaceWatcher + + if test.expectedNil { + assert.Equalf(t, nil, namespaceWatcher, test.msg) + } else { + assert.NotEqualf(t, nil, namespaceWatcher, test.msg) + } + }) + } +} + func NewMockServiceEventerManager(svc *service) EventManager { em := &eventerManager{} em.eventer = svc diff --git a/libbeat/processors/add_kubernetes_metadata/kubernetes.go b/libbeat/processors/add_kubernetes_metadata/kubernetes.go index 954a59ab3f1..f9143cdf289 100644 --- a/libbeat/processors/add_kubernetes_metadata/kubernetes.go +++ b/libbeat/processors/add_kubernetes_metadata/kubernetes.go @@ -27,13 +27,14 @@ import ( k8sclient "k8s.io/client-go/kubernetes" - "github.com/elastic/beats/v7/libbeat/beat" - "github.com/elastic/beats/v7/libbeat/processors" "github.com/elastic/elastic-agent-autodiscover/kubernetes" "github.com/elastic/elastic-agent-autodiscover/kubernetes/metadata" "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/processors" ) const ( @@ -144,7 +145,7 @@ func newProcessorConfig(cfg *config.C, register *Register) (kubeAnnotatorConfig, func (k *kubernetesAnnotator) init(config kubeAnnotatorConfig, cfg *config.C) { k.initOnce.Do(func() { - var replicaSetWatcher, jobWatcher kubernetes.Watcher + var replicaSetWatcher, jobWatcher, namespaceWatcher, nodeWatcher kubernetes.Watcher client, err := kubernetes.GetKubernetesClient(config.KubeConfig, config.KubeClientOptions) if err != nil { @@ -203,15 +204,20 @@ func (k *kubernetesAnnotator) init(config kubeAnnotatorConfig, cfg *config.C) { Namespace: config.Namespace, } - nodeWatcher, err := kubernetes.NewNamedWatcher("add_kubernetes_metadata_node", client, &kubernetes.Node{}, options, nil) - if err != nil { - k.log.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Node{}, err) + if metaConf.Node.Enabled() { + nodeWatcher, err = kubernetes.NewNamedWatcher("add_kubernetes_metadata_node", client, &kubernetes.Node{}, options, nil) + if err != nil { + k.log.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Node{}, err) + } } - namespaceWatcher, err := kubernetes.NewNamedWatcher("add_kubernetes_metadata_namespace", client, &kubernetes.Namespace{}, kubernetes.WatchOptions{ - SyncTimeout: config.SyncPeriod, - }, nil) - if err != nil { - k.log.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Namespace{}, err) + + if metaConf.Namespace.Enabled() { + namespaceWatcher, err = kubernetes.NewNamedWatcher("add_kubernetes_metadata_namespace", client, &kubernetes.Namespace{}, kubernetes.WatchOptions{ + SyncTimeout: config.SyncPeriod, + }, nil) + if err != nil { + k.log.Errorf("couldn't create watcher for %T due to error %+v", &kubernetes.Namespace{}, err) + } } // Resource is Pod so we need to create watchers for Replicasets and Jobs that it might belongs to diff --git a/metricbeat/module/kubernetes/util/kubernetes.go b/metricbeat/module/kubernetes/util/kubernetes.go index d89ca006f0e..a0c409ca14e 100644 --- a/metricbeat/module/kubernetes/util/kubernetes.go +++ b/metricbeat/module/kubernetes/util/kubernetes.go @@ -166,7 +166,14 @@ func getResource(resourceName string) kubernetes.Resource { func getExtraWatchers(resourceName string, addResourceMetadata *metadata.AddResourceMetadataConfig) []string { switch resourceName { case PodResource: - extra := []string{NamespaceResource, NodeResource} + extra := []string{} + if addResourceMetadata.Node.Enabled() { + extra = append(extra, NodeResource) + } + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + // We need to create watchers for ReplicaSets and Jobs that it might belong to, // in order to be able to retrieve 2nd layer Owner metadata like in case of: // Deployment -> Replicaset -> Pod @@ -179,23 +186,55 @@ func getExtraWatchers(resourceName string, addResourceMetadata *metadata.AddReso } return extra case ServiceResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case DeploymentResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case ReplicaSetResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case StatefulSetResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case DaemonSetResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case JobResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case CronJobResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case PersistentVolumeResource: return []string{} case PersistentVolumeClaimResource: - return []string{NamespaceResource} + extra := []string{} + if addResourceMetadata.Namespace.Enabled() { + extra = append(extra, NamespaceResource) + } + return extra case StorageClassResource: return []string{} case NodeResource: diff --git a/metricbeat/module/kubernetes/util/kubernetes_test.go b/metricbeat/module/kubernetes/util/kubernetes_test.go index b4e528100a6..8235e73a277 100644 --- a/metricbeat/module/kubernetes/util/kubernetes_test.go +++ b/metricbeat/module/kubernetes/util/kubernetes_test.go @@ -265,6 +265,12 @@ func TestCreateMetaGenSpecific(t *testing.T) { require.NoError(t, err) log := logp.NewLogger("test") + + namespaceConfig, err := conf.NewConfigFrom(map[string]interface{}{ + "enabled": true, + }) + require.NoError(t, err) + config := &kubernetesConfig{ Namespace: "test-ns", SyncPeriod: time.Minute, @@ -272,6 +278,7 @@ func TestCreateMetaGenSpecific(t *testing.T) { AddResourceMetadata: &metadata.AddResourceMetadataConfig{ CronJob: false, Deployment: true, + Namespace: namespaceConfig, }, } client := k8sfake.NewSimpleClientset() @@ -326,6 +333,10 @@ func TestBuildMetadataEnricher_Start_Stop(t *testing.T) { resourceWatchers.lock.Unlock() funcs := mockFuncs{} + namespaceConfig, err := conf.NewConfigFrom(map[string]interface{}{ + "enabled": true, + }) + require.NoError(t, err) config := &kubernetesConfig{ Namespace: "test-ns", SyncPeriod: time.Minute, @@ -333,6 +344,7 @@ func TestBuildMetadataEnricher_Start_Stop(t *testing.T) { AddResourceMetadata: &metadata.AddResourceMetadataConfig{ CronJob: false, Deployment: false, + Namespace: namespaceConfig, }, } From deece39d2a5897014bea6228bfbd141c98fe63ed Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Tue, 23 Apr 2024 12:27:48 -0400 Subject: [PATCH 211/313] Fix awscloudwatch worker allocation (#38953) Fix a bug in cloudwatch worker allocation that could cause data loss (https://github.com/elastic/beats/issues/38918). The previous behavior wasn't really tested, since worker tasks were computed in cloudwatchPoller's polling loop which required live AWS connections. So in addition to the basic logical fix, I did some refactoring to cloudwatchPoller that makes the task iteration visible to unit tests. --- CHANGELOG.next.asciidoc | 1 + .../input/awscloudwatch/cloudwatch.go | 134 +++++++++--- .../input/awscloudwatch/cloudwatch_test.go | 207 ++++++++++++++++++ x-pack/filebeat/input/awscloudwatch/input.go | 101 +-------- .../input/awscloudwatch/input_test.go | 103 --------- 5 files changed, 316 insertions(+), 230 deletions(-) create mode 100644 x-pack/filebeat/input/awscloudwatch/cloudwatch_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index c28b56a184e..3ee1edbffa3 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -132,6 +132,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix panic when more than 32767 pipeline clients are active. {issue}38197[38197] {pull}38556[38556] - Fix filestream's registry GC: registry entries are now removed from the in-memory and disk store when they're older than the set TTL {issue}36761[36761] {pull}38488[38488] - [threatintel] MISP splitting fix for empty responses {issue}38739[38739] {pull}38917[38917] +- Fix a bug in cloudwatch task allocation that could skip some logs {issue}38918[38918] {pull}38953[38953] - Prevent GCP Pub/Sub input blockage by increasing default value of `max_outstanding_messages` {issue}35029[35029] {pull}38985[38985] - entity-analytics input: Improve structured logging. {pull}38990[38990] - Fix config validation for CEL and HTTPJSON inputs when using password grant authentication and `client.id` or `client.secret` are not present. {pull}38962[38962] diff --git a/x-pack/filebeat/input/awscloudwatch/cloudwatch.go b/x-pack/filebeat/input/awscloudwatch/cloudwatch.go index ca54721bd27..d85480891a0 100644 --- a/x-pack/filebeat/input/awscloudwatch/cloudwatch.go +++ b/x-pack/filebeat/input/awscloudwatch/cloudwatch.go @@ -14,61 +14,69 @@ import ( awssdk "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs" - awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" "github.com/elastic/elastic-agent-libs/logp" ) type cloudwatchPoller struct { - numberOfWorkers int - apiSleep time.Duration + config config region string - logStreams []*string - logStreamPrefix string - startTime int64 - endTime int64 - workerSem *awscommon.Sem log *logp.Logger metrics *inputMetrics workersListingMap *sync.Map workersProcessingMap *sync.Map + + // When a worker is ready for its next task, it should + // send to workRequestChan and then read from workResponseChan. + // The worker can cancel the request based on other context + // cancellations, but if the write succeeds it _must_ read from + // workResponseChan to avoid deadlocking the main loop. + workRequestChan chan struct{} + workResponseChan chan workResponse + + workerWg sync.WaitGroup +} + +type workResponse struct { + logGroup string + startTime, endTime time.Time } func newCloudwatchPoller(log *logp.Logger, metrics *inputMetrics, - awsRegion string, apiSleep time.Duration, - numberOfWorkers int, logStreams []*string, logStreamPrefix string) *cloudwatchPoller { + awsRegion string, config config) *cloudwatchPoller { if metrics == nil { metrics = newInputMetrics("", nil) } return &cloudwatchPoller{ - numberOfWorkers: numberOfWorkers, - apiSleep: apiSleep, - region: awsRegion, - logStreams: logStreams, - logStreamPrefix: logStreamPrefix, - startTime: int64(0), - endTime: int64(0), - workerSem: awscommon.NewSem(numberOfWorkers), log: log, metrics: metrics, + region: awsRegion, + config: config, workersListingMap: new(sync.Map), workersProcessingMap: new(sync.Map), + // workRequestChan is unbuffered to guarantee that + // the worker and main loop agree whether a request + // was sent. workerResponseChan is buffered so the + // main loop doesn't have to block on the workers + // while distributing new data. + workRequestChan: make(chan struct{}), + workResponseChan: make(chan workResponse, 10), } } -func (p *cloudwatchPoller) run(svc *cloudwatchlogs.Client, logGroup string, startTime int64, endTime int64, logProcessor *logProcessor) { +func (p *cloudwatchPoller) run(svc *cloudwatchlogs.Client, logGroup string, startTime, endTime time.Time, logProcessor *logProcessor) { err := p.getLogEventsFromCloudWatch(svc, logGroup, startTime, endTime, logProcessor) if err != nil { var errRequestCanceled *awssdk.RequestCanceledError if errors.As(err, &errRequestCanceled) { - p.log.Error("getLogEventsFromCloudWatch failed with RequestCanceledError: ", err) + p.log.Error("getLogEventsFromCloudWatch failed with RequestCanceledError: ", errRequestCanceled) } p.log.Error("getLogEventsFromCloudWatch failed: ", err) } } // getLogEventsFromCloudWatch uses FilterLogEvents API to collect logs from CloudWatch -func (p *cloudwatchPoller) getLogEventsFromCloudWatch(svc *cloudwatchlogs.Client, logGroup string, startTime int64, endTime int64, logProcessor *logProcessor) error { +func (p *cloudwatchPoller) getLogEventsFromCloudWatch(svc *cloudwatchlogs.Client, logGroup string, startTime, endTime time.Time, logProcessor *logProcessor) error { // construct FilterLogEventsInput filterLogEventsInput := p.constructFilterLogEventsInput(startTime, endTime, logGroup) paginator := cloudwatchlogs.NewFilterLogEventsPaginator(svc, filterLogEventsInput) @@ -83,8 +91,8 @@ func (p *cloudwatchPoller) getLogEventsFromCloudWatch(svc *cloudwatchlogs.Client p.metrics.logEventsReceivedTotal.Add(uint64(len(logEvents))) // This sleep is to avoid hitting the FilterLogEvents API limit(5 transactions per second (TPS)/account/Region). - p.log.Debugf("sleeping for %v before making FilterLogEvents API call again", p.apiSleep) - time.Sleep(p.apiSleep) + p.log.Debugf("sleeping for %v before making FilterLogEvents API call again", p.config.APISleep) + time.Sleep(p.config.APISleep) p.log.Debug("done sleeping") p.log.Debugf("Processing #%v events", len(logEvents)) @@ -93,21 +101,87 @@ func (p *cloudwatchPoller) getLogEventsFromCloudWatch(svc *cloudwatchlogs.Client return nil } -func (p *cloudwatchPoller) constructFilterLogEventsInput(startTime int64, endTime int64, logGroup string) *cloudwatchlogs.FilterLogEventsInput { +func (p *cloudwatchPoller) constructFilterLogEventsInput(startTime, endTime time.Time, logGroup string) *cloudwatchlogs.FilterLogEventsInput { filterLogEventsInput := &cloudwatchlogs.FilterLogEventsInput{ LogGroupName: awssdk.String(logGroup), - StartTime: awssdk.Int64(startTime), - EndTime: awssdk.Int64(endTime), + StartTime: awssdk.Int64(startTime.UnixNano() / int64(time.Millisecond)), + EndTime: awssdk.Int64(endTime.UnixNano() / int64(time.Millisecond)), } - if len(p.logStreams) > 0 { - for _, stream := range p.logStreams { + if len(p.config.LogStreams) > 0 { + for _, stream := range p.config.LogStreams { filterLogEventsInput.LogStreamNames = append(filterLogEventsInput.LogStreamNames, *stream) } } - if p.logStreamPrefix != "" { - filterLogEventsInput.LogStreamNamePrefix = awssdk.String(p.logStreamPrefix) + if p.config.LogStreamPrefix != "" { + filterLogEventsInput.LogStreamNamePrefix = awssdk.String(p.config.LogStreamPrefix) } return filterLogEventsInput } + +func (p *cloudwatchPoller) startWorkers( + ctx context.Context, + svc *cloudwatchlogs.Client, + logProcessor *logProcessor, +) { + for i := 0; i < p.config.NumberOfWorkers; i++ { + p.workerWg.Add(1) + go func() { + defer p.workerWg.Done() + for { + var work workResponse + select { + case <-ctx.Done(): + return + case p.workRequestChan <- struct{}{}: + work = <-p.workResponseChan + } + + p.log.Infof("aws-cloudwatch input worker for log group: '%v' has started", work.logGroup) + p.run(svc, work.logGroup, work.startTime, work.endTime, logProcessor) + p.log.Infof("aws-cloudwatch input worker for log group '%v' has stopped.", work.logGroup) + } + }() + } +} + +// receive implements the main run loop that distributes tasks to the worker +// goroutines. It accepts a "clock" callback (which on a live input should +// equal time.Now) to allow deterministic unit tests. +func (p *cloudwatchPoller) receive(ctx context.Context, logGroupNames []string, clock func() time.Time) { + defer p.workerWg.Wait() + // startTime and endTime are the bounds of the current scanning interval. + // If we're starting at the end of the logs, advance the start time to the + // most recent scan window + var startTime time.Time + endTime := clock().Add(-p.config.Latency) + if p.config.StartPosition == "end" { + startTime = endTime.Add(-p.config.ScanFrequency) + } + for ctx.Err() == nil { + for _, lg := range logGroupNames { + select { + case <-ctx.Done(): + return + case <-p.workRequestChan: + p.workResponseChan <- workResponse{ + logGroup: lg, + startTime: startTime, + endTime: endTime, + } + } + } + + // Delay for ScanFrequency after finishing a time span + p.log.Debugf("sleeping for %v before checking new logs", p.config.ScanFrequency) + select { + case <-time.After(p.config.ScanFrequency): + case <-ctx.Done(): + } + p.log.Debug("done sleeping") + + // Advance to the next time span + startTime, endTime = endTime, clock().Add(-p.config.Latency) + } +} diff --git a/x-pack/filebeat/input/awscloudwatch/cloudwatch_test.go b/x-pack/filebeat/input/awscloudwatch/cloudwatch_test.go new file mode 100644 index 00000000000..2f8198c021d --- /dev/null +++ b/x-pack/filebeat/input/awscloudwatch/cloudwatch_test.go @@ -0,0 +1,207 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package awscloudwatch + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/assert" + + "github.com/elastic/elastic-agent-libs/logp" +) + +type clock struct { + time time.Time +} + +func (c *clock) now() time.Time { + return c.time +} + +type receiveTestStep struct { + expected []workResponse + nextTime time.Time +} + +type receiveTestCase struct { + name string + logGroups []string + configOverrides func(*config) + startTime time.Time + steps []receiveTestStep +} + +func TestReceive(t *testing.T) { + // We use a mocked clock so scan frequency can be any positive value. + const defaultScanFrequency = time.Microsecond + t0 := time.Time{} + t1 := t0.Add(time.Hour) + t2 := t1.Add(time.Minute) + t3 := t2.Add(time.Hour) + testCases := []receiveTestCase{ + { + name: "Default config with one log group", + logGroups: []string{"a"}, + startTime: t1, + steps: []receiveTestStep{ + { + expected: []workResponse{ + {logGroup: "a", startTime: t0, endTime: t1}, + }, + nextTime: t2, + }, + { + expected: []workResponse{ + {logGroup: "a", startTime: t1, endTime: t2}, + }, + nextTime: t3, + }, + { + expected: []workResponse{ + {logGroup: "a", startTime: t2, endTime: t3}, + }, + }, + }, + }, + { + name: "Default config with two log groups", + logGroups: []string{"a", "b"}, + startTime: t1, + steps: []receiveTestStep{ + { + expected: []workResponse{ + {logGroup: "a", startTime: t0, endTime: t1}, + }, + nextTime: t2, + }, + { + expected: []workResponse{ + // start/end times for the second log group should be the same + // even though the clock has changed. + {logGroup: "b", startTime: t0, endTime: t1}, + }, + }, + { + expected: []workResponse{ + {logGroup: "a", startTime: t1, endTime: t2}, + {logGroup: "b", startTime: t1, endTime: t2}, + }, + nextTime: t3, + }, + { + expected: []workResponse{ + {logGroup: "a", startTime: t2, endTime: t3}, + {logGroup: "b", startTime: t2, endTime: t3}, + }, + }, + }, + }, + { + name: "One log group with start_position: end", + logGroups: []string{"a"}, + startTime: t1, + configOverrides: func(c *config) { + c.StartPosition = "end" + }, + steps: []receiveTestStep{ + { + expected: []workResponse{ + {logGroup: "a", startTime: t1.Add(-defaultScanFrequency), endTime: t1}, + }, + nextTime: t2, + }, + { + expected: []workResponse{ + {logGroup: "a", startTime: t1, endTime: t2}, + }, + }, + }, + }, + { + name: "Two log group with start_position: end and latency", + logGroups: []string{"a", "b"}, + startTime: t1, + configOverrides: func(c *config) { + c.StartPosition = "end" + c.Latency = time.Second + }, + steps: []receiveTestStep{ + { + expected: []workResponse{ + {logGroup: "a", startTime: t1.Add(-defaultScanFrequency - time.Second), endTime: t1.Add(-time.Second)}, + {logGroup: "b", startTime: t1.Add(-defaultScanFrequency - time.Second), endTime: t1.Add(-time.Second)}, + }, + nextTime: t2, + }, + { + expected: []workResponse{ + {logGroup: "a", startTime: t1.Add(-time.Second), endTime: t2.Add(-time.Second)}, + {logGroup: "b", startTime: t1.Add(-time.Second), endTime: t2.Add(-time.Second)}, + }, + }, + }, + }, + { + name: "Three log groups with latency", + logGroups: []string{"a", "b", "c"}, + startTime: t1, + configOverrides: func(c *config) { + c.Latency = time.Second + }, + steps: []receiveTestStep{ + { + expected: []workResponse{ + {logGroup: "a", startTime: t0, endTime: t1.Add(-time.Second)}, + {logGroup: "b", startTime: t0, endTime: t1.Add(-time.Second)}, + {logGroup: "c", startTime: t0, endTime: t1.Add(-time.Second)}, + }, + nextTime: t2, + }, + { + expected: []workResponse{ + {logGroup: "a", startTime: t1.Add(-time.Second), endTime: t2.Add(-time.Second)}, + {logGroup: "b", startTime: t1.Add(-time.Second), endTime: t2.Add(-time.Second)}, + {logGroup: "c", startTime: t1.Add(-time.Second), endTime: t2.Add(-time.Second)}, + }, + }, + }, + }, + } + clock := &clock{} + for stepIndex, test := range testCases { + ctx, cancel := context.WithCancel(context.Background()) + p := &cloudwatchPoller{ + workRequestChan: make(chan struct{}), + // Unlike the live cwPoller, we make workResponseChan unbuffered, + // so we can guarantee that clock updates happen when cwPoller has already + // decided on its output + workResponseChan: make(chan workResponse), + log: logp.NewLogger("test"), + } + + p.config = defaultConfig() + p.config.ScanFrequency = defaultScanFrequency + if test.configOverrides != nil { + test.configOverrides(&p.config) + } + clock.time = test.startTime + go p.receive(ctx, test.logGroups, clock.now) + for _, step := range test.steps { + for i, expected := range step.expected { + p.workRequestChan <- struct{}{} + if i+1 == len(step.expected) && !step.nextTime.Equal(time.Time{}) { + // On the last request of the step, we advance the clock if a + // time is set + clock.time = step.nextTime + } + response := <-p.workResponseChan + assert.Equalf(t, expected, response, "%v: step %v response %v doesn't match", test.name, stepIndex, i) + } + } + cancel() + } +} diff --git a/x-pack/filebeat/input/awscloudwatch/input.go b/x-pack/filebeat/input/awscloudwatch/input.go index 4ee9daa05ad..75f22e6625a 100644 --- a/x-pack/filebeat/input/awscloudwatch/input.go +++ b/x-pack/filebeat/input/awscloudwatch/input.go @@ -6,10 +6,8 @@ package awscloudwatch import ( "context" - "errors" "fmt" "strings" - "sync" "time" awssdk "github.com/aws/aws-sdk-go-v2/aws" @@ -137,82 +135,12 @@ func (in *cloudwatchInput) Run(inputContext v2.Context, pipeline beat.Pipeline) log.Named("cloudwatch_poller"), in.metrics, in.awsConfig.Region, - in.config.APISleep, - in.config.NumberOfWorkers, - in.config.LogStreams, - in.config.LogStreamPrefix) + in.config) logProcessor := newLogProcessor(log.Named("log_processor"), in.metrics, client, ctx) cwPoller.metrics.logGroupsTotal.Add(uint64(len(logGroupNames))) - return in.Receive(svc, cwPoller, ctx, logProcessor, logGroupNames) -} - -func (in *cloudwatchInput) Receive(svc *cloudwatchlogs.Client, cwPoller *cloudwatchPoller, ctx context.Context, logProcessor *logProcessor, logGroupNames []string) error { - // This loop tries to keep the workers busy as much as possible while - // honoring the number in config opposed to a simpler loop that does one - // listing, sequentially processes every object and then does another listing - start := true - workerWg := new(sync.WaitGroup) - lastLogGroupOffset := 0 - for ctx.Err() == nil { - if !start { - cwPoller.log.Debugf("sleeping for %v before checking new logs", in.config.ScanFrequency) - time.Sleep(in.config.ScanFrequency) - cwPoller.log.Debug("done sleeping") - } - start = false - - currentTime := time.Now() - cwPoller.startTime, cwPoller.endTime = getStartPosition(in.config.StartPosition, currentTime, cwPoller.endTime, in.config.ScanFrequency, in.config.Latency) - cwPoller.log.Debugf("start_position = %s, startTime = %v, endTime = %v", in.config.StartPosition, time.Unix(cwPoller.startTime/1000, 0), time.Unix(cwPoller.endTime/1000, 0)) - availableWorkers, err := cwPoller.workerSem.AcquireContext(in.config.NumberOfWorkers, ctx) - if err != nil { - break - } - - if availableWorkers == 0 { - continue - } - - workerWg.Add(availableWorkers) - logGroupNamesLength := len(logGroupNames) - runningGoroutines := 0 - - for i := lastLogGroupOffset; i < logGroupNamesLength; i++ { - if runningGoroutines >= availableWorkers { - break - } - - runningGoroutines++ - lastLogGroupOffset = i + 1 - if lastLogGroupOffset >= logGroupNamesLength { - // release unused workers - cwPoller.workerSem.Release(availableWorkers - runningGoroutines) - for j := 0; j < availableWorkers-runningGoroutines; j++ { - workerWg.Done() - } - lastLogGroupOffset = 0 - } - - lg := logGroupNames[i] - go func(logGroup string, startTime int64, endTime int64) { - defer func() { - cwPoller.log.Infof("aws-cloudwatch input worker for log group '%v' has stopped.", logGroup) - workerWg.Done() - cwPoller.workerSem.Release(1) - }() - cwPoller.log.Infof("aws-cloudwatch input worker for log group: '%v' has started", logGroup) - cwPoller.run(svc, logGroup, startTime, endTime, logProcessor) - }(lg, cwPoller.startTime, cwPoller.endTime) - } - } - - // Wait for all workers to finish. - workerWg.Wait() - if errors.Is(ctx.Err(), context.Canceled) { - // A canceled context is a normal shutdown. - return nil - } - return ctx.Err() + cwPoller.startWorkers(ctx, svc, logProcessor) + cwPoller.receive(ctx, logGroupNames, time.Now) + return nil } func parseARN(logGroupARN string) (string, string, error) { @@ -256,24 +184,3 @@ func getLogGroupNames(svc *cloudwatchlogs.Client, logGroupNamePrefix string, log } return logGroupNames, nil } - -func getStartPosition(startPosition string, currentTime time.Time, endTime int64, scanFrequency time.Duration, latency time.Duration) (int64, int64) { - if latency != 0 { - // add latency if config is not 0 - currentTime = currentTime.Add(latency * -1) - } - - switch startPosition { - case "beginning": - if endTime != int64(0) { - return endTime, currentTime.UnixNano() / int64(time.Millisecond) - } - return 0, currentTime.UnixNano() / int64(time.Millisecond) - case "end": - if endTime != int64(0) { - return endTime, currentTime.UnixNano() / int64(time.Millisecond) - } - return currentTime.Add(-scanFrequency).UnixNano() / int64(time.Millisecond), currentTime.UnixNano() / int64(time.Millisecond) - } - return 0, 0 -} diff --git a/x-pack/filebeat/input/awscloudwatch/input_test.go b/x-pack/filebeat/input/awscloudwatch/input_test.go index c51c6a072f4..4f9754c6a13 100644 --- a/x-pack/filebeat/input/awscloudwatch/input_test.go +++ b/x-pack/filebeat/input/awscloudwatch/input_test.go @@ -15,109 +15,6 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) -func TestGetStartPosition(t *testing.T) { - currentTime := time.Date(2020, time.June, 1, 0, 0, 0, 0, time.UTC) - cases := []struct { - title string - startPosition string - prevEndTime int64 - scanFrequency time.Duration - latency time.Duration - expectedStartTime int64 - expectedEndTime int64 - }{ - { - "startPosition=beginning", - "beginning", - int64(0), - 30 * time.Second, - 0, - int64(0), - int64(1590969600000), - }, - { - "startPosition=end", - "end", - int64(0), - 30 * time.Second, - 0, - int64(1590969570000), - int64(1590969600000), - }, - { - "startPosition=typo", - "typo", - int64(0), - 30 * time.Second, - 0, - int64(0), - int64(0), - }, - { - "startPosition=beginning with prevEndTime", - "beginning", - int64(1590000000000), - 30 * time.Second, - 0, - int64(1590000000000), - int64(1590969600000), - }, - { - "startPosition=end with prevEndTime", - "end", - int64(1590000000000), - 30 * time.Second, - 0, - int64(1590000000000), - int64(1590969600000), - }, - { - "startPosition=beginning with latency", - "beginning", - int64(0), - 30 * time.Second, - 10 * time.Minute, - int64(0), - int64(1590969000000), - }, - { - "startPosition=beginning with prevEndTime and latency", - "beginning", - int64(1590000000000), - 30 * time.Second, - 10 * time.Minute, - int64(1590000000000), - int64(1590969000000), - }, - { - "startPosition=end with latency", - "end", - int64(0), - 30 * time.Second, - 10 * time.Minute, - int64(1590968970000), - int64(1590969000000), - }, - { - "startPosition=end with prevEndTime and latency", - "end", - int64(1590000000000), - 30 * time.Second, - 10 * time.Minute, - int64(1590000000000), - int64(1590969000000), - }, - } - - for _, c := range cases { - t.Run(c.title, func(t *testing.T) { - startTime, endTime := getStartPosition(c.startPosition, currentTime, c.prevEndTime, c.scanFrequency, c.latency) - assert.Equal(t, c.expectedStartTime, startTime) - assert.Equal(t, c.expectedEndTime, endTime) - }) - } -} - func TestCreateEvent(t *testing.T) { logEvent := &types.FilteredLogEvent{ EventId: awssdk.String("id-1"), From 38f49a9da9c102179c5c2a9a73bf8747b2008e7c Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Tue, 23 Apr 2024 12:29:33 -0400 Subject: [PATCH 212/313] Remove unused ack tracking (#38983) Remove `EventACKTracker` from `awscloudwatch` event handling. `EventACKTracker` is buggy (see https://github.com/elastic/beats/issues/38961) but in the `awscloudwatch` input it's also never used -- its callbacks are attached to events, but their result doesn't affect any of the event handling. This PR doesn't change any functional behavior. --- x-pack/filebeat/input/awscloudwatch/input.go | 4 +--- .../input/awscloudwatch/input_integration_test.go | 7 ------- x-pack/filebeat/input/awscloudwatch/processor.go | 13 ++----------- 3 files changed, 3 insertions(+), 21 deletions(-) diff --git a/x-pack/filebeat/input/awscloudwatch/input.go b/x-pack/filebeat/input/awscloudwatch/input.go index 75f22e6625a..80ed3f2b2bf 100644 --- a/x-pack/filebeat/input/awscloudwatch/input.go +++ b/x-pack/filebeat/input/awscloudwatch/input.go @@ -109,9 +109,7 @@ func (in *cloudwatchInput) Run(inputContext v2.Context, pipeline beat.Pipeline) defer cancelInputCtx() // Create client for publishing events and receive notification of their ACKs. - client, err := pipeline.ConnectWith(beat.ClientConfig{ - EventListener: awscommon.NewEventACKHandler(), - }) + client, err := pipeline.ConnectWith(beat.ClientConfig{}) if err != nil { return fmt.Errorf("failed to create pipeline client: %w", err) } diff --git a/x-pack/filebeat/input/awscloudwatch/input_integration_test.go b/x-pack/filebeat/input/awscloudwatch/input_integration_test.go index f3a45fb5c40..3a5aa179cf0 100644 --- a/x-pack/filebeat/input/awscloudwatch/input_integration_test.go +++ b/x-pack/filebeat/input/awscloudwatch/input_integration_test.go @@ -32,7 +32,6 @@ import ( v2 "github.com/elastic/beats/v7/filebeat/input/v2" pubtest "github.com/elastic/beats/v7/libbeat/publisher/testing" - awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" ) @@ -163,12 +162,6 @@ func TestInputWithLogGroupNamePrefix(t *testing.T) { client := pubtest.NewChanClient(0) defer close(client.Channel) - go func() { - for event := range client.Channel { - // Fake the ACK handling that's not implemented in pubtest. - event.Private.(*awscommon.EventACKTracker).ACK() - } - }() var errGroup errgroup.Group errGroup.Go(func() error { diff --git a/x-pack/filebeat/input/awscloudwatch/processor.go b/x-pack/filebeat/input/awscloudwatch/processor.go index 999cad4d7f0..0ac2bc244d5 100644 --- a/x-pack/filebeat/input/awscloudwatch/processor.go +++ b/x-pack/filebeat/input/awscloudwatch/processor.go @@ -11,7 +11,6 @@ import ( "github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs/types" "github.com/elastic/beats/v7/libbeat/beat" - awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" ) @@ -20,7 +19,6 @@ type logProcessor struct { log *logp.Logger metrics *inputMetrics publisher beat.Client - ack *awscommon.EventACKTracker } func newLogProcessor(log *logp.Logger, metrics *inputMetrics, publisher beat.Client, ctx context.Context) *logProcessor { @@ -31,24 +29,17 @@ func newLogProcessor(log *logp.Logger, metrics *inputMetrics, publisher beat.Cli log: log, metrics: metrics, publisher: publisher, - ack: awscommon.NewEventACKTracker(ctx), } } func (p *logProcessor) processLogEvents(logEvents []types.FilteredLogEvent, logGroup string, regionName string) { for _, logEvent := range logEvents { event := createEvent(logEvent, logGroup, regionName) - p.publish(p.ack, &event) + p.metrics.cloudwatchEventsCreatedTotal.Inc() + p.publisher.Publish(event) } } -func (p *logProcessor) publish(ack *awscommon.EventACKTracker, event *beat.Event) { - ack.Add() - event.Private = ack - p.metrics.cloudwatchEventsCreatedTotal.Inc() - p.publisher.Publish(*event) -} - func createEvent(logEvent types.FilteredLogEvent, logGroup string, regionName string) beat.Event { event := beat.Event{ Timestamp: time.Unix(*logEvent.Timestamp/1000, 0).UTC(), From 73c6b25b6804db5a02ab5ae79c0b24e16d897051 Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Tue, 23 Apr 2024 12:30:55 -0400 Subject: [PATCH 213/313] Cleanup: Replace custom goroutine shutdown listeners with shared context wrapper (#38957) Simplify context handling in the awscloudwatch and awss3 inputs. The awscloudwatch and awss3 inputs both need to convert their Beats input context to a standard golang context for use with the AWS API, and both of them use custom wrappers that create an extra goroutine to listen for Beat shutdown. I added an explicit wrapper object to the `v2.InputContext` API that is a single function call and requires no extra goroutines, and replaced the context wrapper in both inputs. This doesn't change any functional behavior. --- filebeat/input/v2/input.go | 19 +++++++++++++++++++ x-pack/filebeat/input/awscloudwatch/input.go | 14 +------------- x-pack/filebeat/input/awss3/input.go | 12 +----------- 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/filebeat/input/v2/input.go b/filebeat/input/v2/input.go index f816e285eb3..cdfde85c846 100644 --- a/filebeat/input/v2/input.go +++ b/filebeat/input/v2/input.go @@ -18,6 +18,9 @@ package v2 import ( + "context" + "time" + "github.com/elastic/beats/v7/libbeat/beat" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" @@ -111,3 +114,19 @@ type Canceler interface { Done() <-chan struct{} Err() error } + +type cancelerCtx struct { + Canceler +} + +func GoContextFromCanceler(c Canceler) context.Context { + return cancelerCtx{c} +} + +func (c cancelerCtx) Deadline() (deadline time.Time, ok bool) { + return time.Time{}, false +} + +func (c cancelerCtx) Value(_ any) any { + return nil +} diff --git a/x-pack/filebeat/input/awscloudwatch/input.go b/x-pack/filebeat/input/awscloudwatch/input.go index 80ed3f2b2bf..f274fb5fcc9 100644 --- a/x-pack/filebeat/input/awscloudwatch/input.go +++ b/x-pack/filebeat/input/awscloudwatch/input.go @@ -94,19 +94,7 @@ func (in *cloudwatchInput) Test(ctx v2.TestContext) error { } func (in *cloudwatchInput) Run(inputContext v2.Context, pipeline beat.Pipeline) error { - var err error - - // Wrap input Context's cancellation Done channel a context.Context. This - // goroutine stops with the parent closes the Done channel. - ctx, cancelInputCtx := context.WithCancel(context.Background()) - go func() { - defer cancelInputCtx() - select { - case <-inputContext.Cancelation.Done(): - case <-ctx.Done(): - } - }() - defer cancelInputCtx() + ctx := v2.GoContextFromCanceler(inputContext.Cancelation) // Create client for publishing events and receive notification of their ACKs. client, err := pipeline.ConnectWith(beat.ClientConfig{}) diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index 855403e5dc4..733de949f29 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -114,17 +114,7 @@ func (in *s3Input) Run(inputContext v2.Context, pipeline beat.Pipeline) error { return fmt.Errorf("can not start persistent store: %w", err) } - // Wrap input Context's cancellation Done channel a context.Context. This - // goroutine stops with the parent closes the Done channel. - ctx, cancelInputCtx := context.WithCancel(context.Background()) - go func() { - defer cancelInputCtx() - select { - case <-inputContext.Cancelation.Done(): - case <-ctx.Done(): - } - }() - defer cancelInputCtx() + ctx := v2.GoContextFromCanceler(inputContext.Cancelation) if in.config.QueueURL != "" { regionName, err := getRegionFromQueueURL(in.config.QueueURL, in.config.AWSConfig.Endpoint, in.config.RegionName) From 3ba900be92cf4c207787f05a08c6d5d5fcc8fcd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Apr 2024 15:26:30 -0400 Subject: [PATCH 214/313] build(deps): bump go.elastic.co/apm/module/apmelasticsearch/v2 from 2.4.8 to 2.6.0 (#39157) * build(deps): bump go.elastic.co/apm/module/apmelasticsearch/v2 Bumps [go.elastic.co/apm/module/apmelasticsearch/v2](https://github.com/elastic/apm-agent-go) from 2.4.8 to 2.6.0. - [Release notes](https://github.com/elastic/apm-agent-go/releases) - [Changelog](https://github.com/elastic/apm-agent-go/blob/main/CHANGELOG.asciidoc) - [Commits](https://github.com/elastic/apm-agent-go/compare/v2.4.8...v2.6.0) --- updated-dependencies: - dependency-name: go.elastic.co/apm/module/apmelasticsearch/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- NOTICE.txt | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 9cfb93da670..d6d6bc76958 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -23901,11 +23901,11 @@ Contents of probable licence file $GOMODCACHE/github.com/xdg/scram@v1.0.3/LICENS -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmelasticsearch/v2 -Version: v2.4.8 +Version: v2.6.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmelasticsearch/v2@v2.4.8/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmelasticsearch/v2@v2.6.0/LICENSE: Apache License Version 2.0, January 2004 @@ -24112,11 +24112,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmelasti -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmhttp/v2 -Version: v2.5.0 +Version: v2.6.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v2@v2.5.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v2@v2.6.0/LICENSE: Apache License Version 2.0, January 2004 diff --git a/go.mod b/go.mod index ec251e13402..eafbc70a171 100644 --- a/go.mod +++ b/go.mod @@ -228,8 +228,8 @@ require ( github.com/sergi/go-diff v1.3.1 github.com/shirou/gopsutil/v3 v3.22.10 github.com/tklauser/go-sysconf v0.3.10 - go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8 - go.elastic.co/apm/module/apmhttp/v2 v2.5.0 + go.elastic.co/apm/module/apmelasticsearch/v2 v2.6.0 + go.elastic.co/apm/module/apmhttp/v2 v2.6.0 go.elastic.co/apm/v2 v2.6.0 go.mongodb.org/mongo-driver v1.5.1 golang.org/x/exp v0.0.0-20231127185646-65229373498e diff --git a/go.sum b/go.sum index 519bc82cd0b..d92adb12260 100644 --- a/go.sum +++ b/go.sum @@ -1951,10 +1951,10 @@ github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= -go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8 h1:4j3wI1e+WV6u+9ZR7lorkJI2rnJfjOWtkMeZG08PbRI= -go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.8/go.mod h1:C9ajbSjZ3akTrFOjBr+pMq8bPVOH9vhIG+knZAuPW3s= -go.elastic.co/apm/module/apmhttp/v2 v2.5.0 h1:4AWlw8giL7hRYBQiwF1/Thm0GDsbQH/Ofe4eySAnURo= -go.elastic.co/apm/module/apmhttp/v2 v2.5.0/go.mod h1:ZP7gLEzY/OAPTqNZjp8AzA06HF82zfwXEpKI2sSVTgk= +go.elastic.co/apm/module/apmelasticsearch/v2 v2.6.0 h1:ukMcwyMaDXsS1dRK2qRYXT2AsfwaUy74TOOYCqkWJow= +go.elastic.co/apm/module/apmelasticsearch/v2 v2.6.0/go.mod h1:YpfiTTrqX5LB/CKBwX89oDCBAxuLJTFv40gcfxJyehM= +go.elastic.co/apm/module/apmhttp/v2 v2.6.0 h1:s8UeNFQmVBCNd4eoz7KDD9rEFhQC0HeUFXz3z9gpAmQ= +go.elastic.co/apm/module/apmhttp/v2 v2.6.0/go.mod h1:D0GLppLuI0Ddwvtl595GUxRgn6Z8L5KaDFVMv2H3GK0= go.elastic.co/apm/v2 v2.6.0 h1:VieBMLQFtXua2YxpYxaSdYGnmmxhLT46gosI5yErJgY= go.elastic.co/apm/v2 v2.6.0/go.mod h1:33rOXgtHwbgZcDgi6I/GtCSMZQqgxkHC0IQT3gudKvo= go.elastic.co/ecszap v1.0.2 h1:iW5OGx8IiokiUzx/shD4AJCPFMC9uUtr7ycaiEIU++I= From 8f9916a1588367631c08d238db883e5aa29a2a52 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Wed, 24 Apr 2024 13:48:23 +0300 Subject: [PATCH 215/313] Add initial BK pipeline for IronBank validation (#39177) This commit adds the foundational pipeline definition needed for the migration of the IronBank validation Jenkins Job to Buildkite. Relates: https://github.com/elastic/ingest-dev/issues/3235 --- .buildkite/ironbank-valitation.yml | 1 + catalog-info.yaml | 55 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 .buildkite/ironbank-valitation.yml diff --git a/.buildkite/ironbank-valitation.yml b/.buildkite/ironbank-valitation.yml new file mode 100644 index 00000000000..6135b458d0e --- /dev/null +++ b/.buildkite/ironbank-valitation.yml @@ -0,0 +1 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json diff --git a/catalog-info.yaml b/catalog-info.yaml index c9fe5b4f05c..ea7d48d9a9f 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1052,3 +1052,58 @@ spec: access_level: BUILD_AND_READ everyone: access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: beats-ironbank-validation + description: Buildkite pipeline for validating the Ironbank docker context + links: + - title: Pipeline + url: https://buildkite.com/elastic/beats-ironbank-validation +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-ironbank-validation + description: Buildkite pipeline for validating the Ironbank docker context + spec: + repository: elastic/beats + pipeline_file: ".buildkite/ironbank-validation.yml" + branch_configuration: "main 8.* 7.17" + cancel_intermediate_builds: false + skip_intermediate_builds: false + provider_settings: + trigger_mode: none + # TODO uncomment out after https://github.com/elastic/ingest-dev/issues/3235 + # schedules: + # # TODO to be replaced with a generic scheduler similar to https://github.com/elastic/logstash/pull/15705 + # Daily run of ironbank validation / main: + # branch: main + # cronline: 30 02 * * * + # message: Daily trigger of IronBank validation on main + # Daily run of ironbank validation / 8.14: + # branch: 8.14 + # cronline: 30 02 * * * + # message: Daily trigger of IronBank validation on 8.14 + # Daily run of ironbank validation / 8.13: + # branch: 8.13 + # cronline: 30 02 * * * + # message: Daily trigger of IronBank validation on 8.13 + # Daily run of ironbank validation / 7.17: + # branch: 7.17 + # cronline: 30 02 * * * + # message: Daily trigger of IronBank validation on 7.17 + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + release-eng: + access_level: BUILD_AND_READ + everyone: + access_level: READ_ONLY From 079395b7d800cd21d4297f98ca9be2c85b73f5e1 Mon Sep 17 00:00:00 2001 From: Tetiana Kravchenko Date: Wed, 24 Apr 2024 13:33:47 +0200 Subject: [PATCH 216/313] [Kubernetes] Add tests for kube-state-metrics v2.12 (#39160) * add tests for kube-state-metrics v2.12 Signed-off-by: Tetiana Kravchenko * remove ksm 2.8.2 and 2.9.2; add k8s 2.11.0; rerun test to generate expected test results Signed-off-by: Tetiana Kravchenko --------- Signed-off-by: Tetiana Kravchenko --- .../kubernetes/_meta/test/KSM/docs.plain | 1659 +++++++++-------- .../_meta/test/KSM/ksm.v2.11.0.plain | 1476 +++++++++++++++ .../_meta/test/KSM/ksm.v2.12.0.plain | 1470 +++++++++++++++ .../_meta/test/KSM/ksm.v2.8.2.plain | 1477 --------------- .../_meta/test/KSM/ksm.v2.9.2.plain | 1479 --------------- .../state_container/_meta/data.json | 27 +- ...in.expected => ksm.v2.11.0.plain.expected} | 353 ++-- ...in.expected => ksm.v2.12.0.plain.expected} | 350 ++-- .../_meta/testdata/docs.plain-expected.json | 339 ++-- ...d.json => ksm.v2.11.0.plain-expected.json} | 314 +++- ...d.json => ksm.v2.12.0.plain-expected.json} | 349 ++-- .../kubernetes/state_cronjob/_meta/data.json | 6 +- ...in.expected => ksm.v2.11.0.plain.expected} | 6 +- ...in.expected => ksm.v2.12.0.plain.expected} | 6 +- .../_meta/testdata/docs.plain-expected.json | 6 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 6 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 6 +- ...in.expected => ksm.v2.11.0.plain.expected} | 0 ...in.expected => ksm.v2.12.0.plain.expected} | 0 ...d.json => ksm.v2.11.0.plain-expected.json} | 0 ...d.json => ksm.v2.12.0.plain-expected.json} | 0 ...in.expected => ksm.v2.11.0.plain.expected} | 0 ...in.expected => ksm.v2.12.0.plain.expected} | 0 ...d.json => ksm.v2.11.0.plain-expected.json} | 0 ...d.json => ksm.v2.12.0.plain-expected.json} | 0 .../kubernetes/state_job/_meta/data.json | 11 +- .../_meta/test/ksm.v2.11.0.plain.expected | 165 ++ .../_meta/test/ksm.v2.12.0.plain.expected | 165 ++ .../_meta/test/ksm.v2.8.2.plain.expected | 81 - .../_meta/test/ksm.v2.9.2.plain.expected | 81 - .../_meta/testdata/docs.plain-expected.json | 98 +- .../testdata/ksm.v2.11.0.plain-expected.json | 173 ++ .../testdata/ksm.v2.12.0.plain-expected.json | 173 ++ .../testdata/ksm.v2.8.2.plain-expected.json | 85 - .../testdata/ksm.v2.9.2.plain-expected.json | 85 - .../state_namespace/_meta/data.json | 4 +- ...in.expected => ksm.v2.11.0.plain.expected} | 14 +- ...in.expected => ksm.v2.12.0.plain.expected} | 14 +- .../_meta/testdata/docs.plain-expected.json | 18 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 16 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 16 +- .../kubernetes/state_node/_meta/data.json | 10 +- ...in.expected => ksm.v2.11.0.plain.expected} | 10 +- ...in.expected => ksm.v2.12.0.plain.expected} | 10 +- .../_meta/testdata/docs.plain-expected.json | 10 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 10 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 10 +- ...in.expected => ksm.v2.11.0.plain.expected} | 0 ...in.expected => ksm.v2.12.0.plain.expected} | 0 ...d.json => ksm.v2.11.0.plain-expected.json} | 0 ...d.json => ksm.v2.12.0.plain-expected.json} | 0 .../_meta/data.json | 2 +- ...in.expected => ksm.v2.11.0.plain.expected} | 2 +- ...in.expected => ksm.v2.12.0.plain.expected} | 2 +- .../_meta/testdata/docs.plain-expected.json | 2 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 2 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 2 +- .../kubernetes/state_pod/_meta/data.json | 8 +- ...in.expected => ksm.v2.11.0.plain.expected} | 191 +- ...in.expected => ksm.v2.12.0.plain.expected} | 183 +- .../_meta/testdata/docs.plain-expected.json | 191 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 191 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 197 +- .../state_replicaset/_meta/data.json | 2 +- ...in.expected => ksm.v2.11.0.plain.expected} | 58 +- ...in.expected => ksm.v2.12.0.plain.expected} | 36 +- .../_meta/testdata/docs.plain-expected.json | 44 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 74 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 48 +- .../state_resourcequota/_meta/data.json | 8 +- ...in.expected => ksm.v2.11.0.plain.expected} | 16 +- ...in.expected => ksm.v2.12.0.plain.expected} | 16 +- .../_meta/testdata/docs.plain-expected.json | 22 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 2 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 28 +- .../kubernetes/state_service/_meta/data.json | 2 +- ...in.expected => ksm.v2.11.0.plain.expected} | 31 +- ...in.expected => ksm.v2.12.0.plain.expected} | 27 +- .../_meta/testdata/docs.plain-expected.json | 6 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 23 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 27 +- .../state_statefulset/_meta/data.json | 2 +- ...in.expected => ksm.v2.11.0.plain.expected} | 2 +- ...in.expected => ksm.v2.12.0.plain.expected} | 2 +- .../_meta/testdata/docs.plain-expected.json | 2 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 2 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 2 +- .../state_storageclass/_meta/data.json | 2 +- ...in.expected => ksm.v2.11.0.plain.expected} | 2 +- ...in.expected => ksm.v2.12.0.plain.expected} | 2 +- .../_meta/testdata/docs.plain-expected.json | 2 +- ...d.json => ksm.v2.11.0.plain-expected.json} | 2 +- ...d.json => ksm.v2.12.0.plain-expected.json} | 2 +- 93 files changed, 6932 insertions(+), 5123 deletions(-) create mode 100644 metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.11.0.plain create mode 100644 metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain delete mode 100644 metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.8.2.plain delete mode 100644 metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.9.2.plain rename metricbeat/module/kubernetes/state_container/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (63%) rename metricbeat/module/kubernetes/state_container/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (63%) rename metricbeat/module/kubernetes/state_container/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (68%) rename metricbeat/module/kubernetes/state_container/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (68%) rename metricbeat/module/kubernetes/state_cronjob/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (87%) rename metricbeat/module/kubernetes/state_cronjob/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (87%) rename metricbeat/module/kubernetes/state_cronjob/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (87%) rename metricbeat/module/kubernetes/state_cronjob/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (87%) rename metricbeat/module/kubernetes/state_daemonset/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (100%) rename metricbeat/module/kubernetes/state_daemonset/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (100%) rename metricbeat/module/kubernetes/state_daemonset/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (100%) rename metricbeat/module/kubernetes/state_daemonset/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (100%) rename metricbeat/module/kubernetes/state_deployment/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (100%) rename metricbeat/module/kubernetes/state_deployment/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (100%) rename metricbeat/module/kubernetes/state_deployment/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (100%) rename metricbeat/module/kubernetes/state_deployment/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (100%) create mode 100644 metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.11.0.plain.expected create mode 100644 metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.12.0.plain.expected delete mode 100644 metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.8.2.plain.expected delete mode 100644 metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.9.2.plain.expected create mode 100644 metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.11.0.plain-expected.json create mode 100644 metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.12.0.plain-expected.json delete mode 100644 metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.8.2.plain-expected.json delete mode 100644 metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.9.2.plain-expected.json rename metricbeat/module/kubernetes/state_namespace/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (94%) rename metricbeat/module/kubernetes/state_namespace/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (94%) rename metricbeat/module/kubernetes/state_namespace/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (94%) rename metricbeat/module/kubernetes/state_namespace/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (94%) rename metricbeat/module/kubernetes/state_node/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (87%) rename metricbeat/module/kubernetes/state_node/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (87%) rename metricbeat/module/kubernetes/state_node/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (86%) rename metricbeat/module/kubernetes/state_node/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (86%) rename metricbeat/module/kubernetes/state_persistentvolume/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (100%) rename metricbeat/module/kubernetes/state_persistentvolume/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (100%) rename metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (100%) rename metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (100%) rename metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (92%) rename metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (92%) rename metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (93%) rename metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (93%) rename metricbeat/module/kubernetes/state_pod/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (71%) rename metricbeat/module/kubernetes/state_pod/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (71%) rename metricbeat/module/kubernetes/state_pod/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (72%) rename metricbeat/module/kubernetes/state_pod/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (72%) rename metricbeat/module/kubernetes/state_replicaset/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.11.0.plain.expected} (54%) rename metricbeat/module/kubernetes/state_replicaset/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.12.0.plain.expected} (68%) rename metricbeat/module/kubernetes/state_replicaset/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (55%) rename metricbeat/module/kubernetes/state_replicaset/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (69%) rename metricbeat/module/kubernetes/state_resourcequota/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (99%) rename metricbeat/module/kubernetes/state_resourcequota/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (99%) rename metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (99%) rename metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (99%) rename metricbeat/module/kubernetes/state_service/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (77%) rename metricbeat/module/kubernetes/state_service/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (77%) rename metricbeat/module/kubernetes/state_service/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (79%) rename metricbeat/module/kubernetes/state_service/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (79%) rename metricbeat/module/kubernetes/state_statefulset/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (94%) rename metricbeat/module/kubernetes/state_statefulset/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (94%) rename metricbeat/module/kubernetes/state_statefulset/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (95%) rename metricbeat/module/kubernetes/state_statefulset/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (95%) rename metricbeat/module/kubernetes/state_storageclass/_meta/test/{ksm.v2.8.2.plain.expected => ksm.v2.11.0.plain.expected} (91%) rename metricbeat/module/kubernetes/state_storageclass/_meta/test/{ksm.v2.9.2.plain.expected => ksm.v2.12.0.plain.expected} (91%) rename metricbeat/module/kubernetes/state_storageclass/_meta/testdata/{ksm.v2.8.2.plain-expected.json => ksm.v2.11.0.plain-expected.json} (92%) rename metricbeat/module/kubernetes/state_storageclass/_meta/testdata/{ksm.v2.9.2.plain-expected.json => ksm.v2.12.0.plain-expected.json} (92%) diff --git a/metricbeat/module/kubernetes/_meta/test/KSM/docs.plain b/metricbeat/module/kubernetes/_meta/test/KSM/docs.plain index 0310f9ffea6..e1900b34128 100644 --- a/metricbeat/module/kubernetes/_meta/test/KSM/docs.plain +++ b/metricbeat/module/kubernetes/_meta/test/KSM/docs.plain @@ -4,52 +4,52 @@ # TYPE kube_configmap_labels gauge # HELP kube_configmap_info [STABLE] Information about configmap. # TYPE kube_configmap_info gauge +kube_configmap_info{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 kube_configmap_info{namespace="kube-public",configmap="cluster-info"} 1 +kube_configmap_info{namespace="kube-system",configmap="coredns"} 1 +kube_configmap_info{namespace="kube-system",configmap="kubeadm-config"} 1 kube_configmap_info{namespace="kube-system",configmap="kubelet-config"} 1 +kube_configmap_info{namespace="default",configmap="example-redis-config"} 1 +kube_configmap_info{namespace="kube-system",configmap="kube-proxy"} 1 +kube_configmap_info{namespace="local-path-storage",configmap="local-path-config"} 1 +kube_configmap_info{namespace="default",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 kube_configmap_info{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 1 kube_configmap_info{namespace="kube-system",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="kube-system",configmap="kubeadm-config"} 1 -kube_configmap_info{namespace="local-path-storage",configmap="local-path-config"} 1 -kube_configmap_info{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 kube_configmap_info{namespace="kube-public",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="default",configmap="kube-root-ca.crt"} 1 kube_configmap_info{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="kube-system",configmap="kube-proxy"} 1 -kube_configmap_info{namespace="default",configmap="example-redis-config"} 1 -kube_configmap_info{namespace="kube-system",configmap="coredns"} 1 -kube_configmap_info{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 # HELP kube_configmap_created [STABLE] Unix creation timestamp # TYPE kube_configmap_created gauge -kube_configmap_created{namespace="kube-system",configmap="coredns"} 1.698675682e+09 -kube_configmap_created{namespace="kube-system",configmap="extension-apiserver-authentication"} 1.698675678e+09 -kube_configmap_created{namespace="kube-system",configmap="kube-proxy"} 1.698675682e+09 -kube_configmap_created{namespace="default",configmap="example-redis-config"} 1.69875116e+09 -kube_configmap_created{namespace="kube-public",configmap="cluster-info"} 1.698675681e+09 -kube_configmap_created{namespace="kube-system",configmap="kubelet-config"} 1.69867568e+09 -kube_configmap_created{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1.698675695e+09 -kube_configmap_created{namespace="kube-public",configmap="kube-root-ca.crt"} 1.698675695e+09 -kube_configmap_created{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 1.698675678e+09 -kube_configmap_created{namespace="kube-system",configmap="kube-root-ca.crt"} 1.698675695e+09 -kube_configmap_created{namespace="kube-system",configmap="kubeadm-config"} 1.69867568e+09 -kube_configmap_created{namespace="local-path-storage",configmap="local-path-config"} 1.698675685e+09 -kube_configmap_created{namespace="default",configmap="kube-root-ca.crt"} 1.698675695e+09 -kube_configmap_created{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1.698675695e+09 +kube_configmap_created{namespace="kube-public",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-system",configmap="coredns"} 1.713862184e+09 +kube_configmap_created{namespace="kube-system",configmap="kubeadm-config"} 1.713862183e+09 +kube_configmap_created{namespace="kube-system",configmap="kubelet-config"} 1.713862183e+09 +kube_configmap_created{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-public",configmap="cluster-info"} 1.713862184e+09 +kube_configmap_created{namespace="local-path-storage",configmap="local-path-config"} 1.713862186e+09 +kube_configmap_created{namespace="default",configmap="example-redis-config"} 1.713862291e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-proxy"} 1.713862184e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 1.713862181e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="default",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-system",configmap="extension-apiserver-authentication"} 1.713862181e+09 # HELP kube_configmap_metadata_resource_version Resource version representing a specific version of the configmap. # TYPE kube_configmap_metadata_resource_version gauge -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="extension-apiserver-authentication"} 26 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-proxy"} 268 -kube_configmap_metadata_resource_version{namespace="default",configmap="example-redis-config"} 27341 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="coredns"} 258 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubelet-config"} 236 -kube_configmap_metadata_resource_version{namespace="kube-public",configmap="cluster-info"} 393 -kube_configmap_metadata_resource_version{namespace="kube-public",configmap="kube-root-ca.crt"} 396 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 23 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-root-ca.crt"} 397 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubeadm-config"} 233 -kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="local-path-config"} 326 -kube_configmap_metadata_resource_version{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 395 -kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="kube-root-ca.crt"} 398 -kube_configmap_metadata_resource_version{namespace="default",configmap="kube-root-ca.crt"} 394 +kube_configmap_metadata_resource_version{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 320 +kube_configmap_metadata_resource_version{namespace="kube-public",configmap="cluster-info"} 338 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="coredns"} 218 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubeadm-config"} 199 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubelet-config"} 202 +kube_configmap_metadata_resource_version{namespace="default",configmap="example-redis-config"} 579 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-proxy"} 225 +kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="local-path-config"} 277 +kube_configmap_metadata_resource_version{namespace="default",configmap="kube-root-ca.crt"} 319 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="extension-apiserver-authentication"} 28 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 53 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-root-ca.crt"} 323 +kube_configmap_metadata_resource_version{namespace="kube-public",configmap="kube-root-ca.crt"} 322 +kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="kube-root-ca.crt"} 325 # HELP kube_cronjob_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_cronjob_annotations gauge # HELP kube_cronjob_labels [STABLE] Kubernetes labels converted to Prometheus labels. @@ -59,16 +59,16 @@ kube_configmap_metadata_resource_version{namespace="default",configmap="kube-roo kube_cronjob_info{namespace="default",cronjob="hello",schedule="*/1 * * * *",concurrency_policy="Allow"} 1 # HELP kube_cronjob_created [STABLE] Unix creation timestamp # TYPE kube_cronjob_created gauge -kube_cronjob_created{namespace="default",cronjob="hello"} 1.69875116e+09 +kube_cronjob_created{namespace="default",cronjob="hello"} 1.713862291e+09 # HELP kube_cronjob_status_active [STABLE] Active holds pointers to currently running jobs. # TYPE kube_cronjob_status_active gauge kube_cronjob_status_active{namespace="default",cronjob="hello"} 0 # HELP kube_cronjob_status_last_schedule_time [STABLE] LastScheduleTime keeps information of when was the last time the job was successfully scheduled. # TYPE kube_cronjob_status_last_schedule_time gauge -kube_cronjob_status_last_schedule_time{namespace="default",cronjob="hello"} 1.6987512e+09 +kube_cronjob_status_last_schedule_time{namespace="default",cronjob="hello"} 1.71387336e+09 # HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully. # TYPE kube_cronjob_status_last_successful_time gauge -kube_cronjob_status_last_successful_time{namespace="default",cronjob="hello"} 1.698751203e+09 +kube_cronjob_status_last_successful_time{namespace="default",cronjob="hello"} 1.713873363e+09 # HELP kube_cronjob_spec_suspend [STABLE] Suspend flag tells the controller to suspend subsequent executions. # TYPE kube_cronjob_spec_suspend gauge kube_cronjob_spec_suspend{namespace="default",cronjob="hello"} 0 @@ -76,10 +76,10 @@ kube_cronjob_spec_suspend{namespace="default",cronjob="hello"} 0 # TYPE kube_cronjob_spec_starting_deadline_seconds gauge # HELP kube_cronjob_next_schedule_time [STABLE] Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed. # TYPE kube_cronjob_next_schedule_time gauge -kube_cronjob_next_schedule_time{namespace="default",cronjob="hello"} 1.69875126e+09 +kube_cronjob_next_schedule_time{namespace="default",cronjob="hello"} 1.71387342e+09 # HELP kube_cronjob_metadata_resource_version [STABLE] Resource version representing a specific version of the cronjob. # TYPE kube_cronjob_metadata_resource_version gauge -kube_cronjob_metadata_resource_version{namespace="default",cronjob="hello"} 27475 +kube_cronjob_metadata_resource_version{namespace="default",cronjob="hello"} 16932 # HELP kube_cronjob_spec_successful_job_history_limit Successful job history limit tells the controller how many completed jobs should be preserved. # TYPE kube_cronjob_spec_successful_job_history_limit gauge kube_cronjob_spec_successful_job_history_limit{namespace="default",cronjob="hello"} 3 @@ -88,19 +88,19 @@ kube_cronjob_spec_successful_job_history_limit{namespace="default",cronjob="hell kube_cronjob_spec_failed_job_history_limit{namespace="default",cronjob="hello"} 1 # HELP kube_daemonset_created [STABLE] Unix creation timestamp # TYPE kube_daemonset_created gauge -kube_daemonset_created{namespace="kube-system",daemonset="kindnet"} 1.698675684e+09 -kube_daemonset_created{namespace="kube-system",daemonset="kube-proxy"} 1.698675682e+09 -kube_daemonset_created{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1.69875116e+09 +kube_daemonset_created{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1.713862291e+09 +kube_daemonset_created{namespace="kube-system",daemonset="kindnet"} 1.713862185e+09 +kube_daemonset_created{namespace="kube-system",daemonset="kube-proxy"} 1.713862184e+09 # HELP kube_daemonset_status_current_number_scheduled [STABLE] The number of nodes running at least one daemon pod and are supposed to. # TYPE kube_daemonset_status_current_number_scheduled gauge -kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 # HELP kube_daemonset_status_desired_number_scheduled [STABLE] The number of nodes that should be running the daemon pod. # TYPE kube_daemonset_status_desired_number_scheduled gauge +kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 # HELP kube_daemonset_status_number_available [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available # TYPE kube_daemonset_status_number_available gauge kube_daemonset_status_number_available{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 @@ -108,43 +108,43 @@ kube_daemonset_status_number_available{namespace="kube-system",daemonset="kindne kube_daemonset_status_number_available{namespace="kube-system",daemonset="kube-proxy"} 1 # HELP kube_daemonset_status_number_misscheduled [STABLE] The number of nodes running a daemon pod but are not supposed to. # TYPE kube_daemonset_status_number_misscheduled gauge -kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kube-proxy"} 0 kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kindnet"} 0 +kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kube-proxy"} 0 # HELP kube_daemonset_status_number_ready [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. # TYPE kube_daemonset_status_number_ready gauge +kube_daemonset_status_number_ready{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kindnet"} 1 kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_number_ready{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 # HELP kube_daemonset_status_number_unavailable [STABLE] The number of nodes that should be running the daemon pod and have none of the daemon pod running and available # TYPE kube_daemonset_status_number_unavailable gauge +kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kindnet"} 0 kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kube-proxy"} 0 -kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 # HELP kube_daemonset_status_observed_generation [STABLE] The most recent generation observed by the daemon set controller. # TYPE kube_daemonset_status_observed_generation gauge +kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kindnet"} 1 kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 # HELP kube_daemonset_status_updated_number_scheduled [STABLE] The total number of nodes that are running updated daemon pod # TYPE kube_daemonset_status_updated_number_scheduled gauge +kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 # HELP kube_daemonset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. # TYPE kube_daemonset_metadata_generation gauge +kube_daemonset_metadata_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kindnet"} 1 kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_metadata_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 # HELP kube_daemonset_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_daemonset_annotations gauge # HELP kube_daemonset_labels [STABLE] Kubernetes labels converted to Prometheus labels. # TYPE kube_daemonset_labels gauge # HELP kube_deployment_created [STABLE] Unix creation timestamp # TYPE kube_deployment_created gauge -kube_deployment_created{namespace="kube-system",deployment="coredns"} 1.698675682e+09 -kube_deployment_created{namespace="kube-system",deployment="kube-state-metrics"} 1.698751122e+09 -kube_deployment_created{namespace="local-path-storage",deployment="local-path-provisioner"} 1.698675685e+09 +kube_deployment_created{namespace="kube-system",deployment="coredns"} 1.713862184e+09 +kube_deployment_created{namespace="kube-system",deployment="kube-state-metrics"} 1.713862243e+09 +kube_deployment_created{namespace="local-path-storage",deployment="local-path-provisioner"} 1.713862186e+09 # HELP kube_deployment_status_replicas [STABLE] The number of replicas per deployment. # TYPE kube_deployment_status_replicas gauge kube_deployment_status_replicas{namespace="kube-system",deployment="coredns"} 2 @@ -152,14 +152,14 @@ kube_deployment_status_replicas{namespace="kube-system",deployment="kube-state-m kube_deployment_status_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 # HELP kube_deployment_status_replicas_ready [STABLE] The number of ready replicas per deployment. # TYPE kube_deployment_status_replicas_ready gauge -kube_deployment_status_replicas_ready{namespace="local-path-storage",deployment="local-path-provisioner"} 1 kube_deployment_status_replicas_ready{namespace="kube-system",deployment="coredns"} 2 kube_deployment_status_replicas_ready{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas_ready{namespace="local-path-storage",deployment="local-path-provisioner"} 1 # HELP kube_deployment_status_replicas_available [STABLE] The number of available replicas per deployment. # TYPE kube_deployment_status_replicas_available gauge +kube_deployment_status_replicas_available{namespace="local-path-storage",deployment="local-path-provisioner"} 1 kube_deployment_status_replicas_available{namespace="kube-system",deployment="coredns"} 2 kube_deployment_status_replicas_available{namespace="kube-system",deployment="kube-state-metrics"} 1 -kube_deployment_status_replicas_available{namespace="local-path-storage",deployment="local-path-provisioner"} 1 # HELP kube_deployment_status_replicas_unavailable [STABLE] The number of unavailable replicas per deployment. # TYPE kube_deployment_status_replicas_unavailable gauge kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="coredns"} 0 @@ -172,11 +172,17 @@ kube_deployment_status_replicas_updated{namespace="kube-system",deployment="kube kube_deployment_status_replicas_updated{namespace="local-path-storage",deployment="local-path-provisioner"} 1 # HELP kube_deployment_status_observed_generation [STABLE] The generation observed by the deployment controller. # TYPE kube_deployment_status_observed_generation gauge -kube_deployment_status_observed_generation{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_status_observed_generation{namespace="kube-system",deployment="kube-state-metrics"} 1 kube_deployment_status_observed_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_status_observed_generation{namespace="kube-system",deployment="coredns"} 1 +kube_deployment_status_observed_generation{namespace="kube-system",deployment="kube-state-metrics"} 2 # HELP kube_deployment_status_condition [STABLE] The current status conditions of a deployment. # TYPE kube_deployment_status_condition gauge +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="unknown"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="unknown"} 0 kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="true"} 1 kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="false"} 0 kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="unknown"} 0 @@ -189,12 +195,6 @@ kube_deployment_status_condition{namespace="local-path-storage",deployment="loca kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="true"} 1 kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="false"} 0 kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="unknown"} 0 # HELP kube_deployment_spec_replicas [STABLE] Number of desired pods for a deployment. # TYPE kube_deployment_spec_replicas gauge kube_deployment_spec_replicas{namespace="kube-system",deployment="coredns"} 2 @@ -217,23 +217,23 @@ kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",de kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="local-path-storage",deployment="local-path-provisioner"} 1 # HELP kube_deployment_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. # TYPE kube_deployment_metadata_generation gauge -kube_deployment_metadata_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 kube_deployment_metadata_generation{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_metadata_generation{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_metadata_generation{namespace="kube-system",deployment="kube-state-metrics"} 2 +kube_deployment_metadata_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 # HELP kube_deployment_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_deployment_annotations gauge # HELP kube_deployment_labels [STABLE] Kubernetes labels converted to Prometheus labels. # TYPE kube_deployment_labels gauge # HELP kube_endpoint_info [STABLE] Information about endpoint. # TYPE kube_endpoint_info gauge +kube_endpoint_info{namespace="default",endpoint="kubernetes"} 1 kube_endpoint_info{namespace="kube-system",endpoint="kube-dns"} 1 kube_endpoint_info{namespace="kube-system",endpoint="kube-state-metrics"} 1 -kube_endpoint_info{namespace="default",endpoint="kubernetes"} 1 # HELP kube_endpoint_created [STABLE] Unix creation timestamp # TYPE kube_endpoint_created gauge -kube_endpoint_created{namespace="default",endpoint="kubernetes"} 1.69867568e+09 -kube_endpoint_created{namespace="kube-system",endpoint="kube-dns"} 1.698675695e+09 -kube_endpoint_created{namespace="kube-system",endpoint="kube-state-metrics"} 1.698751122e+09 +kube_endpoint_created{namespace="default",endpoint="kubernetes"} 1.713862182e+09 +kube_endpoint_created{namespace="kube-system",endpoint="kube-dns"} 1.713862198e+09 +kube_endpoint_created{namespace="kube-system",endpoint="kube-state-metrics"} 1.713862243e+09 # HELP kube_endpoint_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_endpoint_annotations gauge # HELP kube_endpoint_labels [STABLE] Kubernetes labels converted to Prometheus labels. @@ -245,15 +245,15 @@ kube_endpoint_address_available{namespace="kube-system",endpoint="kube-dns"} 6 kube_endpoint_address_available{namespace="kube-system",endpoint="kube-state-metrics"} 2 # HELP kube_endpoint_address_not_ready (Deprecated since v2.6.0) Number of addresses not ready in endpoint # TYPE kube_endpoint_address_not_ready gauge +kube_endpoint_address_not_ready{namespace="default",endpoint="kubernetes"} 0 kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-dns"} 0 kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-state-metrics"} 0 -kube_endpoint_address_not_ready{namespace="default",endpoint="kubernetes"} 0 # HELP kube_endpoint_address [STABLE] Information about Endpoint available and non available addresses. # TYPE kube_endpoint_address gauge -kube_endpoint_address{namespace="default",endpoint="kubernetes",ip="172.18.0.2",ready="true"} 1 +kube_endpoint_address{namespace="kube-system",endpoint="kube-state-metrics",ip="10.244.0.174",ready="true"} 1 +kube_endpoint_address{namespace="default",endpoint="kubernetes",ip="172.21.0.2",ready="true"} 1 kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.3",ready="true"} 1 kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.4",ready="true"} 1 -kube_endpoint_address{namespace="kube-system",endpoint="kube-state-metrics",ip="10.244.0.5",ready="true"} 1 # HELP kube_endpoint_ports [STABLE] Information about the Endpoint ports. # TYPE kube_endpoint_ports gauge kube_endpoint_ports{namespace="default",endpoint="kubernetes",port_name="https",port_protocol="TCP",port_number="6443"} 1 @@ -269,82 +269,106 @@ kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_n # HELP kube_job_info [STABLE] Information about job. # TYPE kube_job_info gauge kube_job_info{namespace="default",job_name="hello"} 1 -kube_job_info{namespace="default",job_name="hello-28312520"} 1 +kube_job_info{namespace="default",job_name="hello-28564554"} 1 +kube_job_info{namespace="default",job_name="hello-28564555"} 1 +kube_job_info{namespace="default",job_name="hello-28564556"} 1 # HELP kube_job_created [STABLE] Unix creation timestamp # TYPE kube_job_created gauge -kube_job_created{namespace="default",job_name="hello"} 1.69875116e+09 -kube_job_created{namespace="default",job_name="hello-28312520"} 1.6987512e+09 +kube_job_created{namespace="default",job_name="hello"} 1.713862291e+09 +kube_job_created{namespace="default",job_name="hello-28564554"} 1.71387324e+09 +kube_job_created{namespace="default",job_name="hello-28564555"} 1.7138733e+09 +kube_job_created{namespace="default",job_name="hello-28564556"} 1.71387336e+09 # HELP kube_job_spec_parallelism [STABLE] The maximum desired number of pods the job should run at any given time. # TYPE kube_job_spec_parallelism gauge kube_job_spec_parallelism{namespace="default",job_name="hello"} 1 -kube_job_spec_parallelism{namespace="default",job_name="hello-28312520"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564554"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564555"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564556"} 1 # HELP kube_job_spec_completions [STABLE] The desired number of successfully finished pods the job should be run with. # TYPE kube_job_spec_completions gauge +kube_job_spec_completions{namespace="default",job_name="hello-28564555"} 1 +kube_job_spec_completions{namespace="default",job_name="hello-28564556"} 1 kube_job_spec_completions{namespace="default",job_name="hello"} 1 -kube_job_spec_completions{namespace="default",job_name="hello-28312520"} 1 +kube_job_spec_completions{namespace="default",job_name="hello-28564554"} 1 # HELP kube_job_spec_active_deadline_seconds [STABLE] The duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. # TYPE kube_job_spec_active_deadline_seconds gauge # HELP kube_job_status_succeeded [STABLE] The number of pods which reached Phase Succeeded. # TYPE kube_job_status_succeeded gauge +kube_job_status_succeeded{namespace="default",job_name="hello-28564554"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello-28564555"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello-28564556"} 1 kube_job_status_succeeded{namespace="default",job_name="hello"} 1 -kube_job_status_succeeded{namespace="default",job_name="hello-28312520"} 1 # HELP kube_job_status_failed [STABLE] The number of pods which reached Phase Failed and the reason for failure. # TYPE kube_job_status_failed gauge +kube_job_status_failed{namespace="default",job_name="hello-28564554"} 0 +kube_job_status_failed{namespace="default",job_name="hello-28564555"} 0 +kube_job_status_failed{namespace="default",job_name="hello-28564556"} 0 kube_job_status_failed{namespace="default",job_name="hello"} 0 -kube_job_status_failed{namespace="default",job_name="hello-28312520"} 0 # HELP kube_job_status_active [STABLE] The number of actively running pods. # TYPE kube_job_status_active gauge kube_job_status_active{namespace="default",job_name="hello"} 0 -kube_job_status_active{namespace="default",job_name="hello-28312520"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564554"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564555"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564556"} 0 # HELP kube_job_complete [STABLE] The job has completed its execution. # TYPE kube_job_complete gauge +kube_job_complete{namespace="default",job_name="hello-28564556",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564556",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564556",condition="unknown"} 0 kube_job_complete{namespace="default",job_name="hello",condition="true"} 1 kube_job_complete{namespace="default",job_name="hello",condition="false"} 0 kube_job_complete{namespace="default",job_name="hello",condition="unknown"} 0 -kube_job_complete{namespace="default",job_name="hello-28312520",condition="true"} 1 -kube_job_complete{namespace="default",job_name="hello-28312520",condition="false"} 0 -kube_job_complete{namespace="default",job_name="hello-28312520",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello-28564554",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564554",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564554",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello-28564555",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564555",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564555",condition="unknown"} 0 # HELP kube_job_failed [STABLE] The job has failed its execution. # TYPE kube_job_failed gauge # HELP kube_job_status_start_time [STABLE] StartTime represents time when the job was acknowledged by the Job Manager. # TYPE kube_job_status_start_time gauge -kube_job_status_start_time{namespace="default",job_name="hello"} 1.69875116e+09 -kube_job_status_start_time{namespace="default",job_name="hello-28312520"} 1.6987512e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564555"} 1.7138733e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564556"} 1.71387336e+09 +kube_job_status_start_time{namespace="default",job_name="hello"} 1.713862291e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564554"} 1.71387324e+09 # HELP kube_job_status_completion_time [STABLE] CompletionTime represents time when the job was completed. # TYPE kube_job_status_completion_time gauge -kube_job_status_completion_time{namespace="default",job_name="hello"} 1.698751181e+09 -kube_job_status_completion_time{namespace="default",job_name="hello-28312520"} 1.698751203e+09 +kube_job_status_completion_time{namespace="default",job_name="hello-28564556"} 1.713873363e+09 +kube_job_status_completion_time{namespace="default",job_name="hello"} 1.713862309e+09 +kube_job_status_completion_time{namespace="default",job_name="hello-28564554"} 1.713873242e+09 +kube_job_status_completion_time{namespace="default",job_name="hello-28564555"} 1.713873303e+09 # HELP kube_job_owner [STABLE] Information about the Job's owner. # TYPE kube_job_owner gauge +kube_job_owner{namespace="default",job_name="hello-28564554",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +kube_job_owner{namespace="default",job_name="hello-28564555",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +kube_job_owner{namespace="default",job_name="hello-28564556",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 kube_job_owner{namespace="default",job_name="hello",owner_kind="",owner_name="",owner_is_controller=""} 1 -kube_job_owner{namespace="default",job_name="hello-28312520",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 # HELP kube_lease_owner Information about the Lease's owner. # TYPE kube_lease_owner gauge kube_lease_owner{lease="kind-control-plane",owner_kind="Node",owner_name="kind-control-plane",namespace="kube-node-lease",lease_holder="kind-control-plane"} 1 -kube_lease_owner{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",owner_kind="",owner_name="",namespace="kube-system",lease_holder="apiserver-c7uylvfxlbqccnk6myfkwetzze_8320422a-fae5-4b81-aae3-99fa3262ba22"} 1 -kube_lease_owner{lease="kube-controller-manager",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_53a6c722-604e-4359-8b4d-d83b2e3290fd"} 1 -kube_lease_owner{lease="kube-scheduler",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_921eaa25-061b-4586-95b7-11023805cb0f"} 1 +kube_lease_owner{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",owner_kind="",owner_name="",namespace="kube-system",lease_holder="apiserver-c7uylvfxlbqccnk6myfkwetzze_a1affd56-56b4-400c-af43-2e8622119e0e"} 1 +kube_lease_owner{lease="kube-controller-manager",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_707366f0-363e-48ef-bf73-ce8a760a3c49"} 1 +kube_lease_owner{lease="kube-scheduler",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_fab57b50-1240-4428-8410-6dde0a5ba977"} 1 # HELP kube_lease_renew_time Kube lease renew time. # TYPE kube_lease_renew_time gauge -kube_lease_renew_time{lease="kube-scheduler",namespace="kube-system"} 1.698751224e+09 -kube_lease_renew_time{lease="kind-control-plane",namespace="kube-node-lease"} 1.698751225e+09 -kube_lease_renew_time{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",namespace="kube-system"} 1.698751219e+09 -kube_lease_renew_time{lease="kube-controller-manager",namespace="kube-system"} 1.698751224e+09 +kube_lease_renew_time{lease="kind-control-plane",namespace="kube-node-lease"} 1.713873366e+09 +kube_lease_renew_time{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",namespace="kube-system"} 1.713873366e+09 +kube_lease_renew_time{lease="kube-controller-manager",namespace="kube-system"} 1.713873373e+09 +kube_lease_renew_time{lease="kube-scheduler",namespace="kube-system"} 1.713873372e+09 # HELP kube_namespace_created [STABLE] Unix creation timestamp # TYPE kube_namespace_created gauge -kube_namespace_created{namespace="default"} 1.698675678e+09 -kube_namespace_created{namespace="kube-node-lease"} 1.698675678e+09 -kube_namespace_created{namespace="kube-public"} 1.698675678e+09 -kube_namespace_created{namespace="kube-system"} 1.698675678e+09 -kube_namespace_created{namespace="local-path-storage"} 1.698675685e+09 +kube_namespace_created{namespace="default"} 1.713862181e+09 +kube_namespace_created{namespace="kube-node-lease"} 1.713862181e+09 +kube_namespace_created{namespace="kube-public"} 1.713862181e+09 +kube_namespace_created{namespace="kube-system"} 1.713862181e+09 +kube_namespace_created{namespace="local-path-storage"} 1.713862186e+09 # HELP kube_namespace_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_namespace_annotations gauge # HELP kube_namespace_labels [STABLE] Kubernetes labels converted to Prometheus labels. # TYPE kube_namespace_labels gauge # HELP kube_namespace_status_phase [STABLE] kubernetes namespace status phase. # TYPE kube_namespace_status_phase gauge -kube_namespace_status_phase{namespace="default",phase="Active"} 1 -kube_namespace_status_phase{namespace="default",phase="Terminating"} 0 kube_namespace_status_phase{namespace="kube-node-lease",phase="Active"} 1 kube_namespace_status_phase{namespace="kube-node-lease",phase="Terminating"} 0 kube_namespace_status_phase{namespace="kube-public",phase="Active"} 1 @@ -353,18 +377,20 @@ kube_namespace_status_phase{namespace="kube-system",phase="Active"} 1 kube_namespace_status_phase{namespace="kube-system",phase="Terminating"} 0 kube_namespace_status_phase{namespace="local-path-storage",phase="Active"} 1 kube_namespace_status_phase{namespace="local-path-storage",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="default",phase="Active"} 1 +kube_namespace_status_phase{namespace="default",phase="Terminating"} 0 # HELP kube_namespace_status_condition The condition of a namespace. # TYPE kube_namespace_status_condition gauge # HELP kube_node_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_node_annotations gauge # HELP kube_node_created [STABLE] Unix creation timestamp # TYPE kube_node_created gauge -kube_node_created{node="kind-control-plane"} 1.698675678e+09 +kube_node_created{node="kind-control-plane"} 1.713862181e+09 # HELP kube_node_deletion_timestamp Unix deletion timestamp # TYPE kube_node_deletion_timestamp gauge # HELP kube_node_info [STABLE] Information about a cluster node. # TYPE kube_node_info gauge -kube_node_info{node="kind-control-plane",kernel_version="6.3.13-linuxkit",os_image="Debian GNU/Linux 11 (bullseye)",container_runtime_version="containerd://1.7.1",kubelet_version="v1.27.3",kubeproxy_version="v1.27.3",provider_id="kind://docker/kind/kind-control-plane",pod_cidr="10.244.0.0/24",system_uuid="a4242fe4a927486f817ac654536c455f",internal_ip="172.18.0.2"} 1 +kube_node_info{node="kind-control-plane",kernel_version="6.6.12-linuxkit",os_image="Debian GNU/Linux 12 (bookworm)",container_runtime_version="containerd://1.7.13",kubelet_version="v1.29.1",kubeproxy_version="v1.29.1",provider_id="kind://docker/kind/kind-control-plane",pod_cidr="10.244.0.0/24",system_uuid="d620d3a4eabe4f1290df7f4eeffe9565",internal_ip="172.21.0.2"} 1 # HELP kube_node_labels [STABLE] Kubernetes labels converted to Prometheus labels. # TYPE kube_node_labels gauge # HELP kube_node_role The role of a cluster node. @@ -377,20 +403,18 @@ kube_node_role{node="kind-control-plane",role="control-plane"} 1 kube_node_spec_unschedulable{node="kind-control-plane"} 0 # HELP kube_node_status_allocatable [STABLE] The allocatable for different resources of a node that are available for scheduling. # TYPE kube_node_status_allocatable gauge -kube_node_status_allocatable{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 1.18039744512e+11 -kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_1Gi",unit="byte"} 0 -kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 -kube_node_status_allocatable{node="kind-control-plane",resource="memory",unit="byte"} 1.2027240448e+10 kube_node_status_allocatable{node="kind-control-plane",resource="pods",unit="integer"} 110 -kube_node_status_allocatable{node="kind-control-plane",resource="cpu",unit="core"} 8 +kube_node_status_allocatable{node="kind-control-plane",resource="cpu",unit="core"} 16 +kube_node_status_allocatable{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 3.69759891456e+11 +kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 +kube_node_status_allocatable{node="kind-control-plane",resource="memory",unit="byte"} 1.6769380352e+10 # HELP kube_node_status_capacity [STABLE] The capacity for different resources of a node. # TYPE kube_node_status_capacity gauge +kube_node_status_capacity{node="kind-control-plane",resource="memory",unit="byte"} 1.6769380352e+10 kube_node_status_capacity{node="kind-control-plane",resource="pods",unit="integer"} 110 -kube_node_status_capacity{node="kind-control-plane",resource="cpu",unit="core"} 8 -kube_node_status_capacity{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 1.18039744512e+11 -kube_node_status_capacity{node="kind-control-plane",resource="hugepages_1Gi",unit="byte"} 0 +kube_node_status_capacity{node="kind-control-plane",resource="cpu",unit="core"} 16 +kube_node_status_capacity{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 3.69759891456e+11 kube_node_status_capacity{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 -kube_node_status_capacity{node="kind-control-plane",resource="memory",unit="byte"} 1.2027240448e+10 # HELP kube_node_status_condition [STABLE] The condition of a cluster node. # TYPE kube_node_status_condition gauge kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="true"} 0 @@ -405,6 +429,10 @@ kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",sta kube_node_status_condition{node="kind-control-plane",condition="Ready",status="true"} 1 kube_node_status_condition{node="kind-control-plane",condition="Ready",status="false"} 0 kube_node_status_condition{node="kind-control-plane",condition="Ready",status="unknown"} 0 +# HELP kube_node_status_addresses Node address information. +# TYPE kube_node_status_addresses gauge +kube_node_status_addresses{node="kind-control-plane",type="InternalIP",address="172.21.0.2"} 1 +kube_node_status_addresses{node="kind-control-plane",type="Hostname",address="kind-control-plane"} 1 # HELP kube_persistentvolumeclaim_labels [STABLE] Kubernetes labels converted to Prometheus labels. # TYPE kube_persistentvolumeclaim_labels gauge # HELP kube_persistentvolumeclaim_annotations Kubernetes annotations converted to Prometheus labels. @@ -427,7 +455,7 @@ kube_persistentvolumeclaim_access_mode{namespace="default",persistentvolumeclaim # TYPE kube_persistentvolumeclaim_status_condition gauge # HELP kube_persistentvolumeclaim_created Unix creation timestamp # TYPE kube_persistentvolumeclaim_created gauge -kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="task-pv-claim"} 1.69875116e+09 +kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="task-pv-claim"} 1.713862291e+09 # HELP kube_persistentvolumeclaim_deletion_timestamp Unix deletion timestamp # TYPE kube_persistentvolumeclaim_deletion_timestamp gauge # HELP kube_persistentvolume_claim_ref [STABLE] Information about the Persistent Volume Claim Reference. @@ -452,207 +480,245 @@ kube_persistentvolume_info{persistentvolume="task-pv-volume",storageclass="gener kube_persistentvolume_capacity_bytes{persistentvolume="task-pv-volume"} 2048 # HELP kube_persistentvolume_created Unix creation timestamp # TYPE kube_persistentvolume_created gauge -kube_persistentvolume_created{persistentvolume="task-pv-volume"} 1.69875116e+09 +kube_persistentvolume_created{persistentvolume="task-pv-volume"} 1.713862291e+09 # HELP kube_persistentvolume_deletion_timestamp Unix deletion timestamp # TYPE kube_persistentvolume_deletion_timestamp gauge # HELP kube_pod_completion_time [STABLE] Completion time in unix timestamp for a pod. # TYPE kube_pod_completion_time gauge -kube_pod_completion_time{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2"} 1.6987512e+09 -kube_pod_completion_time{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d"} 1.698751178e+09 +kube_pod_completion_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.713873372e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_completion_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862307e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 # HELP kube_pod_container_info [STABLE] Information about a container in a pod. # TYPE kube_pod_container_info gauge -kube_pod_container_info{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.10.1",image="registry.k8s.io/coredns/coredns:v1.10.1",image_id="sha256:ead0a4a53df89fd173874b46093b6e62d8c72967bbf606d672c9e8c9b601a4fc",container_id="containerd://cb21ffae2edbe263ba8da9c959743ac926d6a381f8a2796d45e55609d0236cde"} 1 -kube_pod_container_info{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",container="local-path-provisioner",image_spec="docker.io/kindest/local-path-provisioner:v20230511-dc714da8",image="docker.io/kindest/local-path-provisioner:v20230511-dc714da8",image_id="sha256:ce18e076e9d4b4283a79ef706170486225475fc4d64253710d94780fb6ec7627",container_id="containerd://ef9f1ffe0c621c8d0405f9b3c3ead8ec681cb20fc78c84f6b0a6814625c2a14e"} 1 -kube_pod_container_info{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79",container_id="containerd://1883412954332174bb097c8ce6a5281673857a68b7b942cc580547fee954e338"} 1 -kube_pod_container_info{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.10.1",image="registry.k8s.io/coredns/coredns:v1.10.1",image_id="sha256:ead0a4a53df89fd173874b46093b6e62d8c72967bbf606d672c9e8c9b601a4fc",container_id="containerd://06f66dcfbe4fb270101c8c0aa3279016c095c7d05363d498cec2c158423de359"} 1 -kube_pod_container_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd",image_spec="registry.k8s.io/etcd:3.5.7-0",image="registry.k8s.io/etcd:3.5.7-0",image_id="sha256:86b6af7dd652c1b38118be1c338e9354b33469e69a218f7e290a0ca5304ad681",container_id="containerd://eb97eb439a6c71ec0d24241d23c87b019776e770d09a3026a518b6910275ed5d"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager",image_spec="registry.k8s.io/kube-controller-manager:v1.27.3",image="registry.k8s.io/kube-controller-manager:v1.27.3",image_id="docker.io/library/import-2023-06-15@sha256:bdbeb95d8a0820cbc385e44f75ed25799ac8961e952ded26aa2a09b3377dfee7",container_id="containerd://d6a18a246da91637bbcf039f117c571db384a0f142de09ee3a57577d60d7f608"} 1 -kube_pod_container_info{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79",container_id="containerd://cca10a28581a786c0a5c7c7d19157c0a166cfc225552692f1411fb22fbb73160"} 1 -kube_pod_container_info{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni",image_spec="docker.io/kindest/kindnetd:v20230511-dc714da8",image="docker.io/kindest/kindnetd:v20230511-dc714da8",image_id="sha256:b0b1fa0f58c6e932b7f20bf208b2841317a1e8c88cc51b18358310bbd8ec95da",container_id="containerd://a53d00e82f6d7fa11e877e3999ec7190f35bc6d180366a41cab0a832f6b62be5"} 1 -kube_pod_container_info{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",container="nginx",image_spec="docker.io/nginx:1.24.0-alpine-slim",image="docker.io/library/nginx:1.24.0-alpine-slim",image_id="docker.io/library/nginx@sha256:fc1a9aa333462a071dfa7faf2ab92e6455b35427b50b24682b576869dca33abf",container_id="containerd://717896cdeb9925094fcb2d73c0ba5ced6505408d2f91c0052c424712f142c4ca"} 1 -kube_pod_container_info{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch",image_spec="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image_id="sha256:c896ab1149bb529ca28d76976885e04c0d754b6592f74b5478bfdcf248f84e62",container_id="containerd://1a055f5750a0e07584f76f426f8fcac5d3997dcf2d504be102161a465cbf2dc6"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver",image_spec="registry.k8s.io/kube-apiserver:v1.27.3",image="registry.k8s.io/kube-apiserver:v1.27.3",image_id="docker.io/library/import-2023-06-15@sha256:0202953c0b15043ca535e81d97f7062240ae66ea044b24378370d6e577782762",container_id="containerd://127454a7e946fb1b1916e5fb1b1706150e10b90b8a38f0f44b82c87838bdf5b8"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",container="kube-proxy",image_spec="registry.k8s.io/kube-proxy:v1.27.3",image="registry.k8s.io/kube-proxy:v1.27.3",image_id="docker.io/library/import-2023-06-15@sha256:ce2145a147b3f1fc440ba15eaa91b879ba9cbf929c8dd8f3190868f4373f2183",container_id="containerd://29b115d3c9daa4c23c5161ee58471dbd366df4002cea13640f433f01c1b92acf"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler",image_spec="registry.k8s.io/kube-scheduler:v1.27.3",image="registry.k8s.io/kube-scheduler:v1.27.3",image_id="docker.io/library/import-2023-06-15@sha256:9d6f903c0d4bf3b145c7bbc68727251ca1abf98aed7f8d2acb9f6a10ac81e8c2",container_id="containerd://eaa20604321d28389042e29474472748e89324b87586a9f9ac2c973d437da725"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",container="kube-state-metrics",image_spec="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0",image="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0",image_id="registry.k8s.io/kube-state-metrics/kube-state-metrics@sha256:ec5d6f6be2280212da0e55572b67d76f29c0342b3b6d24cc47b32d80ee3374a4",container_id="containerd://b80dff7b54cbe3eb9a6d1f11fda3c06cfe0e326d8e7a79b5b10d23345aed0152"} 1 +kube_pod_container_info{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.11.1",image="registry.k8s.io/coredns/coredns:v1.11.1",image_id="sha256:cbb01a7bd410dc08ba382018ab909a674fb0e48687f0c00797ed5bc34fcc6bb4",container_id="containerd://1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d"} 1 +kube_pod_container_info{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",image_spec="docker.io/kindest/kindnetd:v20240202-8f1494ea",image="docker.io/kindest/kindnetd:v20240202-8f1494ea",image_id="sha256:4950bb10b3f87e8d4a8f772a0d8934625cac4ccfa3675fea34cad0dab83fd5a5",container_id="containerd://92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager",image_spec="registry.k8s.io/kube-controller-manager:v1.29.1",image="registry.k8s.io/kube-controller-manager-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:f752b19ecffaf870204cca3268011949c4fb4f2e3d463ede1fdb23e34ce32b79",container_id="containerd://f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879"} 1 +kube_pod_container_info{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner",image_spec="docker.io/kindest/local-path-provisioner:v20240202-8f1494ea",image="docker.io/kindest/local-path-provisioner:v20240202-8f1494ea",image_id="sha256:0500518ebaa68d16973c65dc0b776813b50ab6e7e8f112fca41aca387a549d4f",container_id="containerd://033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b"} 1 +kube_pod_container_info{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod",image_spec="curlimages/curl",image="docker.io/curlimages/curl:latest",image_id="docker.io/curlimages/curl@sha256:25d29daeb9b14b89e2fa8cc17c70e4b188bca1466086907c2d9a4b56b59d8e21",container_id="containerd://be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483"} 1 +kube_pod_container_info{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757"} 1 +kube_pod_container_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",image_spec="registry.k8s.io/etcd:3.5.10-0",image="registry.k8s.io/etcd:3.5.10-0",image_id="sha256:a0eed15eed4498c145ef2f1883fcd300d7adbb759df73c901abd5383dda668e7",container_id="containerd://247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics",image_spec="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.12.0",image="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.12.0",image_id="registry.k8s.io/kube-state-metrics/kube-state-metrics@sha256:b401fae262a5decf83c4311083f8efb4d6ca7b6a733e57b95344cb8dccd14e11",container_id="containerd://54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585"} 1 +kube_pod_container_info{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx",image_spec="docker.io/nginx:1.24.0-alpine-slim",image="docker.io/library/nginx:1.24.0-alpine-slim",image_id="docker.io/library/nginx@sha256:5893dc08a2cb01e21592ff469346ebaacf49167fbc949f45e1c29111981b0427",container_id="containerd://4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver",image_spec="registry.k8s.io/kube-apiserver:v1.29.1",image="registry.k8s.io/kube-apiserver-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:294d2b5dab41cad4038a2998742899c4556e5713f9d0615814d5fb0c1d59006a",container_id="containerd://9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy",image_spec="registry.k8s.io/kube-proxy:v1.29.1",image="registry.k8s.io/kube-proxy-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:339df7e7b1b6b9795477e81e6f1568bd5e07e785240a7269d93f1728f46e89ae",container_id="containerd://8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138"} 1 +kube_pod_container_info{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",image_spec="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image_id="sha256:c896ab1149bb529ca28d76976885e04c0d754b6592f74b5478bfdcf248f84e62",container_id="containerd://bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler",image_spec="registry.k8s.io/kube-scheduler:v1.29.1",image="registry.k8s.io/kube-scheduler-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:7ee1db230fd72d5ee5a6614fd69c4aee629ab442b557677faa9c873014956fbb",container_id="containerd://cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450"} 1 +kube_pod_container_info{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.11.1",image="registry.k8s.io/coredns/coredns:v1.11.1",image_id="sha256:cbb01a7bd410dc08ba382018ab909a674fb0e48687f0c00797ed5bc34fcc6bb4",container_id="containerd://03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4"} 1 # HELP kube_pod_container_resource_limits The number of requested limit resource by a container. It is recommended to use the kube_pod_resource_limits metric exposed by kube-scheduler instead, as it is more precise. # TYPE kube_pod_container_resource_limits gauge -kube_pod_container_resource_limits{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 -kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 -kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 -kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 +kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 # HELP kube_pod_container_resource_requests The number of requested request resource by a container. It is recommended to use the kube_pod_resource_requests metric exposed by kube-scheduler instead, as it is more precise. # TYPE kube_pod_container_resource_requests gauge -kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver",node="kind-control-plane",resource="cpu",unit="core"} 0.25 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd",node="kind-control-plane",resource="memory",unit="byte"} 1.048576e+08 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager",node="kind-control-plane",resource="cpu",unit="core"} 0.2 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager",node="kind-control-plane",resource="cpu",unit="core"} 0.2 +kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",node="kind-control-plane",resource="memory",unit="byte"} 1.048576e+08 +kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver",node="kind-control-plane",resource="cpu",unit="core"} 0.25 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 # HELP kube_pod_container_state_started [STABLE] Start time in unix timestamp for a pod container. # TYPE kube_pod_container_state_started gauge -kube_pod_container_state_started{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns"} 1.6986757e+09 -kube_pod_container_state_started{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",container="local-path-provisioner"} 1.6986757e+09 -kube_pod_container_state_started{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello"} 1.6987512e+09 -kube_pod_container_state_started{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns"} 1.6986757e+09 -kube_pod_container_state_started{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd"} 1.698675675e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager"} 1.698675673e+09 -kube_pod_container_state_started{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello"} 1.698751178e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni"} 1.698675698e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver"} 1.698675673e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",container="kube-proxy"} 1.698675697e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler"} 1.698675673e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",container="kube-state-metrics"} 1.698751125e+09 -kube_pod_container_state_started{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",container="nginx"} 1.698751164e+09 -kube_pod_container_state_started{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch"} 1.698751173e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 1.71387324e+09 +kube_pod_container_state_started{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1.713862203e+09 +kube_pod_container_state_started{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1.713862304e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1.713862178e+09 +kube_pod_container_state_started{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1.713862203e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 1.71387336e+09 +kube_pod_container_state_started{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 1.713873372e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 1.7138733e+09 +kube_pod_container_state_started{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 1.713862307e+09 +kube_pod_container_state_started{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1.713862179e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1.713862201e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1.713862178e+09 +kube_pod_container_state_started{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1.713862203e+09 +kube_pod_container_state_started{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1.71386231e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1.713862178e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1.7138622e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 1.713873336e+09 # HELP kube_pod_container_status_last_terminated_reason Describes the last reason the container was in terminated state. # TYPE kube_pod_container_status_last_terminated_reason gauge # HELP kube_pod_container_status_last_terminated_exitcode Describes the exit code for the last container in terminated state. # TYPE kube_pod_container_status_last_terminated_exitcode gauge +# HELP kube_pod_container_status_last_terminated_timestamp Last terminated time for a pod container in unix timestamp. +# TYPE kube_pod_container_status_last_terminated_timestamp gauge # HELP kube_pod_container_status_ready [STABLE] Describes whether the containers readiness check succeeded. # TYPE kube_pod_container_status_ready gauge -kube_pod_container_status_ready{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni"} 1 -kube_pod_container_status_ready{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",container="nginx"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",container="kube-proxy"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",container="kube-state-metrics"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns"} 1 -kube_pod_container_status_ready{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",container="local-path-provisioner"} 1 -kube_pod_container_status_ready{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello"} 0 -kube_pod_container_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager"} 1 -kube_pod_container_status_ready{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello"} 0 +kube_pod_container_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1 +kube_pod_container_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 1 +kube_pod_container_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1 # HELP kube_pod_container_status_restarts_total [STABLE] The number of container restarts per container. # TYPE kube_pod_container_status_restarts_total counter -kube_pod_container_status_restarts_total{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",container="kube-proxy"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",container="kube-state-metrics"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",container="nginx"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns"} 0 -kube_pod_container_status_restarts_total{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",container="local-path-provisioner"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +kube_pod_container_status_restarts_total{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 # HELP kube_pod_container_status_running [STABLE] Describes whether the container is currently in running state. # TYPE kube_pod_container_status_running gauge -kube_pod_container_status_running{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",container="kube-proxy"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",container="kube-state-metrics"} 1 -kube_pod_container_status_running{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",container="nginx"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns"} 1 -kube_pod_container_status_running{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",container="local-path-provisioner"} 1 -kube_pod_container_status_running{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello"} 0 -kube_pod_container_status_running{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager"} 1 -kube_pod_container_status_running{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello"} 0 -kube_pod_container_status_running{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_running{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_running{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1 +kube_pod_container_status_running{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1 +kube_pod_container_status_running{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1 # HELP kube_pod_container_status_terminated [STABLE] Describes whether the container is currently in terminated state. # TYPE kube_pod_container_status_terminated gauge -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager"} 0 -kube_pod_container_status_terminated{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello"} 1 -kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",container="kube-state-metrics"} 0 -kube_pod_container_status_terminated{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",container="nginx"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",container="kube-proxy"} 0 -kube_pod_container_status_terminated{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello"} 1 -kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns"} 0 -kube_pod_container_status_terminated{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",container="local-path-provisioner"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +kube_pod_container_status_terminated{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 1 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 0 +kube_pod_container_status_terminated{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 # HELP kube_pod_container_status_terminated_reason Describes the reason the container is currently in terminated state. # TYPE kube_pod_container_status_terminated_reason gauge -kube_pod_container_status_terminated_reason{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello",reason="Completed"} 1 -kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello",reason="Completed"} 1 # HELP kube_pod_container_status_waiting [STABLE] Describes whether the container is currently in waiting state. # TYPE kube_pod_container_status_waiting gauge -kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",container="coredns"} 0 -kube_pod_container_status_waiting{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",container="local-path-provisioner"} 0 -kube_pod_container_status_waiting{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",container="hello"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",container="coredns"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",container="etcd"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",container="kube-controller-manager"} 0 -kube_pod_container_status_waiting{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",container="hello"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",container="kindnet-cni"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",container="kube-apiserver"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",container="kube-proxy"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",container="kube-scheduler"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",container="kube-state-metrics"} 0 -kube_pod_container_status_waiting{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",container="nginx"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +kube_pod_container_status_waiting{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 0 +kube_pod_container_status_waiting{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 # HELP kube_pod_container_status_waiting_reason [STABLE] Describes the reason the container is currently in waiting state. # TYPE kube_pod_container_status_waiting_reason gauge # HELP kube_pod_created [STABLE] Unix creation timestamp # TYPE kube_pod_created gauge -kube_pod_created{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915"} 1.698675695e+09 -kube_pod_created{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91"} 1.698751122e+09 -kube_pod_created{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14"} 1.69875116e+09 -kube_pod_created{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452"} 1.69875116e+09 -kube_pod_created{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c"} 1.698675682e+09 -kube_pod_created{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72"} 1.698675695e+09 -kube_pod_created{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613"} 1.698675682e+09 -kube_pod_created{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba"} 1.698675695e+09 -kube_pod_created{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f"} 1.698675695e+09 -kube_pod_created{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2"} 1.6987512e+09 -kube_pod_created{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d"} 1.69875116e+09 -kube_pod_created{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3"} 1.698675695e+09 -kube_pod_created{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae"} 1.69867568e+09 -kube_pod_created{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4"} 1.698675682e+09 +kube_pod_created{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862199e+09 +kube_pod_created{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +kube_pod_created{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_created{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_created{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_created{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_created{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 +kube_pod_created{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_created{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_created{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_created{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862199e+09 # HELP kube_pod_deletion_timestamp Unix deletion timestamp # TYPE kube_pod_deletion_timestamp gauge # HELP kube_pod_info [STABLE] Information about pod. # TYPE kube_pod_info gauge -kube_pod_info{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",host_ip="172.18.0.2",pod_ip="10.244.0.4",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-5d78c9869d",priority_class="system-cluster-critical",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",host_ip="172.18.0.2",pod_ip="10.244.0.8",node="kind-control-plane",created_by_kind="Job",created_by_name="hello",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kindnet",priority_class="",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kube-proxy",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",host_ip="172.18.0.2",pod_ip="10.244.0.5",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="kube-state-metrics-7857446fb4",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",host_ip="172.18.0.2",pod_ip="10.244.0.6",node="kind-control-plane",created_by_kind="StatefulSet",created_by_name="web",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",host_ip="172.18.0.2",pod_ip="10.244.0.7",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="fluentd-elasticsearch",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",host_ip="172.18.0.2",pod_ip="10.244.0.3",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-5d78c9869d",priority_class="system-cluster-critical",host_network="false"} 1 -kube_pod_info{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",host_ip="172.18.0.2",pod_ip="10.244.0.2",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="local-path-provisioner-6bc4bddd6b",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",host_ip="172.18.0.2",pod_ip="10.244.0.9",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28312520",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",host_ip="172.21.0.2",pod_ip="10.244.0.2",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="local-path-provisioner-7577fdbbfb",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",host_ip="172.21.0.2",pod_ip="10.244.0.177",node="kind-control-plane",created_by_kind="",created_by_name="",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",host_ip="172.21.0.2",pod_ip="10.244.0.173",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564555",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",host_ip="172.21.0.2",pod_ip="10.244.0.7",node="kind-control-plane",created_by_kind="Job",created_by_name="hello",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kindnet",priority_class="",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",host_ip="172.21.0.2",pod_ip="10.244.0.8",node="kind-control-plane",created_by_kind="StatefulSet",created_by_name="web",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kube-proxy",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",host_ip="172.21.0.2",pod_ip="10.244.0.174",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="kube-state-metrics-5bcd4898",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",host_ip="172.21.0.2",pod_ip="10.244.0.172",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564554",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",host_ip="172.21.0.2",pod_ip="10.244.0.4",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-76f75df574",priority_class="system-cluster-critical",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",host_ip="172.21.0.2",pod_ip="10.244.0.6",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="fluentd-elasticsearch",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",host_ip="172.21.0.2",pod_ip="10.244.0.3",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-76f75df574",priority_class="system-cluster-critical",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",host_ip="172.21.0.2",pod_ip="10.244.0.176",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564556",priority_class="",host_network="false"} 1 # HELP kube_pod_ips Pod IP addresses # TYPE kube_pod_ips gauge -kube_pod_ips{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",ip="10.244.0.5",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",ip="10.244.0.6",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",ip="10.244.0.7",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",ip="10.244.0.9",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",ip="10.244.0.3",ip_family="4"} 1 -kube_pod_ips{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",ip="10.244.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",ip="10.244.0.8",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",ip="10.244.0.4",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",ip="172.18.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",ip="10.244.0.172",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",ip="10.244.0.4",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",ip="10.244.0.6",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",ip="10.244.0.3",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",ip="10.244.0.176",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",ip="10.244.0.177",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",ip="10.244.0.173",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",ip="10.244.0.7",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",ip="10.244.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",ip="10.244.0.8",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",ip="10.244.0.174",ip_family="4"} 1 # HELP kube_pod_init_container_info [STABLE] Information about an init container in a pod. # TYPE kube_pod_init_container_info gauge # HELP kube_pod_init_container_resource_limits The number of requested limit resource by an init container. @@ -685,36 +751,42 @@ kube_pod_ips{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b # TYPE kube_pod_overhead_memory_bytes gauge # HELP kube_pod_owner [STABLE] Information about the Pod's owner. # TYPE kube_pod_owner gauge -kube_pod_owner{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",owner_kind="DaemonSet",owner_name="kindnet",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",owner_kind="ReplicaSet",owner_name="kube-state-metrics-7857446fb4",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",owner_kind="StatefulSet",owner_name="web",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",owner_kind="DaemonSet",owner_name="fluentd-elasticsearch",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",owner_kind="DaemonSet",owner_name="kube-proxy",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",owner_kind="Job",owner_name="hello-28312520",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",owner_kind="ReplicaSet",owner_name="coredns-5d78c9869d",owner_is_controller="true"} 1 -kube_pod_owner{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",owner_kind="ReplicaSet",owner_name="local-path-provisioner-6bc4bddd6b",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",owner_kind="Job",owner_name="hello",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",owner_kind="ReplicaSet",owner_name="coredns-5d78c9869d",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",owner_kind="StatefulSet",owner_name="web",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",owner_kind="DaemonSet",owner_name="kube-proxy",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",owner_kind="ReplicaSet",owner_name="kube-state-metrics-5bcd4898",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",owner_kind="Job",owner_name="hello-28564554",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",owner_kind="ReplicaSet",owner_name="coredns-76f75df574",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",owner_kind="DaemonSet",owner_name="fluentd-elasticsearch",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",owner_kind="ReplicaSet",owner_name="coredns-76f75df574",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",owner_kind="Job",owner_name="hello-28564556",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",owner_kind="",owner_name="",owner_is_controller=""} 1 +kube_pod_owner{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",owner_kind="Job",owner_name="hello-28564555",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",owner_kind="Job",owner_name="hello",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",owner_kind="DaemonSet",owner_name="kindnet",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",owner_kind="ReplicaSet",owner_name="local-path-provisioner-7577fdbbfb",owner_is_controller="true"} 1 # HELP kube_pod_restart_policy [STABLE] Describes the restart policy in use by this pod. # TYPE kube_pod_restart_policy gauge -kube_pod_restart_policy{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",type="OnFailure"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",type="Always"} 1 -kube_pod_restart_policy{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",type="Always"} 1 +kube_pod_restart_policy{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",type="OnFailure"} 1 # HELP kube_pod_runtimeclass_name_info The runtimeclass associated with the pod. # TYPE kube_pod_runtimeclass_name_info gauge # HELP kube_pod_spec_volumes_persistentvolumeclaims_info [STABLE] Information about persistentvolumeclaim volumes in a pod. @@ -723,479 +795,581 @@ kube_pod_restart_policy{namespace="default",pod="hello-28312520-d5d5s",uid="bddd # TYPE kube_pod_spec_volumes_persistentvolumeclaims_readonly gauge # HELP kube_pod_start_time [STABLE] Start time in unix timestamp for a pod. # TYPE kube_pod_start_time gauge -kube_pod_start_time{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91"} 1.698751122e+09 -kube_pod_start_time{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14"} 1.69875116e+09 -kube_pod_start_time{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452"} 1.69875116e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c"} 1.698675682e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72"} 1.698675695e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613"} 1.698675682e+09 -kube_pod_start_time{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba"} 1.698675699e+09 -kube_pod_start_time{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f"} 1.698675699e+09 -kube_pod_start_time{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2"} 1.6987512e+09 -kube_pod_start_time{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d"} 1.69875116e+09 -kube_pod_start_time{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3"} 1.698675699e+09 -kube_pod_start_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae"} 1.698675682e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4"} 1.698675682e+09 -kube_pod_start_time{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915"} 1.698675695e+09 +kube_pod_start_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_start_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_start_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_start_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_start_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 +kube_pod_start_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_start_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_start_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_start_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 # HELP kube_pod_status_phase [STABLE] The pods current phase. # TYPE kube_pod_status_phase gauge -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",phase="Running"} 1 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",phase="Pending"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",phase="Failed"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",phase="Unknown"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",phase="Succeeded"} 1 -kube_pod_status_phase{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",phase="Running"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",phase="Succeeded"} 1 -kube_pod_status_phase{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",phase="Running"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Running"} 1 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Pending"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Failed"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Unknown"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Running"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Running"} 0 # HELP kube_pod_status_qos_class The pods current qosClass. # TYPE kube_pod_status_qos_class gauge -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",qos_class="Guaranteed"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="Guaranteed"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="Guaranteed"} 0 # HELP kube_pod_status_ready [STABLE] Describes whether the pod is ready to serve requests. # TYPE kube_pod_status_ready gauge -kube_pod_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",condition="unknown"} 0 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",condition="true"} 1 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",condition="false"} 0 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",condition="true"} 0 -kube_pod_status_ready{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",condition="false"} 1 -kube_pod_status_ready{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",condition="true"} 0 -kube_pod_status_ready{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",condition="false"} 1 -kube_pod_status_ready{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",condition="true"} 1 -kube_pod_status_ready{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",condition="false"} 0 -kube_pod_status_ready{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="true"} 0 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="false"} 1 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="unknown"} 0 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="true"} 1 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="false"} 0 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="true"} 1 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="false"} 0 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="unknown"} 0 # HELP kube_pod_status_ready_time Readiness achieved time in unix timestamp for a pod. # TYPE kube_pod_status_ready_time gauge -kube_pod_status_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c"} 1.698675692e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72"} 1.698675697e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613"} 1.698675684e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91"} 1.698751133e+09 -kube_pod_status_ready_time{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14"} 1.698751165e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452"} 1.698751174e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba"} 1.698675701e+09 -kube_pod_status_ready_time{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f"} 1.698675701e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3"} 1.698675701e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae"} 1.698675692e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4"} 1.698675686e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915"} 1.698675698e+09 +kube_pod_status_ready_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862311e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862195e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.7138622e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873343e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862304e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862197e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862189e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862201e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862193e+09 # HELP kube_pod_status_initialized_time Initialized time in unix timestamp for a pod. # TYPE kube_pod_status_initialized_time gauge -kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba"} 1.698675699e+09 -kube_pod_status_initialized_time{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f"} 1.698675699e+09 -kube_pod_status_initialized_time{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2"} 1.6987512e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3"} 1.698675699e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae"} 1.698675682e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4"} 1.698675682e+09 -kube_pod_status_initialized_time{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d"} 1.69875116e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915"} 1.698675695e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c"} 1.698675682e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72"} 1.698675695e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613"} 1.698675682e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91"} 1.698751122e+09 -kube_pod_status_initialized_time{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14"} 1.69875116e+09 -kube_pod_status_initialized_time{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452"} 1.69875116e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +kube_pod_status_initialized_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 # HELP kube_pod_status_container_ready_time Readiness achieved time in unix timestamp for a pod containers. # TYPE kube_pod_status_container_ready_time gauge -kube_pod_status_container_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452"} 1.698751174e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c"} 1.698675692e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72"} 1.698675697e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613"} 1.698675684e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91"} 1.698751133e+09 -kube_pod_status_container_ready_time{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14"} 1.698751165e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba"} 1.698675701e+09 -kube_pod_status_container_ready_time{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f"} 1.698675701e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3"} 1.698675701e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae"} 1.698675692e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4"} 1.698675686e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915"} 1.698675698e+09 +kube_pod_status_container_ready_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862204e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862189e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862201e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862193e+09 +kube_pod_status_container_ready_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862311e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862195e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.7138622e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873343e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862204e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862304e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862197e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862204e+09 # HELP kube_pod_status_reason The pod status reasons # TYPE kube_pod_status_reason gauge -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",reason="Evicted"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="Evicted"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="UnexpectedAdmissionError"} 0 # HELP kube_pod_status_scheduled [STABLE] Describes the status of the scheduling process for the pod. # TYPE kube_pod_status_scheduled gauge -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",condition="true"} 1 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",condition="false"} 0 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="true"} 1 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="false"} 0 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="unknown"} 0 # HELP kube_pod_status_scheduled_time [STABLE] Unix timestamp when pod moved into scheduled status # TYPE kube_pod_status_scheduled_time gauge -kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3"} 1.698675699e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae"} 1.698675682e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4"} 1.698675682e+09 -kube_pod_status_scheduled_time{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d"} 1.69875116e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915"} 1.698675695e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c"} 1.698675682e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72"} 1.698675695e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613"} 1.698675682e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91"} 1.698751122e+09 -kube_pod_status_scheduled_time{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14"} 1.69875116e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452"} 1.69875116e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba"} 1.698675699e+09 -kube_pod_status_scheduled_time{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f"} 1.698675699e+09 -kube_pod_status_scheduled_time{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2"} 1.6987512e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_status_scheduled_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 # HELP kube_pod_status_unschedulable [STABLE] Describes the unschedulable status for the pod. # TYPE kube_pod_status_unschedulable gauge # HELP kube_pod_tolerations Information about the pod tolerations # TYPE kube_pod_tolerations gauge -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",key="CriticalAddonsOnly",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",key="node-role.kubernetes.io/control-plane",operator="Equal",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",key="node-role.kubernetes.io/master",operator="Equal",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",key="CriticalAddonsOnly",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node-role.kubernetes.io/control-plane",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node-role.kubernetes.io/master",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="CriticalAddonsOnly",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node-role.kubernetes.io/control-plane",operator="Equal",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node-role.kubernetes.io/master",operator="Equal",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="CriticalAddonsOnly",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node-role.kubernetes.io/control-plane",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node-role.kubernetes.io/master",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",operator="Exists",effect="NoExecute"} 1 # HELP kube_pod_service_account The service account for a pod. # TYPE kube_pod_service_account gauge -kube_pod_service_account{namespace="kube-system",pod="coredns-5d78c9869d-gskzq",uid="0192ac17-3647-43b0-8d13-cb24203034f3",service_account="coredns"} 1 -kube_pod_service_account{namespace="kube-system",pod="etcd-kind-control-plane",uid="e90dd6ea-914a-4a62-b49f-052418bfcfae",service_account=""} 1 -kube_pod_service_account{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="bff67aec-80ec-4e8f-95f8-40941ec0c4a4",service_account=""} 1 -kube_pod_service_account{namespace="default",pod="hello-mwrpw",uid="211c48b4-17e1-4336-bc20-1975a6b1d60d",service_account="default"} 1 -kube_pod_service_account{namespace="kube-system",pod="kindnet-xg6gs",uid="ecb2283b-05a4-4a4b-b9da-c1cc217e2915",service_account="kindnet"} 1 -kube_pod_service_account{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8cb4d4e1-b8b3-4bab-adc2-3e9d3687724c",service_account=""} 1 -kube_pod_service_account{namespace="kube-system",pod="kube-proxy-2nq9k",uid="5c50d0f9-7c5d-47d5-a72e-b334a3158b72",service_account="kube-proxy"} 1 -kube_pod_service_account{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="75e7ec28-65b1-4a71-8791-2069f3e4f613",service_account=""} 1 -kube_pod_service_account{namespace="kube-system",pod="kube-state-metrics-7857446fb4-x78j6",uid="20296a0b-ede0-4678-b56b-2dd7ad886b91",service_account="kube-state-metrics"} 1 -kube_pod_service_account{namespace="default",pod="web-0",uid="e9cebbf1-9f61-45b5-b4d2-d6b2a4768d14",service_account="default"} 1 -kube_pod_service_account{namespace="kube-system",pod="fluentd-elasticsearch-m2tlp",uid="7c4da822-be1a-4ee2-9f43-fded815d2452",service_account="default"} 1 -kube_pod_service_account{namespace="kube-system",pod="coredns-5d78c9869d-crtn9",uid="e4f69fb3-d1e7-43fa-bf55-6dcac2ea2dba",service_account="coredns"} 1 -kube_pod_service_account{namespace="local-path-storage",pod="local-path-provisioner-6bc4bddd6b-6vl7d",uid="434ec161-f185-47ea-ade3-7e8ee282f14f",service_account="local-path-provisioner-service-account"} 1 -kube_pod_service_account{namespace="default",pod="hello-28312520-d5d5s",uid="bddd7996-bc17-4f38-ac6c-5274a00ff1f2",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",service_account="coredns"} 1 +kube_pod_service_account{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",service_account="coredns"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",service_account="kindnet"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",service_account=""} 1 +kube_pod_service_account{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",service_account="local-path-provisioner-service-account"} 1 +kube_pod_service_account{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",service_account="kube-proxy"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",service_account="kube-state-metrics"} 1 +# HELP kube_pod_scheduler The scheduler for a pod. +# TYPE kube_pod_scheduler gauge +kube_pod_scheduler{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",name="default-scheduler"} 1 # HELP kube_replicaset_created [STABLE] Unix creation timestamp # TYPE kube_replicaset_created gauge -kube_replicaset_created{namespace="kube-system",replicaset="coredns-5d78c9869d"} 1.698675695e+09 -kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4"} 1.698751122e+09 -kube_replicaset_created{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b"} 1.698675695e+09 +kube_replicaset_created{namespace="kube-system",replicaset="coredns-76f75df574"} 1.713862198e+09 +kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1.713873333e+09 +kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 1.713862243e+09 +kube_replicaset_created{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1.713862198e+09 # HELP kube_replicaset_status_replicas [STABLE] The number of replicas per ReplicaSet. # TYPE kube_replicaset_status_replicas gauge -kube_replicaset_status_replicas{namespace="kube-system",replicaset="coredns-5d78c9869d"} 2 -kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4"} 1 -kube_replicaset_status_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b"} 1 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 # HELP kube_replicaset_status_fully_labeled_replicas [STABLE] The number of fully labeled replicas per ReplicaSet. # TYPE kube_replicaset_status_fully_labeled_replicas gauge -kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4"} 1 -kube_replicaset_status_fully_labeled_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b"} 1 -kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="coredns-5d78c9869d"} 2 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_fully_labeled_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 # HELP kube_replicaset_status_ready_replicas [STABLE] The number of ready replicas per ReplicaSet. # TYPE kube_replicaset_status_ready_replicas gauge -kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="coredns-5d78c9869d"} 2 -kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4"} 1 -kube_replicaset_status_ready_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b"} 1 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_ready_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 # HELP kube_replicaset_status_observed_generation [STABLE] The generation observed by the ReplicaSet controller. # TYPE kube_replicaset_status_observed_generation gauge -kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="coredns-5d78c9869d"} 1 -kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4"} 1 -kube_replicaset_status_observed_generation{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b"} 1 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="coredns-76f75df574"} 1 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 2 +kube_replicaset_status_observed_generation{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 # HELP kube_replicaset_spec_replicas [STABLE] Number of desired pods for a ReplicaSet. # TYPE kube_replicaset_spec_replicas gauge -kube_replicaset_spec_replicas{namespace="kube-system",replicaset="coredns-5d78c9869d"} 2 -kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4"} 1 -kube_replicaset_spec_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b"} 1 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_spec_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 # HELP kube_replicaset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. # TYPE kube_replicaset_metadata_generation gauge -kube_replicaset_metadata_generation{namespace="kube-system",replicaset="coredns-5d78c9869d"} 1 -kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4"} 1 -kube_replicaset_metadata_generation{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b"} 1 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="coredns-76f75df574"} 1 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 2 +kube_replicaset_metadata_generation{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 # HELP kube_replicaset_owner [STABLE] Information about the ReplicaSet's owner. # TYPE kube_replicaset_owner gauge -kube_replicaset_owner{namespace="kube-system",replicaset="coredns-5d78c9869d",owner_kind="Deployment",owner_name="coredns",owner_is_controller="true"} 1 -kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-7857446fb4",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 -kube_replicaset_owner{namespace="local-path-storage",replicaset="local-path-provisioner-6bc4bddd6b",owner_kind="Deployment",owner_name="local-path-provisioner",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="coredns-76f75df574",owner_kind="Deployment",owner_name="coredns",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb",owner_kind="Deployment",owner_name="local-path-provisioner",owner_is_controller="true"} 1 # HELP kube_replicaset_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_replicaset_annotations gauge # HELP kube_replicaset_labels [STABLE] Kubernetes labels converted to Prometheus labels. # TYPE kube_replicaset_labels gauge # HELP kube_resourcequota_created [STABLE] Unix creation timestamp # TYPE kube_resourcequota_created gauge -kube_resourcequota_created{namespace="default",resourcequota="pods-high"} 1.69875116e+09 +kube_resourcequota_created{namespace="default",resourcequota="pods-high"} 1.713862291e+09 # HELP kube_resourcequota [STABLE] Information about resource quota. # TYPE kube_resourcequota gauge +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="hard"} 10 kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="hard"} 1000 kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="hard"} 204800 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="hard"} 10 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="used"} 0 kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="used"} 0 kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="used"} 0 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="used"} 0 # HELP kube_resourcequota_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_resourcequota_annotations gauge # HELP kube_resourcequota_labels [STABLE] Kubernetes labels converted to Prometheus labels. @@ -1212,25 +1386,28 @@ kube_secret_type{namespace="kube-system",secret="bootstrap-token-abcdef",type="b # TYPE kube_secret_labels gauge # HELP kube_secret_created [STABLE] Unix creation timestamp # TYPE kube_secret_created gauge -kube_secret_created{namespace="kube-system",secret="bootstrap-token-abcdef"} 1.698675681e+09 +kube_secret_created{namespace="kube-system",secret="bootstrap-token-abcdef"} 1.713862184e+09 # HELP kube_secret_metadata_resource_version Resource version representing a specific version of secret. # TYPE kube_secret_metadata_resource_version gauge -kube_secret_metadata_resource_version{namespace="kube-system",secret="bootstrap-token-abcdef"} 241 +kube_secret_metadata_resource_version{namespace="kube-system",secret="bootstrap-token-abcdef"} 208 +# HELP kube_secret_owner Information about the Secret's owner. +# TYPE kube_secret_owner gauge +kube_secret_owner{namespace="kube-system",secret="bootstrap-token-abcdef",owner_kind="",owner_name="",owner_is_controller=""} 1 # HELP kube_service_info [STABLE] Information about service. # TYPE kube_service_info gauge -kube_service_info{namespace="default",service="kubernetes",uid="19d06c86-1e38-40f5-b4f5-28c4b7ef6a83",cluster_ip="10.96.0.1",external_name="",load_balancer_ip=""} 1 -kube_service_info{namespace="kube-system",service="kube-dns",uid="89e72df5-5f8a-4f39-b943-59a286410a8e",cluster_ip="10.96.0.10",external_name="",load_balancer_ip=""} 1 -kube_service_info{namespace="kube-system",service="kube-state-metrics",uid="dd3283c2-757e-488f-a38e-401e4c8009f3",cluster_ip="None",external_name="",load_balancer_ip=""} 1 +kube_service_info{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d",cluster_ip="10.96.0.1",external_name="",load_balancer_ip=""} 1 +kube_service_info{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf",cluster_ip="10.96.0.10",external_name="",load_balancer_ip=""} 1 +kube_service_info{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19",cluster_ip="None",external_name="",load_balancer_ip=""} 1 # HELP kube_service_created [STABLE] Unix creation timestamp # TYPE kube_service_created gauge -kube_service_created{namespace="default",service="kubernetes",uid="19d06c86-1e38-40f5-b4f5-28c4b7ef6a83"} 1.69867568e+09 -kube_service_created{namespace="kube-system",service="kube-dns",uid="89e72df5-5f8a-4f39-b943-59a286410a8e"} 1.698675682e+09 -kube_service_created{namespace="kube-system",service="kube-state-metrics",uid="dd3283c2-757e-488f-a38e-401e4c8009f3"} 1.698751122e+09 +kube_service_created{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d"} 1.713862182e+09 +kube_service_created{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf"} 1.713862184e+09 +kube_service_created{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19"} 1.713862243e+09 # HELP kube_service_spec_type [STABLE] Type about service. # TYPE kube_service_spec_type gauge -kube_service_spec_type{namespace="default",service="kubernetes",uid="19d06c86-1e38-40f5-b4f5-28c4b7ef6a83",type="ClusterIP"} 1 -kube_service_spec_type{namespace="kube-system",service="kube-dns",uid="89e72df5-5f8a-4f39-b943-59a286410a8e",type="ClusterIP"} 1 -kube_service_spec_type{namespace="kube-system",service="kube-state-metrics",uid="dd3283c2-757e-488f-a38e-401e4c8009f3",type="ClusterIP"} 1 +kube_service_spec_type{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf",type="ClusterIP"} 1 +kube_service_spec_type{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19",type="ClusterIP"} 1 +kube_service_spec_type{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d",type="ClusterIP"} 1 # HELP kube_service_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_service_annotations gauge # HELP kube_service_labels [STABLE] Kubernetes labels converted to Prometheus labels. @@ -1241,7 +1418,7 @@ kube_service_spec_type{namespace="kube-system",service="kube-state-metrics",uid= # TYPE kube_service_status_load_balancer_ingress gauge # HELP kube_statefulset_created [STABLE] Unix creation timestamp # TYPE kube_statefulset_created gauge -kube_statefulset_created{namespace="default",statefulset="web"} 1.69875116e+09 +kube_statefulset_created{namespace="default",statefulset="web"} 1.713862291e+09 # HELP kube_statefulset_status_replicas [STABLE] The number of replicas per StatefulSet. # TYPE kube_statefulset_status_replicas gauge kube_statefulset_status_replicas{namespace="default",statefulset="web"} 1 @@ -1286,7 +1463,7 @@ kube_statefulset_status_update_revision{namespace="default",statefulset="web",re kube_storageclass_info{storageclass="standard",provisioner="rancher.io/local-path",reclaim_policy="Delete",volume_binding_mode="WaitForFirstConsumer"} 1 # HELP kube_storageclass_created [STABLE] Unix creation timestamp # TYPE kube_storageclass_created gauge -kube_storageclass_created{storageclass="standard"} 1.698675685e+09 +kube_storageclass_created{storageclass="standard"} 1.713862186e+09 # HELP kube_storageclass_annotations Kubernetes annotations converted to Prometheus labels. # TYPE kube_storageclass_annotations gauge # HELP kube_storageclass_labels [STABLE] Kubernetes labels converted to Prometheus labels. diff --git a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.11.0.plain b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.11.0.plain new file mode 100644 index 00000000000..14d29a0cc36 --- /dev/null +++ b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.11.0.plain @@ -0,0 +1,1476 @@ +# HELP kube_configmap_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_configmap_annotations gauge +# HELP kube_configmap_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_configmap_labels gauge +# HELP kube_configmap_info [STABLE] Information about configmap. +# TYPE kube_configmap_info gauge +kube_configmap_info{namespace="kube-public",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-system",configmap="coredns"} 1 +kube_configmap_info{namespace="kube-system",configmap="kube-proxy"} 1 +kube_configmap_info{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="default",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 +kube_configmap_info{namespace="kube-system",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-system",configmap="kubelet-config"} 1 +kube_configmap_info{namespace="default",configmap="example-redis-config"} 1 +kube_configmap_info{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 1 +kube_configmap_info{namespace="local-path-storage",configmap="local-path-config"} 1 +kube_configmap_info{namespace="kube-public",configmap="cluster-info"} 1 +kube_configmap_info{namespace="kube-system",configmap="kubeadm-config"} 1 +# HELP kube_configmap_created [STABLE] Unix creation timestamp +# TYPE kube_configmap_created gauge +kube_configmap_created{namespace="kube-public",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-system",configmap="coredns"} 1.713862184e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-proxy"} 1.713862184e+09 +kube_configmap_created{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-system",configmap="kubelet-config"} 1.713862183e+09 +kube_configmap_created{namespace="default",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-system",configmap="extension-apiserver-authentication"} 1.713862181e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="default",configmap="example-redis-config"} 1.713862291e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 1.713862181e+09 +kube_configmap_created{namespace="local-path-storage",configmap="local-path-config"} 1.713862186e+09 +kube_configmap_created{namespace="kube-public",configmap="cluster-info"} 1.713862184e+09 +kube_configmap_created{namespace="kube-system",configmap="kubeadm-config"} 1.713862183e+09 +# HELP kube_configmap_metadata_resource_version Resource version representing a specific version of the configmap. +# TYPE kube_configmap_metadata_resource_version gauge +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubeadm-config"} 199 +kube_configmap_metadata_resource_version{namespace="kube-public",configmap="cluster-info"} 338 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="coredns"} 218 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-proxy"} 225 +kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="kube-root-ca.crt"} 325 +kube_configmap_metadata_resource_version{namespace="kube-public",configmap="kube-root-ca.crt"} 322 +kube_configmap_metadata_resource_version{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 320 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="extension-apiserver-authentication"} 28 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-root-ca.crt"} 323 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubelet-config"} 202 +kube_configmap_metadata_resource_version{namespace="default",configmap="kube-root-ca.crt"} 319 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 53 +kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="local-path-config"} 277 +kube_configmap_metadata_resource_version{namespace="default",configmap="example-redis-config"} 579 +# HELP kube_cronjob_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_cronjob_annotations gauge +# HELP kube_cronjob_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_cronjob_labels gauge +# HELP kube_cronjob_info [STABLE] Info about cronjob. +# TYPE kube_cronjob_info gauge +kube_cronjob_info{namespace="default",cronjob="hello",schedule="*/1 * * * *",concurrency_policy="Allow"} 1 +# HELP kube_cronjob_created [STABLE] Unix creation timestamp +# TYPE kube_cronjob_created gauge +kube_cronjob_created{namespace="default",cronjob="hello"} 1.713862291e+09 +# HELP kube_cronjob_status_active [STABLE] Active holds pointers to currently running jobs. +# TYPE kube_cronjob_status_active gauge +kube_cronjob_status_active{namespace="default",cronjob="hello"} 0 +# HELP kube_cronjob_status_last_schedule_time [STABLE] LastScheduleTime keeps information of when was the last time the job was successfully scheduled. +# TYPE kube_cronjob_status_last_schedule_time gauge +kube_cronjob_status_last_schedule_time{namespace="default",cronjob="hello"} 1.71388194e+09 +# HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully. +# TYPE kube_cronjob_status_last_successful_time gauge +kube_cronjob_status_last_successful_time{namespace="default",cronjob="hello"} 1.713881942e+09 +# HELP kube_cronjob_spec_suspend [STABLE] Suspend flag tells the controller to suspend subsequent executions. +# TYPE kube_cronjob_spec_suspend gauge +kube_cronjob_spec_suspend{namespace="default",cronjob="hello"} 0 +# HELP kube_cronjob_spec_starting_deadline_seconds [STABLE] Deadline in seconds for starting the job if it misses scheduled time for any reason. +# TYPE kube_cronjob_spec_starting_deadline_seconds gauge +# HELP kube_cronjob_next_schedule_time [STABLE] Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed. +# TYPE kube_cronjob_next_schedule_time gauge +kube_cronjob_next_schedule_time{namespace="default",cronjob="hello"} 1.713882e+09 +# HELP kube_cronjob_metadata_resource_version [STABLE] Resource version representing a specific version of the cronjob. +# TYPE kube_cronjob_metadata_resource_version gauge +kube_cronjob_metadata_resource_version{namespace="default",cronjob="hello"} 31925 +# HELP kube_cronjob_spec_successful_job_history_limit Successful job history limit tells the controller how many completed jobs should be preserved. +# TYPE kube_cronjob_spec_successful_job_history_limit gauge +kube_cronjob_spec_successful_job_history_limit{namespace="default",cronjob="hello"} 3 +# HELP kube_cronjob_spec_failed_job_history_limit Failed job history limit tells the controller how many failed jobs should be preserved. +# TYPE kube_cronjob_spec_failed_job_history_limit gauge +kube_cronjob_spec_failed_job_history_limit{namespace="default",cronjob="hello"} 1 +# HELP kube_daemonset_created [STABLE] Unix creation timestamp +# TYPE kube_daemonset_created gauge +kube_daemonset_created{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1.713862291e+09 +kube_daemonset_created{namespace="kube-system",daemonset="kindnet"} 1.713862185e+09 +kube_daemonset_created{namespace="kube-system",daemonset="kube-proxy"} 1.713862184e+09 +# HELP kube_daemonset_status_current_number_scheduled [STABLE] The number of nodes running at least one daemon pod and are supposed to. +# TYPE kube_daemonset_status_current_number_scheduled gauge +kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_desired_number_scheduled [STABLE] The number of nodes that should be running the daemon pod. +# TYPE kube_daemonset_status_desired_number_scheduled gauge +kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_number_available [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available +# TYPE kube_daemonset_status_number_available gauge +kube_daemonset_status_number_available{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_number_available{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_number_available{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_number_misscheduled [STABLE] The number of nodes running a daemon pod but are not supposed to. +# TYPE kube_daemonset_status_number_misscheduled gauge +kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 +kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kindnet"} 0 +kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kube-proxy"} 0 +# HELP kube_daemonset_status_number_ready [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. +# TYPE kube_daemonset_status_number_ready gauge +kube_daemonset_status_number_ready{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_number_unavailable [STABLE] The number of nodes that should be running the daemon pod and have none of the daemon pod running and available +# TYPE kube_daemonset_status_number_unavailable gauge +kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 +kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kindnet"} 0 +kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kube-proxy"} 0 +# HELP kube_daemonset_status_observed_generation [STABLE] The most recent generation observed by the daemon set controller. +# TYPE kube_daemonset_status_observed_generation gauge +kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_updated_number_scheduled [STABLE] The total number of nodes that are running updated daemon pod +# TYPE kube_daemonset_status_updated_number_scheduled gauge +kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 +kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 +# HELP kube_daemonset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. +# TYPE kube_daemonset_metadata_generation gauge +kube_daemonset_metadata_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_daemonset_annotations gauge +# HELP kube_daemonset_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_daemonset_labels gauge +# HELP kube_deployment_created [STABLE] Unix creation timestamp +# TYPE kube_deployment_created gauge +kube_deployment_created{namespace="kube-system",deployment="coredns"} 1.713862184e+09 +kube_deployment_created{namespace="kube-system",deployment="kube-state-metrics"} 1.713862243e+09 +kube_deployment_created{namespace="local-path-storage",deployment="local-path-provisioner"} 1.713862186e+09 +# HELP kube_deployment_status_replicas [STABLE] The number of replicas per deployment. +# TYPE kube_deployment_status_replicas gauge +kube_deployment_status_replicas{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_status_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_status_replicas_ready [STABLE] The number of ready replicas per deployment. +# TYPE kube_deployment_status_replicas_ready gauge +kube_deployment_status_replicas_ready{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas_ready{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_status_replicas_ready{namespace="kube-system",deployment="coredns"} 2 +# HELP kube_deployment_status_replicas_available [STABLE] The number of available replicas per deployment. +# TYPE kube_deployment_status_replicas_available gauge +kube_deployment_status_replicas_available{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas_available{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_status_replicas_available{namespace="kube-system",deployment="coredns"} 2 +# HELP kube_deployment_status_replicas_unavailable [STABLE] The number of unavailable replicas per deployment. +# TYPE kube_deployment_status_replicas_unavailable gauge +kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="coredns"} 0 +kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 +kube_deployment_status_replicas_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 +# HELP kube_deployment_status_replicas_updated [STABLE] The number of updated replicas per deployment. +# TYPE kube_deployment_status_replicas_updated gauge +kube_deployment_status_replicas_updated{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_status_replicas_updated{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas_updated{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_status_observed_generation [STABLE] The generation observed by the deployment controller. +# TYPE kube_deployment_status_observed_generation gauge +kube_deployment_status_observed_generation{namespace="kube-system",deployment="kube-state-metrics"} 3 +kube_deployment_status_observed_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_status_observed_generation{namespace="kube-system",deployment="coredns"} 1 +# HELP kube_deployment_status_condition [STABLE] The current status conditions of a deployment. +# TYPE kube_deployment_status_condition gauge +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="unknown"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="unknown"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="unknown"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="unknown"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="true"} 1 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="false"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="unknown"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="true"} 1 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="false"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="unknown"} 0 +# HELP kube_deployment_spec_replicas [STABLE] Number of desired pods for a deployment. +# TYPE kube_deployment_spec_replicas gauge +kube_deployment_spec_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_spec_replicas{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_spec_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 +# HELP kube_deployment_spec_paused [STABLE] Whether the deployment is paused and will not be processed by the deployment controller. +# TYPE kube_deployment_spec_paused gauge +kube_deployment_spec_paused{namespace="kube-system",deployment="coredns"} 0 +kube_deployment_spec_paused{namespace="kube-system",deployment="kube-state-metrics"} 0 +kube_deployment_spec_paused{namespace="local-path-storage",deployment="local-path-provisioner"} 0 +# HELP kube_deployment_spec_strategy_rollingupdate_max_unavailable [STABLE] Maximum number of unavailable replicas during a rolling update of a deployment. +# TYPE kube_deployment_spec_strategy_rollingupdate_max_unavailable gauge +kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="coredns"} 1 +kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 +kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 +# HELP kube_deployment_spec_strategy_rollingupdate_max_surge [STABLE] Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a deployment. +# TYPE kube_deployment_spec_strategy_rollingupdate_max_surge gauge +kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="coredns"} 1 +kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. +# TYPE kube_deployment_metadata_generation gauge +kube_deployment_metadata_generation{namespace="kube-system",deployment="kube-state-metrics"} 3 +kube_deployment_metadata_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_metadata_generation{namespace="kube-system",deployment="coredns"} 1 +# HELP kube_deployment_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_deployment_annotations gauge +# HELP kube_deployment_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_deployment_labels gauge +# HELP kube_endpoint_info [STABLE] Information about endpoint. +# TYPE kube_endpoint_info gauge +kube_endpoint_info{namespace="default",endpoint="kubernetes"} 1 +kube_endpoint_info{namespace="kube-system",endpoint="kube-dns"} 1 +kube_endpoint_info{namespace="kube-system",endpoint="kube-state-metrics"} 1 +# HELP kube_endpoint_created [STABLE] Unix creation timestamp +# TYPE kube_endpoint_created gauge +kube_endpoint_created{namespace="default",endpoint="kubernetes"} 1.713862182e+09 +kube_endpoint_created{namespace="kube-system",endpoint="kube-dns"} 1.713862198e+09 +kube_endpoint_created{namespace="kube-system",endpoint="kube-state-metrics"} 1.713862243e+09 +# HELP kube_endpoint_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_endpoint_annotations gauge +# HELP kube_endpoint_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_endpoint_labels gauge +# HELP kube_endpoint_address_available (Deprecated since v2.6.0) Number of addresses available in endpoint. +# TYPE kube_endpoint_address_available gauge +kube_endpoint_address_available{namespace="default",endpoint="kubernetes"} 1 +kube_endpoint_address_available{namespace="kube-system",endpoint="kube-dns"} 6 +kube_endpoint_address_available{namespace="kube-system",endpoint="kube-state-metrics"} 2 +# HELP kube_endpoint_address_not_ready (Deprecated since v2.6.0) Number of addresses not ready in endpoint +# TYPE kube_endpoint_address_not_ready gauge +kube_endpoint_address_not_ready{namespace="default",endpoint="kubernetes"} 0 +kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-dns"} 0 +kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-state-metrics"} 0 +# HELP kube_endpoint_address [STABLE] Information about Endpoint available and non available addresses. +# TYPE kube_endpoint_address gauge +kube_endpoint_address{namespace="default",endpoint="kubernetes",ip="172.21.0.2",ready="true"} 1 +kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.3",ready="true"} 1 +kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.4",ready="true"} 1 +kube_endpoint_address{namespace="kube-system",endpoint="kube-state-metrics",ip="10.244.0.40",ready="true"} 1 +# HELP kube_endpoint_ports [STABLE] Information about the Endpoint ports. +# TYPE kube_endpoint_ports gauge +kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns-tcp",port_protocol="TCP",port_number="53"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns",port_protocol="UDP",port_number="53"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="metrics",port_protocol="TCP",port_number="9153"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="telemetry",port_protocol="TCP",port_number="8081"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="http-metrics",port_protocol="TCP",port_number="8080"} 1 +kube_endpoint_ports{namespace="default",endpoint="kubernetes",port_name="https",port_protocol="TCP",port_number="6443"} 1 +# HELP kube_job_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_job_annotations gauge +# HELP kube_job_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_job_labels gauge +# HELP kube_job_info [STABLE] Information about job. +# TYPE kube_job_info gauge +kube_job_info{namespace="default",job_name="hello"} 1 +kube_job_info{namespace="default",job_name="hello-28564697"} 1 +kube_job_info{namespace="default",job_name="hello-28564698"} 1 +kube_job_info{namespace="default",job_name="hello-28564699"} 1 +# HELP kube_job_created [STABLE] Unix creation timestamp +# TYPE kube_job_created gauge +kube_job_created{namespace="default",job_name="hello-28564697"} 1.71388182e+09 +kube_job_created{namespace="default",job_name="hello-28564698"} 1.71388188e+09 +kube_job_created{namespace="default",job_name="hello-28564699"} 1.71388194e+09 +kube_job_created{namespace="default",job_name="hello"} 1.713862291e+09 +# HELP kube_job_spec_parallelism [STABLE] The maximum desired number of pods the job should run at any given time. +# TYPE kube_job_spec_parallelism gauge +kube_job_spec_parallelism{namespace="default",job_name="hello"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564697"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564698"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564699"} 1 +# HELP kube_job_spec_completions [STABLE] The desired number of successfully finished pods the job should be run with. +# TYPE kube_job_spec_completions gauge +kube_job_spec_completions{namespace="default",job_name="hello"} 1 +kube_job_spec_completions{namespace="default",job_name="hello-28564697"} 1 +kube_job_spec_completions{namespace="default",job_name="hello-28564698"} 1 +kube_job_spec_completions{namespace="default",job_name="hello-28564699"} 1 +# HELP kube_job_spec_active_deadline_seconds [STABLE] The duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. +# TYPE kube_job_spec_active_deadline_seconds gauge +# HELP kube_job_status_succeeded [STABLE] The number of pods which reached Phase Succeeded. +# TYPE kube_job_status_succeeded gauge +kube_job_status_succeeded{namespace="default",job_name="hello"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello-28564697"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello-28564698"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello-28564699"} 1 +# HELP kube_job_status_failed [STABLE] The number of pods which reached Phase Failed and the reason for failure. +# TYPE kube_job_status_failed gauge +kube_job_status_failed{namespace="default",job_name="hello"} 0 +kube_job_status_failed{namespace="default",job_name="hello-28564697"} 0 +kube_job_status_failed{namespace="default",job_name="hello-28564698"} 0 +kube_job_status_failed{namespace="default",job_name="hello-28564699"} 0 +# HELP kube_job_status_active [STABLE] The number of actively running pods. +# TYPE kube_job_status_active gauge +kube_job_status_active{namespace="default",job_name="hello"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564697"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564698"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564699"} 0 +# HELP kube_job_complete [STABLE] The job has completed its execution. +# TYPE kube_job_complete gauge +kube_job_complete{namespace="default",job_name="hello",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello-28564697",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564697",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564697",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello-28564698",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564698",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564698",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello-28564699",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564699",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564699",condition="unknown"} 0 +# HELP kube_job_failed [STABLE] The job has failed its execution. +# TYPE kube_job_failed gauge +# HELP kube_job_status_start_time [STABLE] StartTime represents time when the job was acknowledged by the Job Manager. +# TYPE kube_job_status_start_time gauge +kube_job_status_start_time{namespace="default",job_name="hello"} 1.713862291e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564697"} 1.71388182e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564698"} 1.71388188e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564699"} 1.71388194e+09 +# HELP kube_job_status_completion_time [STABLE] CompletionTime represents time when the job was completed. +# TYPE kube_job_status_completion_time gauge +kube_job_status_completion_time{namespace="default",job_name="hello-28564697"} 1.713881823e+09 +kube_job_status_completion_time{namespace="default",job_name="hello-28564698"} 1.713881883e+09 +kube_job_status_completion_time{namespace="default",job_name="hello-28564699"} 1.713881942e+09 +kube_job_status_completion_time{namespace="default",job_name="hello"} 1.713862309e+09 +# HELP kube_job_owner [STABLE] Information about the Job's owner. +# TYPE kube_job_owner gauge +kube_job_owner{namespace="default",job_name="hello",owner_kind="",owner_name="",owner_is_controller=""} 1 +kube_job_owner{namespace="default",job_name="hello-28564697",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +kube_job_owner{namespace="default",job_name="hello-28564698",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +kube_job_owner{namespace="default",job_name="hello-28564699",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +# HELP kube_lease_owner Information about the Lease's owner. +# TYPE kube_lease_owner gauge +kube_lease_owner{lease="kind-control-plane",owner_kind="Node",owner_name="kind-control-plane",namespace="kube-node-lease",lease_holder="kind-control-plane"} 1 +kube_lease_owner{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",owner_kind="",owner_name="",namespace="kube-system",lease_holder="apiserver-c7uylvfxlbqccnk6myfkwetzze_a1affd56-56b4-400c-af43-2e8622119e0e"} 1 +kube_lease_owner{lease="kube-controller-manager",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_707366f0-363e-48ef-bf73-ce8a760a3c49"} 1 +kube_lease_owner{lease="kube-scheduler",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_fab57b50-1240-4428-8410-6dde0a5ba977"} 1 +# HELP kube_lease_renew_time Kube lease renew time. +# TYPE kube_lease_renew_time gauge +kube_lease_renew_time{lease="kind-control-plane",namespace="kube-node-lease"} 1.713881954e+09 +kube_lease_renew_time{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",namespace="kube-system"} 1.713881954e+09 +kube_lease_renew_time{lease="kube-controller-manager",namespace="kube-system"} 1.713881956e+09 +kube_lease_renew_time{lease="kube-scheduler",namespace="kube-system"} 1.713881956e+09 +# HELP kube_namespace_created [STABLE] Unix creation timestamp +# TYPE kube_namespace_created gauge +kube_namespace_created{namespace="default"} 1.713862181e+09 +kube_namespace_created{namespace="kube-node-lease"} 1.713862181e+09 +kube_namespace_created{namespace="kube-public"} 1.713862181e+09 +kube_namespace_created{namespace="kube-system"} 1.713862181e+09 +kube_namespace_created{namespace="local-path-storage"} 1.713862186e+09 +# HELP kube_namespace_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_namespace_annotations gauge +# HELP kube_namespace_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_namespace_labels gauge +# HELP kube_namespace_status_phase [STABLE] kubernetes namespace status phase. +# TYPE kube_namespace_status_phase gauge +kube_namespace_status_phase{namespace="kube-public",phase="Active"} 1 +kube_namespace_status_phase{namespace="kube-public",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="kube-system",phase="Active"} 1 +kube_namespace_status_phase{namespace="kube-system",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="local-path-storage",phase="Active"} 1 +kube_namespace_status_phase{namespace="local-path-storage",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="default",phase="Active"} 1 +kube_namespace_status_phase{namespace="default",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="kube-node-lease",phase="Active"} 1 +kube_namespace_status_phase{namespace="kube-node-lease",phase="Terminating"} 0 +# HELP kube_namespace_status_condition The condition of a namespace. +# TYPE kube_namespace_status_condition gauge +# HELP kube_node_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_node_annotations gauge +# HELP kube_node_created [STABLE] Unix creation timestamp +# TYPE kube_node_created gauge +kube_node_created{node="kind-control-plane"} 1.713862181e+09 +# HELP kube_node_deletion_timestamp Unix deletion timestamp +# TYPE kube_node_deletion_timestamp gauge +# HELP kube_node_info [STABLE] Information about a cluster node. +# TYPE kube_node_info gauge +kube_node_info{node="kind-control-plane",kernel_version="6.6.12-linuxkit",os_image="Debian GNU/Linux 12 (bookworm)",container_runtime_version="containerd://1.7.13",kubelet_version="v1.29.1",kubeproxy_version="v1.29.1",provider_id="kind://docker/kind/kind-control-plane",pod_cidr="10.244.0.0/24",system_uuid="d620d3a4eabe4f1290df7f4eeffe9565",internal_ip="172.21.0.2"} 1 +# HELP kube_node_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_node_labels gauge +# HELP kube_node_role The role of a cluster node. +# TYPE kube_node_role gauge +kube_node_role{node="kind-control-plane",role="control-plane"} 1 +# HELP kube_node_spec_taint [STABLE] The taint of a cluster node. +# TYPE kube_node_spec_taint gauge +# HELP kube_node_spec_unschedulable [STABLE] Whether a node can schedule new pods. +# TYPE kube_node_spec_unschedulable gauge +kube_node_spec_unschedulable{node="kind-control-plane"} 0 +# HELP kube_node_status_allocatable [STABLE] The allocatable for different resources of a node that are available for scheduling. +# TYPE kube_node_status_allocatable gauge +kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 +kube_node_status_allocatable{node="kind-control-plane",resource="memory",unit="byte"} 1.6769380352e+10 +kube_node_status_allocatable{node="kind-control-plane",resource="pods",unit="integer"} 110 +kube_node_status_allocatable{node="kind-control-plane",resource="cpu",unit="core"} 16 +kube_node_status_allocatable{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 3.69759891456e+11 +# HELP kube_node_status_capacity [STABLE] The capacity for different resources of a node. +# TYPE kube_node_status_capacity gauge +kube_node_status_capacity{node="kind-control-plane",resource="pods",unit="integer"} 110 +kube_node_status_capacity{node="kind-control-plane",resource="cpu",unit="core"} 16 +kube_node_status_capacity{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 3.69759891456e+11 +kube_node_status_capacity{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 +kube_node_status_capacity{node="kind-control-plane",resource="memory",unit="byte"} 1.6769380352e+10 +# HELP kube_node_status_condition [STABLE] The condition of a cluster node. +# TYPE kube_node_status_condition gauge +kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="true"} 0 +kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="false"} 1 +kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="unknown"} 0 +kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="true"} 0 +kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="false"} 1 +kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="unknown"} 0 +kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="true"} 0 +kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="false"} 1 +kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="unknown"} 0 +kube_node_status_condition{node="kind-control-plane",condition="Ready",status="true"} 1 +kube_node_status_condition{node="kind-control-plane",condition="Ready",status="false"} 0 +kube_node_status_condition{node="kind-control-plane",condition="Ready",status="unknown"} 0 +# HELP kube_node_status_addresses Node address information. +# TYPE kube_node_status_addresses gauge +kube_node_status_addresses{node="kind-control-plane",type="InternalIP",address="172.21.0.2"} 1 +kube_node_status_addresses{node="kind-control-plane",type="Hostname",address="kind-control-plane"} 1 +# HELP kube_persistentvolumeclaim_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_persistentvolumeclaim_labels gauge +# HELP kube_persistentvolumeclaim_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_persistentvolumeclaim_annotations gauge +# HELP kube_persistentvolumeclaim_info [STABLE] Information about persistent volume claim. +# TYPE kube_persistentvolumeclaim_info gauge +kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="task-pv-claim",storageclass="generic",volumename="task-pv-volume",volumemode="Filesystem"} 1 +# HELP kube_persistentvolumeclaim_status_phase [STABLE] The phase the persistent volume claim is currently in. +# TYPE kube_persistentvolumeclaim_status_phase gauge +kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Lost"} 0 +kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Bound"} 1 +kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Pending"} 0 +# HELP kube_persistentvolumeclaim_resource_requests_storage_bytes [STABLE] The capacity of storage requested by the persistent volume claim. +# TYPE kube_persistentvolumeclaim_resource_requests_storage_bytes gauge +kube_persistentvolumeclaim_resource_requests_storage_bytes{namespace="default",persistentvolumeclaim="task-pv-claim"} 1024 +# HELP kube_persistentvolumeclaim_access_mode [STABLE] The access mode(s) specified by the persistent volume claim. +# TYPE kube_persistentvolumeclaim_access_mode gauge +kube_persistentvolumeclaim_access_mode{namespace="default",persistentvolumeclaim="task-pv-claim",access_mode="ReadWriteOnce"} 1 +# HELP kube_persistentvolumeclaim_status_condition Information about status of different conditions of persistent volume claim. +# TYPE kube_persistentvolumeclaim_status_condition gauge +# HELP kube_persistentvolumeclaim_created Unix creation timestamp +# TYPE kube_persistentvolumeclaim_created gauge +kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="task-pv-claim"} 1.713862291e+09 +# HELP kube_persistentvolumeclaim_deletion_timestamp Unix deletion timestamp +# TYPE kube_persistentvolumeclaim_deletion_timestamp gauge +# HELP kube_persistentvolume_claim_ref [STABLE] Information about the Persistent Volume Claim Reference. +# TYPE kube_persistentvolume_claim_ref gauge +kube_persistentvolume_claim_ref{persistentvolume="task-pv-volume",name="task-pv-claim",claim_namespace="default"} 1 +# HELP kube_persistentvolume_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_persistentvolume_annotations gauge +# HELP kube_persistentvolume_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_persistentvolume_labels gauge +# HELP kube_persistentvolume_status_phase [STABLE] The phase indicates if a volume is available, bound to a claim, or released by a claim. +# TYPE kube_persistentvolume_status_phase gauge +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Pending"} 0 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Available"} 0 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Bound"} 1 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Released"} 0 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Failed"} 0 +# HELP kube_persistentvolume_info [STABLE] Information about persistentvolume. +# TYPE kube_persistentvolume_info gauge +kube_persistentvolume_info{persistentvolume="task-pv-volume",storageclass="generic",gce_persistent_disk_name="",ebs_volume_id="",azure_disk_name="",fc_wwids="",fc_lun="",fc_target_wwns="",iscsi_target_portal="",iscsi_iqn="",iscsi_lun="",iscsi_initiator_name="",nfs_server="",nfs_path="",csi_driver="",csi_volume_handle="",local_path="",local_fs="",host_path="/tmp/data",host_path_type=""} 1 +# HELP kube_persistentvolume_capacity_bytes [STABLE] Persistentvolume capacity in bytes. +# TYPE kube_persistentvolume_capacity_bytes gauge +kube_persistentvolume_capacity_bytes{persistentvolume="task-pv-volume"} 2048 +# HELP kube_persistentvolume_created Unix creation timestamp +# TYPE kube_persistentvolume_created gauge +kube_persistentvolume_created{persistentvolume="task-pv-volume"} 1.713862291e+09 +# HELP kube_persistentvolume_deletion_timestamp Unix deletion timestamp +# TYPE kube_persistentvolume_deletion_timestamp gauge +# HELP kube_pod_completion_time [STABLE] Completion time in unix timestamp for a pod. +# TYPE kube_pod_completion_time gauge +kube_pod_completion_time{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac"} 1.71388194e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9"} 1.71388182e+09 +kube_pod_completion_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862307e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a"} 1.71388188e+09 +# HELP kube_pod_container_info [STABLE] Information about a container in a pod. +# TYPE kube_pod_container_info gauge +kube_pod_container_info{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://d7ee855499eafb3c328c9c93d8377fc1ba169d22d38b8e23272b4ae716e4d416"} 1 +kube_pod_container_info{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",image_spec="docker.io/kindest/kindnetd:v20240202-8f1494ea",image="docker.io/kindest/kindnetd:v20240202-8f1494ea",image_id="sha256:4950bb10b3f87e8d4a8f772a0d8934625cac4ccfa3675fea34cad0dab83fd5a5",container_id="containerd://92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler",image_spec="registry.k8s.io/kube-scheduler:v1.29.1",image="registry.k8s.io/kube-scheduler-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:7ee1db230fd72d5ee5a6614fd69c4aee629ab442b557677faa9c873014956fbb",container_id="containerd://cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620"} 1 +kube_pod_container_info{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner",image_spec="docker.io/kindest/local-path-provisioner:v20240202-8f1494ea",image="docker.io/kindest/local-path-provisioner:v20240202-8f1494ea",image_id="sha256:0500518ebaa68d16973c65dc0b776813b50ab6e7e8f112fca41aca387a549d4f",container_id="containerd://033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",container="kube-state-metrics",image_spec="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.11.0",image="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.11.0",image_id="registry.k8s.io/kube-state-metrics/kube-state-metrics@sha256:11da79c0e80e9cc755f84a3fc0cd0269be57148aad2587059abe3296e84b67e9",container_id="containerd://e7ca094dace2897f87f28a7549ec98f3a0c8bfa689c4b3e1a02734fc59259198"} 1 +kube_pod_container_info{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757"} 1 +kube_pod_container_info{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.11.1",image="registry.k8s.io/coredns/coredns:v1.11.1",image_id="sha256:cbb01a7bd410dc08ba382018ab909a674fb0e48687f0c00797ed5bc34fcc6bb4",container_id="containerd://1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb"} 1 +kube_pod_container_info{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.11.1",image="registry.k8s.io/coredns/coredns:v1.11.1",image_id="sha256:cbb01a7bd410dc08ba382018ab909a674fb0e48687f0c00797ed5bc34fcc6bb4",container_id="containerd://03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://97ff79f2dcf69eea18ddf8dd9b37319e36095168d9bee982978cbf76e0a5e4f5"} 1 +kube_pod_container_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",image_spec="registry.k8s.io/etcd:3.5.10-0",image="registry.k8s.io/etcd:3.5.10-0",image_id="sha256:a0eed15eed4498c145ef2f1883fcd300d7adbb759df73c901abd5383dda668e7",container_id="containerd://247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager",image_spec="registry.k8s.io/kube-controller-manager:v1.29.1",image="registry.k8s.io/kube-controller-manager-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:f752b19ecffaf870204cca3268011949c4fb4f2e3d463ede1fdb23e34ce32b79",container_id="containerd://f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy",image_spec="registry.k8s.io/kube-proxy:v1.29.1",image="registry.k8s.io/kube-proxy-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:339df7e7b1b6b9795477e81e6f1568bd5e07e785240a7269d93f1728f46e89ae",container_id="containerd://8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://cf76542606d3c8eecd7d552d4c075f0066f4565c7f6bb07101db5bde85e31fd4"} 1 +kube_pod_container_info{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",container="mycurlpod",image_spec="curlimages/curl",image="docker.io/curlimages/curl:latest",image_id="docker.io/curlimages/curl@sha256:25d29daeb9b14b89e2fa8cc17c70e4b188bca1466086907c2d9a4b56b59d8e21",container_id="containerd://a462d44ce13c421e59deb541cbe594ff97bfdb0702b8d435a56586c2aea410fb"} 1 +kube_pod_container_info{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx",image_spec="docker.io/nginx:1.24.0-alpine-slim",image="docker.io/library/nginx:1.24.0-alpine-slim",image_id="docker.io/library/nginx@sha256:5893dc08a2cb01e21592ff469346ebaacf49167fbc949f45e1c29111981b0427",container_id="containerd://4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df"} 1 +kube_pod_container_info{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",image_spec="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image_id="sha256:c896ab1149bb529ca28d76976885e04c0d754b6592f74b5478bfdcf248f84e62",container_id="containerd://bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver",image_spec="registry.k8s.io/kube-apiserver:v1.29.1",image="registry.k8s.io/kube-apiserver-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:294d2b5dab41cad4038a2998742899c4556e5713f9d0615814d5fb0c1d59006a",container_id="containerd://9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98"} 1 +# HELP kube_pod_container_resource_limits The number of requested limit resource by a container. It is recommended to use the kube_pod_resource_limits metric exposed by kube-scheduler instead, as it is more precise. +# TYPE kube_pod_container_resource_limits gauge +kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 +kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +# HELP kube_pod_container_resource_requests The number of requested request resource by a container. It is recommended to use the kube_pod_resource_requests metric exposed by kube-scheduler instead, as it is more precise. +# TYPE kube_pod_container_resource_requests gauge +kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",node="kind-control-plane",resource="memory",unit="byte"} 1.048576e+08 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager",node="kind-control-plane",resource="cpu",unit="core"} 0.2 +kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 +kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver",node="kind-control-plane",resource="cpu",unit="core"} 0.25 +# HELP kube_pod_container_state_started [STABLE] Start time in unix timestamp for a pod container. +# TYPE kube_pod_container_state_started gauge +kube_pod_container_state_started{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1.713862178e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1.7138622e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello"} 1.71388194e+09 +kube_pod_container_state_started{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",container="mycurlpod"} 1.713881941e+09 +kube_pod_container_state_started{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1.71386231e+09 +kube_pod_container_state_started{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1.713862304e+09 +kube_pod_container_state_started{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1.713862203e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello"} 1.71388182e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1.713862201e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1.713862178e+09 +kube_pod_container_state_started{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1.713862203e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",container="kube-state-metrics"} 1.713879972e+09 +kube_pod_container_state_started{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 1.713862307e+09 +kube_pod_container_state_started{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1.713862203e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello"} 1.71388188e+09 +kube_pod_container_state_started{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1.713862179e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1.713862178e+09 +# HELP kube_pod_container_status_last_terminated_reason Describes the last reason the container was in terminated state. +# TYPE kube_pod_container_status_last_terminated_reason gauge +# HELP kube_pod_container_status_last_terminated_exitcode Describes the exit code for the last container in terminated state. +# TYPE kube_pod_container_status_last_terminated_exitcode gauge +# HELP kube_pod_container_status_ready [STABLE] Describes whether the containers readiness check succeeded. +# TYPE kube_pod_container_status_ready gauge +kube_pod_container_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1 +kube_pod_container_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",container="kube-state-metrics"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello"} 0 +kube_pod_container_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",container="mycurlpod"} 1 +# HELP kube_pod_container_status_restarts_total [STABLE] The number of container restarts per container. +# TYPE kube_pod_container_status_restarts_total counter +kube_pod_container_status_restarts_total{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",container="mycurlpod"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_restarts_total{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",container="kube-state-metrics"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +# HELP kube_pod_container_status_running [STABLE] Describes whether the container is currently in running state. +# TYPE kube_pod_container_status_running gauge +kube_pod_container_status_running{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello"} 0 +kube_pod_container_status_running{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",container="mycurlpod"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1 +kube_pod_container_status_running{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",container="kube-state-metrics"} 1 +# HELP kube_pod_container_status_terminated [STABLE] Describes whether the container is currently in terminated state. +# TYPE kube_pod_container_status_terminated gauge +kube_pod_container_status_terminated{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",container="mycurlpod"} 0 +kube_pod_container_status_terminated{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_terminated{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",container="kube-state-metrics"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +# HELP kube_pod_container_status_terminated_reason Describes the reason the container is currently in terminated state. +# TYPE kube_pod_container_status_terminated_reason gauge +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello",reason="Completed"} 1 +# HELP kube_pod_container_status_waiting [STABLE] Describes whether the container is currently in waiting state. +# TYPE kube_pod_container_status_waiting gauge +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",container="mycurlpod"} 0 +kube_pod_container_status_waiting{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_waiting{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",container="kube-state-metrics"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +# HELP kube_pod_container_status_waiting_reason [STABLE] Describes the reason the container is currently in waiting state. +# TYPE kube_pod_container_status_waiting_reason gauge +# HELP kube_pod_created [STABLE] Unix creation timestamp +# TYPE kube_pod_created gauge +kube_pod_created{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_created{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862199e+09 +kube_pod_created{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9"} 1.71388182e+09 +kube_pod_created{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0"} 1.713879968e+09 +kube_pod_created{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a"} 1.71388188e+09 +kube_pod_created{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_created{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_created{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a"} 1.713881939e+09 +kube_pod_created{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_created{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_created{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac"} 1.71388194e+09 +# HELP kube_pod_deletion_timestamp Unix deletion timestamp +# TYPE kube_pod_deletion_timestamp gauge +# HELP kube_pod_info [STABLE] Information about pod. +# TYPE kube_pod_info gauge +kube_pod_info{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",host_ip="172.21.0.2",pod_ip="10.244.0.8",node="kind-control-plane",created_by_kind="StatefulSet",created_by_name="web",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",host_ip="172.21.0.2",pod_ip="10.244.0.6",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="fluentd-elasticsearch",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kube-proxy",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",host_ip="172.21.0.2",pod_ip="10.244.0.86",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564699",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",host_ip="172.21.0.2",pod_ip="10.244.0.85",node="kind-control-plane",created_by_kind="",created_by_name="",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",host_ip="172.21.0.2",pod_ip="10.244.0.2",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="local-path-provisioner-7577fdbbfb",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",host_ip="172.21.0.2",pod_ip="10.244.0.81",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564697",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kindnet",priority_class="",host_network="true"} 1 +kube_pod_info{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",host_ip="172.21.0.2",pod_ip="10.244.0.7",node="kind-control-plane",created_by_kind="Job",created_by_name="hello",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",host_ip="172.21.0.2",pod_ip="10.244.0.3",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-76f75df574",priority_class="system-cluster-critical",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",host_ip="172.21.0.2",pod_ip="10.244.0.4",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-76f75df574",priority_class="system-cluster-critical",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",host_ip="172.21.0.2",pod_ip="10.244.0.40",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="kube-state-metrics-cbc966f68",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",host_ip="172.21.0.2",pod_ip="10.244.0.84",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564698",priority_class="",host_network="false"} 1 +# HELP kube_pod_ips Pod IP addresses +# TYPE kube_pod_ips gauge +kube_pod_ips{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",ip="10.244.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",ip="10.244.0.81",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",ip="10.244.0.7",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",ip="10.244.0.3",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",ip="10.244.0.4",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",ip="10.244.0.40",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",ip="10.244.0.84",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",ip="10.244.0.85",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",ip="10.244.0.8",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",ip="10.244.0.6",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",ip="10.244.0.86",ip_family="4"} 1 +# HELP kube_pod_init_container_info [STABLE] Information about an init container in a pod. +# TYPE kube_pod_init_container_info gauge +# HELP kube_pod_init_container_resource_limits The number of requested limit resource by an init container. +# TYPE kube_pod_init_container_resource_limits gauge +# HELP kube_pod_init_container_resource_requests The number of requested request resource by an init container. +# TYPE kube_pod_init_container_resource_requests gauge +# HELP kube_pod_init_container_status_last_terminated_reason Describes the last reason the init container was in terminated state. +# TYPE kube_pod_init_container_status_last_terminated_reason gauge +# HELP kube_pod_init_container_status_ready [STABLE] Describes whether the init containers readiness check succeeded. +# TYPE kube_pod_init_container_status_ready gauge +# HELP kube_pod_init_container_status_restarts_total [STABLE] The number of restarts for the init container. +# TYPE kube_pod_init_container_status_restarts_total counter +# HELP kube_pod_init_container_status_running [STABLE] Describes whether the init container is currently in running state. +# TYPE kube_pod_init_container_status_running gauge +# HELP kube_pod_init_container_status_terminated [STABLE] Describes whether the init container is currently in terminated state. +# TYPE kube_pod_init_container_status_terminated gauge +# HELP kube_pod_init_container_status_terminated_reason Describes the reason the init container is currently in terminated state. +# TYPE kube_pod_init_container_status_terminated_reason gauge +# HELP kube_pod_init_container_status_waiting [STABLE] Describes whether the init container is currently in waiting state. +# TYPE kube_pod_init_container_status_waiting gauge +# HELP kube_pod_init_container_status_waiting_reason Describes the reason the init container is currently in waiting state. +# TYPE kube_pod_init_container_status_waiting_reason gauge +# HELP kube_pod_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_pod_annotations gauge +# HELP kube_pod_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_pod_labels gauge +# HELP kube_pod_overhead_cpu_cores The pod overhead in regards to cpu cores associated with running a pod. +# TYPE kube_pod_overhead_cpu_cores gauge +# HELP kube_pod_overhead_memory_bytes The pod overhead in regards to memory associated with running a pod. +# TYPE kube_pod_overhead_memory_bytes gauge +# HELP kube_pod_owner [STABLE] Information about the Pod's owner. +# TYPE kube_pod_owner gauge +kube_pod_owner{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",owner_kind="ReplicaSet",owner_name="coredns-76f75df574",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",owner_kind="ReplicaSet",owner_name="coredns-76f75df574",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",owner_kind="ReplicaSet",owner_name="kube-state-metrics-cbc966f68",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",owner_kind="Job",owner_name="hello",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",owner_kind="Job",owner_name="hello-28564698",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",owner_kind="DaemonSet",owner_name="fluentd-elasticsearch",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",owner_kind="DaemonSet",owner_name="kube-proxy",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",owner_kind="Job",owner_name="hello-28564699",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",owner_kind="",owner_name="",owner_is_controller=""} 1 +kube_pod_owner{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",owner_kind="StatefulSet",owner_name="web",owner_is_controller="true"} 1 +kube_pod_owner{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",owner_kind="ReplicaSet",owner_name="local-path-provisioner-7577fdbbfb",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",owner_kind="Job",owner_name="hello-28564697",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",owner_kind="DaemonSet",owner_name="kindnet",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +# HELP kube_pod_restart_policy [STABLE] Describes the restart policy in use by this pod. +# TYPE kube_pod_restart_policy gauge +kube_pod_restart_policy{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",type="Always"} 1 +kube_pod_restart_policy{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",type="Always"} 1 +# HELP kube_pod_runtimeclass_name_info The runtimeclass associated with the pod. +# TYPE kube_pod_runtimeclass_name_info gauge +# HELP kube_pod_spec_volumes_persistentvolumeclaims_info [STABLE] Information about persistentvolumeclaim volumes in a pod. +# TYPE kube_pod_spec_volumes_persistentvolumeclaims_info gauge +# HELP kube_pod_spec_volumes_persistentvolumeclaims_readonly [STABLE] Describes whether a persistentvolumeclaim is mounted read only. +# TYPE kube_pod_spec_volumes_persistentvolumeclaims_readonly gauge +# HELP kube_pod_start_time [STABLE] Start time in unix timestamp for a pod. +# TYPE kube_pod_start_time gauge +kube_pod_start_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_start_time{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9"} 1.71388182e+09 +kube_pod_start_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_start_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0"} 1.713879968e+09 +kube_pod_start_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_start_time{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a"} 1.71388188e+09 +kube_pod_start_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_start_time{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac"} 1.71388194e+09 +kube_pod_start_time{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a"} 1.713881939e+09 +kube_pod_start_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +# HELP kube_pod_status_phase [STABLE] The pods current phase. +# TYPE kube_pod_status_phase gauge +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Running"} 1 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Pending"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Failed"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Unknown"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Running"} 1 +# HELP kube_pod_status_qos_class The pods current qosClass. +# TYPE kube_pod_status_qos_class gauge +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="Guaranteed"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="Guaranteed"} 0 +# HELP kube_pod_status_ready [STABLE] Describes whether the pod is ready to serve requests. +# TYPE kube_pod_status_ready gauge +kube_pod_status_ready{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="true"} 1 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="false"} 0 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="unknown"} 0 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="true"} 1 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="false"} 0 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",condition="unknown"} 0 +# HELP kube_pod_status_ready_time Readiness achieved time in unix timestamp for a pod. +# TYPE kube_pod_status_ready_time gauge +kube_pod_status_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862304e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862195e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.7138622e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a"} 1.713881941e+09 +kube_pod_status_ready_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862311e+09 +kube_pod_status_ready_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862201e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862197e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0"} 1.713879978e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862193e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862189e+09 +# HELP kube_pod_status_initialized_time Initialized time in unix timestamp for a pod. +# TYPE kube_pod_status_initialized_time gauge +kube_pod_status_initialized_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9"} 1.71388182e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0"} 1.713879968e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a"} 1.71388188e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac"} 1.71388194e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a"} 1.713881939e+09 +kube_pod_status_initialized_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +# HELP kube_pod_status_container_ready_time Readiness achieved time in unix timestamp for a pod containers. +# TYPE kube_pod_status_container_ready_time gauge +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0"} 1.713879978e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862204e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862204e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862189e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862193e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.7138622e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a"} 1.713881941e+09 +kube_pod_status_container_ready_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862311e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862304e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862195e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862201e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862197e+09 +kube_pod_status_container_ready_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862204e+09 +# HELP kube_pod_status_reason The pod status reasons +# TYPE kube_pod_status_reason gauge +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="Evicted"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="UnexpectedAdmissionError"} 0 +# HELP kube_pod_status_scheduled [STABLE] Describes the status of the scheduling process for the pod. +# TYPE kube_pod_status_scheduled gauge +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="true"} 1 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="false"} 0 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="unknown"} 0 +# HELP kube_pod_status_scheduled_time [STABLE] Unix timestamp when pod moved into scheduled status +# TYPE kube_pod_status_scheduled_time gauge +kube_pod_status_scheduled_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9"} 1.71388182e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0"} 1.713879968e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a"} 1.71388188e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a"} 1.713881939e+09 +kube_pod_status_scheduled_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac"} 1.71388194e+09 +# HELP kube_pod_status_unschedulable [STABLE] Describes the unschedulable status for the pod. +# TYPE kube_pod_status_unschedulable gauge +# HELP kube_pod_tolerations Information about the pod tolerations +# TYPE kube_pod_tolerations gauge +kube_pod_tolerations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node-role.kubernetes.io/control-plane",operator="Equal",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node-role.kubernetes.io/master",operator="Equal",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="CriticalAddonsOnly",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="CriticalAddonsOnly",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node-role.kubernetes.io/control-plane",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node-role.kubernetes.io/master",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +# HELP kube_pod_service_account The service account for a pod. +# TYPE kube_pod_service_account gauge +kube_pod_service_account{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",service_account="kube-proxy"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",service_account="kindnet"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",service_account=""} 1 +kube_pod_service_account{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",service_account="local-path-provisioner-service-account"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",service_account="coredns"} 1 +kube_pod_service_account{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",service_account="coredns"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",service_account="kube-state-metrics"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",service_account=""} 1 +# HELP kube_pod_scheduler The scheduler for a pod. +# TYPE kube_pod_scheduler gauge +kube_pod_scheduler{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-state-metrics-cbc966f68-9kq2v",uid="be520942-0b79-42a6-a120-f84d3f3dcec0",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564698-tv8jb",uid="4e3adb14-1555-4add-8704-e2446e43604a",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564699-9mstw",uid="dde7d739-dcd3-4299-aad4-968fa4cf4cac",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="mycurlpod",uid="10c596f8-e3ef-42ba-85b6-6a50a00a2b6a",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564697-8dmzw",uid="a5fbc43f-b159-40a3-966e-ec1c99789bb9",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",name="default-scheduler"} 1 +# HELP kube_replicaset_created [STABLE] Unix creation timestamp +# TYPE kube_replicaset_created gauge +kube_replicaset_created{namespace="kube-system",replicaset="coredns-76f75df574"} 1.713862198e+09 +kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1.713873333e+09 +kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 1.713862243e+09 +kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68"} 1.713879968e+09 +kube_replicaset_created{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1.713862198e+09 +# HELP kube_replicaset_status_replicas [STABLE] The number of replicas per ReplicaSet. +# TYPE kube_replicaset_status_replicas gauge +kube_replicaset_status_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 0 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68"} 1 +kube_replicaset_status_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +# HELP kube_replicaset_status_fully_labeled_replicas [STABLE] The number of fully labeled replicas per ReplicaSet. +# TYPE kube_replicaset_status_fully_labeled_replicas gauge +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 0 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68"} 1 +kube_replicaset_status_fully_labeled_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +# HELP kube_replicaset_status_ready_replicas [STABLE] The number of ready replicas per ReplicaSet. +# TYPE kube_replicaset_status_ready_replicas gauge +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68"} 1 +kube_replicaset_status_ready_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 0 +# HELP kube_replicaset_status_observed_generation [STABLE] The generation observed by the ReplicaSet controller. +# TYPE kube_replicaset_status_observed_generation gauge +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68"} 1 +kube_replicaset_status_observed_generation{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="coredns-76f75df574"} 1 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 2 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 2 +# HELP kube_replicaset_spec_replicas [STABLE] Number of desired pods for a ReplicaSet. +# TYPE kube_replicaset_spec_replicas gauge +kube_replicaset_spec_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 0 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68"} 1 +# HELP kube_replicaset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. +# TYPE kube_replicaset_metadata_generation gauge +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68"} 1 +kube_replicaset_metadata_generation{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="coredns-76f75df574"} 1 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 2 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 2 +# HELP kube_replicaset_owner [STABLE] Information about the ReplicaSet's owner. +# TYPE kube_replicaset_owner gauge +kube_replicaset_owner{namespace="kube-system",replicaset="coredns-76f75df574",owner_kind="Deployment",owner_name="coredns",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-cbc966f68",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb",owner_kind="Deployment",owner_name="local-path-provisioner",owner_is_controller="true"} 1 +# HELP kube_replicaset_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_replicaset_annotations gauge +# HELP kube_replicaset_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_replicaset_labels gauge +# HELP kube_resourcequota_created [STABLE] Unix creation timestamp +# TYPE kube_resourcequota_created gauge +kube_resourcequota_created{namespace="default",resourcequota="pods-high"} 1.713862291e+09 +# HELP kube_resourcequota [STABLE] Information about resource quota. +# TYPE kube_resourcequota gauge +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="hard"} 204800 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="hard"} 10 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="hard"} 1000 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="used"} 0 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="used"} 0 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="used"} 0 +# HELP kube_resourcequota_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_resourcequota_annotations gauge +# HELP kube_resourcequota_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_resourcequota_labels gauge +# HELP kube_secret_info [STABLE] Information about secret. +# TYPE kube_secret_info gauge +kube_secret_info{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 +# HELP kube_secret_type [STABLE] Type about secret. +# TYPE kube_secret_type gauge +kube_secret_type{namespace="kube-system",secret="bootstrap-token-abcdef",type="bootstrap.kubernetes.io/token"} 1 +# HELP kube_secret_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_secret_annotations gauge +# HELP kube_secret_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_secret_labels gauge +# HELP kube_secret_created [STABLE] Unix creation timestamp +# TYPE kube_secret_created gauge +kube_secret_created{namespace="kube-system",secret="bootstrap-token-abcdef"} 1.713862184e+09 +# HELP kube_secret_metadata_resource_version Resource version representing a specific version of secret. +# TYPE kube_secret_metadata_resource_version gauge +kube_secret_metadata_resource_version{namespace="kube-system",secret="bootstrap-token-abcdef"} 208 +# HELP kube_secret_owner Information about the Secret's owner. +# TYPE kube_secret_owner gauge +kube_secret_owner{namespace="kube-system",secret="bootstrap-token-abcdef",owner_kind="",owner_name="",owner_is_controller=""} 1 +# HELP kube_service_info [STABLE] Information about service. +# TYPE kube_service_info gauge +kube_service_info{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d",cluster_ip="10.96.0.1",external_name="",load_balancer_ip=""} 1 +kube_service_info{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf",cluster_ip="10.96.0.10",external_name="",load_balancer_ip=""} 1 +kube_service_info{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19",cluster_ip="None",external_name="",load_balancer_ip=""} 1 +# HELP kube_service_created [STABLE] Unix creation timestamp +# TYPE kube_service_created gauge +kube_service_created{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d"} 1.713862182e+09 +kube_service_created{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf"} 1.713862184e+09 +kube_service_created{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19"} 1.713862243e+09 +# HELP kube_service_spec_type [STABLE] Type about service. +# TYPE kube_service_spec_type gauge +kube_service_spec_type{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19",type="ClusterIP"} 1 +kube_service_spec_type{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d",type="ClusterIP"} 1 +kube_service_spec_type{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf",type="ClusterIP"} 1 +# HELP kube_service_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_service_annotations gauge +# HELP kube_service_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_service_labels gauge +# HELP kube_service_spec_external_ip [STABLE] Service external ips. One series for each ip +# TYPE kube_service_spec_external_ip gauge +# HELP kube_service_status_load_balancer_ingress [STABLE] Service load balancer ingress status +# TYPE kube_service_status_load_balancer_ingress gauge +# HELP kube_statefulset_created [STABLE] Unix creation timestamp +# TYPE kube_statefulset_created gauge +kube_statefulset_created{namespace="default",statefulset="web"} 1.713862291e+09 +# HELP kube_statefulset_status_replicas [STABLE] The number of replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas gauge +kube_statefulset_status_replicas{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_available The number of available replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_available gauge +kube_statefulset_status_replicas_available{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_current [STABLE] The number of current replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_current gauge +kube_statefulset_status_replicas_current{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_ready [STABLE] The number of ready replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_ready gauge +kube_statefulset_status_replicas_ready{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_updated [STABLE] The number of updated replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_updated gauge +kube_statefulset_status_replicas_updated{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_observed_generation [STABLE] The generation observed by the StatefulSet controller. +# TYPE kube_statefulset_status_observed_generation gauge +kube_statefulset_status_observed_generation{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_replicas [STABLE] Number of desired pods for a StatefulSet. +# TYPE kube_statefulset_replicas gauge +kube_statefulset_replicas{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_ordinals_start Start ordinal of the StatefulSet. +# TYPE kube_statefulset_ordinals_start gauge +# HELP kube_statefulset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state for the StatefulSet. +# TYPE kube_statefulset_metadata_generation gauge +kube_statefulset_metadata_generation{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_persistentvolumeclaim_retention_policy Count of retention policy for StatefulSet template PVCs +# TYPE kube_statefulset_persistentvolumeclaim_retention_policy gauge +kube_statefulset_persistentvolumeclaim_retention_policy{namespace="default",statefulset="web",when_deleted="Retain",when_scaled="Retain"} 1 +# HELP kube_statefulset_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_statefulset_annotations gauge +# HELP kube_statefulset_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_statefulset_labels gauge +# HELP kube_statefulset_status_current_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas). +# TYPE kube_statefulset_status_current_revision gauge +kube_statefulset_status_current_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 +# HELP kube_statefulset_status_update_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) +# TYPE kube_statefulset_status_update_revision gauge +kube_statefulset_status_update_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 +# HELP kube_storageclass_info [STABLE] Information about storageclass. +# TYPE kube_storageclass_info gauge +kube_storageclass_info{storageclass="standard",provisioner="rancher.io/local-path",reclaim_policy="Delete",volume_binding_mode="WaitForFirstConsumer"} 1 +# HELP kube_storageclass_created [STABLE] Unix creation timestamp +# TYPE kube_storageclass_created gauge +kube_storageclass_created{storageclass="standard"} 1.713862186e+09 +# HELP kube_storageclass_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_storageclass_annotations gauge +# HELP kube_storageclass_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_storageclass_labels gauge diff --git a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain new file mode 100644 index 00000000000..e1900b34128 --- /dev/null +++ b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain @@ -0,0 +1,1470 @@ +# HELP kube_configmap_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_configmap_annotations gauge +# HELP kube_configmap_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_configmap_labels gauge +# HELP kube_configmap_info [STABLE] Information about configmap. +# TYPE kube_configmap_info gauge +kube_configmap_info{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-public",configmap="cluster-info"} 1 +kube_configmap_info{namespace="kube-system",configmap="coredns"} 1 +kube_configmap_info{namespace="kube-system",configmap="kubeadm-config"} 1 +kube_configmap_info{namespace="kube-system",configmap="kubelet-config"} 1 +kube_configmap_info{namespace="default",configmap="example-redis-config"} 1 +kube_configmap_info{namespace="kube-system",configmap="kube-proxy"} 1 +kube_configmap_info{namespace="local-path-storage",configmap="local-path-config"} 1 +kube_configmap_info{namespace="default",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 +kube_configmap_info{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 1 +kube_configmap_info{namespace="kube-system",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="kube-public",configmap="kube-root-ca.crt"} 1 +kube_configmap_info{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 +# HELP kube_configmap_created [STABLE] Unix creation timestamp +# TYPE kube_configmap_created gauge +kube_configmap_created{namespace="kube-public",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-system",configmap="coredns"} 1.713862184e+09 +kube_configmap_created{namespace="kube-system",configmap="kubeadm-config"} 1.713862183e+09 +kube_configmap_created{namespace="kube-system",configmap="kubelet-config"} 1.713862183e+09 +kube_configmap_created{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-public",configmap="cluster-info"} 1.713862184e+09 +kube_configmap_created{namespace="local-path-storage",configmap="local-path-config"} 1.713862186e+09 +kube_configmap_created{namespace="default",configmap="example-redis-config"} 1.713862291e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-proxy"} 1.713862184e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 1.713862181e+09 +kube_configmap_created{namespace="kube-system",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="default",configmap="kube-root-ca.crt"} 1.713862198e+09 +kube_configmap_created{namespace="kube-system",configmap="extension-apiserver-authentication"} 1.713862181e+09 +# HELP kube_configmap_metadata_resource_version Resource version representing a specific version of the configmap. +# TYPE kube_configmap_metadata_resource_version gauge +kube_configmap_metadata_resource_version{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 320 +kube_configmap_metadata_resource_version{namespace="kube-public",configmap="cluster-info"} 338 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="coredns"} 218 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubeadm-config"} 199 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubelet-config"} 202 +kube_configmap_metadata_resource_version{namespace="default",configmap="example-redis-config"} 579 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-proxy"} 225 +kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="local-path-config"} 277 +kube_configmap_metadata_resource_version{namespace="default",configmap="kube-root-ca.crt"} 319 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="extension-apiserver-authentication"} 28 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-apiserver-legacy-service-account-token-tracking"} 53 +kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-root-ca.crt"} 323 +kube_configmap_metadata_resource_version{namespace="kube-public",configmap="kube-root-ca.crt"} 322 +kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="kube-root-ca.crt"} 325 +# HELP kube_cronjob_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_cronjob_annotations gauge +# HELP kube_cronjob_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_cronjob_labels gauge +# HELP kube_cronjob_info [STABLE] Info about cronjob. +# TYPE kube_cronjob_info gauge +kube_cronjob_info{namespace="default",cronjob="hello",schedule="*/1 * * * *",concurrency_policy="Allow"} 1 +# HELP kube_cronjob_created [STABLE] Unix creation timestamp +# TYPE kube_cronjob_created gauge +kube_cronjob_created{namespace="default",cronjob="hello"} 1.713862291e+09 +# HELP kube_cronjob_status_active [STABLE] Active holds pointers to currently running jobs. +# TYPE kube_cronjob_status_active gauge +kube_cronjob_status_active{namespace="default",cronjob="hello"} 0 +# HELP kube_cronjob_status_last_schedule_time [STABLE] LastScheduleTime keeps information of when was the last time the job was successfully scheduled. +# TYPE kube_cronjob_status_last_schedule_time gauge +kube_cronjob_status_last_schedule_time{namespace="default",cronjob="hello"} 1.71387336e+09 +# HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully. +# TYPE kube_cronjob_status_last_successful_time gauge +kube_cronjob_status_last_successful_time{namespace="default",cronjob="hello"} 1.713873363e+09 +# HELP kube_cronjob_spec_suspend [STABLE] Suspend flag tells the controller to suspend subsequent executions. +# TYPE kube_cronjob_spec_suspend gauge +kube_cronjob_spec_suspend{namespace="default",cronjob="hello"} 0 +# HELP kube_cronjob_spec_starting_deadline_seconds [STABLE] Deadline in seconds for starting the job if it misses scheduled time for any reason. +# TYPE kube_cronjob_spec_starting_deadline_seconds gauge +# HELP kube_cronjob_next_schedule_time [STABLE] Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed. +# TYPE kube_cronjob_next_schedule_time gauge +kube_cronjob_next_schedule_time{namespace="default",cronjob="hello"} 1.71387342e+09 +# HELP kube_cronjob_metadata_resource_version [STABLE] Resource version representing a specific version of the cronjob. +# TYPE kube_cronjob_metadata_resource_version gauge +kube_cronjob_metadata_resource_version{namespace="default",cronjob="hello"} 16932 +# HELP kube_cronjob_spec_successful_job_history_limit Successful job history limit tells the controller how many completed jobs should be preserved. +# TYPE kube_cronjob_spec_successful_job_history_limit gauge +kube_cronjob_spec_successful_job_history_limit{namespace="default",cronjob="hello"} 3 +# HELP kube_cronjob_spec_failed_job_history_limit Failed job history limit tells the controller how many failed jobs should be preserved. +# TYPE kube_cronjob_spec_failed_job_history_limit gauge +kube_cronjob_spec_failed_job_history_limit{namespace="default",cronjob="hello"} 1 +# HELP kube_daemonset_created [STABLE] Unix creation timestamp +# TYPE kube_daemonset_created gauge +kube_daemonset_created{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1.713862291e+09 +kube_daemonset_created{namespace="kube-system",daemonset="kindnet"} 1.713862185e+09 +kube_daemonset_created{namespace="kube-system",daemonset="kube-proxy"} 1.713862184e+09 +# HELP kube_daemonset_status_current_number_scheduled [STABLE] The number of nodes running at least one daemon pod and are supposed to. +# TYPE kube_daemonset_status_current_number_scheduled gauge +kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_desired_number_scheduled [STABLE] The number of nodes that should be running the daemon pod. +# TYPE kube_daemonset_status_desired_number_scheduled gauge +kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_number_available [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available +# TYPE kube_daemonset_status_number_available gauge +kube_daemonset_status_number_available{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_number_available{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_number_available{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_number_misscheduled [STABLE] The number of nodes running a daemon pod but are not supposed to. +# TYPE kube_daemonset_status_number_misscheduled gauge +kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 +kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kindnet"} 0 +kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kube-proxy"} 0 +# HELP kube_daemonset_status_number_ready [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. +# TYPE kube_daemonset_status_number_ready gauge +kube_daemonset_status_number_ready{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_number_unavailable [STABLE] The number of nodes that should be running the daemon pod and have none of the daemon pod running and available +# TYPE kube_daemonset_status_number_unavailable gauge +kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 +kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kindnet"} 0 +kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kube-proxy"} 0 +# HELP kube_daemonset_status_observed_generation [STABLE] The most recent generation observed by the daemon set controller. +# TYPE kube_daemonset_status_observed_generation gauge +kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_status_updated_number_scheduled [STABLE] The total number of nodes that are running updated daemon pod +# TYPE kube_daemonset_status_updated_number_scheduled gauge +kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. +# TYPE kube_daemonset_metadata_generation gauge +kube_daemonset_metadata_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 +kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kindnet"} 1 +kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kube-proxy"} 1 +# HELP kube_daemonset_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_daemonset_annotations gauge +# HELP kube_daemonset_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_daemonset_labels gauge +# HELP kube_deployment_created [STABLE] Unix creation timestamp +# TYPE kube_deployment_created gauge +kube_deployment_created{namespace="kube-system",deployment="coredns"} 1.713862184e+09 +kube_deployment_created{namespace="kube-system",deployment="kube-state-metrics"} 1.713862243e+09 +kube_deployment_created{namespace="local-path-storage",deployment="local-path-provisioner"} 1.713862186e+09 +# HELP kube_deployment_status_replicas [STABLE] The number of replicas per deployment. +# TYPE kube_deployment_status_replicas gauge +kube_deployment_status_replicas{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_status_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_status_replicas_ready [STABLE] The number of ready replicas per deployment. +# TYPE kube_deployment_status_replicas_ready gauge +kube_deployment_status_replicas_ready{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_status_replicas_ready{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas_ready{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_status_replicas_available [STABLE] The number of available replicas per deployment. +# TYPE kube_deployment_status_replicas_available gauge +kube_deployment_status_replicas_available{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_status_replicas_available{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_status_replicas_available{namespace="kube-system",deployment="kube-state-metrics"} 1 +# HELP kube_deployment_status_replicas_unavailable [STABLE] The number of unavailable replicas per deployment. +# TYPE kube_deployment_status_replicas_unavailable gauge +kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="coredns"} 0 +kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 +kube_deployment_status_replicas_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 +# HELP kube_deployment_status_replicas_updated [STABLE] The number of updated replicas per deployment. +# TYPE kube_deployment_status_replicas_updated gauge +kube_deployment_status_replicas_updated{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_status_replicas_updated{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_status_replicas_updated{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_status_observed_generation [STABLE] The generation observed by the deployment controller. +# TYPE kube_deployment_status_observed_generation gauge +kube_deployment_status_observed_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +kube_deployment_status_observed_generation{namespace="kube-system",deployment="coredns"} 1 +kube_deployment_status_observed_generation{namespace="kube-system",deployment="kube-state-metrics"} 2 +# HELP kube_deployment_status_condition [STABLE] The current status conditions of a deployment. +# TYPE kube_deployment_status_condition gauge +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="unknown"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="unknown"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="unknown"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="true"} 1 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="false"} 0 +kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="unknown"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="true"} 1 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="false"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="unknown"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="true"} 1 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="false"} 0 +kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="unknown"} 0 +# HELP kube_deployment_spec_replicas [STABLE] Number of desired pods for a deployment. +# TYPE kube_deployment_spec_replicas gauge +kube_deployment_spec_replicas{namespace="kube-system",deployment="coredns"} 2 +kube_deployment_spec_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_spec_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_spec_paused [STABLE] Whether the deployment is paused and will not be processed by the deployment controller. +# TYPE kube_deployment_spec_paused gauge +kube_deployment_spec_paused{namespace="kube-system",deployment="coredns"} 0 +kube_deployment_spec_paused{namespace="kube-system",deployment="kube-state-metrics"} 0 +kube_deployment_spec_paused{namespace="local-path-storage",deployment="local-path-provisioner"} 0 +# HELP kube_deployment_spec_strategy_rollingupdate_max_unavailable [STABLE] Maximum number of unavailable replicas during a rolling update of a deployment. +# TYPE kube_deployment_spec_strategy_rollingupdate_max_unavailable gauge +kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="coredns"} 1 +kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 +kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 +# HELP kube_deployment_spec_strategy_rollingupdate_max_surge [STABLE] Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a deployment. +# TYPE kube_deployment_spec_strategy_rollingupdate_max_surge gauge +kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="coredns"} 1 +kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="kube-state-metrics"} 1 +kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. +# TYPE kube_deployment_metadata_generation gauge +kube_deployment_metadata_generation{namespace="kube-system",deployment="coredns"} 1 +kube_deployment_metadata_generation{namespace="kube-system",deployment="kube-state-metrics"} 2 +kube_deployment_metadata_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 +# HELP kube_deployment_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_deployment_annotations gauge +# HELP kube_deployment_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_deployment_labels gauge +# HELP kube_endpoint_info [STABLE] Information about endpoint. +# TYPE kube_endpoint_info gauge +kube_endpoint_info{namespace="default",endpoint="kubernetes"} 1 +kube_endpoint_info{namespace="kube-system",endpoint="kube-dns"} 1 +kube_endpoint_info{namespace="kube-system",endpoint="kube-state-metrics"} 1 +# HELP kube_endpoint_created [STABLE] Unix creation timestamp +# TYPE kube_endpoint_created gauge +kube_endpoint_created{namespace="default",endpoint="kubernetes"} 1.713862182e+09 +kube_endpoint_created{namespace="kube-system",endpoint="kube-dns"} 1.713862198e+09 +kube_endpoint_created{namespace="kube-system",endpoint="kube-state-metrics"} 1.713862243e+09 +# HELP kube_endpoint_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_endpoint_annotations gauge +# HELP kube_endpoint_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_endpoint_labels gauge +# HELP kube_endpoint_address_available (Deprecated since v2.6.0) Number of addresses available in endpoint. +# TYPE kube_endpoint_address_available gauge +kube_endpoint_address_available{namespace="default",endpoint="kubernetes"} 1 +kube_endpoint_address_available{namespace="kube-system",endpoint="kube-dns"} 6 +kube_endpoint_address_available{namespace="kube-system",endpoint="kube-state-metrics"} 2 +# HELP kube_endpoint_address_not_ready (Deprecated since v2.6.0) Number of addresses not ready in endpoint +# TYPE kube_endpoint_address_not_ready gauge +kube_endpoint_address_not_ready{namespace="default",endpoint="kubernetes"} 0 +kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-dns"} 0 +kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-state-metrics"} 0 +# HELP kube_endpoint_address [STABLE] Information about Endpoint available and non available addresses. +# TYPE kube_endpoint_address gauge +kube_endpoint_address{namespace="kube-system",endpoint="kube-state-metrics",ip="10.244.0.174",ready="true"} 1 +kube_endpoint_address{namespace="default",endpoint="kubernetes",ip="172.21.0.2",ready="true"} 1 +kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.3",ready="true"} 1 +kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.4",ready="true"} 1 +# HELP kube_endpoint_ports [STABLE] Information about the Endpoint ports. +# TYPE kube_endpoint_ports gauge +kube_endpoint_ports{namespace="default",endpoint="kubernetes",port_name="https",port_protocol="TCP",port_number="6443"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns-tcp",port_protocol="TCP",port_number="53"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns",port_protocol="UDP",port_number="53"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="metrics",port_protocol="TCP",port_number="9153"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="telemetry",port_protocol="TCP",port_number="8081"} 1 +kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="http-metrics",port_protocol="TCP",port_number="8080"} 1 +# HELP kube_job_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_job_annotations gauge +# HELP kube_job_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_job_labels gauge +# HELP kube_job_info [STABLE] Information about job. +# TYPE kube_job_info gauge +kube_job_info{namespace="default",job_name="hello"} 1 +kube_job_info{namespace="default",job_name="hello-28564554"} 1 +kube_job_info{namespace="default",job_name="hello-28564555"} 1 +kube_job_info{namespace="default",job_name="hello-28564556"} 1 +# HELP kube_job_created [STABLE] Unix creation timestamp +# TYPE kube_job_created gauge +kube_job_created{namespace="default",job_name="hello"} 1.713862291e+09 +kube_job_created{namespace="default",job_name="hello-28564554"} 1.71387324e+09 +kube_job_created{namespace="default",job_name="hello-28564555"} 1.7138733e+09 +kube_job_created{namespace="default",job_name="hello-28564556"} 1.71387336e+09 +# HELP kube_job_spec_parallelism [STABLE] The maximum desired number of pods the job should run at any given time. +# TYPE kube_job_spec_parallelism gauge +kube_job_spec_parallelism{namespace="default",job_name="hello"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564554"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564555"} 1 +kube_job_spec_parallelism{namespace="default",job_name="hello-28564556"} 1 +# HELP kube_job_spec_completions [STABLE] The desired number of successfully finished pods the job should be run with. +# TYPE kube_job_spec_completions gauge +kube_job_spec_completions{namespace="default",job_name="hello-28564555"} 1 +kube_job_spec_completions{namespace="default",job_name="hello-28564556"} 1 +kube_job_spec_completions{namespace="default",job_name="hello"} 1 +kube_job_spec_completions{namespace="default",job_name="hello-28564554"} 1 +# HELP kube_job_spec_active_deadline_seconds [STABLE] The duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. +# TYPE kube_job_spec_active_deadline_seconds gauge +# HELP kube_job_status_succeeded [STABLE] The number of pods which reached Phase Succeeded. +# TYPE kube_job_status_succeeded gauge +kube_job_status_succeeded{namespace="default",job_name="hello-28564554"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello-28564555"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello-28564556"} 1 +kube_job_status_succeeded{namespace="default",job_name="hello"} 1 +# HELP kube_job_status_failed [STABLE] The number of pods which reached Phase Failed and the reason for failure. +# TYPE kube_job_status_failed gauge +kube_job_status_failed{namespace="default",job_name="hello-28564554"} 0 +kube_job_status_failed{namespace="default",job_name="hello-28564555"} 0 +kube_job_status_failed{namespace="default",job_name="hello-28564556"} 0 +kube_job_status_failed{namespace="default",job_name="hello"} 0 +# HELP kube_job_status_active [STABLE] The number of actively running pods. +# TYPE kube_job_status_active gauge +kube_job_status_active{namespace="default",job_name="hello"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564554"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564555"} 0 +kube_job_status_active{namespace="default",job_name="hello-28564556"} 0 +# HELP kube_job_complete [STABLE] The job has completed its execution. +# TYPE kube_job_complete gauge +kube_job_complete{namespace="default",job_name="hello-28564556",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564556",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564556",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello-28564554",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564554",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564554",condition="unknown"} 0 +kube_job_complete{namespace="default",job_name="hello-28564555",condition="true"} 1 +kube_job_complete{namespace="default",job_name="hello-28564555",condition="false"} 0 +kube_job_complete{namespace="default",job_name="hello-28564555",condition="unknown"} 0 +# HELP kube_job_failed [STABLE] The job has failed its execution. +# TYPE kube_job_failed gauge +# HELP kube_job_status_start_time [STABLE] StartTime represents time when the job was acknowledged by the Job Manager. +# TYPE kube_job_status_start_time gauge +kube_job_status_start_time{namespace="default",job_name="hello-28564555"} 1.7138733e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564556"} 1.71387336e+09 +kube_job_status_start_time{namespace="default",job_name="hello"} 1.713862291e+09 +kube_job_status_start_time{namespace="default",job_name="hello-28564554"} 1.71387324e+09 +# HELP kube_job_status_completion_time [STABLE] CompletionTime represents time when the job was completed. +# TYPE kube_job_status_completion_time gauge +kube_job_status_completion_time{namespace="default",job_name="hello-28564556"} 1.713873363e+09 +kube_job_status_completion_time{namespace="default",job_name="hello"} 1.713862309e+09 +kube_job_status_completion_time{namespace="default",job_name="hello-28564554"} 1.713873242e+09 +kube_job_status_completion_time{namespace="default",job_name="hello-28564555"} 1.713873303e+09 +# HELP kube_job_owner [STABLE] Information about the Job's owner. +# TYPE kube_job_owner gauge +kube_job_owner{namespace="default",job_name="hello-28564554",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +kube_job_owner{namespace="default",job_name="hello-28564555",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +kube_job_owner{namespace="default",job_name="hello-28564556",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 +kube_job_owner{namespace="default",job_name="hello",owner_kind="",owner_name="",owner_is_controller=""} 1 +# HELP kube_lease_owner Information about the Lease's owner. +# TYPE kube_lease_owner gauge +kube_lease_owner{lease="kind-control-plane",owner_kind="Node",owner_name="kind-control-plane",namespace="kube-node-lease",lease_holder="kind-control-plane"} 1 +kube_lease_owner{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",owner_kind="",owner_name="",namespace="kube-system",lease_holder="apiserver-c7uylvfxlbqccnk6myfkwetzze_a1affd56-56b4-400c-af43-2e8622119e0e"} 1 +kube_lease_owner{lease="kube-controller-manager",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_707366f0-363e-48ef-bf73-ce8a760a3c49"} 1 +kube_lease_owner{lease="kube-scheduler",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_fab57b50-1240-4428-8410-6dde0a5ba977"} 1 +# HELP kube_lease_renew_time Kube lease renew time. +# TYPE kube_lease_renew_time gauge +kube_lease_renew_time{lease="kind-control-plane",namespace="kube-node-lease"} 1.713873366e+09 +kube_lease_renew_time{lease="apiserver-c7uylvfxlbqccnk6myfkwetzze",namespace="kube-system"} 1.713873366e+09 +kube_lease_renew_time{lease="kube-controller-manager",namespace="kube-system"} 1.713873373e+09 +kube_lease_renew_time{lease="kube-scheduler",namespace="kube-system"} 1.713873372e+09 +# HELP kube_namespace_created [STABLE] Unix creation timestamp +# TYPE kube_namespace_created gauge +kube_namespace_created{namespace="default"} 1.713862181e+09 +kube_namespace_created{namespace="kube-node-lease"} 1.713862181e+09 +kube_namespace_created{namespace="kube-public"} 1.713862181e+09 +kube_namespace_created{namespace="kube-system"} 1.713862181e+09 +kube_namespace_created{namespace="local-path-storage"} 1.713862186e+09 +# HELP kube_namespace_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_namespace_annotations gauge +# HELP kube_namespace_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_namespace_labels gauge +# HELP kube_namespace_status_phase [STABLE] kubernetes namespace status phase. +# TYPE kube_namespace_status_phase gauge +kube_namespace_status_phase{namespace="kube-node-lease",phase="Active"} 1 +kube_namespace_status_phase{namespace="kube-node-lease",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="kube-public",phase="Active"} 1 +kube_namespace_status_phase{namespace="kube-public",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="kube-system",phase="Active"} 1 +kube_namespace_status_phase{namespace="kube-system",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="local-path-storage",phase="Active"} 1 +kube_namespace_status_phase{namespace="local-path-storage",phase="Terminating"} 0 +kube_namespace_status_phase{namespace="default",phase="Active"} 1 +kube_namespace_status_phase{namespace="default",phase="Terminating"} 0 +# HELP kube_namespace_status_condition The condition of a namespace. +# TYPE kube_namespace_status_condition gauge +# HELP kube_node_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_node_annotations gauge +# HELP kube_node_created [STABLE] Unix creation timestamp +# TYPE kube_node_created gauge +kube_node_created{node="kind-control-plane"} 1.713862181e+09 +# HELP kube_node_deletion_timestamp Unix deletion timestamp +# TYPE kube_node_deletion_timestamp gauge +# HELP kube_node_info [STABLE] Information about a cluster node. +# TYPE kube_node_info gauge +kube_node_info{node="kind-control-plane",kernel_version="6.6.12-linuxkit",os_image="Debian GNU/Linux 12 (bookworm)",container_runtime_version="containerd://1.7.13",kubelet_version="v1.29.1",kubeproxy_version="v1.29.1",provider_id="kind://docker/kind/kind-control-plane",pod_cidr="10.244.0.0/24",system_uuid="d620d3a4eabe4f1290df7f4eeffe9565",internal_ip="172.21.0.2"} 1 +# HELP kube_node_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_node_labels gauge +# HELP kube_node_role The role of a cluster node. +# TYPE kube_node_role gauge +kube_node_role{node="kind-control-plane",role="control-plane"} 1 +# HELP kube_node_spec_taint [STABLE] The taint of a cluster node. +# TYPE kube_node_spec_taint gauge +# HELP kube_node_spec_unschedulable [STABLE] Whether a node can schedule new pods. +# TYPE kube_node_spec_unschedulable gauge +kube_node_spec_unschedulable{node="kind-control-plane"} 0 +# HELP kube_node_status_allocatable [STABLE] The allocatable for different resources of a node that are available for scheduling. +# TYPE kube_node_status_allocatable gauge +kube_node_status_allocatable{node="kind-control-plane",resource="pods",unit="integer"} 110 +kube_node_status_allocatable{node="kind-control-plane",resource="cpu",unit="core"} 16 +kube_node_status_allocatable{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 3.69759891456e+11 +kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 +kube_node_status_allocatable{node="kind-control-plane",resource="memory",unit="byte"} 1.6769380352e+10 +# HELP kube_node_status_capacity [STABLE] The capacity for different resources of a node. +# TYPE kube_node_status_capacity gauge +kube_node_status_capacity{node="kind-control-plane",resource="memory",unit="byte"} 1.6769380352e+10 +kube_node_status_capacity{node="kind-control-plane",resource="pods",unit="integer"} 110 +kube_node_status_capacity{node="kind-control-plane",resource="cpu",unit="core"} 16 +kube_node_status_capacity{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 3.69759891456e+11 +kube_node_status_capacity{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 +# HELP kube_node_status_condition [STABLE] The condition of a cluster node. +# TYPE kube_node_status_condition gauge +kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="true"} 0 +kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="false"} 1 +kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="unknown"} 0 +kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="true"} 0 +kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="false"} 1 +kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="unknown"} 0 +kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="true"} 0 +kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="false"} 1 +kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="unknown"} 0 +kube_node_status_condition{node="kind-control-plane",condition="Ready",status="true"} 1 +kube_node_status_condition{node="kind-control-plane",condition="Ready",status="false"} 0 +kube_node_status_condition{node="kind-control-plane",condition="Ready",status="unknown"} 0 +# HELP kube_node_status_addresses Node address information. +# TYPE kube_node_status_addresses gauge +kube_node_status_addresses{node="kind-control-plane",type="InternalIP",address="172.21.0.2"} 1 +kube_node_status_addresses{node="kind-control-plane",type="Hostname",address="kind-control-plane"} 1 +# HELP kube_persistentvolumeclaim_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_persistentvolumeclaim_labels gauge +# HELP kube_persistentvolumeclaim_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_persistentvolumeclaim_annotations gauge +# HELP kube_persistentvolumeclaim_info [STABLE] Information about persistent volume claim. +# TYPE kube_persistentvolumeclaim_info gauge +kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="task-pv-claim",storageclass="generic",volumename="task-pv-volume",volumemode="Filesystem"} 1 +# HELP kube_persistentvolumeclaim_status_phase [STABLE] The phase the persistent volume claim is currently in. +# TYPE kube_persistentvolumeclaim_status_phase gauge +kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Lost"} 0 +kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Bound"} 1 +kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Pending"} 0 +# HELP kube_persistentvolumeclaim_resource_requests_storage_bytes [STABLE] The capacity of storage requested by the persistent volume claim. +# TYPE kube_persistentvolumeclaim_resource_requests_storage_bytes gauge +kube_persistentvolumeclaim_resource_requests_storage_bytes{namespace="default",persistentvolumeclaim="task-pv-claim"} 1024 +# HELP kube_persistentvolumeclaim_access_mode [STABLE] The access mode(s) specified by the persistent volume claim. +# TYPE kube_persistentvolumeclaim_access_mode gauge +kube_persistentvolumeclaim_access_mode{namespace="default",persistentvolumeclaim="task-pv-claim",access_mode="ReadWriteOnce"} 1 +# HELP kube_persistentvolumeclaim_status_condition Information about status of different conditions of persistent volume claim. +# TYPE kube_persistentvolumeclaim_status_condition gauge +# HELP kube_persistentvolumeclaim_created Unix creation timestamp +# TYPE kube_persistentvolumeclaim_created gauge +kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="task-pv-claim"} 1.713862291e+09 +# HELP kube_persistentvolumeclaim_deletion_timestamp Unix deletion timestamp +# TYPE kube_persistentvolumeclaim_deletion_timestamp gauge +# HELP kube_persistentvolume_claim_ref [STABLE] Information about the Persistent Volume Claim Reference. +# TYPE kube_persistentvolume_claim_ref gauge +kube_persistentvolume_claim_ref{persistentvolume="task-pv-volume",name="task-pv-claim",claim_namespace="default"} 1 +# HELP kube_persistentvolume_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_persistentvolume_annotations gauge +# HELP kube_persistentvolume_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_persistentvolume_labels gauge +# HELP kube_persistentvolume_status_phase [STABLE] The phase indicates if a volume is available, bound to a claim, or released by a claim. +# TYPE kube_persistentvolume_status_phase gauge +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Pending"} 0 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Available"} 0 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Bound"} 1 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Released"} 0 +kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Failed"} 0 +# HELP kube_persistentvolume_info [STABLE] Information about persistentvolume. +# TYPE kube_persistentvolume_info gauge +kube_persistentvolume_info{persistentvolume="task-pv-volume",storageclass="generic",gce_persistent_disk_name="",ebs_volume_id="",azure_disk_name="",fc_wwids="",fc_lun="",fc_target_wwns="",iscsi_target_portal="",iscsi_iqn="",iscsi_lun="",iscsi_initiator_name="",nfs_server="",nfs_path="",csi_driver="",csi_volume_handle="",local_path="",local_fs="",host_path="/tmp/data",host_path_type=""} 1 +# HELP kube_persistentvolume_capacity_bytes [STABLE] Persistentvolume capacity in bytes. +# TYPE kube_persistentvolume_capacity_bytes gauge +kube_persistentvolume_capacity_bytes{persistentvolume="task-pv-volume"} 2048 +# HELP kube_persistentvolume_created Unix creation timestamp +# TYPE kube_persistentvolume_created gauge +kube_persistentvolume_created{persistentvolume="task-pv-volume"} 1.713862291e+09 +# HELP kube_persistentvolume_deletion_timestamp Unix deletion timestamp +# TYPE kube_persistentvolume_deletion_timestamp gauge +# HELP kube_pod_completion_time [STABLE] Completion time in unix timestamp for a pod. +# TYPE kube_pod_completion_time gauge +kube_pod_completion_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.713873372e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_completion_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862307e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_completion_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +# HELP kube_pod_container_info [STABLE] Information about a container in a pod. +# TYPE kube_pod_container_info gauge +kube_pod_container_info{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.11.1",image="registry.k8s.io/coredns/coredns:v1.11.1",image_id="sha256:cbb01a7bd410dc08ba382018ab909a674fb0e48687f0c00797ed5bc34fcc6bb4",container_id="containerd://1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d"} 1 +kube_pod_container_info{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",image_spec="docker.io/kindest/kindnetd:v20240202-8f1494ea",image="docker.io/kindest/kindnetd:v20240202-8f1494ea",image_id="sha256:4950bb10b3f87e8d4a8f772a0d8934625cac4ccfa3675fea34cad0dab83fd5a5",container_id="containerd://92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager",image_spec="registry.k8s.io/kube-controller-manager:v1.29.1",image="registry.k8s.io/kube-controller-manager-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:f752b19ecffaf870204cca3268011949c4fb4f2e3d463ede1fdb23e34ce32b79",container_id="containerd://f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879"} 1 +kube_pod_container_info{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner",image_spec="docker.io/kindest/local-path-provisioner:v20240202-8f1494ea",image="docker.io/kindest/local-path-provisioner:v20240202-8f1494ea",image_id="sha256:0500518ebaa68d16973c65dc0b776813b50ab6e7e8f112fca41aca387a549d4f",container_id="containerd://033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b"} 1 +kube_pod_container_info{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod",image_spec="curlimages/curl",image="docker.io/curlimages/curl:latest",image_id="docker.io/curlimages/curl@sha256:25d29daeb9b14b89e2fa8cc17c70e4b188bca1466086907c2d9a4b56b59d8e21",container_id="containerd://be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483"} 1 +kube_pod_container_info{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757"} 1 +kube_pod_container_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",image_spec="registry.k8s.io/etcd:3.5.10-0",image="registry.k8s.io/etcd:3.5.10-0",image_id="sha256:a0eed15eed4498c145ef2f1883fcd300d7adbb759df73c901abd5383dda668e7",container_id="containerd://247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics",image_spec="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.12.0",image="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.12.0",image_id="registry.k8s.io/kube-state-metrics/kube-state-metrics@sha256:b401fae262a5decf83c4311083f8efb4d6ca7b6a733e57b95344cb8dccd14e11",container_id="containerd://54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585"} 1 +kube_pod_container_info{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx",image_spec="docker.io/nginx:1.24.0-alpine-slim",image="docker.io/library/nginx:1.24.0-alpine-slim",image_id="docker.io/library/nginx@sha256:5893dc08a2cb01e21592ff469346ebaacf49167fbc949f45e1c29111981b0427",container_id="containerd://4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver",image_spec="registry.k8s.io/kube-apiserver:v1.29.1",image="registry.k8s.io/kube-apiserver-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:294d2b5dab41cad4038a2998742899c4556e5713f9d0615814d5fb0c1d59006a",container_id="containerd://9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy",image_spec="registry.k8s.io/kube-proxy:v1.29.1",image="registry.k8s.io/kube-proxy-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:339df7e7b1b6b9795477e81e6f1568bd5e07e785240a7269d93f1728f46e89ae",container_id="containerd://8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138"} 1 +kube_pod_container_info{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",image_spec="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image_id="sha256:c896ab1149bb529ca28d76976885e04c0d754b6592f74b5478bfdcf248f84e62",container_id="containerd://bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08"} 1 +kube_pod_container_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler",image_spec="registry.k8s.io/kube-scheduler:v1.29.1",image="registry.k8s.io/kube-scheduler-amd64:v1.29.1",image_id="docker.io/library/import-2024-02-02@sha256:7ee1db230fd72d5ee5a6614fd69c4aee629ab442b557677faa9c873014956fbb",container_id="containerd://cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620"} 1 +kube_pod_container_info{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:c3839dd800b9eb7603340509769c43e146a74c63dca3045a8e7dc8ee07e53966",container_id="containerd://921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450"} 1 +kube_pod_container_info{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.11.1",image="registry.k8s.io/coredns/coredns:v1.11.1",image_id="sha256:cbb01a7bd410dc08ba382018ab909a674fb0e48687f0c00797ed5bc34fcc6bb4",container_id="containerd://03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4"} 1 +# HELP kube_pod_container_resource_limits The number of requested limit resource by a container. It is recommended to use the kube_pod_resource_limits metric exposed by kube-scheduler instead, as it is more precise. +# TYPE kube_pod_container_resource_limits gauge +kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 +kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 +# HELP kube_pod_container_resource_requests The number of requested request resource by a container. It is recommended to use the kube_pod_resource_requests metric exposed by kube-scheduler instead, as it is more precise. +# TYPE kube_pod_container_resource_requests gauge +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager",node="kind-control-plane",resource="cpu",unit="core"} 0.2 +kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd",node="kind-control-plane",resource="memory",unit="byte"} 1.048576e+08 +kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver",node="kind-control-plane",resource="cpu",unit="core"} 0.25 +kube_pod_container_resource_requests{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 +kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="cpu",unit="core"} 0.1 +kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 +# HELP kube_pod_container_state_started [STABLE] Start time in unix timestamp for a pod container. +# TYPE kube_pod_container_state_started gauge +kube_pod_container_state_started{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 1.71387324e+09 +kube_pod_container_state_started{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1.713862203e+09 +kube_pod_container_state_started{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1.713862304e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1.713862178e+09 +kube_pod_container_state_started{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1.713862203e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 1.71387336e+09 +kube_pod_container_state_started{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 1.713873372e+09 +kube_pod_container_state_started{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 1.7138733e+09 +kube_pod_container_state_started{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 1.713862307e+09 +kube_pod_container_state_started{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1.713862179e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1.713862201e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1.713862178e+09 +kube_pod_container_state_started{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1.713862203e+09 +kube_pod_container_state_started{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1.71386231e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1.713862178e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1.7138622e+09 +kube_pod_container_state_started{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 1.713873336e+09 +# HELP kube_pod_container_status_last_terminated_reason Describes the last reason the container was in terminated state. +# TYPE kube_pod_container_status_last_terminated_reason gauge +# HELP kube_pod_container_status_last_terminated_exitcode Describes the exit code for the last container in terminated state. +# TYPE kube_pod_container_status_last_terminated_exitcode gauge +# HELP kube_pod_container_status_last_terminated_timestamp Last terminated time for a pod container in unix timestamp. +# TYPE kube_pod_container_status_last_terminated_timestamp gauge +# HELP kube_pod_container_status_ready [STABLE] Describes whether the containers readiness check succeeded. +# TYPE kube_pod_container_status_ready gauge +kube_pod_container_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1 +kube_pod_container_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 1 +kube_pod_container_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1 +kube_pod_container_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1 +kube_pod_container_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1 +# HELP kube_pod_container_status_restarts_total [STABLE] The number of container restarts per container. +# TYPE kube_pod_container_status_restarts_total counter +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +kube_pod_container_status_restarts_total{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +kube_pod_container_status_restarts_total{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 +# HELP kube_pod_container_status_running [STABLE] Describes whether the container is currently in running state. +# TYPE kube_pod_container_status_running gauge +kube_pod_container_status_running{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_running{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_running{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 1 +kube_pod_container_status_running{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 1 +kube_pod_container_status_running{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 1 +kube_pod_container_status_running{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_running{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 1 +kube_pod_container_status_running{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1 +# HELP kube_pod_container_status_terminated [STABLE] Describes whether the container is currently in terminated state. +# TYPE kube_pod_container_status_terminated gauge +kube_pod_container_status_terminated{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +kube_pod_container_status_terminated{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 1 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 0 +kube_pod_container_status_terminated{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_terminated{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_terminated{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 1 +kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +# HELP kube_pod_container_status_terminated_reason Describes the reason the container is currently in terminated state. +# TYPE kube_pod_container_status_terminated_reason gauge +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello",reason="Completed"} 1 +kube_pod_container_status_terminated_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello",reason="Completed"} 1 +# HELP kube_pod_container_status_waiting [STABLE] Describes whether the container is currently in waiting state. +# TYPE kube_pod_container_status_waiting gauge +kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",container="coredns"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",container="kindnet-cni"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",container="kube-controller-manager"} 0 +kube_pod_container_status_waiting{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",container="local-path-provisioner"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",container="mycurlpod"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",container="hello"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",container="etcd"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 0 +kube_pod_container_status_waiting{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",container="nginx"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",container="kube-apiserver"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",container="kube-proxy"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",container="fluentd-elasticsearch"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 0 +kube_pod_container_status_waiting{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",container="hello"} 0 +kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",container="coredns"} 0 +# HELP kube_pod_container_status_waiting_reason [STABLE] Describes the reason the container is currently in waiting state. +# TYPE kube_pod_container_status_waiting_reason gauge +# HELP kube_pod_created [STABLE] Unix creation timestamp +# TYPE kube_pod_created gauge +kube_pod_created{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862199e+09 +kube_pod_created{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +kube_pod_created{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_created{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_created{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_created{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_created{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 +kube_pod_created{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_created{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_created{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_created{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_created{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_created{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862199e+09 +# HELP kube_pod_deletion_timestamp Unix deletion timestamp +# TYPE kube_pod_deletion_timestamp gauge +# HELP kube_pod_info [STABLE] Information about pod. +# TYPE kube_pod_info gauge +kube_pod_info{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",host_ip="172.21.0.2",pod_ip="10.244.0.2",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="local-path-provisioner-7577fdbbfb",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",host_ip="172.21.0.2",pod_ip="10.244.0.177",node="kind-control-plane",created_by_kind="",created_by_name="",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",host_ip="172.21.0.2",pod_ip="10.244.0.173",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564555",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",host_ip="172.21.0.2",pod_ip="10.244.0.7",node="kind-control-plane",created_by_kind="Job",created_by_name="hello",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kindnet",priority_class="",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",host_ip="172.21.0.2",pod_ip="10.244.0.8",node="kind-control-plane",created_by_kind="StatefulSet",created_by_name="web",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kube-proxy",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",host_ip="172.21.0.2",pod_ip="10.244.0.174",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="kube-state-metrics-5bcd4898",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",host_ip="172.21.0.2",pod_ip="10.244.0.172",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564554",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",host_ip="172.21.0.2",pod_ip="10.244.0.4",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-76f75df574",priority_class="system-cluster-critical",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",host_ip="172.21.0.2",pod_ip="10.244.0.6",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="fluentd-elasticsearch",priority_class="",host_network="false"} 1 +kube_pod_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",host_ip="172.21.0.2",pod_ip="172.21.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 +kube_pod_info{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",host_ip="172.21.0.2",pod_ip="10.244.0.3",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-76f75df574",priority_class="system-cluster-critical",host_network="false"} 1 +kube_pod_info{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",host_ip="172.21.0.2",pod_ip="10.244.0.176",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28564556",priority_class="",host_network="false"} 1 +# HELP kube_pod_ips Pod IP addresses +# TYPE kube_pod_ips gauge +kube_pod_ips{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",ip="10.244.0.172",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",ip="10.244.0.4",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",ip="10.244.0.6",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",ip="10.244.0.3",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",ip="10.244.0.176",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",ip="10.244.0.177",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",ip="10.244.0.173",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",ip="10.244.0.7",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",ip="10.244.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",ip="10.244.0.8",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",ip="172.21.0.2",ip_family="4"} 1 +kube_pod_ips{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",ip="10.244.0.174",ip_family="4"} 1 +# HELP kube_pod_init_container_info [STABLE] Information about an init container in a pod. +# TYPE kube_pod_init_container_info gauge +# HELP kube_pod_init_container_resource_limits The number of requested limit resource by an init container. +# TYPE kube_pod_init_container_resource_limits gauge +# HELP kube_pod_init_container_resource_requests The number of requested request resource by an init container. +# TYPE kube_pod_init_container_resource_requests gauge +# HELP kube_pod_init_container_status_last_terminated_reason Describes the last reason the init container was in terminated state. +# TYPE kube_pod_init_container_status_last_terminated_reason gauge +# HELP kube_pod_init_container_status_ready [STABLE] Describes whether the init containers readiness check succeeded. +# TYPE kube_pod_init_container_status_ready gauge +# HELP kube_pod_init_container_status_restarts_total [STABLE] The number of restarts for the init container. +# TYPE kube_pod_init_container_status_restarts_total counter +# HELP kube_pod_init_container_status_running [STABLE] Describes whether the init container is currently in running state. +# TYPE kube_pod_init_container_status_running gauge +# HELP kube_pod_init_container_status_terminated [STABLE] Describes whether the init container is currently in terminated state. +# TYPE kube_pod_init_container_status_terminated gauge +# HELP kube_pod_init_container_status_terminated_reason Describes the reason the init container is currently in terminated state. +# TYPE kube_pod_init_container_status_terminated_reason gauge +# HELP kube_pod_init_container_status_waiting [STABLE] Describes whether the init container is currently in waiting state. +# TYPE kube_pod_init_container_status_waiting gauge +# HELP kube_pod_init_container_status_waiting_reason Describes the reason the init container is currently in waiting state. +# TYPE kube_pod_init_container_status_waiting_reason gauge +# HELP kube_pod_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_pod_annotations gauge +# HELP kube_pod_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_pod_labels gauge +# HELP kube_pod_overhead_cpu_cores The pod overhead in regards to cpu cores associated with running a pod. +# TYPE kube_pod_overhead_cpu_cores gauge +# HELP kube_pod_overhead_memory_bytes The pod overhead in regards to memory associated with running a pod. +# TYPE kube_pod_overhead_memory_bytes gauge +# HELP kube_pod_owner [STABLE] Information about the Pod's owner. +# TYPE kube_pod_owner gauge +kube_pod_owner{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",owner_kind="StatefulSet",owner_name="web",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",owner_kind="DaemonSet",owner_name="kube-proxy",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",owner_kind="ReplicaSet",owner_name="kube-state-metrics-5bcd4898",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",owner_kind="Job",owner_name="hello-28564554",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",owner_kind="ReplicaSet",owner_name="coredns-76f75df574",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",owner_kind="DaemonSet",owner_name="fluentd-elasticsearch",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",owner_kind="ReplicaSet",owner_name="coredns-76f75df574",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",owner_kind="Job",owner_name="hello-28564556",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",owner_kind="",owner_name="",owner_is_controller=""} 1 +kube_pod_owner{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",owner_kind="Job",owner_name="hello-28564555",owner_is_controller="true"} 1 +kube_pod_owner{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",owner_kind="Job",owner_name="hello",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",owner_kind="DaemonSet",owner_name="kindnet",owner_is_controller="true"} 1 +kube_pod_owner{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 +kube_pod_owner{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",owner_kind="ReplicaSet",owner_name="local-path-provisioner-7577fdbbfb",owner_is_controller="true"} 1 +# HELP kube_pod_restart_policy [STABLE] Describes the restart policy in use by this pod. +# TYPE kube_pod_restart_policy gauge +kube_pod_restart_policy{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",type="Always"} 1 +kube_pod_restart_policy{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",type="Always"} 1 +kube_pod_restart_policy{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",type="Always"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",type="OnFailure"} 1 +kube_pod_restart_policy{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",type="OnFailure"} 1 +# HELP kube_pod_runtimeclass_name_info The runtimeclass associated with the pod. +# TYPE kube_pod_runtimeclass_name_info gauge +# HELP kube_pod_spec_volumes_persistentvolumeclaims_info [STABLE] Information about persistentvolumeclaim volumes in a pod. +# TYPE kube_pod_spec_volumes_persistentvolumeclaims_info gauge +# HELP kube_pod_spec_volumes_persistentvolumeclaims_readonly [STABLE] Describes whether a persistentvolumeclaim is mounted read only. +# TYPE kube_pod_spec_volumes_persistentvolumeclaims_readonly gauge +# HELP kube_pod_start_time [STABLE] Start time in unix timestamp for a pod. +# TYPE kube_pod_start_time gauge +kube_pod_start_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_start_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_start_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_start_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_start_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 +kube_pod_start_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_start_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_start_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_start_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_start_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_start_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +# HELP kube_pod_status_phase [STABLE] The pods current phase. +# TYPE kube_pod_status_phase gauge +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",phase="Running"} 1 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Pending"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Failed"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Unknown"} 0 +kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",phase="Running"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",phase="Running"} 1 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",phase="Running"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Pending"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Succeeded"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Failed"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Unknown"} 0 +kube_pod_status_phase{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",phase="Running"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Pending"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Succeeded"} 1 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Failed"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Unknown"} 0 +kube_pod_status_phase{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",phase="Running"} 0 +# HELP kube_pod_status_qos_class The pods current qosClass. +# TYPE kube_pod_status_qos_class gauge +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",qos_class="Guaranteed"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="BestEffort"} 1 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="Burstable"} 0 +kube_pod_status_qos_class{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",qos_class="Guaranteed"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="BestEffort"} 0 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="Burstable"} 1 +kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",qos_class="Guaranteed"} 0 +# HELP kube_pod_status_ready [STABLE] Describes whether the pod is ready to serve requests. +# TYPE kube_pod_status_ready gauge +kube_pod_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="true"} 0 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="false"} 1 +kube_pod_status_ready{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="true"} 0 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="false"} 1 +kube_pod_status_ready{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="unknown"} 0 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="true"} 1 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="false"} 0 +kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="unknown"} 0 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="true"} 1 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="false"} 0 +kube_pod_status_ready{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="unknown"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="true"} 1 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="false"} 0 +kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="unknown"} 0 +# HELP kube_pod_status_ready_time Readiness achieved time in unix timestamp for a pod. +# TYPE kube_pod_status_ready_time gauge +kube_pod_status_ready_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862311e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862195e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.7138622e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873343e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862304e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862197e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862204e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862189e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862201e+09 +kube_pod_status_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862193e+09 +# HELP kube_pod_status_initialized_time Initialized time in unix timestamp for a pod. +# TYPE kube_pod_status_initialized_time gauge +kube_pod_status_initialized_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +kube_pod_status_initialized_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_status_initialized_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_status_initialized_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 +# HELP kube_pod_status_container_ready_time Readiness achieved time in unix timestamp for a pod containers. +# TYPE kube_pod_status_container_ready_time gauge +kube_pod_status_container_ready_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862204e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862189e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862201e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862193e+09 +kube_pod_status_container_ready_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862311e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862195e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.7138622e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873343e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862204e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862304e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862197e+09 +kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862204e+09 +# HELP kube_pod_status_reason The pod status reasons +# TYPE kube_pod_status_reason gauge +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="Evicted"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",reason="UnexpectedAdmissionError"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="Evicted"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="NodeAffinity"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="NodeLost"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="Shutdown"} 0 +kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",reason="UnexpectedAdmissionError"} 0 +# HELP kube_pod_status_scheduled [STABLE] Describes the status of the scheduling process for the pod. +# TYPE kube_pod_status_scheduled gauge +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="true"} 1 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="false"} 0 +kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="true"} 1 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="false"} 0 +kube_pod_status_scheduled{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",condition="unknown"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="true"} 1 +kube_pod_status_scheduled{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="false"} 0 +kube_pod_status_scheduled{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",condition="unknown"} 0 +# HELP kube_pod_status_scheduled_time [STABLE] Unix timestamp when pod moved into scheduled status +# TYPE kube_pod_status_scheduled_time gauge +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea"} 1.71387324e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd"} 1.71387336e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17"} 1.7138733e+09 +kube_pod_status_scheduled_time{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493"} 1.713862199e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474"} 1.713862201e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00"} 1.71387337e+09 +kube_pod_status_scheduled_time{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3"} 1.713862291e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa"} 1.713862184e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af"} 1.713862199e+09 +kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252"} 1.713873333e+09 +# HELP kube_pod_status_unschedulable [STABLE] Describes the unschedulable status for the pod. +# TYPE kube_pod_status_unschedulable gauge +# HELP kube_pod_tolerations Information about the pod tolerations +# TYPE kube_pod_tolerations gauge +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="CriticalAddonsOnly",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node-role.kubernetes.io/control-plane",operator="Equal",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node-role.kubernetes.io/master",operator="Equal",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="CriticalAddonsOnly",operator="Exists"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node-role.kubernetes.io/control-plane",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node-role.kubernetes.io/master",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 +kube_pod_tolerations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",operator="Exists",effect="NoExecute"} 1 +# HELP kube_pod_service_account The service account for a pod. +# TYPE kube_pod_service_account gauge +kube_pod_service_account{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",service_account="coredns"} 1 +kube_pod_service_account{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",service_account="coredns"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",service_account="kindnet"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",service_account=""} 1 +kube_pod_service_account{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",service_account="local-path-provisioner-service-account"} 1 +kube_pod_service_account{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",service_account="default"} 1 +kube_pod_service_account{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",service_account="default"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",service_account=""} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",service_account="kube-proxy"} 1 +kube_pod_service_account{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",service_account="kube-state-metrics"} 1 +# HELP kube_pod_scheduler The scheduler for a pod. +# TYPE kube_pod_scheduler gauge +kube_pod_scheduler{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="mycurlpod",uid="1b8da9e7-267b-4354-a9d4-2e9566cfff00",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564555-zdfjz",uid="d884f26e-3141-4ec9-9013-c5934e413c17",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-wlb5q",uid="4b2ec9ad-32a1-41a0-aa76-991c6a19b4e4",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="etcd-kind-control-plane",uid="f1217146-eaa6-4d57-aa7a-21819d48d196",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kindnet-98xlt",uid="425270a7-5a38-4d26-a2ae-5f186f3d6493",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="39e5dda5-91e4-4182-a154-42ff953d6f71",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="local-path-storage",pod="local-path-provisioner-7577fdbbfb-wmdwd",uid="84d10b87-c235-49f1-be05-bcd622a44474",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="c5d01d99-a4ef-4237-a7e4-21c8248ca6aa",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-proxy-45qj9",uid="c297d9ab-6330-490b-8390-5cdd7b2b33af",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="default",pod="hello-28564554-llbsx",uid="aa4d2818-9ba4-4c07-bf1a-dea4e5912aea",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="coredns-76f75df574-wfchs",uid="c5f6e194-f869-49e4-b014-f6f9a7f9a73c",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="fluentd-elasticsearch-l8b6x",uid="21f0633e-17d9-4127-825c-46273c2137de",name="default-scheduler"} 1 +kube_pod_scheduler{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",name="default-scheduler"} 1 +# HELP kube_replicaset_created [STABLE] Unix creation timestamp +# TYPE kube_replicaset_created gauge +kube_replicaset_created{namespace="kube-system",replicaset="coredns-76f75df574"} 1.713862198e+09 +kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1.713873333e+09 +kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 1.713862243e+09 +kube_replicaset_created{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1.713862198e+09 +# HELP kube_replicaset_status_replicas [STABLE] The number of replicas per ReplicaSet. +# TYPE kube_replicaset_status_replicas gauge +kube_replicaset_status_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +# HELP kube_replicaset_status_fully_labeled_replicas [STABLE] The number of fully labeled replicas per ReplicaSet. +# TYPE kube_replicaset_status_fully_labeled_replicas gauge +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_fully_labeled_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +# HELP kube_replicaset_status_ready_replicas [STABLE] The number of ready replicas per ReplicaSet. +# TYPE kube_replicaset_status_ready_replicas gauge +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_status_ready_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +# HELP kube_replicaset_status_observed_generation [STABLE] The generation observed by the ReplicaSet controller. +# TYPE kube_replicaset_status_observed_generation gauge +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="coredns-76f75df574"} 1 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 2 +kube_replicaset_status_observed_generation{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +# HELP kube_replicaset_spec_replicas [STABLE] Number of desired pods for a ReplicaSet. +# TYPE kube_replicaset_spec_replicas gauge +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 0 +kube_replicaset_spec_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +kube_replicaset_spec_replicas{namespace="kube-system",replicaset="coredns-76f75df574"} 2 +# HELP kube_replicaset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. +# TYPE kube_replicaset_metadata_generation gauge +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="coredns-76f75df574"} 1 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898"} 1 +kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8"} 2 +kube_replicaset_metadata_generation{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb"} 1 +# HELP kube_replicaset_owner [STABLE] Information about the ReplicaSet's owner. +# TYPE kube_replicaset_owner gauge +kube_replicaset_owner{namespace="kube-system",replicaset="coredns-76f75df574",owner_kind="Deployment",owner_name="coredns",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-5bcd4898",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-885b7d5c8",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 +kube_replicaset_owner{namespace="local-path-storage",replicaset="local-path-provisioner-7577fdbbfb",owner_kind="Deployment",owner_name="local-path-provisioner",owner_is_controller="true"} 1 +# HELP kube_replicaset_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_replicaset_annotations gauge +# HELP kube_replicaset_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_replicaset_labels gauge +# HELP kube_resourcequota_created [STABLE] Unix creation timestamp +# TYPE kube_resourcequota_created gauge +kube_resourcequota_created{namespace="default",resourcequota="pods-high"} 1.713862291e+09 +# HELP kube_resourcequota [STABLE] Information about resource quota. +# TYPE kube_resourcequota gauge +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="hard"} 10 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="hard"} 1000 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="hard"} 204800 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="used"} 0 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="used"} 0 +kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="used"} 0 +# HELP kube_resourcequota_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_resourcequota_annotations gauge +# HELP kube_resourcequota_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_resourcequota_labels gauge +# HELP kube_secret_info [STABLE] Information about secret. +# TYPE kube_secret_info gauge +kube_secret_info{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 +# HELP kube_secret_type [STABLE] Type about secret. +# TYPE kube_secret_type gauge +kube_secret_type{namespace="kube-system",secret="bootstrap-token-abcdef",type="bootstrap.kubernetes.io/token"} 1 +# HELP kube_secret_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_secret_annotations gauge +# HELP kube_secret_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_secret_labels gauge +# HELP kube_secret_created [STABLE] Unix creation timestamp +# TYPE kube_secret_created gauge +kube_secret_created{namespace="kube-system",secret="bootstrap-token-abcdef"} 1.713862184e+09 +# HELP kube_secret_metadata_resource_version Resource version representing a specific version of secret. +# TYPE kube_secret_metadata_resource_version gauge +kube_secret_metadata_resource_version{namespace="kube-system",secret="bootstrap-token-abcdef"} 208 +# HELP kube_secret_owner Information about the Secret's owner. +# TYPE kube_secret_owner gauge +kube_secret_owner{namespace="kube-system",secret="bootstrap-token-abcdef",owner_kind="",owner_name="",owner_is_controller=""} 1 +# HELP kube_service_info [STABLE] Information about service. +# TYPE kube_service_info gauge +kube_service_info{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d",cluster_ip="10.96.0.1",external_name="",load_balancer_ip=""} 1 +kube_service_info{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf",cluster_ip="10.96.0.10",external_name="",load_balancer_ip=""} 1 +kube_service_info{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19",cluster_ip="None",external_name="",load_balancer_ip=""} 1 +# HELP kube_service_created [STABLE] Unix creation timestamp +# TYPE kube_service_created gauge +kube_service_created{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d"} 1.713862182e+09 +kube_service_created{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf"} 1.713862184e+09 +kube_service_created{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19"} 1.713862243e+09 +# HELP kube_service_spec_type [STABLE] Type about service. +# TYPE kube_service_spec_type gauge +kube_service_spec_type{namespace="kube-system",service="kube-dns",uid="d9634486-1119-400d-a223-5b4e44ab1ccf",type="ClusterIP"} 1 +kube_service_spec_type{namespace="kube-system",service="kube-state-metrics",uid="e7fd4177-decc-4964-885d-8be37ebb2c19",type="ClusterIP"} 1 +kube_service_spec_type{namespace="default",service="kubernetes",uid="a85a29a6-9c45-4a6a-b33a-53adf821685d",type="ClusterIP"} 1 +# HELP kube_service_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_service_annotations gauge +# HELP kube_service_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_service_labels gauge +# HELP kube_service_spec_external_ip [STABLE] Service external ips. One series for each ip +# TYPE kube_service_spec_external_ip gauge +# HELP kube_service_status_load_balancer_ingress [STABLE] Service load balancer ingress status +# TYPE kube_service_status_load_balancer_ingress gauge +# HELP kube_statefulset_created [STABLE] Unix creation timestamp +# TYPE kube_statefulset_created gauge +kube_statefulset_created{namespace="default",statefulset="web"} 1.713862291e+09 +# HELP kube_statefulset_status_replicas [STABLE] The number of replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas gauge +kube_statefulset_status_replicas{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_available The number of available replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_available gauge +kube_statefulset_status_replicas_available{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_current [STABLE] The number of current replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_current gauge +kube_statefulset_status_replicas_current{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_ready [STABLE] The number of ready replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_ready gauge +kube_statefulset_status_replicas_ready{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_replicas_updated [STABLE] The number of updated replicas per StatefulSet. +# TYPE kube_statefulset_status_replicas_updated gauge +kube_statefulset_status_replicas_updated{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_status_observed_generation [STABLE] The generation observed by the StatefulSet controller. +# TYPE kube_statefulset_status_observed_generation gauge +kube_statefulset_status_observed_generation{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_replicas [STABLE] Number of desired pods for a StatefulSet. +# TYPE kube_statefulset_replicas gauge +kube_statefulset_replicas{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_ordinals_start Start ordinal of the StatefulSet. +# TYPE kube_statefulset_ordinals_start gauge +# HELP kube_statefulset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state for the StatefulSet. +# TYPE kube_statefulset_metadata_generation gauge +kube_statefulset_metadata_generation{namespace="default",statefulset="web"} 1 +# HELP kube_statefulset_persistentvolumeclaim_retention_policy Count of retention policy for StatefulSet template PVCs +# TYPE kube_statefulset_persistentvolumeclaim_retention_policy gauge +kube_statefulset_persistentvolumeclaim_retention_policy{namespace="default",statefulset="web",when_deleted="Retain",when_scaled="Retain"} 1 +# HELP kube_statefulset_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_statefulset_annotations gauge +# HELP kube_statefulset_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_statefulset_labels gauge +# HELP kube_statefulset_status_current_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas). +# TYPE kube_statefulset_status_current_revision gauge +kube_statefulset_status_current_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 +# HELP kube_statefulset_status_update_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) +# TYPE kube_statefulset_status_update_revision gauge +kube_statefulset_status_update_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 +# HELP kube_storageclass_info [STABLE] Information about storageclass. +# TYPE kube_storageclass_info gauge +kube_storageclass_info{storageclass="standard",provisioner="rancher.io/local-path",reclaim_policy="Delete",volume_binding_mode="WaitForFirstConsumer"} 1 +# HELP kube_storageclass_created [STABLE] Unix creation timestamp +# TYPE kube_storageclass_created gauge +kube_storageclass_created{storageclass="standard"} 1.713862186e+09 +# HELP kube_storageclass_annotations Kubernetes annotations converted to Prometheus labels. +# TYPE kube_storageclass_annotations gauge +# HELP kube_storageclass_labels [STABLE] Kubernetes labels converted to Prometheus labels. +# TYPE kube_storageclass_labels gauge diff --git a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.8.2.plain b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.8.2.plain deleted file mode 100644 index 5f23ea0fbad..00000000000 --- a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.8.2.plain +++ /dev/null @@ -1,1477 +0,0 @@ -# HELP kube_certificatesigningrequest_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_certificatesigningrequest_annotations gauge -# HELP kube_certificatesigningrequest_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_certificatesigningrequest_labels gauge -# HELP kube_certificatesigningrequest_created [STABLE] Unix creation timestamp -# TYPE kube_certificatesigningrequest_created gauge -# HELP kube_certificatesigningrequest_condition [STABLE] The number of each certificatesigningrequest condition -# TYPE kube_certificatesigningrequest_condition gauge -# HELP kube_certificatesigningrequest_cert_length [STABLE] Length of the issued cert -# TYPE kube_certificatesigningrequest_cert_length gauge -# HELP kube_configmap_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_configmap_annotations gauge -kube_configmap_annotations{namespace="kube-public",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="default",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="default",configmap="example-redis-config"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kubelet-config"} 1 -kube_configmap_annotations{namespace="kube-public",configmap="cluster-info"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="coredns"} 1 -kube_configmap_annotations{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 -kube_configmap_annotations{namespace="local-path-storage",configmap="local-path-config"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kubeadm-config"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kube-proxy"} 1 -# HELP kube_configmap_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_configmap_labels gauge -kube_configmap_labels{namespace="kube-system",configmap="kubeadm-config"} 1 -kube_configmap_labels{namespace="kube-system",configmap="kube-proxy"} 1 -kube_configmap_labels{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 -kube_configmap_labels{namespace="local-path-storage",configmap="local-path-config"} 1 -kube_configmap_labels{namespace="kube-system",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="kube-system",configmap="kubelet-config"} 1 -kube_configmap_labels{namespace="kube-public",configmap="cluster-info"} 1 -kube_configmap_labels{namespace="kube-system",configmap="coredns"} 1 -kube_configmap_labels{namespace="kube-public",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="default",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="default",configmap="example-redis-config"} 1 -# HELP kube_configmap_info [STABLE] Information about configmap. -# TYPE kube_configmap_info gauge -kube_configmap_info{namespace="default",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="default",configmap="example-redis-config"} 1 -kube_configmap_info{namespace="kube-system",configmap="kubelet-config"} 1 -kube_configmap_info{namespace="kube-public",configmap="cluster-info"} 1 -kube_configmap_info{namespace="kube-system",configmap="coredns"} 1 -kube_configmap_info{namespace="kube-public",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 -kube_configmap_info{namespace="local-path-storage",configmap="local-path-config"} 1 -kube_configmap_info{namespace="kube-system",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="kube-system",configmap="kubeadm-config"} 1 -kube_configmap_info{namespace="kube-system",configmap="kube-proxy"} 1 -kube_configmap_info{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 -# HELP kube_configmap_created [STABLE] Unix creation timestamp -# TYPE kube_configmap_created gauge -kube_configmap_created{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="kube-system",configmap="extension-apiserver-authentication"} 1.691566337e+09 -kube_configmap_created{namespace="local-path-storage",configmap="local-path-config"} 1.691566343e+09 -kube_configmap_created{namespace="kube-system",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="kube-system",configmap="kubeadm-config"} 1.691566339e+09 -kube_configmap_created{namespace="kube-system",configmap="kube-proxy"} 1.69156634e+09 -kube_configmap_created{namespace="kube-public",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="default",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="default",configmap="example-redis-config"} 1.691568402e+09 -kube_configmap_created{namespace="kube-system",configmap="kubelet-config"} 1.691566339e+09 -kube_configmap_created{namespace="kube-public",configmap="cluster-info"} 1.69156634e+09 -kube_configmap_created{namespace="kube-system",configmap="coredns"} 1.69156634e+09 -# HELP kube_configmap_metadata_resource_version Resource version representing a specific version of the configmap. -# TYPE kube_configmap_metadata_resource_version gauge -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-proxy"} 238 -kube_configmap_metadata_resource_version{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 343 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="extension-apiserver-authentication"} 26 -kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="local-path-config"} 270 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-root-ca.crt"} 341 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubeadm-config"} 198 -kube_configmap_metadata_resource_version{namespace="kube-public",configmap="cluster-info"} 360 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="coredns"} 231 -kube_configmap_metadata_resource_version{namespace="kube-public",configmap="kube-root-ca.crt"} 342 -kube_configmap_metadata_resource_version{namespace="default",configmap="kube-root-ca.crt"} 344 -kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="kube-root-ca.crt"} 345 -kube_configmap_metadata_resource_version{namespace="default",configmap="example-redis-config"} 3360 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubelet-config"} 202 -# HELP kube_cronjob_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_cronjob_annotations gauge -kube_cronjob_annotations{namespace="default",cronjob="hello"} 1 -# HELP kube_cronjob_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_cronjob_labels gauge -kube_cronjob_labels{namespace="default",cronjob="hello"} 1 -# HELP kube_cronjob_info [STABLE] Info about cronjob. -# TYPE kube_cronjob_info gauge -kube_cronjob_info{namespace="default",cronjob="hello",schedule="*/1 * * * *",concurrency_policy="Allow"} 1 -# HELP kube_cronjob_created [STABLE] Unix creation timestamp -# TYPE kube_cronjob_created gauge -kube_cronjob_created{namespace="default",cronjob="hello"} 1.691568402e+09 -# HELP kube_cronjob_status_active [STABLE] Active holds pointers to currently running jobs. -# TYPE kube_cronjob_status_active gauge -kube_cronjob_status_active{namespace="default",cronjob="hello"} 0 -# HELP kube_cronjob_status_last_schedule_time [STABLE] LastScheduleTime keeps information of when was the last time the job was successfully scheduled. -# TYPE kube_cronjob_status_last_schedule_time gauge -kube_cronjob_status_last_schedule_time{namespace="default",cronjob="hello"} 1.69156842e+09 -# HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully. -# TYPE kube_cronjob_status_last_successful_time gauge -kube_cronjob_status_last_successful_time{namespace="default",cronjob="hello"} 1.691568424e+09 -# HELP kube_cronjob_spec_suspend [STABLE] Suspend flag tells the controller to suspend subsequent executions. -# TYPE kube_cronjob_spec_suspend gauge -kube_cronjob_spec_suspend{namespace="default",cronjob="hello"} 0 -# HELP kube_cronjob_spec_starting_deadline_seconds [STABLE] Deadline in seconds for starting the job if it misses scheduled time for any reason. -# TYPE kube_cronjob_spec_starting_deadline_seconds gauge -# HELP kube_cronjob_next_schedule_time [STABLE] Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed. -# TYPE kube_cronjob_next_schedule_time gauge -kube_cronjob_next_schedule_time{namespace="default",cronjob="hello"} 1.69156848e+09 -# HELP kube_cronjob_metadata_resource_version [STABLE] Resource version representing a specific version of the cronjob. -# TYPE kube_cronjob_metadata_resource_version gauge -kube_cronjob_metadata_resource_version{namespace="default",cronjob="hello"} 3487 -# HELP kube_cronjob_spec_successful_job_history_limit Successful job history limit tells the controller how many completed jobs should be preserved. -# TYPE kube_cronjob_spec_successful_job_history_limit gauge -kube_cronjob_spec_successful_job_history_limit{namespace="default",cronjob="hello"} 3 -# HELP kube_cronjob_spec_failed_job_history_limit Failed job history limit tells the controller how many failed jobs should be preserved. -# TYPE kube_cronjob_spec_failed_job_history_limit gauge -kube_cronjob_spec_failed_job_history_limit{namespace="default",cronjob="hello"} 1 -# HELP kube_daemonset_created [STABLE] Unix creation timestamp -# TYPE kube_daemonset_created gauge -kube_daemonset_created{namespace="kube-system",daemonset="kindnet"} 1.691566342e+09 -kube_daemonset_created{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1.691568402e+09 -kube_daemonset_created{namespace="kube-system",daemonset="kube-proxy"} 1.69156634e+09 -# HELP kube_daemonset_status_current_number_scheduled [STABLE] The number of nodes running at least one daemon pod and are supposed to. -# TYPE kube_daemonset_status_current_number_scheduled gauge -kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_daemonset_status_desired_number_scheduled [STABLE] The number of nodes that should be running the daemon pod. -# TYPE kube_daemonset_status_desired_number_scheduled gauge -kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_daemonset_status_number_available [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available -# TYPE kube_daemonset_status_number_available gauge -kube_daemonset_status_number_available{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_number_available{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_status_number_available{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_daemonset_status_number_misscheduled [STABLE] The number of nodes running a daemon pod but are not supposed to. -# TYPE kube_daemonset_status_number_misscheduled gauge -kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kindnet"} 0 -kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 -kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kube-proxy"} 0 -# HELP kube_daemonset_status_number_ready [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. -# TYPE kube_daemonset_status_number_ready gauge -kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_status_number_ready{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_daemonset_status_number_unavailable [STABLE] The number of nodes that should be running the daemon pod and have none of the daemon pod running and available -# TYPE kube_daemonset_status_number_unavailable gauge -kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kube-proxy"} 0 -kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kindnet"} 0 -kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 -# HELP kube_daemonset_status_observed_generation [STABLE] The most recent generation observed by the daemon set controller. -# TYPE kube_daemonset_status_observed_generation gauge -kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_daemonset_status_updated_number_scheduled [STABLE] The total number of nodes that are running updated daemon pod -# TYPE kube_daemonset_status_updated_number_scheduled gauge -kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_daemonset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_daemonset_metadata_generation gauge -kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_metadata_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_daemonset_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_daemonset_annotations gauge -kube_daemonset_annotations{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_annotations{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_annotations{namespace="kube-system",daemonset="kube-proxy"} 1 -# HELP kube_daemonset_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_daemonset_labels gauge -kube_daemonset_labels{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_labels{namespace="kube-system",daemonset="kindnet"} 1 -kube_daemonset_labels{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -# HELP kube_deployment_created [STABLE] Unix creation timestamp -# TYPE kube_deployment_created gauge -kube_deployment_created{namespace="kube-system",deployment="coredns"} 1.69156634e+09 -kube_deployment_created{namespace="local-path-storage",deployment="local-path-provisioner"} 1.691566342e+09 -kube_deployment_created{namespace="kube-system",deployment="kube-state-metrics"} 1.691568402e+09 -# HELP kube_deployment_status_replicas [STABLE] The number of replicas per deployment. -# TYPE kube_deployment_status_replicas gauge -kube_deployment_status_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 -kube_deployment_status_replicas{namespace="kube-system",deployment="coredns"} 2 -# HELP kube_deployment_status_replicas_ready [STABLE] The number of ready replicas per deployment. -# TYPE kube_deployment_status_replicas_ready gauge -kube_deployment_status_replicas_ready{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_status_replicas_ready{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_replicas_ready{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_replicas_available [STABLE] The number of available replicas per deployment. -# TYPE kube_deployment_status_replicas_available gauge -kube_deployment_status_replicas_available{namespace="kube-system",deployment="kube-state-metrics"} 1 -kube_deployment_status_replicas_available{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_status_replicas_available{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -# HELP kube_deployment_status_replicas_unavailable [STABLE] The number of unavailable replicas per deployment. -# TYPE kube_deployment_status_replicas_unavailable gauge -kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="coredns"} 0 -kube_deployment_status_replicas_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 -kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 -# HELP kube_deployment_status_replicas_updated [STABLE] The number of updated replicas per deployment. -# TYPE kube_deployment_status_replicas_updated gauge -kube_deployment_status_replicas_updated{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_status_replicas_updated{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_replicas_updated{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_observed_generation [STABLE] The generation observed by the deployment controller. -# TYPE kube_deployment_status_observed_generation gauge -kube_deployment_status_observed_generation{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_status_observed_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_observed_generation{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_condition [STABLE] The current status conditions of a deployment. -# TYPE kube_deployment_status_condition gauge -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="unknown"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="true"} 1 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="false"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="unknown"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="true"} 1 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="false"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="unknown"} 0 -# HELP kube_deployment_spec_replicas [STABLE] Number of desired pods for a deployment. -# TYPE kube_deployment_spec_replicas gauge -kube_deployment_spec_replicas{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_spec_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_spec_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_spec_paused [STABLE] Whether the deployment is paused and will not be processed by the deployment controller. -# TYPE kube_deployment_spec_paused gauge -kube_deployment_spec_paused{namespace="local-path-storage",deployment="local-path-provisioner"} 0 -kube_deployment_spec_paused{namespace="kube-system",deployment="kube-state-metrics"} 0 -kube_deployment_spec_paused{namespace="kube-system",deployment="coredns"} 0 -# HELP kube_deployment_spec_strategy_rollingupdate_max_unavailable [STABLE] Maximum number of unavailable replicas during a rolling update of a deployment. -# TYPE kube_deployment_spec_strategy_rollingupdate_max_unavailable gauge -kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 -kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 -# HELP kube_deployment_spec_strategy_rollingupdate_max_surge [STABLE] Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a deployment. -# TYPE kube_deployment_spec_strategy_rollingupdate_max_surge gauge -kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_deployment_metadata_generation gauge -kube_deployment_metadata_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_metadata_generation{namespace="kube-system",deployment="kube-state-metrics"} 1 -kube_deployment_metadata_generation{namespace="kube-system",deployment="coredns"} 1 -# HELP kube_deployment_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_deployment_annotations gauge -kube_deployment_annotations{namespace="kube-system",deployment="kube-state-metrics"} 1 -kube_deployment_annotations{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_annotations{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -# HELP kube_deployment_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_deployment_labels gauge -kube_deployment_labels{namespace="kube-system",deployment="kube-state-metrics"} 1 -kube_deployment_labels{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_labels{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -# HELP kube_endpoint_info [STABLE] Information about endpoint. -# TYPE kube_endpoint_info gauge -kube_endpoint_info{namespace="default",endpoint="kubernetes"} 1 -kube_endpoint_info{namespace="kube-system",endpoint="kube-dns"} 1 -kube_endpoint_info{namespace="kube-system",endpoint="kube-state-metrics"} 1 -# HELP kube_endpoint_created [STABLE] Unix creation timestamp -# TYPE kube_endpoint_created gauge -kube_endpoint_created{namespace="default",endpoint="kubernetes"} 1.691566338e+09 -kube_endpoint_created{namespace="kube-system",endpoint="kube-dns"} 1.691566354e+09 -kube_endpoint_created{namespace="kube-system",endpoint="kube-state-metrics"} 1.691568402e+09 -# HELP kube_endpoint_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_endpoint_annotations gauge -kube_endpoint_annotations{namespace="default",endpoint="kubernetes"} 1 -kube_endpoint_annotations{namespace="kube-system",endpoint="kube-dns"} 1 -kube_endpoint_annotations{namespace="kube-system",endpoint="kube-state-metrics"} 1 -# HELP kube_endpoint_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_endpoint_labels gauge -kube_endpoint_labels{namespace="default",endpoint="kubernetes"} 1 -kube_endpoint_labels{namespace="kube-system",endpoint="kube-dns"} 1 -kube_endpoint_labels{namespace="kube-system",endpoint="kube-state-metrics"} 1 -# HELP kube_endpoint_address_available (Deprecated since v2.6.0) Number of addresses available in endpoint. -# TYPE kube_endpoint_address_available gauge -kube_endpoint_address_available{namespace="default",endpoint="kubernetes"} 1 -kube_endpoint_address_available{namespace="kube-system",endpoint="kube-dns"} 6 -kube_endpoint_address_available{namespace="kube-system",endpoint="kube-state-metrics"} 2 -# HELP kube_endpoint_address_not_ready (Deprecated since v2.6.0) Number of addresses not ready in endpoint -# TYPE kube_endpoint_address_not_ready gauge -kube_endpoint_address_not_ready{namespace="default",endpoint="kubernetes"} 0 -kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-dns"} 0 -kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-state-metrics"} 0 -# HELP kube_endpoint_address [STABLE] Information about Endpoint available and non available addresses. -# TYPE kube_endpoint_address gauge -kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.2",ready="true"} 1 -kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.3",ready="true"} 1 -kube_endpoint_address{namespace="kube-system",endpoint="kube-state-metrics",ip="10.244.0.14",ready="true"} 1 -kube_endpoint_address{namespace="default",endpoint="kubernetes",ip="172.18.0.2",ready="true"} 1 -# HELP kube_endpoint_ports [STABLE] Information about the Endpoint ports. -# TYPE kube_endpoint_ports gauge -kube_endpoint_ports{namespace="default",endpoint="kubernetes",port_name="https",port_protocol="TCP",port_number="6443"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns-tcp",port_protocol="TCP",port_number="53"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns",port_protocol="UDP",port_number="53"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="metrics",port_protocol="TCP",port_number="9153"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="telemetry",port_protocol="TCP",port_number="8081"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="http-metrics",port_protocol="TCP",port_number="8080"} 1 -# HELP kube_horizontalpodautoscaler_info Information about this autoscaler. -# TYPE kube_horizontalpodautoscaler_info gauge -# HELP kube_horizontalpodautoscaler_metadata_generation [STABLE] The generation observed by the HorizontalPodAutoscaler controller. -# TYPE kube_horizontalpodautoscaler_metadata_generation gauge -# HELP kube_horizontalpodautoscaler_spec_max_replicas [STABLE] Upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. -# TYPE kube_horizontalpodautoscaler_spec_max_replicas gauge -# HELP kube_horizontalpodautoscaler_spec_min_replicas [STABLE] Lower limit for the number of pods that can be set by the autoscaler, default 1. -# TYPE kube_horizontalpodautoscaler_spec_min_replicas gauge -# HELP kube_horizontalpodautoscaler_spec_target_metric The metric specifications used by this autoscaler when calculating the desired replica count. -# TYPE kube_horizontalpodautoscaler_spec_target_metric gauge -# HELP kube_horizontalpodautoscaler_status_target_metric The current metric status used by this autoscaler when calculating the desired replica count. -# TYPE kube_horizontalpodautoscaler_status_target_metric gauge -# HELP kube_horizontalpodautoscaler_status_current_replicas [STABLE] Current number of replicas of pods managed by this autoscaler. -# TYPE kube_horizontalpodautoscaler_status_current_replicas gauge -# HELP kube_horizontalpodautoscaler_status_desired_replicas [STABLE] Desired number of replicas of pods managed by this autoscaler. -# TYPE kube_horizontalpodautoscaler_status_desired_replicas gauge -# HELP kube_horizontalpodautoscaler_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_horizontalpodautoscaler_annotations gauge -# HELP kube_horizontalpodautoscaler_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_horizontalpodautoscaler_labels gauge -# HELP kube_horizontalpodautoscaler_status_condition [STABLE] The condition of this autoscaler. -# TYPE kube_horizontalpodautoscaler_status_condition gauge -# HELP kube_ingress_info [STABLE] Information about ingress. -# TYPE kube_ingress_info gauge -# HELP kube_ingress_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_ingress_annotations gauge -# HELP kube_ingress_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_ingress_labels gauge -# HELP kube_ingress_created [STABLE] Unix creation timestamp -# TYPE kube_ingress_created gauge -# HELP kube_ingress_metadata_resource_version Resource version representing a specific version of ingress. -# TYPE kube_ingress_metadata_resource_version gauge -# HELP kube_ingress_path [STABLE] Ingress host, paths and backend service information. -# TYPE kube_ingress_path gauge -# HELP kube_ingress_tls [STABLE] Ingress TLS host and secret information. -# TYPE kube_ingress_tls gauge -# HELP kube_job_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_job_annotations gauge -kube_job_annotations{namespace="default",job_name="hello"} 1 -kube_job_annotations{namespace="default",job_name="hello-28192807"} 1 -# HELP kube_job_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_job_labels gauge -kube_job_labels{namespace="default",job_name="hello"} 1 -kube_job_labels{namespace="default",job_name="hello-28192807"} 1 -# HELP kube_job_info [STABLE] Information about job. -# TYPE kube_job_info gauge -kube_job_info{namespace="default",job_name="hello"} 1 -kube_job_info{namespace="default",job_name="hello-28192807"} 1 -# HELP kube_job_created [STABLE] Unix creation timestamp -# TYPE kube_job_created gauge -kube_job_created{namespace="default",job_name="hello-28192807"} 1.69156842e+09 -kube_job_created{namespace="default",job_name="hello"} 1.691568402e+09 -# HELP kube_job_spec_parallelism [STABLE] The maximum desired number of pods the job should run at any given time. -# TYPE kube_job_spec_parallelism gauge -kube_job_spec_parallelism{namespace="default",job_name="hello"} 1 -kube_job_spec_parallelism{namespace="default",job_name="hello-28192807"} 1 -# HELP kube_job_spec_completions [STABLE] The desired number of successfully finished pods the job should be run with. -# TYPE kube_job_spec_completions gauge -kube_job_spec_completions{namespace="default",job_name="hello"} 1 -kube_job_spec_completions{namespace="default",job_name="hello-28192807"} 1 -# HELP kube_job_spec_active_deadline_seconds [STABLE] The duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. -# TYPE kube_job_spec_active_deadline_seconds gauge -# HELP kube_job_status_succeeded [STABLE] The number of pods which reached Phase Succeeded. -# TYPE kube_job_status_succeeded gauge -kube_job_status_succeeded{namespace="default",job_name="hello"} 1 -kube_job_status_succeeded{namespace="default",job_name="hello-28192807"} 1 -# HELP kube_job_status_failed [STABLE] The number of pods which reached Phase Failed and the reason for failure. -# TYPE kube_job_status_failed gauge -kube_job_status_failed{namespace="default",job_name="hello"} 0 -kube_job_status_failed{namespace="default",job_name="hello-28192807"} 0 -# HELP kube_job_status_active [STABLE] The number of actively running pods. -# TYPE kube_job_status_active gauge -kube_job_status_active{namespace="default",job_name="hello"} 0 -kube_job_status_active{namespace="default",job_name="hello-28192807"} 0 -# HELP kube_job_complete [STABLE] The job has completed its execution. -# TYPE kube_job_complete gauge -kube_job_complete{namespace="default",job_name="hello-28192807",condition="true"} 1 -kube_job_complete{namespace="default",job_name="hello-28192807",condition="false"} 0 -kube_job_complete{namespace="default",job_name="hello-28192807",condition="unknown"} 0 -kube_job_complete{namespace="default",job_name="hello",condition="true"} 1 -kube_job_complete{namespace="default",job_name="hello",condition="false"} 0 -kube_job_complete{namespace="default",job_name="hello",condition="unknown"} 0 -# HELP kube_job_failed [STABLE] The job has failed its execution. -# TYPE kube_job_failed gauge -# HELP kube_job_status_start_time [STABLE] StartTime represents time when the job was acknowledged by the Job Manager. -# TYPE kube_job_status_start_time gauge -kube_job_status_start_time{namespace="default",job_name="hello"} 1.691568402e+09 -kube_job_status_start_time{namespace="default",job_name="hello-28192807"} 1.69156842e+09 -# HELP kube_job_status_completion_time [STABLE] CompletionTime represents time when the job was completed. -# TYPE kube_job_status_completion_time gauge -kube_job_status_completion_time{namespace="default",job_name="hello"} 1.691568406e+09 -kube_job_status_completion_time{namespace="default",job_name="hello-28192807"} 1.691568424e+09 -# HELP kube_job_owner [STABLE] Information about the Job's owner. -# TYPE kube_job_owner gauge -kube_job_owner{namespace="default",job_name="hello",owner_kind="",owner_name="",owner_is_controller=""} 1 -kube_job_owner{namespace="default",job_name="hello-28192807",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 -# HELP kube_lease_owner Information about the Lease's owner. -# TYPE kube_lease_owner gauge -kube_lease_owner{lease="kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a_eb429ff6-d4a0-49b6-ae35-4471a79c6c25"} 1 -kube_lease_owner{lease="kube-controller-manager",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_0b4da5ad-3d3f-46e1-a9a7-f3de4500210d"} 1 -kube_lease_owner{lease="kind-control-plane",owner_kind="Node",owner_name="kind-control-plane",namespace="kube-node-lease",lease_holder="kind-control-plane"} 1 -kube_lease_owner{lease="kube-scheduler",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_1ccae8c1-4c4b-4f22-ba9f-4001d58bbbeb"} 1 -# HELP kube_lease_renew_time Kube lease renew time. -# TYPE kube_lease_renew_time gauge -kube_lease_renew_time{lease="kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a"} 1.691568417e+09 -kube_lease_renew_time{lease="kube-controller-manager"} 1.691568424e+09 -kube_lease_renew_time{lease="kind-control-plane"} 1.691568422e+09 -kube_lease_renew_time{lease="kube-scheduler"} 1.691568426e+09 -# HELP kube_limitrange [STABLE] Information about limit range. -# TYPE kube_limitrange gauge -# HELP kube_limitrange_created [STABLE] Unix creation timestamp -# TYPE kube_limitrange_created gauge -# HELP kube_mutatingwebhookconfiguration_info Information about the MutatingWebhookConfiguration. -# TYPE kube_mutatingwebhookconfiguration_info gauge -# HELP kube_mutatingwebhookconfiguration_created Unix creation timestamp. -# TYPE kube_mutatingwebhookconfiguration_created gauge -# HELP kube_mutatingwebhookconfiguration_metadata_resource_version Resource version representing a specific version of the MutatingWebhookConfiguration. -# TYPE kube_mutatingwebhookconfiguration_metadata_resource_version gauge -# HELP kube_namespace_created [STABLE] Unix creation timestamp -# TYPE kube_namespace_created gauge -kube_namespace_created{namespace="kube-system"} 1.691566337e+09 -kube_namespace_created{namespace="kube-public"} 1.691566337e+09 -kube_namespace_created{namespace="kube-node-lease"} 1.691566337e+09 -kube_namespace_created{namespace="default"} 1.691566338e+09 -kube_namespace_created{namespace="local-path-storage"} 1.691566342e+09 -# HELP kube_namespace_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_namespace_annotations gauge -kube_namespace_annotations{namespace="kube-public"} 1 -kube_namespace_annotations{namespace="kube-node-lease"} 1 -kube_namespace_annotations{namespace="default"} 1 -kube_namespace_annotations{namespace="local-path-storage"} 1 -kube_namespace_annotations{namespace="kube-system"} 1 -# HELP kube_namespace_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_namespace_labels gauge -kube_namespace_labels{namespace="local-path-storage"} 1 -kube_namespace_labels{namespace="kube-system"} 1 -kube_namespace_labels{namespace="kube-public"} 1 -kube_namespace_labels{namespace="kube-node-lease"} 1 -kube_namespace_labels{namespace="default"} 1 -# HELP kube_namespace_status_phase [STABLE] kubernetes namespace status phase. -# TYPE kube_namespace_status_phase gauge -kube_namespace_status_phase{namespace="kube-system",phase="Active"} 1 -kube_namespace_status_phase{namespace="kube-system",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="kube-public",phase="Active"} 1 -kube_namespace_status_phase{namespace="kube-public",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="kube-node-lease",phase="Active"} 1 -kube_namespace_status_phase{namespace="kube-node-lease",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="default",phase="Active"} 1 -kube_namespace_status_phase{namespace="default",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="local-path-storage",phase="Active"} 1 -kube_namespace_status_phase{namespace="local-path-storage",phase="Terminating"} 0 -# HELP kube_namespace_status_condition The condition of a namespace. -# TYPE kube_namespace_status_condition gauge -# HELP kube_networkpolicy_created Unix creation timestamp of network policy -# TYPE kube_networkpolicy_created gauge -# HELP kube_networkpolicy_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_networkpolicy_annotations gauge -# HELP kube_networkpolicy_labels Kubernetes labels converted to Prometheus labels. -# TYPE kube_networkpolicy_labels gauge -# HELP kube_networkpolicy_spec_ingress_rules Number of ingress rules on the networkpolicy -# TYPE kube_networkpolicy_spec_ingress_rules gauge -# HELP kube_networkpolicy_spec_egress_rules Number of egress rules on the networkpolicy -# TYPE kube_networkpolicy_spec_egress_rules gauge -# HELP kube_node_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_node_annotations gauge -kube_node_annotations{node="kind-control-plane"} 1 -# HELP kube_node_created [STABLE] Unix creation timestamp -# TYPE kube_node_created gauge -kube_node_created{node="kind-control-plane"} 1.691566337e+09 -# HELP kube_node_deletion_timestamp Unix deletion timestamp -# TYPE kube_node_deletion_timestamp gauge -# HELP kube_node_info [STABLE] Information about a cluster node. -# TYPE kube_node_info gauge -kube_node_info{node="kind-control-plane",kernel_version="5.15.49-linuxkit-pr",os_image="Ubuntu 22.04.2 LTS",container_runtime_version="containerd://1.6.19-46-g941215f49",kubelet_version="v1.26.3",kubeproxy_version="v1.26.3",provider_id="kind://docker/kind/kind-control-plane",pod_cidr="10.244.0.0/24",system_uuid="da6f977ba55a4ef5a3240dbd88134863",internal_ip="172.18.0.2"} 1 -# HELP kube_node_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_node_labels gauge -kube_node_labels{node="kind-control-plane"} 1 -# HELP kube_node_role The role of a cluster node. -# TYPE kube_node_role gauge -kube_node_role{node="kind-control-plane",role="control-plane"} 1 -# HELP kube_node_spec_taint [STABLE] The taint of a cluster node. -# TYPE kube_node_spec_taint gauge -# HELP kube_node_spec_unschedulable [STABLE] Whether a node can schedule new pods. -# TYPE kube_node_spec_unschedulable gauge -kube_node_spec_unschedulable{node="kind-control-plane"} 0 -# HELP kube_node_status_allocatable [STABLE] The allocatable for different resources of a node that are available for scheduling. -# TYPE kube_node_status_allocatable gauge -kube_node_status_allocatable{node="kind-control-plane",resource="cpu",unit="core"} 8 -kube_node_status_allocatable{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 6.7317051392e+10 -kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_1Gi",unit="byte"} 0 -kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 -kube_node_status_allocatable{node="kind-control-plane",resource="memory",unit="byte"} 1.6259682304e+10 -kube_node_status_allocatable{node="kind-control-plane",resource="pods",unit="integer"} 110 -# HELP kube_node_status_capacity [STABLE] The capacity for different resources of a node. -# TYPE kube_node_status_capacity gauge -kube_node_status_capacity{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 6.7317051392e+10 -kube_node_status_capacity{node="kind-control-plane",resource="hugepages_1Gi",unit="byte"} 0 -kube_node_status_capacity{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 -kube_node_status_capacity{node="kind-control-plane",resource="memory",unit="byte"} 1.6259682304e+10 -kube_node_status_capacity{node="kind-control-plane",resource="pods",unit="integer"} 110 -kube_node_status_capacity{node="kind-control-plane",resource="cpu",unit="core"} 8 -# HELP kube_node_status_condition [STABLE] The condition of a cluster node. -# TYPE kube_node_status_condition gauge -kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="true"} 0 -kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="false"} 1 -kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="unknown"} 0 -kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="true"} 0 -kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="false"} 1 -kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="unknown"} 0 -kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="true"} 0 -kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="false"} 1 -kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="unknown"} 0 -kube_node_status_condition{node="kind-control-plane",condition="Ready",status="true"} 1 -kube_node_status_condition{node="kind-control-plane",condition="Ready",status="false"} 0 -kube_node_status_condition{node="kind-control-plane",condition="Ready",status="unknown"} 0 -# HELP kube_persistentvolumeclaim_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_persistentvolumeclaim_labels gauge -kube_persistentvolumeclaim_labels{namespace="default",persistentvolumeclaim="task-pv-claim"} 1 -# HELP kube_persistentvolumeclaim_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_persistentvolumeclaim_annotations gauge -kube_persistentvolumeclaim_annotations{namespace="default",persistentvolumeclaim="task-pv-claim"} 1 -# HELP kube_persistentvolumeclaim_info [STABLE] Information about persistent volume claim. -# TYPE kube_persistentvolumeclaim_info gauge -kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="task-pv-claim",storageclass="generic",volumename="task-pv-volume"} 1 -# HELP kube_persistentvolumeclaim_status_phase [STABLE] The phase the persistent volume claim is currently in. -# TYPE kube_persistentvolumeclaim_status_phase gauge -kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Lost"} 0 -kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Bound"} 1 -kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Pending"} 0 -# HELP kube_persistentvolumeclaim_resource_requests_storage_bytes [STABLE] The capacity of storage requested by the persistent volume claim. -# TYPE kube_persistentvolumeclaim_resource_requests_storage_bytes gauge -kube_persistentvolumeclaim_resource_requests_storage_bytes{namespace="default",persistentvolumeclaim="task-pv-claim"} 1024 -# HELP kube_persistentvolumeclaim_access_mode [STABLE] The access mode(s) specified by the persistent volume claim. -# TYPE kube_persistentvolumeclaim_access_mode gauge -kube_persistentvolumeclaim_access_mode{namespace="default",persistentvolumeclaim="task-pv-claim",access_mode="ReadWriteOnce"} 1 -# HELP kube_persistentvolumeclaim_status_condition Information about status of different conditions of persistent volume claim. -# TYPE kube_persistentvolumeclaim_status_condition gauge -# HELP kube_persistentvolumeclaim_created Unix creation timestamp -# TYPE kube_persistentvolumeclaim_created gauge -kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="task-pv-claim"} 1.691568402e+09 -# HELP kube_persistentvolume_claim_ref [STABLE] Information about the Persistent Volume Claim Reference. -# TYPE kube_persistentvolume_claim_ref gauge -kube_persistentvolume_claim_ref{persistentvolume="task-pv-volume",name="task-pv-claim",claim_namespace="default"} 1 -# HELP kube_persistentvolume_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_persistentvolume_annotations gauge -kube_persistentvolume_annotations{persistentvolume="task-pv-volume"} 1 -# HELP kube_persistentvolume_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_persistentvolume_labels gauge -kube_persistentvolume_labels{persistentvolume="task-pv-volume"} 1 -# HELP kube_persistentvolume_status_phase [STABLE] The phase indicates if a volume is available, bound to a claim, or released by a claim. -# TYPE kube_persistentvolume_status_phase gauge -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Pending"} 0 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Available"} 0 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Bound"} 1 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Released"} 0 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Failed"} 0 -# HELP kube_persistentvolume_info [STABLE] Information about persistentvolume. -# TYPE kube_persistentvolume_info gauge -kube_persistentvolume_info{persistentvolume="task-pv-volume",storageclass="generic",gce_persistent_disk_name="",ebs_volume_id="",azure_disk_name="",fc_wwids="",fc_lun="",fc_target_wwns="",iscsi_target_portal="",iscsi_iqn="",iscsi_lun="",iscsi_initiator_name="",nfs_server="",nfs_path="",csi_driver="",csi_volume_handle="",local_path="",local_fs="",host_path="/tmp/data",host_path_type=""} 1 -# HELP kube_persistentvolume_capacity_bytes [STABLE] Persistentvolume capacity in bytes. -# TYPE kube_persistentvolume_capacity_bytes gauge -kube_persistentvolume_capacity_bytes{persistentvolume="task-pv-volume"} 2048 -# HELP kube_persistentvolume_created Unix creation timestamp -# TYPE kube_persistentvolume_created gauge -kube_persistentvolume_created{persistentvolume="task-pv-volume"} 1.691568402e+09 -# HELP kube_poddisruptionbudget_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_poddisruptionbudget_annotations gauge -# HELP kube_poddisruptionbudget_labels Kubernetes labels converted to Prometheus labels. -# TYPE kube_poddisruptionbudget_labels gauge -# HELP kube_poddisruptionbudget_created [STABLE] Unix creation timestamp -# TYPE kube_poddisruptionbudget_created gauge -# HELP kube_poddisruptionbudget_status_current_healthy [STABLE] Current number of healthy pods -# TYPE kube_poddisruptionbudget_status_current_healthy gauge -# HELP kube_poddisruptionbudget_status_desired_healthy [STABLE] Minimum desired number of healthy pods -# TYPE kube_poddisruptionbudget_status_desired_healthy gauge -# HELP kube_poddisruptionbudget_status_pod_disruptions_allowed [STABLE] Number of pod disruptions that are currently allowed -# TYPE kube_poddisruptionbudget_status_pod_disruptions_allowed gauge -# HELP kube_poddisruptionbudget_status_expected_pods [STABLE] Total number of pods counted by this disruption budget -# TYPE kube_poddisruptionbudget_status_expected_pods gauge -# HELP kube_poddisruptionbudget_status_observed_generation [STABLE] Most recent generation observed when updating this PDB status -# TYPE kube_poddisruptionbudget_status_observed_generation gauge -# HELP kube_pod_completion_time [STABLE] Completion time in unix timestamp for a pod. -# TYPE kube_pod_completion_time gauge -kube_pod_completion_time{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724"} 1.69156842e+09 -kube_pod_completion_time{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7"} 1.691568402e+09 -# HELP kube_pod_container_info [STABLE] Information about a container in a pod. -# TYPE kube_pod_container_info gauge -kube_pod_container_info{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79",container_id="containerd://792a785041217bf9d4784f80510bd60bb21fc179088f5b72286af6d350166a91"} 1 -kube_pod_container_info{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch",image_spec="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image_id="sha256:c896ab1149bb529ca28d76976885e04c0d754b6592f74b5478bfdcf248f84e62",container_id="containerd://a4f1799a2236665489587b54ff78e36c9eebd8a4134d75b768149551f5a564b3"} 1 -kube_pod_container_info{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.9.3",image="registry.k8s.io/coredns/coredns:v1.9.3",image_id="sha256:5185b96f0becf59032b8e3646e99f84d9655dff3ac9e2605e0dc77f9c441ae4a",container_id="containerd://acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler",image_spec="registry.k8s.io/kube-scheduler:v1.26.3",image="registry.k8s.io/kube-scheduler:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:3dd2337f70af979c7362b5e52bbdfcb3a5fd39c78d94d02145150cd2db86ba39",container_id="containerd://abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36"} 1 -kube_pod_container_info{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",image_spec="docker.io/kindest/kindnetd:v20230330-48f316cd@sha256:c19d6362a6a928139820761475a38c24c0cf84d507b9ddf414a078cf627497af",image="sha256:a329ae3c2c52fe00e9c4eaf48b081cd184ee4bf9aea059e497f4965f0a8deedb",image_id="docker.io/kindest/kindnetd:v20230330-48f316cd@sha256:c19d6362a6a928139820761475a38c24c0cf84d507b9ddf414a078cf627497af",container_id="containerd://c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072"} 1 -kube_pod_container_info{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner",image_spec="docker.io/kindest/local-path-provisioner:v0.0.23-kind.0@sha256:f2d0a02831ff3a03cf51343226670d5060623b43a4cfc4808bd0875b2c4b9501",image="sha256:c408b2276bb76627a6f633bf0d26052c208ebd51681c6c89866cc9647471c0bc",image_id="docker.io/kindest/local-path-provisioner:v0.0.23-kind.0@sha256:f2d0a02831ff3a03cf51343226670d5060623b43a4cfc4808bd0875b2c4b9501",container_id="containerd://0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver",image_spec="registry.k8s.io/kube-apiserver:v1.26.3",image="registry.k8s.io/kube-apiserver:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:ba097b515c8c40689733c0f19de377e9bf8995964b7d7150c2045f3dfd166657",container_id="containerd://146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427"} 1 -kube_pod_container_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd",image_spec="registry.k8s.io/etcd:3.5.6-0",image="registry.k8s.io/etcd:3.5.6-0",image_id="sha256:fce326961ae2d51a5f726883fd59d2a8c2ccc3e45d3bb859882db58e422e59e7",container_id="containerd://a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068"} 1 -kube_pod_container_info{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79",container_id="containerd://9db55f876bbf229af92f6825e4ffb58ac7b98c7519f1471fa90c1342fd6a9abc"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",container="kube-state-metrics",image_spec="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.8.2",image="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.8.2",image_id="registry.k8s.io/kube-state-metrics/kube-state-metrics@sha256:ec5732e28f151de3847df60f48c5a570aacdb692ff1ce949d97105ae5e5a6722",container_id="containerd://2385de25be8a2c1ec1c1490d5aab898d0d1202c981840b41de1d2cc67d891a8d"} 1 -kube_pod_container_info{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",container="nginx",image_spec="docker.io/nginx:1.24.0-alpine-slim",image="docker.io/library/nginx:1.24.0-alpine-slim",image_id="docker.io/library/nginx@sha256:b8132df8c2fc73f4c1e7ce434c1ff19b134818e8173cd5e8f79c55a5f635d7e5",container_id="containerd://d7ccd676642697b9c11ccd6789aa8ab9048ee18ee0f9627227db5e12006e0342"} 1 -kube_pod_container_info{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.9.3",image="registry.k8s.io/coredns/coredns:v1.9.3",image_id="sha256:5185b96f0becf59032b8e3646e99f84d9655dff3ac9e2605e0dc77f9c441ae4a",container_id="containerd://95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager",image_spec="registry.k8s.io/kube-controller-manager:v1.26.3",image="registry.k8s.io/kube-controller-manager:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:8dbb345de79d1c44f59a7895da702a5f71997ae72aea056609445c397b0c10dc",container_id="containerd://9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy",image_spec="registry.k8s.io/kube-proxy:v1.26.3",image="registry.k8s.io/kube-proxy:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:44db4d50a5f9c8efbac0d37ea974d1c0419a5928f90748d3d491a041a00c20b5",container_id="containerd://c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f"} 1 -# HELP kube_pod_container_resource_limits The number of requested limit resource by a container. It is recommended to use the kube_pod_resource_limits metric exposed by kube-scheduler instead, as it is more precise. -# TYPE kube_pod_container_resource_limits gauge -kube_pod_container_resource_limits{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 -kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 -kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 -kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 -# HELP kube_pod_container_resource_requests The number of requested request resource by a container. It is recommended to use the kube_pod_resource_requests metric exposed by kube-scheduler instead, as it is more precise. -# TYPE kube_pod_container_resource_requests gauge -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager",node="kind-control-plane",resource="cpu",unit="core"} 0.2 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver",node="kind-control-plane",resource="cpu",unit="core"} 0.25 -kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd",node="kind-control-plane",resource="memory",unit="byte"} 1.048576e+08 -# HELP kube_pod_container_state_started [STABLE] Start time in unix timestamp for a pod container. -# TYPE kube_pod_container_state_started gauge -kube_pod_container_state_started{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 1.691566332e+09 -kube_pod_container_state_started{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 1.69156636e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 1.691566355e+09 -kube_pod_container_state_started{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 1.69156636e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 1.691566332e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 1.691566357e+09 -kube_pod_container_state_started{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 1.691566361e+09 -kube_pod_container_state_started{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello"} 1.69156842e+09 -kube_pod_container_state_started{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch"} 1.691568402e+09 -kube_pod_container_state_started{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 1.691566334e+09 -kube_pod_container_state_started{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello"} 1.691568402e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",container="kube-state-metrics"} 1.691568403e+09 -kube_pod_container_state_started{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",container="nginx"} 1.691568403e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 1.691566332e+09 -# HELP kube_pod_container_status_last_terminated_reason Describes the last reason the container was in terminated state. -# TYPE kube_pod_container_status_last_terminated_reason gauge -# HELP kube_pod_container_status_last_terminated_exitcode Describes the exit code for the last container in terminated state. -# TYPE kube_pod_container_status_last_terminated_exitcode gauge -# HELP kube_pod_container_status_ready [STABLE] Describes whether the containers readiness check succeeded. -# TYPE kube_pod_container_status_ready gauge -kube_pod_container_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 1 -kube_pod_container_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 1 -kube_pod_container_status_ready{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello"} 0 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 1 -kube_pod_container_status_ready{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello"} 0 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",container="kube-state-metrics"} 1 -kube_pod_container_status_ready{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",container="nginx"} 1 -# HELP kube_pod_container_status_restarts_total [STABLE] The number of container restarts per container. -# TYPE kube_pod_container_status_restarts_total counter -kube_pod_container_status_restarts_total{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 0 -kube_pod_container_status_restarts_total{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",container="kube-state-metrics"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",container="nginx"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 0 -# HELP kube_pod_container_status_running [STABLE] Describes whether the container is currently in running state. -# TYPE kube_pod_container_status_running gauge -kube_pod_container_status_running{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 1 -kube_pod_container_status_running{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 1 -kube_pod_container_status_running{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello"} 0 -kube_pod_container_status_running{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 1 -kube_pod_container_status_running{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello"} 0 -kube_pod_container_status_running{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",container="kube-state-metrics"} 1 -kube_pod_container_status_running{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",container="nginx"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 1 -# HELP kube_pod_container_status_terminated [STABLE] Describes whether the container is currently in terminated state. -# TYPE kube_pod_container_status_terminated gauge -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 0 -kube_pod_container_status_terminated{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 0 -kube_pod_container_status_terminated{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello"} 1 -kube_pod_container_status_terminated{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",container="kube-state-metrics"} 0 -kube_pod_container_status_terminated{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",container="nginx"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 0 -kube_pod_container_status_terminated{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello"} 1 -kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 0 -# HELP kube_pod_container_status_terminated_reason Describes the reason the container is currently in terminated state. -# TYPE kube_pod_container_status_terminated_reason gauge -kube_pod_container_status_terminated_reason{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello",reason="Completed"} 1 -kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello",reason="Completed"} 1 -# HELP kube_pod_container_status_waiting [STABLE] Describes whether the container is currently in waiting state. -# TYPE kube_pod_container_status_waiting gauge -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 0 -kube_pod_container_status_waiting{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 0 -kube_pod_container_status_waiting{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",container="hello"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 0 -kube_pod_container_status_waiting{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",container="hello"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",container="kube-state-metrics"} 0 -kube_pod_container_status_waiting{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",container="nginx"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 0 -# HELP kube_pod_container_status_waiting_reason [STABLE] Describes the reason the container is currently in waiting state. -# TYPE kube_pod_container_status_waiting_reason gauge -# HELP kube_pod_created [STABLE] Unix creation timestamp -# TYPE kube_pod_created gauge -kube_pod_created{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566354e+09 -kube_pod_created{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566354e+09 -kube_pod_created{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566354e+09 -kube_pod_created{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724"} 1.69156842e+09 -kube_pod_created{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17"} 1.691568402e+09 -kube_pod_created{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.691566354e+09 -kube_pod_created{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.691566341e+09 -kube_pod_created{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b"} 1.691568402e+09 -kube_pod_created{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c"} 1.691568402e+09 -kube_pod_created{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.69156634e+09 -kube_pod_created{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.69156634e+09 -kube_pod_created{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7"} 1.691568402e+09 -kube_pod_created{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.691566354e+09 -kube_pod_created{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566341e+09 -# HELP kube_pod_deletion_timestamp Unix deletion timestamp -# TYPE kube_pod_deletion_timestamp gauge -# HELP kube_pod_info [STABLE] Information about pod. -# TYPE kube_pod_info gauge -kube_pod_info{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kube-proxy",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",host_ip="172.18.0.2",pod_ip="10.244.0.2",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-787d4945fb",priority_class="system-cluster-critical",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kindnet",priority_class="",host_network="true"} 1 -kube_pod_info{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",host_ip="172.18.0.2",pod_ip="10.244.0.4",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="local-path-provisioner-75f5b54ffd",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",host_ip="172.18.0.2",pod_ip="10.244.0.16",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28192807",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",host_ip="172.18.0.2",pod_ip="10.244.0.12",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="fluentd-elasticsearch",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",host_ip="172.18.0.2",pod_ip="10.244.0.13",node="kind-control-plane",created_by_kind="Job",created_by_name="hello",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",host_ip="172.18.0.2",pod_ip="10.244.0.14",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="kube-state-metrics-fb945547c",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",host_ip="172.18.0.2",pod_ip="10.244.0.15",node="kind-control-plane",created_by_kind="StatefulSet",created_by_name="web",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",host_ip="172.18.0.2",pod_ip="10.244.0.3",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-787d4945fb",priority_class="system-cluster-critical",host_network="false"} 1 -# HELP kube_pod_ips Pod IP addresses -# TYPE kube_pod_ips gauge -kube_pod_ips{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",ip="10.244.0.3",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",ip="10.244.0.4",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",ip="10.244.0.16",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",ip="10.244.0.12",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",ip="10.244.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",ip="10.244.0.15",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",ip="10.244.0.13",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",ip="10.244.0.14",ip_family="4"} 1 -# HELP kube_pod_init_container_info [STABLE] Information about an init container in a pod. -# TYPE kube_pod_init_container_info gauge -# HELP kube_pod_init_container_resource_limits The number of requested limit resource by an init container. -# TYPE kube_pod_init_container_resource_limits gauge -# HELP kube_pod_init_container_resource_requests The number of requested request resource by an init container. -# TYPE kube_pod_init_container_resource_requests gauge -# HELP kube_pod_init_container_status_last_terminated_reason Describes the last reason the init container was in terminated state. -# TYPE kube_pod_init_container_status_last_terminated_reason gauge -# HELP kube_pod_init_container_status_ready [STABLE] Describes whether the init containers readiness check succeeded. -# TYPE kube_pod_init_container_status_ready gauge -# HELP kube_pod_init_container_status_restarts_total [STABLE] The number of restarts for the init container. -# TYPE kube_pod_init_container_status_restarts_total counter -# HELP kube_pod_init_container_status_running [STABLE] Describes whether the init container is currently in running state. -# TYPE kube_pod_init_container_status_running gauge -# HELP kube_pod_init_container_status_terminated [STABLE] Describes whether the init container is currently in terminated state. -# TYPE kube_pod_init_container_status_terminated gauge -# HELP kube_pod_init_container_status_terminated_reason Describes the reason the init container is currently in terminated state. -# TYPE kube_pod_init_container_status_terminated_reason gauge -# HELP kube_pod_init_container_status_waiting [STABLE] Describes whether the init container is currently in waiting state. -# TYPE kube_pod_init_container_status_waiting gauge -# HELP kube_pod_init_container_status_waiting_reason Describes the reason the init container is currently in waiting state. -# TYPE kube_pod_init_container_status_waiting_reason gauge -# HELP kube_pod_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_pod_annotations gauge -kube_pod_annotations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1 -kube_pod_annotations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17"} 1 -kube_pod_annotations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1 -kube_pod_annotations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1 -kube_pod_annotations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1 -kube_pod_annotations{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1 -kube_pod_annotations{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1 -kube_pod_annotations{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b"} 1 -kube_pod_annotations{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c"} 1 -# HELP kube_pod_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_pod_labels gauge -kube_pod_labels{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724"} 1 -kube_pod_labels{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17"} 1 -kube_pod_labels{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1 -kube_pod_labels{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1 -kube_pod_labels{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1 -kube_pod_labels{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1 -kube_pod_labels{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b"} 1 -kube_pod_labels{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c"} 1 -kube_pod_labels{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1 -# HELP kube_pod_overhead_cpu_cores The pod overhead in regards to cpu cores associated with running a pod. -# TYPE kube_pod_overhead_cpu_cores gauge -# HELP kube_pod_overhead_memory_bytes The pod overhead in regards to memory associated with running a pod. -# TYPE kube_pod_overhead_memory_bytes gauge -# HELP kube_pod_owner [STABLE] Information about the Pod's owner. -# TYPE kube_pod_owner gauge -kube_pod_owner{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",owner_kind="ReplicaSet",owner_name="coredns-787d4945fb",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",owner_kind="DaemonSet",owner_name="kube-proxy",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",owner_kind="DaemonSet",owner_name="fluentd-elasticsearch",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",owner_kind="ReplicaSet",owner_name="coredns-787d4945fb",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",owner_kind="DaemonSet",owner_name="kindnet",owner_is_controller="true"} 1 -kube_pod_owner{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",owner_kind="ReplicaSet",owner_name="local-path-provisioner-75f5b54ffd",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",owner_kind="Job",owner_name="hello-28192807",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",owner_kind="Job",owner_name="hello",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",owner_kind="ReplicaSet",owner_name="kube-state-metrics-fb945547c",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",owner_kind="StatefulSet",owner_name="web",owner_is_controller="true"} 1 -# HELP kube_pod_restart_policy [STABLE] Describes the restart policy in use by this pod. -# TYPE kube_pod_restart_policy gauge -kube_pod_restart_policy{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",type="OnFailure"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",type="Always"} 1 -kube_pod_restart_policy{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",type="OnFailure"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",type="Always"} 1 -# HELP kube_pod_runtimeclass_name_info The runtimeclass associated with the pod. -# TYPE kube_pod_runtimeclass_name_info gauge -# HELP kube_pod_spec_volumes_persistentvolumeclaims_info [STABLE] Information about persistentvolumeclaim volumes in a pod. -# TYPE kube_pod_spec_volumes_persistentvolumeclaims_info gauge -# HELP kube_pod_spec_volumes_persistentvolumeclaims_readonly [STABLE] Describes whether a persistentvolumeclaim is mounted read only. -# TYPE kube_pod_spec_volumes_persistentvolumeclaims_readonly gauge -# HELP kube_pod_start_time [STABLE] Start time in unix timestamp for a pod. -# TYPE kube_pod_start_time gauge -kube_pod_start_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.69156634e+09 -kube_pod_start_time{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7"} 1.691568402e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b"} 1.691568402e+09 -kube_pod_start_time{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c"} 1.691568402e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566341e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566341e+09 -kube_pod_start_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.691566358e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566354e+09 -kube_pod_start_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.691566358e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.69156634e+09 -kube_pod_start_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566354e+09 -kube_pod_start_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566358e+09 -kube_pod_start_time{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724"} 1.69156842e+09 -kube_pod_start_time{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17"} 1.691568402e+09 -# HELP kube_pod_status_phase [STABLE] The pods current phase. -# TYPE kube_pod_status_phase gauge -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Running"} 1 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Pending"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Failed"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Unknown"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",phase="Succeeded"} 1 -kube_pod_status_phase{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",phase="Running"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",phase="Succeeded"} 1 -kube_pod_status_phase{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",phase="Running"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Running"} 1 -# HELP kube_pod_status_qos_class The pods current qosClass. -# TYPE kube_pod_status_qos_class gauge -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",qos_class="Guaranteed"} 1 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",qos_class="Guaranteed"} 0 -# HELP kube_pod_status_ready [STABLE] Describes whether the pod is ready to serve requests. -# TYPE kube_pod_status_ready gauge -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",condition="true"} 1 -kube_pod_status_ready{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",condition="false"} 0 -kube_pod_status_ready{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",condition="true"} 0 -kube_pod_status_ready{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",condition="false"} 1 -kube_pod_status_ready{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="unknown"} 0 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="true"} 1 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="false"} 0 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",condition="true"} 0 -kube_pod_status_ready{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",condition="false"} 1 -kube_pod_status_ready{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="unknown"} 0 -# HELP kube_pod_status_ready_time Readiness achieved time in unix timestamp for a pod. -# TYPE kube_pod_status_ready_time gauge -kube_pod_status_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17"} 1.691568403e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.69156636e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.691566351e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566357e+09 -kube_pod_status_ready_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566362e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566343e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.691566344e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b"} 1.691568412e+09 -kube_pod_status_ready_time{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c"} 1.691568404e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.69156636e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566345e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566355e+09 -# HELP kube_pod_status_container_ready_time Readiness achieved time in unix timestamp for a pod containers. -# TYPE kube_pod_status_container_ready_time gauge -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b"} 1.691568412e+09 -kube_pod_status_container_ready_time{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c"} 1.691568404e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566343e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.691566344e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.69156636e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566345e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566355e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566357e+09 -kube_pod_status_container_ready_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566362e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17"} 1.691568403e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.69156636e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.691566351e+09 -# HELP kube_pod_status_reason The pod status reasons -# TYPE kube_pod_status_reason gauge -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="Evicted"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="UnexpectedAdmissionError"} 0 -# HELP kube_pod_status_scheduled [STABLE] Describes the status of the scheduling process for the pod. -# TYPE kube_pod_status_scheduled gauge -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="true"} 1 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="false"} 0 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="unknown"} 0 -# HELP kube_pod_status_scheduled_time [STABLE] Unix timestamp when pod moved into scheduled status -# TYPE kube_pod_status_scheduled_time gauge -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566354e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566354e+09 -kube_pod_status_scheduled_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566358e+09 -kube_pod_status_scheduled_time{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724"} 1.69156842e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17"} 1.691568402e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.691566358e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.69156634e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b"} 1.691568402e+09 -kube_pod_status_scheduled_time{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c"} 1.691568402e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566341e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.69156634e+09 -kube_pod_status_scheduled_time{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7"} 1.691568402e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.691566358e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566341e+09 -# HELP kube_pod_status_unschedulable [STABLE] Describes the unschedulable status for the pod. -# TYPE kube_pod_status_unschedulable gauge -# HELP kube_pod_tolerations Information about the pod tolerations -# TYPE kube_pod_tolerations gauge -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="hello-28192807-p6f5s",uid="9cf6e32b-0cae-42ae-bdf0-1cc1e1307724",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node-role.kubernetes.io/control-plane",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node-role.kubernetes.io/master",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-qrlkt",uid="a69e9036-f859-4836-8a3e-01dd8f95ac17",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="CriticalAddonsOnly",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node-role.kubernetes.io/control-plane",operator="Equal",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node-role.kubernetes.io/master",operator="Equal",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="hello-7dfgp",uid="db49dd04-84c8-4360-ae91-676138fb6db7",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-fb945547c-zdncb",uid="b0df55cf-7b68-4347-8b28-5824cc8c1e0b",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="web-0",uid="c9fab27d-228a-4850-ba37-fe2ac77fda6c",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="CriticalAddonsOnly",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",operator="Exists",effect="NoExecute"} 1 -# HELP kube_replicaset_created [STABLE] Unix creation timestamp -# TYPE kube_replicaset_created gauge -kube_replicaset_created{namespace="kube-system",replicaset="coredns-787d4945fb"} 1.691566354e+09 -kube_replicaset_created{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1.691566354e+09 -kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1.691568402e+09 -# HELP kube_replicaset_status_replicas [STABLE] The number of replicas per ReplicaSet. -# TYPE kube_replicaset_status_replicas gauge -kube_replicaset_status_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -kube_replicaset_status_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -# HELP kube_replicaset_status_fully_labeled_replicas [STABLE] The number of fully labeled replicas per ReplicaSet. -# TYPE kube_replicaset_status_fully_labeled_replicas gauge -kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -kube_replicaset_status_fully_labeled_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -# HELP kube_replicaset_status_ready_replicas [STABLE] The number of ready replicas per ReplicaSet. -# TYPE kube_replicaset_status_ready_replicas gauge -kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -kube_replicaset_status_ready_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -# HELP kube_replicaset_status_observed_generation [STABLE] The generation observed by the ReplicaSet controller. -# TYPE kube_replicaset_status_observed_generation gauge -kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -kube_replicaset_status_observed_generation{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -# HELP kube_replicaset_spec_replicas [STABLE] Number of desired pods for a ReplicaSet. -# TYPE kube_replicaset_spec_replicas gauge -kube_replicaset_spec_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -kube_replicaset_spec_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -# HELP kube_replicaset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_replicaset_metadata_generation gauge -kube_replicaset_metadata_generation{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -kube_replicaset_metadata_generation{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -# HELP kube_replicaset_owner [STABLE] Information about the ReplicaSet's owner. -# TYPE kube_replicaset_owner gauge -kube_replicaset_owner{namespace="kube-system",replicaset="coredns-787d4945fb",owner_kind="Deployment",owner_name="coredns",owner_is_controller="true"} 1 -kube_replicaset_owner{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd",owner_kind="Deployment",owner_name="local-path-provisioner",owner_is_controller="true"} 1 -kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-fb945547c",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 -# HELP kube_replicaset_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_replicaset_annotations gauge -kube_replicaset_annotations{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -kube_replicaset_annotations{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -kube_replicaset_annotations{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -# HELP kube_replicaset_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_replicaset_labels gauge -kube_replicaset_labels{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_labels{namespace="kube-system",replicaset="kube-state-metrics-fb945547c"} 1 -kube_replicaset_labels{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -# HELP kube_replicationcontroller_created [STABLE] Unix creation timestamp -# TYPE kube_replicationcontroller_created gauge -# HELP kube_replicationcontroller_status_replicas [STABLE] The number of replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_replicas gauge -# HELP kube_replicationcontroller_status_fully_labeled_replicas [STABLE] The number of fully labeled replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_fully_labeled_replicas gauge -# HELP kube_replicationcontroller_status_ready_replicas [STABLE] The number of ready replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_ready_replicas gauge -# HELP kube_replicationcontroller_status_available_replicas [STABLE] The number of available replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_available_replicas gauge -# HELP kube_replicationcontroller_status_observed_generation [STABLE] The generation observed by the ReplicationController controller. -# TYPE kube_replicationcontroller_status_observed_generation gauge -# HELP kube_replicationcontroller_spec_replicas [STABLE] Number of desired pods for a ReplicationController. -# TYPE kube_replicationcontroller_spec_replicas gauge -# HELP kube_replicationcontroller_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_replicationcontroller_metadata_generation gauge -# HELP kube_replicationcontroller_owner Information about the ReplicationController's owner. -# TYPE kube_replicationcontroller_owner gauge -# HELP kube_resourcequota_created [STABLE] Unix creation timestamp -# TYPE kube_resourcequota_created gauge -kube_resourcequota_created{namespace="default",resourcequota="pods-high"} 1.691568402e+09 -# HELP kube_resourcequota [STABLE] Information about resource quota. -# TYPE kube_resourcequota gauge -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="hard"} 1000 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="hard"} 204800 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="hard"} 10 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="used"} 0 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="used"} 0 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="used"} 0 -# HELP kube_secret_info [STABLE] Information about secret. -# TYPE kube_secret_info gauge -kube_secret_info{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 -# HELP kube_secret_type [STABLE] Type about secret. -# TYPE kube_secret_type gauge -kube_secret_type{namespace="kube-system",secret="bootstrap-token-abcdef",type="bootstrap.kubernetes.io/token"} 1 -# HELP kube_secret_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_secret_annotations gauge -kube_secret_annotations{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 -# HELP kube_secret_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_secret_labels gauge -kube_secret_labels{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 -# HELP kube_secret_created [STABLE] Unix creation timestamp -# TYPE kube_secret_created gauge -kube_secret_created{namespace="kube-system",secret="bootstrap-token-abcdef"} 1.69156634e+09 -# HELP kube_secret_metadata_resource_version Resource version representing a specific version of secret. -# TYPE kube_secret_metadata_resource_version gauge -kube_secret_metadata_resource_version{namespace="kube-system",secret="bootstrap-token-abcdef"} 221 -# HELP kube_service_info [STABLE] Information about service. -# TYPE kube_service_info gauge -kube_service_info{namespace="kube-system",service="kube-state-metrics",uid="47c4b57d-96b5-482c-9da0-c543cd1589fb",cluster_ip="None",external_name="",load_balancer_ip=""} 1 -kube_service_info{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c",cluster_ip="10.96.0.1",external_name="",load_balancer_ip=""} 1 -kube_service_info{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354",cluster_ip="10.96.0.10",external_name="",load_balancer_ip=""} 1 -# HELP kube_service_created [STABLE] Unix creation timestamp -# TYPE kube_service_created gauge -kube_service_created{namespace="kube-system",service="kube-state-metrics",uid="47c4b57d-96b5-482c-9da0-c543cd1589fb"} 1.691568402e+09 -kube_service_created{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c"} 1.691566338e+09 -kube_service_created{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354"} 1.69156634e+09 -# HELP kube_service_spec_type [STABLE] Type about service. -# TYPE kube_service_spec_type gauge -kube_service_spec_type{namespace="kube-system",service="kube-state-metrics",uid="47c4b57d-96b5-482c-9da0-c543cd1589fb",type="ClusterIP"} 1 -kube_service_spec_type{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c",type="ClusterIP"} 1 -kube_service_spec_type{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354",type="ClusterIP"} 1 -# HELP kube_service_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_service_annotations gauge -kube_service_annotations{namespace="kube-system",service="kube-state-metrics",uid="47c4b57d-96b5-482c-9da0-c543cd1589fb"} 1 -kube_service_annotations{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c"} 1 -kube_service_annotations{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354"} 1 -# HELP kube_service_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_service_labels gauge -kube_service_labels{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354"} 1 -kube_service_labels{namespace="kube-system",service="kube-state-metrics",uid="47c4b57d-96b5-482c-9da0-c543cd1589fb"} 1 -kube_service_labels{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c"} 1 -# HELP kube_service_spec_external_ip [STABLE] Service external ips. One series for each ip -# TYPE kube_service_spec_external_ip gauge -# HELP kube_service_status_load_balancer_ingress [STABLE] Service load balancer ingress status -# TYPE kube_service_status_load_balancer_ingress gauge -# HELP kube_statefulset_created [STABLE] Unix creation timestamp -# TYPE kube_statefulset_created gauge -kube_statefulset_created{namespace="default",statefulset="web"} 1.691568402e+09 -# HELP kube_statefulset_status_replicas [STABLE] The number of replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas gauge -kube_statefulset_status_replicas{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_available The number of available replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_available gauge -kube_statefulset_status_replicas_available{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_current [STABLE] The number of current replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_current gauge -kube_statefulset_status_replicas_current{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_ready [STABLE] The number of ready replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_ready gauge -kube_statefulset_status_replicas_ready{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_updated [STABLE] The number of updated replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_updated gauge -kube_statefulset_status_replicas_updated{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_observed_generation [STABLE] The generation observed by the StatefulSet controller. -# TYPE kube_statefulset_status_observed_generation gauge -kube_statefulset_status_observed_generation{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_replicas [STABLE] Number of desired pods for a StatefulSet. -# TYPE kube_statefulset_replicas gauge -kube_statefulset_replicas{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state for the StatefulSet. -# TYPE kube_statefulset_metadata_generation gauge -kube_statefulset_metadata_generation{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_persistentvolumeclaim_retention_policy Count of retention policy for StatefulSet template PVCs -# TYPE kube_statefulset_persistentvolumeclaim_retention_policy gauge -# HELP kube_statefulset_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_statefulset_annotations gauge -kube_statefulset_annotations{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_statefulset_labels gauge -kube_statefulset_labels{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_current_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas). -# TYPE kube_statefulset_status_current_revision gauge -kube_statefulset_status_current_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 -# HELP kube_statefulset_status_update_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) -# TYPE kube_statefulset_status_update_revision gauge -kube_statefulset_status_update_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 -# HELP kube_storageclass_info [STABLE] Information about storageclass. -# TYPE kube_storageclass_info gauge -kube_storageclass_info{storageclass="standard",provisioner="rancher.io/local-path",reclaim_policy="Delete",volume_binding_mode="WaitForFirstConsumer"} 1 -# HELP kube_storageclass_created [STABLE] Unix creation timestamp -# TYPE kube_storageclass_created gauge -kube_storageclass_created{storageclass="standard"} 1.691566342e+09 -# HELP kube_storageclass_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_storageclass_annotations gauge -kube_storageclass_annotations{storageclass="standard"} 1 -# HELP kube_storageclass_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_storageclass_labels gauge -kube_storageclass_labels{storageclass="standard"} 1 -# HELP kube_validatingwebhookconfiguration_info Information about the ValidatingWebhookConfiguration. -# TYPE kube_validatingwebhookconfiguration_info gauge -# HELP kube_validatingwebhookconfiguration_created Unix creation timestamp. -# TYPE kube_validatingwebhookconfiguration_created gauge -# HELP kube_validatingwebhookconfiguration_metadata_resource_version Resource version representing a specific version of the ValidatingWebhookConfiguration. -# TYPE kube_validatingwebhookconfiguration_metadata_resource_version gauge -# HELP kube_volumeattachment_labels Kubernetes labels converted to Prometheus labels. -# TYPE kube_volumeattachment_labels gauge -# HELP kube_volumeattachment_info Information about volumeattachment. -# TYPE kube_volumeattachment_info gauge -# HELP kube_volumeattachment_created Unix creation timestamp -# TYPE kube_volumeattachment_created gauge -# HELP kube_volumeattachment_spec_source_persistentvolume PersistentVolume source reference. -# TYPE kube_volumeattachment_spec_source_persistentvolume gauge -# HELP kube_volumeattachment_status_attached Information about volumeattachment. -# TYPE kube_volumeattachment_status_attached gauge -# HELP kube_volumeattachment_status_attachment_metadata volumeattachment metadata. -# TYPE kube_volumeattachment_status_attachment_metadata gauge diff --git a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.9.2.plain b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.9.2.plain deleted file mode 100644 index 2b6bf3b34af..00000000000 --- a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.9.2.plain +++ /dev/null @@ -1,1479 +0,0 @@ -# HELP kube_certificatesigningrequest_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_certificatesigningrequest_annotations gauge -# HELP kube_certificatesigningrequest_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_certificatesigningrequest_labels gauge -# HELP kube_certificatesigningrequest_created [STABLE] Unix creation timestamp -# TYPE kube_certificatesigningrequest_created gauge -# HELP kube_certificatesigningrequest_condition [STABLE] The number of each certificatesigningrequest condition -# TYPE kube_certificatesigningrequest_condition gauge -# HELP kube_certificatesigningrequest_cert_length [STABLE] Length of the issued cert -# TYPE kube_certificatesigningrequest_cert_length gauge -# HELP kube_configmap_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_configmap_annotations gauge -kube_configmap_annotations{namespace="local-path-storage",configmap="local-path-config"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kubeadm-config"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kubelet-config"} 1 -kube_configmap_annotations{namespace="kube-public",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="default",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="coredns"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="kube-public",configmap="cluster-info"} 1 -kube_configmap_annotations{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 -kube_configmap_annotations{namespace="default",configmap="example-redis-config"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 -kube_configmap_annotations{namespace="kube-system",configmap="kube-proxy"} 1 -# HELP kube_configmap_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_configmap_labels gauge -kube_configmap_labels{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="kube-system",configmap="coredns"} 1 -kube_configmap_labels{namespace="local-path-storage",configmap="local-path-config"} 1 -kube_configmap_labels{namespace="kube-system",configmap="kubeadm-config"} 1 -kube_configmap_labels{namespace="kube-system",configmap="kubelet-config"} 1 -kube_configmap_labels{namespace="kube-public",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="default",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 -kube_configmap_labels{namespace="kube-system",configmap="kube-proxy"} 1 -kube_configmap_labels{namespace="kube-system",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="kube-public",configmap="cluster-info"} 1 -kube_configmap_labels{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 -kube_configmap_labels{namespace="default",configmap="example-redis-config"} 1 -# HELP kube_configmap_info [STABLE] Information about configmap. -# TYPE kube_configmap_info gauge -kube_configmap_info{namespace="local-path-storage",configmap="local-path-config"} 1 -kube_configmap_info{namespace="kube-system",configmap="kubeadm-config"} 1 -kube_configmap_info{namespace="kube-system",configmap="kubelet-config"} 1 -kube_configmap_info{namespace="kube-public",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="default",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="kube-system",configmap="coredns"} 1 -kube_configmap_info{namespace="kube-system",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="kube-public",configmap="cluster-info"} 1 -kube_configmap_info{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1 -kube_configmap_info{namespace="default",configmap="example-redis-config"} 1 -kube_configmap_info{namespace="kube-system",configmap="extension-apiserver-authentication"} 1 -kube_configmap_info{namespace="kube-system",configmap="kube-proxy"} 1 -# HELP kube_configmap_created [STABLE] Unix creation timestamp -# TYPE kube_configmap_created gauge -kube_configmap_created{namespace="kube-public",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="default",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="local-path-storage",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="kube-system",configmap="coredns"} 1.69156634e+09 -kube_configmap_created{namespace="local-path-storage",configmap="local-path-config"} 1.691566343e+09 -kube_configmap_created{namespace="kube-system",configmap="kubeadm-config"} 1.691566339e+09 -kube_configmap_created{namespace="kube-system",configmap="kubelet-config"} 1.691566339e+09 -kube_configmap_created{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="default",configmap="example-redis-config"} 1.691568526e+09 -kube_configmap_created{namespace="kube-system",configmap="extension-apiserver-authentication"} 1.691566337e+09 -kube_configmap_created{namespace="kube-system",configmap="kube-proxy"} 1.69156634e+09 -kube_configmap_created{namespace="kube-system",configmap="kube-root-ca.crt"} 1.691566353e+09 -kube_configmap_created{namespace="kube-public",configmap="cluster-info"} 1.69156634e+09 -# HELP kube_configmap_metadata_resource_version Resource version representing a specific version of the configmap. -# TYPE kube_configmap_metadata_resource_version gauge -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-proxy"} 238 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kube-root-ca.crt"} 341 -kube_configmap_metadata_resource_version{namespace="kube-public",configmap="cluster-info"} 360 -kube_configmap_metadata_resource_version{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 343 -kube_configmap_metadata_resource_version{namespace="default",configmap="example-redis-config"} 3691 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="extension-apiserver-authentication"} 26 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="coredns"} 231 -kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="local-path-config"} 270 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubeadm-config"} 198 -kube_configmap_metadata_resource_version{namespace="kube-system",configmap="kubelet-config"} 202 -kube_configmap_metadata_resource_version{namespace="kube-public",configmap="kube-root-ca.crt"} 342 -kube_configmap_metadata_resource_version{namespace="default",configmap="kube-root-ca.crt"} 344 -kube_configmap_metadata_resource_version{namespace="local-path-storage",configmap="kube-root-ca.crt"} 345 -# HELP kube_cronjob_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_cronjob_annotations gauge -kube_cronjob_annotations{namespace="default",cronjob="hello"} 1 -# HELP kube_cronjob_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_cronjob_labels gauge -kube_cronjob_labels{namespace="default",cronjob="hello"} 1 -# HELP kube_cronjob_info [STABLE] Info about cronjob. -# TYPE kube_cronjob_info gauge -kube_cronjob_info{namespace="default",cronjob="hello",schedule="*/1 * * * *",concurrency_policy="Allow"} 1 -# HELP kube_cronjob_created [STABLE] Unix creation timestamp -# TYPE kube_cronjob_created gauge -kube_cronjob_created{namespace="default",cronjob="hello"} 1.691568526e+09 -# HELP kube_cronjob_status_active [STABLE] Active holds pointers to currently running jobs. -# TYPE kube_cronjob_status_active gauge -kube_cronjob_status_active{namespace="default",cronjob="hello"} 0 -# HELP kube_cronjob_status_last_schedule_time [STABLE] LastScheduleTime keeps information of when was the last time the job was successfully scheduled. -# TYPE kube_cronjob_status_last_schedule_time gauge -kube_cronjob_status_last_schedule_time{namespace="default",cronjob="hello"} 1.69156854e+09 -# HELP kube_cronjob_status_last_successful_time LastSuccessfulTime keeps information of when was the last time the job was completed successfully. -# TYPE kube_cronjob_status_last_successful_time gauge -kube_cronjob_status_last_successful_time{namespace="default",cronjob="hello"} 1.691568544e+09 -# HELP kube_cronjob_spec_suspend [STABLE] Suspend flag tells the controller to suspend subsequent executions. -# TYPE kube_cronjob_spec_suspend gauge -kube_cronjob_spec_suspend{namespace="default",cronjob="hello"} 0 -# HELP kube_cronjob_spec_starting_deadline_seconds [STABLE] Deadline in seconds for starting the job if it misses scheduled time for any reason. -# TYPE kube_cronjob_spec_starting_deadline_seconds gauge -# HELP kube_cronjob_next_schedule_time [STABLE] Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed. -# TYPE kube_cronjob_next_schedule_time gauge -kube_cronjob_next_schedule_time{namespace="default",cronjob="hello"} 1.6915686e+09 -# HELP kube_cronjob_metadata_resource_version [STABLE] Resource version representing a specific version of the cronjob. -# TYPE kube_cronjob_metadata_resource_version gauge -kube_cronjob_metadata_resource_version{namespace="default",cronjob="hello"} 3811 -# HELP kube_cronjob_spec_successful_job_history_limit Successful job history limit tells the controller how many completed jobs should be preserved. -# TYPE kube_cronjob_spec_successful_job_history_limit gauge -kube_cronjob_spec_successful_job_history_limit{namespace="default",cronjob="hello"} 3 -# HELP kube_cronjob_spec_failed_job_history_limit Failed job history limit tells the controller how many failed jobs should be preserved. -# TYPE kube_cronjob_spec_failed_job_history_limit gauge -kube_cronjob_spec_failed_job_history_limit{namespace="default",cronjob="hello"} 1 -# HELP kube_daemonset_created [STABLE] Unix creation timestamp -# TYPE kube_daemonset_created gauge -kube_daemonset_created{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1.691568526e+09 -kube_daemonset_created{namespace="kube-system",daemonset="kube-proxy"} 1.69156634e+09 -kube_daemonset_created{namespace="kube-system",daemonset="kindnet"} 1.691566342e+09 -# HELP kube_daemonset_status_current_number_scheduled [STABLE] The number of nodes running at least one daemon pod and are supposed to. -# TYPE kube_daemonset_status_current_number_scheduled gauge -kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_current_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_status_desired_number_scheduled [STABLE] The number of nodes that should be running the daemon pod. -# TYPE kube_daemonset_status_desired_number_scheduled gauge -kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_desired_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_status_number_available [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available -# TYPE kube_daemonset_status_number_available gauge -kube_daemonset_status_number_available{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_status_number_available{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_number_available{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_status_number_misscheduled [STABLE] The number of nodes running a daemon pod but are not supposed to. -# TYPE kube_daemonset_status_number_misscheduled gauge -kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 -kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kube-proxy"} 0 -kube_daemonset_status_number_misscheduled{namespace="kube-system",daemonset="kindnet"} 0 -# HELP kube_daemonset_status_number_ready [STABLE] The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready. -# TYPE kube_daemonset_status_number_ready gauge -kube_daemonset_status_number_ready{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_number_ready{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_status_number_unavailable [STABLE] The number of nodes that should be running the daemon pod and have none of the daemon pod running and available -# TYPE kube_daemonset_status_number_unavailable gauge -kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kube-proxy"} 0 -kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="kindnet"} 0 -kube_daemonset_status_number_unavailable{namespace="kube-system",daemonset="fluentd-elasticsearch"} 0 -# HELP kube_daemonset_status_observed_generation [STABLE] The most recent generation observed by the daemon set controller. -# TYPE kube_daemonset_status_observed_generation gauge -kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_observed_generation{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_status_updated_number_scheduled [STABLE] The total number of nodes that are running updated daemon pod -# TYPE kube_daemonset_status_updated_number_scheduled gauge -kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_status_updated_number_scheduled{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_daemonset_metadata_generation gauge -kube_daemonset_metadata_generation{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_metadata_generation{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_daemonset_annotations gauge -kube_daemonset_annotations{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_annotations{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_annotations{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_daemonset_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_daemonset_labels gauge -kube_daemonset_labels{namespace="kube-system",daemonset="fluentd-elasticsearch"} 1 -kube_daemonset_labels{namespace="kube-system",daemonset="kube-proxy"} 1 -kube_daemonset_labels{namespace="kube-system",daemonset="kindnet"} 1 -# HELP kube_deployment_created [STABLE] Unix creation timestamp -# TYPE kube_deployment_created gauge -kube_deployment_created{namespace="kube-system",deployment="coredns"} 1.69156634e+09 -kube_deployment_created{namespace="local-path-storage",deployment="local-path-provisioner"} 1.691566342e+09 -kube_deployment_created{namespace="kube-system",deployment="kube-state-metrics"} 1.691568526e+09 -# HELP kube_deployment_status_replicas [STABLE] The number of replicas per deployment. -# TYPE kube_deployment_status_replicas gauge -kube_deployment_status_replicas{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_status_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_replicas_ready [STABLE] The number of ready replicas per deployment. -# TYPE kube_deployment_status_replicas_ready gauge -kube_deployment_status_replicas_ready{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_status_replicas_ready{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_replicas_ready{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_replicas_available [STABLE] The number of available replicas per deployment. -# TYPE kube_deployment_status_replicas_available gauge -kube_deployment_status_replicas_available{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_status_replicas_available{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_replicas_available{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_replicas_unavailable [STABLE] The number of unavailable replicas per deployment. -# TYPE kube_deployment_status_replicas_unavailable gauge -kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="coredns"} 0 -kube_deployment_status_replicas_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 -kube_deployment_status_replicas_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 -# HELP kube_deployment_status_replicas_updated [STABLE] The number of updated replicas per deployment. -# TYPE kube_deployment_status_replicas_updated gauge -kube_deployment_status_replicas_updated{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_status_replicas_updated{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_replicas_updated{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_observed_generation [STABLE] The generation observed by the deployment controller. -# TYPE kube_deployment_status_observed_generation gauge -kube_deployment_status_observed_generation{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_status_observed_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_status_observed_generation{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_status_condition [STABLE] The current status conditions of a deployment. -# TYPE kube_deployment_status_condition gauge -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Available",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="kube-state-metrics",condition="Progressing",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Available",status="unknown"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="true"} 1 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="false"} 0 -kube_deployment_status_condition{namespace="kube-system",deployment="coredns",condition="Progressing",status="unknown"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="true"} 1 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="false"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Available",status="unknown"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="true"} 1 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="false"} 0 -kube_deployment_status_condition{namespace="local-path-storage",deployment="local-path-provisioner",condition="Progressing",status="unknown"} 0 -# HELP kube_deployment_spec_replicas [STABLE] Number of desired pods for a deployment. -# TYPE kube_deployment_spec_replicas gauge -kube_deployment_spec_replicas{namespace="kube-system",deployment="coredns"} 2 -kube_deployment_spec_replicas{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_spec_replicas{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_spec_paused [STABLE] Whether the deployment is paused and will not be processed by the deployment controller. -# TYPE kube_deployment_spec_paused gauge -kube_deployment_spec_paused{namespace="local-path-storage",deployment="local-path-provisioner"} 0 -kube_deployment_spec_paused{namespace="kube-system",deployment="kube-state-metrics"} 0 -kube_deployment_spec_paused{namespace="kube-system",deployment="coredns"} 0 -# HELP kube_deployment_spec_strategy_rollingupdate_max_unavailable [STABLE] Maximum number of unavailable replicas during a rolling update of a deployment. -# TYPE kube_deployment_spec_strategy_rollingupdate_max_unavailable gauge -kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="local-path-storage",deployment="local-path-provisioner"} 0 -kube_deployment_spec_strategy_rollingupdate_max_unavailable{namespace="kube-system",deployment="kube-state-metrics"} 0 -# HELP kube_deployment_spec_strategy_rollingupdate_max_surge [STABLE] Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a deployment. -# TYPE kube_deployment_spec_strategy_rollingupdate_max_surge gauge -kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_spec_strategy_rollingupdate_max_surge{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_deployment_metadata_generation gauge -kube_deployment_metadata_generation{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_metadata_generation{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_metadata_generation{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_deployment_annotations gauge -kube_deployment_annotations{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_annotations{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_annotations{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_deployment_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_deployment_labels gauge -kube_deployment_labels{namespace="kube-system",deployment="coredns"} 1 -kube_deployment_labels{namespace="local-path-storage",deployment="local-path-provisioner"} 1 -kube_deployment_labels{namespace="kube-system",deployment="kube-state-metrics"} 1 -# HELP kube_endpoint_info [STABLE] Information about endpoint. -# TYPE kube_endpoint_info gauge -kube_endpoint_info{namespace="default",endpoint="kubernetes"} 1 -kube_endpoint_info{namespace="kube-system",endpoint="kube-dns"} 1 -kube_endpoint_info{namespace="kube-system",endpoint="kube-state-metrics"} 1 -# HELP kube_endpoint_created [STABLE] Unix creation timestamp -# TYPE kube_endpoint_created gauge -kube_endpoint_created{namespace="default",endpoint="kubernetes"} 1.691566338e+09 -kube_endpoint_created{namespace="kube-system",endpoint="kube-dns"} 1.691566354e+09 -kube_endpoint_created{namespace="kube-system",endpoint="kube-state-metrics"} 1.691568526e+09 -# HELP kube_endpoint_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_endpoint_annotations gauge -kube_endpoint_annotations{namespace="default",endpoint="kubernetes"} 1 -kube_endpoint_annotations{namespace="kube-system",endpoint="kube-dns"} 1 -kube_endpoint_annotations{namespace="kube-system",endpoint="kube-state-metrics"} 1 -# HELP kube_endpoint_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_endpoint_labels gauge -kube_endpoint_labels{namespace="default",endpoint="kubernetes"} 1 -kube_endpoint_labels{namespace="kube-system",endpoint="kube-dns"} 1 -kube_endpoint_labels{namespace="kube-system",endpoint="kube-state-metrics"} 1 -# HELP kube_endpoint_address_available (Deprecated since v2.6.0) Number of addresses available in endpoint. -# TYPE kube_endpoint_address_available gauge -kube_endpoint_address_available{namespace="kube-system",endpoint="kube-dns"} 6 -kube_endpoint_address_available{namespace="kube-system",endpoint="kube-state-metrics"} 2 -kube_endpoint_address_available{namespace="default",endpoint="kubernetes"} 1 -# HELP kube_endpoint_address_not_ready (Deprecated since v2.6.0) Number of addresses not ready in endpoint -# TYPE kube_endpoint_address_not_ready gauge -kube_endpoint_address_not_ready{namespace="default",endpoint="kubernetes"} 0 -kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-dns"} 0 -kube_endpoint_address_not_ready{namespace="kube-system",endpoint="kube-state-metrics"} 0 -# HELP kube_endpoint_address [STABLE] Information about Endpoint available and non available addresses. -# TYPE kube_endpoint_address gauge -kube_endpoint_address{namespace="default",endpoint="kubernetes",ip="172.18.0.2",ready="true"} 1 -kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.2",ready="true"} 1 -kube_endpoint_address{namespace="kube-system",endpoint="kube-dns",ip="10.244.0.3",ready="true"} 1 -kube_endpoint_address{namespace="kube-system",endpoint="kube-state-metrics",ip="10.244.0.18",ready="true"} 1 -# HELP kube_endpoint_ports [STABLE] Information about the Endpoint ports. -# TYPE kube_endpoint_ports gauge -kube_endpoint_ports{namespace="default",endpoint="kubernetes",port_name="https",port_protocol="TCP",port_number="6443"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns-tcp",port_protocol="TCP",port_number="53"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="dns",port_protocol="UDP",port_number="53"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-dns",port_name="metrics",port_protocol="TCP",port_number="9153"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="telemetry",port_protocol="TCP",port_number="8081"} 1 -kube_endpoint_ports{namespace="kube-system",endpoint="kube-state-metrics",port_name="http-metrics",port_protocol="TCP",port_number="8080"} 1 -# HELP kube_horizontalpodautoscaler_info Information about this autoscaler. -# TYPE kube_horizontalpodautoscaler_info gauge -# HELP kube_horizontalpodautoscaler_metadata_generation [STABLE] The generation observed by the HorizontalPodAutoscaler controller. -# TYPE kube_horizontalpodautoscaler_metadata_generation gauge -# HELP kube_horizontalpodautoscaler_spec_max_replicas [STABLE] Upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. -# TYPE kube_horizontalpodautoscaler_spec_max_replicas gauge -# HELP kube_horizontalpodautoscaler_spec_min_replicas [STABLE] Lower limit for the number of pods that can be set by the autoscaler, default 1. -# TYPE kube_horizontalpodautoscaler_spec_min_replicas gauge -# HELP kube_horizontalpodautoscaler_spec_target_metric The metric specifications used by this autoscaler when calculating the desired replica count. -# TYPE kube_horizontalpodautoscaler_spec_target_metric gauge -# HELP kube_horizontalpodautoscaler_status_target_metric The current metric status used by this autoscaler when calculating the desired replica count. -# TYPE kube_horizontalpodautoscaler_status_target_metric gauge -# HELP kube_horizontalpodautoscaler_status_current_replicas [STABLE] Current number of replicas of pods managed by this autoscaler. -# TYPE kube_horizontalpodautoscaler_status_current_replicas gauge -# HELP kube_horizontalpodautoscaler_status_desired_replicas [STABLE] Desired number of replicas of pods managed by this autoscaler. -# TYPE kube_horizontalpodautoscaler_status_desired_replicas gauge -# HELP kube_horizontalpodautoscaler_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_horizontalpodautoscaler_annotations gauge -# HELP kube_horizontalpodautoscaler_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_horizontalpodautoscaler_labels gauge -# HELP kube_horizontalpodautoscaler_status_condition [STABLE] The condition of this autoscaler. -# TYPE kube_horizontalpodautoscaler_status_condition gauge -# HELP kube_ingress_info [STABLE] Information about ingress. -# TYPE kube_ingress_info gauge -# HELP kube_ingress_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_ingress_annotations gauge -# HELP kube_ingress_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_ingress_labels gauge -# HELP kube_ingress_created [STABLE] Unix creation timestamp -# TYPE kube_ingress_created gauge -# HELP kube_ingress_metadata_resource_version Resource version representing a specific version of ingress. -# TYPE kube_ingress_metadata_resource_version gauge -# HELP kube_ingress_path [STABLE] Ingress host, paths and backend service information. -# TYPE kube_ingress_path gauge -# HELP kube_ingress_tls [STABLE] Ingress TLS host and secret information. -# TYPE kube_ingress_tls gauge -# HELP kube_job_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_job_annotations gauge -kube_job_annotations{namespace="default",job_name="hello"} 1 -kube_job_annotations{namespace="default",job_name="hello-28192809"} 1 -# HELP kube_job_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_job_labels gauge -kube_job_labels{namespace="default",job_name="hello"} 1 -kube_job_labels{namespace="default",job_name="hello-28192809"} 1 -# HELP kube_job_info [STABLE] Information about job. -# TYPE kube_job_info gauge -kube_job_info{namespace="default",job_name="hello"} 1 -kube_job_info{namespace="default",job_name="hello-28192809"} 1 -# HELP kube_job_created [STABLE] Unix creation timestamp -# TYPE kube_job_created gauge -kube_job_created{namespace="default",job_name="hello-28192809"} 1.69156854e+09 -kube_job_created{namespace="default",job_name="hello"} 1.691568526e+09 -# HELP kube_job_spec_parallelism [STABLE] The maximum desired number of pods the job should run at any given time. -# TYPE kube_job_spec_parallelism gauge -kube_job_spec_parallelism{namespace="default",job_name="hello"} 1 -kube_job_spec_parallelism{namespace="default",job_name="hello-28192809"} 1 -# HELP kube_job_spec_completions [STABLE] The desired number of successfully finished pods the job should be run with. -# TYPE kube_job_spec_completions gauge -kube_job_spec_completions{namespace="default",job_name="hello"} 1 -kube_job_spec_completions{namespace="default",job_name="hello-28192809"} 1 -# HELP kube_job_spec_active_deadline_seconds [STABLE] The duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. -# TYPE kube_job_spec_active_deadline_seconds gauge -# HELP kube_job_status_succeeded [STABLE] The number of pods which reached Phase Succeeded. -# TYPE kube_job_status_succeeded gauge -kube_job_status_succeeded{namespace="default",job_name="hello"} 1 -kube_job_status_succeeded{namespace="default",job_name="hello-28192809"} 1 -# HELP kube_job_status_failed [STABLE] The number of pods which reached Phase Failed and the reason for failure. -# TYPE kube_job_status_failed gauge -kube_job_status_failed{namespace="default",job_name="hello"} 0 -kube_job_status_failed{namespace="default",job_name="hello-28192809"} 0 -# HELP kube_job_status_active [STABLE] The number of actively running pods. -# TYPE kube_job_status_active gauge -kube_job_status_active{namespace="default",job_name="hello"} 0 -kube_job_status_active{namespace="default",job_name="hello-28192809"} 0 -# HELP kube_job_complete [STABLE] The job has completed its execution. -# TYPE kube_job_complete gauge -kube_job_complete{namespace="default",job_name="hello",condition="true"} 1 -kube_job_complete{namespace="default",job_name="hello",condition="false"} 0 -kube_job_complete{namespace="default",job_name="hello",condition="unknown"} 0 -kube_job_complete{namespace="default",job_name="hello-28192809",condition="true"} 1 -kube_job_complete{namespace="default",job_name="hello-28192809",condition="false"} 0 -kube_job_complete{namespace="default",job_name="hello-28192809",condition="unknown"} 0 -# HELP kube_job_failed [STABLE] The job has failed its execution. -# TYPE kube_job_failed gauge -# HELP kube_job_status_start_time [STABLE] StartTime represents time when the job was acknowledged by the Job Manager. -# TYPE kube_job_status_start_time gauge -kube_job_status_start_time{namespace="default",job_name="hello"} 1.691568526e+09 -kube_job_status_start_time{namespace="default",job_name="hello-28192809"} 1.69156854e+09 -# HELP kube_job_status_completion_time [STABLE] CompletionTime represents time when the job was completed. -# TYPE kube_job_status_completion_time gauge -kube_job_status_completion_time{namespace="default",job_name="hello"} 1.691568531e+09 -kube_job_status_completion_time{namespace="default",job_name="hello-28192809"} 1.691568544e+09 -# HELP kube_job_owner [STABLE] Information about the Job's owner. -# TYPE kube_job_owner gauge -kube_job_owner{namespace="default",job_name="hello",owner_kind="",owner_name="",owner_is_controller=""} 1 -kube_job_owner{namespace="default",job_name="hello-28192809",owner_kind="CronJob",owner_name="hello",owner_is_controller="true"} 1 -# HELP kube_lease_owner Information about the Lease's owner. -# TYPE kube_lease_owner gauge -kube_lease_owner{lease="kube-controller-manager",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_0b4da5ad-3d3f-46e1-a9a7-f3de4500210d"} 1 -kube_lease_owner{lease="kind-control-plane",owner_kind="Node",owner_name="kind-control-plane",namespace="kube-node-lease",lease_holder="kind-control-plane"} 1 -kube_lease_owner{lease="kube-scheduler",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kind-control-plane_1ccae8c1-4c4b-4f22-ba9f-4001d58bbbeb"} 1 -kube_lease_owner{lease="kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a",owner_kind="",owner_name="",namespace="kube-system",lease_holder="kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a_eb429ff6-d4a0-49b6-ae35-4471a79c6c25"} 1 -# HELP kube_lease_renew_time Kube lease renew time. -# TYPE kube_lease_renew_time gauge -kube_lease_renew_time{lease="kind-control-plane",namespace="kube-node-lease"} 1.691568555e+09 -kube_lease_renew_time{lease="kube-scheduler",namespace="kube-system"} 1.691568554e+09 -kube_lease_renew_time{lease="kube-apiserver-c4vwjftbvpc5os2vvzle4qg27a",namespace="kube-system"} 1.691568549e+09 -kube_lease_renew_time{lease="kube-controller-manager",namespace="kube-system"} 1.691568553e+09 -# HELP kube_limitrange [STABLE] Information about limit range. -# TYPE kube_limitrange gauge -# HELP kube_limitrange_created [STABLE] Unix creation timestamp -# TYPE kube_limitrange_created gauge -# HELP kube_mutatingwebhookconfiguration_info Information about the MutatingWebhookConfiguration. -# TYPE kube_mutatingwebhookconfiguration_info gauge -# HELP kube_mutatingwebhookconfiguration_created Unix creation timestamp. -# TYPE kube_mutatingwebhookconfiguration_created gauge -# HELP kube_mutatingwebhookconfiguration_metadata_resource_version Resource version representing a specific version of the MutatingWebhookConfiguration. -# TYPE kube_mutatingwebhookconfiguration_metadata_resource_version gauge -# HELP kube_namespace_created [STABLE] Unix creation timestamp -# TYPE kube_namespace_created gauge -kube_namespace_created{namespace="kube-system"} 1.691566337e+09 -kube_namespace_created{namespace="kube-public"} 1.691566337e+09 -kube_namespace_created{namespace="kube-node-lease"} 1.691566337e+09 -kube_namespace_created{namespace="default"} 1.691566338e+09 -kube_namespace_created{namespace="local-path-storage"} 1.691566342e+09 -# HELP kube_namespace_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_namespace_annotations gauge -kube_namespace_annotations{namespace="kube-system"} 1 -kube_namespace_annotations{namespace="kube-public"} 1 -kube_namespace_annotations{namespace="kube-node-lease"} 1 -kube_namespace_annotations{namespace="default"} 1 -kube_namespace_annotations{namespace="local-path-storage"} 1 -# HELP kube_namespace_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_namespace_labels gauge -kube_namespace_labels{namespace="default"} 1 -kube_namespace_labels{namespace="local-path-storage"} 1 -kube_namespace_labels{namespace="kube-system"} 1 -kube_namespace_labels{namespace="kube-public"} 1 -kube_namespace_labels{namespace="kube-node-lease"} 1 -# HELP kube_namespace_status_phase [STABLE] kubernetes namespace status phase. -# TYPE kube_namespace_status_phase gauge -kube_namespace_status_phase{namespace="local-path-storage",phase="Active"} 1 -kube_namespace_status_phase{namespace="local-path-storage",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="kube-system",phase="Active"} 1 -kube_namespace_status_phase{namespace="kube-system",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="kube-public",phase="Active"} 1 -kube_namespace_status_phase{namespace="kube-public",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="kube-node-lease",phase="Active"} 1 -kube_namespace_status_phase{namespace="kube-node-lease",phase="Terminating"} 0 -kube_namespace_status_phase{namespace="default",phase="Active"} 1 -kube_namespace_status_phase{namespace="default",phase="Terminating"} 0 -# HELP kube_namespace_status_condition The condition of a namespace. -# TYPE kube_namespace_status_condition gauge -# HELP kube_networkpolicy_created Unix creation timestamp of network policy -# TYPE kube_networkpolicy_created gauge -# HELP kube_networkpolicy_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_networkpolicy_annotations gauge -# HELP kube_networkpolicy_labels Kubernetes labels converted to Prometheus labels. -# TYPE kube_networkpolicy_labels gauge -# HELP kube_networkpolicy_spec_ingress_rules Number of ingress rules on the networkpolicy -# TYPE kube_networkpolicy_spec_ingress_rules gauge -# HELP kube_networkpolicy_spec_egress_rules Number of egress rules on the networkpolicy -# TYPE kube_networkpolicy_spec_egress_rules gauge -# HELP kube_node_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_node_annotations gauge -kube_node_annotations{node="kind-control-plane"} 1 -# HELP kube_node_created [STABLE] Unix creation timestamp -# TYPE kube_node_created gauge -kube_node_created{node="kind-control-plane"} 1.691566337e+09 -# HELP kube_node_deletion_timestamp Unix deletion timestamp -# TYPE kube_node_deletion_timestamp gauge -# HELP kube_node_info [STABLE] Information about a cluster node. -# TYPE kube_node_info gauge -kube_node_info{node="kind-control-plane",kernel_version="5.15.49-linuxkit-pr",os_image="Ubuntu 22.04.2 LTS",container_runtime_version="containerd://1.6.19-46-g941215f49",kubelet_version="v1.26.3",kubeproxy_version="v1.26.3",provider_id="kind://docker/kind/kind-control-plane",pod_cidr="10.244.0.0/24",system_uuid="da6f977ba55a4ef5a3240dbd88134863",internal_ip="172.18.0.2"} 1 -# HELP kube_node_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_node_labels gauge -kube_node_labels{node="kind-control-plane"} 1 -# HELP kube_node_role The role of a cluster node. -# TYPE kube_node_role gauge -kube_node_role{node="kind-control-plane",role="control-plane"} 1 -# HELP kube_node_spec_taint [STABLE] The taint of a cluster node. -# TYPE kube_node_spec_taint gauge -# HELP kube_node_spec_unschedulable [STABLE] Whether a node can schedule new pods. -# TYPE kube_node_spec_unschedulable gauge -kube_node_spec_unschedulable{node="kind-control-plane"} 0 -# HELP kube_node_status_allocatable [STABLE] The allocatable for different resources of a node that are available for scheduling. -# TYPE kube_node_status_allocatable gauge -kube_node_status_allocatable{node="kind-control-plane",resource="cpu",unit="core"} 8 -kube_node_status_allocatable{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 6.7317051392e+10 -kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_1Gi",unit="byte"} 0 -kube_node_status_allocatable{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 -kube_node_status_allocatable{node="kind-control-plane",resource="memory",unit="byte"} 1.6259682304e+10 -kube_node_status_allocatable{node="kind-control-plane",resource="pods",unit="integer"} 110 -# HELP kube_node_status_capacity [STABLE] The capacity for different resources of a node. -# TYPE kube_node_status_capacity gauge -kube_node_status_capacity{node="kind-control-plane",resource="ephemeral_storage",unit="byte"} 6.7317051392e+10 -kube_node_status_capacity{node="kind-control-plane",resource="hugepages_1Gi",unit="byte"} 0 -kube_node_status_capacity{node="kind-control-plane",resource="hugepages_2Mi",unit="byte"} 0 -kube_node_status_capacity{node="kind-control-plane",resource="memory",unit="byte"} 1.6259682304e+10 -kube_node_status_capacity{node="kind-control-plane",resource="pods",unit="integer"} 110 -kube_node_status_capacity{node="kind-control-plane",resource="cpu",unit="core"} 8 -# HELP kube_node_status_condition [STABLE] The condition of a cluster node. -# TYPE kube_node_status_condition gauge -kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="true"} 0 -kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="false"} 1 -kube_node_status_condition{node="kind-control-plane",condition="MemoryPressure",status="unknown"} 0 -kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="true"} 0 -kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="false"} 1 -kube_node_status_condition{node="kind-control-plane",condition="DiskPressure",status="unknown"} 0 -kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="true"} 0 -kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="false"} 1 -kube_node_status_condition{node="kind-control-plane",condition="PIDPressure",status="unknown"} 0 -kube_node_status_condition{node="kind-control-plane",condition="Ready",status="true"} 1 -kube_node_status_condition{node="kind-control-plane",condition="Ready",status="false"} 0 -kube_node_status_condition{node="kind-control-plane",condition="Ready",status="unknown"} 0 -# HELP kube_persistentvolumeclaim_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_persistentvolumeclaim_labels gauge -kube_persistentvolumeclaim_labels{namespace="default",persistentvolumeclaim="task-pv-claim"} 1 -# HELP kube_persistentvolumeclaim_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_persistentvolumeclaim_annotations gauge -kube_persistentvolumeclaim_annotations{namespace="default",persistentvolumeclaim="task-pv-claim"} 1 -# HELP kube_persistentvolumeclaim_info [STABLE] Information about persistent volume claim. -# TYPE kube_persistentvolumeclaim_info gauge -kube_persistentvolumeclaim_info{namespace="default",persistentvolumeclaim="task-pv-claim",storageclass="generic",volumename="task-pv-volume"} 1 -# HELP kube_persistentvolumeclaim_status_phase [STABLE] The phase the persistent volume claim is currently in. -# TYPE kube_persistentvolumeclaim_status_phase gauge -kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Lost"} 0 -kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Bound"} 1 -kube_persistentvolumeclaim_status_phase{namespace="default",persistentvolumeclaim="task-pv-claim",phase="Pending"} 0 -# HELP kube_persistentvolumeclaim_resource_requests_storage_bytes [STABLE] The capacity of storage requested by the persistent volume claim. -# TYPE kube_persistentvolumeclaim_resource_requests_storage_bytes gauge -kube_persistentvolumeclaim_resource_requests_storage_bytes{namespace="default",persistentvolumeclaim="task-pv-claim"} 1024 -# HELP kube_persistentvolumeclaim_access_mode [STABLE] The access mode(s) specified by the persistent volume claim. -# TYPE kube_persistentvolumeclaim_access_mode gauge -kube_persistentvolumeclaim_access_mode{namespace="default",persistentvolumeclaim="task-pv-claim",access_mode="ReadWriteOnce"} 1 -# HELP kube_persistentvolumeclaim_status_condition Information about status of different conditions of persistent volume claim. -# TYPE kube_persistentvolumeclaim_status_condition gauge -# HELP kube_persistentvolumeclaim_created Unix creation timestamp -# TYPE kube_persistentvolumeclaim_created gauge -kube_persistentvolumeclaim_created{namespace="default",persistentvolumeclaim="task-pv-claim"} 1.691568526e+09 -# HELP kube_persistentvolume_claim_ref [STABLE] Information about the Persistent Volume Claim Reference. -# TYPE kube_persistentvolume_claim_ref gauge -kube_persistentvolume_claim_ref{persistentvolume="task-pv-volume",name="task-pv-claim",claim_namespace="default"} 1 -# HELP kube_persistentvolume_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_persistentvolume_annotations gauge -kube_persistentvolume_annotations{persistentvolume="task-pv-volume"} 1 -# HELP kube_persistentvolume_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_persistentvolume_labels gauge -kube_persistentvolume_labels{persistentvolume="task-pv-volume"} 1 -# HELP kube_persistentvolume_status_phase [STABLE] The phase indicates if a volume is available, bound to a claim, or released by a claim. -# TYPE kube_persistentvolume_status_phase gauge -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Pending"} 0 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Available"} 0 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Bound"} 1 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Released"} 0 -kube_persistentvolume_status_phase{persistentvolume="task-pv-volume",phase="Failed"} 0 -# HELP kube_persistentvolume_info [STABLE] Information about persistentvolume. -# TYPE kube_persistentvolume_info gauge -kube_persistentvolume_info{persistentvolume="task-pv-volume",storageclass="generic",gce_persistent_disk_name="",ebs_volume_id="",azure_disk_name="",fc_wwids="",fc_lun="",fc_target_wwns="",iscsi_target_portal="",iscsi_iqn="",iscsi_lun="",iscsi_initiator_name="",nfs_server="",nfs_path="",csi_driver="",csi_volume_handle="",local_path="",local_fs="",host_path="/tmp/data",host_path_type=""} 1 -# HELP kube_persistentvolume_capacity_bytes [STABLE] Persistentvolume capacity in bytes. -# TYPE kube_persistentvolume_capacity_bytes gauge -kube_persistentvolume_capacity_bytes{persistentvolume="task-pv-volume"} 2048 -# HELP kube_persistentvolume_created Unix creation timestamp -# TYPE kube_persistentvolume_created gauge -kube_persistentvolume_created{persistentvolume="task-pv-volume"} 1.691568526e+09 -# HELP kube_poddisruptionbudget_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_poddisruptionbudget_annotations gauge -# HELP kube_poddisruptionbudget_labels Kubernetes labels converted to Prometheus labels. -# TYPE kube_poddisruptionbudget_labels gauge -# HELP kube_poddisruptionbudget_created [STABLE] Unix creation timestamp -# TYPE kube_poddisruptionbudget_created gauge -# HELP kube_poddisruptionbudget_status_current_healthy [STABLE] Current number of healthy pods -# TYPE kube_poddisruptionbudget_status_current_healthy gauge -# HELP kube_poddisruptionbudget_status_desired_healthy [STABLE] Minimum desired number of healthy pods -# TYPE kube_poddisruptionbudget_status_desired_healthy gauge -# HELP kube_poddisruptionbudget_status_pod_disruptions_allowed [STABLE] Number of pod disruptions that are currently allowed -# TYPE kube_poddisruptionbudget_status_pod_disruptions_allowed gauge -# HELP kube_poddisruptionbudget_status_expected_pods [STABLE] Total number of pods counted by this disruption budget -# TYPE kube_poddisruptionbudget_status_expected_pods gauge -# HELP kube_poddisruptionbudget_status_observed_generation [STABLE] Most recent generation observed when updating this PDB status -# TYPE kube_poddisruptionbudget_status_observed_generation gauge -# HELP kube_pod_completion_time [STABLE] Completion time in unix timestamp for a pod. -# TYPE kube_pod_completion_time gauge -kube_pod_completion_time{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b"} 1.691568527e+09 -kube_pod_completion_time{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a"} 1.69156854e+09 -# HELP kube_pod_container_info [STABLE] Information about a container in a pod. -# TYPE kube_pod_container_info gauge -kube_pod_container_info{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79",container_id="containerd://a7ae8b5da39c739c3298ea9e07f24c8ddb987137244ddc1bc9b71dca542a2e76"} 1 -kube_pod_container_info{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",image_spec="docker.io/kindest/kindnetd:v20230330-48f316cd@sha256:c19d6362a6a928139820761475a38c24c0cf84d507b9ddf414a078cf627497af",image="sha256:a329ae3c2c52fe00e9c4eaf48b081cd184ee4bf9aea059e497f4965f0a8deedb",image_id="docker.io/kindest/kindnetd:v20230330-48f316cd@sha256:c19d6362a6a928139820761475a38c24c0cf84d507b9ddf414a078cf627497af",container_id="containerd://c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy",image_spec="registry.k8s.io/kube-proxy:v1.26.3",image="registry.k8s.io/kube-proxy:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:44db4d50a5f9c8efbac0d37ea974d1c0419a5928f90748d3d491a041a00c20b5",container_id="containerd://c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f"} 1 -kube_pod_container_info{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.9.3",image="registry.k8s.io/coredns/coredns:v1.9.3",image_id="sha256:5185b96f0becf59032b8e3646e99f84d9655dff3ac9e2605e0dc77f9c441ae4a",container_id="containerd://95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",container="kube-state-metrics",image_spec="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2",image="registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2",image_id="registry.k8s.io/kube-state-metrics/kube-state-metrics@sha256:5ac2e67a862cd3baa0eb4fd7683d54928fd76ea3a61cde50508922c956901d8c",container_id="containerd://d3e044cc786b110c508979573f77aa17c017bd73b19a9eca2f90c931269c8e23"} 1 -kube_pod_container_info{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch",image_spec="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image="quay.io/fluentd_elasticsearch/fluentd:v2.5.2",image_id="sha256:c896ab1149bb529ca28d76976885e04c0d754b6592f74b5478bfdcf248f84e62",container_id="containerd://d34823a90b7406d61d95530cf800bc1fbd2307f9ab6c6031da1d22ae577ca081"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler",image_spec="registry.k8s.io/kube-scheduler:v1.26.3",image="registry.k8s.io/kube-scheduler:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:3dd2337f70af979c7362b5e52bbdfcb3a5fd39c78d94d02145150cd2db86ba39",container_id="containerd://abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36"} 1 -kube_pod_container_info{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",image_spec="registry.k8s.io/coredns/coredns:v1.9.3",image="registry.k8s.io/coredns/coredns:v1.9.3",image_id="sha256:5185b96f0becf59032b8e3646e99f84d9655dff3ac9e2605e0dc77f9c441ae4a",container_id="containerd://acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver",image_spec="registry.k8s.io/kube-apiserver:v1.26.3",image="registry.k8s.io/kube-apiserver:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:ba097b515c8c40689733c0f19de377e9bf8995964b7d7150c2045f3dfd166657",container_id="containerd://146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427"} 1 -kube_pod_container_info{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner",image_spec="docker.io/kindest/local-path-provisioner:v0.0.23-kind.0@sha256:f2d0a02831ff3a03cf51343226670d5060623b43a4cfc4808bd0875b2c4b9501",image="sha256:c408b2276bb76627a6f633bf0d26052c208ebd51681c6c89866cc9647471c0bc",image_id="docker.io/kindest/local-path-provisioner:v0.0.23-kind.0@sha256:f2d0a02831ff3a03cf51343226670d5060623b43a4cfc4808bd0875b2c4b9501",container_id="containerd://0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece"} 1 -kube_pod_container_info{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",container="nginx",image_spec="docker.io/nginx:1.24.0-alpine-slim",image="docker.io/library/nginx:1.24.0-alpine-slim",image_id="docker.io/library/nginx@sha256:b8132df8c2fc73f4c1e7ce434c1ff19b134818e8173cd5e8f79c55a5f635d7e5",container_id="containerd://861bef44f73cfb196df58121080eb7705eef21dbc975526341ac6078755bb063"} 1 -kube_pod_container_info{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello",image_spec="busybox",image="docker.io/library/busybox:latest",image_id="docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79",container_id="containerd://332d23c3143978bf7924a98fd162b9e98781ffa5eb6c7a8a99e2da7c293f1910"} 1 -kube_pod_container_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager",image_spec="registry.k8s.io/kube-controller-manager:v1.26.3",image="registry.k8s.io/kube-controller-manager:v1.26.3",image_id="docker.io/library/import-2023-03-30@sha256:8dbb345de79d1c44f59a7895da702a5f71997ae72aea056609445c397b0c10dc",container_id="containerd://9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7"} 1 -kube_pod_container_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd",image_spec="registry.k8s.io/etcd:3.5.6-0",image="registry.k8s.io/etcd:3.5.6-0",image_id="sha256:fce326961ae2d51a5f726883fd59d2a8c2ccc3e45d3bb859882db58e422e59e7",container_id="containerd://a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068"} 1 -# HELP kube_pod_container_resource_limits The number of requested limit resource by a container. It is recommended to use the kube_pod_resource_limits metric exposed by kube-scheduler instead, as it is more precise. -# TYPE kube_pod_container_resource_limits gauge -kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_limits{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 -kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 -kube_pod_container_resource_limits{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 1.7825792e+08 -kube_pod_container_resource_limits{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 -# HELP kube_pod_container_resource_requests The number of requested request resource by a container. It is recommended to use the kube_pod_resource_requests metric exposed by kube-scheduler instead, as it is more precise. -# TYPE kube_pod_container_resource_requests gauge -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver",node="kind-control-plane",resource="cpu",unit="core"} 0.25 -kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd",node="kind-control-plane",resource="memory",unit="byte"} 1.048576e+08 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager",node="kind-control-plane",resource="cpu",unit="core"} 0.2 -kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni",node="kind-control-plane",resource="memory",unit="byte"} 5.24288e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns",node="kind-control-plane",resource="memory",unit="byte"} 7.340032e+07 -kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -kube_pod_container_resource_requests{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch",node="kind-control-plane",resource="memory",unit="byte"} 2.097152e+08 -kube_pod_container_resource_requests{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler",node="kind-control-plane",resource="cpu",unit="core"} 0.1 -# HELP kube_pod_container_state_started [STABLE] Start time in unix timestamp for a pod container. -# TYPE kube_pod_container_state_started gauge -kube_pod_container_state_started{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",container="kube-state-metrics"} 1.691568527e+09 -kube_pod_container_state_started{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch"} 1.691568527e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 1.691566332e+09 -kube_pod_container_state_started{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 1.69156636e+09 -kube_pod_container_state_started{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 1.69156636e+09 -kube_pod_container_state_started{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 1.691566361e+09 -kube_pod_container_state_started{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",container="nginx"} 1.691568527e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 1.691566332e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 1.691566332e+09 -kube_pod_container_state_started{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 1.691566334e+09 -kube_pod_container_state_started{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello"} 1.691568527e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 1.691566357e+09 -kube_pod_container_state_started{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 1.691566355e+09 -kube_pod_container_state_started{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello"} 1.69156854e+09 -# HELP kube_pod_container_status_last_terminated_reason Describes the last reason the container was in terminated state. -# TYPE kube_pod_container_status_last_terminated_reason gauge -# HELP kube_pod_container_status_last_terminated_exitcode Describes the exit code for the last container in terminated state. -# TYPE kube_pod_container_status_last_terminated_exitcode gauge -# HELP kube_pod_container_status_ready [STABLE] Describes whether the containers readiness check succeeded. -# TYPE kube_pod_container_status_ready gauge -kube_pod_container_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",container="kube-state-metrics"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch"} 1 -kube_pod_container_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 1 -kube_pod_container_status_ready{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",container="nginx"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 1 -kube_pod_container_status_ready{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello"} 0 -kube_pod_container_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 1 -kube_pod_container_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 1 -kube_pod_container_status_ready{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello"} 0 -# HELP kube_pod_container_status_restarts_total [STABLE] The number of container restarts per container. -# TYPE kube_pod_container_status_restarts_total counter -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",container="kube-state-metrics"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_restarts_total{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 0 -kube_pod_container_status_restarts_total{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",container="nginx"} 0 -kube_pod_container_status_restarts_total{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 0 -# HELP kube_pod_container_status_running [STABLE] Describes whether the container is currently in running state. -# TYPE kube_pod_container_status_running gauge -kube_pod_container_status_running{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 1 -kube_pod_container_status_running{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello"} 0 -kube_pod_container_status_running{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",container="kube-state-metrics"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch"} 1 -kube_pod_container_status_running{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 1 -kube_pod_container_status_running{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",container="nginx"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 1 -kube_pod_container_status_running{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 1 -kube_pod_container_status_running{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello"} 0 -# HELP kube_pod_container_status_terminated [STABLE] Describes whether the container is currently in terminated state. -# TYPE kube_pod_container_status_terminated gauge -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",container="kube-state-metrics"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 0 -kube_pod_container_status_terminated{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 0 -kube_pod_container_status_terminated{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",container="nginx"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 0 -kube_pod_container_status_terminated{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello"} 1 -kube_pod_container_status_terminated{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 0 -kube_pod_container_status_terminated{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 0 -kube_pod_container_status_terminated{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello"} 1 -# HELP kube_pod_container_status_terminated_reason Describes the reason the container is currently in terminated state. -# TYPE kube_pod_container_status_terminated_reason gauge -kube_pod_container_status_terminated_reason{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello",reason="Completed"} 1 -kube_pod_container_status_terminated_reason{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello",reason="Completed"} 1 -# HELP kube_pod_container_status_waiting [STABLE] Describes whether the container is currently in waiting state. -# TYPE kube_pod_container_status_waiting gauge -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",container="kube-proxy"} 0 -kube_pod_container_status_waiting{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",container="hello"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",container="kindnet-cni"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",container="coredns"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",container="coredns"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",container="kube-state-metrics"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",container="fluentd-elasticsearch"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",container="kube-scheduler"} 0 -kube_pod_container_status_waiting{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",container="nginx"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",container="kube-apiserver"} 0 -kube_pod_container_status_waiting{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",container="local-path-provisioner"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",container="etcd"} 0 -kube_pod_container_status_waiting{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",container="hello"} 0 -kube_pod_container_status_waiting{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",container="kube-controller-manager"} 0 -# HELP kube_pod_container_status_waiting_reason [STABLE] Describes the reason the container is currently in waiting state. -# TYPE kube_pod_container_status_waiting_reason gauge -# HELP kube_pod_created [STABLE] Unix creation timestamp -# TYPE kube_pod_created gauge -kube_pod_created{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783"} 1.691568526e+09 -kube_pod_created{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.691566341e+09 -kube_pod_created{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.691566354e+09 -kube_pod_created{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.691566354e+09 -kube_pod_created{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9"} 1.691568526e+09 -kube_pod_created{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566354e+09 -kube_pod_created{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36"} 1.691568526e+09 -kube_pod_created{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.69156634e+09 -kube_pod_created{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566341e+09 -kube_pod_created{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.69156634e+09 -kube_pod_created{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b"} 1.691568526e+09 -kube_pod_created{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566354e+09 -kube_pod_created{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566354e+09 -kube_pod_created{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a"} 1.69156854e+09 -# HELP kube_pod_deletion_timestamp Unix deletion timestamp -# TYPE kube_pod_deletion_timestamp gauge -# HELP kube_pod_info [STABLE] Information about pod. -# TYPE kube_pod_info gauge -kube_pod_info{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",host_ip="172.18.0.2",pod_ip="10.244.0.20",node="kind-control-plane",created_by_kind="Job",created_by_name="hello",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kindnet",priority_class="",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="kube-proxy",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",host_ip="172.18.0.2",pod_ip="10.244.0.22",node="kind-control-plane",created_by_kind="Job",created_by_name="hello-28192809",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",host_ip="172.18.0.2",pod_ip="10.244.0.21",node="kind-control-plane",created_by_kind="DaemonSet",created_by_name="fluentd-elasticsearch",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -kube_pod_info{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",host_ip="172.18.0.2",pod_ip="10.244.0.2",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-787d4945fb",priority_class="system-cluster-critical",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",host_ip="172.18.0.2",pod_ip="10.244.0.3",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="coredns-787d4945fb",priority_class="system-cluster-critical",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",host_ip="172.18.0.2",pod_ip="10.244.0.18",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="kube-state-metrics-7bc9d484b6",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",host_ip="172.18.0.2",pod_ip="10.244.0.4",node="kind-control-plane",created_by_kind="ReplicaSet",created_by_name="local-path-provisioner-75f5b54ffd",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",host_ip="172.18.0.2",pod_ip="10.244.0.19",node="kind-control-plane",created_by_kind="StatefulSet",created_by_name="web",priority_class="",host_network="false"} 1 -kube_pod_info{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",host_ip="172.18.0.2",pod_ip="172.18.0.2",node="kind-control-plane",created_by_kind="Node",created_by_name="kind-control-plane",priority_class="system-node-critical",host_network="true"} 1 -# HELP kube_pod_ips Pod IP addresses -# TYPE kube_pod_ips gauge -kube_pod_ips{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",ip="10.244.0.4",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",ip="10.244.0.19",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",ip="10.244.0.20",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",ip="10.244.0.22",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",ip="172.18.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",ip="10.244.0.2",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",ip="10.244.0.3",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",ip="10.244.0.18",ip_family="4"} 1 -kube_pod_ips{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",ip="10.244.0.21",ip_family="4"} 1 -# HELP kube_pod_init_container_info [STABLE] Information about an init container in a pod. -# TYPE kube_pod_init_container_info gauge -# HELP kube_pod_init_container_resource_limits The number of requested limit resource by an init container. -# TYPE kube_pod_init_container_resource_limits gauge -# HELP kube_pod_init_container_resource_requests The number of requested request resource by an init container. -# TYPE kube_pod_init_container_resource_requests gauge -# HELP kube_pod_init_container_status_last_terminated_reason Describes the last reason the init container was in terminated state. -# TYPE kube_pod_init_container_status_last_terminated_reason gauge -# HELP kube_pod_init_container_status_ready [STABLE] Describes whether the init containers readiness check succeeded. -# TYPE kube_pod_init_container_status_ready gauge -# HELP kube_pod_init_container_status_restarts_total [STABLE] The number of restarts for the init container. -# TYPE kube_pod_init_container_status_restarts_total counter -# HELP kube_pod_init_container_status_running [STABLE] Describes whether the init container is currently in running state. -# TYPE kube_pod_init_container_status_running gauge -# HELP kube_pod_init_container_status_terminated [STABLE] Describes whether the init container is currently in terminated state. -# TYPE kube_pod_init_container_status_terminated gauge -# HELP kube_pod_init_container_status_terminated_reason Describes the reason the init container is currently in terminated state. -# TYPE kube_pod_init_container_status_terminated_reason gauge -# HELP kube_pod_init_container_status_waiting [STABLE] Describes whether the init container is currently in waiting state. -# TYPE kube_pod_init_container_status_waiting gauge -# HELP kube_pod_init_container_status_waiting_reason Describes the reason the init container is currently in waiting state. -# TYPE kube_pod_init_container_status_waiting_reason gauge -# HELP kube_pod_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_pod_annotations gauge -kube_pod_annotations{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9"} 1 -kube_pod_annotations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1 -kube_pod_annotations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1 -kube_pod_annotations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1 -kube_pod_annotations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1 -kube_pod_annotations{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1 -kube_pod_annotations{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1 -kube_pod_annotations{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b"} 1 -kube_pod_annotations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1 -kube_pod_annotations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1 -kube_pod_annotations{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a"} 1 -# HELP kube_pod_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_pod_labels gauge -kube_pod_labels{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1 -kube_pod_labels{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1 -kube_pod_labels{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9"} 1 -kube_pod_labels{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783"} 1 -kube_pod_labels{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1 -kube_pod_labels{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1 -kube_pod_labels{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1 -kube_pod_labels{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b"} 1 -kube_pod_labels{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1 -kube_pod_labels{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1 -kube_pod_labels{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a"} 1 -# HELP kube_pod_overhead_cpu_cores The pod overhead in regards to cpu cores associated with running a pod. -# TYPE kube_pod_overhead_cpu_cores gauge -# HELP kube_pod_overhead_memory_bytes The pod overhead in regards to memory associated with running a pod. -# TYPE kube_pod_overhead_memory_bytes gauge -# HELP kube_pod_owner [STABLE] Information about the Pod's owner. -# TYPE kube_pod_owner gauge -kube_pod_owner{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",owner_kind="ReplicaSet",owner_name="local-path-provisioner-75f5b54ffd",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",owner_kind="StatefulSet",owner_name="web",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",owner_kind="Job",owner_name="hello",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",owner_kind="DaemonSet",owner_name="kindnet",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",owner_kind="DaemonSet",owner_name="kube-proxy",owner_is_controller="true"} 1 -kube_pod_owner{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",owner_kind="Job",owner_name="hello-28192809",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",owner_kind="Node",owner_name="kind-control-plane",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",owner_kind="ReplicaSet",owner_name="coredns-787d4945fb",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",owner_kind="ReplicaSet",owner_name="coredns-787d4945fb",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",owner_kind="ReplicaSet",owner_name="kube-state-metrics-7bc9d484b6",owner_is_controller="true"} 1 -kube_pod_owner{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",owner_kind="DaemonSet",owner_name="fluentd-elasticsearch",owner_is_controller="true"} 1 -# HELP kube_pod_restart_policy [STABLE] Describes the restart policy in use by this pod. -# TYPE kube_pod_restart_policy gauge -kube_pod_restart_policy{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",type="OnFailure"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",type="OnFailure"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",type="Always"} 1 -kube_pod_restart_policy{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",type="Always"} 1 -kube_pod_restart_policy{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",type="Always"} 1 -kube_pod_restart_policy{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",type="Always"} 1 -# HELP kube_pod_runtimeclass_name_info The runtimeclass associated with the pod. -# TYPE kube_pod_runtimeclass_name_info gauge -# HELP kube_pod_spec_volumes_persistentvolumeclaims_info [STABLE] Information about persistentvolumeclaim volumes in a pod. -# TYPE kube_pod_spec_volumes_persistentvolumeclaims_info gauge -# HELP kube_pod_spec_volumes_persistentvolumeclaims_readonly [STABLE] Describes whether a persistentvolumeclaim is mounted read only. -# TYPE kube_pod_spec_volumes_persistentvolumeclaims_readonly gauge -# HELP kube_pod_start_time [STABLE] Start time in unix timestamp for a pod. -# TYPE kube_pod_start_time gauge -kube_pod_start_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566358e+09 -kube_pod_start_time{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36"} 1.691568526e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566341e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566341e+09 -kube_pod_start_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.69156634e+09 -kube_pod_start_time{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b"} 1.691568526e+09 -kube_pod_start_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566354e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566354e+09 -kube_pod_start_time{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a"} 1.69156854e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.69156634e+09 -kube_pod_start_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.691566358e+09 -kube_pod_start_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.691566358e+09 -kube_pod_start_time{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9"} 1.691568526e+09 -kube_pod_start_time{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783"} 1.691568526e+09 -# HELP kube_pod_status_phase [STABLE] The pods current phase. -# TYPE kube_pod_status_phase gauge -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Pending"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Failed"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Unknown"} 0 -kube_pod_status_phase{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",phase="Succeeded"} 1 -kube_pod_status_phase{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",phase="Running"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",phase="Running"} 1 -kube_pod_status_phase{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",phase="Pending"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",phase="Succeeded"} 1 -kube_pod_status_phase{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",phase="Failed"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",phase="Unknown"} 0 -kube_pod_status_phase{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",phase="Running"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",phase="Running"} 1 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",phase="Pending"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",phase="Succeeded"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",phase="Failed"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",phase="Unknown"} 0 -kube_pod_status_phase{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",phase="Running"} 1 -# HELP kube_pod_status_qos_class The pods current qosClass. -# TYPE kube_pod_status_qos_class gauge -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",qos_class="Guaranteed"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",qos_class="BestEffort"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",qos_class="Burstable"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",qos_class="Guaranteed"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",qos_class="BestEffort"} 0 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",qos_class="Burstable"} 1 -kube_pod_status_qos_class{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",qos_class="Guaranteed"} 0 -# HELP kube_pod_status_ready [STABLE] Describes whether the pod is ready to serve requests. -# TYPE kube_pod_status_ready gauge -kube_pod_status_ready{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",condition="true"} 0 -kube_pod_status_ready{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",condition="false"} 1 -kube_pod_status_ready{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",condition="true"} 0 -kube_pod_status_ready{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",condition="false"} 1 -kube_pod_status_ready{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="unknown"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="true"} 1 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="false"} 0 -kube_pod_status_ready{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="unknown"} 0 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="true"} 1 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="false"} 0 -kube_pod_status_ready{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="unknown"} 0 -kube_pod_status_ready{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",condition="true"} 1 -kube_pod_status_ready{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",condition="false"} 0 -kube_pod_status_ready{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",condition="unknown"} 0 -# HELP kube_pod_status_ready_time Readiness achieved time in unix timestamp for a pod. -# TYPE kube_pod_status_ready_time gauge -kube_pod_status_ready_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566357e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566355e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.691566351e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.69156636e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.69156636e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9"} 1.691568537e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783"} 1.691568528e+09 -kube_pod_status_ready_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566362e+09 -kube_pod_status_ready_time{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36"} 1.691568528e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566343e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566345e+09 -kube_pod_status_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.691566344e+09 -# HELP kube_pod_status_container_ready_time Readiness achieved time in unix timestamp for a pod containers. -# TYPE kube_pod_status_container_ready_time gauge -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566345e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.691566344e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566357e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566355e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783"} 1.691568528e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.691566351e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.69156636e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.69156636e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9"} 1.691568537e+09 -kube_pod_status_container_ready_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566362e+09 -kube_pod_status_container_ready_time{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36"} 1.691568528e+09 -kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566343e+09 -# HELP kube_pod_status_reason The pod status reasons -# TYPE kube_pod_status_reason gauge -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="Evicted"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",reason="Evicted"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",reason="UnexpectedAdmissionError"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="Evicted"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="NodeAffinity"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="NodeLost"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="Shutdown"} 0 -kube_pod_status_reason{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",reason="UnexpectedAdmissionError"} 0 -# HELP kube_pod_status_scheduled [STABLE] Describes the status of the scheduling process for the pod. -# TYPE kube_pod_status_scheduled gauge -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="true"} 1 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="false"} 0 -kube_pod_status_scheduled{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="true"} 1 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="false"} 0 -kube_pod_status_scheduled{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",condition="unknown"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",condition="true"} 1 -kube_pod_status_scheduled{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",condition="false"} 0 -kube_pod_status_scheduled{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",condition="unknown"} 0 -# HELP kube_pod_status_scheduled_time [STABLE] Unix timestamp when pod moved into scheduled status -# TYPE kube_pod_status_scheduled_time gauge -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3"} 1.691566341e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8"} 1.69156634e+09 -kube_pod_status_scheduled_time{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b"} 1.691568526e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95"} 1.691566354e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2"} 1.691566354e+09 -kube_pod_status_scheduled_time{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a"} 1.69156854e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124"} 1.69156634e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63"} 1.691566358e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680"} 1.691566358e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9"} 1.691568526e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783"} 1.691568526e+09 -kube_pod_status_scheduled_time{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231"} 1.691566358e+09 -kube_pod_status_scheduled_time{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36"} 1.691568526e+09 -kube_pod_status_scheduled_time{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317"} 1.691566341e+09 -# HELP kube_pod_status_unschedulable [STABLE] Describes the unschedulable status for the pod. -# TYPE kube_pod_status_unschedulable gauge -# HELP kube_pod_tolerations Information about the pod tolerations -# TYPE kube_pod_tolerations gauge -kube_pod_tolerations{namespace="kube-system",pod="kube-controller-manager-kind-control-plane",uid="e446c040-10c1-43fc-9281-7491d4c643e3",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="etcd-kind-control-plane",uid="498e519b-b2d6-4edd-b3ed-92f66f79e0e8",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="hello-fddcc",uid="c5539c47-756c-4874-8d2e-58497290c63b",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kindnet-7l48v",uid="e8bb82ab-5c1f-4a4b-aef1-0178745c5d95",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-proxy-nw7gg",uid="b62b2437-3d0c-470d-a228-83c7911e3da2",key="node.kubernetes.io/network-unavailable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="hello-28192809-jbn5z",uid="04bce8e7-a3e0-4eaa-8da5-8548a0e6069a",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="5315d550-3b87-45bc-b6ff-96498561f124",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="CriticalAddonsOnly",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-rb564",uid="cb0cb62a-7f36-459b-a907-c41af8d89b63",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="CriticalAddonsOnly",operator="Exists"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="node-role.kubernetes.io/control-plane",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="coredns-787d4945fb-kx4f4",uid="61a9a53a-1158-4006-9b10-613dcbe59680",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-state-metrics-7bc9d484b6-79ph2",uid="07cbaeae-2198-4866-85a1-a21f9b6ad2a9",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node-role.kubernetes.io/control-plane",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node-role.kubernetes.io/master",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node.kubernetes.io/disk-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node.kubernetes.io/memory-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node.kubernetes.io/pid-pressure",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="kube-system",pod="fluentd-elasticsearch-fwg46",uid="d38731d0-e647-42c7-9253-f30e3b2f6783",key="node.kubernetes.io/unschedulable",operator="Exists",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node-role.kubernetes.io/control-plane",operator="Equal",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node-role.kubernetes.io/master",operator="Equal",effect="NoSchedule"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="local-path-storage",pod="local-path-provisioner-75f5b54ffd-bm5sx",uid="19b4ea67-7be8-43c6-b1b0-df36a21e0231",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",key="node.kubernetes.io/not-ready",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="default",pod="web-0",uid="bb907162-2d8f-4eef-89d6-ee3254bd3f36",key="node.kubernetes.io/unreachable",operator="Exists",effect="NoExecute",toleration_seconds="300"} 1 -kube_pod_tolerations{namespace="kube-system",pod="kube-apiserver-kind-control-plane",uid="8659fa6b-a666-43cf-a59c-9e7c78686317",operator="Exists",effect="NoExecute"} 1 -# HELP kube_replicaset_created [STABLE] Unix creation timestamp -# TYPE kube_replicaset_created gauge -kube_replicaset_created{namespace="kube-system",replicaset="coredns-787d4945fb"} 1.691566354e+09 -kube_replicaset_created{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1.691566354e+09 -kube_replicaset_created{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1.691568526e+09 -# HELP kube_replicaset_status_replicas [STABLE] The number of replicas per ReplicaSet. -# TYPE kube_replicaset_status_replicas gauge -kube_replicaset_status_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -kube_replicaset_status_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_status_replicas{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -# HELP kube_replicaset_status_fully_labeled_replicas [STABLE] The number of fully labeled replicas per ReplicaSet. -# TYPE kube_replicaset_status_fully_labeled_replicas gauge -kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -kube_replicaset_status_fully_labeled_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_status_fully_labeled_replicas{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -# HELP kube_replicaset_status_ready_replicas [STABLE] The number of ready replicas per ReplicaSet. -# TYPE kube_replicaset_status_ready_replicas gauge -kube_replicaset_status_ready_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -kube_replicaset_status_ready_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -# HELP kube_replicaset_status_observed_generation [STABLE] The generation observed by the ReplicaSet controller. -# TYPE kube_replicaset_status_observed_generation gauge -kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -kube_replicaset_status_observed_generation{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_status_observed_generation{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -# HELP kube_replicaset_spec_replicas [STABLE] Number of desired pods for a ReplicaSet. -# TYPE kube_replicaset_spec_replicas gauge -kube_replicaset_spec_replicas{namespace="kube-system",replicaset="coredns-787d4945fb"} 2 -kube_replicaset_spec_replicas{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_spec_replicas{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -# HELP kube_replicaset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_replicaset_metadata_generation gauge -kube_replicaset_metadata_generation{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -kube_replicaset_metadata_generation{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_metadata_generation{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -# HELP kube_replicaset_owner [STABLE] Information about the ReplicaSet's owner. -# TYPE kube_replicaset_owner gauge -kube_replicaset_owner{namespace="kube-system",replicaset="coredns-787d4945fb",owner_kind="Deployment",owner_name="coredns",owner_is_controller="true"} 1 -kube_replicaset_owner{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd",owner_kind="Deployment",owner_name="local-path-provisioner",owner_is_controller="true"} 1 -kube_replicaset_owner{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6",owner_kind="Deployment",owner_name="kube-state-metrics",owner_is_controller="true"} 1 -# HELP kube_replicaset_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_replicaset_annotations gauge -kube_replicaset_annotations{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -kube_replicaset_annotations{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_annotations{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -# HELP kube_replicaset_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_replicaset_labels gauge -kube_replicaset_labels{namespace="kube-system",replicaset="coredns-787d4945fb"} 1 -kube_replicaset_labels{namespace="local-path-storage",replicaset="local-path-provisioner-75f5b54ffd"} 1 -kube_replicaset_labels{namespace="kube-system",replicaset="kube-state-metrics-7bc9d484b6"} 1 -# HELP kube_replicationcontroller_created [STABLE] Unix creation timestamp -# TYPE kube_replicationcontroller_created gauge -# HELP kube_replicationcontroller_status_replicas [STABLE] The number of replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_replicas gauge -# HELP kube_replicationcontroller_status_fully_labeled_replicas [STABLE] The number of fully labeled replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_fully_labeled_replicas gauge -# HELP kube_replicationcontroller_status_ready_replicas [STABLE] The number of ready replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_ready_replicas gauge -# HELP kube_replicationcontroller_status_available_replicas [STABLE] The number of available replicas per ReplicationController. -# TYPE kube_replicationcontroller_status_available_replicas gauge -# HELP kube_replicationcontroller_status_observed_generation [STABLE] The generation observed by the ReplicationController controller. -# TYPE kube_replicationcontroller_status_observed_generation gauge -# HELP kube_replicationcontroller_spec_replicas [STABLE] Number of desired pods for a ReplicationController. -# TYPE kube_replicationcontroller_spec_replicas gauge -# HELP kube_replicationcontroller_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state. -# TYPE kube_replicationcontroller_metadata_generation gauge -# HELP kube_replicationcontroller_owner Information about the ReplicationController's owner. -# TYPE kube_replicationcontroller_owner gauge -# HELP kube_resourcequota_created [STABLE] Unix creation timestamp -# TYPE kube_resourcequota_created gauge -kube_resourcequota_created{namespace="default",resourcequota="pods-high"} 1.691568526e+09 -# HELP kube_resourcequota [STABLE] Information about resource quota. -# TYPE kube_resourcequota gauge -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="hard"} 1000 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="hard"} 204800 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="hard"} 10 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="cpu",type="used"} 0 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="memory",type="used"} 0 -kube_resourcequota{namespace="default",resourcequota="pods-high",resource="pods",type="used"} 0 -# HELP kube_secret_info [STABLE] Information about secret. -# TYPE kube_secret_info gauge -kube_secret_info{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 -# HELP kube_secret_type [STABLE] Type about secret. -# TYPE kube_secret_type gauge -kube_secret_type{namespace="kube-system",secret="bootstrap-token-abcdef",type="bootstrap.kubernetes.io/token"} 1 -# HELP kube_secret_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_secret_annotations gauge -kube_secret_annotations{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 -# HELP kube_secret_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_secret_labels gauge -kube_secret_labels{namespace="kube-system",secret="bootstrap-token-abcdef"} 1 -# HELP kube_secret_created [STABLE] Unix creation timestamp -# TYPE kube_secret_created gauge -kube_secret_created{namespace="kube-system",secret="bootstrap-token-abcdef"} 1.69156634e+09 -# HELP kube_secret_metadata_resource_version Resource version representing a specific version of secret. -# TYPE kube_secret_metadata_resource_version gauge -kube_secret_metadata_resource_version{namespace="kube-system",secret="bootstrap-token-abcdef"} 221 -# HELP kube_service_info [STABLE] Information about service. -# TYPE kube_service_info gauge -kube_service_info{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c",cluster_ip="10.96.0.1",external_name="",load_balancer_ip=""} 1 -kube_service_info{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354",cluster_ip="10.96.0.10",external_name="",load_balancer_ip=""} 1 -kube_service_info{namespace="kube-system",service="kube-state-metrics",uid="15b6cf52-6e65-4081-ab05-e2dba135ecfc",cluster_ip="None",external_name="",load_balancer_ip=""} 1 -# HELP kube_service_created [STABLE] Unix creation timestamp -# TYPE kube_service_created gauge -kube_service_created{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c"} 1.691566338e+09 -kube_service_created{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354"} 1.69156634e+09 -kube_service_created{namespace="kube-system",service="kube-state-metrics",uid="15b6cf52-6e65-4081-ab05-e2dba135ecfc"} 1.691568526e+09 -# HELP kube_service_spec_type [STABLE] Type about service. -# TYPE kube_service_spec_type gauge -kube_service_spec_type{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c",type="ClusterIP"} 1 -kube_service_spec_type{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354",type="ClusterIP"} 1 -kube_service_spec_type{namespace="kube-system",service="kube-state-metrics",uid="15b6cf52-6e65-4081-ab05-e2dba135ecfc",type="ClusterIP"} 1 -# HELP kube_service_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_service_annotations gauge -kube_service_annotations{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354"} 1 -kube_service_annotations{namespace="kube-system",service="kube-state-metrics",uid="15b6cf52-6e65-4081-ab05-e2dba135ecfc"} 1 -kube_service_annotations{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c"} 1 -# HELP kube_service_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_service_labels gauge -kube_service_labels{namespace="default",service="kubernetes",uid="d402e60c-e633-4ef1-919e-08bfd4fe1c5c"} 1 -kube_service_labels{namespace="kube-system",service="kube-dns",uid="057e71cd-9a20-4382-85d1-04e087a20354"} 1 -kube_service_labels{namespace="kube-system",service="kube-state-metrics",uid="15b6cf52-6e65-4081-ab05-e2dba135ecfc"} 1 -# HELP kube_service_spec_external_ip [STABLE] Service external ips. One series for each ip -# TYPE kube_service_spec_external_ip gauge -# HELP kube_service_status_load_balancer_ingress [STABLE] Service load balancer ingress status -# TYPE kube_service_status_load_balancer_ingress gauge -# HELP kube_statefulset_created [STABLE] Unix creation timestamp -# TYPE kube_statefulset_created gauge -kube_statefulset_created{namespace="default",statefulset="web"} 1.691568526e+09 -# HELP kube_statefulset_status_replicas [STABLE] The number of replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas gauge -kube_statefulset_status_replicas{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_available The number of available replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_available gauge -kube_statefulset_status_replicas_available{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_current [STABLE] The number of current replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_current gauge -kube_statefulset_status_replicas_current{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_ready [STABLE] The number of ready replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_ready gauge -kube_statefulset_status_replicas_ready{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_replicas_updated [STABLE] The number of updated replicas per StatefulSet. -# TYPE kube_statefulset_status_replicas_updated gauge -kube_statefulset_status_replicas_updated{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_observed_generation [STABLE] The generation observed by the StatefulSet controller. -# TYPE kube_statefulset_status_observed_generation gauge -kube_statefulset_status_observed_generation{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_replicas [STABLE] Number of desired pods for a StatefulSet. -# TYPE kube_statefulset_replicas gauge -kube_statefulset_replicas{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_ordinals_start Start ordinal of the StatefulSet. -# TYPE kube_statefulset_ordinals_start gauge -# HELP kube_statefulset_metadata_generation [STABLE] Sequence number representing a specific generation of the desired state for the StatefulSet. -# TYPE kube_statefulset_metadata_generation gauge -kube_statefulset_metadata_generation{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_persistentvolumeclaim_retention_policy Count of retention policy for StatefulSet template PVCs -# TYPE kube_statefulset_persistentvolumeclaim_retention_policy gauge -# HELP kube_statefulset_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_statefulset_annotations gauge -kube_statefulset_annotations{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_statefulset_labels gauge -kube_statefulset_labels{namespace="default",statefulset="web"} 1 -# HELP kube_statefulset_status_current_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas). -# TYPE kube_statefulset_status_current_revision gauge -kube_statefulset_status_current_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 -# HELP kube_statefulset_status_update_revision [STABLE] Indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas) -# TYPE kube_statefulset_status_update_revision gauge -kube_statefulset_status_update_revision{namespace="default",statefulset="web",revision="web-5945dbc797"} 1 -# HELP kube_storageclass_info [STABLE] Information about storageclass. -# TYPE kube_storageclass_info gauge -kube_storageclass_info{storageclass="standard",provisioner="rancher.io/local-path",reclaim_policy="Delete",volume_binding_mode="WaitForFirstConsumer"} 1 -# HELP kube_storageclass_created [STABLE] Unix creation timestamp -# TYPE kube_storageclass_created gauge -kube_storageclass_created{storageclass="standard"} 1.691566342e+09 -# HELP kube_storageclass_annotations Kubernetes annotations converted to Prometheus labels. -# TYPE kube_storageclass_annotations gauge -kube_storageclass_annotations{storageclass="standard"} 1 -# HELP kube_storageclass_labels [STABLE] Kubernetes labels converted to Prometheus labels. -# TYPE kube_storageclass_labels gauge -kube_storageclass_labels{storageclass="standard"} 1 -# HELP kube_validatingwebhookconfiguration_info Information about the ValidatingWebhookConfiguration. -# TYPE kube_validatingwebhookconfiguration_info gauge -# HELP kube_validatingwebhookconfiguration_created Unix creation timestamp. -# TYPE kube_validatingwebhookconfiguration_created gauge -# HELP kube_validatingwebhookconfiguration_metadata_resource_version Resource version representing a specific version of the ValidatingWebhookConfiguration. -# TYPE kube_validatingwebhookconfiguration_metadata_resource_version gauge -# HELP kube_volumeattachment_labels Kubernetes labels converted to Prometheus labels. -# TYPE kube_volumeattachment_labels gauge -# HELP kube_volumeattachment_info Information about volumeattachment. -# TYPE kube_volumeattachment_info gauge -# HELP kube_volumeattachment_created Unix creation timestamp -# TYPE kube_volumeattachment_created gauge -# HELP kube_volumeattachment_spec_source_persistentvolume PersistentVolume source reference. -# TYPE kube_volumeattachment_spec_source_persistentvolume gauge -# HELP kube_volumeattachment_status_attached Information about volumeattachment. -# TYPE kube_volumeattachment_status_attached gauge -# HELP kube_volumeattachment_status_attachment_metadata volumeattachment metadata. -# TYPE kube_volumeattachment_status_attachment_metadata gauge diff --git a/metricbeat/module/kubernetes/state_container/_meta/data.json b/metricbeat/module/kubernetes/state_container/_meta/data.json index d8bb8d3a341..d3e5fa0f637 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/data.json +++ b/metricbeat/module/kubernetes/state_container/_meta/data.json @@ -1,9 +1,9 @@ { "@timestamp": "2019-03-01T08:05:34.853Z", "container": { - "id": "eb97eb439a6c71ec0d24241d23c87b019776e770d09a3026a518b6910275ed5d", + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", "image": { - "name": "registry.k8s.io/etcd:3.5.7-0" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" }, @@ -14,30 +14,21 @@ }, "kubernetes": { "container": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "eb97eb439a6c71ec0d24241d23c87b019776e770d09a3026a518b6910275ed5d", - "memory": { - "request": { - "bytes": 104857600 - } - }, - "name": "etcd", + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "etcd-kind-control-plane" + "name": "hello-28564555-zdfjz" } }, "metricset": { diff --git a/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.11.0.plain.expected similarity index 63% rename from metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.11.0.plain.expected index 118a32bf915..0fa965a5f81 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.11.0.plain.expected @@ -2,9 +2,9 @@ { "RootFields": { "container": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", "image": { - "name": "sha256:c408b2276bb76627a6f633bf0d26052c208ebd51681c6c89866cc9647471c0bc" + "name": "docker.io/kindest/local-path-provisioner:v20240202-8f1494ea" }, "runtime": "containerd" } @@ -15,11 +15,11 @@ "name": "kind-control-plane" }, "pod": { - "name": "local-path-provisioner-75f5b54ffd-bm5sx" + "name": "local-path-provisioner-7577fdbbfb-wmdwd" } }, "MetricSetFields": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", "name": "local-path-provisioner", "status": { "phase": "running", @@ -41,9 +41,9 @@ { "RootFields": { "container": { - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "registry.k8s.io/kube-controller-manager-amd64:v1.29.1" }, "runtime": "containerd" } @@ -54,25 +54,96 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-rb564" + "name": "kube-controller-manager-kind-control-plane" } }, "MetricSetFields": { "cpu": { "request": { - "cores": 0.1 + "cores": 0.2 } }, - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", - "memory": { - "limit": { - "bytes": 178257920 + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "name": "kube-controller-manager", + "status": { + "phase": "running", + "ready": true, + "restarts": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.container", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": { + "container": { + "id": "cf76542606d3c8eecd7d552d4c075f0066f4565c7f6bb07101db5bde85e31fd4", + "image": { + "name": "docker.io/library/busybox:latest" }, - "request": { - "bytes": 73400320 - } + "runtime": "containerd" + } + }, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" }, - "name": "coredns", + "pod": { + "name": "hello-28564699-9mstw" + } + }, + "MetricSetFields": { + "id": "cf76542606d3c8eecd7d552d4c075f0066f4565c7f6bb07101db5bde85e31fd4", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.container", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": { + "container": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "image": { + "name": "docker.io/library/nginx:1.24.0-alpine-slim" + }, + "runtime": "containerd" + } + }, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "web-0" + } + }, + "MetricSetFields": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "name": "nginx", "status": { "phase": "running", "ready": true, @@ -93,9 +164,9 @@ { "RootFields": { "container": { - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "image": { - "name": "registry.k8s.io/etcd:3.5.6-0" + "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" }, "runtime": "containerd" } @@ -106,7 +177,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "etcd-kind-control-plane" + "name": "fluentd-elasticsearch-l8b6x" } }, "MetricSetFields": { @@ -115,13 +186,16 @@ "cores": 0.1 } }, - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "memory": { + "limit": { + "bytes": 209715200 + }, "request": { - "bytes": 104857600 + "bytes": 209715200 } }, - "name": "etcd", + "name": "fluentd-elasticsearch", "status": { "phase": "running", "ready": true, @@ -142,9 +216,9 @@ { "RootFields": { "container": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", + "id": "e7ca094dace2897f87f28a7549ec98f3a0c8bfa689c4b3e1a02734fc59259198", "image": { - "name": "registry.k8s.io/kube-proxy:v1.26.3" + "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.11.0" }, "runtime": "containerd" } @@ -155,12 +229,12 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-proxy-nw7gg" + "name": "kube-state-metrics-cbc966f68-9kq2v" } }, "MetricSetFields": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", - "name": "kube-proxy", + "id": "e7ca094dace2897f87f28a7549ec98f3a0c8bfa689c4b3e1a02734fc59259198", + "name": "kube-state-metrics", "status": { "phase": "running", "ready": true, @@ -181,9 +255,9 @@ { "RootFields": { "container": { - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", "image": { - "name": "registry.k8s.io/kube-scheduler:v1.26.3" + "name": "docker.io/kindest/kindnetd:v20240202-8f1494ea" }, "runtime": "containerd" } @@ -194,17 +268,28 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-scheduler-kind-control-plane" + "name": "kindnet-98xlt" } }, "MetricSetFields": { "cpu": { + "limit": { + "cores": 0.1 + }, "request": { "cores": 0.1 } }, - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", - "name": "kube-scheduler", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", + "memory": { + "limit": { + "bytes": 52428800 + }, + "request": { + "bytes": 52428800 + } + }, + "name": "kindnet-cni", "status": { "phase": "running", "ready": true, @@ -225,25 +310,25 @@ { "RootFields": { "container": { - "id": "d7ccd676642697b9c11ccd6789aa8ab9048ee18ee0f9627227db5e12006e0342", + "id": "a462d44ce13c421e59deb541cbe594ff97bfdb0702b8d435a56586c2aea410fb", "image": { - "name": "docker.io/library/nginx:1.24.0-alpine-slim" + "name": "docker.io/curlimages/curl:latest" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "web-0" + "name": "mycurlpod" } }, "MetricSetFields": { - "id": "d7ccd676642697b9c11ccd6789aa8ab9048ee18ee0f9627227db5e12006e0342", - "name": "nginx", + "id": "a462d44ce13c421e59deb541cbe594ff97bfdb0702b8d435a56586c2aea410fb", + "name": "mycurlpod", "status": { "phase": "running", "ready": true, @@ -264,9 +349,9 @@ { "RootFields": { "container": { - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", "image": { - "name": "registry.k8s.io/kube-apiserver:v1.26.3" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" } @@ -277,17 +362,25 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-apiserver-kind-control-plane" + "name": "coredns-76f75df574-wfchs" } }, "MetricSetFields": { "cpu": { "request": { - "cores": 0.25 + "cores": 0.1 } }, - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", - "name": "kube-apiserver", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", + "memory": { + "limit": { + "bytes": 178257920 + }, + "request": { + "bytes": 73400320 + } + }, + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -308,9 +401,9 @@ { "RootFields": { "container": { - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", "image": { - "name": "registry.k8s.io/kube-controller-manager:v1.26.3" + "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" }, "runtime": "containerd" } @@ -321,17 +414,17 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-controller-manager-kind-control-plane" + "name": "kube-scheduler-kind-control-plane" } }, "MetricSetFields": { "cpu": { "request": { - "cores": 0.2 + "cores": 0.1 } }, - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", - "name": "kube-controller-manager", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "name": "kube-scheduler", "status": { "phase": "running", "ready": true, @@ -352,29 +445,41 @@ { "RootFields": { "container": { - "id": "792a785041217bf9d4784f80510bd60bb21fc179088f5b72286af6d350166a91", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "image": { - "name": "docker.io/library/busybox:latest" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "hello-28192807-p6f5s" + "name": "coredns-76f75df574-v8skx" } }, "MetricSetFields": { - "id": "792a785041217bf9d4784f80510bd60bb21fc179088f5b72286af6d350166a91", - "name": "hello", + "cpu": { + "request": { + "cores": 0.1 + } + }, + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", + "memory": { + "limit": { + "bytes": 178257920 + }, + "request": { + "bytes": 73400320 + } + }, + "name": "coredns", "status": { - "phase": "terminated", - "ready": false, - "reason": "Completed", + "phase": "running", + "ready": true, "restarts": 0 } }, @@ -392,9 +497,9 @@ { "RootFields": { "container": { - "id": "2385de25be8a2c1ec1c1490d5aab898d0d1202c981840b41de1d2cc67d891a8d", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", "image": { - "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.8.2" + "name": "registry.k8s.io/kube-apiserver-amd64:v1.29.1" }, "runtime": "containerd" } @@ -405,12 +510,17 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-state-metrics-fb945547c-zdncb" + "name": "kube-apiserver-kind-control-plane" } }, "MetricSetFields": { - "id": "2385de25be8a2c1ec1c1490d5aab898d0d1202c981840b41de1d2cc67d891a8d", - "name": "kube-state-metrics", + "cpu": { + "request": { + "cores": 0.25 + } + }, + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", + "name": "kube-apiserver", "status": { "phase": "running", "ready": true, @@ -431,41 +541,29 @@ { "RootFields": { "container": { - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", + "id": "d7ee855499eafb3c328c9c93d8377fc1ba169d22d38b8e23272b4ae716e4d416", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-kx4f4" + "name": "hello-28564697-8dmzw" } }, "MetricSetFields": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", - "memory": { - "limit": { - "bytes": 178257920 - }, - "request": { - "bytes": 73400320 - } - }, - "name": "coredns", + "id": "d7ee855499eafb3c328c9c93d8377fc1ba169d22d38b8e23272b4ae716e4d416", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, @@ -483,7 +581,7 @@ { "RootFields": { "container": { - "id": "9db55f876bbf229af92f6825e4ffb58ac7b98c7519f1471fa90c1342fd6a9abc", + "id": "97ff79f2dcf69eea18ddf8dd9b37319e36095168d9bee982978cbf76e0a5e4f5", "image": { "name": "docker.io/library/busybox:latest" }, @@ -496,11 +594,11 @@ "name": "kind-control-plane" }, "pod": { - "name": "hello-7dfgp" + "name": "hello-28564698-tv8jb" } }, "MetricSetFields": { - "id": "9db55f876bbf229af92f6825e4ffb58ac7b98c7519f1471fa90c1342fd6a9abc", + "id": "97ff79f2dcf69eea18ddf8dd9b37319e36095168d9bee982978cbf76e0a5e4f5", "name": "hello", "status": { "phase": "terminated", @@ -523,9 +621,9 @@ { "RootFields": { "container": { - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "image": { - "name": "sha256:a329ae3c2c52fe00e9c4eaf48b081cd184ee4bf9aea059e497f4965f0a8deedb" + "name": "registry.k8s.io/etcd:3.5.10-0" }, "runtime": "containerd" } @@ -536,28 +634,22 @@ "name": "kind-control-plane" }, "pod": { - "name": "kindnet-7l48v" + "name": "etcd-kind-control-plane" } }, "MetricSetFields": { "cpu": { - "limit": { - "cores": 0.1 - }, "request": { "cores": 0.1 } }, - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "memory": { - "limit": { - "bytes": 52428800 - }, "request": { - "bytes": 52428800 + "bytes": 104857600 } }, - "name": "kindnet-cni", + "name": "etcd", "status": { "phase": "running", "ready": true, @@ -578,38 +670,65 @@ { "RootFields": { "container": { - "id": "a4f1799a2236665489587b54ff78e36c9eebd8a4134d75b768149551f5a564b3", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", "image": { - "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "fluentd-elasticsearch-qrlkt" + "name": "hello-wlb5q" } }, "MetricSetFields": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "a4f1799a2236665489587b54ff78e36c9eebd8a4134d75b768149551f5a564b3", - "memory": { - "limit": { - "bytes": 209715200 + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.container", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": { + "container": { + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", + "image": { + "name": "registry.k8s.io/kube-proxy-amd64:v1.29.1" }, - "request": { - "bytes": 209715200 - } + "runtime": "containerd" + } + }, + "ModuleFields": { + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" }, - "name": "fluentd-elasticsearch", + "pod": { + "name": "kube-proxy-45qj9" + } + }, + "MetricSetFields": { + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", + "name": "kube-proxy", "status": { "phase": "running", "ready": true, diff --git a/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.12.0.plain.expected similarity index 63% rename from metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.12.0.plain.expected index bc46b7ab549..e81155ffc64 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.12.0.plain.expected @@ -2,9 +2,9 @@ { "RootFields": { "container": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", "image": { - "name": "sha256:c408b2276bb76627a6f633bf0d26052c208ebd51681c6c89866cc9647471c0bc" + "name": "docker.io/kindest/local-path-provisioner:v20240202-8f1494ea" }, "runtime": "containerd" } @@ -15,11 +15,11 @@ "name": "kind-control-plane" }, "pod": { - "name": "local-path-provisioner-75f5b54ffd-bm5sx" + "name": "local-path-provisioner-7577fdbbfb-wmdwd" } }, "MetricSetFields": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", "name": "local-path-provisioner", "status": { "phase": "running", @@ -41,7 +41,90 @@ { "RootFields": { "container": { - "id": "a7ae8b5da39c739c3298ea9e07f24c8ddb987137244ddc1bc9b71dca542a2e76", + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "image": { + "name": "registry.k8s.io/kube-controller-manager-amd64:v1.29.1" + }, + "runtime": "containerd" + } + }, + "ModuleFields": { + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "kube-controller-manager-kind-control-plane" + } + }, + "MetricSetFields": { + "cpu": { + "request": { + "cores": 0.2 + } + }, + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "name": "kube-controller-manager", + "status": { + "phase": "running", + "ready": true, + "restarts": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.container", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": { + "container": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "image": { + "name": "docker.io/library/nginx:1.24.0-alpine-slim" + }, + "runtime": "containerd" + } + }, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "web-0" + } + }, + "MetricSetFields": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "name": "nginx", + "status": { + "phase": "running", + "ready": true, + "restarts": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.container", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": { + "container": { + "id": "546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d", "image": { "name": "docker.io/library/busybox:latest" }, @@ -54,11 +137,11 @@ "name": "kind-control-plane" }, "pod": { - "name": "hello-28192809-jbn5z" + "name": "hello-28564556-gkqsk" } }, "MetricSetFields": { - "id": "a7ae8b5da39c739c3298ea9e07f24c8ddb987137244ddc1bc9b71dca542a2e76", + "id": "546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d", "name": "hello", "status": { "phase": "terminated", @@ -81,9 +164,9 @@ { "RootFields": { "container": { - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" }, "runtime": "containerd" } @@ -94,7 +177,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-rb564" + "name": "fluentd-elasticsearch-l8b6x" } }, "MetricSetFields": { @@ -103,16 +186,16 @@ "cores": 0.1 } }, - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "memory": { "limit": { - "bytes": 178257920 + "bytes": 209715200 }, "request": { - "bytes": 73400320 + "bytes": 209715200 } }, - "name": "coredns", + "name": "fluentd-elasticsearch", "status": { "phase": "running", "ready": true, @@ -133,38 +216,69 @@ { "RootFields": { "container": { - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", "image": { - "name": "registry.k8s.io/etcd:3.5.6-0" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "etcd-kind-control-plane" + "name": "hello-28564555-zdfjz" } }, "MetricSetFields": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", - "memory": { - "request": { - "bytes": 104857600 - } + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.container", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": { + "container": { + "id": "921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450", + "image": { + "name": "docker.io/library/busybox:latest" + }, + "runtime": "containerd" + } + }, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" }, - "name": "etcd", + "pod": { + "name": "hello-28564554-llbsx" + } + }, + "MetricSetFields": { + "id": "921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, @@ -182,9 +296,9 @@ { "RootFields": { "container": { - "id": "d34823a90b7406d61d95530cf800bc1fbd2307f9ab6c6031da1d22ae577ca081", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", "image": { - "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" + "name": "docker.io/kindest/kindnetd:v20240202-8f1494ea" }, "runtime": "containerd" } @@ -195,25 +309,28 @@ "name": "kind-control-plane" }, "pod": { - "name": "fluentd-elasticsearch-fwg46" + "name": "kindnet-98xlt" } }, "MetricSetFields": { "cpu": { + "limit": { + "cores": 0.1 + }, "request": { "cores": 0.1 } }, - "id": "d34823a90b7406d61d95530cf800bc1fbd2307f9ab6c6031da1d22ae577ca081", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", "memory": { "limit": { - "bytes": 209715200 + "bytes": 52428800 }, "request": { - "bytes": 209715200 + "bytes": 52428800 } }, - "name": "fluentd-elasticsearch", + "name": "kindnet-cni", "status": { "phase": "running", "ready": true, @@ -234,9 +351,9 @@ { "RootFields": { "container": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", "image": { - "name": "registry.k8s.io/kube-proxy:v1.26.3" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" } @@ -247,12 +364,25 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-proxy-nw7gg" + "name": "coredns-76f75df574-wfchs" } }, "MetricSetFields": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", - "name": "kube-proxy", + "cpu": { + "request": { + "cores": 0.1 + } + }, + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", + "memory": { + "limit": { + "bytes": 178257920 + }, + "request": { + "bytes": 73400320 + } + }, + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -273,9 +403,9 @@ { "RootFields": { "container": { - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", + "id": "54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585", "image": { - "name": "registry.k8s.io/kube-scheduler:v1.26.3" + "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.12.0" }, "runtime": "containerd" } @@ -286,17 +416,12 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-scheduler-kind-control-plane" + "name": "kube-state-metrics-5bcd4898-bntgt" } }, "MetricSetFields": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", - "name": "kube-scheduler", + "id": "54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585", + "name": "kube-state-metrics", "status": { "phase": "running", "ready": true, @@ -317,25 +442,25 @@ { "RootFields": { "container": { - "id": "332d23c3143978bf7924a98fd162b9e98781ffa5eb6c7a8a99e2da7c293f1910", + "id": "be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc", "image": { - "name": "docker.io/library/busybox:latest" + "name": "docker.io/curlimages/curl:latest" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "hello-fddcc" + "name": "mycurlpod" } }, "MetricSetFields": { - "id": "332d23c3143978bf7924a98fd162b9e98781ffa5eb6c7a8a99e2da7c293f1910", - "name": "hello", + "id": "be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc", + "name": "mycurlpod", "status": { "phase": "terminated", "ready": false, @@ -357,9 +482,9 @@ { "RootFields": { "container": { - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", "image": { - "name": "registry.k8s.io/kube-apiserver:v1.26.3" + "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" }, "runtime": "containerd" } @@ -370,17 +495,17 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-apiserver-kind-control-plane" + "name": "kube-scheduler-kind-control-plane" } }, "MetricSetFields": { "cpu": { "request": { - "cores": 0.25 + "cores": 0.1 } }, - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", - "name": "kube-apiserver", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "name": "kube-scheduler", "status": { "phase": "running", "ready": true, @@ -401,9 +526,9 @@ { "RootFields": { "container": { - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "image": { - "name": "registry.k8s.io/kube-controller-manager:v1.26.3" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" } @@ -414,17 +539,25 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-controller-manager-kind-control-plane" + "name": "coredns-76f75df574-v8skx" } }, "MetricSetFields": { "cpu": { "request": { - "cores": 0.2 + "cores": 0.1 } }, - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", - "name": "kube-controller-manager", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", + "memory": { + "limit": { + "bytes": 178257920 + }, + "request": { + "bytes": 73400320 + } + }, + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -445,9 +578,9 @@ { "RootFields": { "container": { - "id": "d3e044cc786b110c508979573f77aa17c017bd73b19a9eca2f90c931269c8e23", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", "image": { - "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2" + "name": "registry.k8s.io/kube-apiserver-amd64:v1.29.1" }, "runtime": "containerd" } @@ -458,12 +591,17 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-state-metrics-7bc9d484b6-79ph2" + "name": "kube-apiserver-kind-control-plane" } }, "MetricSetFields": { - "id": "d3e044cc786b110c508979573f77aa17c017bd73b19a9eca2f90c931269c8e23", - "name": "kube-state-metrics", + "cpu": { + "request": { + "cores": 0.25 + } + }, + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", + "name": "kube-apiserver", "status": { "phase": "running", "ready": true, @@ -484,9 +622,9 @@ { "RootFields": { "container": { - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "registry.k8s.io/etcd:3.5.10-0" }, "runtime": "containerd" } @@ -497,7 +635,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-kx4f4" + "name": "etcd-kind-control-plane" } }, "MetricSetFields": { @@ -506,16 +644,13 @@ "cores": 0.1 } }, - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "memory": { - "limit": { - "bytes": 178257920 - }, "request": { - "bytes": 73400320 + "bytes": 104857600 } }, - "name": "coredns", + "name": "etcd", "status": { "phase": "running", "ready": true, @@ -536,44 +671,29 @@ { "RootFields": { "container": { - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", "image": { - "name": "sha256:a329ae3c2c52fe00e9c4eaf48b081cd184ee4bf9aea059e497f4965f0a8deedb" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "kindnet-7l48v" + "name": "hello-wlb5q" } }, "MetricSetFields": { - "cpu": { - "limit": { - "cores": 0.1 - }, - "request": { - "cores": 0.1 - } - }, - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", - "memory": { - "limit": { - "bytes": 52428800 - }, - "request": { - "bytes": 52428800 - } - }, - "name": "kindnet-cni", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, @@ -591,25 +711,25 @@ { "RootFields": { "container": { - "id": "861bef44f73cfb196df58121080eb7705eef21dbc975526341ac6078755bb063", + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", "image": { - "name": "docker.io/library/nginx:1.24.0-alpine-slim" + "name": "registry.k8s.io/kube-proxy-amd64:v1.29.1" }, "runtime": "containerd" } }, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "web-0" + "name": "kube-proxy-45qj9" } }, "MetricSetFields": { - "id": "861bef44f73cfb196df58121080eb7705eef21dbc975526341ac6078755bb063", - "name": "nginx", + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", + "name": "kube-proxy", "status": { "phase": "running", "ready": true, diff --git a/metricbeat/module/kubernetes/state_container/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_container/_meta/testdata/docs.plain-expected.json index 46371db4a84..bd430bb5af6 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_container/_meta/testdata/docs.plain-expected.json @@ -1,9 +1,9 @@ [ { "container": { - "id": "eb97eb439a6c71ec0d24241d23c87b019776e770d09a3026a518b6910275ed5d", + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", "image": { - "name": "registry.k8s.io/etcd:3.5.7-0" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" }, @@ -14,30 +14,21 @@ }, "kubernetes": { "container": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "eb97eb439a6c71ec0d24241d23c87b019776e770d09a3026a518b6910275ed5d", - "memory": { - "request": { - "bytes": 104857600 - } - }, - "name": "etcd", + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "etcd-kind-control-plane" + "name": "hello-28564555-zdfjz" } }, "metricset": { @@ -51,7 +42,7 @@ }, { "container": { - "id": "cca10a28581a786c0a5c7c7d19157c0a166cfc225552692f1411fb22fbb73160", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", "image": { "name": "docker.io/library/busybox:latest" }, @@ -64,7 +55,7 @@ }, "kubernetes": { "container": { - "id": "cca10a28581a786c0a5c7c7d19157c0a166cfc225552692f1411fb22fbb73160", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", "name": "hello", "status": { "phase": "terminated", @@ -78,7 +69,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "hello-mwrpw" + "name": "hello-wlb5q" } }, "metricset": { @@ -92,9 +83,9 @@ }, { "container": { - "id": "d6a18a246da91637bbcf039f117c571db384a0f142de09ee3a57577d60d7f608", + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", "image": { - "name": "registry.k8s.io/kube-controller-manager:v1.27.3" + "name": "docker.io/library/nginx:1.24.0-alpine-slim" }, "runtime": "containerd" }, @@ -105,25 +96,20 @@ }, "kubernetes": { "container": { - "cpu": { - "request": { - "cores": 0.2 - } - }, - "id": "d6a18a246da91637bbcf039f117c571db384a0f142de09ee3a57577d60d7f608", - "name": "kube-controller-manager", + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "name": "nginx", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "kube-controller-manager-kind-control-plane" + "name": "web-0" } }, "metricset": { @@ -137,9 +123,9 @@ }, { "container": { - "id": "1883412954332174bb097c8ce6a5281673857a68b7b942cc580547fee954e338", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", "image": { - "name": "docker.io/library/busybox:latest" + "name": "registry.k8s.io/kube-apiserver-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -150,21 +136,25 @@ }, "kubernetes": { "container": { - "id": "1883412954332174bb097c8ce6a5281673857a68b7b942cc580547fee954e338", - "name": "hello", + "cpu": { + "request": { + "cores": 0.25 + } + }, + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", + "name": "kube-apiserver", "status": { - "phase": "terminated", - "ready": false, - "reason": "Completed", + "phase": "running", + "ready": true, "restarts": 0 } }, - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "hello-28312520-d5d5s" + "name": "kube-apiserver-kind-control-plane" } }, "metricset": { @@ -178,9 +168,9 @@ }, { "container": { - "id": "06f66dcfbe4fb270101c8c0aa3279016c095c7d05363d498cec2c158423de359", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.10.1" + "name": "registry.k8s.io/etcd:3.5.10-0" }, "runtime": "containerd" }, @@ -196,16 +186,13 @@ "cores": 0.1 } }, - "id": "06f66dcfbe4fb270101c8c0aa3279016c095c7d05363d498cec2c158423de359", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "memory": { - "limit": { - "bytes": 178257920 - }, "request": { - "bytes": 73400320 + "bytes": 104857600 } }, - "name": "coredns", + "name": "etcd", "status": { "phase": "running", "ready": true, @@ -217,7 +204,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-5d78c9869d-gskzq" + "name": "etcd-kind-control-plane" } }, "metricset": { @@ -231,7 +218,7 @@ }, { "container": { - "id": "1a055f5750a0e07584f76f426f8fcac5d3997dcf2d504be102161a465cbf2dc6", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "image": { "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" }, @@ -249,7 +236,7 @@ "cores": 0.1 } }, - "id": "1a055f5750a0e07584f76f426f8fcac5d3997dcf2d504be102161a465cbf2dc6", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "memory": { "limit": { "bytes": 209715200 @@ -270,7 +257,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "fluentd-elasticsearch-m2tlp" + "name": "fluentd-elasticsearch-l8b6x" } }, "metricset": { @@ -284,9 +271,9 @@ }, { "container": { - "id": "29b115d3c9daa4c23c5161ee58471dbd366df4002cea13640f433f01c1b92acf", + "id": "be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc", "image": { - "name": "registry.k8s.io/kube-proxy:v1.27.3" + "name": "docker.io/curlimages/curl:latest" }, "runtime": "containerd" }, @@ -297,7 +284,48 @@ }, "kubernetes": { "container": { - "id": "29b115d3c9daa4c23c5161ee58471dbd366df4002cea13640f433f01c1b92acf", + "id": "be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc", + "name": "mycurlpod", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "mycurlpod" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", + "image": { + "name": "registry.k8s.io/kube-proxy-amd64:v1.29.1" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", "name": "kube-proxy", "status": { "phase": "running", @@ -310,7 +338,48 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-proxy-2nq9k" + "name": "kube-proxy-45qj9" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450", + "image": { + "name": "docker.io/library/busybox:latest" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "id": "921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "hello-28564554-llbsx" } }, "metricset": { @@ -324,9 +393,50 @@ }, { "container": { - "id": "a53d00e82f6d7fa11e877e3999ec7190f35bc6d180366a41cab0a832f6b62be5", + "id": "546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d", "image": { - "name": "docker.io/kindest/kindnetd:v20230511-dc714da8" + "name": "docker.io/library/busybox:latest" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "id": "546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "hello-28564556-gkqsk" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", + "image": { + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" }, @@ -338,23 +448,20 @@ "kubernetes": { "container": { "cpu": { - "limit": { - "cores": 0.1 - }, "request": { "cores": 0.1 } }, - "id": "a53d00e82f6d7fa11e877e3999ec7190f35bc6d180366a41cab0a832f6b62be5", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", "memory": { "limit": { - "bytes": 52428800 + "bytes": 178257920 }, "request": { - "bytes": 52428800 + "bytes": 73400320 } }, - "name": "kindnet-cni", + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -366,7 +473,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kindnet-xg6gs" + "name": "coredns-76f75df574-wfchs" } }, "metricset": { @@ -380,9 +487,9 @@ }, { "container": { - "id": "ef9f1ffe0c621c8d0405f9b3c3ead8ec681cb20fc78c84f6b0a6814625c2a14e", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", "image": { - "name": "docker.io/kindest/local-path-provisioner:v20230511-dc714da8" + "name": "docker.io/kindest/kindnetd:v20240202-8f1494ea" }, "runtime": "containerd" }, @@ -393,20 +500,36 @@ }, "kubernetes": { "container": { - "id": "ef9f1ffe0c621c8d0405f9b3c3ead8ec681cb20fc78c84f6b0a6814625c2a14e", - "name": "local-path-provisioner", + "cpu": { + "limit": { + "cores": 0.1 + }, + "request": { + "cores": 0.1 + } + }, + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", + "memory": { + "limit": { + "bytes": 52428800 + }, + "request": { + "bytes": 52428800 + } + }, + "name": "kindnet-cni", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "local-path-provisioner-6bc4bddd6b-6vl7d" + "name": "kindnet-98xlt" } }, "metricset": { @@ -420,9 +543,9 @@ }, { "container": { - "id": "717896cdeb9925094fcb2d73c0ba5ced6505408d2f91c0052c424712f142c4ca", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", "image": { - "name": "docker.io/library/nginx:1.24.0-alpine-slim" + "name": "docker.io/kindest/local-path-provisioner:v20240202-8f1494ea" }, "runtime": "containerd" }, @@ -433,20 +556,20 @@ }, "kubernetes": { "container": { - "id": "717896cdeb9925094fcb2d73c0ba5ced6505408d2f91c0052c424712f142c4ca", - "name": "nginx", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", + "name": "local-path-provisioner", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "default", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { - "name": "web-0" + "name": "local-path-provisioner-7577fdbbfb-wmdwd" } }, "metricset": { @@ -460,9 +583,9 @@ }, { "container": { - "id": "127454a7e946fb1b1916e5fb1b1706150e10b90b8a38f0f44b82c87838bdf5b8", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", "image": { - "name": "registry.k8s.io/kube-apiserver:v1.27.3" + "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -475,11 +598,11 @@ "container": { "cpu": { "request": { - "cores": 0.25 + "cores": 0.1 } }, - "id": "127454a7e946fb1b1916e5fb1b1706150e10b90b8a38f0f44b82c87838bdf5b8", - "name": "kube-apiserver", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "name": "kube-scheduler", "status": { "phase": "running", "ready": true, @@ -491,7 +614,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-apiserver-kind-control-plane" + "name": "kube-scheduler-kind-control-plane" } }, "metricset": { @@ -505,9 +628,9 @@ }, { "container": { - "id": "b80dff7b54cbe3eb9a6d1f11fda3c06cfe0e326d8e7a79b5b10d23345aed0152", + "id": "54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585", "image": { - "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0" + "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.12.0" }, "runtime": "containerd" }, @@ -518,7 +641,7 @@ }, "kubernetes": { "container": { - "id": "b80dff7b54cbe3eb9a6d1f11fda3c06cfe0e326d8e7a79b5b10d23345aed0152", + "id": "54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585", "name": "kube-state-metrics", "status": { "phase": "running", @@ -531,7 +654,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-state-metrics-7857446fb4-x78j6" + "name": "kube-state-metrics-5bcd4898-bntgt" } }, "metricset": { @@ -545,9 +668,9 @@ }, { "container": { - "id": "eaa20604321d28389042e29474472748e89324b87586a9f9ac2c973d437da725", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "image": { - "name": "registry.k8s.io/kube-scheduler:v1.27.3" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" }, @@ -563,8 +686,16 @@ "cores": 0.1 } }, - "id": "eaa20604321d28389042e29474472748e89324b87586a9f9ac2c973d437da725", - "name": "kube-scheduler", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", + "memory": { + "limit": { + "bytes": 178257920 + }, + "request": { + "bytes": 73400320 + } + }, + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -576,7 +707,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-scheduler-kind-control-plane" + "name": "coredns-76f75df574-v8skx" } }, "metricset": { @@ -590,9 +721,9 @@ }, { "container": { - "id": "cb21ffae2edbe263ba8da9c959743ac926d6a381f8a2796d45e55609d0236cde", + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.10.1" + "name": "registry.k8s.io/kube-controller-manager-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -605,19 +736,11 @@ "container": { "cpu": { "request": { - "cores": 0.1 - } - }, - "id": "cb21ffae2edbe263ba8da9c959743ac926d6a381f8a2796d45e55609d0236cde", - "memory": { - "limit": { - "bytes": 178257920 - }, - "request": { - "bytes": 73400320 + "cores": 0.2 } }, - "name": "coredns", + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "name": "kube-controller-manager", "status": { "phase": "running", "ready": true, @@ -629,7 +752,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-5d78c9869d-crtn9" + "name": "kube-controller-manager-kind-control-plane" } }, "metricset": { diff --git a/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 68% rename from metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.11.0.plain-expected.json index 205962e10b5..544de91a131 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -1,9 +1,9 @@ [ { "container": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", "image": { - "name": "registry.k8s.io/kube-proxy:v1.26.3" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" }, @@ -14,20 +14,61 @@ }, "kubernetes": { "container": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", - "name": "kube-proxy", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "hello-wlb5q" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "image": { + "name": "docker.io/library/nginx:1.24.0-alpine-slim" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "name": "nginx", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "kube-proxy-nw7gg" + "name": "web-0" } }, "metricset": { @@ -41,9 +82,9 @@ }, { "container": { - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "registry.k8s.io/kube-apiserver-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -56,19 +97,11 @@ "container": { "cpu": { "request": { - "cores": 0.1 - } - }, - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", - "memory": { - "limit": { - "bytes": 178257920 - }, - "request": { - "bytes": 73400320 + "cores": 0.25 } }, - "name": "coredns", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", + "name": "kube-apiserver", "status": { "phase": "running", "ready": true, @@ -80,7 +113,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-kx4f4" + "name": "kube-apiserver-kind-control-plane" } }, "metricset": { @@ -94,9 +127,9 @@ }, { "container": { - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "image": { - "name": "registry.k8s.io/kube-apiserver:v1.26.3" + "name": "registry.k8s.io/etcd:3.5.10-0" }, "runtime": "containerd" }, @@ -109,11 +142,16 @@ "container": { "cpu": { "request": { - "cores": 0.25 + "cores": 0.1 } }, - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", - "name": "kube-apiserver", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", + "memory": { + "request": { + "bytes": 104857600 + } + }, + "name": "etcd", "status": { "phase": "running", "ready": true, @@ -125,7 +163,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-apiserver-kind-control-plane" + "name": "etcd-kind-control-plane" } }, "metricset": { @@ -139,9 +177,9 @@ }, { "container": { - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" }, "runtime": "containerd" }, @@ -157,16 +195,16 @@ "cores": 0.1 } }, - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "memory": { "limit": { - "bytes": 178257920 + "bytes": 209715200 }, "request": { - "bytes": 73400320 + "bytes": 209715200 } }, - "name": "coredns", + "name": "fluentd-elasticsearch", "status": { "phase": "running", "ready": true, @@ -178,7 +216,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-rb564" + "name": "fluentd-elasticsearch-l8b6x" } }, "metricset": { @@ -192,9 +230,9 @@ }, { "container": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", "image": { - "name": "sha256:c408b2276bb76627a6f633bf0d26052c208ebd51681c6c89866cc9647471c0bc" + "name": "registry.k8s.io/kube-proxy-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -205,20 +243,20 @@ }, "kubernetes": { "container": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", - "name": "local-path-provisioner", + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", + "name": "kube-proxy", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "local-path-provisioner-75f5b54ffd-bm5sx" + "name": "kube-proxy-45qj9" } }, "metricset": { @@ -232,9 +270,9 @@ }, { "container": { - "id": "9db55f876bbf229af92f6825e4ffb58ac7b98c7519f1471fa90c1342fd6a9abc", + "id": "a462d44ce13c421e59deb541cbe594ff97bfdb0702b8d435a56586c2aea410fb", "image": { - "name": "docker.io/library/busybox:latest" + "name": "docker.io/curlimages/curl:latest" }, "runtime": "containerd" }, @@ -245,21 +283,20 @@ }, "kubernetes": { "container": { - "id": "9db55f876bbf229af92f6825e4ffb58ac7b98c7519f1471fa90c1342fd6a9abc", - "name": "hello", + "id": "a462d44ce13c421e59deb541cbe594ff97bfdb0702b8d435a56586c2aea410fb", + "name": "mycurlpod", "status": { - "phase": "terminated", - "ready": false, - "reason": "Completed", + "phase": "running", + "ready": true, "restarts": 0 } }, - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "hello-7dfgp" + "name": "mycurlpod" } }, "metricset": { @@ -273,9 +310,9 @@ }, { "container": { - "id": "2385de25be8a2c1ec1c1490d5aab898d0d1202c981840b41de1d2cc67d891a8d", + "id": "97ff79f2dcf69eea18ddf8dd9b37319e36095168d9bee982978cbf76e0a5e4f5", "image": { - "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.8.2" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" }, @@ -286,20 +323,21 @@ }, "kubernetes": { "container": { - "id": "2385de25be8a2c1ec1c1490d5aab898d0d1202c981840b41de1d2cc67d891a8d", - "name": "kube-state-metrics", + "id": "97ff79f2dcf69eea18ddf8dd9b37319e36095168d9bee982978cbf76e0a5e4f5", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "kube-state-metrics-fb945547c-zdncb" + "name": "hello-28564698-tv8jb" } }, "metricset": { @@ -313,7 +351,7 @@ }, { "container": { - "id": "792a785041217bf9d4784f80510bd60bb21fc179088f5b72286af6d350166a91", + "id": "cf76542606d3c8eecd7d552d4c075f0066f4565c7f6bb07101db5bde85e31fd4", "image": { "name": "docker.io/library/busybox:latest" }, @@ -326,7 +364,7 @@ }, "kubernetes": { "container": { - "id": "792a785041217bf9d4784f80510bd60bb21fc179088f5b72286af6d350166a91", + "id": "cf76542606d3c8eecd7d552d4c075f0066f4565c7f6bb07101db5bde85e31fd4", "name": "hello", "status": { "phase": "terminated", @@ -340,7 +378,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "hello-28192807-p6f5s" + "name": "hello-28564699-9mstw" } }, "metricset": { @@ -354,9 +392,9 @@ }, { "container": { - "id": "a4f1799a2236665489587b54ff78e36c9eebd8a4134d75b768149551f5a564b3", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", "image": { - "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" }, @@ -372,16 +410,16 @@ "cores": 0.1 } }, - "id": "a4f1799a2236665489587b54ff78e36c9eebd8a4134d75b768149551f5a564b3", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", "memory": { "limit": { - "bytes": 209715200 + "bytes": 178257920 }, "request": { - "bytes": 209715200 + "bytes": 73400320 } }, - "name": "fluentd-elasticsearch", + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -393,7 +431,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "fluentd-elasticsearch-qrlkt" + "name": "coredns-76f75df574-wfchs" } }, "metricset": { @@ -407,9 +445,9 @@ }, { "container": { - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", "image": { - "name": "sha256:a329ae3c2c52fe00e9c4eaf48b081cd184ee4bf9aea059e497f4965f0a8deedb" + "name": "docker.io/kindest/kindnetd:v20240202-8f1494ea" }, "runtime": "containerd" }, @@ -428,7 +466,7 @@ "cores": 0.1 } }, - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", "memory": { "limit": { "bytes": 52428800 @@ -449,7 +487,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kindnet-7l48v" + "name": "kindnet-98xlt" } }, "metricset": { @@ -463,9 +501,49 @@ }, { "container": { - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", "image": { - "name": "registry.k8s.io/kube-scheduler:v1.26.3" + "name": "docker.io/kindest/local-path-provisioner:v20240202-8f1494ea" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", + "name": "local-path-provisioner", + "status": { + "phase": "running", + "ready": true, + "restarts": 0 + } + }, + "namespace": "local-path-storage", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "local-path-provisioner-7577fdbbfb-wmdwd" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "image": { + "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -481,7 +559,7 @@ "cores": 0.1 } }, - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", "name": "kube-scheduler", "status": { "phase": "running", @@ -508,9 +586,9 @@ }, { "container": { - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", + "id": "e7ca094dace2897f87f28a7549ec98f3a0c8bfa689c4b3e1a02734fc59259198", "image": { - "name": "registry.k8s.io/kube-controller-manager:v1.26.3" + "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.11.0" }, "runtime": "containerd" }, @@ -521,13 +599,8 @@ }, "kubernetes": { "container": { - "cpu": { - "request": { - "cores": 0.2 - } - }, - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", - "name": "kube-controller-manager", + "id": "e7ca094dace2897f87f28a7549ec98f3a0c8bfa689c4b3e1a02734fc59259198", + "name": "kube-state-metrics", "status": { "phase": "running", "ready": true, @@ -539,7 +612,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-controller-manager-kind-control-plane" + "name": "kube-state-metrics-cbc966f68-9kq2v" } }, "metricset": { @@ -553,9 +626,9 @@ }, { "container": { - "id": "d7ccd676642697b9c11ccd6789aa8ab9048ee18ee0f9627227db5e12006e0342", + "id": "d7ee855499eafb3c328c9c93d8377fc1ba169d22d38b8e23272b4ae716e4d416", "image": { - "name": "docker.io/library/nginx:1.24.0-alpine-slim" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" }, @@ -566,11 +639,12 @@ }, "kubernetes": { "container": { - "id": "d7ccd676642697b9c11ccd6789aa8ab9048ee18ee0f9627227db5e12006e0342", - "name": "nginx", + "id": "d7ee855499eafb3c328c9c93d8377fc1ba169d22d38b8e23272b4ae716e4d416", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, @@ -579,7 +653,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "web-0" + "name": "hello-28564697-8dmzw" } }, "metricset": { @@ -593,9 +667,9 @@ }, { "container": { - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "image": { - "name": "registry.k8s.io/etcd:3.5.6-0" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" }, @@ -611,13 +685,16 @@ "cores": 0.1 } }, - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "memory": { + "limit": { + "bytes": 178257920 + }, "request": { - "bytes": 104857600 + "bytes": 73400320 } }, - "name": "etcd", + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -629,7 +706,52 @@ "name": "kind-control-plane" }, "pod": { - "name": "etcd-kind-control-plane" + "name": "coredns-76f75df574-v8skx" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "image": { + "name": "registry.k8s.io/kube-controller-manager-amd64:v1.29.1" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "cpu": { + "request": { + "cores": 0.2 + } + }, + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "name": "kube-controller-manager", + "status": { + "phase": "running", + "ready": true, + "restarts": 0 + } + }, + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "kube-controller-manager-kind-control-plane" } }, "metricset": { diff --git a/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 68% rename from metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.12.0.plain-expected.json index 0cc18e6dc5c..bd430bb5af6 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -1,9 +1,9 @@ [ { "container": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", "image": { - "name": "registry.k8s.io/kube-proxy:v1.26.3" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" }, @@ -14,20 +14,21 @@ }, "kubernetes": { "container": { - "id": "c260e83eedc09fc53e541d1ce22f4f75c3d316341ccb7b8f028abdfb9fc9945f", - "name": "kube-proxy", + "id": "054b424625a7c22c210e3fe0aae55069d4f3e18ce8bc802a9a96ce87bb7a2483", + "name": "hello", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "kube-proxy-nw7gg" + "name": "hello-28564555-zdfjz" } }, "metricset": { @@ -41,9 +42,9 @@ }, { "container": { - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "docker.io/library/busybox:latest" }, "runtime": "containerd" }, @@ -54,33 +55,61 @@ }, "kubernetes": { "container": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "95a5d65b9727fe3c68ac865bfbe52590965b7f04dcb6a4e142bd45561ab4229d", - "memory": { - "limit": { - "bytes": 178257920 - }, - "request": { - "bytes": 73400320 - } - }, - "name": "coredns", + "id": "9415b19af919bcffb17914b1fa5d78014945b4b4f0fb9b3ecbf918699cacc757", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "hello-wlb5q" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "image": { + "name": "docker.io/library/nginx:1.24.0-alpine-slim" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "id": "4127a8e540add897dd859ec8a70d2c26f68a6ae61f6664a98e755f26dd1f75df", + "name": "nginx", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-kx4f4" + "name": "web-0" } }, "metricset": { @@ -94,9 +123,9 @@ }, { "container": { - "id": "d34823a90b7406d61d95530cf800bc1fbd2307f9ab6c6031da1d22ae577ca081", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", "image": { - "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" + "name": "registry.k8s.io/kube-apiserver-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -109,19 +138,11 @@ "container": { "cpu": { "request": { - "cores": 0.1 - } - }, - "id": "d34823a90b7406d61d95530cf800bc1fbd2307f9ab6c6031da1d22ae577ca081", - "memory": { - "limit": { - "bytes": 209715200 - }, - "request": { - "bytes": 209715200 + "cores": 0.25 } }, - "name": "fluentd-elasticsearch", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", + "name": "kube-apiserver", "status": { "phase": "running", "ready": true, @@ -133,7 +154,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "fluentd-elasticsearch-fwg46" + "name": "kube-apiserver-kind-control-plane" } }, "metricset": { @@ -147,9 +168,9 @@ }, { "container": { - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", "image": { - "name": "registry.k8s.io/kube-apiserver:v1.26.3" + "name": "registry.k8s.io/etcd:3.5.10-0" }, "runtime": "containerd" }, @@ -162,11 +183,16 @@ "container": { "cpu": { "request": { - "cores": 0.25 + "cores": 0.1 } }, - "id": "146ae7ab6b3e9fd79e0f1fc721b54943302747fa4f84041f67b0cbdc89632427", - "name": "kube-apiserver", + "id": "247a9901c7f9c5bf461abc213a0e5e0daf6b9af6c2821ac8c81d0cb3eece7a9d", + "memory": { + "request": { + "bytes": 104857600 + } + }, + "name": "etcd", "status": { "phase": "running", "ready": true, @@ -178,7 +204,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-apiserver-kind-control-plane" + "name": "etcd-kind-control-plane" } }, "metricset": { @@ -192,9 +218,9 @@ }, { "container": { - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.9.3" + "name": "quay.io/fluentd_elasticsearch/fluentd:v2.5.2" }, "runtime": "containerd" }, @@ -210,16 +236,16 @@ "cores": 0.1 } }, - "id": "acb7f4db2e68f827dfb83b71efcdc896dcd3c732b54f021e10897d4da333b06d", + "id": "bac57bbf9243208c19e1d52ae213fa6763c227c680bf7cdb1bdbcfeee86efa08", "memory": { "limit": { - "bytes": 178257920 + "bytes": 209715200 }, "request": { - "bytes": 73400320 + "bytes": 209715200 } }, - "name": "coredns", + "name": "fluentd-elasticsearch", "status": { "phase": "running", "ready": true, @@ -231,7 +257,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-787d4945fb-rb564" + "name": "fluentd-elasticsearch-l8b6x" } }, "metricset": { @@ -245,9 +271,9 @@ }, { "container": { - "id": "861bef44f73cfb196df58121080eb7705eef21dbc975526341ac6078755bb063", + "id": "be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc", "image": { - "name": "docker.io/library/nginx:1.24.0-alpine-slim" + "name": "docker.io/curlimages/curl:latest" }, "runtime": "containerd" }, @@ -258,20 +284,21 @@ }, "kubernetes": { "container": { - "id": "861bef44f73cfb196df58121080eb7705eef21dbc975526341ac6078755bb063", - "name": "nginx", + "id": "be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc", + "name": "mycurlpod", "status": { - "phase": "running", - "ready": true, + "phase": "terminated", + "ready": false, + "reason": "Completed", "restarts": 0 } }, - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "web-0" + "name": "mycurlpod" } }, "metricset": { @@ -285,9 +312,9 @@ }, { "container": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", "image": { - "name": "sha256:c408b2276bb76627a6f633bf0d26052c208ebd51681c6c89866cc9647471c0bc" + "name": "registry.k8s.io/kube-proxy-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -298,20 +325,61 @@ }, "kubernetes": { "container": { - "id": "0360af3d5202db264445277bbf97357bc5304a03f189307d25816272467afece", - "name": "local-path-provisioner", + "id": "8748f765ed9ef2d2ac148301f784a15a3cd902b8179e02ca5370486ca177b138", + "name": "kube-proxy", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "local-path-storage", + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "kube-proxy-45qj9" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450", + "image": { + "name": "docker.io/library/busybox:latest" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "id": "921d3b54ac614468e4fbab9f9fdfe62d193d1f20a8468d66f4b817b794ce6450", + "name": "hello", + "status": { + "phase": "terminated", + "ready": false, + "reason": "Completed", + "restarts": 0 + } + }, + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "name": "local-path-provisioner-75f5b54ffd-bm5sx" + "name": "hello-28564554-llbsx" } }, "metricset": { @@ -325,7 +393,7 @@ }, { "container": { - "id": "a7ae8b5da39c739c3298ea9e07f24c8ddb987137244ddc1bc9b71dca542a2e76", + "id": "546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d", "image": { "name": "docker.io/library/busybox:latest" }, @@ -338,7 +406,7 @@ }, "kubernetes": { "container": { - "id": "a7ae8b5da39c739c3298ea9e07f24c8ddb987137244ddc1bc9b71dca542a2e76", + "id": "546515935a22a504502baaaa5c4ad43e9ffb397723da496adb2d853f5a79a71d", "name": "hello", "status": { "phase": "terminated", @@ -352,7 +420,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "hello-28192809-jbn5z" + "name": "hello-28564556-gkqsk" } }, "metricset": { @@ -366,9 +434,9 @@ }, { "container": { - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", "image": { - "name": "sha256:a329ae3c2c52fe00e9c4eaf48b081cd184ee4bf9aea059e497f4965f0a8deedb" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" }, @@ -380,23 +448,20 @@ "kubernetes": { "container": { "cpu": { - "limit": { - "cores": 0.1 - }, "request": { "cores": 0.1 } }, - "id": "c77a6a9b32ec9a78572697bd6b0ecd3cb8a7e5bbd6e6953d35877b70ecef1072", + "id": "03762feb69c6fa220ff5af305ce76e8bb2a671208830cf890d9f707a325d4fd4", "memory": { "limit": { - "bytes": 52428800 + "bytes": 178257920 }, "request": { - "bytes": 52428800 + "bytes": 73400320 } }, - "name": "kindnet-cni", + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -408,7 +473,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kindnet-7l48v" + "name": "coredns-76f75df574-wfchs" } }, "metricset": { @@ -422,9 +487,9 @@ }, { "container": { - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", "image": { - "name": "registry.k8s.io/kube-scheduler:v1.26.3" + "name": "docker.io/kindest/kindnetd:v20240202-8f1494ea" }, "runtime": "containerd" }, @@ -436,12 +501,23 @@ "kubernetes": { "container": { "cpu": { + "limit": { + "cores": 0.1 + }, "request": { "cores": 0.1 } }, - "id": "abdf93a03aed7a187e8105c26769406d171a15e381c3d780ae97ad8f62cf4e36", - "name": "kube-scheduler", + "id": "92715dd9282a125b40b198c1718bd4f3373f1eef247c37c7cdc5c9d7f199854a", + "memory": { + "limit": { + "bytes": 52428800 + }, + "request": { + "bytes": 52428800 + } + }, + "name": "kindnet-cni", "status": { "phase": "running", "ready": true, @@ -453,7 +529,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-scheduler-kind-control-plane" + "name": "kindnet-98xlt" } }, "metricset": { @@ -467,9 +543,9 @@ }, { "container": { - "id": "d3e044cc786b110c508979573f77aa17c017bd73b19a9eca2f90c931269c8e23", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", "image": { - "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2" + "name": "docker.io/kindest/local-path-provisioner:v20240202-8f1494ea" }, "runtime": "containerd" }, @@ -480,20 +556,20 @@ }, "kubernetes": { "container": { - "id": "d3e044cc786b110c508979573f77aa17c017bd73b19a9eca2f90c931269c8e23", - "name": "kube-state-metrics", + "id": "033cae4f770f37b24fddb21333777bc73698e8806bbb81e8effa71b4202aab2b", + "name": "local-path-provisioner", "status": { "phase": "running", "ready": true, "restarts": 0 } }, - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { - "name": "kube-state-metrics-7bc9d484b6-79ph2" + "name": "local-path-provisioner-7577fdbbfb-wmdwd" } }, "metricset": { @@ -507,9 +583,9 @@ }, { "container": { - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", "image": { - "name": "registry.k8s.io/kube-controller-manager:v1.26.3" + "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" }, "runtime": "containerd" }, @@ -522,11 +598,11 @@ "container": { "cpu": { "request": { - "cores": 0.2 + "cores": 0.1 } }, - "id": "9b733a1a21db2c08e88b6d0bb81c77a90971b349363d84115a32bcda7b6d07c7", - "name": "kube-controller-manager", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "name": "kube-scheduler", "status": { "phase": "running", "ready": true, @@ -538,7 +614,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-controller-manager-kind-control-plane" + "name": "kube-scheduler-kind-control-plane" } }, "metricset": { @@ -552,9 +628,9 @@ }, { "container": { - "id": "332d23c3143978bf7924a98fd162b9e98781ffa5eb6c7a8a99e2da7c293f1910", + "id": "54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585", "image": { - "name": "docker.io/library/busybox:latest" + "name": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.12.0" }, "runtime": "containerd" }, @@ -565,21 +641,20 @@ }, "kubernetes": { "container": { - "id": "332d23c3143978bf7924a98fd162b9e98781ffa5eb6c7a8a99e2da7c293f1910", - "name": "hello", + "id": "54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585", + "name": "kube-state-metrics", "status": { - "phase": "terminated", - "ready": false, - "reason": "Completed", + "phase": "running", + "ready": true, "restarts": 0 } }, - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "name": "hello-fddcc" + "name": "kube-state-metrics-5bcd4898-bntgt" } }, "metricset": { @@ -593,9 +668,9 @@ }, { "container": { - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "image": { - "name": "registry.k8s.io/etcd:3.5.6-0" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" }, @@ -611,13 +686,16 @@ "cores": 0.1 } }, - "id": "a1273d6e88e83111f28f1545849ec12913c3a35d24ae2203cd1bd35db3f5d068", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "memory": { + "limit": { + "bytes": 178257920 + }, "request": { - "bytes": 104857600 + "bytes": 73400320 } }, - "name": "etcd", + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -629,7 +707,52 @@ "name": "kind-control-plane" }, "pod": { - "name": "etcd-kind-control-plane" + "name": "coredns-76f75df574-v8skx" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "container": { + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "image": { + "name": "registry.k8s.io/kube-controller-manager-amd64:v1.29.1" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "cpu": { + "request": { + "cores": 0.2 + } + }, + "id": "f4f832629b98ce1cefd9f409ab57dcd0850164fad75c46e3407b337679e39879", + "name": "kube-controller-manager", + "status": { + "phase": "running", + "ready": true, + "restarts": 0 + } + }, + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "kube-controller-manager-kind-control-plane" } }, "metricset": { diff --git a/metricbeat/module/kubernetes/state_cronjob/_meta/data.json b/metricbeat/module/kubernetes/state_cronjob/_meta/data.json index a694e938ec3..9ef126cb332 100644 --- a/metricbeat/module/kubernetes/state_cronjob/_meta/data.json +++ b/metricbeat/module/kubernetes/state_cronjob/_meta/data.json @@ -11,15 +11,15 @@ "count": 0 }, "created": { - "sec": 1698751160 + "sec": 1713862291 }, "is_suspended": false, "last_schedule": { - "sec": 1698751200 + "sec": 1713873360 }, "name": "hello", "next_schedule": { - "sec": 1698751260 + "sec": 1713873420 } }, "namespace": "default" diff --git a/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.11.0.plain.expected similarity index 87% rename from metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.11.0.plain.expected index bd301eb08a7..3694d7a02c7 100644 --- a/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.11.0.plain.expected @@ -9,15 +9,15 @@ "count": 0 }, "created": { - "sec": 1691568402 + "sec": 1713862291 }, "is_suspended": false, "last_schedule": { - "sec": 1691568420 + "sec": 1713881940 }, "name": "hello", "next_schedule": { - "sec": 1691568480 + "sec": 1713882000 } }, "Index": "", diff --git a/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.12.0.plain.expected similarity index 87% rename from metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.12.0.plain.expected index 728c1a98c0e..eb859d39e61 100644 --- a/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_cronjob/_meta/test/ksm.v2.12.0.plain.expected @@ -9,15 +9,15 @@ "count": 0 }, "created": { - "sec": 1691568526 + "sec": 1713862291 }, "is_suspended": false, "last_schedule": { - "sec": 1691568540 + "sec": 1713873360 }, "name": "hello", "next_schedule": { - "sec": 1691568600 + "sec": 1713873420 } }, "Index": "", diff --git a/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/docs.plain-expected.json index 430c2e73520..755e20d6df6 100644 --- a/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/docs.plain-expected.json @@ -11,15 +11,15 @@ "count": 0 }, "created": { - "sec": 1698751160 + "sec": 1713862291 }, "is_suspended": false, "last_schedule": { - "sec": 1698751200 + "sec": 1713873360 }, "name": "hello", "next_schedule": { - "sec": 1698751260 + "sec": 1713873420 } }, "namespace": "default" diff --git a/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 87% rename from metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.11.0.plain-expected.json index 1ea412f1f6e..5602b474b83 100644 --- a/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -11,15 +11,15 @@ "count": 0 }, "created": { - "sec": 1691568402 + "sec": 1713862291 }, "is_suspended": false, "last_schedule": { - "sec": 1691568420 + "sec": 1713881940 }, "name": "hello", "next_schedule": { - "sec": 1691568480 + "sec": 1713882000 } }, "namespace": "default" diff --git a/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 87% rename from metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.12.0.plain-expected.json index 6594e93fd5b..755e20d6df6 100644 --- a/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_cronjob/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -11,15 +11,15 @@ "count": 0 }, "created": { - "sec": 1691568526 + "sec": 1713862291 }, "is_suspended": false, "last_schedule": { - "sec": 1691568540 + "sec": 1713873360 }, "name": "hello", "next_schedule": { - "sec": 1691568600 + "sec": 1713873420 } }, "namespace": "default" diff --git a/metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.11.0.plain.expected similarity index 100% rename from metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.11.0.plain.expected diff --git a/metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.12.0.plain.expected similarity index 100% rename from metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_daemonset/_meta/test/ksm.v2.12.0.plain.expected diff --git a/metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 100% rename from metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.11.0.plain-expected.json diff --git a/metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 100% rename from metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_daemonset/_meta/testdata/ksm.v2.12.0.plain-expected.json diff --git a/metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.11.0.plain.expected similarity index 100% rename from metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.11.0.plain.expected diff --git a/metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.12.0.plain.expected similarity index 100% rename from metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_deployment/_meta/test/ksm.v2.12.0.plain.expected diff --git a/metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 100% rename from metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.11.0.plain-expected.json diff --git a/metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 100% rename from metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_deployment/_meta/testdata/ksm.v2.12.0.plain-expected.json diff --git a/metricbeat/module/kubernetes/state_job/_meta/data.json b/metricbeat/module/kubernetes/state_job/_meta/data.json index 45a7aebef15..3595e34b9a8 100644 --- a/metricbeat/module/kubernetes/state_job/_meta/data.json +++ b/metricbeat/module/kubernetes/state_job/_meta/data.json @@ -10,7 +10,12 @@ "completions": { "desired": 1 }, - "name": "hello", + "name": "hello-28564554", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, "parallelism": { "desired": 1 }, @@ -23,8 +28,8 @@ "complete": "true" }, "time": { - "completed": "2023-10-31T11:19:41.000Z", - "created": "2023-10-31T11:19:20.000Z" + "completed": "2024-04-23T11:54:02.000Z", + "created": "2024-04-23T11:54:00.000Z" } }, "namespace": "default" diff --git a/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.11.0.plain.expected b/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.11.0.plain.expected new file mode 100644 index 00000000000..904a812c364 --- /dev/null +++ b/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.11.0.plain.expected @@ -0,0 +1,165 @@ +[ + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello-28564697", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T14:17:03.000Z", + "created": "2024-04-23T14:17:00.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello", + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T08:51:49.000Z", + "created": "2024-04-23T08:51:31.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello-28564699", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T14:19:02.000Z", + "created": "2024-04-23T14:19:00.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello-28564698", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T14:18:03.000Z", + "created": "2024-04-23T14:18:00.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + } +] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.12.0.plain.expected b/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.12.0.plain.expected new file mode 100644 index 00000000000..bcc25fc615e --- /dev/null +++ b/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.12.0.plain.expected @@ -0,0 +1,165 @@ +[ + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello-28564555", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:55:03.000Z", + "created": "2024-04-23T11:55:00.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello", + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T08:51:49.000Z", + "created": "2024-04-23T08:51:31.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello-28564554", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:54:02.000Z", + "created": "2024-04-23T11:54:00.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default" + }, + "MetricSetFields": { + "completions": { + "desired": 1 + }, + "name": "hello-28564556", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:56:03.000Z", + "created": "2024-04-23T11:56:00.000Z" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.job", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + } +] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.8.2.plain.expected deleted file mode 100644 index f43115e55ab..00000000000 --- a/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.8.2.plain.expected +++ /dev/null @@ -1,81 +0,0 @@ -[ - { - "RootFields": null, - "ModuleFields": { - "namespace": "default" - }, - "MetricSetFields": { - "completions": { - "desired": 1 - }, - "name": "hello", - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:06:46.000Z", - "created": "2023-08-09T08:06:42.000Z" - } - }, - "Index": "", - "ID": "", - "Namespace": "kubernetes.job", - "Timestamp": "0001-01-01T00:00:00Z", - "Error": null, - "Host": "", - "Service": "", - "Took": 0, - "Period": 0, - "DisableTimeSeries": false - }, - { - "RootFields": null, - "ModuleFields": { - "namespace": "default" - }, - "MetricSetFields": { - "completions": { - "desired": 1 - }, - "name": "hello-28192807", - "owner": { - "is_controller": "true", - "kind": "CronJob", - "name": "hello" - }, - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:07:04.000Z", - "created": "2023-08-09T08:07:00.000Z" - } - }, - "Index": "", - "ID": "", - "Namespace": "kubernetes.job", - "Timestamp": "0001-01-01T00:00:00Z", - "Error": null, - "Host": "", - "Service": "", - "Took": 0, - "Period": 0, - "DisableTimeSeries": false - } -] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.9.2.plain.expected deleted file mode 100644 index 5b54736e74c..00000000000 --- a/metricbeat/module/kubernetes/state_job/_meta/test/ksm.v2.9.2.plain.expected +++ /dev/null @@ -1,81 +0,0 @@ -[ - { - "RootFields": null, - "ModuleFields": { - "namespace": "default" - }, - "MetricSetFields": { - "completions": { - "desired": 1 - }, - "name": "hello", - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:08:51.000Z", - "created": "2023-08-09T08:08:46.000Z" - } - }, - "Index": "", - "ID": "", - "Namespace": "kubernetes.job", - "Timestamp": "0001-01-01T00:00:00Z", - "Error": null, - "Host": "", - "Service": "", - "Took": 0, - "Period": 0, - "DisableTimeSeries": false - }, - { - "RootFields": null, - "ModuleFields": { - "namespace": "default" - }, - "MetricSetFields": { - "completions": { - "desired": 1 - }, - "name": "hello-28192809", - "owner": { - "is_controller": "true", - "kind": "CronJob", - "name": "hello" - }, - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:09:04.000Z", - "created": "2023-08-09T08:09:00.000Z" - } - }, - "Index": "", - "ID": "", - "Namespace": "kubernetes.job", - "Timestamp": "0001-01-01T00:00:00Z", - "Error": null, - "Host": "", - "Service": "", - "Took": 0, - "Period": 0, - "DisableTimeSeries": false - } -] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_job/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_job/_meta/testdata/docs.plain-expected.json index 212e96ee8e5..dab8619a96c 100644 --- a/metricbeat/module/kubernetes/state_job/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_job/_meta/testdata/docs.plain-expected.json @@ -1,4 +1,48 @@ [ + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564554", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:54:02.000Z", + "created": "2024-04-23T11:54:00.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "event": { "dataset": "kubernetes.job", @@ -23,8 +67,52 @@ "complete": "true" }, "time": { - "completed": "2023-10-31T11:19:41.000Z", - "created": "2023-10-31T11:19:20.000Z" + "completed": "2024-04-23T08:51:49.000Z", + "created": "2024-04-23T08:51:31.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564555", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:55:03.000Z", + "created": "2024-04-23T11:55:00.000Z" } }, "namespace": "default" @@ -49,7 +137,7 @@ "completions": { "desired": 1 }, - "name": "hello-28312520", + "name": "hello-28564556", "owner": { "is_controller": "true", "kind": "CronJob", @@ -67,8 +155,8 @@ "complete": "true" }, "time": { - "completed": "2023-10-31T11:20:03.000Z", - "created": "2023-10-31T11:20:00.000Z" + "completed": "2024-04-23T11:56:03.000Z", + "created": "2024-04-23T11:56:00.000Z" } }, "namespace": "default" diff --git a/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.11.0.plain-expected.json b/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.11.0.plain-expected.json new file mode 100644 index 00000000000..16be2e7a332 --- /dev/null +++ b/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -0,0 +1,173 @@ +[ + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564699", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T14:19:02.000Z", + "created": "2024-04-23T14:19:00.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564697", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T14:17:03.000Z", + "created": "2024-04-23T14:17:00.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello", + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T08:51:49.000Z", + "created": "2024-04-23T08:51:31.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564698", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T14:18:03.000Z", + "created": "2024-04-23T14:18:00.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + } +] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.12.0.plain-expected.json b/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.12.0.plain-expected.json new file mode 100644 index 00000000000..dab8619a96c --- /dev/null +++ b/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -0,0 +1,173 @@ +[ + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564554", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:54:02.000Z", + "created": "2024-04-23T11:54:00.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello", + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T08:51:49.000Z", + "created": "2024-04-23T08:51:31.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564555", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:55:03.000Z", + "created": "2024-04-23T11:55:00.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.job", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "hello-28564556", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "hello" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 0, + "failed": 0, + "succeeded": 1 + }, + "status": { + "complete": "true" + }, + "time": { + "completed": "2024-04-23T11:56:03.000Z", + "created": "2024-04-23T11:56:00.000Z" + } + }, + "namespace": "default" + }, + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + } +] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.8.2.plain-expected.json deleted file mode 100644 index a5083d1d7eb..00000000000 --- a/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ /dev/null @@ -1,85 +0,0 @@ -[ - { - "event": { - "dataset": "kubernetes.job", - "duration": 115000, - "module": "kubernetes" - }, - "kubernetes": { - "job": { - "completions": { - "desired": 1 - }, - "name": "hello", - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:06:46.000Z", - "created": "2023-08-09T08:06:42.000Z" - } - }, - "namespace": "default" - }, - "metricset": { - "name": "state_job", - "period": 10000 - }, - "service": { - "address": "127.0.0.1:55555", - "type": "kubernetes" - } - }, - { - "event": { - "dataset": "kubernetes.job", - "duration": 115000, - "module": "kubernetes" - }, - "kubernetes": { - "job": { - "completions": { - "desired": 1 - }, - "name": "hello-28192807", - "owner": { - "is_controller": "true", - "kind": "CronJob", - "name": "hello" - }, - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:07:04.000Z", - "created": "2023-08-09T08:07:00.000Z" - } - }, - "namespace": "default" - }, - "metricset": { - "name": "state_job", - "period": 10000 - }, - "service": { - "address": "127.0.0.1:55555", - "type": "kubernetes" - } - } -] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.9.2.plain-expected.json deleted file mode 100644 index ce8e62c4e25..00000000000 --- a/metricbeat/module/kubernetes/state_job/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ /dev/null @@ -1,85 +0,0 @@ -[ - { - "event": { - "dataset": "kubernetes.job", - "duration": 115000, - "module": "kubernetes" - }, - "kubernetes": { - "job": { - "completions": { - "desired": 1 - }, - "name": "hello-28192809", - "owner": { - "is_controller": "true", - "kind": "CronJob", - "name": "hello" - }, - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:09:04.000Z", - "created": "2023-08-09T08:09:00.000Z" - } - }, - "namespace": "default" - }, - "metricset": { - "name": "state_job", - "period": 10000 - }, - "service": { - "address": "127.0.0.1:55555", - "type": "kubernetes" - } - }, - { - "event": { - "dataset": "kubernetes.job", - "duration": 115000, - "module": "kubernetes" - }, - "kubernetes": { - "job": { - "completions": { - "desired": 1 - }, - "name": "hello", - "parallelism": { - "desired": 1 - }, - "pods": { - "active": 0, - "failed": 0, - "succeeded": 1 - }, - "status": { - "complete": "true" - }, - "time": { - "completed": "2023-08-09T08:08:51.000Z", - "created": "2023-08-09T08:08:46.000Z" - } - }, - "namespace": "default" - }, - "metricset": { - "name": "state_job", - "period": 10000 - }, - "service": { - "address": "127.0.0.1:55555", - "type": "kubernetes" - } - } -] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_namespace/_meta/data.json b/metricbeat/module/kubernetes/state_namespace/_meta/data.json index 45207f3918e..3f742258567 100644 --- a/metricbeat/module/kubernetes/state_namespace/_meta/data.json +++ b/metricbeat/module/kubernetes/state_namespace/_meta/data.json @@ -6,10 +6,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-public", + "namespace": "default", "state_namespace": { "created": { - "sec": 1698675678 + "sec": 1713862181 }, "status": { "active": true, diff --git a/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.11.0.plain.expected similarity index 94% rename from metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.11.0.plain.expected index 4469033344a..e879decaa90 100644 --- a/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.11.0.plain.expected @@ -6,7 +6,7 @@ }, "MetricSetFields": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -31,7 +31,7 @@ }, "MetricSetFields": { "created": { - "sec": 1691566342 + "sec": 1713862186 }, "status": { "active": true, @@ -52,11 +52,11 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-public" + "namespace": "kube-system" }, "MetricSetFields": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -77,11 +77,11 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system" + "namespace": "kube-public" }, "MetricSetFields": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -106,7 +106,7 @@ }, "MetricSetFields": { "created": { - "sec": 1691566338 + "sec": 1713862181 }, "status": { "active": true, diff --git a/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.12.0.plain.expected similarity index 94% rename from metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.12.0.plain.expected index 4469033344a..e879decaa90 100644 --- a/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_namespace/_meta/test/ksm.v2.12.0.plain.expected @@ -6,7 +6,7 @@ }, "MetricSetFields": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -31,7 +31,7 @@ }, "MetricSetFields": { "created": { - "sec": 1691566342 + "sec": 1713862186 }, "status": { "active": true, @@ -52,11 +52,11 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-public" + "namespace": "kube-system" }, "MetricSetFields": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -77,11 +77,11 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system" + "namespace": "kube-public" }, "MetricSetFields": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -106,7 +106,7 @@ }, "MetricSetFields": { "created": { - "sec": 1691566338 + "sec": 1713862181 }, "status": { "active": true, diff --git a/metricbeat/module/kubernetes/state_namespace/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_namespace/_meta/testdata/docs.plain-expected.json index d63fd86a57a..cf367847231 100644 --- a/metricbeat/module/kubernetes/state_namespace/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_namespace/_meta/testdata/docs.plain-expected.json @@ -6,10 +6,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-public", + "namespace": "default", "state_namespace": { "created": { - "sec": 1698675678 + "sec": 1713862181 }, "status": { "active": true, @@ -36,7 +36,7 @@ "namespace": "kube-node-lease", "state_namespace": { "created": { - "sec": 1698675678 + "sec": 1713862181 }, "status": { "active": true, @@ -60,10 +60,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "state_namespace": { "created": { - "sec": 1698675678 + "sec": 1713862186 }, "status": { "active": true, @@ -87,10 +87,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-public", "state_namespace": { "created": { - "sec": 1698675678 + "sec": 1713862181 }, "status": { "active": true, @@ -114,10 +114,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-system", "state_namespace": { "created": { - "sec": 1698675685 + "sec": 1713862181 }, "status": { "active": true, diff --git a/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 94% rename from metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.11.0.plain-expected.json index aff21fa39bf..cf367847231 100644 --- a/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -9,7 +9,7 @@ "namespace": "default", "state_namespace": { "created": { - "sec": 1691566338 + "sec": 1713862181 }, "status": { "active": true, @@ -33,10 +33,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-node-lease", "state_namespace": { "created": { - "sec": 1691566342 + "sec": 1713862181 }, "status": { "active": true, @@ -60,10 +60,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "state_namespace": { "created": { - "sec": 1691566337 + "sec": 1713862186 }, "status": { "active": true, @@ -90,7 +90,7 @@ "namespace": "kube-public", "state_namespace": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -114,10 +114,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-node-lease", + "namespace": "kube-system", "state_namespace": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, diff --git a/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 94% rename from metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.12.0.plain-expected.json index aff21fa39bf..cf367847231 100644 --- a/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_namespace/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -9,7 +9,7 @@ "namespace": "default", "state_namespace": { "created": { - "sec": 1691566338 + "sec": 1713862181 }, "status": { "active": true, @@ -33,10 +33,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-node-lease", "state_namespace": { "created": { - "sec": 1691566342 + "sec": 1713862181 }, "status": { "active": true, @@ -60,10 +60,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "state_namespace": { "created": { - "sec": 1691566337 + "sec": 1713862186 }, "status": { "active": true, @@ -90,7 +90,7 @@ "namespace": "kube-public", "state_namespace": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, @@ -114,10 +114,10 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-node-lease", + "namespace": "kube-system", "state_namespace": { "created": { - "sec": 1691566337 + "sec": 1713862181 }, "status": { "active": true, diff --git a/metricbeat/module/kubernetes/state_node/_meta/data.json b/metricbeat/module/kubernetes/state_node/_meta/data.json index 861e972c1bd..a7cb3d8a53b 100644 --- a/metricbeat/module/kubernetes/state_node/_meta/data.json +++ b/metricbeat/module/kubernetes/state_node/_meta/data.json @@ -9,21 +9,21 @@ "node": { "cpu": { "allocatable": { - "cores": 8 + "cores": 16 }, "capacity": { - "cores": 8 + "cores": 16 } }, "kubelet": { - "version": "v1.27.3" + "version": "v1.29.1" }, "memory": { "allocatable": { - "bytes": 12027240448 + "bytes": 16769380352 }, "capacity": { - "bytes": 12027240448 + "bytes": 16769380352 } }, "name": "kind-control-plane", diff --git a/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.11.0.plain.expected similarity index 87% rename from metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.11.0.plain.expected index 05c3e939ffe..43e2d259848 100644 --- a/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.11.0.plain.expected @@ -5,21 +5,21 @@ "MetricSetFields": { "cpu": { "allocatable": { - "cores": 8 + "cores": 16 }, "capacity": { - "cores": 8 + "cores": 16 } }, "kubelet": { - "version": "v1.26.3" + "version": "v1.29.1" }, "memory": { "allocatable": { - "bytes": 16259682304 + "bytes": 16769380352 }, "capacity": { - "bytes": 16259682304 + "bytes": 16769380352 } }, "name": "kind-control-plane", diff --git a/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.12.0.plain.expected similarity index 87% rename from metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.12.0.plain.expected index 05c3e939ffe..43e2d259848 100644 --- a/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_node/_meta/test/ksm.v2.12.0.plain.expected @@ -5,21 +5,21 @@ "MetricSetFields": { "cpu": { "allocatable": { - "cores": 8 + "cores": 16 }, "capacity": { - "cores": 8 + "cores": 16 } }, "kubelet": { - "version": "v1.26.3" + "version": "v1.29.1" }, "memory": { "allocatable": { - "bytes": 16259682304 + "bytes": 16769380352 }, "capacity": { - "bytes": 16259682304 + "bytes": 16769380352 } }, "name": "kind-control-plane", diff --git a/metricbeat/module/kubernetes/state_node/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_node/_meta/testdata/docs.plain-expected.json index 2738fd40eea..9a3de184e96 100644 --- a/metricbeat/module/kubernetes/state_node/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_node/_meta/testdata/docs.plain-expected.json @@ -9,21 +9,21 @@ "node": { "cpu": { "allocatable": { - "cores": 8 + "cores": 16 }, "capacity": { - "cores": 8 + "cores": 16 } }, "kubelet": { - "version": "v1.27.3" + "version": "v1.29.1" }, "memory": { "allocatable": { - "bytes": 12027240448 + "bytes": 16769380352 }, "capacity": { - "bytes": 12027240448 + "bytes": 16769380352 } }, "name": "kind-control-plane", diff --git a/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 86% rename from metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.11.0.plain-expected.json index 235bd32c3cd..9a3de184e96 100644 --- a/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -9,21 +9,21 @@ "node": { "cpu": { "allocatable": { - "cores": 8 + "cores": 16 }, "capacity": { - "cores": 8 + "cores": 16 } }, "kubelet": { - "version": "v1.26.3" + "version": "v1.29.1" }, "memory": { "allocatable": { - "bytes": 16259682304 + "bytes": 16769380352 }, "capacity": { - "bytes": 16259682304 + "bytes": 16769380352 } }, "name": "kind-control-plane", diff --git a/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 86% rename from metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.12.0.plain-expected.json index 235bd32c3cd..9a3de184e96 100644 --- a/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_node/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -9,21 +9,21 @@ "node": { "cpu": { "allocatable": { - "cores": 8 + "cores": 16 }, "capacity": { - "cores": 8 + "cores": 16 } }, "kubelet": { - "version": "v1.26.3" + "version": "v1.29.1" }, "memory": { "allocatable": { - "bytes": 16259682304 + "bytes": 16769380352 }, "capacity": { - "bytes": 16259682304 + "bytes": 16769380352 } }, "name": "kind-control-plane", diff --git a/metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.11.0.plain.expected similarity index 100% rename from metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.11.0.plain.expected diff --git a/metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.12.0.plain.expected similarity index 100% rename from metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_persistentvolume/_meta/test/ksm.v2.12.0.plain.expected diff --git a/metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 100% rename from metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.11.0.plain-expected.json diff --git a/metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 100% rename from metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_persistentvolume/_meta/testdata/ksm.v2.12.0.plain-expected.json diff --git a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/data.json b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/data.json index e670a2d80ea..8f7358b1c4c 100644 --- a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/data.json +++ b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/data.json @@ -9,7 +9,7 @@ "namespace": "default", "persistentvolumeclaim": { "access_mode": "ReadWriteOnce", - "created": "2023-10-31T11:19:20.000Z", + "created": "2024-04-23T08:51:31.000Z", "name": "task-pv-claim", "phase": "Bound", "request_storage": { diff --git a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.11.0.plain.expected similarity index 92% rename from metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.11.0.plain.expected index f407ac8e5c5..50c74eea00f 100644 --- a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.11.0.plain.expected @@ -6,7 +6,7 @@ }, "MetricSetFields": { "access_mode": "ReadWriteOnce", - "created": "2023-08-09T08:06:42.000Z", + "created": "2024-04-23T08:51:31.000Z", "name": "task-pv-claim", "phase": "Bound", "request_storage": { diff --git a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.12.0.plain.expected similarity index 92% rename from metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.12.0.plain.expected index aba538bc89d..50c74eea00f 100644 --- a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/test/ksm.v2.12.0.plain.expected @@ -6,7 +6,7 @@ }, "MetricSetFields": { "access_mode": "ReadWriteOnce", - "created": "2023-08-09T08:08:46.000Z", + "created": "2024-04-23T08:51:31.000Z", "name": "task-pv-claim", "phase": "Bound", "request_storage": { diff --git a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/docs.plain-expected.json index 7d9306f618e..dba45a1263f 100644 --- a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/docs.plain-expected.json @@ -9,7 +9,7 @@ "namespace": "default", "persistentvolumeclaim": { "access_mode": "ReadWriteOnce", - "created": "2023-10-31T11:19:20.000Z", + "created": "2024-04-23T08:51:31.000Z", "name": "task-pv-claim", "phase": "Bound", "request_storage": { diff --git a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 93% rename from metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.11.0.plain-expected.json index 7f78b6c3239..dba45a1263f 100644 --- a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -9,7 +9,7 @@ "namespace": "default", "persistentvolumeclaim": { "access_mode": "ReadWriteOnce", - "created": "2023-08-09T08:06:42.000Z", + "created": "2024-04-23T08:51:31.000Z", "name": "task-pv-claim", "phase": "Bound", "request_storage": { diff --git a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 93% rename from metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.12.0.plain-expected.json index 5628e600121..dba45a1263f 100644 --- a/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_persistentvolumeclaim/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -9,7 +9,7 @@ "namespace": "default", "persistentvolumeclaim": { "access_mode": "ReadWriteOnce", - "created": "2023-08-09T08:08:46.000Z", + "created": "2024-04-23T08:51:31.000Z", "name": "task-pv-claim", "phase": "Bound", "request_storage": { diff --git a/metricbeat/module/kubernetes/state_pod/_meta/data.json b/metricbeat/module/kubernetes/state_pod/_meta/data.json index 0e1a0fa2b24..41ba094c58e 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/data.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/data.json @@ -6,14 +6,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.6", - "name": "web-0", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", diff --git a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.11.0.plain.expected similarity index 71% rename from metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.11.0.plain.expected index c597f3d986c..9dd8d1e7d41 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.11.0.plain.expected @@ -2,15 +2,15 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.15", - "name": "web-0", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -37,9 +37,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kindnet-7l48v", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", "status": { "phase": "running", "ready": "true", @@ -60,18 +60,18 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.3", - "name": "coredns-787d4945fb-kx4f4", + "host_ip": "172.21.0.2", + "ip": "10.244.0.86", + "name": "hello-28564699-9mstw", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } }, @@ -95,12 +95,12 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.13", - "name": "hello-7dfgp", + "host_ip": "172.21.0.2", + "ip": "10.244.0.8", + "name": "web-0", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", "scheduled": "true" } }, @@ -124,9 +124,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-scheduler-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.40", + "name": "kube-state-metrics-cbc966f68-9kq2v", "status": { "phase": "running", "ready": "true", @@ -147,15 +147,15 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.14", - "name": "kube-state-metrics-fb945547c-zdncb", + "host_ip": "172.21.0.2", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", @@ -176,15 +176,15 @@ { "RootFields": null, "ModuleFields": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", + "host_ip": "172.21.0.2", "ip": "10.244.0.4", - "name": "local-path-provisioner-75f5b54ffd-bm5sx", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", @@ -211,9 +211,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.12", - "name": "fluentd-elasticsearch-qrlkt", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -240,9 +240,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-controller-manager-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -269,9 +269,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-apiserver-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", @@ -289,6 +289,64 @@ "Period": 0, "DisableTimeSeries": false }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + } + }, + "MetricSetFields": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.7", + "name": "hello-wlb5q", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.pod", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + } + }, + "MetricSetFields": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.81", + "name": "hello-28564697-8dmzw", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.pod", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, { "RootFields": null, "ModuleFields": { @@ -298,9 +356,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "etcd-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.85", + "name": "mycurlpod", "status": { "phase": "running", "ready": "true", @@ -318,6 +376,35 @@ "Period": 0, "DisableTimeSeries": false }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + } + }, + "MetricSetFields": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.84", + "name": "hello-28564698-tv8jb", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.pod", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, { "RootFields": null, "ModuleFields": { @@ -327,9 +414,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.2", - "name": "coredns-787d4945fb-rb564", + "host_ip": "172.21.0.2", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { "phase": "running", "ready": "true", @@ -356,9 +443,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-proxy-nw7gg", + "host_ip": "172.21.0.2", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", "ready": "true", @@ -379,18 +466,18 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.16", - "name": "hello-28192807-p6f5s", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", "scheduled": "true" } }, diff --git a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.12.0.plain.expected similarity index 71% rename from metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.12.0.plain.expected index 6b8947a1b8b..ff6eac9e4f0 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.12.0.plain.expected @@ -2,15 +2,15 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.19", - "name": "web-0", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -37,9 +37,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kindnet-7l48v", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", "status": { "phase": "running", "ready": "true", @@ -60,15 +60,15 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.3", - "name": "coredns-787d4945fb-kx4f4", + "host_ip": "172.21.0.2", + "ip": "10.244.0.8", + "name": "web-0", "status": { "phase": "running", "ready": "true", @@ -95,9 +95,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.20", - "name": "hello-fddcc", + "host_ip": "172.21.0.2", + "ip": "10.244.0.172", + "name": "hello-28564554-llbsx", "status": { "phase": "succeeded", "ready": "false", @@ -124,12 +124,12 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.21", - "name": "fluentd-elasticsearch-fwg46", + "host_ip": "172.21.0.2", + "ip": "10.244.0.177", + "name": "mycurlpod", "status": { "phase": "running", - "ready": "true", + "ready": "false", "scheduled": "true" } }, @@ -147,18 +147,18 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.22", - "name": "hello-28192809-jbn5z", + "host_ip": "172.21.0.2", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", "scheduled": "true" } }, @@ -182,9 +182,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-scheduler-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.174", + "name": "kube-state-metrics-5bcd4898-bntgt", "status": { "phase": "running", "ready": "true", @@ -205,15 +205,15 @@ { "RootFields": null, "ModuleFields": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { - "host_ip": "172.18.0.2", + "host_ip": "172.21.0.2", "ip": "10.244.0.4", - "name": "local-path-provisioner-75f5b54ffd-bm5sx", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", @@ -231,6 +231,35 @@ "Period": 0, "DisableTimeSeries": false }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + } + }, + "MetricSetFields": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.173", + "name": "hello-28564555-zdfjz", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.pod", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, { "RootFields": null, "ModuleFields": { @@ -240,9 +269,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.18", - "name": "kube-state-metrics-7bc9d484b6-79ph2", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -269,9 +298,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-controller-manager-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -298,9 +327,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-apiserver-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", @@ -318,6 +347,35 @@ "Period": 0, "DisableTimeSeries": false }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + } + }, + "MetricSetFields": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.7", + "name": "hello-wlb5q", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.pod", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, { "RootFields": null, "ModuleFields": { @@ -327,9 +385,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "etcd-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { "phase": "running", "ready": "true", @@ -347,6 +405,35 @@ "Period": 0, "DisableTimeSeries": false }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + } + }, + "MetricSetFields": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.176", + "name": "hello-28564556-gkqsk", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.pod", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, { "RootFields": null, "ModuleFields": { @@ -356,9 +443,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.2", - "name": "coredns-787d4945fb-rb564", + "host_ip": "172.21.0.2", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", "ready": "true", @@ -385,9 +472,9 @@ } }, "MetricSetFields": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-proxy-nw7gg", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", diff --git a/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json index 74de4188355..2f6d43d7933 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json @@ -1,4 +1,35 @@ [ + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", + "status": { + "phase": "running", + "ready": "true", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "event": { "dataset": "kubernetes.pod", @@ -11,9 +42,40 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.6", - "name": "web-0", + "host_ip": "172.21.0.2", + "ip": "10.244.0.173", + "name": "hello-28564555-zdfjz", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", @@ -42,9 +104,40 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.3", - "name": "coredns-5d78c9869d-crtn9", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", + "status": { + "phase": "running", + "ready": "true", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", @@ -73,9 +166,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.9", - "name": "hello-28312520-d5d5s", + "host_ip": "172.21.0.2", + "ip": "10.244.0.172", + "name": "hello-28564554-llbsx", "status": { "phase": "succeeded", "ready": "false", @@ -104,9 +197,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-apiserver-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { "phase": "running", "ready": "true", @@ -135,9 +228,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.8", - "name": "hello-mwrpw", + "host_ip": "172.21.0.2", + "ip": "10.244.0.7", + "name": "hello-wlb5q", "status": { "phase": "succeeded", "ready": "false", @@ -166,9 +259,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-controller-manager-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", "ready": "true", @@ -197,9 +290,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "etcd-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -223,17 +316,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-6bc4bddd6b-6vl7d", + "host_ip": "172.21.0.2", + "ip": "10.244.0.177", + "name": "mycurlpod", "status": { "phase": "running", - "ready": "true", + "ready": "false", "scheduled": "true" } } @@ -254,14 +347,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.5", - "name": "kube-state-metrics-7857446fb4-x78j6", + "host_ip": "172.21.0.2", + "ip": "10.244.0.8", + "name": "web-0", "status": { "phase": "running", "ready": "true", @@ -290,9 +383,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-scheduler-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -316,17 +409,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kindnet-xg6gs", + "host_ip": "172.21.0.2", + "ip": "10.244.0.176", + "name": "hello-28564556-gkqsk", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -347,14 +440,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-proxy-2nq9k", + "host_ip": "172.21.0.2", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", @@ -383,9 +476,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.7", - "name": "fluentd-elasticsearch-m2tlp", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -414,9 +507,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.4", - "name": "coredns-5d78c9869d-gskzq", + "host_ip": "172.21.0.2", + "ip": "10.244.0.174", + "name": "kube-state-metrics-5bcd4898-bntgt", "status": { "phase": "running", "ready": "true", diff --git a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 72% rename from metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.11.0.plain-expected.json index 230d3854f75..cab0d7b67c3 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -11,9 +11,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.13", - "name": "hello-7dfgp", + "host_ip": "172.21.0.2", + "ip": "10.244.0.86", + "name": "hello-28564699-9mstw", "status": { "phase": "succeeded", "ready": "false", @@ -37,14 +37,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.15", - "name": "web-0", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -68,17 +68,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.16", - "name": "hello-28192807-p6f5s", + "host_ip": "172.21.0.2", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", "scheduled": "true" } } @@ -104,9 +104,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kindnet-7l48v", + "host_ip": "172.21.0.2", + "ip": "10.244.0.85", + "name": "mycurlpod", "status": { "phase": "running", "ready": "true", @@ -135,9 +135,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-apiserver-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", "status": { "phase": "running", "ready": "true", @@ -154,6 +154,37 @@ "type": "kubernetes" } }, + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.81", + "name": "hello-28564697-8dmzw", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "event": { "dataset": "kubernetes.pod", @@ -166,9 +197,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.12", - "name": "fluentd-elasticsearch-qrlkt", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", @@ -197,9 +228,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-controller-manager-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.40", + "name": "kube-state-metrics-cbc966f68-9kq2v", "status": { "phase": "running", "ready": "true", @@ -228,9 +259,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "etcd-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { "phase": "running", "ready": "true", @@ -247,6 +278,37 @@ "type": "kubernetes" } }, + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.7", + "name": "hello-wlb5q", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "event": { "dataset": "kubernetes.pod", @@ -259,9 +321,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-proxy-nw7gg", + "host_ip": "172.21.0.2", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", "ready": "true", @@ -285,14 +347,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.4", - "name": "local-path-provisioner-75f5b54ffd-bm5sx", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -316,14 +378,45 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.2", - "name": "coredns-787d4945fb-rb564", + "host_ip": "172.21.0.2", + "ip": "10.244.0.84", + "name": "hello-28564698-tv8jb", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.8", + "name": "web-0", "status": { "phase": "running", "ready": "true", @@ -352,9 +445,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-scheduler-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -378,14 +471,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.3", - "name": "coredns-787d4945fb-kx4f4", + "host_ip": "172.21.0.2", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", @@ -414,9 +507,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.14", - "name": "kube-state-metrics-fb945547c-zdncb", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", diff --git a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 72% rename from metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.12.0.plain-expected.json index c518f38109b..2f6d43d7933 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -1,4 +1,35 @@ [ + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", + "status": { + "phase": "running", + "ready": "true", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "event": { "dataset": "kubernetes.pod", @@ -11,9 +42,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.22", - "name": "hello-28192809-jbn5z", + "host_ip": "172.21.0.2", + "ip": "10.244.0.173", + "name": "hello-28564555-zdfjz", "status": { "phase": "succeeded", "ready": "false", @@ -42,9 +73,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.18", - "name": "kube-state-metrics-7bc9d484b6-79ph2", + "host_ip": "172.21.0.2", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", @@ -73,9 +104,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kindnet-7l48v", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", "status": { "phase": "running", "ready": "true", @@ -104,9 +135,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-apiserver-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", @@ -130,17 +161,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.21", - "name": "fluentd-elasticsearch-fwg46", + "host_ip": "172.21.0.2", + "ip": "10.244.0.172", + "name": "hello-28564554-llbsx", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -166,9 +197,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-controller-manager-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { "phase": "running", "ready": "true", @@ -185,6 +216,37 @@ "type": "kubernetes" } }, + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.7", + "name": "hello-wlb5q", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "event": { "dataset": "kubernetes.pod", @@ -197,9 +259,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "etcd-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", "ready": "true", @@ -223,14 +285,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.19", - "name": "web-0", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -259,12 +321,12 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-proxy-nw7gg", + "host_ip": "172.21.0.2", + "ip": "10.244.0.177", + "name": "mycurlpod", "status": { "phase": "running", - "ready": "true", + "ready": "false", "scheduled": "true" } } @@ -285,14 +347,14 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.4", - "name": "local-path-provisioner-75f5b54ffd-bm5sx", + "host_ip": "172.21.0.2", + "ip": "10.244.0.8", + "name": "web-0", "status": { "phase": "running", "ready": "true", @@ -321,9 +383,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.2", - "name": "coredns-787d4945fb-rb564", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -347,14 +409,45 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-scheduler-kind-control-plane", + "host_ip": "172.21.0.2", + "ip": "10.244.0.176", + "name": "hello-28564556-gkqsk", + "status": { + "phase": "succeeded", + "ready": "false", + "scheduled": "true" + } + } + }, + "metricset": { + "name": "state_pod", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.pod", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "local-path-storage", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", @@ -383,9 +476,9 @@ "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.3", - "name": "coredns-787d4945fb-kx4f4", + "host_ip": "172.21.0.2", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", @@ -409,17 +502,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { - "host_ip": "172.18.0.2", - "ip": "10.244.0.20", - "name": "hello-fddcc", + "host_ip": "172.21.0.2", + "ip": "10.244.0.174", + "name": "kube-state-metrics-5bcd4898-bntgt", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", "scheduled": "true" } } diff --git a/metricbeat/module/kubernetes/state_replicaset/_meta/data.json b/metricbeat/module/kubernetes/state_replicaset/_meta/data.json index 4e34b524af8..a28863ca21d 100644 --- a/metricbeat/module/kubernetes/state_replicaset/_meta/data.json +++ b/metricbeat/module/kubernetes/state_replicaset/_meta/data.json @@ -8,7 +8,7 @@ "kubernetes": { "namespace": "local-path-storage", "replicaset": { - "name": "local-path-provisioner-6bc4bddd6b", + "name": "local-path-provisioner-7577fdbbfb", "replicas": { "available": 1, "desired": 1, diff --git a/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.11.0.plain.expected similarity index 54% rename from metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.11.0.plain.expected index 4d975713974..ea5f35a0a3a 100644 --- a/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.11.0.plain.expected @@ -5,7 +5,7 @@ "namespace": "kube-system" }, "MetricSetFields": { - "name": "coredns-787d4945fb", + "name": "coredns-76f75df574", "replicas": { "available": 2, "desired": 2, @@ -31,7 +31,7 @@ "namespace": "kube-system" }, "MetricSetFields": { - "name": "kube-state-metrics-7bc9d484b6", + "name": "kube-state-metrics-cbc966f68", "replicas": { "available": 1, "desired": 1, @@ -57,7 +57,7 @@ "namespace": "local-path-storage" }, "MetricSetFields": { - "name": "local-path-provisioner-75f5b54ffd", + "name": "local-path-provisioner-7577fdbbfb", "replicas": { "available": 1, "desired": 1, @@ -76,5 +76,57 @@ "Took": 0, "Period": 0, "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "kube-system" + }, + "MetricSetFields": { + "name": "kube-state-metrics-885b7d5c8", + "replicas": { + "available": 0, + "desired": 0, + "labeled": 0, + "observed": 2, + "ready": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.replicaset", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "kube-system" + }, + "MetricSetFields": { + "name": "kube-state-metrics-5bcd4898", + "replicas": { + "available": 0, + "desired": 0, + "labeled": 0, + "observed": 2, + "ready": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.replicaset", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false } ] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.12.0.plain.expected similarity index 68% rename from metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.12.0.plain.expected index a12b5016a74..7a383e1f93c 100644 --- a/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_replicaset/_meta/test/ksm.v2.12.0.plain.expected @@ -5,7 +5,7 @@ "namespace": "kube-system" }, "MetricSetFields": { - "name": "coredns-787d4945fb", + "name": "coredns-76f75df574", "replicas": { "available": 2, "desired": 2, @@ -28,10 +28,10 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system" + "namespace": "local-path-storage" }, "MetricSetFields": { - "name": "kube-state-metrics-fb945547c", + "name": "local-path-provisioner-7577fdbbfb", "replicas": { "available": 1, "desired": 1, @@ -54,10 +54,10 @@ { "RootFields": null, "ModuleFields": { - "namespace": "local-path-storage" + "namespace": "kube-system" }, "MetricSetFields": { - "name": "local-path-provisioner-75f5b54ffd", + "name": "kube-state-metrics-5bcd4898", "replicas": { "available": 1, "desired": 1, @@ -76,5 +76,31 @@ "Took": 0, "Period": 0, "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "kube-system" + }, + "MetricSetFields": { + "name": "kube-state-metrics-885b7d5c8", + "replicas": { + "available": 0, + "desired": 0, + "labeled": 0, + "observed": 2, + "ready": 0 + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.replicaset", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false } ] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/docs.plain-expected.json index 10dbe8e0015..7794615f56d 100644 --- a/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/docs.plain-expected.json @@ -8,7 +8,7 @@ "kubernetes": { "namespace": "local-path-storage", "replicaset": { - "name": "local-path-provisioner-6bc4bddd6b", + "name": "local-path-provisioner-7577fdbbfb", "replicas": { "available": 1, "desired": 1, @@ -36,13 +36,13 @@ "kubernetes": { "namespace": "kube-system", "replicaset": { - "name": "coredns-5d78c9869d", + "name": "kube-state-metrics-885b7d5c8", "replicas": { - "available": 2, - "desired": 2, - "labeled": 2, - "observed": 1, - "ready": 2 + "available": 0, + "desired": 0, + "labeled": 0, + "observed": 2, + "ready": 0 } } }, @@ -64,7 +64,7 @@ "kubernetes": { "namespace": "kube-system", "replicaset": { - "name": "kube-state-metrics-7857446fb4", + "name": "kube-state-metrics-5bcd4898", "replicas": { "available": 1, "desired": 1, @@ -82,5 +82,33 @@ "address": "127.0.0.1:55555", "type": "kubernetes" } + }, + { + "event": { + "dataset": "kubernetes.replicaset", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "kube-system", + "replicaset": { + "name": "coredns-76f75df574", + "replicas": { + "available": 2, + "desired": 2, + "labeled": 2, + "observed": 1, + "ready": 2 + } + } + }, + "metricset": { + "name": "state_replicaset", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } } ] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 55% rename from metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.11.0.plain-expected.json index ba066638e79..4bc610a0c3a 100644 --- a/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -1,4 +1,60 @@ [ + { + "event": { + "dataset": "kubernetes.replicaset", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "local-path-storage", + "replicaset": { + "name": "local-path-provisioner-7577fdbbfb", + "replicas": { + "available": 1, + "desired": 1, + "labeled": 1, + "observed": 1, + "ready": 1 + } + } + }, + "metricset": { + "name": "state_replicaset", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, + { + "event": { + "dataset": "kubernetes.replicaset", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "kube-system", + "replicaset": { + "name": "kube-state-metrics-885b7d5c8", + "replicas": { + "available": 0, + "desired": 0, + "labeled": 0, + "observed": 2, + "ready": 0 + } + } + }, + "metricset": { + "name": "state_replicaset", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "event": { "dataset": "kubernetes.replicaset", @@ -8,7 +64,7 @@ "kubernetes": { "namespace": "kube-system", "replicaset": { - "name": "coredns-787d4945fb", + "name": "coredns-76f75df574", "replicas": { "available": 2, "desired": 2, @@ -36,13 +92,13 @@ "kubernetes": { "namespace": "kube-system", "replicaset": { - "name": "kube-state-metrics-7bc9d484b6", + "name": "kube-state-metrics-5bcd4898", "replicas": { - "available": 1, - "desired": 1, - "labeled": 1, - "observed": 1, - "ready": 1 + "available": 0, + "desired": 0, + "labeled": 0, + "observed": 2, + "ready": 0 } } }, @@ -62,9 +118,9 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-system", "replicaset": { - "name": "local-path-provisioner-75f5b54ffd", + "name": "kube-state-metrics-cbc966f68", "replicas": { "available": 1, "desired": 1, diff --git a/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 69% rename from metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.12.0.plain-expected.json index 30c287f7a8d..7794615f56d 100644 --- a/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_replicaset/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -6,9 +6,9 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "replicaset": { - "name": "kube-state-metrics-fb945547c", + "name": "local-path-provisioner-7577fdbbfb", "replicas": { "available": 1, "desired": 1, @@ -36,13 +36,13 @@ "kubernetes": { "namespace": "kube-system", "replicaset": { - "name": "coredns-787d4945fb", + "name": "kube-state-metrics-885b7d5c8", "replicas": { - "available": 2, - "desired": 2, - "labeled": 2, - "observed": 1, - "ready": 2 + "available": 0, + "desired": 0, + "labeled": 0, + "observed": 2, + "ready": 0 } } }, @@ -62,9 +62,9 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-system", "replicaset": { - "name": "local-path-provisioner-75f5b54ffd", + "name": "kube-state-metrics-5bcd4898", "replicas": { "available": 1, "desired": 1, @@ -82,5 +82,33 @@ "address": "127.0.0.1:55555", "type": "kubernetes" } + }, + { + "event": { + "dataset": "kubernetes.replicaset", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "namespace": "kube-system", + "replicaset": { + "name": "coredns-76f75df574", + "replicas": { + "available": 2, + "desired": 2, + "labeled": 2, + "observed": 1, + "ready": 2 + } + } + }, + "metricset": { + "name": "state_replicaset", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } } ] \ No newline at end of file diff --git a/metricbeat/module/kubernetes/state_resourcequota/_meta/data.json b/metricbeat/module/kubernetes/state_resourcequota/_meta/data.json index 9e402254c2e..2d1da9881c7 100644 --- a/metricbeat/module/kubernetes/state_resourcequota/_meta/data.json +++ b/metricbeat/module/kubernetes/state_resourcequota/_meta/data.json @@ -8,10 +8,10 @@ "kubernetes": { "namespace": "default", "resourcequota": { - "name": "pods-high", - "quota": 1000, - "resource": "cpu", - "type": "hard" + "created": { + "sec": 1713862291 + }, + "name": "pods-high" } }, "metricset": { diff --git a/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.11.0.plain.expected similarity index 99% rename from metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.11.0.plain.expected index bcec2c1e188..32330c1e0e0 100644 --- a/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.11.0.plain.expected @@ -5,10 +5,10 @@ "namespace": "default" }, "MetricSetFields": { - "name": "pods-high", - "quota": 204800, - "resource": "memory", - "type": "hard" + "created": { + "sec": 1713862291 + }, + "name": "pods-high" }, "Index": "", "ID": "", @@ -27,10 +27,10 @@ "namespace": "default" }, "MetricSetFields": { - "created": { - "sec": 1691568402 - }, - "name": "pods-high" + "name": "pods-high", + "quota": 204800, + "resource": "memory", + "type": "hard" }, "Index": "", "ID": "", diff --git a/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.12.0.plain.expected similarity index 99% rename from metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.12.0.plain.expected index b5cc344f668..32330c1e0e0 100644 --- a/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_resourcequota/_meta/test/ksm.v2.12.0.plain.expected @@ -5,10 +5,10 @@ "namespace": "default" }, "MetricSetFields": { - "name": "pods-high", - "quota": 204800, - "resource": "memory", - "type": "hard" + "created": { + "sec": 1713862291 + }, + "name": "pods-high" }, "Index": "", "ID": "", @@ -27,10 +27,10 @@ "namespace": "default" }, "MetricSetFields": { - "created": { - "sec": 1691568526 - }, - "name": "pods-high" + "name": "pods-high", + "quota": 204800, + "resource": "memory", + "type": "hard" }, "Index": "", "ID": "", diff --git a/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/docs.plain-expected.json index c4fe4b58cb8..8010d78729f 100644 --- a/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/docs.plain-expected.json @@ -8,10 +8,10 @@ "kubernetes": { "namespace": "default", "resourcequota": { - "name": "pods-high", - "quota": 1000, - "resource": "cpu", - "type": "hard" + "created": { + "sec": 1713862291 + }, + "name": "pods-high" } }, "metricset": { @@ -33,9 +33,9 @@ "namespace": "default", "resourcequota": { "name": "pods-high", - "quota": 0, - "resource": "memory", - "type": "used" + "quota": 1000, + "resource": "cpu", + "type": "hard" } }, "metricset": { @@ -56,10 +56,10 @@ "kubernetes": { "namespace": "default", "resourcequota": { - "created": { - "sec": 1698751160 - }, - "name": "pods-high" + "name": "pods-high", + "quota": 0, + "resource": "memory", + "type": "used" } }, "metricset": { diff --git a/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 99% rename from metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.11.0.plain-expected.json index 8faed75025b..8010d78729f 100644 --- a/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -9,7 +9,7 @@ "namespace": "default", "resourcequota": { "created": { - "sec": 1691568402 + "sec": 1713862291 }, "name": "pods-high" } diff --git a/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 99% rename from metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.12.0.plain-expected.json index 34231f391f4..8010d78729f 100644 --- a/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_resourcequota/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -8,10 +8,10 @@ "kubernetes": { "namespace": "default", "resourcequota": { - "name": "pods-high", - "quota": 1000, - "resource": "cpu", - "type": "hard" + "created": { + "sec": 1713862291 + }, + "name": "pods-high" } }, "metricset": { @@ -33,9 +33,9 @@ "namespace": "default", "resourcequota": { "name": "pods-high", - "quota": 0, - "resource": "memory", - "type": "used" + "quota": 1000, + "resource": "cpu", + "type": "hard" } }, "metricset": { @@ -57,9 +57,9 @@ "namespace": "default", "resourcequota": { "name": "pods-high", - "quota": 10, - "resource": "pods", - "type": "hard" + "quota": 0, + "resource": "memory", + "type": "used" } }, "metricset": { @@ -80,10 +80,10 @@ "kubernetes": { "namespace": "default", "resourcequota": { - "created": { - "sec": 1691568526 - }, - "name": "pods-high" + "name": "pods-high", + "quota": 10, + "resource": "pods", + "type": "hard" } }, "metricset": { diff --git a/metricbeat/module/kubernetes/state_service/_meta/data.json b/metricbeat/module/kubernetes/state_service/_meta/data.json index 2a0e89da1d3..10a6e9003df 100644 --- a/metricbeat/module/kubernetes/state_service/_meta/data.json +++ b/metricbeat/module/kubernetes/state_service/_meta/data.json @@ -9,7 +9,7 @@ "namespace": "kube-system", "service": { "cluster_ip": "10.96.0.10", - "created": "2023-10-30T14:21:22.000Z", + "created": "2024-04-23T08:49:44.000Z", "name": "kube-dns", "type": "ClusterIP" } diff --git a/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.11.0.plain.expected similarity index 77% rename from metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.11.0.plain.expected index 9cc0293310e..170b580c4a5 100644 --- a/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.11.0.plain.expected @@ -2,15 +2,12 @@ { "RootFields": null, "ModuleFields": { - "labels": { - "uid": "47c4b57d-96b5-482c-9da0-c543cd1589fb" - }, "namespace": "kube-system" }, "MetricSetFields": { - "cluster_ip": "None", - "created": "2023-08-09T08:06:42.000Z", - "name": "kube-state-metrics", + "cluster_ip": "10.96.0.10", + "created": "2024-04-23T08:49:44.000Z", + "name": "kube-dns", "type": "ClusterIP" }, "Index": "", @@ -27,15 +24,12 @@ { "RootFields": null, "ModuleFields": { - "labels": { - "uid": "d402e60c-e633-4ef1-919e-08bfd4fe1c5c" - }, - "namespace": "default" + "namespace": "kube-system" }, "MetricSetFields": { - "cluster_ip": "10.96.0.1", - "created": "2023-08-09T07:32:18.000Z", - "name": "kubernetes", + "cluster_ip": "None", + "created": "2024-04-23T08:50:43.000Z", + "name": "kube-state-metrics", "type": "ClusterIP" }, "Index": "", @@ -52,15 +46,12 @@ { "RootFields": null, "ModuleFields": { - "labels": { - "uid": "057e71cd-9a20-4382-85d1-04e087a20354" - }, - "namespace": "kube-system" + "namespace": "default" }, "MetricSetFields": { - "cluster_ip": "10.96.0.10", - "created": "2023-08-09T07:32:20.000Z", - "name": "kube-dns", + "cluster_ip": "10.96.0.1", + "created": "2024-04-23T08:49:42.000Z", + "name": "kubernetes", "type": "ClusterIP" }, "Index": "", diff --git a/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.12.0.plain.expected similarity index 77% rename from metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.12.0.plain.expected index 1abb6c85fec..170b580c4a5 100644 --- a/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_service/_meta/test/ksm.v2.12.0.plain.expected @@ -2,15 +2,12 @@ { "RootFields": null, "ModuleFields": { - "labels": { - "uid": "d402e60c-e633-4ef1-919e-08bfd4fe1c5c" - }, - "namespace": "default" + "namespace": "kube-system" }, "MetricSetFields": { - "cluster_ip": "10.96.0.1", - "created": "2023-08-09T07:32:18.000Z", - "name": "kubernetes", + "cluster_ip": "10.96.0.10", + "created": "2024-04-23T08:49:44.000Z", + "name": "kube-dns", "type": "ClusterIP" }, "Index": "", @@ -27,14 +24,11 @@ { "RootFields": null, "ModuleFields": { - "labels": { - "uid": "15b6cf52-6e65-4081-ab05-e2dba135ecfc" - }, "namespace": "kube-system" }, "MetricSetFields": { "cluster_ip": "None", - "created": "2023-08-09T08:08:46.000Z", + "created": "2024-04-23T08:50:43.000Z", "name": "kube-state-metrics", "type": "ClusterIP" }, @@ -52,15 +46,12 @@ { "RootFields": null, "ModuleFields": { - "labels": { - "uid": "057e71cd-9a20-4382-85d1-04e087a20354" - }, - "namespace": "kube-system" + "namespace": "default" }, "MetricSetFields": { - "cluster_ip": "10.96.0.10", - "created": "2023-08-09T07:32:20.000Z", - "name": "kube-dns", + "cluster_ip": "10.96.0.1", + "created": "2024-04-23T08:49:42.000Z", + "name": "kubernetes", "type": "ClusterIP" }, "Index": "", diff --git a/metricbeat/module/kubernetes/state_service/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_service/_meta/testdata/docs.plain-expected.json index ce82e163500..a5d613aedc1 100644 --- a/metricbeat/module/kubernetes/state_service/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_service/_meta/testdata/docs.plain-expected.json @@ -9,7 +9,7 @@ "namespace": "kube-system", "service": { "cluster_ip": "10.96.0.10", - "created": "2023-10-30T14:21:22.000Z", + "created": "2024-04-23T08:49:44.000Z", "name": "kube-dns", "type": "ClusterIP" } @@ -33,7 +33,7 @@ "namespace": "kube-system", "service": { "cluster_ip": "None", - "created": "2023-10-31T11:18:42.000Z", + "created": "2024-04-23T08:50:43.000Z", "name": "kube-state-metrics", "type": "ClusterIP" } @@ -57,7 +57,7 @@ "namespace": "default", "service": { "cluster_ip": "10.96.0.1", - "created": "2023-10-30T14:21:20.000Z", + "created": "2024-04-23T08:49:42.000Z", "name": "kubernetes", "type": "ClusterIP" } diff --git a/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 79% rename from metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.11.0.plain-expected.json index e14cd20dc41..a5d613aedc1 100644 --- a/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -6,14 +6,11 @@ "module": "kubernetes" }, "kubernetes": { - "labels": { - "uid": "47c4b57d-96b5-482c-9da0-c543cd1589fb" - }, "namespace": "kube-system", "service": { - "cluster_ip": "None", - "created": "2023-08-09T08:06:42.000Z", - "name": "kube-state-metrics", + "cluster_ip": "10.96.0.10", + "created": "2024-04-23T08:49:44.000Z", + "name": "kube-dns", "type": "ClusterIP" } }, @@ -33,14 +30,11 @@ "module": "kubernetes" }, "kubernetes": { - "labels": { - "uid": "057e71cd-9a20-4382-85d1-04e087a20354" - }, "namespace": "kube-system", "service": { - "cluster_ip": "10.96.0.10", - "created": "2023-08-09T07:32:20.000Z", - "name": "kube-dns", + "cluster_ip": "None", + "created": "2024-04-23T08:50:43.000Z", + "name": "kube-state-metrics", "type": "ClusterIP" } }, @@ -60,13 +54,10 @@ "module": "kubernetes" }, "kubernetes": { - "labels": { - "uid": "d402e60c-e633-4ef1-919e-08bfd4fe1c5c" - }, "namespace": "default", "service": { "cluster_ip": "10.96.0.1", - "created": "2023-08-09T07:32:18.000Z", + "created": "2024-04-23T08:49:42.000Z", "name": "kubernetes", "type": "ClusterIP" } diff --git a/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 79% rename from metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.12.0.plain-expected.json index 36591f3ea23..a5d613aedc1 100644 --- a/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_service/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -6,13 +6,10 @@ "module": "kubernetes" }, "kubernetes": { - "labels": { - "uid": "057e71cd-9a20-4382-85d1-04e087a20354" - }, "namespace": "kube-system", "service": { "cluster_ip": "10.96.0.10", - "created": "2023-08-09T07:32:20.000Z", + "created": "2024-04-23T08:49:44.000Z", "name": "kube-dns", "type": "ClusterIP" } @@ -33,14 +30,11 @@ "module": "kubernetes" }, "kubernetes": { - "labels": { - "uid": "d402e60c-e633-4ef1-919e-08bfd4fe1c5c" - }, - "namespace": "default", + "namespace": "kube-system", "service": { - "cluster_ip": "10.96.0.1", - "created": "2023-08-09T07:32:18.000Z", - "name": "kubernetes", + "cluster_ip": "None", + "created": "2024-04-23T08:50:43.000Z", + "name": "kube-state-metrics", "type": "ClusterIP" } }, @@ -60,14 +54,11 @@ "module": "kubernetes" }, "kubernetes": { - "labels": { - "uid": "15b6cf52-6e65-4081-ab05-e2dba135ecfc" - }, - "namespace": "kube-system", + "namespace": "default", "service": { - "cluster_ip": "None", - "created": "2023-08-09T08:08:46.000Z", - "name": "kube-state-metrics", + "cluster_ip": "10.96.0.1", + "created": "2024-04-23T08:49:42.000Z", + "name": "kubernetes", "type": "ClusterIP" } }, diff --git a/metricbeat/module/kubernetes/state_statefulset/_meta/data.json b/metricbeat/module/kubernetes/state_statefulset/_meta/data.json index a570e9fc2c2..b3c43e21775 100644 --- a/metricbeat/module/kubernetes/state_statefulset/_meta/data.json +++ b/metricbeat/module/kubernetes/state_statefulset/_meta/data.json @@ -8,7 +8,7 @@ "kubernetes": { "namespace": "default", "statefulset": { - "created": 1698751160, + "created": 1713862291, "generation": { "desired": 1, "observed": 1 diff --git a/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.11.0.plain.expected similarity index 94% rename from metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.11.0.plain.expected index ec098e9472d..65c7100e7ad 100644 --- a/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.11.0.plain.expected @@ -5,7 +5,7 @@ "namespace": "default" }, "MetricSetFields": { - "created": 1691568402, + "created": 1713862291, "generation": { "desired": 1, "observed": 1 diff --git a/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.12.0.plain.expected similarity index 94% rename from metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.12.0.plain.expected index 5c19772e660..65c7100e7ad 100644 --- a/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_statefulset/_meta/test/ksm.v2.12.0.plain.expected @@ -5,7 +5,7 @@ "namespace": "default" }, "MetricSetFields": { - "created": 1691568526, + "created": 1713862291, "generation": { "desired": 1, "observed": 1 diff --git a/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/docs.plain-expected.json index 78189f3e385..3d1a621c085 100644 --- a/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/docs.plain-expected.json @@ -8,7 +8,7 @@ "kubernetes": { "namespace": "default", "statefulset": { - "created": 1698751160, + "created": 1713862291, "generation": { "desired": 1, "observed": 1 diff --git a/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 95% rename from metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.11.0.plain-expected.json index 30682a72a63..3d1a621c085 100644 --- a/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -8,7 +8,7 @@ "kubernetes": { "namespace": "default", "statefulset": { - "created": 1691568402, + "created": 1713862291, "generation": { "desired": 1, "observed": 1 diff --git a/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 95% rename from metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.12.0.plain-expected.json index 850bef3d3d0..3d1a621c085 100644 --- a/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_statefulset/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -8,7 +8,7 @@ "kubernetes": { "namespace": "default", "statefulset": { - "created": 1691568526, + "created": 1713862291, "generation": { "desired": 1, "observed": 1 diff --git a/metricbeat/module/kubernetes/state_storageclass/_meta/data.json b/metricbeat/module/kubernetes/state_storageclass/_meta/data.json index a0d92114d29..c102a734b2b 100644 --- a/metricbeat/module/kubernetes/state_storageclass/_meta/data.json +++ b/metricbeat/module/kubernetes/state_storageclass/_meta/data.json @@ -7,7 +7,7 @@ }, "kubernetes": { "storageclass": { - "created": "2023-10-30T14:21:25.000Z", + "created": "2024-04-23T08:49:46.000Z", "name": "standard", "provisioner": "rancher.io/local-path", "reclaim_policy": "Delete", diff --git a/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.8.2.plain.expected b/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.11.0.plain.expected similarity index 91% rename from metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.8.2.plain.expected rename to metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.11.0.plain.expected index c32aa738be4..8e164970364 100644 --- a/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.8.2.plain.expected +++ b/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.11.0.plain.expected @@ -3,7 +3,7 @@ "RootFields": null, "ModuleFields": null, "MetricSetFields": { - "created": "2023-08-09T07:32:22.000Z", + "created": "2024-04-23T08:49:46.000Z", "name": "standard", "provisioner": "rancher.io/local-path", "reclaim_policy": "Delete", diff --git a/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.9.2.plain.expected b/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.12.0.plain.expected similarity index 91% rename from metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.9.2.plain.expected rename to metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.12.0.plain.expected index c32aa738be4..8e164970364 100644 --- a/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.9.2.plain.expected +++ b/metricbeat/module/kubernetes/state_storageclass/_meta/test/ksm.v2.12.0.plain.expected @@ -3,7 +3,7 @@ "RootFields": null, "ModuleFields": null, "MetricSetFields": { - "created": "2023-08-09T07:32:22.000Z", + "created": "2024-04-23T08:49:46.000Z", "name": "standard", "provisioner": "rancher.io/local-path", "reclaim_policy": "Delete", diff --git a/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/docs.plain-expected.json index d2989bcb3d2..777f0a161ed 100644 --- a/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/docs.plain-expected.json @@ -7,7 +7,7 @@ }, "kubernetes": { "storageclass": { - "created": "2023-10-30T14:21:25.000Z", + "created": "2024-04-23T08:49:46.000Z", "name": "standard", "provisioner": "rancher.io/local-path", "reclaim_policy": "Delete", diff --git a/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.8.2.plain-expected.json b/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.11.0.plain-expected.json similarity index 92% rename from metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.8.2.plain-expected.json rename to metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.11.0.plain-expected.json index e02ae9f2f5f..777f0a161ed 100644 --- a/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.8.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -7,7 +7,7 @@ }, "kubernetes": { "storageclass": { - "created": "2023-08-09T07:32:22.000Z", + "created": "2024-04-23T08:49:46.000Z", "name": "standard", "provisioner": "rancher.io/local-path", "reclaim_policy": "Delete", diff --git a/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.9.2.plain-expected.json b/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.12.0.plain-expected.json similarity index 92% rename from metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.9.2.plain-expected.json rename to metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.12.0.plain-expected.json index e02ae9f2f5f..777f0a161ed 100644 --- a/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.9.2.plain-expected.json +++ b/metricbeat/module/kubernetes/state_storageclass/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -7,7 +7,7 @@ }, "kubernetes": { "storageclass": { - "created": "2023-08-09T07:32:22.000Z", + "created": "2024-04-23T08:49:46.000Z", "name": "standard", "provisioner": "rancher.io/local-path", "reclaim_policy": "Delete", From c0914160f01734e23b35e7b4202b801a206888bd Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Wed, 24 Apr 2024 15:53:09 +0300 Subject: [PATCH 217/313] Add Iron Bank validation Buildkite pipeline (#39179) This commit migrated the Buildkite Iron Bank validation pipeline for x-pack/heartbeat from Jenkins. Relates https://github.com/elastic/ingest-dev/issues/3235 --- .buildkite/ironbank-validation.yml | 26 ++++++++++++++++++++++++++ .buildkite/ironbank-valitation.yml | 1 - 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .buildkite/ironbank-validation.yml delete mode 100644 .buildkite/ironbank-valitation.yml diff --git a/.buildkite/ironbank-validation.yml b/.buildkite/ironbank-validation.yml new file mode 100644 index 00000000000..1184cc75361 --- /dev/null +++ b/.buildkite/ironbank-validation.yml @@ -0,0 +1,26 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json + +env: + # Other deps + ASDF_MAGE_VERSION: 1.15.0 + +steps: + - label: ":package: :test_tube: Package and Validate Iron Bank for x-pack/heartbeat" + command: | + set -euo pipefail + export BEAT_VERSION=$$(make get-version) + echo "~~~ Using BEAT_VERSION: $$BEAT_VERSION" + cd x-pack/heartbeat + echo "--- Package x-pack/heartbeat for the artifacts consumed by the Iron Bank docker context" + make -C ironbank package + echo "--- Prepare the Iron Bank container context" + mage ironbank + echo "--- Build and validate the Iron Bank docker context for x-pack/heartbeat" + make -C ironbank validate-ironbank + agents: + provider: "gcp" + image: "family/platform-ingest-beats-ubuntu-2204" + machineType: "n2-standard-8" + artifact_paths: + - "x-pack/heartbeat/build/distributions/*" + - "x-pack/heartbeat/build/heartbeat-ironbank-*-docker-build-context/*" diff --git a/.buildkite/ironbank-valitation.yml b/.buildkite/ironbank-valitation.yml deleted file mode 100644 index 6135b458d0e..00000000000 --- a/.buildkite/ironbank-valitation.yml +++ /dev/null @@ -1 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json From c9b58e2cfc2971630294a94124dde798ccdcd365 Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Wed, 24 Apr 2024 16:08:18 +0300 Subject: [PATCH 218/313] Winlogbeat: post-migration cleanup (#39154) * removed winlogbeat from pull-requests json & comon script * removed winlogbeat duplicated record --- .buildkite/hooks/pre-command | 1 - .buildkite/pull-requests.json | 18 +- .buildkite/scripts/common.sh | 3 - .../scripts/generate_winlogbeat_pipeline.sh | 168 ------------------ 4 files changed, 1 insertion(+), 189 deletions(-) delete mode 100755 .buildkite/scripts/generate_winlogbeat_pipeline.sh diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 7144331fc28..2abf56684a3 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -60,7 +60,6 @@ ENABLED_BEATS_PIPELINES_SLUGS=( "filebeat" "beats-metricbeat" "beats-winlogbeat" - "beats-winlogbeat" "beats-xpack-winlogbeat" "beats-xpack-dockerlogbeat" "beats-xpack-auditbeat" diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index b79646acd1b..1c541bb7896 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -31,22 +31,6 @@ "skip_target_branches": [ ], "skip_ci_on_only_changed": ["^x-pack/elastic-agent/README.md", "^x-pack/elastic-agent/docs/.*", "^x-pack/elastic-agent/devtools/.*" ], "always_require_ci_on_changed": ["^x-pack/elastic-agent/.*", ".buildkite/x-pack/elastic-agent/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] - }, - { - "enabled": true, - "pipelineSlug": "beats-winlogbeat", - "allow_org_users": true, - "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], - "set_commit_status": true, - "build_on_commit": true, - "build_on_comment": true, - "trigger_comment_regex": "^/test winlogbeat$", - "always_trigger_comment_regex": "^/test winlogbeat$", - "skip_ci_labels": [ ], - "skip_target_branches": [ ], - "skip_ci_on_only_changed": [ ], - "always_require_ci_on_changed": ["^winlogbeat/.*", ".buildkite/winlogbeat/.*", "^go.mod", "^pytest.ini", "^dev-tools/.*", "^libbeat/.*", "^testing/.*"] } ] -} \ No newline at end of file +} diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index 9bd5cf93540..b37ac7494fd 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -24,9 +24,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" -winlogbeat_changeset=( - "^winlogbeat/.*" - ) xpack_dockerlogbeat_changeset=( "^x-pack/dockerlogbeat/.*" diff --git a/.buildkite/scripts/generate_winlogbeat_pipeline.sh b/.buildkite/scripts/generate_winlogbeat_pipeline.sh deleted file mode 100755 index 62fe899c5dd..00000000000 --- a/.buildkite/scripts/generate_winlogbeat_pipeline.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -pipelineName="pipeline.winlogbeat-dynamic.yml" - -echo "Add the mandatory and extended tests without additional conditions into the pipeline" -if are_conditions_met_mandatory_tests; then - cat > $pipelineName <<- YAML - -steps: - - - group: "Mandatory Tests" - key: "mandatory-tests" - steps: - - - label: ":negative_squared_cross_mark: Cross compile" - key: "mandatory-cross-compile" - command: "make -C $BEATS_PROJECT_NAME crosscompile" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Cross compile" - - - label: ":windows: Windows 2016 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2016-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2016}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2016 Unit Tests" - - - label: ":windows: Windows 2019 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2019-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2019}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2019 Unit Tests" - - - label: ":windows: Windows 2022 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "mandatory-win-2022-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_2022}" - machine_type: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 2022 Unit Tests" - -# echo "Add the extended windows tests into the pipeline" -# TODO: ADD conditions from the main pipeline - - - group: "Extended Windows Tests" - key: "extended-win-tests" - steps: - - label: ":windows: Windows 10 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-10-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_10}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 10 Unit Tests" - - - label: ":windows: Windows 11 Unit Tests" - command: | - Set-Location -Path $BEATS_PROJECT_NAME - mage build unitTest - key: "extended-win-11-unit-tests" - agents: - provider: "gcp" - image: "${IMAGE_WIN_11}" - machineType: "${GCP_WIN_MACHINE_TYPE}" - disk_size: 100 - disk_type: "pd-ssd" - artifact_paths: - - "$BEATS_PROJECT_NAME/build/*.xml" - - "$BEATS_PROJECT_NAME/build/*.json" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Windows 11 Unit Tests" - -YAML -else - echo "The conditions don't match to requirements for generating pipeline steps." - exit 0 -fi - -echo "Check and add the Packaging into the pipeline" -if are_conditions_met_packaging; then - cat >> $pipelineName <<- YAML - - - wait: ~ - depends_on: - - step: "mandatory-tests" - allow_failure: false - - - group: "Packaging" # TODO: check conditions for future the main pipeline migration: https://github.com/elastic/beats/pull/28589 - key: "packaging" - steps: - - label: ":linux: Packaging Linux" - key: "packaging-linux" - command: "cd $BEATS_PROJECT_NAME && mage package" - agents: - provider: "gcp" - image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" - env: - PLATFORMS: "${PACKAGING_PLATFORMS}" - notify: - - github_commit_status: - context: "$BEATS_PROJECT_NAME: Packaging Linux" - - -YAML -fi - -echo "+++ Printing dynamic steps" -cat $pipelineName | yq . -P - -echo "--- Loading dynamic steps" -buildkite-agent pipeline upload $pipelineName From b727b3e971dbbe78f48115be14e62dfb66fd9e68 Mon Sep 17 00:00:00 2001 From: Kaan Yalti Date: Wed, 24 Apr 2024 07:11:43 -0700 Subject: [PATCH 219/313] Use upstream go plugins helpers (#39066) * removed module replacement for docker/go-plugins-helpers, and ran go mod tidy * rebased, and ran go mod tidy * ran make notice --- NOTICE.txt | 215 +++++++++++++++++++++++++++++++-- go.mod | 2 +- go.sum | 339 +---------------------------------------------------- 3 files changed, 214 insertions(+), 342 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index d6d6bc76958..4e1bd85862b 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -11701,12 +11701,12 @@ Contents of probable licence file $GOMODCACHE/github.com/docker/go-connections@v -------------------------------------------------------------------------------- -Dependency : github.com/elastic/go-plugins-helpers -Version: v0.0.0-20200207104224-bdf17607b79f +Dependency : github.com/docker/go-plugins-helpers +Version: v0.0.0-20181025120712-1e6269c305b8 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-plugins-helpers@v0.0.0-20200207104224-bdf17607b79f/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/docker/go-plugins-helpers@v0.0.0-20181025120712-1e6269c305b8/LICENSE: Apache License Version 2.0, January 2004 @@ -37060,6 +37060,207 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Dependency : github.com/coreos/go-systemd +Version: v0.0.0-20180511133405-39ca1b05acc7 +Licence type (autodetected): Apache-2.0 +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/coreos/go-systemd@v0.0.0-20180511133405-39ca1b05acc7/LICENSE: + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + -------------------------------------------------------------------------------- Dependency : github.com/creack/pty Version: v1.1.18 @@ -49320,11 +49521,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/onsi/gomega -Version: v1.10.3 +Version: v1.10.1 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/onsi/gomega@v1.10.3/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/onsi/gomega@v1.10.1/LICENSE: Copyright (c) 2013-2014 Onsi Fakhouri @@ -51665,11 +51866,11 @@ Contents of probable licence file $GOMODCACHE/github.com/urso/diag@v0.0.0-202002 -------------------------------------------------------------------------------- Dependency : github.com/vishvananda/netlink -Version: v1.1.1-0.20201029203352-d40f9887b852 +Version: v1.1.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/vishvananda/netlink@v1.1.1-0.20201029203352-d40f9887b852/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/vishvananda/netlink@v1.1.0/LICENSE: Apache License diff --git a/go.mod b/go.mod index eafbc70a171..0a66274ddfa 100644 --- a/go.mod +++ b/go.mod @@ -277,6 +277,7 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cilium/ebpf v0.13.2 // indirect + github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect @@ -414,7 +415,6 @@ replace ( github.com/apoydence/eachers => github.com/poy/eachers v0.0.0-20181020210610-23942921fe77 //indirect, see https://github.com/elastic/beats/pull/29780 for details. github.com/cucumber/godog => github.com/cucumber/godog v0.8.1 github.com/dgraph-io/ristretto => github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3 // Removes glog dependency. See https://github.com/elastic/beats/issues/31810. - github.com/docker/go-plugins-helpers => github.com/elastic/go-plugins-helpers v0.0.0-20200207104224-bdf17607b79f github.com/dop251/goja => github.com/andrewkroh/goja v0.0.0-20190128172624-dd2ac4456e20 github.com/dop251/goja_nodejs => github.com/dop251/goja_nodejs v0.0.0-20171011081505-adff31b136e6 github.com/fsnotify/fsevents => github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270 diff --git a/go.sum b/go.sum index d92adb12260..6c8c4406d89 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,5 @@ aqwari.net/xml v0.0.0-20210331023308-d9421b293817 h1:+3Rh5EaTzNLnzWx3/uy/mAaH/dGI7svJ6e0oOIDcPuE= aqwari.net/xml v0.0.0-20210331023308-d9421b293817/go.mod h1:c7kkWzc7HS/t8Q2DcVY8P2d1dyWNEhEVT5pL0ZHO11c= -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -89,7 +88,6 @@ github.com/Azure/azure-event-hubs-go/v3 v3.6.1 h1:vSiMmn3tOwgiLyfnmhT5K6Of/3QWRL github.com/Azure/azure-event-hubs-go/v3 v3.6.1/go.mod h1:i2NByb9Pr2na7y8wi/XefEVKkuA2CDUjCNoWQJtTsGo= github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v41.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v55.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= @@ -133,14 +131,12 @@ github.com/Azure/go-amqp v1.0.0/go.mod h1:+bg0x3ce5+Q3ahCEXnCsGG3ETpDQe3MEVnOuT2 github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest v0.10.1/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= @@ -151,7 +147,6 @@ github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= @@ -169,7 +164,6 @@ github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSY github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= @@ -205,9 +199,6 @@ github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF0 github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.16.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/Microsoft/hcsshim v0.9.8/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= -github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= -github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -223,7 +214,6 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/SAP/go-hdb v0.14.1/go.mod h1:7fdQLVC2lER3urZLjZCm0AuMQfApof92n3aylBPEkMo= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= @@ -249,7 +239,6 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/alecthomas/units v0.0.0-20210208195552-ff826a37aa15/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74 h1:Kk6a4nehpJ3UuJRqlA3JxYxBZEqCeOmATOvrbT4p9RA= github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4= -github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/andrewkroh/goja v0.0.0-20190128172624-dd2ac4456e20 h1:7rj9qZ63knnVo2ZeepYHvHuRdG76f3tRUTdIQDzRBeI= github.com/andrewkroh/goja v0.0.0-20190128172624-dd2ac4456e20/go.mod h1:cI59GRkC2FRaFYtgbYEqMlgnnfvAwXzjojyZKXwklNg= github.com/andrewkroh/sys v0.0.0-20151128191922-287798fe3e43 h1:WFwa9pqou0Nb4DdfBOyaBTH0GqLE74Qwdf61E7ITHwQ= @@ -293,7 +282,6 @@ github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:W github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-lambda-go v1.44.0 h1:Xp9PANXKsSJ23IhE4ths592uWTCEewswPhSH9qpAuQQ= github.com/aws/aws-lambda-go v1.44.0/go.mod h1:dpMpZgvWx5vuQJfBt0zqBha60q7Dd7RfgJv23DymV8A= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.29.16/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= @@ -390,7 +378,6 @@ github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5/ github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/immutable v0.2.1/go.mod h1:uc6OHo6PN2++n98KHLxW8ef4W42ylHiQSENghE1ezxI= github.com/benbjohnson/tmpl v1.0.0/go.mod h1:igT620JFIi44B6awvU9IsDhR77IXWtFigTLil/RPdps= -github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -398,25 +385,15 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bi-zone/go-winio v0.4.15 h1:viLHm+U7bzIkfVHuWgc3Wp/sT5zaLoRG7XdOEy1b12w= github.com/bi-zone/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/blakesmith/ar v0.0.0-20150311145944-8bd4349a67f2 h1:oMCHnXa6CCCafdPDbMh/lWRhRByN0VFLvv+g+ayx1SI= github.com/blakesmith/ar v0.0.0-20150311145944-8bd4349a67f2/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bonitoo-io/go-sql-bigquery v0.3.4-1.4.0/go.mod h1:J4Y6YJm0qTWB9aFziB7cPeSyc6dOZFyJdteSeybVpXQ= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bsm/sarama-cluster v2.1.14-0.20180625083203-7e67d87a6b3f+incompatible h1:4g18+HnTDwEtO0n7K8B1Kjq+04MEKJRkhJNQ/hb9d5A= github.com/bsm/sarama-cluster v2.1.14-0.20180625083203-7e67d87a6b3f+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= -github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go.mod h1:l/bIBLeOl9eX+wxJAzxS4TveKRtAqlyDpHjhkfO0MEI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= @@ -427,7 +404,6 @@ github.com/cavaliercoder/go-rpm v0.0.0-20190131055624-7a9c54e3d83e/go.mod h1:AZI github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -435,15 +411,9 @@ github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tj github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= -github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.13.2 h1:uhLimLX+jF9BTPPvoCUYh/mBeoONkjgaJ9w9fn0mRj4= github.com/cilium/ebpf v0.13.2/go.mod h1:DHp1WyrLeiBh19Cf/tfiSMhqheEiK8fXFZ4No0P1Hso= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= @@ -460,7 +430,6 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= @@ -469,97 +438,14 @@ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:z github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= -github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= -github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= -github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= -github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= -github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= -github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= -github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= -github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY= -github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= -github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= -github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= -github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= -github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= -github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= -github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= -github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= -github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= -github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= -github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= -github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= -github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= -github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= -github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= -github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 h1:u9SHYsPQNyt5tgDm3YN7+9dYrpK96E5wFilTFWIDZOM= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= @@ -567,7 +453,6 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbp github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -577,10 +462,6 @@ github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= -github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= -github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= -github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -593,19 +474,16 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3 github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw= github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo= -github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2 h1:6+hM8KeYKV0Z9EIINNqIEDyyIRAcNc2FW+/TUYNmWyw= github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgraph-io/badger/v3 v3.2103.1 h1:zaX53IRg7ycxVlkd5pYdCeFp1FynD6qBGQoQql3R3Hk= github.com/dgraph-io/badger/v3 v3.2103.1/go.mod h1:dULbq6ehJ5K0cGW/1TQ9iSfUk0gbSiToDWmWmTsJ53E= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20190329191031-25c5027a8c7b/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/go-libvirt v0.0.0-20180301200012-6075ea3c39a1 h1:eG5K5GNAAHvQlFmfIuy0Ocjg5dvyX22g/KknwTpmBko= @@ -621,30 +499,22 @@ github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= -github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20170802015333-8af4db6f002a/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= +github.com/docker/go-plugins-helpers v0.0.0-20181025120712-1e6269c305b8 h1:9Hsno4vmXpQ0yVAp07bLxS5dHH24w80xzmUCLil47ME= +github.com/docker/go-plugins-helpers v0.0.0-20181025120712-1e6269c305b8/go.mod h1:LFyLie6XcDbyKGeVK6bHe+9aJTYCxWLBg5IrJZOaXKA= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dolmen-go/contextio v0.0.0-20200217195037-68fc5150bcd5 h1:BzN9o4IS1Hj+AM5qDggsfMDQGFXau5KagipEFmnyIbc= @@ -704,8 +574,6 @@ github.com/elastic/go-lumber v0.1.2-0.20220819171948-335fde24ea0f h1:TsPpU5EAwlt github.com/elastic/go-lumber v0.1.2-0.20220819171948-335fde24ea0f/go.mod h1:HHaWnZamYKWsR9/eZNHqRHob8iQDKnchHmmskT/SKko= github.com/elastic/go-perf v0.0.0-20191212140718-9c656876f595 h1:q8n4QjcLa4q39Q3fqHRknTBXBtegjriHFrB42YKgXGI= github.com/elastic/go-perf v0.0.0-20191212140718-9c656876f595/go.mod h1:s09U1b4P1ZxnKx2OsqY7KlHdCesqZWIhyq0Gs/QC/Us= -github.com/elastic/go-plugins-helpers v0.0.0-20200207104224-bdf17607b79f h1:FvsqAVIFZtJtK+koSvFU+/KoNQo1m14kgV5qJ8ImN+U= -github.com/elastic/go-plugins-helpers v0.0.0-20200207104224-bdf17607b79f/go.mod h1:OPGqFNdTS34kMReS5hPFtBhD9J8itmSDurs1ix2wx7c= github.com/elastic/go-seccomp-bpf v1.4.0 h1:6y3lYrEHrLH9QzUgOiK8WDqmPaMnnB785WxibCNIOH4= github.com/elastic/go-seccomp-bpf v1.4.0/go.mod h1:wIMxjTbKpWGQk4CV9WltlG6haB4brjSH/dvAohBPM1I= github.com/elastic/go-sfdc v0.0.0-20201201191151-3190c381b3e1 h1:KS+lvT/rUS8Z4++RoiM2pHOKmBv8mLERmgiX04VEgwk= @@ -736,7 +604,6 @@ github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkg github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -744,7 +611,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -777,9 +643,7 @@ github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2 github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/gabriel-vasile/mimetype v1.4.1/go.mod h1:05Vi0w3Y9c/lNvJOdmIwvrrAhX3rYhfQQCaf9VJcv7M= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -800,7 +664,6 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -969,10 +832,7 @@ github.com/gocarina/gocsv v0.0.0-20170324095351-ffef3ffc77be/go.mod h1:/oj50ZdPq github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -987,14 +847,11 @@ github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -1013,7 +870,6 @@ github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EO github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1083,7 +939,6 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -1148,26 +1003,21 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75 h1:f0n1xnMSmBLzVfsMMvriDyA75NB/oBgILX2GcHXIQzY= github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -1182,7 +1032,6 @@ github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPA github.com/hashicorp/consul/sdk v0.7.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= github.com/hashicorp/cronexpr v1.1.0 h1:dnNsWtH0V2ReN7JccYe8m//Bj14+PjJDntR1dz0Cixk= github.com/hashicorp/cronexpr v1.1.0/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1197,7 +1046,6 @@ github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39 github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -1250,9 +1098,6 @@ github.com/icholy/digest v0.1.22/go.mod h1:uLAeDdWKIWNFMH0wqbwchbTQOmJWhzSnL7zmq github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -1274,7 +1119,6 @@ github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bS github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= github.com/influxdata/tdigest v0.0.2-0.20210216194612-fc98d27c9e8b/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/jarcoal/httpmock v1.0.4 h1:jp+dy/+nonJE4g4xbVtl9QdrUNbn6/3hDT5R4nDIZnA= github.com/jarcoal/httpmock v1.0.4/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= @@ -1291,8 +1135,6 @@ github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZ github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -1301,7 +1143,6 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmoiron/sqlx v1.3.1 h1:aLN7YINNZ7cYOPK3QC83dbM6KT0NMqVMw961TqrejlE= github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= -github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= @@ -1349,8 +1190,6 @@ github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= @@ -1402,7 +1241,6 @@ github.com/lib/pq v1.10.3/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linode/linodego v0.28.5/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjmrWaFectM= -github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= @@ -1423,7 +1261,6 @@ github.com/markbates/pkger v0.17.0/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQ github.com/markbates/pkger v0.17.1 h1:/MKEtWqtc0mZvu9OinB9UzVN9iYCwLWuyUv4Bw+PCno= github.com/markbates/pkger v0.17.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11 h1:YFh+sjyJTMQSYjKwM4dFKhJPJC/wfo98tPUc17HdoYw= github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -1447,8 +1284,6 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw= @@ -1457,20 +1292,17 @@ github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4f github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.42 h1:gWGe42RGaIqXQZ+r3WUGEKBEtvPHY2SXo4dqixDNxuY= github.com/miekg/dns v1.1.42/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mileusna/useragent v0.0.0-20190129205925-3e331f0949a5/go.mod h1:JWhYAp2EXqUtsxTKdeGlY8Wp44M7VxThC9FEoNGi2IE= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= -github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -1495,14 +1327,8 @@ github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= @@ -1518,11 +1344,9 @@ github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJ github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= @@ -1533,7 +1357,6 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -1547,54 +1370,28 @@ github.com/oklog/ulid/v2 v2.0.2/go.mod h1:mtBL0Qe/0HAx6/a4Z30qxVIAL1eQDweXq5lxOE github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.5.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.2.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= -github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing-contrib/go-stdlib v0.0.0-20190519235532-cf7a6c988dc9/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= github.com/opentracing-contrib/go-stdlib v1.0.0/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= @@ -1624,7 +1421,6 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= @@ -1648,7 +1444,6 @@ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9 github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1664,13 +1459,10 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/poy/eachers v0.0.0-20181020210610-23942921fe77 h1:SNdqPRvRsVmYR0gKqFvrUKhFizPJ6yDiGQ++VAJIoDg= github.com/poy/eachers v0.0.0-20181020210610-23942921fe77/go.mod h1:x1vqpbcMW9T/KRcQ4b48diSiSVtYgvwQ5xzDByEg4WE= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/alertmanager v0.20.0/go.mod h1:9g2i48FAyZW6BtbsnvHtMHQXl2aVtrORKwKVCQ+nbrg= github.com/prometheus/alertmanager v0.22.2/go.mod h1:rYinOWxFuCnNssc3iOjn2oMTlhLaPcUuqV5yk5JKUAE= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= @@ -1682,7 +1474,6 @@ github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3e github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1690,10 +1481,7 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= @@ -1708,25 +1496,20 @@ github.com/prometheus/common v0.30.0 h1:JEkYlQnpzrzQFxi6gnukFPdQ+ac82oRhzMcIduJu github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/exporter-toolkit v0.5.1/go.mod h1:OCkM4805mmisBhLmVFw858QYi3v0wKdY6/UxrT0pZVg= github.com/prometheus/exporter-toolkit v0.6.0/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/prometheus v0.0.0-20200609090129-a6600f564e3c/go.mod h1:S5n0C6tSgdnwWshBUceRx5G1OsjLv/EeZ9t3wIfEtsY= github.com/prometheus/prometheus v1.8.2-0.20210701133801-b0944590a1c9 h1:If7jYp33vwa8ZQ7GGwrAs0SBjiW0aWeAB/oV1aG7bZ4= github.com/prometheus/prometheus v1.8.2-0.20210701133801-b0944590a1c9/go.mod h1:A97P+iwS3Ffpxpejz4+ASZl6i9EqSJDzxObq8DjV2SU= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1752,7 +1535,6 @@ github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfF github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/samuel/go-parser v0.0.0-20130731160455-ca8abbf65d0e h1:hUGyBE/4CXRPThr4b6kt+f1CN90no4Fs5CNrYOKYSIg= github.com/samuel/go-parser v0.0.0-20130731160455-ca8abbf65d0e/go.mod h1:Sb6li54lXV0yYEjI4wX8cucdQ9gqUJV3+Ngg3l9g30I= github.com/samuel/go-thrift v0.0.0-20140522043831-2187045faa54 h1:jbchLJWyhKcmOjkbC4zDvT/n5EEd7g6hnnF760rEyRA= @@ -1764,12 +1546,9 @@ github.com/sanathkr/yaml v0.0.0-20170819201035-0056894fa522/go.mod h1:tQTYKOQgxo github.com/sanathkr/yaml v1.0.1-0.20170819201035-0056894fa522 h1:39BJIaZIhIBmXATIhdlTBlTQpAiGXHnz17CrO7vF2Ss= github.com/sanathkr/yaml v1.0.1-0.20170819201035-0056894fa522/go.mod h1:tQTYKOQgxoH3v6dEmdHiz4JG+nbxWwM5fgPQUpSZqVQ= github.com/satori/go.uuid v0.0.0-20160603004225-b111a074d5ef/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210223165440-c65ae3540d44/go.mod h1:CJJ5VAbozOl0yEw7nHB9+7BXTJbIn6h7W+f6Gau5IP8= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= @@ -1788,15 +1567,11 @@ github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= @@ -1813,28 +1588,22 @@ github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2 github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -1843,7 +1612,6 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1856,10 +1624,6 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= @@ -1869,7 +1633,6 @@ github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYa github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tsg/go-daemon v0.0.0-20200207173439-e704b93fd89b h1:X/8hkb4rQq3+QuOxpJK7gWmAXmZucF0EI1s1BfBLq6U= github.com/tsg/go-daemon v0.0.0-20200207173439-e704b93fd89b/go.mod h1:jAqhj/JBVC1PwcLTWd6rjQyGyItxxrhpiBl8LSuAGmw= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= @@ -1879,35 +1642,26 @@ github.com/uber/jaeger-client-go v2.23.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMW github.com/uber/jaeger-client-go v2.29.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.8/go.mod h1:0lNM99SwWUIRhCXnigEMClngXBk/EmpTXa7mgiewYWA= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.8 h1:4dryPvxMP9OtkjIbuNeK2nb27M38XMHLGlfNSNph/5s= github.com/ugorji/go/codec v1.1.8/go.mod h1:X00B19HDtwvKbQY2DcYjvZxKQp8mzrJoQ6EgoIY/D2E= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urso/diag v0.0.0-20200210123136-21b3cc8eb797 h1:OHNw/6pXODJAB32NujjdQO/KIYQ3KAbHQfCzH81XdCs= github.com/urso/diag v0.0.0-20200210123136-21b3cc8eb797/go.mod h1:pNWFTeQ+V1OYT/TzWpnWb6eQBdoXpdx+H+lrH97/Oyo= github.com/urso/sderr v0.0.0-20210525210834-52b04e8f5c71 h1:CehQeKbysHV8J2V7AD0w8NL2x1h04kmmo/Ft5su4lU0= github.com/urso/sderr v0.0.0-20210525210834-52b04e8f5c71/go.mod h1:Wp40HwmjM59FkDIVFfcCb9LzBbnc0XAMp8++hJuWvSU= -github.com/vbatts/tar-split v0.11.1/go.mod h1:LEuURwDEiWjRjwu46yU3KVGuUdVv/dcnpcEPSzR8z6g= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= -github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 h1:cPXZWzzG0NllBLdjWoD1nDfaqu98YMv+OneaKc8sPOA= -github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vmware/govmomi v0.0.0-20170802214208-2cad15190b41 h1:NeNpIvfvaFOh0BH7nMEljE5Rk/VJlxhm58M41SeOD20= github.com/vmware/govmomi v0.0.0-20170802214208-2cad15190b41/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w= @@ -1920,10 +1674,8 @@ github.com/xdg/scram v1.0.3/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49 github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xdg/stringprep v1.0.3 h1:cmL5Enob4W83ti/ZHuZLuKD/xqJfus4fVPwE+/BDm+4= github.com/xdg/stringprep v1.0.3/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v0.0.0-20181112162635-ac52e6811b56/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= @@ -1944,9 +1696,6 @@ github.com/yuin/gopher-lua v0.0.0-20170403160031-b402f3114ec7 h1:0gYLpmzecnaDCoe github.com/yuin/gopher-lua v0.0.0-20170403160031-b402f3114ec7/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= @@ -1963,13 +1712,10 @@ go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= go.elastic.co/fastjson v1.1.0/go.mod h1:boNGISWMjQsUPy/t6yqt2/1Wx4YNPSe+mZjlyw9vKKI= go.elastic.co/go-licence-detector v0.6.0 h1:QJ+cUIHC0JpxEKgp5Bj0pabEiOOt9H1O9CCcUNe6yRQ= go.elastic.co/go-licence-detector v0.6.0/go.mod h1:fSJQU8au4SAgDK+UQFbgUPsXKYNBDv4E/dwWevrMpXU= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -1981,7 +1727,6 @@ go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4S go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= go.mongodb.org/mongo-driver v1.5.1 h1:9nOVLGDfOaZ9R0tBumx/BcuqkbFpyTCU2r/Po7A2azI= go.mongodb.org/mongo-driver v1.5.1/go.mod h1:gRXCHX4Jo7J0IJ1oDQyUxF7jfy19UfxniMS4xxMmUqw= -go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -2003,7 +1748,6 @@ go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8 go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2034,10 +1778,8 @@ go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180505025534-4ec37c66abab/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -2059,14 +1801,12 @@ golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -2142,7 +1882,6 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2155,10 +1894,8 @@ golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -2189,7 +1926,6 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -2208,7 +1944,6 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -2277,18 +2012,14 @@ golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2300,18 +2031,15 @@ golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2328,23 +2056,14 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2360,7 +2079,6 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2423,7 +2141,6 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2456,7 +2173,6 @@ golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190813034749-528a2984e271/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2496,7 +2212,6 @@ golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200721032237-77f530d86f9a/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -2505,7 +2220,6 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200821192610-3366bbee4705/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -2545,7 +2259,6 @@ gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6d gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -2581,13 +2294,11 @@ google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= @@ -2600,7 +2311,6 @@ google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -2615,7 +2325,6 @@ google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -2623,7 +2332,6 @@ google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -2641,7 +2349,6 @@ google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb h1: google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 h1:6GQBEOdGkX6MMTLT9V+TjtIRZCw9VPD5Z+yHY9wMgS0= google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY= -google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2671,7 +2378,6 @@ google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= @@ -2693,10 +2399,8 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2708,7 +2412,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/hjson/hjson-go.v3 v3.0.1/go.mod h1:X6zrTSVeImfwfZLfgQdInl9mWjqPqgH90jom9nym/lw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= @@ -2725,9 +2428,6 @@ gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLv gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -2769,55 +2469,30 @@ honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY= -k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= -k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= -k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= k8s.io/api v0.23.4 h1:85gnfXQOWbJa1SiWGpE9EEtHs0UVvDyIsSMpEtl2D4E= k8s.io/api v0.23.4/go.mod h1:i77F4JfyNNrhOjZF7OwwNJS5Y1S9dpwvb9iYRYRczfI= k8s.io/apimachinery v0.17.5/go.mod h1:ioIo1G/a+uONV7Tv+ZmCbMG1/a3kVw5YcDdncd8ugQ0= -k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.23.4 h1:fhnuMd/xUL3Cjfl64j5ULKZ1/J9n8NuQEgNL+WXWfdM= k8s.io/apimachinery v0.23.4/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= -k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= -k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= -k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= k8s.io/client-go v0.17.5/go.mod h1:S8uZpBpjJJdEH/fEyxcqg7Rn0P5jH+ilkgBHjriSmNo= -k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= -k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= -k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= k8s.io/client-go v0.23.4 h1:YVWvPeerA2gpUudLelvsolzH7c2sFoXXR5wM/sWqNFU= k8s.io/client-go v0.23.4/go.mod h1:PKnIL4pqLuvYUK1WU7RLTMYKPiIh7MYShLshtRY9cj0= -k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= -k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= -k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= -k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= -k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20200316234421-82d701f24f9d/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= @@ -2871,14 +2546,10 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7mRH6DGaRcixXEJXTsE= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= From 272b5c7d46fd9da310e6944374124938c35fa7f3 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Wed, 24 Apr 2024 17:26:16 +0300 Subject: [PATCH 220/313] Use monorepo plugin on PR and triggers for branches (#39176) Fix the Beats main pipeline to work when running on merge commits on branches as well as pull requests. --- .buildkite/pipeline.yml | 136 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 00ce04b71d2..2c00f376cf2 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -2,6 +2,7 @@ steps: - label: "Trigger Auditbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -27,7 +28,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Auditbeat" + if: build.pull_request.id == null + trigger: "auditbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Heartbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -53,7 +62,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Heartbeat" + if: build.pull_request.id == null + trigger: "heartbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Filebeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -80,7 +97,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Filebeat" + if: build.pull_request.id == null + trigger: "filebeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger x-pack/filebeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -107,7 +132,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/filebeat" + if: build.pull_request.id == null + trigger: "beats-xpack-filebeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Xpack/Dockerlogbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -133,7 +166,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/dockerlogbeat" + if: build.pull_request.id == null + trigger: "beats-xpack-dockerlogbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Metricbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -159,7 +200,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Metricbeat" + if: build.pull_request.id == null + trigger: "beats-metricbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger x-pack/metricbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -186,7 +235,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/metricbeat" + if: build.pull_request.id == null + trigger: "beats-xpack-metricbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger x-pack/osquerybeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -215,7 +272,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/osquerybeat" + if: build.pull_request.id == null + trigger: "beats-xpack-osquerybeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Xpack/Winlogbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -241,7 +306,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Xpack/Winlogbeat" + if: build.pull_request.id == null + trigger: "beats-xpack-winlogbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Deploy/K8S" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -262,7 +335,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Deploy/K8S" + if: build.pull_request.id == null + trigger: "deploy-k8s" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Libbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -287,7 +368,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Libbeat" + if: build.pull_request.id == null + trigger: "beats-libbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger x-pack/libbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -313,7 +402,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/libbeat" + if: build.pull_request.id == null + trigger: "beats-xpack-libbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger x-pack/auditbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -340,7 +437,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/auditbeat" + if: build.pull_request.id == null + trigger: "beats-xpack-auditbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger x-pack/heartbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -367,7 +472,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/heartbeat" + if: build.pull_request.id == null + trigger: "beats-xpack-heartbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger x-pack/packetbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -394,7 +507,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for x-pack/packetbeat" + if: build.pull_request.id == null + trigger: "beats-xpack-packetbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Winlogbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -420,7 +541,15 @@ steps: - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + - label: "Triggering Build for Winlogbeat" + if: build.pull_request.id == null + trigger: "beats-winlogbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" + - label: "Trigger Packetbeat" + if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff: "git diff --name-only origin/${GITHUB_PR_TARGET_BRANCH}...HEAD" @@ -445,3 +574,10 @@ steps: - BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST} - BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH} - GITHUB_PR_LABELS=${GITHUB_PR_LABELS} + + - label: "Triggering Build for Packetbeat" + if: build.pull_request.id == null + trigger: "beats-packetbeat" + build: + commit: "${BUILDKITE_COMMIT}" + branch: "${BUILDKITE_BRANCH}" From c6444db54474441450921fc845a97b148bfaba71 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Wed, 24 Apr 2024 17:48:45 +0200 Subject: [PATCH 221/313] Beats DRA pipeline (#39126) * Packaging pipieline resource * Revetred agentbeat pipeline deletion * Cleanup * Test auditbeat packaging pipeline * Fix steps keys * Fix steps keys * Fix env vars * Fix env vars * Fix env vars * Unified artifacts dir * Implemented DRA steps * Test filebeat * Test matrix * Aligned artifacts directories * Aligned artifacts directories * Aligned artifacts directories * Aligned artifacts directories * Debug * Debug * Package all beats * Test DRA snapshot * Test DRA snapshot * Rename artifacts * fix dashboards artifacts * Cleanup * cleanup * No need to install msi tools * Apply suggestions from code review Co-authored-by: Dimitrios Liappis * Extraced platforms variables * Cleanup * Added RUN_SNAPSHOT condition * Cleanup * Boolean dry-run * Boolean dry-run --------- Co-authored-by: Dimitrios Liappis --- .buildkite/packaging.pipeline.md | 23 ++ .buildkite/packaging.pipeline.yml | 231 ++++++++++++++++++ .buildkite/scripts/dra.sh | 46 ++++ .buildkite/scripts/packaging/package-dra.sh | 21 ++ .../packaging/prepare-release-manager.sh | 41 ++++ 5 files changed, 362 insertions(+) create mode 100644 .buildkite/packaging.pipeline.md create mode 100755 .buildkite/scripts/dra.sh create mode 100755 .buildkite/scripts/packaging/package-dra.sh create mode 100755 .buildkite/scripts/packaging/prepare-release-manager.sh diff --git a/.buildkite/packaging.pipeline.md b/.buildkite/packaging.pipeline.md new file mode 100644 index 00000000000..577310d0104 --- /dev/null +++ b/.buildkite/packaging.pipeline.md @@ -0,0 +1,23 @@ +### Beats Packaging pipeline +[Buildkite packaging pipeline](https://buildkite.com/elastic/beats-packaging-pipeline) is used to build and publish the packages for the Beats. The pipeline is triggered by a commit to the `main` or release branches. +The pipeline definition is located in the `.buildkite/packaging.pipeline.yml` + +### Triggers +Staging packaging DRA is triggered for release branches only. +Snapshot is triggered for `main` and release branches. + +### Pipeline steps + +#### Beats dashboard +Generates `build/distributions/dependencies.csv` and `tar.gz` and adds them to the `beats-dashboards` artifact. This is required by the release-manager configuration. + +#### Packaging snapshot/staging + +- Builds the Beats packages for all supported platforms and architectures (`mage package, mage ironbank`) +- Copies artifacts `build/distributions//` directory and adds it as an artifact, where `` is the corresponding beat name. +- x-pack artifacts are also copied to `build/distributions//` directory, where `` is the name of the beat. For example, `auditbeat`, not `x-pack/auditbeat`. It's required for the DRA publish step by [release-manager configuration](https://github.com/elastic/infra/blob/master/cd/release/release-manager/project-configs/master/beats.gradle). + +#### DRA publish +Downloads the artifacts from the `packaging snapshot/staging` step and publishes them to the Elastic DRA registry. + + diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index e69de29bb2d..fb396328d8e 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -0,0 +1,231 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +# TODO: Pre-cache beats-dev/golang-crossbuild container image + +env: + ASDF_MAGE_VERSION: 1.15.0 + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" + GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" + IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" + + PLATFORMS_AMD: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS_ARM: "linux/arm64" + +steps: + - group: Beats dashboards + key: dashboards + steps: + - label: Snapshot dashboards + if: "build.branch =~ /\\d+\\.\\d+/ || build.branch == 'main' || build.env('RUN_SNAPSHOT')==true" + key: dashboards-snapshot + # TODO: container with go and make + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + commands: + - make build/distributions/dependencies.csv + - make beats-dashboards + env: + SNAPSHOT: true + artifact_paths: + - build/distributions/**/* + + - label: Staging dashboards + if: "build.branch =~ /\\d+\\.\\d+/" + key: dashboards-staging + # TODO: container with go and make + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + commands: + - make build/distributions/dependencies.csv + - make beats-dashboards + artifact_paths: + - build/distributions/**/* + + - group: Packaging snapshot + if: "build.branch =~ /\\d+\\.\\d+/ || build.branch == 'main' || build.env('RUN_SNAPSHOT')==true" + key: packaging-snapshot + steps: + # x86 + - label: ":ubuntu: {{matrix}}/Packaging Linux Snapshot" + env: + PLATFORMS: "${PLATFORMS_AMD}" + SNAPSHOT: true + command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - build/distributions/**/* + matrix: + - auditbeat + - filebeat + - heartbeat + - metricbeat + - packetbeat + - winlogbeat + - x-pack/auditbeat + - x-pack/dockerlogbeat + - x-pack/filebeat + - x-pack/functionbeat + - x-pack/heartbeat + - x-pack/metricbeat + - x-pack/osquerybeat + - x-pack/packetbeat + - x-pack/winlogbeat + + ## ARM + - label: ":linux: {{matrix}}/Packaging Linux arm64 Snapshot" + env: + PLATFORMS: "${PLATFORMS_ARM}" + PACKAGES: "docker" + SNAPSHOT: true + command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - build/distributions/**/* + matrix: + - auditbeat + - filebeat + - heartbeat + - metricbeat + - packetbeat + - x-pack/auditbeat + - x-pack/dockerlogbeat + - x-pack/filebeat + - x-pack/heartbeat + - x-pack/metricbeat + - x-pack/packetbeat + + ## Agentbeat needs more CPUs because it builds many other beats + - label: ":ubuntu: {{matrix}}/Packaging Linux Snapshot" + env: + PLATFORMS: "${PLATFORMS_AMD}" + SNAPSHOT: true + command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "c2-standard-16" + artifact_paths: + - build/distributions/**/* + matrix: + - x-pack/agentbeat + + - group: Packaging staging + + key: packaging-staging + ## Only for release + if: "build.branch =~ /\\d+\\.\\d+/" + steps: + # x86 + - label: ":ubuntu: {{matrix}}/Packaging Linux Staging" + env: + PLATFORMS: "${PLATFORMS_AMD}" + SNAPSHOT: false + command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + artifact_paths: + - build/distributions/**/* + matrix: + - auditbeat + - filebeat + - heartbeat + - metricbeat + - packetbeat + - winlogbeat + - x-pack/auditbeat + - x-pack/dockerlogbeat + - x-pack/filebeat + - x-pack/functionbeat + - x-pack/heartbeat + - x-pack/metricbeat + - x-pack/osquerybeat + - x-pack/packetbeat + - x-pack/winlogbeat + + ## ARM + - label: ":linux: {{matrix}}/Packaging Linux arm64 Staging" + env: + PLATFORMS: "${PLATFORMS_ARM}" + PACKAGES: "docker" + SNAPSHOT: false + command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - build/distributions/** + matrix: + - auditbeat + - filebeat + - heartbeat + - metricbeat + - packetbeat + - x-pack/auditbeat + - x-pack/dockerlogbeat + - x-pack/filebeat + - x-pack/heartbeat + - x-pack/metricbeat + - x-pack/packetbeat + + ## Agentbeat needs more CPUs because it builds many other beats + - label: ":ubuntu: {{matrix}}/Packaging Linux Snapshot" + env: + PLATFORMS: "${PLATFORMS_AMD}" + SNAPSHOT: true + command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + agents: + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "c2-standard-16" + artifact_paths: + - build/distributions/**/* + matrix: + - x-pack/agentbeat + + - group: DRA publish + key: dra + steps: + - label: DRA Snapshot + ## Only for release branches and main + if: "build.branch =~ /\\d+\\.\\d+/ || build.branch == 'main' || build.env('RUN_SNAPSHOT')==true" + key: dra-snapshot + env: + DRA_WORKFLOW: snapshot + depends_on: + - packaging-snapshot + - dashboards-snapshot + command: | + buildkite-agent artifact download "build/**/*" . + .buildkite/scripts/packaging/prepare-release-manager.sh + .buildkite/scripts/dra.sh + agents: + provider: "gcp" + + - label: DRA Staging + ## Only for release branches + if: "build.branch =~ /\\d+\\.\\d+/" + key: dra-staging + env: + DRA_WORKFLOW: staging + depends_on: + - packaging-staging + - dashboards-staging + command: | + buildkite-agent artifact download "build/**" . + .buildkite/scripts/packaging/prepare-release-manager.sh + .buildkite/scripts/dra.sh + agents: + provider: "gcp" diff --git a/.buildkite/scripts/dra.sh b/.buildkite/scripts/dra.sh new file mode 100755 index 00000000000..ee0f4b286f0 --- /dev/null +++ b/.buildkite/scripts/dra.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +## TODO: Set to empty string when Jenkins is disabled +if [[ "$DRY_RUN" == "false" ]]; then echo "--- Running in publish mode"; DRY_RUN=""; else echo "--- Running in dry-run mode"; DRY_RUN="--dry-run"; fi +set -euo pipefail +BRANCH="${BUILDKITE_BRANCH}" + +if [[ "${BUILDKITE_PULL_REQUEST:="false"}" != "false" ]]; then + BRANCH=main + DRY_RUN="--dry-run" + echo "+++ Running in PR and setting branch main and --dry-run" +fi + +BEAT_VERSION=$(make get-version) + +CI_DRA_ROLE_PATH="kv/ci-shared/release/dra-role" + +function release_manager_login { + DRA_CREDS_SECRET=$(retry -t 5 -- vault kv get -field=data -format=json ${CI_DRA_ROLE_PATH}) + VAULT_ADDR_SECRET=$(echo ${DRA_CREDS_SECRET} | jq -r '.vault_addr') + VAULT_ROLE_ID_SECRET=$(echo ${DRA_CREDS_SECRET} | jq -r '.role_id') + VAULT_SECRET=$(echo ${DRA_CREDS_SECRET} | jq -r '.secret_id') + export VAULT_ADDR_SECRET VAULT_ROLE_ID_SECRET VAULT_SECRET +} + +release_manager_login + +echo "+++ Changing permissions for the BK API commands" +sudo chown -R :1000 build/distributions/ + +echo "+++ :hammer_and_pick: Publishing $BRANCH $DRA_WORKFLOW DRA artifacts..." +docker run --rm \ + --name release-manager \ + -e VAULT_ADDR="${VAULT_ADDR_SECRET}" \ + -e VAULT_ROLE_ID="${VAULT_ROLE_ID_SECRET}" \ + -e VAULT_SECRET_ID="${VAULT_SECRET}" \ + --mount type=bind,readonly=false,src="${PWD}",target=/artifacts \ + docker.elastic.co/infra/release-manager:latest \ + cli collect \ + --project "beats" \ + --branch "${BRANCH}" \ + --commit "${BUILDKITE_COMMIT}" \ + --workflow "${DRA_WORKFLOW}" \ + --version "${BEAT_VERSION}" \ + --artifact-set "main" \ + ${DRY_RUN} \ No newline at end of file diff --git a/.buildkite/scripts/packaging/package-dra.sh b/.buildkite/scripts/packaging/package-dra.sh new file mode 100755 index 00000000000..a70bd455278 --- /dev/null +++ b/.buildkite/scripts/packaging/package-dra.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -ueo pipefail +BEAT_DIR=${1:-""} + +if [ -z "$BEAT_DIR" ]; then + echo "Error: Beat directory must be specified." + exit 1 +fi + +echo "~~~Packaging : $BEAT_DIR" + +WORKSPACE=$(pwd) +BEAT_NAME_SLUG=$(echo "$BEAT_DIR" | sed 's/x-pack\///g') + +cd $BEAT_DIR +mage package +mage ironbank + +mkdir -p $WORKSPACE/build/distributions/$BEAT_NAME_SLUG +cp build/distributions/* $WORKSPACE/build/distributions/$BEAT_NAME_SLUG/ +cd $WORKSPACE \ No newline at end of file diff --git a/.buildkite/scripts/packaging/prepare-release-manager.sh b/.buildkite/scripts/packaging/prepare-release-manager.sh new file mode 100755 index 00000000000..2727fd986cc --- /dev/null +++ b/.buildkite/scripts/packaging/prepare-release-manager.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# +# This script is executed by the DRA stage. +# It prepares the required files to be consumed by the release-manager +# It can be published as snapshot or staging, for such you use +# the paramater $0 "snapshot" or $0 "staging" +# +set -ueo pipefail + +readonly TYPE=${1:-snapshot} + +# rename dependencies.csv to the name expected by release-manager. +VERSION=$(make get-version) +FINAL_VERSION=$VERSION-SNAPSHOT +if [ "$TYPE" != "snapshot" ] ; then + FINAL_VERSION=$VERSION +fi +echo "Rename dependencies to $FINAL_VERSION" +mv build/distributions/dependencies.csv \ + build/distributions/dependencies-"$FINAL_VERSION".csv + +# rename docker files to support the unified release format. +# TODO: this could be supported by the package system itself +# or the unified release process the one to do the transformation +# See https://github.com/elastic/beats/pull/30895 +find build/distributions -name '*linux-arm64.docker.tar.gz*' -print0 | + while IFS= read -r -d '' file + do + echo "Rename file $file" + mv "$file" "${file/linux-arm64.docker.tar.gz/docker-image-linux-arm64.tar.gz}" + done + +find build/distributions -name '*linux-amd64.docker.tar.gz*' -print0 | + while IFS= read -r -d '' file + do + echo "Rename file $file" + mv "$file" "${file/linux-amd64.docker.tar.gz/docker-image-linux-amd64.tar.gz}" + done + +echo 'List all the files' +find build/distributions -type f -ls || true From 0c8c53b26eb683a9e2ab90acb96e65ee404535f4 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Wed, 24 Apr 2024 15:09:32 -0400 Subject: [PATCH 222/313] chore: Update snapshot.yml (#39194) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index bfed2c8b650..a85de286fc9 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.14.0-318ae53b-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-f50da2d9-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.14.0-318ae53b-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-f50da2d9-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.14.0-318ae53b-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-f50da2d9-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 9457f64afaac498c2356089a7c0d7ab98537478f Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Thu, 25 Apr 2024 16:15:45 +0300 Subject: [PATCH 223/313] Fixes for Buildkite packaging pipeline (#39207) This PR fixes a number of bugs from #39126 --- .buildkite/packaging.pipeline.yml | 66 ++++++++++----------- .buildkite/scripts/dra.sh | 18 +++++- .buildkite/scripts/packaging/package-dra.sh | 2 +- 3 files changed, 49 insertions(+), 37 deletions(-) diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index fb396328d8e..63ea44795ef 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -8,7 +8,7 @@ env: GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - PLATFORMS_AMD: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" + PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" PLATFORMS_ARM: "linux/arm64" steps: @@ -16,13 +16,13 @@ steps: key: dashboards steps: - label: Snapshot dashboards - if: "build.branch =~ /\\d+\\.\\d+/ || build.branch == 'main' || build.env('RUN_SNAPSHOT')==true" + if: build.branch =~ /^\d+\.\d+$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" key: dashboards-snapshot # TODO: container with go and make agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" commands: - make build/distributions/dependencies.csv - make beats-dashboards @@ -32,13 +32,13 @@ steps: - build/distributions/**/* - label: Staging dashboards - if: "build.branch =~ /\\d+\\.\\d+/" + if: build.branch =~ /^\d+\.\d+$/ key: dashboards-staging # TODO: container with go and make agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" commands: - make build/distributions/dependencies.csv - make beats-dashboards @@ -46,19 +46,18 @@ steps: - build/distributions/**/* - group: Packaging snapshot - if: "build.branch =~ /\\d+\\.\\d+/ || build.branch == 'main' || build.env('RUN_SNAPSHOT')==true" + if: build.branch =~ /^\d+\.\d+$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" key: packaging-snapshot steps: - # x86 - - label: ":ubuntu: {{matrix}}/Packaging Linux Snapshot" + - label: "SNAPSHOT: {{matrix}}" env: - PLATFORMS: "${PLATFORMS_AMD}" + PLATFORMS: "${PLATFORMS}" SNAPSHOT: true command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: - build/distributions/**/* matrix: @@ -78,8 +77,7 @@ steps: - x-pack/packetbeat - x-pack/winlogbeat - ## ARM - - label: ":linux: {{matrix}}/Packaging Linux arm64 Snapshot" + - label: "SNAPSHOT: {{matrix}} docker Linux/arm64" env: PLATFORMS: "${PLATFORMS_ARM}" PACKAGES: "docker" @@ -105,36 +103,33 @@ steps: - x-pack/packetbeat ## Agentbeat needs more CPUs because it builds many other beats - - label: ":ubuntu: {{matrix}}/Packaging Linux Snapshot" + - label: "SNAPSHOT: x-pack/agentbeat" env: - PLATFORMS: "${PLATFORMS_AMD}" + PLATFORMS: "${PLATFORMS}" SNAPSHOT: true - command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + command: ".buildkite/scripts/packaging/package-dra.sh x-pack/agentbeat" agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "c2-standard-16" artifact_paths: - build/distributions/**/* - matrix: - - x-pack/agentbeat - - group: Packaging staging + - group: Packaging Staging key: packaging-staging ## Only for release - if: "build.branch =~ /\\d+\\.\\d+/" + if: build.branch =~ /^\d+\.\d+$/ steps: - # x86 - - label: ":ubuntu: {{matrix}}/Packaging Linux Staging" + - label: "STAGING: {{matrix}}" env: - PLATFORMS: "${PLATFORMS_AMD}" + PLATFORMS: "${PLATFORMS}" SNAPSHOT: false command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" - machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" artifact_paths: - build/distributions/**/* matrix: @@ -154,8 +149,7 @@ steps: - x-pack/packetbeat - x-pack/winlogbeat - ## ARM - - label: ":linux: {{matrix}}/Packaging Linux arm64 Staging" + - label: "STAGING: {{matrix}} docker Linux/arm64" env: PLATFORMS: "${PLATFORMS_ARM}" PACKAGES: "docker" @@ -181,26 +175,24 @@ steps: - x-pack/packetbeat ## Agentbeat needs more CPUs because it builds many other beats - - label: ":ubuntu: {{matrix}}/Packaging Linux Snapshot" + - label: "STAGING: x-pack/agentbeat" env: - PLATFORMS: "${PLATFORMS_AMD}" - SNAPSHOT: true - command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" + PLATFORMS: "${PLATFORMS}" + SNAPSHOT: false + command: ".buildkite/scripts/packaging/package-dra.sh x-pack/agentbeat" agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "c2-standard-16" artifact_paths: - build/distributions/**/* - matrix: - - x-pack/agentbeat - group: DRA publish key: dra steps: - label: DRA Snapshot ## Only for release branches and main - if: "build.branch =~ /\\d+\\.\\d+/ || build.branch == 'main' || build.env('RUN_SNAPSHOT')==true" + if: build.branch =~ /^\d+\.\d+$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" key: dra-snapshot env: DRA_WORKFLOW: snapshot @@ -212,11 +204,13 @@ steps: .buildkite/scripts/packaging/prepare-release-manager.sh .buildkite/scripts/dra.sh agents: - provider: "gcp" + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" - label: DRA Staging ## Only for release branches - if: "build.branch =~ /\\d+\\.\\d+/" + if: build.branch =~ /^\d+\.\d+$/ key: dra-staging env: DRA_WORKFLOW: staging @@ -228,4 +222,6 @@ steps: .buildkite/scripts/packaging/prepare-release-manager.sh .buildkite/scripts/dra.sh agents: - provider: "gcp" + provider: gcp + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" diff --git a/.buildkite/scripts/dra.sh b/.buildkite/scripts/dra.sh index ee0f4b286f0..4957ef36199 100755 --- a/.buildkite/scripts/dra.sh +++ b/.buildkite/scripts/dra.sh @@ -28,6 +28,22 @@ release_manager_login echo "+++ Changing permissions for the BK API commands" sudo chown -R :1000 build/distributions/ +echo "+++ :hammer_and_pick: Listing $BRANCH $DRA_WORKFLOW DRA artifacts..." +docker run --rm \ + --name release-manager \ + -e VAULT_ADDR="${VAULT_ADDR_SECRET}" \ + -e VAULT_ROLE_ID="${VAULT_ROLE_ID_SECRET}" \ + -e VAULT_SECRET_ID="${VAULT_SECRET}" \ + --mount type=bind,readonly=false,src="${PWD}",target=/artifacts \ + docker.elastic.co/infra/release-manager:latest \ + cli list \ + --project "beats" \ + --branch "${BRANCH}" \ + --commit "${BUILDKITE_COMMIT}" \ + --workflow "${DRA_WORKFLOW}" \ + --version "${BEAT_VERSION}" \ + --artifact-set "main" + echo "+++ :hammer_and_pick: Publishing $BRANCH $DRA_WORKFLOW DRA artifacts..." docker run --rm \ --name release-manager \ @@ -43,4 +59,4 @@ docker run --rm \ --workflow "${DRA_WORKFLOW}" \ --version "${BEAT_VERSION}" \ --artifact-set "main" \ - ${DRY_RUN} \ No newline at end of file + ${DRY_RUN} diff --git a/.buildkite/scripts/packaging/package-dra.sh b/.buildkite/scripts/packaging/package-dra.sh index a70bd455278..10d5425da36 100755 --- a/.buildkite/scripts/packaging/package-dra.sh +++ b/.buildkite/scripts/packaging/package-dra.sh @@ -7,7 +7,7 @@ if [ -z "$BEAT_DIR" ]; then exit 1 fi -echo "~~~Packaging : $BEAT_DIR" +echo "~~~ Packaging : $BEAT_DIR" WORKSPACE=$(pwd) BEAT_NAME_SLUG=$(echo "$BEAT_DIR" | sed 's/x-pack\///g') From 6d30bf157dcba25eb712fad306d03bb0a877bd28 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Thu, 25 Apr 2024 16:38:05 +0300 Subject: [PATCH 224/313] Fix BK DRA pipeline (#39212) This commit fixes the error "interpolating remaining fields: Expected identifier to start with a letter, got /" --- .buildkite/packaging.pipeline.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index 63ea44795ef..198db267425 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -16,7 +16,7 @@ steps: key: dashboards steps: - label: Snapshot dashboards - if: build.branch =~ /^\d+\.\d+$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" + if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" key: dashboards-snapshot # TODO: container with go and make agents: @@ -32,7 +32,7 @@ steps: - build/distributions/**/* - label: Staging dashboards - if: build.branch =~ /^\d+\.\d+$/ + if: build.branch =~ /^\d+\.\d+$$/ key: dashboards-staging # TODO: container with go and make agents: @@ -46,7 +46,7 @@ steps: - build/distributions/**/* - group: Packaging snapshot - if: build.branch =~ /^\d+\.\d+$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" + if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" key: packaging-snapshot steps: - label: "SNAPSHOT: {{matrix}}" @@ -119,7 +119,7 @@ steps: key: packaging-staging ## Only for release - if: build.branch =~ /^\d+\.\d+$/ + if: build.branch =~ /^\d+\.\d+$$/ steps: - label: "STAGING: {{matrix}}" env: @@ -192,7 +192,7 @@ steps: steps: - label: DRA Snapshot ## Only for release branches and main - if: build.branch =~ /^\d+\.\d+$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" + if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" key: dra-snapshot env: DRA_WORKFLOW: snapshot @@ -210,7 +210,7 @@ steps: - label: DRA Staging ## Only for release branches - if: build.branch =~ /^\d+\.\d+$/ + if: build.branch =~ /^\d+\.\d+$$/ key: dra-staging env: DRA_WORKFLOW: staging From de23b1afd6041ede183124c4c2750126a17a6f63 Mon Sep 17 00:00:00 2001 From: Carlos Crespo Date: Thu, 25 Apr 2024 12:45:18 -0300 Subject: [PATCH 225/313] [Eleasticsearch] Remove `hidden` field from indice metricset docs (#39165) * Remove field * fix lint and tests * remove hidden from Index struct * more lint * Update CHANGELOG * More lint stuff and test --- CHANGELOG.next.asciidoc | 1 + .../module/elasticsearch/elasticsearch.go | 56 ------- .../elasticsearch_integration_test.go | 147 +++++++++--------- metricbeat/module/elasticsearch/index/data.go | 14 +- 4 files changed, 74 insertions(+), 144 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 3ee1edbffa3..4d0c5e05385 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -155,6 +155,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix Azure Monitor 429 error by causing metricbeat to retry the request again. {pull}38294[38294] - Fix fields not being parsed correctly in postgresql/database {issue}25301[25301] {pull}37720[37720] - rabbitmq/queue - Change the mapping type of `rabbitmq.queue.consumers.utilisation.pct` to `scaled_float` from `long` because the values fall within the range of `[0.0, 1.0]`. Previously, conversion to integer resulted in reporting either `0` or `1`. +- Fix timeout caused by the retrival of which indices are hidden {pull}39165[39165] *Osquerybeat* diff --git a/metricbeat/module/elasticsearch/elasticsearch.go b/metricbeat/module/elasticsearch/elasticsearch.go index 0bf7aa5b532..b77691cad26 100644 --- a/metricbeat/module/elasticsearch/elasticsearch.go +++ b/metricbeat/module/elasticsearch/elasticsearch.go @@ -22,7 +22,6 @@ import ( "errors" "fmt" "net/url" - "strconv" "strings" "sync" "time" @@ -368,61 +367,6 @@ func GetXPack(http *helper.HTTP, resetURI string) (XPack, error) { return xpack, err } -type boolStr bool - -func (b *boolStr) UnmarshalJSON(raw []byte) error { - var bs string - err := json.Unmarshal(raw, &bs) - if err != nil { - return err - } - - bv, err := strconv.ParseBool(bs) - if err != nil { - return err - } - - *b = boolStr(bv) - return nil -} - -type IndexSettings struct { - Hidden bool -} - -// GetIndicesSettings returns a map of index names to their settings. -// Note that as of now it is optimized to fetch only the "hidden" index setting to keep the memory -// footprint of this function call as low as possible. -func GetIndicesSettings(http *helper.HTTP, resetURI string) (map[string]IndexSettings, error) { - content, err := fetchPath(http, resetURI, "*/_settings", "filter_path=*.settings.index.hidden&expand_wildcards=all") - - if err != nil { - return nil, fmt.Errorf("could not fetch indices settings: %w", err) - } - - var resp map[string]struct { - Settings struct { - Index struct { - Hidden boolStr `json:"hidden"` - } `json:"index"` - } `json:"settings"` - } - - err = json.Unmarshal(content, &resp) - if err != nil { - return nil, fmt.Errorf("could not parse indices settings response: %w", err) - } - - ret := make(map[string]IndexSettings, len(resp)) - for index, settings := range resp { - ret[index] = IndexSettings{ - Hidden: bool(settings.Settings.Index.Hidden), - } - } - - return ret, nil -} - // IsMLockAllEnabled returns if the given Elasticsearch node has mlockall enabled func IsMLockAllEnabled(http *helper.HTTP, resetURI, nodeID string) (bool, error) { content, err := fetchPath(http, resetURI, "_nodes/"+nodeID, "filter_path=nodes.*.process.mlockall") diff --git a/metricbeat/module/elasticsearch/elasticsearch_integration_test.go b/metricbeat/module/elasticsearch/elasticsearch_integration_test.go index 3d102a2fd62..4a7ddc978c4 100644 --- a/metricbeat/module/elasticsearch/elasticsearch_integration_test.go +++ b/metricbeat/module/elasticsearch/elasticsearch_integration_test.go @@ -21,12 +21,14 @@ package elasticsearch_test import ( "bytes" + "context" "encoding/json" "errors" "fmt" - "io/ioutil" + "io" "math/rand" "net/http" + "os" "strings" "testing" "time" @@ -137,19 +139,11 @@ func TestGetAllIndices(t *testing.T) { name, ok := event.MetricSetFields["name"] require.True(t, ok) - hidden, ok := event.MetricSetFields["hidden"] - require.True(t, ok) - - isHidden, ok := hidden.(bool) - require.True(t, ok) - switch name { case indexVisible: idxVisibleExists = true - require.False(t, isHidden) case indexHidden: idxHiddenExists = true - require.True(t, isHidden) } } @@ -202,7 +196,7 @@ func createIndex(host string, isHidden bool) (string, error) { reqBody := fmt.Sprintf(`{ "settings": { "index.hidden": %v } }`, isHidden) - req, err := http.NewRequest("PUT", fmt.Sprintf("http://%v/%v", host, indexName), strings.NewReader(reqBody)) + req, err := http.NewRequestWithContext(context.Background(), "PUT", fmt.Sprintf("http://%v/%v", host, indexName), strings.NewReader(reqBody)) if err != nil { return "", fmt.Errorf("could not build create index request: %w", err) } @@ -214,7 +208,7 @@ func createIndex(host string, isHidden bool) (string, error) { return "", fmt.Errorf("could not send create index request: %w", err) } defer resp.Body.Close() - respBody, err := ioutil.ReadAll(resp.Body) + respBody, _ := io.ReadAll(resp.Body) if resp.StatusCode != 200 { return "", fmt.Errorf("HTTP error %d: %s, %s", resp.StatusCode, resp.Status, string(respBody)) @@ -242,7 +236,7 @@ func enableTrialLicense(host string, version *version.V) error { enableXPackURL = "/_license/start_trial?acknowledge=true" } - req, err := http.NewRequest("POST", "http://"+host+enableXPackURL, nil) + req, err := http.NewRequestWithContext(context.Background(), "POST", "http://"+host+enableXPackURL, nil) if err != nil { return err } @@ -254,7 +248,7 @@ func enableTrialLicense(host string, version *version.V) error { defer resp.Body.Close() if resp.StatusCode != 200 { - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { return err } @@ -273,13 +267,19 @@ func checkTrialLicenseEnabled(host string, version *version.V) (bool, error) { licenseURL = "/_license" } - resp, err := http.Get("http://" + host + licenseURL) + req, err := http.NewRequestWithContext(context.Background(), "GET", "http://"+host+licenseURL, nil) + if err != nil { + return false, err + } + + client := &http.Client{} + resp, err := client.Do(req) if err != nil { return false, err } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { return false, err } @@ -302,7 +302,7 @@ func checkTrialLicenseEnabled(host string, version *version.V) (bool, error) { func createMLJob(host string, version *version.V) error { - mlJob, err := ioutil.ReadFile("ml_job/_meta/test/test_job.json") + mlJob, err := os.ReadFile("ml_job/_meta/test/test_job.json") if err != nil { return err } @@ -323,6 +323,7 @@ func createMLJob(host string, version *version.V) error { return fmt.Errorf("error doing PUT request when creating ML job: %w", err) } + defer resp.Body.Close() if resp.StatusCode != 200 { return fmt.Errorf("HTTP error loading ml job %d: %s, %s", resp.StatusCode, resp.Status, string(body)) } @@ -364,13 +365,19 @@ func createCCRStats(host string) error { } func checkCCRStatsExists(host string) (bool, error) { - resp, err := http.Get("http://" + host + "/_ccr/stats") + req, err := http.NewRequestWithContext(context.Background(), "GET", "http://"+host+"/_ccr/stats", nil) + if err != nil { + return false, err + } + + client := &http.Client{} + resp, err := client.Do(req) if err != nil { return false, err } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { return false, err } @@ -389,50 +396,58 @@ func checkCCRStatsExists(host string) (bool, error) { } func setupCCRRemote(host string) error { - remoteSettings, err := ioutil.ReadFile("ccr/_meta/test/test_remote_settings.json") + remoteSettings, err := os.ReadFile("ccr/_meta/test/test_remote_settings.json") if err != nil { return err } settingsURL := "/_cluster/settings" - _, _, err = httpPutJSON(host, settingsURL, remoteSettings) + _, resp, err := httpPutJSON(host, settingsURL, remoteSettings) + defer resp.Body.Close() return err } func createCCRLeaderIndex(host string) error { - leaderIndex, err := ioutil.ReadFile("ccr/_meta/test/test_leader_index.json") + leaderIndex, err := os.ReadFile("ccr/_meta/test/test_leader_index.json") if err != nil { return err } indexURL := "/pied_piper" - _, _, err = httpPutJSON(host, indexURL, leaderIndex) + _, resp, err := httpPutJSON(host, indexURL, leaderIndex) + defer resp.Body.Close() return err } func createCCRFollowerIndex(host string) error { - followerIndex, err := ioutil.ReadFile("ccr/_meta/test/test_follower_index.json") + followerIndex, err := os.ReadFile("ccr/_meta/test/test_follower_index.json") if err != nil { return err } followURL := "/rats/_ccr/follow" - _, _, err = httpPutJSON(host, followURL, followerIndex) + _, resp, err := httpPutJSON(host, followURL, followerIndex) + defer resp.Body.Close() return err } func checkExists(url string) bool { - resp, err := http.Get(url) + req, err := http.NewRequestWithContext(context.Background(), "GET", url, nil) + if err != nil { return false } - resp.Body.Close() - // Entry exists - if resp.StatusCode == 200 { - return true + client := &http.Client{} + resp, err := client.Do(req) + + if err != nil { + return false } - return false + defer resp.Body.Close() + + // Entry exists + return resp.StatusCode == 200 } func createEnrichStats(host string) error { @@ -465,82 +480,58 @@ func createEnrichStats(host string) error { } func createEnrichSourceIndex(host string) error { - sourceDoc, err := ioutil.ReadFile("enrich/_meta/test/source_doc.json") + sourceDoc, err := os.ReadFile("enrich/_meta/test/source_doc.json") if err != nil { return err } docURL := "/users/_doc/1?refresh=wait_for" - _, _, err = httpPutJSON(host, docURL, sourceDoc) + _, resp, err := httpPutJSON(host, docURL, sourceDoc) + defer resp.Body.Close() return err } func createEnrichPolicy(host string) error { - policy, err := ioutil.ReadFile("enrich/_meta/test/policy.json") + policy, err := os.ReadFile("enrich/_meta/test/policy.json") if err != nil { return err } policyURL := "/_enrich/policy/users-policy" - _, _, err = httpPutJSON(host, policyURL, policy) + _, resp, err := httpPutJSON(host, policyURL, policy) + defer resp.Body.Close() return err } func executeEnrichPolicy(host string) error { executeURL := "/_enrich/policy/users-policy/_execute" - _, _, err := httpPostJSON(host, executeURL, nil) + _, resp, err := httpPostJSON(host, executeURL, nil) + defer resp.Body.Close() return err } func createEnrichIngestPipeline(host string) error { - pipeline, err := ioutil.ReadFile("enrich/_meta/test/ingest_pipeline.json") + pipeline, err := os.ReadFile("enrich/_meta/test/ingest_pipeline.json") if err != nil { return err } pipelineURL := "/_ingest/pipeline/user_lookup" - _, _, err = httpPutJSON(host, pipelineURL, pipeline) + _, resp, err := httpPutJSON(host, pipelineURL, pipeline) + defer resp.Body.Close() return err } func ingestAndEnrichDoc(host string) error { - targetDoc, err := ioutil.ReadFile("enrich/_meta/test/target_doc.json") + targetDoc, err := os.ReadFile("enrich/_meta/test/target_doc.json") if err != nil { return err } docURL := "/my_index/_doc/my_id?pipeline=user_lookup" - _, _, err = httpPutJSON(host, docURL, targetDoc) - return err -} - -func countIndices(elasticsearchHostPort string) (int, error) { - return countCatItems(elasticsearchHostPort, "indices", "&expand_wildcards=open,hidden") -} - -func countShards(elasticsearchHostPort string) (int, error) { - return countCatItems(elasticsearchHostPort, "shards", "") -} - -func countCatItems(elasticsearchHostPort, catObject, extraParams string) (int, error) { - resp, err := http.Get("http://" + elasticsearchHostPort + "/_cat/" + catObject + "?format=json" + extraParams) - if err != nil { - return 0, err - } + _, resp, err := httpPutJSON(host, docURL, targetDoc) defer resp.Body.Close() - - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return 0, err - } - - var data []mapstr.M - err = json.Unmarshal(body, &data) - if err != nil { - return 0, err - } - - return len(data), nil + return err } func checkSkip(t *testing.T, metricset string, ver *version.V) { @@ -560,13 +551,19 @@ func checkSkip(t *testing.T, metricset string, ver *version.V) { } func getElasticsearchVersion(elasticsearchHostPort string) (*version.V, error) { - resp, err := http.Get("http://" + elasticsearchHostPort + "/") + req, err := http.NewRequestWithContext(context.Background(), "GET", "http://"+elasticsearchHostPort+"/", nil) + if err != nil { + return nil, err + } + + client := &http.Client{} + resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + body, err := io.ReadAll(resp.Body) if err != nil { return nil, err } @@ -594,7 +591,7 @@ func httpPostJSON(host, path string, body []byte) ([]byte, *http.Response, error } func httpSendJSON(host, path, method string, body []byte) ([]byte, *http.Response, error) { - req, err := http.NewRequest(method, "http://"+host+path, bytes.NewReader(body)) + req, err := http.NewRequestWithContext(context.Background(), method, "http://"+host+path, bytes.NewReader(body)) if err != nil { return nil, nil, err } @@ -605,14 +602,12 @@ func httpSendJSON(host, path, method string, body []byte) ([]byte, *http.Respons if err != nil { return nil, nil, err } - defer resp.Body.Close() - body, err = ioutil.ReadAll(resp.Body) + responseBody, err := io.ReadAll(resp.Body) if err != nil { return nil, nil, err } - - return body, resp, nil + return responseBody, resp, nil } type checkSuccessFunction func() (bool, error) @@ -636,7 +631,7 @@ func waitForSuccess(f checkSuccessFunction, retryInterval time.Duration, numAtte } func randString(len int) string { - rand.Seed(time.Now().UnixNano()) + rand := rand.New(rand.NewSource(time.Now().UnixNano())) b := make([]byte, len) aIdx := int('a') diff --git a/metricbeat/module/elasticsearch/index/data.go b/metricbeat/module/elasticsearch/index/data.go index 620cddf93a0..d8bec4939d6 100644 --- a/metricbeat/module/elasticsearch/index/data.go +++ b/metricbeat/module/elasticsearch/index/data.go @@ -42,7 +42,6 @@ type Index struct { Index string `json:"index"` Status string `json:"status"` - Hidden bool `json:"hidden"` Shards shardStats `json:"shards"` } @@ -191,23 +190,14 @@ func eventsMapping(r mb.ReporterV2, httpClient *helper.HTTP, info elasticsearch. return fmt.Errorf("failure parsing Indices Stats Elasticsearch API response: %w", err) } - indicesSettings, err := elasticsearch.GetIndicesSettings(httpClient, httpClient.GetURI()) - if err != nil { - return fmt.Errorf("failure retrieving indices settings from Elasticsearch: %w", err) - } - var errs multierror.Errors - for name, idx := range indicesStats.Indices { + for name := range indicesStats.Indices { event := mb.Event{ ModuleFields: mapstr.M{}, } + idx := indicesStats.Indices[name] idx.Index = name - settings, exists := indicesSettings[name] - if exists { - idx.Hidden = settings.Hidden - } - err = addClusterStateFields(&idx, clusterState) if err != nil { errs = append(errs, fmt.Errorf("failure adding cluster state fields: %w", err)) From 5d1b442d4bb3698a0ab6f3283b5514ed353966b0 Mon Sep 17 00:00:00 2001 From: Andrew Gizas Date: Thu, 25 Apr 2024 20:54:58 +0300 Subject: [PATCH 226/313] [Beats] Adding support for elastic-agent-autodiscovery v0.6.13 Introduce log message for not supported annotations (#38213) * adding support for logshints and autodiscovery 0.6.9 * correcting events prealloc lint error * updating to elastic-agent-autodiscovery v.0.6.13 * fixing hint hosts --------- Co-authored-by: Denis --- CHANGELOG.next.asciidoc | 4 +-- NOTICE.txt | 32 +++++++++---------- go.mod | 16 +++++----- go.sum | 26 +++++++++------ .../autodiscover/providers/docker/config.go | 5 ++- .../autodiscover/providers/docker/docker.go | 6 +++- .../providers/kubernetes/config.go | 3 ++ .../autodiscover/providers/kubernetes/node.go | 6 +++- .../autodiscover/providers/kubernetes/pod.go | 6 +++- .../providers/kubernetes/pod_test.go | 19 +++++++---- .../providers/kubernetes/service.go | 8 +++-- .../module/kubernetes/util/kubernetes_test.go | 8 ++--- .../autodiscover/providers/nomad/nomad.go | 2 +- 13 files changed, 88 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 4d0c5e05385..7bc8eed06e3 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -10,7 +10,6 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Affecting all Beats* - *Auditbeat* @@ -183,6 +182,8 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Update to Go 1.21.9. {pulk}38727[38727] - Enable early event encoding in the Elasticsearch output, improving cpu and memory use {pull}38572[38572] - The environment variable `BEATS_ADD_CLOUD_METADATA_PROVIDERS` overrides configured/default `add_cloud_metadata` providers {pull}38669[38669] +- Introduce log message for not supported annotations for Hints based autodiscover {pull}38213[38213] + *Auditbeat* @@ -380,6 +381,5 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - diff --git a/NOTICE.txt b/NOTICE.txt index 4e1bd85862b..f060baf4098 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -5044,11 +5044,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-lambda-go@v1.44 -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2 -Version: v1.18.0 +Version: v1.26.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2@v1.18.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2@v1.26.1/LICENSE.txt: Apache License @@ -9284,11 +9284,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/smithy-go -Version: v1.13.5 +Version: v1.20.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/smithy-go@v1.13.5/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/aws/smithy-go@v1.20.2/LICENSE: Apache License @@ -11300,11 +11300,11 @@ third-party archives. -------------------------------------------------------------------------------- Dependency : github.com/docker/docker -Version: v24.0.7+incompatible +Version: v24.0.9+incompatible Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/docker/docker@v24.0.7+incompatible/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/docker/docker@v24.0.9+incompatible/LICENSE: Apache License @@ -12525,11 +12525,11 @@ various licenses: -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-autodiscover -Version: v0.6.8 +Version: v0.6.13 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-autodiscover@v0.6.8/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-autodiscover@v0.6.13/LICENSE: Apache License Version 2.0, January 2004 @@ -34789,11 +34789,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/aws/p -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/internal/configsources -Version: v1.1.33 +Version: v1.3.5 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/configsources@v1.1.33/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/configsources@v1.3.5/LICENSE.txt: Apache License @@ -35001,11 +35001,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/inter -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 -Version: v2.4.27 +Version: v2.6.5 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.4.27/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.6.5/LICENSE.txt: Apache License @@ -35637,11 +35637,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/inter -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding -Version: v1.9.9 +Version: v1.11.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.9.9/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.11.2/LICENSE.txt: Apache License @@ -36061,11 +36061,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/internal/presigned-url -Version: v1.9.17 +Version: v1.11.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.9.17/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.11.7/LICENSE.txt: Apache License diff --git a/go.mod b/go.mod index 0a66274ddfa..0805e9200c8 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/apoydence/eachers v0.0.0-20181020210610-23942921fe77 // indirect github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 github.com/aws/aws-lambda-go v1.44.0 - github.com/aws/aws-sdk-go-v2 v1.18.0 + github.com/aws/aws-sdk-go-v2 v1.26.1 github.com/aws/aws-sdk-go-v2/config v1.17.7 github.com/aws/aws-sdk-go-v2/credentials v1.12.20 github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.26.0 @@ -59,7 +59,7 @@ require ( github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2 // indirect github.com/dgraph-io/badger/v3 v3.2103.1 github.com/digitalocean/go-libvirt v0.0.0-20180301200012-6075ea3c39a1 - github.com/docker/docker v24.0.7+incompatible + github.com/docker/docker v24.0.9+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-plugins-helpers v0.0.0-20181025120712-1e6269c305b8 github.com/docker/go-units v0.5.0 @@ -199,11 +199,11 @@ require ( github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.4 github.com/aws/aws-sdk-go-v2/service/health v1.17.0 github.com/aws/aws-sdk-go-v2/service/kinesis v1.15.8 - github.com/aws/smithy-go v1.13.5 + github.com/aws/smithy-go v1.20.2 github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5 github.com/elastic/bayeux v1.0.5 github.com/elastic/ebpfevents v0.6.0 - github.com/elastic/elastic-agent-autodiscover v0.6.8 + github.com/elastic/elastic-agent-autodiscover v0.6.13 github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 @@ -264,13 +264,13 @@ require ( github.com/armon/go-radix v1.0.0 // indirect github.com/aws/aws-sdk-go v1.38.60 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5 // indirect diff --git a/go.sum b/go.sum index 6c8c4406d89..57711b7a9fe 100644 --- a/go.sum +++ b/go.sum @@ -293,8 +293,9 @@ github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVj github.com/aws/aws-sdk-go-v2 v1.16.3/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= github.com/aws/aws-sdk-go-v2 v1.16.6/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= -github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= +github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3/go.mod h1:gNsR5CaXKmQSSzrmGxmwmct/r+ZBfbxorAuXYsj/M5Y= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 h1:tcFliCWne+zOuUfKNRn8JdFBuWPDuISDH08wD2ULkhk= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU= @@ -309,13 +310,15 @@ github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33/go.mod h1:84XgODVR8uRhm github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10/go.mod h1:F+EZtuIwjlv35kRJPyBGcsA4f7bnSoz15zOQ2lJq1Z4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.13/go.mod h1:wLLesU+LdMZDM3U0PP9vZXJW39zmD/7L4nY2pSrYZ/g= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4/go.mod h1:8glyUqVIM4AmeenIsPo0oVh3+NUwnsQml2OFupfQW+0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.7/go.mod h1:93Uot80ddyVzSl//xEJreNKMhxntr71WtR3v/A1cRYk= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 h1:wj5Rwc05hvUSvKuOF29IYb9QrCLjU+rHAy/x/o0DK2c= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 h1:ZSIPAkAsCCjYrhqfw2+lNzWDzxzHXEckFkTePL5RSWQ= @@ -336,13 +339,15 @@ github.com/aws/aws-sdk-go-v2/service/health v1.17.0 h1:DlG9888p6n8Fizx8Vuw1qalBO github.com/aws/aws-sdk-go-v2/service/health v1.17.0/go.mod h1:z7JTQWRaBIdYYxK8TqDi4MKYYl04uI+jvTJuMEKIsL0= github.com/aws/aws-sdk-go-v2/service/iam v1.18.4 h1:E41guA79mjEbwJdh0zXz1d8+Zt4zxRr+b1ipiVbKXzs= github.com/aws/aws-sdk-go-v2/service/iam v1.18.4/go.mod h1:FpNvAfCZyIQ3qeNJUOw4CShKvdizHblXqAvSk0qmyL4= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9 h1:Lh1AShsuIJTwMkoxVCAYPJgNG5H+eN6SmoUn8nOZ5wE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9/go.mod h1:a9j48l6yL5XINLHLcOKInjdvknN+vWqPBxqeIDw7ktw= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 h1:BBYoNQt2kUZUUK4bIPsKrCcjVPUMNsgQpNAwhznK/zo= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4/go.mod h1:uKkN7qmSIsNJVyMtxNQoCEYMvFEXbOg9fwCJPdfp2u8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 h1:Jrd/oMh0PKQc6+BowB+pLEwLIgaQF29eYbe7E1Av9Ug= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 h1:HfVVR1vItaG6le+Bpw6P4midjBDMKnjMyZnw9MXYUcE= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI= github.com/aws/aws-sdk-go-v2/service/kinesis v1.6.0/go.mod h1:9O7UG2pELnP0hq35+Gd7XDjOLBkg7tmgRQ0y14ZjoJI= @@ -368,8 +373,9 @@ github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAm github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= +github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/awslabs/goformation/v3 v3.1.0/go.mod h1:hQ5RXo3GNm2laHWKizDzU5DsDy+yNcenSca2UxN0850= github.com/awslabs/goformation/v4 v4.1.0 h1:JRxIW0IjhYpYDrIZOTJGMu2azXKI+OK5dP56ubpywGU= github.com/awslabs/goformation/v4 v4.1.0/go.mod h1:MBDN7u1lMNDoehbFuO4uPvgwPeolTMA2TzX1yO6KlxI= @@ -503,8 +509,8 @@ github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4Kfc github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= -github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.9+incompatible h1:HPGzNmwfLZWdxHqK9/II92pyi1EpYKsAqcl4G0Of9v0= +github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= @@ -545,8 +551,8 @@ github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 h1:lnDkqiRFKm0rxdljqr github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3/go.mod h1:aPqzac6AYkipvp4hufTyMj5PDIphF3+At8zr7r51xjY= github.com/elastic/ebpfevents v0.6.0 h1:BrL3m7JFK7U6h2jkbk3xAWWs//IZnugCHEDds5u2v68= github.com/elastic/ebpfevents v0.6.0/go.mod h1:ESG9gw7N+n5yCCMgdg1IIJENKWSmX7+X0Fi9GUs9nvU= -github.com/elastic/elastic-agent-autodiscover v0.6.8 h1:BSXz+QwjZAEt08G+T3GDGl14Bh9a6zD8luNCvZut/b8= -github.com/elastic/elastic-agent-autodiscover v0.6.8/go.mod h1:hFeFqneS2r4jD0/QzGkrNk0YVdN0JGh7lCWdsH7zcI4= +github.com/elastic/elastic-agent-autodiscover v0.6.13 h1:zBeTxV+o2efEKntY+o6iMMNJ1AVjDXUqY3o6uzIkKaw= +github.com/elastic/elastic-agent-autodiscover v0.6.13/go.mod h1:7P6YVKxuBT0qE/VxuA87obwZUAEU0O44mCN3r4/6x8w= github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= github.com/elastic/elastic-agent-client/v7 v7.8.1/go.mod h1:axl1nkdqc84YRFkeJGD9jExKNPUrOrzf3DFo2m653nY= github.com/elastic/elastic-agent-libs v0.7.5 h1:4UMqB3BREvhwecYTs/L23oQp1hs/XUkcunPlmTZn5yg= diff --git a/libbeat/autodiscover/providers/docker/config.go b/libbeat/autodiscover/providers/docker/config.go index 35d915e610c..86ab487a15a 100644 --- a/libbeat/autodiscover/providers/docker/config.go +++ b/libbeat/autodiscover/providers/docker/config.go @@ -27,6 +27,9 @@ import ( "github.com/elastic/elastic-agent-libs/config" ) +// AllSupportedHints includes the set of all supported hints for both logs and metrics autodiscovery +var AllSupportedHints = []string{"enabled", "module", "metricsets", "hosts", "period", "timeout", "metrics_path", "username", "password", "stream", "processors", "multiline", "json", "disable", "ssl", "metrics_filters", "raw", "include_lines", "exclude_lines", "fileset", "pipeline", "raw"} + // Config for docker autodiscover provider type Config struct { Host string `config:"host"` @@ -40,7 +43,7 @@ type Config struct { CleanupTimeout time.Duration `config:"cleanup_timeout" validate:"positive"` } -// Public variable, so specific beats (as Filebeat) can set a different cleanup timeout if they need it. +// DefaultCleanupTimeout Public variable, so specific beats (as Filebeat) can set a different cleanup timeout if they need it. var DefaultCleanupTimeout time.Duration = 0 func defaultConfig() *Config { diff --git a/libbeat/autodiscover/providers/docker/docker.go b/libbeat/autodiscover/providers/docker/docker.go index 6e7b5031b0a..a659135c7e7 100644 --- a/libbeat/autodiscover/providers/docker/docker.go +++ b/libbeat/autodiscover/providers/docker/docker.go @@ -383,7 +383,11 @@ func (d *Provider) generateHints(event bus.Event) bus.Event { e["ports"] = ports } if labels, err := dockerMeta.GetValue("labels"); err == nil { - hints := utils.GenerateHints(labels.(mapstr.M), "", d.config.Prefix) + hints, incorrecthints := utils.GenerateHints(labels.(mapstr.M), "", d.config.Prefix, true, AllSupportedHints) + // We check whether the provided annotation follows the supported format and vocabulary. The check happens for annotations that have prefix co.elastic + for _, value := range incorrecthints { + d.logger.Debugf("provided hint: %s/%s is not in the supported list", d.config.Prefix, value) + } e["hints"] = hints } return e diff --git a/libbeat/autodiscover/providers/kubernetes/config.go b/libbeat/autodiscover/providers/kubernetes/config.go index 760d181ae66..b1ec09900fd 100644 --- a/libbeat/autodiscover/providers/kubernetes/config.go +++ b/libbeat/autodiscover/providers/kubernetes/config.go @@ -30,6 +30,9 @@ import ( "github.com/elastic/elastic-agent-libs/logp" ) +// AllSupportedHints includes the set of all supported hints for both logs and metrics autodiscovery +var AllSupportedHints = []string{"enabled", "module", "metricsets", "hosts", "period", "timeout", "metrics_path", "username", "password", "stream", "processors", "multiline", "json", "disable", "ssl", "metrics_filters", "raw", "include_lines", "exclude_lines", "fileset", "pipeline", "raw"} + // Config for kubernetes autodiscover provider type Config struct { KubeConfig string `config:"kube_config"` diff --git a/libbeat/autodiscover/providers/kubernetes/node.go b/libbeat/autodiscover/providers/kubernetes/node.go index 8a1630dae9c..4747c751cbf 100644 --- a/libbeat/autodiscover/providers/kubernetes/node.go +++ b/libbeat/autodiscover/providers/kubernetes/node.go @@ -153,7 +153,11 @@ func (n *node) GenerateHints(event bus.Event) bus.Event { e["port"] = port } - hints := utils.GenerateHints(annotations, "", n.config.Prefix) + hints, incorrecthints := utils.GenerateHints(annotations, "", n.config.Prefix, true, AllSupportedHints) + // We check whether the provided annotation follows the supported format and vocabulary. The check happens for annotations that have prefix co.elastic + for _, value := range incorrecthints { + n.logger.Debugf("provided hint: %s/%s is not in the supported list", n.config.Prefix, value) + } n.logger.Debugf("Generated hints %+v", hints) if len(hints) != 0 { e["hints"] = hints diff --git a/libbeat/autodiscover/providers/kubernetes/pod.go b/libbeat/autodiscover/providers/kubernetes/pod.go index 569b2d21cd4..b11faac4931 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod.go +++ b/libbeat/autodiscover/providers/kubernetes/pod.go @@ -251,7 +251,11 @@ func (p *pod) GenerateHints(event bus.Event) bus.Event { cname := utils.GetContainerName(container) // Generate hints based on the cumulative of both namespace and pod annotations. - hints := utils.GenerateHints(annotations, cname, p.config.Prefix) + hints, incorrecthints := utils.GenerateHints(annotations, cname, p.config.Prefix, true, AllSupportedHints) + // We check whether the provided annotation follows the supported format and vocabulary. The check happens for annotations that have prefix co.elastic + for _, value := range incorrecthints { + p.logger.Debugf("provided hint: %s/%s is not in the supported list", p.config.Prefix, value) + } p.logger.Debugf("Generated hints %+v", hints) if len(hints) != 0 { diff --git a/libbeat/autodiscover/providers/kubernetes/pod_test.go b/libbeat/autodiscover/providers/kubernetes/pod_test.go index 3a60342444a..84712615ec1 100644 --- a/libbeat/autodiscover/providers/kubernetes/pod_test.go +++ b/libbeat/autodiscover/providers/kubernetes/pod_test.go @@ -108,6 +108,7 @@ func TestGenerateHints(t *testing.T) { "co.elastic.logs/multiline.pattern": "^test", "co.elastic.logs/json.keys_under_root": "true", "co.elastic.metrics/module": "prometheus", + "co.elastic.metrics/timeoutssssssss": "5s", //On purpose we added this annotation with typo "co.elastic.metrics/period": "10s", "co.elastic.metrics.foobar/period": "15s", "not.to.include": "true", @@ -125,6 +126,7 @@ func TestGenerateHints(t *testing.T) { "co.elastic.logs/multiline.pattern": "^test", "co.elastic.logs/json.keys_under_root": "true", "co.elastic.metrics/module": "prometheus", + "co.elastic.metrics/timeoutssssssss": "5s", "not.to.include": "true", "co.elastic.metrics/period": "10s", "co.elastic.metrics.foobar/period": "15s", @@ -145,8 +147,9 @@ func TestGenerateHints(t *testing.T) { }, }, "metrics": mapstr.M{ - "module": "prometheus", - "period": "15s", + "module": "prometheus", + "period": "15s", + "timeoutssssssss": "5s", }, }, "container": mapstr.M{ @@ -230,6 +233,7 @@ func TestGenerateHints(t *testing.T) { "co.elastic.metrics/module": "prometheus", "co.elastic.metrics/period": "10s", "co.elastic.metrics.foobar/period": "15s", + "co.elastic.metrics/hosts": "127.0.0.1:9090", "not.to.include": "true", }), "namespace_annotations": getNestedAnnotations(mapstr.M{ @@ -251,6 +255,7 @@ func TestGenerateHints(t *testing.T) { "co.elastic.metrics/module": "prometheus", "co.elastic.metrics/period": "10s", "co.elastic.metrics.foobar/period": "15s", + "co.elastic.metrics/hosts": "127.0.0.1:9090", "not.to.include": "true", }), "namespace_annotations": getNestedAnnotations(mapstr.M{ @@ -268,6 +273,7 @@ func TestGenerateHints(t *testing.T) { "hints": mapstr.M{ "metrics": mapstr.M{ "module": "prometheus", + "hosts": "127.0.0.1:9090", "period": "15s", }, }, @@ -2191,6 +2197,7 @@ func TestPodEventer_Namespace_Node_Watcher(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { + // #nosec G601 config := conf.MustNewConfigFrom(&test.cfg) c := defaultConfig() err = config.Unpack(&c) @@ -2247,6 +2254,10 @@ func (s *mockUpdaterWatcher) Start() error { return err } +func (s *mockUpdaterWatcher) GetEventHandler() kubernetes.ResourceEventHandler { + return nil +} + func (s *mockUpdaterWatcher) Stop() { } @@ -2257,10 +2268,6 @@ func (s *mockUpdaterWatcher) Store() caches.Store { func (s *mockUpdaterWatcher) AddEventHandler(kubernetes.ResourceEventHandler) { } -func (s *mockUpdaterWatcher) GetEventHandler() kubernetes.ResourceEventHandler { - return nil -} - func (s *mockUpdaterStore) List() []interface{} { return s.objects } diff --git a/libbeat/autodiscover/providers/kubernetes/service.go b/libbeat/autodiscover/providers/kubernetes/service.go index de6287f7466..ba62dda9c47 100644 --- a/libbeat/autodiscover/providers/kubernetes/service.go +++ b/libbeat/autodiscover/providers/kubernetes/service.go @@ -157,7 +157,11 @@ func (s *service) GenerateHints(event bus.Event) bus.Event { e["port"] = port } - hints := utils.GenerateHints(annotations, "", s.config.Prefix) + hints, incorrecthints := utils.GenerateHints(annotations, "", s.config.Prefix, true, AllSupportedHints) + // We check whether the provided annotation follows the supported format and vocabulary. The check happens for annotations that have prefix co.elastic + for _, value := range incorrecthints { + s.logger.Debugf("provided hint: %s/%s is not in the supported list", s.config.Prefix, value) + } s.logger.Debugf("Generated hints %+v", hints) if len(hints) != 0 { @@ -222,7 +226,7 @@ func (s *service) emit(svc *kubernetes.Service, flag string) { } } - var events []bus.Event + events := []bus.Event{} for _, port := range svc.Spec.Ports { event := bus.Event{ "provider": s.uuid, diff --git a/metricbeat/module/kubernetes/util/kubernetes_test.go b/metricbeat/module/kubernetes/util/kubernetes_test.go index 8235e73a277..61da906372f 100644 --- a/metricbeat/module/kubernetes/util/kubernetes_test.go +++ b/metricbeat/module/kubernetes/util/kubernetes_test.go @@ -718,6 +718,10 @@ type mockWatcher struct { handler kubernetes.ResourceEventHandler } +func (m *mockWatcher) GetEventHandler() kubernetes.ResourceEventHandler { + return m.handler +} + func (m *mockWatcher) Start() error { return nil } @@ -730,10 +734,6 @@ func (m *mockWatcher) AddEventHandler(r kubernetes.ResourceEventHandler) { m.handler = r } -func (m *mockWatcher) GetEventHandler() kubernetes.ResourceEventHandler { - return m.handler -} - func (m *mockWatcher) Store() cache.Store { return nil } diff --git a/x-pack/libbeat/autodiscover/providers/nomad/nomad.go b/x-pack/libbeat/autodiscover/providers/nomad/nomad.go index add0d9a378f..3cfd4ce5fee 100644 --- a/x-pack/libbeat/autodiscover/providers/nomad/nomad.go +++ b/x-pack/libbeat/autodiscover/providers/nomad/nomad.go @@ -277,7 +277,7 @@ func (p *Provider) generateHints(event bus.Event) bus.Event { } cname := utils.GetContainerName(container) - hints := utils.GenerateHints(tasks, cname, p.config.Prefix) + hints, _ := utils.GenerateHints(tasks, cname, p.config.Prefix, false, []string{}) // Parameter validate=false of utils.GenerateHints. This disables the validation of hints if len(hints) > 0 { e["hints"] = hints } From 964958886a0416017d3720a4a38a7805e198b7c3 Mon Sep 17 00:00:00 2001 From: Michael Wolf Date: Thu, 25 Apr 2024 13:27:41 -0700 Subject: [PATCH 227/313] [add_session_metadata processor] Keep exited processes in the process DB (#39173) With the add_session_metadata processor, don't remove processes from the process db when the process has exited. The processor can be run on an fork/exec events after the process has actually exited, so the process must remain in the DB after it has exited, so the info can be used in enrichment of these events. Now that the process is kept in the DB, the exit code is also appended on exit events, so the exit code can be used in enrichment of the exit events. --- CHANGELOG.next.asciidoc | 1 + .../sessionmd/add_session_metadata.go | 10 +- .../processors/sessionmd/processdb/db.go | 32 +- .../sessionmd/processdb/entry_leader_test.go | 347 ++++++++++++++++++ .../processors/sessionmd/processdb/reaper.go | 109 ++++++ .../procfs_provider/procfs_provider.go | 2 +- .../processors/sessionmd/types/process.go | 2 +- 7 files changed, 495 insertions(+), 8 deletions(-) create mode 100644 x-pack/auditbeat/processors/sessionmd/processdb/reaper.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 7bc8eed06e3..445e6294d4c 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -94,6 +94,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Auditbeat* - Set field types to correctly match ECS in sessionmd processor {issue}38955[38955] {pull}38994[38994] +- Keep process info on exited processes, to avoid failing to enrich events in sessionmd processor {pull}39173[39173] *Filebeat* diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go index 5b934980494..ff9fa54e556 100644 --- a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go @@ -57,7 +57,7 @@ func New(cfg *cfg.C) (beat.Processor, error) { } backfilledPIDs := db.ScrapeProcfs() - logger.Debugf("backfilled %d processes", len(backfilledPIDs)) + logger.Infof("backfilled %d processes", len(backfilledPIDs)) var p provider.Provider @@ -70,6 +70,9 @@ func New(cfg *cfg.C) (beat.Processor, error) { if err != nil { return nil, fmt.Errorf("failed to create provider: %w", err) } + logger.Info("backend=auto using procfs") + } else { + logger.Info("backend=auto using ebpf") } case "ebpf": p, err = ebpf_provider.NewProvider(ctx, logger, db) @@ -111,6 +114,11 @@ func (p *addSessionMetadata) Run(ev *beat.Event) (*beat.Event, error) { return result, nil } +func (p *addSessionMetadata) Close() error { + p.db.Close() + return nil +} + func (p *addSessionMetadata) String() string { return fmt.Sprintf("%v=[backend=%s, pid_field=%s]", processorName, p.config.Backend, p.config.PIDField) diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/db.go b/x-pack/auditbeat/processors/sessionmd/processdb/db.go index f5ec71d1d4a..2c7c228e2c1 100644 --- a/x-pack/auditbeat/processors/sessionmd/processdb/db.go +++ b/x-pack/auditbeat/processors/sessionmd/processdb/db.go @@ -7,6 +7,7 @@ package processdb import ( + "container/heap" "encoding/base64" "errors" "fmt" @@ -82,6 +83,7 @@ type Process struct { Cwd string Env map[string]string Filename string + ExitCode int32 } var ( @@ -185,6 +187,8 @@ type DB struct { entryLeaders map[uint32]EntryType entryLeaderRelationships map[uint32]uint32 procfs procfs.Reader + stopChan chan struct{} + removalCandidates rcHeap } func NewDB(reader procfs.Reader, logger logp.Logger) (*DB, error) { @@ -192,13 +196,17 @@ func NewDB(reader procfs.Reader, logger logp.Logger) (*DB, error) { if initError != nil { return &DB{}, initError } - return &DB{ + db := DB{ logger: logp.NewLogger("processdb"), processes: make(map[uint32]Process), entryLeaders: make(map[uint32]EntryType), entryLeaderRelationships: make(map[uint32]uint32), procfs: reader, - }, nil + stopChan: make(chan struct{}), + removalCandidates: make(rcHeap, 0), + } + db.startReaper() + return &db, nil } func (db *DB) calculateEntityIDv1(pid uint32, startTime time.Time) string { @@ -406,9 +414,18 @@ func (db *DB) InsertExit(exit types.ProcessExitEvent) { defer db.mutex.Unlock() pid := exit.PIDs.Tgid - delete(db.processes, pid) - delete(db.entryLeaders, pid) - delete(db.entryLeaderRelationships, pid) + process, ok := db.processes[pid] + if !ok { + db.logger.Errorf("could not insert exit, pid %v not found in db", pid) + return + } + process.ExitCode = exit.ExitCode + db.processes[pid] = process + heap.Push(&db.removalCandidates, removalCandidate{ + pid: pid, + startTime: process.PIDs.StartTimeNS, + exitTime: time.Now(), + }) } func interactiveFromTTY(tty types.TTYDev) bool { @@ -437,6 +454,7 @@ func fullProcessFromDBProcess(p Process) types.Process { ret.Thread.Capabilities.Effective, _ = capabilities.FromUint64(p.Creds.CapEffective) ret.TTY.CharDevice.Major = p.CTTY.Major ret.TTY.CharDevice.Minor = p.CTTY.Minor + ret.ExitCode = p.ExitCode return ret } @@ -716,3 +734,7 @@ func (db *DB) scrapeAncestors(proc Process) { db.insertProcess(p) } } + +func (db *DB) Close() { + close(db.stopChan) +} diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go b/x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go index 15f98250f55..74140f47f6c 100644 --- a/x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go +++ b/x-pack/auditbeat/processors/sessionmd/processdb/entry_leader_test.go @@ -23,6 +23,7 @@ const ( lsPath = "/usr/bin/ls" bashPath = "/usr/bin/bash" grepPath = "/usr/bin/grep" + wPath = "/usr/bin/w" ) // Entry evaluation tests @@ -1242,3 +1243,349 @@ func TestKernelThreads(t *testing.T) { requireProcess(t, db, rcuGpPID, rcuGpPath) requireParent(t, db, rcuGpPID, kthreaddPID) } + +// PIDs can be reused when the maximum PID is reached and the number rolls over. +// The DB should always have the current process representation when PIDs are reused. +// In the same session a process exits and the PID is reused for a new process. +func TestPIDReuseSameSession(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshd0PID := uint32(100) + sshd1PID := uint32(101) + bashPID := uint32(1000) + commandPID := uint32(1001) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd0PID, + Sid: sshd0PID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd1PID, + Sid: sshd1PID, + Ppid: sshd0PID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshd1PID, + Pgid: bashPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: lsPath, + PIDs: types.PIDInfo{ + Tgid: commandPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: commandPID, + }, + }) + + db.InsertExit(types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: commandPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: commandPID, + }, + ExitCode: 0, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: grepPath, + PIDs: types.PIDInfo{ + Tgid: commandPID, + Sid: bashPID, + Ppid: bashPID, + Pgid: commandPID, + }, + }) + + // systemd + systemd, err := db.GetProcess(1) + require.Nil(t, err) + requireParentUnset(t, systemd) + requireEntryLeaderUnset(t, systemd) + + requireProcess(t, db, 1, systemdPath) + requireSessionLeader(t, db, 1, 1) + + // sshd0 + requireProcess(t, db, sshd0PID, sshdPath) + requireParent(t, db, sshd0PID, 1) + requireSessionLeader(t, db, sshd0PID, sshd0PID) + requireEntryLeader(t, db, sshd0PID, sshd0PID, Init) + + // sshd1 + requireProcess(t, db, sshd1PID, sshdPath) + requireParent(t, db, sshd1PID, sshd0PID) + requireSessionLeader(t, db, sshd1PID, sshd1PID) + requireEntryLeader(t, db, sshd1PID, sshd0PID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshd1PID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) + + // grep + requireProcess(t, db, commandPID, grepPath) + requireParent(t, db, commandPID, bashPID) + requireSessionLeader(t, db, commandPID, bashPID) + requireEntryLeader(t, db, commandPID, bashPID, Sshd) +} + +// A new session, where all PIDs have been previously used for other, now exited, processes +func TestPIDReuseNewSession(t *testing.T) { + reader := procfs.NewMockReader() + populateProcfsWithInit(reader) + db, err := NewDB(reader, *logger) + require.Nil(t, err) + db.ScrapeProcfs() + + sshd0PID := uint32(100) + sshd1PID := uint32(101) + bashPID := uint32(1000) + command0PID := uint32(1001) + command1PID := uint32(1002) + command2PID := uint32(1003) + + // 1st session + // sshd0 + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd0PID, + Sid: sshd0PID, + Ppid: 1, + }, + }) + + // sshd1 + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd1PID, + Sid: sshd1PID, + Ppid: sshd0PID, + }, + }) + + // bash + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshd1PID, + Pgid: bashPID, + }, + }) + + // command0 + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: lsPath, + PIDs: types.PIDInfo{ + Tgid: command0PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command0PID, + }, + }) + + db.InsertExit(types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: command0PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command0PID, + }, + ExitCode: 0, + }) + + // command 1 & 2 in pg + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: grepPath, + PIDs: types.PIDInfo{ + Tgid: command1PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command1PID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: grepPath, + PIDs: types.PIDInfo{ + Tgid: command2PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command1PID, + }, + }) + + db.InsertExit(types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: command2PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command1PID, + }, + ExitCode: 0, + }) + + db.InsertExit(types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: command1PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command1PID, + }, + ExitCode: 0, + }) + + // exit bash + db.InsertExit(types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshd1PID, + Pgid: bashPID, + }, + ExitCode: 0, + }) + + // exit sshd1 + db.InsertExit(types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: sshd1PID, + Sid: sshd1PID, + Ppid: sshd0PID, + }, + ExitCode: 0, + }) + + // exit sshd0 + db.InsertExit(types.ProcessExitEvent{ + PIDs: types.PIDInfo{ + Tgid: sshd0PID, + Sid: sshd0PID, + Ppid: 1, + }, + ExitCode: 0, + }) + + //2nd session + x1 := bashPID + x2 := sshd0PID + sshd0PID = command0PID + sshd1PID = command1PID + bashPID = command2PID + command0PID = x1 + command1PID = x2 + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd0PID, + Sid: sshd0PID, + Ppid: 1, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: sshdPath, + PIDs: types.PIDInfo{ + Tgid: sshd1PID, + Sid: sshd1PID, + Ppid: sshd0PID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: bashPath, + PIDs: types.PIDInfo{ + Tgid: bashPID, + Sid: bashPID, + Ppid: sshd1PID, + Pgid: bashPID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: wPath, + PIDs: types.PIDInfo{ + Tgid: command0PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command0PID, + }, + }) + + insertForkAndExec(t, db, types.ProcessExecEvent{ + Filename: grepPath, + PIDs: types.PIDInfo{ + Tgid: command1PID, + Sid: bashPID, + Ppid: bashPID, + Pgid: command0PID, + }, + }) + + // systemd + systemd, err := db.GetProcess(1) + require.Nil(t, err) + requireParentUnset(t, systemd) + requireEntryLeaderUnset(t, systemd) + + requireProcess(t, db, 1, systemdPath) + requireSessionLeader(t, db, 1, 1) + + // sshd0 + requireProcess(t, db, sshd0PID, sshdPath) + requireParent(t, db, sshd0PID, 1) + requireSessionLeader(t, db, sshd0PID, sshd0PID) + requireEntryLeader(t, db, sshd0PID, sshd0PID, Init) + + // sshd1 + requireProcess(t, db, sshd1PID, sshdPath) + requireParent(t, db, sshd1PID, sshd0PID) + requireSessionLeader(t, db, sshd1PID, sshd1PID) + requireEntryLeader(t, db, sshd1PID, sshd0PID, Init) + + // bash + requireProcess(t, db, bashPID, bashPath) + requireParent(t, db, bashPID, sshd1PID) + requireSessionLeader(t, db, bashPID, bashPID) + requireEntryLeader(t, db, bashPID, bashPID, Sshd) + + // w + requireProcess(t, db, command0PID, wPath) + requireParent(t, db, command0PID, bashPID) + requireSessionLeader(t, db, command0PID, bashPID) + requireEntryLeader(t, db, command0PID, bashPID, Sshd) + requireGroupLeader(t, db, command0PID, command0PID) + + // grep + requireProcess(t, db, command1PID, grepPath) + requireParent(t, db, command1PID, bashPID) + requireSessionLeader(t, db, command1PID, bashPID) + requireEntryLeader(t, db, command1PID, bashPID, Sshd) + requireGroupLeader(t, db, command1PID, command0PID) +} diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/reaper.go b/x-pack/auditbeat/processors/sessionmd/processdb/reaper.go new file mode 100644 index 00000000000..12751bead9c --- /dev/null +++ b/x-pack/auditbeat/processors/sessionmd/processdb/reaper.go @@ -0,0 +1,109 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +//go:build linux + +package processdb + +import ( + "container/heap" + "time" +) + +const ( + reaperInterval = 30 * time.Second // run the reaper process at this interval + removalTimeout = 10 * time.Second // remove processes that have been exited longer than this +) + +type removalCandidate struct { + pid uint32 + exitTime time.Time + startTime uint64 +} + +type rcHeap []removalCandidate + +func (h rcHeap) Len() int { + return len(h) +} + +func (h rcHeap) Less(i, j int) bool { + return h[i].exitTime.Sub(h[j].exitTime) < 0 +} + +func (h rcHeap) Swap(i, j int) { + h[i], h[j] = h[j], h[i] +} + +func (h *rcHeap) Push(x any) { + v, ok := x.(removalCandidate) + if ok { + *h = append(*h, v) + } +} + +func (h *rcHeap) Pop() any { + old := *h + n := len(old) + x := old[n-1] + *h = old[0 : n-1] + return x +} + +// The reaper will remove exited processes from the DB a short time after they have exited. +// Processes cannot be removed immediately when exiting, as the event enrichment will happen sometime +// afterwards, and will fail if the process is already removed from the DB. +// +// In Linux, exited processes cannot be session leader, process group leader or parent, so if a process has exited, +// it cannot have a relation with any other longer-lived processes. If this processor is ported to other OSs, this +// assumption will need to be revisited. +func (db *DB) startReaper() { + go func(db *DB) { + ticker := time.NewTicker(reaperInterval) + defer ticker.Stop() + + h := &db.removalCandidates + heap.Init(h) + for { + select { + case <-ticker.C: + db.mutex.Lock() + now := time.Now() + for { + if len(db.removalCandidates) == 0 { + break + } + v := heap.Pop(h) + c, ok := v.(removalCandidate) + if !ok { + db.logger.Debugf("unexpected item in removal queue: \"%v\"", v) + continue + } + if now.Sub(c.exitTime) < removalTimeout { + // this candidate hasn't reached its timeout, put it back on the heap + // everything else will have a later exit time, so end this run + heap.Push(h, c) + break + } + p, ok := db.processes[c.pid] + if !ok { + db.logger.Debugf("pid %v was candidate for removal, but was already removed", c.pid) + continue + } + if p.PIDs.StartTimeNS != c.startTime { + // this could happen if the PID has already rolled over and reached this PID again. + db.logger.Debugf("start times of removal candidate %v differs, not removing (PID had been reused?)", c.pid) + continue + } + delete(db.processes, c.pid) + delete(db.entryLeaders, c.pid) + delete(db.entryLeaderRelationships, c.pid) + } + db.mutex.Unlock() + case <-db.stopChan: + return + } + } + }(db) +} diff --git a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go index a0d11ad18e5..2f99dd72b1f 100644 --- a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go +++ b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go @@ -69,7 +69,7 @@ func (s prvdr) UpdateDB(ev *beat.Event) error { pe.Env = proc_info.Env pe.Filename = proc_info.Filename } else { - s.logger.Errorf("get process info from proc for pid %v: %w", pid, err) + s.logger.Warnf("couldn't get process info from proc for pid %v: %w", pid, err) // If process info couldn't be taken from procfs, populate with as much info as // possible from the event pe.PIDs.Tgid = uint32(pid) diff --git a/x-pack/auditbeat/processors/sessionmd/types/process.go b/x-pack/auditbeat/processors/sessionmd/types/process.go index 232dd348de8..daf989ef3cd 100644 --- a/x-pack/auditbeat/processors/sessionmd/types/process.go +++ b/x-pack/auditbeat/processors/sessionmd/types/process.go @@ -33,7 +33,7 @@ type Process struct { // The exit code of the process, if this is a termination event. // The field should be absent if there is no exit code for the event (e.g. process start). - ExitCode *int64 `json:"exit_code,omitempty"` + ExitCode int32 `json:"exit_code,omitempty"` // Whether the process is connected to an interactive shell. // Process interactivity is inferred from the processes file descriptors. If the character device for the controlling tty is the same as stdin and stderr for the process, the process is considered interactive. From b93a14d97f62a9ae1f8c3f25468cf3c2f7bdec76 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Fri, 26 Apr 2024 12:10:43 +0300 Subject: [PATCH 228/313] Fix permissions for packaging (#39218) This commit fixes the release-manager error > # > java.io.FileNotFoundException: /artifacts/build/distributions/... (Permission denied) by adjusting the permissions of parent directories. Additionally there are a few logging enhancements to improve debugging, as well as the introduction of a new optional `DRA_BRANCH` environment variable, to help running and debugging via PRs. Relates https://github.com/elastic/ingest-dev/issues/3095 --------- Signed-off-by: Alexandros Sapranidis Co-authored-by: Dimitrios Liappis --- .buildkite/scripts/dra.sh | 52 ++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/.buildkite/scripts/dra.sh b/.buildkite/scripts/dra.sh index 4957ef36199..b20d6c6a696 100755 --- a/.buildkite/scripts/dra.sh +++ b/.buildkite/scripts/dra.sh @@ -1,16 +1,29 @@ #!/usr/bin/env bash -## TODO: Set to empty string when Jenkins is disabled -if [[ "$DRY_RUN" == "false" ]]; then echo "--- Running in publish mode"; DRY_RUN=""; else echo "--- Running in dry-run mode"; DRY_RUN="--dry-run"; fi -set -euo pipefail -BRANCH="${BUILDKITE_BRANCH}" +# TODO: uncomment out below when Jenkins packaging has been stopped +# if [[ "$DRY_RUN" == "true" ]]; then +# echo "~~~ Running in dry-run mode -- will NOT publish artifacts" +# DRY_RUN="--dry-run" +# else +# echo "~~~ Running in publish mode" +# DRY_RUN="" +# fi -if [[ "${BUILDKITE_PULL_REQUEST:="false"}" != "false" ]]; then - BRANCH=main +# TODO: delete the conditional below (and replace it with the above, uncommented out, section) after Jenkins packaging has been stopped +if [[ "$DRY_RUN" == "false" ]]; then + echo "~~~ Running in publish mode" + DRY_RUN="" +else + echo "~~~ Running in dry-run mode -- will NOT publish artifacts" DRY_RUN="--dry-run" - echo "+++ Running in PR and setting branch main and --dry-run" fi +set -euo pipefail + +# DRA_BRANCH can be used for manually testing packaging with PRs +# e.g. define `DRA_BRANCH="main"` and `RUN_SNAPSHOT="true"` under Options/Environment Variables in the Buildkite UI after clicking new Build +BRANCH="${DRA_BRANCH:="${BUILDKITE_BRANCH:=""}"}" + BEAT_VERSION=$(make get-version) CI_DRA_ROLE_PATH="kv/ci-shared/release/dra-role" @@ -23,12 +36,16 @@ function release_manager_login { export VAULT_ADDR_SECRET VAULT_ROLE_ID_SECRET VAULT_SECRET } +set +x release_manager_login -echo "+++ Changing permissions for the BK API commands" -sudo chown -R :1000 build/distributions/ +# required by the release-manager docker image, otherwise we hit: +# > java.io.FileNotFoundException: /artifacts/build/distributions/agentbeat/agentbeat-8.15.0-SNAPSHOT-darwin-x86_64.tar.gz.sha512 (Permission denied) +chmod -R a+r build/* +chmod -R a+w build -echo "+++ :hammer_and_pick: Listing $BRANCH $DRA_WORKFLOW DRA artifacts..." +echo "+++ :clipboard: Listing DRA artifacts for version [$BEAT_VERSION], branch [$BRANCH] and workflow [$DRA_WORKFLOW]" +set +x docker run --rm \ --name release-manager \ -e VAULT_ADDR="${VAULT_ADDR_SECRET}" \ @@ -44,7 +61,9 @@ docker run --rm \ --version "${BEAT_VERSION}" \ --artifact-set "main" -echo "+++ :hammer_and_pick: Publishing $BRANCH $DRA_WORKFLOW DRA artifacts..." +echo "+++ :hammer_and_pick: Publishing DRA artifacts for version [$BEAT_VERSION], branch [$BRANCH], workflow [$DRA_WORKFLOW] and DRY_RUN: [$DRY_RUN]" + +set +x docker run --rm \ --name release-manager \ -e VAULT_ADDR="${VAULT_ADDR_SECRET}" \ @@ -59,4 +78,13 @@ docker run --rm \ --workflow "${DRA_WORKFLOW}" \ --version "${BEAT_VERSION}" \ --artifact-set "main" \ - ${DRY_RUN} + ${DRY_RUN} | tee rm-output.txt + +# extract the summary URL from a release manager output line like: +# Report summary-18.22.0.html can be found at https://artifacts-staging.elastic.co/beats/18.22.0-ABCDEFGH/summary-18.22.0.html + +SUMMARY_URL=$(grep -E '^Report summary-.* can be found at ' rm-output.txt | grep -oP 'https://\S+' | awk '{print $1}') +rm rm-output.txt + +# and make it easily clickable as a Builkite annotation +printf "**Summary link:** [${SUMMARY_URL}](${SUMMARY_URL})\n" | buildkite-agent annotate --style=success From 5687162622263456b3a17805689383313d7758c9 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 26 Apr 2024 11:24:15 +0200 Subject: [PATCH 229/313] Added DEV flag to snapshot. prepare-release-manager.sh staging param (#39217) Added DEV flag to snapshot builds. Specified the workflow for prepare-release-manager.sh Relates: https://github.com/elastic/ingest-dev/issues/3095 --- .buildkite/packaging.pipeline.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index 198db267425..a7fdabb2268 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -28,6 +28,7 @@ steps: - make beats-dashboards env: SNAPSHOT: true + DEV: true artifact_paths: - build/distributions/**/* @@ -42,6 +43,9 @@ steps: commands: - make build/distributions/dependencies.csv - make beats-dashboards + env: + SNAPSHOT: false + DEV: false artifact_paths: - build/distributions/**/* @@ -53,6 +57,7 @@ steps: env: PLATFORMS: "${PLATFORMS}" SNAPSHOT: true + DEV: true command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" agents: provider: gcp @@ -82,6 +87,7 @@ steps: PLATFORMS: "${PLATFORMS_ARM}" PACKAGES: "docker" SNAPSHOT: true + DEV: true command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" agents: provider: "aws" @@ -107,6 +113,7 @@ steps: env: PLATFORMS: "${PLATFORMS}" SNAPSHOT: true + DEV: true command: ".buildkite/scripts/packaging/package-dra.sh x-pack/agentbeat" agents: provider: gcp @@ -125,6 +132,7 @@ steps: env: PLATFORMS: "${PLATFORMS}" SNAPSHOT: false + DEV: false command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" agents: provider: gcp @@ -154,6 +162,7 @@ steps: PLATFORMS: "${PLATFORMS_ARM}" PACKAGES: "docker" SNAPSHOT: false + DEV: false command: ".buildkite/scripts/packaging/package-dra.sh {{matrix}}" agents: provider: "aws" @@ -179,6 +188,7 @@ steps: env: PLATFORMS: "${PLATFORMS}" SNAPSHOT: false + DEV: false command: ".buildkite/scripts/packaging/package-dra.sh x-pack/agentbeat" agents: provider: gcp @@ -201,7 +211,7 @@ steps: - dashboards-snapshot command: | buildkite-agent artifact download "build/**/*" . - .buildkite/scripts/packaging/prepare-release-manager.sh + .buildkite/scripts/packaging/prepare-release-manager.sh snapshot .buildkite/scripts/dra.sh agents: provider: gcp @@ -219,7 +229,7 @@ steps: - dashboards-staging command: | buildkite-agent artifact download "build/**" . - .buildkite/scripts/packaging/prepare-release-manager.sh + .buildkite/scripts/packaging/prepare-release-manager.sh staging .buildkite/scripts/dra.sh agents: provider: gcp From 20453c319b0c100dd4cc2a04277521ac20d2fd7a Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 26 Apr 2024 12:43:26 +0300 Subject: [PATCH 230/313] Dynamic Pipeline scheduler script Buildkite (#39206) As a follow up to PR#39179 we need an additional Buildkite pipeline that can dynamically evaluate the release branches and trigger separate runs per branch on a schedule. This commit adds a Python script that generates the dynamic steps as dictated by an env var `PIPELINES_TO_TRIGGER` Relates: https://github.com/elastic/ingest-dev/issues/3235 --- .buildkite/pipeline-scheduler.py | 110 +++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100755 .buildkite/pipeline-scheduler.py diff --git a/.buildkite/pipeline-scheduler.py b/.buildkite/pipeline-scheduler.py new file mode 100755 index 00000000000..447ba5a7460 --- /dev/null +++ b/.buildkite/pipeline-scheduler.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 + +''' +This script is used by schedule-type pipelines +to automate triggering other pipelines (e.g. Iron Bank validation) +against release branches + +Excepts a (comma separated) env var PIPELINES_TO_TRIGGER. +An optional EXCLUDE_BRANCHES (comma separated) env var can also be supplied to skip specific branches (e.g. EXCLUDE_BRANCHES="main") + +For background info see: +https://elasticco.atlassian.net/browse/ENGPRD-318 / +https://github.com/elastic/ingest-dev/issues/2664 +''' + +import json +import os +import sys +import time +import typing +import urllib.request +from ruamel.yaml import YAML + + +ACTIVE_BRANCHES_URL = "https://storage.googleapis.com/artifacts-api/snapshots/branches.json" + + +class InputError(Exception): + """ Exception raised for input errors """ + + +class UrlOpenError(Exception): + """ Exception raised when hitting errors retrieving content from a URL """ + + +def fail_with_error(msg): + print(f"""^^^ +++ +Error: [{msg}]. +Exiting now. + """) + exit(1) + + +def parse_csv_env_var(env_var_name: str, is_valid=False) -> typing.List: + if is_valid and env_var_name not in os.environ.keys(): + fail_with_error(msg=f'Required environment variable [{env_var_name}] is missing.') + + env_var = os.getenv(env_var_name, "") + + if is_valid and env_var.strip() == "": + fail_with_error(msg=f'Required environment variable [{env_var_name}] is empty.') + return env_var.split(",") + + +def get_json_with_retries(uri, retries=3, delay=5) -> typing.Dict: + for _ in range(retries): + try: + with urllib.request.urlopen(uri) as response: + data = response.read().decode('utf-8') + return json.loads(data) + except UrlOpenError as e: + print(f"Error: [{e}] when downloading from [{uri}]") + print(f"Retrying in {delay} seconds ...") + time.sleep(delay) + except json.JSONDecodeError as e: + fail_with_error(f"Error [{e}] when deserialing JSON from [{uri}]") + fail_with_error(f"Failed to retrieve JSON content from [{uri}] after [{retries}] retries") + return {} # for IDE typing checks + + +def get_release_branches() -> typing.List[str]: + resp = get_json_with_retries(uri=ACTIVE_BRANCHES_URL) + try: + release_branches = [branch for branch in resp["branches"]] + except KeyError: + fail_with_error(f'''Didn't find the excepted structure ["branches"] in the response [{resp}] from [{ACTIVE_BRANCHES_URL}]''') + + return release_branches + + +def generate_pipeline(pipelines_to_trigger: typing.List[str], branches: typing.List[str]): + generated_pipeline = {"steps": []} + + for pipeline in pipelines_to_trigger: + for branch in branches: + trigger = { + "trigger": pipeline, + "label": f":testexecute: Triggering {pipeline} / {branch}", + "build": { + "branch": branch, + "message": f":testexecute: Scheduled build for {branch}" + } + } + generated_pipeline["steps"].append(trigger) + + return generated_pipeline + + +if __name__ == '__main__': + pipelines_to_trigger = parse_csv_env_var(env_var_name="PIPELINES_TO_TRIGGER", is_valid=True) + release_branches = get_release_branches() + exclude_branches = parse_csv_env_var(env_var_name="EXCLUDE_BRANCHES") + + target_branches = sorted(list(set(release_branches).difference(exclude_branches))) + if len(target_branches) == 0 or target_branches[0].isspace(): + fail_with_error(f"Calculated target branches were empty! You passed EXCLUDE_BRANCHES={exclude_branches} and release branches are {release_branches} the difference of which results in {target_branches}.") + + pipeline = generate_pipeline(pipelines_to_trigger, branches=target_branches) + print('# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json') + YAML().dump(pipeline, sys.stdout) From f551cf89a679d3a48b6aca1e0b6c38fcf8615a96 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Fri, 26 Apr 2024 07:37:24 -0400 Subject: [PATCH 231/313] chore: Update snapshot.yml (#39215) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index a85de286fc9..90289ec894f 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-f50da2d9-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-eb13af64-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-f50da2d9-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-eb13af64-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-f50da2d9-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-eb13af64-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 074f2219dab876531f88bc9ffe1b415d96e32d64 Mon Sep 17 00:00:00 2001 From: Panos Koutsovasilis Date: Fri, 26 Apr 2024 16:01:10 +0300 Subject: [PATCH 232/313] [Auditbeat/FIM/fsnotify]: remove time window where a child file operation of a directory can be lost (#39133) * fix(auditbeat/fim/fsnotify): remove time window where a child file operation in of a directory can be lost * fix(auditbeat/fim/fsnotify): remove redundant error wrapping --- CHANGELOG.next.asciidoc | 3 ++ .../file_integrity/monitor/monitor_test.go | 7 ++- .../file_integrity/monitor/recursive.go | 54 ++++++++++++++----- 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 445e6294d4c..25bdb403321 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -96,6 +96,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Set field types to correctly match ECS in sessionmd processor {issue}38955[38955] {pull}38994[38994] - Keep process info on exited processes, to avoid failing to enrich events in sessionmd processor {pull}39173[39173] +- Prevent scenario of losing children-related file events in a directory for recursive fsnotify backend of auditbeat file integrity module {pull}39133[39133] + + *Filebeat* - [Gcs Input] - Added missing locks for safe concurrency {pull}34914[34914] diff --git a/auditbeat/module/file_integrity/monitor/monitor_test.go b/auditbeat/module/file_integrity/monitor/monitor_test.go index 5828f348d23..2f66d6469b2 100644 --- a/auditbeat/module/file_integrity/monitor/monitor_test.go +++ b/auditbeat/module/file_integrity/monitor/monitor_test.go @@ -144,6 +144,11 @@ func TestRecursiveSubdirPermissions(t *testing.T) { t.Skip("Skipping permissions test on Windows") } + if os.Getuid() == 0 { + t.Skip("skipping as root can access every file and thus this unittest will fail") + return + } + // Create dir to be watched dir, err := os.MkdirTemp("", "monitor") @@ -202,7 +207,7 @@ func TestRecursiveSubdirPermissions(t *testing.T) { for { // No event is received ev, err := readTimeout(t, watcher) - if err == errReadTimeout { + if errors.Is(err, errReadTimeout) { break } assertNoError(t, err) diff --git a/auditbeat/module/file_integrity/monitor/recursive.go b/auditbeat/module/file_integrity/monitor/recursive.go index 7a0768d6fcb..31f2b538370 100644 --- a/auditbeat/module/file_integrity/monitor/recursive.go +++ b/auditbeat/module/file_integrity/monitor/recursive.go @@ -84,37 +84,63 @@ func (watcher *recursiveWatcher) ErrorChannel() <-chan error { return watcher.inner.Errors } +func (watcher *recursiveWatcher) watchFile(path string, info os.FileInfo) error { + var err error + if info == nil { + info, err = os.Lstat(path) + if err != nil { + return err + } + } + + if info.IsDir() { + if err = watcher.tree.AddDir(path); err != nil { + return err + } + + if err = watcher.inner.Add(path); err != nil { + return err + } + + return nil + } + + return watcher.tree.AddFile(path) +} + func (watcher *recursiveWatcher) addRecursive(path string) error { if watcher.isExcludedPath(path) { return nil } + if err := watcher.watchFile(path, nil); err != nil { + return fmt.Errorf("failed adding watcher to '%s': %w", path, err) + } + var errs multierror.Errors - err := filepath.Walk(path, func(path string, info os.FileInfo, fnErr error) error { - if watcher.isExcludedPath(path) { + err := filepath.Walk(path, func(walkPath string, info os.FileInfo, fnErr error) error { + if walkPath == path { + return nil + } + + if watcher.isExcludedPath(walkPath) { return nil } if fnErr != nil { - errs = append(errs, fmt.Errorf("error walking path '%s': %w", path, fnErr)) + errs = append(errs, fmt.Errorf("error walking path '%s': %w", walkPath, fnErr)) // If FileInfo is not nil, the directory entry can be processed // even if there was some error if info == nil { return nil } } - var err error - if info.IsDir() { - if err = watcher.tree.AddDir(path); err == nil { - if err = watcher.inner.Add(path); err != nil { - errs = append(errs, fmt.Errorf("failed adding watcher to '%s': %w", path, err)) - return nil - } - } - } else { - err = watcher.tree.AddFile(path) + + if err := watcher.watchFile(walkPath, info); err != nil { + errs = append(errs, fmt.Errorf("failed adding watcher to '%s': %w", walkPath, err)) } - return err + + return nil }) watcher.log.Debugw("Added recursive watch", "path", path) From 0c7845445864d9df34897f5856bffb0e0079b3c1 Mon Sep 17 00:00:00 2001 From: Tetiana Kravchenko Date: Fri, 26 Apr 2024 16:59:04 +0200 Subject: [PATCH 233/313] [kubernetes] Add last_terminated_reason_timestamp metric (#39200) * add last_terminated_reason_timestamp metric Signed-off-by: Tetiana Kravchenko * Update CHANGELOG.next.asciidoc Co-authored-by: Andrew Gizas * revert the metric name to status.last_terminated_reason_timestamp Signed-off-by: Tetiana Kravchenko * rename field to last_terminated_timestamp Signed-off-by: Tetiana Kravchenko * Update CHANGELOG.next.asciidoc --------- Signed-off-by: Tetiana Kravchenko Co-authored-by: Andrew Gizas --- CHANGELOG.next.asciidoc | 1 + metricbeat/docs/fields.asciidoc | 10 ++ .../_meta/test/KSM/ksm.v2.12.0.plain | 3 + metricbeat/module/kubernetes/fields.go | 2 +- .../state_container/_meta/fields.yml | 4 + .../_meta/test/ksm.v2.12.0.plain.expected | 52 ++++++----- .../testdata/ksm.v2.12.0.plain-expected.json | 92 ++++++++++--------- .../state_container/state_container.go | 17 ++-- 8 files changed, 102 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 25bdb403321..c10e5eb08fa 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -281,6 +281,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add new memory/cgroup metrics to Kibana module {pull}37232[37232] - Add SSL support to mysql module {pull}37997[37997] - Add SSL support for aerospike module {pull}38126[38126] +- Add last_terminated_timestamp metric in kubernetes module {pull}39200[39200] {issue}3802[3802] *Metricbeat* diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index f5eee747484..ca8f1185445 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -45985,6 +45985,16 @@ type: keyword -- +*`kubernetes.container.status.last_terminated_timestamp`*:: ++ +-- +Last terminated time (epoch) of the container + + +type: double + +-- + *`kubernetes.container.cpu.limit.cores`*:: + diff --git a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain index e1900b34128..35cf6a5ab8c 100644 --- a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain +++ b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain @@ -552,10 +552,13 @@ kube_pod_container_state_started{namespace="kube-system",pod="kube-proxy-45qj9", kube_pod_container_state_started{namespace="kube-system",pod="kube-state-metrics-5bcd4898-bntgt",uid="38cad684-d5e5-4187-8a98-2999c0f5b252",container="kube-state-metrics"} 1.713873336e+09 # HELP kube_pod_container_status_last_terminated_reason Describes the last reason the container was in terminated state. # TYPE kube_pod_container_status_last_terminated_reason gauge +kube_pod_container_status_last_terminated_reason{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler",reason="Error"} 1 # HELP kube_pod_container_status_last_terminated_exitcode Describes the exit code for the last container in terminated state. # TYPE kube_pod_container_status_last_terminated_exitcode gauge +kube_pod_container_status_last_terminated_exitcode{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1 # HELP kube_pod_container_status_last_terminated_timestamp Last terminated time for a pod container in unix timestamp. # TYPE kube_pod_container_status_last_terminated_timestamp gauge +kube_pod_container_status_last_terminated_timestamp{namespace="kube-system",pod="kube-scheduler-kind-control-plane",uid="82154115-17ff-4943-8088-879d4d045b52",container="kube-scheduler"} 1.71393586e+09 # HELP kube_pod_container_status_ready [STABLE] Describes whether the containers readiness check succeeded. # TYPE kube_pod_container_status_ready gauge kube_pod_container_status_ready{namespace="default",pod="hello-28564556-gkqsk",uid="888e4e15-5ffc-40cd-826d-af822fee80dd",container="hello"} 0 diff --git a/metricbeat/module/kubernetes/fields.go b/metricbeat/module/kubernetes/fields.go index b09b86e765b..1c89d8a6235 100644 --- a/metricbeat/module/kubernetes/fields.go +++ b/metricbeat/module/kubernetes/fields.go @@ -32,5 +32,5 @@ func init() { // AssetKubernetes returns asset data. // This is the base64 encoded zlib format compressed contents of module/kubernetes. func AssetKubernetes() string { - return "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" + return "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" } diff --git a/metricbeat/module/kubernetes/state_container/_meta/fields.yml b/metricbeat/module/kubernetes/state_container/_meta/fields.yml index 4b8d6ed91e9..79cb2bbf7a6 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/fields.yml +++ b/metricbeat/module/kubernetes/state_container/_meta/fields.yml @@ -32,6 +32,10 @@ type: keyword description: > The last reason the container was in terminated state (Completed, ContainerCannotRun, Error or OOMKilled). + - name: last_terminated_timestamp + type: double + description: > + Last terminated time (epoch) of the container - name: cpu type: group fields: diff --git a/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.12.0.plain.expected b/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.12.0.plain.expected index e81155ffc64..a6ea7bd9173 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.12.0.plain.expected +++ b/metricbeat/module/kubernetes/state_container/_meta/test/ksm.v2.12.0.plain.expected @@ -482,9 +482,9 @@ { "RootFields": { "container": { - "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", "image": { - "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" + "name": "registry.k8s.io/coredns/coredns:v1.11.1" }, "runtime": "containerd" } @@ -495,7 +495,7 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-scheduler-kind-control-plane" + "name": "coredns-76f75df574-v8skx" } }, "MetricSetFields": { @@ -504,8 +504,16 @@ "cores": 0.1 } }, - "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", - "name": "kube-scheduler", + "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", + "memory": { + "limit": { + "bytes": 178257920 + }, + "request": { + "bytes": 73400320 + } + }, + "name": "coredns", "status": { "phase": "running", "ready": true, @@ -526,9 +534,9 @@ { "RootFields": { "container": { - "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", "image": { - "name": "registry.k8s.io/coredns/coredns:v1.11.1" + "name": "registry.k8s.io/kube-apiserver-amd64:v1.29.1" }, "runtime": "containerd" } @@ -539,25 +547,17 @@ "name": "kind-control-plane" }, "pod": { - "name": "coredns-76f75df574-v8skx" + "name": "kube-apiserver-kind-control-plane" } }, "MetricSetFields": { "cpu": { "request": { - "cores": 0.1 - } - }, - "id": "1be2795038ca3a3a291a6aca5d7ecdfaf0b326453c74e471bab3064822f0bdfb", - "memory": { - "limit": { - "bytes": 178257920 - }, - "request": { - "bytes": 73400320 + "cores": 0.25 } }, - "name": "coredns", + "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", + "name": "kube-apiserver", "status": { "phase": "running", "ready": true, @@ -578,9 +578,9 @@ { "RootFields": { "container": { - "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", "image": { - "name": "registry.k8s.io/kube-apiserver-amd64:v1.29.1" + "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" }, "runtime": "containerd" } @@ -591,18 +591,20 @@ "name": "kind-control-plane" }, "pod": { - "name": "kube-apiserver-kind-control-plane" + "name": "kube-scheduler-kind-control-plane" } }, "MetricSetFields": { "cpu": { "request": { - "cores": 0.25 + "cores": 0.1 } }, - "id": "9a40af12036875eb414555deeca2a09e73f37ccb7c8bbf787bfe9616cbbcbd98", - "name": "kube-apiserver", + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "name": "kube-scheduler", "status": { + "last_terminated_reason": "Error", + "last_terminated_timestamp": 1713935860, "phase": "running", "ready": true, "restarts": 0 diff --git a/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.12.0.plain-expected.json b/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.12.0.plain-expected.json index bd430bb5af6..fa264e5a201 100644 --- a/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.12.0.plain-expected.json +++ b/metricbeat/module/kubernetes/state_container/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -269,6 +269,53 @@ "type": "kubernetes" } }, + { + "container": { + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "image": { + "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" + }, + "runtime": "containerd" + }, + "event": { + "dataset": "kubernetes.container", + "duration": 115000, + "module": "kubernetes" + }, + "kubernetes": { + "container": { + "cpu": { + "request": { + "cores": 0.1 + } + }, + "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", + "name": "kube-scheduler", + "status": { + "last_terminated_reason": "Error", + "last_terminated_timestamp": 1713935860, + "phase": "running", + "ready": true, + "restarts": 0 + } + }, + "namespace": "kube-system", + "node": { + "name": "kind-control-plane" + }, + "pod": { + "name": "kube-scheduler-kind-control-plane" + } + }, + "metricset": { + "name": "state_container", + "period": 10000 + }, + "service": { + "address": "127.0.0.1:55555", + "type": "kubernetes" + } + }, { "container": { "id": "be5708afe249a81a67f812bfda962b8c60022ec47250f9e84a2bcfd0d74e94bc", @@ -581,51 +628,6 @@ "type": "kubernetes" } }, - { - "container": { - "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", - "image": { - "name": "registry.k8s.io/kube-scheduler-amd64:v1.29.1" - }, - "runtime": "containerd" - }, - "event": { - "dataset": "kubernetes.container", - "duration": 115000, - "module": "kubernetes" - }, - "kubernetes": { - "container": { - "cpu": { - "request": { - "cores": 0.1 - } - }, - "id": "cd52120cda244a98ed01e9259381cbcd439bc087115d93c7573bada504dbb620", - "name": "kube-scheduler", - "status": { - "phase": "running", - "ready": true, - "restarts": 0 - } - }, - "namespace": "kube-system", - "node": { - "name": "kind-control-plane" - }, - "pod": { - "name": "kube-scheduler-kind-control-plane" - } - }, - "metricset": { - "name": "state_container", - "period": 10000 - }, - "service": { - "address": "127.0.0.1:55555", - "type": "kubernetes" - } - }, { "container": { "id": "54c671509ea7b99312164a5a49297e48eb0b724a8cb2459d2d3917a25ce0c585", diff --git a/metricbeat/module/kubernetes/state_container/state_container.go b/metricbeat/module/kubernetes/state_container/state_container.go index 0c46e60f51a..d00515fe081 100644 --- a/metricbeat/module/kubernetes/state_container/state_container.go +++ b/metricbeat/module/kubernetes/state_container/state_container.go @@ -59,14 +59,15 @@ var ( }, )), - "kube_pod_container_status_ready": p.BooleanMetric("status.ready"), - "kube_pod_container_status_restarts_total": p.Metric("status.restarts"), - "kube_pod_container_status_running": p.KeywordMetric("status.phase", "running"), - "kube_pod_container_status_terminated": p.KeywordMetric("status.phase", "terminated"), - "kube_pod_container_status_waiting": p.KeywordMetric("status.phase", "waiting"), - "kube_pod_container_status_terminated_reason": p.LabelMetric("status.reason", "reason"), - "kube_pod_container_status_waiting_reason": p.LabelMetric("status.reason", "reason"), - "kube_pod_container_status_last_terminated_reason": p.LabelMetric("status.last_terminated_reason", "reason"), + "kube_pod_container_status_ready": p.BooleanMetric("status.ready"), + "kube_pod_container_status_restarts_total": p.Metric("status.restarts"), + "kube_pod_container_status_running": p.KeywordMetric("status.phase", "running"), + "kube_pod_container_status_terminated": p.KeywordMetric("status.phase", "terminated"), + "kube_pod_container_status_waiting": p.KeywordMetric("status.phase", "waiting"), + "kube_pod_container_status_terminated_reason": p.LabelMetric("status.reason", "reason"), + "kube_pod_container_status_waiting_reason": p.LabelMetric("status.reason", "reason"), + "kube_pod_container_status_last_terminated_reason": p.LabelMetric("status.last_terminated_reason", "reason"), + "kube_pod_container_status_last_terminated_timestamp": p.Metric("status.last_terminated_timestamp"), }, Labels: map[string]p.LabelMap{ From 4d126460af85d548a27ef83e68784da06889c285 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 26 Apr 2024 19:21:35 +0300 Subject: [PATCH 234/313] Enable DRA for main via Buildkite (#39234) This commit disables automated DRA builds for the main branch via Jenkins, and enables the same functionality via Buildkite. Relates: https://github.com/elastic/ingest-dev/issues/3095 --------- Co-authored-by: Victor Martinez --- .buildkite/scripts/dra.sh | 18 ++++-------------- .ci/jobs/packaging.yml | 5 +---- .pre-commit-config.yaml | 1 - catalog-info.yaml | 10 ++++++++-- 4 files changed, 13 insertions(+), 21 deletions(-) diff --git a/.buildkite/scripts/dra.sh b/.buildkite/scripts/dra.sh index b20d6c6a696..ec9d523bf3c 100755 --- a/.buildkite/scripts/dra.sh +++ b/.buildkite/scripts/dra.sh @@ -1,21 +1,11 @@ #!/usr/bin/env bash -# TODO: uncomment out below when Jenkins packaging has been stopped -# if [[ "$DRY_RUN" == "true" ]]; then -# echo "~~~ Running in dry-run mode -- will NOT publish artifacts" -# DRY_RUN="--dry-run" -# else -# echo "~~~ Running in publish mode" -# DRY_RUN="" -# fi - -# TODO: delete the conditional below (and replace it with the above, uncommented out, section) after Jenkins packaging has been stopped -if [[ "$DRY_RUN" == "false" ]]; then - echo "~~~ Running in publish mode" - DRY_RUN="" -else +if [[ "$DRY_RUN" == "true" ]]; then echo "~~~ Running in dry-run mode -- will NOT publish artifacts" DRY_RUN="--dry-run" +else + echo "~~~ Running in publish mode" + DRY_RUN="" fi set -euo pipefail diff --git a/.ci/jobs/packaging.yml b/.ci/jobs/packaging.yml index a9d3f4bf00c..6d4b136a557 100644 --- a/.ci/jobs/packaging.yml +++ b/.ci/jobs/packaging.yml @@ -14,7 +14,7 @@ discover-pr-forks-trust: 'permission' discover-pr-origin: 'merge-current' discover-tags: true - head-filter-regex: '(main|7\.1[6789]|8\.\d+|PR-.*|v\d+\.\d+\.\d+)' + head-filter-regex: '(7\.1[6789]|8\.\d+|PR-.*|v\d+\.\d+\.\d+)' disable-pr-notifications: true notification-context: 'beats-packaging' repo: 'beats' @@ -28,9 +28,6 @@ ignore-tags-older-than: -1 ignore-tags-newer-than: 30 - named-branches: - - exact-name: - name: 'main' - case-sensitive: true - regex-name: regex: '7\.1[6789]' case-sensitive: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 200d0b9277a..2c9643e3f95 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,4 +9,3 @@ repos: hooks: - id: check-jenkins-pipelines files: ^(.ci/(.*\.groovy|Jenkinsfile)|Jenkinsfile)$ - - id: check-jjbb diff --git a/catalog-info.yaml b/catalog-info.yaml index ea7d48d9a9f..116e5024663 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1040,11 +1040,17 @@ spec: spec: repository: elastic/beats pipeline_file: ".buildkite/packaging.pipeline.yml" - branch_configuration: "main 8.* 7.17" + branch_configuration: "main" + # TODO enable after packaging backports for release branches + # branch_configuration: "main 8.* 7.17" cancel_intermediate_builds: false skip_intermediate_builds: false provider_settings: - trigger_mode: none + trigger_mode: code + env: + ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' + SLACK_NOTIFICATIONS_CHANNEL: '#ingest-notifications' + SLACK_NOTIFICATIONS_ON_SUCCESS: 'false' teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ From 81f63103678fa37068355b52deaf7596417dcd56 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:26:51 -0400 Subject: [PATCH 235/313] chore: Update snapshot.yml (#39238) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 90289ec894f..a031c2184e5 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-eb13af64-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-053650c4-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-eb13af64-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-053650c4-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-eb13af64-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-053650c4-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From d2122d4e3f0b10ef69ee86b457c6f58e1945171b Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Mon, 29 Apr 2024 11:07:59 +0300 Subject: [PATCH 236/313] Add pipeline-scheduler pipeline in catalog.info (#39254) As a follow up to PR#39206 and PR#39171, this commit adds a new generic scheduling pipeline in catalog-info that serves as a central point for scheduling any other pipeline. Unfortunately, it's not possible to specify a custom agent (k8s image) yet at the catalog-info level[^1], therefore we still need a small static pipeline -- empty for now -- that uploads the needed steps. [^1]: https://github.com/elastic/ci/blob/71e83d340e3b93ab43fcf16a7a70ac33bdeec6e9/terrazzo/terrazzo/constructs/buildkite/pipelines.py#L787-L842 --- .buildkite/pipeline-scheduler.yml | 0 catalog-info.yaml | 47 +++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 .buildkite/pipeline-scheduler.yml diff --git a/.buildkite/pipeline-scheduler.yml b/.buildkite/pipeline-scheduler.yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/catalog-info.yaml b/catalog-info.yaml index 116e5024663..ae37200762b 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1113,3 +1113,50 @@ spec: access_level: BUILD_AND_READ everyone: access_level: READ_ONLY + +--- +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: beats-pipeline-scheduler + description: 'Scheduled runs of various Beats pipelines per release branch' + links: + - title: 'Scheduled runs of Beats pipelines per release branch' + url: https://buildkite.com/elastic/logstash-pipeline-scheduler +spec: + type: buildkite-pipeline + owner: group:ingest-fp + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: beats-pipeline-scheduler + description: ':alarm_clock: Scheduled runs of various Beats pipelines per release branch' + spec: + repository: elastic/beats + pipeline_file: ".buildkite/pipeline-scheduler.yml" + maximum_timeout_in_minutes: 240 + schedules: + Daily Snapshot DRA: + branch: main + cronline: 30 02 * * * + message: Daily trigger of Iron Bank validation Pipeline per branch + env: + PIPELINES_TO_TRIGGER: 'beats-ironbank-validation' + skip_intermediate_builds: true + provider_settings: + trigger_mode: none + env: + # TODO enable slack notifications when it's tested + ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'false' + SLACK_NOTIFICATIONS_CHANNEL: '#ingest-notifications' + SLACK_NOTIFICATIONS_ON_SUCCESS: 'false' + teams: + ingest-fp: + access_level: MANAGE_BUILD_AND_READ + release-eng: + access_level: BUILD_AND_READ + everyone: + access_level: READ_ONLY From a4b21dcd8435b80a97063e0e69a6d98aaba17d1a Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Mon, 29 Apr 2024 14:29:41 +0300 Subject: [PATCH 237/313] Add IronBank validation to cron schedule (#39255) This commit is a follow up to #39254 and adds a schedule for the IronBank validation pipeline to the centralized scheduling pipeline. Relates: https://github.com/elastic/ingest-dev/issues/3235 --- .buildkite/pipeline-scheduler.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.buildkite/pipeline-scheduler.yml b/.buildkite/pipeline-scheduler.yml index e69de29bb2d..3f9b628bc63 100644 --- a/.buildkite/pipeline-scheduler.yml +++ b/.buildkite/pipeline-scheduler.yml @@ -0,0 +1,17 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json + +# this intermediate pipeline is required because we can't specify a custom agent (k8s image) yet +# in catalog-info: https://github.com/elastic/ci/blob/71e83d340e3b93ab43fcf16a7a70ac33bdeec6e9/terrazzo/terrazzo/constructs/buildkite/pipelines.py#L787-L842 + +steps: + - label: ":pipeline: Generate trigger steps for $PIPELINES_TO_TRIGGER" + command: | + set -eo pipefail + .buildkite/pipeline-scheduler.py >steps.yml + echo "~~~ Printing pipeline steps" + yq . steps.yml + echo "~~~ Uploading steps" + buildkite-agent pipeline upload steps.yml + agents: + image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-beats-ci-with-hooks:0.1" + useCustomGlobalHooks: true From e588628b24946595a9c6123cf57b5597b534c72b Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Mon, 29 Apr 2024 08:40:02 -0400 Subject: [PATCH 238/313] Fix concurrency bugs that could cause data loss in the `aws-s3` input (#39131) This is a cleanup of concurrency and error handling in the `aws-s3` input that could cause several known bugs: - Memory leaks ([1](https://github.com/elastic/integrations/issues/9463), [2](https://github.com/elastic/beats/issues/39052)). This issue was caused because the input could run several scans of its s3 bucket simultaneously, which led to the cleanup routine `s3Poller.Purge` being called many times concurrently. Inefficiencies in this function caused it to accumulate over time, creating many copies of the state data which could overload process memory. Fixed by: * Changing the `s3Poller` run loop to only run one scan at a time, and wait for it to complete before starting the next one. * Having each object persist its own state after completing, instead of waiting until the end of a scan and writing an entire bucket worth of metadata at once. - This also allowed the removal of other metadata: there is no longer any reason to track the detailed acknowledgment state of each "listing" (page of ~1K events during bucket enumeration), so the `states` helper object is now much simpler. - Skipped data due to buggy last-modified calculations ([3](https://github.com/elastic/beats/issues/39065)). The most recent scanned timestamp was calculated incorrectly, causing the input to skip a growing number of events as ingestion progressed. * Fixed by removing the bucket-wide last modified check entirely. This feature was already risky, since objects with earlier creation timestamps can appear after ones with later timestamps, so there is always the possibility to miss objects. Since the value was calculated incorrectly and was discarded between runs, we can remove it without breaking compatibility and reimplement it more safely in the future if needed. - Skipped data because rate limiting is treated as permanent failure ([4](https://github.com/elastic/beats/issues/39114)). The input treats all error types the same, which causes many objects to be skipped for ephemeral errors. * Fixed by creating an error, `errS3DownloadFailure`, that is returned when processing failure is caused by a download error. In this case, the S3 workers will not persist the failure to the `states` table, so the object will be retried on the next bucket scan. When this happens the worker also sleeps (using an exponential backoff) before trying the next object. * Exponential backoff was also added to the bucket scanning loop for page listing errors, so the bucket scan is not restarted needlessly. --- x-pack/filebeat/input/awss3/input.go | 40 +- .../input/awss3/input_benchmark_test.go | 14 +- x-pack/filebeat/input/awss3/s3.go | 321 ++++----------- x-pack/filebeat/input/awss3/s3_objects.go | 15 +- .../filebeat/input/awss3/s3_objects_test.go | 9 +- x-pack/filebeat/input/awss3/s3_test.go | 20 +- x-pack/filebeat/input/awss3/state.go | 66 +--- x-pack/filebeat/input/awss3/state_test.go | 2 +- x-pack/filebeat/input/awss3/states.go | 368 +++--------------- x-pack/filebeat/input/awss3/states_test.go | 306 +++------------ 10 files changed, 246 insertions(+), 915 deletions(-) diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index 733de949f29..bb4a5c15bda 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -13,6 +13,7 @@ import ( "time" awssdk "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/retry" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/sqs" "github.com/aws/smithy-go" @@ -21,7 +22,6 @@ import ( v2 "github.com/elastic/beats/v7/filebeat/input/v2" "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/feature" - "github.com/elastic/beats/v7/libbeat/statestore" awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/go-concert/unison" @@ -99,21 +99,6 @@ func (in *s3Input) Test(ctx v2.TestContext) error { } func (in *s3Input) Run(inputContext v2.Context, pipeline beat.Pipeline) error { - var err error - - persistentStore, err := in.store.Access() - if err != nil { - return fmt.Errorf("can not access persistent store: %w", err) - } - - defer persistentStore.Close() - - states := newStates(inputContext) - err = states.readStatesFrom(persistentStore) - if err != nil { - return fmt.Errorf("can not start persistent store: %w", err) - } - ctx := v2.GoContextFromCanceler(inputContext.Cancelation) if in.config.QueueURL != "" { @@ -158,8 +143,20 @@ func (in *s3Input) Run(inputContext v2.Context, pipeline beat.Pipeline) error { } defer client.Close() + // Connect to the registry and create our states lookup + persistentStore, err := in.store.Access() + if err != nil { + return fmt.Errorf("can not access persistent store: %w", err) + } + defer persistentStore.Close() + + states, err := newStates(inputContext, persistentStore) + if err != nil { + return fmt.Errorf("can not start persistent store: %w", err) + } + // Create S3 receiver and S3 notification processor. - poller, err := in.createS3Lister(inputContext, ctx, client, persistentStore, states) + poller, err := in.createS3Lister(inputContext, ctx, client, states) if err != nil { return fmt.Errorf("failed to initialize s3 poller: %w", err) } @@ -230,7 +227,7 @@ func (n nonAWSBucketResolver) ResolveEndpoint(region string, options s3.Endpoint return awssdk.Endpoint{URL: n.endpoint, SigningRegion: region, HostnameImmutable: true, Source: awssdk.EndpointSourceCustom}, nil } -func (in *s3Input) createS3Lister(ctx v2.Context, cancelCtx context.Context, client beat.Client, persistentStore *statestore.Store, states *states) (*s3Poller, error) { +func (in *s3Input) createS3Lister(ctx v2.Context, cancelCtx context.Context, client beat.Client, states *states) (*s3Poller, error) { var bucketName string var bucketID string if in.config.NonAWSBucketName != "" { @@ -250,6 +247,12 @@ func (in *s3Input) createS3Lister(ctx v2.Context, cancelCtx context.Context, cli o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled } o.UsePathStyle = in.config.PathStyle + + o.Retryer = retry.NewStandard(func(so *retry.StandardOptions) { + so.MaxAttempts = 5 + // Recover quickly when requests start working again + so.NoRetryIncrement = 100 + }) }) regionName, err := getRegionForBucket(cancelCtx, s3Client, bucketName) if err != nil { @@ -295,7 +298,6 @@ func (in *s3Input) createS3Lister(ctx v2.Context, cancelCtx context.Context, cli client, s3EventHandlerFactory, states, - persistentStore, bucketID, in.config.BucketListPrefix, in.awsConfig.Region, diff --git a/x-pack/filebeat/input/awss3/input_benchmark_test.go b/x-pack/filebeat/input/awss3/input_benchmark_test.go index e05e5b461ca..5d22d141168 100644 --- a/x-pack/filebeat/input/awss3/input_benchmark_test.go +++ b/x-pack/filebeat/input/awss3/input_benchmark_test.go @@ -8,7 +8,6 @@ import ( "context" "errors" "fmt" - "io/ioutil" "os" "path/filepath" "runtime" @@ -16,6 +15,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" + "github.com/elastic/beats/v7/libbeat/statestore" "github.com/elastic/beats/v7/libbeat/statestore/storetest" @@ -132,7 +133,7 @@ type constantS3 struct { var _ s3API = (*constantS3)(nil) func newConstantS3(t testing.TB) *constantS3 { - data, err := ioutil.ReadFile(cloudtrailTestFile) + data, err := os.ReadFile(cloudtrailTestFile) if err != nil { t.Fatal(err) } @@ -342,14 +343,11 @@ func benchmarkInputS3(t *testing.T, numberOfWorkers int) testing.BenchmarkResult return } - err = store.Set(awsS3WriteCommitPrefix+"bucket"+listPrefix, &commitWriteState{time.Time{}}) - if err != nil { - errChan <- err - return - } + states, err := newStates(inputCtx, store) + assert.NoError(t, err, "states creation should succeed") s3EventHandlerFactory := newS3ObjectProcessorFactory(log.Named("s3"), metrics, s3API, config.FileSelectors, backupConfig{}, numberOfWorkers) - s3Poller := newS3Poller(logp.NewLogger(inputName), metrics, s3API, client, s3EventHandlerFactory, newStates(inputCtx), store, "bucket", listPrefix, "region", "provider", numberOfWorkers, time.Second) + s3Poller := newS3Poller(logp.NewLogger(inputName), metrics, s3API, client, s3EventHandlerFactory, states, "bucket", listPrefix, "region", "provider", numberOfWorkers, time.Second) if err := s3Poller.Poll(ctx); err != nil { if !errors.Is(err, context.DeadlineExceeded) { diff --git a/x-pack/filebeat/input/awss3/s3.go b/x-pack/filebeat/input/awss3/s3.go index 5aa8d31e95d..8909f78bb39 100644 --- a/x-pack/filebeat/input/awss3/s3.go +++ b/x-pack/filebeat/input/awss3/s3.go @@ -11,34 +11,22 @@ import ( "sync" "time" - "github.com/gofrs/uuid" - "go.uber.org/multierr" + "github.com/aws/aws-sdk-go-v2/aws/ratelimit" "github.com/elastic/beats/v7/libbeat/beat" - "github.com/elastic/beats/v7/libbeat/statestore" + "github.com/elastic/beats/v7/libbeat/common/backoff" awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/go-concert/timed" ) -const maxCircuitBreaker = 5 - -type commitWriteState struct { - time.Time -} - -type s3ObjectInfo struct { - name string - key string - etag string - lastModified time.Time - listingID string -} +// var instead of const so it can be reduced during unit tests (instead of waiting +// through 10 minutes of retry backoff) +var readerLoopMaxCircuitBreaker = 10 type s3ObjectPayload struct { s3ObjectHandler s3ObjectHandler - s3ObjectInfo s3ObjectInfo - s3ObjectEvent s3EventV2 + objectState state } type s3Poller struct { @@ -48,15 +36,12 @@ type s3Poller struct { region string provider string bucketPollInterval time.Duration - workerSem *awscommon.Sem s3 s3API log *logp.Logger metrics *inputMetrics client beat.Client s3ObjectHandler s3ObjectHandlerFactory states *states - store *statestore.Store - workersListingMap *sync.Map workersProcessingMap *sync.Map } @@ -66,7 +51,6 @@ func newS3Poller(log *logp.Logger, client beat.Client, s3ObjectHandler s3ObjectHandlerFactory, states *states, - store *statestore.Store, bucket string, listPrefix string, awsRegion string, @@ -85,41 +69,17 @@ func newS3Poller(log *logp.Logger, region: awsRegion, provider: provider, bucketPollInterval: bucketPollInterval, - workerSem: awscommon.NewSem(numberOfWorkers), s3: s3, log: log, metrics: metrics, client: client, s3ObjectHandler: s3ObjectHandler, states: states, - store: store, - workersListingMap: new(sync.Map), workersProcessingMap: new(sync.Map), } } -func (p *s3Poller) handlePurgingLock(info s3ObjectInfo, isStored bool) { - id := stateID(info.name, info.key, info.etag, info.lastModified) - previousState := p.states.FindPreviousByID(id) - if !previousState.IsEmpty() { - if isStored { - previousState.MarkAsStored() - } else { - previousState.MarkAsError() - } - - p.states.Update(previousState, info.listingID) - } - - // Manage locks for purging. - if p.states.IsListingFullyStored(info.listingID) { - // locked on processing we unlock when all the object were ACKed - lock, _ := p.workersListingMap.Load(info.listingID) - lock.(*sync.Mutex).Unlock() - } -} - -func (p *s3Poller) createS3ObjectProcessor(ctx context.Context, state state) (s3ObjectHandler, s3EventV2) { +func (p *s3Poller) createS3ObjectProcessor(ctx context.Context, state state) s3ObjectHandler { event := s3EventV2{} event.AWSRegion = p.region event.Provider = p.provider @@ -129,275 +89,126 @@ func (p *s3Poller) createS3ObjectProcessor(ctx context.Context, state state) (s3 acker := awscommon.NewEventACKTracker(ctx) - return p.s3ObjectHandler.Create(ctx, p.log, p.client, acker, event), event + return p.s3ObjectHandler.Create(ctx, p.log, p.client, acker, event) } -func (p *s3Poller) ProcessObject(s3ObjectPayloadChan <-chan *s3ObjectPayload) error { - var errs []error +func (p *s3Poller) workerLoop(ctx context.Context, s3ObjectPayloadChan <-chan *s3ObjectPayload) { + rateLimitWaiter := backoff.NewEqualJitterBackoff(ctx.Done(), 1, 120) for s3ObjectPayload := range s3ObjectPayloadChan { - // Process S3 object (download, parse, create events). - err := s3ObjectPayload.s3ObjectHandler.ProcessS3Object() + objHandler := s3ObjectPayload.s3ObjectHandler + state := s3ObjectPayload.objectState - // Wait for all events to be ACKed before proceeding. - s3ObjectPayload.s3ObjectHandler.Wait() + // Process S3 object (download, parse, create events). + err := objHandler.ProcessS3Object() + if errors.Is(err, errS3DownloadFailed) { + // Download errors are ephemeral. Add a backoff delay, then skip to the + // next iteration so we don't mark the object as permanently failed. + rateLimitWaiter.Wait() + continue + } + // Reset the rate limit delay on results that aren't download errors. + rateLimitWaiter.Reset() - info := s3ObjectPayload.s3ObjectInfo + // Wait for downloaded objects to be ACKed. + objHandler.Wait() if err != nil { - event := s3ObjectPayload.s3ObjectEvent - errs = append(errs, - fmt.Errorf( - fmt.Sprintf("failed processing S3 event for object key %q in bucket %q: %%w", - event.S3.Object.Key, event.S3.Bucket.Name), - err)) - - p.handlePurgingLock(info, false) - continue + p.log.Errorf("failed processing S3 event for object key %q in bucket %q: %v", + state.Key, state.Bucket, err.Error()) + + // Non-retryable error. + state.Failed = true + } else { + state.Stored = true } - p.handlePurgingLock(info, true) + // Persist the result + p.states.AddState(state) // Metrics p.metrics.s3ObjectsAckedTotal.Inc() } - - return multierr.Combine(errs...) } -func (p *s3Poller) GetS3Objects(ctx context.Context, s3ObjectPayloadChan chan<- *s3ObjectPayload) { +func (p *s3Poller) readerLoop(ctx context.Context, s3ObjectPayloadChan chan<- *s3ObjectPayload) { defer close(s3ObjectPayloadChan) bucketName := getBucketNameFromARN(p.bucket) + errorBackoff := backoff.NewEqualJitterBackoff(ctx.Done(), 1, 120) circuitBreaker := 0 paginator := p.s3.ListObjectsPaginator(bucketName, p.listPrefix) for paginator.HasMorePages() { page, err := paginator.NextPage(ctx) - if err != nil { - if !paginator.HasMorePages() { - break - } + if err != nil { p.log.Warnw("Error when paginating listing.", "error", err) - circuitBreaker++ - if circuitBreaker >= maxCircuitBreaker { - p.log.Warnw(fmt.Sprintf("%d consecutive error when paginating listing, breaking the circuit.", circuitBreaker), "error", err) - break + // QuotaExceededError is client-side rate limiting in the AWS sdk, + // don't include it in the circuit breaker count + if !errors.As(err, &ratelimit.QuotaExceededError{}) { + circuitBreaker++ + if circuitBreaker >= readerLoopMaxCircuitBreaker { + p.log.Warnw(fmt.Sprintf("%d consecutive error when paginating listing, breaking the circuit.", circuitBreaker), "error", err) + break + } } + // add a backoff delay and try again + errorBackoff.Wait() continue } + // Reset the circuit breaker and the error backoff if a read is successful + circuitBreaker = 0 + errorBackoff.Reset() - listingID, err := uuid.NewV4() - if err != nil { - p.log.Warnw("Error generating UUID for listing page.", "error", err) - continue - } - - // lock for the listing page and state in workersListingMap - // this map is shared with the storedOp and will be unlocked there - lock := new(sync.Mutex) - lock.Lock() - p.workersListingMap.Store(listingID.String(), lock) - - totProcessableObjects := 0 totListedObjects := len(page.Contents) - s3ObjectPayloadChanByPage := make(chan *s3ObjectPayload, totListedObjects) // Metrics p.metrics.s3ObjectsListedTotal.Add(uint64(totListedObjects)) for _, object := range page.Contents { - state := newState(bucketName, *object.Key, *object.ETag, p.listPrefix, *object.LastModified) - if p.states.MustSkip(state, p.store) { + state := newState(bucketName, *object.Key, *object.ETag, *object.LastModified) + if p.states.IsProcessed(state) { p.log.Debugw("skipping state.", "state", state) continue } - // we have no previous state or the previous state - // is not stored: refresh the state - previousState := p.states.FindPrevious(state) - if previousState.IsEmpty() || !previousState.IsProcessed() { - p.states.Update(state, "") - } - - s3Processor, event := p.createS3ObjectProcessor(ctx, state) + s3Processor := p.createS3ObjectProcessor(ctx, state) if s3Processor == nil { p.log.Debugw("empty s3 processor.", "state", state) continue } - totProcessableObjects++ - - s3ObjectPayloadChanByPage <- &s3ObjectPayload{ + s3ObjectPayloadChan <- &s3ObjectPayload{ s3ObjectHandler: s3Processor, - s3ObjectInfo: s3ObjectInfo{ - name: bucketName, - key: *object.Key, - etag: *object.ETag, - lastModified: *object.LastModified, - listingID: listingID.String(), - }, - s3ObjectEvent: event, - } - } - - if totProcessableObjects == 0 { - p.log.Debugw("0 processable objects on bucket pagination.", "bucket", p.bucket, "listPrefix", p.listPrefix, "listingID", listingID) - // nothing to be ACKed, unlock here - p.states.DeleteListing(listingID.String()) - lock.Unlock() - } else { - listingInfo := &listingInfo{totObjects: totProcessableObjects} - p.states.AddListing(listingID.String(), listingInfo) - - // Metrics - p.metrics.s3ObjectsProcessedTotal.Add(uint64(totProcessableObjects)) - } - - close(s3ObjectPayloadChanByPage) - for s3ObjectPayload := range s3ObjectPayloadChanByPage { - s3ObjectPayloadChan <- s3ObjectPayload - } - } -} - -func (p *s3Poller) Purge(ctx context.Context) { - listingIDs := p.states.GetListingIDs() - p.log.Debugw("purging listing.", "listingIDs", listingIDs) - for _, listingID := range listingIDs { - // we lock here in order to process the purge only after - // full listing page is ACKed by all the workers - lock, loaded := p.workersListingMap.Load(listingID) - if !loaded { - // purge calls can overlap, GetListingIDs can return - // an outdated snapshot with listing already purged - p.states.DeleteListing(listingID) - p.log.Debugw("deleting already purged listing from states.", "listingID", listingID) - continue - } - - lock.(*sync.Mutex).Lock() - - states := map[string]*state{} - latestStoredTimeByBucketAndListPrefix := make(map[string]time.Time, 0) - - listingStates := p.states.GetStatesByListingID(listingID) - for i, state := range listingStates { - // it is not stored, keep - if !state.IsProcessed() { - p.log.Debugw("state not stored or with error, skip purge", "state", state) - continue + objectState: state, } - var latestStoredTime time.Time - states[state.ID] = &listingStates[i] - latestStoredTime, ok := latestStoredTimeByBucketAndListPrefix[state.Bucket+state.ListPrefix] - if !ok { - var commitWriteState commitWriteState - err := p.store.Get(awsS3WriteCommitPrefix+state.Bucket+state.ListPrefix, &commitWriteState) - if err == nil { - // we have no entry in the map, and we have no entry in the store - // set zero time - latestStoredTime = time.Time{} - p.log.Debugw("last stored time is zero time", "bucket", state.Bucket, "listPrefix", state.ListPrefix) - } else { - latestStoredTime = commitWriteState.Time - p.log.Debugw("last stored time is commitWriteState", "commitWriteState", commitWriteState, "bucket", state.Bucket, "listPrefix", state.ListPrefix) - } - } else { - p.log.Debugw("last stored time from memory", "latestStoredTime", latestStoredTime, "bucket", state.Bucket, "listPrefix", state.ListPrefix) - } - - if state.LastModified.After(latestStoredTime) { - p.log.Debugw("last stored time updated", "state.LastModified", state.LastModified, "bucket", state.Bucket, "listPrefix", state.ListPrefix) - latestStoredTimeByBucketAndListPrefix[state.Bucket+state.ListPrefix] = state.LastModified - } - } - - for key := range states { - p.states.Delete(key) - } - - if err := p.states.writeStates(p.store); err != nil { - p.log.Errorw("Failed to write states to the registry", "error", err) - } - - for bucketAndListPrefix, latestStoredTime := range latestStoredTimeByBucketAndListPrefix { - if err := p.store.Set(awsS3WriteCommitPrefix+bucketAndListPrefix, commitWriteState{latestStoredTime}); err != nil { - p.log.Errorw("Failed to write commit time to the registry", "error", err) - } - } - - // purge is done, we can unlock and clean - lock.(*sync.Mutex).Unlock() - p.workersListingMap.Delete(listingID) - p.states.DeleteListing(listingID) - - // Listing is removed from all states, we can finalize now - for _, state := range states { - processor, _ := p.createS3ObjectProcessor(ctx, *state) - if err := processor.FinalizeS3Object(); err != nil { - p.log.Errorw("Failed to finalize S3 object", "key", state.Key, "error", err) - } + p.metrics.s3ObjectsProcessedTotal.Inc() } } } func (p *s3Poller) Poll(ctx context.Context) error { - // This loop tries to keep the workers busy as much as possible while - // honoring the number in config opposed to a simpler loop that does one - // listing, sequentially processes every object and then does another listing - workerWg := new(sync.WaitGroup) for ctx.Err() == nil { - // Determine how many S3 workers are available. - workers, err := p.workerSem.AcquireContext(p.numberOfWorkers, ctx) - if err != nil { - break - } - - if workers == 0 { - continue - } + var workerWg sync.WaitGroup + workChan := make(chan *s3ObjectPayload) - s3ObjectPayloadChan := make(chan *s3ObjectPayload) - - workerWg.Add(1) - go func() { - defer func() { - workerWg.Done() - }() - - p.GetS3Objects(ctx, s3ObjectPayloadChan) - p.Purge(ctx) - }() - - workerWg.Add(workers) - for i := 0; i < workers; i++ { + // Start the worker goroutines to listen on the work channel + for i := 0; i < p.numberOfWorkers; i++ { + workerWg.Add(1) go func() { - defer func() { - workerWg.Done() - p.workerSem.Release(1) - }() - if err := p.ProcessObject(s3ObjectPayloadChan); err != nil { - p.log.Warnw("Failed processing S3 listing.", "error", err) - } + defer workerWg.Done() + p.workerLoop(ctx, workChan) }() } - err = timed.Wait(ctx, p.bucketPollInterval) - if err != nil { - if errors.Is(err, context.Canceled) { - // A canceled context is a normal shutdown. - return nil - } + // Start reading data and wait for its processing to be done + p.readerLoop(ctx, workChan) + workerWg.Wait() - return err - } + _ = timed.Wait(ctx, p.bucketPollInterval) } - // Wait for all workers to finish. - workerWg.Wait() - if errors.Is(ctx.Err(), context.Canceled) { // A canceled context is a normal shutdown. return nil diff --git a/x-pack/filebeat/input/awss3/s3_objects.go b/x-pack/filebeat/input/awss3/s3_objects.go index 32911778336..21dfa2243e7 100644 --- a/x-pack/filebeat/input/awss3/s3_objects.go +++ b/x-pack/filebeat/input/awss3/s3_objects.go @@ -43,6 +43,11 @@ type s3ObjectProcessorFactory struct { backupConfig backupConfig } +// errS3DownloadFailed reports problems downloading an S3 object. Download errors +// should never treated as permanent, they are just an indication to apply a +// retry backoff until the connection is healthy again. +var errS3DownloadFailed = errors.New("S3 download failure") + func newS3ObjectProcessorFactory(log *logp.Logger, metrics *inputMetrics, s3 s3API, sel []fileSelectorConfig, backupConfig backupConfig, maxWorkers int) *s3ObjectProcessorFactory { if metrics == nil { // Metrics are optional. Initialize a stub. @@ -135,8 +140,9 @@ func (p *s3ObjectProcessor) ProcessS3Object() error { // Request object (download). contentType, meta, body, err := p.download() if err != nil { - return fmt.Errorf("failed to get s3 object (elapsed_time_ns=%d): %w", - time.Since(start).Nanoseconds(), err) + // Wrap downloadError in the result so the caller knows it's not a + // permanent failure. + return fmt.Errorf("%w: %w", errS3DownloadFailed, err) } defer body.Close() p.s3Metadata = meta @@ -434,10 +440,7 @@ func (p *s3ObjectProcessor) FinalizeS3Object() error { if bucketName == "" { return nil } - backupKey := p.s3Obj.S3.Object.Key - if p.backupConfig.BackupToBucketPrefix != "" { - backupKey = fmt.Sprintf("%s%s", p.backupConfig.BackupToBucketPrefix, backupKey) - } + backupKey := p.backupConfig.BackupToBucketPrefix + p.s3Obj.S3.Object.Key _, err := p.s3.CopyObject(p.ctx, p.s3Obj.S3.Bucket.Name, bucketName, p.s3Obj.S3.Object.Key, backupKey) if err != nil { return fmt.Errorf("failed to copy object to backup bucket: %w", err) diff --git a/x-pack/filebeat/input/awss3/s3_objects_test.go b/x-pack/filebeat/input/awss3/s3_objects_test.go index 6732c12e057..28e8f4f42a5 100644 --- a/x-pack/filebeat/input/awss3/s3_objects_test.go +++ b/x-pack/filebeat/input/awss3/s3_objects_test.go @@ -8,7 +8,8 @@ import ( "bytes" "context" "errors" - "io/ioutil" + "io" + "os" "path/filepath" "strings" "testing" @@ -27,7 +28,7 @@ import ( ) func newS3Object(t testing.TB, filename, contentType string) (s3EventV2, *s3.GetObjectOutput) { - data, err := ioutil.ReadFile(filename) + data, err := os.ReadFile(filename) if err != nil { t.Fatal(err) } @@ -39,7 +40,7 @@ func newS3GetObjectResponse(filename string, data []byte, contentType string) *s r := bytes.NewReader(data) getObjectOutput := s3.GetObjectOutput{} getObjectOutput.ContentLength = int64(r.Len()) - getObjectOutput.Body = ioutil.NopCloser(r) + getObjectOutput.Body = io.NopCloser(r) if contentType != "" { getObjectOutput.ContentType = &contentType } @@ -157,7 +158,7 @@ func TestS3ObjectProcessor(t *testing.T) { ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).ProcessS3Object() require.Error(t, err) - assert.True(t, errors.Is(err, errFakeConnectivityFailure), "expected errFakeConnectivityFailure error") + assert.True(t, errors.Is(err, errS3DownloadFailed), "expected errS3DownloadFailed") }) t.Run("no error empty result in download", func(t *testing.T) { diff --git a/x-pack/filebeat/input/awss3/s3_test.go b/x-pack/filebeat/input/awss3/s3_test.go index b94ba7cfb09..be1d65b796e 100644 --- a/x-pack/filebeat/input/awss3/s3_test.go +++ b/x-pack/filebeat/input/awss3/s3_test.go @@ -13,7 +13,6 @@ import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/aws-sdk-go-v2/service/s3/types" "github.com/golang/mock/gomock" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/elastic/beats/v7/libbeat/statestore" @@ -134,12 +133,16 @@ func TestS3Poller(t *testing.T) { Return(nil, errFakeConnectivityFailure) s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockAPI, nil, backupConfig{}, numberOfWorkers) - receiver := newS3Poller(logp.NewLogger(inputName), nil, mockAPI, mockPublisher, s3ObjProc, newStates(inputCtx), store, bucket, "key", "region", "provider", numberOfWorkers, pollInterval) + states, err := newStates(inputCtx, store) + require.NoError(t, err, "states creation must succeed") + receiver := newS3Poller(logp.NewLogger(inputName), nil, mockAPI, mockPublisher, s3ObjProc, states, bucket, "key", "region", "provider", numberOfWorkers, pollInterval) require.Error(t, context.DeadlineExceeded, receiver.Poll(ctx)) - assert.Equal(t, numberOfWorkers, receiver.workerSem.Available()) }) - t.Run("retry after Poll error", func(t *testing.T) { + t.Run("restart bucket scan after paging errors", func(t *testing.T) { + // Change the restart limit to 2 consecutive errors, so the test doesn't + // take too long to run + readerLoopMaxCircuitBreaker = 2 storeReg := statestore.NewRegistry(storetest.NewMemoryStoreBackend()) store, err := storeReg.Get("test") if err != nil { @@ -176,13 +179,13 @@ func TestS3Poller(t *testing.T) { // Initial Next gets an error. mockPagerFirst.EXPECT(). HasMorePages(). - Times(10). + Times(2). DoAndReturn(func() bool { return true }) mockPagerFirst.EXPECT(). NextPage(gomock.Any()). - Times(5). + Times(2). DoAndReturn(func(_ context.Context, optFns ...func(*s3.Options)) (*s3.ListObjectsV2Output, error) { return nil, errFakeConnectivityFailure }) @@ -257,8 +260,9 @@ func TestS3Poller(t *testing.T) { Return(nil, errFakeConnectivityFailure) s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockAPI, nil, backupConfig{}, numberOfWorkers) - receiver := newS3Poller(logp.NewLogger(inputName), nil, mockAPI, mockPublisher, s3ObjProc, newStates(inputCtx), store, bucket, "key", "region", "provider", numberOfWorkers, pollInterval) + states, err := newStates(inputCtx, store) + require.NoError(t, err, "states creation must succeed") + receiver := newS3Poller(logp.NewLogger(inputName), nil, mockAPI, mockPublisher, s3ObjProc, states, bucket, "key", "region", "provider", numberOfWorkers, pollInterval) require.Error(t, context.DeadlineExceeded, receiver.Poll(ctx)) - assert.Equal(t, numberOfWorkers, receiver.workerSem.Available()) }) } diff --git a/x-pack/filebeat/input/awss3/state.go b/x-pack/filebeat/input/awss3/state.go index 97fb8d538cd..4b7e09f9e7f 100644 --- a/x-pack/filebeat/input/awss3/state.go +++ b/x-pack/filebeat/input/awss3/state.go @@ -5,84 +5,52 @@ package awss3 import ( - "fmt" "time" ) // state is used to communicate the publishing state of a s3 object type state struct { - // ID is used to identify the state in the store, and it is composed by - // Bucket + Key + Etag + LastModified.String(): changing this value or how it is - // composed will break backward compatibilities with entries already in the store. - ID string `json:"id" struct:"id"` Bucket string `json:"bucket" struct:"bucket"` Key string `json:"key" struct:"key"` Etag string `json:"etag" struct:"etag"` LastModified time.Time `json:"last_modified" struct:"last_modified"` - // ListPrefix is used for unique of the key in the store for awsS3WriteCommitPrefix - ListPrefix string `json:"list_prefix" struct:"list_prefix"` - // A state has Stored = true when all events are ACKed. Stored bool `json:"stored" struct:"stored"` - // A state has Error = true when ProcessS3Object returned an error - Error bool `json:"error" struct:"error"` + + // Failed is true when ProcessS3Object returned an error other than + // s3DownloadError. + // Before 8.14, this field was called "error". However, that field was + // set for many ephemeral reasons including client-side rate limiting + // (see https://github.com/elastic/beats/issues/39114). Now that we + // don't treat download errors as permanent, the field name was changed + // so that users upgrading from old versions aren't prevented from + // retrying old download failures. + Failed bool `json:"failed" struct:"failed"` } +// ID is used to identify the state in the store, and it is composed by +// Bucket + Key + Etag + LastModified.String(): changing this value or how it is +// composed will break backward compatibilities with entries already in the store. func stateID(bucket, key, etag string, lastModified time.Time) string { return bucket + key + etag + lastModified.String() } // newState creates a new s3 object state -func newState(bucket, key, etag, listPrefix string, lastModified time.Time) state { - s := state{ +func newState(bucket, key, etag string, lastModified time.Time) state { + return state{ Bucket: bucket, Key: key, LastModified: lastModified, Etag: etag, - ListPrefix: listPrefix, - Stored: false, - Error: false, } - - s.ID = stateID(s.Bucket, s.Key, s.Etag, s.LastModified) - - return s } -// MarkAsStored set the stored flag to true -func (s *state) MarkAsStored() { - s.Stored = true -} - -// MarkAsError set the error flag to true -func (s *state) MarkAsError() { - s.Error = true -} - -// IsProcessed checks if the state is either Stored or Error -func (s *state) IsProcessed() bool { - return s.Stored || s.Error +func (s *state) ID() string { + return stateID(s.Bucket, s.Key, s.Etag, s.LastModified) } // IsEqual checks if the two states point to the same s3 object. func (s *state) IsEqual(c *state) bool { return s.Bucket == c.Bucket && s.Key == c.Key && s.Etag == c.Etag && s.LastModified.Equal(c.LastModified) } - -// IsEmpty checks if the state is empty -func (s *state) IsEmpty() bool { - c := state{} - return s.Bucket == c.Bucket && s.Key == c.Key && s.Etag == c.Etag && s.LastModified.Equal(c.LastModified) -} - -// String returns string representation of the struct -func (s *state) String() string { - return fmt.Sprintf( - "{ID: %v, Bucket: %v, Key: %v, Etag: %v, LastModified: %v}", - s.ID, - s.Bucket, - s.Key, - s.Etag, - s.LastModified) -} diff --git a/x-pack/filebeat/input/awss3/state_test.go b/x-pack/filebeat/input/awss3/state_test.go index 24a5e9d81b4..375a44ce79e 100644 --- a/x-pack/filebeat/input/awss3/state_test.go +++ b/x-pack/filebeat/input/awss3/state_test.go @@ -61,7 +61,7 @@ func TestStateIsEqual(t *testing.T) { Key: "/key/to/this/file/1", Etag: "etag", LastModified: lastModifed, - Error: true, + Failed: true, }, { Bucket: "bucket a", diff --git a/x-pack/filebeat/input/awss3/states.go b/x-pack/filebeat/input/awss3/states.go index 449219a867f..edbbcc73793 100644 --- a/x-pack/filebeat/input/awss3/states.go +++ b/x-pack/filebeat/input/awss3/states.go @@ -15,278 +15,64 @@ import ( "github.com/elastic/beats/v7/libbeat/statestore" ) -const ( - awsS3ObjectStatePrefix = "filebeat::aws-s3::state::" - awsS3WriteCommitPrefix = "filebeat::aws-s3::writeCommit::" -) - -type listingInfo struct { - totObjects int - - mu sync.Mutex - storedObjects int - errorObjects int - finalCheck bool -} +const awsS3ObjectStatePrefix = "filebeat::aws-s3::state::" // states handles list of s3 object state. One must use newStates to instantiate a // file states registry. Using the zero-value is not safe. type states struct { - sync.RWMutex - log *logp.Logger - // states store - states []state - - // idx maps state IDs to state indexes for fast lookup and modifications. - idx map[string]int + // Completed S3 object states, indexed by state ID. + // statesLock must be held to access states. + states map[string]state + statesLock sync.Mutex - listingIDs map[string]struct{} - listingInfo *sync.Map - statesByListingID map[string][]state + // The store used to persist state changes to the registry. + // storeLock must be held to access store. + store *statestore.Store + storeLock sync.Mutex } // newStates generates a new states registry. -func newStates(ctx v2.Context) *states { - return &states{ - log: ctx.Logger.Named("states"), - states: nil, - idx: map[string]int{}, - listingInfo: new(sync.Map), - listingIDs: map[string]struct{}{}, - statesByListingID: map[string][]state{}, - } -} - -func (s *states) MustSkip(state state, store *statestore.Store) bool { - if !s.IsNew(state) { - s.log.Debugw("not new state in must skip", "state", state) - return true - } - - previousState := s.FindPrevious(state) - - // status is forgotten. if there is no previous state and - // the state.LastModified is before the last cleanStore - // write commit we can remove - var commitWriteState commitWriteState - err := store.Get(awsS3WriteCommitPrefix+state.Bucket+state.ListPrefix, &commitWriteState) - if err == nil && previousState.IsEmpty() && - (state.LastModified.Before(commitWriteState.Time) || state.LastModified.Equal(commitWriteState.Time)) { - s.log.Debugw("state.LastModified older than writeCommitState in must skip", "state", state, "commitWriteState", commitWriteState) - return true - } - - // the previous state is stored or has error: let's skip - if !previousState.IsEmpty() && previousState.IsProcessed() { - s.log.Debugw("previous state is stored or has error", "state", state) - return true - } - - return false -} - -func (s *states) Delete(id string) { - s.Lock() - defer s.Unlock() - - index := s.findPrevious(id) - if index >= 0 { - last := len(s.states) - 1 - s.states[last], s.states[index] = s.states[index], s.states[last] - s.states = s.states[:last] - - s.idx = map[string]int{} - for i, state := range s.states { - s.idx[state.ID] = i - } - } -} - -// IsListingFullyStored check if listing if fully stored -// After first time the condition is met it will always return false -func (s *states) IsListingFullyStored(listingID string) bool { - info, ok := s.listingInfo.Load(listingID) - if !ok { - return false - } - listingInfo, ok := info.(*listingInfo) - if !ok { - return false - } - - listingInfo.mu.Lock() - defer listingInfo.mu.Unlock() - if listingInfo.finalCheck { - return false - } - - listingInfo.finalCheck = (listingInfo.storedObjects + listingInfo.errorObjects) == listingInfo.totObjects - - if (listingInfo.storedObjects + listingInfo.errorObjects) > listingInfo.totObjects { - s.log.Warnf("unexepected mixmatch between storedObjects (%d), errorObjects (%d) and totObjects (%d)", - listingInfo.storedObjects, listingInfo.errorObjects, listingInfo.totObjects) - } - - return listingInfo.finalCheck -} - -// AddListing add listing info -func (s *states) AddListing(listingID string, listingInfo *listingInfo) { - s.Lock() - defer s.Unlock() - s.listingIDs[listingID] = struct{}{} - s.listingInfo.Store(listingID, listingInfo) -} - -// DeleteListing delete listing info -func (s *states) DeleteListing(listingID string) { - s.Lock() - defer s.Unlock() - delete(s.listingIDs, listingID) - delete(s.statesByListingID, listingID) - s.listingInfo.Delete(listingID) -} - -// Update updates a state. If previous state didn't exist, new one is created -func (s *states) Update(newState state, listingID string) { - s.Lock() - defer s.Unlock() - - id := newState.ID - index := s.findPrevious(id) - - if index >= 0 { - s.states[index] = newState - } else { - // No existing state found, add new one - s.idx[id] = len(s.states) - s.states = append(s.states, newState) - s.log.Debug("New state added for ", newState.ID) - } - - if listingID == "" || !newState.IsProcessed() { - return - } - - // here we increase the number of stored object - info, ok := s.listingInfo.Load(listingID) - if !ok { - return - } - listingInfo, ok := info.(*listingInfo) - if !ok { - return - } - - listingInfo.mu.Lock() - - if newState.Stored { - listingInfo.storedObjects++ - } - - if newState.Error { - listingInfo.errorObjects++ - } - - listingInfo.mu.Unlock() - - if _, ok := s.statesByListingID[listingID]; !ok { - s.statesByListingID[listingID] = make([]state, 0) +func newStates(ctx v2.Context, store *statestore.Store) (*states, error) { + states := &states{ + log: ctx.Logger.Named("states"), + states: map[string]state{}, + store: store, } - - s.statesByListingID[listingID] = append(s.statesByListingID[listingID], newState) + return states, states.loadFromRegistry() } -// FindPrevious lookups a registered state, that matching the new state. -// Returns a zero-state if no match is found. -func (s *states) FindPrevious(newState state) state { - s.RLock() - defer s.RUnlock() - id := newState.ID - i := s.findPrevious(id) - if i < 0 { - return state{} - } - return s.states[i] +func (s *states) IsProcessed(state state) bool { + s.statesLock.Lock() + defer s.statesLock.Unlock() + // Our in-memory table only stores completed objects + _, ok := s.states[state.ID()] + return ok } -// FindPreviousByID lookups a registered state, that matching the id. -// Returns a zero-state if no match is found. -func (s *states) FindPreviousByID(id string) state { - s.RLock() - defer s.RUnlock() - i := s.findPrevious(id) - if i < 0 { - return state{} - } - return s.states[i] -} - -func (s *states) IsNew(state state) bool { - s.RLock() - defer s.RUnlock() - id := state.ID - i := s.findPrevious(id) - - if i < 0 { - return true - } +func (s *states) AddState(state state) { - return !s.states[i].IsEqual(&state) -} + id := state.ID() + // Update in-memory copy + s.statesLock.Lock() + s.states[id] = state + s.statesLock.Unlock() -// findPrevious returns the previous state for the file. -// In case no previous state exists, index -1 is returned -func (s *states) findPrevious(id string) int { - if i, exists := s.idx[id]; exists { - return i + // Persist to the registry + s.storeLock.Lock() + key := awsS3ObjectStatePrefix + id + if err := s.store.Set(key, state); err != nil { + s.log.Errorw("Failed to write states to the registry", "error", err) } - return -1 -} - -// GetStates creates copy of the file states. -func (s *states) GetStates() []state { - s.RLock() - defer s.RUnlock() - - newStates := make([]state, len(s.states)) - copy(newStates, s.states) - - return newStates -} - -// GetListingIDs return a of the listing IDs -func (s *states) GetListingIDs() []string { - s.RLock() - defer s.RUnlock() - listingIDs := make([]string, 0, len(s.listingIDs)) - for listingID := range s.listingIDs { - listingIDs = append(listingIDs, listingID) - } - - return listingIDs -} - -// GetStatesByListingID return a copy of the states by listing ID -func (s *states) GetStatesByListingID(listingID string) []state { - s.RLock() - defer s.RUnlock() - - if _, ok := s.statesByListingID[listingID]; !ok { - return nil - } - - newStates := make([]state, len(s.statesByListingID[listingID])) - copy(newStates, s.statesByListingID[listingID]) - return newStates + s.storeLock.Unlock() } -func (s *states) readStatesFrom(store *statestore.Store) error { - var states []state +func (s *states) loadFromRegistry() error { + states := map[string]state{} - err := store.Each(func(key string, dec statestore.ValueDecoder) (bool, error) { + s.storeLock.Lock() + err := s.store.Each(func(key string, dec statestore.ValueDecoder) (bool, error) { if !strings.HasPrefix(key, awsS3ObjectStatePrefix) { return true, nil } @@ -294,78 +80,30 @@ func (s *states) readStatesFrom(store *statestore.Store) error { // try to decode. Ignore faulty/incompatible values. var st state if err := dec.Decode(&st); err != nil { - // XXX: Do we want to log here? In case we start to store other - // state types in the registry, then this operation will likely fail - // quite often, producing some false-positives in the logs... - return false, err + // Skip this key but continue iteration + s.log.Warnf("invalid S3 state loading object key %v", key) + //nolint:nilerr // One bad object shouldn't stop iteration + return true, nil + } + if !st.Stored && !st.Failed { + // This is from an older version where state could be stored in the + // registry even if the object wasn't processed, or if it encountered + // ephemeral download errors. We don't add these to the in-memory cache, + // so if we see them during a bucket scan we will still retry them. + return true, nil } - st.ID = key[len(awsS3ObjectStatePrefix):] - states = append(states, st) + states[st.ID()] = st return true, nil }) + s.storeLock.Unlock() if err != nil { return err } - states = fixStates(states) - - for _, state := range states { - s.Update(state, "") - } - - return nil -} - -// fixStates cleans up the registry states when updating from an older version -// of filebeat potentially writing invalid entries. -func fixStates(states []state) []state { - if len(states) == 0 { - return states - } - - // we use a map of states here, so to identify and merge duplicate entries. - idx := map[string]*state{} - for i := range states { - state := &states[i] - - old, exists := idx[state.ID] - if !exists { - idx[state.ID] = state - } else { - mergeStates(old, state) // overwrite the entry in 'old' - } - } - - if len(idx) == len(states) { - return states - } - - i := 0 - newStates := make([]state, len(idx)) - for _, state := range idx { - newStates[i] = *state - i++ - } - return newStates -} - -// mergeStates merges 2 states by trying to determine the 'newer' state. -// The st state is overwritten with the updated fields. -func mergeStates(st, other *state) { - // update file meta-data. As these are updated concurrently by the - // inputs, select the newer state based on the update timestamp. - if st.LastModified.Before(other.LastModified) { - st.LastModified = other.LastModified - } -} + s.statesLock.Lock() + s.states = states + s.statesLock.Unlock() -func (s *states) writeStates(store *statestore.Store) error { - for _, state := range s.GetStates() { - key := awsS3ObjectStatePrefix + state.ID - if err := store.Set(key, state); err != nil { - return err - } - } return nil } diff --git a/x-pack/filebeat/input/awss3/states_test.go b/x-pack/filebeat/input/awss3/states_test.go index 39dc4cf82e6..2f8bbf58fdf 100644 --- a/x-pack/filebeat/input/awss3/states_test.go +++ b/x-pack/filebeat/input/awss3/states_test.go @@ -14,6 +14,7 @@ import ( "github.com/elastic/beats/v7/libbeat/statestore/storetest" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" v2 "github.com/elastic/beats/v7/filebeat/input/v2" "github.com/elastic/elastic-agent-libs/logp" @@ -46,287 +47,92 @@ var inputCtx = v2.Context{ Cancelation: context.Background(), } -func TestStatesIsNewAndMustSkip(t *testing.T) { +func TestStatesAddStateAndIsProcessed(t *testing.T) { type stateTestCase struct { - states func() *states - state state - mustBeNew bool - persistentStoreKV map[string]interface{} - expectedMustSkip bool - expectedIsNew bool + // An initialization callback to invoke on the (initially empty) states. + statesEdit func(states *states) + + // The state to call IsProcessed on and the expected result + state state + expectedIsProcessed bool + + // If true, the test will run statesEdit, then create a new states + // object from the same persistent store before calling IsProcessed + // (to test persistence between restarts). + shouldReload bool } lastModified := time.Date(2022, time.June, 30, 14, 13, 00, 0, time.UTC) + testState1 := newState("bucket", "key", "etag", lastModified) + testState2 := newState("bucket1", "key1", "etag1", lastModified) tests := map[string]stateTestCase{ "with empty states": { - states: func() *states { - return newStates(inputCtx) - }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified), - expectedMustSkip: false, - expectedIsNew: true, + state: testState1, + expectedIsProcessed: false, }, "not existing state": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key", "etag", "listPrefix", lastModified), "") - return states + statesEdit: func(states *states) { + states.AddState(testState2) }, - state: newState("bucket1", "key1", "etag1", "listPrefix1", lastModified), - expectedMustSkip: false, - expectedIsNew: true, + state: testState1, + expectedIsProcessed: false, }, "existing state": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key", "etag", "listPrefix", lastModified), "") - return states - }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified), - expectedMustSkip: true, - expectedIsNew: false, - }, - "with different etag": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key", "etag1", "listPrefix", lastModified), "") - return states - }, - state: newState("bucket", "key", "etag2", "listPrefix", lastModified), - expectedMustSkip: false, - expectedIsNew: true, - }, - "with different lastmodified": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key", "etag", "listPrefix", lastModified), "") - return states - }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified.Add(1*time.Second)), - expectedMustSkip: false, - expectedIsNew: true, - }, - "with stored state": { - states: func() *states { - states := newStates(inputCtx) - aState := newState("bucket", "key", "etag", "listPrefix", lastModified) - aState.Stored = true - states.Update(aState, "") - return states + statesEdit: func(states *states) { + states.AddState(testState1) }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified), - mustBeNew: true, - expectedMustSkip: true, - expectedIsNew: true, + state: testState1, + expectedIsProcessed: true, }, - "with error state": { - states: func() *states { - states := newStates(inputCtx) - aState := newState("bucket", "key", "etag", "listPrefix", lastModified) - aState.Error = true - states.Update(aState, "") - return states + "existing stored state is persisted": { + statesEdit: func(states *states) { + state := testState1 + state.Stored = true + states.AddState(state) }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified), - mustBeNew: true, - expectedMustSkip: true, - expectedIsNew: true, + state: testState1, + shouldReload: true, + expectedIsProcessed: true, }, - "before commit write": { - states: func() *states { - return newStates(inputCtx) + "existing failed state is persisted": { + statesEdit: func(states *states) { + state := testState1 + state.Failed = true + states.AddState(state) }, - persistentStoreKV: map[string]interface{}{ - awsS3WriteCommitPrefix + "bucket" + "listPrefix": &commitWriteState{lastModified}, - }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified.Add(-1*time.Second)), - expectedMustSkip: true, - expectedIsNew: true, + state: testState1, + shouldReload: true, + expectedIsProcessed: true, }, - "same commit write": { - states: func() *states { - return newStates(inputCtx) - }, - persistentStoreKV: map[string]interface{}{ - awsS3WriteCommitPrefix + "bucket" + "listPrefix": &commitWriteState{lastModified}, + "existing unprocessed state is not persisted": { + statesEdit: func(states *states) { + states.AddState(testState1) }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified), - expectedMustSkip: true, - expectedIsNew: true, - }, - "after commit write": { - states: func() *states { - return newStates(inputCtx) - }, - persistentStoreKV: map[string]interface{}{ - awsS3WriteCommitPrefix + "bucket" + "listPrefix": &commitWriteState{lastModified}, - }, - state: newState("bucket", "key", "etag", "listPrefix", lastModified.Add(time.Second)), - expectedMustSkip: false, - expectedIsNew: true, + state: testState1, + shouldReload: true, + expectedIsProcessed: false, }, } for name, test := range tests { test := test t.Run(name, func(t *testing.T) { - states := test.states() store := openTestStatestore() persistentStore, err := store.Access() if err != nil { t.Fatalf("unexpected err: %v", err) } - for key, value := range test.persistentStoreKV { - _ = persistentStore.Set(key, value) + states, err := newStates(inputCtx, persistentStore) + require.NoError(t, err, "states creation must succeed") + if test.statesEdit != nil { + test.statesEdit(states) } - - if test.mustBeNew { - test.state.LastModified = test.state.LastModified.Add(1 * time.Second) + if test.shouldReload { + states, err = newStates(inputCtx, persistentStore) + require.NoError(t, err, "states creation must succeed") } - isNew := states.IsNew(test.state) - assert.Equal(t, test.expectedIsNew, isNew) - - mustSkip := states.MustSkip(test.state, persistentStore) - assert.Equal(t, test.expectedMustSkip, mustSkip) - }) - } -} - -func TestStatesDelete(t *testing.T) { - type stateTestCase struct { - states func() *states - deleteID string - expected []state - } - - lastModified := time.Date(2021, time.July, 22, 18, 38, 00, 0, time.UTC) - tests := map[string]stateTestCase{ - "delete empty states": { - states: func() *states { - return newStates(inputCtx) - }, - deleteID: "an id", - expected: []state{}, - }, - "delete not existing state": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key", "etag", "listPrefix", lastModified), "") - return states - }, - deleteID: "an id", - expected: []state{ - { - ID: stateID("bucket", "key", "etag", lastModified), - Bucket: "bucket", - Key: "key", - Etag: "etag", - ListPrefix: "listPrefix", - LastModified: lastModified, - }, - }, - }, - "delete only one existing": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key", "etag", "listPrefix", lastModified), "") - return states - }, - deleteID: stateID("bucket", "key", "etag", lastModified), - expected: []state{}, - }, - "delete first": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key1", "etag1", "listPrefix", lastModified), "") - states.Update(newState("bucket", "key2", "etag2", "listPrefix", lastModified), "") - states.Update(newState("bucket", "key3", "etag3", "listPrefix", lastModified), "") - return states - }, - deleteID: "bucketkey1etag1" + lastModified.String(), - expected: []state{ - { - ID: stateID("bucket", "key3", "etag3", lastModified), - Bucket: "bucket", - Key: "key3", - Etag: "etag3", - ListPrefix: "listPrefix", - LastModified: lastModified, - }, - { - ID: stateID("bucket", "key2", "etag2", lastModified), - Bucket: "bucket", - Key: "key2", - Etag: "etag2", - ListPrefix: "listPrefix", - LastModified: lastModified, - }, - }, - }, - "delete last": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key1", "etag1", "listPrefix", lastModified), "") - states.Update(newState("bucket", "key2", "etag2", "listPrefix", lastModified), "") - states.Update(newState("bucket", "key3", "etag3", "listPrefix", lastModified), "") - return states - }, - deleteID: "bucketkey3etag3" + lastModified.String(), - expected: []state{ - { - ID: stateID("bucket", "key1", "etag1", lastModified), - Bucket: "bucket", - Key: "key1", - Etag: "etag1", - ListPrefix: "listPrefix", - LastModified: lastModified, - }, - { - ID: stateID("bucket", "key2", "etag2", lastModified), - Bucket: "bucket", - Key: "key2", - Etag: "etag2", - ListPrefix: "listPrefix", - LastModified: lastModified, - }, - }, - }, - "delete any": { - states: func() *states { - states := newStates(inputCtx) - states.Update(newState("bucket", "key1", "etag1", "listPrefix", lastModified), "") - states.Update(newState("bucket", "key2", "etag2", "listPrefix", lastModified), "") - states.Update(newState("bucket", "key3", "etag3", "listPrefix", lastModified), "") - return states - }, - deleteID: "bucketkey2etag2" + lastModified.String(), - expected: []state{ - { - ID: stateID("bucket", "key1", "etag1", lastModified), - Bucket: "bucket", - Key: "key1", - Etag: "etag1", - ListPrefix: "listPrefix", - LastModified: lastModified, - }, - { - ID: stateID("bucket", "key3", "etag3", lastModified), - Bucket: "bucket", - Key: "key3", - Etag: "etag3", - ListPrefix: "listPrefix", - LastModified: lastModified, - }, - }, - }, - } - - for name, test := range tests { - test := test - t.Run(name, func(t *testing.T) { - states := test.states() - states.Delete(test.deleteID) - assert.Equal(t, test.expected, states.GetStates()) + isProcessed := states.IsProcessed(test.state) + assert.Equal(t, test.expectedIsProcessed, isProcessed) }) } } From c2c5fea524317e5724fc9114d3766ca42cf0fccd Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Mon, 29 Apr 2024 16:52:51 +0300 Subject: [PATCH 239/313] Fix cron description for Iron Bank validation (#39260) This commit fixes the schedule description for the Iron Bank validation and removes the old static schedule, now that we have a centralized scheduling job (#39254). Additionally, now that the job has been tested ([^1]) it enables slack alerts as well. [^1]: https://github.com/elastic/beats/pull/39255#issuecomment-2082368821 --- catalog-info.yaml | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index ae37200762b..bc22fbc905d 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1087,25 +1087,6 @@ spec: skip_intermediate_builds: false provider_settings: trigger_mode: none - # TODO uncomment out after https://github.com/elastic/ingest-dev/issues/3235 - # schedules: - # # TODO to be replaced with a generic scheduler similar to https://github.com/elastic/logstash/pull/15705 - # Daily run of ironbank validation / main: - # branch: main - # cronline: 30 02 * * * - # message: Daily trigger of IronBank validation on main - # Daily run of ironbank validation / 8.14: - # branch: 8.14 - # cronline: 30 02 * * * - # message: Daily trigger of IronBank validation on 8.14 - # Daily run of ironbank validation / 8.13: - # branch: 8.13 - # cronline: 30 02 * * * - # message: Daily trigger of IronBank validation on 8.13 - # Daily run of ironbank validation / 7.17: - # branch: 7.17 - # cronline: 30 02 * * * - # message: Daily trigger of IronBank validation on 7.17 teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ @@ -1139,7 +1120,7 @@ spec: pipeline_file: ".buildkite/pipeline-scheduler.yml" maximum_timeout_in_minutes: 240 schedules: - Daily Snapshot DRA: + Daily run of Iron Bank validation: branch: main cronline: 30 02 * * * message: Daily trigger of Iron Bank validation Pipeline per branch @@ -1149,8 +1130,7 @@ spec: provider_settings: trigger_mode: none env: - # TODO enable slack notifications when it's tested - ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'false' + ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' SLACK_NOTIFICATIONS_CHANNEL: '#ingest-notifications' SLACK_NOTIFICATIONS_ON_SUCCESS: 'false' teams: From 37816dd7150029c8cf99ed9ed962db25d8c3e519 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Mon, 29 Apr 2024 17:00:58 +0300 Subject: [PATCH 240/313] Update the Beats packaging pipeline settings (#39263) This commits changes the settings of the packaging pipeline to make it execute only on the selected branches which currently is only main. Signed-off-by: Alexandros Sapranidis --- catalog-info.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/catalog-info.yaml b/catalog-info.yaml index bc22fbc905d..0e5a5d864d3 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1046,6 +1046,10 @@ spec: cancel_intermediate_builds: false skip_intermediate_builds: false provider_settings: + build_branches: false + build_pull_request_forks: false + build_pull_requests: false + build_tags: false trigger_mode: code env: ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' From 11998672ace0b4e652bfe2edb437bc851880ec7f Mon Sep 17 00:00:00 2001 From: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:46:01 -0400 Subject: [PATCH 241/313] Mark add_docker-metadata process as unsupported in packetbeat (#39241) * Mark add_docker-metadata process as unsupported in packetbeat * Update libbeat/processors/add_docker_metadata/docs/add_docker_metadata.asciidoc --- .../add_docker_metadata/docs/add_docker_metadata.asciidoc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libbeat/processors/add_docker_metadata/docs/add_docker_metadata.asciidoc b/libbeat/processors/add_docker_metadata/docs/add_docker_metadata.asciidoc index 53292667f13..61658210173 100644 --- a/libbeat/processors/add_docker_metadata/docs/add_docker_metadata.asciidoc +++ b/libbeat/processors/add_docker_metadata/docs/add_docker_metadata.asciidoc @@ -5,6 +5,11 @@ add_docker_metadata ++++ +ifeval::["{beatname_lc}"=="packetbeat"] +There is currently extremely limited capability for using {beatname_lc} to monitor and coexist with containers, for example Docker, Podman, or Kubernetes. Using the `add_docker_metadata` processor with {beatname_lc} is not recommended nor supported. +endif::[] + +ifeval::["{beatname_lc}"!="packetbeat"] The `add_docker_metadata` processor annotates each event with relevant metadata from Docker containers. At startup it detects a docker environment and caches the metadata. The events are annotated with Docker metadata, only if a valid configuration @@ -88,3 +93,4 @@ forget metadata for a container, 60s by default. `labels.dedot`:: (Optional) Default to be false. If set to true, replace dots in labels with `_`. +endif::[] \ No newline at end of file From 59421bb12602eab337cee0fe6e689262cba89763 Mon Sep 17 00:00:00 2001 From: Tiago Queiroz Date: Mon, 29 Apr 2024 20:24:21 +0200 Subject: [PATCH 242/313] Document havester_limit for Filestream input and fix typo (#39244) This commit documents `harvester_limit` for the filestream input and replaces `close_*` by the correct key `close.on_state_change.*`. --- .../input-filestream-file-options.asciidoc | 24 +++++++++++++++++++ .../docs/inputs/input-filestream.asciidoc | 5 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/filebeat/docs/inputs/input-filestream-file-options.asciidoc b/filebeat/docs/inputs/input-filestream-file-options.asciidoc index 47a8c819d9e..5436d3863dc 100644 --- a/filebeat/docs/inputs/input-filestream-file-options.asciidoc +++ b/filebeat/docs/inputs/input-filestream-file-options.asciidoc @@ -517,6 +517,30 @@ less than or equal to `prospector.scanner.check_interval` If `backoff.max` needs to be higher, it is recommended to close the file handler instead and let {beatname_uc} pick up the file again. +[float] +[id="{beatname_lc}-input-{type}-harvester-limit"] +===== `harvester_limit` + +The `harvester_limit` option limits the number of harvesters that are started in +parallel for one input. This directly relates to the maximum number of file +handlers that are opened. The default for `harvester_limit` is 0, which means +there is no limit. This configuration is useful if the number of files to be +harvested exceeds the open file handler limit of the operating system. + +Setting a limit on the number of harvesters means that potentially not all files +are opened in parallel. Therefore we recommended that you use this option in +combination with the `close.on_state_change.*` options to make sure +harvesters are stopped more often so that new files can be picked up. + +Currently if a new harvester can be started again, the harvester is picked +randomly. This means it's possible that the harvester for a file that was just +closed and then updated again might be started instead of the harvester for a +file that hasn't been harvested for a longer period of time. + +This configuration option applies per input. You can use this option to +indirectly set higher priorities on certain inputs by assigning a higher +limit of harvesters. + [float] ===== `file_identity` diff --git a/filebeat/docs/inputs/input-filestream.asciidoc b/filebeat/docs/inputs/input-filestream.asciidoc index 47d1b24a8e8..54283d6cce7 100644 --- a/filebeat/docs/inputs/input-filestream.asciidoc +++ b/filebeat/docs/inputs/input-filestream.asciidoc @@ -11,8 +11,9 @@ Use the `filestream` input to read lines from active log files. It is the new, improved alternative to the `log` input. It comes with various improvements to the existing input: -1. Checking of `close_*` options happens out of band. Thus, if an output is blocked, -{beatname_uc} can close the reader and avoid keeping too many files open. +1. Checking of `close.on_state_change.*` options happens out of +band. Thus, if an output is blocked, {beatname_uc} can close the +reader and avoid keeping too many files open. 2. Detailed metrics are available for all files that match the `paths` configuration regardless of the `harvester_limit`. This way, you can keep track of all files, From 54fb91ed4ee4a697ed3c5cd6a08c5d6671b6f73e Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:20:14 -0400 Subject: [PATCH 243/313] chore: Update snapshot.yml (#39268) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index a031c2184e5..b531cf78a51 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-053650c4-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-81021969-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-053650c4-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-81021969-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-053650c4-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-81021969-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 81fc73e634c8f8b49d00c0cc3afc378039a1438e Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Mon, 29 Apr 2024 22:48:15 +0200 Subject: [PATCH 244/313] Fix Azure Monitor support for multiple aggregation types (#39204) * Add aggregation type to the MetricRegistry key The MetricRegistry wasn't using the aggregation type in the cache key, returning the wrong answer to the 'needs update?' question. * Handle multiple aggregation types Restores support for multiple aggregation types for the same metric name. Adding tests for the known use cases so we don't miss this feature again in future updates. --- CHANGELOG.next.asciidoc | 1 + x-pack/metricbeat/module/azure/azure_test.go | 39 +++++ x-pack/metricbeat/module/azure/client_test.go | 156 ++++++++++++++++++ x-pack/metricbeat/module/azure/data.go | 103 ++++++++---- x-pack/metricbeat/module/azure/data_test.go | 107 +++++++++++- .../module/azure/metric_registry.go | 9 +- .../module/azure/metric_registry_test.go | 138 +++++++++++++++- .../metricbeat/module/azure/mock_service.go | 2 +- .../module/azure/service_interface.go | 13 +- 9 files changed, 527 insertions(+), 41 deletions(-) create mode 100644 x-pack/metricbeat/module/azure/azure_test.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index c10e5eb08fa..f57b7100077 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -159,6 +159,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix fields not being parsed correctly in postgresql/database {issue}25301[25301] {pull}37720[37720] - rabbitmq/queue - Change the mapping type of `rabbitmq.queue.consumers.utilisation.pct` to `scaled_float` from `long` because the values fall within the range of `[0.0, 1.0]`. Previously, conversion to integer resulted in reporting either `0` or `1`. - Fix timeout caused by the retrival of which indices are hidden {pull}39165[39165] +- Fix Azure Monitor support for multiple aggregation types {issue}39192[39192] {pull}39204[39204] *Osquerybeat* diff --git a/x-pack/metricbeat/module/azure/azure_test.go b/x-pack/metricbeat/module/azure/azure_test.go new file mode 100644 index 00000000000..c3d67525ddb --- /dev/null +++ b/x-pack/metricbeat/module/azure/azure_test.go @@ -0,0 +1,39 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package azure + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGroupMetricsDefinitionsByResourceId(t *testing.T) { + + t.Run("Group metrics definitions by resource ID", func(t *testing.T) { + metrics := []Metric{ + { + ResourceId: "resource-1", + Namespace: "namespace-1", + Names: []string{"metric-1"}, + }, + { + ResourceId: "resource-1", + Namespace: "namespace-1", + Names: []string{"metric-2"}, + }, + { + ResourceId: "resource-1", + Namespace: "namespace-1", + Names: []string{"metric-3"}, + }, + } + + metricsByResourceId := groupMetricsDefinitionsByResourceId(metrics) + + assert.Equal(t, 1, len(metricsByResourceId)) + assert.Equal(t, 3, len(metricsByResourceId["resource-1"])) + }) +} diff --git a/x-pack/metricbeat/module/azure/client_test.go b/x-pack/metricbeat/module/azure/client_test.go index 79b1742ded0..c23326ac82b 100644 --- a/x-pack/metricbeat/module/azure/client_test.go +++ b/x-pack/metricbeat/module/azure/client_test.go @@ -9,10 +9,12 @@ import ( "testing" "time" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" ) var ( @@ -35,6 +37,7 @@ var ( }, }}}, } + countUnit = armmonitor.MetricUnit("Count") ) func mockMapResourceMetrics(client *Client, resources []*armresources.GenericResourceExpanded, resourceConfig ResourceConfig) ([]Metric, error) { @@ -112,4 +115,157 @@ func TestGetMetricValues(t *testing.T) { assert.Equal(t, len(client.ResourceConfigurations.Metrics[0].Values), 0) m.AssertExpectations(t) }) + + t.Run("multiple aggregation types", func(t *testing.T) { + client := NewMockClient() + referenceTime := time.Now().UTC() + client.ResourceConfigurations = ResourceConfiguration{ + Metrics: []Metric{ + { + Namespace: "Microsoft.EventHub/Namespaces", + Names: []string{"ActiveConnections"}, + Aggregations: "Maximum,Minimum,Average", + TimeGrain: "PT1M", + }, + }, + } + + m := &MockService{} + m.On( + "GetMetricValues", + mock.Anything, + mock.Anything, + mock.Anything, + mock.Anything, + mock.Anything, + mock.Anything, + mock.Anything, + ).Return( + []armmonitor.Metric{{ + ID: to.Ptr("test"), + Name: &armmonitor.LocalizableString{ + Value: to.Ptr("ActiveConnections"), + LocalizedValue: to.Ptr("ActiveConnections"), + }, + Timeseries: []*armmonitor.TimeSeriesElement{{ + Data: []*armmonitor.MetricValue{{ + Average: to.Ptr(1.0), + Maximum: to.Ptr(2.0), + Minimum: to.Ptr(3.0), + TimeStamp: to.Ptr(time.Now()), + }}, + }}, + Type: to.Ptr("Microsoft.Insights/metrics"), + Unit: &countUnit, + DisplayDescription: to.Ptr("Total Active Connections for Microsoft.EventHub."), + ErrorCode: to.Ptr("Success"), + }}, + "PT1M", + nil, + ) + + client.AzureMonitorService = m + mr := MockReporterV2{} + + metricValues := client.GetMetricValues(referenceTime, client.ResourceConfigurations.Metrics, &mr) + + require.Equal(t, len(metricValues), 1) + require.Equal(t, len(metricValues[0].Values), 1) + + assert.Equal(t, *metricValues[0].Values[0].avg, 1.0) + assert.Equal(t, *metricValues[0].Values[0].max, 2.0) + assert.Equal(t, *metricValues[0].Values[0].min, 3.0) + + require.Equal(t, len(client.ResourceConfigurations.Metrics[0].Values), 1) + + m.AssertExpectations(t) + }) + + t.Run("single aggregation types", func(t *testing.T) { + client := NewMockClient() + referenceTime := time.Now().UTC() + timestamp := time.Now().UTC() + client.ResourceConfigurations = ResourceConfiguration{ + Metrics: []Metric{ + { + Namespace: "Microsoft.EventHub/Namespaces", + Names: []string{"ActiveConnections"}, + Aggregations: "Maximum", + TimeGrain: "PT1M", + }, { + Namespace: "Microsoft.EventHub/Namespaces", + Names: []string{"ActiveConnections"}, + Aggregations: "Minimum", + TimeGrain: "PT1M", + }, { + Namespace: "Microsoft.EventHub/Namespaces", + Names: []string{"ActiveConnections"}, + Aggregations: "Average", + TimeGrain: "PT1M", + }, + }, + } + + m := &MockService{} + + x := []struct { + aggregation string + data []*armmonitor.MetricValue + }{ + {aggregation: "Maximum", data: []*armmonitor.MetricValue{{Maximum: to.Ptr(3.0), TimeStamp: to.Ptr(timestamp)}}}, + {aggregation: "Minimum", data: []*armmonitor.MetricValue{{Minimum: to.Ptr(1.0), TimeStamp: to.Ptr(timestamp)}}}, + {aggregation: "Average", data: []*armmonitor.MetricValue{{Average: to.Ptr(2.0), TimeStamp: to.Ptr(timestamp)}}}, + } + + for _, v := range x { + m.On( + "GetMetricValues", + mock.Anything, + mock.Anything, + mock.Anything, + mock.Anything, + mock.Anything, + v.aggregation, + mock.Anything, + ).Return( + []armmonitor.Metric{{ + ID: to.Ptr("test"), + Name: &armmonitor.LocalizableString{ + Value: to.Ptr("ActiveConnections"), + LocalizedValue: to.Ptr("ActiveConnections"), + }, + Timeseries: []*armmonitor.TimeSeriesElement{{ + Data: v.data, + }}, + Type: to.Ptr("Microsoft.Insights/metrics"), + Unit: &countUnit, + DisplayDescription: to.Ptr("Total Active Connections for Microsoft.EventHub."), + ErrorCode: to.Ptr("Success"), + }}, + "PT1M", + nil, + ).Once() + } + + client.AzureMonitorService = m + mr := MockReporterV2{} + + metricValues := client.GetMetricValues(referenceTime, client.ResourceConfigurations.Metrics, &mr) + + require.Equal(t, 3, len(metricValues)) + + require.Equal(t, 1, len(metricValues[0].Values)) + require.Equal(t, 1, len(metricValues[1].Values)) + require.Equal(t, 1, len(metricValues[2].Values)) + + require.NotNil(t, metricValues[0].Values[0].max, "max value is nil") + require.NotNil(t, metricValues[1].Values[0].min, "min value is nil") + require.NotNil(t, metricValues[2].Values[0].avg, "avg value is nil") + + assert.Equal(t, *metricValues[0].Values[0].max, 3.0) + assert.Equal(t, *metricValues[1].Values[0].min, 1.0) + assert.Equal(t, *metricValues[2].Values[0].avg, 2.0) + + m.AssertExpectations(t) + }) } diff --git a/x-pack/metricbeat/module/azure/data.go b/x-pack/metricbeat/module/azure/data.go index c46aee9da24..b2fffb40426 100644 --- a/x-pack/metricbeat/module/azure/data.go +++ b/x-pack/metricbeat/module/azure/data.go @@ -133,41 +133,8 @@ func mapToKeyValuePoints(metrics []Metric) []KeyValuePoint { var points []KeyValuePoint for _, metric := range metrics { for _, value := range metric.Values { - point := KeyValuePoint{ - Timestamp: value.timestamp, - Dimensions: mapstr.M{}, - } - metricName := managePropertyName(value.name) - switch { - case value.min != nil: - point.Key = fmt.Sprintf("%s.%s", metricName, "min") - point.Value = value.min - case value.max != nil: - point.Key = fmt.Sprintf("%s.%s", metricName, "max") - point.Value = value.max - case value.avg != nil: - point.Key = fmt.Sprintf("%s.%s", metricName, "avg") - point.Value = value.avg - case value.total != nil: - point.Key = fmt.Sprintf("%s.%s", metricName, "total") - point.Value = value.total - case value.count != nil: - point.Key = fmt.Sprintf("%s.%s", metricName, "count") - point.Value = value.count - } - - point.Namespace = metric.Namespace - point.ResourceId = metric.ResourceId - point.ResourceSubId = metric.ResourceSubId - point.TimeGrain = metric.TimeGrain - - // The number of dimensions in the metric definition and the - // number of dimensions in the metric values should be the same. - // - // But, since definitions and values are retrieved from different - // API endpoints, we need to make sure that we don't panic if the - // number of dimensions is different. + dimensions := mapstr.M{} if len(metric.Dimensions) == len(value.dimensions) { // Take the dimension name from the metric definition and the // dimension value from the metric value. @@ -180,11 +147,75 @@ func mapToKeyValuePoints(metrics []Metric) []KeyValuePoint { // Dimensions from metric definition and metric value are // not guaranteed to be in the same order, so we need to // find by name the right value for each dimension. - _, _ = point.Dimensions.Put(dim.Name, getDimensionValue(dim.Name, value.dimensions)) + // _, _ = point.Dimensions.Put(dim.Name, getDimensionValue(dim.Name, value.dimensions)) + _, _ = dimensions.Put(dim.Name, getDimensionValue(dim.Name, value.dimensions)) } } - points = append(points, point) + if value.min != nil { + points = append(points, KeyValuePoint{ + Key: fmt.Sprintf("%s.%s", metricName, "min"), + Value: value.min, + Namespace: metric.Namespace, + ResourceId: metric.ResourceId, + ResourceSubId: metric.ResourceSubId, + TimeGrain: metric.TimeGrain, + Dimensions: dimensions, + Timestamp: value.timestamp, + }) + } + + if value.max != nil { + points = append(points, KeyValuePoint{ + Key: fmt.Sprintf("%s.%s", metricName, "max"), + Value: value.max, + Namespace: metric.Namespace, + ResourceId: metric.ResourceId, + ResourceSubId: metric.ResourceSubId, + TimeGrain: metric.TimeGrain, + Dimensions: dimensions, + Timestamp: value.timestamp, + }) + } + + if value.avg != nil { + points = append(points, KeyValuePoint{ + Key: fmt.Sprintf("%s.%s", metricName, "avg"), + Value: value.avg, + Namespace: metric.Namespace, + ResourceId: metric.ResourceId, + ResourceSubId: metric.ResourceSubId, + TimeGrain: metric.TimeGrain, + Dimensions: dimensions, + Timestamp: value.timestamp, + }) + } + + if value.total != nil { + points = append(points, KeyValuePoint{ + Key: fmt.Sprintf("%s.%s", metricName, "total"), + Value: value.total, + Namespace: metric.Namespace, + ResourceId: metric.ResourceId, + ResourceSubId: metric.ResourceSubId, + TimeGrain: metric.TimeGrain, + Dimensions: dimensions, + Timestamp: value.timestamp, + }) + } + + if value.count != nil { + points = append(points, KeyValuePoint{ + Key: fmt.Sprintf("%s.%s", metricName, "count"), + Value: value.count, + Namespace: metric.Namespace, + ResourceId: metric.ResourceId, + ResourceSubId: metric.ResourceSubId, + TimeGrain: metric.TimeGrain, + Dimensions: dimensions, + Timestamp: value.timestamp, + }) + } } } diff --git a/x-pack/metricbeat/module/azure/data_test.go b/x-pack/metricbeat/module/azure/data_test.go index 85b781ed64e..1519f78982d 100644 --- a/x-pack/metricbeat/module/azure/data_test.go +++ b/x-pack/metricbeat/module/azure/data_test.go @@ -62,7 +62,37 @@ func TestMapToKeyValuePoints(t *testing.T) { resourceSubId := "test" timeGrain := "PT1M" - t.Run("test aggregation types", func(t *testing.T) { + t.Run("test single aggregation type (single config)", func(t *testing.T) { + + metrics := []Metric{{ + Namespace: namespace, + Names: []string{"test"}, + Aggregations: "min", + Values: []MetricValue{{name: metricName, min: &minValue, timestamp: timestamp}}, + TimeGrain: timeGrain, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + }} + + actual := mapToKeyValuePoints(metrics) + + expected := []KeyValuePoint{ + { + Key: fmt.Sprintf("%s.%s", metricName, "min"), + Value: &minValue, + Namespace: namespace, + TimeGrain: timeGrain, + Timestamp: timestamp, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + Dimensions: map[string]interface{}{}, + }, + } + + assert.Equal(t, expected, actual) + }) + + t.Run("test single aggregation types (multiple configs)", func(t *testing.T) { metrics := []Metric{{ Namespace: namespace, @@ -161,4 +191,79 @@ func TestMapToKeyValuePoints(t *testing.T) { assert.Equal(t, expected, actual) }) + + t.Run("test multiple aggregation types (multiple configs)", func(t *testing.T) { + metrics := []Metric{{ + Namespace: namespace, + Names: []string{"test"}, + Aggregations: "Minimum,Maximum,Average,Total,Count", + Values: []MetricValue{ + {name: metricName, min: &minValue, timestamp: timestamp}, + {name: metricName, max: &maxValue, timestamp: timestamp}, + {name: metricName, avg: &avgValue, timestamp: timestamp}, + {name: metricName, total: &totalValue, timestamp: timestamp}, + {name: metricName, count: &countValue, timestamp: timestamp}, + }, + TimeGrain: timeGrain, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + }} + + actual := mapToKeyValuePoints(metrics) + + expected := []KeyValuePoint{ + { + Key: fmt.Sprintf("%s.%s", metricName, "min"), + Value: &minValue, + Namespace: namespace, + TimeGrain: timeGrain, + Timestamp: timestamp, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + Dimensions: map[string]interface{}{}, + }, + { + Key: fmt.Sprintf("%s.%s", metricName, "max"), + Value: &maxValue, + Namespace: namespace, + TimeGrain: timeGrain, + Timestamp: timestamp, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + Dimensions: map[string]interface{}{}, + }, + { + Key: fmt.Sprintf("%s.%s", metricName, "avg"), + Value: &avgValue, + Namespace: namespace, + TimeGrain: timeGrain, + Timestamp: timestamp, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + Dimensions: map[string]interface{}{}, + }, + { + Key: fmt.Sprintf("%s.%s", metricName, "total"), + Value: &totalValue, + Namespace: namespace, + TimeGrain: timeGrain, + Timestamp: timestamp, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + Dimensions: map[string]interface{}{}, + }, + { + Key: fmt.Sprintf("%s.%s", metricName, "count"), + Value: &countValue, + Namespace: namespace, + TimeGrain: timeGrain, + Timestamp: timestamp, + ResourceId: resourceId, + ResourceSubId: resourceSubId, + Dimensions: map[string]interface{}{}, + }, + } + + assert.Equal(t, expected, actual) + }) } diff --git a/x-pack/metricbeat/module/azure/metric_registry.go b/x-pack/metricbeat/module/azure/metric_registry.go index cdaa9496b5d..c127701c996 100644 --- a/x-pack/metricbeat/module/azure/metric_registry.go +++ b/x-pack/metricbeat/module/azure/metric_registry.go @@ -5,6 +5,7 @@ package azure import ( + "fmt" "strings" "time" @@ -118,8 +119,14 @@ func (m *MetricRegistry) buildMetricKey(metric Metric) string { keyComponents := []string{ metric.Namespace, metric.ResourceId, + metric.Aggregations, + metric.TimeGrain, + strings.Join(metric.Names, ","), + } + + for _, dim := range metric.Dimensions { + keyComponents = append(keyComponents, fmt.Sprintf("%s=%s", dim.Name, dim.Value)) } - keyComponents = append(keyComponents, metric.Names...) return strings.Join(keyComponents, ",") } diff --git a/x-pack/metricbeat/module/azure/metric_registry_test.go b/x-pack/metricbeat/module/azure/metric_registry_test.go index a0ecdc84b85..63984aa6b59 100644 --- a/x-pack/metricbeat/module/azure/metric_registry_test.go +++ b/x-pack/metricbeat/module/azure/metric_registry_test.go @@ -13,7 +13,7 @@ import ( "github.com/elastic/elastic-agent-libs/logp" ) -func TestNewMetricRegistry(t *testing.T) { +func TestMetricRegistry(t *testing.T) { logger := logp.NewLogger("test azure monitor") t.Run("Collect metrics with a regular 5 minutes period", func(t *testing.T) { @@ -90,4 +90,140 @@ func TestNewMetricRegistry(t *testing.T) { assert.True(t, needsUpdate, "metric should not need update") }) + + t.Run("Metrics with different aggregation types", func(t *testing.T) { + metricRegistry := NewMetricRegistry(logger) + + referenceTime := time.Now().UTC() + lastCollectionAt := referenceTime.Add(-time.Minute * 10) + + metric1 := Metric{ + ResourceId: "test", + Namespace: "test", + Aggregations: "Maximum", + } + metric2 := Metric{ + ResourceId: "test", + Namespace: "test", + Aggregations: "Minimum", + } + + metricCollectionInfo := MetricCollectionInfo{ + timeGrain: "PT5M", + timestamp: lastCollectionAt, + } + + // Update metrics collection info for previous collection + metricRegistry.Update(metric1, metricCollectionInfo) + metricRegistry.Update(metric2, metricCollectionInfo) + + // Update metric info for metric1 + metricRegistry.Update(metric1, MetricCollectionInfo{ + timeGrain: "PT5M", + timestamp: referenceTime, + }) + + // Check if metrics need update + metric1NeedsUpdate := metricRegistry.NeedsUpdate(referenceTime, metric1) + metric2NeedsUpdate := metricRegistry.NeedsUpdate(referenceTime, metric2) + + assert.False(t, metric1NeedsUpdate, "metric should not need update") + assert.True(t, metric2NeedsUpdate, "metric should need update") + }) + + t.Run("Metrics with different dimensions", func(t *testing.T) { + metricRegistry := NewMetricRegistry(logger) + + referenceTime := time.Now().UTC() + lastCollectionAt := referenceTime.Add(-time.Minute * 10) + + metric1 := Metric{ + ResourceId: "resource-id-1", + Namespace: "namespace-1", + Names: []string{"metric-name-1"}, + Dimensions: []Dimension{ + {Name: "dimension-1", Value: "*"}, + }, + TimeGrain: "PT1M", + } + metric2 := Metric{ + ResourceId: "resource-id-1", + Namespace: "namespace-1", + Names: []string{"metric-name-1"}, + Dimensions: []Dimension{ + {Name: "dimension-2", Value: "*"}, + }, + TimeGrain: "PT1M", + } + + metricCollectionInfo := MetricCollectionInfo{ + timeGrain: "PT1M", + timestamp: lastCollectionAt, + } + + // Update metrics collection info for previous collection + metricRegistry.Update(metric1, metricCollectionInfo) + metricRegistry.Update(metric2, metricCollectionInfo) + + // Update metric info for metric1 + metricRegistry.Update(metric1, MetricCollectionInfo{ + timeGrain: "PT1M", + timestamp: referenceTime, + }) + + // Check if metrics need update + metric1NeedsUpdate := metricRegistry.NeedsUpdate(referenceTime, metric1) + metric2NeedsUpdate := metricRegistry.NeedsUpdate(referenceTime, metric2) + + assert.False(t, metric1NeedsUpdate, "metric should not need update") + assert.True(t, metric2NeedsUpdate, "metric should need update") + }) + + t.Run("Metrics with different timegrain", func(t *testing.T) { + metricRegistry := NewMetricRegistry(logger) + + referenceTime := time.Now().UTC() + lastCollectionAt := referenceTime.Add(-time.Minute * 10) + + metric1 := Metric{ + ResourceId: "resource-id-1", + Namespace: "namespace-1", + Names: []string{"metric-name-1"}, + Dimensions: []Dimension{ + {Name: "dimension-1", Value: "*"}, + }, + TimeGrain: "PT1M", + } + metric2 := Metric{ + ResourceId: "resource-id-1", + Namespace: "namespace-1", + Names: []string{"metric-name-1"}, + Dimensions: []Dimension{ + {Name: "dimension-1", Value: "*"}, + }, + TimeGrain: "PT5M", + } + + metricCollectionInfo := MetricCollectionInfo{ + timeGrain: "PT1M", + timestamp: lastCollectionAt, + } + + // Update metrics collection info for previous collection + metricRegistry.Update(metric1, metricCollectionInfo) + metricRegistry.Update(metric2, metricCollectionInfo) + + // Update metric info for metric1 + metricRegistry.Update(metric1, MetricCollectionInfo{ + timeGrain: "PT1M", + timestamp: referenceTime, + }) + + // Check if metrics need update + metric1NeedsUpdate := metricRegistry.NeedsUpdate(referenceTime, metric1) + metric2NeedsUpdate := metricRegistry.NeedsUpdate(referenceTime, metric2) + + assert.False(t, metric1NeedsUpdate, "metric should not need update") + assert.True(t, metric2NeedsUpdate, "metric should need update") + }) } diff --git a/x-pack/metricbeat/module/azure/mock_service.go b/x-pack/metricbeat/module/azure/mock_service.go index 9626952fa6d..293adc7c9a7 100644 --- a/x-pack/metricbeat/module/azure/mock_service.go +++ b/x-pack/metricbeat/module/azure/mock_service.go @@ -43,7 +43,7 @@ func (client *MockService) GetMetricNamespaces(resourceId string) (armmonitor.Me // GetMetricValues is a mock function for the azure service func (client *MockService) GetMetricValues(resourceId string, namespace string, timegrain string, timespan string, metricNames []string, aggregations string, filter string) ([]armmonitor.Metric, string, error) { - args := client.Called(resourceId, namespace) + args := client.Called(resourceId, namespace, timegrain, timespan, metricNames, aggregations, filter) return args.Get(0).([]armmonitor.Metric), args.String(1), args.Error(2) } diff --git a/x-pack/metricbeat/module/azure/service_interface.go b/x-pack/metricbeat/module/azure/service_interface.go index cb524c7f6ea..75ae48d3d6e 100644 --- a/x-pack/metricbeat/module/azure/service_interface.go +++ b/x-pack/metricbeat/module/azure/service_interface.go @@ -15,5 +15,16 @@ type Service interface { GetResourceDefinitions(id []string, group []string, rType string, query string) ([]*armresources.GenericResourceExpanded, error) GetMetricDefinitionsWithRetry(resourceId string, namespace string) (armmonitor.MetricDefinitionCollection, error) GetMetricNamespaces(resourceId string) (armmonitor.MetricNamespaceCollection, error) - GetMetricValues(resourceId string, namespace string, timegrain string, timespan string, metricNames []string, aggregations string, filter string) ([]armmonitor.Metric, string, error) + // GetMetricValues returns the metric values for the given resource ID, namespace, timegrain, timespan, metricNames, aggregations and filter. + // + // If the timegrain is empty, the default timegrain for the metric is used and returned. + GetMetricValues( + resourceId string, // resourceId is the ID of the resource to query (e.g. "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}") + namespace string, // namespace is the metric namespace to query (e.g. "Microsoft.Compute/virtualMachines") + timegrain string, // timegrain is the timegrain to use for the metric query (e.g. "PT1M"); if empty, returns the default timegrain for the metric. + timespan string, // timespan is the time interval to query (e.g. 2024-04-29T14:03:00Z/2024-04-29T14:04:00Z) + metricNames []string, // metricNames is the list of metric names to query (e.g. ["ServiceApiLatency", "Availability"]) + aggregations string, // aggregations is the comma-separated list of aggregations to use for the metric query (e.g. "Average,Maximum,Minimum") + filter string, // filter is the filter to query for dimensions (e.g. "ActivityType eq '*' AND ActivityName eq '*' AND StatusCode eq '*' AND StatusCodeClass eq '*'") + ) ([]armmonitor.Metric, string, error) } From 6bb2a82b684922419561fd3a935ddd0573fcb762 Mon Sep 17 00:00:00 2001 From: Yi Song <166383463+goodfirm@users.noreply.github.com> Date: Tue, 30 Apr 2024 15:23:31 +0800 Subject: [PATCH 245/313] chore: fix function names in comment (#38800) Signed-off-by: goodfirm Co-authored-by: Pierre HILBERT --- dev-tools/mage/kubernetes/kuberemote.go | 2 +- filebeat/input/filestream/environment_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-tools/mage/kubernetes/kuberemote.go b/dev-tools/mage/kubernetes/kuberemote.go index 8e9d9897d44..e3062f00d1a 100644 --- a/dev-tools/mage/kubernetes/kuberemote.go +++ b/dev-tools/mage/kubernetes/kuberemote.go @@ -250,7 +250,7 @@ func (r *KubeRemote) waitForPod(wait time.Duration, condition watchtools.Conditi return nil, err } -// portFoward runs the port forwarding so SSH rsync can be ran into the pod. +// portForward runs the port forwarding so SSH rsync can be ran into the pod. func (r *KubeRemote) portForward(ports []string, stopChannel, readyChannel chan struct{}, stdout, stderr io.Writer) (*portforward.PortForwarder, error) { roundTripper, upgrader, err := spdy.RoundTripperFor(r.cfg) if err != nil { diff --git a/filebeat/input/filestream/environment_test.go b/filebeat/input/filestream/environment_test.go index 7c3c8ccd4d3..88163258938 100644 --- a/filebeat/input/filestream/environment_test.go +++ b/filebeat/input/filestream/environment_test.go @@ -448,7 +448,7 @@ func (e *inputTestingEnvironment) waitUntilHarvesterIsDone() { } } -// requireEventReceived requires that the list of messages has made it into the output. +// requireEventsReceived requires that the list of messages has made it into the output. func (e *inputTestingEnvironment) requireEventsReceived(events []string) { foundEvents := make([]bool, len(events)) checkedEventCount := 0 From cfffc1ce552565fa1ae7c8d13abd04fca3d4fa7e Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Tue, 30 Apr 2024 10:27:44 +0200 Subject: [PATCH 246/313] DRA: Disable summary reports for dry runs (#39240) --- .buildkite/scripts/dra.sh | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.buildkite/scripts/dra.sh b/.buildkite/scripts/dra.sh index ec9d523bf3c..4b6a94ffa2c 100755 --- a/.buildkite/scripts/dra.sh +++ b/.buildkite/scripts/dra.sh @@ -70,11 +70,13 @@ docker run --rm \ --artifact-set "main" \ ${DRY_RUN} | tee rm-output.txt -# extract the summary URL from a release manager output line like: -# Report summary-18.22.0.html can be found at https://artifacts-staging.elastic.co/beats/18.22.0-ABCDEFGH/summary-18.22.0.html -SUMMARY_URL=$(grep -E '^Report summary-.* can be found at ' rm-output.txt | grep -oP 'https://\S+' | awk '{print $1}') -rm rm-output.txt +if [[ "$DRY_RUN" != "--dry-run" ]]; then + # extract the summary URL from a release manager output line like: + # Report summary-18.22.0.html can be found at https://artifacts-staging.elastic.co/beats/18.22.0-ABCDEFGH/summary-18.22.0.html + SUMMARY_URL=$(grep -E '^Report summary-.* can be found at ' rm-output.txt | grep -oP 'https://\S+' | awk '{print $1}') + rm rm-output.txt -# and make it easily clickable as a Builkite annotation -printf "**Summary link:** [${SUMMARY_URL}](${SUMMARY_URL})\n" | buildkite-agent annotate --style=success + # and make it easily clickable as a Builkite annotation + printf "**Summary link:** [${SUMMARY_URL}](${SUMMARY_URL})\n" | buildkite-agent annotate --style=success +fi From d275f2768c0be2b8c2d53c9649a3f263d8b18d64 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 30 Apr 2024 11:36:42 +0300 Subject: [PATCH 247/313] Ensure ordered DRA artifacts (#39270) As things are now we allow parallel builds on the packaging pipeline, which could result in out of order artifacts (depending on which one takes longer to finish). This commit implements two "queues" (snapshot/staging) to ensure ordered builds of DRA artifacts. Relates https://github.com/elastic/ingest-dev/issues/3095 --- .buildkite/packaging.pipeline.yml | 41 ++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index a7fdabb2268..1dd2aaf60b0 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -12,11 +12,32 @@ env: PLATFORMS_ARM: "linux/arm64" steps: + # we use concurrency gates (https://buildkite.com/blog/concurrency-gates) + # to implement two FIFO queues for DRA-snapshot and DRA-staging + # this prevents parallel builds and possibility of publishing out of order DRA artifacts if the first job takes longer than the second + + - name: Start of concurrency group for DRA Snapshot + if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" + command: echo "--> Start of concurrency gate dra-snapshot" + concurrency_group: "dra-gate-snapshot" + concurrency: 1 + key: start-gate-snapshot + + - name: Start of concurrency group for DRA Staging + if: build.branch =~ /^\d+\.\d+$$/ + command: echo "--> Start of concurrency gate dra-staging" + concurrency_group: "dra-gate-staging" + concurrency: 1 + key: start-gate-staging + + - wait + - group: Beats dashboards key: dashboards steps: - label: Snapshot dashboards if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" + depends_on: start-gate-snapshot key: dashboards-snapshot # TODO: container with go and make agents: @@ -34,6 +55,7 @@ steps: - label: Staging dashboards if: build.branch =~ /^\d+\.\d+$$/ + depends_on: start-gate-staging key: dashboards-staging # TODO: container with go and make agents: @@ -52,6 +74,7 @@ steps: - group: Packaging snapshot if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" key: packaging-snapshot + depends_on: start-gate-snapshot steps: - label: "SNAPSHOT: {{matrix}}" env: @@ -123,8 +146,8 @@ steps: - build/distributions/**/* - group: Packaging Staging - key: packaging-staging + depends_on: start-gate-staging ## Only for release if: build.branch =~ /^\d+\.\d+$$/ steps: @@ -207,6 +230,7 @@ steps: env: DRA_WORKFLOW: snapshot depends_on: + - start-gate-snapshot - packaging-snapshot - dashboards-snapshot command: | @@ -225,6 +249,7 @@ steps: env: DRA_WORKFLOW: staging depends_on: + - start-gate-staging - packaging-staging - dashboards-staging command: | @@ -235,3 +260,17 @@ steps: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + + - wait + + - command: echo "End of concurrency gate dra-snapshot <--" + if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" + concurrency_group: "dra-gate-snapshot" + concurrency: 1 + key: end-gate-snapshot + + - command: echo "End of concurrency gate dra-staging <--" + if: build.branch =~ /^\d+\.\d+$$/ + concurrency_group: "dra-gate-staging" + concurrency: 1 + key: end-gate-staging From b7e3fa27ce564e6d0b8ae9b12c17fcb860ef4cc8 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 30 Apr 2024 12:11:23 +0300 Subject: [PATCH 248/313] Fix auto triggered packaging builds (#39291) PR#39263 introduced a bug causing on packaging DRA builds to be triggered. This commit fixes the issue and also allowed triggered builds for `8.14` --- catalog-info.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index 0e5a5d864d3..59a89559a79 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1040,16 +1040,19 @@ spec: spec: repository: elastic/beats pipeline_file: ".buildkite/packaging.pipeline.yml" - branch_configuration: "main" + branch_configuration: "main 8.14" # TODO enable after packaging backports for release branches # branch_configuration: "main 8.* 7.17" cancel_intermediate_builds: false skip_intermediate_builds: false provider_settings: - build_branches: false + build_branches: true build_pull_request_forks: false build_pull_requests: false build_tags: false + filter_condition: >- + build.branch =~ /^[0-9]+\.[0-9]+$$/ || build.branch == "main" + filter_enabled: true trigger_mode: code env: ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' From d3eaed50b3156664a701f36eda74f2f5e1b3f3a4 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 30 Apr 2024 12:19:13 +0300 Subject: [PATCH 249/313] Add timeout for DRA builds (#39293) --- catalog-info.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/catalog-info.yaml b/catalog-info.yaml index 59a89559a79..420d9c1c16a 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1045,6 +1045,7 @@ spec: # branch_configuration: "main 8.* 7.17" cancel_intermediate_builds: false skip_intermediate_builds: false + maximum_timeout_in_minutes: 60 provider_settings: build_branches: true build_pull_request_forks: false From 85c9d146ebc454fc18819aed430334ce1b78f7ce Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 30 Apr 2024 14:41:35 +0300 Subject: [PATCH 250/313] Fix missing docker staging DRA artifacts (#39297) The DRA staging release is failing because the Buildkite step isn't capturing the right artifacts. This commit fixes the issue by adjusting the artifact_paths to match the other steps. --- .buildkite/packaging.pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index 1dd2aaf60b0..36cbed29fcf 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -192,7 +192,7 @@ steps: imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" artifact_paths: - - build/distributions/** + - build/distributions/**/* matrix: - auditbeat - filebeat From 40c68cf2e16d2c4fe9db903822430736b73d88b8 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 30 Apr 2024 14:53:42 +0300 Subject: [PATCH 251/313] Branch specific concurrency gates (#39298) PR #39293 introduced one concurrency queue per staging/snapshot but this slows down unnecessarily concurrent DRA builds for main and other release branches. This commit makes the concurrency gates (additionally) specific per branch. --- .buildkite/packaging.pipeline.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index 36cbed29fcf..c01428100ec 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -19,14 +19,14 @@ steps: - name: Start of concurrency group for DRA Snapshot if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" command: echo "--> Start of concurrency gate dra-snapshot" - concurrency_group: "dra-gate-snapshot" + concurrency_group: "dra-gate-snapshot-$BUILDKITE_BRANCH" concurrency: 1 key: start-gate-snapshot - name: Start of concurrency group for DRA Staging if: build.branch =~ /^\d+\.\d+$$/ command: echo "--> Start of concurrency gate dra-staging" - concurrency_group: "dra-gate-staging" + concurrency_group: "dra-gate-staging-$BUILDKITE_BRANCH" concurrency: 1 key: start-gate-staging @@ -265,12 +265,12 @@ steps: - command: echo "End of concurrency gate dra-snapshot <--" if: build.branch =~ /^\d+\.\d+$$/ || build.branch == 'main' || build.env('RUN_SNAPSHOT') == "true" - concurrency_group: "dra-gate-snapshot" + concurrency_group: "dra-gate-snapshot-$BUILDKITE_BRANCH" concurrency: 1 key: end-gate-snapshot - command: echo "End of concurrency gate dra-staging <--" if: build.branch =~ /^\d+\.\d+$$/ - concurrency_group: "dra-gate-staging" + concurrency_group: "dra-gate-staging-$BUILDKITE_BRANCH" concurrency: 1 key: end-gate-staging From f6bad74ef6edec0a3d0221d875651aaed75f95d6 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Tue, 30 Apr 2024 14:58:10 +0300 Subject: [PATCH 252/313] Fix the annotating for snapshot and staging (#39299) * Fix the annotating for snapshot and staging This commit adds the `--append` flag to the buildkite-annotate so that when it is called by the snapshot and staging steps, it will not overwrite the other annotation. Signed-off-by: Alexandros Sapranidis --- .buildkite/scripts/dra.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/scripts/dra.sh b/.buildkite/scripts/dra.sh index 4b6a94ffa2c..5ce6e5884b9 100755 --- a/.buildkite/scripts/dra.sh +++ b/.buildkite/scripts/dra.sh @@ -78,5 +78,5 @@ if [[ "$DRY_RUN" != "--dry-run" ]]; then rm rm-output.txt # and make it easily clickable as a Builkite annotation - printf "**Summary link:** [${SUMMARY_URL}](${SUMMARY_URL})\n" | buildkite-agent annotate --style=success + printf "**${DRA_WORKFLOW} summary link:** [${SUMMARY_URL}](${SUMMARY_URL})\n" | buildkite-agent annotate --style=success --append fi From 2fa1123b8f1fb2eef6a96b23ccb7d460cbb6163b Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Tue, 30 Apr 2024 12:39:19 -0400 Subject: [PATCH 253/313] Cleanup: organizing code in awss3/input.go (#38958) Cleanups in `x-pack/filebeat/input/awss3/input.go`. - Split up the two main configuration cases, SQS queues versus bare S3 buckets, into two explicit helper functions (`s3Input.runQueueReader` and `s3Input.runS3Poller`) instead of handling them inline in `s3Input.Run`. - Simplify region-detection logic in `getRegionFromQueueURL` (`regionMismatchError` is no longer needed) - Rename `createS3Lister` to `createS3Poller` (since it creates an `s3Poller`) This is only a cleanup / reorganization, it does not change any behavior. --- x-pack/filebeat/input/awss3/input.go | 155 +++++++++++----------- x-pack/filebeat/input/awss3/input_test.go | 4 +- 2 files changed, 76 insertions(+), 83 deletions(-) diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index bb4a5c15bda..51e8c9808ed 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -102,72 +102,85 @@ func (in *s3Input) Run(inputContext v2.Context, pipeline beat.Pipeline) error { ctx := v2.GoContextFromCanceler(inputContext.Cancelation) if in.config.QueueURL != "" { - regionName, err := getRegionFromQueueURL(in.config.QueueURL, in.config.AWSConfig.Endpoint, in.config.RegionName) - if err != nil && in.config.RegionName == "" { - return fmt.Errorf("failed to get AWS region from queue_url: %w", err) - } - var warn regionMismatchError - if errors.As(err, &warn) { - // Warn of mismatch, but go ahead with configured region name. - inputContext.Logger.Warnf("%v: using %q", err, regionName) - } - in.awsConfig.Region = regionName + return in.runQueueReader(ctx, inputContext, pipeline) + } - // Create SQS receiver and S3 notification processor. - receiver, err := in.createSQSReceiver(inputContext, pipeline) - if err != nil { - return fmt.Errorf("failed to initialize sqs receiver: %w", err) - } - defer receiver.metrics.Close() + if in.config.BucketARN != "" || in.config.NonAWSBucketName != "" { + return in.runS3Poller(ctx, inputContext, pipeline) + } - // Poll metrics periodically in the background - go pollSqsWaitingMetric(ctx, receiver) + return nil +} - if err := receiver.Receive(ctx); err != nil { - return err - } +func (in *s3Input) runQueueReader( + ctx context.Context, + inputContext v2.Context, + pipeline beat.Pipeline, +) error { + configRegion := in.config.RegionName + urlRegion, err := getRegionFromQueueURL(in.config.QueueURL, in.config.AWSConfig.Endpoint) + if err != nil && configRegion == "" { + // Only report an error if we don't have a configured region + // to fall back on. + return fmt.Errorf("failed to get AWS region from queue_url: %w", err) + } else if configRegion != "" && configRegion != urlRegion { + inputContext.Logger.Warnf("configured region disagrees with queue_url region (%q != %q): using %q", configRegion, urlRegion, urlRegion) } - if in.config.BucketARN != "" || in.config.NonAWSBucketName != "" { - // Create client for publishing events and receive notification of their ACKs. - client, err := pipeline.ConnectWith(beat.ClientConfig{ - EventListener: awscommon.NewEventACKHandler(), - Processing: beat.ProcessingConfig{ - // This input only produces events with basic types so normalization - // is not required. - EventNormalization: boolPtr(false), - }, - }) - if err != nil { - return fmt.Errorf("failed to create pipeline client: %w", err) - } - defer client.Close() + in.awsConfig.Region = urlRegion - // Connect to the registry and create our states lookup - persistentStore, err := in.store.Access() - if err != nil { - return fmt.Errorf("can not access persistent store: %w", err) - } - defer persistentStore.Close() + // Create SQS receiver and S3 notification processor. + receiver, err := in.createSQSReceiver(inputContext, pipeline) + if err != nil { + return fmt.Errorf("failed to initialize sqs receiver: %w", err) + } + defer receiver.metrics.Close() - states, err := newStates(inputContext, persistentStore) - if err != nil { - return fmt.Errorf("can not start persistent store: %w", err) - } + // Poll metrics periodically in the background + go pollSqsWaitingMetric(ctx, receiver) - // Create S3 receiver and S3 notification processor. - poller, err := in.createS3Lister(inputContext, ctx, client, states) - if err != nil { - return fmt.Errorf("failed to initialize s3 poller: %w", err) - } - defer poller.metrics.Close() + return receiver.Receive(ctx) +} - if err := poller.Poll(ctx); err != nil { - return err - } +func (in *s3Input) runS3Poller( + ctx context.Context, + inputContext v2.Context, + pipeline beat.Pipeline, +) error { + // Create client for publishing events and receive notification of their ACKs. + client, err := pipeline.ConnectWith(beat.ClientConfig{ + EventListener: awscommon.NewEventACKHandler(), + Processing: beat.ProcessingConfig{ + // This input only produces events with basic types so normalization + // is not required. + EventNormalization: boolPtr(false), + }, + }) + if err != nil { + return fmt.Errorf("failed to create pipeline client: %w", err) } + defer client.Close() - return nil + // Connect to the registry and create our states lookup + persistentStore, err := in.store.Access() + if err != nil { + return fmt.Errorf("can not access persistent store: %w", err) + } + defer persistentStore.Close() + + states, err := newStates(inputContext, persistentStore) + if err != nil { + return fmt.Errorf("can not start persistent store: %w", err) + } + + // Create S3 receiver and S3 notification processor. + poller, err := in.createS3Poller(inputContext, ctx, client, states) + if err != nil { + return fmt.Errorf("failed to initialize s3 poller: %w", err) + } + defer poller.metrics.Close() + + return poller.Poll(ctx) } func (in *s3Input) createSQSReceiver(ctx v2.Context, pipeline beat.Pipeline) (*sqsReader, error) { @@ -212,8 +225,11 @@ func (in *s3Input) createSQSReceiver(ctx v2.Context, pipeline beat.Pipeline) (*s return nil, err } in.metrics = newInputMetrics(ctx.ID, nil, in.config.MaxNumberOfMessages) + s3EventHandlerFactory := newS3ObjectProcessorFactory(log.Named("s3"), in.metrics, s3API, fileSelectors, in.config.BackupConfig, in.config.MaxNumberOfMessages) + sqsMessageHandler := newSQSS3EventProcessor(log.Named("sqs_s3_event"), in.metrics, sqsAPI, script, in.config.VisibilityTimeout, in.config.SQSMaxReceiveCount, pipeline, s3EventHandlerFactory, in.config.MaxNumberOfMessages) + sqsReader := newSQSReader(log.Named("sqs"), in.metrics, sqsAPI, in.config.MaxNumberOfMessages, sqsMessageHandler) return sqsReader, nil @@ -227,7 +243,7 @@ func (n nonAWSBucketResolver) ResolveEndpoint(region string, options s3.Endpoint return awssdk.Endpoint{URL: n.endpoint, SigningRegion: region, HostnameImmutable: true, Source: awssdk.EndpointSourceCustom}, nil } -func (in *s3Input) createS3Lister(ctx v2.Context, cancelCtx context.Context, client beat.Client, states *states) (*s3Poller, error) { +func (in *s3Input) createS3Poller(ctx v2.Context, cancelCtx context.Context, client beat.Client, states *states) (*s3Poller, error) { var bucketName string var bucketID string if in.config.NonAWSBucketName != "" { @@ -310,7 +326,7 @@ func (in *s3Input) createS3Lister(ctx v2.Context, cancelCtx context.Context, cli var errBadQueueURL = errors.New("QueueURL is not in format: https://sqs.{REGION_ENDPOINT}.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME} or https://{VPC_ENDPOINT}.sqs.{REGION_ENDPOINT}.vpce.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME}") -func getRegionFromQueueURL(queueURL string, endpoint, defaultRegion string) (region string, err error) { +func getRegionFromQueueURL(queueURL, endpoint string) (string, error) { // get region from queueURL // Example for sqs queue: https://sqs.us-east-1.amazonaws.com/12345678912/test-s3-logs // Example for vpce: https://vpce-test.sqs.us-east-1.vpce.amazonaws.com/12345678912/sqs-queue @@ -323,11 +339,7 @@ func getRegionFromQueueURL(queueURL string, endpoint, defaultRegion string) (reg // check for sqs queue url if len(queueHostSplit) == 3 && queueHostSplit[0] == "sqs" { if queueHostSplit[2] == endpoint || (endpoint == "" && strings.HasPrefix(queueHostSplit[2], "amazonaws.")) { - region = queueHostSplit[1] - if defaultRegion != "" && region != defaultRegion { - return defaultRegion, regionMismatchError{queueURLRegion: region, defaultRegion: defaultRegion} - } - return region, nil + return queueHostSplit[1], nil } } @@ -335,30 +347,13 @@ func getRegionFromQueueURL(queueURL string, endpoint, defaultRegion string) (reg queueHostSplitVPC := strings.SplitN(u.Host, ".", 5) if len(queueHostSplitVPC) == 5 && queueHostSplitVPC[1] == "sqs" { if queueHostSplitVPC[4] == endpoint || (endpoint == "" && strings.HasPrefix(queueHostSplitVPC[4], "amazonaws.")) { - region = queueHostSplitVPC[2] - if defaultRegion != "" && region != defaultRegion { - return defaultRegion, regionMismatchError{queueURLRegion: region, defaultRegion: defaultRegion} - } - return region, nil + return queueHostSplitVPC[2], nil } } - - if defaultRegion != "" { - return defaultRegion, nil - } } return "", errBadQueueURL } -type regionMismatchError struct { - queueURLRegion string - defaultRegion string -} - -func (e regionMismatchError) Error() string { - return fmt.Sprintf("configured region disagrees with queue_url region: %q != %q", e.queueURLRegion, e.defaultRegion) -} - func getRegionForBucket(ctx context.Context, s3Client *s3.Client, bucketName string) (string, error) { getBucketLocationOutput, err := s3Client.GetBucketLocation(ctx, &s3.GetBucketLocationInput{ Bucket: awssdk.String(bucketName), diff --git a/x-pack/filebeat/input/awss3/input_test.go b/x-pack/filebeat/input/awss3/input_test.go index abc9f5c9a6a..0a3053f7f1b 100644 --- a/x-pack/filebeat/input/awss3/input_test.go +++ b/x-pack/filebeat/input/awss3/input_test.go @@ -54,7 +54,6 @@ func TestGetRegionFromQueueURL(t *testing.T) { name string queueURL string endpoint string - deflt string want string wantErr error }{ @@ -77,7 +76,6 @@ func TestGetRegionFromQueueURL(t *testing.T) { { name: "vpce_endpoint", queueURL: "https://vpce-test.sqs.us-east-2.vpce.amazonaws.com/12345678912/sqs-queue", - deflt: "", want: "us-east-2", }, { @@ -90,7 +88,7 @@ func TestGetRegionFromQueueURL(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - got, err := getRegionFromQueueURL(test.queueURL, test.endpoint, test.deflt) + got, err := getRegionFromQueueURL(test.queueURL, test.endpoint) if !sameError(err, test.wantErr) { t.Errorf("unexpected error: got:%v want:%v", err, test.wantErr) } From e2c652c2d38fa2a7d4b130ce2860cb0c0c98b87d Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 30 Apr 2024 20:10:34 +0300 Subject: [PATCH 254/313] Disable 8.14 DRA on Jenkins (#39322) This commit is complementing PR #39321 and is needed to disable the execution of 8.14 DRA packaging on Jenkins. --- .ci/jobs/packaging.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.ci/jobs/packaging.yml b/.ci/jobs/packaging.yml index 6d4b136a557..50cec32edd8 100644 --- a/.ci/jobs/packaging.yml +++ b/.ci/jobs/packaging.yml @@ -14,7 +14,7 @@ discover-pr-forks-trust: 'permission' discover-pr-origin: 'merge-current' discover-tags: true - head-filter-regex: '(7\.1[6789]|8\.\d+|PR-.*|v\d+\.\d+\.\d+)' + head-filter-regex: '(7\.1[6789]|8\.13|PR-.*|v8\.13\.\d+)' disable-pr-notifications: true notification-context: 'beats-packaging' repo: 'beats' @@ -28,11 +28,11 @@ ignore-tags-older-than: -1 ignore-tags-newer-than: 30 - named-branches: - - regex-name: - regex: '7\.1[6789]' + - exact-name: + name: '8.13' case-sensitive: true - regex-name: - regex: '8\.\d+' + regex: '7\.1[6789]' case-sensitive: true - change-request: ignore-target-only-changes: true From 8c48989a8498f29e8e4dfdcf9d8f6f8bba6fc285 Mon Sep 17 00:00:00 2001 From: Blake Rouse Date: Tue, 30 Apr 2024 13:12:30 -0400 Subject: [PATCH 255/313] Include metricbeat modules directory into agentbeat build. (#39278) --- metricbeat/scripts/mage/package.go | 14 +++++++------- x-pack/agentbeat/magefile.go | 20 ++++++++++++++++++-- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/metricbeat/scripts/mage/package.go b/metricbeat/scripts/mage/package.go index e206881dd3c..43e12652f4a 100644 --- a/metricbeat/scripts/mage/package.go +++ b/metricbeat/scripts/mage/package.go @@ -40,7 +40,7 @@ const ( // not supported. You must declare a dependency on either // PrepareModulePackagingOSS or PrepareModulePackagingXPack. func CustomizePackaging() { - mg.Deps(customizeLightModulesPackaging) + mg.Deps(CustomizeLightModulesPackaging) var ( modulesDTarget = "modules.d" @@ -104,7 +104,7 @@ func CustomizePackaging() { // PrepareModulePackagingOSS generates build/package/modules and // build/package/modules.d directories for use in packaging. func PrepareModulePackagingOSS() error { - err := prepareLightModulesPackaging("module") + err := PrepareLightModulesPackaging("module") if err != nil { return err } @@ -116,7 +116,7 @@ func PrepareModulePackagingOSS() error { // PrepareModulePackagingXPack generates build/package/modules and // build/package/modules.d directories for use in packaging. func PrepareModulePackagingXPack() error { - err := prepareLightModulesPackaging("module", devtools.OSSBeatDir("module")) + err := PrepareLightModulesPackaging("module", devtools.OSSBeatDir("module")) if err != nil { return err } @@ -201,8 +201,8 @@ func GenerateDirModulesD() error { return nil } -// customizeLightModulesPackaging customizes packaging to add light modules -func customizeLightModulesPackaging() error { +// CustomizeLightModulesPackaging customizes packaging to add light modules +func CustomizeLightModulesPackaging() error { var ( moduleTarget = "module" module = devtools.PackageFile{ @@ -225,8 +225,8 @@ func customizeLightModulesPackaging() error { return nil } -// prepareLightModulesPackaging generates light modules -func prepareLightModulesPackaging(paths ...string) error { +// PrepareLightModulesPackaging generates light modules +func PrepareLightModulesPackaging(paths ...string) error { err := devtools.Clean([]string{dirModulesGenerated}) if err != nil { return err diff --git a/x-pack/agentbeat/magefile.go b/x-pack/agentbeat/magefile.go index 874c79bf7a3..c7e6c561830 100644 --- a/x-pack/agentbeat/magefile.go +++ b/x-pack/agentbeat/magefile.go @@ -20,6 +20,7 @@ import ( devtools "github.com/elastic/beats/v7/dev-tools/mage" "github.com/elastic/beats/v7/dev-tools/mage/target/build" + metricbeat "github.com/elastic/beats/v7/metricbeat/scripts/mage" packetbeat "github.com/elastic/beats/v7/packetbeat/scripts/mage" osquerybeat "github.com/elastic/beats/v7/x-pack/osquerybeat/scripts/mage" @@ -112,11 +113,19 @@ func CrossBuildDeps() error { return callForBeat("crossBuildExt", "osquerybeat") } +// PrepareLightModules prepares the module packaging. +func PrepareLightModules() error { + return metricbeat.PrepareLightModulesPackaging( + filepath.Join("..", "metricbeat", "module"), // x-pack/metricbeat + filepath.Join("..", "..", "metricbeat", "module"), // metricbeat (oss) + ) +} + // Package packages the Beat for distribution. // Use SNAPSHOT=true to build snapshots. // Use PLATFORMS to control the target platforms. // Use VERSION_QUALIFIER to control the version qualifier. -func Package() { +func Package() error { start := time.Now() defer func() { fmt.Println("package ran for", time.Since(start)) }() @@ -126,7 +135,14 @@ func Package() { // Add osquery distro binaries, required for the osquerybeat subcommand. osquerybeat.CustomizePackaging() - mg.SerialDeps(Update, osquerybeat.FetchOsqueryDistros, CrossBuildDeps, CrossBuild, devtools.Package, TestPackages) + // Add metricbeat lightweight modules. + if err := metricbeat.CustomizeLightModulesPackaging(); err != nil { + return err + } + + mg.SerialDeps(Update, PrepareLightModules, osquerybeat.FetchOsqueryDistros, CrossBuildDeps, CrossBuild, devtools.Package, TestPackages) + + return nil } // TestPackages tests the generated packages (i.e. file modes, owners, groups). From 562e48efea1a93eca9087ca03781dfba60cca883 Mon Sep 17 00:00:00 2001 From: Alex K <8418476+fearful-symmetry@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:10:18 -0700 Subject: [PATCH 256/313] Add queue percentage to libbeat metrics (#39205) * add queue full percentage metric * newline * add div by zero check * change name * linter * fix gauge settings * linter... * change name * set percentage when we set queue max * change name * round numbers --- libbeat/monitoring/report/log/log.go | 66 ++++++++++++------------ libbeat/publisher/pipeline/monitoring.go | 29 +++++++++-- 2 files changed, 59 insertions(+), 36 deletions(-) diff --git a/libbeat/monitoring/report/log/log.go b/libbeat/monitoring/report/log/log.go index 886e207593a..e11e8228cf7 100644 --- a/libbeat/monitoring/report/log/log.go +++ b/libbeat/monitoring/report/log/log.go @@ -37,34 +37,36 @@ import ( // TODO: Replace this with a proper solution that uses the metric type from // where it is defined. See: https://github.com/elastic/beats/issues/5433 var gauges = map[string]bool{ - "libbeat.output.events.active": true, - "libbeat.pipeline.events.active": true, - "libbeat.pipeline.clients": true, - "libbeat.config.module.running": true, - "registrar.states.current": true, - "filebeat.events.active": true, - "filebeat.harvester.running": true, - "filebeat.harvester.open_files": true, - "beat.memstats.memory_total": true, - "beat.memstats.memory_alloc": true, - "beat.memstats.rss": true, - "beat.memstats.gc_next": true, - "beat.info.uptime.ms": true, - "beat.cgroup.memory.mem.usage.bytes": true, - "beat.cpu.user.ticks": true, - "beat.cpu.system.ticks": true, - "beat.cpu.total.value": true, - "beat.cpu.total.ticks": true, - "beat.handles.open": true, - "beat.handles.limit.hard": true, - "beat.handles.limit.soft": true, - "beat.runtime.goroutines": true, - "system.load.1": true, - "system.load.5": true, - "system.load.15": true, - "system.load.norm.1": true, - "system.load.norm.5": true, - "system.load.norm.15": true, + "libbeat.output.events.active": true, + "libbeat.pipeline.events.active": true, + "libbeat.pipeline.clients": true, + "libbeat.pipeline.queue.max_events": true, + "libbeat.pipeline.queue.filled.pct.events": true, + "libbeat.config.module.running": true, + "registrar.states.current": true, + "filebeat.events.active": true, + "filebeat.harvester.running": true, + "filebeat.harvester.open_files": true, + "beat.memstats.memory_total": true, + "beat.memstats.memory_alloc": true, + "beat.memstats.rss": true, + "beat.memstats.gc_next": true, + "beat.info.uptime.ms": true, + "beat.cgroup.memory.mem.usage.bytes": true, + "beat.cpu.user.ticks": true, + "beat.cpu.system.ticks": true, + "beat.cpu.total.value": true, + "beat.cpu.total.ticks": true, + "beat.handles.open": true, + "beat.handles.limit.hard": true, + "beat.handles.limit.soft": true, + "beat.runtime.goroutines": true, + "system.load.1": true, + "system.load.5": true, + "system.load.15": true, + "system.load.norm.1": true, + "system.load.norm.5": true, + "system.load.norm.15": true, } // isGauge returns true when the given metric key name represents a gauge value. @@ -249,16 +251,16 @@ func toKeyValuePairs(snaps map[string]monitoring.FlatSnapshot) []interface{} { for name, snap := range snaps { data := make(mapstr.M, snapshotLen(snap)) for k, v := range snap.Bools { - data.Put(k, v) //nolint:errcheck // All keys within the flat snapshot are unique and are for scalar values. + data.Put(k, v) } for k, v := range snap.Floats { - data.Put(k, v) //nolint:errcheck // All keys within the flat snapshot are unique and are for scalar values. + data.Put(k, v) } for k, v := range snap.Ints { - data.Put(k, v) //nolint:errcheck // All keys within the flat snapshot are unique and are for scalar values. + data.Put(k, v) } for k, v := range snap.Strings { - data.Put(k, v) //nolint:errcheck // All keys within the flat snapshot are unique and are for scalar values. + data.Put(k, v) } if len(data) > 0 { args = append(args, logp.Reflect(name, data)) diff --git a/libbeat/publisher/pipeline/monitoring.go b/libbeat/publisher/pipeline/monitoring.go index 69a21c2c71c..cda329e0963 100644 --- a/libbeat/publisher/pipeline/monitoring.go +++ b/libbeat/publisher/pipeline/monitoring.go @@ -17,7 +17,11 @@ package pipeline -import "github.com/elastic/elastic-agent-libs/monitoring" +import ( + "math" + + "github.com/elastic/elastic-agent-libs/monitoring" +) type observer interface { pipelineObserver @@ -67,8 +71,9 @@ type metricsObserverVars struct { activeEvents *monitoring.Uint // queue metrics - queueACKed *monitoring.Uint - queueMaxEvents *monitoring.Uint + queueACKed *monitoring.Uint + queueMaxEvents *monitoring.Uint + percentQueueFull *monitoring.Float } func newMetricsObserver(metrics *monitoring.Registry) *metricsObserver { @@ -92,7 +97,8 @@ func newMetricsObserver(metrics *monitoring.Registry) *metricsObserver { queueACKed: monitoring.NewUint(reg, "queue.acked"), queueMaxEvents: monitoring.NewUint(reg, "queue.max_events"), - activeEvents: monitoring.NewUint(reg, "events.active"), // Gauge + activeEvents: monitoring.NewUint(reg, "events.active"), // Gauge + percentQueueFull: monitoring.NewFloat(reg, "queue.filled.pct.events"), }, } } @@ -121,12 +127,24 @@ func (o *metricsObserver) clientClosed() { o.vars.clients.Dec() } func (o *metricsObserver) newEvent() { o.vars.events.Inc() o.vars.activeEvents.Inc() + o.setPercentageFull() +} + +// setPercentageFull is used interally to set the `queue.full` metric +func (o *metricsObserver) setPercentageFull() { + maxEvt := o.vars.queueMaxEvents.Get() + if maxEvt != 0 { + pct := float64(o.vars.activeEvents.Get()) / float64(maxEvt) + pctRound := math.Round(pct/0.0005) * 0.0005 + o.vars.percentQueueFull.Set(pctRound) + } } // (client) event is filtered out (on purpose or failed) func (o *metricsObserver) filteredEvent() { o.vars.filtered.Inc() o.vars.activeEvents.Dec() + o.setPercentageFull() } // (client) managed to push an event into the publisher pipeline @@ -138,6 +156,7 @@ func (o *metricsObserver) publishedEvent() { func (o *metricsObserver) failedPublishEvent() { o.vars.failed.Inc() o.vars.activeEvents.Dec() + o.setPercentageFull() } // @@ -148,11 +167,13 @@ func (o *metricsObserver) failedPublishEvent() { func (o *metricsObserver) queueACKed(n int) { o.vars.queueACKed.Add(uint64(n)) o.vars.activeEvents.Sub(uint64(n)) + o.setPercentageFull() } // (queue) maximum queue event capacity func (o *metricsObserver) queueMaxEvents(n int) { o.vars.queueMaxEvents.Set(uint64(n)) + o.setPercentageFull() } // From 5c684a81beb0f24f30339e442306c41fccb74f58 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:37:03 -0400 Subject: [PATCH 257/313] build(deps): bump github.com/elastic/elastic-agent-autodiscover from 0.6.8 to 0.6.14 (#39178) * build(deps): bump github.com/elastic/elastic-agent-autodiscover Bumps [github.com/elastic/elastic-agent-autodiscover](https://github.com/elastic/elastic-agent-autodiscover) from 0.6.8 to 0.6.14. - [Release notes](https://github.com/elastic/elastic-agent-autodiscover/releases) - [Changelog](https://github.com/elastic/elastic-agent-autodiscover/blob/main/CHANGELOG.md) - [Commits](https://github.com/elastic/elastic-agent-autodiscover/compare/v0.6.8...v0.6.14) --- updated-dependencies: - dependency-name: github.com/elastic/elastic-agent-autodiscover dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- NOTICE.txt | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index f060baf4098..951b7e7785c 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -12525,11 +12525,11 @@ various licenses: -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-autodiscover -Version: v0.6.13 +Version: v0.6.14 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-autodiscover@v0.6.13/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-autodiscover@v0.6.14/LICENSE: Apache License Version 2.0, January 2004 @@ -25433,11 +25433,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/net -Version: v0.21.0 +Version: v0.23.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/net@v0.21.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/net@v0.23.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. diff --git a/go.mod b/go.mod index 0805e9200c8..ad13afabd8d 100644 --- a/go.mod +++ b/go.mod @@ -154,7 +154,7 @@ require ( golang.org/x/crypto v0.21.0 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 golang.org/x/mod v0.14.0 - golang.org/x/net v0.21.0 + golang.org/x/net v0.23.0 golang.org/x/oauth2 v0.10.0 golang.org/x/sync v0.5.0 golang.org/x/sys v0.18.0 @@ -203,7 +203,7 @@ require ( github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5 github.com/elastic/bayeux v1.0.5 github.com/elastic/ebpfevents v0.6.0 - github.com/elastic/elastic-agent-autodiscover v0.6.13 + github.com/elastic/elastic-agent-autodiscover v0.6.14 github.com/elastic/elastic-agent-libs v0.7.5 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 diff --git a/go.sum b/go.sum index 57711b7a9fe..5c45bdee748 100644 --- a/go.sum +++ b/go.sum @@ -551,8 +551,8 @@ github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 h1:lnDkqiRFKm0rxdljqr github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3/go.mod h1:aPqzac6AYkipvp4hufTyMj5PDIphF3+At8zr7r51xjY= github.com/elastic/ebpfevents v0.6.0 h1:BrL3m7JFK7U6h2jkbk3xAWWs//IZnugCHEDds5u2v68= github.com/elastic/ebpfevents v0.6.0/go.mod h1:ESG9gw7N+n5yCCMgdg1IIJENKWSmX7+X0Fi9GUs9nvU= -github.com/elastic/elastic-agent-autodiscover v0.6.13 h1:zBeTxV+o2efEKntY+o6iMMNJ1AVjDXUqY3o6uzIkKaw= -github.com/elastic/elastic-agent-autodiscover v0.6.13/go.mod h1:7P6YVKxuBT0qE/VxuA87obwZUAEU0O44mCN3r4/6x8w= +github.com/elastic/elastic-agent-autodiscover v0.6.14 h1:0zJYNyv9GKTOiNqCHqEVboP+WioV73ia17Et+UlFbz8= +github.com/elastic/elastic-agent-autodiscover v0.6.14/go.mod h1:39/fHHlnyTK6oUNZfAhxJwBTVahO9tNasEIjzsxGMu8= github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= github.com/elastic/elastic-agent-client/v7 v7.8.1/go.mod h1:axl1nkdqc84YRFkeJGD9jExKNPUrOrzf3DFo2m653nY= github.com/elastic/elastic-agent-libs v0.7.5 h1:4UMqB3BREvhwecYTs/L23oQp1hs/XUkcunPlmTZn5yg= @@ -1960,8 +1960,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 33ba5f0d9a4493b78d337a22d53d32db390aaeea Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Tue, 30 Apr 2024 17:07:51 -0400 Subject: [PATCH 258/313] add change log for S3 fix (#39320) --- CHANGELOG.next.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f57b7100077..58ce7ac0f65 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -142,6 +142,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Updated Websocket input title to align with existing inputs {pull}39006[39006] - Restore netflow input on Windows {pull}39024[39024] - Upgrade azure-event-hubs-go and azure-storage-blob-go dependencies. {pull}38861[38861] +- Fix concurrency/error handling bugs in the AWS S3 input that could drop data and prevent ingestion of large buckets. {pull}39131[39131] *Heartbeat* From 50e173aebb6ef064adb3f1a97dcef52b998af55d Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:04:19 -0400 Subject: [PATCH 259/313] chore: Update snapshot.yml (#39319) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index b531cf78a51..bf5fdbc9545 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-81021969-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-bb66fa2a-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-81021969-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-bb66fa2a-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-81021969-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-bb66fa2a-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 246a8bc019676043f19510d57d86853fb5ebbe57 Mon Sep 17 00:00:00 2001 From: Andrew Kroh Date: Wed, 1 May 2024 08:43:14 -0400 Subject: [PATCH 260/313] .github/dependabot.yml - add elastic/ebpfevents (#38695) Add github.com/elastic/ebpfevents to the list of dependencies that are watched. Co-authored-by: Dimitrios Liappis --- .github/dependabot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 7fcaca8ac9e..bbd4255fd87 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -34,6 +34,7 @@ updates: - dependency-name: github.com/elastic/go-perf - dependency-name: github.com/elastic/go-seccomp-bpf - dependency-name: github.com/elastic/toutoumomoma + - dependency-name: github.com/elastic/ebpfevents ignore: # Skip github.com/elastic/mito because it requires documentation updates. - dependency-name: github.com/elastic/mito From 5011cccdc64c8ecd7ebca6dd10574af4a525fa98 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Wed, 1 May 2024 17:38:35 +0300 Subject: [PATCH 261/313] Allow everyone in Elastic to build Beats (#39335) This commit allows everyone under the Elastic org to be able to trigger builds in Buildkite. Signed-off-by: Alexandros Sapranidis --- catalog-info.yaml | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index 420d9c1c16a..f81d3a6df1a 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -61,7 +61,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -108,7 +108,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -155,7 +155,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -202,7 +202,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -249,7 +249,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -296,7 +296,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -343,7 +343,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -390,7 +390,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -436,7 +436,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -483,7 +483,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -530,7 +530,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -577,7 +577,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -624,7 +624,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -671,7 +671,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -706,7 +706,7 @@ spec: release-eng: access_level: BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json apiVersion: backstage.io/v1alpha1 @@ -788,7 +788,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -835,7 +835,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -882,7 +882,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -929,7 +929,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -976,7 +976,7 @@ spec: ingest-fp: access_level: MANAGE_BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -1015,7 +1015,7 @@ spec: release-eng: access_level: BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -1065,7 +1065,7 @@ spec: release-eng: access_level: BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -1101,7 +1101,7 @@ spec: release-eng: access_level: BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ --- # yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json @@ -1147,4 +1147,4 @@ spec: release-eng: access_level: BUILD_AND_READ everyone: - access_level: READ_ONLY + access_level: BUILD_AND_READ From 726f6e9bdec715f958ba47500e77feb5655b0a48 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Wed, 1 May 2024 18:04:21 +0300 Subject: [PATCH 262/313] More resilient DRA packaging (#39332) Occasionally packaging steps from the DRA pipeline may get stuck[^1]. This causes a breach of the global pipeline timeout (currently 1hr) and cancels the job. This commit increases the global timeout to 90min, adds one retry per step and limits the runtime per step to 40min (so that a single stuck step doesn't exhaust the entire global timeout). Finally, we shush slack notifications if the retry recovered the step. In a future PR we will consider also adding a daily DRA build to cover for cases where the retries didn't help and there were no subsequent commits to trigger a new build. [^1]: https://buildkite.com/elastic/beats-packaging-pipeline/builds/114 --- .buildkite/packaging.pipeline.yml | 32 +++++++++++++++++++++++++++++++ catalog-info.yaml | 3 ++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/.buildkite/packaging.pipeline.yml b/.buildkite/packaging.pipeline.yml index c01428100ec..5fd559f458d 100644 --- a/.buildkite/packaging.pipeline.yml +++ b/.buildkite/packaging.pipeline.yml @@ -44,6 +44,10 @@ steps: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 commands: - make build/distributions/dependencies.csv - make beats-dashboards @@ -62,6 +66,10 @@ steps: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 commands: - make build/distributions/dependencies.csv - make beats-dashboards @@ -86,6 +94,10 @@ steps: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 artifact_paths: - build/distributions/**/* matrix: @@ -116,6 +128,10 @@ steps: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 artifact_paths: - build/distributions/**/* matrix: @@ -142,6 +158,10 @@ steps: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "c2-standard-16" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 artifact_paths: - build/distributions/**/* @@ -161,6 +181,10 @@ steps: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 artifact_paths: - build/distributions/**/* matrix: @@ -191,6 +215,10 @@ steps: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 artifact_paths: - build/distributions/**/* matrix: @@ -217,6 +245,10 @@ steps: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "c2-standard-16" + timeout_in_minutes: 40 + retry: + automatic: + - limit: 1 artifact_paths: - build/distributions/**/* diff --git a/catalog-info.yaml b/catalog-info.yaml index f81d3a6df1a..34d9e397ca3 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1045,7 +1045,7 @@ spec: # branch_configuration: "main 8.* 7.17" cancel_intermediate_builds: false skip_intermediate_builds: false - maximum_timeout_in_minutes: 60 + maximum_timeout_in_minutes: 90 provider_settings: build_branches: true build_pull_request_forks: false @@ -1059,6 +1059,7 @@ spec: ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' SLACK_NOTIFICATIONS_CHANNEL: '#ingest-notifications' SLACK_NOTIFICATIONS_ON_SUCCESS: 'false' + SLACK_NOTIFICATIONS_SKIP_FOR_RETRIES: 'true' teams: ingest-fp: access_level: MANAGE_BUILD_AND_READ From 5a0293ec9f6222e8fbaddc49f5f56e32d1c09096 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Wed, 1 May 2024 16:01:57 -0400 Subject: [PATCH 263/313] chore: Update snapshot.yml (#39342) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index bf5fdbc9545..30002f9a255 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-bb66fa2a-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-aa640648-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-bb66fa2a-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-aa640648-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-bb66fa2a-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-aa640648-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 02ea29d8cf4078ce30c0acb507ffada149101a9b Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Wed, 1 May 2024 23:04:45 +0300 Subject: [PATCH 264/313] Enabling retries for Beats flaky tests (#39174) * added retries for auditbeat flaky tests * added retries for filebeat flaky tests * added retries * test exitcode * checged exit status code for retries * set larger timeout for pytestOpts * restored timeout for pytests --- .buildkite/auditbeat/auditbeat-pipeline.yml | 33 ++++++++++++++++ .buildkite/filebeat/filebeat-pipeline.yml | 33 ++++++++++++++++ .buildkite/heartbeat/heartbeat-pipeline.yml | 36 +++++++++++++++++ .buildkite/libbeat/pipeline.libbeat.yml | 18 +++++++++ .buildkite/metricbeat/pipeline.yml | 33 ++++++++++++++++ .buildkite/packetbeat/pipeline.packetbeat.yml | 30 ++++++++++++++ .buildkite/winlogbeat/pipeline.winlogbeat.yml | 18 +++++++++ .../x-pack/pipeline.xpack.auditbeat.yml | 30 ++++++++++++++ .../x-pack/pipeline.xpack.dockerlogbeat.yml | 6 +++ .buildkite/x-pack/pipeline.xpack.filebeat.yml | 33 ++++++++++++++++ .../x-pack/pipeline.xpack.heartbeat.yml | 29 +++++++++++++- .buildkite/x-pack/pipeline.xpack.libbeat.yml | 27 +++++++++++++ .../x-pack/pipeline.xpack.metricbeat.yml | 30 ++++++++++++++ .../x-pack/pipeline.xpack.osquerybeat.yml | 27 +++++++++++++ .../x-pack/pipeline.xpack.packetbeat.yml | 39 +++++++++++++++++++ .../x-pack/pipeline.xpack.winlogbeat.yml | 18 +++++++++ 16 files changed, 439 insertions(+), 1 deletion(-) diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index 801768c271e..ed19c7d9164 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -32,6 +32,9 @@ steps: command: | cd auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -47,6 +50,9 @@ steps: command: | cd auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -62,6 +68,9 @@ steps: command: | Set-Location -Path auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -79,6 +88,9 @@ steps: command: | Set-Location -Path auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -97,6 +109,9 @@ steps: make -C auditbeat crosscompile env: GOX_FLAGS: "-arch amd64" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -115,6 +130,9 @@ steps: set -euo pipefail cd auditbeat mage unitTest + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -133,6 +151,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd auditbeat mage unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -147,6 +168,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd auditbeat mage unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -164,6 +188,9 @@ steps: command: | Set-Location -Path auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -180,6 +207,9 @@ steps: command: | Set-Location -Path auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -196,6 +226,9 @@ steps: command: | Set-Location -Path auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 7eedd9d76fb..053e8dbec41 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -30,6 +30,9 @@ steps: command: | cd filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -45,6 +48,9 @@ steps: command: | cd filebeat mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -60,6 +66,9 @@ steps: command: | cd filebeat mage pythonIntegTest + retry: + automatic: + - limit: 3 agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" @@ -76,6 +85,9 @@ steps: command: | Set-Location -Path filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -94,6 +106,9 @@ steps: command: | Set-Location -Path filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -118,6 +133,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -136,6 +154,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -152,6 +173,9 @@ steps: command: | cd filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -172,6 +196,9 @@ steps: command: | Set-Location -Path filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -190,6 +217,9 @@ steps: command: | Set-Location -Path filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -208,6 +238,9 @@ steps: command: | Set-Location -Path filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index 8091b2eead1..cadbcec1eca 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -30,6 +30,9 @@ steps: command: | cd heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -45,6 +48,9 @@ steps: command: | cd heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -61,6 +67,9 @@ steps: command: | Set-Location -Path heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -78,6 +87,9 @@ steps: command: | Set-Location -Path heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -94,6 +106,9 @@ steps: command: | cd heartbeat mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -109,6 +124,9 @@ steps: command: | cd heartbeat mage pythonIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -130,6 +148,9 @@ steps: command: | cd heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -151,6 +172,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -168,6 +192,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -188,6 +215,9 @@ steps: command: | Set-Location -Path heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -205,6 +235,9 @@ steps: command: | Set-Location -Path heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -222,6 +255,9 @@ steps: command: | Set-Location -Path heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" diff --git a/.buildkite/libbeat/pipeline.libbeat.yml b/.buildkite/libbeat/pipeline.libbeat.yml index 040ad9b1d66..bc77712c330 100644 --- a/.buildkite/libbeat/pipeline.libbeat.yml +++ b/.buildkite/libbeat/pipeline.libbeat.yml @@ -21,6 +21,9 @@ steps: set -euo pipefail cd libbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -38,6 +41,9 @@ steps: set -euo pipefail cd libbeat mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -55,6 +61,9 @@ steps: set -euo pipefail cd libbeat mage pythonIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -72,6 +81,9 @@ steps: set -euo pipefail cd libbeat make crosscompile + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -89,6 +101,9 @@ steps: set -euo pipefail cd libbeat make STRESS_TEST_OPTIONS='-timeout=20m -race -v -parallel 1' GOTEST_OUTPUT_OPTIONS=' | go-junit-report > libbeat-stress-test.xml' stress-tests + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -108,6 +123,9 @@ steps: set -euo pipefail cd libbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index 1fb6bfcc237..d15212d2ef3 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -32,6 +32,9 @@ steps: - label: ":linux: Ubuntu Unit Tests" key: "mandatory-linux-unit-test" command: "cd metricbeat && mage build unitTest" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -62,6 +65,9 @@ steps: echo "~~~ Running tests" export KUBECONFIG="$$PWD/kubecfg" cd metricbeat && mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -92,6 +98,9 @@ steps: echo "~~~ Running tests" export KUBECONFIG="$$PWD/kubecfg" cd metricbeat && mage pythonIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -106,6 +115,9 @@ steps: - label: ":negative_squared_cross_mark: Cross compile" key: "mandatory-cross-compile" command: "make -C metricbeat crosscompile" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -122,6 +134,9 @@ steps: Set-Location -Path metricbeat mage build unitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -140,6 +155,9 @@ steps: Set-Location -Path metricbeat mage build unitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -162,6 +180,9 @@ steps: Set-Location -Path metricbeat mage build unitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -180,6 +201,9 @@ steps: Set-Location -Path metricbeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -198,6 +222,9 @@ steps: Set-Location -Path metricbeat mage build unitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -221,6 +248,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd metricbeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -238,6 +268,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd metricbeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index c0f5c1e1a73..d510107a89c 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -28,6 +28,9 @@ steps: command: | cd packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -43,6 +46,9 @@ steps: command: | cd packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" @@ -58,6 +64,9 @@ steps: command: | Set-Location -Path packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -75,6 +84,9 @@ steps: command: | Set-Location -Path packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -96,6 +108,9 @@ steps: command: | Set-Location -Path packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -114,6 +129,9 @@ steps: Set-Location -Path packetbeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -132,6 +150,9 @@ steps: Set-Location -Path packetbeat mage build unitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -156,6 +177,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -174,6 +198,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -188,6 +215,9 @@ steps: key: "linux-arm64-unit-tests-extended" command: "cd packetbeat && mage build unitTest" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/winlogbeat/pipeline.winlogbeat.yml b/.buildkite/winlogbeat/pipeline.winlogbeat.yml index c71858b45b0..ff332791349 100644 --- a/.buildkite/winlogbeat/pipeline.winlogbeat.yml +++ b/.buildkite/winlogbeat/pipeline.winlogbeat.yml @@ -24,6 +24,9 @@ steps: - label: ":ubuntu: Winlogbeat Crossccompile" key: "mandatory-cross-compile" command: "make -C winlogbeat crosscompile" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -40,6 +43,9 @@ steps: Set-Location -Path winlogbeat mage build unitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -58,6 +64,9 @@ steps: Set-Location -Path winlogbeat mage build unitTest key: "mandatory-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -76,6 +85,9 @@ steps: Set-Location -Path winlogbeat mage build unitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -99,6 +111,9 @@ steps: Set-Location -Path winlogbeat mage build unitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -117,6 +132,9 @@ steps: Set-Location -Path winlogbeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index 36fcb9bebd9..80c298c725d 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -36,6 +36,9 @@ steps: echo "~~~ Will run tests with env var MODULE=$$MODULE" cd x-pack/auditbeat mage update build test + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -52,6 +55,9 @@ steps: command: | cd x-pack/auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" @@ -68,6 +74,9 @@ steps: Set-Location -Path x-pack/auditbeat mage build unitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -86,6 +95,9 @@ steps: Set-Location -Path x-pack/auditbeat mage build unitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -108,6 +120,9 @@ steps: Set-Location -Path x-pack/auditbeat mage build unitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -126,6 +141,9 @@ steps: Set-Location -Path x-pack/auditbeat mage build unitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -144,6 +162,9 @@ steps: Set-Location -Path x-pack/auditbeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -167,6 +188,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd x-pack/auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -183,6 +207,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd x-pack/auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -201,6 +228,9 @@ steps: command: | cd x-pack/auditbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index 05aee81e4d8..a64f7851913 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -28,6 +28,9 @@ steps: - label: ":ubuntu: Xpack/Dockerlogbeat Ubuntu Unit Tests" key: "mandatory-linux-unit-test" command: "cd x-pack/dockerlogbeat && mage build unitTest" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -44,6 +47,9 @@ steps: command: "cd x-pack/dockerlogbeat && mage goIntegTest" env: MODULE: $MODULE + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index 795302bc2d9..b7e71e3c3c0 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -30,6 +30,9 @@ steps: command: | cd x-pack/filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -50,6 +53,9 @@ steps: defineModuleFromTheChangeSet x-pack/filebeat echo "~~~ Will run tests with env var MODULE=$$MODULE" cd x-pack/filebeat && mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -70,6 +76,9 @@ steps: defineModuleFromTheChangeSet x-pack/filebeat echo "~~~ Running tests with env var MODULE=$$MODULE" cd x-pack/filebeat && mage pythonIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -86,6 +95,9 @@ steps: Set-Location -Path x-pack/filebeat mage build unitTest key: "x-pack-filebeat-mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -104,6 +116,9 @@ steps: Set-Location -Path x-pack/filebeat mage build unitTest key: "x-pack-filebeat-mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -122,6 +137,9 @@ steps: command: | cd x-pack/filebeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" @@ -142,6 +160,9 @@ steps: Set-Location -Path x-pack/filebeat mage build unitTest key: "x-pack-filebeat-extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -160,6 +181,9 @@ steps: Set-Location -Path x-pack/filebeat mage build unitTest key: "x-pack-filebeat-extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -178,6 +202,9 @@ steps: Set-Location -Path x-pack/filebeat mage build unitTest key: "x-pack-filebeat-extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -200,6 +227,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd x-pack/filebeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -217,6 +247,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd x-pack/filebeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 107dfa65f1b..136706e698c 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -39,6 +39,9 @@ steps: echo "~~~ Running tests" cd x-pack/heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -59,6 +62,9 @@ steps: echo "~~~ Running tests" cd x-pack/heartbeat mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -76,6 +82,9 @@ steps: command: | Set-Location -Path x-pack/heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -95,6 +104,9 @@ steps: command: | Set-Location -Path x-pack/heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -118,6 +130,9 @@ steps: Set-Location -Path x-pack/heartbeat mage build test key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -136,6 +151,9 @@ steps: Set-Location -Path x-pack/heartbeat mage build test key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -153,6 +171,9 @@ steps: command: | Set-Location -Path x-pack/heartbeat mage build test + retry: + automatic: + - limit: 3 key: "extended-win-2019-unit-tests" agents: provider: "gcp" @@ -166,7 +187,7 @@ steps: notify: - github_commit_status: context: "x-pack/heartbeat: Windows 2019 Unit Tests" - + - group: "x-pack/heartbeat MacOS Extended Tests" key: "x-pack-heartbeat-extended-tests-macos" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ @@ -179,6 +200,9 @@ steps: installNodeJsDependencies cd x-pack/heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -197,6 +221,9 @@ steps: installNodeJsDependencies cd x-pack/heartbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.libbeat.yml b/.buildkite/x-pack/pipeline.xpack.libbeat.yml index 14316a3ecd7..6bf456f6d83 100644 --- a/.buildkite/x-pack/pipeline.xpack.libbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.libbeat.yml @@ -26,6 +26,9 @@ steps: command: | cd x-pack/libbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -42,6 +45,9 @@ steps: command: | cd x-pack/libbeat mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -58,6 +64,9 @@ steps: command: | cd x-pack/libbeat mage pythonIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -74,6 +83,9 @@ steps: Set-Location -Path x-pack/libbeat mage -w reader\etw build goUnitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -92,6 +104,9 @@ steps: Set-Location -Path x-pack/libbeat mage -w reader\etw build goUnitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -114,6 +129,9 @@ steps: Set-Location -Path x-pack/libbeat mage -w reader\etw build goUnitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -132,6 +150,9 @@ steps: Set-Location -Path x-pack/libbeat mage -w reader\etw build goUnitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -150,6 +171,9 @@ steps: Set-Location -Path x-pack/libbeat mage -w reader\etw build goUnitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -172,6 +196,9 @@ steps: command: | cd x-pack/libbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 317b9069c55..4c1c31521f9 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -30,6 +30,9 @@ steps: command: | cd x-pack/metricbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -50,6 +53,9 @@ steps: defineModuleFromTheChangeSet x-pack/metricbeat echo "~~~ Will run tests with env var MODULE=$$MODULE" cd x-pack/metricbeat && mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -70,6 +76,9 @@ steps: defineModuleFromTheChangeSet x-pack/metricbeat echo "~~~ Running tests with env var MODULE=$$MODULE" cd x-pack/metricbeat && mage pythonIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -86,6 +95,9 @@ steps: Set-Location -Path x-pack/metricbeat mage build unitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -104,6 +116,9 @@ steps: Set-Location -Path x-pack/metricbeat mage build unitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -126,6 +141,9 @@ steps: Set-Location -Path x-pack/metricbeat mage build unitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -144,6 +162,9 @@ steps: Set-Location -Path x-pack/metricbeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -162,6 +183,9 @@ steps: Set-Location -Path x-pack/metricbeat mage build unitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -185,6 +209,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd x-pack/metricbeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -202,6 +229,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd x-pack/metricbeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index 8c9137cb423..c8ecac79735 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -30,6 +30,9 @@ steps: command: | cd x-pack/osquerybeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -46,6 +49,9 @@ steps: command: | cd x-pack/osquerybeat mage goIntegTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -62,6 +68,9 @@ steps: Set-Location -Path x-pack/osquerybeat mage build unitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -80,6 +89,9 @@ steps: Set-Location -Path x-pack/osquerybeat mage build unitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -102,6 +114,9 @@ steps: Set-Location -Path x-pack/osquerybeat mage build unitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -120,6 +135,9 @@ steps: Set-Location -Path x-pack/osquerybeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -138,6 +156,9 @@ steps: Set-Location -Path x-pack/osquerybeat mage build unitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -160,6 +181,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd x-pack/osquerybeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -175,6 +199,9 @@ steps: set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd x-pack/osquerybeat && mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 77fdf2af848..1ab71c30d7d 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -29,6 +29,9 @@ steps: command: | cd x-pack/packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -45,6 +48,9 @@ steps: command: | cd x-pack/packetbeat mage systemTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -61,6 +67,9 @@ steps: command: | cd x-pack/packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" @@ -77,6 +86,9 @@ steps: Set-Location -Path x-pack/packetbeat mage build unitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -95,6 +107,9 @@ steps: Set-Location -Path x-pack/packetbeat mage build unitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -114,6 +129,9 @@ steps: command: | Set-Location -Path x-pack/packetbeat mage systemTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -136,6 +154,9 @@ steps: Set-Location -Path x-pack/packetbeat mage build unitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -154,6 +175,9 @@ steps: Set-Location -Path x-pack/packetbeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -172,6 +196,9 @@ steps: Set-Location -Path x-pack/packetbeat mage build unitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -191,6 +218,9 @@ steps: command: | Set-Location -Path x-pack/packetbeat mage systemTest + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -214,6 +244,9 @@ steps: cd x-pack/packetbeat mage build unitTest if: build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ + retry: + automatic: + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" @@ -236,6 +269,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd x-pack/packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -253,6 +289,9 @@ steps: source .buildkite/scripts/install_macos_tools.sh cd x-pack/packetbeat mage build unitTest + retry: + automatic: + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index c07e537adf0..c6b5a6f59fe 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -29,6 +29,9 @@ steps: mage build unitTest env: MODULE: $MODULE + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -47,6 +50,9 @@ steps: Set-Location -Path x-pack/winlogbeat mage build unitTest key: "mandatory-win-2016-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -65,6 +71,9 @@ steps: Set-Location -Path x-pack/winlogbeat mage build unitTest key: "mandatory-win-2022-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -88,6 +97,9 @@ steps: Set-Location -Path x-pack/winlogbeat mage build unitTest key: "extended-win-10-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -106,6 +118,9 @@ steps: Set-Location -Path x-pack/winlogbeat mage build unitTest key: "extended-win-11-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -124,6 +139,9 @@ steps: Set-Location -Path x-pack/winlogbeat mage build unitTest key: "extended-win-2019-unit-tests" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" From ffcd1814666645a5d7a644911ecf6e2b7d8db3f5 Mon Sep 17 00:00:00 2001 From: Michael Wolf Date: Wed, 1 May 2024 14:52:27 -0700 Subject: [PATCH 265/313] [Auditbeat][add_session_metadata processor] Fix more potential enrichment failures (#39243) Fix two more cases that could cause unenriched processes in the add_session_metadata processor. It was possible for auditd events to arrive before the ebpf event added processes to the process DB, now the enrichment will wait for the process to be inserted into the DB, if it's not already before enrichment is run on it. Also stop attempting to enrich failed syscall events, and modifying the DB based on these. Changes: With the ebpf backend, when an event is processed wait for a process to be added to the DB before enriching, if it's not already in the DB before the event is received. Do not enrich failed syscall auditd events. Since failed syscalls don't actually cause a process to be created, they should not be enriched, or inserted to the process Remove scrapeAncestors from DB. The intention of this was to fill in missed processes, but now processes should not be missed with epbf, and ineffective with procfs, as the process will most likely already be ended. This was causing DB inconsistancies when run on failed syscall events, and I haven't ever seen any cases where it's helpful now. --- CHANGELOG.next.asciidoc | 3 +- .../sessionmd/add_session_metadata.go | 19 ++++- .../processors/sessionmd/processdb/db.go | 39 ++------- .../provider/ebpf_provider/ebpf_provider.go | 80 ++++++++++++++++++- .../procfs_provider/procfs_provider.go | 21 ++--- .../procfs_provider/procfs_provider_test.go | 10 +-- .../processors/sessionmd/provider/provider.go | 2 +- 7 files changed, 114 insertions(+), 60 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 58ce7ac0f65..68eb43677ea 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -94,8 +94,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Auditbeat* - Set field types to correctly match ECS in sessionmd processor {issue}38955[38955] {pull}38994[38994] -- Keep process info on exited processes, to avoid failing to enrich events in sessionmd processor {pull}39173[39173] - +- Fix failing to enrich process events in sessionmd processor {issue}38955[38955] {pull}39173[39173] {pull}39243[39243] - Prevent scenario of losing children-related file events in a directory for recursive fsnotify backend of auditbeat file integrity module {pull}39133[39133] diff --git a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go index ff9fa54e556..766e9623b9e 100644 --- a/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go +++ b/x-pack/auditbeat/processors/sessionmd/add_session_metadata.go @@ -96,13 +96,24 @@ func New(cfg *cfg.C) (beat.Processor, error) { } func (p *addSessionMetadata) Run(ev *beat.Event) (*beat.Event, error) { - _, err := ev.GetValue(p.config.PIDField) + pi, err := ev.GetValue(p.config.PIDField) if err != nil { // Do not attempt to enrich events without PID; it's not a supported event return ev, nil //nolint:nilerr // Running on events without PID is expected } - err = p.provider.UpdateDB(ev) + // Do not enrich failed syscalls, as there was no actual process change related to it + v, err := ev.GetValue("auditd.result") + if err == nil && v == "fail" { + return ev, nil + } + + pid, err := pidToUInt32(pi) + if err != nil { + return ev, nil //nolint:nilerr // Running on events with a different PID type is not a processor error + } + + err = p.provider.UpdateDB(ev, pid) if err != nil { return ev, err } @@ -136,7 +147,9 @@ func (p *addSessionMetadata) enrich(ev *beat.Event) (*beat.Event, error) { fullProcess, err := p.db.GetProcess(pid) if err != nil { - return nil, fmt.Errorf("pid %v not found in db: %w", pid, err) + e := fmt.Errorf("pid %v not found in db: %w", pid, err) + p.logger.Errorf("%v", e) + return nil, e } processMap := fullProcess.ToMap() diff --git a/x-pack/auditbeat/processors/sessionmd/processdb/db.go b/x-pack/auditbeat/processors/sessionmd/processdb/db.go index 2c7c228e2c1..b8c624abe00 100644 --- a/x-pack/auditbeat/processors/sessionmd/processdb/db.go +++ b/x-pack/auditbeat/processors/sessionmd/processdb/db.go @@ -238,7 +238,6 @@ func (db *DB) InsertFork(fork types.ProcessForkEvent) { pid := fork.ChildPIDs.Tgid ppid := fork.ParentPIDs.Tgid - db.scrapeAncestors(db.processes[pid]) if entry, ok := db.processes[ppid]; ok { entry.PIDs = pidInfoFromProto(fork.ChildPIDs) @@ -282,7 +281,6 @@ func (db *DB) InsertExec(exec types.ProcessExecEvent) { } db.processes[exec.PIDs.Tgid] = proc - db.scrapeAncestors(proc) entryLeaderPID := db.evaluateEntryLeader(proc) if entryLeaderPID != nil { db.entryLeaderRelationships[exec.PIDs.Tgid] = *entryLeaderPID @@ -568,6 +566,14 @@ func setSameAsProcess(process *types.Process) { } } +func (db *DB) HasProcess(pid uint32) bool { + db.mutex.RLock() + defer db.mutex.RUnlock() + + _, ok := db.processes[pid] + return ok +} + func (db *DB) GetProcess(pid uint32) (types.Process, error) { db.mutex.RLock() defer db.mutex.RUnlock() @@ -585,8 +591,6 @@ func (db *DB) GetProcess(pid uint32) (types.Process, error) { fillParent(&ret, parent) break } - db.logger.Debugf("failed to find %d in DB (parent of %d), attempting to scrape", process.PIDs.Ppid, pid) - db.scrapeAncestors(process) } } @@ -596,8 +600,6 @@ func (db *DB) GetProcess(pid uint32) (types.Process, error) { fillGroupLeader(&ret, groupLeader) break } - db.logger.Debugf("failed to find %d in DB (group leader of %d), attempting to scrape", process.PIDs.Pgid, pid) - db.scrapeAncestors(process) } } @@ -607,8 +609,6 @@ func (db *DB) GetProcess(pid uint32) (types.Process, error) { fillSessionLeader(&ret, sessionLeader) break } - db.logger.Debugf("failed to find %d in DB (session leader of %d), attempting to scrape", process.PIDs.Sid, pid) - db.scrapeAncestors(process) } } @@ -712,29 +712,6 @@ func getTTYType(major uint16, minor uint16) TTYType { return TTYUnknown } -func (db *DB) scrapeAncestors(proc Process) { - for _, pid := range []uint32{proc.PIDs.Pgid, proc.PIDs.Ppid, proc.PIDs.Sid} { - if _, exists := db.processes[pid]; pid == 0 || exists { - continue - } - procInfo, err := db.procfs.GetProcess(pid) - if err != nil { - db.logger.Debugf("couldn't get %v from procfs: %w", pid, err) - continue - } - p := Process{ - PIDs: pidInfoFromProto(procInfo.PIDs), - Creds: credInfoFromProto(procInfo.Creds), - CTTY: ttyDevFromProto(procInfo.CTTY), - Argv: procInfo.Argv, - Cwd: procInfo.Cwd, - Env: procInfo.Env, - Filename: procInfo.Filename, - } - db.insertProcess(p) - } -} - func (db *DB) Close() { close(db.stopChan) } diff --git a/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go b/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go index 2b9b540e037..f1b8bae0b67 100644 --- a/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go +++ b/x-pack/auditbeat/processors/sessionmd/provider/ebpf_provider/ebpf_provider.go @@ -9,6 +9,7 @@ package ebpf_provider import ( "context" "fmt" + "time" "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/ebpf" @@ -151,7 +152,80 @@ func NewProvider(ctx context.Context, logger *logp.Logger, db *processdb.DB) (pr return &p, nil } -func (s prvdr) UpdateDB(ev *beat.Event) error { - // no-op for ebpf, DB is updated from pushed ebpf events - return nil +const ( + maxWaitLimit = 200 * time.Millisecond // Maximum time UpdateDB will wait for process + combinedWaitLimit = 2 * time.Second // Multiple UpdateDB calls will wait up to this amount within resetDuration + backoffDuration = 10 * time.Second // UpdateDB will stop waiting for processes for this time + resetDuration = 5 * time.Second // After this amount of times with no backoffs, the combinedWait will be reset +) + +var ( + combinedWait = 0 * time.Millisecond + inBackoff = false + backoffStart = time.Now() + since = time.Now() + backoffSkipped = 0 +) + +// With ebpf, process events are pushed to the DB by the above goroutine, so this doesn't actually update the DB. +// It does to try sync the processor and ebpf events, so that the process is in the process db before continuing. +// +// It's possible that the event to enrich arrives before the process is inserted into the DB. In that case, this +// will block continuing the enrichment until the process is seen (or the timeout is reached). +// +// If for some reason a lot of time has been spent waiting for missing processes, this also has a backoff timer during +// which it will continue without waiting for missing events to arrive, so the processor doesn't become overly backed-up +// waiting for these processes, at the cost of possibly not enriching some processes. +func (s prvdr) UpdateDB(ev *beat.Event, pid uint32) error { + if s.db.HasProcess(pid) { + return nil + } + + now := time.Now() + if inBackoff { + if now.Sub(backoffStart) > backoffDuration { + s.logger.Warnf("ended backoff, skipped %d processes", backoffSkipped) + inBackoff = false + combinedWait = 0 * time.Millisecond + } else { + backoffSkipped += 1 + return nil + } + } else { + if combinedWait > combinedWaitLimit { + s.logger.Warn("starting backoff") + inBackoff = true + backoffStart = now + backoffSkipped = 0 + return nil + } + // maintain a moving window of time for the delays we track + if now.Sub(since) > resetDuration { + since = now + combinedWait = 0 * time.Millisecond + } + } + + start := now + nextWait := 5 * time.Millisecond + for { + waited := time.Since(start) + if s.db.HasProcess(pid) { + s.logger.Debugf("got process that was missing after %v", waited) + combinedWait = combinedWait + waited + return nil + } + if waited >= maxWaitLimit { + e := fmt.Errorf("process %v was not seen after %v", pid, waited) + s.logger.Warnf("%w", e) + combinedWait = combinedWait + waited + return e + } + time.Sleep(nextWait) + if nextWait*2+waited > maxWaitLimit { + nextWait = maxWaitLimit - waited + } else { + nextWait = nextWait * 2 + } + } } diff --git a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go index 2f99dd72b1f..6525b860b6d 100644 --- a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go +++ b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider.go @@ -41,16 +41,7 @@ func NewProvider(ctx context.Context, logger *logp.Logger, db *processdb.DB, rea } // UpdateDB will update the process DB with process info from procfs or the event itself -func (s prvdr) UpdateDB(ev *beat.Event) error { - pi, err := ev.Fields.GetValue(s.pidField) - if err != nil { - return fmt.Errorf("event not supported, no pid") - } - pid, ok := pi.(int) - if !ok { - return fmt.Errorf("pid field not int") - } - +func (s prvdr) UpdateDB(ev *beat.Event, pid uint32) error { syscall, err := ev.GetValue(syscallField) if err != nil { return fmt.Errorf("event not supported, no syscall data") @@ -59,7 +50,7 @@ func (s prvdr) UpdateDB(ev *beat.Event) error { switch syscall { case "execveat", "execve": pe := types.ProcessExecEvent{} - proc_info, err := s.reader.GetProcess(uint32(pid)) + proc_info, err := s.reader.GetProcess(pid) if err == nil { pe.PIDs = proc_info.PIDs pe.Creds = proc_info.Creds @@ -72,7 +63,7 @@ func (s prvdr) UpdateDB(ev *beat.Event) error { s.logger.Warnf("couldn't get process info from proc for pid %v: %w", pid, err) // If process info couldn't be taken from procfs, populate with as much info as // possible from the event - pe.PIDs.Tgid = uint32(pid) + pe.PIDs.Tgid = pid var intr interface{} var i int var ok bool @@ -106,7 +97,7 @@ func (s prvdr) UpdateDB(ev *beat.Event) error { case "exit_group": pe := types.ProcessExitEvent{ PIDs: types.PIDInfo{ - Tgid: uint32(pid), + Tgid: pid, }, } s.db.InsertExit(pe) @@ -122,8 +113,8 @@ func (s prvdr) UpdateDB(ev *beat.Event) error { if result == "success" { setsid_ev := types.ProcessSetsidEvent{ PIDs: types.PIDInfo{ - Tgid: uint32(pid), - Sid: uint32(pid), + Tgid: pid, + Sid: pid, }, } s.db.InsertSetsid(setsid_ev) diff --git a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go index 6fd333c4711..c438efcfe1a 100644 --- a/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go +++ b/x-pack/auditbeat/processors/sessionmd/provider/procfs_provider/procfs_provider_test.go @@ -124,7 +124,7 @@ func TestExecveEvent(t *testing.T) { provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") require.Nil(t, err, "error creating provider") - err = provider.UpdateDB(&event) + err = provider.UpdateDB(&event, expected.PIDs.Tgid) require.Nil(t, err) actual, err := db.GetProcess(pid) @@ -234,7 +234,7 @@ func TestExecveatEvent(t *testing.T) { provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") require.Nil(t, err, "error creating provider") - err = provider.UpdateDB(&event) + err = provider.UpdateDB(&event, expected.PIDs.Tgid) require.Nil(t, err) actual, err := db.GetProcess(pid) @@ -317,7 +317,7 @@ func TestSetSidEvent(t *testing.T) { provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") require.Nil(t, err, "error creating provider") - err = provider.UpdateDB(&event) + err = provider.UpdateDB(&event, expected.PIDs.Tgid) require.Nil(t, err) actual, err := db.GetProcess(pid) @@ -399,7 +399,7 @@ func TestSetSidEventFailed(t *testing.T) { provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") require.Nil(t, err, "error creating provider") - err = provider.UpdateDB(&event) + err = provider.UpdateDB(&event, expected.PIDs.Tgid) require.Nil(t, err) actual, err := db.GetProcess(pid) @@ -470,7 +470,7 @@ func TestSetSidSessionLeaderNotScraped(t *testing.T) { provider, err := NewProvider(context.TODO(), &logger, db, reader, "process.pid") require.Nil(t, err, "error creating provider") - err = provider.UpdateDB(&event) + err = provider.UpdateDB(&event, expected.PIDs.Tgid) require.Nil(t, err) actual, err := db.GetProcess(pid) diff --git a/x-pack/auditbeat/processors/sessionmd/provider/provider.go b/x-pack/auditbeat/processors/sessionmd/provider/provider.go index e3fa1547806..6452eb9e2bf 100644 --- a/x-pack/auditbeat/processors/sessionmd/provider/provider.go +++ b/x-pack/auditbeat/processors/sessionmd/provider/provider.go @@ -11,5 +11,5 @@ import ( ) type Provider interface { - UpdateDB(*beat.Event) error + UpdateDB(*beat.Event, uint32) error } From ab54de6c0064b00fd25f7409d59b225ef1cb66f2 Mon Sep 17 00:00:00 2001 From: Panos Koutsovasilis Date: Thu, 2 May 2024 16:03:44 +0300 Subject: [PATCH 266/313] [Auditbeat/FIM/kprobes]: allow extra syscalls by auditbeat required in FIM with kprobes (#39361) * fix(auditbeat/fim/kprobes): allow appropriate syscalls for seccomp/apparmor policies * fix(auditbeat/fim/kprobes): check correctly the "fsnotify_nameremove" symbol * fix(auditbeat/fim/tests): remove check on absent key of the event for ebpf * doc: update CHANGELOG.next.asciidoc --- CHANGELOG.next.asciidoc | 1 + .../kprobes/probes_fsnotify_nameremove.go | 2 +- .../file_integrity/kprobes/seccomp_linux.go | 44 +++++++++++++++++++ auditbeat/tests/system/test_file_integrity.py | 1 - 4 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 auditbeat/module/file_integrity/kprobes/seccomp_linux.go diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 68eb43677ea..e9e5ec09236 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -96,6 +96,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Set field types to correctly match ECS in sessionmd processor {issue}38955[38955] {pull}38994[38994] - Fix failing to enrich process events in sessionmd processor {issue}38955[38955] {pull}39173[39173] {pull}39243[39243] - Prevent scenario of losing children-related file events in a directory for recursive fsnotify backend of auditbeat file integrity module {pull}39133[39133] +- Allow extra syscalls by auditbeat required in FIM with kprobes back-end {pull}39361[39361] *Filebeat* diff --git a/auditbeat/module/file_integrity/kprobes/probes_fsnotify_nameremove.go b/auditbeat/module/file_integrity/kprobes/probes_fsnotify_nameremove.go index ecabb94c7d2..47fc5df9f0a 100644 --- a/auditbeat/module/file_integrity/kprobes/probes_fsnotify_nameremove.go +++ b/auditbeat/module/file_integrity/kprobes/probes_fsnotify_nameremove.go @@ -35,7 +35,7 @@ func loadFsNotifyNameRemoveSymbol(s *probeManager) error { if err != nil { if errors.Is(err, ErrSymbolNotFound) { s.buildChecks = append(s.buildChecks, func(spec *tkbtf.Spec) bool { - return !spec.ContainsSymbol(symbolInfo.symbolName) + return !spec.ContainsSymbol("fsnotify_nameremove") }) return nil } diff --git a/auditbeat/module/file_integrity/kprobes/seccomp_linux.go b/auditbeat/module/file_integrity/kprobes/seccomp_linux.go new file mode 100644 index 00000000000..90336f66795 --- /dev/null +++ b/auditbeat/module/file_integrity/kprobes/seccomp_linux.go @@ -0,0 +1,44 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package kprobes + +import ( + "runtime" + + "github.com/elastic/beats/v7/libbeat/common/seccomp" +) + +func init() { + switch runtime.GOARCH { + case "amd64", "386", "arm64": + // The module/file_integrity with kprobes BE uses additional syscalls + if err := seccomp.ModifyDefaultPolicy(seccomp.AddSyscall, + "eventfd2", // required by auditbeat/tracing + "mount", // required by auditbeat/tracing + "perf_event_open", // required by auditbeat/tracing + "ppoll", // required by auditbeat/tracing + "umount2", // required by auditbeat/tracing + "truncate", // required during kprobes verification + "utime", // required during kprobes verification + "utimensat", // required during kprobes verification + "setxattr", // required during kprobes verification + ); err != nil { + panic(err) + } + } +} diff --git a/auditbeat/tests/system/test_file_integrity.py b/auditbeat/tests/system/test_file_integrity.py index 64062dd0a77..c82f3187a60 100644 --- a/auditbeat/tests/system/test_file_integrity.py +++ b/auditbeat/tests/system/test_file_integrity.py @@ -108,7 +108,6 @@ def _assert_process_data(self, event, backend): if backend != "ebpf": return assert event["process.entity_id"] != "" - assert event["process.executable"] == "pytest" assert event["process.pid"] == os.getpid() assert int(event["process.user.id"]) == os.geteuid() assert event["process.user.name"] == pwd.getpwuid(os.geteuid()).pw_name From 7d475f543ad4fe2a73adf52782b71be864e61f49 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Thu, 2 May 2024 16:31:48 +0300 Subject: [PATCH 267/313] Remove python dynamic pipeline scripts (#39187) Remove python dynamic pipeline scripts. Signed-off-by: Alexandros Sapranidis --- .buildkite/buildkite.yml | 44 -- .buildkite/pipeline.py | 431 ------------------ .buildkite/pytest.ini | 11 - .../scripts/run_dynamic_pipeline_tests.sh | 43 -- .buildkite/test_pipeline.py | 71 --- auditbeat/buildkite.yml | 56 --- filebeat/buildkite.yml | 60 --- 7 files changed, 716 deletions(-) delete mode 100644 .buildkite/buildkite.yml delete mode 100755 .buildkite/pipeline.py delete mode 100644 .buildkite/pytest.ini delete mode 100755 .buildkite/scripts/run_dynamic_pipeline_tests.sh delete mode 100644 .buildkite/test_pipeline.py delete mode 100644 auditbeat/buildkite.yml delete mode 100644 filebeat/buildkite.yml diff --git a/.buildkite/buildkite.yml b/.buildkite/buildkite.yml deleted file mode 100644 index 4707707e07c..00000000000 --- a/.buildkite/buildkite.yml +++ /dev/null @@ -1,44 +0,0 @@ -projects: - - "auditbeat" - - "deploy/kubernetes" - - "filebeat" - - "heartbeat" - - "libbeat" - - "metricbeat" - - "packetbeat" - - "winlogbeat" - - "x-pack/auditbeat" - - "x-pack/dockerlogbeat" - - "x-pack/filebeat" - - "x-pack/functionbeat" - - "x-pack/heartbeat" - - "x-pack/libbeat" - - "x-pack/metricbeat" - - "x-pack/osquerybeat" - - "x-pack/packetbeat" - - "x-pack/winlogbeat" - -## Changeset macros that are defined here and used in each specific 3.0 pipeline. -changeset: - ci: - - "^Jenkinsfile" - - "^\\.ci/scripts/.*" - oss: - - "^go.mod" - - "^pytest.ini" - - "^dev-tools/.*" - - "^libbeat/.*" - - "^testing/.*" - xpack: - - "^go.mod" - - "^pytest.ini" - - "^dev-tools/.*" - - "^libbeat/.*" - - "^testing/.*" - - "^x-pack/libbeat/.*" - -disabled: - when: - labels: ## Skip the GitHub Pull Request builds if any of the given GitHub labels match with the assigned labels in the PR. - - skip-ci - draft: true ## Skip the GitHub Pull Request builds with Draft PRs. diff --git a/.buildkite/pipeline.py b/.buildkite/pipeline.py deleted file mode 100755 index 95530b89628..00000000000 --- a/.buildkite/pipeline.py +++ /dev/null @@ -1,431 +0,0 @@ -#!/usr/bin/env python3 -from typing import Any -from ruamel.yaml import YAML -import os -import subprocess -import fnmatch -import sys - - -class Agent: - """Buildkite Agent object""" - - def __init__(self, image: str, provider: str): - self.image: str = image - self.provider: str = provider - - def create_entity(self): - raise NotImplementedError("Not implemented yet") - - -class AWSAgent(Agent): - """AWS Agent object""" - - def __init__(self, image: str, instance_type: str = None): - super().__init__(image, "aws") - if instance_type is None: - self.instance_type: str = "t4g.large" - else: - self.instance_type = instance_type - - def create_entity(self) -> dict[str, str]: - return { - "provider": self.provider, - "imagePrefix": self.image, - "instanceType": self.instance_type, - } - - -class GCPAgent(Agent): - """GCP Agent object""" - - def __init__(self, image: str): - super().__init__(image, "gcp") - - def create_entity(self) -> dict[str, str]: - return { - "provider": self.provider, - "image": self.image, - } - - -class OrkaAgent(Agent): - """Orka Agent object""" - - def __init__(self, image: str): - super().__init__(image, "orka") - - def create_entity(self) -> dict[str, str]: - return { - "provider": self.provider, - "imagePrefix": self.image, - } - - -class Step: - """Buildkite Step object""" - - def __init__( - self, - name: str, - project: str, - category: str, - agent: Agent, - definition: dict[str, Any], - ): - self.command = definition.get("command", "") - self.env = definition.get("env", {}) - self.agent: Agent = agent - self.name: str = name - self.project: str = project - self.category: str = category - self.comment = "/test " + self.project + " " + self.name - self.label = self.name - - def __lt__(self, other): - return self.name < other.name - - def step_command(self) -> list[str]: - commands = [ - f"cd {self.project}", - self.command, - ] - return commands - - def create_entity(self) -> dict[str, Any]: - data = { - "label": f"{self.project} {self.name}", - "command": self.step_command(), - "notify": [ - { - "github_commit_status": { - "context": f"{self.project.title()}: {self.name}", - } - } - ], - "agents": self.agent.create_entity(), - "artifact_paths": [ - f"{self.project}/build/*.xml", - f"{self.project}/build/*.json", - ], - } - if self.env: - data["env"] = self.env - return data - - -class Group: - """Buildkite Group object""" - - def __init__(self, project: str, category: str, steps: list[Step]): - self.project: str = project - self.category: str = category - self.steps: list[Step] = steps - - def __lt__(self, other): - return self.project < other.project - - def create_entity(self) -> dict[str, Any]: - if len(self.steps) == 0: - return {} - - data = { - "group": f"{self.project} {self.category}", - "key": f"{self.project}-{self.category}", - "steps": [step.create_entity() for step in self.steps], - } - - return data - - -class GitHelper: - def __init__(self): - self.files: list[str] = [] - - def get_pr_changeset(self) -> list[str]: - base_branch = os.getenv("BUILDKITE_PULL_REQUEST_BASE_BRANCH", "main") - diff_command = ["git", "diff", "--name-only", "{}...HEAD".format(base_branch)] - result = subprocess.run(diff_command, stdout=subprocess.PIPE) - if result.returncode == 0: - self.files = result.stdout.decode().splitlines() - else: - print(f"Detecting changed files failed, exiting [{result.returncode}]") - exit(result.returncode) - return self.files - - -class BuildkitePipeline: - """Buildkite Pipeline object""" - - def __init__(self, groups: list[Group] = None): - if groups is None: - groups = [] - self.groups: list[Group] = groups - - def create_entity(self): - data = {"steps": [group.create_entity() for group in self.groups]} - return data - - -def is_pr() -> bool: - return os.getenv("BUILDKITE_PULL_REQUEST") != "false" - - -def group_comment(group: Group) -> bool: - comment = os.getenv("GITHUB_PR_TRIGGER_COMMENT") - if comment: - # the comment should be a subset of the values - # in .buildkite/pull-requests.json - # TODO: change /test - comment_prefix = "buildkite test" - if group.category == "mandatory": - # i.e: /test filebeat - return comment_prefix + " " + group.project in comment - else: - # i.e: test filebeat extended - return ( - comment_prefix + " " + group.project + " " + group.category in comment - ) - - -def filter_files_by_glob(files, patterns: list[str]): - for pattern in patterns: - # TODO: Support glob extended patterns: ^ and etc. - # Now it supports only linux glob syntax - if fnmatch.filter(files, pattern): - return True - return False - - -def is_in_pr_changeset( - project_changeset_filters: list[str], changeset: list[str] -) -> bool: - return filter_files_by_glob(changeset, project_changeset_filters) - - -def is_group_enabled( - group: Group, changeset_filters: list[str], changeset: list[str] -) -> bool: - if not is_pr(): - return True - - if ( - is_pr() - and is_in_pr_changeset(changeset_filters, changeset) - and group.category.startswith("mandatory") - ): - return True - - return group_comment(group) - - -def fetch_stage(name: str, stage, project: str, category: str) -> Step: - """Create a step given the yaml object.""" - - agent: Agent = None - if ("provider" not in stage) or stage["provider"] == "gcp": - agent = GCPAgent(image=stage["platform"]) - elif stage["provider"] == "aws": - agent = AWSAgent( - image=stage["platform"], - ) - elif stage["provider"] == "orka": - agent = OrkaAgent(image=stage["platform"]) - - return Step( - category=category, name=name, agent=agent, project=project, definition=stage - ) - - -def fetch_group(stages, project: str, category: str) -> Group: - """Create a group given the yaml object.""" - - steps = [] - - for stage in stages: - steps.append( - fetch_stage( - category=category, name=stage, project=project, stage=stages[stage] - ) - ) - - return Group(project=project, category=category, steps=steps) - - -def fetch_pr_pipeline(yaml: YAML) -> list[Group]: - git_helper = GitHelper() - changeset = git_helper.get_pr_changeset() - groups: list[Group] = [] - doc = pipeline_loader(yaml) - for project in doc["projects"]: - project_file = os.path.join(project, "buildkite.yml") - if not os.path.isfile(project_file): - continue - project_obj = project_loader(yaml, project_file) - group = fetch_group( - stages=project_obj["stages"]["mandatory"], - project=project, - category="mandatory", - ) - - if is_group_enabled(group, project_obj["when"]["changeset"], changeset): - groups.append(group) - - group = fetch_group( - stages=project_obj["stages"]["extended"], - project=project, - category="extended", - ) - - if is_group_enabled(group, project_obj["when"]["changeset"], changeset): - groups.append(group) - - # TODO: improve this merging lists - all_groups = [] - for group in groups: - all_groups.append(group) - - return all_groups - - -class PRComment: - command: str - group: str - project: str - step: str - - def __init__(self, comment: str): - words = comment.split() - self.command = words.pop(0) if words else "" - self.project = words.pop(0) if words else "" - self.group = words.pop(0) if words else "" - self.step = words.pop(0) if words else "" - - -# A comment like "/test filebeat extended" -# Returns a group of steps corresponding to the comment -def fetch_pr_comment_group_pipeline(comment: PRComment, yaml: YAML) -> list[Group]: - groups = [] - doc = pipeline_loader(yaml) - if comment.project in doc["projects"]: - project_file = os.path.join(comment.project, "buildkite.yml") - if not os.path.isfile(project_file): - raise FileNotFoundError( - "buildkite.yml not found in: " + "{}".format(comment.project) - ) - project_obj = project_loader(yaml, project_file) - if not project_obj["stages"][comment.group]: - raise ValueError( - "Group not found in {} buildkite.yml: {}".format( - comment.project, comment.group - ) - ) - - group = fetch_group( - stages=project_obj["stages"][comment.group], - project=comment.project, - category="mandatory", - ) - groups.append(group) - - return groups - - -# A comment like "/test filebeat extended unitTest-macos" -def fetch_pr_comment_step_pipeline(comment: PRComment, yaml: YAML) -> list[Group]: - groups = [] - doc = pipeline_loader(yaml) - if comment.project in doc["projects"]: - project_file = os.path.join(comment.project, "buildkite.yml") - if not os.path.isfile(project_file): - raise FileNotFoundError( - "buildkite.yml not found in: " + "{}".format(comment.project) - ) - project_obj = project_loader(yaml, project_file) - if not project_obj["stages"][comment.group]: - raise ValueError( - "Group not found in {} buildkite.yml: {}".format( - comment.project, comment.group - ) - ) - group = fetch_group( - stages=project_obj["stages"][comment.group], - project=comment.project, - category="mandatory", - ) - - filtered_steps = list( - filter(lambda step: step.name == comment.step, group.steps) - ) - - if not filtered_steps: - raise ValueError( - "Step {} not found in {} buildkite.yml".format( - comment.step, comment.project - ) - ) - group.steps = filtered_steps - groups.append(group) - - return groups - - -def pr_comment_pipeline(pr_comment: PRComment, yaml: YAML) -> list[Group]: - - if pr_comment.command == "/test": - - # A comment like "/test" for a PR - # We rerun the PR pipeline - if not pr_comment.group: - return fetch_pr_pipeline(yaml) - - # A comment like "/test filebeat" - # We don't know what group to run hence raise an error - if pr_comment.project and not pr_comment.group: - raise ValueError( - "Specify group or/and step for {}".format(pr_comment.project) - ) - - # A comment like "/test filebeat extended" - # We rerun the filebeat extended pipeline for the PR - if pr_comment.group and not pr_comment.step: - return fetch_pr_comment_group_pipeline(pr_comment, yaml) - - # A comment like "/test filebeat extended unitTest-macos" - if pr_comment.step: - return fetch_pr_comment_step_pipeline(pr_comment, yaml) - - -# TODO: validate unique stages! -def main() -> None: - yaml = YAML(typ="safe") - all_groups = [] - if is_pr(): - if os.getenv("GITHUB_PR_TRIGGER_COMMENT"): - comment = PRComment(os.getenv("GITHUB_PR_TRIGGER_COMMENT")) - all_groups = pr_comment_pipeline(comment, yaml) - else: - all_groups = fetch_pr_pipeline(yaml) - # TODO what to load when not in PR - - # Produce the dynamic pipeline - print( - "# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json" - ) - yaml.dump(BuildkitePipeline(all_groups).create_entity(), sys.stdout) - - -def pipeline_loader(yaml: YAML = YAML(typ="safe")): - with open(".buildkite/buildkite.yml", "r", encoding="utf8") as file: - return yaml.load(file) - - -def project_loader(yaml: YAML = YAML(typ="safe"), project_file: str = ""): - with open(project_file, "r", encoding="utf8") as project_fp: - return yaml.load(project_fp) - - -if __name__ == "__main__": - - # pylint: disable=E1120 - main() diff --git a/.buildkite/pytest.ini b/.buildkite/pytest.ini deleted file mode 100644 index 3eff7473d9f..00000000000 --- a/.buildkite/pytest.ini +++ /dev/null @@ -1,11 +0,0 @@ -[pytest] -junit_family=xunit1 - -addopts = --strict-markers -markers = - load: Load tests - tag(name): Tag tests with Go-like semantics - -# Ignore setup and teardown for the timeout -#timeout_func_only = True - diff --git a/.buildkite/scripts/run_dynamic_pipeline_tests.sh b/.buildkite/scripts/run_dynamic_pipeline_tests.sh deleted file mode 100755 index 8eb72d7a96b..00000000000 --- a/.buildkite/scripts/run_dynamic_pipeline_tests.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash -# Run tests for the dynamic pipeline generator only if it's a PR and related files have been changed -# this will allow us to fail fast, if e.g. a PR has broken the generator - -set -euo pipefail - -are_paths_changed() { - local patterns=("${@}") - local changelist=() - for pattern in "${patterns[@]}"; do - changed_files=($(git diff --name-only HEAD@{1} HEAD | grep -E "$pattern")) - if [ "${#changed_files[@]}" -gt 0 ]; then - changelist+=("${changed_files[@]}") - fi - done - - if [ "${#changelist[@]}" -gt 0 ]; then - echo "Files changed:" - echo "${changelist[*]}" - return 0 - else - echo "No files changed within specified changeset:" - echo "${patterns[*]}" - return 1 - fi -} - -pipeline_generator_changeset=( - "^.buildkite/pipeline.py" - "^*/buildkite.yml" -) - -if ! are_paths_changed "${pipeline_generator_changeset[@]}" || [[ "${BUILDKITE_PULL_REQUEST}" == "false" ]]; then - echo "~~~ Skipping pipeline generator tests" - exit -fi - -echo "~~~ Running pipeline generator tests" - -python3 -mpip install --quiet "pytest" -pushd .buildkite -pytest . -popd diff --git a/.buildkite/test_pipeline.py b/.buildkite/test_pipeline.py deleted file mode 100644 index 75fd949ccc8..00000000000 --- a/.buildkite/test_pipeline.py +++ /dev/null @@ -1,71 +0,0 @@ -import os - -import pytest -import pipeline - - -@pytest.fixture -def ubuntu2204_aws_agent(): - return { - "command": "fake-cmd", - "platform": "platform-ingest-beats-ubuntu-2204-aarch64", - "provider": "aws" - } - - -@pytest.fixture() -def fake_simple_group(): - return { - "unitTest": { - "command": "fake-cmd", - "platform": "family/platform-ingest-beats-ubuntu-2204", - }, - "integrationTest": { - "command": "fake-integration", - "platform": "family/platform-ingest-beats-ubuntu-2204", - "env": { - "FOO": "BAR", - }, - }, - } - - -def test_fetch_stage(ubuntu2204_aws_agent): - step = pipeline.fetch_stage("test", ubuntu2204_aws_agent, "fake", "fake-category") - assert step.create_entity() == { - "label": "fake test", - "command": ["cd fake", "fake-cmd"], - "notify": [ - { - "github_commit_status": { - "context": "Fake: test", - } - } - ], - "agents": { - "provider": "aws", - "imagePrefix": "platform-ingest-beats-ubuntu-2204-aarch64", - "instanceType": "t4g.large", - }, - "artifact_paths": [ - "fake/build/*.xml", - "fake/build/*.json", - ], - } - - -def test_fetch_group(fake_simple_group): - group = pipeline.fetch_group(fake_simple_group, "fake-project", "testing") - assert len(group.steps) == 2 - for step in group.steps: - assert "testing" == step.category - assert "gcp" == step.agent.provider - - assert group.steps[1].env.get("FOO") == "BAR" - - -def test_is_pr(): - os.environ["BUILDKITE_PULL_REQUEST"] = "1234" - assert pipeline.is_pr() is True - os.environ["BUILDKITE_PULL_REQUEST"] = "false" - assert pipeline.is_pr() is False diff --git a/auditbeat/buildkite.yml b/auditbeat/buildkite.yml deleted file mode 100644 index 2abf9d68407..00000000000 --- a/auditbeat/buildkite.yml +++ /dev/null @@ -1,56 +0,0 @@ -when: - changeset: ## when PR contains any of those entries in the changeset - - "auditbeat/**" - - "@ci" ## special token regarding the changeset for the ci - - "@oss" ## special token regarding the changeset for the oss -stages: - # mandatory stage - it runs always for: - # - branches/tags - # - on PRs - # - GitHub comment /test auditbeat - # - GitHub label auditbeat - mandatory: - # NOTE: stage name should be unique! - unitTest: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-ubuntu-2204" - crosscompile: - command: "make crosscompile" - platform: "family/platform-ingest-beats-ubuntu-2204" - env: - GOX_FLAGS: "-arch amd64" - unitTest-rhel-9: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-rhel-9" - unitTest-windows-2022: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-2022" - unitTest-windows-2016: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-2016" - # optional stage - it runs on: - # - branches/tags - # - on PRs if: - # - GitHub comment /test auditbeat . i.e: /test auditbeat integTest - # - GitHub label . i.e: integTest or unitTest-arm or unitTest-macos ... - extended: - # NOTE: stage name should be unique! - integTest: - command: "mage build integTest" - platform: "platform-ingest-beats-ubuntu-2204-aarch64" - provider: "aws" - integTest-arm: - command: "mage build integTest" - platform: "platform-ingest-beats-ubuntu-2204-aarch64" - provider: "aws" - unitTest-arm: - command: "mage build unitTest" - platform: "platform-ingest-beats-ubuntu-2204-aarch64" - provider: "aws" - unitTest-macos: - command: "mage build unitTest" - platform: "generic-13-ventura-x64" - provider: "orka" - unitTest-windows-2019: - command: "mage build unitTest" - platform: "family/core-windows-2019" diff --git a/filebeat/buildkite.yml b/filebeat/buildkite.yml deleted file mode 100644 index 3fcabc5f1ce..00000000000 --- a/filebeat/buildkite.yml +++ /dev/null @@ -1,60 +0,0 @@ -when: - branches: true ## for all the branches - changeset: ## when PR contains any of those entries in the changeset - - "filebeat/**" - - "@ci" ## special token regarding the changeset for the ci - - "@oss" ## special token regarding the changeset for the oss -stages: - mandatory: - unitTest: - command: "mage unitTest" - platform: "family/platform-ingest-beats-ubuntu-2204" - goIntegTest: - command: "mage goIntegTest" - platform: "family/platform-ingest-beats-ubuntu-2204" - pythonIntegTest: - command: "mage pythonIntegTest" - platform: "family/platform-ingest-beats-ubuntu-2204" - unitTest-windows-2022: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-2022" - unitTest-windows-2016: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-2016" - - extended_win: - unitTest-windows-2019: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-2019" - unitTest-windows-11: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-11" - unitTest-windows-10: - command: "mage build unitTest" - platform: "family/platform-ingest-beats-windows-10" - extended: - unitTest-arm: - command: "mage build unitTest" - platform: "platform-ingest-beats-ubuntu-2204-aarch64" - provider: "aws" # move this inside the platform leaf - when: - comments: - - "/test filebeat for arm" - labels: - - "arm" - parameters: - - "armTest" - branches: true ## for all the branches - tags: true ## for all the tags - unitTest-macos: - command: ".buildkite/filebeat/scripts/unit-tests.sh" - platform: "generic-13-ventura-x64" - provider: "orka" - when: - comments: - - "/test filebeat for macos" - labels: - - "macOS" - parameters: - - "macosTest" - tags: true ## for all the tags From c1663a3f83974db66029da01d79aade6cefb8477 Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Thu, 2 May 2024 17:01:58 +0300 Subject: [PATCH 268/313] Update auditbeat pipeline to match Jenkins steps (#39245) This commit updates the `auditbeat` pipeline to match same steps & commands as in Jenkins. Relates: https://github.com/elastic/ingest-dev/issues/3254 --------- Co-authored-by: Dimitrios Liappis --- .buildkite/auditbeat/auditbeat-pipeline.yml | 103 +++++++++++++++----- .buildkite/hooks/pre-command | 2 +- 2 files changed, 82 insertions(+), 23 deletions(-) diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index ed19c7d9164..13e3ef2f256 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -3,7 +3,6 @@ name: "beats-auditbeat" env: AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" - AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" @@ -30,6 +29,7 @@ steps: steps: - label: ":ubuntu: Auditbeat Unit Tests" command: | + set -euo pipefail cd auditbeat mage build unitTest retry: @@ -48,6 +48,7 @@ steps: - label: ":rhel: Auditbeat Unit Tests" command: | + set -euo pipefail cd auditbeat mage build unitTest retry: @@ -118,18 +119,62 @@ steps: machineType: "${GCP_HI_PERF_MACHINE_TYPE}" notify: - github_commit_status: - context: "auditbeat: Cross compile" + context: "auditbeat: Crosscompile" + + - group: "Auditbeat Extended Tests" + key: "auditbeat-extended-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS|arm|integrations).*/ - - group: "Auditbeat Linux arm64 Tests" - key: "auditbeat-extended-tests-linux-arm64" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ steps: - - label: ":linux: Auditbeat Linux arm64 Unit Tests" + - label: ":linux: Auditbeat Ubuntu Integration Tests" + key: "auditbeat-extended-integ-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*integrations.*/ + command: | + set -euo pipefail + cd auditbeat + mage build integTest + retry: + automatic: + - limit: 3 + agents: + provider: "gcp" + image: "${IMAGE_UBUNTU_X86_64}" + machineType: "${GCP_DEFAULT_MACHINE_TYPE}" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + notify: + - github_commit_status: + context: "auditbeat: Linux Integration Tests" + + - label: ":linux: Auditbeat Ubuntu arm64 Integration Tests" + key: "auditbeat-extended-arm64-integ-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*integrations.*/ + command: | + set -euo pipefail + cd auditbeat + mage build integTest + retry: + automatic: + - limit: 3 + agents: + provider: "aws" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" + instanceType: "${AWS_ARM_INSTANCE_TYPE}" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" + notify: + - github_commit_status: + context: "auditbeat: Linux arm64 Integration Tests" + + - label: ":linux: Auditbeat Ubuntu arm64 Unit Tests" key: "auditbeat-extended-arm64-unit-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ command: | set -euo pipefail cd auditbeat - mage unitTest + mage build unitTest retry: automatic: - limit: 3 @@ -137,51 +182,57 @@ steps: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" - artifact_paths: "auditbeat/build/*.*" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" notify: - github_commit_status: - context: "metricbeat: Linux arm64 tests" + context: "auditbeat: Linux arm64 Unit Tests" - - group: "Auditbeat MacOS Extended" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - steps: - label: ":mac: Auditbeat macOS x86_64 Unit Tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd auditbeat - mage unitTest + mage build unitTest retry: automatic: - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" - artifact_paths: "auditbeat/build/*.*" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" notify: - github_commit_status: - context: "auditbeat: Extended MacOS x86_64 Unit Tests" + context: "auditbeat: macOS x86_64 Unit Tests" - - label: ":mac: Auditbeat macOS arm64 Unit Tests" + - label: ":mac: Auditbeat macOS arm64 ARM Unit Tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh cd auditbeat - mage unitTest + mage build unitTest retry: automatic: - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" - artifact_paths: "auditbeat/build/*.*" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" notify: - github_commit_status: - context: "auditbeat: Extended MacOS arm64 Unit Tests" + context: "auditbeat: macOS arm64 Unit Tests" - group: "Auditbeat Windows Extended Testing" key: "auditbeat-extended-tests-win" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: - label: ":windows: Auditbeat Win-2019 Unit Tests" key: "auditbeat-extended-win-2019-unit-tests" @@ -197,7 +248,9 @@ steps: machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "auditbeat/build/*.*" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" notify: - github_commit_status: context: "auditbeat: Extended Windows 2019 Unit Tests" @@ -216,7 +269,9 @@ steps: machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "auditbeat/build/*.*" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" notify: - github_commit_status: context: "auditbeat: Extended Windows 10 Unit Tests" @@ -235,7 +290,9 @@ steps: machine_type: "${GCP_WIN_MACHINE_TYPE}" disk_size: 100 disk_type: "pd-ssd" - artifact_paths: "auditbeat/build/*.*" + artifact_paths: + - "auditbeat/build/*.xml" + - "auditbeat/build/*.json" notify: - github_commit_status: context: "auditbeat: Extended Windows 11 Unit Tests" @@ -256,6 +313,7 @@ steps: PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" SNAPSHOT: true command: | + set -euo pipefail cd auditbeat mage package agents: @@ -273,6 +331,7 @@ steps: PACKAGES: "docker" SNAPSHOT: true command: | + set -euo pipefail cd auditbeat mage package agents: diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 2abf56684a3..870ece78925 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -11,7 +11,7 @@ PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-inges DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" || "$BUILDKITE_PIPELINE_SLUG" == "auditbeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" ]]; then source .buildkite/env-scripts/env.sh if [[ -z "${GO_VERSION-""}" ]]; then export GO_VERSION=$(cat "${WORKSPACE}/.go-version") From bbf8746d0e0a653c6801f979072e47c15a84d074 Mon Sep 17 00:00:00 2001 From: Panos Koutsovasilis Date: Thu, 2 May 2024 17:53:15 +0300 Subject: [PATCH 269/313] [Auditbeat/FIM/fsnotify]: prevent losing events for recursive mode on OS X (#39362) * fix(auditbeat/fim/fsnotify): do not return error immediately as this causes losing events on mac * doc: update CHANGELOG.next.asciidoc --- CHANGELOG.next.asciidoc | 1 + auditbeat/module/file_integrity/monitor/monitor_test.go | 2 +- auditbeat/module/file_integrity/monitor/recursive.go | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index e9e5ec09236..587b95ef5e5 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -97,6 +97,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Fix failing to enrich process events in sessionmd processor {issue}38955[38955] {pull}39173[39173] {pull}39243[39243] - Prevent scenario of losing children-related file events in a directory for recursive fsnotify backend of auditbeat file integrity module {pull}39133[39133] - Allow extra syscalls by auditbeat required in FIM with kprobes back-end {pull}39361[39361] +- Fix losing events in FIM for OS X by allowing always to walk an added directory to monitor {pull}39362[39362] *Filebeat* diff --git a/auditbeat/module/file_integrity/monitor/monitor_test.go b/auditbeat/module/file_integrity/monitor/monitor_test.go index 2f66d6469b2..506f559be55 100644 --- a/auditbeat/module/file_integrity/monitor/monitor_test.go +++ b/auditbeat/module/file_integrity/monitor/monitor_test.go @@ -192,7 +192,7 @@ func TestRecursiveSubdirPermissions(t *testing.T) { ev, err := readTimeout(t, watcher) assert.Equal(t, errReadTimeout, err) - if err != errReadTimeout { + if !errors.Is(err, errReadTimeout) { t.Fatalf("Expected timeout, got event %+v", ev) } diff --git a/auditbeat/module/file_integrity/monitor/recursive.go b/auditbeat/module/file_integrity/monitor/recursive.go index 31f2b538370..6cdb98f8464 100644 --- a/auditbeat/module/file_integrity/monitor/recursive.go +++ b/auditbeat/module/file_integrity/monitor/recursive.go @@ -113,11 +113,11 @@ func (watcher *recursiveWatcher) addRecursive(path string) error { return nil } + var errs multierror.Errors if err := watcher.watchFile(path, nil); err != nil { - return fmt.Errorf("failed adding watcher to '%s': %w", path, err) + errs = append(errs, fmt.Errorf("failed adding watcher to '%s': %w", path, err)) } - var errs multierror.Errors err := filepath.Walk(path, func(walkPath string, info os.FileInfo, fnErr error) error { if walkPath == path { return nil From c1748f7965c9bfd4d488403bb2a734f6f5627219 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Thu, 2 May 2024 13:19:15 -0400 Subject: [PATCH 270/313] chore: Update snapshot.yml (#39377) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index 30002f9a255..e93acb254ee 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-aa640648-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-7f8575f3-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-aa640648-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-7f8575f3-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-aa640648-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-7f8575f3-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 4e6d762c36e680b96d7b344b81002982861ca431 Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Thu, 2 May 2024 22:57:33 -0400 Subject: [PATCH 271/313] Fix sqs region selection (#39327) Fix an error in region selection that was introduced in a previous cleanup (https://github.com/elastic/beats/pull/38958). When the configured region disagrees with the region detected from the queue URL, the configured region is supposed to take precedence. Due to a misreading, my code instead chose the URL region when there is a conflict. I've broken region selection out into another helper function to make this logic easier to test, and added several unit test cases that would have caught this mistake. --- x-pack/filebeat/input/awss3/input.go | 69 ++++++++++++++--------- x-pack/filebeat/input/awss3/input_test.go | 68 ++++++++++++++++------ 2 files changed, 92 insertions(+), 45 deletions(-) diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index 51e8c9808ed..6c9c202b1f5 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -24,6 +24,7 @@ import ( "github.com/elastic/beats/v7/libbeat/feature" awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" conf "github.com/elastic/elastic-agent-libs/config" + "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/go-concert/unison" ) @@ -117,17 +118,12 @@ func (in *s3Input) runQueueReader( inputContext v2.Context, pipeline beat.Pipeline, ) error { - configRegion := in.config.RegionName - urlRegion, err := getRegionFromQueueURL(in.config.QueueURL, in.config.AWSConfig.Endpoint) - if err != nil && configRegion == "" { - // Only report an error if we don't have a configured region - // to fall back on. - return fmt.Errorf("failed to get AWS region from queue_url: %w", err) - } else if configRegion != "" && configRegion != urlRegion { - inputContext.Logger.Warnf("configured region disagrees with queue_url region (%q != %q): using %q", configRegion, urlRegion, urlRegion) + // Set awsConfig.Region based on the config and queue URL + region, err := chooseRegion(inputContext.Logger, in.config) + if err != nil { + return err } - - in.awsConfig.Region = urlRegion + in.awsConfig.Region = region // Create SQS receiver and S3 notification processor. receiver, err := in.createSQSReceiver(inputContext, pipeline) @@ -326,32 +322,51 @@ func (in *s3Input) createS3Poller(ctx v2.Context, cancelCtx context.Context, cli var errBadQueueURL = errors.New("QueueURL is not in format: https://sqs.{REGION_ENDPOINT}.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME} or https://{VPC_ENDPOINT}.sqs.{REGION_ENDPOINT}.vpce.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME}") -func getRegionFromQueueURL(queueURL, endpoint string) (string, error) { +func chooseRegion(log *logp.Logger, config config) (string, error) { + urlRegion := getRegionFromQueueURL(config.QueueURL, config.AWSConfig.Endpoint) + if config.RegionName != "" { + // If a region is configured, that takes precedence over the URL. + if log != nil && config.RegionName != urlRegion { + log.Warnf("configured region disagrees with queue_url region (%q != %q): using %q", config.RegionName, urlRegion, config.RegionName) + } + return config.RegionName, nil + } + if urlRegion != "" { + // If no region is configured, fall back on the URL. + return urlRegion, nil + } + // If we can't get the region from the config or the URL, report an error. + return "", fmt.Errorf("failed to get AWS region from queue_url: %w", errBadQueueURL) +} + +// getRegionFromQueueURL returns the region from standard queue URLs, or the +// empty string if it couldn't be determined. +func getRegionFromQueueURL(queueURL, endpoint string) string { // get region from queueURL // Example for sqs queue: https://sqs.us-east-1.amazonaws.com/12345678912/test-s3-logs // Example for vpce: https://vpce-test.sqs.us-east-1.vpce.amazonaws.com/12345678912/sqs-queue u, err := url.Parse(queueURL) if err != nil { - return "", fmt.Errorf(queueURL + " is not a valid URL") - } - if (u.Scheme == "https" || u.Scheme == "http") && u.Host != "" { - queueHostSplit := strings.SplitN(u.Host, ".", 3) - // check for sqs queue url - if len(queueHostSplit) == 3 && queueHostSplit[0] == "sqs" { - if queueHostSplit[2] == endpoint || (endpoint == "" && strings.HasPrefix(queueHostSplit[2], "amazonaws.")) { - return queueHostSplit[1], nil - } + return "" + } + + // check for sqs queue url + host := strings.SplitN(u.Host, ".", 3) + if len(host) == 3 && host[0] == "sqs" { + if host[2] == endpoint || (endpoint == "" && strings.HasPrefix(host[2], "amazonaws.")) { + return host[1] } + } - // check for vpce url - queueHostSplitVPC := strings.SplitN(u.Host, ".", 5) - if len(queueHostSplitVPC) == 5 && queueHostSplitVPC[1] == "sqs" { - if queueHostSplitVPC[4] == endpoint || (endpoint == "" && strings.HasPrefix(queueHostSplitVPC[4], "amazonaws.")) { - return queueHostSplitVPC[2], nil - } + // check for vpce url + host = strings.SplitN(u.Host, ".", 5) + if len(host) == 5 && host[1] == "sqs" { + if host[4] == endpoint || (endpoint == "" && strings.HasPrefix(host[4], "amazonaws.")) { + return host[2] } } - return "", errBadQueueURL + + return "" } func getRegionForBucket(ctx context.Context, s3Client *s3.Client, bucketName string) (string, error) { diff --git a/x-pack/filebeat/input/awss3/input_test.go b/x-pack/filebeat/input/awss3/input_test.go index 0a3053f7f1b..c76e939424f 100644 --- a/x-pack/filebeat/input/awss3/input_test.go +++ b/x-pack/filebeat/input/awss3/input_test.go @@ -5,8 +5,10 @@ package awss3 import ( + "errors" "testing" + aws "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" "github.com/stretchr/testify/assert" ) @@ -51,23 +53,36 @@ func TestGetProviderFromDomain(t *testing.T) { func TestGetRegionFromQueueURL(t *testing.T) { tests := []struct { - name string - queueURL string - endpoint string - want string - wantErr error + name string + queueURL string + regionName string + endpoint string + want string + wantErr error }{ { name: "amazonaws.com_domain_with_blank_endpoint", queueURL: "https://sqs.us-east-1.amazonaws.com/627959692251/test-s3-logs", want: "us-east-1", }, + { + name: "amazonaws.com_domain_with_region_override", + queueURL: "https://sqs.us-east-1.amazonaws.com/627959692251/test-s3-logs", + regionName: "us-east-2", + want: "us-east-2", + }, { name: "abc.xyz_and_domain_with_matching_endpoint", queueURL: "https://sqs.us-east-1.abc.xyz/627959692251/test-s3-logs", endpoint: "abc.xyz", want: "us-east-1", }, + { + name: "abc.xyz_with_region_override", + queueURL: "https://sqs.us-east-1.abc.xyz/627959692251/test-s3-logs", + regionName: "us-west-3", + want: "us-west-3", + }, { name: "abc.xyz_and_domain_with_blank_endpoint", queueURL: "https://sqs.us-east-1.abc.xyz/627959692251/test-s3-logs", @@ -78,18 +93,46 @@ func TestGetRegionFromQueueURL(t *testing.T) { queueURL: "https://vpce-test.sqs.us-east-2.vpce.amazonaws.com/12345678912/sqs-queue", want: "us-east-2", }, + { + name: "vpce_endpoint_with_region_override", + queueURL: "https://vpce-test.sqs.us-east-2.vpce.amazonaws.com/12345678912/sqs-queue", + regionName: "us-west-1", + want: "us-west-1", + }, { name: "vpce_endpoint_with_endpoint", queueURL: "https://vpce-test.sqs.us-east-1.vpce.amazonaws.com/12345678912/sqs-queue", endpoint: "amazonaws.com", want: "us-east-1", }, + { + name: "non_aws_vpce_with_endpoint", + queueURL: "https://vpce-test.sqs.us-east-1.vpce.abc.xyz/12345678912/sqs-queue", + endpoint: "abc.xyz", + want: "us-east-1", + }, + { + name: "non_aws_vpce_without_endpoint", + queueURL: "https://vpce-test.sqs.us-east-1.vpce.abc.xyz/12345678912/sqs-queue", + wantErr: errBadQueueURL, + }, + { + name: "non_aws_vpce_with_region_override", + queueURL: "https://vpce-test.sqs.us-east-1.vpce.abc.xyz/12345678912/sqs-queue", + regionName: "us-west-1", + want: "us-west-1", + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - got, err := getRegionFromQueueURL(test.queueURL, test.endpoint) - if !sameError(err, test.wantErr) { + config := config{ + QueueURL: test.queueURL, + RegionName: test.regionName, + AWSConfig: aws.ConfigAWS{Endpoint: test.endpoint}, + } + got, err := chooseRegion(nil, config) + if !errors.Is(err, test.wantErr) { t.Errorf("unexpected error: got:%v want:%v", err, test.wantErr) } if got != test.want { @@ -98,14 +141,3 @@ func TestGetRegionFromQueueURL(t *testing.T) { }) } } - -func sameError(a, b error) bool { - switch { - case a == nil && b == nil: - return true - case a == nil, b == nil: - return false - default: - return a.Error() == b.Error() - } -} From 7e203ad7fd945be9b05e22b991cdf385935d36b7 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 3 May 2024 12:14:19 +0300 Subject: [PATCH 272/313] Auto trigger DRA for all 8.x branches (#39386) Now that DRA support via Buildkite has also been backported to 8.13[^1] this commit widens the whitelisted branches that can trigger Buildkite DRA builds to include all 8.x branches. Relates: https://github.com/elastic/ingest-dev/issues/3095 [^1]: https://github.com/elastic/beats/pull/39198 --- catalog-info.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index 34d9e397ca3..0e79d2ad848 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1040,7 +1040,7 @@ spec: spec: repository: elastic/beats pipeline_file: ".buildkite/packaging.pipeline.yml" - branch_configuration: "main 8.14" + branch_configuration: "main 8.*" # TODO enable after packaging backports for release branches # branch_configuration: "main 8.* 7.17" cancel_intermediate_builds: false From b21348a89041cde6bde0979ddc0c3e97730a3873 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Fri, 3 May 2024 13:23:29 +0300 Subject: [PATCH 273/313] Disable 8.x DRA packaging from Jenkins (#39387) This commit disables triggering DRA packaging builds for the 8.x branch via Jenkins. Relates: https://github.com/elastic/ingest-dev/issues/3095 --------- Co-authored-by: Victor Martinez --- .ci/jobs/packaging.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.ci/jobs/packaging.yml b/.ci/jobs/packaging.yml index 50cec32edd8..4020c7479d2 100644 --- a/.ci/jobs/packaging.yml +++ b/.ci/jobs/packaging.yml @@ -14,7 +14,7 @@ discover-pr-forks-trust: 'permission' discover-pr-origin: 'merge-current' discover-tags: true - head-filter-regex: '(7\.1[6789]|8\.13|PR-.*|v8\.13\.\d+)' + head-filter-regex: '(7\.17|PR-.*)' disable-pr-notifications: true notification-context: 'beats-packaging' repo: 'beats' @@ -28,11 +28,8 @@ ignore-tags-older-than: -1 ignore-tags-newer-than: 30 - named-branches: - - exact-name: - name: '8.13' - case-sensitive: true - regex-name: - regex: '7\.1[6789]' + regex: '7\.17' case-sensitive: true - change-request: ignore-target-only-changes: true From e74deb5788cd2667f15180837b20398a3489f352 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 3 May 2024 05:02:24 -0700 Subject: [PATCH 274/313] Add disruptive change mitigations section to PR template (#39330) * Add breaking changes mitigations section * Broaden language --- .github/PULL_REQUEST_TEMPLATE.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 507de3b18d2..24b6c75e8be 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -44,6 +44,14 @@ List here all the items you have verified BEFORE sending this PR. Please DO NOT - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have added an entry in `CHANGELOG.next.asciidoc` or `CHANGELOG-developer.next.asciidoc`. +## Disruptive User Impact + + + ## Author's Checklist -- +- ## Use cases From 13aed9f010453e05783ca3b318651ec2949030c4 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Fri, 3 May 2024 13:16:28 -0400 Subject: [PATCH 275/313] chore: Update snapshot.yml (#39401) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index e93acb254ee..c319dc168d3 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-7f8575f3-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-3eefdcff-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-7f8575f3-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-3eefdcff-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-7f8575f3-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-3eefdcff-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 56763aab427fdcbd676919c1f8eee887f5a0a410 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Mon, 6 May 2024 06:22:47 +0930 Subject: [PATCH 276/313] x-pack/filebeat/input/http_endpoint: ensure all responses are HTML-escaped (#39329) --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/http_endpoint/input.go | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 587b95ef5e5..22f8c34c9be 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -257,6 +257,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add debugging breadcrumb to logs when writing request trace log. {pull}38636[38636] - added benchmark input {pull}37437[37437] - added benchmark input and discard output {pull}37437[37437] +- Ensure all responses sent by HTTP Endpoint are HTML-escaped. {pull}39329[39329] *Auditbeat* diff --git a/x-pack/filebeat/input/http_endpoint/input.go b/x-pack/filebeat/input/http_endpoint/input.go index 6bb79ea72be..e9d9bfe7ba9 100644 --- a/x-pack/filebeat/input/http_endpoint/input.go +++ b/x-pack/filebeat/input/http_endpoint/input.go @@ -5,10 +5,12 @@ package http_endpoint import ( + "bytes" "context" "crypto/tls" "encoding/base32" "encoding/binary" + "encoding/json" "errors" "fmt" "net" @@ -322,7 +324,7 @@ func newHandler(ctx context.Context, c config, prg *program, pub stateless.Publi program: prg, messageField: c.Prefix, responseCode: c.ResponseCode, - responseBody: c.ResponseBody, + responseBody: htmlEscape(c.ResponseBody), includeHeaders: canonicalizeHeaders(c.IncludeHeaders), preserveOriginalEvent: c.PreserveOriginalEvent, crc: newCRC(c.CRCProvider, c.CRCSecret), @@ -350,6 +352,12 @@ func newHandler(ctx context.Context, c config, prg *program, pub stateless.Publi return h } +func htmlEscape(s string) string { + var buf bytes.Buffer + json.HTMLEscape(&buf, []byte(s)) + return buf.String() +} + // newID returns an ID derived from the current time. func newID() string { var data [8]byte From ff424ea42bbd9256725683354a41983d23957759 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 08:36:42 +0200 Subject: [PATCH 277/313] docs: Prepare Changelog for 8.13.3 (#39356) (#39370) Co-authored-by: David Kilfoyle <41695641+kilfoyle@users.noreply.github.com> Co-authored-by: Pierre HILBERT (cherry picked from commit 76b222421b7f470ff2259b3a32aff12f1f7c5d64) Co-authored-by: Elastic Machine --- CHANGELOG.asciidoc | 42 +++++++++++++++++++++++++++++++++++ CHANGELOG.next.asciidoc | 7 ++++++ libbeat/docs/release.asciidoc | 1 + 3 files changed, 50 insertions(+) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 6718437a76a..6aad66a7abf 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -3,6 +3,48 @@ :issue: https://github.com/elastic/beats/issues/ :pull: https://github.com/elastic/beats/pull/ +[[release-notes-8.13.3]] +=== Beats version 8.13.3 +https://github.com/elastic/beats/compare/v8.13.2\...v8.13.3[View commits] + +==== Breaking changes + +*Metricbeat* +- Setting period for counter cache for Prometheus `remote_write` to at least to 60 seconds. {pull}38553[38553] + +==== Bugfixes + +*Affecting all Beats* +- Change cache processor documentation from `write_period` to `write_interval`. {pull}38561[38561] +- Fix cache processor expiries heap cleanup on partial file writes. {pull}38561[38561] +- Fix cache processor expiries infinite growth when large a large TTL is used and recurring keys are cached. {pull}38561[38561] +- Fix parsing of RFC 3164 process IDs in syslog processor. {issue}38947[38947] {pull}38982[38982] + +*Filebeat* + +- Fix indexing failures by re-enabling event normalisation in netflow input. {issue}38703[38703] {pull}38780[38780] +- Fix config validation for CEL and HTTPJSON inputs when using password grant authentication and `client.id` or `client.secret` are not present. {pull}38962[38962] +- Updated Websocket input title to align with existing inputs. {pull}39006[39006] +- [threatintel] MISP splitting fix for empty responses. {issue}38739[38739] {pull}38917[38917] +- Restore netflow input on Windows. {pull}39024[39024] + +==== Added + +*Affecting all Beats* + +- Update Go version to 1.21.9. {pulk}38727[38727] +- The environment variable `BEATS_ADD_CLOUD_METADATA_PROVIDERS` overrides configured/default `add_cloud_metadata` providers. {pull}38669[38669] + +*Auditbeat* + +- Add process data to file events (Linux only, eBPF backend). {pull}38199[38199] +- Add container id to file events (Linux only, eBPF backend). {pull}38328[38328] + +*Metricbeat* + +- Add new fields to configure the lease duration, retry and renew when using leader elector with Kubernetes autodiscover.{pull}38471[38471] + + [[release-notes-8.13.2]] === Beats version 8.13.2 https://github.com/elastic/beats/compare/v8.13.1\...v8.13.2[View commits] diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 22f8c34c9be..f293c504be5 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -204,6 +204,9 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add procfs backend to the `add_session_metadata` processor. {pull}38799[38799] - Add process.entity_id, process.group.name and process.group.id in add_process_metadata processor. Make fim module with kprobes backend to always add an appropriately configured add_process_metadata processor to enrich file events {pull}38776[38776] +*Auditbeat* + + *Filebeat* - Adding Saved Object name field to Kibana audit logs {pull}38307[38307] @@ -387,6 +390,10 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] + + + + diff --git a/libbeat/docs/release.asciidoc b/libbeat/docs/release.asciidoc index 69cb6b5925f..15bd5921132 100644 --- a/libbeat/docs/release.asciidoc +++ b/libbeat/docs/release.asciidoc @@ -8,6 +8,7 @@ This section summarizes the changes in each release. Also read <> for more detail about changes that affect upgrade. +* <> * <> * <> * <> From dfea840c7e2f4863c16f3053cf2aa2d19c5dc80b Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Mon, 6 May 2024 12:02:43 -0400 Subject: [PATCH 278/313] Filebeat inputs: remove the unused run mode in v2.InputManager.Init (#39381) The "v2" input migration a few years ago included a "mode" parameter that has never been used nontrivially, and today serves only to confuse input developers. This PR removes it. Every removed instance was one of: - the constant `v2.ModeRun` - opaque handoff of a received mode to a function parameter - an unused parameter - a parameter required to be equal to `v2.ModeRun` The other two modes, `v2.ModeTest` and `v2.ModeOther`, were never referenced. --- filebeat/beater/filebeat.go | 2 +- filebeat/input/filestream/environment_test.go | 4 +- .../internal/input-logfile/manager.go | 6 +-- filebeat/input/v2/input-cursor/manager.go | 6 +-- .../input/v2/input-cursor/manager_test.go | 4 +- .../input/v2/input-stateless/stateless.go | 2 +- filebeat/input/v2/input.go | 12 +----- .../input/v2/internal/inputest/inputest.go | 6 +-- filebeat/input/v2/loader.go | 4 +- filebeat/input/v2/loader_test.go | 10 ++--- filebeat/input/v2/mode_string.go | 42 ------------------- filebeat/input/v2/simplemanager.go | 2 +- filebeat/input/v2/util_test.go | 6 +-- x-pack/filebeat/input/awscloudwatch/input.go | 2 +- x-pack/filebeat/input/awss3/input.go | 2 +- x-pack/filebeat/input/cel/input_manager.go | 4 +- .../filebeat/input/entityanalytics/input.go | 2 +- .../input/entityanalytics/input_test.go | 2 +- .../internal/kvstore/manager.go | 2 +- .../internal/kvstore/manager_test.go | 3 +- .../filebeat/input/httpjson/input_manager.go | 6 +-- x-pack/filebeat/input/netflow/input.go | 2 +- .../input/salesforce/input_manager.go | 4 +- .../input/salesforce/input_manager_test.go | 3 +- x-pack/filebeat/input/shipper/input.go | 2 +- .../filebeat/input/websocket/input_manager.go | 4 +- 26 files changed, 41 insertions(+), 103 deletions(-) delete mode 100644 filebeat/input/v2/mode_string.go diff --git a/filebeat/beater/filebeat.go b/filebeat/beater/filebeat.go index b1d88fe9f74..94f50127faa 100644 --- a/filebeat/beater/filebeat.go +++ b/filebeat/beater/filebeat.go @@ -342,7 +342,7 @@ func (fb *Filebeat) Run(b *beat.Beat) error { defer func() { _ = inputTaskGroup.Stop() }() - if err := v2InputLoader.Init(&inputTaskGroup, v2.ModeRun); err != nil { + if err := v2InputLoader.Init(&inputTaskGroup); err != nil { logp.Err("Failed to initialize the input managers: %v", err) return err } diff --git a/filebeat/input/filestream/environment_test.go b/filebeat/input/filestream/environment_test.go index 88163258938..91454d7e179 100644 --- a/filebeat/input/filestream/environment_test.go +++ b/filebeat/input/filestream/environment_test.go @@ -95,7 +95,7 @@ func (e *inputTestingEnvironment) mustCreateInput(config map[string]interface{}) e.t.Helper() e.grp = unison.TaskGroup{} manager := e.getManager() - manager.Init(&e.grp, v2.ModeRun) + manager.Init(&e.grp) c := conf.MustNewConfigFrom(config) inp, err := manager.Create(c) if err != nil { @@ -107,7 +107,7 @@ func (e *inputTestingEnvironment) mustCreateInput(config map[string]interface{}) func (e *inputTestingEnvironment) createInput(config map[string]interface{}) (v2.Input, error) { e.grp = unison.TaskGroup{} manager := e.getManager() - manager.Init(&e.grp, v2.ModeRun) + manager.Init(&e.grp) c := conf.MustNewConfigFrom(config) inp, err := manager.Create(c) if err != nil { diff --git a/filebeat/input/filestream/internal/input-logfile/manager.go b/filebeat/input/filestream/internal/input-logfile/manager.go index ec25ff60b2f..cfa83006117 100644 --- a/filebeat/input/filestream/internal/input-logfile/manager.go +++ b/filebeat/input/filestream/internal/input-logfile/manager.go @@ -119,11 +119,7 @@ func (cim *InputManager) init() error { // Init starts background processes for deleting old entries from the // persistent store if mode is ModeRun. -func (cim *InputManager) Init(group unison.Group, mode v2.Mode) error { - if mode != v2.ModeRun { - return nil - } - +func (cim *InputManager) Init(group unison.Group) error { if err := cim.init(); err != nil { return err } diff --git a/filebeat/input/v2/input-cursor/manager.go b/filebeat/input/v2/input-cursor/manager.go index 74dd8a3bd34..0d004acc16a 100644 --- a/filebeat/input/v2/input-cursor/manager.go +++ b/filebeat/input/v2/input-cursor/manager.go @@ -108,11 +108,7 @@ func (cim *InputManager) init() error { // Init starts background processes for deleting old entries from the // persistent store if mode is ModeRun. -func (cim *InputManager) Init(group unison.Group, mode v2.Mode) error { - if mode != v2.ModeRun { - return nil - } - +func (cim *InputManager) Init(group unison.Group) error { if err := cim.init(); err != nil { return err } diff --git a/filebeat/input/v2/input-cursor/manager_test.go b/filebeat/input/v2/input-cursor/manager_test.go index 8cb7a015d3d..43304977d3e 100644 --- a/filebeat/input/v2/input-cursor/manager_test.go +++ b/filebeat/input/v2/input-cursor/manager_test.go @@ -62,7 +62,7 @@ func TestManager_Init(t *testing.T) { DefaultCleanTimeout: 10 * time.Millisecond, } - err := manager.Init(&grp, input.ModeRun) + err := manager.Init(&grp) require.NoError(t, err) time.Sleep(200 * time.Millisecond) @@ -94,7 +94,7 @@ func TestManager_Init(t *testing.T) { DefaultCleanTimeout: 10 * time.Millisecond, } - err := manager.Init(&grp, input.ModeRun) + err := manager.Init(&grp) require.NoError(t, err) for len(store.snapshot()) > 0 { diff --git a/filebeat/input/v2/input-stateless/stateless.go b/filebeat/input/v2/input-stateless/stateless.go index 4bc6c79c243..1b75a61b2ad 100644 --- a/filebeat/input/v2/input-stateless/stateless.go +++ b/filebeat/input/v2/input-stateless/stateless.go @@ -58,7 +58,7 @@ func NewInputManager(configure func(*conf.C) (Input, error)) InputManager { } // Init does nothing. Init is required to fullfil the v2.InputManager interface. -func (m InputManager) Init(_ unison.Group, _ v2.Mode) error { return nil } +func (m InputManager) Init(_ unison.Group) error { return nil } // Create configures a transient input and ensures that the final input can be used with // with the filebeat input architecture. diff --git a/filebeat/input/v2/input.go b/filebeat/input/v2/input.go index cdfde85c846..30b8ad333b1 100644 --- a/filebeat/input/v2/input.go +++ b/filebeat/input/v2/input.go @@ -39,7 +39,7 @@ type InputManager interface { // Init signals to InputManager to initialize internal resources. // The mode tells the input manager if the Beat is actually running the inputs or // if inputs are only configured for testing/validation purposes. - Init(grp unison.Group, mode Mode) error + Init(grp unison.Group) error // Create builds a new Input instance from the given configuation, or returns // an error if the configuation is invalid. @@ -48,16 +48,6 @@ type InputManager interface { Create(*conf.C) (Input, error) } -// Mode tells the InputManager in which mode it is initialized. -type Mode uint8 - -//go:generate stringer -type Mode -trimprefix Mode -const ( - ModeRun Mode = iota - ModeTest - ModeOther -) - // Input is a configured input object that can be used to test or start // the actual data collection. type Input interface { diff --git a/filebeat/input/v2/internal/inputest/inputest.go b/filebeat/input/v2/internal/inputest/inputest.go index 696b86e2e19..86a23e1875d 100644 --- a/filebeat/input/v2/internal/inputest/inputest.go +++ b/filebeat/input/v2/internal/inputest/inputest.go @@ -30,7 +30,7 @@ import ( // MockInputManager can be used as InputManager replacement in tests that require a new Input Manager. // The OnInit and OnConfigure functions are executed if the corresponding methods get called. type MockInputManager struct { - OnInit func(v2.Mode) error + OnInit func() error OnConfigure InputConfigurer } @@ -47,9 +47,9 @@ type MockInput struct { } // Init returns nil if OnInit is not set. Otherwise the return value of OnInit is returned. -func (m *MockInputManager) Init(_ unison.Group, mode v2.Mode) error { +func (m *MockInputManager) Init(_ unison.Group) error { if m.OnInit != nil { - return m.OnInit(mode) + return m.OnInit() } return nil } diff --git a/filebeat/input/v2/loader.go b/filebeat/input/v2/loader.go index eb7c7c88094..ef76d1b596a 100644 --- a/filebeat/input/v2/loader.go +++ b/filebeat/input/v2/loader.go @@ -63,9 +63,9 @@ func NewLoader(log *logp.Logger, plugins []Plugin, typeField, defaultType string } // Init runs Init on all InputManagers for all plugins known to the loader. -func (l *Loader) Init(group unison.Group, mode Mode) error { +func (l *Loader) Init(group unison.Group) error { for _, p := range l.registry { - if err := p.Manager.Init(group, mode); err != nil { + if err := p.Manager.Init(group); err != nil { return err } } diff --git a/filebeat/input/v2/loader_test.go b/filebeat/input/v2/loader_test.go index 56fac1a7f31..be52c0d6737 100644 --- a/filebeat/input/v2/loader_test.go +++ b/filebeat/input/v2/loader_test.go @@ -75,7 +75,7 @@ func TestLoader_New(t *testing.T) { } func TestLoader_Init(t *testing.T) { - pluginWithInit := func(name string, fn func(Mode) error) Plugin { + pluginWithInit := func(name string, fn func() error) Plugin { return Plugin{ Name: name, Stability: feature.Stable, @@ -85,7 +85,7 @@ func TestLoader_Init(t *testing.T) { t.Run("calls all input managers", func(t *testing.T) { count := 0 - incCountOnInit := func(_ Mode) error { count++; return nil } + incCountOnInit := func() error { count++; return nil } setup := loaderConfig{ Plugins: []Plugin{ @@ -94,7 +94,7 @@ func TestLoader_Init(t *testing.T) { }, } loader := setup.MustNewLoader() - err := loader.Init(nil, ModeRun) + err := loader.Init(nil) expectNoError(t, err) if count != 2 { t.Errorf("expected init count 2, but got %v", count) @@ -103,7 +103,7 @@ func TestLoader_Init(t *testing.T) { t.Run("stop init on error", func(t *testing.T) { count := 0 - incCountOnInit := func(_ Mode) error { count++; return errors.New("oops") } + incCountOnInit := func() error { count++; return errors.New("oops") } setup := loaderConfig{ Plugins: []Plugin{ pluginWithInit("a", incCountOnInit), @@ -111,7 +111,7 @@ func TestLoader_Init(t *testing.T) { }, } loader := setup.MustNewLoader() - err := loader.Init(nil, ModeRun) + err := loader.Init(nil) expectError(t, err) if count != 1 { t.Errorf("expected init count 1, but got %v", count) diff --git a/filebeat/input/v2/mode_string.go b/filebeat/input/v2/mode_string.go deleted file mode 100644 index 330b15f3a80..00000000000 --- a/filebeat/input/v2/mode_string.go +++ /dev/null @@ -1,42 +0,0 @@ -// Licensed to Elasticsearch B.V. under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. Elasticsearch B.V. licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -// Code generated by "stringer -type Mode -trimprefix Mode"; DO NOT EDIT. - -package v2 - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[ModeRun-0] - _ = x[ModeTest-1] - _ = x[ModeOther-2] -} - -const _Mode_name = "RunTestOther" - -var _Mode_index = [...]uint8{0, 3, 7, 12} - -func (i Mode) String() string { - if i >= Mode(len(_Mode_index)-1) { - return "Mode(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _Mode_name[_Mode_index[i]:_Mode_index[i+1]] -} diff --git a/filebeat/input/v2/simplemanager.go b/filebeat/input/v2/simplemanager.go index 1ce754577a0..1bd15441931 100644 --- a/filebeat/input/v2/simplemanager.go +++ b/filebeat/input/v2/simplemanager.go @@ -35,7 +35,7 @@ func ConfigureWith(fn func(*conf.C) (Input, error)) InputManager { // Init is required to fulfil the input.InputManager interface. // For the kafka input no special initialization is required. -func (*simpleInputManager) Init(grp unison.Group, m Mode) error { return nil } +func (*simpleInputManager) Init(grp unison.Group) error { return nil } // Create builds a new Input instance from the given configuration, or returns // an error if the configuration is invalid. diff --git a/filebeat/input/v2/util_test.go b/filebeat/input/v2/util_test.go index 59697b226c2..75ce747b327 100644 --- a/filebeat/input/v2/util_test.go +++ b/filebeat/input/v2/util_test.go @@ -27,7 +27,7 @@ import ( ) type fakeInputManager struct { - OnInit func(Mode) error + OnInit func() error OnConfigure func(*conf.C) (Input, error) } @@ -44,9 +44,9 @@ func makeConfigFakeInput(prototype fakeInput) func(*conf.C) (Input, error) { } } -func (m *fakeInputManager) Init(_ unison.Group, mode Mode) error { +func (m *fakeInputManager) Init(_ unison.Group) error { if m.OnInit != nil { - return m.OnInit(mode) + return m.OnInit() } return nil } diff --git a/x-pack/filebeat/input/awscloudwatch/input.go b/x-pack/filebeat/input/awscloudwatch/input.go index f274fb5fcc9..d10ae348d94 100644 --- a/x-pack/filebeat/input/awscloudwatch/input.go +++ b/x-pack/filebeat/input/awscloudwatch/input.go @@ -40,7 +40,7 @@ func Plugin() v2.Plugin { type cloudwatchInputManager struct { } -func (im *cloudwatchInputManager) Init(grp unison.Group, mode v2.Mode) error { +func (im *cloudwatchInputManager) Init(grp unison.Group) error { return nil } diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index 6c9c202b1f5..a8020eb50b8 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -47,7 +47,7 @@ type s3InputManager struct { store beater.StateStore } -func (im *s3InputManager) Init(grp unison.Group, mode v2.Mode) error { +func (im *s3InputManager) Init(grp unison.Group) error { return nil } diff --git a/x-pack/filebeat/input/cel/input_manager.go b/x-pack/filebeat/input/cel/input_manager.go index 3f70f711728..1c26b56b305 100644 --- a/x-pack/filebeat/input/cel/input_manager.go +++ b/x-pack/filebeat/input/cel/input_manager.go @@ -46,8 +46,8 @@ type source struct{ cfg config } func (s *source) Name() string { return s.cfg.Resource.URL.String() } // Init initializes both wrapped input managers. -func (m InputManager) Init(grp unison.Group, mode v2.Mode) error { - return m.cursor.Init(grp, mode) +func (m InputManager) Init(grp unison.Group) error { + return m.cursor.Init(grp) } // Create creates a cursor input manager. diff --git a/x-pack/filebeat/input/entityanalytics/input.go b/x-pack/filebeat/input/entityanalytics/input.go index 64b3ae46d33..703cc4329a8 100644 --- a/x-pack/filebeat/input/entityanalytics/input.go +++ b/x-pack/filebeat/input/entityanalytics/input.go @@ -43,7 +43,7 @@ type manager struct { // Init is not used for this input. It is called before Create and no provider // has been configured yet. -func (m *manager) Init(grp unison.Group, mode v2.Mode) error { +func (m *manager) Init(grp unison.Group) error { return nil } diff --git a/x-pack/filebeat/input/entityanalytics/input_test.go b/x-pack/filebeat/input/entityanalytics/input_test.go index c0602b07532..86f925adb22 100644 --- a/x-pack/filebeat/input/entityanalytics/input_test.go +++ b/x-pack/filebeat/input/entityanalytics/input_test.go @@ -22,7 +22,7 @@ type testProvider struct { createFn func(c *config.C) (v2.Input, error) } -func (p *testProvider) Init(grp unison.Group, mode v2.Mode) error { +func (p *testProvider) Init(grp unison.Group) error { return nil } diff --git a/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager.go b/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager.go index 97fa70dc6e1..014b81e93fc 100644 --- a/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager.go +++ b/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager.go @@ -31,7 +31,7 @@ type managerConfig struct { } // Init initializes any required resources. It is currently a no-op. -func (m *Manager) Init(grp unison.Group, mode v2.Mode) error { +func (m *Manager) Init(grp unison.Group) error { return nil } diff --git a/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager_test.go b/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager_test.go index 571edf061ac..b4d9f1be8b5 100644 --- a/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager_test.go +++ b/x-pack/filebeat/input/entityanalytics/internal/kvstore/manager_test.go @@ -10,7 +10,6 @@ import ( "github.com/stretchr/testify/require" - v2 "github.com/elastic/beats/v7/filebeat/input/v2" "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/go-concert/unison" @@ -77,7 +76,7 @@ func TestManager_Init(t *testing.T) { var grp unison.TaskGroup m := Manager{} - gotErr := m.Init(&grp, v2.ModeRun) + gotErr := m.Init(&grp) require.NoError(t, gotErr) } diff --git a/x-pack/filebeat/input/httpjson/input_manager.go b/x-pack/filebeat/input/httpjson/input_manager.go index 7eb2d628aaf..d0fea886a35 100644 --- a/x-pack/filebeat/input/httpjson/input_manager.go +++ b/x-pack/filebeat/input/httpjson/input_manager.go @@ -40,10 +40,10 @@ func NewInputManager(log *logp.Logger, store inputcursor.StateStore) InputManage } // Init initializes both wrapped input managers. -func (m InputManager) Init(grp unison.Group, mode v2.Mode) error { +func (m InputManager) Init(grp unison.Group) error { return multierr.Append( - m.stateless.Init(grp, mode), - m.cursor.Init(grp, mode), + m.stateless.Init(grp), + m.cursor.Init(grp), ) } diff --git a/x-pack/filebeat/input/netflow/input.go b/x-pack/filebeat/input/netflow/input.go index 6d479bb243f..3cd4198fb43 100644 --- a/x-pack/filebeat/input/netflow/input.go +++ b/x-pack/filebeat/input/netflow/input.go @@ -45,7 +45,7 @@ type netflowInputManager struct { log *logp.Logger } -func (im *netflowInputManager) Init(_ unison.Group, _ v2.Mode) error { +func (im *netflowInputManager) Init(_ unison.Group) error { return nil } diff --git a/x-pack/filebeat/input/salesforce/input_manager.go b/x-pack/filebeat/input/salesforce/input_manager.go index 1fb0ae42e91..49ef0513cdf 100644 --- a/x-pack/filebeat/input/salesforce/input_manager.go +++ b/x-pack/filebeat/input/salesforce/input_manager.go @@ -75,8 +75,8 @@ type source struct{ cfg config } func (s *source) Name() string { return s.cfg.URL } // Init initializes both wrapped input managers. -func (m InputManager) Init(grp unison.Group, mode v2.Mode) error { - return m.cursor.Init(grp, mode) +func (m InputManager) Init(grp unison.Group) error { + return m.cursor.Init(grp) } // Create creates a cursor input manager. diff --git a/x-pack/filebeat/input/salesforce/input_manager_test.go b/x-pack/filebeat/input/salesforce/input_manager_test.go index 90647e9d302..8b73763f93f 100644 --- a/x-pack/filebeat/input/salesforce/input_manager_test.go +++ b/x-pack/filebeat/input/salesforce/input_manager_test.go @@ -10,7 +10,6 @@ import ( "github.com/stretchr/testify/assert" - v2 "github.com/elastic/beats/v7/filebeat/input/v2" cursor "github.com/elastic/beats/v7/filebeat/input/v2/input-cursor" "github.com/elastic/beats/v7/libbeat/statestore" "github.com/elastic/beats/v7/libbeat/statestore/storetest" @@ -49,7 +48,7 @@ func TestInputManager(t *testing.T) { var inputTaskGroup unison.TaskGroup defer inputTaskGroup.Stop() //nolint:errcheck // ignore error in test - err := inputManager.Init(&inputTaskGroup, v2.ModeRun) + err := inputManager.Init(&inputTaskGroup) assert.NoError(t, err) config, err := conf.NewConfigFrom(map[string]interface{}{ diff --git a/x-pack/filebeat/input/shipper/input.go b/x-pack/filebeat/input/shipper/input.go index f2472ccf7f2..e1bda9a8768 100644 --- a/x-pack/filebeat/input/shipper/input.go +++ b/x-pack/filebeat/input/shipper/input.go @@ -60,7 +60,7 @@ func NewInputManager(log *logp.Logger) *InputManager { // Init initializes the manager // not sure if the shipper needs to do anything at this point? -func (im *InputManager) Init(_ unison.Group, _ v2.Mode) error { +func (im *InputManager) Init(_ unison.Group) error { return nil } diff --git a/x-pack/filebeat/input/websocket/input_manager.go b/x-pack/filebeat/input/websocket/input_manager.go index 49fca0b0a82..7611b6c341a 100644 --- a/x-pack/filebeat/input/websocket/input_manager.go +++ b/x-pack/filebeat/input/websocket/input_manager.go @@ -57,8 +57,8 @@ type source struct{ cfg config } func (s *source) Name() string { return s.cfg.URL.String() } // Init initializes both wrapped input managers. -func (m InputManager) Init(grp unison.Group, mode v2.Mode) error { - return m.cursor.Init(grp, mode) +func (m InputManager) Init(grp unison.Group) error { + return m.cursor.Init(grp) } // Create creates a cursor input manager. From 2f5bd9e22689962a5247c1cc28c4bdcd7e4d45dd Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Mon, 6 May 2024 15:08:05 -0400 Subject: [PATCH 279/313] chore: Update snapshot.yml (#39417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index c319dc168d3..afa963af155 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-3eefdcff-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-b7cc7ef3-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-3eefdcff-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-b7cc7ef3-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-3eefdcff-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-b7cc7ef3-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From 89aa35e509fda2c52a95c1592b72d3297ede8966 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 08:15:34 +0530 Subject: [PATCH 280/313] build(deps): bump github.com/elastic/elastic-agent-libs from 0.7.5 to 0.9.4 (#39013) * build(deps): bump github.com/elastic/elastic-agent-libs Bumps [github.com/elastic/elastic-agent-libs](https://github.com/elastic/elastic-agent-libs) from 0.7.5 to 0.9.4. - [Release notes](https://github.com/elastic/elastic-agent-libs/releases) - [Commits](https://github.com/elastic/elastic-agent-libs/compare/v0.7.5...v0.9.4) --- updated-dependencies: - dependency-name: github.com/elastic/elastic-agent-libs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] Co-authored-by: Craig MacKenzie --- NOTICE.txt | 20 +++++++++---------- go.mod | 10 +++++----- go.sum | 20 +++++++++---------- .../monitors/active/dialchain/dialers.go | 5 +++-- heartbeat/monitors/active/dialchain/util.go | 7 ++++--- metricbeat/helper/dialer/dialer_windows.go | 3 ++- x-pack/filebeat/input/cel/input.go | 5 +++++ x-pack/filebeat/input/cel/transport_other.go | 5 +++++ .../filebeat/input/cel/transport_windows.go | 5 +++++ .../filebeat/input/httpjson/client_other.go | 5 +++++ .../filebeat/input/httpjson/client_windows.go | 5 +++++ x-pack/filebeat/input/httpjson/input.go | 5 +++++ 12 files changed, 64 insertions(+), 31 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 951b7e7785c..3cee98a02e5 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -12969,11 +12969,11 @@ SOFTWARE -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-libs -Version: v0.7.5 +Version: v0.9.4 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-libs@v0.7.5/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-libs@v0.9.4/LICENSE: Apache License Version 2.0, January 2004 @@ -22336,11 +22336,11 @@ Contents of probable licence file $GOMODCACHE/github.com/prometheus/common@v0.30 -------------------------------------------------------------------------------- Dependency : github.com/prometheus/procfs -Version: v0.9.0 +Version: v0.13.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/prometheus/procfs@v0.9.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/prometheus/procfs@v0.13.0/LICENSE: Apache License Version 2.0, January 2004 @@ -25507,11 +25507,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/sync -Version: v0.5.0 +Version: v0.6.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/sync@v0.5.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/sync@v0.6.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. @@ -25544,11 +25544,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/sys -Version: v0.18.0 +Version: v0.19.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/sys@v0.18.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/sys@v0.19.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. @@ -26952,11 +26952,11 @@ Contents of probable licence file $GOMODCACHE/gotest.tools/gotestsum@v1.7.0/LICE -------------------------------------------------------------------------------- Dependency : howett.net/plist -Version: v1.0.0 +Version: v1.0.1 Licence type (autodetected): BSD-2-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/howett.net/plist@v1.0.0/LICENSE: +Contents of probable licence file $GOMODCACHE/howett.net/plist@v1.0.1/LICENSE: Copyright (c) 2013, Dustin L. Howett. All rights reserved. diff --git a/go.mod b/go.mod index ad13afabd8d..2f4dd380749 100644 --- a/go.mod +++ b/go.mod @@ -130,7 +130,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.2.0 github.com/prometheus/common v0.30.0 - github.com/prometheus/procfs v0.9.0 + github.com/prometheus/procfs v0.13.0 github.com/prometheus/prometheus v1.8.2-0.20210701133801-b0944590a1c9 github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 github.com/samuel/go-parser v0.0.0-20130731160455-ca8abbf65d0e // indirect @@ -156,8 +156,8 @@ require ( golang.org/x/mod v0.14.0 golang.org/x/net v0.23.0 golang.org/x/oauth2 v0.10.0 - golang.org/x/sync v0.5.0 - golang.org/x/sys v0.18.0 + golang.org/x/sync v0.6.0 + golang.org/x/sys v0.19.0 golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 golang.org/x/tools v0.16.0 @@ -173,7 +173,7 @@ require ( gopkg.in/yaml.v2 v2.4.0 gotest.tools v2.2.0+incompatible gotest.tools/gotestsum v1.7.0 - howett.net/plist v1.0.0 + howett.net/plist v1.0.1 k8s.io/api v0.23.4 k8s.io/apimachinery v0.23.4 k8s.io/client-go v0.23.4 @@ -204,7 +204,7 @@ require ( github.com/elastic/bayeux v1.0.5 github.com/elastic/ebpfevents v0.6.0 github.com/elastic/elastic-agent-autodiscover v0.6.14 - github.com/elastic/elastic-agent-libs v0.7.5 + github.com/elastic/elastic-agent-libs v0.9.4 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 github.com/elastic/go-elasticsearch/v8 v8.13.1 diff --git a/go.sum b/go.sum index 5c45bdee748..fefe7776b03 100644 --- a/go.sum +++ b/go.sum @@ -555,8 +555,8 @@ github.com/elastic/elastic-agent-autodiscover v0.6.14 h1:0zJYNyv9GKTOiNqCHqEVboP github.com/elastic/elastic-agent-autodiscover v0.6.14/go.mod h1:39/fHHlnyTK6oUNZfAhxJwBTVahO9tNasEIjzsxGMu8= github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= github.com/elastic/elastic-agent-client/v7 v7.8.1/go.mod h1:axl1nkdqc84YRFkeJGD9jExKNPUrOrzf3DFo2m653nY= -github.com/elastic/elastic-agent-libs v0.7.5 h1:4UMqB3BREvhwecYTs/L23oQp1hs/XUkcunPlmTZn5yg= -github.com/elastic/elastic-agent-libs v0.7.5/go.mod h1:pGMj5myawdqu+xE+WKvM5FQzKQ/MonikkWOzoFTJxaU= +github.com/elastic/elastic-agent-libs v0.9.4 h1:I6c1NAj3grJ1YZgo+U04w0csMAWGIn6eZTb23Z5MbAI= +github.com/elastic/elastic-agent-libs v0.9.4/go.mod h1:SkMnpLm+tXybBrIWK6f3rcOhrDIztLbYCV46m8gwc8g= github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 h1:sb+25XJn/JcC9/VL8HX4r4QXSUq4uTNzGS2kxOE7u1U= github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3/go.mod h1:rWarFM7qYxJKsi9WcV6ONcFjH/NA3niDNpTxO+8/GVI= github.com/elastic/elastic-agent-system-metrics v0.9.2 h1:/tvTKOt55EerU0WwGFoDhBlyWLgxyv7d8xCbny0bciw= @@ -1511,8 +1511,8 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= github.com/prometheus/prometheus v0.0.0-20200609090129-a6600f564e3c/go.mod h1:S5n0C6tSgdnwWshBUceRx5G1OsjLv/EeZ9t3wIfEtsY= github.com/prometheus/prometheus v1.8.2-0.20210701133801-b0944590a1c9 h1:If7jYp33vwa8ZQ7GGwrAs0SBjiW0aWeAB/oV1aG7bZ4= github.com/prometheus/prometheus v1.8.2-0.20210701133801-b0944590a1c9/go.mod h1:A97P+iwS3Ffpxpejz4+ASZl6i9EqSJDzxObq8DjV2SU= @@ -1994,8 +1994,8 @@ golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2112,8 +2112,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2472,8 +2472,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= -howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= +howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= +howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= k8s.io/api v0.23.4 h1:85gnfXQOWbJa1SiWGpE9EEtHs0UVvDyIsSMpEtl2D4E= diff --git a/heartbeat/monitors/active/dialchain/dialers.go b/heartbeat/monitors/active/dialchain/dialers.go index 7889ac82a27..44adf8301f7 100644 --- a/heartbeat/monitors/active/dialchain/dialers.go +++ b/heartbeat/monitors/active/dialchain/dialers.go @@ -18,6 +18,7 @@ package dialchain import ( + "context" "fmt" "net" "strconv" @@ -69,7 +70,7 @@ func UDPDialer(to time.Duration) NetDialer { // CreateNetDialer returns a NetDialer with the given timeout. func CreateNetDialer(timeout time.Duration) NetDialer { return func(event *beat.Event) (transport.Dialer, error) { - return makeDialer(func(network, address string) (net.Conn, error) { + return makeDialer(func(ctx context.Context, network, address string) (net.Conn, error) { var namespace string switch network { @@ -100,7 +101,7 @@ func CreateNetDialer(timeout time.Duration) NetDialer { dialer := &net.Dialer{Timeout: timeout} start := time.Now() - conn, err := transport.DialWith(dialer, network, host, addresses, port) + conn, err := transport.DialWith(ctx, dialer, network, host, addresses, port) if err != nil { return nil, ecserr.NewCouldNotConnectErr(host, port, err) } diff --git a/heartbeat/monitors/active/dialchain/util.go b/heartbeat/monitors/active/dialchain/util.go index cb4ddc64cfe..99a5381289e 100644 --- a/heartbeat/monitors/active/dialchain/util.go +++ b/heartbeat/monitors/active/dialchain/util.go @@ -18,6 +18,7 @@ package dialchain import ( + "context" "net" "time" @@ -58,7 +59,7 @@ func (t *timer) stop() { t.e = time.Now() } func (t *timer) duration() time.Duration { return t.e.Sub(t.s) } // makeDialer aliases transport.DialerFunc -func makeDialer(fn func(network, address string) (net.Conn, error)) transport.Dialer { +func makeDialer(fn func(ctx context.Context, network, address string) (net.Conn, error)) transport.Dialer { return transport.DialerFunc(fn) } @@ -66,7 +67,7 @@ func makeDialer(fn func(network, address string) (net.Conn, error)) transport.Di // The callback must return the original or a new address to be used with // the dialer. func beforeDial(dialer transport.Dialer, fn func(string) string) transport.Dialer { - return makeDialer(func(network, address string) (net.Conn, error) { + return makeDialer(func(ctx context.Context, network, address string) (net.Conn, error) { address = fn(address) return dialer.Dial(network, address) }) @@ -74,7 +75,7 @@ func beforeDial(dialer transport.Dialer, fn func(string) string) transport.Diale // afterDial will run fn after the dialer did successfully return a connection. func afterDial(dialer transport.Dialer, fn func(net.Conn) (net.Conn, error)) transport.Dialer { - return makeDialer(func(network, address string) (net.Conn, error) { + return makeDialer(func(ctx context.Context, network, address string) (net.Conn, error) { conn, err := dialer.Dial(network, address) if err == nil { conn, err = fn(conn) diff --git a/metricbeat/helper/dialer/dialer_windows.go b/metricbeat/helper/dialer/dialer_windows.go index 0ef34666d2a..94e383e4cb6 100644 --- a/metricbeat/helper/dialer/dialer_windows.go +++ b/metricbeat/helper/dialer/dialer_windows.go @@ -20,6 +20,7 @@ package dialer import ( + "context" "errors" "net" "strings" @@ -60,7 +61,7 @@ func (t *NpipeDialerBuilder) String() string { func (t *NpipeDialerBuilder) Make(timeout time.Duration) (transport.Dialer, error) { to := timeout return transport.DialerFunc( - func(_, _ string) (net.Conn, error) { + func(_ context.Context, _ string, _ string) (net.Conn, error) { return winio.DialPipe( strings.TrimSuffix(npipe.TransformString(t.Path), "/"), &to, diff --git a/x-pack/filebeat/input/cel/input.go b/x-pack/filebeat/input/cel/input.go index 3428a730ce3..88d7a20b458 100644 --- a/x-pack/filebeat/input/cel/input.go +++ b/x-pack/filebeat/input/cel/input.go @@ -808,6 +808,11 @@ func (d socketDialer) Dial(_, _ string) (net.Conn, error) { return net.Dial("unix", d.path) } +func (d socketDialer) DialContext(ctx context.Context, _, _ string) (net.Conn, error) { + var nd net.Dialer + return nd.DialContext(ctx, "unix", d.path) +} + func checkRedirect(cfg *ResourceConfig, log *logp.Logger) func(*http.Request, []*http.Request) error { return func(req *http.Request, via []*http.Request) error { log.Debug("http client: checking redirect") diff --git a/x-pack/filebeat/input/cel/transport_other.go b/x-pack/filebeat/input/cel/transport_other.go index 387d2f92ea5..46fe74ee84f 100644 --- a/x-pack/filebeat/input/cel/transport_other.go +++ b/x-pack/filebeat/input/cel/transport_other.go @@ -7,6 +7,7 @@ package cel import ( + "context" "errors" "net" ) @@ -19,3 +20,7 @@ type npipeDialer struct { func (npipeDialer) Dial(_, _ string) (net.Conn, error) { return nil, errors.New("named pipe only available on windows") } + +func (npipeDialer) DialContext(_ context.Context, _, _ string) (net.Conn, error) { + return nil, errors.New("named pipe only available on windows") +} diff --git a/x-pack/filebeat/input/cel/transport_windows.go b/x-pack/filebeat/input/cel/transport_windows.go index 7ab3ffc664b..1595917ff49 100644 --- a/x-pack/filebeat/input/cel/transport_windows.go +++ b/x-pack/filebeat/input/cel/transport_windows.go @@ -7,6 +7,7 @@ package cel import ( + "context" "net" "path/filepath" @@ -21,3 +22,7 @@ type npipeDialer struct { func (d npipeDialer) Dial(_, _ string) (net.Conn, error) { return winio.DialPipe(`\\.\pipe`+filepath.FromSlash(d.path), nil) } + +func (d npipeDialer) DialContext(ctx context.Context, _, _ string) (net.Conn, error) { + return winio.DialPipeContext(ctx, `\\.\pipe`+filepath.FromSlash(d.path)) +} diff --git a/x-pack/filebeat/input/httpjson/client_other.go b/x-pack/filebeat/input/httpjson/client_other.go index 59bfb7598e1..19afe99edbf 100644 --- a/x-pack/filebeat/input/httpjson/client_other.go +++ b/x-pack/filebeat/input/httpjson/client_other.go @@ -7,6 +7,7 @@ package httpjson import ( + "context" "errors" "net" ) @@ -19,3 +20,7 @@ type npipeDialer struct { func (npipeDialer) Dial(_, _ string) (net.Conn, error) { return nil, errors.New("named pipe only available on windows") } + +func (npipeDialer) DialContext(_ context.Context, _, _ string) (net.Conn, error) { + return nil, errors.New("named pipe only available on windows") +} diff --git a/x-pack/filebeat/input/httpjson/client_windows.go b/x-pack/filebeat/input/httpjson/client_windows.go index e6e5bb05f34..7fb4414877a 100644 --- a/x-pack/filebeat/input/httpjson/client_windows.go +++ b/x-pack/filebeat/input/httpjson/client_windows.go @@ -7,6 +7,7 @@ package httpjson import ( + "context" "net" "path/filepath" @@ -21,3 +22,7 @@ type npipeDialer struct { func (d npipeDialer) Dial(_, _ string) (net.Conn, error) { return winio.DialPipe(`\\.\pipe`+filepath.FromSlash(d.path), nil) } + +func (d npipeDialer) DialContext(ctx context.Context, _, _ string) (net.Conn, error) { + return winio.DialPipeContext(ctx, `\\.\pipe`+filepath.FromSlash(d.path)) +} diff --git a/x-pack/filebeat/input/httpjson/input.go b/x-pack/filebeat/input/httpjson/input.go index 0def1cbd8b6..0764259619b 100644 --- a/x-pack/filebeat/input/httpjson/input.go +++ b/x-pack/filebeat/input/httpjson/input.go @@ -358,6 +358,11 @@ func (d socketDialer) Dial(_, _ string) (net.Conn, error) { return net.Dial("unix", d.path) } +func (d socketDialer) DialContext(ctx context.Context, _, _ string) (net.Conn, error) { + var nd net.Dialer + return nd.DialContext(ctx, "unix", d.path) +} + func checkRedirect(config *requestConfig, log *logp.Logger) func(*http.Request, []*http.Request) error { return func(req *http.Request, via []*http.Request) error { log.Debug("http client: checking redirect") From 4f5b23a89f7f1b8a3b31c999409a001b414acafc Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Tue, 7 May 2024 11:01:57 +0300 Subject: [PATCH 281/313] Update x-pack/heartbeat pipeline to match Jenkins (#39239) * updated win-2016 test cmd * updated macos namimg * pr fixes * removed pipeline masking where irrelevant --- .../x-pack/pipeline.xpack.heartbeat.yml | 51 +++++++++++-------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 136706e698c..239bd033568 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -2,7 +2,8 @@ name: "beats-xpack-heartbeat" env: - AWS_ARM_INSTANCE_TYPE: "t4g.xlarge" + AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" + AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" @@ -11,7 +12,6 @@ env: IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" @@ -30,7 +30,7 @@ steps: - group: "x-pack/heartbeat Mandatory Tests" key: "x-pack-heartbeat-mandatory-tests" steps: - - label: ":linux: Ubuntu Unit Tests" + - label: ":ubuntu: x-pack/heartbeat Ubuntu Unit Tests" key: "mandatory-linux-unit-test" command: | set -euo pipefail @@ -53,7 +53,7 @@ steps: - github_commit_status: context: "x-pack/heartbeat: Ubuntu Unit Tests" - - label: ":go: Go Integration Tests" + - label: ":ubuntu: x-pack/heartbeat Go Integration Tests" key: "mandatory-int-test" command: | set -euo pipefail @@ -76,12 +76,12 @@ steps: - github_commit_status: context: "x-pack/heartbeat: Go Integration Tests" - - label: ":windows: Windows 2016 Unit Tests" + - label: ":windows: x-pack/heartbeat Windows 2016 Unit Tests" key: "mandatory-win-2016-unit-tests" skip: "skipping due to elastic/beats#23957 and elastic/beats#23958" command: | Set-Location -Path x-pack/heartbeat - mage build unitTest + mage build test retry: automatic: - limit: 3 @@ -98,7 +98,8 @@ steps: - github_commit_status: context: "x-pack/heartbeat: Windows 2016 Unit Tests" - - label: ":windows: Windows 2022 Unit Tests" + # Doesn't exist in Jenkins + - label: ":windows: x-pack/heartbeat Windows 2022 Unit Tests" key: "mandatory-win-2022-unit-tests" skip: "skipping due to elastic/beats#23957 and elastic/beats#23958" command: | @@ -124,8 +125,9 @@ steps: key: "x-pack-heartbeat-extended-win-tests" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ skip: "skipping due to elastic/beats#23957 and elastic/beats#23958" + steps: - - label: ":windows: Windows 10 Unit Tests" + - label: ":windows: x-pack/heartbeat Windows 10 Unit Tests" command: | Set-Location -Path x-pack/heartbeat mage build test @@ -146,7 +148,8 @@ steps: - github_commit_status: context: "x-pack/heartbeat: Windows 10 Unit Tests" - - label: ":windows: Windows 11 Unit Tests" + # Doesn't exist in Jenkins + - label: ":windows: x-pack/heartbeat Windows 11 Unit Tests" command: | Set-Location -Path x-pack/heartbeat mage build test @@ -167,7 +170,7 @@ steps: - github_commit_status: context: "x-pack/heartbeat: Windows 11 Unit Tests" - - label: ":windows: Windows 2019 Unit Tests" + - label: ":windows: x-pack/heartbeat Windows 2019 Unit Tests" command: | Set-Location -Path x-pack/heartbeat mage build test @@ -188,11 +191,12 @@ steps: - github_commit_status: context: "x-pack/heartbeat: Windows 2019 Unit Tests" - - group: "x-pack/heartbeat MacOS Extended Tests" + - group: "x-pack/heartbeat macOS Extended Tests" key: "x-pack-heartbeat-extended-tests-macos" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + steps: - - label: ":mac: MacOS x86_64 Unit Tests" + - label: ":mac: x-pack/heartbeat macOS x86_64 Unit Tests" command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -211,9 +215,9 @@ steps: - "x-pack/heartbeat/build/*.json" notify: - github_commit_status: - context: "x-pack/heartbeat: MacOS x86_64 Extended Tests" + context: "x-pack/heartbeat: macOS x86_64 Extended Tests" - - label: ":mac: MacOS arm64 Unit Tests" + - label: ":mac: x-pack/heartbeat macOS arm64 Unit Tests" command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -232,18 +236,21 @@ steps: - "x-pack/heartbeat/build/*.json" notify: - github_commit_status: - context: "x-pack/heartbeat: MacOS arm64 Extended Tests" + context: "x-pack/heartbeat: macOS arm64 Extended Tests" - wait: ~ + # with PRs, we want to run packaging only if mandatory tests succeed + # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests + # this allows building DRA artifacts even if there is flakiness in mandatory tests if: build.env("BUILDKITE_PULL_REQUEST") != "false" depends_on: - step: "x-pack-heartbeat-mandatory-tests" - - group: "Packaging" - key: "packaging" + - group: "x-pack/heartbeat Packaging" + key: "x-pack-heartbeat-packaging" if: build.env("BUILDKITE_PULL_REQUEST") != "false" steps: - - label: ":linux: Packaging Linux" + - label: ":ubuntu: x-pack/heartbeat Packaging Linux x86_64" key: "packaging-linux" command: | cd x-pack/heartbeat @@ -258,20 +265,20 @@ steps: PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" notify: - github_commit_status: - context: "x-pack/heartbeat: Packaging Linux" + context: "x-pack/heartbeat: Packaging Linux x86_64" - - label: ":linux: Packaging ARM" + - label: ":ubuntu: x-pack/heartbeat Packaging Linux arm64" key: "packaging-arm" command: | cd x-pack/heartbeat mage package agents: provider: "aws" - imagePrefix: "${IMAGE_UBUNTU_ARM_64}" + imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" env: PLATFORMS: "linux/arm64" PACKAGES: "docker" notify: - github_commit_status: - context: "x-pack/heartbeat: Packaging Linux ARM" + context: "x-pack/heartbeat: Packaging Linux arm64" From f4a984d21af608bc2f826a6298a6dbaf21ea7589 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 7 May 2024 16:33:36 +0300 Subject: [PATCH 282/313] Disable 7.17 DRA packaging from Jenkins (#39428) This commit disables triggering DRA packaging builds for the 7.17 branch via Jenkins. --- .ci/jobs/packaging.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.ci/jobs/packaging.yml b/.ci/jobs/packaging.yml index 4020c7479d2..8dd8fb6bd85 100644 --- a/.ci/jobs/packaging.yml +++ b/.ci/jobs/packaging.yml @@ -13,8 +13,8 @@ discover-pr-forks-strategy: 'merge-current' discover-pr-forks-trust: 'permission' discover-pr-origin: 'merge-current' - discover-tags: true - head-filter-regex: '(7\.17|PR-.*)' + discover-tags: false + head-filter-regex: '(PR-.*)' disable-pr-notifications: true notification-context: 'beats-packaging' repo: 'beats' @@ -27,10 +27,6 @@ - tags: ignore-tags-older-than: -1 ignore-tags-newer-than: 30 - - named-branches: - - regex-name: - regex: '7\.17' - case-sensitive: true - change-request: ignore-target-only-changes: true clean: From fd7879914e8836480755f95880873112696ebd5a Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 7 May 2024 18:24:19 +0300 Subject: [PATCH 283/313] Auto trigger DRA for all 8.x branches (#39386) (#39439) This commit adds 7.17 to the whitelist of branches that may trigger Buildkite DRA builds. Relates: https://github.com/elastic/ingest-dev/issues/3095 --- catalog-info.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/catalog-info.yaml b/catalog-info.yaml index 0e79d2ad848..89ef7a216f9 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -1040,9 +1040,7 @@ spec: spec: repository: elastic/beats pipeline_file: ".buildkite/packaging.pipeline.yml" - branch_configuration: "main 8.*" - # TODO enable after packaging backports for release branches - # branch_configuration: "main 8.* 7.17" + branch_configuration: "main 8.* 7.17" cancel_intermediate_builds: false skip_intermediate_builds: false maximum_timeout_in_minutes: 90 From 2530ce9c713c25f3c4779678e9112462a1a59145 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Wed, 8 May 2024 05:18:55 +1000 Subject: [PATCH 284/313] chore: Update snapshot.yml (#39442) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli Co-authored-by: apmmachine Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- testing/environments/snapshot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing/environments/snapshot.yml b/testing/environments/snapshot.yml index afa963af155..e84c20b0ea0 100644 --- a/testing/environments/snapshot.yml +++ b/testing/environments/snapshot.yml @@ -3,7 +3,7 @@ version: '2.3' services: elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-b7cc7ef3-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0-177234da-SNAPSHOT # When extend is used it merges healthcheck.tests, see: # https://github.com/docker/compose/issues/8962 # healthcheck: @@ -31,7 +31,7 @@ services: - "./docker/elasticsearch/users_roles:/usr/share/elasticsearch/config/users_roles" logstash: - image: docker.elastic.co/logstash/logstash:8.15.0-b7cc7ef3-SNAPSHOT + image: docker.elastic.co/logstash/logstash:8.15.0-177234da-SNAPSHOT healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9600/_node/stats"] retries: 600 @@ -44,7 +44,7 @@ services: - 5055:5055 kibana: - image: docker.elastic.co/kibana/kibana:8.15.0-b7cc7ef3-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.15.0-177234da-SNAPSHOT environment: - "ELASTICSEARCH_USERNAME=kibana_system_user" - "ELASTICSEARCH_PASSWORD=testing" From b6b428018cffbe6aee5db266ee8bda85d0edd9a9 Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Wed, 8 May 2024 09:42:08 +0300 Subject: [PATCH 285/313] Add MODULE definition for x-pack/dockerlogbeat Go Integration tests (#39235) * added MODULE env var definition * removed MODULE setup from common.sh * updated pipeline and scripts * pr fixes * removed pipeline masking where irrelevant * updated packaging step & gh notif names --- .buildkite/pipeline.yml | 2 +- .buildkite/scripts/common.sh | 7 +-- .buildkite/scripts/setenv.sh | 2 +- .../x-pack/pipeline.xpack.dockerlogbeat.yml | 48 +++++++++++++------ 4 files changed, 37 insertions(+), 22 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 2c00f376cf2..66fca45bbff 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -139,7 +139,7 @@ steps: commit: "${BUILDKITE_COMMIT}" branch: "${BUILDKITE_BRANCH}" - - label: "Trigger Xpack/Dockerlogbeat" + - label: "Trigger x-pack/dockerlogbeat" if: build.pull_request.id != null plugins: - monorepo-diff#v1.0.1: diff --git a/.buildkite/scripts/common.sh b/.buildkite/scripts/common.sh index b37ac7494fd..ed855df9970 100755 --- a/.buildkite/scripts/common.sh +++ b/.buildkite/scripts/common.sh @@ -24,11 +24,6 @@ XPACK_MODULE_PATTERN="^x-pack\\/[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" # define if needed run cloud-specific tests for the particular beat [ -z "${run_xpack_metricbeat_aws_tests+x}" ] && run_xpack_metricbeat_aws_tests="$(buildkite-agent meta-data get run_xpack_metricbeat_aws_tests --default "false")" - -xpack_dockerlogbeat_changeset=( - "^x-pack/dockerlogbeat/.*" - ) - ci_changeset=( "^.buildkite/.*" ) @@ -478,7 +473,7 @@ if are_paths_changed "${packaging_changeset[@]}" ; then export PACKAGING_CHANGES="true" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" fi diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index f806b131a7a..383ff6ff56b 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -49,7 +49,7 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_S export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi -if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-dockerlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then +if [[ "$BUILDKITE_STEP_KEY" == "xpack-winlogbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "xpack-metricbeat-pipeline" || "$BUILDKITE_STEP_KEY" == "metricbeat-pipeline" ]]; then source .buildkite/scripts/common.sh # Set the MODULE env variable if possible, it should be defined before generating pipeline's steps. It is used in multiple pipelines. defineModuleFromTheChangeSet "${BEATS_PROJECT_NAME}" diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index a64f7851913..f874f0c45e9 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -2,16 +2,14 @@ name: "beats-xpack-dockerlogbeat" env: - ASDF_MAGE_VERSION: 1.15.0 - AWS_ARM_INSTANCE_TYPE: "m6g.xlarge" AWS_IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" GCP_WIN_MACHINE_TYPE: "n2-standard-8" - IMAGE_MACOS_ARM: "generic-13-ventura-arm" + IMAGE_MACOS_X86_64: "generic-13-ventura-x64" IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" @@ -21,13 +19,18 @@ env: IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" + # Other deps + ASDF_MAGE_VERSION: 1.15.0 + steps: - - group: "Xpack/Dockerlogbeat Mandatory Tests" + - group: "x-pack/dockerlogbeat Mandatory Tests" key: "xpack-dockerlogbeat-mandatory-tests" steps: - - label: ":ubuntu: Xpack/Dockerlogbeat Ubuntu Unit Tests" + - label: ":ubuntu: x-pack/dockerlogbeat Ubuntu Unit Tests" key: "mandatory-linux-unit-test" - command: "cd x-pack/dockerlogbeat && mage build unitTest" + command: | + cd x-pack/dockerlogbeat + mage build unitTest retry: automatic: - limit: 3 @@ -42,9 +45,16 @@ steps: - github_commit_status: context: "x-pack/dockerlogbeat: Ubuntu Unit Tests" - - label: ":ubuntu: Xpack/Dockerlogbeat Go Integration Tests" + - label: ":ubuntu: x-pack/dockerlogbeat Go (Module) Integration Tests" key: "mandatory-int-test" - command: "cd x-pack/dockerlogbeat && mage goIntegTest" + command: | + set -euo pipefail + # defines the MODULE env var based on what's changed in a PR + source .buildkite/scripts/changesets.sh + defineModuleFromTheChangeSet x-pack/dockerlogbeat + echo "~~~ Running tests with env var MODULE=$$MODULE" + cd x-pack/dockerlogbeat + mage goIntegTest env: MODULE: $MODULE retry: @@ -59,7 +69,7 @@ steps: - "x-pack/dockerlogbeat/build/*.json" notify: - github_commit_status: - context: "x-pack/dockerlogbeat: Go Integration Tests" + context: "x-pack/dockerlogbeat: Go (Module) Integration Tests" - wait: ~ # with PRs, we want to run packaging only if mandatory tests succeed @@ -69,29 +79,39 @@ steps: depends_on: - "xpack-dockerlogbeat-mandatory-tests" - - group: "Xpack/Dockerlogbeat Packaging" + - group: "x-pack/dockerlogbeat Packaging" key: "xpack-dockerlogbeat-packaging" steps: - - label: ":ubuntu: Xpack/Dockerlogbeat Packaging Linux X86" + - label: ":ubuntu: x-pack/dockerlogbeat Packaging Linux" key: "auditbeat-package-linux-x86" env: PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" SNAPSHOT: true - command: "cd x-pack/dockerlogbeat && mage package" + command: | + cd x-pack/dockerlogbeat + mage package agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" + notify: + - github_commit_status: + context: "x-pack/dockerlogbeat: Packaging Linux" - - label: ":linux: Xpack/Dockerlogbeat Packaging Linux ARM" + - label: ":linux: x-pack/dockerlogbeat Packaging Linux arm64" key: "auditbeat-package-linux-arm" env: PLATFORMS: "linux/arm64" PACKAGES: "docker" SNAPSHOT: true - command: "cd x-pack/dockerlogbeat && mage package" + command: | + cd x-pack/dockerlogbeat + mage package agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" instanceType: "${AWS_ARM_INSTANCE_TYPE}" + notify: + - github_commit_status: + context: "x-pack/dockerlogbeat: Packaging Linux arm64" From f5bb6423fab42759e638b296ea39266a0a14a1b7 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Wed, 8 May 2024 16:43:41 +0930 Subject: [PATCH 286/313] x-pack/filebeat/input/entityanalytics/provider/azuread: fix query handling (#39420) --- CHANGELOG.next.asciidoc | 1 + x-pack/filebeat/input/awss3/input_test.go | 3 ++- .../provider/azuread/fetcher/graph/graph.go | 22 ++++++++++--------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index f293c504be5..92a79460b6a 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -144,6 +144,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Restore netflow input on Windows {pull}39024[39024] - Upgrade azure-event-hubs-go and azure-storage-blob-go dependencies. {pull}38861[38861] - Fix concurrency/error handling bugs in the AWS S3 input that could drop data and prevent ingestion of large buckets. {pull}39131[39131] +- Fix EntraID query handling. {issue}39419[39419] {pull}39420[39420] *Heartbeat* diff --git a/x-pack/filebeat/input/awss3/input_test.go b/x-pack/filebeat/input/awss3/input_test.go index c76e939424f..bf33073cb2a 100644 --- a/x-pack/filebeat/input/awss3/input_test.go +++ b/x-pack/filebeat/input/awss3/input_test.go @@ -8,8 +8,9 @@ import ( "errors" "testing" - aws "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" "github.com/stretchr/testify/assert" + + aws "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" ) func TestGetProviderFromDomain(t *testing.T) { diff --git a/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go b/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go index 01d2d707025..558e277d106 100644 --- a/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go +++ b/x-pack/filebeat/input/entityanalytics/provider/azuread/fetcher/graph/graph.go @@ -31,9 +31,10 @@ import ( const ( defaultAPIEndpoint = "https://graph.microsoft.com/v1.0" - defaultGroupsQuery = "$select=displayName,members" - defaultUsersQuery = "$select=accountEnabled,userPrincipalName,mail,displayName,givenName,surname,jobTitle,officeLocation,mobilePhone,businessPhones" - defaultDevicesQuery = "$select=accountEnabled,deviceId,displayName,operatingSystem,operatingSystemVersion,physicalIds,extensionAttributes,alternativeSecurityIds" + queryName = "$select" + defaultGroupsQuery = "displayName,members" + defaultUsersQuery = "accountEnabled,userPrincipalName,mail,displayName,givenName,surname,jobTitle,officeLocation,mobilePhone,businessPhones" + defaultDevicesQuery = "accountEnabled,deviceId,displayName,operatingSystem,operatingSystemVersion,physicalIds,extensionAttributes,alternativeSecurityIds" apiGroupType = "#microsoft.graph.group" apiUserType = "#microsoft.graph.user" @@ -353,21 +354,21 @@ func New(cfg *config.C, logger *logp.Logger, auth authenticator.Authenticator) ( if err != nil { return nil, fmt.Errorf("invalid groups URL endpoint: %w", err) } - groupsURL.RawQuery = url.QueryEscape(formatQuery(c.Select.GroupQuery, defaultGroupsQuery)) + groupsURL.RawQuery = formatQuery(queryName, c.Select.GroupQuery, defaultGroupsQuery) f.groupsURL = groupsURL.String() usersURL, err := url.Parse(f.conf.APIEndpoint + "/users/delta") if err != nil { return nil, fmt.Errorf("invalid users URL endpoint: %w", err) } - usersURL.RawQuery = url.QueryEscape(formatQuery(c.Select.UserQuery, defaultUsersQuery)) + usersURL.RawQuery = formatQuery(queryName, c.Select.UserQuery, defaultUsersQuery) f.usersURL = usersURL.String() devicesURL, err := url.Parse(f.conf.APIEndpoint + "/devices/delta") if err != nil { return nil, fmt.Errorf("invalid devices URL endpoint: %w", err) } - devicesURL.RawQuery = url.QueryEscape(formatQuery(c.Select.DeviceQuery, defaultDevicesQuery)) + devicesURL.RawQuery = formatQuery(queryName, c.Select.DeviceQuery, defaultDevicesQuery) f.devicesURL = devicesURL.String() // The API takes a departure from the query approach here, so we @@ -382,11 +383,12 @@ func New(cfg *config.C, logger *logp.Logger, auth authenticator.Authenticator) ( return &f, nil } -func formatQuery(query []string, dflt string) string { - if len(query) == 0 { - return dflt +func formatQuery(name string, query []string, dflt string) string { + q := dflt + if len(query) != 0 { + q = strings.Join(query, ",") } - return "$select=" + strings.Join(query, ",") + return url.Values{name: []string{q}}.Encode() } // newUserFromAPI translates an API-representation of a user to a fetcher.User. From d1089d151aca32b5ed32b5c598e34afd95bd4e77 Mon Sep 17 00:00:00 2001 From: Michael Katsoulis Date: Wed, 8 May 2024 13:00:38 +0300 Subject: [PATCH 287/313] Add kubernetes.pod.status_reason and kubernetes.pod.status.ready_time fields in Kubernetes state_pod metricset (#39316) * Add kubernetes.pod.status_reason and kubernetes.pod.status.ready_time fields * Update tests and docs * Declare timestamp field as double * Add evicted pod ksm * Changelog entry * Update field description --- CHANGELOG.next.asciidoc | 1 + metricbeat/docs/fields.asciidoc | 20 +++ .../_meta/test/KSM/ksm.v2.12.0.plain | 2 +- metricbeat/module/kubernetes/fields.go | 2 +- .../kubernetes/state_pod/_meta/data.json | 10 +- .../kubernetes/state_pod/_meta/fields.yml | 8 ++ .../_meta/test/ksm.v2.10.0.plain.expected | 76 ++++++----- .../_meta/test/ksm.v2.11.0.plain.expected | 123 ++++++++++-------- .../_meta/test/ksm.v2.12.0.plain.expected | 107 ++++++++------- .../_meta/testdata/docs.plain-expected.json | 118 +++++++++-------- .../testdata/ksm.v2.10.0.plain-expected.json | 82 +++++++----- .../testdata/ksm.v2.11.0.plain-expected.json | 107 ++++++++------- .../testdata/ksm.v2.12.0.plain-expected.json | 119 +++++++++-------- .../module/kubernetes/state_pod/state_pod.go | 10 +- 14 files changed, 452 insertions(+), 333 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 92a79460b6a..fdbb36ad275 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -290,6 +290,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add SSL support to mysql module {pull}37997[37997] - Add SSL support for aerospike module {pull}38126[38126] - Add last_terminated_timestamp metric in kubernetes module {pull}39200[39200] {issue}3802[3802] +- Add pod.status.ready_time and pod.status.reason metrics in kubernetes module {pull}39316[39316] *Metricbeat* diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index ca8f1185445..708d996f99d 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -46811,6 +46811,26 @@ type: keyword -- +*`kubernetes.pod.status.reason`*:: ++ +-- +The reason the pod is in its current state (Evicted, NodeAffinity, NodeLost, Shutdown or UnexpectedAdmissionError) + + +type: keyword + +-- + +*`kubernetes.pod.status.ready_time`*:: ++ +-- +Readiness achieved time in unix timestamp for a pod + + +type: double + +-- + [float] === replicaset diff --git a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain index 35cf6a5ab8c..35b3f0e3aa0 100644 --- a/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain +++ b/metricbeat/module/kubernetes/_meta/test/KSM/ksm.v2.12.0.plain @@ -1057,7 +1057,7 @@ kube_pod_status_container_ready_time{namespace="kube-system",pod="kube-scheduler kube_pod_status_container_ready_time{namespace="kube-system",pod="coredns-76f75df574-v8skx",uid="b02dd54a-7c6b-4a45-8f42-cbc00c6fb040"} 1.713862204e+09 # HELP kube_pod_status_reason The pod status reasons # TYPE kube_pod_status_reason gauge -kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Evicted"} 0 +kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Evicted"} 1 kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeAffinity"} 0 kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="NodeLost"} 0 kube_pod_status_reason{namespace="default",pod="web-0",uid="37dd3592-b439-4090-a233-49b8faa2b9b3",reason="Shutdown"} 0 diff --git a/metricbeat/module/kubernetes/fields.go b/metricbeat/module/kubernetes/fields.go index 1c89d8a6235..36d93f81a8e 100644 --- a/metricbeat/module/kubernetes/fields.go +++ b/metricbeat/module/kubernetes/fields.go @@ -32,5 +32,5 @@ func init() { // AssetKubernetes returns asset data. // This is the base64 encoded zlib format compressed contents of module/kubernetes. func AssetKubernetes() string { - return "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" + return "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" } diff --git a/metricbeat/module/kubernetes/state_pod/_meta/data.json b/metricbeat/module/kubernetes/state_pod/_meta/data.json index 41ba094c58e..3d0dc66558b 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/data.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/data.json @@ -6,17 +6,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "etcd-kind-control-plane", + "ip": "10.244.0.173", + "name": "hello-28564555-zdfjz", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } diff --git a/metricbeat/module/kubernetes/state_pod/_meta/fields.yml b/metricbeat/module/kubernetes/state_pod/_meta/fields.yml index 157ec4ec411..988851b7a6f 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/fields.yml +++ b/metricbeat/module/kubernetes/state_pod/_meta/fields.yml @@ -25,3 +25,11 @@ type: keyword description: > Kubernetes pod scheduled status (true, false, unknown) + - name: reason + type: keyword + description: > + The reason the pod is in its current state (Evicted, NodeAffinity, NodeLost, Shutdown or UnexpectedAdmissionError) + - name: ready_time + type: double + description: > + Readiness achieved time in unix timestamp for a pod diff --git a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.10.0.plain.expected b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.10.0.plain.expected index 1a6a2705b72..77419e6472e 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.10.0.plain.expected +++ b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.10.0.plain.expected @@ -2,18 +2,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-6bc4bddd6b-6vl7d", + "ip": "10.244.0.5", + "name": "kube-state-metrics-7857446fb4-x78j6", "status": { "phase": "running", "ready": "true", + "ready_time": 1698751133, "scheduled": "true" } }, @@ -39,10 +40,11 @@ "MetricSetFields": { "host_ip": "172.18.0.2", "ip": "172.18.0.2", - "name": "kube-proxy-2nq9k", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675684, "scheduled": "true" } }, @@ -60,18 +62,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.8", - "name": "hello-mwrpw", + "ip": "172.18.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1698675686, "scheduled": "true" } }, @@ -96,11 +99,12 @@ }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.7", - "name": "fluentd-elasticsearch-m2tlp", + "ip": "10.244.0.3", + "name": "coredns-5d78c9869d-crtn9", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675701, "scheduled": "true" } }, @@ -125,8 +129,8 @@ }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.9", - "name": "hello-28312520-d5d5s", + "ip": "10.244.0.8", + "name": "hello-mwrpw", "status": { "phase": "succeeded", "ready": "false", @@ -154,11 +158,12 @@ }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.3", - "name": "coredns-5d78c9869d-crtn9", + "ip": "10.244.0.4", + "name": "coredns-5d78c9869d-gskzq", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675701, "scheduled": "true" } }, @@ -176,18 +181,18 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.4", - "name": "coredns-5d78c9869d-gskzq", + "ip": "10.244.0.9", + "name": "hello-28312520-d5d5s", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } }, @@ -213,10 +218,11 @@ "MetricSetFields": { "host_ip": "172.18.0.2", "ip": "172.18.0.2", - "name": "kube-scheduler-kind-control-plane", + "name": "kindnet-xg6gs", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675698, "scheduled": "true" } }, @@ -241,11 +247,12 @@ }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.5", - "name": "kube-state-metrics-7857446fb4-x78j6", + "ip": "10.244.0.7", + "name": "fluentd-elasticsearch-m2tlp", "status": { "phase": "running", "ready": "true", + "ready_time": 1698751174, "scheduled": "true" } }, @@ -271,10 +278,11 @@ "MetricSetFields": { "host_ip": "172.18.0.2", "ip": "172.18.0.2", - "name": "kube-controller-manager-kind-control-plane", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675692, "scheduled": "true" } }, @@ -300,10 +308,11 @@ "MetricSetFields": { "host_ip": "172.18.0.2", "ip": "172.18.0.2", - "name": "kindnet-xg6gs", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675692, "scheduled": "true" } }, @@ -321,18 +330,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-apiserver-kind-control-plane", + "ip": "10.244.0.6", + "name": "web-0", "status": { "phase": "running", "ready": "true", + "ready_time": 1698751165, "scheduled": "true" } }, @@ -350,18 +360,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.18.0.2", - "ip": "10.244.0.6", - "name": "web-0", + "ip": "10.244.0.2", + "name": "local-path-provisioner-6bc4bddd6b-6vl7d", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675701, "scheduled": "true" } }, @@ -387,10 +398,11 @@ "MetricSetFields": { "host_ip": "172.18.0.2", "ip": "172.18.0.2", - "name": "etcd-kind-control-plane", + "name": "kube-proxy-2nq9k", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675697, "scheduled": "true" } }, diff --git a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.11.0.plain.expected b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.11.0.plain.expected index 9dd8d1e7d41..13457ad1b49 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.11.0.plain.expected +++ b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.11.0.plain.expected @@ -9,40 +9,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-controller-manager-kind-control-plane", - "status": { - "phase": "running", - "ready": "true", - "scheduled": "true" - } - }, - "Index": "", - "ID": "", - "Namespace": "kubernetes.pod", - "Timestamp": "0001-01-01T00:00:00Z", - "Error": null, - "Host": "", - "Service": "", - "Took": 0, - "Period": 0, - "DisableTimeSeries": false - }, - { - "RootFields": null, - "ModuleFields": { - "namespace": "kube-system", - "node": { - "name": "kind-control-plane" - } - }, - "MetricSetFields": { - "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kindnet-98xlt", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } }, @@ -89,18 +61,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.8", - "name": "web-0", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862200, "scheduled": "true" } }, @@ -125,11 +98,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.40", - "name": "kube-state-metrics-cbc966f68-9kq2v", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862195, "scheduled": "true" } }, @@ -147,18 +121,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-7577fdbbfb-wmdwd", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862197, "scheduled": "true" } }, @@ -183,11 +158,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.4", - "name": "coredns-76f75df574-wfchs", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862193, "scheduled": "true" } }, @@ -205,18 +181,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "etcd-kind-control-plane", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } }, @@ -241,11 +218,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-apiserver-kind-control-plane", + "ip": "10.244.0.40", + "name": "kube-state-metrics-cbc966f68-9kq2v", "status": { "phase": "running", "ready": "true", + "ready_time": 1713879978, "scheduled": "true" } }, @@ -271,10 +249,11 @@ "MetricSetFields": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kube-proxy-45qj9", + "name": "kindnet-98xlt", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862201, "scheduled": "true" } }, @@ -357,11 +336,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.85", - "name": "mycurlpod", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862304, "scheduled": "true" } }, @@ -415,11 +395,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.3", - "name": "coredns-76f75df574-v8skx", + "ip": "10.244.0.85", + "name": "mycurlpod", "status": { "phase": "running", "ready": "true", + "ready_time": 1713881941, "scheduled": "true" } }, @@ -444,11 +425,42 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.6", - "name": "fluentd-elasticsearch-l8b6x", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862189, + "scheduled": "true" + } + }, + "Index": "", + "ID": "", + "Namespace": "kubernetes.pod", + "Timestamp": "0001-01-01T00:00:00Z", + "Error": null, + "Host": "", + "Service": "", + "Took": 0, + "Period": 0, + "DisableTimeSeries": false + }, + { + "RootFields": null, + "ModuleFields": { + "namespace": "default", + "node": { + "name": "kind-control-plane" + } + }, + "MetricSetFields": { + "host_ip": "172.21.0.2", + "ip": "10.244.0.8", + "name": "web-0", + "status": { + "phase": "running", + "ready": "true", + "ready_time": 1713862311, "scheduled": "true" } }, @@ -473,11 +485,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-scheduler-kind-control-plane", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } }, diff --git a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.12.0.plain.expected b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.12.0.plain.expected index ff6eac9e4f0..dbe4a449707 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.12.0.plain.expected +++ b/metricbeat/module/kubernetes/state_pod/_meta/test/ksm.v2.12.0.plain.expected @@ -9,11 +9,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-controller-manager-kind-control-plane", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } }, @@ -39,10 +40,11 @@ "MetricSetFields": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kindnet-98xlt", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862200, "scheduled": "true" } }, @@ -60,18 +62,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.8", - "name": "web-0", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862195, "scheduled": "true" } }, @@ -147,18 +150,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-7577fdbbfb-wmdwd", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862197, "scheduled": "true" } }, @@ -183,11 +187,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.174", - "name": "kube-state-metrics-5bcd4898-bntgt", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862193, "scheduled": "true" } }, @@ -205,18 +210,18 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.4", - "name": "coredns-76f75df574-wfchs", + "ip": "10.244.0.173", + "name": "hello-28564555-zdfjz", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } }, @@ -234,18 +239,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.173", - "name": "hello-28564555-zdfjz", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } }, @@ -270,11 +276,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "etcd-kind-control-plane", + "ip": "10.244.0.174", + "name": "kube-state-metrics-5bcd4898-bntgt", "status": { "phase": "running", "ready": "true", + "ready_time": 1713873343, "scheduled": "true" } }, @@ -300,10 +307,11 @@ "MetricSetFields": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kube-apiserver-kind-control-plane", + "name": "kindnet-98xlt", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862201, "scheduled": "true" } }, @@ -321,18 +329,18 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-proxy-45qj9", + "ip": "10.244.0.7", + "name": "hello-wlb5q", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } }, @@ -350,18 +358,19 @@ { "RootFields": null, "ModuleFields": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.7", - "name": "hello-wlb5q", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862304, "scheduled": "true" } }, @@ -379,18 +388,18 @@ { "RootFields": null, "ModuleFields": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" } }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.3", - "name": "coredns-76f75df574-v8skx", + "ip": "10.244.0.176", + "name": "hello-28564556-gkqsk", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } }, @@ -415,11 +424,13 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.176", - "name": "hello-28564556-gkqsk", + "ip": "10.244.0.8", + "name": "web-0", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862311, + "reason": "evicted", "scheduled": "true" } }, @@ -444,11 +455,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "10.244.0.6", - "name": "fluentd-elasticsearch-l8b6x", + "ip": "172.21.0.2", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862189, "scheduled": "true" } }, @@ -473,11 +485,12 @@ }, "MetricSetFields": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-scheduler-kind-control-plane", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } }, diff --git a/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json b/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json index 2f6d43d7933..92a365f6f2c 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/testdata/docs.plain-expected.json @@ -6,17 +6,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "etcd-kind-control-plane", + "ip": "10.244.0.173", + "name": "hello-28564555-zdfjz", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -37,17 +37,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.173", - "name": "hello-28564555-zdfjz", + "ip": "10.244.0.174", + "name": "kube-state-metrics-5bcd4898-bntgt", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713873343, "scheduled": "true" } } @@ -74,11 +75,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.4", - "name": "coredns-76f75df574-wfchs", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862195, "scheduled": "true" } } @@ -106,10 +108,11 @@ "pod": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kindnet-98xlt", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862193, "scheduled": "true" } } @@ -130,17 +133,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-proxy-45qj9", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -161,17 +165,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.172", - "name": "hello-28564554-llbsx", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -192,17 +197,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.3", - "name": "coredns-76f75df574-v8skx", + "ip": "10.244.0.172", + "name": "hello-28564554-llbsx", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -260,11 +265,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.6", - "name": "fluentd-elasticsearch-l8b6x", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862197, "scheduled": "true" } } @@ -291,11 +297,11 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-scheduler-kind-control-plane", + "ip": "10.244.0.177", + "name": "mycurlpod", "status": { "phase": "running", - "ready": "true", + "ready": "false", "scheduled": "true" } } @@ -322,11 +328,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.177", - "name": "mycurlpod", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", - "ready": "false", + "ready": "true", + "ready_time": 1713862304, "scheduled": "true" } } @@ -347,17 +354,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.8", - "name": "web-0", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -385,10 +393,11 @@ "pod": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kube-controller-manager-kind-control-plane", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862189, "scheduled": "true" } } @@ -409,17 +418,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.176", - "name": "hello-28564556-gkqsk", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862201, "scheduled": "true" } } @@ -440,17 +450,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-7577fdbbfb-wmdwd", + "ip": "10.244.0.8", + "name": "web-0", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862311, "scheduled": "true" } } @@ -471,17 +482,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-apiserver-kind-control-plane", + "ip": "10.244.0.176", + "name": "hello-28564556-gkqsk", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -508,11 +519,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.174", - "name": "kube-state-metrics-5bcd4898-bntgt", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862200, "scheduled": "true" } } diff --git a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.10.0.plain-expected.json b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.10.0.plain-expected.json index 74de4188355..dbd86f44e72 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.10.0.plain-expected.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.10.0.plain-expected.json @@ -6,17 +6,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.18.0.2", - "ip": "10.244.0.6", - "name": "web-0", + "ip": "10.244.0.2", + "name": "local-path-provisioner-6bc4bddd6b-6vl7d", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675701, "scheduled": "true" } } @@ -48,6 +49,7 @@ "status": { "phase": "running", "ready": "true", + "ready_time": 1698675701, "scheduled": "true" } } @@ -68,17 +70,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.18.0.2", - "ip": "10.244.0.9", - "name": "hello-28312520-d5d5s", + "ip": "10.244.0.7", + "name": "fluentd-elasticsearch-m2tlp", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1698751174, "scheduled": "true" } } @@ -99,17 +102,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-apiserver-kind-control-plane", + "ip": "10.244.0.9", + "name": "hello-28312520-d5d5s", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -130,17 +133,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.18.0.2", - "ip": "10.244.0.8", - "name": "hello-mwrpw", + "ip": "172.18.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1698675684, "scheduled": "true" } } @@ -161,17 +165,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kube-controller-manager-kind-control-plane", + "ip": "10.244.0.8", + "name": "hello-mwrpw", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -199,10 +203,11 @@ "pod": { "host_ip": "172.18.0.2", "ip": "172.18.0.2", - "name": "etcd-kind-control-plane", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675692, "scheduled": "true" } } @@ -223,17 +228,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.18.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-6bc4bddd6b-6vl7d", + "ip": "172.18.0.2", + "name": "kindnet-xg6gs", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675698, "scheduled": "true" } } @@ -265,6 +271,7 @@ "status": { "phase": "running", "ready": "true", + "ready_time": 1698751133, "scheduled": "true" } } @@ -292,10 +299,11 @@ "pod": { "host_ip": "172.18.0.2", "ip": "172.18.0.2", - "name": "kube-scheduler-kind-control-plane", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675692, "scheduled": "true" } } @@ -322,11 +330,12 @@ }, "pod": { "host_ip": "172.18.0.2", - "ip": "172.18.0.2", - "name": "kindnet-xg6gs", + "ip": "10.244.0.4", + "name": "coredns-5d78c9869d-gskzq", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675701, "scheduled": "true" } } @@ -358,6 +367,7 @@ "status": { "phase": "running", "ready": "true", + "ready_time": 1698675697, "scheduled": "true" } } @@ -378,17 +388,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.18.0.2", - "ip": "10.244.0.7", - "name": "fluentd-elasticsearch-m2tlp", + "ip": "10.244.0.6", + "name": "web-0", "status": { "phase": "running", "ready": "true", + "ready_time": 1698751165, "scheduled": "true" } } @@ -415,11 +426,12 @@ }, "pod": { "host_ip": "172.18.0.2", - "ip": "10.244.0.4", - "name": "coredns-5d78c9869d-gskzq", + "ip": "172.18.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1698675686, "scheduled": "true" } } diff --git a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.11.0.plain-expected.json b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.11.0.plain-expected.json index cab0d7b67c3..c43a3d60599 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.11.0.plain-expected.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.11.0.plain-expected.json @@ -44,10 +44,11 @@ "pod": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "etcd-kind-control-plane", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862195, "scheduled": "true" } } @@ -74,11 +75,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.4", - "name": "coredns-76f75df574-wfchs", + "ip": "172.21.0.2", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862193, "scheduled": "true" } } @@ -99,17 +101,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.85", - "name": "mycurlpod", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -130,17 +133,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kindnet-98xlt", + "ip": "10.244.0.81", + "name": "hello-28564697-8dmzw", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -161,17 +164,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.81", - "name": "hello-28564697-8dmzw", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -192,17 +196,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-proxy-45qj9", + "ip": "10.244.0.7", + "name": "hello-wlb5q", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -229,11 +233,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.40", - "name": "kube-state-metrics-cbc966f68-9kq2v", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862197, "scheduled": "true" } } @@ -254,17 +259,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.3", - "name": "coredns-76f75df574-v8skx", + "ip": "10.244.0.84", + "name": "hello-28564698-tv8jb", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -285,17 +290,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.7", - "name": "hello-wlb5q", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862304, "scheduled": "true" } } @@ -322,11 +328,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.6", - "name": "fluentd-elasticsearch-l8b6x", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -354,10 +361,11 @@ "pod": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kube-scheduler-kind-control-plane", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862189, "scheduled": "true" } } @@ -378,17 +386,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.84", - "name": "hello-28564698-tv8jb", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862201, "scheduled": "true" } } @@ -420,6 +429,7 @@ "status": { "phase": "running", "ready": "true", + "ready_time": 1713862311, "scheduled": "true" } } @@ -446,11 +456,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-controller-manager-kind-control-plane", + "ip": "10.244.0.85", + "name": "mycurlpod", "status": { "phase": "running", "ready": "true", + "ready_time": 1713881941, "scheduled": "true" } } @@ -471,17 +482,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-7577fdbbfb-wmdwd", + "ip": "10.244.0.40", + "name": "kube-state-metrics-cbc966f68-9kq2v", "status": { "phase": "running", "ready": "true", + "ready_time": 1713879978, "scheduled": "true" } } @@ -509,10 +521,11 @@ "pod": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kube-apiserver-kind-control-plane", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862200, "scheduled": "true" } } diff --git a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.12.0.plain-expected.json b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.12.0.plain-expected.json index 2f6d43d7933..884759e3d5f 100644 --- a/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.12.0.plain-expected.json +++ b/metricbeat/module/kubernetes/state_pod/_meta/testdata/ksm.v2.12.0.plain-expected.json @@ -6,17 +6,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "etcd-kind-control-plane", + "ip": "10.244.0.173", + "name": "hello-28564555-zdfjz", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -37,17 +37,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.173", - "name": "hello-28564555-zdfjz", + "ip": "10.244.0.174", + "name": "kube-state-metrics-5bcd4898-bntgt", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713873343, "scheduled": "true" } } @@ -74,11 +75,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.4", - "name": "coredns-76f75df574-wfchs", + "ip": "172.21.0.2", + "name": "kube-apiserver-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862195, "scheduled": "true" } } @@ -106,10 +108,11 @@ "pod": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kindnet-98xlt", + "name": "kube-controller-manager-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862193, "scheduled": "true" } } @@ -130,17 +133,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "local-path-storage", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-proxy-45qj9", + "ip": "10.244.0.2", + "name": "local-path-provisioner-7577fdbbfb-wmdwd", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -161,17 +165,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.172", - "name": "hello-28564554-llbsx", + "ip": "10.244.0.3", + "name": "coredns-76f75df574-v8skx", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -192,17 +197,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.3", - "name": "coredns-76f75df574-v8skx", + "ip": "10.244.0.172", + "name": "hello-28564554-llbsx", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -260,11 +265,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.6", - "name": "fluentd-elasticsearch-l8b6x", + "ip": "172.21.0.2", + "name": "kube-scheduler-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862197, "scheduled": "true" } } @@ -291,11 +297,11 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-scheduler-kind-control-plane", + "ip": "10.244.0.177", + "name": "mycurlpod", "status": { "phase": "running", - "ready": "true", + "ready": "false", "scheduled": "true" } } @@ -322,11 +328,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.177", - "name": "mycurlpod", + "ip": "10.244.0.6", + "name": "fluentd-elasticsearch-l8b6x", "status": { "phase": "running", - "ready": "false", + "ready": "true", + "ready_time": 1713862304, "scheduled": "true" } } @@ -347,17 +354,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.8", - "name": "web-0", + "ip": "10.244.0.4", + "name": "coredns-76f75df574-wfchs", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862204, "scheduled": "true" } } @@ -385,10 +393,11 @@ "pod": { "host_ip": "172.21.0.2", "ip": "172.21.0.2", - "name": "kube-controller-manager-kind-control-plane", + "name": "etcd-kind-control-plane", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862189, "scheduled": "true" } } @@ -409,17 +418,18 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "default", + "namespace": "kube-system", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.176", - "name": "hello-28564556-gkqsk", + "ip": "172.21.0.2", + "name": "kindnet-98xlt", "status": { - "phase": "succeeded", - "ready": "false", + "phase": "running", + "ready": "true", + "ready_time": 1713862201, "scheduled": "true" } } @@ -440,17 +450,17 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "local-path-storage", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.2", - "name": "local-path-provisioner-7577fdbbfb-wmdwd", + "ip": "10.244.0.176", + "name": "hello-28564556-gkqsk", "status": { - "phase": "running", - "ready": "true", + "phase": "succeeded", + "ready": "false", "scheduled": "true" } } @@ -471,17 +481,19 @@ "module": "kubernetes" }, "kubernetes": { - "namespace": "kube-system", + "namespace": "default", "node": { "name": "kind-control-plane" }, "pod": { "host_ip": "172.21.0.2", - "ip": "172.21.0.2", - "name": "kube-apiserver-kind-control-plane", + "ip": "10.244.0.8", + "name": "web-0", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862311, + "reason": "evicted", "scheduled": "true" } } @@ -508,11 +520,12 @@ }, "pod": { "host_ip": "172.21.0.2", - "ip": "10.244.0.174", - "name": "kube-state-metrics-5bcd4898-bntgt", + "ip": "172.21.0.2", + "name": "kube-proxy-45qj9", "status": { "phase": "running", "ready": "true", + "ready_time": 1713862200, "scheduled": "true" } } diff --git a/metricbeat/module/kubernetes/state_pod/state_pod.go b/metricbeat/module/kubernetes/state_pod/state_pod.go index 4ec1f253893..7f6fb13eeca 100644 --- a/metricbeat/module/kubernetes/state_pod/state_pod.go +++ b/metricbeat/module/kubernetes/state_pod/state_pod.go @@ -27,10 +27,12 @@ import ( // mapping stores the state metrics we want to fetch and will be used by this metricset var mapping = &p.MetricsMapping{ Metrics: map[string]p.MetricMap{ - "kube_pod_info": p.InfoMetric(), - "kube_pod_status_phase": p.LabelMetric("status.phase", "phase", p.OpLowercaseValue()), - "kube_pod_status_ready": p.LabelMetric("status.ready", "condition", p.OpLowercaseValue()), - "kube_pod_status_scheduled": p.LabelMetric("status.scheduled", "condition", p.OpLowercaseValue()), + "kube_pod_info": p.InfoMetric(), + "kube_pod_status_phase": p.LabelMetric("status.phase", "phase", p.OpLowercaseValue()), + "kube_pod_status_ready": p.LabelMetric("status.ready", "condition", p.OpLowercaseValue()), + "kube_pod_status_scheduled": p.LabelMetric("status.scheduled", "condition", p.OpLowercaseValue()), + "kube_pod_status_reason": p.LabelMetric("status.reason", "reason", p.OpLowercaseValue()), + "kube_pod_status_ready_time": p.Metric("status.ready_time"), }, Labels: map[string]p.LabelMap{ From 05b79af0254f2673cb929baa68d39861b65fb07a Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Wed, 8 May 2024 16:58:25 +0300 Subject: [PATCH 288/313] Removed unused Buildkite scripts (part 1) (#39464) This commit removes a number of Buildkite shell scripts that aren't used any more. It's a subset of https://github.com/elastic/beats/pull/39188. Additionally removals will come in a future PR. Relates: https://github.com/elastic/ingest-dev/issues/3219 --- .buildkite/scripts/crosscompile.sh | 8 ---- .buildkite/scripts/install_tools.sh | 64 ----------------------------- .buildkite/scripts/stress_tests.sh | 13 ------ .buildkite/scripts/unit_tests.sh | 12 ------ 4 files changed, 97 deletions(-) delete mode 100755 .buildkite/scripts/crosscompile.sh delete mode 100755 .buildkite/scripts/install_tools.sh delete mode 100755 .buildkite/scripts/stress_tests.sh delete mode 100755 .buildkite/scripts/unit_tests.sh diff --git a/.buildkite/scripts/crosscompile.sh b/.buildkite/scripts/crosscompile.sh deleted file mode 100755 index 12f0f6574ca..00000000000 --- a/.buildkite/scripts/crosscompile.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/install_tools.sh - -set -euo pipefail - -echo "--- Run Crosscompile for $BEATS_PROJECT_NAME" -make -C "${BEATS_PROJECT_NAME}" crosscompile diff --git a/.buildkite/scripts/install_tools.sh b/.buildkite/scripts/install_tools.sh deleted file mode 100755 index 3d25cf8e5c9..00000000000 --- a/.buildkite/scripts/install_tools.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/common.sh - -set -euo pipefail - -echo "--- Env preparation" - -# Temporary solution to fix the issues with "sudo apt get...." https://elastic.slack.com/archives/C0522G6FBNE/p1706003603442859?thread_ts=1706003209.424539&cid=C0522G6FBNE -# It could be removed when we use our own image for the BK agent. -if [ "${platform_type}" == "Linux" ]; then - if [ "${platform_type}" == "Linux" ]; then - if [ $(checkLinuxType) = "ubuntu" ]; then - DEBIAN_FRONTEND="noninteractive" - #sudo command doesn't work at the "pre-command" hook because of another user environment (root with strange permissions) - sudo mkdir -p /etc/needrestart - echo "\$nrconf{restart} = 'a';" | sudo tee -a /etc/needrestart/needrestart.conf > /dev/null - fi - fi -fi - -add_bin_path - -if command -v docker-compose &> /dev/null -then - echo "Found docker-compose. Checking version.." - FOUND_DOCKER_COMPOSE_VERSION=$(docker-compose --version | awk '{print $4}'|sed s/\,//) - if [ $FOUND_DOCKER_COMPOSE_VERSION == $DOCKER_COMPOSE_VERSION ]; then - echo "Versions match. No need to install docker-compose. Exiting." - elif [[ "${platform_type}" == "Linux" && "${arch_type}" == "aarch64" ]]; then - with_docker_compose "${DOCKER_COMPOSE_VERSION_AARCH64}" - elif [[ "${platform_type}" == "Linux" && "${arch_type}" == "x86_64" ]]; then - with_docker_compose "${DOCKER_COMPOSE_VERSION}" - fi -else - with_docker_compose "${DOCKER_COMPOSE_VERSION}" -fi - -with_go "${GO_VERSION}" -with_mage -with_python -with_dependencies -config_git - -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-heartbeat" ]]; then - # Install NodeJS - withNodeJSEnv "${NODEJS_VERSION}" - installNodeJsDependencies - - echo "Install @elastic/synthetics" - npm i -g @elastic/synthetics -fi - -mage dumpVariables - -#sudo command doesn't work at the "pre-command" hook because of another user environment (root with strange permissions) -sudo chmod -R go-w "${BEATS_PROJECT_NAME}/" #TODO: Remove when the issue is solved https://github.com/elastic/beats/issues/37838 - -pushd "${BEATS_PROJECT_NAME}" > /dev/null - -#TODO "umask 0022" has to be removed after our own image is ready (it has to be moved to the image) -umask 0022 # fix the filesystem permissions issue like this: https://buildkite.com/elastic/beats-metricbeat/builds/1329#018d3179-25a9-475b-a2c8-64329dfe092b/320-1696 - -popd > /dev/null diff --git a/.buildkite/scripts/stress_tests.sh b/.buildkite/scripts/stress_tests.sh deleted file mode 100755 index b177eb53ea6..00000000000 --- a/.buildkite/scripts/stress_tests.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/install_tools.sh - -set -euo pipefail - -echo "--- Run Stress Tests for $BEATS_PROJECT_NAME" - -pushd "${BEATS_PROJECT_NAME}" > /dev/null - -make STRESS_TEST_OPTIONS='-timeout=20m -race -v -parallel 1' GOTEST_OUTPUT_OPTIONS='| go-junit-report > libbeat-stress-test.xml' stress-tests - -popd > /dev/null diff --git a/.buildkite/scripts/unit_tests.sh b/.buildkite/scripts/unit_tests.sh deleted file mode 100755 index 059b4166e29..00000000000 --- a/.buildkite/scripts/unit_tests.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -source .buildkite/scripts/install_tools.sh - -set -euo pipefail - -echo "--- Run Unit Tests" -pushd "${BEATS_PROJECT_NAME}" > /dev/null - -mage build unitTest - -popd > /dev/null From f8793ae8000b95ec19be8fd53fb42e9b9bb767f9 Mon Sep 17 00:00:00 2001 From: apmmachine <58790750+apmmachine@users.noreply.github.com> Date: Thu, 9 May 2024 05:30:05 +1000 Subject: [PATCH 289/313] [Automation] Bump Golang version to 1.21.10 (#39467) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Update Metricbeat Dockerfile Made with ❤️️ by updatecli * chore: Update Metricbeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update HTTP module Dockerfile Made with ❤️️ by updatecli * chore: Update version.asciidoc Made with ❤️️ by updatecli * chore: Update Auditbeat Dockerfile Made with ❤️️ by updatecli * chore: Update Heartbeat Dockerfile Made with ❤️️ by updatecli * chore: Update Heartbeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update Filebeat debug Dockerfile Made with ❤️️ by updatecli * chore: Update Functionbeat Dockerfile Made with ❤️️ by updatecli * chore: Update Packetbeat Dockerfile Made with ❤️️ by updatecli * chore: Update from vsphere Dockerfile Made with ❤️️ by updatecli * chore: Update .go-version Made with ❤️️ by updatecli * chore: Update stan Dockerfile Made with ❤️️ by updatecli * chore: Update NATS module Dockerfile Made with ❤️️ by updatecli * chore: Update .golangci.yml Made with ❤️️ by updatecli * chore: Update go.mod Made with ❤️️ by updatecli * Update changelog. * Fix toolchain directive. --------- Co-authored-by: apmmachine Co-authored-by: Craig MacKenzie --- .go-version | 2 +- .golangci.yml | 8 ++++---- CHANGELOG.next.asciidoc | 2 +- auditbeat/Dockerfile | 2 +- dev-tools/kubernetes/filebeat/Dockerfile.debug | 2 +- dev-tools/kubernetes/heartbeat/Dockerfile.debug | 2 +- dev-tools/kubernetes/metricbeat/Dockerfile.debug | 2 +- go.mod | 4 +++- heartbeat/Dockerfile | 2 +- libbeat/docs/version.asciidoc | 2 +- metricbeat/Dockerfile | 2 +- metricbeat/module/http/_meta/Dockerfile | 2 +- metricbeat/module/nats/_meta/Dockerfile | 2 +- metricbeat/module/vsphere/_meta/Dockerfile | 2 +- packetbeat/Dockerfile | 2 +- x-pack/functionbeat/Dockerfile | 2 +- x-pack/metricbeat/module/stan/_meta/Dockerfile | 2 +- 17 files changed, 22 insertions(+), 20 deletions(-) diff --git a/.go-version b/.go-version index f124bfa1554..ae7bbdf047a 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.21.9 +1.21.10 diff --git a/.golangci.yml b/.golangci.yml index fc58b57a4d1..0c2be387e77 100755 --- a/.golangci.yml +++ b/.golangci.yml @@ -124,7 +124,7 @@ linters-settings: gosimple: # Select the Go version to target. The default is '1.13'. - go: "1.21.9" + go: "1.21.10" nakedret: # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 @@ -142,19 +142,19 @@ linters-settings: staticcheck: # Select the Go version to target. The default is '1.13'. - go: "1.21.9" + go: "1.21.10" checks: ["all"] stylecheck: # Select the Go version to target. The default is '1.13'. - go: "1.21.9" + go: "1.21.10" # Disabled: # ST1005: error strings should not be capitalized checks: ["all", "-ST1005"] unused: # Select the Go version to target. The default is '1.13'. - go: "1.21.9" + go: "1.21.10" gosec: excludes: diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index fdbb36ad275..019c477279f 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -187,7 +187,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Beats will now connect to older Elasticsearch instances by default {pull}36884[36884] - Raise up logging level to warning when attempting to configure beats with unknown fields from autodiscovered events/environments - elasticsearch output now supports `idle_connection_timeout`. {issue}35616[35615] {pull}36843[36843] -- Update to Go 1.21.9. {pulk}38727[38727] +- Update to Go 1.21.10. {pull}39467[39467] - Enable early event encoding in the Elasticsearch output, improving cpu and memory use {pull}38572[38572] - The environment variable `BEATS_ADD_CLOUD_METADATA_PROVIDERS` overrides configured/default `add_cloud_metadata` providers {pull}38669[38669] - Introduce log message for not supported annotations for Hints based autodiscover {pull}38213[38213] diff --git a/auditbeat/Dockerfile b/auditbeat/Dockerfile index f04ddebe848..3f71118e8e5 100644 --- a/auditbeat/Dockerfile +++ b/auditbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.9 +FROM golang:1.21.10 RUN \ apt-get update \ diff --git a/dev-tools/kubernetes/filebeat/Dockerfile.debug b/dev-tools/kubernetes/filebeat/Dockerfile.debug index ba6e39d9f41..ccd70822f3f 100644 --- a/dev-tools/kubernetes/filebeat/Dockerfile.debug +++ b/dev-tools/kubernetes/filebeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.9 as builder +FROM golang:1.21.10 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/dev-tools/kubernetes/heartbeat/Dockerfile.debug b/dev-tools/kubernetes/heartbeat/Dockerfile.debug index 44aa0dc1ece..2b24c945286 100644 --- a/dev-tools/kubernetes/heartbeat/Dockerfile.debug +++ b/dev-tools/kubernetes/heartbeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.9 as builder +FROM golang:1.21.10 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/dev-tools/kubernetes/metricbeat/Dockerfile.debug b/dev-tools/kubernetes/metricbeat/Dockerfile.debug index bda15a5708a..f76069d2215 100644 --- a/dev-tools/kubernetes/metricbeat/Dockerfile.debug +++ b/dev-tools/kubernetes/metricbeat/Dockerfile.debug @@ -1,4 +1,4 @@ -FROM golang:1.21.9 as builder +FROM golang:1.21.10 as builder ENV PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/go/bin:/usr/local/go/bin diff --git a/go.mod b/go.mod index 2f4dd380749..84d4f4bea52 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/elastic/beats/v7 -go 1.21.9 +go 1.21.0 + +toolchain go1.21.10 require ( cloud.google.com/go/bigquery v1.55.0 diff --git a/heartbeat/Dockerfile b/heartbeat/Dockerfile index 4d7d45237da..f8765612d4b 100644 --- a/heartbeat/Dockerfile +++ b/heartbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.9 +FROM golang:1.21.10 RUN \ apt-get update \ diff --git a/libbeat/docs/version.asciidoc b/libbeat/docs/version.asciidoc index 35201b36175..ae9efcf9d01 100644 --- a/libbeat/docs/version.asciidoc +++ b/libbeat/docs/version.asciidoc @@ -1,6 +1,6 @@ :stack-version: 8.14.0 :doc-branch: main -:go-version: 1.21.9 +:go-version: 1.21.10 :release-state: unreleased :python: 3.7 :docker: 1.12 diff --git a/metricbeat/Dockerfile b/metricbeat/Dockerfile index fe700b0b6ce..ce43c81c312 100644 --- a/metricbeat/Dockerfile +++ b/metricbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.9 +FROM golang:1.21.10 COPY --from=docker:26.0.0-alpine3.19 /usr/local/bin/docker /usr/local/bin/ RUN \ diff --git a/metricbeat/module/http/_meta/Dockerfile b/metricbeat/module/http/_meta/Dockerfile index 00c6518bf4c..0a5646a9d75 100644 --- a/metricbeat/module/http/_meta/Dockerfile +++ b/metricbeat/module/http/_meta/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.9 +FROM golang:1.21.10 COPY test/main.go main.go diff --git a/metricbeat/module/nats/_meta/Dockerfile b/metricbeat/module/nats/_meta/Dockerfile index 6459dc6bf6a..f3cab807dfd 100644 --- a/metricbeat/module/nats/_meta/Dockerfile +++ b/metricbeat/module/nats/_meta/Dockerfile @@ -2,7 +2,7 @@ ARG NATS_VERSION=2.0.4 FROM nats:$NATS_VERSION # build stage -FROM golang:1.21.9 AS build-env +FROM golang:1.21.10 AS build-env RUN apt-get install git mercurial gcc RUN git clone https://github.com/nats-io/nats.go.git /nats-go RUN cd /nats-go/examples/nats-bench && git checkout tags/v1.10.0 && go build . diff --git a/metricbeat/module/vsphere/_meta/Dockerfile b/metricbeat/module/vsphere/_meta/Dockerfile index 62e7a752fbf..9dea6777c57 100644 --- a/metricbeat/module/vsphere/_meta/Dockerfile +++ b/metricbeat/module/vsphere/_meta/Dockerfile @@ -1,5 +1,5 @@ ARG VSPHERE_GOLANG_VERSION -FROM golang:1.21.9 +FROM golang:1.21.10 RUN apt-get install curl git RUN go install github.com/vmware/govmomi/vcsim@v0.30.4 diff --git a/packetbeat/Dockerfile b/packetbeat/Dockerfile index 686f97b947f..912cd87cc43 100644 --- a/packetbeat/Dockerfile +++ b/packetbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.9 +FROM golang:1.21.10 RUN \ apt-get update \ diff --git a/x-pack/functionbeat/Dockerfile b/x-pack/functionbeat/Dockerfile index f97bf89cb7e..3b3a785a0ca 100644 --- a/x-pack/functionbeat/Dockerfile +++ b/x-pack/functionbeat/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.9 +FROM golang:1.21.10 RUN \ apt-get update \ diff --git a/x-pack/metricbeat/module/stan/_meta/Dockerfile b/x-pack/metricbeat/module/stan/_meta/Dockerfile index 2f5b44963d3..5023acb7b46 100644 --- a/x-pack/metricbeat/module/stan/_meta/Dockerfile +++ b/x-pack/metricbeat/module/stan/_meta/Dockerfile @@ -2,7 +2,7 @@ ARG STAN_VERSION=0.15.1 FROM nats-streaming:$STAN_VERSION # build stage -FROM golang:1.21.9 AS build-env +FROM golang:1.21.10 AS build-env RUN apt-get install git mercurial gcc RUN git clone https://github.com/nats-io/stan.go.git /stan-go RUN cd /stan-go/examples/stan-bench && git checkout tags/v0.5.2 && go build . From f4c518ec1532b6fac086d5f04d7596477ff5e8f0 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Thu, 9 May 2024 06:01:51 +0930 Subject: [PATCH 290/313] mod: update elastic/mito to version v1.11.0 (#39460) --- CHANGELOG.next.asciidoc | 3 ++- NOTICE.txt | 16 ++++++++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- x-pack/filebeat/docs/inputs/input-cel.asciidoc | 2 +- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 019c477279f..d8bec77f901 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -255,13 +255,14 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add parseDateInTZ value template for the HTTPJSON input. {pull}37738[37738] - Add support for complex event objects in the HTTP Endpoint input. {issue}37910[37910] {pull}38193[38193] - Parse more fields from Elasticsearch slowlogs {pull}38295[38295] -- Update CEL mito extensions to v1.10.0 to add keys/values helper. {pull}38504[38504] +- Update CEL mito extensions to v1.10.0 to add base64 decode functions. {pull}38504[38504] - Add support for Active Directory an entity analytics provider. {pull}37919[37919] - Add AWS AWSHealth metricset. {pull}38370[38370] - Add debugging breadcrumb to logs when writing request trace log. {pull}38636[38636] - added benchmark input {pull}37437[37437] - added benchmark input and discard output {pull}37437[37437] - Ensure all responses sent by HTTP Endpoint are HTML-escaped. {pull}39329[39329] +- Update CEL mito extensions to v1.11.0 to improve type checking. {pull}39460[39460] *Auditbeat* diff --git a/NOTICE.txt b/NOTICE.txt index 3cee98a02e5..4e58644e883 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -15857,11 +15857,11 @@ limitations under the License. -------------------------------------------------------------------------------- Dependency : github.com/elastic/mito -Version: v1.10.0 +Version: v1.11.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/mito@v1.10.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/mito@v1.11.0/LICENSE: Apache License @@ -25285,11 +25285,11 @@ THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : golang.org/x/crypto -Version: v0.21.0 +Version: v0.22.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/crypto@v0.21.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/crypto@v0.22.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. @@ -25433,11 +25433,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/net -Version: v0.23.0 +Version: v0.24.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/net@v0.23.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/net@v0.24.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. @@ -54386,11 +54386,11 @@ THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : golang.org/x/term -Version: v0.18.0 +Version: v0.19.0 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/term@v0.18.0/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/term@v0.19.0/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. diff --git a/go.mod b/go.mod index 84d4f4bea52..03b58732d53 100644 --- a/go.mod +++ b/go.mod @@ -153,10 +153,10 @@ require ( go.uber.org/atomic v1.11.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.26.0 - golang.org/x/crypto v0.21.0 + golang.org/x/crypto v0.22.0 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 golang.org/x/mod v0.14.0 - golang.org/x/net v0.23.0 + golang.org/x/net v0.24.0 golang.org/x/oauth2 v0.10.0 golang.org/x/sync v0.6.0 golang.org/x/sys v0.19.0 @@ -210,7 +210,7 @@ require ( github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 github.com/elastic/go-elasticsearch/v8 v8.13.1 - github.com/elastic/mito v1.10.0 + github.com/elastic/mito v1.11.0 github.com/elastic/tk-btf v0.1.0 github.com/elastic/toutoumomoma v0.0.0-20221026030040-594ef30cb640 github.com/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15 @@ -383,7 +383,7 @@ require ( go.opentelemetry.io/otel v1.21.0 // indirect go.opentelemetry.io/otel/metric v1.21.0 // indirect go.opentelemetry.io/otel/trace v1.21.0 // indirect - golang.org/x/term v0.18.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect diff --git a/go.sum b/go.sum index fefe7776b03..86384f4c6a7 100644 --- a/go.sum +++ b/go.sum @@ -596,8 +596,8 @@ github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a h1:8WfL/X6fK11 github.com/elastic/gopacket v1.1.20-0.20211202005954-d412fca7f83a/go.mod h1:riddUzxTSBpJXk3qBHtYr4qOhFhT6k/1c0E3qkQjQpA= github.com/elastic/gosigar v0.14.3 h1:xwkKwPia+hSfg9GqrCUKYdId102m9qTJIIr7egmK/uo= github.com/elastic/gosigar v0.14.3/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= -github.com/elastic/mito v1.10.0 h1:LhkzBXarU32zAf24k3HOWki0DIoxsNWbVYY6vyHk2RQ= -github.com/elastic/mito v1.10.0/go.mod h1:n7AvUVtYQQXb8fq87FI8z67TNzuhwBV3kHBkDT1qJYQ= +github.com/elastic/mito v1.11.0 h1:thk9uxsTuTFeihMf3I6WLIeZyrBLQYuisWRYRUZl6Ec= +github.com/elastic/mito v1.11.0/go.mod h1:J+wCf4HccW2YoSFmZMGu+d06gN+WmnIlj5ehBqine74= github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3 h1:ChPwRVv1RR4a0cxoGjKcyWjTEpxYfm5gydMIzo32cAw= github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3/go.mod h1:RAy2GVV4sTWVlNMavv3xhLsk18rxhfhDnombTe6EF5c= github.com/elastic/sarama v1.19.1-0.20220310193331-ebc2b0d8eef3 h1:FzA0/n4iMt8ojGDGRoiFPSHFvvdVIvxOxyLtiFnrLBM= @@ -1822,8 +1822,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1960,8 +1960,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2123,8 +2123,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/x-pack/filebeat/docs/inputs/input-cel.asciidoc b/x-pack/filebeat/docs/inputs/input-cel.asciidoc index 7be120941c9..a6adf5e4ad9 100644 --- a/x-pack/filebeat/docs/inputs/input-cel.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-cel.asciidoc @@ -1,7 +1,7 @@ [role="xpack"] :type: cel -:mito_version: v1.10.0 +:mito_version: v1.11.0 :mito_docs: https://pkg.go.dev/github.com/elastic/mito@{mito_version} [id="{beatname_lc}-input-{type}"] From 3efb1e8612baae8b9b887afd0219c94caf36c7c1 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Thu, 9 May 2024 09:40:08 +0930 Subject: [PATCH 291/313] x-pack/filebeat/input/internal/httplog: improve req/resp logging (#39455) Attempt to log the request and response bodies and other details even when copying the body has been reported to have failed. --- CHANGELOG.next.asciidoc | 1 + .../input/internal/httplog/roundtripper.go | 26 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index d8bec77f901..4538758b813 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -263,6 +263,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - added benchmark input and discard output {pull}37437[37437] - Ensure all responses sent by HTTP Endpoint are HTML-escaped. {pull}39329[39329] - Update CEL mito extensions to v1.11.0 to improve type checking. {pull}39460[39460] +- Improve logging of request and response with request trace logging in error conditions. {pull}39455[39455] *Auditbeat* diff --git a/x-pack/filebeat/input/internal/httplog/roundtripper.go b/x-pack/filebeat/input/internal/httplog/roundtripper.go index 642245603f8..ce68147a2a7 100644 --- a/x-pack/filebeat/input/internal/httplog/roundtripper.go +++ b/x-pack/filebeat/input/internal/httplog/roundtripper.go @@ -115,14 +115,13 @@ func (rt *LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, err resp.Body, body, err = copyBody(resp.Body) if err != nil { errorsMessages = append(errorsMessages, fmt.Sprintf("failed to read response body: %s", err)) - } else { - respParts = append(respParts, - zap.ByteString("http.response.body.content", body[:min(len(body), rt.maxBodyLen)]), - zap.Bool("http.response.body.truncated", rt.maxBodyLen < len(body)), - zap.Int("http.response.body.bytes", len(body)), - zap.String("http.response.mime_type", resp.Header.Get("Content-Type")), - ) } + respParts = append(respParts, + zap.ByteString("http.response.body.content", body[:min(len(body), rt.maxBodyLen)]), + zap.Bool("http.response.body.truncated", rt.maxBodyLen < len(body)), + zap.Int("http.response.body.bytes", len(body)), + zap.String("http.response.mime_type", resp.Header.Get("Content-Type")), + ) message, err := httputil.DumpResponse(resp, false) if err != nil { errorsMessages = append(errorsMessages, fmt.Sprintf("failed to dump response: %s", err)) @@ -184,14 +183,13 @@ func logRequest(log *zap.Logger, req *http.Request, maxBodyLen int, extra ...zap req.Body, body, err = copyBody(req.Body) if err != nil { errorsMessages = append(errorsMessages, fmt.Sprintf("failed to read request body: %s", err)) - } else { - reqParts = append(reqParts, - zap.ByteString("http.request.body.content", body[:min(len(body), maxBodyLen)]), - zap.Bool("http.request.body.truncated", maxBodyLen < len(body)), - zap.Int("http.request.body.bytes", len(body)), - zap.String("http.request.mime_type", req.Header.Get("Content-Type")), - ) } + reqParts = append(reqParts, + zap.ByteString("http.request.body.content", body[:min(len(body), maxBodyLen)]), + zap.Bool("http.request.body.truncated", maxBodyLen < len(body)), + zap.Int("http.request.body.bytes", len(body)), + zap.String("http.request.mime_type", req.Header.Get("Content-Type")), + ) message, err := httputil.DumpRequestOut(req, false) if err != nil { errorsMessages = append(errorsMessages, fmt.Sprintf("failed to dump request: %s", err)) From 75397eb0fa4140c30df0b66dd0eecf367d5925cd Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Thu, 9 May 2024 14:23:21 +0300 Subject: [PATCH 292/313] Added retries for packaging steps & K8S tests (#39466) * added retries for packaging steps & k8s tests * added timeout for packaging steps --- .buildkite/auditbeat/auditbeat-pipeline.yml | 8 ++++++++ .buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml | 12 ++++++++++++ .buildkite/filebeat/filebeat-pipeline.yml | 8 ++++++++ .buildkite/heartbeat/heartbeat-pipeline.yml | 8 ++++++++ .buildkite/metricbeat/pipeline.yml | 8 ++++++++ .buildkite/packetbeat/pipeline.packetbeat.yml | 8 ++++++++ .buildkite/winlogbeat/pipeline.winlogbeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.auditbeat.yml | 8 ++++++++ .buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml | 8 ++++++++ .buildkite/x-pack/pipeline.xpack.filebeat.yml | 8 ++++++++ .buildkite/x-pack/pipeline.xpack.heartbeat.yml | 8 ++++++++ .buildkite/x-pack/pipeline.xpack.metricbeat.yml | 8 ++++++++ .buildkite/x-pack/pipeline.xpack.osquerybeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.packetbeat.yml | 8 ++++++++ .buildkite/x-pack/pipeline.xpack.winlogbeat.yml | 4 ++++ 15 files changed, 112 insertions(+) diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index 13e3ef2f256..95460910e22 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -316,6 +316,10 @@ steps: set -euo pipefail cd auditbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" @@ -334,6 +338,10 @@ steps: set -euo pipefail cd auditbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml index d8a5354b1ef..bd1a493b885 100644 --- a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml +++ b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml @@ -26,6 +26,9 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -41,6 +44,9 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -56,6 +62,9 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -71,6 +80,9 @@ steps: commands: - "MODULE=kubernetes make -C metricbeat integration-tests" - "make -C deploy/kubernetes test" + retry: + automatic: + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 053e8dbec41..ebb25ca3966 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -269,6 +269,10 @@ steps: command: | cd filebeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -286,6 +290,10 @@ steps: command: | cd filebeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index cadbcec1eca..54cfe6f0ac7 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -285,6 +285,10 @@ steps: command: | cd heartbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" @@ -302,6 +306,10 @@ steps: command: | cd heartbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index d15212d2ef3..d0cece3a590 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -295,6 +295,10 @@ steps: - label: ":linux: Packaging Linux" key: "packaging-linux" command: "cd metricbeat && mage package" + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -310,6 +314,10 @@ steps: - label: ":linux: Packaging ARM" key: "packaging-arm" command: "cd metricbeat && mage package" + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index d510107a89c..a0d139d303b 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -245,6 +245,10 @@ steps: command: | cd packetbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -262,6 +266,10 @@ steps: command: | cd packetbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/winlogbeat/pipeline.winlogbeat.yml b/.buildkite/winlogbeat/pipeline.winlogbeat.yml index ff332791349..b32391bd2e7 100644 --- a/.buildkite/winlogbeat/pipeline.winlogbeat.yml +++ b/.buildkite/winlogbeat/pipeline.winlogbeat.yml @@ -160,6 +160,10 @@ steps: command: | cd winlogbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index 80c298c725d..81c1f99ad86 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -258,6 +258,10 @@ steps: command: | cd x-pack/auditbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -275,6 +279,10 @@ steps: command: | cd x-pack/auditbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index f874f0c45e9..322caff662a 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -91,6 +91,10 @@ steps: command: | cd x-pack/dockerlogbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" @@ -108,6 +112,10 @@ steps: command: | cd x-pack/dockerlogbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index b7e71e3c3c0..22b6432fd66 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -332,6 +332,10 @@ steps: command: | cd x-pack/filebeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -349,6 +353,10 @@ steps: command: | cd x-pack/filebeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 239bd033568..a20f454b6aa 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -255,6 +255,10 @@ steps: command: | cd x-pack/heartbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -272,6 +276,10 @@ steps: command: | cd x-pack/heartbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 4c1c31521f9..11ff663e2fd 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -319,6 +319,10 @@ steps: command: | cd x-pack/metricbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -336,6 +340,10 @@ steps: command: | cd x-pack/metricbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index c8ecac79735..c86a9568fb1 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -229,6 +229,10 @@ steps: .buildkite/scripts/install-msitools.sh cd x-pack/osquerybeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 1ab71c30d7d..451bcee84ba 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -314,6 +314,10 @@ steps: command: | cd x-pack/packetbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -331,6 +335,10 @@ steps: command: | cd x-pack/packetbeat mage package + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index c6b5a6f59fe..a96cf4803fe 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -170,6 +170,10 @@ steps: - label: ":ubuntu: Packaging Linux" key: "packaging-linux" command: "cd x-pack/winlogbeat && mage package" + retry: + automatic: + - limit: 3 + timeout_in_minutes: 20 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" From 8664cae202d1bfe02d30f1c734c568377d16e08b Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Thu, 9 May 2024 16:27:20 +0300 Subject: [PATCH 293/313] Deploy/K8S pipeline post-migration fixes (#39295) * removed make.sh, updated check step * updated steps with env setup & removed setup from hook * updated setenv.sh * moved module to env * updated PR based on comments * updated common.sh * updated k8s env setup * removed tmp folder * added section for tests in BK --- .../deploy/kubernetes/deploy-k8s-pipeline.yml | 59 +++++++++++++------ .../deploy/kubernetes/scripts/install-kind.sh | 40 ------------- .../kubernetes/scripts/install-kubectl.sh | 42 ------------- .buildkite/deploy/kubernetes/scripts/make.sh | 7 --- .../kubernetes/scripts/setup-k8s-env.sh | 10 +++- .buildkite/env-scripts/env.sh | 2 - .buildkite/env-scripts/util.sh | 0 .buildkite/hooks/pre-command | 6 -- .buildkite/hooks/scripts/util.sh | 4 +- .buildkite/scripts/setenv.sh | 7 ++- 10 files changed, 54 insertions(+), 123 deletions(-) delete mode 100755 .buildkite/deploy/kubernetes/scripts/install-kind.sh delete mode 100755 .buildkite/deploy/kubernetes/scripts/install-kubectl.sh delete mode 100755 .buildkite/deploy/kubernetes/scripts/make.sh mode change 100644 => 100755 .buildkite/env-scripts/util.sh diff --git a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml index bd1a493b885..c0005309457 100644 --- a/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml +++ b/.buildkite/deploy/kubernetes/deploy-k8s-pipeline.yml @@ -3,6 +3,10 @@ env: IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" + MODULE: "kubernetes" + + # Other deps + ASDF_KIND_VERSION: "0.20.0" steps: - group: "Deploy/K8S" @@ -10,22 +14,29 @@ steps: steps: - label: "Checks" - command: ".buildkite/deploy/kubernetes/scripts/make.sh" + command: | + set -euo pipefail + make -C deploy/kubernetes all + make check-no-changes agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" machineType: "${GCP_HI_PERF_MACHINE_TYPE}" notify: - github_commit_status: - context: "Deploy/k8s-checks" + context: "deploy/k8s checks" - label: "K8S Test/K8S version: v1.29.0" key: "k8s-test-129" env: K8S_VERSION: "v1.29.0" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" + MODULE: "${MODULE}" + commands: | + set -euo pipefail + source .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh + echo "--- Executing Tests" + make -C metricbeat integration-tests + make -C deploy/kubernetes test retry: automatic: - limit: 3 @@ -35,15 +46,19 @@ steps: machineType: "${GCP_HI_PERF_MACHINE_TYPE}" notify: - github_commit_status: - context: "Deploy/k8s-test v1.29.0" + context: "deploy/k8s test v1.29.0" - label: "K8S Test/K8S version: v1.28.0" key: "k8s-test-128" env: K8S_VERSION: "v1.28.0" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" + MODULE: "${MODULE}" + commands: | + set -euo pipefail + source .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh + echo "--- Executing Tests" + make -C metricbeat integration-tests + make -C deploy/kubernetes test retry: automatic: - limit: 3 @@ -53,15 +68,19 @@ steps: machineType: "${GCP_HI_PERF_MACHINE_TYPE}" notify: - github_commit_status: - context: "Deploy/k8s-test v1.28.0" + context: "deploy/k8s test v1.28.0" - label: "K8S Test/K8S version: v1.27.3" key: "k8s-test-1273" env: K8S_VERSION: "v1.27.3" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" + MODULE: "${MODULE}" + commands: | + set -euo pipefail + source .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh + echo "--- Executing Tests" + make -C metricbeat integration-tests + make -C deploy/kubernetes test retry: automatic: - limit: 3 @@ -71,15 +90,19 @@ steps: machineType: "${GCP_HI_PERF_MACHINE_TYPE}" notify: - github_commit_status: - context: "Deploy/k8s-test v1.27.3" + context: "deploy/k8s test v1.27.3" - label: "K8S Test/K8S version: v1.26.6" key: "k8s-test-1266" env: K8S_VERSION: "v1.26.6" - commands: - - "MODULE=kubernetes make -C metricbeat integration-tests" - - "make -C deploy/kubernetes test" + MODULE: "${MODULE}" + commands: | + set -euo pipefail + source .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh + echo "--- Executing Tests" + make -C metricbeat integration-tests + make -C deploy/kubernetes test retry: automatic: - limit: 3 @@ -89,4 +112,4 @@ steps: machineType: "${GCP_HI_PERF_MACHINE_TYPE}" notify: - github_commit_status: - context: "Deploy/k8s-test v1.26.6" + context: "deploy/k8s test v1.26.6" diff --git a/.buildkite/deploy/kubernetes/scripts/install-kind.sh b/.buildkite/deploy/kubernetes/scripts/install-kind.sh deleted file mode 100755 index 8c399d2de37..00000000000 --- a/.buildkite/deploy/kubernetes/scripts/install-kind.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -MSG="environment variable missing." -KIND_VERSION=${KIND_VERSION:?$MSG} -KIND_BINARY="${BIN}/kind" - -if command -v kind -then - set +e - echo "Found Kind. Checking version.." - FOUND_KIND_VERSION=$(kind --version 2>&1 >/dev/null | awk '{print $3}') - if [ "$FOUND_KIND_VERSION" == "$KIND_VERSION" ] - then - echo "--- Versions match. No need to install Kind. Exiting." - exit 0 - fi - set -e -fi - -echo "UNMET DEP: Installing Kind" - -OS=$(uname -s| tr '[:upper:]' '[:lower:]') -ARCH=$(uname -m| tr '[:upper:]' '[:lower:]') -if [ "${ARCH}" == "aarch64" ] ; then - ARCH_SUFFIX=arm64 -else - ARCH_SUFFIX=amd64 -fi - -if curl -sSLo "${KIND_BINARY}" "https://github.com/kubernetes-sigs/kind/releases/download/${KIND_VERSION}/kind-${OS}-${ARCH_SUFFIX}" ; then - chmod +x "${KIND_BINARY}" - echo "Kind installed: ${KIND_VERSION}" -else - echo "Something bad with the download, let's delete the corrupted binary" - if [ -e "${KIND_BINARY}" ] ; then - rm "${KIND_BINARY}" - fi - exit 1 -fi diff --git a/.buildkite/deploy/kubernetes/scripts/install-kubectl.sh b/.buildkite/deploy/kubernetes/scripts/install-kubectl.sh deleted file mode 100755 index 7f6c75bf3b9..00000000000 --- a/.buildkite/deploy/kubernetes/scripts/install-kubectl.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -MSG="parameter missing." -K8S_VERSION=${K8S_VERSION:?$MSG} -KUBECTL_BINARY="${BIN}/kubectl" - -if command -v kubectl -then - set +e - echo "Found kubectl. Checking version.." - FOUND_KUBECTL_VERSION=$(kubectl version --client --short 2>&1 >/dev/null | awk '{print $3}') - if [ "${FOUND_KUBECTL_VERSION}" == "${K8S_VERSION}" ] - then - echo "Kubectl Versions match. No need to install kubectl. Exiting." - exit 0 - fi - set -e -fi - -echo "UNMET DEP: Installing kubectl" - -OS=$(uname -s| tr '[:upper:]' '[:lower:]') -ARCH=$(uname -m| tr '[:upper:]' '[:lower:]') -if [ "${ARCH}" == "aarch64" ] ; then - ARCH_SUFFIX=arm64 -else - ARCH_SUFFIX=amd64 -fi - -if curl -sSLo "${KUBECTL_BINARY}" "https://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/${OS}/${ARCH_SUFFIX}/kubectl" ; then - chmod +x "${KUBECTL_BINARY}" - echo "Current K8S Version: ${K8S_VERSION}" - echo "Kubectl installed: ${KUBECTL_BINARY}" -else - echo "--- Something bad with the download, let's delete the corrupted binary" - if [ -e "${KUBECTL_BINARY}" ] ; then - rm "${KUBECTL_BINARY}" - fi - exit 1 -fi - diff --git a/.buildkite/deploy/kubernetes/scripts/make.sh b/.buildkite/deploy/kubernetes/scripts/make.sh deleted file mode 100755 index 4c9120a2d90..00000000000 --- a/.buildkite/deploy/kubernetes/scripts/make.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -echo "--- Checking K8S" -make -C deploy/kubernetes all -make check-no-changes diff --git a/.buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh b/.buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh index 3656318bd64..3a4418a18f9 100755 --- a/.buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh +++ b/.buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh @@ -4,11 +4,15 @@ set -euo pipefail source .buildkite/env-scripts/util.sh +export KUBECONFIG="${WORKSPACE}/kubecfg" +export BIN="${WORKSPACE}/bin" +add_bin_path + echo "--- Installing kind & kubectl" -retry_with_count 5 .buildkite/deploy/kubernetes/scripts/install-kind.sh -retry_with_count 5 .buildkite/deploy/kubernetes/scripts/install-kubectl.sh +asdf plugin add kind +asdf install kind $ASDF_KIND_VERSION -echo "--- Setting up kind" +echo "~~~ Setting up kind" max_retries=3 timeout=5 retries=0 diff --git a/.buildkite/env-scripts/env.sh b/.buildkite/env-scripts/env.sh index b30b26c3e8a..58624e300e6 100644 --- a/.buildkite/env-scripts/env.sh +++ b/.buildkite/env-scripts/env.sh @@ -12,7 +12,6 @@ WORKSPACE="$(pwd)" BIN="${WORKSPACE}/bin" HW_TYPE="$(uname -m)" PLATFORM_TYPE="$(uname)" -TMP_FOLDER="tmp.${REPO}" SNAPSHOT="true" PYTEST_ADDOPTS="" OSS_MODULE_PATTERN="^[a-z0-9]+beat\\/module\\/([^\\/]+)\\/.*" @@ -38,7 +37,6 @@ export WORKSPACE export BIN export HW_TYPE export PLATFORM_TYPE -export TMP_FOLDER export SNAPSHOT export PYTEST_ADDOPTS export OSS_MODULE_PATTERN diff --git a/.buildkite/env-scripts/util.sh b/.buildkite/env-scripts/util.sh old mode 100644 new mode 100755 diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 870ece78925..1631b7dc0a1 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -91,9 +91,3 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-packetbeat" ]]; then fi fi -if [[ "$BUILDKITE_PIPELINE_SLUG" == "deploy-k8s" ]]; then - source .buildkite/env-scripts/env.sh - if [[ "$BUILDKITE_STEP_KEY" == k8s-test* ]]; then - .buildkite/deploy/kubernetes/scripts/setup-k8s-env.sh - fi -fi diff --git a/.buildkite/hooks/scripts/util.sh b/.buildkite/hooks/scripts/util.sh index 8ef932725c6..b441991e6fe 100755 --- a/.buildkite/hooks/scripts/util.sh +++ b/.buildkite/hooks/scripts/util.sh @@ -27,8 +27,8 @@ google_cloud_logout_active_account() { cleanup() { if [[ "$BUILDKITE_COMMAND" != *"buildkite-agent pipeline upload"* ]]; then echo "Deleting temporary files..." - if [[ -n "${BIN:-}" ]] && [[ -e "${BIN}/${TMP_FOLDER}" ]]; then - rm -rf "${BIN}/${TMP_FOLDER}.*" + if [[ -n "${BIN:-}" ]]; then + rm -rf "${BIN}" fi echo "Done." fi diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 383ff6ff56b..6351af6f5a6 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -2,20 +2,21 @@ set -euo pipefail +WORKSPACE=${WORKSPACE:-"$(pwd)"} +GO_VERSION=$(cat .go-version) + export REPO="beats" export DOCKER_REGISTRY="docker.elastic.co" export SETUP_GVM_VERSION="v0.5.1" export DOCKER_COMPOSE_VERSION="1.21.0" export DOCKER_COMPOSE_VERSION_AARCH64="v2.21.0" + export ASDF_NODEJS_VERSION="18.17.1" export AWS_REGION="eu-central-1" -WORKSPACE=${WORKSPACE:-"$(pwd)"} export WORKSPACE -GO_VERSION=$(cat .go-version) export GO_VERSION - exportVars() { local platform_type="$(uname)" local arch_type="$(uname -m)" From edf4568898862265cd2c9d4274f747441f220af6 Mon Sep 17 00:00:00 2001 From: Mirko Bez Date: Thu, 9 May 2024 16:47:38 +0200 Subject: [PATCH 294/313] [DOCS] Add the `read_pipeline` cluster privilege for winlogbeat and the `auto_configure` index privilege to beats documentation (#38534) * [DOCS] Removed reference to the Stack GS (#32119) * Update users.asciidoc Add the "read_pipeline" privilege for Winlogbeat too * [Docs] add auto_configure index privilege to the required permissions for beat agents * Update link that was broken --------- Co-authored-by: debadair Co-authored-by: Andrew Kroh --- libbeat/docs/security/api-keys.asciidoc | 2 +- libbeat/docs/security/users.asciidoc | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/libbeat/docs/security/api-keys.asciidoc b/libbeat/docs/security/api-keys.asciidoc index 1a934b67ce8..db068f08782 100644 --- a/libbeat/docs/security/api-keys.asciidoc +++ b/libbeat/docs/security/api-keys.asciidoc @@ -33,7 +33,7 @@ POST /_security/api_key "index": [ { "names": ["{beat_default_index_prefix}-*"], - "privileges": ["view_index_metadata", "create_doc"] + "privileges": ["view_index_metadata", "create_doc", "auto_configure"] } ] } diff --git a/libbeat/docs/security/users.asciidoc b/libbeat/docs/security/users.asciidoc index d6849caf058..846e8bc5937 100644 --- a/libbeat/docs/security/users.asciidoc +++ b/libbeat/docs/security/users.asciidoc @@ -233,8 +233,9 @@ To grant the required privileges: . Create a *writer role*, called something like +{beat_default_index_prefix}_writer+, that has the following privileges: + -NOTE: The `monitor` cluster privilege and the `create_doc` privilege on -+{beat_default_index_prefix}-*+ indices are required in every configuration. +NOTE: The `monitor` cluster privilege and the `create_doc` and `auto_configure` +privileges on +{beat_default_index_prefix}-*+ indices are required in every +configuration. + [options="header"] |==== @@ -259,10 +260,24 @@ ifeval::["{beatname_lc}"=="filebeat"] |Check for ingest pipelines used by modules. Needed when using modules. endif::[] +ifeval::["{beatname_lc}"=="winlogbeat"] +|Cluster +|`read_pipeline` +|Check for ingest pipelines used by {beatname_uc}. +endif::[] + |Index |`create_doc` on +{beat_default_index_prefix}-*+ indices |Write events into {es} + +|Index +|`auto_configure` on +{beat_default_index_prefix}-*+ indices +|Update the datastream mapping. Consider either disabling entirely or adding the +rule `-{beat_default_index_prefix}-*` to the cluster settings +https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#index-creation[action.auto_create_index] +to prevent unwanted indices creations from the agents. |==== + ifndef::apm-server[] + Omit any privileges that aren't relevant in your environment. From 07892f1cf5db6a7aa15ac1b47116585aa3e7c000 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 9 May 2024 21:09:09 +0200 Subject: [PATCH 295/313] ci(jenkins): remove post-build notifications (#39483) --- Jenkinsfile | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 23a4f3798df..04df94f4b25 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -200,16 +200,6 @@ COMMIT=${env.GIT_BASE_COMMIT} VERSION=${env.VERSION}-SNAPSHOT""") archiveArtifacts artifacts: 'packaging.properties' } - cleanup { - // Required to enable the flaky test reporting with GitHub. Workspace exists since the post/always runs earlier - dir("${BASE_DIR}"){ - notifyBuildResult(prComment: true, - slackComment: true, - analyzeFlakey: !isTag(), jobName: getFlakyJobName(withBranch: getFlakyBranch()), - githubIssue: isGitHubIssueEnabled(), - githubLabels: 'Team:Elastic-Agent-Data-Plane') - } - } } } From cc35cce4fc151c605364c6b88301f2ae6277cb11 Mon Sep 17 00:00:00 2001 From: Fae Charlton Date: Thu, 9 May 2024 16:03:37 -0400 Subject: [PATCH 296/313] `aws-s3` input: Split S3 poller and SQS reader into explicit input objects (#39353) A large cleanup in the `aws-s3` input, reorganizing the file structure and splitting internal APIs into additional helpers. This change is meant to have no functional effect, it is strictly a cleanup and reorganization in preparation for future changes. The hope is that the new layout makes initialization steps and logical dependencies clearer. The main changes are: - Make `s3Poller` and `sqsReader` into standalone input objects, `s3PollerInput` and `sqsReaderInput`, that implement the `v2.Input` interface, instead of interleaving the two implementations within the same object. * Choose the appropriate input in `(*s3InputManager).Create` based on configuration * Move associated internal API out of the shared `input.go` into the new `s3_input.go` and `sqs_input.go`, while leaving `s3.go` and `sqs.go` for auxiliary helpers. * Give each input a copy of `config` and `awsConfig`, and remove redundant struct fields that simply shadowed fields already in those configs. - In `sqsReaderInput`, use a fixed set of worker goroutines and track task allocation via channel-based work requests instead of creating ephemeral workers via the previous custom semaphore implementation (similar to the [recent cloudwatch cleanup](https://github.com/elastic/beats/pull/38953)). * Delete `aws.Sem`, since this was its last remaining caller - Collect the helpers related to approximate message count polling into a helper object, `messageCountMonitor`, so their role in the input is clearer. - Generally, break larger steps up into smaller helper functions - Generally, collect initialization dependencies in the same place so the sequencing is clearer. --- x-pack/filebeat/input/awss3/config.go | 60 +++ x-pack/filebeat/input/awss3/input.go | 427 +----------------- .../input/awss3/input_benchmark_test.go | 77 ++-- x-pack/filebeat/input/awss3/input_test.go | 30 +- x-pack/filebeat/input/awss3/s3.go | 270 ++++------- x-pack/filebeat/input/awss3/s3_input.go | 246 ++++++++++ x-pack/filebeat/input/awss3/s3_objects.go | 2 +- .../filebeat/input/awss3/s3_objects_test.go | 14 +- x-pack/filebeat/input/awss3/s3_test.go | 102 +++-- x-pack/filebeat/input/awss3/sqs.go | 172 +++---- x-pack/filebeat/input/awss3/sqs_input.go | 259 +++++++++++ x-pack/filebeat/input/awss3/sqs_s3_event.go | 1 - .../filebeat/input/awss3/sqs_s3_event_test.go | 16 +- x-pack/filebeat/input/awss3/sqs_test.go | 109 +++-- x-pack/filebeat/input/awss3/states.go | 66 +-- x-pack/filebeat/input/awss3/states_test.go | 17 +- x-pack/libbeat/common/aws/credentials.go | 33 +- x-pack/libbeat/common/aws/credentials_test.go | 2 +- x-pack/libbeat/common/aws/semaphore.go | 83 ---- x-pack/libbeat/common/aws/semaphore_test.go | 33 -- 20 files changed, 1010 insertions(+), 1009 deletions(-) create mode 100644 x-pack/filebeat/input/awss3/s3_input.go create mode 100644 x-pack/filebeat/input/awss3/sqs_input.go delete mode 100644 x-pack/libbeat/common/aws/semaphore.go delete mode 100644 x-pack/libbeat/common/aws/semaphore_test.go diff --git a/x-pack/filebeat/input/awss3/config.go b/x-pack/filebeat/input/awss3/config.go index bf29b641f6d..b85c3f3871c 100644 --- a/x-pack/filebeat/input/awss3/config.go +++ b/x-pack/filebeat/input/awss3/config.go @@ -9,6 +9,10 @@ import ( "fmt" "time" + awssdk "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/retry" + "github.com/aws/aws-sdk-go-v2/service/s3" + "github.com/aws/aws-sdk-go-v2/service/sqs" "github.com/dustin/go-humanize" "github.com/elastic/beats/v7/libbeat/common/cfgtype" @@ -222,3 +226,59 @@ func (rc *readerConfig) InitDefaults() { rc.MaxBytes = 10 * humanize.MiByte rc.LineTerminator = readfile.AutoLineTerminator } + +func (c config) getBucketName() string { + if c.NonAWSBucketName != "" { + return c.NonAWSBucketName + } + if c.BucketARN != "" { + return getBucketNameFromARN(c.BucketARN) + } + return "" +} + +func (c config) getBucketARN() string { + if c.NonAWSBucketName != "" { + return c.NonAWSBucketName + } + if c.BucketARN != "" { + return c.BucketARN + } + return "" +} + +// An AWS SDK callback to apply the input configuration's settings to an S3 +// options struct. +// Should be provided as a parameter to s3.NewFromConfig. +func (c config) s3ConfigModifier(o *s3.Options) { + if c.NonAWSBucketName != "" { + o.EndpointResolver = nonAWSBucketResolver{endpoint: c.AWSConfig.Endpoint} + } + + if c.AWSConfig.FIPSEnabled { + o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled + } + o.UsePathStyle = c.PathStyle + + o.Retryer = retry.NewStandard(func(so *retry.StandardOptions) { + so.MaxAttempts = 5 + // Recover quickly when requests start working again + so.NoRetryIncrement = 100 + }) +} + +// An AWS SDK callback to apply the input configuration's settings to an SQS +// options struct. +// Should be provided as a parameter to sqs.NewFromConfig. +func (c config) sqsConfigModifier(o *sqs.Options) { + if c.AWSConfig.FIPSEnabled { + o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled + } +} + +func (c config) getFileSelectors() []fileSelectorConfig { + if len(c.FileSelectors) > 0 { + return c.FileSelectors + } + return []fileSelectorConfig{{ReaderConfig: c.ReaderConfig}} +} diff --git a/x-pack/filebeat/input/awss3/input.go b/x-pack/filebeat/input/awss3/input.go index a8020eb50b8..f0fa3137974 100644 --- a/x-pack/filebeat/input/awss3/input.go +++ b/x-pack/filebeat/input/awss3/input.go @@ -5,33 +5,19 @@ package awss3 import ( - "context" - "errors" "fmt" - "net/url" - "strings" - "time" awssdk "github.com/aws/aws-sdk-go-v2/aws" - "github.com/aws/aws-sdk-go-v2/aws/retry" - "github.com/aws/aws-sdk-go-v2/service/s3" - "github.com/aws/aws-sdk-go-v2/service/sqs" - "github.com/aws/smithy-go" "github.com/elastic/beats/v7/filebeat/beater" v2 "github.com/elastic/beats/v7/filebeat/input/v2" - "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/beats/v7/libbeat/feature" awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" conf "github.com/elastic/elastic-agent-libs/config" - "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/go-concert/unison" ) -const ( - inputName = "aws-s3" - sqsAccessDeniedErrorCode = "AccessDeniedException" -) +const inputName = "aws-s3" func Plugin(store beater.StateStore) v2.Plugin { return v2.Plugin{ @@ -57,19 +43,10 @@ func (im *s3InputManager) Create(cfg *conf.C) (v2.Input, error) { return nil, err } - return newInput(config, im.store) -} - -// s3Input is a input for reading logs from S3 when triggered by an SQS message. -type s3Input struct { - config config - awsConfig awssdk.Config - store beater.StateStore - metrics *inputMetrics -} - -func newInput(config config, store beater.StateStore) (*s3Input, error) { awsConfig, err := awscommon.InitializeAWSConfig(config.AWSConfig) + if err != nil { + return nil, fmt.Errorf("initializing AWS config: %w", err) + } if config.AWSConfig.Endpoint != "" { // Add a custom endpointResolver to the awsConfig so that all the requests are routed to this endpoint @@ -82,401 +59,15 @@ func newInput(config config, store beater.StateStore) (*s3Input, error) { }) } - if err != nil { - return nil, fmt.Errorf("failed to initialize AWS credentials: %w", err) - } - - return &s3Input{ - config: config, - awsConfig: awsConfig, - store: store, - }, nil -} - -func (in *s3Input) Name() string { return inputName } - -func (in *s3Input) Test(ctx v2.TestContext) error { - return nil -} - -func (in *s3Input) Run(inputContext v2.Context, pipeline beat.Pipeline) error { - ctx := v2.GoContextFromCanceler(inputContext.Cancelation) - - if in.config.QueueURL != "" { - return in.runQueueReader(ctx, inputContext, pipeline) - } - - if in.config.BucketARN != "" || in.config.NonAWSBucketName != "" { - return in.runS3Poller(ctx, inputContext, pipeline) - } - - return nil -} - -func (in *s3Input) runQueueReader( - ctx context.Context, - inputContext v2.Context, - pipeline beat.Pipeline, -) error { - // Set awsConfig.Region based on the config and queue URL - region, err := chooseRegion(inputContext.Logger, in.config) - if err != nil { - return err - } - in.awsConfig.Region = region - - // Create SQS receiver and S3 notification processor. - receiver, err := in.createSQSReceiver(inputContext, pipeline) - if err != nil { - return fmt.Errorf("failed to initialize sqs receiver: %w", err) - } - defer receiver.metrics.Close() - - // Poll metrics periodically in the background - go pollSqsWaitingMetric(ctx, receiver) - - return receiver.Receive(ctx) -} - -func (in *s3Input) runS3Poller( - ctx context.Context, - inputContext v2.Context, - pipeline beat.Pipeline, -) error { - // Create client for publishing events and receive notification of their ACKs. - client, err := pipeline.ConnectWith(beat.ClientConfig{ - EventListener: awscommon.NewEventACKHandler(), - Processing: beat.ProcessingConfig{ - // This input only produces events with basic types so normalization - // is not required. - EventNormalization: boolPtr(false), - }, - }) - if err != nil { - return fmt.Errorf("failed to create pipeline client: %w", err) - } - defer client.Close() - - // Connect to the registry and create our states lookup - persistentStore, err := in.store.Access() - if err != nil { - return fmt.Errorf("can not access persistent store: %w", err) - } - defer persistentStore.Close() - - states, err := newStates(inputContext, persistentStore) - if err != nil { - return fmt.Errorf("can not start persistent store: %w", err) - } - - // Create S3 receiver and S3 notification processor. - poller, err := in.createS3Poller(inputContext, ctx, client, states) - if err != nil { - return fmt.Errorf("failed to initialize s3 poller: %w", err) - } - defer poller.metrics.Close() - - return poller.Poll(ctx) -} - -func (in *s3Input) createSQSReceiver(ctx v2.Context, pipeline beat.Pipeline) (*sqsReader, error) { - sqsAPI := &awsSQSAPI{ - client: sqs.NewFromConfig(in.awsConfig, func(o *sqs.Options) { - if in.config.AWSConfig.FIPSEnabled { - o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled - } - }), - queueURL: in.config.QueueURL, - apiTimeout: in.config.APITimeout, - visibilityTimeout: in.config.VisibilityTimeout, - longPollWaitTime: in.config.SQSWaitTime, - } - - s3API := &awsS3API{ - client: s3.NewFromConfig(in.awsConfig, func(o *s3.Options) { - if in.config.AWSConfig.FIPSEnabled { - o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled - } - o.UsePathStyle = in.config.PathStyle - }), - } - - log := ctx.Logger.With("queue_url", in.config.QueueURL) - log.Infof("AWS api_timeout is set to %v.", in.config.APITimeout) - log.Infof("AWS region is set to %v.", in.awsConfig.Region) - log.Infof("AWS SQS visibility_timeout is set to %v.", in.config.VisibilityTimeout) - log.Infof("AWS SQS max_number_of_messages is set to %v.", in.config.MaxNumberOfMessages) - - if in.config.BackupConfig.GetBucketName() != "" { - log.Warnf("You have the backup_to_bucket functionality activated with SQS. Please make sure to set appropriate destination buckets" + - "or prefixes to avoid an infinite loop.") - } - - fileSelectors := in.config.FileSelectors - if len(in.config.FileSelectors) == 0 { - fileSelectors = []fileSelectorConfig{{ReaderConfig: in.config.ReaderConfig}} - } - script, err := newScriptFromConfig(log.Named("sqs_script"), in.config.SQSScript) - if err != nil { - return nil, err - } - in.metrics = newInputMetrics(ctx.ID, nil, in.config.MaxNumberOfMessages) - - s3EventHandlerFactory := newS3ObjectProcessorFactory(log.Named("s3"), in.metrics, s3API, fileSelectors, in.config.BackupConfig, in.config.MaxNumberOfMessages) - - sqsMessageHandler := newSQSS3EventProcessor(log.Named("sqs_s3_event"), in.metrics, sqsAPI, script, in.config.VisibilityTimeout, in.config.SQSMaxReceiveCount, pipeline, s3EventHandlerFactory, in.config.MaxNumberOfMessages) - - sqsReader := newSQSReader(log.Named("sqs"), in.metrics, sqsAPI, in.config.MaxNumberOfMessages, sqsMessageHandler) - - return sqsReader, nil -} - -type nonAWSBucketResolver struct { - endpoint string -} - -func (n nonAWSBucketResolver) ResolveEndpoint(region string, options s3.EndpointResolverOptions) (awssdk.Endpoint, error) { - return awssdk.Endpoint{URL: n.endpoint, SigningRegion: region, HostnameImmutable: true, Source: awssdk.EndpointSourceCustom}, nil -} - -func (in *s3Input) createS3Poller(ctx v2.Context, cancelCtx context.Context, client beat.Client, states *states) (*s3Poller, error) { - var bucketName string - var bucketID string - if in.config.NonAWSBucketName != "" { - bucketName = in.config.NonAWSBucketName - bucketID = bucketName - } else if in.config.BucketARN != "" { - bucketName = getBucketNameFromARN(in.config.BucketARN) - bucketID = in.config.BucketARN - } - - s3Client := s3.NewFromConfig(in.awsConfig, func(o *s3.Options) { - if in.config.NonAWSBucketName != "" { - o.EndpointResolver = nonAWSBucketResolver{endpoint: in.config.AWSConfig.Endpoint} - } - - if in.config.AWSConfig.FIPSEnabled { - o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled - } - o.UsePathStyle = in.config.PathStyle - - o.Retryer = retry.NewStandard(func(so *retry.StandardOptions) { - so.MaxAttempts = 5 - // Recover quickly when requests start working again - so.NoRetryIncrement = 100 - }) - }) - regionName, err := getRegionForBucket(cancelCtx, s3Client, bucketName) - if err != nil { - return nil, fmt.Errorf("failed to get AWS region for bucket: %w", err) - } - - originalAwsConfigRegion := in.awsConfig.Region - - in.awsConfig.Region = regionName - - if regionName != originalAwsConfigRegion { - s3Client = s3.NewFromConfig(in.awsConfig, func(o *s3.Options) { - if in.config.NonAWSBucketName != "" { - o.EndpointResolver = nonAWSBucketResolver{endpoint: in.config.AWSConfig.Endpoint} - } - - if in.config.AWSConfig.FIPSEnabled { - o.EndpointOptions.UseFIPSEndpoint = awssdk.FIPSEndpointStateEnabled - } - o.UsePathStyle = in.config.PathStyle - }) - } - - s3API := &awsS3API{ - client: s3Client, - } - - log := ctx.Logger.With("bucket", bucketID) - log.Infof("number_of_workers is set to %v.", in.config.NumberOfWorkers) - log.Infof("bucket_list_interval is set to %v.", in.config.BucketListInterval) - log.Infof("bucket_list_prefix is set to %v.", in.config.BucketListPrefix) - log.Infof("AWS region is set to %v.", in.awsConfig.Region) - - fileSelectors := in.config.FileSelectors - if len(in.config.FileSelectors) == 0 { - fileSelectors = []fileSelectorConfig{{ReaderConfig: in.config.ReaderConfig}} - } - in.metrics = newInputMetrics(ctx.ID, nil, in.config.MaxNumberOfMessages) - s3EventHandlerFactory := newS3ObjectProcessorFactory(log.Named("s3"), in.metrics, s3API, fileSelectors, in.config.BackupConfig, in.config.MaxNumberOfMessages) - s3Poller := newS3Poller(log.Named("s3_poller"), - in.metrics, - s3API, - client, - s3EventHandlerFactory, - states, - bucketID, - in.config.BucketListPrefix, - in.awsConfig.Region, - getProviderFromDomain(in.config.AWSConfig.Endpoint, in.config.ProviderOverride), - in.config.NumberOfWorkers, - in.config.BucketListInterval) - - return s3Poller, nil -} - -var errBadQueueURL = errors.New("QueueURL is not in format: https://sqs.{REGION_ENDPOINT}.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME} or https://{VPC_ENDPOINT}.sqs.{REGION_ENDPOINT}.vpce.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME}") - -func chooseRegion(log *logp.Logger, config config) (string, error) { - urlRegion := getRegionFromQueueURL(config.QueueURL, config.AWSConfig.Endpoint) - if config.RegionName != "" { - // If a region is configured, that takes precedence over the URL. - if log != nil && config.RegionName != urlRegion { - log.Warnf("configured region disagrees with queue_url region (%q != %q): using %q", config.RegionName, urlRegion, config.RegionName) - } - return config.RegionName, nil - } - if urlRegion != "" { - // If no region is configured, fall back on the URL. - return urlRegion, nil - } - // If we can't get the region from the config or the URL, report an error. - return "", fmt.Errorf("failed to get AWS region from queue_url: %w", errBadQueueURL) -} - -// getRegionFromQueueURL returns the region from standard queue URLs, or the -// empty string if it couldn't be determined. -func getRegionFromQueueURL(queueURL, endpoint string) string { - // get region from queueURL - // Example for sqs queue: https://sqs.us-east-1.amazonaws.com/12345678912/test-s3-logs - // Example for vpce: https://vpce-test.sqs.us-east-1.vpce.amazonaws.com/12345678912/sqs-queue - u, err := url.Parse(queueURL) - if err != nil { - return "" - } - - // check for sqs queue url - host := strings.SplitN(u.Host, ".", 3) - if len(host) == 3 && host[0] == "sqs" { - if host[2] == endpoint || (endpoint == "" && strings.HasPrefix(host[2], "amazonaws.")) { - return host[1] - } - } - - // check for vpce url - host = strings.SplitN(u.Host, ".", 5) - if len(host) == 5 && host[1] == "sqs" { - if host[4] == endpoint || (endpoint == "" && strings.HasPrefix(host[4], "amazonaws.")) { - return host[2] - } - } - - return "" -} - -func getRegionForBucket(ctx context.Context, s3Client *s3.Client, bucketName string) (string, error) { - getBucketLocationOutput, err := s3Client.GetBucketLocation(ctx, &s3.GetBucketLocationInput{ - Bucket: awssdk.String(bucketName), - }) - - if err != nil { - return "", err + if config.QueueURL != "" { + return newSQSReaderInput(config, awsConfig), nil } - // Region us-east-1 have a LocationConstraint of null. - if len(getBucketLocationOutput.LocationConstraint) == 0 { - return "us-east-1", nil - } - - return string(getBucketLocationOutput.LocationConstraint), nil -} - -func getBucketNameFromARN(bucketARN string) string { - bucketMetadata := strings.Split(bucketARN, ":") - bucketName := bucketMetadata[len(bucketMetadata)-1] - return bucketName -} - -func getProviderFromDomain(endpoint string, ProviderOverride string) string { - if ProviderOverride != "" { - return ProviderOverride - } - if endpoint == "" { - return "aws" - } - // List of popular S3 SaaS providers - providers := map[string]string{ - "amazonaws.com": "aws", - "c2s.sgov.gov": "aws", - "c2s.ic.gov": "aws", - "amazonaws.com.cn": "aws", - "backblazeb2.com": "backblaze", - "cloudflarestorage.com": "cloudflare", - "wasabisys.com": "wasabi", - "digitaloceanspaces.com": "digitalocean", - "dream.io": "dreamhost", - "scw.cloud": "scaleway", - "googleapis.com": "gcp", - "cloud.it": "arubacloud", - "linodeobjects.com": "linode", - "vultrobjects.com": "vultr", - "appdomain.cloud": "ibm", - "aliyuncs.com": "alibaba", - "oraclecloud.com": "oracle", - "exo.io": "exoscale", - "upcloudobjects.com": "upcloud", - "ilandcloud.com": "iland", - "zadarazios.com": "zadara", - } - - parsedEndpoint, _ := url.Parse(endpoint) - for key, provider := range providers { - // support endpoint with and without scheme (http(s)://abc.xyz, abc.xyz) - constraint := parsedEndpoint.Hostname() - if len(parsedEndpoint.Scheme) == 0 { - constraint = parsedEndpoint.Path - } - if strings.HasSuffix(constraint, key) { - return provider - } - } - return "unknown" -} - -func pollSqsWaitingMetric(ctx context.Context, receiver *sqsReader) { - // Run GetApproximateMessageCount before start of timer to set initial count for sqs waiting metric - // This is to avoid misleading values in metric when sqs messages are processed before the ticker channel kicks in - if shouldReturn := updateMessageCount(receiver, ctx); shouldReturn { - return - } - - t := time.NewTicker(time.Minute) - defer t.Stop() - for { - select { - case <-ctx.Done(): - return - case <-t.C: - if shouldReturn := updateMessageCount(receiver, ctx); shouldReturn { - return - } - } - } -} - -// updateMessageCount runs GetApproximateMessageCount for the given context and updates the receiver metric with the count returning false on no error -// If there is an error, the metric is reinitialized to -1 and true is returned -func updateMessageCount(receiver *sqsReader, ctx context.Context) bool { - count, err := receiver.GetApproximateMessageCount(ctx) - - var apiError smithy.APIError - if errors.As(err, &apiError) { - switch apiError.ErrorCode() { - case sqsAccessDeniedErrorCode: - // stop polling if auth error is encountered - // Set it back to -1 because there is a permission error - receiver.metrics.sqsMessagesWaiting.Set(int64(-1)) - return true - } + if config.BucketARN != "" || config.NonAWSBucketName != "" { + return newS3PollerInput(config, awsConfig, im.store) } - receiver.metrics.sqsMessagesWaiting.Set(int64(count)) - return false + return nil, fmt.Errorf("configuration has no SQS queue URL and no S3 bucket ARN") } // boolPtr returns a pointer to b. diff --git a/x-pack/filebeat/input/awss3/input_benchmark_test.go b/x-pack/filebeat/input/awss3/input_benchmark_test.go index 5d22d141168..09b7c8bd9d2 100644 --- a/x-pack/filebeat/input/awss3/input_benchmark_test.go +++ b/x-pack/filebeat/input/awss3/input_benchmark_test.go @@ -16,9 +16,7 @@ import ( "time" "github.com/stretchr/testify/assert" - - "github.com/elastic/beats/v7/libbeat/statestore" - "github.com/elastic/beats/v7/libbeat/statestore/storetest" + "github.com/stretchr/testify/require" "github.com/elastic/beats/v7/libbeat/beat" @@ -210,23 +208,24 @@ file_selectors: func benchmarkInputSQS(t *testing.T, maxMessagesInflight int) testing.BenchmarkResult { return testing.Benchmark(func(b *testing.B) { - log := logp.NewLogger(inputName) - metricRegistry := monitoring.NewRegistry() - metrics := newInputMetrics("test_id", metricRegistry, maxMessagesInflight) - sqsAPI := newConstantSQS() - s3API := newConstantS3(t) + var err error pipeline := &fakePipeline{} - conf := makeBenchmarkConfig(t) - s3EventHandlerFactory := newS3ObjectProcessorFactory(log.Named("s3"), metrics, s3API, conf.FileSelectors, backupConfig{}, maxMessagesInflight) - sqsMessageHandler := newSQSS3EventProcessor(log.Named("sqs_s3_event"), metrics, sqsAPI, nil, time.Minute, 5, pipeline, s3EventHandlerFactory, maxMessagesInflight) - sqsReader := newSQSReader(log.Named("sqs"), metrics, sqsAPI, maxMessagesInflight, sqsMessageHandler) + conf := makeBenchmarkConfig(t) + conf.MaxNumberOfMessages = maxMessagesInflight + sqsReader := newSQSReaderInput(conf, aws.Config{}) + sqsReader.log = log.Named("sqs") + sqsReader.metrics = newInputMetrics("test_id", monitoring.NewRegistry(), maxMessagesInflight) + sqsReader.sqs = newConstantSQS() + sqsReader.s3 = newConstantS3(t) + sqsReader.msgHandler, err = sqsReader.createEventProcessor(pipeline) + require.NoError(t, err, "createEventProcessor must succeed") ctx, cancel := context.WithCancel(context.Background()) b.Cleanup(cancel) go func() { - for metrics.sqsMessagesReceivedTotal.Get() < uint64(b.N) { + for sqsReader.metrics.sqsMessagesReceivedTotal.Get() < uint64(b.N) { time.Sleep(5 * time.Millisecond) } cancel() @@ -234,25 +233,21 @@ func benchmarkInputSQS(t *testing.T, maxMessagesInflight int) testing.BenchmarkR b.ResetTimer() start := time.Now() - if err := sqsReader.Receive(ctx); err != nil { - if !errors.Is(err, context.DeadlineExceeded) { - t.Fatal(err) - } - } + sqsReader.run(ctx) b.StopTimer() elapsed := time.Since(start) b.ReportMetric(float64(maxMessagesInflight), "max_messages_inflight") b.ReportMetric(elapsed.Seconds(), "sec") - b.ReportMetric(float64(metrics.s3EventsCreatedTotal.Get()), "events") - b.ReportMetric(float64(metrics.s3EventsCreatedTotal.Get())/elapsed.Seconds(), "events_per_sec") + b.ReportMetric(float64(sqsReader.metrics.s3EventsCreatedTotal.Get()), "events") + b.ReportMetric(float64(sqsReader.metrics.s3EventsCreatedTotal.Get())/elapsed.Seconds(), "events_per_sec") - b.ReportMetric(float64(metrics.s3BytesProcessedTotal.Get()), "s3_bytes") - b.ReportMetric(float64(metrics.s3BytesProcessedTotal.Get())/elapsed.Seconds(), "s3_bytes_per_sec") + b.ReportMetric(float64(sqsReader.metrics.s3BytesProcessedTotal.Get()), "s3_bytes") + b.ReportMetric(float64(sqsReader.metrics.s3BytesProcessedTotal.Get())/elapsed.Seconds(), "s3_bytes_per_sec") - b.ReportMetric(float64(metrics.sqsMessagesDeletedTotal.Get()), "sqs_messages") - b.ReportMetric(float64(metrics.sqsMessagesDeletedTotal.Get())/elapsed.Seconds(), "sqs_messages_per_sec") + b.ReportMetric(float64(sqsReader.metrics.sqsMessagesDeletedTotal.Get()), "sqs_messages") + b.ReportMetric(float64(sqsReader.metrics.sqsMessagesDeletedTotal.Get())/elapsed.Seconds(), "sqs_messages_per_sec") }) } @@ -314,6 +309,7 @@ func benchmarkInputS3(t *testing.T, numberOfWorkers int) testing.BenchmarkResult }() config := makeBenchmarkConfig(t) + config.NumberOfWorkers = numberOfWorkers b.ResetTimer() start := time.Now() @@ -333,27 +329,28 @@ func benchmarkInputS3(t *testing.T, numberOfWorkers int) testing.BenchmarkResult wg.Add(1) go func(i int, wg *sync.WaitGroup) { defer wg.Done() - listPrefix := fmt.Sprintf("list_prefix_%d", i) + curConfig := config + curConfig.BucketListPrefix = fmt.Sprintf("list_prefix_%d", i) s3API := newConstantS3(t) - s3API.pagerConstant = newS3PagerConstant(listPrefix) - storeReg := statestore.NewRegistry(storetest.NewMemoryStoreBackend()) - store, err := storeReg.Get("test") - if err != nil { - errChan <- fmt.Errorf("failed to access store: %w", err) - return - } + s3API.pagerConstant = newS3PagerConstant(curConfig.BucketListPrefix) + store := openTestStatestore() - states, err := newStates(inputCtx, store) + states, err := newStates(nil, store) assert.NoError(t, err, "states creation should succeed") - s3EventHandlerFactory := newS3ObjectProcessorFactory(log.Named("s3"), metrics, s3API, config.FileSelectors, backupConfig{}, numberOfWorkers) - s3Poller := newS3Poller(logp.NewLogger(inputName), metrics, s3API, client, s3EventHandlerFactory, states, "bucket", listPrefix, "region", "provider", numberOfWorkers, time.Second) - - if err := s3Poller.Poll(ctx); err != nil { - if !errors.Is(err, context.DeadlineExceeded) { - errChan <- err - } + s3EventHandlerFactory := newS3ObjectProcessorFactory(log.Named("s3"), metrics, s3API, config.FileSelectors, backupConfig{}) + s3Poller := &s3PollerInput{ + log: logp.NewLogger(inputName), + config: config, + metrics: metrics, + s3: s3API, + client: client, + s3ObjectHandler: s3EventHandlerFactory, + states: states, + provider: "provider", } + + s3Poller.run(ctx) }(i, wg) } diff --git a/x-pack/filebeat/input/awss3/input_test.go b/x-pack/filebeat/input/awss3/input_test.go index bf33073cb2a..83015c1661b 100644 --- a/x-pack/filebeat/input/awss3/input_test.go +++ b/x-pack/filebeat/input/awss3/input_test.go @@ -5,12 +5,16 @@ package awss3 import ( + "context" "errors" "testing" + awssdk "github.com/aws/aws-sdk-go-v2/aws" "github.com/stretchr/testify/assert" - aws "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" + "github.com/elastic/elastic-agent-libs/logp" ) func TestGetProviderFromDomain(t *testing.T) { @@ -52,7 +56,7 @@ func TestGetProviderFromDomain(t *testing.T) { } } -func TestGetRegionFromQueueURL(t *testing.T) { +func TestRegionSelection(t *testing.T) { tests := []struct { name string queueURL string @@ -130,9 +134,18 @@ func TestGetRegionFromQueueURL(t *testing.T) { config := config{ QueueURL: test.queueURL, RegionName: test.regionName, - AWSConfig: aws.ConfigAWS{Endpoint: test.endpoint}, + AWSConfig: awscommon.ConfigAWS{Endpoint: test.endpoint}, } - got, err := chooseRegion(nil, config) + in := newSQSReaderInput(config, awssdk.Config{}) + inputCtx := v2.Context{ + Logger: logp.NewLogger("awss3_test"), + ID: "test_id", + } + + // Run setup and verify that it put the correct region in awsConfig.Region + err := in.setup(inputCtx, &fakePipeline{}) + in.cleanup() + got := in.awsConfig.Region // The region passed into the AWS API if !errors.Is(err, test.wantErr) { t.Errorf("unexpected error: got:%v want:%v", err, test.wantErr) } @@ -142,3 +155,12 @@ func TestGetRegionFromQueueURL(t *testing.T) { }) } } + +func newV2Context() (v2.Context, func()) { + ctx, cancel := context.WithCancel(context.Background()) + return v2.Context{ + Logger: logp.NewLogger("awss3_test"), + ID: "test_id", + Cancelation: ctx, + }, cancel +} diff --git a/x-pack/filebeat/input/awss3/s3.go b/x-pack/filebeat/input/awss3/s3.go index 8909f78bb39..eb8e19c2cf9 100644 --- a/x-pack/filebeat/input/awss3/s3.go +++ b/x-pack/filebeat/input/awss3/s3.go @@ -6,212 +6,118 @@ package awss3 import ( "context" - "errors" "fmt" - "sync" - "time" + "net/url" + "strings" - "github.com/aws/aws-sdk-go-v2/aws/ratelimit" + awssdk "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/elastic/beats/v7/libbeat/beat" - "github.com/elastic/beats/v7/libbeat/common/backoff" awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" - "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/go-concert/timed" ) -// var instead of const so it can be reduced during unit tests (instead of waiting -// through 10 minutes of retry backoff) -var readerLoopMaxCircuitBreaker = 10 - -type s3ObjectPayload struct { - s3ObjectHandler s3ObjectHandler - objectState state -} - -type s3Poller struct { - numberOfWorkers int - bucket string - listPrefix string - region string - provider string - bucketPollInterval time.Duration - s3 s3API - log *logp.Logger - metrics *inputMetrics - client beat.Client - s3ObjectHandler s3ObjectHandlerFactory - states *states - workersProcessingMap *sync.Map -} - -func newS3Poller(log *logp.Logger, - metrics *inputMetrics, - s3 s3API, - client beat.Client, - s3ObjectHandler s3ObjectHandlerFactory, - states *states, - bucket string, - listPrefix string, - awsRegion string, - provider string, - numberOfWorkers int, - bucketPollInterval time.Duration, -) *s3Poller { - if metrics == nil { - // Metrics are optional. Initialize a stub. - metrics = newInputMetrics("", nil, 0) +func createS3API(ctx context.Context, config config, awsConfig awssdk.Config) (*awsS3API, error) { + s3Client := s3.NewFromConfig(awsConfig, config.s3ConfigModifier) + regionName, err := getRegionForBucket(ctx, s3Client, config.getBucketName()) + if err != nil { + return nil, fmt.Errorf("failed to get AWS region for bucket: %w", err) } - return &s3Poller{ - numberOfWorkers: numberOfWorkers, - bucket: bucket, - listPrefix: listPrefix, - region: awsRegion, - provider: provider, - bucketPollInterval: bucketPollInterval, - s3: s3, - log: log, - metrics: metrics, - client: client, - s3ObjectHandler: s3ObjectHandler, - states: states, - workersProcessingMap: new(sync.Map), + // Can this really happen? + if regionName != awsConfig.Region { + awsConfig.Region = regionName + s3Client = s3.NewFromConfig(awsConfig, config.s3ConfigModifier) } -} - -func (p *s3Poller) createS3ObjectProcessor(ctx context.Context, state state) s3ObjectHandler { - event := s3EventV2{} - event.AWSRegion = p.region - event.Provider = p.provider - event.S3.Bucket.Name = state.Bucket - event.S3.Bucket.ARN = p.bucket - event.S3.Object.Key = state.Key - acker := awscommon.NewEventACKTracker(ctx) - - return p.s3ObjectHandler.Create(ctx, p.log, p.client, acker, event) + return &awsS3API{ + client: s3Client, + }, nil } -func (p *s3Poller) workerLoop(ctx context.Context, s3ObjectPayloadChan <-chan *s3ObjectPayload) { - rateLimitWaiter := backoff.NewEqualJitterBackoff(ctx.Done(), 1, 120) - - for s3ObjectPayload := range s3ObjectPayloadChan { - objHandler := s3ObjectPayload.s3ObjectHandler - state := s3ObjectPayload.objectState +func createPipelineClient(pipeline beat.Pipeline) (beat.Client, error) { + return pipeline.ConnectWith(beat.ClientConfig{ + EventListener: awscommon.NewEventACKHandler(), + Processing: beat.ProcessingConfig{ + // This input only produces events with basic types so normalization + // is not required. + EventNormalization: boolPtr(false), + }, + }) +} - // Process S3 object (download, parse, create events). - err := objHandler.ProcessS3Object() - if errors.Is(err, errS3DownloadFailed) { - // Download errors are ephemeral. Add a backoff delay, then skip to the - // next iteration so we don't mark the object as permanently failed. - rateLimitWaiter.Wait() - continue - } - // Reset the rate limit delay on results that aren't download errors. - rateLimitWaiter.Reset() +func getRegionForBucket(ctx context.Context, s3Client *s3.Client, bucketName string) (string, error) { + getBucketLocationOutput, err := s3Client.GetBucketLocation(ctx, &s3.GetBucketLocationInput{ + Bucket: awssdk.String(bucketName), + }) - // Wait for downloaded objects to be ACKed. - objHandler.Wait() + if err != nil { + return "", err + } - if err != nil { - p.log.Errorf("failed processing S3 event for object key %q in bucket %q: %v", - state.Key, state.Bucket, err.Error()) + // Region us-east-1 have a LocationConstraint of null. + if len(getBucketLocationOutput.LocationConstraint) == 0 { + return "us-east-1", nil + } - // Non-retryable error. - state.Failed = true - } else { - state.Stored = true - } + return string(getBucketLocationOutput.LocationConstraint), nil +} - // Persist the result - p.states.AddState(state) +func getBucketNameFromARN(bucketARN string) string { + bucketMetadata := strings.Split(bucketARN, ":") + bucketName := bucketMetadata[len(bucketMetadata)-1] + return bucketName +} - // Metrics - p.metrics.s3ObjectsAckedTotal.Inc() +func getProviderFromDomain(endpoint string, ProviderOverride string) string { + if ProviderOverride != "" { + return ProviderOverride + } + if endpoint == "" { + return "aws" + } + // List of popular S3 SaaS providers + providers := map[string]string{ + "amazonaws.com": "aws", + "c2s.sgov.gov": "aws", + "c2s.ic.gov": "aws", + "amazonaws.com.cn": "aws", + "backblazeb2.com": "backblaze", + "cloudflarestorage.com": "cloudflare", + "wasabisys.com": "wasabi", + "digitaloceanspaces.com": "digitalocean", + "dream.io": "dreamhost", + "scw.cloud": "scaleway", + "googleapis.com": "gcp", + "cloud.it": "arubacloud", + "linodeobjects.com": "linode", + "vultrobjects.com": "vultr", + "appdomain.cloud": "ibm", + "aliyuncs.com": "alibaba", + "oraclecloud.com": "oracle", + "exo.io": "exoscale", + "upcloudobjects.com": "upcloud", + "ilandcloud.com": "iland", + "zadarazios.com": "zadara", } -} -func (p *s3Poller) readerLoop(ctx context.Context, s3ObjectPayloadChan chan<- *s3ObjectPayload) { - defer close(s3ObjectPayloadChan) - - bucketName := getBucketNameFromARN(p.bucket) - - errorBackoff := backoff.NewEqualJitterBackoff(ctx.Done(), 1, 120) - circuitBreaker := 0 - paginator := p.s3.ListObjectsPaginator(bucketName, p.listPrefix) - for paginator.HasMorePages() { - page, err := paginator.NextPage(ctx) - - if err != nil { - p.log.Warnw("Error when paginating listing.", "error", err) - // QuotaExceededError is client-side rate limiting in the AWS sdk, - // don't include it in the circuit breaker count - if !errors.As(err, &ratelimit.QuotaExceededError{}) { - circuitBreaker++ - if circuitBreaker >= readerLoopMaxCircuitBreaker { - p.log.Warnw(fmt.Sprintf("%d consecutive error when paginating listing, breaking the circuit.", circuitBreaker), "error", err) - break - } - } - // add a backoff delay and try again - errorBackoff.Wait() - continue + parsedEndpoint, _ := url.Parse(endpoint) + for key, provider := range providers { + // support endpoint with and without scheme (http(s)://abc.xyz, abc.xyz) + constraint := parsedEndpoint.Hostname() + if len(parsedEndpoint.Scheme) == 0 { + constraint = parsedEndpoint.Path } - // Reset the circuit breaker and the error backoff if a read is successful - circuitBreaker = 0 - errorBackoff.Reset() - - totListedObjects := len(page.Contents) - - // Metrics - p.metrics.s3ObjectsListedTotal.Add(uint64(totListedObjects)) - for _, object := range page.Contents { - state := newState(bucketName, *object.Key, *object.ETag, *object.LastModified) - if p.states.IsProcessed(state) { - p.log.Debugw("skipping state.", "state", state) - continue - } - - s3Processor := p.createS3ObjectProcessor(ctx, state) - if s3Processor == nil { - p.log.Debugw("empty s3 processor.", "state", state) - continue - } - - s3ObjectPayloadChan <- &s3ObjectPayload{ - s3ObjectHandler: s3Processor, - objectState: state, - } - - p.metrics.s3ObjectsProcessedTotal.Inc() + if strings.HasSuffix(constraint, key) { + return provider } } + return "unknown" } -func (p *s3Poller) Poll(ctx context.Context) error { - for ctx.Err() == nil { - var workerWg sync.WaitGroup - workChan := make(chan *s3ObjectPayload) - - // Start the worker goroutines to listen on the work channel - for i := 0; i < p.numberOfWorkers; i++ { - workerWg.Add(1) - go func() { - defer workerWg.Done() - p.workerLoop(ctx, workChan) - }() - } - - // Start reading data and wait for its processing to be done - p.readerLoop(ctx, workChan) - workerWg.Wait() - - _ = timed.Wait(ctx, p.bucketPollInterval) - } +type nonAWSBucketResolver struct { + endpoint string +} - if errors.Is(ctx.Err(), context.Canceled) { - // A canceled context is a normal shutdown. - return nil - } - return ctx.Err() +func (n nonAWSBucketResolver) ResolveEndpoint(region string, options s3.EndpointResolverOptions) (awssdk.Endpoint, error) { + return awssdk.Endpoint{URL: n.endpoint, SigningRegion: region, HostnameImmutable: true, Source: awssdk.EndpointSourceCustom}, nil } diff --git a/x-pack/filebeat/input/awss3/s3_input.go b/x-pack/filebeat/input/awss3/s3_input.go new file mode 100644 index 00000000000..999b27da534 --- /dev/null +++ b/x-pack/filebeat/input/awss3/s3_input.go @@ -0,0 +1,246 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package awss3 + +import ( + "context" + "errors" + "fmt" + "sync" + + awssdk "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/ratelimit" + + "github.com/elastic/beats/v7/filebeat/beater" + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/beats/v7/libbeat/common/backoff" + awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/go-concert/timed" +) + +// var instead of const so it can be reduced during unit tests (instead of waiting +// through 10 minutes of retry backoff) +var readerLoopMaxCircuitBreaker = 10 + +type s3PollerInput struct { + log *logp.Logger + config config + awsConfig awssdk.Config + store beater.StateStore + provider string + s3 s3API + metrics *inputMetrics + client beat.Client + s3ObjectHandler s3ObjectHandlerFactory + states *states +} + +// s3FetchTask contains metadata for one S3 object that a worker should fetch. +type s3FetchTask struct { + s3ObjectHandler s3ObjectHandler + objectState state +} + +func newS3PollerInput( + config config, + awsConfig awssdk.Config, + store beater.StateStore, +) (v2.Input, error) { + + return &s3PollerInput{ + config: config, + awsConfig: awsConfig, + store: store, + }, nil +} + +func (in *s3PollerInput) Name() string { return inputName } + +func (in *s3PollerInput) Test(ctx v2.TestContext) error { + return nil +} + +func (in *s3PollerInput) Run( + inputContext v2.Context, + pipeline beat.Pipeline, +) error { + in.log = inputContext.Logger.Named("s3") + var err error + + // Load the persistent S3 polling state. + in.states, err = newStates(in.log, in.store) + if err != nil { + return fmt.Errorf("can not start persistent store: %w", err) + } + defer in.states.Close() + + // Create client for publishing events and receive notification of their ACKs. + in.client, err = createPipelineClient(pipeline) + if err != nil { + return fmt.Errorf("failed to create pipeline client: %w", err) + } + defer in.client.Close() + + ctx := v2.GoContextFromCanceler(inputContext.Cancelation) + in.s3, err = createS3API(ctx, in.config, in.awsConfig) + if err != nil { + return fmt.Errorf("failed to create S3 API: %w", err) + } + + in.metrics = newInputMetrics(inputContext.ID, nil, in.config.MaxNumberOfMessages) + defer in.metrics.Close() + + in.s3ObjectHandler = newS3ObjectProcessorFactory( + in.log, + in.metrics, + in.s3, + in.config.getFileSelectors(), + in.config.BackupConfig) + + in.run(ctx) + + return nil +} + +func (in *s3PollerInput) run(ctx context.Context) { + // Scan the bucket in a loop, delaying by the configured interval each + // iteration. + for ctx.Err() == nil { + in.runPoll(ctx) + _ = timed.Wait(ctx, in.config.BucketListInterval) + } +} + +func (in *s3PollerInput) runPoll(ctx context.Context) { + var workerWg sync.WaitGroup + workChan := make(chan *s3FetchTask) + + // Start the worker goroutines to listen on the work channel + for i := 0; i < in.config.NumberOfWorkers; i++ { + workerWg.Add(1) + go func() { + defer workerWg.Done() + in.workerLoop(ctx, workChan) + }() + } + + // Start reading data and wait for its processing to be done + in.readerLoop(ctx, workChan) + workerWg.Wait() +} + +func (in *s3PollerInput) workerLoop(ctx context.Context, workChan <-chan *s3FetchTask) { + rateLimitWaiter := backoff.NewEqualJitterBackoff(ctx.Done(), 1, 120) + + for s3ObjectPayload := range workChan { + objHandler := s3ObjectPayload.s3ObjectHandler + state := s3ObjectPayload.objectState + + // Process S3 object (download, parse, create events). + err := objHandler.ProcessS3Object() + if errors.Is(err, errS3DownloadFailed) { + // Download errors are ephemeral. Add a backoff delay, then skip to the + // next iteration so we don't mark the object as permanently failed. + rateLimitWaiter.Wait() + continue + } + // Reset the rate limit delay on results that aren't download errors. + rateLimitWaiter.Reset() + + // Wait for downloaded objects to be ACKed. + objHandler.Wait() + + if err != nil { + in.log.Errorf("failed processing S3 event for object key %q in bucket %q: %v", + state.Key, state.Bucket, err.Error()) + + // Non-retryable error. + state.Failed = true + } else { + state.Stored = true + } + + // Persist the result, report any errors + err = in.states.AddState(state) + if err != nil { + in.log.Errorf("saving completed object state: %v", err.Error()) + } + + // Metrics + in.metrics.s3ObjectsAckedTotal.Inc() + } +} + +func (in *s3PollerInput) readerLoop(ctx context.Context, workChan chan<- *s3FetchTask) { + defer close(workChan) + + bucketName := getBucketNameFromARN(in.config.getBucketARN()) + + errorBackoff := backoff.NewEqualJitterBackoff(ctx.Done(), 1, 120) + circuitBreaker := 0 + paginator := in.s3.ListObjectsPaginator(bucketName, in.config.BucketListPrefix) + for paginator.HasMorePages() { + page, err := paginator.NextPage(ctx) + + if err != nil { + in.log.Warnw("Error when paginating listing.", "error", err) + // QuotaExceededError is client-side rate limiting in the AWS sdk, + // don't include it in the circuit breaker count + if !errors.As(err, &ratelimit.QuotaExceededError{}) { + circuitBreaker++ + if circuitBreaker >= readerLoopMaxCircuitBreaker { + in.log.Warnw(fmt.Sprintf("%d consecutive error when paginating listing, breaking the circuit.", circuitBreaker), "error", err) + break + } + } + // add a backoff delay and try again + errorBackoff.Wait() + continue + } + // Reset the circuit breaker and the error backoff if a read is successful + circuitBreaker = 0 + errorBackoff.Reset() + + totListedObjects := len(page.Contents) + + // Metrics + in.metrics.s3ObjectsListedTotal.Add(uint64(totListedObjects)) + for _, object := range page.Contents { + state := newState(bucketName, *object.Key, *object.ETag, *object.LastModified) + if in.states.IsProcessed(state) { + in.log.Debugw("skipping state.", "state", state) + continue + } + + s3Processor := in.createS3ObjectProcessor(ctx, state) + if s3Processor == nil { + in.log.Debugw("empty s3 processor.", "state", state) + continue + } + + workChan <- &s3FetchTask{ + s3ObjectHandler: s3Processor, + objectState: state, + } + + in.metrics.s3ObjectsProcessedTotal.Inc() + } + } +} + +func (in *s3PollerInput) createS3ObjectProcessor(ctx context.Context, state state) s3ObjectHandler { + event := s3EventV2{} + event.AWSRegion = in.awsConfig.Region + event.Provider = in.provider + event.S3.Bucket.Name = state.Bucket + event.S3.Bucket.ARN = in.config.getBucketARN() + event.S3.Object.Key = state.Key + + acker := awscommon.NewEventACKTracker(ctx) + + return in.s3ObjectHandler.Create(ctx, in.log, in.client, acker, event) +} diff --git a/x-pack/filebeat/input/awss3/s3_objects.go b/x-pack/filebeat/input/awss3/s3_objects.go index 21dfa2243e7..05ee572343f 100644 --- a/x-pack/filebeat/input/awss3/s3_objects.go +++ b/x-pack/filebeat/input/awss3/s3_objects.go @@ -48,7 +48,7 @@ type s3ObjectProcessorFactory struct { // retry backoff until the connection is healthy again. var errS3DownloadFailed = errors.New("S3 download failure") -func newS3ObjectProcessorFactory(log *logp.Logger, metrics *inputMetrics, s3 s3API, sel []fileSelectorConfig, backupConfig backupConfig, maxWorkers int) *s3ObjectProcessorFactory { +func newS3ObjectProcessorFactory(log *logp.Logger, metrics *inputMetrics, s3 s3API, sel []fileSelectorConfig, backupConfig backupConfig) *s3ObjectProcessorFactory { if metrics == nil { // Metrics are optional. Initialize a stub. metrics = newInputMetrics("", nil, 0) diff --git a/x-pack/filebeat/input/awss3/s3_objects_test.go b/x-pack/filebeat/input/awss3/s3_objects_test.go index 28e8f4f42a5..d0b4021c7f8 100644 --- a/x-pack/filebeat/input/awss3/s3_objects_test.go +++ b/x-pack/filebeat/input/awss3/s3_objects_test.go @@ -154,7 +154,7 @@ func TestS3ObjectProcessor(t *testing.T) { GetObject(gomock.Any(), gomock.Eq(s3Event.S3.Bucket.Name), gomock.Eq(s3Event.S3.Object.Key)). Return(nil, errFakeConnectivityFailure) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupConfig{}, 1) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupConfig{}) ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).ProcessS3Object() require.Error(t, err) @@ -176,7 +176,7 @@ func TestS3ObjectProcessor(t *testing.T) { GetObject(gomock.Any(), gomock.Eq(s3Event.S3.Bucket.Name), gomock.Eq(s3Event.S3.Object.Key)). Return(nil, nil) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupConfig{}, 1) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupConfig{}) ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).ProcessS3Object() require.Error(t, err) @@ -203,7 +203,7 @@ func TestS3ObjectProcessor(t *testing.T) { Times(2), ) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupConfig{}, 1) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupConfig{}) ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).ProcessS3Object() require.NoError(t, err) @@ -229,7 +229,7 @@ func TestS3ObjectProcessor(t *testing.T) { Return(nil, nil), ) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupCfg, 1) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupCfg) ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).FinalizeS3Object() require.NoError(t, err) @@ -259,7 +259,7 @@ func TestS3ObjectProcessor(t *testing.T) { Return(nil, nil), ) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupCfg, 1) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupCfg) ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).FinalizeS3Object() require.NoError(t, err) @@ -286,7 +286,7 @@ func TestS3ObjectProcessor(t *testing.T) { Return(nil, nil), ) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupCfg, 1) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, nil, backupCfg) ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).FinalizeS3Object() require.NoError(t, err) @@ -332,7 +332,7 @@ func _testProcessS3Object(t testing.TB, file, contentType string, numEvents int, Times(numEvents), ) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, selectors, backupConfig{}, 1) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3API, selectors, backupConfig{}) ack := awscommon.NewEventACKTracker(ctx) err := s3ObjProc.Create(ctx, logp.NewLogger(inputName), mockPublisher, ack, s3Event).ProcessS3Object() diff --git a/x-pack/filebeat/input/awss3/s3_test.go b/x-pack/filebeat/input/awss3/s3_test.go index be1d65b796e..216d9866e73 100644 --- a/x-pack/filebeat/input/awss3/s3_test.go +++ b/x-pack/filebeat/input/awss3/s3_test.go @@ -15,8 +15,6 @@ import ( "github.com/golang/mock/gomock" "github.com/stretchr/testify/require" - "github.com/elastic/beats/v7/libbeat/statestore" - "github.com/elastic/beats/v7/libbeat/statestore/storetest" "github.com/elastic/elastic-agent-libs/logp" ) @@ -29,11 +27,7 @@ func TestS3Poller(t *testing.T) { const testTimeout = 1 * time.Second t.Run("Poll success", func(t *testing.T) { - storeReg := statestore.NewRegistry(storetest.NewMemoryStoreBackend()) - store, err := storeReg.Get("test") - if err != nil { - t.Fatalf("Failed to access store: %v", err) - } + store := openTestStatestore() ctx, cancel := context.WithTimeout(context.Background(), testTimeout) defer cancel() @@ -132,58 +126,69 @@ func TestS3Poller(t *testing.T) { GetObject(gomock.Any(), gomock.Eq(bucket), gomock.Eq("2024-02-08T08:35:00+00:02.json.gz")). Return(nil, errFakeConnectivityFailure) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockAPI, nil, backupConfig{}, numberOfWorkers) - states, err := newStates(inputCtx, store) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockAPI, nil, backupConfig{}) + states, err := newStates(nil, store) require.NoError(t, err, "states creation must succeed") - receiver := newS3Poller(logp.NewLogger(inputName), nil, mockAPI, mockPublisher, s3ObjProc, states, bucket, "key", "region", "provider", numberOfWorkers, pollInterval) - require.Error(t, context.DeadlineExceeded, receiver.Poll(ctx)) + poller := &s3PollerInput{ + log: logp.NewLogger(inputName), + config: config{ + NumberOfWorkers: numberOfWorkers, + BucketListInterval: pollInterval, + BucketARN: bucket, + BucketListPrefix: "key", + RegionName: "region", + }, + s3: mockAPI, + client: mockPublisher, + s3ObjectHandler: s3ObjProc, + states: states, + provider: "provider", + metrics: newInputMetrics("", nil, 0), + } + poller.runPoll(ctx) }) t.Run("restart bucket scan after paging errors", func(t *testing.T) { // Change the restart limit to 2 consecutive errors, so the test doesn't // take too long to run readerLoopMaxCircuitBreaker = 2 - storeReg := statestore.NewRegistry(storetest.NewMemoryStoreBackend()) - store, err := storeReg.Get("test") - if err != nil { - t.Fatalf("Failed to access store: %v", err) - } + store := openTestStatestore() ctx, cancel := context.WithTimeout(context.Background(), testTimeout+pollInterval) defer cancel() ctrl, ctx := gomock.WithContext(ctx, t) defer ctrl.Finish() - mockAPI := NewMockS3API(ctrl) - mockPagerFirst := NewMockS3Pager(ctrl) - mockPagerSecond := NewMockS3Pager(ctrl) + mockS3 := NewMockS3API(ctrl) + mockErrorPager := NewMockS3Pager(ctrl) + mockSuccessPager := NewMockS3Pager(ctrl) mockPublisher := NewMockBeatClient(ctrl) gomock.InOrder( // Initial ListObjectPaginator gets an error. - mockAPI.EXPECT(). + mockS3.EXPECT(). ListObjectsPaginator(gomock.Eq(bucket), gomock.Eq("key")). Times(1). DoAndReturn(func(_, _ string) s3Pager { - return mockPagerFirst + return mockErrorPager }), // After waiting for pollInterval, it retries. - mockAPI.EXPECT(). + mockS3.EXPECT(). ListObjectsPaginator(gomock.Eq(bucket), gomock.Eq("key")). Times(1). DoAndReturn(func(_, _ string) s3Pager { - return mockPagerSecond + return mockSuccessPager }), ) // Initial Next gets an error. - mockPagerFirst.EXPECT(). + mockErrorPager.EXPECT(). HasMorePages(). Times(2). DoAndReturn(func() bool { return true }) - mockPagerFirst.EXPECT(). + mockErrorPager.EXPECT(). NextPage(gomock.Any()). Times(2). DoAndReturn(func(_ context.Context, optFns ...func(*s3.Options)) (*s3.ListObjectsV2Output, error) { @@ -191,13 +196,13 @@ func TestS3Poller(t *testing.T) { }) // After waiting for pollInterval, it retries. - mockPagerSecond.EXPECT(). + mockSuccessPager.EXPECT(). HasMorePages(). Times(1). DoAndReturn(func() bool { return true }) - mockPagerSecond.EXPECT(). + mockSuccessPager.EXPECT(). NextPage(gomock.Any()). Times(1). DoAndReturn(func(_ context.Context, optFns ...func(*s3.Options)) (*s3.ListObjectsV2Output, error) { @@ -232,37 +237,60 @@ func TestS3Poller(t *testing.T) { }, nil }) - mockPagerSecond.EXPECT(). + mockSuccessPager.EXPECT(). HasMorePages(). Times(1). DoAndReturn(func() bool { return false }) - mockAPI.EXPECT(). + mockS3.EXPECT(). GetObject(gomock.Any(), gomock.Eq(bucket), gomock.Eq("key1")). Return(nil, errFakeConnectivityFailure) - mockAPI.EXPECT(). + mockS3.EXPECT(). GetObject(gomock.Any(), gomock.Eq(bucket), gomock.Eq("key2")). Return(nil, errFakeConnectivityFailure) - mockAPI.EXPECT(). + mockS3.EXPECT(). GetObject(gomock.Any(), gomock.Eq(bucket), gomock.Eq("key3")). Return(nil, errFakeConnectivityFailure) - mockAPI.EXPECT(). + mockS3.EXPECT(). GetObject(gomock.Any(), gomock.Eq(bucket), gomock.Eq("key4")). Return(nil, errFakeConnectivityFailure) - mockAPI.EXPECT(). + mockS3.EXPECT(). GetObject(gomock.Any(), gomock.Eq(bucket), gomock.Eq("key5")). Return(nil, errFakeConnectivityFailure) - s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockAPI, nil, backupConfig{}, numberOfWorkers) - states, err := newStates(inputCtx, store) + s3ObjProc := newS3ObjectProcessorFactory(logp.NewLogger(inputName), nil, mockS3, nil, backupConfig{}) + states, err := newStates(nil, store) require.NoError(t, err, "states creation must succeed") - receiver := newS3Poller(logp.NewLogger(inputName), nil, mockAPI, mockPublisher, s3ObjProc, states, bucket, "key", "region", "provider", numberOfWorkers, pollInterval) - require.Error(t, context.DeadlineExceeded, receiver.Poll(ctx)) + poller := &s3PollerInput{ + log: logp.NewLogger(inputName), + config: config{ + NumberOfWorkers: numberOfWorkers, + BucketListInterval: pollInterval, + BucketARN: bucket, + BucketListPrefix: "key", + RegionName: "region", + }, + s3: mockS3, + client: mockPublisher, + s3ObjectHandler: s3ObjProc, + states: states, + provider: "provider", + metrics: newInputMetrics("", nil, 0), + } + poller.run(ctx) }) } + +func TestS3ReaderLoop(t *testing.T) { + +} + +func TestS3WorkerLoop(t *testing.T) { + +} diff --git a/x-pack/filebeat/input/awss3/sqs.go b/x-pack/filebeat/input/awss3/sqs.go index dd454a3bfb9..36985f73720 100644 --- a/x-pack/filebeat/input/awss3/sqs.go +++ b/x-pack/filebeat/input/awss3/sqs.go @@ -7,111 +7,121 @@ package awss3 import ( "context" "errors" + "net/url" "strconv" - "sync" + "strings" "time" "github.com/aws/aws-sdk-go-v2/service/sqs/types" + "github.com/aws/smithy-go" - awscommon "github.com/elastic/beats/v7/x-pack/libbeat/common/aws" "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/go-concert/timed" ) +type messageCountMonitor struct { + sqs sqsAPI + metrics *inputMetrics +} + const ( + sqsAccessDeniedErrorCode = "AccessDeniedException" sqsRetryDelay = 10 * time.Second sqsApproximateNumberOfMessages = "ApproximateNumberOfMessages" ) -type sqsReader struct { - maxMessagesInflight int - workerSem *awscommon.Sem - sqs sqsAPI - msgHandler sqsProcessor - log *logp.Logger - metrics *inputMetrics -} +var errBadQueueURL = errors.New("QueueURL is not in format: https://sqs.{REGION_ENDPOINT}.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME} or https://{VPC_ENDPOINT}.sqs.{REGION_ENDPOINT}.vpce.{ENDPOINT}/{ACCOUNT_NUMBER}/{QUEUE_NAME}") -func newSQSReader(log *logp.Logger, metrics *inputMetrics, sqs sqsAPI, maxMessagesInflight int, msgHandler sqsProcessor) *sqsReader { - if metrics == nil { - // Metrics are optional. Initialize a stub. - metrics = newInputMetrics("", nil, 0) - } - return &sqsReader{ - maxMessagesInflight: maxMessagesInflight, - workerSem: awscommon.NewSem(maxMessagesInflight), - sqs: sqs, - msgHandler: msgHandler, - log: log, - metrics: metrics, +func getRegionFromQueueURL(queueURL, endpoint string) string { + // get region from queueURL + // Example for sqs queue: https://sqs.us-east-1.amazonaws.com/12345678912/test-s3-logs + // Example for vpce: https://vpce-test.sqs.us-east-1.vpce.amazonaws.com/12345678912/sqs-queue + u, err := url.Parse(queueURL) + if err != nil { + return "" } -} -func (r *sqsReader) Receive(ctx context.Context) error { - // This loop tries to keep the workers busy as much as possible while - // honoring the max message cap as opposed to a simpler loop that receives - // N messages, waits for them all to finish, then requests N more messages. - var workerWg sync.WaitGroup - for ctx.Err() == nil { - // Determine how many SQS workers are available. - workers, err := r.workerSem.AcquireContext(r.maxMessagesInflight, ctx) - if err != nil { - break + // check for sqs queue url + host := strings.SplitN(u.Host, ".", 3) + if len(host) == 3 && host[0] == "sqs" { + if host[2] == endpoint || (endpoint == "" && strings.HasPrefix(host[2], "amazonaws.")) { + return host[1] } + } - // Receive (at most) as many SQS messages as there are workers. - msgs, err := r.sqs.ReceiveMessage(ctx, workers) - if err != nil { - r.workerSem.Release(workers) + // check for vpce url + host = strings.SplitN(u.Host, ".", 5) + if len(host) == 5 && host[1] == "sqs" { + if host[4] == endpoint || (endpoint == "" && strings.HasPrefix(host[4], "amazonaws.")) { + return host[2] + } + } - if ctx.Err() == nil { - r.log.Warnw("SQS ReceiveMessage returned an error. Will retry after a short delay.", "error", err) + return "" +} - // Throttle retries. - _ = timed.Wait(ctx, sqsRetryDelay) - } - continue +// readSQSMessages reads up to the requested number of SQS messages via +// ReceiveMessage. It always returns at least one result unless the +// context expires +func readSQSMessages( + ctx context.Context, + log *logp.Logger, + sqs sqsAPI, + metrics *inputMetrics, + count int, +) []types.Message { + if count <= 0 { + return nil + } + msgs, err := sqs.ReceiveMessage(ctx, count) + for (err != nil || len(msgs) == 0) && ctx.Err() == nil { + if err != nil { + log.Warnw("SQS ReceiveMessage returned an error. Will retry after a short delay.", "error", err) } - - // Release unused workers. - r.workerSem.Release(workers - len(msgs)) - - // Process each SQS message asynchronously with a goroutine. - r.log.Debugf("Received %v SQS messages.", len(msgs)) - r.metrics.sqsMessagesReceivedTotal.Add(uint64(len(msgs))) - workerWg.Add(len(msgs)) - - for _, msg := range msgs { - go func(msg types.Message, start time.Time) { - id := r.metrics.beginSQSWorker() - defer func() { - r.metrics.endSQSWorker(id) - workerWg.Done() - r.workerSem.Release(1) - }() - - if err := r.msgHandler.ProcessSQS(ctx, &msg); err != nil { - r.log.Warnw("Failed processing SQS message.", - "error", err, - "message_id", *msg.MessageId, - "elapsed_time_ns", time.Since(start)) - } - }(msg, time.Now()) + // Wait for the retry delay, but stop early if the context is cancelled. + select { + case <-ctx.Done(): + return nil + case <-time.After(sqsRetryDelay): } + msgs, err = sqs.ReceiveMessage(ctx, count) } + log.Debugf("Received %v SQS messages.", len(msgs)) + metrics.sqsMessagesReceivedTotal.Add(uint64(len(msgs))) + return msgs +} - // Wait for all workers to finish. - workerWg.Wait() +func (mcm messageCountMonitor) run(ctx context.Context) { + t := time.NewTicker(time.Minute) + defer t.Stop() + for { + if err := mcm.updateMessageCount(ctx); isSQSAuthError(err) { + // stop polling if auth error is encountered + // Set it back to -1 because there is a permission error + mcm.metrics.sqsMessagesWaiting.Set(int64(-1)) + return + } + select { + case <-ctx.Done(): + return + case <-t.C: + } + } +} - if errors.Is(ctx.Err(), context.Canceled) { - // A canceled context is a normal shutdown. - return nil +// updateMessageCount runs GetApproximateMessageCount and updates the +// sqsMessagesWaiting metric with the result. +// If there is an error, the metric is reinitialized to -1 and true is returned +func (mcm messageCountMonitor) updateMessageCount(ctx context.Context) error { + count, err := mcm.getApproximateMessageCount(ctx) + if err == nil { + mcm.metrics.sqsMessagesWaiting.Set(int64(count)) } - return ctx.Err() + return err } -func (r *sqsReader) GetApproximateMessageCount(ctx context.Context) (int, error) { - attributes, err := r.sqs.GetQueueAttributes(ctx, []types.QueueAttributeName{sqsApproximateNumberOfMessages}) +// Query the approximate message count for the queue via the SQS API. +func (mcm messageCountMonitor) getApproximateMessageCount(ctx context.Context) (int, error) { + attributes, err := mcm.sqs.GetQueueAttributes(ctx, []types.QueueAttributeName{sqsApproximateNumberOfMessages}) if err == nil { if c, found := attributes[sqsApproximateNumberOfMessages]; found { if messagesCount, err := strconv.Atoi(c); err == nil { @@ -121,3 +131,11 @@ func (r *sqsReader) GetApproximateMessageCount(ctx context.Context) (int, error) } return -1, err } + +func isSQSAuthError(err error) bool { + var apiError smithy.APIError + if errors.As(err, &apiError) { + return apiError.ErrorCode() == sqsAccessDeniedErrorCode + } + return false +} diff --git a/x-pack/filebeat/input/awss3/sqs_input.go b/x-pack/filebeat/input/awss3/sqs_input.go new file mode 100644 index 00000000000..e524cf9fd1c --- /dev/null +++ b/x-pack/filebeat/input/awss3/sqs_input.go @@ -0,0 +1,259 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package awss3 + +import ( + "context" + "fmt" + "sync" + "time" + + awssdk "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/s3" + "github.com/aws/aws-sdk-go-v2/service/sqs" + "github.com/aws/aws-sdk-go-v2/service/sqs/types" + + v2 "github.com/elastic/beats/v7/filebeat/input/v2" + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/elastic-agent-libs/logp" +) + +type sqsReaderInput struct { + config config + awsConfig awssdk.Config + sqs sqsAPI + s3 s3API + msgHandler sqsProcessor + log *logp.Logger + metrics *inputMetrics + + // The expected region based on the queue URL + detectedRegion string + + // Workers send on workRequestChan to indicate they're ready for the next + // message, and the reader loop replies on workResponseChan. + workRequestChan chan struct{} + workResponseChan chan types.Message + + // workerWg is used to wait on worker goroutines during shutdown + workerWg sync.WaitGroup +} + +// Simple wrapper to handle creation of internal channels +func newSQSReaderInput(config config, awsConfig awssdk.Config) *sqsReaderInput { + return &sqsReaderInput{ + config: config, + awsConfig: awsConfig, + workRequestChan: make(chan struct{}, config.MaxNumberOfMessages), + workResponseChan: make(chan types.Message), + } +} + +func (in *sqsReaderInput) Name() string { return inputName } + +func (in *sqsReaderInput) Test(ctx v2.TestContext) error { + return nil +} + +func (in *sqsReaderInput) Run( + inputContext v2.Context, + pipeline beat.Pipeline, +) error { + // Initialize everything for this run + err := in.setup(inputContext, pipeline) + if err != nil { + return err + } + + // Start the main run loop + ctx := v2.GoContextFromCanceler(inputContext.Cancelation) + in.run(ctx) + in.cleanup() + + return nil +} + +// Apply internal initialization based on the parameters of Run, in +// preparation for calling run. setup and run are separate functions so +// tests can apply mocks and overrides before the run loop. +func (in *sqsReaderInput) setup( + inputContext v2.Context, + pipeline beat.Pipeline, +) error { + in.log = inputContext.Logger.With("queue_url", in.config.QueueURL) + + in.detectedRegion = getRegionFromQueueURL(in.config.QueueURL, in.config.AWSConfig.Endpoint) + if in.config.RegionName != "" { + in.awsConfig.Region = in.config.RegionName + } else if in.detectedRegion != "" { + in.awsConfig.Region = in.detectedRegion + } else { + // If we can't get a region from the config or the URL, return an error. + return fmt.Errorf("failed to get AWS region from queue_url: %w", errBadQueueURL) + } + + in.sqs = &awsSQSAPI{ + client: sqs.NewFromConfig(in.awsConfig, in.config.sqsConfigModifier), + + queueURL: in.config.QueueURL, + apiTimeout: in.config.APITimeout, + visibilityTimeout: in.config.VisibilityTimeout, + longPollWaitTime: in.config.SQSWaitTime, + } + + in.s3 = &awsS3API{ + client: s3.NewFromConfig(in.awsConfig, in.config.s3ConfigModifier), + } + + in.metrics = newInputMetrics(inputContext.ID, nil, in.config.MaxNumberOfMessages) + + var err error + in.msgHandler, err = in.createEventProcessor(pipeline) + if err != nil { + return fmt.Errorf("failed to initialize sqs reader: %w", err) + } + return nil +} + +// Release internal resources created during setup (currently just metrics). +// This is its own function so tests can handle the run loop in isolation. +func (in *sqsReaderInput) cleanup() { + if in.metrics != nil { + in.metrics.Close() + } +} + +// Create the main goroutines for the input (workers, message count monitor) +// and begin the run loop. +func (in *sqsReaderInput) run(ctx context.Context) { + in.logConfigSummary() + + // Poll metrics periodically in the background + go messageCountMonitor{ + sqs: in.sqs, + metrics: in.metrics, + }.run(ctx) + + in.startWorkers(ctx) + in.readerLoop(ctx) + + in.workerWg.Wait() +} + +func (in *sqsReaderInput) readerLoop(ctx context.Context) { + // requestCount is the number of outstanding work requests that the + // reader will try to fulfill + requestCount := 0 + for ctx.Err() == nil { + // Block to wait for more requests if requestCount is zero + requestCount += channelRequestCount(ctx, in.workRequestChan, requestCount == 0) + + msgs := readSQSMessages(ctx, in.log, in.sqs, in.metrics, requestCount) + + for _, msg := range msgs { + select { + case <-ctx.Done(): + return + case in.workResponseChan <- msg: + requestCount-- + } + } + } +} + +func (in *sqsReaderInput) workerLoop(ctx context.Context) { + for ctx.Err() == nil { + // Send a work request + select { + case <-ctx.Done(): + // Shutting down + return + case in.workRequestChan <- struct{}{}: + } + // The request is sent, wait for a response + select { + case <-ctx.Done(): + return + case msg := <-in.workResponseChan: + start := time.Now() + + id := in.metrics.beginSQSWorker() + if err := in.msgHandler.ProcessSQS(ctx, &msg); err != nil { + in.log.Warnw("Failed processing SQS message.", + "error", err, + "message_id", *msg.MessageId, + "elapsed_time_ns", time.Since(start)) + } + in.metrics.endSQSWorker(id) + } + } +} + +func (in *sqsReaderInput) startWorkers(ctx context.Context) { + // Start the worker goroutines that will fetch messages via workRequestChan + // and workResponseChan until the input shuts down. + for i := 0; i < in.config.MaxNumberOfMessages; i++ { + in.workerWg.Add(1) + go func() { + defer in.workerWg.Done() + in.workerLoop(ctx) + }() + } +} + +func (in *sqsReaderInput) logConfigSummary() { + log := in.log + log.Infof("AWS api_timeout is set to %v.", in.config.APITimeout) + log.Infof("AWS region is set to %v.", in.awsConfig.Region) + if in.awsConfig.Region != in.detectedRegion { + log.Warnf("configured region disagrees with queue_url region (%q != %q): using %q", in.awsConfig.Region, in.detectedRegion, in.awsConfig.Region) + } + log.Infof("AWS SQS visibility_timeout is set to %v.", in.config.VisibilityTimeout) + log.Infof("AWS SQS max_number_of_messages is set to %v.", in.config.MaxNumberOfMessages) + + if in.config.BackupConfig.GetBucketName() != "" { + log.Warnf("You have the backup_to_bucket functionality activated with SQS. Please make sure to set appropriate destination buckets " + + "or prefixes to avoid an infinite loop.") + } +} + +func (in *sqsReaderInput) createEventProcessor(pipeline beat.Pipeline) (sqsProcessor, error) { + fileSelectors := in.config.getFileSelectors() + s3EventHandlerFactory := newS3ObjectProcessorFactory(in.log.Named("s3"), in.metrics, in.s3, fileSelectors, in.config.BackupConfig) + + script, err := newScriptFromConfig(in.log.Named("sqs_script"), in.config.SQSScript) + if err != nil { + return nil, err + } + return newSQSS3EventProcessor(in.log.Named("sqs_s3_event"), in.metrics, in.sqs, script, in.config.VisibilityTimeout, in.config.SQSMaxReceiveCount, pipeline, s3EventHandlerFactory), nil +} + +// Read all pending requests and return their count. If block is true, +// waits until the result is at least 1, unless the context expires. +func channelRequestCount( + ctx context.Context, + requestChan chan struct{}, + block bool, +) int { + requestCount := 0 + if block { + // Wait until at least one request comes in. + select { + case <-ctx.Done(): + return 0 + case <-requestChan: + requestCount++ + } + } + // Read as many requests as we can without blocking. + for { + select { + case <-requestChan: + requestCount++ + default: + return requestCount + } + } +} diff --git a/x-pack/filebeat/input/awss3/sqs_s3_event.go b/x-pack/filebeat/input/awss3/sqs_s3_event.go index 7f95cf564c0..db893e443ac 100644 --- a/x-pack/filebeat/input/awss3/sqs_s3_event.go +++ b/x-pack/filebeat/input/awss3/sqs_s3_event.go @@ -104,7 +104,6 @@ func newSQSS3EventProcessor( maxReceiveCount int, pipeline beat.Pipeline, s3 s3ObjectHandlerFactory, - maxWorkers int, ) *sqsS3EventProcessor { if metrics == nil { // Metrics are optional. Initialize a stub. diff --git a/x-pack/filebeat/input/awss3/sqs_s3_event_test.go b/x-pack/filebeat/input/awss3/sqs_s3_event_test.go index 5ecd72fc4c9..65552525136 100644 --- a/x-pack/filebeat/input/awss3/sqs_s3_event_test.go +++ b/x-pack/filebeat/input/awss3/sqs_s3_event_test.go @@ -50,7 +50,7 @@ func TestSQSS3EventProcessor(t *testing.T) { mockAPI.EXPECT().DeleteMessage(gomock.Any(), gomock.Eq(&msg)).Return(nil), ) - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory) require.NoError(t, p.ProcessSQS(ctx, &msg)) }) @@ -73,7 +73,7 @@ func TestSQSS3EventProcessor(t *testing.T) { mockAPI.EXPECT().DeleteMessage(gomock.Any(), gomock.Eq(&invalidBodyMsg)).Return(nil), ) - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory) err := p.ProcessSQS(ctx, &invalidBodyMsg) require.Error(t, err) t.Log(err) @@ -95,7 +95,7 @@ func TestSQSS3EventProcessor(t *testing.T) { mockAPI.EXPECT().DeleteMessage(gomock.Any(), gomock.Eq(&emptyRecordsMsg)).Return(nil), ) - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory) require.NoError(t, p.ProcessSQS(ctx, &emptyRecordsMsg)) }) @@ -127,7 +127,7 @@ func TestSQSS3EventProcessor(t *testing.T) { mockS3Handler.EXPECT().FinalizeS3Object().Return(nil), ) - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, visibilityTimeout, 5, mockBeatPipeline, mockS3HandlerFactory, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, visibilityTimeout, 5, mockBeatPipeline, mockS3HandlerFactory) require.NoError(t, p.ProcessSQS(ctx, &msg)) }) @@ -150,7 +150,7 @@ func TestSQSS3EventProcessor(t *testing.T) { mockClient.EXPECT().Close(), ) - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory) err := p.ProcessSQS(ctx, &msg) t.Log(err) require.Error(t, err) @@ -181,7 +181,7 @@ func TestSQSS3EventProcessor(t *testing.T) { mockAPI.EXPECT().DeleteMessage(gomock.Any(), gomock.Eq(&msg)).Return(nil), ) - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, time.Minute, 5, mockBeatPipeline, mockS3HandlerFactory) err := p.ProcessSQS(ctx, &msg) t.Log(err) require.Error(t, err) @@ -227,7 +227,7 @@ func TestSqsProcessor_keepalive(t *testing.T) { mockAPI.EXPECT().ChangeMessageVisibility(gomock.Any(), gomock.Eq(&msg), gomock.Eq(visibilityTimeout)). Times(1).Return(tc.Err) - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, visibilityTimeout, 5, mockBeatPipeline, mockS3HandlerFactory, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, mockAPI, nil, visibilityTimeout, 5, mockBeatPipeline, mockS3HandlerFactory) var wg sync.WaitGroup wg.Add(1) p.keepalive(ctx, p.log, &wg, &msg) @@ -239,7 +239,7 @@ func TestSqsProcessor_keepalive(t *testing.T) { func TestSqsProcessor_getS3Notifications(t *testing.T) { logp.TestingSetup() - p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, nil, nil, time.Minute, 5, nil, nil, 5) + p := newSQSS3EventProcessor(logp.NewLogger(inputName), nil, nil, nil, time.Minute, 5, nil, nil) t.Run("s3 key is url unescaped", func(t *testing.T) { msg := newSQSMessage(newS3Event("Happy+Face.jpg")) diff --git a/x-pack/filebeat/input/awss3/sqs_test.go b/x-pack/filebeat/input/awss3/sqs_test.go index 5eda5d1885e..cf82f03c6de 100644 --- a/x-pack/filebeat/input/awss3/sqs_test.go +++ b/x-pack/filebeat/input/awss3/sqs_test.go @@ -12,11 +12,11 @@ import ( "testing" "time" + "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/sqs/types" "github.com/gofrs/uuid" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" "github.com/elastic/elastic-agent-libs/logp" ) @@ -39,31 +39,35 @@ func TestSQSReceiver(t *testing.T) { ctrl, ctx := gomock.WithContext(ctx, t) defer ctrl.Finish() - mockAPI := NewMockSQSAPI(ctrl) + mockSQS := NewMockSQSAPI(ctrl) mockMsgHandler := NewMockSQSProcessor(ctrl) msg := newSQSMessage(newS3Event("log.json")) - gomock.InOrder( - // Initial ReceiveMessage for maxMessages. - mockAPI.EXPECT(). - ReceiveMessage(gomock.Any(), gomock.Eq(maxMessages)). - Times(1). - DoAndReturn(func(_ context.Context, _ int) ([]types.Message, error) { - // Return single message. - return []types.Message{msg}, nil - }), - - // Follow up ReceiveMessages for either maxMessages-1 or maxMessages - // depending on how long processing of previous message takes. - mockAPI.EXPECT(). - ReceiveMessage(gomock.Any(), gomock.Any()). - Times(1). - DoAndReturn(func(_ context.Context, _ int) ([]types.Message, error) { - // Stop the test. - cancel() - return nil, nil - }), - ) + // Initial ReceiveMessage for maxMessages. + mockSQS.EXPECT(). + ReceiveMessage(gomock.Any(), gomock.Any()). + Times(1). + DoAndReturn(func(_ context.Context, _ int) ([]types.Message, error) { + // Return single message. + return []types.Message{msg}, nil + }) + + // Follow up ReceiveMessages for either maxMessages-1 or maxMessages + // depending on how long processing of previous message takes. + mockSQS.EXPECT(). + ReceiveMessage(gomock.Any(), gomock.Any()). + Times(1). + DoAndReturn(func(_ context.Context, _ int) ([]types.Message, error) { + // Stop the test. + cancel() + return nil, nil + }) + + mockSQS.EXPECT(). + GetQueueAttributes(gomock.Any(), gomock.Eq([]types.QueueAttributeName{sqsApproximateNumberOfMessages})). + DoAndReturn(func(_ context.Context, _ []types.QueueAttributeName) (map[string]string, error) { + return map[string]string{sqsApproximateNumberOfMessages: "10000"}, nil + }).AnyTimes() // Expect the one message returned to have been processed. mockMsgHandler.EXPECT(). @@ -72,9 +76,12 @@ func TestSQSReceiver(t *testing.T) { Return(nil) // Execute sqsReader and verify calls/state. - receiver := newSQSReader(logp.NewLogger(inputName), nil, mockAPI, maxMessages, mockMsgHandler) - require.NoError(t, receiver.Receive(ctx)) - assert.Equal(t, maxMessages, receiver.workerSem.Available()) + sqsReader := newSQSReaderInput(config{MaxNumberOfMessages: maxMessages}, aws.Config{}) + sqsReader.log = logp.NewLogger(inputName) + sqsReader.sqs = mockSQS + sqsReader.msgHandler = mockMsgHandler + sqsReader.metrics = newInputMetrics("", nil, 0) + sqsReader.run(ctx) }) t.Run("retry after ReceiveMessage error", func(t *testing.T) { @@ -83,50 +90,56 @@ func TestSQSReceiver(t *testing.T) { ctrl, ctx := gomock.WithContext(ctx, t) defer ctrl.Finish() - mockAPI := NewMockSQSAPI(ctrl) + mockSQS := NewMockSQSAPI(ctrl) mockMsgHandler := NewMockSQSProcessor(ctrl) gomock.InOrder( // Initial ReceiveMessage gets an error. - mockAPI.EXPECT(). - ReceiveMessage(gomock.Any(), gomock.Eq(maxMessages)). + mockSQS.EXPECT(). + ReceiveMessage(gomock.Any(), gomock.Any()). Times(1). DoAndReturn(func(_ context.Context, _ int) ([]types.Message, error) { return nil, errFakeConnectivityFailure }), // After waiting for sqsRetryDelay, it retries. - mockAPI.EXPECT(). - ReceiveMessage(gomock.Any(), gomock.Eq(maxMessages)). + mockSQS.EXPECT(). + ReceiveMessage(gomock.Any(), gomock.Any()). Times(1). DoAndReturn(func(_ context.Context, _ int) ([]types.Message, error) { cancel() return nil, nil }), ) - - // Execute SQSReceiver and verify calls/state. - receiver := newSQSReader(logp.NewLogger(inputName), nil, mockAPI, maxMessages, mockMsgHandler) - require.NoError(t, receiver.Receive(ctx)) - assert.Equal(t, maxMessages, receiver.workerSem.Available()) + mockSQS.EXPECT(). + GetQueueAttributes(gomock.Any(), gomock.Eq([]types.QueueAttributeName{sqsApproximateNumberOfMessages})). + DoAndReturn(func(_ context.Context, _ []types.QueueAttributeName) (map[string]string, error) { + return map[string]string{sqsApproximateNumberOfMessages: "10000"}, nil + }).AnyTimes() + + // Execute SQSReader and verify calls/state. + sqsReader := newSQSReaderInput(config{MaxNumberOfMessages: maxMessages}, aws.Config{}) + sqsReader.log = logp.NewLogger(inputName) + sqsReader.sqs = mockSQS + sqsReader.msgHandler = mockMsgHandler + sqsReader.metrics = newInputMetrics("", nil, 0) + sqsReader.run(ctx) }) } func TestGetApproximateMessageCount(t *testing.T) { logp.TestingSetup() - const maxMessages = 5 const count = 500 attrName := []types.QueueAttributeName{sqsApproximateNumberOfMessages} attr := map[string]string{"ApproximateNumberOfMessages": "500"} - t.Run("GetApproximateMessageCount success", func(t *testing.T) { + t.Run("getApproximateMessageCount success", func(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), testTimeout) defer cancel() ctrl, ctx := gomock.WithContext(ctx, t) defer ctrl.Finish() mockAPI := NewMockSQSAPI(ctrl) - mockMsgHandler := NewMockSQSProcessor(ctrl) gomock.InOrder( mockAPI.EXPECT(). @@ -137,10 +150,10 @@ func TestGetApproximateMessageCount(t *testing.T) { }), ) - receiver := newSQSReader(logp.NewLogger(inputName), nil, mockAPI, maxMessages, mockMsgHandler) - receivedCount, err := receiver.GetApproximateMessageCount(ctx) + receivedCount, err := + messageCountMonitor{sqs: mockAPI}.getApproximateMessageCount(ctx) assert.Equal(t, count, receivedCount) - assert.Nil(t, err) + assert.NoError(t, err) }) t.Run("GetApproximateMessageCount error", func(t *testing.T) { @@ -151,7 +164,6 @@ func TestGetApproximateMessageCount(t *testing.T) { defer ctrl.Finish() mockAPI := NewMockSQSAPI(ctrl) - mockMsgHandler := NewMockSQSProcessor(ctrl) gomock.InOrder( mockAPI.EXPECT(). @@ -162,8 +174,7 @@ func TestGetApproximateMessageCount(t *testing.T) { }), ) - receiver := newSQSReader(logp.NewLogger(inputName), nil, mockAPI, maxMessages, mockMsgHandler) - receivedCount, err := receiver.GetApproximateMessageCount(ctx) + receivedCount, err := messageCountMonitor{sqs: mockAPI}.getApproximateMessageCount(ctx) assert.Equal(t, -1, receivedCount) assert.NotNil(t, err) }) @@ -222,3 +233,11 @@ func newS3Event(key string) s3EventV2 { record.S3.Object.Key = key return record } + +func TestSQSReaderLoop(t *testing.T) { + +} + +func TestSQSWorkerLoop(t *testing.T) { + +} diff --git a/x-pack/filebeat/input/awss3/states.go b/x-pack/filebeat/input/awss3/states.go index edbbcc73793..cb40abbd41f 100644 --- a/x-pack/filebeat/input/awss3/states.go +++ b/x-pack/filebeat/input/awss3/states.go @@ -5,14 +5,13 @@ package awss3 import ( + "fmt" "strings" "sync" - v2 "github.com/elastic/beats/v7/filebeat/input/v2" - - "github.com/elastic/elastic-agent-libs/logp" - + "github.com/elastic/beats/v7/filebeat/beater" "github.com/elastic/beats/v7/libbeat/statestore" + "github.com/elastic/elastic-agent-libs/logp" ) const awsS3ObjectStatePrefix = "filebeat::aws-s3::state::" @@ -20,8 +19,6 @@ const awsS3ObjectStatePrefix = "filebeat::aws-s3::state::" // states handles list of s3 object state. One must use newStates to instantiate a // file states registry. Using the zero-value is not safe. type states struct { - log *logp.Logger - // Completed S3 object states, indexed by state ID. // statesLock must be held to access states. states map[string]state @@ -34,13 +31,21 @@ type states struct { } // newStates generates a new states registry. -func newStates(ctx v2.Context, store *statestore.Store) (*states, error) { - states := &states{ - log: ctx.Logger.Named("states"), - states: map[string]state{}, - store: store, +func newStates(log *logp.Logger, stateStore beater.StateStore) (*states, error) { + store, err := stateStore.Access() + if err != nil { + return nil, fmt.Errorf("can't access persistent store: %w", err) } - return states, states.loadFromRegistry() + + stateTable, err := loadS3StatesFromRegistry(log, store) + if err != nil { + return nil, fmt.Errorf("loading S3 input state: %w", err) + } + + return &states{ + store: store, + states: stateTable, + }, nil } func (s *states) IsProcessed(state state) bool { @@ -51,8 +56,7 @@ func (s *states) IsProcessed(state state) bool { return ok } -func (s *states) AddState(state state) { - +func (s *states) AddState(state state) error { id := state.ID() // Update in-memory copy s.statesLock.Lock() @@ -61,18 +65,23 @@ func (s *states) AddState(state state) { // Persist to the registry s.storeLock.Lock() + defer s.storeLock.Unlock() key := awsS3ObjectStatePrefix + id if err := s.store.Set(key, state); err != nil { - s.log.Errorw("Failed to write states to the registry", "error", err) + return err } - s.storeLock.Unlock() + return nil } -func (s *states) loadFromRegistry() error { - states := map[string]state{} - +func (s *states) Close() { s.storeLock.Lock() - err := s.store.Each(func(key string, dec statestore.ValueDecoder) (bool, error) { + s.store.Close() + s.storeLock.Unlock() +} + +func loadS3StatesFromRegistry(log *logp.Logger, store *statestore.Store) (map[string]state, error) { + stateTable := map[string]state{} + err := store.Each(func(key string, dec statestore.ValueDecoder) (bool, error) { if !strings.HasPrefix(key, awsS3ObjectStatePrefix) { return true, nil } @@ -81,8 +90,9 @@ func (s *states) loadFromRegistry() error { var st state if err := dec.Decode(&st); err != nil { // Skip this key but continue iteration - s.log.Warnf("invalid S3 state loading object key %v", key) - //nolint:nilerr // One bad object shouldn't stop iteration + if log != nil { + log.Warnf("invalid S3 state loading object key %v", key) + } return true, nil } if !st.Stored && !st.Failed { @@ -93,17 +103,11 @@ func (s *states) loadFromRegistry() error { return true, nil } - states[st.ID()] = st + stateTable[st.ID()] = st return true, nil }) - s.storeLock.Unlock() if err != nil { - return err + return nil, err } - - s.statesLock.Lock() - s.states = states - s.statesLock.Unlock() - - return nil + return stateTable, nil } diff --git a/x-pack/filebeat/input/awss3/states_test.go b/x-pack/filebeat/input/awss3/states_test.go index 2f8bbf58fdf..dc345d5f88e 100644 --- a/x-pack/filebeat/input/awss3/states_test.go +++ b/x-pack/filebeat/input/awss3/states_test.go @@ -5,7 +5,6 @@ package awss3 import ( - "context" "testing" "time" @@ -15,9 +14,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - - v2 "github.com/elastic/beats/v7/filebeat/input/v2" - "github.com/elastic/elastic-agent-libs/logp" ) type testInputStore struct { @@ -42,11 +38,6 @@ func (s *testInputStore) CleanupInterval() time.Duration { return 24 * time.Hour } -var inputCtx = v2.Context{ - Logger: logp.NewLogger("test"), - Cancelation: context.Background(), -} - func TestStatesAddStateAndIsProcessed(t *testing.T) { type stateTestCase struct { // An initialization callback to invoke on the (initially empty) states. @@ -117,17 +108,13 @@ func TestStatesAddStateAndIsProcessed(t *testing.T) { test := test t.Run(name, func(t *testing.T) { store := openTestStatestore() - persistentStore, err := store.Access() - if err != nil { - t.Fatalf("unexpected err: %v", err) - } - states, err := newStates(inputCtx, persistentStore) + states, err := newStates(nil, store) require.NoError(t, err, "states creation must succeed") if test.statesEdit != nil { test.statesEdit(states) } if test.shouldReload { - states, err = newStates(inputCtx, persistentStore) + states, err = newStates(nil, store) require.NoError(t, err, "states creation must succeed") } diff --git a/x-pack/libbeat/common/aws/credentials.go b/x-pack/libbeat/common/aws/credentials.go index f6efde3e2b2..981547cb1dc 100644 --- a/x-pack/libbeat/common/aws/credentials.go +++ b/x-pack/libbeat/common/aws/credentials.go @@ -56,7 +56,7 @@ type ConfigAWS struct { // InitializeAWSConfig function creates the awssdk.Config object from the provided config func InitializeAWSConfig(beatsConfig ConfigAWS) (awssdk.Config, error) { - awsConfig, _ := GetAWSCredentials(beatsConfig) + awsConfig, _ := getAWSCredentials(beatsConfig) if awsConfig.Region == "" { if beatsConfig.DefaultRegion != "" { awsConfig.Region = beatsConfig.DefaultRegion @@ -92,12 +92,12 @@ func InitializeAWSConfig(beatsConfig ConfigAWS) (awssdk.Config, error) { return awsConfig, nil } -// GetAWSCredentials function gets aws credentials from the config. +// getAWSCredentials function gets aws credentials from the config. // If access keys given, use them as credentials. // If access keys are not given, then load from AWS config file. If credential_profile_name is not // given, default profile will be used. // If role_arn is given, assume the IAM role either with access keys or default profile. -func GetAWSCredentials(beatsConfig ConfigAWS) (awssdk.Config, error) { +func getAWSCredentials(beatsConfig ConfigAWS) (awssdk.Config, error) { // Check if accessKeyID or secretAccessKey or sessionToken is given from configuration if beatsConfig.AccessKeyID != "" || beatsConfig.SecretAccessKey != "" || beatsConfig.SessionToken != "" { return getConfigForKeys(beatsConfig), nil @@ -110,17 +110,10 @@ func GetAWSCredentials(beatsConfig ConfigAWS) (awssdk.Config, error) { // Provided config must contain an accessKeyID, secretAccessKey and sessionToken to generate a valid CredentialsProfile func getConfigForKeys(beatsConfig ConfigAWS) awssdk.Config { config := awssdk.NewConfig() - awsCredentials := awssdk.Credentials{ - AccessKeyID: beatsConfig.AccessKeyID, - SecretAccessKey: beatsConfig.SecretAccessKey, - } - - if beatsConfig.SessionToken != "" { - awsCredentials.SessionToken = beatsConfig.SessionToken - } - - addStaticCredentialsProviderToAwsConfig(beatsConfig, config) - + config.Credentials = credentials.NewStaticCredentialsProvider( + beatsConfig.AccessKeyID, + beatsConfig.SecretAccessKey, + beatsConfig.SessionToken) return *config } @@ -172,15 +165,3 @@ func addAssumeRoleProviderToAwsConfig(config ConfigAWS, awsConfig *awssdk.Config } }) } - -// addStaticCredentialsProviderToAwsConfig adds a static credentials provider to the current AWS config by using the keys stored in Beats config -func addStaticCredentialsProviderToAwsConfig(beatsConfig ConfigAWS, awsConfig *awssdk.Config) { - logger := logp.NewLogger("addStaticCredentialsProviderToAwsConfig") - logger.Debug("Switching credentials provider to StaticCredentialsProvider") - staticCredentialsProvider := credentials.NewStaticCredentialsProvider( - beatsConfig.AccessKeyID, - beatsConfig.SecretAccessKey, - beatsConfig.SessionToken) - - awsConfig.Credentials = staticCredentialsProvider -} diff --git a/x-pack/libbeat/common/aws/credentials_test.go b/x-pack/libbeat/common/aws/credentials_test.go index 43bbc642bc5..9f125c6301f 100644 --- a/x-pack/libbeat/common/aws/credentials_test.go +++ b/x-pack/libbeat/common/aws/credentials_test.go @@ -41,7 +41,7 @@ func TestGetAWSCredentials(t *testing.T) { SecretAccessKey: "abc", SessionToken: "fake-session-token", } - awsConfig, err := GetAWSCredentials(inputConfig) + awsConfig, err := getAWSCredentials(inputConfig) assert.NoError(t, err) retrievedAWSConfig, err := awsConfig.Credentials.Retrieve(context.Background()) diff --git a/x-pack/libbeat/common/aws/semaphore.go b/x-pack/libbeat/common/aws/semaphore.go deleted file mode 100644 index 28343bcbd32..00000000000 --- a/x-pack/libbeat/common/aws/semaphore.go +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -package aws - -import ( - "context" - "sync" -) - -type Sem struct { - mutex *sync.Mutex - cond sync.Cond - available int -} - -func NewSem(n int) *Sem { - var m sync.Mutex - return &Sem{ - available: n, - mutex: &m, - cond: sync.Cond{ - L: &m, - }, - } -} - -func (s *Sem) AcquireContext(n int, ctx context.Context) (int, error) { - acquireC := make(chan int, 1) - go func() { - defer close(acquireC) - acquireC <- s.Acquire(n) - }() - - select { - case <-ctx.Done(): - return 0, ctx.Err() - case n := <-acquireC: - return n, nil - } -} - -func (s *Sem) Acquire(n int) int { - if n <= 0 { - return 0 - } - - s.mutex.Lock() - defer s.mutex.Unlock() - - if s.available == 0 { - s.cond.Wait() - } - - if n >= s.available { - rtn := s.available - s.available = 0 - return rtn - } - - s.available -= n - return n -} - -func (s *Sem) Release(n int) { - if n <= 0 { - return - } - - s.mutex.Lock() - defer s.mutex.Unlock() - - s.available += n - s.cond.Signal() -} - -func (s *Sem) Available() int { - s.mutex.Lock() - defer s.mutex.Unlock() - - return s.available -} diff --git a/x-pack/libbeat/common/aws/semaphore_test.go b/x-pack/libbeat/common/aws/semaphore_test.go deleted file mode 100644 index f91831ef8a0..00000000000 --- a/x-pack/libbeat/common/aws/semaphore_test.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -package aws - -import ( - "sync" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestSemaphore(t *testing.T) { - s := NewSem(5) - - assert.Equal(t, s.Acquire(5), 5) - - var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() - // Asks for 2, and blocks because 0 are available. - // It unblocks and returns 1 when Release(1) is called. - assert.Equal(t, s.Acquire(2), 1) - }() - - // None are available until Release(). - assert.Equal(t, s.Available(), 0) - - s.Release(1) - wg.Wait() -} From 239deefcd708128a83a87f8762927972adf901b9 Mon Sep 17 00:00:00 2001 From: Michael Wolf Date: Thu, 9 May 2024 15:44:55 -0700 Subject: [PATCH 297/313] Remove fields not needed for session view in add_session_view processor (#39500) In order to reduce event data size, remove all fields from the add_session_metadata processor that are not required for the Kibana session viewer to function. The unnecessary fields that are removed here are thread and tty fields. --- CHANGELOG.next.asciidoc | 1 + .../processors/sessionmd/types/process.go | 18 ------------------ 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 4538758b813..a92b42f697d 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -204,6 +204,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Add container id to file events (Linux only, eBPF backend). {pull}38328[38328] - Add procfs backend to the `add_session_metadata` processor. {pull}38799[38799] - Add process.entity_id, process.group.name and process.group.id in add_process_metadata processor. Make fim module with kprobes backend to always add an appropriately configured add_process_metadata processor to enrich file events {pull}38776[38776] +- Reduce data size for add_session_metadata processor by removing unneeded fields {pull}39500[39500] *Auditbeat* diff --git a/x-pack/auditbeat/processors/sessionmd/types/process.go b/x-pack/auditbeat/processors/sessionmd/types/process.go index daf989ef3cd..8f52a9c5aa5 100644 --- a/x-pack/auditbeat/processors/sessionmd/types/process.go +++ b/x-pack/auditbeat/processors/sessionmd/types/process.go @@ -356,18 +356,6 @@ func (p *Process) ToMap() mapstr.M { "pid": p.PID, "vpid": p.Vpid, "args": p.Args, - "thread": mapstr.M{ - "capabilities": mapstr.M{ - "permitted": p.Thread.Capabilities.Permitted, - "effective": p.Thread.Capabilities.Effective, - }, - }, - "tty": mapstr.M{ - "char_device": mapstr.M{ - "major": p.TTY.CharDevice.Major, - "minor": p.TTY.CharDevice.Minor, - }, - }, "parent": mapstr.M{ "entity_id": p.Parent.EntityID, "executable": p.Parent.Executable, @@ -384,12 +372,6 @@ func (p *Process) ToMap() mapstr.M { }, "pid": p.Parent.PID, "args": p.Parent.Args, - "thread": mapstr.M{ - "capabilities": mapstr.M{ - "permitted": p.Parent.Thread.Capabilities.Permitted, - "effective": p.Parent.Thread.Capabilities.Effective, - }, - }, }, "group_leader": mapstr.M{ "entity_id": p.GroupLeader.EntityID, From 760208bdce3fa67d4a3cf59498e35c7beb12fc57 Mon Sep 17 00:00:00 2001 From: Alex K <8418476+fearful-symmetry@users.noreply.github.com> Date: Thu, 9 May 2024 23:33:23 -0700 Subject: [PATCH 298/313] Add error check to groupToEvents so we don't blindly add error values (#39404) * add error check to perfmon groupToEvents * linter... * tests * add changelog * fix changelog * make linter happy --- CHANGELOG.next.asciidoc | 1 + metricbeat/module/windows/perfmon/data.go | 15 +++-- .../module/windows/perfmon/data_test.go | 61 +++++++++++++++++++ 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index a92b42f697d..2b571875e34 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -172,6 +172,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Winlogbeat* +- Fix error handling in perfmon metrics. {issue}38140[38140] {pull}39404[39404] *Elastic Logging Plugin* diff --git a/metricbeat/module/windows/perfmon/data.go b/metricbeat/module/windows/perfmon/data.go index 9add5c03896..0391266e65a 100644 --- a/metricbeat/module/windows/perfmon/data.go +++ b/metricbeat/module/windows/perfmon/data.go @@ -20,6 +20,7 @@ package perfmon import ( + "errors" "fmt" "regexp" "strconv" @@ -48,7 +49,7 @@ func (re *Reader) groupToEvents(counters map[string][]pdh.CounterValue) []mb.Eve // The counter has a negative value or the counter was successfully found, but the data returned is not valid. // This error can occur if the counter value is less than the previous value. (Because counter values always increment, the counter value rolls over to zero when it reaches its maximum value.) // This is not an error that stops the application from running successfully and a positive counter value should be retrieved in the later calls. - if val.Err.Error == pdh.PDH_CALC_NEGATIVE_VALUE || val.Err.Error == pdh.PDH_INVALID_DATA { + if errors.Is(val.Err.Error, pdh.PDH_CALC_NEGATIVE_VALUE) || errors.Is(val.Err.Error, pdh.PDH_INVALID_DATA) { re.log.Debugw("Counter value retrieval returned", "error", val.Err.Error, "cstatus", pdh.PdhErrno(val.Err.CStatus), logp.Namespace("perfmon"), "query", counterPath) continue @@ -69,7 +70,9 @@ func (re *Reader) groupToEvents(counters map[string][]pdh.CounterValue) []mb.Eve if _, ok := eventMap[eventKey]; !ok { eventMap[eventKey] = &mb.Event{ MetricSetFields: mapstr.M{}, - Error: fmt.Errorf("failed on query=%v: %w", counterPath, val.Err.Error), + } + if val.Err.Error != nil { + eventMap[eventKey].Error = fmt.Errorf("failed on query=%v: %w", counterPath, val.Err.Error) } if val.Instance != "" { // will ignore instance index @@ -93,9 +96,11 @@ func (re *Reader) groupToEvents(counters map[string][]pdh.CounterValue) []mb.Eve } } // Write the values into the map. - var events []mb.Event + events := make([]mb.Event, len(eventMap)) + iter := 0 for _, val := range eventMap { - events = append(events, *val) + events[iter] = *val + iter++ } return events } @@ -111,7 +116,7 @@ func (re *Reader) groupToSingleEvent(counters map[string][]pdh.CounterValue) mb. // Some counters, such as rate counters, require two counter values in order to compute a displayable value. In this case we must call PdhCollectQueryData twice before calling PdhGetFormattedCounterValue. // For more information, see Collecting Performance Data (https://docs.microsoft.com/en-us/windows/desktop/PerfCtrs/collecting-performance-data). if val.Err.Error != nil { - if val.Err.Error == pdh.PDH_CALC_NEGATIVE_VALUE || val.Err.Error == pdh.PDH_INVALID_DATA { + if errors.Is(val.Err.Error, pdh.PDH_CALC_NEGATIVE_VALUE) || errors.Is(val.Err.Error, pdh.PDH_INVALID_DATA) { re.log.Debugw("Counter value retrieval returned", "error", val.Err.Error, "cstatus", pdh.PdhErrno(val.Err.CStatus), logp.Namespace("perfmon"), "query", counterPath) continue diff --git a/metricbeat/module/windows/perfmon/data_test.go b/metricbeat/module/windows/perfmon/data_test.go index 2e9f15e2de7..9c4691216b3 100644 --- a/metricbeat/module/windows/perfmon/data_test.go +++ b/metricbeat/module/windows/perfmon/data_test.go @@ -28,6 +28,67 @@ import ( "github.com/elastic/elastic-agent-libs/mapstr" ) +func TestGroupErrors(t *testing.T) { + reader := Reader{ + config: Config{ + GroupMeasurements: true, + }, + query: pdh.Query{}, + log: nil, + counters: []PerfCounter{ + { + QueryField: "datagrams_sent_per_sec", + QueryName: `\UDPv4\Datagrams Sent/sec`, + Format: "float", + ObjectName: "UDPv4", + ObjectField: "object", + ChildQueries: []string{`\UDPv4\Datagrams Sent/sec`}, + }, + { + QueryField: "%_processor_time", + QueryName: `\Processor Information(_Total)\% Processor Time`, + Format: "float", + ObjectName: "Processor Information", + ObjectField: "object", + InstanceName: "_Total", + InstanceField: "instance", + ChildQueries: []string{`\Processor Information(_Total)\% Processor Time`}, + }, + { + QueryField: "current_disk_queue_length", + QueryName: `\PhysicalDisk(_Total)\Current Disk Queue Length`, + Format: "float", + ObjectName: "PhysicalDisk", + ObjectField: "object", + InstanceName: "_Total", + InstanceField: "instance", + ChildQueries: []string{`\PhysicalDisk(_Total)\Current Disk Queue Length`}, + }, + }, + } + + counters := map[string][]pdh.CounterValue{ + `\UDPv4\Datagrams Sent/sec`: { + {Instance: "", Measurement: 23}, + }, + `\Processor Information(_Total)\% Processor Time`: { + {Instance: "_Total", Measurement: 11}, + }, + `\PhysicalDisk(_Total)\Current Disk Queue Length`: { + {Instance: "_Total", Measurement: 20}, + }, + } + + events := reader.groupToEvents(counters) + assert.NotNil(t, events) + assert.Equal(t, 3, len(events)) + + for _, event := range events { + assert.NoError(t, event.Error) + } + +} + func TestGroupToEvents(t *testing.T) { reader := Reader{ config: Config{ From a878b4927e9db6c56cde0ae4e700c432d6350ace Mon Sep 17 00:00:00 2001 From: Olga Naydyonock Date: Fri, 10 May 2024 12:48:25 +0300 Subject: [PATCH 299/313] Update filebeat pipeline to match Jenkins steps (#39261) * updated filebeat pipeline * updated pre-command * updated timeout for python tests * restored original timeout * pr fixes --- .buildkite/filebeat/filebeat-pipeline.yml | 51 ++++++++++++----------- .buildkite/hooks/pre-command | 2 +- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index ebb25ca3966..9c57dd11bd3 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -26,7 +26,7 @@ steps: - group: "Filebeat Mandatory Tests" key: "filebeat-mandatory-tests" steps: - - label: ":ubuntu: Ubuntu Unit Tests" + - label: ":ubuntu: Filebeat Unit Tests" command: | cd filebeat mage build unitTest @@ -42,9 +42,9 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Ubuntu Unit Tests" + context: "filebeat: Linux x86_64 Unit Tests" - - label: ":ubuntu: Ubuntu Go Integration Tests" + - label: ":ubuntu: Filebeat Go Integration Tests" command: | cd filebeat mage goIntegTest @@ -60,9 +60,9 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Ubuntu Go Integration Tests" + context: "filebeat: Filebeat Go Integration Tests" - - label: ":ubuntu: Ubuntu Python Integration Tests" + - label: ":ubuntu: Filebeat Python Integration Tests" command: | cd filebeat mage pythonIntegTest @@ -80,7 +80,7 @@ steps: - github_commit_status: context: "filebeat: Python Integration Tests" - - label: ":windows: Windows 2016 Unit Tests" + - label: ":windows: Filebeat Windows 2016 Unit Tests" key: "windows-2016-unit-tests" command: | Set-Location -Path filebeat @@ -101,7 +101,7 @@ steps: - github_commit_status: context: "filebeat: Windows 2016 Unit Tests" - - label: ":windows: Windows 2022 Unit Tests" + - label: ":windows: Filebeat Windows 2022 Unit Tests" key: "windows-2022-unit-tests" command: | Set-Location -Path filebeat @@ -124,8 +124,10 @@ steps: - group: "Filebeat Extended Tests" key: "filebeat-extended-tests" + if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS|arm).*/ + steps: - - label: ":mac: MacOS x64_64 Unit Tests" + - label: ":mac: Filebeat macOS x86_64 Unit Tests" key: "macos-unit-tests-extended" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | @@ -144,9 +146,9 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Extended MacOS Unit Tests" + context: "filebeat: macOS x86_64 Unit Tests" - - label: ":mac: MacOS arm64 Unit Tests" + - label: ":mac: Filebeat macOS arm64 Unit Tests" key: "macos-arm64-unit-tests-extended" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | @@ -165,9 +167,9 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Extended MacOS ARM Unit Tests" + context: "filebeat: macOS arm64 Unit Tests" - - label: ":linux: Ubuntu ARM Unit Tests" + - label: ":linux: Filebeat arm64 Unit Tests" key: "extended-arm64-unit-test" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ command: | @@ -185,13 +187,14 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Extended Ubuntu ARM Unit Tests" + context: "filebeat: Linux arm64 Unit Tests" - - group: "Extended Windows Tests" + - group: "Filebeat Extended Windows Tests" key: "filebeat-extended-win-tests" if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*[Ww]indows.*/ + steps: - - label: ":windows: Windows 2019 Unit Tests" + - label: ":windows: Filebeat Windows 2019 Unit Tests" key: "windows-extended-2019" command: | Set-Location -Path filebeat @@ -210,9 +213,9 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Extended Windows 2019 Unit Tests" + context: "filebeat: Windows 2019 Unit Tests" - - label: ":windows: Windows 11 Unit Tests" + - label: ":windows: Filebeat Windows 11 Unit Tests" key: "windows-extended-11" command: | Set-Location -Path filebeat @@ -231,9 +234,9 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Extended Windows 11 Unit Tests" + context: "filebeat: Windows 11 Unit Tests" - - label: ":windows: Windows 10 Unit Tests" + - label: ":windows: Filebeat Windows 10 Unit Tests" key: "windows-extended-10" command: | Set-Location -Path filebeat @@ -252,7 +255,7 @@ steps: - "filebeat/build/*.json" notify: - github_commit_status: - context: "filebeat: Extended Windows 10 Unit Tests" + context: "filebeat: Windows 10 Unit Tests" - wait: ~ # with PRs, we want to run packaging only if mandatory tests succeed @@ -264,7 +267,7 @@ steps: - group: "Filebeat Packaging" key: "packaging" steps: - - label: ":linux: Packaging Linux" + - label: ":linux: Filebeat Packaging Linux" key: "packaging-linux" command: | cd filebeat @@ -283,9 +286,9 @@ steps: PLATFORMS: "+all linux/amd64 linux/arm64 windows/amd64 darwin/amd64 darwin/arm64" notify: - github_commit_status: - context: "filebeat: Packaging" + context: "filebeat: Packaging Linux" - - label: ":linux: Packaging ARM" + - label: ":linux: Filebeat Packaging arm64" key: "packaging-arm" command: | cd filebeat @@ -303,4 +306,4 @@ steps: PACKAGES: "docker" notify: - github_commit_status: - context: "filebeat: Packaging ARM" + context: "filebeat: Packaging arm64" diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index 1631b7dc0a1..9a7228c5b2e 100644 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -11,7 +11,7 @@ PRIVATE_CI_GCS_CREDENTIALS_PATH="kv/ci-shared/platform-ingest/gcp-platform-inges DOCKER_REGISTRY_SECRET_PATH="kv/ci-shared/platform-ingest/docker_registry_prod" GITHUB_TOKEN_VAULT_PATH="kv/ci-shared/platform-ingest/github_token" -if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" || "$BUILDKITE_PIPELINE_SLUG" == "filebeat" ]]; then +if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats" ]]; then source .buildkite/env-scripts/env.sh if [[ -z "${GO_VERSION-""}" ]]; then export GO_VERSION=$(cat "${WORKSPACE}/.go-version") From 5bff7ec4edd6448d863258bf33346f9223f95566 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 10 May 2024 18:28:24 +0200 Subject: [PATCH 300/313] Fixed pipelines formatting (#39513) --- .buildkite/auditbeat/auditbeat-pipeline.yml | 26 ++++++++--------- .buildkite/filebeat/filebeat-pipeline.yml | 22 +++++++-------- .buildkite/heartbeat/heartbeat-pipeline.yml | 28 +++++++++---------- .buildkite/libbeat/pipeline.libbeat.yml | 12 ++++---- .buildkite/metricbeat/pipeline.yml | 23 ++++++++------- .buildkite/packetbeat/pipeline.packetbeat.yml | 21 +++++++------- .buildkite/winlogbeat/pipeline.winlogbeat.yml | 12 ++++---- .../x-pack/pipeline.xpack.auditbeat.yml | 20 ++++++------- .../x-pack/pipeline.xpack.dockerlogbeat.yml | 4 +-- .buildkite/x-pack/pipeline.xpack.filebeat.yml | 22 +++++++-------- .../x-pack/pipeline.xpack.heartbeat.yml | 18 ++++++------ .buildkite/x-pack/pipeline.xpack.libbeat.yml | 18 ++++++------ .../x-pack/pipeline.xpack.metricbeat.yml | 20 ++++++------- .../x-pack/pipeline.xpack.osquerybeat.yml | 18 ++++++------ .../x-pack/pipeline.xpack.packetbeat.yml | 26 ++++++++--------- .../x-pack/pipeline.xpack.winlogbeat.yml | 13 ++++----- 16 files changed, 150 insertions(+), 153 deletions(-) diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index 95460910e22..adcbe4cecd2 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -34,7 +34,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -53,7 +53,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -71,7 +71,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -91,7 +91,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -112,7 +112,7 @@ steps: GOX_FLAGS: "-arch amd64" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -135,7 +135,7 @@ steps: mage build integTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -156,7 +156,7 @@ steps: mage build integTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -177,7 +177,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -198,7 +198,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -218,7 +218,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -241,7 +241,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -262,7 +262,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -283,7 +283,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 9c57dd11bd3..61678e2879c 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -32,7 +32,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -50,7 +50,7 @@ steps: mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -68,7 +68,7 @@ steps: mage pythonIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: gcp image: "${IMAGE_UBUNTU_X86_64}" @@ -87,7 +87,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -108,7 +108,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -137,7 +137,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -158,7 +158,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -177,7 +177,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -201,7 +201,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -222,7 +222,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -243,7 +243,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index 54cfe6f0ac7..1d668a3fb22 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -32,7 +32,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -50,7 +50,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9}" @@ -69,7 +69,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -89,7 +89,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -103,12 +103,12 @@ steps: context: "Heartbeat: Win-2022 Unit Tests" - label: ":ubuntu: Heartbeat Go Integration Tests" - command: | + command: | cd heartbeat mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -126,7 +126,7 @@ steps: mage pythonIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -150,7 +150,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -174,7 +174,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -194,7 +194,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -212,12 +212,12 @@ steps: steps: - label: ":windows: Heartbeat Win-2019 Unit Tests" key: "heartbeat-win-extended-2019" - command: | + command: | Set-Location -Path heartbeat mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -237,7 +237,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -257,7 +257,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" diff --git a/.buildkite/libbeat/pipeline.libbeat.yml b/.buildkite/libbeat/pipeline.libbeat.yml index bc77712c330..7504493208f 100644 --- a/.buildkite/libbeat/pipeline.libbeat.yml +++ b/.buildkite/libbeat/pipeline.libbeat.yml @@ -23,7 +23,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -43,7 +43,7 @@ steps: mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -63,7 +63,7 @@ steps: mage pythonIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -83,7 +83,7 @@ steps: make crosscompile retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -103,7 +103,7 @@ steps: make STRESS_TEST_OPTIONS='-timeout=20m -race -v -parallel 1' GOTEST_OUTPUT_OPTIONS=' | go-junit-report > libbeat-stress-test.xml' stress-tests retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -125,7 +125,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index d0cece3a590..95b5d3efba4 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -34,7 +34,7 @@ steps: command: "cd metricbeat && mage build unitTest" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -67,7 +67,7 @@ steps: cd metricbeat && mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -100,7 +100,7 @@ steps: cd metricbeat && mage pythonIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -117,7 +117,7 @@ steps: command: "make -C metricbeat crosscompile" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -136,7 +136,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -157,7 +157,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -182,7 +182,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -203,7 +203,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -224,7 +224,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -250,7 +250,7 @@ steps: cd metricbeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -270,7 +270,7 @@ steps: cd metricbeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -281,7 +281,6 @@ steps: - github_commit_status: context: "metricbeat: Extended MacOS arm64 Unit Tests" - - wait: ~ # with PRs, we want to run packaging only if mandatory tests succeed # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index a0d139d303b..38d42e710c8 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -30,7 +30,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -48,7 +48,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" @@ -66,7 +66,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -86,7 +86,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -110,7 +110,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -131,7 +131,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -152,7 +152,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -179,7 +179,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -200,7 +200,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -217,7 +217,7 @@ steps: if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${AWS_IMAGE_UBUNTU_ARM_64}" @@ -229,7 +229,6 @@ steps: - github_commit_status: context: "packetbeat: Extended Ubuntu ARM Unit Tests" - - wait: ~ # with PRs, we want to run packaging only if mandatory tests succeed # for other cases, e.g. merge commits, we want to run packaging (and publish) independently of other tests diff --git a/.buildkite/winlogbeat/pipeline.winlogbeat.yml b/.buildkite/winlogbeat/pipeline.winlogbeat.yml index b32391bd2e7..316bf032e70 100644 --- a/.buildkite/winlogbeat/pipeline.winlogbeat.yml +++ b/.buildkite/winlogbeat/pipeline.winlogbeat.yml @@ -26,7 +26,7 @@ steps: command: "make -C winlogbeat crosscompile" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -45,7 +45,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -66,7 +66,7 @@ steps: key: "mandatory-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -87,7 +87,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -113,7 +113,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -134,7 +134,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index 81c1f99ad86..613f608883c 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -38,7 +38,7 @@ steps: mage update build test retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -57,7 +57,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" @@ -76,7 +76,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -97,7 +97,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -122,7 +122,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -143,7 +143,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -164,7 +164,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -190,7 +190,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -209,7 +209,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" @@ -230,7 +230,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index 322caff662a..76ca180c7a7 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -33,7 +33,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -59,7 +59,7 @@ steps: MODULE: $MODULE retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index 22b6432fd66..72633170a09 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -32,7 +32,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -55,7 +55,7 @@ steps: cd x-pack/filebeat && mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -78,7 +78,7 @@ steps: cd x-pack/filebeat && mage pythonIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -97,7 +97,7 @@ steps: key: "x-pack-filebeat-mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -118,7 +118,7 @@ steps: key: "x-pack-filebeat-mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -139,7 +139,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" @@ -162,7 +162,7 @@ steps: key: "x-pack-filebeat-extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -183,7 +183,7 @@ steps: key: "x-pack-filebeat-extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -204,7 +204,7 @@ steps: key: "x-pack-filebeat-extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -229,7 +229,7 @@ steps: cd x-pack/filebeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -249,7 +249,7 @@ steps: cd x-pack/filebeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index a20f454b6aa..e23421ed1c1 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -41,7 +41,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -64,7 +64,7 @@ steps: mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -84,7 +84,7 @@ steps: mage build test retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -107,7 +107,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -134,7 +134,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -156,7 +156,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -176,7 +176,7 @@ steps: mage build test retry: automatic: - - limit: 3 + - limit: 3 key: "extended-win-2019-unit-tests" agents: provider: "gcp" @@ -206,7 +206,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -227,7 +227,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.libbeat.yml b/.buildkite/x-pack/pipeline.xpack.libbeat.yml index 6bf456f6d83..7a0084096c8 100644 --- a/.buildkite/x-pack/pipeline.xpack.libbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.libbeat.yml @@ -28,7 +28,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -47,7 +47,7 @@ steps: mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -66,7 +66,7 @@ steps: mage pythonIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -85,7 +85,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -106,7 +106,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -131,7 +131,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -152,7 +152,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -173,7 +173,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -198,7 +198,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index 11ff663e2fd..e21847bbbd9 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -32,7 +32,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -55,7 +55,7 @@ steps: cd x-pack/metricbeat && mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -78,7 +78,7 @@ steps: cd x-pack/metricbeat && mage pythonIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -97,7 +97,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -118,7 +118,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -143,7 +143,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -164,7 +164,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -185,7 +185,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -211,7 +211,7 @@ steps: cd x-pack/metricbeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -231,7 +231,7 @@ steps: cd x-pack/metricbeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index c86a9568fb1..5f51916cdfb 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -32,7 +32,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -51,7 +51,7 @@ steps: mage goIntegTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -70,7 +70,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -91,7 +91,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -116,7 +116,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -137,7 +137,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -158,7 +158,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -183,7 +183,7 @@ steps: cd x-pack/osquerybeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -201,7 +201,7 @@ steps: cd x-pack/osquerybeat && mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 451bcee84ba..41eef722392 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -31,7 +31,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -50,7 +50,7 @@ steps: mage systemTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_UBUNTU_X86_64}" @@ -69,7 +69,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_RHEL9_X86_64}" @@ -88,7 +88,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -109,7 +109,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -131,7 +131,7 @@ steps: mage systemTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -156,7 +156,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -177,7 +177,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -198,7 +198,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -220,7 +220,7 @@ steps: mage systemTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -246,7 +246,7 @@ steps: if: build.env("GITHUB_PR_LABELS") =~ /.*arm.*/ retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "aws" imagePrefix: "${IMAGE_UBUNTU_ARM_64}" @@ -271,7 +271,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_X86_64}" @@ -291,7 +291,7 @@ steps: mage build unitTest retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "orka" imagePrefix: "${IMAGE_MACOS_ARM}" diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index a96cf4803fe..71d2fcdcead 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -18,7 +18,6 @@ steps: - group: "x-pack/Winlogbeat Mandatory Tests" key: "x-pack-winlogbeat-mandatory-tests" steps: - - label: ":windows: x-pack/Winlogbeat Win-2019 Unit (MODULE) Tests" key: "mandatory-win-2019-module-unit-tests" command: | @@ -31,7 +30,7 @@ steps: MODULE: $MODULE retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" @@ -52,7 +51,7 @@ steps: key: "mandatory-win-2016-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2016}" @@ -73,7 +72,7 @@ steps: key: "mandatory-win-2022-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2022}" @@ -99,7 +98,7 @@ steps: key: "extended-win-10-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_10}" @@ -120,7 +119,7 @@ steps: key: "extended-win-11-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_11}" @@ -141,7 +140,7 @@ steps: key: "extended-win-2019-unit-tests" retry: automatic: - - limit: 3 + - limit: 3 agents: provider: "gcp" image: "${IMAGE_WIN_2019}" From c77302852ef913c7b4e1ed521528df9a7e8ca55d Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Fri, 10 May 2024 20:06:39 +0200 Subject: [PATCH 301/313] Explicitly set DOCKER_PULL, RACE_DETECTOR and TEST_COVERAGE for pipelines (#39510) * Explicitly set RACE_DETECTOR and TEST_COVERAGE for pipelines * Moved DOCKER_PULL var to winlogonbeat pipeline * added xpack/heartbeat --- .buildkite/auditbeat/auditbeat-pipeline.yml | 4 ++++ .buildkite/filebeat/filebeat-pipeline.yml | 4 ++++ .buildkite/heartbeat/heartbeat-pipeline.yml | 4 ++++ .buildkite/libbeat/pipeline.libbeat.yml | 4 ++++ .buildkite/metricbeat/pipeline.yml | 4 ++++ .buildkite/packetbeat/pipeline.packetbeat.yml | 4 ++++ .buildkite/scripts/setenv.sh | 3 --- .buildkite/winlogbeat/pipeline.winlogbeat.yml | 6 ++++++ .buildkite/x-pack/pipeline.xpack.auditbeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.filebeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.heartbeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.libbeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.metricbeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.osquerybeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.packetbeat.yml | 4 ++++ .buildkite/x-pack/pipeline.xpack.winlogbeat.yml | 4 ++++ 17 files changed, 66 insertions(+), 3 deletions(-) diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index adcbe4cecd2..1b1512433c9 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -22,6 +22,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "Auditbeat Mandatory Testing" key: "auditbeat-mandatory-tests" diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 61678e2879c..87f1925a372 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -22,6 +22,10 @@ env: K8S_VERSION: "v1.29.0" ASDF_KIND_VERSION: "0.20.0" + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "Filebeat Mandatory Tests" key: "filebeat-mandatory-tests" diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index 1d668a3fb22..136195e74b1 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -21,6 +21,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "Heartbeat Mandatory Testing" key: "heartbeat-mandatory-tests" diff --git a/.buildkite/libbeat/pipeline.libbeat.yml b/.buildkite/libbeat/pipeline.libbeat.yml index 7504493208f..fd485279858 100644 --- a/.buildkite/libbeat/pipeline.libbeat.yml +++ b/.buildkite/libbeat/pipeline.libbeat.yml @@ -11,6 +11,10 @@ env: #Deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "Mandatory Tests" key: "mandatory-tests" diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index 95b5d3efba4..23e603267f6 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -25,6 +25,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "Metricbeat Mandatory Tests" key: "metricbeat-mandatory-tests" diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index 38d42e710c8..ee6e654cd3e 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -20,6 +20,10 @@ env: #Deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "packetbeat Mandatory Tests" key: "packetbeat-mandatory-tests" diff --git a/.buildkite/scripts/setenv.sh b/.buildkite/scripts/setenv.sh index 6351af6f5a6..56f8d7257d6 100755 --- a/.buildkite/scripts/setenv.sh +++ b/.buildkite/scripts/setenv.sh @@ -44,9 +44,6 @@ exportVars() { if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-winlogbeat" || "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-auditbeat" ]]; then exportVars - export RACE_DETECTOR="true" - export TEST_COVERAGE="true" - export DOCKER_PULL="0" export TEST_TAGS="${TEST_TAGS:+$TEST_TAGS,}oracle" fi diff --git a/.buildkite/winlogbeat/pipeline.winlogbeat.yml b/.buildkite/winlogbeat/pipeline.winlogbeat.yml index 316bf032e70..c598224438f 100644 --- a/.buildkite/winlogbeat/pipeline.winlogbeat.yml +++ b/.buildkite/winlogbeat/pipeline.winlogbeat.yml @@ -16,6 +16,12 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + # See docker.go. Sets --pull to docker-compose + DOCKER_PULL: 0 + steps: - group: "Winlogbeat Mandatory Tests" key: "winlogbeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index 613f608883c..85bd92c6634 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -22,6 +22,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/auditbeat Mandatory Tests" key: "x-pack-auditbeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index 76ca180c7a7..b1d307b3814 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -22,6 +22,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/dockerlogbeat Mandatory Tests" key: "xpack-dockerlogbeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index 72633170a09..f86c9e9c73d 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -21,6 +21,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/filebeat Mandatory Tests" key: "x-pack-filebeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index e23421ed1c1..3a833f369e2 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -26,6 +26,10 @@ env: ASDF_MAGE_VERSION: 1.15.0 ASDF_NODEJS_VERSION: 18.17.1 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/heartbeat Mandatory Tests" key: "x-pack-heartbeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.libbeat.yml b/.buildkite/x-pack/pipeline.xpack.libbeat.yml index 7a0084096c8..6c26e9614df 100644 --- a/.buildkite/x-pack/pipeline.xpack.libbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.libbeat.yml @@ -17,6 +17,10 @@ env: #Deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/libbeat Mandatory Tests" key: "x-pack-libbeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index e21847bbbd9..ea01c69eb43 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -21,6 +21,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/metricbeat Mandatory Tests" key: "x-pack-metricbeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index 5f51916cdfb..7c740ecd5cb 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -21,6 +21,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/osquerybeat Mandatory Tests" key: "x-pack-osquerybeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 41eef722392..80bf88843d7 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -20,6 +20,10 @@ env: #Deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/packetbeat Mandatory Tests" key: "x-pack-packetbeat-mandatory-tests" diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index 71d2fcdcead..a2d06a5ae4e 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -14,6 +14,10 @@ env: # Other deps ASDF_MAGE_VERSION: 1.15.0 + # Unit tests + RACE_DETECTOR: "true" + TEST_COVERAGE: "true" + steps: - group: "x-pack/Winlogbeat Mandatory Tests" key: "x-pack-winlogbeat-mandatory-tests" From c91503b4cb33b4d98befb1dcd9bdbd888d44d28b Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Mon, 13 May 2024 12:38:03 +0300 Subject: [PATCH 302/313] Remove hardcoded module definitions in CI (#39506) For reasons described in [^1], we hard coded `aws` or `kubernetes` for the env var `MODULE`, when no file changes were detected under `modules/` per project. This commit reverts this and allows all module tests to run if no changesets apply. As discussed in [^1], for the tests to run properly (and not go into an infinite loop) if there are no module changes the `MODULE` env var should **not** be set, rather than set to an empty string. This commit is an important fix as it covers a major delta in test coverage between Jenkins and Buildkite. Closes https://github.com/elastic/ingest-dev/issues/2993 [^1]: https://github.com/elastic/ingest-dev/issues/2993#issuecomment-2104741977 --- .buildkite/metricbeat/pipeline.yml | 4 ++-- .buildkite/scripts/changesets.psm1 | 16 ++++------------ .buildkite/scripts/changesets.sh | 13 +++++-------- .buildkite/x-pack/pipeline.xpack.auditbeat.yml | 2 +- .../x-pack/pipeline.xpack.dockerlogbeat.yml | 4 +--- .buildkite/x-pack/pipeline.xpack.filebeat.yml | 8 ++++---- .buildkite/x-pack/pipeline.xpack.metricbeat.yml | 8 ++++---- .buildkite/x-pack/pipeline.xpack.winlogbeat.yml | 4 +--- 8 files changed, 22 insertions(+), 37 deletions(-) diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index 23e603267f6..ed9fb14f3d4 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -57,7 +57,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet metricbeat - echo "~~~ Will run tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" # TODO move this section to base image / pre-command hook echo "~~~ Installing kind" @@ -90,7 +90,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet metricbeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" # TODO move this section to base image / pre-command hook echo "~~~ Installing kind" diff --git a/.buildkite/scripts/changesets.psm1 b/.buildkite/scripts/changesets.psm1 index 15fabd3eba5..10e4d31a8b6 100644 --- a/.buildkite/scripts/changesets.psm1 +++ b/.buildkite/scripts/changesets.psm1 @@ -56,17 +56,9 @@ function DefineModuleFromTheChangeSet($projectPath) { } } - # TODO: remove this conditional when issue https://github.com/elastic/ingest-dev/issues/2993 gets resolved - if(!$changedModules) { - if($Env:BUILDKITE_PIPELINE_SLUG -eq 'beats-xpack-metricbeat') { - $Env:MODULE = "aws" - } - else { - $Env:MODULE = "kubernetes" - } - } - else { - # TODO: once https://github.com/elastic/ingest-dev/issues/2993 gets resolved, this should be the only thing we export - $Env:MODULE = $changedModules + if ($changedModules) { + $env:MODULE = $changedModules + Write-Output "~~~ Set env var MODULE to [$env:MODULE]" + Write-Output "~~~ Resuming commands" } } diff --git a/.buildkite/scripts/changesets.sh b/.buildkite/scripts/changesets.sh index 3b7ed5d7ec0..5c6fd6c7b0d 100644 --- a/.buildkite/scripts/changesets.sh +++ b/.buildkite/scripts/changesets.sh @@ -68,13 +68,10 @@ defineModuleFromTheChangeSet() { fi done - if [[ -z "$changed_modules" ]]; then # TODO: remove this conditional when issue https://github.com/elastic/ingest-dev/issues/2993 gets resolved - if [[ "$BUILDKITE_PIPELINE_SLUG" == "beats-xpack-metricbeat" ]]; then - export MODULE="aws" - else - export MODULE="kubernetes" - fi - else - export MODULE="${changed_modules}" # TODO: once https://github.com/elastic/ingest-dev/issues/2993 gets resolved, this should be the only thing we export + # export MODULE="" leads to an infinite loop https://github.com/elastic/ingest-dev/issues/2993 + if [[ ! -z $changed_modules ]]; then + export MODULE="${changed_modules}" + echo "~~~ Set env var MODULE to [$MODULE]" + echo "~~~ Resuming commands" fi } diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index 85bd92c6634..2e13a0d9b95 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -37,7 +37,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/auditbeat - echo "~~~ Will run tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" cd x-pack/auditbeat mage update build test retry: diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index b1d307b3814..b01d6de53e2 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -56,11 +56,9 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/dockerlogbeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" cd x-pack/dockerlogbeat mage goIntegTest - env: - MODULE: $MODULE retry: automatic: - limit: 3 diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index f86c9e9c73d..471dc32b4e5 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -55,7 +55,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/filebeat - echo "~~~ Will run tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" cd x-pack/filebeat && mage goIntegTest retry: automatic: @@ -78,7 +78,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/filebeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" cd x-pack/filebeat && mage pythonIntegTest retry: automatic: @@ -272,7 +272,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/filebeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" .buildkite/scripts/cloud_tests.sh env: @@ -301,7 +301,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/filebeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" .buildkite/scripts/cloud_tests.sh env: ASDF_TERRAFORM_VERSION: 1.0.2 diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index ea01c69eb43..bc9ed7040e8 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -55,7 +55,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/metricbeat - echo "~~~ Will run tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" cd x-pack/metricbeat && mage goIntegTest retry: automatic: @@ -78,7 +78,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/metricbeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" cd x-pack/metricbeat && mage pythonIntegTest retry: automatic: @@ -257,7 +257,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/metricbeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" .buildkite/scripts/cloud_tests.sh env: @@ -288,7 +288,7 @@ steps: # defines the MODULE env var based on what's changed in a PR source .buildkite/scripts/changesets.sh defineModuleFromTheChangeSet x-pack/metricbeat - echo "~~~ Running tests with env var MODULE=$$MODULE" + echo "~~~ Running tests" .buildkite/scripts/cloud_tests.sh env: ASDF_TERRAFORM_VERSION: 1.0.2 diff --git a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml index a2d06a5ae4e..b69aec32498 100644 --- a/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.winlogbeat.yml @@ -27,11 +27,9 @@ steps: command: | Import-Module ./.buildkite/scripts/changesets.psm1 defineModuleFromTheChangeSet 'x-pack/winlogbeat' - Write-Output "~~~ Will run tests with env var MODULE=$$Env:MODULE" + Write-Output "~~~ Running tests" Set-Location -Path x-pack/winlogbeat mage build unitTest - env: - MODULE: $MODULE retry: automatic: - limit: 3 From a992601dacb7b66993ad7cedd3726162a9436a85 Mon Sep 17 00:00:00 2001 From: Dimitrios Liappis Date: Tue, 14 May 2024 10:04:00 +0300 Subject: [PATCH 303/313] Allow dependabot report BK status checks (#39540) This commit adds dependabot to the BK PR Bot allow list to enable status check reporting. --- .buildkite/pull-requests.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildkite/pull-requests.json b/.buildkite/pull-requests.json index 1c541bb7896..55affae4128 100644 --- a/.buildkite/pull-requests.json +++ b/.buildkite/pull-requests.json @@ -5,7 +5,7 @@ "pipelineSlug": "beats", "allow_org_users": true, "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ "mergify[bot]" ], + "allowed_list": ["dependabot[bot]", "mergify[bot]"], "set_commit_status": true, "build_on_commit": true, "build_on_comment": true, @@ -21,7 +21,7 @@ "pipelineSlug": "beats-xpack-elastic-agent", "allow_org_users": true, "allowed_repo_permissions": ["admin", "write"], - "allowed_list": [ ], + "allowed_list": ["dependabot[bot]", "mergify[bot]"], "set_commit_status": true, "build_on_commit": true, "build_on_comment": true, From 176e9b8c6dc55ef211f39f194d1366b593793691 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Tue, 14 May 2024 13:26:27 +0300 Subject: [PATCH 304/313] [BK] - Remove certain steps from running for Branches (#39533) This commit makes some adjustments in the step conditions after reviewing the Jenkins files and how we perform the step validations in Jenkinsfile. If there is a key `when` inside the Jenkinsfile step, it will validate the required conditions, and if there are no `branches: true`, then it will not include that step. Signed-off-by: Alexandros Sapranidis --- .buildkite/auditbeat/auditbeat-pipeline.yml | 8 ++++---- .buildkite/filebeat/filebeat-pipeline.yml | 2 +- .buildkite/metricbeat/pipeline.yml | 2 +- .buildkite/packetbeat/pipeline.packetbeat.yml | 4 ++-- .buildkite/x-pack/pipeline.xpack.auditbeat.yml | 2 +- .buildkite/x-pack/pipeline.xpack.filebeat.yml | 6 +++--- .buildkite/x-pack/pipeline.xpack.heartbeat.yml | 2 +- .buildkite/x-pack/pipeline.xpack.metricbeat.yml | 8 ++++---- .buildkite/x-pack/pipeline.xpack.packetbeat.yml | 2 +- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.buildkite/auditbeat/auditbeat-pipeline.yml b/.buildkite/auditbeat/auditbeat-pipeline.yml index 1b1512433c9..0b0efac5ed6 100644 --- a/.buildkite/auditbeat/auditbeat-pipeline.yml +++ b/.buildkite/auditbeat/auditbeat-pipeline.yml @@ -132,7 +132,7 @@ steps: steps: - label: ":linux: Auditbeat Ubuntu Integration Tests" key: "auditbeat-extended-integ-tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*integrations.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*integrations.*/ command: | set -euo pipefail cd auditbeat @@ -153,7 +153,7 @@ steps: - label: ":linux: Auditbeat Ubuntu arm64 Integration Tests" key: "auditbeat-extended-arm64-integ-tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*integrations.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*integrations.*/ command: | set -euo pipefail cd auditbeat @@ -194,7 +194,7 @@ steps: context: "auditbeat: Linux arm64 Unit Tests" - label: ":mac: Auditbeat macOS x86_64 Unit Tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -214,7 +214,7 @@ steps: context: "auditbeat: macOS x86_64 Unit Tests" - label: ":mac: Auditbeat macOS arm64 ARM Unit Tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index 87f1925a372..f2b75ad2b05 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -154,7 +154,7 @@ steps: - label: ":mac: Filebeat macOS arm64 Unit Tests" key: "macos-arm64-unit-tests-extended" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh diff --git a/.buildkite/metricbeat/pipeline.yml b/.buildkite/metricbeat/pipeline.yml index ed9fb14f3d4..f4a04dbb0c2 100644 --- a/.buildkite/metricbeat/pipeline.yml +++ b/.buildkite/metricbeat/pipeline.yml @@ -244,7 +244,7 @@ steps: - group: "Metricbeat Extended MacOS Tests" key: "metricbeat-extended-macos-tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - label: ":mac: MacOS x64_64 Unit Tests" key: "extended-macos-x64-64-unit-tests" diff --git a/.buildkite/packetbeat/pipeline.packetbeat.yml b/.buildkite/packetbeat/pipeline.packetbeat.yml index ee6e654cd3e..74873046c56 100644 --- a/.buildkite/packetbeat/pipeline.packetbeat.yml +++ b/.buildkite/packetbeat/pipeline.packetbeat.yml @@ -175,7 +175,7 @@ steps: steps: - label: ":mac: MacOS x86_64 Unit Tests" key: "macos-x86-64-unit-tests-extended" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -196,7 +196,7 @@ steps: - label: ":mac: MacOS arm64 Unit Tests" key: "macos-arm64-unit-tests-extended" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS|arm).*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*(macOS|arm).*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh diff --git a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml index 2e13a0d9b95..14a79eb76d9 100644 --- a/.buildkite/x-pack/pipeline.xpack.auditbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.auditbeat.yml @@ -184,7 +184,7 @@ steps: - group: "x-pack/auditbeat MacOS Extended Tests" key: "x-pack-auditbeat-extended-tests-macos" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - label: ":mac: MacOS x86_64 Unit Tests" command: | diff --git a/.buildkite/x-pack/pipeline.xpack.filebeat.yml b/.buildkite/x-pack/pipeline.xpack.filebeat.yml index 471dc32b4e5..1707bca29ec 100644 --- a/.buildkite/x-pack/pipeline.xpack.filebeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.filebeat.yml @@ -226,7 +226,7 @@ steps: key: "x-pack-filebeat-extended-tests" steps: - label: ":mac: MacOS x86_64 Unit Tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS).*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*(macOS).*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -246,7 +246,7 @@ steps: - label: ":mac: MacOS arm64 Unit Tests" skip: "https://github.com/elastic/beats/issues/33036" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS).*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*(macOS).*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -266,7 +266,7 @@ steps: - label: ":linux: Cloud (MODULE) Tests" key: "x-pack-filebeat-extended-cloud-test" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ command: | set -euo pipefail # defines the MODULE env var based on what's changed in a PR diff --git a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml index 3a833f369e2..3ccb94bdf5e 100644 --- a/.buildkite/x-pack/pipeline.xpack.heartbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.heartbeat.yml @@ -197,7 +197,7 @@ steps: - group: "x-pack/heartbeat macOS Extended Tests" key: "x-pack-heartbeat-extended-tests-macos" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - label: ":mac: x-pack/heartbeat macOS x86_64 Unit Tests" diff --git a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml index bc9ed7040e8..fb75291dde0 100644 --- a/.buildkite/x-pack/pipeline.xpack.metricbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.metricbeat.yml @@ -208,7 +208,7 @@ steps: if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*(macOS|aws).*/ steps: - label: ":mac: MacOS x86_64 Unit Tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.**/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.**/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -228,7 +228,7 @@ steps: - label: ":mac: MacOS arm64 Unit Tests" skip: "https://github.com/elastic/beats/issues/33036" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.**/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.**/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh @@ -249,7 +249,7 @@ steps: - label: ":linux: Cloud (MODULE) Tests" key: "x-pack-metricbeat-extended-cloud-test" skip: "doesn't belong in a stage in Jenkins, thus skipped" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ # see link in Jenkins: https://github.com/elastic/beats/blob/ccd7b135df70358f8a02393d9bd8b716428b8048/x-pack/metricbeat/Jenkinsfile.yml#L39 # additionally skipping due to https://github.com/elastic/ingest-dev/issues/3170 command: | @@ -282,7 +282,7 @@ steps: skip: "https://github.com/elastic/beats/issues/36425" # see commented out section in Jenkins: https://github.com/elastic/beats/blob/main/x-pack/metricbeat/Jenkinsfile.yml#L41-L52 # additionally skipping due to https://github.com/elastic/ingest-dev/issues/3170 - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*aws.*/ command: | set -euo pipefail # defines the MODULE env var based on what's changed in a PR diff --git a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml index 80bf88843d7..117824689a9 100644 --- a/.buildkite/x-pack/pipeline.xpack.packetbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.packetbeat.yml @@ -264,7 +264,7 @@ steps: - group: "x-pack/packetbeat MacOS Extended Tests" key: "x-pack-packetbeat-extended-macos-tests" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - label: ":mac: MacOS Unit Tests" key: "extended-macos-unit-tests" From c65af5d135e32bf428ebd0ed154910d7cddd6432 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Tue, 14 May 2024 14:32:07 +0300 Subject: [PATCH 305/313] [BK] - Remove osx steps from branch execution (#39552) Signed-off-by: Alexandros Sapranidis --- .buildkite/filebeat/filebeat-pipeline.yml | 2 +- .buildkite/heartbeat/heartbeat-pipeline.yml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.buildkite/filebeat/filebeat-pipeline.yml b/.buildkite/filebeat/filebeat-pipeline.yml index f2b75ad2b05..c7ac3072a84 100644 --- a/.buildkite/filebeat/filebeat-pipeline.yml +++ b/.buildkite/filebeat/filebeat-pipeline.yml @@ -133,7 +133,7 @@ steps: steps: - label: ":mac: Filebeat macOS x86_64 Unit Tests" key: "macos-unit-tests-extended" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ command: | set -euo pipefail source .buildkite/scripts/install_macos_tools.sh diff --git a/.buildkite/heartbeat/heartbeat-pipeline.yml b/.buildkite/heartbeat/heartbeat-pipeline.yml index 136195e74b1..cdb3959c253 100644 --- a/.buildkite/heartbeat/heartbeat-pipeline.yml +++ b/.buildkite/heartbeat/heartbeat-pipeline.yml @@ -166,8 +166,7 @@ steps: - group: "Heartbeat Extended Testing MacOS" key: "heartbeat-extended-tests-macos" - if: build.env("BUILDKITE_PULL_REQUEST") == "false" || build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ - + if: build.env("GITHUB_PR_LABELS") =~ /.*macOS.*/ steps: - label: ":mac: Heartbeat MacOS Unit Tests" key: "macos-extended" From 30e7239b3c7c75503c99a03b5804d3bcdca52745 Mon Sep 17 00:00:00 2001 From: Alexandros Sapranidis Date: Tue, 14 May 2024 16:02:33 +0300 Subject: [PATCH 306/313] Remove unused env vars from pipelines (#39534) Signed-off-by: Alexandros Sapranidis --- .buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml | 9 --------- .buildkite/x-pack/pipeline.xpack.osquerybeat.yml | 1 - 2 files changed, 10 deletions(-) diff --git a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml index b01d6de53e2..415c3947874 100644 --- a/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.dockerlogbeat.yml @@ -7,17 +7,8 @@ env: GCP_DEFAULT_MACHINE_TYPE: "c2d-highcpu-8" GCP_HI_PERF_MACHINE_TYPE: "c2d-highcpu-16" - GCP_WIN_MACHINE_TYPE: "n2-standard-8" - IMAGE_MACOS_ARM: "generic-13-ventura-arm" - IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_RHEL9_X86_64: "family/platform-ingest-beats-rhel-9" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" - IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" - IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" - IMAGE_WIN_2016: "family/platform-ingest-beats-windows-2016" - IMAGE_WIN_2019: "family/platform-ingest-beats-windows-2019" - IMAGE_WIN_2022: "family/platform-ingest-beats-windows-2022" # Other deps ASDF_MAGE_VERSION: 1.15.0 diff --git a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml index 7c740ecd5cb..219bfe5910d 100644 --- a/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml +++ b/.buildkite/x-pack/pipeline.xpack.osquerybeat.yml @@ -10,7 +10,6 @@ env: IMAGE_MACOS_ARM: "generic-13-ventura-arm" IMAGE_MACOS_X86_64: "generic-13-ventura-x64" - IMAGE_UBUNTU_ARM_64: "platform-ingest-beats-ubuntu-2204-aarch64" IMAGE_UBUNTU_X86_64: "family/platform-ingest-beats-ubuntu-2204" IMAGE_WIN_10: "family/platform-ingest-beats-windows-10" IMAGE_WIN_11: "family/platform-ingest-beats-windows-11" From 23d106637069322b39b7f808b3940a788c82660c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 May 2024 14:06:15 -0400 Subject: [PATCH 307/313] build(deps): bump github.com/elastic/elastic-agent-libs from 0.9.4 to 0.9.7 (#39424) * build(deps): bump github.com/elastic/elastic-agent-libs Bumps [github.com/elastic/elastic-agent-libs](https://github.com/elastic/elastic-agent-libs) from 0.9.4 to 0.9.7. - [Release notes](https://github.com/elastic/elastic-agent-libs/releases) - [Commits](https://github.com/elastic/elastic-agent-libs/compare/v0.9.4...v0.9.7) --- updated-dependencies: - dependency-name: github.com/elastic/elastic-agent-libs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Update NOTICE.txt --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] Co-authored-by: Craig MacKenzie --- NOTICE.txt | 42 ++++++++++++++++++++++++++++++++++++------ go.mod | 5 +++-- go.sum | 18 ++++++++++++------ 3 files changed, 51 insertions(+), 14 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 4e58644e883..3ac32e78f65 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -12969,11 +12969,11 @@ SOFTWARE -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-libs -Version: v0.9.4 +Version: v0.9.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-libs@v0.9.4/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-libs@v0.9.7/LICENSE: Apache License Version 2.0, January 2004 @@ -25256,11 +25256,11 @@ THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : go.uber.org/zap -Version: v1.26.0 +Version: v1.27.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.uber.org/zap@v1.26.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/go.uber.org/zap@v1.27.0/LICENSE: Copyright (c) 2016-2017 Uber Technologies, Inc. @@ -38885,6 +38885,36 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-windows@v1.0 limitations under the License. +-------------------------------------------------------------------------------- +Dependency : github.com/elastic/pkcs8 +Version: v1.0.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/elastic/pkcs8@v1.0.0/LICENSE: + +The MIT License (MIT) + +Copyright (c) 2014 youmark + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + -------------------------------------------------------------------------------- Dependency : github.com/elazarl/goproxy Version: v0.0.0-20180725130230-947c36da3153 @@ -54355,11 +54385,11 @@ Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/trace@v1. -------------------------------------------------------------------------------- Dependency : go.uber.org/goleak -Version: v1.2.0 +Version: v1.3.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.uber.org/goleak@v1.2.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.uber.org/goleak@v1.3.0/LICENSE: The MIT License (MIT) diff --git a/go.mod b/go.mod index 03b58732d53..9c9bd467104 100644 --- a/go.mod +++ b/go.mod @@ -152,7 +152,7 @@ require ( go.etcd.io/bbolt v1.3.6 go.uber.org/atomic v1.11.0 go.uber.org/multierr v1.11.0 - go.uber.org/zap v1.26.0 + go.uber.org/zap v1.27.0 golang.org/x/crypto v0.22.0 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 golang.org/x/mod v0.14.0 @@ -206,7 +206,7 @@ require ( github.com/elastic/bayeux v1.0.5 github.com/elastic/ebpfevents v0.6.0 github.com/elastic/elastic-agent-autodiscover v0.6.14 - github.com/elastic/elastic-agent-libs v0.9.4 + github.com/elastic/elastic-agent-libs v0.9.7 github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 github.com/elastic/elastic-agent-system-metrics v0.9.2 github.com/elastic/go-elasticsearch/v8 v8.13.1 @@ -291,6 +291,7 @@ require ( github.com/eapache/queue v1.1.0 // indirect github.com/elastic/elastic-transport-go/v8 v8.5.0 // indirect github.com/elastic/go-windows v1.0.1 // indirect + github.com/elastic/pkcs8 v1.0.0 // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/fearful-symmetry/gomsr v0.0.1 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect diff --git a/go.sum b/go.sum index 86384f4c6a7..9a8aa1c2ac3 100644 --- a/go.sum +++ b/go.sum @@ -555,8 +555,8 @@ github.com/elastic/elastic-agent-autodiscover v0.6.14 h1:0zJYNyv9GKTOiNqCHqEVboP github.com/elastic/elastic-agent-autodiscover v0.6.14/go.mod h1:39/fHHlnyTK6oUNZfAhxJwBTVahO9tNasEIjzsxGMu8= github.com/elastic/elastic-agent-client/v7 v7.8.1 h1:J9wZc/0mUvSEok0X5iR5+n60Jgb+AWooKddb3XgPWqM= github.com/elastic/elastic-agent-client/v7 v7.8.1/go.mod h1:axl1nkdqc84YRFkeJGD9jExKNPUrOrzf3DFo2m653nY= -github.com/elastic/elastic-agent-libs v0.9.4 h1:I6c1NAj3grJ1YZgo+U04w0csMAWGIn6eZTb23Z5MbAI= -github.com/elastic/elastic-agent-libs v0.9.4/go.mod h1:SkMnpLm+tXybBrIWK6f3rcOhrDIztLbYCV46m8gwc8g= +github.com/elastic/elastic-agent-libs v0.9.7 h1:LZdfxbq724Y1zAdE3COp+OIPwU8SquOCLIXpI/twcdQ= +github.com/elastic/elastic-agent-libs v0.9.7/go.mod h1:xhHF9jeWhPzKPtEHN+epKjdiZi0bCbACLxwkp1aHMpc= github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3 h1:sb+25XJn/JcC9/VL8HX4r4QXSUq4uTNzGS2kxOE7u1U= github.com/elastic/elastic-agent-shipper-client v0.5.1-0.20230228231646-f04347b666f3/go.mod h1:rWarFM7qYxJKsi9WcV6ONcFjH/NA3niDNpTxO+8/GVI= github.com/elastic/elastic-agent-system-metrics v0.9.2 h1:/tvTKOt55EerU0WwGFoDhBlyWLgxyv7d8xCbny0bciw= @@ -598,6 +598,8 @@ github.com/elastic/gosigar v0.14.3 h1:xwkKwPia+hSfg9GqrCUKYdId102m9qTJIIr7egmK/u github.com/elastic/gosigar v0.14.3/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/mito v1.11.0 h1:thk9uxsTuTFeihMf3I6WLIeZyrBLQYuisWRYRUZl6Ec= github.com/elastic/mito v1.11.0/go.mod h1:J+wCf4HccW2YoSFmZMGu+d06gN+WmnIlj5ehBqine74= +github.com/elastic/pkcs8 v1.0.0 h1:HhitlUKxhN288kcNcYkjW6/ouvuwJWd9ioxpjnD9jVA= +github.com/elastic/pkcs8 v1.0.0/go.mod h1:ipsZToJfq1MxclVTwpG7U/bgeDtf+0HkUiOxebk95+0= github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3 h1:ChPwRVv1RR4a0cxoGjKcyWjTEpxYfm5gydMIzo32cAw= github.com/elastic/ristretto v0.1.1-0.20220602190459-83b0895ca5b3/go.mod h1:RAy2GVV4sTWVlNMavv3xhLsk18rxhfhDnombTe6EF5c= github.com/elastic/sarama v1.19.1-0.20220310193331-ebc2b0d8eef3 h1:FzA0/n4iMt8ojGDGRoiFPSHFvvdVIvxOxyLtiFnrLBM= @@ -1765,8 +1767,8 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= @@ -1782,8 +1784,8 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20180505025534-4ec37c66abab/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1822,6 +1824,7 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1960,6 +1963,7 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2112,6 +2116,7 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -2123,6 +2128,7 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 3b4bb5443e2c5838af9dc822147f35c278333c1a Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Wed, 15 May 2024 16:57:55 +0930 Subject: [PATCH 308/313] x-pack/filebeat/input/cel: add http metrics collection (#39503) --- CHANGELOG.next.asciidoc | 1 + .../filebeat/docs/inputs/input-cel.asciidoc | 39 ++++++++++++++----- x-pack/filebeat/input/cel/input.go | 15 ++++--- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 2b571875e34..2c2b126f7b6 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -266,6 +266,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] - Ensure all responses sent by HTTP Endpoint are HTML-escaped. {pull}39329[39329] - Update CEL mito extensions to v1.11.0 to improve type checking. {pull}39460[39460] - Improve logging of request and response with request trace logging in error conditions. {pull}39455[39455] +- Add HTTP metrics to CEL input. {issue}39501[39501] {pull}39503[39503] *Auditbeat* diff --git a/x-pack/filebeat/docs/inputs/input-cel.asciidoc b/x-pack/filebeat/docs/inputs/input-cel.asciidoc index a6adf5e4ad9..7ec869e42cc 100644 --- a/x-pack/filebeat/docs/inputs/input-cel.asciidoc +++ b/x-pack/filebeat/docs/inputs/input-cel.asciidoc @@ -765,15 +765,36 @@ observe the activity of the input. [options="header"] |======= -| Metric | Description -| `resource` | URL or path of the input resource. -| `cel_executions` | Number times the CEL program has been executed. -| `batches_received_total` | Number of event arrays received. -| `events_received_total` | Number of events received. -| `batches_published_total` | Number of event arrays published. -| `events_published_total` | Number of events published. -| `cel_processing_time` | Histogram of the elapsed successful CEL program processing times in nanoseconds. -| `batch_processing_time` | Histogram of the elapsed successful batch processing times in nanoseconds (time of receipt to time of ACK for non-empty batches). +| Metric | Description +| `resource` | URL or path of the input resource. +| `cel_executions` | Number times the CEL program has been executed. +| `batches_received_total` | Number of event arrays received. +| `events_received_total` | Number of events received. +| `batches_published_total` | Number of event arrays published. +| `events_published_total` | Number of events published. +| `cel_processing_time` | Histogram of the elapsed successful CEL program processing times in nanoseconds. +| `batch_processing_time` | Histogram of the elapsed successful batch processing times in nanoseconds (time of receipt to time of ACK for non-empty batches). +| `http_request_total` | Total number of processed requests. +| `http_request_errors_total` | Total number of request errors. +| `http_request_delete_total` | Total number of `DELETE` requests. +| `http_request_get_total` | Total number of `GET` requests. +| `http_request_head_total` | Total number of `HEAD` requests. +| `http_request_options_total` | Total number of `OPTIONS` requests. +| `http_request_patch_total` | Total number of `PATCH` requests. +| `http_request_post_total` | Total number of `POST` requests. +| `http_request_put_total` | Total number of `PUT` requests. +| `http_request_body_bytes_total` | Total of the requests body size. +| `http_request_body_bytes` | Histogram of the requests body size. +| `http_response_total` | Total number of responses received. +| `http_response_errors_total` | Total number of response errors. +| `http_response_1xx_total` | Total number of `1xx` responses. +| `http_response_2xx_total` | Total number of `2xx` responses. +| `http_response_3xx_total` | Total number of `3xx` responses. +| `http_response_4xx_total` | Total number of `4xx` responses. +| `http_response_5xx_total` | Total number of `5xx` responses. +| `http_response_body_bytes_total` | Total of the responses body size. +| `http_response_body_bytes` | Histogram of the responses body size. +| `http_round_trip_time` | Histogram of the round trip time. |======= ==== Developer tools diff --git a/x-pack/filebeat/input/cel/input.go b/x-pack/filebeat/input/cel/input.go index 88d7a20b458..759809e6e80 100644 --- a/x-pack/filebeat/input/cel/input.go +++ b/x-pack/filebeat/input/cel/input.go @@ -42,6 +42,7 @@ import ( "github.com/elastic/beats/v7/libbeat/monitoring/inputmon" "github.com/elastic/beats/v7/libbeat/version" "github.com/elastic/beats/v7/x-pack/filebeat/input/internal/httplog" + "github.com/elastic/beats/v7/x-pack/filebeat/input/internal/httpmon" "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/elastic-agent-libs/monitoring" @@ -122,7 +123,7 @@ func (i input) run(env v2.Context, src *source, cursor map[string]interface{}, p cfg := src.cfg log := env.Logger.With("input_url", cfg.Resource.URL) - metrics := newInputMetrics(env.ID) + metrics, reg := newInputMetrics(env.ID) defer metrics.Close() ctx := ctxtool.FromCanceller(env.Cancelation) @@ -132,7 +133,7 @@ func (i input) run(env v2.Context, src *source, cursor map[string]interface{}, p cfg.Resource.Tracer.Filename = strings.ReplaceAll(cfg.Resource.Tracer.Filename, "*", id) } - client, trace, err := newClient(ctx, cfg, log) + client, trace, err := newClient(ctx, cfg, log, reg) if err != nil { return err } @@ -686,7 +687,7 @@ func getLimit(which string, rateLimit map[string]interface{}, log *logp.Logger) return limit, true } -func newClient(ctx context.Context, cfg config, log *logp.Logger) (*http.Client, *httplog.LoggingRoundTripper, error) { +func newClient(ctx context.Context, cfg config, log *logp.Logger, reg *monitoring.Registry) (*http.Client, *httplog.LoggingRoundTripper, error) { if !wantClient(cfg) { return nil, nil, nil } @@ -729,6 +730,10 @@ func newClient(ctx context.Context, cfg config, log *logp.Logger) (*http.Client, c.Transport = trace } + if reg != nil { + c.Transport = httpmon.NewMetricsRoundTripper(c.Transport, reg) + } + c.CheckRedirect = checkRedirect(cfg.Resource, log) if cfg.Resource.Retry.getMaxAttempts() > 1 { @@ -1070,7 +1075,7 @@ type inputMetrics struct { batchProcessingTime metrics.Sample // histogram of the elapsed successful batch processing times in nanoseconds (time of receipt to time of ACK for non-empty batches). } -func newInputMetrics(id string) *inputMetrics { +func newInputMetrics(id string) (*inputMetrics, *monitoring.Registry) { reg, unreg := inputmon.NewInputRegistry(inputName, id, nil) out := &inputMetrics{ unregister: unreg, @@ -1088,7 +1093,7 @@ func newInputMetrics(id string) *inputMetrics { _ = adapter.NewGoMetrics(reg, "batch_processing_time", adapter.Accept). Register("histogram", metrics.NewHistogram(out.batchProcessingTime)) - return out + return out, reg } func (m *inputMetrics) Close() { From 35ed4d7dac23684829da3659bae4ead311c64d08 Mon Sep 17 00:00:00 2001 From: Gabriel Pop <94497545+gpop63@users.noreply.github.com> Date: Wed, 15 May 2024 12:52:15 +0300 Subject: [PATCH 309/313] Fix the AWS SDK dependencies issue causing the "not found, ResolveEndpointV2" error (#39454) * update deps * use pointer * convert contentLength type * make update --------- Co-authored-by: lucian-ioan --- NOTICE.txt | 104 ++++++++--------- go.mod | 52 ++++----- go.sum | 105 +++++++++--------- .../filebeat/input/awss3/s3_objects_test.go | 4 +- x-pack/metricbeat/module/aws/utils.go | 2 +- 5 files changed, 134 insertions(+), 133 deletions(-) diff --git a/NOTICE.txt b/NOTICE.txt index 3ac32e78f65..b25883debde 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -5256,11 +5256,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2@v1.26 -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/config -Version: v1.17.7 +Version: v1.27.11 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/config@v1.17.7/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/config@v1.27.11/LICENSE.txt: Apache License @@ -5468,11 +5468,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/confi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/credentials -Version: v1.12.20 +Version: v1.17.11 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/credentials@v1.12.20/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/credentials@v1.17.11/LICENSE.txt: Apache License @@ -5680,11 +5680,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/crede -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/feature/ec2/imds -Version: v1.12.17 +Version: v1.16.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.12.17/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.16.1/LICENSE.txt: Apache License @@ -5892,11 +5892,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/featu -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/feature/s3/manager -Version: v1.11.33 +Version: v1.16.15 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/feature/s3/manager@v1.11.33/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/feature/s3/manager@v1.16.15/LICENSE.txt: Apache License @@ -6104,11 +6104,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/featu -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/cloudformation -Version: v1.20.4 +Version: v1.50.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/cloudformation@v1.20.4/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/cloudformation@v1.50.0/LICENSE.txt: Apache License @@ -6316,11 +6316,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/cloudwatch -Version: v1.26.0 +Version: v1.38.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/cloudwatch@v1.26.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/cloudwatch@v1.38.0/LICENSE.txt: Apache License @@ -6528,11 +6528,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs -Version: v1.15.5 +Version: v1.35.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs@v1.15.5/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs@v1.35.1/LICENSE.txt: Apache License @@ -6740,11 +6740,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/costexplorer -Version: v1.18.4 +Version: v1.38.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/costexplorer@v1.18.4/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/costexplorer@v1.38.0/LICENSE.txt: Apache License @@ -6952,11 +6952,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/ec2 -Version: v1.36.1 +Version: v1.160.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/ec2@v1.36.1/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/ec2@v1.160.0/LICENSE.txt: Apache License @@ -7164,11 +7164,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 -Version: v1.18.4 +Version: v1.30.5 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2@v1.18.4/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2@v1.30.5/LICENSE.txt: Apache License @@ -7376,11 +7376,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/health -Version: v1.17.0 +Version: v1.24.4 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/health@v1.17.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/health@v1.24.4/LICENSE.txt: Apache License @@ -7588,11 +7588,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/iam -Version: v1.18.4 +Version: v1.32.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/iam@v1.18.4/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/iam@v1.32.0/LICENSE.txt: Apache License @@ -7800,11 +7800,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/kinesis -Version: v1.15.8 +Version: v1.27.4 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/kinesis@v1.15.8/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/kinesis@v1.27.4/LICENSE.txt: Apache License @@ -8012,11 +8012,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/organizations -Version: v1.15.2 +Version: v1.27.3 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/organizations@v1.15.2/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/organizations@v1.27.3/LICENSE.txt: Apache License @@ -8224,11 +8224,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/rds -Version: v1.20.1 +Version: v1.78.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/rds@v1.20.1/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/rds@v1.78.0/LICENSE.txt: Apache License @@ -8436,11 +8436,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi -Version: v1.13.5 +Version: v1.21.4 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi@v1.13.5/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi@v1.21.4/LICENSE.txt: Apache License @@ -8648,11 +8648,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/s3 -Version: v1.27.11 +Version: v1.53.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/s3@v1.27.11/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/s3@v1.53.1/LICENSE.txt: Apache License @@ -8860,11 +8860,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/sqs -Version: v1.18.4 +Version: v1.31.4 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sqs@v1.18.4/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sqs@v1.31.4/LICENSE.txt: Apache License @@ -9072,11 +9072,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/sts -Version: v1.16.19 +Version: v1.28.6 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sts@v1.16.19/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sts@v1.28.6/LICENSE.txt: Apache License @@ -34577,11 +34577,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go@v1.38.60 -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream -Version: v1.4.8 +Version: v1.6.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream@v1.4.8/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream@v1.6.2/LICENSE.txt: Apache License @@ -35213,11 +35213,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/inter -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/internal/ini -Version: v1.3.24 +Version: v1.8.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/ini@v1.3.24/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/ini@v1.8.0/LICENSE.txt: Apache License @@ -35425,11 +35425,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/inter -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/internal/v4a -Version: v1.0.14 +Version: v1.3.5 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/v4a@v1.0.14/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/internal/v4a@v1.3.5/LICENSE.txt: Apache License @@ -35849,11 +35849,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/internal/checksum -Version: v1.1.18 +Version: v1.3.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/checksum@v1.1.18/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/checksum@v1.3.7/LICENSE.txt: Apache License @@ -36273,11 +36273,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/internal/s3shared -Version: v1.13.17 +Version: v1.17.5 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/s3shared@v1.13.17/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/s3shared@v1.17.5/LICENSE.txt: Apache License @@ -36485,11 +36485,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/sso -Version: v1.11.23 +Version: v1.20.5 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sso@v1.11.23/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sso@v1.20.5/LICENSE.txt: Apache License @@ -36697,11 +36697,11 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- Dependency : github.com/aws/aws-sdk-go-v2/service/ssooidc -Version: v1.13.5 +Version: v1.23.4 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.13.5/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.23.4/LICENSE.txt: Apache License diff --git a/go.mod b/go.mod index 9c9bd467104..ac01ff0dd30 100644 --- a/go.mod +++ b/go.mod @@ -30,20 +30,20 @@ require ( github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 github.com/aws/aws-lambda-go v1.44.0 github.com/aws/aws-sdk-go-v2 v1.26.1 - github.com/aws/aws-sdk-go-v2/config v1.17.7 - github.com/aws/aws-sdk-go-v2/credentials v1.12.20 - github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.26.0 - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.5 - github.com/aws/aws-sdk-go-v2/service/costexplorer v1.18.4 - github.com/aws/aws-sdk-go-v2/service/ec2 v1.36.1 - github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4 - github.com/aws/aws-sdk-go-v2/service/iam v1.18.4 - github.com/aws/aws-sdk-go-v2/service/organizations v1.15.2 - github.com/aws/aws-sdk-go-v2/service/rds v1.20.1 - github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.13.5 - github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 - github.com/aws/aws-sdk-go-v2/service/sqs v1.18.4 - github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 + github.com/aws/aws-sdk-go-v2/config v1.27.11 + github.com/aws/aws-sdk-go-v2/credentials v1.17.11 + github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 + github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.35.1 + github.com/aws/aws-sdk-go-v2/service/costexplorer v1.38.0 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.160.0 + github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 + github.com/aws/aws-sdk-go-v2/service/iam v1.32.0 + github.com/aws/aws-sdk-go-v2/service/organizations v1.27.3 + github.com/aws/aws-sdk-go-v2/service/rds v1.78.0 + github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.21.4 + github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 + github.com/aws/aws-sdk-go-v2/service/sqs v1.31.4 + github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 github.com/awslabs/goformation/v4 v4.1.0 github.com/blakesmith/ar v0.0.0-20150311145944-8bd4349a67f2 github.com/bsm/sarama-cluster v2.1.14-0.20180625083203-7e67d87a6b3f+incompatible @@ -196,11 +196,11 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 github.com/Azure/go-autorest/autorest/adal v0.9.21 github.com/apache/arrow/go/v14 v14.0.2 - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 - github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.4 - github.com/aws/aws-sdk-go-v2/service/health v1.17.0 - github.com/aws/aws-sdk-go-v2/service/kinesis v1.15.8 + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 + github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0 + github.com/aws/aws-sdk-go-v2/service/health v1.24.4 + github.com/aws/aws-sdk-go-v2/service/kinesis v1.27.4 github.com/aws/smithy-go v1.20.2 github.com/awslabs/kinesis-aggregation/go/v2 v2.0.0-20220623125934-28468a6701b5 github.com/elastic/bayeux v1.0.5 @@ -265,17 +265,17 @@ require ( github.com/apache/thrift v0.19.0 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/aws/aws-sdk-go v1.38.60 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cilium/ebpf v0.13.2 // indirect diff --git a/go.sum b/go.sum index 9a8aa1c2ac3..a5ced4317ae 100644 --- a/go.sum +++ b/go.sum @@ -290,90 +290,89 @@ github.com/aws/aws-sdk-go v1.38.60 h1:MgyEsX0IMwivwth1VwEnesBpH0vxbjp5a0w1lurMOX github.com/aws/aws-sdk-go v1.38.60/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.9.0/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.16.3/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= -github.com/aws/aws-sdk-go-v2 v1.16.6/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= -github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3/go.mod h1:gNsR5CaXKmQSSzrmGxmwmct/r+ZBfbxorAuXYsj/M5Y= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8 h1:tcFliCWne+zOuUfKNRn8JdFBuWPDuISDH08wD2ULkhk= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.8/go.mod h1:JTnlBSot91steJeti4ryyu/tLd4Sk84O5W22L7O2EQU= -github.com/aws/aws-sdk-go-v2/config v1.17.7 h1:odVM52tFHhpqZBKNjVW5h+Zt1tKHbhdTQRb+0WHrNtw= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg= github.com/aws/aws-sdk-go-v2/config v1.17.7/go.mod h1:dN2gja/QXxFF15hQreyrqYhLBaQo1d9ZKe/v/uplQoI= -github.com/aws/aws-sdk-go-v2/credentials v1.12.20 h1:9+ZhlDY7N9dPnUmf7CDfW9In4sW5Ff3bh7oy4DzS1IE= +github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= +github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= github.com/aws/aws-sdk-go-v2/credentials v1.12.20/go.mod h1:UKY5HyIux08bbNA7Blv4PcXQ8cTkGh7ghHMFklaviR4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 h1:r08j4sbZu/RVi+BNxkBJwPMUYY3P8mgSDuKkZ/ZN1lE= +github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= +github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33 h1:fAoVmNGhir6BR+RU0/EI+6+D7abM+MCwWf8v4ip5jNI= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.33/go.mod h1:84XgODVR8uRhmOnUkKGUZKqIMxmjmLOR8Uyp7G/TPwc= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10/go.mod h1:F+EZtuIwjlv35kRJPyBGcsA4f7bnSoz15zOQ2lJq1Z4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.13/go.mod h1:wLLesU+LdMZDM3U0PP9vZXJW39zmD/7L4nY2pSrYZ/g= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 h1:7Zwtt/lP3KNRkeZre7soMELMGNoBrutx8nobg1jKWmo= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15/go.mod h1:436h2adoHb57yd+8W+gYPrrA9U/R/SuAuOO42Ushzhw= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4/go.mod h1:8glyUqVIM4AmeenIsPo0oVh3+NUwnsQml2OFupfQW+0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.7/go.mod h1:93Uot80ddyVzSl//xEJreNKMhxntr71WtR3v/A1cRYk= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 h1:wj5Rwc05hvUSvKuOF29IYb9QrCLjU+rHAy/x/o0DK2c= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14 h1:ZSIPAkAsCCjYrhqfw2+lNzWDzxzHXEckFkTePL5RSWQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.14/go.mod h1:AyGgqiKv9ECM6IZeNQtdT8NnMvUb3/2wokeq2Fgryto= -github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.4 h1:faP794ma9ZY/24XAV8cm/lkQzRFSg3zBHCi5Nc8+CaM= -github.com/aws/aws-sdk-go-v2/service/cloudformation v1.20.4/go.mod h1:ybjChNDMfPtc7f8ILTb+ov6CpE/KtAae9fD8HHtYfzU= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.26.0 h1:sSzrsKQULJmPtmu6By4wR6g0701nGqonssKOy35uOd0= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.26.0/go.mod h1:t5mizLPjCYafXoHCXOHJU7z4OvLbY70Echvb1ciBTV4= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.5 h1:aPK8IBVKeozo/pNGshT8xOJ2V3Y7ykOM49QcY0vhUSM= -github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.5/go.mod h1:ErjxucZaraVbYm66xxub00qmGBw7md2RFqy6624KbR8= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.18.4 h1:jbfG3cbq1kiK1/OAfUh4zf1ADtAU8KoeOPfF94S96pU= -github.com/aws/aws-sdk-go-v2/service/costexplorer v1.18.4/go.mod h1:yC5cDNa3xzSh5NIU5x0NBBo6QkcsaM0tuPNCczeUPoU= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.36.1 h1:FS8Ja6LuLDVHcX+rmoNpOXqYb52N2A5DwQy7Dgduq4Q= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.36.1/go.mod h1:KOy1O7Fc2+GRgsbn/Kjr15vYDVXMEQALBaPRia3twSY= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4 h1:ZBYifRGfN3dOKzvk0+XJiUKOFzqoJddYqCVsN5quCh4= -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.18.4/go.mod h1:9wKR88sRRyxrUAw5iVSDTfcCz90BLEFcAiyzP4v39uY= -github.com/aws/aws-sdk-go-v2/service/health v1.17.0 h1:DlG9888p6n8Fizx8Vuw1qalBOBtjoDk70UzqyilQ7+s= -github.com/aws/aws-sdk-go-v2/service/health v1.17.0/go.mod h1:z7JTQWRaBIdYYxK8TqDi4MKYYl04uI+jvTJuMEKIsL0= -github.com/aws/aws-sdk-go-v2/service/iam v1.18.4 h1:E41guA79mjEbwJdh0zXz1d8+Zt4zxRr+b1ipiVbKXzs= -github.com/aws/aws-sdk-go-v2/service/iam v1.18.4/go.mod h1:FpNvAfCZyIQ3qeNJUOw4CShKvdizHblXqAvSk0qmyL4= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 h1:81KE7vaZzrl7yHBYHVEzYB8sypz11NMOZ40YlWvPxsU= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5/go.mod h1:LIt2rg7Mcgn09Ygbdh/RdIm0rQ+3BNkbP1gyVMFtRK0= +github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0 h1:Ap5tOJfeAH1hO2UQc3X3uMlwP7uryFeZXMvZCXIlLSE= +github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0/go.mod h1:/v2KYdCW4BaHKayenaWEXOOdxItIwEA3oU0XzuQY3F0= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0 h1:vAfGwYFCcPDS9Bg7ckfMBer6olJLOHsOAVoKWpPIirs= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.38.0/go.mod h1:U12sr6Lt14X96f16t+rR52+2BdqtydwN7DjEEHRMjO0= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.35.1 h1:suWu59CRsDNhw2YXPpa6drYEetIUUIMUhkzHmucbCf8= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.35.1/go.mod h1:tZiRxrv5yBRgZ9Z4OOOxwscAZRFk5DgYhEcjX1QpvgI= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.38.0 h1:0q4pClt2ckd6awhQYEysexryCmA7q2HMI0O5dBrA5B8= +github.com/aws/aws-sdk-go-v2/service/costexplorer v1.38.0/go.mod h1:uLOg0o57AyQQhZGtUKIlcBJOKE53mO9bXKyrM9dFhy4= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.160.0 h1:ooy0OFbrdSwgk32OFGPnvBwry5ySYCKkgTEbQ2hejs8= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.160.0/go.mod h1:xejKuuRDjz6z5OqyeLsz01MlOqqW7CqpAB4PabNvpu8= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5 h1:/x2u/TOx+n17U+gz98TOw1HKJom0EOqrhL4SjrHr0cQ= +github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.30.5/go.mod h1:e1McVqsud0JOERidvppLEHnuCdh/X6MRyL5L0LseAUk= +github.com/aws/aws-sdk-go-v2/service/health v1.24.4 h1:5QROeJylnNdBQxxYn4BPpbgoo3nXT+SMG3KvFd71O4s= +github.com/aws/aws-sdk-go-v2/service/health v1.24.4/go.mod h1:p489k/dsudsm+FK8MSFJYk0kMqY4h7tTE2YU/s6VN6E= +github.com/aws/aws-sdk-go-v2/service/iam v1.32.0 h1:ZNlfPdw849gBo/lvLFbEEvpTJMij0LXqiNWZ+lIamlU= +github.com/aws/aws-sdk-go-v2/service/iam v1.32.0/go.mod h1:aXWImQV0uTW35LM0A/T4wEg6R1/ReXUu4SM6/lUHYK0= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.9/go.mod h1:a9j48l6yL5XINLHLcOKInjdvknN+vWqPBxqeIDw7ktw= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18 h1:BBYoNQt2kUZUUK4bIPsKrCcjVPUMNsgQpNAwhznK/zo= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.18/go.mod h1:NS55eQ4YixUJPTC+INxi2/jCqe1y2Uw3rnh9wEOVJxY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4/go.mod h1:uKkN7qmSIsNJVyMtxNQoCEYMvFEXbOg9fwCJPdfp2u8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 h1:ZMeFZ5yk+Ek+jNr1+uwCd2tG89t6oTS5yVWpa6yy2es= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7/go.mod h1:mxV05U+4JiHqIpGqqYXOHLPKUC6bDXC44bsUhNjOEwY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17 h1:HfVVR1vItaG6le+Bpw6P4midjBDMKnjMyZnw9MXYUcE= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 h1:f9RyWNtS8oH7cZlbn+/JNPpjUk5+5fLd5lM9M0i49Ys= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5/go.mod h1:h5CoMZV2VF297/VLhRhO1WF+XYWOzXo+4HsObA4HjBQ= github.com/aws/aws-sdk-go-v2/service/kinesis v1.6.0/go.mod h1:9O7UG2pELnP0hq35+Gd7XDjOLBkg7tmgRQ0y14ZjoJI= -github.com/aws/aws-sdk-go-v2/service/kinesis v1.15.8 h1:iXRv1ZOF6riNcy5UR6LPTaGa64wZQH8tKj5LHsiajY8= -github.com/aws/aws-sdk-go-v2/service/kinesis v1.15.8/go.mod h1:oWvoK8MyYnXi6ZxSpgU7kFxIPGX8EfbCrdQCNgPnhCc= -github.com/aws/aws-sdk-go-v2/service/organizations v1.15.2 h1:lwVNtW6wmwa9iIH017Y9qMoGCcEtvDYJQGUO/1jlRBc= -github.com/aws/aws-sdk-go-v2/service/organizations v1.15.2/go.mod h1:QV/cuhF5g2FEc7178E+mpmiqf7sS2aHCDGLNkVgHf2o= -github.com/aws/aws-sdk-go-v2/service/rds v1.20.1 h1:5PrsAmuF3r9bvZMxKxHnJlHSh0IYDAWEzpRRnDlE7nM= -github.com/aws/aws-sdk-go-v2/service/rds v1.20.1/go.mod h1:PBfhG/hYU+oCP1uT7fNfaqaAvxQGbB0POqh1GE/7OdM= -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.13.5 h1:nAHv/rx0pSqpECdrNtmKKb7RzYOpqXda+Dt8xBJifiM= -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.13.5/go.mod h1:LQ8mizR4n/TdYBwmU4ZXfbKceeBSrdIzZBM7jZqMK0U= -github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11 h1:3/gm/JTX9bX8CpzTgIlrtYpB3EVBDxyg/GY/QdcIEZw= +github.com/aws/aws-sdk-go-v2/service/kinesis v1.27.4 h1:Oe8awBiS/iitcsRJB5+DHa3iCxoA0KwJJf0JNrYMINY= +github.com/aws/aws-sdk-go-v2/service/kinesis v1.27.4/go.mod h1:RCZCSFbieSgNG1RKegO26opXV4EXyef/vNBVJsUyHuw= +github.com/aws/aws-sdk-go-v2/service/organizations v1.27.3 h1:CnPWlONzFX9/yO6IGuKg9sWUE8WhKztYRFbhmOHXjJI= +github.com/aws/aws-sdk-go-v2/service/organizations v1.27.3/go.mod h1:hUHSXe9HFEmLfHrXndAX5e69rv0nBsg22VuNQYl0JLM= +github.com/aws/aws-sdk-go-v2/service/rds v1.78.0 h1:EfurrcA19HaB9gZYd157DiozoPfkX2CH5/QnDZqNFrY= +github.com/aws/aws-sdk-go-v2/service/rds v1.78.0/go.mod h1:Rw15qGaGWu3jO0dOz7JyvdOEjgae//YrJxVWLYGynvg= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.21.4 h1:c1jtPWZSmgMmPkCgwv67GE0ugdEgnLVo/BHR1wl3Dm0= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.21.4/go.mod h1:FWw+Jnx+SlpsrU/NQ/f7f+1RdixTApZiU2o9FOubiDQ= github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo= -github.com/aws/aws-sdk-go-v2/service/sqs v1.18.4 h1:/O5+Nzs3k9gVx7gGUblbGf7rHZz71tYaOq9czgBaQZs= -github.com/aws/aws-sdk-go-v2/service/sqs v1.18.4/go.mod h1:j65jgKI0Gnc6SO25l2q0qV+X3b9S40571AOZ53bEXRI= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 h1:pwvCchFUEnlceKIgPUouBJwK81aCkQ8UDMORfeFtW10= +github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 h1:6cnno47Me9bRykw9AEv9zkXE+5or7jz8TsskTTccbgc= +github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1/go.mod h1:qmdkIIAC+GCLASF7R2whgNrJADz0QZPX+Seiw/i4S3o= +github.com/aws/aws-sdk-go-v2/service/sqs v1.31.4 h1:mE2ysZMEeQ3ulHWs4mmc4fZEhOfeY1o6QXAfDqjbSgw= +github.com/aws/aws-sdk-go-v2/service/sqs v1.31.4/go.mod h1:lCN2yKnj+Sp9F6UzpoPPTir+tSaC9Jwf6LcmTqnXFZw= github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5 h1:GUnZ62TevLqIoDyHeiWj2P7EqaosgakBKVvWriIdLQY= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.5/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 h1:9pPi0PsFNAGILFfPCk8Y0iyEBGc6lu6OQ97U7hmdesg= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= -github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/awslabs/goformation/v3 v3.1.0/go.mod h1:hQ5RXo3GNm2laHWKizDzU5DsDy+yNcenSca2UxN0850= diff --git a/x-pack/filebeat/input/awss3/s3_objects_test.go b/x-pack/filebeat/input/awss3/s3_objects_test.go index d0b4021c7f8..df50726823f 100644 --- a/x-pack/filebeat/input/awss3/s3_objects_test.go +++ b/x-pack/filebeat/input/awss3/s3_objects_test.go @@ -38,8 +38,10 @@ func newS3Object(t testing.TB, filename, contentType string) (s3EventV2, *s3.Get func newS3GetObjectResponse(filename string, data []byte, contentType string) *s3.GetObjectOutput { r := bytes.NewReader(data) + contentLength := int64(r.Len()) + getObjectOutput := s3.GetObjectOutput{} - getObjectOutput.ContentLength = int64(r.Len()) + getObjectOutput.ContentLength = &contentLength getObjectOutput.Body = io.NopCloser(r) if contentType != "" { getObjectOutput.ContentType = &contentType diff --git a/x-pack/metricbeat/module/aws/utils.go b/x-pack/metricbeat/module/aws/utils.go index caf695f1cb9..4bcf0eee296 100644 --- a/x-pack/metricbeat/module/aws/utils.go +++ b/x-pack/metricbeat/module/aws/utils.go @@ -57,7 +57,7 @@ func GetListMetricsOutput(namespace string, regionName string, period time.Durat listMetricsInput := &cloudwatch.ListMetricsInput{ NextToken: nextToken, - IncludeLinkedAccounts: includeLinkedAccounts, + IncludeLinkedAccounts: &includeLinkedAccounts, } // To filter the results to show only metrics that have had data points published From d2ebffe80cea3a872cb30a2e2b7434cc682b68d4 Mon Sep 17 00:00:00 2001 From: Leszek Kubik <39905449+intxgo@users.noreply.github.com> Date: Wed, 15 May 2024 13:48:23 +0200 Subject: [PATCH 310/313] [winlogbeat] performance improvment; avoid rendering event message twice (#39544) * wineventlog performance improvment; avoid rendering message twice * ignore missing or mismatched parameter values * add comment * changelog * actually increase the buffer --- CHANGELOG.next.asciidoc | 1 + winlogbeat/sys/wineventlog/format_message.go | 40 ++++++++++----- .../sys/wineventlog/wineventlog_windows.go | 50 +++++++++++-------- 3 files changed, 59 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 2c2b126f7b6..2b870c03f99 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -309,6 +309,7 @@ https://github.com/elastic/beats/compare/v8.8.1\...main[Check the HEAD diff] *Winlogbeat* +- Use fixed size buffer at first pass for event parsing, improving throughput {issue}39530[39530] {pull}39544[39544] *Functionbeat* diff --git a/winlogbeat/sys/wineventlog/format_message.go b/winlogbeat/sys/wineventlog/format_message.go index e6502d384fa..9c1cf8254ac 100644 --- a/winlogbeat/sys/wineventlog/format_message.go +++ b/winlogbeat/sys/wineventlog/format_message.go @@ -75,23 +75,39 @@ func evtFormatMessage(metadataHandle EvtHandle, eventHandle EvtHandle, messageID valuesPtr = &values[0] } - // Determine the buffer size needed (given in WCHARs). - var bufferUsed uint32 - err := _EvtFormatMessage(metadataHandle, eventHandle, messageID, valuesCount, valuesPtr, messageFlag, 0, nil, &bufferUsed) - if err != windows.ERROR_INSUFFICIENT_BUFFER { //nolint:errorlint // This is an errno. - return "", fmt.Errorf("failed in EvtFormatMessage: %w", err) - } + // best guess render buffer size, 16KB, to avoid rendering message twice in most cases + const bestGuessRenderBufferSize = 1 << 14 + + // EvtFormatMessage operates with WCHAR buffer, assuming the size of the buffer in characters. + // https://docs.microsoft.com/en-us/windows/win32/api/winevt/nf-winevt-evtformatmessage + var bufferNeeded uint32 + bufferSize := uint32(bestGuessRenderBufferSize / 2) // Get a buffer from the pool and adjust its length. bb := sys.NewPooledByteBuffer() defer bb.Free() - // The documentation for EventFormatMessage specifies that the buffer is - // requested "in characters", and the buffer itself is LPWSTR, meaning the - // characters are WCHAR so double the value. - // https://docs.microsoft.com/en-us/windows/win32/api/winevt/nf-winevt-evtformatmessage - bb.Reserve(int(bufferUsed * 2)) + bb.Reserve(int(bufferSize * 2)) + + err := _EvtFormatMessage(metadataHandle, eventHandle, messageID, valuesCount, valuesPtr, messageFlag, bufferSize, bb.PtrAt(0), &bufferNeeded) + switch err { //nolint:errorlint // This is an errno or nil. + case nil: // OK + return sys.UTF16BytesToString(bb.Bytes()) + + // Ignore some errors so it can tolerate missing or mismatched parameter values. + case windows.ERROR_EVT_UNRESOLVED_VALUE_INSERT, + windows.ERROR_EVT_UNRESOLVED_PARAMETER_INSERT, + windows.ERROR_EVT_MAX_INSERTS_REACHED: + return sys.UTF16BytesToString(bb.Bytes()) + + case windows.ERROR_INSUFFICIENT_BUFFER: + bb.Reserve(int(bufferNeeded * 2)) + bufferSize = bufferNeeded + + default: + return "", fmt.Errorf("failed in EvtFormatMessage: %w", err) + } - err = _EvtFormatMessage(metadataHandle, eventHandle, messageID, valuesCount, valuesPtr, messageFlag, bufferUsed, bb.PtrAt(0), &bufferUsed) + err = _EvtFormatMessage(metadataHandle, eventHandle, messageID, valuesCount, valuesPtr, messageFlag, bufferSize, bb.PtrAt(0), &bufferNeeded) switch err { //nolint:errorlint // This is an errno or nil. case nil: // OK diff --git a/winlogbeat/sys/wineventlog/wineventlog_windows.go b/winlogbeat/sys/wineventlog/wineventlog_windows.go index 6b4abfaf5d1..22495f6bda2 100644 --- a/winlogbeat/sys/wineventlog/wineventlog_windows.go +++ b/winlogbeat/sys/wineventlog/wineventlog_windows.go @@ -239,15 +239,9 @@ func RenderEvent( // Only a single string is returned when rendering XML. err = FormatEventString(EvtFormatMessageXml, - eventHandle, providerName, EvtHandle(publisherHandle), lang, out) + eventHandle, providerName, EvtHandle(publisherHandle), lang, renderBuf, out) // Recover by rendering the XML without the RenderingInfo (message string). if err != nil { - // Do not try to recover from InsufficientBufferErrors because these - // can be retried with a larger buffer. - if errors.Is(err, sys.InsufficientBufferError{}) { - return err - } - err = RenderEventXML(eventHandle, renderBuf, out) } @@ -256,8 +250,8 @@ func RenderEvent( // Message reads the event data associated with the EvtHandle and renders // and returns the message only. -func Message(h EvtHandle, buf []byte, pubHandleProvider func(string) sys.MessageFiles) (message string, err error) { - providerName, err := evtRenderProviderName(buf, h) +func Message(h EvtHandle, renderBuf []byte, pubHandleProvider func(string) sys.MessageFiles) (message string, err error) { + providerName, err := evtRenderProviderName(renderBuf, h) if err != nil { return "", err } @@ -386,12 +380,15 @@ func Close(h EvtHandle) error { // publisherHandle is a handle to the publisher's metadata as provided by // EvtOpenPublisherMetadata. // lang is the language ID. +// renderBuf is a scratch buffer to render the message, if not provided or of +// insufficient size then a buffer from a system pool will be used func FormatEventString( messageFlag EvtFormatMessageFlag, eventHandle EvtHandle, publisher string, publisherHandle EvtHandle, lang uint32, + renderBuf []byte, out io.Writer, ) error { // Open a publisher handle if one was not provided. @@ -405,29 +402,42 @@ func FormatEventString( defer _EvtClose(ph) //nolint:errcheck // This is just a resource release. } - // Determine the buffer size needed (given in WCHARs). - var bufferUsed uint32 - err := _EvtFormatMessage(ph, eventHandle, 0, 0, nil, messageFlag, 0, nil, &bufferUsed) - if err != windows.ERROR_INSUFFICIENT_BUFFER { //nolint:errorlint // This is an errno. + var bufferPtr *byte + if renderBuf != nil { + bufferPtr = &renderBuf[0] + } + + // EvtFormatMessage operates with WCHAR buffer, assuming the size of the buffer in characters. + // https://docs.microsoft.com/en-us/windows/win32/api/winevt/nf-winevt-evtformatmessage + var bufferNeeded uint32 + bufferSize := uint32(len(renderBuf) / 2) + + err := _EvtFormatMessage(ph, eventHandle, 0, 0, nil, messageFlag, bufferSize, bufferPtr, &bufferNeeded) + if err != nil && err != windows.ERROR_INSUFFICIENT_BUFFER { //nolint:errorlint // This is an errno. return fmt.Errorf("failed in EvtFormatMessage: %w", err) + } else if err == nil { + // Windows API returns a null terminated WCHAR C-style string in the buffer. bufferNeeded applies + // only when ERROR_INSUFFICIENT_BUFFER is returned. Luckily the UTF16ToUTF8Bytes/UTF16ToString + // functions stop at null termination. Note, as signaled in a comment at the end of this function, + // this behavior is bad for EvtFormatMessageKeyword as then the API returns a list of null terminated + // strings in the buffer (it's fine for now as we don't use this parameter value). + return common.UTF16ToUTF8Bytes(renderBuf, out) } // Get a buffer from the pool and adjust its length. bb := sys.NewPooledByteBuffer() defer bb.Free() - // The documentation for EvtFormatMessage specifies that the buffer is - // requested "in characters", and the buffer itself is LPWSTR, meaning the - // characters are WCHAR so double the value. - // https://docs.microsoft.com/en-us/windows/win32/api/winevt/nf-winevt-evtformatmessage - bb.Reserve(int(bufferUsed * 2)) - err = _EvtFormatMessage(ph, eventHandle, 0, 0, nil, messageFlag, bufferUsed, bb.PtrAt(0), &bufferUsed) + bb.Reserve(int(bufferNeeded * 2)) + bufferSize = bufferNeeded + + err = _EvtFormatMessage(ph, eventHandle, 0, 0, nil, messageFlag, bufferSize, bb.PtrAt(0), &bufferNeeded) if err != nil { return fmt.Errorf("failed in EvtFormatMessage: %w", err) } // This assumes there is only a single string value to read. This will - // not work to read keys (when messageFlag == EvtFormatMessageKeyword). + // not work to read keys (when messageFlag == EvtFormatMessageKeyword) return common.UTF16ToUTF8Bytes(bb.Bytes(), out) } From 86ef638dbc9854dbd31729ea1a12f4afc331f14f Mon Sep 17 00:00:00 2001 From: Aleksandr Maus Date: Wed, 15 May 2024 08:24:45 -0400 Subject: [PATCH 311/313] Osquerybeat: Add action responses data stream (#39143) * Add action responses data stream * Add missing copyright header * Make linter happy * Linting * Fix the compatibility with older stack --- x-pack/osquerybeat/beater/action_handler.go | 4 + x-pack/osquerybeat/beater/osquerybeat.go | 2 +- .../beater/resetable_action_handler.go | 8 +- .../beater/resetable_action_handler_test.go | 12 +- x-pack/osquerybeat/cmd/root.go | 89 ++++++++- x-pack/osquerybeat/cmd/root_test.go | 98 +++++++++ .../cmd/testdata/osquerycfg/legacy.in.json | 51 +++++ .../cmd/testdata/osquerycfg/legacy.out.json | 77 +++++++ .../osquerycfg/legacy_with_osquery.in.json | 56 ++++++ .../osquerycfg/legacy_with_osquery.out.json | 82 ++++++++ .../testdata/osquerycfg/two_streams.in.json | 104 ++++++++++ .../testdata/osquerycfg/two_streams.out.json | 122 +++++++++++ .../two_streams_with_osquery.in.json | 109 ++++++++++ .../two_streams_with_osquery.out.json | 127 ++++++++++++ x-pack/osquerybeat/internal/config/config.go | 7 +- x-pack/osquerybeat/internal/pub/publisher.go | 189 +++++++++++++----- .../internal/pub/publisher_test.go | 90 +++++++++ 17 files changed, 1173 insertions(+), 54 deletions(-) create mode 100644 x-pack/osquerybeat/cmd/root_test.go create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.in.json create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.out.json create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.in.json create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.out.json create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.in.json create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.out.json create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.in.json create mode 100644 x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.out.json diff --git a/x-pack/osquerybeat/beater/action_handler.go b/x-pack/osquerybeat/beater/action_handler.go index c4650ee9f16..a2a86bdf8dc 100644 --- a/x-pack/osquerybeat/beater/action_handler.go +++ b/x-pack/osquerybeat/beater/action_handler.go @@ -21,6 +21,10 @@ var ( ErrNoQueryExecutor = errors.New("no query executor configures") ) +type actionResultPublisher interface { + PublishActionResult(req map[string]interface{}, res map[string]interface{}) +} + type publisher interface { Publish(index, actionID, responseID string, meta map[string]interface{}, hits []map[string]interface{}, ecsm ecs.Mapping, reqData interface{}) } diff --git a/x-pack/osquerybeat/beater/osquerybeat.go b/x-pack/osquerybeat/beater/osquerybeat.go index bb82525a5d5..b4fe30a47d8 100644 --- a/x-pack/osquerybeat/beater/osquerybeat.go +++ b/x-pack/osquerybeat/beater/osquerybeat.go @@ -177,7 +177,7 @@ func (bt *osquerybeat) Run(b *beat.Beat) error { } // Set reseable action handler - rah := newResetableActionHandler(bt.log) + rah := newResetableActionHandler(bt.pub, bt.log) defer rah.Clear() g, ctx := errgroup.WithContext(ctx) diff --git a/x-pack/osquerybeat/beater/resetable_action_handler.go b/x-pack/osquerybeat/beater/resetable_action_handler.go index 1b6bb20e1db..a7daba11313 100644 --- a/x-pack/osquerybeat/beater/resetable_action_handler.go +++ b/x-pack/osquerybeat/beater/resetable_action_handler.go @@ -31,6 +31,8 @@ var ( // // The lifetime of this should the a scope of the beat Run type resetableActionHandler struct { + pub actionResultPublisher + log *logp.Logger ah client.Action @@ -43,8 +45,9 @@ type resetableActionHandler struct { type optionFunc func(a *resetableActionHandler) -func newResetableActionHandler(log *logp.Logger, opts ...optionFunc) *resetableActionHandler { +func newResetableActionHandler(pub actionResultPublisher, log *logp.Logger, opts ...optionFunc) *resetableActionHandler { a := &resetableActionHandler{ + pub: pub, log: log, timeout: defaultTimeout, } @@ -69,6 +72,9 @@ func (a *resetableActionHandler) Execute(ctx context.Context, req map[string]int res = renderResult(res, err) err = nil } + if a.pub != nil { + a.pub.PublishActionResult(req, res) + } }() res, err = a.execute(ctx, req) diff --git a/x-pack/osquerybeat/beater/resetable_action_handler_test.go b/x-pack/osquerybeat/beater/resetable_action_handler_test.go index eafeb758f67..d44985b3ac7 100644 --- a/x-pack/osquerybeat/beater/resetable_action_handler_test.go +++ b/x-pack/osquerybeat/beater/resetable_action_handler_test.go @@ -40,6 +40,15 @@ func (a *mockActionHandler) Name() string { return "osquery" } +type mockActionResultPublisher struct { + req, res map[string]interface{} +} + +func (p *mockActionResultPublisher) PublishActionResult(req map[string]interface{}, res map[string]interface{}) { + p.req = req + p.res = res +} + func TestResetableActionHandler(t *testing.T) { ctx, cn := context.WithCancel(context.Background()) defer cn() @@ -78,7 +87,8 @@ func TestResetableActionHandler(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - rah := newResetableActionHandler(log, resetableActionHandlerWithTimeout(testActionHandlerTimeout)) + pub := &mockActionResultPublisher{} + rah := newResetableActionHandler(pub, log, resetableActionHandlerWithTimeout(testActionHandlerTimeout)) defer rah.Clear() if tc.ah != nil { diff --git a/x-pack/osquerybeat/cmd/root.go b/x-pack/osquerybeat/cmd/root.go index 73584ec06f1..9c02433169e 100644 --- a/x-pack/osquerybeat/cmd/root.go +++ b/x-pack/osquerybeat/cmd/root.go @@ -8,6 +8,7 @@ import ( "fmt" "github.com/spf13/cobra" + "google.golang.org/protobuf/types/known/structpb" "github.com/elastic/elastic-agent-client/v7/pkg/client" "github.com/elastic/elastic-agent-client/v7/pkg/proto" @@ -81,6 +82,92 @@ func genVerifyCmd(_ instance.Settings) *cobra.Command { } func osquerybeatCfg(rawIn *proto.UnitExpectedConfig, agentInfo *client.AgentInfo) ([]*reload.ConfigWithMeta, error) { + // For the older stack there were no streams, creating one + if len(rawIn.GetStreams()) == 0 { + return osquerybeatCfgNoStreams(rawIn, agentInfo) + } + return osquerybeatCfgFromStreams(rawIn, agentInfo) +} + +func osquerybeatCfgFromStreams(rawIn *proto.UnitExpectedConfig, agentInfo *client.AgentInfo) ([]*reload.ConfigWithMeta, error) { + + streams := make([]*proto.Stream, 0, len(rawIn.Streams)) + + // Attach osquery configuration to the osquery_manager.result stream and set it as a first stream + for _, stream := range rawIn.Streams { + if stream.DataStream != nil && stream.DataStream.Dataset == config.DefaultDataset { + if stream.Source == nil { + // If for any reason the stream source is missing completely, use datastream source as before + stream.Source = rawIn.Source + } else { + // Set osquery configuration value + fieldsSrc := rawIn.Source.Fields + fieldsDst := stream.Source.Fields + var osqVal *structpb.Value + if fieldsSrc != nil { + osqVal = fieldsSrc["osquery"] + } + if osqVal != nil { + fieldsDst["osquery"] = osqVal + } + // Setting id to the source because it is being picked up from there in shared management.CreateInputsFromStreams + vId, ok := fieldsDst["id"] + shouldSet := false + if !ok || vId == nil { + shouldSet = true + } else { + if _, ok := vId.GetKind().(*structpb.Value_NullValue); ok { + shouldSet = true + } + } + if shouldSet { + fieldsDst["id"] = structpb.NewStringValue(rawIn.Id) + } + } + streams = append([]*proto.Stream{stream}, streams...) + continue + } + streams = append(streams, stream) + } + rawIn.Streams = streams + + streamList, err := management.CreateInputsFromStreams(rawIn, "logs", agentInfo) + if err != nil { + return nil, fmt.Errorf("error creating input list from raw expected config: %w", err) + } + + var ns string + if rawIn.DataStream != nil { + ns = rawIn.DataStream.Namespace + if ns == "" { + ns = config.DefaultNamespace + } + } + + for iter := range streamList { + if _, ok := streamList[iter]["type"]; !ok { + streamList[iter]["type"] = rawIn.Type + } + if v, ok := streamList[iter]["data_stream"]; ok { + if m, ok := v.(map[string]interface{}); ok { + if _, ok := m["namespace"]; !ok { + m["namespace"] = ns + } + } + } + } + + // format for the reloadable list needed by the cm.Reload() method + configList, err := management.CreateReloadConfigFromInputs(streamList) + if err != nil { + return nil, fmt.Errorf("error creating config for reloader: %w", err) + } + + return configList, nil +} + +// This is needed for compatibility with the legacy implementation where kibana set empty streams array [] into the policy +func osquerybeatCfgNoStreams(rawIn *proto.UnitExpectedConfig, agentInfo *client.AgentInfo) ([]*reload.ConfigWithMeta, error) { // Convert to streams, osquerybeat doesn't use streams streams := make([]*proto.Stream, 1) @@ -113,7 +200,7 @@ func osquerybeatCfg(rawIn *proto.UnitExpectedConfig, agentInfo *client.AgentInfo modules[iter]["type"] = "log" } - // format for the reloadable list needed bythe cm.Reload() method + // format for the reloadable list needed by the cm.Reload() method configList, err := management.CreateReloadConfigFromInputs(modules) if err != nil { return nil, fmt.Errorf("error creating config for reloader: %w", err) diff --git a/x-pack/osquerybeat/cmd/root_test.go b/x-pack/osquerybeat/cmd/root_test.go new file mode 100644 index 00000000000..5d0df4df0a6 --- /dev/null +++ b/x-pack/osquerybeat/cmd/root_test.go @@ -0,0 +1,98 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package cmd + +import ( + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/google/go-cmp/cmp" + + "github.com/elastic/beats/v7/libbeat/common/reload" + + "github.com/elastic/elastic-agent-client/v7/pkg/client" + "github.com/elastic/elastic-agent-client/v7/pkg/proto" + + "github.com/elastic/elastic-agent-libs/mapstr" +) + +func TestOsquerybeatCfg(t *testing.T) { + matches, err := filepath.Glob("testdata/osquerycfg/*.in.json") + if err != nil { + t.Fatal(err) + } + + for _, match := range matches { + dir := filepath.Dir(match) + key := strings.TrimSuffix(filepath.Base(match), `.in.json`) + + out := filepath.Join(dir, key+".out.json") + t.Run(key, func(in, out string) func(t *testing.T) { + return func(t *testing.T) { + var rawIn proto.UnitExpectedConfig + err := readRawIn(in, &rawIn) + if err != nil { + t.Fatal(err) + } + + want, err := readOut(out) + if err != nil { + t.Fatal(err) + } + + cfg, err := osquerybeatCfg(&rawIn, &client.AgentInfo{ID: "abc7d0a8-ce04-4663-95da-ff6d537c268f", Version: "8.13.1"}) + if err != nil { + t.Fatal(err) + } + got, err := cfgToArrMap(cfg) + if err != nil { + t.Fatal(err) + } + + diff := cmp.Diff(want, got) + if diff != "" { + t.Fatal(diff) + } + } + }(match, out)) + } +} + +func readRawIn(filename string, rawIn *proto.UnitExpectedConfig) error { + b, err := os.ReadFile(filename) + if err != nil { + return err + } + err = json.Unmarshal(b, rawIn) + return err +} + +func readOut(filename string) (cfg []map[string]interface{}, err error) { + b, err := os.ReadFile(filename) + if err != nil { + return nil, err + } + err = json.Unmarshal(b, &cfg) + if err != nil { + return nil, err + } + return cfg, err +} + +func cfgToArrMap(cfg []*reload.ConfigWithMeta) ([]map[string]interface{}, error) { + res := make([]map[string]interface{}, 0, len(cfg)) + for _, c := range cfg { + var m mapstr.M + err := c.Config.Unpack(&m) + if err != nil { + return nil, err + } + res = append(res, map[string]interface{}(m)) + } + return res, nil +} diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.in.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.in.json new file mode 100644 index 00000000000..f358b4fdf6e --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.in.json @@ -0,0 +1,51 @@ +{ + "source": { + "data_stream": { + "namespace": "default" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "meta": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "name": "osquery_manager-1", + "package_policy_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "policy": { + "revision": 2 + }, + "revision": 1, + "streams": [ + ], + "type": "osquery" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "type": "osquery", + "name": "osquery_manager-1", + "revision": 1, + "meta": { + "source": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "package": { + "source": { + "name": "osquery_manager", + "version": "1.12.1" + }, + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "data_stream": { + "source": { + "namespace": "default" + }, + "namespace": "default" + }, + "streams": [ + ] +} \ No newline at end of file diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.out.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.out.json new file mode 100644 index 00000000000..2ec760a08f8 --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy.out.json @@ -0,0 +1,77 @@ +[ + { + "data_stream": { + "namespace": "default" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "index": "logs-osquery_manager.result-default", + "meta": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "name": "osquery_manager-1", + "package_policy_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "policy": { + "revision": 2 + }, + "processors": [ + { + "add_fields": { + "fields": { + "input_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result", + "namespace": "default", + "type": "logs" + }, + "target": "data_stream" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result" + }, + "target": "event" + } + }, + { + "add_fields": { + "fields": { + "stream_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f", + "snapshot": false, + "version": "8.13.1" + }, + "target": "elastic_agent" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f" + }, + "target": "agent" + } + } + ], + "revision": 1, + "streams": [], + "type": "log" + } +] \ No newline at end of file diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.in.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.in.json new file mode 100644 index 00000000000..c3bb5d4e380 --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.in.json @@ -0,0 +1,56 @@ +{ + "source": { + "data_stream": { + "namespace": "default" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "meta": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "name": "osquery_manager-1", + "osquery": { + "options": { + "host_identifier": "hostname" + } + }, + "package_policy_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "policy": { + "revision": 3 + }, + "revision": 2, + "streams": [ + ], + "type": "osquery" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "type": "osquery", + "name": "osquery_manager-1", + "revision": 2, + "meta": { + "source": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "package": { + "source": { + "name": "osquery_manager", + "version": "1.12.1" + }, + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "data_stream": { + "source": { + "namespace": "default" + }, + "namespace": "default" + }, + "streams": [ + ] +} \ No newline at end of file diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.out.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.out.json new file mode 100644 index 00000000000..7568395785e --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/legacy_with_osquery.out.json @@ -0,0 +1,82 @@ +[ + { + "data_stream": { + "namespace": "default" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "index": "logs-osquery_manager.result-default", + "meta": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "name": "osquery_manager-1", + "osquery": { + "options": { + "host_identifier": "hostname" + } + }, + "package_policy_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "policy": { + "revision": 3 + }, + "processors": [ + { + "add_fields": { + "fields": { + "input_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result", + "namespace": "default", + "type": "logs" + }, + "target": "data_stream" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result" + }, + "target": "event" + } + }, + { + "add_fields": { + "fields": { + "stream_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f", + "snapshot": false, + "version": "8.13.1" + }, + "target": "elastic_agent" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f" + }, + "target": "agent" + } + } + ], + "revision": 2, + "streams": [], + "type": "log" + } +] \ No newline at end of file diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.in.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.in.json new file mode 100644 index 00000000000..8081cb2c484 --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.in.json @@ -0,0 +1,104 @@ +{ + "source": { + "data_stream": { + "namespace": "default" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "meta": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "name": "osquery_manager-1", + "package_policy_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "policy": { + "revision": 2 + }, + "revision": 1, + "streams": [ + { + "data_stream": { + "dataset": "osquery_manager.action.responses", + "type": "logs" + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "query": null + }, + { + "data_stream": { + "dataset": "osquery_manager.result", + "type": "logs" + }, + "id": null, + "query": null + } + ], + "type": "osquery" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "type": "osquery", + "name": "osquery_manager-1", + "revision": 1, + "meta": { + "source": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "package": { + "source": { + "name": "osquery_manager", + "version": "1.12.1" + }, + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "data_stream": { + "source": { + "namespace": "default" + }, + "namespace": "default" + }, + "streams": [ + { + "source": { + "data_stream": { + "dataset": "osquery_manager.action.responses", + "type": "logs" + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "query": null + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "data_stream": { + "source": { + "dataset": "osquery_manager.action.responses", + "type": "logs" + }, + "dataset": "osquery_manager.action.responses", + "type": "logs" + } + }, + { + "source": { + "data_stream": { + "dataset": "osquery_manager.result", + "type": "logs" + }, + "id": null, + "query": null + }, + "data_stream": { + "source": { + "dataset": "osquery_manager.result", + "type": "logs" + }, + "dataset": "osquery_manager.result", + "type": "logs" + } + } + ] +} \ No newline at end of file diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.out.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.out.json new file mode 100644 index 00000000000..b691078a3f6 --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams.out.json @@ -0,0 +1,122 @@ +[ + { + "data_stream": { + "dataset": "osquery_manager.result", + "namespace": "default", + "type": "logs" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "index": "logs-osquery_manager.result-default", + "processors": [ + { + "add_fields": { + "fields": { + "input_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result", + "namespace": "default", + "type": "logs" + }, + "target": "data_stream" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result" + }, + "target": "event" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f", + "snapshot": false, + "version": "8.13.1" + }, + "target": "elastic_agent" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f" + }, + "target": "agent" + } + } + ], + "type": "osquery" + }, + { + "data_stream": { + "dataset": "osquery_manager.action.responses", + "namespace": "default", + "type": "logs" + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "index": "logs-osquery_manager.action.responses-default", + "processors": [ + { + "add_fields": { + "fields": { + "input_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.action.responses", + "namespace": "default", + "type": "logs" + }, + "target": "data_stream" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.action.responses" + }, + "target": "event" + } + }, + { + "add_fields": { + "fields": { + "stream_id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f", + "snapshot": false, + "version": "8.13.1" + }, + "target": "elastic_agent" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f" + }, + "target": "agent" + } + } + ], + "type": "osquery" + } +] \ No newline at end of file diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.in.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.in.json new file mode 100644 index 00000000000..f6703263e6a --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.in.json @@ -0,0 +1,109 @@ +{ + "source": { + "data_stream": { + "namespace": "default" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "meta": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "name": "osquery_manager-1", + "osquery": { + "options": { + "host_identifier": "hostname" + } + }, + "package_policy_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "policy": { + "revision": 3 + }, + "revision": 2, + "streams": [ + { + "data_stream": { + "dataset": "osquery_manager.action.responses", + "type": "logs" + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "query": null + }, + { + "data_stream": { + "dataset": "osquery_manager.result", + "type": "logs" + }, + "id": null, + "query": null + } + ], + "type": "osquery" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "type": "osquery", + "name": "osquery_manager-1", + "revision": 2, + "meta": { + "source": { + "package": { + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "package": { + "source": { + "name": "osquery_manager", + "version": "1.12.1" + }, + "name": "osquery_manager", + "version": "1.12.1" + } + }, + "data_stream": { + "source": { + "namespace": "default" + }, + "namespace": "default" + }, + "streams": [ + { + "source": { + "data_stream": { + "dataset": "osquery_manager.action.responses", + "type": "logs" + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "query": null + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "data_stream": { + "source": { + "dataset": "osquery_manager.action.responses", + "type": "logs" + }, + "dataset": "osquery_manager.action.responses", + "type": "logs" + } + }, + { + "source": { + "data_stream": { + "dataset": "osquery_manager.result", + "type": "logs" + }, + "id": null, + "query": null + }, + "data_stream": { + "source": { + "dataset": "osquery_manager.result", + "type": "logs" + }, + "dataset": "osquery_manager.result", + "type": "logs" + } + } + ] +} \ No newline at end of file diff --git a/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.out.json b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.out.json new file mode 100644 index 00000000000..aa4a70a74ef --- /dev/null +++ b/x-pack/osquerybeat/cmd/testdata/osquerycfg/two_streams_with_osquery.out.json @@ -0,0 +1,127 @@ +[ + { + "data_stream": { + "dataset": "osquery_manager.result", + "namespace": "default", + "type": "logs" + }, + "id": "74c7d0a8-ce04-4663-95da-ff6d537c268c", + "index": "logs-osquery_manager.result-default", + "osquery": { + "options": { + "host_identifier": "hostname" + } + }, + "processors": [ + { + "add_fields": { + "fields": { + "input_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result", + "namespace": "default", + "type": "logs" + }, + "target": "data_stream" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.result" + }, + "target": "event" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f", + "snapshot": false, + "version": "8.13.1" + }, + "target": "elastic_agent" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f" + }, + "target": "agent" + } + } + ], + "type": "osquery" + }, + { + "data_stream": { + "dataset": "osquery_manager.action.responses", + "namespace": "default", + "type": "logs" + }, + "id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c", + "index": "logs-osquery_manager.action.responses-default", + "processors": [ + { + "add_fields": { + "fields": { + "input_id": "74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.action.responses", + "namespace": "default", + "type": "logs" + }, + "target": "data_stream" + } + }, + { + "add_fields": { + "fields": { + "dataset": "osquery_manager.action.responses" + }, + "target": "event" + } + }, + { + "add_fields": { + "fields": { + "stream_id": "osquery-osquery_manager.action.responses-74c7d0a8-ce04-4663-95da-ff6d537c268c" + }, + "target": "@metadata" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f", + "snapshot": false, + "version": "8.13.1" + }, + "target": "elastic_agent" + } + }, + { + "add_fields": { + "fields": { + "id": "abc7d0a8-ce04-4663-95da-ff6d537c268f" + }, + "target": "agent" + } + } + ], + "type": "osquery" + } +] \ No newline at end of file diff --git a/x-pack/osquerybeat/internal/config/config.go b/x-pack/osquerybeat/internal/config/config.go index 0d23af8186f..ec873206de7 100644 --- a/x-pack/osquerybeat/internal/config/config.go +++ b/x-pack/osquerybeat/internal/config/config.go @@ -22,9 +22,10 @@ import ( // query: select * from usb_devices const ( - DefaultNamespace = "default" - DefaultDataset = "osquery_manager.result" - DefaultType = "logs" + DefaultNamespace = "default" + DefaultDataset = "osquery_manager.result" + DefaultType = "logs" + DefaultActionResponsesDataset = "osquery_manager.action.responses" ) var datastreamPrefix = fmt.Sprintf("%s-%s-", DefaultType, DefaultDataset) diff --git a/x-pack/osquerybeat/internal/pub/publisher.go b/x-pack/osquerybeat/internal/pub/publisher.go index 6c49ef06017..d336a42515f 100644 --- a/x-pack/osquerybeat/internal/pub/publisher.go +++ b/x-pack/osquerybeat/internal/pub/publisher.go @@ -26,8 +26,13 @@ type Publisher struct { b *beat.Beat log *logp.Logger - mx sync.Mutex + mx sync.Mutex + + // client for osquery_manager.result client beat.Client + + // client for osquery_manager.action.responses + actionResponsesClient beat.Client } func New(b *beat.Beat, log *logp.Logger) *Publisher { @@ -45,27 +50,64 @@ func (p *Publisher) Configure(inputs []config.InputConfig) error { p.mx.Lock() defer p.mx.Unlock() - processors, err := p.processorsForInputsConfig(inputs) - if err != nil { - return err - } + // Setup configuration pointers to the clients and corresponding default datasets + + // The osquery_manager.result is always first + if len(inputs) > 0 { + processors, err := p.processorsForInputConfig(inputs[0], config.DefaultDataset) + if err != nil { + return err + } + + p.log.Debugf("Connect publisher for %s with processors: %d", config.DefaultDataset, len(processors.All())) + // Connect publisher + client, err := p.b.Publisher.ConnectWith(beat.ClientConfig{ + Processing: beat.ProcessingConfig{ + Processor: processors, + }, + }) + if err != nil { + return err + } + + // Swap client + oldclient := p.client + p.client = client + if oldclient != nil { + oldclient.Close() + } - p.log.Debugf("Connect publisher with processors: %d", len(processors.All())) - // Connect publisher - client, err := p.b.Publisher.ConnectWith(beat.ClientConfig{ - Processing: beat.ProcessingConfig{ - Processor: processors, - }, - }) - if err != nil { - return err } - // Swap client - oldclient := p.client - p.client = client - if oldclient != nil { - oldclient.Close() + // Attach remaining DefaultActionResultsDataset if present + if len(inputs) > 1 { + processors, err := p.processorsForInputConfig(inputs[1], config.DefaultActionResponsesDataset) + if err != nil { + return err + } + + p.log.Debugf("Connect publisher for %s with processors: %d", config.DefaultActionResponsesDataset, len(processors.All())) + // Connect publisher + client, err := p.b.Publisher.ConnectWith(beat.ClientConfig{ + Processing: beat.ProcessingConfig{ + Processor: processors, + }, + }) + if err != nil { + return err + } + + // Swap client + oldclient := p.actionResponsesClient + p.actionResponsesClient = client + if oldclient != nil { + oldclient.Close() + } + } else { + if p.actionResponsesClient != nil { + p.actionResponsesClient.Close() + p.actionResponsesClient = nil + } } return nil } @@ -91,40 +133,93 @@ func (p *Publisher) Close() { } } -func (p *Publisher) processorsForInputsConfig(inputs []config.InputConfig) (procs *processors.Processors, err error) { +func (p *Publisher) PublishActionResult(req map[string]interface{}, res map[string]interface{}) { + p.mx.Lock() + defer p.mx.Unlock() + + if p.actionResponsesClient == nil { + p.log.Info("Action responses stream is not configured. Action response is dropped.") + return + } + + fields := actionResultToEvent(req, res) + event := beat.Event{ + Timestamp: time.Now(), + Fields: fields, + } + + p.log.Debugf("Action response event is sent, fields: %#v", fields) + + p.actionResponsesClient.Publish(event) +} + +func actionResultToEvent(req, res map[string]interface{}) map[string]interface{} { + m := make(map[string]interface{}, 8) + + copyKey := func(key string, src, dst map[string]interface{}) { + if v, ok := src[key]; ok { + dst[key] = v + } + } + + copyKey("started_at", res, m) + copyKey("completed_at", res, m) + copyKey("error", res, m) + + if v, ok := res["count"]; ok { + m["action_response"] = map[string]interface{}{ + "osquery": map[string]interface{}{ + "count": v, + }, + } + } + + if v, ok := req["id"]; ok { + m["action_id"] = v + } + + if v, ok := req["input_type"]; ok { + m["action_input_type"] = v + } + + if v, ok := req["data"]; ok { + m["action_data"] = v + } + + return m +} + +func (p *Publisher) processorsForInputConfig(inCfg config.InputConfig, defaultDataset string) (procs *processors.Processors, err error) { procs = processors.NewList(nil) // Use only first input processor // Every input will have a processor that adds the elastic_agent info, we need only one // Not expecting other processors at the moment and this needs to work for 7.13 - for _, input := range inputs { - if len(input.Processors) > 0 { - // Attach the data_stream processor. This will append the data_stream attributes to the events. - // This is needed for the proper logstash auto-discovery of the destination datastream for the results. - ds := add_data_stream.DataStream{ - Namespace: input.Datastream.Namespace, - Dataset: input.Datastream.Dataset, - Type: input.Datastream.Type, - } - if ds.Namespace == "" { - ds.Namespace = config.DefaultNamespace - } - if ds.Dataset == "" { - ds.Dataset = config.DefaultDataset - } - if ds.Type == "" { - ds.Type = config.DefaultType - } - - procs.AddProcessor(add_data_stream.New(ds)) - - userProcs, err := processors.New(input.Processors) - if err != nil { - return nil, err - } - procs.AddProcessors(*userProcs) - break + if len(inCfg.Processors) > 0 { + // Attach the data_stream processor. This will append the data_stream attributes to the events. + // This is needed for the proper logstash auto-discovery of the destination datastream for the results. + ds := add_data_stream.DataStream{ + Namespace: inCfg.Datastream.Namespace, + Dataset: inCfg.Datastream.Dataset, + Type: inCfg.Datastream.Type, + } + if ds.Namespace == "" { + ds.Namespace = config.DefaultNamespace + } + if ds.Dataset == "" { + ds.Dataset = defaultDataset + } + if ds.Type == "" { + ds.Type = config.DefaultType + } + + procs.AddProcessor(add_data_stream.New(ds)) + + userProcs, err := processors.New(inCfg.Processors) + if err != nil { + return nil, err } + procs.AddProcessors(*userProcs) } return procs, nil } diff --git a/x-pack/osquerybeat/internal/pub/publisher_test.go b/x-pack/osquerybeat/internal/pub/publisher_test.go index 488516bb01a..4c34b667ff8 100644 --- a/x-pack/osquerybeat/internal/pub/publisher_test.go +++ b/x-pack/osquerybeat/internal/pub/publisher_test.go @@ -5,6 +5,7 @@ package pub import ( + "encoding/json" "testing" "time" @@ -112,3 +113,92 @@ func TestHitToEvent(t *testing.T) { } } } + +func TestActionResultToEvent(t *testing.T) { + + tests := []struct { + name string + req, res map[string]interface{} + want map[string]interface{} + }{ + { + name: "successful", + req: toMap(t, `{ + "data": { + "id": "a72d65d8-200a-4b43-8dbd-7bc0e9ce8e65", + "query": "select * from osquery_info" + }, + "id": "5c433f88-ab0d-41e2-af76-6ff16ae3ced8", + "input_type": "osquery", + "type": "INPUT_ACTION" + }`), + res: toMap(t, `{ + "completed_at": "2024-04-18T19:39:39.740162Z", + "count": 1, + "started_at": "2024-04-18T19:39:39.532125Z" + } `), + // "agent_id": "bf3d6036-2260-4bbf-94a3-5ccce0d75d9e", + want: toMap(t, `{ + "completed_at": "2024-04-18T19:39:39.740162Z", + "action_response": { + "osquery": { + "count": 1 + } + }, + "action_id": "5c433f88-ab0d-41e2-af76-6ff16ae3ced8", + "started_at": "2024-04-18T19:39:39.532125Z", + "action_input_type": "osquery", + "action_data": { + "id": "a72d65d8-200a-4b43-8dbd-7bc0e9ce8e65", + "query": "select * from osquery_info" + } + }`), + }, + { + name: "error", + req: toMap(t, `{ + "data": { + "id": "08995ee8-5182-423e-9527-552736411010", + "query": "select * from osquery_foo" + }, + "id": "70539d80-4082-41e9-aff4-fbb877dd752b", + "input_type": "osquery", + "type": "INPUT_ACTION" + }`), + res: toMap(t, `{ + "completed_at": "2024-04-20T14:56:34.87195Z", + "error": "query failed, code: 1, message: no such table: osquery_foo", + "started_at": "2024-04-20T14:56:34.87195Z" + }`), + // "agent_id": "bf3d6036-2260-4bbf-94a3-5ccce0d75d9e", + want: toMap(t, `{ + "completed_at": "2024-04-20T14:56:34.87195Z", + "action_id": "70539d80-4082-41e9-aff4-fbb877dd752b", + "started_at": "2024-04-20T14:56:34.87195Z", + "action_input_type": "osquery", + "error": "query failed, code: 1, message: no such table: osquery_foo", + "action_data": { + "id": "08995ee8-5182-423e-9527-552736411010", + "query": "select * from osquery_foo" + } + }`), + }, + } + + for _, tc := range tests { + got := actionResultToEvent(tc.req, tc.res) + diff := cmp.Diff(tc.want, got) + if diff != "" { + t.Error(diff) + } + } +} + +func toMap(t *testing.T, s string) map[string]interface{} { + var m map[string]interface{} + err := json.Unmarshal([]byte(s), &m) + if err != nil { + t.Fatal(err) + } + return m +} From 46de7e07dedc85e80a08fdd5478fe435b1d614f6 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 15 May 2024 14:43:44 +0200 Subject: [PATCH 312/313] updatecli: move to the .github folder and support for signed commits (#39472) --- .github/workflows/bump-elastic-stack-snapshot.yml | 9 ++++----- .github/workflows/bump-golang.yml | 15 ++++++++------- .../updatecli.d}/bump-elastic-stack-snapshot.yml | 13 +++++-------- .../workflows/updatecli.d}/bump-golang-7.17.yml | 12 ++++-------- .../workflows/updatecli.d}/bump-golang.yml | 12 ++++-------- .github/workflows/updatecli.d/scm.yml | 4 ++++ 6 files changed, 29 insertions(+), 36 deletions(-) rename {.ci => .github/workflows/updatecli.d}/bump-elastic-stack-snapshot.yml (80%) rename {.ci => .github/workflows/updatecli.d}/bump-golang-7.17.yml (96%) rename {.ci => .github/workflows/updatecli.d}/bump-golang.yml (95%) create mode 100644 .github/workflows/updatecli.d/scm.yml diff --git a/.github/workflows/bump-elastic-stack-snapshot.yml b/.github/workflows/bump-elastic-stack-snapshot.yml index f4a2842fa9d..835ead87a6a 100644 --- a/.github/workflows/bump-elastic-stack-snapshot.yml +++ b/.github/workflows/bump-elastic-stack-snapshot.yml @@ -9,9 +9,6 @@ on: permissions: contents: read -env: - JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - jobs: filter: runs-on: ubuntu-latest @@ -29,14 +26,16 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.filter.outputs.matrix) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: elastic/apm-pipeline-library/.github/actions/updatecli@current with: vaultUrl: ${{ secrets.VAULT_ADDR }} vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - pipeline: ./.ci/bump-elastic-stack-snapshot.yml + pipeline: .github/workflows/updatecli.d/bump-elastic-stack-snapshot.yml + values: .github/workflows/updatecli.d/scm.yml + command: '--experimental apply' notifySlackChannel: "#ingest-notifications" messageIfFailure: ":traffic_cone: updatecli failed for `${{ github.repository }}@${{ github.ref_name }}`, `@update-me-with-the-slack-team-to-be-poked` please look what's going on <${{ env.JOB_URL }}|here>" env: diff --git a/.github/workflows/bump-golang.yml b/.github/workflows/bump-golang.yml index 393c57f89a0..751b8612571 100644 --- a/.github/workflows/bump-golang.yml +++ b/.github/workflows/bump-golang.yml @@ -9,34 +9,35 @@ on: permissions: contents: read -env: - JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" - jobs: bump-main: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: elastic/apm-pipeline-library/.github/actions/updatecli@current with: vaultUrl: ${{ secrets.VAULT_ADDR }} vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - pipeline: ./.ci/bump-golang.yml + pipeline: .github/workflows/updatecli.d/bump-golang.yml + values: .github/workflows/updatecli.d/scm.yml + command: '--experimental apply' notifySlackChannel: "#ingest-notifications" messageIfFailure: ":traffic_cone: updatecli failed for `${{ github.repository }}@${{ github.ref_name }}`, `@update-me-with-the-slack-team-to-be-poked` please look what's going on <${{ env.JOB_URL }}|here>" bump-7-17: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: elastic/apm-pipeline-library/.github/actions/updatecli@current with: vaultUrl: ${{ secrets.VAULT_ADDR }} vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - pipeline: ./.ci/bump-golang-7.17.yml + pipeline: .github/workflows/updatecli.d/bump-golang-7.17.yml + values: .github/workflows/updatecli.d/scm.yml + command: '--experimental apply' notifySlackChannel: "#ingest-notifications" messageIfFailure: ":traffic_cone: updatecli failed for `${{ github.repository }}@${{ github.ref_name }}`, `@update-me-with-the-slack-team-to-be-poked` please look what's going on <${{ env.JOB_URL }}|here>" diff --git a/.ci/bump-elastic-stack-snapshot.yml b/.github/workflows/updatecli.d/bump-elastic-stack-snapshot.yml similarity index 80% rename from .ci/bump-elastic-stack-snapshot.yml rename to .github/workflows/updatecli.d/bump-elastic-stack-snapshot.yml index f9060400c3f..f679e7924f3 100644 --- a/.ci/bump-elastic-stack-snapshot.yml +++ b/.github/workflows/updatecli.d/bump-elastic-stack-snapshot.yml @@ -6,6 +6,7 @@ actions: default: title: '[updatecli] update elastic stack version for testing {{ source "latestVersion" }}' kind: github/pullrequest + scmid: default spec: labels: - automation @@ -13,21 +14,17 @@ actions: - backport-skip - build-monitoring - Team:Beats-On-Call - description: | - Generated automatically with {{ requiredEnv "JOB_URL" }} - scmid: default scms: default: kind: github spec: - user: '{{ requiredEnv "GIT_USER" }}' - email: '{{ requiredEnv "GIT_EMAIL" }}' - owner: elastic - repository: beats + owner: '{{ .scm.owner }}' + repository: '{{ .scm.repository }}' + user: '{{ requiredEnv "GITHUB_ACTOR" }}' token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GIT_USER" }}' branch: '{{ requiredEnv "BRANCH" }}' + commitusingapi: true sources: latestVersion: diff --git a/.ci/bump-golang-7.17.yml b/.github/workflows/updatecli.d/bump-golang-7.17.yml similarity index 96% rename from .ci/bump-golang-7.17.yml rename to .github/workflows/updatecli.d/bump-golang-7.17.yml index 5b6619bc453..d6405aa1a8d 100644 --- a/.ci/bump-golang-7.17.yml +++ b/.github/workflows/updatecli.d/bump-golang-7.17.yml @@ -6,13 +6,12 @@ scms: githubConfig: kind: github spec: - user: '{{ requiredEnv "GIT_USER" }}' - email: '{{ requiredEnv "GIT_EMAIL" }}' - owner: elastic - repository: beats + owner: '{{ .scm.owner }}' + repository: '{{ .scm.repository }}' + user: '{{ requiredEnv "GITHUB_ACTOR" }}' token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GIT_USER" }}' branch: "7.17" + commitusingapi: true actions: beats: @@ -21,12 +20,9 @@ actions: sourceid: latestGoVersion title: '[Automation][7.17] Bump Golang version to {{ source "latestGoVersion" }}' spec: - automerge: false labels: - dependencies - backport-skip - description: | - Generated automatically with {{ requiredEnv "JOB_URL" }} sources: minor: diff --git a/.ci/bump-golang.yml b/.github/workflows/updatecli.d/bump-golang.yml similarity index 95% rename from .ci/bump-golang.yml rename to .github/workflows/updatecli.d/bump-golang.yml index 2957acd6223..9c30136f444 100644 --- a/.ci/bump-golang.yml +++ b/.github/workflows/updatecli.d/bump-golang.yml @@ -6,13 +6,12 @@ scms: githubConfig: kind: github spec: - user: '{{ requiredEnv "GIT_USER" }}' - email: '{{ requiredEnv "GIT_EMAIL" }}' - owner: elastic - repository: beats + owner: '{{ .scm.owner }}' + repository: '{{ .scm.repository }}' + user: '{{ requiredEnv "GITHUB_ACTOR" }}' token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GIT_USER" }}' branch: main + commitusingapi: true actions: beats: @@ -21,12 +20,9 @@ actions: sourceid: latestGoVersion title: '[Automation] Bump Golang version to {{ source "latestGoVersion" }}' spec: - automerge: false labels: - dependencies - backport-skip - description: | - Generated automatically with {{ requiredEnv "JOB_URL" }} sources: minor: diff --git a/.github/workflows/updatecli.d/scm.yml b/.github/workflows/updatecli.d/scm.yml new file mode 100644 index 00000000000..fd532f00f61 --- /dev/null +++ b/.github/workflows/updatecli.d/scm.yml @@ -0,0 +1,4 @@ +--- +scm: + owner: elastic + repository: beats From 8b58916153f9dfadd6290ff70a87ab743edad433 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 15 May 2024 14:44:46 +0200 Subject: [PATCH 313/313] github-action: delete opentelemetry workflow (#39559) --- .github/workflows/opentelemetry.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .github/workflows/opentelemetry.yml diff --git a/.github/workflows/opentelemetry.yml b/.github/workflows/opentelemetry.yml deleted file mode 100644 index 84a6209ff2c..00000000000 --- a/.github/workflows/opentelemetry.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -# Look up results at https://ela.st/oblt-ci-cd-stats. -# There will be one service per GitHub repository, including the org name, and one Transaction per Workflow. -name: OpenTelemetry Export Trace - -on: - workflow_run: - workflows: [ "*" ] - types: [completed] - -permissions: - contents: read - -jobs: - otel-export-trace: - runs-on: ubuntu-latest - steps: - - uses: elastic/apm-pipeline-library/.github/actions/opentelemetry@current - with: - vaultUrl: ${{ secrets.VAULT_ADDR }} - vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} - vaultSecretId: ${{ secrets.VAULT_SECRET_ID }}

    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%0A()V05zw+f3ZGU~Ce4ixjgvh1#jM5b36xo- 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 z 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∓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
    l+vb#(g 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 literal 272972 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�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 D63_b8 diff --git a/filebeat/docs/images/filebeat-salesforce-setupaudittrail-dashboard.png b/filebeat/docs/images/filebeat-salesforce-setupaudittrail-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0c6674bd4a7821bd49f2086fb2e067498d9ac6 GIT binary patch literal 697297 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 z zRD>ompkcwKmR5dM(*reMN;H=ZgdlQ2M1=OG^%l8j&ITa(5j8S^?6F>p&tYAj?Q33M z*7roqg}TEhHn$2SM@kz>9nYpvR>wD_hYLT5f4kpsqcgFn!6`7{d7~&C3r6HU{lk8@?MC(`DhXK|t5e4=cw<>LpaGjhkO*O_p8M`jB%wHn zsE$`o#Lbmi4LpOU?mSdHuX0IP)z0;0Dm0zTox1!BrDS-;^=MbUeK*nU%l*n80IQNZ z0!mhPX1+rMIhoWdV^F|g`ZDnRA6GLpsF09YP1&9JbbxRa^5IKc@i9J5S)&9#oAbiK zXQTtU==~tQ$@?((8OxKb2mQCDE~YTtzl_GV77lwFcc)zNykG1trUSWHhBKiNJNM;T zvTZ^K`8WZE{^y_T-XNqH3W^#B5qMP4qpds>$)w~r6*v4eqRuSyzym7}#N zXt2uWdee*4IPT%z((P;U2B(Hj7-R{<2R%b{>x@viN5|K`vq zTgFGQB730CqDIYp5-t8$F}ZR zUUpic$#LHPXbkk$;KtWt)Mi7g5SS$?674Z^XUgaR7}F>V?HeQ2b)o&-0#n^@NsdQ zU5eF+`f>?Dlp+^)x%;Jf_0pH;4eO$o9U$zM25{x84Z~#x?^-V-7=4khajZJVd5Q;{ zZ_H=b$n*zOaAA)h%&IPEaay-FSU8TL+tov>KP?@~CG+ZfDp8AeQ;`3K*Tr`a>_B5_ ze|O}pwF-7So7=nxdepZ`%-aI7V^|T3+&Al0&sTA-ffUk$YlWYco@+f@uP&Ib1-*Zo zj`cM|K3J;}%h%xtm4K5M)yIBucVq_+=N}F1&B|9Y_re|y=9|RKKB_im97=VVnWu=@ z!m4p-iRJJdr7Z6#oc8DAgY~Ws)qE@4&DqvZh6l)u$$?uB$E$QF9X_aE zApQEL5tjON$-nhOcwDB5a@48~n?%=h)IK0faBt3M^T{-cwVX|y3mpJoEI?Tv$E1*?)YnIk|j*&11b7n>BaHd9Opl zL3%&>RxkGh+yPdLrp=1EqPvUJzSMok$h&!UfU`PE4-3d#CXv48q&yRI9 z?PA4#6qnqM%!YbNa$ksqBmDvYas0LY{s8M~Kn*K77B_a!h4SY^Qsp-(gbWj2J!%fx zlq$=AGkZnsiSa-le`nIk1tSF(G0;(y{kj^GZInTDgO!?QZL|oTQtnD?P9tD%$4ANy z-h8lHO%<2!sTw$UE0qr}E=K>>LdWepnelG?zw!A^3U8e_8QTr>{7;gA%n@Jo+6zCW z=vbmeM~s#P{bOzCp{J#J(yD;h7ymNo`s|Dh z@VT!X0N3qtxMMig;NQDA_=a0o_O%;eI5j&*y<<6ygqlJrLLSitw&vkc3N&Q2_CCl~ z(IH|~lc|1-*_}qV(L&%Ur=G{zS}9tkvN)C*NY1p${IvMS$EOy}lcLV`*?G@&N~`CnWs z&7+kC^|E!OOQS~AHb02gRRyH0DWlJ2w>A#Xf>=>{%sY}_vP6B6T9(;-a$|Mn8LXr&zD56i7FdoNQ*D`fZJ z-yx){twSrAU4nA9h+KkUO%z3-UJyIF>53CUPoBeCHA;l|gNOX3=du%HJdcXw6E9_p z7xk+jk5?Vt)T6F;#9L+KxAwL5ZWK+JfSM}4Gm1+wQ|=cCs=`UR;X0pju6j|!HQvAh z>CiYg&LuAGuFjqO$P!yj0@bXG{InMWiDF7Yy!HP0W6|IVgcgCpn2poGE_-u9>K)PnG zG@>yuMZ%v30N9_el^P;j56GKLP4#peSMlu#&Q2)iDqVBMyXTg)z<&uO^VmD8Hk+T` zHW z=%cXIbWoR(UmhwG{gNY=Kx`3o`G-!x+{O%p`B`en9XDb#j1LM+md9WYS!gnV2B0?j zh1nBUh5%xgppQ>S!>0___%)t~huO?xqeT=Bge$W2ky?c?~w<|PfbjbzmQK9#Vs4sZYijmBCF=O!~ zX7^Zmp?GA|h4$zICAXwo7s@PkxjQbfimXAy?0kgxc|8>c&`p&?lw@3{jqBlOnB6Ka zG+aQ@6q93f+%?`$wUpdmS__6fvnCXtmI+}xp0+&1x&9%8I!xc#F}ua$S=6$S`3jBP zqgjyA*4*5>220Ma+O7--ic8DOxDWO9UFvlqH6pCwM0z=}Ym;AZ+ue3eglfitaktcV;o_st46)evi>|KAFD|U$X25Eon<<>%rDSJ@@yo)F5WGPRVtC3WC)* zx9O-9K(@s$P|GLq=uhOl`Cc{QTH}E*Bp&pCTddM?ycMN0G4b%*fo(-TiZw#MYg^~}-Wv8#b*lE`lBF`9HWfW9 zBh>qdEkmE0C)5B-^3e4kmsPj`L`nUx!a{B?&?^0t{*XinECy+sLksHZK?f+jH+3)d z6ODbsO%VQ(S5}~x{1aDsauP8Ow@0GjInHGf!M>e#FK4mEaZzJRp&q`WH1w^+Voz)= z{0TkM7I6f0e&A#&mykNYw3DnV=e$6W0$v8e!#0B5?djBfc7{g8F#{=6gVk2KA5aRT zlNWa@9h><8+QHJ^%if{KHP5zPKdw$jz->xiXfPrfk|<~tV9@#IUQADxj&$TXXK1dT zK*aStzb&=%L)c4672|6f(@smzMFi+2h*a=NNDt~_p0-aKz&77Hh%sMUY7C_!aS2># z84$nd>S<~{yJ%s(GJYTHOM#v|f>3RpxZkbS*H7$WF)=2r_>U1D;+%3uLZ?|gHC1On7Z`RP$`68k5Ns(Wm@;HJ7AJxx)X0`FE{>Qdq#j zygm)*BHg`E4;?b)+gyuR+13aKtDW(hg2;maj@nk@wLg^YNHsL)(6@;u6D`14StU(l zxV?B;P>UTl1w?5jrX&8J#ii2KU(f50ef&U;TrV5vi=O;Bf46dydh zgmSneksbeZZYiEfP;(UH74ySyuMWRFUHYUqfn=>eaQAMm*b_=FEplSE1b^eRwt%>T z`OkK%H1>EuJORoA=2@Asd^Ys*NkV!NhMrwdj`9z0^^%d1)7g9Zi32YKq z=|F|V7keuQR&Sw@5F!4|M$L`Q$R&PgEfY>t<}?za^c#Y|2t@jL&XbH>S8J-R$q? zsfI}*C~`}5k`ILgg^^d$x>Lw;SHN=Ni>3wlDu(Nn&n?k!L#V zHiPjYC~ydXTM8*2l@KPiNZ>Ix_E6nl27eRXjU)@)= z=(`73wm^5W95!NzhLFqMSvtd91nEg%{Ab>=uYq9;aaR3i{B4WESFwAm{C+|wmEp9~ zTu*G-*tCZ#ZO~0eOM_3H%hPRFenh+hytr@-t1{7qs|LOp&UmE_Lj=QpAMdTVv=Hmx z-sChILW%*~y`med=2mUA-s2#Qn`Y`cZ;3~(sMi+HE3qONfBRM4*4vH|cI$nmA-b19 zJhV)p%Y!2%pBpo}DN?sd+fn zTiMsahza7DUWA(EW|t5E`mt75bvU%%D|*$?XLE?kbc^O5n>u9YWvPi<-x$bAajmx6 zOM1b==N+gqZ6szLiuZ>a-Xj`342-avuct@#*b3M|*h7Md-7*USw5yv7tA_|lx_?rO zJcQ+8|6fHV@p%D75J)cEiTfJ*TuFJ~|JR|OUoty!JRa-Zq%ymcG~M$%B>GjG1x>R+ zIntbOFGCE^F(boFyhm@8uYoda5ryz6$??nm*jH~F=}@QLPaNx6G$;@Dm|WE)Bj2uc zr>mkL557+#-TXfQ@x5j4%SXE>0Wicvt**9YX_AZeK(lfNFOrhCWdk`U-coWZzvX+} zzwaO@pc`N3=tX&9zy_r)MwLL-BxeeV;gejgD@WjU_dLGK__2$aA&WxB)!`x&e;m@U ztrlXP#sk$%0KW0#%p|4;0||SeumQ#;036b;K7MQVpjyqK5{xTgNK~KAZx_yX-}K4B zX9`Th2JRJ3y;U*eq2kAPyQT>p{c*nlz3X-`0rGaRs@)4at*+|vN2`}&7B@$;jnEk* z(W_36xA+bnFGQ7L&1Whyd-R|1R$68If7k0wkRHJudo#*EuaT>FQX&>O zA6(BAE?y1dWz=oDB%%P@{zK49eRi@%6vo1{KR!_K3mYp|oVK4X!K&$Ghtvwa2yUIi zUp@gbC(^Fk0YJ1I8if}X*z5=q6&KvTERTwjuy4SUChSP;PD+0Fm;PZWs)Y2d6~eJD z`(I+1JVNdX;sW@BQqM^qKD+k(HVl_t8#OdrH2fppNPo@`&LaE@+&_d{A>)~$x|Jsz z^KA2P#B@GWPIfK;!zQor7sq*#E6AoDEoZCRg>jkuc(8Sm#y-6%J6uqe*dA{+6#UA5 z$ltf7Csu^wrA}S^*mVW~+R&#EGT!sG!@Q&Tjqd$7BLg=vDdGgN3TFSO=ETR3-pCTn z4`HxHBdkP~zh=;<@)qWa@wom%bJOvoOK%e{>?NHEX2`vkvZd;`^51fvX<`}TRgFCJ z%(-|)x`#zze{kJ?$)AbF%B#@jmp&|t>$%Se=(f>=Csr4JZrD}-ewTstTOU@o*R{u1 zVAN`u(MtO-f|u7O-=k{1k@sMx9pN+F4;s0Hfq{A0TJ_p~bJC|>#;;2mGE&;?_rz=B zM>5*I^Cp-1oU(A<#z~74F;CKa56`wnPR+H&?9YT6;d>ZV6th_S*Y1YXrJL&_PdjyP zs-NR7sqI{@uEyr5*Q5D4j2niPgvY~H$)C`R|AFM|Z)LoUbJ;J3;{Gi4>Xr!i&}0Ek z%l_JP9pp6H&5S#bf&O&LuK29X>GUkmj(GARh5F@F!cle4+eC~+Sg4Gz9$kNwQhG0Z za@C8*{i-OISITF)QX_NU^Gpv^)B@1$Fey*<=+9V{BWmY$trX`gy6VOA`ETiUI!1D zrgDct*~k#QLHwLoB@*JW(N{g=O9(1v>X-JOVN`oL-4!ezQ;-4(QB{p>FC0fGQi&rJ zsi^-+k?OY;$kmej$X75CSsI4Rb-`q!_CSUvye8|$tbCLDbtV(IeP&xcm8W%&rF)K_ zGE!(rk5aVM?TKvNPP6bsm$3U~E@%&QpdNc`g7z?oGcVqE18G&gPCrA0N*_XS_Y{7| zQda^&-yiy>OZbzVaWO-1?`9O5B7k~}J? z%d%CO0JbyNwK$Bqu32G=Q1zNesCwaosu$7?(GcP^zJW|k~J{1 zRJgy{AMZ0JX!Ft zDr)+?B>Z%#W`70xTHh4~)^qjz2>E1O4J~?o9mHc(JLhAEkgKJrZjkLhkFg%#em-C_ zMHM)`Dc&cyS+cni+U#KnZT6Ob(q{jy>D#jMTOJnykZDUH7aGPBrtsd3yO-pS} zi^&~xJM)MFKR$OSLBKTV_hhi%)RiGKFt?ib8)i`^a63T{6_e@C({7gf5Fz<6Q$;e; zMgz5`VS6ahVxxv>b0_0YWQuKYz;!itjlzh5pSLsJdyEIH0{(X&dfLmB2Y+Az-2TM@ z@EyL#JGCL-BFT=xcD^Bk%`udICR6FKb^fUbyAFO$b}eBaXnv6a38M*16k6h zphaJvJZ-St7+7BvMkf9GPEt4&*K%xu&10itLFUETA(QpmH?eBl-8wqi?bm^pI(Jia z`>^7X^s5E{HV_~FS{4Xkq#~D1DQPiSKF!t zrPC}MlQ)dKlj}`t6L?|RDXthwJ#}r~yRHBEnY(uEZCmz)1Q-S{qwUMR4rN^#3uju8 z9vZgt!;4_J7w}A7)#yBY?OS|-h~GsJq}G6iy8memtDE!@BfM`>H@G8<5Mlo>#~Our z0q;&;!T@}}J53-_(SIq}BT$;pIpBXMaFE^7Z&j@Xm`BAYM# zY1JMJycn_A5{N#wlXxsEe<&k@(fzqgL(*^7>X4!LY zZ5$SopW4KPpKc-U!KLL%jb;wlo*UNR!4fCG;)^8Bk8^@fg;ZifP8bY)*sZ)zzYr~s ze~|on1(v<<#V&G_Bo1?nuO?`a4FGeXHj#Xv z_Ef{-`)>Tba&a-CtMUnhQ*Y_~sJQFic(Lc792&Iq+wt5;<>5jG2As@(ND&$crT&U zmGBcCax%zy_-hpx>aBXCF8hlpA@SKRD*d`De zUIXRQMt4^T=Gaw=VMh#qQp`1%fICBx_p#moC(c*|8=j8JdnD&7shN|bJ^DzEN{ndr z=!@6ZJMFPvlvqLRhY#!zRwj`CuQ_&tR@tn8bAsuDDgfHwmEX z(X`rZBdV5{7xe@XsB?wv>2^gk_^Lbfo%SCQnNX!ME|(J#GOv8=^8?#~U_SVDG~T$8 zP|}nnmMM7fBco@SGxP_t;=12TiqE7$h_81`t;WE_6iq+u zn{!>L(EqLi`$+s}&J{A6hog;cg9Uq6KPoVW;ut)xPvE7gb+30t_~BlEntvIKcZJ-~_|N8u?3rT|A#TU?TdU+XRQSTm9~^3SRae*a)aF zS@b&m%{n_oN)ZRtuwQ^mG{rxwVgGhPu{`>9#fcHrey!_0uIraybS!Jphy?cKqK(xV zpXne9Gn{B4XB9?9>>*`x1k^rc%zd47h-zb|F*4WLAVhPZO#$t>#v}owQga9ena*7j z>76fgauF|~-hA7xRin&TK%Am zy!tTBiy-IPi%Re#oLny3l8I&}wOr`*29~1a70&C6#PZ3!fp%--)c04-z;T71hnH89 z=X7_aqSWQ&{8v30-}X4Q*;v&QQ!q+@o!s$J#C;7^ER8S3Sz%%FAgq@9b8{ET)hqQy zfwJF!_}ae?7t%LG1+C{fh^TxtD4Xe9r+r76ONzDe1)0_)*V8=iA2 zW(fZbYJ`7A*gyGa{C4aL8yQHfovH~*)7Ha_ECme`-@UNY>na&xtxJ2W!Xh!IRR~}1 z$N_%XBhIe|%RO^E+NJQhKotytrnt&yhwrG^ty|7Dgi>|wzm#b~&r+$vbq%6q(=Zy( zBH$}DqpNvVs!s}|!b4?NRjwR~F939F!r0gX4(4D5H$I{Tu0qEPXO%MqQEe0rJv+&% zI#WL~u!*W94MVLXHO*!0%5~MZw@oL?JR1XJ+6K-$?tIRTa^aZgHrTY@@6zxfYz$0O$TkF70pkAb z5kF9!N`2WEu)aK@8gj{U^TFCf9?NAajEzI^w4+Df-XRk$wcUBiW4bn8BMk`H*(FCi z6A2I0jbLroXO&(qC_a;$b4D_;?9^EET})^OJ#vTObdQ0HE490vvrf6}pIc*F^da8- zmLUN?^7eMzY3%$0(?zyNSvX+YV}mB9EuNpj*=nT56! z{qygeoR=4FkplwwR?gOdMss(n72CIuPcJz;+QsBfR5{{BW%fxY36xC=I|f()&~%}v zp^D;e%qc;-G%iQ=vvgZpRJ5@sKwE|1HXuAWTpGyTxc6pwb14x_h!wJw){{#xB9C>` z9{VaFwh3S(A4I$w++D4%kG|Lf3c1DFZUg3p#^aY)hKt#8`7LM73fI0pb`gH@K;spQ z>TpJH!J?nz{`y0l%eU3O^n)rP_~1&?;%E!a;6cl8QOf$wM-l=U9s>gd4?n+n*1>G+ zV@5|`K@W}UhKiE4pe&p<|J6Y%A+MG)tzc057tM;{u}Cv_Jhjf!bZb#=u(7oCDJXbc z>X60?99vA1qh5EdQP5t23TN8f$mt5AX|q4#Iv#8W^t8+IK0QTkhv0WA0ee4~>9uY( zJ;a6K)1y1hZQ@H+rhx5iFN2Wyx8lW5+pf3&%C@Ts2F1l2$c*__lg*&5|K%>Kun^-d z`B(uqLi#q(+c`yPa+6Zsa_tGx;p! zI+=Ix*qy}F(HoJK%dCx5-MRb87nedb{`QA(mJvlBn?vSNRqOpU(6xM?XGg7MHd3i_ zH*ea0d!OS6w=s3&e4cjY!_8)@pd%tnbESj5@4b5ZeZ{w)RoeSsx_2VSC-b^qp85DY z4@u1S^&>0BLX%!{V1IHp5vx15#jtoM@D^x?oM|bSFe|IEcW>D-%HfgTBy2ttq-#c) z1l0T3(`Yy0Y#ue)y8o2eG{<=3D7kk%%zALK2dr(G*4 z3(h6;vh4yP@hTMvtt70HM?zpz9@#-x7M6*{DYS@ycZWL3~1D!(c=2J~{eTvds4KZ-ar#I7M$wiU) z=)YU8#9o5}kK;~^QRF$`k?A2}HZVh`;%JM>L?qiJlxz4~FaRaq3VIrhfKYrfs$v9- zGhbO~7{#Nb{$i2!+dD}FeekqzW?X9Hpx645UN#8}rix5OhpJ5&p+S*hR2YXd-}2BF zLuW#T{#W;*QH%3PFZV)r@+&?~;UimlYZ%=N-+w;IrQNJfEeSennF{UF^Rle@7dMu9 zvDuy93PV&Dt172LTbrVF`t)+;JPz3pe~m9O;rFnI${r7lKYC6f_=R7ssN+%!x9Koe z?q}MbkCGP|$;d)@tw?Ikei++dSPZ@q#q{N*BVG`XNg+F?Y_>CsVklp)9%O3YWH}%2 z*XWPskPR2xN@qsP&E1^OznB;_rdk~HD5r%%uakV=>P$32$Qk$2jaQ%Xb5EtFR4}@y z@$+ATgE>BtHMVN;O2h>A9f5~wsNnlYS5}RR11wI*cX5ZTSVkUpK%xL?pN(g@pD4N& zO)*yrSO#k4{EWeTop%Cwhr6q~uTm}`7sk%~h)1h=#pEgOO3?_=uh~6_L*jW_-r@X; z^2TG;k1a2%*SzL5A^QIAnaolWijPd3N;}IFcHxjS$46KrX`Z{oPXlEeY#dKEI85f% zBC|Db_L+T8)X1t~Bph#i^ZowST!h}g#qy}L5 zh)>Srgl~Rae8Md8jJh3**Ji)lT_)mMo<%Th=AVDsqXK<%zh!1-J{oLH1#6*G?fvJV ziqArhVuiX0WnrrP$y-ajk&>)%v7D**4=ci*#;%%#lCAlA2P(>l@;V<{KjI@ky40+J zZuezEwd6Yv55IQPw~b9ltDy^|hrUEU=r3P_SxYEIq+nI$o2$!$8NxS?A1UM*;HQwV z#Tv9b26dr=QjpY_&uzrMSf7AJBVLBZnK9@z*_91NM)5;8;<~jjI;ZfJ{mC5jsh11K4$&k+LWa3J{Xh{ym>@haUsdzelwp_W7^tSt8 zp#vG{^0*(`7^Ufj%1hmGZIX3m93zw1^PAr+`pNdC*9UTo3KMTzJ1}PdBSXe86tgb! zgP|~&e&lB|u>y9l3@{8hZGOC3PZn%^u?mE~_2r>kj3~{4BzW^7w=kNuI6{*W!*A)? zChYGK(aR>8s<}R{wak!Dyz9bNE*H8PcfI1wNASk0Gg85FJ29wggV@gYCUk1AL@_gV-6Rd4xSu<4(5KD+EZ}hy#J+rzzj82 zA(8$kw8qweP1`@Dc;`y_J?eq0B4pRr>(OmxKKHBHYN>tA@CRoQ=12hvyZL~qr4&=x zF0b^+RfE0C@{qb*(<*>S)GPKRn|E2J#+SKguK08gonJlwLD~A4vb(GPT6EW-zf!(2 zC)asq>G*FS+KE%(o&~=gc$Js=9Jlz}`7}Yi}eaL&6<12b*zj1A+ ziBa%$Not6Pl?N)OY{t=b*A(Lybv@e6a<*C@R=czwg4ENa7yP5=fqg<83;?i$TjjQh z>2e~%k(L*_vDf0@NGrk*IcFGQTpNoJT;N3**QQCsn6d{98p9C-%$A|le?L!Ou|HA_ zb)?Q!kXLtnou#aw}< z;#;TPQMB6z{R+0^lpu~>-4;XAr6JH904ylyd4Zvh0kgEwSAK{w%$UEo2!BeA@3I0* zIp!Iu{kanX-!Gie%n3R)vVj+z0BlPUVf5`(E~i3!N#&Z{mEjA@lgxp@OudP~J8v~D$KJ%laCx*Bq4~N<9#}4H#^BLc6Itr=9Ypmf` zbsI0>#;jM~w&CX$YP&oDnH*s`C3IMOo zH%y$2RMu?Fsw}Z?$)6v#w=J#_1T2gO?JBz#9Cqg|PgJewb7+gPb8UTh+>mc~Arbm1 zLwl|r&8EnJBnsy&fTsm}l*L#YBkd)_Dn?^%19Sd|S4EKcus-p;`jZ@y8>%&8L6zvq$44Y@?w$Gd(E3X74UAf7lGtzUvdAY2c#hbuUWJkj z1mfwfm&VcGbtNGT%V)d6asK(|w7J-ut?1s^B)9$7di1W^uAN@|U33iYEx2qi&iQj? z$EVt4>e6e+x|u0Ldcgmeh?VozQHy1>zn1fcQqv==D1zjG_up5!Q& z=w>WLq_%B+0)6E-PNb0*&~%IKsML^Fh$jm=Qp$~ve1;)pSjO6f>otB6xYkT}lSv#& znNb(N-#X#w=o+xkf!aUj2k)-X?;d;0<8Nkf*hu`l^>_+}nebaQeRnBqV&VwX$?*=* z(#r{tUJN=0=*+dduP|WOtQ$H4Ic0Ui(d}@@C@xD6-zifu8>8zqbu9Hl#8$wY)0TM7 zf;(?;EVnZ@($`P+yn{D4++3<2WDn=kYhSRmZkrG8$uYr>+(X>rI~BSsO$4^C#DNF| zt8h%FAuNr_C0%N7&XPQ-hGbN zDQG9IAKkO@ib`jp7LopD@-nDP0&?*caIlvgE;RV0HK%gS@lrtOQZxz6Gu(-d$3e)2 zsg728Y2NG>b^4JfH7|EmY}MsoU8nZ&Fl`MPS(PJ8)AsEr=vM6NN_w$o4niezmKQ)?;g)jS384$;HdhfG?`J5J!j&aa#2+K3Uc$H_u zA~H|E^{(~OSKJ!Tj|>ABHvXi{qvjVPj z^-@8SBmJxTefb7n%U+cU!Wxu8lykw*IHx!@#(29DX;@6endo|{{bP#69 zMj`K9xh)<-J`}88)S*Mt!;`n_7cQh!r0aRd*XSNbHw?v^KhAB@X;`TJYF5Q7O&7mX zT(-xDyMZX8Ib4=yp!1&rC^)nS*g5LhH?g|YaNo2kL~&v(RiJ+V`XUsmu!|dj^cJ^9IN2RrawJS3>EpUYD#q^l>|Gn^PTZ@1s1|S@dLT4C{-_Q zIr^PCN72?_^O2z(I;N=f-Q7$$u?Fy>nfc;6fzxXS?niHBsTa=IIQh>spGj6%I)E~N z#C6wGEiI2hy9!)E*=Sw##n`JIoauMnkgcEiE87YH9AIZ17JTun4@^fNnf!amfqwG{o{Q6Y#ZWvhCeLrmOVq(e zECo$I6xM5}D98O7MMRHWjg-(yZ|T-n*P=kx3?go90T$J?bLLjf{?sBB``wJ^jdC3p57&Pqr2rn}!Rl zl>2+Lq*=;kA_1RYml!t#-r4~_4Q8DUGphHP& zs%DM0=yu^XhyCL9($b9P_^7}a#?)MU%Y9Vt=(y>|LyxX6E1Uzed6ar88eY$V3dR&c z2Leuh9alH}IlQd6ixMn#l-{FQvAkPt^m0&rw%dvgaKsyCPIcF$2r#!$x@x_d@uRQI3Yh$Io zpj)3NmPR3{D}ao5O!r350)w<%v}*Xh>N_9IYUtB6!I%#roc+q{g3;NdoZG{B`_=jc#zW;4X{wfK*Zd!@E&zh9q2tBce13)H+zop9_>d}BO7?k%7i*^K z{4}B-`%Rp0&Z$p325pgQI<0i4(k^~0;yyebrvL>G&g#`$wlvYqs=>iXZQ=AbH<+L0 zBWpJwwB}4~5wkV|@o82`ae!GLihuAk8-KBOmc--zSzP*Vo~lgU9N0S!CA*3ZtU7aa z_o6(_d~!1chO1P>tSUY;XGsyc{u?GLoSe2O+&H5ZX2SDb8ph-dhR@OsbzrJ`<4$0G z_f7?ZV*2e<&c@E~f>5bkpDSPI=*#}gm6vj}157a;F*Ro=do^H7@tP=68h7hv$i+t` zYpBA@BX%NpN2jkpxJugU3skdBzYZn*tv>N1-oftYIDBK&U`C_dNM~HxJb!%0tF}`E4 zXkkWNte&i~#!h_Z{9C-Gw0s)~a_NMg+9n9g*^!UvcH)2H0*N4dAZB0a{q*K*n>R*l z%9-m-uKmn~N^iH8UzeC!fJxSi&RMPH+vE=)ST$pc?!&}dCRu2OgaGTq=BcNz%qw>H zSGqOUpr1fQO(hmaDf4pZ5Ya}jXixXEM2u-9*iHj9g}$3Zef?=#g|#F z4Oc%i{FH_E_@K&(`6if1O_4K2ze*Rj695@xe?q$BT_(Tnd#W7@+yyxVgg@Gbv zq}VcaHNWWq9=6Y;GVh;zsK1M&>;LctRDYY+l3ZKRRckok<63ySPDOA&@}ay{nVh%P zndQ)CzIse|tW+7++Nq{qK%J^Xp){+!0wv3;%@-TsAj<@=*FlI!Co(x=mWzoO_*@srKCm9y1e*ul2 zK>qLlGghdd8ZZk>=8Due(DV~OLVFM_bKE^>RA zPJ@4(OwM^ha%e8( zSFBKfU)Xr4i~swpK!vP)w;F>s)9tk}0x%DbH zl9(;LmV8b=U$i~f?ECeTjZkRxN>kto!|mi-3BMp4|Ij6T?tmPQ*Ti9)3$iR4}(ytF}eaZtjxkXJ!Skl=ree4X#D6E2!C; zGlh|$)wF3lnT*czmRjzdZwjS+?@%(G_Sjk)^m%McISCs=$)?Ju*?I^l$f@o&_8$l+ zRZ@iRou(foO#KzWbrq@YqMxi=@y-%93g$CB!wSm6|qTp$N4>*TIF^IzW_}W0BHoQxm zXfxMdUxf`K@#us@JN<5*++QRV&tZBI!gr>p`u&Ksxu%P0f>g0jQHaBaAB+ z#&s0`7j17DRpt7&dy}FdUD7Sm0@B?oElP)UNq2)tw@7yhA|2A*4bt7AbT{m4s_Va9 zd+g`gYx%tI7snco;Tm(^^SgVg6$a$P-6(_o{r&Owd0!FkK70C1Hd(g2eUC&ahU{mZ1qyT_w%TD z%+LVHDGuaO;WWB;5;^T~AhNK0LCvx^in531V0n)bhGXVK)Q+Q)jmUp{%z~WYJ#>2U z>+b{~K^8k^*$;(2Oqt@+$HPC|T5DbAh3K`)nVXG#5Z6S4KH9Ci$fodhWPUnCvpxJ` z_2$O4D(i}nPLaN^X4F|h*+x*Nj2p83FhO(tXA%DRk43O_)}9Idy1b-;$9^a^_*@W7 ziGhMFAff+{n(by~-AtNr%X2LfmR;c}R=~1!!U)*~?O!v#W`itD-(;`fm0eFsUqBv{ z_5a6@2|M?`;J?-(MX5dg@#UkrUj5N;gPkh{#+Ux9 z>fv}Qv?O|u!gcqcoM2C@2;+2zFMQXqGaQ8>enbptokEtywxjdzHr{wkkWm66n{LL- zuJoK&`RQHpOmDSxF1Fe#&*rhuoq;1=u0~u8i!oN#+UuIjD4@vXIonyP^C{n3jJ9^j?urBu#B6rhmV znpk8f)iVgYq1a#RBY1gTPCr-g;@78kN^1PI6(Wu2bhlX0rq@7+8ZTtYIFfBEvb*Gm zo2^AYeP}1&x}7n@Yd1!o$mxXB7KHuIbSzJqpa>gmQ@R_C$%`jg*!WveMA)j)B$Cim z2U1n({171>Nq=xUBiJ{;k0r-#LMBW6iFjffV6Pg@=VKiY1IOKwZoVod;$YxQ^?$O{ zus>TE+vcgX;=4QV8j1PrJtezo77(+wq(zU6cRN&5E1VzZ+ z&MeOl>6^zk{KS?1Y9LG>29CrgM%Ey;)6kV5npVT zZruB^^A>Q`ZU&Yazlg)$+VzmtT}!0OQOx3{{lGx8o~PLWKkaZQ-3GzIHIgF1)hxAw z3F2B}rnq<(aq)k+M|uxIi(}S?vc%&WyV}8oOpC{55#!-SpI8+Om0YO_eCY|+5a~}H zEvt28z#o-Nh_8NzYyYA>Uzd!UjMAnVp2|FpCH3msq*E+tBgyDUs9jrnPaH{o z*4Reny;clr5uJ&mA&4Tcsy#Ug8ZsBWs(xC`lF~MjswsW6HN-XZfGiKh3L_W}B>SP& zYBjidt8w^r90bxVVIh zt_BJ$k0T27c)T1M)qTnt;Ivr6HsP`G;9&^SeNav$a=Spg53glNx;U(KY$M=wtgT3@mE8+JJlK`!@JKe2!M70+nJ1 z3(~7~CLu6y0Ug}{EW9@KsNx=_yrvvx%oSb`k%54aaCh($m9W__9Ch*QRFz>$o|vCK z!_dsNuHp3Q?!4|=o>MHBOMN26_ZXVUpsR}+pCE{+%6&FX1L=v`*TD&6ZrT}6cHW;o zf-qzE`U7dQ0#HKdvx;?gGHKPd7cWy6zgfNW^0PV$cK0>bMI4{w{h;Uqp*|DrBGX-H z|In=}>&kT1)q|&T?7Fkf1h;VtnWHzQ>_{A=u>le{ANV2%t#T{ z2XTe1;Beh51Edcz0M5PF2b%Y~9Xr>`<@T)N$eTf;_XKWQg79o&fFfCP4{u18RqB7d z+gD1f4NPM-nR9AFJq0#I!7N2}9a z0YQK)lV7N@V0JoCZVkbdD4?M1>YsI926{Z@8WS=WgZtZCykM56n6Dc4Y*}LQau@dFnY;Hak`e`1#nupK{Y_XugY?`X zF`J6}?qm(c->g>W6L#1CwbiO*EY~ifSa;lA>cMi>c_|qj-9A?^q+BKh<#Oe8Ihyzv zErAfHbrcD2&TPcLyh9KEPw$Z9^##THN*DjleahRxQl^jRHf|lawGw|>t_0>C`9*hK z&t7_lZdrW1a@sr-u%O806VMvEbPbpUz8Un{p2hW`l)|DEfn-#90g`6K!IT>d{m|}6 zhxbRINK_^1R}4!pr}G`<=tnk!u$x%9Whj3$%#eCL0DcPY_Cf2#M`(`D*Tm*Tyg}I< zJ6$TzShIxQ_Zo*6PjJX9Q(X;y?3-HXtqMXffXE{sJAbHfm3?YjYB12UmOmYm6 zFw>DJ+)3I8Ey<9=fC7*h7%kkNILX}MQM_eO&rOSZbfxipLc}+?b>Bm_Yv1W`t-XjW zSsZ$@s53Civ{-vsF_G6vyq=Pq5Cq>7IW_c|l?*V2O#f2vxOwb`sD{#RjXwm6h+F4=u$$ajM>e;nV%jiS=kt<3k6dT0LU9>8qH$n&U0g zXs9|!z%=0#n0(bILeuPhAue&O4rEs!``_!7?oLFAbEzjv^!KODenRe;vLjgFn?Y!B zu@y_28qH|!f2?d{4U>u zfCV~a#sQj{JzNmtb%w8<^ocI&{9O>2_fuq20g%4}U{0^=Q)7F~4H5E2X7_8~Hf404 znlY9c4?Ql^yiIKWG`ud~V2=&1*cV}B1?s5H8^y!mQcU%M=6HWSmMniU;~MQ?(HkqN z1;kFtM6tkwON>`3E~9q(yt=K){QW8$cQeA1(}rwjn|=((Bcq@~mYUbc7Yq~ita6Bh zOC(4SLVvT{r6L1kA~#ds$b%EU{cy96zC+~$t&J3P-ZD%y7~8!=C3MC;t{Zgeg)=!? zZ4wy2RZ;%vRZKj!15~P(!@iRBgg{;jj8uqmZgaRHY=0Ma%45!*R?zR-kMHVI7W4Qda%>h;kDJXIdd_*91XPW+hudgKP=PlP9KMp^~`2MC?k(abp7S>HGJVJ_q`c z*#i=8p&(#+XYsy4OBGX^r5zO!tM@FIgrvrUe0XNtjTt2Up6KRIZOsEd?_k=spnmkx z+?TDuQvr-x^5-|%*1OqGK?Qv~ebdjJcr14fmiZ_Pg<2rY-^ywOp(>WFy`yiedGkf1 zdSN<1dl4kkY9Uv62dF5td%kEKT($;ak^!x)b^SyQT3Qe`!@B@Xae|6s>rvHULN?9z zPiK-U04t2S$?+y)cOZck9^m@lYbCJulM0@04#TpUzGQx8=hpb}{yuR?=(bvO-K51q z-7mYqlN=>XjhZqEK%R!+u17xYGS1Hz+l9C?99dR+oY~`1|e zS`26u!GJ=~Z@}OE;jY~d*IkgZDPE`gYVT;$=7@+B5t0YfMH2X+!|Z>%FVAg`1|vKk zTP!}m|9u|W_(k@UPy!Ao6kFG`D%)-fTseAKaTH zsM{KS6h5oYzq9~qg=nXSyKv+fsoQ+iJ1KB)0vdrKRWFIf%y?i1>D~mUmn@GUwakac z#jjTnvp5U5p&Y<1n_<_8L}OXZL~$cYI3ppT}Vd^1jKH=Q+~u2i6|o3XRgh z>3oqe=BzOBV!tZ%FUH2-I$aBrV9j_0pv{LpgW*6;78~>$PC+KC7Fy3$`$|5|>Gb_R zAbCCV8N?f=CI@>~rQ<#ZKD#-URsxp|%ToKj?dQ&*9vl4P=5SsvPw+DZ$D6jE9z1OAc)(`dfr+ zli1zZ&FAa<(!4JyWD@0uOqbj9_wZT1X0{Xwd1}_aepq5S@USCfKh6_`j6Jn-m|T+c zI@+Fgc%+o(`@tCXs_Io>8>oKLfkFzRo%twpA_h!HtIFOR43tw|u>gsr*R))g5=8MJxl{%J-<87K{|2r_lAN$&C;U%-A5?O0L6H?Ug%vbmo zE7-p5@bxhZg)&>1s@BIWGrlgqJp8g2l?QH$CB z>SSXQ4?=b-N#LH8us36m*$3vRoLAWaScka%3C3Gb%s35)KT3NeZ$@{I++R=JxZ>+| zAq6OaOwJqAQRlQ{5;m+XcUrOr_NSvnQ{|#Ir-Lq0yu$Y;-b0zmp2h*&<=cTuJfqok z=z}$ssDrj*i(4(_5?4OpmVGDLZmV4R2Dx9W@-0XO?Y4PIxI~iZctqmW9o4-suJzoH z2iswX%QMQ9J?&@xe6${yR{G0(YeaoiKr9l@Xl8PBxbZqKYrMz`0=N26d@Gs?ci zhpJtCAU5HcpxpC}Nd>n*B@~S4R-JtrTO-@Unos9(+1t^`^?-vzq!)=!FbMjN*B90D z=a9;;7Jw`Pd_BYlnI%_ZKqg12B6|N=A$y>?P7L9R`Aa2xj?j&>!vWZhxz7z)QP+mD zY>1ucA=og71+y+g9-bUPz#E{+$J3)N?1^)5yaZnwJPgTSFPOcIw^hTjKp|Q59yR57 z4b{#8>)I~e3g+lvLrTy~5==>Q^a1QFkDlw@PL>l(% zb{_#pDH8|n^$Yx_Ld`B_5XSLM%E;yBa}eW^#V0(SZ61!B#{3>G1;wKi_6?a~8n;{I^q`sU)cDvwh4Dh04QQQ~sfB zH4b?k_EnEv(!G&K!0z1i_)!#CBM|D!@0;_l)Qk_X=7%!}ZjR2&$trPT6-Y;yr@KR+ zKKo&rcU&>UWj(((3O3ycrsw_^7+S53x~rX0WPiP83FNWIxnoA8emEeF!X491YUl8Q z-Ut^fHJQa+*wXCvC92$~=NgbZ0iVme?r!Zcz#9MfjHLz6R6wQdZ4+n=qvC_| zr9FfIq!+Jn+MMw6BA`UQPZ#11{XS9T)j%moka-3s=jnEI4v~DQ_`EO#>}D!WPBr7K8i5+=$Dr zz8RtcI_)TfHU`q-a~3uP9qbmP=l~Mg20CVoC%B5d9Gl)ou-@;kW(q`5E2~yxYPjsT zNFr^>tJTWBK$#7k#-;GPgnlc8sLE7OYC9Xo<&!CPTx`%7KpqJG~dZ+a|u=U~t4&L$tV8jwBp4rX)3LEK;V;H&%jy^7}@5y6*HQu1YyG_rYy6haTfz8BFVh-v9*TbRs!2lZa`o(Nv2HbGkeft zaWLTzzagtPGH`DYJnV=A8%xW_IK2tJ>RdLlTU4M?QdwaX2JW6hGg`DSb4csE6Y)O1 z$oha$oCWqCG~yxRX7f%UhhO*aZ@Im)fdNTPtrbo-%U?ZW^!t5Lra-#7$fQomz*OLGh&4M1)`ENHmA{DtOj+e8=YtVE zl>}{y_D%$OGqswGr|2A!&H%fN%4MUcRDW0s9SHbkw61pv*(4zGiYjZr!=+yjK;~&S z$6GGD&i4jgPVS^D?LxoEO#+2o&0Al-FMvCI16vznox8|K)_fy(fP20TF0~aqZfK4R zMO!!Y)z48k#*s#IuT9j)016jODE*uI;ww6Ue}LJon-h!vOrvs%nA7orM)k2!zUr%e zm%;+^;@$31(;T(=SskE7FSP`r3xj#a6p?PVj_CA0;#OfjGgcMmv%atCt1*y_dA78} z2b2ocJ;9l7wQ~jk#C!?|awBWtv(b-`gdRe@W8|UPjY#GtW~? zk}~7b`}t~YNJ@TP?yQd;fOBZ7Uei9*Z1!PUq=T~d<t`;+xw=vVxpPiK(D*S z;o^y{4bE;~EH?^JKZh^J&}-ZyneRH-EP^Q$iY-vBg5hIEOvco_HtpU11Tl2EApYN-|ZC@4rVHoR(+r|asq{m zz0%o0@>`H&*?oQWQ;tbMt3(?nr0J%;Qwch@Y0ZV@5#(ald78ygKsoqfGl|Ov1)NSD zK*sDh5UYK_M&=RN-<6JZ0*W8;1U2f z5;Bh|k7dQST5gTFta3iC=G}!G&QB2L`6Qv_iId_D1nw<;47U2gBKBi; zTePG~tp+CwAA3_mi7+Awh`e2x=LNz>QNSnX6sPW9AF#>uvKTzxb~X<=WT0jKVT&Nb z?v4n{`uDSNdj`SJa-@>0ki9%>$%g1JS=@W5UrH5-uAwmo+_`Ts$m&TH;F2{P{A}n> z;>v3!_jx;&w+JBG_m_ofHCHLsfL(Vgzu*Z3wI98yG3A01z&z*ul!(`@H_>_mZ<75v(=@bwlv4rh?(^;8(x>Jr=og`D9WZW=E;62aGWE>;pdPCYB&A@O- zt5W@5-DL_(3zSu15Ms5?D)#}~J}P4U1+D43V4VvwG9f=cAowg&e%jRhOPN=4SyftE zdbPT;0tY6y|FJcHH~_Pbl|m`TwA=8ve%yaa4*$g0JXHsEJk`Hmye3bB*1v>mClM$6@WaJ1+x65>H4t|NdOnz6nd^v16S-Yyz1vG`jxiy zwjOar30v2>BJ)rCZe*`^rYlH1Zf#)VG+5G2qMmbF9X$Ei7i)@@DiM4TwX`EBi+Wza zxVOQIR^xCR@QagB^yb_o_$2P`?WB8W`j!lz_w4&Jebp ziBgP6EAizC3AxxStGiy6hNq#xWoYXNUEO*Lh#t+AwlCp~nq>Sdpb08E`$v}0-rC>t z*U4r2Cs;|_bku<`G@EPOXVJbC7IQNj^A*%39!U)97hp=*cI6|Pb@ZmQv`EeU=wu_% z_M22qv$%d9S-6nrT!jlJFq=|q;T)KNQO`bzoCduzLhVySW*PqivuV2~&>+_y4Lt8m z?1Bdx01C@nAwsSL4$uTeT5+!XOAs?tB~(kbI0kOa|Ob#{rE%_OWzu z)q%A79?mvX@T|vIeD?>$ADw}IDBU+AO6Fu=Prpx!)z5*b0Dxu)t}4CWGfTF}Y~7rz zB`VNtpsCRa;`PDOsL@magjYrPhX9*y&>-MSK3SCyV$BEM2xP|s3p|*FE9m~gWn&!X z2-LNMHDTkpn`QdT&q3X~6tqm}jD1!} z*D~N3y}-D6zh%V%Q z8PgUm^7Ra@3ccL+kH-s!RKF71lY8d4EQtny5@X4zE$9tESr$rtC)e8r#tU-5pKqsG zs>N(*uE(KB2+)(?4}%JI{R&-eM&}S@))WnAG-volS;bD}mxPN3^$!{$rqI>KrRAz;Loy0_jr>1B$_(8@rCCDv%pvqX7y~A(No1J^6fXk=z*ANl@hsZi2uUx2E3Mpd9ur@ zmYG@2@JomO!T%5H=W-~sGYiR5J*%ccq2$geIvx^hQR^|tO{dwfQQiiyqH?12HUIVw zNkQHrV4tplgC6R$pV(toZqP=;cqrxn_WW?EyWI3HVl_j|De+elYu26o;%?^r_(Hq9!x$<*Rf$G^DI)*A_S#nU zG@mY@1JT}Ij2csE&oZ28Mnzm4S3Dv$feQyqI^dHS`KWJk2H|;;HUlja^c^K;+`XOPLE3v% zP>6bacgMUfP;zLYjVQ22#L_`{e*w-9rs*x*_yUglTkJ;+nyHm)MGK3UJAEE8Z-Vud z4Om?~4taSScamIooCfH(XPj)j%KB;X+OQW+I+{gZorxU8m;S=R+u(v`Z zNKosk&i~uB%ToiWgw10912)6I>w13B=Bn5zFkf?v2GT8jy}iA!sNyv_IYr;j8w!YG zG+eqhtq-K=b2#nO+2ww~PghHBc3ayO&)I}i{oydmmI4aamWa}SK-Hc`Ti}Z`161wN zL71{{pYJui$^pPBFmQS|k8d!(YdVYd#q^PVG9f7bnH~@S>3t|%pR{AI5|YNLSV^L)tpkgtFRH06t(D*vDuHG`zTvV&suIkc(|tw+Z=4DH(v zM!q~?KMKQt;7j>J z*66}A4SXrNY4Aqahi<>rWLbo}e!-@+S#7WohF!GDz7uE1@wVS&E%3%!_&=KmC? zjJ9{1O7`c2w}A(%6-A=|AHZ_WL_AORzCd8PB1nTA0PEc6ti9!Sj>95{x zlKrkrfF@Oa@7T$bh9v*%(|8`hk-vxPb2HG@2>tc`_5acPXX_WrXL->(X)$KJ{>2W6 zXcjp-CJ&+V6PizYTjy-lIL46*$;FCKpTv8j<}W7 zSQC~q*#C)=ydzM1_Y;f2FM0FbC_zz-)T)6uc|or>A@--u5kU90~b$BxD>`FS$iLNv<=DsbZ%2T}6%YnAR%=qrG{<06wJJwIJb_@9RHrY6N&a zz{03{`A4tE21q4Y>aV-Ru?sv}MIz>P4kY5KUD*u59~E0iF+*ehI5k@iKH=v*vZ8T9 zFdR44kHh_azli|rfZh7I(*Ea1HpKw%&Xd!)e3eNOfta74>=Ve_-n3ky{|ECKb~r~_ z0|GFgVJm|oQuTtwoXoi)q$v*x$8xv5@=^7T&lr=|UTwmIG!S8N!zBN7yM~ezBh~43_V|e_^Jwpsx28 zDd^Q}VE{+t16v}G3;w}sUzRYRNUuEDT)qz8PX;b_Z`|;nzdaa9$b+wgVi)|2Bfz5Ky&j%Q+w@abiz*`#%l<*Z5Yry;BA?o8XllW`F zKl~ppc)87&b*EsgH!iKT6EfvSI5cn z4&bd%HMT8({o7OqkY9{y7#J{-5WGOazxXwa?r8!$8>pIazQ>)C@U|uaC@g~-4v_Fr z6UqydIDa3}^2g*rDKY4JQ_j`GBJXI8+T#jT(JgI~F;<%>v>tkYX#vK}^txlARZ0xR z%W~vftaC@(uX6C=HB&22ne)`kQEq1|eO^!nrl;7*eqL=1cq2keeh<7RU;5Zm*>Zm@ zWz_(+WRR!BO~@7W55TL)&~uTKz5u+6{G(xHx(XJ|gz7$5*#BKApaxM21fk6!K@JVb)5M9)uGU_>it9X=wEw(Fqnt?}2;?iD6x6+YX)=33FKuB# z$YQ3(fg}v{=Rs^rCVdjKf-}~mg&Y+Y6xkgeZ9u$e1z9_CC9Q=*V>FaIp&A#;waJgQ zVS1Cf@bFl!-modo$8SiCK6*VP8FM3MlO1}HRa@mD zozY_a9|D1j6Orw{0_4`$@`MXP>?v466nZL^kA6QT+Q2@ncm?zN;=Q0Fnn)1NVxm*fO0|Qzn%@KFbUzn2Rhct+HpEJt zu(lrNmOdg~abzK&btSbi5UQJ*MJ6cub4% z8SjS2`mYN>J&cJ+98~70%a+H^bd~D~Cuw?tZoh4Zx!jFRVfJHII9CcJ_{w zkrVo2rK@4^(`OHfRgkQls$TUKCn;I1LX`{;6_5SSK+5Gp*rx*EB9#l*_qT$KiPA*_ z78cN++3bLtR(#W5BMYj|tp}egEMWCJTXO7U<2!dyx4ePnG+tLKY0X!kZcL}WZ2ysZ zWg|yn_23x(-U{dfEVl*WJ`E@3PnW2``rJSz7-ULj{o#>6HmgC-=Kj7Dpn2%Re=A_% z?2YFmA(m9s>Ff4+8u^e7z+%v7-czZeOXM-AmKg~x`EM@v;0hc%g{AO{=^^-$j(31L z@BYm-0wgAQq#WQzEavaH^toeJd)>)-2!5$aPTcHY2RQQ|9pG-O-E3vsgA~f=lP_z{ zHKsDe4#jClSVkb1Q99KAMyN-E1eK2J+`nHZW+CNEMHbsj9ftz`mVl&j%k^%Bs-2NI zOo~_SqL0+MmL1lM!7QZLP7C7f?x_;xSW;vlX!)eCa5(c2x>_krrqcfU4!hYD_t%5GaU%vjufp^>W^)yNj7i?D-Oi?`g|d(UhGS#P_F5QW!7yE zH${8D_d#H$NVkI+Pc5%lZ=ZZ)D$5(ouMK@{2DW%WkS$4@uJHEBV})oIX(^~27&oc{Ccix7L5DucuykWz#nlB zgiMt5^|+d!00w-vtiwuI(lBofT9H!zN$Xp&9!eLh4~*w@sud=ofC=2)Kh0*saqoRc zs}+S@?n|rli}-SaBK>I@^-4>Xn>yvNgtd9QjG{8REyZIK{AGm~1<9<$Ug+U(on(5tF;Z){((&geJMP z3^9kPAAcM6m^MQImmPwQX1G*4$o$FfJD5NH!J#3Wz>EMojqmMpUu4060Ax=P!@Dq5 zzIi|=&=$d|4YPIkh%Jp4i`^2k@?YucGjV|{Ud(eA)ZaHo7XUz;O3pRzRp&LlF~&)O zHI%EgUfX@2%3(I;8=?E~`F@4Y`Bxy7C;no7+B{o>`dBZ#ROKPtvqs@i90`!BsK+r6 zyd_=5*BAB@*UsfDE)S~|gF}e<@J(KRrf-|qrIzVB<;YX>1+lN)0zoLvGG^ReT<=6d zzN7&mzqM3gaTIM-+uax;gJ*0-P<56=FDm;qp<>9c0o7LDzo6w1m%d$fpzlR5_JO&t z6y6@V-}S~b;~Dl}dD|1Yq>J!S1Ng3R`>ucyClK0rf|Ts^*FqBN)kjQU%;$Z+W(DcK z-Mq{7Ft17gaDxy~iF_~LX0g=Uq!jpLa6Qj?Q5rix0_{APXxy1Vt>lkutUTs?{N2N7 zCNDoxWUnWY85V_vKalk{(JwsJuj+nL&QS9?Ys6v9)&ZOBfb;_%_uLOtbRXzKK<=i_ z@l?o*`&z{#L~$(o;mczM)BZrN`K%thJEm>eaG=P2nH?w-2tG$Mh3kGXn-2gHfXgdg ztVWZy=thMSYRKOhCYT#4SztZwsB_`K`)Ui$bdra3q6i0mIwOyx7 z^_>GbIZ{(_DVx^6=ye2kj)h}k$HLs>RFLC#4H zmiJ`xd3wg#^R+@h&?w}{4WQYKRMX@=dE!kCvYP*Q^Wj&E>OJHFNdH;;J$L;we&}u` z#&>5ijty=NM3Zjg$AqC0cib+ z@xu93?Z~kbm!mHXrr}SX>6Ahx(I_|r&Ax1R_);vh4I^)KUK!d;iC{wNw$U{2B>B3j z@%}n*4RP)D{<;TjI%u@7=&1)#=>^Agr$qyYJ8B)C?SG}jK#BmwjFpKh)08Ta;!j96 zH7B!B2nf9ieA4zFjPlipt=ut8Rx!dAoY9PGR0F2dAG5Y%36p2q&KcAknt>>25!;t! zN5EkRMzwr95ZtbsX1F|J$I&WdwKX;YeiAUztjmnXo+5TEp)DC7tA>!8lzR*q;89p2 z7!CQ<*v}d~T8KqZ$gU)JJ^~oP;fp}5?yzqjQsISm-)E4hWp5b{F?EVLMP~r>Gu^4Q z9grzPT>H$Td2pQR{nn?bAfnZ_@+fvQT6(pu&8f!z7Z`V%0<#Vo z#%_S%{AGcvtbP2>`iw$7uAC$%KQd6 za(ps`vlQ!j8ik)ef)EOmbbLkRrCz#?weNiaKV<>3 zBwzjfCTUXT6Osk;8o}L(Y8>ESL?jn<0r~AhBI4RRd7nCCm@3+y*bzL5xew1uCL2a1 z0H2(kpzpVdKl(YIYOS%@8#C3xdAn&LErZ#(`OydZ{m*SQAE)4OzDa};1_xqy$9DwE zObc(I6jU{XNesk^3P$*FVI%_LAjf*}lL%dz`6#bko-m;(bx3ja_cOrV=u0=rI8>6h;k4{uc!s{9g z%xgYpBDmxWHQ+9`)J8`s8%^1}FG7&>T@9RV5T0-;EYZAxp`BL~|-Aj-B++07lot!PE2WnaghPy zoB26?ZpK>|_&!zJ$3Y+0cA9rs!&wbc4lAi;lhdDpuvyqPHC8AR* z^YhtPCfpS1`CfCf6M(dV& zbaW=4t4zmFKY!`Uqd(a%W}G;Y&jTHoQT@0fw>5t^oAJHo1z9thvpcYK1wnaGYvrzl8)3_J0?CpQ_ku4s_ zZXuQ9;)DQZd`LvTK>Zt91QE!~=;zK}sgzur)&v8tSyt zEt7IXP&)gtMHRyq@(z6&*g9OI`Z%C@pKL!!#FnP;Wj$Q(tNmST3+{sXYS^%>&AqeY z+lE^jg@+QGYsdQv&u-7Xc^dBP^u&p@{EM^I>U(}>e+YChSBL1gC9dAep(RB`(SY$=2V$EdS*?L zF_9O%kwVNmw_UETV1uSmG+ng_(3K3&SaGL9x&6HTFx)xX4B)mic?}L!>%NaD9Ur@H zV!03`qw`ph29abD8*!you zEnBa22F^f>UU^aj{9V8BS5zA^@;yN^!2!F|M#2gj>!>9g-9nhMp_4cS~0-;q*-ee3va|6uyH_No#0F#tIxa+P7ApL9cj1^8GwBBu{?oWFy-tJ ztJ>Dacls#ck@DaWuhIZNZ06bJdU4%BdGT`g>yA)9&LRiNBK7*&nN$)T(chE2CDpWC-WF>T`*7H z0Z0{v)76`6=T!5g_(j#ooVFvp(#0xmI$$>my*M`MIs_-5^mum}jqbkbP&1Cz$7^OJ z&`0rl7K%b|oN#Bp-Uiq1JDWs=@Hz8!*gYJZyUdq|>jMX>>>*$kW2sBjyrZM0KvjI^ z$^Mo9Fr!13*|qn{lN>edtiVgHOJVDskT2GAU6x~0M1LAf#y~=jtIS_#JmyP8h2lC3cjuO6lSHkap^jP&3q-D$Kc6r%4g_o<)oE}eBqRuP2efB5uRpeSTSw7 zHwe)xUHi(ss6JKZBp6B;kJ1JH%Mfs(?cN#EoaS3KCA&AMlTu(?^_?ZfGbyu;O|Dc% zK{SjQndeJ^w{pC(dSm~BySvt7olLqpw=<~qxmmpqQ!;5JD^886Cu{v9O?407jV@Em zEX5E`Mm&-iu99h5>5cOUr!zzWefNWU?MnW{d1mF6p<)}0AiS+|*s`ZzA6@p!rkpQq zol8DaCuP!U4<_5BC|FIt7AJQocw;o&d^?|7PGJ9f-iso3i(6TO4LE3|qdE2}WU(^vRgaU`2#Juv?)0S<3$U zlav&)%MycKwtv)cFVTuzY7t4PKe#!H)z|n4^R37KnT~l|YSE0!|c~2E2bhmet!#v8h4gEb7!<<^B5zUMNQ#gjxC@uD? zd(x+RXtASbk=eSd-;dFfqL6TVnF`~M2`ZkEO^&efysl3MmI3MSFV|k;I?=cEsvKs) zY1F@=sfBRVvvJP*6IhX*4$pS8eQb#WPNm)#<|r)t+GTCkn)%(9KPW0a`J~{HrW?aw zlAPY2?kf>W=yy7VnFBhHzE$_bi=~K)U^Ne$>b^L3Axfoip~4d$zK)*8a@rX&Ha}oh z`1C?07@wbWCZ&nQ>g@vNUgvJ?xQTY_vGK3Q%Rwn^f$6?vXBi4g#KP$$YDDX-Kd>4wHw)(y;f`wu$=dr1ixk23 z-%Ojb2RxZOquD5?xY+JDGtjU5Uj!2iVCJi_3*OXn_1O^eJ0sF5TC{ei)kQo4Ey76; zxMTu{*H;_RC3ybdVk?ZO7&UHCBim6%KuZ%MD`BIk-~^Vde_Liv`9Qg?e)l*#o&TJ3 zp(dunI%Frodqn$kP@Z2s@NP%LxcTd;V0bhwE7c4Wr^!B}>yJq#Er)~9vwf1F-r(v_ zu6dU(c0lGmoRKbN@*x-sB4|^b*0Kp6%Vp#r)eEp?8Lwg6BLz-A$ zDAA%B2US-MBVsmCW-L6B7}YD^$duZ2jO|U;p@QNb`75;ZpywQ?)zXJ89eR|Z{VK(f zdA)Hh1&)PL(=pxV%x`+0vfJ-KDeChGC z4nCLTm?g8PerSOj5;dI_(z>_|mMu)Tx(`5O+`Lk^L$(Rr#MT~z3$t+VM6sTd>9DGB zZUmZZ#hYmwF&!)a&_U2{t=I@>;3k$$JVQVs;bP3vxALzm6@tBJX4WFMnSto`-I_4o z9I5-JxR-p;@PVsy+C(|zXj$#MMoLs=7c15g>s|LN6Cd^j4J$}41?Y)zzMGk;H$w_4 z4;)7&;(yyFskGP|S8APDY0!2&nq}j1c&wjm)rb#wI#qw|H(1z!1kmLn^=?;GHz1Vi zb?~O1?asuV{KR-)Wi1yc3Ub6j@d-or(c6a2ipSqj9S&Cq0ql0AFKYJ6VaQm;zq78U zytq>x_45$@wuKHD)npYnZO)+x)SX&89Eou;*$i z9+ogq1hj4vo$6F>oso7LC{En#;BitjeD`kaYUdp5;ICZwobO&9qbYla?l)MxARkD* zU7EUVsPJMns2{t$jROGR#0f1A<+z1{BxC*Ewo)Vj5l9q%6z|zM z3pM4eUw&THBa_6%{N0x3Y?kKytkyFu3>D-Fcx~KH!`?G{F{GkwtA;!=dFq0@zql;H z>$-;q)V_#^74MMk@qChaPSagtPK;(Mlh;UcZ-Fs$XSOEngFu!b7`ux|Q{`1PxSSG` z2)GLZ)B;5s`*>2)!xMEU0f3P&wMm(QXa~l3w2nMv* z)f7U320%1%q8OcHM=6b_7Bc|lEAY4o=UUie;Vhj1#5JU2+2o71+YxA76+kj$`qnI1 z5XR7QxjDh9r~Ce2S^&TD_Mn{sYFInZox!m#)nQ4mQQL`X*s_R|IO*QGhFi~?Q{shh zHYAA`n~867hl(`WKF}*Z1umT?WcS;7D(<2Uddl_I0F3z46j+=m^y{%FpKI(*0=87@ z-PIbkZq+?6o1-juW}yYLpZOdoIOv>eTF?k0Y`ti3J$^{Y=g#f_fG8P>F7-7wc(^Zg z8&6wBzVMyiv~``7aP**sCV@d%5#=9S#l%oMIHhjc z?5iFJd=OC9{0P?GyA9jFMJT&f`%i7n?jSF4X89*obV#q^St#GpSm6SYq+ zeQRzPS!=!`XJ5_fFvkrcOlSLI`vH3n_4|j<-W|piG@A8e*zT^p%Tr;A?Ff+m2DiVQ zW)Wr|e+W=!cuCr_;955E)oSr~`LI1iK1_r=F8Jx*y^Ec4!%CagPwM4pDM+un{YT<3 z@E##;GQGN+&)CwwFcF~8`GJN{mE9uP)_C}705|BDRf3YS|H=&qFpk9cm&EcLp!%P} zpa%n-@_MyP{?!LOGYvu4=~<>$Csz%z zPwZ3MXl5_&iv;Mv52nhLlPdVECdPmO?8d=;qn8cb&#x|y{S0bP2%Fm(Y98y)ycP|@ zLGF;f32EyYi#x5CZu;1-?!V5@^w?ESwr?DG(M-h+qcA6-FX+VWM-C0OKZF_qFioEG z{-J)Yb1`h0)eYaudXHlYQ?U-9Sod)}-8W*H@zgb%7%*KHev)ne$mdiB-+BJQn&y58EhZ$Xff zZYc@rknRv91Oe#|Y3c4%>6Y$NK`H4j=?0~{ySsVUPu%yl_dV~-b8VkLo*9QxbkyHB z)>`Lz9>?d2yo&}(!w;m@N5b@6P5 zl&ONJ2pmm3WncA#ZUs)__*lt&gkWAmAAxSlLCRavu8I7679TxU>fplkx=;A=xJ$!Z zi4T%N&kcB$54B71DlD5F?KijHnVHJC<1L6xvPThinvFhqp2uU0>CePJWM8*O@%JGv#$z86 zk;fE3Ksu`vZ?fn4YVvw6yeg4vGn{e{%;%kUr<%bUxd*Bz5PuF2=9AGx=`Io8h~U21 zUzRf%Rul1_mTN#wNL=>xr(WuI1a!&^6)0t4EVPA&mKZbXt?r0W%TtpiauzUbJ^`I6 z7F)!ttE+*JucgN`9L~Rn24GU*Xg;v_fA{V_qfTAeeYo%p*D^$j1o{{8edu;1{QJ1E z1*+jdJe4kVqq!$wi_tD~1P#I45WF8q z2$(ISSIn7^RYD0;ykUnVw>$tK&glmO`0_MhPl}=Cj4Fcy)f0zzUxXwCnW|WokQWM3 zH;c_-!<(5vRa?GWsdU(6yf|9-6Fa`N^pNGmjGyiv5~dT=$zRwV=8Ml?_Fj1~-1ON#lCQMGkPXc^lp@l~6NxWEOd4 zqFV8_wf-Q#=Cr6$pPg9HleYbnMC41!E@4L;|JAmXv65MWC`~w0F)#%zvr5r_TQ^~c zgyNDG%^ra91hFfYF(?u0q`DPE#n0*k?n0&OwjUpZO!An#pJUHqx6^P4^pO)#-UIfl z7pJg{E;&eDvn1bpnEMc1>aOU-z=;5G%qH+LRy70#t@7ugmqUJ#*FogWk$3{^7bc^f zW8Yo})61Ri5Y5MPa%PH$`w?(j>ibO+j!Q%GmB%XFN~S2n;r+kxitXzlW!hYC;7IX! z9$3+9m!mX4IDQUDygj?pDOG6w9@@HR>8XhdKr{(#wX&t$K2I(Sb$7?zICS7}??jXT z^K~yq2&g6T?{LZy-lh=I`;Uy_2sPWYFXaQ<@o`ul>IyOi?ds_jC3dufbcZHp?FCd1>0_k^K z;p^wUkS#Sbi)tWC<@VM1$QK2o`xnPSXjif++)TW7FjRuUurpqJ@L6rWLg&S;uWDSM zRILEk;p@3?2-ZDum=@}61IdudR4y*( zZB~uVM~~Rt$%1gYKxeE=%}i2j<+r?b`OoC7qCT~b+pX!OS#R@|hQBI3HPE#>j|nUn z=+nBwEm>iV={6ZGEoil6F@EX)909XqbcIPf^ru%!ln!h>pNo9nY^j1{F){N;Tnx&9 zLT=>$rm*{cMwpX@XfO5n#m0@xSB_b`J@8GH^S#sLDN9yL1>G5c`yn3vdq0G!Gn6{k zI_RZTTFAfflxKfe)Ji;7 z1mAV>xszr`cnkUjPz#lCv_1Yyodgib|5lwu11!*nCc8ly@WeHcY-g?imFJ|8 z=&-*%0F~3&I|k``0EA_FmUGI`T!qd15i!5-Zu z{Sge5iPH1!zWl-EMjW73Odv|f{!(oC{}Y54Fb57v;(O3GE_cuFFR(X(X${hIsEP6? zz+SF#6H<@@qEyU`+gV>crU!r8-xp+8csqid0wOLFD9~`g&zglnuIbz**x9x&&-S+> zz~@k2+JG#I|Mm(4<@PwZp>c?RG{?LKDwMNx4>1r`HV?F$AGLR98{!H@!-=*2AGr@Q zVAoKH+~$rFO00<%-`W~VsSRxc=rpxPhM&8|XxK5(hSnnw z|1nx+1Xr`XyO`y-uLSwG#ReI+be`t7(B0$@gzgd0rC&G(x?Aqr=igs6nm{ZP&1!QbT$*>4pzM^%IaXsR)WR^joUI03IHDcLAcE|(O^^W!FJ;Z?rjKpz&U)gml zAcc{|n}m2|gek8*G$%ljDK}R`3bsxGy*4#4_s7y5Lq zZ`zFuh`%z$0)e5_^I5UM3lYr|K!&xxJORp&1VTVNL}X#)%S#pT@aw+SZdz=YjbJy! zG3bj1zASN${&V1L*Q|BsR(y}o`dK{lIYO`gOuYxyYApyS{qgyQFNoYEbKFuDqrN|S zh74Vf1F>jL0SnrlMGM&Z{%xBVTr?Eb=zqR|cNCOqNDK5Rn9*AWWw7(;;d!^ z4Ni%%j3|hFSlV1=(tNA1*_S~^xXVLmC>a-_f5YuYJneeLNbnej?_^geC%%~WY5@?a#c&|qsH;(Y_x27ib_<=5kyg^?( zH*atR+P;yZvfn)B!v;s-@0SzUCI3J)ay{$Cxz{#|yZ+W~2zGI6Bp+RNTMk<9mj(`Sd9`s%50@uas%@jm~~YK9@p?kyy(Dz5zCCo zwesvBx^sV{l@3e<q4p9Kl8l4 zKn5-pJc?AihNdx42aMcV>ew4*E7b@<&=%38ZQB_G9HO)c_oJ(+G#?{8yNR zS>nwn3}zGxHjqfbnB0+f5mC6+{n3Rk^x9$gmOE<`RSXBq-S0TIt24?JFzq+a%I@1c zt0tTgO*9ZO>pkZz%++u*Cgin2G*fYTtX0iMs!am?0wUYhz4Rk%WoAqdknypf_izkP zR>^V#UhO1b_82(`w`3*ecYO%a0N1KzJx0c~oT)`74NN;S9W68-)KJQa%N>Hf z(ce`%*le)9oodXimssF{7GWS$d&-!jPbv3KJa77E;`v}Wbm_$Mrk|?M=&seB$m z4?@+|hNSK7zsOg;{Vx}IXq_|!|y!-L}r zAMlE=e`wJAekOOoPa4{%^9_%;))CA&yLBunUWxSuvPBX$Z z4=UbFf7eT~ESV}A(C1cWObQRd|Ji-|zO>e4kmbC39R%aSUYu3Dd-WO<1B((=`_BPGumNLFS9@MAQI~++-t#z1f}KXFTgUuco|z9fm@q_?JN;mio0* z^Y7w;Enl#~x_$X*b6CmjnV{y5k}Mje-r6AbR=chZ6QH)g#XF9s-Y+J%5~6V!F?Rw; zG)>9xF|^UXg}WN`8b!)opM`nY5e5pi>x6-VciCNoqu@ChyX>u|We-+q=tR@0AQoh4 zExCOTYg}+2ysi{0>#B4=58C3R4+FehQYBg`X3jY>(F&bxWui~D+aA{bYPt@qqnFOwc`GJQOng{zbpS7n0Z&hV%lgedIj zgUA=Fp3?arwyF+s2fs?=(rhCZv4el6()C!7&2mJ!eq~4C=akavk&agu@G-I!07S0W zOo_1|PyzaU4&Cf5s0Z5j)@Fa%Zm(LM6b5rYliJi*jaUDYf;^C(Fq9|bQQKr}C z>YnO62RdkzAGImbF1~qmVKOOh^GoXu^JUWtT{R16TFFk^Gr=ppkHDdyt!aho`QYp& zY7>}T&{xyJ5fTzZ@o*_atzx`A2*J0r-ao)j=5>;joMRNZ$S_a%KzcyJY@58*M)>Wr z{be9wRVft3JjrMiLU%l!x#KS*9uZ=X^4hK$*L|HD{$an zaEj*Ty=kDU0xF_`Z!gRst>5n09?=a&!On9ItMM@OEK1!wAE`ID9~vp$wKDEPEqF@t z21@$xIlGa>X}JLJ8>8=psS;gMKUf_5JgPGx7LQSBJ*yJRd%hMt7xU`SbZ@r0*C{&?Ou@X4#7+hQ%G`m-AZ+bsF zR>#*iYOfZUU1_Xuk4FVfX1^GJBPuqok>+rkAiCTCM3z*uT$Ne^(D`2;GryR7I}Kci zO{tj5pzHOk{_9fOOjryk_}N!iLk={V??M6O)ndqOj70)?EL1fygX8idroa2L5$~C7 z55W*kRB&|fP`V6Lu&U(Ai#uMY@|q>8X>&5O0f6W!QOoXqzt`so#oHDFxb+41=|csNkf&=9XGeD_aCRt!N=Hpr z-v_mLs5QH%R@PnZ^X1PrMvILzK64YVT9?IOgs7Vc_Q@)X6n6}iLV!>_OnW3}CzH&Uq*$m?V#A!TA+{fi| z@Q^Z$z(@X5P|{)|54qKJDI!?N%T)XCU`q^54X#pNXAAuVDRh=?9w=#U0v z-rJy2Fwzu0#qUU9^>^v}hjHU1F6KV*YM+)+Zn>7B_;M?fF}Y}v0nToN=k*Zr z`d$k^8dUbz2K5gwp`NIa%HYtc!z*N;InmhFtHa$GDzNnQ__4IETII^$ zf_g|L{Xx|c52woG>I@yoG-1&?lQ&n8>3ZH4t|3l;swu&0X_YH>mIIPItQa~acsW1F z2>_F_H=^ezo@Is}8g2y*2kJs254zvwvQMkiVmxTL((TlzYSVVkrr9sNb!59{j>Cft z=#fgD-L|Vk@i<>UI#}uT1;U`m7KuZZPPb5>UnT^;^AFF|ccUtOGcBA-{(cp!^Mh_t zyQUfyDGe&|7#v8zVDGQ8x+Oi@+||<#{vvV?6xEUBZXAj^ngqz3qr$TS(;`>N!0r>V zD2&l{zkvKDNjbcLL`OfEK>B56dFcoK%)S*9V!m~YBZ=ezC#-X~+%LQ5zn2-AKj^}N zVGB4v7QOk&5zMpPmq2tlZJa6IKWnozmUd95KU0IoZENsfQlr?P%de`3B9HReF%qH` z>_frT^xC!yhcBB9=8;xAZ0j=j1I3?exgG-_P9-Tg{Nn5$lduuGoe;v43C#lZ0{iBf zlN=*(=vlH-!7&N-rv)ZA7;yIEC*Ffp`X8_8d61HLpy4z_K=lTMnh3z9DEw8CCPL6l z;3}CC8G}j&CJw#eTkJgsy*|6sMolNw9w1zlBNLC^G@UJnohWlCo;&G zzAZ$1W9wybfF~E5lE2!Y5(Y@GeyaUe2m`Zv*b~0C>j&6uR^w0>>g*!zDESP2GnFn# z#{@jElhFJ8qzQiDq{`*3$-hO={evXH%CHkdS>gLdwFsN%+ zSbVCMO~4@6I}Q>}6cj{Xe-6@F%pF;B`g| zGkPTGor|}8wU$144i<5KrKqas5Qqx7o>C>{Z*y~}CK)Y&ZHNwa;dyBREQ_dk+yyB1 z+>uw_1M7FSqK*BXJ2JE{Wimr4xUH>l$jK-jjBa?F59|pbqZ^U4hj-+yzqTGyK)ULc zYF36h!bnFYJQADr6!|#B(`|tWm0#Xt*z$7X=V<6z=DlAo9~3wrjLo(ytwHy+19 zz7lByDd%;mbr;Q-YY5|=s`fF&EZ>++ht7Jh>Z|VC

    -%p=Q5Sy7P!Fg&S$e(lB$VILm>lozC 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%0A(`Shg6aH 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�}m$BFhkpvQ7 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%0AdxVAFbPV|2W|3r`gcGrwe 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 literal 716935 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

3BA;3E3?1w}@J2sxYQ_~OIHAPWt%tqtm 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
M2R7jbCMK(-58S!2Af7zrFV z&}P0oA+oh+^`SAHj$p;YG-)EEpP(#5pEqZ&{VX;-eNz8u<5Li=n&E6R{J!Iwq9Vb7 z+hRr)({s>83=xxrfdN*)2XO-?eG!?-#Kb!}$R^W=$A$J3PIn4&*>L?!GLY$)-A9Z3 zRH%o|inFN-yvzdIH6OTR7lw&!&w(izk@9As9)vi?*ZRSlf<{Et!%cG!?Ft;*-_B0T z4*4gE>4AlJ3mW3u{y&e)pV*ej&~lDk$vD7BuIn8LHxt>2ncqSw7G%Ph z!tVX!vig9uc=hx85G;*3uszPj=~O$60r}K=;oH+2BRIZINlm@kFvn$hf6B%;^ZGW( zxmthUUD@gT`l(LOh~ZXTlarcTYb3AeZ<7Fpk6LkpRz=D~(7*CHR{URiEc_OZ!WAna z#SP!eBj!(~@DZ~r$>7{0;G{{Pa<$F@2bj8hetWAXKLrI*rDf7ivf@4KDENI+Kc>&Z zM3`zvkEx)MNZ;9_-L5IS2G&kujNW)bALbOav_N8iM^521&X@e`^&$o@5|9uY5pgN? zESBdX*_9X~w;y6BLyUrB$`kT-k3gdgcXIIq6|b<<8uQ-|Xalm{`HQ7#5^@9=yS*pE z<3=aA)coLK{awLz2V5&dQAI^cr;p^0sr13WBS1d!&>W>Rp6vy1jQsKlc(HnecODu) zNYD!0;X3zCG6ZY8Fn|8+>e%KUdf1~W>_h!oADwJ|(qvKs?KrpduU;PKhvAE_+NsA| zOxSl^fPe{+4F=o9kddTJi@<83&1J8xYPCbC^Q&s!|9 zu@GQNjJ5NNCTSvE#B)!B(|jL#JtJR=ZtQL|VxmBU@!xkjrKJ ze9ZE^2eR|Y21kE6%q*4l*Oup+w!Sp0!3CFrB`V>oy@P)o<^&=kWb{XNuiVa?L-t)K2>Of&~Kgr>AolWmUi zKNpR+qT%EFPv`wzQ{}k!X>cFa&ER1uiszR`m}aoH*x%;`l-2Lw??Pi@0<_ofw0{Yo zyLJBE(fHff8DoTjqPAoYnK@r(Q6H@1ktj_eB^`DayfVEb{)M)(FX%wt5kD)5)dluj z`}Z9DU?mha_x&WxY-&k?mbJhE9Voe$gv?NCiguyi-Lw=SW(o)p7r%YdnCQdhZ)u<#Bx)H73^UiI5mM0Mq z@P`jYrh=+tgEoYAa-P%E!oR(`n`DJCwcN_8x3ufmW7OB1AsP-=+vp